Merge "Exclude all directories instead of only known ones"
diff --git a/Android.bp b/Android.bp
index df276a0..412099d 100644
--- a/Android.bp
+++ b/Android.bp
@@ -263,8 +263,6 @@
         ":libcamera_client_aidl",
         ":libcamera_client_framework_aidl",
         ":libupdate_engine_aidl",
-        // TODO: this needs to be removed when statsd-framework.jar is separated out
-        ":statsd_java_aidl",
         ":storaged_aidl",
         ":vold_aidl",
 
@@ -374,6 +372,7 @@
         "devicepolicyprotosnano",
 
         "com.android.sysprop.apex",
+        "com.android.sysprop.init",
         "PlatformProperties",
     ],
     sdk_version: "core_platform",
@@ -401,9 +400,8 @@
         "app-compat-annotations",
         "ext",
         "unsupportedappusage",
-        "updatable_media_stubs",
-        "framework_mediaprovider_stubs",
-        "framework-tethering",
+        "framework-media-stubs-systemapi",
+        "framework-mediaprovider-stubs-systemapi",
         "framework-telephony-stubs",
     ],
 
@@ -446,13 +444,6 @@
 }
 
 filegroup {
-    name: "graphicsstats_proto",
-    srcs: [
-        "libs/hwui/protos/graphicsstats.proto",
-    ],
-}
-
-filegroup {
     name: "libvibrator_aidl",
     srcs: [
         "core/java/android/os/IExternalVibrationController.aidl",
@@ -468,10 +459,11 @@
     libs: [
         "framework-appsearch-stubs",
         "framework-sdkextensions-stubs-systemapi",
-        "framework-statsd", // TODO(b/146167933): Use framework-statsd-stubs
-        "framework-permission-stubs",
+        "framework-statsd-stubs-module_libs_api",
+        "framework-permission-stubs-systemapi",
         "framework-wifi-stubs",
         "ike-stubs",
+        "framework-tethering-stubs",
     ],
     installable: true,
     javac_shard_size: 150,
@@ -491,14 +483,12 @@
     apex_available: ["//apex_available:platform"],
     visibility: [
         "//frameworks/base",
-        // TODO(b/144149403) remove the below lines
+        // TODO(b/147128803) remove the below lines
         "//frameworks/base/apex/appsearch/framework",
         "//frameworks/base/apex/blobstore/framework",
         "//frameworks/base/apex/jobscheduler/framework",
-        "//frameworks/base/apex/permission/framework",
         "//frameworks/base/apex/statsd/service",
-        "//frameworks/base/telephony",
-        "//frameworks/opt/net/wifi/service",
+        "//frameworks/base/packages/Tethering/tests/unit",
     ],
 }
 
@@ -517,17 +507,15 @@
     installable: false, // this lib is a build-only library
     static_libs: [
         "framework-minus-apex",
-        "updatable_media_stubs",
-        "framework_mediaprovider_stubs",
         "framework-appsearch", // TODO(b/146218515): should be framework-appsearch-stubs
-        "framework-permission-stubs",
+        "framework-media-stubs-systemapi",
+        "framework-mediaprovider-stubs-systemapi",
+        "framework-permission-stubs-systemapi",
         "framework-sdkextensions-stubs-systemapi",
-        // TODO(b/146167933): Use framework-statsd-stubs instead.
-        "framework-statsd",
+        "framework-statsd-stubs-module_libs_api",
         "framework-wifi-stubs",
         "ike-stubs",
-        // TODO(b/147200698): should be the stub of framework-tethering
-        "framework-tethering",
+        "framework-tethering-stubs",
         // TODO (b/147688669) should be framework-telephony-stubs
         "framework-telephony",
         // TODO(jiyong): add stubs for APEXes here
@@ -551,17 +539,25 @@
 
 java_library {
     name: "framework-annotation-proc",
-    srcs: [":framework-all-sources"],
+    srcs: [
+        ":framework-all-sources",
+        "core/java/**/*.logtags",
+    ],
+    sdk_version: "core_platform",
     libs: [
         "app-compat-annotations",
+        "ext",
+        "icing-java-proto-lite",
         "unsupportedappusage",
     ],
+
     installable: false,
     plugins: [
         "unsupportedappusage-annotation-processor",
         "compat-changeid-annotation-processor",
     ],
     static_libs: [
+        "framework-internal-utils",
         "exoplayer2-extractor",
         "android.hardware.wifi-V1.0-java-constants",
     ]
@@ -583,7 +579,6 @@
     host_supported: true,
     srcs: [
         "core/java/android/annotation/IntDef.java",
-        "core/java/android/annotation/UnsupportedAppUsage.java",
     ],
     static_libs: [
         "art.module.api.annotations",
@@ -621,6 +616,18 @@
     out: ["com/android/internal/util/FrameworkStatsLog.java"],
 }
 
+java_library {
+    name: "uieventloggerlib",
+    srcs: [
+        "core/java/com/android/internal/logging/UiEvent.java",
+        "core/java/com/android/internal/logging/UiEventLogger.java",
+        "core/java/com/android/internal/logging/UiEventLoggerImpl.java",
+        "core/java/com/android/internal/logging/InstanceId.java",
+        "core/java/com/android/internal/logging/InstanceIdSequence.java",
+        ":statslog-framework-java-gen",
+    ],
+}
+
 gensrcs {
     name: "framework-javastream-protos",
     depfile: true,
@@ -649,6 +656,33 @@
     output_extension: "srcjar",
 }
 
+gensrcs {
+    name: "framework-cppstream-protos",
+    depfile: true,
+
+    tools: [
+        "aprotoc",
+        "protoc-gen-cppstream",
+    ],
+
+    cmd: "mkdir -p $(genDir) " +
+        "&& $(location aprotoc) " +
+        "  --plugin=$(location protoc-gen-cppstream) " +
+        "  --dependency_out=$(depfile) " +
+        "  --cppstream_out=$(genDir) " +
+        "  -Iexternal/protobuf/src " +
+        "  -I . " +
+        "  $(in)",
+
+    srcs: [
+        ":ipconnectivity-proto-src",
+        "core/proto/**/*.proto",
+        "libs/incident/**/*.proto",
+    ],
+
+    output_extension: "proto.h",
+}
+
 filegroup {
     name: "framework-annotations",
     srcs: [
@@ -664,7 +698,6 @@
         "core/java/android/annotation/SystemApi.java",
         "core/java/android/annotation/SystemService.java",
         "core/java/android/annotation/TestApi.java",
-        "core/java/android/annotation/UnsupportedAppUsage.java",
         "core/java/com/android/internal/annotations/GuardedBy.java",
         "core/java/com/android/internal/annotations/VisibleForTesting.java",
         "core/java/com/android/internal/annotations/Immutable.java",
@@ -736,6 +769,7 @@
         "core/java/android/annotation/RequiresPermission.java",
         "core/java/android/annotation/SystemApi.java",
         "core/java/android/annotation/TestApi.java",
+        "core/java/com/android/internal/annotations/GuardedBy.java",
     ],
 }
 // Build ext.jar
@@ -938,7 +972,7 @@
     name: "incremental_manager_aidl",
     srcs: [
         "core/java/android/os/incremental/IIncrementalManager.aidl",
-        "core/java/android/os/incremental/IIncrementalManagerNative.aidl",
+        "core/java/android/os/incremental/IIncrementalService.aidl",
         "core/java/android/os/incremental/IncrementalNewFileParams.aidl",
         "core/java/android/os/incremental/IncrementalSignature.aidl",
     ],
@@ -1006,43 +1040,6 @@
     },
 }
 
-gensrcs {
-    name: "gen-platform-proto-constants",
-    depfile: true,
-
-    tools: [
-        "aprotoc",
-        "protoc-gen-cppstream",
-    ],
-
-    srcs: [
-        "core/proto/android/os/backtrace.proto",
-        "core/proto/android/os/batterytype.proto",
-        "core/proto/android/os/cpufreq.proto",
-        "core/proto/android/os/cpuinfo.proto",
-        "core/proto/android/os/data.proto",
-        "core/proto/android/os/kernelwake.proto",
-        "core/proto/android/os/pagetypeinfo.proto",
-        "core/proto/android/os/procrank.proto",
-        "core/proto/android/os/ps.proto",
-        "core/proto/android/os/system_properties.proto",
-        "core/proto/android/util/event_log_tags.proto",
-        "core/proto/android/util/log.proto",
-    ],
-
-    // Append protoc-gen-cppstream tool's PATH otherwise aprotoc can't find the plugin tool
-    cmd: "mkdir -p $(genDir) " +
-        "&& $(location aprotoc) " +
-        "  --plugin=$(location protoc-gen-cppstream) " +
-        "  --dependency_out=$(depfile) " +
-        "  --cppstream_out=$(genDir) " +
-        "  -Iexternal/protobuf/src " +
-        "  -I . " +
-        "  $(in)",
-
-    output_extension: "proto.h",
-}
-
 
 subdirs = [
     "cmds/*",
@@ -1073,7 +1070,6 @@
         "core/java/android/annotation/Nullable.java",
         "core/java/android/annotation/SystemApi.java",
         "core/java/android/annotation/TestApi.java",
-        "core/java/android/annotation/UnsupportedAppUsage.java",
         "core/java/android/os/HidlMemory.java",
         "core/java/android/os/HwBinder.java",
         "core/java/android/os/HwBlob.java",
diff --git a/ApiDocs.bp b/ApiDocs.bp
index c40004c..04ddc50 100644
--- a/ApiDocs.bp
+++ b/ApiDocs.bp
@@ -176,6 +176,7 @@
     hdf: [
         "android.whichdoc offline",
     ],
+    compat_config: ":global-compat-config",
     proofread_file: "offline-sdk-docs-proofrerad.txt",
     args: framework_docs_only_args + " -offlinemode -title \"Android SDK\"",
     static_doc_index_redirect: "docs/docs-preview-index.html",
diff --git a/StubLibraries.bp b/StubLibraries.bp
index 6927f44..50d23ad2 100644
--- a/StubLibraries.bp
+++ b/StubLibraries.bp
@@ -113,6 +113,16 @@
     jdiff_enabled: true,
 }
 
+priv_apps = " " +
+    "--show-annotation android.annotation.SystemApi\\(" +
+        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS" +
+    "\\) "
+
+module_libs = " " +
+    " --show-annotation android.annotation.SystemApi\\(" +
+        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES" +
+    "\\) "
+
 droidstubs {
     name: "system-api-stubs-docs",
     defaults: ["metalava-api-stubs-default"],
@@ -124,10 +134,7 @@
     arg_files: [
         "core/res/AndroidManifest.xml",
     ],
-    args: metalava_framework_docs_args +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)",
+    args: metalava_framework_docs_args + priv_apps,
     check_api: {
         current: {
             api_file: "api/system-current.txt",
@@ -175,49 +182,16 @@
 // @SystemApi(client=MODULE_APPS) and @SystemApi(client=MODULE_LIBRARIES)
 /////////////////////////////////////////////////////////////////////
 
-// TODO(b/146727827) remove the *-api modules when we can teach metalava
+// TODO(b/146727827) remove the *-api module when we can teach metalava
 // about the relationship among the API surfaces. Currently, these modules are only to generate
 // the API signature files and ensure that the APIs evolve in a backwards compatible manner.
 // They however are NOT used for building the API stub.
-droidstubs {
-    name: "module-app-api",
-    defaults: ["metalava-api-stubs-default"],
-    libs: ["framework-all"],
-    arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)",
-    check_api: {
-        current: {
-            api_file: "api/module-app-current.txt",
-            removed_api_file: "api/module-app-removed.txt",
-        },
-        // TODO(b/147559833) enable the compatibility check against the last release API
-        // and the API lint
-        //last_released: {
-        //    api_file: ":last-released-module-app-api",
-        //    removed_api_file: "api/module-app-removed.txt",
-        //    baseline_file: ":module-app-api-incompatibilities-with-last-released"
-        //},
-        //api_lint: {
-        //    enabled: true,
-        //    new_since: ":last-released-module-app-api",
-        //    baseline_file: "api/module-app-lint-baseline.txt",
-        //},
-    },
-    //jdiff_enabled: true,
-}
 
 droidstubs {
     name: "module-lib-api",
     defaults: ["metalava-api-stubs-default"],
-    libs: ["framework-all"],
     arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES," +
-        "process=android.annotation.SystemApi.Process.ALL\\)",
+    args: metalava_framework_docs_args + module_libs,
     check_api: {
         current: {
             api_file: "api/module-lib-current.txt",
@@ -239,39 +213,16 @@
     //jdiff_enabled: true,
 }
 
-// The following two droidstubs modules generate source files for the API stub libraries for
-// modules. Note that they not only include their own APIs but also other APIs that have
-// narrower scope. For example, module-lib-api-stubs-docs includes all @SystemApis not just
-// the ones with 'client=MODULE_LIBRARIES'.
-droidstubs {
-    name: "module-app-api-stubs-docs",
-    defaults: ["metalava-api-stubs-default"],
-    libs: ["framework-all"],
-    arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)" +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)",
-}
+
+// The following droidstub module generates source files for the API stub library for
+// modules. Note that it not only includes its own APIs but also other APIs that have
+// narrower scope (all @SystemApis, not just the ones with 'client=MODULE_LIBRARIES').
 
 droidstubs {
     name: "module-lib-api-stubs-docs",
     defaults: ["metalava-api-stubs-default"],
-    libs: ["framework-all"],
     arg_files: ["core/res/AndroidManifest.xml"],
-    args: metalava_framework_docs_args +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)" +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_APPS," +
-        "process=android.annotation.SystemApi.Process.ALL\\)" +
-        " --show-annotation android.annotation.SystemApi\\(" +
-        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES," +
-        "process=android.annotation.SystemApi.Process.ALL\\)",
+    args: metalava_framework_docs_args + priv_apps + module_libs,
 }
 
 /////////////////////////////////////////////////////////////////////
@@ -281,6 +232,9 @@
 
 java_defaults {
     name: "framework-stubs-default",
+    libs: [ "stub-annotations" ],
+    static_libs: [ "private-stub-annotations-jar" ],
+    sdk_version: "core_current",
     errorprone: {
         javacflags: [
             "-XepDisableAllChecks",
@@ -296,76 +250,25 @@
 
 java_library_static {
     name: "android_stubs_current",
-    srcs: [
-        ":api-stubs-docs",
-    ],
-    libs: [
-        "stub-annotations",
-    ],
-    static_libs: [
-        "private-stub-annotations-jar",
-    ],
+    srcs: [ ":api-stubs-docs" ],
     defaults: ["framework-stubs-default"],
-    sdk_version: "core_current",
 }
 
 java_library_static {
     name: "android_system_stubs_current",
-    srcs: [
-        ":system-api-stubs-docs",
-    ],
-    libs: [
-        "stub-annotations",
-    ],
-    static_libs: [
-        "private-stub-annotations-jar",
-    ],
+    srcs: [ ":system-api-stubs-docs" ],
     defaults: ["framework-stubs-default"],
-    sdk_version: "core_current",
 }
 
 java_library_static {
     name: "android_test_stubs_current",
-    srcs: [
-        ":test-api-stubs-docs",
-    ],
-    libs: [
-        "stub-annotations",
-    ],
-    static_libs: [
-        "private-stub-annotations-jar",
-    ],
-    defaults: ["framework-stubs-default"],
-    sdk_version: "core_current",
-}
-
-java_library_static {
-    name: "framework_module_app_stubs_current",
-    srcs: [
-        ":module-app-api-stubs-docs",
-    ],
-    libs: [
-        "stub-annotations",
-        "framework-all",
-    ],
-    static_libs: [
-        "private-stub-annotations-jar",
-    ],
+    srcs: [ ":test-api-stubs-docs" ],
     defaults: ["framework-stubs-default"],
 }
 
 java_library_static {
-    name: "framework_module_lib_stubs_current",
-    srcs: [
-        ":module-lib-api-stubs-docs",
-    ],
-    libs: [
-        "stub-annotations",
-        "framework-all",
-    ],
-    static_libs: [
-        "private-stub-annotations-jar",
-    ],
+    name: "android_module_lib_stubs_current",
+    srcs: [ ":module-lib-api-stubs-docs" ],
     defaults: ["framework-stubs-default"],
 }
 
@@ -401,7 +304,7 @@
     merge_annotations_dirs: [
         "metalava-manual",
     ],
-    args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\)",
+    args: priv_apps,
 }
 
 java_library_static {
@@ -427,7 +330,7 @@
     removed_dex_api_filename: "removed-dex.txt",
     args: metalava_framework_docs_args +
         " --show-unannotated " +
-        " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " +
+        priv_apps +
         " --show-annotation android.annotation.TestApi ",
 }
 
@@ -446,7 +349,7 @@
         " --hide ReferencesHidden " +
         " --hide UnhiddenSystemApi " +
         " --show-unannotated " +
-        " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.PRIVILEGED_APPS,process=android.annotation.SystemApi.Process.ALL\\) " +
+        priv_apps +
         " --show-annotation android.annotation.TestApi ",
 }
 
diff --git a/apct-tests/perftests/blobstore/Android.bp b/apct-tests/perftests/blobstore/Android.bp
new file mode 100644
index 0000000..be5072c
--- /dev/null
+++ b/apct-tests/perftests/blobstore/Android.bp
@@ -0,0 +1,28 @@
+// 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.
+
+android_test {
+  name: "BlobStorePerfTests",
+  srcs: ["src/**/*.java"],
+  static_libs: [
+    "BlobStoreTestUtils",
+    "androidx.test.rules",
+    "androidx.annotation_annotation",
+    "apct-perftests-utils",
+    "ub-uiautomator",
+  ],
+  platform_apis: true,
+  test_suites: ["device-tests"],
+  certificate: "platform",
+}
\ No newline at end of file
diff --git a/media/tests/MediaRouteProvider/AndroidManifest.xml b/apct-tests/perftests/blobstore/AndroidManifest.xml
similarity index 62%
rename from media/tests/MediaRouteProvider/AndroidManifest.xml
rename to apct-tests/perftests/blobstore/AndroidManifest.xml
index 489a621..21d0726 100644
--- a/media/tests/MediaRouteProvider/AndroidManifest.xml
+++ b/apct-tests/perftests/blobstore/AndroidManifest.xml
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright 2019 The Android Open Source Project
+<!-- 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.
@@ -15,16 +15,13 @@
 -->
 
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-          package="com.android.mediarouteprovider.example">
+          package="com.android.perftests.blob">
 
-    <application android:label="@string/app_name">
+    <application>
         <uses-library android:name="android.test.runner" />
-        <service android:name=".SampleMediaRoute2ProviderService"
-            android:label="@string/app_name"
-            android:exported="true">
-            <intent-filter>
-                <action android:name="android.media.MediaRoute2ProviderService" />
-            </intent-filter>
-       </service>
     </application>
-</manifest>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+                     android:targetPackage="com.android.perftests.blob"/>
+
+</manifest>
\ No newline at end of file
diff --git a/apct-tests/perftests/blobstore/AndroidTest.xml b/apct-tests/perftests/blobstore/AndroidTest.xml
new file mode 100644
index 0000000..19456c6
--- /dev/null
+++ b/apct-tests/perftests/blobstore/AndroidTest.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<configuration description="Runs BlobStorePerfTests metric instrumentation.">
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="apct-metric-instrumentation" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="BlobStorePerfTests.apk" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.perftests.blob" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+</configuration>
\ No newline at end of file
diff --git a/apct-tests/perftests/blobstore/src/com/android/perftests/blob/AtraceUtils.java b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/AtraceUtils.java
new file mode 100644
index 0000000..0208dab
--- /dev/null
+++ b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/AtraceUtils.java
@@ -0,0 +1,120 @@
+/*
+ * 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.perftests.blob;
+
+import android.app.Instrumentation;
+import android.app.UiAutomation;
+import android.os.ParcelFileDescriptor;
+import android.perftests.utils.TraceMarkParser;
+import android.perftests.utils.TraceMarkParser.TraceMarkSlice;
+import android.support.test.uiautomator.UiDevice;
+import android.util.Log;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.List;
+import java.util.function.BiConsumer;
+
+// Copy of com.android.frameworks.perftests.am.util.AtraceUtils. TODO: avoid this duplication.
+public class AtraceUtils {
+    private static final String TAG = "AtraceUtils";
+    private static final boolean VERBOSE = true;
+
+    private static final String ATRACE_START = "atrace --async_start -b %d -c %s";
+    private static final String ATRACE_DUMP = "atrace --async_dump";
+    private static final String ATRACE_STOP = "atrace --async_stop";
+    private static final int DEFAULT_ATRACE_BUF_SIZE = 1024;
+
+    private UiAutomation mAutomation;
+    private static AtraceUtils sUtils = null;
+    private boolean mStarted = false;
+
+    private AtraceUtils(Instrumentation instrumentation) {
+        mAutomation = instrumentation.getUiAutomation();
+    }
+
+    public static AtraceUtils getInstance(Instrumentation instrumentation) {
+        if (sUtils == null) {
+            sUtils = new AtraceUtils(instrumentation);
+        }
+        return sUtils;
+    }
+
+    /**
+     * @param categories The list of the categories to trace, separated with space.
+     */
+    public void startTrace(String categories) {
+        synchronized (this) {
+            if (mStarted) {
+                throw new IllegalStateException("atrace already started");
+            }
+            runShellCommand(String.format(
+                    ATRACE_START, DEFAULT_ATRACE_BUF_SIZE, categories));
+            mStarted = true;
+        }
+    }
+
+    public void stopTrace() {
+        synchronized (this) {
+            mStarted = false;
+            runShellCommand(ATRACE_STOP);
+        }
+    }
+
+    private String runShellCommand(String cmd) {
+        try {
+            return UiDevice.getInstance(
+                    InstrumentationRegistry.getInstrumentation()).executeShellCommand(cmd);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+
+    /**
+     * @param parser The function that can accept the buffer of atrace dump and parse it.
+     * @param handler The parse result handler
+     */
+    public void performDump(TraceMarkParser parser,
+            BiConsumer<String, List<TraceMarkSlice>> handler) {
+        parser.reset();
+        try {
+            if (VERBOSE) {
+                Log.i(TAG, "Collecting atrace dump...");
+            }
+            writeDataToBuf(mAutomation.executeShellCommand(ATRACE_DUMP), parser);
+        } catch (IOException e) {
+            Log.e(TAG, "Error in reading dump", e);
+        }
+        parser.forAllSlices(handler);
+    }
+
+    // The given file descriptor here will be closed by this function
+    private void writeDataToBuf(ParcelFileDescriptor pfDescriptor,
+            TraceMarkParser parser) throws IOException {
+        InputStream inputStream = new ParcelFileDescriptor.AutoCloseInputStream(pfDescriptor);
+        try (BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream))) {
+            String line;
+            while ((line = reader.readLine()) != null) {
+                parser.visit(line);
+            }
+        }
+    }
+}
diff --git a/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
new file mode 100644
index 0000000..f6af09c
--- /dev/null
+++ b/apct-tests/perftests/blobstore/src/com/android/perftests/blob/BlobStorePerfTests.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.perftests.blob;
+
+import android.app.blob.BlobStoreManager;
+import android.content.Context;
+import android.perftests.utils.ManualBenchmarkState;
+import android.perftests.utils.PerfManualStatusReporter;
+import android.perftests.utils.TraceMarkParser;
+import android.perftests.utils.TraceMarkParser.TraceMarkSlice;
+import android.support.test.uiautomator.UiDevice;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.utils.blob.DummyBlobData;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.Parameterized;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.TimeUnit;
+
+@LargeTest
+@RunWith(Parameterized.class)
+public class BlobStorePerfTests {
+    // From frameworks/native/cmds/atrace/atrace.cpp
+    private static final String ATRACE_CATEGORY_SYSTEM_SERVER = "ss";
+    // From f/b/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java
+    private static final String ATRACE_COMPUTE_DIGEST_PREFIX = "computeBlobDigest-";
+
+    private Context mContext;
+    private BlobStoreManager mBlobStoreManager;
+    private AtraceUtils mAtraceUtils;
+    private ManualBenchmarkState mState;
+
+    @Rule
+    public PerfManualStatusReporter mPerfManualStatusReporter = new PerfManualStatusReporter();
+
+    @Parameterized.Parameter(0)
+    public int fileSizeInMb;
+
+    @Parameterized.Parameters(name = "{0}MB")
+    public static Collection<Object[]> getParameters() {
+        return Arrays.asList(new Object[][] {
+                { 25 },
+                { 50 },
+                { 100 },
+                { 200 },
+        });
+    }
+
+    @Before
+    public void setUp() {
+        mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+        mBlobStoreManager = (BlobStoreManager) mContext.getSystemService(
+                Context.BLOB_STORE_SERVICE);
+        mAtraceUtils = AtraceUtils.getInstance(InstrumentationRegistry.getInstrumentation());
+        mState = mPerfManualStatusReporter.getBenchmarkState();
+    }
+
+    @After
+    public void tearDown() {
+        // TODO: Add a blob_store shell command to trigger idle maintenance to avoid hardcoding
+        // job id like this.
+        // From BlobStoreConfig.IDLE_JOB_ID = 191934935.
+        runShellCommand("cmd jobscheduler run -f android 191934935");
+    }
+
+    @Ignore
+    @Test
+    public void testComputeDigest() throws Exception {
+        mAtraceUtils.startTrace(ATRACE_CATEGORY_SYSTEM_SERVER);
+        try {
+            final List<Long> durations = new ArrayList<>();
+            final DummyBlobData blobData = prepareDataBlob(fileSizeInMb);
+            final TraceMarkParser parser = new TraceMarkParser(
+                    line -> line.name.startsWith(ATRACE_COMPUTE_DIGEST_PREFIX));
+            while (mState.keepRunning(durations)) {
+                commitBlob(blobData);
+
+                durations.clear();
+                collectDigestDurationsFromTrace(parser, durations);
+                // TODO: get and delete blobId before next iteration.
+            }
+        } finally {
+            mAtraceUtils.stopTrace();
+        }
+    }
+
+    private void collectDigestDurationsFromTrace(TraceMarkParser parser, List<Long> durations) {
+        mAtraceUtils.performDump(parser, (key, slices) -> {
+            for (TraceMarkSlice slice : slices) {
+                durations.add(TimeUnit.MICROSECONDS.toNanos(slice.getDurationInMicroseconds()));
+            }
+        });
+    }
+
+    private DummyBlobData prepareDataBlob(int fileSizeInMb) throws Exception {
+        final DummyBlobData blobData = new DummyBlobData(mContext,
+                fileSizeInMb * 1024 * 1024 /* bytes */);
+        blobData.prepare();
+        return blobData;
+    }
+
+    private void commitBlob(DummyBlobData blobData) throws Exception {
+        final long sessionId = mBlobStoreManager.createSession(blobData.getBlobHandle());
+        try (BlobStoreManager.Session session = mBlobStoreManager.openSession(sessionId)) {
+            blobData.writeToSession(session);
+            final CompletableFuture<Integer> callback = new CompletableFuture<>();
+            session.commit(mContext.getMainExecutor(), callback::complete);
+            // Ignore commit callback result.
+            callback.get();
+        }
+    }
+
+    private String runShellCommand(String cmd) {
+        try {
+            return UiDevice.getInstance(
+                    InstrumentationRegistry.getInstrumentation()).executeShellCommand(cmd);
+        } catch (IOException e) {
+            throw new RuntimeException(e);
+        }
+    }
+}
diff --git a/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java b/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java
deleted file mode 100644
index 236f548..0000000
--- a/apct-tests/perftests/core/src/android/os/PackageManagerPerfTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2017 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.content.ComponentName;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.perftests.utils.BenchmarkState;
-import android.perftests.utils.PerfStatusReporter;
-
-import androidx.test.InstrumentationRegistry;
-import androidx.test.filters.LargeTest;
-import androidx.test.runner.AndroidJUnit4;
-
-import org.junit.Rule;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@RunWith(AndroidJUnit4.class)
-@LargeTest
-public class PackageManagerPerfTest {
-    private static final String PERMISSION_NAME_EXISTS =
-            "com.android.perftests.core.TestPermission";
-    private static final String PERMISSION_NAME_DOESNT_EXIST =
-            "com.android.perftests.core.TestBadPermission";
-    private static final ComponentName TEST_ACTIVITY =
-            new ComponentName("com.android.perftests.core",
-                    "android.perftests.utils.PerfTestActivity");
-
-    @Rule
-    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
-
-    @Test
-    public void testCheckPermissionExists() {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        final String packageName = TEST_ACTIVITY.getPackageName();
-
-        while (state.keepRunning()) {
-            int ret = pm.checkPermission(PERMISSION_NAME_EXISTS, packageName);
-        }
-    }
-
-    @Test
-    public void testCheckPermissionDoesntExist() {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        final String packageName = TEST_ACTIVITY.getPackageName();
-
-        while (state.keepRunning()) {
-            int ret = pm.checkPermission(PERMISSION_NAME_DOESNT_EXIST, packageName);
-        }
-    }
-
-    @Test
-    public void testQueryIntentActivities() {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        final Intent intent = new Intent("com.android.perftests.core.PERFTEST");
-
-        while (state.keepRunning()) {
-            pm.queryIntentActivities(intent, 0);
-        }
-    }
-
-    @Test
-    public void testGetPackageInfo() throws Exception {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        final String packageName = TEST_ACTIVITY.getPackageName();
-
-        while (state.keepRunning()) {
-            pm.getPackageInfo(packageName, 0);
-        }
-    }
-
-    @Test
-    public void testGetApplicationInfo() throws Exception {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        final String packageName = TEST_ACTIVITY.getPackageName();
-        
-        while (state.keepRunning()) {
-            pm.getApplicationInfo(packageName, 0);
-        }
-    }
-
-    @Test
-    public void testGetActivityInfo() throws Exception {
-        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
-        final PackageManager pm = InstrumentationRegistry.getTargetContext().getPackageManager();
-        
-        while (state.keepRunning()) {
-            pm.getActivityInfo(TEST_ACTIVITY, 0);
-        }
-    }
-}
diff --git a/apct-tests/perftests/core/src/android/view/CutoutSpecificationBenchmark.java b/apct-tests/perftests/core/src/android/view/CutoutSpecificationBenchmark.java
new file mode 100644
index 0000000..14282bf
--- /dev/null
+++ b/apct-tests/perftests/core/src/android/view/CutoutSpecificationBenchmark.java
@@ -0,0 +1,240 @@
+/*
+ * 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 android.view;
+
+import android.content.Context;
+import android.graphics.Matrix;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.Region;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+import android.text.TextUtils;
+import android.util.DisplayMetrics;
+import android.util.Log;
+import android.util.PathParser;
+
+import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class CutoutSpecificationBenchmark {
+    private static final String TAG = "CutoutSpecificationBenchmark";
+
+    private static final String BOTTOM_MARKER = "@bottom";
+    private static final String DP_MARKER = "@dp";
+    private static final String RIGHT_MARKER = "@right";
+    private static final String LEFT_MARKER = "@left";
+
+    private static final String DOUBLE_CUTOUT_SPEC = "M 0,0\n"
+            + "L -72, 0\n"
+            + "L -69.9940446283, 20.0595537175\n"
+            + "C -69.1582133885, 28.4178661152 -65.2, 32.0 -56.8, 32.0\n"
+            + "L 56.8, 32.0\n"
+            + "C 65.2, 32.0 69.1582133885, 28.4178661152 69.9940446283, 20.0595537175\n"
+            + "L 72, 0\n"
+            + "Z\n"
+            + "@bottom\n"
+            + "M 0,0\n"
+            + "L -72, 0\n"
+            + "L -69.9940446283, -20.0595537175\n"
+            + "C -69.1582133885, -28.4178661152 -65.2, -32.0 -56.8, -32.0\n"
+            + "L 56.8, -32.0\n"
+            + "C 65.2, -32.0 69.1582133885, -28.4178661152 69.9940446283, -20.0595537175\n"
+            + "L 72, 0\n"
+            + "Z\n"
+            + "@dp";
+    @Rule
+    public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+    private Context mContext;
+    private DisplayMetrics mDisplayMetrics;
+
+    /**
+     * Setup the necessary member field used by test methods.
+     */
+    @Before
+    public void setUp() {
+        mContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+        mDisplayMetrics = new DisplayMetrics();
+        mContext.getDisplay().getRealMetrics(mDisplayMetrics);
+    }
+
+
+    private static void toRectAndAddToRegion(Path p, Region inoutRegion, Rect inoutRect) {
+        final RectF rectF = new RectF();
+        p.computeBounds(rectF, false /* unused */);
+        rectF.round(inoutRect);
+        inoutRegion.op(inoutRect, Region.Op.UNION);
+    }
+
+    private static void oldMethodParsingSpec(String spec, int displayWidth, int displayHeight,
+            float density) {
+        Path p = null;
+        Rect boundTop = null;
+        Rect boundBottom = null;
+        Rect safeInset = new Rect();
+        String bottomSpec = null;
+        if (!TextUtils.isEmpty(spec)) {
+            spec = spec.trim();
+            final float offsetX;
+            if (spec.endsWith(RIGHT_MARKER)) {
+                offsetX = displayWidth;
+                spec = spec.substring(0, spec.length() - RIGHT_MARKER.length()).trim();
+            } else if (spec.endsWith(LEFT_MARKER)) {
+                offsetX = 0;
+                spec = spec.substring(0, spec.length() - LEFT_MARKER.length()).trim();
+            } else {
+                offsetX = displayWidth / 2f;
+            }
+            final boolean inDp = spec.endsWith(DP_MARKER);
+            if (inDp) {
+                spec = spec.substring(0, spec.length() - DP_MARKER.length());
+            }
+
+            if (spec.contains(BOTTOM_MARKER)) {
+                String[] splits = spec.split(BOTTOM_MARKER, 2);
+                spec = splits[0].trim();
+                bottomSpec = splits[1].trim();
+            }
+
+            final Matrix m = new Matrix();
+            final Region r = Region.obtain();
+            if (!spec.isEmpty()) {
+                try {
+                    p = PathParser.createPathFromPathData(spec);
+                } catch (Throwable e) {
+                    Log.wtf(TAG, "Could not inflate cutout: ", e);
+                }
+
+                if (p != null) {
+                    if (inDp) {
+                        m.postScale(density, density);
+                    }
+                    m.postTranslate(offsetX, 0);
+                    p.transform(m);
+
+                    boundTop = new Rect();
+                    toRectAndAddToRegion(p, r, boundTop);
+                    safeInset.top = boundTop.bottom;
+                }
+            }
+
+            if (bottomSpec != null) {
+                int bottomInset = 0;
+                Path bottomPath = null;
+                try {
+                    bottomPath = PathParser.createPathFromPathData(bottomSpec);
+                } catch (Throwable e) {
+                    Log.wtf(TAG, "Could not inflate bottom cutout: ", e);
+                }
+
+                if (bottomPath != null) {
+                    // Keep top transform
+                    m.postTranslate(0, displayHeight);
+                    bottomPath.transform(m);
+                    p.addPath(bottomPath);
+                    boundBottom = new Rect();
+                    toRectAndAddToRegion(bottomPath, r, boundBottom);
+                    bottomInset = displayHeight - boundBottom.top;
+                }
+                safeInset.bottom = bottomInset;
+            }
+        }
+    }
+
+    @Test
+    public void parseByOldMethodForDoubleCutout() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            oldMethodParsingSpec(DOUBLE_CUTOUT_SPEC, mDisplayMetrics.widthPixels,
+                    mDisplayMetrics.heightPixels, mDisplayMetrics.density);
+        }
+    }
+
+    @Test
+    public void parseByNewMethodForDoubleCutout() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            new CutoutSpecification.Parser(mDisplayMetrics.density,
+                    mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels)
+                    .parse(DOUBLE_CUTOUT_SPEC);
+        }
+    }
+
+    @Test
+    public void parseLongEdgeCutout() {
+        final String spec = "M 0,0\n"
+                + "H 48\n"
+                + "V 48\n"
+                + "H -48\n"
+                + "Z\n"
+                + "@left\n"
+                + "@center_vertical\n"
+                + "M 0,0\n"
+                + "H 48\n"
+                + "V 48\n"
+                + "H -48\n"
+                + "Z\n"
+                + "@left\n"
+                + "@center_vertical\n"
+                + "M 0,0\n"
+                + "H -48\n"
+                + "V 48\n"
+                + "H 48\n"
+                + "Z\n"
+                + "@right\n"
+                + "@dp";
+
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            new CutoutSpecification.Parser(mDisplayMetrics.density,
+                    mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels).parse(spec);
+        }
+    }
+
+    @Test
+    public void parseShortEdgeCutout() {
+        final String spec = "M 0,0\n"
+                + "H 48\n"
+                + "V 48\n"
+                + "H -48\n"
+                + "Z\n"
+                + "@bottom\n"
+                + "M 0,0\n"
+                + "H 48\n"
+                + "V -48\n"
+                + "H -48\n"
+                + "Z\n"
+                + "@dp";
+
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        while (state.keepRunning()) {
+            new CutoutSpecification.Parser(mDisplayMetrics.density,
+                    mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels).parse(spec);
+        }
+    }
+}
diff --git a/apct-tests/perftests/core/src/android/wm/RelayoutPerfTest.java b/apct-tests/perftests/core/src/android/wm/RelayoutPerfTest.java
index b6e39e1..8633c96 100644
--- a/apct-tests/perftests/core/src/android/wm/RelayoutPerfTest.java
+++ b/apct-tests/perftests/core/src/android/wm/RelayoutPerfTest.java
@@ -125,7 +125,9 @@
         final WindowManager.LayoutParams mParams;
         final int mWidth;
         final int mHeight;
+        final Point mOutSurfaceSize = new Point();
         final SurfaceControl mOutSurfaceControl;
+        final SurfaceControl mOutBlastSurfaceControl = new SurfaceControl();
 
         final IntSupplier mViewVisibility;
 
@@ -150,7 +152,8 @@
                         mViewVisibility.getAsInt(), mFlags, mFrameNumber, mOutFrame,
                         mOutContentInsets, mOutVisibleInsets, mOutStableInsets,
                         mOutBackDropFrame, mOutDisplayCutout, mOutMergedConfiguration,
-                        mOutSurfaceControl, mOutInsetsState, new Point(), new SurfaceControl());
+                        mOutSurfaceControl, mOutInsetsState, mOutSurfaceSize,
+                        mOutBlastSurfaceControl);
             }
         }
     }
diff --git a/apct-tests/perftests/core/src/android/wm/WindowManagerPerfTestBase.java b/apct-tests/perftests/core/src/android/wm/WindowManagerPerfTestBase.java
index 62e9ba8..9e17e94 100644
--- a/apct-tests/perftests/core/src/android/wm/WindowManagerPerfTestBase.java
+++ b/apct-tests/perftests/core/src/android/wm/WindowManagerPerfTestBase.java
@@ -20,15 +20,19 @@
 
 import android.app.Activity;
 import android.app.UiAutomation;
+import android.content.Context;
 import android.content.Intent;
+import android.os.BatteryManager;
 import android.os.ParcelFileDescriptor;
 import android.perftests.utils.PerfTestActivity;
+import android.provider.Settings;
 
 import androidx.test.rule.ActivityTestRule;
 import androidx.test.runner.lifecycle.ActivityLifecycleCallback;
 import androidx.test.runner.lifecycle.ActivityLifecycleMonitorRegistry;
 import androidx.test.runner.lifecycle.Stage;
 
+import org.junit.AfterClass;
 import org.junit.BeforeClass;
 import org.junit.runner.Description;
 import org.junit.runners.model.Statement;
@@ -52,18 +56,36 @@
      */
     static final File BASE_OUT_PATH = new File("/data/local/CorePerfTests");
 
+    private static int sOriginalStayOnWhilePluggedIn;
+
     @BeforeClass
     public static void setUpOnce() {
+        final Context context = getInstrumentation().getContext();
+        sOriginalStayOnWhilePluggedIn = Settings.Global.getInt(context.getContentResolver(),
+                Settings.Global.STAY_ON_WHILE_PLUGGED_IN, 0);
+        // Keep the device awake during testing.
+        setStayOnWhilePluggedIn(BatteryManager.BATTERY_PLUGGED_USB);
+
         if (!BASE_OUT_PATH.exists()) {
             executeShellCommand("mkdir -p " + BASE_OUT_PATH);
         }
         // In order to be closer to the real use case.
         executeShellCommand("input keyevent KEYCODE_WAKEUP");
         executeShellCommand("wm dismiss-keyguard");
-        getInstrumentation().getContext().startActivity(new Intent(Intent.ACTION_MAIN)
+        context.startActivity(new Intent(Intent.ACTION_MAIN)
                 .addCategory(Intent.CATEGORY_HOME).setFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
     }
 
+    @AfterClass
+    public static void tearDownOnce() {
+        setStayOnWhilePluggedIn(sOriginalStayOnWhilePluggedIn);
+    }
+
+    private static void setStayOnWhilePluggedIn(int value) {
+        executeShellCommand(String.format("settings put global %s %d",
+                Settings.Global.STAY_ON_WHILE_PLUGGED_IN, value));
+    }
+
     /**
      * Executes shell command with reading the output. It may also used to block until the current
      * command is completed.
@@ -97,7 +119,7 @@
      */
     static class PerfTestActivityRule extends ActivityTestRule<PerfTestActivity> {
         private final Intent mStartIntent =
-                new Intent().putExtra(PerfTestActivity.INTENT_EXTRA_KEEP_SCREEN_ON, true);
+                new Intent(getInstrumentation().getTargetContext(), PerfTestActivity.class);
         private final LifecycleListener mLifecycleListener = new LifecycleListener();
 
         PerfTestActivityRule() {
diff --git a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
index 661f32f..c458d11 100644
--- a/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
+++ b/apct-tests/perftests/multiuser/src/android/multiuser/UserLifecycleTests.java
@@ -670,7 +670,7 @@
     private void startApp(int userId, String packageName) throws RemoteException {
         final Context context = InstrumentationRegistry.getContext();
         final WaitResult result = ActivityTaskManager.getService().startActivityAndWait(null,
-                context.getPackageName(),
+                context.getPackageName(), context.getFeatureId(),
                 context.getPackageManager().getLaunchIntentForPackage(packageName), null, null,
                 null, 0, 0, null, null, userId);
         attestTrue("User " + userId + " failed to start " + packageName,
diff --git a/apct-tests/perftests/packagemanager/Android.bp b/apct-tests/perftests/packagemanager/Android.bp
new file mode 100644
index 0000000..17033e0
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/Android.bp
@@ -0,0 +1,21 @@
+android_test {
+    name: "PackageManagerPerfTests",
+
+    srcs: ["src/**/*.java"],
+
+    static_libs: [
+        "platform-compat-test-rules",
+        "androidx.appcompat_appcompat",
+        "androidx.test.rules",
+        "androidx.test.ext.junit",
+        "androidx.annotation_annotation",
+        "apct-perftests-utils",
+    ],
+
+    libs: ["android.test.base"],
+
+    platform_apis: true,
+
+    test_suites: ["device-tests"],
+
+}
diff --git a/apct-tests/perftests/packagemanager/AndroidManifest.xml b/apct-tests/perftests/packagemanager/AndroidManifest.xml
new file mode 100644
index 0000000..520f4b5
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/AndroidManifest.xml
@@ -0,0 +1,89 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.perftests.packagemanager">
+
+    <permission android:name="com.android.perftests.packagemanager.TestPermission" />
+    <uses-permission android:name="com.android.perftests.packagemanager.TestPermission" />
+
+    <queries>
+        <package android:name="com.android.perftests.appenumeration0" />
+        <package android:name="com.android.perftests.appenumeration1" />
+        <package android:name="com.android.perftests.appenumeration2" />
+        <package android:name="com.android.perftests.appenumeration3" />
+        <package android:name="com.android.perftests.appenumeration4" />
+        <package android:name="com.android.perftests.appenumeration5" />
+        <package android:name="com.android.perftests.appenumeration6" />
+        <package android:name="com.android.perftests.appenumeration7" />
+        <package android:name="com.android.perftests.appenumeration8" />
+        <package android:name="com.android.perftests.appenumeration9" />
+        <package android:name="com.android.perftests.appenumeration10" />
+        <package android:name="com.android.perftests.appenumeration11" />
+        <package android:name="com.android.perftests.appenumeration12" />
+        <package android:name="com.android.perftests.appenumeration13" />
+        <package android:name="com.android.perftests.appenumeration14" />
+        <package android:name="com.android.perftests.appenumeration15" />
+        <package android:name="com.android.perftests.appenumeration16" />
+        <package android:name="com.android.perftests.appenumeration17" />
+        <package android:name="com.android.perftests.appenumeration18" />
+        <package android:name="com.android.perftests.appenumeration19" />
+        <package android:name="com.android.perftests.appenumeration20" />
+        <package android:name="com.android.perftests.appenumeration21" />
+        <package android:name="com.android.perftests.appenumeration22" />
+        <package android:name="com.android.perftests.appenumeration23" />
+        <package android:name="com.android.perftests.appenumeration24" />
+        <package android:name="com.android.perftests.appenumeration25" />
+        <package android:name="com.android.perftests.appenumeration26" />
+        <package android:name="com.android.perftests.appenumeration27" />
+        <package android:name="com.android.perftests.appenumeration28" />
+        <package android:name="com.android.perftests.appenumeration29" />
+        <package android:name="com.android.perftests.appenumeration30" />
+        <package android:name="com.android.perftests.appenumeration31" />
+        <package android:name="com.android.perftests.appenumeration32" />
+        <package android:name="com.android.perftests.appenumeration33" />
+        <package android:name="com.android.perftests.appenumeration34" />
+        <package android:name="com.android.perftests.appenumeration35" />
+        <package android:name="com.android.perftests.appenumeration36" />
+        <package android:name="com.android.perftests.appenumeration37" />
+        <package android:name="com.android.perftests.appenumeration38" />
+        <package android:name="com.android.perftests.appenumeration39" />
+        <package android:name="com.android.perftests.appenumeration40" />
+        <package android:name="com.android.perftests.appenumeration41" />
+        <package android:name="com.android.perftests.appenumeration42" />
+        <package android:name="com.android.perftests.appenumeration43" />
+        <package android:name="com.android.perftests.appenumeration44" />
+        <package android:name="com.android.perftests.appenumeration45" />
+        <package android:name="com.android.perftests.appenumeration46" />
+        <package android:name="com.android.perftests.appenumeration47" />
+        <package android:name="com.android.perftests.appenumeration48" />
+        <package android:name="com.android.perftests.appenumeration49" />
+    </queries>
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+        <activity android:name="android.perftests.utils.PerfTestActivity">
+          <intent-filter>
+            <action android:name="com.android.perftests.packagemanager.PERFTEST" />
+          </intent-filter>
+        </activity>
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.perftests.packagemanager"/>
+
+</manifest>
diff --git a/apct-tests/perftests/packagemanager/AndroidTest.xml b/apct-tests/perftests/packagemanager/AndroidTest.xml
new file mode 100644
index 0000000..c112d87
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/AndroidTest.xml
@@ -0,0 +1,88 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<configuration description="Runs PackageManagerPerfTests metric instrumentation.">
+    <option name="test-suite-tag" value="apct" />
+    <option name="test-suite-tag" value="apct-metric-instrumentation" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="PackageManagerPerfTests.apk" />
+    </target_preparer>
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="force-queryable" value="false" />
+        <option name="test-file-name" value="QueriesAll0.apk" />
+        <option name="test-file-name" value="QueriesAll1.apk" />
+        <option name="test-file-name" value="QueriesAll2.apk" />
+        <option name="test-file-name" value="QueriesAll3.apk" />
+        <option name="test-file-name" value="QueriesAll4.apk" />
+        <option name="test-file-name" value="QueriesAll5.apk" />
+        <option name="test-file-name" value="QueriesAll6.apk" />
+        <option name="test-file-name" value="QueriesAll7.apk" />
+        <option name="test-file-name" value="QueriesAll8.apk" />
+        <option name="test-file-name" value="QueriesAll9.apk" />
+        <option name="test-file-name" value="QueriesAll10.apk" />
+        <option name="test-file-name" value="QueriesAll11.apk" />
+        <option name="test-file-name" value="QueriesAll12.apk" />
+        <option name="test-file-name" value="QueriesAll13.apk" />
+        <option name="test-file-name" value="QueriesAll14.apk" />
+        <option name="test-file-name" value="QueriesAll15.apk" />
+        <option name="test-file-name" value="QueriesAll16.apk" />
+        <option name="test-file-name" value="QueriesAll17.apk" />
+        <option name="test-file-name" value="QueriesAll18.apk" />
+        <option name="test-file-name" value="QueriesAll19.apk" />
+        <option name="test-file-name" value="QueriesAll20.apk" />
+        <option name="test-file-name" value="QueriesAll21.apk" />
+        <option name="test-file-name" value="QueriesAll22.apk" />
+        <option name="test-file-name" value="QueriesAll23.apk" />
+        <option name="test-file-name" value="QueriesAll24.apk" />
+        <option name="test-file-name" value="QueriesAll25.apk" />
+        <option name="test-file-name" value="QueriesAll26.apk" />
+        <option name="test-file-name" value="QueriesAll27.apk" />
+        <option name="test-file-name" value="QueriesAll28.apk" />
+        <option name="test-file-name" value="QueriesAll29.apk" />
+        <option name="test-file-name" value="QueriesAll30.apk" />
+        <option name="test-file-name" value="QueriesAll31.apk" />
+        <option name="test-file-name" value="QueriesAll32.apk" />
+        <option name="test-file-name" value="QueriesAll33.apk" />
+        <option name="test-file-name" value="QueriesAll34.apk" />
+        <option name="test-file-name" value="QueriesAll35.apk" />
+        <option name="test-file-name" value="QueriesAll36.apk" />
+        <option name="test-file-name" value="QueriesAll37.apk" />
+        <option name="test-file-name" value="QueriesAll38.apk" />
+        <option name="test-file-name" value="QueriesAll39.apk" />
+        <option name="test-file-name" value="QueriesAll40.apk" />
+        <option name="test-file-name" value="QueriesAll41.apk" />
+        <option name="test-file-name" value="QueriesAll42.apk" />
+        <option name="test-file-name" value="QueriesAll43.apk" />
+        <option name="test-file-name" value="QueriesAll44.apk" />
+        <option name="test-file-name" value="QueriesAll45.apk" />
+        <option name="test-file-name" value="QueriesAll46.apk" />
+        <option name="test-file-name" value="QueriesAll47.apk" />
+        <option name="test-file-name" value="QueriesAll48.apk" />
+        <option name="test-file-name" value="QueriesAll49.apk" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.android.perftests.packagemanager" />
+        <option name="hidden-api-checks" value="false"/>
+    </test>
+
+    <metrics_collector class="com.android.tradefed.device.metric.FilePullerLogCollector">
+        <option name="directory-keys" value="/data/local/PackageManagerPerfTests" />
+        <option name="collect-on-run-ended-only" value="true" />
+    </metrics_collector>
+</configuration>
diff --git a/apct-tests/perftests/packagemanager/apps/query-all/Android.bp b/apct-tests/perftests/packagemanager/apps/query-all/Android.bp
new file mode 100644
index 0000000..3cb1589
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/apps/query-all/Android.bp
@@ -0,0 +1,314 @@
+// 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.
+
+android_test_helper_app {
+    name: "QueriesAll0",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration0",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll1",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration1",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll2",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration2",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll3",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration3",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll4",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration4",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll5",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration5",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll6",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration6",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll7",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration7",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll8",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration8",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll9",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration9",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll10",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration10",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll11",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration11",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll12",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration12",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll13",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration13",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll14",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration14",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll15",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration15",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll16",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration16",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll17",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration17",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll18",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration18",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll19",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration19",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll20",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration20",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll21",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration21",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll22",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration22",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll23",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration23",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll24",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration24",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll25",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration25",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll26",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration26",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll27",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration27",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll28",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration28",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll29",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration29",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll30",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration30",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll31",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration31",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll32",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration32",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll33",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration33",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll34",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration34",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll35",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration35",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll36",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration36",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll37",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration37",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll38",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration38",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll39",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration39",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll40",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration40",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll41",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration41",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll42",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration42",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll43",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration43",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll44",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration44",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll45",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration45",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll46",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration46",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll47",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration47",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll48",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration48",
+    ]
+}
+android_test_helper_app {
+    name: "QueriesAll49",
+    aaptflags: [
+        "--rename-manifest-package com.android.perftests.appenumeration49",
+    ]
+}
diff --git a/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
new file mode 100644
index 0000000..e2cfa04
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/apps/query-all/AndroidManifest.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+          package="com.android.perftests.appenumeration">
+
+    <application android:hasCode="false" >
+        <activity android:name="android.perftests.utils.PerfTestActivity">
+            <intent-filter>
+                <action android:name="com.android.perftests.packagemanager.PERFTEST" />
+            </intent-filter>
+        </activity>
+    </application>
+
+    <queries>
+        <package android:name="com.android.perftests.appenumeration0" />
+        <package android:name="com.android.perftests.appenumeration1" />
+        <package android:name="com.android.perftests.appenumeration2" />
+        <package android:name="com.android.perftests.appenumeration3" />
+        <package android:name="com.android.perftests.appenumeration4" />
+        <package android:name="com.android.perftests.appenumeration5" />
+        <package android:name="com.android.perftests.appenumeration6" />
+        <package android:name="com.android.perftests.appenumeration7" />
+        <package android:name="com.android.perftests.appenumeration8" />
+        <package android:name="com.android.perftests.appenumeration9" />
+        <package android:name="com.android.perftests.appenumeration10" />
+        <package android:name="com.android.perftests.appenumeration11" />
+        <package android:name="com.android.perftests.appenumeration12" />
+        <package android:name="com.android.perftests.appenumeration13" />
+        <package android:name="com.android.perftests.appenumeration14" />
+        <package android:name="com.android.perftests.appenumeration15" />
+        <package android:name="com.android.perftests.appenumeration16" />
+        <package android:name="com.android.perftests.appenumeration17" />
+        <package android:name="com.android.perftests.appenumeration18" />
+        <package android:name="com.android.perftests.appenumeration19" />
+        <package android:name="com.android.perftests.appenumeration20" />
+        <package android:name="com.android.perftests.appenumeration21" />
+        <package android:name="com.android.perftests.appenumeration22" />
+        <package android:name="com.android.perftests.appenumeration23" />
+        <package android:name="com.android.perftests.appenumeration24" />
+        <package android:name="com.android.perftests.appenumeration25" />
+        <package android:name="com.android.perftests.appenumeration26" />
+        <package android:name="com.android.perftests.appenumeration27" />
+        <package android:name="com.android.perftests.appenumeration28" />
+        <package android:name="com.android.perftests.appenumeration29" />
+        <package android:name="com.android.perftests.appenumeration30" />
+        <package android:name="com.android.perftests.appenumeration31" />
+        <package android:name="com.android.perftests.appenumeration32" />
+        <package android:name="com.android.perftests.appenumeration33" />
+        <package android:name="com.android.perftests.appenumeration34" />
+        <package android:name="com.android.perftests.appenumeration35" />
+        <package android:name="com.android.perftests.appenumeration36" />
+        <package android:name="com.android.perftests.appenumeration37" />
+        <package android:name="com.android.perftests.appenumeration38" />
+        <package android:name="com.android.perftests.appenumeration39" />
+        <package android:name="com.android.perftests.appenumeration40" />
+        <package android:name="com.android.perftests.appenumeration41" />
+        <package android:name="com.android.perftests.appenumeration42" />
+        <package android:name="com.android.perftests.appenumeration43" />
+        <package android:name="com.android.perftests.appenumeration44" />
+        <package android:name="com.android.perftests.appenumeration45" />
+        <package android:name="com.android.perftests.appenumeration46" />
+        <package android:name="com.android.perftests.appenumeration47" />
+        <package android:name="com.android.perftests.appenumeration48" />
+        <package android:name="com.android.perftests.appenumeration49" />
+    </queries>
+
+</manifest>
\ No newline at end of file
diff --git a/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java b/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java
new file mode 100644
index 0000000..d7428cf
--- /dev/null
+++ b/apct-tests/perftests/packagemanager/src/android/os/PackageManagerPerfTest.java
@@ -0,0 +1,189 @@
+/*
+ * 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 android.os;
+
+import static libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
+import static libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
+
+import android.compat.testing.PlatformCompatChangeRule;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.perftests.utils.BenchmarkState;
+import android.perftests.utils.PerfStatusReporter;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.filters.LargeTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+@RunWith(AndroidJUnit4.class)
+@LargeTest
+public class PackageManagerPerfTest {
+    private static final String PERMISSION_NAME_EXISTS =
+            "com.android.perftests.packagemanager.TestPermission";
+    private static final String PERMISSION_NAME_DOESNT_EXIST =
+            "com.android.perftests.packagemanager.TestBadPermission";
+    private static final String OTHER_PACKAGE_NAME = "com.android.perftests.appenumeration0";
+    private static final ComponentName TEST_ACTIVITY =
+            new ComponentName(OTHER_PACKAGE_NAME,
+                    "android.perftests.utils.PerfTestActivity");
+
+    @Rule
+    public final PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
+
+    @Rule
+    public final PlatformCompatChangeRule mPlatformCompatChangeRule =
+            new PlatformCompatChangeRule();
+
+    public PackageManagerPerfTest() throws PackageManager.NameNotFoundException {
+        final Context context = InstrumentationRegistry.getInstrumentation().getContext();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testCheckPermissionExists() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+        final String packageName = TEST_ACTIVITY.getPackageName();
+
+        while (state.keepRunning()) {
+            int ret = pm.checkPermission(PERMISSION_NAME_EXISTS, packageName);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testCheckPermissionExistsWithFiltering() {
+        testCheckPermissionExists();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testCheckPermissionDoesntExist() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+        final String packageName = TEST_ACTIVITY.getPackageName();
+
+        while (state.keepRunning()) {
+            int ret = pm.checkPermission(PERMISSION_NAME_DOESNT_EXIST, packageName);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testCheckPermissionDoesntExistWithFiltering() {
+        testCheckPermissionDoesntExist();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testQueryIntentActivities() {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+        final Intent intent = new Intent("com.android.perftests.core.PERFTEST");
+
+        while (state.keepRunning()) {
+            pm.queryIntentActivities(intent, 0);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testQueryIntentActivitiesWithFiltering() {
+        testQueryIntentActivities();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetPackageInfo() throws Exception {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+        while (state.keepRunning()) {
+            pm.getPackageInfo(OTHER_PACKAGE_NAME, 0);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetPackageInfoWithFiltering() throws Exception {
+        testGetPackageInfo();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetApplicationInfo() throws Exception {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+        while (state.keepRunning()) {
+            pm.getApplicationInfo(OTHER_PACKAGE_NAME, 0);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetApplicationInfoWithFiltering() throws Exception {
+        testGetApplicationInfo();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetActivityInfo() throws Exception {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+        while (state.keepRunning()) {
+            pm.getActivityInfo(TEST_ACTIVITY, 0);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetActivityInfoWithFiltering() throws Exception {
+        testGetActivityInfo();
+    }
+
+    @Test
+    @DisableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetInstalledPackages() throws Exception {
+        final BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
+        final PackageManager pm =
+                InstrumentationRegistry.getInstrumentation().getTargetContext().getPackageManager();
+
+        while (state.keepRunning()) {
+            pm.getInstalledPackages(0);
+        }
+    }
+
+    @Test
+    @EnableCompatChanges(PackageManager.FILTER_APPLICATION_QUERY)
+    public void testGetInstalledPackagesWithFiltering() throws Exception {
+        testGetInstalledPackages();
+    }
+}
diff --git a/apct-tests/perftests/textclassifier/src/android/view/textclassifier/TextClassificationManagerPerfTest.java b/apct-tests/perftests/textclassifier/src/android/view/textclassifier/TextClassificationManagerPerfTest.java
index bd3b673..f61ea85 100644
--- a/apct-tests/perftests/textclassifier/src/android/view/textclassifier/TextClassificationManagerPerfTest.java
+++ b/apct-tests/perftests/textclassifier/src/android/view/textclassifier/TextClassificationManagerPerfTest.java
@@ -18,35 +18,60 @@
 import android.content.Context;
 import android.perftests.utils.BenchmarkState;
 import android.perftests.utils.PerfStatusReporter;
-import android.perftests.utils.SettingsHelper;
-import android.provider.Settings;
+import android.provider.DeviceConfig;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.LargeTest;
 
 import org.junit.After;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
 import org.junit.Rule;
 import org.junit.Test;
 
 @LargeTest
 public class TextClassificationManagerPerfTest {
+    private static final String WRITE_DEVICE_CONFIG_PERMISSION =
+            "android.permission.WRITE_DEVICE_CONFIG";
 
     @Rule
     public PerfStatusReporter mPerfStatusReporter = new PerfStatusReporter();
 
+    private String mOriginalSystemTextclassifierStatus;
+
+    @BeforeClass
+    public static void setUpClass() {
+        InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .adoptShellPermissionIdentity(
+                        WRITE_DEVICE_CONFIG_PERMISSION);
+    }
+
+    @AfterClass
+    public static void tearDownClass() {
+        InstrumentationRegistry
+                .getInstrumentation()
+                .getUiAutomation()
+                .dropShellPermissionIdentity();
+    }
+
+    @Before
+    public void setUp() {
+        // Saves config original value.
+        mOriginalSystemTextclassifierStatus = DeviceConfig.getProperty(
+                DeviceConfig.NAMESPACE_TEXTCLASSIFIER, "system_textclassifier_enabled");
+    }
+
     @After
     public void tearDown() {
-        SettingsHelper.delete(
-                SettingsHelper.NAMESPACE_GLOBAL, Settings.Global.TEXT_CLASSIFIER_CONSTANTS);
+        // Restores config original value.
+        enableSystemTextclassifier(mOriginalSystemTextclassifierStatus);
     }
 
     @Test
     public void testGetTextClassifier_systemTextClassifierDisabled() {
         Context context = InstrumentationRegistry.getTargetContext();
-        SettingsHelper.set(
-                SettingsHelper.NAMESPACE_GLOBAL,
-                Settings.Global.TEXT_CLASSIFIER_CONSTANTS,
-                "system_textclassifier_enabled=false");
+        enableSystemTextclassifier(String.valueOf(false));
         TextClassificationManager textClassificationManager =
                 context.getSystemService(TextClassificationManager.class);
         BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
@@ -59,10 +84,7 @@
     @Test
     public void testGetTextClassifier_systemTextClassifierEnabled() {
         Context context = InstrumentationRegistry.getTargetContext();
-        SettingsHelper.set(
-                SettingsHelper.NAMESPACE_GLOBAL,
-                Settings.Global.TEXT_CLASSIFIER_CONSTANTS,
-                "system_textclassifier_enabled=true");
+        enableSystemTextclassifier(String.valueOf(true));
         TextClassificationManager textClassificationManager =
                 context.getSystemService(TextClassificationManager.class);
         BenchmarkState state = mPerfStatusReporter.getBenchmarkState();
@@ -71,4 +93,9 @@
             textClassificationManager.invalidateForTesting();
         }
     }
+
+    private void enableSystemTextclassifier(String enabled) {
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
+                "system_textclassifier_enabled", enabled, /* makeDefault */ false);
+    }
 }
diff --git a/apex/Android.bp b/apex/Android.bp
index abebfa3..362cf95 100644
--- a/apex/Android.bp
+++ b/apex/Android.bp
@@ -29,6 +29,16 @@
 // TODO: remove this server classes are cleaned up.
 mainline_stubs_args += "--hide-package com.android.server "
 
+priv_apps = " " +
+    "--show-annotation android.annotation.SystemApi\\(" +
+        "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
+    "\\) "
+
+module_libs = " " +
+    " --show-annotation android.annotation.SystemApi\\(" +
+        "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES," +
+    "\\) "
+
 stubs_defaults {
     name: "framework-module-stubs-defaults-publicapi",
     args: mainline_stubs_args,
@@ -37,36 +47,23 @@
 
 stubs_defaults {
     name: "framework-module-stubs-defaults-systemapi",
-    args: mainline_stubs_args +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-    "process=android.annotation.SystemApi.Process.ALL\\) ",
+    args: mainline_stubs_args + priv_apps,
     installable: false,
 }
 
+// The defaults for module_libs comes in two parts - defaults for API checks
+// and defaults for stub generation. This is because we want the API txt
+// files to *only* include the module_libs_api, but the stubs to include
+// module_libs_api as well as priv_apps.
+
 stubs_defaults {
-    name: "framework-module-stubs-defaults-module_apps_api",
-    args: mainline_stubs_args +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-    "process=android.annotation.SystemApi.Process.ALL\\) " +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.MODULE_APPS," +
-    "process=android.annotation.SystemApi.Process.ALL\\) ",
+    name: "framework-module-api-defaults-module_libs_api",
+    args: mainline_stubs_args + module_libs,
     installable: false,
 }
 
 stubs_defaults {
     name: "framework-module-stubs-defaults-module_libs_api",
-    args: mainline_stubs_args +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.PRIVILEGED_APPS," +
-    "process=android.annotation.SystemApi.Process.ALL\\) " +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.MODULE_APPS," +
-    "process=android.annotation.SystemApi.Process.ALL\\) " +
-    " --show-annotation android.annotation.SystemApi\\(" +
-    "client=android.annotation.SystemApi.Client.MODULE_LIBRARIES," +
-    "process=android.annotation.SystemApi.Process.ALL\\) ",
+    args: mainline_stubs_args + module_libs + priv_apps,
     installable: false,
 }
diff --git a/apex/blobstore/TEST_MAPPING b/apex/blobstore/TEST_MAPPING
index 4dc0c49..25a1537 100644
--- a/apex/blobstore/TEST_MAPPING
+++ b/apex/blobstore/TEST_MAPPING
@@ -2,6 +2,14 @@
   "presubmit": [
     {
       "name": "CtsBlobStoreTestCases"
+    },
+    {
+      "name": "FrameworksMockingServicesTests",
+      "options": [
+        {
+          "include-filter": "com.android.server.blob"
+        }
+      ]
     }
   ]
 }
\ No newline at end of file
diff --git a/apex/blobstore/framework/java/android/app/blob/BlobHandle.java b/apex/blobstore/framework/java/android/app/blob/BlobHandle.java
index f7e6a98..9c3bd81 100644
--- a/apex/blobstore/framework/java/android/app/blob/BlobHandle.java
+++ b/apex/blobstore/framework/java/android/app/blob/BlobHandle.java
@@ -45,6 +45,10 @@
 public final class BlobHandle implements Parcelable {
     private static final String ALGO_SHA_256 = "SHA-256";
 
+    private static final String[] SUPPORTED_ALGOS = {
+            ALGO_SHA_256
+    };
+
     private static final int LIMIT_BLOB_TAG_LENGTH = 128; // characters
 
     /**
@@ -104,14 +108,9 @@
     public static @NonNull BlobHandle create(@NonNull String algorithm, @NonNull byte[] digest,
             @NonNull CharSequence label, @CurrentTimeMillisLong long expiryTimeMillis,
             @NonNull String tag) {
-        Preconditions.checkNotNull(algorithm, "algorithm must not be null");
-        Preconditions.checkNotNull(digest, "digest must not be null");
-        Preconditions.checkNotNull(label, "label must not be null");
-        Preconditions.checkArgumentNonnegative(expiryTimeMillis,
-                "expiryTimeMillis must not be negative");
-        Preconditions.checkNotNull(tag, "tag must not be null");
-        Preconditions.checkArgument(tag.length() <= LIMIT_BLOB_TAG_LENGTH, "tag too long");
-        return new BlobHandle(algorithm, digest, label, expiryTimeMillis, tag);
+        final BlobHandle handle = new BlobHandle(algorithm, digest, label, expiryTimeMillis, tag);
+        handle.assertIsValid();
+        return handle;
     }
 
     /**
@@ -130,7 +129,8 @@
      * @param label a label indicating what the blob is, that can be surfaced to the user.
      * @param expiryTimeMillis the time in secs after which the blob should be invalidated and not
      *                         allowed to be accessed by any other app,
-     *                         in {@link System#currentTimeMillis()} timebase.
+     *                         in {@link System#currentTimeMillis()} timebase or {@code 0} to
+     *                         indicate that there is no expiry time associated with this blob.
      * @param tag an opaque {@link String} associated with the blob. The length of the tag
      *            cannot be more than 128 characters.
      *
@@ -215,12 +215,52 @@
     }
 
     /** @hide */
-    public void dump(IndentingPrintWriter fout) {
-        fout.println("algo: " + algorithm);
-        fout.println("digest: " + Base64.encodeToString(digest, Base64.NO_WRAP));
-        fout.println("label: " + label);
-        fout.println("expiryMs: " + expiryTimeMillis);
-        fout.println("tag: " + tag);
+    public void dump(IndentingPrintWriter fout, boolean dumpFull) {
+        if (dumpFull) {
+            fout.println("algo: " + algorithm);
+            fout.println("digest: " + (dumpFull ? encodeDigest() : safeDigest()));
+            fout.println("label: " + label);
+            fout.println("expiryMs: " + expiryTimeMillis);
+            fout.println("tag: " + tag);
+        } else {
+            fout.println(toString());
+        }
+    }
+
+    /** @hide */
+    public void assertIsValid() {
+        Preconditions.checkArgumentIsSupported(SUPPORTED_ALGOS, algorithm);
+        Preconditions.checkByteArrayNotEmpty(digest, "digest");
+        Preconditions.checkStringNotEmpty(label, "label must not be null");
+        Preconditions.checkArgumentNonnegative(expiryTimeMillis,
+                "expiryTimeMillis must not be negative");
+        Preconditions.checkStringNotEmpty(tag, "tag must not be null");
+        Preconditions.checkArgument(tag.length() <= LIMIT_BLOB_TAG_LENGTH, "tag too long");
+    }
+
+    @Override
+    public String toString() {
+        return "BlobHandle {"
+                + "algo:" + algorithm + ","
+                + "digest:" + safeDigest() + ","
+                + "label:" + label + ","
+                + "expiryMs:" + expiryTimeMillis + ","
+                + "tag:" + tag
+                + "}";
+    }
+
+    private String safeDigest() {
+        final String digestStr = encodeDigest();
+        return digestStr.substring(0, 2) + ".." + digestStr.substring(digestStr.length() - 2);
+    }
+
+    private String encodeDigest() {
+        return Base64.encodeToString(digest, Base64.NO_WRAP);
+    }
+
+    /** @hide */
+    public boolean isExpired() {
+        return expiryTimeMillis != 0 && expiryTimeMillis < System.currentTimeMillis();
     }
 
     public static final @NonNull Creator<BlobHandle> CREATOR = new Creator<BlobHandle>() {
diff --git a/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java b/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java
index 8cea645..f53f1f1 100644
--- a/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java
+++ b/apex/blobstore/framework/java/android/app/blob/BlobStoreManager.java
@@ -142,6 +142,9 @@
     /** @hide */
     public static final int COMMIT_RESULT_ERROR = 1;
 
+    /** @hide */
+    public static final int INVALID_RES_ID = -1;
+
     private final Context mContext;
     private final IBlobStoreManager mService;
 
@@ -263,6 +266,9 @@
      * <p> This lease information is persisted and calling this more than once will result in
      * latest lease overriding any previous lease.
      *
+     * <p> When an app acquires a lease on a blob, the System will try to keep this
+     * blob around but note that it can still be deleted if it was requested by the user.
+     *
      * @param blobHandle the {@link BlobHandle} representing the blob that the caller wants to
      *                   acquire a lease for.
      * @param descriptionResId the resource id for a short description string that can be surfaced
@@ -285,11 +291,68 @@
      *                               caller is trying to acquire too many leases.
      *
      * @see {@link #acquireLease(BlobHandle, int)}
+     * @see {@link #acquireLease(BlobHandle, CharSequence)}
      */
     public void acquireLease(@NonNull BlobHandle blobHandle, @IdRes int descriptionResId,
             @CurrentTimeMillisLong long leaseExpiryTimeMillis) throws IOException {
         try {
-            mService.acquireLease(blobHandle, descriptionResId, leaseExpiryTimeMillis,
+            mService.acquireLease(blobHandle, descriptionResId, null, leaseExpiryTimeMillis,
+                    mContext.getOpPackageName());
+        } catch (ParcelableException e) {
+            e.maybeRethrow(IOException.class);
+            throw new RuntimeException(e);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Acquire a lease to the blob represented by {@code blobHandle}. This lease indicates to the
+     * system that the caller wants the blob to be kept around.
+     *
+     * <p> This is a variant of {@link #acquireLease(BlobHandle, int, long)} taking a
+     * {@link CharSequence} for {@code description}. It is highly recommended that callers only
+     * use this when a valid resource ID for {@code description} could not be provided. Otherwise,
+     * apps should prefer using {@link #acquireLease(BlobHandle, int)} which will allow
+     * {@code description} to be localized.
+     *
+     * <p> Any active leases will be automatically released when the blob's expiry time
+     * ({@link BlobHandle#getExpiryTimeMillis()}) is elapsed.
+     *
+     * <p> This lease information is persisted and calling this more than once will result in
+     * latest lease overriding any previous lease.
+     *
+     * <p> When an app acquires a lease on a blob, the System will try to keep this
+     * blob around but note that it can still be deleted if it was requested by the user.
+     *
+     * @param blobHandle the {@link BlobHandle} representing the blob that the caller wants to
+     *                   acquire a lease for.
+     * @param description a short description string that can be surfaced
+     *                    to the user explaining what the blob is used for.
+     * @param leaseExpiryTimeMillis the time in milliseconds after which the lease can be
+     *                              automatically released, in {@link System#currentTimeMillis()}
+     *                              timebase. If its value is {@code 0}, then the behavior of this
+     *                              API is identical to {@link #acquireLease(BlobHandle, int)}
+     *                              where clients have to explicitly call
+     *                              {@link #releaseLease(BlobHandle)} when they don't
+     *                              need the blob anymore.
+     *
+     * @throws IOException when there is an I/O error while acquiring a lease to the blob.
+     * @throws SecurityException when the blob represented by the {@code blobHandle} does not
+     *                           exist or the caller does not have access to it.
+     * @throws IllegalArgumentException when {@code blobHandle} is invalid or
+     *                                  if the {@code leaseExpiryTimeMillis} is greater than the
+     *                                  {@link BlobHandle#getExpiryTimeMillis()}.
+     * @throws IllegalStateException when a lease could not be acquired, such as when the
+     *                               caller is trying to acquire too many leases.
+     *
+     * @see {@link #acquireLease(BlobHandle, int, long)}
+     * @see {@link #acquireLease(BlobHandle, CharSequence)}
+     */
+    public void acquireLease(@NonNull BlobHandle blobHandle, @NonNull CharSequence description,
+            @CurrentTimeMillisLong long leaseExpiryTimeMillis) throws IOException {
+        try {
+            mService.acquireLease(blobHandle, INVALID_RES_ID, description, leaseExpiryTimeMillis,
                     mContext.getOpPackageName());
         } catch (ParcelableException e) {
             e.maybeRethrow(IOException.class);
@@ -314,6 +377,9 @@
      * <p> This lease information is persisted and calling this more than once will result in
      * latest lease overriding any previous lease.
      *
+     * <p> When an app acquires a lease on a blob, the System will try to keep this
+     * blob around but note that it can still be deleted if it was requested by the user.
+     *
      * @param blobHandle the {@link BlobHandle} representing the blob that the caller wants to
      *                   acquire a lease for.
      * @param descriptionResId the resource id for a short description string that can be surfaced
@@ -327,6 +393,7 @@
      *                               caller is trying to acquire too many leases.
      *
      * @see {@link #acquireLease(BlobHandle, int, long)}
+     * @see {@link #acquireLease(BlobHandle, CharSequence, long)}
      */
     public void acquireLease(@NonNull BlobHandle blobHandle, @IdRes int descriptionResId)
             throws IOException {
@@ -334,6 +401,50 @@
     }
 
     /**
+     * Acquire a lease to the blob represented by {@code blobHandle}. This lease indicates to the
+     * system that the caller wants the blob to be kept around.
+     *
+     * <p> This is a variant of {@link #acquireLease(BlobHandle, int)} taking a {@link CharSequence}
+     * for {@code description}. It is highly recommended that callers only use this when a valid
+     * resource ID for {@code description} could not be provided. Otherwise, apps should prefer
+     * using {@link #acquireLease(BlobHandle, int)} which will allow {@code description} to be
+     * localized.
+     *
+     * <p> This is similar to {@link #acquireLease(BlobHandle, CharSequence, long)} except clients
+     * don't have to specify the lease expiry time upfront using this API and need to explicitly
+     * release the lease using {@link #releaseLease(BlobHandle)} when they no longer like to keep
+     * a blob around.
+     *
+     * <p> Any active leases will be automatically released when the blob's expiry time
+     * ({@link BlobHandle#getExpiryTimeMillis()}) is elapsed.
+     *
+     * <p> This lease information is persisted and calling this more than once will result in
+     * latest lease overriding any previous lease.
+     *
+     * <p> When an app acquires a lease on a blob, the System will try to keep this
+     * blob around but note that it can still be deleted if it was requested by the user.
+     *
+     * @param blobHandle the {@link BlobHandle} representing the blob that the caller wants to
+     *                   acquire a lease for.
+     * @param description a short description string that can be surfaced
+     *                    to the user explaining what the blob is used for.
+     *
+     * @throws IOException when there is an I/O error while acquiring a lease to the blob.
+     * @throws SecurityException when the blob represented by the {@code blobHandle} does not
+     *                           exist or the caller does not have access to it.
+     * @throws IllegalArgumentException when {@code blobHandle} is invalid.
+     * @throws IllegalStateException when a lease could not be acquired, such as when the
+     *                               caller is trying to acquire too many leases.
+     *
+     * @see {@link #acquireLease(BlobHandle, int)}
+     * @see {@link #acquireLease(BlobHandle, CharSequence, long)}
+     */
+    public void acquireLease(@NonNull BlobHandle blobHandle, @NonNull CharSequence description)
+            throws IOException {
+        acquireLease(blobHandle, description, 0);
+    }
+
+    /**
      * Release all active leases to the blob represented by {@code blobHandle} which are
      * currently held by the caller.
      *
diff --git a/apex/blobstore/framework/java/android/app/blob/IBlobStoreManager.aidl b/apex/blobstore/framework/java/android/app/blob/IBlobStoreManager.aidl
index e2128b4..a85a25c 100644
--- a/apex/blobstore/framework/java/android/app/blob/IBlobStoreManager.aidl
+++ b/apex/blobstore/framework/java/android/app/blob/IBlobStoreManager.aidl
@@ -26,8 +26,8 @@
     ParcelFileDescriptor openBlob(in BlobHandle handle, in String packageName);
     void deleteSession(long sessionId, in String packageName);
 
-    void acquireLease(in BlobHandle handle, int descriptionResId, long leaseTimeout,
-            in String packageName);
+    void acquireLease(in BlobHandle handle, int descriptionResId, in CharSequence description,
+            long leaseTimeoutMillis, in String packageName);
     void releaseLease(in BlobHandle handle, in String packageName);
 
     void waitForIdle(in RemoteCallback callback);
diff --git a/apex/blobstore/framework/java/android/app/blob/XmlTags.java b/apex/blobstore/framework/java/android/app/blob/XmlTags.java
index 803c9a4..9834d74 100644
--- a/apex/blobstore/framework/java/android/app/blob/XmlTags.java
+++ b/apex/blobstore/framework/java/android/app/blob/XmlTags.java
@@ -52,4 +52,5 @@
     // For leasee
     public static final String TAG_LEASEE = "l";
     public static final String ATTR_DESCRIPTION_RES_ID = "rid";
+    public static final String ATTR_DESCRIPTION = "d";
 }
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java b/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java
index e9838d6..c7d803c 100644
--- a/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobMetadata.java
@@ -15,6 +15,7 @@
  */
 package com.android.server.blob;
 
+import static android.app.blob.XmlTags.ATTR_DESCRIPTION;
 import static android.app.blob.XmlTags.ATTR_DESCRIPTION_RES_ID;
 import static android.app.blob.XmlTags.ATTR_EXPIRY_TIME;
 import static android.app.blob.XmlTags.ATTR_ID;
@@ -28,12 +29,14 @@
 import static android.system.OsConstants.O_RDONLY;
 
 import static com.android.server.blob.BlobStoreConfig.TAG;
+import static com.android.server.blob.BlobStoreConfig.XML_VERSION_ADD_STRING_DESC;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.blob.BlobHandle;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.res.ResourceId;
 import android.content.res.Resources;
 import android.os.ParcelFileDescriptor;
 import android.os.RevocableFileDescriptor;
@@ -48,6 +51,7 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.XmlUtils;
+import com.android.server.blob.BlobStoreManagerService.DumpArgs;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -63,9 +67,9 @@
 
     private final Context mContext;
 
-    public final long blobId;
-    public final BlobHandle blobHandle;
-    public final int userId;
+    private final long mBlobId;
+    private final BlobHandle mBlobHandle;
+    private final int mUserId;
 
     @GuardedBy("mMetadataLock")
     private final ArraySet<Committer> mCommitters = new ArraySet<>();
@@ -89,9 +93,21 @@
 
     BlobMetadata(Context context, long blobId, BlobHandle blobHandle, int userId) {
         mContext = context;
-        this.blobId = blobId;
-        this.blobHandle = blobHandle;
-        this.userId = userId;
+        this.mBlobId = blobId;
+        this.mBlobHandle = blobHandle;
+        this.mUserId = userId;
+    }
+
+    long getBlobId() {
+        return mBlobId;
+    }
+
+    BlobHandle getBlobHandle() {
+        return mBlobHandle;
+    }
+
+    int getUserId() {
+        return mUserId;
     }
 
     void addCommitter(@NonNull Committer committer) {
@@ -128,11 +144,11 @@
         }
     }
 
-    void addLeasee(String callingPackage, int callingUid,
-            int descriptionResId, long leaseExpiryTimeMillis) {
+    void addLeasee(String callingPackage, int callingUid, int descriptionResId,
+            CharSequence description, long leaseExpiryTimeMillis) {
         synchronized (mMetadataLock) {
             mLeasees.add(new Leasee(callingPackage, callingUid,
-                    descriptionResId, leaseExpiryTimeMillis));
+                    descriptionResId, description, leaseExpiryTimeMillis));
         }
     }
 
@@ -156,6 +172,12 @@
         }
     }
 
+    boolean hasLeases() {
+        synchronized (mMetadataLock) {
+            return !mLeasees.isEmpty();
+        }
+    }
+
     boolean isAccessAllowedForCaller(String callingPackage, int callingUid) {
         // TODO: verify blob is still valid (expiryTime is not elapsed)
         synchronized (mMetadataLock) {
@@ -189,7 +211,7 @@
 
     File getBlobFile() {
         if (mBlobFile == null) {
-            mBlobFile = BlobStoreConfig.getBlobFile(blobId);
+            mBlobFile = BlobStoreConfig.getBlobFile(mBlobId);
         }
         return mBlobFile;
     }
@@ -234,10 +256,10 @@
         return revocableFd.getRevocableFileDescriptor();
     }
 
-    void dump(IndentingPrintWriter fout) {
+    void dump(IndentingPrintWriter fout, DumpArgs dumpArgs) {
         fout.println("blobHandle:");
         fout.increaseIndent();
-        blobHandle.dump(fout);
+        mBlobHandle.dump(fout, dumpArgs.shouldDumpFull());
         fout.decreaseIndent();
 
         fout.println("Committers:");
@@ -267,11 +289,11 @@
 
     void writeToXml(XmlSerializer out) throws IOException {
         synchronized (mMetadataLock) {
-            XmlUtils.writeLongAttribute(out, ATTR_ID, blobId);
-            XmlUtils.writeIntAttribute(out, ATTR_USER_ID, userId);
+            XmlUtils.writeLongAttribute(out, ATTR_ID, mBlobId);
+            XmlUtils.writeIntAttribute(out, ATTR_USER_ID, mUserId);
 
             out.startTag(null, TAG_BLOB_HANDLE);
-            blobHandle.writeToXml(out);
+            mBlobHandle.writeToXml(out);
             out.endTag(null, TAG_BLOB_HANDLE);
 
             for (int i = 0, count = mCommitters.size(); i < count; ++i) {
@@ -289,7 +311,7 @@
     }
 
     @Nullable
-    static BlobMetadata createFromXml(Context context, XmlPullParser in)
+    static BlobMetadata createFromXml(XmlPullParser in, int version, Context context)
             throws XmlPullParserException, IOException {
         final long blobId = XmlUtils.readLongAttribute(in, ATTR_ID);
         final int userId = XmlUtils.readIntAttribute(in, ATTR_USER_ID);
@@ -302,12 +324,12 @@
             if (TAG_BLOB_HANDLE.equals(in.getName())) {
                 blobHandle = BlobHandle.createFromXml(in);
             } else if (TAG_COMMITTER.equals(in.getName())) {
-                final Committer committer = Committer.createFromXml(in);
+                final Committer committer = Committer.createFromXml(in, version);
                 if (committer != null) {
                     committers.add(committer);
                 }
             } else if (TAG_LEASEE.equals(in.getName())) {
-                leasees.add(Leasee.createFromXml(in));
+                leasees.add(Leasee.createFromXml(in, version));
             }
         }
 
@@ -347,7 +369,7 @@
         }
 
         @Nullable
-        static Committer createFromXml(@NonNull XmlPullParser in)
+        static Committer createFromXml(@NonNull XmlPullParser in, int version)
                 throws XmlPullParserException, IOException {
             final String packageName = XmlUtils.readStringAttribute(in, ATTR_PACKAGE);
             final int uid = XmlUtils.readIntAttribute(in, ATTR_UID);
@@ -369,12 +391,15 @@
 
     static final class Leasee extends Accessor {
         public final int descriptionResId;
+        public final CharSequence description;
         public final long expiryTimeMillis;
 
-        Leasee(String packageName, int uid, int descriptionResId, long expiryTimeMillis) {
+        Leasee(String packageName, int uid, int descriptionResId, CharSequence description,
+                long expiryTimeMillis) {
             super(packageName, uid);
             this.descriptionResId = descriptionResId;
             this.expiryTimeMillis = expiryTimeMillis;
+            this.description = description;
         }
 
         boolean isStillValid() {
@@ -382,35 +407,51 @@
         }
 
         void dump(Context context, IndentingPrintWriter fout) {
-            String desc = null;
-            try {
-                final Resources leaseeRes = context.getPackageManager()
-                        .getResourcesForApplicationAsUser(packageName, UserHandle.getUserId(uid));
-                desc = leaseeRes.getString(descriptionResId);
-            } catch (PackageManager.NameNotFoundException e) {
-                Slog.d(TAG, "Unknown package in user " + UserHandle.getUserId(uid) + ": "
-                        + packageName, e);
-                desc = "<none>";
-            }
-            fout.println("desc: " + desc);
+            fout.println("desc: " + getDescriptionToDump(context));
             fout.println("expiryMs: " + expiryTimeMillis);
         }
 
+        private String getDescriptionToDump(Context context) {
+            String desc = null;
+            if (ResourceId.isValid(descriptionResId)) {
+                try {
+                    final Resources leaseeRes = context.getPackageManager()
+                            .getResourcesForApplicationAsUser(
+                                    packageName, UserHandle.getUserId(uid));
+                    desc = leaseeRes.getString(descriptionResId);
+                } catch (PackageManager.NameNotFoundException e) {
+                    Slog.d(TAG, "Unknown package in user " + UserHandle.getUserId(uid) + ": "
+                            + packageName, e);
+                    desc = "<none>";
+                }
+            } else {
+                desc = description.toString();
+            }
+            return desc;
+        }
+
         void writeToXml(@NonNull XmlSerializer out) throws IOException {
             XmlUtils.writeStringAttribute(out, ATTR_PACKAGE, packageName);
             XmlUtils.writeIntAttribute(out, ATTR_UID, uid);
             XmlUtils.writeIntAttribute(out, ATTR_DESCRIPTION_RES_ID, descriptionResId);
             XmlUtils.writeLongAttribute(out, ATTR_EXPIRY_TIME, expiryTimeMillis);
+            XmlUtils.writeStringAttribute(out, ATTR_DESCRIPTION, description);
         }
 
         @NonNull
-        static Leasee createFromXml(@NonNull XmlPullParser in) throws IOException {
+        static Leasee createFromXml(@NonNull XmlPullParser in, int version) throws IOException {
             final String packageName = XmlUtils.readStringAttribute(in, ATTR_PACKAGE);
             final int uid = XmlUtils.readIntAttribute(in, ATTR_UID);
             final int descriptionResId = XmlUtils.readIntAttribute(in, ATTR_DESCRIPTION_RES_ID);
             final long expiryTimeMillis = XmlUtils.readLongAttribute(in, ATTR_EXPIRY_TIME);
+            final CharSequence description;
+            if (version >= XML_VERSION_ADD_STRING_DESC) {
+                description = XmlUtils.readStringAttribute(in, ATTR_DESCRIPTION);
+            } else {
+                description = null;
+            }
 
-            return new Leasee(packageName, uid, descriptionResId, expiryTimeMillis);
+            return new Leasee(packageName, uid, descriptionResId, description, expiryTimeMillis);
         }
     }
 
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java
index eb414b0..bcc1610 100644
--- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreConfig.java
@@ -18,20 +18,42 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.os.Environment;
+import android.util.Log;
 import android.util.Slog;
 
 import java.io.File;
+import java.util.concurrent.TimeUnit;
 
 class BlobStoreConfig {
     public static final String TAG = "BlobStore";
+    public static final boolean LOGV = Log.isLoggable(TAG, Log.VERBOSE);
 
-    public static final int CURRENT_XML_VERSION = 1;
+    // Initial version.
+    public static final int XML_VERSION_INIT = 1;
+    // Added a string variant of lease description.
+    public static final int XML_VERSION_ADD_STRING_DESC = 2;
+
+    public static final int XML_VERSION_CURRENT = XML_VERSION_ADD_STRING_DESC;
 
     private static final String ROOT_DIR_NAME = "blobstore";
     private static final String BLOBS_DIR_NAME = "blobs";
     private static final String SESSIONS_INDEX_FILE_NAME = "sessions_index.xml";
     private static final String BLOBS_INDEX_FILE_NAME = "blobs_index.xml";
 
+    /**
+     * Job Id for idle maintenance job ({@link BlobStoreIdleJobService}).
+     */
+    public static final int IDLE_JOB_ID = 0xB70B1D7; // 191934935L
+    /**
+     * Max time period (in millis) between each idle maintenance job run.
+     */
+    public static final long IDLE_JOB_PERIOD_MILLIS = TimeUnit.DAYS.toMillis(1);
+
+    /**
+     * Timeout in millis after which sessions with no updates will be deleted.
+     */
+    public static final long SESSION_EXPIRY_TIMEOUT_MILLIS = TimeUnit.DAYS.toMillis(7);
+
     @Nullable
     public static File prepareBlobFile(long sessionId) {
         final File blobsDir = prepareBlobsDir();
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreIdleJobService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreIdleJobService.java
new file mode 100644
index 0000000..460e776
--- /dev/null
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreIdleJobService.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.blob;
+
+import static com.android.server.blob.BlobStoreConfig.IDLE_JOB_ID;
+import static com.android.server.blob.BlobStoreConfig.IDLE_JOB_PERIOD_MILLIS;
+import static com.android.server.blob.BlobStoreConfig.LOGV;
+import static com.android.server.blob.BlobStoreConfig.TAG;
+
+import android.app.job.JobInfo;
+import android.app.job.JobParameters;
+import android.app.job.JobScheduler;
+import android.app.job.JobService;
+import android.content.ComponentName;
+import android.content.Context;
+import android.os.AsyncTask;
+import android.util.Slog;
+
+import com.android.server.LocalServices;
+
+/**
+ * Maintenance job to clean up stale sessions and blobs.
+ */
+public class BlobStoreIdleJobService extends JobService {
+    @Override
+    public boolean onStartJob(final JobParameters params) {
+        AsyncTask.execute(() -> {
+            final BlobStoreManagerInternal blobStoreManagerInternal = LocalServices.getService(
+                    BlobStoreManagerInternal.class);
+            blobStoreManagerInternal.onIdleMaintenance();
+            jobFinished(params, false);
+        });
+        return false;
+    }
+
+    @Override
+    public boolean onStopJob(final JobParameters params) {
+        Slog.d(TAG, "Idle maintenance job is stopped; id=" + params.getJobId()
+                + ", reason=" + JobParameters.getReasonCodeDescription(params.getStopReason()));
+        return false;
+    }
+
+    static void schedule(Context context) {
+        final JobScheduler jobScheduler = (JobScheduler) context.getSystemService(
+                Context.JOB_SCHEDULER_SERVICE);
+        final JobInfo job = new JobInfo.Builder(IDLE_JOB_ID,
+                new ComponentName(context, BlobStoreIdleJobService.class))
+                        .setRequiresDeviceIdle(true)
+                        .setRequiresCharging(true)
+                        .setPeriodic(IDLE_JOB_PERIOD_MILLIS)
+                        .build();
+        jobScheduler.schedule(job);
+        if (LOGV) {
+            Slog.v(TAG, "Scheduling the idle maintenance job");
+        }
+    }
+}
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerInternal.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerInternal.java
new file mode 100644
index 0000000..5358245
--- /dev/null
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerInternal.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.blob;
+
+/**
+ * BlobStoreManager local system service interface.
+ *
+ * Only for use within the system server.
+ */
+public abstract class BlobStoreManagerInternal {
+    /**
+     * Triggered from idle maintenance job to cleanup stale blobs and sessions.
+     */
+    public abstract void onIdleMaintenance();
+}
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
index fcc30e30..1efdbda 100644
--- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerService.java
@@ -27,8 +27,10 @@
 import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
 import static android.os.UserHandle.USER_NULL;
 
-import static com.android.server.blob.BlobStoreConfig.CURRENT_XML_VERSION;
+import static com.android.server.blob.BlobStoreConfig.LOGV;
+import static com.android.server.blob.BlobStoreConfig.SESSION_EXPIRY_TIMEOUT_MILLIS;
 import static com.android.server.blob.BlobStoreConfig.TAG;
+import static com.android.server.blob.BlobStoreConfig.XML_VERSION_CURRENT;
 import static com.android.server.blob.BlobStoreSession.STATE_ABANDONED;
 import static com.android.server.blob.BlobStoreSession.STATE_COMMITTED;
 import static com.android.server.blob.BlobStoreSession.STATE_VERIFIED_INVALID;
@@ -40,6 +42,7 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UserIdInt;
 import android.app.blob.BlobHandle;
 import android.app.blob.IBlobStoreManager;
 import android.app.blob.IBlobStoreSession;
@@ -49,6 +52,7 @@
 import android.content.IntentFilter;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManagerInternal;
+import android.content.res.ResourceId;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -59,6 +63,7 @@
 import android.os.UserHandle;
 import android.os.UserManagerInternal;
 import android.util.ArrayMap;
+import android.util.ArraySet;
 import android.util.AtomicFile;
 import android.util.ExceptionUtils;
 import android.util.LongSparseArray;
@@ -67,6 +72,8 @@
 import android.util.Xml;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.CollectionUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.IndentingPrintWriter;
@@ -90,7 +97,10 @@
 import java.io.PrintWriter;
 import java.nio.charset.StandardCharsets;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
+import java.util.Objects;
+import java.util.Set;
 
 /**
  * Service responsible for maintaining and facilitating access to data blobs published by apps.
@@ -110,27 +120,47 @@
     @GuardedBy("mBlobsLock")
     private final SparseArray<ArrayMap<BlobHandle, BlobMetadata>> mBlobsMap = new SparseArray<>();
 
+    // Contains all ids that are currently in use.
+    @GuardedBy("mBlobsLock")
+    private final ArraySet<Long> mKnownBlobIds = new ArraySet<>();
+
     private final Context mContext;
     private final Handler mHandler;
+    private final Injector mInjector;
     private final SessionStateChangeListener mSessionStateChangeListener =
             new SessionStateChangeListener();
 
     private PackageManagerInternal mPackageManagerInternal;
 
-    public BlobStoreManagerService(Context context) {
-        super(context);
-        mContext = context;
+    private final Runnable mSaveBlobsInfoRunnable = this::writeBlobsInfo;
+    private final Runnable mSaveSessionsRunnable = this::writeBlobSessions;
 
+    public BlobStoreManagerService(Context context) {
+        this(context, new Injector());
+    }
+
+    @VisibleForTesting
+    BlobStoreManagerService(Context context, Injector injector) {
+        super(context);
+
+        mContext = context;
+        mInjector = injector;
+        mHandler = mInjector.initializeMessageHandler();
+    }
+
+    private static Handler initializeMessageHandler() {
         final HandlerThread handlerThread = new ServiceThread(TAG,
                 Process.THREAD_PRIORITY_BACKGROUND, true /* allowIo */);
         handlerThread.start();
-        mHandler = new Handler(handlerThread.getLooper());
-        Watchdog.getInstance().addThread(mHandler);
+        final Handler handler = new Handler(handlerThread.getLooper());
+        Watchdog.getInstance().addThread(handler);
+        return handler;
     }
 
     @Override
     public void onStart() {
         publishBinderService(Context.BLOB_STORE_SERVICE, new Stub());
+        LocalServices.addService(BlobStoreManagerInternal.class, new LocalService());
 
         mPackageManagerInternal = LocalServices.getService(PackageManagerInternal.class);
         registerReceivers();
@@ -144,6 +174,8 @@
                 readBlobSessionsLocked(allPackages);
                 readBlobsInfoLocked(allPackages);
             }
+        } else if (phase == PHASE_BOOT_COMPLETED) {
+            BlobStoreIdleJobService.schedule(mContext);
         }
     }
 
@@ -181,6 +213,54 @@
         return userBlobs;
     }
 
+    @VisibleForTesting
+    void addUserSessionsForTest(LongSparseArray<BlobStoreSession> userSessions, int userId) {
+        synchronized (mBlobsLock) {
+            mSessions.put(userId, userSessions);
+        }
+    }
+
+    @VisibleForTesting
+    void addUserBlobsForTest(ArrayMap<BlobHandle, BlobMetadata> userBlobs, int userId) {
+        synchronized (mBlobsLock) {
+            mBlobsMap.put(userId, userBlobs);
+        }
+    }
+
+    @VisibleForTesting
+    void addKnownIdsForTest(long... knownIds) {
+        synchronized (mBlobsLock) {
+            for (long id : knownIds) {
+                mKnownBlobIds.add(id);
+            }
+        }
+    }
+
+    @VisibleForTesting
+    Set<Long> getKnownIdsForTest() {
+        synchronized (mBlobsLock) {
+            return mKnownBlobIds;
+        }
+    }
+
+    @GuardedBy("mBlobsLock")
+    private void addSessionForUserLocked(BlobStoreSession session, int userId) {
+        getUserSessionsLocked(userId).put(session.getSessionId(), session);
+        mKnownBlobIds.add(session.getSessionId());
+    }
+
+    @GuardedBy("mBlobsLock")
+    private void addBlobForUserLocked(BlobMetadata blobMetadata, int userId) {
+        addBlobForUserLocked(blobMetadata, getUserBlobsLocked(userId));
+    }
+
+    @GuardedBy("mBlobsLock")
+    private void addBlobForUserLocked(BlobMetadata blobMetadata,
+            ArrayMap<BlobHandle, BlobMetadata> userBlobs) {
+        userBlobs.put(blobMetadata.getBlobHandle(), blobMetadata);
+        mKnownBlobIds.add(blobMetadata.getBlobId());
+    }
+
     private long createSessionInternal(BlobHandle blobHandle,
             int callingUid, String callingPackage) {
         synchronized (mBlobsLock) {
@@ -189,7 +269,11 @@
             final BlobStoreSession session = new BlobStoreSession(mContext,
                     sessionId, blobHandle, callingUid, callingPackage,
                     mSessionStateChangeListener);
-            getUserSessionsLocked(UserHandle.getUserId(callingUid)).put(sessionId, session);
+            addSessionForUserLocked(session, UserHandle.getUserId(callingUid));
+            if (LOGV) {
+                Slog.v(TAG, "Created session for " + blobHandle
+                        + "; callingUid=" + callingUid + ", callingPackage=" + callingPackage);
+            }
             writeBlobSessionsAsync();
             return sessionId;
         }
@@ -217,7 +301,10 @@
                     callingUid, callingPackage);
             session.open();
             session.abandon();
-
+            if (LOGV) {
+                Slog.v(TAG, "Deleted session with id " + sessionId
+                        + "; callingUid=" + callingUid + ", callingPackage=" + callingPackage);
+            }
             writeBlobSessionsAsync();
         }
     }
@@ -237,7 +324,8 @@
     }
 
     private void acquireLeaseInternal(BlobHandle blobHandle, int descriptionResId,
-            long leaseExpiryTimeMillis, int callingUid, String callingPackage) {
+            CharSequence description, long leaseExpiryTimeMillis,
+            int callingUid, String callingPackage) {
         synchronized (mBlobsLock) {
             final BlobMetadata blobMetadata = getUserBlobsLocked(UserHandle.getUserId(callingUid))
                     .get(blobHandle);
@@ -251,7 +339,11 @@
                         "Lease expiry cannot be later than blobs expiry time");
             }
             blobMetadata.addLeasee(callingPackage, callingUid,
-                    descriptionResId, leaseExpiryTimeMillis);
+                    descriptionResId, description, leaseExpiryTimeMillis);
+            if (LOGV) {
+                Slog.v(TAG, "Acquired lease on " + blobHandle
+                        + "; callingUid=" + callingUid + ", callingPackage=" + callingPackage);
+            }
             writeBlobsInfoAsync();
         }
     }
@@ -267,6 +359,10 @@
                         + "; callingUid=" + callingUid + ", callingPackage=" + callingPackage);
             }
             blobMetadata.removeLeasee(callingPackage, callingUid);
+            if (LOGV) {
+                Slog.v(TAG, "Released lease on " + blobHandle
+                        + "; callingUid=" + callingUid + ", callingPackage=" + callingPackage);
+            }
             writeBlobsInfoAsync();
         }
     }
@@ -293,23 +389,27 @@
                 case STATE_ABANDONED:
                 case STATE_VERIFIED_INVALID:
                     session.getSessionFile().delete();
-                    getUserSessionsLocked(UserHandle.getUserId(session.ownerUid))
-                            .remove(session.sessionId);
+                    getUserSessionsLocked(UserHandle.getUserId(session.getOwnerUid()))
+                            .remove(session.getSessionId());
+                    mKnownBlobIds.remove(session.getSessionId());
+                    if (LOGV) {
+                        Slog.v(TAG, "Session is invalid; deleted " + session);
+                    }
                     break;
                 case STATE_COMMITTED:
                     session.verifyBlobData();
                     break;
                 case STATE_VERIFIED_VALID:
-                    final int userId = UserHandle.getUserId(session.ownerUid);
+                    final int userId = UserHandle.getUserId(session.getOwnerUid());
                     final ArrayMap<BlobHandle, BlobMetadata> userBlobs = getUserBlobsLocked(userId);
-                    BlobMetadata blob = userBlobs.get(session.blobHandle);
+                    BlobMetadata blob = userBlobs.get(session.getBlobHandle());
                     if (blob == null) {
                         blob = new BlobMetadata(mContext,
-                                session.sessionId, session.blobHandle, userId);
-                        userBlobs.put(session.blobHandle, blob);
+                                session.getSessionId(), session.getBlobHandle(), userId);
+                        addBlobForUserLocked(blob, userBlobs);
                     }
-                    final Committer newCommitter = new Committer(session.ownerPackageName,
-                            session.ownerUid, session.getBlobAccessMode());
+                    final Committer newCommitter = new Committer(session.getOwnerPackageName(),
+                            session.getOwnerUid(), session.getBlobAccessMode());
                     final Committer existingCommitter = blob.getExistingCommitter(newCommitter);
                     blob.addCommitter(newCommitter);
                     try {
@@ -319,8 +419,11 @@
                         blob.addCommitter(existingCommitter);
                         session.sendCommitCallbackResult(COMMIT_RESULT_ERROR);
                     }
-                    getUserSessionsLocked(UserHandle.getUserId(session.ownerUid))
-                            .remove(session.sessionId);
+                    getUserSessionsLocked(UserHandle.getUserId(session.getOwnerUid()))
+                            .remove(session.getSessionId());
+                    if (LOGV) {
+                        Slog.v(TAG, "Successfully committed session " + session);
+                    }
                     break;
                 default:
                     Slog.wtf(TAG, "Invalid session state: "
@@ -348,7 +451,7 @@
             out.setOutput(fos, StandardCharsets.UTF_8.name());
             out.startDocument(null, true);
             out.startTag(null, TAG_SESSIONS);
-            XmlUtils.writeIntAttribute(out, ATTR_VERSION, CURRENT_XML_VERSION);
+            XmlUtils.writeIntAttribute(out, ATTR_VERSION, XML_VERSION_CURRENT);
 
             for (int i = 0, userCount = mSessions.size(); i < userCount; ++i) {
                 final LongSparseArray<BlobStoreSession> userSessions =
@@ -363,6 +466,9 @@
             out.endTag(null, TAG_SESSIONS);
             out.endDocument();
             sessionsIndexFile.finishWrite(fos);
+            if (LOGV) {
+                Slog.v(TAG, "Finished persisting sessions data");
+            }
         } catch (Exception e) {
             sessionsIndexFile.failWrite(fos);
             Slog.wtf(TAG, "Error writing sessions data", e);
@@ -386,6 +492,7 @@
             final XmlPullParser in = Xml.newPullParser();
             in.setInput(fis, StandardCharsets.UTF_8.name());
             XmlUtils.beginDocument(in, TAG_SESSIONS);
+            final int version = XmlUtils.readIntAttribute(in, ATTR_VERSION);
             while (true) {
                 XmlUtils.nextElement(in);
                 if (in.getEventType() == XmlPullParser.END_DOCUMENT) {
@@ -394,24 +501,27 @@
 
                 if (TAG_SESSION.equals(in.getName())) {
                     final BlobStoreSession session = BlobStoreSession.createFromXml(
-                            in, mContext, mSessionStateChangeListener);
+                            in, version, mContext, mSessionStateChangeListener);
                     if (session == null) {
                         continue;
                     }
                     final SparseArray<String> userPackages = allPackages.get(
-                            UserHandle.getUserId(session.ownerUid));
+                            UserHandle.getUserId(session.getOwnerUid()));
                     if (userPackages != null
-                            && session.ownerPackageName.equals(
-                                    userPackages.get(session.ownerUid))) {
-                        getUserSessionsLocked(UserHandle.getUserId(session.ownerUid)).put(
-                                session.sessionId, session);
+                            && session.getOwnerPackageName().equals(
+                                    userPackages.get(session.getOwnerUid()))) {
+                        addSessionForUserLocked(session,
+                                UserHandle.getUserId(session.getOwnerUid()));
                     } else {
                         // Unknown package or the session data does not belong to this package.
                         session.getSessionFile().delete();
                     }
-                    mCurrentMaxSessionId = Math.max(mCurrentMaxSessionId, session.sessionId);
+                    mCurrentMaxSessionId = Math.max(mCurrentMaxSessionId, session.getSessionId());
                 }
             }
+            if (LOGV) {
+                Slog.v(TAG, "Finished reading sessions data");
+            }
         } catch (Exception e) {
             Slog.wtf(TAG, "Error reading sessions data", e);
         }
@@ -431,7 +541,7 @@
             out.setOutput(fos, StandardCharsets.UTF_8.name());
             out.startDocument(null, true);
             out.startTag(null, TAG_BLOBS);
-            XmlUtils.writeIntAttribute(out, ATTR_VERSION, CURRENT_XML_VERSION);
+            XmlUtils.writeIntAttribute(out, ATTR_VERSION, XML_VERSION_CURRENT);
 
             for (int i = 0, userCount = mBlobsMap.size(); i < userCount; ++i) {
                 final ArrayMap<BlobHandle, BlobMetadata> userBlobs = mBlobsMap.valueAt(i);
@@ -445,6 +555,9 @@
             out.endTag(null, TAG_BLOBS);
             out.endDocument();
             blobsIndexFile.finishWrite(fos);
+            if (LOGV) {
+                Slog.v(TAG, "Finished persisting blobs data");
+            }
         } catch (Exception e) {
             blobsIndexFile.failWrite(fos);
             Slog.wtf(TAG, "Error writing blobs data", e);
@@ -468,6 +581,7 @@
             final XmlPullParser in = Xml.newPullParser();
             in.setInput(fis, StandardCharsets.UTF_8.name());
             XmlUtils.beginDocument(in, TAG_BLOBS);
+            final int version = XmlUtils.readIntAttribute(in, ATTR_VERSION);
             while (true) {
                 XmlUtils.nextElement(in);
                 if (in.getEventType() == XmlPullParser.END_DOCUMENT) {
@@ -475,19 +589,23 @@
                 }
 
                 if (TAG_BLOB.equals(in.getName())) {
-                    final BlobMetadata blobMetadata = BlobMetadata.createFromXml(mContext, in);
-                    final SparseArray<String> userPackages = allPackages.get(blobMetadata.userId);
+                    final BlobMetadata blobMetadata = BlobMetadata.createFromXml(
+                            in, version, mContext);
+                    final SparseArray<String> userPackages = allPackages.get(
+                            blobMetadata.getUserId());
                     if (userPackages == null) {
                         blobMetadata.getBlobFile().delete();
                     } else {
-                        getUserBlobsLocked(blobMetadata.userId).put(
-                                blobMetadata.blobHandle, blobMetadata);
+                        addBlobForUserLocked(blobMetadata, blobMetadata.getUserId());
                         blobMetadata.removeInvalidCommitters(userPackages);
                         blobMetadata.removeInvalidLeasees(userPackages);
                     }
-                    mCurrentMaxSessionId = Math.max(mCurrentMaxSessionId, blobMetadata.blobId);
+                    mCurrentMaxSessionId = Math.max(mCurrentMaxSessionId, blobMetadata.getBlobId());
                 }
             }
+            if (LOGV) {
+                Slog.v(TAG, "Finished reading blobs data");
+            }
         } catch (Exception e) {
             Slog.wtf(TAG, "Error reading blobs data", e);
         }
@@ -504,9 +622,9 @@
     }
 
     private void writeBlobsInfoAsync() {
-        mHandler.post(PooledLambda.obtainRunnable(
-                BlobStoreManagerService::writeBlobsInfo,
-                BlobStoreManagerService.this).recycleOnUse());
+        if (!mHandler.hasCallbacks(mSaveBlobsInfoRunnable)) {
+            mHandler.post(mSaveBlobsInfoRunnable);
+        }
     }
 
     private void writeBlobSessions() {
@@ -520,9 +638,9 @@
     }
 
     private void writeBlobSessionsAsync() {
-        mHandler.post(PooledLambda.obtainRunnable(
-                BlobStoreManagerService::writeBlobSessions,
-                BlobStoreManagerService.this).recycleOnUse());
+        if (!mHandler.hasCallbacks(mSaveSessionsRunnable)) {
+            mHandler.post(mSaveSessionsRunnable);
+        }
     }
 
     private int getPackageUid(String packageName, int userId) {
@@ -568,7 +686,8 @@
         return new AtomicFile(file, "blobs_index" /* commitLogTag */);
     }
 
-    private void handlePackageRemoved(String packageName, int uid) {
+    @VisibleForTesting
+    void handlePackageRemoved(String packageName, int uid) {
         synchronized (mBlobsLock) {
             // Clean up any pending sessions
             final LongSparseArray<BlobStoreSession> userSessions =
@@ -576,25 +695,41 @@
             final ArrayList<Integer> indicesToRemove = new ArrayList<>();
             for (int i = 0, count = userSessions.size(); i < count; ++i) {
                 final BlobStoreSession session = userSessions.valueAt(i);
-                if (session.ownerUid == uid
-                        && session.ownerPackageName.equals(packageName)) {
+                if (session.getOwnerUid() == uid
+                        && session.getOwnerPackageName().equals(packageName)) {
                     session.getSessionFile().delete();
+                    mKnownBlobIds.remove(session.getSessionId());
                     indicesToRemove.add(i);
                 }
             }
             for (int i = 0, count = indicesToRemove.size(); i < count; ++i) {
-                userSessions.removeAt(i);
+                userSessions.removeAt(indicesToRemove.get(i));
             }
+            writeBlobSessionsAsync();
 
             // Remove the package from the committer and leasee list
             final ArrayMap<BlobHandle, BlobMetadata> userBlobs =
                     getUserBlobsLocked(UserHandle.getUserId(uid));
+            indicesToRemove.clear();
             for (int i = 0, count = userBlobs.size(); i < count; ++i) {
                 final BlobMetadata blobMetadata = userBlobs.valueAt(i);
                 blobMetadata.removeCommitter(packageName, uid);
                 blobMetadata.removeLeasee(packageName, uid);
+                // Delete the blob if it doesn't have any active leases.
+                if (!blobMetadata.hasLeases()) {
+                    blobMetadata.getBlobFile().delete();
+                    mKnownBlobIds.remove(blobMetadata.getBlobId());
+                    indicesToRemove.add(i);
+                }
             }
-            // TODO: clean-up blobs which doesn't have any active leases.
+            for (int i = 0, count = indicesToRemove.size(); i < count; ++i) {
+                userBlobs.removeAt(indicesToRemove.get(i));
+            }
+            writeBlobsInfoAsync();
+            if (LOGV) {
+                Slog.v(TAG, "Removed blobs data associated with pkg="
+                        + packageName + ", uid=" + uid);
+            }
         }
     }
 
@@ -606,6 +741,7 @@
                 for (int i = 0, count = userSessions.size(); i < count; ++i) {
                     final BlobStoreSession session = userSessions.valueAt(i);
                     session.getSessionFile().delete();
+                    mKnownBlobIds.remove(session.getSessionId());
                 }
             }
 
@@ -615,14 +751,187 @@
                 for (int i = 0, count = userBlobs.size(); i < count; ++i) {
                     final BlobMetadata blobMetadata = userBlobs.valueAt(i);
                     blobMetadata.getBlobFile().delete();
+                    mKnownBlobIds.remove(blobMetadata.getBlobId());
                 }
             }
+            if (LOGV) {
+                Slog.v(TAG, "Removed blobs data in user " + userId);
+            }
+        }
+    }
+
+    @GuardedBy("mBlobsLock")
+    @VisibleForTesting
+    void handleIdleMaintenanceLocked() {
+        // Cleanup any left over data on disk that is not part of index.
+        final ArrayList<Long> deletedBlobIds = new ArrayList<>();
+        final ArrayList<File> filesToDelete = new ArrayList<>();
+        final File blobsDir = BlobStoreConfig.getBlobsDir();
+        if (blobsDir.exists()) {
+            for (File file : blobsDir.listFiles()) {
+                try {
+                    final long id = Long.parseLong(file.getName());
+                    if (mKnownBlobIds.indexOf(id) < 0) {
+                        filesToDelete.add(file);
+                        deletedBlobIds.add(id);
+                    }
+                } catch (NumberFormatException e) {
+                    Slog.wtf(TAG, "Error parsing the file name: " + file, e);
+                    filesToDelete.add(file);
+                }
+            }
+            for (int i = 0, count = filesToDelete.size(); i < count; ++i) {
+                filesToDelete.get(i).delete();
+            }
+        }
+
+        // Cleanup any stale blobs.
+        for (int i = 0, userCount = mBlobsMap.size(); i < userCount; ++i) {
+            final ArrayMap<BlobHandle, BlobMetadata> userBlobs = mBlobsMap.valueAt(i);
+            userBlobs.entrySet().removeIf(entry -> {
+                final BlobHandle blobHandle = entry.getKey();
+                final BlobMetadata blobMetadata = entry.getValue();
+                boolean shouldRemove = false;
+
+                // Cleanup expired data blobs.
+                if (blobHandle.isExpired()) {
+                    shouldRemove = true;
+                }
+
+                // Cleanup blobs with no active leases.
+                // TODO: Exclude blobs which were just committed.
+                if (!blobMetadata.hasLeases()) {
+                    shouldRemove = true;
+                }
+
+                if (shouldRemove) {
+                    blobMetadata.getBlobFile().delete();
+                    mKnownBlobIds.remove(blobMetadata.getBlobId());
+                    deletedBlobIds.add(blobMetadata.getBlobId());
+                }
+                return shouldRemove;
+            });
+        }
+        writeBlobsInfoAsync();
+
+        // Cleanup any stale sessions.
+        final ArrayList<Integer> indicesToRemove = new ArrayList<>();
+        for (int i = 0, userCount = mSessions.size(); i < userCount; ++i) {
+            final LongSparseArray<BlobStoreSession> userSessions = mSessions.valueAt(i);
+            indicesToRemove.clear();
+            for (int j = 0, sessionsCount = userSessions.size(); j < sessionsCount; ++j) {
+                final BlobStoreSession blobStoreSession = userSessions.valueAt(j);
+                boolean shouldRemove = false;
+
+                // Cleanup sessions which haven't been modified in a while.
+                if (blobStoreSession.getSessionFile().lastModified()
+                        < System.currentTimeMillis() - SESSION_EXPIRY_TIMEOUT_MILLIS) {
+                    shouldRemove = true;
+                }
+
+                // Cleanup sessions with already expired data.
+                if (blobStoreSession.getBlobHandle().isExpired()) {
+                    shouldRemove = true;
+                }
+
+                if (shouldRemove) {
+                    blobStoreSession.getSessionFile().delete();
+                    mKnownBlobIds.remove(blobStoreSession.getSessionId());
+                    indicesToRemove.add(j);
+                    deletedBlobIds.add(blobStoreSession.getSessionId());
+                }
+            }
+            for (int j = 0; j < indicesToRemove.size(); ++j) {
+                userSessions.removeAt(indicesToRemove.get(j));
+            }
+        }
+        if (LOGV) {
+            Slog.v(TAG, "Completed idle maintenance; deleted "
+                    + Arrays.toString(deletedBlobIds.toArray()));
+        }
+        writeBlobSessionsAsync();
+    }
+
+    void runClearAllSessions(@UserIdInt int userId) {
+        synchronized (mBlobsLock) {
+            if (userId == UserHandle.USER_ALL) {
+                mSessions.clear();
+            } else {
+                mSessions.remove(userId);
+            }
+            writeBlobSessionsAsync();
+        }
+    }
+
+    void runClearAllBlobs(@UserIdInt int userId) {
+        synchronized (mBlobsLock) {
+            if (userId == UserHandle.USER_ALL) {
+                mBlobsMap.clear();
+            } else {
+                mBlobsMap.remove(userId);
+            }
+            writeBlobsInfoAsync();
+        }
+    }
+
+    @GuardedBy("mBlobsLock")
+    private void dumpSessionsLocked(IndentingPrintWriter fout, DumpArgs dumpArgs) {
+        for (int i = 0, userCount = mSessions.size(); i < userCount; ++i) {
+            final int userId = mSessions.keyAt(i);
+            if (!dumpArgs.shouldDumpUser(userId)) {
+                continue;
+            }
+            final LongSparseArray<BlobStoreSession> userSessions = mSessions.valueAt(i);
+            fout.println("List of sessions in user #"
+                    + userId + " (" + userSessions.size() + "):");
+            fout.increaseIndent();
+            for (int j = 0, sessionsCount = userSessions.size(); j < sessionsCount; ++j) {
+                final long sessionId = userSessions.keyAt(j);
+                final BlobStoreSession session = userSessions.valueAt(j);
+                if (!dumpArgs.shouldDumpSession(session.getOwnerPackageName(),
+                        session.getOwnerUid(), session.getSessionId())) {
+                    continue;
+                }
+                fout.println("Session #" + sessionId);
+                fout.increaseIndent();
+                session.dump(fout, dumpArgs);
+                fout.decreaseIndent();
+            }
+            fout.decreaseIndent();
+        }
+    }
+
+    @GuardedBy("mBlobsLock")
+    private void dumpBlobsLocked(IndentingPrintWriter fout, DumpArgs dumpArgs) {
+        for (int i = 0, userCount = mBlobsMap.size(); i < userCount; ++i) {
+            final int userId = mBlobsMap.keyAt(i);
+            if (!dumpArgs.shouldDumpUser(userId)) {
+                continue;
+            }
+            final ArrayMap<BlobHandle, BlobMetadata> userBlobs = mBlobsMap.valueAt(i);
+            fout.println("List of blobs in user #"
+                    + userId + " (" + userBlobs.size() + "):");
+            fout.increaseIndent();
+            for (int j = 0, blobsCount = userBlobs.size(); j < blobsCount; ++j) {
+                final BlobMetadata blobMetadata = userBlobs.valueAt(j);
+                if (!dumpArgs.shouldDumpBlob(blobMetadata.getBlobId())) {
+                    continue;
+                }
+                fout.println("Blob #" + blobMetadata.getBlobId());
+                fout.increaseIndent();
+                blobMetadata.dump(fout, dumpArgs);
+                fout.decreaseIndent();
+            }
+            fout.decreaseIndent();
         }
     }
 
     private class PackageChangedReceiver extends BroadcastReceiver {
         @Override
         public void onReceive(Context context, Intent intent) {
+            if (LOGV) {
+                Slog.v(TAG, "Received " + intent);
+            }
             switch (intent.getAction()) {
                 case Intent.ACTION_PACKAGE_FULLY_REMOVED:
                 case Intent.ACTION_PACKAGE_DATA_CLEARED:
@@ -658,10 +967,9 @@
         @IntRange(from = 1)
         public long createSession(@NonNull BlobHandle blobHandle,
                 @NonNull String packageName) {
-            Preconditions.checkNotNull(blobHandle, "blobHandle must not be null");
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
-            // TODO: verify blobHandle.algorithm is sha-256
-            // TODO: assert blobHandle is valid.
+            Objects.requireNonNull(blobHandle, "blobHandle must not be null");
+            blobHandle.assertIsValid();
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
@@ -682,7 +990,7 @@
                 @NonNull String packageName) {
             Preconditions.checkArgumentPositive(sessionId,
                     "sessionId must be positive: " + sessionId);
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
@@ -695,7 +1003,7 @@
                 @NonNull String packageName) {
             Preconditions.checkArgumentPositive(sessionId,
                     "sessionId must be positive: " + sessionId);
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
@@ -706,8 +1014,9 @@
         @Override
         public ParcelFileDescriptor openBlob(@NonNull BlobHandle blobHandle,
                 @NonNull String packageName) {
-            Preconditions.checkNotNull(blobHandle, "blobHandle must not be null");
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
+            Objects.requireNonNull(blobHandle, "blobHandle must not be null");
+            blobHandle.assertIsValid();
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
@@ -727,24 +1036,30 @@
 
         @Override
         public void acquireLease(@NonNull BlobHandle blobHandle, @IdRes int descriptionResId,
-                @CurrentTimeSecondsLong long leaseTimeoutSecs, @NonNull String packageName) {
-            Preconditions.checkNotNull(blobHandle, "blobHandle must not be null");
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
-            Preconditions.checkArgumentPositive(descriptionResId,
-                    "descriptionResId must be positive; value=" + descriptionResId);
+                @Nullable CharSequence description,
+                @CurrentTimeSecondsLong long leaseExpiryTimeMillis, @NonNull String packageName) {
+            Objects.requireNonNull(blobHandle, "blobHandle must not be null");
+            blobHandle.assertIsValid();
+            Preconditions.checkArgument(
+                    ResourceId.isValid(descriptionResId) || description != null,
+                    "Description must be valid; descriptionId=" + descriptionResId
+                            + ", description=" + description);
+            Preconditions.checkArgumentNonnegative(leaseExpiryTimeMillis,
+                    "leaseExpiryTimeMillis must not be negative");
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
 
-            acquireLeaseInternal(blobHandle, descriptionResId, leaseTimeoutSecs,
+            acquireLeaseInternal(blobHandle, descriptionResId, description, leaseExpiryTimeMillis,
                     callingUid, packageName);
         }
 
         @Override
         public void releaseLease(@NonNull BlobHandle blobHandle, @NonNull String packageName) {
-            Preconditions.checkNotNull(blobHandle, "blobHandle must not be null");
-            Preconditions.checkNotNull(packageName, "packageName must not be null");
-
+            Objects.requireNonNull(blobHandle, "blobHandle must not be null");
+            blobHandle.assertIsValid();
+            Objects.requireNonNull(packageName, "packageName must not be null");
 
             final int callingUid = Binder.getCallingUid();
             verifyCallingPackage(callingUid, packageName);
@@ -754,7 +1069,7 @@
 
         @Override
         public void waitForIdle(@NonNull RemoteCallback remoteCallback) {
-            Preconditions.checkNotNull(remoteCallback, "remoteCallback must not be null");
+            Objects.requireNonNull(remoteCallback, "remoteCallback must not be null");
 
             mContext.enforceCallingOrSelfPermission(android.Manifest.permission.DUMP,
                     "Caller is not allowed to call this; caller=" + Binder.getCallingUid());
@@ -766,47 +1081,213 @@
         public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter writer,
                 @Nullable String[] args) {
             // TODO: add proto-based version of this.
-            if (!DumpUtils.checkDumpPermission(mContext, TAG, writer)) return;
+            if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, writer)) return;
+
+            final DumpArgs dumpArgs = DumpArgs.parse(args);
 
             final IndentingPrintWriter fout = new IndentingPrintWriter(writer, "    ");
+            if (dumpArgs.shouldDumpHelp()) {
+                writer.println("dumpsys blob_store [options]:");
+                fout.increaseIndent();
+                dumpArgs.dumpArgsUsage(fout);
+                fout.decreaseIndent();
+                return;
+            }
+
             synchronized (mBlobsLock) {
                 fout.println("mCurrentMaxSessionId: " + mCurrentMaxSessionId);
                 fout.println();
-                for (int i = 0, userCount = mSessions.size(); i < userCount; ++i) {
-                    final int userId = mSessions.keyAt(i);
-                    final LongSparseArray<BlobStoreSession> userSessions = mSessions.valueAt(i);
-                    fout.println("List of sessions in user #"
-                            + userId + " (" + userSessions.size() + "):");
-                    fout.increaseIndent();
-                    for (int j = 0, sessionsCount = userSessions.size(); j < sessionsCount; ++j) {
-                        final long sessionId = userSessions.keyAt(j);
-                        final BlobStoreSession session = userSessions.valueAt(j);
-                        fout.println("Session #" + sessionId);
-                        fout.increaseIndent();
-                        session.dump(fout);
-                        fout.decreaseIndent();
-                    }
-                    fout.decreaseIndent();
+
+                if (dumpArgs.shouldDumpSessions()) {
+                    dumpSessionsLocked(fout, dumpArgs);
+                    fout.println();
                 }
-
-                fout.print("\n\n");
-
-                for (int i = 0, userCount = mBlobsMap.size(); i < userCount; ++i) {
-                    final int userId = mBlobsMap.keyAt(i);
-                    final ArrayMap<BlobHandle, BlobMetadata> userBlobs = mBlobsMap.valueAt(i);
-                    fout.println("List of blobs in user #"
-                            + userId + " (" + userBlobs.size() + "):");
-                    fout.increaseIndent();
-                    for (int j = 0, blobsCount = userBlobs.size(); j < blobsCount; ++j) {
-                        final BlobMetadata blobMetadata = userBlobs.valueAt(j);
-                        fout.println("Blob #" + blobMetadata.blobId);
-                        fout.increaseIndent();
-                        blobMetadata.dump(fout);
-                        fout.decreaseIndent();
-                    }
-                    fout.decreaseIndent();
+                if (dumpArgs.shouldDumpBlobs()) {
+                    dumpBlobsLocked(fout, dumpArgs);
+                    fout.println();
                 }
             }
         }
+
+        @Override
+        public int handleShellCommand(@NonNull ParcelFileDescriptor in,
+                @NonNull ParcelFileDescriptor out, @NonNull ParcelFileDescriptor err,
+                @NonNull String[] args) {
+            return (new BlobStoreManagerShellCommand(BlobStoreManagerService.this)).exec(this,
+                    in.getFileDescriptor(), out.getFileDescriptor(), err.getFileDescriptor(), args);
+        }
+    }
+
+    static final class DumpArgs {
+        private boolean mDumpFull;
+        private final ArrayList<String> mDumpPackages = new ArrayList<>();
+        private final ArrayList<Integer> mDumpUids = new ArrayList<>();
+        private final ArrayList<Integer> mDumpUserIds = new ArrayList<>();
+        private final ArrayList<Long> mDumpBlobIds = new ArrayList<>();
+        private boolean mDumpOnlySelectedSections;
+        private boolean mDumpSessions;
+        private boolean mDumpBlobs;
+        private boolean mDumpHelp;
+
+        public boolean shouldDumpSession(String packageName, int uid, long blobId) {
+            if (!CollectionUtils.isEmpty(mDumpPackages)
+                    && mDumpPackages.indexOf(packageName) < 0) {
+                return false;
+            }
+            if (!CollectionUtils.isEmpty(mDumpUids)
+                    && mDumpUids.indexOf(uid) < 0) {
+                return false;
+            }
+            if (!CollectionUtils.isEmpty(mDumpBlobIds)
+                    && mDumpBlobIds.indexOf(blobId) < 0) {
+                return false;
+            }
+            return true;
+        }
+
+        public boolean shouldDumpSessions() {
+            if (!mDumpOnlySelectedSections) {
+                return true;
+            }
+            return mDumpSessions;
+        }
+
+        public boolean shouldDumpBlobs() {
+            if (!mDumpOnlySelectedSections) {
+                return true;
+            }
+            return mDumpBlobs;
+        }
+
+        public boolean shouldDumpBlob(long blobId) {
+            return CollectionUtils.isEmpty(mDumpBlobIds)
+                    || mDumpBlobIds.indexOf(blobId) >= 0;
+        }
+
+        public boolean shouldDumpFull() {
+            return mDumpFull;
+        }
+
+        public boolean shouldDumpUser(int userId) {
+            return CollectionUtils.isEmpty(mDumpUserIds)
+                    || mDumpUserIds.indexOf(userId) >= 0;
+        }
+
+        public boolean shouldDumpHelp() {
+            return mDumpHelp;
+        }
+
+        private DumpArgs() {}
+
+        public static DumpArgs parse(String[] args) {
+            final DumpArgs dumpArgs = new DumpArgs();
+            if (args == null) {
+                return dumpArgs;
+            }
+
+            for (int i = 0; i < args.length; ++i) {
+                final String opt = args[i];
+                if ("--full".equals(opt) || "-f".equals(opt)) {
+                    final int callingUid = Binder.getCallingUid();
+                    if (callingUid == Process.SHELL_UID || callingUid == Process.ROOT_UID) {
+                        dumpArgs.mDumpFull = true;
+                    }
+                } else if ("--sessions".equals(opt)) {
+                    dumpArgs.mDumpOnlySelectedSections = true;
+                    dumpArgs.mDumpSessions = true;
+                } else if ("--blobs".equals(opt)) {
+                    dumpArgs.mDumpOnlySelectedSections = true;
+                    dumpArgs.mDumpBlobs = true;
+                } else if ("--package".equals(opt) || "-p".equals(opt)) {
+                    dumpArgs.mDumpPackages.add(getStringArgRequired(args, ++i, "packageName"));
+                } else if ("--uid".equals(opt) || "-u".equals(opt)) {
+                    dumpArgs.mDumpUids.add(getIntArgRequired(args, ++i, "uid"));
+                } else if ("--user".equals(opt)) {
+                    dumpArgs.mDumpUserIds.add(getIntArgRequired(args, ++i, "userId"));
+                } else if ("--blob".equals(opt) || "-b".equals(opt)) {
+                    dumpArgs.mDumpBlobIds.add(getLongArgRequired(args, ++i, "blobId"));
+                } else if ("--help".equals(opt) || "-h".equals(opt)) {
+                    dumpArgs.mDumpHelp = true;
+                } else {
+                    // Everything else is assumed to be blob ids.
+                    dumpArgs.mDumpBlobIds.add(getLongArgRequired(args, i, "blobId"));
+                }
+            }
+            return dumpArgs;
+        }
+
+        private static String getStringArgRequired(String[] args, int index, String argName) {
+            if (index >= args.length) {
+                throw new IllegalArgumentException("Missing " + argName);
+            }
+            return args[index];
+        }
+
+        private static int getIntArgRequired(String[] args, int index, String argName) {
+            if (index >= args.length) {
+                throw new IllegalArgumentException("Missing " + argName);
+            }
+            final int value;
+            try {
+                value = Integer.parseInt(args[index]);
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException("Invalid " + argName + ": " + args[index]);
+            }
+            return value;
+        }
+
+        private static long getLongArgRequired(String[] args, int index, String argName) {
+            if (index >= args.length) {
+                throw new IllegalArgumentException("Missing " + argName);
+            }
+            final long value;
+            try {
+                value = Long.parseLong(args[index]);
+            } catch (NumberFormatException e) {
+                throw new IllegalArgumentException("Invalid " + argName + ": " + args[index]);
+            }
+            return value;
+        }
+
+        private void dumpArgsUsage(IndentingPrintWriter pw) {
+            pw.println("--help | -h");
+            printWithIndent(pw, "Dump this help text");
+            pw.println("--sessions");
+            printWithIndent(pw, "Dump only the sessions info");
+            pw.println("--blobs");
+            printWithIndent(pw, "Dump only the committed blobs info");
+            pw.println("--package | -p [package-name]");
+            printWithIndent(pw, "Dump blobs info associated with the given package");
+            pw.println("--uid | -u [uid]");
+            printWithIndent(pw, "Dump blobs info associated with the given uid");
+            pw.println("--user [user-id]");
+            printWithIndent(pw, "Dump blobs info in the given user");
+            pw.println("--blob | -b [session-id | blob-id]");
+            printWithIndent(pw, "Dump blob info corresponding to the given ID");
+            pw.println("--full | -f");
+            printWithIndent(pw, "Dump full unredacted blobs data");
+        }
+
+        private void printWithIndent(IndentingPrintWriter pw, String str) {
+            pw.increaseIndent();
+            pw.println(str);
+            pw.decreaseIndent();
+        }
+    }
+
+    private class LocalService extends BlobStoreManagerInternal {
+        @Override
+        public void onIdleMaintenance() {
+            synchronized (mBlobsLock) {
+                handleIdleMaintenanceLocked();
+            }
+        }
+    }
+
+    @VisibleForTesting
+    static class Injector {
+        public Handler initializeMessageHandler() {
+            return BlobStoreManagerService.initializeMessageHandler();
+        }
     }
 }
\ No newline at end of file
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerShellCommand.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerShellCommand.java
new file mode 100644
index 0000000..3ac30f8
--- /dev/null
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreManagerShellCommand.java
@@ -0,0 +1,111 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.blob;
+
+import android.os.ShellCommand;
+import android.os.UserHandle;
+
+import java.io.PrintWriter;
+
+class BlobStoreManagerShellCommand extends ShellCommand {
+
+    private final BlobStoreManagerService mService;
+
+    BlobStoreManagerShellCommand(BlobStoreManagerService blobStoreManagerService) {
+        mService = blobStoreManagerService;
+    }
+
+    @Override
+    public int onCommand(String cmd) {
+        if (cmd == null) {
+            return handleDefaultCommands(null);
+        }
+        final PrintWriter pw = getOutPrintWriter();
+        switch (cmd) {
+            case "clear-all-sessions":
+                return runClearAllSessions(pw);
+            case "clear-all-blobs":
+                return runClearAllBlobs(pw);
+            default:
+                return handleDefaultCommands(cmd);
+        }
+    }
+
+    private int runClearAllSessions(PrintWriter pw) {
+        final ParsedArgs args = new ParsedArgs();
+        args.userId = UserHandle.USER_ALL;
+
+        if (parseOptions(pw, args) < 0) {
+            return -1;
+        }
+
+        mService.runClearAllSessions(args.userId);
+        return 0;
+    }
+
+    private int runClearAllBlobs(PrintWriter pw) {
+        final ParsedArgs args = new ParsedArgs();
+        args.userId = UserHandle.USER_ALL;
+
+        if (parseOptions(pw, args) < 0) {
+            return -1;
+        }
+
+        mService.runClearAllBlobs(args.userId);
+        return 0;
+    }
+
+    @Override
+    public void onHelp() {
+        final PrintWriter pw = getOutPrintWriter();
+        pw.println("BlobStore service (blob_store) commands:");
+        pw.println("help");
+        pw.println("    Print this help text.");
+        pw.println();
+        pw.println("clear-all-sessions [-u | --user USER_ID]");
+        pw.println("    Remove all sessions.");
+        pw.println("    Options:");
+        pw.println("      -u or --user: specify which user's sessions to be removed;");
+        pw.println("                    If not specified, sessions in all users are removed.");
+        pw.println();
+        pw.println("clear-all-blobs [-u | --user USER_ID]");
+        pw.println("    Remove all blobs.");
+        pw.println("    Options:");
+        pw.println("      -u or --user: specify which user's blobs to be removed;");
+        pw.println("                    If not specified, blobs in all users are removed.");
+        pw.println();
+    }
+
+    private int parseOptions(PrintWriter pw, ParsedArgs args) {
+        String opt;
+        while ((opt = getNextOption()) != null) {
+            switch (opt) {
+                case "-u":
+                case "--user":
+                    args.userId = Integer.parseInt(getNextArgRequired());
+                    break;
+                default:
+                    pw.println("Error: unknown option '" + opt + "'");
+                    return -1;
+            }
+        }
+        return 0;
+    }
+
+    private static class ParsedArgs {
+        public int userId;
+    }
+}
diff --git a/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java b/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java
index 7d1c166..80b4235 100644
--- a/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java
+++ b/apex/blobstore/service/java/com/android/server/blob/BlobStoreSession.java
@@ -21,11 +21,13 @@
 import static android.app.blob.XmlTags.ATTR_UID;
 import static android.app.blob.XmlTags.TAG_ACCESS_MODE;
 import static android.app.blob.XmlTags.TAG_BLOB_HANDLE;
+import static android.os.Trace.TRACE_TAG_SYSTEM_SERVER;
 import static android.system.OsConstants.O_CREAT;
 import static android.system.OsConstants.O_RDONLY;
 import static android.system.OsConstants.O_RDWR;
 import static android.system.OsConstants.SEEK_SET;
 
+import static com.android.server.blob.BlobStoreConfig.LOGV;
 import static com.android.server.blob.BlobStoreConfig.TAG;
 
 import android.annotation.BytesLong;
@@ -40,6 +42,7 @@
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 import android.os.RevocableFileDescriptor;
+import android.os.Trace;
 import android.os.storage.StorageManager;
 import android.system.ErrnoException;
 import android.system.Os;
@@ -47,9 +50,11 @@
 import android.util.Slog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.Preconditions;
 import com.android.internal.util.XmlUtils;
+import com.android.server.blob.BlobStoreManagerService.DumpArgs;
 import com.android.server.blob.BlobStoreManagerService.SessionStateChangeListener;
 
 import org.xmlpull.v1.XmlPullParser;
@@ -62,9 +67,11 @@
 import java.security.NoSuchAlgorithmException;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Objects;
 
 /** TODO: add doc */
-public class BlobStoreSession extends IBlobStoreSession.Stub {
+@VisibleForTesting
+class BlobStoreSession extends IBlobStoreSession.Stub {
 
     static final int STATE_OPENED = 1;
     static final int STATE_CLOSED = 0;
@@ -78,10 +85,10 @@
     private final Context mContext;
     private final SessionStateChangeListener mListener;
 
-    public final BlobHandle blobHandle;
-    public final long sessionId;
-    public final int ownerUid;
-    public final String ownerPackageName;
+    private final BlobHandle mBlobHandle;
+    private final long mSessionId;
+    private final int mOwnerUid;
+    private final String mOwnerPackageName;
 
     // Do not access this directly, instead use getSessionFile().
     private File mSessionFile;
@@ -101,15 +108,31 @@
     BlobStoreSession(Context context, long sessionId, BlobHandle blobHandle,
             int ownerUid, String ownerPackageName, SessionStateChangeListener listener) {
         this.mContext = context;
-        this.blobHandle = blobHandle;
-        this.sessionId = sessionId;
-        this.ownerUid = ownerUid;
-        this.ownerPackageName = ownerPackageName;
+        this.mBlobHandle = blobHandle;
+        this.mSessionId = sessionId;
+        this.mOwnerUid = ownerUid;
+        this.mOwnerPackageName = ownerPackageName;
         this.mListener = listener;
     }
 
+    public BlobHandle getBlobHandle() {
+        return mBlobHandle;
+    }
+
+    public long getSessionId() {
+        return mSessionId;
+    }
+
+    public int getOwnerUid() {
+        return mOwnerUid;
+    }
+
+    public String getOwnerPackageName() {
+        return mOwnerPackageName;
+    }
+
     boolean hasAccess(int callingUid, String callingPackageName) {
-        return ownerUid == callingUid && ownerPackageName.equals(callingPackageName);
+        return mOwnerUid == callingUid && mOwnerPackageName.equals(callingPackageName);
     }
 
     void open() {
@@ -155,6 +178,8 @@
     @NonNull
     public ParcelFileDescriptor openWrite(@BytesLong long offsetBytes,
             @BytesLong long lengthBytes) {
+        Preconditions.checkArgumentNonnegative(offsetBytes, "offsetBytes must not be negative");
+
         assertCallerIsOwner();
         synchronized (mSessionLock) {
             if (mState != STATE_OPENED) {
@@ -242,7 +267,7 @@
     public void allowPackageAccess(@NonNull String packageName,
             @NonNull byte[] certificate) {
         assertCallerIsOwner();
-        Preconditions.checkNotNull(packageName, "packageName must not be null");
+        Objects.requireNonNull(packageName, "packageName must not be null");
         synchronized (mSessionLock) {
             if (mState != STATE_OPENED) {
                 throw new IllegalStateException("Not allowed to change access type in state: "
@@ -280,7 +305,9 @@
     public boolean isPackageAccessAllowed(@NonNull String packageName,
             @NonNull byte[] certificate) {
         assertCallerIsOwner();
-        Preconditions.checkNotNull(packageName, "packageName must not be null");
+        Objects.requireNonNull(packageName, "packageName must not be null");
+        Preconditions.checkByteArrayNotEmpty(certificate, "certificate");
+
         synchronized (mSessionLock) {
             if (mState != STATE_OPENED) {
                 throw new IllegalStateException("Not allowed to get access type in state: "
@@ -357,15 +384,22 @@
     void verifyBlobData() {
         byte[] actualDigest = null;
         try {
-            actualDigest = FileUtils.digest(getSessionFile(), blobHandle.algorithm);
+            Trace.traceBegin(TRACE_TAG_SYSTEM_SERVER,
+                    "computeBlobDigest-i" + mSessionId + "-l" + getSessionFile().length());
+            actualDigest = FileUtils.digest(getSessionFile(), mBlobHandle.algorithm);
         } catch (IOException | NoSuchAlgorithmException e) {
             Slog.e(TAG, "Error computing the digest", e);
+        } finally {
+            Trace.traceEnd(TRACE_TAG_SYSTEM_SERVER);
         }
         synchronized (mSessionLock) {
-            if (actualDigest != null && Arrays.equals(actualDigest, blobHandle.digest)) {
+            if (actualDigest != null && Arrays.equals(actualDigest, mBlobHandle.digest)) {
                 mState = STATE_VERIFIED_VALID;
                 // Commit callback will be sent once the data is persisted.
             } else {
+                if (LOGV) {
+                    Slog.v(TAG, "Digest of the data didn't match the given BlobHandle.digest");
+                }
                 mState = STATE_VERIFIED_INVALID;
                 sendCommitCallbackResult(COMMIT_RESULT_ERROR);
             }
@@ -401,7 +435,7 @@
     @Nullable
     File getSessionFile() {
         if (mSessionFile == null) {
-            mSessionFile = BlobStoreConfig.prepareBlobFile(sessionId);
+            mSessionFile = BlobStoreConfig.prepareBlobFile(mSessionId);
         }
         return mSessionFile;
     }
@@ -423,22 +457,32 @@
         }
     }
 
+    @Override
+    public String toString() {
+        return "BlobStoreSession {"
+                + "id:" + mSessionId
+                + ",handle:" + mBlobHandle
+                + ",uid:" + mOwnerUid
+                + ",pkg:" + mOwnerPackageName
+                + "}";
+    }
+
     private void assertCallerIsOwner() {
         final int callingUid = Binder.getCallingUid();
-        if (callingUid != ownerUid) {
-            throw new SecurityException(ownerUid + " is not the session owner");
+        if (callingUid != mOwnerUid) {
+            throw new SecurityException(mOwnerUid + " is not the session owner");
         }
     }
 
-    void dump(IndentingPrintWriter fout) {
+    void dump(IndentingPrintWriter fout, DumpArgs dumpArgs) {
         synchronized (mSessionLock) {
             fout.println("state: " + stateToString(mState));
-            fout.println("ownerUid: " + ownerUid);
-            fout.println("ownerPkg: " + ownerPackageName);
+            fout.println("ownerUid: " + mOwnerUid);
+            fout.println("ownerPkg: " + mOwnerPackageName);
 
             fout.println("blobHandle:");
             fout.increaseIndent();
-            blobHandle.dump(fout);
+            mBlobHandle.dump(fout, dumpArgs.shouldDumpFull());
             fout.decreaseIndent();
 
             fout.println("accessMode:");
@@ -452,12 +496,12 @@
 
     void writeToXml(@NonNull XmlSerializer out) throws IOException {
         synchronized (mSessionLock) {
-            XmlUtils.writeLongAttribute(out, ATTR_ID, sessionId);
-            XmlUtils.writeStringAttribute(out, ATTR_PACKAGE, ownerPackageName);
-            XmlUtils.writeIntAttribute(out, ATTR_UID, ownerUid);
+            XmlUtils.writeLongAttribute(out, ATTR_ID, mSessionId);
+            XmlUtils.writeStringAttribute(out, ATTR_PACKAGE, mOwnerPackageName);
+            XmlUtils.writeIntAttribute(out, ATTR_UID, mOwnerUid);
 
             out.startTag(null, TAG_BLOB_HANDLE);
-            blobHandle.writeToXml(out);
+            mBlobHandle.writeToXml(out);
             out.endTag(null, TAG_BLOB_HANDLE);
 
             out.startTag(null, TAG_ACCESS_MODE);
@@ -467,7 +511,7 @@
     }
 
     @Nullable
-    static BlobStoreSession createFromXml(@NonNull XmlPullParser in,
+    static BlobStoreSession createFromXml(@NonNull XmlPullParser in, int version,
             @NonNull Context context, @NonNull SessionStateChangeListener stateChangeListener)
             throws IOException, XmlPullParserException {
         final int sessionId = XmlUtils.readIntAttribute(in, ATTR_ID);
diff --git a/apex/extservices/testing/Android.bp b/apex/extservices/testing/Android.bp
new file mode 100644
index 0000000..88a4724
--- /dev/null
+++ b/apex/extservices/testing/Android.bp
@@ -0,0 +1,25 @@
+// 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.
+
+apex_test {
+    name: "test_com.android.extservices",
+    visibility: [
+        "//system/apex/tests",
+    ],
+    defaults: ["com.android.extservices-defaults"],
+    manifest: "test_manifest.json",
+    file_contexts: ":com.android.extservices-file_contexts",
+    // Test APEX, should never be installed
+    installable: false,
+}
diff --git a/apex/extservices/testing/test_manifest.json b/apex/extservices/testing/test_manifest.json
new file mode 100644
index 0000000..23a50e3
--- /dev/null
+++ b/apex/extservices/testing/test_manifest.json
@@ -0,0 +1,4 @@
+{
+  "name": "com.android.extservices",
+  "version": 2147483647
+}
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
index 0bb07ca..088cadb 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobInfo.java
@@ -1287,7 +1287,7 @@
          * {@link #setPeriodic(long)} or {@link #setPersisted(boolean)}.  To continually monitor
          * for content changes, you need to schedule a new JobInfo observing the same URIs
          * before you finish execution of the JobService handling the most recent changes.
-         * Following this pattern will ensure you do not lost any content changes: while your
+         * Following this pattern will ensure you do not lose any content changes: while your
          * job is running, the system will continue monitoring for content changes, and propagate
          * any it sees over to the next job you schedule.</p>
          *
diff --git a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
index 08b1c2b..abf78c6 100644
--- a/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
+++ b/apex/jobscheduler/framework/java/android/app/job/JobScheduler.java
@@ -56,6 +56,12 @@
  * instantiate this class directly; instead, retrieve it through
  * {@link android.content.Context#getSystemService
  * Context.getSystemService(Context.JOB_SCHEDULER_SERVICE)}.
+ *
+ * <p class="caution"><strong>Note:</strong> Beginning with API 30
+ * ({@link android.os.Build.VERSION_CODES#R}), JobScheduler will throttle runaway applications.
+ * Calling {@link #schedule(JobInfo)} and other such methods with very high frequency is indicative
+ * of an app bug and so, to make sure the system doesn't get overwhelmed, JobScheduler will begin
+ * to throttle apps that show buggy behavior, regardless of target SDK version.
  */
 @SystemService(Context.JOB_SCHEDULER_SERVICE)
 public abstract class JobScheduler {
diff --git a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
index 4ffcf8a..4b4fb96 100644
--- a/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
+++ b/apex/jobscheduler/framework/java/android/os/PowerWhitelistManager.java
@@ -80,27 +80,22 @@
     }
 
     /**
-     * Add the specified package to the power save whitelist.
-     *
-     * @return true if the package was successfully added to the whitelist
+     * Add the specified package to the permanent power save whitelist.
      */
     @RequiresPermission(android.Manifest.permission.DEVICE_POWER)
-    public boolean addToWhitelist(@NonNull String packageName) {
-        return addToWhitelist(Collections.singletonList(packageName)) == 1;
+    public void addToWhitelist(@NonNull String packageName) {
+        addToWhitelist(Collections.singletonList(packageName));
     }
 
     /**
-     * Add the specified packages to the power save whitelist.
-     *
-     * @return the number of packages that were successfully added to the whitelist
+     * Add the specified packages to the permanent power save whitelist.
      */
     @RequiresPermission(android.Manifest.permission.DEVICE_POWER)
-    public int addToWhitelist(@NonNull List<String> packageNames) {
+    public void addToWhitelist(@NonNull List<String> packageNames) {
         try {
-            return mService.addPowerSaveWhitelistApps(packageNames);
+            mService.addPowerSaveWhitelistApps(packageNames);
         } catch (RemoteException e) {
             e.rethrowFromSystemServer();
-            return 0;
         }
     }
 
diff --git a/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java b/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java
index d2d942a..dc72d6d 100644
--- a/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java
+++ b/apex/jobscheduler/framework/java/com/android/server/usage/AppStandbyInternal.java
@@ -85,6 +85,7 @@
     /**
      * Checks if an app has been idle for a while and filters out apps that are excluded.
      * It returns false if the current system state allows all apps to be considered active.
+     * This happens if the device is plugged in or otherwise temporarily allowed to make exceptions.
      * Called by interface impls.
      */
     boolean isAppIdleFiltered(String packageName, int appId, int userId,
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 ed5626a..e4c6b52 100644
--- a/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
+++ b/apex/jobscheduler/service/java/com/android/server/job/JobSchedulerService.java
@@ -37,8 +37,6 @@
 import android.app.job.JobWorkItem;
 import android.app.usage.UsageStatsManager;
 import android.app.usage.UsageStatsManagerInternal;
-import android.compat.annotation.ChangeId;
-import android.compat.annotation.EnabledAfter;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.ContentResolver;
@@ -57,7 +55,6 @@
 import android.os.BatteryStats;
 import android.os.BatteryStatsInternal;
 import android.os.Binder;
-import android.os.Build;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -77,7 +74,6 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
@@ -85,12 +81,12 @@
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.server.AppStateTracker;
 import com.android.server.DeviceIdleInternal;
 import com.android.server.FgThread;
 import com.android.server.LocalServices;
-import com.android.server.compat.PlatformCompat;
 import com.android.server.job.JobSchedulerServiceDumpProto.ActiveJob;
 import com.android.server.job.JobSchedulerServiceDumpProto.PendingJob;
 import com.android.server.job.controllers.BackgroundJobsController;
@@ -155,16 +151,6 @@
     /** The maximum number of jobs that we allow an unprivileged app to schedule */
     private static final int MAX_JOBS_PER_APP = 100;
 
-    /**
-     * {@link #schedule(JobInfo)}, {@link #scheduleAsPackage(JobInfo, String, int, String)}, and
-     * {@link #enqueue(JobInfo, JobWorkItem)} will throw a {@link IllegalStateException} if the app
-     * calls the APIs too frequently.
-     */
-    @ChangeId
-    // This means the change will be enabled for target SDK larger than 29 (Q), meaning R and up.
-    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
-    protected static final long CRASH_ON_EXCEEDED_LIMIT = 144363383L;
-
     @VisibleForTesting
     public static Clock sSystemClock = Clock.systemUTC();
 
@@ -264,7 +250,6 @@
 
     private final CountQuotaTracker mQuotaTracker;
     private static final String QUOTA_TRACKER_SCHEDULE_PERSISTED_TAG = ".schedulePersisted()";
-    private final PlatformCompat mPlatformCompat;
 
     /**
      * Queue of pending jobs. The JobServiceContext class will receive jobs from this list
@@ -473,13 +458,17 @@
      */
     public static class Constants {
         // Key names stored in the settings value.
-        private static final String KEY_MIN_IDLE_COUNT = "min_idle_count";
-        private static final String KEY_MIN_CHARGING_COUNT = "min_charging_count";
-        private static final String KEY_MIN_BATTERY_NOT_LOW_COUNT = "min_battery_not_low_count";
-        private static final String KEY_MIN_STORAGE_NOT_LOW_COUNT = "min_storage_not_low_count";
-        private static final String KEY_MIN_CONNECTIVITY_COUNT = "min_connectivity_count";
-        private static final String KEY_MIN_CONTENT_COUNT = "min_content_count";
-        private static final String KEY_MIN_READY_JOBS_COUNT = "min_ready_jobs_count";
+        // TODO(124466289): remove deprecated flags when we migrate to DeviceConfig
+        private static final String DEPRECATED_KEY_MIN_IDLE_COUNT = "min_idle_count";
+        private static final String DEPRECATED_KEY_MIN_CHARGING_COUNT = "min_charging_count";
+        private static final String DEPRECATED_KEY_MIN_BATTERY_NOT_LOW_COUNT =
+                "min_battery_not_low_count";
+        private static final String DEPRECATED_KEY_MIN_STORAGE_NOT_LOW_COUNT =
+                "min_storage_not_low_count";
+        private static final String DEPRECATED_KEY_MIN_CONNECTIVITY_COUNT =
+                "min_connectivity_count";
+        private static final String DEPRECATED_KEY_MIN_CONTENT_COUNT = "min_content_count";
+        private static final String DEPRECATED_KEY_MIN_READY_JOBS_COUNT = "min_ready_jobs_count";
         private static final String KEY_MIN_READY_NON_ACTIVE_JOBS_COUNT =
                 "min_ready_non_active_jobs_count";
         private static final String KEY_MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS =
@@ -494,9 +483,10 @@
         private static final String DEPRECATED_KEY_BG_LOW_JOB_COUNT = "bg_low_job_count";
         private static final String DEPRECATED_KEY_BG_CRITICAL_JOB_COUNT = "bg_critical_job_count";
 
-        private static final String KEY_MAX_STANDARD_RESCHEDULE_COUNT
+        private static final String DEPRECATED_KEY_MAX_STANDARD_RESCHEDULE_COUNT
                 = "max_standard_reschedule_count";
-        private static final String KEY_MAX_WORK_RESCHEDULE_COUNT = "max_work_reschedule_count";
+        private static final String DEPRECATED_KEY_MAX_WORK_RESCHEDULE_COUNT =
+                "max_work_reschedule_count";
         private static final String KEY_MIN_LINEAR_BACKOFF_TIME = "min_linear_backoff_time";
         private static final String KEY_MIN_EXP_BACKOFF_TIME = "min_exp_backoff_time";
         private static final String DEPRECATED_KEY_STANDBY_HEARTBEAT_TIME =
@@ -514,19 +504,10 @@
         private static final String KEY_API_QUOTA_SCHEDULE_THROW_EXCEPTION =
                 "aq_schedule_throw_exception";
 
-        private static final int DEFAULT_MIN_IDLE_COUNT = 1;
-        private static final int DEFAULT_MIN_CHARGING_COUNT = 1;
-        private static final int DEFAULT_MIN_BATTERY_NOT_LOW_COUNT = 1;
-        private static final int DEFAULT_MIN_STORAGE_NOT_LOW_COUNT = 1;
-        private static final int DEFAULT_MIN_CONNECTIVITY_COUNT = 1;
-        private static final int DEFAULT_MIN_CONTENT_COUNT = 1;
-        private static final int DEFAULT_MIN_READY_JOBS_COUNT = 1;
         private static final int DEFAULT_MIN_READY_NON_ACTIVE_JOBS_COUNT = 5;
         private static final long DEFAULT_MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS = 31 * MINUTE_IN_MILLIS;
         private static final float DEFAULT_HEAVY_USE_FACTOR = .9f;
         private static final float DEFAULT_MODERATE_USE_FACTOR = .5f;
-        private static final int DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT = Integer.MAX_VALUE;
-        private static final int DEFAULT_MAX_WORK_RESCHEDULE_COUNT = Integer.MAX_VALUE;
         private static final long DEFAULT_MIN_LINEAR_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS;
         private static final long DEFAULT_MIN_EXP_BACKOFF_TIME = JobInfo.MIN_BACKOFF_MILLIS;
         private static final float DEFAULT_CONN_CONGESTION_DELAY_FRAC = 0.5f;
@@ -537,44 +518,6 @@
         private static final boolean DEFAULT_API_QUOTA_SCHEDULE_THROW_EXCEPTION = true;
 
         /**
-         * Minimum # of idle jobs that must be ready in order to force the JMS to schedule things
-         * early.
-         */
-        int MIN_IDLE_COUNT = DEFAULT_MIN_IDLE_COUNT;
-        /**
-         * Minimum # of charging jobs that must be ready in order to force the JMS to schedule
-         * things early.
-         */
-        int MIN_CHARGING_COUNT = DEFAULT_MIN_CHARGING_COUNT;
-        /**
-         * Minimum # of "battery not low" jobs that must be ready in order to force the JMS to
-         * schedule things early.
-         */
-        int MIN_BATTERY_NOT_LOW_COUNT = DEFAULT_MIN_BATTERY_NOT_LOW_COUNT;
-        /**
-         * Minimum # of "storage not low" jobs that must be ready in order to force the JMS to
-         * schedule things early.
-         */
-        int MIN_STORAGE_NOT_LOW_COUNT = DEFAULT_MIN_STORAGE_NOT_LOW_COUNT;
-        /**
-         * Minimum # of connectivity jobs that must be ready in order to force the JMS to schedule
-         * things early.  1 == Run connectivity jobs as soon as ready.
-         */
-        int MIN_CONNECTIVITY_COUNT = DEFAULT_MIN_CONNECTIVITY_COUNT;
-        /**
-         * Minimum # of content trigger jobs that must be ready in order to force the JMS to
-         * schedule things early.
-         */
-        int MIN_CONTENT_COUNT = DEFAULT_MIN_CONTENT_COUNT;
-        /**
-         * Minimum # of jobs (with no particular constraints) for which the JMS will be happy
-         * running some work early.  This (and thus the other min counts) is now set to 1, to
-         * prevent any batching at this level.  Since we now do batching through doze, that is
-         * a much better mechanism.
-         */
-        int MIN_READY_JOBS_COUNT = DEFAULT_MIN_READY_JOBS_COUNT;
-
-        /**
          * Minimum # of non-ACTIVE jobs for which the JMS will be happy running some work early.
          */
         int MIN_READY_NON_ACTIVE_JOBS_COUNT = DEFAULT_MIN_READY_NON_ACTIVE_JOBS_COUNT;
@@ -640,16 +583,6 @@
                         "screen_off_job_concurrency_increase_delay_ms", 30_000);
 
         /**
-         * The maximum number of times we allow a job to have itself rescheduled before
-         * giving up on it, for standard jobs.
-         */
-        int MAX_STANDARD_RESCHEDULE_COUNT = DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT;
-        /**
-         * The maximum number of times we allow a job to have itself rescheduled before
-         * giving up on it, for jobs that are executing work.
-         */
-        int MAX_WORK_RESCHEDULE_COUNT = DEFAULT_MAX_WORK_RESCHEDULE_COUNT;
-        /**
          * The minimum backoff time to allow for linear backoff.
          */
         long MIN_LINEAR_BACKOFF_TIME = DEFAULT_MIN_LINEAR_BACKOFF_TIME;
@@ -698,20 +631,6 @@
                 Slog.e(TAG, "Bad jobscheduler settings", e);
             }
 
-            MIN_IDLE_COUNT = mParser.getInt(KEY_MIN_IDLE_COUNT,
-                    DEFAULT_MIN_IDLE_COUNT);
-            MIN_CHARGING_COUNT = mParser.getInt(KEY_MIN_CHARGING_COUNT,
-                    DEFAULT_MIN_CHARGING_COUNT);
-            MIN_BATTERY_NOT_LOW_COUNT = mParser.getInt(KEY_MIN_BATTERY_NOT_LOW_COUNT,
-                    DEFAULT_MIN_BATTERY_NOT_LOW_COUNT);
-            MIN_STORAGE_NOT_LOW_COUNT = mParser.getInt(KEY_MIN_STORAGE_NOT_LOW_COUNT,
-                    DEFAULT_MIN_STORAGE_NOT_LOW_COUNT);
-            MIN_CONNECTIVITY_COUNT = mParser.getInt(KEY_MIN_CONNECTIVITY_COUNT,
-                    DEFAULT_MIN_CONNECTIVITY_COUNT);
-            MIN_CONTENT_COUNT = mParser.getInt(KEY_MIN_CONTENT_COUNT,
-                    DEFAULT_MIN_CONTENT_COUNT);
-            MIN_READY_JOBS_COUNT = mParser.getInt(KEY_MIN_READY_JOBS_COUNT,
-                    DEFAULT_MIN_READY_JOBS_COUNT);
             MIN_READY_NON_ACTIVE_JOBS_COUNT = mParser.getInt(
                     KEY_MIN_READY_NON_ACTIVE_JOBS_COUNT,
                     DEFAULT_MIN_READY_NON_ACTIVE_JOBS_COUNT);
@@ -735,10 +654,6 @@
 
             SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.parse(mParser);
 
-            MAX_STANDARD_RESCHEDULE_COUNT = mParser.getInt(KEY_MAX_STANDARD_RESCHEDULE_COUNT,
-                    DEFAULT_MAX_STANDARD_RESCHEDULE_COUNT);
-            MAX_WORK_RESCHEDULE_COUNT = mParser.getInt(KEY_MAX_WORK_RESCHEDULE_COUNT,
-                    DEFAULT_MAX_WORK_RESCHEDULE_COUNT);
             MIN_LINEAR_BACKOFF_TIME = mParser.getDurationMillis(KEY_MIN_LINEAR_BACKOFF_TIME,
                     DEFAULT_MIN_LINEAR_BACKOFF_TIME);
             MIN_EXP_BACKOFF_TIME = mParser.getDurationMillis(KEY_MIN_EXP_BACKOFF_TIME,
@@ -764,13 +679,6 @@
         void dump(IndentingPrintWriter pw) {
             pw.println("Settings:");
             pw.increaseIndent();
-            pw.printPair(KEY_MIN_IDLE_COUNT, MIN_IDLE_COUNT).println();
-            pw.printPair(KEY_MIN_CHARGING_COUNT, MIN_CHARGING_COUNT).println();
-            pw.printPair(KEY_MIN_BATTERY_NOT_LOW_COUNT, MIN_BATTERY_NOT_LOW_COUNT).println();
-            pw.printPair(KEY_MIN_STORAGE_NOT_LOW_COUNT, MIN_STORAGE_NOT_LOW_COUNT).println();
-            pw.printPair(KEY_MIN_CONNECTIVITY_COUNT, MIN_CONNECTIVITY_COUNT).println();
-            pw.printPair(KEY_MIN_CONTENT_COUNT, MIN_CONTENT_COUNT).println();
-            pw.printPair(KEY_MIN_READY_JOBS_COUNT, MIN_READY_JOBS_COUNT).println();
             pw.printPair(KEY_MIN_READY_NON_ACTIVE_JOBS_COUNT,
                     MIN_READY_NON_ACTIVE_JOBS_COUNT).println();
             pw.printPair(KEY_MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS,
@@ -790,8 +698,6 @@
 
             SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.dump(pw, "");
 
-            pw.printPair(KEY_MAX_STANDARD_RESCHEDULE_COUNT, MAX_STANDARD_RESCHEDULE_COUNT).println();
-            pw.printPair(KEY_MAX_WORK_RESCHEDULE_COUNT, MAX_WORK_RESCHEDULE_COUNT).println();
             pw.printPair(KEY_MIN_LINEAR_BACKOFF_TIME, MIN_LINEAR_BACKOFF_TIME).println();
             pw.printPair(KEY_MIN_EXP_BACKOFF_TIME, MIN_EXP_BACKOFF_TIME).println();
             pw.printPair(KEY_CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC).println();
@@ -807,13 +713,6 @@
         }
 
         void dump(ProtoOutputStream proto) {
-            proto.write(ConstantsProto.MIN_IDLE_COUNT, MIN_IDLE_COUNT);
-            proto.write(ConstantsProto.MIN_CHARGING_COUNT, MIN_CHARGING_COUNT);
-            proto.write(ConstantsProto.MIN_BATTERY_NOT_LOW_COUNT, MIN_BATTERY_NOT_LOW_COUNT);
-            proto.write(ConstantsProto.MIN_STORAGE_NOT_LOW_COUNT, MIN_STORAGE_NOT_LOW_COUNT);
-            proto.write(ConstantsProto.MIN_CONNECTIVITY_COUNT, MIN_CONNECTIVITY_COUNT);
-            proto.write(ConstantsProto.MIN_CONTENT_COUNT, MIN_CONTENT_COUNT);
-            proto.write(ConstantsProto.MIN_READY_JOBS_COUNT, MIN_READY_JOBS_COUNT);
             proto.write(ConstantsProto.MIN_READY_NON_ACTIVE_JOBS_COUNT,
                     MIN_READY_NON_ACTIVE_JOBS_COUNT);
             proto.write(ConstantsProto.MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS,
@@ -827,8 +726,6 @@
             SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS.dumpProto(proto,
                     ConstantsProto.SCREEN_OFF_JOB_CONCURRENCY_INCREASE_DELAY_MS);
 
-            proto.write(ConstantsProto.MAX_STANDARD_RESCHEDULE_COUNT, MAX_STANDARD_RESCHEDULE_COUNT);
-            proto.write(ConstantsProto.MAX_WORK_RESCHEDULE_COUNT, MAX_WORK_RESCHEDULE_COUNT);
             proto.write(ConstantsProto.MIN_LINEAR_BACKOFF_TIME_MS, MIN_LINEAR_BACKOFF_TIME);
             proto.write(ConstantsProto.MIN_EXP_BACKOFF_TIME_MS, MIN_EXP_BACKOFF_TIME);
             proto.write(ConstantsProto.CONN_CONGESTION_DELAY_FRAC, CONN_CONGESTION_DELAY_FRAC);
@@ -1074,9 +971,7 @@
                 Slog.e(TAG, userId + "-" + pkg + " has called schedule() too many times");
                 mAppStandbyInternal.restrictApp(
                         pkg, userId, UsageStatsManager.REASON_SUB_RESTRICT_BUGGY);
-                if (mConstants.API_QUOTA_SCHEDULE_THROW_EXCEPTION
-                        && mPlatformCompat.isChangeEnabledByPackageName(
-                                CRASH_ON_EXCEEDED_LIMIT, pkg, userId)) {
+                if (mConstants.API_QUOTA_SCHEDULE_THROW_EXCEPTION) {
                     final boolean isDebuggable;
                     synchronized (mLock) {
                         if (!mDebuggableApps.containsKey(packageName)) {
@@ -1171,9 +1066,9 @@
                 jobStatus.enqueueWorkLocked(work);
             }
 
-            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED,
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED,
                     uId, null, jobStatus.getBatteryName(),
-                    StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED,
+                    FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__SCHEDULED,
                     JobProtoEnums.STOP_REASON_CANCELLED, jobStatus.getStandbyBucket(),
                     jobStatus.getJobId());
 
@@ -1390,18 +1285,8 @@
                     // Effective standby bucket can change after this in some situations so use
                     // the real bucket so that the job is tracked by the controllers.
                     if (js.getStandbyBucket() == RESTRICTED_INDEX) {
-                        js.addDynamicConstraint(JobStatus.CONSTRAINT_BATTERY_NOT_LOW);
-                        js.addDynamicConstraint(JobStatus.CONSTRAINT_CHARGING);
-                        js.addDynamicConstraint(JobStatus.CONSTRAINT_CONNECTIVITY);
-                        js.addDynamicConstraint(JobStatus.CONSTRAINT_IDLE);
-
                         mRestrictiveControllers.get(j).startTrackingRestrictedJobLocked(js);
                     } else {
-                        js.removeDynamicConstraint(JobStatus.CONSTRAINT_BATTERY_NOT_LOW);
-                        js.removeDynamicConstraint(JobStatus.CONSTRAINT_CHARGING);
-                        js.removeDynamicConstraint(JobStatus.CONSTRAINT_CONNECTIVITY);
-                        js.removeDynamicConstraint(JobStatus.CONSTRAINT_IDLE);
-
                         mRestrictiveControllers.get(j).stopTrackingRestrictedJobLocked(js);
                     }
                 }
@@ -1468,8 +1353,6 @@
         // Set up the app standby bucketing tracker
         mStandbyTracker = new StandbyTracker();
         mUsageStats = LocalServices.getService(UsageStatsManagerInternal.class);
-        mPlatformCompat =
-                (PlatformCompat) ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
         mQuotaTracker = new CountQuotaTracker(context, Categorizer.SINGLE_CATEGORIZER);
         mQuotaTracker.setCountLimit(Category.SINGLE_CATEGORY,
                 mConstants.API_QUOTA_SCHEDULE_COUNT,
@@ -1738,19 +1621,6 @@
         final int backoffAttempts = failureToReschedule.getNumFailures() + 1;
         long delayMillis;
 
-        if (failureToReschedule.hasWorkLocked()) {
-            if (backoffAttempts > mConstants.MAX_WORK_RESCHEDULE_COUNT) {
-                Slog.w(TAG, "Not rescheduling " + failureToReschedule + ": attempt #"
-                        + backoffAttempts + " > work limit "
-                        + mConstants.MAX_STANDARD_RESCHEDULE_COUNT);
-                return null;
-            }
-        } else if (backoffAttempts > mConstants.MAX_STANDARD_RESCHEDULE_COUNT) {
-            Slog.w(TAG, "Not rescheduling " + failureToReschedule + ": attempt #"
-                    + backoffAttempts + " > std limit " + mConstants.MAX_STANDARD_RESCHEDULE_COUNT);
-            return null;
-        }
-
         switch (job.getBackoffPolicy()) {
             case JobInfo.BACKOFF_POLICY_LINEAR: {
                 long backoff = initialBackoffMillis;
@@ -2148,13 +2018,6 @@
      * policies on when we want to execute jobs.
      */
     final class MaybeReadyJobQueueFunctor implements Consumer<JobStatus> {
-        int chargingCount;
-        int batteryNotLowCount;
-        int storageNotLowCount;
-        int idleCount;
-        int backoffCount;
-        int connectivityCount;
-        int contentCount;
         int forceBatchedCount;
         int unbatchedCount;
         final List<JobStatus> runnableJobs = new ArrayList<>();
@@ -2177,13 +2040,25 @@
                     }
                 } catch (RemoteException e) {
                 }
+
+                final boolean shouldForceBatchJob;
                 // Restricted jobs must always be batched
-                if (job.getEffectiveStandbyBucket() == RESTRICTED_INDEX
-                        || (mConstants.MIN_READY_NON_ACTIVE_JOBS_COUNT > 1
-                        && job.getEffectiveStandbyBucket() != ACTIVE_INDEX
-                        && (job.getFirstForceBatchedTimeElapsed() == 0
-                        || sElapsedRealtimeClock.millis() - job.getFirstForceBatchedTimeElapsed()
-                                < mConstants.MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS))) {
+                if (job.getEffectiveStandbyBucket() == RESTRICTED_INDEX) {
+                    shouldForceBatchJob = true;
+                } else if (job.getNumFailures() > 0) {
+                    shouldForceBatchJob = false;
+                } else {
+                    final long nowElapsed = sElapsedRealtimeClock.millis();
+                    final boolean batchDelayExpired = job.getFirstForceBatchedTimeElapsed() > 0
+                            && nowElapsed - job.getFirstForceBatchedTimeElapsed()
+                            >= mConstants.MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS;
+                    shouldForceBatchJob =
+                            mConstants.MIN_READY_NON_ACTIVE_JOBS_COUNT > 1
+                                    && job.getEffectiveStandbyBucket() != ACTIVE_INDEX
+                                    && !batchDelayExpired;
+                }
+
+                if (shouldForceBatchJob) {
                     // Force batching non-ACTIVE jobs. Don't include them in the other counts.
                     forceBatchedCount++;
                     if (job.getFirstForceBatchedTimeElapsed() == 0) {
@@ -2191,27 +2066,6 @@
                     }
                 } else {
                     unbatchedCount++;
-                    if (job.getNumFailures() > 0) {
-                        backoffCount++;
-                    }
-                    if (job.hasIdleConstraint()) {
-                        idleCount++;
-                    }
-                    if (job.hasConnectivityConstraint()) {
-                        connectivityCount++;
-                    }
-                    if (job.hasChargingConstraint()) {
-                        chargingCount++;
-                    }
-                    if (job.hasBatteryNotLowConstraint()) {
-                        batteryNotLowCount++;
-                    }
-                    if (job.hasStorageNotLowConstraint()) {
-                        storageNotLowCount++;
-                    }
-                    if (job.hasContentTriggerConstraint()) {
-                        contentCount++;
-                    }
                 }
                 runnableJobs.add(job);
             } else {
@@ -2220,16 +2074,8 @@
         }
 
         public void postProcess() {
-            if (backoffCount > 0 ||
-                    idleCount >= mConstants.MIN_IDLE_COUNT ||
-                    connectivityCount >= mConstants.MIN_CONNECTIVITY_COUNT ||
-                    chargingCount >= mConstants.MIN_CHARGING_COUNT ||
-                    batteryNotLowCount >= mConstants.MIN_BATTERY_NOT_LOW_COUNT ||
-                    storageNotLowCount >= mConstants.MIN_STORAGE_NOT_LOW_COUNT ||
-                    contentCount >= mConstants.MIN_CONTENT_COUNT ||
-                    forceBatchedCount >= mConstants.MIN_READY_NON_ACTIVE_JOBS_COUNT ||
-                    (unbatchedCount > 0 && (unbatchedCount + forceBatchedCount)
-                            >= mConstants.MIN_READY_JOBS_COUNT)) {
+            if (unbatchedCount > 0
+                    || forceBatchedCount >= mConstants.MIN_READY_NON_ACTIVE_JOBS_COUNT) {
                 if (DEBUG) {
                     Slog.d(TAG, "maybeQueueReadyJobsForExecutionLocked: Running jobs.");
                 }
@@ -2250,13 +2096,6 @@
 
         @VisibleForTesting
         void reset() {
-            chargingCount = 0;
-            idleCount =  0;
-            backoffCount = 0;
-            connectivityCount = 0;
-            batteryNotLowCount = 0;
-            storageNotLowCount = 0;
-            contentCount = 0;
             forceBatchedCount = 0;
             unbatchedCount = 0;
             runnableJobs.clear();
@@ -2567,7 +2406,8 @@
                 BatteryStatsInternal mBatteryStatsInternal = LocalServices.getService
                         (BatteryStatsInternal.class);
                 mBatteryStatsInternal.noteJobsDeferred(uid, counter.numDeferred(), sinceLast);
-                StatsLog.write_non_chained(StatsLog.DEFERRED_JOB_STATS_REPORTED, uid, null,
+                FrameworkStatsLog.write_non_chained(
+                        FrameworkStatsLog.DEFERRED_JOB_STATS_REPORTED, uid, null,
                         counter.numDeferred(), sinceLast);
             }
         }
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 dbdce70..1e89158 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
@@ -17,6 +17,8 @@
 package com.android.server.job.controllers;
 
 import static com.android.server.job.JobSchedulerService.ACTIVE_INDEX;
+import static com.android.server.job.JobSchedulerService.NEVER_INDEX;
+import static com.android.server.job.JobSchedulerService.RESTRICTED_INDEX;
 import static com.android.server.job.JobSchedulerService.sElapsedRealtimeClock;
 
 import android.app.AppGlobals;
@@ -32,10 +34,10 @@
 import android.util.ArraySet;
 import android.util.Pair;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.job.GrantedUriPermissions;
 import com.android.server.job.JobSchedulerInternal;
@@ -63,26 +65,36 @@
  * @hide
  */
 public final class JobStatus {
-    static final String TAG = "JobSchedulerService";
+    private static final String TAG = "JobScheduler.JobStatus";
     static final boolean DEBUG = JobSchedulerService.DEBUG;
 
     public static final long NO_LATEST_RUNTIME = Long.MAX_VALUE;
     public static final long NO_EARLIEST_RUNTIME = 0L;
 
-    public static final int CONSTRAINT_CHARGING = JobInfo.CONSTRAINT_FLAG_CHARGING; // 1 < 0
-    public static final int CONSTRAINT_IDLE = JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE;  // 1 << 2
-    public static final int CONSTRAINT_BATTERY_NOT_LOW =
-            JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW; // 1 << 1
+    static final int CONSTRAINT_CHARGING = JobInfo.CONSTRAINT_FLAG_CHARGING; // 1 < 0
+    static final int CONSTRAINT_IDLE = JobInfo.CONSTRAINT_FLAG_DEVICE_IDLE;  // 1 << 2
+    static final int CONSTRAINT_BATTERY_NOT_LOW = JobInfo.CONSTRAINT_FLAG_BATTERY_NOT_LOW; // 1 << 1
     static final int CONSTRAINT_STORAGE_NOT_LOW = JobInfo.CONSTRAINT_FLAG_STORAGE_NOT_LOW; // 1 << 3
     static final int CONSTRAINT_TIMING_DELAY = 1<<31;
     static final int CONSTRAINT_DEADLINE = 1<<30;
-    public static final int CONSTRAINT_CONNECTIVITY = 1 << 28;
+    static final int CONSTRAINT_CONNECTIVITY = 1 << 28;
     static final int CONSTRAINT_CONTENT_TRIGGER = 1<<26;
     static final int CONSTRAINT_DEVICE_NOT_DOZING = 1 << 25; // Implicit constraint
     static final int CONSTRAINT_WITHIN_QUOTA = 1 << 24;      // Implicit constraint
     static final int CONSTRAINT_BACKGROUND_NOT_RESTRICTED = 1 << 22; // Implicit constraint
 
     /**
+     * The additional set of dynamic constraints that must be met if the job's effective bucket is
+     * {@link JobSchedulerService#RESTRICTED_INDEX}. Connectivity can be ignored if the job doesn't
+     * need network.
+     */
+    private static final int DYNAMIC_RESTRICTED_CONSTRAINTS =
+            CONSTRAINT_BATTERY_NOT_LOW
+                    | CONSTRAINT_CHARGING
+                    | CONSTRAINT_CONNECTIVITY
+                    | CONSTRAINT_IDLE;
+
+    /**
      * The constraints that we want to log to statsd.
      *
      * Constraints that can be inferred from other atoms have been excluded to avoid logging too
@@ -419,7 +431,11 @@
         this.requiredConstraints = requiredConstraints;
         mRequiredConstraintsOfInterest = requiredConstraints & CONSTRAINTS_OF_INTEREST;
         mReadyNotDozing = (job.getFlags() & JobInfo.FLAG_WILL_BE_FOREGROUND) != 0;
-        mReadyDynamicSatisfied = true;
+        if (standbyBucket == RESTRICTED_INDEX) {
+            addDynamicConstraints(DYNAMIC_RESTRICTED_CONSTRAINTS);
+        } else {
+            mReadyDynamicSatisfied = true;
+        }
 
         mLastSuccessfulRunTime = lastSuccessfulRunTime;
         mLastFailedRunTime = lastFailedRunTime;
@@ -727,6 +743,14 @@
     }
 
     public void setStandbyBucket(int newBucket) {
+        if (newBucket == RESTRICTED_INDEX) {
+            // Adding to the bucket.
+            addDynamicConstraints(DYNAMIC_RESTRICTED_CONSTRAINTS);
+        } else if (standbyBucket == RESTRICTED_INDEX) {
+            // Removing from the RESTRICTED bucket.
+            removeDynamicConstraints(DYNAMIC_RESTRICTED_CONSTRAINTS);
+        }
+
         standbyBucket = newBucket;
     }
 
@@ -1054,15 +1078,22 @@
         if (old == state) {
             return false;
         }
+        if (DEBUG) {
+            Slog.v(TAG,
+                    "Constraint " + constraint + " is " + (!state ? "NOT " : "") + "satisfied for "
+                            + toShortString());
+        }
         satisfiedConstraints = (satisfiedConstraints&~constraint) | (state ? constraint : 0);
         mSatisfiedConstraintsOfInterest = satisfiedConstraints & CONSTRAINTS_OF_INTEREST;
         mReadyDynamicSatisfied =
                 mDynamicConstraints == (satisfiedConstraints & mDynamicConstraints);
         if (STATS_LOG_ENABLED && (STATSD_CONSTRAINTS_TO_LOG & constraint) != 0) {
-            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED,
+            FrameworkStatsLog.write_non_chained(
+                    FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED,
                     sourceUid, null, getBatteryName(), getProtoConstraint(constraint),
-                    state ? StatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED
-                            : StatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED);
+                    state ? FrameworkStatsLog.SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__SATISFIED
+                            : FrameworkStatsLog
+                                    .SCHEDULED_JOB_CONSTRAINT_CHANGED__STATE__UNSATISFIED);
         }
         return true;
     }
@@ -1084,38 +1115,40 @@
     }
 
     /**
-     * Indicates that this job cannot run without the specified constraint. This is evaluated
+     * Indicates that this job cannot run without the specified constraints. This is evaluated
      * separately from the job's explicitly requested constraints and MUST be satisfied before
      * the job can run if the app doesn't have quota.
-     *
      */
-    public void addDynamicConstraint(int constraint) {
-        if (constraint == CONSTRAINT_WITHIN_QUOTA) {
+    private void addDynamicConstraints(int constraints) {
+        if ((constraints & CONSTRAINT_WITHIN_QUOTA) != 0) {
+            // Quota should never be used as a dynamic constraint.
             Slog.wtf(TAG, "Tried to set quota as a dynamic constraint");
-            return;
+            constraints &= ~CONSTRAINT_WITHIN_QUOTA;
         }
 
         // Connectivity and content trigger are special since they're only valid to add if the
         // job has requested network or specific content URIs. Adding these constraints to jobs
         // that don't need them doesn't make sense.
-        if ((constraint == CONSTRAINT_CONNECTIVITY && !hasConnectivityConstraint())
-                || (constraint == CONSTRAINT_CONTENT_TRIGGER && !hasContentTriggerConstraint())) {
-            return;
+        if (!hasConnectivityConstraint()) {
+            constraints &= ~CONSTRAINT_CONNECTIVITY;
+        }
+        if (!hasContentTriggerConstraint()) {
+            constraints &= ~CONSTRAINT_CONTENT_TRIGGER;
         }
 
-        mDynamicConstraints |= constraint;
+        mDynamicConstraints |= constraints;
         mReadyDynamicSatisfied =
                 mDynamicConstraints == (satisfiedConstraints & mDynamicConstraints);
     }
 
     /**
-     * Removes a dynamic constraint from a job, meaning that the requirement is not required for
+     * Removes dynamic constraints from a job, meaning that the requirements are not required for
      * the job to run (if the job itself hasn't requested the constraint. This is separate from
      * the job's explicitly requested constraints and does not remove those requested constraints.
      *
      */
-    public void removeDynamicConstraint(int constraint) {
-        mDynamicConstraints &= ~constraint;
+    private void removeDynamicConstraints(int constraints) {
+        mDynamicConstraints &= ~constraints;
         mReadyDynamicSatisfied =
                 mDynamicConstraints == (satisfiedConstraints & mDynamicConstraints);
     }
@@ -1191,7 +1224,11 @@
 
     private boolean isReady(int satisfiedConstraints) {
         // Quota and dynamic constraints trump all other constraints.
-        if (!mReadyWithinQuota && !mReadyDynamicSatisfied) {
+        // NEVER jobs are not supposed to run at all. Since we're using quota to allow parole
+        // sessions (exempt from dynamic restrictions), we need the additional check to ensure
+        // that NEVER jobs don't run.
+        // TODO: cleanup quota and standby bucket management so we don't need the additional checks
+        if ((!mReadyWithinQuota && !mReadyDynamicSatisfied) || standbyBucket == NEVER_INDEX) {
             return false;
         }
         // Deadline constraint trumps other constraints besides quota and dynamic (except for
diff --git a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
index b1b8fba..e343478 100644
--- a/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
+++ b/apex/jobscheduler/service/java/com/android/server/usage/AppStandbyController.java
@@ -48,6 +48,7 @@
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RESTRICTED;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET;
 
+import static com.android.server.SystemService.PHASE_BOOT_COMPLETED;
 import static com.android.server.SystemService.PHASE_SYSTEM_SERVICES_READY;
 
 import android.annotation.NonNull;
@@ -71,9 +72,8 @@
 import android.database.ContentObserver;
 import android.hardware.display.DisplayManager;
 import android.net.ConnectivityManager;
-import android.net.Network;
-import android.net.NetworkRequest;
 import android.net.NetworkScoreManager;
+import android.os.BatteryManager;
 import android.os.BatteryStats;
 import android.os.Build;
 import android.os.Environment;
@@ -136,25 +136,59 @@
     private static final long ONE_HOUR = ONE_MINUTE * 60;
     private static final long ONE_DAY = ONE_HOUR * 24;
 
-    static final long[] SCREEN_TIME_THRESHOLDS = {
+    /**
+     * The minimum amount of time the screen must have been on before an app can time out from its
+     * current bucket to the next bucket.
+     */
+    private static final long[] SCREEN_TIME_THRESHOLDS = {
             0,
             0,
-            COMPRESS_TIME ? 120 * 1000 : 1 * ONE_HOUR,
-            COMPRESS_TIME ? 240 * 1000 : 2 * ONE_HOUR
+            COMPRESS_TIME ? 2 * ONE_MINUTE : 1 * ONE_HOUR,
+            COMPRESS_TIME ? 4 * ONE_MINUTE : 2 * ONE_HOUR,
+            COMPRESS_TIME ? 8 * ONE_MINUTE : 6 * ONE_HOUR
     };
 
-    static final long[] ELAPSED_TIME_THRESHOLDS = {
+    /** The minimum allowed values for each index in {@link #SCREEN_TIME_THRESHOLDS}. */
+    private static final long[] MINIMUM_SCREEN_TIME_THRESHOLDS = COMPRESS_TIME
+            ? new long[SCREEN_TIME_THRESHOLDS.length]
+            : new long[]{
+                    0,
+                    0,
+                    0,
+                    30 * ONE_MINUTE,
+                    ONE_HOUR
+            };
+
+    /**
+     * The minimum amount of elapsed time that must have passed before an app can time out from its
+     * current bucket to the next bucket.
+     */
+    private static final long[] ELAPSED_TIME_THRESHOLDS = {
             0,
             COMPRESS_TIME ?  1 * ONE_MINUTE : 12 * ONE_HOUR,
             COMPRESS_TIME ?  4 * ONE_MINUTE : 24 * ONE_HOUR,
-            COMPRESS_TIME ? 16 * ONE_MINUTE : 48 * ONE_HOUR
+            COMPRESS_TIME ? 16 * ONE_MINUTE : 48 * ONE_HOUR,
+            // TODO(149050681): increase timeout to 30+ days
+            COMPRESS_TIME ? 32 * ONE_MINUTE : 4 * ONE_DAY
     };
 
-    static final int[] THRESHOLD_BUCKETS = {
+    /** The minimum allowed values for each index in {@link #ELAPSED_TIME_THRESHOLDS}. */
+    private static final long[] MINIMUM_ELAPSED_TIME_THRESHOLDS = COMPRESS_TIME
+            ? new long[ELAPSED_TIME_THRESHOLDS.length]
+            : new long[]{
+                    0,
+                    ONE_HOUR,
+                    ONE_HOUR,
+                    2 * ONE_HOUR,
+                    4 * ONE_DAY
+            };
+
+    private static final int[] THRESHOLD_BUCKETS = {
             STANDBY_BUCKET_ACTIVE,
             STANDBY_BUCKET_WORKING_SET,
             STANDBY_BUCKET_FREQUENT,
-            STANDBY_BUCKET_RARE
+            STANDBY_BUCKET_RARE,
+            STANDBY_BUCKET_RESTRICTED
     };
 
     /** Default expiration time for bucket prediction. After this, use thresholds to downgrade. */
@@ -204,7 +238,15 @@
     static final int MSG_REPORT_EXEMPTED_SYNC_START = 13;
 
     long mCheckIdleIntervalMillis;
+    /**
+     * The minimum amount of time the screen must have been on before an app can time out from its
+     * current bucket to the next bucket.
+     */
     long[] mAppStandbyScreenThresholds = SCREEN_TIME_THRESHOLDS;
+    /**
+     * The minimum amount of elapsed time that must have passed before an app can time out from its
+     * current bucket to the next bucket.
+     */
     long[] mAppStandbyElapsedThresholds = ELAPSED_TIME_THRESHOLDS;
     /** Minimum time a strong usage event should keep the bucket elevated. */
     long mStrongUsageTimeoutMillis;
@@ -243,6 +285,7 @@
     long mInitialForegroundServiceStartTimeoutMillis;
 
     private volatile boolean mAppIdleEnabled;
+    private boolean mIsCharging;
     private boolean mSystemServicesReady = false;
     // There was a system update, defaults need to be initialized after services are ready
     private boolean mPendingInitializeDefaults;
@@ -318,6 +361,11 @@
         mHandler = new AppStandbyHandler(mInjector.getLooper());
         mPackageManager = mContext.getPackageManager();
 
+        DeviceStateReceiver deviceStateReceiver = new DeviceStateReceiver();
+        IntentFilter deviceStates = new IntentFilter(BatteryManager.ACTION_CHARGING);
+        deviceStates.addAction(BatteryManager.ACTION_DISCHARGING);
+        mContext.registerReceiver(deviceStateReceiver, deviceStates);
+
         synchronized (mAppIdleLock) {
             mAppIdleHistory = new AppIdleHistory(mInjector.getDataSystemDirectory(),
                     mInjector.elapsedRealtime());
@@ -375,6 +423,8 @@
             if (mPendingOneTimeCheckIdleStates) {
                 postOneTimeCheckIdleStates();
             }
+        } else if (phase == PHASE_BOOT_COMPLETED) {
+            setChargingState(mInjector.isCharging());
         }
     }
 
@@ -396,12 +446,9 @@
                 }
                 if (!packageName.equals(providerPkgName)) {
                     synchronized (mAppIdleLock) {
-                        AppUsageHistory appUsage = mAppIdleHistory.reportUsage(packageName, userId,
-                                STANDBY_BUCKET_ACTIVE, REASON_SUB_USAGE_SYNC_ADAPTER,
-                                0,
-                                elapsedRealtime + mSyncAdapterTimeoutMillis);
-                        maybeInformListeners(packageName, userId, elapsedRealtime,
-                                appUsage.currentBucket, appUsage.bucketingReason, false);
+                        reportNoninteractiveUsageLocked(packageName, userId, STANDBY_BUCKET_ACTIVE,
+                                REASON_SUB_USAGE_SYNC_ADAPTER, elapsedRealtime,
+                                mSyncAdapterTimeoutMillis);
                     }
                 }
             } catch (PackageManager.NameNotFoundException e) {
@@ -432,12 +479,8 @@
         final long elapsedRealtime = mInjector.elapsedRealtime();
 
         synchronized (mAppIdleLock) {
-            AppUsageHistory appUsage = mAppIdleHistory.reportUsage(packageName, userId,
-                    bucketToPromote, usageReason,
-                    0,
-                    elapsedRealtime + durationMillis);
-            maybeInformListeners(packageName, userId, elapsedRealtime,
-                    appUsage.currentBucket, appUsage.bucketingReason, false);
+            reportNoninteractiveUsageLocked(packageName, userId, bucketToPromote,
+                    usageReason, elapsedRealtime, durationMillis);
         }
     }
 
@@ -450,12 +493,9 @@
                     mAppIdleHistory.getAppStandbyBucket(packageName, userId, elapsedRealtime);
             if (currentBucket == STANDBY_BUCKET_NEVER) {
                 // Bring the app out of the never bucket
-                AppUsageHistory appUsage = mAppIdleHistory.reportUsage(packageName, userId,
-                        STANDBY_BUCKET_WORKING_SET, REASON_SUB_USAGE_UNEXEMPTED_SYNC_SCHEDULED,
-                        0,
-                        elapsedRealtime + mUnexemptedSyncScheduledTimeoutMillis);
-                maybeInformListeners(packageName, userId, elapsedRealtime,
-                        appUsage.currentBucket, appUsage.bucketingReason, false);
+                reportNoninteractiveUsageLocked(packageName, userId, STANDBY_BUCKET_WORKING_SET,
+                        REASON_SUB_USAGE_UNEXEMPTED_SYNC_SCHEDULED, elapsedRealtime,
+                        mUnexemptedSyncScheduledTimeoutMillis);
             }
         }
     }
@@ -466,12 +506,30 @@
         final long elapsedRealtime = mInjector.elapsedRealtime();
 
         synchronized (mAppIdleLock) {
-            AppUsageHistory appUsage = mAppIdleHistory.reportUsage(packageName, userId,
-                    STANDBY_BUCKET_ACTIVE, REASON_SUB_USAGE_EXEMPTED_SYNC_START,
-                    0,
-                    elapsedRealtime + mExemptedSyncStartTimeoutMillis);
-            maybeInformListeners(packageName, userId, elapsedRealtime,
-                    appUsage.currentBucket, appUsage.bucketingReason, false);
+            reportNoninteractiveUsageLocked(packageName, userId, STANDBY_BUCKET_ACTIVE,
+                    REASON_SUB_USAGE_EXEMPTED_SYNC_START, elapsedRealtime,
+                    mExemptedSyncStartTimeoutMillis);
+        }
+    }
+
+    private void reportNoninteractiveUsageLocked(String packageName, int userId, int bucket,
+            int subReason, long elapsedRealtime, long nextCheckDelay) {
+        final AppUsageHistory appUsage = mAppIdleHistory.reportUsage(packageName, userId, bucket,
+                subReason, 0, elapsedRealtime + nextCheckDelay);
+        mHandler.sendMessageDelayed(
+                mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, userId, -1, packageName),
+                nextCheckDelay);
+        maybeInformListeners(packageName, userId, elapsedRealtime, appUsage.currentBucket,
+                appUsage.bucketingReason, false);
+    }
+
+    @VisibleForTesting
+    void setChargingState(boolean isCharging) {
+        synchronized (mAppIdleLock) {
+            if (mIsCharging != isCharging) {
+                if (DEBUG) Slog.d(TAG, "Setting mIsCharging to " + isCharging);
+                mIsCharging = isCharging;
+            }
         }
     }
 
@@ -623,7 +681,7 @@
 
                 if (app.lastRestrictAttemptElapsedTime > app.lastUsedByUserElapsedTime
                         && elapsedTimeAdjusted - app.lastUsedByUserElapsedTime
-                        >= mInjector.getRestrictedBucketDelayMs()) {
+                        >= mInjector.getAutoRestrictedBucketDelayMs()) {
                     newBucket = STANDBY_BUCKET_RESTRICTED;
                     reason = app.lastRestrictReason;
                     if (DEBUG) {
@@ -699,73 +757,75 @@
     @Override
     public void reportEvent(UsageEvents.Event event, long elapsedRealtime, int userId) {
         if (!mAppIdleEnabled) return;
-        synchronized (mAppIdleLock) {
-            final String pkg = event.getPackageName();
-            final int eventType = event.getEventType();
-            // TODO: Ideally this should call isAppIdleFiltered() to avoid calling back
-            // about apps that are on some kind of whitelist anyway.
-            final boolean previouslyIdle = mAppIdleHistory.isIdle(
-                    pkg, userId, elapsedRealtime);
-            // Inform listeners if necessary
-            if ((eventType == UsageEvents.Event.ACTIVITY_RESUMED
-                    || eventType == UsageEvents.Event.ACTIVITY_PAUSED
-                    || eventType == UsageEvents.Event.SYSTEM_INTERACTION
-                    || eventType == UsageEvents.Event.USER_INTERACTION
-                    || eventType == UsageEvents.Event.NOTIFICATION_SEEN
-                    || eventType == UsageEvents.Event.SLICE_PINNED
-                    || eventType == UsageEvents.Event.SLICE_PINNED_PRIV
-                    || eventType == UsageEvents.Event.FOREGROUND_SERVICE_START)) {
-
-                final AppUsageHistory appHistory = mAppIdleHistory.getAppUsageHistory(
-                        pkg, userId, elapsedRealtime);
-                final int prevBucket = appHistory.currentBucket;
-                final int prevBucketReason = appHistory.bucketingReason;
-                final long nextCheckTime;
-                final int subReason = usageEventToSubReason(eventType);
-                final int reason = REASON_MAIN_USAGE | subReason;
-                if (eventType == UsageEvents.Event.NOTIFICATION_SEEN
-                        || eventType == UsageEvents.Event.SLICE_PINNED) {
-                    // Mild usage elevates to WORKING_SET but doesn't change usage time.
-                    mAppIdleHistory.reportUsage(appHistory, pkg,
-                            STANDBY_BUCKET_WORKING_SET, subReason,
-                            0, elapsedRealtime + mNotificationSeenTimeoutMillis);
-                    nextCheckTime = mNotificationSeenTimeoutMillis;
-                } else if (eventType == UsageEvents.Event.SYSTEM_INTERACTION) {
-                    mAppIdleHistory.reportUsage(appHistory, pkg,
-                            STANDBY_BUCKET_ACTIVE, subReason,
-                            0, elapsedRealtime + mSystemInteractionTimeoutMillis);
-                    nextCheckTime = mSystemInteractionTimeoutMillis;
-                } else if (eventType == UsageEvents.Event.FOREGROUND_SERVICE_START) {
-                    // Only elevate bucket if this is the first usage of the app
-                    if (prevBucket != STANDBY_BUCKET_NEVER) return;
-                    mAppIdleHistory.reportUsage(appHistory, pkg,
-                            STANDBY_BUCKET_ACTIVE, subReason,
-                            0, elapsedRealtime + mInitialForegroundServiceStartTimeoutMillis);
-                    nextCheckTime = mInitialForegroundServiceStartTimeoutMillis;
-                } else {
-                    mAppIdleHistory.reportUsage(appHistory, pkg,
-                            STANDBY_BUCKET_ACTIVE, subReason,
-                            elapsedRealtime, elapsedRealtime + mStrongUsageTimeoutMillis);
-                    nextCheckTime = mStrongUsageTimeoutMillis;
-                }
-                if (appHistory.currentBucket != prevBucket) {
-                    mHandler.sendMessageDelayed(
-                            mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, userId, -1, pkg),
-                            nextCheckTime);
-                    final boolean userStartedInteracting =
-                            appHistory.currentBucket == STANDBY_BUCKET_ACTIVE
-                                    && (prevBucketReason & REASON_MAIN_MASK) != REASON_MAIN_USAGE;
-                    maybeInformListeners(pkg, userId, elapsedRealtime,
-                            appHistory.currentBucket, reason, userStartedInteracting);
-                }
-
-                if (previouslyIdle) {
-                    notifyBatteryStats(pkg, userId, false);
-                }
+        final int eventType = event.getEventType();
+        if ((eventType == UsageEvents.Event.ACTIVITY_RESUMED
+                || eventType == UsageEvents.Event.ACTIVITY_PAUSED
+                || eventType == UsageEvents.Event.SYSTEM_INTERACTION
+                || eventType == UsageEvents.Event.USER_INTERACTION
+                || eventType == UsageEvents.Event.NOTIFICATION_SEEN
+                || eventType == UsageEvents.Event.SLICE_PINNED
+                || eventType == UsageEvents.Event.SLICE_PINNED_PRIV
+                || eventType == UsageEvents.Event.FOREGROUND_SERVICE_START)) {
+            synchronized (mAppIdleLock) {
+                reportEventLocked(event.getPackageName(), eventType, elapsedRealtime, userId);
             }
         }
     }
 
+    private void reportEventLocked(String pkg, int eventType, long elapsedRealtime, int userId) {
+        // TODO: Ideally this should call isAppIdleFiltered() to avoid calling back
+        // about apps that are on some kind of whitelist anyway.
+        final boolean previouslyIdle = mAppIdleHistory.isIdle(
+                pkg, userId, elapsedRealtime);
+
+        final AppUsageHistory appHistory = mAppIdleHistory.getAppUsageHistory(
+                pkg, userId, elapsedRealtime);
+        final int prevBucket = appHistory.currentBucket;
+        final int prevBucketReason = appHistory.bucketingReason;
+        final long nextCheckDelay;
+        final int subReason = usageEventToSubReason(eventType);
+        final int reason = REASON_MAIN_USAGE | subReason;
+        if (eventType == UsageEvents.Event.NOTIFICATION_SEEN
+                || eventType == UsageEvents.Event.SLICE_PINNED) {
+            // Mild usage elevates to WORKING_SET but doesn't change usage time.
+            mAppIdleHistory.reportUsage(appHistory, pkg,
+                    STANDBY_BUCKET_WORKING_SET, subReason,
+                    0, elapsedRealtime + mNotificationSeenTimeoutMillis);
+            nextCheckDelay = mNotificationSeenTimeoutMillis;
+        } else if (eventType == UsageEvents.Event.SYSTEM_INTERACTION) {
+            mAppIdleHistory.reportUsage(appHistory, pkg,
+                    STANDBY_BUCKET_ACTIVE, subReason,
+                    0, elapsedRealtime + mSystemInteractionTimeoutMillis);
+            nextCheckDelay = mSystemInteractionTimeoutMillis;
+        } else if (eventType == UsageEvents.Event.FOREGROUND_SERVICE_START) {
+            // Only elevate bucket if this is the first usage of the app
+            if (prevBucket != STANDBY_BUCKET_NEVER) return;
+            mAppIdleHistory.reportUsage(appHistory, pkg,
+                    STANDBY_BUCKET_ACTIVE, subReason,
+                    0, elapsedRealtime + mInitialForegroundServiceStartTimeoutMillis);
+            nextCheckDelay = mInitialForegroundServiceStartTimeoutMillis;
+        } else {
+            mAppIdleHistory.reportUsage(appHistory, pkg,
+                    STANDBY_BUCKET_ACTIVE, subReason,
+                    elapsedRealtime, elapsedRealtime + mStrongUsageTimeoutMillis);
+            nextCheckDelay = mStrongUsageTimeoutMillis;
+        }
+        if (appHistory.currentBucket != prevBucket) {
+            mHandler.sendMessageDelayed(
+                    mHandler.obtainMessage(MSG_CHECK_PACKAGE_IDLE_STATE, userId, -1, pkg),
+                    nextCheckDelay);
+            final boolean userStartedInteracting =
+                    appHistory.currentBucket == STANDBY_BUCKET_ACTIVE
+                            && (prevBucketReason & REASON_MAIN_MASK) != REASON_MAIN_USAGE;
+            maybeInformListeners(pkg, userId, elapsedRealtime,
+                    appHistory.currentBucket, reason, userStartedInteracting);
+        }
+
+        if (previouslyIdle) {
+            notifyBatteryStats(pkg, userId, false);
+        }
+    }
+
     private int usageEventToSubReason(int eventType) {
         switch (eventType) {
             case UsageEvents.Event.ACTIVITY_RESUMED: return REASON_SUB_USAGE_MOVE_TO_FOREGROUND;
@@ -935,6 +995,11 @@
         if (isAppSpecial(packageName, appId, userId)) {
             return false;
         } else {
+            synchronized (mAppIdleLock) {
+                if (!mAppIdleEnabled || mIsCharging) {
+                    return false;
+                }
+            }
             return isAppIdleUnfiltered(packageName, userId, elapsedRealtime);
         }
     }
@@ -1147,9 +1212,11 @@
             final boolean isForcedByUser =
                     (reason & REASON_MAIN_MASK) == REASON_MAIN_FORCED_BY_USER;
 
-            // If the current bucket is RESTRICTED, only user force or usage should bring it out.
+            // If the current bucket is RESTRICTED, only user force or usage should bring it out,
+            // unless the app was put into the bucket due to timing out.
             if (app.currentBucket == STANDBY_BUCKET_RESTRICTED && !isUserUsage(reason)
-                    && !isForcedByUser) {
+                    && !isForcedByUser
+                    && (app.bucketingReason & REASON_MAIN_MASK) != REASON_MAIN_TIMEOUT) {
                 return;
             }
 
@@ -1175,7 +1242,7 @@
                     }
                 } else {
                     final long timeUntilRestrictPossibleMs = app.lastUsedByUserElapsedTime
-                            + mInjector.getRestrictedBucketDelayMs() - elapsedRealtime;
+                            + mInjector.getAutoRestrictedBucketDelayMs() - elapsedRealtime;
                     if (timeUntilRestrictPossibleMs > 0) {
                         Slog.w(TAG, "Tried to restrict recently used app: " + packageName
                                 + " due to " + reason);
@@ -1499,6 +1566,8 @@
 
         pw.println();
         pw.print("mAppIdleEnabled="); pw.print(mAppIdleEnabled);
+        pw.print(" mIsCharging=");
+        pw.print(mIsCharging);
         pw.println();
         pw.print("mScreenThresholds="); pw.println(Arrays.toString(mAppStandbyScreenThresholds));
         pw.print("mElapsedThresholds="); pw.println(Arrays.toString(mAppStandbyElapsedThresholds));
@@ -1516,16 +1585,16 @@
         private final Looper mLooper;
         private IDeviceIdleController mDeviceIdleController;
         private IBatteryStats mBatteryStats;
+        private BatteryManager mBatteryManager;
         private PackageManagerInternal mPackageManagerInternal;
         private DisplayManager mDisplayManager;
         private PowerManager mPowerManager;
         int mBootPhase;
         /**
          * The minimum amount of time required since the last user interaction before an app can be
-         * placed in the RESTRICTED bucket.
+         * automatically placed in the RESTRICTED bucket.
          */
-        // TODO: make configurable via DeviceConfig
-        private long mRestrictedBucketDelayMs = ONE_DAY;
+        long mAutoRestrictedBucketDelayMs = ONE_DAY;
 
         Injector(Context context, Looper looper) {
             mContext = context;
@@ -1550,11 +1619,12 @@
                 mDisplayManager = (DisplayManager) mContext.getSystemService(
                         Context.DISPLAY_SERVICE);
                 mPowerManager = mContext.getSystemService(PowerManager.class);
+                mBatteryManager = mContext.getSystemService(BatteryManager.class);
 
                 final ActivityManager activityManager =
                         (ActivityManager) mContext.getSystemService(Context.ACTIVITY_SERVICE);
                 if (activityManager.isLowRamDevice() || ActivityManager.isSmallBatteryDevice()) {
-                    mRestrictedBucketDelayMs = 12 * ONE_HOUR;
+                    mAutoRestrictedBucketDelayMs = 12 * ONE_HOUR;
                 }
             }
             mBootPhase = phase;
@@ -1587,6 +1657,10 @@
             return buildFlag && runtimeFlag;
         }
 
+        boolean isCharging() {
+            return mBatteryManager.isCharging();
+        }
+
         boolean isPowerSaveWhitelistExceptIdleApp(String packageName) throws RemoteException {
             return mDeviceIdleController.isPowerSaveWhitelistExceptIdleApp(packageName);
         }
@@ -1595,8 +1669,13 @@
             return Environment.getDataSystemDirectory();
         }
 
-        long getRestrictedBucketDelayMs() {
-            return mRestrictedBucketDelayMs;
+        /**
+         * Return the minimum amount of time that must have passed since the last user usage before
+         * an app can be automatically put into the
+         * {@link android.app.usage.UsageStatsManager#STANDBY_BUCKET_RESTRICTED} bucket.
+         */
+        long getAutoRestrictedBucketDelayMs() {
+            return mAutoRestrictedBucketDelayMs;
         }
 
         void noteEvent(int event, String packageName, int uid) throws RemoteException {
@@ -1718,15 +1797,19 @@
         }
     };
 
-    private final NetworkRequest mNetworkRequest = new NetworkRequest.Builder().build();
-
-    private final ConnectivityManager.NetworkCallback mNetworkCallback
-            = new ConnectivityManager.NetworkCallback() {
+    private class DeviceStateReceiver extends BroadcastReceiver {
         @Override
-        public void onAvailable(Network network) {
-            mConnectivityManager.unregisterNetworkCallback(this);
+        public void onReceive(Context context, Intent intent) {
+            switch (intent.getAction()) {
+                case BatteryManager.ACTION_CHARGING:
+                    setChargingState(true);
+                    break;
+                case BatteryManager.ACTION_DISCHARGING:
+                    setChargingState(false);
+                    break;
+            }
         }
-    };
+    }
 
     private final DisplayManager.DisplayListener mDisplayListener
             = new DisplayManager.DisplayListener() {
@@ -1772,6 +1855,8 @@
                 "system_interaction_duration";
         private static final String KEY_INITIAL_FOREGROUND_SERVICE_START_HOLD_DURATION =
                 "initial_foreground_service_start_duration";
+        private static final String KEY_AUTO_RESTRICTED_BUCKET_DELAY_MS =
+                "auto_restricted_bucket_delay_ms";
         public static final long DEFAULT_STRONG_USAGE_TIMEOUT = 1 * ONE_HOUR;
         public static final long DEFAULT_NOTIFICATION_TIMEOUT = 12 * ONE_HOUR;
         public static final long DEFAULT_SYSTEM_UPDATE_TIMEOUT = 2 * ONE_HOUR;
@@ -1782,6 +1867,7 @@
         public static final long DEFAULT_EXEMPTED_SYNC_START_TIMEOUT = 10 * ONE_MINUTE;
         public static final long DEFAULT_UNEXEMPTED_SYNC_SCHEDULED_TIMEOUT = 10 * ONE_MINUTE;
         public static final long DEFAULT_INITIAL_FOREGROUND_SERVICE_START_TIMEOUT = 30 * ONE_MINUTE;
+        public static final long DEFAULT_AUTO_RESTRICTED_BUCKET_DELAY_MS = ONE_DAY;
 
         private final KeyValueListParser mParser = new KeyValueListParser(',');
 
@@ -1829,12 +1915,12 @@
 
                 String screenThresholdsValue = mParser.getString(KEY_SCREEN_TIME_THRESHOLDS, null);
                 mAppStandbyScreenThresholds = parseLongArray(screenThresholdsValue,
-                        SCREEN_TIME_THRESHOLDS);
+                        SCREEN_TIME_THRESHOLDS, MINIMUM_SCREEN_TIME_THRESHOLDS);
 
                 String elapsedThresholdsValue = mParser.getString(KEY_ELAPSED_TIME_THRESHOLDS,
                         null);
                 mAppStandbyElapsedThresholds = parseLongArray(elapsedThresholdsValue,
-                        ELAPSED_TIME_THRESHOLDS);
+                        ELAPSED_TIME_THRESHOLDS, MINIMUM_ELAPSED_TIME_THRESHOLDS);
                 mCheckIdleIntervalMillis = Math.min(mAppStandbyElapsedThresholds[1] / 4,
                         COMPRESS_TIME ? ONE_MINUTE : 4 * 60 * ONE_MINUTE); // 4 hours
                 mStrongUsageTimeoutMillis = mParser.getDurationMillis(
@@ -1870,8 +1956,8 @@
 
                 mUnexemptedSyncScheduledTimeoutMillis = mParser.getDurationMillis(
                         KEY_UNEXEMPTED_SYNC_SCHEDULED_HOLD_DURATION,
-                                COMPRESS_TIME ? ONE_MINUTE
-                                        : DEFAULT_UNEXEMPTED_SYNC_SCHEDULED_TIMEOUT); // TODO
+                                COMPRESS_TIME
+                                        ? ONE_MINUTE : DEFAULT_UNEXEMPTED_SYNC_SCHEDULED_TIMEOUT);
 
                 mSystemInteractionTimeoutMillis = mParser.getDurationMillis(
                         KEY_SYSTEM_INTERACTION_HOLD_DURATION,
@@ -1881,6 +1967,12 @@
                         KEY_INITIAL_FOREGROUND_SERVICE_START_HOLD_DURATION,
                         COMPRESS_TIME ? ONE_MINUTE :
                                 DEFAULT_INITIAL_FOREGROUND_SERVICE_START_TIMEOUT);
+
+                mInjector.mAutoRestrictedBucketDelayMs = Math.max(
+                        COMPRESS_TIME ? ONE_MINUTE : 2 * ONE_HOUR,
+                        mParser.getDurationMillis(KEY_AUTO_RESTRICTED_BUCKET_DELAY_MS,
+                                COMPRESS_TIME
+                                        ? ONE_MINUTE : DEFAULT_AUTO_RESTRICTED_BUCKET_DELAY_MS));
             }
 
             // Check if app_idle_enabled has changed. Do this after getting the rest of the settings
@@ -1888,7 +1980,7 @@
             setAppIdleEnabled(mInjector.isAppIdleEnabled());
         }
 
-        long[] parseLongArray(String values, long[] defaults) {
+        long[] parseLongArray(String values, long[] defaults, long[] minValues) {
             if (values == null) return defaults;
             if (values.isEmpty()) {
                 // Reset to defaults
@@ -1896,13 +1988,19 @@
             } else {
                 String[] thresholds = values.split("/");
                 if (thresholds.length == THRESHOLD_BUCKETS.length) {
+                    if (minValues.length != THRESHOLD_BUCKETS.length) {
+                        Slog.wtf(TAG, "minValues array is the wrong size");
+                        // Use zeroes as the minimums.
+                        minValues = new long[THRESHOLD_BUCKETS.length];
+                    }
                     long[] array = new long[THRESHOLD_BUCKETS.length];
                     for (int i = 0; i < THRESHOLD_BUCKETS.length; i++) {
                         try {
                             if (thresholds[i].startsWith("P") || thresholds[i].startsWith("p")) {
-                                array[i] = Duration.parse(thresholds[i]).toMillis();
+                                array[i] = Math.max(minValues[i],
+                                        Duration.parse(thresholds[i]).toMillis());
                             } else {
-                                array[i] = Long.parseLong(thresholds[i]);
+                                array[i] = Math.max(minValues[i], Long.parseLong(thresholds[i]));
                             }
                         } catch (NumberFormatException|DateTimeParseException e) {
                             return defaults;
diff --git a/apex/media/framework/Android.bp b/apex/media/framework/Android.bp
index 2266d04..821dd9e 100644
--- a/apex/media/framework/Android.bp
+++ b/apex/media/framework/Android.bp
@@ -19,34 +19,21 @@
         ":updatable-media-srcs",
     ],
 
-    aidl: {
-        export_include_dirs: [
-            "java",
-        ],
-
-        // It would be great if we don't need to add include_dirs for public
-        // parcelable classes. Find a better way.
-        include_dirs: [
-            // To refer:
-            // android.os.Bundle
-            // android.os.ResultReceiver
-            "frameworks/base/core/java",
-        ],
-    },
-
     permitted_packages: [
         "android.media",
     ],
 
+    optimize: {
+        enabled: true,
+        shrink: true,
+        proguard_flags_files: ["updatable-media-proguard.flags"],
+    },
+
     installable: true,
 
-    // TODO: build against stable API surface. Use core_platform for now to avoid
-    // link-check failure with exoplayer building against "current".
-    sdk_version: "core_platform",
+    sdk_version: "module_current",
     libs: [
-        // The order matters. android_system_* library should come later.
         "framework_media_annotation",
-        "android_system_stubs_current",
     ],
 
     static_libs: [
@@ -99,13 +86,10 @@
     path: "java"
 }
 
-droidstubs {
-    name: "updatable-media-stubs",
-    srcs: [
-        ":updatable-media-srcs",
-        ":framework-media-annotation-srcs",
-    ],
-    defaults: [ "framework-module-stubs-defaults-systemapi" ],
+stubs_defaults {
+    name: "framework-media-stubs-srcs-defaults",
+    srcs: [ ":updatable-media-srcs" ],
+    libs: [ "framework_media_annotation" ],
     aidl: {
         // TODO(b/135922046) remove this
         include_dirs: ["frameworks/base/core/java"],
@@ -113,9 +97,53 @@
     sdk_version: "system_current",
 }
 
+droidstubs {
+    name: "framework-media-stubs-srcs-publicapi",
+    defaults: [
+        "framework-media-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-publicapi",
+    ],
+}
+
+droidstubs {
+    name: "framework-media-stubs-srcs-systemapi",
+    defaults: [
+        "framework-media-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-systemapi",
+    ],
+}
+
+droidstubs {
+    name: "framework-media-api-module_libs_api",
+    defaults: [
+        "framework-media-stubs-srcs-defaults",
+        "framework-module-api-defaults-module_libs_api",
+    ],
+}
+
+droidstubs {
+    name: "framework-media-stubs-srcs-module_libs_api",
+    defaults: [
+        "framework-media-stubs-srcs-defaults",
+        "framework-module-stubs-defaults-module_libs_api",
+    ],
+}
+
 java_library {
-    name: "updatable_media_stubs",
-    srcs: [":updatable-media-stubs"],
+    name: "framework-media-stubs-publicapi",
+    srcs: [":framework-media-stubs-srcs-publicapi"],
+    sdk_version: "current",
+}
+
+java_library {
+    name: "framework-media-stubs-systemapi",
+    srcs: [":framework-media-stubs-srcs-systemapi"],
+    sdk_version: "system_current",
+}
+
+java_library {
+    name: "framework-media-stubs-module_libs_api",
+    srcs: [":framework-media-stubs-srcs-module_libs_api"],
     sdk_version: "system_current",
 }
 
diff --git a/apex/media/framework/java/android/media/MediaParser.java b/apex/media/framework/java/android/media/MediaParser.java
index d59270c..7d18578 100644
--- a/apex/media/framework/java/android/media/MediaParser.java
+++ b/apex/media/framework/java/android/media/MediaParser.java
@@ -15,6 +15,7 @@
  */
 package android.media;
 
+import android.annotation.CheckResult;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.net.Uri;
@@ -32,6 +33,7 @@
 import com.google.android.exoplayer2.extractor.SeekMap.SeekPoints;
 import com.google.android.exoplayer2.extractor.TrackOutput;
 import com.google.android.exoplayer2.extractor.amr.AmrExtractor;
+import com.google.android.exoplayer2.extractor.flac.FlacExtractor;
 import com.google.android.exoplayer2.extractor.flv.FlvExtractor;
 import com.google.android.exoplayer2.extractor.mkv.MatroskaExtractor;
 import com.google.android.exoplayer2.extractor.mp3.Mp3Extractor;
@@ -48,6 +50,7 @@
 import com.google.android.exoplayer2.upstream.DataSpec;
 import com.google.android.exoplayer2.upstream.TransferListener;
 import com.google.android.exoplayer2.util.ParsableByteArray;
+import com.google.android.exoplayer2.video.ColorInfo;
 
 import java.io.EOFException;
 import java.io.IOException;
@@ -382,6 +385,7 @@
          * parse the input.
          */
         @NonNull
+        @CheckResult
         private static UnrecognizedInputFormatException createForExtractors(
                 @NonNull String... extractorNames) {
             StringBuilder builder = new StringBuilder();
@@ -536,7 +540,7 @@
                 }
             }
             if (mExtractor == null) {
-                UnrecognizedInputFormatException.createForExtractors(mExtractorNamesPool);
+                throw UnrecognizedInputFormatException.createForExtractors(mExtractorNamesPool);
             }
             return true;
         }
@@ -807,70 +811,91 @@
     // Private static methods.
 
     private static MediaFormat toMediaFormat(Format format) {
-
-        // TODO: Add if (value != Format.NO_VALUE);
-
         MediaFormat result = new MediaFormat();
-        result.setInteger(MediaFormat.KEY_BIT_RATE, format.bitrate);
-        result.setInteger(MediaFormat.KEY_CHANNEL_COUNT, format.channelCount);
-        if (format.colorInfo != null) {
-            result.setInteger(MediaFormat.KEY_COLOR_TRANSFER, format.colorInfo.colorTransfer);
-            result.setInteger(MediaFormat.KEY_COLOR_RANGE, format.colorInfo.colorRange);
-            result.setInteger(MediaFormat.KEY_COLOR_STANDARD, format.colorInfo.colorSpace);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_BIT_RATE, format.bitrate);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_CHANNEL_COUNT, format.channelCount);
+
+        ColorInfo colorInfo = format.colorInfo;
+        if (colorInfo != null) {
+            setOptionalMediaFormatInt(
+                    result, MediaFormat.KEY_COLOR_TRANSFER, colorInfo.colorTransfer);
+            setOptionalMediaFormatInt(result, MediaFormat.KEY_COLOR_RANGE, colorInfo.colorRange);
+            setOptionalMediaFormatInt(result, MediaFormat.KEY_COLOR_STANDARD, colorInfo.colorSpace);
+
             if (format.colorInfo.hdrStaticInfo != null) {
                 result.setByteBuffer(
                         MediaFormat.KEY_HDR_STATIC_INFO,
                         ByteBuffer.wrap(format.colorInfo.hdrStaticInfo));
             }
         }
-        result.setString(MediaFormat.KEY_MIME, format.sampleMimeType);
-        result.setFloat(MediaFormat.KEY_FRAME_RATE, format.frameRate);
-        result.setInteger(MediaFormat.KEY_WIDTH, format.width);
-        result.setInteger(MediaFormat.KEY_HEIGHT, format.height);
+
+        setOptionalMediaFormatString(result, MediaFormat.KEY_MIME, format.sampleMimeType);
+        setOptionalMediaFormatString(result, MediaFormat.KEY_CODECS_STRING, format.codecs);
+        if (format.frameRate != Format.NO_VALUE) {
+            result.setFloat(MediaFormat.KEY_FRAME_RATE, format.frameRate);
+        }
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_WIDTH, format.width);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_HEIGHT, format.height);
+
         List<byte[]> initData = format.initializationData;
         if (initData != null) {
             for (int i = 0; i < initData.size(); i++) {
                 result.setByteBuffer("csd-" + i, ByteBuffer.wrap(initData.get(i)));
             }
         }
-        result.setString(MediaFormat.KEY_LANGUAGE, format.language);
-        result.setInteger(MediaFormat.KEY_MAX_INPUT_SIZE, format.maxInputSize);
-        result.setInteger(MediaFormat.KEY_PCM_ENCODING, format.pcmEncoding);
-        result.setInteger(MediaFormat.KEY_ROTATION, format.rotationDegrees);
-        result.setInteger(MediaFormat.KEY_SAMPLE_RATE, format.sampleRate);
+        setOptionalMediaFormatString(result, MediaFormat.KEY_LANGUAGE, format.language);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_MAX_INPUT_SIZE, format.maxInputSize);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_PCM_ENCODING, format.pcmEncoding);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_ROTATION, format.rotationDegrees);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_SAMPLE_RATE, format.sampleRate);
 
         int selectionFlags = format.selectionFlags;
-        // We avoid setting selection flags in the MediaFormat, unless explicitly signaled by the
-        // extractor.
-        if ((selectionFlags & C.SELECTION_FLAG_AUTOSELECT) != 0) {
-            result.setInteger(MediaFormat.KEY_IS_AUTOSELECT, 1);
-        }
-        if ((selectionFlags & C.SELECTION_FLAG_DEFAULT) != 0) {
-            result.setInteger(MediaFormat.KEY_IS_DEFAULT, 1);
-        }
-        if ((selectionFlags & C.SELECTION_FLAG_FORCED) != 0) {
-            result.setInteger(MediaFormat.KEY_IS_FORCED_SUBTITLE, 1);
+        result.setInteger(
+                MediaFormat.KEY_IS_AUTOSELECT, selectionFlags & C.SELECTION_FLAG_AUTOSELECT);
+        result.setInteger(MediaFormat.KEY_IS_DEFAULT, selectionFlags & C.SELECTION_FLAG_DEFAULT);
+        result.setInteger(
+                MediaFormat.KEY_IS_FORCED_SUBTITLE, selectionFlags & C.SELECTION_FLAG_FORCED);
+
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_ENCODER_DELAY, format.encoderDelay);
+        setOptionalMediaFormatInt(result, MediaFormat.KEY_ENCODER_PADDING, format.encoderPadding);
+
+        if (format.pixelWidthHeightRatio != Format.NO_VALUE && format.pixelWidthHeightRatio != 0) {
+            int parWidth = 1;
+            int parHeight = 1;
+            if (format.pixelWidthHeightRatio < 1.0f) {
+                parHeight = 1 << 30;
+                parWidth = (int) (format.pixelWidthHeightRatio * parHeight);
+            } else if (format.pixelWidthHeightRatio > 1.0f) {
+                parWidth = 1 << 30;
+                parHeight = (int) (parWidth / format.pixelWidthHeightRatio);
+            }
+            result.setInteger(MediaFormat.KEY_PIXEL_ASPECT_RATIO_WIDTH, parWidth);
+            result.setInteger(MediaFormat.KEY_PIXEL_ASPECT_RATIO_HEIGHT, parHeight);
+            result.setFloat("pixel-width-height-ratio-float", format.pixelWidthHeightRatio);
         }
 
         // LACK OF SUPPORT FOR:
         //    format.accessibilityChannel;
-        //    format.codecs;
         //    format.containerMimeType;
-        //    format.drmInitData;
-        //    format.encoderDelay;
-        //    format.encoderPadding;
         //    format.id;
         //    format.metadata;
-        //    format.pixelWidthHeightRatio;
         //    format.roleFlags;
         //    format.stereoMode;
         //    format.subsampleOffsetUs;
         return result;
     }
 
-    private static int toFrameworkFlags(int flags) {
-        // TODO: Implement.
-        return 0;
+    private static void setOptionalMediaFormatInt(MediaFormat mediaFormat, String key, int value) {
+        if (value != Format.NO_VALUE) {
+            mediaFormat.setInteger(key, value);
+        }
+    }
+
+    private static void setOptionalMediaFormatString(
+            MediaFormat mediaFormat, String key, @Nullable String value) {
+        if (value != null) {
+            mediaFormat.setString(key, value);
+        }
     }
 
     private static DrmInitData toFrameworkDrmInitData(
@@ -912,6 +937,7 @@
         extractorFactoriesByName.put("exo.Ac4Extractor", Ac4Extractor::new);
         extractorFactoriesByName.put("exo.AdtsExtractor", AdtsExtractor::new);
         extractorFactoriesByName.put("exo.AmrExtractor", AmrExtractor::new);
+        extractorFactoriesByName.put("exo.FlacExtractor", FlacExtractor::new);
         extractorFactoriesByName.put("exo.FlvExtractor", FlvExtractor::new);
         extractorFactoriesByName.put("exo.FragmentedMp4Extractor", FragmentedMp4Extractor::new);
         extractorFactoriesByName.put("exo.MatroskaExtractor", MatroskaExtractor::new);
diff --git a/apex/media/framework/updatable-media-proguard.flags b/apex/media/framework/updatable-media-proguard.flags
new file mode 100644
index 0000000..4e7d842
--- /dev/null
+++ b/apex/media/framework/updatable-media-proguard.flags
@@ -0,0 +1,2 @@
+# Keep all symbols in android.media.
+-keep class android.media.* {*;}
diff --git a/apex/permission/framework/Android.bp b/apex/permission/framework/Android.bp
index 09571a1..6d96200 100644
--- a/apex/permission/framework/Android.bp
+++ b/apex/permission/framework/Android.bp
@@ -26,13 +26,7 @@
     srcs: [
         ":framework-permission-sources",
     ],
-    // TODO(b/146758669): Use "system_current" after nullability annotations are system APIs.
-    sdk_version: "core_current",
-    libs: [
-        "framework-annotations-lib",
-        // TODO(b/146758669): Remove this line after nullability annotations are system APIs.
-        "android_system_stubs_current",
-    ],
+    sdk_version: "module_current",
     apex_available: [
         "com.android.permission",
         "test_com.android.permission",
@@ -44,23 +38,66 @@
     ],
 }
 
+stubs_defaults {
+    name: "framework-permission-stubs-defaults",
+    srcs: [ ":framework-permission-sources" ],
+    libs: [ "framework-annotations-lib" ],
+    sdk_version: "system_current",
+}
+
 droidstubs {
-    name: "framework-permission-stubs-sources",
-    srcs: [
-        ":framework-annotations",
-        ":framework-permission-sources",
+    name: "framework-permission-stubs-srcs-publicapi",
+    sdk_version: "system_current",
+    defaults: [
+        "framework-module-stubs-defaults-publicapi",
+        "framework-permission-stubs-defaults",
     ],
+}
+
+droidstubs {
+    name: "framework-permission-stubs-srcs-systemapi",
     sdk_version: "system_current",
     defaults: [
         "framework-module-stubs-defaults-systemapi",
+        "framework-permission-stubs-defaults",
+    ],
+}
+
+droidstubs {
+    name: "framework-permission-api-module_libs_api",
+    sdk_version: "system_current",
+    defaults: [
+        "framework-module-api-defaults-module_libs_api",
+        "framework-permission-stubs-defaults",
+    ],
+}
+
+droidstubs {
+    name: "framework-permission-stubs-srcs-module_libs_api",
+    sdk_version: "system_current",
+    defaults: [
+        "framework-module-stubs-defaults-module_libs_api",
+        "framework-permission-stubs-defaults",
     ],
 }
 
 java_library {
-    name: "framework-permission-stubs",
-    srcs: [
-        ":framework-permission-stubs-sources",
-    ],
+    name: "framework-permission-stubs-publicapi",
+    srcs: [ ":framework-permission-stubs-srcs-publicapi" ],
+    sdk_version: "system_current",
+    installable: false,
+}
+
+java_library {
+    name: "framework-permission-stubs-systemapi",
+    srcs: [ ":framework-permission-stubs-srcs-systemapi" ],
+    sdk_version: "system_current",
+    installable: false,
+}
+
+java_library {
+    name: "framework-permission-stubs-module_libs_api",
+    srcs: [ ":framework-permission-stubs-srcs-module_libs_api" ],
     sdk_version: "system_current",
     installable: false,
 }
diff --git a/apex/permission/service/Android.bp b/apex/permission/service/Android.bp
index 4172e95..8d66431 100644
--- a/apex/permission/service/Android.bp
+++ b/apex/permission/service/Android.bp
@@ -24,12 +24,9 @@
     srcs: [
         ":service-permission-sources",
     ],
-    // TODO(b/146758669): Use "system_current" after nullability annotations are system APIs.
-    sdk_version: "core_current",
+    sdk_version: "module_current",
     libs: [
         "framework-annotations-lib",
-        // TODO(b/146758669): Remove this line after nullability annotations are system APIs.
-        "android_system_stubs_current",
         "framework-permission",
     ],
     apex_available: [
diff --git a/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java b/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java
index 5f2d944..6c7f82a 100644
--- a/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java
+++ b/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsPersistence.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
 import android.os.UserHandle;
 
 /**
@@ -27,7 +28,7 @@
  * TODO(b/147914847): Remove @hide when it becomes the default.
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES, process = SystemApi.Process.SYSTEM_SERVER)
+@SystemApi(client = Client.SYSTEM_SERVER)
 public interface RuntimePermissionsPersistence {
 
     /**
diff --git a/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java b/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java
index 2a939e5..cd2750a 100644
--- a/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java
+++ b/apex/permission/service/java/com/android/permission/persistence/RuntimePermissionsState.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
 
 import java.util.List;
 import java.util.Map;
@@ -29,7 +30,7 @@
  * TODO(b/147914847): Remove @hide when it becomes the default.
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES, process = SystemApi.Process.SYSTEM_SERVER)
+@SystemApi(client = Client.SYSTEM_SERVER)
 public final class RuntimePermissionsState {
 
     /**
diff --git a/apex/permission/service/java/com/android/role/persistence/RolesPersistence.java b/apex/permission/service/java/com/android/role/persistence/RolesPersistence.java
index 63c8eed..2908a38 100644
--- a/apex/permission/service/java/com/android/role/persistence/RolesPersistence.java
+++ b/apex/permission/service/java/com/android/role/persistence/RolesPersistence.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
 import android.os.UserHandle;
 
 /**
@@ -27,7 +28,7 @@
  * TODO(b/147914847): Remove @hide when it becomes the default.
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES, process = SystemApi.Process.SYSTEM_SERVER)
+@SystemApi(client = Client.SYSTEM_SERVER)
 public interface RolesPersistence {
 
     /**
diff --git a/apex/permission/service/java/com/android/role/persistence/RolesState.java b/apex/permission/service/java/com/android/role/persistence/RolesState.java
index bff980e..7da9d11 100644
--- a/apex/permission/service/java/com/android/role/persistence/RolesState.java
+++ b/apex/permission/service/java/com/android/role/persistence/RolesState.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
 
 import java.util.Map;
 import java.util.Set;
@@ -29,7 +30,7 @@
  * TODO(b/147914847): Remove @hide when it becomes the default.
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES, process = SystemApi.Process.SYSTEM_SERVER)
+@SystemApi(client = Client.SYSTEM_SERVER)
 public final class RolesState {
 
     /**
diff --git a/apex/permission/testing/Android.bp b/apex/permission/testing/Android.bp
index f8978dc..63bf0a0 100644
--- a/apex/permission/testing/Android.bp
+++ b/apex/permission/testing/Android.bp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-apex {
+apex_test {
     name: "test_com.android.permission",
     visibility: [
         "//system/apex/tests",
diff --git a/apex/sdkextensions/derive_sdk/derive_sdk.cpp b/apex/sdkextensions/derive_sdk/derive_sdk.cpp
index 6fb7ef4..900193a 100644
--- a/apex/sdkextensions/derive_sdk/derive_sdk.cpp
+++ b/apex/sdkextensions/derive_sdk/derive_sdk.cpp
@@ -69,7 +69,7 @@
     auto itr = std::min_element(versions.begin(), versions.end());
     std::string prop_value = itr == versions.end() ? "0" : std::to_string(*itr);
 
-    if (!android::base::SetProperty("ro.build.version.extensions.r", prop_value)) {
+    if (!android::base::SetProperty("build.version.extensions.r", prop_value)) {
         LOG(ERROR) << "failed to set sdk_info prop";
         return EXIT_FAILURE;
     }
diff --git a/apex/sdkextensions/framework/Android.bp b/apex/sdkextensions/framework/Android.bp
index 245a96b..86f4ab7 100644
--- a/apex/sdkextensions/framework/Android.bp
+++ b/apex/sdkextensions/framework/Android.bp
@@ -44,34 +44,68 @@
     ],
 }
 
-droidstubs {
-    name: "framework-sdkextensions-droidstubs-publicapi",
-    defaults: [
-        "framework-sdkextensions-stubs-defaults",
-        "framework-module-stubs-defaults-publicapi",
-    ]
-}
-
-droidstubs {
-    name: "framework-sdkextensions-droidstubs-systemapi",
-    defaults: [
-        "framework-sdkextensions-stubs-defaults",
-        "framework-module-stubs-defaults-systemapi",
-    ]
-}
-
 stubs_defaults {
     name: "framework-sdkextensions-stubs-defaults",
-    srcs: [
-        ":framework-sdkextensions-sources",
-        ":framework-annotations",
-    ],
+    srcs: [ ":framework-sdkextensions-sources" ],
+    libs: [ "framework-annotations-lib" ],
     sdk_version: "system_current",
 }
 
+droidstubs {
+    name: "framework-sdkextensions-stubs-srcs-publicapi",
+    defaults: [
+        "framework-module-stubs-defaults-publicapi",
+        "framework-sdkextensions-stubs-defaults",
+    ]
+}
+
+droidstubs {
+    name: "framework-sdkextensions-stubs-srcs-systemapi",
+    defaults: [
+        "framework-module-stubs-defaults-systemapi",
+        "framework-sdkextensions-stubs-defaults",
+    ]
+}
+
+droidstubs {
+    name: "framework-sdkextensions-api-module_libs_api",
+    defaults: [
+        "framework-module-api-defaults-module_libs_api",
+        "framework-sdkextensions-stubs-defaults",
+    ]
+}
+
+droidstubs {
+    name: "framework-sdkextensions-stubs-srcs-module_libs_api",
+    defaults: [
+        "framework-module-stubs-defaults-module_libs_api",
+        "framework-sdkextensions-stubs-defaults",
+    ]
+}
+
+java_library {
+    name: "framework-sdkextensions-stubs-publicapi",
+    srcs: [":framework-sdkextensions-stubs-srcs-publicapi"],
+    sdk_version: "current",
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/apex/sdkextensions", // sdkextensions SDK
+    ]
+}
+
 java_library {
     name: "framework-sdkextensions-stubs-systemapi",
-    srcs: [":framework-sdkextensions-droidstubs-systemapi"],
+    srcs: [":framework-sdkextensions-stubs-srcs-systemapi"],
+    sdk_version: "system_current",
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/apex/sdkextensions", // sdkextensions SDK
+    ]
+}
+
+java_library {
+    name: "framework-sdkextensions-stubs-module_libs_api",
+    srcs: [":framework-sdkextensions-stubs-srcs-module_libs_api"],
     sdk_version: "system_current",
     visibility: [
         "//frameworks/base", // Framework
diff --git a/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java b/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
index a8a7eff..103b53e 100644
--- a/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
+++ b/apex/sdkextensions/framework/java/android/os/ext/SdkExtensions.java
@@ -38,7 +38,7 @@
 
     private static final int R_EXTENSION_INT;
     static {
-        R_EXTENSION_INT = SystemProperties.getInt("ro.build.version.extensions.r", 0);
+        R_EXTENSION_INT = SystemProperties.getInt("build.version.extensions.r", 0);
     }
 
     /**
diff --git a/apex/sdkextensions/framework/java/android/os/ext/test/Test.java b/apex/sdkextensions/framework/java/android/os/ext/test/Test.java
new file mode 100644
index 0000000..1715f49
--- /dev/null
+++ b/apex/sdkextensions/framework/java/android/os/ext/test/Test.java
@@ -0,0 +1,53 @@
+/*
+ * 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 android.os.ext.test;
+
+import android.annotation.SystemApi;
+
+/**
+ * This class exists temporarily to verify SDK updates are working properly.
+ * @deprecated Do not use.
+ */
+@Deprecated
+public class Test {
+
+    public Test() { }
+
+    /** @hide */
+    public void testA() {}
+
+    /** @hide */
+    public void testB() {}
+
+    /** @hide */
+    public void testC() {}
+
+    /** @hide */
+    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
+    public void testD() {}
+
+    public void testE() {}
+
+    /** @hide */
+    @SystemApi
+    public void testF() {}
+
+    /** @hide */
+    @SystemApi
+    public void testG() {}
+
+}
diff --git a/apex/sdkextensions/testing/Android.bp b/apex/sdkextensions/testing/Android.bp
index e6451cc..f2f5b32 100644
--- a/apex/sdkextensions/testing/Android.bp
+++ b/apex/sdkextensions/testing/Android.bp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-apex {
+apex_test {
     name: "test_com.android.sdkext",
     visibility: [ "//system/apex/tests" ],
     defaults: ["com.android.sdkext-defaults"],
diff --git a/apex/statsd/Android.bp b/apex/statsd/Android.bp
index 09ca1d2..c0f84a0 100644
--- a/apex/statsd/Android.bp
+++ b/apex/statsd/Android.bp
@@ -19,14 +19,17 @@
 }
 
 apex_defaults {
-    // libc.so and libcutils.so are included in the apex
-    // native_shared_libs: ["libc", "libcutils"],
+    native_shared_libs: [
+        "libstatspull",
+        "libstats_jni",
+    ],
     // binaries: ["vold"],
     java_libs: [
         "framework-statsd",
         "service-statsd",
     ],
     // prebuilts: ["my_prebuilt"],
+    compile_multilib: "both",
     name: "com.android.os.statsd-defaults",
     key: "com.android.os.statsd.key",
     certificate: ":com.android.os.statsd.certificate",
@@ -44,3 +47,33 @@
     // com.android.os.statsd.pk8 (the private key)
     certificate: "com.android.os.statsd",
 }
+
+
+// JNI library for StatsLog.write
+cc_library_shared {
+    name: "libstats_jni",
+    srcs: ["jni/**/*.cpp"],
+    shared_libs: [
+        "libnativehelper", // Has stable abi - should not be copied into apex.
+        "liblog",  // Has a stable abi - should not be copied into apex.
+    ],
+    static_libs: [
+        //TODO: make shared - need libstatssocket to also live in the apex.
+        "libstatssocket",
+        "libcutils", // TODO: remove - needed by libstatssocket
+    ],
+    //TODO: is libc++_static correct?
+    stl: "libc++_static",
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wextra",
+        "-Wno-unused-parameter",
+    ],
+    apex_available: [
+        "com.android.os.statsd",
+        "test_com.android.os.statsd",
+        //TODO (b/148620413): remove platform.
+         "//apex_available:platform",
+    ],
+}
\ No newline at end of file
diff --git a/apex/statsd/aidl/Android.bp b/apex/statsd/aidl/Android.bp
index 6d639fd..4ccdd7e 100644
--- a/apex/statsd/aidl/Android.bp
+++ b/apex/statsd/aidl/Android.bp
@@ -13,35 +13,35 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 //
-
-// TODO(b/145815909): move StatsDimensionsValue.aidl here
 filegroup {
-    name: "statsd_aidl",
+    name: "framework-statsd-aidl-sources",
+    srcs: ["**/*.aidl"],
+}
+
+aidl_interface {
+    name: "statsd-aidl",
     srcs: [
         "android/os/IPendingIntentRef.aidl",
         "android/os/IPullAtomCallback.aidl",
         "android/os/IPullAtomResultReceiver.aidl",
         "android/os/IStatsCompanionService.aidl",
         "android/os/IStatsd.aidl",
+        "android/os/StatsDimensionsValueParcel.aidl",
         "android/util/StatsEventParcel.aidl",
     ],
-}
-
-filegroup {
-    name: "statsd_java_aidl",
-    srcs: ["**/*.aidl"],
-}
-
-// This library is currently unused
-aidl_interface {
-    name: "stats-event-parcel-aidl",
-    srcs: ["android/util/StatsEventParcel.aidl"],
     backend: {
         java: {
-            sdk_version: "28",
+            enabled: false, // the platform uses statsd_java_aidl
         },
         cpp: {
-            enabled: false,
+            enabled: true,
+        },
+        ndk: {
+            enabled: true,
+            apex_available: [
+                "com.android.os.statsd",
+            ],
         }
-    }
+
+    },
 }
diff --git a/apex/statsd/aidl/android/os/IPendingIntentRef.aidl b/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
index 6b9e467..000a699 100644
--- a/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
+++ b/apex/statsd/aidl/android/os/IPendingIntentRef.aidl
@@ -16,7 +16,7 @@
 
 package android.os;
 
-import android.os.StatsDimensionsValue;
+import android.os.StatsDimensionsValueParcel;
 
 /**
   * Binder interface to hold a PendingIntent for StatsCompanionService.
@@ -42,5 +42,5 @@
       */
      oneway void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
                                          long subscriptionRuleId, in String[] cookies,
-                                         in StatsDimensionsValue dimensionsValue);
-}
\ No newline at end of file
+                                         in StatsDimensionsValueParcel dimensionsValueParcel);
+}
diff --git a/apex/statsd/aidl/android/os/IStatsCompanionService.aidl b/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
index bdd1da7..b94928f 100644
--- a/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
+++ b/apex/statsd/aidl/android/os/IStatsCompanionService.aidl
@@ -61,4 +61,11 @@
 
     /** Tells StatsCompaionService to grab the uid map snapshot and send it to statsd. */
     oneway void triggerUidSnapshot();
+
+    /**
+     * Ask StatsCompanionService if the given permission is allowed for a particular process
+     * and user ID. statsd is incapable of doing this check itself because checkCallingPermission
+     * is not currently supported by libbinder_ndk.
+     */
+    boolean checkPermission(String permission, int pid, int uid);
 }
diff --git a/apex/statsd/aidl/android/os/IStatsd.aidl b/apex/statsd/aidl/android/os/IStatsd.aidl
index a2564212..10b1e5b 100644
--- a/apex/statsd/aidl/android/os/IStatsd.aidl
+++ b/apex/statsd/aidl/android/os/IStatsd.aidl
@@ -222,18 +222,6 @@
     const int FLAG_REQUIRE_LOW_LATENCY_MONITOR = 0x04;
 
     /**
-     * Logs an event for binary push for module updates.
-     */
-     oneway void sendBinaryPushStateChangedAtom(in String trainName, in long trainVersionCode,
-         in int options, in int state, in long[] experimentId);
-
-    /**
-     * Logs an event for watchdog rollbacks.
-     */
-     oneway void sendWatchdogRollbackOccurredAtom(in int rollbackType, in String packageName,
-         in long packageVersionCode, in int rollbackReason, in String failingPackageName);
-
-    /**
      * Returns the most recently registered experiment IDs.
      */
     long[] getRegisteredExperimentIds();
diff --git a/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl b/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl
new file mode 100644
index 0000000..a8685e3
--- /dev/null
+++ b/apex/statsd/aidl/android/os/StatsDimensionsValueParcel.aidl
@@ -0,0 +1,21 @@
+package android.os;
+
+/**
+ * @hide
+ */
+parcelable StatsDimensionsValueParcel {
+    /**
+     * Field equals:
+     *      - atomTag for top level StatsDimensionsValueParcel
+     *      - position in dimension for all other levels
+     */
+    int field;
+    int valueType;
+
+    String stringValue;
+    int intValue;
+    long longValue;
+    boolean boolValue;
+    float floatValue;
+    StatsDimensionsValueParcel[] tupleValue;
+}
diff --git a/apex/statsd/framework/Android.bp b/apex/statsd/framework/Android.bp
index f66f034..ab669d4 100644
--- a/apex/statsd/framework/Android.bp
+++ b/apex/statsd/framework/Android.bp
@@ -12,38 +12,85 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+package {
+    default_visibility: [ ":__pkg__" ]
+}
+
+genrule {
+    name: "statslog-statsd-java-gen",
+    tools: ["stats-log-api-gen"],
+    cmd: "$(location stats-log-api-gen) --java $(out) --module statsd" +
+         " --javaPackage com.android.internal.util --javaClass StatsdStatsLog",
+    out: ["com/android/internal/util/StatsdStatsLog.java"],
+}
+
+java_library_static {
+    name: "statslog-statsd",
+    srcs: [
+        ":statslog-statsd-java-gen",
+    ],
+    visibility: [
+        "//cts/hostsidetests/statsd/apps:__subpackages__",
+    ]
+}
+
 filegroup {
     name: "framework-statsd-sources",
     srcs: [
-    "java/**/*.java",
+        "java/**/*.java",
+        ":framework-statsd-aidl-sources",
+        ":statslog-statsd-java-gen",
     ],
-    path: "java",
+    visibility: [
+        "//frameworks/base", // For the "global" stubs.
+    ],
+}
+
+java_defaults {
+    name: "framework-statsd-defaults",
+
+    // TODO(b/146757305): Use "module_current" once it's ready.
+    sdk_version: "core_current",
+
+    libs: [
+        "framework-annotations-lib",
+
+        // TODO(b/146757305): should be unnecessary once
+        // sdk_version="module_lib_current" or "module_current"
+        "android_module_lib_stubs_current",
+    ],
 }
 
 java_library {
     name: "framework-statsd",
+    defaults: [
+        "framework-statsd-defaults",
+    ],
     installable: true,
-    // TODO(b/146209659): Use system_current instead.
-    sdk_version: "core_platform",
+
     srcs: [
         ":framework-statsd-sources",
     ],
+
+    aidl: {
+        // TODO(b/146757305): should be unnecessary once
+        // sdk_version="module_lib_current" or "module_current"
+        include_dirs: [
+            // To refer:
+            // android.app.PendintIntent
+            "frameworks/base/core/java",
+        ],
+    },
+
     permitted_packages: [
         "android.app",
+        "android.os",
         "android.util",
     ],
-    libs: [
-        "framework-annotations-lib",
-        // TODO(b/146230220): Use framework-system-stubs instead.
-        //"android_system_stubs_current",
-        //"framework_module_lib_stubs_current",
-        "framework-all",
-    ],
+
     hostdex: true, // for hiddenapi check
     visibility: [
         "//frameworks/base/apex/statsd:__subpackages__",
-        //TODO(b/146167933) remove this when framework is built with framework-statsd-stubs
-        "//frameworks/base",
     ],
     apex_available: [
         "com.android.os.statsd",
@@ -51,31 +98,84 @@
     ],
 }
 
-droidstubs {
-    name: "framework-statsd-stubs-docs",
-    defaults: [
-        "framework-module-stubs-defaults-systemapi"
-    ],
+stubs_defaults {
+    name: "framework-statsd-stubs-srcs-defaults",
     srcs: [
-        ":framework-annotations",
         ":framework-statsd-sources",
     ],
+
     libs: [
-        // TODO(b/148218250): Change to android_system_stubs_current
-        "framework-all",
+        "framework-annotations-lib",
     ],
-    sdk_version: "core_platform",
+    sdk_version: "system_current",
 }
 
-// TODO(b/146167933): Use these stubs in frameworks/base/Android.bp
+droidstubs {
+    name: "framework-statsd-stubs-srcs-publicapi",
+    defaults: [
+        "framework-module-stubs-defaults-systemapi",
+        "framework-statsd-stubs-srcs-defaults",
+    ],
+}
+
+droidstubs {
+    name: "framework-statsd-stubs-srcs-systemapi",
+    defaults: [
+        "framework-module-stubs-defaults-systemapi",
+        "framework-statsd-stubs-srcs-defaults",
+    ],
+
+}
+
+droidstubs {
+    name: "framework-statsd-api-module_libs_api",
+    defaults: [
+        "framework-module-api-defaults-module_libs_api",
+        "framework-statsd-stubs-srcs-defaults",
+    ],
+}
+
+droidstubs {
+    name: "framework-statsd-stubs-srcs-module_libs_api",
+    defaults: [
+        "framework-module-stubs-defaults-module_libs_api",
+        "framework-statsd-stubs-srcs-defaults",
+    ],
+}
+
 java_library {
-    name: "framework-statsd-stubs",
-    srcs: [
-        ":framework-statsd-stubs-docs",
+    name: "framework-statsd-stubs-publicapi",
+    defaults: [
+        "framework-statsd-defaults",
     ],
-    libs: [
-        // TODO(b/148218250): Change to android_system_stubs_current
-        "framework-all",
+    srcs: [ ":framework-statsd-stubs-srcs-publicapi" ],
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/apex/statsd", // statsd apex
+    ]
+}
+
+java_library {
+    name: "framework-statsd-stubs-systemapi",
+    defaults: [
+        "framework-statsd-defaults",
     ],
-    sdk_version: "core_platform",
+    srcs: [ ":framework-statsd-stubs-srcs-systemapi" ],
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/apex/statsd", // statsd apex
+    ]
+}
+
+java_library {
+    name: "framework-statsd-stubs-module_libs_api",
+    defaults: [
+        "framework-statsd-defaults",
+    ],
+    srcs: [ ":framework-statsd-stubs-srcs-module_libs_api" ],
+    visibility: [
+        "//frameworks/base", // Framework
+        "//frameworks/base/apex/statsd", // statsd apex
+        "//frameworks/opt/net/wifi/service" // wifi service
+    ]
 }
diff --git a/apex/statsd/framework/java/android/app/StatsManager.java b/apex/statsd/framework/java/android/app/StatsManager.java
index a1de330..526d17f 100644
--- a/apex/statsd/framework/java/android/app/StatsManager.java
+++ b/apex/statsd/framework/java/android/app/StatsManager.java
@@ -32,7 +32,7 @@
 import android.os.RemoteException;
 import android.os.StatsFrameworkInitializer;
 import android.util.AndroidException;
-import android.util.Slog;
+import android.util.Log;
 import android.util.StatsEvent;
 import android.util.StatsEventParcel;
 
@@ -155,7 +155,7 @@
                 // can throw IllegalArgumentException
                 service.addConfiguration(configKey, config, mContext.getOpPackageName());
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when adding configuration");
+                Log.e(TAG, "Failed to connect to statsmanager when adding configuration");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
                 throw new StatsUnavailableException(e.getMessage(), e);
@@ -191,7 +191,7 @@
                 IStatsManagerService service = getIStatsManagerServiceLocked();
                 service.removeConfiguration(configKey, mContext.getOpPackageName());
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when removing configuration");
+                Log.e(TAG, "Failed to connect to statsmanager when removing configuration");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
                 throw new StatsUnavailableException(e.getMessage(), e);
@@ -258,7 +258,7 @@
                             mContext.getOpPackageName());
                 }
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when adding broadcast subscriber",
+                Log.e(TAG, "Failed to connect to statsmanager when adding broadcast subscriber",
                         e);
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
@@ -311,7 +311,7 @@
                 }
 
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when registering data listener.");
+                Log.e(TAG, "Failed to connect to statsmanager when registering data listener.");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
                 throw new StatsUnavailableException(e.getMessage(), e);
@@ -348,7 +348,7 @@
                 }
 
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager "
+                Log.e(TAG, "Failed to connect to statsmanager "
                         + "when registering active configs listener.");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
@@ -387,7 +387,7 @@
                 IStatsManagerService service = getIStatsManagerServiceLocked();
                 return service.getData(configKey, mContext.getOpPackageName());
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when getting data");
+                Log.e(TAG, "Failed to connect to statsmanager when getting data");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
                 throw new StatsUnavailableException(e.getMessage(), e);
@@ -424,7 +424,7 @@
                 IStatsManagerService service = getIStatsManagerServiceLocked();
                 return service.getMetadata(mContext.getOpPackageName());
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to connect to statsmanager when getting metadata");
+                Log.e(TAG, "Failed to connect to statsmanager when getting metadata");
                 throw new StatsUnavailableException("could not connect", e);
             } catch (SecurityException e) {
                 throw new StatsUnavailableException(e.getMessage(), e);
@@ -464,7 +464,7 @@
                 return service.getRegisteredExperimentIds();
             } catch (RemoteException e) {
                 if (DEBUG) {
-                    Slog.d(TAG,
+                    Log.d(TAG,
                             "Failed to connect to StatsManagerService when getting "
                                     + "registered experiment IDs");
                 }
@@ -476,7 +476,7 @@
     /**
      * Registers a callback for an atom when that atom is to be pulled. The stats service will
      * invoke pullData in the callback when the stats service determines that this atom needs to be
-     * pulled.
+     * pulled. This method should not be called by third-party apps.
      *
      * @param atomTag           The tag of the atom for this puller callback.
      * @param metadata          Optional metadata specifying the timeout, cool down time, and
@@ -485,6 +485,7 @@
      * @param executor          The executor in which to run the callback.
      *
      */
+    @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM)
     public void registerPullAtomCallback(int atomTag, @Nullable PullAtomMetadata metadata,
             @NonNull @CallbackExecutor Executor executor,
             @NonNull StatsPullAtomCallback callback) {
@@ -510,11 +511,12 @@
 
     /**
      * Unregisters a callback for an atom when that atom is to be pulled. Note that any ongoing
-     * pulls will still occur.
+     * pulls will still occur. This method should not be called by third-party apps.
      *
      * @param atomTag           The tag of the atom of which to unregister
      *
      */
+    @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM)
     public void unregisterPullAtomCallback(int atomTag) {
         synchronized (sLock) {
             try {
@@ -553,7 +555,7 @@
                     try {
                         resultReceiver.pullFinished(atomTag, success, parcels);
                     } catch (RemoteException e) {
-                        Slog.w(TAG, "StatsPullResultReceiver failed for tag " + mAtomId);
+                        Log.w(TAG, "StatsPullResultReceiver failed for tag " + mAtomId);
                     }
                 });
             } finally {
diff --git a/core/java/android/os/StatsDimensionsValue.java b/apex/statsd/framework/java/android/os/StatsDimensionsValue.java
similarity index 83%
rename from core/java/android/os/StatsDimensionsValue.java
rename to apex/statsd/framework/java/android/os/StatsDimensionsValue.java
index da13ea1..35273da 100644
--- a/core/java/android/os/StatsDimensionsValue.java
+++ b/apex/statsd/framework/java/android/os/StatsDimensionsValue.java
@@ -16,7 +16,7 @@
 package android.os;
 
 import android.annotation.SystemApi;
-import android.util.Slog;
+import android.util.Log;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -96,6 +96,47 @@
     }
 
     /**
+     * Creates a {@code StatsDimensionsValue} from a StatsDimensionsValueParcel
+     * TODO(b/149103391): Make StatsDimensionsValue a wrapper on top of
+     * StatsDimensionsValueParcel.
+     *
+     * @hide
+     */
+    public StatsDimensionsValue(StatsDimensionsValueParcel parcel) {
+        mField = parcel.field;
+        mValueType = parcel.valueType;
+        switch (mValueType) {
+            case STRING_VALUE_TYPE:
+                mValue = parcel.stringValue;
+                break;
+            case INT_VALUE_TYPE:
+                mValue = parcel.intValue;
+                break;
+            case LONG_VALUE_TYPE:
+                mValue = parcel.longValue;
+                break;
+            case BOOLEAN_VALUE_TYPE:
+                mValue = parcel.boolValue;
+                break;
+            case FLOAT_VALUE_TYPE:
+                mValue = parcel.floatValue;
+                break;
+            case TUPLE_VALUE_TYPE:
+                StatsDimensionsValue[] values = new StatsDimensionsValue[parcel.tupleValue.length];
+                for (int i = 0; i < parcel.tupleValue.length; i++) {
+                    values[i] = new StatsDimensionsValue(parcel.tupleValue[i]);
+                }
+                mValue = values;
+                break;
+            default:
+                Log.w(TAG, "StatsDimensionsValueParcel contains bad valueType: " + mValueType);
+                mValue = null;
+                break;
+        }
+    }
+
+
+    /**
      * Return the field, i.e. the tag of a statsd atom.
      *
      * @return the field
@@ -114,7 +155,7 @@
         try {
             if (mValueType == STRING_VALUE_TYPE) return (String) mValue;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return null;
     }
@@ -128,7 +169,7 @@
         try {
             if (mValueType == INT_VALUE_TYPE) return (Integer) mValue;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return 0;
     }
@@ -142,7 +183,7 @@
         try {
             if (mValueType == LONG_VALUE_TYPE) return (Long) mValue;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return 0;
     }
@@ -157,7 +198,7 @@
         try {
             if (mValueType == BOOLEAN_VALUE_TYPE) return (Boolean) mValue;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return false;
     }
@@ -171,7 +212,7 @@
         try {
             if (mValueType == FLOAT_VALUE_TYPE) return (Float) mValue;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return 0;
     }
@@ -197,7 +238,7 @@
             }
             return copy;
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
             return null;
         }
     }
@@ -256,7 +297,7 @@
             }
             return sb.toString();
         } catch (ClassCastException e) {
-            Slog.w(TAG, "Failed to successfully get value", e);
+            Log.w(TAG, "Failed to successfully get value", e);
         }
         return "";
     }
@@ -264,7 +305,8 @@
     /**
      * Parcelable Creator for StatsDimensionsValue.
      */
-    public static final @android.annotation.NonNull Parcelable.Creator<StatsDimensionsValue> CREATOR = new
+    public static final @android.annotation.NonNull
+            Parcelable.Creator<StatsDimensionsValue> CREATOR = new
             Parcelable.Creator<StatsDimensionsValue>() {
                 public StatsDimensionsValue createFromParcel(Parcel in) {
                     return new StatsDimensionsValue(in);
@@ -315,11 +357,11 @@
                     return true;
                 }
                 default:
-                    Slog.w(TAG, "readValue of an impossible type " + valueType);
+                    Log.w(TAG, "readValue of an impossible type " + valueType);
                     return false;
             }
         } catch (ClassCastException e) {
-            Slog.w(TAG, "writeValue cast failed", e);
+            Log.w(TAG, "writeValue cast failed", e);
             return false;
         }
     }
@@ -346,7 +388,7 @@
                 return values;
             }
             default:
-                Slog.w(TAG, "readValue of an impossible type " + valueType);
+                Log.w(TAG, "readValue of an impossible type " + valueType);
                 return null;
         }
     }
diff --git a/apex/statsd/framework/java/android/os/StatsFrameworkInitializer.java b/apex/statsd/framework/java/android/os/StatsFrameworkInitializer.java
index 3d95533..8dc9123 100644
--- a/apex/statsd/framework/java/android/os/StatsFrameworkInitializer.java
+++ b/apex/statsd/framework/java/android/os/StatsFrameworkInitializer.java
@@ -17,6 +17,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.SystemApi.Client;
 import android.app.StatsManager;
 import android.app.SystemServiceRegistry;
 import android.content.Context;
@@ -24,10 +25,9 @@
 /**
  * Class for performing registration for all stats services
  *
- * TODO(b/148225705) Change to @SystemApi(client=MODULE_LIBRARIES) when the build system is ready.
  * @hide
  */
-@SystemApi
+@SystemApi(client = Client.MODULE_LIBRARIES)
 public class StatsFrameworkInitializer {
     private StatsFrameworkInitializer() {
     }
diff --git a/core/java/android/util/StatsLog.java b/apex/statsd/framework/java/android/util/StatsLog.java
similarity index 65%
rename from core/java/android/util/StatsLog.java
rename to apex/statsd/framework/java/android/util/StatsLog.java
index 8635340..511bc01 100644
--- a/core/java/android/util/StatsLog.java
+++ b/apex/statsd/framework/java/android/util/StatsLog.java
@@ -26,15 +26,19 @@
 import android.content.Context;
 import android.os.IStatsd;
 import android.os.RemoteException;
-import android.os.ServiceManager;
+import android.os.StatsFrameworkInitializer;
+import android.util.proto.ProtoOutputStream;
+
+import com.android.internal.util.StatsdStatsLog;
 
 /**
  * StatsLog provides an API for developers to send events to statsd. The events can be used to
  * define custom metrics inside statsd.
  */
-public final class StatsLog extends StatsLogInternal {
+public final class StatsLog {
     private static final String TAG = "StatsLog";
     private static final boolean DEBUG = false;
+    private static final int EXPERIMENT_IDS_FIELD_ID = 1;
 
     private static IStatsd sService;
 
@@ -55,17 +59,17 @@
                 IStatsd service = getIStatsdLocked();
                 if (service == null) {
                     if (DEBUG) {
-                        Slog.d(TAG, "Failed to find statsd when logging start");
+                        Log.d(TAG, "Failed to find statsd when logging start");
                     }
                     return false;
                 }
                 service.sendAppBreadcrumbAtom(label,
-                        StatsLog.APP_BREADCRUMB_REPORTED__STATE__START);
+                        StatsdStatsLog.APP_BREADCRUMB_REPORTED__STATE__START);
                 return true;
             } catch (RemoteException e) {
                 sService = null;
                 if (DEBUG) {
-                    Slog.d(TAG, "Failed to connect to statsd when logging start");
+                    Log.d(TAG, "Failed to connect to statsd when logging start");
                 }
                 return false;
             }
@@ -84,16 +88,17 @@
                 IStatsd service = getIStatsdLocked();
                 if (service == null) {
                     if (DEBUG) {
-                        Slog.d(TAG, "Failed to find statsd when logging stop");
+                        Log.d(TAG, "Failed to find statsd when logging stop");
                     }
                     return false;
                 }
-                service.sendAppBreadcrumbAtom(label, StatsLog.APP_BREADCRUMB_REPORTED__STATE__STOP);
+                service.sendAppBreadcrumbAtom(
+                        label, StatsdStatsLog.APP_BREADCRUMB_REPORTED__STATE__STOP);
                 return true;
             } catch (RemoteException e) {
                 sService = null;
                 if (DEBUG) {
-                    Slog.d(TAG, "Failed to connect to statsd when logging stop");
+                    Log.d(TAG, "Failed to connect to statsd when logging stop");
                 }
                 return false;
             }
@@ -112,17 +117,17 @@
                 IStatsd service = getIStatsdLocked();
                 if (service == null) {
                     if (DEBUG) {
-                        Slog.d(TAG, "Failed to find statsd when logging event");
+                        Log.d(TAG, "Failed to find statsd when logging event");
                     }
                     return false;
                 }
                 service.sendAppBreadcrumbAtom(
-                        label, StatsLog.APP_BREADCRUMB_REPORTED__STATE__UNSPECIFIED);
+                        label, StatsdStatsLog.APP_BREADCRUMB_REPORTED__STATE__UNSPECIFIED);
                 return true;
             } catch (RemoteException e) {
                 sService = null;
                 if (DEBUG) {
-                    Slog.d(TAG, "Failed to connect to statsd when logging event");
+                    Log.d(TAG, "Failed to connect to statsd when logging event");
                 }
                 return false;
             }
@@ -149,77 +154,36 @@
     public static boolean logBinaryPushStateChanged(@NonNull String trainName,
             long trainVersionCode, int options, int state,
             @NonNull long[] experimentIds) {
-        synchronized (sLogLock) {
-            try {
-                IStatsd service = getIStatsdLocked();
-                if (service == null) {
-                    if (DEBUG) {
-                        Slog.d(TAG, "Failed to find statsd when logging event");
-                    }
-                    return false;
-                }
-                service.sendBinaryPushStateChangedAtom(
-                        trainName, trainVersionCode, options, state, experimentIds);
-                return true;
-            } catch (RemoteException e) {
-                sService = null;
-                if (DEBUG) {
-                    Slog.d(TAG,
-                            "Failed to connect to StatsCompanionService when logging "
-                                    + "BinaryPushStateChanged");
-                }
-                return false;
-            }
+        ProtoOutputStream proto = new ProtoOutputStream();
+        for (long id : experimentIds) {
+            proto.write(
+                    ProtoOutputStream.FIELD_TYPE_INT64
+                    | ProtoOutputStream.FIELD_COUNT_REPEATED
+                    | EXPERIMENT_IDS_FIELD_ID,
+                    id);
         }
+        StatsdStatsLog.write(StatsdStatsLog.BINARY_PUSH_STATE_CHANGED,
+                trainName,
+                trainVersionCode,
+                (options & IStatsd.FLAG_REQUIRE_STAGING) > 0,
+                (options & IStatsd.FLAG_ROLLBACK_ENABLED) > 0,
+                (options & IStatsd.FLAG_REQUIRE_LOW_LATENCY_MONITOR) > 0,
+                state,
+                proto.getBytes(),
+                0,
+                0,
+                false);
+        return true;
     }
 
-    /**
-     * Logs an event for watchdog rollbacks.
-     *
-     * @param rollbackType          state of the rollback.
-     * @param packageName           package name being rolled back.
-     * @param packageVersionCode    version of the package being rolled back.
-     * @param rollbackReason        reason the package is being rolled back.
-     * @param failingPackageName    the package name causing the failure.
-     *
-     * @return True if the log request was sent to statsd.
-     *
-     * @hide
-     */
-    @RequiresPermission(allOf = {DUMP, PACKAGE_USAGE_STATS})
-    public static boolean logWatchdogRollbackOccurred(int rollbackType, String packageName,
-            long packageVersionCode, int rollbackReason, String failingPackageName) {
-        synchronized (sLogLock) {
-            try {
-                IStatsd service = getIStatsdLocked();
-                if (service == null) {
-                    if (DEBUG) {
-                        Slog.d(TAG, "Failed to find statsd when logging event");
-                    }
-                    return false;
-                }
-
-                service.sendWatchdogRollbackOccurredAtom(rollbackType, packageName,
-                        packageVersionCode, rollbackReason, failingPackageName);
-                return true;
-            } catch (RemoteException e) {
-                sService = null;
-                if (DEBUG) {
-                    Slog.d(TAG,
-                            "Failed to connect to StatsCompanionService when logging "
-                                    + "WatchdogRollbackOccurred");
-                }
-                return false;
-            }
-        }
-    }
-
-
     private static IStatsd getIStatsdLocked() throws RemoteException {
         if (sService != null) {
             return sService;
         }
-        sService = IStatsd.Stub.asInterface(ServiceManager.getService("stats"));
+        sService = IStatsd.Stub.asInterface(StatsFrameworkInitializer
+            .getStatsServiceManager()
+            .getStatsdServiceRegisterer()
+            .get());
         return sService;
     }
 
diff --git a/core/jni/android_util_StatsLog.cpp b/apex/statsd/jni/android_util_StatsLog.cpp
similarity index 71%
rename from core/jni/android_util_StatsLog.cpp
rename to apex/statsd/jni/android_util_StatsLog.cpp
index 9225fc2..9d410eb 100644
--- a/core/jni/android_util_StatsLog.cpp
+++ b/apex/statsd/jni/android_util_StatsLog.cpp
@@ -17,12 +17,9 @@
 #define LOG_NAMESPACE "StatsLog.tag."
 #define LOG_TAG "StatsLog_println"
 
-#include <assert.h>
-
 #include "jni.h"
+#include <log/log.h>
 #include <nativehelper/JNIHelp.h>
-#include "utils/misc.h"
-#include "core_jni_helpers.h"
 #include "stats_buffer_writer.h"
 
 namespace android {
@@ -57,7 +54,27 @@
 
 int register_android_util_StatsLog(JNIEnv* env)
 {
-    return RegisterMethodsOrDie(env, "android/util/StatsLog", gMethods, NELEM(gMethods));
+    return jniRegisterNativeMethods(env, "android/util/StatsLog", gMethods, NELEM(gMethods));
 }
-
 }; // namespace android
+
+/*
+ * JNI Initialization
+ */
+jint JNI_OnLoad(JavaVM* jvm, void* reserved) {
+    JNIEnv* e;
+    int status;
+
+    ALOGV("statsd : loading JNI\n");
+    // Check JNI version
+    if (jvm->GetEnv((void**)&e, JNI_VERSION_1_4)) {
+        ALOGE("JNI version mismatch error");
+        return JNI_ERR;
+    }
+    status = android::register_android_util_StatsLog(e);
+    if (status < 0) {
+        ALOGE("jni statsd registration failure, status: %d", status);
+        return JNI_ERR;
+    }
+    return JNI_VERSION_1_4;
+}
diff --git a/apex/statsd/service/Android.bp b/apex/statsd/service/Android.bp
index 9103848..0f325e3 100644
--- a/apex/statsd/service/Android.bp
+++ b/apex/statsd/service/Android.bp
@@ -1,18 +1,36 @@
 // Statsd Service jar, which will eventually be put in the statsd mainline apex.
 // service-statsd needs to be added to PRODUCT_UPDATABLE_SYSTEM_SERVER_JARS.
 // This jar will contain StatsCompanionService
+
+filegroup {
+    name: "service-statsd-sources",
+    srcs: [
+        "java/**/*.java",
+    ],
+}
+
 java_library {
     name: "service-statsd",
     installable: true,
 
     srcs: [
-        "java/**/*.java",
+        ":service-statsd-sources",
     ],
-    // TODO: link against the proper stubs (b/146084685).
+
+    // TODO(b/146757305) should be "module_current" since not allowed to use
+    // @CorePlatformApi's
+    sdk_version: "core_platform",
+
     libs: [
-        "framework-minus-apex",
-        "services.core",
+        "framework-annotations-lib",
+        "services-stubs",
+        "framework-statsd",
+
+        // TODO(b/146757305): should be unnecessary once
+        // sdk_version="module_lib_current" or "module_current"
+        "android_module_lib_stubs_current",
     ],
+
     apex_available: [
         "com.android.os.statsd",
         "test_com.android.os.statsd",
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
index 4383b50..c1ba73f 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanion.java
@@ -24,7 +24,8 @@
 import android.os.IPendingIntentRef;
 import android.os.Process;
 import android.os.StatsDimensionsValue;
-import android.util.Slog;
+import android.os.StatsDimensionsValueParcel;
+import android.util.Log;
 
 import com.android.server.SystemService;
 
@@ -38,11 +39,18 @@
     private static final String TAG = "StatsCompanion";
     private static final boolean DEBUG = false;
 
-    static void enforceStatsCompanionPermission(Context context) {
+    private static final int AID_STATSD = 1066;
+
+    private static final String STATS_COMPANION_SERVICE = "statscompanion";
+    private static final String STATS_MANAGER_SERVICE = "statsmanager";
+
+    static void enforceStatsdCallingUid() {
         if (Binder.getCallingPid() == Process.myPid()) {
             return;
         }
-        context.enforceCallingPermission(android.Manifest.permission.STATSCOMPANION, null);
+        if (Binder.getCallingUid() != AID_STATSD) {
+            throw new SecurityException("Not allowed to access StatsCompanion");
+        }
     }
 
     /**
@@ -64,14 +72,12 @@
             mStatsManagerService.setStatsCompanionService(mStatsCompanionService);
 
             try {
-                publishBinderService(Context.STATS_COMPANION_SERVICE,
-                        mStatsCompanionService);
-                if (DEBUG) Slog.d(TAG, "Published " + Context.STATS_COMPANION_SERVICE);
-                publishBinderService(Context.STATS_MANAGER_SERVICE,
-                        mStatsManagerService);
-                if (DEBUG) Slog.d(TAG, "Published " + Context.STATS_MANAGER_SERVICE);
+                publishBinderService(STATS_COMPANION_SERVICE, mStatsCompanionService);
+                if (DEBUG) Log.d(TAG, "Published " + STATS_COMPANION_SERVICE);
+                publishBinderService(STATS_MANAGER_SERVICE, mStatsManagerService);
+                if (DEBUG) Log.d(TAG, "Published " + STATS_MANAGER_SERVICE);
             } catch (Exception e) {
-                Slog.e(TAG, "Failed to publishBinderService", e);
+                Log.e(TAG, "Failed to publishBinderService", e);
             }
         }
 
@@ -114,35 +120,37 @@
 
         @Override
         public void sendDataBroadcast(long lastReportTimeNs) {
-            enforceStatsCompanionPermission(mContext);
+            enforceStatsdCallingUid();
             Intent intent = new Intent();
             intent.putExtra(EXTRA_LAST_REPORT_TIME, lastReportTimeNs);
             try {
                 mPendingIntent.send(mContext, CODE_DATA_BROADCAST, intent, null, null);
             } catch (PendingIntent.CanceledException e) {
-                Slog.w(TAG, "Unable to send PendingIntent");
+                Log.w(TAG, "Unable to send PendingIntent");
             }
         }
 
         @Override
         public void sendActiveConfigsChangedBroadcast(long[] configIds) {
-            enforceStatsCompanionPermission(mContext);
+            enforceStatsdCallingUid();
             Intent intent = new Intent();
             intent.putExtra(StatsManager.EXTRA_STATS_ACTIVE_CONFIG_KEYS, configIds);
             try {
                 mPendingIntent.send(mContext, CODE_ACTIVE_CONFIGS_BROADCAST, intent, null, null);
                 if (DEBUG) {
-                    Slog.d(TAG, "Sent broadcast with config ids " + Arrays.toString(configIds));
+                    Log.d(TAG, "Sent broadcast with config ids " + Arrays.toString(configIds));
                 }
             } catch (PendingIntent.CanceledException e) {
-                Slog.w(TAG, "Unable to send active configs changed broadcast using PendingIntent");
+                Log.w(TAG, "Unable to send active configs changed broadcast using PendingIntent");
             }
         }
 
         @Override
         public void sendSubscriberBroadcast(long configUid, long configId, long subscriptionId,
-                long subscriptionRuleId, String[] cookies, StatsDimensionsValue dimensionsValue) {
-            enforceStatsCompanionPermission(mContext);
+                long subscriptionRuleId, String[] cookies,
+                StatsDimensionsValueParcel dimensionsValueParcel) {
+            enforceStatsdCallingUid();
+            StatsDimensionsValue dimensionsValue = new StatsDimensionsValue(dimensionsValueParcel);
             Intent intent =
                     new Intent()
                             .putExtra(StatsManager.EXTRA_STATS_CONFIG_UID, configUid)
@@ -158,7 +166,7 @@
                     StatsManager.EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES, cookieList);
 
             if (DEBUG) {
-                Slog.d(TAG,
+                Log.d(TAG,
                         String.format(
                                 "Statsd sendSubscriberBroadcast with params {%d %d %d %d %s %s}",
                                 configUid, configId, subscriptionId, subscriptionRuleId,
@@ -168,7 +176,7 @@
             try {
                 mPendingIntent.send(mContext, CODE_SUBSCRIBER_BROADCAST, intent, null, null);
             } catch (PendingIntent.CanceledException e) {
-                Slog.w(TAG,
+                Log.w(TAG,
                         "Unable to send using PendingIntent from uid " + configUid
                                 + "; presumably it had been cancelled.");
             }
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
index 1e92826..cb167c3 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsCompanionService.java
@@ -40,14 +40,10 @@
 import android.os.SystemClock;
 import android.os.UserHandle;
 import android.os.UserManager;
-import android.util.Slog;
+import android.util.Log;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.GuardedBy;
-import com.android.internal.os.LooperStats;
-import com.android.internal.util.DumpUtils;
-import com.android.server.BinderCallsStatsService;
-import com.android.server.LocalServices;
 
 import libcore.io.IoUtils;
 
@@ -89,6 +85,12 @@
 
     public static final int DEATH_THRESHOLD = 10;
 
+    // TODO(b/149090705): Implement an alternative to sending broadcast with @hide flag
+    // FLAG_RECEIVER_INCLUDE_BACKGROUND. Instead of using the flag, find the
+    // list of registered broadcast receivers and send them directed broadcasts
+    // to wake them up. See b/147374337.
+    private static final int FLAG_RECEIVER_INCLUDE_BACKGROUND = 0x01000000;
+
     static final class CompanionHandler extends Handler {
         CompanionHandler(Looper looper) {
             super(looper);
@@ -126,7 +128,7 @@
             public void onReceive(Context context, Intent intent) {
                 synchronized (sStatsdLock) {
                     if (sStatsd == null) {
-                        Slog.w(TAG, "Could not access statsd for UserUpdateReceiver");
+                        Log.w(TAG, "Could not access statsd for UserUpdateReceiver");
                         return;
                     }
                     try {
@@ -134,14 +136,14 @@
                         // Needed since the new user basically has a version of every app.
                         informAllUidsLocked(context);
                     } catch (RemoteException e) {
-                        Slog.e(TAG, "Failed to inform statsd latest update of all apps", e);
+                        Log.e(TAG, "Failed to inform statsd latest update of all apps", e);
                         forgetEverythingLocked();
                     }
                 }
             }
         };
         mShutdownEventReceiver = new ShutdownEventReceiver();
-        if (DEBUG) Slog.d(TAG, "Registered receiver for ACTION_PACKAGE_REPLACED and ADDED.");
+        if (DEBUG) Log.d(TAG, "Registered receiver for ACTION_PACKAGE_REPLACED and ADDED.");
         HandlerThread handlerThread = new HandlerThread(TAG);
         handlerThread.start();
         mHandler = new CompanionHandler(handlerThread.getLooper());
@@ -171,21 +173,21 @@
         PackageManager pm = context.getPackageManager();
         final List<UserHandle> users = um.getUserHandles(true);
         if (DEBUG) {
-            Slog.d(TAG, "Iterating over " + users.size() + " userHandles.");
+            Log.d(TAG, "Iterating over " + users.size() + " userHandles.");
         }
 
         ParcelFileDescriptor[] fds;
         try {
             fds = ParcelFileDescriptor.createPipe();
         } catch (IOException e) {
-            Slog.e(TAG, "Failed to create a pipe to send uid map data.", e);
+            Log.e(TAG, "Failed to create a pipe to send uid map data.", e);
             return;
         }
         sStatsd.informAllUidData(fds[0]);
         try {
             fds[0].close();
         } catch (IOException e) {
-            Slog.e(TAG, "Failed to close the read side of the pipe.", e);
+            Log.e(TAG, "Failed to close the read side of the pipe.", e);
         }
         final ParcelFileDescriptor writeFd = fds[1];
         HandlerThread backgroundThread = new HandlerThread(
@@ -239,7 +241,7 @@
                 }
                 output.flush();
                 if (DEBUG) {
-                    Slog.d(TAG, "Sent data for " + numRecords + " apps");
+                    Log.d(TAG, "Sent data for " + numRecords + " apps");
                 }
             } finally {
                 IoUtils.closeQuietly(fout);
@@ -261,10 +263,10 @@
                     && intent.getBooleanExtra(Intent.EXTRA_REPLACING, false)) {
                 return; // Keep only replacing or normal add and remove.
             }
-            if (DEBUG) Slog.d(TAG, "StatsCompanionService noticed an app was updated.");
+            if (DEBUG) Log.d(TAG, "StatsCompanionService noticed an app was updated.");
             synchronized (sStatsdLock) {
                 if (sStatsd == null) {
-                    Slog.w(TAG, "Could not access statsd to inform it of an app update");
+                    Log.w(TAG, "Could not access statsd to inform it of an app update");
                     return;
                 }
                 try {
@@ -299,7 +301,7 @@
                                 installer == null ? "" : installer);
                     }
                 } catch (Exception e) {
-                    Slog.w(TAG, "Failed to inform statsd of an app update", e);
+                    Log.w(TAG, "Failed to inform statsd of an app update", e);
                 }
             }
         }
@@ -308,18 +310,18 @@
     public final static class AnomalyAlarmListener implements OnAlarmListener {
         @Override
         public void onAlarm() {
-            Slog.i(TAG, "StatsCompanionService believes an anomaly has occurred at time "
+            Log.i(TAG, "StatsCompanionService believes an anomaly has occurred at time "
                     + System.currentTimeMillis() + "ms.");
             synchronized (sStatsdLock) {
                 if (sStatsd == null) {
-                    Slog.w(TAG, "Could not access statsd to inform it of anomaly alarm firing");
+                    Log.w(TAG, "Could not access statsd to inform it of anomaly alarm firing");
                     return;
                 }
                 try {
                     // Two-way call to statsd to retain AlarmManager wakelock
                     sStatsd.informAnomalyAlarmFired();
                 } catch (RemoteException e) {
-                    Slog.w(TAG, "Failed to inform statsd of anomaly alarm firing", e);
+                    Log.w(TAG, "Failed to inform statsd of anomaly alarm firing", e);
                 }
             }
             // AlarmManager releases its own wakelock here.
@@ -330,18 +332,18 @@
         @Override
         public void onAlarm() {
             if (DEBUG) {
-                Slog.d(TAG, "Time to poll something.");
+                Log.d(TAG, "Time to poll something.");
             }
             synchronized (sStatsdLock) {
                 if (sStatsd == null) {
-                    Slog.w(TAG, "Could not access statsd to inform it of pulling alarm firing.");
+                    Log.w(TAG, "Could not access statsd to inform it of pulling alarm firing.");
                     return;
                 }
                 try {
                     // Two-way call to statsd to retain AlarmManager wakelock
                     sStatsd.informPollAlarmFired();
                 } catch (RemoteException e) {
-                    Slog.w(TAG, "Failed to inform statsd of pulling alarm firing.", e);
+                    Log.w(TAG, "Failed to inform statsd of pulling alarm firing.", e);
                 }
             }
         }
@@ -351,18 +353,18 @@
         @Override
         public void onAlarm() {
             if (DEBUG) {
-                Slog.d(TAG, "Time to trigger periodic alarm.");
+                Log.d(TAG, "Time to trigger periodic alarm.");
             }
             synchronized (sStatsdLock) {
                 if (sStatsd == null) {
-                    Slog.w(TAG, "Could not access statsd to inform it of periodic alarm firing.");
+                    Log.w(TAG, "Could not access statsd to inform it of periodic alarm firing.");
                     return;
                 }
                 try {
                     // Two-way call to statsd to retain AlarmManager wakelock
                     sStatsd.informAlarmForSubscriberTriggeringFired();
                 } catch (RemoteException e) {
-                    Slog.w(TAG, "Failed to inform statsd of periodic alarm firing.", e);
+                    Log.w(TAG, "Failed to inform statsd of periodic alarm firing.", e);
                 }
             }
             // AlarmManager releases its own wakelock here.
@@ -381,16 +383,16 @@
                 return;
             }
 
-            Slog.i(TAG, "StatsCompanionService noticed a shutdown.");
+            Log.i(TAG, "StatsCompanionService noticed a shutdown.");
             synchronized (sStatsdLock) {
                 if (sStatsd == null) {
-                    Slog.w(TAG, "Could not access statsd to inform it of a shutdown event.");
+                    Log.w(TAG, "Could not access statsd to inform it of a shutdown event.");
                     return;
                 }
                 try {
                     sStatsd.informDeviceShutdown();
                 } catch (Exception e) {
-                    Slog.w(TAG, "Failed to inform statsd of a shutdown event.", e);
+                    Log.w(TAG, "Failed to inform statsd of a shutdown event.", e);
                 }
             }
         }
@@ -398,8 +400,8 @@
 
     @Override // Binder call
     public void setAnomalyAlarm(long timestampMs) {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
-        if (DEBUG) Slog.d(TAG, "Setting anomaly alarm for " + timestampMs);
+        StatsCompanion.enforceStatsdCallingUid();
+        if (DEBUG) Log.d(TAG, "Setting anomaly alarm for " + timestampMs);
         final long callingToken = Binder.clearCallingIdentity();
         try {
             // using ELAPSED_REALTIME, not ELAPSED_REALTIME_WAKEUP, so if device is asleep, will
@@ -414,8 +416,8 @@
 
     @Override // Binder call
     public void cancelAnomalyAlarm() {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
-        if (DEBUG) Slog.d(TAG, "Cancelling anomaly alarm");
+        StatsCompanion.enforceStatsdCallingUid();
+        if (DEBUG) Log.d(TAG, "Cancelling anomaly alarm");
         final long callingToken = Binder.clearCallingIdentity();
         try {
             mAlarmManager.cancel(mAnomalyAlarmListener);
@@ -426,9 +428,9 @@
 
     @Override // Binder call
     public void setAlarmForSubscriberTriggering(long timestampMs) {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
-            Slog.d(TAG,
+            Log.d(TAG,
                     "Setting periodic alarm in about " + (timestampMs
                             - SystemClock.elapsedRealtime()));
         }
@@ -445,9 +447,9 @@
 
     @Override // Binder call
     public void cancelAlarmForSubscriberTriggering() {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
-            Slog.d(TAG, "Cancelling periodic alarm");
+            Log.d(TAG, "Cancelling periodic alarm");
         }
         final long callingToken = Binder.clearCallingIdentity();
         try {
@@ -459,9 +461,9 @@
 
     @Override // Binder call
     public void setPullingAlarm(long nextPullTimeMs) {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
-            Slog.d(TAG, "Setting pulling alarm in about "
+            Log.d(TAG, "Setting pulling alarm in about "
                     + (nextPullTimeMs - SystemClock.elapsedRealtime()));
         }
         final long callingToken = Binder.clearCallingIdentity();
@@ -477,9 +479,9 @@
 
     @Override // Binder call
     public void cancelPullingAlarm() {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
-            Slog.d(TAG, "Cancelling pulling alarm");
+            Log.d(TAG, "Cancelling pulling alarm");
         }
         final long callingToken = Binder.clearCallingIdentity();
         try {
@@ -491,31 +493,36 @@
 
     @Override // Binder call
     public void statsdReady() {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         if (DEBUG) {
-            Slog.d(TAG, "learned that statsdReady");
+            Log.d(TAG, "learned that statsdReady");
         }
         sayHiToStatsd(); // tell statsd that we're ready too and link to it
         mContext.sendBroadcastAsUser(new Intent(StatsManager.ACTION_STATSD_STARTED)
-                        .addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND),
+                        .addFlags(FLAG_RECEIVER_INCLUDE_BACKGROUND),
                 UserHandle.SYSTEM, android.Manifest.permission.DUMP);
     }
 
     @Override
     public void triggerUidSnapshot() {
-        StatsCompanion.enforceStatsCompanionPermission(mContext);
+        StatsCompanion.enforceStatsdCallingUid();
         synchronized (sStatsdLock) {
             final long token = Binder.clearCallingIdentity();
             try {
                 informAllUidsLocked(mContext);
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to trigger uid snapshot.", e);
+                Log.e(TAG, "Failed to trigger uid snapshot.", e);
             } finally {
                 restoreCallingIdentity(token);
             }
         }
     }
 
+    @Override // Binder call
+    public boolean checkPermission(String permission, int pid, int uid) {
+        StatsCompanion.enforceStatsdCallingUid();
+        return mContext.checkPermission(permission, pid, uid) == PackageManager.PERMISSION_GRANTED;
+    }
 
     // Statsd related code
 
@@ -535,7 +542,7 @@
      * Now that the android system is ready, StatsCompanion is ready too, so inform statsd.
      */
     void systemReady() {
-        if (DEBUG) Slog.d(TAG, "Learned that systemReady");
+        if (DEBUG) Log.d(TAG, "Learned that systemReady");
         sayHiToStatsd();
     }
 
@@ -550,27 +557,27 @@
     private void sayHiToStatsd() {
         synchronized (sStatsdLock) {
             if (sStatsd != null) {
-                Slog.e(TAG, "Trying to fetch statsd, but it was already fetched",
+                Log.e(TAG, "Trying to fetch statsd, but it was already fetched",
                         new IllegalStateException(
                                 "sStatsd is not null when being fetched"));
                 return;
             }
             sStatsd = fetchStatsdService();
             if (sStatsd == null) {
-                Slog.i(TAG,
+                Log.i(TAG,
                         "Could not yet find statsd to tell it that StatsCompanion is "
                                 + "alive.");
                 return;
             }
             mStatsManagerService.statsdReady(sStatsd);
-            if (DEBUG) Slog.d(TAG, "Saying hi to statsd");
+            if (DEBUG) Log.d(TAG, "Saying hi to statsd");
             try {
                 sStatsd.statsCompanionReady();
                 // If the statsCompanionReady two-way binder call returns, link to statsd.
                 try {
                     sStatsd.asBinder().linkToDeath(new StatsdDeathRecipient(), 0);
                 } catch (RemoteException e) {
-                    Slog.e(TAG, "linkToDeath(StatsdDeathRecipient) failed", e);
+                    Log.e(TAG, "linkToDeath(StatsdDeathRecipient) failed", e);
                     forgetEverythingLocked();
                 }
                 // Setup broadcast receiver for updates.
@@ -600,9 +607,9 @@
                 } finally {
                     restoreCallingIdentity(token);
                 }
-                Slog.i(TAG, "Told statsd that StatsCompanionService is alive.");
+                Log.i(TAG, "Told statsd that StatsCompanionService is alive.");
             } catch (RemoteException e) {
-                Slog.e(TAG, "Failed to inform statsd that statscompanion is ready", e);
+                Log.e(TAG, "Failed to inform statsd that statscompanion is ready", e);
                 forgetEverythingLocked();
             }
         }
@@ -611,7 +618,7 @@
     private class StatsdDeathRecipient implements IBinder.DeathRecipient {
         @Override
         public void binderDied() {
-            Slog.i(TAG, "Statsd is dead - erase all my knowledge, except pullers");
+            Log.i(TAG, "Statsd is dead - erase all my knowledge, except pullers");
             synchronized (sStatsdLock) {
                 long now = SystemClock.elapsedRealtime();
                 for (Long timeMillis : mDeathTimeMillis) {
@@ -651,22 +658,15 @@
         cancelAnomalyAlarm();
         cancelPullingAlarm();
 
-        BinderCallsStatsService.Internal binderStats =
-                LocalServices.getService(BinderCallsStatsService.Internal.class);
-        if (binderStats != null) {
-            binderStats.reset();
-        }
-
-        LooperStats looperStats = LocalServices.getService(LooperStats.class);
-        if (looperStats != null) {
-            looperStats.reset();
-        }
         mStatsManagerService.statsdNotReady();
     }
 
     @Override
     protected void dump(FileDescriptor fd, PrintWriter writer, String[] args) {
-        if (!DumpUtils.checkDumpPermission(mContext, TAG, writer)) return;
+        if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP)
+                != PackageManager.PERMISSION_GRANTED) {
+            return;
+        }
 
         synchronized (sStatsdLock) {
             writer.println(
diff --git a/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java b/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
index 04d8b00..4e4bc40 100644
--- a/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
+++ b/apex/statsd/service/java/com/android/server/stats/StatsManagerService.java
@@ -30,7 +30,7 @@
 import android.os.Process;
 import android.os.RemoteException;
 import android.util.ArrayMap;
-import android.util.Slog;
+import android.util.Log;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -171,8 +171,8 @@
     @Override
     public void registerPullAtomCallback(int atomTag, long coolDownNs, long timeoutNs,
             int[] additiveFields, IPullAtomCallback pullerCallback) {
+        enforceRegisterStatsPullAtomPermission();
         int callingUid = Binder.getCallingUid();
-        final long token = Binder.clearCallingIdentity();
         PullerKey key = new PullerKey(callingUid, atomTag);
         PullerValue val = new PullerValue(coolDownNs, timeoutNs, additiveFields, pullerCallback);
 
@@ -187,11 +187,12 @@
             return;
         }
 
+        final long token = Binder.clearCallingIdentity();
         try {
             statsd.registerPullAtomCallback(
                     callingUid, atomTag, coolDownNs, timeoutNs, additiveFields, pullerCallback);
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to access statsd to register puller for atom " + atomTag);
+            Log.e(TAG, "Failed to access statsd to register puller for atom " + atomTag);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -199,8 +200,8 @@
 
     @Override
     public void unregisterPullAtomCallback(int atomTag) {
+        enforceRegisterStatsPullAtomPermission();
         int callingUid = Binder.getCallingUid();
-        final long token = Binder.clearCallingIdentity();
         PullerKey key = new PullerKey(callingUid, atomTag);
 
         // Always remove the puller from StatsManagerService even if statsd is down. When statsd
@@ -214,10 +215,11 @@
             return;
         }
 
+        final long token = Binder.clearCallingIdentity();
         try {
             statsd.unregisterPullAtomCallback(callingUid, atomTag);
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to access statsd to unregister puller for atom " + atomTag);
+            Log.e(TAG, "Failed to access statsd to unregister puller for atom " + atomTag);
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -241,7 +243,7 @@
                 statsd.setDataFetchOperation(configId, pir, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to setDataFetchOperation with statsd");
+            Log.e(TAG, "Failed to setDataFetchOperation with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -262,7 +264,7 @@
                 statsd.removeDataFetchOperation(configId, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to removeDataFetchOperation with statsd");
+            Log.e(TAG, "Failed to removeDataFetchOperation with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -285,7 +287,7 @@
                 return statsd.setActiveConfigsChangedOperation(pir, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to setActiveConfigsChangedOperation with statsd");
+            Log.e(TAG, "Failed to setActiveConfigsChangedOperation with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -306,7 +308,7 @@
                 statsd.removeActiveConfigsChangedOperation(callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to removeActiveConfigsChangedOperation with statsd");
+            Log.e(TAG, "Failed to removeActiveConfigsChangedOperation with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -334,7 +336,7 @@
                         configId, subscriberId, pir, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to setBroadcastSubscriber with statsd");
+            Log.e(TAG, "Failed to setBroadcastSubscriber with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -360,7 +362,7 @@
                 statsd.unsetBroadcastSubscriber(configId, subscriberId, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to unsetBroadcastSubscriber with statsd");
+            Log.e(TAG, "Failed to unsetBroadcastSubscriber with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
@@ -376,7 +378,7 @@
                 return statsd.getRegisteredExperimentIds();
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to getRegisteredExperimentIds with statsd");
+            Log.e(TAG, "Failed to getRegisteredExperimentIds with statsd");
             throw new IllegalStateException(e.getMessage(), e);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -394,7 +396,7 @@
                 return statsd.getMetadata();
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to getMetadata with statsd");
+            Log.e(TAG, "Failed to getMetadata with statsd");
             throw new IllegalStateException(e.getMessage(), e);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -413,7 +415,7 @@
                 return statsd.getData(key, callingUid);
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to getData with statsd");
+            Log.e(TAG, "Failed to getData with statsd");
             throw new IllegalStateException(e.getMessage(), e);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -434,7 +436,7 @@
                 return;
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to addConfiguration with statsd");
+            Log.e(TAG, "Failed to addConfiguration with statsd");
             throw new IllegalStateException(e.getMessage(), e);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -455,7 +457,7 @@
                 return;
             }
         } catch (RemoteException e) {
-            Slog.e(TAG, "Failed to removeConfiguration with statsd");
+            Log.e(TAG, "Failed to removeConfiguration with statsd");
             throw new IllegalStateException(e.getMessage(), e);
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -502,6 +504,13 @@
         }
     }
 
+    private void enforceRegisterStatsPullAtomPermission() {
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.REGISTER_STATS_PULL_ATOM,
+                "Need REGISTER_STATS_PULL_ATOM permission.");
+    }
+
+
     /**
      * Clients should call this if blocking until statsd to be ready is desired
      *
@@ -513,7 +522,7 @@
                 try {
                     mLock.wait(STATSD_TIMEOUT_MILLIS);
                 } catch (InterruptedException e) {
-                    Slog.e(TAG, "wait for statsd interrupted");
+                    Log.e(TAG, "wait for statsd interrupted");
                 }
             }
             return mStatsd;
@@ -569,7 +578,7 @@
             registerAllActiveConfigsChangedOperations(statsd);
             registerAllBroadcastSubscribers(statsd);
         } catch (RemoteException e) {
-            Slog.e(TAG, "StatsManager failed to (re-)register data with statsd");
+            Log.e(TAG, "StatsManager failed to (re-)register data with statsd");
         } finally {
             Binder.restoreCallingIdentity(token);
         }
diff --git a/apex/statsd/testing/Android.bp b/apex/statsd/testing/Android.bp
index 22e7301..a9cd0cc 100644
--- a/apex/statsd/testing/Android.bp
+++ b/apex/statsd/testing/Android.bp
@@ -12,7 +12,7 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-apex {
+apex_test {
     name: "test_com.android.os.statsd",
     visibility: [
         "//system/apex/tests",
diff --git a/apex/statsd/tests/libstatspull/jni/stats_pull_helper.cpp b/apex/statsd/tests/libstatspull/jni/stats_pull_helper.cpp
index e4ab823..22daa8e 100644
--- a/apex/statsd/tests/libstatspull/jni/stats_pull_helper.cpp
+++ b/apex/statsd/tests/libstatspull/jni/stats_pull_helper.cpp
@@ -46,15 +46,15 @@
     }
 }
 
-static status_pull_atom_return_t pullAtomCallback(int32_t atomTag, pulled_stats_event_list* data,
-                                                  void* /*cookie*/) {
+static AStatsManager_PullAtomCallbackReturn pullAtomCallback(int32_t atomTag, AStatsEventList* data,
+                                                             void* /*cookie*/) {
     sNumPulls++;
     sleep_for(std::chrono::milliseconds(sLatencyMillis));
     for (int i = 0; i < sAtomsPerPull; i++) {
-        stats_event* event = add_stats_event_to_pull_data(data);
-        stats_event_set_atom_id(event, atomTag);
-        stats_event_write_int64(event, (int64_t) sNumPulls);
-        stats_event_build(event);
+        AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+        AStatsEvent_setAtomId(event, atomTag);
+        AStatsEvent_writeInt64(event, (int64_t) sNumPulls);
+        AStatsEvent_build(event);
     }
     return sPullReturnVal;
 }
@@ -71,11 +71,12 @@
     sLatencyMillis = latencyMillis;
     sAtomsPerPull = atomsPerPull;
     sNumPulls = 0;
-    pull_atom_metadata metadata = {.cool_down_ns = coolDownNs,
-                                   .timeout_ns = timeoutNs,
-                                   .additive_fields = nullptr,
-                                   .additive_fields_size = 0};
-    register_stats_pull_atom_callback(sAtomTag, &pullAtomCallback, &metadata, nullptr);
+    AStatsManager_PullAtomMetadata* metadata = AStatsManager_PullAtomMetadata_obtain();
+    AStatsManager_PullAtomMetadata_setCoolDownNs(metadata, coolDownNs);
+    AStatsManager_PullAtomMetadata_setTimeoutNs(metadata, timeoutNs);
+
+    AStatsManager_registerPullAtomCallback(sAtomTag, &pullAtomCallback, metadata, nullptr);
+    AStatsManager_PullAtomMetadata_release(metadata);
 }
 
 extern "C"
@@ -83,6 +84,6 @@
 Java_com_android_internal_os_statsd_libstats_LibStatsPullTests_unregisterStatsPuller(
         JNIEnv* /*env*/, jobject /* this */, jint /*atomTag*/)
 {
-    unregister_stats_pull_atom_callback(sAtomTag);
+    AStatsManager_unregisterPullAtomCallback(sAtomTag);
 }
-} // namespace
\ No newline at end of file
+} // namespace
diff --git a/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java b/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java
index dbd636d..e119b4c 100644
--- a/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java
+++ b/apex/statsd/tests/libstatspull/src/com/android/internal/os/statsd/libstats/LibStatsPullTests.java
@@ -71,7 +71,6 @@
      */
     @Before
     public void setup() {
-//        Debug.waitForDebugger();
         mContext = InstrumentationRegistry.getTargetContext();
         assertThat(InstrumentationRegistry.getInstrumentation()).isNotNull();
         sPullReturnValue = StatsManager.PULL_SUCCESS;
diff --git a/api/current.txt b/api/current.txt
index fe336f8..4887c66 100644
--- a/api/current.txt
+++ b/api/current.txt
@@ -29,7 +29,7 @@
     field public static final String BIND_CARRIER_MESSAGING_CLIENT_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_CLIENT_SERVICE";
     field @Deprecated public static final String BIND_CARRIER_MESSAGING_SERVICE = "android.permission.BIND_CARRIER_MESSAGING_SERVICE";
     field public static final String BIND_CARRIER_SERVICES = "android.permission.BIND_CARRIER_SERVICES";
-    field public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+    field @Deprecated public static final String BIND_CHOOSER_TARGET_SERVICE = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
     field public static final String BIND_CONDITION_PROVIDER_SERVICE = "android.permission.BIND_CONDITION_PROVIDER_SERVICE";
     field public static final String BIND_DEVICE_ADMIN = "android.permission.BIND_DEVICE_ADMIN";
     field public static final String BIND_DREAM_SERVICE = "android.permission.BIND_DREAM_SERVICE";
@@ -91,6 +91,7 @@
     field public static final String INTERACT_ACROSS_PROFILES = "android.permission.INTERACT_ACROSS_PROFILES";
     field public static final String INTERNET = "android.permission.INTERNET";
     field public static final String KILL_BACKGROUND_PROCESSES = "android.permission.KILL_BACKGROUND_PROCESSES";
+    field public static final String LOADER_USAGE_STATS = "android.permission.LOADER_USAGE_STATS";
     field public static final String LOCATION_HARDWARE = "android.permission.LOCATION_HARDWARE";
     field public static final String MANAGE_DOCUMENTS = "android.permission.MANAGE_DOCUMENTS";
     field public static final String MANAGE_EXTERNAL_STORAGE = "android.permission.MANAGE_EXTERNAL_STORAGE";
@@ -1876,6 +1877,7 @@
     ctor public R.id();
     field public static final int accessibilityActionContextClick = 16908348; // 0x102003c
     field public static final int accessibilityActionHideTooltip = 16908357; // 0x1020045
+    field public static final int accessibilityActionImeEnter = 16908372; // 0x1020054
     field public static final int accessibilityActionMoveWindow = 16908354; // 0x1020042
     field public static final int accessibilityActionPageDown = 16908359; // 0x1020047
     field public static final int accessibilityActionPageLeft = 16908360; // 0x1020048
@@ -2872,13 +2874,28 @@
     method public void onSystemActionsChanged();
     method public final boolean performGlobalAction(int);
     method public final void setServiceInfo(android.accessibilityservice.AccessibilityServiceInfo);
-    method public boolean takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.graphics.Bitmap>);
+    method public boolean takeScreenshot(int, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<android.accessibilityservice.AccessibilityService.ScreenshotResult>);
     field public static final int GESTURE_2_FINGER_DOUBLE_TAP = 20; // 0x14
     field public static final int GESTURE_2_FINGER_SINGLE_TAP = 19; // 0x13
+    field public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26; // 0x1a
+    field public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27; // 0x1b
+    field public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28; // 0x1c
+    field public static final int GESTURE_2_FINGER_SWIPE_UP = 25; // 0x19
     field public static final int GESTURE_2_FINGER_TRIPLE_TAP = 21; // 0x15
     field public static final int GESTURE_3_FINGER_DOUBLE_TAP = 23; // 0x17
     field public static final int GESTURE_3_FINGER_SINGLE_TAP = 22; // 0x16
+    field public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30; // 0x1e
+    field public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31; // 0x1f
+    field public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32; // 0x20
+    field public static final int GESTURE_3_FINGER_SWIPE_UP = 29; // 0x1d
     field public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24; // 0x18
+    field public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38; // 0x26
+    field public static final int GESTURE_4_FINGER_SINGLE_TAP = 37; // 0x25
+    field public static final int GESTURE_4_FINGER_SWIPE_DOWN = 34; // 0x22
+    field public static final int GESTURE_4_FINGER_SWIPE_LEFT = 35; // 0x23
+    field public static final int GESTURE_4_FINGER_SWIPE_RIGHT = 36; // 0x24
+    field public static final int GESTURE_4_FINGER_SWIPE_UP = 33; // 0x21
+    field public static final int GESTURE_4_FINGER_TRIPLE_TAP = 39; // 0x27
     field public static final int GESTURE_DOUBLE_TAP = 17; // 0x11
     field public static final int GESTURE_DOUBLE_TAP_AND_HOLD = 18; // 0x12
     field public static final int GESTURE_SWIPE_DOWN = 2; // 0x2
@@ -2936,6 +2953,12 @@
     method public void onMagnificationChanged(@NonNull android.accessibilityservice.AccessibilityService.MagnificationController, @NonNull android.graphics.Region, float, float, float);
   }
 
+  public static final class AccessibilityService.ScreenshotResult {
+    method @Nullable public android.graphics.ColorSpace getColorSpace();
+    method @NonNull public android.hardware.HardwareBuffer getHardwareBuffer();
+    method public long getTimestamp();
+  }
+
   public static final class AccessibilityService.SoftKeyboardController {
     method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener);
     method public void addOnShowModeChangedListener(@NonNull android.accessibilityservice.AccessibilityService.SoftKeyboardController.OnShowModeChangedListener, @Nullable android.os.Handler);
@@ -3841,7 +3864,7 @@
     method public void onPerformDirectAction(@NonNull String, @NonNull android.os.Bundle, @NonNull android.os.CancellationSignal, @NonNull java.util.function.Consumer<android.os.Bundle>);
     method public void onPictureInPictureModeChanged(boolean, android.content.res.Configuration);
     method @Deprecated public void onPictureInPictureModeChanged(boolean);
-    method public void onPictureInPictureRequested();
+    method public boolean onPictureInPictureRequested();
     method @CallSuper protected void onPostCreate(@Nullable android.os.Bundle);
     method public void onPostCreate(@Nullable android.os.Bundle, @Nullable android.os.PersistableBundle);
     method @CallSuper protected void onPostResume();
@@ -3993,7 +4016,7 @@
     method public android.util.Size getAppTaskThumbnailSize();
     method public java.util.List<android.app.ActivityManager.AppTask> getAppTasks();
     method public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo();
-    method @Nullable public java.util.List<android.app.ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String, @IntRange(from=0) int, @IntRange(from=0) int);
+    method @NonNull public java.util.List<android.app.ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String, @IntRange(from=0) int, @IntRange(from=0) int);
     method public int getLargeMemoryClass();
     method public int getLauncherLargeIconDensity();
     method public int getLauncherLargeIconSize();
@@ -4533,12 +4556,13 @@
     method public int getPackageUid();
     method public int getPid();
     method @NonNull public String getProcessName();
-    method public int getPss();
+    method public long getPss();
     method public int getRealUid();
     method public int getReason();
-    method public int getRss();
+    method public long getRss();
     method public int getStatus();
     method public long getTimestamp();
+    method @NonNull public android.os.UserHandle getUserHandle();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.app.ApplicationExitInfo> CREATOR;
     field public static final int REASON_ANR = 6; // 0x6
@@ -5910,6 +5934,7 @@
     method public long[] getVibrationPattern();
     method public boolean hasUserSetImportance();
     method public boolean hasUserSetSound();
+    method public boolean isImportantConversation();
     method public void setAllowBubbles(boolean);
     method public void setBypassDnd(boolean);
     method public void setConversationId(@Nullable String, @Nullable String);
@@ -6022,14 +6047,19 @@
   public static class NotificationManager.Policy implements android.os.Parcelable {
     ctor public NotificationManager.Policy(int, int, int);
     ctor public NotificationManager.Policy(int, int, int, int);
+    ctor public NotificationManager.Policy(int, int, int, int, int);
     method public int describeContents();
     method public static String priorityCategoriesToString(int);
     method public static String prioritySendersToString(int);
     method public static String suppressedEffectsToString(int);
     method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
+    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
+    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
     field @NonNull public static final android.os.Parcelable.Creator<android.app.NotificationManager.Policy> CREATOR;
     field public static final int PRIORITY_CATEGORY_ALARMS = 32; // 0x20
     field public static final int PRIORITY_CATEGORY_CALLS = 8; // 0x8
+    field public static final int PRIORITY_CATEGORY_CONVERSATIONS = 256; // 0x100
     field public static final int PRIORITY_CATEGORY_EVENTS = 2; // 0x2
     field public static final int PRIORITY_CATEGORY_MEDIA = 64; // 0x40
     field public static final int PRIORITY_CATEGORY_MESSAGES = 4; // 0x4
@@ -6050,6 +6080,7 @@
     field public static final int SUPPRESSED_EFFECT_STATUS_BAR = 32; // 0x20
     field public final int priorityCallSenders;
     field public final int priorityCategories;
+    field public final int priorityConversationSenders;
     field public final int priorityMessageSenders;
     field public final int suppressedVisualEffects;
   }
@@ -6787,7 +6818,7 @@
     ctor public DevicePolicyKeyguardService();
     method @Nullable public void dismiss();
     method @Nullable public final android.os.IBinder onBind(@Nullable android.content.Intent);
-    method @Nullable public android.view.SurfaceControl onSurfaceReady(@Nullable android.os.IBinder);
+    method @Nullable public android.view.SurfaceControlViewHost.SurfacePackage onSurfaceReady(@Nullable android.os.IBinder);
   }
 
   public class DevicePolicyManager {
@@ -6886,6 +6917,7 @@
     method public boolean grantKeyPairToApp(@Nullable android.content.ComponentName, @NonNull String, @NonNull String);
     method public boolean hasCaCertInstalled(@Nullable android.content.ComponentName, byte[]);
     method public boolean hasGrantedPolicy(@NonNull android.content.ComponentName, int);
+    method public boolean hasLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName);
     method public boolean installCaCert(@Nullable android.content.ComponentName, byte[]);
     method public boolean installExistingPackage(@NonNull android.content.ComponentName, String);
     method public boolean installKeyPair(@Nullable android.content.ComponentName, @NonNull java.security.PrivateKey, @NonNull java.security.cert.Certificate, @NonNull String);
@@ -6904,7 +6936,6 @@
     method public boolean isDeviceOwnerApp(String);
     method public boolean isEphemeralUser(@NonNull android.content.ComponentName);
     method public boolean isLockTaskPermitted(String);
-    method public boolean isLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName);
     method public boolean isLogoutEnabled();
     method public boolean isManagedProfile(@NonNull android.content.ComponentName);
     method public boolean isMasterVolumeMuted(@NonNull android.content.ComponentName);
@@ -6951,6 +6982,7 @@
     method public void setCameraDisabled(@NonNull android.content.ComponentName, boolean);
     method @Deprecated public void setCertInstallerPackage(@NonNull android.content.ComponentName, @Nullable String) throws java.lang.SecurityException;
     method public void setCommonCriteriaModeEnabled(@NonNull android.content.ComponentName, boolean);
+    method public void setConfiguredNetworksLockdownState(@NonNull android.content.ComponentName, boolean);
     method public void setCrossProfileCalendarPackages(@NonNull android.content.ComponentName, @Nullable java.util.Set<java.lang.String>);
     method public void setCrossProfileCallerIdDisabled(@NonNull android.content.ComponentName, boolean);
     method public void setCrossProfileContactsSearchDisabled(@NonNull android.content.ComponentName, boolean);
@@ -6970,7 +7002,6 @@
     method public void setLocationEnabled(@NonNull android.content.ComponentName, boolean);
     method public void setLockTaskFeatures(@NonNull android.content.ComponentName, int);
     method public void setLockTaskPackages(@NonNull android.content.ComponentName, @NonNull String[]) throws java.lang.SecurityException;
-    method public void setLockdownAdminConfiguredNetworks(@NonNull android.content.ComponentName, boolean);
     method public void setLogoutEnabled(@NonNull android.content.ComponentName, boolean);
     method public void setLongSupportMessage(@NonNull android.content.ComponentName, @Nullable CharSequence);
     method public void setManagedProfileMaximumTimeOff(@NonNull android.content.ComponentName, long);
@@ -7131,6 +7162,7 @@
     field public static final int KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS = 8; // 0x8
     field public static final int KEYGUARD_DISABLE_WIDGETS_ALL = 1; // 0x1
     field public static final int LEAVE_ALL_SYSTEM_APPS_ENABLED = 16; // 0x10
+    field public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 64; // 0x40
     field public static final int LOCK_TASK_FEATURE_GLOBAL_ACTIONS = 16; // 0x10
     field public static final int LOCK_TASK_FEATURE_HOME = 4; // 0x4
     field public static final int LOCK_TASK_FEATURE_KEYGUARD = 32; // 0x20
@@ -7543,7 +7575,9 @@
 
   public class BlobStoreManager {
     method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int, long) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence, long) throws java.io.IOException;
     method public void acquireLease(@NonNull android.app.blob.BlobHandle, @IdRes int) throws java.io.IOException;
+    method public void acquireLease(@NonNull android.app.blob.BlobHandle, @NonNull CharSequence) throws java.io.IOException;
     method @IntRange(from=1) public long createSession(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
     method public void deleteSession(@IntRange(from=1) long) throws java.io.IOException;
     method @NonNull public android.os.ParcelFileDescriptor openBlob(@NonNull android.app.blob.BlobHandle) throws java.io.IOException;
@@ -8631,7 +8665,7 @@
     field public static final String ACTION_ACL_CONNECTED = "android.bluetooth.device.action.ACL_CONNECTED";
     field public static final String ACTION_ACL_DISCONNECTED = "android.bluetooth.device.action.ACL_DISCONNECTED";
     field public static final String ACTION_ACL_DISCONNECT_REQUESTED = "android.bluetooth.device.action.ACL_DISCONNECT_REQUESTED";
-    field public static final String ACTION_ALIAS_CHANGED = "android.bluetooth.action.ALIAS_CHANGED";
+    field public static final String ACTION_ALIAS_CHANGED = "android.bluetooth.device.action.ALIAS_CHANGED";
     field public static final String ACTION_BOND_STATE_CHANGED = "android.bluetooth.device.action.BOND_STATE_CHANGED";
     field public static final String ACTION_CLASS_CHANGED = "android.bluetooth.device.action.CLASS_CHANGED";
     field public static final String ACTION_FOUND = "android.bluetooth.device.action.FOUND";
@@ -9990,7 +10024,7 @@
     method public abstract android.content.Context createDisplayContext(@NonNull android.view.Display);
     method @NonNull public android.content.Context createFeatureContext(@Nullable String);
     method public abstract android.content.Context createPackageContext(String, int) throws android.content.pm.PackageManager.NameNotFoundException;
-    method @NonNull public android.content.Context createWindowContext(int);
+    method @NonNull public android.content.Context createWindowContext(int, @Nullable android.os.Bundle);
     method public abstract String[] databaseList();
     method public abstract boolean deleteDatabase(String);
     method public abstract boolean deleteFile(String);
@@ -10122,6 +10156,7 @@
     field public static final int BIND_NOT_PERCEPTIBLE = 256; // 0x100
     field public static final int BIND_WAIVE_PRIORITY = 32; // 0x20
     field public static final String BIOMETRIC_SERVICE = "biometric";
+    field public static final String BLOB_STORE_SERVICE = "blob_store";
     field public static final String BLUETOOTH_SERVICE = "bluetooth";
     field public static final String CAMERA_SERVICE = "camera";
     field public static final String CAPTIONING_SERVICE = "captioning";
@@ -11671,6 +11706,7 @@
     method public android.content.pm.LauncherApps.ShortcutQuery setQueryFlags(int);
     method public android.content.pm.LauncherApps.ShortcutQuery setShortcutIds(@Nullable java.util.List<java.lang.String>);
     field public static final int FLAG_GET_KEY_FIELDS_ONLY = 4; // 0x4
+    field public static final int FLAG_MATCH_CACHED = 16; // 0x10
     field public static final int FLAG_MATCH_DYNAMIC = 1; // 0x1
     field public static final int FLAG_MATCH_MANIFEST = 8; // 0x8
     field public static final int FLAG_MATCH_PINNED = 2; // 0x2
@@ -12364,6 +12400,7 @@
     method @Nullable public CharSequence getShortLabel();
     method public android.os.UserHandle getUserHandle();
     method public boolean hasKeyFieldsOnly();
+    method public boolean isCached();
     method public boolean isDeclaredInManifest();
     method public boolean isDynamic();
     method public boolean isEnabled();
@@ -12413,14 +12450,20 @@
     method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getManifestShortcuts();
     method public int getMaxShortcutCountPerActivity();
     method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getPinnedShortcuts();
+    method @NonNull public java.util.List<android.content.pm.ShortcutInfo> getShortcuts(int);
     method public boolean isRateLimitingActive();
     method public boolean isRequestPinShortcutSupported();
     method public void removeAllDynamicShortcuts();
     method public void removeDynamicShortcuts(@NonNull java.util.List<java.lang.String>);
+    method public void removeLongLivedShortcuts(@NonNull java.util.List<java.lang.String>);
     method public void reportShortcutUsed(String);
     method public boolean requestPinShortcut(@NonNull android.content.pm.ShortcutInfo, @Nullable android.content.IntentSender);
     method public boolean setDynamicShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
     method public boolean updateShortcuts(@NonNull java.util.List<android.content.pm.ShortcutInfo>);
+    field public static final int FLAG_MATCH_CACHED = 8; // 0x8
+    field public static final int FLAG_MATCH_DYNAMIC = 2; // 0x2
+    field public static final int FLAG_MATCH_MANIFEST = 1; // 0x1
+    field public static final int FLAG_MATCH_PINNED = 4; // 0x4
   }
 
   public class Signature implements android.os.Parcelable {
@@ -12535,6 +12578,7 @@
     method public int getLayoutDirection();
     method @NonNull public android.os.LocaleList getLocales();
     method public boolean isLayoutSizeAtLeast(int);
+    method public boolean isNightModeActive();
     method public boolean isScreenHdr();
     method public boolean isScreenRound();
     method public boolean isScreenWideColorGamut();
@@ -12659,8 +12703,7 @@
 
   public class Resources {
     ctor @Deprecated public Resources(android.content.res.AssetManager, android.util.DisplayMetrics, android.content.res.Configuration);
-    method public void addLoader(@NonNull android.content.res.loader.ResourcesLoader);
-    method public void clearLoaders();
+    method public void addLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
     method public final void finishPreloading();
     method public final void flushLayoutCache();
     method @NonNull public android.content.res.XmlResourceParser getAnimation(@AnimRes @AnimatorRes int) throws android.content.res.Resources.NotFoundException;
@@ -12687,7 +12730,6 @@
     method @NonNull public int[] getIntArray(@ArrayRes int) throws android.content.res.Resources.NotFoundException;
     method public int getInteger(@IntegerRes int) throws android.content.res.Resources.NotFoundException;
     method @NonNull public android.content.res.XmlResourceParser getLayout(@LayoutRes int) throws android.content.res.Resources.NotFoundException;
-    method @NonNull public java.util.List<android.content.res.loader.ResourcesLoader> getLoaders();
     method @Deprecated public android.graphics.Movie getMovie(@RawRes int) throws android.content.res.Resources.NotFoundException;
     method @NonNull public String getQuantityString(@PluralsRes int, int, java.lang.Object...) throws android.content.res.Resources.NotFoundException;
     method @NonNull public String getQuantityString(@PluralsRes int, int) throws android.content.res.Resources.NotFoundException;
@@ -12715,8 +12757,7 @@
     method public android.content.res.AssetFileDescriptor openRawResourceFd(@RawRes int) throws android.content.res.Resources.NotFoundException;
     method public void parseBundleExtra(String, android.util.AttributeSet, android.os.Bundle) throws org.xmlpull.v1.XmlPullParserException;
     method public void parseBundleExtras(android.content.res.XmlResourceParser, android.os.Bundle) throws java.io.IOException, org.xmlpull.v1.XmlPullParserException;
-    method public void removeLoader(@NonNull android.content.res.loader.ResourcesLoader);
-    method public void setLoaders(@NonNull java.util.List<android.content.res.loader.ResourcesLoader>);
+    method public void removeLoaders(@NonNull android.content.res.loader.ResourcesLoader...);
     method @Deprecated public void updateConfiguration(android.content.res.Configuration, android.util.DisplayMetrics);
     field @AnyRes public static final int ID_NULL = 0; // 0x0
   }
@@ -14843,10 +14884,11 @@
     method public void offset(int, int);
     method public void set(@NonNull android.graphics.Outline);
     method public void setAlpha(@FloatRange(from=0.0, to=1.0) float);
-    method public void setConvexPath(@NonNull android.graphics.Path);
+    method @Deprecated public void setConvexPath(@NonNull android.graphics.Path);
     method public void setEmpty();
     method public void setOval(int, int, int, int);
     method public void setOval(@NonNull android.graphics.Rect);
+    method public void setPath(@NonNull android.graphics.Path);
     method public void setRect(int, int, int, int);
     method public void setRect(@NonNull android.graphics.Rect);
     method public void setRoundRect(int, int, int, int, float);
@@ -16991,6 +17033,7 @@
     field public static final int BIOMETRIC_ERROR_HW_UNAVAILABLE = 1; // 0x1
     field public static final int BIOMETRIC_ERROR_NONE_ENROLLED = 11; // 0xb
     field public static final int BIOMETRIC_ERROR_NO_HARDWARE = 12; // 0xc
+    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
     field public static final int BIOMETRIC_SUCCESS = 0; // 0x0
   }
 
@@ -17025,6 +17068,7 @@
     field public static final int BIOMETRIC_ERROR_NO_BIOMETRICS = 11; // 0xb
     field public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14; // 0xe
     field public static final int BIOMETRIC_ERROR_NO_SPACE = 4; // 0x4
+    field public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15; // 0xf
     field public static final int BIOMETRIC_ERROR_TIMEOUT = 3; // 0x3
     field public static final int BIOMETRIC_ERROR_UNABLE_TO_PROCESS = 2; // 0x2
     field public static final int BIOMETRIC_ERROR_USER_CANCELED = 10; // 0xa
@@ -18068,6 +18112,7 @@
     method public int[] getInputDeviceIds();
     method public void registerInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener, android.os.Handler);
     method public void unregisterInputDeviceListener(android.hardware.input.InputManager.InputDeviceListener);
+    method @Nullable public android.view.VerifiedInputEvent verifyInputEvent(@NonNull android.view.InputEvent);
     field public static final String ACTION_QUERY_KEYBOARD_LAYOUTS = "android.hardware.input.action.QUERY_KEYBOARD_LAYOUTS";
     field public static final String META_DATA_KEYBOARD_LAYOUTS = "android.hardware.input.metadata.KEYBOARD_LAYOUTS";
   }
@@ -23431,6 +23476,69 @@
     method public static boolean isPresent();
   }
 
+  public final class GnssAntennaInfo implements android.os.Parcelable {
+    ctor public GnssAntennaInfo(double, @NonNull android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates, @Nullable android.location.GnssAntennaInfo.PhaseCenterVariationCorrections, @Nullable android.location.GnssAntennaInfo.SignalGainCorrections);
+    method public int describeContents();
+    method public double getCarrierFrequencyMHz();
+    method @NonNull public android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates getPhaseCenterOffsetCoordinates();
+    method @Nullable public android.location.GnssAntennaInfo.PhaseCenterVariationCorrections getPhaseCenterVariationCorrections();
+    method @Nullable public android.location.GnssAntennaInfo.SignalGainCorrections getSignalGainCorrections();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo> CREATOR;
+  }
+
+  public abstract static class GnssAntennaInfo.Callback {
+    ctor public GnssAntennaInfo.Callback();
+    method public void onGnssAntennaInfoReceived(@NonNull java.util.List<android.location.GnssAntennaInfo>);
+    method public void onStatusChanged(int);
+    field public static final int STATUS_LOCATION_DISABLED = 2; // 0x2
+    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
+    field public static final int STATUS_READY = 1; // 0x1
+  }
+
+  public static final class GnssAntennaInfo.PhaseCenterOffsetCoordinates implements android.os.Parcelable {
+    ctor public GnssAntennaInfo.PhaseCenterOffsetCoordinates(double, double, double, double, double, double);
+    method public int describeContents();
+    method public double getXCoordMillimeters();
+    method public double getXCoordUncertaintyMillimeters();
+    method public double getYCoordMillimeters();
+    method public double getYCoordUncertaintyMillimeters();
+    method public double getZCoordMillimeters();
+    method public double getZCoordUncertaintyMillimeters();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterOffsetCoordinates> CREATOR;
+  }
+
+  public static final class GnssAntennaInfo.PhaseCenterVariationCorrections implements android.os.Parcelable {
+    ctor public GnssAntennaInfo.PhaseCenterVariationCorrections(@NonNull double[][], @NonNull double[][]);
+    method public int describeContents();
+    method public double getDeltaPhi();
+    method public double getDeltaTheta();
+    method public int getNumColumns();
+    method public int getNumRows();
+    method public double getPhaseCenterVariationCorrectionMillimetersAt(int, int);
+    method public double getPhaseCenterVariationCorrectionUncertaintyMillimetersAt(int, int);
+    method @NonNull public double[][] getRawCorrectionUncertaintiesArray();
+    method @NonNull public double[][] getRawCorrectionsArray();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.PhaseCenterVariationCorrections> CREATOR;
+  }
+
+  public static final class GnssAntennaInfo.SignalGainCorrections implements android.os.Parcelable {
+    ctor public GnssAntennaInfo.SignalGainCorrections(@NonNull double[][], @NonNull double[][]);
+    method public int describeContents();
+    method public double getDeltaPhi();
+    method public double getDeltaTheta();
+    method public int getNumColumns();
+    method public int getNumRows();
+    method @NonNull public double[][] getRawCorrectionUncertaintiesArray();
+    method @NonNull public double[][] getRawCorrectionsArray();
+    method public double getSignalGainCorrectionDbiAt(int, int);
+    method public double getSignalGainCorrectionUncertaintyDbiAt(int, int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssAntennaInfo.SignalGainCorrections> CREATOR;
+  }
+
   public final class GnssClock implements android.os.Parcelable {
     method public int describeContents();
     method public double getBiasNanos();
@@ -23748,6 +23856,7 @@
     method @NonNull public java.util.List<java.lang.String> getProviders(@NonNull android.location.Criteria, boolean);
     method public boolean isLocationEnabled();
     method public boolean isProviderEnabled(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerAntennaInfoCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssAntennaInfo.Callback);
     method @Deprecated @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
     method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback, @Nullable android.os.Handler);
     method @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) public boolean registerGnssMeasurementsCallback(@NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
@@ -23779,6 +23888,7 @@
     method public void setTestProviderEnabled(@NonNull String, boolean);
     method public void setTestProviderLocation(@NonNull String, @NonNull android.location.Location);
     method @Deprecated public void setTestProviderStatus(@NonNull String, int, @Nullable android.os.Bundle, long);
+    method public void unregisterAntennaInfoCallback(@NonNull android.location.GnssAntennaInfo.Callback);
     method public void unregisterGnssMeasurementsCallback(@NonNull android.location.GnssMeasurementsEvent.Callback);
     method public void unregisterGnssNavigationMessageCallback(@NonNull android.location.GnssNavigationMessage.Callback);
     method public void unregisterGnssStatusCallback(@NonNull android.location.GnssStatus.Callback);
@@ -26720,6 +26830,7 @@
     method public int getVolume();
     method public int getVolumeHandling();
     method public int getVolumeMax();
+    method public boolean isSystemRoute();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field public static final int CONNECTION_STATE_CONNECTED = 2; // 0x2
     field public static final int CONNECTION_STATE_CONNECTING = 1; // 0x1
@@ -26769,9 +26880,9 @@
     method public void onDiscoveryPreferenceChanged(@NonNull android.media.RouteDiscoveryPreference);
     method public abstract void onReleaseSession(@NonNull String);
     method public abstract void onSelectRoute(@NonNull String, @NonNull String);
-    method public abstract void onSetVolume(@NonNull String, int);
+    method public abstract void onSetRouteVolume(@NonNull String, int);
+    method public abstract void onSetSessionVolume(@NonNull String, int);
     method public abstract void onTransferToRoute(@NonNull String, @NonNull String);
-    method public abstract void onUpdateVolume(@NonNull String, int);
     field public static final long REQUEST_ID_UNKNOWN = 0L; // 0x0L
     field public static final String SERVICE_INTERFACE = "android.media.MediaRoute2ProviderService";
   }
@@ -26931,9 +27042,13 @@
     method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectableRoutes();
     method @NonNull public java.util.List<android.media.MediaRoute2Info> getSelectedRoutes();
     method @NonNull public java.util.List<android.media.MediaRoute2Info> getTransferrableRoutes();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
     method public boolean isReleased();
     method public void release();
     method public void selectRoute(@NonNull android.media.MediaRoute2Info);
+    method public void setVolume(int);
     method public void transferToRoute(@NonNull android.media.MediaRoute2Info);
   }
 
@@ -27328,6 +27443,9 @@
     method @NonNull public java.util.List<java.lang.String> getSelectableRoutes();
     method @NonNull public java.util.List<java.lang.String> getSelectedRoutes();
     method @NonNull public java.util.List<java.lang.String> getTransferrableRoutes();
+    method public int getVolume();
+    method public int getVolumeHandling();
+    method public int getVolumeMax();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.media.RoutingSessionInfo> CREATOR;
   }
@@ -27349,6 +27467,9 @@
     method @NonNull public android.media.RoutingSessionInfo.Builder removeSelectedRoute(@NonNull String);
     method @NonNull public android.media.RoutingSessionInfo.Builder removeTransferrableRoute(@NonNull String);
     method @NonNull public android.media.RoutingSessionInfo.Builder setControlHints(@Nullable android.os.Bundle);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolume(int);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeHandling(int);
+    method @NonNull public android.media.RoutingSessionInfo.Builder setVolumeMax(int);
   }
 
   public final class Session2Command implements android.os.Parcelable {
@@ -28744,6 +28865,7 @@
     field public static final String COLUMN_DESCRIPTION = "description";
     field public static final String COLUMN_DISPLAY_NAME = "display_name";
     field public static final String COLUMN_DISPLAY_NUMBER = "display_number";
+    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
     field public static final String COLUMN_INPUT_ID = "input_id";
     field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
     field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
@@ -28769,6 +28891,7 @@
     field public static final String SERVICE_TYPE_AUDIO_VIDEO = "SERVICE_TYPE_AUDIO_VIDEO";
     field public static final String SERVICE_TYPE_OTHER = "SERVICE_TYPE_OTHER";
     field public static final String TYPE_1SEG = "TYPE_1SEG";
+    field public static final String TYPE_ATSC3_T = "TYPE_ATSC3_T";
     field public static final String TYPE_ATSC_C = "TYPE_ATSC_C";
     field public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
     field public static final String TYPE_ATSC_T = "TYPE_ATSC_T";
@@ -28862,6 +28985,7 @@
     field public static final String COLUMN_SEASON_TITLE = "season_title";
     field public static final String COLUMN_SERIES_ID = "series_id";
     field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
     field public static final String COLUMN_STARTING_PRICE = "starting_price";
     field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
     field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -28909,6 +29033,8 @@
     field public static final String COLUMN_EPISODE_DISPLAY_NUMBER = "episode_display_number";
     field @Deprecated public static final String COLUMN_EPISODE_NUMBER = "episode_number";
     field public static final String COLUMN_EPISODE_TITLE = "episode_title";
+    field public static final String COLUMN_EVENT_ID = "event_id";
+    field public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
     field public static final String COLUMN_INTERNAL_PROVIDER_DATA = "internal_provider_data";
     field public static final String COLUMN_INTERNAL_PROVIDER_FLAG1 = "internal_provider_flag1";
     field public static final String COLUMN_INTERNAL_PROVIDER_FLAG2 = "internal_provider_flag2";
@@ -28925,6 +29051,7 @@
     field public static final String COLUMN_SEASON_TITLE = "season_title";
     field public static final String COLUMN_SERIES_ID = "series_id";
     field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
     field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
     field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
     field public static final String COLUMN_TITLE = "title";
@@ -28990,6 +29117,7 @@
     field public static final String COLUMN_SEASON_TITLE = "season_title";
     field public static final String COLUMN_SERIES_ID = "series_id";
     field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
     field public static final String COLUMN_START_TIME_UTC_MILLIS = "start_time_utc_millis";
     field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
     field public static final String COLUMN_TITLE = "title";
@@ -29050,6 +29178,7 @@
     field public static final String COLUMN_SEASON_TITLE = "season_title";
     field public static final String COLUMN_SERIES_ID = "series_id";
     field public static final String COLUMN_SHORT_DESCRIPTION = "short_description";
+    field public static final String COLUMN_SPLIT_ID = "split_id";
     field public static final String COLUMN_STARTING_PRICE = "starting_price";
     field public static final String COLUMN_THUMBNAIL_ASPECT_RATIO = "poster_thumbnail_aspect_ratio";
     field public static final String COLUMN_THUMBNAIL_URI = "thumbnail_uri";
@@ -29654,7 +29783,7 @@
     method public long getReportTimestamp();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.ConnectivityDiagnosticsManager.ConnectivityReport> CREATOR;
-    field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttemped";
+    field public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK = "networkProbesAttempted";
     field public static final String KEY_NETWORK_PROBES_SUCCEEDED_BITMASK = "networkProbesSucceeded";
     field public static final String KEY_NETWORK_VALIDATION_RESULT = "networkValidationResult";
     field public static final int NETWORK_PROBE_DNS = 4; // 0x4
@@ -29669,10 +29798,12 @@
   }
 
   public static final class ConnectivityDiagnosticsManager.DataStallReport implements android.os.Parcelable {
-    ctor public ConnectivityDiagnosticsManager.DataStallReport(@NonNull android.net.Network, long, int, @NonNull android.os.PersistableBundle);
+    ctor public ConnectivityDiagnosticsManager.DataStallReport(@NonNull android.net.Network, long, int, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkCapabilities, @NonNull android.os.PersistableBundle);
     method public int describeContents();
     method public int getDetectionMethod();
+    method @NonNull public android.net.LinkProperties getLinkProperties();
     method @NonNull public android.net.Network getNetwork();
+    method @NonNull public android.net.NetworkCapabilities getNetworkCapabilities();
     method public long getReportTimestamp();
     method @NonNull public android.os.PersistableBundle getStallDetails();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
@@ -30091,7 +30222,7 @@
     method @NonNull public android.net.NetworkCapabilities setLinkDownstreamBandwidthKbps(int);
     method @NonNull public android.net.NetworkCapabilities setLinkUpstreamBandwidthKbps(int);
     method @NonNull public android.net.NetworkCapabilities setNetworkSpecifier(@NonNull android.net.NetworkSpecifier);
-    method public void setOwnerUid(int);
+    method @NonNull public android.net.NetworkCapabilities setOwnerUid(int);
     method @NonNull public android.net.NetworkCapabilities setSignalStrength(int);
     method public void writeToParcel(android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkCapabilities> CREATOR;
@@ -30731,7 +30862,6 @@
     method public void close();
     method public void continueCall(int) throws android.net.sip.SipException;
     method public void endCall() throws android.net.sip.SipException;
-    method @Nullable public android.net.rtp.AudioGroup getAudioGroup();
     method public android.net.sip.SipProfile getLocalProfile();
     method public android.net.sip.SipProfile getPeerProfile();
     method public int getState();
@@ -30742,7 +30872,6 @@
     method public void makeCall(android.net.sip.SipProfile, android.net.sip.SipSession, int) throws android.net.sip.SipException;
     method public void sendDtmf(int);
     method public void sendDtmf(int, android.os.Message);
-    method public void setAudioGroup(@NonNull android.net.rtp.AudioGroup);
     method public void setListener(android.net.sip.SipAudioCall.Listener);
     method public void setListener(android.net.sip.SipAudioCall.Listener, boolean);
     method public void setSpeakerMode(boolean);
@@ -30791,7 +30920,6 @@
     method public void close(String) throws android.net.sip.SipException;
     method public android.net.sip.SipSession createSipSession(android.net.sip.SipProfile, android.net.sip.SipSession.Listener) throws android.net.sip.SipException;
     method public static String getCallId(android.content.Intent);
-    method @NonNull public java.util.List<android.net.sip.SipProfile> getListOfProfiles() throws android.net.sip.SipException;
     method public static String getOfferSessionDescription(android.content.Intent);
     method public android.net.sip.SipSession getSessionFor(android.content.Intent) throws android.net.sip.SipException;
     method public static boolean isApiSupported(android.content.Context);
@@ -30809,11 +30937,6 @@
     method public void setRegistrationListener(String, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
     method public android.net.sip.SipAudioCall takeAudioCall(android.content.Intent, android.net.sip.SipAudioCall.Listener) throws android.net.sip.SipException;
     method public void unregister(android.net.sip.SipProfile, android.net.sip.SipRegistrationListener) throws android.net.sip.SipException;
-    field public static final String ACTION_SIP_CALL_OPTION_CHANGED = "android.net.sip.action.SIP_CALL_OPTION_CHANGED";
-    field public static final String ACTION_SIP_INCOMING_CALL = "android.net.sip.action.SIP_INCOMING_CALL";
-    field public static final String ACTION_SIP_REMOVE_PROFILE = "android.net.sip.action.SIP_REMOVE_PROFILE";
-    field public static final String ACTION_SIP_SERVICE_UP = "android.net.sip.action.SIP_SERVICE_UP";
-    field public static final String ACTION_START_SIP = "android.net.sip.action.START_SIP";
     field public static final String EXTRA_CALL_ID = "android:sipCallID";
     field public static final String EXTRA_OFFER_SD = "android:sipOfferSD";
     field public static final int INCOMING_CALL_RESULT_CODE = 101; // 0x65
@@ -30823,7 +30946,6 @@
     method public int describeContents();
     method public String getAuthUserName();
     method public boolean getAutoRegistration();
-    method public int getCallingUid();
     method public String getDisplayName();
     method public String getPassword();
     method public int getPort();
@@ -31120,11 +31242,6 @@
     field @Deprecated public static final String[] strings;
   }
 
-  @Deprecated public static class WifiConfiguration.SuiteBCipher {
-    field @Deprecated public static final int ECDHE_ECDSA = 0; // 0x0
-    field @Deprecated public static final int ECDHE_RSA = 1; // 0x1
-  }
-
   public class WifiEnterpriseConfig implements android.os.Parcelable {
     ctor public WifiEnterpriseConfig();
     ctor public WifiEnterpriseConfig(android.net.wifi.WifiEnterpriseConfig);
@@ -31245,6 +31362,7 @@
     method public int getWifiState();
     method public boolean is5GHzBandSupported();
     method public boolean is6GHzBandSupported();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isAutoWakeupEnabled();
     method @Deprecated public boolean isDeviceToApRttSupported();
     method public boolean isEasyConnectSupported();
     method public boolean isEnhancedOpenSupported();
@@ -31252,6 +31370,7 @@
     method public boolean isP2pSupported();
     method public boolean isPreferredNetworkOffloadSupported();
     method @Deprecated public boolean isScanAlwaysAvailable();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isScanThrottleEnabled();
     method public boolean isStaApConcurrencySupported();
     method public boolean isTdlsSupported();
     method public boolean isWapiSupported();
@@ -31279,7 +31398,7 @@
     field public static final String ACTION_PICK_WIFI_NETWORK = "android.net.wifi.PICK_WIFI_NETWORK";
     field public static final String ACTION_REQUEST_SCAN_ALWAYS_AVAILABLE = "android.net.wifi.action.REQUEST_SCAN_ALWAYS_AVAILABLE";
     field public static final String ACTION_WIFI_NETWORK_SUGGESTION_POST_CONNECTION = "android.net.wifi.action.WIFI_NETWORK_SUGGESTION_POST_CONNECTION";
-    field public static final String ACTION_WIFI_SCAN_AVAILABLE = "android.net.wifi.action.WIFI_SCAN_AVAILABLE";
+    field public static final String ACTION_WIFI_SCAN_AVAILABILITY_CHANGED = "android.net.wifi.action.WIFI_SCAN_AVAILABILITY_CHANGED";
     field @Deprecated public static final int ERROR_AUTHENTICATING = 1; // 0x1
     field @Deprecated public static final String EXTRA_BSSID = "bssid";
     field public static final String EXTRA_NETWORK_INFO = "networkInfo";
@@ -31412,7 +31531,7 @@
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsAppInteractionRequired(boolean);
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsEnhancedOpen(boolean);
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsHiddenSsid(boolean);
-    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsInitialAutoJoinEnabled(boolean);
+    method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsInitialAutojoinEnabled(boolean);
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsMetered(boolean);
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setIsUserInteractionRequired(boolean);
     method @NonNull public android.net.wifi.WifiNetworkSuggestion.Builder setPasspointConfig(@NonNull android.net.wifi.hotspot2.PasspointConfiguration);
@@ -31607,6 +31726,7 @@
     method public android.net.wifi.hotspot2.pps.Credential getCredential();
     method public android.net.wifi.hotspot2.pps.HomeSp getHomeSp();
     method public long getSubscriptionExpirationTimeInMillis();
+    method @NonNull public String getUniqueId() throws java.lang.IllegalStateException;
     method public boolean isOsuProvisioned();
     method public void setCredential(android.net.wifi.hotspot2.pps.Credential);
     method public void setHomeSp(android.net.wifi.hotspot2.pps.HomeSp);
@@ -31723,7 +31843,7 @@
     field public static final int GROUP_OWNER_INTENT_MAX = 15; // 0xf
     field public static final int GROUP_OWNER_INTENT_MIN = 0; // 0x0
     field public String deviceAddress;
-    field public int groupOwnerIntent;
+    field @IntRange(from=0, to=15) public int groupOwnerIntent;
     field public android.net.wifi.WpsInfo wps;
   }
 
@@ -31787,8 +31907,8 @@
     method public boolean isGroupOwner();
     method public void writeToParcel(android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroup> CREATOR;
-    field public static final int PERSISTENT_NET_ID = -2; // 0xfffffffe
-    field public static final int TEMPORARY_NET_ID = -1; // 0xffffffff
+    field public static final int NETWORK_ID_PERSISTENT = -2; // 0xfffffffe
+    field public static final int NETWORK_ID_TEMPORARY = -1; // 0xffffffff
   }
 
   public class WifiP2pInfo implements android.os.Parcelable {
@@ -31915,14 +32035,14 @@
     method public int getDeviceType();
     method public int getMaxThroughput();
     method public boolean isContentProtectionSupported();
+    method public boolean isEnabled();
     method public boolean isSessionAvailable();
-    method public boolean isWfdEnabled();
     method public void setContentProtectionSupported(boolean);
-    method public void setControlPort(int);
+    method public void setControlPort(@IntRange(from=0) int);
     method public boolean setDeviceType(int);
-    method public void setMaxThroughput(int);
+    method public void setEnabled(boolean);
+    method public void setMaxThroughput(@IntRange(from=0) int);
     method public void setSessionAvailable(boolean);
-    method public void setWfdEnabled(boolean);
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pWfdInfo> CREATOR;
     field public static final int DEVICE_TYPE_PRIMARY_SINK = 1; // 0x1
@@ -35656,6 +35776,7 @@
     field public static final String INCREMENTAL;
     field public static final int PREVIEW_SDK_INT;
     field public static final String RELEASE;
+    field @NonNull public static final String RELEASE_OR_CODENAME;
     field @Deprecated public static final String SDK;
     field public static final int SDK_INT;
     field public static final String SECURITY_PATCH;
@@ -36935,7 +37056,7 @@
     ctor public VibrationAttributes.Builder();
     ctor public VibrationAttributes.Builder(@Nullable android.os.VibrationAttributes);
     method @NonNull public android.os.VibrationAttributes build();
-    method @NonNull public android.os.VibrationAttributes.Builder replaceFlags(int);
+    method @NonNull public android.os.VibrationAttributes.Builder setFlags(int, int);
     method @NonNull public android.os.VibrationAttributes.Builder setUsage(int);
   }
 
@@ -37000,6 +37121,15 @@
 
 }
 
+package android.os.ext.test {
+
+  @Deprecated public class Test {
+    ctor @Deprecated public Test();
+    method @Deprecated public void testE();
+  }
+
+}
+
 package android.os.health {
 
   public class HealthStats {
@@ -39550,7 +39680,7 @@
   protected static interface ContactsContract.RawContactsColumns {
     field public static final String ACCOUNT_TYPE_AND_DATA_SET = "account_type_and_data_set";
     field public static final String AGGREGATION_MODE = "aggregation_mode";
-    field @Deprecated public static final String BACKUP_ID = "backup_id";
+    field public static final String BACKUP_ID = "backup_id";
     field public static final String CONTACT_ID = "contact_id";
     field public static final String DATA_SET = "data_set";
     field public static final String DELETED = "deleted";
@@ -40202,6 +40332,7 @@
     field public static final String VOLUME_NAME = "volume_name";
     field public static final String WIDTH = "width";
     field public static final String WRITER = "writer";
+    field public static final String XMP = "xmp";
     field public static final String YEAR = "year";
   }
 
@@ -40370,6 +40501,7 @@
     field public static final String EXTRA_BATTERY_SAVER_MODE_ENABLED = "android.settings.extra.battery_saver_mode_enabled";
     field public static final String EXTRA_BIOMETRIC_MINIMUM_STRENGTH_REQUIRED = "android.provider.extra.BIOMETRIC_MINIMUM_STRENGTH_REQUIRED";
     field public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
+    field public static final String EXTRA_CONVERSATION_ID = "android.provider.extra.CONVERSATION_ID";
     field public static final String EXTRA_DO_NOT_DISTURB_MODE_ENABLED = "android.settings.extra.do_not_disturb_mode_enabled";
     field public static final String EXTRA_DO_NOT_DISTURB_MODE_MINUTES = "android.settings.extra.do_not_disturb_mode_minutes";
     field public static final String EXTRA_EASY_CONNECT_ATTEMPTED_SSID = "android.provider.extra.EASY_CONNECT_ATTEMPTED_SSID";
@@ -42551,6 +42683,7 @@
     method @NonNull public String getKeystoreAlias();
     method public int getPurposes();
     method @NonNull public String[] getSignaturePaddings();
+    method public int getUserAuthenticationType();
     method public int getUserAuthenticationValidityDurationSeconds();
     method @NonNull public boolean isDigestsSpecified();
     method public boolean isInvalidatedByBiometricEnrollment();
@@ -42585,9 +42718,10 @@
     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);
+    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationParameters(@IntRange(from=0xffffffff) int, int);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationRequired(boolean);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+    method @Deprecated @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserConfirmationRequired(boolean);
     method @NonNull public android.security.keystore.KeyGenParameterSpec.Builder setUserPresenceRequired(boolean);
   }
@@ -42604,6 +42738,7 @@
     method public int getOrigin();
     method public int getPurposes();
     method @NonNull public String[] getSignaturePaddings();
+    method public int getUserAuthenticationType();
     method public int getUserAuthenticationValidityDurationSeconds();
     method public boolean isInsideSecureHardware();
     method public boolean isInvalidatedByBiometricEnrollment();
@@ -42627,6 +42762,8 @@
   }
 
   public abstract class KeyProperties {
+    field public static final int AUTH_BIOMETRIC_STRONG = 2; // 0x2
+    field public static final int AUTH_DEVICE_CREDENTIAL = 1; // 0x1
     field public static final String BLOCK_MODE_CBC = "CBC";
     field public static final String BLOCK_MODE_CTR = "CTR";
     field public static final String BLOCK_MODE_ECB = "ECB";
@@ -42673,6 +42810,7 @@
     method @Nullable public java.util.Date getKeyValidityStart();
     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();
@@ -42698,9 +42836,10 @@
     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);
+    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationParameters(@IntRange(from=0xffffffff) int, int);
     method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationRequired(boolean);
     method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidWhileOnBody(boolean);
-    method @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
+    method @Deprecated @NonNull public android.security.keystore.KeyProtection.Builder setUserAuthenticationValidityDurationSeconds(@IntRange(from=0xffffffff) int);
     method @NonNull public android.security.keystore.KeyProtection.Builder setUserConfirmationRequired(boolean);
     method @NonNull public android.security.keystore.KeyProtection.Builder setUserPresenceRequired(boolean);
   }
@@ -43160,25 +43299,25 @@
 
 package android.service.chooser {
 
-  public final class ChooserTarget implements android.os.Parcelable {
-    ctor public ChooserTarget(CharSequence, android.graphics.drawable.Icon, float, android.content.ComponentName, @Nullable android.os.Bundle);
-    method public int describeContents();
-    method public android.content.ComponentName getComponentName();
-    method public android.graphics.drawable.Icon getIcon();
-    method public android.os.Bundle getIntentExtras();
-    method public float getScore();
-    method public CharSequence getTitle();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> 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();
+    method @Deprecated public android.content.ComponentName getComponentName();
+    method @Deprecated public android.graphics.drawable.Icon getIcon();
+    method @Deprecated public android.os.Bundle getIntentExtras();
+    method @Deprecated public float getScore();
+    method @Deprecated public CharSequence getTitle();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.service.chooser.ChooserTarget> CREATOR;
   }
 
-  public abstract class ChooserTargetService extends android.app.Service {
-    ctor public ChooserTargetService();
-    method public android.os.IBinder onBind(android.content.Intent);
-    method public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
-    field public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
-    field public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
-    field public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
+  @Deprecated public abstract class ChooserTargetService extends android.app.Service {
+    ctor @Deprecated public ChooserTargetService();
+    method @Deprecated public android.os.IBinder onBind(android.content.Intent);
+    method @Deprecated public abstract java.util.List<android.service.chooser.ChooserTarget> onGetChooserTargets(android.content.ComponentName, android.content.IntentFilter);
+    field @Deprecated public static final String BIND_PERMISSION = "android.permission.BIND_CHOOSER_TARGET_SERVICE";
+    field @Deprecated public static final String META_DATA_NAME = "android.service.chooser.chooser_target_service";
+    field @Deprecated public static final String SERVICE_INTERFACE = "android.service.chooser.ChooserTargetService";
   }
 
 }
@@ -43244,6 +43383,7 @@
   public abstract class ControlsProviderService extends android.app.Service {
     ctor public ControlsProviderService();
     method public abstract void loadAvailableControls(@NonNull java.util.function.Consumer<java.util.List<android.service.controls.Control>>);
+    method public void loadSuggestedControls(int, @NonNull java.util.function.Consumer<java.util.List<android.service.controls.Control>>);
     method @NonNull public final android.os.IBinder onBind(@NonNull android.content.Intent);
     method public abstract void performControlAction(@NonNull String, @NonNull android.service.controls.actions.ControlAction, @NonNull java.util.function.Consumer<java.lang.Integer>);
     method @NonNull public abstract java.util.concurrent.Flow.Publisher<android.service.controls.Control> publisherFor(@NonNull java.util.List<java.lang.String>);
@@ -43760,12 +43900,14 @@
     method public int getPriorityCallSenders();
     method public int getPriorityCategoryAlarms();
     method public int getPriorityCategoryCalls();
+    method public int getPriorityCategoryConversations();
     method public int getPriorityCategoryEvents();
     method public int getPriorityCategoryMedia();
     method public int getPriorityCategoryMessages();
     method public int getPriorityCategoryReminders();
     method public int getPriorityCategoryRepeatCallers();
     method public int getPriorityCategorySystem();
+    method public int getPriorityConversationSenders();
     method public int getPriorityMessageSenders();
     method public int getVisualEffectAmbient();
     method public int getVisualEffectBadge();
@@ -43775,6 +43917,10 @@
     method public int getVisualEffectPeek();
     method public int getVisualEffectStatusBar();
     method public void writeToParcel(android.os.Parcel, int);
+    field public static final int CONVERSATION_SENDERS_ANYONE = 1; // 0x1
+    field public static final int CONVERSATION_SENDERS_IMPORTANT = 2; // 0x2
+    field public static final int CONVERSATION_SENDERS_NONE = 3; // 0x3
+    field public static final int CONVERSATION_SENDERS_UNSET = 0; // 0x0
     field @NonNull public static final android.os.Parcelable.Creator<android.service.notification.ZenPolicy> CREATOR;
     field public static final int PEOPLE_TYPE_ANYONE = 1; // 0x1
     field public static final int PEOPLE_TYPE_CONTACTS = 2; // 0x2
@@ -43791,6 +43937,7 @@
     method @NonNull public android.service.notification.ZenPolicy.Builder allowAlarms(boolean);
     method @NonNull public android.service.notification.ZenPolicy.Builder allowAllSounds();
     method @NonNull public android.service.notification.ZenPolicy.Builder allowCalls(int);
+    method @NonNull public android.service.notification.ZenPolicy.Builder allowConversations(int);
     method @NonNull public android.service.notification.ZenPolicy.Builder allowEvents(boolean);
     method @NonNull public android.service.notification.ZenPolicy.Builder allowMedia(boolean);
     method @NonNull public android.service.notification.ZenPolicy.Builder allowMessages(int);
@@ -43942,7 +44089,7 @@
     field public static final String ACTION_QS_TILE = "android.service.quicksettings.action.QS_TILE";
     field public static final String ACTION_QS_TILE_PREFERENCES = "android.service.quicksettings.action.QS_TILE_PREFERENCES";
     field public static final String META_DATA_ACTIVE_TILE = "android.service.quicksettings.ACTIVE_TILE";
-    field public static final String META_DATA_BOOLEAN_TILE = "android.service.quicksettings.BOOLEAN_TILE";
+    field public static final String META_DATA_TOGGLEABLE_TILE = "android.service.quicksettings.TOGGLEABLE_TILE";
   }
 
 }
@@ -44023,8 +44170,8 @@
   }
 
   public static final class AlwaysOnHotwordDetector.ModelParamRange {
-    method public int end();
-    method public int start();
+    method public int getEnd();
+    method public int getStart();
   }
 
   public class VoiceInteractionService extends android.app.Service {
@@ -45364,14 +45511,13 @@
     field public static final int DIRECTION_INCOMING = 0; // 0x0
     field public static final int DIRECTION_OUTGOING = 1; // 0x1
     field public static final int DIRECTION_UNKNOWN = -1; // 0xffffffff
-    field public static final int PROPERTY_ASSISTED_DIALING_USED = 512; // 0x200
+    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
     field public static final int PROPERTY_CONFERENCE = 1; // 0x1
     field public static final int PROPERTY_EMERGENCY_CALLBACK_MODE = 4; // 0x4
     field public static final int PROPERTY_ENTERPRISE_CALL = 32; // 0x20
     field public static final int PROPERTY_GENERIC_CONFERENCE = 2; // 0x2
     field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 128; // 0x80
     field public static final int PROPERTY_HIGH_DEF_AUDIO = 16; // 0x10
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 8192; // 0x2000
     field public static final int PROPERTY_IS_EXTERNAL_CALL = 64; // 0x40
     field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 2048; // 0x800
     field public static final int PROPERTY_RTT = 1024; // 0x400
@@ -45449,13 +45595,13 @@
   public abstract class Conference extends android.telecom.Conferenceable {
     ctor public Conference(android.telecom.PhoneAccountHandle);
     method public final boolean addConnection(android.telecom.Connection);
-    method @NonNull public static android.telecom.Conference createFailedConference(@NonNull android.telecom.DisconnectCause, @NonNull android.telecom.PhoneAccountHandle);
     method public final void destroy();
     method public final android.telecom.CallAudioState getCallAudioState();
     method public final java.util.List<android.telecom.Connection> getConferenceableConnections();
     method public final int getConnectionCapabilities();
     method public final int getConnectionProperties();
-    method public final long getConnectionTime();
+    method public final long getConnectionStartElapsedRealtimeMillis();
+    method @IntRange(from=0) public final long getConnectionTime();
     method public final java.util.List<android.telecom.Connection> getConnections();
     method public final android.telecom.DisconnectCause getDisconnectCause();
     method public final android.os.Bundle getExtras();
@@ -45464,8 +45610,6 @@
     method public final android.telecom.StatusHints getStatusHints();
     method public android.telecom.Connection.VideoProvider getVideoProvider();
     method public int getVideoState();
-    method public final boolean isRingbackRequested();
-    method public void onAnswer(int);
     method public void onCallAudioStateChanged(android.telecom.CallAudioState);
     method public void onConnectionAdded(android.telecom.Connection);
     method public void onDisconnect();
@@ -45474,7 +45618,6 @@
     method public void onMerge(android.telecom.Connection);
     method public void onMerge();
     method public void onPlayDtmfTone(char);
-    method public void onReject();
     method public void onSeparate(android.telecom.Connection);
     method public void onStopDtmfTone();
     method public void onSwap();
@@ -45488,14 +45631,13 @@
     method public final void setConferenceableConnections(java.util.List<android.telecom.Connection>);
     method public final void setConnectionCapabilities(int);
     method public final void setConnectionProperties(int);
-    method public final void setConnectionStartElapsedRealTime(long);
-    method public final void setConnectionTime(long);
+    method @Deprecated public final void setConnectionStartElapsedRealTime(long);
+    method public final void setConnectionStartElapsedRealtimeMillis(long);
+    method public final void setConnectionTime(@IntRange(from=0) long);
     method public final void setDialing();
     method public final void setDisconnected(android.telecom.DisconnectCause);
     method public final void setExtras(@Nullable android.os.Bundle);
     method public final void setOnHold();
-    method public final void setRingbackRequested(boolean);
-    method public final void setRinging();
     method public final void setStatusHints(android.telecom.StatusHints);
     method public final void setVideoProvider(android.telecom.Connection, android.telecom.Connection.VideoProvider);
     method public final void setVideoState(android.telecom.Connection, int);
@@ -45651,10 +45793,9 @@
     field public static final String EXTRA_IS_RTT_AUDIO_PRESENT = "android.telecom.extra.IS_RTT_AUDIO_PRESENT";
     field public static final String EXTRA_LAST_FORWARDED_NUMBER = "android.telecom.extra.LAST_FORWARDED_NUMBER";
     field public static final String EXTRA_SIP_INVITE = "android.telecom.extra.SIP_INVITE";
-    field public static final int PROPERTY_ASSISTED_DIALING_USED = 512; // 0x200
+    field public static final int PROPERTY_ASSISTED_DIALING = 512; // 0x200
     field public static final int PROPERTY_HAS_CDMA_VOICE_PRIVACY = 32; // 0x20
     field public static final int PROPERTY_HIGH_DEF_AUDIO = 4; // 0x4
-    field public static final int PROPERTY_IS_ADHOC_CONFERENCE = 4096; // 0x1000
     field public static final int PROPERTY_IS_EXTERNAL_CALL = 16; // 0x10
     field public static final int PROPERTY_IS_RTT = 256; // 0x100
     field public static final int PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL = 1024; // 0x400
@@ -46070,7 +46211,6 @@
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall();
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.ANSWER_PHONE_CALLS, android.Manifest.permission.MODIFY_PHONE_STATE}) public void acceptRingingCall(int);
     method public void addNewIncomingCall(android.telecom.PhoneAccountHandle, android.os.Bundle);
-    method public void addNewIncomingConference(@NonNull android.telecom.PhoneAccountHandle, @NonNull android.os.Bundle);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void cancelMissedCallsNotification();
     method public android.content.Intent createManageBlockedNumbersIntent();
     method @Deprecated @RequiresPermission(android.Manifest.permission.ANSWER_PHONE_CALLS) public boolean endCall();
@@ -46098,7 +46238,6 @@
     method public void registerPhoneAccount(android.telecom.PhoneAccount);
     method @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public void showInCallScreen(boolean);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void silenceRinger();
-    method @RequiresPermission(android.Manifest.permission.CALL_PHONE) public void startConference(@NonNull java.util.List<android.net.Uri>, @NonNull android.os.Bundle);
     method public void unregisterPhoneAccount(android.telecom.PhoneAccountHandle);
     field public static final String ACTION_CHANGE_DEFAULT_DIALER = "android.telecom.action.CHANGE_DEFAULT_DIALER";
     field public static final String ACTION_CHANGE_PHONE_ACCOUNTS = "android.telecom.action.CHANGE_PHONE_ACCOUNTS";
@@ -46372,7 +46511,6 @@
   public final class BarringInfo implements android.os.Parcelable {
     method public int describeContents();
     method @NonNull public android.telephony.BarringInfo.BarringServiceInfo getBarringServiceInfo(int);
-    method public boolean isServiceBarred(int);
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field public static final int BARRING_SERVICE_TYPE_CS_FALLBACK = 5; // 0x5
     field public static final int BARRING_SERVICE_TYPE_CS_SERVICE = 0; // 0x0
@@ -46626,7 +46764,6 @@
     field public static final String KEY_SIM_NETWORK_UNLOCK_ALLOW_DISMISS_BOOL = "sim_network_unlock_allow_dismiss_bool";
     field public static final String KEY_SMS_REQUIRES_DESTINATION_NUMBER_CONVERSION_BOOL = "sms_requires_destination_number_conversion_bool";
     field public static final String KEY_SUPPORT_3GPP_CALL_FORWARDING_WHILE_ROAMING_BOOL = "support_3gpp_call_forwarding_while_roaming_bool";
-    field public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL = "support_adhoc_conference_calls_bool";
     field public static final String KEY_SUPPORT_CLIR_NETWORK_DEFAULT_BOOL = "support_clir_network_default_bool";
     field public static final String KEY_SUPPORT_CONFERENCE_CALL_BOOL = "support_conference_call_bool";
     field public static final String KEY_SUPPORT_EMERGENCY_SMS_OVER_IMS_BOOL = "support_emergency_sms_over_ims_bool";
@@ -46835,7 +46972,7 @@
     method @NonNull public abstract android.telephony.CellIdentity getCellIdentity();
     method @NonNull public abstract android.telephony.CellSignalStrength getCellSignalStrength();
     method @Deprecated public long getTimeStamp();
-    method public long getTimestampNanos();
+    method public long getTimestampMillis();
     method public boolean isRegistered();
     field public static final int CONNECTION_NONE = 0; // 0x0
     field public static final int CONNECTION_PRIMARY_SERVING = 1; // 0x1
@@ -46995,6 +47132,19 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.telephony.ClosedSubscriberGroupInfo> CREATOR;
   }
 
+  public final class DisplayInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getNetworkType();
+    method public int getOverrideNetworkType();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.telephony.DisplayInfo> CREATOR;
+    field public static final int OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = 2; // 0x2
+    field public static final int OVERRIDE_NETWORK_TYPE_LTE_CA = 1; // 0x1
+    field public static final int OVERRIDE_NETWORK_TYPE_NONE = 0; // 0x0
+    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA = 3; // 0x3
+    field public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4; // 0x4
+  }
+
   public class IccOpenLogicalChannelResponse implements android.os.Parcelable {
     method public int describeContents();
     method public int getChannel();
@@ -47061,8 +47211,8 @@
   }
 
   public class MmsManager {
-    method public void downloadMultimediaMessage(int, @NonNull String, @NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
-    method public void sendMultimediaMessage(int, @NonNull android.net.Uri, @Nullable String, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent);
+    method public void downloadMultimediaMessage(int, @NonNull String, @NonNull android.net.Uri, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent, long);
+    method public void sendMultimediaMessage(int, @NonNull android.net.Uri, @Nullable String, @Nullable android.os.Bundle, @Nullable android.app.PendingIntent, long);
   }
 
   @Deprecated public class NeighboringCellInfo implements android.os.Parcelable {
@@ -47251,6 +47401,7 @@
     method public void onDataActivity(int);
     method public void onDataConnectionStateChanged(int);
     method public void onDataConnectionStateChanged(int, int);
+    method @RequiresPermission("android.permission.READ_PHONE_STATE") public void onDisplayInfoChanged(@NonNull android.telephony.DisplayInfo);
     method @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public void onImsCallDisconnectCauseChanged(@NonNull android.telephony.ims.ImsReasonInfo);
     method public void onMessageWaitingIndicatorChanged(boolean);
     method @RequiresPermission("android.permission.MODIFY_PHONE_STATE") public void onPreciseDataConnectionStateChanged(@NonNull android.telephony.PreciseDataConnectionState);
@@ -47260,7 +47411,7 @@
     method public void onSignalStrengthsChanged(android.telephony.SignalStrength);
     method public void onUserMobileDataStateChanged(boolean);
     field public static final int LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE = 4194304; // 0x400000
-    field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final int LISTEN_BARRING_INFO = -2147483648; // 0x80000000
+    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_BARRING_INFO = -2147483648; // 0x80000000
     field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_CALL_DISCONNECT_CAUSES = 33554432; // 0x2000000
     field public static final int LISTEN_CALL_FORWARDING_INDICATOR = 8; // 0x8
     field public static final int LISTEN_CALL_STATE = 32; // 0x20
@@ -47268,12 +47419,13 @@
     field public static final int LISTEN_CELL_LOCATION = 16; // 0x10
     field public static final int LISTEN_DATA_ACTIVITY = 128; // 0x80
     field public static final int LISTEN_DATA_CONNECTION_STATE = 64; // 0x40
+    field public static final int LISTEN_DISPLAY_INFO_CHANGED = 1048576; // 0x100000
     field public static final int LISTEN_EMERGENCY_NUMBER_LIST = 16777216; // 0x1000000
     field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_IMS_CALL_DISCONNECT_CAUSES = 134217728; // 0x8000000
     field public static final int LISTEN_MESSAGE_WAITING_INDICATOR = 4; // 0x4
     field public static final int LISTEN_NONE = 0; // 0x0
     field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_DATA_CONNECTION_STATE = 4096; // 0x1000
-    field @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 1073741824; // 0x40000000
+    field @RequiresPermission(android.Manifest.permission.READ_PRECISE_PHONE_STATE) public static final int LISTEN_REGISTRATION_FAILURE = 1073741824; // 0x40000000
     field public static final int LISTEN_SERVICE_STATE = 1; // 0x1
     field @Deprecated public static final int LISTEN_SIGNAL_STRENGTH = 2; // 0x2
     field public static final int LISTEN_SIGNAL_STRENGTHS = 256; // 0x100
@@ -47282,6 +47434,7 @@
 
   public final class PreciseDataConnectionState implements android.os.Parcelable {
     method public int describeContents();
+    method @Nullable public android.telephony.data.ApnSetting getApnSetting();
     method public int getLastCauseCode();
     method @Nullable public android.net.LinkProperties getLinkProperties();
     method public int getNetworkType();
@@ -47349,7 +47502,7 @@
     method @Deprecated public int getGsmBitErrorRate();
     method @Deprecated public int getGsmSignalStrength();
     method public int getLevel();
-    method public long getTimestampNanos();
+    method public long getTimestampMillis();
     method @Deprecated public boolean isGsm();
     method public void writeToParcel(android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.telephony.SignalStrength> CREATOR;
@@ -51767,7 +51920,7 @@
     method public int getFlags();
     method public android.view.Display.HdrCapabilities getHdrCapabilities();
     method @Deprecated public int getHeight();
-    method public void getMetrics(android.util.DisplayMetrics);
+    method @Deprecated public void getMetrics(android.util.DisplayMetrics);
     method public android.view.Display.Mode getMode();
     method public String getName();
     method @Deprecated public int getOrientation();
@@ -51776,10 +51929,10 @@
     method public long getPresentationDeadlineNanos();
     method public void getRealMetrics(android.util.DisplayMetrics);
     method public void getRealSize(android.graphics.Point);
-    method public void getRectSize(android.graphics.Rect);
+    method @Deprecated public void getRectSize(android.graphics.Rect);
     method public float getRefreshRate();
     method public int getRotation();
-    method public void getSize(android.graphics.Point);
+    method @Deprecated public void getSize(android.graphics.Point);
     method public int getState();
     method public android.view.Display.Mode[] getSupportedModes();
     method @Deprecated public float[] getSupportedRefreshRates();
@@ -53263,6 +53416,38 @@
     method public void recycle();
   }
 
+  public abstract class VerifiedInputEvent implements android.os.Parcelable {
+    method public int describeContents();
+    method public int getDeviceId();
+    method public int getDisplayId();
+    method public long getEventTimeNanos();
+    method public int getSource();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedInputEvent> CREATOR;
+  }
+
+  public final class VerifiedKeyEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
+    method public int getAction();
+    method public long getDownTimeNanos();
+    method @Nullable public Boolean getFlag(int);
+    method public int getKeyCode();
+    method public int getMetaState();
+    method public int getRepeatCount();
+    method public int getScanCode();
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedKeyEvent> CREATOR;
+  }
+
+  public final class VerifiedMotionEvent extends android.view.VerifiedInputEvent implements android.os.Parcelable {
+    method public int getActionMasked();
+    method public int getButtonState();
+    method public long getDownTimeNanos();
+    method @Nullable public Boolean getFlag(int);
+    method public int getMetaState();
+    method public float getRawX();
+    method public float getRawY();
+    field @NonNull public static final android.os.Parcelable.Creator<android.view.VerifiedMotionEvent> CREATOR;
+  }
+
   @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
     ctor public View(android.content.Context);
     ctor public View(android.content.Context, @Nullable android.util.AttributeSet);
@@ -54182,7 +54367,7 @@
   public class ViewConfiguration {
     ctor @Deprecated public ViewConfiguration();
     method public static android.view.ViewConfiguration get(android.content.Context);
-    method @FloatRange(from=1.0) public static float getAmbiguousGestureMultiplier();
+    method @Deprecated @FloatRange(from=1.0) public static float getAmbiguousGestureMultiplier();
     method public static long getDefaultActionModeHideDuration();
     method public static int getDoubleTapTimeout();
     method @Deprecated public static int getEdgeSlop();
@@ -54196,6 +54381,7 @@
     method @Deprecated public static int getMaximumFlingVelocity();
     method @Deprecated public static int getMinimumFlingVelocity();
     method public static int getPressedStateDuration();
+    method @FloatRange(from=1.0) public float getScaledAmbiguousGestureMultiplier();
     method public int getScaledDoubleTapSlop();
     method public int getScaledEdgeSlop();
     method public int getScaledFadingEdgeLength();
@@ -54801,7 +54987,6 @@
     method public final void removeOnFrameMetricsAvailableListener(android.view.Window.OnFrameMetricsAvailableListener);
     method public boolean requestFeature(int);
     method @NonNull public final <T extends android.view.View> T requireViewById(@IdRes int);
-    method public void resetOnContentApplyWindowInsetsListener();
     method public abstract void restoreHierarchyState(android.os.Bundle);
     method public abstract android.os.Bundle saveHierarchyState();
     method public void setAllowEnterTransitionOverlap(boolean);
@@ -54819,6 +55004,7 @@
     method public abstract void setContentView(android.view.View);
     method public abstract void setContentView(android.view.View, android.view.ViewGroup.LayoutParams);
     method public abstract void setDecorCaptionShade(int);
+    method public void setDecorFitsSystemWindows(boolean);
     method protected void setDefaultWindowFormat(int);
     method public void setDimAmount(float);
     method public void setElevation(float);
@@ -54840,7 +55026,6 @@
     method public abstract void setNavigationBarColor(@ColorInt int);
     method public void setNavigationBarContrastEnforced(boolean);
     method public void setNavigationBarDividerColor(@ColorInt int);
-    method public void setOnContentApplyWindowInsetsListener(@Nullable android.view.Window.OnContentApplyWindowInsetsListener);
     method public void setPreferMinimalPostProcessing(boolean);
     method public void setReenterTransition(android.transition.Transition);
     method public abstract void setResizingCaptionDrawable(android.graphics.drawable.Drawable);
@@ -54935,10 +55120,6 @@
     method @Nullable public android.view.ActionMode onWindowStartingActionMode(android.view.ActionMode.Callback, int);
   }
 
-  public static interface Window.OnContentApplyWindowInsetsListener {
-    method @NonNull public android.util.Pair<android.graphics.Insets,android.view.WindowInsets> onContentApplyWindowInsets(@NonNull android.view.WindowInsets);
-  }
-
   public static interface Window.OnFrameMetricsAvailableListener {
     method public void onFrameMetricsAvailable(android.view.Window, android.view.FrameMetrics, int);
   }
@@ -55089,16 +55270,13 @@
   }
 
   public interface WindowInsetsController {
-    method public default void controlInputMethodAnimation(long, @Nullable android.view.animation.Interpolator, @NonNull android.view.WindowInsetsAnimationControlListener);
-    method public void controlWindowInsetsAnimation(int, long, @Nullable android.view.animation.Interpolator, @NonNull android.view.WindowInsetsAnimationControlListener);
+    method @NonNull public android.os.CancellationSignal controlWindowInsetsAnimation(int, long, @Nullable android.view.animation.Interpolator, @NonNull android.view.WindowInsetsAnimationControlListener);
     method public int getSystemBarsAppearance();
     method public int getSystemBarsBehavior();
     method public void hide(int);
-    method public default void hideInputMethod();
     method public void setSystemBarsAppearance(int, int);
     method public void setSystemBarsBehavior(int);
     method public void show(int);
-    method public default void showInputMethod();
     field public static final int APPEARANCE_LIGHT_NAVIGATION_BARS = 16; // 0x10
     field public static final int APPEARANCE_LIGHT_STATUS_BARS = 8; // 0x8
     field public static final int BEHAVIOR_SHOW_BARS_BY_SWIPE = 1; // 0x1
@@ -55612,6 +55790,7 @@
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_EXPAND;
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_FOCUS;
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_HIDE_TOOLTIP;
+    field @NonNull public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_IME_ENTER;
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_LONG_CLICK;
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_MOVE_WINDOW;
     field public static final android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction ACTION_NEXT_AT_MOVEMENT_GRANULARITY;
@@ -56218,6 +56397,9 @@
     method public void removeData(@NonNull android.view.contentcapture.DataRemovalRequest);
     method public void setContentCaptureEnabled(boolean);
     method public void shareData(@NonNull android.view.contentcapture.DataShareRequest, @NonNull java.util.concurrent.Executor, @NonNull android.view.contentcapture.DataShareWriteAdapter);
+    field public static final int DATA_SHARE_ERROR_CONCURRENT_REQUEST = 2; // 0x2
+    field public static final int DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 3; // 0x3
+    field public static final int DATA_SHARE_ERROR_UNKNOWN = 1; // 0x1
   }
 
   public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
@@ -56279,9 +56461,7 @@
   public interface DataShareWriteAdapter {
     method public default void onError(int);
     method public void onRejected();
-    method public void onWrite(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.CancellationSignal);
-    field public static final int ERROR_CONCURRENT_REQUEST = 1; // 0x1
-    field public static final int ERROR_UNKNOWN = 2; // 0x2
+    method public void onWrite(@NonNull android.os.ParcelFileDescriptor);
   }
 
 }
@@ -60841,7 +61021,7 @@
     method public int getGravity();
     method public float getHorizontalMargin();
     method public float getVerticalMargin();
-    method @Deprecated public android.view.View getView();
+    method @Deprecated @Nullable public android.view.View getView();
     method public int getXOffset();
     method public int getYOffset();
     method public static android.widget.Toast makeText(android.content.Context, CharSequence, int);
diff --git a/api/module-app-current.txt b/api/module-app-current.txt
deleted file mode 100644
index dadbd79..0000000
--- a/api/module-app-current.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-// Signature format: 2.0
-package android.app {
-
-  public final class NotificationChannel implements android.os.Parcelable {
-    method public void setBlockableSystem(boolean);
-  }
-
-}
-
-package android.provider {
-
-  public final class DocumentsContract {
-    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
-  }
-
-  public static final class Settings.Global extends android.provider.Settings.NameValueTable {
-    field public static final String COMMON_CRITERIA_MODE = "common_criteria_mode";
-  }
-
-}
-
diff --git a/api/module-app-removed.txt b/api/module-app-removed.txt
deleted file mode 100644
index d802177..0000000
--- a/api/module-app-removed.txt
+++ /dev/null
@@ -1 +0,0 @@
-// Signature format: 2.0
diff --git a/api/module-lib-current.txt b/api/module-lib-current.txt
index 1a2cb74..7b66f73 100644
--- a/api/module-lib-current.txt
+++ b/api/module-lib-current.txt
@@ -1,147 +1,163 @@
 // Signature format: 2.0
-package android.app.timedetector {
+package android.annotation {
 
-  public final class PhoneTimeSuggestion implements android.os.Parcelable {
-    method public void addDebugInfo(@NonNull String);
-    method public void addDebugInfo(@NonNull java.util.List<java.lang.String>);
-    method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getDebugInfo();
-    method public int getPhoneId();
-    method @Nullable public android.os.TimestampedValue<java.lang.Long> getUtcTime();
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.timedetector.PhoneTimeSuggestion> CREATOR;
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.FIELD}) public @interface NonNull {
   }
 
-  public static final class PhoneTimeSuggestion.Builder {
-    ctor public PhoneTimeSuggestion.Builder(int);
-    method @NonNull public android.app.timedetector.PhoneTimeSuggestion.Builder addDebugInfo(@NonNull String);
-    method @NonNull public android.app.timedetector.PhoneTimeSuggestion build();
-    method @NonNull public android.app.timedetector.PhoneTimeSuggestion.Builder setUtcTime(@Nullable android.os.TimestampedValue<java.lang.Long>);
-  }
-
-  public interface TimeDetector {
-    method @RequiresPermission("android.permission.SUGGEST_PHONE_TIME_AND_ZONE") public void suggestPhoneTime(@NonNull android.app.timedetector.PhoneTimeSuggestion);
+  @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) @java.lang.annotation.Target({java.lang.annotation.ElementType.METHOD, java.lang.annotation.ElementType.PARAMETER, java.lang.annotation.ElementType.FIELD}) public @interface Nullable {
   }
 
 }
 
-package android.app.timezonedetector {
+package android.net {
 
-  public final class PhoneTimeZoneSuggestion implements android.os.Parcelable {
-    method public void addDebugInfo(@NonNull String);
-    method public void addDebugInfo(@NonNull java.util.List<java.lang.String>);
-    method @NonNull public static android.app.timezonedetector.PhoneTimeZoneSuggestion createEmptySuggestion(int, @NonNull String);
+  public final class TetheredClient implements android.os.Parcelable {
+    ctor public TetheredClient(@NonNull android.net.MacAddress, @NonNull java.util.Collection<android.net.TetheredClient.AddressInfo>, int);
     method public int describeContents();
-    method @NonNull public java.util.List<java.lang.String> getDebugInfo();
-    method public int getMatchType();
-    method public int getPhoneId();
-    method public int getQuality();
-    method @Nullable public String getZoneId();
+    method @NonNull public java.util.List<android.net.TetheredClient.AddressInfo> getAddresses();
+    method @NonNull public android.net.MacAddress getMacAddress();
+    method public int getTetheringType();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.app.timezonedetector.PhoneTimeZoneSuggestion> CREATOR;
-    field public static final int MATCH_TYPE_EMULATOR_ZONE_ID = 4; // 0x4
-    field public static final int MATCH_TYPE_NA = 0; // 0x0
-    field public static final int MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET = 3; // 0x3
-    field public static final int MATCH_TYPE_NETWORK_COUNTRY_ONLY = 2; // 0x2
-    field public static final int MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY = 5; // 0x5
-    field public static final int QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS = 3; // 0x3
-    field public static final int QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET = 2; // 0x2
-    field public static final int QUALITY_NA = 0; // 0x0
-    field public static final int QUALITY_SINGLE_ZONE = 1; // 0x1
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient> CREATOR;
   }
 
-  public static final class PhoneTimeZoneSuggestion.Builder {
-    ctor public PhoneTimeZoneSuggestion.Builder(int);
-    method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion.Builder addDebugInfo(@NonNull String);
-    method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion build();
-    method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion.Builder setMatchType(int);
-    method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion.Builder setQuality(int);
-    method @NonNull public android.app.timezonedetector.PhoneTimeZoneSuggestion.Builder setZoneId(@Nullable String);
+  public static final class TetheredClient.AddressInfo implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.net.LinkAddress getAddress();
+    method @Nullable public String getHostname();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.TetheredClient.AddressInfo> CREATOR;
   }
 
-  public interface TimeZoneDetector {
-    method @RequiresPermission("android.permission.SUGGEST_PHONE_TIME_AND_ZONE") public void suggestPhoneTimeZone(@NonNull android.app.timezonedetector.PhoneTimeZoneSuggestion);
+  public class TetheringConstants {
+    ctor public TetheringConstants();
+    field public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
+    field public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
+    field public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
+    field public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
+    field public static final String EXTRA_SET_ALARM = "extraSetAlarm";
+  }
+
+  public class TetheringManager {
+    ctor public TetheringManager(@NonNull android.content.Context, @NonNull java.util.function.Supplier<android.os.IBinder>);
+    method public int getLastTetherError(@NonNull String);
+    method @NonNull public String[] getTetherableBluetoothRegexs();
+    method @NonNull public String[] getTetherableIfaces();
+    method @NonNull public String[] getTetherableUsbRegexs();
+    method @NonNull public String[] getTetherableWifiRegexs();
+    method @NonNull public String[] getTetheredIfaces();
+    method @NonNull public String[] getTetheringErroredIfaces();
+    method public boolean isTetheringSupported();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_NETWORK_STATE) public void registerTetheringEventCallback(@NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.TetheringEventCallback);
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void requestLatestTetheringEntitlementResult(int, boolean, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.OnTetheringEntitlementResultListener);
+    method public void requestLatestTetheringEntitlementResult(int, @NonNull android.os.ResultReceiver, boolean);
+    method @Deprecated public int setUsbTethering(boolean);
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(@NonNull android.net.TetheringManager.TetheringRequest, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void startTethering(int, @NonNull java.util.concurrent.Executor, @NonNull android.net.TetheringManager.StartTetheringCallback);
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void stopAllTethering();
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.WRITE_SETTINGS}) public void stopTethering(int);
+    method @Deprecated public int tether(@NonNull String);
+    method @RequiresPermission(anyOf={"android.permission.TETHER_PRIVILEGED", android.Manifest.permission.ACCESS_NETWORK_STATE}) public void unregisterTetheringEventCallback(@NonNull android.net.TetheringManager.TetheringEventCallback);
+    method @Deprecated public int untether(@NonNull String);
+    field public static final String ACTION_TETHER_STATE_CHANGED = "android.net.conn.TETHER_STATE_CHANGED";
+    field public static final String EXTRA_ACTIVE_LOCAL_ONLY = "android.net.extra.ACTIVE_LOCAL_ONLY";
+    field public static final String EXTRA_ACTIVE_TETHER = "tetherArray";
+    field public static final String EXTRA_AVAILABLE_TETHER = "availableArray";
+    field public static final String EXTRA_ERRORED_TETHER = "erroredArray";
+    field public static final int TETHERING_BLUETOOTH = 2; // 0x2
+    field public static final int TETHERING_ETHERNET = 5; // 0x5
+    field public static final int TETHERING_INVALID = -1; // 0xffffffff
+    field public static final int TETHERING_NCM = 4; // 0x4
+    field public static final int TETHERING_USB = 1; // 0x1
+    field public static final int TETHERING_WIFI = 0; // 0x0
+    field public static final int TETHERING_WIFI_P2P = 3; // 0x3
+    field public static final int TETHER_ERROR_DHCPSERVER_ERROR = 12; // 0xc
+    field public static final int TETHER_ERROR_DISABLE_NAT_ERROR = 9; // 0x9
+    field public static final int TETHER_ERROR_ENABLE_NAT_ERROR = 8; // 0x8
+    field public static final int TETHER_ERROR_ENTITLEMENT_UNKNOWN = 13; // 0xd
+    field public static final int TETHER_ERROR_IFACE_CFG_ERROR = 10; // 0xa
+    field public static final int TETHER_ERROR_MASTER_ERROR = 5; // 0x5
+    field public static final int TETHER_ERROR_NO_ACCESS_TETHERING_PERMISSION = 15; // 0xf
+    field public static final int TETHER_ERROR_NO_CHANGE_TETHERING_PERMISSION = 14; // 0xe
+    field public static final int TETHER_ERROR_NO_ERROR = 0; // 0x0
+    field public static final int TETHER_ERROR_PROVISION_FAILED = 11; // 0xb
+    field public static final int TETHER_ERROR_SERVICE_UNAVAIL = 2; // 0x2
+    field public static final int TETHER_ERROR_TETHER_IFACE_ERROR = 6; // 0x6
+    field public static final int TETHER_ERROR_UNAVAIL_IFACE = 4; // 0x4
+    field public static final int TETHER_ERROR_UNKNOWN_IFACE = 1; // 0x1
+    field public static final int TETHER_ERROR_UNSUPPORTED = 3; // 0x3
+    field public static final int TETHER_ERROR_UNTETHER_IFACE_ERROR = 7; // 0x7
+  }
+
+  public static interface TetheringManager.OnTetheringEntitlementResultListener {
+    method public void onTetheringEntitlementResult(int);
+  }
+
+  public abstract static class TetheringManager.StartTetheringCallback {
+    ctor public TetheringManager.StartTetheringCallback();
+    method public void onTetheringFailed(int);
+    method public void onTetheringStarted();
+  }
+
+  public abstract static class TetheringManager.TetheringEventCallback {
+    ctor public TetheringManager.TetheringEventCallback();
+    method public void onClientsChanged(@NonNull java.util.Collection<android.net.TetheredClient>);
+    method public void onError(@NonNull String, int);
+    method @Deprecated public void onTetherableInterfaceRegexpsChanged(@NonNull android.net.TetheringManager.TetheringInterfaceRegexps);
+    method public void onTetherableInterfacesChanged(@NonNull java.util.List<java.lang.String>);
+    method public void onTetheredInterfacesChanged(@NonNull java.util.List<java.lang.String>);
+    method public void onTetheringSupported(boolean);
+    method public void onUpstreamChanged(@Nullable android.net.Network);
+  }
+
+  @Deprecated public static class TetheringManager.TetheringInterfaceRegexps {
+    ctor @Deprecated public TetheringManager.TetheringInterfaceRegexps(@NonNull String[], @NonNull String[], @NonNull String[]);
+    method @Deprecated @NonNull public java.util.List<java.lang.String> getTetherableBluetoothRegexs();
+    method @Deprecated @NonNull public java.util.List<java.lang.String> getTetherableUsbRegexs();
+    method @Deprecated @NonNull public java.util.List<java.lang.String> getTetherableWifiRegexs();
+  }
+
+  public static class TetheringManager.TetheringRequest {
+  }
+
+  public static class TetheringManager.TetheringRequest.Builder {
+    ctor public TetheringManager.TetheringRequest.Builder(int);
+    method @NonNull public android.net.TetheringManager.TetheringRequest build();
+    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setExemptFromEntitlementCheck(boolean);
+    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder setSilentProvisioning(boolean);
+    method @NonNull @RequiresPermission("android.permission.TETHER_PRIVILEGED") public android.net.TetheringManager.TetheringRequest.Builder useStaticIpv4Addresses(@NonNull android.net.LinkAddress);
   }
 
 }
 
 package android.os {
 
-  public final class TimestampedValue<T> implements android.os.Parcelable {
-    ctor public TimestampedValue(long, @Nullable T);
-    method public int describeContents();
-    method public long getReferenceTimeMillis();
-    method @Nullable public T getValue();
-    method public static long referenceTimeDifference(@NonNull android.os.TimestampedValue<?>, @NonNull android.os.TimestampedValue<?>);
-    method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.os.TimestampedValue<?>> CREATOR;
+  public class StatsFrameworkInitializer {
+    method public static void registerServiceWrappers();
+    method public static void setStatsServiceManager(@NonNull android.os.StatsServiceManager);
+  }
+
+  public class StatsServiceManager {
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer();
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer();
+    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsdServiceRegisterer();
+  }
+
+  public static class StatsServiceManager.ServiceNotFoundException extends java.lang.Exception {
+    ctor public StatsServiceManager.ServiceNotFoundException(@NonNull String);
+  }
+
+  public static final class StatsServiceManager.ServiceRegisterer {
+    method @Nullable public android.os.IBinder get();
+    method @Nullable public android.os.IBinder getOrThrow() throws android.os.StatsServiceManager.ServiceNotFoundException;
   }
 
 }
 
-package android.timezone {
+package android.os.ext.test {
 
-  public final class CountryTimeZones {
-    method @Nullable public android.icu.util.TimeZone getDefaultTimeZone();
-    method @Nullable public String getDefaultTimeZoneId();
-    method @NonNull public java.util.List<android.timezone.CountryTimeZones.TimeZoneMapping> getEffectiveTimeZoneMappingsAt(long);
-    method public boolean hasUtcZone(long);
-    method public boolean isDefaultTimeZoneBoosted();
-    method public boolean isForCountryCode(@NonNull String);
-    method @Nullable public android.timezone.CountryTimeZones.OffsetResult lookupByOffsetWithBias(int, @Nullable Boolean, @Nullable Integer, long, @Nullable android.icu.util.TimeZone);
-  }
-
-  public static final class CountryTimeZones.OffsetResult {
-    ctor public CountryTimeZones.OffsetResult(@NonNull android.icu.util.TimeZone, boolean);
-    method @NonNull public android.icu.util.TimeZone getTimeZone();
-    method public boolean isOnlyMatch();
-  }
-
-  public static final class CountryTimeZones.TimeZoneMapping {
-    method @Nullable public android.icu.util.TimeZone getTimeZone();
-    method @NonNull public String getTimeZoneId();
-  }
-
-  public final class TelephonyLookup {
-    method @NonNull public static android.timezone.TelephonyLookup getInstance();
-    method @Nullable public android.timezone.TelephonyNetworkFinder getTelephonyNetworkFinder();
-  }
-
-  public final class TelephonyNetwork {
-    method @NonNull public String getCountryIsoCode();
-    method @NonNull public String getMcc();
-    method @NonNull public String getMnc();
-  }
-
-  public final class TelephonyNetworkFinder {
-    method @Nullable public android.timezone.TelephonyNetwork findNetworkByMccMnc(@NonNull String, @NonNull String);
-  }
-
-  public final class TimeZoneFinder {
-    method @Nullable public String getIanaVersion();
-    method @NonNull public static android.timezone.TimeZoneFinder getInstance();
-    method @Nullable public android.timezone.CountryTimeZones lookupCountryTimeZones(@NonNull String);
-  }
-
-  public final class TzDataSetVersion {
-    method public static int currentFormatMajorVersion();
-    method public static int currentFormatMinorVersion();
-    method public int getFormatMajorVersion();
-    method public int getFormatMinorVersion();
-    method public int getRevision();
-    method @NonNull public String getRulesVersion();
-    method public static boolean isCompatibleWithThisDevice(android.timezone.TzDataSetVersion);
-    method @NonNull public static android.timezone.TzDataSetVersion read() throws java.io.IOException, android.timezone.TzDataSetVersion.TzDataSetException;
-  }
-
-  public static final class TzDataSetVersion.TzDataSetException extends java.lang.Exception {
-    ctor public TzDataSetVersion.TzDataSetException(String);
-    ctor public TzDataSetVersion.TzDataSetException(String, Throwable);
-  }
-
-  public final class ZoneInfoDb {
-    method @NonNull public static android.timezone.ZoneInfoDb getInstance();
-    method @NonNull public String getVersion();
+  @Deprecated public class Test {
+    method @Deprecated public void testD();
   }
 
 }
diff --git a/api/system-current.txt b/api/system-current.txt
index 6c61a2d..0fd8a20 100755
--- a/api/system-current.txt
+++ b/api/system-current.txt
@@ -9,6 +9,7 @@
     field public static final String ACCESS_DRM_CERTIFICATES = "android.permission.ACCESS_DRM_CERTIFICATES";
     field @Deprecated public static final String ACCESS_FM_RADIO = "android.permission.ACCESS_FM_RADIO";
     field public static final String ACCESS_INSTANT_APPS = "android.permission.ACCESS_INSTANT_APPS";
+    field public static final String ACCESS_LOCUS_ID_USAGE_STATS = "android.permission.ACCESS_LOCUS_ID_USAGE_STATS";
     field public static final String ACCESS_MESSAGES_ON_ICC = "android.permission.ACCESS_MESSAGES_ON_ICC";
     field public static final String ACCESS_MOCK_LOCATION = "android.permission.ACCESS_MOCK_LOCATION";
     field public static final String ACCESS_MTP = "android.permission.ACCESS_MTP";
@@ -18,6 +19,7 @@
     field public static final String ACCESS_SHORTCUTS = "android.permission.ACCESS_SHORTCUTS";
     field public static final String ACCESS_SURFACE_FLINGER = "android.permission.ACCESS_SURFACE_FLINGER";
     field public static final String ACCESS_TV_TUNER = "android.permission.ACCESS_TV_TUNER";
+    field public static final String ACCESS_VIBRATOR_STATE = "android.permission.ACCESS_VIBRATOR_STATE";
     field public static final String ACTIVITY_EMBEDDING = "android.permission.ACTIVITY_EMBEDDING";
     field public static final String ADJUST_RUNTIME_PERMISSIONS_POLICY = "android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY";
     field public static final String ALLOCATE_AGGRESSIVE = "android.permission.ALLOCATE_AGGRESSIVE";
@@ -188,6 +190,7 @@
     field public static final String REGISTER_CALL_PROVIDER = "android.permission.REGISTER_CALL_PROVIDER";
     field public static final String REGISTER_CONNECTION_MANAGER = "android.permission.REGISTER_CONNECTION_MANAGER";
     field public static final String REGISTER_SIM_SUBSCRIPTION = "android.permission.REGISTER_SIM_SUBSCRIPTION";
+    field public static final String REGISTER_STATS_PULL_ATOM = "android.permission.REGISTER_STATS_PULL_ATOM";
     field public static final String REMOTE_DISPLAY_PROVIDER = "android.permission.REMOTE_DISPLAY_PROVIDER";
     field public static final String REMOVE_DRM_CERTIFICATES = "android.permission.REMOVE_DRM_CERTIFICATES";
     field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
@@ -218,11 +221,9 @@
     field public static final String STOP_APP_SWITCHES = "android.permission.STOP_APP_SWITCHES";
     field public static final String SUBSTITUTE_NOTIFICATION_APP_NAME = "android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME";
     field public static final String SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON = "android.permission.SUBSTITUTE_SHARE_TARGET_APP_NAME_AND_ICON";
-    field public static final String SUGGEST_PHONE_TIME_AND_ZONE = "android.permission.SUGGEST_PHONE_TIME_AND_ZONE";
     field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
     field public static final String SYSTEM_CAMERA = "android.permission.SYSTEM_CAMERA";
     field public static final String TETHER_PRIVILEGED = "android.permission.TETHER_PRIVILEGED";
-    field public static final String TUNER_RESOURCE_ACCESS = "android.permission.TUNER_RESOURCE_ACCESS";
     field public static final String TV_INPUT_HARDWARE = "android.permission.TV_INPUT_HARDWARE";
     field public static final String TV_VIRTUAL_REMOTE_CONTROLLER = "android.permission.TV_VIRTUAL_REMOTE_CONTROLLER";
     field public static final String UNLIMITED_SHORTCUTS_API_CALLS = "android.permission.UNLIMITED_SHORTCUTS_API_CALLS";
@@ -392,6 +393,7 @@
     field public static final String OPSTR_INSTANT_APP_START_FOREGROUND = "android:instant_app_start_foreground";
     field public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
     field public static final String OPSTR_LEGACY_STORAGE = "android:legacy_storage";
+    field public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
     field public static final String OPSTR_MANAGE_EXTERNAL_STORAGE = "android:manage_external_storage";
     field public static final String OPSTR_MANAGE_IPSEC_TUNNELS = "android:manage_ipsec_tunnels";
     field public static final String OPSTR_MUTE_MICROPHONE = "android:mute_microphone";
@@ -586,10 +588,6 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.app.AppOpsManager.PackageOps> CREATOR;
   }
 
-  public final class ApplicationExitInfo implements android.os.Parcelable {
-    method @NonNull public android.os.UserHandle getUserHandle();
-  }
-
   public class BroadcastOptions {
     method public static android.app.BroadcastOptions makeBasic();
     method @RequiresPermission("android.permission.START_ACTIVITIES_FROM_BACKGROUND") public void setBackgroundActivityStartsAllowed(boolean);
@@ -665,6 +663,7 @@
     method public int getUserLockedFields();
     method public boolean isDeleted();
     method public void populateFromXml(org.xmlpull.v1.XmlPullParser);
+    method public void setBlockableSystem(boolean);
     method public org.json.JSONObject toJson() throws org.json.JSONException;
     method public void writeXml(org.xmlpull.v1.XmlSerializer) throws java.io.IOException;
     field public static final int USER_LOCKED_SOUND = 32; // 0x20
@@ -693,7 +692,7 @@
     method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] getRegisteredExperimentIds() throws android.app.StatsManager.StatsUnavailableException;
     method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getReports(long) throws android.app.StatsManager.StatsUnavailableException;
     method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public byte[] getStatsMetadata() throws android.app.StatsManager.StatsUnavailableException;
-    method public void registerPullAtomCallback(int, @Nullable android.app.StatsManager.PullAtomMetadata, @NonNull java.util.concurrent.Executor, @NonNull android.app.StatsManager.StatsPullAtomCallback);
+    method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void registerPullAtomCallback(int, @Nullable android.app.StatsManager.PullAtomMetadata, @NonNull java.util.concurrent.Executor, @NonNull android.app.StatsManager.StatsPullAtomCallback);
     method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void removeConfig(long) throws android.app.StatsManager.StatsUnavailableException;
     method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean removeConfiguration(long);
     method @NonNull @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public long[] setActiveConfigsChangedOperation(@Nullable android.app.PendingIntent) throws android.app.StatsManager.StatsUnavailableException;
@@ -701,7 +700,7 @@
     method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setBroadcastSubscriber(long, long, android.app.PendingIntent);
     method @Deprecated @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public boolean setDataFetchOperation(long, android.app.PendingIntent);
     method @RequiresPermission(allOf={android.Manifest.permission.DUMP, android.Manifest.permission.PACKAGE_USAGE_STATS}) public void setFetchReportsOperation(android.app.PendingIntent, long) throws android.app.StatsManager.StatsUnavailableException;
-    method public void unregisterPullAtomCallback(int);
+    method @RequiresPermission(android.Manifest.permission.REGISTER_STATS_PULL_ATOM) public void unregisterPullAtomCallback(int);
     field public static final String ACTION_STATSD_STARTED = "android.app.action.STATSD_STARTED";
     field public static final String EXTRA_STATS_ACTIVE_CONFIG_KEYS = "android.app.extra.STATS_ACTIVE_CONFIG_KEYS";
     field public static final String EXTRA_STATS_BROADCAST_SUBSCRIBER_COOKIES = "android.app.extra.STATS_BROADCAST_SUBSCRIBER_COOKIES";
@@ -1152,6 +1151,16 @@
 
 }
 
+package android.app.compat {
+
+  public final class CompatChanges {
+    method public static boolean isChangeEnabled(long);
+    method public static boolean isChangeEnabled(long, @NonNull String, @NonNull android.os.UserHandle);
+    method public static boolean isChangeEnabled(long, int);
+  }
+
+}
+
 package android.app.contentsuggestions {
 
   public final class ClassificationsRequest implements android.os.Parcelable {
@@ -1465,27 +1474,28 @@
 
   public final class BluetoothA2dpSink implements android.bluetooth.BluetoothProfile {
     method public void finalize();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public int getConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isAudioPlaying(@Nullable android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice, int);
-    field @RequiresPermission(android.Manifest.permission.BLUETOOTH) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isAudioPlaying(@Nullable android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@Nullable android.bluetooth.BluetoothDevice, int);
+    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
   }
 
   public final class BluetoothAdapter {
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean addOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull java.util.concurrent.Executor, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean connectAllEnabledProfiles(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean connectAllEnabledProfiles(@NonNull android.bluetooth.BluetoothDevice);
     method public boolean disableBLE();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean disconnectAllEnabledProfiles(@NonNull android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean disconnectAllEnabledProfiles(@NonNull android.bluetooth.BluetoothDevice);
     method public boolean enableBLE();
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean enableNoAutoConnect();
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean factoryReset();
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public long getDiscoveryEndMillis();
     method public boolean isBleScanAlwaysAvailable();
     method public boolean isLeEnabled();
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeActiveDevice(int);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean removeOnMetadataChangedListener(@NonNull android.bluetooth.BluetoothDevice, @NonNull android.bluetooth.BluetoothAdapter.OnMetadataChangedListener);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setActiveDevice(@Nullable android.bluetooth.BluetoothDevice, int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int, int);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setScanMode(int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setActiveDevice(@NonNull android.bluetooth.BluetoothDevice, int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setScanMode(int, long);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setScanMode(int);
     field public static final String ACTION_BLE_STATE_CHANGED = "android.bluetooth.adapter.action.BLE_STATE_CHANGED";
     field public static final String ACTION_REQUEST_BLE_SCAN_ALWAYS_AVAILABLE = "android.bluetooth.adapter.action.REQUEST_BLE_SCAN_ALWAYS_AVAILABLE";
     field public static final int ACTIVE_DEVICE_ALL = 2; // 0x2
@@ -1556,7 +1566,7 @@
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean isEncrypted();
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean isInSilenceMode();
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean removeBond();
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH) public boolean setAlias(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setAlias(@NonNull String);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMessageAccessPermission(int);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setMetadata(int, @NonNull byte[]);
     method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setPhonebookAccessPermission(int);
@@ -1604,7 +1614,7 @@
   }
 
   public final class BluetoothHidDevice implements android.bluetooth.BluetoothProfile {
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
   }
 
   public final class BluetoothHidHost implements android.bluetooth.BluetoothProfile {
@@ -1640,9 +1650,9 @@
   }
 
   public class BluetoothPbap implements android.bluetooth.BluetoothProfile {
-    method public int getConnectionState(@Nullable android.bluetooth.BluetoothDevice);
-    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_ADMIN) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
-    field public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public int getConnectionState(@Nullable android.bluetooth.BluetoothDevice);
+    method @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public boolean setConnectionPolicy(@NonNull android.bluetooth.BluetoothDevice, int);
+    field @RequiresPermission(android.Manifest.permission.BLUETOOTH_PRIVILEGED) public static final String ACTION_CONNECTION_STATE_CHANGED = "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
   }
 
   public interface BluetoothProfile {
@@ -1915,18 +1925,22 @@
   public abstract class IntegrityFormula {
     method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
     method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
-    method @NonNull public android.content.integrity.IntegrityFormula equalTo(@NonNull String);
-    method @NonNull public android.content.integrity.IntegrityFormula equalTo(boolean);
-    method @NonNull public android.content.integrity.IntegrityFormula equalTo(long);
-    method @NonNull public android.content.integrity.IntegrityFormula greaterThan(long);
-    method @NonNull public android.content.integrity.IntegrityFormula greaterThanOrEquals(long);
     method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
-    field @NonNull public static final android.content.integrity.IntegrityFormula APP_CERTIFICATE;
-    field @NonNull public static final android.content.integrity.IntegrityFormula INSTALLER_CERTIFICATE;
-    field @NonNull public static final android.content.integrity.IntegrityFormula INSTALLER_NAME;
-    field @NonNull public static final android.content.integrity.IntegrityFormula PACKAGE_NAME;
-    field @NonNull public static final android.content.integrity.IntegrityFormula PRE_INSTALLED;
-    field @NonNull public static final android.content.integrity.IntegrityFormula VERSION_CODE;
+  }
+
+  public static final class IntegrityFormula.Application {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
+  }
+
+  public static final class IntegrityFormula.Installer {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
   }
 
   public final class Rule implements android.os.Parcelable {
@@ -2000,18 +2014,15 @@
   }
 
   public final class InstallationFile implements android.os.Parcelable {
-    ctor public InstallationFile(@NonNull String, long, @Nullable byte[]);
+    ctor public InstallationFile(int, @NonNull String, long, @Nullable byte[], @Nullable byte[]);
     method public int describeContents();
-    method public int getFileType();
+    method public long getLengthBytes();
+    method public int getLocation();
     method @Nullable public byte[] getMetadata();
     method @NonNull public String getName();
-    method public long getSize();
+    method @Nullable public byte[] getSignature();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.InstallationFile> CREATOR;
-    field public static final int FILE_TYPE_APK = 0; // 0x0
-    field public static final int FILE_TYPE_LIB = 1; // 0x1
-    field public static final int FILE_TYPE_OBB = 2; // 0x2
-    field public static final int FILE_TYPE_UNKNOWN = -1; // 0xffffffff
   }
 
   public final class InstantAppInfo implements android.os.Parcelable {
@@ -2098,6 +2109,10 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.content.pm.LauncherApps.AppUsageLimit> CREATOR;
   }
 
+  public static class LauncherApps.ShortcutQuery {
+    method @NonNull public android.content.pm.LauncherApps.ShortcutQuery setLocusIds(@Nullable java.util.List<android.content.LocusId>);
+  }
+
   public class PackageInstaller {
     method @RequiresPermission(android.Manifest.permission.INSTALL_PACKAGES) public void setPermissionsResult(int, boolean);
     field public static final int DATA_LOADER_TYPE_INCREMENTAL = 2; // 0x2
@@ -2197,10 +2212,13 @@
     field public static final String EXTRA_REQUEST_PERMISSIONS_NAMES = "android.content.pm.extra.REQUEST_PERMISSIONS_NAMES";
     field public static final String EXTRA_REQUEST_PERMISSIONS_RESULTS = "android.content.pm.extra.REQUEST_PERMISSIONS_RESULTS";
     field public static final String FEATURE_BROADCAST_RADIO = "android.hardware.broadcastradio";
+    field public static final String FEATURE_INCREMENTAL_DELIVERY = "android.software.incremental_delivery";
     field public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
     field public static final String FEATURE_TELEPHONY_CARRIERLOCK = "android.hardware.telephony.carrierlock";
     field public static final int FLAGS_PERMISSION_RESERVED_PERMISSIONCONTROLLER = -268435456; // 0xf0000000
     field public static final int FLAG_PERMISSION_APPLY_RESTRICTION = 16384; // 0x4000
+    field public static final int FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED = 131072; // 0x20000
+    field public static final int FLAG_PERMISSION_AUTO_REVOKE_USER_SET = 262144; // 0x40000
     field public static final int FLAG_PERMISSION_GRANTED_BY_DEFAULT = 32; // 0x20
     field public static final int FLAG_PERMISSION_GRANTED_BY_ROLE = 32768; // 0x8000
     field public static final int FLAG_PERMISSION_ONE_TIME = 65536; // 0x10000
@@ -2284,7 +2302,7 @@
     method public void onPermissionsChanged(int);
   }
 
-  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
+  @IntDef(prefix={"FLAG_PERMISSION_"}, value={android.content.pm.PackageManager.FLAG_PERMISSION_USER_SET, android.content.pm.PackageManager.FLAG_PERMISSION_USER_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_POLICY_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKE_ON_UPGRADE, android.content.pm.PackageManager.FLAG_PERMISSION_SYSTEM_FIXED, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_DEFAULT, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_GRANTED, android.content.pm.PackageManager.FLAG_PERMISSION_USER_SENSITIVE_WHEN_DENIED, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT, android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION, android.content.pm.PackageManager.FLAG_PERMISSION_GRANTED_BY_ROLE, android.content.pm.PackageManager.FLAG_PERMISSION_REVOKED_COMPAT, android.content.pm.PackageManager.FLAG_PERMISSION_ONE_TIME, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED, android.content.pm.PackageManager.FLAG_PERMISSION_AUTO_REVOKE_USER_SET}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface PackageManager.PermissionFlags {
   }
 
   public class PermissionGroupInfo extends android.content.pm.PackageItemInfo implements android.os.Parcelable {
@@ -2302,6 +2320,7 @@
     field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
     field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
     field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
+    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
     field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
     field public static final int PROTECTION_FLAG_TELEPHONY = 4194304; // 0x400000
     field public static final int PROTECTION_FLAG_WELLBEING = 131072; // 0x20000
@@ -2451,8 +2470,8 @@
 package android.hardware.biometrics {
 
   public static interface BiometricManager.Authenticators {
-    field public static final int BIOMETRIC_CONVENIENCE = 4095; // 0xfff
-    field public static final int EMPTY_SET = 0; // 0x0
+    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int BIOMETRIC_CONVENIENCE = 4095; // 0xfff
+    field @RequiresPermission(android.Manifest.permission.WRITE_DEVICE_CONFIG) public static final int EMPTY_SET = 0; // 0x0
   }
 
 }
@@ -3677,17 +3696,17 @@
   }
 
   public static final class SoundTrigger.ModelParamRange implements android.os.Parcelable {
+    method public int getEnd();
+    method public int getStart();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModelParamRange> CREATOR;
-    field public final int end;
-    field public final int start;
   }
 
   public static final class SoundTrigger.ModuleProperties implements android.os.Parcelable {
     method public int describeContents();
     method public void writeToParcel(android.os.Parcel, int);
-    field public static final int CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
-    field public static final int CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
+    field public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 1; // 0x1
+    field public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 2; // 0x2
     field @NonNull public static final android.os.Parcelable.Creator<android.hardware.soundtrigger.SoundTrigger.ModuleProperties> CREATOR;
     field public final int audioCapabilities;
     field @NonNull public final String description;
@@ -3788,6 +3807,7 @@
 
   public final class GnssCapabilities {
     method public boolean hasGeofencing();
+    method public boolean hasGnssAntennaInfo();
     method public boolean hasLowPowerMode();
     method public boolean hasMeasurementCorrections();
     method public boolean hasMeasurementCorrectionsExcessPathLength();
@@ -3847,6 +3867,20 @@
     method @NonNull public android.location.GnssReflectingPlane.Builder setLongitudeDegrees(@FloatRange(from=-180.0F, to=180.0f) double);
   }
 
+  public final class GnssRequest implements android.os.Parcelable {
+    method public int describeContents();
+    method public boolean isFullTracking();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.location.GnssRequest> CREATOR;
+  }
+
+  public static final class GnssRequest.Builder {
+    ctor public GnssRequest.Builder();
+    ctor public GnssRequest.Builder(@NonNull android.location.GnssRequest);
+    method @NonNull public android.location.GnssRequest build();
+    method @NonNull public android.location.GnssRequest.Builder setFullTracking(boolean);
+  }
+
   public final class GnssSingleSatCorrection implements android.os.Parcelable {
     method public int describeContents();
     method @FloatRange(from=0.0f, fromInclusive=false) public float getCarrierFrequencyHz();
@@ -3876,237 +3910,236 @@
     method @NonNull public android.location.GnssSingleSatCorrection.Builder setSatelliteId(@IntRange(from=0) int);
   }
 
-  public class GpsClock implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getBiasInNs();
-    method public double getBiasUncertaintyInNs();
-    method public double getDriftInNsPerSec();
-    method public double getDriftUncertaintyInNsPerSec();
-    method public long getFullBiasInNs();
-    method public short getLeapSecond();
-    method public long getTimeInNs();
-    method public double getTimeUncertaintyInNs();
-    method public byte getType();
-    method public boolean hasBiasInNs();
-    method public boolean hasBiasUncertaintyInNs();
-    method public boolean hasDriftInNsPerSec();
-    method public boolean hasDriftUncertaintyInNsPerSec();
-    method public boolean hasFullBiasInNs();
-    method public boolean hasLeapSecond();
-    method public boolean hasTimeUncertaintyInNs();
-    method public void reset();
-    method public void resetBiasInNs();
-    method public void resetBiasUncertaintyInNs();
-    method public void resetDriftInNsPerSec();
-    method public void resetDriftUncertaintyInNsPerSec();
-    method public void resetFullBiasInNs();
-    method public void resetLeapSecond();
-    method public void resetTimeUncertaintyInNs();
-    method public void set(android.location.GpsClock);
-    method public void setBiasInNs(double);
-    method public void setBiasUncertaintyInNs(double);
-    method public void setDriftInNsPerSec(double);
-    method public void setDriftUncertaintyInNsPerSec(double);
-    method public void setFullBiasInNs(long);
-    method public void setLeapSecond(short);
-    method public void setTimeInNs(long);
-    method public void setTimeUncertaintyInNs(double);
-    method public void setType(byte);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GpsClock> CREATOR;
-    field public static final byte TYPE_GPS_TIME = 2; // 0x2
-    field public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1
-    field public static final byte TYPE_UNKNOWN = 0; // 0x0
+  @Deprecated public class GpsClock implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public double getBiasInNs();
+    method @Deprecated public double getBiasUncertaintyInNs();
+    method @Deprecated public double getDriftInNsPerSec();
+    method @Deprecated public double getDriftUncertaintyInNsPerSec();
+    method @Deprecated public long getFullBiasInNs();
+    method @Deprecated public short getLeapSecond();
+    method @Deprecated public long getTimeInNs();
+    method @Deprecated public double getTimeUncertaintyInNs();
+    method @Deprecated public byte getType();
+    method @Deprecated public boolean hasBiasInNs();
+    method @Deprecated public boolean hasBiasUncertaintyInNs();
+    method @Deprecated public boolean hasDriftInNsPerSec();
+    method @Deprecated public boolean hasDriftUncertaintyInNsPerSec();
+    method @Deprecated public boolean hasFullBiasInNs();
+    method @Deprecated public boolean hasLeapSecond();
+    method @Deprecated public boolean hasTimeUncertaintyInNs();
+    method @Deprecated public void reset();
+    method @Deprecated public void resetBiasInNs();
+    method @Deprecated public void resetBiasUncertaintyInNs();
+    method @Deprecated public void resetDriftInNsPerSec();
+    method @Deprecated public void resetDriftUncertaintyInNsPerSec();
+    method @Deprecated public void resetFullBiasInNs();
+    method @Deprecated public void resetLeapSecond();
+    method @Deprecated public void resetTimeUncertaintyInNs();
+    method @Deprecated public void set(android.location.GpsClock);
+    method @Deprecated public void setBiasInNs(double);
+    method @Deprecated public void setBiasUncertaintyInNs(double);
+    method @Deprecated public void setDriftInNsPerSec(double);
+    method @Deprecated public void setDriftUncertaintyInNsPerSec(double);
+    method @Deprecated public void setFullBiasInNs(long);
+    method @Deprecated public void setLeapSecond(short);
+    method @Deprecated public void setTimeInNs(long);
+    method @Deprecated public void setTimeUncertaintyInNs(double);
+    method @Deprecated public void setType(byte);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsClock> CREATOR;
+    field @Deprecated public static final byte TYPE_GPS_TIME = 2; // 0x2
+    field @Deprecated public static final byte TYPE_LOCAL_HW_TIME = 1; // 0x1
+    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
   }
 
-  public class GpsMeasurement implements android.os.Parcelable {
-    method public int describeContents();
-    method public double getAccumulatedDeltaRangeInMeters();
-    method public short getAccumulatedDeltaRangeState();
-    method public double getAccumulatedDeltaRangeUncertaintyInMeters();
-    method public double getAzimuthInDeg();
-    method public double getAzimuthUncertaintyInDeg();
-    method public int getBitNumber();
-    method public long getCarrierCycles();
-    method public float getCarrierFrequencyInHz();
-    method public double getCarrierPhase();
-    method public double getCarrierPhaseUncertainty();
-    method public double getCn0InDbHz();
-    method public double getCodePhaseInChips();
-    method public double getCodePhaseUncertaintyInChips();
-    method public double getDopplerShiftInHz();
-    method public double getDopplerShiftUncertaintyInHz();
-    method public double getElevationInDeg();
-    method public double getElevationUncertaintyInDeg();
-    method public byte getLossOfLock();
-    method public byte getMultipathIndicator();
-    method public byte getPrn();
-    method public double getPseudorangeInMeters();
-    method public double getPseudorangeRateInMetersPerSec();
-    method public double getPseudorangeRateUncertaintyInMetersPerSec();
-    method public double getPseudorangeUncertaintyInMeters();
-    method public long getReceivedGpsTowInNs();
-    method public long getReceivedGpsTowUncertaintyInNs();
-    method public double getSnrInDb();
-    method public short getState();
-    method public short getTimeFromLastBitInMs();
-    method public double getTimeOffsetInNs();
-    method public boolean hasAzimuthInDeg();
-    method public boolean hasAzimuthUncertaintyInDeg();
-    method public boolean hasBitNumber();
-    method public boolean hasCarrierCycles();
-    method public boolean hasCarrierFrequencyInHz();
-    method public boolean hasCarrierPhase();
-    method public boolean hasCarrierPhaseUncertainty();
-    method public boolean hasCodePhaseInChips();
-    method public boolean hasCodePhaseUncertaintyInChips();
-    method public boolean hasDopplerShiftInHz();
-    method public boolean hasDopplerShiftUncertaintyInHz();
-    method public boolean hasElevationInDeg();
-    method public boolean hasElevationUncertaintyInDeg();
-    method public boolean hasPseudorangeInMeters();
-    method public boolean hasPseudorangeUncertaintyInMeters();
-    method public boolean hasSnrInDb();
-    method public boolean hasTimeFromLastBitInMs();
-    method public boolean isPseudorangeRateCorrected();
-    method public boolean isUsedInFix();
-    method public void reset();
-    method public void resetAzimuthInDeg();
-    method public void resetAzimuthUncertaintyInDeg();
-    method public void resetBitNumber();
-    method public void resetCarrierCycles();
-    method public void resetCarrierFrequencyInHz();
-    method public void resetCarrierPhase();
-    method public void resetCarrierPhaseUncertainty();
-    method public void resetCodePhaseInChips();
-    method public void resetCodePhaseUncertaintyInChips();
-    method public void resetDopplerShiftInHz();
-    method public void resetDopplerShiftUncertaintyInHz();
-    method public void resetElevationInDeg();
-    method public void resetElevationUncertaintyInDeg();
-    method public void resetPseudorangeInMeters();
-    method public void resetPseudorangeUncertaintyInMeters();
-    method public void resetSnrInDb();
-    method public void resetTimeFromLastBitInMs();
-    method public void set(android.location.GpsMeasurement);
-    method public void setAccumulatedDeltaRangeInMeters(double);
-    method public void setAccumulatedDeltaRangeState(short);
-    method public void setAccumulatedDeltaRangeUncertaintyInMeters(double);
-    method public void setAzimuthInDeg(double);
-    method public void setAzimuthUncertaintyInDeg(double);
-    method public void setBitNumber(int);
-    method public void setCarrierCycles(long);
-    method public void setCarrierFrequencyInHz(float);
-    method public void setCarrierPhase(double);
-    method public void setCarrierPhaseUncertainty(double);
-    method public void setCn0InDbHz(double);
-    method public void setCodePhaseInChips(double);
-    method public void setCodePhaseUncertaintyInChips(double);
-    method public void setDopplerShiftInHz(double);
-    method public void setDopplerShiftUncertaintyInHz(double);
-    method public void setElevationInDeg(double);
-    method public void setElevationUncertaintyInDeg(double);
-    method public void setLossOfLock(byte);
-    method public void setMultipathIndicator(byte);
-    method public void setPrn(byte);
-    method public void setPseudorangeInMeters(double);
-    method public void setPseudorangeRateInMetersPerSec(double);
-    method public void setPseudorangeRateUncertaintyInMetersPerSec(double);
-    method public void setPseudorangeUncertaintyInMeters(double);
-    method public void setReceivedGpsTowInNs(long);
-    method public void setReceivedGpsTowUncertaintyInNs(long);
-    method public void setSnrInDb(double);
-    method public void setState(short);
-    method public void setTimeFromLastBitInMs(short);
-    method public void setTimeOffsetInNs(double);
-    method public void setUsedInFix(boolean);
-    method public void writeToParcel(android.os.Parcel, int);
-    field public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4
-    field public static final short ADR_STATE_RESET = 2; // 0x2
-    field public static final short ADR_STATE_UNKNOWN = 0; // 0x0
-    field public static final short ADR_STATE_VALID = 1; // 0x1
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurement> CREATOR;
-    field public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2
-    field public static final byte LOSS_OF_LOCK_OK = 1; // 0x1
-    field public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0
-    field public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
-    field public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2
-    field public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
-    field public static final short STATE_BIT_SYNC = 2; // 0x2
-    field public static final short STATE_CODE_LOCK = 1; // 0x1
-    field public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10
-    field public static final short STATE_SUBFRAME_SYNC = 4; // 0x4
-    field public static final short STATE_TOW_DECODED = 8; // 0x8
-    field public static final short STATE_UNKNOWN = 0; // 0x0
+  @Deprecated public class GpsMeasurement implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated public double getAccumulatedDeltaRangeInMeters();
+    method @Deprecated public short getAccumulatedDeltaRangeState();
+    method @Deprecated public double getAccumulatedDeltaRangeUncertaintyInMeters();
+    method @Deprecated public double getAzimuthInDeg();
+    method @Deprecated public double getAzimuthUncertaintyInDeg();
+    method @Deprecated public int getBitNumber();
+    method @Deprecated public long getCarrierCycles();
+    method @Deprecated public float getCarrierFrequencyInHz();
+    method @Deprecated public double getCarrierPhase();
+    method @Deprecated public double getCarrierPhaseUncertainty();
+    method @Deprecated public double getCn0InDbHz();
+    method @Deprecated public double getCodePhaseInChips();
+    method @Deprecated public double getCodePhaseUncertaintyInChips();
+    method @Deprecated public double getDopplerShiftInHz();
+    method @Deprecated public double getDopplerShiftUncertaintyInHz();
+    method @Deprecated public double getElevationInDeg();
+    method @Deprecated public double getElevationUncertaintyInDeg();
+    method @Deprecated public byte getLossOfLock();
+    method @Deprecated public byte getMultipathIndicator();
+    method @Deprecated public byte getPrn();
+    method @Deprecated public double getPseudorangeInMeters();
+    method @Deprecated public double getPseudorangeRateInMetersPerSec();
+    method @Deprecated public double getPseudorangeRateUncertaintyInMetersPerSec();
+    method @Deprecated public double getPseudorangeUncertaintyInMeters();
+    method @Deprecated public long getReceivedGpsTowInNs();
+    method @Deprecated public long getReceivedGpsTowUncertaintyInNs();
+    method @Deprecated public double getSnrInDb();
+    method @Deprecated public short getState();
+    method @Deprecated public short getTimeFromLastBitInMs();
+    method @Deprecated public double getTimeOffsetInNs();
+    method @Deprecated public boolean hasAzimuthInDeg();
+    method @Deprecated public boolean hasAzimuthUncertaintyInDeg();
+    method @Deprecated public boolean hasBitNumber();
+    method @Deprecated public boolean hasCarrierCycles();
+    method @Deprecated public boolean hasCarrierFrequencyInHz();
+    method @Deprecated public boolean hasCarrierPhase();
+    method @Deprecated public boolean hasCarrierPhaseUncertainty();
+    method @Deprecated public boolean hasCodePhaseInChips();
+    method @Deprecated public boolean hasCodePhaseUncertaintyInChips();
+    method @Deprecated public boolean hasDopplerShiftInHz();
+    method @Deprecated public boolean hasDopplerShiftUncertaintyInHz();
+    method @Deprecated public boolean hasElevationInDeg();
+    method @Deprecated public boolean hasElevationUncertaintyInDeg();
+    method @Deprecated public boolean hasPseudorangeInMeters();
+    method @Deprecated public boolean hasPseudorangeUncertaintyInMeters();
+    method @Deprecated public boolean hasSnrInDb();
+    method @Deprecated public boolean hasTimeFromLastBitInMs();
+    method @Deprecated public boolean isPseudorangeRateCorrected();
+    method @Deprecated public boolean isUsedInFix();
+    method @Deprecated public void reset();
+    method @Deprecated public void resetAzimuthInDeg();
+    method @Deprecated public void resetAzimuthUncertaintyInDeg();
+    method @Deprecated public void resetBitNumber();
+    method @Deprecated public void resetCarrierCycles();
+    method @Deprecated public void resetCarrierFrequencyInHz();
+    method @Deprecated public void resetCarrierPhase();
+    method @Deprecated public void resetCarrierPhaseUncertainty();
+    method @Deprecated public void resetCodePhaseInChips();
+    method @Deprecated public void resetCodePhaseUncertaintyInChips();
+    method @Deprecated public void resetDopplerShiftInHz();
+    method @Deprecated public void resetDopplerShiftUncertaintyInHz();
+    method @Deprecated public void resetElevationInDeg();
+    method @Deprecated public void resetElevationUncertaintyInDeg();
+    method @Deprecated public void resetPseudorangeInMeters();
+    method @Deprecated public void resetPseudorangeUncertaintyInMeters();
+    method @Deprecated public void resetSnrInDb();
+    method @Deprecated public void resetTimeFromLastBitInMs();
+    method @Deprecated public void set(android.location.GpsMeasurement);
+    method @Deprecated public void setAccumulatedDeltaRangeInMeters(double);
+    method @Deprecated public void setAccumulatedDeltaRangeState(short);
+    method @Deprecated public void setAccumulatedDeltaRangeUncertaintyInMeters(double);
+    method @Deprecated public void setAzimuthInDeg(double);
+    method @Deprecated public void setAzimuthUncertaintyInDeg(double);
+    method @Deprecated public void setBitNumber(int);
+    method @Deprecated public void setCarrierCycles(long);
+    method @Deprecated public void setCarrierFrequencyInHz(float);
+    method @Deprecated public void setCarrierPhase(double);
+    method @Deprecated public void setCarrierPhaseUncertainty(double);
+    method @Deprecated public void setCn0InDbHz(double);
+    method @Deprecated public void setCodePhaseInChips(double);
+    method @Deprecated public void setCodePhaseUncertaintyInChips(double);
+    method @Deprecated public void setDopplerShiftInHz(double);
+    method @Deprecated public void setDopplerShiftUncertaintyInHz(double);
+    method @Deprecated public void setElevationInDeg(double);
+    method @Deprecated public void setElevationUncertaintyInDeg(double);
+    method @Deprecated public void setLossOfLock(byte);
+    method @Deprecated public void setMultipathIndicator(byte);
+    method @Deprecated public void setPrn(byte);
+    method @Deprecated public void setPseudorangeInMeters(double);
+    method @Deprecated public void setPseudorangeRateInMetersPerSec(double);
+    method @Deprecated public void setPseudorangeRateUncertaintyInMetersPerSec(double);
+    method @Deprecated public void setPseudorangeUncertaintyInMeters(double);
+    method @Deprecated public void setReceivedGpsTowInNs(long);
+    method @Deprecated public void setReceivedGpsTowUncertaintyInNs(long);
+    method @Deprecated public void setSnrInDb(double);
+    method @Deprecated public void setState(short);
+    method @Deprecated public void setTimeFromLastBitInMs(short);
+    method @Deprecated public void setTimeOffsetInNs(double);
+    method @Deprecated public void setUsedInFix(boolean);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated public static final short ADR_STATE_CYCLE_SLIP = 4; // 0x4
+    field @Deprecated public static final short ADR_STATE_RESET = 2; // 0x2
+    field @Deprecated public static final short ADR_STATE_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final short ADR_STATE_VALID = 1; // 0x1
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurement> CREATOR;
+    field @Deprecated public static final byte LOSS_OF_LOCK_CYCLE_SLIP = 2; // 0x2
+    field @Deprecated public static final byte LOSS_OF_LOCK_OK = 1; // 0x1
+    field @Deprecated public static final byte LOSS_OF_LOCK_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_DETECTED = 1; // 0x1
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_NOT_USED = 2; // 0x2
+    field @Deprecated public static final byte MULTIPATH_INDICATOR_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final short STATE_BIT_SYNC = 2; // 0x2
+    field @Deprecated public static final short STATE_CODE_LOCK = 1; // 0x1
+    field @Deprecated public static final short STATE_MSEC_AMBIGUOUS = 16; // 0x10
+    field @Deprecated public static final short STATE_SUBFRAME_SYNC = 4; // 0x4
+    field @Deprecated public static final short STATE_TOW_DECODED = 8; // 0x8
+    field @Deprecated public static final short STATE_UNKNOWN = 0; // 0x0
   }
 
-  public class GpsMeasurementsEvent implements android.os.Parcelable {
-    ctor public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
-    method public int describeContents();
-    method @NonNull public android.location.GpsClock getClock();
-    method @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
-    field public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
-    field public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
-    field public static final int STATUS_READY = 1; // 0x1
+  @Deprecated public class GpsMeasurementsEvent implements android.os.Parcelable {
+    ctor @Deprecated public GpsMeasurementsEvent(android.location.GpsClock, android.location.GpsMeasurement[]);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public android.location.GpsClock getClock();
+    method @Deprecated @NonNull public java.util.Collection<android.location.GpsMeasurement> getMeasurements();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsMeasurementsEvent> CREATOR;
+    field @Deprecated public static final int STATUS_GPS_LOCATION_DISABLED = 2; // 0x2
+    field @Deprecated public static final int STATUS_NOT_SUPPORTED = 0; // 0x0
+    field @Deprecated public static final int STATUS_READY = 1; // 0x1
   }
 
-  public static interface GpsMeasurementsEvent.Listener {
-    method public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
-    method public void onStatusChanged(int);
+  @Deprecated public static interface GpsMeasurementsEvent.Listener {
+    method @Deprecated public void onGpsMeasurementsReceived(android.location.GpsMeasurementsEvent);
+    method @Deprecated public void onStatusChanged(int);
   }
 
-  public class GpsNavigationMessage implements android.os.Parcelable {
-    method public int describeContents();
-    method @NonNull public byte[] getData();
-    method public short getMessageId();
-    method public byte getPrn();
-    method public short getStatus();
-    method public short getSubmessageId();
-    method public byte getType();
-    method public void reset();
-    method public void set(android.location.GpsNavigationMessage);
-    method public void setData(byte[]);
-    method public void setMessageId(short);
-    method public void setPrn(byte);
-    method public void setStatus(short);
-    method public void setSubmessageId(short);
-    method public void setType(byte);
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessage> CREATOR;
-    field public static final short STATUS_PARITY_PASSED = 1; // 0x1
-    field public static final short STATUS_PARITY_REBUILT = 2; // 0x2
-    field public static final short STATUS_UNKNOWN = 0; // 0x0
-    field public static final byte TYPE_CNAV2 = 4; // 0x4
-    field public static final byte TYPE_L1CA = 1; // 0x1
-    field public static final byte TYPE_L2CNAV = 2; // 0x2
-    field public static final byte TYPE_L5CNAV = 3; // 0x3
-    field public static final byte TYPE_UNKNOWN = 0; // 0x0
+  @Deprecated public class GpsNavigationMessage implements android.os.Parcelable {
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public byte[] getData();
+    method @Deprecated public short getMessageId();
+    method @Deprecated public byte getPrn();
+    method @Deprecated public short getStatus();
+    method @Deprecated public short getSubmessageId();
+    method @Deprecated public byte getType();
+    method @Deprecated public void reset();
+    method @Deprecated public void set(android.location.GpsNavigationMessage);
+    method @Deprecated public void setData(byte[]);
+    method @Deprecated public void setMessageId(short);
+    method @Deprecated public void setPrn(byte);
+    method @Deprecated public void setStatus(short);
+    method @Deprecated public void setSubmessageId(short);
+    method @Deprecated public void setType(byte);
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessage> CREATOR;
+    field @Deprecated public static final short STATUS_PARITY_PASSED = 1; // 0x1
+    field @Deprecated public static final short STATUS_PARITY_REBUILT = 2; // 0x2
+    field @Deprecated public static final short STATUS_UNKNOWN = 0; // 0x0
+    field @Deprecated public static final byte TYPE_CNAV2 = 4; // 0x4
+    field @Deprecated public static final byte TYPE_L1CA = 1; // 0x1
+    field @Deprecated public static final byte TYPE_L2CNAV = 2; // 0x2
+    field @Deprecated public static final byte TYPE_L5CNAV = 3; // 0x3
+    field @Deprecated public static final byte TYPE_UNKNOWN = 0; // 0x0
   }
 
-  public class GpsNavigationMessageEvent implements android.os.Parcelable {
-    ctor public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
-    method public int describeContents();
-    method @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
-    method public void writeToParcel(android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
-    field public static int STATUS_GPS_LOCATION_DISABLED;
-    field public static int STATUS_NOT_SUPPORTED;
-    field public static int STATUS_READY;
+  @Deprecated public class GpsNavigationMessageEvent implements android.os.Parcelable {
+    ctor @Deprecated public GpsNavigationMessageEvent(android.location.GpsNavigationMessage);
+    method @Deprecated public int describeContents();
+    method @Deprecated @NonNull public android.location.GpsNavigationMessage getNavigationMessage();
+    method @Deprecated public void writeToParcel(android.os.Parcel, int);
+    field @Deprecated @NonNull public static final android.os.Parcelable.Creator<android.location.GpsNavigationMessageEvent> CREATOR;
+    field @Deprecated public static int STATUS_GPS_LOCATION_DISABLED;
+    field @Deprecated public static int STATUS_NOT_SUPPORTED;
+    field @Deprecated public static int STATUS_READY;
   }
 
-  public static interface GpsNavigationMessageEvent.Listener {
-    method public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
-    method public void onStatusChanged(int);
+  @Deprecated public static interface GpsNavigationMessageEvent.Listener {
+    method @Deprecated public void onGpsNavigationMessageReceived(android.location.GpsNavigationMessageEvent);
+    method @Deprecated public void onStatusChanged(int);
   }
 
   public class Location implements android.os.Parcelable {
     method public boolean isComplete();
     method public void makeComplete();
-    method public void setExtraLocation(@Nullable String, @Nullable android.location.Location);
     method public void setIsFromMockProvider(boolean);
-    field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
+    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
   }
 
   public class LocationManager {
@@ -4121,6 +4154,7 @@
     method public boolean isProviderEnabledForUser(@NonNull String, @NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.READ_DEVICE_CONFIG) public boolean isProviderPackage(@NonNull String);
     method @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE) public boolean registerGnssBatchedLocationCallback(long, boolean, @NonNull android.location.BatchedLocationCallback, @Nullable android.os.Handler);
+    method @RequiresPermission(allOf={android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.LOCATION_HARDWARE}) public boolean registerGnssMeasurementsCallback(@NonNull android.location.GnssRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.GnssMeasurementsEvent.Callback);
     method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.location.LocationListener, @Nullable android.os.Looper);
     method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull java.util.concurrent.Executor, @NonNull android.location.LocationListener);
     method @RequiresPermission(anyOf={android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION}) public void requestLocationUpdates(@Nullable android.location.LocationRequest, @NonNull android.app.PendingIntent);
@@ -4198,15 +4232,15 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioAttributes.Builder setSystemUsage(int);
   }
 
-  public final class AudioDeviceAddress implements android.os.Parcelable {
-    ctor public AudioDeviceAddress(@NonNull android.media.AudioDeviceInfo);
-    ctor public AudioDeviceAddress(int, int, @NonNull String);
+  public final class AudioDevice implements android.os.Parcelable {
+    ctor public AudioDevice(@NonNull android.media.AudioDeviceInfo);
+    ctor public AudioDevice(int, int, @NonNull String);
     method public int describeContents();
     method @NonNull public String getAddress();
     method public int getRole();
     method public int getType();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDeviceAddress> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.media.AudioDevice> CREATOR;
     field public static final int ROLE_INPUT = 1; // 0x1
     field public static final int ROLE_OUTPUT = 2; // 0x2
   }
@@ -4238,22 +4272,24 @@
 
   public class AudioManager {
     method @Deprecated public int abandonAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, android.media.AudioAttributes);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void addOnPreferredDeviceForStrategyChangedListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener) throws java.lang.SecurityException;
     method public void clearAudioServerStateCallback();
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int dispatchAudioFocusChange(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
     method @IntRange(from=0) public int getAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
     method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioProductStrategy> getAudioProductStrategies();
     method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups();
-    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDeviceAddress> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public java.util.List<android.media.AudioDevice> getDevicesForAttributes(@NonNull android.media.AudioAttributes);
     method @IntRange(from=0) public int getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo);
     method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
     method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
-    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDeviceAddress getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
+    method @Nullable @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.AudioDevice getPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
     method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int[] getSupportedSystemUsages();
     method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getVolumeIndexForAttributes(@NonNull android.media.AudioAttributes);
     method public boolean isAudioServerRunning();
     method public boolean isHdmiSystemAudioSupported();
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int registerAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
     method public void registerVolumeGroupCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.VolumeGroupCallback);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void removeOnPreferredDeviceForStrategyChangedListener(@NonNull android.media.AudioManager.OnPreferredDeviceForStrategyChangedListener);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean removePreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int) throws java.lang.IllegalArgumentException;
     method @Deprecated @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_PHONE_STATE, android.Manifest.permission.MODIFY_AUDIO_ROUTING}) public int requestAudioFocus(android.media.AudioManager.OnAudioFocusChangeListener, @NonNull android.media.AudioAttributes, int, int, android.media.audiopolicy.AudioPolicy) throws java.lang.IllegalArgumentException;
@@ -4261,7 +4297,7 @@
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo, @IntRange(from=0) int);
     method public void setAudioServerStateCallback(@NonNull java.util.concurrent.Executor, @NonNull android.media.AudioManager.AudioServerStateCallback);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setFocusRequestResult(@NonNull android.media.AudioFocusInfo, int, @NonNull android.media.audiopolicy.AudioPolicy);
-    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDeviceAddress);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public boolean setPreferredDeviceForStrategy(@NonNull android.media.audiopolicy.AudioProductStrategy, @NonNull android.media.AudioDevice);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setSupportedSystemUsages(@NonNull int[]);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setVolumeIndexForAttributes(@NonNull android.media.AudioAttributes, int, int);
     method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void unregisterAudioPolicy(@NonNull android.media.audiopolicy.AudioPolicy);
@@ -4280,6 +4316,10 @@
     method public void onAudioServerUp();
   }
 
+  public static interface AudioManager.OnPreferredDeviceForStrategyChangedListener {
+    method public void onPreferredDeviceForStrategyChanged(@NonNull android.media.audiopolicy.AudioProductStrategy, @Nullable android.media.AudioDevice);
+  }
+
   public abstract static class AudioManager.VolumeGroupCallback {
     ctor public AudioManager.VolumeGroupCallback();
     method public void onAudioVolumeGroupChanged(int, int);
@@ -4317,7 +4357,7 @@
   }
 
   public final class AudioRecordingConfiguration implements android.os.Parcelable {
-    method public int getClientUid();
+    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getClientUid();
   }
 
   public class HwAudioSource {
@@ -4357,7 +4397,7 @@
 package android.media.audiofx {
 
   public class AudioEffect {
-    ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDeviceAddress);
+    ctor @RequiresPermission("android.permission.MODIFY_DEFAULT_AUDIO_EFFECTS") public AudioEffect(@NonNull java.util.UUID, @NonNull android.media.AudioDevice);
   }
 
 }
@@ -4484,11 +4524,11 @@
   }
 
   public static interface MediaSessionManager.OnMediaKeyEventDispatchedListener {
-    method public default void onMediaKeyEventDispatched(@NonNull android.view.KeyEvent, @NonNull String, @Nullable android.media.session.MediaSession.Token);
+    method public void onMediaKeyEventDispatched(@NonNull android.view.KeyEvent, @NonNull String, @Nullable android.media.session.MediaSession.Token);
   }
 
   public static interface MediaSessionManager.OnMediaKeyEventSessionChangedListener {
-    method public default void onMediaKeyEventSessionChanged(@NonNull String, @Nullable android.media.session.MediaSession.Token);
+    method public void onMediaKeyEventSessionChanged(@NonNull String, @Nullable android.media.session.MediaSession.Token);
   }
 
   public static interface MediaSessionManager.OnMediaKeyListener {
@@ -4685,7 +4725,6 @@
     method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void addBlockedRating(@NonNull android.media.tv.TvContentRating);
     method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public boolean captureFrame(String, android.view.Surface, android.media.tv.TvStreamConfig);
     method @RequiresPermission(android.Manifest.permission.CAPTURE_TV_INPUT) public java.util.List<android.media.tv.TvStreamConfig> getAvailableTvStreamConfigList(String);
-    method @RequiresPermission(android.Manifest.permission.TUNER_RESOURCE_ACCESS) public int getClientPid(@NonNull String);
     method @NonNull @RequiresPermission("android.permission.DVB_DEVICE") public java.util.List<android.media.tv.DvbDeviceInfo> getDvbDeviceList();
     method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public java.util.List<android.media.tv.TvInputHardwareInfo> getHardwareList();
     method @RequiresPermission(android.Manifest.permission.READ_CONTENT_RATING_SYSTEMS) public java.util.List<android.media.tv.TvContentRatingSystemInfo> getTvContentRatingSystemList();
@@ -4697,7 +4736,6 @@
     method @RequiresPermission(android.Manifest.permission.TV_INPUT_HARDWARE) public void releaseTvInputHardware(int, android.media.tv.TvInputManager.Hardware);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void removeBlockedRating(@NonNull android.media.tv.TvContentRating);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PARENTAL_CONTROLS) public void setParentalControlsEnabled(boolean);
-    field public static final int UNKNOWN_CLIENT_PID = -1; // 0xffffffff
   }
 
   public static final class TvInputManager.Hardware {
@@ -4827,6 +4865,8 @@
 
   public class Tuner implements java.lang.AutoCloseable {
     ctor @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public Tuner(@NonNull android.content.Context, @NonNull String, int, @Nullable android.media.tv.tuner.Tuner.OnResourceLostListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int cancelScanning();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int cancelTuning();
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void clearOnTuneEventListener();
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void close();
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int connectCiCam(int);
@@ -4847,8 +4887,6 @@
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int setLna(boolean);
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void setOnTuneEventListener(@NonNull java.util.concurrent.Executor, @NonNull android.media.tv.tuner.frontend.OnTuneEventListener);
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void shareFrontendFromTuner(@NonNull android.media.tv.tuner.Tuner);
-    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int stopScan();
-    method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int stopTune();
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public int tune(@NonNull android.media.tv.tuner.frontend.FrontendSettings);
     method @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public void updateResourcePriority(int, int);
   }
@@ -5252,9 +5290,8 @@
     method public int getType();
   }
 
-  public static class TsFilterConfiguration.Builder {
+  public static class TsFilterConfiguration.Builder extends android.media.tv.tuner.filter.FilterConfiguration.Builder<android.media.tv.tuner.filter.TsFilterConfiguration.Builder> {
     method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration build();
-    method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setSettings(@NonNull android.media.tv.tuner.filter.Settings);
     method @NonNull public android.media.tv.tuner.filter.TsFilterConfiguration.Builder setTpid(int);
   }
 
@@ -5377,7 +5414,7 @@
   public static class Atsc3FrontendSettings.Builder extends android.media.tv.tuner.frontend.FrontendSettings.Builder<android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder> {
     method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings build();
     method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setBandwidth(int);
-    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setDemodOutputFormat(byte);
+    method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setDemodOutputFormat(int);
     method @NonNull public android.media.tv.tuner.frontend.Atsc3FrontendSettings.Builder setPlpSettings(@NonNull android.media.tv.tuner.frontend.Atsc3PlpSettings[]);
   }
 
@@ -5431,7 +5468,7 @@
 
   public class DvbcFrontendSettings extends android.media.tv.tuner.frontend.FrontendSettings {
     method @NonNull @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER) public static android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder builder(@NonNull android.content.Context);
-    method public byte getAnnex();
+    method public int getAnnex();
     method public long getFec();
     method public int getModulation();
     method public int getOuterFec();
@@ -5459,7 +5496,7 @@
 
   public static class DvbcFrontendSettings.Builder extends android.media.tv.tuner.frontend.FrontendSettings.Builder<android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder> {
     method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings build();
-    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(byte);
+    method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setAnnex(int);
     method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setFec(long);
     method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setModulation(int);
     method @NonNull public android.media.tv.tuner.frontend.DvbcFrontendSettings.Builder setOuterFec(int);
@@ -5730,7 +5767,6 @@
     method public int getFreqOffset();
     method public int getHierarchy();
     method @NonNull public boolean[] getLayerErrors();
-    method public int getLberCn();
     method public int getLnbVoltage();
     method public int getMer();
     method public int getModulation();
@@ -5742,37 +5778,32 @@
     method public int getSnr();
     method public int getSpectralInversion();
     method public int getSymbolRate();
-    method public int getVberCn();
-    method public int getXerCn();
     method public boolean isDemodLocked();
     method public boolean isEwbs();
     method public boolean isLnaOn();
     method public boolean isRfLock();
     field public static final int FRONTEND_STATUS_TYPE_AGC = 14; // 0xe
-    field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 24; // 0x18
+    field public static final int FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO = 21; // 0x15
     field public static final int FRONTEND_STATUS_TYPE_BER = 2; // 0x2
     field public static final int FRONTEND_STATUS_TYPE_DEMOD_LOCK = 0; // 0x0
     field public static final int FRONTEND_STATUS_TYPE_EWBS = 13; // 0xd
     field public static final int FRONTEND_STATUS_TYPE_FEC = 8; // 0x8
-    field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 21; // 0x15
-    field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 22; // 0x16
+    field public static final int FRONTEND_STATUS_TYPE_FREQ_OFFSET = 18; // 0x12
+    field public static final int FRONTEND_STATUS_TYPE_HIERARCHY = 19; // 0x13
     field public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR = 16; // 0x10
-    field public static final int FRONTEND_STATUS_TYPE_LBER_CN = 18; // 0x12
     field public static final int FRONTEND_STATUS_TYPE_LNA = 15; // 0xf
     field public static final int FRONTEND_STATUS_TYPE_LNB_VOLTAGE = 11; // 0xb
-    field public static final int FRONTEND_STATUS_TYPE_MER = 20; // 0x14
+    field public static final int FRONTEND_STATUS_TYPE_MER = 17; // 0x11
     field public static final int FRONTEND_STATUS_TYPE_MODULATION = 9; // 0x9
     field public static final int FRONTEND_STATUS_TYPE_PER = 3; // 0x3
     field public static final int FRONTEND_STATUS_TYPE_PLP_ID = 12; // 0xc
     field public static final int FRONTEND_STATUS_TYPE_PRE_BER = 4; // 0x4
-    field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 23; // 0x17
+    field public static final int FRONTEND_STATUS_TYPE_RF_LOCK = 20; // 0x14
     field public static final int FRONTEND_STATUS_TYPE_SIGNAL_QUALITY = 5; // 0x5
     field public static final int FRONTEND_STATUS_TYPE_SIGNAL_STRENGTH = 6; // 0x6
     field public static final int FRONTEND_STATUS_TYPE_SNR = 1; // 0x1
     field public static final int FRONTEND_STATUS_TYPE_SPECTRAL = 10; // 0xa
     field public static final int FRONTEND_STATUS_TYPE_SYMBOL_RATE = 7; // 0x7
-    field public static final int FRONTEND_STATUS_TYPE_VBER_CN = 17; // 0x11
-    field public static final int FRONTEND_STATUS_TYPE_XER_CN = 19; // 0x13
   }
 
   public static class FrontendStatus.Atsc3PlpInfo {
@@ -6000,7 +6031,7 @@
 
   public class CaptivePortal implements android.os.Parcelable {
     method public void logEvent(int, @NonNull String);
-    method public void reevaluateNetwork();
+    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
     method public void useNetwork();
     field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
     field public static final int APP_RETURN_DISMISSED = 0; // 0x0
@@ -6233,7 +6264,7 @@
   }
 
   public abstract class NetworkAgent {
-    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, int, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
+    ctor public NetworkAgent(@NonNull android.content.Context, @NonNull android.os.Looper, @NonNull String, @NonNull android.net.NetworkCapabilities, @NonNull android.net.LinkProperties, @NonNull android.net.NetworkScore, @NonNull android.net.NetworkAgentConfig, @Nullable android.net.NetworkProvider);
     method @Nullable public android.net.Network getNetwork();
     method public void onAddKeepalivePacketFilter(int, @NonNull android.net.KeepalivePacketData);
     method public void onAutomaticReconnectDisabled();
@@ -6248,7 +6279,7 @@
     method @NonNull public android.net.Network register();
     method public void sendLinkProperties(@NonNull android.net.LinkProperties);
     method public void sendNetworkCapabilities(@NonNull android.net.NetworkCapabilities);
-    method public void sendNetworkScore(int);
+    method public void sendNetworkScore(@NonNull android.net.NetworkScore);
     method public void sendSocketKeepaliveEvent(int, int);
     method public void setConnected();
     method @Deprecated public void setLegacyExtraInfo(@Nullable String);
@@ -6292,7 +6323,9 @@
     method @Nullable public String getSSID();
     method @NonNull public int[] getTransportTypes();
     method public boolean satisfiedByNetworkCapabilities(@Nullable android.net.NetworkCapabilities);
-    method public void setAdministratorUids(@NonNull java.util.List<java.lang.Integer>);
+    method @NonNull public android.net.NetworkCapabilities setAdministratorUids(@NonNull java.util.List<java.lang.Integer>);
+    method @NonNull public android.net.NetworkCapabilities setRequestorPackageName(@NonNull String);
+    method @NonNull public android.net.NetworkCapabilities setRequestorUid(int);
     method @NonNull public android.net.NetworkCapabilities setSSID(@Nullable String);
     method @NonNull public android.net.NetworkCapabilities setTransportInfo(@NonNull android.net.TransportInfo);
     field public static final int NET_CAPABILITY_OEM_PAID = 22; // 0x16
@@ -6344,6 +6377,8 @@
   }
 
   public class NetworkRequest implements android.os.Parcelable {
+    method @Nullable public String getRequestorPackageName();
+    method public int getRequestorUid();
     method public boolean satisfiedBy(@Nullable android.net.NetworkCapabilities);
   }
 
@@ -6351,6 +6386,55 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP) public android.net.NetworkRequest.Builder setSignalStrength(int);
   }
 
+  public final class NetworkScore implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.net.NetworkScore.Metrics getEndToEndMetrics();
+    method @NonNull public android.net.NetworkScore.Metrics getLinkLayerMetrics();
+    method public int getRange();
+    method @IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH, to=android.net.NetworkScore.MAX_SIGNAL_STRENGTH) public int getSignalStrength();
+    method public boolean hasPolicy(int);
+    method public boolean isExiting();
+    method @NonNull public android.net.NetworkScore withExiting(boolean);
+    method @NonNull public android.net.NetworkScore withSignalStrength(@IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH) int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkScore> CREATOR;
+    field public static final int MAX_SIGNAL_STRENGTH = 1000; // 0x3e8
+    field public static final int MIN_SIGNAL_STRENGTH = 0; // 0x0
+    field public static final int POLICY_DEFAULT_SUBSCRIPTION = 8; // 0x8
+    field public static final int POLICY_IGNORE_ON_WIFI = 4; // 0x4
+    field public static final int POLICY_LOCKDOWN_VPN = 1; // 0x1
+    field public static final int POLICY_VPN = 2; // 0x2
+    field public static final int RANGE_CLOSE = 1; // 0x1
+    field public static final int RANGE_LONG = 4; // 0x4
+    field public static final int RANGE_MEDIUM = 3; // 0x3
+    field public static final int RANGE_SHORT = 2; // 0x2
+    field public static final int RANGE_UNKNOWN = 0; // 0x0
+    field public static final int UNKNOWN_SIGNAL_STRENGTH = -1; // 0xffffffff
+  }
+
+  public static class NetworkScore.Builder {
+    ctor public NetworkScore.Builder();
+    method @NonNull public android.net.NetworkScore.Builder addPolicy(int);
+    method @NonNull public android.net.NetworkScore build();
+    method @NonNull public android.net.NetworkScore.Builder clearPolicy(int);
+    method @NonNull public android.net.NetworkScore.Builder setEndToEndMetrics(@NonNull android.net.NetworkScore.Metrics);
+    method @NonNull public android.net.NetworkScore.Builder setExiting(boolean);
+    method @NonNull public android.net.NetworkScore.Builder setLegacyScore(int);
+    method @NonNull public android.net.NetworkScore.Builder setLinkLayerMetrics(@NonNull android.net.NetworkScore.Metrics);
+    method @NonNull public android.net.NetworkScore.Builder setRange(int);
+    method @NonNull public android.net.NetworkScore.Builder setSignalStrength(@IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH, to=android.net.NetworkScore.MAX_SIGNAL_STRENGTH) int);
+  }
+
+  public static class NetworkScore.Metrics {
+    ctor public NetworkScore.Metrics(@IntRange(from=android.net.NetworkScore.Metrics.LATENCY_UNKNOWN) int, @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) int, @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) int);
+    field public static final int BANDWIDTH_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.net.NetworkScore.Metrics EMPTY;
+    field public static final int LATENCY_UNKNOWN = -1; // 0xffffffff
+    field @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) public final int downlinkBandwidthKBps;
+    field @IntRange(from=android.net.NetworkScore.Metrics.LATENCY_UNKNOWN) public final int latencyMs;
+    field @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) public final int uplinkBandwidthKBps;
+  }
+
   public class NetworkScoreManager {
     method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public boolean clearScores() throws java.lang.SecurityException;
     method @RequiresPermission(anyOf={android.Manifest.permission.SCORE_NETWORKS, android.Manifest.permission.REQUEST_NETWORK_SCORES}) public void disableScoring() throws java.lang.SecurityException;
@@ -6379,7 +6463,6 @@
   }
 
   public abstract class NetworkSpecifier {
-    method public void assertValidFromUid(int);
     method @Nullable public android.net.NetworkSpecifier redact();
     method public abstract boolean satisfiedBy(@Nullable android.net.NetworkSpecifier);
   }
@@ -7142,6 +7225,28 @@
 
 }
 
+package android.net.sip {
+
+  public class SipAudioCall {
+    method @Nullable public android.net.rtp.AudioGroup getAudioGroup();
+    method public void setAudioGroup(@NonNull android.net.rtp.AudioGroup);
+  }
+
+  public class SipManager {
+    method @NonNull public java.util.List<android.net.sip.SipProfile> getProfiles() throws android.net.sip.SipException;
+    field public static final String ACTION_SIP_CALL_OPTION_CHANGED = "android.net.sip.action.SIP_CALL_OPTION_CHANGED";
+    field public static final String ACTION_SIP_INCOMING_CALL = "android.net.sip.action.SIP_INCOMING_CALL";
+    field public static final String ACTION_SIP_REMOVE_PROFILE = "android.net.sip.action.SIP_REMOVE_PROFILE";
+    field public static final String ACTION_SIP_SERVICE_UP = "android.net.sip.action.SIP_SERVICE_UP";
+    field public static final String ACTION_START_SIP = "android.net.sip.action.START_SIP";
+  }
+
+  public class SipProfile implements java.lang.Cloneable android.os.Parcelable java.io.Serializable {
+    method public int getCallingUid();
+  }
+
+}
+
 package android.net.util {
 
   public final class SocketUtils {
@@ -7460,30 +7565,25 @@
 
   @Deprecated public class WifiConfiguration implements android.os.Parcelable {
     method @Deprecated public int getAuthType();
-    method @Deprecated @NonNull public android.net.IpConfiguration.IpAssignment getIpAssignment();
     method @Deprecated @NonNull public android.net.IpConfiguration getIpConfiguration();
     method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus getNetworkSelectionStatus();
     method @Deprecated @NonNull public String getPrintableSsid();
-    method @Deprecated @NonNull public android.net.IpConfiguration.ProxySettings getProxySettings();
-    method @Deprecated @Nullable public android.net.StaticIpConfiguration getStaticIpConfiguration();
+    method @Deprecated public int getRecentFailureReason();
     method @Deprecated public boolean hasNoInternetAccess();
     method @Deprecated public boolean isEphemeral();
     method @Deprecated public static boolean isMetered(@Nullable android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiInfo);
     method @Deprecated public boolean isNoInternetAccessExpected();
     method @Deprecated public void setIpConfiguration(@Nullable android.net.IpConfiguration);
     method @Deprecated public void setNetworkSelectionStatus(@NonNull android.net.wifi.WifiConfiguration.NetworkSelectionStatus);
-    method @Deprecated public void setProxy(@NonNull android.net.IpConfiguration.ProxySettings, @NonNull android.net.ProxyInfo);
-    field @Deprecated public static final int AP_BAND_2GHZ = 0; // 0x0
-    field @Deprecated public static final int AP_BAND_5GHZ = 1; // 0x1
-    field @Deprecated public static final int AP_BAND_ANY = -1; // 0xffffffff
     field @Deprecated public static final int INVALID_NETWORK_ID = -1; // 0xffffffff
     field @Deprecated public static final int METERED_OVERRIDE_METERED = 1; // 0x1
     field @Deprecated public static final int METERED_OVERRIDE_NONE = 0; // 0x0
     field @Deprecated public static final int METERED_OVERRIDE_NOT_METERED = 2; // 0x2
     field @Deprecated public static final int RANDOMIZATION_NONE = 0; // 0x0
     field @Deprecated public static final int RANDOMIZATION_PERSISTENT = 1; // 0x1
+    field @Deprecated public static final int RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA = 17; // 0x11
+    field @Deprecated public static final int RECENT_FAILURE_NONE = 0; // 0x0
     field @Deprecated public boolean allowAutojoin;
-    field @Deprecated public int apBand;
     field @Deprecated public int carrierId;
     field @Deprecated public String creatorName;
     field @Deprecated public int creatorUid;
@@ -7497,7 +7597,6 @@
     field @Deprecated public int numAssociation;
     field @Deprecated public int numScorerOverride;
     field @Deprecated public int numScorerOverrideAndSwitchedNetwork;
-    field @Deprecated @NonNull public final android.net.wifi.WifiConfiguration.RecentFailure recentFailure;
     field @Deprecated public boolean requirePMF;
     field @Deprecated @Nullable public String saePasswordId;
     field @Deprecated public boolean shared;
@@ -7513,13 +7612,12 @@
   @Deprecated public static class WifiConfiguration.NetworkSelectionStatus {
     method @Deprecated public int getDisableReasonCounter(int);
     method @Deprecated public long getDisableTime();
-    method @Deprecated public boolean getHasEverConnected();
+    method @Deprecated public static int getMaxNetworkSelectionDisableReason();
     method @Deprecated @Nullable public static String getNetworkDisableReasonString(int);
     method @Deprecated public int getNetworkSelectionDisableReason();
     method @Deprecated public int getNetworkSelectionStatus();
     method @Deprecated @NonNull public String getNetworkStatusString();
-    method @Deprecated public boolean isNetworkEnabled();
-    method @Deprecated public boolean isNetworkPermanentlyDisabled();
+    method @Deprecated public boolean hasEverConnected();
     field @Deprecated public static final int DISABLED_ASSOCIATION_REJECTION = 1; // 0x1
     field @Deprecated public static final int DISABLED_AUTHENTICATION_FAILURE = 2; // 0x2
     field @Deprecated public static final int DISABLED_AUTHENTICATION_NO_CREDENTIALS = 5; // 0x5
@@ -7527,10 +7625,9 @@
     field @Deprecated public static final int DISABLED_BY_WIFI_MANAGER = 7; // 0x7
     field @Deprecated public static final int DISABLED_BY_WRONG_PASSWORD = 8; // 0x8
     field @Deprecated public static final int DISABLED_DHCP_FAILURE = 3; // 0x3
+    field @Deprecated public static final int DISABLED_NONE = 0; // 0x0
     field @Deprecated public static final int DISABLED_NO_INTERNET_PERMANENT = 6; // 0x6
     field @Deprecated public static final int DISABLED_NO_INTERNET_TEMPORARY = 4; // 0x4
-    field @Deprecated public static final int NETWORK_SELECTION_DISABLED_MAX = 10; // 0xa
-    field @Deprecated public static final int NETWORK_SELECTION_ENABLE = 0; // 0x0
     field @Deprecated public static final int NETWORK_SELECTION_ENABLED = 0; // 0x0
     field @Deprecated public static final int NETWORK_SELECTION_PERMANENTLY_DISABLED = 2; // 0x2
     field @Deprecated public static final int NETWORK_SELECTION_TEMPORARY_DISABLED = 1; // 0x1
@@ -7543,12 +7640,6 @@
     method @Deprecated @NonNull public android.net.wifi.WifiConfiguration.NetworkSelectionStatus.Builder setNetworkSelectionStatus(int);
   }
 
-  @Deprecated public static class WifiConfiguration.RecentFailure {
-    method @Deprecated public int getAssociationStatus();
-    field @Deprecated public static final int NONE = 0; // 0x0
-    field @Deprecated public static final int STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17; // 0x11
-  }
-
   public class WifiEnterpriseConfig implements android.os.Parcelable {
     method @Nullable public String[] getCaCertificateAliases();
     method @NonNull public String getCaPath();
@@ -7580,7 +7671,7 @@
     method public boolean isEphemeral();
     method public boolean isOsuAp();
     method public boolean isPasspointAp();
-    method @Nullable public static String removeDoubleQuotes(@Nullable String);
+    method @Nullable public static String sanitizeSsid(@Nullable String);
     field public static final String DEFAULT_MAC_ADDRESS = "02:00:00:00:00:00";
     field public static final int INVALID_RSSI = -127; // 0xffffff81
   }
@@ -7622,7 +7713,6 @@
     method public boolean isApMacRandomizationSupported();
     method public boolean isConnectedMacRandomizationSupported();
     method @Deprecated public boolean isDeviceToDeviceRttSupported();
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean isDualModeSupported();
     method public boolean isPortableHotspotSupported();
     method public boolean isVerboseLoggingEnabled();
     method @RequiresPermission(android.Manifest.permission.ACCESS_WIFI_STATE) public boolean isWifiApEnabled();
@@ -7637,9 +7727,11 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveBackupData();
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public byte[] retrieveSoftApBackupData();
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_SETUP_WIZARD, android.Manifest.permission.NETWORK_STACK}) public void save(@NonNull android.net.wifi.WifiConfiguration, @Nullable android.net.wifi.WifiManager.ActionListener);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setAutoWakeupEnabled(boolean);
     method @RequiresPermission(android.Manifest.permission.WIFI_SET_DEVICE_MOBILITY_STATE) public void setDeviceMobilityState(int);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMacRandomizationSettingPasspointEnabled(@NonNull String, boolean);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setMeteredOverridePasspoint(@NonNull String, int);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setScanThrottleEnabled(boolean);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public boolean setSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void setVerboseLoggingEnabled(boolean);
     method @Deprecated @RequiresPermission(android.Manifest.permission.CHANGE_WIFI_STATE) public boolean setWifiApConfiguration(android.net.wifi.WifiConfiguration);
@@ -7734,7 +7826,7 @@
   }
 
   public static interface WifiManager.ScoreChangeCallback {
-    method public void onStatusChange(int, boolean);
+    method public void onScoreChange(int, @NonNull android.net.NetworkScore);
     method public void onTriggerUpdateOfWifiUsabilityStats(int);
   }
 
@@ -7784,23 +7876,23 @@
     method @NonNull @RequiresPermission(android.Manifest.permission.NETWORK_CARRIER_PROVISIONING) public android.net.wifi.WifiNetworkSuggestion.Builder setCarrierId(int);
   }
 
-  public final class WifiOemConfigStoreMigrationHook {
-    method @Nullable public static android.net.wifi.WifiOemConfigStoreMigrationHook.MigrationData load();
+  public final class WifiOemMigrationHook {
+    method @Nullable public static android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData loadFromConfigStore();
   }
 
-  public static final class WifiOemConfigStoreMigrationHook.MigrationData implements android.os.Parcelable {
+  public static final class WifiOemMigrationHook.ConfigStoreMigrationData implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public java.util.List<android.net.wifi.WifiConfiguration> getUserSavedNetworkConfigurations();
     method @Nullable public android.net.wifi.SoftApConfiguration getUserSoftApConfiguration();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
-    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiOemConfigStoreMigrationHook.MigrationData> CREATOR;
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData> CREATOR;
   }
 
-  public static final class WifiOemConfigStoreMigrationHook.MigrationData.Builder {
-    ctor public WifiOemConfigStoreMigrationHook.MigrationData.Builder();
-    method @NonNull public android.net.wifi.WifiOemConfigStoreMigrationHook.MigrationData build();
-    method @NonNull public android.net.wifi.WifiOemConfigStoreMigrationHook.MigrationData.Builder setUserSavedNetworkConfigurations(@NonNull java.util.List<android.net.wifi.WifiConfiguration>);
-    method @NonNull public android.net.wifi.WifiOemConfigStoreMigrationHook.MigrationData.Builder setUserSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
+  public static final class WifiOemMigrationHook.ConfigStoreMigrationData.Builder {
+    ctor public WifiOemMigrationHook.ConfigStoreMigrationData.Builder();
+    method @NonNull public android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData build();
+    method @NonNull public android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData.Builder setUserSavedNetworkConfigurations(@NonNull java.util.List<android.net.wifi.WifiConfiguration>);
+    method @NonNull public android.net.wifi.WifiOemMigrationHook.ConfigStoreMigrationData.Builder setUserSoftApConfiguration(@NonNull android.net.wifi.SoftApConfiguration);
   }
 
   public class WifiScanner {
@@ -8007,7 +8099,7 @@
 
   public final class PasspointConfiguration implements android.os.Parcelable {
     method public int getMeteredOverride();
-    method public boolean isAutoJoinEnabled();
+    method public boolean isAutojoinEnabled();
     method public boolean isMacRandomizationEnabled();
   }
 
@@ -8058,7 +8150,7 @@
 
   public final class WifiP2pGroupList implements android.os.Parcelable {
     method public int describeContents();
-    method @NonNull public java.util.Collection<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
+    method @NonNull public java.util.List<android.net.wifi.p2p.WifiP2pGroup> getGroupList();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.p2p.WifiP2pGroupList> CREATOR;
   }
@@ -8066,12 +8158,13 @@
   public class WifiP2pManager {
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void deletePersistentGroup(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
     method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void factoryReset(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
-    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void listen(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, boolean, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.READ_WIFI_CREDENTIAL}) public void requestPersistentGroupInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.PersistentGroupInfoListener);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setDeviceName(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull String, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
     method @RequiresPermission(allOf={android.Manifest.permission.CONNECTIVITY_INTERNAL, android.Manifest.permission.CONFIGURE_WIFI_DISPLAY}) public void setMiracastMode(int);
     method @RequiresPermission(android.Manifest.permission.CONFIGURE_WIFI_DISPLAY) public void setWfdInfo(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @NonNull android.net.wifi.p2p.WifiP2pWfdInfo, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
     method @RequiresPermission(anyOf={android.Manifest.permission.NETWORK_SETTINGS, android.Manifest.permission.NETWORK_STACK, android.Manifest.permission.OVERRIDE_WIFI_CONFIG}) public void setWifiP2pChannels(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, int, int, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void startListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
+    method @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS) public void stopListening(@NonNull android.net.wifi.p2p.WifiP2pManager.Channel, @Nullable android.net.wifi.p2p.WifiP2pManager.ActionListener);
     field public static final String ACTION_WIFI_P2P_PERSISTENT_GROUPS_CHANGED = "android.net.wifi.p2p.action.WIFI_P2P_PERSISTENT_GROUPS_CHANGED";
     field public static final int MIRACAST_DISABLED = 0; // 0x0
     field public static final int MIRACAST_SINK = 2; // 0x2
@@ -8158,9 +8251,10 @@
   }
 
   public final class NativeScanResult implements android.os.Parcelable {
+    ctor public NativeScanResult();
     method public int describeContents();
-    method @NonNull public byte[] getBssid();
-    method @NonNull public java.util.BitSet getCapabilities();
+    method @Nullable public android.net.MacAddress getBssid();
+    method public int getCapabilities();
     method public int getFrequencyMhz();
     method @NonNull public byte[] getInformationElements();
     method @NonNull public java.util.List<android.net.wifi.wificond.RadioChainInfo> getRadioChainInfos();
@@ -8169,14 +8263,31 @@
     method public long getTsf();
     method public boolean isAssociated();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field public static final int BSS_CAPABILITY_APSD = 2048; // 0x800
+    field public static final int BSS_CAPABILITY_CF_POLLABLE = 4; // 0x4
+    field public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 8; // 0x8
+    field public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 128; // 0x80
+    field public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 16384; // 0x4000
+    field public static final int BSS_CAPABILITY_DSSS_OFDM = 8192; // 0x2000
+    field public static final int BSS_CAPABILITY_ESS = 1; // 0x1
+    field public static final int BSS_CAPABILITY_IBSS = 2; // 0x2
+    field public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 32768; // 0x8000
+    field public static final int BSS_CAPABILITY_PBCC = 64; // 0x40
+    field public static final int BSS_CAPABILITY_PRIVACY = 16; // 0x10
+    field public static final int BSS_CAPABILITY_QOS = 512; // 0x200
+    field public static final int BSS_CAPABILITY_RADIO_MANAGEMENT = 4096; // 0x1000
+    field public static final int BSS_CAPABILITY_SHORT_PREAMBLE = 32; // 0x20
+    field public static final int BSS_CAPABILITY_SHORT_SLOT_TIME = 1024; // 0x400
+    field public static final int BSS_CAPABILITY_SPECTRUM_MANAGEMENT = 256; // 0x100
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.wificond.NativeScanResult> CREATOR;
   }
 
   public final class NativeWifiClient implements android.os.Parcelable {
+    ctor public NativeWifiClient(@Nullable android.net.MacAddress);
     method public int describeContents();
+    method @Nullable public android.net.MacAddress getMacAddress();
     method public void writeToParcel(@NonNull android.os.Parcel, int);
     field @NonNull public static final android.os.Parcelable.Creator<android.net.wifi.wificond.NativeWifiClient> CREATOR;
-    field @NonNull public final byte[] macAddress;
   }
 
   public final class PnoNetwork implements android.os.Parcelable {
@@ -8195,12 +8306,12 @@
   public final class PnoSettings implements android.os.Parcelable {
     ctor public PnoSettings();
     method public int describeContents();
-    method public int getIntervalMillis();
+    method public long getIntervalMillis();
     method public int getMin2gRssiDbm();
     method public int getMin5gRssiDbm();
     method public int getMin6gRssiDbm();
     method @NonNull public java.util.List<android.net.wifi.wificond.PnoNetwork> getPnoNetworks();
-    method public void setIntervalMillis(int);
+    method public void setIntervalMillis(long);
     method public void setMin2gRssiDbm(int);
     method public void setMin5gRssiDbm(int);
     method public void setMin6gRssiDbm(int);
@@ -8210,6 +8321,7 @@
   }
 
   public final class RadioChainInfo implements android.os.Parcelable {
+    ctor public RadioChainInfo(int, int);
     method public int describeContents();
     method public int getChainId();
     method public int getLevelDbm();
@@ -8224,10 +8336,10 @@
     method @Nullable public android.net.wifi.wificond.DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String);
     method @NonNull public java.util.List<android.net.wifi.wificond.NativeScanResult> getScanResults(@NonNull String, int);
     method @Nullable public android.net.wifi.wificond.WifiCondManager.TxPacketCounters getTxPacketCounters(@NonNull String);
-    method public boolean initialize(@NonNull Runnable);
     method @Nullable public static android.net.wifi.wificond.WifiCondManager.OemSecurityType parseOemSecurityTypeElement(int, int, @NonNull byte[]);
     method public boolean registerApCallback(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.SoftApCallback);
     method public void sendMgmtFrame(@NonNull String, @NonNull byte[], int, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.SendMgmtFrameCallback);
+    method public void setOnServiceDeadCallback(@NonNull Runnable);
     method public boolean setupInterfaceForClientMode(@NonNull String, @NonNull java.util.concurrent.Executor, @NonNull android.net.wifi.wificond.WifiCondManager.ScanEventCallback, @NonNull android.net.wifi.wificond.WifiCondManager.ScanEventCallback);
     method public boolean setupInterfaceForSoftApMode(@NonNull String);
     method @Nullable public android.net.wifi.wificond.WifiCondManager.SignalPollResult signalPoll(@NonNull String);
@@ -8727,8 +8839,8 @@
   }
 
   public class PowerWhitelistManager {
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public boolean addToWhitelist(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public int addToWhitelist(@NonNull java.util.List<java.lang.String>);
+    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull String);
+    method @RequiresPermission(android.Manifest.permission.DEVICE_POWER) public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
     method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public void whitelistAppTemporarily(@NonNull String, long);
     method @RequiresPermission(android.Manifest.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST) public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
     field public static final int EVENT_MMS = 2; // 0x2
@@ -8789,26 +8901,6 @@
     field public static final int TUPLE_VALUE_TYPE = 7; // 0x7
   }
 
-  public class StatsFrameworkInitializer {
-    method public static void registerServiceWrappers();
-    method public static void setStatsServiceManager(@NonNull android.os.StatsServiceManager);
-  }
-
-  public class StatsServiceManager {
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsCompanionServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsManagerServiceRegisterer();
-    method @NonNull public android.os.StatsServiceManager.ServiceRegisterer getStatsdServiceRegisterer();
-  }
-
-  public static class StatsServiceManager.ServiceNotFoundException extends java.lang.Exception {
-    ctor public StatsServiceManager.ServiceNotFoundException(@NonNull String);
-  }
-
-  public static final class StatsServiceManager.ServiceRegisterer {
-    method @Nullable public android.os.IBinder get();
-    method @Nullable public android.os.IBinder getOrThrow() throws android.os.StatsServiceManager.ServiceNotFoundException;
-  }
-
   public class SystemConfigManager {
     method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Set<java.lang.String> getDisabledUntilUsedPreinstalledCarrierApps();
     method @NonNull @RequiresPermission(android.Manifest.permission.READ_CARRIER_APP_INFO) public java.util.Map<java.lang.String,java.util.List<java.lang.String>> getDisabledUntilUsedPreinstalledCarrierAssociatedApps();
@@ -8865,13 +8957,13 @@
 
   public class UpdateEngine {
     ctor public UpdateEngine();
-    method @NonNull public android.os.UpdateEngine.AllocateSpaceResult allocateSpace(@NonNull String, @NonNull String[]);
+    method @NonNull @WorkerThread public android.os.UpdateEngine.AllocateSpaceResult allocateSpace(@NonNull String, @NonNull String[]);
     method public void applyPayload(String, long, long, String[]);
     method public void applyPayload(@NonNull android.content.res.AssetFileDescriptor, @NonNull String[]);
     method public boolean bind(android.os.UpdateEngineCallback, android.os.Handler);
     method public boolean bind(android.os.UpdateEngineCallback);
     method public void cancel();
-    method public int cleanupAppliedPayload();
+    method @WorkerThread public int cleanupAppliedPayload();
     method public void resetStatus();
     method public void resume();
     method public void suspend();
@@ -8880,8 +8972,8 @@
   }
 
   public static final class UpdateEngine.AllocateSpaceResult {
-    method public int errorCode();
-    method public long freeSpaceRequired();
+    method public int getErrorCode();
+    method public long getFreeSpaceRequired();
   }
 
   public static final class UpdateEngine.ErrorCodeConstants {
@@ -8962,7 +9054,6 @@
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isSameProfileGroup(@NonNull android.os.UserHandle, @NonNull android.os.UserHandle);
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.GET_ACCOUNTS_PRIVILEGED}) public boolean isUserNameSet();
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull String);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public boolean isUserOfType(@NonNull android.os.UserHandle, @NonNull String);
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.INTERACT_ACROSS_USERS}, conditional=true) public boolean isUserUnlockingOrUnlocked(@NonNull android.os.UserHandle);
     method @RequiresPermission(anyOf={android.Manifest.permission.MANAGE_USERS, android.Manifest.permission.CREATE_USERS}) public boolean removeUser(@NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.MANAGE_USERS) public void setUserIcon(@NonNull android.graphics.Bitmap) throws android.os.UserManager.UserOperationException;
@@ -8995,6 +9086,17 @@
   @IntDef(flag=true, prefix={"RESTRICTION_"}, value={android.os.UserManager.RESTRICTION_NOT_SET, android.os.UserManager.RESTRICTION_SOURCE_SYSTEM, android.os.UserManager.RESTRICTION_SOURCE_DEVICE_OWNER, android.os.UserManager.RESTRICTION_SOURCE_PROFILE_OWNER}) @java.lang.annotation.Retention(java.lang.annotation.RetentionPolicy.SOURCE) public static @interface UserManager.UserRestrictionSource {
   }
 
+  public abstract class Vibrator {
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public boolean isVibrating();
+    method @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE) public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+  }
+
+  public static interface Vibrator.OnVibratorStateChangedListener {
+    method public void onVibratorStateChanged(boolean);
+  }
+
   public class WorkSource implements android.os.Parcelable {
     ctor public WorkSource(int);
     ctor public WorkSource(int, @NonNull String);
@@ -9089,6 +9191,15 @@
 
 }
 
+package android.os.ext.test {
+
+  @Deprecated public class Test {
+    method @Deprecated public void testF();
+    method @Deprecated public void testG();
+  }
+
+}
+
 package android.os.image {
 
   public class DynamicSystemClient {
@@ -9126,7 +9237,12 @@
     method @WorkerThread public void allocateBytes(java.io.FileDescriptor, long, @RequiresPermission int) throws java.io.IOException;
     method @WorkerThread public long getAllocatableBytes(@NonNull java.util.UUID, @RequiresPermission int) throws java.io.IOException;
     method public static boolean hasIsolatedStorage();
+    method public void updateExternalStorageFileQuotaType(@NonNull java.io.File, int) throws java.io.IOException;
     field @RequiresPermission(android.Manifest.permission.ALLOCATE_AGGRESSIVE) public static final int FLAG_ALLOCATE_AGGRESSIVE = 1; // 0x1
+    field public static final int QUOTA_TYPE_MEDIA_AUDIO = 2; // 0x2
+    field public static final int QUOTA_TYPE_MEDIA_IMAGE = 1; // 0x1
+    field public static final int QUOTA_TYPE_MEDIA_NONE = 0; // 0x0
+    field public static final int QUOTA_TYPE_MEDIA_VIDEO = 3; // 0x3
   }
 
   public final class StorageVolume implements android.os.Parcelable {
@@ -9174,7 +9290,7 @@
   }
 
   public final class PermissionManager {
-    method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public int getRuntimePermissionsVersion();
+    method @IntRange(from=0) @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, "android.permission.UPGRADE_RUNTIME_PERMISSIONS"}) public int getRuntimePermissionsVersion();
     method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
     method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void grantDefaultPermissionsToEnabledCarrierApps(@NonNull String[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void grantDefaultPermissionsToEnabledImsServices(@NonNull String[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
@@ -9182,7 +9298,7 @@
     method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void grantDefaultPermissionsToLuiApp(@NonNull String, @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void revokeDefaultPermissionsFromDisabledTelephonyDataServices(@NonNull String[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
     method @RequiresPermission(android.Manifest.permission.GRANT_RUNTIME_PERMISSIONS_TO_TELEPHONY_DEFAULTS) public void revokeDefaultPermissionsFromLuiApps(@NonNull String[], @NonNull android.os.UserHandle, @NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Boolean>);
-    method @RequiresPermission(android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
+    method @RequiresPermission(anyOf={android.Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY, "android.permission.UPGRADE_RUNTIME_PERMISSIONS"}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void startOneTimePermissionSession(@NonNull String, long, int, int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ONE_TIME_PERMISSION_SESSIONS) public void stopOneTimePermissionSession(@NonNull String);
   }
@@ -9412,6 +9528,7 @@
   }
 
   public final class DocumentsContract {
+    method @NonNull public static android.net.Uri buildDocumentUriAsUser(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
     method public static boolean isManageMode(@NonNull android.net.Uri);
     method @NonNull public static android.net.Uri setManageMode(@NonNull android.net.Uri);
     field public static final String ACTION_DOCUMENT_ROOT_SETTINGS = "android.provider.action.DOCUMENT_ROOT_SETTINGS";
@@ -9572,6 +9689,7 @@
     field public static final String AUTOFILL_COMPAT_MODE_ALLOWED_PACKAGES = "autofill_compat_mode_allowed_packages";
     field public static final String CARRIER_APP_NAMES = "carrier_app_names";
     field public static final String CARRIER_APP_WHITELIST = "carrier_app_whitelist";
+    field public static final String COMMON_CRITERIA_MODE = "common_criteria_mode";
     field public static final String DEFAULT_SM_DP_PLUS = "default_sm_dp_plus";
     field public static final String DEVICE_DEMO_MODE = "device_demo_mode";
     field public static final String DEVICE_PROVISIONING_MOBILE_DATA_ENABLED = "device_provisioning_mobile_data";
@@ -9580,7 +9698,6 @@
     field public static final String EUICC_UNSUPPORTED_COUNTRIES = "euicc_unsupported_countries";
     field public static final String INSTALL_CARRIER_APP_NOTIFICATION_PERSISTENT = "install_carrier_app_notification_persistent";
     field public static final String INSTALL_CARRIER_APP_NOTIFICATION_SLEEP_MILLIS = "install_carrier_app_notification_sleep_millis";
-    field public static final String NETWORK_RECOMMENDATIONS_ENABLED = "network_recommendations_enabled";
     field public static final String OTA_DISABLE_AUTOMATIC_UPDATE = "ota_disable_automatic_update";
     field public static final String REQUIRE_PASSWORD_TO_DECRYPT = "require_password_to_decrypt";
     field public static final String SOFT_AP_TIMEOUT_ENABLED = "soft_ap_timeout_enabled";
@@ -9595,7 +9712,7 @@
     field public static final String WIFI_SCAN_THROTTLE_ENABLED = "wifi_scan_throttle_enabled";
     field public static final String WIFI_SCORE_PARAMS = "wifi_score_params";
     field public static final String WIFI_VERBOSE_LOGGING_ENABLED = "wifi_verbose_logging_enabled";
-    field public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
+    field @Deprecated public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
   }
 
   public static final class Settings.Secure extends android.provider.Settings.NameValueTable {
@@ -10064,6 +10181,7 @@
     ctor public AugmentedAutofillService();
     method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
     method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
+    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
     method public void onConnected();
     method public void onDisconnected();
     method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
@@ -10093,6 +10211,7 @@
   public static final class FillResponse.Builder {
     ctor public FillResponse.Builder();
     method @NonNull public android.service.autofill.augmented.FillResponse build();
+    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
     method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@Nullable android.service.autofill.augmented.FillWindow);
     method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@Nullable java.util.List<android.service.autofill.Dataset>);
   }
@@ -10184,7 +10303,7 @@
 
   public interface DataShareReadAdapter {
     method public void onError(int);
-    method public void onStart(@NonNull android.os.ParcelFileDescriptor, @NonNull android.os.CancellationSignal);
+    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
   }
 
   public final class SnapshotData implements android.os.Parcelable {
@@ -10215,7 +10334,7 @@
 
   public abstract class DataLoaderService extends android.app.Service {
     ctor public DataLoaderService();
-    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader();
+    method @Nullable public android.service.dataloader.DataLoaderService.DataLoader onCreateDataLoader(@NonNull android.content.pm.DataLoaderParams);
   }
 
   public static interface DataLoaderService.DataLoader {
@@ -10735,27 +10854,26 @@
   public abstract class Conference extends android.telecom.Conferenceable {
     method @Deprecated public final android.telecom.AudioState getAudioState();
     method @Deprecated public final long getConnectTimeMillis();
-    method public final long getConnectionStartElapsedRealTime();
     method public android.telecom.Connection getPrimaryConnection();
     method @NonNull public final String getTelecomCallId();
     method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
-    method public final void setAddress(@NonNull android.net.Uri, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
     method public final void setCallerDisplayName(@NonNull String, int);
-    method public void setConferenceState(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
     method @Deprecated public final void setConnectTimeMillis(long);
   }
 
   public abstract class Connection extends android.telecom.Conferenceable {
     method @Deprecated public final android.telecom.AudioState getAudioState();
-    method public final long getConnectElapsedTimeMillis();
-    method public final long getConnectTimeMillis();
+    method @IntRange(from=0) public final long getConnectTimeMillis();
+    method public final long getConnectionStartElapsedRealtimeMillis();
     method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
     method @Nullable public final String getTelecomCallId();
     method @Deprecated public void onAudioStateChanged(android.telecom.AudioState);
     method public final void resetConnectionTime();
     method public void setCallDirection(int);
-    method public final void setConnectTimeMillis(long);
-    method public final void setConnectionStartElapsedRealTime(long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
     method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
     method public void setTelecomCallId(@NonNull String);
     field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
@@ -10914,7 +11032,7 @@
   }
 
   public static class PhoneAccount.Builder {
-    method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
   }
 
   public class PhoneAccountSuggestionService extends android.app.Service {
@@ -10989,7 +11107,7 @@
     method public int getCallState();
     method public android.telecom.PhoneAccountHandle getConnectionManager();
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getCurrentTtyMode();
-    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultDialerPackage(int);
+    method @Nullable @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
     method @Deprecated public android.content.ComponentName getDefaultPhoneApp();
     method public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsForPackage();
     method @RequiresPermission(anyOf={android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, android.Manifest.permission.READ_PHONE_STATE}) public java.util.List<android.telecom.PhoneAccountHandle> getPhoneAccountsSupportingScheme(String);
@@ -11178,10 +11296,12 @@
 
   public class CellBroadcastIntents {
     method public static void sendSmsCbReceivedBroadcast(@NonNull android.content.Context, @Nullable android.os.UserHandle, @NonNull android.telephony.SmsCbMessage, @Nullable android.content.BroadcastReceiver, @Nullable android.os.Handler, int, int);
+    field public static final String ACTION_AREA_INFO_UPDATED = "android.telephony.action.AREA_INFO_UPDATED";
   }
 
   public abstract class CellBroadcastService extends android.app.Service {
     ctor public CellBroadcastService();
+    method @NonNull @WorkerThread public abstract CharSequence getCellBroadcastAreaInfo(int);
     method @CallSuper public android.os.IBinder onBind(@Nullable android.content.Intent);
     method public abstract void onCdmaCellBroadcastSms(int, @NonNull byte[], int);
     method public abstract void onCdmaScpMessage(int, @NonNull java.util.List<android.telephony.cdma.CdmaSmsCbProgramData>, @NonNull String, @NonNull java.util.function.Consumer<android.os.Bundle>);
@@ -11799,9 +11919,9 @@
     field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_CALL = 268435456; // 0x10000000
     field @RequiresPermission(android.Manifest.permission.READ_ACTIVE_EMERGENCY_SESSION) public static final int LISTEN_OUTGOING_EMERGENCY_SMS = 536870912; // 0x20000000
     field @RequiresPermission("android.permission.READ_PRECISE_PHONE_STATE") public static final int LISTEN_PRECISE_CALL_STATE = 2048; // 0x800
-    field public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_RADIO_POWER_STATE_CHANGED = 8388608; // 0x800000
     field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_SRVCC_STATE_CHANGED = 16384; // 0x4000
-    field public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
+    field @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public static final int LISTEN_VOICE_ACTIVATION_STATE = 131072; // 0x20000
   }
 
   public final class PinResult implements android.os.Parcelable {
@@ -12358,7 +12478,6 @@
     field public static final int CDMA_SUBSCRIPTION_RUIM_SIM = 0; // 0x0
     field public static final int CDMA_SUBSCRIPTION_UNKNOWN = -1; // 0xffffffff
     field public static final int CHANGE_ICC_LOCK_SUCCESS = 2147483647; // 0x7fffffff
-    field public static final int DEFAULT_PREFERRED_NETWORK_MODE = 0; // 0x0
     field public static final String EXTRA_ANOMALY_DESCRIPTION = "android.telephony.extra.ANOMALY_DESCRIPTION";
     field public static final String EXTRA_ANOMALY_ID = "android.telephony.extra.ANOMALY_ID";
     field @Deprecated public static final String EXTRA_APN_PROTOCOL = "apnProto";
@@ -12452,6 +12571,7 @@
     method public void notifyDataActivityChanged(int, int);
     method public void notifyDataConnectionForSubscriber(int, int, int, @Nullable android.telephony.PreciseDataConnectionState);
     method public void notifyDisconnectCause(int, int, int, int);
+    method public void notifyDisplayInfoChanged(int, int, @NonNull android.telephony.DisplayInfo);
     method public void notifyEmergencyNumberList(int, int);
     method public void notifyImsDisconnectCause(int, @NonNull android.telephony.ims.ImsReasonInfo);
     method public void notifyMessageWaitingChanged(int, int, boolean);
@@ -12507,20 +12627,6 @@
     method public static final void setSmsFilterSettings(android.content.Context, android.telecom.PhoneAccountHandle, android.telephony.VisualVoicemailSmsFilterSettings);
   }
 
-  public final class WapPushManagerConnector {
-    ctor public WapPushManagerConnector(@NonNull android.content.Context);
-    method public boolean bindToWapPushManagerService();
-    method @Nullable public String getConnectedWapPushManagerServicePackage();
-    method public int processMessage(@NonNull String, @NonNull String, @NonNull android.content.Intent);
-    method public void unbindWapPushManagerService();
-    field public static final int RESULT_APP_QUERY_FAILED = 2; // 0x2
-    field public static final int RESULT_EXCEPTION_CAUGHT = 16; // 0x10
-    field public static final int RESULT_FURTHER_PROCESSING = 32768; // 0x8000
-    field public static final int RESULT_INVALID_RECEIVER_NAME = 8; // 0x8
-    field public static final int RESULT_MESSAGE_HANDLED = 1; // 0x1
-    field public static final int RESULT_SIGNATURE_NO_MATCH = 4; // 0x4
-  }
-
 }
 
 package android.telephony.cdma {
@@ -13080,19 +13186,7 @@
   }
 
   public class ImsRcsManager implements android.telephony.ims.RegistrationManager {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isAvailable(int) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isCapable(int, int) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void registerRcsAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsRcsManager.AvailabilityCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void unregisterRcsAvailabilityCallback(@NonNull android.telephony.ims.ImsRcsManager.AvailabilityCallback) throws android.telephony.ims.ImsException;
-  }
-
-  public static class ImsRcsManager.AvailabilityCallback {
-    ctor public ImsRcsManager.AvailabilityCallback();
-    method public void onAvailabilityChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities);
+    method @NonNull public android.telephony.ims.RcsUceAdapter getUceAdapter();
   }
 
   public final class ImsReasonInfo implements android.os.Parcelable {
@@ -13471,34 +13565,8 @@
   }
 
   public class RcsUceAdapter {
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public int getUcePublishState() throws android.telephony.ims.ImsException;
     method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
-    method @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE) public void requestCapabilities(@NonNull java.util.concurrent.Executor, @NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.RcsUceAdapter.CapabilitiesCallback) throws android.telephony.ims.ImsException;
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-    field public static final int ERROR_ALREADY_IN_QUEUE = 13; // 0xd
-    field public static final int ERROR_FORBIDDEN = 6; // 0x6
-    field public static final int ERROR_GENERIC_FAILURE = 1; // 0x1
-    field public static final int ERROR_INSUFFICIENT_MEMORY = 11; // 0xb
-    field public static final int ERROR_LOST_NETWORK = 12; // 0xc
-    field public static final int ERROR_NOT_AUTHORIZED = 5; // 0x5
-    field public static final int ERROR_NOT_AVAILABLE = 3; // 0x3
-    field public static final int ERROR_NOT_ENABLED = 2; // 0x2
-    field public static final int ERROR_NOT_FOUND = 7; // 0x7
-    field public static final int ERROR_NOT_REGISTERED = 4; // 0x4
-    field public static final int ERROR_REQUEST_TIMEOUT = 10; // 0xa
-    field public static final int ERROR_REQUEST_TOO_LARGE = 8; // 0x8
-    field public static final int PUBLISH_STATE_200_OK = 1; // 0x1
-    field public static final int PUBLISH_STATE_NOT_PUBLISHED = 2; // 0x2
-    field public static final int PUBLISH_STATE_OTHER_ERROR = 6; // 0x6
-    field public static final int PUBLISH_STATE_RCS_PROVISION_ERROR = 4; // 0x4
-    field public static final int PUBLISH_STATE_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int PUBLISH_STATE_VOLTE_PROVISION_ERROR = 3; // 0x3
-  }
-
-  public static class RcsUceAdapter.CapabilitiesCallback {
-    ctor public RcsUceAdapter.CapabilitiesCallback();
-    method public void onCapabilitiesReceived(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>);
-    method public void onError(int);
   }
 
 }
@@ -13584,23 +13652,8 @@
   public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
     ctor public RcsFeature();
     method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @NonNull public android.telephony.ims.stub.RcsSipOptionsImplBase getOptionsExchangeImpl();
-    method @NonNull public android.telephony.ims.stub.RcsPresenceExchangeImplBase getPresenceExchangeImpl();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities);
     method public void onFeatureReady();
     method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.RcsFeature.RcsImsCapabilities queryCapabilityStatus();
-  }
-
-  public static class RcsFeature.RcsImsCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public RcsFeature.RcsImsCapabilities(int);
-    method public void addCapabilities(int);
-    method public boolean isCapable(int);
-    method public void removeCapabilities(int);
-    field public static final int CAPABILITY_TYPE_NONE = 0; // 0x0
-    field public static final int CAPABILITY_TYPE_OPTIONS_UCE = 1; // 0x1
-    field public static final int CAPABILITY_TYPE_PRESENCE_UCE = 2; // 0x2
   }
 
 }
@@ -13778,71 +13831,6 @@
     field public static final int INVALID_RESULT = -1; // 0xffffffff
   }
 
-  public class RcsCapabilityExchange {
-    ctor public RcsCapabilityExchange();
-    method public final void onCommandUpdate(int, int) throws android.telephony.ims.ImsException;
-    field public static final int COMMAND_CODE_FETCH_ERROR = 4; // 0x4
-    field public static final int COMMAND_CODE_GENERIC_FAILURE = 2; // 0x2
-    field public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 6; // 0x6
-    field public static final int COMMAND_CODE_INVALID_PARAM = 3; // 0x3
-    field public static final int COMMAND_CODE_LOST_NETWORK_CONNECTION = 7; // 0x7
-    field public static final int COMMAND_CODE_NOT_FOUND = 9; // 0x9
-    field public static final int COMMAND_CODE_NOT_SUPPORTED = 8; // 0x8
-    field public static final int COMMAND_CODE_NO_CHANGE_IN_CAP = 11; // 0xb
-    field public static final int COMMAND_CODE_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int COMMAND_CODE_SERVICE_UNAVAILABLE = 10; // 0xa
-    field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0
-    field public static final int COMMAND_CODE_SUCCESS = 1; // 0x1
-  }
-
-  public class RcsPresenceExchangeImplBase extends android.telephony.ims.stub.RcsCapabilityExchange {
-    ctor public RcsPresenceExchangeImplBase();
-    method public final void onCapabilityRequestResponse(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>, int) throws android.telephony.ims.ImsException;
-    method public final void onNetworkResponse(int, @NonNull String, int) throws android.telephony.ims.ImsException;
-    method public final void onNotifyUpdateCapabilites(int) throws android.telephony.ims.ImsException;
-    method public final void onUnpublish() throws android.telephony.ims.ImsException;
-    method public void requestCapabilities(@NonNull java.util.List<android.net.Uri>, int);
-    method public void updateCapabilities(@NonNull android.telephony.ims.RcsContactUceCapability, int);
-    field public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 0; // 0x0
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 6; // 0x6
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 5; // 0x5
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD = 3; // 0x3
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS = 4; // 0x4
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN = 8; // 0x8
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1; // 0x1
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2; // 0x2
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED = 10; // 0xa
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED = 11; // 0xb
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN = 7; // 0x7
-    field public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 9; // 0x9
-    field public static final int RESPONSE_FORBIDDEN = 3; // 0x3
-    field public static final int RESPONSE_NOT_AUTHORIZED_FOR_PRESENCE = 2; // 0x2
-    field public static final int RESPONSE_NOT_FOUND = 4; // 0x4
-    field public static final int RESPONSE_NOT_REGISTERED = 1; // 0x1
-    field public static final int RESPONSE_SIP_INTERVAL_TOO_SHORT = 7; // 0x7
-    field public static final int RESPONSE_SIP_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int RESPONSE_SIP_SERVICE_UNAVAILABLE = 8; // 0x8
-    field public static final int RESPONSE_SUBSCRIBE_GENERIC_FAILURE = -1; // 0xffffffff
-    field public static final int RESPONSE_SUBSCRIBE_TOO_LARGE = 6; // 0x6
-    field public static final int RESPONSE_SUCCESS = 0; // 0x0
-  }
-
-  public class RcsSipOptionsImplBase extends android.telephony.ims.stub.RcsCapabilityExchange {
-    ctor public RcsSipOptionsImplBase();
-    method public final void onCapabilityRequestResponse(int, @NonNull String, @Nullable android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException;
-    method public final void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException;
-    method public void respondToCapabilityRequest(@NonNull String, @NonNull android.telephony.ims.RcsContactUceCapability, int);
-    method public void respondToCapabilityRequestWithError(@NonNull android.net.Uri, int, @NonNull String, int);
-    method public void sendCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int);
-    field public static final int RESPONSE_BAD_REQUEST = 5; // 0x5
-    field public static final int RESPONSE_DOES_NOT_EXIST_ANYWHERE = 4; // 0x4
-    field public static final int RESPONSE_GENERIC_FAILURE = -1; // 0xffffffff
-    field public static final int RESPONSE_NOT_FOUND = 3; // 0x3
-    field public static final int RESPONSE_REQUEST_TIMEOUT = 2; // 0x2
-    field public static final int RESPONSE_SUCCESS = 0; // 0x0
-    field public static final int RESPONSE_TEMPORARILY_UNAVAILABLE = 1; // 0x1
-  }
-
 }
 
 package android.telephony.mbms {
@@ -14064,6 +14052,10 @@
     method public boolean isContentCaptureFeatureEnabled();
   }
 
+  public abstract class ContentCaptureSession implements java.lang.AutoCloseable {
+    field public static final int NO_SESSION_ID = 0; // 0x0
+  }
+
   public final class ViewNode extends android.app.assist.AssistStructure.ViewNode {
     method @Nullable public android.view.autofill.AutofillId getParentAutofillId();
   }
diff --git a/api/system-lint-baseline.txt b/api/system-lint-baseline.txt
index 2f1889c..0caee6b 100644
--- a/api/system-lint-baseline.txt
+++ b/api/system-lint-baseline.txt
@@ -64,10 +64,6 @@
     
 
 
-HeavyBitSet: android.net.wifi.wificond.NativeScanResult#getCapabilities():
-    
-
-
 IntentBuilderName: android.content.Context#registerReceiverForAllUsers(android.content.BroadcastReceiver, android.content.IntentFilter, String, android.os.Handler):
     Methods creating an Intent should be named `create<Foo>Intent()`, was `registerReceiverForAllUsers`
 
@@ -200,8 +196,6 @@
     
 MutableBareField: android.net.wifi.WifiConfiguration#allowAutojoin:
     
-MutableBareField: android.net.wifi.WifiConfiguration#apBand:
-    
 MutableBareField: android.net.wifi.WifiConfiguration#carrierId:
     
 MutableBareField: android.net.wifi.WifiConfiguration#fromWifiNetworkSpecifier:
diff --git a/api/test-current.txt b/api/test-current.txt
index b3b74c8..4c8bb02 100644
--- a/api/test-current.txt
+++ b/api/test-current.txt
@@ -15,6 +15,7 @@
     field public static final String MANAGE_ACTIVITY_STACKS = "android.permission.MANAGE_ACTIVITY_STACKS";
     field public static final String MANAGE_CRATES = "android.permission.MANAGE_CRATES";
     field public static final String MANAGE_ROLLBACKS = "android.permission.MANAGE_ROLLBACKS";
+    field public static final String NETWORK_STACK = "android.permission.NETWORK_STACK";
     field public static final String READ_CELL_BROADCASTS = "android.permission.READ_CELL_BROADCASTS";
     field public static final String REMOVE_TASKS = "android.permission.REMOVE_TASKS";
     field public static final String SUSPEND_APPS = "android.permission.SUSPEND_APPS";
@@ -118,8 +119,8 @@
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizePinnedStack(int, android.graphics.Rect, boolean);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void resizeTask(int, android.graphics.Rect);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setDisplayToSingleTaskInstance(int);
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
-    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingMode(int, int, boolean) throws java.lang.SecurityException;
+    method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public boolean setTaskWindowingModeSplitScreenPrimary(int, int, boolean, boolean, android.graphics.Rect, boolean) throws java.lang.SecurityException;
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void startSystemLockTaskMode(int);
     method @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS) public void stopSystemLockTaskMode();
     method public static boolean supportsMultiWindow(android.content.Context);
@@ -183,6 +184,9 @@
     field public static final int HISTORICAL_MODE_DISABLED = 0; // 0x0
     field public static final int HISTORICAL_MODE_ENABLED_ACTIVE = 1; // 0x1
     field public static final int HISTORICAL_MODE_ENABLED_PASSIVE = 2; // 0x2
+    field public static final String KEY_BG_STATE_SETTLE_TIME = "bg_state_settle_time";
+    field public static final String KEY_FG_SERVICE_STATE_SETTLE_TIME = "fg_service_state_settle_time";
+    field public static final String KEY_TOP_STATE_SETTLE_TIME = "top_state_settle_time";
     field public static final String OPSTR_ACCEPT_HANDOVER = "android:accept_handover";
     field public static final String OPSTR_ACCESS_NOTIFICATIONS = "android:access_notifications";
     field public static final String OPSTR_ACTIVATE_VPN = "android:activate_vpn";
@@ -416,6 +420,7 @@
     method public void setFgServiceShown(boolean);
     method public void setImportanceLockedByCriticalDeviceFunction(boolean);
     method public void setImportanceLockedByOEM(boolean);
+    method public void setImportantConversation(boolean);
     method public void setOriginalImportance(int);
   }
 
@@ -767,7 +772,7 @@
     method public void setAutofillOptions(@Nullable android.content.AutofillOptions);
     method public void setContentCaptureOptions(@Nullable android.content.ContentCaptureOptions);
     method @RequiresPermission("android.permission.INTERACT_ACROSS_USERS") public void startActivityAsUser(@NonNull @RequiresPermission android.content.Intent, @NonNull android.os.UserHandle);
-    field public static final String BLOB_STORE_SERVICE = "blob_store";
+    field public static final String APP_INTEGRITY_SERVICE = "app_integrity";
     field public static final String BUGREPORT_SERVICE = "bugreport";
     field public static final String CONTENT_CAPTURE_MANAGER_SERVICE = "content_capture";
     field public static final String DEVICE_IDLE_CONTROLLER = "deviceidle";
@@ -793,6 +798,64 @@
 
 }
 
+package android.content.integrity {
+
+  public class AppIntegrityManager {
+    method @NonNull public android.content.integrity.RuleSet getCurrentRuleSet();
+    method @NonNull public String getCurrentRuleSetProvider();
+    method @NonNull public String getCurrentRuleSetVersion();
+    method public void updateRuleSet(@NonNull android.content.integrity.RuleSet, @NonNull android.content.IntentSender);
+    field public static final String EXTRA_STATUS = "android.content.integrity.extra.STATUS";
+    field public static final int STATUS_FAILURE = 1; // 0x1
+    field public static final int STATUS_SUCCESS = 0; // 0x0
+  }
+
+  public abstract class IntegrityFormula {
+    method @NonNull public static android.content.integrity.IntegrityFormula all(@NonNull android.content.integrity.IntegrityFormula...);
+    method @NonNull public static android.content.integrity.IntegrityFormula any(@NonNull android.content.integrity.IntegrityFormula...);
+    method @NonNull public static android.content.integrity.IntegrityFormula not(@NonNull android.content.integrity.IntegrityFormula);
+  }
+
+  public static final class IntegrityFormula.Application {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula isPreInstalled();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeEquals(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThan(@NonNull long);
+    method @NonNull public static android.content.integrity.IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long);
+  }
+
+  public static final class IntegrityFormula.Installer {
+    method @NonNull public static android.content.integrity.IntegrityFormula certificatesContain(@NonNull String);
+    method @NonNull public static android.content.integrity.IntegrityFormula notAllowedByManifest();
+    method @NonNull public static android.content.integrity.IntegrityFormula packageNameEquals(@NonNull String);
+  }
+
+  public final class Rule implements android.os.Parcelable {
+    ctor public Rule(@NonNull android.content.integrity.IntegrityFormula, int);
+    method public int describeContents();
+    method public int getEffect();
+    method @NonNull public android.content.integrity.IntegrityFormula getFormula();
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.content.integrity.Rule> CREATOR;
+    field public static final int DENY = 0; // 0x0
+    field public static final int FORCE_ALLOW = 1; // 0x1
+  }
+
+  public class RuleSet {
+    method @NonNull public java.util.List<android.content.integrity.Rule> getRules();
+    method @NonNull public String getVersion();
+  }
+
+  public static class RuleSet.Builder {
+    ctor public RuleSet.Builder();
+    method @NonNull public android.content.integrity.RuleSet.Builder addRules(@NonNull java.util.List<android.content.integrity.Rule>);
+    method @NonNull public android.content.integrity.RuleSet build();
+    method @NonNull public android.content.integrity.RuleSet.Builder setVersion(@NonNull String);
+  }
+
+}
+
 package android.content.pm {
 
   public class ActivityInfo extends android.content.pm.ComponentInfo implements android.os.Parcelable {
@@ -831,6 +894,7 @@
     method public abstract boolean arePermissionsIndividuallyControlled();
     method @Nullable public String getContentCaptureServicePackageName();
     method @Nullable @RequiresPermission("android.permission.INTERACT_ACROSS_USERS_FULL") public abstract String getDefaultBrowserPackageNameAsUser(int);
+    method @Nullable public String getDefaultTextClassifierPackageName();
     method @Nullable public String getIncidentReportApproverPackageName();
     method public abstract int getInstallReason(@NonNull String, @NonNull android.os.UserHandle);
     method @NonNull public abstract java.util.List<android.content.pm.ApplicationInfo> getInstalledApplicationsAsUser(int, int);
@@ -840,6 +904,7 @@
     method @RequiresPermission(anyOf={"android.permission.GRANT_RUNTIME_PERMISSIONS", "android.permission.REVOKE_RUNTIME_PERMISSIONS", "android.permission.GET_RUNTIME_PERMISSIONS"}) public abstract int getPermissionFlags(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
     method @NonNull public abstract String getServicesSystemSharedLibraryPackageName();
     method @NonNull public abstract String getSharedSystemSharedLibraryPackageName();
+    method @Nullable public String getSystemTextClassifierPackageName();
     method @Nullable public String[] getTelephonyPackageNames();
     method @Nullable public String getWellbeingPackageName();
     method @RequiresPermission("android.permission.GRANT_RUNTIME_PERMISSIONS") public abstract void grantRuntimePermission(@NonNull String, @NonNull String, @NonNull android.os.UserHandle);
@@ -863,6 +928,7 @@
     field public static final int FLAG_PERMISSION_USER_SET = 1; // 0x1
     field public static final int MATCH_FACTORY_ONLY = 2097152; // 0x200000
     field public static final int MATCH_KNOWN_PACKAGES = 4202496; // 0x402000
+    field public static final int MODULE_APEX_NAME = 1; // 0x1
     field public static final String SYSTEM_SHARED_LIBRARY_SERVICES = "android.ext.services";
     field public static final String SYSTEM_SHARED_LIBRARY_SHARED = "android.ext.shared";
   }
@@ -879,6 +945,7 @@
     field public static final int PROTECTION_FLAG_DOCUMENTER = 262144; // 0x40000
     field public static final int PROTECTION_FLAG_INCIDENT_REPORT_APPROVER = 1048576; // 0x100000
     field public static final int PROTECTION_FLAG_OEM = 16384; // 0x4000
+    field public static final int PROTECTION_FLAG_RETAIL_DEMO = 16777216; // 0x1000000
     field public static final int PROTECTION_FLAG_SYSTEM_TEXT_CLASSIFIER = 65536; // 0x10000
     field public static final int PROTECTION_FLAG_TELEPHONY = 4194304; // 0x400000
     field public static final int PROTECTION_FLAG_VENDOR_PRIVILEGED = 32768; // 0x8000
@@ -1272,8 +1339,7 @@
 
   public class Location implements android.os.Parcelable {
     method public void makeComplete();
-    method public void setExtraLocation(@Nullable String, @Nullable android.location.Location);
-    field public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
+    field @Deprecated public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
   }
 
   public class LocationManager {
@@ -1388,6 +1454,10 @@
     method public int getMaxMacroBlocks();
   }
 
+  public final class MediaRoute2Info implements android.os.Parcelable {
+    method @NonNull public String getOriginalId();
+  }
+
   public final class PlaybackParams implements android.os.Parcelable {
     method public int getAudioStretchMode();
     method public android.media.PlaybackParams setAudioStretchMode(int);
@@ -1572,7 +1642,7 @@
 
   public class CaptivePortal implements android.os.Parcelable {
     method public void logEvent(int, @NonNull String);
-    method public void reevaluateNetwork();
+    method @RequiresPermission(android.Manifest.permission.NETWORK_STACK) public void reevaluateNetwork();
     method public void useNetwork();
     field public static final int APP_REQUEST_REEVALUATION_REQUIRED = 100; // 0x64
     field public static final int APP_RETURN_DISMISSED = 0; // 0x0
@@ -1689,6 +1759,55 @@
     field public static final int TRANSPORT_TEST = 7; // 0x7
   }
 
+  public final class NetworkScore implements android.os.Parcelable {
+    method public int describeContents();
+    method @NonNull public android.net.NetworkScore.Metrics getEndToEndMetrics();
+    method @NonNull public android.net.NetworkScore.Metrics getLinkLayerMetrics();
+    method public int getRange();
+    method @IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH, to=android.net.NetworkScore.MAX_SIGNAL_STRENGTH) public int getSignalStrength();
+    method public boolean hasPolicy(int);
+    method public boolean isExiting();
+    method @NonNull public android.net.NetworkScore withExiting(boolean);
+    method @NonNull public android.net.NetworkScore withSignalStrength(@IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH) int);
+    method public void writeToParcel(@NonNull android.os.Parcel, int);
+    field @NonNull public static final android.os.Parcelable.Creator<android.net.NetworkScore> CREATOR;
+    field public static final int MAX_SIGNAL_STRENGTH = 1000; // 0x3e8
+    field public static final int MIN_SIGNAL_STRENGTH = 0; // 0x0
+    field public static final int POLICY_DEFAULT_SUBSCRIPTION = 8; // 0x8
+    field public static final int POLICY_IGNORE_ON_WIFI = 4; // 0x4
+    field public static final int POLICY_LOCKDOWN_VPN = 1; // 0x1
+    field public static final int POLICY_VPN = 2; // 0x2
+    field public static final int RANGE_CLOSE = 1; // 0x1
+    field public static final int RANGE_LONG = 4; // 0x4
+    field public static final int RANGE_MEDIUM = 3; // 0x3
+    field public static final int RANGE_SHORT = 2; // 0x2
+    field public static final int RANGE_UNKNOWN = 0; // 0x0
+    field public static final int UNKNOWN_SIGNAL_STRENGTH = -1; // 0xffffffff
+  }
+
+  public static class NetworkScore.Builder {
+    ctor public NetworkScore.Builder();
+    method @NonNull public android.net.NetworkScore.Builder addPolicy(int);
+    method @NonNull public android.net.NetworkScore build();
+    method @NonNull public android.net.NetworkScore.Builder clearPolicy(int);
+    method @NonNull public android.net.NetworkScore.Builder setEndToEndMetrics(@NonNull android.net.NetworkScore.Metrics);
+    method @NonNull public android.net.NetworkScore.Builder setExiting(boolean);
+    method @NonNull public android.net.NetworkScore.Builder setLegacyScore(int);
+    method @NonNull public android.net.NetworkScore.Builder setLinkLayerMetrics(@NonNull android.net.NetworkScore.Metrics);
+    method @NonNull public android.net.NetworkScore.Builder setRange(int);
+    method @NonNull public android.net.NetworkScore.Builder setSignalStrength(@IntRange(from=android.net.NetworkScore.UNKNOWN_SIGNAL_STRENGTH, to=android.net.NetworkScore.MAX_SIGNAL_STRENGTH) int);
+  }
+
+  public static class NetworkScore.Metrics {
+    ctor public NetworkScore.Metrics(@IntRange(from=android.net.NetworkScore.Metrics.LATENCY_UNKNOWN) int, @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) int, @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) int);
+    field public static final int BANDWIDTH_UNKNOWN = -1; // 0xffffffff
+    field @NonNull public static final android.net.NetworkScore.Metrics EMPTY;
+    field public static final int LATENCY_UNKNOWN = -1; // 0xffffffff
+    field @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) public final int downlinkBandwidthKBps;
+    field @IntRange(from=android.net.NetworkScore.Metrics.LATENCY_UNKNOWN) public final int latencyMs;
+    field @IntRange(from=android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN) public final int uplinkBandwidthKBps;
+  }
+
   public class NetworkStack {
     field public static final String PERMISSION_MAINLINE_NETWORK_STACK = "android.permission.MAINLINE_NETWORK_STACK";
   }
@@ -2332,8 +2451,8 @@
   }
 
   public class PowerWhitelistManager {
-    method @RequiresPermission("android.permission.DEVICE_POWER") public boolean addToWhitelist(@NonNull String);
-    method @RequiresPermission("android.permission.DEVICE_POWER") public int addToWhitelist(@NonNull java.util.List<java.lang.String>);
+    method @RequiresPermission("android.permission.DEVICE_POWER") public void addToWhitelist(@NonNull String);
+    method @RequiresPermission("android.permission.DEVICE_POWER") public void addToWhitelist(@NonNull java.util.List<java.lang.String>);
     method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public void whitelistAppTemporarily(@NonNull String, long);
     method @RequiresPermission("android.permission.CHANGE_DEVICE_IDLE_TEMP_WHITELIST") public long whitelistAppTemporarilyForEvent(@NonNull String, int, @NonNull String);
     field public static final int EVENT_MMS = 2; // 0x2
@@ -2426,6 +2545,7 @@
   }
 
   public class UserManager {
+    method @RequiresPermission(anyOf={"android.permission.MANAGE_USERS", "android.permission.CREATE_USERS"}) public boolean hasBaseUserRestriction(@NonNull String, @NonNull android.os.UserHandle);
     method public static boolean isSplitSystemUser();
     field public static final String ACTION_USER_RESTRICTIONS_CHANGED = "android.os.action.USER_RESTRICTIONS_CHANGED";
   }
@@ -2490,6 +2610,17 @@
     field @NonNull public static final android.os.Parcelable.Creator<android.os.VibrationEffect.Waveform> CREATOR;
   }
 
+  public abstract class Vibrator {
+    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void addVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void addVibratorStateListener(@NonNull java.util.concurrent.Executor, @NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public boolean isVibrating();
+    method @RequiresPermission("android.permission.ACCESS_VIBRATOR_STATE") public void removeVibratorStateListener(@NonNull android.os.Vibrator.OnVibratorStateChangedListener);
+  }
+
+  public static interface Vibrator.OnVibratorStateChangedListener {
+    method public void onVibratorStateChanged(boolean);
+  }
+
   public class VintfObject {
     method public static String[] getHalNamesAndVersions();
     method public static String getSepolicyVersion();
@@ -2662,9 +2793,9 @@
   }
 
   public final class PermissionManager {
-    method @IntRange(from=0) @RequiresPermission("android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY") public int getRuntimePermissionsVersion();
+    method @IntRange(from=0) @RequiresPermission(anyOf={"android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "android.permission.UPGRADE_RUNTIME_PERMISSIONS"}) public int getRuntimePermissionsVersion();
     method @NonNull public java.util.List<android.permission.PermissionManager.SplitPermissionInfo> getSplitPermissions();
-    method @RequiresPermission("android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY") public void setRuntimePermissionsVersion(@IntRange(from=0) int);
+    method @RequiresPermission(anyOf={"android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY", "android.permission.UPGRADE_RUNTIME_PERMISSIONS"}) public void setRuntimePermissionsVersion(@IntRange(from=0) int);
   }
 
   public static final class PermissionManager.SplitPermissionInfo {
@@ -3053,6 +3184,7 @@
     ctor public AugmentedAutofillService();
     method protected final void dump(java.io.FileDescriptor, java.io.PrintWriter, String[]);
     method protected void dump(@NonNull java.io.PrintWriter, @NonNull String[]);
+    method @Nullable public final android.service.autofill.FillEventHistory getFillEventHistory();
     method public void onConnected();
     method public void onDisconnected();
     method public void onFillRequest(@NonNull android.service.autofill.augmented.FillRequest, @NonNull android.os.CancellationSignal, @NonNull android.service.autofill.augmented.FillController, @NonNull android.service.autofill.augmented.FillCallback);
@@ -3082,6 +3214,7 @@
   public static final class FillResponse.Builder {
     ctor public FillResponse.Builder();
     method @NonNull public android.service.autofill.augmented.FillResponse build();
+    method @NonNull public android.service.autofill.augmented.FillResponse.Builder setClientState(@Nullable android.os.Bundle);
     method @NonNull public android.service.autofill.augmented.FillResponse.Builder setFillWindow(@Nullable android.service.autofill.augmented.FillWindow);
     method @NonNull public android.service.autofill.augmented.FillResponse.Builder setInlineSuggestions(@Nullable java.util.List<android.service.autofill.Dataset>);
   }
@@ -3125,6 +3258,7 @@
     method public void onContentCaptureEvent(@NonNull android.view.contentcapture.ContentCaptureSessionId, @NonNull android.view.contentcapture.ContentCaptureEvent);
     method public void onCreateContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureContext, @NonNull android.view.contentcapture.ContentCaptureSessionId);
     method public void onDataRemovalRequest(@NonNull android.view.contentcapture.DataRemovalRequest);
+    method public void onDataShareRequest(@NonNull android.view.contentcapture.DataShareRequest, @NonNull android.service.contentcapture.DataShareCallback);
     method public void onDestroyContentCaptureSession(@NonNull android.view.contentcapture.ContentCaptureSessionId);
     method public void onDisconnected();
     method public final void setContentCaptureConditions(@NonNull String, @Nullable java.util.Set<android.view.contentcapture.ContentCaptureCondition>);
@@ -3133,6 +3267,16 @@
     field public static final String SERVICE_META_DATA = "android.content_capture";
   }
 
+  public interface DataShareCallback {
+    method public void onAccept(@NonNull java.util.concurrent.Executor, @NonNull android.service.contentcapture.DataShareReadAdapter);
+    method public void onReject();
+  }
+
+  public interface DataShareReadAdapter {
+    method public void onError(int);
+    method public void onStart(@NonNull android.os.ParcelFileDescriptor);
+  }
+
   public final class SnapshotData implements android.os.Parcelable {
     method public int describeContents();
     method @Nullable public android.app.assist.AssistContent getAssistContent();
@@ -3297,23 +3441,22 @@
   }
 
   public abstract class Conference extends android.telecom.Conferenceable {
-    method public final long getConnectionStartElapsedRealTime();
     method public android.telecom.Connection getPrimaryConnection();
     method @NonNull public final String getTelecomCallId();
-    method public final void setAddress(@NonNull android.net.Uri, int);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setAddress(@NonNull android.net.Uri, int);
     method public final void setCallerDisplayName(@NonNull String, int);
-    method public void setConferenceState(boolean);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setConferenceState(boolean);
   }
 
   public abstract class Connection extends android.telecom.Conferenceable {
-    method public final long getConnectElapsedTimeMillis();
-    method public final long getConnectTimeMillis();
+    method @IntRange(from=0) public final long getConnectTimeMillis();
+    method public final long getConnectionStartElapsedRealtimeMillis();
     method @Nullable public android.telecom.PhoneAccountHandle getPhoneAccountHandle();
     method @Nullable public final String getTelecomCallId();
     method public final void resetConnectionTime();
     method public void setCallDirection(int);
-    method public final void setConnectTimeMillis(long);
-    method public final void setConnectionStartElapsedRealTime(long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectTimeMillis(@IntRange(from=0) long);
+    method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public final void setConnectionStartElapsedRealtimeMillis(long);
     method public void setPhoneAccountHandle(@NonNull android.telecom.PhoneAccountHandle);
     method public void setTelecomCallId(@NonNull String);
     field public static final int CAPABILITY_CONFERENCE_HAS_NO_CHILDREN = 2097152; // 0x200000
@@ -3345,7 +3488,7 @@
   }
 
   public static class PhoneAccount.Builder {
-    method @NonNull public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
+    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public android.telecom.PhoneAccount.Builder setGroupId(@NonNull String);
   }
 
   public class PhoneAccountSuggestionService extends android.app.Service {
@@ -3359,7 +3502,7 @@
   public class TelecomManager {
     method @NonNull @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public java.util.List<android.telecom.PhoneAccountHandle> getCallCapablePhoneAccounts(boolean);
     method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getCurrentTtyMode();
-    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(int);
+    method @Nullable @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public String getDefaultDialerPackage(@NonNull android.os.UserHandle);
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public boolean isInEmergencyCall();
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUserSelectedOutgoingPhoneAccount(@Nullable android.telecom.PhoneAccountHandle);
     field public static final int TTY_MODE_FULL = 1; // 0x1
@@ -3577,6 +3720,7 @@
     method public void notifyDataActivityChanged(int, int);
     method public void notifyDataConnectionForSubscriber(int, int, int, @Nullable android.telephony.PreciseDataConnectionState);
     method public void notifyDisconnectCause(int, int, int, int);
+    method public void notifyDisplayInfoChanged(int, int, @NonNull android.telephony.DisplayInfo);
     method public void notifyEmergencyNumberList(int, int);
     method public void notifyImsDisconnectCause(int, @NonNull android.telephony.ims.ImsReasonInfo);
     method public void notifyMessageWaitingChanged(int, int, boolean);
@@ -3844,19 +3988,7 @@
   }
 
   public class ImsRcsManager implements android.telephony.ims.RegistrationManager {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationState(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void getRegistrationTransportType(@NonNull java.util.concurrent.Executor, @NonNull java.util.function.Consumer<java.lang.Integer>);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isAvailable(int) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isCapable(int, int) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerImsRegistrationCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.RegistrationManager.RegistrationCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void registerRcsAvailabilityCallback(@NonNull java.util.concurrent.Executor, @NonNull android.telephony.ims.ImsRcsManager.AvailabilityCallback) throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterImsRegistrationCallback(@NonNull android.telephony.ims.RegistrationManager.RegistrationCallback);
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void unregisterRcsAvailabilityCallback(@NonNull android.telephony.ims.ImsRcsManager.AvailabilityCallback) throws android.telephony.ims.ImsException;
-  }
-
-  public static class ImsRcsManager.AvailabilityCallback {
-    ctor public ImsRcsManager.AvailabilityCallback();
-    method public void onAvailabilityChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities);
+    method @NonNull public android.telephony.ims.RcsUceAdapter getUceAdapter();
   }
 
   public class ImsService extends android.app.Service {
@@ -4231,34 +4363,8 @@
   }
 
   public class RcsUceAdapter {
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public int getUcePublishState() throws android.telephony.ims.ImsException;
     method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public boolean isUceSettingEnabled() throws android.telephony.ims.ImsException;
-    method @RequiresPermission("android.permission.READ_PRIVILEGED_PHONE_STATE") public void requestCapabilities(@NonNull java.util.concurrent.Executor, @NonNull java.util.List<android.net.Uri>, @NonNull android.telephony.ims.RcsUceAdapter.CapabilitiesCallback) throws android.telephony.ims.ImsException;
     method @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE) public void setUceSettingEnabled(boolean) throws android.telephony.ims.ImsException;
-    field public static final int ERROR_ALREADY_IN_QUEUE = 13; // 0xd
-    field public static final int ERROR_FORBIDDEN = 6; // 0x6
-    field public static final int ERROR_GENERIC_FAILURE = 1; // 0x1
-    field public static final int ERROR_INSUFFICIENT_MEMORY = 11; // 0xb
-    field public static final int ERROR_LOST_NETWORK = 12; // 0xc
-    field public static final int ERROR_NOT_AUTHORIZED = 5; // 0x5
-    field public static final int ERROR_NOT_AVAILABLE = 3; // 0x3
-    field public static final int ERROR_NOT_ENABLED = 2; // 0x2
-    field public static final int ERROR_NOT_FOUND = 7; // 0x7
-    field public static final int ERROR_NOT_REGISTERED = 4; // 0x4
-    field public static final int ERROR_REQUEST_TIMEOUT = 10; // 0xa
-    field public static final int ERROR_REQUEST_TOO_LARGE = 8; // 0x8
-    field public static final int PUBLISH_STATE_200_OK = 1; // 0x1
-    field public static final int PUBLISH_STATE_NOT_PUBLISHED = 2; // 0x2
-    field public static final int PUBLISH_STATE_OTHER_ERROR = 6; // 0x6
-    field public static final int PUBLISH_STATE_RCS_PROVISION_ERROR = 4; // 0x4
-    field public static final int PUBLISH_STATE_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int PUBLISH_STATE_VOLTE_PROVISION_ERROR = 3; // 0x3
-  }
-
-  public static class RcsUceAdapter.CapabilitiesCallback {
-    ctor public RcsUceAdapter.CapabilitiesCallback();
-    method public void onCapabilitiesReceived(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>);
-    method public void onError(int);
   }
 
 }
@@ -4344,23 +4450,8 @@
   public class RcsFeature extends android.telephony.ims.feature.ImsFeature {
     ctor public RcsFeature();
     method public void changeEnabledCapabilities(@NonNull android.telephony.ims.feature.CapabilityChangeRequest, @NonNull android.telephony.ims.feature.ImsFeature.CapabilityCallbackProxy);
-    method @NonNull public android.telephony.ims.stub.RcsSipOptionsImplBase getOptionsExchangeImpl();
-    method @NonNull public android.telephony.ims.stub.RcsPresenceExchangeImplBase getPresenceExchangeImpl();
-    method public final void notifyCapabilitiesStatusChanged(@NonNull android.telephony.ims.feature.RcsFeature.RcsImsCapabilities);
     method public void onFeatureReady();
     method public void onFeatureRemoved();
-    method public boolean queryCapabilityConfiguration(int, int);
-    method @NonNull public final android.telephony.ims.feature.RcsFeature.RcsImsCapabilities queryCapabilityStatus();
-  }
-
-  public static class RcsFeature.RcsImsCapabilities extends android.telephony.ims.feature.ImsFeature.Capabilities {
-    ctor public RcsFeature.RcsImsCapabilities(int);
-    method public void addCapabilities(int);
-    method public boolean isCapable(int);
-    method public void removeCapabilities(int);
-    field public static final int CAPABILITY_TYPE_NONE = 0; // 0x0
-    field public static final int CAPABILITY_TYPE_OPTIONS_UCE = 1; // 0x1
-    field public static final int CAPABILITY_TYPE_PRESENCE_UCE = 2; // 0x2
   }
 
 }
@@ -4538,71 +4629,6 @@
     field public static final int INVALID_RESULT = -1; // 0xffffffff
   }
 
-  public class RcsCapabilityExchange {
-    ctor public RcsCapabilityExchange();
-    method public final void onCommandUpdate(int, int) throws android.telephony.ims.ImsException;
-    field public static final int COMMAND_CODE_FETCH_ERROR = 4; // 0x4
-    field public static final int COMMAND_CODE_GENERIC_FAILURE = 2; // 0x2
-    field public static final int COMMAND_CODE_INSUFFICIENT_MEMORY = 6; // 0x6
-    field public static final int COMMAND_CODE_INVALID_PARAM = 3; // 0x3
-    field public static final int COMMAND_CODE_LOST_NETWORK_CONNECTION = 7; // 0x7
-    field public static final int COMMAND_CODE_NOT_FOUND = 9; // 0x9
-    field public static final int COMMAND_CODE_NOT_SUPPORTED = 8; // 0x8
-    field public static final int COMMAND_CODE_NO_CHANGE_IN_CAP = 11; // 0xb
-    field public static final int COMMAND_CODE_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int COMMAND_CODE_SERVICE_UNAVAILABLE = 10; // 0xa
-    field public static final int COMMAND_CODE_SERVICE_UNKNOWN = 0; // 0x0
-    field public static final int COMMAND_CODE_SUCCESS = 1; // 0x1
-  }
-
-  public class RcsPresenceExchangeImplBase extends android.telephony.ims.stub.RcsCapabilityExchange {
-    ctor public RcsPresenceExchangeImplBase();
-    method public final void onCapabilityRequestResponse(@NonNull java.util.List<android.telephony.ims.RcsContactUceCapability>, int) throws android.telephony.ims.ImsException;
-    method public final void onNetworkResponse(int, @NonNull String, int) throws android.telephony.ims.ImsException;
-    method public final void onNotifyUpdateCapabilites(int) throws android.telephony.ims.ImsException;
-    method public final void onUnpublish() throws android.telephony.ims.ImsException;
-    method public void requestCapabilities(@NonNull java.util.List<android.net.Uri>, int);
-    method public void updateCapabilities(@NonNull android.telephony.ims.RcsContactUceCapability, int);
-    field public static final int CAPABILITY_UPDATE_TRIGGER_ETAG_EXPIRED = 0; // 0x0
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_2G = 6; // 0x6
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_3G = 5; // 0x5
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_EHRPD = 3; // 0x3
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_HSPAPLUS = 4; // 0x4
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_IWLAN = 8; // 0x8
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_DISABLED = 1; // 0x1
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_LTE_VOPS_ENABLED = 2; // 0x2
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_DISABLED = 10; // 0xa
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_NR5G_VOPS_ENABLED = 11; // 0xb
-    field public static final int CAPABILITY_UPDATE_TRIGGER_MOVE_TO_WLAN = 7; // 0x7
-    field public static final int CAPABILITY_UPDATE_TRIGGER_UNKNOWN = 9; // 0x9
-    field public static final int RESPONSE_FORBIDDEN = 3; // 0x3
-    field public static final int RESPONSE_NOT_AUTHORIZED_FOR_PRESENCE = 2; // 0x2
-    field public static final int RESPONSE_NOT_FOUND = 4; // 0x4
-    field public static final int RESPONSE_NOT_REGISTERED = 1; // 0x1
-    field public static final int RESPONSE_SIP_INTERVAL_TOO_SHORT = 7; // 0x7
-    field public static final int RESPONSE_SIP_REQUEST_TIMEOUT = 5; // 0x5
-    field public static final int RESPONSE_SIP_SERVICE_UNAVAILABLE = 8; // 0x8
-    field public static final int RESPONSE_SUBSCRIBE_GENERIC_FAILURE = -1; // 0xffffffff
-    field public static final int RESPONSE_SUBSCRIBE_TOO_LARGE = 6; // 0x6
-    field public static final int RESPONSE_SUCCESS = 0; // 0x0
-  }
-
-  public class RcsSipOptionsImplBase extends android.telephony.ims.stub.RcsCapabilityExchange {
-    ctor public RcsSipOptionsImplBase();
-    method public final void onCapabilityRequestResponse(int, @NonNull String, @Nullable android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException;
-    method public final void onRemoteCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int) throws android.telephony.ims.ImsException;
-    method public void respondToCapabilityRequest(@NonNull String, @NonNull android.telephony.ims.RcsContactUceCapability, int);
-    method public void respondToCapabilityRequestWithError(@NonNull android.net.Uri, int, @NonNull String, int);
-    method public void sendCapabilityRequest(@NonNull android.net.Uri, @NonNull android.telephony.ims.RcsContactUceCapability, int);
-    field public static final int RESPONSE_BAD_REQUEST = 5; // 0x5
-    field public static final int RESPONSE_DOES_NOT_EXIST_ANYWHERE = 4; // 0x4
-    field public static final int RESPONSE_GENERIC_FAILURE = -1; // 0xffffffff
-    field public static final int RESPONSE_NOT_FOUND = 3; // 0x3
-    field public static final int RESPONSE_REQUEST_TIMEOUT = 2; // 0x2
-    field public static final int RESPONSE_SUCCESS = 0; // 0x0
-    field public static final int RESPONSE_TEMPORARILY_UNAVAILABLE = 1; // 0x1
-  }
-
 }
 
 package android.telephony.mbms {
@@ -4871,6 +4897,11 @@
     method public abstract String asyncImpl() default "";
   }
 
+  public class SurfaceControlViewHost {
+    method public void addView(@NonNull android.view.View, android.view.WindowManager.LayoutParams);
+    method public void relayout(android.view.WindowManager.LayoutParams);
+  }
+
   @UiThread public class View implements android.view.accessibility.AccessibilityEventSource android.graphics.drawable.Drawable.Callback android.view.KeyEvent.Callback {
     method public android.view.View getTooltipView();
     method public boolean isAutofilled();
diff --git a/cmds/bootanimation/Android.bp b/cmds/bootanimation/Android.bp
index 3e5877b..befb67b 100644
--- a/cmds/bootanimation/Android.bp
+++ b/cmds/bootanimation/Android.bp
@@ -41,6 +41,10 @@
     ],
 
     init_rc: ["bootanim.rc"],
+
+    cflags: [
+        "-Wno-deprecated-declarations",
+    ],
 }
 
 // libbootanimation
diff --git a/cmds/bootanimation/BootAnimation.cpp b/cmds/bootanimation/BootAnimation.cpp
index 520366f..a1278f3 100644
--- a/cmds/bootanimation/BootAnimation.cpp
+++ b/cmds/bootanimation/BootAnimation.cpp
@@ -42,10 +42,10 @@
 
 #include <android-base/properties.h>
 
+#include <ui/DisplayConfig.h>
 #include <ui/PixelFormat.h>
 #include <ui/Rect.h>
 #include <ui/Region.h>
-#include <ui/DisplayInfo.h>
 
 #include <gui/ISurfaceComposer.h>
 #include <gui/Surface.h>
@@ -283,16 +283,19 @@
 
     mDisplayToken = SurfaceComposerClient::getInternalDisplayToken();
     if (mDisplayToken == nullptr)
-        return -1;
+        return NAME_NOT_FOUND;
 
-    DisplayInfo dinfo;
-    status_t status = SurfaceComposerClient::getDisplayInfo(mDisplayToken, &dinfo);
-    if (status)
-        return -1;
+    DisplayConfig displayConfig;
+    const status_t error =
+            SurfaceComposerClient::getActiveDisplayConfig(mDisplayToken, &displayConfig);
+    if (error != NO_ERROR)
+        return error;
+
+    const ui::Size& resolution = displayConfig.resolution;
 
     // create the native surface
     sp<SurfaceControl> control = session()->createSurface(String8("BootAnimation"),
-            dinfo.w, dinfo.h, PIXEL_FORMAT_RGB_565);
+            resolution.getWidth(), resolution.getHeight(), PIXEL_FORMAT_RGB_565);
 
     SurfaceComposerClient::Transaction t;
 
diff --git a/cmds/idmap2/idmap2/Lookup.cpp b/cmds/idmap2/idmap2/Lookup.cpp
index c5cf980..c441709 100644
--- a/cmds/idmap2/idmap2/Lookup.cpp
+++ b/cmds/idmap2/idmap2/Lookup.cpp
@@ -85,11 +85,42 @@
   return Error("failed to obtain resource id for %s", res.c_str());
 }
 
-Result<std::string> WARN_UNUSED GetValue(const AssetManager2& am, ResourceId resid) {
+void PrintValue(AssetManager2* const am, const Res_value& value, const ApkAssetsCookie& cookie,
+                std::string* const out) {
+  switch (value.dataType) {
+    case Res_value::TYPE_INT_DEC:
+      out->append(StringPrintf("%d", value.data));
+      break;
+    case Res_value::TYPE_INT_HEX:
+      out->append(StringPrintf("0x%08x", value.data));
+      break;
+    case Res_value::TYPE_INT_BOOLEAN:
+      out->append(value.data != 0 ? "true" : "false");
+      break;
+    case Res_value::TYPE_STRING: {
+      const ResStringPool* pool = am->GetStringPoolForCookie(cookie);
+      out->append("\"");
+      size_t len;
+      if (pool->isUTF8()) {
+        const char* str = pool->string8At(value.data, &len);
+        out->append(str, len);
+      } else {
+        const char16_t* str16 = pool->stringAt(value.data, &len);
+        out->append(Utf16ToUtf8(StringPiece16(str16, len)));
+      }
+      out->append("\"");
+    } break;
+    default:
+      out->append(StringPrintf("dataType=0x%02x data=0x%08x", value.dataType, value.data));
+      break;
+  }
+}
+
+Result<std::string> WARN_UNUSED GetValue(AssetManager2* const am, ResourceId resid) {
   Res_value value;
   ResTable_config config;
   uint32_t flags;
-  ApkAssetsCookie cookie = am.GetResource(resid, false, 0, &value, &config, &flags);
+  ApkAssetsCookie cookie = am->GetResource(resid, true, 0, &value, &config, &flags);
   if (cookie == kInvalidCookie) {
     return Error("no resource 0x%08x in asset manager", resid);
   }
@@ -104,31 +135,37 @@
   out.append(config.toString().c_str());
   out.append("' value=");
 
-  switch (value.dataType) {
-    case Res_value::TYPE_INT_DEC:
-      out.append(StringPrintf("%d", value.data));
-      break;
-    case Res_value::TYPE_INT_HEX:
-      out.append(StringPrintf("0x%08x", value.data));
-      break;
-    case Res_value::TYPE_INT_BOOLEAN:
-      out.append(value.data != 0 ? "true" : "false");
-      break;
-    case Res_value::TYPE_STRING: {
-      const ResStringPool* pool = am.GetStringPoolForCookie(cookie);
-      size_t len;
-      if (pool->isUTF8()) {
-        const char* str = pool->string8At(value.data, &len);
-        out.append(str, len);
-      } else {
-        const char16_t* str16 = pool->stringAt(value.data, &len);
-        out += Utf16ToUtf8(StringPiece16(str16, len));
-      }
-    } break;
-    default:
+  if (value.dataType == Res_value::TYPE_REFERENCE) {
+    const android::ResolvedBag* bag = am->GetBag(static_cast<uint32_t>(value.data));
+    if (bag == nullptr) {
       out.append(StringPrintf("dataType=0x%02x data=0x%08x", value.dataType, value.data));
-      break;
+      return out;
+    }
+    out.append("[");
+    Res_value bag_val;
+    ResTable_config selected_config;
+    uint32_t flags;
+    uint32_t ref;
+    ApkAssetsCookie bag_cookie;
+    for (size_t i = 0; i < bag->entry_count; ++i) {
+      const android::ResolvedBag::Entry& entry = bag->entries[i];
+      bag_val = entry.value;
+      bag_cookie = am->ResolveReference(entry.cookie, &bag_val, &selected_config, &flags, &ref);
+      if (bag_cookie == kInvalidCookie) {
+        out.append(
+            StringPrintf("Error: dataType=0x%02x data=0x%08x", bag_val.dataType, bag_val.data));
+        continue;
+      }
+      PrintValue(am, bag_val, bag_cookie, &out);
+      if (i != bag->entry_count - 1) {
+        out.append(", ");
+      }
+    }
+    out.append("]");
+  } else {
+    PrintValue(am, value, cookie, &out);
   }
+
   return out;
 }
 
@@ -212,7 +249,7 @@
     return Error(resid.GetError(), "failed to parse resource ID");
   }
 
-  const Result<std::string> value = GetValue(am, *resid);
+  const Result<std::string> value = GetValue(&am, *resid);
   if (!value) {
     return Error(value.GetError(), "resource 0x%08x not found", *resid);
   }
diff --git a/cmds/idmap2/include/idmap2/ResourceUtils.h b/cmds/idmap2/include/idmap2/ResourceUtils.h
index de1dbc9..c643b0e 100644
--- a/cmds/idmap2/include/idmap2/ResourceUtils.h
+++ b/cmds/idmap2/include/idmap2/ResourceUtils.h
@@ -37,6 +37,10 @@
 
 namespace utils {
 
+// Returns whether the Res_value::data_type represents a dynamic or regular resource reference.
+bool IsReference(uint8_t data_type);
+
+// Converts the Res_value::data_type to a human-readable string representation.
 StringPiece DataTypeToString(uint8_t data_type);
 
 struct OverlayManifestInfo {
diff --git a/cmds/idmap2/libidmap2/ResourceMapping.cpp b/cmds/idmap2/libidmap2/ResourceMapping.cpp
index 4074789..43cfec3f 100644
--- a/cmds/idmap2/libidmap2/ResourceMapping.cpp
+++ b/cmds/idmap2/libidmap2/ResourceMapping.cpp
@@ -27,6 +27,7 @@
 #include "idmap2/ResourceUtils.h"
 
 using android::base::StringPrintf;
+using android::idmap2::utils::IsReference;
 using android::idmap2::utils::ResToTypeEntryName;
 
 namespace android::idmap2 {
@@ -200,8 +201,7 @@
     // Only rewrite resources defined within the overlay package to their corresponding target
     // resource ids at runtime.
     bool rewrite_overlay_reference =
-        (overlay_resource->dataType == Res_value::TYPE_REFERENCE ||
-         overlay_resource->dataType == Res_value::TYPE_DYNAMIC_REFERENCE)
+        IsReference(overlay_resource->dataType)
             ? overlay_package_id == EXTRACT_PACKAGE(overlay_resource->data)
             : false;
 
@@ -331,8 +331,13 @@
   std::unique_ptr<uint8_t[]> string_pool_data;
   Result<ResourceMapping> resource_mapping = {{}};
   if (overlay_info.resource_mapping != 0U) {
+    // Use the dynamic reference table to find the assigned resource id of the map xml.
+    const auto& ref_table = overlay_asset_manager.GetDynamicRefTableForCookie(0);
+    uint32_t resource_mapping_id = overlay_info.resource_mapping;
+    ref_table->lookupResourceId(&resource_mapping_id);
+
     // Load the overlay resource mappings from the file specified using android:resourcesMap.
-    auto asset = OpenNonAssetFromResource(overlay_info.resource_mapping, overlay_asset_manager);
+    auto asset = OpenNonAssetFromResource(resource_mapping_id, overlay_asset_manager);
     if (!asset) {
       return Error("failed opening xml for android:resourcesMap: %s",
                    asset.GetErrorMessage().c_str());
@@ -404,8 +409,7 @@
 
   target_map_.insert(std::make_pair(target_resource, TargetValue{data_type, data_value}));
 
-  if (rewrite_overlay_reference &&
-      (data_type == Res_value::TYPE_REFERENCE || data_type == Res_value::TYPE_DYNAMIC_REFERENCE)) {
+  if (rewrite_overlay_reference && IsReference(data_type)) {
     overlay_map_.insert(std::make_pair(data_value, target_resource));
   }
 
@@ -421,8 +425,7 @@
   const TargetValue value = target_iter->second;
   target_map_.erase(target_iter);
 
-  if (value.data_type != Res_value::TYPE_REFERENCE &&
-      value.data_type != Res_value::TYPE_DYNAMIC_REFERENCE) {
+  if (!IsReference(value.data_type)) {
     return;
   }
 
diff --git a/cmds/idmap2/libidmap2/ResourceUtils.cpp b/cmds/idmap2/libidmap2/ResourceUtils.cpp
index a5df746..98d026b 100644
--- a/cmds/idmap2/libidmap2/ResourceUtils.cpp
+++ b/cmds/idmap2/libidmap2/ResourceUtils.cpp
@@ -33,6 +33,10 @@
 
 namespace android::idmap2::utils {
 
+bool IsReference(uint8_t data_type) {
+  return data_type == Res_value::TYPE_REFERENCE || data_type == Res_value::TYPE_DYNAMIC_REFERENCE;
+}
+
 StringPiece DataTypeToString(uint8_t data_type) {
   switch (data_type) {
     case Res_value::TYPE_NULL:
@@ -133,7 +137,7 @@
   }
 
   if (auto result_value = overlay_it->GetAttributeValue("resourcesMap")) {
-    if ((*result_value).dataType == Res_value::TYPE_REFERENCE) {
+    if (IsReference((*result_value).dataType)) {
       info.resource_mapping = (*result_value).data;
     } else {
       return Error("android:resourcesMap is not a reference in AndroidManifest.xml of %s",
diff --git a/cmds/idmap2/tests/FileUtilsTests.cpp b/cmds/idmap2/tests/FileUtilsTests.cpp
index f55acee..8af4037 100644
--- a/cmds/idmap2/tests/FileUtilsTests.cpp
+++ b/cmds/idmap2/tests/FileUtilsTests.cpp
@@ -56,12 +56,12 @@
     return type == DT_REG && path.size() > 4 && path.compare(path.size() - 4, 4, ".apk") == 0;
   });
   ASSERT_THAT(v, NotNull());
-  ASSERT_EQ(v->size(), 10U);
+  ASSERT_EQ(v->size(), 11U);
   ASSERT_EQ(std::set<std::string>(v->begin(), v->end()),
             std::set<std::string>(
                 {root + "/target/target.apk", root + "/target/target-no-overlayable.apk",
                  root + "/overlay/overlay.apk", root + "/overlay/overlay-no-name.apk",
-                 root + "/overlay/overlay-no-name-static.apk",
+                 root + "/overlay/overlay-no-name-static.apk", root + "/overlay/overlay-shared.apk",
                  root + "/overlay/overlay-static-1.apk", root + "/overlay/overlay-static-2.apk",
                  root + "/signature-overlay/signature-overlay.apk",
                  root + "/system-overlay/system-overlay.apk",
diff --git a/cmds/idmap2/tests/IdmapTests.cpp b/cmds/idmap2/tests/IdmapTests.cpp
index 4bc6255..a2c1560 100644
--- a/cmds/idmap2/tests/IdmapTests.cpp
+++ b/cmds/idmap2/tests/IdmapTests.cpp
@@ -247,6 +247,43 @@
   ASSERT_OVERLAY_ENTRY(overlay_entries[3], 0x7f020002, 0x7f02000f);
 }
 
+TEST(IdmapTests, CreateIdmapDataFromApkAssetsSharedLibOverlay) {
+  std::string target_apk_path = GetTestDataPath() + "/target/target.apk";
+  std::string overlay_apk_path = GetTestDataPath() + "/overlay/overlay-shared.apk";
+
+  std::unique_ptr<const ApkAssets> target_apk = ApkAssets::Load(target_apk_path);
+  ASSERT_THAT(target_apk, NotNull());
+
+  std::unique_ptr<const ApkAssets> overlay_apk = ApkAssets::Load(overlay_apk_path);
+  ASSERT_THAT(overlay_apk, NotNull());
+
+  auto idmap_result = Idmap::FromApkAssets(*target_apk, *overlay_apk, PolicyFlags::POLICY_PUBLIC,
+                                           /* enforce_overlayable */ true);
+  ASSERT_TRUE(idmap_result) << idmap_result.GetErrorMessage();
+  auto& idmap = *idmap_result;
+  ASSERT_THAT(idmap, NotNull());
+
+  const std::vector<std::unique_ptr<const IdmapData>>& dataBlocks = idmap->GetData();
+  ASSERT_EQ(dataBlocks.size(), 1U);
+
+  const std::unique_ptr<const IdmapData>& data = dataBlocks[0];
+  ASSERT_THAT(data, NotNull());
+
+  const auto& target_entries = data->GetTargetEntries();
+  ASSERT_EQ(target_entries.size(), 4U);
+  ASSERT_TARGET_ENTRY(target_entries[0], 0x7f010000, Res_value::TYPE_DYNAMIC_REFERENCE, 0x00010000);
+  ASSERT_TARGET_ENTRY(target_entries[1], 0x7f02000c, Res_value::TYPE_DYNAMIC_REFERENCE, 0x00020000);
+  ASSERT_TARGET_ENTRY(target_entries[2], 0x7f02000e, Res_value::TYPE_DYNAMIC_REFERENCE, 0x00020001);
+  ASSERT_TARGET_ENTRY(target_entries[3], 0x7f02000f, Res_value::TYPE_DYNAMIC_REFERENCE, 0x00020002);
+
+  const auto& overlay_entries = data->GetOverlayEntries();
+  ASSERT_EQ(target_entries.size(), 4U);
+  ASSERT_OVERLAY_ENTRY(overlay_entries[0], 0x00010000, 0x7f010000);
+  ASSERT_OVERLAY_ENTRY(overlay_entries[1], 0x00020000, 0x7f02000c);
+  ASSERT_OVERLAY_ENTRY(overlay_entries[2], 0x00020001, 0x7f02000e);
+  ASSERT_OVERLAY_ENTRY(overlay_entries[3], 0x00020002, 0x7f02000f);
+}
+
 TEST(IdmapTests, CreateIdmapDataDoNotRewriteNonOverlayResourceId) {
   OverlayManifestInfo info{};
   info.target_package = "test.target";
diff --git a/cmds/idmap2/tests/data/overlay/build b/cmds/idmap2/tests/data/overlay/build
index b921b0d..114b099 100755
--- a/cmds/idmap2/tests/data/overlay/build
+++ b/cmds/idmap2/tests/data/overlay/build
@@ -51,4 +51,12 @@
     -o overlay-static-2.apk \
     compiled.flata
 
+aapt2 link \
+    --no-resource-removal \
+    --shared-lib \
+    -I "$FRAMEWORK_RES_APK" \
+    --manifest AndroidManifest.xml \
+    -o overlay-shared.apk \
+    compiled.flata
+
 rm compiled.flata
diff --git a/cmds/idmap2/tests/data/overlay/overlay-shared.apk b/cmds/idmap2/tests/data/overlay/overlay-shared.apk
new file mode 100644
index 0000000..93dcc82
--- /dev/null
+++ b/cmds/idmap2/tests/data/overlay/overlay-shared.apk
Binary files differ
diff --git a/cmds/incident/Android.bp b/cmds/incident/Android.bp
index 9e9dac1..94855aa 100644
--- a/cmds/incident/Android.bp
+++ b/cmds/incident/Android.bp
@@ -26,7 +26,7 @@
         "libcutils",
         "liblog",
         "libutils",
-        "libincident",
+        "libincidentpriv",
     ],
 
     static_libs: [
diff --git a/cmds/incident_helper/Android.bp b/cmds/incident_helper/Android.bp
index 64f4c66..f07743e 100644
--- a/cmds/incident_helper/Android.bp
+++ b/cmds/incident_helper/Android.bp
@@ -44,7 +44,7 @@
         "src/ih_util.cpp",
     ],
 
-    generated_headers: ["gen-platform-proto-constants"],
+    generated_headers: ["framework-cppstream-protos"],
 
     shared_libs: [
         "libbase",
diff --git a/cmds/incidentd/Android.bp b/cmds/incidentd/Android.bp
index 25e0328..c47526a 100644
--- a/cmds/incidentd/Android.bp
+++ b/cmds/incidentd/Android.bp
@@ -43,7 +43,7 @@
     ],
 
     local_include_dirs: ["src"],
-    generated_headers: ["gen-platform-proto-constants"],
+    generated_headers: ["framework-cppstream-protos"],
 
     proto: {
         type: "lite",
@@ -54,7 +54,7 @@
         "libbinder",
         "libdebuggerd_client",
         "libdumputils",
-        "libincident",
+        "libincidentpriv",
         "liblog",
         "libprotoutil",
         "libservices",
@@ -98,7 +98,7 @@
     ],
 
     local_include_dirs: ["src"],
-    generated_headers: ["gen-platform-proto-constants"],
+    generated_headers: ["framework-cppstream-protos"],
 
     srcs: [
         "tests/**/*.cpp",
@@ -128,7 +128,7 @@
         "libbinder",
         "libdebuggerd_client",
         "libdumputils",
-        "libincident",
+        "libincidentpriv",
         "liblog",
         "libprotobuf-cpp-full",
         "libprotoutil",
diff --git a/cmds/statsd/Android.bp b/cmds/statsd/Android.bp
index ac24a55..956fd29 100644
--- a/cmds/statsd/Android.bp
+++ b/cmds/statsd/Android.bp
@@ -44,12 +44,8 @@
 
 cc_defaults {
     name: "statsd_defaults",
-    aidl: {
-        include_dirs: ["frameworks/base/core/java"],
-    },
 
     srcs: [
-        ":statsd_aidl",
         "src/active_config_list.proto",
         "src/anomaly/AlarmMonitor.cpp",
         "src/anomaly/AlarmTracker.cpp",
@@ -64,16 +60,13 @@
         "src/config/ConfigKey.cpp",
         "src/config/ConfigListener.cpp",
         "src/config/ConfigManager.cpp",
-        "src/external/GpuStatsPuller.cpp",
+        "src/experiment_ids.proto",
         "src/external/Perfetto.cpp",
-        "src/external/PowerStatsPuller.cpp",
         "src/external/PullResultReceiver.cpp",
         "src/external/puller_util.cpp",
-        "src/external/ResourceHealthManagerPuller.cpp",
         "src/external/StatsCallbackPuller.cpp",
         "src/external/StatsPuller.cpp",
         "src/external/StatsPullerManager.cpp",
-        "src/external/SubsystemSleepStatePuller.cpp",
         "src/external/TrainInfoPuller.cpp",
         "src/FieldValue.cpp",
         "src/guardrail/StatsdStats.cpp",
@@ -113,7 +106,7 @@
     ],
 
     cflags: [
-        // "-DNEW_ENCODING_SCHEME",
+        "-DNEW_ENCODING_SCHEME",
     ],
 
     local_include_dirs: [
@@ -121,29 +114,20 @@
     ],
 
     static_libs: [
-        "android.frameworks.stats@1.0",
-        "android.hardware.power.stats@1.0",
-        "android.hardware.power@1.0",
-        "android.hardware.power@1.1",
         "libbase",
         "libcutils",
-        "libhealthhalutils",
-        "liblog",
-        "libplatformprotos",
         "libprotoutil",
         "libstatslog",
-        "libstatssocket",
+        "libstatsmetadata",
         "libsysutils",
+        "libutils",
     ],
     shared_libs: [
-        "android.hardware.health@2.0",
         "libbinder",
-        "libgraphicsenv",
-        "libhidlbase",
         "libincident",
-        "libservices",
-        "libstatsmetadata",
-        "libutils",
+        "liblog",
+        "libstatssocket",
+        "statsd-aidl-cpp",
     ],
 }
 
@@ -169,7 +153,7 @@
     ],
 }
 
-cc_library_shared {
+cc_library_static {
     name: "libstatsmetadata",
     host_supported: true,
     generated_sources: [
@@ -232,8 +216,6 @@
 
     shared_libs: ["libgtest_prod"],
 
-    vintf_fragments: ["android.frameworks.stats@1.0-service.xml"],
-
     init_rc: ["statsd.rc"],
 }
 
@@ -286,8 +268,6 @@
         "tests/e2e/PartialBucket_e2e_test.cpp",
         "tests/e2e/ValueMetric_pull_e2e_test.cpp",
         "tests/e2e/WakelockDuration_e2e_test.cpp",
-        "tests/external/GpuStatsPuller_test.cpp",
-        "tests/external/IncidentReportArgs_test.cpp",
         "tests/external/puller_util_test.cpp",
         "tests/external/StatsCallbackPuller_test.cpp",
         "tests/external/StatsPuller_test.cpp",
diff --git a/cmds/statsd/android.frameworks.stats@1.0-service.xml b/cmds/statsd/android.frameworks.stats@1.0-service.xml
deleted file mode 100644
index bb02f66..0000000
--- a/cmds/statsd/android.frameworks.stats@1.0-service.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<manifest version="1.0" type="framework">
-    <hal>
-        <name>android.frameworks.stats</name>
-        <transport>hwbinder</transport>
-        <version>1.0</version>
-        <interface>
-            <name>IStats</name>
-            <instance>default</instance>
-        </interface>
-    </hal>
-</manifest>
diff --git a/cmds/statsd/benchmark/log_event_benchmark.cpp b/cmds/statsd/benchmark/log_event_benchmark.cpp
index bdfdb2e..8b68743 100644
--- a/cmds/statsd/benchmark/log_event_benchmark.cpp
+++ b/cmds/statsd/benchmark/log_event_benchmark.cpp
@@ -23,14 +23,14 @@
 namespace statsd {
 
 static size_t createAndParseStatsEvent(uint8_t* msg) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
-    stats_event_write_int32(event, 2);
-    stats_event_write_float(event, 2.0);
-    stats_event_build(event);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
+    AStatsEvent_writeInt32(event, 2);
+    AStatsEvent_writeFloat(event, 2.0);
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
     memcpy(msg, buf, size);
     return size;
 }
@@ -39,7 +39,7 @@
     uint8_t msg[LOGGER_ENTRY_MAX_PAYLOAD];
     size_t size = createAndParseStatsEvent(msg);
     while (state.KeepRunning()) {
-        benchmark::DoNotOptimize(LogEvent(msg, size, /*uid=*/ 1000));
+        benchmark::DoNotOptimize(LogEvent(msg, size, /*uid=*/ 1000, /*pid=*/ 1001));
     }
 }
 BENCHMARK(BM_LogEventCreation);
diff --git a/cmds/statsd/src/HashableDimensionKey.cpp b/cmds/statsd/src/HashableDimensionKey.cpp
index 109785f..6b9d0e4 100644
--- a/cmds/statsd/src/HashableDimensionKey.cpp
+++ b/cmds/statsd/src/HashableDimensionKey.cpp
@@ -16,8 +16,6 @@
 #define DEBUG false  // STOPSHIP if true
 #include "Log.h"
 
-#include <mutex>
-
 #include "HashableDimensionKey.h"
 #include "FieldValue.h"
 
@@ -28,6 +26,86 @@
 using std::string;
 using std::vector;
 
+// These constants must be kept in sync with those in StatsDimensionsValue.java
+const static int STATS_DIMENSIONS_VALUE_STRING_TYPE = 2;
+const static int STATS_DIMENSIONS_VALUE_INT_TYPE = 3;
+const static int STATS_DIMENSIONS_VALUE_LONG_TYPE = 4;
+// const static int STATS_DIMENSIONS_VALUE_BOOL_TYPE = 5; (commented out because
+// unused -- statsd does not correctly support bool types)
+const static int STATS_DIMENSIONS_VALUE_FLOAT_TYPE = 6;
+const static int STATS_DIMENSIONS_VALUE_TUPLE_TYPE = 7;
+
+/**
+ * Recursive helper function that populates a parent StatsDimensionsValueParcel
+ * with children StatsDimensionsValueParcels.
+ *
+ * \param dims vector of FieldValues stored by HashableDimensionKey
+ * \param index positions in dims vector to start reading children from
+ * \param depth level of parent parcel in the full StatsDimensionsValueParcel
+ * tree
+ */
+static void populateStatsDimensionsValueParcelChildren(StatsDimensionsValueParcel &parentParcel,
+                                                const vector<FieldValue>& dims, size_t& index,
+                                                int depth, int prefix) {
+    while (index < dims.size()) {
+        const FieldValue& dim = dims[index];
+        int fieldDepth = dim.mField.getDepth();
+        int fieldPrefix = dim.mField.getPrefix(depth);
+        StatsDimensionsValueParcel childParcel;
+        childParcel.field = dim.mField.getPosAtDepth(depth);
+        if (depth > 2) {
+            ALOGE("Depth > 2 not supported by StatsDimensionsValueParcel.");
+            return;
+        }
+        if (depth == fieldDepth && prefix == fieldPrefix) {
+            switch (dim.mValue.getType()) {
+                case INT:
+                    childParcel.valueType = STATS_DIMENSIONS_VALUE_INT_TYPE;
+                    childParcel.intValue = dim.mValue.int_value;
+                    break;
+                case LONG:
+                    childParcel.valueType = STATS_DIMENSIONS_VALUE_LONG_TYPE;
+                    childParcel.longValue = dim.mValue.long_value;
+                    break;
+                case FLOAT:
+                    childParcel.valueType = STATS_DIMENSIONS_VALUE_FLOAT_TYPE;
+                    childParcel.floatValue = dim.mValue.float_value;
+                    break;
+                case STRING:
+                    childParcel.valueType = STATS_DIMENSIONS_VALUE_STRING_TYPE;
+                    childParcel.stringValue = String16(dim.mValue.str_value.c_str());
+                    break;
+                default:
+                    ALOGE("Encountered FieldValue with unsupported value type.");
+                    break;
+            }
+            index++;
+            parentParcel.tupleValue.push_back(childParcel);
+        } else if (fieldDepth > depth && fieldPrefix == prefix) {
+            childParcel.valueType = STATS_DIMENSIONS_VALUE_TUPLE_TYPE;
+            populateStatsDimensionsValueParcelChildren(childParcel, dims, index, depth + 1,
+                                                       dim.mField.getPrefix(depth + 1));
+            parentParcel.tupleValue.push_back(childParcel);
+        } else {
+            return;
+        }
+    }
+}
+
+StatsDimensionsValueParcel HashableDimensionKey::toStatsDimensionsValueParcel() const {
+    StatsDimensionsValueParcel parcel;
+    if (mValues.size() == 0) {
+        return parcel;
+    }
+
+    parcel.field = mValues[0].mField.getTag();
+    parcel.valueType = STATS_DIMENSIONS_VALUE_TUPLE_TYPE;
+
+    size_t index = 0;
+    populateStatsDimensionsValueParcelChildren(parcel, mValues, index, /*depth=*/0, /*prefix=*/0);
+    return parcel;
+}
+
 android::hash_t hashDimension(const HashableDimensionKey& value) {
     android::hash_t hash = 0;
     for (const auto& fieldValue : value.getValues()) {
diff --git a/cmds/statsd/src/HashableDimensionKey.h b/cmds/statsd/src/HashableDimensionKey.h
index 654e135..4adcf96 100644
--- a/cmds/statsd/src/HashableDimensionKey.h
+++ b/cmds/statsd/src/HashableDimensionKey.h
@@ -16,10 +16,11 @@
 
 #pragma once
 
+#include <android/os/StatsDimensionsValueParcel.h>
 #include <utils/JenkinsHash.h>
 #include <vector>
-#include "FieldValue.h"
 #include "android-base/stringprintf.h"
+#include "FieldValue.h"
 #include "logd/LogEvent.h"
 
 namespace android {
@@ -69,6 +70,8 @@
         return nullptr;
     }
 
+    StatsDimensionsValueParcel toStatsDimensionsValueParcel() const;
+
     std::string toString() const;
 
     bool operator!=(const HashableDimensionKey& that) const;
diff --git a/cmds/statsd/src/StatsLogProcessor.cpp b/cmds/statsd/src/StatsLogProcessor.cpp
index 3481814..6e7f081 100644
--- a/cmds/statsd/src/StatsLogProcessor.cpp
+++ b/cmds/statsd/src/StatsLogProcessor.cpp
@@ -20,17 +20,17 @@
 #include "StatsLogProcessor.h"
 
 #include <android-base/file.h>
-#include <dirent.h>
+#include <cutils/multiuser.h>
 #include <frameworks/base/cmds/statsd/src/active_config_list.pb.h>
-#include <log/log_event_list.h>
-#include <utils/Errors.h>
-#include <utils/SystemClock.h>
+#include <frameworks/base/cmds/statsd/src/experiment_ids.pb.h>
 
 #include "android-base/stringprintf.h"
 #include "atoms_info.h"
 #include "external/StatsPullerManager.h"
 #include "guardrail/StatsdStats.h"
+#include "logd/LogEvent.h"
 #include "metrics/CountMetricProducer.h"
+#include "StatsService.h"
 #include "state/StateManager.h"
 #include "stats_log_util.h"
 #include "stats_util.h"
@@ -47,8 +47,6 @@
 using android::util::FIELD_TYPE_MESSAGE;
 using android::util::FIELD_TYPE_STRING;
 using android::util::ProtoOutputStream;
-using std::make_unique;
-using std::unique_ptr;
 using std::vector;
 
 namespace android {
@@ -74,6 +72,10 @@
 // for ActiveConfigList
 const int FIELD_ID_ACTIVE_CONFIG_LIST_CONFIG = 1;
 
+// for permissions checks
+constexpr const char* kPermissionDump = "android.permission.DUMP";
+constexpr const char* kPermissionUsage = "android.permission.PACKAGE_USAGE_STATS";
+
 #define NS_PER_HOUR 3600 * NS_PER_SEC
 
 #define STATS_ACTIVE_METRIC_DIR "/data/misc/stats-active-metric"
@@ -187,6 +189,196 @@
     }
 }
 
+void StatsLogProcessor::onBinaryPushStateChangedEventLocked(LogEvent* event) {
+    pid_t pid = event->GetPid();
+    uid_t uid = event->GetUid();
+    if (!checkPermissionForIds(kPermissionDump, pid, uid) ||
+        !checkPermissionForIds(kPermissionUsage, pid, uid)) {
+        return;
+    }
+    // The Get* functions don't modify the status on success, they only write in
+    // failure statuses, so we can use one status variable for all calls then
+    // check if it is no longer NO_ERROR.
+    status_t err = NO_ERROR;
+    InstallTrainInfo trainInfo;
+    trainInfo.trainName = string(event->GetString(1 /*train name field id*/, &err));
+    trainInfo.trainVersionCode = event->GetLong(2 /*train version field id*/, &err);
+    trainInfo.requiresStaging = event->GetBool(3 /*requires staging field id*/, &err);
+    trainInfo.rollbackEnabled = event->GetBool(4 /*rollback enabled field id*/, &err);
+    trainInfo.requiresLowLatencyMonitor =
+            event->GetBool(5 /*requires low latency monitor field id*/, &err);
+    trainInfo.status = int32_t(event->GetLong(6 /*state field id*/, &err));
+#ifdef NEW_ENCODING_SCHEME
+    std::vector<uint8_t> trainExperimentIdBytes =
+            event->GetStorage(7 /*experiment ids field id*/, &err);
+#else
+    string trainExperimentIdString = event->GetString(7 /*experiment ids field id*/, &err);
+#endif
+    bool is_rollback = event->GetBool(10 /*is rollback field id*/, &err);
+
+    if (err != NO_ERROR) {
+        ALOGE("Failed to parse fields in binary push state changed log event");
+        return;
+    }
+    ExperimentIds trainExperimentIds;
+#ifdef NEW_ENCODING_SCHEME
+    if (!trainExperimentIds.ParseFromArray(trainExperimentIdBytes.data(),
+                                           trainExperimentIdBytes.size())) {
+#else
+    if (!trainExperimentIds.ParseFromString(trainExperimentIdString)) {
+#endif
+        ALOGE("Failed to parse experimentids in binary push state changed.");
+        return;
+    }
+    trainInfo.experimentIds = {trainExperimentIds.experiment_id().begin(),
+                               trainExperimentIds.experiment_id().end()};
+
+    // Update the train info on disk and get any data the logevent is missing.
+    getAndUpdateTrainInfoOnDisk(is_rollback, &trainInfo);
+
+    std::vector<uint8_t> trainExperimentIdProto;
+    writeExperimentIdsToProto(trainInfo.experimentIds, &trainExperimentIdProto);
+    int32_t userId = multiuser_get_user_id(uid);
+
+    event->updateValue(2 /*train version field id*/, trainInfo.trainVersionCode, LONG);
+#ifdef NEW_ENCODING_SCHEME
+    event->updateValue(7 /*experiment ids field id*/, trainExperimentIdProto, STORAGE);
+#else
+    event->updateValue(7 /*experiment ids field id*/, trainExperimentIdProto, STRING);
+#endif
+    event->updateValue(8 /*user id field id*/, userId, INT);
+
+    if (is_rollback) {
+        int bit = trainInfo.requiresStaging ? 1 : 0;
+        event->updateValue(3 /*requires staging field id*/, bit, INT);
+        bit = trainInfo.rollbackEnabled ? 1 : 0;
+        event->updateValue(4 /*rollback enabled field id*/, bit, INT);
+        bit = trainInfo.requiresLowLatencyMonitor ? 1 : 0;
+        event->updateValue(5 /*requires low latency monitor field id*/, bit, INT);
+    }
+}
+
+void StatsLogProcessor::getAndUpdateTrainInfoOnDisk(bool is_rollback,
+                                                    InstallTrainInfo* trainInfo) {
+    // If the train name is empty, we don't know which train to attribute the
+    // event to, so return early.
+    if (trainInfo->trainName.empty()) {
+        return;
+    }
+    bool readTrainInfoSuccess = false;
+    InstallTrainInfo trainInfoOnDisk;
+    readTrainInfoSuccess = StorageManager::readTrainInfo(trainInfo->trainName, trainInfoOnDisk);
+
+    bool resetExperimentIds = false;
+    if (readTrainInfoSuccess) {
+        // Keep the old train version if we received an empty version.
+        if (trainInfo->trainVersionCode == -1) {
+            trainInfo->trainVersionCode = trainInfoOnDisk.trainVersionCode;
+        } else if (trainInfo->trainVersionCode != trainInfoOnDisk.trainVersionCode) {
+            // Reset experiment ids if we receive a new non-empty train version.
+            resetExperimentIds = true;
+        }
+
+        // Reset if we received a different experiment id.
+        if (!trainInfo->experimentIds.empty() &&
+            (trainInfoOnDisk.experimentIds.empty() ||
+             trainInfo->experimentIds.at(0) != trainInfoOnDisk.experimentIds[0])) {
+            resetExperimentIds = true;
+        }
+    }
+
+    // Find the right experiment IDs
+    if ((!resetExperimentIds || is_rollback) && readTrainInfoSuccess) {
+        trainInfo->experimentIds = trainInfoOnDisk.experimentIds;
+    }
+
+    if (!trainInfo->experimentIds.empty()) {
+        int64_t firstId = trainInfo->experimentIds.at(0);
+        switch (trainInfo->status) {
+            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALL_SUCCESS:
+                trainInfo->experimentIds.push_back(firstId + 1);
+                break;
+            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALLER_ROLLBACK_INITIATED:
+                trainInfo->experimentIds.push_back(firstId + 2);
+                break;
+            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALLER_ROLLBACK_SUCCESS:
+                trainInfo->experimentIds.push_back(firstId + 3);
+                break;
+        }
+    }
+
+    if (is_rollback) {
+        trainInfo->requiresStaging = trainInfoOnDisk.requiresStaging;
+        trainInfo->rollbackEnabled = trainInfoOnDisk.rollbackEnabled;
+        trainInfo->requiresLowLatencyMonitor = trainInfoOnDisk.requiresLowLatencyMonitor;
+    }
+
+    StorageManager::writeTrainInfo(*trainInfo);
+}
+
+void StatsLogProcessor::onWatchdogRollbackOccurredLocked(LogEvent* event) {
+    pid_t pid = event->GetPid();
+    uid_t uid = event->GetUid();
+    if (!checkPermissionForIds(kPermissionDump, pid, uid) ||
+        !checkPermissionForIds(kPermissionUsage, pid, uid)) {
+        return;
+    }
+    // The Get* functions don't modify the status on success, they only write in
+    // failure statuses, so we can use one status variable for all calls then
+    // check if it is no longer NO_ERROR.
+    status_t err = NO_ERROR;
+    int32_t rollbackType = int32_t(event->GetInt(1 /*rollback type field id*/, &err));
+    string packageName = string(event->GetString(2 /*package name field id*/, &err));
+
+    if (err != NO_ERROR) {
+        ALOGE("Failed to parse fields in watchdog rollback occurred log event");
+        return;
+    }
+
+    vector<int64_t> experimentIds =
+        processWatchdogRollbackOccurred(rollbackType, packageName);
+    vector<uint8_t> experimentIdProto;
+    writeExperimentIdsToProto(experimentIds, &experimentIdProto);
+
+#ifdef NEW_ENCODING_SCHEME
+    event->updateValue(6 /*experiment ids field id*/, experimentIdProto, STORAGE);
+#else
+    event->updateValue(6 /*experiment ids field id*/, experimentIdProto, STRING);
+#endif
+}
+
+vector<int64_t> StatsLogProcessor::processWatchdogRollbackOccurred(const int32_t rollbackTypeIn,
+                                                                    const string& packageNameIn) {
+    // If the package name is empty, we can't attribute it to any train, so
+    // return early.
+    if (packageNameIn.empty()) {
+      return vector<int64_t>();
+    }
+    bool readTrainInfoSuccess = false;
+    InstallTrainInfo trainInfoOnDisk;
+    readTrainInfoSuccess = StorageManager::readTrainInfo(packageNameIn, trainInfoOnDisk);
+
+    if (!readTrainInfoSuccess) {
+        return vector<int64_t>();
+    }
+
+    if (trainInfoOnDisk.experimentIds.empty()) {
+        return vector<int64_t>();
+    }
+    switch (rollbackTypeIn) {
+        case android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE:
+            trainInfoOnDisk.experimentIds.push_back(trainInfoOnDisk.experimentIds[0] + 4);
+            StorageManager::writeTrainInfo(trainInfoOnDisk);
+            break;
+        case android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS:
+            trainInfoOnDisk.experimentIds.push_back(trainInfoOnDisk.experimentIds[0] + 5);
+            StorageManager::writeTrainInfo(trainInfoOnDisk);
+            break;
+    }
+
+    return trainInfoOnDisk.experimentIds;
+}
+
 void StatsLogProcessor::resetConfigs() {
     std::lock_guard<std::mutex> lock(mMetricsMutex);
     resetConfigsLocked(getElapsedRealtimeNs());
@@ -207,6 +399,18 @@
 void StatsLogProcessor::OnLogEvent(LogEvent* event, int64_t elapsedRealtimeNs) {
     std::lock_guard<std::mutex> lock(mMetricsMutex);
 
+    // Hard-coded logic to update train info on disk and fill in any information
+    // this log event may be missing.
+    if (event->GetTagId() == android::util::BINARY_PUSH_STATE_CHANGED) {
+        onBinaryPushStateChangedEventLocked(event);
+    }
+
+    // Hard-coded logic to update experiment ids on disk for certain rollback
+    // types and fill the rollback atom with experiment ids
+    if (event->GetTagId() == android::util::WATCHDOG_ROLLBACK_OCCURRED) {
+        onWatchdogRollbackOccurredLocked(event);
+    }
+
 #ifdef VERY_VERBOSE_PRINTING
     if (mPrintAllLogs) {
         ALOGI("%s", event->ToString().c_str());
diff --git a/cmds/statsd/src/StatsLogProcessor.h b/cmds/statsd/src/StatsLogProcessor.h
index c569bc1..42e5676 100644
--- a/cmds/statsd/src/StatsLogProcessor.h
+++ b/cmds/statsd/src/StatsLogProcessor.h
@@ -18,6 +18,7 @@
 
 #include <gtest/gtest_prod.h>
 #include "config/ConfigListener.h"
+#include "logd/LogEvent.h"
 #include "metrics/MetricsManager.h"
 #include "packages/UidMap.h"
 #include "external/StatsPullerManager.h"
@@ -196,6 +197,22 @@
     // Handler over the isolated uid change event.
     void onIsolatedUidChangedEventLocked(const LogEvent& event);
 
+    // Handler over the binary push state changed event.
+    void onBinaryPushStateChangedEventLocked(LogEvent* event);
+
+    // Handler over the watchdog rollback occurred event.
+    void onWatchdogRollbackOccurredLocked(LogEvent* event);
+
+    // Updates train info on disk based on binary push state changed info and
+    // write disk info into parameters.
+    void getAndUpdateTrainInfoOnDisk(bool is_rollback, InstallTrainInfo* trainInfoIn);
+
+    // Gets experiment ids on disk for associated train and updates them
+    // depending on rollback type. Then writes them back to disk and returns
+    // them.
+    std::vector<int64_t> processWatchdogRollbackOccurred(const int32_t rollbackTypeIn,
+                                                          const string& packageName);
+
     // Reset all configs.
     void resetConfigsLocked(const int64_t timestampNs);
     // Reset the specified configs.
diff --git a/cmds/statsd/src/StatsService.cpp b/cmds/statsd/src/StatsService.cpp
index c1a8d69..168833f 100644
--- a/cmds/statsd/src/StatsService.cpp
+++ b/cmds/statsd/src/StatsService.cpp
@@ -27,13 +27,10 @@
 #include "subscriber/SubscriberReporter.h"
 
 #include <android-base/file.h>
-#include <android-base/stringprintf.h>
 #include <android-base/strings.h>
 #include <binder/IPCThreadState.h>
-#include <binder/IServiceManager.h>
 #include <binder/PermissionController.h>
 #include <cutils/multiuser.h>
-#include <dirent.h>
 #include <frameworks/base/cmds/statsd/src/statsd_config.pb.h>
 #include <frameworks/base/cmds/statsd/src/uid_data.pb.h>
 #include <private/android_filesystem_config.h>
@@ -42,17 +39,13 @@
 #include <stdlib.h>
 #include <sys/system_properties.h>
 #include <unistd.h>
-#include <utils/Looper.h>
 #include <utils/String16.h>
-#include <chrono>
 
 using namespace android;
 
 using android::base::StringPrintf;
 using android::util::FIELD_COUNT_REPEATED;
-using android::util::FIELD_TYPE_INT64;
 using android::util::FIELD_TYPE_MESSAGE;
-using android::util::ProtoReader;
 
 namespace android {
 namespace os {
@@ -77,6 +70,12 @@
     return binder::Status::fromExceptionCode(code, String8(msg.c_str()));
 }
 
+static bool checkPermission(const char* permission) {
+    pid_t pid = IPCThreadState::self()->getCallingPid();
+    uid_t uid = IPCThreadState::self()->getCallingUid();
+    return checkPermissionForIds(permission, pid, uid);
+}
+
 binder::Status checkUid(uid_t expectedUid) {
     uid_t uid = IPCThreadState::self()->getCallingUid();
     if (uid == expectedUid || uid == AID_ROOT) {
@@ -97,11 +96,11 @@
     }
 
     // Caller must be granted these permissions
-    if (!checkCallingPermission(String16(kPermissionDump))) {
+    if (!checkPermission(kPermissionDump)) {
         return exception(binder::Status::EX_SECURITY,
                 StringPrintf("UID %d / PID %d lacks permission %s", uid, pid, kPermissionDump));
     }
-    if (!checkCallingPermission(String16(kPermissionUsage))) {
+    if (!checkPermission(kPermissionUsage)) {
         return exception(binder::Status::EX_SECURITY,
                 StringPrintf("UID %d / PID %d lacks permission %s", uid, pid, kPermissionUsage));
     }
@@ -285,7 +284,7 @@
  * TODO: Come up with a more robust method of enacting <serviceutils/PriorityDumper.h>.
  */
 status_t StatsService::dump(int fd, const Vector<String16>& args) {
-    if (!checkCallingPermission(String16(kPermissionDump))) {
+    if (!checkPermission(kPermissionDump)) {
         return PERMISSION_DENIED;
     }
     int lastArg = args.size() - 1;
@@ -858,18 +857,8 @@
         dprintf(out, "Incorrect number of argument supplied\n");
         return UNKNOWN_ERROR;
     }
-    android::String16 trainName = android::String16(args[1].c_str());
+    string trainName = string(args[1].c_str());
     int64_t trainVersion = strtoll(args[2].c_str(), nullptr, 10);
-    int options = 0;
-    if (args[3] == "1") {
-        options = options | IStatsd::FLAG_REQUIRE_STAGING;
-    }
-    if (args[4] == "1") {
-        options = options | IStatsd::FLAG_ROLLBACK_ENABLED;
-    }
-    if (args[5] == "1") {
-        options = options | IStatsd::FLAG_REQUIRE_LOW_LATENCY_MONITOR;
-    }
     int32_t state = atoi(args[6].c_str());
     vector<int64_t> experimentIds;
     if (argCount == 8) {
@@ -880,7 +869,10 @@
         }
     }
     dprintf(out, "Logging BinaryPushStateChanged\n");
-    sendBinaryPushStateChangedAtom(trainName, trainVersion, options, state, experimentIds);
+    vector<uint8_t> experimentIdBytes;
+    writeExperimentIdsToProto(experimentIds, &experimentIdBytes);
+    LogEvent event(trainName, trainVersion, args[3], args[4], args[5], state, experimentIdBytes, 0);
+    mProcessor->OnLogEvent(&event);
     return NO_ERROR;
 }
 
@@ -914,7 +906,7 @@
     IPCThreadState* ipc = IPCThreadState::self();
     VLOG("StatsService::cmd_clear_puller_cache with Pid %i, Uid %i",
             ipc->getCallingPid(), ipc->getCallingUid());
-    if (checkCallingPermission(String16(kPermissionDump))) {
+    if (checkPermission(kPermissionDump)) {
         int cleared = mPullerManager->ForceClearPullerCache();
         dprintf(out, "Puller removed %d cached data!\n", cleared);
         return NO_ERROR;
@@ -927,7 +919,7 @@
     IPCThreadState* ipc = IPCThreadState::self();
     VLOG("StatsService::cmd_print_logs with Pid %i, Uid %i", ipc->getCallingPid(),
          ipc->getCallingUid());
-    if (checkCallingPermission(String16(kPermissionDump))) {
+    if (checkPermission(kPermissionDump)) {
         bool enabled = true;
         if (args.size() >= 2) {
             enabled = atoi(args[1].c_str()) != 0;
@@ -1301,277 +1293,27 @@
     return Status::ok();
 }
 
-Status StatsService::sendBinaryPushStateChangedAtom(const android::String16& trainNameIn,
-                                                    const int64_t trainVersionCodeIn,
-                                                    const int options,
-                                                    const int32_t state,
-                                                    const std::vector<int64_t>& experimentIdsIn) {
-    // Note: We skip the usage stats op check here since we do not have a package name.
-    // This is ok since we are overloading the usage_stats permission.
-    // This method only sends data, it does not receive it.
-    pid_t pid = IPCThreadState::self()->getCallingPid();
-    uid_t uid = IPCThreadState::self()->getCallingUid();
-    // Root, system, and shell always have access
-    if (uid != AID_ROOT && uid != AID_SYSTEM && uid != AID_SHELL) {
-        // Caller must be granted these permissions
-        if (!checkCallingPermission(String16(kPermissionDump))) {
-            return exception(binder::Status::EX_SECURITY,
-                             StringPrintf("UID %d / PID %d lacks permission %s", uid, pid,
-                                          kPermissionDump));
-        }
-        if (!checkCallingPermission(String16(kPermissionUsage))) {
-            return exception(binder::Status::EX_SECURITY,
-                             StringPrintf("UID %d / PID %d lacks permission %s", uid, pid,
-                                          kPermissionUsage));
-        }
-    }
-
-    bool readTrainInfoSuccess = false;
-    InstallTrainInfo trainInfoOnDisk;
-    readTrainInfoSuccess = StorageManager::readTrainInfo(trainInfoOnDisk);
-
-    bool resetExperimentIds = false;
-    int64_t trainVersionCode = trainVersionCodeIn;
-    std::string trainNameUtf8 = std::string(String8(trainNameIn).string());
-    if (readTrainInfoSuccess) {
-        // Keep the old train version if we received an empty version.
-        if (trainVersionCodeIn == -1) {
-            trainVersionCode = trainInfoOnDisk.trainVersionCode;
-        } else if (trainVersionCodeIn != trainInfoOnDisk.trainVersionCode) {
-        // Reset experiment ids if we receive a new non-empty train version.
-            resetExperimentIds = true;
-        }
-
-        // Keep the old train name if we received an empty train name.
-        if (trainNameUtf8.size() == 0) {
-            trainNameUtf8 = trainInfoOnDisk.trainName;
-        } else if (trainNameUtf8 != trainInfoOnDisk.trainName) {
-            // Reset experiment ids if we received a new valid train name.
-            resetExperimentIds = true;
-        }
-
-        // Reset if we received a different experiment id.
-        if (!experimentIdsIn.empty() &&
-                (trainInfoOnDisk.experimentIds.empty() ||
-                 experimentIdsIn[0] != trainInfoOnDisk.experimentIds[0])) {
-            resetExperimentIds = true;
-        }
-    }
-
-    // Find the right experiment IDs
-    std::vector<int64_t> experimentIds;
-    if (resetExperimentIds || !readTrainInfoSuccess) {
-        experimentIds = experimentIdsIn;
-    } else {
-        experimentIds = trainInfoOnDisk.experimentIds;
-    }
-
-    if (!experimentIds.empty()) {
-        int64_t firstId = experimentIds[0];
-        switch (state) {
-            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALL_SUCCESS:
-                experimentIds.push_back(firstId + 1);
-                break;
-            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALLER_ROLLBACK_INITIATED:
-                experimentIds.push_back(firstId + 2);
-                break;
-            case android::util::BINARY_PUSH_STATE_CHANGED__STATE__INSTALLER_ROLLBACK_SUCCESS:
-                experimentIds.push_back(firstId + 3);
-                break;
-        }
-    }
-
-    // Flatten the experiment IDs to proto
-    vector<uint8_t> experimentIdsProtoBuffer;
-    writeExperimentIdsToProto(experimentIds, &experimentIdsProtoBuffer);
-    StorageManager::writeTrainInfo(trainVersionCode, trainNameUtf8, state, experimentIds);
-
-    userid_t userId = multiuser_get_user_id(uid);
-    bool requiresStaging = options & IStatsd::FLAG_REQUIRE_STAGING;
-    bool rollbackEnabled = options & IStatsd::FLAG_ROLLBACK_ENABLED;
-    bool requiresLowLatencyMonitor = options & IStatsd::FLAG_REQUIRE_LOW_LATENCY_MONITOR;
-    LogEvent event(trainNameUtf8, trainVersionCode, requiresStaging, rollbackEnabled,
-                   requiresLowLatencyMonitor, state, experimentIdsProtoBuffer, userId);
-    mProcessor->OnLogEvent(&event);
-    return Status::ok();
-}
-
-Status StatsService::sendWatchdogRollbackOccurredAtom(const int32_t rollbackTypeIn,
-                                                      const android::String16& packageNameIn,
-                                                      const int64_t packageVersionCodeIn,
-                                                      const int32_t rollbackReasonIn,
-                                                      const android::String16&
-                                                       failingPackageNameIn) {
-    // Note: We skip the usage stats op check here since we do not have a package name.
-    // This is ok since we are overloading the usage_stats permission.
-    // This method only sends data, it does not receive it.
-    pid_t pid = IPCThreadState::self()->getCallingPid();
-    uid_t uid = IPCThreadState::self()->getCallingUid();
-    // Root, system, and shell always have access
-    if (uid != AID_ROOT && uid != AID_SYSTEM && uid != AID_SHELL) {
-        // Caller must be granted these permissions
-        if (!checkCallingPermission(String16(kPermissionDump))) {
-            return exception(binder::Status::EX_SECURITY,
-                             StringPrintf("UID %d / PID %d lacks permission %s", uid, pid,
-                                          kPermissionDump));
-        }
-        if (!checkCallingPermission(String16(kPermissionUsage))) {
-            return exception(binder::Status::EX_SECURITY,
-                             StringPrintf("UID %d / PID %d lacks permission %s", uid, pid,
-                                          kPermissionUsage));
-        }
-    }
-
-    android::util::stats_write(android::util::WATCHDOG_ROLLBACK_OCCURRED,
-            rollbackTypeIn, String8(packageNameIn).string(), packageVersionCodeIn,
-            rollbackReasonIn, String8(failingPackageNameIn).string());
-
-    // Fast return to save disk read.
-    if (rollbackTypeIn != android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS
-            && rollbackTypeIn !=
-                    android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE) {
-        return Status::ok();
-    }
-
-    bool readTrainInfoSuccess = false;
-    InstallTrainInfo trainInfoOnDisk;
-    readTrainInfoSuccess = StorageManager::readTrainInfo(trainInfoOnDisk);
-
-    if (!readTrainInfoSuccess) {
-        return Status::ok();
-    }
-    std::vector<int64_t> experimentIds = trainInfoOnDisk.experimentIds;
-    if (experimentIds.empty()) {
-        return Status::ok();
-    }
-    switch (rollbackTypeIn) {
-        case android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE:
-            experimentIds.push_back(experimentIds[0] + 4);
-            break;
-        case android::util::WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS:
-            experimentIds.push_back(experimentIds[0] + 5);
-            break;
-    }
-    StorageManager::writeTrainInfo(trainInfoOnDisk.trainVersionCode, trainInfoOnDisk.trainName,
-            trainInfoOnDisk.status, experimentIds);
-    return Status::ok();
-}
-
-
 Status StatsService::getRegisteredExperimentIds(std::vector<int64_t>* experimentIdsOut) {
     ENFORCE_UID(AID_SYSTEM);
     // TODO: add verifier permission
 
+    experimentIdsOut->clear();
     // Read the latest train info
-    InstallTrainInfo trainInfo;
-    if (!StorageManager::readTrainInfo(trainInfo)) {
+    vector<InstallTrainInfo> trainInfoList = StorageManager::readAllTrainInfo();
+    if (trainInfoList.empty()) {
         // No train info means no experiment IDs, return an empty list
-        experimentIdsOut->clear();
         return Status::ok();
     }
 
     // Copy the experiment IDs to the out vector
-    experimentIdsOut->assign(trainInfo.experimentIds.begin(), trainInfo.experimentIds.end());
+    for (InstallTrainInfo& trainInfo : trainInfoList) {
+        experimentIdsOut->insert(experimentIdsOut->end(),
+                                 trainInfo.experimentIds.begin(),
+                                 trainInfo.experimentIds.end());
+    }
     return Status::ok();
 }
 
-hardware::Return<void> StatsService::reportSpeakerImpedance(
-        const SpeakerImpedance& speakerImpedance) {
-    android::util::stats_write(android::util::SPEAKER_IMPEDANCE_REPORTED,
-            speakerImpedance.speakerLocation, speakerImpedance.milliOhms);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportHardwareFailed(const HardwareFailed& hardwareFailed) {
-    android::util::stats_write(android::util::HARDWARE_FAILED, int32_t(hardwareFailed.hardwareType),
-            hardwareFailed.hardwareLocation, int32_t(hardwareFailed.errorCode));
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportPhysicalDropDetected(
-        const PhysicalDropDetected& physicalDropDetected) {
-    android::util::stats_write(android::util::PHYSICAL_DROP_DETECTED,
-            int32_t(physicalDropDetected.confidencePctg), physicalDropDetected.accelPeak,
-            physicalDropDetected.freefallDuration);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportChargeCycles(const ChargeCycles& chargeCycles) {
-    std::vector<int32_t> buckets = chargeCycles.cycleBucket;
-    int initialSize = buckets.size();
-    for (int i = 0; i < 10 - initialSize; i++) {
-        buckets.push_back(-1); // Push -1 for buckets that do not exist.
-    }
-    android::util::stats_write(android::util::CHARGE_CYCLES_REPORTED, buckets[0], buckets[1],
-            buckets[2], buckets[3], buckets[4], buckets[5], buckets[6], buckets[7], buckets[8],
-            buckets[9]);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportBatteryHealthSnapshot(
-        const BatteryHealthSnapshotArgs& batteryHealthSnapshotArgs) {
-    android::util::stats_write(android::util::BATTERY_HEALTH_SNAPSHOT,
-            int32_t(batteryHealthSnapshotArgs.type), batteryHealthSnapshotArgs.temperatureDeciC,
-            batteryHealthSnapshotArgs.voltageMicroV, batteryHealthSnapshotArgs.currentMicroA,
-            batteryHealthSnapshotArgs.openCircuitVoltageMicroV,
-            batteryHealthSnapshotArgs.resistanceMicroOhm, batteryHealthSnapshotArgs.levelPercent);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportSlowIo(const SlowIo& slowIo) {
-    android::util::stats_write(android::util::SLOW_IO, int32_t(slowIo.operation), slowIo.count);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportBatteryCausedShutdown(
-        const BatteryCausedShutdown& batteryCausedShutdown) {
-    android::util::stats_write(android::util::BATTERY_CAUSED_SHUTDOWN,
-            batteryCausedShutdown.voltageMicroV);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportUsbPortOverheatEvent(
-        const UsbPortOverheatEvent& usbPortOverheatEvent) {
-    android::util::stats_write(android::util::USB_PORT_OVERHEAT_EVENT_REPORTED,
-            usbPortOverheatEvent.plugTemperatureDeciC, usbPortOverheatEvent.maxTemperatureDeciC,
-            usbPortOverheatEvent.timeToOverheat, usbPortOverheatEvent.timeToHysteresis,
-            usbPortOverheatEvent.timeToInactive);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportSpeechDspStat(
-        const SpeechDspStat& speechDspStat) {
-    android::util::stats_write(android::util::SPEECH_DSP_STAT_REPORTED,
-            speechDspStat.totalUptimeMillis, speechDspStat.totalDowntimeMillis,
-            speechDspStat.totalCrashCount, speechDspStat.totalRecoverCount);
-
-    return hardware::Void();
-}
-
-hardware::Return<void> StatsService::reportVendorAtom(const VendorAtom& vendorAtom) {
-    std::string reverseDomainName = (std::string) vendorAtom.reverseDomainName;
-    if (vendorAtom.atomId < 100000 || vendorAtom.atomId >= 200000) {
-        ALOGE("Atom ID %ld is not a valid vendor atom ID", (long) vendorAtom.atomId);
-        return hardware::Void();
-    }
-    if (reverseDomainName.length() > 50) {
-        ALOGE("Vendor atom reverse domain name %s is too long.", reverseDomainName.c_str());
-        return hardware::Void();
-    }
-    LogEvent event(getWallClockSec() * NS_PER_SEC, getElapsedRealtimeNs(), vendorAtom);
-    mProcessor->OnLogEvent(&event);
-
-    return hardware::Void();
-}
-
 void StatsService::binderDied(const wp <IBinder>& who) {
     ALOGW("statscompanion service died");
     StatsdStats::getInstance().noteSystemServerRestart(getWallClockSec());
diff --git a/cmds/statsd/src/StatsService.h b/cmds/statsd/src/StatsService.h
index f2079d9..0527d43 100644
--- a/cmds/statsd/src/StatsService.h
+++ b/cmds/statsd/src/StatsService.h
@@ -27,8 +27,6 @@
 #include "shell/ShellSubscriber.h"
 #include "statscompanion_util.h"
 
-#include <android/frameworks/stats/1.0/IStats.h>
-#include <android/frameworks/stats/1.0/types.h>
 #include <android/os/BnStatsd.h>
 #include <android/os/IPendingIntentRef.h>
 #include <android/os/IStatsCompanionService.h>
@@ -37,13 +35,10 @@
 #include <binder/ParcelFileDescriptor.h>
 #include <utils/Looper.h>
 
-#include <deque>
 #include <mutex>
 
 using namespace android;
-using namespace android::base;
 using namespace android::binder;
-using namespace android::frameworks::stats::V1_0;
 using namespace android::os;
 using namespace std;
 
@@ -51,10 +46,7 @@
 namespace os {
 namespace statsd {
 
-using android::hardware::Return;
-
 class StatsService : public BnStatsd,
-                     public IStats,
                      public IBinder::DeathRecipient {
 public:
     StatsService(const sp<Looper>& handlerLooper, std::shared_ptr<LogEventQueue> queue);
@@ -195,85 +187,10 @@
     virtual Status unregisterNativePullAtomCallback(int32_t atomTag) override;
 
     /**
-     * Binder call to log BinaryPushStateChanged atom.
-     */
-    virtual Status sendBinaryPushStateChangedAtom(
-            const android::String16& trainNameIn,
-            const int64_t trainVersionCodeIn,
-            const int options,
-            const int32_t state,
-            const std::vector<int64_t>& experimentIdsIn) override;
-
-    /**
-     * Binder call to log WatchdogRollbackOccurred atom.
-     */
-    virtual Status sendWatchdogRollbackOccurredAtom(
-            const int32_t rollbackTypeIn,
-            const android::String16& packageNameIn,
-            const int64_t packageVersionCodeIn,
-            const int32_t rollbackReasonIn,
-            const android::String16& failingPackageNameIn) override;
-
-    /**
      * Binder call to get registered experiment IDs.
      */
     virtual Status getRegisteredExperimentIds(std::vector<int64_t>* expIdsOut);
 
-    /**
-     * Binder call to get SpeakerImpedance atom.
-     */
-    virtual Return<void> reportSpeakerImpedance(const SpeakerImpedance& speakerImpedance) override;
-
-    /**
-     * Binder call to get HardwareFailed atom.
-     */
-    virtual Return<void> reportHardwareFailed(const HardwareFailed& hardwareFailed) override;
-
-    /**
-     * Binder call to get PhysicalDropDetected atom.
-     */
-    virtual Return<void> reportPhysicalDropDetected(
-            const PhysicalDropDetected& physicalDropDetected) override;
-
-    /**
-     * Binder call to get ChargeCyclesReported atom.
-     */
-    virtual Return<void> reportChargeCycles(const ChargeCycles& chargeCycles) override;
-
-    /**
-     * Binder call to get BatteryHealthSnapshot atom.
-     */
-    virtual Return<void> reportBatteryHealthSnapshot(
-            const BatteryHealthSnapshotArgs& batteryHealthSnapshotArgs) override;
-
-    /**
-     * Binder call to get SlowIo atom.
-     */
-    virtual Return<void> reportSlowIo(const SlowIo& slowIo) override;
-
-    /**
-     * Binder call to get BatteryCausedShutdown atom.
-     */
-    virtual Return<void> reportBatteryCausedShutdown(
-            const BatteryCausedShutdown& batteryCausedShutdown) override;
-
-    /**
-     * Binder call to get UsbPortOverheatEvent atom.
-     */
-    virtual Return<void> reportUsbPortOverheatEvent(
-            const UsbPortOverheatEvent& usbPortOverheatEvent) override;
-
-    /**
-     * Binder call to get Speech DSP state atom.
-     */
-    virtual Return<void> reportSpeechDspStat(
-            const SpeechDspStat& speechDspStat) override;
-
-    /**
-     * Binder call to get vendor atom.
-     */
-    virtual Return<void> reportVendorAtom(const VendorAtom& vendorAtom) override;
-
     /** IBinder::DeathRecipient */
     virtual void binderDied(const wp<IBinder>& who) override;
 
diff --git a/cmds/statsd/src/anomaly/AlarmMonitor.h b/cmds/statsd/src/anomaly/AlarmMonitor.h
index bca858e..219695e 100644
--- a/cmds/statsd/src/anomaly/AlarmMonitor.h
+++ b/cmds/statsd/src/anomaly/AlarmMonitor.h
@@ -21,8 +21,6 @@
 #include <android/os/IStatsCompanionService.h>
 #include <utils/RefBase.h>
 
-#include <queue>
-#include <set>
 #include <unordered_set>
 #include <vector>
 
diff --git a/cmds/statsd/src/anomaly/AnomalyTracker.h b/cmds/statsd/src/anomaly/AnomalyTracker.h
index e941473..794ee98 100644
--- a/cmds/statsd/src/anomaly/AnomalyTracker.h
+++ b/cmds/statsd/src/anomaly/AnomalyTracker.h
@@ -16,8 +16,6 @@
 
 #pragma once
 
-#include <memory>  // unique_ptr
-
 #include <stdlib.h>
 
 #include <gtest/gtest_prod.h>
diff --git a/cmds/statsd/src/anomaly/subscriber_util.cpp b/cmds/statsd/src/anomaly/subscriber_util.cpp
index 4c30c4c..5a4a41d 100644
--- a/cmds/statsd/src/anomaly/subscriber_util.cpp
+++ b/cmds/statsd/src/anomaly/subscriber_util.cpp
@@ -17,10 +17,6 @@
 #define DEBUG false  // STOPSHIP if true
 #include "Log.h"
 
-#include <android/os/IIncidentManager.h>
-#include <android/os/IncidentReportArgs.h>
-#include <binder/IServiceManager.h>
-
 #include "external/Perfetto.h"
 #include "subscriber/IncidentdReporter.h"
 #include "subscriber/SubscriberReporter.h"
diff --git a/cmds/statsd/src/atom_field_options.proto b/cmds/statsd/src/atom_field_options.proto
index 946c550..9c875ba 100644
--- a/cmds/statsd/src/atom_field_options.proto
+++ b/cmds/statsd/src/atom_field_options.proto
@@ -24,46 +24,75 @@
 import "google/protobuf/descriptor.proto";
 
 enum StateField {
-    // Default value for fields that are not primary or exclusive state.
+    // Default value for fields that are not a primary or exclusive state field.
     STATE_FIELD_UNSET = 0;
     // Fields that represent the key that the state belongs to.
-    PRIMARY = 1;
+    // Used on simple proto fields. Do not use on attribution chains.
+    PRIMARY_FIELD = 1;
     // The field that represents the state. It's an exclusive state.
-    EXCLUSIVE = 2;
-
+    EXCLUSIVE_STATE = 2;
+    // Used on an attribution chain field to indicate that the first uid is the
+    // primary field.
     PRIMARY_FIELD_FIRST_UID = 3;
 }
 
-// Used to annotate an atom that reprsents a state change. A state change atom must have exactly ONE
-// exclusive state field, and any number of primary key fields.
-// For example,
-// message UidProcessStateChanged {
-//    optional int32 uid = 1 [(state_field_option).option = PRIMARY];
-//    optional android.app.ProcessStateEnum state = 2 [(state_field_option).option = EXCLUSIVE];
+// Used to annotate an atom that represents a state change. A state change atom must have exactly
+// ONE exclusive state field, and any number of primary key fields. For example, message
+// UidProcessStateChanged {
+//    optional int32 uid = 1 [(state_field_option).option = PRIMARY_FIELD];
+//    optional android.app.ProcessStateEnum state = 2 [(state_field_option).option =
+//    EXCLUSIVE_STATE];
 //  }
-// Each of this UidProcessStateChanged atom represents a state change for a specific uid.
+// Each UidProcessStateChanged atom event represents a state change for a specific uid.
 // A new state automatically overrides the previous state.
 //
-// If the atom has 2 or more primary fields, it means the combination of the primary fields are
-// the primary key.
+// If the atom has 2 or more primary fields, it means the combination of the
+// primary fields are the primary key.
 // For example:
 // message ThreadStateChanged {
-//    optional int32 pid = 1  [(state_field_option).option = PRIMARY];
-//    optional int32 tid = 2  [(state_field_option).option = PRIMARY];
-//    optional int32 state = 3 [(state_field_option).option = EXCLUSIVE];
+//    optional int32 pid = 1  [(state_field_option).option = PRIMARY_FIELD];
+//    optional int32 tid = 2  [(state_field_option).option = PRIMARY_FIELD];
+//    optional int32 state = 3 [(state_field_option).option = EXCLUSIVE_STATE];
 // }
 //
 // Sometimes, there is no primary key field, when the state is GLOBAL.
 // For example,
-//
 // message ScreenStateChanged {
-//    optional android.view.DisplayStateEnum state = 1 [(state_field_option).option = EXCLUSIVE];
+//    optional android.view.DisplayStateEnum state = 1 [(state_field_option).option =
+//    EXCLUSIVE_STATE];
 // }
 //
-// Only fields of primary types can be annotated. AttributionNode cannot be primary keys (and they
-// usually are not).
+// For state atoms with attribution chain, sometimes the primary key is the first uid in the chain.
+// For example:
+// message AudioStateChanged {
+//   repeated AttributionNode attribution_node = 1
+//       [(stateFieldOption).option = PRIMARY_KEY_FIRST_UID];
+//
+//    enum State {
+//      OFF = 0;
+//      ON = 1;
+//      // RESET indicates all audio stopped. Used when it (re)starts (e.g. after it crashes).
+//      RESET = 2;
+//    }
+//    optional State state = 2 [(stateFieldOption).option = EXCLUSIVE_STATE];
+// }
 message StateAtomFieldOption {
     optional StateField option = 1 [default = STATE_FIELD_UNSET];
+
+    // Note: We cannot annotate directly on the enums because many enums are imported from other
+    // proto files in the platform. proto-lite cc library does not support annotations unfortunately
+
+    // Knowing the default state value allows state trackers to remove entries that become the
+    // default state. If there is no default value specified, the default value is unknown, and all
+    // states will be tracked in memory.
+    optional int32 default_state_value = 2;
+
+    // A reset state signals all states go to default value. For example, BLE reset means all active
+    // BLE scans are to be turned off.
+    optional int32 reset_state_value = 3;
+
+    // If the state change needs to count nesting.
+    optional bool nested = 4 [default = true];
 }
 
 // Used to generate StatsLog.write APIs.
diff --git a/cmds/statsd/src/atoms.proto b/cmds/statsd/src/atoms.proto
index 1fdc8af..03f97d8 100644
--- a/cmds/statsd/src/atoms.proto
+++ b/cmds/statsd/src/atoms.proto
@@ -79,111 +79,117 @@
     oneof pushed {
         // For StatsLog reasons, 1 is illegal and will not work. Must start at 2.
         BleScanStateChanged ble_scan_state_changed = 2 [(module) = "bluetooth"];
-        ProcessStateChanged process_state_changed = 3;
+        ProcessStateChanged process_state_changed = 3 [(module) = "framework"];
         BleScanResultReceived ble_scan_result_received = 4 [(module) = "bluetooth"];
-        SensorStateChanged sensor_state_changed = 5;
-        GpsScanStateChanged gps_scan_state_changed = 6;
-        SyncStateChanged sync_state_changed = 7;
-        ScheduledJobStateChanged scheduled_job_state_changed = 8;
-        ScreenBrightnessChanged screen_brightness_changed = 9;
-        WakelockStateChanged wakelock_state_changed = 10;
-        LongPartialWakelockStateChanged long_partial_wakelock_state_changed = 11;
-        MobileRadioPowerStateChanged mobile_radio_power_state_changed = 12;
-        WifiRadioPowerStateChanged wifi_radio_power_state_changed = 13;
-        ActivityManagerSleepStateChanged activity_manager_sleep_state_changed = 14;
-        MemoryFactorStateChanged memory_factor_state_changed = 15;
-        ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16;
-        CachedKillReported cached_kill_reported = 17;
-        ProcessMemoryStatReported process_memory_stat_reported = 18;
+        SensorStateChanged sensor_state_changed = 5 [(module) = "framework"];
+        GpsScanStateChanged gps_scan_state_changed = 6 [(module) = "framework"];
+        SyncStateChanged sync_state_changed = 7 [(module) = "framework"];
+        ScheduledJobStateChanged scheduled_job_state_changed = 8 [(module) = "framework"];
+        ScreenBrightnessChanged screen_brightness_changed = 9 [(module) = "framework"];
+        WakelockStateChanged wakelock_state_changed = 10 [(module) = "framework"];
+        LongPartialWakelockStateChanged long_partial_wakelock_state_changed =
+                11 [(module) = "framework"];
+        MobileRadioPowerStateChanged mobile_radio_power_state_changed = 12 [(module) = "framework"];
+        WifiRadioPowerStateChanged wifi_radio_power_state_changed = 13 [(module) = "framework"];
+        ActivityManagerSleepStateChanged activity_manager_sleep_state_changed =
+                14 [(module) = "framework"];
+        MemoryFactorStateChanged memory_factor_state_changed = 15 [(module) = "framework"];
+        ExcessiveCpuUsageReported excessive_cpu_usage_reported = 16 [(module) = "framework"];
+        CachedKillReported cached_kill_reported = 17 [(module) = "framework"];
+        ProcessMemoryStatReported process_memory_stat_reported = 18 [(module) = "framework"];
         LauncherUIChanged launcher_event = 19 [(module) = "sysui"];
-        BatterySaverModeStateChanged battery_saver_mode_state_changed = 20;
-        DeviceIdleModeStateChanged device_idle_mode_state_changed = 21;
-        DeviceIdlingModeStateChanged device_idling_mode_state_changed = 22;
-        AudioStateChanged audio_state_changed = 23;
-        MediaCodecStateChanged media_codec_state_changed = 24;
-        CameraStateChanged camera_state_changed = 25;
-        FlashlightStateChanged flashlight_state_changed = 26;
-        UidProcessStateChanged uid_process_state_changed = 27;
-        ProcessLifeCycleStateChanged process_life_cycle_state_changed = 28;
-        ScreenStateChanged screen_state_changed = 29;
-        BatteryLevelChanged battery_level_changed = 30;
-        ChargingStateChanged charging_state_changed = 31;
-        PluggedStateChanged plugged_state_changed = 32;
-        InteractiveStateChanged interactive_state_changed = 33;
+        BatterySaverModeStateChanged battery_saver_mode_state_changed = 20 [(module) = "framework"];
+        DeviceIdleModeStateChanged device_idle_mode_state_changed = 21 [(module) = "framework"];
+        DeviceIdlingModeStateChanged device_idling_mode_state_changed = 22 [(module) = "framework"];
+        AudioStateChanged audio_state_changed = 23 [(module) = "framework"];
+        MediaCodecStateChanged media_codec_state_changed = 24 [(module) = "framework"];
+        CameraStateChanged camera_state_changed = 25 [(module) = "framework"];
+        FlashlightStateChanged flashlight_state_changed = 26 [(module) = "framework"];
+        UidProcessStateChanged uid_process_state_changed = 27 [(module) = "framework"];
+        ProcessLifeCycleStateChanged process_life_cycle_state_changed = 28 [(module) = "framework"];
+        ScreenStateChanged screen_state_changed = 29 [(module) = "framework"];
+        BatteryLevelChanged battery_level_changed = 30 [(module) = "framework"];
+        ChargingStateChanged charging_state_changed = 31 [(module) = "framework"];
+        PluggedStateChanged plugged_state_changed = 32 [(module) = "framework"];
+        InteractiveStateChanged interactive_state_changed = 33 [(module) = "framework"];
         TouchEventReported touch_event_reported = 34;
-        WakeupAlarmOccurred wakeup_alarm_occurred = 35;
-        KernelWakeupReported kernel_wakeup_reported = 36;
+        WakeupAlarmOccurred wakeup_alarm_occurred = 35 [(module) = "framework"];
+        KernelWakeupReported kernel_wakeup_reported = 36 [(module) = "framework"];
         WifiLockStateChanged wifi_lock_state_changed = 37 [(module) = "wifi"];
         WifiSignalStrengthChanged wifi_signal_strength_changed = 38 [(module) = "wifi"];
         WifiScanStateChanged wifi_scan_state_changed = 39 [(module) = "wifi"];
-        PhoneSignalStrengthChanged phone_signal_strength_changed = 40;
-        SettingChanged setting_changed = 41;
-        ActivityForegroundStateChanged activity_foreground_state_changed = 42;
-        IsolatedUidChanged isolated_uid_changed = 43;
-        PacketWakeupOccurred packet_wakeup_occurred = 44;
-        WallClockTimeShifted wall_clock_time_shifted = 45;
+        PhoneSignalStrengthChanged phone_signal_strength_changed = 40 [(module) = "framework"];
+        SettingChanged setting_changed = 41 [(module) = "framework"];
+        ActivityForegroundStateChanged activity_foreground_state_changed =
+                42 [(module) = "framework"];
+        IsolatedUidChanged isolated_uid_changed = 43 [(module) = "framework"];
+        PacketWakeupOccurred packet_wakeup_occurred = 44 [(module) = "framework"];
+        WallClockTimeShifted wall_clock_time_shifted = 45 [(module) = "framework"];
         AnomalyDetected anomaly_detected = 46;
-        AppBreadcrumbReported app_breadcrumb_reported = 47 [(allow_from_any_uid) = true];
-        AppStartOccurred app_start_occurred = 48;
-        AppStartCanceled app_start_canceled = 49;
-        AppStartFullyDrawn app_start_fully_drawn = 50;
+        AppBreadcrumbReported app_breadcrumb_reported =
+                47 [(allow_from_any_uid) = true, (module) = "statsd"];
+        AppStartOccurred app_start_occurred = 48 [(module) = "framework"];
+        AppStartCanceled app_start_canceled = 49 [(module) = "framework"];
+        AppStartFullyDrawn app_start_fully_drawn = 50 [(module) = "framework"];
         LmkKillOccurred lmk_kill_occurred = 51 [(module) = "lmkd"];
-        PictureInPictureStateChanged picture_in_picture_state_changed = 52;
+        PictureInPictureStateChanged picture_in_picture_state_changed = 52 [(module) = "framework"];
         WifiMulticastLockStateChanged wifi_multicast_lock_state_changed = 53 [(module) = "wifi"];
         LmkStateChanged lmk_state_changed = 54 [(module) = "lmkd"];
-        AppStartMemoryStateCaptured app_start_memory_state_captured = 55;
-        ShutdownSequenceReported shutdown_sequence_reported = 56;
+        AppStartMemoryStateCaptured app_start_memory_state_captured = 55 [(module) = "framework"];
+        ShutdownSequenceReported shutdown_sequence_reported = 56 [(module) = "framework"];
         BootSequenceReported boot_sequence_reported = 57;
         DaveyOccurred davey_occurred = 58 [(allow_from_any_uid) = true];
-        OverlayStateChanged overlay_state_changed = 59;
-        ForegroundServiceStateChanged foreground_service_state_changed = 60;
+        OverlayStateChanged overlay_state_changed = 59 [(module) = "framework"];
+        ForegroundServiceStateChanged foreground_service_state_changed
+                = 60 [(module) = "framework"];
         CallStateChanged call_state_changed = 61 [(module) = "telecom"];
         KeyguardStateChanged keyguard_state_changed = 62 [(module) = "sysui"];
         KeyguardBouncerStateChanged keyguard_bouncer_state_changed = 63 [(module) = "sysui"];
         KeyguardBouncerPasswordEntered keyguard_bouncer_password_entered = 64 [(module) = "sysui"];
-        AppDied app_died = 65;
-        ResourceConfigurationChanged resource_configuration_changed = 66;
-        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67;
+        AppDied app_died = 65 [(module) = "framework"];
+        ResourceConfigurationChanged resource_configuration_changed = 66 [(module) = "framework"];
+        BluetoothEnabledStateChanged bluetooth_enabled_state_changed = 67 [(module) = "framework"];
         BluetoothConnectionStateChanged bluetooth_connection_state_changed =
                 68 [(module) = "bluetooth"];
-        GpsSignalQualityChanged gps_signal_quality_changed = 69;
-        UsbConnectorStateChanged usb_connector_state_changed = 70;
+        GpsSignalQualityChanged gps_signal_quality_changed = 69 [(module) = "framework"];
+        UsbConnectorStateChanged usb_connector_state_changed = 70 [(module) = "framework"];
         SpeakerImpedanceReported speaker_impedance_reported = 71;
         HardwareFailed hardware_failed = 72;
         PhysicalDropDetected physical_drop_detected = 73;
         ChargeCyclesReported charge_cycles_reported = 74;
         MobileConnectionStateChanged mobile_connection_state_changed = 75 [(module) = "telephony"];
         MobileRadioTechnologyChanged mobile_radio_technology_changed = 76 [(module) = "telephony"];
-        UsbDeviceAttached usb_device_attached = 77;
-        AppCrashOccurred app_crash_occurred = 78;
-        ANROccurred anr_occurred = 79;
-        WTFOccurred wtf_occurred = 80;
-        LowMemReported low_mem_reported = 81;
+        UsbDeviceAttached usb_device_attached = 77 [(module) = "framework"];
+        AppCrashOccurred app_crash_occurred = 78 [(module) = "framework"];
+        ANROccurred anr_occurred = 79 [(module) = "framework"];
+        WTFOccurred wtf_occurred = 80 [(module) = "framework"];
+        LowMemReported low_mem_reported = 81 [(module) = "framework"];
         GenericAtom generic_atom = 82;
-        KeyValuePairsAtom key_value_pairs_atom = 83 [(allow_from_any_uid) = true];
-        VibratorStateChanged vibrator_state_changed = 84;
-        DeferredJobStatsReported deferred_job_stats_reported = 85;
+        KeyValuePairsAtom key_value_pairs_atom =
+                83 [(allow_from_any_uid) = true, (module) = "framework"];
+        VibratorStateChanged vibrator_state_changed = 84 [(module) = "framework"];
+        DeferredJobStatsReported deferred_job_stats_reported = 85 [(module) = "framework"];
         ThermalThrottlingStateChanged thermal_throttling = 86 [deprecated=true];
-        BiometricAcquired biometric_acquired = 87;
-        BiometricAuthenticated biometric_authenticated = 88;
-        BiometricErrorOccurred biometric_error_occurred = 89;
-        UiEventReported ui_event_reported = 90;
+        BiometricAcquired biometric_acquired = 87 [(module) = "framework"];
+        BiometricAuthenticated biometric_authenticated = 88 [(module) = "framework"];
+        BiometricErrorOccurred biometric_error_occurred = 89 [(module) = "framework"];
+        UiEventReported ui_event_reported = 90 [(module) = "framework"];
         BatteryHealthSnapshot battery_health_snapshot = 91;
         SlowIo slow_io = 92;
         BatteryCausedShutdown battery_caused_shutdown = 93;
-        PhoneServiceStateChanged phone_service_state_changed = 94;
-        PhoneStateChanged phone_state_changed = 95;
+        PhoneServiceStateChanged phone_service_state_changed = 94 [(module) = "framework"];
+        PhoneStateChanged phone_state_changed = 95 [(module) = "framework"];
         UserRestrictionChanged user_restriction_changed = 96;
-        SettingsUIChanged settings_ui_changed = 97;
-        ConnectivityStateChanged connectivity_state_changed = 98;
+        SettingsUIChanged settings_ui_changed = 97 [(module) = "settings"];
+        ConnectivityStateChanged connectivity_state_changed = 98 [(module) = "framework"];
         // TODO: service state change is very noisy shortly after boot, as well
         // as at other transitions - coming out of doze, device plugged in, etc.
         // Consider removing this if it becomes a problem
-        ServiceStateChanged service_state_changed = 99;
-        ServiceLaunchReported service_launch_reported = 100;
-        FlagFlipUpdateOccurred flag_flip_update_occurred = 101;
-        BinaryPushStateChanged binary_push_state_changed = 102;
-        DevicePolicyEvent device_policy_event = 103;
+        ServiceStateChanged service_state_changed = 99 [(module) = "framework"];
+        ServiceLaunchReported service_launch_reported = 100 [(module) = "framework"];
+        FlagFlipUpdateOccurred flag_flip_update_occurred = 101 [(module) = "framework"];
+        BinaryPushStateChanged binary_push_state_changed = 102 [(module) = "statsd"];
+        DevicePolicyEvent device_policy_event = 103 [(module) = "framework"];
         DocsUIFileOperationCanceledReported docs_ui_file_op_canceled = 104 [(module) = "docsui"];
         DocsUIFileOperationCopyMoveModeReported docs_ui_file_op_copy_move_mode_reported =
             105 [(module) = "docsui"];
@@ -195,9 +201,10 @@
         DocsUIRootVisitedReported docs_ui_root_visited = 110 [(module) = "docsui"];
         DocsUIStartupMsReported docs_ui_startup_ms = 111 [(module) = "docsui"];
         DocsUIUserActionReported docs_ui_user_action_reported = 112 [(module) = "docsui"];
-        WifiEnabledStateChanged wifi_enabled_state_changed = 113;
-        WifiRunningStateChanged wifi_running_state_changed = 114;
-        AppCompacted app_compacted = 115;
+        WifiEnabledStateChanged wifi_enabled_state_changed = 113 [(module) = "framework"];
+        WifiRunningStateChanged wifi_running_state_changed = 114
+                [(module) = "framework", deprecated = true];
+        AppCompacted app_compacted = 115 [(module) = "framework"];
         NetworkDnsEventReported network_dns_event_reported = 116 [(module) = "resolv"];
         DocsUIPickerLaunchedFromReported docs_ui_picker_launched_from_reported =
             117 [(module) = "docsui"];
@@ -205,38 +212,42 @@
         DocsUISearchModeReported docs_ui_search_mode_reported = 119 [(module) = "docsui"];
         DocsUISearchTypeReported docs_ui_search_type_reported = 120 [(module) = "docsui"];
         DataStallEvent data_stall_event = 121 [(module) = "network_stack"];
-        RescuePartyResetReported rescue_party_reset_reported = 122;
-        SignedConfigReported signed_config_reported = 123;
-        GnssNiEventReported gnss_ni_event_reported = 124;
+        RescuePartyResetReported rescue_party_reset_reported = 122 [(module) = "framework"];
+        SignedConfigReported signed_config_reported = 123 [(module) = "framework"];
+        GnssNiEventReported gnss_ni_event_reported = 124 [(module) = "framework"];
         BluetoothLinkLayerConnectionEvent bluetooth_link_layer_connection_event =
                 125 [(module) = "bluetooth"];
         BluetoothAclConnectionStateChanged bluetooth_acl_connection_state_changed =
                 126 [(module) = "bluetooth"];
         BluetoothScoConnectionStateChanged bluetooth_sco_connection_state_changed =
                 127 [(module) = "bluetooth"];
-        AppDowngraded app_downgraded = 128;
+        AppDowngraded app_downgraded = 128 [(module) = "framework"];
         AppOptimizedAfterDowngraded app_optimized_after_downgraded = 129;
-        LowStorageStateChanged low_storage_state_changed = 130;
-        GnssNfwNotificationReported gnss_nfw_notification_reported = 131;
-        GnssConfigurationReported gnss_configuration_reported = 132;
+        LowStorageStateChanged low_storage_state_changed = 130 [(module) = "framework"];
+        GnssNfwNotificationReported gnss_nfw_notification_reported = 131 [(module) = "framework"];
+        GnssConfigurationReported gnss_configuration_reported = 132 [(module) = "framework"];
         UsbPortOverheatEvent usb_port_overheat_event_reported = 133;
-        NfcErrorOccurred nfc_error_occurred = 134;
-        NfcStateChanged nfc_state_changed = 135;
-        NfcBeamOccurred nfc_beam_occurred = 136;
-        NfcCardemulationOccurred nfc_cardemulation_occurred = 137;
-        NfcTagOccurred nfc_tag_occurred = 138;
-        NfcHceTransactionOccurred nfc_hce_transaction_occurred = 139;
-        SeStateChanged se_state_changed = 140;
-        SeOmapiReported se_omapi_reported = 141;
-        BroadcastDispatchLatencyReported broadcast_dispatch_latency_reported = 142;
-        AttentionManagerServiceResultReported attention_manager_service_result_reported = 143;
-        AdbConnectionChanged adb_connection_changed = 144;
+        NfcErrorOccurred nfc_error_occurred = 134 [(module) = "nfc"];
+        NfcStateChanged nfc_state_changed = 135 [(module) = "nfc"];
+        NfcBeamOccurred nfc_beam_occurred = 136 [(module) = "nfc"];
+        NfcCardemulationOccurred nfc_cardemulation_occurred = 137 [(module) = "nfc"];
+        NfcTagOccurred nfc_tag_occurred = 138 [(module) = "nfc"];
+        NfcHceTransactionOccurred nfc_hce_transaction_occurred = 139 [(module) = "nfc"];
+        SeStateChanged se_state_changed = 140 [(module) = "secure_element"];
+        SeOmapiReported se_omapi_reported = 141 [(module) = "secure_element"];
+        BroadcastDispatchLatencyReported broadcast_dispatch_latency_reported =
+                142 [(module) = "framework"];
+        AttentionManagerServiceResultReported attention_manager_service_result_reported =
+                143 [(module) = "framework"];
+        AdbConnectionChanged adb_connection_changed = 144 [(module) = "framework"];
         SpeechDspStatReported speech_dsp_stat_reported = 145;
-        UsbContaminantReported usb_contaminant_reported = 146;
-        WatchdogRollbackOccurred watchdog_rollback_occurred = 147;
-        BiometricSystemHealthIssueDetected biometric_system_health_issue_detected = 148;
+        UsbContaminantReported usb_contaminant_reported = 146 [(module) = "framework"];
+        WatchdogRollbackOccurred watchdog_rollback_occurred = 147 [(module) = "framework"];
+        BiometricSystemHealthIssueDetected biometric_system_health_issue_detected =
+                148 [(module) = "framework"];
         BubbleUIChanged bubble_ui_changed = 149 [(module) = "sysui"];
-        ScheduledJobConstraintChanged scheduled_job_constraint_changed = 150;
+        ScheduledJobConstraintChanged scheduled_job_constraint_changed =
+                150 [(module) = "framework"];
         BluetoothActiveDeviceChanged bluetooth_active_device_changed =
                 151 [(module) = "bluetooth"];
         BluetoothA2dpPlaybackStateChanged bluetooth_a2dp_playback_state_changed =
@@ -271,35 +282,38 @@
                 166 [(module) = "bluetooth"];
         BluetoothSmpPairingEventReported bluetooth_smp_pairing_event_reported =
                 167 [(module) = "bluetooth"];
-        ScreenTimeoutExtensionReported screen_timeout_extension_reported = 168;
-        ProcessStartTime process_start_time = 169;
+        ScreenTimeoutExtensionReported screen_timeout_extension_reported =
+                168 [(module) = "framework"];
+        ProcessStartTime process_start_time = 169 [(module) = "framework"];
         PermissionGrantRequestResultReported permission_grant_request_result_reported =
-            170 [(module) = "permissioncontroller"];
+                170 [(module) = "permissioncontroller"];
         BluetoothSocketConnectionStateChanged bluetooth_socket_connection_state_changed = 171;
         DeviceIdentifierAccessDenied device_identifier_access_denied =
                 172 [(module) = "telephony_common"];
-        BubbleDeveloperErrorReported bubble_developer_error_reported = 173;
+        BubbleDeveloperErrorReported bubble_developer_error_reported = 173 [(module) = "framework"];
         AssistGestureStageReported assist_gesture_stage_reported = 174 [(module) = "sysui"];
         AssistGestureFeedbackReported assist_gesture_feedback_reported = 175 [(module) = "sysui"];
         AssistGestureProgressReported assist_gesture_progress_reported = 176 [(module) = "sysui"];
-        TouchGestureClassified touch_gesture_classified = 177;
-        HiddenApiUsed hidden_api_used = 178 [(allow_from_any_uid) = true];
+        TouchGestureClassified touch_gesture_classified = 177 [(module) = "framework"];
+        HiddenApiUsed hidden_api_used = 178 [(allow_from_any_uid) = true, (module) = "framework"];
         StyleUIChanged style_ui_changed = 179 [(module) = "sysui"];
         PrivacyIndicatorsInteracted privacy_indicators_interacted =
-            180 [(module) = "permissioncontroller"];
-        AppInstallOnExternalStorageReported app_install_on_external_storage_reported = 181;
+                180 [(module) = "permissioncontroller"];
+        AppInstallOnExternalStorageReported app_install_on_external_storage_reported =
+                181 [(module) = "framework"];
         NetworkStackReported network_stack_reported = 182 [(module) = "network_stack"];
-        AppMovedStorageReported app_moved_storage_reported = 183;
-        BiometricEnrolled biometric_enrolled = 184;
-        SystemServerWatchdogOccurred system_server_watchdog_occurred = 185;
-        TombStoneOccurred tomb_stone_occurred = 186;
+        AppMovedStorageReported app_moved_storage_reported = 183 [(module) = "framework"];
+        BiometricEnrolled biometric_enrolled = 184 [(module) = "framework"];
+        SystemServerWatchdogOccurred system_server_watchdog_occurred = 185 [(module) = "framework"];
+        TombStoneOccurred tomb_stone_occurred = 186 [(module) = "framework"];
         BluetoothClassOfDeviceReported bluetooth_class_of_device_reported =
                 187 [(module) = "bluetooth"];
         IntelligenceEventReported intelligence_event_reported =
-            188 [(module) = "intelligence"];
-        ThermalThrottlingSeverityStateChanged thermal_throttling_severity_state_changed = 189;
+                188 [(module) = "intelligence"];
+        ThermalThrottlingSeverityStateChanged thermal_throttling_severity_state_changed =
+                189 [(module) = "framework"];
         RoleRequestResultReported role_request_result_reported =
-            190 [(module) = "permissioncontroller"];
+                190 [(module) = "permissioncontroller"];
         MediametricsAudiopolicyReported mediametrics_audiopolicy_reported = 191;
         MediametricsAudiorecordReported mediametrics_audiorecord_reported = 192;
         MediametricsAudiothreadReported mediametrics_audiothread_reported = 193;
@@ -314,38 +328,40 @@
         CarPowerStateChanged car_power_state_changed = 203 [(module) = "car"];
         GarageModeInfo garage_mode_info = 204 [(module) = "car"];
         TestAtomReported test_atom_reported = 205 [(module) = "cts"];
-        ContentCaptureCallerMismatchReported content_capture_caller_mismatch_reported = 206;
-        ContentCaptureServiceEvents content_capture_service_events = 207;
-        ContentCaptureSessionEvents content_capture_session_events = 208;
-        ContentCaptureFlushed content_capture_flushed = 209;
-        LocationManagerApiUsageReported location_manager_api_usage_reported = 210;
+        ContentCaptureCallerMismatchReported content_capture_caller_mismatch_reported =
+                206 [(module) = "framework"];
+        ContentCaptureServiceEvents content_capture_service_events = 207 [(module) = "framework"];
+        ContentCaptureSessionEvents content_capture_session_events = 208 [(module) = "framework"];
+        ContentCaptureFlushed content_capture_flushed = 209 [(module) = "framework"];
+        LocationManagerApiUsageReported location_manager_api_usage_reported =
+                210 [(module) = "framework"];
         ReviewPermissionsFragmentResultReported review_permissions_fragment_result_reported =
-            211 [(module) = "permissioncontroller"];
+                211 [(module) = "permissioncontroller"];
         RuntimePermissionsUpgradeResult runtime_permissions_upgrade_result =
-            212 [(module) = "permissioncontroller"];
+                212 [(module) = "permissioncontroller"];
         GrantPermissionsActivityButtonActions grant_permissions_activity_button_actions =
-            213 [(module) = "permissioncontroller"];
+                213 [(module) = "permissioncontroller"];
         LocationAccessCheckNotificationAction location_access_check_notification_action =
-            214 [(module) = "permissioncontroller"];
+                214 [(module) = "permissioncontroller"];
         AppPermissionFragmentActionReported app_permission_fragment_action_reported =
-            215 [(module) = "permissioncontroller"];
+                215 [(module) = "permissioncontroller"];
         AppPermissionFragmentViewed app_permission_fragment_viewed =
-            216 [(module) = "permissioncontroller"];
+                216 [(module) = "permissioncontroller"];
         AppPermissionsFragmentViewed app_permissions_fragment_viewed =
-            217 [(module) = "permissioncontroller"];
+                217 [(module) = "permissioncontroller"];
         PermissionAppsFragmentViewed permission_apps_fragment_viewed =
-            218  [(module) = "permissioncontroller"];
+                218  [(module) = "permissioncontroller"];
         TextSelectionEvent text_selection_event = 219  [(module) = "textclassifier"];
         TextLinkifyEvent text_linkify_event = 220  [(module) = "textclassifier"];
         ConversationActionsEvent conversation_actions_event = 221  [(module) = "textclassifier"];
         LanguageDetectionEvent language_detection_event = 222  [(module) = "textclassifier"];
-        ExclusionRectStateChanged exclusion_rect_state_changed = 223;
+        ExclusionRectStateChanged exclusion_rect_state_changed = 223 [(module) = "framework"];
         BackGesture back_gesture_reported_reported = 224 [(module) = "sysui"];
         UpdateEngineUpdateAttemptReported update_engine_update_attempt_reported = 225;
         UpdateEngineSuccessfulUpdateReported update_engine_successful_update_reported = 226;
-        CameraActionEvent camera_action_event = 227;
+        CameraActionEvent camera_action_event = 227 [(module) = "framework"];
         AppCompatibilityChangeReported app_compatibility_change_reported =
-            228 [(allow_from_any_uid) = true];
+            228 [(allow_from_any_uid) = true, (module) = "framework"];
         PerfettoUploaded perfetto_uploaded = 229 [(module) = "perfetto"];
         VmsClientConnectionStateChanged vms_client_connection_state_changed =
                 230 [(module) = "car"];
@@ -356,96 +372,111 @@
         MediaProviderSchemaChange media_provider_schema_change = 236 [(module) = "mediaprovider"];
         MediaProviderIdleMaintenance media_provider_idle_maintenance =
             237 [(module) = "mediaprovider"];
-        RebootEscrowRecoveryReported reboot_escrow_recovery_reported = 238;
-        BootTimeEventDuration boot_time_event_duration_reported = 239;
-        BootTimeEventElapsedTime boot_time_event_elapsed_time_reported = 240;
+        RebootEscrowRecoveryReported reboot_escrow_recovery_reported = 238 [(module) = "framework"];
+        BootTimeEventDuration boot_time_event_duration_reported = 239 [(module) = "framework"];
+        BootTimeEventElapsedTime boot_time_event_elapsed_time_reported =
+                240 [(module) = "framework"];
         BootTimeEventUtcTime boot_time_event_utc_time_reported = 241;
-        BootTimeEventErrorCode boot_time_event_error_code_reported = 242;
-        UserspaceRebootReported userspace_reboot_reported = 243;
-        NotificationReported notification_reported = 244;
+        BootTimeEventErrorCode boot_time_event_error_code_reported = 242 [(module) = "framework"];
+        UserspaceRebootReported userspace_reboot_reported = 243 [(module) = "framework"];
+        NotificationReported notification_reported = 244 [(module) = "framework"];
         NotificationPanelReported notification_panel_reported = 245;
         NotificationChannelModified notification_panel_modified = 246;
-        IntegrityCheckResultReported integrity_check_result_reported = 247;
-        IntegrityRulesPushed integrity_rules_pushed = 248;
+        IntegrityCheckResultReported integrity_check_result_reported = 247 [(module) = "framework"];
+        IntegrityRulesPushed integrity_rules_pushed = 248 [(module) = "framework"];
         CellBroadcastMessageReported cb_message_reported =
             249 [(module) = "cellbroadcast"];
         CellBroadcastMessageError cb_message_error =
             250 [(module) = "cellbroadcast"];
+        WifiHealthStatReported wifi_health_stat_reported = 251 [(module) = "wifi"];
+        WifiFailureStatReported wifi_failure_stat_reported = 252 [(module) = "wifi"];
+        WifiConnectionResultReported wifi_connection_result_reported = 253 [(module) = "wifi"];
+        AppFreezeChanged app_freeze_changed = 254 [(module) = "framework"];
+        SdkExtensionStatus sdk_extension_status = 354;
     }
 
     // Pulled events will start at field 10000.
-    // Next: 10071
+    // Next: 10074
     oneof pulled {
-        WifiBytesTransfer wifi_bytes_transfer = 10000;
-        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001;
-        MobileBytesTransfer mobile_bytes_transfer = 10002;
-        MobileBytesTransferByFgBg mobile_bytes_transfer_by_fg_bg = 10003;
-        BluetoothBytesTransfer bluetooth_bytes_transfer = 10006;
-        KernelWakelock kernel_wakelock = 10004;
+        WifiBytesTransfer wifi_bytes_transfer = 10000 [(module) = "framework"];
+        WifiBytesTransferByFgBg wifi_bytes_transfer_by_fg_bg = 10001 [(module) = "framework"];
+        MobileBytesTransfer mobile_bytes_transfer = 10002 [(module) = "framework"];
+        MobileBytesTransferByFgBg mobile_bytes_transfer_by_fg_bg = 10003 [(module) = "framework"];
+        BluetoothBytesTransfer bluetooth_bytes_transfer = 10006 [(module) = "framework"];
+        KernelWakelock kernel_wakelock = 10004 [(module) = "framework"];
         SubsystemSleepState subsystem_sleep_state = 10005;
-        CpuTimePerFreq cpu_time_per_freq = 10008;
-        CpuTimePerUid cpu_time_per_uid = 10009;
-        CpuTimePerUidFreq cpu_time_per_uid_freq = 10010;
-        WifiActivityInfo wifi_activity_info = 10011;
-        ModemActivityInfo modem_activity_info = 10012;
-        BluetoothActivityInfo bluetooth_activity_info = 10007;
-        ProcessMemoryState process_memory_state = 10013;
-        SystemElapsedRealtime system_elapsed_realtime = 10014;
-        SystemUptime system_uptime = 10015;
-        CpuActiveTime cpu_active_time = 10016;
-        CpuClusterTime cpu_cluster_time = 10017;
+        CpuTimePerFreq cpu_time_per_freq = 10008 [(module) = "framework"];
+        CpuTimePerUid cpu_time_per_uid = 10009 [(module) = "framework"];
+        CpuTimePerUidFreq cpu_time_per_uid_freq = 10010 [(module) = "framework"];
+        WifiActivityInfo wifi_activity_info = 10011 [(module) = "framework"];
+        ModemActivityInfo modem_activity_info = 10012 [(module) = "framework"];
+        BluetoothActivityInfo bluetooth_activity_info = 10007 [(module) = "framework"];
+        ProcessMemoryState process_memory_state = 10013 [(module) = "framework"];
+        SystemElapsedRealtime system_elapsed_realtime = 10014 [(module) = "framework"];
+        SystemUptime system_uptime = 10015 [(module) = "framework"];
+        CpuActiveTime cpu_active_time = 10016 [(module) = "framework"];
+        CpuClusterTime cpu_cluster_time = 10017 [(module) = "framework"];
         DiskSpace disk_space = 10018 [deprecated=true];
-        RemainingBatteryCapacity remaining_battery_capacity = 10019;
-        FullBatteryCapacity full_battery_capacity = 10020;
-        Temperature temperature = 10021;
-        BinderCalls binder_calls = 10022;
-        BinderCallsExceptions binder_calls_exceptions = 10023;
-        LooperStats looper_stats = 10024;
-        DiskStats disk_stats = 10025;
-        DirectoryUsage directory_usage = 10026;
-        AppSize app_size = 10027;
-        CategorySize category_size = 10028;
-        ProcStats proc_stats = 10029;
-        BatteryVoltage battery_voltage = 10030;
-        NumFingerprintsEnrolled num_fingerprints_enrolled = 10031;
-        DiskIo disk_io = 10032;
-        PowerProfile power_profile = 10033;
-        ProcStatsPkgProc proc_stats_pkg_proc = 10034;
-        ProcessCpuTime process_cpu_time = 10035;
-        CpuTimePerThreadFreq cpu_time_per_thread_freq = 10037;
+        RemainingBatteryCapacity remaining_battery_capacity = 10019 [(module) = "framework"];
+        FullBatteryCapacity full_battery_capacity = 10020 [(module) = "framework"];
+        Temperature temperature = 10021 [(module) = "framework"];
+        BinderCalls binder_calls = 10022 [(module) = "framework"];
+        BinderCallsExceptions binder_calls_exceptions = 10023 [(module) = "framework"];
+        LooperStats looper_stats = 10024 [(module) = "framework"];
+        DiskStats disk_stats = 10025 [(module) = "framework"];
+        DirectoryUsage directory_usage = 10026 [(module) = "framework"];
+        AppSize app_size = 10027 [(module) = "framework"];
+        CategorySize category_size = 10028 [(module) = "framework"];
+        ProcStats proc_stats = 10029 [(module) = "framework"];
+        BatteryVoltage battery_voltage = 10030 [(module) = "framework"];
+        NumFingerprintsEnrolled num_fingerprints_enrolled = 10031 [(module) = "framework"];
+        DiskIo disk_io = 10032 [(module) = "framework"];
+        PowerProfile power_profile = 10033 [(module) = "framework"];
+        ProcStatsPkgProc proc_stats_pkg_proc = 10034 [(module) = "framework"];
+        ProcessCpuTime process_cpu_time = 10035 [(module) = "framework"];
+        CpuTimePerThreadFreq cpu_time_per_thread_freq = 10037 [(module) = "framework"];
         OnDevicePowerMeasurement on_device_power_measurement = 10038;
-        DeviceCalculatedPowerUse device_calculated_power_use = 10039;
-        DeviceCalculatedPowerBlameUid device_calculated_power_blame_uid = 10040;
-        DeviceCalculatedPowerBlameOther device_calculated_power_blame_other = 10041;
-        ProcessMemoryHighWaterMark process_memory_high_water_mark = 10042;
-        BatteryLevel battery_level = 10043;
-        BuildInformation build_information = 10044;
-        BatteryCycleCount battery_cycle_count = 10045;
-        DebugElapsedClock debug_elapsed_clock = 10046;
-        DebugFailingElapsedClock debug_failing_elapsed_clock = 10047;
-        NumFacesEnrolled num_faces_enrolled = 10048;
-        RoleHolder role_holder = 10049;
-        DangerousPermissionState dangerous_permission_state = 10050;
+        DeviceCalculatedPowerUse device_calculated_power_use = 10039 [(module) = "framework"];
+        DeviceCalculatedPowerBlameUid device_calculated_power_blame_uid =
+                10040 [(module) = "framework"];
+        DeviceCalculatedPowerBlameOther device_calculated_power_blame_other =
+                10041 [(module) = "framework"];
+        ProcessMemoryHighWaterMark process_memory_high_water_mark = 10042 [(module) = "framework"];
+        BatteryLevel battery_level = 10043 [(module) = "framework"];
+        BuildInformation build_information = 10044 [(module) = "framework"];
+        BatteryCycleCount battery_cycle_count = 10045 [(module) = "framework"];
+        DebugElapsedClock debug_elapsed_clock = 10046 [(module) = "framework"];
+        DebugFailingElapsedClock debug_failing_elapsed_clock = 10047 [(module) = "framework"];
+        NumFacesEnrolled num_faces_enrolled = 10048 [(module) = "framework"];
+        RoleHolder role_holder = 10049 [(module) = "framework"];
+        DangerousPermissionState dangerous_permission_state = 10050 [(module) = "framework"];
         TrainInfo train_info = 10051;
-        TimeZoneDataInfo time_zone_data_info = 10052;
-        ExternalStorageInfo external_storage_info = 10053;
+        TimeZoneDataInfo time_zone_data_info = 10052 [(module) = "framework"];
+        ExternalStorageInfo external_storage_info = 10053 [(module) = "framework"];
         GpuStatsGlobalInfo gpu_stats_global_info = 10054;
         GpuStatsAppInfo gpu_stats_app_info = 10055;
-        SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true];
-        AppsOnExternalStorageInfo apps_on_external_storage_info = 10057;
-        FaceSettings face_settings = 10058;
-        CoolingDevice cooling_device = 10059;
-        AppOps app_ops = 10060;
-        ProcessSystemIonHeapSize process_system_ion_heap_size = 10061;
+        SystemIonHeapSize system_ion_heap_size = 10056 [deprecated = true, (module) = "framework"];
+        AppsOnExternalStorageInfo apps_on_external_storage_info = 10057 [(module) = "framework"];
+        FaceSettings face_settings = 10058 [(module) = "framework"];
+        CoolingDevice cooling_device = 10059 [(module) = "framework"];
+        AppOps app_ops = 10060 [(module) = "framework"];
+        ProcessSystemIonHeapSize process_system_ion_heap_size = 10061 [(module) = "framework"];
         SurfaceflingerStatsGlobalInfo surfaceflinger_stats_global_info = 10062;
         SurfaceflingerStatsLayerInfo surfaceflinger_stats_layer_info = 10063;
-        ProcessMemorySnapshot process_memory_snapshot = 10064;
+        ProcessMemorySnapshot process_memory_snapshot = 10064 [(module) = "framework"];
         VmsClientStats vms_client_stats = 10065 [(module) = "car"];
-        NotificationRemoteViews notification_remote_views = 10066;
-        DangerousPermissionStateSampled dangerous_permission_state_sampled = 10067;
+        NotificationRemoteViews notification_remote_views = 10066 [(module) = "framework"];
+        DangerousPermissionStateSampled dangerous_permission_state_sampled =
+                10067 [(module) = "framework"];
         GraphicsStats graphics_stats = 10068;
-        RuntimeAppOpsAccess runtime_app_ops_access = 10069;
-        IonHeapSize ion_heap_size = 10070;
+        RuntimeAppOpAccess runtime_app_op_access = 10069 [(module) = "framework"];
+        IonHeapSize ion_heap_size = 10070 [(module) = "framework"];
+        PackageNotificationPreferences package_notification_preferences =
+                10071 [(module) = "framework"];
+        PackageNotificationChannelPreferences package_notification_channel_preferences =
+                10072 [(module) = "framework"];
+        PackageNotificationChannelGroupPreferences package_notification_channel_group_preferences =
+                10073 [(module) = "framework"];
     }
 
     // DO NOT USE field numbers above 100,000 in AOSP.
@@ -541,7 +572,8 @@
  */
 message ScreenStateChanged {
     // New screen state, from frameworks/base/core/proto/android/view/enums.proto.
-    optional android.view.DisplayStateEnum state = 1 [(state_field_option).option = EXCLUSIVE];
+    optional android.view.DisplayStateEnum state = 1
+            [(state_field_option).option = EXCLUSIVE_STATE, (state_field_option).nested = false];
 }
 
 /**
@@ -552,10 +584,11 @@
  *   frameworks/base/services/core/java/com/android/server/am/BatteryStatsService.java
  */
 message UidProcessStateChanged {
-    optional int32 uid = 1 [(state_field_option).option = PRIMARY, (is_uid) = true];
+    optional int32 uid = 1 [(state_field_option).option = PRIMARY_FIELD, (is_uid) = true];
 
     // The state, from frameworks/base/core/proto/android/app/enums.proto.
-    optional android.app.ProcessStateEnum state = 2 [(state_field_option).option = EXCLUSIVE];
+    optional android.app.ProcessStateEnum state = 2
+            [(state_field_option).option = EXCLUSIVE_STATE, (state_field_option).nested = false];
 }
 
 /**
@@ -587,7 +620,7 @@
         ASLEEP = 1;
         AWAKE = 2;
     }
-    optional State state = 1 [(state_field_option).option = EXCLUSIVE];
+    optional State state = 1 [(state_field_option).option = EXCLUSIVE_STATE];
 }
 
 /**
@@ -606,7 +639,7 @@
         CRITICAL = 4;   // critical memory.
 
     }
-    optional State factor = 1 [(state_field_option).option = EXCLUSIVE];
+    optional State factor = 1 [(state_field_option).option = EXCLUSIVE_STATE];
 }
 
 /**
@@ -639,6 +672,81 @@
 }
 
 /**
+ * Logs the change in wifi health.
+ *
+ * Logged from:
+ *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiDataStall.java
+ */
+message WifiHealthStatReported {
+    // duration this stat is obtained over in milliseconds
+    optional int32 duration_millis = 1;
+    // whether wifi is classified as sufficient for the user's data traffic, determined
+    // by whether the calculated throughput exceeds the average demand within |duration_millis|
+    optional bool is_sufficient = 2;
+    // whether the calculated throughput is exceeds the minimum required for typical usage
+    optional bool is_throughput_good = 3;
+    // whether cellular data is available
+    optional bool is_cell_data_available = 4;
+    // the WLAN channel the connected network is on (ie. 2412)
+    optional int32 frequency = 5;
+}
+
+/**
+ * Logged when wifi detects a significant change in connection failure rate.
+ *
+ * Logged from: frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiHealthMonitor.java
+ *
+ */
+message WifiFailureStatReported {
+    enum AbnormalityType {
+        UNKNOWN = 0;
+        SIGNIFICANT_INCREASE = 1;
+        SIGNIFICANT_DECREASE = 2;
+        SIMPLY_HIGH = 3;
+    }
+    enum FailureType {
+        FAILURE_UNKNOWN = 0;
+        FAILURE_CONNECTION = 1;
+        FAILURE_ASSOCIATION_REJECTION = 2;
+        FAILURE_ASSOCIATION_TIMEOUT = 3;
+        FAILURE_AUTHENTICATION = 4;
+        FAILURE_NON_LOCAL_DISCONNECTION = 5;
+        FAILURE_SHORT_CONNECTION_DUE_TO_NON_LOCAL_DISCONNECTION = 6;
+    }
+    // Reason for uploading this stat
+    optional AbnormalityType abnormality_type = 1;
+    // The particular type of failure
+    optional FailureType failure_type = 2;
+    // How many times we have encountered this combination of AbnormalityType and FailureType
+    optional int32 failure_count = 3;
+}
+
+/**
+ * Logs whether a wifi connection is successful and reasons for failure if it isn't.
+ *
+ * Logged from:
+ *   frameworks/opt/net/wifi/service/java/com/android/server/wifi/ClientModeImpl.java
+ */
+message WifiConnectionResultReported {
+    enum FailureCode {
+        FAILURE_UNKNOWN = 0;
+        FAILURE_ASSOCIATION_TIMEOUT = 1;
+        FAILURE_ASSOCIATION_REJECTION = 2;
+        FAILURE_AUTHENTICATION_GENERAL = 3;
+        FAILURE_AUTHENTICATION_EAP = 4;
+        FAILURE_DHCP = 5;
+        FAILURE_NETWORK_DISCONNECTION = 6;
+        FAILURE_ROAM_TIMEOUT = 7;
+    }
+    // true represents a successful connection
+    optional bool connection_result = 1;
+    // reason for the connection failure
+    optional FailureCode failure_code = 2;
+    // scan rssi before the connection attempt
+    optional int32 rssi = 3;
+}
+
+/**
  * Logs when memory stats of a process is reported.
  *
  * Logged from:
@@ -693,7 +801,8 @@
  *   packages/apps/Bluetooth/src/com/android/bluetooth/gatt/AppScanStats.java
  */
 message BleScanStateChanged {
-    repeated AttributionNode attribution_node = 1;
+    repeated AttributionNode attribution_node = 1
+            [(state_field_option).option = PRIMARY_FIELD_FIRST_UID];
 
     enum State {
         OFF = 0;
@@ -701,14 +810,19 @@
         // RESET indicates all ble stopped. Used when it (re)starts (e.g. after it crashes).
         RESET = 2;
     }
-    optional State state = 2;
+    optional State state = 2 [
+        (state_field_option).option = EXCLUSIVE_STATE,
+        (state_field_option).default_state_value = 0 /* State.OFF */,
+        (state_field_option).reset_state_value = 2 /* State.RESET */,
+        (state_field_option).nested = true
+    ];
 
     // Does the scan have a filter.
-    optional bool is_filtered = 3;
+    optional bool is_filtered = 3 [(state_field_option).option = PRIMARY_FIELD];
     // Whether the scan is a CALLBACK_TYPE_FIRST_MATCH scan. Called 'background' scan internally.
-    optional bool is_first_match = 4;
+    optional bool is_first_match = 4 [(state_field_option).option = PRIMARY_FIELD];
     // Whether the scan set to piggy-back off the results of other scans (SCAN_MODE_OPPORTUNISTIC).
-    optional bool is_opportunistic = 5;
+    optional bool is_opportunistic = 5 [(state_field_option).option = PRIMARY_FIELD];
 }
 
 /**
@@ -932,11 +1046,11 @@
 
     // The type (level) of the wakelock; e.g. a partial wakelock or a full wakelock.
     // From frameworks/base/core/proto/android/os/enums.proto.
-    optional android.os.WakeLockLevelEnum type = 2 [(state_field_option).option = PRIMARY];
+    optional android.os.WakeLockLevelEnum type = 2 [(state_field_option).option = PRIMARY_FIELD];
     ;
 
     // The wakelock tag (Called tag in the Java API, sometimes name elsewhere).
-    optional string tag = 3 [(state_field_option).option = PRIMARY];
+    optional string tag = 3 [(state_field_option).option = PRIMARY_FIELD];
 
     enum State {
         RELEASE = 0;
@@ -944,7 +1058,11 @@
         CHANGE_RELEASE = 2;
         CHANGE_ACQUIRE = 3;
     }
-    optional State state = 4 [(state_field_option).option = EXCLUSIVE];
+    optional State state = 4 [
+        (state_field_option).option = EXCLUSIVE_STATE,
+        (state_field_option).default_state_value = 0,
+        (state_field_option).nested = true
+    ];
 }
 
 /**
@@ -1149,6 +1267,8 @@
 }
 
 /**
+ * This atom is deprecated starting in R.
+ *
  * Logs when an app causes Wifi to run. In this context, 'to run' means to use Wifi Client Mode.
  * TODO: Include support for Hotspot, perhaps by using an extra field to denote 'mode'.
  * Note that Wifi Scanning is monitored separately in WifiScanStateChanged.
@@ -1761,6 +1881,8 @@
     // Set by RollbackPackageHealthObserver to be the package that is failing when a rollback
     // is initiated. Empty if the package is unknown.
     optional string failing_package_name = 5;
+
+    optional TrainExperimentIds experiment_ids = 6 [(log_mode) = MODE_BYTES];
 }
 
 /**
@@ -3128,9 +3250,9 @@
  *     services/core/java/com/android/server/wm/Session.java
  */
 message OverlayStateChanged {
-    optional int32 uid = 1 [(state_field_option).option = PRIMARY, (is_uid) = true];
+    optional int32 uid = 1 [(state_field_option).option = PRIMARY_FIELD, (is_uid) = true];
 
-    optional string package_name = 2 [(state_field_option).option = PRIMARY];
+    optional string package_name = 2 [(state_field_option).option = PRIMARY_FIELD];
 
     optional bool using_alert_window = 3;
 
@@ -3138,7 +3260,11 @@
         ENTERED = 1;
         EXITED = 2;
     }
-    optional State state = 4 [(state_field_option).option = EXCLUSIVE];
+    optional State state = 4 [
+        (state_field_option).option = EXCLUSIVE_STATE,
+        (state_field_option).nested = false,
+        (state_field_option).default_state_value = 2
+    ];
 }
 
 /*
@@ -3304,7 +3430,7 @@
  */
 message AppDied {
     // timestamp(elapsedRealtime) of record creation
-    optional uint64 timestamp_millis = 1 [(state_field_option).option = EXCLUSIVE];
+    optional uint64 timestamp_millis = 1 [(state_field_option).option = EXCLUSIVE_STATE];
 }
 
 /**
@@ -3355,27 +3481,25 @@
     // A small system-assigned identifier for the notification.
     // Locally probably-unique, but expect collisions across users and/or days.
     optional int32 instance_id = 4;
-    // The app-assigned notification ID and tag
-    optional int32 notification_id = 5;
-    optional string notification_tag = 6;
-    optional string channel_id = 7;  // App-assigned channel ID
+    optional int32 notification_id_hash = 5;  // Small hash of the app-assigned notif ID + tag
+    optional int32 channel_id_hash = 6;  // Small hash of app-assigned channel ID
 
     // Grouping information
-    optional string group_id = 8;  // Group the notification currently belongs to
-    optional int32 group_instance_id = 9;  // Instance_id of the group-summary notification
-    optional bool is_group_summary = 10;  // Tags the group-summary notification
+    optional int32 group_id_hash = 7;  // Small hash of the group ID of the notification
+    optional int32 group_instance_id = 8;  // Instance_id of the group-summary notification
+    optional bool is_group_summary = 9;  // Tags the group-summary notification
 
     // Attributes
-    optional string category = 11;   // App-assigned notification category (API-defined strings)
-    optional int32 style = 12;       // App-assigned notification style
-    optional int32 num_people = 13;  // Number of Person records attached to the notification
+    optional string category = 10;   // App-assigned notification category (API-defined strings)
+    optional int32 style = 11;       // App-assigned notification style
+    optional int32 num_people = 12;  // Number of Person records attached to the notification
 
     // Ordering, importance and interruptiveness
 
-    optional int32 position = 14;    // Position in NotificationManager's list
+    optional int32 position = 13;    // Position in NotificationManager's list
 
-    optional android.stats.sysui.NotificationImportance importance = 15;
-    optional int32 alerting = 16;    // Bitfield, 1=buzz 2=beep 4=blink
+    optional android.stats.sysui.NotificationImportance importance = 14;
+    optional int32 alerting = 15;    // Bitfield, 1=buzz 2=beep 4=blink
 
     enum NotificationImportanceExplanation {
         IMPORTANCE_EXPLANATION_UNKNOWN = 0;
@@ -3387,12 +3511,12 @@
         IMPORTANCE_EXPLANATION_APP_PRE_CHANNELS = 5;
     }
 
-    optional NotificationImportanceExplanation importance_source = 17;
-    optional android.stats.sysui.NotificationImportance importance_initial = 18;
-    optional NotificationImportanceExplanation importance_initial_source = 19;
-    optional android.stats.sysui.NotificationImportance importance_asst = 20;
-    optional int32 assistant_hash = 21;
-    optional float assistant_ranking_score = 22;
+    optional NotificationImportanceExplanation importance_source = 16;
+    optional android.stats.sysui.NotificationImportance importance_initial = 17;
+    optional NotificationImportanceExplanation importance_initial_source = 18;
+    optional android.stats.sysui.NotificationImportance importance_asst = 19;
+    optional int32 assistant_hash = 20;
+    optional float assistant_ranking_score = 21;
 }
 
 message Notification {
@@ -3593,6 +3717,7 @@
 
 /**
  * Potential experiment ids that goes with a train install.
+ * Should be kept in sync with experiment_ids.proto.
  */
 message TrainExperimentIds {
     repeated int64 experiment_id = 1;
@@ -3652,6 +3777,8 @@
     // user id
     optional int32 user_id = 8;
     optional int32 reason = 9;
+    // Whether or not this is a rollback event
+    optional bool is_rollback = 10;
 }
 
 /* Test atom, is not logged anywhere */
@@ -3824,7 +3951,7 @@
         DIALOG_LINE_ITEM = 5;
     }
 
-    optional Type type = 1 [(state_field_option).option = EXCLUSIVE];
+    optional Type type = 1 [(state_field_option).option = EXCLUSIVE_STATE];
 
     // Used if the type is LINE_ITEM
     optional string package_name = 2;
@@ -4134,6 +4261,9 @@
         // Time since last factory reset.
         // Logged from bootstat.
         FACTORY_RESET_TIME_SINCE_RESET = 18;
+        // Init's total time spent for completing the 1st stage.
+        // Logged from bootstat.
+        ANDROID_INIT_STAGE_1 = 19;
     }
 
     // Type of the event.
@@ -4161,19 +4291,19 @@
         // BOOT_COMPLETE for device with no encryption.
         BOOT_COMPLETE_NO_ENCRYPTION = 4;
         // Adjusted BOOT_COMPLETE for encrypted device extracting decryption time.
-        BOOT_COMPLETE_POST_DESCRYPT = 5;
+        BOOT_COMPLETE_POST_DECRYPT = 5;
         // BOOT_COMPLETE after factory reset.
         FACTORY_RESET_BOOT_COMPLETE = 6;
         // BOOT_COMPLETE_NO_ENCRYPTION after factory reset.
         FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION = 7;
-        // BOOT_COMPLETE_POST_DESCRYPT after factory reset.
-        FACTORY_RESET_BOOT_COMPLETE_POST_DESCRYPT = 8;
+        // BOOT_COMPLETE_POST_DECRYPT after factory reset.
+        FACTORY_RESET_BOOT_COMPLETE_POST_DECRYPT = 8;
         // BOOT_COMPLETE after OTA.
         OTA_BOOT_COMPLETE = 9;
         // BOOT_COMPLETE_NO_ENCRYPTION after OTA.
         OTA_BOOT_COMPLETE_NO_ENCRYPTION = 10;
-        // BOOT_COMPLETE_POST_DESCRYPT after OTA.
-        OTA_BOOT_COMPLETE_POST_DESCRYPT = 11;
+        // BOOT_COMPLETE_POST_DECRYPT after OTA.
+        OTA_BOOT_COMPLETE_POST_DECRYPT = 11;
         // Time when the system starts sending LOCKED_BOOT_COMPLETED broadcast.
         // Logged from  f/b/services/.../UserController.java
         FRAMEWORK_LOCKED_BOOT_COMPLETED = 12;
@@ -5343,6 +5473,65 @@
     optional NotificationRemoteViewsProto notification_remote_views = 1;
 }
 
+/**
+ * Atom that contains a list of a package's preferences, pulled from NotificationManagerService.java
+ */
+message PackageNotificationPreferences {
+    // Uid under which the package is installed.
+    optional int32 uid = 1;
+    // Notification importance, which specifies when and how a notification is displayed.
+    // Specified under core/java/android/app/NotificationManager.java.
+    optional int32 importance = 2;
+    // Lockscreen visibility as set by the user.
+    optional int32 visibility = 3;
+    // Bitfield mask indicating what fields were locked by the user (see LockableAppfields in
+    // PreferencesHelper.java)
+    optional int32 user_locked_fields = 4;
+}
+
+/**
+ * Atom that contains a list of a package's channel preferences, pulled from
+ * NotificationManagerService.java.
+ */
+message PackageNotificationChannelPreferences {
+    // Uid under which the package is installed.
+    optional int32 uid = 1;
+    // Channel's ID. Should always be available.
+    optional string channel_id = 2;
+    // Channel's name. Should always be available.
+    optional string channel_name = 3;
+    // Channel's description. Optionally set by the channel creator.
+    optional string description = 4;
+    // Notification importance, which specifies when and how a notification is displayed. Specified
+    // under core/java/android/app/NotificationManager.java.
+    optional int32 importance = 5;
+    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
+    // at core/java/android/app/NotificationChannel.java
+    optional int32 user_locked_fields = 6;
+    // Indicates if the channel was deleted by the app.
+    optional bool is_deleted = 7;
+}
+
+/**
+ * Atom that contains a list of a package's channel group preferences, pulled from
+ * NotificationManagerService.java.
+ */
+message PackageNotificationChannelGroupPreferences {
+    // Uid under which the package is installed.
+    optional int32 uid = 1;
+    // Channel Group's ID. Should always be available.
+    optional string group_id = 2;
+    // Channel Group's name. Should always be available.
+    optional string group_name = 3;
+    // Channel Group's description. Optionally set by group creator.
+    optional string description = 4;
+    // Indicates if notifications from this channel group are blocked.
+    optional bool is_blocked = 5;
+    // Bitmask representing which fields have been set by the user. See field bitmask descriptions
+    // at core/java/android/app/NotificationChannelGroup.java
+    optional int32 user_locked_fields = 6;
+}
+
 message PowerProfileProto {
     optional double cpu_suspend = 1;
 
@@ -6366,6 +6555,8 @@
         USER_DENIED_WITH_PREJUDICE_IN_SETTINGS = 14;
         // permission was automatically revoked after one-time permission expired
         AUTO_ONE_TIME_PERMISSION_REVOKED = 15;
+        // permission was automatically revoked for unused app
+        AUTO_UNUSED_APP_PERMISSION_REVOKED = 16;
     }
     // The result of the permission grant
     optional Result result = 6;
@@ -6858,6 +7049,20 @@
     optional string description = 6;
     optional Method method = 7;
     optional string mime_types = 8;
+
+    optional int64 get_constraints_count =  9;
+    optional int64 get_metadata_count = 10;
+    optional int64 can_handle_count = 11;
+    optional int64 process_drm_info_count = 12;
+    optional int64 acquire_drm_info_count = 13;
+    optional int64 save_rights_count = 14;
+    optional int64 get_original_mime_type_count = 15;
+    optional int64 get_drm_object_type_count = 16;
+    optional int64 check_rights_status_count = 17;
+    optional int64 remove_rights_count = 18;
+    optional int64 remove_all_rights_count = 19;
+    optional int64 open_convert_session_count = 20;
+    optional int64 open_decrypt_session_count = 21;
 }
 
 /**
@@ -6895,7 +7100,8 @@
     optional string method_name = 2;
 
     // True if the package is preinstalled.
-    optional bool is_preinstalled = 3;
+    // Starting from Android 11, this boolean is not set and will always be false.
+    optional bool is_preinstalled = 3 [deprecated = true];
 
     // True if the package is privileged.
     // Starting from Android 11, this boolean is not set and will always be false.
@@ -7390,6 +7596,9 @@
 
     // Button clicked by user - same as bit flags in buttons_presented with only single bit set
     optional int32 button_clicked = 5;
+
+    // id which identifies single session of user interacting with permission controller
+    optional int64 session_id = 6;
 }
 
 /**
@@ -7442,6 +7651,28 @@
 
     // The result of the permission grant
     optional bool permission_granted = 6;
+
+    // State of Permission Flags after grant as per android.content.pm.PermissionFlags
+    optional int32 permission_flags = 7;
+
+    enum Button {
+        UNDEFINED = 0;
+        // Allow button
+        ALLOW = 1;
+        // Deny button
+        DENY = 2;
+        // Ask every time button
+        ASK_EVERY_TIME = 3;
+        // Allow all the time button
+        ALLOW_ALWAYS = 4;
+        // Allow only while using the app button
+        ALLOW_FOREGROUND = 5;
+        // Same is Deny button but shown in while in use dialog
+        DENY_FOREGROUND = 6;
+    }
+
+    // Button pressed in the dialog
+    optional Button button_pressed = 8;
 }
 
 /**
@@ -7765,6 +7996,10 @@
     // Total time that was spent performing animations.
     // This is derived from the present-to-present layer histogram
     optional int64 animation_millis = 5;
+    // Total number of event connections tracked by SurfaceFlinger at the time
+    // of this pull. If this number grows prohibitively large, then this can
+    // cause jank due to resource contention.
+    optional int32 event_connection_count = 6;
 }
 
 /**
@@ -7806,6 +8041,10 @@
     // presentation, until the buffer was ready to be presented.
     optional FrameTimingHistogram post_to_acquire = 9
         [(android.os.statsd.log_mode) = MODE_BYTES];
+    // Frames missed latch because the acquire fence didn't fire
+    optional int64 late_acquire_frames = 10;
+    // Frames latched early because the desired present time was bad
+    optional int64 bad_desired_present_frames = 11;
 }
 
 /**
@@ -8034,15 +8273,15 @@
 /**
  * Message related to dangerous (runtime) app ops access
  */
-message RuntimeAppOpsAccess {
+message RuntimeAppOpAccess {
     // Uid of the package accessing app op
     optional int32 uid = 1 [(is_uid) = true];
 
     // Name of the package accessing app op
     optional string package_name = 2;
 
-    // operation id; maps to the OP_* constants in AppOpsManager.java
-    optional int32 op_id = 3;
+    // operation string id per OPSTR_ constants in AppOpsManager.java
+    optional string op = 3;
 
     // feature id; provided by developer when accessing related API, limited at 50 chars by API.
     // Features must be provided through manifest using <feature> tag available in R and above.
@@ -8192,3 +8431,52 @@
     // Exception message (or log message) associated with the error (max 1000 chars)
     optional string exception_message = 2;
 }
+
+/**
+ * Logs when the SDK Extensions test app has polled the current version.
+ * This is atom ID 354.
+ *
+ * Logged from:
+ *   vendor/google_testing/integration/packages/apps/SdkExtensionsTestApp/
+ */
+message SdkExtensionStatus {
+    enum ApiCallStatus {
+        CALL_NOT_ATTEMPTED = 0;
+        CALL_SUCCESSFUL = 1;
+        CALL_FAILED = 2;
+    }
+
+    optional ApiCallStatus result = 1;
+
+    // The R extension version, i.e. android.os.ext.SdkExtension.getExtensionVersion(R).
+    optional int32 r_extension_version = 2;
+
+    // A number identifying which particular symbol's call failed, if any. 0 means no missing symbol.
+    // "Failed" here can mean a symbol that wasn't meant to be visible was, or the other way around.
+    optional int32 failed_call_symbol = 3;
+}
+
+/**
+ * Logs when an app is frozen or unfrozen.
+ *
+ * Logged from:
+ *   frameworks/base/services/core/java/com/android/server/am/CachedAppOptimizer.java
+ */
+message AppFreezeChanged {
+  // The type of event.
+  enum Action {
+    UNKNOWN = 0;
+    FREEZE_APP = 1;
+    UNFREEZE_APP = 2;
+  }
+  optional Action action = 1;
+
+  // Pid of the process being frozen.
+  optional int32 pid = 2;
+
+  // Name of the process being frozen.
+  optional string process_name = 3;
+
+  // Time since last unfrozen.
+  optional int64 time_unfrozen_millis = 4;
+}
diff --git a/cmds/statsd/src/condition/CombinationConditionTracker.cpp b/cmds/statsd/src/condition/CombinationConditionTracker.cpp
index 69aae3d..2d7f912 100644
--- a/cmds/statsd/src/condition/CombinationConditionTracker.cpp
+++ b/cmds/statsd/src/condition/CombinationConditionTracker.cpp
@@ -18,15 +18,10 @@
 #include "Log.h"
 #include "CombinationConditionTracker.h"
 
-#include <log/logprint.h>
-
 namespace android {
 namespace os {
 namespace statsd {
 
-using std::map;
-using std::string;
-using std::unique_ptr;
 using std::unordered_map;
 using std::vector;
 
diff --git a/cmds/statsd/src/condition/ConditionTracker.h b/cmds/statsd/src/condition/ConditionTracker.h
index e94ea65..26de888 100644
--- a/cmds/statsd/src/condition/ConditionTracker.h
+++ b/cmds/statsd/src/condition/ConditionTracker.h
@@ -21,10 +21,8 @@
 #include "matchers/LogMatchingTracker.h"
 #include "matchers/matcher_util.h"
 
-#include <log/logprint.h>
 #include <utils/RefBase.h>
 
-#include <unordered_set>
 #include <unordered_map>
 
 namespace android {
diff --git a/cmds/statsd/src/condition/ConditionWizard.cpp b/cmds/statsd/src/condition/ConditionWizard.cpp
index 4f44a69..c542032 100644
--- a/cmds/statsd/src/condition/ConditionWizard.cpp
+++ b/cmds/statsd/src/condition/ConditionWizard.cpp
@@ -14,14 +14,11 @@
  * limitations under the License.
  */
 #include "ConditionWizard.h"
-#include <unordered_set>
 
 namespace android {
 namespace os {
 namespace statsd {
 
-using std::map;
-using std::string;
 using std::vector;
 
 ConditionState ConditionWizard::query(const int index, const ConditionKey& parameters,
diff --git a/cmds/statsd/src/condition/SimpleConditionTracker.cpp b/cmds/statsd/src/condition/SimpleConditionTracker.cpp
index 0c92149..61760f3 100644
--- a/cmds/statsd/src/condition/SimpleConditionTracker.cpp
+++ b/cmds/statsd/src/condition/SimpleConditionTracker.cpp
@@ -24,11 +24,7 @@
 namespace os {
 namespace statsd {
 
-using std::map;
-using std::string;
-using std::unique_ptr;
 using std::unordered_map;
-using std::vector;
 
 SimpleConditionTracker::SimpleConditionTracker(
         const ConfigKey& key, const int64_t& id, const int index,
diff --git a/cmds/statsd/src/condition/StateConditionTracker.cpp b/cmds/statsd/src/condition/StateConditionTracker.cpp
index 7f3eedd..d19a176 100644
--- a/cmds/statsd/src/condition/StateConditionTracker.cpp
+++ b/cmds/statsd/src/condition/StateConditionTracker.cpp
@@ -23,8 +23,6 @@
 namespace os {
 namespace statsd {
 
-using std::string;
-using std::unordered_set;
 using std::vector;
 
 StateConditionTracker::StateConditionTracker(const ConfigKey& key, const int64_t& id, const int index,
diff --git a/cmds/statsd/src/condition/condition_util.cpp b/cmds/statsd/src/condition/condition_util.cpp
index 35e03e4..60b8c53 100644
--- a/cmds/statsd/src/condition/condition_util.cpp
+++ b/cmds/statsd/src/condition/condition_util.cpp
@@ -18,11 +18,6 @@
 
 #include "condition_util.h"
 
-#include <log/event_tag_map.h>
-#include <log/log_event_list.h>
-#include <log/logprint.h>
-#include <utils/Errors.h>
-#include <unordered_map>
 #include "../matchers/matcher_util.h"
 #include "ConditionTracker.h"
 #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"
@@ -32,9 +27,6 @@
 namespace os {
 namespace statsd {
 
-using std::set;
-using std::string;
-using std::unordered_map;
 using std::vector;
 
 
diff --git a/cmds/statsd/src/config/ConfigListener.h b/cmds/statsd/src/config/ConfigListener.h
index 54e7770..dcd5e52 100644
--- a/cmds/statsd/src/config/ConfigListener.h
+++ b/cmds/statsd/src/config/ConfigListener.h
@@ -19,14 +19,12 @@
 #include "config/ConfigKey.h"
 
 #include <utils/RefBase.h>
-#include <string>
 
 namespace android {
 namespace os {
 namespace statsd {
 
 using android::RefBase;
-using std::string;
 
 /**
  * Callback for different subsystems inside statsd to implement to find out
diff --git a/cmds/statsd/src/config/ConfigManager.cpp b/cmds/statsd/src/config/ConfigManager.cpp
index 972adf7..986955b 100644
--- a/cmds/statsd/src/config/ConfigManager.cpp
+++ b/cmds/statsd/src/config/ConfigManager.cpp
@@ -25,8 +25,6 @@
 #include "stats_util.h"
 #include "stats_log_util.h"
 
-#include <android-base/file.h>
-#include <dirent.h>
 #include <stdio.h>
 #include <vector>
 #include "android-base/stringprintf.h"
@@ -35,9 +33,7 @@
 namespace os {
 namespace statsd {
 
-using std::map;
 using std::pair;
-using std::set;
 using std::string;
 using std::vector;
 
diff --git a/cmds/statsd/src/config/ConfigManager.h b/cmds/statsd/src/config/ConfigManager.h
index 88e864a..2095173 100644
--- a/cmds/statsd/src/config/ConfigManager.h
+++ b/cmds/statsd/src/config/ConfigManager.h
@@ -20,9 +20,7 @@
 #include "config/ConfigListener.h"
 
 #include <android/os/IPendingIntentRef.h>
-#include <map>
 #include <mutex>
-#include <set>
 #include <string>
 
 #include <stdio.h>
diff --git a/cmds/statsd/src/experiment_ids.proto b/cmds/statsd/src/experiment_ids.proto
new file mode 100644
index 0000000..c203631
--- /dev/null
+++ b/cmds/statsd/src/experiment_ids.proto
@@ -0,0 +1,29 @@
+/*
+ * 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.
+ */
+
+syntax = "proto2";
+
+package android.os.statsd;
+
+option java_package = "com.android.internal.os";
+option java_outer_classname = "ExperimentIdsProto";
+
+// StatsLogProcessor uses the proto to parse experiment ids from
+// BinaryPushStateChanged atoms. This needs to be in sync with
+// TrainExperimentIds in atoms.proto.
+message ExperimentIds {
+    repeated int64 experiment_id = 1;
+}
diff --git a/cmds/statsd/src/external/GpuStatsPuller.cpp b/cmds/statsd/src/external/GpuStatsPuller.cpp
deleted file mode 100644
index 3229ba8..0000000
--- a/cmds/statsd/src/external/GpuStatsPuller.cpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright 2019 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 "GpuStatsPuller.h"
-
-#include <binder/IServiceManager.h>
-#include <graphicsenv/GpuStatsInfo.h>
-#include <graphicsenv/IGpuService.h>
-
-#include "logd/LogEvent.h"
-
-#include "stats_log_util.h"
-#include "statslog.h"
-
-namespace android {
-namespace os {
-namespace statsd {
-
-using android::util::ProtoReader;
-
-GpuStatsPuller::GpuStatsPuller(const int tagId) : StatsPuller(tagId) {
-}
-
-static sp<IGpuService> getGpuService() {
-    const sp<IBinder> binder = defaultServiceManager()->checkService(String16("gpu"));
-    if (!binder) {
-        ALOGE("Failed to get gpu service");
-        return nullptr;
-    }
-
-    return interface_cast<IGpuService>(binder);
-}
-
-static bool pullGpuStatsGlobalInfo(const sp<IGpuService>& gpuService,
-                                   std::vector<std::shared_ptr<LogEvent>>* data) {
-    std::vector<GpuStatsGlobalInfo> stats;
-    status_t status = gpuService->getGpuStatsGlobalInfo(&stats);
-    if (status != OK) {
-        return false;
-    }
-
-    data->clear();
-    data->reserve(stats.size());
-    for (const auto& info : stats) {
-        std::shared_ptr<LogEvent> event = make_shared<LogEvent>(
-                android::util::GPU_STATS_GLOBAL_INFO, getWallClockNs(), getElapsedRealtimeNs());
-        if (!event->write(info.driverPackageName)) return false;
-        if (!event->write(info.driverVersionName)) return false;
-        if (!event->write((int64_t)info.driverVersionCode)) return false;
-        if (!event->write(info.driverBuildTime)) return false;
-        if (!event->write((int64_t)info.glLoadingCount)) return false;
-        if (!event->write((int64_t)info.glLoadingFailureCount)) return false;
-        if (!event->write((int64_t)info.vkLoadingCount)) return false;
-        if (!event->write((int64_t)info.vkLoadingFailureCount)) return false;
-        if (!event->write(info.vulkanVersion)) return false;
-        if (!event->write(info.cpuVulkanVersion)) return false;
-        if (!event->write(info.glesVersion)) return false;
-        if (!event->write((int64_t)info.angleLoadingCount)) return false;
-        if (!event->write((int64_t)info.angleLoadingFailureCount)) return false;
-        event->init();
-        data->emplace_back(event);
-    }
-
-    return true;
-}
-
-static bool pullGpuStatsAppInfo(const sp<IGpuService>& gpuService,
-                                std::vector<std::shared_ptr<LogEvent>>* data) {
-    std::vector<GpuStatsAppInfo> stats;
-    status_t status = gpuService->getGpuStatsAppInfo(&stats);
-    if (status != OK) {
-        return false;
-    }
-
-    data->clear();
-    data->reserve(stats.size());
-    for (const auto& info : stats) {
-        std::shared_ptr<LogEvent> event = make_shared<LogEvent>(
-                android::util::GPU_STATS_APP_INFO, getWallClockNs(), getElapsedRealtimeNs());
-        if (!event->write(info.appPackageName)) return false;
-        if (!event->write((int64_t)info.driverVersionCode)) return false;
-        if (!event->writeBytes(int64VectorToProtoByteString(info.glDriverLoadingTime)))  {
-            return false;
-        }
-        if (!event->writeBytes(int64VectorToProtoByteString(info.vkDriverLoadingTime))) {
-            return false;
-        }
-        if (!event->writeBytes(int64VectorToProtoByteString(info.angleDriverLoadingTime))) {
-            return false;
-        }
-        if (!event->write(info.cpuVulkanInUse)) return false;
-        if (!event->write(info.falsePrerotation)) return false;
-        if (!event->write(info.gles1InUse)) return false;
-        event->init();
-        data->emplace_back(event);
-    }
-
-    return true;
-}
-
-bool GpuStatsPuller::PullInternal(std::vector<std::shared_ptr<LogEvent>>* data) {
-    const sp<IGpuService> gpuService = getGpuService();
-    if (!gpuService) {
-        return false;
-    }
-
-    switch (mTagId) {
-        case android::util::GPU_STATS_GLOBAL_INFO:
-            return pullGpuStatsGlobalInfo(gpuService, data);
-        case android::util::GPU_STATS_APP_INFO:
-            return pullGpuStatsAppInfo(gpuService, data);
-        default:
-            break;
-    }
-
-    return false;
-}
-
-static std::string protoOutputStreamToByteString(ProtoOutputStream& proto) {
-    if (!proto.size()) return "";
-
-    std::string byteString;
-    sp<ProtoReader> reader = proto.data();
-    while (reader->readBuffer() != nullptr) {
-        const size_t toRead = reader->currentToRead();
-        byteString.append((char*)reader->readBuffer(), toRead);
-        reader->move(toRead);
-    }
-
-    if (byteString.size() != proto.size()) return "";
-
-    return byteString;
-}
-
-std::string int64VectorToProtoByteString(const std::vector<int64_t>& value) {
-    if (value.empty()) return "";
-
-    ProtoOutputStream proto;
-    for (const auto& ele : value) {
-        proto.write(android::util::FIELD_TYPE_INT64 | android::util::FIELD_COUNT_REPEATED |
-                            1 /* field id */,
-                    (long long)ele);
-    }
-
-    return protoOutputStreamToByteString(proto);
-}
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/GpuStatsPuller.h b/cmds/statsd/src/external/GpuStatsPuller.h
deleted file mode 100644
index 2da199c..0000000
--- a/cmds/statsd/src/external/GpuStatsPuller.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2019 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.
- */
-
-#pragma once
-
-#include "StatsPuller.h"
-
-namespace android {
-namespace os {
-namespace statsd {
-
-/**
- * Pull GpuStats from GpuService.
- */
-class GpuStatsPuller : public StatsPuller {
-public:
-    explicit GpuStatsPuller(const int tagId);
-    bool PullInternal(std::vector<std::shared_ptr<LogEvent>>* data) override;
-};
-
-// convert a int64_t vector into a byte string for proto message like:
-// message RepeatedInt64Wrapper {
-//   repeated int64 value = 1;
-// }
-std::string int64VectorToProtoByteString(const std::vector<int64_t>& value);
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/Perfetto.cpp b/cmds/statsd/src/external/Perfetto.cpp
index 0c4c330..85b660e 100644
--- a/cmds/statsd/src/external/Perfetto.cpp
+++ b/cmds/statsd/src/external/Perfetto.cpp
@@ -21,12 +21,8 @@
 #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"  // Alert
 
 #include <android-base/unique_fd.h>
-#include <errno.h>
-#include <fcntl.h>
 #include <inttypes.h>
-#include <sys/types.h>
 #include <sys/wait.h>
-#include <unistd.h>
 
 #include <string>
 
diff --git a/cmds/statsd/src/external/PowerStatsPuller.cpp b/cmds/statsd/src/external/PowerStatsPuller.cpp
deleted file mode 100644
index dc69b78..0000000
--- a/cmds/statsd/src/external/PowerStatsPuller.cpp
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-#define DEBUG false  // STOPSHIP if true
-#include "Log.h"
-
-#include <android/hardware/power/stats/1.0/IPowerStats.h>
-
-#include <vector>
-
-#include "PowerStatsPuller.h"
-#include "statslog.h"
-#include "stats_log_util.h"
-
-using android::hardware::hidl_vec;
-using android::hardware::power::stats::V1_0::IPowerStats;
-using android::hardware::power::stats::V1_0::EnergyData;
-using android::hardware::power::stats::V1_0::RailInfo;
-using android::hardware::power::stats::V1_0::Status;
-using android::hardware::Return;
-using android::hardware::Void;
-
-using std::make_shared;
-using std::shared_ptr;
-
-namespace android {
-namespace os {
-namespace statsd {
-
-static sp<android::hardware::power::stats::V1_0::IPowerStats> gPowerStatsHal = nullptr;
-static std::mutex gPowerStatsHalMutex;
-static bool gPowerStatsExist = true; // Initialized to ensure making a first attempt.
-static std::vector<RailInfo> gRailInfo;
-
-struct PowerStatsPullerDeathRecipient : virtual public hardware::hidl_death_recipient {
-    virtual void serviceDied(uint64_t cookie,
-            const wp<android::hidl::base::V1_0::IBase>& who) override {
-        // The HAL just died. Reset all handles to HAL services.
-        std::lock_guard<std::mutex> lock(gPowerStatsHalMutex);
-        gPowerStatsHal = nullptr;
-    }
-};
-
-static sp<PowerStatsPullerDeathRecipient> gDeathRecipient = new PowerStatsPullerDeathRecipient();
-
-static bool getPowerStatsHalLocked() {
-    if (gPowerStatsHal == nullptr && gPowerStatsExist) {
-        gPowerStatsHal = android::hardware::power::stats::V1_0::IPowerStats::getService();
-        if (gPowerStatsHal == nullptr) {
-            ALOGW("Couldn't load power.stats HAL service");
-            gPowerStatsExist = false;
-        } else {
-            // Link death recipient to power.stats service handle
-            hardware::Return<bool> linked = gPowerStatsHal->linkToDeath(gDeathRecipient, 0);
-            if (!linked.isOk()) {
-                ALOGE("Transaction error in linking to power.stats HAL death: %s",
-                        linked.description().c_str());
-                gPowerStatsHal = nullptr;
-                return false;
-            } else if (!linked) {
-                ALOGW("Unable to link to power.stats HAL death notifications");
-                // We should still continue even though linking failed
-            }
-        }
-    }
-    return gPowerStatsHal != nullptr;
-}
-
-PowerStatsPuller::PowerStatsPuller() : StatsPuller(android::util::ON_DEVICE_POWER_MEASUREMENT) {
-}
-
-bool PowerStatsPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
-    std::lock_guard<std::mutex> lock(gPowerStatsHalMutex);
-
-    if (!getPowerStatsHalLocked()) {
-        return false;
-    }
-
-    int64_t wallClockTimestampNs = getWallClockNs();
-    int64_t elapsedTimestampNs = getElapsedRealtimeNs();
-
-    data->clear();
-
-    // Pull getRailInfo if necessary
-    if (gRailInfo.empty()) {
-        bool resultSuccess = true;
-        Return<void> ret = gPowerStatsHal->getRailInfo(
-                [&resultSuccess](const hidl_vec<RailInfo> &list, Status status) {
-                    resultSuccess = (status == Status::SUCCESS || status == Status::NOT_SUPPORTED);
-                    if (status != Status::SUCCESS) return;
-
-                    gRailInfo.reserve(list.size());
-                    for (size_t i = 0; i < list.size(); ++i) {
-                        gRailInfo.push_back(list[i]);
-                    }
-                });
-        if (!resultSuccess || !ret.isOk()) {
-            ALOGE("power.stats getRailInfo() failed. Description: %s", ret.description().c_str());
-            gPowerStatsHal = nullptr;
-            return false;
-        }
-        // If SUCCESS but empty, or if NOT_SUPPORTED, then never try again.
-        if (gRailInfo.empty()) {
-            ALOGE("power.stats has no rail information");
-            gPowerStatsExist = false; // No rail info, so never try again.
-            gPowerStatsHal = nullptr;
-            return false;
-        }
-    }
-
-    // Pull getEnergyData and write the data out
-    const hidl_vec<uint32_t> desiredRailIndices; // Empty vector indicates we want all.
-    bool resultSuccess = true;
-    Return<void> ret = gPowerStatsHal->getEnergyData(desiredRailIndices,
-                [&data, wallClockTimestampNs, elapsedTimestampNs, &resultSuccess]
-                (hidl_vec<EnergyData> energyDataList, Status status) {
-                    resultSuccess = (status == Status::SUCCESS);
-                    if (!resultSuccess) return;
-
-                    for (size_t i = 0; i < energyDataList.size(); i++) {
-                        const EnergyData& energyData = energyDataList[i];
-
-                        if (energyData.index >= gRailInfo.size()) {
-                            ALOGE("power.stats getEnergyData() returned an invalid rail index %u.",
-                                    energyData.index);
-                            resultSuccess = false;
-                            return;
-                        }
-                        const RailInfo& rail = gRailInfo[energyData.index];
-
-                        auto ptr = make_shared<LogEvent>(android::util::ON_DEVICE_POWER_MEASUREMENT,
-                              wallClockTimestampNs, elapsedTimestampNs);
-                        ptr->write(rail.subsysName);
-                        ptr->write(rail.railName);
-                        ptr->write(energyData.timestamp);
-                        ptr->write(energyData.energy);
-                        ptr->init();
-                        data->push_back(ptr);
-
-                        VLOG("power.stat: %s.%s: %llu, %llu",
-                             rail.subsysName.c_str(),
-                             rail.railName.c_str(),
-                             (unsigned long long)energyData.timestamp,
-                             (unsigned long long)energyData.energy);
-                    }
-                });
-    if (!resultSuccess || !ret.isOk()) {
-        ALOGE("power.stats getEnergyData() failed. Description: %s", ret.description().c_str());
-        gPowerStatsHal = nullptr;
-        return false;
-    }
-    return true;
-}
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/PullDataReceiver.h b/cmds/statsd/src/external/PullDataReceiver.h
index d2193f4..dd5c0cf 100644
--- a/cmds/statsd/src/external/PullDataReceiver.h
+++ b/cmds/statsd/src/external/PullDataReceiver.h
@@ -15,8 +15,6 @@
  */
 #pragma once
 
-#include <utils/String16.h>
-#include <unordered_map>
 #include <utils/RefBase.h>
 #include "StatsPuller.h"
 #include "logd/LogEvent.h"
diff --git a/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp b/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
deleted file mode 100644
index 75b63f4..0000000
--- a/cmds/statsd/src/external/ResourceHealthManagerPuller.cpp
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-#define DEBUG false  // STOPSHIP if true
-#include "Log.h"
-
-#include <android/hardware/health/2.0/IHealth.h>
-#include <healthhalutils/HealthHalUtils.h>
-#include "external/ResourceHealthManagerPuller.h"
-#include "external/StatsPuller.h"
-
-#include "ResourceHealthManagerPuller.h"
-#include "logd/LogEvent.h"
-#include "stats_log_util.h"
-#include "statslog.h"
-
-using android::hardware::hidl_vec;
-using android::hardware::Return;
-using android::hardware::Void;
-using android::hardware::health::V2_0::get_health_service;
-using android::hardware::health::V2_0::HealthInfo;
-using android::hardware::health::V2_0::IHealth;
-using android::hardware::health::V2_0::Result;
-
-using std::make_shared;
-using std::shared_ptr;
-
-namespace android {
-namespace os {
-namespace statsd {
-
-sp<android::hardware::health::V2_0::IHealth> gHealthHal = nullptr;
-
-bool getHealthHal() {
-    if (gHealthHal == nullptr) {
-        gHealthHal = get_health_service();
-    }
-    return gHealthHal != nullptr;
-}
-
-ResourceHealthManagerPuller::ResourceHealthManagerPuller(int tagId) : StatsPuller(tagId) {
-}
-
-// TODO(b/110565992): add other health atoms (eg. Temperature).
-bool ResourceHealthManagerPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
-    if (!getHealthHal()) {
-        ALOGE("Health Hal not loaded");
-        return false;
-    }
-
-    int64_t wallClockTimestampNs = getWallClockNs();
-    int64_t elapsedTimestampNs = getElapsedRealtimeNs();
-
-    data->clear();
-    bool result_success = true;
-
-    // Get the data from the Health HAL (hardware/interfaces/health/1.0/types.hal).
-    Return<void> ret = gHealthHal->getHealthInfo([&](Result r, HealthInfo v) {
-        if (r != Result::SUCCESS) {
-            result_success = false;
-            return;
-        }
-        if (mTagId == android::util::REMAINING_BATTERY_CAPACITY) {
-            auto ptr = make_shared<LogEvent>(android::util::REMAINING_BATTERY_CAPACITY,
-                                             wallClockTimestampNs, elapsedTimestampNs);
-            ptr->write(v.legacy.batteryChargeCounter);
-            ptr->init();
-            data->push_back(ptr);
-        } else if (mTagId == android::util::FULL_BATTERY_CAPACITY) {
-            auto ptr = make_shared<LogEvent>(android::util::FULL_BATTERY_CAPACITY,
-                                             wallClockTimestampNs, elapsedTimestampNs);
-            ptr->write(v.legacy.batteryFullCharge);
-            ptr->init();
-            data->push_back(ptr);
-        } else if (mTagId == android::util::BATTERY_VOLTAGE) {
-            auto ptr = make_shared<LogEvent>(android::util::BATTERY_VOLTAGE, wallClockTimestampNs,
-                                             elapsedTimestampNs);
-            ptr->write(v.legacy.batteryVoltage);
-            ptr->init();
-            data->push_back(ptr);
-        } else if (mTagId == android::util::BATTERY_LEVEL) {
-            auto ptr = make_shared<LogEvent>(android::util::BATTERY_LEVEL, wallClockTimestampNs,
-                                             elapsedTimestampNs);
-            ptr->write(v.legacy.batteryLevel);
-            ptr->init();
-            data->push_back(ptr);
-        } else if (mTagId == android::util::BATTERY_CYCLE_COUNT) {
-            auto ptr = make_shared<LogEvent>(android::util::BATTERY_CYCLE_COUNT,
-                                             wallClockTimestampNs, elapsedTimestampNs);
-            ptr->write(v.legacy.batteryCycleCount);
-            ptr->init();
-            data->push_back(ptr);
-        } else {
-            ALOGE("Unsupported tag in ResourceHealthManagerPuller: %d", mTagId);
-        }
-    });
-    if (!result_success || !ret.isOk()) {
-        ALOGE("getHealthHal() failed: health HAL service not available. Description: %s",
-              ret.description().c_str());
-        if (!ret.isOk() && ret.isDeadObject()) {
-            gHealthHal = nullptr;
-        }
-        return false;
-    }
-    return true;
-}
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/ResourceHealthManagerPuller.h b/cmds/statsd/src/external/ResourceHealthManagerPuller.h
deleted file mode 100644
index f650fcc..0000000
--- a/cmds/statsd/src/external/ResourceHealthManagerPuller.h
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-#pragma once
-
-#include <utils/String16.h>
-#include "StatsPuller.h"
-
-namespace android {
-namespace os {
-namespace statsd {
-
-/**
- * Reads Ihealth.hal
- */
-class ResourceHealthManagerPuller : public StatsPuller {
-public:
-    explicit ResourceHealthManagerPuller(int tagId);
-
-private:
-    bool PullInternal(vector<std::shared_ptr<LogEvent>>* data) override;
-};
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/StatsCallbackPuller.cpp b/cmds/statsd/src/external/StatsCallbackPuller.cpp
index 6257771..1a11f0e 100644
--- a/cmds/statsd/src/external/StatsCallbackPuller.cpp
+++ b/cmds/statsd/src/external/StatsCallbackPuller.cpp
@@ -68,7 +68,7 @@
                     for (const StatsEventParcel& parcel: output) {
                         shared_ptr<LogEvent> event = make_shared<LogEvent>(
                                 const_cast<uint8_t*>(parcel.buffer.data()), parcel.buffer.size(),
-                                /*uid=*/-1, /*useNewSchema=*/true);
+                                /*uid=*/-1, /*pid=*/-1, /*useNewSchema=*/true);
                         sharedData->push_back(event);
                     }
                     *pullSuccess = success;
diff --git a/cmds/statsd/src/external/StatsCallbackPuller.h b/cmds/statsd/src/external/StatsCallbackPuller.h
index ac88524..fe6af19 100644
--- a/cmds/statsd/src/external/StatsCallbackPuller.h
+++ b/cmds/statsd/src/external/StatsCallbackPuller.h
@@ -17,7 +17,6 @@
 #pragma once
 
 #include <android/os/IPullAtomCallback.h>
-#include <utils/String16.h>
 
 #include "StatsPuller.h"
 
diff --git a/cmds/statsd/src/external/StatsPullerManager.cpp b/cmds/statsd/src/external/StatsPullerManager.cpp
index 85d1e38..3ceff75 100644
--- a/cmds/statsd/src/external/StatsPullerManager.cpp
+++ b/cmds/statsd/src/external/StatsPullerManager.cpp
@@ -32,20 +32,12 @@
 #include "../logd/LogEvent.h"
 #include "../stats_log_util.h"
 #include "../statscompanion_util.h"
-#include "GpuStatsPuller.h"
-#include "PowerStatsPuller.h"
-#include "ResourceHealthManagerPuller.h"
 #include "StatsCallbackPuller.h"
-#include "SubsystemSleepStatePuller.h"
 #include "TrainInfoPuller.h"
 #include "statslog.h"
 
-using std::make_shared;
-using std::map;
 using std::shared_ptr;
-using std::string;
 using std::vector;
-using std::list;
 
 namespace android {
 namespace os {
@@ -56,43 +48,8 @@
 
 StatsPullerManager::StatsPullerManager()
     : kAllPullAtomInfo({
-              // subsystem_sleep_state
-              {{.atomTag = android::util::SUBSYSTEM_SLEEP_STATE}, new SubsystemSleepStatePuller()},
-
-              // on_device_power_measurement
-              {{.atomTag = android::util::ON_DEVICE_POWER_MEASUREMENT}, new PowerStatsPuller()},
-
-              // remaining_battery_capacity
-              {{.atomTag = android::util::REMAINING_BATTERY_CAPACITY},
-               new ResourceHealthManagerPuller(android::util::REMAINING_BATTERY_CAPACITY)},
-
-              // full_battery_capacity
-              {{.atomTag = android::util::FULL_BATTERY_CAPACITY},
-               new ResourceHealthManagerPuller(android::util::FULL_BATTERY_CAPACITY)},
-
-              // battery_voltage
-              {{.atomTag = android::util::BATTERY_VOLTAGE},
-               new ResourceHealthManagerPuller(android::util::BATTERY_VOLTAGE)},
-
-              // battery_level
-              {{.atomTag = android::util::BATTERY_LEVEL},
-               new ResourceHealthManagerPuller(android::util::BATTERY_LEVEL)},
-
-              // battery_cycle_count
-              {{.atomTag = android::util::BATTERY_CYCLE_COUNT},
-               new ResourceHealthManagerPuller(android::util::BATTERY_CYCLE_COUNT)},
-
               // TrainInfo.
               {{.atomTag = android::util::TRAIN_INFO}, new TrainInfoPuller()},
-
-              // GpuStatsGlobalInfo
-              {{.atomTag = android::util::GPU_STATS_GLOBAL_INFO},
-               new GpuStatsPuller(android::util::GPU_STATS_GLOBAL_INFO)},
-
-              // GpuStatsAppInfo
-              {{.atomTag = android::util::GPU_STATS_APP_INFO},
-               new GpuStatsPuller(android::util::GPU_STATS_APP_INFO)},
-
       }),
       mNextPullTimeNs(NO_ALARM_UPDATE) {
 }
@@ -113,7 +70,7 @@
         }
         return ret;
     } else {
-        VLOG("Unknown tagId %d", tagId);
+        ALOGW("StatsPullerManager: Unknown tagId %d", tagId);
         return false;  // Return early since we don't know what to pull.
     }
 }
diff --git a/cmds/statsd/src/external/StatsPullerManager.h b/cmds/statsd/src/external/StatsPullerManager.h
index f5d6057..aef16dc 100644
--- a/cmds/statsd/src/external/StatsPullerManager.h
+++ b/cmds/statsd/src/external/StatsPullerManager.h
@@ -23,8 +23,6 @@
 #include <utils/threads.h>
 
 #include <list>
-#include <string>
-#include <unordered_map>
 #include <vector>
 
 #include "PullDataReceiver.h"
diff --git a/cmds/statsd/src/external/SubsystemSleepStatePuller.cpp b/cmds/statsd/src/external/SubsystemSleepStatePuller.cpp
deleted file mode 100644
index f6a4aea..0000000
--- a/cmds/statsd/src/external/SubsystemSleepStatePuller.cpp
+++ /dev/null
@@ -1,378 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-#define DEBUG false  // STOPSHIP if true
-#include "Log.h"
-
-#include <android/hardware/power/1.0/IPower.h>
-#include <android/hardware/power/1.1/IPower.h>
-#include <android/hardware/power/stats/1.0/IPowerStats.h>
-
-#include <fcntl.h>
-#include <hardware/power.h>
-#include <hardware_legacy/power.h>
-#include <inttypes.h>
-#include <semaphore.h>
-#include <stddef.h>
-#include <stdio.h>
-#include <string.h>
-#include <sys/stat.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include "external/SubsystemSleepStatePuller.h"
-#include "external/StatsPuller.h"
-
-#include "SubsystemSleepStatePuller.h"
-#include "logd/LogEvent.h"
-#include "statslog.h"
-#include "stats_log_util.h"
-
-using android::hardware::hidl_vec;
-using android::hardware::power::V1_0::IPower;
-using android::hardware::power::V1_0::PowerStatePlatformSleepState;
-using android::hardware::power::V1_0::PowerStateVoter;
-using android::hardware::power::V1_1::PowerStateSubsystem;
-using android::hardware::power::V1_1::PowerStateSubsystemSleepState;
-using android::hardware::power::stats::V1_0::PowerEntityInfo;
-using android::hardware::power::stats::V1_0::PowerEntityStateResidencyResult;
-using android::hardware::power::stats::V1_0::PowerEntityStateSpace;
-
-using android::hardware::Return;
-using android::hardware::Void;
-
-using std::make_shared;
-using std::shared_ptr;
-
-namespace android {
-namespace os {
-namespace statsd {
-
-static std::function<bool(vector<shared_ptr<LogEvent>>* data)> gPuller = {};
-
-static sp<android::hardware::power::V1_0::IPower> gPowerHalV1_0 = nullptr;
-static sp<android::hardware::power::V1_1::IPower> gPowerHalV1_1 = nullptr;
-static sp<android::hardware::power::stats::V1_0::IPowerStats> gPowerStatsHalV1_0 = nullptr;
-
-static std::unordered_map<uint32_t, std::string> gEntityNames = {};
-static std::unordered_map<uint32_t, std::unordered_map<uint32_t, std::string>> gStateNames = {};
-
-static std::mutex gPowerHalMutex;
-
-// The caller must be holding gPowerHalMutex.
-static void deinitPowerStatsLocked() {
-    gPowerHalV1_0 = nullptr;
-    gPowerHalV1_1 = nullptr;
-    gPowerStatsHalV1_0 = nullptr;
-}
-
-struct SubsystemSleepStatePullerDeathRecipient : virtual public hardware::hidl_death_recipient {
-    virtual void serviceDied(uint64_t cookie,
-            const wp<android::hidl::base::V1_0::IBase>& who) override {
-
-        // The HAL just died. Reset all handles to HAL services.
-        std::lock_guard<std::mutex> lock(gPowerHalMutex);
-        deinitPowerStatsLocked();
-    }
-};
-
-static sp<SubsystemSleepStatePullerDeathRecipient> gDeathRecipient =
-        new SubsystemSleepStatePullerDeathRecipient();
-
-SubsystemSleepStatePuller::SubsystemSleepStatePuller() :
-    StatsPuller(android::util::SUBSYSTEM_SLEEP_STATE) {
-}
-
-// The caller must be holding gPowerHalMutex.
-static bool checkResultLocked(const Return<void> &ret, const char* function) {
-    if (!ret.isOk()) {
-        ALOGE("%s failed: requested HAL service not available. Description: %s",
-            function, ret.description().c_str());
-        if (ret.isDeadObject()) {
-            deinitPowerStatsLocked();
-        }
-        return false;
-    }
-    return true;
-}
-
-// The caller must be holding gPowerHalMutex.
-// gPowerStatsHalV1_0 must not be null
-static bool initializePowerStats() {
-    using android::hardware::power::stats::V1_0::Status;
-
-    // Clear out previous content if we are re-initializing
-    gEntityNames.clear();
-    gStateNames.clear();
-
-    Return<void> ret;
-    ret = gPowerStatsHalV1_0->getPowerEntityInfo([](auto infos, auto status) {
-        if (status != Status::SUCCESS) {
-            ALOGE("Error getting power entity info");
-            return;
-        }
-
-        // construct lookup table of powerEntityId to power entity name
-        for (auto info : infos) {
-            gEntityNames.emplace(info.powerEntityId, info.powerEntityName);
-        }
-    });
-    if (!checkResultLocked(ret, __func__)) {
-        return false;
-    }
-
-    ret = gPowerStatsHalV1_0->getPowerEntityStateInfo({}, [](auto stateSpaces, auto status) {
-        if (status != Status::SUCCESS) {
-            ALOGE("Error getting state info");
-            return;
-        }
-
-        // construct lookup table of powerEntityId, powerEntityStateId to power entity state name
-        for (auto stateSpace : stateSpaces) {
-            std::unordered_map<uint32_t, std::string> stateNames = {};
-            for (auto state : stateSpace.states) {
-                stateNames.emplace(state.powerEntityStateId,
-                    state.powerEntityStateName);
-            }
-            gStateNames.emplace(stateSpace.powerEntityId, stateNames);
-        }
-    });
-    if (!checkResultLocked(ret, __func__)) {
-        return false;
-    }
-
-    return (!gEntityNames.empty()) && (!gStateNames.empty());
-}
-
-// The caller must be holding gPowerHalMutex.
-static bool getPowerStatsHalLocked() {
-    if(gPowerStatsHalV1_0 == nullptr) {
-        gPowerStatsHalV1_0 = android::hardware::power::stats::V1_0::IPowerStats::getService();
-        if (gPowerStatsHalV1_0 == nullptr) {
-            ALOGE("Unable to get power.stats HAL service.");
-            return false;
-        }
-
-        // Link death recipient to power.stats service handle
-        hardware::Return<bool> linked = gPowerStatsHalV1_0->linkToDeath(gDeathRecipient, 0);
-        if (!linked.isOk()) {
-            ALOGE("Transaction error in linking to power.stats HAL death: %s",
-                    linked.description().c_str());
-            deinitPowerStatsLocked();
-            return false;
-        } else if (!linked) {
-            ALOGW("Unable to link to power.stats HAL death notifications");
-            // We should still continue even though linking failed
-        }
-        return initializePowerStats();
-    }
-    return true;
-}
-
-// The caller must be holding gPowerHalMutex.
-static bool getIPowerStatsDataLocked(vector<shared_ptr<LogEvent>>* data) {
-    using android::hardware::power::stats::V1_0::Status;
-
-    if(!getPowerStatsHalLocked()) {
-        return false;
-    }
-
-    int64_t wallClockTimestampNs = getWallClockNs();
-    int64_t elapsedTimestampNs = getElapsedRealtimeNs();
-
-    // Get power entity state residency data
-    bool success = false;
-    Return<void> ret = gPowerStatsHalV1_0->getPowerEntityStateResidencyData({},
-        [&data, &success, wallClockTimestampNs, elapsedTimestampNs]
-        (auto results, auto status) {
-        if (status == Status::NOT_SUPPORTED) {
-            ALOGW("getPowerEntityStateResidencyData is not supported");
-            success = false;
-            return;
-        }
-
-        for(auto result : results) {
-            for(auto stateResidency : result.stateResidencyData) {
-                auto statePtr = make_shared<LogEvent>(
-                        android::util::SUBSYSTEM_SLEEP_STATE,
-                        wallClockTimestampNs, elapsedTimestampNs);
-                statePtr->write(gEntityNames.at(result.powerEntityId));
-                statePtr->write(gStateNames.at(result.powerEntityId)
-                    .at(stateResidency.powerEntityStateId));
-                statePtr->write(stateResidency.totalStateEntryCount);
-                statePtr->write(stateResidency.totalTimeInStateMs);
-                statePtr->init();
-                data->emplace_back(statePtr);
-            }
-        }
-        success = true;
-    });
-    // Intentionally not returning early here.
-    // bool success determines if this succeeded or not.
-    checkResultLocked(ret, __func__);
-
-    return success;
-}
-
-// The caller must be holding gPowerHalMutex.
-static bool getPowerHalLocked() {
-    if(gPowerHalV1_0 == nullptr) {
-        gPowerHalV1_0 = android::hardware::power::V1_0::IPower::getService();
-        if(gPowerHalV1_0 == nullptr) {
-            ALOGE("Unable to get power HAL service.");
-            return false;
-        }
-        gPowerHalV1_1 = android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
-
-        // Link death recipient to power service handle
-        hardware::Return<bool> linked = gPowerHalV1_0->linkToDeath(gDeathRecipient, 0);
-        if (!linked.isOk()) {
-            ALOGE("Transaction error in linking to power HAL death: %s",
-                    linked.description().c_str());
-            gPowerHalV1_0 = nullptr;
-            return false;
-        } else if (!linked) {
-            ALOGW("Unable to link to power. death notifications");
-            // We should still continue even though linking failed
-        }
-    }
-    return true;
-}
-
-// The caller must be holding gPowerHalMutex.
-static bool getIPowerDataLocked(vector<shared_ptr<LogEvent>>* data) {
-    using android::hardware::power::V1_0::Status;
-
-    if(!getPowerHalLocked()) {
-        return false;
-    }
-
-    int64_t wallClockTimestampNs = getWallClockNs();
-    int64_t elapsedTimestampNs = getElapsedRealtimeNs();
-        Return<void> ret;
-        ret = gPowerHalV1_0->getPlatformLowPowerStats(
-                [&data, wallClockTimestampNs, elapsedTimestampNs]
-                    (hidl_vec<PowerStatePlatformSleepState> states, Status status) {
-                    if (status != Status::SUCCESS) return;
-
-                    for (size_t i = 0; i < states.size(); i++) {
-                        const PowerStatePlatformSleepState& state = states[i];
-
-                        auto statePtr = make_shared<LogEvent>(
-                            android::util::SUBSYSTEM_SLEEP_STATE,
-                            wallClockTimestampNs, elapsedTimestampNs);
-                        statePtr->write(state.name);
-                        statePtr->write("");
-                        statePtr->write(state.totalTransitions);
-                        statePtr->write(state.residencyInMsecSinceBoot);
-                        statePtr->init();
-                        data->push_back(statePtr);
-                        VLOG("powerstate: %s, %lld, %lld, %d", state.name.c_str(),
-                             (long long)state.residencyInMsecSinceBoot,
-                             (long long)state.totalTransitions,
-                             state.supportedOnlyInSuspend ? 1 : 0);
-                        for (const auto& voter : state.voters) {
-                            auto voterPtr = make_shared<LogEvent>(
-                                android::util::SUBSYSTEM_SLEEP_STATE,
-                                wallClockTimestampNs, elapsedTimestampNs);
-                            voterPtr->write(state.name);
-                            voterPtr->write(voter.name);
-                            voterPtr->write(voter.totalNumberOfTimesVotedSinceBoot);
-                            voterPtr->write(voter.totalTimeInMsecVotedForSinceBoot);
-                            voterPtr->init();
-                            data->push_back(voterPtr);
-                            VLOG("powerstatevoter: %s, %s, %lld, %lld", state.name.c_str(),
-                                 voter.name.c_str(),
-                                 (long long)voter.totalTimeInMsecVotedForSinceBoot,
-                                 (long long)voter.totalNumberOfTimesVotedSinceBoot);
-                        }
-                    }
-                });
-        if (!checkResultLocked(ret, __func__)) {
-            return false;
-        }
-
-        // Trying to cast to IPower 1.1, this will succeed only for devices supporting 1.1
-        sp<android::hardware::power::V1_1::IPower> gPowerHal_1_1 =
-                android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
-        if (gPowerHal_1_1 != nullptr) {
-            ret = gPowerHal_1_1->getSubsystemLowPowerStats(
-            [&data, wallClockTimestampNs, elapsedTimestampNs]
-            (hidl_vec<PowerStateSubsystem> subsystems, Status status) {
-                if (status != Status::SUCCESS) return;
-
-                if (subsystems.size() > 0) {
-                    for (size_t i = 0; i < subsystems.size(); i++) {
-                        const PowerStateSubsystem& subsystem = subsystems[i];
-                        for (size_t j = 0; j < subsystem.states.size(); j++) {
-                            const PowerStateSubsystemSleepState& state =
-                                    subsystem.states[j];
-                            auto subsystemStatePtr = make_shared<LogEvent>(
-                                android::util::SUBSYSTEM_SLEEP_STATE,
-                                wallClockTimestampNs, elapsedTimestampNs);
-                            subsystemStatePtr->write(subsystem.name);
-                            subsystemStatePtr->write(state.name);
-                            subsystemStatePtr->write(state.totalTransitions);
-                            subsystemStatePtr->write(state.residencyInMsecSinceBoot);
-                            subsystemStatePtr->init();
-                            data->push_back(subsystemStatePtr);
-                            VLOG("subsystemstate: %s, %s, %lld, %lld, %lld",
-                                 subsystem.name.c_str(), state.name.c_str(),
-                                 (long long)state.residencyInMsecSinceBoot,
-                                 (long long)state.totalTransitions,
-                                 (long long)state.lastEntryTimestampMs);
-                        }
-                    }
-                }
-            });
-        }
-        return true;
-}
-
-// The caller must be holding gPowerHalMutex.
-std::function<bool(vector<shared_ptr<LogEvent>>* data)> getPullerLocked() {
-    std::function<bool(vector<shared_ptr<LogEvent>>* data)> ret = {};
-
-    // First see if power.stats HAL is available. Fall back to power HAL if
-    // power.stats HAL is unavailable.
-    if(android::hardware::power::stats::V1_0::IPowerStats::getService() != nullptr) {
-        ALOGI("Using power.stats HAL");
-        ret = getIPowerStatsDataLocked;
-    } else if(android::hardware::power::V1_0::IPower::getService() != nullptr) {
-        ALOGI("Using power HAL");
-        ret = getIPowerDataLocked;
-    }
-
-    return ret;
-}
-
-bool SubsystemSleepStatePuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
-    std::lock_guard<std::mutex> lock(gPowerHalMutex);
-
-    if(!gPuller) {
-        gPuller = getPullerLocked();
-    }
-
-    if(gPuller) {
-        return gPuller(data);
-    }
-
-    ALOGE("Unable to load Power Hal or power.stats HAL");
-    return false;
-}
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
diff --git a/cmds/statsd/src/external/TrainInfoPuller.cpp b/cmds/statsd/src/external/TrainInfoPuller.cpp
index 9d09242..a7d8d4e 100644
--- a/cmds/statsd/src/external/TrainInfoPuller.cpp
+++ b/cmds/statsd/src/external/TrainInfoPuller.cpp
@@ -37,14 +37,16 @@
 }
 
 bool TrainInfoPuller::PullInternal(vector<shared_ptr<LogEvent>>* data) {
-    InstallTrainInfo trainInfo;
-    bool ret = StorageManager::readTrainInfo(trainInfo);
-    if (!ret) {
-        ALOGW("Failed to read train info.");
-        return false;
+    vector<InstallTrainInfo> trainInfoList =
+        StorageManager::readAllTrainInfo();
+    if (trainInfoList.empty()) {
+        ALOGW("Train info was empty.");
+        return true;
     }
-    auto event = make_shared<LogEvent>(getWallClockNs(), getElapsedRealtimeNs(), trainInfo);
-    data->push_back(event);
+    for (InstallTrainInfo& trainInfo : trainInfoList) {
+        auto event = make_shared<LogEvent>(getWallClockNs(), getElapsedRealtimeNs(), trainInfo);
+        data->push_back(event);
+    }
     return true;
 }
 
diff --git a/cmds/statsd/src/guardrail/StatsdStats.cpp b/cmds/statsd/src/guardrail/StatsdStats.cpp
index a836bd1..3054b6d 100644
--- a/cmds/statsd/src/guardrail/StatsdStats.cpp
+++ b/cmds/statsd/src/guardrail/StatsdStats.cpp
@@ -36,7 +36,6 @@
 using android::util::FIELD_TYPE_STRING;
 using android::util::ProtoOutputStream;
 using std::lock_guard;
-using std::map;
 using std::shared_ptr;
 using std::string;
 using std::vector;
diff --git a/cmds/statsd/src/logd/LogEvent.cpp b/cmds/statsd/src/logd/LogEvent.cpp
index 3827b9e..103eb0c 100644
--- a/cmds/statsd/src/logd/LogEvent.cpp
+++ b/cmds/statsd/src/logd/LogEvent.cpp
@@ -35,13 +35,42 @@
 using std::string;
 using std::vector;
 
+// stats_event.h socket types. Keep in sync.
+/* ERRORS */
+#define ERROR_NO_TIMESTAMP 0x1
+#define ERROR_NO_ATOM_ID 0x2
+#define ERROR_OVERFLOW 0x4
+#define ERROR_ATTRIBUTION_CHAIN_TOO_LONG 0x8
+#define ERROR_TOO_MANY_KEY_VALUE_PAIRS 0x10
+#define ERROR_ANNOTATION_DOES_NOT_FOLLOW_FIELD 0x20
+#define ERROR_INVALID_ANNOTATION_ID 0x40
+#define ERROR_ANNOTATION_ID_TOO_LARGE 0x80
+#define ERROR_TOO_MANY_ANNOTATIONS 0x100
+#define ERROR_TOO_MANY_FIELDS 0x200
+#define ERROR_INVALID_VALUE_TYPE 0x400
+#define ERROR_STRING_NOT_NULL_TERMINATED 0x800
+
+/* TYPE IDS */
+#define INT32_TYPE 0x00
+#define INT64_TYPE 0x01
+#define STRING_TYPE 0x02
+#define LIST_TYPE 0x03
+#define FLOAT_TYPE 0x04
+#define BOOL_TYPE 0x05
+#define BYTE_ARRAY_TYPE 0x06
+#define OBJECT_TYPE 0x07
+#define KEY_VALUE_PAIRS_TYPE 0x08
+#define ATTRIBUTION_CHAIN_TYPE 0x09
+#define ERROR_TYPE 0x0F
+
 // Msg is expected to begin at the start of the serialized atom -- it should not
 // include the android_log_header_t or the StatsEventTag.
-LogEvent::LogEvent(uint8_t* msg, uint32_t len, uint32_t uid)
+LogEvent::LogEvent(uint8_t* msg, uint32_t len, int32_t uid, int32_t pid)
     : mBuf(msg),
       mRemainingLen(len),
       mLogdTimestampNs(time(nullptr)),
-      mLogUid(uid)
+      mLogUid(uid),
+      mLogPid(pid)
 {
 #ifdef NEW_ENCODING_SCHEME
     initNew();
@@ -52,8 +81,13 @@
 #endif
 }
 
-LogEvent::LogEvent(uint8_t* msg, uint32_t len, uint32_t uid, bool useNewSchema)
-    : mBuf(msg), mRemainingLen(len), mLogdTimestampNs(time(nullptr)), mLogUid(uid) {
+LogEvent::LogEvent(uint8_t* msg, uint32_t len, int32_t uid, int32_t pid, bool useNewSchema)
+    : mBuf(msg),
+      mRemainingLen(len),
+      mLogdTimestampNs(time(nullptr)),
+      mLogUid(uid),
+      mLogPid(pid)
+{
     if (useNewSchema) {
         initNew();
     } else {
@@ -66,6 +100,7 @@
 LogEvent::LogEvent(const LogEvent& event) {
     mTagId = event.mTagId;
     mLogUid = event.mLogUid;
+    mLogPid = event.mLogPid;
     mElapsedTimestampNs = event.mElapsedTimestampNs;
     mLogdTimestampNs = event.mLogdTimestampNs;
     mValues = event.mValues;
@@ -146,6 +181,7 @@
     mElapsedTimestampNs = getElapsedRealtimeNs();
     mTagId = android::util::BINARY_PUSH_STATE_CHANGED;
     mLogUid = android::IPCThreadState::self()->getCallingUid();
+    mLogPid = android::IPCThreadState::self()->getCallingPid();
 
     mValues.push_back(FieldValue(Field(mTagId, getSimpleField(1)), Value(trainName)));
     mValues.push_back(FieldValue(Field(mTagId, getSimpleField(2)), Value(trainVersionCode)));
@@ -159,37 +195,6 @@
 }
 
 LogEvent::LogEvent(int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
-                   const VendorAtom& vendorAtom) {
-    mLogdTimestampNs = wallClockTimestampNs;
-    mElapsedTimestampNs = elapsedTimestampNs;
-    mTagId = vendorAtom.atomId;
-    mLogUid = AID_STATSD;
-
-    mValues.push_back(
-            FieldValue(Field(mTagId, getSimpleField(1)), Value(vendorAtom.reverseDomainName)));
-    for (int i = 0; i < (int)vendorAtom.values.size(); i++) {
-        switch (vendorAtom.values[i].getDiscriminator()) {
-            case VendorAtom::Value::hidl_discriminator::intValue:
-                mValues.push_back(FieldValue(Field(mTagId, getSimpleField(i + 2)),
-                                             Value(vendorAtom.values[i].intValue())));
-                break;
-            case VendorAtom::Value::hidl_discriminator::longValue:
-                mValues.push_back(FieldValue(Field(mTagId, getSimpleField(i + 2)),
-                                             Value(vendorAtom.values[i].longValue())));
-                break;
-            case VendorAtom::Value::hidl_discriminator::floatValue:
-                mValues.push_back(FieldValue(Field(mTagId, getSimpleField(i + 2)),
-                                             Value(vendorAtom.values[i].floatValue())));
-                break;
-            case VendorAtom::Value::hidl_discriminator::stringValue:
-                mValues.push_back(FieldValue(Field(mTagId, getSimpleField(i + 2)),
-                                             Value(vendorAtom.values[i].stringValue())));
-                break;
-        }
-    }
-}
-
-LogEvent::LogEvent(int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
                    const InstallTrainInfo& trainInfo) {
     mLogdTimestampNs = wallClockTimestampNs;
     mElapsedTimestampNs = elapsedTimestampNs;
@@ -801,6 +806,26 @@
     return 0.0;
 }
 
+std::vector<uint8_t> LogEvent::GetStorage(size_t key, status_t* err) const {
+    int field = getSimpleField(key);
+    for (const auto& value : mValues) {
+      if (value.mField.getField() == field) {
+        if (value.mValue.getType() == STORAGE) {
+          return value.mValue.storage_value;
+        } else {
+          *err = BAD_TYPE;
+          return vector<uint8_t>();
+        }
+      }
+      if ((size_t)value.mField.getPosAtDepth(0) > key) {
+        break;
+      }
+    }
+
+    *err = BAD_INDEX;
+    return vector<uint8_t>();
+}
+
 string LogEvent::ToString() const {
     string result;
     result += StringPrintf("{ uid(%d) %lld %lld (%d)", mLogUid, (long long)mLogdTimestampNs,
diff --git a/cmds/statsd/src/logd/LogEvent.h b/cmds/statsd/src/logd/LogEvent.h
index 0f33c56..a67bef4 100644
--- a/cmds/statsd/src/logd/LogEvent.h
+++ b/cmds/statsd/src/logd/LogEvent.h
@@ -18,19 +18,14 @@
 
 #include "FieldValue.h"
 
-#include <android/frameworks/stats/1.0/types.h>
 #include <android/util/ProtoOutputStream.h>
-#include <log/log_read.h>
 #include <private/android_logger.h>
 #include <stats_event_list.h>
 #include <stats_event.h>
-#include <utils/Errors.h>
 
 #include <string>
 #include <vector>
 
-using namespace android::frameworks::stats::V1_0;
-
 namespace android {
 namespace os {
 namespace statsd {
@@ -61,6 +56,9 @@
     std::string trainName;
     int32_t status;
     std::vector<int64_t> experimentIds;
+    bool requiresStaging;
+    bool rollbackEnabled;
+    bool requiresLowLatencyMonitor;
 };
 
 /**
@@ -71,12 +69,12 @@
     /**
      * Read a LogEvent from the socket
      */
-    explicit LogEvent(uint8_t* msg, uint32_t len, uint32_t uid);
+    explicit LogEvent(uint8_t* msg, uint32_t len, int32_t uid, int32_t pid);
 
     /**
      * Temp constructor to use for pulled atoms until we flip the socket schema.
      */
-    explicit LogEvent(uint8_t* msg, uint32_t len, uint32_t uid, bool useNewSchema);
+    explicit LogEvent(uint8_t* msg, uint32_t len, int32_t uid, int32_t pid, bool useNewSchema);
 
     /**
      * Constructs a LogEvent with synthetic data for testing. Must call init() before reading.
@@ -105,9 +103,6 @@
                       const std::vector<uint8_t>& experimentIds, int32_t userId);
 
     explicit LogEvent(int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
-                      const VendorAtom& vendorAtom);
-
-    explicit LogEvent(int64_t wallClockTimestampNs, int64_t elapsedTimestampNs,
                       const InstallTrainInfo& installTrainInfo);
 
     ~LogEvent();
@@ -123,9 +118,17 @@
      */
     inline int GetTagId() const { return mTagId; }
 
-    inline uint32_t GetUid() const {
-        return mLogUid;
-    }
+    /**
+     * Get the uid of the logging client.
+     * Returns -1 if the uid is unknown/has not been set.
+     */
+    inline int32_t GetUid() const { return mLogUid; }
+
+    /**
+     * Get the pid of the logging client.
+     * Returns -1 if the pid is unknown/has not been set.
+     */
+    inline int32_t GetPid() const { return mLogPid; }
 
     /**
      * Get the nth value, starting at 1.
@@ -138,6 +141,7 @@
     const char* GetString(size_t key, status_t* err) const;
     bool GetBool(size_t key, status_t* err) const;
     float GetFloat(size_t key, status_t* err) const;
+    std::vector<uint8_t> GetStorage(size_t key, status_t* err) const;
 
     /**
      * Write test data to the LogEvent. This can only be used when the LogEvent is constructed
@@ -208,6 +212,22 @@
         return LogEvent(*this);
     }
 
+    template <class T>
+    status_t updateValue(size_t key, T& value, Type type) {
+        int field = getSimpleField(key);
+        for (auto& fieldValue : mValues) {
+            if (fieldValue.mField.getField() == field) {
+                if (fieldValue.mValue.getType() == type) {
+                    fieldValue.mValue = Value(value);
+                   return OK;
+               } else {
+                   return BAD_TYPE;
+                }
+            }
+        }
+        return BAD_INDEX;
+    }
+
 private:
     /**
      * Only use this if copy is absolutely needed.
@@ -255,7 +275,15 @@
             mValid = false;
             value = 0; // all primitive types can successfully cast 0
         } else {
-            value = *((T*)mBuf);
+            // When alignof(T) == 1, hopefully the compiler can optimize away
+            // this conditional as always true.
+            if ((reinterpret_cast<uintptr_t>(mBuf) % alignof(T)) == 0) {
+                // We're properly aligned, and can safely make this assignment.
+                value = *((T*)mBuf);
+            } else {
+                // We need to use memcpy.  It's slower, but safe.
+                memcpy(&value, mBuf, sizeof(T));
+            }
             mBuf += sizeof(T);
             mRemainingLen -= sizeof(T);
         }
@@ -297,9 +325,14 @@
     // The elapsed timestamp set by statsd log writer.
     int64_t mElapsedTimestampNs;
 
+    // The atom tag of the event.
     int mTagId;
 
-    uint32_t mLogUid;
+    // The uid of the logging client (defaults to -1).
+    int32_t mLogUid = -1;
+
+    // The pid of the logging client (defaults to -1).
+    int32_t mLogPid = -1;
 };
 
 void writeExperimentIdsToProto(const std::vector<int64_t>& experimentIds, std::vector<uint8_t>* protoOut);
diff --git a/cmds/statsd/src/logd/LogEventQueue.h b/cmds/statsd/src/logd/LogEventQueue.h
index b4fd63f..9dda3d2 100644
--- a/cmds/statsd/src/logd/LogEventQueue.h
+++ b/cmds/statsd/src/logd/LogEventQueue.h
@@ -19,10 +19,8 @@
 #include "LogEvent.h"
 
 #include <condition_variable>
-#include <memory>
 #include <mutex>
 #include <queue>
-#include <thread>
 
 namespace android {
 namespace os {
diff --git a/cmds/statsd/src/main.cpp b/cmds/statsd/src/main.cpp
index 7d446a9..140ef4e 100644
--- a/cmds/statsd/src/main.cpp
+++ b/cmds/statsd/src/main.cpp
@@ -20,16 +20,10 @@
 #include "StatsService.h"
 #include "socket/StatsSocketListener.h"
 
-#include <binder/IInterface.h>
 #include <binder/IPCThreadState.h>
 #include <binder/IServiceManager.h>
 #include <binder/ProcessState.h>
-#include <binder/Status.h>
-#include <hidl/HidlTransportSupport.h>
 #include <utils/Looper.h>
-#include <utils/StrongPointer.h>
-
-#include <memory>
 
 #include <stdio.h>
 #include <sys/stat.h>
@@ -80,8 +74,6 @@
     ps->giveThreadPoolName();
     IPCThreadState::self()->disableBackgroundScheduling(true);
 
-    ::android::hardware::configureRpcThreadpool(4 /*threads*/, false /*willJoin*/);
-
     std::shared_ptr<LogEventQueue> eventQueue =
             std::make_shared<LogEventQueue>(2000 /*buffer limit. Buffer is NOT pre-allocated*/);
 
@@ -94,12 +86,6 @@
         return -1;
     }
 
-    auto ret = gStatsService->registerAsService();
-    if (ret != ::android::OK) {
-        ALOGE("Failed to add service as HIDL service");
-        return 1; // or handle error
-    }
-
     registerSigHandler();
 
     gStatsService->sayHiToStatsCompanion();
diff --git a/cmds/statsd/src/matchers/CombinationLogMatchingTracker.cpp b/cmds/statsd/src/matchers/CombinationLogMatchingTracker.cpp
index 15c067e..b94a957 100644
--- a/cmds/statsd/src/matchers/CombinationLogMatchingTracker.cpp
+++ b/cmds/statsd/src/matchers/CombinationLogMatchingTracker.cpp
@@ -24,8 +24,6 @@
 namespace statsd {
 
 using std::set;
-using std::string;
-using std::unique_ptr;
 using std::unordered_map;
 using std::vector;
 
diff --git a/cmds/statsd/src/matchers/CombinationLogMatchingTracker.h b/cmds/statsd/src/matchers/CombinationLogMatchingTracker.h
index 2a3f08d..55bc4605 100644
--- a/cmds/statsd/src/matchers/CombinationLogMatchingTracker.h
+++ b/cmds/statsd/src/matchers/CombinationLogMatchingTracker.h
@@ -16,9 +16,6 @@
 #ifndef COMBINATION_LOG_MATCHING_TRACKER_H
 #define COMBINATION_LOG_MATCHING_TRACKER_H
 
-#include <log/log_read.h>
-#include <log/logprint.h>
-#include <set>
 #include <unordered_map>
 #include <vector>
 #include "LogMatchingTracker.h"
diff --git a/cmds/statsd/src/matchers/EventMatcherWizard.cpp b/cmds/statsd/src/matchers/EventMatcherWizard.cpp
index 8418e98..025c9a8 100644
--- a/cmds/statsd/src/matchers/EventMatcherWizard.cpp
+++ b/cmds/statsd/src/matchers/EventMatcherWizard.cpp
@@ -14,14 +14,11 @@
  * limitations under the License.
  */
 #include "EventMatcherWizard.h"
-#include <unordered_set>
 
 namespace android {
 namespace os {
 namespace statsd {
 
-using std::map;
-using std::string;
 using std::vector;
 
 MatchingState EventMatcherWizard::matchLogEvent(const LogEvent& event, int matcher_index) {
diff --git a/cmds/statsd/src/matchers/SimpleLogMatchingTracker.cpp b/cmds/statsd/src/matchers/SimpleLogMatchingTracker.cpp
index 31b3db5..082daf5a 100644
--- a/cmds/statsd/src/matchers/SimpleLogMatchingTracker.cpp
+++ b/cmds/statsd/src/matchers/SimpleLogMatchingTracker.cpp
@@ -23,8 +23,6 @@
 namespace os {
 namespace statsd {
 
-using std::string;
-using std::unique_ptr;
 using std::unordered_map;
 using std::vector;
 
diff --git a/cmds/statsd/src/matchers/SimpleLogMatchingTracker.h b/cmds/statsd/src/matchers/SimpleLogMatchingTracker.h
index 28b339c..a0f6a88 100644
--- a/cmds/statsd/src/matchers/SimpleLogMatchingTracker.h
+++ b/cmds/statsd/src/matchers/SimpleLogMatchingTracker.h
@@ -17,9 +17,6 @@
 #ifndef SIMPLE_LOG_MATCHING_TRACKER_H
 #define SIMPLE_LOG_MATCHING_TRACKER_H
 
-#include <log/log_read.h>
-#include <log/logprint.h>
-#include <set>
 #include <unordered_map>
 #include <vector>
 #include "LogMatchingTracker.h"
diff --git a/cmds/statsd/src/matchers/matcher_util.cpp b/cmds/statsd/src/matchers/matcher_util.cpp
index 476fae3..1f8bbd7 100644
--- a/cmds/statsd/src/matchers/matcher_util.cpp
+++ b/cmds/statsd/src/matchers/matcher_util.cpp
@@ -23,7 +23,6 @@
 
 using std::set;
 using std::string;
-using std::unordered_map;
 using std::vector;
 
 namespace android {
diff --git a/cmds/statsd/src/matchers/matcher_util.h b/cmds/statsd/src/matchers/matcher_util.h
index 15b4a97..1ab3e87 100644
--- a/cmds/statsd/src/matchers/matcher_util.h
+++ b/cmds/statsd/src/matchers/matcher_util.h
@@ -18,11 +18,6 @@
 
 #include "logd/LogEvent.h"
 
-#include <log/log_read.h>
-#include <log/logprint.h>
-#include <set>
-#include <string>
-#include <unordered_map>
 #include <vector>
 #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"
 #include "packages/UidMap.h"
diff --git a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
index 4ab6fd4..5c606bc 100644
--- a/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/GaugeMetricProducer.cpp
@@ -21,8 +21,6 @@
 #include "GaugeMetricProducer.h"
 #include "../stats_log_util.h"
 
-#include <cutils/log.h>
-
 using android::util::FIELD_COUNT_REPEATED;
 using android::util::FIELD_TYPE_BOOL;
 using android::util::FIELD_TYPE_FLOAT;
@@ -549,14 +547,11 @@
 void GaugeMetricProducer::flushCurrentBucketLocked(const int64_t& eventTimeNs,
                                                    const int64_t& nextBucketStartTimeNs) {
     int64_t fullBucketEndTimeNs = getCurrentBucketEndTimeNs();
+    int64_t bucketEndTime = eventTimeNs < fullBucketEndTimeNs ? eventTimeNs : fullBucketEndTimeNs;
 
     GaugeBucket info;
     info.mBucketStartNs = mCurrentBucketStartTimeNs;
-    if (eventTimeNs < fullBucketEndTimeNs) {
-        info.mBucketEndNs = eventTimeNs;
-    } else {
-        info.mBucketEndNs = fullBucketEndTimeNs;
-    }
+    info.mBucketEndNs = bucketEndTime;
 
     // Add bucket to mPastBuckets if bucket is large enough.
     // Otherwise, drop the bucket data and add bucket metadata to mSkippedBuckets.
@@ -571,7 +566,7 @@
         }
     } else {
         mCurrentSkippedBucket.bucketStartTimeNs = mCurrentBucketStartTimeNs;
-        mCurrentSkippedBucket.bucketEndTimeNs = eventTimeNs;
+        mCurrentSkippedBucket.bucketEndTimeNs = bucketEndTime;
         if (!maxDropEventsReached()) {
             mCurrentSkippedBucket.dropEvents.emplace_back(
                     buildDropEvent(eventTimeNs, BucketDropReason::BUCKET_TOO_SMALL));
diff --git a/cmds/statsd/src/metrics/MetricProducer.cpp b/cmds/statsd/src/metrics/MetricProducer.cpp
index 5c29cb3..be754e2 100644
--- a/cmds/statsd/src/metrics/MetricProducer.cpp
+++ b/cmds/statsd/src/metrics/MetricProducer.cpp
@@ -33,7 +33,6 @@
 namespace os {
 namespace statsd {
 
-using std::map;
 
 // for ActiveMetric
 const int FIELD_ID_ACTIVE_METRIC_ID = 1;
diff --git a/cmds/statsd/src/metrics/MetricProducer.h b/cmds/statsd/src/metrics/MetricProducer.h
index 99f0c64..d721514 100644
--- a/cmds/statsd/src/metrics/MetricProducer.h
+++ b/cmds/statsd/src/metrics/MetricProducer.h
@@ -18,7 +18,6 @@
 #define METRIC_PRODUCER_H
 
 #include <frameworks/base/cmds/statsd/src/active_config_list.pb.h>
-#include <log/logprint.h>
 #include <utils/RefBase.h>
 
 #include <unordered_map>
diff --git a/cmds/statsd/src/metrics/MetricsManager.cpp b/cmds/statsd/src/metrics/MetricsManager.cpp
index 088f607..536700f 100644
--- a/cmds/statsd/src/metrics/MetricsManager.cpp
+++ b/cmds/statsd/src/metrics/MetricsManager.cpp
@@ -18,9 +18,7 @@
 
 #include "MetricsManager.h"
 
-#include <log/logprint.h>
 #include <private/android_filesystem_config.h>
-#include <utils/SystemClock.h>
 
 #include "CountMetricProducer.h"
 #include "atoms_info.h"
@@ -42,10 +40,8 @@
 using android::util::FIELD_TYPE_STRING;
 using android::util::ProtoOutputStream;
 
-using std::make_unique;
 using std::set;
 using std::string;
-using std::unordered_map;
 using std::vector;
 
 namespace android {
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.cpp b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
index d2db6e9..dc9b413 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.cpp
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.cpp
@@ -21,7 +21,6 @@
 #include "../guardrail/StatsdStats.h"
 #include "../stats_log_util.h"
 
-#include <cutils/log.h>
 #include <limits.h>
 #include <stdlib.h>
 
@@ -33,12 +32,8 @@
 using android::util::FIELD_TYPE_MESSAGE;
 using android::util::FIELD_TYPE_STRING;
 using android::util::ProtoOutputStream;
-using std::list;
-using std::make_pair;
-using std::make_shared;
 using std::map;
 using std::shared_ptr;
-using std::unique_ptr;
 using std::unordered_map;
 
 namespace android {
@@ -384,9 +379,6 @@
     if (!mCurrentBucketIsInvalid) {
         // Only report to StatsdStats once per invalid bucket.
         StatsdStats::getInstance().noteInvalidatedBucket(mMetricId);
-
-        mCurrentSkippedBucket.bucketStartTimeNs = mCurrentBucketStartTimeNs;
-        mCurrentSkippedBucket.bucketEndTimeNs = getCurrentBucketEndTimeNs();
     }
 
     if (!maxDropEventsReached()) {
@@ -960,12 +952,6 @@
     int64_t conditionTrueDuration = mConditionTimer.newBucketStart(bucketEndTime);
     bool isBucketLargeEnough = bucketEndTime - mCurrentBucketStartTimeNs >= mMinBucketSizeNs;
     if (!isBucketLargeEnough) {
-        // If the bucket is valid, this is the only drop reason and we need to
-        // set the skipped bucket start and end times.
-        if (!mCurrentBucketIsInvalid) {
-            mCurrentSkippedBucket.bucketStartTimeNs = mCurrentBucketStartTimeNs;
-            mCurrentSkippedBucket.bucketEndTimeNs = bucketEndTime;
-        }
         if (!maxDropEventsReached()) {
             mCurrentSkippedBucket.dropEvents.emplace_back(
                     buildDropEvent(eventTimeNs, BucketDropReason::BUCKET_TOO_SMALL));
@@ -983,6 +969,8 @@
             }
         }
     } else {
+        mCurrentSkippedBucket.bucketStartTimeNs = mCurrentBucketStartTimeNs;
+        mCurrentSkippedBucket.bucketEndTimeNs = bucketEndTime;
         mSkippedBuckets.emplace_back(mCurrentSkippedBucket);
     }
 
diff --git a/cmds/statsd/src/metrics/ValueMetricProducer.h b/cmds/statsd/src/metrics/ValueMetricProducer.h
index 19fb694..50317b3 100644
--- a/cmds/statsd/src/metrics/ValueMetricProducer.h
+++ b/cmds/statsd/src/metrics/ValueMetricProducer.h
@@ -17,8 +17,6 @@
 #pragma once
 
 #include <gtest/gtest_prod.h>
-#include <utils/threads.h>
-#include <list>
 #include "anomaly/AnomalyTracker.h"
 #include "condition/ConditionTimer.h"
 #include "condition/ConditionTracker.h"
diff --git a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
index c3aad66..f44e327 100644
--- a/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
+++ b/cmds/statsd/src/metrics/duration_helper/OringDurationTracker.h
@@ -19,7 +19,6 @@
 
 #include "DurationTracker.h"
 
-#include <set>
 namespace android {
 namespace os {
 namespace statsd {
diff --git a/cmds/statsd/src/metrics/metrics_manager_util.cpp b/cmds/statsd/src/metrics/metrics_manager_util.cpp
index 17f62b0..40a313a 100644
--- a/cmds/statsd/src/metrics/metrics_manager_util.cpp
+++ b/cmds/statsd/src/metrics/metrics_manager_util.cpp
@@ -40,7 +40,6 @@
 #include "stats_util.h"
 
 using std::set;
-using std::string;
 using std::unordered_map;
 using std::vector;
 
diff --git a/cmds/statsd/src/metrics/metrics_manager_util.h b/cmds/statsd/src/metrics/metrics_manager_util.h
index 95b2ab8..5ebb232 100644
--- a/cmds/statsd/src/metrics/metrics_manager_util.h
+++ b/cmds/statsd/src/metrics/metrics_manager_util.h
@@ -16,7 +16,6 @@
 
 #pragma once
 
-#include <memory>
 #include <set>
 #include <unordered_map>
 #include <vector>
diff --git a/cmds/statsd/src/packages/PackageInfoListener.h b/cmds/statsd/src/packages/PackageInfoListener.h
index fcdbe69..6c50a8c 100644
--- a/cmds/statsd/src/packages/PackageInfoListener.h
+++ b/cmds/statsd/src/packages/PackageInfoListener.h
@@ -17,7 +17,6 @@
 #ifndef STATSD_PACKAGE_INFO_LISTENER_H
 #define STATSD_PACKAGE_INFO_LISTENER_H
 
-#include <utils/RefBase.h>
 #include <string>
 
 namespace android {
diff --git a/cmds/statsd/src/packages/UidMap.cpp b/cmds/statsd/src/packages/UidMap.cpp
index 7e63bbf..ab0e86e 100644
--- a/cmds/statsd/src/packages/UidMap.cpp
+++ b/cmds/statsd/src/packages/UidMap.cpp
@@ -21,10 +21,6 @@
 #include "guardrail/StatsdStats.h"
 #include "packages/UidMap.h"
 
-#include <android/os/IStatsCompanionService.h>
-#include <binder/IServiceManager.h>
-#include <utils/Errors.h>
-
 #include <inttypes.h>
 
 using namespace android;
diff --git a/cmds/statsd/src/packages/UidMap.h b/cmds/statsd/src/packages/UidMap.h
index 2d3f6ee..bfac6e3 100644
--- a/cmds/statsd/src/packages/UidMap.h
+++ b/cmds/statsd/src/packages/UidMap.h
@@ -21,10 +21,8 @@
 #include "packages/PackageInfoListener.h"
 #include "stats_util.h"
 
-#include <binder/IResultReceiver.h>
 #include <binder/IShellCallback.h>
 #include <gtest/gtest_prod.h>
-#include <log/logprint.h>
 #include <stdio.h>
 #include <utils/RefBase.h>
 #include <list>
diff --git a/cmds/statsd/src/shell/ShellSubscriber.cpp b/cmds/statsd/src/shell/ShellSubscriber.cpp
index f7e32d4..d6a0433 100644
--- a/cmds/statsd/src/shell/ShellSubscriber.cpp
+++ b/cmds/statsd/src/shell/ShellSubscriber.cpp
@@ -18,7 +18,6 @@
 
 #include "ShellSubscriber.h"
 
-#include <android-base/file.h>
 #include "matchers/matcher_util.h"
 #include "stats_log_util.h"
 
diff --git a/cmds/statsd/src/shell/ShellSubscriber.h b/cmds/statsd/src/shell/ShellSubscriber.h
index 8e54a8b..86d8590 100644
--- a/cmds/statsd/src/shell/ShellSubscriber.h
+++ b/cmds/statsd/src/shell/ShellSubscriber.h
@@ -22,7 +22,6 @@
 #include <binder/IResultReceiver.h>
 #include <condition_variable>
 #include <mutex>
-#include <string>
 #include <thread>
 #include "external/StatsPullerManager.h"
 #include "frameworks/base/cmds/statsd/src/shell/shell_config.pb.h"
diff --git a/cmds/statsd/src/socket/StatsSocketListener.cpp b/cmds/statsd/src/socket/StatsSocketListener.cpp
index 4308a110..8f0f480 100755
--- a/cmds/statsd/src/socket/StatsSocketListener.cpp
+++ b/cmds/statsd/src/socket/StatsSocketListener.cpp
@@ -27,9 +27,6 @@
 #include <unistd.h>
 
 #include <cutils/sockets.h>
-#include <private/android_filesystem_config.h>
-#include <private/android_logger.h>
-#include <unordered_map>
 
 #include "StatsSocketListener.h"
 #include "guardrail/StatsdStats.h"
@@ -126,9 +123,10 @@
     uint8_t* msg = ptr + sizeof(uint32_t);
     uint32_t len = n - sizeof(uint32_t);
     uint32_t uid = cred->uid;
+    uint32_t pid = cred->pid;
 
     int64_t oldestTimestamp;
-    if (!mQueue->push(std::make_unique<LogEvent>(msg, len, uid), &oldestTimestamp)) {
+    if (!mQueue->push(std::make_unique<LogEvent>(msg, len, uid, pid), &oldestTimestamp)) {
         StatsdStats::getInstance().noteEventQueueOverflow(oldestTimestamp);
     }
 
diff --git a/cmds/statsd/src/state/StateManager.h b/cmds/statsd/src/state/StateManager.h
index 8bc2461..8b3a421 100644
--- a/cmds/statsd/src/state/StateManager.h
+++ b/cmds/statsd/src/state/StateManager.h
@@ -15,7 +15,6 @@
  */
 #pragma once
 
-#include <gtest/gtest_prod.h>
 #include <inttypes.h>
 #include <utils/RefBase.h>
 
diff --git a/cmds/statsd/src/state/StateTracker.cpp b/cmds/statsd/src/state/StateTracker.cpp
index 3ad21e0..ab86127 100644
--- a/cmds/statsd/src/state/StateTracker.cpp
+++ b/cmds/statsd/src/state/StateTracker.cpp
@@ -26,7 +26,9 @@
 namespace statsd {
 
 StateTracker::StateTracker(const int32_t atomId, const util::StateAtomFieldOptions& stateAtomInfo)
-    : mAtomId(atomId), mStateField(getSimpleMatcher(atomId, stateAtomInfo.exclusiveField)) {
+    : mAtomId(atomId),
+      mStateField(getSimpleMatcher(atomId, stateAtomInfo.exclusiveField)),
+      mNested(stateAtomInfo.nested) {
     // create matcher for each primary field
     for (const auto& primaryField : stateAtomInfo.primaryFields) {
         if (primaryField == util::FIRST_UID_IN_CHAIN) {
@@ -38,7 +40,13 @@
         }
     }
 
-    // TODO(tsaichristine): b/142108433 set default state, reset state, and nesting
+    if (stateAtomInfo.defaultState != util::UNSET_VALUE) {
+        mDefaultState = stateAtomInfo.defaultState;
+    }
+
+    if (stateAtomInfo.resetState != util::UNSET_VALUE) {
+        mResetState = stateAtomInfo.resetState;
+    }
 }
 
 void StateTracker::onLogEvent(const LogEvent& event) {
@@ -60,7 +68,6 @@
 
     // Parse event for state value.
     FieldValue stateValue;
-    int32_t state;
     if (!filterValues(mStateField, event.getValues(), &stateValue) ||
         stateValue.mValue.getType() != INT) {
         ALOGE("StateTracker error extracting state from log event. Type: %d",
@@ -68,11 +75,12 @@
         handlePartialReset(eventTimeNs, primaryKey);
         return;
     }
-    state = stateValue.mValue.int_value;
 
+    int32_t state = stateValue.mValue.int_value;
     if (state == mResetState) {
         VLOG("StateTracker Reset state: %s", stateValue.mValue.toString().c_str());
         handleReset(eventTimeNs);
+        return;
     }
 
     // Track and update state.
@@ -113,15 +121,17 @@
             return true;
         }
     } else if (queryKey.getValues().size() > mPrimaryFields.size()) {
-        ALOGE("StateTracker query key size > primary key size is illegal");
+        ALOGE("StateTracker query key size %zu > primary key size %zu is illegal",
+              queryKey.getValues().size(), mPrimaryFields.size());
     } else {
-        ALOGE("StateTracker query key size < primary key size is not supported");
+        ALOGE("StateTracker query key size %zu < primary key size %zu is not supported",
+              queryKey.getValues().size(), mPrimaryFields.size());
     }
 
-    // Set the state value to unknown if:
+    // Set the state value to default state if:
     // - query key size is incorrect
     // - query key is not found in state map
-    output->mValue = StateTracker::kStateUnknown;
+    output->mValue = mDefaultState;
     return false;
 }
 
@@ -164,18 +174,52 @@
         *oldState = mDefaultState;
     }
 
-    // update state map
-    if (eventState == mDefaultState) {
-        // remove (key, state) pair if state returns to default state
-        VLOG("\t StateTracker changed to default state")
-        mStateMap.erase(primaryKey);
-    } else {
-        mStateMap[primaryKey].state = eventState;
-        mStateMap[primaryKey].count = 1;
+    // Update state map for non-nested counting case.
+    // Every state event triggers a state overwrite.
+    if (!mNested) {
+        if (eventState == mDefaultState) {
+            // remove (key, state) pair if state returns to default state
+            VLOG("\t StateTracker changed to default state")
+            mStateMap.erase(primaryKey);
+        } else {
+            mStateMap[primaryKey].state = eventState;
+            mStateMap[primaryKey].count = 1;
+        }
+        *newState = eventState;
+        return;
     }
-    *newState = eventState;
 
-    // TODO(tsaichristine): support atoms with nested counting
+    // Update state map for nested counting case.
+    //
+    // Nested counting is only allowed for binary state events such as ON/OFF or
+    // ACQUIRE/RELEASE. For example, WakelockStateChanged might have the state
+    // events: ON, ON, OFF. The state will still be ON until we see the same
+    // number of OFF events as ON events.
+    //
+    // In atoms.proto, a state atom with nested counting enabled
+    // must only have 2 states and one of the states must be the default state.
+    it = mStateMap.find(primaryKey);
+    if (it != mStateMap.end()) {
+        *newState = it->second.state;
+        if (eventState == it->second.state) {
+            it->second.count++;
+        } else if (eventState == mDefaultState) {
+            if ((--it->second.count) == 0) {
+                mStateMap.erase(primaryKey);
+                *newState = mDefaultState;
+            }
+        } else {
+            ALOGE("StateTracker Nest counting state has a third state instead of the binary state "
+                  "limit.");
+            return;
+        }
+    } else {
+        if (eventState != mDefaultState) {
+            mStateMap[primaryKey].state = eventState;
+            mStateMap[primaryKey].count = 1;
+        }
+        *newState = eventState;
+    }
 }
 
 }  // namespace statsd
diff --git a/cmds/statsd/src/state/StateTracker.h b/cmds/statsd/src/state/StateTracker.h
index 70f1627..aeca2a5 100644
--- a/cmds/statsd/src/state/StateTracker.h
+++ b/cmds/statsd/src/state/StateTracker.h
@@ -74,6 +74,8 @@
 
     int32_t mResetState = kStateUnknown;
 
+    const bool mNested;
+
     // Maps primary key to state value info
     std::unordered_map<HashableDimensionKey, StateValueInfo> mStateMap;
 
diff --git a/cmds/statsd/src/stats_log_util.cpp b/cmds/statsd/src/stats_log_util.cpp
index 76c1936..73f640e 100644
--- a/cmds/statsd/src/stats_log_util.cpp
+++ b/cmds/statsd/src/stats_log_util.cpp
@@ -17,14 +17,12 @@
 #include "hash.h"
 #include "stats_log_util.h"
 
-#include <logd/LogEvent.h>
 #include <private/android_filesystem_config.h>
-#include <utils/Log.h>
 #include <set>
-#include <stack>
-#include <utils/Log.h>
 #include <utils/SystemClock.h>
 
+#include "statscompanion_util.h"
+
 using android::util::AtomsInfo;
 using android::util::FIELD_COUNT_REPEATED;
 using android::util::FIELD_TYPE_BOOL;
@@ -588,6 +586,21 @@
     return millis * 1000000;
 }
 
+bool checkPermissionForIds(const char* permission, pid_t pid, uid_t uid) {
+    sp<IStatsCompanionService> scs = getStatsCompanionService();
+    if (scs == nullptr) {
+        return false;
+    }
+
+    bool success;
+    binder::Status status = scs->checkPermission(String16(permission), pid, uid, &success);
+    if (!status.isOk()) {
+        return false;
+    }
+
+    return success;
+}
+
 }  // namespace statsd
 }  // namespace os
 }  // namespace android
diff --git a/cmds/statsd/src/stats_log_util.h b/cmds/statsd/src/stats_log_util.h
index 5fdf6e2..aec0956 100644
--- a/cmds/statsd/src/stats_log_util.h
+++ b/cmds/statsd/src/stats_log_util.h
@@ -95,6 +95,9 @@
 // Returns the truncated timestamp to the nearest 5 minutes if needed.
 int64_t truncateTimestampIfNecessary(int atomId, int64_t timestampNs);
 
+// Checks permission for given pid and uid.
+bool checkPermissionForIds(const char* permission, pid_t pid, uid_t uid);
+
 inline bool isVendorPulledAtom(int atomId) {
     return atomId >= StatsdStats::kVendorPulledAtomStartTag && atomId < StatsdStats::kMaxAtomTag;
 }
diff --git a/cmds/statsd/src/statscompanion_util.h b/cmds/statsd/src/statscompanion_util.h
index ff702f2..dc4f283 100644
--- a/cmds/statsd/src/statscompanion_util.h
+++ b/cmds/statsd/src/statscompanion_util.h
@@ -18,12 +18,6 @@
 
 #include "StatsLogProcessor.h"
 
-using namespace android;
-using namespace android::base;
-using namespace android::binder;
-using namespace android::os;
-using namespace std;
-
 namespace android {
 namespace os {
 namespace statsd {
diff --git a/cmds/statsd/src/storage/StorageManager.cpp b/cmds/statsd/src/storage/StorageManager.cpp
index 9b48a02..1bac19e 100644
--- a/cmds/statsd/src/storage/StorageManager.cpp
+++ b/cmds/statsd/src/storage/StorageManager.cpp
@@ -23,10 +23,8 @@
 #include "stats_log_util.h"
 
 #include <android-base/file.h>
-#include <dirent.h>
 #include <private/android_filesystem_config.h>
 #include <fstream>
-#include <iostream>
 
 namespace android {
 namespace os {
@@ -46,7 +44,7 @@
 #define TRAIN_INFO_PATH "/data/misc/train-info/train-info.bin"
 
 // Magic word at the start of the train info file, change this if changing the file format
-const uint32_t TRAIN_INFO_FILE_MAGIC = 0xff7447ff;
+const uint32_t TRAIN_INFO_FILE_MAGIC = 0xfb7447bf;
 
 // for ConfigMetricsReportList
 const int FIELD_ID_REPORTS = 2;
@@ -77,6 +75,29 @@
                         (long long)id);
 }
 
+static const char* findTrainInfoFileNameLocked(const string& trainName) {
+    unique_ptr<DIR, decltype(&closedir)> dir(opendir(TRAIN_INFO_DIR), closedir);
+    if (dir == NULL) {
+        VLOG("Path %s does not exist", TRAIN_INFO_DIR);
+        return nullptr;
+    }
+    dirent* de;
+    while ((de = readdir(dir.get()))) {
+        char* fileName = de->d_name;
+        if (fileName[0] == '.') continue;
+
+        size_t fileNameLength = strlen(fileName);
+        if (fileNameLength >= trainName.length()) {
+            if (0 == strncmp(fileName + fileNameLength - trainName.length(), trainName.c_str(),
+                             trainName.length())) {
+                return fileName;
+            }
+        }
+    }
+
+    return nullptr;
+}
+
 // Returns array of int64_t which contains timestamp in seconds, uid,
 // configID and whether the file is a local history file.
 static void parseFileName(char* name, FileName* output) {
@@ -125,20 +146,25 @@
     close(fd);
 }
 
-bool StorageManager::writeTrainInfo(int64_t trainVersionCode, const std::string& trainName,
-                                    int32_t status, const std::vector<int64_t>& experimentIds) {
+bool StorageManager::writeTrainInfo(const InstallTrainInfo& trainInfo) {
     std::lock_guard<std::mutex> lock(sTrainInfoMutex);
 
-    deleteAllFiles(TRAIN_INFO_DIR);
+    if (trainInfo.trainName.empty()) {
+      return false;
+    }
+    deleteSuffixedFiles(TRAIN_INFO_DIR, trainInfo.trainName.c_str());
 
-    int fd = open(TRAIN_INFO_PATH, O_WRONLY | O_CREAT | O_CLOEXEC, S_IRUSR | S_IWUSR);
+    std::string fileName =
+            StringPrintf("%s/%ld_%s", TRAIN_INFO_DIR, (long) getWallClockSec(),
+                         trainInfo.trainName.c_str());
+
+    int fd = open(fileName.c_str(), O_WRONLY | O_CREAT | O_CLOEXEC, S_IRUSR | S_IWUSR);
     if (fd == -1) {
-        VLOG("Attempt to access %s but failed", TRAIN_INFO_PATH);
+        VLOG("Attempt to access %s but failed", fileName.c_str());
         return false;
     }
 
     size_t result;
-
     // Write the magic word
     result = write(fd, &TRAIN_INFO_FILE_MAGIC, sizeof(TRAIN_INFO_FILE_MAGIC));
     if (result != sizeof(TRAIN_INFO_FILE_MAGIC)) {
@@ -148,8 +174,8 @@
     }
 
     // Write the train version
-    const size_t trainVersionCodeByteCount = sizeof(trainVersionCode);
-    result = write(fd, &trainVersionCode, trainVersionCodeByteCount);
+    const size_t trainVersionCodeByteCount = sizeof(trainInfo.trainVersionCode);
+    result = write(fd, &trainInfo.trainVersionCode, trainVersionCodeByteCount);
     if (result != trainVersionCodeByteCount) {
         VLOG("Failed to wrtie train version code");
         close(fd);
@@ -157,7 +183,7 @@
     }
 
     // Write # of bytes in trainName to file
-    const size_t trainNameSize = trainName.size();
+    const size_t trainNameSize = trainInfo.trainName.size();
     const size_t trainNameSizeByteCount = sizeof(trainNameSize);
     result = write(fd, (uint8_t*)&trainNameSize, trainNameSizeByteCount);
     if (result != trainNameSizeByteCount) {
@@ -167,7 +193,7 @@
     }
 
     // Write trainName to file
-    result = write(fd, trainName.c_str(), trainNameSize);
+    result = write(fd, trainInfo.trainName.c_str(), trainNameSize);
     if (result != trainNameSize) {
         VLOG("Failed to write train name");
         close(fd);
@@ -175,8 +201,8 @@
     }
 
     // Write status to file
-    const size_t statusByteCount = sizeof(status);
-    result = write(fd, (uint8_t*)&status, statusByteCount);
+    const size_t statusByteCount = sizeof(trainInfo.status);
+    result = write(fd, (uint8_t*)&trainInfo.status, statusByteCount);
     if (result != statusByteCount) {
         VLOG("Failed to write status");
         close(fd);
@@ -184,7 +210,7 @@
     }
 
     // Write experiment id count to file.
-    const size_t experimentIdsCount = experimentIds.size();
+    const size_t experimentIdsCount = trainInfo.experimentIds.size();
     const size_t experimentIdsCountByteCount = sizeof(experimentIdsCount);
     result = write(fd, (uint8_t*) &experimentIdsCount, experimentIdsCountByteCount);
     if (result != experimentIdsCountByteCount) {
@@ -195,7 +221,7 @@
 
     // Write experimentIds to file
     for (size_t i = 0; i < experimentIdsCount; i++) {
-        const int64_t experimentId = experimentIds[i];
+        const int64_t experimentId = trainInfo.experimentIds[i];
         const size_t experimentIdByteCount = sizeof(experimentId);
         result = write(fd, &experimentId, experimentIdByteCount);
         if (result == experimentIdByteCount) {
@@ -207,23 +233,47 @@
         }
     }
 
-    result = fchown(fd, AID_STATSD, AID_STATSD);
-    if (result) {
-        VLOG("Failed to chown train info file to statsd");
-        close(fd);
-        return false;
+    // Write bools to file
+    const size_t boolByteCount = sizeof(trainInfo.requiresStaging);
+    result = write(fd, (uint8_t*)&trainInfo.requiresStaging, boolByteCount);
+    if (result != boolByteCount) {
+      VLOG("Failed to write requires staging");
+      close(fd);
+      return false;
+    }
+
+    result = write(fd, (uint8_t*)&trainInfo.rollbackEnabled, boolByteCount);
+    if (result != boolByteCount) {
+      VLOG("Failed to write rollback enabled");
+      close(fd);
+      return false;
+    }
+
+    result = write(fd, (uint8_t*)&trainInfo.requiresLowLatencyMonitor, boolByteCount);
+    if (result != boolByteCount) {
+      VLOG("Failed to write requires log latency monitor");
+      close(fd);
+      return false;
     }
 
     close(fd);
     return true;
 }
 
-bool StorageManager::readTrainInfo(InstallTrainInfo& trainInfo) {
+bool StorageManager::readTrainInfo(const std::string& trainName, InstallTrainInfo& trainInfo) {
     std::lock_guard<std::mutex> lock(sTrainInfoMutex);
+    return readTrainInfoLocked(trainName, trainInfo);
+}
 
-    int fd = open(TRAIN_INFO_PATH, O_RDONLY | O_CLOEXEC);
+bool StorageManager::readTrainInfoLocked(const std::string& trainName, InstallTrainInfo& trainInfo) {
+    trimToFit(TRAIN_INFO_DIR, /*parseTimestampOnly=*/ true);
+    const char* fileName = findTrainInfoFileNameLocked(trainName);
+    if (fileName == nullptr) {
+        return false;
+    }
+    int fd = open(StringPrintf("%s/%s", TRAIN_INFO_DIR, fileName).c_str(), O_RDONLY | O_CLOEXEC);
     if (fd == -1) {
-        VLOG("Failed to open train-info.bin");
+        VLOG("Failed to open %s", fileName);
         return false;
     }
 
@@ -299,6 +349,29 @@
         trainInfo.experimentIds.push_back(experimentId);
     }
 
+    // Read bools
+    const size_t boolByteCount = sizeof(trainInfo.requiresStaging);
+    result = read(fd, &trainInfo.requiresStaging, boolByteCount);
+    if (result != boolByteCount) {
+        VLOG("Failed to read requires requires staging from train info file");
+        close(fd);
+        return false;
+    }
+
+    result = read(fd, &trainInfo.rollbackEnabled, boolByteCount);
+    if (result != boolByteCount) {
+        VLOG("Failed to read requires rollback enabled from train info file");
+        close(fd);
+        return false;
+    }
+
+    result = read(fd, &trainInfo.requiresLowLatencyMonitor, boolByteCount);
+    if (result != boolByteCount) {
+        VLOG("Failed to read requires requires low latency monitor from train info file");
+        close(fd);
+        return false;
+    }
+
     // Expect to be at EOF.
     char c;
     result = read(fd, &c, 1);
@@ -313,6 +386,32 @@
     return true;
 }
 
+vector<InstallTrainInfo> StorageManager::readAllTrainInfo() {
+    std::lock_guard<std::mutex> lock(sTrainInfoMutex);
+    vector<InstallTrainInfo> trainInfoList;
+    unique_ptr<DIR, decltype(&closedir)> dir(opendir(TRAIN_INFO_DIR), closedir);
+    if (dir == NULL) {
+        VLOG("Directory does not exist: %s", TRAIN_INFO_DIR);
+        return trainInfoList;
+    }
+
+    dirent* de;
+    while ((de = readdir(dir.get()))) {
+        char* name = de->d_name;
+        if (name[0] == '.') {
+            continue;
+        }
+
+        InstallTrainInfo trainInfo;
+        bool readSuccess = StorageManager::readTrainInfoLocked(name, trainInfo);
+        if (!readSuccess) {
+            continue;
+        }
+        trainInfoList.push_back(trainInfo);
+    }
+    return trainInfoList;
+}
+
 void StorageManager::deleteFile(const char* file) {
     if (remove(file) != 0) {
         VLOG("Attempt to delete %s but is not found", file);
@@ -576,7 +675,7 @@
     });
 }
 
-void StorageManager::trimToFit(const char* path) {
+void StorageManager::trimToFit(const char* path, bool parseTimestampOnly) {
     unique_ptr<DIR, decltype(&closedir)> dir(opendir(path), closedir);
     if (dir == NULL) {
         VLOG("Path %s does not exist", path);
@@ -591,7 +690,12 @@
         if (name[0] == '.') continue;
 
         FileName output;
-        parseFileName(name, &output);
+        if (parseTimestampOnly) {
+            output.mTimestampSec = StrToInt64(strtok(name, "_"));
+            output.mIsHistory = false;
+        } else {
+            parseFileName(name, &output);
+        }
         if (output.mTimestampSec == -1) continue;
         string file_name = output.getFullFileName(path);
 
diff --git a/cmds/statsd/src/storage/StorageManager.h b/cmds/statsd/src/storage/StorageManager.h
index 69b41c2..d59046d 100644
--- a/cmds/statsd/src/storage/StorageManager.h
+++ b/cmds/statsd/src/storage/StorageManager.h
@@ -52,13 +52,22 @@
     /**
      * Writes train info.
      */
-    static bool writeTrainInfo(int64_t trainVersionCode, const std::string& trainName,
-                               int32_t status, const std::vector<int64_t>& experimentIds);
+    static bool writeTrainInfo(const InstallTrainInfo& trainInfo);
 
     /**
      * Reads train info.
      */
-    static bool readTrainInfo(InstallTrainInfo& trainInfo);
+    static bool readTrainInfo(const std::string& trainName, InstallTrainInfo& trainInfo);
+
+    /**
+     * Reads train info assuming lock is obtained.
+     */
+    static bool readTrainInfoLocked(const std::string& trainName, InstallTrainInfo& trainInfo);
+
+    /**
+     * Reads all train info and returns a vector of train info.
+     */
+    static vector<InstallTrainInfo> readAllTrainInfo();
 
     /**
      * Reads the file content to the buffer.
@@ -124,7 +133,7 @@
      * Trims files in the provided directory to limit the total size, number of
      * files, accumulation of outdated files.
      */
-    static void trimToFit(const char* dir);
+    static void trimToFit(const char* dir, bool parseTimestampOnly = false);
 
     /**
      * Returns true if there already exists identical configuration on device.
diff --git a/cmds/statsd/src/subscriber/IncidentdReporter.cpp b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
index f1320c2..30c90b1 100644
--- a/cmds/statsd/src/subscriber/IncidentdReporter.cpp
+++ b/cmds/statsd/src/subscriber/IncidentdReporter.cpp
@@ -21,11 +21,8 @@
 #include "packages/UidMap.h"
 #include "stats_log_util.h"
 
-#include <android/os/IIncidentManager.h>
-#include <android/os/IncidentReportArgs.h>
 #include <android/util/ProtoOutputStream.h>
-#include <binder/IBinder.h>
-#include <binder/IServiceManager.h>
+#include <incident/incident_report.h>
 
 #include <vector>
 
@@ -133,7 +130,7 @@
         return false;
     }
 
-    IncidentReportArgs incidentReport;
+    android::os::IncidentReportRequest incidentReport;
 
     vector<uint8_t> protoData;
     getProtoData(rule_id, metricId, dimensionKey, metricValue, configKey,
@@ -147,30 +144,21 @@
     uint8_t dest;
     switch (config.dest()) {
         case IncidentdDetails_Destination_AUTOMATIC:
-            dest = android::os::PRIVACY_POLICY_AUTOMATIC;
+            dest = INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC;
             break;
         case IncidentdDetails_Destination_EXPLICIT:
-            dest = android::os::PRIVACY_POLICY_EXPLICIT;
+            dest = INCIDENT_REPORT_PRIVACY_POLICY_EXPLICIT;
             break;
         default:
-            dest = android::os::PRIVACY_POLICY_AUTOMATIC;
+            dest = INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC;
     }
     incidentReport.setPrivacyPolicy(dest);
 
-    incidentReport.setReceiverPkg(config.receiver_pkg());
+    incidentReport.setReceiverPackage(config.receiver_pkg());
 
-    incidentReport.setReceiverCls(config.receiver_cls());
+    incidentReport.setReceiverClass(config.receiver_cls());
 
-    sp<IIncidentManager> service = interface_cast<IIncidentManager>(
-            defaultServiceManager()->getService(android::String16("incident")));
-    if (service == nullptr) {
-        ALOGW("Failed to fetch incident service.");
-        return false;
-    }
-    VLOG("Calling incidentd %p", service.get());
-    binder::Status s = service->reportIncident(incidentReport);
-    VLOG("Report incident status: %s", s.toString8().string());
-    return s.isOk();
+    return incidentReport.takeReport() == NO_ERROR;
 }
 
 }  // namespace statsd
diff --git a/cmds/statsd/src/subscriber/SubscriberReporter.cpp b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
index a37cad1..8fd6b46 100644
--- a/cmds/statsd/src/subscriber/SubscriberReporter.cpp
+++ b/cmds/statsd/src/subscriber/SubscriberReporter.cpp
@@ -20,7 +20,6 @@
 #include "SubscriberReporter.h"
 
 using std::lock_guard;
-using std::unordered_map;
 
 namespace android {
 namespace os {
@@ -122,7 +121,7 @@
             subscription.id(),
             subscription.rule_id(),
             cookies,
-            getStatsDimensionsValue(dimKey.getDimensionKeyInWhat()));
+            dimKey.getDimensionKeyInWhat().toStatsDimensionsValueParcel());
 }
 
 sp<IPendingIntentRef> SubscriberReporter::getBroadcastSubscriber(const ConfigKey& configKey,
@@ -139,61 +138,6 @@
     return pirMapIt->second;
 }
 
-void getStatsDimensionsValueHelper(const vector<FieldValue>& dims, size_t* index, int depth,
-                                   int prefix, vector<StatsDimensionsValue>* output) {
-    size_t count = dims.size();
-    while (*index < count) {
-        const auto& dim = dims[*index];
-        const int valueDepth = dim.mField.getDepth();
-        const int valuePrefix = dim.mField.getPrefix(depth);
-        if (valueDepth > 2) {
-            ALOGE("Depth > 2 not supported");
-            return;
-        }
-        if (depth == valueDepth && valuePrefix == prefix) {
-            switch (dim.mValue.getType()) {
-                case INT:
-                    output->push_back(StatsDimensionsValue(dim.mField.getPosAtDepth(depth),
-                                                           dim.mValue.int_value));
-                    break;
-                case LONG:
-                    output->push_back(StatsDimensionsValue(dim.mField.getPosAtDepth(depth),
-                                                           dim.mValue.long_value));
-                    break;
-                case FLOAT:
-                    output->push_back(StatsDimensionsValue(dim.mField.getPosAtDepth(depth),
-                                                           dim.mValue.float_value));
-                    break;
-                case STRING:
-                    output->push_back(StatsDimensionsValue(dim.mField.getPosAtDepth(depth),
-                                                           String16(dim.mValue.str_value.c_str())));
-                    break;
-                default:
-                    break;
-            }
-            (*index)++;
-        } else if (valueDepth > depth && valuePrefix == prefix) {
-            vector<StatsDimensionsValue> childOutput;
-            getStatsDimensionsValueHelper(dims, index, depth + 1, dim.mField.getPrefix(depth + 1),
-                                          &childOutput);
-            output->push_back(StatsDimensionsValue(dim.mField.getPosAtDepth(depth), childOutput));
-        } else {
-            return;
-        }
-    }
-}
-
-StatsDimensionsValue SubscriberReporter::getStatsDimensionsValue(const HashableDimensionKey& dim) {
-    if (dim.getValues().size() == 0) {
-        return StatsDimensionsValue();
-    }
-
-    vector<StatsDimensionsValue> fields;
-    size_t index = 0;
-    getStatsDimensionsValueHelper(dim.getValues(), &index, 0, 0, &fields);
-    return StatsDimensionsValue(dim.getValues()[0].mField.getTag(), fields);
-}
-
 }  // namespace statsd
 }  // namespace os
 }  // namespace android
diff --git a/cmds/statsd/src/subscriber/SubscriberReporter.h b/cmds/statsd/src/subscriber/SubscriberReporter.h
index 087a1b8..42599f5 100644
--- a/cmds/statsd/src/subscriber/SubscriberReporter.h
+++ b/cmds/statsd/src/subscriber/SubscriberReporter.h
@@ -22,7 +22,6 @@
 
 #include "config/ConfigKey.h"
 #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"  // subscription
-#include "android/os/StatsDimensionsValue.h"
 #include "HashableDimensionKey.h"
 
 #include <mutex>
@@ -70,8 +69,6 @@
 
     sp<IPendingIntentRef> getBroadcastSubscriber(const ConfigKey& configKey, int64_t subscriberId);
 
-    static StatsDimensionsValue getStatsDimensionsValue(const HashableDimensionKey& dim);
-
 private:
     SubscriberReporter() {};
 
diff --git a/cmds/statsd/tests/FieldValue_test.cpp b/cmds/statsd/tests/FieldValue_test.cpp
index f4a59ed..9e69d97 100644
--- a/cmds/statsd/tests/FieldValue_test.cpp
+++ b/cmds/statsd/tests/FieldValue_test.cpp
@@ -290,33 +290,34 @@
     }
 }
 
-TEST(AtomMatcherTest, TestSubscriberDimensionWrite) {
-    HashableDimensionKey dim;
-
-    int pos1[] = {1, 1, 1};
-    int pos2[] = {1, 1, 2};
-    int pos3[] = {1, 1, 3};
-    int pos4[] = {2, 0, 0};
-
-    Field field1(10, pos1, 2);
-    Field field2(10, pos2, 2);
-    Field field3(10, pos3, 2);
-    Field field4(10, pos4, 0);
-
-    Value value1((int32_t)10025);
-    Value value2("tag");
-    Value value3((int32_t)987654);
-    Value value4((int32_t)99999);
-
-    dim.addValue(FieldValue(field1, value1));
-    dim.addValue(FieldValue(field2, value2));
-    dim.addValue(FieldValue(field3, value3));
-    dim.addValue(FieldValue(field4, value4));
-
-    SubscriberReporter::getStatsDimensionsValue(dim);
-    // TODO(b/110562792): can't test anything here because StatsDimensionsValue class doesn't
-    // have any read api.
-}
+//TODO(b/149050405) Update this test for StatsDimensionValueParcel
+//TEST(AtomMatcherTest, TestSubscriberDimensionWrite) {
+//    HashableDimensionKey dim;
+//
+//    int pos1[] = {1, 1, 1};
+//    int pos2[] = {1, 1, 2};
+//    int pos3[] = {1, 1, 3};
+//    int pos4[] = {2, 0, 0};
+//
+//    Field field1(10, pos1, 2);
+//    Field field2(10, pos2, 2);
+//    Field field3(10, pos3, 2);
+//    Field field4(10, pos4, 0);
+//
+//    Value value1((int32_t)10025);
+//    Value value2("tag");
+//    Value value3((int32_t)987654);
+//    Value value4((int32_t)99999);
+//
+//    dim.addValue(FieldValue(field1, value1));
+//    dim.addValue(FieldValue(field2, value2));
+//    dim.addValue(FieldValue(field3, value3));
+//    dim.addValue(FieldValue(field4, value4));
+//
+//    SubscriberReporter::getStatsDimensionsValue(dim);
+//    // TODO(b/110562792): can't test anything here because StatsDimensionsValue class doesn't
+//    // have any read api.
+//}
 
 TEST(AtomMatcherTest, TestWriteDimensionToProto) {
     HashableDimensionKey dim;
diff --git a/cmds/statsd/tests/LogEvent_test.cpp b/cmds/statsd/tests/LogEvent_test.cpp
index 1cf9fb6..f624e12 100644
--- a/cmds/statsd/tests/LogEvent_test.cpp
+++ b/cmds/statsd/tests/LogEvent_test.cpp
@@ -46,20 +46,22 @@
 }
 
 TEST(LogEventTest, TestPrimitiveParsing) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
-    stats_event_write_int32(event, 10);
-    stats_event_write_int64(event, 0x123456789);
-    stats_event_write_float(event, 2.0);
-    stats_event_write_bool(event, true);
-    stats_event_build(event);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
+    AStatsEvent_writeInt32(event, 10);
+    AStatsEvent_writeInt64(event, 0x123456789);
+    AStatsEvent_writeFloat(event, 2.0);
+    AStatsEvent_writeBool(event, true);
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
 
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
+    LogEvent logEvent(buf, size, /*uid=*/ 1000, /*pid=*/ 1001);
     EXPECT_TRUE(logEvent.isValid());
     EXPECT_EQ(100, logEvent.GetTagId());
+    EXPECT_EQ(1000, logEvent.GetUid());
+    EXPECT_EQ(1001, logEvent.GetPid());
 
     const vector<FieldValue>& values = logEvent.getValues();
     EXPECT_EQ(4, values.size());
@@ -88,24 +90,26 @@
     EXPECT_EQ(Type::INT, boolItem.mValue.getType()); // FieldValue does not support boolean type
     EXPECT_EQ(1, boolItem.mValue.int_value);
 
-    stats_event_release(event);
+    AStatsEvent_release(event);
 }
 
 
 TEST(LogEventTest, TestStringAndByteArrayParsing) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
     string str = "test";
-    stats_event_write_string8(event, str.c_str());
-    stats_event_write_byte_array(event, (uint8_t*)str.c_str(), str.length());
-    stats_event_build(event);
+    AStatsEvent_writeString(event, str.c_str());
+    AStatsEvent_writeByteArray(event, (uint8_t*)str.c_str(), str.length());
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
 
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
+    LogEvent logEvent(buf, size, /*uid=*/ 1000, /*pid=*/ 1001);
     EXPECT_TRUE(logEvent.isValid());
     EXPECT_EQ(100, logEvent.GetTagId());
+    EXPECT_EQ(1000, logEvent.GetUid());
+    EXPECT_EQ(1001, logEvent.GetPid());
 
     const vector<FieldValue>& values = logEvent.getValues();
     EXPECT_EQ(2, values.size());
@@ -123,22 +127,24 @@
     vector<uint8_t> expectedValue = {'t', 'e', 's', 't'};
     EXPECT_EQ(expectedValue, storageItem.mValue.storage_value);
 
-    stats_event_release(event);
+    AStatsEvent_release(event);
 }
 
 TEST(LogEventTest, TestEmptyString) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
     string empty = "";
-    stats_event_write_string8(event, empty.c_str());
-    stats_event_build(event);
+    AStatsEvent_writeString(event, empty.c_str());
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
 
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
+    LogEvent logEvent(buf, size, /*uid=*/ 1000, /*pid=*/ 1001);
     EXPECT_TRUE(logEvent.isValid());
     EXPECT_EQ(100, logEvent.GetTagId());
+    EXPECT_EQ(1000, logEvent.GetUid());
+    EXPECT_EQ(1001, logEvent.GetPid());
 
     const vector<FieldValue>& values = logEvent.getValues();
     EXPECT_EQ(1, values.size());
@@ -149,22 +155,24 @@
     EXPECT_EQ(Type::STRING, item.mValue.getType());
     EXPECT_EQ(empty, item.mValue.str_value);
 
-    stats_event_release(event);
+    AStatsEvent_release(event);
 }
 
 TEST(LogEventTest, TestByteArrayWithNullCharacter) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
     uint8_t message[] = {'\t', 'e', '\0', 's', 't'};
-    stats_event_write_byte_array(event, message, 5);
-    stats_event_build(event);
+    AStatsEvent_writeByteArray(event, message, 5);
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
 
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
+    LogEvent logEvent(buf, size, /*uid=*/ 1000, /*pid=*/ 1001);
     EXPECT_TRUE(logEvent.isValid());
     EXPECT_EQ(100, logEvent.GetTagId());
+    EXPECT_EQ(1000, logEvent.GetUid());
+    EXPECT_EQ(1001, logEvent.GetPid());
 
     const vector<FieldValue>& values = logEvent.getValues();
     EXPECT_EQ(1, values.size());
@@ -176,77 +184,12 @@
     vector<uint8_t> expectedValue(message, message + 5);
     EXPECT_EQ(expectedValue, item.mValue.storage_value);
 
-    stats_event_release(event);
-}
-
-TEST(LogEventTest, TestKeyValuePairs) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
-
-    struct key_value_pair pairs[4];
-    pairs[0] = {.key = 0, .valueType = INT32_TYPE, .int32Value = 1};
-    pairs[1] = {.key = 1, .valueType = INT64_TYPE, .int64Value = 0x123456789};
-    pairs[2] = {.key = 2, .valueType = FLOAT_TYPE, .floatValue = 2.0};
-    string str = "test";
-    pairs[3] = {.key = 3, .valueType = STRING_TYPE, .stringValue = str.c_str()};
-
-    stats_event_write_key_value_pairs(event, pairs, 4);
-    stats_event_build(event);
-
-    size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
-
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
-    EXPECT_TRUE(logEvent.isValid());
-    EXPECT_EQ(100, logEvent.GetTagId());
-
-    const vector<FieldValue>& values = logEvent.getValues();
-    EXPECT_EQ(8, values.size()); // 2 FieldValues per key-value pair
-
-    // Check the keys first
-    for (int i = 0; i < values.size() / 2; i++) {
-        const FieldValue& item = values[2 * i];
-        int32_t depth1Pos = i + 1;
-        bool depth1Last = i == (values.size() / 2 - 1);
-        Field expectedField = getField(100, {1, depth1Pos, 1}, 2, {true, depth1Last, false});
-
-        EXPECT_EQ(expectedField, item.mField);
-        EXPECT_EQ(Type::INT, item.mValue.getType());
-        EXPECT_EQ(i, item.mValue.int_value);
-    }
-
-    // Check the values now
-    // Note: pos[2] = index of type in KeyValuePair in atoms.proto
-    const FieldValue& int32Item = values[1];
-    Field expectedField = getField(100, {1, 1, 2}, 2, {true, false, true});
-    EXPECT_EQ(expectedField, int32Item.mField);
-    EXPECT_EQ(Type::INT, int32Item.mValue.getType());
-    EXPECT_EQ(1, int32Item.mValue.int_value);
-
-    const FieldValue& int64Item = values[3];
-    expectedField = getField(100, {1, 2, 3}, 2, {true, false, true});
-    EXPECT_EQ(expectedField, int64Item.mField);
-    EXPECT_EQ(Type::LONG, int64Item.mValue.getType());
-    EXPECT_EQ(0x123456789, int64Item.mValue.long_value);
-
-    const FieldValue& floatItem = values[5];
-    expectedField = getField(100, {1, 3, 5}, 2, {true, false, true});
-    EXPECT_EQ(expectedField, floatItem.mField);
-    EXPECT_EQ(Type::FLOAT, floatItem.mValue.getType());
-    EXPECT_EQ(2.0, floatItem.mValue.float_value);
-
-    const FieldValue& stringItem = values[7];
-    expectedField = getField(100, {1, 4, 4}, 2, {true, true, true});
-    EXPECT_EQ(expectedField, stringItem.mField);
-    EXPECT_EQ(Type::STRING, stringItem.mValue.getType());
-    EXPECT_EQ(str, stringItem.mValue.str_value);
-
-    stats_event_release(event);
+    AStatsEvent_release(event);
 }
 
 TEST(LogEventTest, TestAttributionChain) {
-    struct stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, 100);
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, 100);
 
     string tag1 = "tag1";
     string tag2 = "tag2";
@@ -254,15 +197,17 @@
     uint32_t uids[] = {1001, 1002};
     const char* tags[] = {tag1.c_str(), tag2.c_str()};
 
-    stats_event_write_attribution_chain(event, uids, tags, 2);
-    stats_event_build(event);
+    AStatsEvent_writeAttributionChain(event, uids, tags, 2);
+    AStatsEvent_build(event);
 
     size_t size;
-    uint8_t* buf = stats_event_get_buffer(event, &size);
+    uint8_t* buf = AStatsEvent_getBuffer(event, &size);
 
-    LogEvent logEvent(buf, size, /*uid=*/ 1000);
+    LogEvent logEvent(buf, size, /*uid=*/ 1000, /*pid=*/ 1001);
     EXPECT_TRUE(logEvent.isValid());
     EXPECT_EQ(100, logEvent.GetTagId());
+    EXPECT_EQ(1000, logEvent.GetUid());
+    EXPECT_EQ(1001, logEvent.GetPid());
 
     const vector<FieldValue>& values = logEvent.getValues();
     EXPECT_EQ(4, values.size()); // 2 per attribution node
@@ -293,7 +238,7 @@
     EXPECT_EQ(Type::STRING, tag2Item.mValue.getType());
     EXPECT_EQ(tag2, tag2Item.mValue.str_value);
 
-    stats_event_release(event);
+    AStatsEvent_release(event);
 }
 
 #else // NEW_ENCODING_SCHEME
diff --git a/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp b/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
index c7ba9be..5e60aba 100644
--- a/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
+++ b/cmds/statsd/tests/e2e/GaugeMetric_e2e_pull_test.cpp
@@ -14,12 +14,12 @@
 
 #include <gtest/gtest.h>
 
+#include <vector>
+
 #include "src/StatsLogProcessor.h"
 #include "src/stats_log_util.h"
 #include "tests/statsd_test_util.h"
 
-#include <vector>
-
 namespace android {
 namespace os {
 namespace statsd {
@@ -29,12 +29,13 @@
 namespace {
 
 const int64_t metricId = 123456;
+const int32_t ATOM_TAG = android::util::SUBSYSTEM_SLEEP_STATE;
 
 StatsdConfig CreateStatsdConfig(const GaugeMetric::SamplingType sampling_type,
                                 bool useCondition = true) {
     StatsdConfig config;
     config.add_allowed_log_source("AID_ROOT"); // LogEvent defaults to UID of root.
-    auto atomMatcher = CreateSimpleAtomMatcher("TestMatcher", android::util::SUBSYSTEM_SLEEP_STATE);
+    auto atomMatcher = CreateSimpleAtomMatcher("TestMatcher", ATOM_TAG);
     *config.add_atom_matcher() = atomMatcher;
     *config.add_atom_matcher() = CreateScreenTurnedOnAtomMatcher();
     *config.add_atom_matcher() = CreateScreenTurnedOffAtomMatcher();
@@ -51,7 +52,7 @@
     gaugeMetric->set_sampling_type(sampling_type);
     gaugeMetric->mutable_gauge_fields_filter()->set_include_all(true);
     *gaugeMetric->mutable_dimensions_in_what() =
-            CreateDimensions(android::util::SUBSYSTEM_SLEEP_STATE, {1 /* subsystem name */});
+            CreateDimensions(ATOM_TAG, {1 /* subsystem name */});
     gaugeMetric->set_bucket(FIVE_MINUTES);
     gaugeMetric->set_max_pull_delay_sec(INT_MAX);
     config.set_hash_strings_in_metric_report(false);
@@ -69,8 +70,8 @@
         TimeUnitToBucketSizeInMillis(config.gauge_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(), ATOM_TAG);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -144,7 +145,7 @@
     EXPECT_GT((int)gaugeMetrics.data_size(), 1);
 
     auto data = gaugeMetrics.data(0);
-    EXPECT_EQ(android::util::SUBSYSTEM_SLEEP_STATE, data.dimensions_in_what().field());
+    EXPECT_EQ(ATOM_TAG, data.dimensions_in_what().field());
     EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size());
     EXPECT_EQ(1 /* subsystem name field */,
               data.dimensions_in_what().value_tuple().dimensions_value(0).field());
@@ -214,8 +215,8 @@
         TimeUnitToBucketSizeInMillis(config.gauge_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(), ATOM_TAG);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -267,7 +268,7 @@
     EXPECT_GT((int)gaugeMetrics.data_size(), 1);
 
     auto data = gaugeMetrics.data(0);
-    EXPECT_EQ(android::util::SUBSYSTEM_SLEEP_STATE, data.dimensions_in_what().field());
+    EXPECT_EQ(ATOM_TAG, data.dimensions_in_what().field());
     EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size());
     EXPECT_EQ(1 /* subsystem name field */,
               data.dimensions_in_what().value_tuple().dimensions_value(0).field());
@@ -315,8 +316,8 @@
         TimeUnitToBucketSizeInMillis(config.gauge_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback, ATOM_TAG);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -371,7 +372,7 @@
     EXPECT_GT((int)gaugeMetrics.data_size(), 1);
 
     auto data = gaugeMetrics.data(0);
-    EXPECT_EQ(android::util::SUBSYSTEM_SLEEP_STATE, data.dimensions_in_what().field());
+    EXPECT_EQ(ATOM_TAG, data.dimensions_in_what().field());
     EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size());
     EXPECT_EQ(1 /* subsystem name field */,
               data.dimensions_in_what().value_tuple().dimensions_value(0).field());
@@ -424,8 +425,8 @@
     event_activation->set_ttl_seconds(ttlNs / 1000000000);
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(), ATOM_TAG);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -493,7 +494,7 @@
     EXPECT_GT((int)gaugeMetrics.data_size(), 0);
 
     auto data = gaugeMetrics.data(0);
-    EXPECT_EQ(android::util::SUBSYSTEM_SLEEP_STATE, data.dimensions_in_what().field());
+    EXPECT_EQ(ATOM_TAG, data.dimensions_in_what().field());
     EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size());
     EXPECT_EQ(1 /* subsystem name field */,
               data.dimensions_in_what().value_tuple().dimensions_value(0).field());
@@ -542,8 +543,8 @@
         TimeUnitToBucketSizeInMillis(config.gauge_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(), ATOM_TAG);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -586,7 +587,7 @@
     EXPECT_GT((int)gaugeMetrics.data_size(), 0);
 
     auto data = gaugeMetrics.data(0);
-    EXPECT_EQ(android::util::SUBSYSTEM_SLEEP_STATE, data.dimensions_in_what().field());
+    EXPECT_EQ(ATOM_TAG, data.dimensions_in_what().field());
     EXPECT_EQ(1, data.dimensions_in_what().value_tuple().dimensions_value_size());
     EXPECT_EQ(1 /* subsystem name field */,
               data.dimensions_in_what().value_tuple().dimensions_value(0).field());
diff --git a/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp b/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp
index 16b51d9..9d58867 100644
--- a/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/PartialBucket_e2e_test.cpp
@@ -12,22 +12,24 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
+#include <android/os/BnPullAtomCallback.h>
+#include <android/os/IPullAtomResultReceiver.h>
+#include <binder/IPCThreadState.h>
 #include <gtest/gtest.h>
 
-#include <binder/IPCThreadState.h>
+#include <vector>
+
 #include "src/StatsLogProcessor.h"
 #include "src/StatsService.h"
 #include "src/stats_log_util.h"
 #include "tests/statsd_test_util.h"
 
-#include <vector>
-
 namespace android {
 namespace os {
 namespace statsd {
 
 #ifdef __ANDROID__
-
+namespace {
 const string kApp1 = "app1.sharing.1";
 const int kConfigKey = 789130123;  // Randomly chosen to avoid collisions with existing configs.
 const int kCallingUid = 0; // Randomly chosen
@@ -109,6 +111,7 @@
     gaugeMetric->set_min_bucket_size_nanos(minTime);
     return config;
 }
+}  // anonymous namespace
 
 TEST(PartialBucketE2eTest, TestCountMetricWithoutSplit) {
     StatsService service(nullptr, nullptr);
@@ -202,6 +205,9 @@
 
 TEST(PartialBucketE2eTest, TestValueMetricWithoutMinPartialBucket) {
     StatsService service(nullptr, nullptr);
+    service.mPullerManager->RegisterPullAtomCallback(
+            /*uid=*/0, android::util::SUBSYSTEM_SLEEP_STATE, NS_PER_SEC, NS_PER_SEC * 10, {},
+            new FakeSubsystemSleepCallback());
     // Partial buckets don't occur when app is first installed.
     service.mUidMap->updateApp(1, String16(kApp1.c_str()), 1, 1, String16("v1"), String16(""));
     SendConfig(service, MakeValueMetricConfig(0));
@@ -220,6 +226,9 @@
 
 TEST(PartialBucketE2eTest, TestValueMetricWithMinPartialBucket) {
     StatsService service(nullptr, nullptr);
+    service.mPullerManager->RegisterPullAtomCallback(
+            /*uid=*/0, android::util::SUBSYSTEM_SLEEP_STATE, NS_PER_SEC, NS_PER_SEC * 10, {},
+            new FakeSubsystemSleepCallback());
     // Partial buckets don't occur when app is first installed.
     service.mUidMap->updateApp(1, String16(kApp1.c_str()), 1, 1, String16("v1"), String16(""));
     SendConfig(service, MakeValueMetricConfig(60 * NS_PER_SEC /* One minute */));
diff --git a/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp b/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp
index e8d2ec5..a140af8 100644
--- a/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp
+++ b/cmds/statsd/tests/e2e/ValueMetric_pull_e2e_test.cpp
@@ -69,8 +69,9 @@
         TimeUnitToBucketSizeInMillis(config.value_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(),
+                                             android::util::SUBSYSTEM_SLEEP_STATE);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -173,8 +174,9 @@
         TimeUnitToBucketSizeInMillis(config.value_metric(0).bucket()) * 1000000;
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(),
+                                             android::util::SUBSYSTEM_SLEEP_STATE);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
@@ -285,8 +287,9 @@
     event_activation->set_ttl_seconds(ttlNs / 1000000000);
 
     ConfigKey cfgKey;
-    auto processor = CreateStatsLogProcessor(
-        baseTimeNs, configAddedTimeNs, config, cfgKey);
+    auto processor = CreateStatsLogProcessor(baseTimeNs, configAddedTimeNs, config, cfgKey,
+                                             new FakeSubsystemSleepCallback(),
+                                             android::util::SUBSYSTEM_SLEEP_STATE);
     EXPECT_EQ(processor->mMetricsManagers.size(), 1u);
     EXPECT_TRUE(processor->mMetricsManagers.begin()->second->isConfigValid());
     processor->mPullerManager->ForceClearPullerCache();
diff --git a/cmds/statsd/tests/external/GpuStatsPuller_test.cpp b/cmds/statsd/tests/external/GpuStatsPuller_test.cpp
deleted file mode 100644
index ae92705..0000000
--- a/cmds/statsd/tests/external/GpuStatsPuller_test.cpp
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * Copyright 2019 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.
- */
-
-#undef LOG_TAG
-#define LOG_TAG "GpuStatsPuller_test"
-
-#include <gmock/gmock.h>
-#include <gtest/gtest.h>
-
-#include <graphicsenv/GpuStatsInfo.h>
-#include <log/log.h>
-
-#include "src/external/GpuStatsPuller.h"
-#include "statslog.h"
-
-#ifdef __ANDROID__
-
-namespace android {
-namespace os {
-namespace statsd {
-
-// clang-format off
-static const std::string DRIVER_PACKAGE_NAME      = "TEST_DRIVER";
-static const std::string DRIVER_VERSION_NAME      = "TEST_DRIVER_VERSION";
-static const std::string APP_PACKAGE_NAME         = "TEST_APP";
-static const int64_t TIMESTAMP_WALLCLOCK          = 111;
-static const int64_t TIMESTAMP_ELAPSED            = 222;
-static const int64_t DRIVER_VERSION_CODE          = 333;
-static const int64_t DRIVER_BUILD_TIME            = 444;
-static const int64_t GL_LOADING_COUNT             = 3;
-static const int64_t GL_LOADING_FAILURE_COUNT     = 1;
-static const int64_t VK_LOADING_COUNT             = 4;
-static const int64_t VK_LOADING_FAILURE_COUNT     = 0;
-static const int64_t ANGLE_LOADING_COUNT          = 2;
-static const int64_t ANGLE_LOADING_FAILURE_COUNT  = 1;
-static const int64_t GL_DRIVER_LOADING_TIME_0     = 555;
-static const int64_t GL_DRIVER_LOADING_TIME_1     = 666;
-static const int64_t VK_DRIVER_LOADING_TIME_0     = 777;
-static const int64_t VK_DRIVER_LOADING_TIME_1     = 888;
-static const int64_t VK_DRIVER_LOADING_TIME_2     = 999;
-static const int64_t ANGLE_DRIVER_LOADING_TIME_0  = 1010;
-static const int64_t ANGLE_DRIVER_LOADING_TIME_1  = 1111;
-static const int32_t VULKAN_VERSION               = 1;
-static const int32_t CPU_VULKAN_VERSION           = 2;
-static const int32_t GLES_VERSION                 = 3;
-static const bool CPU_VULKAN_IN_USE               = true;
-static const bool FALSE_PREROTATION               = true;
-static const bool GLES_1_IN_USE                   = true;
-static const size_t NUMBER_OF_VALUES_GLOBAL       = 13;
-static const size_t NUMBER_OF_VALUES_APP          = 8;
-// clang-format on
-
-class MockGpuStatsPuller : public GpuStatsPuller {
-public:
-    MockGpuStatsPuller(const int tagId, vector<std::shared_ptr<LogEvent>>* data)
-        : GpuStatsPuller(tagId), mData(data){};
-
-private:
-    bool PullInternal(vector<std::shared_ptr<LogEvent>>* data) override {
-        *data = *mData;
-        return true;
-    }
-
-    vector<std::shared_ptr<LogEvent>>* mData;
-};
-
-class GpuStatsPuller_test : public ::testing::Test {
-public:
-    GpuStatsPuller_test() {
-        const ::testing::TestInfo* const test_info =
-                ::testing::UnitTest::GetInstance()->current_test_info();
-        ALOGD("**** Setting up for %s.%s\n", test_info->test_case_name(), test_info->name());
-    }
-
-    ~GpuStatsPuller_test() {
-        const ::testing::TestInfo* const test_info =
-                ::testing::UnitTest::GetInstance()->current_test_info();
-        ALOGD("**** Tearing down after %s.%s\n", test_info->test_case_name(), test_info->name());
-    }
-};
-
-TEST_F(GpuStatsPuller_test, PullGpuStatsGlobalInfo) {
-    vector<std::shared_ptr<LogEvent>> inData, outData;
-    std::shared_ptr<LogEvent> event = make_shared<LogEvent>(android::util::GPU_STATS_GLOBAL_INFO,
-                                                            TIMESTAMP_WALLCLOCK, TIMESTAMP_ELAPSED);
-    EXPECT_TRUE(event->write(DRIVER_PACKAGE_NAME));
-    EXPECT_TRUE(event->write(DRIVER_VERSION_NAME));
-    EXPECT_TRUE(event->write(DRIVER_VERSION_CODE));
-    EXPECT_TRUE(event->write(DRIVER_BUILD_TIME));
-    EXPECT_TRUE(event->write(GL_LOADING_COUNT));
-    EXPECT_TRUE(event->write(GL_LOADING_FAILURE_COUNT));
-    EXPECT_TRUE(event->write(VK_LOADING_COUNT));
-    EXPECT_TRUE(event->write(VK_LOADING_FAILURE_COUNT));
-    EXPECT_TRUE(event->write(VULKAN_VERSION));
-    EXPECT_TRUE(event->write(CPU_VULKAN_VERSION));
-    EXPECT_TRUE(event->write(GLES_VERSION));
-    EXPECT_TRUE(event->write(ANGLE_LOADING_COUNT));
-    EXPECT_TRUE(event->write(ANGLE_LOADING_FAILURE_COUNT));
-    event->init();
-    inData.emplace_back(event);
-    MockGpuStatsPuller mockPuller(android::util::GPU_STATS_GLOBAL_INFO, &inData);
-    mockPuller.ForceClearCache();
-    mockPuller.Pull(&outData);
-
-    ASSERT_EQ(1, outData.size());
-    EXPECT_EQ(android::util::GPU_STATS_GLOBAL_INFO, outData[0]->GetTagId());
-    ASSERT_EQ(NUMBER_OF_VALUES_GLOBAL, outData[0]->size());
-    EXPECT_EQ(DRIVER_PACKAGE_NAME, outData[0]->getValues()[0].mValue.str_value);
-    EXPECT_EQ(DRIVER_VERSION_NAME, outData[0]->getValues()[1].mValue.str_value);
-    EXPECT_EQ(DRIVER_VERSION_CODE, outData[0]->getValues()[2].mValue.long_value);
-    EXPECT_EQ(DRIVER_BUILD_TIME, outData[0]->getValues()[3].mValue.long_value);
-    EXPECT_EQ(GL_LOADING_COUNT, outData[0]->getValues()[4].mValue.long_value);
-    EXPECT_EQ(GL_LOADING_FAILURE_COUNT, outData[0]->getValues()[5].mValue.long_value);
-    EXPECT_EQ(VK_LOADING_COUNT, outData[0]->getValues()[6].mValue.long_value);
-    EXPECT_EQ(VK_LOADING_FAILURE_COUNT, outData[0]->getValues()[7].mValue.long_value);
-    EXPECT_EQ(VULKAN_VERSION, outData[0]->getValues()[8].mValue.int_value);
-    EXPECT_EQ(CPU_VULKAN_VERSION, outData[0]->getValues()[9].mValue.int_value);
-    EXPECT_EQ(GLES_VERSION, outData[0]->getValues()[10].mValue.int_value);
-    EXPECT_EQ(ANGLE_LOADING_COUNT, outData[0]->getValues()[11].mValue.long_value);
-    EXPECT_EQ(ANGLE_LOADING_FAILURE_COUNT, outData[0]->getValues()[12].mValue.long_value);
-}
-
-TEST_F(GpuStatsPuller_test, PullGpuStatsAppInfo) {
-    vector<std::shared_ptr<LogEvent>> inData, outData;
-    std::shared_ptr<LogEvent> event = make_shared<LogEvent>(android::util::GPU_STATS_APP_INFO,
-                                                            TIMESTAMP_WALLCLOCK, TIMESTAMP_ELAPSED);
-    EXPECT_TRUE(event->write(APP_PACKAGE_NAME));
-    EXPECT_TRUE(event->write(DRIVER_VERSION_CODE));
-    std::vector<int64_t> glDriverLoadingTime;
-    glDriverLoadingTime.emplace_back(GL_DRIVER_LOADING_TIME_0);
-    glDriverLoadingTime.emplace_back(GL_DRIVER_LOADING_TIME_1);
-    std::vector<int64_t> vkDriverLoadingTime;
-    vkDriverLoadingTime.emplace_back(VK_DRIVER_LOADING_TIME_0);
-    vkDriverLoadingTime.emplace_back(VK_DRIVER_LOADING_TIME_1);
-    vkDriverLoadingTime.emplace_back(VK_DRIVER_LOADING_TIME_2);
-    std::vector<int64_t> angleDriverLoadingTime;
-    angleDriverLoadingTime.emplace_back(ANGLE_DRIVER_LOADING_TIME_0);
-    angleDriverLoadingTime.emplace_back(ANGLE_DRIVER_LOADING_TIME_1);
-    EXPECT_TRUE(event->write(int64VectorToProtoByteString(glDriverLoadingTime)));
-    EXPECT_TRUE(event->write(int64VectorToProtoByteString(vkDriverLoadingTime)));
-    EXPECT_TRUE(event->write(int64VectorToProtoByteString(angleDriverLoadingTime)));
-    EXPECT_TRUE(event->write(CPU_VULKAN_IN_USE));
-    EXPECT_TRUE(event->write(FALSE_PREROTATION));
-    EXPECT_TRUE(event->write(GLES_1_IN_USE));
-    event->init();
-    inData.emplace_back(event);
-    MockGpuStatsPuller mockPuller(android::util::GPU_STATS_APP_INFO, &inData);
-    mockPuller.ForceClearCache();
-    mockPuller.Pull(&outData);
-
-    ASSERT_EQ(1, outData.size());
-    EXPECT_EQ(android::util::GPU_STATS_APP_INFO, outData[0]->GetTagId());
-    ASSERT_EQ(NUMBER_OF_VALUES_APP, outData[0]->size());
-    EXPECT_EQ(APP_PACKAGE_NAME, outData[0]->getValues()[0].mValue.str_value);
-    EXPECT_EQ(DRIVER_VERSION_CODE, outData[0]->getValues()[1].mValue.long_value);
-    EXPECT_EQ(int64VectorToProtoByteString(glDriverLoadingTime),
-              outData[0]->getValues()[2].mValue.str_value);
-    EXPECT_EQ(int64VectorToProtoByteString(vkDriverLoadingTime),
-              outData[0]->getValues()[3].mValue.str_value);
-    EXPECT_EQ(int64VectorToProtoByteString(angleDriverLoadingTime),
-              outData[0]->getValues()[4].mValue.str_value);
-    EXPECT_EQ(CPU_VULKAN_IN_USE, outData[0]->getValues()[5].mValue.int_value);
-    EXPECT_EQ(FALSE_PREROTATION, outData[0]->getValues()[6].mValue.int_value);
-    EXPECT_EQ(GLES_1_IN_USE, outData[0]->getValues()[7].mValue.int_value);
-}
-
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
-#else
-GTEST_LOG_(INFO) << "This test does nothing.\n";
-#endif
diff --git a/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp b/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp
index 2576cf5..a011692e 100644
--- a/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp
+++ b/cmds/statsd/tests/external/StatsCallbackPuller_test.cpp
@@ -50,11 +50,11 @@
 int64_t pullCoolDownNs;
 std::thread pullThread;
 
-stats_event* createSimpleEvent(int64_t value) {
-    stats_event* event = stats_event_obtain();
-    stats_event_set_atom_id(event, pullTagId);
-    stats_event_write_int64(event, value);
-    stats_event_build(event);
+AStatsEvent* createSimpleEvent(int64_t value) {
+    AStatsEvent* event = AStatsEvent_obtain();
+    AStatsEvent_setAtomId(event, pullTagId);
+    AStatsEvent_writeInt64(event, value);
+    AStatsEvent_build(event);
     return event;
 }
 
@@ -62,16 +62,16 @@
     // Convert stats_events into StatsEventParcels.
     std::vector<android::util::StatsEventParcel> parcels;
     for (int i = 0; i < values.size(); i++) {
-        stats_event* event = createSimpleEvent(values[i]);
+        AStatsEvent* event = createSimpleEvent(values[i]);
         size_t size;
-        uint8_t* buffer = stats_event_get_buffer(event, &size);
+        uint8_t* buffer = AStatsEvent_getBuffer(event, &size);
 
         android::util::StatsEventParcel p;
         // vector.assign() creates a copy, but this is inevitable unless
         // stats_event.h/c uses a vector as opposed to a buffer.
         p.buffer.assign(buffer, buffer + size);
         parcels.push_back(std::move(p));
-        stats_event_release(event);
+        AStatsEvent_release(event);
     }
 
     sleep_for(std::chrono::nanoseconds(pullDelayNs));
diff --git a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
index 92e8241..f6245ac 100644
--- a/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
+++ b/cmds/statsd/tests/metrics/ValueMetricProducer_test.cpp
@@ -3333,7 +3333,7 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
+    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 40),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
@@ -3393,7 +3393,7 @@
 
     EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket3StartTimeNs),
+    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs + 100),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
@@ -3470,7 +3470,7 @@
 
     EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket3StartTimeNs),
+    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs + 100),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
@@ -3519,7 +3519,8 @@
     // Check dump report.
     ProtoOutputStream output;
     std::set<string> strSet;
-    valueProducer->onDumpReport(bucketStartTimeNs + 100, true /* include recent buckets */, true,
+    int64_t dumpReportTimeNs = bucketStartTimeNs + 10000;
+    valueProducer->onDumpReport(dumpReportTimeNs, true /* include recent buckets */, true,
                                 NO_TIME_CONSTRAINTS /* dumpLatency */, &strSet, &output);
 
     StatsLogReport report = outputStreamToProto(&output);
@@ -3529,13 +3530,13 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
     auto dropEvent = report.value_metrics().skipped(0).drop_event(0);
     EXPECT_EQ(BucketDropReason::CONDITION_UNKNOWN, dropEvent.drop_reason());
-    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 100), dropEvent.drop_time_millis());
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs), dropEvent.drop_time_millis());
 }
 
 /*
@@ -3569,7 +3570,8 @@
     // Check dump report.
     ProtoOutputStream output;
     std::set<string> strSet;
-    valueProducer->onDumpReport(bucketStartTimeNs + 100, true /* include recent buckets */, true,
+    int64_t dumpReportTimeNs = bucketStartTimeNs + 10000;
+    valueProducer->onDumpReport(dumpReportTimeNs, true /* include recent buckets */, true,
                                 NO_TIME_CONSTRAINTS /* dumpLatency */, &strSet, &output);
 
     StatsLogReport report = outputStreamToProto(&output);
@@ -3579,13 +3581,13 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
     auto dropEvent = report.value_metrics().skipped(0).drop_event(0);
     EXPECT_EQ(BucketDropReason::PULL_FAILED, dropEvent.drop_reason());
-    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 100), dropEvent.drop_time_millis());
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs), dropEvent.drop_time_millis());
 }
 
 /*
@@ -3691,8 +3693,9 @@
     // Check dump report.
     ProtoOutputStream output;
     std::set<string> strSet;
-    valueProducer->onDumpReport(bucketStartTimeNs + 9000000, true /* include recent buckets */,
-                                true, NO_TIME_CONSTRAINTS /* dumpLatency */, &strSet, &output);
+    int64_t dumpReportTimeNs = bucketStartTimeNs + 9000000;
+    valueProducer->onDumpReport(dumpReportTimeNs, true /* include recent buckets */, true,
+                                NO_TIME_CONSTRAINTS /* dumpLatency */, &strSet, &output);
 
     StatsLogReport report = outputStreamToProto(&output);
     EXPECT_TRUE(report.has_value_metrics());
@@ -3701,13 +3704,13 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000),
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(1, report.value_metrics().skipped(0).drop_event_size());
 
     auto dropEvent = report.value_metrics().skipped(0).drop_event(0);
     EXPECT_EQ(BucketDropReason::BUCKET_TOO_SMALL, dropEvent.drop_reason());
-    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 9000000), dropEvent.drop_time_millis());
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs), dropEvent.drop_time_millis());
 }
 
 /*
@@ -3739,7 +3742,8 @@
     // Check dump report.
     ProtoOutputStream output;
     std::set<string> strSet;
-    valueProducer->onDumpReport(bucketStartTimeNs + 1000, true /* include recent buckets */, true,
+    int64_t dumpReportTimeNs = bucketStartTimeNs + 1000;
+    valueProducer->onDumpReport(dumpReportTimeNs, true /* include recent buckets */, true,
                                 FAST /* dumpLatency */, &strSet, &output);
 
     StatsLogReport report = outputStreamToProto(&output);
@@ -3749,7 +3753,7 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(2, report.value_metrics().skipped(0).drop_event_size());
 
@@ -3759,7 +3763,7 @@
 
     dropEvent = report.value_metrics().skipped(0).drop_event(1);
     EXPECT_EQ(BucketDropReason::DUMP_REPORT_REQUESTED, dropEvent.drop_reason());
-    EXPECT_EQ(NanoToMillis(bucketStartTimeNs + 1000), dropEvent.drop_time_millis());
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs), dropEvent.drop_time_millis());
 }
 
 /*
@@ -3826,6 +3830,7 @@
     // Check dump report.
     ProtoOutputStream output;
     std::set<string> strSet;
+    int64_t dumpReportTimeNs = bucketStartTimeNs + 1000;
     // Because we already have 10 dump events in the current bucket,
     // this case should not be added to the list of dump events.
     valueProducer->onDumpReport(bucketStartTimeNs + 1000, true /* include recent buckets */, true,
@@ -3838,7 +3843,7 @@
 
     EXPECT_EQ(NanoToMillis(bucketStartTimeNs),
               report.value_metrics().skipped(0).start_bucket_elapsed_millis());
-    EXPECT_EQ(NanoToMillis(bucket2StartTimeNs),
+    EXPECT_EQ(NanoToMillis(dumpReportTimeNs),
               report.value_metrics().skipped(0).end_bucket_elapsed_millis());
     EXPECT_EQ(10, report.value_metrics().skipped(0).drop_event_size());
 
diff --git a/cmds/statsd/tests/state/StateTracker_test.cpp b/cmds/statsd/tests/state/StateTracker_test.cpp
index 84aaa54..b0acd5a 100644
--- a/cmds/statsd/tests/state/StateTracker_test.cpp
+++ b/cmds/statsd/tests/state/StateTracker_test.cpp
@@ -127,6 +127,23 @@
     event->init();
     return event;
 }
+
+std::shared_ptr<LogEvent> buildBleScanEvent(int uid, bool acquire, bool reset) {
+    std::vector<AttributionNodeInternal> chain;
+    chain.push_back(AttributionNodeInternal());
+    AttributionNodeInternal& attr = chain.back();
+    attr.set_uid(uid);
+
+    std::shared_ptr<LogEvent> event =
+            std::make_shared<LogEvent>(android::util::BLE_SCAN_STATE_CHANGED, 1000);
+    event->write(chain);
+    event->write(reset ? 2 : acquire ? 1 : 0);  // PARTIAL_WAKE_LOCK
+    event->write(0);                            // filtered
+    event->write(0);                            // first match
+    event->write(0);                            // opportunistic
+    event->init();
+    return event;
+}
 // END: build event functions.
 
 // START: get primary key functions
@@ -277,6 +294,80 @@
 }
 
 /**
+ * Test a binary state atom with nested counting.
+ *
+ * To go from an "ON" state to an "OFF" state with nested counting, we must see
+ * an equal number of "OFF" events as "ON" events.
+ * For example, ACQUIRE, ACQUIRE, RELEASE will still be in the ACQUIRE state.
+ * ACQUIRE, ACQUIRE, RELEASE, RELEASE will be in the RELEASE state.
+ */
+TEST(StateTrackerTest, TestStateChangeNested) {
+    sp<TestStateListener> listener = new TestStateListener();
+    StateManager mgr;
+    mgr.registerListener(android::util::WAKELOCK_STATE_CHANGED, listener);
+
+    std::shared_ptr<LogEvent> event1 =
+            buildPartialWakelockEvent(1000 /* uid */, "tag", true /*acquire*/);
+    mgr.onLogEvent(*event1);
+    EXPECT_EQ(1, listener->updates.size());
+    EXPECT_EQ(1000, listener->updates[0].mKey.getValues()[0].mValue.int_value);
+    EXPECT_EQ(1, listener->updates[0].mState);
+    listener->updates.clear();
+
+    std::shared_ptr<LogEvent> event2 =
+            buildPartialWakelockEvent(1000 /* uid */, "tag", true /*acquire*/);
+    mgr.onLogEvent(*event2);
+    EXPECT_EQ(0, listener->updates.size());
+
+    std::shared_ptr<LogEvent> event3 =
+            buildPartialWakelockEvent(1000 /* uid */, "tag", false /*release*/);
+    mgr.onLogEvent(*event3);
+    EXPECT_EQ(0, listener->updates.size());
+
+    std::shared_ptr<LogEvent> event4 =
+            buildPartialWakelockEvent(1000 /* uid */, "tag", false /*release*/);
+    mgr.onLogEvent(*event4);
+    EXPECT_EQ(1, listener->updates.size());
+    EXPECT_EQ(1000, listener->updates[0].mKey.getValues()[0].mValue.int_value);
+    EXPECT_EQ(0, listener->updates[0].mState);
+}
+
+/**
+ * Test a state atom with a reset state.
+ *
+ * If the reset state value is seen, every state in the map is set to the default
+ * state and every listener is notified.
+ */
+TEST(StateTrackerTest, TestStateChangeReset) {
+    sp<TestStateListener> listener = new TestStateListener();
+    StateManager mgr;
+    mgr.registerListener(android::util::BLE_SCAN_STATE_CHANGED, listener);
+
+    std::shared_ptr<LogEvent> event1 =
+            buildBleScanEvent(1000 /* uid */, true /*acquire*/, false /*reset*/);
+    mgr.onLogEvent(*event1);
+    EXPECT_EQ(1, listener->updates.size());
+    EXPECT_EQ(1000, listener->updates[0].mKey.getValues()[0].mValue.int_value);
+    EXPECT_EQ(BleScanStateChanged::ON, listener->updates[0].mState);
+    listener->updates.clear();
+
+    std::shared_ptr<LogEvent> event2 =
+            buildBleScanEvent(2000 /* uid */, true /*acquire*/, false /*reset*/);
+    mgr.onLogEvent(*event2);
+    EXPECT_EQ(1, listener->updates.size());
+    EXPECT_EQ(2000, listener->updates[0].mKey.getValues()[0].mValue.int_value);
+    EXPECT_EQ(BleScanStateChanged::ON, listener->updates[0].mState);
+    listener->updates.clear();
+
+    std::shared_ptr<LogEvent> event3 =
+            buildBleScanEvent(2000 /* uid */, false /*acquire*/, true /*reset*/);
+    mgr.onLogEvent(*event3);
+    EXPECT_EQ(2, listener->updates.size());
+    EXPECT_EQ(BleScanStateChanged::OFF, listener->updates[0].mState);
+    EXPECT_EQ(BleScanStateChanged::OFF, listener->updates[1].mState);
+}
+
+/**
  * Test StateManager's onLogEvent and StateListener's onStateChanged correctly
  * updates listener for states without primary keys.
  */
@@ -334,7 +425,7 @@
 
     // Log event.
     std::shared_ptr<LogEvent> event =
-            buildPartialWakelockEvent(1001 /* uid */, "tag1", false /* acquire */);
+            buildPartialWakelockEvent(1001 /* uid */, "tag1", true /* acquire */);
     mgr.onLogEvent(*event);
 
     EXPECT_EQ(1, mgr.getStateTrackersCount());
@@ -346,23 +437,25 @@
     EXPECT_EQ(1001, listener1->updates[0].mKey.getValues()[0].mValue.int_value);
     EXPECT_EQ(1, listener1->updates[0].mKey.getValues()[1].mValue.int_value);
     EXPECT_EQ("tag1", listener1->updates[0].mKey.getValues()[2].mValue.str_value);
-    EXPECT_EQ(WakelockStateChanged::RELEASE, listener1->updates[0].mState);
+    EXPECT_EQ(WakelockStateChanged::ACQUIRE, listener1->updates[0].mState);
 
     // Check StateTracker was updated by querying for state.
     HashableDimensionKey queryKey;
     getPartialWakelockKey(1001 /* uid */, "tag1", &queryKey);
-    EXPECT_EQ(WakelockStateChanged::RELEASE,
+    EXPECT_EQ(WakelockStateChanged::ACQUIRE,
               getStateInt(mgr, android::util::WAKELOCK_STATE_CHANGED, queryKey));
 
     // No state stored for this query key.
     HashableDimensionKey queryKey2;
     getPartialWakelockKey(1002 /* uid */, "tag1", &queryKey2);
-    EXPECT_EQ(-1, getStateInt(mgr, android::util::WAKELOCK_STATE_CHANGED, queryKey2));
+    EXPECT_EQ(WakelockStateChanged::RELEASE,
+              getStateInt(mgr, android::util::WAKELOCK_STATE_CHANGED, queryKey2));
 
     // Partial query fails.
     HashableDimensionKey queryKey3;
     getPartialWakelockKey(1001 /* uid */, &queryKey3);
-    EXPECT_EQ(-1, getStateInt(mgr, android::util::WAKELOCK_STATE_CHANGED, queryKey3));
+    EXPECT_EQ(WakelockStateChanged::RELEASE,
+              getStateInt(mgr, android::util::WAKELOCK_STATE_CHANGED, queryKey3));
 }
 
 /**
diff --git a/cmds/statsd/tests/statsd_test_util.cpp b/cmds/statsd/tests/statsd_test_util.cpp
index e0aecce..db09ee9 100644
--- a/cmds/statsd/tests/statsd_test_util.cpp
+++ b/cmds/statsd/tests/statsd_test_util.cpp
@@ -580,9 +580,15 @@
 }
 
 sp<StatsLogProcessor> CreateStatsLogProcessor(const int64_t timeBaseNs, const int64_t currentTimeNs,
-                                              const StatsdConfig& config, const ConfigKey& key) {
+                                              const StatsdConfig& config, const ConfigKey& key,
+                                              const sp<IPullAtomCallback>& puller,
+                                              const int32_t atomTag) {
     sp<UidMap> uidMap = new UidMap();
     sp<StatsPullerManager> pullerManager = new StatsPullerManager();
+    if (puller != nullptr) {
+        pullerManager->RegisterPullAtomCallback(/*uid=*/0, atomTag, NS_PER_SEC, NS_PER_SEC * 10, {},
+                                                puller);
+    }
     sp<AlarmMonitor> anomalyAlarmMonitor =
         new AlarmMonitor(1,  [](const sp<IStatsCompanionService>&, int64_t){},
                 [](const sp<IStatsCompanionService>&){});
@@ -942,6 +948,34 @@
     }
 }
 
+binder::Status FakeSubsystemSleepCallback::onPullAtom(
+        int atomTag, const sp<IPullAtomResultReceiver>& resultReceiver) {
+    // Convert stats_events into StatsEventParcels.
+    std::vector<android::util::StatsEventParcel> parcels;
+    for (int i = 1; i < 3; i++) {
+        AStatsEvent* event = AStatsEvent_obtain();
+        AStatsEvent_setAtomId(event, atomTag);
+        std::string subsystemName = "subsystem_name_";
+        subsystemName = subsystemName + std::to_string(i);
+        AStatsEvent_writeString(event, subsystemName.c_str());
+        AStatsEvent_writeString(event, "subsystem_subname foo");
+        AStatsEvent_writeInt64(event, /*count= */ i);
+        AStatsEvent_writeInt64(event, /*time_millis= */ i * 100);
+        AStatsEvent_build(event);
+        size_t size;
+        uint8_t* buffer = AStatsEvent_getBuffer(event, &size);
+
+        android::util::StatsEventParcel p;
+        // vector.assign() creates a copy, but this is inevitable unless
+        // stats_event.h/c uses a vector as opposed to a buffer.
+        p.buffer.assign(buffer, buffer + size);
+        parcels.push_back(std::move(p));
+        AStatsEvent_write(event);
+    }
+    resultReceiver->pullFinished(atomTag, /*success=*/true, parcels);
+    return binder::Status::ok();
+}
+
 }  // namespace statsd
 }  // namespace os
 }  // namespace android
diff --git a/cmds/statsd/tests/statsd_test_util.h b/cmds/statsd/tests/statsd_test_util.h
index 9bdfeeb..576a491 100644
--- a/cmds/statsd/tests/statsd_test_util.h
+++ b/cmds/statsd/tests/statsd_test_util.h
@@ -14,12 +14,16 @@
 
 #pragma once
 
+#include <android/os/BnPullAtomCallback.h>
+#include <android/os/IPullAtomCallback.h>
+#include <android/os/IPullAtomResultReceiver.h>
 #include <gtest/gtest.h>
+
 #include "frameworks/base/cmds/statsd/src/stats_log.pb.h"
 #include "frameworks/base/cmds/statsd/src/statsd_config.pb.h"
 #include "src/StatsLogProcessor.h"
-#include "src/logd/LogEvent.h"
 #include "src/hash.h"
+#include "src/logd/LogEvent.h"
 #include "src/stats_log_util.h"
 #include "statslog.h"
 
@@ -224,9 +228,10 @@
 AttributionNodeInternal CreateAttribution(const int& uid, const string& tag);
 
 // Create a statsd log event processor upon the start time in seconds, config and key.
-sp<StatsLogProcessor> CreateStatsLogProcessor(const int64_t timeBaseNs,
-                                              const int64_t currentTimeNs,
-                                              const StatsdConfig& config, const ConfigKey& key);
+sp<StatsLogProcessor> CreateStatsLogProcessor(const int64_t timeBaseNs, const int64_t currentTimeNs,
+                                              const StatsdConfig& config, const ConfigKey& key,
+                                              const sp<IPullAtomCallback>& puller = nullptr,
+                                              const int32_t atomTag = 0 /*for puller only*/);
 
 // Util function to sort the log events by timestamp.
 void sortLogEventsByTimestamp(std::vector<std::unique_ptr<LogEvent>> *events);
@@ -278,6 +283,12 @@
                            const google::protobuf::RepeatedPtrField<DimensionsValue>& leafValues,
                            DimensionsValue* dimension);
 
+class FakeSubsystemSleepCallback : public BnPullAtomCallback {
+public:
+    binder::Status onPullAtom(int atomTag,
+                              const sp<IPullAtomResultReceiver>& resultReceiver) override;
+};
+
 template <typename T>
 void backfillDimensionPath(const DimensionsValue& whatPath,
                            const DimensionsValue& conditionPath,
diff --git a/cmds/statsd/tests/storage/StorageManager_test.cpp b/cmds/statsd/tests/storage/StorageManager_test.cpp
index b91e5a0..27a86e42 100644
--- a/cmds/statsd/tests/storage/StorageManager_test.cpp
+++ b/cmds/statsd/tests/storage/StorageManager_test.cpp
@@ -40,40 +40,12 @@
 
     bool result;
 
-    result = StorageManager::writeTrainInfo(trainInfo.trainVersionCode, trainInfo.trainName,
-                                            trainInfo.status, trainInfo.experimentIds);
+    result = StorageManager::writeTrainInfo(trainInfo);
 
     EXPECT_TRUE(result);
 
     InstallTrainInfo trainInfoResult;
-    result = StorageManager::readTrainInfo(trainInfoResult);
-    EXPECT_TRUE(result);
-
-    EXPECT_EQ(trainInfo.trainVersionCode, trainInfoResult.trainVersionCode);
-    EXPECT_EQ(trainInfo.trainName.size(), trainInfoResult.trainName.size());
-    EXPECT_EQ(trainInfo.trainName, trainInfoResult.trainName);
-    EXPECT_EQ(trainInfo.status, trainInfoResult.status);
-    EXPECT_EQ(trainInfo.experimentIds.size(), trainInfoResult.experimentIds.size());
-    EXPECT_EQ(trainInfo.experimentIds, trainInfoResult.experimentIds);
-}
-
-TEST(StorageManagerTest, TrainInfoReadWriteEmptyTrainNameTest) {
-    InstallTrainInfo trainInfo;
-    trainInfo.trainVersionCode = 12345;
-    trainInfo.trainName = "";
-    trainInfo.status = 1;
-    const char* expIds = "test_ids";
-    trainInfo.experimentIds.assign(expIds, expIds + strlen(expIds));
-
-    bool result;
-
-    result = StorageManager::writeTrainInfo(trainInfo.trainVersionCode, trainInfo.trainName,
-                                            trainInfo.status, trainInfo.experimentIds);
-
-    EXPECT_TRUE(result);
-
-    InstallTrainInfo trainInfoResult;
-    result = StorageManager::readTrainInfo(trainInfoResult);
+    result = StorageManager::readTrainInfo(trainInfo.trainName, trainInfoResult);
     EXPECT_TRUE(result);
 
     EXPECT_EQ(trainInfo.trainVersionCode, trainInfoResult.trainVersionCode);
@@ -94,13 +66,12 @@
 
     bool result;
 
-    result = StorageManager::writeTrainInfo(trainInfo.trainVersionCode, trainInfo.trainName,
-                                            trainInfo.status, trainInfo.experimentIds);
+    result = StorageManager::writeTrainInfo(trainInfo);
 
     EXPECT_TRUE(result);
 
     InstallTrainInfo trainInfoResult;
-    result = StorageManager::readTrainInfo(trainInfoResult);
+    result = StorageManager::readTrainInfo(trainInfo.trainName, trainInfoResult);
     EXPECT_TRUE(result);
 
     EXPECT_EQ(trainInfo.trainVersionCode, trainInfoResult.trainVersionCode);
diff --git a/config/boot-image-profile.txt b/config/boot-image-profile.txt
index e649c30..9f885aa 100644
--- a/config/boot-image-profile.txt
+++ b/config/boot-image-profile.txt
@@ -13,20 +13,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 #
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo$1;-><init>()V
 HSPLandroid/accessibilityservice/AccessibilityServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accessibilityservice/AccessibilityServiceInfo;
 HSPLandroid/accessibilityservice/AccessibilityServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;-><init>(Landroid/content/pm/ResolveInfo;Landroid/content/Context;)V
-HPLandroid/accessibilityservice/AccessibilityServiceInfo;->equals(Ljava/lang/Object;)Z
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getCapabilities()I
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getComponentName()Landroid/content/ComponentName;
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getId()Ljava/lang/String;
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->getResolveInfo()Landroid/content/pm/ResolveInfo;
 HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->initFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->isDirectBootAware()Z
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->loadSummary(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
-HSPLandroid/accessibilityservice/AccessibilityServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/accounts/Account$1;-><init>()V
 HSPLandroid/accounts/Account$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/Account;
 HSPLandroid/accounts/Account$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/accounts/Account$1;->newArray(I)[Landroid/accounts/Account;
@@ -35,23 +24,19 @@
 HSPLandroid/accounts/Account;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/accounts/Account;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/accounts/Account;->equals(Ljava/lang/Object;)Z
-HPLandroid/accounts/Account;->getAccessId()Ljava/lang/String;
 HSPLandroid/accounts/Account;->hashCode()I
-HPLandroid/accounts/Account;->toSafeName(Ljava/lang/String;C)Ljava/lang/String;
-HPLandroid/accounts/Account;->toSafeString()Ljava/lang/String;
 HSPLandroid/accounts/Account;->toString()Ljava/lang/String;
 HSPLandroid/accounts/Account;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/accounts/AccountAndUser;-><init>(Landroid/accounts/Account;I)V
-HSPLandroid/accounts/AccountAndUser;->equals(Ljava/lang/Object;)Z
-HSPLandroid/accounts/AccountAndUser;->hashCode()I
-HPLandroid/accounts/AccountAndUser;->toString()Ljava/lang/String;
-HSPLandroid/accounts/AccountManager$10;->doWork()V
-HSPLandroid/accounts/AccountManager$2;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Boolean;
-HSPLandroid/accounts/AccountManager$2;->bundleToResult(Landroid/os/Bundle;)Ljava/lang/Object;
-HSPLandroid/accounts/AccountManager$2;->doWork()V
+HSPLandroid/accounts/AccountManager$16;-><init>(Landroid/accounts/AccountManager;Landroid/accounts/OnAccountsUpdateListener;[Landroid/accounts/Account;)V
+HSPLandroid/accounts/AccountManager$16;->run()V
+HSPLandroid/accounts/AccountManager$18;-><init>(Landroid/accounts/AccountManager;)V
+HSPLandroid/accounts/AccountManager$8;-><init>(Landroid/accounts/AccountManager;Landroid/app/Activity;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V
+HSPLandroid/accounts/AccountManager$8;->doWork()V
 HSPLandroid/accounts/AccountManager$AmsTask$1;-><init>(Landroid/accounts/AccountManager;)V
+HSPLandroid/accounts/AccountManager$AmsTask$Response;-><init>(Landroid/accounts/AccountManager$AmsTask;)V
 HSPLandroid/accounts/AccountManager$AmsTask$Response;-><init>(Landroid/accounts/AccountManager$AmsTask;Landroid/accounts/AccountManager$1;)V
 HSPLandroid/accounts/AccountManager$AmsTask$Response;->onResult(Landroid/os/Bundle;)V
+HSPLandroid/accounts/AccountManager$AmsTask;-><init>(Landroid/accounts/AccountManager;Landroid/app/Activity;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V
 HSPLandroid/accounts/AccountManager$AmsTask;->done()V
 HSPLandroid/accounts/AccountManager$AmsTask;->getResult()Landroid/os/Bundle;
 HSPLandroid/accounts/AccountManager$AmsTask;->getResult()Ljava/lang/Object;
@@ -59,13 +44,14 @@
 HSPLandroid/accounts/AccountManager$AmsTask;->set(Landroid/os/Bundle;)V
 HSPLandroid/accounts/AccountManager$AmsTask;->start()Landroid/accounts/AccountManagerFuture;
 HSPLandroid/accounts/AccountManager$BaseFutureTask$Response;->onResult(Landroid/os/Bundle;)V
-HSPLandroid/accounts/AccountManager$BaseFutureTask;->postRunnableToHandler(Ljava/lang/Runnable;)V
 HSPLandroid/accounts/AccountManager$BaseFutureTask;->startTask()V
-HSPLandroid/accounts/AccountManager$Future2Task$1;->run()V
 HSPLandroid/accounts/AccountManager$Future2Task;->done()V
-HSPLandroid/accounts/AccountManager$Future2Task;->getResult()Ljava/lang/Object;
 HSPLandroid/accounts/AccountManager$Future2Task;->internalGetResult(Ljava/lang/Long;Ljava/util/concurrent/TimeUnit;)Ljava/lang/Object;
 HSPLandroid/accounts/AccountManager;-><init>(Landroid/content/Context;Landroid/accounts/IAccountManager;)V
+HSPLandroid/accounts/AccountManager;->access$000(Landroid/accounts/AccountManager;)Landroid/accounts/IAccountManager;
+HSPLandroid/accounts/AccountManager;->access$200(Landroid/accounts/AccountManager;)Ljava/util/HashMap;
+HSPLandroid/accounts/AccountManager;->access$300(Landroid/accounts/AccountManager;)Ljava/util/HashMap;
+HSPLandroid/accounts/AccountManager;->access$500(Landroid/accounts/AccountManager;)V
 HSPLandroid/accounts/AccountManager;->addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z)V
 HSPLandroid/accounts/AccountManager;->addOnAccountsUpdatedListener(Landroid/accounts/OnAccountsUpdateListener;Landroid/os/Handler;Z[Ljava/lang/String;)V
 HSPLandroid/accounts/AccountManager;->blockingGetAuthToken(Landroid/accounts/Account;Ljava/lang/String;Z)Ljava/lang/String;
@@ -77,69 +63,51 @@
 HSPLandroid/accounts/AccountManager;->getAccountsByTypeAsUser(Ljava/lang/String;Landroid/os/UserHandle;)[Landroid/accounts/Account;
 HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;
 HSPLandroid/accounts/AccountManager;->getAuthToken(Landroid/accounts/Account;Ljava/lang/String;ZLandroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;
-HPLandroid/accounts/AccountManager;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/accounts/AccountManager;->hasFeatures(Landroid/accounts/Account;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;
-HSPLandroid/accounts/AccountManager;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/AuthenticatorDescription$1;-><init>()V
-HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/accounts/AuthenticatorDescription;
-HSPLandroid/accounts/AuthenticatorDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/accounts/AuthenticatorDescription$1;->newArray(I)[Landroid/accounts/AuthenticatorDescription;
-HSPLandroid/accounts/AuthenticatorDescription$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/accounts/AuthenticatorDescription;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/accounts/AuthenticatorDescription;-><init>(Ljava/lang/String;Ljava/lang/String;IIIIZ)V
-HSPLandroid/accounts/AuthenticatorDescription;->equals(Ljava/lang/Object;)Z
-HSPLandroid/accounts/AuthenticatorDescription;->hashCode()I
-HSPLandroid/accounts/AuthenticatorDescription;->newKey(Ljava/lang/String;)Landroid/accounts/AuthenticatorDescription;
-HPLandroid/accounts/AuthenticatorDescription;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/accounts/IAccountAuthenticator$Stub$Proxy;->getAuthToken(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-HPLandroid/accounts/IAccountAuthenticator$Stub$Proxy;->hasFeatures(Landroid/accounts/IAccountAuthenticatorResponse;Landroid/accounts/Account;[Ljava/lang/String;)V
-HPLandroid/accounts/IAccountAuthenticator$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountAuthenticator;
-HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;-><init>()V
-PLandroid/accounts/IAccountAuthenticatorResponse$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/accounts/IAccountAuthenticatorResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
+HSPLandroid/accounts/AccountManager;->postToHandler(Landroid/os/Handler;Landroid/accounts/OnAccountsUpdateListener;[Landroid/accounts/Account;)V
+HSPLandroid/accounts/IAccountManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
 HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription;
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/accounts/IAccountManager$Stub$Proxy;->onAccountAccessed(Ljava/lang/String;)V
 HSPLandroid/accounts/IAccountManager$Stub$Proxy;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/IAccountManager$Stub;-><init>()V
-HPLandroid/accounts/IAccountManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HPLandroid/accounts/IAccountManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/accounts/IAccountManagerResponse$Stub$Proxy;->onResult(Landroid/os/Bundle;)V
+HSPLandroid/accounts/IAccountManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManager;
+HSPLandroid/accounts/IAccountManagerResponse$Stub;-><init>()V
 HSPLandroid/accounts/IAccountManagerResponse$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/accounts/IAccountManagerResponse$Stub;->asInterface(Landroid/os/IBinder;)Landroid/accounts/IAccountManagerResponse;
 HSPLandroid/accounts/IAccountManagerResponse$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/animation/AnimationHandler$1;-><init>(Landroid/animation/AnimationHandler;)V
 HSPLandroid/animation/AnimationHandler$1;->doFrame(J)V
+HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;-><init>(Landroid/animation/AnimationHandler;)V
+HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;-><init>(Landroid/animation/AnimationHandler;Landroid/animation/AnimationHandler$1;)V
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->getFrameTime()J
 HSPLandroid/animation/AnimationHandler$MyFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
 HSPLandroid/animation/AnimationHandler;-><init>()V
+HSPLandroid/animation/AnimationHandler;->access$000(Landroid/animation/AnimationHandler;)Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
+HSPLandroid/animation/AnimationHandler;->access$100(Landroid/animation/AnimationHandler;J)V
+HSPLandroid/animation/AnimationHandler;->access$200(Landroid/animation/AnimationHandler;)Ljava/util/ArrayList;
 HSPLandroid/animation/AnimationHandler;->addAnimationFrameCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)V
 HSPLandroid/animation/AnimationHandler;->autoCancelBasedOn(Landroid/animation/ObjectAnimator;)V
 HSPLandroid/animation/AnimationHandler;->cleanUpList()V
 HSPLandroid/animation/AnimationHandler;->doAnimationFrame(J)V
+HSPLandroid/animation/AnimationHandler;->getAnimationCount()I
+HSPLandroid/animation/AnimationHandler;->getInstance()Landroid/animation/AnimationHandler;
+HSPLandroid/animation/AnimationHandler;->getProvider()Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
+HSPLandroid/animation/AnimationHandler;->isCallbackDue(Landroid/animation/AnimationHandler$AnimationFrameCallback;J)Z
 HSPLandroid/animation/AnimationHandler;->removeCallback(Landroid/animation/AnimationHandler$AnimationFrameCallback;)V
-HSPLandroid/animation/AnimationHandler;->setProvider(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;)V
-HSPLandroid/animation/Animator$AnimatorConstantState;->getChangingConfigurations()I
+HSPLandroid/animation/Animator$AnimatorConstantState;-><init>(Landroid/animation/Animator;)V
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Landroid/animation/Animator;
 HSPLandroid/animation/Animator$AnimatorConstantState;->newInstance()Ljava/lang/Object;
 HSPLandroid/animation/Animator$AnimatorListener;->onAnimationEnd(Landroid/animation/Animator;Z)V
 HSPLandroid/animation/Animator$AnimatorListener;->onAnimationStart(Landroid/animation/Animator;Z)V
+HSPLandroid/animation/Animator;-><init>()V
+HSPLandroid/animation/Animator;->access$002(Landroid/animation/Animator;Landroid/animation/Animator$AnimatorConstantState;)Landroid/animation/Animator$AnimatorConstantState;
 HSPLandroid/animation/Animator;->addListener(Landroid/animation/Animator$AnimatorListener;)V
 HSPLandroid/animation/Animator;->appendChangingConfigurations(I)V
 HSPLandroid/animation/Animator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/Animator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/Animator;->getChangingConfigurations()I
 HSPLandroid/animation/Animator;->getListeners()Ljava/util/ArrayList;
-HSPLandroid/animation/Animator;->pause()V
-HSPLandroid/animation/Animator;->removeAllListeners()V
 HSPLandroid/animation/Animator;->removeListener(Landroid/animation/Animator$AnimatorListener;)V
 HSPLandroid/animation/Animator;->setAllowRunningAsynchronously(Z)V
-HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->evaluate(FLandroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Landroid/util/PathParser$PathData;
-HSPLandroid/animation/AnimatorInflater$PathDataEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/animation/AnimatorInflater;->createAnimatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;F)Landroid/animation/Animator;
 HSPLandroid/animation/AnimatorInflater;->createAnimatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/animation/AnimatorSet;IF)Landroid/animation/Animator;
 HSPLandroid/animation/AnimatorInflater;->createStateListAnimatorFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/animation/StateListAnimator;
 HSPLandroid/animation/AnimatorInflater;->getChangingConfigs(Landroid/content/res/Resources;I)I
@@ -148,6 +116,7 @@
 HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/Context;I)Landroid/animation/Animator;
 HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;IF)Landroid/animation/Animator;
 HSPLandroid/animation/AnimatorInflater;->loadAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;Landroid/animation/ValueAnimator;F)Landroid/animation/ValueAnimator;
+HSPLandroid/animation/AnimatorInflater;->loadObjectAnimator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;F)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/AnimatorInflater;->loadStateListAnimator(Landroid/content/Context;I)Landroid/animation/StateListAnimator;
 HSPLandroid/animation/AnimatorInflater;->parseAnimatorFromTypeArray(Landroid/animation/ValueAnimator;Landroid/content/res/TypedArray;Landroid/content/res/TypedArray;F)V
 HSPLandroid/animation/AnimatorInflater;->setupObjectAnimator(Landroid/animation/ValueAnimator;Landroid/content/res/TypedArray;IF)V
@@ -155,23 +124,36 @@
 HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationCancel(Landroid/animation/Animator;)V
 HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/animation/AnimatorListenerAdapter;->onAnimationStart(Landroid/animation/Animator;)V
+HSPLandroid/animation/AnimatorSet$1;-><init>(Landroid/animation/AnimatorSet;)V
 HSPLandroid/animation/AnimatorSet$1;->onAnimationEnd(Landroid/animation/Animator;)V
+HSPLandroid/animation/AnimatorSet$2;-><init>(Landroid/animation/AnimatorSet;Landroid/animation/AnimatorSet;)V
 HSPLandroid/animation/AnimatorSet$2;->onAnimationEnd(Landroid/animation/Animator;)V
+HSPLandroid/animation/AnimatorSet$3;-><init>(Landroid/animation/AnimatorSet;)V
 HSPLandroid/animation/AnimatorSet$3;->compare(Landroid/animation/AnimatorSet$AnimationEvent;Landroid/animation/AnimatorSet$AnimationEvent;)I
 HSPLandroid/animation/AnimatorSet$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroid/animation/AnimatorSet$AnimationEvent;-><init>(Landroid/animation/AnimatorSet$Node;I)V
 HSPLandroid/animation/AnimatorSet$AnimationEvent;->getTime()J
-HSPLandroid/animation/AnimatorSet$Builder;->after(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;
+HSPLandroid/animation/AnimatorSet$Builder;-><init>(Landroid/animation/AnimatorSet;Landroid/animation/Animator;)V
 HSPLandroid/animation/AnimatorSet$Builder;->before(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;
 HSPLandroid/animation/AnimatorSet$Builder;->with(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;
+HSPLandroid/animation/AnimatorSet$Node;-><init>(Landroid/animation/Animator;)V
 HSPLandroid/animation/AnimatorSet$Node;->addChild(Landroid/animation/AnimatorSet$Node;)V
 HSPLandroid/animation/AnimatorSet$Node;->addParent(Landroid/animation/AnimatorSet$Node;)V
 HSPLandroid/animation/AnimatorSet$Node;->addParents(Ljava/util/ArrayList;)V
 HSPLandroid/animation/AnimatorSet$Node;->addSibling(Landroid/animation/AnimatorSet$Node;)V
 HSPLandroid/animation/AnimatorSet$Node;->clone()Landroid/animation/AnimatorSet$Node;
+HSPLandroid/animation/AnimatorSet$SeekState;-><init>(Landroid/animation/AnimatorSet;)V
+HSPLandroid/animation/AnimatorSet$SeekState;-><init>(Landroid/animation/AnimatorSet;Landroid/animation/AnimatorSet$1;)V
 HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTimeNormalized()J
 HSPLandroid/animation/AnimatorSet$SeekState;->isActive()Z
 HSPLandroid/animation/AnimatorSet$SeekState;->reset()V
 HSPLandroid/animation/AnimatorSet;-><init>()V
+HSPLandroid/animation/AnimatorSet;->access$100(Landroid/animation/AnimatorSet;)Landroid/util/ArrayMap;
+HSPLandroid/animation/AnimatorSet;->access$300(Landroid/animation/AnimatorSet;)Z
+HSPLandroid/animation/AnimatorSet;->access$402(Landroid/animation/AnimatorSet;Z)Z
+HSPLandroid/animation/AnimatorSet;->access$500(Landroid/animation/AnimatorSet;Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Node;
+HSPLandroid/animation/AnimatorSet;->addAnimationCallback(J)V
+HSPLandroid/animation/AnimatorSet;->addDummyListener()V
 HSPLandroid/animation/AnimatorSet;->cancel()V
 HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/AnimatorSet;->clone()Landroid/animation/AnimatorSet;
@@ -183,6 +165,9 @@
 HSPLandroid/animation/AnimatorSet;->findSiblings(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V
 HSPLandroid/animation/AnimatorSet;->getChangingConfigurations()I
 HSPLandroid/animation/AnimatorSet;->getChildAnimations()Ljava/util/ArrayList;
+HSPLandroid/animation/AnimatorSet;->getNodeForAnimation(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Node;
+HSPLandroid/animation/AnimatorSet;->getPlayTimeForNode(JLandroid/animation/AnimatorSet$Node;)J
+HSPLandroid/animation/AnimatorSet;->getPlayTimeForNode(JLandroid/animation/AnimatorSet$Node;Z)J
 HSPLandroid/animation/AnimatorSet;->getStartDelay()J
 HSPLandroid/animation/AnimatorSet;->getTotalDuration()J
 HSPLandroid/animation/AnimatorSet;->handleAnimationEvents(IIJ)V
@@ -192,15 +177,15 @@
 HSPLandroid/animation/AnimatorSet;->isStarted()Z
 HSPLandroid/animation/AnimatorSet;->play(Landroid/animation/Animator;)Landroid/animation/AnimatorSet$Builder;
 HSPLandroid/animation/AnimatorSet;->playSequentially([Landroid/animation/Animator;)V
-HSPLandroid/animation/AnimatorSet;->playTogether(Ljava/util/Collection;)V
 HSPLandroid/animation/AnimatorSet;->playTogether([Landroid/animation/Animator;)V
 HSPLandroid/animation/AnimatorSet;->pulseAnimationFrame(J)Z
+HSPLandroid/animation/AnimatorSet;->pulseFrame(Landroid/animation/AnimatorSet$Node;J)V
+HSPLandroid/animation/AnimatorSet;->removeAnimationCallback()V
+HSPLandroid/animation/AnimatorSet;->removeDummyListener()V
 HSPLandroid/animation/AnimatorSet;->setDuration(J)Landroid/animation/AnimatorSet;
 HSPLandroid/animation/AnimatorSet;->setInterpolator(Landroid/animation/TimeInterpolator;)V
-HSPLandroid/animation/AnimatorSet;->setStartDelay(J)V
 HSPLandroid/animation/AnimatorSet;->setTarget(Ljava/lang/Object;)V
 HSPLandroid/animation/AnimatorSet;->shouldPlayTogether()Z
-HSPLandroid/animation/AnimatorSet;->skipToEndValue(Z)V
 HSPLandroid/animation/AnimatorSet;->sortAnimationEvents()V
 HSPLandroid/animation/AnimatorSet;->start()V
 HSPLandroid/animation/AnimatorSet;->start(ZZ)V
@@ -210,85 +195,67 @@
 HSPLandroid/animation/AnimatorSet;->updatePlayTime(Landroid/animation/AnimatorSet$Node;Ljava/util/ArrayList;)V
 HSPLandroid/animation/ArgbEvaluator;-><init>()V
 HSPLandroid/animation/ArgbEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/animation/FloatEvaluator;-><init>()V
+HSPLandroid/animation/FloatKeyframeSet;-><init>([Landroid/animation/Keyframe$FloatKeyframe;)V
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/FloatKeyframeSet;
 HSPLandroid/animation/FloatKeyframeSet;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/FloatKeyframeSet;->getFloatValue(F)F
 HSPLandroid/animation/FloatKeyframeSet;->getValue(F)Ljava/lang/Object;
-HSPLandroid/animation/IntEvaluator;-><init>()V
+HSPLandroid/animation/IntKeyframeSet;-><init>([Landroid/animation/Keyframe$IntKeyframe;)V
 HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/IntKeyframeSet;
 HSPLandroid/animation/IntKeyframeSet;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/IntKeyframeSet;->getIntValue(F)I
+HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(F)V
+HSPLandroid/animation/Keyframe$FloatKeyframe;-><init>(FF)V
 HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe$FloatKeyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$FloatKeyframe;->getFloatValue()F
 HSPLandroid/animation/Keyframe$FloatKeyframe;->setValue(Ljava/lang/Object;)V
+HSPLandroid/animation/Keyframe$IntKeyframe;-><init>(FI)V
 HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe$IntKeyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->clone()Landroid/animation/Keyframe;
 HSPLandroid/animation/Keyframe$IntKeyframe;->getIntValue()I
-HSPLandroid/animation/Keyframe$IntKeyframe;->getValue()Ljava/lang/Object;
 HSPLandroid/animation/Keyframe$IntKeyframe;->setValue(Ljava/lang/Object;)V
-HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe$ObjectKeyframe;
-HSPLandroid/animation/Keyframe$ObjectKeyframe;->clone()Landroid/animation/Keyframe;
+HSPLandroid/animation/Keyframe$ObjectKeyframe;-><init>(FLjava/lang/Object;)V
 HSPLandroid/animation/Keyframe$ObjectKeyframe;->getValue()Ljava/lang/Object;
+HSPLandroid/animation/Keyframe;-><init>()V
 HSPLandroid/animation/Keyframe;->getFraction()F
 HSPLandroid/animation/Keyframe;->getInterpolator()Landroid/animation/TimeInterpolator;
 HSPLandroid/animation/Keyframe;->hasValue()Z
+HSPLandroid/animation/Keyframe;->ofFloat(F)Landroid/animation/Keyframe;
+HSPLandroid/animation/Keyframe;->ofFloat(FF)Landroid/animation/Keyframe;
+HSPLandroid/animation/Keyframe;->ofInt(FI)Landroid/animation/Keyframe;
+HSPLandroid/animation/Keyframe;->ofObject(FLjava/lang/Object;)Landroid/animation/Keyframe;
+HSPLandroid/animation/Keyframe;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/animation/Keyframe;->setValueWasSetOnStart(Z)V
 HSPLandroid/animation/Keyframe;->valueWasSetOnStart()Z
 HSPLandroid/animation/KeyframeSet;-><init>([Landroid/animation/Keyframe;)V
-HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/KeyframeSet;
-HSPLandroid/animation/KeyframeSet;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/KeyframeSet;->getKeyframes()Ljava/util/List;
 HSPLandroid/animation/KeyframeSet;->getValue(F)Ljava/lang/Object;
 HSPLandroid/animation/KeyframeSet;->ofFloat([F)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofInt([I)Landroid/animation/KeyframeSet;
 HSPLandroid/animation/KeyframeSet;->ofObject([Ljava/lang/Object;)Landroid/animation/KeyframeSet;
+HSPLandroid/animation/KeyframeSet;->ofPath(Landroid/graphics/Path;F)Landroid/animation/PathKeyframes;
 HSPLandroid/animation/KeyframeSet;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-HSPLandroid/animation/LayoutTransition$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$2;->onLayoutChange(Landroid/view/View;IIIIIIII)V
-HSPLandroid/animation/LayoutTransition$3;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$3;->onAnimationStart(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$4;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$5;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition$CleanupCallback;->cleanup()V
-HSPLandroid/animation/LayoutTransition$CleanupCallback;->onPreDraw()Z
 HSPLandroid/animation/LayoutTransition;-><init>()V
 HSPLandroid/animation/LayoutTransition;->addChild(Landroid/view/ViewGroup;Landroid/view/View;)V
 HSPLandroid/animation/LayoutTransition;->addChild(Landroid/view/ViewGroup;Landroid/view/View;Z)V
 HSPLandroid/animation/LayoutTransition;->addTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V
-HSPLandroid/animation/LayoutTransition;->cancel()V
 HSPLandroid/animation/LayoutTransition;->cancel(I)V
-HSPLandroid/animation/LayoutTransition;->disableTransitionType(I)V
-HSPLandroid/animation/LayoutTransition;->enableTransitionType(I)V
-HSPLandroid/animation/LayoutTransition;->hideChild(Landroid/view/ViewGroup;Landroid/view/View;I)V
 HSPLandroid/animation/LayoutTransition;->isChangingLayout()Z
-HSPLandroid/animation/LayoutTransition;->isRunning()Z
 HSPLandroid/animation/LayoutTransition;->layoutChange(Landroid/view/ViewGroup;)V
-HSPLandroid/animation/LayoutTransition;->removeChild(Landroid/view/ViewGroup;Landroid/view/View;)V
-HSPLandroid/animation/LayoutTransition;->removeChild(Landroid/view/ViewGroup;Landroid/view/View;Z)V
-HSPLandroid/animation/LayoutTransition;->removeTransitionListener(Landroid/animation/LayoutTransition$TransitionListener;)V
-HSPLandroid/animation/LayoutTransition;->runAppearingTransition(Landroid/view/ViewGroup;Landroid/view/View;)V
-HSPLandroid/animation/LayoutTransition;->runChangeTransition(Landroid/view/ViewGroup;Landroid/view/View;I)V
-HSPLandroid/animation/LayoutTransition;->runDisappearingTransition(Landroid/view/ViewGroup;Landroid/view/View;)V
-HSPLandroid/animation/LayoutTransition;->setAnimateParentHierarchy(Z)V
-HSPLandroid/animation/LayoutTransition;->setAnimator(ILandroid/animation/Animator;)V
-HSPLandroid/animation/LayoutTransition;->setDuration(J)V
-HSPLandroid/animation/LayoutTransition;->setInterpolator(ILandroid/animation/TimeInterpolator;)V
-HSPLandroid/animation/LayoutTransition;->setStartDelay(IJ)V
-HSPLandroid/animation/LayoutTransition;->setupChangeAnimation(Landroid/view/ViewGroup;ILandroid/animation/Animator;JLandroid/view/View;)V
-HSPLandroid/animation/LayoutTransition;->showChild(Landroid/view/ViewGroup;Landroid/view/View;I)V
-HSPLandroid/animation/LayoutTransition;->startChangingAnimations()V
 HSPLandroid/animation/ObjectAnimator;-><init>()V
+HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Landroid/util/Property;)V
+HSPLandroid/animation/ObjectAnimator;-><init>(Ljava/lang/Object;Ljava/lang/String;)V
 HSPLandroid/animation/ObjectAnimator;->animateValue(F)V
 HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/Animator;
+HSPLandroid/animation/ObjectAnimator;->clone()Landroid/animation/ObjectAnimator;
+HSPLandroid/animation/ObjectAnimator;->getNameForTrace()Ljava/lang/String;
 HSPLandroid/animation/ObjectAnimator;->getPropertyName()Ljava/lang/String;
-HSPLandroid/animation/ObjectAnimator;->hasSameTargetAndProperties(Landroid/animation/Animator;)Z
+HSPLandroid/animation/ObjectAnimator;->getTarget()Ljava/lang/Object;
 HSPLandroid/animation/ObjectAnimator;->initAnimation()V
 HSPLandroid/animation/ObjectAnimator;->isInitialized()Z
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Landroid/util/Property;[F)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->ofFloat(Ljava/lang/Object;Ljava/lang/String;[F)Landroid/animation/ObjectAnimator;
-HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Landroid/util/Property;[I)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->ofInt(Ljava/lang/Object;Ljava/lang/String;[I)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->ofPropertyValuesHolder(Ljava/lang/Object;[Landroid/animation/PropertyValuesHolder;)Landroid/animation/ObjectAnimator;
 HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/Animator;
@@ -296,19 +263,23 @@
 HSPLandroid/animation/ObjectAnimator;->setDuration(J)Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ObjectAnimator;->setFloatValues([F)V
 HSPLandroid/animation/ObjectAnimator;->setIntValues([I)V
-HSPLandroid/animation/ObjectAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ObjectAnimator;->setProperty(Landroid/util/Property;)V
+HSPLandroid/animation/ObjectAnimator;->setPropertyName(Ljava/lang/String;)V
 HSPLandroid/animation/ObjectAnimator;->setTarget(Ljava/lang/Object;)V
-HSPLandroid/animation/ObjectAnimator;->setupEndValues()V
-HSPLandroid/animation/ObjectAnimator;->setupStartValues()V
+HSPLandroid/animation/ObjectAnimator;->shouldAutoCancel(Landroid/animation/AnimationHandler$AnimationFrameCallback;)Z
 HSPLandroid/animation/ObjectAnimator;->start()V
-HSPLandroid/animation/PathKeyframes$1;->getFloatValue(F)F
-HSPLandroid/animation/PathKeyframes$2;->getFloatValue(F)F
-HSPLandroid/animation/PathKeyframes$FloatKeyframesBase;->getValue(F)Ljava/lang/Object;
+HSPLandroid/animation/PathKeyframes$1;-><init>(Landroid/animation/PathKeyframes;)V
+HSPLandroid/animation/PathKeyframes$2;-><init>(Landroid/animation/PathKeyframes;)V
+HSPLandroid/animation/PathKeyframes$FloatKeyframesBase;-><init>()V
+HSPLandroid/animation/PathKeyframes$SimpleKeyframes;-><init>()V
+HSPLandroid/animation/PathKeyframes$SimpleKeyframes;-><init>(Landroid/animation/PathKeyframes$1;)V
 HSPLandroid/animation/PathKeyframes$SimpleKeyframes;->clone()Landroid/animation/Keyframes;
 HSPLandroid/animation/PathKeyframes;-><init>(Landroid/graphics/Path;F)V
-HSPLandroid/animation/PathKeyframes;->getValue(F)Ljava/lang/Object;
-HSPLandroid/animation/PathKeyframes;->interpolateInRange(FII)Landroid/graphics/PointF;
+HSPLandroid/animation/PathKeyframes;->createXFloatKeyframes()Landroid/animation/Keyframes$FloatKeyframes;
+HSPLandroid/animation/PathKeyframes;->createYFloatKeyframes()Landroid/animation/Keyframes$FloatKeyframes;
+HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Landroid/util/Property;[F)V
+HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/Keyframes$FloatKeyframes;)V
+HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;-><init>(Ljava/lang/String;[F)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->calculateValue(F)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
@@ -317,6 +288,7 @@
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setFloatValues([F)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setProperty(Landroid/util/Property;)V
 HSPLandroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
+HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[I)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->calculateValue(F)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
@@ -324,7 +296,15 @@
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setIntValues([I)V
 HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;->setupSetter(Ljava/lang/Class;)V
+HSPLandroid/animation/PropertyValuesHolder$PropertyValues;-><init>()V
+HSPLandroid/animation/PropertyValuesHolder;-><init>(Landroid/util/Property;)V
+HSPLandroid/animation/PropertyValuesHolder;-><init>(Landroid/util/Property;Landroid/animation/PropertyValuesHolder$1;)V
+HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;)V
 HSPLandroid/animation/PropertyValuesHolder;-><init>(Ljava/lang/String;Landroid/animation/PropertyValuesHolder$1;)V
+HSPLandroid/animation/PropertyValuesHolder;->access$200(Ljava/lang/Object;JI)V
+HSPLandroid/animation/PropertyValuesHolder;->access$300(Ljava/lang/Class;Ljava/lang/String;)J
+HSPLandroid/animation/PropertyValuesHolder;->access$400(Ljava/lang/Object;JF)V
+HSPLandroid/animation/PropertyValuesHolder;->access$500(Ljava/lang/Class;Ljava/lang/String;)J
 HSPLandroid/animation/PropertyValuesHolder;->calculateValue(F)V
 HSPLandroid/animation/PropertyValuesHolder;->clone()Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->convertBack(Ljava/lang/Object;)Ljava/lang/Object;
@@ -337,22 +317,28 @@
 HSPLandroid/animation/PropertyValuesHolder;->init()V
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Landroid/util/Property;[F)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofFloat(Ljava/lang/String;[F)Landroid/animation/PropertyValuesHolder;
+HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->ofKeyframes(Ljava/lang/String;Landroid/animation/Keyframes;)Landroid/animation/PropertyValuesHolder;
-HSPLandroid/animation/PropertyValuesHolder;->setAnimatedValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder;->ofObject(Ljava/lang/String;Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/PropertyValuesHolder;->setEvaluator(Landroid/animation/TypeEvaluator;)V
-HSPLandroid/animation/PropertyValuesHolder;->setProperty(Landroid/util/Property;)V
+HSPLandroid/animation/PropertyValuesHolder;->setFloatValues([F)V
+HSPLandroid/animation/PropertyValuesHolder;->setIntValues([I)V
+HSPLandroid/animation/PropertyValuesHolder;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder;->setPropertyName(Ljava/lang/String;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupEndValue(Ljava/lang/Object;)V
+HSPLandroid/animation/PropertyValuesHolder;->setupGetter(Ljava/lang/Class;)V
 HSPLandroid/animation/PropertyValuesHolder;->setupSetterAndGetter(Ljava/lang/Object;)V
 HSPLandroid/animation/PropertyValuesHolder;->setupSetterOrGetter(Ljava/lang/Class;Ljava/util/HashMap;Ljava/lang/String;Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLandroid/animation/PropertyValuesHolder;->setupStartValue(Ljava/lang/Object;)V
-HSPLandroid/animation/PropertyValuesHolder;->setupValue(Ljava/lang/Object;Landroid/animation/Keyframe;)V
-HSPLandroid/animation/RectEvaluator;-><init>()V
+HSPLandroid/animation/StateListAnimator$1;-><init>(Landroid/animation/StateListAnimator;)V
 HSPLandroid/animation/StateListAnimator$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->getChangingConfigurations()I
+HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;-><init>(Landroid/animation/StateListAnimator;)V
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Landroid/animation/StateListAnimator;
 HSPLandroid/animation/StateListAnimator$StateListAnimatorConstantState;->newInstance()Ljava/lang/Object;
+HSPLandroid/animation/StateListAnimator$Tuple;-><init>([ILandroid/animation/Animator;)V
+HSPLandroid/animation/StateListAnimator$Tuple;-><init>([ILandroid/animation/Animator;Landroid/animation/StateListAnimator$1;)V
 HSPLandroid/animation/StateListAnimator;-><init>()V
+HSPLandroid/animation/StateListAnimator;->access$000(Landroid/animation/StateListAnimator;)Landroid/animation/Animator;
+HSPLandroid/animation/StateListAnimator;->access$002(Landroid/animation/StateListAnimator;Landroid/animation/Animator;)Landroid/animation/Animator;
+HSPLandroid/animation/StateListAnimator;->access$202(Landroid/animation/StateListAnimator;Landroid/animation/StateListAnimator$StateListAnimatorConstantState;)Landroid/animation/StateListAnimator$StateListAnimatorConstantState;
 HSPLandroid/animation/StateListAnimator;->addState([ILandroid/animation/Animator;)V
 HSPLandroid/animation/StateListAnimator;->appendChangingConfigurations(I)V
 HSPLandroid/animation/StateListAnimator;->clearTarget()V
@@ -360,22 +346,19 @@
 HSPLandroid/animation/StateListAnimator;->createConstantState()Landroid/content/res/ConstantState;
 HSPLandroid/animation/StateListAnimator;->getChangingConfigurations()I
 HSPLandroid/animation/StateListAnimator;->getTarget()Landroid/view/View;
+HSPLandroid/animation/StateListAnimator;->initAnimatorListener()V
 HSPLandroid/animation/StateListAnimator;->jumpToCurrentState()V
 HSPLandroid/animation/StateListAnimator;->setChangingConfigurations(I)V
 HSPLandroid/animation/StateListAnimator;->setState([I)V
 HSPLandroid/animation/StateListAnimator;->setTarget(Landroid/view/View;)V
-HSPLandroid/animation/TimeAnimator;-><init>()V
-HSPLandroid/animation/TimeAnimator;->animateBasedOnTime(J)Z
-HSPLandroid/animation/TimeAnimator;->initAnimation()V
-HSPLandroid/animation/TimeAnimator;->setCurrentPlayTime(J)V
-HSPLandroid/animation/TimeAnimator;->setTimeListener(Landroid/animation/TimeAnimator$TimeListener;)V
-HSPLandroid/animation/TimeAnimator;->start()V
+HSPLandroid/animation/StateListAnimator;->start(Landroid/animation/StateListAnimator$Tuple;)V
 HSPLandroid/animation/ValueAnimator;-><init>()V
+HSPLandroid/animation/ValueAnimator;->addAnimationCallback(J)V
 HSPLandroid/animation/ValueAnimator;->addUpdateListener(Landroid/animation/ValueAnimator$AnimatorUpdateListener;)V
 HSPLandroid/animation/ValueAnimator;->animateBasedOnTime(J)Z
 HSPLandroid/animation/ValueAnimator;->animateValue(F)V
-HSPLandroid/animation/ValueAnimator;->areAnimatorsEnabled()Z
 HSPLandroid/animation/ValueAnimator;->cancel()V
+HSPLandroid/animation/ValueAnimator;->clampFraction(F)F
 HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/Animator;
 HSPLandroid/animation/ValueAnimator;->clone()Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->doAnimationFrame(J)Z
@@ -385,24 +368,29 @@
 HSPLandroid/animation/ValueAnimator;->getAnimatedValue()Ljava/lang/Object;
 HSPLandroid/animation/ValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
 HSPLandroid/animation/ValueAnimator;->getCurrentAnimationsCount()I
-HSPLandroid/animation/ValueAnimator;->getCurrentPlayTime()J
+HSPLandroid/animation/ValueAnimator;->getCurrentIteration(F)I
+HSPLandroid/animation/ValueAnimator;->getCurrentIterationFraction(FZ)F
 HSPLandroid/animation/ValueAnimator;->getDuration()J
 HSPLandroid/animation/ValueAnimator;->getDurationScale()F
 HSPLandroid/animation/ValueAnimator;->getInterpolator()Landroid/animation/TimeInterpolator;
+HSPLandroid/animation/ValueAnimator;->getNameForTrace()Ljava/lang/String;
+HSPLandroid/animation/ValueAnimator;->getRepeatCount()I
+HSPLandroid/animation/ValueAnimator;->getRepeatMode()I
+HSPLandroid/animation/ValueAnimator;->getScaledDuration()J
 HSPLandroid/animation/ValueAnimator;->getStartDelay()J
 HSPLandroid/animation/ValueAnimator;->getTotalDuration()J
 HSPLandroid/animation/ValueAnimator;->getValues()[Landroid/animation/PropertyValuesHolder;
 HSPLandroid/animation/ValueAnimator;->initAnimation()V
 HSPLandroid/animation/ValueAnimator;->isInitialized()Z
+HSPLandroid/animation/ValueAnimator;->isPulsingInternal()Z
 HSPLandroid/animation/ValueAnimator;->isRunning()Z
 HSPLandroid/animation/ValueAnimator;->isStarted()Z
 HSPLandroid/animation/ValueAnimator;->notifyStartListeners()V
 HSPLandroid/animation/ValueAnimator;->ofFloat([F)Landroid/animation/ValueAnimator;
 HSPLandroid/animation/ValueAnimator;->ofInt([I)Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->ofObject(Landroid/animation/TypeEvaluator;[Ljava/lang/Object;)Landroid/animation/ValueAnimator;
-HSPLandroid/animation/ValueAnimator;->overrideDurationScale(F)V
-HSPLandroid/animation/ValueAnimator;->pause()V
 HSPLandroid/animation/ValueAnimator;->pulseAnimationFrame(J)Z
+HSPLandroid/animation/ValueAnimator;->removeAnimationCallback()V
+HSPLandroid/animation/ValueAnimator;->resolveDurationScale()F
 HSPLandroid/animation/ValueAnimator;->setAllowRunningAsynchronously(Z)V
 HSPLandroid/animation/ValueAnimator;->setCurrentFraction(F)V
 HSPLandroid/animation/ValueAnimator;->setCurrentPlayTime(J)V
@@ -413,7 +401,6 @@
 HSPLandroid/animation/ValueAnimator;->setFloatValues([F)V
 HSPLandroid/animation/ValueAnimator;->setIntValues([I)V
 HSPLandroid/animation/ValueAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V
-HSPLandroid/animation/ValueAnimator;->setObjectValues([Ljava/lang/Object;)V
 HSPLandroid/animation/ValueAnimator;->setRepeatCount(I)V
 HSPLandroid/animation/ValueAnimator;->setRepeatMode(I)V
 HSPLandroid/animation/ValueAnimator;->setStartDelay(J)V
@@ -424,82 +411,91 @@
 HSPLandroid/animation/ValueAnimator;->start(Z)V
 HSPLandroid/animation/ValueAnimator;->startAnimation()V
 HSPLandroid/animation/ValueAnimator;->startWithoutPulsing(Z)V
-PLandroid/apex/ApexInfo$1;-><init>()V
-PLandroid/apex/ApexInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/apex/ApexInfo;
-PLandroid/apex/ApexInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/apex/ApexInfo$1;->newArray(I)[Landroid/apex/ApexInfo;
-PLandroid/apex/ApexInfo$1;->newArray(I)[Ljava/lang/Object;
-PLandroid/apex/ApexInfo;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/apex/IApexService$Stub$Proxy;->getActivePackages()[Landroid/apex/ApexInfo;
-HSPLandroid/apex/IApexService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/apex/IApexService;
+HSPLandroid/app/-$$Lambda$ActivityThread$A4ykhsPb8qV3ffTqpQDklHSMDJ0;-><init>(Landroid/app/ActivityThread;)V
+HSPLandroid/app/-$$Lambda$ActivityThread$A4ykhsPb8qV3ffTqpQDklHSMDJ0;->run()V
+HSPLandroid/app/-$$Lambda$ActivityThread$ActivityClientRecord$HOrG1qglSjSUHSjKBn2rXtX0gGg;-><init>(Landroid/app/ActivityThread$ActivityClientRecord;)V
 HSPLandroid/app/-$$Lambda$ActivityThread$ActivityClientRecord$HOrG1qglSjSUHSjKBn2rXtX0gGg;->onConfigurationChanged(Landroid/content/res/Configuration;I)V
-HSPLandroid/app/-$$Lambda$ActivityThread$ApplicationThread$tUGFX7CUhzB4Pg5wFd5yeqOnu38;-><init>()V
 HSPLandroid/app/-$$Lambda$ActivityThread$ApplicationThread$tUGFX7CUhzB4Pg5wFd5yeqOnu38;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/app/-$$Lambda$ActivityThread$ZXDWm3IBeFmLnFVblhB-IOZCr9o;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLandroid/app/-$$Lambda$AppOpsManager$HistoricalOp$DkVcBvqB32SMHlxw0sWQPh3GL1A;->get()Ljava/lang/Object;
-PLandroid/app/-$$Lambda$AppOpsManager$HistoricalOp$HUOLFYs8TiaQIOXcrq6JzjxA6gs;->get()Ljava/lang/Object;
-PLandroid/app/-$$Lambda$AppOpsManager$HistoricalOp$Vs6pDL0wjOBTquwNnreWVbPQrn4;->get()Ljava/lang/Object;
+HSPLandroid/app/-$$Lambda$ActivityThread$Wg40iAoNYFxps_KmrqtgptTB054;-><init>(Landroid/app/ActivityThread;)V
+HSPLandroid/app/-$$Lambda$ActivityThread$Wg40iAoNYFxps_KmrqtgptTB054;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLandroid/app/-$$Lambda$Dialog$zXRzrq3I7H1_zmZ8d_W7t2CQN0I;-><init>(Landroid/app/Dialog;)V
+HSPLandroid/app/-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher$Args;)V
 HSPLandroid/app/-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA;->run()V
+HSPLandroid/app/-$$Lambda$Notification$hOCsSZH8tWalFSbIzQ9x9IcPa9M;-><init>(Landroid/app/Notification;Landroid/os/Parcel;)V
 HSPLandroid/app/-$$Lambda$Notification$hOCsSZH8tWalFSbIzQ9x9IcPa9M;->onMarshaled(Landroid/app/PendingIntent;Landroid/os/Parcel;I)V
-HSPLandroid/app/-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM;-><init>()V
 HSPLandroid/app/-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM;->test(Ljava/lang/Object;)Z
+HSPLandroid/app/-$$Lambda$SharedPreferencesImpl$EditorImpl$3CAjkhzA131V3V-sLfP2uy0FWZ0;-><init>(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V
 HSPLandroid/app/-$$Lambda$SharedPreferencesImpl$EditorImpl$3CAjkhzA131V3V-sLfP2uy0FWZ0;->run()V
-HSPLandroid/app/ActionBar$LayoutParams;-><init>(II)V
-HSPLandroid/app/ActionBar$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/app/-$$Lambda$oslF4K8Uk6v-6nTRoaEpCmfAptE;-><init>(Landroid/app/Dialog;)V
+HSPLandroid/app/Activity$1;-><init>(Landroid/app/Activity;)V
+HSPLandroid/app/Activity$HostCallbacks;-><init>(Landroid/app/Activity;)V
 HSPLandroid/app/Activity$HostCallbacks;->onAttachFragment(Landroid/app/Fragment;)V
-HSPLandroid/app/Activity$HostCallbacks;->onFindViewById(I)Landroid/view/View;
 HSPLandroid/app/Activity$HostCallbacks;->onGetLayoutInflater()Landroid/view/LayoutInflater;
-HSPLandroid/app/Activity$HostCallbacks;->onHasView()Z
 HSPLandroid/app/Activity$HostCallbacks;->onUseFragmentManagerInflaterFactory()Z
 HSPLandroid/app/Activity;-><init>()V
-HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
+HSPLandroid/app/Activity;->access$100(Landroid/app/Activity;)Landroid/app/ActivityManager$TaskDescription;
+HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;)V
 HSPLandroid/app/Activity;->attachBaseContext(Landroid/content/Context;)V
 HSPLandroid/app/Activity;->autofillClientGetComponentName()Landroid/content/ComponentName;
 HSPLandroid/app/Activity;->autofillClientIsFillUiShowing()Z
 HSPLandroid/app/Activity;->autofillClientRequestHideFillUi()Z
+HSPLandroid/app/Activity;->cancelInputsAndStartExitTransition(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->collectActivityLifecycleCallbacks()[Ljava/lang/Object;
+HSPLandroid/app/Activity;->dispatchActivityCreated(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityDestroyed()V
+HSPLandroid/app/Activity;->dispatchActivityPaused()V
+HSPLandroid/app/Activity;->dispatchActivityPostCreated(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityPostDestroyed()V
+HSPLandroid/app/Activity;->dispatchActivityPostPaused()V
+HSPLandroid/app/Activity;->dispatchActivityPostResumed()V
+HSPLandroid/app/Activity;->dispatchActivityPostSaveInstanceState(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityPostStarted()V
+HSPLandroid/app/Activity;->dispatchActivityPostStopped()V
+HSPLandroid/app/Activity;->dispatchActivityPreCreated(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityPreDestroyed()V
+HSPLandroid/app/Activity;->dispatchActivityPrePaused()V
+HSPLandroid/app/Activity;->dispatchActivityPreResumed()V
+HSPLandroid/app/Activity;->dispatchActivityPreSaveInstanceState(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityPreStarted()V
+HSPLandroid/app/Activity;->dispatchActivityPreStopped()V
+HSPLandroid/app/Activity;->dispatchActivityResumed()V
+HSPLandroid/app/Activity;->dispatchActivitySaveInstanceState(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->dispatchActivityStarted()V
+HSPLandroid/app/Activity;->dispatchActivityStopped()V
 HSPLandroid/app/Activity;->dispatchEnterAnimationComplete()V
 HSPLandroid/app/Activity;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLandroid/app/Activity;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/app/Activity;->findViewById(I)Landroid/view/View;
+HSPLandroid/app/Activity;->enableAutofillCompatibilityIfNeeded()V
 HSPLandroid/app/Activity;->finish()V
 HSPLandroid/app/Activity;->finish(I)V
-HSPLandroid/app/Activity;->finishAfterTransition()V
-HSPLandroid/app/Activity;->finishAndRemoveTask()V
-HSPLandroid/app/Activity;->getActionBar()Landroid/app/ActionBar;
 HSPLandroid/app/Activity;->getActivityOptions()Landroid/app/ActivityOptions;
+HSPLandroid/app/Activity;->getActivityToken()Landroid/os/IBinder;
 HSPLandroid/app/Activity;->getApplication()Landroid/app/Application;
 HSPLandroid/app/Activity;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient;
 HSPLandroid/app/Activity;->getComponentName()Landroid/content/ComponentName;
+HSPLandroid/app/Activity;->getContentCaptureManager()Landroid/view/contentcapture/ContentCaptureManager;
+HSPLandroid/app/Activity;->getContentCaptureTypeAsString(I)Ljava/lang/String;
 HSPLandroid/app/Activity;->getFragmentManager()Landroid/app/FragmentManager;
 HSPLandroid/app/Activity;->getIntent()Landroid/content/Intent;
 HSPLandroid/app/Activity;->getLastNonConfigurationInstance()Ljava/lang/Object;
 HSPLandroid/app/Activity;->getLayoutInflater()Landroid/view/LayoutInflater;
-HSPLandroid/app/Activity;->getMenuInflater()Landroid/view/MenuInflater;
 HSPLandroid/app/Activity;->getNextAutofillId()I
-HSPLandroid/app/Activity;->getRequestedOrientation()I
 HSPLandroid/app/Activity;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
-HSPLandroid/app/Activity;->getTaskId()I
 HSPLandroid/app/Activity;->getTitle()Ljava/lang/CharSequence;
+HSPLandroid/app/Activity;->getTitleColor()I
 HSPLandroid/app/Activity;->getWindow()Landroid/view/Window;
 HSPLandroid/app/Activity;->getWindowManager()Landroid/view/WindowManager;
-HSPLandroid/app/Activity;->hasWindowFocus()Z
-HSPLandroid/app/Activity;->initWindowDecorActionBar()V
-HSPLandroid/app/Activity;->invalidateOptionsMenu()V
 HSPLandroid/app/Activity;->isChangingConfigurations()Z
+HSPLandroid/app/Activity;->isChild()Z
 HSPLandroid/app/Activity;->isDestroyed()Z
 HSPLandroid/app/Activity;->isFinishing()Z
-HSPLandroid/app/Activity;->isInMultiWindowMode()Z
 HSPLandroid/app/Activity;->makeVisible()V
 HSPLandroid/app/Activity;->notifyContentCaptureManagerIfNeeded(I)V
 HSPLandroid/app/Activity;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V
 HSPLandroid/app/Activity;->onAttachFragment(Landroid/app/Fragment;)V
 HSPLandroid/app/Activity;->onAttachedToWindow()V
-HSPLandroid/app/Activity;->onBackPressed()V
-HSPLandroid/app/Activity;->onContentChanged()V
 HSPLandroid/app/Activity;->onCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->onCreateDescription()Ljava/lang/CharSequence;
-HSPLandroid/app/Activity;->onCreateOptionsMenu(Landroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onCreatePanelMenu(ILandroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/app/Activity;->onCreateView(Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
@@ -508,203 +504,136 @@
 HSPLandroid/app/Activity;->onEnterAnimationComplete()V
 HSPLandroid/app/Activity;->onKeyDown(ILandroid/view/KeyEvent;)Z
 HSPLandroid/app/Activity;->onKeyUp(ILandroid/view/KeyEvent;)Z
-HSPLandroid/app/Activity;->onNewIntent(Landroid/content/Intent;)V
 HSPLandroid/app/Activity;->onPause()V
+HSPLandroid/app/Activity;->onPictureInPictureRequested()V
 HSPLandroid/app/Activity;->onPostCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->onPostResume()V
 HSPLandroid/app/Activity;->onPrepareOptionsMenu(Landroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onPreparePanel(ILandroid/view/View;Landroid/view/Menu;)Z
 HSPLandroid/app/Activity;->onProvideReferrer()Landroid/net/Uri;
 HSPLandroid/app/Activity;->onRestart()V
-HSPLandroid/app/Activity;->onRestoreInstanceState(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->onResume()V
 HSPLandroid/app/Activity;->onSaveInstanceState(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->onStart()V
-HSPLandroid/app/Activity;->onStateNotSaved()V
 HSPLandroid/app/Activity;->onStop()V
 HSPLandroid/app/Activity;->onTitleChanged(Ljava/lang/CharSequence;I)V
 HSPLandroid/app/Activity;->onTopResumedActivityChanged(Z)V
-HSPLandroid/app/Activity;->onTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/app/Activity;->onTrimMemory(I)V
 HSPLandroid/app/Activity;->onUserInteraction()V
 HSPLandroid/app/Activity;->onUserLeaveHint()V
 HSPLandroid/app/Activity;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/app/Activity;->onWindowFocusChanged(Z)V
-HSPLandroid/app/Activity;->overridePendingTransition(II)V
+HSPLandroid/app/Activity;->performCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->performCreate(Landroid/os/Bundle;Landroid/os/PersistableBundle;)V
 HSPLandroid/app/Activity;->performDestroy()V
 HSPLandroid/app/Activity;->performPause()V
 HSPLandroid/app/Activity;->performRestart(ZLjava/lang/String;)V
 HSPLandroid/app/Activity;->performResume(ZLjava/lang/String;)V
+HSPLandroid/app/Activity;->performSaveInstanceState(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->performStart(Ljava/lang/String;)V
 HSPLandroid/app/Activity;->performStop(ZLjava/lang/String;)V
-HSPLandroid/app/Activity;->reportFullyDrawn()V
-HSPLandroid/app/Activity;->requestWindowFeature(I)Z
-HSPLandroid/app/Activity;->restoreManagedDialogs(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->performTopResumedActivityChanged(ZLjava/lang/String;)V
+HSPLandroid/app/Activity;->performUserLeaving()V
+HSPLandroid/app/Activity;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
+HSPLandroid/app/Activity;->restoreHasCurrentPermissionRequest(Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->saveManagedDialogs(Landroid/os/Bundle;)V
-HSPLandroid/app/Activity;->setActionBar(Landroid/widget/Toolbar;)V
-HSPLandroid/app/Activity;->setContentView(I)V
-HSPLandroid/app/Activity;->setIntent(Landroid/content/Intent;)V
 HSPLandroid/app/Activity;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
 HSPLandroid/app/Activity;->setTheme(I)V
-HSPLandroid/app/Activity;->setTitle(I)V
-HSPLandroid/app/Activity;->setTitle(Ljava/lang/CharSequence;)V
 HSPLandroid/app/Activity;->startActivity(Landroid/content/Intent;)V
 HSPLandroid/app/Activity;->startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V
 HSPLandroid/app/Activity;->startActivityForResult(Landroid/content/Intent;I)V
 HSPLandroid/app/Activity;->startActivityForResult(Landroid/content/Intent;ILandroid/os/Bundle;)V
-HSPLandroid/app/ActivityManager$1;-><init>()V
+HSPLandroid/app/Activity;->storeHasCurrentPermissionRequest(Landroid/os/Bundle;)V
+HSPLandroid/app/Activity;->transferSpringboardActivityOptions(Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/app/ActivityManager$1;->create()Landroid/app/IActivityManager;
 HSPLandroid/app/ActivityManager$1;->create()Ljava/lang/Object;
-HSPLandroid/app/ActivityManager$AppTask;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
-HSPLandroid/app/ActivityManager$AppTask;->setExcludeFromRecents(Z)V
-HSPLandroid/app/ActivityManager$MemoryInfo$1;-><init>()V
 HSPLandroid/app/ActivityManager$MemoryInfo;-><init>()V
 HSPLandroid/app/ActivityManager$MemoryInfo;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/app/ActivityManager$MemoryInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$ProcessErrorStateInfo$1;-><init>()V
-HSPLandroid/app/ActivityManager$RecentTaskInfo$1;-><init>()V
-HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RecentTaskInfo;
-HSPLandroid/app/ActivityManager$RecentTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/app/ActivityManager$RecentTaskInfo;-><init>()V
-HPLandroid/app/ActivityManager$RecentTaskInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;-><init>()V
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningAppProcessInfo;
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo;-><init>()V
+HSPLandroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/ActivityManager$RunningAppProcessInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->importanceToProcState(I)I
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportance(I)I
+HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportanceForClient(ILandroid/content/Context;)I
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->procStateToImportanceForTargetSdk(II)I
 HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$RunningAppProcessInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$RunningServiceInfo$1;-><init>()V
-HSPLandroid/app/ActivityManager$RunningServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$RunningTaskInfo$1;-><init>()V
-HSPLandroid/app/ActivityManager$RunningTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningTaskInfo;
-HSPLandroid/app/ActivityManager$RunningTaskInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/ActivityManager$RunningTaskInfo;-><init>()V
-HSPLandroid/app/ActivityManager$RunningTaskInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$StackInfo$1;-><init>()V
-HSPLandroid/app/ActivityManager$StackInfo;-><init>()V
-HSPLandroid/app/ActivityManager$StackInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$TaskDescription$1;-><init>()V
+HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningServiceInfo;
+HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V
+HSPLandroid/app/ActivityManager$RunningServiceInfo;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/app/ActivityManager$TaskDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$TaskDescription;
 HSPLandroid/app/ActivityManager$TaskDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/ActivityManager$TaskDescription;-><init>()V
-HSPLandroid/app/ActivityManager$TaskDescription;-><init>(Landroid/app/ActivityManager$TaskDescription;)V
-HSPLandroid/app/ActivityManager$TaskDescription;-><init>(Ljava/lang/String;Landroid/graphics/Bitmap;I)V
-HSPLandroid/app/ActivityManager$TaskDescription;->copyFrom(Landroid/app/ActivityManager$TaskDescription;)V
-HSPLandroid/app/ActivityManager$TaskDescription;->copyFromPreserveHiddenFields(Landroid/app/ActivityManager$TaskDescription;)V
-HSPLandroid/app/ActivityManager$TaskDescription;->getBackgroundColor()I
-HSPLandroid/app/ActivityManager$TaskDescription;->getIcon()Landroid/graphics/Bitmap;
+HSPLandroid/app/ActivityManager$TaskDescription;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/ActivityManager$TaskDescription;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V
+HSPLandroid/app/ActivityManager$TaskDescription;-><init>(Ljava/lang/String;Landroid/graphics/Bitmap;ILjava/lang/String;IIIIZZIII)V
 HSPLandroid/app/ActivityManager$TaskDescription;->getIconFilename()Ljava/lang/String;
-HSPLandroid/app/ActivityManager$TaskDescription;->getIconResource()I
-HSPLandroid/app/ActivityManager$TaskDescription;->getLabel()Ljava/lang/String;
-HSPLandroid/app/ActivityManager$TaskDescription;->getNavigationBarColor()I
 HSPLandroid/app/ActivityManager$TaskDescription;->getPrimaryColor()I
-HSPLandroid/app/ActivityManager$TaskDescription;->getStatusBarColor()I
 HSPLandroid/app/ActivityManager$TaskDescription;->loadTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap;
 HSPLandroid/app/ActivityManager$TaskDescription;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$TaskDescription;->restoreFromXml(Ljava/lang/String;Ljava/lang/String;)V
-HPLandroid/app/ActivityManager$TaskDescription;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLandroid/app/ActivityManager$TaskDescription;->setBackgroundColor(I)V
-HSPLandroid/app/ActivityManager$TaskDescription;->setIcon(I)V
-HSPLandroid/app/ActivityManager$TaskDescription;->setIconFilename(Ljava/lang/String;)V
-HPLandroid/app/ActivityManager$TaskDescription;->setLabel(Ljava/lang/String;)V
+HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureNavigationBarContrastWhenTransparent(Z)V
+HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureStatusBarContrastWhenTransparent(Z)V
 HSPLandroid/app/ActivityManager$TaskDescription;->setNavigationBarColor(I)V
 HSPLandroid/app/ActivityManager$TaskDescription;->setPrimaryColor(I)V
 HSPLandroid/app/ActivityManager$TaskDescription;->setStatusBarColor(I)V
 HSPLandroid/app/ActivityManager$TaskDescription;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/ActivityManager$TaskSnapshot$1;-><init>()V
-HPLandroid/app/ActivityManager$TaskSnapshot;-><init>(Landroid/content/ComponentName;Landroid/graphics/GraphicBuffer;ILandroid/graphics/Rect;ZFZIIZ)V
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getColorSpace()Landroid/graphics/ColorSpace;
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getContentInsets()Landroid/graphics/Rect;
+HSPLandroid/app/ActivityManager$TaskSnapshot;->getId()J
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getOrientation()I
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getScale()F
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getSnapshot()Landroid/graphics/GraphicBuffer;
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getSystemUiVisibility()I
-PLandroid/app/ActivityManager$TaskSnapshot;->getTopActivityComponent()Landroid/content/ComponentName;
 HSPLandroid/app/ActivityManager$TaskSnapshot;->getWindowingMode()I
 HSPLandroid/app/ActivityManager$TaskSnapshot;->isRealSnapshot()Z
 HSPLandroid/app/ActivityManager$TaskSnapshot;->isReducedResolution()Z
 HSPLandroid/app/ActivityManager$TaskSnapshot;->isTranslucent()Z
-HPLandroid/app/ActivityManager$TaskSnapshot;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/ActivityManager$UidObserver;-><init>(Landroid/app/ActivityManager$OnUidImportanceListener;Landroid/content/Context;)V
 HSPLandroid/app/ActivityManager$UidObserver;->onUidGone(IZ)V
-HSPLandroid/app/ActivityManager$UidObserver;->onUidStateChanged(IIJ)V
+HSPLandroid/app/ActivityManager$UidObserver;->onUidStateChanged(IIJI)V
+HSPLandroid/app/ActivityManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLandroid/app/ActivityManager;->addOnUidImportanceListener(Landroid/app/ActivityManager$OnUidImportanceListener;I)V
-HSPLandroid/app/ActivityManager;->broadcastStickyIntent(Landroid/content/Intent;I)V
-HSPLandroid/app/ActivityManager;->broadcastStickyIntent(Landroid/content/Intent;II)V
-HSPLandroid/app/ActivityManager;->checkComponentPermission(Ljava/lang/String;IIZ)I
-HSPLandroid/app/ActivityManager;->checkUidPermission(Ljava/lang/String;I)I
-HSPLandroid/app/ActivityManager;->getAppTasks()Ljava/util/List;
 HSPLandroid/app/ActivityManager;->getCurrentUser()I
-HSPLandroid/app/ActivityManager;->getLargeMemoryClass()I
 HSPLandroid/app/ActivityManager;->getMemoryClass()I
 HSPLandroid/app/ActivityManager;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
 HSPLandroid/app/ActivityManager;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
-HSPLandroid/app/ActivityManager;->getPackageImportance(Ljava/lang/String;)I
 HSPLandroid/app/ActivityManager;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
 HSPLandroid/app/ActivityManager;->getRunningAppProcesses()Ljava/util/List;
+HSPLandroid/app/ActivityManager;->getRunningServices(I)Ljava/util/List;
 HSPLandroid/app/ActivityManager;->getService()Landroid/app/IActivityManager;
-HPLandroid/app/ActivityManager;->getUidImportance(I)I
-HSPLandroid/app/ActivityManager;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/ActivityManager;->getTaskService()Landroid/app/IActivityTaskManager;
 HSPLandroid/app/ActivityManager;->isHighEndGfx()Z
 HSPLandroid/app/ActivityManager;->isLowRamDevice()Z
 HSPLandroid/app/ActivityManager;->isLowRamDeviceStatic()Z
 HSPLandroid/app/ActivityManager;->isRunningInTestHarness()Z
-HSPLandroid/app/ActivityManager;->isSmallBatteryDevice()Z
-HPLandroid/app/ActivityManager;->isSystemReady()Z
+HSPLandroid/app/ActivityManager;->isStartResultFatalError(I)Z
 HSPLandroid/app/ActivityManager;->isUserAMonkey()Z
-HSPLandroid/app/ActivityManager;->isUserRunning(I)Z
-HSPLandroid/app/ActivityManager;->noteAlarmFinish(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
-HSPLandroid/app/ActivityManager;->noteAlarmStart(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;)V
-HSPLandroid/app/ActivityManager;->noteWakeupAlarm(Landroid/app/PendingIntent;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/ActivityManager;->processStateAmToProto(I)I
 HSPLandroid/app/ActivityManager;->staticGetMemoryClass()I
-HSPLandroid/app/ActivityOptions;-><init>(Landroid/os/Bundle;)V
-HPLandroid/app/ActivityOptions;->abort()V
-HSPLandroid/app/ActivityOptions;->abort(Landroid/app/ActivityOptions;)V
-HSPLandroid/app/ActivityOptions;->disallowEnterPictureInPictureWhileLaunching()Z
-HPLandroid/app/ActivityOptions;->freezeRecentTasksReordering()Z
+HSPLandroid/app/ActivityOptions;-><init>()V
 HSPLandroid/app/ActivityOptions;->fromBundle(Landroid/os/Bundle;)Landroid/app/ActivityOptions;
-HSPLandroid/app/ActivityOptions;->getAnimationType()I
-HSPLandroid/app/ActivityOptions;->getAvoidMoveToFront()Z
-HPLandroid/app/ActivityOptions;->getCustomEnterResId()I
-HPLandroid/app/ActivityOptions;->getCustomExitResId()I
-HPLandroid/app/ActivityOptions;->getLaunchActivityType()I
-HSPLandroid/app/ActivityOptions;->getLaunchBounds()Landroid/graphics/Rect;
-HSPLandroid/app/ActivityOptions;->getLaunchDisplayId()I
-HSPLandroid/app/ActivityOptions;->getLaunchTaskBehind()Z
-HSPLandroid/app/ActivityOptions;->getLaunchTaskId()I
-HSPLandroid/app/ActivityOptions;->getLaunchWindowingMode()I
-HSPLandroid/app/ActivityOptions;->getLockTaskMode()Z
-HPLandroid/app/ActivityOptions;->getOnAnimationStartListener()Landroid/os/IRemoteCallback;
-HPLandroid/app/ActivityOptions;->getPackageName()Ljava/lang/String;
-HPLandroid/app/ActivityOptions;->getPendingIntentLaunchFlags()I
-HSPLandroid/app/ActivityOptions;->getRemoteAnimationAdapter()Landroid/view/RemoteAnimationAdapter;
-HSPLandroid/app/ActivityOptions;->getRotationAnimationHint()I
-HSPLandroid/app/ActivityOptions;->getUsageTimeReport()Landroid/app/PendingIntent;
-HSPLandroid/app/ActivityOptions;->makeBasic()Landroid/app/ActivityOptions;
-HSPLandroid/app/ActivityOptions;->makeRemoteAnimation(Landroid/view/RemoteAnimationAdapter;)Landroid/app/ActivityOptions;
-HSPLandroid/app/ActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle;
-HSPLandroid/app/ActivityOptions;->setLaunchActivityType(I)V
-HSPLandroid/app/ActivityOptions;->setLaunchDisplayId(I)Landroid/app/ActivityOptions;
-HSPLandroid/app/ActivityOptions;->setLaunchWindowingMode(I)V
-HPLandroid/app/ActivityOptions;->setRemoteAnimationAdapter(Landroid/view/RemoteAnimationAdapter;)V
 HSPLandroid/app/ActivityOptions;->toBundle()Landroid/os/Bundle;
-HSPLandroid/app/ActivityTaskManager$1;-><init>()V
 HSPLandroid/app/ActivityTaskManager$1;->create()Landroid/app/IActivityTaskManager;
 HSPLandroid/app/ActivityTaskManager$1;->create()Ljava/lang/Object;
-HSPLandroid/app/ActivityTaskManager;->getDefaultAppRecentsLimitStatic()I
-HSPLandroid/app/ActivityTaskManager;->getMaxAppRecentsLimitStatic()I
-HSPLandroid/app/ActivityTaskManager;->getMaxRecentTasksStatic()I
 HSPLandroid/app/ActivityTaskManager;->getService()Landroid/app/IActivityTaskManager;
-HSPLandroid/app/ActivityTaskManager;->supportsMultiWindow(Landroid/content/Context;)Z
-HSPLandroid/app/ActivityTaskManager;->supportsSplitScreenMultiWindow(Landroid/content/Context;)Z
+HSPLandroid/app/ActivityThread$1;-><init>(Landroid/app/ActivityThread;)V
 HSPLandroid/app/ActivityThread$1;->run()V
-HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;)V
+HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->access$3700(Landroid/app/ActivityThread$ActivityClientRecord;)Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->access$3800(Landroid/app/ActivityThread$ActivityClientRecord;)Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->access$4000(Landroid/app/ActivityThread$ActivityClientRecord;)Landroid/content/res/Configuration;
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->access$4002(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/res/Configuration;)Landroid/content/res/Configuration;
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->getLifecycleState()I
 HSPLandroid/app/ActivityThread$ActivityClientRecord;->init()V
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPreHoneycomb()Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPreP()Z
+HSPLandroid/app/ActivityThread$ActivityClientRecord;->lambda$init$0$ActivityThread$ActivityClientRecord(Landroid/content/res/Configuration;I)V
 HSPLandroid/app/ActivityThread$ActivityClientRecord;->setState(I)V
+HSPLandroid/app/ActivityThread$AndroidOs;-><init>(Llibcore/io/Os;)V
 HSPLandroid/app/ActivityThread$AndroidOs;->access(Ljava/lang/String;I)Z
 HSPLandroid/app/ActivityThread$AndroidOs;->install()V
 HSPLandroid/app/ActivityThread$AndroidOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;
@@ -712,51 +641,80 @@
 HSPLandroid/app/ActivityThread$AndroidOs;->rename(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread$AndroidOs;->stat(Ljava/lang/String;)Landroid/system/StructStat;
 HSPLandroid/app/ActivityThread$AppBindData;-><init>()V
-HSPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;)V
+HSPLandroid/app/ActivityThread$ApplicationThread;-><init>(Landroid/app/ActivityThread;)V
+HSPLandroid/app/ActivityThread$ApplicationThread;-><init>(Landroid/app/ActivityThread;Landroid/app/ActivityThread$1;)V
+HSPLandroid/app/ActivityThread$ApplicationThread;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;[J)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->clearDnsCache()V
 HSPLandroid/app/ActivityThread$ApplicationThread;->dispatchPackageBroadcast(I[Ljava/lang/String;)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->dumpDbInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V
-HPLandroid/app/ActivityThread$ApplicationThread;->dumpGfxInfo(Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Landroid/os/ParcelFileDescriptor;Landroid/os/Debug$MemoryInfo;ZZZZZ[Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->dumpMemInfo(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZZ)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->dumpProvider(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V
-HPLandroid/app/ActivityThread$ApplicationThread;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V
+HSPLandroid/app/ActivityThread$ApplicationThread;->lambda$scheduleTrimMemory$0(Ljava/lang/Object;I)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;II)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V
-HPLandroid/app/ActivityThread$ApplicationThread;->scheduleLowMemory()V
+PLandroid/app/ActivityThread$ApplicationThread;->scheduleLowMemory()V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleSleeping(Landroid/os/IBinder;Z)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleStopService(Landroid/os/IBinder;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleTrimMemory(I)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->setCoreSettings(Landroid/os/Bundle;)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->setNetworkBlockSeq(J)V
 HSPLandroid/app/ActivityThread$ApplicationThread;->setProcessState(I)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->updatePendingConfiguration(Landroid/content/res/Configuration;)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->updateProcessState(IZ)V
-HSPLandroid/app/ActivityThread$ApplicationThread;->updateTimeZone()V
+HSPLandroid/app/ActivityThread$BindServiceData;-><init>()V
+HSPLandroid/app/ActivityThread$ContextCleanupInfo;-><init>()V
+HSPLandroid/app/ActivityThread$CreateBackupAgentData;-><init>()V
+HSPLandroid/app/ActivityThread$CreateServiceData;-><init>()V
 HSPLandroid/app/ActivityThread$CreateServiceData;->toString()Ljava/lang/String;
+HSPLandroid/app/ActivityThread$GcIdler;-><init>(Landroid/app/ActivityThread;)V
 HSPLandroid/app/ActivityThread$GcIdler;->queueIdle()Z
+HSPLandroid/app/ActivityThread$H;-><init>(Landroid/app/ActivityThread;)V
 HSPLandroid/app/ActivityThread$H;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/app/ActivityThread$Idler;-><init>(Landroid/app/ActivityThread;)V
+HSPLandroid/app/ActivityThread$Idler;-><init>(Landroid/app/ActivityThread;Landroid/app/ActivityThread$1;)V
 HSPLandroid/app/ActivityThread$Idler;->queueIdle()Z
+HSPLandroid/app/ActivityThread$Profiler;-><init>()V
+HSPLandroid/app/ActivityThread$ProviderClientRecord;-><init>(Landroid/app/ActivityThread;[Ljava/lang/String;Landroid/content/IContentProvider;Landroid/content/ContentProvider;Landroid/app/ContentProviderHolder;)V
+HSPLandroid/app/ActivityThread$ProviderKey;-><init>(Ljava/lang/String;I)V
 HSPLandroid/app/ActivityThread$ProviderKey;->equals(Ljava/lang/Object;)Z
 HSPLandroid/app/ActivityThread$ProviderKey;->hashCode()I
+HSPLandroid/app/ActivityThread$ProviderRefCount;-><init>(Landroid/app/ContentProviderHolder;Landroid/app/ActivityThread$ProviderClientRecord;II)V
+HSPLandroid/app/ActivityThread$PurgeIdler;-><init>(Landroid/app/ActivityThread;)V
 HSPLandroid/app/ActivityThread$PurgeIdler;->queueIdle()Z
+HSPLandroid/app/ActivityThread$ReceiverData;-><init>(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZLandroid/os/IBinder;I)V
+HSPLandroid/app/ActivityThread$ServiceArgsData;-><init>()V
 HSPLandroid/app/ActivityThread$ServiceArgsData;->toString()Ljava/lang/String;
 HSPLandroid/app/ActivityThread;-><init>()V
+HSPLandroid/app/ActivityThread;->access$100(Landroid/app/ActivityThread;ILjava/lang/Object;I)V
+HSPLandroid/app/ActivityThread;->access$1100(Landroid/app/ActivityThread;I)V
+HSPLandroid/app/ActivityThread;->access$1300(Landroid/app/ActivityThread;Landroid/app/ActivityThread$AppBindData;)V
+HSPLandroid/app/ActivityThread;->access$1400(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ReceiverData;)V
+HSPLandroid/app/ActivityThread;->access$1500(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateServiceData;)V
+HSPLandroid/app/ActivityThread;->access$1600(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V
+HSPLandroid/app/ActivityThread;->access$1700(Landroid/app/ActivityThread;Landroid/app/ActivityThread$BindServiceData;)V
+HSPLandroid/app/ActivityThread;->access$1800(Landroid/app/ActivityThread;Landroid/app/ActivityThread$ServiceArgsData;)V
+HSPLandroid/app/ActivityThread;->access$1900(Landroid/app/ActivityThread;Landroid/os/IBinder;)V
+HSPLandroid/app/ActivityThread;->access$2100(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateBackupAgentData;)V
+HSPLandroid/app/ActivityThread;->access$2200(Landroid/app/ActivityThread;Landroid/app/ActivityThread$CreateBackupAgentData;)V
+HSPLandroid/app/ActivityThread;->access$2500(Landroid/app/ActivityThread;Landroid/os/Bundle;)V
+HSPLandroid/app/ActivityThread;->access$2600(Landroid/app/ActivityThread;Landroid/os/Bundle;)V
+HSPLandroid/app/ActivityThread;->access$2700(Landroid/app/ActivityThread;Landroid/os/IBinder;)V
+HSPLandroid/app/ActivityThread;->access$2800(Landroid/app/ActivityThread;Landroid/os/IBinder;)V
+HSPLandroid/app/ActivityThread;->access$300(Landroid/app/ActivityThread;ILjava/lang/Object;I)V
+HSPLandroid/app/ActivityThread;->access$3200(Landroid/app/ActivityThread;)Landroid/app/servertransaction/TransactionExecutor;
+HSPLandroid/app/ActivityThread;->access$3300(Landroid/app/ActivityThread;)Landroid/app/servertransaction/TransactionExecutor;
+HSPLandroid/app/ActivityThread;->access$3400(Landroid/app/ActivityThread;)V
+HSPLandroid/app/ActivityThread;->access$3500(Landroid/app/ActivityThread;)V
+HSPLandroid/app/ActivityThread;->access$3600(Landroid/app/ActivityThread;)V
 HSPLandroid/app/ActivityThread;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;
 HSPLandroid/app/ActivityThread;->acquireProvider(Landroid/content/Context;Ljava/lang/String;IZ)Landroid/content/IContentProvider;
 HSPLandroid/app/ActivityThread;->applyCompatConfiguration(I)Landroid/content/res/Configuration;
-HSPLandroid/app/ActivityThread;->applyConfigurationToResources(Landroid/content/res/Configuration;)V
+HSPLandroid/app/ActivityThread;->applyConfigCompatMainThread(ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Configuration;
+HSPLandroid/app/ActivityThread;->applyPendingProcessState()V
 HSPLandroid/app/ActivityThread;->attach(ZJ)V
 HSPLandroid/app/ActivityThread;->callActivityOnSaveInstanceState(Landroid/app/ActivityThread$ActivityClientRecord;)V
 HSPLandroid/app/ActivityThread;->callActivityOnStop(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V
@@ -764,28 +722,39 @@
 HSPLandroid/app/ActivityThread;->cleanUpPendingRemoveWindows(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
 HSPLandroid/app/ActivityThread;->collectComponentCallbacks(ZLandroid/content/res/Configuration;)Ljava/util/ArrayList;
 HSPLandroid/app/ActivityThread;->completeRemoveProvider(Landroid/app/ActivityThread$ProviderRefCount;)V
+HSPLandroid/app/ActivityThread;->countLaunchingActivities(I)V
 HSPLandroid/app/ActivityThread;->createBaseContextForActivity(Landroid/app/ActivityThread$ActivityClientRecord;)Landroid/app/ContextImpl;
+HSPLandroid/app/ActivityThread;->createNewConfigAndUpdateIfNotNull(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration;
 HSPLandroid/app/ActivityThread;->currentActivityThread()Landroid/app/ActivityThread;
 HSPLandroid/app/ActivityThread;->currentApplication()Landroid/app/Application;
 HSPLandroid/app/ActivityThread;->currentOpPackageName()Ljava/lang/String;
 HSPLandroid/app/ActivityThread;->currentPackageName()Ljava/lang/String;
 HSPLandroid/app/ActivityThread;->currentProcessName()Ljava/lang/String;
-HSPLandroid/app/ActivityThread;->deliverNewIntents(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/util/List;)V
-HSPLandroid/app/ActivityThread;->dumpMemInfoTable(Ljava/io/PrintWriter;Landroid/os/Debug$MemoryInfo;ZZZZILjava/lang/String;JJJJJJ)V
+HSPLandroid/app/ActivityThread;->doGcIfNeeded()V
+HSPLandroid/app/ActivityThread;->doGcIfNeeded(Ljava/lang/String;)V
+HSPLandroid/app/ActivityThread;->freeTextLayoutCachesIfNeeded(I)V
 HSPLandroid/app/ActivityThread;->getActivitiesToBeDestroyed()Ljava/util/Map;
 HSPLandroid/app/ActivityThread;->getActivityClient(Landroid/os/IBinder;)Landroid/app/ActivityThread$ActivityClientRecord;
+HSPLandroid/app/ActivityThread;->getApplication()Landroid/app/Application;
+HSPLandroid/app/ActivityThread;->getApplicationThread()Landroid/app/ActivityThread$ApplicationThread;
+HSPLandroid/app/ActivityThread;->getBackupAgentsForUser(I)Landroid/util/ArrayMap;
+HSPLandroid/app/ActivityThread;->getExecutor()Ljava/util/concurrent/Executor;
 HSPLandroid/app/ActivityThread;->getGetProviderLock(Ljava/lang/String;I)Ljava/lang/Object;
+HSPLandroid/app/ActivityThread;->getHandler()Landroid/os/Handler;
+HSPLandroid/app/ActivityThread;->getInstrumentation()Landroid/app/Instrumentation;
 HSPLandroid/app/ActivityThread;->getIntCoreSetting(Ljava/lang/String;I)I
 HSPLandroid/app/ActivityThread;->getIntentBeingBroadcast()Landroid/content/Intent;
+HSPLandroid/app/ActivityThread;->getLooper()Landroid/os/Looper;
 HSPLandroid/app/ActivityThread;->getPackageInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)Landroid/app/LoadedApk;
 HSPLandroid/app/ActivityThread;->getPackageInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;ZZZ)Landroid/app/LoadedApk;
 HSPLandroid/app/ActivityThread;->getPackageInfo(Ljava/lang/String;Landroid/content/res/CompatibilityInfo;II)Landroid/app/LoadedApk;
 HSPLandroid/app/ActivityThread;->getPackageInfoNoCheck(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;)Landroid/app/LoadedApk;
 HSPLandroid/app/ActivityThread;->getPackageManager()Landroid/content/pm/IPackageManager;
+HSPLandroid/app/ActivityThread;->getPermissionManager()Landroid/permission/IPermissionManager;
 HSPLandroid/app/ActivityThread;->getSystemContext()Landroid/app/ContextImpl;
 HSPLandroid/app/ActivityThread;->getSystemUiContext()Landroid/app/ContextImpl;
+HSPLandroid/app/ActivityThread;->getTopLevelResources(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/app/LoadedApk;)Landroid/content/res/Resources;
 HSPLandroid/app/ActivityThread;->handleActivityConfigurationChanged(Landroid/os/IBinder;Landroid/content/res/Configuration;I)V
-HSPLandroid/app/ActivityThread;->handleApplicationInfoChanged(Landroid/content/pm/ApplicationInfo;)V
 HSPLandroid/app/ActivityThread;->handleBindApplication(Landroid/app/ActivityThread$AppBindData;)V
 HSPLandroid/app/ActivityThread;->handleBindService(Landroid/app/ActivityThread$BindServiceData;)V
 HSPLandroid/app/ActivityThread;->handleConfigurationChanged(Landroid/content/res/Configuration;)V
@@ -795,93 +764,98 @@
 HSPLandroid/app/ActivityThread;->handleDestroyActivity(Landroid/os/IBinder;ZIZLjava/lang/String;)V
 HSPLandroid/app/ActivityThread;->handleDestroyBackupAgent(Landroid/app/ActivityThread$CreateBackupAgentData;)V
 HSPLandroid/app/ActivityThread;->handleDispatchPackageBroadcast(I[Ljava/lang/String;)V
-HSPLandroid/app/ActivityThread;->handleDumpProvider(Landroid/app/ActivityThread$DumpComponentInfo;)V
-HPLandroid/app/ActivityThread;->handleDumpService(Landroid/app/ActivityThread$DumpComponentInfo;)V
+HSPLandroid/app/ActivityThread;->handleEnterAnimationComplete(Landroid/os/IBinder;)V
 HSPLandroid/app/ActivityThread;->handleInstallProvider(Landroid/content/pm/ProviderInfo;)V
 HSPLandroid/app/ActivityThread;->handleLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;Landroid/content/Intent;)Landroid/app/Activity;
 HPLandroid/app/ActivityThread;->handleLowMemory()V
-HSPLandroid/app/ActivityThread;->handleNewIntent(Landroid/os/IBinder;Ljava/util/List;Z)V
 HSPLandroid/app/ActivityThread;->handlePauseActivity(Landroid/os/IBinder;ZZILandroid/app/servertransaction/PendingTransactionActions;Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->handleReceiver(Landroid/app/ActivityThread$ReceiverData;)V
-HSPLandroid/app/ActivityThread;->handleRequestAssistContextExtras(Landroid/app/ActivityThread$RequestAssistContextExtras;)V
 HSPLandroid/app/ActivityThread;->handleResumeActivity(Landroid/os/IBinder;ZZLjava/lang/String;)V
 HSPLandroid/app/ActivityThread;->handleServiceArgs(Landroid/app/ActivityThread$ServiceArgsData;)V
 HSPLandroid/app/ActivityThread;->handleSetCoreSettings(Landroid/os/Bundle;)V
-HSPLandroid/app/ActivityThread;->handleSleeping(Landroid/os/IBinder;Z)V
-HSPLandroid/app/ActivityThread;->handleStartActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/ActivityThread;->handleStopActivity(Landroid/os/IBinder;ZILandroid/app/servertransaction/PendingTransactionActions;ZLjava/lang/String;)V
+HSPLandroid/app/ActivityThread;->handleStartActivity(Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
+HSPLandroid/app/ActivityThread;->handleStopActivity(Landroid/os/IBinder;ILandroid/app/servertransaction/PendingTransactionActions;ZLjava/lang/String;)V
 HSPLandroid/app/ActivityThread;->handleStopService(Landroid/os/IBinder;)V
 HSPLandroid/app/ActivityThread;->handleTopResumedActivityChanged(Landroid/os/IBinder;ZLjava/lang/String;)V
 HSPLandroid/app/ActivityThread;->handleTrimMemory(I)V
 HSPLandroid/app/ActivityThread;->handleUnbindService(Landroid/app/ActivityThread$BindServiceData;)V
-HSPLandroid/app/ActivityThread;->handleWindowVisibility(Landroid/os/IBinder;Z)V
 HSPLandroid/app/ActivityThread;->incProviderRefLocked(Landroid/app/ActivityThread$ProviderRefCount;Z)V
+HSPLandroid/app/ActivityThread;->initializeMainlineModules()V
 HSPLandroid/app/ActivityThread;->installContentProviders(Landroid/content/Context;Ljava/util/List;)V
 HSPLandroid/app/ActivityThread;->installProvider(Landroid/content/Context;Landroid/app/ContentProviderHolder;Landroid/content/pm/ProviderInfo;ZZZ)Landroid/app/ContentProviderHolder;
 HSPLandroid/app/ActivityThread;->installProviderAuthoritiesLocked(Landroid/content/IContentProvider;Landroid/content/ContentProvider;Landroid/app/ContentProviderHolder;)Landroid/app/ActivityThread$ProviderClientRecord;
-HSPLandroid/app/ActivityThread;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)V
-HSPLandroid/app/ActivityThread;->installSystemProviders(Ljava/util/List;)V
-HSPLandroid/app/ActivityThread;->lambda$attach$0$ActivityThread(Landroid/content/res/Configuration;)V
+HSPLandroid/app/ActivityThread;->isLoadedApkResourceDirsUpToDate(Landroid/app/LoadedApk;Landroid/content/pm/ApplicationInfo;)Z
+HSPLandroid/app/ActivityThread;->isSystem()Z
+HSPLandroid/app/ActivityThread;->lambda$A4ykhsPb8qV3ffTqpQDklHSMDJ0(Landroid/app/ActivityThread;)V
+HSPLandroid/app/ActivityThread;->lambda$attach$1$ActivityThread(Landroid/content/res/Configuration;)V
 HSPLandroid/app/ActivityThread;->main([Ljava/lang/String;)V
+HSPLandroid/app/ActivityThread;->onCoreSettingsChange()V
 HSPLandroid/app/ActivityThread;->peekPackageInfo(Ljava/lang/String;Z)Landroid/app/LoadedApk;
 HSPLandroid/app/ActivityThread;->performActivityConfigurationChanged(Landroid/app/Activity;Landroid/content/res/Configuration;Landroid/content/res/Configuration;IZ)Landroid/content/res/Configuration;
+HSPLandroid/app/ActivityThread;->performConfigurationChanged(Landroid/content/ComponentCallbacks2;Landroid/content/res/Configuration;)V
 HSPLandroid/app/ActivityThread;->performConfigurationChangedForActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/res/Configuration;IZ)Landroid/content/res/Configuration;
 HSPLandroid/app/ActivityThread;->performDestroyActivity(Landroid/os/IBinder;ZIZLjava/lang/String;)Landroid/app/ActivityThread$ActivityClientRecord;
 HSPLandroid/app/ActivityThread;->performLaunchActivity(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/content/Intent;)Landroid/app/Activity;
-HSPLandroid/app/ActivityThread;->performNewIntents(Landroid/os/IBinder;Ljava/util/List;Z)V
 HSPLandroid/app/ActivityThread;->performPauseActivity(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;Landroid/app/servertransaction/PendingTransactionActions;)Landroid/os/Bundle;
 HSPLandroid/app/ActivityThread;->performPauseActivityIfNeeded(Landroid/app/ActivityThread$ActivityClientRecord;Ljava/lang/String;)V
 HSPLandroid/app/ActivityThread;->performRestartActivity(Landroid/os/IBinder;Z)V
 HSPLandroid/app/ActivityThread;->performResumeActivity(Landroid/os/IBinder;ZLjava/lang/String;)Landroid/app/ActivityThread$ActivityClientRecord;
-HSPLandroid/app/ActivityThread;->performStopActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions$StopInfo;ZZZLjava/lang/String;)V
-HSPLandroid/app/ActivityThread;->printRow(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/app/ActivityThread;->relaunchAllActivities()V
+HSPLandroid/app/ActivityThread;->performStopActivityInner(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/app/servertransaction/PendingTransactionActions$StopInfo;ZZLjava/lang/String;)V
+HSPLandroid/app/ActivityThread;->performUserLeavingActivity(Landroid/app/ActivityThread$ActivityClientRecord;)V
+HSPLandroid/app/ActivityThread;->purgePendingResources()V
 HSPLandroid/app/ActivityThread;->releaseProvider(Landroid/content/IContentProvider;Z)Z
 HSPLandroid/app/ActivityThread;->reportSizeConfigurations(Landroid/app/ActivityThread$ActivityClientRecord;)V
 HSPLandroid/app/ActivityThread;->reportStop(Landroid/app/servertransaction/PendingTransactionActions;)V
+HSPLandroid/app/ActivityThread;->reportTopResumedActivityChanged(Landroid/app/ActivityThread$ActivityClientRecord;ZLjava/lang/String;)V
+HSPLandroid/app/ActivityThread;->scheduleContextCleanup(Landroid/app/ContextImpl;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/ActivityThread;->scheduleGcIdler()V
+HSPLandroid/app/ActivityThread;->schedulePauseAndReturnToCurrentState(Landroid/os/IBinder;)V
+HSPLandroid/app/ActivityThread;->schedulePurgeIdler()V
 HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;)V
+HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;I)V
 HSPLandroid/app/ActivityThread;->sendMessage(ILjava/lang/Object;IIZ)V
 HSPLandroid/app/ActivityThread;->setupGraphicsSupport(Landroid/content/Context;)V
-HSPLandroid/app/ActivityThread;->systemMain()Landroid/app/ActivityThread;
+HSPLandroid/app/ActivityThread;->unscheduleGcIdler()V
 HSPLandroid/app/ActivityThread;->updateDebugViewAttributeState()Z
 HSPLandroid/app/ActivityThread;->updateDefaultDensity()V
 HSPLandroid/app/ActivityThread;->updateLocaleListFromAppContext(Landroid/content/Context;Landroid/os/LocaleList;)V
 HSPLandroid/app/ActivityThread;->updatePendingConfiguration(Landroid/content/res/Configuration;)V
 HSPLandroid/app/ActivityThread;->updateProcessState(IZ)V
 HSPLandroid/app/ActivityThread;->updateVisibility(Landroid/app/ActivityThread$ActivityClientRecord;Z)V
+HSPLandroid/app/ActivityThread;->updateVmProcessState(I)V
+HSPLandroid/app/ActivityTransitionState;-><init>()V
 HSPLandroid/app/ActivityTransitionState;->enterReady(Landroid/app/Activity;)V
+HSPLandroid/app/ActivityTransitionState;->getPendingExitNames()Ljava/util/ArrayList;
 HSPLandroid/app/ActivityTransitionState;->onResume(Landroid/app/Activity;)V
 HSPLandroid/app/ActivityTransitionState;->onStop()V
 HSPLandroid/app/ActivityTransitionState;->readState(Landroid/os/Bundle;)V
+HSPLandroid/app/ActivityTransitionState;->restoreExitedViews()V
+HSPLandroid/app/ActivityTransitionState;->restoreReenteringViews()V
 HSPLandroid/app/ActivityTransitionState;->saveState(Landroid/os/Bundle;)V
 HSPLandroid/app/ActivityTransitionState;->setEnterActivityOptions(Landroid/app/Activity;Landroid/app/ActivityOptions;)V
-HSPLandroid/app/ActivityTransitionState;->startExitBackTransition(Landroid/app/Activity;)Z
-HSPLandroid/app/AlarmManager$AlarmClockInfo$1;-><init>()V
-HSPLandroid/app/AlarmManager$AlarmClockInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AlarmManager$AlarmClockInfo;
-HSPLandroid/app/AlarmManager$AlarmClockInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/AlarmManager$AlarmClockInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/AlarmManager$ListenerWrapper;-><init>(Landroid/app/AlarmManager;Landroid/app/AlarmManager$OnAlarmListener;)V
 HSPLandroid/app/AlarmManager$ListenerWrapper;->cancel()V
 HSPLandroid/app/AlarmManager$ListenerWrapper;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
 HSPLandroid/app/AlarmManager$ListenerWrapper;->run()V
+HSPLandroid/app/AlarmManager$ListenerWrapper;->setHandler(Landroid/os/Handler;)V
 HSPLandroid/app/AlarmManager;-><init>(Landroid/app/IAlarmManager;Landroid/content/Context;)V
+HSPLandroid/app/AlarmManager;->access$000(Landroid/app/AlarmManager;)Landroid/app/IAlarmManager;
+HSPLandroid/app/AlarmManager;->access$100()Landroid/util/ArrayMap;
 HSPLandroid/app/AlarmManager;->cancel(Landroid/app/AlarmManager$OnAlarmListener;)V
 HSPLandroid/app/AlarmManager;->cancel(Landroid/app/PendingIntent;)V
 HSPLandroid/app/AlarmManager;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
-HPLandroid/app/AlarmManager;->getNextWakeFromIdleTime()J
-HSPLandroid/app/AlarmManager;->set(IJJJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V
+HSPLandroid/app/AlarmManager;->legacyExactLength()J
 HSPLandroid/app/AlarmManager;->set(IJLandroid/app/PendingIntent;)V
 HSPLandroid/app/AlarmManager;->set(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
 HSPLandroid/app/AlarmManager;->setExact(IJLandroid/app/PendingIntent;)V
 HSPLandroid/app/AlarmManager;->setExact(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
 HSPLandroid/app/AlarmManager;->setExactAndAllowWhileIdle(IJLandroid/app/PendingIntent;)V
-HPLandroid/app/AlarmManager;->setIdleUntil(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
 HSPLandroid/app/AlarmManager;->setImpl(IJJJILandroid/app/PendingIntent;Landroid/app/AlarmManager$OnAlarmListener;Ljava/lang/String;Landroid/os/Handler;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
 HSPLandroid/app/AlarmManager;->setInexactRepeating(IJJLandroid/app/PendingIntent;)V
-HSPLandroid/app/AlarmManager;->setTime(J)V
-HSPLandroid/app/AlarmManager;->setTimeZone(Ljava/lang/String;)V
-HSPLandroid/app/AlarmManager;->setWindow(IJJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;)V
-HSPLandroid/app/AlertDialog;->resolveDialogTheme(Landroid/content/Context;I)I
+HSPLandroid/app/AppCompatCallbacks;-><init>([J)V
+HSPLandroid/app/AppCompatCallbacks;->install([J)V
+HSPLandroid/app/AppCompatCallbacks;->isChangeEnabled(J)Z
+HSPLandroid/app/AppCompatCallbacks;->reportChange(JI)V
 HSPLandroid/app/AppComponentFactory;-><init>()V
 HSPLandroid/app/AppComponentFactory;->instantiateActivity(Ljava/lang/ClassLoader;Ljava/lang/String;Landroid/content/Intent;)Landroid/app/Activity;
 HSPLandroid/app/AppComponentFactory;->instantiateApplication(Ljava/lang/ClassLoader;Ljava/lang/String;)Landroid/app/Application;
@@ -892,90 +866,32 @@
 HSPLandroid/app/AppGlobals;->getInitialApplication()Landroid/app/Application;
 HSPLandroid/app/AppGlobals;->getIntCoreSetting(Ljava/lang/String;I)I
 HSPLandroid/app/AppGlobals;->getPackageManager()Landroid/content/pm/IPackageManager;
-HSPLandroid/app/AppOpsManager$2;->opChanged(IILjava/lang/String;)V
-HSPLandroid/app/AppOpsManager$HistoricalOp$1;-><init>()V
-HSPLandroid/app/AppOpsManager$HistoricalOp;->collectKeys()Landroid/util/LongSparseArray;
-HSPLandroid/app/AppOpsManager$HistoricalOp;->getAccessCount(III)J
-HSPLandroid/app/AppOpsManager$HistoricalOp;->getAccessDuration(III)J
-HSPLandroid/app/AppOpsManager$HistoricalOp;->getRejectCount(III)J
-HSPLandroid/app/AppOpsManager$HistoricalOp;->merge(Ljava/util/function/Supplier;Landroid/util/LongSparseLongArray;)V
-HPLandroid/app/AppOpsManager$HistoricalOp;->splice(D)Landroid/app/AppOpsManager$HistoricalOp;
-HPLandroid/app/AppOpsManager$HistoricalOp;->splice(Landroid/util/LongSparseLongArray;Ljava/util/function/Supplier;D)V
-HSPLandroid/app/AppOpsManager$HistoricalOps$1;-><init>()V
-HSPLandroid/app/AppOpsManager$HistoricalOps;-><init>(JJ)V
-HSPLandroid/app/AppOpsManager$HistoricalOps;->getOrCreateHistoricalUidOps(I)Landroid/app/AppOpsManager$HistoricalUidOps;
-HSPLandroid/app/AppOpsManager$HistoricalOps;->getUidCount()I
-HSPLandroid/app/AppOpsManager$HistoricalOps;->getUidOpsAt(I)Landroid/app/AppOpsManager$HistoricalUidOps;
-HSPLandroid/app/AppOpsManager$HistoricalOps;->increaseAccessCount(IILjava/lang/String;IIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalOps;->increaseAccessDuration(IILjava/lang/String;IIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalOps;->increaseRejectCount(IILjava/lang/String;IIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalOps;->isEmpty()Z
-HSPLandroid/app/AppOpsManager$HistoricalOps;->merge(Landroid/app/AppOpsManager$HistoricalOps;)V
-HSPLandroid/app/AppOpsManager$HistoricalOps;->round(D)D
-HPLandroid/app/AppOpsManager$HistoricalOps;->splice(DZ)Landroid/app/AppOpsManager$HistoricalOps;
-HPLandroid/app/AppOpsManager$HistoricalOps;->spliceFromEnd(D)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps$1;-><init>()V
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->access$2700(Landroid/app/AppOpsManager$HistoricalPackageOps;IIIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->access$2800(Landroid/app/AppOpsManager$HistoricalPackageOps;IIIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->access$2900(Landroid/app/AppOpsManager$HistoricalPackageOps;IIIJ)V
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->getOpAt(I)Landroid/app/AppOpsManager$HistoricalOp;
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->getOrCreateHistoricalOp(I)Landroid/app/AppOpsManager$HistoricalOp;
-HSPLandroid/app/AppOpsManager$HistoricalPackageOps;->merge(Landroid/app/AppOpsManager$HistoricalPackageOps;)V
-HPLandroid/app/AppOpsManager$HistoricalPackageOps;->splice(D)Landroid/app/AppOpsManager$HistoricalPackageOps;
-HSPLandroid/app/AppOpsManager$HistoricalUidOps$1;-><init>()V
-HSPLandroid/app/AppOpsManager$HistoricalUidOps;->getOrCreateHistoricalPackageOps(Ljava/lang/String;)Landroid/app/AppOpsManager$HistoricalPackageOps;
-HSPLandroid/app/AppOpsManager$HistoricalUidOps;->getPackageOpsAt(I)Landroid/app/AppOpsManager$HistoricalPackageOps;
-HSPLandroid/app/AppOpsManager$HistoricalUidOps;->merge(Landroid/app/AppOpsManager$HistoricalUidOps;)V
-HPLandroid/app/AppOpsManager$HistoricalUidOps;->splice(D)Landroid/app/AppOpsManager$HistoricalUidOps;
-HSPLandroid/app/AppOpsManager$OnOpChangedInternalListener;->onOpChanged(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/AppOpsManager$OpEntry$1;-><init>()V
-HPLandroid/app/AppOpsManager$OpEntry;->collectKeys()Landroid/util/LongSparseArray;
-HPLandroid/app/AppOpsManager$OpEntry;->getLastAccessTime(III)J
-HPLandroid/app/AppOpsManager$OpEntry;->getLastDuration(III)J
-HPLandroid/app/AppOpsManager$OpEntry;->getLastRejectTime(III)J
-HPLandroid/app/AppOpsManager$OpEntry;->getProxyPackageName(II)Ljava/lang/String;
-HPLandroid/app/AppOpsManager$OpEntry;->getProxyUid(II)I
-HSPLandroid/app/AppOpsManager$OpEntry;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/AppOpsManager$PackageOps$1;-><init>()V
-HSPLandroid/app/AppOpsManager$PackageOps;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/app/AppOpsManager;->checkAudioOpNoThrow(IIILjava/lang/String;)I
+HSPLandroid/app/AppOpsManager$PackageOps;->getOps()Ljava/util/List;
+HSPLandroid/app/AppOpsManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IAppOpsService;)V
+HSPLandroid/app/AppOpsManager;->access$200()[Ljava/lang/String;
 HSPLandroid/app/AppOpsManager;->checkOp(IILjava/lang/String;)I
 HSPLandroid/app/AppOpsManager;->checkOpNoThrow(IILjava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
 HSPLandroid/app/AppOpsManager;->checkPackage(ILjava/lang/String;)V
-HPLandroid/app/AppOpsManager;->findFirstNonNegativeForFlagsInStates(Landroid/util/LongSparseLongArray;III)J
-HPLandroid/app/AppOpsManager;->findFirstNonNullForFlagsInStates(Landroid/util/LongSparseArray;III)Ljava/lang/String;
-HSPLandroid/app/AppOpsManager;->finishOp(IILjava/lang/String;)V
+HSPLandroid/app/AppOpsManager;->collectNotedOpForSelf(ILjava/lang/String;)V
+HSPLandroid/app/AppOpsManager;->getFormattedStackTrace()Ljava/lang/String;
+HSPLandroid/app/AppOpsManager;->getNotedOpCollectionMode(ILjava/lang/String;I)I
 HSPLandroid/app/AppOpsManager;->getPackagesForOps([I)Ljava/util/List;
-HSPLandroid/app/AppOpsManager;->getSystemAlertWindowDefault()I
-HSPLandroid/app/AppOpsManager;->getToken(Lcom/android/internal/app/IAppOpsService;)Landroid/os/IBinder;
-HPLandroid/app/AppOpsManager;->isOperationActive(IILjava/lang/String;)Z
-HSPLandroid/app/AppOpsManager;->logOperationIfNeeded(ILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/AppOpsManager;->maxForFlagsInStates(Landroid/util/LongSparseLongArray;III)J
-HSPLandroid/app/AppOpsManager;->noteOp(IILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteOp(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteOpNoThrow(IILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteProxyOp(ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(ILjava/lang/String;I)I
-HSPLandroid/app/AppOpsManager;->opToDefaultMode(I)I
-HSPLandroid/app/AppOpsManager;->opToRestriction(I)Ljava/lang/String;
-HSPLandroid/app/AppOpsManager;->opToSwitch(I)I
+HSPLandroid/app/AppOpsManager;->isCollectingNotedAppOps()Z
+HSPLandroid/app/AppOpsManager;->noteOp(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->noteOp(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->noteOpNoThrow(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->noteOpNoThrow(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->noteProxyOp(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->pauseNotedAppOpsCollection()Landroid/app/AppOpsManager$PausedNotedAppOpsCollection;
 HSPLandroid/app/AppOpsManager;->permissionToOp(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/app/AppOpsManager;->permissionToOpCode(Ljava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->setMode(IILjava/lang/String;I)V
-HSPLandroid/app/AppOpsManager;->setRestriction(III[Ljava/lang/String;)V
-HSPLandroid/app/AppOpsManager;->setUidMode(III)V
-HSPLandroid/app/AppOpsManager;->setUidMode(Ljava/lang/String;II)V
-HSPLandroid/app/AppOpsManager;->startOpNoThrow(IILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->startOpNoThrow(IILjava/lang/String;Z)I
-HSPLandroid/app/AppOpsManager;->startWatchingMode(ILjava/lang/String;ILandroid/app/AppOpsManager$OnOpChangedListener;)V
-HSPLandroid/app/AppOpsManager;->startWatchingMode(ILjava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V
+HSPLandroid/app/AppOpsManager;->prefixParcelWithAppOpsIfNeeded(Landroid/os/Parcel;)V
+HSPLandroid/app/AppOpsManager;->resumeNotedAppOpsCollection(Landroid/app/AppOpsManager$PausedNotedAppOpsCollection;)V
 HSPLandroid/app/AppOpsManager;->strOpToOp(Ljava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->sumForFlagsInStates(Landroid/util/LongSparseLongArray;III)J
-HPLandroid/app/AppOpsManager;->unsafeCheckOp(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->writeLongSparseLongArrayToParcel(Landroid/util/LongSparseLongArray;Landroid/os/Parcel;)V
-HSPLandroid/app/AppOpsManager;->writeLongSparseStringArrayToParcel(Landroid/util/LongSparseArray;Landroid/os/Parcel;)V
+HSPLandroid/app/AppOpsManager;->unsafeCheckOp(Ljava/lang/String;ILjava/lang/String;)I
+HSPLandroid/app/AppOpsManager;->unsafeCheckOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
 HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPostCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPostDestroyed(Landroid/app/Activity;)V
 HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPostPaused(Landroid/app/Activity;)V
@@ -991,6 +907,7 @@
 HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPreStarted(Landroid/app/Activity;)V
 HSPLandroid/app/Application$ActivityLifecycleCallbacks;->onActivityPreStopped(Landroid/app/Activity;)V
 HSPLandroid/app/Application;-><init>()V
+HSPLandroid/app/Application;->attach(Landroid/content/Context;)V
 HSPLandroid/app/Application;->collectActivityLifecycleCallbacks()[Ljava/lang/Object;
 HSPLandroid/app/Application;->collectComponentCallbacks()[Ljava/lang/Object;
 HSPLandroid/app/Application;->dispatchActivityCreated(Landroid/app/Activity;Landroid/os/Bundle;)V
@@ -1014,92 +931,90 @@
 HSPLandroid/app/Application;->dispatchActivitySaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Application;->dispatchActivityStarted(Landroid/app/Activity;)V
 HSPLandroid/app/Application;->dispatchActivityStopped(Landroid/app/Activity;)V
-HSPLandroid/app/Application;->getAutofillClient()Landroid/view/autofill/AutofillManager$AutofillClient;
+HSPLandroid/app/Application;->getProcessName()Ljava/lang/String;
 HSPLandroid/app/Application;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/app/Application;->onCreate()V
-HPLandroid/app/Application;->onLowMemory()V
+HSPLandroid/app/Application;->onLowMemory()V
 HSPLandroid/app/Application;->onTrimMemory(I)V
 HSPLandroid/app/Application;->registerActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
 HSPLandroid/app/Application;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V
 HSPLandroid/app/Application;->unregisterActivityLifecycleCallbacks(Landroid/app/Application$ActivityLifecycleCallbacks;)V
 HSPLandroid/app/Application;->unregisterComponentCallbacks(Landroid/content/ComponentCallbacks;)V
-HSPLandroid/app/ApplicationErrorReport$1;-><init>()V
-HSPLandroid/app/ApplicationErrorReport$CrashInfo;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/ApplicationErrorReport$CrashInfo;-><init>(Ljava/lang/Throwable;)V
 HSPLandroid/app/ApplicationErrorReport$CrashInfo;->sanitizeString(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo$1;-><init>()V
-HSPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;
-HSPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/ApplicationErrorReport$CrashInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;-><init>(Ljava/lang/Throwable;)V
-HSPLandroid/app/ApplicationErrorReport;->getErrorReportReceiver(Landroid/content/Context;Ljava/lang/String;I)Landroid/content/ComponentName;
-HSPLandroid/app/ApplicationErrorReport;->getErrorReportReceiver(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
-HSPLandroid/app/ApplicationLoaders;-><init>()V
+HSPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>()V
+HSPLandroid/app/ApplicationLoaders$CachedClassLoader;-><init>(Landroid/app/ApplicationLoaders$1;)V
 HSPLandroid/app/ApplicationLoaders;->addNative(Ljava/lang/ClassLoader;Ljava/util/Collection;)V
+HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoader(Landroid/content/pm/SharedLibraryInfo;)V
+HSPLandroid/app/ApplicationLoaders;->createAndCacheNonBootclasspathSystemClassLoaders([Landroid/content/pm/SharedLibraryInfo;)V
+HSPLandroid/app/ApplicationLoaders;->getCachedNonBootclasspathSystemLib(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
 HSPLandroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Ljava/lang/ClassLoader;
 HSPLandroid/app/ApplicationLoaders;->getClassLoader(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
 HSPLandroid/app/ApplicationLoaders;->getClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
-HSPLandroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->handleMessage(Landroid/os/Message;)Z
-HSPLandroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;->onPermissionsChanged(I)V
+HSPLandroid/app/ApplicationLoaders;->getDefault()Landroid/app/ApplicationLoaders;
+HSPLandroid/app/ApplicationLoaders;->getSharedLibraryClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
+HSPLandroid/app/ApplicationLoaders;->sharedLibrariesEquals(Ljava/util/List;Ljava/util/List;)Z
+HSPLandroid/app/ApplicationPackageManager$1;-><init>(Landroid/app/ApplicationPackageManager;ILjava/lang/String;)V
+HSPLandroid/app/ApplicationPackageManager$1;->recompute(Landroid/app/ApplicationPackageManager$HasSystemFeatureQuery;)Ljava/lang/Boolean;
+HSPLandroid/app/ApplicationPackageManager$1;->recompute(Landroid/app/ApplicationPackageManager$SystemFeatureQuery;)Ljava/lang/Boolean;
+HSPLandroid/app/ApplicationPackageManager$1;->recompute(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;-><init>(Landroid/app/ApplicationPackageManager;Ljava/lang/String;I)V
+HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;->equals(Ljava/lang/Object;)Z
+HSPLandroid/app/ApplicationPackageManager$HasSystemFeatureQuery;->hashCode()I
+HSPLandroid/app/ApplicationPackageManager$ResourceName;-><init>(Ljava/lang/String;I)V
 HSPLandroid/app/ApplicationPackageManager$ResourceName;->equals(Ljava/lang/Object;)Z
 HSPLandroid/app/ApplicationPackageManager$ResourceName;->hashCode()I
-HSPLandroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;)V
-HSPLandroid/app/ApplicationPackageManager;->addOnPermissionsChangeListener(Landroid/content/pm/PackageManager$OnPermissionsChangedListener;)V
-HSPLandroid/app/ApplicationPackageManager;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;
+HSPLandroid/app/ApplicationPackageManager$SystemFeatureQuery;-><init>(Landroid/app/ApplicationPackageManager;Ljava/lang/String;I)V
+HSPLandroid/app/ApplicationPackageManager$SystemFeatureQuery;->equals(Ljava/lang/Object;)Z
+HSPLandroid/app/ApplicationPackageManager$SystemFeatureQuery;->hashCode()I
+HSPLandroid/app/ApplicationPackageManager;-><init>(Landroid/app/ContextImpl;Landroid/content/pm/IPackageManager;Landroid/permission/IPermissionManager;)V
+HSPLandroid/app/ApplicationPackageManager;->access$000(Landroid/app/ApplicationPackageManager;Ljava/lang/String;I)Z
 HSPLandroid/app/ApplicationPackageManager;->checkPermission(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/app/ApplicationPackageManager;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/app/ApplicationPackageManager;->configurationChanged()V
 HSPLandroid/app/ApplicationPackageManager;->getActivityInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
-HSPLandroid/app/ApplicationPackageManager;->getApplicationIcon(Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/app/ApplicationPackageManager;->getApplicationEnabledSetting(Ljava/lang/String;)I
 HSPLandroid/app/ApplicationPackageManager;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/app/ApplicationPackageManager;->getApplicationInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/app/ApplicationPackageManager;->getApplicationLabel(Landroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;
 HSPLandroid/app/ApplicationPackageManager;->getCachedIcon(Landroid/app/ApplicationPackageManager$ResourceName;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/app/ApplicationPackageManager;->getCachedString(Landroid/app/ApplicationPackageManager$ResourceName;)Ljava/lang/CharSequence;
 HSPLandroid/app/ApplicationPackageManager;->getComponentEnabledSetting(Landroid/content/ComponentName;)I
-HSPLandroid/app/ApplicationPackageManager;->getDefaultActivityIcon()Landroid/graphics/drawable/Drawable;
 HSPLandroid/app/ApplicationPackageManager;->getDrawable(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/app/ApplicationPackageManager;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledApplications(I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledApplicationsAsUser(II)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->getInstalledModules(I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackages(I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstalledPackagesAsUser(II)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName;
 HSPLandroid/app/ApplicationPackageManager;->getLaunchIntentForPackage(Ljava/lang/String;)Landroid/content/Intent;
-HSPLandroid/app/ApplicationPackageManager;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
 HSPLandroid/app/ApplicationPackageManager;->getNameForUid(I)Ljava/lang/String;
 HSPLandroid/app/ApplicationPackageManager;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
 HSPLandroid/app/ApplicationPackageManager;->getPackageInfoAsUser(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
 HSPLandroid/app/ApplicationPackageManager;->getPackageInstaller()Landroid/content/pm/PackageInstaller;
 HSPLandroid/app/ApplicationPackageManager;->getPackageUid(Ljava/lang/String;I)I
-HSPLandroid/app/ApplicationPackageManager;->getPackageUidAsUser(Ljava/lang/String;I)I
 HSPLandroid/app/ApplicationPackageManager;->getPackageUidAsUser(Ljava/lang/String;II)I
 HSPLandroid/app/ApplicationPackageManager;->getPackagesForUid(I)[Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getPackagesHoldingPermissions([Ljava/lang/String;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->getPermissionControllerPackageName()Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)I
 HSPLandroid/app/ApplicationPackageManager;->getPermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
-HPLandroid/app/ApplicationPackageManager;->getPrimaryStorageCurrentVolume()Landroid/os/storage/VolumeInfo;
 HSPLandroid/app/ApplicationPackageManager;->getReceiverInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
 HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/Resources;
 HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplication(Ljava/lang/String;)Landroid/content/res/Resources;
-HSPLandroid/app/ApplicationPackageManager;->getResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
 HSPLandroid/app/ApplicationPackageManager;->getServiceInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
-HSPLandroid/app/ApplicationPackageManager;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getSystemSharedLibraryNames()[Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getSystemTextClassifierPackageName()Ljava/lang/String;
 HSPLandroid/app/ApplicationPackageManager;->getText(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Ljava/lang/CharSequence;
 HSPLandroid/app/ApplicationPackageManager;->getUserBadgedIcon(Landroid/graphics/drawable/Drawable;Landroid/os/UserHandle;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/app/ApplicationPackageManager;->getUserId()I
 HSPLandroid/app/ApplicationPackageManager;->getUserManager()Landroid/os/UserManager;
 HSPLandroid/app/ApplicationPackageManager;->getXml(Ljava/lang/String;ILandroid/content/pm/ApplicationInfo;)Landroid/content/res/XmlResourceParser;
-HSPLandroid/app/ApplicationPackageManager;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)V
 HSPLandroid/app/ApplicationPackageManager;->handlePackageBroadcast(I[Ljava/lang/String;Z)V
 HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;)Z
 HSPLandroid/app/ApplicationPackageManager;->hasSystemFeature(Ljava/lang/String;I)Z
+HSPLandroid/app/ApplicationPackageManager;->hasSystemFeatureUncached(Ljava/lang/String;I)Z
+HSPLandroid/app/ApplicationPackageManager;->hasUserBadge(I)Z
 HSPLandroid/app/ApplicationPackageManager;->isInstantApp()Z
 HSPLandroid/app/ApplicationPackageManager;->isInstantApp(Ljava/lang/String;)Z
+HSPLandroid/app/ApplicationPackageManager;->isSafeMode()Z
 HSPLandroid/app/ApplicationPackageManager;->loadItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/app/ApplicationPackageManager;->loadUnbadgedItemIcon(Landroid/content/pm/PackageItemInfo;Landroid/content/pm/ApplicationInfo;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/app/ApplicationPackageManager;->maybeAdjustApplicationInfo(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
@@ -1110,11 +1025,8 @@
 HSPLandroid/app/ApplicationPackageManager;->queryBroadcastReceiversAsUser(Landroid/content/Intent;II)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;II)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProviders(Landroid/content/Intent;I)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->queryIntentContentProvidersAsUser(Landroid/content/Intent;II)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentServices(Landroid/content/Intent;I)Ljava/util/List;
 HSPLandroid/app/ApplicationPackageManager;->queryIntentServicesAsUser(Landroid/content/Intent;II)Ljava/util/List;
-HSPLandroid/app/ApplicationPackageManager;->replacePreferredActivityAsUser(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
 HSPLandroid/app/ApplicationPackageManager;->resolveActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
 HSPLandroid/app/ApplicationPackageManager;->resolveActivityAsUser(Landroid/content/Intent;II)Landroid/content/pm/ResolveInfo;
 HSPLandroid/app/ApplicationPackageManager;->resolveContentProvider(Ljava/lang/String;I)Landroid/content/pm/ProviderInfo;
@@ -1122,44 +1034,40 @@
 HSPLandroid/app/ApplicationPackageManager;->resolveService(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
 HSPLandroid/app/ApplicationPackageManager;->resolveServiceAsUser(Landroid/content/Intent;II)Landroid/content/pm/ResolveInfo;
 HSPLandroid/app/ApplicationPackageManager;->setComponentEnabledSetting(Landroid/content/ComponentName;II)V
-HSPLandroid/app/ApplicationPackageManager;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IILandroid/os/UserHandle;)V
+HSPLandroid/app/ApplicationPackageManager;->updateFlagsForApplication(II)I
+HSPLandroid/app/ApplicationPackageManager;->updateFlagsForComponent(IILandroid/content/Intent;)I
+HSPLandroid/app/ApplicationPackageManager;->updateFlagsForPackage(II)I
+HSPLandroid/app/BackStackRecord$Op;-><init>(ILandroid/app/Fragment;)V
 HSPLandroid/app/BackStackRecord;-><init>(Landroid/app/FragmentManagerImpl;)V
 HSPLandroid/app/BackStackRecord;->add(Landroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;
+HSPLandroid/app/BackStackRecord;->addOp(Landroid/app/BackStackRecord$Op;)V
 HSPLandroid/app/BackStackRecord;->bumpBackStackNesting(I)V
 HSPLandroid/app/BackStackRecord;->commit()I
-HSPLandroid/app/BackStackRecord;->commitAllowingStateLoss()I
 HSPLandroid/app/BackStackRecord;->commitInternal(Z)I
 HSPLandroid/app/BackStackRecord;->doAddOp(ILandroid/app/Fragment;Ljava/lang/String;I)V
 HSPLandroid/app/BackStackRecord;->executeOps()V
 HSPLandroid/app/BackStackRecord;->expandOps(Ljava/util/ArrayList;Landroid/app/Fragment;)Landroid/app/Fragment;
 HSPLandroid/app/BackStackRecord;->generateOps(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
-HSPLandroid/app/BackStackRecord;->interactsWith(I)Z
-HSPLandroid/app/BackStackRecord;->isEmpty()Z
-HSPLandroid/app/BroadcastOptions;-><init>(Landroid/os/Bundle;)V
-HSPLandroid/app/BroadcastOptions;->allowsBackgroundActivityStarts()Z
-HSPLandroid/app/BroadcastOptions;->getMaxManifestReceiverApiLevel()I
-HSPLandroid/app/BroadcastOptions;->getMinManifestReceiverApiLevel()I
-HSPLandroid/app/BroadcastOptions;->getTemporaryAppWhitelistDuration()J
-HSPLandroid/app/BroadcastOptions;->isDontSendToRestrictedApps()Z
-HSPLandroid/app/BroadcastOptions;->makeBasic()Landroid/app/BroadcastOptions;
-HSPLandroid/app/BroadcastOptions;->setBackgroundActivityStartsAllowed(Z)V
-HPLandroid/app/BroadcastOptions;->setDontSendToRestrictedApps(Z)V
-HSPLandroid/app/BroadcastOptions;->setMaxManifestReceiverApiLevel(I)V
-HSPLandroid/app/BroadcastOptions;->setTemporaryAppWhitelistDuration(J)V
-HSPLandroid/app/BroadcastOptions;->toBundle()Landroid/os/Bundle;
-HSPLandroid/app/ContentProviderHolder$1;-><init>()V
+HSPLandroid/app/BackStackRecord;->isFragmentPostponed(Landroid/app/BackStackRecord$Op;)Z
+HSPLandroid/app/BackStackRecord;->isPostponed()Z
+HSPLandroid/app/BackStackRecord;->runOnCommitRunnables()V
+HSPLandroid/app/ClientTransactionHandler;-><init>()V
+HSPLandroid/app/ClientTransactionHandler;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/ContentProviderHolder$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ContentProviderHolder;
 HSPLandroid/app/ContentProviderHolder$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/ContentProviderHolder;-><init>(Landroid/content/pm/ProviderInfo;)V
 HSPLandroid/app/ContentProviderHolder;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/ContentProviderHolder;-><init>(Landroid/os/Parcel;Landroid/app/ContentProviderHolder$1;)V
 HSPLandroid/app/ContentProviderHolder;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/ContextImpl$ApplicationContentResolver;-><init>(Landroid/content/Context;Landroid/app/ActivityThread;)V
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireExistingProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider;
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider;
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->acquireUnstableProvider(Landroid/content/Context;Ljava/lang/String;)Landroid/content/IContentProvider;
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseProvider(Landroid/content/IContentProvider;)Z
 HSPLandroid/app/ContextImpl$ApplicationContentResolver;->releaseUnstableProvider(Landroid/content/IContentProvider;)Z
-HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;)V
+HSPLandroid/app/ContextImpl$ApplicationContentResolver;->resolveUserIdFromAuthority(Ljava/lang/String;)I
+HSPLandroid/app/ContextImpl;-><init>(Landroid/app/ContextImpl;Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;Ljava/lang/String;Landroid/os/IBinder;Landroid/os/UserHandle;ILjava/lang/ClassLoader;Ljava/lang/String;)V
 HSPLandroid/app/ContextImpl;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
-HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
 HSPLandroid/app/ContextImpl;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z
 HSPLandroid/app/ContextImpl;->bindServiceCommon(Landroid/content/Intent;Landroid/content/ServiceConnection;ILjava/lang/String;Landroid/os/Handler;Ljava/util/concurrent/Executor;Landroid/os/UserHandle;)Z
 HSPLandroid/app/ContextImpl;->canLoadUnsafeResources()Z
@@ -1175,20 +1083,24 @@
 HSPLandroid/app/ContextImpl;->createAppContext(Landroid/app/ActivityThread;Landroid/app/LoadedApk;Ljava/lang/String;)Landroid/app/ContextImpl;
 HSPLandroid/app/ContextImpl;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;
-HSPLandroid/app/ContextImpl;->createCredentialProtectedStorageContext()Landroid/content/Context;
+HSPLandroid/app/ContextImpl;->createContextAsUser(Landroid/os/UserHandle;I)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createDeviceProtectedStorageContext()Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createDisplayContext(Landroid/view/Display;)Landroid/content/Context;
+HSPLandroid/app/ContextImpl;->createFeatureContext(Ljava/lang/String;)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context;
-HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Ljava/lang/String;)Landroid/content/res/Resources;
+HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
+HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/List;)Landroid/content/res/Resources;
 HSPLandroid/app/ContextImpl;->createSystemContext(Landroid/app/ActivityThread;)Landroid/app/ContextImpl;
+HSPLandroid/app/ContextImpl;->createSystemUiContext(Landroid/app/ContextImpl;)Landroid/app/ContextImpl;
 HSPLandroid/app/ContextImpl;->createSystemUiContext(Landroid/app/ContextImpl;I)Landroid/app/ContextImpl;
-HSPLandroid/app/ContextImpl;->deleteSharedPreferences(Ljava/lang/String;)Z
+HSPLandroid/app/ContextImpl;->deleteDatabase(Ljava/lang/String;)Z
+HSPLandroid/app/ContextImpl;->deleteFile(Ljava/lang/String;)Z
 HSPLandroid/app/ContextImpl;->enforce(Ljava/lang/String;IZILjava/lang/String;)V
 HSPLandroid/app/ContextImpl;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/ContextImpl;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/ContextImpl;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
 HSPLandroid/app/ContextImpl;->ensureExternalDirsExistOrFilter([Ljava/io/File;)[Ljava/io/File;
+HSPLandroid/app/ContextImpl;->ensurePrivateCacheDirExists(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->ensurePrivateDirExists(Ljava/io/File;IILjava/lang/String;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getActivityToken()Landroid/os/IBinder;
 HSPLandroid/app/ContextImpl;->getApplicationContext()Landroid/content/Context;
@@ -1200,6 +1112,7 @@
 HSPLandroid/app/ContextImpl;->getCacheDir()Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getClassLoader()Ljava/lang/ClassLoader;
 HSPLandroid/app/ContextImpl;->getCodeCacheDir()Ljava/io/File;
+HSPLandroid/app/ContextImpl;->getCodeCacheDirBeforeBind(Ljava/io/File;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions;
 HSPLandroid/app/ContextImpl;->getContentResolver()Landroid/content/ContentResolver;
 HSPLandroid/app/ContextImpl;->getDataDir()Ljava/io/File;
@@ -1213,16 +1126,20 @@
 HSPLandroid/app/ContextImpl;->getExternalCacheDirs()[Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;
+HSPLandroid/app/ContextImpl;->getFeatureId()Ljava/lang/String;
 HSPLandroid/app/ContextImpl;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getFilesDir()Ljava/io/File;
+HSPLandroid/app/ContextImpl;->getImpl(Landroid/content/Context;)Landroid/app/ContextImpl;
 HSPLandroid/app/ContextImpl;->getMainExecutor()Ljava/util/concurrent/Executor;
 HSPLandroid/app/ContextImpl;->getMainLooper()Landroid/os/Looper;
-HSPLandroid/app/ContextImpl;->getMainThreadHandler()Landroid/os/Handler;
 HSPLandroid/app/ContextImpl;->getNoBackupFilesDir()Ljava/io/File;
 HSPLandroid/app/ContextImpl;->getOpPackageName()Ljava/lang/String;
+HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context;
+HSPLandroid/app/ContextImpl;->getPackageCodePath()Ljava/lang/String;
 HSPLandroid/app/ContextImpl;->getPackageManager()Landroid/content/pm/PackageManager;
 HSPLandroid/app/ContextImpl;->getPackageName()Ljava/lang/String;
 HSPLandroid/app/ContextImpl;->getPreferencesDir()Ljava/io/File;
+HSPLandroid/app/ContextImpl;->getReceiverRestrictedContext()Landroid/content/Context;
 HSPLandroid/app/ContextImpl;->getResources()Landroid/content/res/Resources;
 HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences;
 HSPLandroid/app/ContextImpl;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
@@ -1231,108 +1148,102 @@
 HSPLandroid/app/ContextImpl;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/app/ContextImpl;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;
 HSPLandroid/app/ContextImpl;->getTheme()Landroid/content/res/Resources$Theme;
-HSPLandroid/app/ContextImpl;->getThemeResId()I
 HSPLandroid/app/ContextImpl;->getUser()Landroid/os/UserHandle;
 HSPLandroid/app/ContextImpl;->getUserId()I
-HSPLandroid/app/ContextImpl;->installSystemApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)V
+HSPLandroid/app/ContextImpl;->initializeTheme()V
 HSPLandroid/app/ContextImpl;->isCredentialProtectedStorage()Z
 HSPLandroid/app/ContextImpl;->isDeviceProtectedStorage()Z
 HSPLandroid/app/ContextImpl;->isRestricted()Z
+HSPLandroid/app/ContextImpl;->isUiComponent(Ljava/lang/String;)Z
+HSPLandroid/app/ContextImpl;->isUiContext()Z
 HSPLandroid/app/ContextImpl;->makeFilename(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/app/ContextImpl;->openFileInput(Ljava/lang/String;)Ljava/io/FileInputStream;
 HSPLandroid/app/ContextImpl;->openFileOutput(Ljava/lang/String;I)Ljava/io/FileOutputStream;
+HSPLandroid/app/ContextImpl;->performFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/ContextImpl;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)Landroid/content/Intent;
 HSPLandroid/app/ContextImpl;->registerReceiver(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
 HSPLandroid/app/ContextImpl;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
+HSPLandroid/app/ContextImpl;->registerReceiverForAllUsers(Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
 HSPLandroid/app/ContextImpl;->registerReceiverInternal(Landroid/content/BroadcastReceiver;ILandroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;Landroid/content/Context;I)Landroid/content/Intent;
+HSPLandroid/app/ContextImpl;->resolveUserId(Landroid/net/Uri;)I
+HSPLandroid/app/ContextImpl;->scheduleFinalCleanup(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;)V
 HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
-HSPLandroid/app/ContextImpl;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)V
 HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
 HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V
 HSPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;I)V
-HPLandroid/app/ContextImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/app/ContextImpl;->sendBroadcastAsUserMultiplePermissions(Landroid/content/Intent;Landroid/os/UserHandle;[Ljava/lang/String;)V
-HSPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/app/ContextImpl;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/app/ContextImpl;->sendStickyBroadcast(Landroid/content/Intent;)V
 HSPLandroid/app/ContextImpl;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
-HSPLandroid/app/ContextImpl;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/os/Bundle;)V
 HSPLandroid/app/ContextImpl;->setAutofillClient(Landroid/view/autofill/AutofillManager$AutofillClient;)V
 HSPLandroid/app/ContextImpl;->setAutofillOptions(Landroid/content/AutofillOptions;)V
 HSPLandroid/app/ContextImpl;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V
 HSPLandroid/app/ContextImpl;->setFilePermissionsFromMode(Ljava/lang/String;II)V
+HSPLandroid/app/ContextImpl;->setOuterContext(Landroid/content/Context;)V
 HSPLandroid/app/ContextImpl;->setResources(Landroid/content/res/Resources;)V
 HSPLandroid/app/ContextImpl;->setTheme(I)V
-HSPLandroid/app/ContextImpl;->startActivity(Landroid/content/Intent;)V
-HSPLandroid/app/ContextImpl;->startActivity(Landroid/content/Intent;Landroid/os/Bundle;)V
 HSPLandroid/app/ContextImpl;->startForegroundService(Landroid/content/Intent;)Landroid/content/ComponentName;
 HSPLandroid/app/ContextImpl;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
-HSPLandroid/app/ContextImpl;->startServiceAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/ComponentName;
 HSPLandroid/app/ContextImpl;->startServiceCommon(Landroid/content/Intent;ZLandroid/os/UserHandle;)Landroid/content/ComponentName;
 HSPLandroid/app/ContextImpl;->stopService(Landroid/content/Intent;)Z
 HSPLandroid/app/ContextImpl;->stopServiceCommon(Landroid/content/Intent;Landroid/os/UserHandle;)Z
 HSPLandroid/app/ContextImpl;->unbindService(Landroid/content/ServiceConnection;)V
 HSPLandroid/app/ContextImpl;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
+HSPLandroid/app/ContextImpl;->updateDisplay(I)V
 HSPLandroid/app/ContextImpl;->validateServiceIntent(Landroid/content/Intent;)V
 HSPLandroid/app/ContextImpl;->warnIfCallingFromSystemProcess()V
-HSPLandroid/app/DexLoadReporter;-><init>()V
+HSPLandroid/app/DexLoadReporter;->getInstance()Landroid/app/DexLoadReporter;
+HSPLandroid/app/DexLoadReporter;->isSecondaryDexFile(Ljava/lang/String;[Ljava/lang/String;)Z
 HSPLandroid/app/DexLoadReporter;->notifyPackageManager(Ljava/util/List;Ljava/util/List;)V
 HSPLandroid/app/DexLoadReporter;->registerAppDataDir(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/DexLoadReporter;->registerSecondaryDexForProfiling(Ljava/lang/String;[Ljava/lang/String;)V
 HSPLandroid/app/DexLoadReporter;->registerSecondaryDexForProfiling([Ljava/lang/String;)V
 HSPLandroid/app/DexLoadReporter;->report(Ljava/util/List;Ljava/util/List;)V
-HSPLandroid/app/Dialog$ListenersHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/app/Dialog$ListenersHandler;-><init>(Landroid/app/Dialog;)V
 HSPLandroid/app/Dialog;-><init>(Landroid/content/Context;I)V
 HSPLandroid/app/Dialog;-><init>(Landroid/content/Context;IZ)V
 HSPLandroid/app/Dialog;->dismiss()V
 HSPLandroid/app/Dialog;->dismissDialog()V
 HSPLandroid/app/Dialog;->dispatchOnCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Dialog;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/app/Dialog;->findViewById(I)Landroid/view/View;
 HSPLandroid/app/Dialog;->getContext()Landroid/content/Context;
 HSPLandroid/app/Dialog;->getWindow()Landroid/view/Window;
-HSPLandroid/app/Dialog;->hide()V
 HSPLandroid/app/Dialog;->onAttachedToWindow()V
 HSPLandroid/app/Dialog;->onContentChanged()V
 HSPLandroid/app/Dialog;->onCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Dialog;->onDetachedFromWindow()V
 HSPLandroid/app/Dialog;->onStart()V
 HSPLandroid/app/Dialog;->onStop()V
-HSPLandroid/app/Dialog;->onTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/app/Dialog;->onWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/app/Dialog;->onWindowFocusChanged(Z)V
+HSPLandroid/app/Dialog;->sendDismissMessage()V
+HSPLandroid/app/Dialog;->sendShowMessage()V
 HSPLandroid/app/Dialog;->setCancelable(Z)V
 HSPLandroid/app/Dialog;->setCanceledOnTouchOutside(Z)V
-HSPLandroid/app/Dialog;->setContentView(Landroid/view/View;)V
-HSPLandroid/app/Dialog;->setOnCancelListener(Landroid/content/DialogInterface$OnCancelListener;)V
-HSPLandroid/app/Dialog;->setOnDismissListener(Landroid/content/DialogInterface$OnDismissListener;)V
 HSPLandroid/app/Dialog;->show()V
 HSPLandroid/app/DownloadManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/EventLogTags;->writeWmOnCreateCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnDestroyCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnPausedCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnRestartCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnResumeCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnStartCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnStopCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnTopResumedGainedCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/EventLogTags;->writeWmOnTopResumedLostCalled(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/app/Fragment$1;-><init>(Landroid/app/Fragment;)V
 HSPLandroid/app/Fragment;-><init>()V
-HSPLandroid/app/Fragment;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/Fragment;->getActivity()Landroid/app/Activity;
 HSPLandroid/app/Fragment;->getAnimatingAway()Landroid/animation/Animator;
 HSPLandroid/app/Fragment;->getChildFragmentManager()Landroid/app/FragmentManager;
 HSPLandroid/app/Fragment;->getContext()Landroid/content/Context;
-HSPLandroid/app/Fragment;->getEnterTransition()Landroid/transition/Transition;
 HSPLandroid/app/Fragment;->getNextAnim()I
 HSPLandroid/app/Fragment;->getNextTransition()I
 HSPLandroid/app/Fragment;->getNextTransitionStyle()I
-HSPLandroid/app/Fragment;->getResources()Landroid/content/res/Resources;
-HSPLandroid/app/Fragment;->getView()Landroid/view/View;
-HSPLandroid/app/Fragment;->hashCode()I
 HSPLandroid/app/Fragment;->initState()V
-HSPLandroid/app/Fragment;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;
 HSPLandroid/app/Fragment;->instantiateChildFragmentManager()V
-HSPLandroid/app/Fragment;->isPostponed()Z
 HSPLandroid/app/Fragment;->noteStateNotSaved()V
 HSPLandroid/app/Fragment;->onActivityCreated(Landroid/os/Bundle;)V
 HSPLandroid/app/Fragment;->onAttach(Landroid/app/Activity;)V
 HSPLandroid/app/Fragment;->onAttach(Landroid/content/Context;)V
-HSPLandroid/app/Fragment;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/app/Fragment;->onCreate(Landroid/os/Bundle;)V
-HSPLandroid/app/Fragment;->onCreateAnimator(IZI)Landroid/animation/Animator;
 HSPLandroid/app/Fragment;->onCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;
 HSPLandroid/app/Fragment;->onDestroy()V
 HSPLandroid/app/Fragment;->onDestroyView()V
@@ -1344,10 +1255,7 @@
 HSPLandroid/app/Fragment;->onStart()V
 HSPLandroid/app/Fragment;->onStop()V
 HSPLandroid/app/Fragment;->onTrimMemory(I)V
-HSPLandroid/app/Fragment;->onViewCreated(Landroid/view/View;Landroid/os/Bundle;)V
-HSPLandroid/app/Fragment;->onViewStateRestored(Landroid/os/Bundle;)V
 HSPLandroid/app/Fragment;->performActivityCreated(Landroid/os/Bundle;)V
-HSPLandroid/app/Fragment;->performConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/app/Fragment;->performCreate(Landroid/os/Bundle;)V
 HSPLandroid/app/Fragment;->performCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z
 HSPLandroid/app/Fragment;->performCreateView(Landroid/view/LayoutInflater;Landroid/view/ViewGroup;Landroid/os/Bundle;)Landroid/view/View;
@@ -1363,16 +1271,14 @@
 HSPLandroid/app/Fragment;->performStop()V
 HSPLandroid/app/Fragment;->performTrimMemory(I)V
 HSPLandroid/app/Fragment;->restoreChildFragmentState(Landroid/os/Bundle;Z)V
-HSPLandroid/app/Fragment;->restoreViewState(Landroid/os/Bundle;)V
 HSPLandroid/app/Fragment;->setIndex(ILandroid/app/Fragment;)V
 HSPLandroid/app/Fragment;->setNextAnim(I)V
 HSPLandroid/app/Fragment;->setNextTransition(II)V
-HSPLandroid/app/Fragment;->setRetainInstance(Z)V
-HSPLandroid/app/FragmentContainer;->instantiate(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)Landroid/app/Fragment;
+HSPLandroid/app/FragmentContainer;-><init>()V
+HSPLandroid/app/FragmentController;-><init>(Landroid/app/FragmentHostCallback;)V
 HSPLandroid/app/FragmentController;->attachHost(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentController;->createController(Landroid/app/FragmentHostCallback;)Landroid/app/FragmentController;
 HSPLandroid/app/FragmentController;->dispatchActivityCreated()V
-HSPLandroid/app/FragmentController;->dispatchConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/app/FragmentController;->dispatchCreate()V
 HSPLandroid/app/FragmentController;->dispatchCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z
 HSPLandroid/app/FragmentController;->dispatchDestroy()V
@@ -1389,9 +1295,9 @@
 HSPLandroid/app/FragmentController;->getFragmentManager()Landroid/app/FragmentManager;
 HSPLandroid/app/FragmentController;->noteStateNotSaved()V
 HSPLandroid/app/FragmentController;->reportLoaderStart()V
-HSPLandroid/app/FragmentController;->restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V
 HSPLandroid/app/FragmentController;->saveAllState()Landroid/os/Parcelable;
-HSPLandroid/app/FragmentHostCallback;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+HSPLandroid/app/FragmentHostCallback;-><init>(Landroid/app/Activity;)V
+HSPLandroid/app/FragmentHostCallback;-><init>(Landroid/app/Activity;Landroid/content/Context;Landroid/os/Handler;I)V
 HSPLandroid/app/FragmentHostCallback;->doLoaderDestroy()V
 HSPLandroid/app/FragmentHostCallback;->doLoaderStart()V
 HSPLandroid/app/FragmentHostCallback;->doLoaderStop(Z)V
@@ -1400,17 +1306,23 @@
 HSPLandroid/app/FragmentHostCallback;->getFragmentManagerImpl()Landroid/app/FragmentManagerImpl;
 HSPLandroid/app/FragmentHostCallback;->getHandler()Landroid/os/Handler;
 HSPLandroid/app/FragmentHostCallback;->getLoaderManager(Ljava/lang/String;ZZ)Landroid/app/LoaderManagerImpl;
-HSPLandroid/app/FragmentHostCallback;->getRetainLoaders()Z
 HSPLandroid/app/FragmentHostCallback;->inactivateFragment(Ljava/lang/String;)V
 HSPLandroid/app/FragmentHostCallback;->reportLoaderStart()V
-HSPLandroid/app/FragmentManagerImpl$1;->run()V
+HSPLandroid/app/FragmentManager;-><init>()V
+HSPLandroid/app/FragmentManagerImpl$1;-><init>(Landroid/app/FragmentManagerImpl;)V
 HSPLandroid/app/FragmentManagerImpl;-><init>()V
 HSPLandroid/app/FragmentManagerImpl;->addAddedFragments(Landroid/util/ArraySet;)V
 HSPLandroid/app/FragmentManagerImpl;->addFragment(Landroid/app/Fragment;Z)V
+HSPLandroid/app/FragmentManagerImpl;->attachController(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->beginTransaction()Landroid/app/FragmentTransaction;
 HSPLandroid/app/FragmentManagerImpl;->burpActive()V
 HSPLandroid/app/FragmentManagerImpl;->checkStateLoss()V
+HSPLandroid/app/FragmentManagerImpl;->cleanupExec()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchActivityCreated()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchCreate()V
 HSPLandroid/app/FragmentManagerImpl;->dispatchCreateOptionsMenu(Landroid/view/Menu;Landroid/view/MenuInflater;)Z
+HSPLandroid/app/FragmentManagerImpl;->dispatchDestroy()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchDestroyView()V
 HSPLandroid/app/FragmentManagerImpl;->dispatchMoveToState(I)V
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentActivityCreated(Landroid/app/Fragment;Landroid/os/Bundle;Z)V
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentAttached(Landroid/app/Fragment;Landroid/content/Context;Z)V
@@ -1424,9 +1336,13 @@
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentSaveInstanceState(Landroid/app/Fragment;Landroid/os/Bundle;Z)V
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentStarted(Landroid/app/Fragment;Z)V
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentStopped(Landroid/app/Fragment;Z)V
-HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentViewCreated(Landroid/app/Fragment;Landroid/view/View;Landroid/os/Bundle;Z)V
 HSPLandroid/app/FragmentManagerImpl;->dispatchOnFragmentViewDestroyed(Landroid/app/Fragment;Z)V
+HSPLandroid/app/FragmentManagerImpl;->dispatchPause()V
 HSPLandroid/app/FragmentManagerImpl;->dispatchPrepareOptionsMenu(Landroid/view/Menu;)Z
+HSPLandroid/app/FragmentManagerImpl;->dispatchResume()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchStart()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchStop()V
+HSPLandroid/app/FragmentManagerImpl;->dispatchTrimMemory(I)V
 HSPLandroid/app/FragmentManagerImpl;->doPendingDeferredStart()V
 HSPLandroid/app/FragmentManagerImpl;->endAnimatingAwayFragments()V
 HSPLandroid/app/FragmentManagerImpl;->enqueueAction(Landroid/app/FragmentManagerImpl$OpGenerator;Z)V
@@ -1438,39 +1354,35 @@
 HSPLandroid/app/FragmentManagerImpl;->executePendingTransactions()Z
 HSPLandroid/app/FragmentManagerImpl;->executePostponedTransaction(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
 HSPLandroid/app/FragmentManagerImpl;->findFragmentByTag(Ljava/lang/String;)Landroid/app/Fragment;
-HSPLandroid/app/FragmentManagerImpl;->findFragmentUnder(Landroid/app/Fragment;)Landroid/app/Fragment;
+HSPLandroid/app/FragmentManagerImpl;->forcePostponedTransactions()V
 HSPLandroid/app/FragmentManagerImpl;->generateOpsForPendingActions(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
-HSPLandroid/app/FragmentManagerImpl;->isStateSaved()Z
-HSPLandroid/app/FragmentManagerImpl;->loadAnimator(Landroid/app/Fragment;IZI)Landroid/animation/Animator;
+HSPLandroid/app/FragmentManagerImpl;->getLayoutInflaterFactory()Landroid/view/LayoutInflater$Factory2;
+HSPLandroid/app/FragmentManagerImpl;->getPrimaryNavigationFragment()Landroid/app/Fragment;
+HSPLandroid/app/FragmentManagerImpl;->getTargetSdk()I
 HSPLandroid/app/FragmentManagerImpl;->makeActive(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->makeInactive(Landroid/app/Fragment;)V
+HSPLandroid/app/FragmentManagerImpl;->makeRemovedFragmentsInvisible(Landroid/util/ArraySet;)V
 HSPLandroid/app/FragmentManagerImpl;->moveFragmentToExpectedState(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->moveToState(IZ)V
 HSPLandroid/app/FragmentManagerImpl;->moveToState(Landroid/app/Fragment;IIIZ)V
-HSPLandroid/app/FragmentManagerImpl;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
-HSPLandroid/app/FragmentManagerImpl;->popBackStackImmediate()Z
-HSPLandroid/app/FragmentManagerImpl;->popBackStackImmediate(Ljava/lang/String;II)Z
-HSPLandroid/app/FragmentManagerImpl;->popBackStackState(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/lang/String;II)Z
+HSPLandroid/app/FragmentManagerImpl;->noteStateNotSaved()V
+HSPLandroid/app/FragmentManagerImpl;->performPendingDeferredStart(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->postponePostponableTransactions(Ljava/util/ArrayList;Ljava/util/ArrayList;IILandroid/util/ArraySet;)I
 HSPLandroid/app/FragmentManagerImpl;->removeRedundantOperationsAndExecute(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
-HSPLandroid/app/FragmentManagerImpl;->restoreAllState(Landroid/os/Parcelable;Landroid/app/FragmentManagerNonConfig;)V
 HSPLandroid/app/FragmentManagerImpl;->saveAllState()Landroid/os/Parcelable;
 HSPLandroid/app/FragmentManagerImpl;->saveFragmentBasicState(Landroid/app/Fragment;)Landroid/os/Bundle;
-HSPLandroid/app/FragmentManagerImpl;->saveFragmentViewState(Landroid/app/Fragment;)V
 HSPLandroid/app/FragmentManagerImpl;->saveNonConfig()V
 HSPLandroid/app/FragmentManagerImpl;->scheduleCommit()V
-HSPLandroid/app/FragmentManagerState$1;-><init>()V
+HSPLandroid/app/FragmentManagerImpl;->startPendingDeferredFragments()V
+HSPLandroid/app/FragmentManagerState;-><init>()V
 HSPLandroid/app/FragmentManagerState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/FragmentState$1;-><init>()V
 HSPLandroid/app/FragmentState;-><init>(Landroid/app/Fragment;)V
-HSPLandroid/app/FragmentState;->instantiate(Landroid/app/FragmentHostCallback;Landroid/app/FragmentContainer;Landroid/app/Fragment;Landroid/app/FragmentManagerNonConfig;)Landroid/app/Fragment;
 HSPLandroid/app/FragmentState;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/FragmentTransaction;-><init>()V
 HSPLandroid/app/FragmentTransition;->addToFirstInLastOut(Landroid/app/BackStackRecord;Landroid/app/BackStackRecord$Op;Landroid/util/SparseArray;ZZ)V
-HSPLandroid/app/FragmentTransition;->calculateNameOverrides(ILjava/util/ArrayList;Ljava/util/ArrayList;II)Landroid/util/ArrayMap;
-HSPLandroid/app/FragmentTransition;->cloneTransition(Landroid/transition/Transition;)Landroid/transition/Transition;
-HSPLandroid/app/FragmentTransition;->configureSharedElementsReordered(Landroid/view/ViewGroup;Landroid/view/View;Landroid/util/ArrayMap;Landroid/app/FragmentTransition$FragmentContainerTransition;Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/transition/Transition;Landroid/transition/Transition;)Landroid/transition/TransitionSet;
-HSPLandroid/app/FragmentTransition;->configureTransitionsReordered(Landroid/app/FragmentManagerImpl;ILandroid/app/FragmentTransition$FragmentContainerTransition;Landroid/view/View;Landroid/util/ArrayMap;)V
+HSPLandroid/app/FragmentTransition;->calculateFragments(Landroid/app/BackStackRecord;Landroid/util/SparseArray;Z)V
 HSPLandroid/app/FragmentTransition;->startTransitions(Landroid/app/FragmentManagerImpl;Ljava/util/ArrayList;Ljava/util/ArrayList;IIZ)V
+HSPLandroid/app/IActivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->addPackageDependency(Ljava/lang/String;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->attachApplication(Landroid/app/IApplicationThread;J)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
@@ -1484,33 +1396,25 @@
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->getRunningAppProcesses()Ljava/util/List;
-HSPLandroid/app/IActivityManager$Stub$Proxy;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
+HSPLandroid/app/IActivityManager$Stub$Proxy;->getServices(II)Ljava/util/List;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserAMonkey()Z
 HSPLandroid/app/IActivityManager$Stub$Proxy;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->refContentProvider(Landroid/os/IBinder;II)Z
 HSPLandroid/app/IActivityManager$Stub$Proxy;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
-HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->removeContentProvider(Landroid/os/IBinder;Z)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
 HSPLandroid/app/IActivityManager$Stub$Proxy;->serviceDoneExecuting(Landroid/os/IBinder;III)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setRenderThread(I)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName;
 HSPLandroid/app/IActivityManager$Stub$Proxy;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
 HSPLandroid/app/IActivityManager$Stub$Proxy;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
 HSPLandroid/app/IActivityManager$Stub$Proxy;->unbindService(Landroid/app/IServiceConnection;)Z
 HSPLandroid/app/IActivityManager$Stub$Proxy;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->updateConfiguration(Landroid/content/res/Configuration;)Z
-HSPLandroid/app/IActivityManager$Stub$Proxy;->waitForNetworkStateUpdate(J)V
-HSPLandroid/app/IActivityManager$Stub;-><init>()V
-HPLandroid/app/IActivityManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/IActivityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/app/IActivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityManager;
+HSPLandroid/app/IActivityTaskManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->activityDestroyed(Landroid/os/IBinder;)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->activityPaused(Landroid/os/IBinder;)V
@@ -1518,162 +1422,59 @@
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->activityTopResumedStateLost()V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getActivityDisplayId(Landroid/os/IBinder;)I
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getRequestedOrientation(Landroid/os/IBinder;)I
+HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getDisplayId(Landroid/os/IBinder;)I
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTaskForActivity(Landroid/os/IBinder;Z)I
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->isInMultiWindowMode(Landroid/os/IBinder;)Z
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
 HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I
-HSPLandroid/app/IActivityTaskManager$Stub;-><init>()V
-HPLandroid/app/IActivityTaskManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/IActivityTaskManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IAlarmCompleteListener$Stub$Proxy;->alarmComplete(Landroid/os/IBinder;)V
-HSPLandroid/app/IAlarmCompleteListener$Stub;-><init>()V
-HSPLandroid/app/IAlarmCompleteListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IAlarmCompleteListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IAlarmListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IAlarmListener$Stub$Proxy;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
+HSPLandroid/app/IActivityTaskManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IActivityTaskManager;
 HSPLandroid/app/IAlarmListener$Stub;-><init>()V
 HSPLandroid/app/IAlarmListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IAlarmListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmListener;
-HSPLandroid/app/IAlarmListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/app/IAlarmManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/IAlarmManager$Stub$Proxy;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
 HSPLandroid/app/IAlarmManager$Stub$Proxy;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
-HSPLandroid/app/IAlarmManager$Stub$Proxy;->setTimeZone(Ljava/lang/String;)V
-HSPLandroid/app/IAlarmManager$Stub;-><init>()V
 HSPLandroid/app/IAlarmManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAlarmManager;
-HPLandroid/app/IAlarmManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/IAlarmManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IAppTask$Stub$Proxy;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
-HSPLandroid/app/IAppTask$Stub$Proxy;->setExcludeFromRecents(Z)V
-HPLandroid/app/IAppTask$Stub;-><init>()V
-HPLandroid/app/IAppTask$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IApplicationThread$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->bindApplication(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;Landroid/content/ComponentName;Landroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/app/IInstrumentationWatcher;Landroid/app/IUiAutomationConnection;IZZZZLandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/util/Map;Landroid/os/Bundle;Ljava/lang/String;Landroid/content/AutofillOptions;Landroid/content/ContentCaptureOptions;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->clearDnsCache()V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->dispatchPackageBroadcast(I[Ljava/lang/String;)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->dumpService(Landroid/os/ParcelFileDescriptor;Landroid/os/IBinder;[Ljava/lang/String;)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->requestAssistContextExtras(Landroid/os/IBinder;Landroid/os/IBinder;III)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->runIsolatedEntryPoint(Ljava/lang/String;[Ljava/lang/String;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleBindService(Landroid/os/IBinder;Landroid/content/Intent;ZI)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleCreateBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;II)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleCreateService(Landroid/os/IBinder;Landroid/content/pm/ServiceInfo;Landroid/content/res/CompatibilityInfo;I)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleDestroyBackupAgent(Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;I)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleEnterAnimationComplete(Landroid/os/IBinder;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleInstallProvider(Landroid/content/pm/ProviderInfo;)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleLowMemory()V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleReceiver(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Landroid/content/res/CompatibilityInfo;ILjava/lang/String;Landroid/os/Bundle;ZII)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleRegisteredReceiver(Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZII)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleServiceArgs(Landroid/os/IBinder;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSleeping(Landroid/os/IBinder;Z)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleStopService(Landroid/os/IBinder;)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleSuicide()V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleTrimMemory(I)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->scheduleUnbindService(Landroid/os/IBinder;Landroid/content/Intent;)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->setNetworkBlockSeq(J)V
-HSPLandroid/app/IApplicationThread$Stub$Proxy;->setProcessState(I)V
-HPLandroid/app/IApplicationThread$Stub$Proxy;->unstableProviderDied(Landroid/os/IBinder;)V
+HSPLandroid/app/IApplicationThread$Stub;-><init>()V
 HSPLandroid/app/IApplicationThread$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IApplicationThread$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IApplicationThread;
 HSPLandroid/app/IApplicationThread$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/app/IAssistDataReceiver$Stub;-><init>()V
-PLandroid/app/IAssistDataReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IAssistDataReceiver;
-HPLandroid/app/IBackupAgent$Stub$Proxy;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JLandroid/app/backup/IBackupCallback;I)V
-PLandroid/app/IBackupAgent$Stub$Proxy;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
-HPLandroid/app/IBackupAgent$Stub$Proxy;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V
-HPLandroid/app/IBackupAgent$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IBackupAgent;
+HSPLandroid/app/IBackupAgent$Stub;-><init>()V
+HSPLandroid/app/IBackupAgent$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/app/IBackupAgent$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/app/IInstantAppResolver$Stub$Proxy;->getInstantAppResolveInfoList(Landroid/content/Intent;[IILjava/lang/String;ILandroid/os/IRemoteCallback;)V
-PLandroid/app/IInstantAppResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstantAppResolver;
 HSPLandroid/app/IInstrumentationWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IInstrumentationWatcher;
-HSPLandroid/app/INotificationManager$Stub$Proxy;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+HSPLandroid/app/INotificationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->areNotificationsEnabled(Ljava/lang/String;)Z
-HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/INotificationManager$Stub$Proxy;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenMode()I
-HSPLandroid/app/INotificationManager$Stub;-><init>()V
 HSPLandroid/app/INotificationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/INotificationManager;
-HPLandroid/app/INotificationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/INotificationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IProcessObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/app/IProcessObserver$Stub$Proxy;->onForegroundActivitiesChanged(IIZ)V
-HPLandroid/app/IProcessObserver$Stub$Proxy;->onForegroundServicesChanged(III)V
-HPLandroid/app/IProcessObserver$Stub$Proxy;->onProcessDied(II)V
-HSPLandroid/app/IProcessObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IProcessObserver;
-HSPLandroid/app/ISearchManager$Stub;-><init>()V
-HPLandroid/app/ISearchManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IServiceConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IServiceConnection$Stub$Proxy;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
+HSPLandroid/app/IServiceConnection$Stub;-><init>()V
 HSPLandroid/app/IServiceConnection$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IServiceConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IServiceConnection;
 HSPLandroid/app/IServiceConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/app/ITaskStackListener$Stub$Proxy;->onActivityRequestedOrientationChanged(II)V
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskCreated(ILandroid/content/ComponentName;)V
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskDescriptionChanged(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskMovedToFront(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskRemovalStarted(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskRemoved(I)V
-HPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
-HSPLandroid/app/ITaskStackListener$Stub$Proxy;->onTaskStackChanged()V
-HSPLandroid/app/ITaskStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITaskStackListener;
-PLandroid/app/ITransientNotification$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/app/ITransientNotification$Stub$Proxy;->hide()V
-PLandroid/app/ITransientNotification$Stub$Proxy;->show(Landroid/os/IBinder;)V
-HSPLandroid/app/ITransientNotification$Stub;-><init>()V
-HSPLandroid/app/ITransientNotification$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/app/ITransientNotification$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/ITransientNotification;
+HSPLandroid/app/ITaskStackListener$Stub;-><init>()V
 HSPLandroid/app/IUiAutomationConnection$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiAutomationConnection;
+HSPLandroid/app/IUiModeManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/IUiModeManager$Stub$Proxy;->getCurrentModeType()I
-HSPLandroid/app/IUiModeManager$Stub$Proxy;->getNightMode()I
-HSPLandroid/app/IUiModeManager$Stub;-><init>()V
 HSPLandroid/app/IUiModeManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUiModeManager;
-HSPLandroid/app/IUiModeManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IUidObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IUidObserver$Stub$Proxy;->onUidActive(I)V
-HSPLandroid/app/IUidObserver$Stub$Proxy;->onUidGone(IZ)V
-HSPLandroid/app/IUidObserver$Stub$Proxy;->onUidIdle(IZ)V
-HSPLandroid/app/IUidObserver$Stub$Proxy;->onUidStateChanged(IIJ)V
 HSPLandroid/app/IUidObserver$Stub;-><init>()V
 HSPLandroid/app/IUidObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IUidObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUidObserver;
-HSPLandroid/app/IUriGrantsManager$Stub;-><init>()V
-HPLandroid/app/IUriGrantsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IUserSwitchObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/app/IUserSwitchObserver$Stub$Proxy;->onForegroundProfileSwitch(I)V
-HSPLandroid/app/IUserSwitchObserver$Stub$Proxy;->onLockedBootComplete(I)V
-HSPLandroid/app/IUserSwitchObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IUserSwitchObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUserSwitchObserver;
-HSPLandroid/app/IUserSwitchObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperColors(III)Landroid/app/WallpaperColors;
-HSPLandroid/app/IWallpaperManager$Stub;-><init>()V
-HSPLandroid/app/IWallpaperManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IWallpaperManagerCallback$Stub$Proxy;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V
+HSPLandroid/app/IUriGrantsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IUriGrantsManager;
+HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager;
+HSPLandroid/app/IWallpaperManagerCallback$Stub;-><init>()V
 HSPLandroid/app/Instrumentation;-><init>()V
 HSPLandroid/app/Instrumentation;->basicInit(Landroid/app/ActivityThread;)V
 HSPLandroid/app/Instrumentation;->callActivityOnCreate(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Instrumentation;->callActivityOnDestroy(Landroid/app/Activity;)V
-HSPLandroid/app/Instrumentation;->callActivityOnNewIntent(Landroid/app/Activity;Landroid/content/Intent;)V
-HSPLandroid/app/Instrumentation;->callActivityOnNewIntent(Landroid/app/Activity;Lcom/android/internal/content/ReferrerIntent;)V
 HSPLandroid/app/Instrumentation;->callActivityOnPause(Landroid/app/Activity;)V
+HSPLandroid/app/Instrumentation;->callActivityOnPictureInPictureRequested(Landroid/app/Activity;)V
 HSPLandroid/app/Instrumentation;->callActivityOnPostCreate(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Instrumentation;->callActivityOnRestart(Landroid/app/Activity;)V
-HSPLandroid/app/Instrumentation;->callActivityOnRestoreInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Instrumentation;->callActivityOnResume(Landroid/app/Activity;)V
 HSPLandroid/app/Instrumentation;->callActivityOnSaveInstanceState(Landroid/app/Activity;Landroid/os/Bundle;)V
 HSPLandroid/app/Instrumentation;->callActivityOnStart(Landroid/app/Activity;)V
@@ -1689,13 +1490,8 @@
 HSPLandroid/app/Instrumentation;->onEnterAnimationComplete()V
 HSPLandroid/app/Instrumentation;->postPerformCreate(Landroid/app/Activity;)V
 HSPLandroid/app/Instrumentation;->prePerformCreate(Landroid/app/Activity;)V
-HSPLandroid/app/IntentService$ServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/app/IntentService;-><init>(Ljava/lang/String;)V
-HSPLandroid/app/IntentService;->onCreate()V
-HSPLandroid/app/IntentService;->onDestroy()V
-HSPLandroid/app/IntentService;->onStart(Landroid/content/Intent;I)V
-HSPLandroid/app/IntentService;->onStartCommand(Landroid/content/Intent;II)I
-HSPLandroid/app/IntentService;->setIntentRedelivery(Z)V
+HSPLandroid/app/IntentReceiverLeaked;-><init>(Ljava/lang/String;)V
+HSPLandroid/app/JobSchedulerImpl;-><init>(Landroid/app/job/IJobScheduler;)V
 HSPLandroid/app/JobSchedulerImpl;->cancel(I)V
 HSPLandroid/app/JobSchedulerImpl;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
 HSPLandroid/app/JobSchedulerImpl;->getAllPendingJobs()Ljava/util/List;
@@ -1703,23 +1499,27 @@
 HSPLandroid/app/JobSchedulerImpl;->schedule(Landroid/app/job/JobInfo;)I
 HSPLandroid/app/JobSchedulerImpl;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
 HSPLandroid/app/KeyguardManager;-><init>(Landroid/content/Context;)V
-HPLandroid/app/KeyguardManager;->createConfirmDeviceCredentialIntent(Ljava/lang/CharSequence;Ljava/lang/CharSequence;I)Landroid/content/Intent;
-HPLandroid/app/KeyguardManager;->getSettingsPackageForIntent(Landroid/content/Intent;)Ljava/lang/String;
 HSPLandroid/app/KeyguardManager;->inKeyguardRestrictedInputMode()Z
-HSPLandroid/app/KeyguardManager;->isDeviceLocked()Z
 HSPLandroid/app/KeyguardManager;->isDeviceLocked(I)Z
-HSPLandroid/app/KeyguardManager;->isDeviceSecure()Z
 HSPLandroid/app/KeyguardManager;->isDeviceSecure(I)Z
 HSPLandroid/app/KeyguardManager;->isKeyguardLocked()Z
 HSPLandroid/app/KeyguardManager;->isKeyguardSecure()Z
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->getRunnable()Ljava/lang/Runnable;
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$Args;->lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args()V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;-><init>(Landroid/app/LoadedApk$ReceiverDispatcher;Z)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher$InnerReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher;-><init>(Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)V
+HSPLandroid/app/LoadedApk$ReceiverDispatcher;->getIIntentReceiver()Landroid/content/IIntentReceiver;
 HSPLandroid/app/LoadedApk$ReceiverDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
 HSPLandroid/app/LoadedApk$ReceiverDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLandroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;-><init>()V
+HSPLandroid/app/LoadedApk$ServiceDispatcher$ConnectionInfo;-><init>(Landroid/app/LoadedApk$1;)V
+HSPLandroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;-><init>(Landroid/app/LoadedApk$ServiceDispatcher;Landroid/content/ComponentName;Landroid/os/IBinder;)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher$DeathMonitor;->binderDied()V
+HSPLandroid/app/LoadedApk$ServiceDispatcher$InnerConnection;-><init>(Landroid/app/LoadedApk$ServiceDispatcher;)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher$InnerConnection;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
+HSPLandroid/app/LoadedApk$ServiceDispatcher$RunConnection;-><init>(Landroid/app/LoadedApk$ServiceDispatcher;Landroid/content/ComponentName;Landroid/os/IBinder;IZ)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher$RunConnection;->run()V
 HSPLandroid/app/LoadedApk$ServiceDispatcher;-><init>(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;I)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher;->connected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
@@ -1727,10 +1527,15 @@
 HSPLandroid/app/LoadedApk$ServiceDispatcher;->doConnected(Landroid/content/ComponentName;Landroid/os/IBinder;Z)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher;->doDeath(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 HSPLandroid/app/LoadedApk$ServiceDispatcher;->doForget()V
+HSPLandroid/app/LoadedApk$ServiceDispatcher;->getFlags()I
+HSPLandroid/app/LoadedApk$ServiceDispatcher;->getIServiceConnection()Landroid/app/IServiceConnection;
 HSPLandroid/app/LoadedApk$ServiceDispatcher;->validate(Landroid/content/Context;Landroid/os/Handler;Ljava/util/concurrent/Executor;)V
+HSPLandroid/app/LoadedApk$WarningContextClassLoader;-><init>()V
+HSPLandroid/app/LoadedApk$WarningContextClassLoader;-><init>(Landroid/app/LoadedApk$1;)V
 HSPLandroid/app/LoadedApk;-><init>(Landroid/app/ActivityThread;)V
 HSPLandroid/app/LoadedApk;-><init>(Landroid/app/ActivityThread;Landroid/content/pm/ApplicationInfo;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;ZZZ)V
 HSPLandroid/app/LoadedApk;->adjustNativeLibraryPaths(Landroid/content/pm/ApplicationInfo;)Landroid/content/pm/ApplicationInfo;
+HSPLandroid/app/LoadedApk;->allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;
 HSPLandroid/app/LoadedApk;->appendApkLibPathIfNeeded(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V
 HSPLandroid/app/LoadedApk;->appendSharedLibrariesLibPathsIfNeeded(Ljava/util/List;Landroid/content/pm/ApplicationInfo;Ljava/util/Set;Ljava/util/List;)V
 HSPLandroid/app/LoadedApk;->createAppFactory(Landroid/content/pm/ApplicationInfo;Ljava/lang/ClassLoader;)Landroid/app/AppComponentFactory;
@@ -1739,70 +1544,72 @@
 HSPLandroid/app/LoadedApk;->createSharedLibraryLoader(Landroid/content/pm/SharedLibraryInfo;ZLjava/lang/String;Ljava/lang/String;)Ljava/lang/ClassLoader;
 HSPLandroid/app/LoadedApk;->forgetReceiverDispatcher(Landroid/content/Context;Landroid/content/BroadcastReceiver;)Landroid/content/IIntentReceiver;
 HSPLandroid/app/LoadedApk;->forgetServiceDispatcher(Landroid/content/Context;Landroid/content/ServiceConnection;)Landroid/app/IServiceConnection;
+HSPLandroid/app/LoadedApk;->getAppDir()Ljava/lang/String;
+HSPLandroid/app/LoadedApk;->getAppFactory()Landroid/app/AppComponentFactory;
+HSPLandroid/app/LoadedApk;->getApplication()Landroid/app/Application;
+HSPLandroid/app/LoadedApk;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
+HSPLandroid/app/LoadedApk;->getAssets()Landroid/content/res/AssetManager;
 HSPLandroid/app/LoadedApk;->getClassLoader()Ljava/lang/ClassLoader;
+HSPLandroid/app/LoadedApk;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo;
+HSPLandroid/app/LoadedApk;->getCredentialProtectedDataDirFile()Ljava/io/File;
+HSPLandroid/app/LoadedApk;->getDataDirFile()Ljava/io/File;
+HSPLandroid/app/LoadedApk;->getDeviceProtectedDataDirFile()Ljava/io/File;
+HSPLandroid/app/LoadedApk;->getOverlayDirs()[Ljava/lang/String;
+HSPLandroid/app/LoadedApk;->getPackageName()Ljava/lang/String;
 HSPLandroid/app/LoadedApk;->getReceiverDispatcher(Landroid/content/BroadcastReceiver;Landroid/content/Context;Landroid/os/Handler;Landroid/app/Instrumentation;Z)Landroid/content/IIntentReceiver;
+HSPLandroid/app/LoadedApk;->getResDir()Ljava/lang/String;
 HSPLandroid/app/LoadedApk;->getResources()Landroid/content/res/Resources;
+HSPLandroid/app/LoadedApk;->getServiceDispatcher(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;I)Landroid/app/IServiceConnection;
 HSPLandroid/app/LoadedApk;->getServiceDispatcherCommon(Landroid/content/ServiceConnection;Landroid/content/Context;Landroid/os/Handler;Ljava/util/concurrent/Executor;I)Landroid/app/IServiceConnection;
+HSPLandroid/app/LoadedApk;->getSplitClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader;
+HSPLandroid/app/LoadedApk;->getSplitPaths(Ljava/lang/String;)[Ljava/lang/String;
+HSPLandroid/app/LoadedApk;->getSplitResDirs()[Ljava/lang/String;
 HSPLandroid/app/LoadedApk;->initializeJavaContextClassLoader()V
+HSPLandroid/app/LoadedApk;->isSecurityViolation()Z
 HSPLandroid/app/LoadedApk;->makeApplication(ZLandroid/app/Instrumentation;)Landroid/app/Application;
 HSPLandroid/app/LoadedApk;->makePaths(Landroid/app/ActivityThread;ZLandroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;)V
 HSPLandroid/app/LoadedApk;->removeContextRegistrations(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/app/LoadedApk;->setApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
+HSPLandroid/app/LoadedApk;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
 HSPLandroid/app/LoadedApk;->setupJitProfileSupport()V
-HSPLandroid/app/LoadedApk;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;Ljava/util/List;)V
-HSPLandroid/app/Notification$1;-><init>()V
 HSPLandroid/app/Notification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Notification;
 HSPLandroid/app/Notification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/Notification$Action$1;-><init>()V
 HSPLandroid/app/Notification$Action$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Notification$Action;
 HSPLandroid/app/Notification$Action$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/Notification$Action$1;->newArray(I)[Landroid/app/Notification$Action;
 HSPLandroid/app/Notification$Action$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/app/Notification$Action$Builder;-><init>(ILjava/lang/CharSequence;Landroid/app/PendingIntent;)V
 HSPLandroid/app/Notification$Action$Builder;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V
 HSPLandroid/app/Notification$Action$Builder;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZI)V
 HSPLandroid/app/Notification$Action$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Action$Builder;
 HSPLandroid/app/Notification$Action$Builder;->build()Landroid/app/Notification$Action;
+HSPLandroid/app/Notification$Action$Builder;->checkContextualActionNullFields()V
 HSPLandroid/app/Notification$Action$Builder;->setAllowGeneratedReplies(Z)Landroid/app/Notification$Action$Builder;
-HPLandroid/app/Notification$Action$Builder;->setContextual(Z)Landroid/app/Notification$Action$Builder;
 HSPLandroid/app/Notification$Action$Builder;->setSemanticAction(I)Landroid/app/Notification$Action$Builder;
 HSPLandroid/app/Notification$Action;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZ)V
+HSPLandroid/app/Notification$Action;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Landroid/app/PendingIntent;Landroid/os/Bundle;[Landroid/app/RemoteInput;ZIZLandroid/app/Notification$1;)V
 HSPLandroid/app/Notification$Action;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/Notification$Action;->clone()Landroid/app/Notification$Action;
-HSPLandroid/app/Notification$Action;->getAllowGeneratedReplies()Z
+HSPLandroid/app/Notification$Action;-><init>(Landroid/os/Parcel;Landroid/app/Notification$1;)V
 HSPLandroid/app/Notification$Action;->getIcon()Landroid/graphics/drawable/Icon;
-HSPLandroid/app/Notification$Action;->getRemoteInputs()[Landroid/app/RemoteInput;
-HSPLandroid/app/Notification$Action;->getSemanticAction()I
-HSPLandroid/app/Notification$Action;->isContextual()Z
 HSPLandroid/app/Notification$Action;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/Notification$BigTextStyle;-><init>()V
 HSPLandroid/app/Notification$BigTextStyle;-><init>(Landroid/app/Notification$Builder;)V
 HSPLandroid/app/Notification$BigTextStyle;->addExtras(Landroid/os/Bundle;)V
-HPLandroid/app/Notification$BigTextStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z
 HSPLandroid/app/Notification$BigTextStyle;->bigText(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;
-HPLandroid/app/Notification$BigTextStyle;->getBigText()Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$BigTextStyle;->restoreFromExtras(Landroid/os/Bundle;)V
 HSPLandroid/app/Notification$BigTextStyle;->setBigContentTitle(Ljava/lang/CharSequence;)Landroid/app/Notification$BigTextStyle;
-HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;)V
 HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;Landroid/app/Notification;)V
 HSPLandroid/app/Notification$Builder;-><init>(Landroid/content/Context;Ljava/lang/String;)V
 HSPLandroid/app/Notification$Builder;->addAction(Landroid/app/Notification$Action;)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->addExtras(Landroid/os/Bundle;)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->addPerson(Landroid/app/Person;)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->addPerson(Ljava/lang/String;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->build()Landroid/app/Notification;
 HSPLandroid/app/Notification$Builder;->buildUnstyled()Landroid/app/Notification;
-HSPLandroid/app/Notification$Builder;->extend(Landroid/app/Notification$Extender;)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->getExtras()Landroid/os/Bundle;
-HSPLandroid/app/Notification$Builder;->getStyle()Landroid/app/Notification$Style;
+HSPLandroid/app/Notification$Builder;->getAllExtras()Landroid/os/Bundle;
 HSPLandroid/app/Notification$Builder;->maybeCloneStrippedForDelivery(Landroid/app/Notification;ZLandroid/content/Context;)Landroid/app/Notification;
-HSPLandroid/app/Notification$Builder;->recoverBuilder(Landroid/content/Context;Landroid/app/Notification;)Landroid/app/Notification$Builder;
+HSPLandroid/app/Notification$Builder;->sanitizeColor()V
+HSPLandroid/app/Notification$Builder;->setAllowSystemGeneratedContextualActions(Z)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setAutoCancel(Z)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setBadgeIconType(I)Landroid/app/Notification$Builder;
+HSPLandroid/app/Notification$Builder;->setBubbleMetadata(Landroid/app/Notification$BubbleMetadata;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setCategory(Ljava/lang/String;)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->setChannelId(Ljava/lang/String;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setColor(I)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->setColorized(Z)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setContent(Landroid/widget/RemoteViews;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setContentInfo(Ljava/lang/CharSequence;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setContentIntent(Landroid/app/PendingIntent;)Landroid/app/Notification$Builder;
@@ -1845,21 +1652,9 @@
 HSPLandroid/app/Notification$Builder;->setVibrate([J)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setVisibility(I)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification$Builder;->setWhen(J)Landroid/app/Notification$Builder;
-HSPLandroid/app/Notification$Builder;->usesStandardHeader()Z
-HSPLandroid/app/Notification$InboxStyle;-><init>()V
-HSPLandroid/app/Notification$InboxStyle;->restoreFromExtras(Landroid/os/Bundle;)V
-HSPLandroid/app/Notification$MediaStyle;-><init>()V
-HPLandroid/app/Notification$MediaStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z
-HSPLandroid/app/Notification$MediaStyle;->restoreFromExtras(Landroid/os/Bundle;)V
-HSPLandroid/app/Notification$MessagingStyle$Message;->getMessageFromBundle(Landroid/os/Bundle;)Landroid/app/Notification$MessagingStyle$Message;
-HSPLandroid/app/Notification$MessagingStyle$Message;->getMessagesFromBundleArray([Landroid/os/Parcelable;)Ljava/util/List;
-HPLandroid/app/Notification$MessagingStyle$Message;->getSenderPerson()Landroid/app/Person;
-HPLandroid/app/Notification$MessagingStyle$Message;->getText()Ljava/lang/CharSequence;
-HPLandroid/app/Notification$MessagingStyle$Message;->getTimestamp()J
-HSPLandroid/app/Notification$MessagingStyle;-><init>()V
-HPLandroid/app/Notification$MessagingStyle;->areNotificationsVisiblyDifferent(Landroid/app/Notification$Style;)Z
-HPLandroid/app/Notification$MessagingStyle;->getMessages()Ljava/util/List;
-HSPLandroid/app/Notification$MessagingStyle;->restoreFromExtras(Landroid/os/Bundle;)V
+HSPLandroid/app/Notification$StandardTemplateParams;-><init>()V
+HSPLandroid/app/Notification$StandardTemplateParams;-><init>(Landroid/app/Notification$1;)V
+HSPLandroid/app/Notification$Style;-><init>()V
 HSPLandroid/app/Notification$Style;->addExtras(Landroid/os/Bundle;)V
 HSPLandroid/app/Notification$Style;->buildStyled(Landroid/app/Notification;)Landroid/app/Notification;
 HSPLandroid/app/Notification$Style;->internalSetBigContentTitle(Ljava/lang/CharSequence;)V
@@ -1867,107 +1662,72 @@
 HSPLandroid/app/Notification$Style;->reduceImageSizes(Landroid/content/Context;)V
 HSPLandroid/app/Notification$Style;->setBuilder(Landroid/app/Notification$Builder;)V
 HSPLandroid/app/Notification$Style;->validate(Landroid/content/Context;)V
-HSPLandroid/app/Notification$TvExtender;->extend(Landroid/app/Notification$Builder;)Landroid/app/Notification$Builder;
 HSPLandroid/app/Notification;-><init>()V
 HSPLandroid/app/Notification;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/Notification;->access$1002(Landroid/app/Notification;Landroid/app/Notification$BubbleMetadata;)Landroid/app/Notification$BubbleMetadata;
+HSPLandroid/app/Notification;->access$1102(Landroid/app/Notification;J)J
+HSPLandroid/app/Notification;->access$1302(Landroid/app/Notification;Landroid/graphics/drawable/Icon;)Landroid/graphics/drawable/Icon;
+HSPLandroid/app/Notification;->access$1402(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/Notification;->access$1502(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/Notification;->access$2002(Landroid/app/Notification;J)J
+HSPLandroid/app/Notification;->access$2202(Landroid/app/Notification;Z)Z
+HSPLandroid/app/Notification;->access$502(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/Notification;->access$600(Landroid/app/Notification;)Ljava/lang/String;
+HSPLandroid/app/Notification;->access$602(Landroid/app/Notification;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/Notification;->access$802(Landroid/app/Notification;I)I
+HSPLandroid/app/Notification;->access$902(Landroid/app/Notification;I)I
+HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/Context;Landroid/app/Notification;)V
 HSPLandroid/app/Notification;->addFieldsFromContext(Landroid/content/pm/ApplicationInfo;Landroid/app/Notification;)V
-HSPLandroid/app/Notification;->areActionsVisiblyDifferent(Landroid/app/Notification;Landroid/app/Notification;)Z
-HSPLandroid/app/Notification;->areRemoteViewsChanged(Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;)Z
-HSPLandroid/app/Notification;->areRemoteViewsChanged(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)Z
-HSPLandroid/app/Notification;->areStyledNotificationsVisiblyDifferent(Landroid/app/Notification$Builder;Landroid/app/Notification$Builder;)Z
-HSPLandroid/app/Notification;->clone()Landroid/app/Notification;
 HSPLandroid/app/Notification;->cloneInto(Landroid/app/Notification;Z)V
-HSPLandroid/app/Notification;->findRemoteInputActionPair(Z)Landroid/util/Pair;
-HPLandroid/app/Notification;->getAllowSystemGeneratedContextualActions()Z
+HSPLandroid/app/Notification;->fixDuplicateExtra(Landroid/os/Parcelable;Ljava/lang/String;)V
+HSPLandroid/app/Notification;->fixDuplicateExtras()V
 HSPLandroid/app/Notification;->getChannelId()Ljava/lang/String;
-HSPLandroid/app/Notification;->getContextualActions()Ljava/util/List;
 HSPLandroid/app/Notification;->getGroup()Ljava/lang/String;
-HSPLandroid/app/Notification;->getGroupAlertBehavior()I
 HSPLandroid/app/Notification;->getLargeIcon()Landroid/graphics/drawable/Icon;
 HSPLandroid/app/Notification;->getNotificationStyle()Ljava/lang/Class;
 HSPLandroid/app/Notification;->getNotificationStyleClass(Ljava/lang/String;)Ljava/lang/Class;
+HSPLandroid/app/Notification;->getShortcutId()Ljava/lang/String;
 HSPLandroid/app/Notification;->getSmallIcon()Landroid/graphics/drawable/Icon;
 HSPLandroid/app/Notification;->getSortKey()Ljava/lang/String;
-HSPLandroid/app/Notification;->getTimeoutAfter()J
-HSPLandroid/app/Notification;->hasCompletedProgress()Z
-HSPLandroid/app/Notification;->hasMediaSession()Z
-HSPLandroid/app/Notification;->isColorized()Z
-HSPLandroid/app/Notification;->isColorizedMedia()Z
-HSPLandroid/app/Notification;->isForegroundService()Z
-HSPLandroid/app/Notification;->isGroupChild()Z
-HSPLandroid/app/Notification;->isGroupSummary()Z
 HSPLandroid/app/Notification;->lambda$writeToParcel$0$Notification(Landroid/os/Parcel;Landroid/app/PendingIntent;Landroid/os/Parcel;I)V
-HSPLandroid/app/Notification;->lightenPayload()V
 HSPLandroid/app/Notification;->readFromParcelImpl(Landroid/os/Parcel;)V
 HSPLandroid/app/Notification;->reduceImageSizes(Landroid/content/Context;)V
 HSPLandroid/app/Notification;->reduceImageSizesForRemoteView(Landroid/widget/RemoteViews;Landroid/content/Context;Z)V
 HSPLandroid/app/Notification;->removeTextSizeSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/app/Notification;->safeCharSequence(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/app/Notification;->setSmallIcon(Landroid/graphics/drawable/Icon;)V
-HSPLandroid/app/Notification;->suppressAlertingDueToGrouping()Z
-HSPLandroid/app/Notification;->toString()Ljava/lang/String;
-HSPLandroid/app/Notification;->visibilityToString(I)Ljava/lang/String;
-HSPLandroid/app/Notification;->visitUris(Ljava/util/function/Consumer;)V
 HSPLandroid/app/Notification;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/Notification;->writeToParcelImpl(Landroid/os/Parcel;I)V
-HSPLandroid/app/NotificationChannel$1;-><init>()V
 HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannel;
 HSPLandroid/app/NotificationChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/NotificationChannel;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/NotificationChannel;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;I)V
-HSPLandroid/app/NotificationChannel;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/NotificationChannel;->getAudioAttributes()Landroid/media/AudioAttributes;
+HSPLandroid/app/NotificationChannel;->enableLights(Z)V
+HSPLandroid/app/NotificationChannel;->enableVibration(Z)V
+HSPLandroid/app/NotificationChannel;->getGroup()Ljava/lang/String;
 HSPLandroid/app/NotificationChannel;->getId()Ljava/lang/String;
 HSPLandroid/app/NotificationChannel;->getImportance()I
-HSPLandroid/app/NotificationChannel;->hasUserSetImportance()Z
-HSPLandroid/app/NotificationChannel;->longArrayToString([J)Ljava/lang/String;
-HSPLandroid/app/NotificationChannel;->populateFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/app/NotificationChannel;->populateFromXml(Lorg/xmlpull/v1/XmlPullParser;ZLandroid/content/Context;)V
-HSPLandroid/app/NotificationChannel;->safeAudioAttributes(Lorg/xmlpull/v1/XmlPullParser;)Landroid/media/AudioAttributes;
-HSPLandroid/app/NotificationChannel;->safeLongArray(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[J)[J
+HSPLandroid/app/NotificationChannel;->getLockscreenVisibility()I
+HSPLandroid/app/NotificationChannel;->getName()Ljava/lang/CharSequence;
+HSPLandroid/app/NotificationChannel;->getSound()Landroid/net/Uri;
+HSPLandroid/app/NotificationChannel;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/NotificationChannel;->setBlockableSystem(Z)V
 HSPLandroid/app/NotificationChannel;->setDescription(Ljava/lang/String;)V
-HSPLandroid/app/NotificationChannel;->setName(Ljava/lang/CharSequence;)V
+HSPLandroid/app/NotificationChannel;->setGroup(Ljava/lang/String;)V
 HSPLandroid/app/NotificationChannel;->setShowBadge(Z)V
 HSPLandroid/app/NotificationChannel;->setSound(Landroid/net/Uri;Landroid/media/AudioAttributes;)V
-HPLandroid/app/NotificationChannel;->toJson()Lorg/json/JSONObject;
-HSPLandroid/app/NotificationChannel;->tryParseInt(Ljava/lang/String;I)I
 HSPLandroid/app/NotificationChannel;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/NotificationChannel;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/app/NotificationChannel;->writeXml(Lorg/xmlpull/v1/XmlSerializer;ZLandroid/content/Context;)V
-HPLandroid/app/NotificationChannel;->writeXmlForBackup(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/Context;)V
-HSPLandroid/app/NotificationChannelGroup$1;-><init>()V
 HSPLandroid/app/NotificationChannelGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationChannelGroup;
 HSPLandroid/app/NotificationChannelGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/NotificationChannelGroup;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/NotificationChannelGroup;-><init>(Ljava/lang/String;Ljava/lang/CharSequence;)V
-HPLandroid/app/NotificationChannelGroup;->addChannel(Landroid/app/NotificationChannel;)V
-HPLandroid/app/NotificationChannelGroup;->clone()Landroid/app/NotificationChannelGroup;
-HPLandroid/app/NotificationChannelGroup;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/NotificationChannelGroup;->populateFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HPLandroid/app/NotificationChannelGroup;->toJson()Lorg/json/JSONObject;
+HSPLandroid/app/NotificationChannelGroup;->getId()Ljava/lang/String;
+HSPLandroid/app/NotificationChannelGroup;->getTrimmedString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/NotificationChannelGroup;->isBlocked()Z
 HSPLandroid/app/NotificationChannelGroup;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/NotificationChannelGroup;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/app/NotificationManager$Policy$1;-><init>()V
-HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/NotificationManager$Policy;
-HSPLandroid/app/NotificationManager$Policy$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/NotificationManager$Policy;->allowAlarms()Z
-HSPLandroid/app/NotificationManager$Policy;->allowCalls()Z
-HSPLandroid/app/NotificationManager$Policy;->allowMedia()Z
-HPLandroid/app/NotificationManager$Policy;->allowMessages()Z
-HSPLandroid/app/NotificationManager$Policy;->allowRepeatCallers()Z
-HSPLandroid/app/NotificationManager$Policy;->allowSystem()Z
-HSPLandroid/app/NotificationManager$Policy;->areAllVisualEffectsSuppressed(I)Z
-HSPLandroid/app/NotificationManager$Policy;->copy()Landroid/app/NotificationManager$Policy;
-HSPLandroid/app/NotificationManager$Policy;->effectToString(I)Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/NotificationManager$Policy;->hashCode()I
-HSPLandroid/app/NotificationManager$Policy;->priorityCategoriesToString(I)Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->priorityCategoryToString(I)Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->prioritySendersToString(I)Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->suppressedEffectsToString(I)Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->suppressedVisualEffectsEqual(II)Z
-HSPLandroid/app/NotificationManager$Policy;->toString()Ljava/lang/String;
-HSPLandroid/app/NotificationManager$Policy;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/NotificationManager$Policy;-><init>(IIIII)V
+HSPLandroid/app/NotificationManager$Policy;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/NotificationManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLandroid/app/NotificationManager;->areNotificationsEnabled()Z
 HSPLandroid/app/NotificationManager;->cancel(I)V
 HSPLandroid/app/NotificationManager;->cancel(Ljava/lang/String;I)V
@@ -1977,75 +1737,49 @@
 HSPLandroid/app/NotificationManager;->createNotificationChannelGroups(Ljava/util/List;)V
 HSPLandroid/app/NotificationManager;->createNotificationChannels(Ljava/util/List;)V
 HSPLandroid/app/NotificationManager;->deleteNotificationChannel(Ljava/lang/String;)V
+HSPLandroid/app/NotificationManager;->fixLegacySmallIcon(Landroid/app/Notification;Ljava/lang/String;)V
 HSPLandroid/app/NotificationManager;->fixNotification(Landroid/app/Notification;)Landroid/app/Notification;
-HSPLandroid/app/NotificationManager;->from(Landroid/content/Context;)Landroid/app/NotificationManager;
 HSPLandroid/app/NotificationManager;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification;
-HSPLandroid/app/NotificationManager;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
 HSPLandroid/app/NotificationManager;->getNotificationChannel(Ljava/lang/String;)Landroid/app/NotificationChannel;
 HSPLandroid/app/NotificationManager;->getNotificationChannels()Ljava/util/List;
 HSPLandroid/app/NotificationManager;->getService()Landroid/app/INotificationManager;
-HSPLandroid/app/NotificationManager;->getZenMode()I
-HPLandroid/app/NotificationManager;->matchesCallFilter(Landroid/os/Bundle;)Z
-HSPLandroid/app/NotificationManager;->notify(ILandroid/app/Notification;)V
 HSPLandroid/app/NotificationManager;->notify(Ljava/lang/String;ILandroid/app/Notification;)V
 HSPLandroid/app/NotificationManager;->notifyAsUser(Ljava/lang/String;ILandroid/app/Notification;Landroid/os/UserHandle;)V
-HSPLandroid/app/NotificationManager;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V
-HSPLandroid/app/NotificationManager;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V
-PLandroid/app/PackageInstallObserver$1;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
-PLandroid/app/PackageInstallObserver;-><init>()V
-HSPLandroid/app/PendingIntent$2;-><init>()V
+HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I
 HSPLandroid/app/PendingIntent$2;->createFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;
 HSPLandroid/app/PendingIntent$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/PendingIntent$FinishedDispatcher;-><init>(Landroid/app/PendingIntent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;)V
-HSPLandroid/app/PendingIntent$FinishedDispatcher;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HSPLandroid/app/PendingIntent$FinishedDispatcher;->run()V
+HSPLandroid/app/PendingIntent;-><init>(Landroid/content/IIntentSender;)V
+HSPLandroid/app/PendingIntent;-><init>(Landroid/os/IBinder;Ljava/lang/Object;)V
 HSPLandroid/app/PendingIntent;->buildServicePendingIntent(Landroid/content/Context;ILandroid/content/Intent;II)Landroid/app/PendingIntent;
-HSPLandroid/app/PendingIntent;->describeContents()I
 HSPLandroid/app/PendingIntent;->equals(Ljava/lang/Object;)Z
 HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
 HSPLandroid/app/PendingIntent;->getActivity(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;)Landroid/app/PendingIntent;
-HSPLandroid/app/PendingIntent;->getActivityAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/Bundle;Landroid/os/UserHandle;)Landroid/app/PendingIntent;
 HSPLandroid/app/PendingIntent;->getBroadcast(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
 HSPLandroid/app/PendingIntent;->getBroadcastAsUser(Landroid/content/Context;ILandroid/content/Intent;ILandroid/os/UserHandle;)Landroid/app/PendingIntent;
 HSPLandroid/app/PendingIntent;->getCreatorPackage()Ljava/lang/String;
-HSPLandroid/app/PendingIntent;->getCreatorUid()I
-HPLandroid/app/PendingIntent;->getIntent()Landroid/content/Intent;
 HSPLandroid/app/PendingIntent;->getService(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
-HSPLandroid/app/PendingIntent;->getTag(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/app/PendingIntent;->hashCode()I
 HSPLandroid/app/PendingIntent;->isActivity()Z
-HSPLandroid/app/PendingIntent;->isBroadcast()Z
-HSPLandroid/app/PendingIntent;->isForegroundService()Z
-HSPLandroid/app/PendingIntent;->readPendingIntentOrNullFromParcel(Landroid/os/Parcel;)Landroid/app/PendingIntent;
-HSPLandroid/app/PendingIntent;->send()V
-HSPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;)V
 HSPLandroid/app/PendingIntent;->send(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Bundle;)V
 HSPLandroid/app/PendingIntent;->sendAndReturnResult(Landroid/content/Context;ILandroid/content/Intent;Landroid/app/PendingIntent$OnFinished;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Bundle;)I
-HSPLandroid/app/PendingIntent;->toString()Ljava/lang/String;
-HSPLandroid/app/PendingIntent;->writePendingIntentOrNullToParcel(Landroid/app/PendingIntent;Landroid/os/Parcel;)V
+HSPLandroid/app/PendingIntent;->setOnMarshaledListener(Landroid/app/PendingIntent$OnMarshaledListener;)V
 HSPLandroid/app/PendingIntent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/Person$1;-><init>()V
 HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/Person;
 HSPLandroid/app/Person$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/Person$Builder;-><init>()V
-HSPLandroid/app/Person$Builder;->build()Landroid/app/Person;
-HSPLandroid/app/Person$Builder;->setKey(Ljava/lang/String;)Landroid/app/Person$Builder;
 HSPLandroid/app/Person;-><init>(Landroid/app/Person$Builder;)V
 HSPLandroid/app/Person;-><init>(Landroid/os/Parcel;)V
-HPLandroid/app/Person;->equals(Ljava/lang/Object;)Z
-HPLandroid/app/Person;->getKey()Ljava/lang/String;
-HPLandroid/app/Person;->getName()Ljava/lang/CharSequence;
-HPLandroid/app/Person;->hashCode()I
-HPLandroid/app/Person;->resolveToLegacyUri()Ljava/lang/String;
+HSPLandroid/app/Person;-><init>(Landroid/os/Parcel;Landroid/app/Person$1;)V
 HSPLandroid/app/Person;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/PictureInPictureParams$1;-><init>()V
-HSPLandroid/app/PictureInPictureParams$Builder;-><init>()V
-HSPLandroid/app/PictureInPictureParams$Builder;->build()Landroid/app/PictureInPictureParams;
-PLandroid/app/ProcessMemoryHighWaterMark$1;-><init>()V
-PLandroid/app/ProcessMemoryState$1;-><init>()V
-HPLandroid/app/ProcessMemoryState;-><init>(ILjava/lang/String;IJJJJJJ)V
-HSPLandroid/app/ProfilerInfo$1;-><init>()V
+HSPLandroid/app/PropertyInvalidatedCache$1;-><init>(Landroid/app/PropertyInvalidatedCache;IFZI)V
+HSPLandroid/app/PropertyInvalidatedCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HSPLandroid/app/PropertyInvalidatedCache;-><init>(ILjava/lang/String;)V
+HSPLandroid/app/PropertyInvalidatedCache;->getCurrentNonce()J
+HSPLandroid/app/PropertyInvalidatedCache;->maybeCheckConsistency(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/app/PropertyInvalidatedCache;->query(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/app/PropertyInvalidatedCache;->refresh(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/app/QueuedWork$QueuedWorkHandler;-><init>(Landroid/os/Looper;)V
 HSPLandroid/app/QueuedWork$QueuedWorkHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/app/QueuedWork;->access$000()V
 HSPLandroid/app/QueuedWork;->addFinisher(Ljava/lang/Runnable;)V
 HSPLandroid/app/QueuedWork;->getHandler()Landroid/os/Handler;
 HSPLandroid/app/QueuedWork;->hasPendingWork()Z
@@ -2053,31 +1787,34 @@
 HSPLandroid/app/QueuedWork;->queue(Ljava/lang/Runnable;Z)V
 HSPLandroid/app/QueuedWork;->removeFinisher(Ljava/lang/Runnable;)V
 HSPLandroid/app/QueuedWork;->waitToFinish()V
-HSPLandroid/app/RemoteAction$1;-><init>()V
-HSPLandroid/app/RemoteAction;-><init>(Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V
-PLandroid/app/RemoteAction;->getActionIntent()Landroid/app/PendingIntent;
-PLandroid/app/RemoteAction;->getIcon()Landroid/graphics/drawable/Icon;
-PLandroid/app/RemoteAction;->getTitle()Ljava/lang/CharSequence;
-PLandroid/app/RemoteAction;->shouldShowIcon()Z
-HSPLandroid/app/RemoteInput$1;-><init>()V
+HSPLandroid/app/ReceiverRestrictedContext;-><init>(Landroid/content/Context;)V
 HSPLandroid/app/RemoteInput$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/RemoteInput;
 HSPLandroid/app/RemoteInput$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/RemoteInput$1;->newArray(I)[Landroid/app/RemoteInput;
 HSPLandroid/app/RemoteInput$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/app/RemoteInput;-><init>(Landroid/os/Parcel;)V
-HPLandroid/app/RemoteInput;->getAllowFreeFormInput()Z
-HPLandroid/app/RemoteInput;->getChoices()[Ljava/lang/CharSequence;
-HSPLandroid/app/RemoteInput;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/RemoteInput;-><init>(Landroid/os/Parcel;Landroid/app/RemoteInput$1;)V
+HSPLandroid/app/ResourcesManager$ActivityResources;-><init>()V
+HSPLandroid/app/ResourcesManager$ActivityResources;-><init>(Landroid/app/ResourcesManager$1;)V
+HSPLandroid/app/ResourcesManager$ApkKey;-><init>(Ljava/lang/String;ZZ)V
 HSPLandroid/app/ResourcesManager$ApkKey;->equals(Ljava/lang/Object;)Z
 HSPLandroid/app/ResourcesManager$ApkKey;->hashCode()I
+HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;)V
+HSPLandroid/app/ResourcesManager$UpdateHandler;-><init>(Landroid/app/ResourcesManager;Landroid/app/ResourcesManager$1;)V
 HSPLandroid/app/ResourcesManager;-><init>()V
 HSPLandroid/app/ResourcesManager;->applyCompatConfigurationLocked(ILandroid/content/res/Configuration;)Z
 HSPLandroid/app/ResourcesManager;->applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Z
-HSPLandroid/app/ResourcesManager;->applyNewResourceDirsLocked(Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/app/ResourcesManager;->applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;Landroid/content/res/ResourcesKey;Landroid/content/res/ResourcesImpl;)V
+HSPLandroid/app/ResourcesManager;->applyConfigurationToResourcesLocked(Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/ResourcesKey;Landroid/content/res/ResourcesImpl;)V
+HSPLandroid/app/ResourcesManager;->cleanupReferences(Landroid/os/IBinder;)V
 HSPLandroid/app/ResourcesManager;->createAssetManager(Landroid/content/res/ResourcesKey;)Landroid/content/res/AssetManager;
 HSPLandroid/app/ResourcesManager;->createBaseActivityResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;)Landroid/content/res/Resources;
+HSPLandroid/app/ResourcesManager;->createResources(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Ljava/lang/ClassLoader;)Landroid/content/res/Resources;
+HSPLandroid/app/ResourcesManager;->createResourcesForActivityLocked(Landroid/os/IBinder;Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
 HSPLandroid/app/ResourcesManager;->createResourcesImpl(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
-HSPLandroid/app/ResourcesManager;->findKeyForResourceImplLocked(Landroid/content/res/ResourcesImpl;)Landroid/content/res/ResourcesKey;
+HSPLandroid/app/ResourcesManager;->createResourcesLocked(Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
+HSPLandroid/app/ResourcesManager;->findOrCreateResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
+HSPLandroid/app/ResourcesManager;->findResourcesForActivityLocked(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Ljava/lang/ClassLoader;)Landroid/content/res/Resources;
 HSPLandroid/app/ResourcesManager;->findResourcesImplForKeyLocked(Landroid/content/res/ResourcesKey;)Landroid/content/res/ResourcesImpl;
 HSPLandroid/app/ResourcesManager;->generateConfig(Landroid/content/res/ResourcesKey;Landroid/util/DisplayMetrics;)Landroid/content/res/Configuration;
 HSPLandroid/app/ResourcesManager;->getAdjustedDisplay(ILandroid/content/res/Resources;)Landroid/view/Display;
@@ -2086,25 +1823,21 @@
 HSPLandroid/app/ResourcesManager;->getDisplayMetrics()Landroid/util/DisplayMetrics;
 HSPLandroid/app/ResourcesManager;->getDisplayMetrics(ILandroid/view/DisplayAdjustments;)Landroid/util/DisplayMetrics;
 HSPLandroid/app/ResourcesManager;->getInstance()Landroid/app/ResourcesManager;
-HSPLandroid/app/ResourcesManager;->getOrCreateResources(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;Ljava/lang/ClassLoader;)Landroid/content/res/Resources;
-HSPLandroid/app/ResourcesManager;->getOrCreateResourcesForActivityLocked(Landroid/os/IBinder;Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
-HSPLandroid/app/ResourcesManager;->getOrCreateResourcesLocked(Ljava/lang/ClassLoader;Landroid/content/res/ResourcesImpl;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
+HSPLandroid/app/ResourcesManager;->getOrCreateActivityResourcesStructLocked(Landroid/os/IBinder;)Landroid/app/ResourcesManager$ActivityResources;
 HSPLandroid/app/ResourcesManager;->getResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;)Landroid/content/res/Resources;
+HSPLandroid/app/ResourcesManager;->getResources(Landroid/os/IBinder;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/ClassLoader;Ljava/util/List;)Landroid/content/res/Resources;
 HSPLandroid/app/ResourcesManager;->isSameResourcesOverrideConfig(Landroid/os/IBinder;Landroid/content/res/Configuration;)Z
+HSPLandroid/app/ResourcesManager;->lambda$static$0(Ljava/lang/ref/WeakReference;)Z
 HSPLandroid/app/ResourcesManager;->loadApkAssets(Ljava/lang/String;ZZ)Landroid/content/res/ApkAssets;
 HSPLandroid/app/ResourcesManager;->overlayPathToIdmapPath(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/app/ResourcesManager;->rebaseKeyForActivity(Landroid/os/IBinder;Landroid/content/res/ResourcesKey;)V
 HSPLandroid/app/ResourcesManager;->redirectResourcesToNewImplLocked(Landroid/util/ArrayMap;)V
 HSPLandroid/app/ResourcesManager;->updateResourcesForActivity(Landroid/os/IBinder;Landroid/content/res/Configuration;IZ)V
-HSPLandroid/app/ResultInfo$1;-><init>()V
-HPLandroid/app/ResultInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/SearchableInfo$1;-><init>()V
-HSPLandroid/app/SearchableInfo;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;Landroid/content/ComponentName;)V
-HSPLandroid/app/SearchableInfo;->createActivityContext(Landroid/content/Context;Landroid/content/ComponentName;)Landroid/content/Context;
-HSPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Landroid/content/pm/ActivityInfo;I)Landroid/app/SearchableInfo;
-HSPLandroid/app/SearchableInfo;->getActivityMetaData(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/ComponentName;)Landroid/app/SearchableInfo;
 HSPLandroid/app/Service;-><init>()V
-HPLandroid/app/Service;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLandroid/app/Service;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Ljava/lang/String;Landroid/os/IBinder;Landroid/app/Application;Ljava/lang/Object;)V
+HSPLandroid/app/Service;->detachAndCleanUp()V
 HSPLandroid/app/Service;->getApplication()Landroid/app/Application;
+HSPLandroid/app/Service;->getClassName()Ljava/lang/String;
 HSPLandroid/app/Service;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/app/Service;->onCreate()V
 HSPLandroid/app/Service;->onDestroy()V
@@ -2118,20 +1851,24 @@
 HSPLandroid/app/Service;->stopForeground(Z)V
 HSPLandroid/app/Service;->stopSelf()V
 HSPLandroid/app/Service;->stopSelf(I)V
-HSPLandroid/app/ServiceStartArgs$1;-><init>()V
+HSPLandroid/app/ServiceConnectionLeaked;-><init>(Ljava/lang/String;)V
 HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ServiceStartArgs;
 HSPLandroid/app/ServiceStartArgs$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/ServiceStartArgs;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/ServiceStartArgs;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/SharedElementCallback$1;-><init>()V
+HSPLandroid/app/SharedPreferencesImpl$1;-><init>(Landroid/app/SharedPreferencesImpl;Ljava/lang/String;)V
 HSPLandroid/app/SharedPreferencesImpl$1;->run()V
+HSPLandroid/app/SharedPreferencesImpl$2;-><init>(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;ZLjava/lang/Runnable;)V
 HSPLandroid/app/SharedPreferencesImpl$2;->run()V
+HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;-><init>(Landroid/app/SharedPreferencesImpl$EditorImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;J)V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl$1;->run()V
+HSPLandroid/app/SharedPreferencesImpl$EditorImpl$2;-><init>(Landroid/app/SharedPreferencesImpl$EditorImpl;Ljava/lang/Runnable;)V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl$2;->run()V
+HSPLandroid/app/SharedPreferencesImpl$EditorImpl;-><init>(Landroid/app/SharedPreferencesImpl;)V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->apply()V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->clear()Landroid/content/SharedPreferences$Editor;
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commit()Z
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->commitToMemory()Landroid/app/SharedPreferencesImpl$MemoryCommitResult;
+HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->lambda$notifyListeners$0$SharedPreferencesImpl$EditorImpl(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->notifyListeners(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;)V
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putBoolean(Ljava/lang/String;Z)Landroid/content/SharedPreferences$Editor;
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putFloat(Ljava/lang/String;F)Landroid/content/SharedPreferences$Editor;
@@ -2140,8 +1877,23 @@
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putString(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->putStringSet(Ljava/lang/String;Ljava/util/Set;)Landroid/content/SharedPreferences$Editor;
 HSPLandroid/app/SharedPreferencesImpl$EditorImpl;->remove(Ljava/lang/String;)Landroid/content/SharedPreferences$Editor;
+HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;-><init>(JZLjava/util/List;Ljava/util/Set;Ljava/util/Map;)V
+HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;-><init>(JZLjava/util/List;Ljava/util/Set;Ljava/util/Map;Landroid/app/SharedPreferencesImpl$1;)V
 HSPLandroid/app/SharedPreferencesImpl$MemoryCommitResult;->setDiskWriteResult(ZZ)V
 HSPLandroid/app/SharedPreferencesImpl;-><init>(Ljava/io/File;I)V
+HSPLandroid/app/SharedPreferencesImpl;->access$000(Landroid/app/SharedPreferencesImpl;)V
+HSPLandroid/app/SharedPreferencesImpl;->access$100(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Ljava/lang/Runnable;)V
+HSPLandroid/app/SharedPreferencesImpl;->access$200(Landroid/app/SharedPreferencesImpl;)Ljava/lang/Object;
+HSPLandroid/app/SharedPreferencesImpl;->access$300(Landroid/app/SharedPreferencesImpl;)I
+HSPLandroid/app/SharedPreferencesImpl;->access$308(Landroid/app/SharedPreferencesImpl;)I
+HSPLandroid/app/SharedPreferencesImpl;->access$310(Landroid/app/SharedPreferencesImpl;)I
+HSPLandroid/app/SharedPreferencesImpl;->access$400(Landroid/app/SharedPreferencesImpl;)Ljava/util/Map;
+HSPLandroid/app/SharedPreferencesImpl;->access$402(Landroid/app/SharedPreferencesImpl;Ljava/util/Map;)Ljava/util/Map;
+HSPLandroid/app/SharedPreferencesImpl;->access$500(Landroid/app/SharedPreferencesImpl;)Ljava/util/WeakHashMap;
+HSPLandroid/app/SharedPreferencesImpl;->access$600(Landroid/app/SharedPreferencesImpl;)J
+HSPLandroid/app/SharedPreferencesImpl;->access$608(Landroid/app/SharedPreferencesImpl;)J
+HSPLandroid/app/SharedPreferencesImpl;->access$800(Landroid/app/SharedPreferencesImpl;)Ljava/lang/Object;
+HSPLandroid/app/SharedPreferencesImpl;->access$900(Landroid/app/SharedPreferencesImpl;Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V
 HSPLandroid/app/SharedPreferencesImpl;->awaitLoadedLocked()V
 HSPLandroid/app/SharedPreferencesImpl;->contains(Ljava/lang/String;)Z
 HSPLandroid/app/SharedPreferencesImpl;->createFileOutputStream(Ljava/io/File;)Ljava/io/FileOutputStream;
@@ -2156,339 +1908,196 @@
 HSPLandroid/app/SharedPreferencesImpl;->getStringSet(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;
 HSPLandroid/app/SharedPreferencesImpl;->hasFileChangedUnexpectedly()Z
 HSPLandroid/app/SharedPreferencesImpl;->loadFromDisk()V
+HSPLandroid/app/SharedPreferencesImpl;->makeBackupFile(Ljava/io/File;)Ljava/io/File;
 HSPLandroid/app/SharedPreferencesImpl;->registerOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V
 HSPLandroid/app/SharedPreferencesImpl;->startLoadFromDisk()V
 HSPLandroid/app/SharedPreferencesImpl;->startReloadIfChangedUnexpectedly()V
 HSPLandroid/app/SharedPreferencesImpl;->unregisterOnSharedPreferenceChangeListener(Landroid/content/SharedPreferences$OnSharedPreferenceChangeListener;)V
 HSPLandroid/app/SharedPreferencesImpl;->writeToFile(Landroid/app/SharedPreferencesImpl$MemoryCommitResult;Z)V
-HSPLandroid/app/StatsManager;->getIStatsManagerLocked()Landroid/os/IStatsManager;
-HSPLandroid/app/StatusBarManager;->getService()Lcom/android/internal/statusbar/IStatusBarService;
-HSPLandroid/app/SynchronousUserSwitchObserver;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$100;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$101;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$101;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager;
-HSPLandroid/app/SystemServiceRegistry$101;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$102;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$102;->createService(Landroid/app/ContextImpl;)Landroid/view/contentcapture/ContentCaptureManager;
+HSPLandroid/app/StatusBarManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/SystemServiceRegistry$102;->createService(Landroid/app/ContextImpl;)Landroid/app/slice/SliceManager;
 HSPLandroid/app/SystemServiceRegistry$102;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$103;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$104;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$105;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$106;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$107;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$108;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Landroid/app/slice/SliceManager;
-HSPLandroid/app/SystemServiceRegistry$108;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$109;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$10;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$105;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$107;->createService(Landroid/app/ContextImpl;)Landroid/app/role/RoleManager;
+HSPLandroid/app/SystemServiceRegistry$107;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Landroid/bluetooth/BluetoothManager;
 HSPLandroid/app/SystemServiceRegistry$10;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$110;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Landroid/app/timedetector/TimeDetector;
-HSPLandroid/app/SystemServiceRegistry$110;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$111;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$111;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionManager;
-HSPLandroid/app/SystemServiceRegistry$111;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$112;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Landroid/permission/PermissionControllerManager;
-HSPLandroid/app/SystemServiceRegistry$112;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$113;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Landroid/app/role/RoleManager;
-HSPLandroid/app/SystemServiceRegistry$113;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$114;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$115;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$116;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$11;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$12;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$112;->createService()Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$114;->createService()Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$114;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$115;->createService()Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$115;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$116;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$117;->createService()Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$117;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$118;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$119;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$120;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Landroid/view/textclassifier/TextClassificationManager;
 HSPLandroid/app/SystemServiceRegistry$12;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$13;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Landroid/content/ClipboardManager;
 HSPLandroid/app/SystemServiceRegistry$13;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$14;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/content/Context;)Landroid/net/ConnectivityManager;
 HSPLandroid/app/SystemServiceRegistry$14;->createService(Landroid/content/Context;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$15;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$16;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$17;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$18;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$18;->createService()Landroid/location/CountryDetector;
-HSPLandroid/app/SystemServiceRegistry$18;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$19;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$19;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager;
-HSPLandroid/app/SystemServiceRegistry$19;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$1;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/AccessibilityManager;
 HSPLandroid/app/SystemServiceRegistry$1;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$20;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Landroid/app/DownloadManager;
-HSPLandroid/app/SystemServiceRegistry$20;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$21;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager;
+HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager;
 HSPLandroid/app/SystemServiceRegistry$21;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$22;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Landroid/nfc/NfcManager;
 HSPLandroid/app/SystemServiceRegistry$22;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$23;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/os/DropBoxManager;
+HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/app/admin/DevicePolicyManager;
+HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager;
 HSPLandroid/app/SystemServiceRegistry$23;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$24;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$24;->createService()Landroid/hardware/input/InputManager;
-HSPLandroid/app/SystemServiceRegistry$24;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$25;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager;
+HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Landroid/app/DownloadManager;
+HSPLandroid/app/SystemServiceRegistry$24;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Landroid/os/BatteryManager;
 HSPLandroid/app/SystemServiceRegistry$25;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$26;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/ColorDisplayManager;
 HSPLandroid/app/SystemServiceRegistry$26;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$27;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$27;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager;
-HSPLandroid/app/SystemServiceRegistry$27;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$28;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Landroid/view/textservice/TextServicesManager;
-HSPLandroid/app/SystemServiceRegistry$28;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$29;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$29;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager;
+HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager;
+HSPLandroid/app/SystemServiceRegistry$27;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$28;->createService()Landroid/hardware/input/InputManager;
+HSPLandroid/app/SystemServiceRegistry$28;->createService()Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$29;->createService(Landroid/app/ContextImpl;)Landroid/hardware/display/DisplayManager;
 HSPLandroid/app/SystemServiceRegistry$29;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$2;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$29;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager;
+HSPLandroid/app/SystemServiceRegistry$29;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Landroid/view/accessibility/CaptioningManager;
 HSPLandroid/app/SystemServiceRegistry$2;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$30;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater;
 HSPLandroid/app/SystemServiceRegistry$30;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$31;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager;
+HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager;
 HSPLandroid/app/SystemServiceRegistry$31;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$32;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/net/NetworkPolicyManager;
+HSPLandroid/app/SystemServiceRegistry$31;->getService(Landroid/app/ContextImpl;)Landroid/view/inputmethod/InputMethodManager;
+HSPLandroid/app/SystemServiceRegistry$31;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater;
 HSPLandroid/app/SystemServiceRegistry$32;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$33;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;
+HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/app/KeyguardManager;
+HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager;
 HSPLandroid/app/SystemServiceRegistry$33;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$34;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$35;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
+HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;
+HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/view/LayoutInflater;
+HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;
+HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Landroid/location/LocationManager;
 HSPLandroid/app/SystemServiceRegistry$35;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$36;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$37;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$38;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager;
-HSPLandroid/app/SystemServiceRegistry$38;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$39;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$3;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
+HSPLandroid/app/SystemServiceRegistry$36;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Landroid/app/NotificationManager;
+HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
+HSPLandroid/app/SystemServiceRegistry$37;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Landroid/os/PowerManager;
+HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Landroid/accounts/AccountManager;
 HSPLandroid/app/SystemServiceRegistry$3;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$40;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Landroid/app/StatsManager;
+HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager;
 HSPLandroid/app/SystemServiceRegistry$40;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$41;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Landroid/app/StatusBarManager;
-HSPLandroid/app/SystemServiceRegistry$41;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$42;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
+HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorManager;
 HSPLandroid/app/SystemServiceRegistry$42;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$43;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/StorageStatsManager;
+HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
 HSPLandroid/app/SystemServiceRegistry$43;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$44;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/os/SystemUpdateManager;
+HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
 HSPLandroid/app/SystemServiceRegistry$44;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$45;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyManager;
+HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Landroid/os/storage/StorageManager;
 HSPLandroid/app/SystemServiceRegistry$45;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$46;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Landroid/telephony/SubscriptionManager;
+HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/StorageStatsManager;
 HSPLandroid/app/SystemServiceRegistry$46;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$47;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$48;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Landroid/telephony/CarrierConfigManager;
+HSPLandroid/app/SystemServiceRegistry$47;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$48;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$49;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager;
+HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Landroid/telephony/TelephonyRegistryManager;
 HSPLandroid/app/SystemServiceRegistry$49;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$4;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityManager;
 HSPLandroid/app/SystemServiceRegistry$4;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$50;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Landroid/telephony/euicc/EuiccManager;
+HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Landroid/telecom/TelecomManager;
 HSPLandroid/app/SystemServiceRegistry$50;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$51;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$52;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$51;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Landroid/app/UiModeManager;
 HSPLandroid/app/SystemServiceRegistry$52;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$53;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Landroid/hardware/usb/UsbManager;
 HSPLandroid/app/SystemServiceRegistry$53;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$54;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$55;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$56;-><init>()V
 HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Landroid/os/Vibrator;
 HSPLandroid/app/SystemServiceRegistry$56;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$57;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Landroid/app/WallpaperManager;
+HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
 HSPLandroid/app/SystemServiceRegistry$57;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$58;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$59;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Landroid/net/wifi/WifiManager;
+HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
+HSPLandroid/app/SystemServiceRegistry$58;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
+HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
 HSPLandroid/app/SystemServiceRegistry$59;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$5;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Landroid/app/ActivityTaskManager;
-HSPLandroid/app/SystemServiceRegistry$5;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$60;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$60;->createService()Landroid/net/wifi/p2p/WifiP2pManager;
-HSPLandroid/app/SystemServiceRegistry$60;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$61;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$62;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$63;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$64;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$65;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$66;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$66;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
-HSPLandroid/app/SystemServiceRegistry$66;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$67;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
-HSPLandroid/app/SystemServiceRegistry$67;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$68;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
-HSPLandroid/app/SystemServiceRegistry$68;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$69;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImpl;)Landroid/hardware/camera2/CameraManager;
-HSPLandroid/app/SystemServiceRegistry$69;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$6;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$70;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$70;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/LauncherApps;
+HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
+HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
+HSPLandroid/app/SystemServiceRegistry$60;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
+HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
+HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Landroid/view/WindowManager;
+HSPLandroid/app/SystemServiceRegistry$61;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
+HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Landroid/os/UserManager;
+HSPLandroid/app/SystemServiceRegistry$62;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Landroid/app/AppOpsManager;
+HSPLandroid/app/SystemServiceRegistry$63;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$64;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$70;->createService(Landroid/app/ContextImpl;)Landroid/media/session/MediaSessionManager;
 HSPLandroid/app/SystemServiceRegistry$70;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$71;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Landroid/content/RestrictionsManager;
-HSPLandroid/app/SystemServiceRegistry$71;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$72;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$73;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$74;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$75;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$75;->createService(Landroid/app/ContextImpl;)Landroid/media/session/MediaSessionManager;
 HSPLandroid/app/SystemServiceRegistry$75;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$76;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$76;->createService()Landroid/app/trust/TrustManager;
-HSPLandroid/app/SystemServiceRegistry$76;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$77;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Landroid/hardware/fingerprint/FingerprintManager;
 HSPLandroid/app/SystemServiceRegistry$77;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$78;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$79;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$7;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$78;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/NetworkStatsManager;
+HSPLandroid/app/SystemServiceRegistry$79;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Landroid/app/AlarmManager;
 HSPLandroid/app/SystemServiceRegistry$7;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$80;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$80;->createService(Landroid/app/ContextImpl;)Landroid/hardware/biometrics/BiometricManager;
-HSPLandroid/app/SystemServiceRegistry$80;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$81;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$82;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$82;->createService(Landroid/app/ContextImpl;)Landroid/net/NetworkScoreManager;
-HSPLandroid/app/SystemServiceRegistry$82;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$83;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/UsageStatsManager;
+HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager;
 HSPLandroid/app/SystemServiceRegistry$83;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$84;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Landroid/app/usage/NetworkStatsManager;
-HSPLandroid/app/SystemServiceRegistry$84;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$85;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$85;->createService()Landroid/app/job/JobScheduler;
-HSPLandroid/app/SystemServiceRegistry$85;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$86;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$87;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$88;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$89;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Landroid/appwidget/AppWidgetManager;
-HSPLandroid/app/SystemServiceRegistry$89;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$8;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager;
+HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Landroid/media/AudioManager;
 HSPLandroid/app/SystemServiceRegistry$8;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$90;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$91;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$92;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$93;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$94;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImpl;)Landroid/content/pm/ShortcutManager;
+HSPLandroid/app/SystemServiceRegistry$91;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$94;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$95;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$96;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$97;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Landroid/os/health/SystemHealthManager;
-HSPLandroid/app/SystemServiceRegistry$97;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$98;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$99;-><init>()V
-HSPLandroid/app/SystemServiceRegistry$9;-><init>()V
+HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Landroid/view/autofill/AutofillManager;
+HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry$96;->createService(Landroid/app/ContextImpl;)Landroid/view/contentcapture/ContentCaptureManager;
+HSPLandroid/app/SystemServiceRegistry$96;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$9;->createService(Landroid/app/ContextImpl;)Landroid/media/MediaRouter;
 HSPLandroid/app/SystemServiceRegistry$9;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$CachedServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
 HSPLandroid/app/SystemServiceRegistry$StaticServiceFetcher;->getService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry;->registerService(Ljava/lang/String;Ljava/lang/Class;Landroid/app/SystemServiceRegistry$ServiceFetcher;)V
+HSPLandroid/app/SystemServiceRegistry;->createServiceCache()[Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry;->getSystemService(Landroid/app/ContextImpl;Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroid/app/SystemServiceRegistry;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;
+HSPLandroid/app/TaskInfo;-><init>()V
 HSPLandroid/app/TaskInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/TaskInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/TaskStackListener;-><init>()V
-HSPLandroid/app/TaskStackListener;->onActivityRequestedOrientationChanged(II)V
-HSPLandroid/app/TaskStackListener;->onTaskCreated(ILandroid/content/ComponentName;)V
-HSPLandroid/app/TaskStackListener;->onTaskDescriptionChanged(ILandroid/app/ActivityManager$TaskDescription;)V
-HSPLandroid/app/TaskStackListener;->onTaskDescriptionChanged(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HPLandroid/app/TaskStackListener;->onTaskMovedToFront(I)V
-HPLandroid/app/TaskStackListener;->onTaskMovedToFront(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(I)V
-HSPLandroid/app/TaskStackListener;->onTaskRemovalStarted(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HSPLandroid/app/TaskStackListener;->onTaskRemoved(I)V
-HPLandroid/app/TaskStackListener;->onTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
+HSPLandroid/app/UiModeManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/app/UiModeManager;->getCurrentModeType()I
-HSPLandroid/app/UiModeManager;->getNightMode()I
-HSPLandroid/app/UriGrantsManager$1;-><init>()V
 HSPLandroid/app/UriGrantsManager$1;->create()Landroid/app/IUriGrantsManager;
 HSPLandroid/app/UriGrantsManager$1;->create()Ljava/lang/Object;
 HSPLandroid/app/UriGrantsManager;->getService()Landroid/app/IUriGrantsManager;
-HSPLandroid/app/UserSwitchObserver;-><init>()V
-HPLandroid/app/UserSwitchObserver;->onForegroundProfileSwitch(I)V
-HSPLandroid/app/UserSwitchObserver;->onLockedBootComplete(I)V
-HSPLandroid/app/WallpaperColors$1;-><init>()V
 HSPLandroid/app/WallpaperColors$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperColors;
 HSPLandroid/app/WallpaperColors$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/WallpaperColors;-><init>(Landroid/graphics/Color;Landroid/graphics/Color;Landroid/graphics/Color;I)V
 HSPLandroid/app/WallpaperColors;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/WallpaperColors;->getColorHints()I
 HSPLandroid/app/WallpaperColors;->getMainColors()Ljava/util/List;
-HSPLandroid/app/WallpaperColors;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/WallpaperInfo$1;-><init>()V
-HSPLandroid/app/WallpaperInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V
-HSPLandroid/app/WallpaperInfo;->getPackageName()Ljava/lang/String;
-HSPLandroid/app/WallpaperInfo;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/WallpaperManager$ColorManagementProxy;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/WallpaperManager$Globals;-><init>(Landroid/app/IWallpaperManager;Landroid/os/Looper;)V
 HSPLandroid/app/WallpaperManager$Globals;->forgetLoadedWallpaper()V
-HSPLandroid/app/WallpaperManager$Globals;->getWallpaperColors(III)Landroid/app/WallpaperColors;
-HSPLandroid/app/WallpaperManager;->getDefaultWallpaperComponent(Landroid/content/Context;)Landroid/content/ComponentName;
-HSPLandroid/app/WallpaperManager;->getWallpaperColors(I)Landroid/app/WallpaperColors;
-HSPLandroid/app/WallpaperManager;->getWallpaperColors(II)Landroid/app/WallpaperColors;
-HSPLandroid/app/WallpaperManager;->getWallpaperFile(II)Landroid/os/ParcelFileDescriptor;
-HSPLandroid/app/WallpaperManager;->getWallpaperIdForUser(II)I
+HSPLandroid/app/WallpaperManager;-><init>(Landroid/app/IWallpaperManager;Landroid/content/Context;Landroid/os/Handler;)V
 HSPLandroid/app/WallpaperManager;->initGlobals(Landroid/app/IWallpaperManager;Landroid/os/Looper;)V
-HPLandroid/app/WallpaperManager;->isWallpaperBackupEligible(I)Z
-HSPLandroid/app/WindowConfiguration$1;-><init>()V
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WindowConfiguration;
 HSPLandroid/app/WindowConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/WindowConfiguration;-><init>()V
-HSPLandroid/app/WindowConfiguration;->activityTypeToString(I)Ljava/lang/String;
-HSPLandroid/app/WindowConfiguration;->canReceiveKeys()Z
-HPLandroid/app/WindowConfiguration;->canResizeTask()Z
+HSPLandroid/app/WindowConfiguration;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/WindowConfiguration;-><init>(Landroid/os/Parcel;Landroid/app/WindowConfiguration$1;)V
 HSPLandroid/app/WindowConfiguration;->compareTo(Landroid/app/WindowConfiguration;)I
 HSPLandroid/app/WindowConfiguration;->diff(Landroid/app/WindowConfiguration;Z)J
 HSPLandroid/app/WindowConfiguration;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/WindowConfiguration;->getActivityType()I
 HSPLandroid/app/WindowConfiguration;->getAppBounds()Landroid/graphics/Rect;
-HSPLandroid/app/WindowConfiguration;->getBounds()Landroid/graphics/Rect;
-HSPLandroid/app/WindowConfiguration;->getRotation()I
 HSPLandroid/app/WindowConfiguration;->getWindowingMode()I
-HSPLandroid/app/WindowConfiguration;->hasMovementAnimations()Z
 HSPLandroid/app/WindowConfiguration;->hasWindowDecorCaption()Z
 HSPLandroid/app/WindowConfiguration;->hasWindowShadow()Z
-HSPLandroid/app/WindowConfiguration;->isAlwaysOnTop()Z
-HSPLandroid/app/WindowConfiguration;->persistTaskBounds()Z
+HSPLandroid/app/WindowConfiguration;->isFloating(I)Z
 HSPLandroid/app/WindowConfiguration;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/WindowConfiguration;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V
 HSPLandroid/app/WindowConfiguration;->setActivityType(I)V
+HSPLandroid/app/WindowConfiguration;->setAlwaysOnTop(I)V
 HSPLandroid/app/WindowConfiguration;->setAppBounds(IIII)V
 HSPLandroid/app/WindowConfiguration;->setAppBounds(Landroid/graphics/Rect;)V
 HSPLandroid/app/WindowConfiguration;->setBounds(Landroid/graphics/Rect;)V
@@ -2497,426 +2106,247 @@
 HSPLandroid/app/WindowConfiguration;->setTo(Landroid/app/WindowConfiguration;)V
 HSPLandroid/app/WindowConfiguration;->setToDefaults()V
 HSPLandroid/app/WindowConfiguration;->setWindowingMode(I)V
-HSPLandroid/app/WindowConfiguration;->supportSplitScreenWindowingMode()Z
 HSPLandroid/app/WindowConfiguration;->tasksAreFloating()Z
-HSPLandroid/app/WindowConfiguration;->toString()Ljava/lang/String;
 HSPLandroid/app/WindowConfiguration;->unset()V
 HSPLandroid/app/WindowConfiguration;->updateFrom(Landroid/app/WindowConfiguration;)I
-HSPLandroid/app/WindowConfiguration;->useWindowFrameForBackdrop()Z
-HSPLandroid/app/WindowConfiguration;->windowingModeToString(I)Ljava/lang/String;
-HSPLandroid/app/WindowConfiguration;->windowsAreScaleable()Z
 HSPLandroid/app/WindowConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/WindowConfiguration;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLandroid/app/admin/DeviceAdminInfo$1;-><init>()V
-HSPLandroid/app/admin/DeviceAdminInfo$PolicyInfo;-><init>(ILjava/lang/String;II)V
-HSPLandroid/app/admin/DeviceAdminInfo$PolicyInfo;-><init>(ILjava/lang/String;IIII)V
-HSPLandroid/app/admin/DeviceAdminInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ActivityInfo;)V
-HSPLandroid/app/admin/DeviceAdminInfo;->getComponent()Landroid/content/ComponentName;
-HSPLandroid/app/admin/DeviceAdminInfo;->getPackageName()Ljava/lang/String;
-HSPLandroid/app/admin/DeviceAdminInfo;->readPoliciesFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/app/admin/DeviceAdminInfo;->writePoliciesToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/app/admin/DevicePolicyCache;->getInstance()Landroid/app/admin/DevicePolicyCache;
-PLandroid/app/admin/DevicePolicyEventLogger;->createEvent(I)Landroid/app/admin/DevicePolicyEventLogger;
-PLandroid/app/admin/DevicePolicyEventLogger;->write()V
-HSPLandroid/app/admin/DevicePolicyManager;->checkDeviceIdentifierAccessAsUser(Ljava/lang/String;I)Z
-HPLandroid/app/admin/DevicePolicyManager;->getAccountTypesWithManagementDisabledAsUser(I)[Ljava/lang/String;
+HSPLandroid/app/admin/DevicePolicyManager;-><init>(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;)V
+HSPLandroid/app/admin/DevicePolicyManager;-><init>(Landroid/content/Context;Landroid/app/admin/IDevicePolicyManager;Z)V
+HSPLandroid/app/admin/DevicePolicyManager;->getActiveAdmins()Ljava/util/List;
+HSPLandroid/app/admin/DevicePolicyManager;->getActiveAdminsAsUser(I)Ljava/util/List;
 HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentInner(Z)Landroid/content/ComponentName;
-HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentOnAnyUser()Landroid/content/ComponentName;
-HSPLandroid/app/admin/DevicePolicyManager;->getGuestUserDisabled(Landroid/content/ComponentName;)Z
 HSPLandroid/app/admin/DevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;I)I
-HSPLandroid/app/admin/DevicePolicyManager;->getMaximumTimeToLock(Landroid/content/ComponentName;I)J
-HSPLandroid/app/admin/DevicePolicyManager;->getPasswordQuality(Landroid/content/ComponentName;I)I
 HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
-HPLandroid/app/admin/DevicePolicyManager;->getProfileOwnerAsUser(Landroid/os/UserHandle;)Landroid/content/ComponentName;
-HPLandroid/app/admin/DevicePolicyManager;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;I)J
-HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus()I
-HSPLandroid/app/admin/DevicePolicyManager;->getStorageEncryptionStatus(I)I
-HSPLandroid/app/admin/DevicePolicyManager;->isDeviceManaged()Z
 HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerApp(Ljava/lang/String;)Z
+HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerAppOnAnyUserInner(Ljava/lang/String;Z)Z
 HSPLandroid/app/admin/DevicePolicyManager;->isDeviceOwnerAppOnCallingUser(Ljava/lang/String;)Z
-HPLandroid/app/admin/DevicePolicyManager;->isDeviceProvisioned()Z
-HPLandroid/app/admin/DevicePolicyManager;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z
 HSPLandroid/app/admin/DevicePolicyManager;->isProfileOwnerApp(Ljava/lang/String;)Z
 HSPLandroid/app/admin/DevicePolicyManager;->myUserId()I
-HPLandroid/app/admin/DevicePolicyManager;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V
-PLandroid/app/admin/IDeviceAdminService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDeviceAdminService;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->checkDeviceIdentifierAccess(Ljava/lang/String;III)Z
+HSPLandroid/app/admin/DevicePolicyManager;->throwIfParentInstance(Ljava/lang/String;)V
+HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getActiveAdmins(I)Ljava/util/List;
 HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
+HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getProfileOwner(I)Landroid/content/ComponentName;
 HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getStorageEncryptionStatus(Ljava/lang/String;I)I
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->hasDeviceOwner()Z
-HSPLandroid/app/admin/IDevicePolicyManager$Stub;-><init>()V
 HSPLandroid/app/admin/IDevicePolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDevicePolicyManager;
-HPLandroid/app/admin/IDevicePolicyManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/admin/PasswordMetrics$1;-><init>()V
-HPLandroid/app/admin/PasswordMetrics;->computeForCredential(I[B)Landroid/app/admin/PasswordMetrics;
-HSPLandroid/app/admin/PasswordMetrics;->computeForPassword([B)Landroid/app/admin/PasswordMetrics;
-HSPLandroid/app/admin/PasswordMetrics;->maxLengthSequence([B)I
-HSPLandroid/app/admin/SecurityLog$SecurityEvent$1;-><init>()V
-HSPLandroid/app/admin/SystemUpdateInfo$1;-><init>()V
-HSPLandroid/app/admin/SystemUpdateInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/admin/SystemUpdateInfo;
-HSPLandroid/app/admin/SystemUpdatePolicy$1;-><init>()V
-HSPLandroid/app/assist/AssistContent$1;-><init>()V
-HSPLandroid/app/assist/AssistContent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/assist/AssistContent;
-HSPLandroid/app/assist/AssistContent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/assist/AssistContent;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/assist/AssistContent;->getClipData()Landroid/content/ClipData;
-HSPLandroid/app/assist/AssistContent;->getIntent()Landroid/content/Intent;
-HPLandroid/app/assist/AssistContent;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/app/assist/AssistContent;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/app/assist/AssistStructure$1;-><init>()V
-HSPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/assist/AssistStructure;
-HSPLandroid/app/assist/AssistStructure$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/assist/AssistStructure$ParcelTransferReader;->fetchData()V
-HSPLandroid/app/assist/AssistStructure$ParcelTransferReader;->go()V
-HSPLandroid/app/assist/AssistStructure$ParcelTransferReader;->readParcel(II)Landroid/os/Parcel;
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;-><init>(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->pushViewStackEntry(Landroid/app/assist/AssistStructure$ViewNode;I)V
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeNextEntryToParcel(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;Landroid/os/PooledStringWriter;)Z
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcel(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)V
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeToParcelInner(Landroid/app/assist/AssistStructure;Landroid/os/Parcel;)Z
-HSPLandroid/app/assist/AssistStructure$ParcelTransferWriter;->writeView(Landroid/app/assist/AssistStructure$ViewNode;Landroid/os/Parcel;Landroid/os/PooledStringWriter;I)V
-HSPLandroid/app/assist/AssistStructure$SendChannel;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/assist/AssistStructure$ViewNode;-><init>(Landroid/app/assist/AssistStructure$ParcelTransferReader;I)V
-HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillId()Landroid/view/autofill/AutofillId;
-HPLandroid/app/assist/AssistStructure$ViewNode;->getAutofillType()I
-HSPLandroid/app/assist/AssistStructure$ViewNode;->getChildAt(I)Landroid/app/assist/AssistStructure$ViewNode;
-HSPLandroid/app/assist/AssistStructure$ViewNode;->getChildCount()I
-HPLandroid/app/assist/AssistStructure$ViewNode;->setAutofillOverlay(Landroid/app/assist/AssistStructure$AutofillOverlay;)V
-HSPLandroid/app/assist/AssistStructure$ViewNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;Z[F)I
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->getChildCount()I
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->newChild(I)Landroid/view/ViewStructure;
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setAutofillId(Landroid/view/autofill/AutofillId;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setChildCount(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setClassName(Ljava/lang/String;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setClickable(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setContentDescription(Ljava/lang/CharSequence;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setDataIsSensitive(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setDimens(IIIIII)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setEnabled(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setFocusable(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setHint(Ljava/lang/CharSequence;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setId(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setImportantForAutofill(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setInputType(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setLongClickable(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMaxTextEms(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMaxTextLength(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setMinTextEms(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setOpaque(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setSelected(Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setText(Ljava/lang/CharSequence;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setTextIdEntry(Ljava/lang/String;)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeBuilder;->setVisibility(I)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeText;-><init>(Landroid/os/Parcel;Z)V
-HSPLandroid/app/assist/AssistStructure$ViewNodeText;->writeToParcel(Landroid/os/Parcel;ZZ)V
-HSPLandroid/app/assist/AssistStructure$WindowNode;-><init>(Landroid/app/assist/AssistStructure$ParcelTransferReader;)V
-HSPLandroid/app/assist/AssistStructure$WindowNode;-><init>(Landroid/app/assist/AssistStructure;Landroid/view/ViewRootImpl;ZI)V
-HSPLandroid/app/assist/AssistStructure$WindowNode;->getRootViewNode()Landroid/app/assist/AssistStructure$ViewNode;
-HSPLandroid/app/assist/AssistStructure$WindowNode;->resolveViewAutofillFlags(Landroid/content/Context;I)I
-HSPLandroid/app/assist/AssistStructure$WindowNode;->writeSelfToParcel(Landroid/os/Parcel;Landroid/os/PooledStringWriter;[F)V
-HSPLandroid/app/assist/AssistStructure;-><init>(Landroid/app/Activity;ZI)V
-HSPLandroid/app/assist/AssistStructure;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/assist/AssistStructure;->ensureData()V
-HPLandroid/app/assist/AssistStructure;->ensureDataForAutofill()V
-HPLandroid/app/assist/AssistStructure;->getFlags()I
-HSPLandroid/app/assist/AssistStructure;->getWindowNodeAt(I)Landroid/app/assist/AssistStructure$WindowNode;
-HSPLandroid/app/assist/AssistStructure;->getWindowNodeCount()I
-HPLandroid/app/assist/AssistStructure;->sanitizeForParceling(Z)V
-HPLandroid/app/assist/AssistStructure;->setActivityComponent(Landroid/content/ComponentName;)V
-HPLandroid/app/assist/AssistStructure;->setHomeActivity(Z)V
-HPLandroid/app/assist/AssistStructure;->setTaskId(I)V
-HSPLandroid/app/assist/AssistStructure;->waitForReady()Z
-HSPLandroid/app/assist/AssistStructure;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/backup/BackupAgent$BackupServiceBinder;-><init>(Landroid/app/backup/BackupAgent;)V
+HSPLandroid/app/backup/BackupAgent$BackupServiceBinder;-><init>(Landroid/app/backup/BackupAgent;Landroid/app/backup/BackupAgent$1;)V
 HSPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doBackup(Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;Landroid/os/ParcelFileDescriptor;JLandroid/app/backup/IBackupCallback;I)V
-HPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doFullBackup(Landroid/os/ParcelFileDescriptor;JILandroid/app/backup/IBackupManager;I)V
-HPLandroid/app/backup/BackupAgent$BackupServiceBinder;->doMeasureFullBackup(JILandroid/app/backup/IBackupManager;I)V
+HSPLandroid/app/backup/BackupAgent$SharedPrefsSynchronizer;-><init>(Landroid/app/backup/BackupAgent;)V
 HSPLandroid/app/backup/BackupAgent$SharedPrefsSynchronizer;->run()V
 HSPLandroid/app/backup/BackupAgent;-><init>()V
+HSPLandroid/app/backup/BackupAgent;->access$100(Landroid/app/backup/BackupAgent;)V
 HSPLandroid/app/backup/BackupAgent;->attach(Landroid/content/Context;)V
-HPLandroid/app/backup/BackupAgent;->fullBackupFile(Ljava/io/File;Landroid/app/backup/FullBackupDataOutput;)V
 HSPLandroid/app/backup/BackupAgent;->getHandler()Landroid/os/Handler;
-HSPLandroid/app/backup/BackupAgent;->onCreate()V
+HSPLandroid/app/backup/BackupAgent;->onBind()Landroid/os/IBinder;
 HSPLandroid/app/backup/BackupAgent;->onCreate(Landroid/os/UserHandle;)V
 HSPLandroid/app/backup/BackupAgent;->onDestroy()V
 HSPLandroid/app/backup/BackupAgent;->waitForSharedPrefs()V
 HSPLandroid/app/backup/BackupAgentHelper;-><init>()V
 HSPLandroid/app/backup/BackupAgentHelper;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V
 HSPLandroid/app/backup/BackupAgentHelper;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
-HPLandroid/app/backup/BackupDataInput;-><init>(Ljava/io/FileDescriptor;)V
-HPLandroid/app/backup/BackupDataInput;->finalize()V
-HPLandroid/app/backup/BackupDataInput;->getKey()Ljava/lang/String;
-HPLandroid/app/backup/BackupDataInput;->readNextHeader()Z
-HPLandroid/app/backup/BackupDataInput;->skipEntityData()V
 HSPLandroid/app/backup/BackupDataOutput;-><init>(Ljava/io/FileDescriptor;JI)V
 HSPLandroid/app/backup/BackupDataOutput;->finalize()V
 HSPLandroid/app/backup/BackupDataOutput;->setKeyPrefix(Ljava/lang/String;)V
-HSPLandroid/app/backup/BackupDataOutput;->writeEntityData([BI)I
-HSPLandroid/app/backup/BackupDataOutput;->writeEntityHeader(Ljava/lang/String;I)I
+HSPLandroid/app/backup/BackupHelperDispatcher$Header;-><init>()V
+HSPLandroid/app/backup/BackupHelperDispatcher$Header;-><init>(Landroid/app/backup/BackupHelperDispatcher$1;)V
+HSPLandroid/app/backup/BackupHelperDispatcher;-><init>()V
 HSPLandroid/app/backup/BackupHelperDispatcher;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V
 HSPLandroid/app/backup/BackupHelperDispatcher;->doOneBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupHelperDispatcher$Header;Landroid/app/backup/BackupHelper;)V
 HSPLandroid/app/backup/BackupHelperDispatcher;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
 HSPLandroid/app/backup/BackupManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/backup/BackupManager;->checkServiceBinder()V
 HSPLandroid/app/backup/BackupManager;->dataChanged()V
 HSPLandroid/app/backup/BackupManager;->dataChanged(Ljava/lang/String;)V
-HPLandroid/app/backup/BlobBackupHelper;->checksum([B)J
-PLandroid/app/backup/BlobBackupHelper;->deflate([B)[B
-PLandroid/app/backup/BlobBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
-PLandroid/app/backup/BlobBackupHelper;->readOldState(Landroid/os/ParcelFileDescriptor;)Landroid/util/ArrayMap;
-PLandroid/app/backup/BlobBackupHelper;->writeBackupState(Landroid/util/ArrayMap;Landroid/os/ParcelFileDescriptor;)V
-HSPLandroid/app/backup/FileBackupHelperBase;->finalize()V
+HSPLandroid/app/backup/FileBackupHelperBase;-><init>(Landroid/content/Context;)V
 HSPLandroid/app/backup/FileBackupHelperBase;->performBackup_checked(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;[Ljava/lang/String;[Ljava/lang/String;)V
-HPLandroid/app/backup/FullBackupDataOutput;-><init>(Landroid/os/ParcelFileDescriptor;JI)V
-HPLandroid/app/backup/FullBackupDataOutput;->addSize(J)V
-PLandroid/app/backup/IBackupCallback$Stub;-><init>()V
-PLandroid/app/backup/IBackupCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/app/backup/IBackupCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/app/backup/IBackupCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/app/backup/IBackupCallback$Stub$Proxy;->operationComplete(J)V
+HSPLandroid/app/backup/IBackupCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupCallback;
+HSPLandroid/app/backup/IBackupManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->dataChanged(Ljava/lang/String;)V
-HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->isBackupServiceActive(I)Z
-HPLandroid/app/backup/IBackupManager$Stub$Proxy;->opCompleteForUser(IIJ)V
-HSPLandroid/app/backup/IBackupManager$Stub;-><init>()V
-HSPLandroid/app/backup/IBackupManager$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/app/backup/IBackupManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/backup/IBackupManager;
-HSPLandroid/app/backup/IBackupManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/app/backup/SharedPreferencesBackupHelper;-><init>(Landroid/content/Context;[Ljava/lang/String;)V
 HSPLandroid/app/backup/SharedPreferencesBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
-HSPLandroid/app/contentsuggestions/IContentSuggestionsManager$Stub;-><init>()V
+HSPLandroid/app/job/-$$Lambda$JobSchedulerFrameworkInitializer$PtYe8PQc1PVJQXRnpm3iSxcWTR0;->createService(Landroid/content/Context;Landroid/os/IBinder;)Ljava/lang/Object;
+HSPLandroid/app/job/-$$Lambda$JobSchedulerFrameworkInitializer$RHUxgww0pZFMmfQWKgaRAx0YFqA;->createService(Landroid/os/IBinder;)Ljava/lang/Object;
+HSPLandroid/app/job/IJobCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStartMessage(IZ)V
 HSPLandroid/app/job/IJobCallback$Stub$Proxy;->acknowledgeStopMessage(IZ)V
 HSPLandroid/app/job/IJobCallback$Stub$Proxy;->completeWork(II)Z
 HSPLandroid/app/job/IJobCallback$Stub$Proxy;->dequeueWork(I)Landroid/app/job/JobWorkItem;
 HSPLandroid/app/job/IJobCallback$Stub$Proxy;->jobFinished(IZ)V
-HSPLandroid/app/job/IJobCallback$Stub;-><init>()V
-HPLandroid/app/job/IJobCallback$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/job/IJobCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/app/job/IJobCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobCallback;
+HSPLandroid/app/job/IJobScheduler$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->cancel(I)V
 HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
-HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobs()Ljava/util/List;
+HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getAllPendingJobs()Landroid/content/pm/ParceledListSlice;
 HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->getPendingJob(I)Landroid/app/job/JobInfo;
 HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->schedule(Landroid/app/job/JobInfo;)I
-HSPLandroid/app/job/IJobScheduler$Stub;-><init>()V
-HPLandroid/app/job/IJobScheduler$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/job/IJobScheduler$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/job/IJobService$Stub$Proxy;->startJob(Landroid/app/job/JobParameters;)V
-HPLandroid/app/job/IJobService$Stub$Proxy;->stopJob(Landroid/app/job/JobParameters;)V
+HSPLandroid/app/job/IJobScheduler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobScheduler;
+HSPLandroid/app/job/IJobService$Stub;-><init>()V
 HSPLandroid/app/job/IJobService$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/job/IJobService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/job/IJobService;
 HSPLandroid/app/job/IJobService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/job/JobInfo$1;-><init>()V
 HSPLandroid/app/job/JobInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobInfo;
 HSPLandroid/app/job/JobInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/job/JobInfo$Builder;-><init>(ILandroid/content/ComponentName;)V
+HSPLandroid/app/job/JobInfo$Builder;->access$000(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$100(Landroid/app/job/JobInfo$Builder;)Landroid/os/PersistableBundle;
+HSPLandroid/app/job/JobInfo$Builder;->access$1000(Landroid/app/job/JobInfo$Builder;)Landroid/net/NetworkRequest;
+HSPLandroid/app/job/JobInfo$Builder;->access$1100(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1200(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1300(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1400(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1500(Landroid/app/job/JobInfo$Builder;)Z
+HSPLandroid/app/job/JobInfo$Builder;->access$1600(Landroid/app/job/JobInfo$Builder;)Z
+HSPLandroid/app/job/JobInfo$Builder;->access$1700(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1800(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$1900(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$200(Landroid/app/job/JobInfo$Builder;)Landroid/os/Bundle;
+HSPLandroid/app/job/JobInfo$Builder;->access$2000(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$2100(Landroid/app/job/JobInfo$Builder;)Z
+HSPLandroid/app/job/JobInfo$Builder;->access$2200(Landroid/app/job/JobInfo$Builder;)Z
+HSPLandroid/app/job/JobInfo$Builder;->access$2300(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$2400(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$300(Landroid/app/job/JobInfo$Builder;)Landroid/content/ClipData;
+HSPLandroid/app/job/JobInfo$Builder;->access$400(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$500(Landroid/app/job/JobInfo$Builder;)Landroid/content/ComponentName;
+HSPLandroid/app/job/JobInfo$Builder;->access$600(Landroid/app/job/JobInfo$Builder;)I
+HSPLandroid/app/job/JobInfo$Builder;->access$700(Landroid/app/job/JobInfo$Builder;)Ljava/util/ArrayList;
+HSPLandroid/app/job/JobInfo$Builder;->access$800(Landroid/app/job/JobInfo$Builder;)J
+HSPLandroid/app/job/JobInfo$Builder;->access$900(Landroid/app/job/JobInfo$Builder;)J
 HSPLandroid/app/job/JobInfo$Builder;->addTriggerContentUri(Landroid/app/job/JobInfo$TriggerContentUri;)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->build()Landroid/app/job/JobInfo;
 HSPLandroid/app/job/JobInfo$Builder;->setBackoffCriteria(JI)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setExtras(Landroid/os/PersistableBundle;)Landroid/app/job/JobInfo$Builder;
+HSPLandroid/app/job/JobInfo$Builder;->setImportantWhileForeground(Z)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setMinimumLatency(J)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setOverrideDeadline(J)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setPeriodic(J)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setPeriodic(JJ)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setPersisted(Z)Landroid/app/job/JobInfo$Builder;
+HSPLandroid/app/job/JobInfo$Builder;->setRequiredNetwork(Landroid/net/NetworkRequest;)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setRequiredNetworkType(I)Landroid/app/job/JobInfo$Builder;
+HSPLandroid/app/job/JobInfo$Builder;->setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setRequiresCharging(Z)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$Builder;->setRequiresDeviceIdle(Z)Landroid/app/job/JobInfo$Builder;
-HSPLandroid/app/job/JobInfo$Builder;->setTriggerContentMaxDelay(J)Landroid/app/job/JobInfo$Builder;
-HSPLandroid/app/job/JobInfo$TriggerContentUri$1;-><init>()V
+HSPLandroid/app/job/JobInfo$Builder;->setRequiresStorageNotLow(Z)Landroid/app/job/JobInfo$Builder;
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobInfo$TriggerContentUri;
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Landroid/app/job/JobInfo$TriggerContentUri;
 HSPLandroid/app/job/JobInfo$TriggerContentUri$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/net/Uri;I)V
-HPLandroid/app/job/JobInfo$TriggerContentUri;->equals(Ljava/lang/Object;)Z
-HPLandroid/app/job/JobInfo$TriggerContentUri;->hashCode()I
+HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/job/JobInfo$TriggerContentUri;-><init>(Landroid/os/Parcel;Landroid/app/job/JobInfo$1;)V
 HSPLandroid/app/job/JobInfo$TriggerContentUri;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;)V
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/app/job/JobInfo$Builder;Landroid/app/job/JobInfo$1;)V
 HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;)V
-HPLandroid/app/job/JobInfo;->equals(Ljava/lang/Object;)Z
-HSPLandroid/app/job/JobInfo;->getBackoffPolicy()I
-HSPLandroid/app/job/JobInfo;->getClipData()Landroid/content/ClipData;
-HSPLandroid/app/job/JobInfo;->getClipGrantFlags()I
-HSPLandroid/app/job/JobInfo;->getConstraintFlags()I
-HSPLandroid/app/job/JobInfo;->getEstimatedNetworkBytes()J
+HSPLandroid/app/job/JobInfo;-><init>(Landroid/os/Parcel;Landroid/app/job/JobInfo$1;)V
 HSPLandroid/app/job/JobInfo;->getExtras()Landroid/os/PersistableBundle;
-HSPLandroid/app/job/JobInfo;->getFlags()I
-HSPLandroid/app/job/JobInfo;->getFlexMillis()J
 HSPLandroid/app/job/JobInfo;->getId()I
-HSPLandroid/app/job/JobInfo;->getInitialBackoffMillis()J
 HSPLandroid/app/job/JobInfo;->getIntervalMillis()J
 HSPLandroid/app/job/JobInfo;->getMaxExecutionDelayMillis()J
+HSPLandroid/app/job/JobInfo;->getMinBackoffMillis()J
+HSPLandroid/app/job/JobInfo;->getMinFlexMillis()J
 HSPLandroid/app/job/JobInfo;->getMinLatencyMillis()J
-HSPLandroid/app/job/JobInfo;->getPriority()I
-HSPLandroid/app/job/JobInfo;->getRequiredNetwork()Landroid/net/NetworkRequest;
+HSPLandroid/app/job/JobInfo;->getMinPeriodMillis()J
 HSPLandroid/app/job/JobInfo;->getService()Landroid/content/ComponentName;
-HSPLandroid/app/job/JobInfo;->getTransientExtras()Landroid/os/Bundle;
-HPLandroid/app/job/JobInfo;->getTriggerContentMaxDelay()J
-HPLandroid/app/job/JobInfo;->getTriggerContentUpdateDelay()J
-HSPLandroid/app/job/JobInfo;->getTriggerContentUris()[Landroid/app/job/JobInfo$TriggerContentUri;
-HSPLandroid/app/job/JobInfo;->hasEarlyConstraint()Z
-HSPLandroid/app/job/JobInfo;->hasLateConstraint()Z
-HSPLandroid/app/job/JobInfo;->isExemptedFromAppStandby()Z
-HSPLandroid/app/job/JobInfo;->isPeriodic()Z
 HSPLandroid/app/job/JobInfo;->isPersisted()Z
-HSPLandroid/app/job/JobInfo;->isPrefetch()Z
+HSPLandroid/app/job/JobInfo;->isRequireCharging()Z
+HSPLandroid/app/job/JobInfo;->isRequireDeviceIdle()Z
 HSPLandroid/app/job/JobInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/job/JobParameters$1;-><init>()V
 HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobParameters;
 HSPLandroid/app/job/JobParameters$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/job/JobParameters;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/job/JobParameters;-><init>(Landroid/os/Parcel;Landroid/app/job/JobParameters$1;)V
 HSPLandroid/app/job/JobParameters;->completeWork(Landroid/app/job/JobWorkItem;)V
 HSPLandroid/app/job/JobParameters;->dequeueWork()Landroid/app/job/JobWorkItem;
 HSPLandroid/app/job/JobParameters;->getCallback()Landroid/app/job/IJobCallback;
-HPLandroid/app/job/JobParameters;->getDebugStopReason()Ljava/lang/String;
 HSPLandroid/app/job/JobParameters;->getExtras()Landroid/os/PersistableBundle;
 HSPLandroid/app/job/JobParameters;->getJobId()I
-HSPLandroid/app/job/JobParameters;->getStopReason()I
-HSPLandroid/app/job/JobParameters;->getTransientExtras()Landroid/os/Bundle;
-HPLandroid/app/job/JobParameters;->setStopReason(ILjava/lang/String;)V
-HSPLandroid/app/job/JobParameters;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/job/JobParameters;->getNetwork()Landroid/net/Network;
+HSPLandroid/app/job/JobParameters;->getTriggeredContentAuthorities()[Ljava/lang/String;
+HSPLandroid/app/job/JobParameters;->getTriggeredContentUris()[Landroid/net/Uri;
+HSPLandroid/app/job/JobScheduler;-><init>()V
+HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$0(Landroid/os/IBinder;)Landroid/app/job/JobScheduler;
+HSPLandroid/app/job/JobSchedulerFrameworkInitializer;->lambda$registerServiceWrappers$1(Landroid/content/Context;Landroid/os/IBinder;)Landroid/os/DeviceIdleManager;
+HSPLandroid/app/job/JobService$1;-><init>(Landroid/app/job/JobService;Landroid/app/Service;)V
 HSPLandroid/app/job/JobService$1;->onStartJob(Landroid/app/job/JobParameters;)Z
 HSPLandroid/app/job/JobService$1;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLandroid/app/job/JobService;-><init>()V
 HSPLandroid/app/job/JobService;->jobFinished(Landroid/app/job/JobParameters;Z)V
 HSPLandroid/app/job/JobService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
+HSPLandroid/app/job/JobServiceEngine$JobHandler;-><init>(Landroid/app/job/JobServiceEngine;Landroid/os/Looper;)V
 HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStartMessage(Landroid/app/job/JobParameters;Z)V
 HSPLandroid/app/job/JobServiceEngine$JobHandler;->ackStopMessage(Landroid/app/job/JobParameters;Z)V
 HSPLandroid/app/job/JobServiceEngine$JobHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/app/job/JobServiceEngine$JobInterface;-><init>(Landroid/app/job/JobServiceEngine;)V
 HSPLandroid/app/job/JobServiceEngine$JobInterface;->startJob(Landroid/app/job/JobParameters;)V
 HSPLandroid/app/job/JobServiceEngine$JobInterface;->stopJob(Landroid/app/job/JobParameters;)V
+HSPLandroid/app/job/JobServiceEngine;-><init>(Landroid/app/Service;)V
+HSPLandroid/app/job/JobServiceEngine;->getBinder()Landroid/os/IBinder;
 HSPLandroid/app/job/JobServiceEngine;->jobFinished(Landroid/app/job/JobParameters;Z)V
-HSPLandroid/app/job/JobWorkItem$1;-><init>()V
 HSPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/job/JobWorkItem;
 HSPLandroid/app/job/JobWorkItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/job/JobWorkItem;-><init>(Landroid/content/Intent;)V
 HSPLandroid/app/job/JobWorkItem;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/job/JobWorkItem;->getIntent()Landroid/content/Intent;
+HSPLandroid/app/job/JobWorkItem;->getWorkId()I
 HSPLandroid/app/job/JobWorkItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/AppPredictionContext$1;-><init>()V
-HSPLandroid/app/prediction/AppPredictionContext$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppPredictionContext;
-HSPLandroid/app/prediction/AppPredictionContext$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/app/prediction/AppPredictionContext;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/AppPredictionSessionId$1;-><init>()V
-HSPLandroid/app/prediction/AppPredictionSessionId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppPredictionSessionId;
-HSPLandroid/app/prediction/AppPredictionSessionId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/app/prediction/AppPredictionSessionId;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/AppTarget$1;-><init>()V
-HSPLandroid/app/prediction/AppTarget$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppTarget;
-HSPLandroid/app/prediction/AppTarget$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/prediction/AppTarget;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/prediction/AppTarget;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/AppTargetEvent$1;-><init>()V
-HSPLandroid/app/prediction/AppTargetEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppTargetEvent;
-HSPLandroid/app/prediction/AppTargetEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/app/prediction/AppTargetEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/AppTargetId$1;-><init>()V
-HSPLandroid/app/prediction/AppTargetId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/prediction/AppTargetId;
-HSPLandroid/app/prediction/AppTargetId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/prediction/AppTargetId;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/prediction/IPredictionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/prediction/IPredictionManager$Stub;-><init>()V
-HPLandroid/app/prediction/IPredictionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/role/-$$Lambda$RoleControllerManager$GrantDefaultRolesRequest$Qrnu382yknLH4_TvruMvYuK_N8M;->run()V
-HSPLandroid/app/role/-$$Lambda$RoleControllerManager$GrantDefaultRolesRequest$uMND2yv3BzXWyrtureF8K8b0f0A;->onResult(Landroid/os/Bundle;)V
-HSPLandroid/app/role/-$$Lambda$RoleControllerManager$RemoteService$45dMO3SdHJhfBB_YKrC44Sznmoo;-><init>()V
-HSPLandroid/app/role/-$$Lambda$o94o2jK_ei-IVw-3oY_QJ49zpAA;-><init>()V
-HSPLandroid/app/role/-$$Lambda$o94o2jK_ei-IVw-3oY_QJ49zpAA;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/app/role/IOnRoleHoldersChangedListener$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/app/role/IRoleController$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/role/IRoleController$Stub$Proxy;->grantDefaultRoles(Landroid/os/RemoteCallback;)V
+HSPLandroid/app/role/IRoleManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/role/IRoleManager$Stub$Proxy;->getDefaultSmsPackage(I)Ljava/lang/String;
-HSPLandroid/app/role/IRoleManager$Stub$Proxy;->getRoleHoldersAsUser(Ljava/lang/String;I)Ljava/util/List;
-HSPLandroid/app/role/IRoleManager$Stub;-><init>()V
-HSPLandroid/app/role/IRoleManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/role/RoleControllerManager$GrantDefaultRolesRequest;->lambda$new$0$RoleControllerManager$GrantDefaultRolesRequest(Landroid/os/Bundle;)V
-HSPLandroid/app/role/RoleControllerManager$GrantDefaultRolesRequest;->run()V
-HSPLandroid/app/role/RoleControllerManager$RemoteService;->getRemoteRequestMillis()J
-HSPLandroid/app/role/RoleControllerManager$RemoteService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-HSPLandroid/app/role/RoleControllerManager$RemoteService;->getTimeoutIdleBindMillis()J
-HSPLandroid/app/role/RoleControllerManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-HSPLandroid/app/role/RoleControllerManager;->grantDefaultRoles(Ljava/util/concurrent/Executor;Ljava/util/function/Consumer;)V
-HSPLandroid/app/role/RoleManager$OnRoleHoldersChangedListenerDelegate;->onRoleHoldersChanged(Ljava/lang/String;I)V
-HSPLandroid/app/role/RoleManager;->addOnRoleHoldersChangedListenerAsUser(Ljava/util/concurrent/Executor;Landroid/app/role/OnRoleHoldersChangedListener;Landroid/os/UserHandle;)V
+HSPLandroid/app/role/IRoleManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/role/IRoleManager;
+HSPLandroid/app/role/RoleManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/app/role/RoleManager;->getDefaultSmsPackage(I)Ljava/lang/String;
-HSPLandroid/app/role/RoleManager;->getRoleHoldersAsUser(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/app/servertransaction/ActivityConfigurationChangeItem$1;-><init>()V
-HSPLandroid/app/servertransaction/ActivityConfigurationChangeItem;->obtain(Landroid/content/res/Configuration;)Landroid/app/servertransaction/ActivityConfigurationChangeItem;
-HSPLandroid/app/servertransaction/ActivityConfigurationChangeItem;->recycle()V
-HSPLandroid/app/servertransaction/ActivityConfigurationChangeItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/ActivityRelaunchItem$1;-><init>()V
-HSPLandroid/app/servertransaction/ActivityRelaunchItem;->obtain(Ljava/util/List;Ljava/util/List;ILandroid/util/MergedConfiguration;Z)Landroid/app/servertransaction/ActivityRelaunchItem;
-HSPLandroid/app/servertransaction/ActivityRelaunchItem;->recycle()V
-HSPLandroid/app/servertransaction/ActivityRelaunchItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/ActivityResultItem$1;-><init>()V
-HPLandroid/app/servertransaction/ActivityResultItem;->obtain(Ljava/util/List;)Landroid/app/servertransaction/ActivityResultItem;
-HPLandroid/app/servertransaction/ActivityResultItem;->recycle()V
-HPLandroid/app/servertransaction/ActivityResultItem;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/servertransaction/ActivityLifecycleItem;-><init>()V
 HSPLandroid/app/servertransaction/BaseClientRequest;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/BaseClientRequest;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/servertransaction/ClientTransaction$1;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ClientTransaction;
 HSPLandroid/app/servertransaction/ClientTransaction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/servertransaction/ClientTransaction;->addCallback(Landroid/app/servertransaction/ClientTransactionItem;)V
+HSPLandroid/app/servertransaction/ClientTransaction;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ClientTransaction$1;)V
 HSPLandroid/app/servertransaction/ClientTransaction;->getActivityToken()Landroid/os/IBinder;
 HSPLandroid/app/servertransaction/ClientTransaction;->getCallbacks()Ljava/util/List;
-HSPLandroid/app/servertransaction/ClientTransaction;->getClient()Landroid/app/IApplicationThread;
 HSPLandroid/app/servertransaction/ClientTransaction;->getLifecycleStateRequest()Landroid/app/servertransaction/ActivityLifecycleItem;
-HSPLandroid/app/servertransaction/ClientTransaction;->obtain(Landroid/app/IApplicationThread;Landroid/os/IBinder;)Landroid/app/servertransaction/ClientTransaction;
 HSPLandroid/app/servertransaction/ClientTransaction;->preExecute(Landroid/app/ClientTransactionHandler;)V
-HSPLandroid/app/servertransaction/ClientTransaction;->recycle()V
-HSPLandroid/app/servertransaction/ClientTransaction;->schedule()V
-HSPLandroid/app/servertransaction/ClientTransaction;->setLifecycleStateRequest(Landroid/app/servertransaction/ActivityLifecycleItem;)V
-HSPLandroid/app/servertransaction/ClientTransaction;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/servertransaction/ClientTransactionItem;-><init>()V
 HSPLandroid/app/servertransaction/ClientTransactionItem;->getPostExecutionState()I
-HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;-><init>()V
 HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ConfigurationChangeItem;
 HSPLandroid/app/servertransaction/ConfigurationChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/ConfigurationChangeItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/ConfigurationChangeItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ConfigurationChangeItem$1;)V
 HSPLandroid/app/servertransaction/ConfigurationChangeItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/ConfigurationChangeItem;->obtain(Landroid/content/res/Configuration;)Landroid/app/servertransaction/ConfigurationChangeItem;
 HSPLandroid/app/servertransaction/ConfigurationChangeItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/servertransaction/ConfigurationChangeItem;->recycle()V
-HSPLandroid/app/servertransaction/ConfigurationChangeItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/DestroyActivityItem$1;-><init>()V
 HSPLandroid/app/servertransaction/DestroyActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/DestroyActivityItem;
 HSPLandroid/app/servertransaction/DestroyActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/DestroyActivityItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/DestroyActivityItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/DestroyActivityItem$1;)V
 HSPLandroid/app/servertransaction/DestroyActivityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/DestroyActivityItem;->getTargetState()I
-HSPLandroid/app/servertransaction/DestroyActivityItem;->obtain(ZI)Landroid/app/servertransaction/DestroyActivityItem;
 HSPLandroid/app/servertransaction/DestroyActivityItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/servertransaction/DestroyActivityItem;->recycle()V
-HSPLandroid/app/servertransaction/DestroyActivityItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/LaunchActivityItem$1;-><init>()V
 HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/LaunchActivityItem;
 HSPLandroid/app/servertransaction/LaunchActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>()V
 HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/LaunchActivityItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/LaunchActivityItem$1;)V
 HSPLandroid/app/servertransaction/LaunchActivityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/LaunchActivityItem;->obtain(Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;)Landroid/app/servertransaction/LaunchActivityItem;
+HSPLandroid/app/servertransaction/LaunchActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/LaunchActivityItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/servertransaction/LaunchActivityItem;->recycle()V
-HSPLandroid/app/servertransaction/LaunchActivityItem;->setValues(Landroid/app/servertransaction/LaunchActivityItem;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;)V
-HSPLandroid/app/servertransaction/LaunchActivityItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/NewIntentItem$1;-><init>()V
-HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/NewIntentItem;
-HSPLandroid/app/servertransaction/NewIntentItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/NewIntentItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HPLandroid/app/servertransaction/NewIntentItem;->obtain(Ljava/util/List;Z)Landroid/app/servertransaction/NewIntentItem;
-HPLandroid/app/servertransaction/NewIntentItem;->recycle()V
-HPLandroid/app/servertransaction/NewIntentItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/ObjectPool;->obtain(Ljava/lang/Class;)Landroid/app/servertransaction/ObjectPoolItem;
-HSPLandroid/app/servertransaction/ObjectPool;->recycle(Landroid/app/servertransaction/ObjectPoolItem;)V
-HSPLandroid/app/servertransaction/PauseActivityItem$1;-><init>()V
+HSPLandroid/app/servertransaction/LaunchActivityItem;->setValues(Landroid/app/servertransaction/LaunchActivityItem;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/os/IBinder;)V
 HSPLandroid/app/servertransaction/PauseActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/PauseActivityItem;
 HSPLandroid/app/servertransaction/PauseActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/PauseActivityItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/PauseActivityItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/PauseActivityItem$1;)V
 HSPLandroid/app/servertransaction/PauseActivityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/PauseActivityItem;->getTargetState()I
-HSPLandroid/app/servertransaction/PauseActivityItem;->obtain(ZZIZ)Landroid/app/servertransaction/PauseActivityItem;
 HSPLandroid/app/servertransaction/PauseActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/PauseActivityItem;->recycle()V
-HSPLandroid/app/servertransaction/PauseActivityItem;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;-><init>()V
 HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;->run()V
+HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;->setActivity(Landroid/app/ActivityThread$ActivityClientRecord;)V
 HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;->setDescription(Ljava/lang/CharSequence;)V
+HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;->setPersistentState(Landroid/os/PersistableBundle;)V
+HSPLandroid/app/servertransaction/PendingTransactionActions$StopInfo;->setState(Landroid/os/Bundle;)V
+HSPLandroid/app/servertransaction/PendingTransactionActions;-><init>()V
 HSPLandroid/app/servertransaction/PendingTransactionActions;->clear()V
 HSPLandroid/app/servertransaction/PendingTransactionActions;->getOldState()Landroid/os/Bundle;
 HSPLandroid/app/servertransaction/PendingTransactionActions;->getStopInfo()Landroid/app/servertransaction/PendingTransactionActions$StopInfo;
@@ -2926,507 +2356,295 @@
 HSPLandroid/app/servertransaction/PendingTransactionActions;->setStopInfo(Landroid/app/servertransaction/PendingTransactionActions$StopInfo;)V
 HSPLandroid/app/servertransaction/PendingTransactionActions;->shouldCallOnPostCreate()Z
 HSPLandroid/app/servertransaction/PendingTransactionActions;->shouldRestoreInstanceState()Z
-HSPLandroid/app/servertransaction/ResumeActivityItem$1;-><init>()V
 HSPLandroid/app/servertransaction/ResumeActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/ResumeActivityItem;
 HSPLandroid/app/servertransaction/ResumeActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/ResumeActivityItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/ResumeActivityItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/ResumeActivityItem$1;)V
 HSPLandroid/app/servertransaction/ResumeActivityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/ResumeActivityItem;->getTargetState()I
-HSPLandroid/app/servertransaction/ResumeActivityItem;->obtain(IZ)Landroid/app/servertransaction/ResumeActivityItem;
-HSPLandroid/app/servertransaction/ResumeActivityItem;->obtain(Z)Landroid/app/servertransaction/ResumeActivityItem;
 HSPLandroid/app/servertransaction/ResumeActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/ResumeActivityItem;->preExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/servertransaction/ResumeActivityItem;->recycle()V
-HSPLandroid/app/servertransaction/ResumeActivityItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/StopActivityItem$1;-><init>()V
 HSPLandroid/app/servertransaction/StopActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/StopActivityItem;
 HSPLandroid/app/servertransaction/StopActivityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/StopActivityItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/StopActivityItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/StopActivityItem$1;)V
 HSPLandroid/app/servertransaction/StopActivityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
 HSPLandroid/app/servertransaction/StopActivityItem;->getTargetState()I
-HSPLandroid/app/servertransaction/StopActivityItem;->obtain(ZI)Landroid/app/servertransaction/StopActivityItem;
 HSPLandroid/app/servertransaction/StopActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/StopActivityItem;->recycle()V
-HSPLandroid/app/servertransaction/StopActivityItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/servertransaction/TopResumedActivityChangeItem$1;-><init>()V
 HSPLandroid/app/servertransaction/TopResumedActivityChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/TopResumedActivityChangeItem;
 HSPLandroid/app/servertransaction/TopResumedActivityChangeItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;-><init>(Landroid/os/Parcel;Landroid/app/servertransaction/TopResumedActivityChangeItem$1;)V
 HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;->obtain(Z)Landroid/app/servertransaction/TopResumedActivityChangeItem;
 HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;->recycle()V
-HSPLandroid/app/servertransaction/TopResumedActivityChangeItem;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/app/servertransaction/TransactionExecutor;-><init>(Landroid/app/ClientTransactionHandler;)V
+HSPLandroid/app/servertransaction/TransactionExecutor;->cycleToPath(Landroid/app/ActivityThread$ActivityClientRecord;IZLandroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->execute(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeCallbacks(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->executeLifecycleState(Landroid/app/servertransaction/ClientTransaction;)V
 HSPLandroid/app/servertransaction/TransactionExecutor;->performLifecycleSequence(Landroid/app/ActivityThread$ActivityClientRecord;Landroid/util/IntArray;Landroid/app/servertransaction/ClientTransaction;)V
+HSPLandroid/app/servertransaction/TransactionExecutorHelper;-><init>()V
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getClosestPreExecutionState(Landroid/app/ActivityThread$ActivityClientRecord;I)I
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->getLifecyclePath(IIZ)Landroid/util/IntArray;
 HSPLandroid/app/servertransaction/TransactionExecutorHelper;->lastCallbackRequestingState(Landroid/app/servertransaction/ClientTransaction;)I
-HSPLandroid/app/servertransaction/WindowVisibilityItem$1;-><init>()V
-HSPLandroid/app/servertransaction/WindowVisibilityItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/servertransaction/WindowVisibilityItem;
-HSPLandroid/app/servertransaction/WindowVisibilityItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/WindowVisibilityItem;->execute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/WindowVisibilityItem;->obtain(Z)Landroid/app/servertransaction/WindowVisibilityItem;
-HSPLandroid/app/servertransaction/WindowVisibilityItem;->recycle()V
-HSPLandroid/app/servertransaction/WindowVisibilityItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)I
-HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->getPinnedSlices(Ljava/lang/String;)[Landroid/net/Uri;
-HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->getPinnedSpecs(Landroid/net/Uri;Ljava/lang/String;)[Landroid/app/slice/SliceSpec;
-HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
-HSPLandroid/app/slice/ISliceManager$Stub$Proxy;->pinSlice(Ljava/lang/String;Landroid/net/Uri;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
-HSPLandroid/app/slice/ISliceManager$Stub;-><init>()V
+HSPLandroid/app/slice/-$$Lambda$SliceProvider$bIgM5f4PsMvz_YYWEeFTjvTqevw;-><init>(Landroid/app/slice/SliceProvider;)V
+HSPLandroid/app/slice/ISliceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/slice/ISliceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/slice/ISliceManager;
-HSPLandroid/app/slice/ISliceManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/slice/Slice$1;-><init>()V
-HSPLandroid/app/slice/Slice$Builder;-><init>(Landroid/net/Uri;Landroid/app/slice/SliceSpec;)V
-HSPLandroid/app/slice/Slice$Builder;->addAction(Landroid/app/PendingIntent;Landroid/app/slice/Slice;Ljava/lang/String;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addHints(Ljava/util/List;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addIcon(Landroid/graphics/drawable/Icon;Ljava/lang/String;Ljava/util/List;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addInt(ILjava/lang/String;Ljava/util/List;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addLong(JLjava/lang/String;Ljava/util/List;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addSubSlice(Landroid/app/slice/Slice;Ljava/lang/String;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->addText(Ljava/lang/CharSequence;Ljava/lang/String;Ljava/util/List;)Landroid/app/slice/Slice$Builder;
-HSPLandroid/app/slice/Slice$Builder;->build()Landroid/app/slice/Slice;
-HSPLandroid/app/slice/Slice;->getHints()Ljava/util/List;
-HSPLandroid/app/slice/Slice;->getItems()Ljava/util/List;
-HSPLandroid/app/slice/Slice;->getSpec()Landroid/app/slice/SliceSpec;
-HSPLandroid/app/slice/Slice;->getUri()Landroid/net/Uri;
-HSPLandroid/app/slice/Slice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/slice/SliceItem$1;-><init>()V
-HSPLandroid/app/slice/SliceItem;->getAction()Landroid/app/PendingIntent;
-HSPLandroid/app/slice/SliceItem;->getFormat()Ljava/lang/String;
-HSPLandroid/app/slice/SliceItem;->getHints()Ljava/util/List;
-HSPLandroid/app/slice/SliceItem;->getIcon()Landroid/graphics/drawable/Icon;
-HSPLandroid/app/slice/SliceItem;->getLong()J
-HSPLandroid/app/slice/SliceItem;->getSlice()Landroid/app/slice/Slice;
-HSPLandroid/app/slice/SliceItem;->getSubType()Ljava/lang/String;
-HSPLandroid/app/slice/SliceItem;->getText()Ljava/lang/CharSequence;
-HSPLandroid/app/slice/SliceItem;->writeObj(Landroid/os/Parcel;ILjava/lang/Object;Ljava/lang/String;)V
-HSPLandroid/app/slice/SliceManager;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/app/slice/SliceManager;->bindSlice(Landroid/net/Uri;Ljava/util/Set;)Landroid/app/slice/Slice;
-HSPLandroid/app/slice/SliceManager;->checkSlicePermission(Landroid/net/Uri;II)I
-HSPLandroid/app/slice/SliceManager;->enforceSlicePermission(Landroid/net/Uri;Ljava/lang/String;II[Ljava/lang/String;)V
-HSPLandroid/app/slice/SliceManager;->getPinnedSlices()Ljava/util/List;
-HSPLandroid/app/slice/SliceManager;->getPinnedSpecs(Landroid/net/Uri;)Ljava/util/Set;
-HSPLandroid/app/slice/SliceManager;->grantSlicePermission(Ljava/lang/String;Landroid/net/Uri;)V
-HSPLandroid/app/slice/SliceManager;->pinSlice(Landroid/net/Uri;Ljava/util/Set;)V
+HSPLandroid/app/slice/SliceManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLandroid/app/slice/SliceProvider;-><init>([Ljava/lang/String;)V
 HSPLandroid/app/slice/SliceProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
-HSPLandroid/app/slice/SliceProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HSPLandroid/app/slice/SliceProvider;->handleBindSlice(Landroid/net/Uri;Ljava/util/List;Ljava/lang/String;II)Landroid/app/slice/Slice;
-HSPLandroid/app/slice/SliceProvider;->handlePinSlice(Landroid/net/Uri;)V
-HSPLandroid/app/slice/SliceProvider;->onBindSliceStrict(Landroid/net/Uri;Ljava/util/List;)Landroid/app/slice/Slice;
-HSPLandroid/app/slice/SliceSpec$1;-><init>()V
 HSPLandroid/app/slice/SliceSpec$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/slice/SliceSpec;
 HSPLandroid/app/slice/SliceSpec$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/slice/SliceSpec$1;->newArray(I)[Landroid/app/slice/SliceSpec;
-HSPLandroid/app/slice/SliceSpec$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/app/slice/SliceSpec;-><init>(Ljava/lang/String;I)V
+HSPLandroid/app/slice/SliceSpec;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/slice/SliceSpec;->getRevision()I
 HSPLandroid/app/slice/SliceSpec;->getType()Ljava/lang/String;
 HSPLandroid/app/slice/SliceSpec;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/timedetector/ITimeDetectorService$Stub$Proxy;->suggestTime(Landroid/app/timedetector/TimeSignal;)V
-HSPLandroid/app/timedetector/ITimeDetectorService$Stub;-><init>()V
-HSPLandroid/app/timedetector/ITimeDetectorService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/timedetector/TimeDetector;->suggestTime(Landroid/app/timedetector/TimeSignal;)V
-HSPLandroid/app/timedetector/TimeSignal$1;-><init>()V
-HSPLandroid/app/timedetector/TimeSignal$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/timedetector/TimeSignal;
-HSPLandroid/app/timedetector/TimeSignal$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/timedetector/TimeSignal;-><init>(Ljava/lang/String;Landroid/util/TimestampedValue;)V
-HSPLandroid/app/trust/IStrongAuthTracker$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/trust/IStrongAuthTracker$Stub$Proxy;->onStrongAuthRequiredChanged(II)V
-HSPLandroid/app/trust/IStrongAuthTracker$Stub;-><init>()V
-HSPLandroid/app/trust/IStrongAuthTracker$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/trust/IStrongAuthTracker$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/IStrongAuthTracker;
-HSPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustChanged(ZII)V
-HSPLandroid/app/trust/ITrustListener$Stub$Proxy;->onTrustManagedChanged(ZI)V
+HSPLandroid/app/trust/ITrustManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceLocked(I)Z
-HSPLandroid/app/trust/ITrustManager$Stub;-><init>()V
-HPLandroid/app/trust/ITrustManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/trust/ITrustManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/usage/AppStandbyInfo$1;-><init>()V
-HSPLandroid/app/usage/AppStandbyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/AppStandbyInfo;
-HSPLandroid/app/usage/AppStandbyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/AppStandbyInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/CacheQuotaHint$1;-><init>()V
-HSPLandroid/app/usage/CacheQuotaHint$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/CacheQuotaHint;
-HSPLandroid/app/usage/CacheQuotaHint$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/CacheQuotaHint$Builder;-><init>(Landroid/app/usage/CacheQuotaHint;)V
-HSPLandroid/app/usage/CacheQuotaHint$Builder;->build()Landroid/app/usage/CacheQuotaHint;
-HSPLandroid/app/usage/CacheQuotaHint$Builder;->setQuota(J)Landroid/app/usage/CacheQuotaHint$Builder;
-HSPLandroid/app/usage/CacheQuotaHint$Builder;->setUid(I)Landroid/app/usage/CacheQuotaHint$Builder;
-HSPLandroid/app/usage/CacheQuotaHint;->getQuota()J
-HSPLandroid/app/usage/CacheQuotaHint;->getUid()I
-HSPLandroid/app/usage/CacheQuotaHint;->getUsageStats()Landroid/app/usage/UsageStats;
-HSPLandroid/app/usage/CacheQuotaHint;->getVolumeUuid()Ljava/lang/String;
-HSPLandroid/app/usage/CacheQuotaHint;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/CacheQuotaService$CacheQuotaServiceWrapper;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V
-HSPLandroid/app/usage/CacheQuotaService$ServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/app/usage/CacheQuotaService;-><init>()V
-HSPLandroid/app/usage/CacheQuotaService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/app/usage/CacheQuotaService;->onCreate()V
-HSPLandroid/app/usage/ConfigurationStats$1;-><init>()V
-HSPLandroid/app/usage/EventList;-><init>()V
-HSPLandroid/app/usage/EventList;->clear()V
-HSPLandroid/app/usage/EventList;->firstIndexOnOrAfter(J)I
-HSPLandroid/app/usage/EventList;->get(I)Landroid/app/usage/UsageEvents$Event;
-HSPLandroid/app/usage/EventList;->insert(Landroid/app/usage/UsageEvents$Event;)V
-HSPLandroid/app/usage/EventList;->size()I
-PLandroid/app/usage/ExternalStorageStats$1;-><init>()V
-HSPLandroid/app/usage/ICacheQuotaService$Stub$Proxy;->computeCacheQuotaHints(Landroid/os/RemoteCallback;Ljava/util/List;)V
-HSPLandroid/app/usage/ICacheQuotaService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/ICacheQuotaService;
-HSPLandroid/app/usage/ICacheQuotaService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J
+HSPLandroid/app/trust/ITrustManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/trust/ITrustManager;
+HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/usage/IStorageStatsManager$Stub$Proxy;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-HSPLandroid/app/usage/IStorageStatsManager$Stub;-><init>()V
-HPLandroid/app/usage/IStorageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->onCarrierPrivilegedAppsChanged()V
-HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->queryUsageStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/app/usage/IUsageStatsManager$Stub;-><init>()V
+HSPLandroid/app/usage/IStorageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IStorageStatsManager;
+HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/app/usage/IUsageStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/usage/IUsageStatsManager;
-HPLandroid/app/usage/IUsageStatsManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/app/usage/IUsageStatsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/app/usage/NetworkStatsManager$CallbackHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/app/usage/NetworkStatsManager;->registerUsageCallback(Landroid/net/NetworkTemplate;IJLandroid/app/usage/NetworkStatsManager$UsageCallback;Landroid/os/Handler;)V
-HPLandroid/app/usage/NetworkStatsManager;->unregisterUsageCallback(Landroid/app/usage/NetworkStatsManager$UsageCallback;)V
-HSPLandroid/app/usage/StorageStats$1;-><init>()V
+HSPLandroid/app/usage/NetworkStatsManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/app/usage/NetworkStatsManager;-><init>(Landroid/content/Context;Landroid/net/INetworkStatsService;)V
+HSPLandroid/app/usage/NetworkStatsManager;->setPollOnOpen(Z)V
 HSPLandroid/app/usage/StorageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/StorageStats;
 HSPLandroid/app/usage/StorageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/usage/StorageStats;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/app/usage/StorageStats;->getAppBytes()J
 HSPLandroid/app/usage/StorageStats;->getCacheBytes()J
 HSPLandroid/app/usage/StorageStats;->getDataBytes()J
-HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/lang/String;)J
-HPLandroid/app/usage/StorageStatsManager;->getCacheBytes(Ljava/util/UUID;)J
-HSPLandroid/app/usage/StorageStatsManager;->getFreeBytes(Ljava/util/UUID;)J
-HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/lang/String;)Z
-HPLandroid/app/usage/StorageStatsManager;->isQuotaSupported(Ljava/util/UUID;)Z
-HPLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats;
-HPLandroid/app/usage/StorageStatsManager;->queryExternalStatsForUser(Ljava/util/UUID;Landroid/os/UserHandle;)Landroid/app/usage/ExternalStorageStats;
+HSPLandroid/app/usage/StorageStatsManager;-><init>(Landroid/content/Context;Landroid/app/usage/IStorageStatsManager;)V
 HSPLandroid/app/usage/StorageStatsManager;->queryStatsForPackage(Ljava/util/UUID;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/StorageStats;
-HSPLandroid/app/usage/TimeSparseArray;-><init>()V
-HSPLandroid/app/usage/TimeSparseArray;->closestIndexOnOrAfter(J)I
-HSPLandroid/app/usage/TimeSparseArray;->closestIndexOnOrBefore(J)I
-HSPLandroid/app/usage/TimeSparseArray;->put(JLjava/lang/Object;)V
-HSPLandroid/app/usage/UsageEvents$1;-><init>()V
-HSPLandroid/app/usage/UsageEvents$Event;-><init>(Landroid/app/usage/UsageEvents$Event;)V
-HPLandroid/app/usage/UsageEvents$Event;->getObfuscatedIfInstantApp()Landroid/app/usage/UsageEvents$Event;
-HSPLandroid/app/usage/UsageEvents;-><init>()V
-HPLandroid/app/usage/UsageEvents;-><init>(Ljava/util/List;[Ljava/lang/String;Z)V
-HPLandroid/app/usage/UsageEvents;->findStringIndex(Ljava/lang/String;)I
-HPLandroid/app/usage/UsageEvents;->writeEventToParcel(Landroid/app/usage/UsageEvents$Event;Landroid/os/Parcel;I)V
-HPLandroid/app/usage/UsageEvents;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/UsageStats$1;-><init>()V
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageStats;
-HSPLandroid/app/usage/UsageStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/UsageStats$1;->readBundleToEventMap(Landroid/os/Bundle;Landroid/util/ArrayMap;)V
+HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageEvents;
+HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/app/usage/UsageEvents$Event;-><init>()V
+HSPLandroid/app/usage/UsageEvents$Event;->getClassName()Ljava/lang/String;
+HSPLandroid/app/usage/UsageEvents$Event;->getEventType()I
+HSPLandroid/app/usage/UsageEvents$Event;->getPackageName()Ljava/lang/String;
+HSPLandroid/app/usage/UsageEvents;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z
+HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z
+HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V
 HSPLandroid/app/usage/UsageStats;-><init>()V
-HSPLandroid/app/usage/UsageStats;-><init>(Landroid/app/usage/UsageStats;)V
-HSPLandroid/app/usage/UsageStats;->eventMapToBundle(Landroid/util/ArrayMap;)Landroid/os/Bundle;
-HSPLandroid/app/usage/UsageStats;->getLastTimeUsed()J
-HSPLandroid/app/usage/UsageStats;->getPackageName()Ljava/lang/String;
-HSPLandroid/app/usage/UsageStats;->getTotalTimeInForeground()J
-HSPLandroid/app/usage/UsageStats;->update(Ljava/lang/String;JII)V
-HSPLandroid/app/usage/UsageStats;->updateActivity(Ljava/lang/String;JII)V
-HPLandroid/app/usage/UsageStats;->updateForegroundService(Ljava/lang/String;JI)V
-HSPLandroid/app/usage/UsageStats;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/app/usage/UsageStatsManager;->onCarrierPrivilegedAppsChanged()V
-HSPLandroid/app/usage/UsageStatsManager;->queryUsageStats(IJJ)Ljava/util/List;
-HPLandroid/app/usage/UsageStatsManager;->reasonToString(I)Ljava/lang/String;
-HPLandroid/app/usage/UsageStatsManager;->usageSourceToString(I)Ljava/lang/String;
-HSPLandroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;->onUserInteractionStarted(Ljava/lang/String;I)V
-HSPLandroid/appwidget/AppWidgetManager;->getAppWidgetIds(Landroid/content/ComponentName;)[I
+HSPLandroid/app/usage/UsageStatsManager;-><init>(Landroid/content/Context;Landroid/app/usage/IUsageStatsManager;)V
+HSPLandroid/appwidget/AppWidgetManager;-><init>(Landroid/content/Context;Lcom/android/internal/appwidget/IAppWidgetService;)V
 HSPLandroid/appwidget/AppWidgetManager;->getInstance(Landroid/content/Context;)Landroid/appwidget/AppWidgetManager;
-HSPLandroid/appwidget/AppWidgetManager;->isBoundWidgetPackage(Ljava/lang/String;I)Z
-HSPLandroid/appwidget/AppWidgetManager;->updateAppWidget(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
-HSPLandroid/appwidget/AppWidgetProviderInfo$1;-><init>()V
-HSPLandroid/appwidget/AppWidgetProviderInfo;->getProfile()Landroid/os/UserHandle;
-HSPLandroid/appwidget/AppWidgetProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/bluetooth/BluetoothA2dp$1;->onBluetoothStateChange(Z)V
-HSPLandroid/bluetooth/BluetoothA2dp$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLandroid/bluetooth/-$$Lambda$BluetoothAdapter$2$INSd_aND-SGWhhPZUtIqya_Uxw4;-><init>(Landroid/bluetooth/BluetoothAdapter$2;)V
+HSPLandroid/bluetooth/BluetoothA2dp$1;-><init>(Landroid/bluetooth/BluetoothA2dp;Landroid/bluetooth/BluetoothProfile;ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp;
+HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Ljava/lang/Object;
 HSPLandroid/bluetooth/BluetoothA2dp;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothA2dp;->doBind()Z
-HSPLandroid/bluetooth/BluetoothA2dp;->getActiveDevice()Landroid/bluetooth/BluetoothDevice;
-HPLandroid/bluetooth/BluetoothA2dp;->getCodecStatus(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothCodecStatus;
 HSPLandroid/bluetooth/BluetoothA2dp;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;-><init>()V
-HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothActivityEnergyInfo;
-HPLandroid/bluetooth/BluetoothActivityEnergyInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/bluetooth/BluetoothActivityEnergyInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/bluetooth/BluetoothAdapter$1;-><init>()V
+HSPLandroid/bluetooth/BluetoothA2dp;->getService()Landroid/bluetooth/IBluetoothA2dp;
+HSPLandroid/bluetooth/BluetoothA2dp;->isEnabled()Z
+HSPLandroid/bluetooth/BluetoothAdapter$2;-><init>(Landroid/bluetooth/BluetoothAdapter;)V
 HSPLandroid/bluetooth/BluetoothAdapter$2;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V
 HSPLandroid/bluetooth/BluetoothAdapter;-><init>(Landroid/bluetooth/IBluetoothManager;)V
+HSPLandroid/bluetooth/BluetoothAdapter;->access$000()Ljava/util/Map;
+HSPLandroid/bluetooth/BluetoothAdapter;->access$100(Landroid/bluetooth/BluetoothAdapter;)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
+HSPLandroid/bluetooth/BluetoothAdapter;->access$202(Landroid/bluetooth/BluetoothAdapter;Landroid/bluetooth/IBluetooth;)Landroid/bluetooth/IBluetooth;
+HSPLandroid/bluetooth/BluetoothAdapter;->access$300(Landroid/bluetooth/BluetoothAdapter;)Ljava/util/ArrayList;
 HSPLandroid/bluetooth/BluetoothAdapter;->checkBluetoothAddress(Ljava/lang/String;)Z
+HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothManager()Landroid/bluetooth/IBluetoothManager;
 HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothService(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth;
 HSPLandroid/bluetooth/BluetoothAdapter;->getBondedDevices()Ljava/util/Set;
 HSPLandroid/bluetooth/BluetoothAdapter;->getDefaultAdapter()Landroid/bluetooth/BluetoothAdapter;
 HSPLandroid/bluetooth/BluetoothAdapter;->getProfileProxy(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;I)Z
 HSPLandroid/bluetooth/BluetoothAdapter;->getState()I
-HSPLandroid/bluetooth/BluetoothAdapter;->getSupportedProfiles()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothAdapter;->getUuids()[Landroid/os/ParcelUuid;
 HSPLandroid/bluetooth/BluetoothAdapter;->isEnabled()Z
 HSPLandroid/bluetooth/BluetoothAdapter;->isHearingAidProfileSupported()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->nameForState(I)Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothAdapter;->requestControllerActivityEnergyInfo(Landroid/os/ResultReceiver;)V
-HSPLandroid/bluetooth/BluetoothClass$1;-><init>()V
-HSPLandroid/bluetooth/BluetoothClass;->toString()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothCodecConfig$1;-><init>()V
-HPLandroid/bluetooth/BluetoothCodecConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothCodecConfig;
-HPLandroid/bluetooth/BluetoothCodecConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/bluetooth/BluetoothCodecConfig$1;->newArray(I)[Landroid/bluetooth/BluetoothCodecConfig;
-HPLandroid/bluetooth/BluetoothCodecConfig$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/bluetooth/BluetoothDevice$1;-><init>()V
-HSPLandroid/bluetooth/BluetoothDevice$2;-><init>()V
+HSPLandroid/bluetooth/BluetoothAdapter;->setContext(Landroid/content/Context;)V
+HSPLandroid/bluetooth/BluetoothAdapter;->toDeviceSet([Landroid/bluetooth/BluetoothDevice;)Ljava/util/Set;
 HSPLandroid/bluetooth/BluetoothDevice$2;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/BluetoothDevice;
 HSPLandroid/bluetooth/BluetoothDevice$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/bluetooth/BluetoothDevice$2;->newArray(I)[Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/BluetoothDevice$2;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/bluetooth/BluetoothDevice;-><init>(Ljava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothDevice;->equals(Ljava/lang/Object;)Z
 HSPLandroid/bluetooth/BluetoothDevice;->getAddress()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothDevice;->getAlias()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothDevice;->getAliasName()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothDevice;->getBluetoothClass()Landroid/bluetooth/BluetoothClass;
-HSPLandroid/bluetooth/BluetoothDevice;->getBondState()I
-HSPLandroid/bluetooth/BluetoothDevice;->getName()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothDevice;->getPhonebookAccessPermission()I
 HSPLandroid/bluetooth/BluetoothDevice;->getService()Landroid/bluetooth/IBluetooth;
-HSPLandroid/bluetooth/BluetoothDevice;->getUuids()[Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/BluetoothDevice;->hashCode()I
-HSPLandroid/bluetooth/BluetoothDevice;->isConnected()Z
 HSPLandroid/bluetooth/BluetoothDevice;->toString()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothHeadset$1;->onBluetoothStateChange(Z)V
+HSPLandroid/bluetooth/BluetoothDevice;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/bluetooth/BluetoothHeadset$1;-><init>(Landroid/bluetooth/BluetoothHeadset;)V
+HSPLandroid/bluetooth/BluetoothHeadset$2;-><init>(Landroid/bluetooth/BluetoothHeadset;)V
 HSPLandroid/bluetooth/BluetoothHeadset$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothHeadset$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HSPLandroid/bluetooth/BluetoothHeadset$3;-><init>(Landroid/bluetooth/BluetoothHeadset;Landroid/os/Looper;)V
 HSPLandroid/bluetooth/BluetoothHeadset$3;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/bluetooth/BluetoothHeadset;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
+HSPLandroid/bluetooth/BluetoothHeadset;->access$202(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/IBluetoothHeadset;)Landroid/bluetooth/IBluetoothHeadset;
+HSPLandroid/bluetooth/BluetoothHeadset;->access$300(Landroid/bluetooth/BluetoothHeadset;)Landroid/os/Handler;
+HSPLandroid/bluetooth/BluetoothHeadset;->access$400(Landroid/bluetooth/BluetoothHeadset;)Landroid/bluetooth/BluetoothProfile$ServiceListener;
 HSPLandroid/bluetooth/BluetoothHeadset;->doBind()Z
-HSPLandroid/bluetooth/BluetoothHeadset;->doUnbind()V
-HSPLandroid/bluetooth/BluetoothHeadset;->getActiveDevice()Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/BluetoothHeadset;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothHeadset;->phoneStateChanged(IIILjava/lang/String;ILjava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothHearingAid$1;->onBluetoothStateChange(Z)V
-HSPLandroid/bluetooth/BluetoothHearingAid$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothHearingAid;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothHearingAid;->doBind()V
-HSPLandroid/bluetooth/BluetoothHearingAid;->getActiveDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothHearingAid;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothHearingAid;->getHiSyncId(Landroid/bluetooth/BluetoothDevice;)J
-HSPLandroid/bluetooth/BluetoothHidDevice$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothHidDevice;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothHidDevice;->doBind()Z
-HSPLandroid/bluetooth/BluetoothHidDevice;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothHidDevice;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/BluetoothHidHost$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothHidHost;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothHidHost;->doBind()Z
-HSPLandroid/bluetooth/BluetoothHidHost;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothMap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothMap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothMap;->doBind()Z
-HSPLandroid/bluetooth/BluetoothMap;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothMap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/BluetoothPan$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothPan;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothPan;->doBind()Z
-HSPLandroid/bluetooth/BluetoothPbap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothPbap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothPbap$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothPbap;->doBind()Z
-HSPLandroid/bluetooth/BluetoothPbap;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/BluetoothPbap;->isConnected(Landroid/bluetooth/BluetoothDevice;)Z
-HSPLandroid/bluetooth/BluetoothSap$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/BluetoothSap;-><init>(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothSap;->doBind()Z
-HSPLandroid/bluetooth/BluetoothSap;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothSocket$SocketState;-><init>(Ljava/lang/String;I)V
-HSPLandroid/bluetooth/BluetoothUuid;->containsAnyUuid([Landroid/os/ParcelUuid;[Landroid/os/ParcelUuid;)Z
-HSPLandroid/bluetooth/BluetoothUuid;->isUuidPresent([Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;)Z
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->enable()Z
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getBondState(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getBondedDevices()[Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getConnectionState(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getName()Ljava/lang/String;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getPhonebookAccessPermission(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getRemoteAlias(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getRemoteClass(Landroid/bluetooth/BluetoothDevice;)I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getRemoteName(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getRemoteUuids(Landroid/bluetooth/BluetoothDevice;)[Landroid/os/ParcelUuid;
+HSPLandroid/bluetooth/BluetoothHeadset;->isEnabled()Z
+HSPLandroid/bluetooth/BluetoothManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
+HSPLandroid/bluetooth/BluetoothProfileConnector$1;-><init>(Landroid/bluetooth/BluetoothProfileConnector;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector$2;-><init>(Landroid/bluetooth/BluetoothProfileConnector;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector;-><init>(Landroid/bluetooth/BluetoothProfile;ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector;->access$200(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/String;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector;->access$302(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/bluetooth/BluetoothProfileConnector;->access$400(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile$ServiceListener;
+HSPLandroid/bluetooth/BluetoothProfileConnector;->access$500(Landroid/bluetooth/BluetoothProfileConnector;)I
+HSPLandroid/bluetooth/BluetoothProfileConnector;->access$600(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile;
+HSPLandroid/bluetooth/BluetoothProfileConnector;->connect(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
+HSPLandroid/bluetooth/BluetoothProfileConnector;->doBind()Z
+HSPLandroid/bluetooth/BluetoothProfileConnector;->getService()Ljava/lang/Object;
+HSPLandroid/bluetooth/BluetoothProfileConnector;->logDebug(Ljava/lang/String;)V
+HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getState()I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getSupportedProfiles()J
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getUuids()[Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->isEnabled()Z
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->onLeServiceUp()V
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->registerCallback(Landroid/bluetooth/IBluetoothCallback;)V
-HPLandroid/bluetooth/IBluetooth$Stub$Proxy;->requestActivityInfo(Landroid/os/ResultReceiver;)V
 HSPLandroid/bluetooth/IBluetooth$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetooth;
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getActiveDevice()Landroid/bluetooth/BluetoothDevice;
-HPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getCodecStatus(Landroid/bluetooth/BluetoothDevice;)Landroid/bluetooth/BluetoothCodecStatus;
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothCallback$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothGatt$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothGatt;
-HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->getActiveDevice()Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;->phoneStateChanged(IIILjava/lang/String;ILjava/lang/String;)V
-HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;-><init>()V
-HPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getActiveDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothHearingAid$Stub$Proxy;->getHiSyncId(Landroid/bluetooth/BluetoothDevice;)J
-HSPLandroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothHidHost$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
+HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp;
+HSPLandroid/bluetooth/IBluetoothHeadset$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadset;
+HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z
-HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->isHearingAidProfileSupported()Z
 HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth;
 HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
-HSPLandroid/bluetooth/IBluetoothManager$Stub;-><init>()V
-HPLandroid/bluetooth/IBluetoothManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/bluetooth/IBluetoothManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;->onBluetoothServiceUp(Landroid/bluetooth/IBluetooth;)V
+HSPLandroid/bluetooth/IBluetoothManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothManager;
+HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;-><init>()V
 HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothMap$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;-><init>()V
 HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothProfileServiceConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothSap$Stub$Proxy;->getConnectedDevices()Ljava/util/List;
-HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;->onBluetoothStateChange(Z)V
+HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;-><init>()V
 HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothStateChangeCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/UidTraffic$1;-><init>()V
-HSPLandroid/bluetooth/le/ScanFilter$1;-><init>()V
 HSPLandroid/bluetooth/le/ScanFilter$Builder;-><init>()V
 HSPLandroid/bluetooth/le/ScanFilter$Builder;->build()Landroid/bluetooth/le/ScanFilter;
-HSPLandroid/bluetooth/le/ScanResult$1;-><init>()V
-HSPLandroid/bluetooth/le/ScanSettings$1;-><init>()V
-HSPLandroid/companion/ICompanionDeviceManager$Stub;-><init>()V
-HSPLandroid/companion/ICompanionDeviceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/companion/ICompanionDeviceManager;
-HPLandroid/companion/ICompanionDeviceManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc;-><init>()V
+HSPLandroid/compat/Compatibility$Callbacks;-><init>()V
+HSPLandroid/compat/Compatibility;->isChangeEnabled(J)Z
+HSPLandroid/compat/Compatibility;->setCallbacks(Landroid/compat/Compatibility$Callbacks;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/AbstractThreadedSyncAdapter$1;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;Landroid/content/AbstractThreadedSyncAdapter$1;)V
+HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->isCanceled()Z
+HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->run()V
+HSPLandroid/content/AbstractThreadedSyncAdapter;-><init>(Landroid/content/Context;ZZ)V
+HSPLandroid/content/AbstractThreadedSyncAdapter;->getContext()Landroid/content/Context;
+HSPLandroid/content/AbstractThreadedSyncAdapter;->getSyncAdapterBinder()Landroid/os/IBinder;
 HSPLandroid/content/AsyncQueryHandler$WorkerHandler;-><init>(Landroid/content/AsyncQueryHandler;Landroid/os/Looper;)V
-HSPLandroid/content/AsyncQueryHandler$WorkerHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/content/AsyncQueryHandler;-><init>(Landroid/content/ContentResolver;)V
 HSPLandroid/content/AsyncQueryHandler;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
-HSPLandroid/content/AsyncQueryHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/content/AsyncQueryHandler;->startQuery(ILjava/lang/Object;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/content/AsyncTaskLoader$LoadTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Object;
-HSPLandroid/content/AsyncTaskLoader$LoadTask;->onPostExecute(Ljava/lang/Object;)V
-HSPLandroid/content/AsyncTaskLoader;->dispatchOnLoadComplete(Landroid/content/AsyncTaskLoader$LoadTask;Ljava/lang/Object;)V
-HSPLandroid/content/AsyncTaskLoader;->executePendingTask()V
-HSPLandroid/content/AsyncTaskLoader;->onCancelLoad()Z
-HSPLandroid/content/AsyncTaskLoader;->onForceLoad()V
-HSPLandroid/content/AsyncTaskLoader;->onLoadInBackground()Ljava/lang/Object;
-HSPLandroid/content/AutofillOptions$1;-><init>()V
 HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/AutofillOptions;
 HSPLandroid/content/AutofillOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/AutofillOptions;->isAugmentedAutofillEnabled(Landroid/content/Context;)Z
-HSPLandroid/content/AutofillOptions;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/AutofillOptions;-><init>(IZ)V
+HSPLandroid/content/BroadcastReceiver$PendingResult$1;-><init>(Landroid/content/BroadcastReceiver$PendingResult;Landroid/app/IActivityManager;)V
 HSPLandroid/content/BroadcastReceiver$PendingResult$1;->run()V
 HSPLandroid/content/BroadcastReceiver$PendingResult;-><init>(ILjava/lang/String;Landroid/os/Bundle;IZZLandroid/os/IBinder;II)V
 HSPLandroid/content/BroadcastReceiver$PendingResult;->finish()V
-HPLandroid/content/BroadcastReceiver$PendingResult;->getSendingUserId()I
 HSPLandroid/content/BroadcastReceiver$PendingResult;->sendFinished(Landroid/app/IActivityManager;)V
+HSPLandroid/content/BroadcastReceiver$PendingResult;->setExtrasClassLoader(Ljava/lang/ClassLoader;)V
 HSPLandroid/content/BroadcastReceiver;-><init>()V
 HSPLandroid/content/BroadcastReceiver;->checkSynchronousHint()V
+HSPLandroid/content/BroadcastReceiver;->getDebugUnregister()Z
+HSPLandroid/content/BroadcastReceiver;->getPendingResult()Landroid/content/BroadcastReceiver$PendingResult;
+HSPLandroid/content/BroadcastReceiver;->getResultCode()I
 HSPLandroid/content/BroadcastReceiver;->getSendingUserId()I
 HSPLandroid/content/BroadcastReceiver;->goAsync()Landroid/content/BroadcastReceiver$PendingResult;
 HSPLandroid/content/BroadcastReceiver;->isInitialStickyBroadcast()Z
 HSPLandroid/content/BroadcastReceiver;->isOrderedBroadcast()Z
+HSPLandroid/content/BroadcastReceiver;->setPendingResult(Landroid/content/BroadcastReceiver$PendingResult;)V
 HSPLandroid/content/BroadcastReceiver;->setResultCode(I)V
-HSPLandroid/content/ClipData$1;-><init>()V
-HSPLandroid/content/ClipData$Item;->getIntent()Landroid/content/Intent;
-PLandroid/content/ClipData$Item;->getUri()Landroid/net/Uri;
-HSPLandroid/content/ClipData;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/ClipData;->getDescription()Landroid/content/ClipDescription;
-HSPLandroid/content/ClipData;->getItemAt(I)Landroid/content/ClipData$Item;
-HSPLandroid/content/ClipData;->getItemCount()I
-HSPLandroid/content/ClipData;->readHtmlTextFromParcel(Landroid/os/Parcel;)Ljava/lang/String;
-HSPLandroid/content/ClipData;->writeHtmlTextToParcel(Ljava/lang/String;Landroid/os/Parcel;I)V
-HSPLandroid/content/ClipData;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/ClipDescription$1;-><init>()V
-HSPLandroid/content/ClipDescription;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/ClipboardManager$1;-><init>(Landroid/content/ClipboardManager;)V
 HSPLandroid/content/ClipboardManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLandroid/content/ClipboardManager;->addPrimaryClipChangedListener(Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;)V
-HSPLandroid/content/ComponentName$1;-><init>()V
 HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;
 HSPLandroid/content/ComponentName$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/ComponentName$1;->newArray(I)[Landroid/content/ComponentName;
-HSPLandroid/content/ComponentName$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
 HSPLandroid/content/ComponentName;-><init>(Landroid/content/Context;Ljava/lang/String;)V
 HSPLandroid/content/ComponentName;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/ComponentName;-><init>(Ljava/lang/String;Landroid/os/Parcel;)V
 HSPLandroid/content/ComponentName;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HPLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;)V
-HSPLandroid/content/ComponentName;->compareTo(Landroid/content/ComponentName;)I
-HSPLandroid/content/ComponentName;->createRelative(Ljava/lang/String;Ljava/lang/String;)Landroid/content/ComponentName;
+HSPLandroid/content/ComponentName;->appendShortClassName(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/content/ComponentName;->appendShortString(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/content/ComponentName;->equals(Ljava/lang/Object;)Z
 HSPLandroid/content/ComponentName;->flattenToShortString()Ljava/lang/String;
-HPLandroid/content/ComponentName;->flattenToShortString(Landroid/content/ComponentName;)Ljava/lang/String;
 HSPLandroid/content/ComponentName;->flattenToString()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->getClassName()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->getPackageName()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->getShortClassName()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->hashCode()I
+HSPLandroid/content/ComponentName;->readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;
 HSPLandroid/content/ComponentName;->toShortString()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->toString()Ljava/lang/String;
 HSPLandroid/content/ComponentName;->unflattenFromString(Ljava/lang/String;)Landroid/content/ComponentName;
+HSPLandroid/content/ComponentName;->writeToParcel(Landroid/content/ComponentName;Landroid/os/Parcel;)V
 HSPLandroid/content/ComponentName;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/ContentCaptureOptions$1;-><init>()V
+HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentCaptureOptions;
+HSPLandroid/content/ContentCaptureOptions$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/content/ContentCaptureOptions;-><init>(IIIIILandroid/util/ArraySet;)V
+HSPLandroid/content/ContentCaptureOptions;-><init>(ZIIIIILandroid/util/ArraySet;)V
 HSPLandroid/content/ContentCaptureOptions;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/ContentProvider$Transport;->applyBatch(Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
-HSPLandroid/content/ContentProvider$Transport;->bulkInsert(Ljava/lang/String;Landroid/net/Uri;[Landroid/content/ContentValues;)I
-HSPLandroid/content/ContentProvider$Transport;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HSPLandroid/content/ContentProvider$Transport;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider$Transport;-><init>(Landroid/content/ContentProvider;)V
+HSPLandroid/content/ContentProvider$Transport;->access$300(Landroid/content/ContentProvider$Transport;Ljava/lang/String;Ljava/lang/String;I)I
+HSPLandroid/content/ContentProvider$Transport;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/content/ContentProvider$Transport;->createCancellationSignal()Landroid/os/ICancellationSignal;
-HSPLandroid/content/ContentProvider$Transport;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/ContentProvider$Transport;->enforceFilePermission(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V
+HSPLandroid/content/ContentProvider$Transport;->delete(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)I
+HSPLandroid/content/ContentProvider$Transport;->enforceFilePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V
+HSPLandroid/content/ContentProvider$Transport;->enforceReadPermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)I
+HSPLandroid/content/ContentProvider$Transport;->enforceWritePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)I
 HSPLandroid/content/ContentProvider$Transport;->getContentProvider()Landroid/content/ContentProvider;
 HSPLandroid/content/ContentProvider$Transport;->getProviderName()Ljava/lang/String;
-HSPLandroid/content/ContentProvider$Transport;->getType(Landroid/net/Uri;)Ljava/lang/String;
-HSPLandroid/content/ContentProvider$Transport;->insert(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
-HSPLandroid/content/ContentProvider$Transport;->noteProxyOp(Ljava/lang/String;I)I
-HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;
-HSPLandroid/content/ContentProvider$Transport;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/content/ContentProvider$Transport;->update(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
+HSPLandroid/content/ContentProvider$Transport;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider$Transport;->noteProxyOp(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLandroid/content/ContentProvider$Transport;->openTypedAssetFile(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;
+HSPLandroid/content/ContentProvider$Transport;->query(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;
+HSPLandroid/content/ContentProvider$Transport;->update(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I
 HSPLandroid/content/ContentProvider;-><init>()V
+HSPLandroid/content/ContentProvider;->access$000(Landroid/content/ContentProvider;Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider;->access$100(Landroid/content/ContentProvider;Landroid/util/Pair;)Landroid/util/Pair;
+HSPLandroid/content/ContentProvider;->access$200(Landroid/content/ContentProvider;Ljava/lang/String;)V
 HSPLandroid/content/ContentProvider;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
 HSPLandroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
 HSPLandroid/content/ContentProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;Z)V
 HSPLandroid/content/ContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HPLandroid/content/ContentProvider;->canonicalize(Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider;->checkPermissionAndAppOp(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/IBinder;)I
 HSPLandroid/content/ContentProvider;->checkUser(IILandroid/content/Context;)Z
-HSPLandroid/content/ContentProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
-HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)I
+HSPLandroid/content/ContentProvider;->coerceToLocalContentProvider(Landroid/content/IContentProvider;)Landroid/content/ContentProvider;
+HSPLandroid/content/ContentProvider;->delete(Landroid/net/Uri;Landroid/os/Bundle;)I
+HSPLandroid/content/ContentProvider;->enforceReadPermissionInner(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/IBinder;)I
+HSPLandroid/content/ContentProvider;->enforceWritePermissionInner(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/IBinder;)I
 HSPLandroid/content/ContentProvider;->getAuthorityWithoutUserId(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/ContentProvider;->getCallingPackage()Ljava/lang/String;
 HSPLandroid/content/ContentProvider;->getContext()Landroid/content/Context;
 HSPLandroid/content/ContentProvider;->getIContentProvider()Landroid/content/IContentProvider;
+HSPLandroid/content/ContentProvider;->getPathPermissions()[Landroid/content/pm/PathPermission;
+HSPLandroid/content/ContentProvider;->getReadPermission()Ljava/lang/String;
 HSPLandroid/content/ContentProvider;->getUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri;
 HSPLandroid/content/ContentProvider;->getUserIdFromAuthority(Ljava/lang/String;I)I
 HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;)I
 HSPLandroid/content/ContentProvider;->getUserIdFromUri(Landroid/net/Uri;I)I
+HSPLandroid/content/ContentProvider;->getWritePermission()Ljava/lang/String;
+HSPLandroid/content/ContentProvider;->insert(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;
 HSPLandroid/content/ContentProvider;->matchesOurAuthorities(Ljava/lang/String;)Z
 HSPLandroid/content/ContentProvider;->maybeAddUserId(Landroid/net/Uri;I)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider;->maybeGetUriWithoutUserId(Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProvider;->onCallingPackageChanged()V
 HSPLandroid/content/ContentProvider;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HPLandroid/content/ContentProvider;->onLowMemory()V
 HSPLandroid/content/ContentProvider;->onTrimMemory(I)V
 HSPLandroid/content/ContentProvider;->openAssetFile(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/ContentProvider;->openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/ContentProvider;->openTypedAssetFile(Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
 HSPLandroid/content/ContentProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/content/ContentProvider;->setAppOps(II)V
+HSPLandroid/content/ContentProvider;->setAuthorities(Ljava/lang/String;)V
+HSPLandroid/content/ContentProvider;->setCallingPackage(Landroid/util/Pair;)Landroid/util/Pair;
+HSPLandroid/content/ContentProvider;->setPathPermissions([Landroid/content/pm/PathPermission;)V
+HSPLandroid/content/ContentProvider;->setReadPermission(Ljava/lang/String;)V
+HSPLandroid/content/ContentProvider;->setTransportLoggingEnabled(Z)V
+HSPLandroid/content/ContentProvider;->setWritePermission(Ljava/lang/String;)V
+HSPLandroid/content/ContentProvider;->update(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I
+HSPLandroid/content/ContentProvider;->uriHasUserId(Landroid/net/Uri;)Z
 HSPLandroid/content/ContentProvider;->validateIncomingAuthority(Ljava/lang/String;)V
 HSPLandroid/content/ContentProvider;->validateIncomingUri(Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProviderClient$CursorWrapperInner;-><init>(Landroid/content/ContentProviderClient;Landroid/database/Cursor;)V
+HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->close()V
+HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->finalize()V
 HSPLandroid/content/ContentProviderClient;-><init>(Landroid/content/ContentResolver;Landroid/content/IContentProvider;Ljava/lang/String;Z)V
-HSPLandroid/content/ContentProviderClient;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
-HSPLandroid/content/ContentProviderClient;->applyBatch(Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
+HSPLandroid/content/ContentProviderClient;->afterRemote()V
+HSPLandroid/content/ContentProviderClient;->beforeRemote()V
 HSPLandroid/content/ContentProviderClient;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/content/ContentProviderClient;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/content/ContentProviderClient;->close()V
@@ -3437,59 +2655,53 @@
 HSPLandroid/content/ContentProviderClient;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
 HSPLandroid/content/ContentProviderClient;->release()Z
 HSPLandroid/content/ContentProviderClient;->setDetectNotResponding(J)V
+HSPLandroid/content/ContentProviderNative;-><init>()V
 HSPLandroid/content/ContentProviderNative;->asBinder()Landroid/os/IBinder;
+HSPLandroid/content/ContentProviderNative;->asInterface(Landroid/os/IBinder;)Landroid/content/IContentProvider;
 HSPLandroid/content/ContentProviderNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/ContentProviderOperation$1;-><init>()V
-HSPLandroid/content/ContentProviderOperation$Builder;->build()Landroid/content/ContentProviderOperation;
-HSPLandroid/content/ContentProviderOperation$Builder;->withValue(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/ContentProviderOperation$Builder;
-HSPLandroid/content/ContentProviderOperation;-><init>(Landroid/content/ContentProviderOperation$Builder;)V
-HSPLandroid/content/ContentProviderOperation;->apply(Landroid/content/ContentProvider;[Landroid/content/ContentProviderResult;I)Landroid/content/ContentProviderResult;
 HSPLandroid/content/ContentProviderOperation;->getUri()Landroid/net/Uri;
-HSPLandroid/content/ContentProviderOperation;->isReadOperation()Z
-HSPLandroid/content/ContentProviderOperation;->isWriteOperation()Z
-HSPLandroid/content/ContentProviderOperation;->newInsert(Landroid/net/Uri;)Landroid/content/ContentProviderOperation$Builder;
-HSPLandroid/content/ContentProviderOperation;->resolveSelectionArgsBackReferences([Landroid/content/ContentProviderResult;I)[Ljava/lang/String;
-HSPLandroid/content/ContentProviderOperation;->resolveValueBackReferences([Landroid/content/ContentProviderResult;I)Landroid/content/ContentValues;
+HSPLandroid/content/ContentProviderProxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/content/ContentProviderProxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/ContentProviderProxy;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HPLandroid/content/ContentProviderProxy;->canonicalize(Ljava/lang/String;Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentProviderProxy;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/content/ContentProviderProxy;->createCancellationSignal()Landroid/os/ICancellationSignal;
-HSPLandroid/content/ContentProviderProxy;->delete(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/ContentProviderProxy;->getType(Landroid/net/Uri;)Ljava/lang/String;
-HSPLandroid/content/ContentProviderProxy;->insert(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
-HSPLandroid/content/ContentProviderProxy;->openTypedAssetFile(Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;
-HSPLandroid/content/ContentProviderProxy;->query(Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/content/ContentProviderProxy;->update(Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/ContentProviderResult$1;-><init>()V
+HSPLandroid/content/ContentProviderProxy;->delete(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)I
+HSPLandroid/content/ContentProviderProxy;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;
+HSPLandroid/content/ContentProviderProxy;->openTypedAssetFile(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/content/res/AssetFileDescriptor;
+HSPLandroid/content/ContentProviderProxy;->query(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ICancellationSignal;)Landroid/database/Cursor;
+HSPLandroid/content/ContentResolver$CursorWrapperInner;-><init>(Landroid/content/ContentResolver;Landroid/database/Cursor;Landroid/content/IContentProvider;)V
 HSPLandroid/content/ContentResolver$CursorWrapperInner;->close()V
 HSPLandroid/content/ContentResolver$CursorWrapperInner;->finalize()V
+HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;-><init>(Landroid/content/ContentResolver;Landroid/os/ParcelFileDescriptor;Landroid/content/IContentProvider;)V
 HSPLandroid/content/ContentResolver$ParcelFileDescriptorInner;->releaseResources()V
+HSPLandroid/content/ContentResolver;-><init>(Landroid/content/Context;)V
 HSPLandroid/content/ContentResolver;-><init>(Landroid/content/Context;Landroid/content/ContentInterface;)V
 HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;
 HSPLandroid/content/ContentResolver;->acquireContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;
+HSPLandroid/content/ContentResolver;->acquireExistingProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;
+HSPLandroid/content/ContentResolver;->acquireProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;
 HSPLandroid/content/ContentResolver;->acquireProvider(Ljava/lang/String;)Landroid/content/IContentProvider;
 HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Landroid/net/Uri;)Landroid/content/ContentProviderClient;
-HSPLandroid/content/ContentResolver;->applyBatch(Ljava/lang/String;Ljava/util/ArrayList;)[Landroid/content/ContentProviderResult;
+HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Landroid/net/Uri;)Landroid/content/IContentProvider;
 HSPLandroid/content/ContentResolver;->call(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLandroid/content/ContentResolver;->call(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HPLandroid/content/ContentResolver;->canonicalize(Landroid/net/Uri;)Landroid/net/Uri;
+HSPLandroid/content/ContentResolver;->createSqlQueryBundle(Ljava/lang/String;[Ljava/lang/String;)Landroid/os/Bundle;
 HSPLandroid/content/ContentResolver;->createSqlQueryBundle(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
+HSPLandroid/content/ContentResolver;->delete(Landroid/net/Uri;Landroid/os/Bundle;)I
 HSPLandroid/content/ContentResolver;->delete(Landroid/net/Uri;Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/ContentResolver;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
-HPLandroid/content/ContentResolver;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
-HPLandroid/content/ContentResolver;->getMasterSyncAutomaticallyAsUser(I)Z
+HSPLandroid/content/ContentResolver;->getContentService()Landroid/content/IContentService;
+HSPLandroid/content/ContentResolver;->getFeatureId()Ljava/lang/String;
 HSPLandroid/content/ContentResolver;->getPackageName()Ljava/lang/String;
-HSPLandroid/content/ContentResolver;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
-HSPLandroid/content/ContentResolver;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType;
-HPLandroid/content/ContentResolver;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
 HSPLandroid/content/ContentResolver;->getType(Landroid/net/Uri;)Ljava/lang/String;
 HSPLandroid/content/ContentResolver;->getUserId()I
 HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;)Landroid/net/Uri;
+HSPLandroid/content/ContentResolver;->insert(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)Landroid/net/Uri;
+HSPLandroid/content/ContentResolver;->maybeLogQueryToEventLog(JLandroid/net/Uri;[Ljava/lang/String;Landroid/os/Bundle;)V
+HSPLandroid/content/ContentResolver;->maybeLogUpdateToEventLog(JLandroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;)V
+HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;I)V
 HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;II)V
 HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;Z)V
-HSPLandroid/content/ContentResolver;->notifyChange(Landroid/net/Uri;Landroid/database/ContentObserver;ZI)V
-HSPLandroid/content/ContentResolver;->openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;
+HSPLandroid/content/ContentResolver;->notifyChange([Landroid/net/Uri;Landroid/database/ContentObserver;II)V
 HSPLandroid/content/ContentResolver;->openAssetFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/content/ContentResolver;->openFileDescriptor(Landroid/net/Uri;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/os/ParcelFileDescriptor;
@@ -3500,31 +2712,31 @@
 HSPLandroid/content/ContentResolver;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
 HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;)V
 HSPLandroid/content/ContentResolver;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/ContentObserver;I)V
-HSPLandroid/content/ContentResolver;->resolveUserId(Landroid/net/Uri;)I
-HPLandroid/content/ContentResolver;->syncErrorToString(I)Ljava/lang/String;
 HSPLandroid/content/ContentResolver;->unregisterContentObserver(Landroid/database/ContentObserver;)V
+HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Landroid/os/Bundle;)I
 HSPLandroid/content/ContentResolver;->update(Landroid/net/Uri;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
 HSPLandroid/content/ContentUris;->appendId(Landroid/net/Uri$Builder;J)Landroid/net/Uri$Builder;
 HSPLandroid/content/ContentUris;->parseId(Landroid/net/Uri;)J
 HSPLandroid/content/ContentUris;->withAppendedId(Landroid/net/Uri;J)Landroid/net/Uri;
-HSPLandroid/content/ContentValues$1;-><init>()V
 HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/ContentValues;
 HSPLandroid/content/ContentValues$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/ContentValues$1;->newArray(I)[Landroid/content/ContentValues;
-HSPLandroid/content/ContentValues$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/content/ContentValues;-><init>()V
 HSPLandroid/content/ContentValues;-><init>(I)V
 HSPLandroid/content/ContentValues;-><init>(Landroid/content/ContentValues;)V
+HSPLandroid/content/ContentValues;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/ContentValues;-><init>(Landroid/os/Parcel;Landroid/content/ContentValues$1;)V
 HSPLandroid/content/ContentValues;->clear()V
 HSPLandroid/content/ContentValues;->containsKey(Ljava/lang/String;)Z
+HSPLandroid/content/ContentValues;->get(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/content/ContentValues;->getAsBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
 HSPLandroid/content/ContentValues;->getAsInteger(Ljava/lang/String;)Ljava/lang/Integer;
 HSPLandroid/content/ContentValues;->getAsLong(Ljava/lang/String;)Ljava/lang/Long;
 HSPLandroid/content/ContentValues;->getAsString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/content/ContentValues;->getValues()Landroid/util/ArrayMap;
+HSPLandroid/content/ContentValues;->isEmpty()Z
 HSPLandroid/content/ContentValues;->keySet()Ljava/util/Set;
 HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Boolean;)V
 HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Double;)V
-HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Float;)V
 HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Integer;)V
 HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/Long;)V
 HSPLandroid/content/ContentValues;->put(Ljava/lang/String;Ljava/lang/String;)V
@@ -3532,8 +2744,9 @@
 HSPLandroid/content/ContentValues;->putNull(Ljava/lang/String;)V
 HSPLandroid/content/ContentValues;->remove(Ljava/lang/String;)V
 HSPLandroid/content/ContentValues;->size()I
-HSPLandroid/content/ContentValues;->toString()Ljava/lang/String;
-HSPLandroid/content/Context;->assertRuntimeOverlayThemable()V
+HSPLandroid/content/ContentValues;->valueSet()Ljava/util/Set;
+HSPLandroid/content/ContentValues;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/Context;-><init>()V
 HSPLandroid/content/Context;->getColor(I)I
 HSPLandroid/content/Context;->getColorStateList(I)Landroid/content/res/ColorStateList;
 HSPLandroid/content/Context;->getDrawable(I)Landroid/graphics/drawable/Drawable;
@@ -3543,7 +2756,6 @@
 HSPLandroid/content/Context;->getString(I[Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/content/Context;->getSystemService(Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/content/Context;->getText(I)Ljava/lang/CharSequence;
-HSPLandroid/content/Context;->getUser()Landroid/os/UserHandle;
 HSPLandroid/content/Context;->isAutofillCompatibilityEnabled()Z
 HSPLandroid/content/Context;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/Context;->obtainStyledAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
@@ -3552,24 +2764,22 @@
 HSPLandroid/content/ContextWrapper;-><init>(Landroid/content/Context;)V
 HSPLandroid/content/ContextWrapper;->attachBaseContext(Landroid/content/Context;)V
 HSPLandroid/content/ContextWrapper;->bindService(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
-HSPLandroid/content/ContextWrapper;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/Handler;Landroid/os/UserHandle;)Z
 HSPLandroid/content/ContextWrapper;->bindServiceAsUser(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z
 HSPLandroid/content/ContextWrapper;->canLoadUnsafeResources()Z
 HSPLandroid/content/ContextWrapper;->checkCallingOrSelfPermission(Ljava/lang/String;)I
-HSPLandroid/content/ContextWrapper;->checkCallingPermission(Ljava/lang/String;)I
 HSPLandroid/content/ContextWrapper;->checkPermission(Ljava/lang/String;II)I
 HSPLandroid/content/ContextWrapper;->checkPermission(Ljava/lang/String;IILandroid/os/IBinder;)I
 HSPLandroid/content/ContextWrapper;->checkSelfPermission(Ljava/lang/String;)I
 HSPLandroid/content/ContextWrapper;->createApplicationContext(Landroid/content/pm/ApplicationInfo;I)Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->createConfigurationContext(Landroid/content/res/Configuration;)Landroid/content/Context;
-HSPLandroid/content/ContextWrapper;->createCredentialProtectedStorageContext()Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->createDeviceProtectedStorageContext()Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->createDisplayContext(Landroid/view/Display;)Landroid/content/Context;
+HSPLandroid/content/ContextWrapper;->createFeatureContext(Ljava/lang/String;)Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->createPackageContext(Ljava/lang/String;I)Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->createPackageContextAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/Context;
+HSPLandroid/content/ContextWrapper;->deleteDatabase(Ljava/lang/String;)Z
+HSPLandroid/content/ContextWrapper;->deleteFile(Ljava/lang/String;)Z
 HSPLandroid/content/ContextWrapper;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/content/ContextWrapper;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/content/ContextWrapper;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
 HSPLandroid/content/ContextWrapper;->getApplicationContext()Landroid/content/Context;
 HSPLandroid/content/ContextWrapper;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
 HSPLandroid/content/ContextWrapper;->getAssets()Landroid/content/res/AssetManager;
@@ -3589,23 +2799,24 @@
 HSPLandroid/content/ContextWrapper;->getExternalCacheDir()Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getExternalFilesDir(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getExternalFilesDirs(Ljava/lang/String;)[Ljava/io/File;
+HSPLandroid/content/ContextWrapper;->getFeatureId()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getFileStreamPath(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getFilesDir()Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getMainExecutor()Ljava/util/concurrent/Executor;
 HSPLandroid/content/ContextWrapper;->getMainLooper()Landroid/os/Looper;
-HSPLandroid/content/ContextWrapper;->getMainThreadHandler()Landroid/os/Handler;
 HSPLandroid/content/ContextWrapper;->getNextAutofillId()I
 HSPLandroid/content/ContextWrapper;->getNoBackupFilesDir()Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getOpPackageName()Ljava/lang/String;
+HSPLandroid/content/ContextWrapper;->getPackageCodePath()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getPackageManager()Landroid/content/pm/PackageManager;
 HSPLandroid/content/ContextWrapper;->getPackageName()Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getResources()Landroid/content/res/Resources;
-HPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/io/File;I)Landroid/content/SharedPreferences;
 HSPLandroid/content/ContextWrapper;->getSharedPreferences(Ljava/lang/String;I)Landroid/content/SharedPreferences;
 HSPLandroid/content/ContextWrapper;->getSharedPreferencesPath(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/content/ContextWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/content/ContextWrapper;->getSystemServiceName(Ljava/lang/Class;)Ljava/lang/String;
 HSPLandroid/content/ContextWrapper;->getTheme()Landroid/content/res/Resources$Theme;
+HSPLandroid/content/ContextWrapper;->getUser()Landroid/os/UserHandle;
 HSPLandroid/content/ContextWrapper;->getUserId()I
 HSPLandroid/content/ContextWrapper;->isDeviceProtectedStorage()Z
 HSPLandroid/content/ContextWrapper;->isRestricted()Z
@@ -3616,84 +2827,56 @@
 HSPLandroid/content/ContextWrapper;->registerReceiverAsUser(Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;Landroid/content/IntentFilter;Ljava/lang/String;Landroid/os/Handler;)Landroid/content/Intent;
 HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;)V
 HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;)V
-HSPLandroid/content/ContextWrapper;->sendBroadcast(Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;)V
 HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
 HSPLandroid/content/ContextWrapper;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;)V
-HPLandroid/content/ContextWrapper;->sendOrderedBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/Handler;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/content/ContextWrapper;->sendStickyBroadcast(Landroid/content/Intent;)V
 HSPLandroid/content/ContextWrapper;->sendStickyBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
-HSPLandroid/content/ContextWrapper;->setAutofillClient(Landroid/view/autofill/AutofillManager$AutofillClient;)V
 HSPLandroid/content/ContextWrapper;->setAutofillOptions(Landroid/content/AutofillOptions;)V
 HSPLandroid/content/ContextWrapper;->setContentCaptureOptions(Landroid/content/ContentCaptureOptions;)V
-HSPLandroid/content/ContextWrapper;->setTheme(I)V
-HSPLandroid/content/ContextWrapper;->startActivity(Landroid/content/Intent;)V
 HSPLandroid/content/ContextWrapper;->startForegroundService(Landroid/content/Intent;)Landroid/content/ComponentName;
 HSPLandroid/content/ContextWrapper;->startService(Landroid/content/Intent;)Landroid/content/ComponentName;
 HSPLandroid/content/ContextWrapper;->stopService(Landroid/content/Intent;)Z
 HSPLandroid/content/ContextWrapper;->unbindService(Landroid/content/ServiceConnection;)V
 HSPLandroid/content/ContextWrapper;->unregisterReceiver(Landroid/content/BroadcastReceiver;)V
-HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V
-HSPLandroid/content/IClipboard$Stub;-><init>()V
-HPLandroid/content/IClipboard$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/content/ContextWrapper;->updateDisplay(I)V
+HSPLandroid/content/IClipboard$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;I)V
+HSPLandroid/content/IClipboard$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IClipboard;
+HSPLandroid/content/IContentService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/content/IContentService$Stub$Proxy;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
 HSPLandroid/content/IContentService$Stub$Proxy;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
-HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
+HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z
+HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
+HSPLandroid/content/IContentService$Stub$Proxy;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
 HSPLandroid/content/IContentService$Stub$Proxy;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V
 HSPLandroid/content/IContentService$Stub$Proxy;->unregisterContentObserver(Landroid/database/IContentObserver;)V
-HSPLandroid/content/IContentService$Stub;-><init>()V
-HPLandroid/content/IContentService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/content/IContentService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/IIntentReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/IIntentReceiver$Stub$Proxy;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HSPLandroid/content/IContentService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IContentService;
 HSPLandroid/content/IIntentReceiver$Stub;-><init>()V
 HSPLandroid/content/IIntentReceiver$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/content/IIntentReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IIntentReceiver;
+HSPLandroid/content/IIntentSender$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/content/IIntentSender$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/IIntentSender$Stub;-><init>()V
-HSPLandroid/content/IIntentSender$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/content/IIntentSender$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/IIntentSender;
-PLandroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/content/IOnPrimaryClipChangedListener$Stub;-><init>()V
 HSPLandroid/content/IOnPrimaryClipChangedListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/IRestrictionsManager$Stub;-><init>()V
-HSPLandroid/content/IRestrictionsManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/content/ISyncAdapter$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/content/ISyncAdapter$Stub$Proxy;->cancelSync(Landroid/content/ISyncContext;)V
-PLandroid/content/ISyncAdapter$Stub$Proxy;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
-HPLandroid/content/ISyncAdapter$Stub$Proxy;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
-HPLandroid/content/ISyncAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapter;
-HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;-><init>()V
-HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/content/ISyncContext$Stub;-><init>()V
-HPLandroid/content/ISyncContext$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/ISyncContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/content/ISyncStatusObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/ISyncStatusObserver$Stub$Proxy;->onStatusChanged(I)V
-HPLandroid/content/ISyncStatusObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncStatusObserver;
-HSPLandroid/content/Intent$1;-><init>()V
+HSPLandroid/content/ISyncAdapter$Stub;-><init>()V
+HSPLandroid/content/ISyncAdapter$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/content/ISyncAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/content/ISyncContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/content/ISyncContext$Stub$Proxy;->onFinished(Landroid/content/SyncResult;)V
+HSPLandroid/content/ISyncContext$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncContext;
 HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/Intent;
 HSPLandroid/content/Intent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/Intent$1;->newArray(I)[Landroid/content/Intent;
-HSPLandroid/content/Intent$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/Intent$FilterComparison;-><init>(Landroid/content/Intent;)V
-HSPLandroid/content/Intent$FilterComparison;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/Intent$FilterComparison;->hashCode()I
 HSPLandroid/content/Intent;-><init>()V
 HSPLandroid/content/Intent;-><init>(Landroid/content/Context;Ljava/lang/Class;)V
 HSPLandroid/content/Intent;-><init>(Landroid/content/Intent;)V
 HSPLandroid/content/Intent;-><init>(Landroid/content/Intent;I)V
+HSPLandroid/content/Intent;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;)V
 HSPLandroid/content/Intent;-><init>(Ljava/lang/String;Landroid/net/Uri;Landroid/content/Context;Ljava/lang/Class;)V
 HSPLandroid/content/Intent;->addCategory(Ljava/lang/String;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->addFlags(I)Landroid/content/Intent;
-HSPLandroid/content/Intent;->canStripForHistory()Z
 HSPLandroid/content/Intent;->cloneFilter()Landroid/content/Intent;
-HSPLandroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->createChooser(Landroid/content/Intent;Ljava/lang/CharSequence;Landroid/content/IntentSender;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->describeContents()I
-HSPLandroid/content/Intent;->fillIn(Landroid/content/Intent;I)I
-HSPLandroid/content/Intent;->filterEquals(Landroid/content/Intent;)Z
-HSPLandroid/content/Intent;->filterHashCode()I
 HSPLandroid/content/Intent;->getAction()Ljava/lang/String;
 HSPLandroid/content/Intent;->getBooleanExtra(Ljava/lang/String;Z)Z
 HSPLandroid/content/Intent;->getBundleExtra(Ljava/lang/String;)Landroid/os/Bundle;
@@ -3701,39 +2884,25 @@
 HSPLandroid/content/Intent;->getCategories()Ljava/util/Set;
 HSPLandroid/content/Intent;->getClipData()Landroid/content/ClipData;
 HSPLandroid/content/Intent;->getComponent()Landroid/content/ComponentName;
-HSPLandroid/content/Intent;->getContentUserHint()I
 HSPLandroid/content/Intent;->getData()Landroid/net/Uri;
 HSPLandroid/content/Intent;->getDataString()Ljava/lang/String;
 HSPLandroid/content/Intent;->getExtras()Landroid/os/Bundle;
 HSPLandroid/content/Intent;->getFlags()I
 HSPLandroid/content/Intent;->getIntArrayExtra(Ljava/lang/String;)[I
 HSPLandroid/content/Intent;->getIntExtra(Ljava/lang/String;I)I
-HSPLandroid/content/Intent;->getLaunchToken()Ljava/lang/String;
 HSPLandroid/content/Intent;->getLongExtra(Ljava/lang/String;J)J
 HSPLandroid/content/Intent;->getPackage()Ljava/lang/String;
-HSPLandroid/content/Intent;->getParcelableArrayExtra(Ljava/lang/String;)[Landroid/os/Parcelable;
 HSPLandroid/content/Intent;->getParcelableArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/content/Intent;->getParcelableExtra(Ljava/lang/String;)Landroid/os/Parcelable;
 HSPLandroid/content/Intent;->getScheme()Ljava/lang/String;
-HSPLandroid/content/Intent;->getSelector()Landroid/content/Intent;
 HSPLandroid/content/Intent;->getSerializableExtra(Ljava/lang/String;)Ljava/io/Serializable;
-HSPLandroid/content/Intent;->getSourceBounds()Landroid/graphics/Rect;
 HSPLandroid/content/Intent;->getStringArrayExtra(Ljava/lang/String;)[Ljava/lang/String;
 HSPLandroid/content/Intent;->getStringArrayListExtra(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/content/Intent;->getStringExtra(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/Intent;->getType()Ljava/lang/String;
 HSPLandroid/content/Intent;->hasCategory(Ljava/lang/String;)Z
 HSPLandroid/content/Intent;->hasExtra(Ljava/lang/String;)Z
-HSPLandroid/content/Intent;->hasFileDescriptors()Z
-HSPLandroid/content/Intent;->hasWebURI()Z
-HSPLandroid/content/Intent;->isDocument()Z
-HSPLandroid/content/Intent;->isExcludingStopped()Z
-HSPLandroid/content/Intent;->isWebIntent()Z
-HSPLandroid/content/Intent;->makeMainSelectorActivity(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->makeRestartActivityTask(Landroid/content/ComponentName;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->maybeStripForHistory()Landroid/content/Intent;
 HSPLandroid/content/Intent;->migrateExtraStreamToClipData()Z
-HSPLandroid/content/Intent;->parseIntent(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->parseUri(Ljava/lang/String;I)Landroid/content/Intent;
 HSPLandroid/content/Intent;->prepareToEnterProcess()V
 HSPLandroid/content/Intent;->prepareToLeaveProcess(Landroid/content/Context;)V
@@ -3743,26 +2912,20 @@
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Bundle;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Landroid/os/Parcelable;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/io/Serializable;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/CharSequence;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;Z)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;[B)Landroid/content/Intent;
-HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;[I)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtra(Ljava/lang/String;[Ljava/lang/String;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putExtras(Landroid/os/Bundle;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putParcelableArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->putStringArrayListExtra(Ljava/lang/String;Ljava/util/ArrayList;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/content/Intent;->removeExtra(Ljava/lang/String;)V
-HPLandroid/content/Intent;->removeFlags(I)V
-HSPLandroid/content/Intent;->replaceExtras(Landroid/content/Intent;)Landroid/content/Intent;
+HSPLandroid/content/Intent;->removeCategory(Ljava/lang/String;)V
 HSPLandroid/content/Intent;->replaceExtras(Landroid/os/Bundle;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->resolveActivity(Landroid/content/pm/PackageManager;)Landroid/content/ComponentName;
 HSPLandroid/content/Intent;->resolveSystemService(Landroid/content/pm/PackageManager;I)Landroid/content/ComponentName;
 HSPLandroid/content/Intent;->resolveType(Landroid/content/ContentResolver;)Ljava/lang/String;
 HSPLandroid/content/Intent;->resolveTypeIfNeeded(Landroid/content/ContentResolver;)Ljava/lang/String;
-HSPLandroid/content/Intent;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
-HPLandroid/content/Intent;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLandroid/content/Intent;->setAction(Ljava/lang/String;)Landroid/content/Intent;
 HSPLandroid/content/Intent;->setAllowFds(Z)V
 HSPLandroid/content/Intent;->setClass(Landroid/content/Context;Ljava/lang/Class;)Landroid/content/Intent;
@@ -3775,671 +2938,184 @@
 HSPLandroid/content/Intent;->setExtrasClassLoader(Ljava/lang/ClassLoader;)V
 HSPLandroid/content/Intent;->setFlags(I)Landroid/content/Intent;
 HSPLandroid/content/Intent;->setPackage(Ljava/lang/String;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->setSourceBounds(Landroid/graphics/Rect;)V
+HSPLandroid/content/Intent;->setSelector(Landroid/content/Intent;)V
 HSPLandroid/content/Intent;->setType(Ljava/lang/String;)Landroid/content/Intent;
-HSPLandroid/content/Intent;->toInsecureString()Ljava/lang/String;
 HSPLandroid/content/Intent;->toShortString(Ljava/lang/StringBuilder;ZZZZ)V
-HSPLandroid/content/Intent;->toShortString(ZZZZ)Ljava/lang/String;
 HSPLandroid/content/Intent;->toString()Ljava/lang/String;
 HSPLandroid/content/Intent;->toUri(I)Ljava/lang/String;
 HSPLandroid/content/Intent;->toUriFragment(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/content/Intent;->toUriInner(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/content/Intent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/IntentFilter$1;-><init>()V
 HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentFilter;
 HSPLandroid/content/IntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/IntentFilter$AuthorityEntry;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/content/IntentFilter$AuthorityEntry;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/content/IntentFilter$AuthorityEntry;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/IntentFilter$AuthorityEntry;->match(Landroid/net/Uri;)I
+HSPLandroid/content/IntentFilter$AuthorityEntry;->writeToParcel(Landroid/os/Parcel;)V
 HSPLandroid/content/IntentFilter;-><init>()V
-HSPLandroid/content/IntentFilter;-><init>(Landroid/content/IntentFilter;)V
 HSPLandroid/content/IntentFilter;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/content/IntentFilter;-><init>(Ljava/lang/String;)V
-HSPLandroid/content/IntentFilter;->actionsIterator()Ljava/util/Iterator;
 HSPLandroid/content/IntentFilter;->addAction(Ljava/lang/String;)V
 HSPLandroid/content/IntentFilter;->addCategory(Ljava/lang/String;)V
+HSPLandroid/content/IntentFilter;->addDataAuthority(Landroid/content/IntentFilter$AuthorityEntry;)V
 HSPLandroid/content/IntentFilter;->addDataAuthority(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/content/IntentFilter;->addDataPath(Landroid/os/PatternMatcher;)V
 HSPLandroid/content/IntentFilter;->addDataPath(Ljava/lang/String;I)V
 HSPLandroid/content/IntentFilter;->addDataScheme(Ljava/lang/String;)V
+HSPLandroid/content/IntentFilter;->addDataSchemeSpecificPart(Landroid/os/PatternMatcher;)V
 HSPLandroid/content/IntentFilter;->addDataSchemeSpecificPart(Ljava/lang/String;I)V
 HSPLandroid/content/IntentFilter;->addDataType(Ljava/lang/String;)V
-HSPLandroid/content/IntentFilter;->authoritiesIterator()Ljava/util/Iterator;
-HSPLandroid/content/IntentFilter;->categoriesIterator()Ljava/util/Iterator;
 HSPLandroid/content/IntentFilter;->countActions()I
-HSPLandroid/content/IntentFilter;->countCategories()I
-HSPLandroid/content/IntentFilter;->countDataAuthorities()I
-HSPLandroid/content/IntentFilter;->countDataPaths()I
-HSPLandroid/content/IntentFilter;->countDataSchemeSpecificParts()I
-HSPLandroid/content/IntentFilter;->countDataSchemes()I
-HSPLandroid/content/IntentFilter;->countDataTypes()I
-HSPLandroid/content/IntentFilter;->dump(Landroid/util/Printer;Ljava/lang/String;)V
-HSPLandroid/content/IntentFilter;->findMimeType(Ljava/lang/String;)Z
 HSPLandroid/content/IntentFilter;->getAction(I)Ljava/lang/String;
-HSPLandroid/content/IntentFilter;->getCategory(I)Ljava/lang/String;
-HSPLandroid/content/IntentFilter;->getDataAuthority(I)Landroid/content/IntentFilter$AuthorityEntry;
-HSPLandroid/content/IntentFilter;->getDataPath(I)Landroid/os/PatternMatcher;
-HSPLandroid/content/IntentFilter;->getDataScheme(I)Ljava/lang/String;
-HPLandroid/content/IntentFilter;->getDataSchemeSpecificPart(I)Landroid/os/PatternMatcher;
-HSPLandroid/content/IntentFilter;->getHostsList()Ljava/util/ArrayList;
+HSPLandroid/content/IntentFilter;->getAutoVerify()Z
 HSPLandroid/content/IntentFilter;->getPriority()I
-HSPLandroid/content/IntentFilter;->handleAllWebDataURI()Z
-HSPLandroid/content/IntentFilter;->handlesWebUris(Z)Z
 HSPLandroid/content/IntentFilter;->hasAction(Ljava/lang/String;)Z
 HSPLandroid/content/IntentFilter;->hasCategory(Ljava/lang/String;)Z
-HSPLandroid/content/IntentFilter;->hasDataAuthority(Landroid/content/IntentFilter$AuthorityEntry;)Z
-HSPLandroid/content/IntentFilter;->hasDataPath(Landroid/os/PatternMatcher;)Z
-HPLandroid/content/IntentFilter;->hasDataPath(Ljava/lang/String;)Z
-HSPLandroid/content/IntentFilter;->hasDataScheme(Ljava/lang/String;)Z
-HPLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Landroid/os/PatternMatcher;)Z
-HSPLandroid/content/IntentFilter;->hasDataSchemeSpecificPart(Ljava/lang/String;)Z
-HSPLandroid/content/IntentFilter;->match(Landroid/content/ContentResolver;Landroid/content/Intent;ZLjava/lang/String;)I
 HSPLandroid/content/IntentFilter;->match(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;Ljava/util/Set;Ljava/lang/String;)I
+HSPLandroid/content/IntentFilter;->matchAction(Ljava/lang/String;)Z
 HSPLandroid/content/IntentFilter;->matchCategories(Ljava/util/Set;)Ljava/lang/String;
 HSPLandroid/content/IntentFilter;->matchData(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)I
-HSPLandroid/content/IntentFilter;->matchDataAuthority(Landroid/net/Uri;)I
-HPLandroid/content/IntentFilter;->needsVerification()Z
-HSPLandroid/content/IntentFilter;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/content/IntentFilter;->schemesIterator()Ljava/util/Iterator;
+HSPLandroid/content/IntentFilter;->setAutoVerify(Z)V
 HSPLandroid/content/IntentFilter;->setPriority(I)V
 HSPLandroid/content/IntentFilter;->setVisibilityToInstantApp(I)V
-HSPLandroid/content/IntentFilter;->typesIterator()Ljava/util/Iterator;
 HSPLandroid/content/IntentFilter;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/IntentFilter;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/content/IntentSender$1;-><init>()V
-HSPLandroid/content/IntentSender$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/IntentSender;
-HSPLandroid/content/IntentSender$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/content/IntentSender;-><init>(Landroid/os/IBinder;)V
-HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;)V
-HPLandroid/content/IntentSender;->sendIntent(Landroid/content/Context;ILandroid/content/Intent;Landroid/content/IntentSender$OnFinished;Landroid/os/Handler;Ljava/lang/String;)V
-HSPLandroid/content/Loader;->cancelLoad()Z
-HSPLandroid/content/Loader;->commitContentChanged()V
-HSPLandroid/content/Loader;->forceLoad()V
-HSPLandroid/content/Loader;->getContext()Landroid/content/Context;
-HSPLandroid/content/Loader;->isAbandoned()Z
-HSPLandroid/content/Loader;->registerListener(ILandroid/content/Loader$OnLoadCompleteListener;)V
-HSPLandroid/content/Loader;->reset()V
-HSPLandroid/content/PeriodicSync$1;-><init>()V
-PLandroid/content/PeriodicSync;-><init>(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;JJ)V
-PLandroid/content/PeriodicSync;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/ServiceConnection;->onBindingDied(Landroid/content/ComponentName;)V
-HSPLandroid/content/ServiceConnection;->onNullBinding(Landroid/content/ComponentName;)V
-HSPLandroid/content/SyncAdapterType$1;-><init>()V
-HSPLandroid/content/SyncAdapterType$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncAdapterType;
-HSPLandroid/content/SyncAdapterType$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/SyncAdapterType$1;->newArray(I)[Landroid/content/SyncAdapterType;
-HSPLandroid/content/SyncAdapterType$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/SyncAdapterType;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/SyncAdapterType;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/content/SyncAdapterType;-><init>(Ljava/lang/String;Ljava/lang/String;ZZZZLjava/lang/String;Ljava/lang/String;)V
-HPLandroid/content/SyncAdapterType;->allowParallelSyncs()Z
-HSPLandroid/content/SyncAdapterType;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/SyncAdapterType;->hashCode()I
-HPLandroid/content/SyncAdapterType;->isAlwaysSyncable()Z
-HPLandroid/content/SyncAdapterType;->isUserVisible()Z
-HSPLandroid/content/SyncAdapterType;->newKey(Ljava/lang/String;Ljava/lang/String;)Landroid/content/SyncAdapterType;
-HPLandroid/content/SyncAdapterType;->supportsUploading()Z
-HPLandroid/content/SyncAdapterType;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/SyncAdaptersCache$MySerializer;-><init>()V
-HSPLandroid/content/SyncAdaptersCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/SyncAdapterType;
-HSPLandroid/content/SyncAdaptersCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object;
-HSPLandroid/content/SyncAdaptersCache;-><init>(Landroid/content/Context;)V
-HSPLandroid/content/SyncAdaptersCache;->getSyncAdapterPackagesForAuthority(Ljava/lang/String;I)[Ljava/lang/String;
-HSPLandroid/content/SyncAdaptersCache;->onServicesChangedLocked(I)V
-HSPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/content/SyncAdapterType;
-HSPLandroid/content/SyncAdaptersCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object;
-PLandroid/content/SyncInfo$1;-><init>()V
-HSPLandroid/content/SyncRequest$1;-><init>()V
-HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncRequest;
-HPLandroid/content/SyncRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/content/SyncRequest;-><init>(Landroid/os/Parcel;)V
-HPLandroid/content/SyncRequest;->getAccount()Landroid/accounts/Account;
-HPLandroid/content/SyncRequest;->getBundle()Landroid/os/Bundle;
-HPLandroid/content/SyncRequest;->getProvider()Ljava/lang/String;
-HPLandroid/content/SyncRequest;->getSyncFlexTime()J
-HPLandroid/content/SyncRequest;->getSyncRunTime()J
-HPLandroid/content/SyncRequest;->isPeriodic()Z
-HSPLandroid/content/SyncResult$1;-><init>()V
-HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/SyncResult;
-HPLandroid/content/SyncResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/content/SyncResult;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/SyncContext;-><init>(Landroid/content/ISyncContext;)V
+HSPLandroid/content/SyncContext;->onFinished(Landroid/content/SyncResult;)V
+HSPLandroid/content/SyncResult;-><init>()V
 HSPLandroid/content/SyncResult;-><init>(Z)V
 HSPLandroid/content/SyncResult;->hasError()Z
 HSPLandroid/content/SyncResult;->hasHardError()Z
 HSPLandroid/content/SyncResult;->hasSoftError()Z
-HPLandroid/content/SyncResult;->madeSomeProgress()Z
-HSPLandroid/content/SyncResult;->toString()Ljava/lang/String;
-HSPLandroid/content/SyncStats$1;-><init>()V
-HPLandroid/content/SyncStats;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/SyncStats;->toString()Ljava/lang/String;
-HSPLandroid/content/SyncStatusInfo$1;-><init>()V
-HPLandroid/content/SyncStatusInfo$Stats;->clear()V
-HPLandroid/content/SyncStatusInfo$Stats;->copyTo(Landroid/content/SyncStatusInfo$Stats;)V
-HSPLandroid/content/SyncStatusInfo$Stats;->readFromParcel(Landroid/os/Parcel;)V
-HPLandroid/content/SyncStatusInfo$Stats;->writeToParcel(Landroid/os/Parcel;)V
-HPLandroid/content/SyncStatusInfo;-><init>(I)V
-HSPLandroid/content/SyncStatusInfo;-><init>(Landroid/os/Parcel;)V
-HPLandroid/content/SyncStatusInfo;->addEvent(Ljava/lang/String;)V
-HPLandroid/content/SyncStatusInfo;->areSameDates(JJ)Z
-HPLandroid/content/SyncStatusInfo;->maybeResetTodayStats(ZZ)V
-HPLandroid/content/SyncStatusInfo;->setLastFailure(IJLjava/lang/String;)V
-HPLandroid/content/SyncStatusInfo;->setLastSuccess(IJ)V
-HPLandroid/content/SyncStatusInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/UndoManager$UndoState;->addOperation(Landroid/content/UndoOperation;)V
-HSPLandroid/content/UndoManager$UndoState;->destroy()V
-HSPLandroid/content/UndoManager$UndoState;->getLastOperation(Ljava/lang/Class;Landroid/content/UndoOwner;)Landroid/content/UndoOperation;
-HSPLandroid/content/UndoManager$UndoState;->hasMultipleOwners()Z
-HSPLandroid/content/UndoManager$UndoState;->hasOperation(Landroid/content/UndoOwner;)Z
+HSPLandroid/content/SyncResult;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/SyncStats;-><init>()V
+HSPLandroid/content/SyncStats;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/UndoManager;-><init>()V
-HSPLandroid/content/UndoManager;->addOperation(Landroid/content/UndoOperation;I)V
-HSPLandroid/content/UndoManager;->beginUpdate(Ljava/lang/CharSequence;)V
-HSPLandroid/content/UndoManager;->commitState(Landroid/content/UndoOwner;)I
-HSPLandroid/content/UndoManager;->endUpdate()V
-HSPLandroid/content/UndoManager;->findPrevState(Ljava/util/ArrayList;[Landroid/content/UndoOwner;I)I
 HSPLandroid/content/UndoManager;->forgetRedos([Landroid/content/UndoOwner;I)I
 HSPLandroid/content/UndoManager;->forgetUndos([Landroid/content/UndoOwner;I)I
-HSPLandroid/content/UndoManager;->getLastOperation(Ljava/lang/Class;Landroid/content/UndoOwner;I)Landroid/content/UndoOperation;
 HSPLandroid/content/UndoManager;->getOwner(Ljava/lang/String;Ljava/lang/Object;)Landroid/content/UndoOwner;
-HSPLandroid/content/UndoManager;->getTopUndo([Landroid/content/UndoOwner;)Landroid/content/UndoManager$UndoState;
-HSPLandroid/content/UndoManager;->isInUndo()Z
-HSPLandroid/content/UndoManager;->matchOwners(Landroid/content/UndoManager$UndoState;[Landroid/content/UndoOwner;)Z
-HSPLandroid/content/UndoManager;->pushWorkingState()V
-HSPLandroid/content/UndoManager;->removeOwner(Landroid/content/UndoOwner;)V
-HSPLandroid/content/UndoManager;->saveInstanceState(Landroid/os/Parcel;)V
-HSPLandroid/content/UndoOperation;->allowMerge()Z
-HSPLandroid/content/UndoOperation;->getOwner()Landroid/content/UndoOwner;
-HSPLandroid/content/UndoOperation;->hasData()Z
-HSPLandroid/content/UndoOperation;->matchOwner(Landroid/content/UndoOwner;)Z
+HSPLandroid/content/UndoOwner;-><init>(Ljava/lang/String;Landroid/content/UndoManager;)V
 HSPLandroid/content/UriMatcher;-><init>(I)V
+HSPLandroid/content/UriMatcher;-><init>(ILjava/lang/String;)V
 HSPLandroid/content/UriMatcher;->addURI(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/content/UriMatcher;->createChild(Ljava/lang/String;)Landroid/content/UriMatcher;
 HSPLandroid/content/UriMatcher;->match(Landroid/net/Uri;)I
-HSPLandroid/content/om/IOverlayManager$Stub;-><init>()V
-HSPLandroid/content/om/IOverlayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/om/IOverlayManager;
-HSPLandroid/content/om/OverlayInfo$1;-><init>()V
-HSPLandroid/content/om/OverlayInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZ)V
-HSPLandroid/content/om/OverlayInfo;->ensureValidState()V
-PLandroid/content/pm/-$$Lambda$T1UQAuePWRRmVQ1KzTyMAktZUPM;-><init>()V
-PLandroid/content/pm/-$$Lambda$T1UQAuePWRRmVQ1KzTyMAktZUPM;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLandroid/content/pm/-$$Lambda$ciir_QAmv6RwJro4I58t77dPnxU;-><init>()V
-PLandroid/content/pm/-$$Lambda$ciir_QAmv6RwJro4I58t77dPnxU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/content/pm/-$$Lambda$jpya2qgMDDEok2GAoKRDqPM5lIE;-><init>()V
-HSPLandroid/content/pm/-$$Lambda$jpya2qgMDDEok2GAoKRDqPM5lIE;->get()Ljava/lang/Object;
-PLandroid/content/pm/-$$Lambda$n3uXeb1v-YRmq_BWTfosEqUUr9g;-><init>()V
-HPLandroid/content/pm/-$$Lambda$n3uXeb1v-YRmq_BWTfosEqUUr9g;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLandroid/content/pm/-$$Lambda$zO9HBUVgPeroyDQPLJE-MNMvSqc;-><init>()V
-PLandroid/content/pm/-$$Lambda$zO9HBUVgPeroyDQPLJE-MNMvSqc;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/content/pm/ActivityInfo$1;-><init>()V
 HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ActivityInfo;
 HSPLandroid/content/pm/ActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Landroid/content/pm/ActivityInfo;
 HSPLandroid/content/pm/ActivityInfo$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/content/pm/ActivityInfo$WindowLayout;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ActivityInfo;-><init>()V
-HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/content/pm/ActivityInfo;)V
 HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ActivityInfo;->getRealConfigChanged()I
+HSPLandroid/content/pm/ActivityInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ActivityInfo$1;)V
+HSPLandroid/content/pm/ActivityInfo;->activityInfoConfigNativeToJava(I)I
 HSPLandroid/content/pm/ActivityInfo;->getThemeResource()I
-HSPLandroid/content/pm/ActivityInfo;->hasFixedAspectRatio()Z
-HSPLandroid/content/pm/ActivityInfo;->isFixedOrientation()Z
-HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationLandscape()Z
-HSPLandroid/content/pm/ActivityInfo;->isFixedOrientationPortrait()Z
-HSPLandroid/content/pm/ActivityInfo;->isTranslucentOrFloating(Landroid/content/res/TypedArray;)Z
-HSPLandroid/content/pm/ActivityInfo;->resizeModeToString(I)Ljava/lang/String;
-HSPLandroid/content/pm/ActivityInfo;->supportsPictureInPicture()Z
-HSPLandroid/content/pm/ActivityInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/AndroidHidlUpdater;-><init>()V
-HSPLandroid/content/pm/AndroidHidlUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/ApplicationInfo$1;-><init>()V
 HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/content/pm/ApplicationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/ApplicationInfo;-><init>()V
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/content/pm/ApplicationInfo;)V
 HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/ApplicationInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ApplicationInfo$1;)V
 HSPLandroid/content/pm/ApplicationInfo;->getAllApkPaths()[Ljava/lang/String;
 HSPLandroid/content/pm/ApplicationInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
-HSPLandroid/content/pm/ApplicationInfo;->getBaseCodePath()Ljava/lang/String;
 HSPLandroid/content/pm/ApplicationInfo;->getCodePath()Ljava/lang/String;
-HSPLandroid/content/pm/ApplicationInfo;->getHiddenApiEnforcementPolicy()I
-HSPLandroid/content/pm/ApplicationInfo;->getResourcePath()Ljava/lang/String;
-HPLandroid/content/pm/ApplicationInfo;->getSplitCodePaths()[Ljava/lang/String;
 HSPLandroid/content/pm/ApplicationInfo;->hasRtlSupport()Z
-HSPLandroid/content/pm/ApplicationInfo;->initForUser(I)V
-HSPLandroid/content/pm/ApplicationInfo;->isAllowedToUseHiddenApis()Z
-HPLandroid/content/pm/ApplicationInfo;->isAudioPlaybackCaptureAllowed()Z
-HSPLandroid/content/pm/ApplicationInfo;->isDirectBootAware()Z
-HSPLandroid/content/pm/ApplicationInfo;->isEmbeddedDexUsed()Z
-HSPLandroid/content/pm/ApplicationInfo;->isEncryptionAware()Z
-HSPLandroid/content/pm/ApplicationInfo;->isExternal()Z
 HSPLandroid/content/pm/ApplicationInfo;->isInstantApp()Z
-HSPLandroid/content/pm/ApplicationInfo;->isOem()Z
-HSPLandroid/content/pm/ApplicationInfo;->isPartiallyDirectBootAware()Z
 HSPLandroid/content/pm/ApplicationInfo;->isPrivilegedApp()Z
 HSPLandroid/content/pm/ApplicationInfo;->isProduct()Z
-HSPLandroid/content/pm/ApplicationInfo;->isProductServices()Z
 HSPLandroid/content/pm/ApplicationInfo;->isProfileableByShell()Z
-HSPLandroid/content/pm/ApplicationInfo;->isSignedWithPlatformKey()Z
-HSPLandroid/content/pm/ApplicationInfo;->isStaticSharedLibrary()Z
 HSPLandroid/content/pm/ApplicationInfo;->isSystemApp()Z
 HSPLandroid/content/pm/ApplicationInfo;->isUpdatedSystemApp()Z
 HSPLandroid/content/pm/ApplicationInfo;->isVendor()Z
-HSPLandroid/content/pm/ApplicationInfo;->maybeUpdateHiddenApiEnforcementPolicy(I)V
 HSPLandroid/content/pm/ApplicationInfo;->requestsIsolatedSplitLoading()Z
-HSPLandroid/content/pm/ApplicationInfo;->setBaseCodePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/ApplicationInfo;->setBaseResourcePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/ApplicationInfo;->setCodePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/ApplicationInfo;->setHiddenApiEnforcementPolicy(I)V
-HSPLandroid/content/pm/ApplicationInfo;->setResourcePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/ApplicationInfo;->setSplitCodePaths([Ljava/lang/String;)V
-HSPLandroid/content/pm/ApplicationInfo;->setSplitResourcePaths([Ljava/lang/String;)V
 HSPLandroid/content/pm/ApplicationInfo;->setVersionCode(J)V
-HPLandroid/content/pm/ApplicationInfo;->toString()Ljava/lang/String;
-HSPLandroid/content/pm/ApplicationInfo;->usesCompatibilityMode()Z
-HSPLandroid/content/pm/ApplicationInfo;->usesNonSdkApi()Z
 HSPLandroid/content/pm/ApplicationInfo;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;-><init>(Landroid/content/IntentFilter;Landroid/content/pm/InstantAppResolveInfo;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/content/pm/BaseParceledListSlice$1;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/content/pm/BaseParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
+HSPLandroid/content/pm/BaseParceledListSlice;-><init>(Ljava/util/List;)V
+HSPLandroid/content/pm/BaseParceledListSlice;->getList()Ljava/util/List;
+HSPLandroid/content/pm/BaseParceledListSlice;->readCreator(Landroid/os/Parcelable$Creator;Landroid/os/Parcel;Ljava/lang/ClassLoader;)Ljava/lang/Object;
 HSPLandroid/content/pm/BaseParceledListSlice;->verifySameType(Ljava/lang/Class;Ljava/lang/Class;)V
 HSPLandroid/content/pm/BaseParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ChangedPackages$1;-><init>()V
-PLandroid/content/pm/ChangedPackages;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/content/pm/ComponentInfo;-><init>()V
-HSPLandroid/content/pm/ComponentInfo;-><init>(Landroid/content/pm/ComponentInfo;)V
 HSPLandroid/content/pm/ComponentInfo;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/content/pm/ComponentInfo;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
 HSPLandroid/content/pm/ComponentInfo;->getComponentName()Landroid/content/ComponentName;
 HSPLandroid/content/pm/ComponentInfo;->getIconResource()I
-HSPLandroid/content/pm/ComponentInfo;->getLogoResource()I
 HSPLandroid/content/pm/ComponentInfo;->isEnabled()Z
-HSPLandroid/content/pm/ComponentInfo;->loadDefaultIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/pm/ComponentInfo;->loadUnsafeLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
 HSPLandroid/content/pm/ComponentInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ConfigurationInfo$1;-><init>()V
 HSPLandroid/content/pm/ConfigurationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ConfigurationInfo;
 HSPLandroid/content/pm/ConfigurationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ConfigurationInfo;-><init>()V
 HSPLandroid/content/pm/ConfigurationInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ConfigurationInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/FallbackCategoryProvider;->loadFallbacks()V
-HSPLandroid/content/pm/FeatureGroupInfo$1;-><init>()V
-HSPLandroid/content/pm/FeatureInfo$1;-><init>()V
-HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/FeatureInfo;
-HSPLandroid/content/pm/FeatureInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/FeatureInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ICrossProfileApps$Stub;-><init>()V
-HPLandroid/content/pm/ICrossProfileApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/pm/ILauncherApps$Stub;-><init>()V
-HPLandroid/content/pm/ILauncherApps$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/content/pm/ILauncherApps$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-PLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V
-HPLandroid/content/pm/IOnAppsChangedListener$Stub$Proxy;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/pm/IOnPermissionsChangeListener$Stub$Proxy;->onPermissionsChanged(I)V
-HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/pm/IOnPermissionsChangeListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IOnPermissionsChangeListener;
-HSPLandroid/content/pm/IOtaDexopt$Stub;-><init>()V
-PLandroid/content/pm/IPackageDataObserver$Stub$Proxy;->onRemoveCompleted(Ljava/lang/String;Z)V
-HPLandroid/content/pm/IPackageDataObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageDataObserver;
-PLandroid/content/pm/IPackageInstallObserver2$Stub;-><init>()V
-HSPLandroid/content/pm/IPackageInstaller$Stub;-><init>()V
-HPLandroid/content/pm/IPackageInstaller$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/pm/IPackageInstaller$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionActiveChanged(IZ)V
-PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionCreated(I)V
-PLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionFinished(IZ)V
-HPLandroid/content/pm/IPackageInstallerCallback$Stub$Proxy;->onSessionProgressChanged(IF)V
+HSPLandroid/content/pm/ConfigurationInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ConfigurationInfo$1;)V
+HSPLandroid/content/pm/ILauncherApps$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/ILauncherApps;
+HSPLandroid/content/pm/IOnAppsChangedListener$Stub;-><init>()V
+HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/content/pm/IPackageInstaller$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstaller;
+HSPLandroid/content/pm/IPackageInstallerCallback$Stub;-><init>()V
 HSPLandroid/content/pm/IPackageInstallerCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/pm/IPackageInstallerSession$Stub;-><init>()V
-PLandroid/content/pm/IPackageInstallerSession$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/pm/IPackageInstallerSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationEnabledSetting(Ljava/lang/String;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledModules(I)Ljava/util/List;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getNameForUid(I)Ljava/lang/String;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageUid(Ljava/lang/String;II)I
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesForUid(I)[Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPermissionControllerPackageName()Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemSharedLibraryNames()[Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemTextClassifierPackageName()Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->hasSystemFeature(Ljava/lang/String;I)Z
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isInstantApp(Ljava/lang/String;I)Z
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isOnlyCoreApps()Z
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->notifyPackageUse(Ljava/lang/String;I)V
+HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->notifyPackagesReplacedReceived([Ljava/lang/String;)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
 HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->setSystemAppHiddenUntilInstalled(Ljava/lang/String;Z)V
-HSPLandroid/content/pm/IPackageManager$Stub;-><init>()V
 HSPLandroid/content/pm/IPackageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageManager;
-HPLandroid/content/pm/IPackageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/pm/IPackageManagerNative$Stub;-><init>()V
-HSPLandroid/content/pm/IPackageManagerNative$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/pm/IPackageMoveObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/pm/IPackageMoveObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageMoveObserver;
-HSPLandroid/content/pm/IPackageStatsObserver$Stub;-><init>()V
-HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V
-HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IShortcutService$Stub$Proxy;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-HSPLandroid/content/pm/IShortcutService$Stub;-><init>()V
+HSPLandroid/content/pm/IShortcutService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/content/pm/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IShortcutService;
-HPLandroid/content/pm/IShortcutService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/content/pm/InstantAppIntentFilter$1;-><init>()V
-PLandroid/content/pm/InstantAppIntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/InstantAppIntentFilter;
-PLandroid/content/pm/InstantAppIntentFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/content/pm/InstantAppRequest;-><init>(Landroid/content/pm/AuxiliaryResolveInfo;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;ILandroid/os/Bundle;Z)V
-PLandroid/content/pm/InstantAppResolveInfo$1;-><init>()V
-PLandroid/content/pm/InstantAppResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/InstantAppResolveInfo;
-PLandroid/content/pm/InstantAppResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest$1;-><init>()V
-PLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;
-PLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;-><init>(Landroid/os/Parcel;)V
-HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;-><init>(Ljava/lang/String;I)V
-PLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;-><init>([[B[I)V
-HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->generateDigest(Ljava/lang/String;I)[[B
-HPLandroid/content/pm/InstantAppResolveInfo$InstantAppDigest;->getDigestPrefixSecure()[I
-PLandroid/content/pm/InstantAppResolveInfo;-><init>(Landroid/os/Parcel;)V
-PLandroid/content/pm/InstantAppResolveInfo;->getDigestBytes()[B
-HSPLandroid/content/pm/InstrumentationInfo$1;-><init>()V
-HSPLandroid/content/pm/InstrumentationInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/IntentFilterVerificationInfo$1;-><init>()V
-HSPLandroid/content/pm/IntentFilterVerificationInfo;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/content/pm/IntentFilterVerificationInfo;->getIntFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
-HSPLandroid/content/pm/IntentFilterVerificationInfo;->getStringFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/IntentFilterVerificationInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLandroid/content/pm/IntentFilterVerificationInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLandroid/content/pm/LauncherApps$1;-><init>(Landroid/content/pm/LauncherApps;)V
+HSPLandroid/content/pm/LauncherApps;-><init>(Landroid/content/Context;)V
 HSPLandroid/content/pm/LauncherApps;-><init>(Landroid/content/Context;Landroid/content/pm/ILauncherApps;)V
-HSPLandroid/content/pm/ModuleInfo$1;-><init>()V
-HSPLandroid/content/pm/ModuleInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ModuleInfo;
-HSPLandroid/content/pm/ModuleInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ModuleInfo;->getPackageName()Ljava/lang/String;
-HSPLandroid/content/pm/ModuleInfo;->isHidden()Z
-HPLandroid/content/pm/ModuleInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/OrgApacheHttpLegacyUpdater;-><init>()V
-HSPLandroid/content/pm/OrgApacheHttpLegacyUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;-><init>()V
-HSPLandroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageBackwardCompatibility;-><init>(Z[Landroid/content/pm/PackageSharedLibraryUpdater;)V
-HSPLandroid/content/pm/PackageBackwardCompatibility;->addOptionalUpdater(Ljava/util/List;Ljava/lang/String;Ljava/util/function/Supplier;)Z
-HSPLandroid/content/pm/PackageBackwardCompatibility;->modifySharedLibraries(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageBackwardCompatibility;->updatePackage(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageInfo$1;-><init>()V
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInfo;
 HSPLandroid/content/pm/PackageInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/PackageInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/PackageInfo$1;)V
 HSPLandroid/content/pm/PackageInfo;->composeLongVersionCode(II)J
 HSPLandroid/content/pm/PackageInfo;->getLongVersionCode()J
-HSPLandroid/content/pm/PackageInfo;->isOverlayPackage()Z
-HSPLandroid/content/pm/PackageInfo;->isStaticOverlayPackage()Z
-HSPLandroid/content/pm/PackageInfo;->toString()Ljava/lang/String;
-HSPLandroid/content/pm/PackageInfo;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/content/pm/PackageInfoLite$1;-><init>()V
-PLandroid/content/pm/PackageInfoLite;->getLongVersionCode()J
-HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionActiveChanged(IZ)V
-HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionCreated(I)V
-HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionFinished(IZ)V
-HPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;->onSessionProgressChanged(IF)V
-HSPLandroid/content/pm/PackageInstaller$SessionInfo$1;-><init>()V
-HPLandroid/content/pm/PackageInstaller$SessionInfo;-><init>()V
-HPLandroid/content/pm/PackageInstaller$SessionInfo;->describeContents()I
-HSPLandroid/content/pm/PackageInstaller$SessionInfo;->getInstallerPackageName()Ljava/lang/String;
-HPLandroid/content/pm/PackageInstaller$SessionInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageInstaller$SessionParams$1;-><init>()V
-HPLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageInstaller$SessionParams;
-HPLandroid/content/pm/PackageInstaller$SessionParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/content/pm/PackageInstaller$SessionParams;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageInstaller$SessionParams;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLandroid/content/pm/PackageInstaller;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
-HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;Landroid/os/Handler;)V
+HSPLandroid/content/pm/PackageInfo;->propagateApplicationInfo(Landroid/content/pm/ApplicationInfo;[Landroid/content/pm/ComponentInfo;)V
+HSPLandroid/content/pm/PackageInstaller$SessionCallback;-><init>()V
+HSPLandroid/content/pm/PackageInstaller$SessionCallbackDelegate;-><init>(Landroid/content/pm/PackageInstaller$SessionCallback;Ljava/util/concurrent/Executor;)V
+HSPLandroid/content/pm/PackageInstaller;-><init>(Landroid/content/pm/IPackageInstaller;Ljava/lang/String;I)V
+HSPLandroid/content/pm/PackageItemInfo;-><init>()V
 HSPLandroid/content/pm/PackageItemInfo;-><init>(Landroid/content/pm/PackageItemInfo;)V
 HSPLandroid/content/pm/PackageItemInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageItemInfo;->forceSafeLabels()V
 HSPLandroid/content/pm/PackageItemInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/pm/PackageItemInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
-HSPLandroid/content/pm/PackageItemInfo;->loadSafeLabel(Landroid/content/pm/PackageManager;FI)Ljava/lang/CharSequence;
 HSPLandroid/content/pm/PackageItemInfo;->loadUnsafeLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
 HSPLandroid/content/pm/PackageItemInfo;->loadXmlMetaData(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/pm/PackageItemInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageList;->getPackageNames()Ljava/util/List;
-HPLandroid/content/pm/PackageManager;->installStatusToPublicStatus(I)I
-HPLandroid/content/pm/PackageManager;->installStatusToString(I)Ljava/lang/String;
-HPLandroid/content/pm/PackageManager;->installStatusToString(ILjava/lang/String;)Ljava/lang/String;
+HSPLandroid/content/pm/PackageManager$NameNotFoundException;-><init>(Ljava/lang/String;)V
+HSPLandroid/content/pm/PackageManager;-><init>()V
+HSPLandroid/content/pm/PackageManager;->getApplicationInfoAsUser(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/content/pm/PackageManager;->queryBroadcastReceiversAsUser(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/content/pm/PackageParser$Activity$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Activity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Activity;
-HSPLandroid/content/pm/PackageParser$Activity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$Activity;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ActivityInfo;)V
-HSPLandroid/content/pm/PackageParser$Activity;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$Activity;->access$200(Landroid/content/pm/PackageParser$Activity;F)V
-HSPLandroid/content/pm/PackageParser$Activity;->setMaxAspectRatio(F)V
-HSPLandroid/content/pm/PackageParser$Activity;->setMinAspectRatio(F)V
-HSPLandroid/content/pm/PackageParser$Activity;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/content/pm/PackageParser$Activity;)V
-HSPLandroid/content/pm/PackageParser$ActivityIntentInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$ApkLite;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;ZIIIILjava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZZZZZZII)V
-HSPLandroid/content/pm/PackageParser$ApkLite;->getLongVersionCode()J
-HSPLandroid/content/pm/PackageParser$CachedComponentArgs;-><init>()V
-HSPLandroid/content/pm/PackageParser$CachedComponentArgs;-><init>(Landroid/content/pm/PackageParser$1;)V
-HSPLandroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$ParseComponentArgs;Landroid/content/pm/ComponentInfo;)V
-HSPLandroid/content/pm/PackageParser$Component;-><init>(Landroid/content/pm/PackageParser$ParsePackageItemArgs;Landroid/content/pm/PackageItemInfo;)V
-HSPLandroid/content/pm/PackageParser$Component;->createIntentsList(Landroid/os/Parcel;)Ljava/util/ArrayList;
-HSPLandroid/content/pm/PackageParser$Component;->getComponentName()Landroid/content/ComponentName;
-HSPLandroid/content/pm/PackageParser$Component;->writeIntentsList(Ljava/util/ArrayList;Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$Instrumentation$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Instrumentation;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$IntentInfo;-><init>()V
-HSPLandroid/content/pm/PackageParser$IntentInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$IntentInfo;->writeIntentInfoToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$NewPermissionInfo;-><init>(Ljava/lang/String;II)V
-HSPLandroid/content/pm/PackageParser$Package$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Package;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$Package;-><init>(Ljava/lang/String;)V
-HPLandroid/content/pm/PackageParser$Package;->canHaveOatDir()Z
-HSPLandroid/content/pm/PackageParser$Package;->fixupOwner(Ljava/util/List;)V
-HSPLandroid/content/pm/PackageParser$Package;->getAllCodePaths()Ljava/util/List;
-HPLandroid/content/pm/PackageParser$Package;->getAllCodePathsExcludingResourceOnly()Ljava/util/List;
-HSPLandroid/content/pm/PackageParser$Package;->getChildPackageNames()Ljava/util/List;
-HPLandroid/content/pm/PackageParser$Package;->getLatestForegroundPackageUseTimeInMills()J
-HSPLandroid/content/pm/PackageParser$Package;->getLatestPackageUseTimeInMills()J
-HSPLandroid/content/pm/PackageParser$Package;->getLongVersionCode()J
-HSPLandroid/content/pm/PackageParser$Package;->hasComponentClassName(Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser$Package;->isExternal()Z
-HSPLandroid/content/pm/PackageParser$Package;->isLibrary()Z
-HSPLandroid/content/pm/PackageParser$Package;->isMatch(I)Z
-HSPLandroid/content/pm/PackageParser$Package;->isPrivileged()Z
-HSPLandroid/content/pm/PackageParser$Package;->isProduct()Z
-HSPLandroid/content/pm/PackageParser$Package;->isProductServices()Z
-HSPLandroid/content/pm/PackageParser$Package;->isSystem()Z
-HSPLandroid/content/pm/PackageParser$Package;->isUpdatedSystemApp()Z
-HSPLandroid/content/pm/PackageParser$Package;->isVendor()Z
-HSPLandroid/content/pm/PackageParser$Package;->readKeySetMapping(Landroid/os/Parcel;)Landroid/util/ArrayMap;
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseCodePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoBaseResourcePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoCodePath(Ljava/lang/String;)V
-HPLandroid/content/pm/PackageParser$Package;->setApplicationInfoFlags(II)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoResourcePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitCodePaths([Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationInfoSplitResourcePaths([Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setApplicationVolumeUuid(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setBaseCodePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setCodePath(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setPackageName(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser$Package;->setSigningDetails(Landroid/content/pm/PackageParser$SigningDetails;)V
-HSPLandroid/content/pm/PackageParser$Package;->writeKeySetMapping(Landroid/os/Parcel;Landroid/util/ArrayMap;)V
-HSPLandroid/content/pm/PackageParser$Package;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$PackageLite;-><init>(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;[Ljava/lang/String;[Z[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[I)V
-HSPLandroid/content/pm/PackageParser$PackageLite;->getAllCodePaths()Ljava/util/List;
-HSPLandroid/content/pm/PackageParser$ParseComponentArgs;-><init>(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII[Ljava/lang/String;III)V
-HSPLandroid/content/pm/PackageParser$ParsePackageItemArgs;-><init>(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;IIIIII)V
-HSPLandroid/content/pm/PackageParser$Permission$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Permission;
-HSPLandroid/content/pm/PackageParser$Permission$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$Permission;-><init>(Landroid/os/Parcel;)V
-HPLandroid/content/pm/PackageParser$Permission;->isAppOp()Z
-HSPLandroid/content/pm/PackageParser$Permission;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$PermissionGroup$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$PermissionGroup;
-HSPLandroid/content/pm/PackageParser$PermissionGroup$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$PermissionGroup;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$Provider$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Provider;
-HSPLandroid/content/pm/PackageParser$Provider$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$Provider;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$Provider;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$ProviderIntentInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$Service$1;-><init>()V
-HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$Service;
-HSPLandroid/content/pm/PackageParser$Service$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$Service;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$Service;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$ServiceIntentInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParser$SigningDetails$1;-><init>()V
+HSPLandroid/content/pm/PackageManager;->queryIntentActivitiesAsUser(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;
+HSPLandroid/content/pm/PackageManager;->queryIntentServicesAsUser(Landroid/content/Intent;ILandroid/os/UserHandle;)Ljava/util/List;
 HSPLandroid/content/pm/PackageParser$SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PackageParser$SigningDetails;
 HSPLandroid/content/pm/PackageParser$SigningDetails$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PackageParser$SigningDetails$Builder;->build()Landroid/content/pm/PackageParser$SigningDetails;
-HSPLandroid/content/pm/PackageParser$SigningDetails;-><init>(Landroid/content/pm/PackageParser$SigningDetails;)V
-HSPLandroid/content/pm/PackageParser$SigningDetails;-><init>([Landroid/content/pm/Signature;I)V
-HSPLandroid/content/pm/PackageParser$SigningDetails;-><init>([Landroid/content/pm/Signature;ILandroid/util/ArraySet;[Landroid/content/pm/Signature;)V
-HSPLandroid/content/pm/PackageParser$SigningDetails;-><init>([Landroid/content/pm/Signature;I[Landroid/content/pm/Signature;)V
-HSPLandroid/content/pm/PackageParser$SigningDetails;->checkCapability(Landroid/content/pm/PackageParser$SigningDetails;I)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasAncestor(Landroid/content/pm/PackageParser$SigningDetails;)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasAncestorOrSelf(Landroid/content/pm/PackageParser$SigningDetails;)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasCertificate(Landroid/content/pm/Signature;)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasCertificateInternal(Landroid/content/pm/Signature;I)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasSha256Certificate([B)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->hasSha256CertificateInternal([BI)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->signaturesMatchExactly(Landroid/content/pm/PackageParser$SigningDetails;)Z
-HSPLandroid/content/pm/PackageParser$SigningDetails;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PackageParser$SplitNameComparator;-><init>(Landroid/content/pm/PackageParser$1;)V
-HSPLandroid/content/pm/PackageParser$SplitNameComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/content/pm/PackageParser$SplitNameComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/content/pm/PackageParser;-><init>()V
-HSPLandroid/content/pm/PackageParser;->buildClassName(Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser;->buildCompoundName(Ljava/lang/String;Ljava/lang/CharSequence;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser;->buildProcessName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;I[Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser;->buildTaskAffinityName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser;->cacheResult(Ljava/io/File;ILandroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageParser;->checkOverlayRequiredSystemProperty(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->checkUseInstalledOrHidden(ILandroid/content/pm/PackageUserState;Landroid/content/pm/ApplicationInfo;)Z
-HSPLandroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;Ljava/io/File;Z)V
-HSPLandroid/content/pm/PackageParser;->collectCertificates(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLandroid/content/pm/PackageParser;->collectCertificatesInternal(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLandroid/content/pm/PackageParser;->computeMinSdkVersion(ILjava/lang/String;I[Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/pm/PackageParser;->computeTargetSdkVersion(ILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/content/pm/PackageParser;->copyNeeded(ILandroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageUserState;Landroid/os/Bundle;I)Z
-HSPLandroid/content/pm/PackageParser;->fromCacheEntry([B)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->fromCacheEntryStatic([B)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->generateActivityInfo(Landroid/content/pm/PackageParser$Activity;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ActivityInfo;
-HSPLandroid/content/pm/PackageParser;->generateAppDetailsHiddenActivity(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;Z)Landroid/content/pm/PackageParser$Activity;
-HSPLandroid/content/pm/PackageParser;->generateApplicationInfo(Landroid/content/pm/PackageParser$Package;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ApplicationInfo;
-HSPLandroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;I)Landroid/content/pm/PackageInfo;
-HPLandroid/content/pm/PackageParser;->generatePackageInfoFromApex(Ljava/io/File;Z)Landroid/content/pm/PackageInfo;
-HSPLandroid/content/pm/PackageParser;->generatePermissionGroupInfo(Landroid/content/pm/PackageParser$PermissionGroup;I)Landroid/content/pm/PermissionGroupInfo;
-HSPLandroid/content/pm/PackageParser;->generatePermissionInfo(Landroid/content/pm/PackageParser$Permission;I)Landroid/content/pm/PermissionInfo;
-HSPLandroid/content/pm/PackageParser;->generateProviderInfo(Landroid/content/pm/PackageParser$Provider;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ProviderInfo;
-HSPLandroid/content/pm/PackageParser;->generateServiceInfo(Landroid/content/pm/PackageParser$Service;ILandroid/content/pm/PackageUserState;I)Landroid/content/pm/ServiceInfo;
-HSPLandroid/content/pm/PackageParser;->getCachedResult(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->hasDomainURLs(Landroid/content/pm/PackageParser$Package;)Z
-HSPLandroid/content/pm/PackageParser;->isApkFile(Ljava/io/File;)Z
-HSPLandroid/content/pm/PackageParser;->isAvailable(Landroid/content/pm/PackageUserState;)Z
-HSPLandroid/content/pm/PackageParser;->isCacheUpToDate(Ljava/io/File;Ljava/io/File;)Z
-HSPLandroid/content/pm/PackageParser;->isImplicitlyExposedIntent(Landroid/content/pm/PackageParser$IntentInfo;)Z
-HSPLandroid/content/pm/PackageParser;->parseActivity(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;ZZ)Landroid/content/pm/PackageParser$Activity;
-HSPLandroid/content/pm/PackageParser;->parseActivityAlias(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Activity;
-HSPLandroid/content/pm/PackageParser;->parseAdditionalCertificates(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)[Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser;->parseAllMetaData(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Ljava/lang/String;Landroid/content/pm/PackageParser$Component;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parseApkLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$ApkLite;
-HSPLandroid/content/pm/PackageParser;->parseApkLite(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/pm/PackageParser$SigningDetails;)Landroid/content/pm/PackageParser$ApkLite;
-HSPLandroid/content/pm/PackageParser;->parseApkLiteInner(Ljava/io/File;Ljava/io/FileDescriptor;Ljava/lang/String;I)Landroid/content/pm/PackageParser$ApkLite;
-HSPLandroid/content/pm/PackageParser;->parseBaseApk(Ljava/io/File;Landroid/content/res/AssetManager;I)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseBaseApk(Ljava/lang/String;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseBaseApkCommon(Landroid/content/pm/PackageParser$Package;Ljava/util/Set;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseBaseApplication(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parseClusterPackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseClusterPackageLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$PackageLite;
-HSPLandroid/content/pm/PackageParser;->parseInstrumentation(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Landroid/content/pm/PackageParser$Instrumentation;
-HSPLandroid/content/pm/PackageParser;->parseIntent(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;ZZLandroid/content/pm/PackageParser$IntentInfo;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parseLayout(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/pm/PackageParser$Activity;)V
-HSPLandroid/content/pm/PackageParser;->parseMetaData(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;Landroid/os/Bundle;[Ljava/lang/String;)Landroid/os/Bundle;
-HSPLandroid/content/pm/PackageParser;->parseMonolithicPackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseMonolithicPackageLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$PackageLite;
-HSPLandroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parsePackage(Ljava/io/File;IZ)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parsePackageItemInfo(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageItemInfo;[Ljava/lang/String;Ljava/lang/String;Landroid/content/res/TypedArray;ZIIIIII)Z
-HSPLandroid/content/pm/PackageParser;->parsePackageList(Ljava/lang/String;)Ljava/util/Set;
-HSPLandroid/content/pm/PackageParser;->parsePackageLite(Ljava/io/File;I)Landroid/content/pm/PackageParser$PackageLite;
-HSPLandroid/content/pm/PackageParser;->parsePackageSplitNames(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/util/Pair;
-HSPLandroid/content/pm/PackageParser;->parsePermission(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parsePermissionGroup(Landroid/content/pm/PackageParser$Package;ILandroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parsePermissionTree(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parseProvider(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Provider;
-HSPLandroid/content/pm/PackageParser;->parseProviderTags(Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;ZLandroid/content/pm/PackageParser$Provider;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parsePublicKey(Ljava/lang/String;)Ljava/security/PublicKey;
-HSPLandroid/content/pm/PackageParser;->parseService(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;I[Ljava/lang/String;Landroid/content/pm/PackageParser$CachedComponentArgs;)Landroid/content/pm/PackageParser$Service;
-HSPLandroid/content/pm/PackageParser;->parseSplitApk(Landroid/content/pm/PackageParser$Package;ILandroid/content/res/AssetManager;I)V
-HSPLandroid/content/pm/PackageParser;->parseSplitApk(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;II[Ljava/lang/String;)Landroid/content/pm/PackageParser$Package;
-HSPLandroid/content/pm/PackageParser;->parseSplitApplication(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;II[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->parseUsesFeature(Landroid/content/res/Resources;Landroid/util/AttributeSet;)Landroid/content/pm/FeatureInfo;
-HSPLandroid/content/pm/PackageParser;->parseUsesPermission(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;)Z
-HSPLandroid/content/pm/PackageParser;->parseUsesStaticLibrary(Landroid/content/pm/PackageParser$Package;Landroid/content/res/Resources;Landroid/content/res/XmlResourceParser;[Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser;->setActivityResizeMode(Landroid/content/pm/ActivityInfo;Landroid/content/res/TypedArray;Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageParser;->setCallback(Landroid/content/pm/PackageParser$Callback;)V
-HSPLandroid/content/pm/PackageParser;->setCompatibilityModeEnabled(Z)V
-HSPLandroid/content/pm/PackageParser;->setDisplayMetrics(Landroid/util/DisplayMetrics;)V
-HSPLandroid/content/pm/PackageParser;->setMaxAspectRatio(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageParser;->setMinAspectRatio(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/PackageParser;->setSeparateProcesses([Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageParser;->toCacheEntry(Landroid/content/pm/PackageParser$Package;)[B
-HSPLandroid/content/pm/PackageParser;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;ILandroid/content/pm/PackageUserState;)V
-HSPLandroid/content/pm/PackageParser;->validateName(Ljava/lang/String;ZZ)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParserCacheHelper$ReadHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String;
-HSPLandroid/content/pm/PackageParserCacheHelper$ReadHelper;->startAndInstall()V
-HSPLandroid/content/pm/PackageParserCacheHelper$WriteHelper;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PackageParserCacheHelper$WriteHelper;->finishAndUninstall()V
-HSPLandroid/content/pm/PackageParserCacheHelper$WriteHelper;->writeString(Landroid/os/Parcel;Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageSharedLibraryUpdater;->prefixImplicitDependency(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageSharedLibraryUpdater;->prefixRequiredLibrary(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageStats$1;-><init>()V
-HPLandroid/content/pm/PackageStats;-><init>(Landroid/content/pm/PackageStats;)V
 HSPLandroid/content/pm/PackageStats;-><init>(Ljava/lang/String;)V
-HSPLandroid/content/pm/PackageUserState;-><init>()V
-HSPLandroid/content/pm/PackageUserState;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/pm/PackageUserState;->isAvailable(I)Z
-HSPLandroid/content/pm/PackageUserState;->isEnabled(Landroid/content/pm/ComponentInfo;I)Z
-HSPLandroid/content/pm/PackageUserState;->isMatch(Landroid/content/pm/ComponentInfo;I)Z
-HSPLandroid/content/pm/ParceledListSlice$1;-><init>()V
 HSPLandroid/content/pm/ParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ParceledListSlice;
 HSPLandroid/content/pm/ParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ParceledListSlice;->emptyList()Landroid/content/pm/ParceledListSlice;
+HSPLandroid/content/pm/ParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;)V
+HSPLandroid/content/pm/ParceledListSlice;-><init>(Landroid/os/Parcel;Ljava/lang/ClassLoader;Landroid/content/pm/ParceledListSlice$1;)V
+HSPLandroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V
 HSPLandroid/content/pm/ParceledListSlice;->getList()Ljava/util/List;
 HSPLandroid/content/pm/ParceledListSlice;->readParcelableCreator(Landroid/os/Parcel;Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
 HSPLandroid/content/pm/ParceledListSlice;->writeElement(Landroid/os/Parcelable;Landroid/os/Parcel;I)V
@@ -4447,257 +3123,171 @@
 HSPLandroid/content/pm/ParceledListSlice;->writeParcelableCreator(Landroid/os/Parcelable;Landroid/os/Parcel;)V
 HSPLandroid/content/pm/ParceledListSlice;->writeParcelableCreator(Ljava/lang/Object;Landroid/os/Parcel;)V
 HSPLandroid/content/pm/ParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PathPermission$1;-><init>()V
 HSPLandroid/content/pm/PathPermission$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PathPermission;
 HSPLandroid/content/pm/PathPermission$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/PathPermission$1;->newArray(I)[Landroid/content/pm/PathPermission;
 HSPLandroid/content/pm/PathPermission$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/PathPermission;->getReadPermission()Ljava/lang/String;
-HSPLandroid/content/pm/PathPermission;->getWritePermission()Ljava/lang/String;
+HSPLandroid/content/pm/PathPermission;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/content/pm/PathPermission;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PermissionGroupInfo$1;-><init>()V
-HSPLandroid/content/pm/PermissionGroupInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PermissionGroupInfo;
-HSPLandroid/content/pm/PermissionGroupInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/PermissionGroupInfo;-><init>(III)V
-HSPLandroid/content/pm/PermissionGroupInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PermissionGroupInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/PermissionInfo$1;-><init>()V
 HSPLandroid/content/pm/PermissionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/PermissionInfo;
 HSPLandroid/content/pm/PermissionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/PermissionInfo$1;->newArray(I)[Landroid/content/pm/PermissionInfo;
 HSPLandroid/content/pm/PermissionInfo$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/PermissionInfo;-><init>(Landroid/content/pm/PermissionInfo;)V
 HSPLandroid/content/pm/PermissionInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/PermissionInfo;->getProtection()I
-HSPLandroid/content/pm/PermissionInfo;->getProtectionFlags()I
-HPLandroid/content/pm/PermissionInfo;->isAppOp()Z
-HSPLandroid/content/pm/PermissionInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ProviderInfo$1;-><init>()V
+HSPLandroid/content/pm/PermissionInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/PermissionInfo$1;)V
 HSPLandroid/content/pm/ProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ProviderInfo;
 HSPLandroid/content/pm/ProviderInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ProviderInfo;-><init>(Landroid/content/pm/ProviderInfo;)V
+HSPLandroid/content/pm/ProviderInfo;-><init>()V
 HSPLandroid/content/pm/ProviderInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ProviderInfo;->toString()Ljava/lang/String;
+HSPLandroid/content/pm/ProviderInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ProviderInfo$1;)V
 HSPLandroid/content/pm/ProviderInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/RegisteredServicesCache$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLandroid/content/pm/RegisteredServicesCache;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/XmlSerializerAndParser;)V
-HSPLandroid/content/pm/RegisteredServicesCache;->createFileForUser(I)Landroid/util/AtomicFile;
-HSPLandroid/content/pm/RegisteredServicesCache;->findOrCreateUserLocked(IZ)Landroid/content/pm/RegisteredServicesCache$UserServices;
-HSPLandroid/content/pm/RegisteredServicesCache;->generateServicesMap([II)V
-HSPLandroid/content/pm/RegisteredServicesCache;->getAllServices(I)Ljava/util/Collection;
-HPLandroid/content/pm/RegisteredServicesCache;->getBindInstantServiceAllowed(I)Z
-HSPLandroid/content/pm/RegisteredServicesCache;->getDataDirectory()Ljava/io/File;
-HPLandroid/content/pm/RegisteredServicesCache;->getServiceInfo(Ljava/lang/Object;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
-HSPLandroid/content/pm/RegisteredServicesCache;->getUser(I)Landroid/content/pm/UserInfo;
-HSPLandroid/content/pm/RegisteredServicesCache;->getUserSystemDirectory(I)Ljava/io/File;
-HSPLandroid/content/pm/RegisteredServicesCache;->handlePackageEvent(Landroid/content/Intent;I)V
-HSPLandroid/content/pm/RegisteredServicesCache;->invalidateCache(I)V
-HSPLandroid/content/pm/RegisteredServicesCache;->migrateIfNecessaryLocked()V
-HSPLandroid/content/pm/RegisteredServicesCache;->onServicesChangedLocked(I)V
-HSPLandroid/content/pm/RegisteredServicesCache;->parseServiceInfo(Landroid/content/pm/ResolveInfo;)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
-HSPLandroid/content/pm/RegisteredServicesCache;->queryIntentServices(I)Ljava/util/List;
-HSPLandroid/content/pm/RegisteredServicesCache;->readPersistentServicesLocked(Ljava/io/InputStream;)V
-HSPLandroid/content/pm/RegisteredServicesCache;->setListener(Landroid/content/pm/RegisteredServicesCacheListener;Landroid/os/Handler;)V
-HPLandroid/content/pm/RegisteredServicesCache;->updateServices(I)V
-HSPLandroid/content/pm/ResolveInfo$1;-><init>()V
 HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ResolveInfo;
 HSPLandroid/content/pm/ResolveInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ResolveInfo;-><init>()V
-HSPLandroid/content/pm/ResolveInfo;-><init>(Landroid/content/pm/ResolveInfo;)V
 HSPLandroid/content/pm/ResolveInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/ResolveInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ResolveInfo$1;)V
 HSPLandroid/content/pm/ResolveInfo;->getComponentInfo()Landroid/content/pm/ComponentInfo;
-HSPLandroid/content/pm/ResolveInfo;->getIconResource()I
-HSPLandroid/content/pm/ResolveInfo;->loadIcon(Landroid/content/pm/PackageManager;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/pm/ResolveInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
-HSPLandroid/content/pm/ResolveInfo;->toString()Ljava/lang/String;
-HSPLandroid/content/pm/ResolveInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/SELinuxUtil;->assignSeinfoUser(Landroid/content/pm/PackageUserState;)Ljava/lang/String;
-HSPLandroid/content/pm/ServiceInfo$1;-><init>()V
 HSPLandroid/content/pm/ServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ServiceInfo;
 HSPLandroid/content/pm/ServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ServiceInfo;-><init>(Landroid/content/pm/ServiceInfo;)V
-HPLandroid/content/pm/ServiceInfo;->getForegroundServiceType()I
-HSPLandroid/content/pm/ServiceInfo;->toString()Ljava/lang/String;
-HSPLandroid/content/pm/ServiceInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/SharedLibraryInfo$1;-><init>()V
+HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Landroid/content/pm/ServiceInfo;
+HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object;
+HSPLandroid/content/pm/ServiceInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/ServiceInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ServiceInfo$1;)V
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/SharedLibraryInfo;
 HSPLandroid/content/pm/SharedLibraryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/SharedLibraryInfo$1;)V
+HSPLandroid/content/pm/SharedLibraryInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Ljava/lang/String;JILandroid/content/pm/VersionedPackage;Ljava/util/List;Ljava/util/List;)V
 HSPLandroid/content/pm/SharedLibraryInfo;->addDependency(Landroid/content/pm/SharedLibraryInfo;)V
-HSPLandroid/content/pm/SharedLibraryInfo;->createForDynamic(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Landroid/content/pm/SharedLibraryInfo;
-HSPLandroid/content/pm/SharedLibraryInfo;->createForStatic(Landroid/content/pm/PackageParser$Package;)Landroid/content/pm/SharedLibraryInfo;
 HSPLandroid/content/pm/SharedLibraryInfo;->getAllCodePaths()Ljava/util/List;
-HSPLandroid/content/pm/SharedLibraryInfo;->getLongVersion()J
-HSPLandroid/content/pm/SharedLibraryInfo;->getName()Ljava/lang/String;
-HPLandroid/content/pm/SharedLibraryInfo;->getPackageName()Ljava/lang/String;
+HSPLandroid/content/pm/SharedLibraryInfo;->getDependencies()Ljava/util/List;
 HSPLandroid/content/pm/SharedLibraryInfo;->getPath()Ljava/lang/String;
-HPLandroid/content/pm/SharedLibraryInfo;->isStatic()Z
 HSPLandroid/content/pm/SharedLibraryInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ShortcutInfo$1;-><init>()V
 HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/ShortcutInfo;
 HSPLandroid/content/pm/ShortcutInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/ShortcutInfo$Builder;-><init>(Landroid/content/Context;Ljava/lang/String;)V
-HSPLandroid/content/pm/ShortcutInfo$Builder;->build()Landroid/content/pm/ShortcutInfo;
-HSPLandroid/content/pm/ShortcutInfo$Builder;->setActivity(Landroid/content/ComponentName;)Landroid/content/pm/ShortcutInfo$Builder;
-HSPLandroid/content/pm/ShortcutInfo$Builder;->setIcon(Landroid/graphics/drawable/Icon;)Landroid/content/pm/ShortcutInfo$Builder;
-HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntent(Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder;
-HSPLandroid/content/pm/ShortcutInfo$Builder;->setIntents([Landroid/content/Intent;)Landroid/content/pm/ShortcutInfo$Builder;
-HSPLandroid/content/pm/ShortcutInfo$Builder;->setShortLabel(Ljava/lang/CharSequence;)Landroid/content/pm/ShortcutInfo$Builder;
-HSPLandroid/content/pm/ShortcutInfo;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/drawable/Icon;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/lang/CharSequence;ILjava/lang/String;Ljava/util/Set;[Landroid/content/Intent;ILandroid/os/PersistableBundle;JIILjava/lang/String;Ljava/lang/String;I[Landroid/app/Person;Landroid/content/LocusId;)V
-HSPLandroid/content/pm/ShortcutInfo;-><init>(Landroid/content/pm/ShortcutInfo$Builder;)V
-HSPLandroid/content/pm/ShortcutInfo;-><init>(Landroid/content/pm/ShortcutInfo;I)V
 HSPLandroid/content/pm/ShortcutInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/content/pm/ShortcutInfo;->clone(I)Landroid/content/pm/ShortcutInfo;
+HSPLandroid/content/pm/ShortcutInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/ShortcutInfo$1;)V
 HSPLandroid/content/pm/ShortcutInfo;->cloneCategories(Ljava/util/Set;)Landroid/util/ArraySet;
 HSPLandroid/content/pm/ShortcutInfo;->cloneIntents([Landroid/content/Intent;)[Landroid/content/Intent;
 HSPLandroid/content/pm/ShortcutInfo;->clonePersons([Landroid/app/Person;)[Landroid/app/Person;
-HPLandroid/content/pm/ShortcutInfo;->copyNonNullFieldsFrom(Landroid/content/pm/ShortcutInfo;)V
-HPLandroid/content/pm/ShortcutInfo;->enforceMandatoryFields(Z)V
-HPLandroid/content/pm/ShortcutInfo;->ensureUpdatableWith(Landroid/content/pm/ShortcutInfo;Z)V
 HSPLandroid/content/pm/ShortcutInfo;->fixUpIntentExtras()V
+HSPLandroid/content/pm/ShortcutInfo;->getDisabledReason()I
 HSPLandroid/content/pm/ShortcutInfo;->getId()Ljava/lang/String;
-HPLandroid/content/pm/ShortcutInfo;->getPersons()[Landroid/app/Person;
-HSPLandroid/content/pm/ShortcutInfo;->getResourceString(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;
-HPLandroid/content/pm/ShortcutInfo;->isDynamicVisible()Z
-HPLandroid/content/pm/ShortcutInfo;->isManifestVisible()Z
-HPLandroid/content/pm/ShortcutInfo;->isPinnedVisible()Z
-HPLandroid/content/pm/ShortcutInfo;->isVisibleToPublisher()Z
-HPLandroid/content/pm/ShortcutInfo;->lookUpResourceId(Landroid/content/res/Resources;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/content/pm/ShortcutInfo;->lookUpResourceName(Landroid/content/res/Resources;IZLjava/lang/String;)Ljava/lang/String;
-HPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceIds(Landroid/content/res/Resources;)V
-HSPLandroid/content/pm/ShortcutInfo;->lookupAndFillInResourceNames(Landroid/content/res/Resources;)V
-HSPLandroid/content/pm/ShortcutInfo;->resolveResourceStrings(Landroid/content/res/Resources;)V
-HSPLandroid/content/pm/ShortcutInfo;->setCategories(Ljava/util/Set;)V
-HSPLandroid/content/pm/ShortcutInfo;->setIntentExtras(Landroid/content/Intent;Landroid/os/PersistableBundle;)Landroid/content/Intent;
-HSPLandroid/content/pm/ShortcutInfo;->setIntents([Landroid/content/Intent;)V
+HSPLandroid/content/pm/ShortcutInfo;->getPackage()Ljava/lang/String;
+HSPLandroid/content/pm/ShortcutInfo;->hasFlags(I)Z
+HSPLandroid/content/pm/ShortcutInfo;->hasKeyFieldsOnly()Z
 HSPLandroid/content/pm/ShortcutInfo;->validateIcon(Landroid/graphics/drawable/Icon;)Landroid/graphics/drawable/Icon;
 HSPLandroid/content/pm/ShortcutInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/ShortcutManager;->disableShortcuts(Ljava/util/List;)V
-HSPLandroid/content/pm/ShortcutManager;->getDynamicShortcuts()Ljava/util/List;
+HSPLandroid/content/pm/ShortcutManager;-><init>(Landroid/content/Context;Landroid/content/pm/IShortcutService;)V
 HSPLandroid/content/pm/ShortcutManager;->injectMyUserId()I
-HSPLandroid/content/pm/ShortcutManager;->setDynamicShortcuts(Ljava/util/List;)Z
-HSPLandroid/content/pm/Signature$1;-><init>()V
 HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/Signature;
 HSPLandroid/content/pm/Signature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Landroid/content/pm/Signature;
 HSPLandroid/content/pm/Signature$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/Signature;-><init>(Ljava/lang/String;)V
+HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/Signature;-><init>(Landroid/os/Parcel;Landroid/content/pm/Signature$1;)V
 HSPLandroid/content/pm/Signature;-><init>([B)V
-HSPLandroid/content/pm/Signature;-><init>([Ljava/security/cert/Certificate;)V
-HSPLandroid/content/pm/Signature;->areExactMatch([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z
 HSPLandroid/content/pm/Signature;->equals(Ljava/lang/Object;)Z
-HSPLandroid/content/pm/Signature;->getPublicKey()Ljava/security/PublicKey;
 HSPLandroid/content/pm/Signature;->hashCode()I
-HSPLandroid/content/pm/Signature;->parseHexDigit(I)I
 HSPLandroid/content/pm/Signature;->toByteArray()[B
-HSPLandroid/content/pm/Signature;->toChars()[C
-HSPLandroid/content/pm/Signature;->toChars([C[I)[C
-HSPLandroid/content/pm/Signature;->toCharsString()Ljava/lang/String;
-HSPLandroid/content/pm/Signature;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/SigningInfo$1;-><init>()V
-HPLandroid/content/pm/SigningInfo;->getApkContentsSigners()[Landroid/content/pm/Signature;
-HSPLandroid/content/pm/StringParceledListSlice$1;-><init>()V
-HSPLandroid/content/pm/StringParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/StringParceledListSlice;
-HSPLandroid/content/pm/StringParceledListSlice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/StringParceledListSlice;->getList()Ljava/util/List;
-HSPLandroid/content/pm/UserInfo$1;-><init>()V
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/UserInfo;
 HSPLandroid/content/pm/UserInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/pm/UserInfo;-><init>(ILjava/lang/String;Ljava/lang/String;I)V
-HSPLandroid/content/pm/UserInfo;-><init>(Landroid/content/pm/UserInfo;)V
 HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;)V
-HPLandroid/content/pm/UserInfo;->canHaveProfile()Z
+HSPLandroid/content/pm/UserInfo;-><init>(Landroid/os/Parcel;Landroid/content/pm/UserInfo$1;)V
 HSPLandroid/content/pm/UserInfo;->getUserHandle()Landroid/os/UserHandle;
-HSPLandroid/content/pm/UserInfo;->isAdmin()Z
-HSPLandroid/content/pm/UserInfo;->isDemo()Z
-HSPLandroid/content/pm/UserInfo;->isEnabled()Z
 HSPLandroid/content/pm/UserInfo;->isEphemeral()Z
 HSPLandroid/content/pm/UserInfo;->isGuest()Z
-HSPLandroid/content/pm/UserInfo;->isInitialized()Z
 HSPLandroid/content/pm/UserInfo;->isManagedProfile()Z
-HSPLandroid/content/pm/UserInfo;->isPrimary()Z
-HSPLandroid/content/pm/UserInfo;->isQuietModeEnabled()Z
+HSPLandroid/content/pm/UserInfo;->isProfile()Z
 HSPLandroid/content/pm/UserInfo;->isRestricted()Z
-HSPLandroid/content/pm/UserInfo;->isSystemOnly()Z
 HSPLandroid/content/pm/UserInfo;->supportsSwitchTo()Z
 HSPLandroid/content/pm/UserInfo;->supportsSwitchToByUser()Z
-HSPLandroid/content/pm/UserInfo;->toString()Ljava/lang/String;
-HSPLandroid/content/pm/UserInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/pm/VerifierInfo$1;-><init>()V
-HSPLandroid/content/pm/VersionedPackage$1;-><init>()V
 HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/pm/VersionedPackage;
 HSPLandroid/content/pm/VersionedPackage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/content/pm/VersionedPackage;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/pm/VersionedPackage;-><init>(Landroid/os/Parcel;Landroid/content/pm/VersionedPackage$1;)V
 HSPLandroid/content/pm/VersionedPackage;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/pm/dex/ArtManager;->getCurrentProfilePath(Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/pm/dex/ArtManager;->getProfileName(Ljava/lang/String;)Ljava/lang/String;
-HPLandroid/content/pm/dex/ArtManager;->getProfileSnapshotFileForName(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForApk(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/content/pm/dex/DexMetadataHelper;->buildDexMetadataPathForFile(Ljava/io/File;)Ljava/lang/String;
-PLandroid/content/pm/dex/DexMetadataHelper;->buildPackageApkToDexMetadataMap(Ljava/util/List;)Ljava/util/Map;
-HSPLandroid/content/pm/dex/DexMetadataHelper;->findDexMetadataForFile(Ljava/io/File;)Ljava/io/File;
-PLandroid/content/pm/dex/DexMetadataHelper;->getPackageDexMetadataSize(Landroid/content/pm/PackageParser$PackageLite;)J
-HSPLandroid/content/pm/dex/DexMetadataHelper;->isDexMetadataFile(Ljava/io/File;)Z
-PLandroid/content/pm/dex/DexMetadataHelper;->validateDexMetadataFile(Ljava/lang/String;)V
-PLandroid/content/pm/dex/DexMetadataHelper;->validatePackageDexMetadata(Landroid/content/pm/PackageParser$Package;)V
-HSPLandroid/content/pm/dex/IArtManager$Stub;-><init>()V
-HPLandroid/content/pm/dex/IArtManager$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/content/pm/dex/IArtManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onError(I)V
-PLandroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;->onSuccess(Landroid/os/ParcelFileDescriptor;)V
-HSPLandroid/content/pm/dex/PackageOptimizationInfo;->getCompilationFilter()I
-HSPLandroid/content/pm/dex/PackageOptimizationInfo;->getCompilationReason()I
-HSPLandroid/content/pm/split/DefaultSplitAssetLoader;->close()V
-HSPLandroid/content/pm/split/DefaultSplitAssetLoader;->getBaseAssetManager()Landroid/content/res/AssetManager;
-HSPLandroid/content/pm/split/DefaultSplitAssetLoader;->getSplitAssetManager(I)Landroid/content/res/AssetManager;
-HSPLandroid/content/pm/split/DefaultSplitAssetLoader;->loadApkAssets(Ljava/lang/String;I)Landroid/content/res/ApkAssets;
-HSPLandroid/content/res/-$$Lambda$Resources$4msWUw7LKsgLexLZjIfWa4oguq4;-><init>()V
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable$1;-><init>()V
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;-><clinit>()V
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;-><init>(Ljava/lang/String;Ljava/util/List;I)V
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;->getSplitPermission()Ljava/lang/String;
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;->getTargetSdk()I
+HSPLandroid/content/pm/permission/SplitPermissionInfoParcelable;->onConstructed()V
 HSPLandroid/content/res/-$$Lambda$Resources$4msWUw7LKsgLexLZjIfWa4oguq4;->test(Ljava/lang/Object;)Z
-HSPLandroid/content/res/-$$Lambda$ResourcesImpl$99dm2ENnzo9b0SIUjUj2Kl3pi90;-><init>()V
 HSPLandroid/content/res/-$$Lambda$ResourcesImpl$99dm2ENnzo9b0SIUjUj2Kl3pi90;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
-HSPLandroid/content/res/-$$Lambda$ResourcesImpl$h3PTRX185BeQl8SVC2_w9arp5Og;-><init>()V
 HSPLandroid/content/res/-$$Lambda$ResourcesImpl$h3PTRX185BeQl8SVC2_w9arp5Og;->get()Ljava/lang/Object;
+HSPLandroid/content/res/ApkAssets;-><init>(Ljava/lang/String;ZZZZZ)V
+HSPLandroid/content/res/ApkAssets;->close()V
 HSPLandroid/content/res/ApkAssets;->finalize()V
 HSPLandroid/content/res/ApkAssets;->getAssetPath()Ljava/lang/String;
 HSPLandroid/content/res/ApkAssets;->getStringFromPool(I)Ljava/lang/CharSequence;
+HSPLandroid/content/res/ApkAssets;->isForLoader()Z
 HSPLandroid/content/res/ApkAssets;->isUpToDate()Z
-HSPLandroid/content/res/ApkAssets;->openXml(Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
-HSPLandroid/content/res/AssetFileDescriptor$1;-><init>()V
+HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;Z)Landroid/content/res/ApkAssets;
+HSPLandroid/content/res/ApkAssets;->loadFromPath(Ljava/lang/String;ZZ)Landroid/content/res/ApkAssets;
+HSPLandroid/content/res/ApkAssets;->loadOverlayFromPath(Ljava/lang/String;Z)Landroid/content/res/ApkAssets;
 HSPLandroid/content/res/AssetFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/res/AssetFileDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/ParcelFileDescriptor;JJ)V
 HSPLandroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/ParcelFileDescriptor;JJLandroid/os/Bundle;)V
 HSPLandroid/content/res/AssetFileDescriptor;->close()V
 HSPLandroid/content/res/AssetFileDescriptor;->createInputStream()Ljava/io/FileInputStream;
 HSPLandroid/content/res/AssetFileDescriptor;->getDeclaredLength()J
+HSPLandroid/content/res/AssetFileDescriptor;->getExtras()Landroid/os/Bundle;
 HSPLandroid/content/res/AssetFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
 HSPLandroid/content/res/AssetFileDescriptor;->getLength()J
 HSPLandroid/content/res/AssetFileDescriptor;->getParcelFileDescriptor()Landroid/os/ParcelFileDescriptor;
 HSPLandroid/content/res/AssetFileDescriptor;->getStartOffset()J
 HSPLandroid/content/res/AssetFileDescriptor;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/content/res/AssetManager$AssetInputStream;-><init>(Landroid/content/res/AssetManager;J)V
+HSPLandroid/content/res/AssetManager$AssetInputStream;-><init>(Landroid/content/res/AssetManager;JLandroid/content/res/AssetManager$1;)V
 HSPLandroid/content/res/AssetManager$AssetInputStream;->available()I
 HSPLandroid/content/res/AssetManager$AssetInputStream;->close()V
+HSPLandroid/content/res/AssetManager$AssetInputStream;->ensureOpen()V
 HSPLandroid/content/res/AssetManager$AssetInputStream;->finalize()V
+HSPLandroid/content/res/AssetManager$AssetInputStream;->getNativeAsset()J
 HSPLandroid/content/res/AssetManager$AssetInputStream;->read()I
 HSPLandroid/content/res/AssetManager$AssetInputStream;->read([B)I
 HSPLandroid/content/res/AssetManager$AssetInputStream;->read([BII)I
+HSPLandroid/content/res/AssetManager$Builder;-><init>()V
+HSPLandroid/content/res/AssetManager$Builder;->addApkAssets(Landroid/content/res/ApkAssets;)Landroid/content/res/AssetManager$Builder;
 HSPLandroid/content/res/AssetManager$Builder;->build()Landroid/content/res/AssetManager;
-HSPLandroid/content/res/AssetManager;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/content/res/AssetManager;-><init>()V
+HSPLandroid/content/res/AssetManager;-><init>(Z)V
+HSPLandroid/content/res/AssetManager;-><init>(ZLandroid/content/res/AssetManager$1;)V
+HSPLandroid/content/res/AssetManager;->access$1000(J)J
+HSPLandroid/content/res/AssetManager;->access$1000(J)V
+HSPLandroid/content/res/AssetManager;->access$102(Landroid/content/res/AssetManager;[Landroid/content/res/ApkAssets;)[Landroid/content/res/ApkAssets;
+HSPLandroid/content/res/AssetManager;->access$1100(J)V
+HSPLandroid/content/res/AssetManager;->access$1100(Landroid/content/res/AssetManager;J)V
+HSPLandroid/content/res/AssetManager;->access$1200(Landroid/content/res/AssetManager;J)V
+HSPLandroid/content/res/AssetManager;->access$200(Landroid/content/res/AssetManager;)J
+HSPLandroid/content/res/AssetManager;->access$300(J[Landroid/content/res/ApkAssets;Z)V
+HSPLandroid/content/res/AssetManager;->access$402(Landroid/content/res/AssetManager;[Landroid/content/res/loader/ResourcesLoader;)[Landroid/content/res/loader/ResourcesLoader;
+HSPLandroid/content/res/AssetManager;->access$500(J)J
+HSPLandroid/content/res/AssetManager;->access$600(J)J
+HSPLandroid/content/res/AssetManager;->access$700(J[BII)I
+HSPLandroid/content/res/AssetManager;->access$800(J[BII)I
+HSPLandroid/content/res/AssetManager;->access$900(J)J
 HSPLandroid/content/res/AssetManager;->addAssetPathAsSharedLibrary(Ljava/lang/String;)I
 HSPLandroid/content/res/AssetManager;->addAssetPathInternal(Ljava/lang/String;ZZ)I
 HSPLandroid/content/res/AssetManager;->applyStyle(JIILandroid/content/res/XmlBlock$Parser;[IJJ)V
 HSPLandroid/content/res/AssetManager;->applyStyleToTheme(JIZ)V
-HSPLandroid/content/res/AssetManager;->close()V
-HSPLandroid/content/res/AssetManager;->createSystemAssetsInZygoteLocked()V
+HSPLandroid/content/res/AssetManager;->createSystemAssetsInZygoteLocked(ZLjava/lang/String;)V
 HSPLandroid/content/res/AssetManager;->createTheme()J
+HSPLandroid/content/res/AssetManager;->decRefsLocked(J)V
 HSPLandroid/content/res/AssetManager;->ensureOpenLocked()V
 HSPLandroid/content/res/AssetManager;->ensureValidLocked()V
 HSPLandroid/content/res/AssetManager;->finalize()V
-HSPLandroid/content/res/AssetManager;->findCookieForPath(Ljava/lang/String;)I
 HSPLandroid/content/res/AssetManager;->getApkAssets()[Landroid/content/res/ApkAssets;
 HSPLandroid/content/res/AssetManager;->getAssignedPackageIdentifiers()Landroid/util/SparseArray;
-HSPLandroid/content/res/AssetManager;->getAttributeResolutionStack(JIII)[I
+HSPLandroid/content/res/AssetManager;->getAssignedPackageIdentifiers(ZZ)Landroid/util/SparseArray;
+HSPLandroid/content/res/AssetManager;->getLoaders()Ljava/util/List;
 HSPLandroid/content/res/AssetManager;->getLocales()[Ljava/lang/String;
 HSPLandroid/content/res/AssetManager;->getNonSystemLocales()[Ljava/lang/String;
+HSPLandroid/content/res/AssetManager;->getPooledStringForCookie(II)Ljava/lang/CharSequence;
 HSPLandroid/content/res/AssetManager;->getResourceArray(I[I)I
 HSPLandroid/content/res/AssetManager;->getResourceArraySize(I)I
 HSPLandroid/content/res/AssetManager;->getResourceBagText(II)Ljava/lang/CharSequence;
@@ -4708,35 +3298,41 @@
 HSPLandroid/content/res/AssetManager;->getResourcePackageName(I)Ljava/lang/String;
 HSPLandroid/content/res/AssetManager;->getResourceStringArray(I)[Ljava/lang/String;
 HSPLandroid/content/res/AssetManager;->getResourceText(I)Ljava/lang/CharSequence;
-HSPLandroid/content/res/AssetManager;->getResourceTextArray(I)[Ljava/lang/CharSequence;
 HSPLandroid/content/res/AssetManager;->getResourceTypeName(I)Ljava/lang/String;
 HSPLandroid/content/res/AssetManager;->getResourceValue(IILandroid/util/TypedValue;Z)Z
 HSPLandroid/content/res/AssetManager;->getSizeConfigurations()[Landroid/content/res/Configuration;
 HSPLandroid/content/res/AssetManager;->getSystem()Landroid/content/res/AssetManager;
 HSPLandroid/content/res/AssetManager;->getThemeValue(JILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/AssetManager;->incRefsLocked(J)V
+HSPLandroid/content/res/AssetManager;->invalidateCachesLocked(I)V
+HSPLandroid/content/res/AssetManager;->isUpToDate()Z
+HSPLandroid/content/res/AssetManager;->list(Ljava/lang/String;)[Ljava/lang/String;
 HSPLandroid/content/res/AssetManager;->open(Ljava/lang/String;)Ljava/io/InputStream;
 HSPLandroid/content/res/AssetManager;->open(Ljava/lang/String;I)Ljava/io/InputStream;
 HSPLandroid/content/res/AssetManager;->openNonAsset(ILjava/lang/String;I)Ljava/io/InputStream;
 HSPLandroid/content/res/AssetManager;->openNonAssetFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/res/AssetManager;->openXmlBlockAsset(ILjava/lang/String;)Landroid/content/res/XmlBlock;
-HSPLandroid/content/res/AssetManager;->openXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/AssetManager;->releaseTheme(J)V
 HSPLandroid/content/res/AssetManager;->resolveAttrs(JII[I[I[I[I)Z
 HSPLandroid/content/res/AssetManager;->retrieveAttributes(Landroid/content/res/XmlBlock$Parser;[I[I[I)Z
+HSPLandroid/content/res/AssetManager;->searchLoaders(ILjava/lang/String;I)Ljava/io/InputStream;
+HSPLandroid/content/res/AssetManager;->searchLoadersFd(ILjava/lang/String;)Landroid/content/res/AssetFileDescriptor;
 HSPLandroid/content/res/AssetManager;->setApkAssets([Landroid/content/res/ApkAssets;Z)V
 HSPLandroid/content/res/AssetManager;->setConfiguration(IILjava/lang/String;IIIIIIIIIIIIIII)V
 HSPLandroid/content/res/AssetManager;->setThemeTo(JLandroid/content/res/AssetManager;J)V
 HSPLandroid/content/res/AssetManager;->xmlBlockGone(I)V
-HSPLandroid/content/res/ColorStateList$1;-><init>()V
 HSPLandroid/content/res/ColorStateList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ColorStateList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/content/res/ColorStateList$ColorStateListFactory;-><init>(Landroid/content/res/ColorStateList;)V
 HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->getChangingConfigurations()I
 HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance()Ljava/lang/Object;
 HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ColorStateList$ColorStateListFactory;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;
+HSPLandroid/content/res/ColorStateList;-><init>()V
 HSPLandroid/content/res/ColorStateList;-><init>(Landroid/content/res/ColorStateList;)V
 HSPLandroid/content/res/ColorStateList;-><init>([[I[I)V
+HSPLandroid/content/res/ColorStateList;->access$000(Landroid/content/res/ColorStateList;)I
 HSPLandroid/content/res/ColorStateList;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/content/res/ColorStateList;->canApplyTheme()Z
 HSPLandroid/content/res/ColorStateList;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
@@ -4746,79 +3342,91 @@
 HSPLandroid/content/res/ColorStateList;->getDefaultColor()I
 HSPLandroid/content/res/ColorStateList;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/content/res/ColorStateList;->isStateful()Z
+HSPLandroid/content/res/ColorStateList;->modulateColorAlpha(IF)I
 HSPLandroid/content/res/ColorStateList;->obtainForTheme(Landroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ColorStateList;->onColorsChanged()V
 HSPLandroid/content/res/ColorStateList;->valueOf(I)Landroid/content/res/ColorStateList;
-HSPLandroid/content/res/ColorStateList;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/res/CompatibilityInfo$1;-><init>()V
-HSPLandroid/content/res/CompatibilityInfo$2;-><init>()V
 HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/CompatibilityInfo;
 HSPLandroid/content/res/CompatibilityInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/content/res/CompatibilityInfo;-><init>(Landroid/content/pm/ApplicationInfo;IIZ)V
+HSPLandroid/content/res/CompatibilityInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/res/CompatibilityInfo;-><init>(Landroid/os/Parcel;Landroid/content/res/CompatibilityInfo$1;)V
 HSPLandroid/content/res/CompatibilityInfo;->applyToConfiguration(ILandroid/content/res/Configuration;)V
 HSPLandroid/content/res/CompatibilityInfo;->applyToDisplayMetrics(Landroid/util/DisplayMetrics;)V
-HSPLandroid/content/res/CompatibilityInfo;->computeCompatibleScaling(Landroid/util/DisplayMetrics;Landroid/util/DisplayMetrics;)F
 HSPLandroid/content/res/CompatibilityInfo;->equals(Ljava/lang/Object;)Z
 HSPLandroid/content/res/CompatibilityInfo;->getTranslator()Landroid/content/res/CompatibilityInfo$Translator;
 HSPLandroid/content/res/CompatibilityInfo;->hashCode()I
 HSPLandroid/content/res/CompatibilityInfo;->isScalingRequired()Z
 HSPLandroid/content/res/CompatibilityInfo;->needsCompatResources()Z
 HSPLandroid/content/res/CompatibilityInfo;->supportsScreen()Z
-HSPLandroid/content/res/CompatibilityInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/res/Configuration$1;-><init>()V
+HSPLandroid/content/res/ComplexColor;-><init>()V
+HSPLandroid/content/res/ComplexColor;->getChangingConfigurations()I
+HSPLandroid/content/res/ComplexColor;->setBaseChangingConfigurations(I)V
 HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/content/res/Configuration;
 HSPLandroid/content/res/Configuration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/content/res/Configuration;-><init>()V
 HSPLandroid/content/res/Configuration;-><init>(Landroid/content/res/Configuration;)V
+HSPLandroid/content/res/Configuration;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/content/res/Configuration;-><init>(Landroid/os/Parcel;Landroid/content/res/Configuration$1;)V
 HSPLandroid/content/res/Configuration;->compareTo(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->diff(Landroid/content/res/Configuration;ZZ)I
+HSPLandroid/content/res/Configuration;->diffPublicOnly(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->equals(Landroid/content/res/Configuration;)Z
 HSPLandroid/content/res/Configuration;->equals(Ljava/lang/Object;)Z
 HSPLandroid/content/res/Configuration;->fixUpLocaleList()V
 HSPLandroid/content/res/Configuration;->generateDelta(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)Landroid/content/res/Configuration;
 HSPLandroid/content/res/Configuration;->getLayoutDirection()I
 HSPLandroid/content/res/Configuration;->getLocales()Landroid/os/LocaleList;
+HSPLandroid/content/res/Configuration;->getScreenLayoutNoDirection(I)I
 HSPLandroid/content/res/Configuration;->hashCode()I
-HPLandroid/content/res/Configuration;->localesToResourceQualifier(Landroid/os/LocaleList;)Ljava/lang/String;
+HSPLandroid/content/res/Configuration;->isLayoutSizeAtLeast(I)Z
+HSPLandroid/content/res/Configuration;->isOtherSeqNewer(Landroid/content/res/Configuration;)Z
+HSPLandroid/content/res/Configuration;->isScreenRound()Z
+HSPLandroid/content/res/Configuration;->isScreenWideColorGamut()Z
+HSPLandroid/content/res/Configuration;->needNewResources(II)Z
 HSPLandroid/content/res/Configuration;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/content/res/Configuration;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V
-HSPLandroid/content/res/Configuration;->reduceScreenLayout(III)I
-HPLandroid/content/res/Configuration;->resourceQualifierString(Landroid/content/res/Configuration;)Ljava/lang/String;
-HPLandroid/content/res/Configuration;->resourceQualifierString(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)Ljava/lang/String;
+HSPLandroid/content/res/Configuration;->setLayoutDirection(Ljava/util/Locale;)V
 HSPLandroid/content/res/Configuration;->setLocales(Landroid/os/LocaleList;)V
 HSPLandroid/content/res/Configuration;->setTo(Landroid/content/res/Configuration;)V
 HSPLandroid/content/res/Configuration;->setToDefaults()V
-HSPLandroid/content/res/Configuration;->toString()Ljava/lang/String;
 HSPLandroid/content/res/Configuration;->unset()V
 HSPLandroid/content/res/Configuration;->updateFrom(Landroid/content/res/Configuration;)I
 HSPLandroid/content/res/Configuration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/res/Configuration;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLandroid/content/res/Configuration;->writeToProto(Landroid/util/proto/ProtoOutputStream;JZ)V
-HSPLandroid/content/res/Configuration;->writeToProto(Landroid/util/proto/ProtoOutputStream;JZZ)V
+HSPLandroid/content/res/ConfigurationBoundResourceCache;-><init>()V
+HSPLandroid/content/res/ConfigurationBoundResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->onConfigurationChange(I)V
+HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;)V
+HSPLandroid/content/res/ConfigurationBoundResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;Z)V
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->shouldInvalidateEntry(Landroid/content/res/ConstantState;I)Z
 HSPLandroid/content/res/ConfigurationBoundResourceCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z
+HSPLandroid/content/res/ConstantState;-><init>()V
 HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;)Ljava/lang/Object;
 HSPLandroid/content/res/ConstantState;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Ljava/lang/Object;
+HSPLandroid/content/res/DrawableCache;-><init>()V
 HSPLandroid/content/res/DrawableCache;->getInstance(JLandroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Landroid/graphics/drawable/Drawable$ConstantState;I)Z
 HSPLandroid/content/res/DrawableCache;->shouldInvalidateEntry(Ljava/lang/Object;I)Z
+HSPLandroid/content/res/FontResourcesParser$ProviderResourceEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
 HSPLandroid/content/res/FontResourcesParser;->parse(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
 HSPLandroid/content/res/FontResourcesParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
 HSPLandroid/content/res/FontResourcesParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
-HSPLandroid/content/res/ObbInfo$1;-><init>()V
+HSPLandroid/content/res/ResourceId;->isValid(I)Z
+HSPLandroid/content/res/Resources$NotFoundException;-><init>(Ljava/lang/String;)V
+HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;)V
+HSPLandroid/content/res/Resources$Theme;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$1;)V
 HSPLandroid/content/res/Resources$Theme;->applyStyle(IZ)V
-HSPLandroid/content/res/Resources$Theme;->getAttributeResolutionStack(III)[I
 HSPLandroid/content/res/Resources$Theme;->getChangingConfigurations()I
-HSPLandroid/content/res/Resources$Theme;->getExplicitStyle(Landroid/util/AttributeSet;)I
+HSPLandroid/content/res/Resources$Theme;->getKey()Landroid/content/res/Resources$ThemeKey;
+HSPLandroid/content/res/Resources$Theme;->getResources()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(I[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes(Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources$Theme;->obtainStyledAttributes([I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/Resources$Theme;->rebase()V
 HSPLandroid/content/res/Resources$Theme;->resolveAttribute(ILandroid/util/TypedValue;Z)Z
+HSPLandroid/content/res/Resources$Theme;->resolveAttributes([I[I)Landroid/content/res/TypedArray;
+HSPLandroid/content/res/Resources$Theme;->setImpl(Landroid/content/res/ResourcesImpl$ThemeImpl;)V
 HSPLandroid/content/res/Resources$Theme;->setTo(Landroid/content/res/Resources$Theme;)V
+HSPLandroid/content/res/Resources$ThemeKey;-><init>()V
 HSPLandroid/content/res/Resources$ThemeKey;->append(IZ)V
 HSPLandroid/content/res/Resources$ThemeKey;->clone()Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/Resources$ThemeKey;->equals(Ljava/lang/Object;)Z
@@ -4827,16 +3435,15 @@
 HSPLandroid/content/res/Resources;-><init>()V
 HSPLandroid/content/res/Resources;-><init>(Landroid/content/res/AssetManager;Landroid/util/DisplayMetrics;Landroid/content/res/Configuration;)V
 HSPLandroid/content/res/Resources;-><init>(Ljava/lang/ClassLoader;)V
+HSPLandroid/content/res/Resources;->findLoader(I)Landroid/content/res/loader/ResourceLoader;
 HSPLandroid/content/res/Resources;->finishPreloading()V
 HSPLandroid/content/res/Resources;->getAnimation(I)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/Resources;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/Resources;->getAssets()Landroid/content/res/AssetManager;
 HSPLandroid/content/res/Resources;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I
 HSPLandroid/content/res/Resources;->getBoolean(I)Z
-HSPLandroid/content/res/Resources;->getClassLoader()Ljava/lang/ClassLoader;
 HSPLandroid/content/res/Resources;->getColor(I)I
 HSPLandroid/content/res/Resources;->getColor(ILandroid/content/res/Resources$Theme;)I
-HSPLandroid/content/res/Resources;->getColorStateList(I)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/Resources;->getColorStateList(ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/Resources;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo;
 HSPLandroid/content/res/Resources;->getConfiguration()Landroid/content/res/Configuration;
@@ -4857,7 +3464,7 @@
 HSPLandroid/content/res/Resources;->getIntArray(I)[I
 HSPLandroid/content/res/Resources;->getInteger(I)I
 HSPLandroid/content/res/Resources;->getLayout(I)Landroid/content/res/XmlResourceParser;
-HSPLandroid/content/res/Resources;->getQuantityString(II)Ljava/lang/String;
+HSPLandroid/content/res/Resources;->getLoaders()Ljava/util/List;
 HSPLandroid/content/res/Resources;->getQuantityString(II[Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getQuantityText(II)Ljava/lang/CharSequence;
 HSPLandroid/content/res/Resources;->getResourceEntryName(I)Ljava/lang/String;
@@ -4871,35 +3478,42 @@
 HSPLandroid/content/res/Resources;->getStringArray(I)[Ljava/lang/String;
 HSPLandroid/content/res/Resources;->getSystem()Landroid/content/res/Resources;
 HSPLandroid/content/res/Resources;->getText(I)Ljava/lang/CharSequence;
-HPLandroid/content/res/Resources;->getText(ILjava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/content/res/Resources;->getTextArray(I)[Ljava/lang/CharSequence;
 HSPLandroid/content/res/Resources;->getValue(ILandroid/util/TypedValue;Z)V
 HSPLandroid/content/res/Resources;->getValueForDensity(IILandroid/util/TypedValue;Z)V
 HSPLandroid/content/res/Resources;->getXml(I)Landroid/content/res/XmlResourceParser;
+HSPLandroid/content/res/Resources;->lambda$newTheme$0(Ljava/lang/ref/WeakReference;)Z
 HSPLandroid/content/res/Resources;->loadColorStateList(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/Resources;->loadComplexColor(Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/Resources;->loadDrawable(Landroid/util/TypedValue;IILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/content/res/Resources;->loadXmlResourceParser(ILjava/lang/String;)Landroid/content/res/XmlResourceParser;
+HSPLandroid/content/res/Resources;->loadXmlResourceParser(Ljava/lang/String;IILjava/lang/String;)Landroid/content/res/XmlResourceParser;
 HSPLandroid/content/res/Resources;->newTheme()Landroid/content/res/Resources$Theme;
+HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources;->obtainTempTypedValue()Landroid/util/TypedValue;
 HSPLandroid/content/res/Resources;->obtainTypedArray(I)Landroid/content/res/TypedArray;
 HSPLandroid/content/res/Resources;->openRawResource(I)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResource(ILandroid/util/TypedValue;)Ljava/io/InputStream;
 HSPLandroid/content/res/Resources;->openRawResourceFd(I)Landroid/content/res/AssetFileDescriptor;
-HSPLandroid/content/res/Resources;->parseBundleExtra(Ljava/lang/String;Landroid/util/AttributeSet;Landroid/os/Bundle;)V
-HSPLandroid/content/res/Resources;->preloadFonts(I)V
 HSPLandroid/content/res/Resources;->releaseTempTypedValue(Landroid/util/TypedValue;)V
+HSPLandroid/content/res/Resources;->resourceHasPackage(I)Z
+HSPLandroid/content/res/Resources;->selectDefaultTheme(II)I
+HSPLandroid/content/res/Resources;->selectSystemTheme(IIIIII)I
+HSPLandroid/content/res/Resources;->setCallbacks(Landroid/content/res/Resources$UpdateCallbacks;)V
 HSPLandroid/content/res/Resources;->setImpl(Landroid/content/res/ResourcesImpl;)V
 HSPLandroid/content/res/Resources;->startPreloading()V
 HSPLandroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;)V
 HSPLandroid/content/res/Resources;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
+HSPLandroid/content/res/Resources;->updateSystemConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
+HSPLandroid/content/res/ResourcesImpl$LookupStack;-><init>()V
+HSPLandroid/content/res/ResourcesImpl$LookupStack;-><init>(Landroid/content/res/ResourcesImpl$1;)V
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->contains(I)Z
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->pop()V
 HSPLandroid/content/res/ResourcesImpl$LookupStack;->push(I)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;-><init>(Landroid/content/res/ResourcesImpl;)V
+HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->access$000(Landroid/content/res/ResourcesImpl$ThemeImpl;)Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->applyStyle(IZ)V
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->finalize()V
-HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getAttributeResolutionStack(III)[I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getChangingConfigurations()I
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->getKey()Landroid/content/res/Resources$ThemeKey;
 HSPLandroid/content/res/ResourcesImpl$ThemeImpl;->obtainStyledAttributes(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[III)Landroid/content/res/TypedArray;
@@ -4917,6 +3531,7 @@
 HSPLandroid/content/res/ResourcesImpl;->flushLayoutCache()V
 HSPLandroid/content/res/ResourcesImpl;->getAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/ResourcesImpl;->getAssets()Landroid/content/res/AssetManager;
+HSPLandroid/content/res/ResourcesImpl;->getAttributeSetSourceResId(Landroid/util/AttributeSet;)I
 HSPLandroid/content/res/ResourcesImpl;->getColorStateListFromInt(Landroid/util/TypedValue;J)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ResourcesImpl;->getCompatibilityInfo()Landroid/content/res/CompatibilityInfo;
 HSPLandroid/content/res/ResourcesImpl;->getConfiguration()Landroid/content/res/Configuration;
@@ -4933,6 +3548,8 @@
 HSPLandroid/content/res/ResourcesImpl;->getStateListAnimatorCache()Landroid/content/res/ConfigurationBoundResourceCache;
 HSPLandroid/content/res/ResourcesImpl;->getValue(ILandroid/util/TypedValue;Z)V
 HSPLandroid/content/res/ResourcesImpl;->getValueForDensity(IILandroid/util/TypedValue;Z)V
+HSPLandroid/content/res/ResourcesImpl;->lambda$decodeImageDrawable$1(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
+HSPLandroid/content/res/ResourcesImpl;->lambda$new$0()Landroid/content/res/ResourcesImpl$LookupStack;
 HSPLandroid/content/res/ResourcesImpl;->loadColorStateList(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ColorStateList;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColor(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
 HSPLandroid/content/res/ResourcesImpl;->loadComplexColorForCookie(Landroid/content/res/Resources;Landroid/util/TypedValue;ILandroid/content/res/Resources$Theme;)Landroid/content/res/ComplexColor;
@@ -4950,18 +3567,29 @@
 HSPLandroid/content/res/ResourcesImpl;->updateConfiguration(Landroid/content/res/Configuration;Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;)V
 HSPLandroid/content/res/ResourcesImpl;->verifyPreloadConfig(IIILjava/lang/String;)Z
 HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)V
+HSPLandroid/content/res/ResourcesKey;-><init>(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;[Landroid/content/res/loader/ResourcesLoader;)V
 HSPLandroid/content/res/ResourcesKey;->equals(Ljava/lang/Object;)Z
+HSPLandroid/content/res/ResourcesKey;->hasOverrideConfiguration()Z
 HSPLandroid/content/res/ResourcesKey;->hashCode()I
+HSPLandroid/content/res/StringBlock$StyleIDs;->access$000(Landroid/content/res/StringBlock$StyleIDs;)I
+HSPLandroid/content/res/StringBlock$StyleIDs;->access$100(Landroid/content/res/StringBlock$StyleIDs;)I
+HSPLandroid/content/res/StringBlock$StyleIDs;->access$200(Landroid/content/res/StringBlock$StyleIDs;)I
+HSPLandroid/content/res/StringBlock;-><init>(JZ)V
 HSPLandroid/content/res/StringBlock;->applyStyles(Ljava/lang/String;[ILandroid/content/res/StringBlock$StyleIDs;)Ljava/lang/CharSequence;
+HSPLandroid/content/res/StringBlock;->close()V
 HSPLandroid/content/res/StringBlock;->finalize()V
 HSPLandroid/content/res/StringBlock;->get(I)Ljava/lang/CharSequence;
+HSPLandroid/content/res/ThemedResourceCache;-><init>()V
 HSPLandroid/content/res/ThemedResourceCache;->get(JLandroid/content/res/Resources$Theme;)Ljava/lang/Object;
 HSPLandroid/content/res/ThemedResourceCache;->getThemedLocked(Landroid/content/res/Resources$Theme;Z)Landroid/util/LongSparseArray;
+HSPLandroid/content/res/ThemedResourceCache;->getUnthemedLocked(Z)Landroid/util/LongSparseArray;
 HSPLandroid/content/res/ThemedResourceCache;->onConfigurationChange(I)V
 HSPLandroid/content/res/ThemedResourceCache;->prune(I)Z
 HSPLandroid/content/res/ThemedResourceCache;->pruneEntriesLocked(Landroid/util/LongSparseArray;I)Z
+HSPLandroid/content/res/ThemedResourceCache;->pruneEntryLocked(Ljava/lang/Object;I)Z
 HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;)V
 HSPLandroid/content/res/ThemedResourceCache;->put(JLandroid/content/res/Resources$Theme;Ljava/lang/Object;Z)V
+HSPLandroid/content/res/TypedArray;-><init>(Landroid/content/res/Resources;)V
 HSPLandroid/content/res/TypedArray;->extractThemeAttrs()[I
 HSPLandroid/content/res/TypedArray;->extractThemeAttrs([I)[I
 HSPLandroid/content/res/TypedArray;->getBoolean(IZ)Z
@@ -4983,12 +3611,9 @@
 HSPLandroid/content/res/TypedArray;->getInteger(II)I
 HSPLandroid/content/res/TypedArray;->getLayoutDimension(II)I
 HSPLandroid/content/res/TypedArray;->getLayoutDimension(ILjava/lang/String;)I
-HSPLandroid/content/res/TypedArray;->getNonConfigurationString(II)Ljava/lang/String;
-HSPLandroid/content/res/TypedArray;->getNonResourceString(I)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getPositionDescription()Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getResourceId(II)I
 HSPLandroid/content/res/TypedArray;->getResources()Landroid/content/res/Resources;
-HSPLandroid/content/res/TypedArray;->getSourceResourceId(II)I
 HSPLandroid/content/res/TypedArray;->getString(I)Ljava/lang/String;
 HSPLandroid/content/res/TypedArray;->getText(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/TypedArray;->getTextArray(I)[Ljava/lang/CharSequence;
@@ -5003,13 +3628,12 @@
 HSPLandroid/content/res/TypedArray;->peekValue(I)Landroid/util/TypedValue;
 HSPLandroid/content/res/TypedArray;->recycle()V
 HSPLandroid/content/res/TypedArray;->resize(I)V
+HSPLandroid/content/res/XmlBlock$Parser;-><init>(Landroid/content/res/XmlBlock;JLandroid/content/res/XmlBlock;)V
 HSPLandroid/content/res/XmlBlock$Parser;->close()V
 HSPLandroid/content/res/XmlBlock$Parser;->finalize()V
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeBooleanValue(IZ)Z
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeBooleanValue(Ljava/lang/String;Ljava/lang/String;Z)Z
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeCount()I
-HSPLandroid/content/res/XmlBlock$Parser;->getAttributeFloatValue(IF)F
-HSPLandroid/content/res/XmlBlock$Parser;->getAttributeFloatValue(Ljava/lang/String;Ljava/lang/String;F)F
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeIntValue(II)I
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeIntValue(Ljava/lang/String;Ljava/lang/String;I)I
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeName(I)Ljava/lang/String;
@@ -5020,22 +3644,38 @@
 HSPLandroid/content/res/XmlBlock$Parser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->getDepth()I
 HSPLandroid/content/res/XmlBlock$Parser;->getEventType()I
-HSPLandroid/content/res/XmlBlock$Parser;->getIdAttributeResourceValue(I)I
+HSPLandroid/content/res/XmlBlock$Parser;->getLineNumber()I
 HSPLandroid/content/res/XmlBlock$Parser;->getName()Ljava/lang/String;
+HSPLandroid/content/res/XmlBlock$Parser;->getPooledString(I)Ljava/lang/CharSequence;
 HSPLandroid/content/res/XmlBlock$Parser;->getPositionDescription()Ljava/lang/String;
-HSPLandroid/content/res/XmlBlock$Parser;->getStyleAttribute()I
+HSPLandroid/content/res/XmlBlock$Parser;->getSourceResId()I
 HSPLandroid/content/res/XmlBlock$Parser;->getText()Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->isEmptyElementTag()Z
 HSPLandroid/content/res/XmlBlock$Parser;->next()I
-HSPLandroid/content/res/XmlBlock$Parser;->nextTag()I
 HSPLandroid/content/res/XmlBlock$Parser;->nextText()Ljava/lang/String;
 HSPLandroid/content/res/XmlBlock$Parser;->require(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/content/res/XmlBlock;-><init>(Landroid/content/res/AssetManager;J)V
+HSPLandroid/content/res/XmlBlock;->access$008(Landroid/content/res/XmlBlock;)I
+HSPLandroid/content/res/XmlBlock;->access$100(J)I
+HSPLandroid/content/res/XmlBlock;->access$1000(JI)I
+HSPLandroid/content/res/XmlBlock;->access$1100(JLjava/lang/String;Ljava/lang/String;)I
+HSPLandroid/content/res/XmlBlock;->access$1200(JI)I
+HSPLandroid/content/res/XmlBlock;->access$1600(J)V
+HSPLandroid/content/res/XmlBlock;->access$1700(Landroid/content/res/XmlBlock;)V
+HSPLandroid/content/res/XmlBlock;->access$200(J)I
+HSPLandroid/content/res/XmlBlock;->access$300(J)I
+HSPLandroid/content/res/XmlBlock;->access$600(JI)I
+HSPLandroid/content/res/XmlBlock;->access$700(J)I
+HSPLandroid/content/res/XmlBlock;->access$800(JI)I
+HSPLandroid/content/res/XmlBlock;->access$900(JI)I
 HSPLandroid/content/res/XmlBlock;->close()V
+HSPLandroid/content/res/XmlBlock;->decOpenCountLocked()V
 HSPLandroid/content/res/XmlBlock;->finalize()V
 HSPLandroid/content/res/XmlBlock;->newParser(I)Landroid/content/res/XmlResourceParser;
-HSPLandroid/content/rollback/IRollbackManager$Stub;-><init>()V
-HPLandroid/content/rollback/IRollbackManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/rollback/IRollbackManager;
+HSPLandroid/database/AbstractCursor$SelfContentObserver;-><init>(Landroid/database/AbstractCursor;)V
 HSPLandroid/database/AbstractCursor$SelfContentObserver;->onChange(Z)V
+HSPLandroid/database/AbstractCursor;-><init>()V
+HSPLandroid/database/AbstractCursor;->checkPosition()V
 HSPLandroid/database/AbstractCursor;->close()V
 HSPLandroid/database/AbstractCursor;->fillWindow(ILandroid/database/CursorWindow;)V
 HSPLandroid/database/AbstractCursor;->finalize()V
@@ -5047,22 +3687,20 @@
 HSPLandroid/database/AbstractCursor;->getWantsAllOnMoveCalls()Z
 HSPLandroid/database/AbstractCursor;->getWindow()Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractCursor;->isAfterLast()Z
-HSPLandroid/database/AbstractCursor;->isBeforeFirst()Z
 HSPLandroid/database/AbstractCursor;->isClosed()Z
 HSPLandroid/database/AbstractCursor;->isLast()Z
 HSPLandroid/database/AbstractCursor;->moveToFirst()Z
 HSPLandroid/database/AbstractCursor;->moveToNext()Z
 HSPLandroid/database/AbstractCursor;->moveToPosition(I)Z
-HSPLandroid/database/AbstractCursor;->moveToPrevious()Z
 HSPLandroid/database/AbstractCursor;->onChange(Z)V
 HSPLandroid/database/AbstractCursor;->onDeactivateOrClose()V
 HSPLandroid/database/AbstractCursor;->onMove(II)Z
 HSPLandroid/database/AbstractCursor;->registerContentObserver(Landroid/database/ContentObserver;)V
-HSPLandroid/database/AbstractCursor;->registerDataSetObserver(Landroid/database/DataSetObserver;)V
 HSPLandroid/database/AbstractCursor;->setNotificationUri(Landroid/content/ContentResolver;Landroid/net/Uri;)V
 HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;)V
-HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;I)V
+HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V
 HSPLandroid/database/AbstractCursor;->unregisterContentObserver(Landroid/database/ContentObserver;)V
+HSPLandroid/database/AbstractWindowedCursor;-><init>()V
 HSPLandroid/database/AbstractWindowedCursor;->checkPosition()V
 HSPLandroid/database/AbstractWindowedCursor;->clearOrCreateWindow(Ljava/lang/String;)V
 HSPLandroid/database/AbstractWindowedCursor;->closeWindow()V
@@ -5075,47 +3713,68 @@
 HSPLandroid/database/AbstractWindowedCursor;->getWindow()Landroid/database/CursorWindow;
 HSPLandroid/database/AbstractWindowedCursor;->isNull(I)Z
 HSPLandroid/database/AbstractWindowedCursor;->onDeactivateOrClose()V
-HSPLandroid/database/BulkCursorDescriptor$1;-><init>()V
+HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V
 HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/BulkCursorDescriptor;
 HSPLandroid/database/BulkCursorDescriptor$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/database/BulkCursorDescriptor;-><init>()V
 HSPLandroid/database/BulkCursorDescriptor;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/database/BulkCursorDescriptor;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/database/BulkCursorNative;-><init>()V
 HSPLandroid/database/BulkCursorNative;->asBinder()Landroid/os/IBinder;
+HSPLandroid/database/BulkCursorNative;->asInterface(Landroid/os/IBinder;)Landroid/database/IBulkCursor;
 HSPLandroid/database/BulkCursorNative;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/database/BulkCursorProxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/database/BulkCursorProxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/database/BulkCursorProxy;->close()V
 HSPLandroid/database/BulkCursorProxy;->getWindow(I)Landroid/database/CursorWindow;
+HSPLandroid/database/BulkCursorToCursorAdaptor;-><init>()V
 HSPLandroid/database/BulkCursorToCursorAdaptor;->close()V
 HSPLandroid/database/BulkCursorToCursorAdaptor;->getColumnNames()[Ljava/lang/String;
 HSPLandroid/database/BulkCursorToCursorAdaptor;->getCount()I
+HSPLandroid/database/BulkCursorToCursorAdaptor;->getObserver()Landroid/database/IContentObserver;
+HSPLandroid/database/BulkCursorToCursorAdaptor;->initialize(Landroid/database/BulkCursorDescriptor;)V
 HSPLandroid/database/BulkCursorToCursorAdaptor;->onMove(II)Z
+HSPLandroid/database/BulkCursorToCursorAdaptor;->throwIfCursorIsClosed()V
+HSPLandroid/database/ContentObservable;-><init>()V
 HSPLandroid/database/ContentObservable;->dispatchChange(ZLandroid/net/Uri;)V
 HSPLandroid/database/ContentObservable;->registerObserver(Landroid/database/ContentObserver;)V
+HSPLandroid/database/ContentObserver$NotificationRunnable;-><init>(Landroid/database/ContentObserver;ZLandroid/net/Uri;I)V
 HSPLandroid/database/ContentObserver$NotificationRunnable;->run()V
+HSPLandroid/database/ContentObserver$Transport;-><init>(Landroid/database/ContentObserver;)V
 HSPLandroid/database/ContentObserver$Transport;->onChange(ZLandroid/net/Uri;I)V
+HSPLandroid/database/ContentObserver$Transport;->releaseContentObserver()V
 HSPLandroid/database/ContentObserver;-><init>(Landroid/os/Handler;)V
+HSPLandroid/database/ContentObserver;->access$000(Landroid/database/ContentObserver;ZLandroid/net/Uri;I)V
+HSPLandroid/database/ContentObserver;->dispatchChange(ZLandroid/net/Uri;)V
+HSPLandroid/database/ContentObserver;->dispatchChange(ZLandroid/net/Uri;I)V
 HSPLandroid/database/ContentObserver;->getContentObserver()Landroid/database/IContentObserver;
 HSPLandroid/database/ContentObserver;->onChange(Z)V
 HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLandroid/database/ContentObserver;->onChange(ZLandroid/net/Uri;I)V
 HSPLandroid/database/ContentObserver;->releaseContentObserver()Landroid/database/IContentObserver;
+HSPLandroid/database/CrossProcessCursorWrapper;-><init>(Landroid/database/Cursor;)V
 HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;-><init>(Landroid/database/IContentObserver;Landroid/os/IBinder$DeathRecipient;)V
-HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->onChange(ZLandroid/net/Uri;)V
+HSPLandroid/database/CursorToBulkCursorAdaptor$ContentObserverProxy;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;)Z
 HSPLandroid/database/CursorToBulkCursorAdaptor;-><init>(Landroid/database/Cursor;Landroid/database/IContentObserver;Ljava/lang/String;)V
 HSPLandroid/database/CursorToBulkCursorAdaptor;->close()V
+HSPLandroid/database/CursorToBulkCursorAdaptor;->closeFilledWindowLocked()V
 HSPLandroid/database/CursorToBulkCursorAdaptor;->createAndRegisterObserverProxyLocked(Landroid/database/IContentObserver;)V
+HSPLandroid/database/CursorToBulkCursorAdaptor;->disposeLocked()V
 HSPLandroid/database/CursorToBulkCursorAdaptor;->getBulkCursorDescriptor()Landroid/database/BulkCursorDescriptor;
 HSPLandroid/database/CursorToBulkCursorAdaptor;->getWindow(I)Landroid/database/CursorWindow;
 HSPLandroid/database/CursorToBulkCursorAdaptor;->throwIfCursorIsClosed()V
-HSPLandroid/database/CursorWindow$1;-><init>()V
+HSPLandroid/database/CursorToBulkCursorAdaptor;->unregisterObserverProxyLocked()V
 HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/database/CursorWindow$1;->newArray(I)[Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/database/CursorWindow;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/database/CursorWindow;-><init>(Landroid/os/Parcel;Landroid/database/CursorWindow$1;)V
+HSPLandroid/database/CursorWindow;-><init>(Ljava/lang/String;)V
 HSPLandroid/database/CursorWindow;-><init>(Ljava/lang/String;J)V
 HSPLandroid/database/CursorWindow;->allocRow()Z
 HSPLandroid/database/CursorWindow;->clear()V
+HSPLandroid/database/CursorWindow;->dispose()V
 HSPLandroid/database/CursorWindow;->finalize()V
 HSPLandroid/database/CursorWindow;->getBlob(II)[B
 HSPLandroid/database/CursorWindow;->getCursorWindowSize()I
@@ -5126,6 +3785,7 @@
 HSPLandroid/database/CursorWindow;->getStartPosition()I
 HSPLandroid/database/CursorWindow;->getString(II)Ljava/lang/String;
 HSPLandroid/database/CursorWindow;->getType(II)I
+HSPLandroid/database/CursorWindow;->newFromParcel(Landroid/os/Parcel;)Landroid/database/CursorWindow;
 HSPLandroid/database/CursorWindow;->onAllReferencesReleased()V
 HSPLandroid/database/CursorWindow;->putLong(JII)Z
 HSPLandroid/database/CursorWindow;->putNull(II)Z
@@ -5141,22 +3801,17 @@
 HSPLandroid/database/CursorWrapper;->getColumnCount()I
 HSPLandroid/database/CursorWrapper;->getColumnIndex(Ljava/lang/String;)I
 HSPLandroid/database/CursorWrapper;->getColumnIndexOrThrow(Ljava/lang/String;)I
-HSPLandroid/database/CursorWrapper;->getColumnName(I)Ljava/lang/String;
-HSPLandroid/database/CursorWrapper;->getColumnNames()[Ljava/lang/String;
 HSPLandroid/database/CursorWrapper;->getCount()I
 HSPLandroid/database/CursorWrapper;->getInt(I)I
 HSPLandroid/database/CursorWrapper;->getLong(I)J
-HSPLandroid/database/CursorWrapper;->getPosition()I
 HSPLandroid/database/CursorWrapper;->getString(I)Ljava/lang/String;
-HSPLandroid/database/CursorWrapper;->getType(I)I
+HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor;
 HSPLandroid/database/CursorWrapper;->isAfterLast()Z
-HSPLandroid/database/CursorWrapper;->isClosed()Z
 HSPLandroid/database/CursorWrapper;->isNull(I)Z
 HSPLandroid/database/CursorWrapper;->moveToFirst()Z
 HSPLandroid/database/CursorWrapper;->moveToNext()Z
 HSPLandroid/database/CursorWrapper;->moveToPosition(I)Z
 HSPLandroid/database/CursorWrapper;->registerContentObserver(Landroid/database/ContentObserver;)V
-HSPLandroid/database/CursorWrapper;->unregisterContentObserver(Landroid/database/ContentObserver;)V
 HSPLandroid/database/DataSetObservable;-><init>()V
 HSPLandroid/database/DataSetObservable;->notifyChanged()V
 HSPLandroid/database/DataSetObservable;->notifyInvalidated()V
@@ -5166,19 +3821,28 @@
 HSPLandroid/database/DatabaseUtils;->getSqlStatementType(Ljava/lang/String;)I
 HSPLandroid/database/DatabaseUtils;->getTypeOfObject(Ljava/lang/Object;)I
 HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)J
+HSPLandroid/database/DatabaseUtils;->longForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)J
+HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
+HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J
+HSPLandroid/database/DatabaseUtils;->readExceptionFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/database/DatabaseUtils;->readExceptionWithFileNotFoundExceptionFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/database/DatabaseUtils;->sqlEscapeString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/DefaultDatabaseErrorHandler;-><init>()V
+HSPLandroid/database/IContentObserver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/database/IContentObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/database/IContentObserver$Stub$Proxy;->onChange(ZLandroid/net/Uri;I)V
+HSPLandroid/database/IContentObserver$Stub;-><init>()V
 HSPLandroid/database/IContentObserver$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/database/IContentObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/database/IContentObserver;
 HSPLandroid/database/IContentObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/database/MatrixCursor$RowBuilder;-><init>(Landroid/database/MatrixCursor;I)V
+HSPLandroid/database/MatrixCursor$RowBuilder;->add(Ljava/lang/Object;)Landroid/database/MatrixCursor$RowBuilder;
 HSPLandroid/database/MatrixCursor;-><init>([Ljava/lang/String;)V
 HSPLandroid/database/MatrixCursor;-><init>([Ljava/lang/String;I)V
-HSPLandroid/database/MatrixCursor;->addRow(Ljava/lang/Iterable;)V
-HSPLandroid/database/MatrixCursor;->addRow(Ljava/util/ArrayList;I)V
+HSPLandroid/database/MatrixCursor;->access$000(Landroid/database/MatrixCursor;)I
+HSPLandroid/database/MatrixCursor;->access$100(Landroid/database/MatrixCursor;)[Ljava/lang/Object;
 HSPLandroid/database/MatrixCursor;->addRow([Ljava/lang/Object;)V
+HSPLandroid/database/MatrixCursor;->ensureCapacity(I)V
 HSPLandroid/database/MatrixCursor;->get(I)Ljava/lang/Object;
 HSPLandroid/database/MatrixCursor;->getColumnNames()[Ljava/lang/String;
 HSPLandroid/database/MatrixCursor;->getCount()I
@@ -5191,25 +3855,45 @@
 HSPLandroid/database/Observable;->registerObserver(Ljava/lang/Object;)V
 HSPLandroid/database/Observable;->unregisterAll()V
 HSPLandroid/database/Observable;->unregisterObserver(Ljava/lang/Object;)V
+HSPLandroid/database/SQLException;-><init>(Ljava/lang/String;)V
+HSPLandroid/database/sqlite/-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q;-><init>(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLandroid/database/sqlite/-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q;->get()Ljava/lang/Object;
+HSPLandroid/database/sqlite/DatabaseObjectNotClosedException;-><init>()V
+HSPLandroid/database/sqlite/SQLiteClosable;-><init>()V
 HSPLandroid/database/sqlite/SQLiteClosable;->acquireReference()V
 HSPLandroid/database/sqlite/SQLiteClosable;->close()V
 HSPLandroid/database/sqlite/SQLiteClosable;->releaseReference()V
+HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->getTruncateSize()J
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->init(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->initIfNeeded()V
-HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->reset()V
+HSPLandroid/database/sqlite/SQLiteCompatibilityWalFlags;->isLegacyCompatibilityWalEnabled()Z
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>()V
+HSPLandroid/database/sqlite/SQLiteConnection$Operation;-><init>(Landroid/database/sqlite/SQLiteConnection$1;)V
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->beginOperation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)I
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperation(I)V
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLog(I)Z
 HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->endOperationDeferLogLocked(I)Z
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->failOperation(ILjava/lang/Exception;)V
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->getOperationLocked(I)Landroid/database/sqlite/SQLiteConnection$Operation;
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->newOperationCookieLocked(I)I
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->setResult(J)V
+HSPLandroid/database/sqlite/SQLiteConnection$OperationLog;->setResult(Ljava/lang/String;)V
+HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatement;-><init>()V
+HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatement;-><init>(Landroid/database/sqlite/SQLiteConnection$1;)V
+HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;-><init>(Landroid/database/sqlite/SQLiteConnection;I)V
 HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroid/database/sqlite/SQLiteConnection$PreparedStatementCache;->entryRemoved(ZLjava/lang/String;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)V
+HSPLandroid/database/sqlite/SQLiteConnection;->access$100(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->access$400()[B
 HSPLandroid/database/sqlite/SQLiteConnection;->acquirePreparedStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
 HSPLandroid/database/sqlite/SQLiteConnection;->applyBlockGuardPolicy(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->attachCancellationSignal(Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->bindArguments(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;[Ljava/lang/Object;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->canonicalizeSyncMode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->checkDatabaseWiped()V
+HSPLandroid/database/sqlite/SQLiteConnection;->close()V
 HSPLandroid/database/sqlite/SQLiteConnection;->detachCancellationSignal(Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->dispose(Z)V
 HSPLandroid/database/sqlite/SQLiteConnection;->execute(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V
@@ -5219,43 +3903,67 @@
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)J
 HSPLandroid/database/sqlite/SQLiteConnection;->executeForString(Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteConnection;->finalize()V
+HSPLandroid/database/sqlite/SQLiteConnection;->finalizePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->getConnectionId()I
+HSPLandroid/database/sqlite/SQLiteConnection;->isCacheable(I)Z
+HSPLandroid/database/sqlite/SQLiteConnection;->isPreparedStatementInCache(Ljava/lang/String;)Z
+HSPLandroid/database/sqlite/SQLiteConnection;->isPrimaryConnection()Z
 HSPLandroid/database/sqlite/SQLiteConnection;->maybeTruncateWalFile()V
+HSPLandroid/database/sqlite/SQLiteConnection;->obtainPreparedStatement(Ljava/lang/String;JIIZ)Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
 HSPLandroid/database/sqlite/SQLiteConnection;->open()V
 HSPLandroid/database/sqlite/SQLiteConnection;->open(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/database/sqlite/SQLiteDatabaseConfiguration;IZ)Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnection;->prepare(Ljava/lang/String;Landroid/database/sqlite/SQLiteStatementInfo;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->reconfigure(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
+HSPLandroid/database/sqlite/SQLiteConnection;->recyclePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->releasePreparedStatement(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->setAutoCheckpointInterval()V
+HSPLandroid/database/sqlite/SQLiteConnection;->setCustomFunctionsFromConfiguration()V
 HSPLandroid/database/sqlite/SQLiteConnection;->setForeignKeyModeFromConfiguration()V
 HSPLandroid/database/sqlite/SQLiteConnection;->setJournalMode(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->setJournalSizeLimit()V
 HSPLandroid/database/sqlite/SQLiteConnection;->setLocaleFromConfiguration()V
+HSPLandroid/database/sqlite/SQLiteConnection;->setOnlyAllowReadOnlyOperations(Z)V
 HSPLandroid/database/sqlite/SQLiteConnection;->setPageSize()V
 HSPLandroid/database/sqlite/SQLiteConnection;->setSyncMode(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteConnection;->setWalModeFromConfiguration()V
 HSPLandroid/database/sqlite/SQLiteConnection;->throwIfStatementForbidden(Landroid/database/sqlite/SQLiteConnection$PreparedStatement;)V
-HSPLandroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;-><init>(Ljava/lang/String;I)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;-><init>(Landroid/database/sqlite/SQLiteConnectionPool$1;)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;Landroid/os/Looper;J)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionAcquired(Landroid/database/sqlite/SQLiteConnection;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionClosed(Landroid/database/sqlite/SQLiteConnection;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->connectionReleased(Landroid/database/sqlite/SQLiteConnection;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;-><init>(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->access$000(Landroid/database/sqlite/SQLiteConnectionPool;)Ljava/lang/Object;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->access$300(Landroid/database/sqlite/SQLiteConnectionPool;)Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->access$400(Landroid/database/sqlite/SQLiteConnectionPool;I)Z
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)Landroid/database/sqlite/SQLiteConnection;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->close()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableConnectionLocked(I)Z
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableConnectionsAndLogExceptionsLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableNonPrimaryConnectionsAndLogExceptions()V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeAvailableNonPrimaryConnectionsAndLogExceptionsLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeConnectionAndLogExceptionsLocked(Landroid/database/sqlite/SQLiteConnection;)V
-HSPLandroid/database/sqlite/SQLiteConnectionPool;->disableIdleConnectionHandler()V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->closeExcessConnectionsAndLogExceptionsLocked()V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->discardAcquiredConnectionsLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->dispose(Z)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->finalize()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->finishAcquireConnectionLocked(Landroid/database/sqlite/SQLiteConnection;I)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPath()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->getPriority(I)I
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->markAcquiredConnectionsLocked(Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->obtainConnectionWaiterLocked(Ljava/lang/Thread;JIZLjava/lang/String;I)Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->onStatementExecuted(J)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->open()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->open(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)Landroid/database/sqlite/SQLiteConnectionPool;
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->openConnectionLocked(Landroid/database/sqlite/SQLiteDatabaseConfiguration;Z)Landroid/database/sqlite/SQLiteConnection;
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->reconfigure(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->reconfigureAllConnectionsLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->recycleConnectionLocked(Landroid/database/sqlite/SQLiteConnection;Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;)Z
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->recycleConnectionWaiterLocked(Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->releaseConnection(Landroid/database/sqlite/SQLiteConnection;)V
+HSPLandroid/database/sqlite/SQLiteConnectionPool;->setMaxConnectionPoolSizeLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->setupIdleConnectionHandler(Landroid/os/Looper;J)V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->throwIfClosedLocked()V
 HSPLandroid/database/sqlite/SQLiteConnectionPool;->tryAcquireNonPrimaryConnectionLocked(Ljava/lang/String;I)Landroid/database/sqlite/SQLiteConnection;
@@ -5271,18 +3979,36 @@
 HSPLandroid/database/sqlite/SQLiteCursor;->getCount()I
 HSPLandroid/database/sqlite/SQLiteCursor;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteCursor;->onMove(II)Z
+HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z
 HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;-><init>()V
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->build()Landroid/database/sqlite/SQLiteDatabase$OpenParams;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->isWriteAheadLoggingEnabled()Z
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->removeOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setCursorFactory(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setErrorHandler(Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setIdleConnectionTimeout(J)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->setWriteAheadLoggingEnabled(Z)V
 HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;-><init>(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;-><init>(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$1;)V
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$000(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$100(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase$CursorFactory;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$200(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/DatabaseErrorHandler;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$300(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$400(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$500(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)J
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$600(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$700(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteDatabase;-><init>(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransaction(Landroid/database/sqlite/SQLiteTransactionListener;Z)V
+HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionWithListener(Landroid/database/sqlite/SQLiteTransactionListener;)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->compileStatement(Ljava/lang/String;)Landroid/database/sqlite/SQLiteStatement;
 HSPLandroid/database/sqlite/SQLiteDatabase;->createSession()Landroid/database/sqlite/SQLiteSession;
 HSPLandroid/database/sqlite/SQLiteDatabase;->delete(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)I
 HSPLandroid/database/sqlite/SQLiteDatabase;->disableWriteAheadLogging()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->dispose(Z)V
-HSPLandroid/database/sqlite/SQLiteDatabase;->dumpAll(Landroid/util/Printer;ZZ)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->enableWriteAheadLogging()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->endTransaction()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->execSQL(Ljava/lang/String;)V
@@ -5291,7 +4017,10 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->finalize()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->findEditTable(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteDatabase;->getActiveDatabases()Ljava/util/ArrayList;
+HSPLandroid/database/sqlite/SQLiteDatabase;->getDbStats()Ljava/util/ArrayList;
 HSPLandroid/database/sqlite/SQLiteDatabase;->getPath()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I
+HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession;
 HSPLandroid/database/sqlite/SQLiteDatabase;->getVersion()I
 HSPLandroid/database/sqlite/SQLiteDatabase;->inTransaction()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->insert(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
@@ -5300,9 +4029,11 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->isMainThread()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isOpen()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnly()Z
+HSPLandroid/database/sqlite/SQLiteDatabase;->isReadOnlyLocked()Z
+HSPLandroid/database/sqlite/SQLiteDatabase;->isWriteAheadLoggingEnabled()Z
 HSPLandroid/database/sqlite/SQLiteDatabase;->onAllReferencesReleased()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->open()V
-HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)Landroid/database/sqlite/SQLiteDatabase;
+HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/io/File;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteDatabase;->openDatabase(Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteDatabase;->openInner()V
@@ -5316,20 +4047,39 @@
 HSPLandroid/database/sqlite/SQLiteDatabase;->replace(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
 HSPLandroid/database/sqlite/SQLiteDatabase;->replaceOrThrow(Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentValues;)J
 HSPLandroid/database/sqlite/SQLiteDatabase;->setForeignKeyConstraintsEnabled(Z)V
-HSPLandroid/database/sqlite/SQLiteDatabase;->setPageSize(J)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->setTransactionSuccessful()V
+HSPLandroid/database/sqlite/SQLiteDatabase;->setVersion(I)V
 HSPLandroid/database/sqlite/SQLiteDatabase;->throwIfNotOpenLocked()V
 HSPLandroid/database/sqlite/SQLiteDatabase;->update(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;)I
 HSPLandroid/database/sqlite/SQLiteDatabase;->updateWithOnConflict(Ljava/lang/String;Landroid/content/ContentValues;Ljava/lang/String;[Ljava/lang/String;I)I
+HSPLandroid/database/sqlite/SQLiteDatabase;->validateSql(Ljava/lang/String;Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;-><init>(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
 HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;-><init>(Ljava/lang/String;I)V
+HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isInMemoryDb()Z
+HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->isLegacyCompatibilityWalEnabled()Z
+HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->stripPathForLogs(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteDatabaseConfiguration;->updateParametersFrom(Landroid/database/sqlite/SQLiteDatabaseConfiguration;)V
+HSPLandroid/database/sqlite/SQLiteDebug$NoPreloadHolder;-><clinit>()V
+HSPLandroid/database/sqlite/SQLiteDebug$NoPreloadHolder;->access$000()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteDebug$PagerStats;-><init>()V
 HSPLandroid/database/sqlite/SQLiteDebug;->getDatabaseInfo()Landroid/database/sqlite/SQLiteDebug$PagerStats;
+HSPLandroid/database/sqlite/SQLiteDebug;->shouldLogSlowQuery(J)Z
+HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->cursorClosed()V
 HSPLandroid/database/sqlite/SQLiteDirectCursorDriver;->query(Landroid/database/sqlite/SQLiteDatabase$CursorFactory;[Ljava/lang/String;)Landroid/database/Cursor;
+HSPLandroid/database/sqlite/SQLiteException;-><init>(Ljava/lang/String;)V
+HSPLandroid/database/sqlite/SQLiteGlobal;->checkDbWipe()Z
+HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultJournalMode()Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultPageSize()I
+HSPLandroid/database/sqlite/SQLiteGlobal;->getDefaultSyncMode()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteGlobal;->getJournalSizeLimit()I
+HSPLandroid/database/sqlite/SQLiteGlobal;->getWALAutoCheckpoint()I
+HSPLandroid/database/sqlite/SQLiteGlobal;->getWALConnectionPoolSize()I
+HSPLandroid/database/sqlite/SQLiteGlobal;->getWALSyncMode()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteGlobal;->getWALTruncateSize()J
 HSPLandroid/database/sqlite/SQLiteOpenHelper;-><init>(Landroid/content/Context;Ljava/lang/String;IILandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V
+HSPLandroid/database/sqlite/SQLiteOpenHelper;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;IILandroid/database/DatabaseErrorHandler;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;ILandroid/database/DatabaseErrorHandler;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->close()V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->getDatabaseLocked(Z)Landroid/database/sqlite/SQLiteDatabase;
@@ -5338,31 +4088,52 @@
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->getWritableDatabase()Landroid/database/sqlite/SQLiteDatabase;
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
+HSPLandroid/database/sqlite/SQLiteOpenHelper;->setFilePermissionsForDb(Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->setIdleConnectionTimeout(J)V
+HSPLandroid/database/sqlite/SQLiteOpenHelper;->setOpenParamsBuilder(Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;)V
 HSPLandroid/database/sqlite/SQLiteOpenHelper;->setWriteAheadLoggingEnabled(Z)V
 HSPLandroid/database/sqlite/SQLiteProgram;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteProgram;->bind(ILjava/lang/Object;)V
+HSPLandroid/database/sqlite/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteProgram;->bindBlob(I[B)V
-HSPLandroid/database/sqlite/SQLiteProgram;->bindDouble(ID)V
 HSPLandroid/database/sqlite/SQLiteProgram;->bindLong(IJ)V
+HSPLandroid/database/sqlite/SQLiteProgram;->bindNull(I)V
 HSPLandroid/database/sqlite/SQLiteProgram;->bindString(ILjava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteProgram;->clearBindings()V
+HSPLandroid/database/sqlite/SQLiteProgram;->getBindArgs()[Ljava/lang/Object;
+HSPLandroid/database/sqlite/SQLiteProgram;->getColumnNames()[Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteProgram;->getConnectionFlags()I
+HSPLandroid/database/sqlite/SQLiteProgram;->getDatabase()Landroid/database/sqlite/SQLiteDatabase;
+HSPLandroid/database/sqlite/SQLiteProgram;->getSession()Landroid/database/sqlite/SQLiteSession;
+HSPLandroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteProgram;->onAllReferencesReleased()V
+HSPLandroid/database/sqlite/SQLiteQuery;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Landroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteQuery;->fillWindow(Landroid/database/CursorWindow;IIZ)I
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;-><init>()V
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendClause(Ljava/lang/StringBuilder;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendColumns(Ljava/lang/StringBuilder;[Ljava/lang/String;)V
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendWhere(Ljava/lang/CharSequence;)V
-HSPLandroid/database/sqlite/SQLiteQueryBuilder;->appendWhereStandalone(Ljava/lang/CharSequence;)V
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQuery([Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->buildQueryString(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeProjection([Ljava/lang/String;)[Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjection(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeSingleProjectionOrThrow(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->computeWhere(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/database/sqlite/SQLiteQueryBuilder;->getTables()Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrict()Z
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictColumns()Z
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->isStrictGrammar()Z
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->maybeWithOperator(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setDistinct(Z)V
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setProjectionMap(Ljava/util/Map;)V
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setStrict(Z)V
 HSPLandroid/database/sqlite/SQLiteQueryBuilder;->setTables(Ljava/lang/String;)V
+HSPLandroid/database/sqlite/SQLiteQueryBuilder;->wrap(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/database/sqlite/SQLiteSession$Transaction;-><init>()V
+HSPLandroid/database/sqlite/SQLiteSession$Transaction;-><init>(Landroid/database/sqlite/SQLiteSession$1;)V
+HSPLandroid/database/sqlite/SQLiteSession;-><init>(Landroid/database/sqlite/SQLiteConnectionPool;)V
+HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteSession;->beginTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteSession;->beginTransactionUnchecked(ILandroid/database/sqlite/SQLiteTransactionListener;ILandroid/os/CancellationSignal;)V
 HSPLandroid/database/sqlite/SQLiteSession;->endTransaction(Landroid/os/CancellationSignal;)V
@@ -5373,178 +4144,177 @@
 HSPLandroid/database/sqlite/SQLiteSession;->executeForLastInsertedRowId(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J
 HSPLandroid/database/sqlite/SQLiteSession;->executeForLong(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)J
 HSPLandroid/database/sqlite/SQLiteSession;->executeSpecial(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Z
+HSPLandroid/database/sqlite/SQLiteSession;->hasTransaction()Z
+HSPLandroid/database/sqlite/SQLiteSession;->obtainTransaction(ILandroid/database/sqlite/SQLiteTransactionListener;)Landroid/database/sqlite/SQLiteSession$Transaction;
 HSPLandroid/database/sqlite/SQLiteSession;->prepare(Ljava/lang/String;ILandroid/os/CancellationSignal;Landroid/database/sqlite/SQLiteStatementInfo;)V
+HSPLandroid/database/sqlite/SQLiteSession;->recycleTransaction(Landroid/database/sqlite/SQLiteSession$Transaction;)V
 HSPLandroid/database/sqlite/SQLiteSession;->releaseConnection()V
 HSPLandroid/database/sqlite/SQLiteSession;->setTransactionSuccessful()V
+HSPLandroid/database/sqlite/SQLiteSession;->throwIfNoTransaction()V
+HSPLandroid/database/sqlite/SQLiteSession;->throwIfTransactionMarkedSuccessful()V
+HSPLandroid/database/sqlite/SQLiteStatement;-><init>(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/Object;)V
 HSPLandroid/database/sqlite/SQLiteStatement;->execute()V
 HSPLandroid/database/sqlite/SQLiteStatement;->executeInsert()J
 HSPLandroid/database/sqlite/SQLiteStatement;->executeUpdateDelete()I
 HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForLong()J
-PLandroid/database/sqlite/SqliteWrapper;->query(Landroid/content/Context;Landroid/content/ContentResolver;Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
-HSPLandroid/ddm/DdmHandleAppName;-><init>()V
-HSPLandroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;I)V
-HSPLandroid/ddm/DdmHandleExit;-><init>()V
+HSPLandroid/database/sqlite/SQLiteStatementInfo;-><init>()V
+HSPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/ddm/DdmHandleAppName$Names;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/ddm/DdmHandleAppName$1;)V
+HSPLandroid/ddm/DdmHandleAppName$Names;->getAppName()Ljava/lang/String;
+HSPLandroid/ddm/DdmHandleAppName$Names;->getPkgName()Ljava/lang/String;
+HSPLandroid/ddm/DdmHandleAppName;->getNames()Landroid/ddm/DdmHandleAppName$Names;
+HSPLandroid/ddm/DdmHandleAppName;->sendAPNM(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;I)V
+HSPLandroid/ddm/DdmHandleAppName;->setAppName(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLandroid/ddm/DdmHandleExit;->connected()V
-HSPLandroid/ddm/DdmHandleExit;->disconnected()V
-HSPLandroid/ddm/DdmHandleHeap;-><init>()V
 HSPLandroid/ddm/DdmHandleHeap;->connected()V
-HSPLandroid/ddm/DdmHandleHeap;->disconnected()V
 HSPLandroid/ddm/DdmHandleHeap;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
-HSPLandroid/ddm/DdmHandleHeap;->register()V
-HSPLandroid/ddm/DdmHandleHello;-><init>()V
+HSPLandroid/ddm/DdmHandleHeap;->handleHPIF(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
+HSPLandroid/ddm/DdmHandleHeap;->handleREAQ(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
 HSPLandroid/ddm/DdmHandleHello;->connected()V
-HSPLandroid/ddm/DdmHandleHello;->disconnected()V
 HSPLandroid/ddm/DdmHandleHello;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
 HSPLandroid/ddm/DdmHandleHello;->handleFEAT(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
 HSPLandroid/ddm/DdmHandleHello;->handleHELO(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
-HSPLandroid/ddm/DdmHandleNativeHeap;-><init>()V
 HSPLandroid/ddm/DdmHandleNativeHeap;->connected()V
-HSPLandroid/ddm/DdmHandleNativeHeap;->disconnected()V
-HSPLandroid/ddm/DdmHandleProfiling;-><init>()V
 HSPLandroid/ddm/DdmHandleProfiling;->connected()V
-HSPLandroid/ddm/DdmHandleProfiling;->disconnected()V
 HSPLandroid/ddm/DdmHandleProfiling;->handleChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
-HSPLandroid/ddm/DdmHandleProfiling;->register()V
-HSPLandroid/ddm/DdmHandleThread;-><init>()V
+HSPLandroid/ddm/DdmHandleProfiling;->handleMPRQ(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Lorg/apache/harmony/dalvik/ddmc/Chunk;
 HSPLandroid/ddm/DdmHandleThread;->connected()V
-HSPLandroid/ddm/DdmHandleThread;->disconnected()V
-HSPLandroid/ddm/DdmHandleViewDebug;-><init>()V
 HSPLandroid/ddm/DdmHandleViewDebug;->connected()V
-HSPLandroid/ddm/DdmHandleViewDebug;->disconnected()V
-HSPLandroid/ddm/DdmRegister;->registerHandlers()V
-HSPLandroid/debug/IAdbManager$Stub;-><init>()V
-HSPLandroid/debug/IAdbTransport$Stub;-><init>()V
-HSPLandroid/debug/IAdbTransport$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/graphics/-$$Lambda$ColorSpace$BNp-1CyCzsQzfE-Ads9uc4rJDfw;-><init>()V
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$8EkhO2jIf14tuA3BvrmYJMa7YXM;-><init>(Landroid/graphics/ColorSpace$Rgb;)V
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$CqKld6797g7__JnuY0NeFz5q4_E;-><init>(D)V
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$ZvS77aTfobOSa2o9MTqYMph4Rcg;-><init>(D)V
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$b9VGKuNnse0bbguR9jbOM_wK2Ac;->applyAsDouble(D)D
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$bWzafC8vMHNuVmRuTUPEFUMlfuY;->applyAsDouble(D)D
-HSPLandroid/graphics/-$$Lambda$ColorSpace$S2rlqJvkXGTpUF6mZhvkElds8JE;-><init>()V
+HSPLandroid/graphics/BaseCanvas;-><init>()V
+HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawColor(I)V
+HSPLandroid/graphics/BaseCanvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/BaseCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseCanvas;->throwIfHasHwBitmapInSwMode(Landroid/graphics/Shader;)V
+HSPLandroid/graphics/BaseCanvas;->throwIfHwBitmapInSwMode(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/BaseRecordingCanvas;-><init>(J)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawArc(Landroid/graphics/RectF;FFZLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawCircle(FFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawColor(I)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawLine(FFFFLandroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(FFFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawPaint(Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawPatch(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(FFFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
+HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawText([CIIFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun(Ljava/lang/CharSequence;IIIIFFZLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawTextRun([CIIIIFFZLandroid/graphics/Paint;)V
-HSPLandroid/graphics/Bitmap$1;-><init>()V
 HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/graphics/Bitmap$CompressFormat;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/Bitmap$CompressFormat;->valueOf(Ljava/lang/String;)Landroid/graphics/Bitmap$CompressFormat;
-HSPLandroid/graphics/Bitmap$CompressFormat;->values()[Landroid/graphics/Bitmap$CompressFormat;
-HSPLandroid/graphics/Bitmap$Config;-><init>(Ljava/lang/String;II)V
 HSPLandroid/graphics/Bitmap$Config;->nativeToConfig(I)Landroid/graphics/Bitmap$Config;
 HSPLandroid/graphics/Bitmap$Config;->values()[Landroid/graphics/Bitmap$Config;
 HSPLandroid/graphics/Bitmap;-><init>(JIIIZ[BLandroid/graphics/NinePatch$InsetStruct;Z)V
+HSPLandroid/graphics/Bitmap;->access$000(Landroid/os/Parcel;)Landroid/graphics/Bitmap;
+HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V
 HSPLandroid/graphics/Bitmap;->checkPixelAccess(II)V
 HSPLandroid/graphics/Bitmap;->checkPixelsAccess(IIIIII[I)V
+HSPLandroid/graphics/Bitmap;->checkRecycled(Ljava/lang/String;)V
 HSPLandroid/graphics/Bitmap;->checkWidthHeight(II)V
 HSPLandroid/graphics/Bitmap;->checkXYSign(II)V
 HSPLandroid/graphics/Bitmap;->compress(Landroid/graphics/Bitmap$CompressFormat;ILjava/io/OutputStream;)Z
 HSPLandroid/graphics/Bitmap;->copy(Landroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
-HPLandroid/graphics/Bitmap;->createAshmemBitmap(Landroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
+HSPLandroid/graphics/Bitmap;->createBitmap(IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIIILandroid/graphics/Matrix;Z)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
+HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;Z)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/util/DisplayMetrics;IILandroid/graphics/Bitmap$Config;ZLandroid/graphics/ColorSpace;)Landroid/graphics/Bitmap;
-HPLandroid/graphics/Bitmap;->createGraphicBufferHandle()Landroid/graphics/GraphicBuffer;
 HSPLandroid/graphics/Bitmap;->createScaledBitmap(Landroid/graphics/Bitmap;IIZ)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->eraseColor(I)V
 HSPLandroid/graphics/Bitmap;->getAllocationByteCount()I
 HSPLandroid/graphics/Bitmap;->getByteCount()I
 HSPLandroid/graphics/Bitmap;->getColorSpace()Landroid/graphics/ColorSpace;
 HSPLandroid/graphics/Bitmap;->getConfig()Landroid/graphics/Bitmap$Config;
+HSPLandroid/graphics/Bitmap;->getDefaultDensity()I
 HSPLandroid/graphics/Bitmap;->getHeight()I
-HSPLandroid/graphics/Bitmap;->getPixel(II)I
+HSPLandroid/graphics/Bitmap;->getNativeInstance()J
+HSPLandroid/graphics/Bitmap;->getNinePatchChunk()[B
+HSPLandroid/graphics/Bitmap;->getNinePatchInsets()Landroid/graphics/NinePatch$InsetStruct;
+HSPLandroid/graphics/Bitmap;->getOpticalInsets(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/Bitmap;->getPixels([IIIIIII)V
+HSPLandroid/graphics/Bitmap;->getRowBytes()I
 HSPLandroid/graphics/Bitmap;->getScaledHeight(I)I
 HSPLandroid/graphics/Bitmap;->getScaledWidth(I)I
 HSPLandroid/graphics/Bitmap;->getWidth()I
 HSPLandroid/graphics/Bitmap;->hasAlpha()Z
+HSPLandroid/graphics/Bitmap;->hasMipMap()Z
 HSPLandroid/graphics/Bitmap;->isMutable()Z
+HSPLandroid/graphics/Bitmap;->isPremultiplied()Z
 HSPLandroid/graphics/Bitmap;->isRecycled()Z
+HSPLandroid/graphics/Bitmap;->noteHardwareBitmapSlowCall()V
 HSPLandroid/graphics/Bitmap;->prepareToDraw()V
-HSPLandroid/graphics/Bitmap;->reconfigure(IILandroid/graphics/Bitmap$Config;)V
 HSPLandroid/graphics/Bitmap;->recycle()V
 HSPLandroid/graphics/Bitmap;->reinit(IIZ)V
-HSPLandroid/graphics/Bitmap;->sameAs(Landroid/graphics/Bitmap;)Z
 HSPLandroid/graphics/Bitmap;->scaleFromDensity(III)I
+HSPLandroid/graphics/Bitmap;->setDefaultDensity(I)V
 HSPLandroid/graphics/Bitmap;->setDensity(I)V
 HSPLandroid/graphics/Bitmap;->setHasAlpha(Z)V
+HSPLandroid/graphics/Bitmap;->setHasMipMap(Z)V
 HSPLandroid/graphics/Bitmap;->setPremultiplied(Z)V
+HSPLandroid/graphics/Bitmap;->wrapHardwareBuffer(Landroid/graphics/GraphicBuffer;Landroid/graphics/ColorSpace;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->wrapHardwareBuffer(Landroid/hardware/HardwareBuffer;Landroid/graphics/ColorSpace;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/Bitmap;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/graphics/BitmapFactory$Options;-><init>()V
+HSPLandroid/graphics/BitmapFactory$Options;->nativeColorSpace(Landroid/graphics/BitmapFactory$Options;)J
+HSPLandroid/graphics/BitmapFactory$Options;->nativeInBitmap(Landroid/graphics/BitmapFactory$Options;)J
 HSPLandroid/graphics/BitmapFactory$Options;->validate(Landroid/graphics/BitmapFactory$Options;)V
 HSPLandroid/graphics/BitmapFactory;->decodeByteArray([BIILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/BitmapFactory;->decodeFile(Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;I)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->decodeResource(Landroid/content/res/Resources;ILandroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->decodeResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->decodeStream(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
+HSPLandroid/graphics/BitmapFactory;->decodeStreamInternal(Ljava/io/InputStream;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/BitmapFactory;->setDensityFromOptions(Landroid/graphics/Bitmap;Landroid/graphics/BitmapFactory$Options;)V
 HSPLandroid/graphics/BitmapShader;-><init>(Landroid/graphics/Bitmap;II)V
 HSPLandroid/graphics/BitmapShader;-><init>(Landroid/graphics/Bitmap;Landroid/graphics/Shader$TileMode;Landroid/graphics/Shader$TileMode;)V
 HSPLandroid/graphics/BitmapShader;->createNativeInstance(J)J
-HSPLandroid/graphics/BlendMode;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/BlendMode;->values()[Landroid/graphics/BlendMode;
-HSPLandroid/graphics/BlurMaskFilter$Blur;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/BlurMaskFilter;-><init>(FLandroid/graphics/BlurMaskFilter$Blur;)V
-HSPLandroid/graphics/Canvas$EdgeType;-><init>(Ljava/lang/String;II)V
+HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode;
+HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode;
+HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode;
+HSPLandroid/graphics/BlendMode;->toValue(Landroid/graphics/BlendMode;)I
+HSPLandroid/graphics/BlendModeColorFilter;-><init>(ILandroid/graphics/BlendMode;)V
+HSPLandroid/graphics/BlendModeColorFilter;->createNativeInstance()J
+HSPLandroid/graphics/BlendModeColorFilter;->getColor()I
+HSPLandroid/graphics/BlendModeColorFilter;->getMode()Landroid/graphics/BlendMode;
 HSPLandroid/graphics/Canvas;-><init>()V
 HSPLandroid/graphics/Canvas;-><init>(J)V
 HSPLandroid/graphics/Canvas;-><init>(Landroid/graphics/Bitmap;)V
-HSPLandroid/graphics/Canvas;->access$000()J
 HSPLandroid/graphics/Canvas;->checkValidClipOp(Landroid/graphics/Region$Op;)V
-HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;)Z
+HSPLandroid/graphics/Canvas;->checkValidSaveFlags(I)V
 HSPLandroid/graphics/Canvas;->clipPath(Landroid/graphics/Path;Landroid/graphics/Region$Op;)Z
 HSPLandroid/graphics/Canvas;->clipRect(FFFF)Z
 HSPLandroid/graphics/Canvas;->clipRect(IIII)Z
 HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/Canvas;->clipRect(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z
 HSPLandroid/graphics/Canvas;->concat(Landroid/graphics/Matrix;)V
-HSPLandroid/graphics/Canvas;->drawARGB(IIII)V
 HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawCircle(FFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawColor(I)V
 HSPLandroid/graphics/Canvas;->drawColor(ILandroid/graphics/PorterDuff$Mode;)V
-HSPLandroid/graphics/Canvas;->drawOval(FFFFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/Canvas;->drawOval(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawPath(Landroid/graphics/Path;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawRect(FFFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawRect(Landroid/graphics/Rect;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/Canvas;->drawRect(Landroid/graphics/RectF;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawRoundRect(Landroid/graphics/RectF;FFLandroid/graphics/Paint;)V
 HSPLandroid/graphics/Canvas;->drawText(Ljava/lang/CharSequence;IIFFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/Canvas;->drawText(Ljava/lang/String;FFLandroid/graphics/Paint;)V
+PLandroid/graphics/Canvas;->freeCaches()V
+HSPLandroid/graphics/Canvas;->freeTextLayoutCaches()V
 HSPLandroid/graphics/Canvas;->getClipBounds(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Canvas;->getDensity()I
 HSPLandroid/graphics/Canvas;->getHeight()I
@@ -5554,8 +4324,8 @@
 HSPLandroid/graphics/Canvas;->insertInorderBarrier()V
 HSPLandroid/graphics/Canvas;->insertReorderBarrier()V
 HSPLandroid/graphics/Canvas;->isHardwareAccelerated()Z
-HSPLandroid/graphics/Canvas;->isOpaque()Z
 HSPLandroid/graphics/Canvas;->isRecordingFor(Ljava/lang/Object;)Z
+HSPLandroid/graphics/Canvas;->quickReject(FFFF)Z
 HSPLandroid/graphics/Canvas;->quickReject(FFFFLandroid/graphics/Canvas$EdgeType;)Z
 HSPLandroid/graphics/Canvas;->restore()V
 HSPLandroid/graphics/Canvas;->restoreToCount(I)V
@@ -5563,27 +4333,27 @@
 HSPLandroid/graphics/Canvas;->rotate(FFF)V
 HSPLandroid/graphics/Canvas;->save()I
 HSPLandroid/graphics/Canvas;->save(I)I
-HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFI)I
-HSPLandroid/graphics/Canvas;->saveLayerAlpha(FFFFII)I
 HSPLandroid/graphics/Canvas;->scale(FF)V
 HSPLandroid/graphics/Canvas;->scale(FFFF)V
 HSPLandroid/graphics/Canvas;->setBitmap(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/Canvas;->setCompatibilityVersion(I)V
-HSPLandroid/graphics/Canvas;->setDensity(I)V
 HSPLandroid/graphics/Canvas;->setDrawFilter(Landroid/graphics/DrawFilter;)V
-HSPLandroid/graphics/Canvas;->setScreenDensity(I)V
 HSPLandroid/graphics/Canvas;->translate(FF)V
+HSPLandroid/graphics/CanvasProperty;-><init>(J)V
+HSPLandroid/graphics/CanvasProperty;->createFloat(F)Landroid/graphics/CanvasProperty;
+HSPLandroid/graphics/CanvasProperty;->createPaint(Landroid/graphics/Paint;)Landroid/graphics/CanvasProperty;
 HSPLandroid/graphics/CanvasProperty;->getNativeContainer()J
-HSPLandroid/graphics/Color;->HSVToColor([F)I
+HSPLandroid/graphics/Color;-><init>(FFFFLandroid/graphics/ColorSpace;)V
 HSPLandroid/graphics/Color;->alpha(I)I
 HSPLandroid/graphics/Color;->alpha(J)F
 HSPLandroid/graphics/Color;->argb(IIII)I
 HSPLandroid/graphics/Color;->blue(I)I
 HSPLandroid/graphics/Color;->blue(J)F
-HSPLandroid/graphics/Color;->colorToHSV(I[F)V
+HSPLandroid/graphics/Color;->colorSpace(J)Landroid/graphics/ColorSpace;
 HSPLandroid/graphics/Color;->green(I)I
 HSPLandroid/graphics/Color;->green(J)F
 HSPLandroid/graphics/Color;->pack(FFFFLandroid/graphics/ColorSpace;)J
+HSPLandroid/graphics/Color;->pack(I)J
 HSPLandroid/graphics/Color;->parseColor(Ljava/lang/String;)I
 HSPLandroid/graphics/Color;->red(I)I
 HSPLandroid/graphics/Color;->red(J)F
@@ -5591,61 +4361,20 @@
 HSPLandroid/graphics/Color;->toArgb()I
 HSPLandroid/graphics/Color;->toArgb(J)I
 HSPLandroid/graphics/Color;->valueOf(I)Landroid/graphics/Color;
-HSPLandroid/graphics/ColorFilter;->access$000()J
+HSPLandroid/graphics/ColorFilter;-><init>()V
 HSPLandroid/graphics/ColorFilter;->getNativeInstance()J
 HSPLandroid/graphics/ColorMatrix;-><init>()V
-HSPLandroid/graphics/ColorMatrix;-><init>([F)V
 HSPLandroid/graphics/ColorMatrix;->reset()V
-HSPLandroid/graphics/ColorMatrix;->set(Landroid/graphics/ColorMatrix;)V
-HSPLandroid/graphics/ColorMatrixColorFilter;-><init>(Landroid/graphics/ColorMatrix;)V
-HSPLandroid/graphics/ColorMatrixColorFilter;->createNativeInstance()J
-HSPLandroid/graphics/ColorSpace$Adaptation;-><init>(Ljava/lang/String;I[F)V
-HSPLandroid/graphics/ColorSpace$Lab;-><init>(Ljava/lang/String;ILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace$Model;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/ColorSpace$Named;-><init>(Ljava/lang/String;I)V
 HSPLandroid/graphics/ColorSpace$Named;->values()[Landroid/graphics/ColorSpace$Named;
-HSPLandroid/graphics/ColorSpace$Rgb$TransferParameters;-><init>(DDDDD)V
-HSPLandroid/graphics/ColorSpace$Rgb$TransferParameters;-><init>(DDDDDDD)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FDFFI)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FDFFILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;I)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[FLandroid/graphics/ColorSpace$Rgb$TransferParameters;ILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FFLandroid/graphics/ColorSpace$Rgb$TransferParameters;I)V
-HSPLandroid/graphics/ColorSpace$Rgb;-><init>(Ljava/lang/String;[F[F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FFLandroid/graphics/ColorSpace$Rgb$TransferParameters;ILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace$Rgb;->access$1400()J
-HSPLandroid/graphics/ColorSpace$Rgb;->area([F)F
-HSPLandroid/graphics/ColorSpace$Rgb;->computeXYZMatrix([F[F)[F
-HSPLandroid/graphics/ColorSpace$Rgb;->contains([F[F)Z
+HSPLandroid/graphics/ColorSpace$Rgb$TransferParameters;->hashCode()I
 HSPLandroid/graphics/ColorSpace$Rgb;->getNativeInstance()J
+HSPLandroid/graphics/ColorSpace$Rgb;->getTransferParameters()Landroid/graphics/ColorSpace$Rgb$TransferParameters;
+HSPLandroid/graphics/ColorSpace$Rgb;->hashCode()I
 HSPLandroid/graphics/ColorSpace$Rgb;->isSrgb()Z
-HSPLandroid/graphics/ColorSpace$Rgb;->isSrgb([F[FLjava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;FFI)Z
-HSPLandroid/graphics/ColorSpace$Rgb;->isWideGamut([FFF)Z
-HSPLandroid/graphics/ColorSpace$Rgb;->xyPrimaries([F)[F
-HSPLandroid/graphics/ColorSpace$Rgb;->xyWhitePoint([F)[F
-HSPLandroid/graphics/ColorSpace$Xyz;-><init>(Ljava/lang/String;ILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace;-><init>(Ljava/lang/String;Landroid/graphics/ColorSpace$Model;I)V
-HSPLandroid/graphics/ColorSpace;-><init>(Ljava/lang/String;Landroid/graphics/ColorSpace$Model;ILandroid/graphics/ColorSpace$1;)V
-HSPLandroid/graphics/ColorSpace;->access$1200([F)[F
-HSPLandroid/graphics/ColorSpace;->access$1300([F[F)[F
-HSPLandroid/graphics/ColorSpace;->chromaticAdaptation([F[F[F)[F
-HSPLandroid/graphics/ColorSpace;->compare([F[F)Z
 HSPLandroid/graphics/ColorSpace;->get(I)Landroid/graphics/ColorSpace;
 HSPLandroid/graphics/ColorSpace;->get(Landroid/graphics/ColorSpace$Named;)Landroid/graphics/ColorSpace;
-HSPLandroid/graphics/ColorSpace;->getId()I
-HSPLandroid/graphics/ColorSpace;->inverse3x3([F)[F
-HSPLandroid/graphics/ColorSpace;->mul3x3([F[F)[F
-HSPLandroid/graphics/ColorSpace;->mul3x3Diag([F[F)[F
-HSPLandroid/graphics/ColorSpace;->mul3x3Float3([F[F)[F
-HSPLandroid/graphics/ColorSpace;->rcpResponse(DDDDDD)D
-HSPLandroid/graphics/ColorSpace;->response(DDDDDD)D
-HSPLandroid/graphics/FontFamily;-><init>()V
-HSPLandroid/graphics/FontFamily;->addFontFromBuffer(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;II)Z
-HSPLandroid/graphics/FontFamily;->freeze()Z
-HSPLandroid/graphics/FontListParser;->parse(Ljava/io/InputStream;Ljava/lang/String;)Landroid/text/FontConfig;
-HSPLandroid/graphics/FontListParser;->readAlias(Lorg/xmlpull/v1/XmlPullParser;)Landroid/text/FontConfig$Alias;
-HSPLandroid/graphics/FontListParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/text/FontConfig;
-HSPLandroid/graphics/FontListParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/text/FontConfig$Family;
-HSPLandroid/graphics/FontListParser;->readFont(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/text/FontConfig$Font;
+HSPLandroid/graphics/ColorSpace;->hashCode()I
+HSPLandroid/graphics/DrawFilter;-><init>()V
 HSPLandroid/graphics/FrameInfo;-><init>()V
 HSPLandroid/graphics/FrameInfo;->addFlags(J)V
 HSPLandroid/graphics/FrameInfo;->markAnimationsStart()V
@@ -5654,32 +4383,31 @@
 HSPLandroid/graphics/FrameInfo;->markPerformTraversalsStart()V
 HSPLandroid/graphics/FrameInfo;->setVsync(JJ)V
 HSPLandroid/graphics/FrameInfo;->updateInputEventTime(JJ)V
-HSPLandroid/graphics/GraphicBuffer$1;-><init>()V
-HPLandroid/graphics/GraphicBuffer;-><init>(IIIIJ)V
-HSPLandroid/graphics/GraphicBuffer;->createFromExisting(IIIIJ)Landroid/graphics/GraphicBuffer;
+HSPLandroid/graphics/GraphicBuffer;-><init>(IIIIJ)V
 HSPLandroid/graphics/GraphicBuffer;->finalize()V
-HPLandroid/graphics/GraphicBuffer;->getFormat()I
-HPLandroid/graphics/GraphicBuffer;->getHeight()I
-HPLandroid/graphics/GraphicBuffer;->getWidth()I
-HPLandroid/graphics/GraphicBuffer;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/graphics/HardwareRenderer$DestroyContextRunnable;-><init>(J)V
 HSPLandroid/graphics/HardwareRenderer$DestroyContextRunnable;->run()V
-HSPLandroid/graphics/HardwareRenderer$ProcessInitializer$1;->onRotateGraphicsStatsBuffer()V
-HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;-><init>()V
+HSPLandroid/graphics/HardwareRenderer$FrameRenderRequest;-><init>(Landroid/graphics/HardwareRenderer;)V
+HSPLandroid/graphics/HardwareRenderer$FrameRenderRequest;-><init>(Landroid/graphics/HardwareRenderer;Landroid/graphics/HardwareRenderer$1;)V
 HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->init(J)V
 HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->initGraphicsStats()V
 HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->initSched(J)V
 HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->requestBuffer()V
 HSPLandroid/graphics/HardwareRenderer$ProcessInitializer;->setPackageName(Ljava/lang/String;)V
 HSPLandroid/graphics/HardwareRenderer;-><init>()V
+HSPLandroid/graphics/HardwareRenderer;->access$300(J)V
+HSPLandroid/graphics/HardwareRenderer;->access$500(J)I
+HSPLandroid/graphics/HardwareRenderer;->access$700(I)V
 HSPLandroid/graphics/HardwareRenderer;->allocateBuffers()V
 HSPLandroid/graphics/HardwareRenderer;->clearContent()V
-HPLandroid/graphics/HardwareRenderer;->createHardwareBitmap(Landroid/graphics/RenderNode;II)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/HardwareRenderer;->destroy()V
+HSPLandroid/graphics/HardwareRenderer;->isWideGamut()Z
 HSPLandroid/graphics/HardwareRenderer;->loadSystemProperties()Z
 HSPLandroid/graphics/HardwareRenderer;->notifyFramePending()V
 HSPLandroid/graphics/HardwareRenderer;->pause()Z
 HSPLandroid/graphics/HardwareRenderer;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
 HSPLandroid/graphics/HardwareRenderer;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
+HSPLandroid/graphics/HardwareRenderer;->setDebuggingEnabled(Z)V
 HSPLandroid/graphics/HardwareRenderer;->setFPSDivisor(I)V
 HSPLandroid/graphics/HardwareRenderer;->setForceDark(Z)Z
 HSPLandroid/graphics/HardwareRenderer;->setFrameCompleteCallback(Landroid/graphics/HardwareRenderer$FrameCompleteCallback;)V
@@ -5691,29 +4419,41 @@
 HSPLandroid/graphics/HardwareRenderer;->setPackageName(Ljava/lang/String;)V
 HSPLandroid/graphics/HardwareRenderer;->setStopped(Z)V
 HSPLandroid/graphics/HardwareRenderer;->setSurface(Landroid/view/Surface;)V
+HSPLandroid/graphics/HardwareRenderer;->setSurface(Landroid/view/Surface;Z)V
 HSPLandroid/graphics/HardwareRenderer;->setWideGamut(Z)V
+HSPLandroid/graphics/HardwareRenderer;->setupDiskCache(Ljava/io/File;)V
 HSPLandroid/graphics/HardwareRenderer;->syncAndDrawFrame(Landroid/graphics/FrameInfo;)I
 HSPLandroid/graphics/HardwareRenderer;->trimMemory(I)V
 HSPLandroid/graphics/HardwareRenderer;->validateAlpha(FLjava/lang/String;)V
 HSPLandroid/graphics/HardwareRenderer;->validateFinite(FLjava/lang/String;)V
 HSPLandroid/graphics/HardwareRenderer;->validatePositive(FLjava/lang/String;)V
 HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;-><init>(Landroid/content/res/AssetManager$AssetInputStream;Landroid/content/res/Resources;Landroid/util/TypedValue;)V
-HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;->createImageDecoder(Z)Landroid/graphics/ImageDecoder;
 HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;->getDensity()I
 HSPLandroid/graphics/ImageDecoder$AssetInputStreamSource;->getResources()Landroid/content/res/Resources;
-HSPLandroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder()Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder$ImageInfo;-><init>(Landroid/graphics/ImageDecoder;)V
+HSPLandroid/graphics/ImageDecoder$ImageInfo;-><init>(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$1;)V
+HSPLandroid/graphics/ImageDecoder$ImageInfo;->access$1302(Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder;)Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder$InputStreamSource;-><init>(Landroid/content/res/Resources;Ljava/io/InputStream;I)V
+HSPLandroid/graphics/ImageDecoder$InputStreamSource;->createImageDecoder(Z)Landroid/graphics/ImageDecoder;
 HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getDensity()I
 HSPLandroid/graphics/ImageDecoder$InputStreamSource;->getResources()Landroid/content/res/Resources;
-HSPLandroid/graphics/ImageDecoder;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+HSPLandroid/graphics/ImageDecoder$Source;-><init>()V
+HSPLandroid/graphics/ImageDecoder$Source;-><init>(Landroid/graphics/ImageDecoder$1;)V
+HSPLandroid/graphics/ImageDecoder$Source;->computeDstDensity()I
 HSPLandroid/graphics/ImageDecoder;-><init>(JIIZZ)V
+HSPLandroid/graphics/ImageDecoder;->access$300(Ljava/io/InputStream;ZZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder;->access$500(Landroid/content/res/AssetManager$AssetInputStream;ZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder;->access$700(Landroid/graphics/ImageDecoder;)I
+HSPLandroid/graphics/ImageDecoder;->access$800(Landroid/graphics/ImageDecoder;)I
 HSPLandroid/graphics/ImageDecoder;->callHeaderDecoded(Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;Landroid/graphics/ImageDecoder$Source;)V
+HSPLandroid/graphics/ImageDecoder;->checkForExtended()Z
 HSPLandroid/graphics/ImageDecoder;->checkState(Z)V
 HSPLandroid/graphics/ImageDecoder;->checkSubset(IILandroid/graphics/Rect;)V
 HSPLandroid/graphics/ImageDecoder;->close()V
 HSPLandroid/graphics/ImageDecoder;->computeDensity(Landroid/graphics/ImageDecoder$Source;)I
-HSPLandroid/graphics/ImageDecoder;->createFromAsset(Landroid/content/res/AssetManager$AssetInputStream;Landroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
-HSPLandroid/graphics/ImageDecoder;->createFromStream(Ljava/io/InputStream;ZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
-HSPLandroid/graphics/ImageDecoder;->createSource(Landroid/content/res/Resources;Ljava/io/InputStream;)Landroid/graphics/ImageDecoder$Source;
+HSPLandroid/graphics/ImageDecoder;->createFromAsset(Landroid/content/res/AssetManager$AssetInputStream;ZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
+HSPLandroid/graphics/ImageDecoder;->createFromStream(Ljava/io/InputStream;ZZLandroid/graphics/ImageDecoder$Source;)Landroid/graphics/ImageDecoder;
 HSPLandroid/graphics/ImageDecoder;->createSource(Landroid/content/res/Resources;Ljava/io/InputStream;I)Landroid/graphics/ImageDecoder$Source;
 HSPLandroid/graphics/ImageDecoder;->decodeBitmap(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/Bitmap;
 HSPLandroid/graphics/ImageDecoder;->decodeBitmapImpl(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/Bitmap;
@@ -5721,15 +4461,20 @@
 HSPLandroid/graphics/ImageDecoder;->decodeDrawable(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/ImageDecoder;->decodeDrawableImpl(Landroid/graphics/ImageDecoder$Source;Landroid/graphics/ImageDecoder$OnHeaderDecodedListener;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/ImageDecoder;->finalize()V
+HSPLandroid/graphics/ImageDecoder;->getColorSpacePtr()J
+HSPLandroid/graphics/ImageDecoder;->requestedResize()Z
+HSPLandroid/graphics/ImageDecoder;->setAllocator(I)V
+HSPLandroid/graphics/ImageDecoder;->setOutPaddingRect(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/ImageDecoder;->setTargetSize(II)V
-HSPLandroid/graphics/Insets$1;-><init>()V
+HSPLandroid/graphics/Insets$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Insets;
+HSPLandroid/graphics/Insets$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/graphics/Insets;-><init>(IIII)V
+HSPLandroid/graphics/Insets;-><init>(IIIILandroid/graphics/Insets$1;)V
 HSPLandroid/graphics/Insets;->equals(Ljava/lang/Object;)Z
 HSPLandroid/graphics/Insets;->max(Landroid/graphics/Insets;Landroid/graphics/Insets;)Landroid/graphics/Insets;
 HSPLandroid/graphics/Insets;->of(IIII)Landroid/graphics/Insets;
 HSPLandroid/graphics/Insets;->of(Landroid/graphics/Rect;)Landroid/graphics/Insets;
 HSPLandroid/graphics/Insets;->toRect()Landroid/graphics/Rect;
-HSPLandroid/graphics/Interpolator$Result;-><init>(Ljava/lang/String;I)V
 HSPLandroid/graphics/Interpolator;-><init>(II)V
 HSPLandroid/graphics/Interpolator;->finalize()V
 HSPLandroid/graphics/Interpolator;->setKeyFrame(II[F)V
@@ -5737,17 +4482,15 @@
 HSPLandroid/graphics/Interpolator;->timeToValues(I[F)Landroid/graphics/Interpolator$Result;
 HSPLandroid/graphics/Interpolator;->timeToValues([F)Landroid/graphics/Interpolator$Result;
 HSPLandroid/graphics/LeakyTypefaceStorage;->readTypefaceFromParcel(Landroid/os/Parcel;)Landroid/graphics/Typeface;
-HSPLandroid/graphics/LeakyTypefaceStorage;->writeTypefaceToParcel(Landroid/graphics/Typeface;Landroid/os/Parcel;)V
 HSPLandroid/graphics/LinearGradient;-><init>(FFFFIILandroid/graphics/Shader$TileMode;)V
+HSPLandroid/graphics/LinearGradient;-><init>(FFFFJJLandroid/graphics/Shader$TileMode;)V
 HSPLandroid/graphics/LinearGradient;-><init>(FFFF[I[FLandroid/graphics/Shader$TileMode;)V
 HSPLandroid/graphics/LinearGradient;-><init>(FFFF[J[FLandroid/graphics/Shader$TileMode;)V
 HSPLandroid/graphics/LinearGradient;-><init>(FFFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V
 HSPLandroid/graphics/LinearGradient;->createNativeInstance(J)J
-HSPLandroid/graphics/Matrix$1;-><init>()V
-HSPLandroid/graphics/Matrix$ScaleToFit;-><init>(Ljava/lang/String;II)V
 HSPLandroid/graphics/Matrix;-><init>()V
 HSPLandroid/graphics/Matrix;-><init>(Landroid/graphics/Matrix;)V
-HSPLandroid/graphics/Matrix;->access$000()J
+HSPLandroid/graphics/Matrix;->checkPointArrays([FI[FII)V
 HSPLandroid/graphics/Matrix;->equals(Ljava/lang/Object;)Z
 HSPLandroid/graphics/Matrix;->getValues([F)V
 HSPLandroid/graphics/Matrix;->invert(Landroid/graphics/Matrix;)Z
@@ -5756,52 +4499,43 @@
 HSPLandroid/graphics/Matrix;->mapPoints([FI[FII)V
 HSPLandroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;)Z
 HSPLandroid/graphics/Matrix;->mapRect(Landroid/graphics/RectF;Landroid/graphics/RectF;)Z
-HSPLandroid/graphics/Matrix;->postConcat(Landroid/graphics/Matrix;)Z
 HSPLandroid/graphics/Matrix;->postScale(FF)Z
-HSPLandroid/graphics/Matrix;->postScale(FFFF)Z
 HSPLandroid/graphics/Matrix;->postTranslate(FF)Z
 HSPLandroid/graphics/Matrix;->preConcat(Landroid/graphics/Matrix;)Z
-HSPLandroid/graphics/Matrix;->preRotate(F)Z
-HSPLandroid/graphics/Matrix;->preScale(FF)Z
 HSPLandroid/graphics/Matrix;->preTranslate(FF)Z
 HSPLandroid/graphics/Matrix;->rectStaysRect()Z
 HSPLandroid/graphics/Matrix;->reset()V
 HSPLandroid/graphics/Matrix;->set(Landroid/graphics/Matrix;)V
-HSPLandroid/graphics/Matrix;->setConcat(Landroid/graphics/Matrix;Landroid/graphics/Matrix;)Z
 HSPLandroid/graphics/Matrix;->setRectToRect(Landroid/graphics/RectF;Landroid/graphics/RectF;Landroid/graphics/Matrix$ScaleToFit;)Z
-HSPLandroid/graphics/Matrix;->setRotate(F)V
-HSPLandroid/graphics/Matrix;->setRotate(FFF)V
 HSPLandroid/graphics/Matrix;->setScale(FF)V
 HSPLandroid/graphics/Matrix;->setScale(FFFF)V
 HSPLandroid/graphics/Matrix;->setTranslate(FF)V
-HSPLandroid/graphics/Matrix;->setValues([F)V
 HSPLandroid/graphics/NinePatch$InsetStruct;-><init>(IIIIIIIIFIF)V
 HSPLandroid/graphics/NinePatch$InsetStruct;->scaleInsets(IIIIF)Landroid/graphics/Rect;
+HSPLandroid/graphics/NinePatch;-><init>(Landroid/graphics/Bitmap;[B)V
+HSPLandroid/graphics/NinePatch;-><init>(Landroid/graphics/Bitmap;[BLjava/lang/String;)V
 HSPLandroid/graphics/NinePatch;->draw(Landroid/graphics/Canvas;Landroid/graphics/Rect;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/NinePatch;->finalize()V
 HSPLandroid/graphics/NinePatch;->getBitmap()Landroid/graphics/Bitmap;
 HSPLandroid/graphics/NinePatch;->getDensity()I
 HSPLandroid/graphics/NinePatch;->getHeight()I
 HSPLandroid/graphics/NinePatch;->getWidth()I
+HSPLandroid/graphics/NinePatch;->hasAlpha()Z
 HSPLandroid/graphics/Outline;-><init>()V
+HSPLandroid/graphics/Outline;->isEmpty()Z
 HSPLandroid/graphics/Outline;->setAlpha(F)V
 HSPLandroid/graphics/Outline;->setConvexPath(Landroid/graphics/Path;)V
 HSPLandroid/graphics/Outline;->setEmpty()V
 HSPLandroid/graphics/Outline;->setOval(IIII)V
 HSPLandroid/graphics/Outline;->setRect(IIII)V
+HSPLandroid/graphics/Outline;->setRect(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/Outline;->setRoundRect(IIIIF)V
 HSPLandroid/graphics/Outline;->setRoundRect(Landroid/graphics/Rect;F)V
-HSPLandroid/graphics/Paint$Align;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/Paint$Cap;-><init>(Ljava/lang/String;II)V
 HSPLandroid/graphics/Paint$FontMetrics;-><init>()V
-HSPLandroid/graphics/Paint$Join;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/Paint$Style;-><init>(Ljava/lang/String;II)V
+HSPLandroid/graphics/Paint$FontMetricsInt;-><init>()V
 HSPLandroid/graphics/Paint;-><init>()V
 HSPLandroid/graphics/Paint;-><init>(I)V
 HSPLandroid/graphics/Paint;-><init>(Landroid/graphics/Paint;)V
-HSPLandroid/graphics/Paint;->access$000()J
-HSPLandroid/graphics/Paint;->ascent()F
-HSPLandroid/graphics/Paint;->descent()F
 HSPLandroid/graphics/Paint;->getAlpha()I
 HSPLandroid/graphics/Paint;->getColor()I
 HSPLandroid/graphics/Paint;->getColorFilter()Landroid/graphics/ColorFilter;
@@ -5811,18 +4545,12 @@
 HSPLandroid/graphics/Paint;->getFontMetrics(Landroid/graphics/Paint$FontMetrics;)F
 HSPLandroid/graphics/Paint;->getFontMetricsInt()Landroid/graphics/Paint$FontMetricsInt;
 HSPLandroid/graphics/Paint;->getFontMetricsInt(Landroid/graphics/Paint$FontMetricsInt;)I
-HSPLandroid/graphics/Paint;->getFontVariationSettings()Ljava/lang/String;
-HSPLandroid/graphics/Paint;->getHinting()I
 HSPLandroid/graphics/Paint;->getLetterSpacing()F
 HSPLandroid/graphics/Paint;->getMaskFilter()Landroid/graphics/MaskFilter;
 HSPLandroid/graphics/Paint;->getNativeInstance()J
 HSPLandroid/graphics/Paint;->getRunAdvance(Ljava/lang/CharSequence;IIIIZI)F
 HSPLandroid/graphics/Paint;->getRunAdvance([CIIIIZI)F
 HSPLandroid/graphics/Paint;->getShader()Landroid/graphics/Shader;
-HSPLandroid/graphics/Paint;->getShadowLayerColor()I
-HSPLandroid/graphics/Paint;->getShadowLayerDx()F
-HSPLandroid/graphics/Paint;->getShadowLayerDy()F
-HSPLandroid/graphics/Paint;->getShadowLayerRadius()F
 HSPLandroid/graphics/Paint;->getStartHyphenEdit()I
 HSPLandroid/graphics/Paint;->getStrokeWidth()F
 HSPLandroid/graphics/Paint;->getStyle()Landroid/graphics/Paint$Style;
@@ -5832,20 +4560,17 @@
 HSPLandroid/graphics/Paint;->getTextLocale()Ljava/util/Locale;
 HSPLandroid/graphics/Paint;->getTextLocales()Landroid/os/LocaleList;
 HSPLandroid/graphics/Paint;->getTextRunAdvances([CIIIIZ[FI)F
-HSPLandroid/graphics/Paint;->getTextScaleX()F
 HSPLandroid/graphics/Paint;->getTextSize()F
 HSPLandroid/graphics/Paint;->getTypeface()Landroid/graphics/Typeface;
-HSPLandroid/graphics/Paint;->getUnderlinePosition()F
-HSPLandroid/graphics/Paint;->getUnderlineThickness()F
 HSPLandroid/graphics/Paint;->getXfermode()Landroid/graphics/Xfermode;
-HSPLandroid/graphics/Paint;->hasGlyph(Ljava/lang/String;)Z
+HSPLandroid/graphics/Paint;->installXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;
 HSPLandroid/graphics/Paint;->isAntiAlias()Z
-HSPLandroid/graphics/Paint;->isElegantTextHeight()Z
+HSPLandroid/graphics/Paint;->isDither()Z
+HSPLandroid/graphics/Paint;->isFilterBitmap()Z
 HSPLandroid/graphics/Paint;->isStrikeThruText()Z
 HSPLandroid/graphics/Paint;->isUnderlineText()Z
 HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;)F
 HSPLandroid/graphics/Paint;->measureText(Ljava/lang/String;II)F
-HSPLandroid/graphics/Paint;->reset()V
 HSPLandroid/graphics/Paint;->set(Landroid/graphics/Paint;)V
 HSPLandroid/graphics/Paint;->setAlpha(I)V
 HSPLandroid/graphics/Paint;->setAntiAlias(Z)V
@@ -5855,13 +4580,11 @@
 HSPLandroid/graphics/Paint;->setColorFilter(Landroid/graphics/ColorFilter;)Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/Paint;->setCompatibilityScaling(F)V
 HSPLandroid/graphics/Paint;->setDither(Z)V
-HSPLandroid/graphics/Paint;->setElegantTextHeight(Z)V
 HSPLandroid/graphics/Paint;->setEndHyphenEdit(I)V
 HSPLandroid/graphics/Paint;->setFakeBoldText(Z)V
 HSPLandroid/graphics/Paint;->setFilterBitmap(Z)V
 HSPLandroid/graphics/Paint;->setFlags(I)V
 HSPLandroid/graphics/Paint;->setLetterSpacing(F)V
-HSPLandroid/graphics/Paint;->setMaskFilter(Landroid/graphics/MaskFilter;)Landroid/graphics/MaskFilter;
 HSPLandroid/graphics/Paint;->setPathEffect(Landroid/graphics/PathEffect;)Landroid/graphics/PathEffect;
 HSPLandroid/graphics/Paint;->setShader(Landroid/graphics/Shader;)Landroid/graphics/Shader;
 HSPLandroid/graphics/Paint;->setShadowLayer(FFFI)V
@@ -5877,31 +4600,30 @@
 HSPLandroid/graphics/Paint;->setTextSize(F)V
 HSPLandroid/graphics/Paint;->setTextSkewX(F)V
 HSPLandroid/graphics/Paint;->setTypeface(Landroid/graphics/Typeface;)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Paint;->setUnderlineText(Z)V
 HSPLandroid/graphics/Paint;->setXfermode(Landroid/graphics/Xfermode;)Landroid/graphics/Xfermode;
 HSPLandroid/graphics/Paint;->syncTextLocalesWithMinikin()V
 HSPLandroid/graphics/PaintFlagsDrawFilter;-><init>(II)V
-HSPLandroid/graphics/Path$Direction;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/Path$FillType;-><init>(Ljava/lang/String;II)V
+HSPLandroid/graphics/Path$Op;-><clinit>()V
+HSPLandroid/graphics/Path$Op;-><init>(Ljava/lang/String;I)V
 HSPLandroid/graphics/Path;-><init>()V
 HSPLandroid/graphics/Path;-><init>(Landroid/graphics/Path;)V
-HSPLandroid/graphics/Path;->addOval(FFFFLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRect(FFFFLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRect(Landroid/graphics/RectF;Landroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(FFFF[FLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->addRoundRect(Landroid/graphics/RectF;[FLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->approximate(F)[F
 HSPLandroid/graphics/Path;->arcTo(FFFFFFZ)V
-HSPLandroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FFZ)V
 HSPLandroid/graphics/Path;->close()V
 HSPLandroid/graphics/Path;->computeBounds(Landroid/graphics/RectF;Z)V
 HSPLandroid/graphics/Path;->cubicTo(FFFFFF)V
 HSPLandroid/graphics/Path;->detectSimplePath(FFFFLandroid/graphics/Path$Direction;)V
 HSPLandroid/graphics/Path;->getFillType()Landroid/graphics/Path$FillType;
-HSPLandroid/graphics/Path;->isConvex()Z
 HSPLandroid/graphics/Path;->isEmpty()Z
 HSPLandroid/graphics/Path;->lineTo(FF)V
 HSPLandroid/graphics/Path;->moveTo(FF)V
+HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z
+HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z
+HSPLandroid/graphics/Path;->readOnlyNI()J
 HSPLandroid/graphics/Path;->reset()V
 HSPLandroid/graphics/Path;->rewind()V
 HSPLandroid/graphics/Path;->set(Landroid/graphics/Path;)V
@@ -5909,40 +4631,32 @@
 HSPLandroid/graphics/Path;->transform(Landroid/graphics/Matrix;)V
 HSPLandroid/graphics/Path;->transform(Landroid/graphics/Matrix;Landroid/graphics/Path;)V
 HSPLandroid/graphics/PixelFormat;->formatHasAlpha(I)Z
-HSPLandroid/graphics/Point$1;-><init>()V
 HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Point;
 HSPLandroid/graphics/Point$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/graphics/Point;-><init>()V
 HSPLandroid/graphics/Point;-><init>(II)V
-HSPLandroid/graphics/Point;-><init>(Landroid/graphics/Point;)V
 HSPLandroid/graphics/Point;->equals(Ljava/lang/Object;)Z
+HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/graphics/Point;->set(II)V
-HSPLandroid/graphics/Point;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/graphics/PointF$1;-><init>()V
 HSPLandroid/graphics/PointF;-><init>()V
 HSPLandroid/graphics/PointF;-><init>(FF)V
-HSPLandroid/graphics/PointF;->length(FF)F
 HSPLandroid/graphics/PointF;->set(FF)V
-HSPLandroid/graphics/PorterDuff$Mode;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/PorterDuff;->intToMode(I)Landroid/graphics/PorterDuff$Mode;
 HSPLandroid/graphics/PorterDuffColorFilter;-><init>(ILandroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/PorterDuffColorFilter;->createNativeInstance()J
 HSPLandroid/graphics/PorterDuffColorFilter;->getColor()I
 HSPLandroid/graphics/PorterDuffColorFilter;->getMode()Landroid/graphics/PorterDuff$Mode;
 HSPLandroid/graphics/PorterDuffXfermode;-><init>(Landroid/graphics/PorterDuff$Mode;)V
-HSPLandroid/graphics/RadialGradient;-><init>(FFF[I[FLandroid/graphics/Shader$TileMode;)V
-HSPLandroid/graphics/RadialGradient;-><init>(FFF[J[FLandroid/graphics/Shader$TileMode;Landroid/graphics/ColorSpace;)V
-HSPLandroid/graphics/RadialGradient;->createNativeInstance(J)J
+HSPLandroid/graphics/RecordingCanvas;-><init>(Landroid/graphics/RenderNode;II)V
 HSPLandroid/graphics/RecordingCanvas;->disableZ()V
+HSPLandroid/graphics/RecordingCanvas;->drawCircle(Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;Landroid/graphics/CanvasProperty;)V
 HSPLandroid/graphics/RecordingCanvas;->drawRenderNode(Landroid/graphics/RenderNode;)V
 HSPLandroid/graphics/RecordingCanvas;->enableZ()V
-HSPLandroid/graphics/RecordingCanvas;->getHeight()I
-HSPLandroid/graphics/RecordingCanvas;->getWidth()I
+HSPLandroid/graphics/RecordingCanvas;->finishRecording()J
 HSPLandroid/graphics/RecordingCanvas;->isHardwareAccelerated()Z
 HSPLandroid/graphics/RecordingCanvas;->isRecordingFor(Ljava/lang/Object;)Z
 HSPLandroid/graphics/RecordingCanvas;->obtain(Landroid/graphics/RenderNode;II)Landroid/graphics/RecordingCanvas;
+HSPLandroid/graphics/RecordingCanvas;->recycle()V
 HSPLandroid/graphics/RecordingCanvas;->throwIfCannotDraw(Landroid/graphics/Bitmap;)V
-HSPLandroid/graphics/Rect$1;-><init>()V
 HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Rect;
 HSPLandroid/graphics/Rect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/graphics/Rect;-><init>()V
@@ -5951,35 +4665,25 @@
 HSPLandroid/graphics/Rect;->centerX()I
 HSPLandroid/graphics/Rect;->centerY()I
 HSPLandroid/graphics/Rect;->contains(II)Z
-HSPLandroid/graphics/Rect;->contains(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Rect;->equals(Ljava/lang/Object;)Z
 HSPLandroid/graphics/Rect;->exactCenterX()F
 HSPLandroid/graphics/Rect;->exactCenterY()F
-HSPLandroid/graphics/Rect;->flattenToString()Ljava/lang/String;
 HSPLandroid/graphics/Rect;->height()I
-HSPLandroid/graphics/Rect;->inset(Landroid/graphics/Insets;)V
-HSPLandroid/graphics/Rect;->inset(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/Rect;->intersect(IIII)Z
-HSPLandroid/graphics/Rect;->intersect(Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/Rect;->intersectUnchecked(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/Rect;->intersects(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Rect;->isEmpty()Z
 HSPLandroid/graphics/Rect;->offset(II)V
+HSPLandroid/graphics/Rect;->offsetTo(II)V
 HSPLandroid/graphics/Rect;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/graphics/Rect;->readFromProto(Landroid/util/proto/ProtoInputStream;J)V
 HSPLandroid/graphics/Rect;->scale(F)V
 HSPLandroid/graphics/Rect;->set(IIII)V
 HSPLandroid/graphics/Rect;->set(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/Rect;->setEmpty()V
-HSPLandroid/graphics/Rect;->toShortString(Ljava/lang/StringBuilder;)Ljava/lang/String;
+HSPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Rect;->toString()Ljava/lang/String;
-HSPLandroid/graphics/Rect;->unflattenFromString(Ljava/lang/String;)Landroid/graphics/Rect;
 HSPLandroid/graphics/Rect;->union(IIII)V
 HSPLandroid/graphics/Rect;->union(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/Rect;->width()I
 HSPLandroid/graphics/Rect;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/graphics/Rect;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLandroid/graphics/RectF$1;-><init>()V
 HSPLandroid/graphics/RectF;-><init>()V
 HSPLandroid/graphics/RectF;-><init>(FFFF)V
 HSPLandroid/graphics/RectF;-><init>(Landroid/graphics/Rect;)V
@@ -5988,42 +4692,36 @@
 HSPLandroid/graphics/RectF;->height()F
 HSPLandroid/graphics/RectF;->inset(FF)V
 HSPLandroid/graphics/RectF;->intersect(FFFF)Z
+HSPLandroid/graphics/RectF;->isEmpty()Z
 HSPLandroid/graphics/RectF;->offset(FF)V
-HSPLandroid/graphics/RectF;->round(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/RectF;->set(FFFF)V
 HSPLandroid/graphics/RectF;->set(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/RectF;->set(Landroid/graphics/RectF;)V
 HSPLandroid/graphics/RectF;->setEmpty()V
-HSPLandroid/graphics/RectF;->union(FFFF)V
-HSPLandroid/graphics/RectF;->union(Landroid/graphics/RectF;)V
 HSPLandroid/graphics/RectF;->width()F
-HSPLandroid/graphics/Region$1;-><init>()V
 HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/Region;
 HSPLandroid/graphics/Region$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/graphics/Region$Op;-><init>(Ljava/lang/String;II)V
 HSPLandroid/graphics/Region;-><init>()V
+HSPLandroid/graphics/Region;-><init>(J)V
 HSPLandroid/graphics/Region;->equals(Ljava/lang/Object;)Z
 HSPLandroid/graphics/Region;->finalize()V
-HSPLandroid/graphics/Region;->obtain()Landroid/graphics/Region;
 HSPLandroid/graphics/Region;->op(IIIILandroid/graphics/Region$Op;)Z
 HSPLandroid/graphics/Region;->op(Landroid/graphics/Rect;Landroid/graphics/Region$Op;)Z
-HSPLandroid/graphics/Region;->op(Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z
-HSPLandroid/graphics/Region;->op(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region$Op;)Z
-HSPLandroid/graphics/Region;->recycle()V
 HSPLandroid/graphics/Region;->set(IIII)Z
-HSPLandroid/graphics/Region;->set(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Region;->set(Landroid/graphics/Region;)Z
 HSPLandroid/graphics/Region;->setEmpty()V
-HSPLandroid/graphics/Region;->translate(II)V
-HSPLandroid/graphics/Region;->union(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/Region;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/graphics/RenderNode;->access$000()J
+HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;-><init>([Landroid/graphics/RenderNode$PositionUpdateListener;)V
+HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionChanged(JIIII)V
+HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionLost(J)V
+HSPLandroid/graphics/RenderNode;-><init>(J)V
+HSPLandroid/graphics/RenderNode;-><init>(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)V
 HSPLandroid/graphics/RenderNode;->addAnimator(Landroid/view/RenderNodeAnimator;)V
 HSPLandroid/graphics/RenderNode;->addPositionUpdateListener(Landroid/graphics/RenderNode$PositionUpdateListener;)V
+HSPLandroid/graphics/RenderNode;->adopt(J)Landroid/graphics/RenderNode;
 HSPLandroid/graphics/RenderNode;->beginRecording(II)Landroid/graphics/RecordingCanvas;
 HSPLandroid/graphics/RenderNode;->create(Ljava/lang/String;Landroid/graphics/RenderNode$AnimationHost;)Landroid/graphics/RenderNode;
 HSPLandroid/graphics/RenderNode;->discardDisplayList()V
-HPLandroid/graphics/RenderNode;->end(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/graphics/RenderNode;->endRecording()V
 HSPLandroid/graphics/RenderNode;->getClipToOutline()Z
 HSPLandroid/graphics/RenderNode;->getElevation()F
@@ -6041,12 +4739,11 @@
 HSPLandroid/graphics/RenderNode;->getTranslationZ()F
 HSPLandroid/graphics/RenderNode;->hasDisplayList()Z
 HSPLandroid/graphics/RenderNode;->hasIdentityMatrix()Z
+HSPLandroid/graphics/RenderNode;->isAttached()Z
 HSPLandroid/graphics/RenderNode;->isPivotExplicitlySet()Z
 HSPLandroid/graphics/RenderNode;->offsetTopAndBottom(I)Z
+HSPLandroid/graphics/RenderNode;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
 HSPLandroid/graphics/RenderNode;->setAlpha(F)Z
-HSPLandroid/graphics/RenderNode;->setAnimationMatrix(Landroid/graphics/Matrix;)Z
-HSPLandroid/graphics/RenderNode;->setBottom(I)Z
-HSPLandroid/graphics/RenderNode;->setClipRect(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/RenderNode;->setClipToBounds(Z)Z
 HSPLandroid/graphics/RenderNode;->setClipToOutline(Z)Z
 HSPLandroid/graphics/RenderNode;->setElevation(F)Z
@@ -6054,86 +4751,75 @@
 HSPLandroid/graphics/RenderNode;->setHasOverlappingRendering(Z)Z
 HSPLandroid/graphics/RenderNode;->setLayerPaint(Landroid/graphics/Paint;)Z
 HSPLandroid/graphics/RenderNode;->setLayerType(I)Z
-HSPLandroid/graphics/RenderNode;->setLeft(I)Z
 HSPLandroid/graphics/RenderNode;->setLeftTopRightBottom(IIII)Z
 HSPLandroid/graphics/RenderNode;->setOutline(Landroid/graphics/Outline;)Z
 HSPLandroid/graphics/RenderNode;->setPivotX(F)Z
 HSPLandroid/graphics/RenderNode;->setPivotY(F)Z
 HSPLandroid/graphics/RenderNode;->setProjectBackwards(Z)Z
 HSPLandroid/graphics/RenderNode;->setProjectionReceiver(Z)Z
-HSPLandroid/graphics/RenderNode;->setRight(I)Z
-HSPLandroid/graphics/RenderNode;->setRotationZ(F)Z
 HSPLandroid/graphics/RenderNode;->setScaleX(F)Z
 HSPLandroid/graphics/RenderNode;->setScaleY(F)Z
-HSPLandroid/graphics/RenderNode;->setTop(I)Z
 HSPLandroid/graphics/RenderNode;->setTranslationX(F)Z
 HSPLandroid/graphics/RenderNode;->setTranslationY(F)Z
 HSPLandroid/graphics/RenderNode;->setTranslationZ(F)Z
 HSPLandroid/graphics/RenderNode;->setUsageHint(I)V
-HPLandroid/graphics/RenderNode;->start(II)Landroid/graphics/RecordingCanvas;
-HSPLandroid/graphics/Shader$TileMode;-><init>(Ljava/lang/String;II)V
-HSPLandroid/graphics/Shader;->access$000()J
+HSPLandroid/graphics/Shader;-><init>()V
+HSPLandroid/graphics/Shader;-><init>(Landroid/graphics/ColorSpace;)V
 HSPLandroid/graphics/Shader;->colorSpace()Landroid/graphics/ColorSpace;
 HSPLandroid/graphics/Shader;->convertColors([I)[J
 HSPLandroid/graphics/Shader;->detectColorSpace([J)Landroid/graphics/ColorSpace;
+HSPLandroid/graphics/Shader;->discardNativeInstance()V
 HSPLandroid/graphics/Shader;->getNativeInstance()J
 HSPLandroid/graphics/Shader;->setLocalMatrix(Landroid/graphics/Matrix;)V
 HSPLandroid/graphics/Shader;->verifyNativeInstance()V
-HSPLandroid/graphics/SurfaceTexture;-><init>(I)V
-HSPLandroid/graphics/SurfaceTexture;->finalize()V
-HSPLandroid/graphics/SurfaceTexture;->getTransformMatrix([F)V
-HSPLandroid/graphics/SurfaceTexture;->isSingleBuffered()Z
-HSPLandroid/graphics/SurfaceTexture;->postEventFromNative(Ljava/lang/ref/WeakReference;)V
-HSPLandroid/graphics/SurfaceTexture;->release()V
-HSPLandroid/graphics/SurfaceTexture;->updateTexImage()V
 HSPLandroid/graphics/TemporaryBuffer;->obtain(I)[C
 HSPLandroid/graphics/TemporaryBuffer;->recycle([C)V
+HSPLandroid/graphics/Typeface$Builder;-><init>(Landroid/content/res/AssetManager;Ljava/lang/String;ZI)V
 HSPLandroid/graphics/Typeface$Builder;->build()Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface$Builder;->createAssetUid(Landroid/content/res/AssetManager;Ljava/lang/String;I[Landroid/graphics/fonts/FontVariationAxis;IILjava/lang/String;)Ljava/lang/String;
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;-><init>(Landroid/graphics/fonts/FontFamily;)V
 HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->build()Landroid/graphics/Typeface;
+HSPLandroid/graphics/Typeface$CustomFallbackBuilder;->setStyle(Landroid/graphics/fonts/FontStyle;)Landroid/graphics/Typeface$CustomFallbackBuilder;
 HSPLandroid/graphics/Typeface;-><init>(J)V
+HSPLandroid/graphics/Typeface;-><init>(JLandroid/graphics/Typeface$1;)V
+HSPLandroid/graphics/Typeface;->access$500()Ljava/lang/Object;
+HSPLandroid/graphics/Typeface;->access$600()Landroid/util/LruCache;
+HSPLandroid/graphics/Typeface;->access$700([JII)J
 HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;I)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface;->create(Ljava/lang/String;I)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface;->createFromFamiliesWithDefault([Landroid/graphics/FontFamily;Ljava/lang/String;II)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface;->createFromResources(Landroid/content/res/FontResourcesParser$FamilyResourceEntry;Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface;->defaultFromStyle(I)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface;->findFromCache(Landroid/content/res/AssetManager;Ljava/lang/String;)Landroid/graphics/Typeface;
 HSPLandroid/graphics/Typeface;->getStyle()I
 HSPLandroid/graphics/Typeface;->getSystemDefaultTypeface(Ljava/lang/String;)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface;->initSystemDefaultTypefaces(Ljava/util/Map;Ljava/util/Map;[Landroid/text/FontConfig$Alias;)V
-HSPLandroid/graphics/Typeface;->registerGenericFamilyNative(Ljava/lang/String;Landroid/graphics/Typeface;)V
-HSPLandroid/graphics/Typeface;->setDefault(Landroid/graphics/Typeface;)V
+HSPLandroid/graphics/Xfermode;-><init>()V
+HSPLandroid/graphics/drawable/-$$Lambda$AnimatedVectorDrawable$VectorDrawableAnimatorRT$PzjgSeyQweoFjbEZJP80UteZqm8;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V
 HSPLandroid/graphics/drawable/-$$Lambda$AnimatedVectorDrawable$VectorDrawableAnimatorRT$PzjgSeyQweoFjbEZJP80UteZqm8;->run()V
-HSPLandroid/graphics/drawable/-$$Lambda$BitmapDrawable$LMqt8JvxZ4giSOIRAtlCKDg39Jw;-><init>()V
 HSPLandroid/graphics/drawable/-$$Lambda$BitmapDrawable$LMqt8JvxZ4giSOIRAtlCKDg39Jw;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
+HSPLandroid/graphics/drawable/-$$Lambda$NinePatchDrawable$yQvfm7FAkslD5wdGFysjgwt8cLE;-><init>(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/-$$Lambda$NinePatchDrawable$yQvfm7FAkslD5wdGFysjgwt8cLE;->onHeaderDecoded(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(I)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;->setDensity(I)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/graphics/drawable/AdaptiveIconDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->canConstantState()Z
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->invalidateCache()V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->isStateful()Z
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable$LayerState;->setDensity(I)V
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable;-><init>()V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;-><init>(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->addLayer(ILandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->createConstantState(Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicHeight()I
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIntrinsicWidth()I
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->inflateLayers(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->invalidateSelf()V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->isStateful()Z
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->setVisible(ZZ)Z
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->resumeChildInvalidation()V
+HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->suspendChildInvalidation()V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
@@ -6142,21 +4828,21 @@
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;I)I
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->addTransition(IILandroid/graphics/drawable/Drawable;Z)I
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->generateTransitionKey(II)J
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->getKeyframeIdAt(I)I
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->indexOfKeyframe([I)I
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->indexOfTransition(II)I
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->isTransitionReversed(II)Z
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->mutate()V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;->transitionHasReversibleFlag(II)Z
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->start()V
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;->stop()V
+HSPLandroid/graphics/drawable/AnimatedStateListDrawable;-><init>()V
+HSPLandroid/graphics/drawable/AnimatedStateListDrawable;-><init>(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/AnimatedStateListDrawable;-><init>(Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedStateListDrawable$1;)V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->cloneConstantState()Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->init()V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->mutate()Landroid/graphics/drawable/Drawable;
@@ -6165,9 +4851,10 @@
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->parseTransition(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)I
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->selectTransition(I)Z
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
-HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->setVisible(ZZ)Z
 HSPLandroid/graphics/drawable/AnimatedStateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$1;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$1;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;-><init>(IFLjava/lang/String;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;->newInstance(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/animation/Animator;
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/graphics/drawable/Drawable$Callback;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->addPendingAnimator(IFLjava/lang/String;)V
@@ -6184,74 +4871,82 @@
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimator(Landroid/animation/ObjectAnimator;J)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForFullPath(Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VFullPath;J)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForGroup([Landroid/animation/PropertyValuesHolder;Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VGroup;J)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForPath(Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VPath;J)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->end()V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->endAnimation()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getAnimatorNativePtr()J
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->getFrameCount(J)I
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->handlePendingAction(I)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->init(Landroid/animation/AnimatorSet;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->invalidateOwningView()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isInfinite()Z
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isStarted()Z
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->lambda$callOnFinished$0(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->onAnimationEnd(I)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->parseAnimatorSet(Landroid/animation/AnimatorSet;J)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->pause()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->recordLastSeenTarget(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->start()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->startAnimation()V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useLastSeenTarget()Z
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useTarget(Landroid/graphics/RenderNode;)Z
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;-><init>()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedVectorDrawable$1;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1000(JJ)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1100(JIFF)J
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1400(JIFF)J
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1800(JJJJJII)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1900(JLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;I)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$2000(J)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$400()Z
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$600(Landroid/animation/Animator;Ljava/lang/String;Landroid/graphics/drawable/VectorDrawable;Z)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$800()J
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$900(Landroid/graphics/drawable/AnimatedVectorDrawable;)Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->containsSameValueType(Landroid/animation/PropertyValuesHolder;Landroid/util/Property;)Z
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->draw(Landroid/graphics/Canvas;)V
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->ensureAnimatorSet()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getIntrinsicWidth()I
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setVisible(ZZ)Z
+HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->shouldIgnoreInvalidAnimation()Z
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->start()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->stop()V
 HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->updateAnimatorProperty(Landroid/animation/Animator;Ljava/lang/String;Landroid/graphics/drawable/VectorDrawable;Z)V
-HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->growArray(II)V
+HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;-><init>(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/graphics/drawable/AnimationDrawable;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->access$000(Landroid/graphics/drawable/AnimationDrawable$AnimationState;)Z
+HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->access$002(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Z)Z
+HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->addFrame(Landroid/graphics/drawable/Drawable;I)V
 HSPLandroid/graphics/drawable/AnimationDrawable$AnimationState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AnimationDrawable;->clearMutated()V
-HSPLandroid/graphics/drawable/AnimationDrawable;->cloneConstantState()Landroid/graphics/drawable/AnimationDrawable$AnimationState;
-HSPLandroid/graphics/drawable/AnimationDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;
-HSPLandroid/graphics/drawable/AnimationDrawable;->getDuration(I)I
-HSPLandroid/graphics/drawable/AnimationDrawable;->getNumberOfFrames()I
+HSPLandroid/graphics/drawable/AnimationDrawable;-><init>()V
+HSPLandroid/graphics/drawable/AnimationDrawable;-><init>(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/AnimationDrawable;-><init>(Landroid/graphics/drawable/AnimationDrawable$AnimationState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimationDrawable$1;)V
 HSPLandroid/graphics/drawable/AnimationDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/AnimationDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
-HSPLandroid/graphics/drawable/AnimationDrawable;->isRunning()Z
-HSPLandroid/graphics/drawable/AnimationDrawable;->mutate()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AnimationDrawable;->nextFrame(Z)V
-HSPLandroid/graphics/drawable/AnimationDrawable;->run()V
 HSPLandroid/graphics/drawable/AnimationDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
 HSPLandroid/graphics/drawable/AnimationDrawable;->setFrame(IZZ)V
 HSPLandroid/graphics/drawable/AnimationDrawable;->setVisible(ZZ)Z
-HSPLandroid/graphics/drawable/AnimationDrawable;->start()V
-HSPLandroid/graphics/drawable/AnimationDrawable;->stop()V
 HSPLandroid/graphics/drawable/AnimationDrawable;->unscheduleSelf(Ljava/lang/Runnable;)V
+HSPLandroid/graphics/drawable/AnimationDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;-><init>(Landroid/graphics/drawable/BitmapDrawable$BitmapState;)V
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/BitmapDrawable$BitmapState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/BitmapDrawable;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;-><init>()V
 HSPLandroid/graphics/drawable/BitmapDrawable;-><init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;)V
-HSPLandroid/graphics/drawable/BitmapDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/BitmapDrawable;-><init>(Landroid/graphics/drawable/BitmapDrawable$BitmapState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/BitmapDrawable;-><init>(Landroid/graphics/drawable/BitmapDrawable$BitmapState;Landroid/content/res/Resources;Landroid/graphics/drawable/BitmapDrawable$1;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/BitmapDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/BitmapDrawable;->computeBitmapSize()V
 HSPLandroid/graphics/drawable/BitmapDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->getBitmap()Landroid/graphics/Bitmap;
@@ -6263,35 +4958,42 @@
 HSPLandroid/graphics/drawable/BitmapDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/BitmapDrawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/BitmapDrawable;->init(Landroid/graphics/drawable/BitmapDrawable$BitmapState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/BitmapDrawable;->isAutoMirrored()Z
 HSPLandroid/graphics/drawable/BitmapDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/BitmapDrawable;->lambda$updateStateFromTypedArray$2(Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->mutate()Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/BitmapDrawable;->needMirroring()Z
 HSPLandroid/graphics/drawable/BitmapDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/BitmapDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setAutoMirrored(Z)V
-HSPLandroid/graphics/drawable/BitmapDrawable;->setBitmap(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setDither(Z)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setGravity(I)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setMipMap(Z)V
+HSPLandroid/graphics/drawable/BitmapDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/BitmapDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->updateDstRectAndInsetsIfDirty()V
+HSPLandroid/graphics/drawable/BitmapDrawable;->updateLocalState(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;I)V
 HSPLandroid/graphics/drawable/BitmapDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/ColorDrawable$ColorState;-><init>()V
 HSPLandroid/graphics/drawable/ColorDrawable$ColorState;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;)V
+HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/ColorDrawable$ColorState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/ColorDrawable;-><init>()V
 HSPLandroid/graphics/drawable/ColorDrawable;-><init>(I)V
+HSPLandroid/graphics/drawable/ColorDrawable;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/ColorDrawable;-><init>(Landroid/graphics/drawable/ColorDrawable$ColorState;Landroid/content/res/Resources;Landroid/graphics/drawable/ColorDrawable$1;)V
 HSPLandroid/graphics/drawable/ColorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/ColorDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/ColorDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/ColorDrawable;->getAlpha()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getColor()I
-HSPLandroid/graphics/drawable/ColorDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/ColorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/ColorDrawable;->getOpacity()I
 HSPLandroid/graphics/drawable/ColorDrawable;->getOutline(Landroid/graphics/Outline;)V
@@ -6301,20 +5003,19 @@
 HSPLandroid/graphics/drawable/ColorDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/ColorDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/ColorDrawable;->setColor(I)V
-HSPLandroid/graphics/drawable/ColorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
+HSPLandroid/graphics/drawable/ColorDrawable;->updateLocalState(Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/ColorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/Drawable$ConstantState;-><init>()V
+HSPLandroid/graphics/drawable/Drawable$ConstantState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/Drawable$ConstantState;->newDrawable(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/Drawable;-><init>()V
+HSPLandroid/graphics/drawable/Drawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/Drawable;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/Drawable;->clearColorFilter()V
-HSPLandroid/graphics/drawable/Drawable;->copyBounds()Landroid/graphics/Rect;
+HSPLandroid/graphics/drawable/Drawable;->clearMutated()V
 HSPLandroid/graphics/drawable/Drawable;->copyBounds(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/Drawable;->createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Drawable;->createFromResourceStream(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;Ljava/lang/String;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Drawable;->createFromStream(Ljava/io/InputStream;Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/Drawable;->createFromXmlForDensity(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/Drawable;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Drawable;->getBitmapDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;Ljava/io/InputStream;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/Drawable;->createFromXmlInnerForDensity(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/Drawable;->getBounds()Landroid/graphics/Rect;
 HSPLandroid/graphics/drawable/Drawable;->getCallback()Landroid/graphics/drawable/Drawable$Callback;
 HSPLandroid/graphics/drawable/Drawable;->getChangingConfigurations()I
@@ -6330,17 +5031,23 @@
 HSPLandroid/graphics/drawable/Drawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/Drawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/Drawable;->getState()[I
+HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/Drawable;->inflateWithAttributes(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/TypedArray;I)V
 HSPLandroid/graphics/drawable/Drawable;->invalidateSelf()V
 HSPLandroid/graphics/drawable/Drawable;->isProjected()Z
 HSPLandroid/graphics/drawable/Drawable;->isStateful()Z
 HSPLandroid/graphics/drawable/Drawable;->isVisible()Z
 HSPLandroid/graphics/drawable/Drawable;->jumpToCurrentState()V
+HSPLandroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/Drawable;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
 HSPLandroid/graphics/drawable/Drawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/Drawable;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/Drawable;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/Drawable;->parseTintMode(ILandroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuff$Mode;
+HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode;
 HSPLandroid/graphics/drawable/Drawable;->resolveDensity(Landroid/content/res/Resources;I)I
+HSPLandroid/graphics/drawable/Drawable;->resolveOpacity(II)I
+HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(FII)F
+HSPLandroid/graphics/drawable/Drawable;->scaleFromDensity(IIIZ)I
 HSPLandroid/graphics/drawable/Drawable;->scheduleSelf(Ljava/lang/Runnable;J)V
 HSPLandroid/graphics/drawable/Drawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/Drawable;->setBounds(IIII)V
@@ -6352,28 +5059,43 @@
 HSPLandroid/graphics/drawable/Drawable;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/Drawable;->setLayoutDirection(I)Z
 HSPLandroid/graphics/drawable/Drawable;->setLevel(I)Z
+HSPLandroid/graphics/drawable/Drawable;->setSrcDensityOverride(I)V
 HSPLandroid/graphics/drawable/Drawable;->setState([I)Z
 HSPLandroid/graphics/drawable/Drawable;->setTint(I)V
 HSPLandroid/graphics/drawable/Drawable;->setVisible(ZZ)Z
 HSPLandroid/graphics/drawable/Drawable;->unscheduleSelf(Ljava/lang/Runnable;)V
+HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;
 HSPLandroid/graphics/drawable/Drawable;->updateTintFilter(Landroid/graphics/PorterDuffColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/PorterDuffColorFilter;
+HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>()V
+HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;-><init>(Landroid/graphics/drawable/DrawableContainer$1;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->unwrap()Landroid/graphics/drawable/Drawable$Callback;
 HSPLandroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;->wrap(Landroid/graphics/drawable/Drawable$Callback;)Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;-><init>(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;Landroid/graphics/drawable/DrawableContainer;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->access$100(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->addChild(Landroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->canConstantState()Z
-HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->computeConstantSize()V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->clearMutated()V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->createAllFutures()V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getCapacity()I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChild(I)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChildCount()I
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getConstantPadding()Landroid/graphics/Rect;
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getOpacity()I
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->growArray(II)V
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->invalidateCache()V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->isConstantSize()Z
 HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->isStateful()Z
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->mutate()V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->prepareDrawable(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setConstantSize(Z)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setEnterFadeDuration(I)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setExitFadeDuration(I)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->setVariablePadding(Z)V
+HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->updateDensity(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/DrawableContainer;-><init>()V
 HSPLandroid/graphics/drawable/DrawableContainer;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->canApplyTheme()Z
@@ -6389,7 +5111,6 @@
 HSPLandroid/graphics/drawable/DrawableContainer;->getMinimumHeight()I
 HSPLandroid/graphics/drawable/DrawableContainer;->getMinimumWidth()I
 HSPLandroid/graphics/drawable/DrawableContainer;->getOpacity()I
-HSPLandroid/graphics/drawable/DrawableContainer;->getOpticalInsets()Landroid/graphics/Insets;
 HSPLandroid/graphics/drawable/DrawableContainer;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/DrawableContainer;->initializeDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V
@@ -6398,36 +5119,37 @@
 HSPLandroid/graphics/drawable/DrawableContainer;->isStateful()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/DrawableContainer;->mutate()Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/DrawableContainer;->needsMirroring()Z
 HSPLandroid/graphics/drawable/DrawableContainer;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/DrawableContainer;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/DrawableContainer;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/DrawableContainer;->selectDrawable(I)Z
-HSPLandroid/graphics/drawable/DrawableContainer;->setAlpha(I)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setColorFilter(Landroid/graphics/ColorFilter;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setDither(Z)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/DrawableContainer;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->setVisible(ZZ)Z
-HSPLandroid/graphics/drawable/DrawableContainer;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V
 HSPLandroid/graphics/drawable/DrawableContainer;->updateDensity(Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/DrawableInflater;-><init>(Landroid/content/res/Resources;Ljava/lang/ClassLoader;)V
 HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromClass(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromTag(Ljava/lang/String;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableInflater;->inflateFromXmlForDensity(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;ILandroid/content/res/Resources$Theme;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;-><init>(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->access$000(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;)[I
+HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->access$002(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;[I)[I
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->canConstantState()Z
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->onDensityChanged(II)V
+HSPLandroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;->setDensity(I)V
+HSPLandroid/graphics/drawable/DrawableWrapper;-><init>(Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/DrawableWrapper;->clearMutated()V
 HSPLandroid/graphics/drawable/DrawableWrapper;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/DrawableWrapper;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper;->getIntrinsicHeight()I
@@ -6437,39 +5159,46 @@
 HSPLandroid/graphics/drawable/DrawableWrapper;->inflateChildDrawable(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->isStateful()Z
+HSPLandroid/graphics/drawable/DrawableWrapper;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/DrawableWrapper;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/DrawableWrapper;->onBoundsChange(Landroid/graphics/Rect;)V
+HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/DrawableWrapper;->onStateChange([I)Z
-HSPLandroid/graphics/drawable/DrawableWrapper;->setAlpha(I)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setColorFilter(Landroid/graphics/ColorFilter;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setHotspot(FF)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->setVisible(ZZ)Z
 HSPLandroid/graphics/drawable/DrawableWrapper;->updateLocalState(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/DrawableWrapper;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;-><init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->access$100(Landroid/graphics/drawable/GradientDrawable$GradientState;)V
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->computeOpacity()V
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getChangingConfigurations()I
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->hasCenterColor()Z
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/GradientDrawable$Orientation;-><init>(Ljava/lang/String;I)V
-HSPLandroid/graphics/drawable/GradientDrawable$Orientation;->values()[Landroid/graphics/drawable/GradientDrawable$Orientation;
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setCornerRadii([F)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setCornerRadius(F)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setDensity(I)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setGradientColors([I)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setSolidColors(Landroid/content/res/ColorStateList;)V
+HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->setStroke(ILandroid/content/res/ColorStateList;FF)V
 HSPLandroid/graphics/drawable/GradientDrawable;-><init>()V
 HSPLandroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;)V
-HSPLandroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$Orientation;[I)V
+HSPLandroid/graphics/drawable/GradientDrawable;-><init>(Landroid/graphics/drawable/GradientDrawable$GradientState;Landroid/content/res/Resources;Landroid/graphics/drawable/GradientDrawable$1;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->applyThemeChildElements(Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/GradientDrawable;->buildPathIfDirty()V
 HSPLandroid/graphics/drawable/GradientDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/GradientDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/GradientDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->ensureValidRect()Z
 HSPLandroid/graphics/drawable/GradientDrawable;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/GradientDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/GradientDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
+HSPLandroid/graphics/drawable/GradientDrawable;->getFloatOrFraction(Landroid/content/res/TypedArray;IF)F
 HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/GradientDrawable;->getIntrinsicWidth()I
 HSPLandroid/graphics/drawable/GradientDrawable;->getOpacity()I
@@ -6477,11 +5206,12 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/GradientDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
+HSPLandroid/graphics/drawable/GradientDrawable;->isOpaque(I)Z
 HSPLandroid/graphics/drawable/GradientDrawable;->isOpaqueForState()Z
 HSPLandroid/graphics/drawable/GradientDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/GradientDrawable;->modulateAlpha(I)I
 HSPLandroid/graphics/drawable/GradientDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/GradientDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/GradientDrawable;->onLevelChange(I)Z
 HSPLandroid/graphics/drawable/GradientDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/GradientDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setColor(I)V
@@ -6490,11 +5220,6 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadii([F)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setCornerRadius(F)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setDither(Z)V
-HSPLandroid/graphics/drawable/GradientDrawable;->setGradientRadius(F)V
-HSPLandroid/graphics/drawable/GradientDrawable;->setGradientType(I)V
-HSPLandroid/graphics/drawable/GradientDrawable;->setShape(I)V
-HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(II)V
-HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(IIFF)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(ILandroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setStroke(ILandroid/content/res/ColorStateList;FF)V
 HSPLandroid/graphics/drawable/GradientDrawable;->setStrokeInternal(IIFF)V
@@ -6503,33 +5228,42 @@
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableGradient(Landroid/content/res/Resources;Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawablePadding(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSize(Landroid/content/res/TypedArray;)V
+HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableSolid(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateGradientDrawableStroke(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateLocalState(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/GradientDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/Icon$1;-><init>()V
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/graphics/drawable/Icon;-><init>(I)V
 HSPLandroid/graphics/drawable/Icon;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/graphics/drawable/Icon;->createFromStream(Ljava/io/InputStream;)Landroid/graphics/drawable/Icon;
+HSPLandroid/graphics/drawable/Icon;-><init>(Landroid/os/Parcel;Landroid/graphics/drawable/Icon$1;)V
 HSPLandroid/graphics/drawable/Icon;->createWithBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon;->createWithResource(Landroid/content/Context;I)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon;->createWithResource(Ljava/lang/String;I)Landroid/graphics/drawable/Icon;
 HSPLandroid/graphics/drawable/Icon;->getBitmap()Landroid/graphics/Bitmap;
 HSPLandroid/graphics/drawable/Icon;->getResId()I
 HSPLandroid/graphics/drawable/Icon;->getResPackage()Ljava/lang/String;
-HSPLandroid/graphics/drawable/Icon;->getResources()Landroid/content/res/Resources;
 HSPLandroid/graphics/drawable/Icon;->getType()I
-HSPLandroid/graphics/drawable/Icon;->loadDrawable(Landroid/content/Context;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Icon;->loadDrawableInner(Landroid/content/Context;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/Icon;->hasTint()Z
+HSPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(II)V
 HSPLandroid/graphics/drawable/Icon;->scaleDownIfNecessary(Landroid/graphics/Bitmap;II)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/drawable/Icon;->setTint(I)Landroid/graphics/drawable/Icon;
+HSPLandroid/graphics/drawable/Icon;->setBitmap(Landroid/graphics/Bitmap;)V
 HSPLandroid/graphics/drawable/Icon;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/graphics/drawable/Icon;->writeToStream(Ljava/io/OutputStream;)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->access$000(Landroid/graphics/drawable/InsetDrawable$InsetState;)[I
+HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->access$002(Landroid/graphics/drawable/InsetDrawable$InsetState;[I)[I
+HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/InsetDrawable$InsetState;->onDensityChanged(II)V
-HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/Drawable;I)V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;-><init>()V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;-><init>(FI)V
+HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->clone()Landroid/graphics/drawable/InsetDrawable$InsetValue;
+HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->getDimension(I)I
+HSPLandroid/graphics/drawable/InsetDrawable$InsetValue;->scaleFromDensity(II)V
+HSPLandroid/graphics/drawable/InsetDrawable;-><init>()V
 HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/Drawable;IIII)V
+HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/InsetDrawable;-><init>(Landroid/graphics/drawable/InsetDrawable$InsetState;Landroid/content/res/Resources;Landroid/graphics/drawable/InsetDrawable$1;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->getInset(Landroid/content/res/TypedArray;ILandroid/graphics/drawable/InsetDrawable$InsetValue;)Landroid/graphics/drawable/InsetDrawable$InsetValue;
 HSPLandroid/graphics/drawable/InsetDrawable;->getInsets(Landroid/graphics/Rect;)V
@@ -6543,18 +5277,28 @@
 HSPLandroid/graphics/drawable/InsetDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/InsetDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
+HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(I)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/LayerDrawable$ChildDrawable;->setDensity(I)V
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/LayerDrawable;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$000(Landroid/graphics/drawable/LayerDrawable$LayerState;)[I
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$002(Landroid/graphics/drawable/LayerDrawable$LayerState;[I)[I
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$100(Landroid/graphics/drawable/LayerDrawable$LayerState;)Z
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$102(Landroid/graphics/drawable/LayerDrawable$LayerState;Z)Z
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$200(Landroid/graphics/drawable/LayerDrawable$LayerState;)I
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->access$202(Landroid/graphics/drawable/LayerDrawable$LayerState;I)I
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->canConstantState()Z
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getChangingConfigurations()I
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->getOpacity()I
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->invalidateCache()V
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->isStateful()Z
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->onDensityChanged(II)V
+HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->setDensity(I)V
+HSPLandroid/graphics/drawable/LayerDrawable;-><init>()V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/LayerDrawable;-><init>([Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/LayerDrawable$LayerState;)V
@@ -6566,6 +5310,7 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->computeNestedPadding(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->computeStackedPadding(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState;
+HSPLandroid/graphics/drawable/LayerDrawable;->createLayer(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
 HSPLandroid/graphics/drawable/LayerDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->ensurePadding()V
 HSPLandroid/graphics/drawable/LayerDrawable;->findDrawableByLayerId(I)Landroid/graphics/drawable/Drawable;
@@ -6591,26 +5336,27 @@
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshChildPadding(ILandroid/graphics/drawable/LayerDrawable$ChildDrawable;)Z
 HSPLandroid/graphics/drawable/LayerDrawable;->refreshPadding()V
 HSPLandroid/graphics/drawable/LayerDrawable;->resolveGravity(IIIII)I
-HSPLandroid/graphics/drawable/LayerDrawable;->setAlpha(I)V
+HSPLandroid/graphics/drawable/LayerDrawable;->resumeChildInvalidation()V
 HSPLandroid/graphics/drawable/LayerDrawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/LayerDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setDither(Z)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setDrawable(ILandroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setHotspot(FF)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setId(II)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setLayerInset(IIIII)V
-HSPLandroid/graphics/drawable/LayerDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
+HSPLandroid/graphics/drawable/LayerDrawable;->setPaddingMode(I)V
 HSPLandroid/graphics/drawable/LayerDrawable;->setVisible(ZZ)Z
+HSPLandroid/graphics/drawable/LayerDrawable;->suspendChildInvalidation()V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBounds(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerBoundsInternal(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateLayerFromTypedArray(Landroid/graphics/drawable/LayerDrawable$ChildDrawable;Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/LayerDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>()V
+HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/NinePatch;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V
 HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;-><init>(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;)V
+HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/NinePatchDrawable$NinePatchState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>()V
+HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>(Landroid/content/res/Resources;Landroid/graphics/Bitmap;[BLandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
+HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>(Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;Landroid/content/res/Resources;Landroid/graphics/drawable/NinePatchDrawable$1;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/NinePatchDrawable;->clearMutated()V
@@ -6622,35 +5368,43 @@
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getIntrinsicWidth()I
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getOpacity()I
-HSPLandroid/graphics/drawable/NinePatchDrawable;->getOpticalInsets()Landroid/graphics/Insets;
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getOutline(Landroid/graphics/Outline;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/NinePatchDrawable;->getPaint()Landroid/graphics/Paint;
 HSPLandroid/graphics/drawable/NinePatchDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->isAutoMirrored()Z
 HSPLandroid/graphics/drawable/NinePatchDrawable;->isStateful()Z
+HSPLandroid/graphics/drawable/NinePatchDrawable;->lambda$updateStateFromTypedArray$0(Landroid/graphics/Rect;Landroid/graphics/ImageDecoder;Landroid/graphics/ImageDecoder$ImageInfo;Landroid/graphics/ImageDecoder$Source;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->mutate()Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/NinePatchDrawable;->needsMirroring()Z
 HSPLandroid/graphics/drawable/NinePatchDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/NinePatchDrawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->setDither(Z)V
-HSPLandroid/graphics/drawable/NinePatchDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->updateLocalState(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/NinePatchDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/RippleBackground$1;-><init>(Ljava/lang/String;)V
+HSPLandroid/graphics/drawable/RippleComponent;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;)V
+HSPLandroid/graphics/drawable/RippleComponent;->getTargetRadius(Landroid/graphics/Rect;)F
+HSPLandroid/graphics/drawable/RippleComponent;->invalidateSelf()V
+HSPLandroid/graphics/drawable/RippleComponent;->setup(FI)V
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;-><init>(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/graphics/drawable/RippleDrawable;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable$RippleState;->onDensityChanged(II)V
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>()V
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/content/res/ColorStateList;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RippleDrawable;-><init>(Landroid/graphics/drawable/RippleDrawable$RippleState;Landroid/content/res/Resources;Landroid/graphics/drawable/RippleDrawable$1;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/RippleDrawable;->cancelExitingRipples()V
+HSPLandroid/graphics/drawable/RippleDrawable;->clearHotspots()V
 HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState;
 HSPLandroid/graphics/drawable/RippleDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/RippleDrawable$RippleState;
 HSPLandroid/graphics/drawable/RippleDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->drawBackgroundAndRipples(Landroid/graphics/Canvas;)V
+HSPLandroid/graphics/drawable/RippleDrawable;->drawContent(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/RippleDrawable;->getDirtyBounds()Landroid/graphics/Rect;
 HSPLandroid/graphics/drawable/RippleDrawable;->getMaskType()I
@@ -6660,11 +5414,13 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf()V
 HSPLandroid/graphics/drawable/RippleDrawable;->invalidateSelf(Z)V
+HSPLandroid/graphics/drawable/RippleDrawable;->isBounded()Z
 HSPLandroid/graphics/drawable/RippleDrawable;->isProjected()Z
 HSPLandroid/graphics/drawable/RippleDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/RippleDrawable;->jumpToCurrentState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/RippleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
+HSPLandroid/graphics/drawable/RippleDrawable;->onHotspotBoundsChanged()V
 HSPLandroid/graphics/drawable/RippleDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/RippleDrawable;->pruneRipples()V
 HSPLandroid/graphics/drawable/RippleDrawable;->setBackgroundActive(ZZZ)V
@@ -6672,36 +5428,57 @@
 HSPLandroid/graphics/drawable/RippleDrawable;->setHotspot(FF)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setHotspotBounds(IIII)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setPaddingMode(I)V
+HSPLandroid/graphics/drawable/RippleDrawable;->setRippleActive(Z)V
 HSPLandroid/graphics/drawable/RippleDrawable;->setVisible(ZZ)Z
 HSPLandroid/graphics/drawable/RippleDrawable;->tryRippleEnter()V
 HSPLandroid/graphics/drawable/RippleDrawable;->tryRippleExit()V
+HSPLandroid/graphics/drawable/RippleDrawable;->updateLocalState()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateMaskShaderIfNeeded()V
 HSPLandroid/graphics/drawable/RippleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RippleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
+HSPLandroid/graphics/drawable/RippleForeground$1;-><init>(Landroid/graphics/drawable/RippleForeground;)V
 HSPLandroid/graphics/drawable/RippleForeground$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLandroid/graphics/drawable/RippleForeground$2;-><init>(Ljava/lang/String;)V
 HSPLandroid/graphics/drawable/RippleForeground$2;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float;
 HSPLandroid/graphics/drawable/RippleForeground$2;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/graphics/drawable/RippleForeground$2;->setValue(Landroid/graphics/drawable/RippleForeground;F)V
 HSPLandroid/graphics/drawable/RippleForeground$2;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/RippleForeground$3;-><init>(Ljava/lang/String;)V
 HSPLandroid/graphics/drawable/RippleForeground$3;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float;
 HSPLandroid/graphics/drawable/RippleForeground$3;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/graphics/drawable/RippleForeground$3;->setValue(Landroid/graphics/drawable/RippleForeground;F)V
 HSPLandroid/graphics/drawable/RippleForeground$3;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/RippleForeground$4;-><init>(Ljava/lang/String;)V
 HSPLandroid/graphics/drawable/RippleForeground$4;->get(Landroid/graphics/drawable/RippleForeground;)Ljava/lang/Float;
 HSPLandroid/graphics/drawable/RippleForeground$4;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/graphics/drawable/RippleForeground$4;->setValue(Landroid/graphics/drawable/RippleForeground;F)V
 HSPLandroid/graphics/drawable/RippleForeground$4;->setValue(Ljava/lang/Object;F)V
 HSPLandroid/graphics/drawable/RippleForeground;-><init>(Landroid/graphics/drawable/RippleDrawable;Landroid/graphics/Rect;FFZ)V
+HSPLandroid/graphics/drawable/RippleForeground;->access$002(Landroid/graphics/drawable/RippleForeground;Z)Z
+HSPLandroid/graphics/drawable/RippleForeground;->access$100(Landroid/graphics/drawable/RippleForeground;)V
+HSPLandroid/graphics/drawable/RippleForeground;->access$200(Landroid/graphics/drawable/RippleForeground;)V
+HSPLandroid/graphics/drawable/RippleForeground;->access$300(Landroid/graphics/drawable/RippleForeground;)Ljava/util/ArrayList;
+HSPLandroid/graphics/drawable/RippleForeground;->access$400(Landroid/graphics/drawable/RippleForeground;)V
+HSPLandroid/graphics/drawable/RippleForeground;->access$500(Landroid/graphics/drawable/RippleForeground;)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$502(Landroid/graphics/drawable/RippleForeground;F)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$600(Landroid/graphics/drawable/RippleForeground;)V
+HSPLandroid/graphics/drawable/RippleForeground;->access$700(Landroid/graphics/drawable/RippleForeground;)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$702(Landroid/graphics/drawable/RippleForeground;F)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$802(Landroid/graphics/drawable/RippleForeground;F)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$900(Landroid/graphics/drawable/RippleForeground;)F
+HSPLandroid/graphics/drawable/RippleForeground;->access$902(Landroid/graphics/drawable/RippleForeground;F)F
 HSPLandroid/graphics/drawable/RippleForeground;->clampStartingPosition()V
+HSPLandroid/graphics/drawable/RippleForeground;->clearHwProps()V
+HSPLandroid/graphics/drawable/RippleForeground;->computeFadeOutDelay()J
 HSPLandroid/graphics/drawable/RippleForeground;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/drawable/RippleForeground;->drawSoftware(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
+HSPLandroid/graphics/drawable/RippleForeground;->drawHardware(Landroid/graphics/RecordingCanvas;Landroid/graphics/Paint;)V
 HSPLandroid/graphics/drawable/RippleForeground;->end()V
+HSPLandroid/graphics/drawable/RippleForeground;->enter()V
+HSPLandroid/graphics/drawable/RippleForeground;->exit()V
 HSPLandroid/graphics/drawable/RippleForeground;->getBounds(Landroid/graphics/Rect;)V
+HSPLandroid/graphics/drawable/RippleForeground;->getCurrentRadius()F
+HSPLandroid/graphics/drawable/RippleForeground;->getCurrentX()F
+HSPLandroid/graphics/drawable/RippleForeground;->getCurrentY()F
 HSPLandroid/graphics/drawable/RippleForeground;->hasFinishedExit()Z
 HSPLandroid/graphics/drawable/RippleForeground;->move(FF)V
+HSPLandroid/graphics/drawable/RippleForeground;->onAnimationPropertyChanged()V
 HSPLandroid/graphics/drawable/RippleForeground;->onTargetRadiusChanged(F)V
 HSPLandroid/graphics/drawable/RippleForeground;->pruneHwFinished()V
 HSPLandroid/graphics/drawable/RippleForeground;->pruneSwFinished()V
@@ -6712,28 +5489,34 @@
 HSPLandroid/graphics/drawable/RippleForeground;->startSoftwareExit()V
 HSPLandroid/graphics/drawable/RippleForeground;->switchToUiThreadAnimation()V
 HSPLandroid/graphics/drawable/RotateDrawable$RotateState;-><init>(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->access$002(Landroid/graphics/drawable/RotateDrawable$RotateState;[I)[I
 HSPLandroid/graphics/drawable/RotateDrawable$RotateState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/RotateDrawable;-><init>()V
+HSPLandroid/graphics/drawable/RotateDrawable;-><init>(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/RotateDrawable;-><init>(Landroid/graphics/drawable/RotateDrawable$RotateState;Landroid/content/res/Resources;Landroid/graphics/drawable/RotateDrawable$1;)V
 HSPLandroid/graphics/drawable/RotateDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/RotateDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/RotateDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;-><init>(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->access$000(Landroid/graphics/drawable/ScaleDrawable$ScaleState;)[I
+HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->access$002(Landroid/graphics/drawable/ScaleDrawable$ScaleState;[I)[I
 HSPLandroid/graphics/drawable/ScaleDrawable$ScaleState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/ScaleDrawable;-><init>()V
+HSPLandroid/graphics/drawable/ScaleDrawable;-><init>(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/ScaleDrawable;-><init>(Landroid/graphics/drawable/ScaleDrawable$ScaleState;Landroid/content/res/Resources;Landroid/graphics/drawable/ScaleDrawable$1;)V
 HSPLandroid/graphics/drawable/ScaleDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
-HSPLandroid/graphics/drawable/ScaleDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/ScaleDrawable;->getPercent(Landroid/content/res/TypedArray;IF)F
 HSPLandroid/graphics/drawable/ScaleDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/ScaleDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
 HSPLandroid/graphics/drawable/ScaleDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
-HSPLandroid/graphics/drawable/ScaleDrawable;->onLevelChange(I)Z
+HSPLandroid/graphics/drawable/ScaleDrawable;->updateLocalState()V
 HSPLandroid/graphics/drawable/ScaleDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/ScaleDrawable;->verifyRequiredAttributes(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/ShapeDrawable$ShapeState;-><init>(Landroid/graphics/drawable/ShapeDrawable$ShapeState;)V
-HSPLandroid/graphics/drawable/ShapeDrawable;-><init>()V
+HSPLandroid/graphics/drawable/ShapeDrawable$ShapeState;-><init>()V
+HSPLandroid/graphics/drawable/ShapeDrawable;-><init>(Landroid/graphics/drawable/ShapeDrawable$ShapeState;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;-><init>(Landroid/graphics/drawable/shapes/Shape;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->getAlpha()I
-HSPLandroid/graphics/drawable/ShapeDrawable;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/ShapeDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/ShapeDrawable;->getIntrinsicWidth()I
 HSPLandroid/graphics/drawable/ShapeDrawable;->getOpacity()I
@@ -6741,21 +5524,21 @@
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPadding(Landroid/graphics/Rect;)Z
 HSPLandroid/graphics/drawable/ShapeDrawable;->getPaint()Landroid/graphics/Paint;
 HSPLandroid/graphics/drawable/ShapeDrawable;->isStateful()Z
-HSPLandroid/graphics/drawable/ShapeDrawable;->mutate()Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/ShapeDrawable;->modulateAlpha(II)I
 HSPLandroid/graphics/drawable/ShapeDrawable;->onBoundsChange(Landroid/graphics/Rect;)V
 HSPLandroid/graphics/drawable/ShapeDrawable;->onDraw(Landroid/graphics/drawable/shapes/Shape;Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/drawable/ShapeDrawable;->setAlpha(I)V
-HSPLandroid/graphics/drawable/ShapeDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/graphics/drawable/ShapeDrawable;->setIntrinsicHeight(I)V
-HSPLandroid/graphics/drawable/ShapeDrawable;->setIntrinsicWidth(I)V
-HSPLandroid/graphics/drawable/ShapeDrawable;->setShape(Landroid/graphics/drawable/shapes/Shape;)V
+HSPLandroid/graphics/drawable/ShapeDrawable;->updateLocalState()V
 HSPLandroid/graphics/drawable/ShapeDrawable;->updateShape()V
+HSPLandroid/graphics/drawable/StateListDrawable$StateListState;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/graphics/drawable/StateListDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->addStateSet([ILandroid/graphics/drawable/Drawable;)I
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->indexOfStateSet([I)I
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->mutate()V
-HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->newDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/graphics/drawable/StateListDrawable$StateListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/StateListDrawable;-><init>()V
+HSPLandroid/graphics/drawable/StateListDrawable;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;)V
+HSPLandroid/graphics/drawable/StateListDrawable;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/StateListDrawable;-><init>(Landroid/graphics/drawable/StateListDrawable$StateListState;Landroid/content/res/Resources;Landroid/graphics/drawable/StateListDrawable$1;)V
 HSPLandroid/graphics/drawable/StateListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/StateListDrawable;->clearMutated()V
 HSPLandroid/graphics/drawable/StateListDrawable;->cloneConstantState()Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;
@@ -6768,65 +5551,51 @@
 HSPLandroid/graphics/drawable/StateListDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/StateListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
 HSPLandroid/graphics/drawable/StateListDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/TransitionDrawable;-><init>([Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/graphics/drawable/TransitionDrawable$TransitionState;-><init>(Landroid/graphics/drawable/TransitionDrawable$TransitionState;Landroid/graphics/drawable/TransitionDrawable;Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/TransitionDrawable;->createConstantState(Landroid/graphics/drawable/LayerDrawable$LayerState;Landroid/content/res/Resources;)Landroid/graphics/drawable/LayerDrawable$LayerState;
-HSPLandroid/graphics/drawable/TransitionDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/drawable/TransitionDrawable;->startTransition(I)V
-HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->getNativePtr()J
-HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->getNativeSize()I
-HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VClipPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$10;-><init>()V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$1;-><init>()V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$2;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$3;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$4;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$5;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$6;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$7;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$8;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath$9;-><init>(Ljava/lang/String;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;-><init>()V
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;-><init>(Landroid/graphics/drawable/VectorDrawable$VFullPath;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->canApplyTheme()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getFillColor()I
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->canComplexColorApplyTheme(Landroid/content/res/ComplexColor;)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativePtr()J
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getNativeSize()I
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->getPropertyIndex(Ljava/lang/String;)I
+HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->isStateful()Z
-HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VFullPath;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$1;-><init>()V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$2;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$3;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$4;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$5;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$6;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$7;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$8;-><init>(Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$9;-><init>()V
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>()V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;-><init>(Landroid/graphics/drawable/VectorDrawable$VGroup;Landroid/util/ArrayMap;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->access$100(Landroid/graphics/drawable/VectorDrawable$VGroup;)I
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->access$200(Landroid/graphics/drawable/VectorDrawable$VGroup;)J
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->addChild(Landroid/graphics/drawable/VectorDrawable$VObject;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->canApplyTheme()Z
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getGroupName()Ljava/lang/String;
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativePtr()J
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getNativeSize()I
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getProperty(Ljava/lang/String;)Landroid/util/Property;
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->getPropertyIndex(Ljava/lang/String;)I
+HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->inflate(Landroid/content/res/Resources;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->isStateful()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VObject;->isTreeValid()Z
+HSPLandroid/graphics/drawable/VectorDrawable$VObject;-><init>()V
 HSPLandroid/graphics/drawable/VectorDrawable$VObject;->setTree(Lcom/android/internal/util/VirtualRefBasePtr;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState$1;-><init>(Ljava/lang/String;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VPath;-><init>()V
+HSPLandroid/graphics/drawable/VectorDrawable$VPath;-><init>(Landroid/graphics/drawable/VectorDrawable$VPath;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getPathName()Ljava/lang/String;
+HSPLandroid/graphics/drawable/VectorDrawable$VPath;->getProperty(Ljava/lang/String;)Landroid/util/Property;
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->access$000(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyDensityScaling(II)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->canReuseCache()Z
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTree(Landroid/graphics/drawable/VectorDrawable$VGroup;)V
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->createNativeTreeFromCopy(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/graphics/drawable/VectorDrawable$VGroup;)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->finalize()V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getAlpha()F
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getChangingConfigurations()I
@@ -6837,14 +5606,30 @@
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->onTreeConstructionFinished()V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setAlpha(F)Z
+HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setDensity(I)Z
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->setViewportSize(FF)V
 HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->updateCacheStates()V
+HSPLandroid/graphics/drawable/VectorDrawable;-><init>()V
+HSPLandroid/graphics/drawable/VectorDrawable;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/content/res/Resources;)V
+HSPLandroid/graphics/drawable/VectorDrawable;-><init>(Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/VectorDrawable$1;)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$1600(J)J
+HSPLandroid/graphics/drawable/VectorDrawable;->access$1700()J
+HSPLandroid/graphics/drawable/VectorDrawable;->access$1800(JJ)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$1900(J[FI)Z
 HSPLandroid/graphics/drawable/VectorDrawable;->access$2000(JLjava/lang/String;)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$2100(JFFFFFFF)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$300(J)J
 HSPLandroid/graphics/drawable/VectorDrawable;->access$3900(JLjava/lang/String;I)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$400(JJ)J
+HSPLandroid/graphics/drawable/VectorDrawable;->access$4800()J
+HSPLandroid/graphics/drawable/VectorDrawable;->access$4900(J)J
 HSPLandroid/graphics/drawable/VectorDrawable;->access$5200(J[BI)Z
 HSPLandroid/graphics/drawable/VectorDrawable;->access$5300(JJ)V
 HSPLandroid/graphics/drawable/VectorDrawable;->access$5400(JJ)V
 HSPLandroid/graphics/drawable/VectorDrawable;->access$5500(JFIFIFFFFFIII)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$600(JFF)V
+HSPLandroid/graphics/drawable/VectorDrawable;->access$700(JF)Z
+HSPLandroid/graphics/drawable/VectorDrawable;->access$800(J)F
 HSPLandroid/graphics/drawable/VectorDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLandroid/graphics/drawable/VectorDrawable;->canApplyTheme()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->clearMutated()V
@@ -6852,7 +5637,6 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/graphics/drawable/VectorDrawable;->getAlpha()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getChangingConfigurations()I
-HSPLandroid/graphics/drawable/VectorDrawable;->getColorFilter()Landroid/graphics/ColorFilter;
 HSPLandroid/graphics/drawable/VectorDrawable;->getConstantState()Landroid/graphics/drawable/Drawable$ConstantState;
 HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicHeight()I
 HSPLandroid/graphics/drawable/VectorDrawable;->getIntrinsicWidth()I
@@ -6865,55 +5649,68 @@
 HSPLandroid/graphics/drawable/VectorDrawable;->isAutoMirrored()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->isStateful()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->mutate()Landroid/graphics/drawable/Drawable;
+HSPLandroid/graphics/drawable/VectorDrawable;->needMirroring()Z
 HSPLandroid/graphics/drawable/VectorDrawable;->onStateChange([I)Z
 HSPLandroid/graphics/drawable/VectorDrawable;->setAllowCaching(Z)V
-HSPLandroid/graphics/drawable/VectorDrawable;->setAlpha(I)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setAutoMirrored(Z)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
+HSPLandroid/graphics/drawable/VectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V
 HSPLandroid/graphics/drawable/VectorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/VectorDrawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
+HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V
 HSPLandroid/graphics/drawable/VectorDrawable;->updateLocalState(Landroid/content/res/Resources;)V
 HSPLandroid/graphics/drawable/VectorDrawable;->updateStateFromTypedArray(Landroid/content/res/TypedArray;)V
 HSPLandroid/graphics/drawable/shapes/OvalShape;-><init>()V
-HSPLandroid/graphics/drawable/shapes/OvalShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/drawable/shapes/OvalShape;->getOutline(Landroid/graphics/Outline;)V
-HSPLandroid/graphics/drawable/shapes/PathShape;-><init>(Landroid/graphics/Path;FF)V
-HSPLandroid/graphics/drawable/shapes/PathShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/drawable/shapes/PathShape;->onResize(FF)V
-HSPLandroid/graphics/drawable/shapes/RectShape;->onResize(FF)V
-HSPLandroid/graphics/drawable/shapes/RoundRectShape;-><init>([FLandroid/graphics/RectF;[F)V
-HSPLandroid/graphics/drawable/shapes/RoundRectShape;->draw(Landroid/graphics/Canvas;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/drawable/shapes/RoundRectShape;->onResize(FF)V
+HSPLandroid/graphics/drawable/shapes/RectShape;-><init>()V
+HSPLandroid/graphics/drawable/shapes/RectShape;->rect()Landroid/graphics/RectF;
+HSPLandroid/graphics/drawable/shapes/Shape;-><init>()V
+HSPLandroid/graphics/drawable/shapes/Shape;->resize(FF)V
+HSPLandroid/graphics/fonts/Font$Builder;-><init>(Landroid/content/res/AssetManager;Ljava/lang/String;ZI)V
+HSPLandroid/graphics/fonts/Font$Builder;-><init>(Landroid/os/ParcelFileDescriptor;)V
+HSPLandroid/graphics/fonts/Font$Builder;-><init>(Landroid/os/ParcelFileDescriptor;JJ)V
 HSPLandroid/graphics/fonts/Font$Builder;-><init>(Ljava/nio/ByteBuffer;)V
 HSPLandroid/graphics/fonts/Font$Builder;->build()Landroid/graphics/fonts/Font;
 HSPLandroid/graphics/fonts/Font$Builder;->setFontVariationSettings([Landroid/graphics/fonts/FontVariationAxis;)Landroid/graphics/fonts/Font$Builder;
+HSPLandroid/graphics/fonts/Font$Builder;->setSlant(I)Landroid/graphics/fonts/Font$Builder;
+HSPLandroid/graphics/fonts/Font$Builder;->setTtcIndex(I)Landroid/graphics/fonts/Font$Builder;
 HSPLandroid/graphics/fonts/Font$Builder;->setWeight(I)Landroid/graphics/fonts/Font$Builder;
 HSPLandroid/graphics/fonts/Font;-><init>(JLjava/nio/ByteBuffer;Ljava/io/File;Landroid/graphics/fonts/FontStyle;I[Landroid/graphics/fonts/FontVariationAxis;Ljava/lang/String;)V
-HSPLandroid/graphics/fonts/FontCustomizationParser;->readFamilies(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/graphics/fonts/FontCustomizationParser$Result;
-HSPLandroid/graphics/fonts/FontCustomizationParser;->readFamily(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Landroid/graphics/fonts/FontCustomizationParser$Result;)V
-HSPLandroid/graphics/fonts/FontCustomizationParser;->validate(Landroid/graphics/fonts/FontCustomizationParser$Result;)V
+HSPLandroid/graphics/fonts/Font;->getAxes()[Landroid/graphics/fonts/FontVariationAxis;
+HSPLandroid/graphics/fonts/Font;->getNativePtr()J
+HSPLandroid/graphics/fonts/Font;->getStyle()Landroid/graphics/fonts/FontStyle;
+HSPLandroid/graphics/fonts/Font;->getTtcIndex()I
 HSPLandroid/graphics/fonts/FontFamily$Builder;-><init>(Landroid/graphics/fonts/Font;)V
-HSPLandroid/graphics/fonts/FontFamily$Builder;->addFont(Landroid/graphics/fonts/Font;)Landroid/graphics/fonts/FontFamily$Builder;
 HSPLandroid/graphics/fonts/FontFamily$Builder;->build()Landroid/graphics/fonts/FontFamily;
 HSPLandroid/graphics/fonts/FontFamily$Builder;->build(Ljava/lang/String;IZ)Landroid/graphics/fonts/FontFamily;
+HSPLandroid/graphics/fonts/FontFamily$Builder;->makeStyleIdentifier(Landroid/graphics/fonts/Font;)I
+HSPLandroid/graphics/fonts/FontFamily;-><init>(Ljava/util/ArrayList;J)V
+HSPLandroid/graphics/fonts/FontFamily;-><init>(Ljava/util/ArrayList;JLandroid/graphics/fonts/FontFamily$1;)V
 HSPLandroid/graphics/fonts/FontFamily;->getFont(I)Landroid/graphics/fonts/Font;
+HSPLandroid/graphics/fonts/FontFamily;->getNativePtr()J
 HSPLandroid/graphics/fonts/FontFamily;->getSize()I
+HSPLandroid/graphics/fonts/FontFileUtil;->analyzeStyle(Ljava/nio/ByteBuffer;I[Landroid/graphics/fonts/FontVariationAxis;)I
+HSPLandroid/graphics/fonts/FontFileUtil;->pack(IZ)I
 HSPLandroid/graphics/fonts/FontStyle;-><init>(II)V
 HSPLandroid/graphics/fonts/FontStyle;->getMatchScore(Landroid/graphics/fonts/FontStyle;)I
-HSPLandroid/graphics/fonts/FontVariationAxis;-><init>(Ljava/lang/String;F)V
-HSPLandroid/graphics/fonts/FontVariationAxis;->fromFontVariationSettings(Ljava/lang/String;)[Landroid/graphics/fonts/FontVariationAxis;
-HSPLandroid/graphics/fonts/SystemFonts;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/graphics/fonts/SystemFonts;->appendNamedFamily(Landroid/text/FontConfig$Family;Ljava/util/HashMap;Landroid/util/ArrayMap;Ljava/util/ArrayList;)V
-HSPLandroid/graphics/fonts/SystemFonts;->buildSystemFallback(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/fonts/FontCustomizationParser$Result;Landroid/util/ArrayMap;Ljava/util/ArrayList;)[Landroid/text/FontConfig$Alias;
-HSPLandroid/graphics/fonts/SystemFonts;->createFontFamily(Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ILjava/util/Map;Ljava/util/ArrayList;)Landroid/graphics/fonts/FontFamily;
-HSPLandroid/graphics/fonts/SystemFonts;->getAliases()[Landroid/text/FontConfig$Alias;
-HSPLandroid/graphics/fonts/SystemFonts;->getRawSystemFallbackMap()Ljava/util/Map;
-HSPLandroid/graphics/fonts/SystemFonts;->mmap(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-HSPLandroid/graphics/fonts/SystemFonts;->pushFamilyToFallback(Landroid/text/FontConfig$Family;Landroid/util/ArrayMap;Ljava/util/Map;Ljava/util/ArrayList;)V
-HSPLandroid/graphics/fonts/SystemFonts;->readFontCustomization(Ljava/lang/String;Ljava/lang/String;)Landroid/graphics/fonts/FontCustomizationParser$Result;
+HSPLandroid/graphics/fonts/FontStyle;->getSlant()I
+HSPLandroid/graphics/fonts/FontStyle;->getWeight()I
+HSPLandroid/graphics/fonts/SystemFonts;->getSystemFallback(Ljava/lang/String;)[Landroid/graphics/fonts/FontFamily;
 HSPLandroid/graphics/text/LineBreaker$Builder;-><init>()V
 HSPLandroid/graphics/text/LineBreaker$Builder;->build()Landroid/graphics/text/LineBreaker;
+HSPLandroid/graphics/text/LineBreaker$Builder;->setBreakStrategy(I)Landroid/graphics/text/LineBreaker$Builder;
+HSPLandroid/graphics/text/LineBreaker$Builder;->setHyphenationFrequency(I)Landroid/graphics/text/LineBreaker$Builder;
+HSPLandroid/graphics/text/LineBreaker$Builder;->setIndents([I)Landroid/graphics/text/LineBreaker$Builder;
+HSPLandroid/graphics/text/LineBreaker$Builder;->setJustificationMode(I)Landroid/graphics/text/LineBreaker$Builder;
 HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;-><init>()V
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->access$1000(Landroid/graphics/text/LineBreaker$ParagraphConstraints;)F
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->access$1100(Landroid/graphics/text/LineBreaker$ParagraphConstraints;)[F
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->access$1200(Landroid/graphics/text/LineBreaker$ParagraphConstraints;)F
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->access$800(Landroid/graphics/text/LineBreaker$ParagraphConstraints;)F
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->access$900(Landroid/graphics/text/LineBreaker$ParagraphConstraints;)I
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setIndent(FI)V
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setTabStops([FF)V
+HSPLandroid/graphics/text/LineBreaker$ParagraphConstraints;->setWidth(F)V
+HSPLandroid/graphics/text/LineBreaker$Result;-><init>(J)V
+HSPLandroid/graphics/text/LineBreaker$Result;-><init>(JLandroid/graphics/text/LineBreaker$1;)V
 HSPLandroid/graphics/text/LineBreaker$Result;->getEndLineHyphenEdit(I)I
 HSPLandroid/graphics/text/LineBreaker$Result;->getLineAscent(I)F
 HSPLandroid/graphics/text/LineBreaker$Result;->getLineBreakOffset(I)I
@@ -6922,285 +5719,103 @@
 HSPLandroid/graphics/text/LineBreaker$Result;->getLineWidth(I)F
 HSPLandroid/graphics/text/LineBreaker$Result;->getStartLineHyphenEdit(I)I
 HSPLandroid/graphics/text/LineBreaker$Result;->hasLineTab(I)Z
-HSPLandroid/graphics/text/LineBreaker;->access$100()J
+HSPLandroid/graphics/text/LineBreaker;-><init>(III[I)V
+HSPLandroid/graphics/text/LineBreaker;-><init>(III[ILandroid/graphics/text/LineBreaker$1;)V
+HSPLandroid/graphics/text/LineBreaker;->access$200(J)I
+HSPLandroid/graphics/text/LineBreaker;->access$300(JI)I
+HSPLandroid/graphics/text/LineBreaker;->access$400(JI)F
+HSPLandroid/graphics/text/LineBreaker;->access$500(JI)F
+HSPLandroid/graphics/text/LineBreaker;->access$600(JI)F
+HSPLandroid/graphics/text/LineBreaker;->access$700(JI)I
 HSPLandroid/graphics/text/LineBreaker;->computeLineBreaks(Landroid/graphics/text/MeasuredText;Landroid/graphics/text/LineBreaker$ParagraphConstraints;I)Landroid/graphics/text/LineBreaker$Result;
 HSPLandroid/graphics/text/MeasuredText$Builder;-><init>([C)V
-HSPLandroid/graphics/text/MeasuredText$Builder;->appendReplacementRun(Landroid/graphics/Paint;IF)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->appendStyleRun(Landroid/graphics/Paint;IZ)Landroid/graphics/text/MeasuredText$Builder;
 HSPLandroid/graphics/text/MeasuredText$Builder;->build()Landroid/graphics/text/MeasuredText;
-HSPLandroid/graphics/text/MeasuredText;->access$000()J
+HSPLandroid/graphics/text/MeasuredText$Builder;->ensureNativePtrNoReuse()V
+HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeHyphenation(Z)Landroid/graphics/text/MeasuredText$Builder;
+HSPLandroid/graphics/text/MeasuredText$Builder;->setComputeLayout(Z)Landroid/graphics/text/MeasuredText$Builder;
+HSPLandroid/graphics/text/MeasuredText;-><init>(J[CZZ)V
+HSPLandroid/graphics/text/MeasuredText;-><init>(J[CZZLandroid/graphics/text/MeasuredText$1;)V
 HSPLandroid/graphics/text/MeasuredText;->getCharWidthAt(I)F
 HSPLandroid/graphics/text/MeasuredText;->getChars()[C
 HSPLandroid/graphics/text/MeasuredText;->getNativePtr()J
-PLandroid/gsi/IGsiService$Stub$Proxy;->isGsiInstalled()Z
-PLandroid/gsi/IGsiService$Stub$Proxy;->isGsiRunning()Z
-PLandroid/gsi/IGsiService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/gsi/IGsiService;
-HSPLandroid/hardware/Camera;->getCameraInfo(ILandroid/hardware/Camera$CameraInfo;)V
-HSPLandroid/hardware/CameraStatus$1;-><init>()V
 HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/CameraStatus;
 HSPLandroid/hardware/CameraStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Landroid/hardware/CameraStatus;
 HSPLandroid/hardware/CameraStatus$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/hardware/GeomagneticField$LegendreTable;-><init>(IF)V
-HSPLandroid/hardware/GeomagneticField;-><init>(FFFJ)V
-HSPLandroid/hardware/GeomagneticField;->computeGeocentricCoordinates(FFF)V
-HSPLandroid/hardware/GeomagneticField;->computeSchmidtQuasiNormFactors(I)[[F
-HSPLandroid/hardware/GeomagneticField;->getDeclination()F
-HSPLandroid/hardware/GeomagneticField;->getFieldStrength()F
-HSPLandroid/hardware/GeomagneticField;->getHorizontalStrength()F
-HPLandroid/hardware/GeomagneticField;->getInclination()F
-HSPLandroid/hardware/HardwareBuffer$1;-><init>()V
 HSPLandroid/hardware/HardwareBuffer;-><init>(J)V
+HSPLandroid/hardware/HardwareBuffer;->close()V
 HSPLandroid/hardware/HardwareBuffer;->createFromGraphicBuffer(Landroid/graphics/GraphicBuffer;)Landroid/hardware/HardwareBuffer;
 HSPLandroid/hardware/HardwareBuffer;->finalize()V
+HSPLandroid/hardware/HardwareBuffer;->getFormat()I
+HSPLandroid/hardware/HardwareBuffer;->getUsage()J
+HSPLandroid/hardware/HardwareBuffer;->isClosed()Z
+HSPLandroid/hardware/ICameraService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/hardware/ICameraService$Stub$Proxy;->addListener(Landroid/hardware/ICameraServiceListener;)[Landroid/hardware/CameraStatus;
-HSPLandroid/hardware/ICameraService$Stub$Proxy;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/impl/CameraMetadataNative;
-HSPLandroid/hardware/ICameraService$Stub$Proxy;->isHiddenPhysicalCamera(Ljava/lang/String;)Z
-HSPLandroid/hardware/ICameraService$Stub$Proxy;->notifySystemEvent(I[I)V
-HSPLandroid/hardware/ICameraService$Stub$Proxy;->supportsCameraApi(Ljava/lang/String;I)Z
 HSPLandroid/hardware/ICameraService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ICameraService;
 HSPLandroid/hardware/ICameraServiceListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/ICameraServiceProxy$Stub;-><init>()V
-HSPLandroid/hardware/ICameraServiceProxy$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/IConsumerIrService$Stub;-><init>()V
-HSPLandroid/hardware/ISensorPrivacyListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/ISensorPrivacyManager$Stub;-><init>()V
-HSPLandroid/hardware/ISensorPrivacyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/ISerialManager$Stub;-><init>()V
-HSPLandroid/hardware/Sensor;->getName()Ljava/lang/String;
-HSPLandroid/hardware/Sensor;->getVendor()Ljava/lang/String;
+HSPLandroid/hardware/Sensor;-><init>()V
+HSPLandroid/hardware/Sensor;->getHandle()I
+HSPLandroid/hardware/Sensor;->getMaxLengthValuesArray(Landroid/hardware/Sensor;I)I
+HSPLandroid/hardware/Sensor;->getMaximumRange()F
+HSPLandroid/hardware/Sensor;->getReportingMode()I
+HSPLandroid/hardware/Sensor;->getType()I
+HSPLandroid/hardware/Sensor;->isWakeUpSensor()Z
 HSPLandroid/hardware/Sensor;->setType(I)Z
 HSPLandroid/hardware/Sensor;->setUuid(JJ)V
-PLandroid/hardware/SensorAdditionalInfo;->createLocalGeomagneticField(FFF)Landroid/hardware/SensorAdditionalInfo;
-HSPLandroid/hardware/SensorManager;->cancelTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z
+HSPLandroid/hardware/SensorEvent;-><init>(I)V
+HSPLandroid/hardware/SensorManager;-><init>()V
 HSPLandroid/hardware/SensorManager;->getDefaultSensor(I)Landroid/hardware/Sensor;
-HSPLandroid/hardware/SensorManager;->getDefaultSensor(IZ)Landroid/hardware/Sensor;
+HSPLandroid/hardware/SensorManager;->getDelay(I)I
 HSPLandroid/hardware/SensorManager;->getSensorList(I)Ljava/util/List;
 HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;I)Z
 HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;)Z
-HSPLandroid/hardware/SensorManager;->requestTriggerSensor(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z
-HPLandroid/hardware/SensorManager;->setOperationParameter(Landroid/hardware/SensorAdditionalInfo;)Z
 HSPLandroid/hardware/SensorManager;->unregisterListener(Landroid/hardware/SensorEventListener;)V
 HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;-><init>(Landroid/os/Looper;Landroid/hardware/SystemSensorManager;ILjava/lang/String;)V
 HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->addSensor(Landroid/hardware/Sensor;II)Z
+HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->disableSensor(Landroid/hardware/Sensor;)I
+HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispose()V
+HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->dispose(Z)V
+HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->enableSensor(Landroid/hardware/Sensor;II)I
 HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->finalize()V
+HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->hasSensors()Z
 HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->removeAllSensors()Z
 HSPLandroid/hardware/SystemSensorManager$BaseEventQueue;->removeSensor(Landroid/hardware/Sensor;Z)Z
+HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;-><init>(Landroid/hardware/SensorEventListener;Landroid/os/Looper;Landroid/hardware/SystemSensorManager;Ljava/lang/String;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->dispatchSensorEvent(I[FIJ)V
 HSPLandroid/hardware/SystemSensorManager$SensorEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
-HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->addSensorEvent(Landroid/hardware/Sensor;)V
-PLandroid/hardware/SystemSensorManager$TriggerEventQueue;->dispatchSensorEvent(I[FIJ)V
-HSPLandroid/hardware/SystemSensorManager$TriggerEventQueue;->removeSensorEvent(Landroid/hardware/Sensor;)V
 HSPLandroid/hardware/SystemSensorManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLandroid/hardware/SystemSensorManager;->cancelTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;Z)Z
+HSPLandroid/hardware/SystemSensorManager;->access$200(Landroid/hardware/SystemSensorManager;)J
+HSPLandroid/hardware/SystemSensorManager;->access$300(Landroid/hardware/SystemSensorManager;)Landroid/content/Context;
+HSPLandroid/hardware/SystemSensorManager;->access$400(Landroid/hardware/SystemSensorManager;)Ljava/util/HashMap;
+HSPLandroid/hardware/SystemSensorManager;->access$500(Landroid/hardware/SystemSensorManager;)I
 HSPLandroid/hardware/SystemSensorManager;->getFullSensorList()Ljava/util/List;
 HSPLandroid/hardware/SystemSensorManager;->registerListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;ILandroid/os/Handler;II)Z
-HSPLandroid/hardware/SystemSensorManager;->requestTriggerSensorImpl(Landroid/hardware/TriggerEventListener;Landroid/hardware/Sensor;)Z
-HPLandroid/hardware/SystemSensorManager;->setOperationParameterImpl(Landroid/hardware/SensorAdditionalInfo;)Z
 HSPLandroid/hardware/SystemSensorManager;->unregisterListenerImpl(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;)V
-HSPLandroid/hardware/biometrics/BiometricAuthenticator$Identifier;->getBiometricId()I
+HSPLandroid/hardware/TriggerEventListener;-><init>()V
+HSPLandroid/hardware/biometrics/BiometricManager;-><init>(Landroid/content/Context;Landroid/hardware/biometrics/IAuthService;)V
 HSPLandroid/hardware/biometrics/BiometricManager;->hasBiometrics(Landroid/content/Context;)Z
-HPLandroid/hardware/biometrics/BiometricManager;->resetLockout([B)V
-HSPLandroid/hardware/biometrics/BiometricSourceType$1;-><init>()V
-HSPLandroid/hardware/biometrics/BiometricSourceType$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/biometrics/BiometricSourceType;
-HSPLandroid/hardware/biometrics/BiometricSourceType$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/biometrics/BiometricSourceType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/hardware/biometrics/BiometricSourceType;->values()[Landroid/hardware/biometrics/BiometricSourceType;
-HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub$Proxy;->onChanged(Landroid/hardware/biometrics/BiometricSourceType;Z)V
-HSPLandroid/hardware/biometrics/IBiometricService$Stub;-><init>()V
-HSPLandroid/hardware/biometrics/IBiometricService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub$Proxy;->onLockoutReset(JLandroid/os/IRemoteCallback;)V
-HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;
-HSPLandroid/hardware/biometrics/IBiometricServiceReceiverInternal$Stub;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$1;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$2;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$3;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$4;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$5;-><init>()V
-HSPLandroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V
-HSPLandroid/hardware/camera2/CameraCharacteristics$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-HSPLandroid/hardware/camera2/CameraCharacteristics$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key;
-HSPLandroid/hardware/camera2/CameraCharacteristics;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;->compare(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;-><init>()V
+HSPLandroid/hardware/biometrics/IAuthService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/biometrics/IAuthService;
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->asBinder()Landroid/os/IBinder;
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->connectCameraServiceLocked()V
-HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraIdList()[Ljava/lang/String;
-HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->getCameraService()Landroid/hardware/ICameraService;
+HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->get()Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onCameraAccessPrioritiesChanged()V
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onStatusChangedLocked(ILjava/lang/String;)V
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChanged(ILjava/lang/String;)V
 HSPLandroid/hardware/camera2/CameraManager$CameraManagerGlobal;->onTorchStatusChangedLocked(ILjava/lang/String;)V
 HSPLandroid/hardware/camera2/CameraManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/hardware/camera2/CameraManager;->getCameraCharacteristics(Ljava/lang/String;)Landroid/hardware/camera2/CameraCharacteristics;
-HSPLandroid/hardware/camera2/CameraManager;->getCameraIdList()[Ljava/lang/String;
-HSPLandroid/hardware/camera2/CameraManager;->getDisplaySize()Landroid/util/Size;
-HSPLandroid/hardware/camera2/CameraManager;->isHiddenPhysicalCamera(Ljava/lang/String;)Z
-HSPLandroid/hardware/camera2/CameraManager;->supportsCameraApiLocked(Ljava/lang/String;I)Z
-HSPLandroid/hardware/camera2/CaptureRequest$1;-><init>()V
-HSPLandroid/hardware/camera2/CaptureRequest$2;-><init>()V
-HSPLandroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V
-HSPLandroid/hardware/camera2/CaptureRequest$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-HSPLandroid/hardware/camera2/CaptureRequest$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key;
-HSPLandroid/hardware/camera2/CaptureResult$1;-><init>()V
-HSPLandroid/hardware/camera2/CaptureResult$2;-><init>()V
-HSPLandroid/hardware/camera2/CaptureResult$3;-><init>()V
-HSPLandroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V
-HSPLandroid/hardware/camera2/CaptureResult$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-HSPLandroid/hardware/camera2/CaptureResult$Key;->getNativeKey()Landroid/hardware/camera2/impl/CameraMetadataNative$Key;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$10;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$11;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$12;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$13;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$14;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$15;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$16;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$17;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$18;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$19;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$1;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/camera2/impl/CameraMetadataNative;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$20;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$21;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$2;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$3;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$4;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$5;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$6;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$7;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$8;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$9;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;-><init>(Ljava/lang/String;Landroid/hardware/camera2/utils/TypeReference;)V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative$Key;->hashCode()I
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;-><init>()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->finalize()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/CameraCharacteristics$Key;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->get(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->getBase(Landroid/hardware/camera2/impl/CameraMetadataNative$Key;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->readValues(I)[B
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->registerAllMarshalers()V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setCameraId(I)V
-HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setDisplaySize(Landroid/util/Size;)V
 HSPLandroid/hardware/camera2/impl/CameraMetadataNative;->setupGlobalVendorTagDescriptor()V
-HSPLandroid/hardware/camera2/marshal/MarshalHelpers;->checkNativeType(I)I
-HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/camera2/marshal/MarshalRegistry$MarshalToken;->hashCode()I
-HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->getMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler;
-HSPLandroid/hardware/camera2/marshal/MarshalRegistry;->registerMarshalQueryable(Landroid/hardware/camera2/marshal/MarshalQueryable;)V
-HSPLandroid/hardware/camera2/marshal/Marshaler;-><init>(Landroid/hardware/camera2/marshal/MarshalQueryable;Landroid/hardware/camera2/utils/TypeReference;I)V
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableArray;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableEnum;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Integer;
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger$MarshalerNativeByteToInteger;->unmarshal(Ljava/nio/ByteBuffer;)Ljava/lang/Object;
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler;
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableNativeByteToInteger;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryablePrimitive;->isTypeMappingSupported(Landroid/hardware/camera2/utils/TypeReference;I)Z
-HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$ReprocessType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$SizeThreshold;-><init>(Ljava/lang/String;I)V
-HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$StreamCombinationTemplate;-><init>([Landroid/hardware/camera2/params/MandatoryStreamCombination$StreamTemplate;Ljava/lang/String;)V
-HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$StreamCombinationTemplate;-><init>([Landroid/hardware/camera2/params/MandatoryStreamCombination$StreamTemplate;Ljava/lang/String;Landroid/hardware/camera2/params/MandatoryStreamCombination$ReprocessType;)V
-HSPLandroid/hardware/camera2/params/MandatoryStreamCombination$StreamTemplate;-><init>(ILandroid/hardware/camera2/params/MandatoryStreamCombination$SizeThreshold;)V
-PLandroid/hardware/camera2/utils/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
-HSPLandroid/hardware/camera2/utils/TypeReference;-><init>()V
-HSPLandroid/hardware/camera2/utils/TypeReference;->containsTypeVariable(Ljava/lang/reflect/Type;)Z
-HSPLandroid/hardware/camera2/utils/TypeReference;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/camera2/utils/TypeReference;->getRawType(Ljava/lang/reflect/Type;)Ljava/lang/Class;
-HSPLandroid/hardware/camera2/utils/TypeReference;->getType()Ljava/lang/reflect/Type;
-HSPLandroid/hardware/camera2/utils/TypeReference;->hashCode()I
-HSPLandroid/hardware/contexthub/V1_0/ContextHub;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/contexthub/V1_0/ContextHub;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/contexthub/V1_0/ContextHubMsg;-><init>()V
-HSPLandroid/hardware/contexthub/V1_0/ContextHubMsg;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/contexthub/V1_0/ContextHubMsg;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/contexthub/V1_0/HubAppInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/contexthub/V1_0/HubAppInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->getHubs()Ljava/util/ArrayList;
-HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->interfaceChain()Ljava/util/ArrayList;
-HPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->loadNanoApp(ILandroid/hardware/contexthub/V1_0/NanoAppBinary;I)I
-HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->queryApps(I)I
-HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->registerCallback(ILandroid/hardware/contexthub/V1_0/IContexthubCallback;)I
-HSPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->sendMessageToHub(ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)I
-HPLandroid/hardware/contexthub/V1_0/IContexthub$Proxy;->unloadNanoApp(IJI)I
-HSPLandroid/hardware/contexthub/V1_0/IContexthub;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/contexthub/V1_0/IContexthub;
-HSPLandroid/hardware/contexthub/V1_0/IContexthub;->getService(Z)Landroid/hardware/contexthub/V1_0/IContexthub;
-HSPLandroid/hardware/contexthub/V1_0/IContexthubCallback$Stub;-><init>()V
-HSPLandroid/hardware/contexthub/V1_0/IContexthubCallback$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/contexthub/V1_0/IContexthubCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-PLandroid/hardware/contexthub/V1_0/NanoAppBinary;-><init>()V
-HPLandroid/hardware/contexthub/V1_0/NanoAppBinary;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/display/AmbientBrightnessDayStats$1;-><init>()V
-HSPLandroid/hardware/display/AmbientBrightnessDayStats;-><init>(Ljava/time/LocalDate;[F)V
-HSPLandroid/hardware/display/AmbientBrightnessDayStats;-><init>(Ljava/time/LocalDate;[F[F)V
-HSPLandroid/hardware/display/AmbientBrightnessDayStats;->getBucketIndex(F)I
-HSPLandroid/hardware/display/AmbientBrightnessDayStats;->log(FF)V
-HPLandroid/hardware/display/AmbientBrightnessDayStats;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/hardware/display/AmbientDisplayConfiguration;-><init>(Landroid/content/Context;)V
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->accessibilityInversionEnabled(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnAvailable()Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnAvailableForUser(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->alwaysOnEnabled(I)Z
 HSPLandroid/hardware/display/AmbientDisplayConfiguration;->ambientDisplayAvailable()Z
 HSPLandroid/hardware/display/AmbientDisplayConfiguration;->ambientDisplayComponent()Ljava/lang/String;
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->doubleTapGestureEnabled(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->doubleTapSensorAvailable()Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->doubleTapSensorType()Ljava/lang/String;
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->dozePickupSensorAvailable()Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->enabled(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->longPressSensorType()Ljava/lang/String;
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pickupGestureEnabled(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pulseOnNotificationAvailable()Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->pulseOnNotificationEnabled(I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->tapSensorAvailable()Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->tapSensorType()Ljava/lang/String;
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->wakeScreenGestureAvailable()Z
-HSPLandroid/hardware/display/BrightnessChangeEvent$1;-><init>()V
-HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;-><init>()V
-HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;->build()Landroid/hardware/display/BrightnessChangeEvent;
-HSPLandroid/hardware/display/BrightnessChangeEvent$Builder;->setColorValues([JJ)Landroid/hardware/display/BrightnessChangeEvent$Builder;
-HSPLandroid/hardware/display/BrightnessChangeEvent;-><init>(FJLjava/lang/String;I[F[JFFZIFZZ[JJ)V
-HPLandroid/hardware/display/BrightnessChangeEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/display/BrightnessConfiguration$1;-><init>()V
-HPLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/BrightnessConfiguration;
-HPLandroid/hardware/display/BrightnessConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;-><init>([F[F)V
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->addCorrectionByCategory(ILandroid/hardware/display/BrightnessCorrection;)Landroid/hardware/display/BrightnessConfiguration$Builder;
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->addCorrectionByPackageName(Ljava/lang/String;Landroid/hardware/display/BrightnessCorrection;)Landroid/hardware/display/BrightnessConfiguration$Builder;
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->build()Landroid/hardware/display/BrightnessConfiguration;
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->checkMonotonic([FZLjava/lang/String;)V
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->getMaxCorrectionsByCategory()I
-HSPLandroid/hardware/display/BrightnessConfiguration$Builder;->getMaxCorrectionsByPackageName()I
-HSPLandroid/hardware/display/BrightnessConfiguration;->equals(Ljava/lang/Object;)Z
-HPLandroid/hardware/display/BrightnessConfiguration;->getCorrectionByCategory(I)Landroid/hardware/display/BrightnessCorrection;
-HSPLandroid/hardware/display/BrightnessConfiguration;->getCorrectionByPackageName(Ljava/lang/String;)Landroid/hardware/display/BrightnessCorrection;
-HSPLandroid/hardware/display/BrightnessConfiguration;->getCurve()Landroid/util/Pair;
-HSPLandroid/hardware/display/BrightnessConfiguration;->loadFloatFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)F
-HSPLandroid/hardware/display/BrightnessConfiguration;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/hardware/display/BrightnessConfiguration;
-HPLandroid/hardware/display/BrightnessConfiguration;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/hardware/display/BrightnessCorrection$1;-><init>()V
-HPLandroid/hardware/display/BrightnessCorrection$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/BrightnessCorrection;
-HPLandroid/hardware/display/BrightnessCorrection$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/display/BrightnessCorrection$ScaleAndTranslateLog;-><init>(FF)V
-HSPLandroid/hardware/display/BrightnessCorrection$ScaleAndTranslateLog;->apply(F)F
-HSPLandroid/hardware/display/BrightnessCorrection;->apply(F)F
-HSPLandroid/hardware/display/BrightnessCorrection;->loadFloatFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)F
+HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSetting(Ljava/lang/String;II)Z
+HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSettingDefaultOn(Ljava/lang/String;I)Z
 HSPLandroid/hardware/display/ColorDisplayManager$ColorDisplayManagerInternal;->getInstance()Landroid/hardware/display/ColorDisplayManager$ColorDisplayManagerInternal;
-HSPLandroid/hardware/display/ColorDisplayManager$ColorDisplayManagerInternal;->getNightDisplayAutoMode()I
-HSPLandroid/hardware/display/ColorDisplayManager$ColorDisplayManagerInternal;->isNightDisplayActivated()Z
-HSPLandroid/hardware/display/ColorDisplayManager;->getMaximumColorTemperature(Landroid/content/Context;)I
-HSPLandroid/hardware/display/ColorDisplayManager;->getMinimumColorTemperature(Landroid/content/Context;)I
-HSPLandroid/hardware/display/ColorDisplayManager;->getNightDisplayAutoMode()I
-HSPLandroid/hardware/display/ColorDisplayManager;->isDisplayWhiteBalanceAvailable(Landroid/content/Context;)Z
-HSPLandroid/hardware/display/ColorDisplayManager;->isNightDisplayActivated()Z
+HSPLandroid/hardware/display/ColorDisplayManager;-><init>()V
 HSPLandroid/hardware/display/ColorDisplayManager;->isNightDisplayAvailable(Landroid/content/Context;)Z
-HSPLandroid/hardware/display/Curve$1;-><init>()V
 HSPLandroid/hardware/display/DisplayManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/hardware/display/DisplayManager;->addAllDisplaysLocked(Ljava/util/ArrayList;[I)V
 HSPLandroid/hardware/display/DisplayManager;->addPresentationDisplaysLocked(Ljava/util/ArrayList;[II)V
 HSPLandroid/hardware/display/DisplayManager;->getDisplay(I)Landroid/view/Display;
 HSPLandroid/hardware/display/DisplayManager;->getDisplays()[Landroid/view/Display;
@@ -7209,9 +5824,18 @@
 HSPLandroid/hardware/display/DisplayManager;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
 HSPLandroid/hardware/display/DisplayManager;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
 HSPLandroid/hardware/display/DisplayManager;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;-><init>(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Looper;)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->clearEvents()V
 HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayListenerDelegate;->sendDisplayEvent(II)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;)V
+HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;-><init>(Landroid/hardware/display/DisplayManagerGlobal;Landroid/hardware/display/DisplayManagerGlobal$1;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal$DisplayManagerCallback;->onDisplayEvent(II)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;-><init>(Landroid/hardware/display/IDisplayManager;)V
+HSPLandroid/hardware/display/DisplayManagerGlobal;->access$100(Landroid/hardware/display/DisplayManagerGlobal;II)V
+HSPLandroid/hardware/display/DisplayManagerGlobal;->findDisplayListenerLocked(Landroid/hardware/display/DisplayManager$DisplayListener;)I
+HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/content/res/Resources;)Landroid/view/Display;
+HSPLandroid/hardware/display/DisplayManagerGlobal;->getCompatibleDisplay(ILandroid/view/DisplayAdjustments;)Landroid/view/Display;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayIds()[I
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getDisplayInfo(I)Landroid/view/DisplayInfo;
 HSPLandroid/hardware/display/DisplayManagerGlobal;->getInstance()Landroid/hardware/display/DisplayManagerGlobal;
@@ -7221,533 +5845,237 @@
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerCallbackIfNeededLocked()V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
 HSPLandroid/hardware/display/DisplayManagerGlobal;->unregisterDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;)V
-HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;-><init>(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V
-HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->copyFrom(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V
-HSPLandroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;->equals(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)Z
-HSPLandroid/hardware/display/DisplayViewport;-><init>()V
-HSPLandroid/hardware/display/DisplayViewport;->copyFrom(Landroid/hardware/display/DisplayViewport;)V
-HSPLandroid/hardware/display/DisplayViewport;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/display/DisplayViewport;->makeCopy()Landroid/hardware/display/DisplayViewport;
-HSPLandroid/hardware/display/DisplayedContentSamplingAttributes;-><init>(III)V
-HSPLandroid/hardware/display/IColorDisplayManager$Stub$Proxy;->getNightDisplayAutoMode()I
-HSPLandroid/hardware/display/IColorDisplayManager$Stub$Proxy;->isNightDisplayActivated()Z
-HSPLandroid/hardware/display/IColorDisplayManager$Stub;-><init>()V
-HSPLandroid/hardware/display/IColorDisplayManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayIds()[I
 HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getDisplayInfo(I)Landroid/view/DisplayInfo;
 HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getPreferredWideGamutColorSpaceId()I
 HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
 HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V
-HSPLandroid/hardware/display/IDisplayManager$Stub;-><init>()V
-HPLandroid/hardware/display/IDisplayManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/hardware/display/IDisplayManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;->onDisplayEvent(II)V
+HSPLandroid/hardware/display/IDisplayManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/display/IDisplayManager;
+HSPLandroid/hardware/display/IDisplayManagerCallback$Stub;-><init>()V
 HSPLandroid/hardware/display/IDisplayManagerCallback$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/hardware/display/IDisplayManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/display/NightDisplayListener;-><init>(Landroid/content/Context;ILandroid/os/Handler;)V
-HSPLandroid/hardware/display/NightDisplayListener;->setCallback(Landroid/hardware/display/NightDisplayListener$Callback;)V
-HSPLandroid/hardware/display/NightDisplayListener;->setCallbackInternal(Landroid/hardware/display/NightDisplayListener$Callback;)V
-HSPLandroid/hardware/display/Time$1;-><init>()V
-HSPLandroid/hardware/display/Time;-><init>(Ljava/time/LocalTime;)V
-HSPLandroid/hardware/display/Time;->getLocalTime()Ljava/time/LocalTime;
-HSPLandroid/hardware/display/WifiDisplay$1;-><init>()V
 HSPLandroid/hardware/display/WifiDisplay$1;->newArray(I)[Landroid/hardware/display/WifiDisplay;
 HSPLandroid/hardware/display/WifiDisplay$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;-><init>()V
 HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/WifiDisplaySessionInfo;
 HSPLandroid/hardware/display/WifiDisplaySessionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/display/WifiDisplayStatus$1;-><init>()V
+HSPLandroid/hardware/display/WifiDisplaySessionInfo;-><init>(ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/hardware/display/WifiDisplayStatus$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/display/WifiDisplayStatus;
 HSPLandroid/hardware/display/WifiDisplayStatus$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/display/WifiDisplayStatus;-><init>()V
 HSPLandroid/hardware/display/WifiDisplayStatus;-><init>(IIILandroid/hardware/display/WifiDisplay;[Landroid/hardware/display/WifiDisplay;Landroid/hardware/display/WifiDisplaySessionInfo;)V
-HSPLandroid/hardware/display/WifiDisplayStatus;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/fingerprint/Fingerprint$1;-><init>()V
-HSPLandroid/hardware/fingerprint/Fingerprint;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/fingerprint/FingerprintManager;-><init>(Landroid/content/Context;Landroid/hardware/fingerprint/IFingerprintService;)V
-HSPLandroid/hardware/fingerprint/FingerprintManager;->getAcquiredString(Landroid/content/Context;II)Ljava/lang/String;
-HSPLandroid/hardware/fingerprint/FingerprintManager;->getEnrolledFingerprints(I)Ljava/util/List;
-HSPLandroid/hardware/fingerprint/FingerprintManager;->isHardwareDetected()Z
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List;
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->isHardwareDetected(JLjava/lang/String;)Z
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;-><init>()V
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintService;
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onAcquired(JII)V
-PLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onAuthenticationFailed(J)V
-HPLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onAuthenticationSucceeded(JLandroid/hardware/fingerprint/Fingerprint;I)V
-HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;->onError(JII)V
-HSPLandroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/fingerprint/IFingerprintServiceReceiver;
-HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;->onInputDevicesChanged([I)V
+HSPLandroid/hardware/display/WifiDisplayStatus;->getActiveDisplay()Landroid/hardware/display/WifiDisplay;
+HSPLandroid/hardware/display/WifiDisplayStatus;->getFeatureState()I
+HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub;-><init>()V
 HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/input/IInputDevicesChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/hardware/input/IInputManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->getInputDevice(I)Landroid/view/InputDevice;
 HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->getInputDeviceIds()[I
 HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
-HSPLandroid/hardware/input/IInputManager$Stub;-><init>()V
-HSPLandroid/hardware/input/IInputManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/input/InputDeviceIdentifier$1;-><init>()V
+HSPLandroid/hardware/input/IInputManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/input/IInputManager;
 HSPLandroid/hardware/input/InputDeviceIdentifier;-><init>(Ljava/lang/String;II)V
-HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;->onInputDevicesChanged([I)V
+HSPLandroid/hardware/input/InputManager$InputDeviceListenerDelegate;-><init>(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V
+HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;-><init>(Landroid/hardware/input/InputManager;)V
+HSPLandroid/hardware/input/InputManager$InputDevicesChangedListener;-><init>(Landroid/hardware/input/InputManager;Landroid/hardware/input/InputManager$1;)V
+HSPLandroid/hardware/input/InputManager;-><init>(Landroid/hardware/input/IInputManager;)V
+HSPLandroid/hardware/input/InputManager;->findInputDeviceListenerLocked(Landroid/hardware/input/InputManager$InputDeviceListener;)I
 HSPLandroid/hardware/input/InputManager;->getInputDevice(I)Landroid/view/InputDevice;
 HSPLandroid/hardware/input/InputManager;->getInputDeviceIds()[I
 HSPLandroid/hardware/input/InputManager;->getInstance()Landroid/hardware/input/InputManager;
-HSPLandroid/hardware/input/InputManager;->onInputDevicesChanged([I)V
 HSPLandroid/hardware/input/InputManager;->populateInputDevicesLocked()V
 HSPLandroid/hardware/input/InputManager;->registerInputDeviceListener(Landroid/hardware/input/InputManager$InputDeviceListener;Landroid/os/Handler;)V
-HSPLandroid/hardware/input/KeyboardLayout$1;-><init>()V
-HSPLandroid/hardware/input/TouchCalibration$1;-><init>()V
-HSPLandroid/hardware/input/TouchCalibration;-><init>()V
-HSPLandroid/hardware/input/TouchCalibration;->getAffineTransform()[F
-HSPLandroid/hardware/location/ActivityRecognitionHardware;->isSupported()Z
-HSPLandroid/hardware/location/ContextHubInfo$1;-><init>()V
-HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/hardware/contexthub/V1_0/ContextHub;)V
 HSPLandroid/hardware/location/ContextHubInfo;->getId()I
-HSPLandroid/hardware/location/ContextHubInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/location/ContextHubMessage$1;-><init>()V
 HSPLandroid/hardware/location/ContextHubMessage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/ContextHubMessage;
 HSPLandroid/hardware/location/ContextHubMessage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/location/ContextHubMessage;-><init>(II[B)V
-HSPLandroid/hardware/location/ContextHubMessage;->getData()[B
-HSPLandroid/hardware/location/ContextHubMessage;->getMsgType()I
-HSPLandroid/hardware/location/ContextHubMessage;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/hardware/location/GeofenceHardwareImpl$1;->handleMessage(Landroid/os/Message;)V
-PLandroid/hardware/location/GeofenceHardwareImpl$2;->handleMessage(Landroid/os/Message;)V
-HPLandroid/hardware/location/GeofenceHardwareImpl$3;->handleMessage(Landroid/os/Message;)V
-HPLandroid/hardware/location/GeofenceHardwareImpl$Reaper;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/location/GeofenceHardwareImpl;-><init>(Landroid/content/Context;)V
-HPLandroid/hardware/location/GeofenceHardwareImpl;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z
-HSPLandroid/hardware/location/GeofenceHardwareImpl;->getInstance(Landroid/content/Context;)Landroid/hardware/location/GeofenceHardwareImpl;
-PLandroid/hardware/location/GeofenceHardwareImpl;->getMonitoringTypes()[I
-PLandroid/hardware/location/GeofenceHardwareImpl;->getStatusOfMonitoringType(I)I
-HPLandroid/hardware/location/GeofenceHardwareImpl;->removeGeofence(II)Z
-HPLandroid/hardware/location/GeofenceHardwareImpl;->reportGeofenceAddStatus(II)V
-PLandroid/hardware/location/GeofenceHardwareImpl;->reportGeofenceMonitorStatus(IILandroid/location/Location;I)V
-HPLandroid/hardware/location/GeofenceHardwareImpl;->reportGeofenceRemoveStatus(II)V
-HPLandroid/hardware/location/GeofenceHardwareImpl;->reportGeofenceTransition(ILandroid/location/Location;IJII)V
-HSPLandroid/hardware/location/GeofenceHardwareImpl;->setMonitorAvailability(II)V
-HSPLandroid/hardware/location/GeofenceHardwareImpl;->updateGpsHardwareAvailability()V
-PLandroid/hardware/location/GeofenceHardwareMonitorEvent$1;-><init>()V
-PLandroid/hardware/location/GeofenceHardwareMonitorEvent;->getMonitoringType()I
-PLandroid/hardware/location/GeofenceHardwareMonitorEvent;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/hardware/location/GeofenceHardwareRequestParcelable$1;-><init>()V
-HPLandroid/hardware/location/GeofenceHardwareRequestParcelable$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/GeofenceHardwareRequestParcelable;
-PLandroid/hardware/location/GeofenceHardwareRequestParcelable$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/hardware/location/GeofenceHardwareService$1;->addCircularFence(ILandroid/hardware/location/GeofenceHardwareRequestParcelable;Landroid/hardware/location/IGeofenceHardwareCallback;)Z
-PLandroid/hardware/location/GeofenceHardwareService$1;->getMonitoringTypes()[I
-PLandroid/hardware/location/GeofenceHardwareService$1;->getStatusOfMonitoringType(I)I
-PLandroid/hardware/location/GeofenceHardwareService$1;->registerForMonitorStateChangeCallback(ILandroid/hardware/location/IGeofenceHardwareMonitorCallback;)Z
-HPLandroid/hardware/location/GeofenceHardwareService$1;->removeGeofence(II)Z
-HSPLandroid/hardware/location/GeofenceHardwareService$1;->setGpsGeofenceHardware(Landroid/location/IGpsGeofenceHardware;)V
-HSPLandroid/hardware/location/GeofenceHardwareService;-><init>()V
-HPLandroid/hardware/location/GeofenceHardwareService;->checkPermission(III)V
-HSPLandroid/hardware/location/GeofenceHardwareService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/hardware/location/GeofenceHardwareService;->onCreate()V
-PLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;->onAvailabilityChanged(ZLandroid/hardware/location/IActivityRecognitionHardware;)V
-PLandroid/hardware/location/IActivityRecognitionHardwareClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardwareClient;
-HSPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IContextHubCallback$Stub$Proxy;->onMessageReceipt(IILandroid/hardware/location/ContextHubMessage;)V
-HSPLandroid/hardware/location/IContextHubClient$Stub;-><init>()V
-HSPLandroid/hardware/location/IContextHubClient$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/hardware/location/ContextHubMessage;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/hardware/location/ContextHubMessage;-><init>(Landroid/os/Parcel;Landroid/hardware/location/ContextHubMessage$1;)V
 HSPLandroid/hardware/location/IContextHubClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubClient;
-HSPLandroid/hardware/location/IContextHubClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
-PLandroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onNanoAppLoaded(J)V
-PLandroid/hardware/location/IContextHubClientCallback$Stub$Proxy;->onNanoAppUnloaded(J)V
 HSPLandroid/hardware/location/IContextHubClientCallback$Stub;-><init>()V
 HSPLandroid/hardware/location/IContextHubClientCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IContextHubService$Stub;-><init>()V
-HSPLandroid/hardware/location/IContextHubService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;->onQueryResponse(ILjava/util/List;)V
 HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub;-><init>()V
-PLandroid/hardware/location/IGeofenceHardware$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IGeofenceHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IGeofenceHardware;
-HPLandroid/hardware/location/IGeofenceHardware$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceAdd(II)V
-HPLandroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceRemove(II)V
-HPLandroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;->onGeofenceTransition(IILandroid/location/Location;JI)V
-PLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;->onMonitoringSystemChange(Landroid/hardware/location/GeofenceHardwareMonitorEvent;)V
-HSPLandroid/hardware/location/NanoApp$1;-><init>()V
-PLandroid/hardware/location/NanoApp$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoApp;
-PLandroid/hardware/location/NanoApp$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/hardware/location/NanoApp;-><init>(Landroid/os/Parcel;)V
-PLandroid/hardware/location/NanoApp;->getAppBinary()[B
-PLandroid/hardware/location/NanoAppBinary$1;-><init>()V
-PLandroid/hardware/location/NanoAppBinary;-><init>([B)V
-PLandroid/hardware/location/NanoAppBinary;->getBinaryNoHeader()[B
-PLandroid/hardware/location/NanoAppBinary;->parseBinaryHeader()V
-HSPLandroid/hardware/location/NanoAppFilter$1;-><init>()V
-PLandroid/hardware/location/NanoAppFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppFilter;
-PLandroid/hardware/location/NanoAppFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/hardware/location/NanoAppFilter;->testMatch(Landroid/hardware/location/NanoAppInstanceInfo;)Z
-HSPLandroid/hardware/location/NanoAppInstanceInfo$1;-><init>()V
-HSPLandroid/hardware/location/NanoAppInstanceInfo;-><init>(IJII)V
-HSPLandroid/hardware/location/NanoAppInstanceInfo;->getAppId()J
-HSPLandroid/hardware/location/NanoAppInstanceInfo;->getAppVersion()I
-HSPLandroid/hardware/location/NanoAppInstanceInfo;->getContexthubId()I
-HSPLandroid/hardware/location/NanoAppInstanceInfo;->getHandle()I
-HPLandroid/hardware/location/NanoAppInstanceInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/location/NanoAppMessage$1;-><init>()V
 HSPLandroid/hardware/location/NanoAppMessage$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppMessage;
 HSPLandroid/hardware/location/NanoAppMessage$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/hardware/location/NanoAppMessage;-><init>(JI[BZ)V
 HSPLandroid/hardware/location/NanoAppMessage;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/hardware/location/NanoAppMessage;->createMessageFromNanoApp(JI[BZ)Landroid/hardware/location/NanoAppMessage;
+HSPLandroid/hardware/location/NanoAppMessage;-><init>(Landroid/os/Parcel;Landroid/hardware/location/NanoAppMessage$1;)V
 HSPLandroid/hardware/location/NanoAppMessage;->createMessageToNanoApp(JI[B)Landroid/hardware/location/NanoAppMessage;
-HSPLandroid/hardware/location/NanoAppState$1;-><init>()V
-HSPLandroid/hardware/location/NanoAppState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/radio/ProgramSelector$1;-><init>()V
-HSPLandroid/hardware/radio/ProgramSelector$Identifier$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$AmBandConfig$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$AmBandDescriptor$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$BandConfig$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$BandDescriptor$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$FmBandConfig$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$FmBandDescriptor$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$ModuleProperties$1;-><init>()V
-HSPLandroid/hardware/radio/RadioManager$ProgramInfo$1;-><init>()V
-HSPLandroid/hardware/radio/RadioMetadata$1;-><init>()V
-HSPLandroid/hardware/radio/V1_0/ActivityStatsInfo;-><init>()V
-HSPLandroid/hardware/radio/V1_0/ActivityStatsInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/ActivityStatsInfo;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/AppStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/CardStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->hashCode()I
-HSPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->writeVectorToParcel(Landroid/os/HwParcel;Ljava/util/ArrayList;)V
-HSPLandroid/hardware/radio/V1_0/CellIdentityLte;->hashCode()I
-HSPLandroid/hardware/radio/V1_0/CellIdentityLte;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/CellIdentityWcdma;->hashCode()I
-HSPLandroid/hardware/radio/V1_0/CellIdentityWcdma;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/DataProfileInfo;-><init>()V
-HSPLandroid/hardware/radio/V1_0/DataProfileInfo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;->writeVectorToParcel(Landroid/os/HwParcel;Ljava/util/ArrayList;)V
-HSPLandroid/hardware/radio/V1_0/HardwareConfig;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_0/IccIo;-><init>()V
-HSPLandroid/hardware/radio/V1_0/IccIo;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/IccIoResult;-><init>()V
-HSPLandroid/hardware/radio/V1_0/IccIoResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/IccIoResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/LteSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/RadioCapability;-><init>()V
-HSPLandroid/hardware/radio/V1_0/RadioCapability;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/RadioCapability;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/RadioResponseInfo;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;-><init>()V
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->hashCode()I
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_0/SimApdu;-><init>()V
-HSPLandroid/hardware/radio/V1_0/SimApdu;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/WcdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/Call;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_2/CardStatus;-><init>()V
-HSPLandroid/hardware/radio/V1_2/CardStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/CardStatus;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_2/CellIdentity;-><init>()V
-HSPLandroid/hardware/radio/V1_2/CellIdentity;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/CellIdentity;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/CellIdentityLte;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/CellIdentityOperatorNames;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/CellIdentityOperatorNames;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/CellIdentityWcdma;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/CellInfo;-><init>()V
-HSPLandroid/hardware/radio/V1_2/CellInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/CellInfo;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_2/DataRegStateResult;-><init>()V
-HSPLandroid/hardware/radio/V1_2/DataRegStateResult;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/DataRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/DataRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_2/LinkCapacityEstimate;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_2/PhysicalChannelConfig;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_2/SignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_2/SignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/SignalStrength;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_2/VoiceRegStateResult;-><init>()V
-HSPLandroid/hardware/radio/V1_2/VoiceRegStateResult;->hashCode()I
-HSPLandroid/hardware/radio/V1_2/VoiceRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_2/VoiceRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->deactivateDataCall_1_2(III)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getBasebandVersion(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getCdmaSubscriptionSource(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getCellInfoList(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getCurrentCalls(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getDataRegistrationState(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getDeviceIdentity(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getFacilityLockForApp(ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getHardwareConfig(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getIccCardStatus(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getImsRegistrationState(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getImsiForApp(ILjava/lang/String;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getModemActivityInfo(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getNetworkSelectionMode(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getOperator(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getRadioCapability(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getSignalStrength(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getVoiceRadioTechnology(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->getVoiceRegistrationState(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccCloseLogicalChannel(II)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccIOForApp(ILandroid/hardware/radio/V1_0/IccIo;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccOpenLogicalChannel(ILjava/lang/String;I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->iccTransmitApduLogicalChannel(ILandroid/hardware/radio/V1_0/SimApdu;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->reportStkServiceIsRunning(I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->responseAcknowledgement()V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->sendDeviceState(IIZ)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setCdmaBroadcastConfig(ILjava/util/ArrayList;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setCdmaSubscriptionSource(II)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setGsmBroadcastActivation(IZ)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setGsmBroadcastConfig(ILjava/util/ArrayList;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setIndicationFilter_1_2(II)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setInitialAttachApn(ILandroid/hardware/radio/V1_0/DataProfileInfo;ZZ)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setLinkCapacityReportingCriteria(IIIILjava/util/ArrayList;Ljava/util/ArrayList;I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setPreferredNetworkType(II)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setRadioPower(IZ)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setResponseFunctions(Landroid/hardware/radio/V1_0/IRadioResponse;Landroid/hardware/radio/V1_0/IRadioIndication;)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setSignalStrengthReportingCriteria(IIILjava/util/ArrayList;I)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setTTYMode(II)V
-HSPLandroid/hardware/radio/V1_3/IRadio$Proxy;->setupDataCall_1_2(IILandroid/hardware/radio/V1_0/DataProfileInfo;ZZZILjava/util/ArrayList;Ljava/util/ArrayList;)V
-HSPLandroid/hardware/radio/V1_3/IRadio;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/V1_3/IRadio;
-HSPLandroid/hardware/radio/V1_3/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_3/IRadio;
-HSPLandroid/hardware/radio/V1_4/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_4/IRadio;
-HSPLandroid/hardware/radio/V1_4/IRadioIndication$Stub;-><init>()V
-HSPLandroid/hardware/radio/V1_4/IRadioIndication$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/V1_4/IRadioIndication$Stub;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_4/IRadioIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/radio/V1_4/IRadioResponse$Stub;-><init>()V
-HSPLandroid/hardware/radio/V1_4/IRadioResponse$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/V1_4/IRadioResponse$Stub;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/V1_4/IRadioResponse$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/radio/config/V1_0/SimSlotStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/config/V1_0/SimSlotStatus;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->getPhoneCapability(I)V
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->getSimSlotsStatus(I)V
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->setPreferredDataModem(IB)V
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig$Proxy;->setResponseFunctions(Landroid/hardware/radio/config/V1_0/IRadioConfigResponse;Landroid/hardware/radio/config/V1_0/IRadioConfigIndication;)V
-HSPLandroid/hardware/radio/config/V1_1/IRadioConfig;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/config/V1_1/IRadioConfig;
-HSPLandroid/hardware/radio/config/V1_1/PhoneCapability;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/config/V1_2/IRadioConfigIndication$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/config/V1_2/IRadioConfigIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/radio/config/V1_2/IRadioConfigResponse$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/config/V1_2/IRadioConfigResponse$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onKeyphraseDetected(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
-PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onRecognitionPaused()V
-PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;->onRecognitionResumed()V
-HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;-><init>()V
-HSPLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;
-HPLandroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B)V
-HPLandroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;->toString()Ljava/lang/String;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
-HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$Keyphrase$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$Keyphrase;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;-><init>(IIZIIIZLandroid/media/AudioFormat;[B[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;)V
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;-><init>(III[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;)V
-HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties$1;-><init>()V
-HSPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIIIZIZIZ)V
-HPLandroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;
-HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;->fromParcel(Landroid/os/Parcel;)Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;
-HSPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->toString()Ljava/lang/String;
-HPLandroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/hardware/soundtrigger/SoundTrigger$SoundModel;->equals(Ljava/lang/Object;)Z
-HSPLandroid/hardware/soundtrigger/SoundTrigger$SoundModelEvent$1;-><init>()V
-HPLandroid/hardware/soundtrigger/SoundTrigger;->attachModule(ILandroid/hardware/soundtrigger/SoundTrigger$StatusListener;Landroid/os/Handler;)Landroid/hardware/soundtrigger/SoundTriggerModule;
-PLandroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate$1;->handleMessage(Landroid/os/Message;)V
-PLandroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;->handler()Landroid/os/Handler;
-HPLandroid/hardware/soundtrigger/SoundTriggerModule;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-HSPLandroid/hardware/thermal/V1_0/ThermalStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/thermal/V2_0/IThermal$Proxy;->getCurrentTemperatures(ZILandroid/hardware/thermal/V2_0/IThermal$getCurrentTemperaturesCallback;)V
-HSPLandroid/hardware/thermal/V2_0/IThermal$Proxy;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/thermal/V2_0/IThermal$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
-HSPLandroid/hardware/thermal/V2_0/IThermal$Proxy;->registerThermalChangedCallback(Landroid/hardware/thermal/V2_0/IThermalChangedCallback;ZI)Landroid/hardware/thermal/V1_0/ThermalStatus;
-HSPLandroid/hardware/thermal/V2_0/IThermal;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/thermal/V2_0/IThermal;
-HSPLandroid/hardware/thermal/V2_0/IThermal;->getService()Landroid/hardware/thermal/V2_0/IThermal;
-HSPLandroid/hardware/thermal/V2_0/IThermalChangedCallback$Stub;-><init>()V
-HSPLandroid/hardware/thermal/V2_0/IThermalChangedCallback$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/thermal/V2_0/IThermalChangedCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/thermal/V2_0/Temperature;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/thermal/V2_0/Temperature;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
-HSPLandroid/hardware/usb/IUsbManager$Stub$Proxy;->getDeviceList(Landroid/os/Bundle;)V
-HSPLandroid/hardware/usb/IUsbManager$Stub;-><init>()V
-HSPLandroid/hardware/usb/IUsbManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/usb/ParcelableUsbPort$1;-><init>()V
-HSPLandroid/hardware/usb/ParcelableUsbPort;->describeContents()I
+HSPLandroid/hardware/location/NanoAppMessage;->getMessageBody()[B
+HSPLandroid/hardware/location/NanoAppMessage;->getMessageType()I
+HSPLandroid/hardware/location/NanoAppMessage;->getNanoAppId()J
+HSPLandroid/hardware/location/NanoAppMessage;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/hardware/usb/IUsbManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/hardware/usb/IUsbManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/usb/IUsbManager;
+HSPLandroid/hardware/usb/ParcelableUsbPort;-><init>(Ljava/lang/String;IIZZ)V
 HSPLandroid/hardware/usb/ParcelableUsbPort;->getUsbPort(Landroid/hardware/usb/UsbManager;)Landroid/hardware/usb/UsbPort;
-HSPLandroid/hardware/usb/ParcelableUsbPort;->of(Landroid/hardware/usb/UsbPort;)Landroid/hardware/usb/ParcelableUsbPort;
-HSPLandroid/hardware/usb/ParcelableUsbPort;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/usb/UsbDevice$1;-><init>()V
+HSPLandroid/hardware/usb/UsbManager;-><init>(Landroid/content/Context;Landroid/hardware/usb/IUsbManager;)V
 HSPLandroid/hardware/usb/UsbManager;->getDeviceList()Ljava/util/HashMap;
-HSPLandroid/hardware/usb/UsbManager;->usbFunctionsFromString(Ljava/lang/String;)J
-HSPLandroid/hardware/usb/UsbManager;->usbFunctionsToString(J)Ljava/lang/String;
 HSPLandroid/hardware/usb/UsbPort;-><init>(Landroid/hardware/usb/UsbManager;Ljava/lang/String;IIZZ)V
-HSPLandroid/hardware/usb/UsbPort;->combineRolesAsBit(II)I
-HSPLandroid/hardware/usb/UsbPort;->modeToString(I)Ljava/lang/String;
-HSPLandroid/hardware/usb/UsbPort;->roleCombinationsToString(I)Ljava/lang/String;
-HSPLandroid/hardware/usb/UsbPort;->toString()Ljava/lang/String;
-HSPLandroid/hardware/usb/UsbPortStatus$1;-><init>()V
-HSPLandroid/hardware/usb/UsbPortStatus;->describeContents()I
-HSPLandroid/hardware/usb/UsbPortStatus;->isRoleCombinationSupported(II)Z
-HSPLandroid/hardware/usb/UsbPortStatus;->toString()Ljava/lang/String;
-HSPLandroid/hardware/usb/UsbPortStatus;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget$Proxy;->getCurrentUsbFunctions(Landroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback;)V
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget$Proxy;->interfaceChain()Ljava/util/ArrayList;
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/usb/gadget/V1_0/IUsbGadget;
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget;->getService()Landroid/hardware/usb/gadget/V1_0/IUsbGadget;
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadget;->getService(Z)Landroid/hardware/usb/gadget/V1_0/IUsbGadget;
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback$Stub;-><init>()V
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/usb/gadget/V1_0/IUsbGadgetCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/usb/UsbPort;->getId()Ljava/lang/String;
+HSPLandroid/hardware/usb/UsbPortStatus;-><init>(IIIIII)V
+HSPLandroid/hardware/usb/UsbPortStatus;->isConnected()Z
 HSPLandroid/icu/impl/BMPSet;-><init>([II)V
 HSPLandroid/icu/impl/BMPSet;->contains(I)Z
+HSPLandroid/icu/impl/BMPSet;->containsSlow(III)Z
 HSPLandroid/icu/impl/BMPSet;->findCodePoint(III)I
 HSPLandroid/icu/impl/BMPSet;->initBits()V
 HSPLandroid/icu/impl/BMPSet;->set32x64Bits([III)V
-HSPLandroid/icu/impl/CacheValue$NullValue;-><init>(Landroid/icu/impl/CacheValue$1;)V
+HSPLandroid/icu/impl/BMPSet;->span(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
+HSPLandroid/icu/impl/BMPSet;->spanBack(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;)I
+HSPLandroid/icu/impl/CacheBase;-><init>()V
+HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z
+HSPLandroid/icu/impl/CacheValue$SoftValue;-><init>(Ljava/lang/Object;)V
 HSPLandroid/icu/impl/CacheValue$SoftValue;->get()Ljava/lang/Object;
-HSPLandroid/icu/impl/CacheValue$Strength;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/impl/CacheValue;-><init>()V
+HSPLandroid/icu/impl/CacheValue;->futureInstancesWillBeStrong()Z
+HSPLandroid/icu/impl/CacheValue;->getInstance(Ljava/lang/Object;)Landroid/icu/impl/CacheValue;
 HSPLandroid/icu/impl/CacheValue;->isNull()Z
-HSPLandroid/icu/impl/CalType;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLandroid/icu/impl/CacheValue;->setStrength(Landroid/icu/impl/CacheValue$Strength;)V
+HSPLandroid/icu/impl/CalType;->getId()Ljava/lang/String;
 HSPLandroid/icu/impl/CalType;->values()[Landroid/icu/impl/CalType;
-HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;-><init>()V
-HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->access$000()Landroid/icu/impl/CalendarUtil$CalendarPreferences;
+HSPLandroid/icu/impl/CalendarUtil$CalendarPreferences;->getCalendarTypeForRegion(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/CalendarUtil;->getCalendarType(Landroid/icu/util/ULocale;)Ljava/lang/String;
-HSPLandroid/icu/impl/CaseMapImpl;->internalToUpper(IILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)V
-HSPLandroid/icu/impl/CaseMapImpl;->toUpper(IILjava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
+HSPLandroid/icu/impl/CharTrie;-><clinit>()V
+HSPLandroid/icu/impl/CharTrie;-><init>(Ljava/nio/ByteBuffer;Landroid/icu/impl/Trie$DataManipulate;)V
 HSPLandroid/icu/impl/CharTrie;->unserialize(Ljava/nio/ByteBuffer;)V
 HSPLandroid/icu/impl/CharacterIteration;->nextTrail32(Ljava/text/CharacterIterator;I)I
+HSPLandroid/icu/impl/CharacterPropertiesImpl;-><clinit>()V
 HSPLandroid/icu/impl/CharacterPropertiesImpl;->getInclusionsForProperty(I)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/CharacterPropertiesImpl;->getInclusionsForSource(I)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/CharacterPropertiesImpl;->getIntPropInclusions(I)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/impl/ClassLoaderUtil;->getClassLoader(Ljava/lang/Class;)Ljava/lang/ClassLoader;
-HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;-><init>(Ljava/lang/String;II)V
-HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/impl/CurrencyData$CurrencyDisplayInfo;-><init>()V
 HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;-><init>()V
-HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;-><init>([Ljava/lang/String;)V
+HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->getAfterSymbols()[Ljava/lang/String;
+HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->getBeforeSymbols()[Ljava/lang/String;
+HSPLandroid/icu/impl/CurrencyData$CurrencySpacingInfo;->setSymbolIfNull(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType;Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingPattern;Ljava/lang/String;)V
+HSPLandroid/icu/impl/DateNumberFormat;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/icu/impl/DateNumberFormat;->getDigits()[C
 HSPLandroid/icu/impl/DateNumberFormat;->initialize(Landroid/icu/util/ULocale;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/icu/impl/DontCareFieldPosition;-><init>()V
-HSPLandroid/icu/impl/DontCareFieldPosition;->setBeginIndex(I)V
-HSPLandroid/icu/impl/DontCareFieldPosition;->setEndIndex(I)V
+HSPLandroid/icu/impl/FormattedStringBuilder;-><clinit>()V
+HSPLandroid/icu/impl/FormattedStringBuilder;-><init>()V
+HSPLandroid/icu/impl/FormattedStringBuilder;-><init>(I)V
+HSPLandroid/icu/impl/FormattedStringBuilder;-><init>(Landroid/icu/impl/FormattedStringBuilder;)V
+HSPLandroid/icu/impl/FormattedStringBuilder;->charAt(I)C
+HSPLandroid/icu/impl/FormattedStringBuilder;->clear()Landroid/icu/impl/FormattedStringBuilder;
+HSPLandroid/icu/impl/FormattedStringBuilder;->copyFrom(Landroid/icu/impl/FormattedStringBuilder;)V
+HSPLandroid/icu/impl/FormattedStringBuilder;->fieldAt(I)Ljava/text/Format$Field;
+HSPLandroid/icu/impl/FormattedStringBuilder;->getCapacity()I
+HSPLandroid/icu/impl/FormattedStringBuilder;->insert(ILjava/lang/CharSequence;Ljava/text/Format$Field;)I
+HSPLandroid/icu/impl/FormattedStringBuilder;->insert(I[C[Ljava/text/Format$Field;)I
+HSPLandroid/icu/impl/FormattedStringBuilder;->insertCodePoint(IILjava/text/Format$Field;)I
+HSPLandroid/icu/impl/FormattedStringBuilder;->length()I
+HSPLandroid/icu/impl/FormattedStringBuilder;->prepareForInsert(II)I
+HSPLandroid/icu/impl/FormattedStringBuilder;->subSequence(II)Ljava/lang/CharSequence;
+HSPLandroid/icu/impl/FormattedStringBuilder;->toCharArray()[C
+HSPLandroid/icu/impl/FormattedStringBuilder;->toFieldArray()[Ljava/text/Format$Field;
+HSPLandroid/icu/impl/FormattedStringBuilder;->toString()Ljava/lang/String;
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl$NullField;-><clinit>()V
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl$NullField;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;-><clinit>()V
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->isIntOrGroup(Ljava/text/Format$Field;)Z
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextFieldPosition(Landroid/icu/impl/FormattedStringBuilder;Ljava/text/FieldPosition;)Z
+HSPLandroid/icu/impl/FormattedValueStringBuilderImpl;->nextPosition(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/text/ConstrainedFieldPosition;Ljava/text/Format$Field;)Z
+HSPLandroid/icu/impl/Grego;-><clinit>()V
+HSPLandroid/icu/impl/Grego;->dayOfWeek(J)I
 HSPLandroid/icu/impl/Grego;->dayToFields(J[I)[I
 HSPLandroid/icu/impl/Grego;->fieldsToDay(III)J
-HSPLandroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;-><init>(Landroid/icu/impl/ICUBinary$1;)V
-HSPLandroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;->isDataVersionAcceptable([B)Z
+HSPLandroid/icu/impl/Grego;->floorDivide(JJ)J
+HSPLandroid/icu/impl/Grego;->floorDivide(JJ[J)J
+HSPLandroid/icu/impl/Grego;->isLeapYear(I)Z
+HSPLandroid/icu/impl/Grego;->monthLength(II)I
+HSPLandroid/icu/impl/Grego;->previousMonthLength(II)I
+HSPLandroid/icu/impl/Grego;->timeToFields(J[I)[I
 HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->addBaseName(Ljava/nio/ByteBuffer;ILjava/lang/String;Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/util/Set;)Z
 HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->addBaseNamesInFolder(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
 HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->binarySearch(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)I
 HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getData(Ljava/nio/ByteBuffer;Ljava/lang/CharSequence;)Ljava/nio/ByteBuffer;
-HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->startsWithPackageName(Ljava/nio/ByteBuffer;I)Z
-HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->validate(Ljava/nio/ByteBuffer;)Z
+HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getDataOffset(Ljava/nio/ByteBuffer;I)I
+HSPLandroid/icu/impl/ICUBinary$DatPackageReader;->getNameOffset(Ljava/nio/ByteBuffer;I)I
 HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->addBaseNamesInFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
 HSPLandroid/icu/impl/ICUBinary$PackageDataFile;->getData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
-HSPLandroid/icu/impl/ICUBinary;->addDataFilesFromFolder(Ljava/io/File;Ljava/lang/StringBuilder;Ljava/util/List;)V
-HSPLandroid/icu/impl/ICUBinary;->addDataFilesFromPath(Ljava/lang/String;Ljava/util/List;)V
+HSPLandroid/icu/impl/ICUBinary;->addBaseNamesInFileFolder(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)V
 HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;I)I
 HSPLandroid/icu/impl/ICUBinary;->compareKeys(Ljava/lang/CharSequence;[BI)I
 HSPLandroid/icu/impl/ICUBinary;->getChars(Ljava/nio/ByteBuffer;II)[C
+HSPLandroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)Ljava/nio/ByteBuffer;
 HSPLandroid/icu/impl/ICUBinary;->getData(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Z)Ljava/nio/ByteBuffer;
+HSPLandroid/icu/impl/ICUBinary;->getDataFromFile(Ljava/lang/String;)Ljava/nio/ByteBuffer;
 HSPLandroid/icu/impl/ICUBinary;->getInts(Ljava/nio/ByteBuffer;II)[I
-HSPLandroid/icu/impl/ICUBinary;->getLongs(Ljava/nio/ByteBuffer;II)[J
 HSPLandroid/icu/impl/ICUBinary;->getRequiredData(Ljava/lang/String;)Ljava/nio/ByteBuffer;
+HSPLandroid/icu/impl/ICUBinary;->getShorts(Ljava/nio/ByteBuffer;II)[S
 HSPLandroid/icu/impl/ICUBinary;->getString(Ljava/nio/ByteBuffer;II)Ljava/lang/String;
-HSPLandroid/icu/impl/ICUBinary;->mapFile(Ljava/io/File;)Ljava/nio/ByteBuffer;
+HSPLandroid/icu/impl/ICUBinary;->getVersionByteArrayFromCompactInt(I)[B
+HSPLandroid/icu/impl/ICUBinary;->getVersionInfoFromCompactInt(I)Landroid/icu/util/VersionInfo;
 HSPLandroid/icu/impl/ICUBinary;->readHeader(Ljava/nio/ByteBuffer;ILandroid/icu/impl/ICUBinary$Authenticate;)I
 HSPLandroid/icu/impl/ICUBinary;->readHeaderAndDataVersion(Ljava/nio/ByteBuffer;ILandroid/icu/impl/ICUBinary$Authenticate;)Landroid/icu/util/VersionInfo;
 HSPLandroid/icu/impl/ICUBinary;->skipBytes(Ljava/nio/ByteBuffer;I)V
-HSPLandroid/icu/impl/ICUConfig;->get(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUBinary;->sliceWithOrder(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
 HSPLandroid/icu/impl/ICUConfig;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink$EntrypointTable;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink$EntrypointTable;->values()[Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink$EntrypointTable;
+HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;-><init>(ZLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink$EntrypointTable;)V
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;->consumeCurrenciesEntry(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;->consumeCurrencySpacingTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$CurrencySink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Z)V
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchFormattingData(Ljava/lang/String;)Landroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo$FormattingData;
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->fetchSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getFormatInfo(Ljava/lang/String;)Landroid/icu/impl/CurrencyData$CurrencyFormatInfo;
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSpacingInfo()Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider$ICUCurrencyDisplayInfo;->getSymbol(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider;-><init>()V
 HSPLandroid/icu/impl/ICUCurrencyDisplayInfoProvider;->getInstance(Landroid/icu/util/ULocale;Z)Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector;->collect(Ljava/lang/String;Ljava/lang/String;JJIZ)V
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector;->collects()I
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo$CurrencyCollector;->getList()Ljava/util/List;
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->add(Ljava/lang/Object;)V
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo$UniqueList;->list()Ljava/util/List;
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo;-><init>()V
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collect(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->collectRegion(Landroid/icu/impl/ICUCurrencyMetaInfo$Collector;Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;ILandroid/icu/impl/ICUResourceBundle;)V
-HSPLandroid/icu/impl/ICUCurrencyMetaInfo;->currencies(Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;)Ljava/util/List;
-HSPLandroid/icu/impl/ICUData;->getStream(Ljava/lang/Class;Ljava/lang/String;Z)Ljava/io/InputStream;
+HSPLandroid/icu/impl/ICUData;->checkStreamForBinaryData(Ljava/io/InputStream;Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICUData;->getStream(Ljava/lang/ClassLoader;Ljava/lang/String;Z)Ljava/io/InputStream;
-HSPLandroid/icu/impl/ICUData;->getStream(Ljava/lang/String;)Ljava/io/InputStream;
 HSPLandroid/icu/impl/ICUDebug;->enabled(Ljava/lang/String;)Z
-HSPLandroid/icu/impl/ICUDebug;->getInstanceLenient(Ljava/lang/String;)Landroid/icu/util/VersionInfo;
+HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->getSupportedIDs()Ljava/util/Set;
 HSPLandroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;->loader()Ljava/lang/ClassLoader;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKey;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->createWithCanonical(Landroid/icu/util/ULocale;Ljava/lang/String;I)Landroid/icu/impl/ICULocaleService$LocaleKey;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentDescriptor()Ljava/lang/String;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentID()Ljava/lang/String;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->currentLocale()Landroid/icu/util/ULocale;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->kind()I
-HSPLandroid/icu/impl/ICULocaleService$LocaleKey;->prefix()Ljava/lang/String;
+HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;-><init>(Z)V
 HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;->create(Landroid/icu/impl/ICUService$Key;Landroid/icu/impl/ICUService;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICULocaleService$LocaleKeyFactory;->handlesKey(Landroid/icu/impl/ICUService$Key;)Z
+HSPLandroid/icu/impl/ICULocaleService;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICULocaleService;->createKey(Landroid/icu/util/ULocale;I)Landroid/icu/impl/ICUService$Key;
 HSPLandroid/icu/impl/ICULocaleService;->get(Landroid/icu/util/ULocale;I[Landroid/icu/util/ULocale;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICULocaleService;->get(Landroid/icu/util/ULocale;[Landroid/icu/util/ULocale;)Ljava/lang/Object;
-HSPLandroid/icu/impl/ICULocaleService;->validateFallbackLocale()Ljava/lang/String;
+HSPLandroid/icu/impl/ICUNotifier;-><init>()V
 HSPLandroid/icu/impl/ICUNotifier;->notifyChanged()V
+HSPLandroid/icu/impl/ICURWLock;-><init>()V
 HSPLandroid/icu/impl/ICURWLock;->acquireRead()V
 HSPLandroid/icu/impl/ICURWLock;->acquireWrite()V
 HSPLandroid/icu/impl/ICURWLock;->releaseRead()V
 HSPLandroid/icu/impl/ICURWLock;->releaseWrite()V
-HSPLandroid/icu/impl/ICUResourceBundle$1;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundle$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundle$1;->createInstance(Ljava/lang/String;Landroid/icu/impl/ICUResourceBundle$Loader;)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle$2$1;-><init>(Landroid/icu/impl/ICUResourceBundle$2;)V
+HSPLandroid/icu/impl/ICUResourceBundle$2;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/Set;)V
 HSPLandroid/icu/impl/ICUResourceBundle$2;->run()Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundle$2;->run()Ljava/lang/Void;
-HSPLandroid/icu/impl/ICUResourceBundle$3;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundle$3;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundle$3;->createInstance(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry;
+HSPLandroid/icu/impl/ICUResourceBundle$4;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICUResourceBundle$4;->load()Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle$AvailEntry;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
 HSPLandroid/icu/impl/ICUResourceBundle$AvailEntry;->getFullLocaleNameSet()Ljava/util/Set;
-HSPLandroid/icu/impl/ICUResourceBundle$OpenType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/impl/ICUResourceBundle;->at(I)Landroid/icu/impl/ICUResourceBundle;
-HSPLandroid/icu/impl/ICUResourceBundle;->at(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle$Loader;-><init>()V
+HSPLandroid/icu/impl/ICUResourceBundle$Loader;-><init>(Landroid/icu/impl/ICUResourceBundle$1;)V
+HSPLandroid/icu/impl/ICUResourceBundle$WholeBundle;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader;)V
+HSPLandroid/icu/impl/ICUResourceBundle;-><init>(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V
+HSPLandroid/icu/impl/ICUResourceBundle;-><init>(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
+HSPLandroid/icu/impl/ICUResourceBundle;->access$000()Z
+HSPLandroid/icu/impl/ICUResourceBundle;->access$300(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
+HSPLandroid/icu/impl/ICUResourceBundle;->access$500(Landroid/icu/impl/ICUResourceBundle;)Z
+HSPLandroid/icu/impl/ICUResourceBundle;->access$600(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle;->addBundleBaseNamesFromClassLoader(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/Set;)V
+HSPLandroid/icu/impl/ICUResourceBundle;->countPathKeys(Ljava/lang/String;)I
+HSPLandroid/icu/impl/ICUResourceBundle;->createBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->createFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
 HSPLandroid/icu/impl/ICUResourceBundle;->equals(Ljava/lang/Object;)Z
+HSPLandroid/icu/impl/ICUResourceBundle;->findResourceWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->findResourceWithFallback([Ljava/lang/String;ILandroid/icu/impl/ICUResourceBundle;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundle;->findStringWithFallback(Ljava/lang/String;Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)Ljava/lang/String;
@@ -7759,169 +6087,287 @@
 HSPLandroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/ICUResourceBundleReader$ReaderValue;Landroid/icu/impl/UResource$Sink;)V
 HSPLandroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallback(Ljava/lang/String;Landroid/icu/impl/UResource$Sink;)V
 HSPLandroid/icu/impl/ICUResourceBundle;->getAllItemsWithFallbackNoFail(Ljava/lang/String;Landroid/icu/impl/UResource$Sink;)V
+HSPLandroid/icu/impl/ICUResourceBundle;->getAvailEntry(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle$AvailEntry;
 HSPLandroid/icu/impl/ICUResourceBundle;->getBaseName()Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundle;->getBundle(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/impl/ICUResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle;->getFullLocaleNameSet(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/util/Set;
 HSPLandroid/icu/impl/ICUResourceBundle;->getKey()Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundle;->getLocale()Ljava/util/Locale;
 HSPLandroid/icu/impl/ICUResourceBundle;->getLocaleID()Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundle;->getNoFallback()Z
 HSPLandroid/icu/impl/ICUResourceBundle;->getParent()Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->getParent()Landroid/icu/util/UResourceBundle;
+HSPLandroid/icu/impl/ICUResourceBundle;->getResDepth()I
 HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys(Ljava/lang/String;I[Ljava/lang/String;I)V
+HSPLandroid/icu/impl/ICUResourceBundle;->getResPathKeys([Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundle;->getStringWithFallback(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundle;->getULocale()Landroid/icu/util/ULocale;
 HSPLandroid/icu/impl/ICUResourceBundle;->getWithFallback(Ljava/lang/String;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundle$OpenType;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundle;->setParent(Ljava/util/ResourceBundle;)V
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->getStringArray()[Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceArray;->handleGetStringArray()[Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;->getBinary([B)[B
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;-><init>(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->createBundleObject(ILjava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getContainerResource(I)I
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getSize()I
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;->getString(I)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->getInt()I
-HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceInt;->getType()I
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;->getIntVector()[I
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getString()Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceString;->getType()I
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;-><init>(Landroid/icu/impl/ICUResourceBundle$WholeBundle;I)V
+HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->findString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->getType()I
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGet(Ljava/lang/String;Ljava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundleImpl$ResourceTable;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroid/icu/impl/ICUResourceBundleImpl;-><init>(Landroid/icu/impl/ICUResourceBundle$WholeBundle;)V
+HSPLandroid/icu/impl/ICUResourceBundleImpl;-><init>(Landroid/icu/impl/ICUResourceBundleImpl;Ljava/lang/String;I)V
 HSPLandroid/icu/impl/ICUResourceBundleImpl;->createBundleObject(Ljava/lang/String;ILjava/util/HashMap;Landroid/icu/util/UResourceBundle;)Landroid/icu/impl/ICUResourceBundle;
 HSPLandroid/icu/impl/ICUResourceBundleImpl;->getResource()I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array32;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Array;->getValue(ILandroid/icu/impl/UResource$Value;)Z
+HSPLandroid/icu/impl/ICUResourceBundleReader$Container;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer16Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getContainer32Resource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Container;->getSize()I
-HSPLandroid/icu/impl/ICUResourceBundleReader$IsAcceptable;-><init>(Landroid/icu/impl/ICUResourceBundleReader$1;)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$IsAcceptable;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCache;-><init>(Landroid/icu/impl/ICUResourceBundleReader$1;)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Landroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->equals(Ljava/lang/Object;)Z
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderCacheKey;->hashCode()I
+HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getAliasString()Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getArray()Landroid/icu/impl/UResource$Array;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getString()Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray()[Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArray(Landroid/icu/impl/ICUResourceBundleReader$Array;)[Ljava/lang/String;
-HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getStringArrayOrStringAsArray()[Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getTable()Landroid/icu/impl/UResource$Table;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ReaderValue;->getType()I
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;-><init>(II)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->get(I)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache$Level;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;-><init>(I)V
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->access$2100(I)Z
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->findSimple(I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->get(I)Ljava/lang/Object;
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->makeKey(I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfAbsent(ILjava/lang/Object;I)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->putIfCleared([Ljava/lang/Object;ILjava/lang/Object;I)Ljava/lang/Object;
+HSPLandroid/icu/impl/ICUResourceBundleReader$ResourceCache;->storeDirectly(I)Z
+HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table1632;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;-><init>(Landroid/icu/impl/ICUResourceBundleReader;I)V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table16;->getContainerResource(Landroid/icu/impl/ICUResourceBundleReader;I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->findTableItem(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;)I
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getKey(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getKeyAndValue(ILandroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)Z
 HSPLandroid/icu/impl/ICUResourceBundleReader$Table;->getResource(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/String;)I
-HSPLandroid/icu/impl/ICUResourceBundleReader;-><init>()V
 HSPLandroid/icu/impl/ICUResourceBundleReader;-><init>(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
+HSPLandroid/icu/impl/ICUResourceBundleReader;-><init>(Ljava/nio/ByteBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Landroid/icu/impl/ICUResourceBundleReader$1;)V
+HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_INT(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_OFFSET(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->RES_GET_TYPE(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->URES_IS_ARRAY(I)Z
+HSPLandroid/icu/impl/ICUResourceBundleReader;->URES_IS_TABLE(I)Z
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1000(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1100(Landroid/icu/impl/ICUResourceBundleReader;I)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1300(Landroid/icu/impl/ICUResourceBundleReader;Ljava/lang/CharSequence;C)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1500(Landroid/icu/impl/ICUResourceBundleReader;ILandroid/icu/impl/UResource$Key;)V
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1700(Landroid/icu/impl/ICUResourceBundleReader;I)[C
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$1800(Landroid/icu/impl/ICUResourceBundleReader;I)[C
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$200()Landroid/icu/impl/ICUResourceBundleReader;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$2200(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$400()[I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$600(Landroid/icu/impl/ICUResourceBundleReader;)Ljava/nio/CharBuffer;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$700(Landroid/icu/impl/ICUResourceBundleReader;)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$800(Landroid/icu/impl/ICUResourceBundleReader;)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->access$900(Landroid/icu/impl/ICUResourceBundleReader;I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->compareKeys(Ljava/lang/CharSequence;C)I
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getAlias(I)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getArray(I)Landroid/icu/impl/ICUResourceBundleReader$Array;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getBinary(I[B)[B
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getChars(II)[C
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getFullName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getIndexesInt(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getInt(I)I
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getIntVector(I)[I
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getInts(II)[I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getKey16String(I)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getNoFallback()Z
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getReader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/impl/ICUResourceBundleReader;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getResourceByteOffset(I)I
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getRootResource()I
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getString(I)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getStringV2(I)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable(I)Landroid/icu/impl/ICUResourceBundleReader$Table;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->getTable16KeyOffsets(I)[C
+HSPLandroid/icu/impl/ICUResourceBundleReader;->getTableKeyOffsets(I)[C
 HSPLandroid/icu/impl/ICUResourceBundleReader;->init(Ljava/nio/ByteBuffer;)V
+HSPLandroid/icu/impl/ICUResourceBundleReader;->makeKeyStringFromBytes([BI)Ljava/lang/String;
 HSPLandroid/icu/impl/ICUResourceBundleReader;->makeStringFromBytes(II)Ljava/lang/String;
+HSPLandroid/icu/impl/ICUResourceBundleReader;->setKeyFromKey16(ILandroid/icu/impl/UResource$Key;)V
+HSPLandroid/icu/impl/ICUService$CacheEntry;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
+HSPLandroid/icu/impl/ICUService$Key;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/ICUService;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/ICUService;->clearCaches()V
-HSPLandroid/icu/impl/ICUService;->clearServiceCache()V
 HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUService;->getKey(Landroid/icu/impl/ICUService$Key;[Ljava/lang/String;Landroid/icu/impl/ICUService$Factory;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ICUService;->isDefault()Z
 HSPLandroid/icu/impl/ICUService;->markDefault()V
 HSPLandroid/icu/impl/ICUService;->registerFactory(Landroid/icu/impl/ICUService$Factory;)Landroid/icu/impl/ICUService$Factory;
+HSPLandroid/icu/impl/IDNA2003;-><clinit>()V
 HSPLandroid/icu/impl/IDNA2003;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-HSPLandroid/icu/impl/IDNA2003;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
 HSPLandroid/icu/impl/IDNA2003;->convertToASCII(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
-HSPLandroid/icu/impl/IDNA2003;->convertToUnicode(Landroid/icu/text/UCharacterIterator;I)Ljava/lang/StringBuffer;
+HSPLandroid/icu/impl/IDNA2003;->getSeparatorIndex([CII)I
 HSPLandroid/icu/impl/IDNA2003;->isLDHChar(I)Z
-HSPLandroid/icu/impl/IDNA2003;->startsWithPrefix(Ljava/lang/StringBuffer;)Z
+HSPLandroid/icu/impl/IDNA2003;->isLabelSeparator(I)Z
+HSPLandroid/icu/impl/JavaTimeZone;-><init>(Ljava/util/TimeZone;Ljava/lang/String;)V
 HSPLandroid/icu/impl/JavaTimeZone;->clone()Ljava/lang/Object;
+HSPLandroid/icu/impl/JavaTimeZone;->freeze()Landroid/icu/util/TimeZone;
 HSPLandroid/icu/impl/JavaTimeZone;->getOffset(JZ[I)V
 HSPLandroid/icu/impl/JavaTimeZone;->hashCode()I
 HSPLandroid/icu/impl/JavaTimeZone;->isFrozen()Z
+HSPLandroid/icu/impl/LocaleIDParser;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/LocaleIDParser;-><init>(Ljava/lang/String;Z)V
+HSPLandroid/icu/impl/LocaleIDParser;->addSeparator()V
+HSPLandroid/icu/impl/LocaleIDParser;->append(C)V
+HSPLandroid/icu/impl/LocaleIDParser;->atTerminator()Z
+HSPLandroid/icu/impl/LocaleIDParser;->getCountry()Ljava/lang/String;
 HSPLandroid/icu/impl/LocaleIDParser;->getKeywordMap()Ljava/util/Map;
+HSPLandroid/icu/impl/LocaleIDParser;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/impl/LocaleIDParser;->getKeywords()Ljava/util/Iterator;
+HSPLandroid/icu/impl/LocaleIDParser;->getLanguage()Ljava/lang/String;
+HSPLandroid/icu/impl/LocaleIDParser;->getName()Ljava/lang/String;
+HSPLandroid/icu/impl/LocaleIDParser;->getScript()Ljava/lang/String;
+HSPLandroid/icu/impl/LocaleIDParser;->getString(I)Ljava/lang/String;
+HSPLandroid/icu/impl/LocaleIDParser;->getVariant()Ljava/lang/String;
 HSPLandroid/icu/impl/LocaleIDParser;->haveExperimentalLanguagePrefix()Z
+HSPLandroid/icu/impl/LocaleIDParser;->isTerminator(C)Z
+HSPLandroid/icu/impl/LocaleIDParser;->isTerminatorOrIDSeparator(C)Z
+HSPLandroid/icu/impl/LocaleIDParser;->next()C
 HSPLandroid/icu/impl/LocaleIDParser;->parseBaseName()V
 HSPLandroid/icu/impl/LocaleIDParser;->parseCountry()I
 HSPLandroid/icu/impl/LocaleIDParser;->parseKeywords()I
 HSPLandroid/icu/impl/LocaleIDParser;->parseLanguage()I
 HSPLandroid/icu/impl/LocaleIDParser;->parseScript()I
 HSPLandroid/icu/impl/LocaleIDParser;->parseVariant()I
+HSPLandroid/icu/impl/LocaleIDParser;->reset()V
+HSPLandroid/icu/impl/LocaleIDParser;->set(ILjava/lang/String;)V
 HSPLandroid/icu/impl/LocaleIDParser;->setToKeywordStart()Z
 HSPLandroid/icu/impl/LocaleIDParser;->skipCountry()V
+HSPLandroid/icu/impl/LocaleIDParser;->skipLanguage()V
 HSPLandroid/icu/impl/LocaleIDParser;->skipScript()V
+HSPLandroid/icu/impl/LocaleIDParser;->skipUntilTerminatorOrIDSeparator()V
+HSPLandroid/icu/impl/LocaleIDs;->findIndex([Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/icu/impl/LocaleIDs;->threeToTwoLetterLanguage(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/Norm2AllModes$1;-><init>()V
+HSPLandroid/icu/impl/Norm2AllModes$ComposeNormalizer2;-><init>(Landroid/icu/impl/Normalizer2Impl;Z)V
+HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;-><init>(Landroid/icu/impl/Normalizer2Impl;)V
 HSPLandroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;->spanQuickCheckYes(Ljava/lang/CharSequence;)I
+HSPLandroid/icu/impl/Norm2AllModes$FCDNormalizer2;-><init>(Landroid/icu/impl/Normalizer2Impl;)V
+HSPLandroid/icu/impl/Norm2AllModes$NFCSingleton;->access$200()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;
+HSPLandroid/icu/impl/Norm2AllModes$NFKCSingleton;-><clinit>()V
+HSPLandroid/icu/impl/Norm2AllModes$NFKCSingleton;->access$300()Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;
 HSPLandroid/icu/impl/Norm2AllModes$NoopNormalizer2;-><init>()V
 HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;-><init>(Ljava/lang/String;Landroid/icu/impl/Norm2AllModes$1;)V
+HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->access$000(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Ljava/lang/RuntimeException;
+HSPLandroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;->access$100(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes;
+HSPLandroid/icu/impl/Norm2AllModes$Normalizer2WithImpl;-><init>(Landroid/icu/impl/Normalizer2Impl;)V
+HSPLandroid/icu/impl/Norm2AllModes;-><clinit>()V
 HSPLandroid/icu/impl/Norm2AllModes;-><init>(Landroid/icu/impl/Normalizer2Impl;)V
+HSPLandroid/icu/impl/Norm2AllModes;-><init>(Landroid/icu/impl/Normalizer2Impl;Landroid/icu/impl/Norm2AllModes$1;)V
+HSPLandroid/icu/impl/Norm2AllModes;->getInstanceFromSingleton(Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;)Landroid/icu/impl/Norm2AllModes;
+HSPLandroid/icu/impl/Norm2AllModes;->getNFCInstance()Landroid/icu/impl/Norm2AllModes;
+HSPLandroid/icu/impl/Norm2AllModes;->getNFKCInstance()Landroid/icu/impl/Norm2AllModes;
 HSPLandroid/icu/impl/Normalizer2Impl$1;-><init>()V
+HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>()V
 HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;-><init>(Landroid/icu/impl/Normalizer2Impl$1;)V
 HSPLandroid/icu/impl/Normalizer2Impl$IsAcceptable;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/Normalizer2Impl;->addLcccChars(Landroid/icu/text/UnicodeSet;)V
-HSPLandroid/icu/impl/Normalizer2Impl;->composeQuickCheck(Ljava/lang/CharSequence;IIZZ)I
+HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;-><init>(Landroid/icu/impl/Normalizer2Impl;Ljava/lang/Appendable;I)V
+HSPLandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;->append(Ljava/lang/CharSequence;IIZII)V
+HSPLandroid/icu/impl/Normalizer2Impl$UTF16Plus;->isLeadSurrogate(I)Z
+HSPLandroid/icu/impl/Normalizer2Impl;-><clinit>()V
+HSPLandroid/icu/impl/Normalizer2Impl;-><init>()V
+HSPLandroid/icu/impl/Normalizer2Impl;->decompose(IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)V
 HSPLandroid/icu/impl/Normalizer2Impl;->decompose(Ljava/lang/CharSequence;IILandroid/icu/impl/Normalizer2Impl$ReorderingBuffer;)I
-HSPLandroid/icu/impl/Normalizer2Impl;->getFCD16FromNormData(I)I
+HSPLandroid/icu/impl/Normalizer2Impl;->hangulLVT()I
+HSPLandroid/icu/impl/Normalizer2Impl;->isDecompYes(I)Z
+HSPLandroid/icu/impl/Normalizer2Impl;->isHangulLV(I)Z
+HSPLandroid/icu/impl/Normalizer2Impl;->isHangulLVT(I)Z
+HSPLandroid/icu/impl/Normalizer2Impl;->isMostDecompYesAndZeroCC(I)Z
+HSPLandroid/icu/impl/Normalizer2Impl;->load(Ljava/lang/String;)Landroid/icu/impl/Normalizer2Impl;
 HSPLandroid/icu/impl/Normalizer2Impl;->load(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Normalizer2Impl;
+HSPLandroid/icu/impl/OlsonTimeZone;-><clinit>()V
 HSPLandroid/icu/impl/OlsonTimeZone;-><init>(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V
 HSPLandroid/icu/impl/OlsonTimeZone;->clone()Ljava/lang/Object;
 HSPLandroid/icu/impl/OlsonTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone;
-HSPLandroid/icu/impl/OlsonTimeZone;->construct(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;)V
+HSPLandroid/icu/impl/OlsonTimeZone;->construct(Landroid/icu/util/UResourceBundle;Landroid/icu/util/UResourceBundle;Ljava/lang/String;)V
+HSPLandroid/icu/impl/OlsonTimeZone;->freeze()Landroid/icu/util/TimeZone;
 HSPLandroid/icu/impl/OlsonTimeZone;->getCanonicalID()Ljava/lang/String;
-HSPLandroid/icu/impl/OlsonTimeZone;->getHistoricalOffset(JZII[I)V
+HSPLandroid/icu/impl/OlsonTimeZone;->getInt(B)I
 HSPLandroid/icu/impl/OlsonTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
 HSPLandroid/icu/impl/OlsonTimeZone;->getOffset(JZ[I)V
 HSPLandroid/icu/impl/OlsonTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
 HSPLandroid/icu/impl/OlsonTimeZone;->initTransitionRules()V
+HSPLandroid/icu/impl/OlsonTimeZone;->initialDstOffset()I
+HSPLandroid/icu/impl/OlsonTimeZone;->initialRawOffset()I
 HSPLandroid/icu/impl/OlsonTimeZone;->isFrozen()Z
 HSPLandroid/icu/impl/OlsonTimeZone;->loadRule(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-HSPLandroid/icu/impl/Pair;->hashCode()I
-HSPLandroid/icu/impl/Pair;->of(Ljava/lang/Object;Ljava/lang/Object;)Landroid/icu/impl/Pair;
+HSPLandroid/icu/impl/PatternProps;-><clinit>()V
 HSPLandroid/icu/impl/PatternProps;->isWhiteSpace(I)Z
+HSPLandroid/icu/impl/PatternProps;->skipWhiteSpace(Ljava/lang/CharSequence;I)I
 HSPLandroid/icu/impl/PatternTokenizer;-><init>()V
 HSPLandroid/icu/impl/PatternTokenizer;->next(Ljava/lang/StringBuffer;)I
 HSPLandroid/icu/impl/PatternTokenizer;->quoteLiteral(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/impl/PatternTokenizer;->setExtraQuotingCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer;
 HSPLandroid/icu/impl/PatternTokenizer;->setPattern(Ljava/lang/String;)Landroid/icu/impl/PatternTokenizer;
-HSPLandroid/icu/impl/PluralRulesLoader;-><init>()V
+HSPLandroid/icu/impl/PatternTokenizer;->setSyntaxCharacters(Landroid/icu/text/UnicodeSet;)Landroid/icu/impl/PatternTokenizer;
+HSPLandroid/icu/impl/PatternTokenizer;->setUsingQuote(Z)Landroid/icu/impl/PatternTokenizer;
 HSPLandroid/icu/impl/PluralRulesLoader;->checkBuildRulesIdMaps()V
 HSPLandroid/icu/impl/PluralRulesLoader;->forLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Landroid/icu/text/PluralRules;
+HSPLandroid/icu/impl/PluralRulesLoader;->getLocaleIdToRulesIdMap(Landroid/icu/text/PluralRules$PluralType;)Ljava/util/Map;
 HSPLandroid/icu/impl/PluralRulesLoader;->getPluralBundle()Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/PluralRulesLoader;->getRulesForRulesId(Ljava/lang/String;)Landroid/icu/text/PluralRules;
 HSPLandroid/icu/impl/PluralRulesLoader;->getRulesIdForLocale(Landroid/icu/util/ULocale;Landroid/icu/text/PluralRules$PluralType;)Ljava/lang/String;
-HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;-><init>(Landroid/icu/impl/RBBIDataWrapper$1;)V
 HSPLandroid/icu/impl/RBBIDataWrapper$IsAcceptable;->isDataVersionAcceptable([B)Z
+HSPLandroid/icu/impl/RBBIDataWrapper$RBBIDataHeader;-><init>()V
+HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;-><init>()V
 HSPLandroid/icu/impl/RBBIDataWrapper$RBBIStateTable;->get(Ljava/nio/ByteBuffer;I)Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable;
+HSPLandroid/icu/impl/RBBIDataWrapper;-><init>()V
 HSPLandroid/icu/impl/RBBIDataWrapper;->get(Ljava/nio/ByteBuffer;)Landroid/icu/impl/RBBIDataWrapper;
-HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getIndex()I
+HSPLandroid/icu/impl/RBBIDataWrapper;->getRowIndex(I)I
+HSPLandroid/icu/impl/ReplaceableUCharacterIterator;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getLength()I
 HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->getText([CI)I
 HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->next()I
 HSPLandroid/icu/impl/ReplaceableUCharacterIterator;->setIndex(I)V
+HSPLandroid/icu/impl/RuleCharacterIterator;-><init>(Ljava/lang/String;Landroid/icu/text/SymbolTable;Ljava/text/ParsePosition;)V
 HSPLandroid/icu/impl/RuleCharacterIterator;->_advance(I)V
 HSPLandroid/icu/impl/RuleCharacterIterator;->_current()I
 HSPLandroid/icu/impl/RuleCharacterIterator;->atEnd()Z
 HSPLandroid/icu/impl/RuleCharacterIterator;->getPos(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/impl/RuleCharacterIterator;->inVariable()Z
 HSPLandroid/icu/impl/RuleCharacterIterator;->isEscaped()Z
 HSPLandroid/icu/impl/RuleCharacterIterator;->jumpahead(I)V
 HSPLandroid/icu/impl/RuleCharacterIterator;->lookahead()Ljava/lang/String;
@@ -7933,42 +6379,76 @@
 HSPLandroid/icu/impl/SimpleCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/icu/impl/SimpleFormatterImpl;->compileToStringMinMaxArguments(Ljava/lang/CharSequence;Ljava/lang/StringBuilder;II)Ljava/lang/String;
 HSPLandroid/icu/impl/SimpleFormatterImpl;->format(Ljava/lang/String;[Ljava/lang/CharSequence;Ljava/lang/StringBuilder;Ljava/lang/String;Z[I)Ljava/lang/StringBuilder;
-HSPLandroid/icu/impl/SimpleFormatterImpl;->formatAndReplace(Ljava/lang/String;Ljava/lang/StringBuilder;[I[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
-HSPLandroid/icu/impl/SimpleFormatterImpl;->formatCompiledPattern(Ljava/lang/String;[Ljava/lang/CharSequence;)Ljava/lang/String;
+HSPLandroid/icu/impl/SimpleFormatterImpl;->formatAndAppend(Ljava/lang/String;Ljava/lang/StringBuilder;[I[Ljava/lang/CharSequence;)Ljava/lang/StringBuilder;
+HSPLandroid/icu/impl/SimpleFormatterImpl;->formatRawPattern(Ljava/lang/String;II[Ljava/lang/CharSequence;)Ljava/lang/String;
 HSPLandroid/icu/impl/SimpleFormatterImpl;->getArgumentLimit(Ljava/lang/String;)I
+HSPLandroid/icu/impl/SoftCache;-><init>()V
 HSPLandroid/icu/impl/SoftCache;->getInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/impl/StandardPlural;-><clinit>()V
 HSPLandroid/icu/impl/StandardPlural;-><init>(Ljava/lang/String;ILjava/lang/String;)V
 HSPLandroid/icu/impl/StandardPlural;->fromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural;
 HSPLandroid/icu/impl/StandardPlural;->orNullFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural;
 HSPLandroid/icu/impl/StandardPlural;->values()[Landroid/icu/impl/StandardPlural;
+HSPLandroid/icu/impl/StaticUnicodeSets$Key;-><clinit>()V
+HSPLandroid/icu/impl/StaticUnicodeSets$Key;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/impl/StaticUnicodeSets$Key;->values()[Landroid/icu/impl/StaticUnicodeSets$Key;
+HSPLandroid/icu/impl/StaticUnicodeSets$ParseDataSink;-><clinit>()V
+HSPLandroid/icu/impl/StaticUnicodeSets$ParseDataSink;-><init>()V
+HSPLandroid/icu/impl/StaticUnicodeSets$ParseDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/impl/StaticUnicodeSets;-><clinit>()V
+HSPLandroid/icu/impl/StaticUnicodeSets;->access$000(Landroid/icu/impl/StaticUnicodeSets$Key;Ljava/lang/String;)V
+HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key;
+HSPLandroid/icu/impl/StaticUnicodeSets;->chooseFrom(Ljava/lang/String;Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/impl/StaticUnicodeSets$Key;
+HSPLandroid/icu/impl/StaticUnicodeSets;->computeUnion(Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/StaticUnicodeSets;->computeUnion(Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/StaticUnicodeSets;->get(Landroid/icu/impl/StaticUnicodeSets$Key;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/StaticUnicodeSets;->saveSet(Landroid/icu/impl/StaticUnicodeSets$Key;Ljava/lang/String;)V
+HSPLandroid/icu/impl/StringPrepDataReader;-><clinit>()V
 HSPLandroid/icu/impl/StringPrepDataReader;-><init>(Ljava/nio/ByteBuffer;)V
+HSPLandroid/icu/impl/StringPrepDataReader;->getUnicodeVersion()[B
 HSPLandroid/icu/impl/StringPrepDataReader;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/TimeZoneNamesFactoryImpl;-><init>()V
+HSPLandroid/icu/impl/StringPrepDataReader;->read(I)[C
+HSPLandroid/icu/impl/StringPrepDataReader;->readIndexes(I)[I
+HSPLandroid/icu/impl/StringSegment;-><clinit>()V
+HSPLandroid/icu/impl/StringSegment;-><init>(Ljava/lang/String;Z)V
+HSPLandroid/icu/impl/StringSegment;->adjustOffset(I)V
+HSPLandroid/icu/impl/StringSegment;->charAt(I)C
+HSPLandroid/icu/impl/StringSegment;->codePointsEqual(IIZ)Z
+HSPLandroid/icu/impl/StringSegment;->getCodePoint()I
+HSPLandroid/icu/impl/StringSegment;->getCommonPrefixLength(Ljava/lang/CharSequence;)I
+HSPLandroid/icu/impl/StringSegment;->getOffset()I
+HSPLandroid/icu/impl/StringSegment;->getPrefixLengthInternal(Ljava/lang/CharSequence;Z)I
+HSPLandroid/icu/impl/StringSegment;->length()I
+HSPLandroid/icu/impl/StringSegment;->startsWith(Landroid/icu/text/UnicodeSet;)Z
+HSPLandroid/icu/impl/StringSegment;->startsWith(Ljava/lang/CharSequence;)Z
+HSPLandroid/icu/impl/TextTrieMap$Node;-><init>(Landroid/icu/impl/TextTrieMap;)V
+HSPLandroid/icu/impl/TextTrieMap$Node;-><init>(Landroid/icu/impl/TextTrieMap;Landroid/icu/impl/TextTrieMap$1;)V
+HSPLandroid/icu/impl/TextTrieMap;-><init>(Z)V
 HSPLandroid/icu/impl/TimeZoneNamesFactoryImpl;->getTimeZoneNames(Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-HSPLandroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache;-><init>(Landroid/icu/impl/TimeZoneNamesImpl$1;)V
+HSPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;-><init>(Ljava/lang/String;JJ)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->from()J
 HSPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->mzID()Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;->to()J
-HSPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;-><init>(Landroid/icu/impl/TimeZoneNamesImpl$1;)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;->parseDate(Ljava/lang/String;)J
-HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;->values()[Landroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;-><init>([Ljava/lang/String;)V
+HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->createMetaZoneAndPutInCache(Ljava/util/Map;[Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->createTimeZoneAndPutInCache(Ljava/util/Map;[Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->getName(Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNames;->getNameTypeIndex(Landroid/icu/text/TimeZoneNames$NameType;)I
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;-><init>()V
+HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;-><init>(Landroid/icu/impl/TimeZoneNamesImpl$1;)V
+HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->access$600(Landroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;)[Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->getNames()[Ljava/lang/String;
+HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadMetaZone(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadNames(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
+HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->loadTimeZone(Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->nameTypeIndexFromKey(Landroid/icu/impl/UResource$Key;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;->setNameIfEmpty(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/impl/TimeZoneNamesImpl;->_getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set;
-HSPLandroid/icu/impl/TimeZoneNamesImpl;->_getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String;
+HSPLandroid/icu/impl/TimeZoneNamesImpl;-><init>(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->getAvailableMetaZoneIDs(Ljava/lang/String;)Ljava/util/Set;
-HSPLandroid/icu/impl/TimeZoneNamesImpl;->getDefaultExemplarLocationName(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->getMetaZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->getMetaZoneID(Ljava/lang/String;J)Ljava/lang/String;
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->getTimeZoneDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;)Ljava/lang/String;
@@ -7976,177 +6456,227 @@
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->loadMetaZoneNames(Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames;
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->loadStrings(Ljava/lang/String;)V
 HSPLandroid/icu/impl/TimeZoneNamesImpl;->loadTimeZoneNames(Ljava/lang/String;)Landroid/icu/impl/TimeZoneNamesImpl$ZNames;
-HSPLandroid/icu/impl/Trie2$1;-><init>()V
+HSPLandroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>()V
+HSPLandroid/icu/impl/Trie$DefaultGetFoldingOffset;-><init>(Landroid/icu/impl/Trie$1;)V
 HSPLandroid/icu/impl/Trie2$1;->map(I)I
+HSPLandroid/icu/impl/Trie2$Range;-><init>()V
+HSPLandroid/icu/impl/Trie2$Trie2Iterator;-><init>(Landroid/icu/impl/Trie2;Landroid/icu/impl/Trie2$ValueMapper;)V
 HSPLandroid/icu/impl/Trie2$Trie2Iterator;->hasNext()Z
 HSPLandroid/icu/impl/Trie2$Trie2Iterator;->next()Landroid/icu/impl/Trie2$Range;
-HSPLandroid/icu/impl/Trie2$ValueWidth;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/impl/Trie2$ValueWidth;->values()[Landroid/icu/impl/Trie2$ValueWidth;
+HSPLandroid/icu/impl/Trie2$Trie2Iterator;->next()Ljava/lang/Object;
+HSPLandroid/icu/impl/Trie2$Trie2Iterator;->rangeEndLS(C)I
+HSPLandroid/icu/impl/Trie2$UTrie2Header;-><init>()V
+HSPLandroid/icu/impl/Trie2;-><init>()V
 HSPLandroid/icu/impl/Trie2;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2;
+HSPLandroid/icu/impl/Trie2;->iterator()Ljava/util/Iterator;
+HSPLandroid/icu/impl/Trie2;->iterator(Landroid/icu/impl/Trie2$ValueMapper;)Ljava/util/Iterator;
+HSPLandroid/icu/impl/Trie2_16;-><init>()V
 HSPLandroid/icu/impl/Trie2_16;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2_16;
 HSPLandroid/icu/impl/Trie2_16;->get(I)I
 HSPLandroid/icu/impl/Trie2_16;->getFromU16SingleLead(C)I
 HSPLandroid/icu/impl/Trie2_16;->getSerializedLength()I
 HSPLandroid/icu/impl/Trie2_16;->rangeEnd(III)I
-HSPLandroid/icu/impl/Trie2_32;->createFromSerialized(Ljava/nio/ByteBuffer;)Landroid/icu/impl/Trie2_32;
-HSPLandroid/icu/impl/Trie2_32;->getSerializedLength()I
+HSPLandroid/icu/impl/Trie2_32;->get(I)I
+HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I
+HSPLandroid/icu/impl/Trie;-><clinit>()V
 HSPLandroid/icu/impl/Trie;-><init>(Ljava/nio/ByteBuffer;Landroid/icu/impl/Trie$DataManipulate;)V
-HSPLandroid/icu/impl/UBiDiProps$IsAcceptable;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/UBiDiProps;-><init>()V
-HSPLandroid/icu/impl/UBiDiProps;->getMaxValue(I)I
-HSPLandroid/icu/impl/UBiDiProps;->readData(Ljava/nio/ByteBuffer;)V
+HSPLandroid/icu/impl/Trie;->checkHeader(I)Z
+HSPLandroid/icu/impl/Trie;->isCharTrie()Z
+HSPLandroid/icu/impl/UBiDiProps;->addPropertyStarts(Landroid/icu/text/UnicodeSet;)V
+HSPLandroid/icu/impl/UBiDiProps;->getClass(I)I
+HSPLandroid/icu/impl/UBiDiProps;->getClassFromProps(I)I
+HSPLandroid/icu/impl/UBiDiProps;->getFlagFromProps(II)Z
+HSPLandroid/icu/impl/UBiDiProps;->getMirrorCodePoint(I)I
+HSPLandroid/icu/impl/UBiDiProps;->isBidiControl(I)Z
+HSPLandroid/icu/impl/UCaseProps$IsAcceptable;-><init>()V
+HSPLandroid/icu/impl/UCaseProps$IsAcceptable;-><init>(Landroid/icu/impl/UCaseProps$1;)V
 HSPLandroid/icu/impl/UCaseProps$IsAcceptable;->isDataVersionAcceptable([B)Z
+HSPLandroid/icu/impl/UCaseProps;-><clinit>()V
 HSPLandroid/icu/impl/UCaseProps;-><init>()V
-HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/lang/String;)I
-HSPLandroid/icu/impl/UCaseProps;->getTrie()Landroid/icu/impl/Trie2_16;
+HSPLandroid/icu/impl/UCaseProps;->fold(II)I
+HSPLandroid/icu/impl/UCaseProps;->getCaseLocale(Ljava/util/Locale;)I
+HSPLandroid/icu/impl/UCaseProps;->getDelta(I)I
+HSPLandroid/icu/impl/UCaseProps;->isUpperOrTitleFromProps(I)Z
+HSPLandroid/icu/impl/UCaseProps;->propsHasException(I)Z
 HSPLandroid/icu/impl/UCaseProps;->readData(Ljava/nio/ByteBuffer;)V
-HSPLandroid/icu/impl/UCharacterProperty$10;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$11;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$12;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$13;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$14;-><init>(Landroid/icu/impl/UCharacterProperty;)V
-HSPLandroid/icu/impl/UCharacterProperty$15;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$16;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$17;-><init>(Landroid/icu/impl/UCharacterProperty;)V
-HSPLandroid/icu/impl/UCharacterProperty$18;-><init>(Landroid/icu/impl/UCharacterProperty;)V
-HSPLandroid/icu/impl/UCharacterProperty$19;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$20;-><init>(Landroid/icu/impl/UCharacterProperty;III)V
-HSPLandroid/icu/impl/UCharacterProperty$20;->getValue(I)I
-HSPLandroid/icu/impl/UCharacterProperty$21;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$22;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$23;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$24;-><init>(Landroid/icu/impl/UCharacterProperty;)V
-HSPLandroid/icu/impl/UCharacterProperty$25;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$26;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$27;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$5;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$6;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$7;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$8;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$9;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$BiDiIntProperty;->getMaxValue(I)I
-HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;-><init>(Landroid/icu/impl/UCharacterProperty;II)V
-HSPLandroid/icu/impl/UCharacterProperty$CaseBinaryProperty;-><init>(Landroid/icu/impl/UCharacterProperty;I)V
-HSPLandroid/icu/impl/UCharacterProperty$IntProperty;-><init>(Landroid/icu/impl/UCharacterProperty;III)V
-HSPLandroid/icu/impl/UCharacterProperty$IsAcceptable;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/UCharacterProperty$NormInertBinaryProperty;-><init>(Landroid/icu/impl/UCharacterProperty;II)V
-HSPLandroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty;-><init>(Landroid/icu/impl/UCharacterProperty;III)V
-HSPLandroid/icu/impl/UCharacterProperty;-><init>()V
+HSPLandroid/icu/impl/UCharacterProperty$1;->contains(I)Z
+HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;->contains(I)Z
+HSPLandroid/icu/impl/UCharacterProperty$BinaryProperty;->getSource()I
+HSPLandroid/icu/impl/UCharacterProperty$IntProperty;->getSource()I
 HSPLandroid/icu/impl/UCharacterProperty;->addPropertyStarts(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
-HSPLandroid/icu/impl/UCharacterProperty;->getEuropeanDigit(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->digit(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->getAdditional(II)I
 HSPLandroid/icu/impl/UCharacterProperty;->getIntPropertyValue(II)I
-HSPLandroid/icu/impl/UCharacterProperty;->getMask(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->getNumericTypeValue(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I
 HSPLandroid/icu/impl/UCharacterProperty;->getSource(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I
+HSPLandroid/icu/impl/UCharacterProperty;->hasBinaryProperty(II)Z
 HSPLandroid/icu/impl/UCharacterProperty;->upropsvec_addPropertyStarts(Landroid/icu/text/UnicodeSet;)V
+HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;-><init>()V
 HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;-><init>(Landroid/icu/impl/UPropertyAliases$1;)V
 HSPLandroid/icu/impl/UPropertyAliases$IsAcceptable;->isDataVersionAcceptable([B)Z
+HSPLandroid/icu/impl/UPropertyAliases;-><clinit>()V
 HSPLandroid/icu/impl/UPropertyAliases;-><init>()V
+HSPLandroid/icu/impl/UPropertyAliases;->asciiToLowercase(I)I
 HSPLandroid/icu/impl/UPropertyAliases;->containsName(Landroid/icu/util/BytesTrie;Ljava/lang/CharSequence;)Z
 HSPLandroid/icu/impl/UPropertyAliases;->findProperty(I)I
+HSPLandroid/icu/impl/UPropertyAliases;->getPropertyEnum(Ljava/lang/CharSequence;)I
+HSPLandroid/icu/impl/UPropertyAliases;->getPropertyOrValueEnum(ILjava/lang/CharSequence;)I
 HSPLandroid/icu/impl/UPropertyAliases;->getPropertyValueEnum(ILjava/lang/CharSequence;)I
+HSPLandroid/icu/impl/UPropertyAliases;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
 HSPLandroid/icu/impl/UPropertyAliases;->load(Ljava/nio/ByteBuffer;)V
+HSPLandroid/icu/impl/UResource$Key;-><init>()V
 HSPLandroid/icu/impl/UResource$Key;->charAt(I)C
+HSPLandroid/icu/impl/UResource$Key;->contentEquals(Ljava/lang/CharSequence;)Z
+HSPLandroid/icu/impl/UResource$Key;->endsWith(Ljava/lang/CharSequence;)Z
+HSPLandroid/icu/impl/UResource$Key;->internalSubString(II)Ljava/lang/String;
 HSPLandroid/icu/impl/UResource$Key;->length()I
+HSPLandroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z
+HSPLandroid/icu/impl/UResource$Key;->setBytes([BI)Landroid/icu/impl/UResource$Key;
 HSPLandroid/icu/impl/UResource$Key;->setString(Ljava/lang/String;)Landroid/icu/impl/UResource$Key;
 HSPLandroid/icu/impl/UResource$Key;->toString()Ljava/lang/String;
+HSPLandroid/icu/impl/UResource$Sink;-><init>()V
+HSPLandroid/icu/impl/UResource$Value;-><init>()V
 HSPLandroid/icu/impl/UResource$Value;->toString()Ljava/lang/String;
-HSPLandroid/icu/impl/USerializedSet;-><init>()V
-HSPLandroid/icu/impl/USerializedSet;->getRange(I[I)Z
-HSPLandroid/icu/impl/USerializedSet;->getSet([CI)Z
-HSPLandroid/icu/impl/ZoneMeta$CustomTimeZoneCache;-><init>(Landroid/icu/impl/ZoneMeta$1;)V
-HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;-><init>(Landroid/icu/impl/ZoneMeta$1;)V
+HSPLandroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><clinit>()V
+HSPLandroid/icu/impl/UnicodeSetStringSpan$OffsetList;-><init>()V
+HSPLandroid/icu/impl/UnicodeSetStringSpan;-><init>(Landroid/icu/text/UnicodeSet;Ljava/util/ArrayList;I)V
+HSPLandroid/icu/impl/UnicodeSetStringSpan;->addToSpanNotSet(I)V
+HSPLandroid/icu/impl/UnicodeSetStringSpan;->makeSpanLengthByte(I)S
+HSPLandroid/icu/impl/UnicodeSetStringSpan;->needsStringSpanUTF16()Z
+HSPLandroid/icu/impl/Utility;->addExact(II)I
+HSPLandroid/icu/impl/Utility;->appendTo(Ljava/lang/CharSequence;Ljava/lang/Appendable;)Ljava/lang/Appendable;
+HSPLandroid/icu/impl/Utility;->sameObjects(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLandroid/icu/impl/Utility;->unescapeAt(Ljava/lang/String;[I)I
 HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/impl/ZoneMeta$SystemTimeZoneCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone;
 HSPLandroid/icu/impl/ZoneMeta;->findCLDRCanonicalID(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/impl/ZoneMeta;->getAvailableIDs(Landroid/icu/util/TimeZone$SystemTimeZoneType;Ljava/lang/String;Ljava/lang/Integer;)Ljava/util/Set;
+HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Landroid/icu/util/TimeZone;)Ljava/lang/String;
 HSPLandroid/icu/impl/ZoneMeta;->getCanonicalCLDRID(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/impl/ZoneMeta;->getSystemZIDs()Ljava/util/Set;
+HSPLandroid/icu/impl/ZoneMeta;->getSystemTimeZone(Ljava/lang/String;)Landroid/icu/impl/OlsonTimeZone;
 HSPLandroid/icu/impl/ZoneMeta;->getZoneIDs()[Ljava/lang/String;
 HSPLandroid/icu/impl/ZoneMeta;->getZoneIndex(Ljava/lang/String;)I
 HSPLandroid/icu/impl/ZoneMeta;->openOlsonResource(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
-HSPLandroid/icu/impl/coll/CollationData;->getLastPrimaryForGroup(I)J
-HSPLandroid/icu/impl/coll/CollationDataReader$IsAcceptable;-><init>(Landroid/icu/impl/coll/CollationDataReader$1;)V
-HSPLandroid/icu/impl/coll/CollationDataReader$IsAcceptable;->isDataVersionAcceptable([B)Z
-HSPLandroid/icu/impl/coll/CollationDataReader;->read(Landroid/icu/impl/coll/CollationTailoring;Ljava/nio/ByteBuffer;Landroid/icu/impl/coll/CollationTailoring;)V
+HSPLandroid/icu/impl/coll/Collation;-><clinit>()V
+HSPLandroid/icu/impl/coll/Collation;->indexFromCE32(I)I
+HSPLandroid/icu/impl/coll/Collation;->isSpecialCE32(I)Z
+HSPLandroid/icu/impl/coll/Collation;->tagFromCE32(I)I
+HSPLandroid/icu/impl/coll/CollationData;->getCE32(I)I
+HSPLandroid/icu/impl/coll/CollationData;->isUnsafeBackward(IZ)Z
 HSPLandroid/icu/impl/coll/CollationFastLatin;->compareUTF16([C[CILjava/lang/CharSequence;Ljava/lang/CharSequence;I)I
 HSPLandroid/icu/impl/coll/CollationFastLatin;->getOptions(Landroid/icu/impl/coll/CollationData;Landroid/icu/impl/coll/CollationSettings;[C)I
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;-><init>()V
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->append(J)V
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->ensureAppendCapacity(I)V
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->get(I)J
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->incLength()V
+HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->set(IJ)J
+HSPLandroid/icu/impl/coll/CollationIterator;-><clinit>()V
+HSPLandroid/icu/impl/coll/CollationIterator;-><init>(Landroid/icu/impl/coll/CollationData;)V
+HSPLandroid/icu/impl/coll/CollationIterator;->appendCEsFromCE32(Landroid/icu/impl/coll/CollationData;IIZ)V
+HSPLandroid/icu/impl/coll/CollationIterator;->makeCodePointAndCE32Pair(II)J
+HSPLandroid/icu/impl/coll/CollationIterator;->nextCE()J
+HSPLandroid/icu/impl/coll/CollationIterator;->nextCEFromCE32(Landroid/icu/impl/coll/CollationData;II)J
+HSPLandroid/icu/impl/coll/CollationIterator;->reset()V
+HSPLandroid/icu/impl/coll/CollationIterator;->reset(Z)V
+HSPLandroid/icu/impl/coll/CollationLoader;->findWithFallback(Landroid/icu/util/UResourceBundle;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/impl/coll/CollationLoader;->loadTailoring(Landroid/icu/util/ULocale;Landroid/icu/util/Output;)Landroid/icu/impl/coll/CollationTailoring;
+HSPLandroid/icu/impl/coll/CollationRoot;->getRoot()Landroid/icu/impl/coll/CollationTailoring;
+HSPLandroid/icu/impl/coll/CollationSettings;->clone()Landroid/icu/impl/coll/CollationSettings;
 HSPLandroid/icu/impl/coll/CollationSettings;->clone()Landroid/icu/impl/coll/SharedObject;
+HSPLandroid/icu/impl/coll/CollationSettings;->dontCheckFCD()Z
+HSPLandroid/icu/impl/coll/CollationSettings;->getStrength()I
+HSPLandroid/icu/impl/coll/CollationSettings;->getStrength(I)I
+HSPLandroid/icu/impl/coll/CollationSettings;->hasReordering()Z
+HSPLandroid/icu/impl/coll/CollationSettings;->isNumeric()Z
+HSPLandroid/icu/impl/coll/CollationSettings;->setFlag(IZ)V
 HSPLandroid/icu/impl/coll/CollationSettings;->setStrength(I)V
 HSPLandroid/icu/impl/coll/CollationTailoring;-><init>(Landroid/icu/impl/coll/SharedObject$Reference;)V
-HSPLandroid/icu/impl/coll/CollationTailoring;->ensureOwnedData()V
+HSPLandroid/icu/impl/coll/FCDUTF16CollationIterator;-><clinit>()V
+HSPLandroid/icu/impl/coll/FCDUTF16CollationIterator;-><init>(Landroid/icu/impl/coll/CollationData;)V
+HSPLandroid/icu/impl/coll/SharedObject$Reference;->clear()V
 HSPLandroid/icu/impl/coll/SharedObject$Reference;->clone()Landroid/icu/impl/coll/SharedObject$Reference;
 HSPLandroid/icu/impl/coll/SharedObject$Reference;->copyOnWrite()Landroid/icu/impl/coll/SharedObject;
 HSPLandroid/icu/impl/coll/SharedObject$Reference;->finalize()V
+HSPLandroid/icu/impl/coll/SharedObject$Reference;->readOnly()Landroid/icu/impl/coll/SharedObject;
+HSPLandroid/icu/impl/coll/SharedObject;->addRef()V
 HSPLandroid/icu/impl/coll/SharedObject;->clone()Landroid/icu/impl/coll/SharedObject;
-HSPLandroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;-><init>(Ljava/lang/String;)V
-HSPLandroid/icu/impl/locale/AsciiUtil$CaseInsensitiveKey;->hashCode()I
+HSPLandroid/icu/impl/coll/SharedObject;->getRefCount()I
+HSPLandroid/icu/impl/coll/SharedObject;->removeRef()V
+HSPLandroid/icu/impl/coll/UTF16CollationIterator;-><clinit>()V
+HSPLandroid/icu/impl/coll/UTF16CollationIterator;-><init>(Landroid/icu/impl/coll/CollationData;)V
+HSPLandroid/icu/impl/coll/UTF16CollationIterator;->setText(ZLjava/lang/CharSequence;I)V
 HSPLandroid/icu/impl/locale/AsciiUtil;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLandroid/icu/impl/locale/AsciiUtil;->isAlpha(C)Z
+HSPLandroid/icu/impl/locale/AsciiUtil;->toLower(C)C
 HSPLandroid/icu/impl/locale/AsciiUtil;->toLowerString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/impl/locale/AsciiUtil;->toTitleString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/impl/locale/AsciiUtil;->toUpper(C)C
 HSPLandroid/icu/impl/locale/AsciiUtil;->toUpperString(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/impl/locale/BaseLocale$Cache;-><init>()V
 HSPLandroid/icu/impl/locale/BaseLocale$Cache;->createObject(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale;
 HSPLandroid/icu/impl/locale/BaseLocale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
 HSPLandroid/icu/impl/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/impl/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/icu/impl/locale/BaseLocale$Key;->access$000(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale$Key;->access$100(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale$Key;->access$200(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale$Key;->access$300(Landroid/icu/impl/locale/BaseLocale$Key;)Ljava/lang/String;
 HSPLandroid/icu/impl/locale/BaseLocale$Key;->equals(Ljava/lang/Object;)Z
 HSPLandroid/icu/impl/locale/BaseLocale$Key;->hashCode()I
 HSPLandroid/icu/impl/locale/BaseLocale$Key;->normalize(Landroid/icu/impl/locale/BaseLocale$Key;)Landroid/icu/impl/locale/BaseLocale$Key;
 HSPLandroid/icu/impl/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/icu/impl/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/locale/BaseLocale$1;)V
 HSPLandroid/icu/impl/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/impl/locale/BaseLocale;
-HSPLandroid/icu/impl/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(C)V
-HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getBaseLocale()Landroid/icu/impl/locale/BaseLocale;
-HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->getLocaleExtensions()Landroid/icu/impl/locale/LocaleExtensions;
-HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Landroid/icu/impl/locale/InternalLocaleBuilder;
-HSPLandroid/icu/impl/locale/InternalLocaleBuilder;->setLanguageTag(Landroid/icu/impl/locale/LanguageTag;)Landroid/icu/impl/locale/InternalLocaleBuilder;
-HSPLandroid/icu/impl/locale/LanguageTag;->getExtensions()Ljava/util/List;
-HSPLandroid/icu/impl/locale/LanguageTag;->getExtlangs()Ljava/util/List;
-HSPLandroid/icu/impl/locale/LanguageTag;->getLanguage()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/LanguageTag;->getPrivateuse()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/LanguageTag;->getRegion()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/LanguageTag;->getScript()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/LanguageTag;->getVariants()Ljava/util/List;
-HSPLandroid/icu/impl/locale/LanguageTag;->parse(Ljava/lang/String;Landroid/icu/impl/locale/ParseStatus;)Landroid/icu/impl/locale/LanguageTag;
-HSPLandroid/icu/impl/locale/LanguageTag;->parseExtensions(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseExtlangs(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseLanguage(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseLocale(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/impl/locale/LanguageTag;
-HSPLandroid/icu/impl/locale/LanguageTag;->parsePrivateuse(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseRegion(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseScript(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LanguageTag;->parseVariants(Landroid/icu/impl/locale/StringTokenIterator;Landroid/icu/impl/locale/ParseStatus;)Z
-HSPLandroid/icu/impl/locale/LocaleExtensions;-><init>()V
-HSPLandroid/icu/impl/locale/LocaleExtensions;->getKeys()Ljava/util/Set;
+HSPLandroid/icu/impl/locale/BaseLocale;->getLanguage()Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale;->getRegion()Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale;->getScript()Ljava/lang/String;
+HSPLandroid/icu/impl/locale/BaseLocale;->getVariant()Ljava/lang/String;
+HSPLandroid/icu/impl/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
+HSPLandroid/icu/impl/locale/LocaleObjectCache;->cleanStaleEntries()V
 HSPLandroid/icu/impl/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/icu/impl/locale/ParseStatus;->isError()Z
-HSPLandroid/icu/impl/locale/StringTokenIterator;->current()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/StringTokenIterator;->currentEnd()I
-HSPLandroid/icu/impl/locale/StringTokenIterator;->hasNext()Z
-HSPLandroid/icu/impl/locale/StringTokenIterator;->isDone()Z
-HSPLandroid/icu/impl/locale/StringTokenIterator;->next()Ljava/lang/String;
-HSPLandroid/icu/impl/locale/StringTokenIterator;->nextDelimiter(I)I
-HSPLandroid/icu/impl/locale/StringTokenIterator;->setStart(I)Landroid/icu/impl/locale/StringTokenIterator;
-HSPLandroid/icu/impl/locale/UnicodeLocaleExtension;-><init>()V
+HSPLandroid/icu/impl/number/AdoptingModifierStore;-><clinit>()V
+HSPLandroid/icu/impl/number/AdoptingModifierStore;-><init>(Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;Landroid/icu/impl/number/Modifier;)V
+HSPLandroid/icu/impl/number/AdoptingModifierStore;->getModifierWithoutPlural(I)Landroid/icu/impl/number/Modifier;
+HSPLandroid/icu/impl/number/AffixUtils;->containsType(Ljava/lang/CharSequence;I)Z
+HSPLandroid/icu/impl/number/AffixUtils;->escape(Ljava/lang/CharSequence;)Ljava/lang/String;
 HSPLandroid/icu/impl/number/AffixUtils;->getFieldForType(I)Landroid/icu/text/NumberFormat$Field;
+HSPLandroid/icu/impl/number/AffixUtils;->getOffset(J)I
+HSPLandroid/icu/impl/number/AffixUtils;->getState(J)I
+HSPLandroid/icu/impl/number/AffixUtils;->getType(J)I
+HSPLandroid/icu/impl/number/AffixUtils;->getTypeOrCp(J)I
 HSPLandroid/icu/impl/number/AffixUtils;->hasCurrencySymbols(Ljava/lang/CharSequence;)Z
 HSPLandroid/icu/impl/number/AffixUtils;->hasNext(JLjava/lang/CharSequence;)Z
+HSPLandroid/icu/impl/number/AffixUtils;->iterateWithConsumer(Ljava/lang/CharSequence;Landroid/icu/impl/number/AffixUtils$TokenConsumer;)V
+HSPLandroid/icu/impl/number/AffixUtils;->makeTag(IIII)J
 HSPLandroid/icu/impl/number/AffixUtils;->nextToken(JLjava/lang/CharSequence;)J
-HSPLandroid/icu/impl/number/AffixUtils;->unescape(Ljava/lang/CharSequence;Landroid/icu/impl/number/NumberStringBuilder;ILandroid/icu/impl/number/AffixUtils$SymbolProvider;)I
+HSPLandroid/icu/impl/number/AffixUtils;->unescape(Ljava/lang/CharSequence;Landroid/icu/impl/FormattedStringBuilder;ILandroid/icu/impl/number/AffixUtils$SymbolProvider;Landroid/icu/text/NumberFormat$Field;)I
+HSPLandroid/icu/impl/number/AffixUtils;->unescapedCount(Ljava/lang/CharSequence;ZLandroid/icu/impl/number/AffixUtils$SymbolProvider;)I
+HSPLandroid/icu/impl/number/ConstantAffixModifier;-><clinit>()V
 HSPLandroid/icu/impl/number/ConstantAffixModifier;-><init>()V
-HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/number/NumberStringBuilder;II)I
-HSPLandroid/icu/impl/number/CurrencySpacingEnabledModifier;->applyCurrencySpacing(Landroid/icu/impl/number/NumberStringBuilder;IIIILandroid/icu/text/DecimalFormatSymbols;)I
+HSPLandroid/icu/impl/number/ConstantAffixModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I
+HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZ)V
+HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;ZZLandroid/icu/impl/number/Modifier$Parameters;)V
+HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I
+HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->getPrefixLength()I
+HSPLandroid/icu/impl/number/CurrencySpacingEnabledModifier;-><clinit>()V
+HSPLandroid/icu/impl/number/CurrencySpacingEnabledModifier;->applyCurrencySpacing(Landroid/icu/impl/FormattedStringBuilder;IIIILandroid/icu/text/DecimalFormatSymbols;)I
+HSPLandroid/icu/impl/number/CurrencySpacingEnabledModifier;->applyCurrencySpacingAffix(Landroid/icu/impl/FormattedStringBuilder;IBLandroid/icu/text/DecimalFormatSymbols;)I
 HSPLandroid/icu/impl/number/CustomSymbolCurrency;->resolve(Landroid/icu/util/Currency;Landroid/icu/util/ULocale;Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/util/Currency;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;-><init>()V
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->_clear()Landroid/icu/impl/number/DecimalFormatProperties;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->_copyFrom(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->clear()Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->clone()Landroid/icu/impl/number/DecimalFormatProperties;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->copyFrom(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getCompactStyle()Landroid/icu/text/CompactDecimalFormat$CompactStyle;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getCurrency()Landroid/icu/util/Currency;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getCurrencyPluralInfo()Landroid/icu/text/CurrencyPluralInfo;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getCurrencyUsage()Landroid/icu/util/Currency$CurrencyUsage;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getDecimalPatternMatchRequired()Z
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getDecimalSeparatorAlwaysShown()Z
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getExponentSignAlwaysShown()Z
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getFormatWidth()I
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getGroupingSize()I
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getGroupingUsed()Z
@@ -8165,6 +6695,13 @@
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getNegativePrefixPattern()Ljava/lang/String;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getNegativeSuffix()Ljava/lang/String;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getNegativeSuffixPattern()Ljava/lang/String;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getPadPosition()Landroid/icu/impl/number/Padder$PadPosition;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getPadString()Ljava/lang/String;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getParseCaseSensitive()Z
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getParseIntegerOnly()Z
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getParseMode()Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getParseNoExponent()Z
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->getParseToBigDecimal()Z
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getPluralRules()Landroid/icu/text/PluralRules;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getPositivePrefix()Ljava/lang/String;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->getPositivePrefixPattern()Ljava/lang/String;
@@ -8193,49 +6730,92 @@
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setNegativeSuffixPattern(Ljava/lang/String;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setPadPosition(Landroid/icu/impl/number/Padder$PadPosition;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setPadString(Ljava/lang/String;)Landroid/icu/impl/number/DecimalFormatProperties;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->setParseIntegerOnly(Z)Landroid/icu/impl/number/DecimalFormatProperties;
+HSPLandroid/icu/impl/number/DecimalFormatProperties;->setParseMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setPositivePrefixPattern(Ljava/lang/String;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setPositiveSuffixPattern(Ljava/lang/String;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setRoundingIncrement(Ljava/math/BigDecimal;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setRoundingMode(Ljava/math/RoundingMode;)Landroid/icu/impl/number/DecimalFormatProperties;
 HSPLandroid/icu/impl/number/DecimalFormatProperties;->setSecondaryGroupingSize(I)Landroid/icu/impl/number/DecimalFormatProperties;
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;-><clinit>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;-><init>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToDoubleFast(D)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->_setToLong(J)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->adjustMagnitude(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->appendDigit(BIZ)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->applyMaxInteger(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->fitsInLong()Z
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getDigit(I)B
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getLowerDisplayMagnitude()I
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getMagnitude()I
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->getUpperDisplayMagnitude()I
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isInfinite()Z
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isNaN()Z
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isNegative()Z
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isZero()Z
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->isZeroish()Z
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->negate()V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->populateUFieldPosition(Ljava/text/FieldPosition;)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setFractionLength(II)V
-HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setIntegerLength(II)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->roundToMagnitude(ILjava/math/MathContext;Z)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->safeSubtract(II)I
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinFraction(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setMinInteger(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToDouble(D)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToInt(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->setToLong(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->signum()I
+HSPLandroid/icu/impl/number/DecimalQuantity_AbstractBCD;->toLong(Z)J
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><clinit>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>()V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(D)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;-><init>(J)V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->compact()V
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->getDigitPos(I)B
 HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->readIntToBcd(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->readLongToBcd(J)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->setBcdToZero()V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->setDigitPos(IB)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftLeft(I)V
+HSPLandroid/icu/impl/number/DecimalQuantity_DualStorageBCD;->shiftRight(I)V
 HSPLandroid/icu/impl/number/Grouper;-><init>(SSS)V
 HSPLandroid/icu/impl/number/Grouper;->forProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/Grouper;
 HSPLandroid/icu/impl/number/Grouper;->getInstance(SSS)Landroid/icu/impl/number/Grouper;
+HSPLandroid/icu/impl/number/Grouper;->getPrimary()S
+HSPLandroid/icu/impl/number/Grouper;->getSecondary()S
 HSPLandroid/icu/impl/number/Grouper;->groupAtPosition(ILandroid/icu/impl/number/DecimalQuantity;)Z
 HSPLandroid/icu/impl/number/Grouper;->withLocaleData(Landroid/icu/util/ULocale;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)Landroid/icu/impl/number/Grouper;
 HSPLandroid/icu/impl/number/MacroProps;-><init>()V
 HSPLandroid/icu/impl/number/MacroProps;->fallback(Landroid/icu/impl/number/MacroProps;)V
+HSPLandroid/icu/impl/number/MicroProps;-><init>(Z)V
+HSPLandroid/icu/impl/number/MicroProps;->clone()Ljava/lang/Object;
 HSPLandroid/icu/impl/number/MicroProps;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
-HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/number/NumberStringBuilder;II)I
+HSPLandroid/icu/impl/number/MultiplierFormatHandler;-><init>(Landroid/icu/number/Scale;Landroid/icu/impl/number/MicroPropsGenerator;)V
+HSPLandroid/icu/impl/number/MultiplierFormatHandler;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
+HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/AdoptingModifierStore;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V
+HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->applyToMicros(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;)V
+HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
+HSPLandroid/icu/impl/number/MutablePatternModifier;-><clinit>()V
+HSPLandroid/icu/impl/number/MutablePatternModifier;-><init>(Z)V
+HSPLandroid/icu/impl/number/MutablePatternModifier;->addToChain(Landroid/icu/impl/number/MicroPropsGenerator;)Landroid/icu/impl/number/MicroPropsGenerator;
+HSPLandroid/icu/impl/number/MutablePatternModifier;->apply(Landroid/icu/impl/FormattedStringBuilder;II)I
+HSPLandroid/icu/impl/number/MutablePatternModifier;->createConstantModifier(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/FormattedStringBuilder;)Landroid/icu/impl/number/ConstantMultiFieldModifier;
+HSPLandroid/icu/impl/number/MutablePatternModifier;->createImmutableAndChain(Landroid/icu/impl/number/MicroPropsGenerator;)Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;
+HSPLandroid/icu/impl/number/MutablePatternModifier;->getPrefixLength()I
+HSPLandroid/icu/impl/number/MutablePatternModifier;->getSymbol(I)Ljava/lang/CharSequence;
+HSPLandroid/icu/impl/number/MutablePatternModifier;->insertPrefix(Landroid/icu/impl/FormattedStringBuilder;I)I
+HSPLandroid/icu/impl/number/MutablePatternModifier;->insertSuffix(Landroid/icu/impl/FormattedStringBuilder;I)I
 HSPLandroid/icu/impl/number/MutablePatternModifier;->needsPlurals()Z
+HSPLandroid/icu/impl/number/MutablePatternModifier;->prepareAffix(Z)V
 HSPLandroid/icu/impl/number/MutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/impl/number/MutablePatternModifier;->setNumberProperties(ILandroid/icu/impl/StandardPlural;)V
-HSPLandroid/icu/impl/number/NumberStringBuilder;-><init>()V
-HSPLandroid/icu/impl/number/NumberStringBuilder;->charAt(I)C
-HSPLandroid/icu/impl/number/NumberStringBuilder;->insert(ILjava/lang/CharSequence;Landroid/icu/text/NumberFormat$Field;)I
-HSPLandroid/icu/impl/number/NumberStringBuilder;->insertCodePoint(IILandroid/icu/text/NumberFormat$Field;)I
-HSPLandroid/icu/impl/number/NumberStringBuilder;->length()I
-HSPLandroid/icu/impl/number/NumberStringBuilder;->nextFieldPosition(Ljava/text/FieldPosition;)Z
-HSPLandroid/icu/impl/number/NumberStringBuilder;->prepareForInsert(II)I
-HSPLandroid/icu/impl/number/Padder$PadPosition;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternAttributes(Landroid/icu/number/NumberFormatter$SignDisplay;Z)V
+HSPLandroid/icu/impl/number/MutablePatternModifier;->setPatternInfo(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/text/NumberFormat$Field;)V
+HSPLandroid/icu/impl/number/MutablePatternModifier;->setSymbols(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/util/Currency;Landroid/icu/number/NumberFormatter$UnitWidth;Landroid/icu/text/PluralRules;)V
+HSPLandroid/icu/impl/number/Padder;-><clinit>()V
 HSPLandroid/icu/impl/number/Padder;-><init>(Ljava/lang/String;ILandroid/icu/impl/number/Padder$PadPosition;)V
 HSPLandroid/icu/impl/number/Padder;->isValid()Z
+HSPLandroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;-><init>(Ljava/lang/String;Landroid/icu/impl/number/PatternStringParser$1;)V
 HSPLandroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getEndpoints(I)J
 HSPLandroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;->getString(I)Ljava/lang/String;
@@ -8245,169 +6825,339 @@
 HSPLandroid/icu/impl/number/PatternStringParser$ParserState;->peek()I
 HSPLandroid/icu/impl/number/PatternStringParser;->consumeAffix(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)J
 HSPLandroid/icu/impl/number/PatternStringParser;->consumeExponent(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
+HSPLandroid/icu/impl/number/PatternStringParser;->consumeFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
 HSPLandroid/icu/impl/number/PatternStringParser;->consumeFractionFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
 HSPLandroid/icu/impl/number/PatternStringParser;->consumeIntegerFormat(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
+HSPLandroid/icu/impl/number/PatternStringParser;->consumeLiteral(Landroid/icu/impl/number/PatternStringParser$ParserState;)V
 HSPLandroid/icu/impl/number/PatternStringParser;->consumePadding(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;Landroid/icu/impl/number/Padder$PadPosition;)V
 HSPLandroid/icu/impl/number/PatternStringParser;->consumePattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;)V
 HSPLandroid/icu/impl/number/PatternStringParser;->consumeSubpattern(Landroid/icu/impl/number/PatternStringParser$ParserState;Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;)V
+HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingProperties(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V
+HSPLandroid/icu/impl/number/PatternStringParser;->parseToExistingPropertiesImpl(Ljava/lang/String;Landroid/icu/impl/number/DecimalFormatProperties;I)V
+HSPLandroid/icu/impl/number/PatternStringParser;->parseToPatternInfo(Ljava/lang/String;)Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;
 HSPLandroid/icu/impl/number/PatternStringParser;->patternInfoToProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;I)V
+HSPLandroid/icu/impl/number/PatternStringUtils;-><clinit>()V
 HSPLandroid/icu/impl/number/PatternStringUtils;->patternInfoToStringBuilder(Landroid/icu/impl/number/AffixPatternProvider;ZILandroid/icu/number/NumberFormatter$SignDisplay;Landroid/icu/impl/StandardPlural;ZLjava/lang/StringBuilder;)V
+HSPLandroid/icu/impl/number/PatternStringUtils;->propertiesToPatternString(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/lang/String;
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;-><init>(Landroid/icu/impl/number/DecimalFormatProperties;)V
+HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->charAt(II)C
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->containsSymbolType(I)Z
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->getString(I)Ljava/lang/String;
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasBody()Z
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasCurrencySign()Z
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->hasNegativeSubpattern()Z
 HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->length(I)I
-HSPLandroid/icu/impl/number/PropertiesAffixPatternProvider;->negativeHasMinusSign()Z
+HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOr34Digits(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;
 HSPLandroid/icu/impl/number/RoundingUtils;->getMathContextOrUnlimited(Landroid/icu/impl/number/DecimalFormatProperties;)Ljava/math/MathContext;
+HSPLandroid/icu/impl/number/RoundingUtils;->getRoundingDirection(ZZIILjava/lang/Object;)Z
+HSPLandroid/icu/impl/number/RoundingUtils;->roundsAtMidpoint(I)Z
 HSPLandroid/icu/impl/number/RoundingUtils;->scaleFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/Scale;
-HSPLandroid/icu/lang/UCharacter;->codePointAt(Ljava/lang/CharSequence;I)I
-HSPLandroid/icu/lang/UCharacter;->getIntPropertyMaxValue(I)I
+HSPLandroid/icu/impl/number/parse/AffixMatcher$1;-><init>()V
+HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Landroid/icu/impl/number/parse/AffixMatcher;Landroid/icu/impl/number/parse/AffixMatcher;)I
+HSPLandroid/icu/impl/number/parse/AffixMatcher$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroid/icu/impl/number/parse/AffixMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;-><init>(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->access$000(Landroid/icu/impl/number/parse/AffixMatcher;)Landroid/icu/impl/number/parse/AffixPatternMatcher;
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->access$100(Landroid/icu/impl/number/parse/AffixPatternMatcher;)I
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->createMatchers(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/NumberParserImpl;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->getInstance(Landroid/icu/impl/number/parse/AffixPatternMatcher;Landroid/icu/impl/number/parse/AffixPatternMatcher;I)Landroid/icu/impl/number/parse/AffixMatcher;
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->isInteresting(Landroid/icu/impl/number/AffixPatternProvider;Landroid/icu/impl/number/parse/IgnorablesMatcher;I)Z
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->length(Landroid/icu/impl/number/parse/AffixPatternMatcher;)I
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->matched(Landroid/icu/impl/number/parse/AffixPatternMatcher;Ljava/lang/String;)Z
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/AffixMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->consumeToken(I)V
+HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->equals(Ljava/lang/Object;)Z
+HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->fromAffixPattern(Ljava/lang/String;Landroid/icu/impl/number/parse/AffixTokenMatcherFactory;I)Landroid/icu/impl/number/parse/AffixPatternMatcher;
+HSPLandroid/icu/impl/number/parse/AffixPatternMatcher;->getPattern()Ljava/lang/String;
+HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;-><init>()V
+HSPLandroid/icu/impl/number/parse/AffixTokenMatcherFactory;->minusSign()Landroid/icu/impl/number/parse/MinusSignMatcher;
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)V
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;I)Landroid/icu/impl/number/parse/DecimalMatcher;
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)Z
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->match(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;I)Z
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/DecimalMatcher;->validateGroup(IIZ)Z
+HSPLandroid/icu/impl/number/parse/IgnorablesMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/IgnorablesMatcher;-><init>(Landroid/icu/text/UnicodeSet;)V
+HSPLandroid/icu/impl/number/parse/IgnorablesMatcher;->getInstance(I)Landroid/icu/impl/number/parse/IgnorablesMatcher;
+HSPLandroid/icu/impl/number/parse/InfinityMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/InfinityMatcher;-><init>()V
+HSPLandroid/icu/impl/number/parse/InfinityMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;)Landroid/icu/impl/number/parse/InfinityMatcher;
+HSPLandroid/icu/impl/number/parse/MinusSignMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/MinusSignMatcher;-><init>(Z)V
+HSPLandroid/icu/impl/number/parse/MinusSignMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Z)Landroid/icu/impl/number/parse/MinusSignMatcher;
+HSPLandroid/icu/impl/number/parse/NanMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/NanMatcher;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/impl/number/parse/NanMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;I)Landroid/icu/impl/number/parse/NanMatcher;
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;-><init>(I)V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->addMatcher(Landroid/icu/impl/number/parse/NumberParseMatcher;)V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->addMatchers(Ljava/util/Collection;)V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->createParserFromProperties(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Z)Landroid/icu/impl/number/parse/NumberParserImpl;
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->freeze()V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->getParseFlags()I
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parse(Ljava/lang/String;IZLandroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/NumberParserImpl;->parseGreedy(Landroid/icu/impl/StringSegment;Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/ParsedNumber$1;-><init>()V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;-><init>()V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->clear()V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->getNumber(I)Ljava/lang/Number;
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->postProcess()V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->seenNumber()Z
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->setCharsConsumed(Landroid/icu/impl/StringSegment;)V
+HSPLandroid/icu/impl/number/parse/ParsedNumber;->success()Z
+HSPLandroid/icu/impl/number/parse/ParsingUtils;->safeContains(Landroid/icu/text/UnicodeSet;Ljava/lang/CharSequence;)Z
+HSPLandroid/icu/impl/number/parse/RequireAffixValidator;-><init>()V
+HSPLandroid/icu/impl/number/parse/RequireAffixValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/RequireNumberValidator;-><init>()V
+HSPLandroid/icu/impl/number/parse/RequireNumberValidator;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;-><init>(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)V
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;->getInstance(Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/Grouper;)Landroid/icu/impl/number/parse/ScientificMatcher;
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;->minusSignSet()Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;->plusSignSet()Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/ScientificMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/SeriesMatcher;-><clinit>()V
+HSPLandroid/icu/impl/number/parse/SeriesMatcher;-><init>()V
+HSPLandroid/icu/impl/number/parse/SeriesMatcher;->addMatcher(Landroid/icu/impl/number/parse/NumberParseMatcher;)V
+HSPLandroid/icu/impl/number/parse/SeriesMatcher;->freeze()V
+HSPLandroid/icu/impl/number/parse/SeriesMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/SymbolMatcher;-><init>(Landroid/icu/impl/StaticUnicodeSets$Key;)V
+HSPLandroid/icu/impl/number/parse/SymbolMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/UnicodeSet;)V
+HSPLandroid/icu/impl/number/parse/SymbolMatcher;->postProcess(Landroid/icu/impl/number/parse/ParsedNumber;)V
+HSPLandroid/icu/impl/number/parse/SymbolMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/impl/number/parse/ValidationMatcher;-><init>()V
+HSPLandroid/icu/impl/number/parse/ValidationMatcher;->smokeTest(Landroid/icu/impl/StringSegment;)Z
+HSPLandroid/icu/lang/CharacterProperties;-><clinit>()V
+HSPLandroid/icu/lang/CharacterProperties;->getBinaryPropertySet(I)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/lang/CharacterProperties;->makeSet(I)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/lang/UCharacter;->digit(I)I
+HSPLandroid/icu/lang/UCharacter;->digit(II)I
+HSPLandroid/icu/lang/UCharacter;->foldCase(II)I
+HSPLandroid/icu/lang/UCharacter;->foldCase(IZ)I
+HSPLandroid/icu/lang/UCharacter;->getIntPropertyValue(II)I
 HSPLandroid/icu/lang/UCharacter;->getPropertyEnum(Ljava/lang/CharSequence;)I
 HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnum(ILjava/lang/CharSequence;)I
+HSPLandroid/icu/lang/UCharacter;->getPropertyValueEnumNoThrow(ILjava/lang/CharSequence;)I
+HSPLandroid/icu/lang/UCharacter;->getType(I)I
+HSPLandroid/icu/lang/UCharacter;->getUnicodeVersion()Landroid/icu/util/VersionInfo;
+HSPLandroid/icu/lang/UCharacter;->hasBinaryProperty(II)Z
+HSPLandroid/icu/lang/UCharacter;->isDigit(I)Z
 HSPLandroid/icu/lang/UCharacter;->isLowerCase(I)Z
-HSPLandroid/icu/lang/UScript$ScriptUsage;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/lang/UScript$ScriptUsage;->values()[Landroid/icu/lang/UScript$ScriptUsage;
-HSPLandroid/icu/lang/UScript;->getScript(I)I
-HSPLandroid/icu/math/BigDecimal;-><init>(I)V
-HSPLandroid/icu/math/BigDecimal;-><init>(J)V
-HSPLandroid/icu/math/BigDecimal;->diginit()[B
-HSPLandroid/icu/math/MathContext;-><init>(II)V
-HSPLandroid/icu/math/MathContext;-><init>(IIZI)V
+HSPLandroid/icu/lang/UScript$ScriptMetadata;-><clinit>()V
+HSPLandroid/icu/lang/UScript$ScriptMetadata;->access$000(I)I
+HSPLandroid/icu/lang/UScript$ScriptMetadata;->getScriptProps(I)I
+HSPLandroid/icu/lang/UScript;->getCodeFromName(Ljava/lang/String;)I
+HSPLandroid/icu/lang/UScript;->isRightToLeft(I)Z
+HSPLandroid/icu/number/FormattedNumber;-><init>(Landroid/icu/impl/FormattedStringBuilder;Landroid/icu/impl/number/DecimalQuantity;)V
 HSPLandroid/icu/number/FormattedNumber;->appendTo(Ljava/lang/Appendable;)Ljava/lang/Appendable;
 HSPLandroid/icu/number/FormattedNumber;->nextFieldPosition(Ljava/text/FieldPosition;)Z
+HSPLandroid/icu/number/FractionPrecision;-><init>()V
 HSPLandroid/icu/number/IntegerWidth;-><init>(II)V
 HSPLandroid/icu/number/IntegerWidth;->truncateAt(I)Landroid/icu/number/IntegerWidth;
 HSPLandroid/icu/number/IntegerWidth;->zeroFillTo(I)Landroid/icu/number/IntegerWidth;
+HSPLandroid/icu/number/LocalizedNumberFormatter;-><init>(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V
 HSPLandroid/icu/number/LocalizedNumberFormatter;->computeCompiled()Z
+HSPLandroid/icu/number/LocalizedNumberFormatter;->format(D)Landroid/icu/number/FormattedNumber;
+HSPLandroid/icu/number/LocalizedNumberFormatter;->format(J)Landroid/icu/number/FormattedNumber;
 HSPLandroid/icu/number/LocalizedNumberFormatter;->format(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/number/FormattedNumber;
-HSPLandroid/icu/number/NumberFormatter$DecimalSeparatorDisplay;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/number/NumberFormatter$SignDisplay;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/number/LocalizedNumberFormatter;->formatImpl(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;)V
+HSPLandroid/icu/number/LocalizedNumberFormatter;->getAffixImpl(ZZ)Ljava/lang/String;
+HSPLandroid/icu/number/NumberFormatter$UnitWidth;-><clinit>()V
 HSPLandroid/icu/number/NumberFormatter$UnitWidth;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;
+HSPLandroid/icu/number/NumberFormatter;->fromDecimalFormat(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter;
+HSPLandroid/icu/number/NumberFormatter;->with()Landroid/icu/number/UnlocalizedNumberFormatter;
+HSPLandroid/icu/number/NumberFormatterImpl;-><clinit>()V
+HSPLandroid/icu/number/NumberFormatterImpl;->format(Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;)I
+HSPLandroid/icu/number/NumberFormatterImpl;->formatStatic(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;)I
+HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffix(BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
+HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixImpl(Landroid/icu/impl/number/MicroPropsGenerator;BLandroid/icu/impl/FormattedStringBuilder;)I
+HSPLandroid/icu/number/NumberFormatterImpl;->getPrefixSuffixStatic(Landroid/icu/impl/number/MacroProps;BLandroid/icu/impl/StandardPlural;Landroid/icu/impl/FormattedStringBuilder;)I
+HSPLandroid/icu/number/NumberFormatterImpl;->macrosToMicroGenerator(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/MicroProps;Z)Landroid/icu/impl/number/MicroPropsGenerator;
+HSPLandroid/icu/number/NumberFormatterImpl;->preProcess(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
 HSPLandroid/icu/number/NumberFormatterImpl;->preProcessUnsafe(Landroid/icu/impl/number/MacroProps;Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
-HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/NumberStringBuilder;II)I
-HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/NumberStringBuilder;I)I
-HSPLandroid/icu/number/NumberFormatterImpl;->writeIntegerDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/NumberStringBuilder;I)I
-HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/number/NumberStringBuilder;I)I
+HSPLandroid/icu/number/NumberFormatterImpl;->unitIsCurrency(Landroid/icu/util/MeasureUnit;)Z
+HSPLandroid/icu/number/NumberFormatterImpl;->unitIsNoUnit(Landroid/icu/util/MeasureUnit;)Z
+HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPercent(Landroid/icu/util/MeasureUnit;)Z
+HSPLandroid/icu/number/NumberFormatterImpl;->unitIsPermille(Landroid/icu/util/MeasureUnit;)Z
+HSPLandroid/icu/number/NumberFormatterImpl;->writeAffixes(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/FormattedStringBuilder;II)I
+HSPLandroid/icu/number/NumberFormatterImpl;->writeFractionDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I
+HSPLandroid/icu/number/NumberFormatterImpl;->writeIntegerDigits(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I
+HSPLandroid/icu/number/NumberFormatterImpl;->writeNumber(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;Landroid/icu/impl/FormattedStringBuilder;I)I
+HSPLandroid/icu/number/NumberFormatterSettings;-><init>(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V
 HSPLandroid/icu/number/NumberFormatterSettings;->macros(Landroid/icu/impl/number/MacroProps;)Landroid/icu/number/NumberFormatterSettings;
 HSPLandroid/icu/number/NumberFormatterSettings;->resolve()Landroid/icu/impl/number/MacroProps;
+HSPLandroid/icu/number/NumberPropertyMapper;->create(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/number/UnlocalizedNumberFormatter;
 HSPLandroid/icu/number/NumberPropertyMapper;->oldToNew(Landroid/icu/impl/number/DecimalFormatProperties;Landroid/icu/text/DecimalFormatSymbols;Landroid/icu/impl/number/DecimalFormatProperties;)Landroid/icu/impl/number/MacroProps;
-HSPLandroid/icu/number/Precision$CurrencyRounderImpl;-><init>(Landroid/icu/util/Currency$CurrencyUsage;)V
-HSPLandroid/icu/number/Precision$FracSigRounderImpl;-><init>(IIII)V
 HSPLandroid/icu/number/Precision$FractionRounderImpl;-><init>(II)V
 HSPLandroid/icu/number/Precision$FractionRounderImpl;->apply(Landroid/icu/impl/number/DecimalQuantity;)V
-HSPLandroid/icu/number/Precision$IncrementRounderImpl;-><init>(Ljava/math/BigDecimal;)V
-HSPLandroid/icu/number/Precision$InfiniteRounderImpl;-><init>()V
-HSPLandroid/icu/number/Precision$PassThroughRounderImpl;-><init>()V
-HSPLandroid/icu/number/Precision$SignificantRounderImpl;-><init>(II)V
+HSPLandroid/icu/number/Precision;-><init>()V
+HSPLandroid/icu/number/Precision;->access$000(I)I
+HSPLandroid/icu/number/Precision;->access$100(I)I
 HSPLandroid/icu/number/Precision;->constructFraction(II)Landroid/icu/number/FractionPrecision;
+HSPLandroid/icu/number/Precision;->getDisplayMagnitudeFraction(I)I
+HSPLandroid/icu/number/Precision;->getRoundingMagnitudeFraction(I)I
 HSPLandroid/icu/number/Precision;->withLocaleData(Landroid/icu/util/Currency;)Landroid/icu/number/Precision;
 HSPLandroid/icu/number/Precision;->withMode(Ljava/math/MathContext;)Landroid/icu/number/Precision;
-HSPLandroid/icu/number/UnlocalizedNumberFormatter;-><init>()V
+HSPLandroid/icu/number/Scale;-><clinit>()V
+HSPLandroid/icu/number/Scale;-><init>(ILjava/math/BigDecimal;)V
+HSPLandroid/icu/number/Scale;-><init>(ILjava/math/BigDecimal;Ljava/math/MathContext;)V
+HSPLandroid/icu/number/Scale;->applyTo(Landroid/icu/impl/number/DecimalQuantity;)V
+HSPLandroid/icu/number/Scale;->powerOfTen(I)Landroid/icu/number/Scale;
+HSPLandroid/icu/number/Scale;->withMathContext(Ljava/math/MathContext;)Landroid/icu/number/Scale;
+HSPLandroid/icu/number/UnlocalizedNumberFormatter;-><init>(Landroid/icu/number/NumberFormatterSettings;ILjava/lang/Object;)V
 HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/NumberFormatterSettings;
 HSPLandroid/icu/number/UnlocalizedNumberFormatter;->create(ILjava/lang/Object;)Landroid/icu/number/UnlocalizedNumberFormatter;
 HSPLandroid/icu/number/UnlocalizedNumberFormatter;->locale(Landroid/icu/util/ULocale;)Landroid/icu/number/LocalizedNumberFormatter;
-HSPLandroid/icu/text/Bidi$ImpTabPair;-><init>([[B[[B[S[S)V
+HSPLandroid/icu/text/Bidi$InsertPoints;-><init>()V
 HSPLandroid/icu/text/Bidi;-><init>(II)V
 HSPLandroid/icu/text/Bidi;->DirPropFlag(B)I
+HSPLandroid/icu/text/Bidi;->DirPropFlagLR(B)I
 HSPLandroid/icu/text/Bidi;->GetParaLevelAt(I)B
+HSPLandroid/icu/text/Bidi;->IsDefaultLevel(B)Z
 HSPLandroid/icu/text/Bidi;->directionFromFlags()B
 HSPLandroid/icu/text/Bidi;->getCustomizedClass(I)I
 HSPLandroid/icu/text/Bidi;->getDirProps()V
 HSPLandroid/icu/text/Bidi;->getDirPropsMemory(I)V
+HSPLandroid/icu/text/Bidi;->getDirPropsMemory(ZI)V
+HSPLandroid/icu/text/Bidi;->getInitialDirPropsMemory(I)V
+HSPLandroid/icu/text/Bidi;->getInitialLevelsMemory(I)V
 HSPLandroid/icu/text/Bidi;->getLevelAt(I)B
 HSPLandroid/icu/text/Bidi;->getLevelsMemory(I)V
+HSPLandroid/icu/text/Bidi;->getLevelsMemory(ZI)V
 HSPLandroid/icu/text/Bidi;->getMemory(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;ZI)Ljava/lang/Object;
 HSPLandroid/icu/text/Bidi;->getParaLevel()B
 HSPLandroid/icu/text/Bidi;->resolveExplicitLevels()B
 HSPLandroid/icu/text/Bidi;->setPara([CB[B)V
+HSPLandroid/icu/text/Bidi;->setParaSuccess()V
 HSPLandroid/icu/text/Bidi;->verifyRange(III)V
 HSPLandroid/icu/text/Bidi;->verifyValidParaOrLine()V
+HSPLandroid/icu/text/BidiLine;->getLevelAt(Landroid/icu/text/Bidi;I)B
+HSPLandroid/icu/text/BidiRun;-><init>()V
+HSPLandroid/icu/text/BidiRun;-><init>(IIB)V
+HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;-><init>(Landroid/icu/util/ULocale;Landroid/icu/text/BreakIterator;)V
+HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->createBreakInstance()Landroid/icu/text/BreakIterator;
+HSPLandroid/icu/text/BreakIterator$BreakIteratorCache;->getLocale()Landroid/icu/util/ULocale;
+HSPLandroid/icu/text/BreakIterator$BreakIteratorServiceShim;-><init>()V
+HSPLandroid/icu/text/BreakIterator;-><init>()V
 HSPLandroid/icu/text/BreakIterator;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/BreakIterator;->getBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
+HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;
 HSPLandroid/icu/text/BreakIterator;->getShim()Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
 HSPLandroid/icu/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Landroid/icu/text/BreakIterator;
-HSPLandroid/icu/text/BreakIterator;->setText(Ljava/lang/String;)V
-HSPLandroid/icu/text/BreakIteratorFactory$BFService;-><init>()V
 HSPLandroid/icu/text/BreakIteratorFactory;-><init>()V
-HSPLandroid/icu/text/BreakIteratorFactory;->createBreakInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
 HSPLandroid/icu/text/BreakIteratorFactory;->createBreakIterator(Landroid/icu/util/ULocale;I)Landroid/icu/text/BreakIterator;
-HSPLandroid/icu/text/CaseMap$Title;-><init>(I)V
-HSPLandroid/icu/text/CaseMap$Upper;-><init>(I)V
+HSPLandroid/icu/text/CaseMap$Upper;->access$100()Landroid/icu/text/CaseMap$Upper;
 HSPLandroid/icu/text/CaseMap$Upper;->apply(Ljava/util/Locale;Ljava/lang/CharSequence;Ljava/lang/Appendable;Landroid/icu/text/Edits;)Ljava/lang/Appendable;
+HSPLandroid/icu/text/CaseMap;->access$500(Ljava/util/Locale;)I
+HSPLandroid/icu/text/CaseMap;->getCaseLocale(Ljava/util/Locale;)I
 HSPLandroid/icu/text/CaseMap;->toUpper()Landroid/icu/text/CaseMap$Upper;
+HSPLandroid/icu/text/Collator$ServiceShim;-><init>()V
+HSPLandroid/icu/text/Collator;-><init>()V
+HSPLandroid/icu/text/Collator;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/Collator;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
 HSPLandroid/icu/text/Collator;->getInstance(Ljava/util/Locale;)Landroid/icu/text/Collator;
 HSPLandroid/icu/text/Collator;->getShim()Landroid/icu/text/Collator$ServiceShim;
 HSPLandroid/icu/text/CollatorServiceShim$CService$1CollatorFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object;
-HSPLandroid/icu/text/CollatorServiceShim$CService;-><init>()V
 HSPLandroid/icu/text/CollatorServiceShim$CService;->validateFallbackLocale()Ljava/lang/String;
 HSPLandroid/icu/text/CollatorServiceShim;-><init>()V
+HSPLandroid/icu/text/CollatorServiceShim;->access$000(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
 HSPLandroid/icu/text/CollatorServiceShim;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
-HSPLandroid/icu/text/CurrencyMetaInfo$CurrencyDigits;-><init>(II)V
-HSPLandroid/icu/text/CurrencyMetaInfo$CurrencyFilter;-><init>(Ljava/lang/String;Ljava/lang/String;JJZ)V
-HSPLandroid/icu/text/DateFormat$BooleanAttribute;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/text/CollatorServiceShim;->makeInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/Collator;
+HSPLandroid/icu/text/ConstrainedFieldPosition$1;-><clinit>()V
+HSPLandroid/icu/text/ConstrainedFieldPosition$ConstraintType;-><clinit>()V
+HSPLandroid/icu/text/ConstrainedFieldPosition$ConstraintType;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/text/ConstrainedFieldPosition$ConstraintType;->values()[Landroid/icu/text/ConstrainedFieldPosition$ConstraintType;
+HSPLandroid/icu/text/ConstrainedFieldPosition;-><clinit>()V
+HSPLandroid/icu/text/ConstrainedFieldPosition;-><init>()V
+HSPLandroid/icu/text/ConstrainedFieldPosition;->constrainField(Ljava/text/Format$Field;)V
+HSPLandroid/icu/text/ConstrainedFieldPosition;->getLimit()I
+HSPLandroid/icu/text/ConstrainedFieldPosition;->getStart()I
+HSPLandroid/icu/text/ConstrainedFieldPosition;->matchesField(Ljava/text/Format$Field;Ljava/lang/Object;)Z
+HSPLandroid/icu/text/ConstrainedFieldPosition;->reset()V
+HSPLandroid/icu/text/ConstrainedFieldPosition;->setState(Ljava/text/Format$Field;Ljava/lang/Object;II)V
+HSPLandroid/icu/text/CurrencyDisplayNames;-><init>()V
+HSPLandroid/icu/text/CurrencyDisplayNames;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/CurrencyDisplayNames;
 HSPLandroid/icu/text/DateFormat$BooleanAttribute;->values()[Landroid/icu/text/DateFormat$BooleanAttribute;
-HSPLandroid/icu/text/DateFormat$Field;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DateFormat;-><init>()V
-HSPLandroid/icu/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
-HSPLandroid/icu/text/DateFormat;->format(Ljava/util/Date;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
 HSPLandroid/icu/text/DateFormat;->get(IILandroid/icu/util/ULocale;Landroid/icu/util/Calendar;)Landroid/icu/text/DateFormat;
 HSPLandroid/icu/text/DateFormat;->getCalendar()Landroid/icu/util/Calendar;
 HSPLandroid/icu/text/DateFormat;->getContext(Landroid/icu/text/DisplayContext$Type;)Landroid/icu/text/DisplayContext;
-HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;)Landroid/icu/text/DateFormat;
+HSPLandroid/icu/text/DateFormat;->getDateInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
+HSPLandroid/icu/text/DateFormat;->getTimeInstance(ILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
 HSPLandroid/icu/text/DateFormat;->setCalendar(Landroid/icu/util/Calendar;)V
 HSPLandroid/icu/text/DateFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V
-HSPLandroid/icu/text/DateFormatSymbols$1;-><init>()V
 HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/text/DateFormatSymbols$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormatSymbols;
-HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;-><init>()V
 HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->preEnumerate(Ljava/lang/String;)V
 HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->processAliasFromValue(Ljava/lang/String;Landroid/icu/impl/UResource$Value;)Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
 HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->processResource(Ljava/lang/String;Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
 HSPLandroid/icu/text/DateFormatSymbols$CalendarDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;->values()[Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
 HSPLandroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
+HSPLandroid/icu/text/DateFormatSymbols;-><init>(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;Landroid/icu/text/DateFormatSymbols$1;)V
 HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/text/DateFormatSymbols;)V
 HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Landroid/icu/impl/ICUResourceBundle;Ljava/lang/String;)V
 HSPLandroid/icu/text/DateFormatSymbols;->initializeData(Landroid/icu/util/ULocale;Ljava/lang/String;)V
 HSPLandroid/icu/text/DateFormatSymbols;->loadDayPeriodStrings(Ljava/util/Map;)[Ljava/lang/String;
 HSPLandroid/icu/text/DateFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateFormatSymbols;->setTimeSeparatorString(Ljava/lang/String;)V
+HSPLandroid/icu/text/DateIntervalFormat$BestMatchInfo;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DateIntervalFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/text/SimpleDateFormat;)V
 HSPLandroid/icu/text/DateIntervalFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
+HSPLandroid/icu/text/DateIntervalFormat;->formatImpl(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Landroid/icu/text/DateIntervalFormat$FormatOutput;Ljava/util/List;)Ljava/lang/StringBuffer;
 HSPLandroid/icu/text/DateIntervalFormat;->genIntervalPattern(ILjava/lang/String;Ljava/lang/String;ILjava/util/Map;)Landroid/icu/text/DateIntervalFormat$SkeletonAndItsBestMatch;
 HSPLandroid/icu/text/DateIntervalFormat;->genSeparateDateTimePtn(Ljava/lang/String;Ljava/lang/String;Ljava/util/Map;Landroid/icu/text/DateTimePatternGenerator;)Z
 HSPLandroid/icu/text/DateIntervalFormat;->getDateTimeSkeleton(Ljava/lang/String;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)V
+HSPLandroid/icu/text/DateIntervalFormat;->getInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateIntervalFormat;
 HSPLandroid/icu/text/DateIntervalFormat;->initializeIntervalPattern(Ljava/lang/String;Landroid/icu/util/ULocale;)Ljava/util/Map;
 HSPLandroid/icu/text/DateIntervalFormat;->initializePattern(Landroid/icu/impl/ICUCache;)V
+HSPLandroid/icu/text/DateIntervalFormat;->setTimeZone(Landroid/icu/util/TimeZone;)V
+HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;-><init>(Landroid/icu/text/DateIntervalInfo;)V
+HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->getAndResetNextCalendarType()Ljava/lang/String;
 HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->processSkeletonTable(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
 HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->setIntervalPatternIfAbsent(Ljava/lang/String;Ljava/lang/String;Landroid/icu/impl/UResource$Value;)V
 HSPLandroid/icu/text/DateIntervalInfo$DateIntervalSink;->validateAndProcessPatternLetter(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+HSPLandroid/icu/text/DateIntervalInfo$PatternInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLandroid/icu/text/DateIntervalInfo;-><init>(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateIntervalInfo;->access$000()Ljava/lang/String;
-HSPLandroid/icu/text/DateIntervalInfo;->access$100()Ljava/lang/String;
+HSPLandroid/icu/text/DateIntervalInfo;->access$200(Landroid/icu/text/DateIntervalInfo;)Ljava/util/Map;
+HSPLandroid/icu/text/DateIntervalInfo;->access$300(Landroid/icu/text/DateIntervalInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo;
 HSPLandroid/icu/text/DateIntervalInfo;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/DateIntervalInfo;->cloneUnfrozenDII()Ljava/lang/Object;
 HSPLandroid/icu/text/DateIntervalInfo;->freeze()Landroid/icu/text/DateIntervalInfo;
+HSPLandroid/icu/text/DateIntervalInfo;->genPatternInfo(Ljava/lang/String;Z)Landroid/icu/text/DateIntervalInfo$PatternInfo;
 HSPLandroid/icu/text/DateIntervalInfo;->getBestSkeleton(Ljava/lang/String;)Landroid/icu/text/DateIntervalFormat$BestMatchInfo;
-HSPLandroid/icu/text/DateIntervalInfo;->getDefaultOrder()Z
 HSPLandroid/icu/text/DateIntervalInfo;->getIntervalPattern(Ljava/lang/String;I)Landroid/icu/text/DateIntervalInfo$PatternInfo;
 HSPLandroid/icu/text/DateIntervalInfo;->initializeData(Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/text/DateIntervalInfo;->parseSkeleton(Ljava/lang/String;[I)V
 HSPLandroid/icu/text/DateIntervalInfo;->setFallbackIntervalPattern(Ljava/lang/String;)V
 HSPLandroid/icu/text/DateIntervalInfo;->setIntervalPatternInternally(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/icu/text/DateIntervalInfo$PatternInfo;
 HSPLandroid/icu/text/DateIntervalInfo;->setup(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateIntervalInfo;->splitPatternInto2Part(Ljava/lang/String;)I
+HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;-><init>(Landroid/icu/text/DateTimePatternGenerator;)V
+HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;-><init>(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$1;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;-><init>(Landroid/icu/text/DateTimePatternGenerator;)V
+HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;-><init>(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$1;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;-><init>(Landroid/icu/text/DateTimePatternGenerator;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-HSPLandroid/icu/text/DateTimePatternGenerator$DTPGflags;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/DateTimePatternGenerator$DTPGflags;->values()[Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
+HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>()V
+HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;-><init>(Landroid/icu/text/DateTimePatternGenerator$1;)V
+HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->access$1700(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
+HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->access$1800(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)[I
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)I
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->compareTo(Ljava/lang/Object;)I
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->equals(Ljava/lang/Object;)Z
@@ -8416,18 +7166,26 @@
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getDistance(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;)I
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->getFieldMask()I
 HSPLandroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;->set(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$FormatParser;Z)Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-HSPLandroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;-><init>(Ljava/util/HashMap;Landroid/icu/text/DateTimePatternGenerator$1;)V
-HSPLandroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-HSPLandroid/icu/text/DateTimePatternGenerator$DisplayWidth;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/icu/text/DateTimePatternGenerator$DisplayWidth;->values()[Landroid/icu/text/DateTimePatternGenerator$DisplayWidth;
+HSPLandroid/icu/text/DateTimePatternGenerator$DisplayWidth;->access$100()I
+HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;-><init>()V
+HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;-><init>(Landroid/icu/text/DateTimePatternGenerator$1;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addExtra(I)V
 HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->addMissing(I)V
 HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->clear()V
 HSPLandroid/icu/text/DateTimePatternGenerator$DistanceInfo;->setTo(Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;-><init>()V
+HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->access$1000(Landroid/icu/text/DateTimePatternGenerator$FormatParser;)Ljava/util/List;
+HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->addVariable(Ljava/lang/StringBuffer;Z)V
 HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->getItems()Ljava/util/List;
 HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->quoteLiteral(Ljava/lang/String;)Ljava/lang/Object;
+HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
 HSPLandroid/icu/text/DateTimePatternGenerator$FormatParser;->set(Ljava/lang/String;Z)Landroid/icu/text/DateTimePatternGenerator$FormatParser;
+HSPLandroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;-><init>(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)V
+HSPLandroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;-><init>(Ljava/lang/String;Z)V
+HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>()V
+HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;-><init>(Landroid/icu/text/DateTimePatternGenerator$1;)V
+HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendFieldTo(ILjava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
+HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->appendTo(Ljava/lang/StringBuilder;ZZ)Ljava/lang/StringBuilder;
 HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->clear()V
 HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->compareTo(Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;)I
 HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->getFieldChar(I)C
@@ -8437,45 +7195,84 @@
 HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->populate(ILjava/lang/String;)V
 HSPLandroid/icu/text/DateTimePatternGenerator$SkeletonFields;->toString(Z)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;-><init>(Ljava/lang/String;Z)V
+HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->access$2100(Landroid/icu/text/DateTimePatternGenerator$VariableField;)I
+HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->getCanonicalIndex()I
 HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->getType()I
 HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->isNumeric()Z
 HSPLandroid/icu/text/DateTimePatternGenerator$VariableField;->toString()Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;-><init>()V
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$000(Landroid/icu/impl/UResource$Key;)I
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$1400(Ljava/lang/String;Z)I
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$1500()[[I
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$200()[Landroid/icu/text/DateTimePatternGenerator$DisplayWidth;
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$300(Landroid/icu/text/DateTimePatternGenerator;ILandroid/icu/text/DateTimePatternGenerator$DisplayWidth;Ljava/lang/String;)V
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$400(Landroid/icu/text/DateTimePatternGenerator;Ljava/lang/String;)Z
+HSPLandroid/icu/text/DateTimePatternGenerator;->access$500(Landroid/icu/text/DateTimePatternGenerator;Ljava/lang/String;)V
 HSPLandroid/icu/text/DateTimePatternGenerator;->addCLDRData(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateTimePatternGenerator;->addICUPatterns(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DateTimePatternGenerator;->addPattern(Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator;
 HSPLandroid/icu/text/DateTimePatternGenerator;->addPatternWithSkeleton(Ljava/lang/String;Ljava/lang/String;ZLandroid/icu/text/DateTimePatternGenerator$PatternInfo;)Landroid/icu/text/DateTimePatternGenerator;
 HSPLandroid/icu/text/DateTimePatternGenerator;->adjustFieldTypes(Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
+HSPLandroid/icu/text/DateTimePatternGenerator;->checkFrozen()V
 HSPLandroid/icu/text/DateTimePatternGenerator;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/DateTimePatternGenerator;->cloneAsThawed()Landroid/icu/text/DateTimePatternGenerator;
 HSPLandroid/icu/text/DateTimePatternGenerator;->consumeShortTimePattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$PatternInfo;)V
 HSPLandroid/icu/text/DateTimePatternGenerator;->fillInMissing()V
 HSPLandroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormats(Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/text/DateTimePatternGenerator;->getAllowedHourFormatsLangCountry(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+HSPLandroid/icu/text/DateTimePatternGenerator;->getAppendFormatNumber(Landroid/icu/impl/UResource$Key;)I
 HSPLandroid/icu/text/DateTimePatternGenerator;->getAppendItemFormat(I)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getBestAppending(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;Ljava/util/EnumSet;I)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getBestPattern(Ljava/lang/String;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;I)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getBestRaw(Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;ILandroid/icu/text/DateTimePatternGenerator$DistanceInfo;Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;)Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;
-HSPLandroid/icu/text/DateTimePatternGenerator;->getCLDRFieldAndWidthNumber(Landroid/icu/impl/UResource$Key;)I
-HSPLandroid/icu/text/DateTimePatternGenerator;->getCanonicalIndex(Ljava/lang/String;Z)I
+HSPLandroid/icu/text/DateTimePatternGenerator;->getCalendarTypeToUse(Landroid/icu/util/ULocale;)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getDateTimeFormat()Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->getFieldDisplayName(ILandroid/icu/text/DateTimePatternGenerator$DisplayWidth;)Ljava/lang/String;
-HSPLandroid/icu/text/DateTimePatternGenerator;->getFilteredPattern(Landroid/icu/text/DateTimePatternGenerator$FormatParser;Ljava/util/BitSet;)Ljava/lang/String;
-HSPLandroid/icu/text/DateTimePatternGenerator;->getFrozenInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator;
 HSPLandroid/icu/text/DateTimePatternGenerator;->hackTimes(Landroid/icu/text/DateTimePatternGenerator$PatternInfo;Ljava/lang/String;)V
+HSPLandroid/icu/text/DateTimePatternGenerator;->isAvailableFormatSet(Ljava/lang/String;)Z
 HSPLandroid/icu/text/DateTimePatternGenerator;->isFrozen()Z
 HSPLandroid/icu/text/DateTimePatternGenerator;->mapSkeletonMetacharacters(Ljava/lang/String;Ljava/util/EnumSet;)Ljava/lang/String;
 HSPLandroid/icu/text/DateTimePatternGenerator;->setAppendItemFormat(ILjava/lang/String;)V
-HSPLandroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;I)V
+HSPLandroid/icu/text/DateTimePatternGenerator;->setAvailableFormat(Ljava/lang/String;)V
+HSPLandroid/icu/text/DateTimePatternGenerator;->setFieldDisplayName(ILandroid/icu/text/DateTimePatternGenerator$DisplayWidth;Ljava/lang/String;)V
+HSPLandroid/icu/text/DecimalFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
 HSPLandroid/icu/text/DecimalFormat;->clone()Ljava/lang/Object;
+HSPLandroid/icu/text/DecimalFormat;->fieldPositionHelper(Landroid/icu/number/FormattedNumber;Ljava/text/FieldPosition;I)V
 HSPLandroid/icu/text/DecimalFormat;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
+HSPLandroid/icu/text/DecimalFormat;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
+HSPLandroid/icu/text/DecimalFormat;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
+HSPLandroid/icu/text/DecimalFormat;->getMaximumFractionDigits()I
+HSPLandroid/icu/text/DecimalFormat;->getMaximumIntegerDigits()I
+HSPLandroid/icu/text/DecimalFormat;->getMinimumFractionDigits()I
+HSPLandroid/icu/text/DecimalFormat;->getMinimumIntegerDigits()I
+HSPLandroid/icu/text/DecimalFormat;->getNegativePrefix()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->getNegativeSuffix()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->getParser()Landroid/icu/impl/number/parse/NumberParserImpl;
+HSPLandroid/icu/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormat;->isParseBigDecimal()Z
+HSPLandroid/icu/text/DecimalFormat;->isParseIntegerOnly()Z
+HSPLandroid/icu/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;
 HSPLandroid/icu/text/DecimalFormat;->refreshFormatter()V
+HSPLandroid/icu/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V
+HSPLandroid/icu/text/DecimalFormat;->setGroupingUsed(Z)V
+HSPLandroid/icu/text/DecimalFormat;->setMaximumFractionDigits(I)V
+HSPLandroid/icu/text/DecimalFormat;->setMaximumIntegerDigits(I)V
+HSPLandroid/icu/text/DecimalFormat;->setMinimumIntegerDigits(I)V
+HSPLandroid/icu/text/DecimalFormat;->setParseIntegerOnly(Z)V
+HSPLandroid/icu/text/DecimalFormat;->setParseStrictMode(Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;)V
 HSPLandroid/icu/text/DecimalFormat;->setPropertiesFromPattern(Ljava/lang/String;I)V
-HSPLandroid/icu/text/DecimalFormatSymbols$1;-><init>()V
+HSPLandroid/icu/text/DecimalFormat;->toPattern()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Landroid/icu/util/ULocale;Ljava/lang/Void;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
 HSPLandroid/icu/text/DecimalFormatSymbols$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/icu/text/DecimalFormatSymbols$CacheData;-><init>(Landroid/icu/util/ULocale;[Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;-><init>([Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/text/DecimalFormatSymbols;-><init>(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;)V
+HSPLandroid/icu/text/DecimalFormatSymbols;->access$000()[Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormatSymbols;->access$100(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
 HSPLandroid/icu/text/DecimalFormatSymbols;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getCodePointZero()I
 HSPLandroid/icu/text/DecimalFormatSymbols;->getCurrency()Landroid/icu/util/Currency;
@@ -8483,14 +7280,13 @@
 HSPLandroid/icu/text/DecimalFormatSymbols;->getDecimalSeparator()C
 HSPLandroid/icu/text/DecimalFormatSymbols;->getDecimalSeparatorString()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getDigit()C
-HSPLandroid/icu/text/DecimalFormatSymbols;->getDigitStrings()[Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormatSymbols;->getDigitStringsLocal()[Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getExponentSeparator()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getGroupingSeparator()C
 HSPLandroid/icu/text/DecimalFormatSymbols;->getGroupingSeparatorString()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getInfinity()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getInternationalCurrencySymbol()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getLocale()Ljava/util/Locale;
+HSPLandroid/icu/text/DecimalFormatSymbols;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getMinusSign()C
 HSPLandroid/icu/text/DecimalFormatSymbols;->getMinusSignString()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getMonetaryDecimalSeparator()C
@@ -8499,8 +7295,10 @@
 HSPLandroid/icu/text/DecimalFormatSymbols;->getPerMill()C
 HSPLandroid/icu/text/DecimalFormatSymbols;->getPercent()C
 HSPLandroid/icu/text/DecimalFormatSymbols;->getPercentString()Ljava/lang/String;
+HSPLandroid/icu/text/DecimalFormatSymbols;->getPlusSignString()Ljava/lang/String;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getULocale()Landroid/icu/util/ULocale;
 HSPLandroid/icu/text/DecimalFormatSymbols;->getZeroDigit()C
+HSPLandroid/icu/text/DecimalFormatSymbols;->initSpacingInfo(Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->initialize(Landroid/icu/util/ULocale;Landroid/icu/text/NumberingSystem;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->loadData(Landroid/icu/util/ULocale;)Landroid/icu/text/DecimalFormatSymbols$CacheData;
 HSPLandroid/icu/text/DecimalFormatSymbols;->setCurrency(Landroid/icu/util/Currency;)V
@@ -8515,6 +7313,7 @@
 HSPLandroid/icu/text/DecimalFormatSymbols;->setGroupingSeparatorString(Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setInfinity(Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V
+HSPLandroid/icu/text/DecimalFormatSymbols;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setMinusSign(C)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setMinusSignString(Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryDecimalSeparator(C)V
@@ -8522,6 +7321,7 @@
 HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryGroupingSeparator(C)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setMonetaryGroupingSeparatorString(Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setNaN(Ljava/lang/String;)V
+HSPLandroid/icu/text/DecimalFormatSymbols;->setPatternForCurrencySpacing(IZLjava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setPatternSeparator(C)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setPerMill(C)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setPerMillString(Ljava/lang/String;)V
@@ -8530,257 +7330,194 @@
 HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSign(C)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setPlusSignString(Ljava/lang/String;)V
 HSPLandroid/icu/text/DecimalFormatSymbols;->setZeroDigit(C)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android$Unit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;-><init>(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->_setMaximumFractionDigits(I)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->addPadding(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;II)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->appendAffix(Ljava/lang/StringBuffer;ZZLjava/text/FieldPosition;Z)I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->appendAffixPattern(Ljava/lang/StringBuffer;ZZZ)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->applyPatternWithoutExpandAffix(Ljava/lang/String;Z)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->areSignificantDigitsUsed()Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->clone()Ljava/lang/Object;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->compareAffix(Ljava/lang/String;IZZLjava/lang/String;ZI[Landroid/icu/util/Currency;)I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->compareSimpleAffix(Ljava/lang/String;Ljava/lang/String;I)I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->createFromPatternAndSymbols(Ljava/lang/String;Landroid/icu/text/DecimalFormatSymbols;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->equalWithSignCompatibility(II)Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->expandAffix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/StringBuffer;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->expandAffixes(Ljava/lang/String;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->format(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->format(JLjava/lang/StringBuffer;Ljava/text/FieldPosition;Z)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getEquivalentDecimals(Ljava/lang/String;Z)Landroid/icu/text/UnicodeSet;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getMaximumSignificantDigits()I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getMinimumSignificantDigits()I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getNegativePrefix()Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getNegativeSuffix()Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getParseMaxDigits()I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getPositivePrefix()Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->getPositiveSuffix()Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->isDecimalPatternMatchRequired()Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->isGroupingPosition(I)Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->isParseBigDecimal()Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->matchesDigit(Ljava/lang/String;I[I)I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->parse(Ljava/lang/String;Ljava/text/ParsePosition;[Landroid/icu/util/Currency;)Ljava/lang/Object;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->precision(Z)I
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->resetActualRounding()V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setDecimalSeparatorAlwaysShown(Z)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setMaximumFractionDigits(I)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setMaximumIntegerDigits(I)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumFractionDigits(I)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setMinimumIntegerDigits(I)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingDouble(D)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setRoundingIncrement(Landroid/icu/math/BigDecimal;)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->setSignificantDigitsUsed(Z)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->subformat(DLjava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->subformat(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZZ)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->subformatFixed(Ljava/lang/StringBuffer;Ljava/text/FieldPosition;ZZ)V
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->subparse(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/DigitList_Android;[Z[Landroid/icu/util/Currency;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->toPattern()Ljava/lang/String;
-HSPLandroid/icu/text/DecimalFormat_ICU58_Android;->toPattern(Z)Ljava/lang/String;
+HSPLandroid/icu/text/DictionaryBreakEngine$DequeI;-><init>()V
 HSPLandroid/icu/text/DictionaryBreakEngine$DequeI;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/DictionaryBreakEngine$DequeI;->removeAllElements()V
-HSPLandroid/icu/text/DigitList_Android;->append(I)V
-HSPLandroid/icu/text/DigitList_Android;->getDigitValue(I)B
-HSPLandroid/icu/text/DigitList_Android;->round(I)V
-HSPLandroid/icu/text/DigitList_Android;->set(DIZ)V
-HSPLandroid/icu/text/DigitList_Android;->set(JI)V
-HSPLandroid/icu/text/DigitList_Android;->set(Ljava/lang/String;I)V
-HSPLandroid/icu/text/DigitList_Android;->shouldRoundUp(I)Z
-HSPLandroid/icu/text/DisplayContext$Type;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/text/DisplayContext;-><init>(Ljava/lang/String;ILandroid/icu/text/DisplayContext$Type;I)V
+HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type;
 HSPLandroid/icu/text/Edits;-><init>()V
 HSPLandroid/icu/text/Edits;->addReplace(II)V
 HSPLandroid/icu/text/Edits;->addUnchanged(I)V
+HSPLandroid/icu/text/Edits;->append(I)V
+HSPLandroid/icu/text/Edits;->hasChanges()Z
+HSPLandroid/icu/text/Edits;->lastUnit()I
+HSPLandroid/icu/text/Edits;->setLastUnit(I)V
 HSPLandroid/icu/text/IDNA;->convertIDNToASCII(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/IDNA;->convertIDNToUnicode(Ljava/lang/String;I)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/ListFormatter$Cache;-><init>(Landroid/icu/text/ListFormatter$1;)V
-HSPLandroid/icu/text/ListFormatter$Cache;->get(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-HSPLandroid/icu/text/ListFormatter$Cache;->load(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/text/ListFormatter;
-HSPLandroid/icu/text/ListFormatter$FormattedListBuilder;->append(Ljava/lang/String;Ljava/lang/Object;Z)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-HSPLandroid/icu/text/ListFormatter$Style;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/icu/text/ListFormatter;->format(Ljava/util/Collection;I)Landroid/icu/text/ListFormatter$FormattedListBuilder;
-HSPLandroid/icu/text/Normalizer$FCDMode;-><init>(Landroid/icu/text/Normalizer$1;)V
+HSPLandroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;)V
 HSPLandroid/icu/text/Normalizer$ModeImpl;-><init>(Landroid/icu/text/Normalizer2;Landroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer$NFCMode;-><init>(Landroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer$NFDMode;-><init>(Landroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer$NFDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-HSPLandroid/icu/text/Normalizer$NFKCMode;-><init>(Landroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer$NFKDMode;-><init>(Landroid/icu/text/Normalizer$1;)V
+HSPLandroid/icu/text/Normalizer$ModeImpl;->access$300(Landroid/icu/text/Normalizer$ModeImpl;)Landroid/icu/text/Normalizer2;
 HSPLandroid/icu/text/Normalizer$NFKDMode;->getNormalizer2(I)Landroid/icu/text/Normalizer2;
-HSPLandroid/icu/text/Normalizer$NONEMode;-><init>(Landroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer$QuickCheckResult;-><init>(ILandroid/icu/text/Normalizer$1;)V
-HSPLandroid/icu/text/Normalizer2;->getNFDInstance()Landroid/icu/text/Normalizer2;
+HSPLandroid/icu/text/Normalizer$NFKDModeImpl;-><clinit>()V
+HSPLandroid/icu/text/Normalizer$NFKDModeImpl;->access$600()Landroid/icu/text/Normalizer$ModeImpl;
+HSPLandroid/icu/text/Normalizer2;-><init>()V
 HSPLandroid/icu/text/Normalizer2;->getNFKDInstance()Landroid/icu/text/Normalizer2;
 HSPLandroid/icu/text/Normalizer2;->normalize(Ljava/lang/CharSequence;)Ljava/lang/String;
 HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;)Ljava/lang/String;
+HSPLandroid/icu/text/Normalizer;->normalize(Ljava/lang/String;Landroid/icu/text/Normalizer$Mode;I)Ljava/lang/String;
+HSPLandroid/icu/text/NumberFormat$Field;-><clinit>()V
 HSPLandroid/icu/text/NumberFormat$Field;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/text/NumberFormat;-><init>()V
-HSPLandroid/icu/text/NumberFormat;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-HSPLandroid/icu/text/NumberFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/NumberFormat;->getMaximumFractionDigits()I
-HSPLandroid/icu/text/NumberFormat;->getMaximumIntegerDigits()I
-HSPLandroid/icu/text/NumberFormat;->getMinimumFractionDigits()I
-HSPLandroid/icu/text/NumberFormat;->getMinimumIntegerDigits()I
+HSPLandroid/icu/text/NumberFormat;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/NumberFormat;->getPatternForStyleAndNumberingSystem(Landroid/icu/util/ULocale;Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/icu/text/NumberFormat;->getShim()Landroid/icu/text/NumberFormat$NumberFormatShim;
-HSPLandroid/icu/text/NumberFormat;->isGroupingUsed()Z
-HSPLandroid/icu/text/NumberFormat;->isParseIntegerOnly()Z
-HSPLandroid/icu/text/NumberFormat;->isParseStrict()Z
-HSPLandroid/icu/text/NumberFormat;->setGroupingUsed(Z)V
-HSPLandroid/icu/text/NumberFormat;->setParseIntegerOnly(Z)V
-HSPLandroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;->handleCreate(Landroid/icu/util/ULocale;ILandroid/icu/impl/ICUService;)Ljava/lang/Object;
-HSPLandroid/icu/text/NumberFormatServiceShim$NFService;-><init>()V
-HSPLandroid/icu/text/NumberFormatServiceShim;-><init>()V
-HSPLandroid/icu/text/NumberFormatServiceShim;->createInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-HSPLandroid/icu/text/NumberingSystem$1;-><init>()V
 HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/text/NumberingSystem$1;->createInstance(Ljava/lang/String;Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem;
-HSPLandroid/icu/text/NumberingSystem$2;-><init>()V
-HSPLandroid/icu/text/NumberingSystem$2;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/icu/text/NumberingSystem$2;->createInstance(Ljava/lang/String;Ljava/lang/Void;)Landroid/icu/text/NumberingSystem;
+HSPLandroid/icu/text/NumberingSystem$LocaleLookupData;-><init>(Landroid/icu/util/ULocale;Ljava/lang/String;)V
 HSPLandroid/icu/text/NumberingSystem;->getDescription()Ljava/lang/String;
 HSPLandroid/icu/text/NumberingSystem;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberingSystem;
-HSPLandroid/icu/text/NumberingSystem;->getInstance(Ljava/lang/String;IZLjava/lang/String;)Landroid/icu/text/NumberingSystem;
+HSPLandroid/icu/text/NumberingSystem;->getInstance(Ljava/util/Locale;)Landroid/icu/text/NumberingSystem;
+HSPLandroid/icu/text/NumberingSystem;->getInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem;
 HSPLandroid/icu/text/NumberingSystem;->getName()Ljava/lang/String;
 HSPLandroid/icu/text/NumberingSystem;->getRadix()I
 HSPLandroid/icu/text/NumberingSystem;->isAlgorithmic()Z
+HSPLandroid/icu/text/NumberingSystem;->isValidDigitString(Ljava/lang/String;)Z
 HSPLandroid/icu/text/NumberingSystem;->lookupInstanceByLocale(Landroid/icu/text/NumberingSystem$LocaleLookupData;)Landroid/icu/text/NumberingSystem;
-HSPLandroid/icu/text/NumberingSystem;->lookupInstanceByName(Ljava/lang/String;)Landroid/icu/text/NumberingSystem;
-HSPLandroid/icu/text/PluralRanges$Matrix;->setIfNew(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-HSPLandroid/icu/text/PluralRanges;-><init>()V
-HSPLandroid/icu/text/PluralRanges;->add(Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;Landroid/icu/impl/StandardPlural;)V
-HSPLandroid/icu/text/PluralRanges;->freeze()Landroid/icu/text/PluralRanges;
-HSPLandroid/icu/text/PluralRules$1;-><init>()V
 HSPLandroid/icu/text/PluralRules$1;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
 HSPLandroid/icu/text/PluralRules$AndConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
 HSPLandroid/icu/text/PluralRules$AndConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
+HSPLandroid/icu/text/PluralRules$BinaryConstraint;-><init>(Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$Constraint;)V
+HSPLandroid/icu/text/PluralRules$FixedDecimal;-><init>(D)V
+HSPLandroid/icu/text/PluralRules$FixedDecimal;-><init>(DI)V
 HSPLandroid/icu/text/PluralRules$FixedDecimal;-><init>(DIJ)V
+HSPLandroid/icu/text/PluralRules$FixedDecimal;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->decimals(D)I
+HSPLandroid/icu/text/PluralRules$FixedDecimal;->getFractionalDigits(DI)I
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->getOperand(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->getPluralOperand(Landroid/icu/text/PluralRules$Operand;)D
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->getVisibleDecimalDigitCount()I
+HSPLandroid/icu/text/PluralRules$FixedDecimal;->getVisibleFractionCount(Ljava/lang/String;)I
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->isInfinite()Z
 HSPLandroid/icu/text/PluralRules$FixedDecimal;->isNaN()Z
 HSPLandroid/icu/text/PluralRules$FixedDecimalRange;-><init>(Landroid/icu/text/PluralRules$FixedDecimal;Landroid/icu/text/PluralRules$FixedDecimal;)V
+HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;-><init>(Landroid/icu/text/PluralRules$SampleType;Ljava/util/Set;Z)V
 HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;->checkDecimal(Landroid/icu/text/PluralRules$SampleType;Landroid/icu/text/PluralRules$FixedDecimal;)V
 HSPLandroid/icu/text/PluralRules$FixedDecimalSamples;->parse(Ljava/lang/String;)Landroid/icu/text/PluralRules$FixedDecimalSamples;
-HSPLandroid/icu/text/PluralRules$Operand;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/text/PluralRules$Operand;->valueOf(Ljava/lang/String;)Landroid/icu/text/PluralRules$Operand;
 HSPLandroid/icu/text/PluralRules$Operand;->values()[Landroid/icu/text/PluralRules$Operand;
-HSPLandroid/icu/text/PluralRules$PluralType;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/PluralRules$RangeConstraint;-><init>(IZLandroid/icu/text/PluralRules$Operand;ZDD[J)V
 HSPLandroid/icu/text/PluralRules$RangeConstraint;->isFulfilled(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
-HSPLandroid/icu/text/PluralRules$Rule;-><init>(Ljava/lang/String;Landroid/icu/text/PluralRules$Constraint;Landroid/icu/text/PluralRules$FixedDecimalSamples;Landroid/icu/text/PluralRules$FixedDecimalSamples;)V
 HSPLandroid/icu/text/PluralRules$Rule;->appliesTo(Landroid/icu/text/PluralRules$IFixedDecimal;)Z
 HSPLandroid/icu/text/PluralRules$Rule;->getKeyword()Ljava/lang/String;
-HSPLandroid/icu/text/PluralRules$RuleList;-><init>(Landroid/icu/text/PluralRules$1;)V
 HSPLandroid/icu/text/PluralRules$RuleList;->addRule(Landroid/icu/text/PluralRules$Rule;)Landroid/icu/text/PluralRules$RuleList;
 HSPLandroid/icu/text/PluralRules$RuleList;->finish()Landroid/icu/text/PluralRules$RuleList;
 HSPLandroid/icu/text/PluralRules$RuleList;->getKeywords()Ljava/util/Set;
 HSPLandroid/icu/text/PluralRules$RuleList;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-HSPLandroid/icu/text/PluralRules$SampleType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/text/PluralRules$SampleType;->values()[Landroid/icu/text/PluralRules$SampleType;
+HSPLandroid/icu/text/PluralRules$RuleList;->selectRule(Landroid/icu/text/PluralRules$IFixedDecimal;)Landroid/icu/text/PluralRules$Rule;
 HSPLandroid/icu/text/PluralRules$SimpleTokenizer;->split(Ljava/lang/String;)[Ljava/lang/String;
 HSPLandroid/icu/text/PluralRules;-><init>(Landroid/icu/text/PluralRules$RuleList;)V
-HSPLandroid/icu/text/PluralRules;->forLocale(Ljava/util/Locale;)Landroid/icu/text/PluralRules;
-HSPLandroid/icu/text/PluralRules;->nextToken([Ljava/lang/String;ILjava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/text/PluralRules;->parseConstraint(Ljava/lang/String;)Landroid/icu/text/PluralRules$Constraint;
-HSPLandroid/icu/text/PluralRules;->parseRule(Ljava/lang/String;)Landroid/icu/text/PluralRules$Rule;
-HSPLandroid/icu/text/PluralRules;->parseRuleChain(Ljava/lang/String;)Landroid/icu/text/PluralRules$RuleList;
+HSPLandroid/icu/text/PluralRules;->parseDescription(Ljava/lang/String;)Landroid/icu/text/PluralRules;
 HSPLandroid/icu/text/PluralRules;->select(D)Ljava/lang/String;
-HSPLandroid/icu/text/PluralRules;->select(Landroid/icu/text/PluralRules$IFixedDecimal;)Ljava/lang/String;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache$1;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache;-><init>(Landroid/icu/text/RelativeDateTimeFormatter$1;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Cache;->get(Landroid/icu/util/ULocale;)Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->getDateTimePattern(Landroid/icu/impl/ICUResourceBundle;)Ljava/lang/String;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$Loader;->load()Landroid/icu/text/RelativeDateTimeFormatter$RelativeDateTimeFormatterData;
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelative(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTableRelativeTime(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeDetail(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->consumeTimeUnit(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handleAlias(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->handlePlainDirection(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;)V
-HSPLandroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;->put(Landroid/icu/impl/UResource$Key;Landroid/icu/impl/UResource$Value;Z)V
+HSPLandroid/icu/text/ReplaceableString;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/text/ReplaceableString;->charAt(I)C
 HSPLandroid/icu/text/ReplaceableString;->getChars(II[CI)V
 HSPLandroid/icu/text/ReplaceableString;->length()I
+HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator;)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$BreakCache;)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->addFollowing(IIZ)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->current()I
-HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->following(I)V
+HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->modChunkSize(I)I
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->next()V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->populateFollowing()Z
-HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->preceding(I)V
-HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->previous()V
+HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset()V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->reset(II)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$BreakCache;->seek(I)Z
+HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator;)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;-><init>(Landroid/icu/text/RuleBasedBreakIterator;Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;)V
 HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->following(I)Z
 HSPLandroid/icu/text/RuleBasedBreakIterator$DictionaryCache;->reset()V
+HSPLandroid/icu/text/RuleBasedBreakIterator$LookAheadResults;-><init>()V
 HSPLandroid/icu/text/RuleBasedBreakIterator$LookAheadResults;->reset()V
 HSPLandroid/icu/text/RuleBasedBreakIterator;-><init>()V
-HSPLandroid/icu/text/RuleBasedBreakIterator;->CISetIndex32(Ljava/text/CharacterIterator;I)I
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$202(Landroid/icu/text/RuleBasedBreakIterator;Z)Z
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$302(Landroid/icu/text/RuleBasedBreakIterator;I)I
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$400(Landroid/icu/text/RuleBasedBreakIterator;)I
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$402(Landroid/icu/text/RuleBasedBreakIterator;I)I
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$600(Landroid/icu/text/RuleBasedBreakIterator;)I
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$700(Landroid/icu/text/RuleBasedBreakIterator;)Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;
+HSPLandroid/icu/text/RuleBasedBreakIterator;->access$800(Landroid/icu/text/RuleBasedBreakIterator;)I
 HSPLandroid/icu/text/RuleBasedBreakIterator;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/RuleBasedBreakIterator;->first()I
-HSPLandroid/icu/text/RuleBasedBreakIterator;->following(I)I
 HSPLandroid/icu/text/RuleBasedBreakIterator;->handleNext()I
-HSPLandroid/icu/text/RuleBasedBreakIterator;->next()I
-HSPLandroid/icu/text/RuleBasedBreakIterator;->preceding(I)I
 HSPLandroid/icu/text/RuleBasedBreakIterator;->setText(Ljava/text/CharacterIterator;)V
+HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V
+HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;Landroid/icu/text/RuleBasedCollator$1;)V
+HSPLandroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V
+HSPLandroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V
+HSPLandroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V
+HSPLandroid/icu/text/RuleBasedCollator;-><init>(Landroid/icu/impl/coll/CollationTailoring;Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/text/RuleBasedCollator;->checkNotFrozen()V
 HSPLandroid/icu/text/RuleBasedCollator;->clone()Ljava/lang/Object;
 HSPLandroid/icu/text/RuleBasedCollator;->cloneAsThawed()Landroid/icu/text/RuleBasedCollator;
 HSPLandroid/icu/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/icu/text/RuleBasedCollator;->doCompare(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
+HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer;
+HSPLandroid/icu/text/RuleBasedCollator;->getOwnedSettings()Landroid/icu/impl/coll/CollationSettings;
+HSPLandroid/icu/text/RuleBasedCollator;->getStrength()I
+HSPLandroid/icu/text/RuleBasedCollator;->isFrozen()Z
+HSPLandroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
+HSPLandroid/icu/text/RuleBasedCollator;->setFastLatinOptions(Landroid/icu/impl/coll/CollationSettings;)V
 HSPLandroid/icu/text/RuleBasedCollator;->setStrength(I)V
+HSPLandroid/icu/text/SimpleDateFormat$PatternItem;-><init>(CI)V
+HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
+HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/text/SimpleDateFormat;->access$000(CI)Z
 HSPLandroid/icu/text/SimpleDateFormat;->fastZeroPaddingNumber(Ljava/lang/StringBuffer;III)V
 HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Landroid/icu/text/DisplayContext;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/SimpleDateFormat;->getIndexFromChar(C)I
-HSPLandroid/icu/text/SimpleDateFormat;->getInstance(Landroid/icu/util/Calendar$FormatConfiguration;)Landroid/icu/text/SimpleDateFormat;
+HSPLandroid/icu/text/SimpleDateFormat;->format(Landroid/icu/util/Calendar;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
 HSPLandroid/icu/text/SimpleDateFormat;->getLocale()Landroid/icu/util/ULocale;
 HSPLandroid/icu/text/SimpleDateFormat;->getNumberFormat(C)Landroid/icu/text/NumberFormat;
 HSPLandroid/icu/text/SimpleDateFormat;->getPatternItems()[Ljava/lang/Object;
 HSPLandroid/icu/text/SimpleDateFormat;->initLocalZeroPaddingNumberFormat()V
 HSPLandroid/icu/text/SimpleDateFormat;->initialize()V
-HSPLandroid/icu/text/SimpleDateFormat;->isFieldUnitIgnored(Ljava/lang/String;I)Z
+HSPLandroid/icu/text/SimpleDateFormat;->isNumeric(CI)Z
+HSPLandroid/icu/text/SimpleDateFormat;->isSyntaxChar(C)Z
 HSPLandroid/icu/text/SimpleDateFormat;->parsePattern()V
-HSPLandroid/icu/text/SimpleDateFormat;->safeAppend([Ljava/lang/String;ILjava/lang/StringBuffer;)V
-HSPLandroid/icu/text/SimpleDateFormat;->safeAppendWithMonthPattern([Ljava/lang/String;ILjava/lang/StringBuffer;Ljava/lang/String;)V
-HSPLandroid/icu/text/SimpleDateFormat;->setContext(Landroid/icu/text/DisplayContext;)V
 HSPLandroid/icu/text/SimpleDateFormat;->subFormat(Ljava/lang/StringBuffer;CIIILandroid/icu/text/DisplayContext;Ljava/text/FieldPosition;Landroid/icu/util/Calendar;)V
 HSPLandroid/icu/text/SimpleDateFormat;->toPattern()Ljava/lang/String;
 HSPLandroid/icu/text/SimpleDateFormat;->zeroPaddingNumber(Landroid/icu/text/NumberFormat;Ljava/lang/StringBuffer;III)V
+HSPLandroid/icu/text/StringPrep;-><clinit>()V
 HSPLandroid/icu/text/StringPrep;-><init>(Ljava/nio/ByteBuffer;)V
 HSPLandroid/icu/text/StringPrep;->getInstance(I)Landroid/icu/text/StringPrep;
-HSPLandroid/icu/text/TimeZoneNames$Cache;-><init>(Landroid/icu/text/TimeZoneNames$1;)V
+HSPLandroid/icu/text/StringPrep;->getVersionInfo(I)Landroid/icu/util/VersionInfo;
+HSPLandroid/icu/text/StringPrep;->getVersionInfo([B)Landroid/icu/util/VersionInfo;
 HSPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/text/TimeZoneNames$Cache;->createInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/TimeZoneNames;
-HSPLandroid/icu/text/TimeZoneNames$NameType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/text/TimeZoneNames$NameType;->values()[Landroid/icu/text/TimeZoneNames$NameType;
+HSPLandroid/icu/text/TimeZoneNames;-><init>()V
+HSPLandroid/icu/text/TimeZoneNames;->access$100()Landroid/icu/text/TimeZoneNames$Factory;
 HSPLandroid/icu/text/TimeZoneNames;->getDisplayName(Ljava/lang/String;Landroid/icu/text/TimeZoneNames$NameType;J)Ljava/lang/String;
-HSPLandroid/icu/text/TimeZoneNames;->getInstance(Ljava/util/Locale;)Landroid/icu/text/TimeZoneNames;
+HSPLandroid/icu/text/UCharacterIterator;-><init>()V
+HSPLandroid/icu/text/UCharacterIterator;->getInstance(Ljava/lang/String;)Landroid/icu/text/UCharacterIterator;
 HSPLandroid/icu/text/UCharacterIterator;->getText()Ljava/lang/String;
+HSPLandroid/icu/text/UCharacterIterator;->getText([C)I
 HSPLandroid/icu/text/UCharacterIterator;->setToStart()V
-HSPLandroid/icu/text/UFieldPosition;->setFractionDigits(IJ)V
 HSPLandroid/icu/text/UFormat;-><init>()V
+HSPLandroid/icu/text/UFormat;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
 HSPLandroid/icu/text/UFormat;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/text/UTF16;->_charAt(Ljava/lang/String;IC)I
 HSPLandroid/icu/text/UTF16;->append(Ljava/lang/StringBuffer;I)Ljava/lang/StringBuffer;
+HSPLandroid/icu/text/UTF16;->charAt(Ljava/lang/CharSequence;I)I
+HSPLandroid/icu/text/UTF16;->charAt(Ljava/lang/String;I)I
 HSPLandroid/icu/text/UTF16;->charAt([CIII)I
-HSPLandroid/icu/text/UnhandledBreakEngine;-><init>()V
+HSPLandroid/icu/text/UTF16;->getCharCount(I)I
+HSPLandroid/icu/text/UTF16;->isLeadSurrogate(C)Z
+HSPLandroid/icu/text/UTF16;->isSurrogate(C)Z
+HSPLandroid/icu/text/UnicodeFilter;-><init>()V
+HSPLandroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;-><init>(I)V
 HSPLandroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;->contains(I)Z
+HSPLandroid/icu/text/UnicodeSet$IntPropertyFilter;-><init>(II)V
 HSPLandroid/icu/text/UnicodeSet$IntPropertyFilter;->contains(I)Z
+HSPLandroid/icu/text/UnicodeSet$SpanCondition;-><clinit>()V
+HSPLandroid/icu/text/UnicodeSet$SpanCondition;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/text/UnicodeSet;-><init>()V
 HSPLandroid/icu/text/UnicodeSet;-><init>(II)V
+HSPLandroid/icu/text/UnicodeSet;-><init>(Landroid/icu/text/UnicodeSet;)V
 HSPLandroid/icu/text/UnicodeSet;-><init>(Ljava/lang/String;)V
-HSPLandroid/icu/text/UnicodeSet;-><init>([I)V
 HSPLandroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;IZ)Ljava/lang/Appendable;
+HSPLandroid/icu/text/UnicodeSet;->_appendToPat(Ljava/lang/Appendable;Ljava/lang/String;Z)Ljava/lang/Appendable;
 HSPLandroid/icu/text/UnicodeSet;->add(I)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->add(II)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/text/UnicodeSet;->add(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->add([III)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->addAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/text/UnicodeSet;->addString(Ljava/lang/CharSequence;)V
 HSPLandroid/icu/text/UnicodeSet;->add_unchecked(I)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->add_unchecked(II)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->append(Ljava/lang/Appendable;Ljava/lang/CharSequence;)V
@@ -8793,13 +7530,17 @@
 HSPLandroid/icu/text/UnicodeSet;->applyPropertyAlias(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->applyPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;Ljava/lang/Appendable;Landroid/icu/text/SymbolTable;)V
 HSPLandroid/icu/text/UnicodeSet;->applyPropertyPattern(Ljava/lang/String;Ljava/text/ParsePosition;Landroid/icu/text/SymbolTable;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/text/UnicodeSet;->checkFrozen()V
 HSPLandroid/icu/text/UnicodeSet;->clear()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->clone()Ljava/lang/Object;
+HSPLandroid/icu/text/UnicodeSet;->cloneAsThawed()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->compact()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->complement()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->contains(I)Z
+HSPLandroid/icu/text/UnicodeSet;->contains(Ljava/lang/CharSequence;)Z
 HSPLandroid/icu/text/UnicodeSet;->containsAll(Ljava/lang/String;)Z
-HSPLandroid/icu/text/UnicodeSet;->containsNone(II)Z
+HSPLandroid/icu/text/UnicodeSet;->ensureBufferCapacity(I)V
+HSPLandroid/icu/text/UnicodeSet;->ensureCapacity(I)V
 HSPLandroid/icu/text/UnicodeSet;->findCodePoint(I)I
 HSPLandroid/icu/text/UnicodeSet;->freeze()Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->getRangeCount()I
@@ -8808,119 +7549,170 @@
 HSPLandroid/icu/text/UnicodeSet;->getSingleCP(Ljava/lang/CharSequence;)I
 HSPLandroid/icu/text/UnicodeSet;->hasStrings()Z
 HSPLandroid/icu/text/UnicodeSet;->isFrozen()Z
+HSPLandroid/icu/text/UnicodeSet;->nextCapacity(I)I
+HSPLandroid/icu/text/UnicodeSet;->range(II)[I
 HSPLandroid/icu/text/UnicodeSet;->resemblesPropertyPattern(Landroid/icu/impl/RuleCharacterIterator;I)Z
 HSPLandroid/icu/text/UnicodeSet;->retain([III)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->retainAll(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
 HSPLandroid/icu/text/UnicodeSet;->set(Landroid/icu/text/UnicodeSet;)Landroid/icu/text/UnicodeSet;
+HSPLandroid/icu/text/UnicodeSet;->span(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;)I
+HSPLandroid/icu/text/UnicodeSet;->span(Ljava/lang/CharSequence;Landroid/icu/text/UnicodeSet$SpanCondition;)I
+HSPLandroid/icu/text/UnicodeSet;->spanBack(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;)I
+HSPLandroid/icu/text/UnicodeSet;->spanCodePointsAndCount(Ljava/lang/CharSequence;ILandroid/icu/text/UnicodeSet$SpanCondition;Landroid/icu/util/OutputInt;)I
+HSPLandroid/icu/util/AnnualTimeZoneRule;-><init>(Ljava/lang/String;IILandroid/icu/util/DateTimeRule;II)V
 HSPLandroid/icu/util/AnnualTimeZoneRule;->getEndYear()I
 HSPLandroid/icu/util/AnnualTimeZoneRule;->getFirstStart(II)Ljava/util/Date;
 HSPLandroid/icu/util/AnnualTimeZoneRule;->getNextStart(JIIZ)Ljava/util/Date;
 HSPLandroid/icu/util/AnnualTimeZoneRule;->getRule()Landroid/icu/util/DateTimeRule;
 HSPLandroid/icu/util/AnnualTimeZoneRule;->getStartInYear(III)Ljava/util/Date;
+HSPLandroid/icu/util/BasicTimeZone;-><init>(Ljava/lang/String;)V
+HSPLandroid/icu/util/BytesTrie$Result;-><clinit>()V
 HSPLandroid/icu/util/BytesTrie$Result;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/util/BytesTrie$Result;->hasNext()Z
+HSPLandroid/icu/util/BytesTrie$Result;->hasValue()Z
+HSPLandroid/icu/util/BytesTrie;-><clinit>()V
+HSPLandroid/icu/util/BytesTrie;-><init>([BI)V
 HSPLandroid/icu/util/BytesTrie;->branchNext(III)Landroid/icu/util/BytesTrie$Result;
+HSPLandroid/icu/util/BytesTrie;->getValue()I
 HSPLandroid/icu/util/BytesTrie;->jumpByDelta([BI)I
 HSPLandroid/icu/util/BytesTrie;->next(I)Landroid/icu/util/BytesTrie$Result;
 HSPLandroid/icu/util/BytesTrie;->nextImpl(II)Landroid/icu/util/BytesTrie$Result;
 HSPLandroid/icu/util/BytesTrie;->readValue([BII)I
+HSPLandroid/icu/util/BytesTrie;->skipDelta([BI)I
+HSPLandroid/icu/util/BytesTrie;->skipValue(II)I
+HSPLandroid/icu/util/BytesTrie;->skipValue([BI)I
+HSPLandroid/icu/util/BytesTrie;->stop()V
+HSPLandroid/icu/util/Calendar$FormatConfiguration;-><init>()V
+HSPLandroid/icu/util/Calendar$FormatConfiguration;-><init>(Landroid/icu/util/Calendar$1;)V
+HSPLandroid/icu/util/Calendar$FormatConfiguration;->access$102(Landroid/icu/util/Calendar$FormatConfiguration;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/Calendar$FormatConfiguration;->access$202(Landroid/icu/util/Calendar$FormatConfiguration;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/Calendar$FormatConfiguration;->access$302(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/text/DateFormatSymbols;)Landroid/icu/text/DateFormatSymbols;
+HSPLandroid/icu/util/Calendar$FormatConfiguration;->access$402(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
+HSPLandroid/icu/util/Calendar$FormatConfiguration;->access$502(Landroid/icu/util/Calendar$FormatConfiguration;Landroid/icu/util/Calendar;)Landroid/icu/util/Calendar;
 HSPLandroid/icu/util/Calendar$FormatConfiguration;->getCalendar()Landroid/icu/util/Calendar;
 HSPLandroid/icu/util/Calendar$FormatConfiguration;->getDateFormatSymbols()Landroid/icu/text/DateFormatSymbols;
 HSPLandroid/icu/util/Calendar$FormatConfiguration;->getLocale()Landroid/icu/util/ULocale;
 HSPLandroid/icu/util/Calendar$FormatConfiguration;->getOverrideString()Ljava/lang/String;
 HSPLandroid/icu/util/Calendar$FormatConfiguration;->getPatternString()Ljava/lang/String;
+HSPLandroid/icu/util/Calendar$PatternData;-><init>([Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/icu/util/Calendar$PatternData;->access$600(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData;
+HSPLandroid/icu/util/Calendar$PatternData;->access$800(Landroid/icu/util/Calendar$PatternData;)[Ljava/lang/String;
+HSPLandroid/icu/util/Calendar$PatternData;->access$900(Landroid/icu/util/Calendar$PatternData;)[Ljava/lang/String;
+HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar$PatternData;
 HSPLandroid/icu/util/Calendar$PatternData;->make(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
-HSPLandroid/icu/util/Calendar$WeekDataCache;-><init>(Landroid/icu/util/Calendar$1;)V
-HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/icu/util/Calendar$WeekDataCache;->createInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
+HSPLandroid/icu/util/Calendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
+HSPLandroid/icu/util/Calendar;->access$1100()Landroid/icu/impl/ICUCache;
+HSPLandroid/icu/util/Calendar;->access$1200(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
 HSPLandroid/icu/util/Calendar;->clone()Ljava/lang/Object;
 HSPLandroid/icu/util/Calendar;->complete()V
 HSPLandroid/icu/util/Calendar;->computeFields()V
+HSPLandroid/icu/util/Calendar;->computeGregorianAndDOWFields(I)V
 HSPLandroid/icu/util/Calendar;->computeGregorianFields(I)V
 HSPLandroid/icu/util/Calendar;->computeWeekFields()V
 HSPLandroid/icu/util/Calendar;->createInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
+HSPLandroid/icu/util/Calendar;->floorDivide(II[I)I
 HSPLandroid/icu/util/Calendar;->floorDivide(JI[I)I
+HSPLandroid/icu/util/Calendar;->floorDivide(JJ)J
 HSPLandroid/icu/util/Calendar;->formatHelper(Landroid/icu/util/Calendar;Landroid/icu/util/ULocale;II)Landroid/icu/text/DateFormat;
 HSPLandroid/icu/util/Calendar;->get(I)I
 HSPLandroid/icu/util/Calendar;->getCalendarTypeForLocale(Landroid/icu/util/ULocale;)Landroid/icu/impl/CalType;
 HSPLandroid/icu/util/Calendar;->getDateTimeFormat(IILandroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-HSPLandroid/icu/util/Calendar;->getFieldCount()I
 HSPLandroid/icu/util/Calendar;->getFirstDayOfWeek()I
+HSPLandroid/icu/util/Calendar;->getGregorianDayOfMonth()I
+HSPLandroid/icu/util/Calendar;->getGregorianDayOfYear()I
+HSPLandroid/icu/util/Calendar;->getGregorianMonth()I
+HSPLandroid/icu/util/Calendar;->getGregorianYear()I
+HSPLandroid/icu/util/Calendar;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
+HSPLandroid/icu/util/Calendar;->getInstanceInternal(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)Landroid/icu/util/Calendar;
 HSPLandroid/icu/util/Calendar;->getKeywordValuesForLocale(Ljava/lang/String;Landroid/icu/util/ULocale;Z)[Ljava/lang/String;
+HSPLandroid/icu/util/Calendar;->getLocale(Landroid/icu/util/ULocale$Type;)Landroid/icu/util/ULocale;
 HSPLandroid/icu/util/Calendar;->getMinimalDaysInFirstWeek()I
 HSPLandroid/icu/util/Calendar;->getPatternData(Landroid/icu/util/ULocale;Ljava/lang/String;)Landroid/icu/util/Calendar$PatternData;
+HSPLandroid/icu/util/Calendar;->getRegionForCalendar(Landroid/icu/util/ULocale;)Ljava/lang/String;
 HSPLandroid/icu/util/Calendar;->getRepeatedWallTimeOption()I
 HSPLandroid/icu/util/Calendar;->getSkippedWallTimeOption()I
 HSPLandroid/icu/util/Calendar;->getTimeInMillis()J
 HSPLandroid/icu/util/Calendar;->getTimeZone()Landroid/icu/util/TimeZone;
-HSPLandroid/icu/util/Calendar;->getWeekDataForRegionInternal(Ljava/lang/String;)Landroid/icu/util/Calendar$WeekData;
 HSPLandroid/icu/util/Calendar;->handleCreateFields()[I
 HSPLandroid/icu/util/Calendar;->handleGetDateFormat(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
 HSPLandroid/icu/util/Calendar;->initInternal()V
 HSPLandroid/icu/util/Calendar;->internalSet(II)V
 HSPLandroid/icu/util/Calendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z
 HSPLandroid/icu/util/Calendar;->isLenient()Z
+HSPLandroid/icu/util/Calendar;->julianDayToDayOfWeek(I)I
 HSPLandroid/icu/util/Calendar;->setCalendarLocale(Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/util/Calendar;->setFirstDayOfWeek(I)V
+HSPLandroid/icu/util/Calendar;->setLocale(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/util/Calendar;->setMinimalDaysInFirstWeek(I)V
 HSPLandroid/icu/util/Calendar;->setTimeInMillis(J)V
 HSPLandroid/icu/util/Calendar;->setTimeZone(Landroid/icu/util/TimeZone;)V
 HSPLandroid/icu/util/Calendar;->setWeekData(Landroid/icu/util/Calendar$WeekData;)Landroid/icu/util/Calendar;
+HSPLandroid/icu/util/Calendar;->setWeekData(Ljava/lang/String;)V
+HSPLandroid/icu/util/Calendar;->weekNumber(II)I
 HSPLandroid/icu/util/Calendar;->weekNumber(III)I
-HSPLandroid/icu/util/CodePointMap$RangeOption;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/util/CodePointMap;->getRange(ILandroid/icu/util/CodePointMap$RangeOption;ILandroid/icu/util/CodePointMap$ValueFilter;Landroid/icu/util/CodePointMap$Range;)Z
+HSPLandroid/icu/util/CodePointMap;-><clinit>()V
+HSPLandroid/icu/util/CodePointMap;-><init>()V
+HSPLandroid/icu/util/CodePointTrie$1;-><clinit>()V
+HSPLandroid/icu/util/CodePointTrie$Data16;-><init>([C)V
 HSPLandroid/icu/util/CodePointTrie$Data16;->getDataLength()I
 HSPLandroid/icu/util/CodePointTrie$Data16;->getFromIndex(I)I
+HSPLandroid/icu/util/CodePointTrie$Data;-><init>()V
+HSPLandroid/icu/util/CodePointTrie$Data;-><init>(Landroid/icu/util/CodePointTrie$1;)V
+HSPLandroid/icu/util/CodePointTrie$Fast16;-><clinit>()V
 HSPLandroid/icu/util/CodePointTrie$Fast16;-><init>([C[CIII)V
-HSPLandroid/icu/util/CodePointTrie$Fast;->getType()Landroid/icu/util/CodePointTrie$Type;
+HSPLandroid/icu/util/CodePointTrie$Fast16;->bmpGet(I)I
+HSPLandroid/icu/util/CodePointTrie$Fast16;->fromBinary(Ljava/nio/ByteBuffer;)Landroid/icu/util/CodePointTrie$Fast16;
+HSPLandroid/icu/util/CodePointTrie$Fast;-><init>([CLandroid/icu/util/CodePointTrie$Data;III)V
+HSPLandroid/icu/util/CodePointTrie$Fast;-><init>([CLandroid/icu/util/CodePointTrie$Data;IIILandroid/icu/util/CodePointTrie$1;)V
+HSPLandroid/icu/util/CodePointTrie$Type;-><clinit>()V
 HSPLandroid/icu/util/CodePointTrie$Type;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/util/CodePointTrie$ValueWidth;-><clinit>()V
 HSPLandroid/icu/util/CodePointTrie$ValueWidth;-><init>(Ljava/lang/String;I)V
 HSPLandroid/icu/util/CodePointTrie$ValueWidth;->values()[Landroid/icu/util/CodePointTrie$ValueWidth;
+HSPLandroid/icu/util/CodePointTrie;-><clinit>()V
 HSPLandroid/icu/util/CodePointTrie;-><init>([CLandroid/icu/util/CodePointTrie$Data;III)V
 HSPLandroid/icu/util/CodePointTrie;-><init>([CLandroid/icu/util/CodePointTrie$Data;IIILandroid/icu/util/CodePointTrie$1;)V
+HSPLandroid/icu/util/CodePointTrie;->fastIndex(I)I
 HSPLandroid/icu/util/CodePointTrie;->fromBinary(Landroid/icu/util/CodePointTrie$Type;Landroid/icu/util/CodePointTrie$ValueWidth;Ljava/nio/ByteBuffer;)Landroid/icu/util/CodePointTrie;
-HSPLandroid/icu/util/CodePointTrie;->getRange(ILandroid/icu/util/CodePointMap$ValueFilter;Landroid/icu/util/CodePointMap$Range;)Z
-HSPLandroid/icu/util/Currency$1;-><init>()V
-HSPLandroid/icu/util/Currency$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/icu/util/Currency$1;->createInstance(Ljava/lang/String;Ljava/lang/Void;)Landroid/icu/util/Currency;
-HSPLandroid/icu/util/Currency$CurrencyUsage;-><init>(Ljava/lang/String;I)V
+HSPLandroid/icu/util/Currency;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/util/Currency;->createCurrency(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
 HSPLandroid/icu/util/Currency;->getCurrencyCode()Ljava/lang/String;
+HSPLandroid/icu/util/Currency;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/util/Currency;
 HSPLandroid/icu/util/Currency;->getInstance(Ljava/lang/String;)Landroid/icu/util/Currency;
 HSPLandroid/icu/util/Currency;->getInstance(Ljava/util/Locale;)Landroid/icu/util/Currency;
 HSPLandroid/icu/util/Currency;->getName(Landroid/icu/util/ULocale;I[Z)Ljava/lang/String;
 HSPLandroid/icu/util/Currency;->getSymbol(Landroid/icu/util/ULocale;)Ljava/lang/String;
 HSPLandroid/icu/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String;
 HSPLandroid/icu/util/Currency;->isAlpha3Code(Ljava/lang/String;)Z
-HSPLandroid/icu/util/Currency;->loadCurrency(Ljava/lang/String;)Landroid/icu/util/Currency;
+HSPLandroid/icu/util/DateTimeRule;-><init>(IIIZII)V
 HSPLandroid/icu/util/DateTimeRule;->getDateRuleType()I
 HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfMonth()I
 HSPLandroid/icu/util/DateTimeRule;->getRuleDayOfWeek()I
 HSPLandroid/icu/util/DateTimeRule;->getRuleMillisInDay()I
 HSPLandroid/icu/util/DateTimeRule;->getRuleMonth()I
 HSPLandroid/icu/util/DateTimeRule;->getTimeRuleType()I
-HSPLandroid/icu/util/GregorianCalendar;-><init>()V
+HSPLandroid/icu/util/GregorianCalendar;-><init>(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;)V
 HSPLandroid/icu/util/GregorianCalendar;->getType()Ljava/lang/String;
 HSPLandroid/icu/util/GregorianCalendar;->handleComputeFields(I)V
 HSPLandroid/icu/util/GregorianCalendar;->handleGetYearLength(I)I
 HSPLandroid/icu/util/GregorianCalendar;->isEquivalentTo(Landroid/icu/util/Calendar;)Z
 HSPLandroid/icu/util/GregorianCalendar;->isLeapYear(I)Z
-HSPLandroid/icu/util/MeasureUnit$1;-><init>()V
-HSPLandroid/icu/util/MeasureUnit$1;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-HSPLandroid/icu/util/MeasureUnit$2;-><init>()V
+HSPLandroid/icu/util/InitialTimeZoneRule;-><init>(Ljava/lang/String;II)V
 HSPLandroid/icu/util/MeasureUnit$2;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-HSPLandroid/icu/util/MeasureUnit$3;-><init>()V
-HSPLandroid/icu/util/MeasureUnit$3;->create(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
-HSPLandroid/icu/util/MeasureUnit$4;-><init>()V
+HSPLandroid/icu/util/MeasureUnit;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/icu/util/MeasureUnit;->addUnit(Ljava/lang/String;Ljava/lang/String;Landroid/icu/util/MeasureUnit$Factory;)Landroid/icu/util/MeasureUnit;
 HSPLandroid/icu/util/MeasureUnit;->equals(Ljava/lang/Object;)Z
-HSPLandroid/icu/util/MeasureUnit;->hashCode()I
 HSPLandroid/icu/util/MeasureUnit;->internalGetInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/MeasureUnit;
+HSPLandroid/icu/util/Output;-><init>(Ljava/lang/Object;)V
+HSPLandroid/icu/util/STZInfo;-><init>()V
+HSPLandroid/icu/util/SimpleTimeZone;-><clinit>()V
 HSPLandroid/icu/util/SimpleTimeZone;-><init>(ILjava/lang/String;IIIIIIIIIII)V
 HSPLandroid/icu/util/SimpleTimeZone;->clone()Ljava/lang/Object;
 HSPLandroid/icu/util/SimpleTimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone;
 HSPLandroid/icu/util/SimpleTimeZone;->compareToRule(IIIIIIIIIIII)I
 HSPLandroid/icu/util/SimpleTimeZone;->construct(IIIIIIIIIIII)V
 HSPLandroid/icu/util/SimpleTimeZone;->decodeEndRule()V
+HSPLandroid/icu/util/SimpleTimeZone;->decodeRules()V
 HSPLandroid/icu/util/SimpleTimeZone;->decodeStartRule()V
 HSPLandroid/icu/util/SimpleTimeZone;->getDSTSavings()I
 HSPLandroid/icu/util/SimpleTimeZone;->getNextTransition(JZ)Landroid/icu/util/TimeZoneTransition;
@@ -8928,281 +7720,125 @@
 HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIII)I
 HSPLandroid/icu/util/SimpleTimeZone;->getOffset(IIIIIIII)I
 HSPLandroid/icu/util/SimpleTimeZone;->getRawOffset()I
+HSPLandroid/icu/util/SimpleTimeZone;->getSTZInfo()Landroid/icu/util/STZInfo;
 HSPLandroid/icu/util/SimpleTimeZone;->getTimeZoneRules()[Landroid/icu/util/TimeZoneRule;
 HSPLandroid/icu/util/SimpleTimeZone;->initTransitionRules()V
 HSPLandroid/icu/util/SimpleTimeZone;->isFrozen()Z
-HSPLandroid/icu/util/SimpleTimeZone;->setID(Ljava/lang/String;)V
 HSPLandroid/icu/util/SimpleTimeZone;->setStartYear(I)V
 HSPLandroid/icu/util/SimpleTimeZone;->useDaylightTime()Z
 HSPLandroid/icu/util/TimeArrayTimeZoneRule;-><init>(Ljava/lang/String;II[JI)V
-HSPLandroid/icu/util/TimeZone$ConstantZone;-><init>(ILjava/lang/String;Landroid/icu/util/TimeZone$1;)V
-HSPLandroid/icu/util/TimeZone$ConstantZone;->freeze()Landroid/icu/util/TimeZone;
-HSPLandroid/icu/util/TimeZone$SystemTimeZoneType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/util/TimeZone$SystemTimeZoneType;->values()[Landroid/icu/util/TimeZone$SystemTimeZoneType;
+HSPLandroid/icu/util/TimeZone;-><init>()V
+HSPLandroid/icu/util/TimeZone;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/util/TimeZone;->cloneAsThawed()Landroid/icu/util/TimeZone;
 HSPLandroid/icu/util/TimeZone;->equals(Ljava/lang/Object;)Z
-HSPLandroid/icu/util/TimeZone;->getAvailableIDs(Landroid/icu/util/TimeZone$SystemTimeZoneType;Ljava/lang/String;Ljava/lang/Integer;)Ljava/util/Set;
 HSPLandroid/icu/util/TimeZone;->getCanonicalID(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/util/TimeZone;->getCanonicalID(Ljava/lang/String;[Z)Ljava/lang/String;
 HSPLandroid/icu/util/TimeZone;->getDefault()Landroid/icu/util/TimeZone;
+HSPLandroid/icu/util/TimeZone;->getFrozenICUTimeZone(Ljava/lang/String;Z)Landroid/icu/util/BasicTimeZone;
 HSPLandroid/icu/util/TimeZone;->getFrozenTimeZone(Ljava/lang/String;)Landroid/icu/util/TimeZone;
 HSPLandroid/icu/util/TimeZone;->getID()Ljava/lang/String;
-HSPLandroid/icu/util/TimeZone;->getOffset(J)I
 HSPLandroid/icu/util/TimeZone;->getOffset(JZ[I)V
 HSPLandroid/icu/util/TimeZone;->getTimeZone(Ljava/lang/String;IZ)Landroid/icu/util/TimeZone;
+HSPLandroid/icu/util/TimeZone;->hashCode()I
 HSPLandroid/icu/util/TimeZone;->setICUDefault(Landroid/icu/util/TimeZone;)V
+HSPLandroid/icu/util/TimeZone;->setID(Ljava/lang/String;)V
+HSPLandroid/icu/util/TimeZoneRule;-><init>(Ljava/lang/String;II)V
 HSPLandroid/icu/util/TimeZoneRule;->getDSTSavings()I
 HSPLandroid/icu/util/TimeZoneRule;->getName()Ljava/lang/String;
 HSPLandroid/icu/util/TimeZoneRule;->getRawOffset()I
+HSPLandroid/icu/util/TimeZoneTransition;-><init>(JLandroid/icu/util/TimeZoneRule;Landroid/icu/util/TimeZoneRule;)V
 HSPLandroid/icu/util/TimeZoneTransition;->getFrom()Landroid/icu/util/TimeZoneRule;
 HSPLandroid/icu/util/TimeZoneTransition;->getTime()J
 HSPLandroid/icu/util/TimeZoneTransition;->getTo()Landroid/icu/util/TimeZoneRule;
-HSPLandroid/icu/util/ULocale$1;-><init>()V
 HSPLandroid/icu/util/ULocale$1;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/util/ULocale$1;->createInstance(Ljava/lang/String;Ljava/lang/Void;)Ljava/lang/String;
-HSPLandroid/icu/util/ULocale$2;-><init>()V
 HSPLandroid/icu/util/ULocale$2;->createInstance(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/icu/util/ULocale$2;->createInstance(Ljava/util/Locale;Ljava/lang/Void;)Landroid/icu/util/ULocale;
-HSPLandroid/icu/util/ULocale$Category;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/util/ULocale$Category;->values()[Landroid/icu/util/ULocale$Category;
-HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->getDefault(Landroid/icu/util/ULocale$Category;)Ljava/util/Locale;
-HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toLocale(Landroid/icu/util/ULocale;)Ljava/util/Locale;
 HSPLandroid/icu/util/ULocale$JDKLocaleHelper;->toULocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;
-HSPLandroid/icu/util/ULocale$Type;-><init>(Landroid/icu/util/ULocale$1;)V
 HSPLandroid/icu/util/ULocale;-><init>(Ljava/lang/String;)V
 HSPLandroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
+HSPLandroid/icu/util/ULocale;-><init>(Ljava/lang/String;Ljava/util/Locale;Landroid/icu/util/ULocale$1;)V
 HSPLandroid/icu/util/ULocale;->addLikelySubtags(Landroid/icu/util/ULocale;)Landroid/icu/util/ULocale;
+HSPLandroid/icu/util/ULocale;->appendTag(Ljava/lang/String;Ljava/lang/StringBuilder;)V
 HSPLandroid/icu/util/ULocale;->base()Landroid/icu/impl/locale/BaseLocale;
-HSPLandroid/icu/util/ULocale;->canonicalize(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->createCanonical(Ljava/lang/String;)Landroid/icu/util/ULocale;
 HSPLandroid/icu/util/ULocale;->createLikelySubtagsString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->createTagString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->equals(Ljava/lang/Object;)Z
-HSPLandroid/icu/util/ULocale;->extensions()Landroid/icu/impl/locale/LocaleExtensions;
-HSPLandroid/icu/util/ULocale;->forLanguageTag(Ljava/lang/String;)Landroid/icu/util/ULocale;
 HSPLandroid/icu/util/ULocale;->forLocale(Ljava/util/Locale;)Landroid/icu/util/ULocale;
+HSPLandroid/icu/util/ULocale;->getBaseName()Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getBaseName(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getCountry()Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->getDefault()Landroid/icu/util/ULocale;
-HSPLandroid/icu/util/ULocale;->getDefault(Landroid/icu/util/ULocale$Category;)Landroid/icu/util/ULocale;
-HSPLandroid/icu/util/ULocale;->getInstance(Landroid/icu/impl/locale/BaseLocale;Landroid/icu/impl/locale/LocaleExtensions;)Landroid/icu/util/ULocale;
+HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getKeywordValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getKeywords()Ljava/util/Iterator;
+HSPLandroid/icu/util/ULocale;->getKeywords(Ljava/lang/String;)Ljava/util/Iterator;
+HSPLandroid/icu/util/ULocale;->getLanguage()Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->getName()Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->getName(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->getRegionForSupplementalData(Landroid/icu/util/ULocale;Z)Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->getScript()Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->getShortestSubtagLength(Ljava/lang/String;)I
+HSPLandroid/icu/util/ULocale;->getVariant()Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->hashCode()I
+HSPLandroid/icu/util/ULocale;->isEmptyString(Ljava/lang/String;)Z
 HSPLandroid/icu/util/ULocale;->isRightToLeft()Z
 HSPLandroid/icu/util/ULocale;->lookupLikelySubtags(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/icu/util/ULocale;->lscvToID(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/icu/util/ULocale;->parseTagString(Ljava/lang/String;[Ljava/lang/String;)I
-HSPLandroid/icu/util/ULocale;->toLanguageTag()Ljava/lang/String;
+HSPLandroid/icu/util/ULocale;->toLocale()Ljava/util/Locale;
 HSPLandroid/icu/util/ULocale;->toString()Ljava/lang/String;
-HSPLandroid/icu/util/UResourceBundle$RootType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/util/UResourceBundle$RootType;->values()[Landroid/icu/util/UResourceBundle$RootType;
+HSPLandroid/icu/util/UResourceBundle;-><init>()V
+HSPLandroid/icu/util/UResourceBundle;->findTopLevel(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->get(I)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->get(Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/util/UResourceBundle;
+HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle;
+HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
+HSPLandroid/icu/util/UResourceBundle;->getBundleInstance(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->getIterator()Landroid/icu/util/UResourceBundleIterator;
 HSPLandroid/icu/util/UResourceBundle;->getRootType(Ljava/lang/String;Ljava/lang/ClassLoader;)Landroid/icu/util/UResourceBundle$RootType;
+HSPLandroid/icu/util/UResourceBundle;->handleGetObject(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/icu/util/UResourceBundle;->handleGetObjectImpl(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
 HSPLandroid/icu/util/UResourceBundle;->instantiateBundle(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/UResourceBundle;->resolveObject(Ljava/lang/String;Landroid/icu/util/UResourceBundle;)Ljava/lang/Object;
+HSPLandroid/icu/util/UResourceBundleIterator;-><init>(Landroid/icu/util/UResourceBundle;)V
 HSPLandroid/icu/util/UResourceBundleIterator;->hasNext()Z
 HSPLandroid/icu/util/UResourceBundleIterator;->next()Landroid/icu/util/UResourceBundle;
 HSPLandroid/icu/util/VersionInfo;->compareTo(Landroid/icu/util/VersionInfo;)I
-HSPLandroid/icu/util/VersionInfo;->getInstance(I)Landroid/icu/util/VersionInfo;
 HSPLandroid/icu/util/VersionInfo;->getInstance(IIII)Landroid/icu/util/VersionInfo;
-HSPLandroid/icu/util/VersionInfo;->getInstance(Ljava/lang/String;)Landroid/icu/util/VersionInfo;
-HSPLandroid/inputmethodservice/-$$Lambda$InputMethodService$8T9TmAUIN7vW9eU6kTg8309_d4E;->onComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;->createSession(Landroid/view/inputmethod/InputMethod$SessionCallback;)V
-HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;->setSessionEnabled(Landroid/view/inputmethod/InputMethodSession;Z)V
-HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->dispatchKeyEvent(ILandroid/view/KeyEvent;Landroid/view/inputmethod/InputMethodSession$EventCallback;)V
-HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->isEnabled()Z
-HSPLandroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;->setEnabled(Z)V
-HSPLandroid/inputmethodservice/AbstractInputMethodService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;->finishedEvent(IZ)V
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->executeMessage(Landroid/os/Message;)V
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->finishSession()V
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->getInternalInputMethodSession()Landroid/view/inputmethod/InputMethodSession;
-HSPLandroid/inputmethodservice/IInputMethodSessionWrapper;->updateSelection(IIIIII)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper$InputMethodSessionCallbackWrapper;->sessionCreated(Landroid/view/inputmethod/InputMethodSession;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;-><init>(Landroid/inputmethodservice/AbstractInputMethodService;Landroid/view/inputmethod/InputMethod;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->bindInput(Landroid/view/inputmethod/InputBinding;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->executeMessage(Landroid/os/Message;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->hideSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->initializeInternal(Landroid/os/IBinder;ILcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->setSessionEnabled(Lcom/android/internal/view/IInputMethodSession;Z)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->showSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;ZZ)V
-HSPLandroid/inputmethodservice/IInputMethodWrapper;->unbindInput()V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;-><init>(Landroid/inputmethodservice/InputMethodService;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->attachToken(Landroid/os/IBinder;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->bindInput(Landroid/view/inputmethod/InputBinding;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->dispatchStartInputWithToken(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;ZLandroid/os/IBinder;Z)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->hideSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->initializeInternal(Landroid/os/IBinder;ILcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->showSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->startInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->unbindInput()V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodImpl;->updateInputMethodDisplay(I)V
-HSPLandroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;->updateSelection(IIIIII)V
-HSPLandroid/inputmethodservice/InputMethodService$SettingsObserver;->shouldShowImeWithHardKeyboard()Z
-HSPLandroid/inputmethodservice/InputMethodService;-><init>()V
-HSPLandroid/inputmethodservice/InputMethodService;->doFinishInput()V
-HSPLandroid/inputmethodservice/InputMethodService;->doMovementKey(ILandroid/view/KeyEvent;I)Z
-HSPLandroid/inputmethodservice/InputMethodService;->doStartInput(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/EditorInfo;Z)V
-HSPLandroid/inputmethodservice/InputMethodService;->getCandidatesHiddenVisibility()I
-HSPLandroid/inputmethodservice/InputMethodService;->getCurrentInputBinding()Landroid/view/inputmethod/InputBinding;
-HSPLandroid/inputmethodservice/InputMethodService;->getCurrentInputConnection()Landroid/view/inputmethod/InputConnection;
-HSPLandroid/inputmethodservice/InputMethodService;->getCurrentInputEditorInfo()Landroid/view/inputmethod/EditorInfo;
-HSPLandroid/inputmethodservice/InputMethodService;->hideStatusIcon()V
-HSPLandroid/inputmethodservice/InputMethodService;->hideWindow()V
-HSPLandroid/inputmethodservice/InputMethodService;->initViews()V
-HSPLandroid/inputmethodservice/InputMethodService;->initialize()V
-HSPLandroid/inputmethodservice/InputMethodService;->isExtractViewShown()Z
-HSPLandroid/inputmethodservice/InputMethodService;->isFullscreenMode()Z
-HSPLandroid/inputmethodservice/InputMethodService;->lambda$new$0$InputMethodService(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-HSPLandroid/inputmethodservice/InputMethodService;->notifyUserActionIfNecessary()V
-HSPLandroid/inputmethodservice/InputMethodService;->onBindInput()V
-HSPLandroid/inputmethodservice/InputMethodService;->onConfigureWindow(Landroid/view/Window;ZZ)V
-HSPLandroid/inputmethodservice/InputMethodService;->onCreate()V
-HSPLandroid/inputmethodservice/InputMethodService;->onCreateInputMethodSessionInterface()Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;
-HSPLandroid/inputmethodservice/InputMethodService;->onEvaluateInputViewShown()Z
-HSPLandroid/inputmethodservice/InputMethodService;->onInitializeInterface()V
-HSPLandroid/inputmethodservice/InputMethodService;->onKeyUp(ILandroid/view/KeyEvent;)Z
-HSPLandroid/inputmethodservice/InputMethodService;->onShowInputRequested(IZ)Z
-HSPLandroid/inputmethodservice/InputMethodService;->onUnbindInput()V
-HSPLandroid/inputmethodservice/InputMethodService;->onUpdateSelection(IIIIII)V
-HSPLandroid/inputmethodservice/InputMethodService;->onWindowHidden()V
-HSPLandroid/inputmethodservice/InputMethodService;->onWindowShown()V
-HSPLandroid/inputmethodservice/InputMethodService;->prepareWindow(Z)Z
-HSPLandroid/inputmethodservice/InputMethodService;->setBackDisposition(I)V
-HSPLandroid/inputmethodservice/InputMethodService;->setInputView(Landroid/view/View;)V
-HSPLandroid/inputmethodservice/InputMethodService;->showWindow(Z)V
-HSPLandroid/inputmethodservice/InputMethodService;->startExtractingText(Z)V
-HSPLandroid/inputmethodservice/InputMethodService;->startViews(Z)V
-HSPLandroid/inputmethodservice/InputMethodService;->updateCandidatesVisibility(Z)V
-HSPLandroid/inputmethodservice/InputMethodService;->updateExtractFrameVisibility()V
-HSPLandroid/inputmethodservice/InputMethodService;->updateFullscreenMode()V
-HSPLandroid/inputmethodservice/InputMethodService;->updateInputViewShown()V
-HSPLandroid/inputmethodservice/SoftInputWindow;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/inputmethodservice/SoftInputWindow;->initDockWindow()V
-HSPLandroid/inputmethodservice/SoftInputWindow;->setToken(Landroid/os/IBinder;)V
-HSPLandroid/inputmethodservice/SoftInputWindow;->show()V
-HSPLandroid/location/Address$1;-><init>()V
-HSPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Address;
-HSPLandroid/location/Address$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/location/Address;->getCountryCode()Ljava/lang/String;
-HPLandroid/location/Address;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/Country$1;-><init>()V
-HSPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Country;
-HSPLandroid/location/Country$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/location/Country;-><init>(Ljava/lang/String;I)V
-HSPLandroid/location/Country;->equals(Ljava/lang/Object;)Z
-HSPLandroid/location/Country;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/CountryDetector;->addCountryListener(Landroid/location/CountryListener;Landroid/os/Looper;)V
-HSPLandroid/location/CountryDetector;->detectCountry()Landroid/location/Country;
-HSPLandroid/location/Criteria$1;-><init>()V
-HPLandroid/location/Criteria$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Criteria;
-HPLandroid/location/Criteria$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/location/Criteria;->getAccuracy()I
-PLandroid/location/Criteria;->getPowerRequirement()I
-PLandroid/location/Criteria;->isAltitudeRequired()Z
-PLandroid/location/Criteria;->isBearingRequired()Z
-PLandroid/location/Criteria;->isCostAllowed()Z
-PLandroid/location/Criteria;->isSpeedRequired()Z
-HSPLandroid/location/Geocoder;-><init>(Landroid/content/Context;)V
-HSPLandroid/location/Geocoder;-><init>(Landroid/content/Context;Ljava/util/Locale;)V
-HSPLandroid/location/Geocoder;->getFromLocation(DDI)Ljava/util/List;
-HSPLandroid/location/Geocoder;->isPresent()Z
-HSPLandroid/location/GeocoderParams$1;-><init>()V
-HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/GeocoderParams;
-HPLandroid/location/GeocoderParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/location/GeocoderParams;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/GnssClock$1;-><init>()V
-PLandroid/location/GnssClock;-><init>()V
-HSPLandroid/location/GnssClock;->initialize()V
-PLandroid/location/GnssClock;->setDriftNanosPerSecond(D)V
-PLandroid/location/GnssClock;->setDriftUncertaintyNanosPerSecond(D)V
-PLandroid/location/GnssClock;->setHardwareClockDiscontinuityCount(I)V
-PLandroid/location/GnssClock;->setTimeNanos(J)V
-HPLandroid/location/GnssClock;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/GnssMeasurement$1;-><init>()V
-HPLandroid/location/GnssMeasurement;-><init>()V
-HSPLandroid/location/GnssMeasurement;->initialize()V
-HPLandroid/location/GnssMeasurement;->setAccumulatedDeltaRangeMeters(D)V
-HPLandroid/location/GnssMeasurement;->setAccumulatedDeltaRangeState(I)V
-HPLandroid/location/GnssMeasurement;->setAccumulatedDeltaRangeUncertaintyMeters(D)V
-HPLandroid/location/GnssMeasurement;->setAutomaticGainControlLevelInDb(D)V
-HPLandroid/location/GnssMeasurement;->setCarrierFrequencyHz(F)V
-HPLandroid/location/GnssMeasurement;->setCn0DbHz(D)V
-HPLandroid/location/GnssMeasurement;->setConstellationType(I)V
-HPLandroid/location/GnssMeasurement;->setMultipathIndicator(I)V
-HPLandroid/location/GnssMeasurement;->setPseudorangeRateMetersPerSecond(D)V
-HPLandroid/location/GnssMeasurement;->setPseudorangeRateUncertaintyMetersPerSecond(D)V
-HPLandroid/location/GnssMeasurement;->setReceivedSvTimeNanos(J)V
-HPLandroid/location/GnssMeasurement;->setReceivedSvTimeUncertaintyNanos(J)V
-HPLandroid/location/GnssMeasurement;->setState(I)V
-HPLandroid/location/GnssMeasurement;->setSvid(I)V
-HPLandroid/location/GnssMeasurement;->setTimeOffsetNanos(D)V
-HPLandroid/location/GnssMeasurement;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/GnssMeasurementCorrections$1;-><init>()V
-HSPLandroid/location/GnssMeasurementsEvent$1;-><init>()V
-HSPLandroid/location/GnssMeasurementsEvent;-><init>(Landroid/location/GnssClock;[Landroid/location/GnssMeasurement;)V
-HSPLandroid/location/GnssReflectingPlane$1;-><init>()V
-HSPLandroid/location/GnssSingleSatCorrection$1;-><init>()V
-HSPLandroid/location/ICountryDetector$Stub$Proxy;->detectCountry()Landroid/location/Country;
-HSPLandroid/location/ICountryDetector$Stub;-><init>()V
-HSPLandroid/location/ICountryDetector$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/location/ICountryListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/location/ICountryListener$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/location/IGeocodeProvider$Stub$Proxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
-PLandroid/location/IGeocodeProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeocodeProvider;
-PLandroid/location/IGeofenceProvider$Stub$Proxy;->setGeofenceHardware(Landroid/hardware/location/IGeofenceHardware;)V
-PLandroid/location/IGeofenceProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGeofenceProvider;
-PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->onGnssMeasurementsReceived(Landroid/location/GnssMeasurementsEvent;)V
-PLandroid/location/IGnssMeasurementsListener$Stub$Proxy;->onStatusChanged(I)V
-HPLandroid/location/IGnssMeasurementsListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/IGnssMeasurementsListener;
-HSPLandroid/location/IGpsGeofenceHardware$Stub;-><init>()V
-HPLandroid/location/ILocationListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/location/ILocationListener$Stub$Proxy;->onLocationChanged(Landroid/location/Location;)V
-PLandroid/location/ILocationListener$Stub$Proxy;->onProviderDisabled(Ljava/lang/String;)V
-PLandroid/location/ILocationListener$Stub$Proxy;->onProviderEnabled(Ljava/lang/String;)V
+HSPLandroid/icu/util/VersionInfo;->getInt(IIII)I
+HSPLandroid/location/AbstractListenerManager;-><init>()V
+HSPLandroid/location/Country;->getCountryIso()Ljava/lang/String;
+HSPLandroid/location/ILocationListener$Stub;-><init>()V
 HSPLandroid/location/ILocationListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/location/ILocationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationListener;
-HSPLandroid/location/ILocationManager$Stub$Proxy;->geocoderIsPresent()Z
-HSPLandroid/location/ILocationManager$Stub$Proxy;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
+HSPLandroid/location/ILocationManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/location/ILocationManager$Stub$Proxy;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;Ljava/lang/String;)Landroid/location/Location;
 HSPLandroid/location/ILocationManager$Stub$Proxy;->isLocationEnabledForUser(I)Z
-HSPLandroid/location/ILocationManager$Stub$Proxy;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
-HSPLandroid/location/ILocationManager$Stub;-><init>()V
 HSPLandroid/location/ILocationManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/location/ILocationManager;
-HPLandroid/location/ILocationManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/location/ILocationManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/location/INetInitiatedListener$Stub;-><init>()V
-HSPLandroid/location/Location$1;-><init>()V
-HSPLandroid/location/Location$1;->initialValue()Landroid/location/Location$BearingDistanceCache;
-HSPLandroid/location/Location$1;->initialValue()Ljava/lang/Object;
-HSPLandroid/location/Location$2;-><init>()V
 HSPLandroid/location/Location$2;->createFromParcel(Landroid/os/Parcel;)Landroid/location/Location;
 HSPLandroid/location/Location$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/location/Location$BearingDistanceCache;->access$102(Landroid/location/Location$BearingDistanceCache;F)F
-HSPLandroid/location/Location$BearingDistanceCache;->access$202(Landroid/location/Location$BearingDistanceCache;F)F
-HSPLandroid/location/Location$BearingDistanceCache;->access$302(Landroid/location/Location$BearingDistanceCache;F)F
-HSPLandroid/location/Location$BearingDistanceCache;->access$402(Landroid/location/Location$BearingDistanceCache;D)D
-HSPLandroid/location/Location$BearingDistanceCache;->access$502(Landroid/location/Location$BearingDistanceCache;D)D
-HSPLandroid/location/Location$BearingDistanceCache;->access$602(Landroid/location/Location$BearingDistanceCache;D)D
-HSPLandroid/location/Location$BearingDistanceCache;->access$702(Landroid/location/Location$BearingDistanceCache;D)D
 HSPLandroid/location/Location;-><init>(Landroid/location/Location;)V
 HSPLandroid/location/Location;-><init>(Ljava/lang/String;)V
-HSPLandroid/location/Location;->computeDistanceAndBearing(DDDDLandroid/location/Location$BearingDistanceCache;)V
-HPLandroid/location/Location;->describeContents()I
-HSPLandroid/location/Location;->distanceTo(Landroid/location/Location;)F
+HSPLandroid/location/Location;->access$1002(Landroid/location/Location;D)D
+HSPLandroid/location/Location;->access$1102(Landroid/location/Location;I)I
+HSPLandroid/location/Location;->access$1202(Landroid/location/Location;D)D
+HSPLandroid/location/Location;->access$1302(Landroid/location/Location;D)D
+HSPLandroid/location/Location;->access$1402(Landroid/location/Location;D)D
+HSPLandroid/location/Location;->access$1502(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$1602(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$1702(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$1802(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$1902(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$2002(Landroid/location/Location;F)F
+HSPLandroid/location/Location;->access$2102(Landroid/location/Location;Landroid/os/Bundle;)Landroid/os/Bundle;
+HSPLandroid/location/Location;->access$802(Landroid/location/Location;J)J
+HSPLandroid/location/Location;->access$902(Landroid/location/Location;J)J
 HSPLandroid/location/Location;->getAccuracy()F
 HSPLandroid/location/Location;->getAltitude()D
 HSPLandroid/location/Location;->getElapsedRealtimeNanos()J
-HPLandroid/location/Location;->getExtraLocation(Ljava/lang/String;)Landroid/location/Location;
-HSPLandroid/location/Location;->getExtras()Landroid/os/Bundle;
 HSPLandroid/location/Location;->getLatitude()D
 HSPLandroid/location/Location;->getLongitude()D
 HSPLandroid/location/Location;->getProvider()Ljava/lang/String;
@@ -9211,58 +7847,43 @@
 HSPLandroid/location/Location;->hasAccuracy()Z
 HSPLandroid/location/Location;->hasBearing()Z
 HSPLandroid/location/Location;->hasSpeed()Z
-HPLandroid/location/Location;->isComplete()Z
-HSPLandroid/location/Location;->isFromMockProvider()Z
 HSPLandroid/location/Location;->set(Landroid/location/Location;)V
-HSPLandroid/location/Location;->setAccuracy(F)V
-HSPLandroid/location/Location;->setAltitude(D)V
-HSPLandroid/location/Location;->setBearing(F)V
-HSPLandroid/location/Location;->setBearingAccuracyDegrees(F)V
-HSPLandroid/location/Location;->setElapsedRealtimeNanos(J)V
-HPLandroid/location/Location;->setExtraLocation(Ljava/lang/String;Landroid/location/Location;)V
-HSPLandroid/location/Location;->setExtras(Landroid/os/Bundle;)V
 HSPLandroid/location/Location;->setLatitude(D)V
 HSPLandroid/location/Location;->setLongitude(D)V
-HSPLandroid/location/Location;->setSpeed(F)V
-HSPLandroid/location/Location;->setSpeedAccuracyMetersPerSecond(F)V
-HSPLandroid/location/Location;->setTime(J)V
-HSPLandroid/location/Location;->setVerticalAccuracyMeters(F)V
-HSPLandroid/location/Location;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/location/LocationManager$ListenerTransport$1;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/location/LocationManager$ListenerTransport$2;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/location/LocationManager$ListenerTransport;->_handleMessage(Landroid/os/Message;)V
-HSPLandroid/location/LocationManager$ListenerTransport;->locationCallbackFinished()V
-HSPLandroid/location/LocationManager$ListenerTransport;->onLocationChanged(Landroid/location/Location;)V
-HSPLandroid/location/LocationManager$ListenerTransport;->onProviderDisabled(Ljava/lang/String;)V
+HSPLandroid/location/LocationManager$BatchedLocationCallbackManager;-><init>(Landroid/location/LocationManager;)V
+HSPLandroid/location/LocationManager$BatchedLocationCallbackManager;-><init>(Landroid/location/LocationManager;Landroid/location/LocationManager$1;)V
+HSPLandroid/location/LocationManager$GnssMeasurementsListenerManager;-><init>(Landroid/location/LocationManager;)V
+HSPLandroid/location/LocationManager$GnssMeasurementsListenerManager;-><init>(Landroid/location/LocationManager;Landroid/location/LocationManager$1;)V
+HSPLandroid/location/LocationManager$GnssNavigationMessageListenerManager;-><init>(Landroid/location/LocationManager;)V
+HSPLandroid/location/LocationManager$GnssNavigationMessageListenerManager;-><init>(Landroid/location/LocationManager;Landroid/location/LocationManager$1;)V
+HSPLandroid/location/LocationManager$GnssStatusListenerManager;-><init>(Landroid/location/LocationManager;)V
+HSPLandroid/location/LocationManager$GnssStatusListenerManager;-><init>(Landroid/location/LocationManager;Landroid/location/LocationManager$1;)V
+HSPLandroid/location/LocationManager$LocationListenerTransport;-><init>(Landroid/location/LocationManager;Landroid/location/LocationListener;)V
+HSPLandroid/location/LocationManager$LocationListenerTransport;-><init>(Landroid/location/LocationManager;Landroid/location/LocationListener;Landroid/location/LocationManager$1;)V
+HSPLandroid/location/LocationManager$LocationListenerTransport;->register(Ljava/util/concurrent/Executor;)V
 HSPLandroid/location/LocationManager;-><init>(Landroid/content/Context;Landroid/location/ILocationManager;)V
-HSPLandroid/location/LocationManager;->getProvider(Ljava/lang/String;)Landroid/location/LocationProvider;
-HSPLandroid/location/LocationManager;->getProviders(Z)Ljava/util/List;
-HSPLandroid/location/LocationManager;->isLocationEnabled()Z
+HSPLandroid/location/LocationManager;->access$600(Landroid/location/LocationManager;)Landroid/location/ILocationManager;
+HSPLandroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;
+HSPLandroid/location/LocationManager;->getListenerIdentifier(Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/location/LocationManager;->isLocationEnabledForUser(Landroid/os/UserHandle;)Z
 HSPLandroid/location/LocationManager;->isProviderEnabled(Ljava/lang/String;)Z
 HSPLandroid/location/LocationManager;->isProviderEnabledForUser(Ljava/lang/String;Landroid/os/UserHandle;)Z
 HSPLandroid/location/LocationManager;->removeUpdates(Landroid/location/LocationListener;)V
 HSPLandroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/LocationListener;Landroid/os/Looper;)V
-HSPLandroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/LocationListener;Landroid/os/Looper;Landroid/app/PendingIntent;)V
-HSPLandroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;)V
-HSPLandroid/location/LocationManager;->requestLocationUpdates(Ljava/lang/String;JFLandroid/location/LocationListener;Landroid/os/Looper;)V
-HSPLandroid/location/LocationManager;->wrapListener(Landroid/location/LocationListener;Landroid/os/Looper;)Landroid/location/LocationManager$ListenerTransport;
-HSPLandroid/location/LocationProvider;-><init>(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;)V
-HPLandroid/location/LocationProvider;->propertiesMeetCriteria(Ljava/lang/String;Lcom/android/internal/location/ProviderProperties;Landroid/location/Criteria;)Z
-HSPLandroid/location/LocationRequest$1;-><init>()V
-HSPLandroid/location/LocationRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/location/LocationRequest;
-HSPLandroid/location/LocationRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/location/LocationManager;->requestLocationUpdates(Landroid/location/LocationRequest;Ljava/util/concurrent/Executor;Landroid/location/LocationListener;)V
 HSPLandroid/location/LocationRequest;-><init>()V
-HSPLandroid/location/LocationRequest;-><init>(Landroid/location/LocationRequest;)V
+HSPLandroid/location/LocationRequest;->checkDisplacement(F)V
+HSPLandroid/location/LocationRequest;->checkProvider(Ljava/lang/String;)V
 HSPLandroid/location/LocationRequest;->checkQuality(I)V
 HSPLandroid/location/LocationRequest;->createFromDeprecatedProvider(Ljava/lang/String;JFZ)Landroid/location/LocationRequest;
 HSPLandroid/location/LocationRequest;->setFastestInterval(J)Landroid/location/LocationRequest;
 HSPLandroid/location/LocationRequest;->setInterval(J)Landroid/location/LocationRequest;
+HSPLandroid/location/LocationRequest;->setNumUpdates(I)Landroid/location/LocationRequest;
+HSPLandroid/location/LocationRequest;->setProvider(Ljava/lang/String;)Landroid/location/LocationRequest;
 HSPLandroid/location/LocationRequest;->setQuality(I)Landroid/location/LocationRequest;
+HSPLandroid/location/LocationRequest;->setSmallestDisplacement(F)Landroid/location/LocationRequest;
 HSPLandroid/location/LocationRequest;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/-$$Lambda$MediaCodecInfo$VideoCapabilities$DpgwEn-gVFZT9EtP3qcxpiA2G0M;-><init>()V
 HSPLandroid/media/-$$Lambda$MediaCodecInfo$VideoCapabilities$DpgwEn-gVFZT9EtP3qcxpiA2G0M;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/media/AudioAttributes$1;-><init>()V
 HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioAttributes;
 HSPLandroid/media/AudioAttributes$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/media/AudioAttributes$Builder;-><init>()V
@@ -9274,14 +7895,29 @@
 HSPLandroid/media/AudioAttributes$Builder;->setFlags(I)Landroid/media/AudioAttributes$Builder;
 HSPLandroid/media/AudioAttributes$Builder;->setInternalCapturePreset(I)Landroid/media/AudioAttributes$Builder;
 HSPLandroid/media/AudioAttributes$Builder;->setInternalLegacyStreamType(I)Landroid/media/AudioAttributes$Builder;
+HSPLandroid/media/AudioAttributes$Builder;->setSystemUsage(I)Landroid/media/AudioAttributes$Builder;
 HSPLandroid/media/AudioAttributes$Builder;->setUsage(I)Landroid/media/AudioAttributes$Builder;
+HSPLandroid/media/AudioAttributes;-><init>()V
+HSPLandroid/media/AudioAttributes;-><init>(Landroid/media/AudioAttributes$1;)V
 HSPLandroid/media/AudioAttributes;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/media/AudioAttributes;->equals(Ljava/lang/Object;)Z
+HSPLandroid/media/AudioAttributes;-><init>(Landroid/os/Parcel;Landroid/media/AudioAttributes$1;)V
+HSPLandroid/media/AudioAttributes;->access$000(Landroid/media/AudioAttributes;)I
+HSPLandroid/media/AudioAttributes;->access$002(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$100(Landroid/media/AudioAttributes;)I
+HSPLandroid/media/AudioAttributes;->access$102(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$200(Landroid/media/AudioAttributes;)Ljava/util/HashSet;
+HSPLandroid/media/AudioAttributes;->access$202(Landroid/media/AudioAttributes;Ljava/util/HashSet;)Ljava/util/HashSet;
+HSPLandroid/media/AudioAttributes;->access$400(Landroid/media/AudioAttributes;)I
+HSPLandroid/media/AudioAttributes;->access$402(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$502(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$572(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$576(Landroid/media/AudioAttributes;I)I
+HSPLandroid/media/AudioAttributes;->access$602(Landroid/media/AudioAttributes;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/media/AudioAttributes;->access$700(Landroid/media/AudioAttributes;)Landroid/os/Bundle;
+HSPLandroid/media/AudioAttributes;->areHapticChannelsMuted()Z
+HSPLandroid/media/AudioAttributes;->getAllFlags()I
 HSPLandroid/media/AudioAttributes;->getUsage()I
-HSPLandroid/media/AudioAttributes;->toLegacyStreamType(Landroid/media/AudioAttributes;)I
-HSPLandroid/media/AudioAttributes;->toVolumeStreamType(ZLandroid/media/AudioAttributes;)I
-HSPLandroid/media/AudioAttributes;->usageForStreamType(I)I
-HSPLandroid/media/AudioAttributes;->usageToString(I)Ljava/lang/String;
+HSPLandroid/media/AudioAttributes;->isSystemUsage(I)Z
 HSPLandroid/media/AudioAttributes;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/media/AudioDeviceCallback;-><init>()V
 HSPLandroid/media/AudioDeviceInfo;->getType()I
@@ -9290,63 +7926,59 @@
 HSPLandroid/media/AudioDevicePort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;
 HSPLandroid/media/AudioDevicePort;->type()I
 HSPLandroid/media/AudioDevicePortConfig;-><init>(Landroid/media/AudioDevicePort;IIILandroid/media/AudioGainConfig;)V
-HSPLandroid/media/AudioFocusInfo$1;-><init>()V
-HSPLandroid/media/AudioFocusInfo;-><init>(Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;IIII)V
-HSPLandroid/media/AudioFocusRequest$Builder;->build()Landroid/media/AudioFocusRequest;
-HSPLandroid/media/AudioFormat$1;-><init>()V
 HSPLandroid/media/AudioFormat$Builder;-><init>()V
 HSPLandroid/media/AudioFormat$Builder;->build()Landroid/media/AudioFormat;
 HSPLandroid/media/AudioFormat$Builder;->setChannelMask(I)Landroid/media/AudioFormat$Builder;
 HSPLandroid/media/AudioFormat$Builder;->setEncoding(I)Landroid/media/AudioFormat$Builder;
 HSPLandroid/media/AudioFormat$Builder;->setSampleRate(I)Landroid/media/AudioFormat$Builder;
-HPLandroid/media/AudioFormat;-><init>(IIII)V
 HSPLandroid/media/AudioFormat;-><init>(IIIII)V
 HSPLandroid/media/AudioFormat;->getBytesPerSample(I)I
+HSPLandroid/media/AudioFormat;->getChannelMask()I
 HSPLandroid/media/AudioHandle;-><init>(I)V
 HSPLandroid/media/AudioHandle;->equals(Ljava/lang/Object;)Z
 HSPLandroid/media/AudioHandle;->id()I
+HSPLandroid/media/AudioManager$1;-><init>(Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$2;-><init>(Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$2;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
+HSPLandroid/media/AudioManager$3;-><init>(Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$4;-><init>(Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$AudioPlaybackCallback;-><init>()V
+HSPLandroid/media/AudioManager$AudioPlaybackCallbackInfo;-><init>(Landroid/media/AudioManager$AudioPlaybackCallback;Landroid/os/Handler;)V
+HSPLandroid/media/AudioManager$NativeEventHandlerDelegate$1;-><init>(Landroid/media/AudioManager$NativeEventHandlerDelegate;Landroid/os/Looper;Landroid/media/AudioManager;Landroid/media/AudioDeviceCallback;)V
 HSPLandroid/media/AudioManager$NativeEventHandlerDelegate$1;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/media/AudioManager$NativeEventHandlerDelegate;-><init>(Landroid/media/AudioManager;Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V
 HSPLandroid/media/AudioManager$NativeEventHandlerDelegate;->getHandler()Landroid/os/Handler;
+HSPLandroid/media/AudioManager$OnAmPortUpdateListener;-><init>(Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$OnAmPortUpdateListener;-><init>(Landroid/media/AudioManager;Landroid/media/AudioManager$1;)V
 HSPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPatchListUpdate([Landroid/media/AudioPatch;)V
 HSPLandroid/media/AudioManager$OnAmPortUpdateListener;->onAudioPortListUpdate([Landroid/media/AudioPort;)V
+HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate$1;-><init>(Landroid/media/AudioManager$ServiceEventHandlerDelegate;Landroid/os/Looper;Landroid/media/AudioManager;)V
+HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate$1;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate;-><init>(Landroid/media/AudioManager;Landroid/os/Handler;)V
+HSPLandroid/media/AudioManager$ServiceEventHandlerDelegate;->getHandler()Landroid/os/Handler;
 HSPLandroid/media/AudioManager;-><init>(Landroid/content/Context;)V
-HPLandroid/media/AudioManager;->abandonAudioFocusForCall()V
+HSPLandroid/media/AudioManager;->access$1000(Landroid/media/AudioManager;)Landroid/util/ArrayMap;
+HSPLandroid/media/AudioManager;->access$1100(Landroid/media/AudioManager;Landroid/os/Handler;)V
 HSPLandroid/media/AudioManager;->broadcastDeviceListChange_sync(Landroid/os/Handler;)V
-HSPLandroid/media/AudioManager;->calcListDeltas(Ljava/util/ArrayList;Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo;
-HSPLandroid/media/AudioManager;->getDevices(I)[Landroid/media/AudioDeviceInfo;
-HSPLandroid/media/AudioManager;->getDevicesForStream(I)I
-HSPLandroid/media/AudioManager;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
-HSPLandroid/media/AudioManager;->getIdForAudioFocusListener(Landroid/media/AudioManager$OnAudioFocusChangeListener;)Ljava/lang/String;
-HSPLandroid/media/AudioManager;->getRingerMode()I
+HSPLandroid/media/AudioManager;->filterDevicePorts(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HSPLandroid/media/AudioManager;->getContext()Landroid/content/Context;
 HSPLandroid/media/AudioManager;->getRingerModeInternal()I
-HSPLandroid/media/AudioManager;->getRingtonePlayer()Landroid/media/IRingtonePlayer;
+HSPLandroid/media/AudioManager;->getService()Landroid/media/IAudioService;
 HSPLandroid/media/AudioManager;->getStreamMaxVolume(I)I
 HSPLandroid/media/AudioManager;->getStreamVolume(I)I
-HSPLandroid/media/AudioManager;->infoListFromPortList(Ljava/util/ArrayList;I)[Landroid/media/AudioDeviceInfo;
-HSPLandroid/media/AudioManager;->isAudioFocusExclusive()Z
-HSPLandroid/media/AudioManager;->isBluetoothA2dpOn()Z
-HSPLandroid/media/AudioManager;->isBluetoothScoOn()Z
-HSPLandroid/media/AudioManager;->isMicrophoneMute()Z
-HSPLandroid/media/AudioManager;->isStreamMute(I)Z
+HSPLandroid/media/AudioManager;->hasPlaybackCallback_sync(Landroid/media/AudioManager$AudioPlaybackCallback;)Z
+HSPLandroid/media/AudioManager;->isInputDevice(I)Z
 HSPLandroid/media/AudioManager;->isVolumeFixed()Z
 HSPLandroid/media/AudioManager;->isWiredHeadsetOn()Z
+HSPLandroid/media/AudioManager;->listAudioDevicePorts(Ljava/util/ArrayList;)I
 HSPLandroid/media/AudioManager;->playSoundEffect(I)V
 HSPLandroid/media/AudioManager;->preDispatchKeyEvent(Landroid/view/KeyEvent;I)V
+HSPLandroid/media/AudioManager;->querySoundEffectsEnabled(I)Z
 HSPLandroid/media/AudioManager;->registerAudioDeviceCallback(Landroid/media/AudioDeviceCallback;Landroid/os/Handler;)V
-HSPLandroid/media/AudioManager;->registerAudioFocusRequest(Landroid/media/AudioFocusRequest;)V
+HSPLandroid/media/AudioManager;->registerAudioPlaybackCallback(Landroid/media/AudioManager$AudioPlaybackCallback;Landroid/os/Handler;)V
 HSPLandroid/media/AudioManager;->registerAudioPortUpdateListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
-HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioFocusRequest;Landroid/media/audiopolicy/AudioPolicy;)I
-HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;II)I
-HSPLandroid/media/AudioManager;->requestAudioFocus(Landroid/media/AudioManager$OnAudioFocusChangeListener;Landroid/media/AudioAttributes;IILandroid/media/audiopolicy/AudioPolicy;)I
-HPLandroid/media/AudioManager;->requestAudioFocusForCall(II)V
-HSPLandroid/media/AudioManager;->resetAudioPortGeneration()I
-HSPLandroid/media/AudioManager;->setMode(I)V
-HSPLandroid/media/AudioManager;->setParameter(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/media/AudioManager;->setContext(Landroid/content/Context;)V
 HSPLandroid/media/AudioManager;->setParameters(Ljava/lang/String;)V
-HSPLandroid/media/AudioManager;->setSpeakerphoneOn(Z)V
-HSPLandroid/media/AudioManager;->updateAudioPortCache(Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)I
-HSPLandroid/media/AudioManager;->updatePortConfig(Landroid/media/AudioPortConfig;Ljava/util/ArrayList;)Landroid/media/AudioPortConfig;
 HSPLandroid/media/AudioMixPort;-><init>(Landroid/media/AudioHandle;IILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V
 HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioMixPortConfig;
 HSPLandroid/media/AudioMixPort;->buildConfig(IIILandroid/media/AudioGainConfig;)Landroid/media/AudioPortConfig;
@@ -9354,16 +7986,6 @@
 HSPLandroid/media/AudioPatch;-><init>(Landroid/media/AudioHandle;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)V
 HSPLandroid/media/AudioPatch;->sinks()[Landroid/media/AudioPortConfig;
 HSPLandroid/media/AudioPatch;->sources()[Landroid/media/AudioPortConfig;
-HSPLandroid/media/AudioPlaybackConfiguration$1;-><init>()V
-HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->binderDied()V
-HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->monitorDeath()V
-HSPLandroid/media/AudioPlaybackConfiguration$IPlayerShell;->release()V
-HSPLandroid/media/AudioPlaybackConfiguration;-><init>(Landroid/media/PlayerBase$PlayerIdCard;III)V
-HPLandroid/media/AudioPlaybackConfiguration;->anonymizedCopy(Landroid/media/AudioPlaybackConfiguration;)Landroid/media/AudioPlaybackConfiguration;
-HSPLandroid/media/AudioPlaybackConfiguration;->handleAudioAttributesEvent(Landroid/media/AudioAttributes;)Z
-HSPLandroid/media/AudioPlaybackConfiguration;->handleStateEvent(I)Z
-HSPLandroid/media/AudioPlaybackConfiguration;->init()V
-HPLandroid/media/AudioPlaybackConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/media/AudioPort;-><init>(Landroid/media/AudioHandle;ILjava/lang/String;[I[I[I[I[Landroid/media/AudioGain;)V
 HSPLandroid/media/AudioPort;->handle()Landroid/media/AudioHandle;
 HSPLandroid/media/AudioPort;->id()I
@@ -9374,271 +7996,126 @@
 HSPLandroid/media/AudioPortConfig;->gain()Landroid/media/AudioGainConfig;
 HSPLandroid/media/AudioPortConfig;->port()Landroid/media/AudioPort;
 HSPLandroid/media/AudioPortConfig;->samplingRate()I
+HSPLandroid/media/AudioPortEventHandler$1;-><init>(Landroid/media/AudioPortEventHandler;Landroid/os/Looper;)V
 HSPLandroid/media/AudioPortEventHandler$1;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/media/AudioPortEventHandler;-><init>()V
-HSPLandroid/media/AudioPortEventHandler;->handler()Landroid/os/Handler;
+HSPLandroid/media/AudioPortEventHandler;->access$000(Landroid/media/AudioPortEventHandler;)Ljava/lang/Object;
+HSPLandroid/media/AudioPortEventHandler;->access$100(Landroid/media/AudioPortEventHandler;)Ljava/util/ArrayList;
 HSPLandroid/media/AudioPortEventHandler;->init()V
-HSPLandroid/media/AudioPortEventHandler;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
 HSPLandroid/media/AudioPortEventHandler;->registerListener(Landroid/media/AudioManager$OnAudioPortUpdateListener;)V
-HSPLandroid/media/AudioRecord;-><init>(Landroid/media/AudioAttributes;Landroid/media/AudioFormat;II)V
-HSPLandroid/media/AudioRecord;->audioBuffSizeCheck(I)V
-HSPLandroid/media/AudioRecord;->audioParamCheck(III)V
-HSPLandroid/media/AudioRecord;->getChannelMaskFromLegacyConfig(IZ)I
-HSPLandroid/media/AudioRecord;->handleFullVolumeRec(Z)V
-HSPLandroid/media/AudioRecord;->release()V
-HSPLandroid/media/AudioRecord;->startRecording()V
-HSPLandroid/media/AudioRecord;->stop()V
-PLandroid/media/AudioRecordingConfiguration$1;-><init>()V
-PLandroid/media/AudioRecordingConfiguration;-><init>(IIILandroid/media/AudioFormat;Landroid/media/AudioFormat;ILjava/lang/String;IZI[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;)V
-HSPLandroid/media/AudioRoutesInfo$1;-><init>()V
 HSPLandroid/media/AudioRoutesInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/AudioRoutesInfo;
 HSPLandroid/media/AudioRoutesInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/AudioRoutesInfo;-><init>(Landroid/media/AudioRoutesInfo;)V
-HSPLandroid/media/AudioRoutesInfo;->toString()Ljava/lang/String;
-HSPLandroid/media/AudioRoutesInfo;->typeToString(I)Ljava/lang/String;
-HSPLandroid/media/AudioRoutesInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/AudioSystem;->getOutputDeviceName(I)Ljava/lang/String;
-HSPLandroid/media/AudioSystem;->getPlatformType(Landroid/content/Context;)I
-HSPLandroid/media/AudioSystem;->isSingleVolume(Landroid/content/Context;)Z
-HPLandroid/media/AudioSystem;->recordingCallbackFromNative(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;I)V
-HSPLandroid/media/AudioSystem;->setErrorCallback(Landroid/media/AudioSystem$ErrorCallback;)V
-HSPLandroid/media/AudioSystem;->setRecordingCallback(Landroid/media/AudioSystem$AudioRecordingCallback;)V
-HSPLandroid/media/AudioSystem;->setStreamVolumeIndexAS(III)I
-HSPLandroid/media/AudioTrack;->getNativeOutputSampleRate(I)I
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;-><init>(Ljava/io/InputStream;)V
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->read()I
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->readByte()B
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->readInt()I
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->readShort()S
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->readUnsignedShort()I
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->seek(J)V
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->setByteOrder(Ljava/nio/ByteOrder;)V
-HSPLandroid/media/ExifInterface$ByteOrderedDataInputStream;->skipBytes(I)I
-HSPLandroid/media/ExifInterface$ExifAttribute;->createULong([JLjava/nio/ByteOrder;)Landroid/media/ExifInterface$ExifAttribute;
-HSPLandroid/media/ExifInterface$ExifAttribute;->createUShort([ILjava/nio/ByteOrder;)Landroid/media/ExifInterface$ExifAttribute;
-HSPLandroid/media/ExifInterface$ExifAttribute;->getIntValue(Ljava/nio/ByteOrder;)I
-HSPLandroid/media/ExifInterface$ExifAttribute;->getStringValue(Ljava/nio/ByteOrder;)Ljava/lang/String;
-HSPLandroid/media/ExifInterface$ExifAttribute;->getValue(Ljava/nio/ByteOrder;)Ljava/lang/Object;
-HSPLandroid/media/ExifInterface$ExifTag;-><init>(Ljava/lang/String;IIILandroid/media/ExifInterface$1;)V
-HSPLandroid/media/ExifInterface$ExifTag;-><init>(Ljava/lang/String;IILandroid/media/ExifInterface$1;)V
-HSPLandroid/media/ExifInterface;-><init>(Ljava/io/InputStream;)V
-HSPLandroid/media/ExifInterface;->addDefaultValuesForCompatibility()V
-HSPLandroid/media/ExifInterface;->getAttribute(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/media/ExifInterface;->getAttributeInt(Ljava/lang/String;I)I
-HSPLandroid/media/ExifInterface;->getExifAttribute(Ljava/lang/String;)Landroid/media/ExifInterface$ExifAttribute;
-HSPLandroid/media/ExifInterface;->getJpegAttributes(Landroid/media/ExifInterface$ByteOrderedDataInputStream;II)V
-HSPLandroid/media/ExifInterface;->getMimeType(Ljava/io/BufferedInputStream;)I
-HSPLandroid/media/ExifInterface;->handleThumbnailFromJfif(Landroid/media/ExifInterface$ByteOrderedDataInputStream;Ljava/util/HashMap;)V
-HSPLandroid/media/ExifInterface;->isHeifFormat([B)Z
-HSPLandroid/media/ExifInterface;->isOrfFormat([B)Z
-HSPLandroid/media/ExifInterface;->loadAttributes(Ljava/io/InputStream;)V
-HSPLandroid/media/ExifInterface;->readByteOrder(Landroid/media/ExifInterface$ByteOrderedDataInputStream;)Ljava/nio/ByteOrder;
-HSPLandroid/media/ExifInterface;->setThumbnailData(Landroid/media/ExifInterface$ByteOrderedDataInputStream;)V
-HSPLandroid/media/IAudioFocusDispatcher$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IAudioFocusDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioFocusDispatcher;
-HSPLandroid/media/IAudioRoutesObserver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IAudioRoutesObserver$Stub$Proxy;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
+HSPLandroid/media/AudioRoutesInfo;-><init>()V
+HSPLandroid/media/AudioRoutesInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/media/IAudioFocusDispatcher$Stub;-><init>()V
 HSPLandroid/media/IAudioRoutesObserver$Stub;-><init>()V
 HSPLandroid/media/IAudioRoutesObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IAudioRoutesObserver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioRoutesObserver;
-PLandroid/media/IAudioServerStateDispatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/media/IAudioServerStateDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioServerStateDispatcher;
-HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeExternal()I
-HSPLandroid/media/IAudioService$Stub$Proxy;->getRingerModeInternal()I
+HSPLandroid/media/IAudioServerStateDispatcher$Stub;-><init>()V
+HSPLandroid/media/IAudioService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMaxVolume(I)I
 HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamVolume(I)I
-HSPLandroid/media/IAudioService$Stub$Proxy;->isBluetoothScoOn()Z
-HSPLandroid/media/IAudioService$Stub$Proxy;->isCameraSoundForced()Z
-HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamMute(I)Z
 HSPLandroid/media/IAudioService$Stub$Proxy;->playSoundEffect(I)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->playerAttributes(ILandroid/media/AudioAttributes;)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->playerEvent(II)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->playerHasOpPlayAudio(IZ)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->releasePlayer(I)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
 HSPLandroid/media/IAudioService$Stub$Proxy;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
 HSPLandroid/media/IAudioService$Stub$Proxy;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
-HSPLandroid/media/IAudioService$Stub;-><init>()V
 HSPLandroid/media/IAudioService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IAudioService;
-HPLandroid/media/IAudioService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/media/IAudioService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/IMediaResourceMonitor$Stub;-><init>()V
-HPLandroid/media/IMediaResourceMonitor$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/IMediaRouterClient$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onRestoreRoute()V
-HPLandroid/media/IMediaRouterClient$Stub$Proxy;->onStateChanged()V
+HSPLandroid/media/IMediaRouterClient$Stub;-><init>()V
 HSPLandroid/media/IMediaRouterClient$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IMediaRouterClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/media/IMediaRouterService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/media/IMediaRouterService$Stub$Proxy;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
 HSPLandroid/media/IMediaRouterService$Stub$Proxy;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
 HSPLandroid/media/IMediaRouterService$Stub$Proxy;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
 HSPLandroid/media/IMediaRouterService$Stub$Proxy;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
 HSPLandroid/media/IMediaRouterService$Stub$Proxy;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
-HSPLandroid/media/IMediaRouterService$Stub;-><init>()V
-HSPLandroid/media/IMediaRouterService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/IPlaybackConfigDispatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IPlaybackConfigDispatcher$Stub$Proxy;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
+HSPLandroid/media/IMediaRouterService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IMediaRouterService;
 HSPLandroid/media/IPlaybackConfigDispatcher$Stub;-><init>()V
 HSPLandroid/media/IPlaybackConfigDispatcher$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IPlaybackConfigDispatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlaybackConfigDispatcher;
-HSPLandroid/media/IPlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/media/IPlayer$Stub;-><init>()V
 HSPLandroid/media/IPlayer$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/media/IPlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IPlayer;
 HSPLandroid/media/IRecordingConfigDispatcher$Stub;-><init>()V
-HSPLandroid/media/IRemoteVolumeController$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IRemoteVolumeController$Stub$Proxy;->updateRemoteController(Landroid/media/session/MediaSession$Token;)V
-HSPLandroid/media/IRemoteVolumeController$Stub;-><init>()V
-HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->playAsync(Landroid/net/Uri;Landroid/os/UserHandle;ZLandroid/media/AudioAttributes;)V
-HSPLandroid/media/IRingtonePlayer$Stub$Proxy;->stopAsync()V
-HSPLandroid/media/IRingtonePlayer$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IRingtonePlayer;
-HSPLandroid/media/IVolumeController$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IVolumeController$Stub$Proxy;->setLayoutDirection(I)V
-HSPLandroid/media/IVolumeController$Stub$Proxy;->volumeChanged(II)V
-HSPLandroid/media/IVolumeController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/IVolumeController;
-HSPLandroid/media/MediaCodec$BufferInfo;-><init>()V
-HSPLandroid/media/MediaCodec$BufferInfo;->set(IIJI)V
-HSPLandroid/media/MediaCodec$BufferMap;->clear()V
-HSPLandroid/media/MediaCodec$BufferMap;->remove(I)V
-HSPLandroid/media/MediaCodec$CryptoInfo;-><init>()V
-HSPLandroid/media/MediaCodec;-><init>(Ljava/lang/String;ZZ)V
-HSPLandroid/media/MediaCodec;->cacheBuffers(Z)V
-HSPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;I)V
-HSPLandroid/media/MediaCodec;->configure(Landroid/media/MediaFormat;Landroid/view/Surface;Landroid/media/MediaCrypto;Landroid/os/IHwBinder;I)V
-HSPLandroid/media/MediaCodec;->dequeueInputBuffer(J)I
-HSPLandroid/media/MediaCodec;->dequeueOutputBuffer(Landroid/media/MediaCodec$BufferInfo;J)I
-HSPLandroid/media/MediaCodec;->finalize()V
-HSPLandroid/media/MediaCodec;->freeAllTrackedBuffers()V
-HSPLandroid/media/MediaCodec;->lockAndGetContext()J
-HSPLandroid/media/MediaCodec;->queueInputBuffer(IIIJI)V
-HSPLandroid/media/MediaCodec;->release()V
-HSPLandroid/media/MediaCodec;->releaseOutputBuffer(IZ)V
-HSPLandroid/media/MediaCodec;->setAndUnlockContext(J)V
-HSPLandroid/media/MediaCodec;->start()V
-HSPLandroid/media/MediaCodec;->stop()V
+HSPLandroid/media/IRemoteVolumeObserver$Stub;-><init>()V
+HSPLandroid/media/MediaCodecInfo$AudioCapabilities;-><init>()V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLevelLimits()V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->applyLimits(ILandroid/util/Range;)V
+HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$AudioCapabilities;
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->createDiscreteSampleRates()V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->getDefaultFormat(Landroid/media/MediaFormat;)V
+HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->initWithPlatformLimits()V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->limitSampleRates([I)V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->limitSampleRates([Landroid/util/Range;)V
 HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V
+HSPLandroid/media/MediaCodecInfo$AudioCapabilities;->supports(Ljava/lang/Integer;Ljava/lang/Integer;)Z
 HSPLandroid/media/MediaCodecInfo$CodecCapabilities;-><init>([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZLandroid/media/MediaFormat;Landroid/media/MediaFormat;)V
 HSPLandroid/media/MediaCodecInfo$CodecCapabilities;-><init>([Landroid/media/MediaCodecInfo$CodecProfileLevel;[IZLjava/util/Map;Ljava/util/Map;)V
+HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->checkFeature(Ljava/lang/String;I)Z
 HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->getMimeType()Ljava/lang/String;
+HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->getValidFeatures()[Landroid/media/MediaCodecInfo$Feature;
+HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isEncoder()Z
+HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isFeatureRequired(Ljava/lang/String;)Z
+HSPLandroid/media/MediaCodecInfo$CodecCapabilities;->isRegular()Z
+HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;-><init>()V
 HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->applyLevelLimits()V
+HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$EncoderCapabilities;
 HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->getDefaultFormat(Landroid/media/MediaFormat;)V
+HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V
+HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->parseBitrateMode(Ljava/lang/String;)I
 HSPLandroid/media/MediaCodecInfo$EncoderCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V
-HSPLandroid/media/MediaCodecInfo$Feature;-><init>(Ljava/lang/String;IZ)V
-HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;-><init>(III)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;-><init>(IIIILandroid/util/Size;)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;-><init>(Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;Landroid/util/Size;)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;->covers(Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;)Z
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;->getCommonBlockSize(Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;)Landroid/util/Size;
-HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;->toString()Ljava/lang/String;
+HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;->getMaxMacroBlocks()I
+HSPLandroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;->saturateLongToInt(J)I
+HSPLandroid/media/MediaCodecInfo$VideoCapabilities;-><init>()V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyAlignment(II)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyBlockLimits(IILandroid/util/Range;Landroid/util/Range;Landroid/util/Range;)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyLevelLimits()V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyMacroBlockLimits(IIIIIJIIII)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->applyMacroBlockLimits(IIIJIIII)V
+HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->create(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)Landroid/media/MediaCodecInfo$VideoCapabilities;
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->getMeasuredFrameRates(Ljava/util/Map;)Ljava/util/Map;
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->getPerformancePoints(Ljava/util/Map;)Ljava/util/List;
+HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->init(Landroid/media/MediaFormat;Landroid/media/MediaCodecInfo$CodecCapabilities;)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->initWithPlatformLimits()V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->lambda$getPerformancePoints$0(Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;)I
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->parseFromInfo(Landroid/media/MediaFormat;)V
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->parseWidthHeightRanges(Ljava/lang/Object;)Landroid/util/Pair;
 HSPLandroid/media/MediaCodecInfo$VideoCapabilities;->updateLimits()V
 HSPLandroid/media/MediaCodecInfo;-><init>(Ljava/lang/String;Ljava/lang/String;I[Landroid/media/MediaCodecInfo$CodecCapabilities;)V
+HSPLandroid/media/MediaCodecInfo;->access$000()Landroid/util/Range;
+HSPLandroid/media/MediaCodecInfo;->access$200(ILjava/lang/String;)I
+HSPLandroid/media/MediaCodecInfo;->access$300()Landroid/util/Range;
+HSPLandroid/media/MediaCodecInfo;->access$400()Landroid/util/Range;
+HSPLandroid/media/MediaCodecInfo;->access$500()Landroid/util/Range;
+HSPLandroid/media/MediaCodecInfo;->access$600()Landroid/util/Range;
+HSPLandroid/media/MediaCodecInfo;->access$700()Landroid/util/Range;
 HSPLandroid/media/MediaCodecInfo;->checkPowerOfTwo(ILjava/lang/String;)I
+HSPLandroid/media/MediaCodecInfo;->getName()Ljava/lang/String;
 HSPLandroid/media/MediaCodecInfo;->getSupportedTypes()[Ljava/lang/String;
+HSPLandroid/media/MediaCodecInfo;->isEncoder()Z
 HSPLandroid/media/MediaCodecInfo;->makeRegular()Landroid/media/MediaCodecInfo;
 HSPLandroid/media/MediaCodecList;-><init>(I)V
 HSPLandroid/media/MediaCodecList;->getCodecInfos()[Landroid/media/MediaCodecInfo;
-HSPLandroid/media/MediaCodecList;->getGlobalSettings()Ljava/util/Map;
-HSPLandroid/media/MediaCodecList;->getNewCodecInfoAt(I)Landroid/media/MediaCodecInfo;
-HSPLandroid/media/MediaCodecList;->initCodecList()V
-HSPLandroid/media/MediaDescription$1;-><init>()V
-HSPLandroid/media/MediaDescription$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaDescription;
-HSPLandroid/media/MediaDescription$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/MediaDescription;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/media/MediaDescription;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/MediaDrm;->getMaxSecurityLevel()I
-HSPLandroid/media/MediaFormat;->getInteger(Ljava/lang/String;)I
+HSPLandroid/media/MediaFormat;-><init>()V
+HSPLandroid/media/MediaFormat;-><init>(Ljava/util/Map;)V
+HSPLandroid/media/MediaFormat;->containsKey(Ljava/lang/String;)Z
+HSPLandroid/media/MediaFormat;->getMap()Ljava/util/Map;
 HSPLandroid/media/MediaFormat;->getString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/media/MediaFormat;->setInteger(Ljava/lang/String;I)V
-HSPLandroid/media/MediaMetadata$1;-><init>()V
+HSPLandroid/media/MediaFormat;->setString(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaMetadata;
 HSPLandroid/media/MediaMetadata$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/media/MediaMetadata$Builder;-><init>(Landroid/media/MediaMetadata;)V
-HSPLandroid/media/MediaMetadata$Builder;->build()Landroid/media/MediaMetadata;
-HPLandroid/media/MediaMetadata;->size()I
-HSPLandroid/media/MediaMetadata;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/MediaParceledListSlice$2;-><init>()V
-HSPLandroid/media/MediaParceledListSlice$2;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaParceledListSlice;
-HSPLandroid/media/MediaParceledListSlice$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/MediaParceledListSlice;-><init>(Landroid/os/Parcel;)V
-HPLandroid/media/MediaParceledListSlice;-><init>(Ljava/util/List;)V
-HSPLandroid/media/MediaParceledListSlice;->getList()Ljava/util/List;
-HSPLandroid/media/MediaParceledListSlice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/MediaPlayer$2$1;->getSubtitleLooper()Landroid/os/Looper;
-HSPLandroid/media/MediaPlayer$2$1;->setSubtitleWidget(Landroid/media/SubtitleTrack$RenderingWidget;)V
-HSPLandroid/media/MediaPlayer$2;->run()V
-HSPLandroid/media/MediaPlayer$7;->onCompletion(Landroid/media/MediaPlayer;)V
-HSPLandroid/media/MediaPlayer$EventHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/media/MediaPlayer$TimeProvider$EventHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/media/MediaPlayer$TimeProvider;-><init>(Landroid/media/MediaPlayer;)V
-HSPLandroid/media/MediaPlayer$TimeProvider;->close()V
-HSPLandroid/media/MediaPlayer$TimeProvider;->finalize()V
-HSPLandroid/media/MediaPlayer$TimeProvider;->getCurrentTimeUs(ZZ)J
-HSPLandroid/media/MediaPlayer$TimeProvider;->notifySeek()V
-HSPLandroid/media/MediaPlayer$TimeProvider;->onPaused(Z)V
-HSPLandroid/media/MediaPlayer$TimeProvider;->scheduleNotification(IJ)V
-HSPLandroid/media/MediaPlayer$TrackInfo$1;-><init>()V
-HSPLandroid/media/MediaPlayer$TrackInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaPlayer$TrackInfo;
-HSPLandroid/media/MediaPlayer$TrackInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/MediaPlayer$TrackInfo$1;->newArray(I)[Landroid/media/MediaPlayer$TrackInfo;
-HSPLandroid/media/MediaPlayer$TrackInfo$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/media/MediaPlayer$TrackInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/media/MediaPlayer$TrackInfo;->getTrackType()I
-HSPLandroid/media/MediaPlayer;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/media/MediaPlayer;-><init>()V
-HSPLandroid/media/MediaPlayer;->attemptDataSource(Landroid/content/ContentResolver;Landroid/net/Uri;)Z
-HSPLandroid/media/MediaPlayer;->cleanDrmObj()V
-HSPLandroid/media/MediaPlayer;->finalize()V
-HSPLandroid/media/MediaPlayer;->getInbandTrackInfo()[Landroid/media/MediaPlayer$TrackInfo;
-HSPLandroid/media/MediaPlayer;->getMediaTimeProvider()Landroid/media/MediaTimeProvider;
-HSPLandroid/media/MediaPlayer;->invoke(Landroid/os/Parcel;Landroid/os/Parcel;)V
-HSPLandroid/media/MediaPlayer;->playerSetAuxEffectSendLevel(ZF)I
-HSPLandroid/media/MediaPlayer;->playerSetVolume(ZFF)V
-HSPLandroid/media/MediaPlayer;->populateInbandTracks()V
-HSPLandroid/media/MediaPlayer;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-HSPLandroid/media/MediaPlayer;->prepare()V
-HSPLandroid/media/MediaPlayer;->release()V
-HSPLandroid/media/MediaPlayer;->reset()V
-HSPLandroid/media/MediaPlayer;->resetDrmState()V
-HSPLandroid/media/MediaPlayer;->setAudioAttributes(Landroid/media/AudioAttributes;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/Context;Landroid/net/Uri;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/Context;Landroid/net/Uri;Ljava/util/Map;Ljava/util/List;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Landroid/content/res/AssetFileDescriptor;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/io/FileDescriptor;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/io/FileDescriptor;JJ)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;Ljava/util/Map;Ljava/util/List;)V
-HSPLandroid/media/MediaPlayer;->setDataSource(Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;Ljava/util/List;)V
-HSPLandroid/media/MediaPlayer;->setOnCompletionListener(Landroid/media/MediaPlayer$OnCompletionListener;)V
-HSPLandroid/media/MediaPlayer;->setSubtitleAnchor()V
-HSPLandroid/media/MediaPlayer;->setVolume(F)V
-HSPLandroid/media/MediaPlayer;->setVolume(FF)V
-HSPLandroid/media/MediaPlayer;->start()V
-HSPLandroid/media/MediaPlayer;->stayAwake(Z)V
-HPLandroid/media/MediaRecorder;->isSystemOnlyAudioSource(I)Z
 HSPLandroid/media/MediaRouter$Callback;-><init>()V
+HSPLandroid/media/MediaRouter$CallbackInfo;-><init>(Landroid/media/MediaRouter$Callback;IILandroid/media/MediaRouter;)V
 HSPLandroid/media/MediaRouter$CallbackInfo;->filterRouteEvent(I)Z
 HSPLandroid/media/MediaRouter$CallbackInfo;->filterRouteEvent(Landroid/media/MediaRouter$RouteInfo;)Z
+HSPLandroid/media/MediaRouter$RouteCategory;-><init>(IIZ)V
+HSPLandroid/media/MediaRouter$RouteCategory;-><init>(Ljava/lang/CharSequence;IZ)V
 HSPLandroid/media/MediaRouter$RouteCategory;->getName()Ljava/lang/CharSequence;
 HSPLandroid/media/MediaRouter$RouteCategory;->getName(Landroid/content/res/Resources;)Ljava/lang/CharSequence;
 HSPLandroid/media/MediaRouter$RouteCategory;->isGroupable()Z
 HSPLandroid/media/MediaRouter$RouteCategory;->toString()Ljava/lang/String;
+HSPLandroid/media/MediaRouter$RouteInfo$1;-><init>(Landroid/media/MediaRouter$RouteInfo;)V
 HSPLandroid/media/MediaRouter$RouteInfo;-><init>(Landroid/media/MediaRouter$RouteCategory;)V
 HSPLandroid/media/MediaRouter$RouteInfo;->choosePresentationDisplay()Landroid/view/Display;
 HSPLandroid/media/MediaRouter$RouteInfo;->getCategory()Landroid/media/MediaRouter$RouteCategory;
@@ -9661,15 +8138,11 @@
 HSPLandroid/media/MediaRouter$RouteInfo;->isSelected()Z
 HSPLandroid/media/MediaRouter$RouteInfo;->matchesTypes(I)Z
 HSPLandroid/media/MediaRouter$RouteInfo;->resolveStatusCode()Z
-HSPLandroid/media/MediaRouter$RouteInfo;->select()V
 HSPLandroid/media/MediaRouter$RouteInfo;->toString()Ljava/lang/String;
 HSPLandroid/media/MediaRouter$RouteInfo;->updatePresentationDisplay()Z
-HSPLandroid/media/MediaRouter$Static$1$1;->run()V
-HSPLandroid/media/MediaRouter$Static$1;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
-HSPLandroid/media/MediaRouter$Static$Client$1;->run()V
-HSPLandroid/media/MediaRouter$Static$Client$2;->run()V
-HSPLandroid/media/MediaRouter$Static$Client;->onRestoreRoute()V
-HSPLandroid/media/MediaRouter$Static$Client;->onStateChanged()V
+HSPLandroid/media/MediaRouter$SimpleCallback;-><init>()V
+HSPLandroid/media/MediaRouter$Static$1;-><init>(Landroid/media/MediaRouter$Static;)V
+HSPLandroid/media/MediaRouter$Static$Client;-><init>(Landroid/media/MediaRouter$Static;)V
 HSPLandroid/media/MediaRouter$Static;-><init>(Landroid/content/Context;)V
 HSPLandroid/media/MediaRouter$Static;->getAllPresentationDisplays()[Landroid/view/Display;
 HSPLandroid/media/MediaRouter$Static;->isBluetoothA2dpOn()Z
@@ -9684,102 +8157,48 @@
 HSPLandroid/media/MediaRouter$Static;->updateClientState()V
 HSPLandroid/media/MediaRouter$Static;->updateDiscoveryRequest()V
 HSPLandroid/media/MediaRouter$Static;->updatePresentationDisplays(I)V
+HSPLandroid/media/MediaRouter$VolumeCallback;-><init>()V
+HSPLandroid/media/MediaRouter$VolumeChangeReceiver;-><init>()V
 HSPLandroid/media/MediaRouter$VolumeChangeReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLandroid/media/MediaRouter$WifiDisplayStatusChangedReceiver;-><init>()V
 HSPLandroid/media/MediaRouter;-><init>(Landroid/content/Context;)V
 HSPLandroid/media/MediaRouter;->addCallback(ILandroid/media/MediaRouter$Callback;I)V
 HSPLandroid/media/MediaRouter;->addRouteStatic(Landroid/media/MediaRouter$RouteInfo;)V
 HSPLandroid/media/MediaRouter;->createRouteCategory(Ljava/lang/CharSequence;Z)Landroid/media/MediaRouter$RouteCategory;
 HSPLandroid/media/MediaRouter;->dispatchRouteAdded(Landroid/media/MediaRouter$RouteInfo;)V
-HSPLandroid/media/MediaRouter;->dispatchRouteChanged(Landroid/media/MediaRouter$RouteInfo;I)V
-HSPLandroid/media/MediaRouter;->dispatchRouteRemoved(Landroid/media/MediaRouter$RouteInfo;)V
 HSPLandroid/media/MediaRouter;->dispatchRouteSelected(ILandroid/media/MediaRouter$RouteInfo;)V
-HSPLandroid/media/MediaRouter;->dispatchRouteUnselected(ILandroid/media/MediaRouter$RouteInfo;)V
-HSPLandroid/media/MediaRouter;->dispatchRouteVolumeChanged(Landroid/media/MediaRouter$RouteInfo;)V
+HSPLandroid/media/MediaRouter;->findCallbackInfo(Landroid/media/MediaRouter$Callback;)I
 HSPLandroid/media/MediaRouter;->getDefaultRoute()Landroid/media/MediaRouter$RouteInfo;
 HSPLandroid/media/MediaRouter;->getRouteAt(I)Landroid/media/MediaRouter$RouteInfo;
 HSPLandroid/media/MediaRouter;->getRouteCount()I
 HSPLandroid/media/MediaRouter;->getSelectedRoute(I)Landroid/media/MediaRouter$RouteInfo;
-HSPLandroid/media/MediaRouter;->removeCallback(Landroid/media/MediaRouter$Callback;)V
-HSPLandroid/media/MediaRouter;->removeRouteStatic(Landroid/media/MediaRouter$RouteInfo;)V
 HSPLandroid/media/MediaRouter;->selectDefaultRouteStatic()V
 HSPLandroid/media/MediaRouter;->selectRoute(ILandroid/media/MediaRouter$RouteInfo;)V
 HSPLandroid/media/MediaRouter;->selectRouteStatic(ILandroid/media/MediaRouter$RouteInfo;Z)V
-HSPLandroid/media/MediaRouter;->systemVolumeChanged(I)V
 HSPLandroid/media/MediaRouter;->typesToString(I)Ljava/lang/String;
 HSPLandroid/media/MediaRouter;->updateWifiDisplayStatus(Landroid/hardware/display/WifiDisplayStatus;)V
-HSPLandroid/media/MediaRouterClientState$1;-><init>()V
-HSPLandroid/media/MediaRouterClientState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/MediaRouterClientState;
-HSPLandroid/media/MediaRouterClientState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/MediaRouterClientState$RouteInfo$1;-><init>()V
-PLandroid/media/MediaRouterClientState;-><init>()V
-HSPLandroid/media/MediaTimestamp;-><init>(JJF)V
-HSPLandroid/media/MicrophoneInfo$Coordinate3F;-><init>(FFF)V
-HSPLandroid/media/PlaybackParams$1;-><init>()V
-HSPLandroid/media/PlayerBase$IAppOpsCallbackWrapper;->opChanged(IILjava/lang/String;)V
-HSPLandroid/media/PlayerBase$PlayerIdCard$1;-><init>()V
-HSPLandroid/media/PlayerBase$PlayerIdCard$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/PlayerBase$PlayerIdCard;
-HSPLandroid/media/PlayerBase$PlayerIdCard$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/PlayerBase$PlayerIdCard;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/media/PlayerBase$IPlayerWrapper;-><init>(Landroid/media/PlayerBase;)V
+HSPLandroid/media/PlayerBase$PlayerIdCard;-><init>(ILandroid/media/AudioAttributes;Landroid/media/IPlayer;)V
 HSPLandroid/media/PlayerBase$PlayerIdCard;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/media/PlayerBase;-><init>(Landroid/media/AudioAttributes;I)V
 HSPLandroid/media/PlayerBase;->baseRegisterPlayer()V
 HSPLandroid/media/PlayerBase;->baseRelease()V
-HSPLandroid/media/PlayerBase;->baseSetVolume(FF)V
-HSPLandroid/media/PlayerBase;->baseStart()V
-HSPLandroid/media/PlayerBase;->baseStop()V
-HSPLandroid/media/PlayerBase;->baseUpdateAudioAttributes(Landroid/media/AudioAttributes;)V
-HSPLandroid/media/PlayerBase;->deprecateStreamTypeForPlayback(ILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/media/PlayerBase;->getStartDelayMs()I
+HSPLandroid/media/PlayerBase;->getService()Landroid/media/IAudioService;
 HSPLandroid/media/PlayerBase;->isRestricted_sync()Z
-HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio()V
-HSPLandroid/media/PlayerBase;->updateAppOpsPlayAudio_sync(Z)V
-HSPLandroid/media/PlayerBase;->updatePlayerVolume()V
-HSPLandroid/media/PlayerBase;->updateState(I)V
-HSPLandroid/media/Rating$1;-><init>()V
-HSPLandroid/media/Rating$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/Rating;
-HSPLandroid/media/Rating$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/Ringtone;-><init>(Landroid/content/Context;Z)V
-HSPLandroid/media/Ringtone;->applyPlaybackProperties_sync()V
-HSPLandroid/media/Ringtone;->destroyLocalPlayer()V
-HSPLandroid/media/Ringtone;->finalize()V
-HSPLandroid/media/Ringtone;->play()V
-HSPLandroid/media/Ringtone;->setAudioAttributes(Landroid/media/AudioAttributes;)V
-PLandroid/media/Ringtone;->setStreamType(I)V
-HSPLandroid/media/Ringtone;->setUri(Landroid/net/Uri;Landroid/media/VolumeShaper$Configuration;)V
-HSPLandroid/media/RingtoneManager;->getActualDefaultRingtoneUri(Landroid/content/Context;I)Landroid/net/Uri;
-HSPLandroid/media/RingtoneManager;->getDefaultUri(I)Landroid/net/Uri;
-HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;)Landroid/media/Ringtone;
-HSPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;ILandroid/media/VolumeShaper$Configuration;)Landroid/media/Ringtone;
-HPLandroid/media/RingtoneManager;->getRingtone(Landroid/content/Context;Landroid/net/Uri;Landroid/media/VolumeShaper$Configuration;)Landroid/media/Ringtone;
+HSPLandroid/media/SoundPool$Builder;-><init>()V
 HSPLandroid/media/SoundPool$Builder;->build()Landroid/media/SoundPool;
 HSPLandroid/media/SoundPool$Builder;->setAudioAttributes(Landroid/media/AudioAttributes;)Landroid/media/SoundPool$Builder;
-HSPLandroid/media/SoundPool$EventHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/media/SoundPool$Builder;->setMaxStreams(I)Landroid/media/SoundPool$Builder;
 HSPLandroid/media/SoundPool;-><init>(ILandroid/media/AudioAttributes;)V
-HSPLandroid/media/SoundPool;->load(Ljava/lang/String;I)I
-HSPLandroid/media/SoundPool;->play(IFFIIF)I
-HSPLandroid/media/SoundPool;->playerSetAuxEffectSendLevel(ZF)I
-HSPLandroid/media/SoundPool;->playerSetVolume(ZFF)V
-HSPLandroid/media/SoundPool;->postEventFromNative(Ljava/lang/Object;IIILjava/lang/Object;)V
-HSPLandroid/media/SoundPool;->setOnLoadCompleteListener(Landroid/media/SoundPool$OnLoadCompleteListener;)V
-HSPLandroid/media/SubtitleController$1;->handleMessage(Landroid/os/Message;)Z
-HSPLandroid/media/SubtitleController;-><init>(Landroid/content/Context;Landroid/media/MediaTimeProvider;Landroid/media/SubtitleController$Listener;)V
-HSPLandroid/media/SubtitleController;->doSelectDefaultTrack()V
-HSPLandroid/media/SubtitleController;->doSelectTrack(Landroid/media/SubtitleTrack;)V
-HSPLandroid/media/SubtitleController;->finalize()V
-HSPLandroid/media/SubtitleController;->getDefaultTrack()Landroid/media/SubtitleTrack;
-HSPLandroid/media/SubtitleController;->hide()V
-HSPLandroid/media/SubtitleController;->reset()V
-HSPLandroid/media/SubtitleController;->selectDefaultTrack()V
-HSPLandroid/media/SubtitleController;->selectTrack(Landroid/media/SubtitleTrack;)Z
-HSPLandroid/media/SubtitleController;->setAnchor(Landroid/media/SubtitleController$Anchor;)V
-HSPLandroid/media/ToneGenerator;-><init>(II)V
-HSPLandroid/media/ToneGenerator;->finalize()V
-HPLandroid/media/ToneGenerator;->startTone(I)Z
+HSPLandroid/media/SoundPool;-><init>(ILandroid/media/AudioAttributes;Landroid/media/SoundPool$1;)V
+HSPLandroid/media/Utils$1;-><init>()V
 HSPLandroid/media/Utils$1;->compare(Landroid/util/Range;Landroid/util/Range;)I
 HSPLandroid/media/Utils$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLandroid/media/Utils$2;-><init>()V
 HSPLandroid/media/Utils$2;->compare(Landroid/util/Range;Landroid/util/Range;)I
 HSPLandroid/media/Utils$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLandroid/media/Utils;->alignRange(Landroid/util/Range;I)Landroid/util/Range;
+HSPLandroid/media/Utils;->binarySearchDistinctRanges([Landroid/util/Range;Ljava/lang/Comparable;)I
 HSPLandroid/media/Utils;->divUp(II)I
 HSPLandroid/media/Utils;->divUp(JJ)J
 HSPLandroid/media/Utils;->factorRange(Landroid/util/Range;I)Landroid/util/Range;
@@ -9791,205 +8210,116 @@
 HSPLandroid/media/Utils;->parseRationalRange(Ljava/lang/Object;Landroid/util/Range;)Landroid/util/Range;
 HSPLandroid/media/Utils;->parseSize(Ljava/lang/Object;Landroid/util/Size;)Landroid/util/Size;
 HSPLandroid/media/Utils;->parseSizeRange(Ljava/lang/Object;)Landroid/util/Pair;
-HSPLandroid/media/VolumePolicy$1;-><init>()V
-HSPLandroid/media/VolumePolicy$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/VolumePolicy;
-HSPLandroid/media/VolumePolicy$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/VolumePolicy;-><init>(ZZZI)V
-HSPLandroid/media/VolumePolicy;->equals(Ljava/lang/Object;)Z
-HSPLandroid/media/VolumeShaper$Configuration$1;-><init>()V
-HSPLandroid/media/VolumeShaper$Configuration$Builder;-><init>()V
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->build()Landroid/media/VolumeShaper$Configuration;
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->setCurve([F[F)Landroid/media/VolumeShaper$Configuration$Builder;
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->setDuration(J)Landroid/media/VolumeShaper$Configuration$Builder;
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->setId(I)Landroid/media/VolumeShaper$Configuration$Builder;
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->setInterpolatorType(I)Landroid/media/VolumeShaper$Configuration$Builder;
-HSPLandroid/media/VolumeShaper$Configuration$Builder;->setOptionFlags(I)Landroid/media/VolumeShaper$Configuration$Builder;
-HSPLandroid/media/VolumeShaper$Configuration;-><init>(I)V
-HSPLandroid/media/VolumeShaper$Configuration;->checkCurveForErrors([F[FZ)Ljava/lang/String;
-HSPLandroid/media/VolumeShaper$Operation$1;-><init>()V
-HSPLandroid/media/VolumeShaper$Operation$Builder;-><init>()V
-HSPLandroid/media/VolumeShaper$Operation$Builder;-><init>(Landroid/media/VolumeShaper$Operation;)V
-HSPLandroid/media/VolumeShaper$Operation$Builder;->build()Landroid/media/VolumeShaper$Operation;
-HSPLandroid/media/VolumeShaper$Operation$Builder;->createIfNeeded()Landroid/media/VolumeShaper$Operation$Builder;
-HSPLandroid/media/VolumeShaper$Operation$Builder;->reverse()Landroid/media/VolumeShaper$Operation$Builder;
-HSPLandroid/media/VolumeShaper$Operation$Builder;->setXOffset(F)Landroid/media/VolumeShaper$Operation$Builder;
-HSPLandroid/media/VolumeShaper$State$1;-><init>()V
-HSPLandroid/media/audiopolicy/AudioProductStrategies$1;-><init>()V
-HSPLandroid/media/audiopolicy/AudioProductStrategies;-><init>()V
-HSPLandroid/media/audiopolicy/AudioProductStrategy$1;-><init>()V
-HSPLandroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup$1;-><init>()V
+HSPLandroid/media/Utils;->scaleRange(Landroid/util/Range;II)Landroid/util/Range;
+HSPLandroid/media/Utils;->sortDistinctRanges([Landroid/util/Range;)V
 HSPLandroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup;-><init>(II[Landroid/media/AudioAttributes;)V
+HSPLandroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup;->getAudioAttributes()Landroid/media/AudioAttributes;
+HSPLandroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup;->supportsStreamType(I)Z
 HSPLandroid/media/audiopolicy/AudioProductStrategy;-><init>(Ljava/lang/String;I[Landroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup;)V
-HSPLandroid/media/audiopolicy/AudioVolumeGroup$1;-><init>()V
-HSPLandroid/media/audiopolicy/AudioVolumeGroup;-><init>(Ljava/lang/String;I[Landroid/media/AudioAttributes;[I)V
-HSPLandroid/media/audiopolicy/AudioVolumeGroupChangeHandler;-><init>()V
-HSPLandroid/media/audiopolicy/AudioVolumeGroups$1;-><init>()V
-HSPLandroid/media/audiopolicy/AudioVolumeGroups;-><init>()V
-HSPLandroid/media/audiopolicy/IAudioPolicyCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/audiopolicy/IAudioPolicyCallback;
-HSPLandroid/media/browse/MediaBrowser$MediaItem$1;-><init>()V
-HSPLandroid/media/midi/IMidiManager$Stub;-><init>()V
-HSPLandroid/media/midi/MidiDeviceInfo$1;-><init>()V
-HSPLandroid/media/projection/IMediaProjectionManager$Stub;-><init>()V
-HSPLandroid/media/projection/IMediaProjectionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/IActiveSessionsListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/IActiveSessionsListener$Stub$Proxy;->onActiveSessionsChanged(Ljava/util/List;)V
-HSPLandroid/media/session/ICallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMediaButtonReceiver(Landroid/content/ComponentName;)V
-PLandroid/media/session/ICallback$Stub$Proxy;->onAddressedPlayerChangedToMediaSession(Landroid/media/session/MediaSession$Token;)V
-HSPLandroid/media/session/ICallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ICallback;
-HSPLandroid/media/session/ISession$Stub;-><init>()V
-HPLandroid/media/session/ISession$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/media/session/ISession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/media/session/ISessionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/media/audiopolicy/AudioProductStrategy;->getAudioAttributesForLegacyStreamType(I)Landroid/media/AudioAttributes;
+HSPLandroid/media/audiopolicy/AudioProductStrategy;->getAudioAttributesForStrategyWithLegacyStreamType(I)Landroid/media/AudioAttributes;
+HSPLandroid/media/audiopolicy/AudioProductStrategy;->getAudioProductStrategies()Ljava/util/List;
+HSPLandroid/media/audiopolicy/AudioProductStrategy;->initializeAudioProductStrategies()Ljava/util/List;
+HSPLandroid/media/session/IOnMediaKeyEventDispatchedListener$Stub;-><init>()V
+HSPLandroid/media/session/IOnMediaKeyEventSessionChangedListener$Stub;-><init>()V
+HSPLandroid/media/session/ISessionCallback$Stub;-><init>()V
 HSPLandroid/media/session/ISessionCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/ISessionController$Stub;-><init>()V
-HPLandroid/media/session/ISessionController$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/media/session/ISessionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onMetadataChanged(Landroid/media/MediaMetadata;)V
-HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V
-HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onQueueChanged(Landroid/media/MediaParceledListSlice;)V
-HPLandroid/media/session/ISessionControllerCallback$Stub$Proxy;->onSessionDestroyed()V
-HSPLandroid/media/session/ISessionManager$Stub$Proxy;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
-HSPLandroid/media/session/ISessionManager$Stub;-><init>()V
-HSPLandroid/media/session/ISessionManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/session/MediaController$Callback;-><init>()V
-HSPLandroid/media/session/MediaController$PlaybackInfo$1;-><init>()V
+HSPLandroid/media/session/ISessionController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionController;
+HSPLandroid/media/session/ISessionControllerCallback$Stub;-><init>()V
+HSPLandroid/media/session/ISessionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/media/session/ISessionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/session/ISessionManager;
+HSPLandroid/media/session/MediaController$CallbackStub;-><init>(Landroid/media/session/MediaController;)V
+HSPLandroid/media/session/MediaController$TransportControls;-><init>(Landroid/media/session/MediaController;)V
+HSPLandroid/media/session/MediaController$TransportControls;-><init>(Landroid/media/session/MediaController;Landroid/media/session/MediaController$1;)V
 HSPLandroid/media/session/MediaController;-><init>(Landroid/content/Context;Landroid/media/session/MediaSession$Token;)V
-HSPLandroid/media/session/MediaSession$QueueItem$1;-><init>()V
-HSPLandroid/media/session/MediaSession$QueueItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/MediaSession$QueueItem;
-HSPLandroid/media/session/MediaSession$QueueItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/session/MediaSession$QueueItem;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/session/MediaSession$Token$1;-><init>()V
+HSPLandroid/media/session/MediaSession$Callback;-><init>()V
+HSPLandroid/media/session/MediaSession$Callback;->access$102(Landroid/media/session/MediaSession$Callback;Landroid/media/session/MediaSession;)Landroid/media/session/MediaSession;
+HSPLandroid/media/session/MediaSession$Callback;->access$502(Landroid/media/session/MediaSession$Callback;Landroid/media/session/MediaSession$CallbackMessageHandler;)Landroid/media/session/MediaSession$CallbackMessageHandler;
+HSPLandroid/media/session/MediaSession$CallbackMessageHandler;-><init>(Landroid/media/session/MediaSession;Landroid/os/Looper;Landroid/media/session/MediaSession$Callback;)V
+HSPLandroid/media/session/MediaSession$CallbackStub;-><init>(Landroid/media/session/MediaSession;)V
 HSPLandroid/media/session/MediaSession$Token$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/MediaSession$Token;
 HSPLandroid/media/session/MediaSession$Token$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/media/session/MediaSession$Token;-><init>(Landroid/media/session/ISessionController;)V
-HSPLandroid/media/session/MediaSession$Token;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/session/MediaSession;-><init>(Landroid/content/Context;Ljava/lang/String;)V
+HSPLandroid/media/session/MediaSession$Token;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/media/session/MediaSession$Token;->getBinder()Landroid/media/session/ISessionController;
 HSPLandroid/media/session/MediaSession;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/media/session/MediaSession;->setActive(Z)V
-HSPLandroid/media/session/MediaSession;->setCallback(Landroid/media/session/MediaSession$Callback;)V
+HSPLandroid/media/session/MediaSession;->hasCustomParcelable(Landroid/os/Bundle;)Z
 HSPLandroid/media/session/MediaSession;->setCallback(Landroid/media/session/MediaSession$Callback;Landroid/os/Handler;)V
 HSPLandroid/media/session/MediaSession;->setFlags(I)V
-HSPLandroid/media/session/MediaSession;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V
+HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;-><init>(Landroid/media/session/MediaSessionManager;)V
+HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;-><init>(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$1;)V
+HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;-><init>(Landroid/media/session/MediaSessionManager;)V
+HSPLandroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;-><init>(Landroid/media/session/MediaSessionManager;Landroid/media/session/MediaSessionManager$1;)V
 HSPLandroid/media/session/MediaSessionManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/media/session/MediaSessionManager;->createSession(Landroid/media/session/MediaSession$CallbackStub;Ljava/lang/String;Landroid/os/Bundle;)Landroid/media/session/ISession;
-HSPLandroid/media/session/MediaSessionManager;->dispatchVolumeKeyEventInternal(ZLandroid/view/KeyEvent;IZ)V
-HSPLandroid/media/session/MediaSessionManager;->getActiveSessions(Landroid/content/ComponentName;)Ljava/util/List;
-HSPLandroid/media/session/MediaSessionManager;->getActiveSessionsForUser(Landroid/content/ComponentName;I)Ljava/util/List;
-HSPLandroid/media/session/PlaybackState$1;-><init>()V
-HSPLandroid/media/session/PlaybackState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/PlaybackState;
-HSPLandroid/media/session/PlaybackState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/media/session/PlaybackState$Builder;-><init>(Landroid/media/session/PlaybackState;)V
-HSPLandroid/media/session/PlaybackState$Builder;->build()Landroid/media/session/PlaybackState;
-HSPLandroid/media/session/PlaybackState$CustomAction$1;-><init>()V
-HSPLandroid/media/session/PlaybackState$CustomAction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/session/PlaybackState$CustomAction;
-HSPLandroid/media/session/PlaybackState$CustomAction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/session/PlaybackState$CustomAction;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/media/session/PlaybackState;-><init>(IJJFJJLjava/util/List;JLjava/lang/CharSequence;Landroid/os/Bundle;)V
-HSPLandroid/media/session/PlaybackState;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/media/session/PlaybackState;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/media/soundtrigger/ISoundTriggerDetectionServiceClient$Stub;-><init>()V
 HSPLandroid/metrics/LogMaker;-><init>(I)V
 HSPLandroid/metrics/LogMaker;->addTaggedData(ILjava/lang/Object;)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->clearTaggedData(I)Landroid/metrics/LogMaker;
 HSPLandroid/metrics/LogMaker;->getEntries()Landroid/util/SparseArray;
 HSPLandroid/metrics/LogMaker;->getType()I
 HSPLandroid/metrics/LogMaker;->isValidValue(Ljava/lang/Object;)Z
 HSPLandroid/metrics/LogMaker;->serialize()[Ljava/lang/Object;
 HSPLandroid/metrics/LogMaker;->setCategory(I)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setComponentName(Landroid/content/ComponentName;)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setCounterBucket(I)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setCounterName(Ljava/lang/String;)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setCounterValue(I)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setLatency(J)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setPackageName(Ljava/lang/String;)Landroid/metrics/LogMaker;
 HSPLandroid/metrics/LogMaker;->setSubtype(I)Landroid/metrics/LogMaker;
 HSPLandroid/metrics/LogMaker;->setType(I)Landroid/metrics/LogMaker;
-HSPLandroid/net/-$$Lambda$FpGXkd3pLxeXY58eJ_84mi1PLWQ;-><init>()V
 HSPLandroid/net/-$$Lambda$FpGXkd3pLxeXY58eJ_84mi1PLWQ;->nameOf(I)Ljava/lang/String;
-HSPLandroid/net/-$$Lambda$NetworkFactory$HfslgqyaKc_n0wXX5_qRYVZoGfI;->run()V
-HSPLandroid/net/-$$Lambda$p1_56lwnt1xBuY1muPblbN1Dtkw;-><init>()V
 HSPLandroid/net/-$$Lambda$p1_56lwnt1xBuY1muPblbN1Dtkw;->nameOf(I)Ljava/lang/String;
+HSPLandroid/net/ConnectivityManager$CallbackHandler;-><init>(Landroid/net/ConnectivityManager;Landroid/os/Handler;)V
+HSPLandroid/net/ConnectivityManager$CallbackHandler;-><init>(Landroid/net/ConnectivityManager;Landroid/os/Looper;)V
+HSPLandroid/net/ConnectivityManager$CallbackHandler;->getObject(Landroid/os/Message;Ljava/lang/Class;)Ljava/lang/Object;
 HSPLandroid/net/ConnectivityManager$CallbackHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;-><init>()V
+HSPLandroid/net/ConnectivityManager$NetworkCallback;->access$900(Landroid/net/ConnectivityManager$NetworkCallback;)Landroid/net/NetworkRequest;
+HSPLandroid/net/ConnectivityManager$NetworkCallback;->access$902(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/net/NetworkRequest;)Landroid/net/NetworkRequest;
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onAvailable(Landroid/net/Network;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onAvailable(Landroid/net/Network;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;Z)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onBlockedStatusChanged(Landroid/net/Network;Z)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V
-HSPLandroid/net/ConnectivityManager$NetworkCallback;->onLosing(Landroid/net/Network;I)V
-HSPLandroid/net/ConnectivityManager$NetworkCallback;->onLost(Landroid/net/Network;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onNetworkResumed(Landroid/net/Network;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onNetworkSuspended(Landroid/net/Network;)V
 HSPLandroid/net/ConnectivityManager$NetworkCallback;->onPreCheck(Landroid/net/Network;)V
 HSPLandroid/net/ConnectivityManager;-><init>(Landroid/content/Context;Landroid/net/IConnectivityManager;)V
-HSPLandroid/net/ConnectivityManager;->enforceChangePermission(Landroid/content/Context;)V
-HSPLandroid/net/ConnectivityManager;->enforceTetherChangePermission(Landroid/content/Context;Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityManager;->access$800()Ljava/util/HashMap;
+HSPLandroid/net/ConnectivityManager;->checkCallbackNotNull(Landroid/net/ConnectivityManager$NetworkCallback;)V
 HSPLandroid/net/ConnectivityManager;->from(Landroid/content/Context;)Landroid/net/ConnectivityManager;
 HSPLandroid/net/ConnectivityManager;->getActiveNetwork()Landroid/net/Network;
-HSPLandroid/net/ConnectivityManager;->getActiveNetworkForUid(I)Landroid/net/Network;
-HSPLandroid/net/ConnectivityManager;->getActiveNetworkForUid(IZ)Landroid/net/Network;
 HSPLandroid/net/ConnectivityManager;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
 HSPLandroid/net/ConnectivityManager;->getAllNetworks()[Landroid/net/Network;
 HSPLandroid/net/ConnectivityManager;->getBoundNetworkForProcess()Landroid/net/Network;
-HSPLandroid/net/ConnectivityManager;->getCallbackName(I)Ljava/lang/String;
 HSPLandroid/net/ConnectivityManager;->getDefaultHandler()Landroid/net/ConnectivityManager$CallbackHandler;
 HSPLandroid/net/ConnectivityManager;->getDefaultProxy()Landroid/net/ProxyInfo;
-HSPLandroid/net/ConnectivityManager;->getInstance()Landroid/net/ConnectivityManager;
 HSPLandroid/net/ConnectivityManager;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
 HSPLandroid/net/ConnectivityManager;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/ConnectivityManager;->getNetworkInfo(I)Landroid/net/NetworkInfo;
 HSPLandroid/net/ConnectivityManager;->getNetworkInfo(Landroid/net/Network;)Landroid/net/NetworkInfo;
 HSPLandroid/net/ConnectivityManager;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
 HSPLandroid/net/ConnectivityManager;->getNetworkPolicyManager()Landroid/net/INetworkPolicyManager;
-HSPLandroid/net/ConnectivityManager;->getNetworkTypeName(I)Ljava/lang/String;
+HSPLandroid/net/ConnectivityManager;->getProcessDefaultNetwork()Landroid/net/Network;
 HSPLandroid/net/ConnectivityManager;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
 HSPLandroid/net/ConnectivityManager;->getRestrictBackgroundStatus()I
 HSPLandroid/net/ConnectivityManager;->inferLegacyTypeForNetworkCapabilities(Landroid/net/NetworkCapabilities;)I
 HSPLandroid/net/ConnectivityManager;->isActiveNetworkMetered()Z
 HSPLandroid/net/ConnectivityManager;->isNetworkSupported(I)Z
-HSPLandroid/net/ConnectivityManager;->isNetworkTypeMobile(I)Z
-HSPLandroid/net/ConnectivityManager;->isTetheringSupported()Z
+HSPLandroid/net/ConnectivityManager;->isNetworkTypeValid(I)Z
 HSPLandroid/net/ConnectivityManager;->printStackTrace()V
 HSPLandroid/net/ConnectivityManager;->registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V
 HSPLandroid/net/ConnectivityManager;->registerDefaultNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V
-HSPLandroid/net/ConnectivityManager;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;I)I
 HSPLandroid/net/ConnectivityManager;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V
 HSPLandroid/net/ConnectivityManager;->registerNetworkCallback(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V
-HSPLandroid/net/ConnectivityManager;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)I
-HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;)V
 HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;IILandroid/os/Handler;)V
 HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;)V
-HSPLandroid/net/ConnectivityManager;->requestNetwork(Landroid/net/NetworkRequest;Landroid/net/ConnectivityManager$NetworkCallback;Landroid/os/Handler;I)V
-HPLandroid/net/ConnectivityManager;->requestRouteToHostAddress(ILjava/net/InetAddress;)Z
 HSPLandroid/net/ConnectivityManager;->sendRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/net/ConnectivityManager$NetworkCallback;IIILandroid/net/ConnectivityManager$CallbackHandler;)Landroid/net/NetworkRequest;
-HSPLandroid/net/ConnectivityManager;->setProcessDefaultNetwork(Landroid/net/Network;)Z
-HSPLandroid/net/ConnectivityManager;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
 HSPLandroid/net/ConnectivityManager;->unregisterNetworkCallback(Landroid/net/ConnectivityManager$NetworkCallback;)V
-HPLandroid/net/ConnectivityManager;->unsupportedStartingFrom(I)V
-HSPLandroid/net/ConnectivityMetricsEvent$1;-><init>()V
-HSPLandroid/net/ConnectivityMetricsEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ConnectivityMetricsEvent;
-HSPLandroid/net/ConnectivityMetricsEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/ConnectivityMetricsEvent;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/net/ConnectivityThread$Singleton;-><clinit>()V
+HSPLandroid/net/ConnectivityThread$Singleton;->access$100()Landroid/net/ConnectivityThread;
+HSPLandroid/net/ConnectivityThread;-><init>()V
 HSPLandroid/net/ConnectivityThread;->access$000()Landroid/net/ConnectivityThread;
+HSPLandroid/net/ConnectivityThread;->createInstance()Landroid/net/ConnectivityThread;
 HSPLandroid/net/ConnectivityThread;->getInstanceLooper()Landroid/os/Looper;
 HSPLandroid/net/Credentials;-><init>(III)V
 HSPLandroid/net/Credentials;->getPid()I
 HSPLandroid/net/Credentials;->getUid()I
-HSPLandroid/net/DataUsageRequest$1;-><init>()V
-HSPLandroid/net/DhcpInfo$1;-><init>()V
-HPLandroid/net/DhcpInfo;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/net/DhcpResults$1;-><init>()V
-HPLandroid/net/DhcpResults;-><init>(Landroid/net/DhcpResults;)V
-HPLandroid/net/DhcpResults;-><init>(Landroid/net/StaticIpConfiguration;)V
-HPLandroid/net/DhcpResults;->clear()V
-HPLandroid/net/DhcpResults;->hasMeteredHint()Z
-HPLandroid/net/DhcpResults;->toStaticIpConfiguration()Landroid/net/StaticIpConfiguration;
-HPLandroid/net/DhcpResults;->toString()Ljava/lang/String;
-HSPLandroid/net/EventLogTags;->writeNtpSuccess(Ljava/lang/String;JJ)V
+HSPLandroid/net/IConnectivityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetwork()Landroid/net/Network;
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getAllNetworks()[Landroid/net/Network;
@@ -9999,195 +8329,139 @@
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isActiveNetworkMetered()Z
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isNetworkSupported(I)Z
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->isTetheringSupported(Ljava/lang/String;)Z
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;I)I
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)I
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
 HSPLandroid/net/IConnectivityManager$Stub$Proxy;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest;
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
-HSPLandroid/net/IConnectivityManager$Stub;-><init>()V
 HSPLandroid/net/IConnectivityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IConnectivityManager;
-HPLandroid/net/IConnectivityManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/net/IConnectivityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/IEthernetManager$Stub;-><init>()V
-HSPLandroid/net/IIpConnectivityMetrics$Stub;-><init>()V
-HSPLandroid/net/IIpConnectivityMetrics$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IIpConnectivityMetrics;
-HSPLandroid/net/IIpConnectivityMetrics$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/IIpSecService$Stub;-><init>()V
-HSPLandroid/net/INetdEventCallback$Stub;-><init>()V
-HSPLandroid/net/INetworkManagementEventObserver$Stub;-><init>()V
-HSPLandroid/net/INetworkManagementEventObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkPolicyListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkPolicyListener$Stub$Proxy;->onMeteredIfacesChanged([Ljava/lang/String;)V
-HSPLandroid/net/INetworkPolicyListener$Stub$Proxy;->onUidRulesChanged(II)V
 HSPLandroid/net/INetworkPolicyListener$Stub;-><init>()V
 HSPLandroid/net/INetworkPolicyListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkPolicyListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->getRestrictBackground()Z
+HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->getRestrictBackgroundByCaller()I
-HSPLandroid/net/INetworkPolicyManager$Stub$Proxy;->registerListener(Landroid/net/INetworkPolicyListener;)V
-HSPLandroid/net/INetworkPolicyManager$Stub;-><init>()V
 HSPLandroid/net/INetworkPolicyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkPolicyManager;
-HSPLandroid/net/INetworkPolicyManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/net/INetworkRecommendationProvider$Stub$Proxy;->requestScores([Landroid/net/NetworkKey;)V
-PLandroid/net/INetworkRecommendationProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkRecommendationProvider;
-HSPLandroid/net/INetworkScoreCache$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkScoreCache$Stub$Proxy;->clearScores()V
+HSPLandroid/net/INetworkScoreCache$Stub;-><init>()V
 HSPLandroid/net/INetworkScoreCache$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkScoreService$Stub$Proxy;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V
-HSPLandroid/net/INetworkScoreService$Stub$Proxy;->requestScores([Landroid/net/NetworkKey;)Z
-HSPLandroid/net/INetworkScoreService$Stub;-><init>()V
-HSPLandroid/net/INetworkScoreService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getIfaceStats(Ljava/lang/String;I)J
-HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getMobileIfaces()[Ljava/lang/String;
-HSPLandroid/net/INetworkStatsService$Stub;-><init>()V
+HSPLandroid/net/INetworkScoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkScoreService;
+HSPLandroid/net/INetworkStatsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/net/INetworkStatsService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStatsService;
-HPLandroid/net/INetworkStatsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/net/INetworkStatsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLandroid/net/INetworkStatsSession$Stub;-><init>()V
-HPLandroid/net/INetworkStatsSession$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/net/INetworkStatsSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/ITetheringStatsProvider$Stub;-><init>()V
-HSPLandroid/net/InetAddresses;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;
-HSPLandroid/net/InterfaceConfiguration$1;-><init>()V
-HSPLandroid/net/InterfaceConfiguration;-><init>()V
-HPLandroid/net/InterfaceConfiguration;->getLinkAddress()Landroid/net/LinkAddress;
-HSPLandroid/net/InterfaceConfiguration;->hasFlag(Ljava/lang/String;)Z
-HSPLandroid/net/InterfaceConfiguration;->isUp()Z
-HSPLandroid/net/InterfaceConfiguration;->setFlag(Ljava/lang/String;)V
-HSPLandroid/net/InterfaceConfigurationParcel$1;-><init>()V
-HSPLandroid/net/InterfaceConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/InterfaceConfigurationParcel;
-HSPLandroid/net/InterfaceConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/InterfaceConfigurationParcel;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/net/IpConfiguration$1;-><init>()V
 HSPLandroid/net/IpConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/IpConfiguration;
 HSPLandroid/net/IpConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/IpConfiguration$IpAssignment;-><init>(Ljava/lang/String;I)V
 HSPLandroid/net/IpConfiguration$IpAssignment;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$IpAssignment;
 HSPLandroid/net/IpConfiguration$IpAssignment;->values()[Landroid/net/IpConfiguration$IpAssignment;
-HSPLandroid/net/IpConfiguration$ProxySettings;-><init>(Ljava/lang/String;I)V
 HSPLandroid/net/IpConfiguration$ProxySettings;->valueOf(Ljava/lang/String;)Landroid/net/IpConfiguration$ProxySettings;
 HSPLandroid/net/IpConfiguration$ProxySettings;->values()[Landroid/net/IpConfiguration$ProxySettings;
 HSPLandroid/net/IpConfiguration;-><init>()V
-HSPLandroid/net/IpConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/IpMemoryStore;->getMemoryStore(Landroid/content/Context;)Landroid/net/IpMemoryStore;
-HSPLandroid/net/IpPrefix$2;-><init>()V
+HSPLandroid/net/IpConfiguration;->init(Landroid/net/IpConfiguration$IpAssignment;Landroid/net/IpConfiguration$ProxySettings;Landroid/net/StaticIpConfiguration;Landroid/net/ProxyInfo;)V
 HSPLandroid/net/IpPrefix$2;->createFromParcel(Landroid/os/Parcel;)Landroid/net/IpPrefix;
 HSPLandroid/net/IpPrefix$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/IpPrefix;-><init>(Ljava/lang/String;)V
-HPLandroid/net/IpPrefix;-><init>(Ljava/net/InetAddress;I)V
+HSPLandroid/net/IpPrefix;-><init>([BI)V
 HSPLandroid/net/IpPrefix;->checkAndMaskAddressAndPrefixLength()V
 HSPLandroid/net/IpPrefix;->equals(Ljava/lang/Object;)Z
 HSPLandroid/net/IpPrefix;->getAddress()Ljava/net/InetAddress;
-HSPLandroid/net/IpPrefix;->hashCode()I
+HSPLandroid/net/IpPrefix;->getPrefixLength()I
 HSPLandroid/net/IpPrefix;->toString()Ljava/lang/String;
-HSPLandroid/net/LinkAddress$1;-><init>()V
+HSPLandroid/net/IpPrefix;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/net/LinkAddress$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/LinkAddress;
 HSPLandroid/net/LinkAddress$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/LinkAddress;-><init>(Ljava/lang/String;)V
 HSPLandroid/net/LinkAddress;-><init>(Ljava/lang/String;II)V
-HSPLandroid/net/LinkAddress;-><init>(Ljava/net/InetAddress;I)V
+HSPLandroid/net/LinkAddress;-><init>(Ljava/net/InetAddress;III)V
+HSPLandroid/net/LinkAddress;-><init>(Ljava/net/InetAddress;IIIJJ)V
 HSPLandroid/net/LinkAddress;->getAddress()Ljava/net/InetAddress;
-HSPLandroid/net/LinkAddress;->getNetworkPrefixLength()I
-HSPLandroid/net/LinkAddress;->getPrefixLength()I
 HSPLandroid/net/LinkAddress;->init(Ljava/net/InetAddress;III)V
-HSPLandroid/net/LinkAddress;->isGlobalPreferred()Z
-HSPLandroid/net/LinkAddress;->isIpv6()Z
+HSPLandroid/net/LinkAddress;->init(Ljava/net/InetAddress;IIIJJ)V
 HSPLandroid/net/LinkAddress;->isSameAddressAs(Landroid/net/LinkAddress;)Z
 HSPLandroid/net/LinkAddress;->scopeForUnicastAddress(Ljava/net/InetAddress;)I
 HSPLandroid/net/LinkAddress;->toString()Ljava/lang/String;
 HSPLandroid/net/LinkAddress;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/LinkProperties$1;-><init>()V
 HSPLandroid/net/LinkProperties$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/LinkProperties;
 HSPLandroid/net/LinkProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/LinkProperties$CompareResult;-><init>(Ljava/util/Collection;Ljava/util/Collection;)V
 HSPLandroid/net/LinkProperties;-><init>()V
 HSPLandroid/net/LinkProperties;-><init>(Landroid/net/LinkProperties;)V
+HSPLandroid/net/LinkProperties;->access$000(Landroid/os/Parcel;)Ljava/net/InetAddress;
 HSPLandroid/net/LinkProperties;->addDnsServer(Ljava/net/InetAddress;)Z
 HSPLandroid/net/LinkProperties;->addLinkAddress(Landroid/net/LinkAddress;)Z
 HSPLandroid/net/LinkProperties;->addPcscfServer(Ljava/net/InetAddress;)Z
 HSPLandroid/net/LinkProperties;->addRoute(Landroid/net/RouteInfo;)Z
 HSPLandroid/net/LinkProperties;->addStackedLink(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->addValidatedPrivateDnsServer(Ljava/net/InetAddress;)Z
-HSPLandroid/net/LinkProperties;->clear()V
-HSPLandroid/net/LinkProperties;->describeContents()I
-HSPLandroid/net/LinkProperties;->ensureDirectlyConnectedRoutes()V
 HSPLandroid/net/LinkProperties;->equals(Ljava/lang/Object;)Z
+HSPLandroid/net/LinkProperties;->findLinkAddressIndex(Landroid/net/LinkAddress;)I
 HSPLandroid/net/LinkProperties;->getAddresses()Ljava/util/List;
-HSPLandroid/net/LinkProperties;->getAllInterfaceNames()Ljava/util/List;
-HSPLandroid/net/LinkProperties;->getAllRoutes()Ljava/util/List;
+HSPLandroid/net/LinkProperties;->getDhcpServerAddress()Ljava/net/Inet4Address;
 HSPLandroid/net/LinkProperties;->getDnsServers()Ljava/util/List;
 HSPLandroid/net/LinkProperties;->getDomains()Ljava/lang/String;
 HSPLandroid/net/LinkProperties;->getHttpProxy()Landroid/net/ProxyInfo;
 HSPLandroid/net/LinkProperties;->getInterfaceName()Ljava/lang/String;
 HSPLandroid/net/LinkProperties;->getLinkAddresses()Ljava/util/List;
 HSPLandroid/net/LinkProperties;->getMtu()I
+HSPLandroid/net/LinkProperties;->getPcscfServers()Ljava/util/List;
 HSPLandroid/net/LinkProperties;->getPrivateDnsServerName()Ljava/lang/String;
 HSPLandroid/net/LinkProperties;->getRoutes()Ljava/util/List;
-HSPLandroid/net/LinkProperties;->getStackedLinks()Ljava/util/List;
-HSPLandroid/net/LinkProperties;->hasGlobalIPv6Address()Z
+HSPLandroid/net/LinkProperties;->getValidatedPrivateDnsServers()Ljava/util/List;
 HSPLandroid/net/LinkProperties;->hasGlobalIpv6Address()Z
-HSPLandroid/net/LinkProperties;->hasIPv4Address()Z
-HSPLandroid/net/LinkProperties;->hasIPv4DefaultRoute()Z
-HSPLandroid/net/LinkProperties;->hasIPv4DnsServer()Z
-HSPLandroid/net/LinkProperties;->hasIPv6DefaultRoute()Z
-HSPLandroid/net/LinkProperties;->hasIPv6DnsServer()Z
-HSPLandroid/net/LinkProperties;->hasIpv4Address()Z
-HSPLandroid/net/LinkProperties;->hasIpv4DefaultRoute()Z
-HSPLandroid/net/LinkProperties;->hasIpv6DefaultRoute()Z
 HSPLandroid/net/LinkProperties;->isIdenticalAddresses(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalDhcpServerAddress(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->isIdenticalDnses(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalHttpProxy(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->isIdenticalInterfaceName(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalMtu(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalNat64Prefix(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalPcscfs(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalPrivateDns(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->isIdenticalRoutes(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->isIdenticalStackedLinks(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalTcpBufferSizes(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalValidatedPrivateDnses(Landroid/net/LinkProperties;)Z
+HSPLandroid/net/LinkProperties;->isIdenticalWakeOnLan(Landroid/net/LinkProperties;)Z
 HSPLandroid/net/LinkProperties;->isPrivateDnsActive()Z
-HSPLandroid/net/LinkProperties;->setDnsServers(Ljava/util/Collection;)V
+HSPLandroid/net/LinkProperties;->isWakeOnLanSupported()Z
+HSPLandroid/net/LinkProperties;->readAddress(Landroid/os/Parcel;)Ljava/net/InetAddress;
+HSPLandroid/net/LinkProperties;->routeWithInterface(Landroid/net/RouteInfo;)Landroid/net/RouteInfo;
+HSPLandroid/net/LinkProperties;->setCaptivePortalApiUrl(Landroid/net/Uri;)V
+HSPLandroid/net/LinkProperties;->setCaptivePortalData(Landroid/net/CaptivePortalData;)V
+HSPLandroid/net/LinkProperties;->setDhcpServerAddress(Ljava/net/Inet4Address;)V
 HSPLandroid/net/LinkProperties;->setDomains(Ljava/lang/String;)V
-HSPLandroid/net/LinkProperties;->setHttpProxy(Landroid/net/ProxyInfo;)V
 HSPLandroid/net/LinkProperties;->setInterfaceName(Ljava/lang/String;)V
-HSPLandroid/net/LinkProperties;->setLinkAddresses(Ljava/util/Collection;)V
 HSPLandroid/net/LinkProperties;->setMtu(I)V
 HSPLandroid/net/LinkProperties;->setNat64Prefix(Landroid/net/IpPrefix;)V
-HSPLandroid/net/LinkProperties;->setValidatedPrivateDnsServers(Ljava/util/Collection;)V
+HSPLandroid/net/LinkProperties;->setPrivateDnsServerName(Ljava/lang/String;)V
+HSPLandroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V
+HSPLandroid/net/LinkProperties;->setUsePrivateDns(Z)V
+HSPLandroid/net/LinkProperties;->setWakeOnLanSupported(Z)V
 HSPLandroid/net/LinkProperties;->toString()Ljava/lang/String;
+HSPLandroid/net/LinkProperties;->writeAddress(Landroid/os/Parcel;Ljava/net/InetAddress;)V
+HSPLandroid/net/LinkProperties;->writeAddresses(Landroid/os/Parcel;Ljava/util/List;)V
 HSPLandroid/net/LinkProperties;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/net/LocalServerSocket;-><init>(Ljava/io/FileDescriptor;)V
-HSPLandroid/net/LocalServerSocket;-><init>(Ljava/lang/String;)V
 HSPLandroid/net/LocalServerSocket;->accept()Landroid/net/LocalSocket;
 HSPLandroid/net/LocalServerSocket;->close()V
 HSPLandroid/net/LocalServerSocket;->getFileDescriptor()Ljava/io/FileDescriptor;
-HSPLandroid/net/LocalSocket;-><init>()V
-HSPLandroid/net/LocalSocket;-><init>(I)V
+HSPLandroid/net/LocalSocket;-><init>(Landroid/net/LocalSocketImpl;I)V
 HSPLandroid/net/LocalSocket;->close()V
-HSPLandroid/net/LocalSocket;->connect(Landroid/net/LocalSocketAddress;)V
-HSPLandroid/net/LocalSocket;->getAncillaryFileDescriptors()[Ljava/io/FileDescriptor;
+HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Landroid/net/LocalSocketImpl;I)Landroid/net/LocalSocket;
+HSPLandroid/net/LocalSocket;->createLocalSocketForAccept(Landroid/net/LocalSocketImpl;)Landroid/net/LocalSocket;
 HSPLandroid/net/LocalSocket;->getFileDescriptor()Ljava/io/FileDescriptor;
 HSPLandroid/net/LocalSocket;->getInputStream()Ljava/io/InputStream;
 HSPLandroid/net/LocalSocket;->getOutputStream()Ljava/io/OutputStream;
 HSPLandroid/net/LocalSocket;->getPeerCredentials()Landroid/net/Credentials;
 HSPLandroid/net/LocalSocket;->implCreateIfNeeded()V
 HSPLandroid/net/LocalSocket;->setSoTimeout(I)V
-HSPLandroid/net/LocalSocketAddress$Namespace;-><init>(Ljava/lang/String;II)V
-HSPLandroid/net/LocalSocketAddress;-><init>(Ljava/lang/String;)V
-HSPLandroid/net/LocalSocketAddress;->getName()Ljava/lang/String;
-HSPLandroid/net/LocalSocketAddress;->getNamespace()Landroid/net/LocalSocketAddress$Namespace;
+HSPLandroid/net/LocalSocketImpl$SocketInputStream;-><init>(Landroid/net/LocalSocketImpl;)V
 HSPLandroid/net/LocalSocketImpl$SocketInputStream;->available()I
-HSPLandroid/net/LocalSocketImpl$SocketInputStream;->read()I
-HSPLandroid/net/LocalSocketImpl$SocketInputStream;->read([B)I
 HSPLandroid/net/LocalSocketImpl$SocketInputStream;->read([BII)I
-HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->flush()V
+HSPLandroid/net/LocalSocketImpl$SocketOutputStream;-><init>(Landroid/net/LocalSocketImpl;)V
 HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->write(I)V
-HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->write([B)V
 HSPLandroid/net/LocalSocketImpl$SocketOutputStream;->write([BII)V
+HSPLandroid/net/LocalSocketImpl;-><init>()V
+HSPLandroid/net/LocalSocketImpl;-><init>(Ljava/io/FileDescriptor;)V
 HSPLandroid/net/LocalSocketImpl;->accept(Landroid/net/LocalSocketImpl;)V
-HSPLandroid/net/LocalSocketImpl;->bind(Landroid/net/LocalSocketAddress;)V
+HSPLandroid/net/LocalSocketImpl;->access$000(Landroid/net/LocalSocketImpl;)Ljava/io/FileDescriptor;
+HSPLandroid/net/LocalSocketImpl;->access$100(Landroid/net/LocalSocketImpl;)Ljava/lang/Object;
+HSPLandroid/net/LocalSocketImpl;->access$300(Landroid/net/LocalSocketImpl;[BIILjava/io/FileDescriptor;)I
+HSPLandroid/net/LocalSocketImpl;->access$400(Landroid/net/LocalSocketImpl;)Ljava/lang/Object;
+HSPLandroid/net/LocalSocketImpl;->access$500(Landroid/net/LocalSocketImpl;[BIILjava/io/FileDescriptor;)V
+HSPLandroid/net/LocalSocketImpl;->access$600(Landroid/net/LocalSocketImpl;ILjava/io/FileDescriptor;)V
 HSPLandroid/net/LocalSocketImpl;->close()V
-HSPLandroid/net/LocalSocketImpl;->connect(Landroid/net/LocalSocketAddress;I)V
-HSPLandroid/net/LocalSocketImpl;->create(I)V
 HSPLandroid/net/LocalSocketImpl;->finalize()V
-HSPLandroid/net/LocalSocketImpl;->getAncillaryFileDescriptors()[Ljava/io/FileDescriptor;
 HSPLandroid/net/LocalSocketImpl;->getFileDescriptor()Ljava/io/FileDescriptor;
 HSPLandroid/net/LocalSocketImpl;->getInputStream()Ljava/io/InputStream;
 HSPLandroid/net/LocalSocketImpl;->getOutputStream()Ljava/io/OutputStream;
@@ -10195,135 +8469,93 @@
 HSPLandroid/net/LocalSocketImpl;->getSockAddress()Landroid/net/LocalSocketAddress;
 HSPLandroid/net/LocalSocketImpl;->listen(I)V
 HSPLandroid/net/LocalSocketImpl;->setOption(ILjava/lang/Object;)V
-HSPLandroid/net/MacAddress$1;-><init>()V
 HSPLandroid/net/MacAddress$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/MacAddress;
 HSPLandroid/net/MacAddress$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/MacAddress;-><init>(J)V
-HSPLandroid/net/MacAddress;->addr([I)[B
-HPLandroid/net/MacAddress;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/MacAddress;->fromBytes([B)Landroid/net/MacAddress;
+HSPLandroid/net/MacAddress;-><init>(JLandroid/net/MacAddress$1;)V
 HSPLandroid/net/MacAddress;->fromString(Ljava/lang/String;)Landroid/net/MacAddress;
-HPLandroid/net/MacAddress;->hashCode()I
-HSPLandroid/net/MacAddress;->longAddrFromByteAddr([B)J
 HSPLandroid/net/MacAddress;->longAddrFromStringAddr(Ljava/lang/String;)J
-HSPLandroid/net/MacAddress;->stringAddrFromLongAddr(J)Ljava/lang/String;
-HSPLandroid/net/MacAddress;->toByteArray()[B
-HSPLandroid/net/MacAddress;->toString()Ljava/lang/String;
-HSPLandroid/net/MatchAllNetworkSpecifier$1;-><init>()V
-HSPLandroid/net/MatchAllNetworkSpecifier;-><init>()V
-HSPLandroid/net/MatchAllNetworkSpecifier;->checkNotMatchAllNetworkSpecifier(Landroid/net/NetworkSpecifier;)V
-HSPLandroid/net/Network$1;-><init>()V
 HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Network;
 HSPLandroid/net/Network$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/Network$1;->newArray(I)[Landroid/net/Network;
 HSPLandroid/net/Network$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/net/Network$NetworkBoundSocketFactory;->createSocket()Ljava/net/Socket;
 HSPLandroid/net/Network;-><init>(I)V
+HSPLandroid/net/Network;-><init>(IZ)V
 HSPLandroid/net/Network;->bindSocket(Ljava/io/FileDescriptor;)V
-HSPLandroid/net/Network;->bindSocket(Ljava/net/DatagramSocket;)V
 HSPLandroid/net/Network;->bindSocket(Ljava/net/Socket;)V
 HSPLandroid/net/Network;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/Network;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;
-HSPLandroid/net/Network;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;
 HSPLandroid/net/Network;->getNetIdForResolv()I
 HSPLandroid/net/Network;->getNetworkHandle()J
-HSPLandroid/net/Network;->getPrivateDnsBypassingCopy()Landroid/net/Network;
-HSPLandroid/net/Network;->getSocketFactory()Ljavax/net/SocketFactory;
 HSPLandroid/net/Network;->hashCode()I
 HSPLandroid/net/Network;->toString()Ljava/lang/String;
 HSPLandroid/net/Network;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;)V
-HSPLandroid/net/NetworkAgent;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;I)V
-HSPLandroid/net/NetworkAgent;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/net/NetworkAgent;->log(Ljava/lang/String;)V
-HSPLandroid/net/NetworkAgent;->queueOrSendMessage(Landroid/os/Message;)V
-HSPLandroid/net/NetworkAgent;->sendLinkProperties(Landroid/net/LinkProperties;)V
-HSPLandroid/net/NetworkAgent;->sendNetworkCapabilities(Landroid/net/NetworkCapabilities;)V
-HSPLandroid/net/NetworkAgent;->sendNetworkInfo(Landroid/net/NetworkInfo;)V
-HSPLandroid/net/NetworkAgent;->sendNetworkScore(I)V
-HSPLandroid/net/NetworkAgent;->setSignalStrengthThresholds([I)V
-HSPLandroid/net/NetworkCapabilities$1;-><init>()V
 HSPLandroid/net/NetworkCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/NetworkCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/NetworkCapabilities;-><init>()V
 HSPLandroid/net/NetworkCapabilities;-><init>(Landroid/net/NetworkCapabilities;)V
+HSPLandroid/net/NetworkCapabilities;->access$002(Landroid/net/NetworkCapabilities;J)J
+HSPLandroid/net/NetworkCapabilities;->access$1002(Landroid/net/NetworkCapabilities;Z)Z
+HSPLandroid/net/NetworkCapabilities;->access$102(Landroid/net/NetworkCapabilities;J)J
+HSPLandroid/net/NetworkCapabilities;->access$1102(Landroid/net/NetworkCapabilities;I)I
+HSPLandroid/net/NetworkCapabilities;->access$202(Landroid/net/NetworkCapabilities;J)J
+HSPLandroid/net/NetworkCapabilities;->access$302(Landroid/net/NetworkCapabilities;I)I
+HSPLandroid/net/NetworkCapabilities;->access$402(Landroid/net/NetworkCapabilities;I)I
+HSPLandroid/net/NetworkCapabilities;->access$502(Landroid/net/NetworkCapabilities;Landroid/net/NetworkSpecifier;)Landroid/net/NetworkSpecifier;
+HSPLandroid/net/NetworkCapabilities;->access$602(Landroid/net/NetworkCapabilities;Landroid/net/TransportInfo;)Landroid/net/TransportInfo;
+HSPLandroid/net/NetworkCapabilities;->access$702(Landroid/net/NetworkCapabilities;I)I
+HSPLandroid/net/NetworkCapabilities;->access$802(Landroid/net/NetworkCapabilities;Landroid/util/ArraySet;)Landroid/util/ArraySet;
+HSPLandroid/net/NetworkCapabilities;->access$902(Landroid/net/NetworkCapabilities;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/NetworkCapabilities;->addCapability(I)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/NetworkCapabilities;->addTransportType(I)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/NetworkCapabilities;->appendStringRepresentationOfBitMaskToStringBuilder(Ljava/lang/StringBuilder;JLandroid/net/NetworkCapabilities$NameOf;Ljava/lang/String;)V
 HSPLandroid/net/NetworkCapabilities;->capabilityNameOf(I)Ljava/lang/String;
-HSPLandroid/net/NetworkCapabilities;->describeContents()I
-HSPLandroid/net/NetworkCapabilities;->describeFirstNonRequestableCapability()Ljava/lang/String;
-HPLandroid/net/NetworkCapabilities;->describeImmutableDifferences(Landroid/net/NetworkCapabilities;)Ljava/lang/String;
-HSPLandroid/net/NetworkCapabilities;->equalRequestableCapabilities(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->checkValidCapability(I)V
+HSPLandroid/net/NetworkCapabilities;->checkValidTransportType(I)V
+HSPLandroid/net/NetworkCapabilities;->clearAll()V
+HSPLandroid/net/NetworkCapabilities;->deduceRestrictedCapability()Z
 HSPLandroid/net/NetworkCapabilities;->equals(Ljava/lang/Object;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsLinkBandwidths(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsNetCapabilities(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsPrivateDnsBroken(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsSSID(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsSignalStrength(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsSpecifier(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsTransportInfo(Landroid/net/NetworkCapabilities;)Z
+HSPLandroid/net/NetworkCapabilities;->equalsTransportTypes(Landroid/net/NetworkCapabilities;)Z
 HSPLandroid/net/NetworkCapabilities;->equalsUids(Landroid/net/NetworkCapabilities;)Z
-HSPLandroid/net/NetworkCapabilities;->getCapabilities()[I
 HSPLandroid/net/NetworkCapabilities;->getNetworkSpecifier()Landroid/net/NetworkSpecifier;
 HSPLandroid/net/NetworkCapabilities;->getTransportTypes()[I
-HSPLandroid/net/NetworkCapabilities;->getUids()Ljava/util/Set;
-HSPLandroid/net/NetworkCapabilities;->getUnwantedCapabilities()[I
 HSPLandroid/net/NetworkCapabilities;->hasCapability(I)Z
+HSPLandroid/net/NetworkCapabilities;->hasSignalStrength()Z
 HSPLandroid/net/NetworkCapabilities;->hasTransport(I)Z
 HSPLandroid/net/NetworkCapabilities;->hashCode()I
-HSPLandroid/net/NetworkCapabilities;->isMetered()Z
+HSPLandroid/net/NetworkCapabilities;->isValidCapability(I)Z
+HSPLandroid/net/NetworkCapabilities;->isValidTransport(I)Z
 HSPLandroid/net/NetworkCapabilities;->maybeMarkCapabilitiesRestricted()V
 HSPLandroid/net/NetworkCapabilities;->removeCapability(I)Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkCapabilities;->satisfiedByImmutableNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z
-HSPLandroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;)Z
-HSPLandroid/net/NetworkCapabilities;->satisfiedByNetworkCapabilities(Landroid/net/NetworkCapabilities;Z)Z
-HSPLandroid/net/NetworkCapabilities;->satisfiedByUids(Landroid/net/NetworkCapabilities;)Z
 HSPLandroid/net/NetworkCapabilities;->set(Landroid/net/NetworkCapabilities;)V
-HSPLandroid/net/NetworkCapabilities;->setCapabilities([I[I)V
-HSPLandroid/net/NetworkCapabilities;->setCapability(IZ)Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkCapabilities;->setLinkDownstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkCapabilities;->setLinkUpstreamBandwidthKbps(I)Landroid/net/NetworkCapabilities;
+HSPLandroid/net/NetworkCapabilities;->setAdministratorUids(Ljava/util/List;)V
 HSPLandroid/net/NetworkCapabilities;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/NetworkCapabilities;->setSingleUid(I)Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkCapabilities;->setTransportTypes([I)V
+HSPLandroid/net/NetworkCapabilities;->setUids(Ljava/util/Set;)Landroid/net/NetworkCapabilities;
 HSPLandroid/net/NetworkCapabilities;->toString()Ljava/lang/String;
+HSPLandroid/net/NetworkCapabilities;->transportNameOf(I)Ljava/lang/String;
 HSPLandroid/net/NetworkCapabilities;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkConfig;-><init>(Ljava/lang/String;)V
-HSPLandroid/net/NetworkFactory$SerialNumber;->nextSerialNumber()I
-HSPLandroid/net/NetworkFactory;-><init>(Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkCapabilities;)V
-HSPLandroid/net/NetworkFactory;->acceptRequest(Landroid/net/NetworkRequest;I)Z
-HSPLandroid/net/NetworkFactory;->getSerialNumber()I
-HSPLandroid/net/NetworkFactory;->handleAddRequest(Landroid/net/NetworkRequest;II)V
-HSPLandroid/net/NetworkFactory;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/net/NetworkFactory;->handleRemoveRequest(Landroid/net/NetworkRequest;)V
-HSPLandroid/net/NetworkFactory;->lambda$reevaluateAllRequests$0$NetworkFactory()V
-HSPLandroid/net/NetworkFactory;->log(Ljava/lang/String;)V
-HSPLandroid/net/NetworkFactory;->reevaluateAllRequests()V
-HSPLandroid/net/NetworkFactory;->register()V
-HSPLandroid/net/NetworkFactory;->setCapabilityFilter(Landroid/net/NetworkCapabilities;)V
-HSPLandroid/net/NetworkFactory;->setScoreFilter(I)V
-HSPLandroid/net/NetworkFactory;->shouldNeedNetworkFor(Landroid/net/NetworkFactory$NetworkRequestInfo;)Z
-HSPLandroid/net/NetworkFactory;->shouldReleaseNetworkFor(Landroid/net/NetworkFactory$NetworkRequestInfo;)Z
-HSPLandroid/net/NetworkIdentity;->buildNetworkIdentity(Landroid/content/Context;Landroid/net/NetworkState;Z)Landroid/net/NetworkIdentity;
-HPLandroid/net/NetworkIdentity;->compareTo(Landroid/net/NetworkIdentity;)I
-HSPLandroid/net/NetworkIdentity;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkIdentity;->getDefaultNetwork()Z
-HSPLandroid/net/NetworkIdentity;->getMetered()Z
-HSPLandroid/net/NetworkIdentity;->getNetworkId()Ljava/lang/String;
-HSPLandroid/net/NetworkIdentity;->getRoaming()Z
-HSPLandroid/net/NetworkIdentity;->getSubType()I
-HSPLandroid/net/NetworkIdentity;->getSubscriberId()Ljava/lang/String;
-HSPLandroid/net/NetworkIdentity;->getType()I
-HSPLandroid/net/NetworkIdentity;->hashCode()I
-HSPLandroid/net/NetworkIdentity;->scrubSubscriberId(Ljava/lang/String;)Ljava/lang/String;
-HPLandroid/net/NetworkIdentity;->toString()Ljava/lang/String;
-HSPLandroid/net/NetworkInfo$1;-><init>()V
 HSPLandroid/net/NetworkInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkInfo;
 HSPLandroid/net/NetworkInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/NetworkInfo$DetailedState;-><init>(Ljava/lang/String;I)V
-HSPLandroid/net/NetworkInfo$DetailedState;->values()[Landroid/net/NetworkInfo$DetailedState;
-HSPLandroid/net/NetworkInfo$State;-><init>(Ljava/lang/String;I)V
+HSPLandroid/net/NetworkInfo$DetailedState;->valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$DetailedState;
+HSPLandroid/net/NetworkInfo$State;->valueOf(Ljava/lang/String;)Landroid/net/NetworkInfo$State;
 HSPLandroid/net/NetworkInfo$State;->values()[Landroid/net/NetworkInfo$State;
 HSPLandroid/net/NetworkInfo;-><init>(IILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/net/NetworkInfo;-><init>(Landroid/net/NetworkInfo;)V
-HSPLandroid/net/NetworkInfo;->describeContents()I
+HSPLandroid/net/NetworkInfo;->access$002(Landroid/net/NetworkInfo;Landroid/net/NetworkInfo$State;)Landroid/net/NetworkInfo$State;
+HSPLandroid/net/NetworkInfo;->access$102(Landroid/net/NetworkInfo;Landroid/net/NetworkInfo$DetailedState;)Landroid/net/NetworkInfo$DetailedState;
+HSPLandroid/net/NetworkInfo;->access$202(Landroid/net/NetworkInfo;Z)Z
+HSPLandroid/net/NetworkInfo;->access$302(Landroid/net/NetworkInfo;Z)Z
+HSPLandroid/net/NetworkInfo;->access$402(Landroid/net/NetworkInfo;Z)Z
+HSPLandroid/net/NetworkInfo;->access$502(Landroid/net/NetworkInfo;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/net/NetworkInfo;->access$602(Landroid/net/NetworkInfo;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/NetworkInfo;->getDetailedState()Landroid/net/NetworkInfo$DetailedState;
 HSPLandroid/net/NetworkInfo;->getExtraInfo()Ljava/lang/String;
-HSPLandroid/net/NetworkInfo;->getReason()Ljava/lang/String;
 HSPLandroid/net/NetworkInfo;->getState()Landroid/net/NetworkInfo$State;
 HSPLandroid/net/NetworkInfo;->getSubtype()I
 HSPLandroid/net/NetworkInfo;->getSubtypeName()Ljava/lang/String;
@@ -10331,54 +8563,19 @@
 HSPLandroid/net/NetworkInfo;->getTypeName()Ljava/lang/String;
 HSPLandroid/net/NetworkInfo;->isConnected()Z
 HSPLandroid/net/NetworkInfo;->isConnectedOrConnecting()Z
-HSPLandroid/net/NetworkInfo;->isFailover()Z
 HSPLandroid/net/NetworkInfo;->isRoaming()Z
 HSPLandroid/net/NetworkInfo;->setDetailedState(Landroid/net/NetworkInfo$DetailedState;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/net/NetworkInfo;->setExtraInfo(Ljava/lang/String;)V
-HSPLandroid/net/NetworkInfo;->setIsAvailable(Z)V
-HSPLandroid/net/NetworkInfo;->setRoaming(Z)V
-HSPLandroid/net/NetworkInfo;->setSubtype(ILjava/lang/String;)V
-HSPLandroid/net/NetworkInfo;->setType(I)V
 HSPLandroid/net/NetworkInfo;->toString()Ljava/lang/String;
-HSPLandroid/net/NetworkInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkKey$1;-><init>()V
 HSPLandroid/net/NetworkKey$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkKey;
 HSPLandroid/net/NetworkKey$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/NetworkKey$1;->newArray(I)[Landroid/net/NetworkKey;
-HSPLandroid/net/NetworkKey$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/net/NetworkKey;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/NetworkKey;->createFromScanResult(Landroid/net/wifi/ScanResult;)Landroid/net/NetworkKey;
-HSPLandroid/net/NetworkKey;->createFromWifiInfo(Landroid/net/wifi/WifiInfo;)Landroid/net/NetworkKey;
-HSPLandroid/net/NetworkKey;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkKey;->hashCode()I
+HSPLandroid/net/NetworkKey;-><init>(Landroid/os/Parcel;Landroid/net/NetworkKey$1;)V
 HSPLandroid/net/NetworkKey;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkMisc$1;-><init>()V
-HSPLandroid/net/NetworkMisc$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkMisc;
-HSPLandroid/net/NetworkMisc$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/NetworkMisc;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkPolicy$1;-><init>()V
-HSPLandroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJJZZ)V
-HSPLandroid/net/NetworkPolicy;-><init>(Landroid/net/NetworkTemplate;Landroid/util/RecurrenceRule;JJJJZZ)V
-HSPLandroid/net/NetworkPolicy;->buildRule(ILjava/time/ZoneId;)Landroid/util/RecurrenceRule;
-HSPLandroid/net/NetworkPolicy;->cycleIterator()Ljava/util/Iterator;
-HSPLandroid/net/NetworkPolicy;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkPolicy;->hasCycle()Z
-HSPLandroid/net/NetworkPolicy;->isOverLimit(J)Z
-HSPLandroid/net/NetworkPolicy;->isOverWarning(J)Z
-HSPLandroid/net/NetworkPolicy;->toString()Ljava/lang/String;
-HSPLandroid/net/NetworkPolicyManager$1;->hasNext()Z
-HSPLandroid/net/NetworkPolicyManager$1;->next()Landroid/util/Pair;
-HSPLandroid/net/NetworkPolicyManager$1;->next()Ljava/lang/Object;
 HSPLandroid/net/NetworkPolicyManager$Listener;-><init>()V
 HSPLandroid/net/NetworkPolicyManager$Listener;->onMeteredIfacesChanged([Ljava/lang/String;)V
 HSPLandroid/net/NetworkPolicyManager$Listener;->onUidRulesChanged(II)V
 HSPLandroid/net/NetworkPolicyManager;-><init>(Landroid/content/Context;Landroid/net/INetworkPolicyManager;)V
-HSPLandroid/net/NetworkPolicyManager;->cycleIterator(Landroid/net/NetworkPolicy;)Ljava/util/Iterator;
-HSPLandroid/net/NetworkPolicyManager;->from(Landroid/content/Context;)Landroid/net/NetworkPolicyManager;
-HSPLandroid/net/NetworkPolicyManager;->getNetworkPolicies()[Landroid/net/NetworkPolicy;
-HSPLandroid/net/NetworkPolicyManager;->getRestrictBackground()Z
 HSPLandroid/net/NetworkPolicyManager;->registerListener(Landroid/net/INetworkPolicyListener;)V
-HSPLandroid/net/NetworkRequest$1;-><init>()V
 HSPLandroid/net/NetworkRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkRequest;
 HSPLandroid/net/NetworkRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/NetworkRequest$Builder;-><init>()V
@@ -10387,212 +8584,95 @@
 HSPLandroid/net/NetworkRequest$Builder;->build()Landroid/net/NetworkRequest;
 HSPLandroid/net/NetworkRequest$Builder;->clearCapabilities()Landroid/net/NetworkRequest$Builder;
 HSPLandroid/net/NetworkRequest$Builder;->removeCapability(I)Landroid/net/NetworkRequest$Builder;
-HSPLandroid/net/NetworkRequest$Builder;->setNetworkSpecifier(Landroid/net/NetworkSpecifier;)Landroid/net/NetworkRequest$Builder;
-HSPLandroid/net/NetworkRequest$Builder;->setNetworkSpecifier(Ljava/lang/String;)Landroid/net/NetworkRequest$Builder;
-HSPLandroid/net/NetworkRequest$Type;-><init>(Ljava/lang/String;I)V
+HSPLandroid/net/NetworkRequest$Type;->valueOf(Ljava/lang/String;)Landroid/net/NetworkRequest$Type;
 HSPLandroid/net/NetworkRequest$Type;->values()[Landroid/net/NetworkRequest$Type;
 HSPLandroid/net/NetworkRequest;-><init>(Landroid/net/NetworkCapabilities;IILandroid/net/NetworkRequest$Type;)V
-HSPLandroid/net/NetworkRequest;-><init>(Landroid/net/NetworkRequest;)V
 HSPLandroid/net/NetworkRequest;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkRequest;->hasCapability(I)Z
 HSPLandroid/net/NetworkRequest;->hashCode()I
-HSPLandroid/net/NetworkRequest;->isBackgroundRequest()Z
-HSPLandroid/net/NetworkRequest;->isForegroundRequest()Z
-HSPLandroid/net/NetworkRequest;->isListen()Z
-HSPLandroid/net/NetworkRequest;->isRequest()Z
-HSPLandroid/net/NetworkRequest;->toString()Ljava/lang/String;
 HSPLandroid/net/NetworkRequest;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/net/NetworkScoreManager;-><init>(Landroid/content/Context;)V
-HPLandroid/net/NetworkScoreManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
-HSPLandroid/net/NetworkScoreManager;->getActiveScorerPackage()Ljava/lang/String;
 HSPLandroid/net/NetworkScoreManager;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V
-HSPLandroid/net/NetworkScoreManager;->requestScores([Landroid/net/NetworkKey;)Z
-HSPLandroid/net/NetworkScorerAppData$1;-><init>()V
-HSPLandroid/net/NetworkScorerAppData;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkScorerAppData;->getRecommendationServicePackageName()Ljava/lang/String;
-HSPLandroid/net/NetworkSpecifier;->assertValidFromUid(I)V
-HSPLandroid/net/NetworkSpecifier;->redact()Landroid/net/NetworkSpecifier;
-HSPLandroid/net/NetworkState$1;-><init>()V
-HSPLandroid/net/NetworkState;-><init>(Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/Network;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/net/NetworkStats$1;-><init>()V
-HSPLandroid/net/NetworkStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkStats;
-HSPLandroid/net/NetworkStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/NetworkSpecifier;-><init>()V
 HSPLandroid/net/NetworkStats$Entry;-><init>()V
 HSPLandroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIIIIJJJJJ)V
 HSPLandroid/net/NetworkStats$Entry;-><init>(Ljava/lang/String;IIIJJJJJ)V
-HSPLandroid/net/NetworkStats$Entry;->isEmpty()Z
-HSPLandroid/net/NetworkStats$Entry;->isNegative()Z
 HSPLandroid/net/NetworkStats;-><init>(JI)V
-HSPLandroid/net/NetworkStats;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/NetworkStats;->addValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats;
-HSPLandroid/net/NetworkStats;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Ljava/util/Map;Z)V
-HSPLandroid/net/NetworkStats;->apply464xlatAdjustments(Ljava/util/Map;Z)V
-HSPLandroid/net/NetworkStats;->clear()V
-HSPLandroid/net/NetworkStats;->clone()Landroid/net/NetworkStats;
-HSPLandroid/net/NetworkStats;->combineAllValues(Landroid/net/NetworkStats;)V
-HSPLandroid/net/NetworkStats;->combineValues(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats;
-HPLandroid/net/NetworkStats;->combineValues(Ljava/lang/String;IIIJJJJJ)Landroid/net/NetworkStats;
-HSPLandroid/net/NetworkStats;->filter(I[Ljava/lang/String;I)V
-HSPLandroid/net/NetworkStats;->findIndex(Ljava/lang/String;IIIIII)I
-HSPLandroid/net/NetworkStats;->findIndexHinted(Ljava/lang/String;IIIIIII)I
-HSPLandroid/net/NetworkStats;->getElapsedRealtime()J
-HSPLandroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
-HSPLandroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;Ljava/util/HashSet;)Landroid/net/NetworkStats$Entry;
-HSPLandroid/net/NetworkStats;->getTotal(Landroid/net/NetworkStats$Entry;Ljava/util/HashSet;IZ)Landroid/net/NetworkStats$Entry;
-HSPLandroid/net/NetworkStats;->getTotalBytes()J
-HSPLandroid/net/NetworkStats;->getValues(ILandroid/net/NetworkStats$Entry;)Landroid/net/NetworkStats$Entry;
-HSPLandroid/net/NetworkStats;->maybeCopyEntry(II)V
-HSPLandroid/net/NetworkStats;->removeUids([I)V
-HSPLandroid/net/NetworkStats;->setElapsedRealtime(J)V
-HPLandroid/net/NetworkStats;->setToString(I)Ljava/lang/String;
-HSPLandroid/net/NetworkStats;->setValues(ILandroid/net/NetworkStats$Entry;)V
-HSPLandroid/net/NetworkStats;->size()I
-HSPLandroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;)Landroid/net/NetworkStats;
-HSPLandroid/net/NetworkStats;->subtract(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/net/NetworkStats$NonMonotonicObserver;Ljava/lang/Object;Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-HPLandroid/net/NetworkStats;->tagToString(I)Ljava/lang/String;
-HSPLandroid/net/NetworkStats;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkStatsHistory$1;-><init>()V
-HSPLandroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLong(Ljava/io/DataInputStream;)J
-HSPLandroid/net/NetworkStatsHistory$DataStreamUtils;->readVarLongArray(Ljava/io/DataInputStream;)[J
-HSPLandroid/net/NetworkStatsHistory$DataStreamUtils;->writeVarLongArray(Ljava/io/DataOutputStream;[JI)V
-HPLandroid/net/NetworkStatsHistory$ParcelUtils;->writeLongArray(Landroid/os/Parcel;[JI)V
-HSPLandroid/net/NetworkStatsHistory;-><init>(J)V
-HSPLandroid/net/NetworkStatsHistory;-><init>(JI)V
-HSPLandroid/net/NetworkStatsHistory;-><init>(JII)V
-HSPLandroid/net/NetworkStatsHistory;-><init>(Ljava/io/DataInputStream;)V
-HSPLandroid/net/NetworkStatsHistory;->addLong([JIJ)V
-HPLandroid/net/NetworkStatsHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;Z)V
-HSPLandroid/net/NetworkStatsHistory;->ensureBuckets(JJ)V
-HSPLandroid/net/NetworkStatsHistory;->getBucketDuration()J
-HSPLandroid/net/NetworkStatsHistory;->getEnd()J
-HSPLandroid/net/NetworkStatsHistory;->getIndexAfter(J)I
-HSPLandroid/net/NetworkStatsHistory;->getStart()J
-HSPLandroid/net/NetworkStatsHistory;->getTotalBytes()J
-HSPLandroid/net/NetworkStatsHistory;->getValues(JJJLandroid/net/NetworkStatsHistory$Entry;)Landroid/net/NetworkStatsHistory$Entry;
-HSPLandroid/net/NetworkStatsHistory;->insertBucket(IJ)V
-HSPLandroid/net/NetworkStatsHistory;->recordData(JJLandroid/net/NetworkStats$Entry;)V
-HSPLandroid/net/NetworkStatsHistory;->recordEntireHistory(Landroid/net/NetworkStatsHistory;)V
-HSPLandroid/net/NetworkStatsHistory;->recordHistory(Landroid/net/NetworkStatsHistory;JJ)V
-HSPLandroid/net/NetworkStatsHistory;->size()I
-HPLandroid/net/NetworkStatsHistory;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/NetworkStatsHistory;->writeToStream(Ljava/io/DataOutputStream;)V
 HSPLandroid/net/NetworkTemplate$1;-><init>()V
-HSPLandroid/net/NetworkTemplate$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/NetworkTemplate;
-HSPLandroid/net/NetworkTemplate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/NetworkTemplate;-><clinit>()V
 HSPLandroid/net/NetworkTemplate;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+HSPLandroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/net/NetworkTemplate;-><init>(ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;III)V
-HSPLandroid/net/NetworkTemplate;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/NetworkTemplate;->buildTemplateMobileAll(Ljava/lang/String;)Landroid/net/NetworkTemplate;
-HSPLandroid/net/NetworkTemplate;->buildTemplateMobileWildcard()Landroid/net/NetworkTemplate;
 HSPLandroid/net/NetworkTemplate;->buildTemplateWifiWildcard()Landroid/net/NetworkTemplate;
-HSPLandroid/net/NetworkTemplate;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/NetworkTemplate;->getMatchRule()I
-HSPLandroid/net/NetworkTemplate;->getMatchRuleName(I)Ljava/lang/String;
-HSPLandroid/net/NetworkTemplate;->getNetworkId()Ljava/lang/String;
-HSPLandroid/net/NetworkTemplate;->getSubscriberId()Ljava/lang/String;
-HSPLandroid/net/NetworkTemplate;->hashCode()I
-HSPLandroid/net/NetworkTemplate;->isMatchRuleMobile()Z
-HSPLandroid/net/NetworkTemplate;->isPersistable()Z
-HSPLandroid/net/NetworkTemplate;->matches(Landroid/net/NetworkIdentity;)Z
-HSPLandroid/net/NetworkTemplate;->matchesMobile(Landroid/net/NetworkIdentity;)Z
-HSPLandroid/net/NetworkTemplate;->normalize(Landroid/net/NetworkTemplate;[Ljava/lang/String;)Landroid/net/NetworkTemplate;
-HSPLandroid/net/NetworkTemplate;->toString()Ljava/lang/String;
-HSPLandroid/net/NetworkTemplate;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/net/NetworkUtils;->inetAddressToInt(Ljava/net/Inet4Address;)I
-HSPLandroid/net/NetworkUtils;->makeStrings(Ljava/util/Collection;)[Ljava/lang/String;
+HSPLandroid/net/NetworkTemplate;->isKnownMatchRule(I)Z
 HSPLandroid/net/NetworkUtils;->maskRawAddress([BI)V
-HSPLandroid/net/NetworkUtils;->numericToInetAddress(Ljava/lang/String;)Ljava/net/InetAddress;
-HSPLandroid/net/NetworkUtils;->parseIpAndMask(Ljava/lang/String;)Landroid/util/Pair;
-HPLandroid/net/NetworkWatchlistManager;-><init>(Landroid/content/Context;)V
-HPLandroid/net/NetworkWatchlistManager;->reportWatchlistIfNecessary()V
 HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Landroid/net/ProxyInfo;)V
 HSPLandroid/net/Proxy;->setHttpProxySystemProperty(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
-HSPLandroid/net/ProxyInfo$1;-><init>()V
-HSPLandroid/net/RouteInfo$1;-><init>()V
 HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/RouteInfo;
 HSPLandroid/net/RouteInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;)V
 HSPLandroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;I)V
-HPLandroid/net/RouteInfo;-><init>(Landroid/net/LinkAddress;Ljava/net/InetAddress;Ljava/lang/String;)V
-HSPLandroid/net/RouteInfo;-><init>(Ljava/net/InetAddress;)V
+HSPLandroid/net/RouteInfo;-><init>(Landroid/net/IpPrefix;Ljava/net/InetAddress;Ljava/lang/String;II)V
 HSPLandroid/net/RouteInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/net/RouteInfo;->getDestination()Landroid/net/IpPrefix;
+HSPLandroid/net/RouteInfo;->getGateway()Ljava/net/InetAddress;
+HSPLandroid/net/RouteInfo;->getInterface()Ljava/lang/String;
+HSPLandroid/net/RouteInfo;->getType()I
+HSPLandroid/net/RouteInfo;->isDefaultRoute()Z
 HSPLandroid/net/RouteInfo;->isHost()Z
-HSPLandroid/net/RouteInfo;->selectBestRoute(Ljava/util/Collection;Ljava/net/InetAddress;)Landroid/net/RouteInfo;
 HSPLandroid/net/RouteInfo;->toString()Ljava/lang/String;
-HSPLandroid/net/SSLCertificateSocketFactory$1;-><init>()V
-HSPLandroid/net/ScoredNetwork$1;-><init>()V
-HSPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ScoredNetwork;
-HSPLandroid/net/ScoredNetwork$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/net/ScoredNetwork$1;->newArray(I)[Landroid/net/ScoredNetwork;
-HPLandroid/net/ScoredNetwork$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/net/ScoredNetwork;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/SntpClient;->checkValidServerReply(BBIJ)V
-HSPLandroid/net/SntpClient;->read32([BI)J
-HSPLandroid/net/SntpClient;->readTimeStamp([BI)J
-HSPLandroid/net/SntpClient;->requestTime(Ljava/lang/String;ILandroid/net/Network;)Z
-HSPLandroid/net/SntpClient;->requestTime(Ljava/net/InetAddress;IILandroid/net/Network;)Z
-HSPLandroid/net/SntpClient;->writeTimeStamp([BIJ)V
-HSPLandroid/net/StaticIpConfiguration$1;-><init>()V
-HSPLandroid/net/StaticIpConfiguration;-><init>()V
-HSPLandroid/net/StaticIpConfiguration;->addDnsServer(Ljava/net/InetAddress;)V
-HSPLandroid/net/StringNetworkSpecifier$1;-><init>()V
+HSPLandroid/net/RouteInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/net/StringNetworkSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/StringNetworkSpecifier;
 HSPLandroid/net/StringNetworkSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/StringNetworkSpecifier;-><init>(Ljava/lang/String;)V
-HSPLandroid/net/StringNetworkSpecifier;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/StringNetworkSpecifier;->hashCode()I
-HSPLandroid/net/StringNetworkSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-HSPLandroid/net/StringNetworkSpecifier;->toString()Ljava/lang/String;
-HSPLandroid/net/StringNetworkSpecifier;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/TetherStatsParcel$1;-><init>()V
-HSPLandroid/net/TetherStatsParcel$1;->newArray(I)[Landroid/net/TetherStatsParcel;
-HSPLandroid/net/TetherStatsParcel$1;->newArray(I)[Ljava/lang/Object;
+HSPLandroid/net/TelephonyNetworkSpecifier$1;-><init>()V
+HSPLandroid/net/TelephonyNetworkSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/TelephonyNetworkSpecifier;
+HSPLandroid/net/TelephonyNetworkSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/TelephonyNetworkSpecifier;-><clinit>()V
+HSPLandroid/net/TelephonyNetworkSpecifier;-><init>(I)V
 HSPLandroid/net/TrafficStats;->clearThreadStatsTag()V
-HSPLandroid/net/TrafficStats;->getAndSetThreadStatsTag(I)I
-HSPLandroid/net/TrafficStats;->getMobileIfaces()[Ljava/lang/String;
-HSPLandroid/net/TrafficStats;->getMobileRxPackets()J
-HSPLandroid/net/TrafficStats;->getMobileTxPackets()J
-HSPLandroid/net/TrafficStats;->getRxPackets(Ljava/lang/String;)J
 HSPLandroid/net/TrafficStats;->getStatsService()Landroid/net/INetworkStatsService;
-HSPLandroid/net/TrafficStats;->getTxPackets(Ljava/lang/String;)J
 HSPLandroid/net/TrafficStats;->getUidRxBytes(I)J
 HSPLandroid/net/TrafficStats;->getUidTxBytes(I)J
 HSPLandroid/net/TrafficStats;->setThreadStatsTag(I)V
-HSPLandroid/net/UidRange$1;-><init>()V
 HSPLandroid/net/UidRange$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/UidRange;
 HSPLandroid/net/UidRange$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/UidRange;-><init>(II)V
 HSPLandroid/net/UidRange;->equals(Ljava/lang/Object;)Z
 HSPLandroid/net/UidRange;->hashCode()I
 HSPLandroid/net/UidRange;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/UidRangeParcel$1;-><init>()V
-HSPLandroid/net/UidRangeParcel;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/Uri$1;-><init>()V
 HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/Uri;
 HSPLandroid/net/Uri$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/net/Uri$1;->newArray(I)[Landroid/net/Uri;
 HSPLandroid/net/Uri$1;->newArray(I)[Ljava/lang/Object;
+HSPLandroid/net/Uri$AbstractHierarchicalUri;-><init>()V
 HSPLandroid/net/Uri$AbstractHierarchicalUri;-><init>(Landroid/net/Uri$1;)V
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->findPortSeparator(Ljava/lang/String;)I
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->getHost()Ljava/lang/String;
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->getLastPathSegment()Ljava/lang/String;
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->getPort()I
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->getUserInfo()Ljava/lang/String;
+HSPLandroid/net/Uri$AbstractHierarchicalUri;->getUserInfoPart()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseHost()Ljava/lang/String;
 HSPLandroid/net/Uri$AbstractHierarchicalUri;->parsePort()I
+HSPLandroid/net/Uri$AbstractHierarchicalUri;->parseUserInfo()Ljava/lang/String;
+HSPLandroid/net/Uri$AbstractPart;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String;
 HSPLandroid/net/Uri$AbstractPart;->writeTo(Landroid/os/Parcel;)V
 HSPLandroid/net/Uri$Builder;-><init>()V
 HSPLandroid/net/Uri$Builder;->appendEncodedPath(Ljava/lang/String;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->appendPath(Ljava/lang/String;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->appendQueryParameter(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Builder;
+HSPLandroid/net/Uri$Builder;->authority(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->authority(Ljava/lang/String;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->build()Landroid/net/Uri;
 HSPLandroid/net/Uri$Builder;->clearQuery()Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->encodedAuthority(Ljava/lang/String;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->encodedFragment(Ljava/lang/String;)Landroid/net/Uri$Builder;
-HSPLandroid/net/Uri$Builder;->encodedQuery(Ljava/lang/String;)Landroid/net/Uri$Builder;
+HSPLandroid/net/Uri$Builder;->fragment(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->fragment(Ljava/lang/String;)Landroid/net/Uri$Builder;
+HSPLandroid/net/Uri$Builder;->hasSchemeOrAuthority()Z
+HSPLandroid/net/Uri$Builder;->path(Landroid/net/Uri$PathPart;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->path(Ljava/lang/String;)Landroid/net/Uri$Builder;
+HSPLandroid/net/Uri$Builder;->query(Landroid/net/Uri$Part;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->scheme(Ljava/lang/String;)Landroid/net/Uri$Builder;
 HSPLandroid/net/Uri$Builder;->toString()Ljava/lang/String;
 HSPLandroid/net/Uri$HierarchicalUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$PathPart;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V
@@ -10609,26 +8689,36 @@
 HSPLandroid/net/Uri$HierarchicalUri;->getQuery()Ljava/lang/String;
 HSPLandroid/net/Uri$HierarchicalUri;->getScheme()Ljava/lang/String;
 HSPLandroid/net/Uri$HierarchicalUri;->getSchemeSpecificPart()Ljava/lang/String;
+HSPLandroid/net/Uri$HierarchicalUri;->getSsp()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$HierarchicalUri;->isHierarchical()Z
+HSPLandroid/net/Uri$HierarchicalUri;->makeSchemeSpecificPart()Ljava/lang/String;
 HSPLandroid/net/Uri$HierarchicalUri;->makeUriString()Ljava/lang/String;
+HSPLandroid/net/Uri$HierarchicalUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;
 HSPLandroid/net/Uri$HierarchicalUri;->toString()Ljava/lang/String;
 HSPLandroid/net/Uri$HierarchicalUri;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/net/Uri$OpaqueUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$Part;)V
+HSPLandroid/net/Uri$OpaqueUri;-><init>(Ljava/lang/String;Landroid/net/Uri$Part;Landroid/net/Uri$Part;Landroid/net/Uri$1;)V
 HSPLandroid/net/Uri$OpaqueUri;->getEncodedSchemeSpecificPart()Ljava/lang/String;
-HSPLandroid/net/Uri$OpaqueUri;->getHost()Ljava/lang/String;
 HSPLandroid/net/Uri$OpaqueUri;->getScheme()Ljava/lang/String;
 HSPLandroid/net/Uri$OpaqueUri;->getSchemeSpecificPart()Ljava/lang/String;
+HSPLandroid/net/Uri$OpaqueUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;
 HSPLandroid/net/Uri$OpaqueUri;->toString()Ljava/lang/String;
 HSPLandroid/net/Uri$OpaqueUri;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/Uri$Part$EmptyPart;-><init>(Ljava/lang/String;)V
 HSPLandroid/net/Uri$Part$EmptyPart;->isEmpty()Z
+HSPLandroid/net/Uri$Part;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/net/Uri$Part;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$Part;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$Part;
+HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$Part;->getEncoded()Ljava/lang/String;
 HSPLandroid/net/Uri$Part;->isEmpty()Z
+HSPLandroid/net/Uri$Part;->nonNull(Landroid/net/Uri$Part;)Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$Part;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$PathPart;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/net/Uri$PathPart;->appendDecodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->appendEncodedSegment(Landroid/net/Uri$PathPart;Ljava/lang/String;)Landroid/net/Uri$PathPart;
+HSPLandroid/net/Uri$PathPart;->from(Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri$PathPart;
+HSPLandroid/net/Uri$PathPart;->fromDecoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
+HSPLandroid/net/Uri$PathPart;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$PathPart;->getEncoded()Ljava/lang/String;
 HSPLandroid/net/Uri$PathPart;->getPathSegments()Landroid/net/Uri$PathSegments;
 HSPLandroid/net/Uri$PathPart;->makeAbsolute(Landroid/net/Uri$PathPart;)Landroid/net/Uri$PathPart;
@@ -10637,29 +8727,41 @@
 HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/Object;
 HSPLandroid/net/Uri$PathSegments;->get(I)Ljava/lang/String;
 HSPLandroid/net/Uri$PathSegments;->size()I
+HSPLandroid/net/Uri$PathSegmentsBuilder;-><init>()V
 HSPLandroid/net/Uri$PathSegmentsBuilder;->add(Ljava/lang/String;)V
 HSPLandroid/net/Uri$PathSegmentsBuilder;->build()Landroid/net/Uri$PathSegments;
 HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;)V
+HSPLandroid/net/Uri$StringUri;-><init>(Ljava/lang/String;Landroid/net/Uri$1;)V
 HSPLandroid/net/Uri$StringUri;->buildUpon()Landroid/net/Uri$Builder;
+HSPLandroid/net/Uri$StringUri;->findFragmentSeparator()I
+HSPLandroid/net/Uri$StringUri;->findSchemeSeparator()I
 HSPLandroid/net/Uri$StringUri;->getAuthority()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->getAuthorityPart()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$StringUri;->getEncodedAuthority()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->getEncodedPath()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->getEncodedQuery()Ljava/lang/String;
-HSPLandroid/net/Uri$StringUri;->getFragment()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->getFragmentPart()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$StringUri;->getPath()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->getPathPart()Landroid/net/Uri$PathPart;
 HSPLandroid/net/Uri$StringUri;->getPathSegments()Ljava/util/List;
+HSPLandroid/net/Uri$StringUri;->getQueryPart()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$StringUri;->getScheme()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->getSchemeSpecificPart()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->getSsp()Landroid/net/Uri$Part;
 HSPLandroid/net/Uri$StringUri;->isHierarchical()Z
-HSPLandroid/net/Uri$StringUri;->isRelative()Z
 HSPLandroid/net/Uri$StringUri;->parseAuthority(Ljava/lang/String;I)Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->parsePath()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->parsePath(Ljava/lang/String;I)Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->parseQuery()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->parseScheme()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->parseSsp()Ljava/lang/String;
+HSPLandroid/net/Uri$StringUri;->readFrom(Landroid/os/Parcel;)Landroid/net/Uri;
 HSPLandroid/net/Uri$StringUri;->toString()Ljava/lang/String;
 HSPLandroid/net/Uri$StringUri;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/net/Uri;-><init>()V
+HSPLandroid/net/Uri;-><init>(Landroid/net/Uri$1;)V
 HSPLandroid/net/Uri;->access$300()Ljava/lang/String;
-HSPLandroid/net/Uri;->checkContentUriWithoutPermission(Ljava/lang/String;I)V
 HSPLandroid/net/Uri;->checkFileUriExposed(Ljava/lang/String;)V
 HSPLandroid/net/Uri;->decode(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/Uri;->encode(Ljava/lang/String;)Ljava/lang/String;
@@ -10667,438 +8769,89 @@
 HSPLandroid/net/Uri;->equals(Ljava/lang/Object;)Z
 HSPLandroid/net/Uri;->fromFile(Ljava/io/File;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->fromParts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/net/Uri;
+HSPLandroid/net/Uri;->getBooleanQueryParameter(Ljava/lang/String;Z)Z
 HSPLandroid/net/Uri;->getQueryParameter(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/net/Uri;->getQueryParameterNames()Ljava/util/Set;
-HSPLandroid/net/Uri;->getQueryParameters(Ljava/lang/String;)Ljava/util/List;
 HSPLandroid/net/Uri;->hashCode()I
-HSPLandroid/net/Uri;->isAbsolute()Z
 HSPLandroid/net/Uri;->isAllowed(CLjava/lang/String;)Z
 HSPLandroid/net/Uri;->isOpaque()Z
-HSPLandroid/net/Uri;->isPathPrefixMatch(Landroid/net/Uri;)Z
-HSPLandroid/net/Uri;->normalizeScheme()Landroid/net/Uri;
 HSPLandroid/net/Uri;->parse(Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->toSafeString()Ljava/lang/String;
 HSPLandroid/net/Uri;->withAppendedPath(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/net/Uri;->writeToParcel(Landroid/os/Parcel;Landroid/net/Uri;)V
 HSPLandroid/net/UriCodec;->appendDecoded(Ljava/lang/StringBuilder;Ljava/lang/String;ZLjava/nio/charset/Charset;Z)V
+HSPLandroid/net/UriCodec;->decode(Ljava/lang/String;ZLjava/nio/charset/Charset;Z)Ljava/lang/String;
 HSPLandroid/net/UriCodec;->flushDecodingByteAccumulator(Ljava/lang/StringBuilder;Ljava/nio/charset/CharsetDecoder;Ljava/nio/ByteBuffer;Z)V
 HSPLandroid/net/UriCodec;->getNextCharacter(Ljava/lang/String;IILjava/lang/String;)C
 HSPLandroid/net/UriCodec;->hexCharToValue(C)I
-HSPLandroid/net/WebAddress;-><init>(Ljava/lang/String;)V
-HSPLandroid/net/WebAddress;->toString()Ljava/lang/String;
-HSPLandroid/net/WifiKey$1;-><init>()V
 HSPLandroid/net/WifiKey$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/WifiKey;
 HSPLandroid/net/WifiKey$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/WifiKey;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/net/WifiKey;-><init>(Landroid/os/Parcel;Landroid/net/WifiKey$1;)V
 HSPLandroid/net/WifiKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/net/WifiKey;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/WifiKey;->hashCode()I
 HSPLandroid/net/WifiKey;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/apf/ApfCapabilities$1;-><init>()V
-HSPLandroid/net/apf/ApfCapabilities;-><init>(III)V
 HSPLandroid/net/http/X509TrustManagerExtensions;-><init>(Ljavax/net/ssl/X509TrustManager;)V
 HSPLandroid/net/http/X509TrustManagerExtensions;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-PLandroid/net/ipmemorystore/Blob$1;-><init>()V
-HSPLandroid/net/metrics/ApfProgramEvent$1;-><init>()V
-PLandroid/net/metrics/ApfProgramEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/ApfProgramEvent;
-PLandroid/net/metrics/ApfProgramEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/net/metrics/ApfProgramEvent;-><init>(Landroid/os/Parcel;)V
-PLandroid/net/metrics/ApfStats$1;-><init>()V
-PLandroid/net/metrics/ApfStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/ApfStats;
-PLandroid/net/metrics/ApfStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/net/metrics/ApfStats;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/metrics/ConnectStats;-><init>(IJLcom/android/internal/util/TokenBucket;I)V
-HSPLandroid/net/metrics/ConnectStats;->addEvent(IILjava/lang/String;)Z
-HSPLandroid/net/metrics/ConnectStats;->countLatency(II)V
-HSPLandroid/net/metrics/DefaultNetworkEvent;->updateDuration(J)V
-HSPLandroid/net/metrics/DhcpClientEvent$1;-><init>()V
-PLandroid/net/metrics/DhcpClientEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/DhcpClientEvent;
-HPLandroid/net/metrics/DhcpClientEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/metrics/DnsEvent;->addResult(BBI)Z
-PLandroid/net/metrics/DnsEvent;->resize(I)V
-HSPLandroid/net/metrics/IpConnectivityLog;->log(I[ILandroid/net/metrics/IpConnectivityLog$Event;)Z
-HSPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/ConnectivityMetricsEvent;)Z
-HSPLandroid/net/metrics/IpManagerEvent$1;-><init>()V
-PLandroid/net/metrics/IpManagerEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/IpManagerEvent;
-PLandroid/net/metrics/IpManagerEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/net/metrics/IpReachabilityEvent$1;-><init>()V
-PLandroid/net/metrics/IpReachabilityEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/IpReachabilityEvent;
-HPLandroid/net/metrics/IpReachabilityEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/metrics/NetworkEvent$1;-><init>()V
-HSPLandroid/net/metrics/NetworkEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/NetworkEvent;
-HSPLandroid/net/metrics/NetworkEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/metrics/NetworkMetrics$Metrics;->count(D)V
-HSPLandroid/net/metrics/NetworkMetrics$Metrics;->count(DI)V
-HPLandroid/net/metrics/NetworkMetrics$Metrics;->merge(Landroid/net/metrics/NetworkMetrics$Metrics;)V
-HSPLandroid/net/metrics/NetworkMetrics$Summary;-><init>(IJ)V
-HPLandroid/net/metrics/NetworkMetrics$Summary;->merge(Landroid/net/metrics/NetworkMetrics$Summary;)V
-HSPLandroid/net/metrics/NetworkMetrics;-><init>(IJLcom/android/internal/util/TokenBucket;)V
-HSPLandroid/net/metrics/NetworkMetrics;->addConnectResult(IILjava/lang/String;)V
-HSPLandroid/net/metrics/NetworkMetrics;->addDnsResult(III)V
-HPLandroid/net/metrics/NetworkMetrics;->addTcpStatsResult(IIII)V
-HPLandroid/net/metrics/NetworkMetrics;->getPendingStats()Landroid/net/metrics/NetworkMetrics$Summary;
-HSPLandroid/net/metrics/RaEvent$1;-><init>()V
-PLandroid/net/metrics/RaEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/RaEvent;
-PLandroid/net/metrics/RaEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/net/metrics/RaEvent;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/metrics/ValidationProbeEvent$1;-><init>()V
-HSPLandroid/net/metrics/ValidationProbeEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/metrics/ValidationProbeEvent;
-HSPLandroid/net/metrics/ValidationProbeEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/net/metrics/WakeupStats;-><init>(Ljava/lang/String;)V
-PLandroid/net/metrics/WakeupStats;->countEvent(Landroid/net/metrics/WakeupEvent;)V
-PLandroid/net/metrics/WakeupStats;->updateDuration()V
-HSPLandroid/net/nsd/INsdManager$Stub;-><init>()V
-HPLandroid/net/nsd/INsdManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/shared/Inet4AddressUtils;->inet4AddressToIntHTH(Ljava/net/Inet4Address;)I
-HSPLandroid/net/sip/SipManager;->newInstance(Landroid/content/Context;)Landroid/net/sip/SipManager;
-HSPLandroid/net/util/-$$Lambda$MultinetworkPolicyTracker$0siHK6f4lHJz8hbdHbT6G4Kp-V4;->run()V
-HSPLandroid/net/util/MultinetworkPolicyTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLandroid/net/util/MultinetworkPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)V
-HSPLandroid/net/util/MultinetworkPolicyTracker;->configMeteredMultipathPreference()I
-HSPLandroid/net/util/MultinetworkPolicyTracker;->configRestrictsAvoidBadWifi()Z
-HSPLandroid/net/util/MultinetworkPolicyTracker;->getAvoidBadWifi()Z
-HSPLandroid/net/util/MultinetworkPolicyTracker;->getAvoidBadWifiSetting()Ljava/lang/String;
-HSPLandroid/net/util/MultinetworkPolicyTracker;->lambda$new$0$MultinetworkPolicyTracker(Ljava/lang/Runnable;)V
-HSPLandroid/net/util/MultinetworkPolicyTracker;->reevaluate()V
-HSPLandroid/net/util/MultinetworkPolicyTracker;->start()V
-HSPLandroid/net/util/MultinetworkPolicyTracker;->updateAvoidBadWifi()Z
-HSPLandroid/net/util/MultinetworkPolicyTracker;->updateMeteredMultipathPreference()V
-HSPLandroid/net/wifi/ISoftApCallback$Stub$Proxy;->onNumClientsChanged(I)V
-HSPLandroid/net/wifi/ISoftApCallback$Stub$Proxy;->onStateChanged(II)V
-HSPLandroid/net/wifi/ISoftApCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/ISoftApCallback;
-HPLandroid/net/wifi/ITrafficStateCallback$Stub$Proxy;->onStateChanged(I)V
-HSPLandroid/net/wifi/ITrafficStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/ITrafficStateCallback;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getAllMatchingFqdnsForScanResults(Ljava/util/List;)Ljava/util/Map;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getConfiguredNetworks(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getConnectionInfo(Ljava/lang/String;)Landroid/net/wifi/WifiInfo;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getCurrentNetwork()Landroid/net/Network;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingOsuProviders(Ljava/util/List;)Ljava/util/Map;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getMatchingPasspointConfigsForOsuProviders(Ljava/util/List;)Ljava/util/Map;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getScanResults(Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getSupportedFeatures()J
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getVerboseLoggingLevel()I
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApEnabledState()I
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiEnabledState()I
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->isScanAlwaysAvailable()Z
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->setCountryCode(Ljava/lang/String;)V
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->startScan(Ljava/lang/String;)Z
-HSPLandroid/net/wifi/IWifiManager$Stub;-><init>()V
-HSPLandroid/net/wifi/IWifiManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiManager;
-HPLandroid/net/wifi/IWifiManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/net/wifi/IWifiManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/wifi/IWifiScanner$Stub;-><init>()V
-HSPLandroid/net/wifi/IWifiScanner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/IWifiScanner;
-HPLandroid/net/wifi/IWifiScanner$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/wifi/ParcelUtil;->readPrivateKey(Landroid/os/Parcel;)Ljava/security/PrivateKey;
-HSPLandroid/net/wifi/ScanResult$1;-><init>()V
-HSPLandroid/net/wifi/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/ScanResult;
-HSPLandroid/net/wifi/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;JI[BLjava/lang/String;IIJ)V
-HSPLandroid/net/wifi/ScanResult;-><init>(Landroid/net/wifi/WifiSsid;Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-HSPLandroid/net/wifi/ScanResult;-><init>(Ljava/lang/String;Ljava/lang/String;JILjava/lang/String;IIJIIIIIZ)V
-HPLandroid/net/wifi/ScanResult;->is24GHz()Z
-HPLandroid/net/wifi/ScanResult;->is5GHz()Z
-HPLandroid/net/wifi/ScanResult;->isPasspointNetwork()Z
-HPLandroid/net/wifi/ScanResult;->setFlag(J)V
-HSPLandroid/net/wifi/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/SupplicantState$1;-><init>()V
-HSPLandroid/net/wifi/SupplicantState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/SupplicantState;
-HSPLandroid/net/wifi/SupplicantState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/SupplicantState;-><init>(Ljava/lang/String;I)V
-HSPLandroid/net/wifi/SupplicantState;->describeContents()I
-HSPLandroid/net/wifi/SupplicantState;->isConnecting(Landroid/net/wifi/SupplicantState;)Z
-HSPLandroid/net/wifi/SupplicantState;->isHandshakeState(Landroid/net/wifi/SupplicantState;)Z
-HSPLandroid/net/wifi/SupplicantState;->values()[Landroid/net/wifi/SupplicantState;
-HPLandroid/net/wifi/SupplicantState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiActivityEnergyInfo$1;-><init>()V
-HSPLandroid/net/wifi/WifiActivityEnergyInfo;-><init>(JIJ[JJJJJ)V
-HPLandroid/net/wifi/WifiActivityEnergyInfo;->toString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration$1;-><init>()V
-HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiConfiguration;
-HSPLandroid/net/wifi/WifiConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;-><init>()V
-HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter()V
-HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->clearDisableReasonCounter(I)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->copy(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidate()Landroid/net/wifi/ScanResult;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getCandidateScore()I
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoice()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getConnectChoiceTimestamp()J
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableReasonCounter(I)I
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getDisableTime()J
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getHasEverConnected()Z
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkDisableReasonString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionBSSID()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionDisableReason()I
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkSelectionStatus()I
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getNetworkStatusString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->getSeenInLastQualifiedNetworkSelection()Z
-HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->incrementDisableReasonCounter(I)V
-HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isDisabledByReason(I)Z
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkEnabled()Z
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkPermanentlyDisabled()Z
-HPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNetworkTemporaryDisabled()Z
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->isNotRecommended()Z
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidate(Landroid/net/wifi/ScanResult;)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setCandidateScore(I)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoice(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setConnectChoiceTimestamp(J)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableReasonCounter(II)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setDisableTime(J)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setHasEverConnected(Z)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionBSSID(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionDisableReason(I)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNetworkSelectionStatus(I)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setNotRecommended(Z)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->setSeenInLastQualifiedNetworkSelection(Z)V
-HSPLandroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;->writeToParcel(Landroid/os/Parcel;)V
-HPLandroid/net/wifi/WifiConfiguration$RecentFailure;->clear()V
-HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->getAssociationStatus()I
-HSPLandroid/net/wifi/WifiConfiguration$RecentFailure;->setAssociationStatus(I)V
-HSPLandroid/net/wifi/WifiConfiguration;-><init>()V
-HSPLandroid/net/wifi/WifiConfiguration;-><init>(Landroid/net/wifi/WifiConfiguration;)V
-HSPLandroid/net/wifi/WifiConfiguration;->configKey()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration;->configKey(Z)Ljava/lang/String;
-HPLandroid/net/wifi/WifiConfiguration;->describeContents()I
-HSPLandroid/net/wifi/WifiConfiguration;->getAuthType()I
-HPLandroid/net/wifi/WifiConfiguration;->getBytesForBackup()[B
-HPLandroid/net/wifi/WifiConfiguration;->getHttpProxy()Landroid/net/ProxyInfo;
-HSPLandroid/net/wifi/WifiConfiguration;->getIpAssignment()Landroid/net/IpConfiguration$IpAssignment;
-HSPLandroid/net/wifi/WifiConfiguration;->getIpConfiguration()Landroid/net/IpConfiguration;
-HSPLandroid/net/wifi/WifiConfiguration;->getNetworkSelectionStatus()Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-HSPLandroid/net/wifi/WifiConfiguration;->getOrCreateRandomizedMacAddress()Landroid/net/MacAddress;
-HPLandroid/net/wifi/WifiConfiguration;->getPrintableSsid()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiConfiguration;->getRandomizedMacAddress()Landroid/net/MacAddress;
-HPLandroid/net/wifi/WifiConfiguration;->isEnterprise()Z
-HSPLandroid/net/wifi/WifiConfiguration;->isEphemeral()Z
-HSPLandroid/net/wifi/WifiConfiguration;->isMetered(Landroid/net/wifi/WifiConfiguration;Landroid/net/wifi/WifiInfo;)Z
-HSPLandroid/net/wifi/WifiConfiguration;->isPasspoint()Z
-HPLandroid/net/wifi/WifiConfiguration;->isValidMacAddressForRandomization(Landroid/net/MacAddress;)Z
-HSPLandroid/net/wifi/WifiConfiguration;->setIpConfiguration(Landroid/net/IpConfiguration;)V
-HSPLandroid/net/wifi/WifiConfiguration;->setNetworkSelectionStatus(Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;)V
-HSPLandroid/net/wifi/WifiConfiguration;->setRandomizedMacAddress(Landroid/net/MacAddress;)V
-HSPLandroid/net/wifi/WifiConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiEnterpriseConfig$1;-><init>()V
-HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiEnterpriseConfig;
-HSPLandroid/net/wifi/WifiEnterpriseConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->copyFrom(Landroid/net/wifi/WifiEnterpriseConfig;ZLjava/lang/String;)V
-HPLandroid/net/wifi/WifiEnterpriseConfig;->getAnonymousIdentity()Ljava/lang/String;
-HPLandroid/net/wifi/WifiEnterpriseConfig;->getCaCertificates()[Ljava/security/cert/X509Certificate;
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->getEapMethod()I
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->getFieldValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HPLandroid/net/wifi/WifiEnterpriseConfig;->getIdentity()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->getPassword()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->getPhase2Method()I
-HSPLandroid/net/wifi/WifiEnterpriseConfig;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiInfo$1;-><init>()V
-HSPLandroid/net/wifi/WifiInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiInfo;
-HSPLandroid/net/wifi/WifiInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiInfo;-><init>()V
-HSPLandroid/net/wifi/WifiInfo;-><init>(Landroid/net/wifi/WifiInfo;)V
-HSPLandroid/net/wifi/WifiInfo;->getBSSID()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiInfo;->getDetailedStateOf(Landroid/net/wifi/SupplicantState;)Landroid/net/NetworkInfo$DetailedState;
-HSPLandroid/net/wifi/WifiInfo;->getFrequency()I
-HSPLandroid/net/wifi/WifiInfo;->getLinkSpeed()I
-HSPLandroid/net/wifi/WifiInfo;->getMeteredHint()Z
-HSPLandroid/net/wifi/WifiInfo;->getNetworkId()I
-HSPLandroid/net/wifi/WifiInfo;->getRssi()I
-HPLandroid/net/wifi/WifiInfo;->getRxLinkSpeedMbps()I
-HSPLandroid/net/wifi/WifiInfo;->getSSID()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiInfo;->getSupplicantState()Landroid/net/wifi/SupplicantState;
-HPLandroid/net/wifi/WifiInfo;->getWifiSsid()Landroid/net/wifi/WifiSsid;
-HPLandroid/net/wifi/WifiInfo;->is24GHz()Z
-HSPLandroid/net/wifi/WifiInfo;->is5GHz()Z
-HSPLandroid/net/wifi/WifiInfo;->isEphemeral()Z
-HSPLandroid/net/wifi/WifiInfo;->isOsuAp()Z
-HSPLandroid/net/wifi/WifiInfo;->isPasspointAp()Z
-HPLandroid/net/wifi/WifiInfo;->isTrusted()Z
-HSPLandroid/net/wifi/WifiInfo;->removeDoubleQuotes(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/wifi/WifiInfo;->reset()V
-HSPLandroid/net/wifi/WifiInfo;->setBSSID(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiInfo;->setEphemeral(Z)V
-HSPLandroid/net/wifi/WifiInfo;->setFQDN(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiInfo;->setFrequency(I)V
-HSPLandroid/net/wifi/WifiInfo;->setInetAddress(Ljava/net/InetAddress;)V
-HSPLandroid/net/wifi/WifiInfo;->setLinkSpeed(I)V
-HSPLandroid/net/wifi/WifiInfo;->setMacAddress(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiInfo;->setMeteredHint(Z)V
-HSPLandroid/net/wifi/WifiInfo;->setNetworkId(I)V
-HSPLandroid/net/wifi/WifiInfo;->setNetworkSuggestionOrSpecifierPackageName(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiInfo;->setOsuAp(Z)V
-HSPLandroid/net/wifi/WifiInfo;->setProviderFriendlyName(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiInfo;->setRssi(I)V
-HSPLandroid/net/wifi/WifiInfo;->setRxLinkSpeedMbps(I)V
-HSPLandroid/net/wifi/WifiInfo;->setSSID(Landroid/net/wifi/WifiSsid;)V
-HSPLandroid/net/wifi/WifiInfo;->setSupplicantState(Landroid/net/wifi/SupplicantState;)V
-HPLandroid/net/wifi/WifiInfo;->setTrusted(Z)V
-HSPLandroid/net/wifi/WifiInfo;->setTxLinkSpeedMbps(I)V
-HSPLandroid/net/wifi/WifiInfo;->toString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiManager$WifiLock;->setReferenceCounted(Z)V
-HSPLandroid/net/wifi/WifiManager;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiManager;Landroid/os/Looper;)V
-HSPLandroid/net/wifi/WifiManager;->calculateSignalLevel(II)I
-HSPLandroid/net/wifi/WifiManager;->createWifiLock(ILjava/lang/String;)Landroid/net/wifi/WifiManager$WifiLock;
-HSPLandroid/net/wifi/WifiManager;->finalize()V
-HSPLandroid/net/wifi/WifiManager;->getAllMatchingWifiConfigs(Ljava/util/List;)Ljava/util/List;
-HSPLandroid/net/wifi/WifiManager;->getConfiguredNetworks()Ljava/util/List;
-HSPLandroid/net/wifi/WifiManager;->getConnectionInfo()Landroid/net/wifi/WifiInfo;
-HSPLandroid/net/wifi/WifiManager;->getCurrentNetwork()Landroid/net/Network;
-HSPLandroid/net/wifi/WifiManager;->getMatchingOsuProviders(Ljava/util/List;)Ljava/util/Map;
-HSPLandroid/net/wifi/WifiManager;->getMatchingPasspointConfigsForOsuProviders(Ljava/util/Set;)Ljava/util/Map;
-HSPLandroid/net/wifi/WifiManager;->getScanResults()Ljava/util/List;
-HSPLandroid/net/wifi/WifiManager;->getSupportedFeatures()J
-HSPLandroid/net/wifi/WifiManager;->getVerboseLoggingLevel()I
-HSPLandroid/net/wifi/WifiManager;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration;
-HSPLandroid/net/wifi/WifiManager;->getWifiApState()I
-HSPLandroid/net/wifi/WifiManager;->getWifiState()I
-HSPLandroid/net/wifi/WifiManager;->isEnhancedOpenSupported()Z
-HSPLandroid/net/wifi/WifiManager;->isScanAlwaysAvailable()Z
-HSPLandroid/net/wifi/WifiManager;->isWifiApEnabled()Z
-HSPLandroid/net/wifi/WifiManager;->isWifiEnabled()Z
-HSPLandroid/net/wifi/WifiManager;->isWpa3SaeSupported()Z
-HSPLandroid/net/wifi/WifiManager;->isWpa3SuiteBSupported()Z
-HPLandroid/net/wifi/WifiManager;->retrieveBackupData()[B
-HSPLandroid/net/wifi/WifiManager;->setCountryCode(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiManager;->startScan()Z
-HSPLandroid/net/wifi/WifiManager;->startScan(Landroid/os/WorkSource;)Z
-PLandroid/net/wifi/WifiNetworkAgentSpecifier$1;-><init>()V
-HPLandroid/net/wifi/WifiNetworkAgentSpecifier;-><init>(Landroid/net/wifi/WifiConfiguration;ILjava/lang/String;)V
-HPLandroid/net/wifi/WifiNetworkAgentSpecifier;->equals(Ljava/lang/Object;)Z
-HPLandroid/net/wifi/WifiNetworkAgentSpecifier;->redact()Landroid/net/NetworkSpecifier;
-HPLandroid/net/wifi/WifiNetworkAgentSpecifier;->satisfiedBy(Landroid/net/NetworkSpecifier;)Z
-HPLandroid/net/wifi/WifiNetworkAgentSpecifier;->toString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiNetworkScoreCache$CacheListener;-><init>(Landroid/os/Handler;)V
-HSPLandroid/net/wifi/WifiNetworkScoreCache;-><init>(Landroid/content/Context;)V
-HSPLandroid/net/wifi/WifiNetworkScoreCache;-><init>(Landroid/content/Context;Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;)V
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->buildNetworkKey(Landroid/net/NetworkKey;)Ljava/lang/String;
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->buildNetworkKey(Landroid/net/wifi/ScanResult;)Ljava/lang/String;
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->clearScores()V
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->getScoredNetwork(Landroid/net/NetworkKey;)Landroid/net/ScoredNetwork;
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->getScoredNetwork(Landroid/net/wifi/ScanResult;)Landroid/net/ScoredNetwork;
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->updateScores(Ljava/util/List;)V
-PLandroid/net/wifi/WifiScanner$OperationResult$1;-><init>()V
-PLandroid/net/wifi/WifiScanner$OperationResult;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiScanner$ParcelableScanData$1;-><init>()V
-HSPLandroid/net/wifi/WifiScanner$ParcelableScanData;->getResults()[Landroid/net/wifi/WifiScanner$ScanData;
-HPLandroid/net/wifi/WifiScanner$ParcelableScanData;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/net/wifi/WifiScanner$ParcelableScanResults$1;-><init>()V
-PLandroid/net/wifi/WifiScanner$ParcelableScanResults;->getResults()[Landroid/net/wifi/ScanResult;
-PLandroid/net/wifi/WifiScanner$PnoSettings$1;-><init>()V
-HPLandroid/net/wifi/WifiScanner$PnoSettings$PnoNetwork;-><init>(Ljava/lang/String;)V
-HSPLandroid/net/wifi/WifiScanner$ScanData$1;-><init>()V
-HPLandroid/net/wifi/WifiScanner$ScanData;->getBandScanned()I
-HPLandroid/net/wifi/WifiScanner$ScanData;->getBucketsScanned()I
-HPLandroid/net/wifi/WifiScanner$ScanData;->getFlags()I
-HPLandroid/net/wifi/WifiScanner$ScanData;->getId()I
-HPLandroid/net/wifi/WifiScanner$ScanData;->getResults()[Landroid/net/wifi/ScanResult;
-HPLandroid/net/wifi/WifiScanner$ScanData;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiScanner$ScanSettings$1;-><init>()V
-HPLandroid/net/wifi/WifiScanner$ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiScanner$ScanSettings;
-HPLandroid/net/wifi/WifiScanner$ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiScanner$ScanSettings;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/wifi/WifiScanner$ServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/net/wifi/WifiScanner;-><init>(Landroid/content/Context;Landroid/net/wifi/IWifiScanner;Landroid/os/Looper;)V
-HSPLandroid/net/wifi/WifiScanner;->addListener(Landroid/net/wifi/WifiScanner$ActionListener;)I
-HSPLandroid/net/wifi/WifiScanner;->deregisterScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-HSPLandroid/net/wifi/WifiScanner;->getListener(I)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiScanner;->getListenerKey(Ljava/lang/Object;)I
-HSPLandroid/net/wifi/WifiScanner;->putListener(Ljava/lang/Object;)I
-HSPLandroid/net/wifi/WifiScanner;->registerScanListener(Landroid/net/wifi/WifiScanner$ScanListener;)V
-HSPLandroid/net/wifi/WifiScanner;->removeListener(I)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiScanner;->removeListener(Ljava/lang/Object;)I
-HSPLandroid/net/wifi/WifiScanner;->setScanningEnabled(Z)V
-HPLandroid/net/wifi/WifiScanner;->startDisconnectedPnoScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$PnoSettings;Landroid/net/wifi/WifiScanner$PnoScanListener;)V
-HSPLandroid/net/wifi/WifiScanner;->startScan(Landroid/net/wifi/WifiScanner$ScanSettings;Landroid/net/wifi/WifiScanner$ScanListener;Landroid/os/WorkSource;)V
-HPLandroid/net/wifi/WifiScanner;->stopPnoScan(Landroid/net/wifi/WifiScanner$ScanListener;)V
-HSPLandroid/net/wifi/WifiSsid$1;-><init>()V
-HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiSsid;
-HSPLandroid/net/wifi/WifiSsid$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiSsid;->createFromByteArray([B)Landroid/net/wifi/WifiSsid;
-HPLandroid/net/wifi/WifiSsid;->createFromHex(Ljava/lang/String;)Landroid/net/wifi/WifiSsid;
-HSPLandroid/net/wifi/WifiSsid;->getHexString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiSsid;->getOctets()[B
-HSPLandroid/net/wifi/WifiSsid;->toString()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiSsid;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/net/wifi/WifiUsabilityStatsEntry$1;-><init>()V
-HPLandroid/net/wifi/WifiUsabilityStatsEntry;-><init>(JIIJJJJJJJJJJJJJJJJIIIIIIIZ)V
-HSPLandroid/net/wifi/WpsInfo$1;-><init>()V
-HSPLandroid/net/wifi/aware/IWifiAwareManager$Stub;-><init>()V
-HSPLandroid/net/wifi/hotspot2/OsuProvider$1;-><init>()V
-HSPLandroid/net/wifi/p2p/IWifiP2pManager$Stub;-><init>()V
-HSPLandroid/net/wifi/p2p/IWifiP2pManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/wifi/p2p/IWifiP2pManager;
-HSPLandroid/net/wifi/p2p/WifiP2pConfig$1;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pConfig;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pDevice$1;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pDeviceList$1;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pDeviceList;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pGroupList$2;-><init>()V
-HSPLandroid/net/wifi/p2p/WifiP2pGroupList;-><init>(Landroid/net/wifi/p2p/WifiP2pGroupList;Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;)V
-HSPLandroid/net/wifi/p2p/WifiP2pInfo$1;-><init>()V
-HSPLandroid/net/wifi/rtt/IWifiRttManager$Stub;-><init>()V
-HPLandroid/net/wifi/rtt/IWifiRttManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->deviceSupportsNfcSecure()Z
+HSPLandroid/nfc/INfcAdapter$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcCardEmulationInterface()Landroid/nfc/INfcCardEmulation;
 HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcFCardEmulationInterface()Landroid/nfc/INfcFCardEmulation;
 HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getNfcTagInterface()Landroid/nfc/INfcTag;
-HSPLandroid/nfc/INfcAdapter$Stub$Proxy;->getState()I
+HSPLandroid/nfc/INfcAdapter$Stub;->asInterface(Landroid/os/IBinder;)Landroid/nfc/INfcAdapter;
 HSPLandroid/nfc/NfcAdapter;-><init>(Landroid/content/Context;)V
 HSPLandroid/nfc/NfcAdapter;->getDefaultAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;
 HSPLandroid/nfc/NfcAdapter;->getNfcAdapter(Landroid/content/Context;)Landroid/nfc/NfcAdapter;
+HSPLandroid/nfc/NfcAdapter;->getServiceInterface()Landroid/nfc/INfcAdapter;
 HSPLandroid/nfc/NfcAdapter;->hasBeamFeature()Z
 HSPLandroid/nfc/NfcAdapter;->hasNfcFeature()Z
 HSPLandroid/nfc/NfcAdapter;->hasNfcHceFeature()Z
-HSPLandroid/nfc/NfcAdapter;->isEnabled()Z
-HSPLandroid/nfc/NfcAdapter;->isSecureNfcSupported()Z
 HSPLandroid/nfc/NfcManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/opengl/EGL14;->eglCreateWindowSurface(Landroid/opengl/EGLDisplay;Landroid/opengl/EGLConfig;Ljava/lang/Object;[II)Landroid/opengl/EGLSurface;
-HSPLandroid/opengl/EGLConfig;-><init>(J)V
 HSPLandroid/opengl/EGLContext;-><init>(J)V
-HSPLandroid/opengl/EGLDisplay;-><init>(J)V
-HSPLandroid/opengl/EGLObjectHandle;->getNativeHandle()J
-HSPLandroid/opengl/EGLSurface;-><init>(J)V
-HSPLandroid/opengl/Matrix;->setIdentityM([FI)V
-HSPLandroid/os/-$$Lambda$Binder$IYUHVkWouPK_9CG2s8VwyWBt5_I;-><init>()V
-HSPLandroid/os/-$$Lambda$HidlSupport$CwwfmHPEvZaybUxpLzKdwrpQRfA;-><init>()V
-HSPLandroid/os/-$$Lambda$HidlSupport$CwwfmHPEvZaybUxpLzKdwrpQRfA;->applyAsInt(Ljava/lang/Object;)I
-HSPLandroid/os/-$$Lambda$IyvVQC-0mKtsfXbnO0kDL64hrk0;-><init>()V
-PLandroid/os/-$$Lambda$PowerManager$WakeLock$VvFzmRZ4ZGlXx7u3lSAJ_T-YUjw;->run()V
-HSPLandroid/os/-$$Lambda$StrictMode$1yH8AK0bTwVwZOb9x8HoiSBdzr0;-><init>()V
+HSPLandroid/opengl/EGLObjectHandle;-><init>(J)V
+HSPLandroid/os/-$$Lambda$Build$WrC6eL7oW2Zm9UDTcXXKr0DnOMw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/os/-$$Lambda$StrictMode$1yH8AK0bTwVwZOb9x8HoiSBdzr0;->log(Landroid/os/StrictMode$ViolationInfo;)V
+HSPLandroid/os/-$$Lambda$StrictMode$AndroidBlockGuardPolicy$9nBulCQKaMajrWr41SB7f7YRT1I;-><init>(Landroid/os/StrictMode$AndroidBlockGuardPolicy;Landroid/view/IWindowManager;Ljava/util/ArrayList;)V
 HSPLandroid/os/-$$Lambda$StrictMode$AndroidBlockGuardPolicy$9nBulCQKaMajrWr41SB7f7YRT1I;->run()V
-HSPLandroid/os/-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ;-><init>()V
 HSPLandroid/os/-$$Lambda$StrictMode$yZJXPvy2veRNA-xL_SWdXzX_OLg;->run()V
-HSPLandroid/os/-$$Lambda$ThreadLocalWorkSource$IP9vRFCDG5YwbWbXAEGHH52B9IE;-><init>()V
 HSPLandroid/os/-$$Lambda$ThreadLocalWorkSource$IP9vRFCDG5YwbWbXAEGHH52B9IE;->get()Ljava/lang/Object;
-HSPLandroid/os/-$$Lambda$Trace$2zLZ-Lc2kAXsVjw_nLYeNhqmGq0;-><init>()V
-HSPLandroid/os/-$$Lambda$Trace$2zLZ-Lc2kAXsVjw_nLYeNhqmGq0;->run()V
-HSPLandroid/os/-$$Lambda$q1UvBdLgHRZVzc68BxdksTmbuCw;-><init>()V
-HSPLandroid/os/AsyncResult;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Throwable;)V
-HSPLandroid/os/AsyncResult;->forMessage(Landroid/os/Message;)Landroid/os/AsyncResult;
-HSPLandroid/os/AsyncResult;->forMessage(Landroid/os/Message;Ljava/lang/Object;Ljava/lang/Throwable;)Landroid/os/AsyncResult;
-HSPLandroid/os/AsyncTask$1;-><init>()V
 HSPLandroid/os/AsyncTask$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLandroid/os/AsyncTask$2;-><init>()V
+HSPLandroid/os/AsyncTask$3;-><init>(Landroid/os/AsyncTask;)V
 HSPLandroid/os/AsyncTask$3;->call()Ljava/lang/Object;
+HSPLandroid/os/AsyncTask$4;-><init>(Landroid/os/AsyncTask;Ljava/util/concurrent/Callable;)V
 HSPLandroid/os/AsyncTask$4;->done()V
+HSPLandroid/os/AsyncTask$AsyncTaskResult;-><init>(Landroid/os/AsyncTask;[Ljava/lang/Object;)V
+HSPLandroid/os/AsyncTask$InternalHandler;-><init>(Landroid/os/Looper;)V
 HSPLandroid/os/AsyncTask$InternalHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/os/AsyncTask$SerialExecutor$1;-><init>(Landroid/os/AsyncTask$SerialExecutor;Ljava/lang/Runnable;)V
 HSPLandroid/os/AsyncTask$SerialExecutor$1;->run()V
-HSPLandroid/os/AsyncTask$SerialExecutor;-><init>(Landroid/os/AsyncTask$1;)V
 HSPLandroid/os/AsyncTask$SerialExecutor;->execute(Ljava/lang/Runnable;)V
 HSPLandroid/os/AsyncTask$SerialExecutor;->scheduleNext()V
-HSPLandroid/os/AsyncTask$Status;-><init>(Ljava/lang/String;I)V
+HSPLandroid/os/AsyncTask$WorkerRunnable;-><init>()V
+HSPLandroid/os/AsyncTask$WorkerRunnable;-><init>(Landroid/os/AsyncTask$1;)V
 HSPLandroid/os/AsyncTask;-><init>()V
 HSPLandroid/os/AsyncTask;-><init>(Landroid/os/Looper;)V
+HSPLandroid/os/AsyncTask;->access$500(Landroid/os/AsyncTask;)Ljava/util/concurrent/atomic/AtomicBoolean;
+HSPLandroid/os/AsyncTask;->access$700(Landroid/os/AsyncTask;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/os/AsyncTask;->access$800(Landroid/os/AsyncTask;Ljava/lang/Object;)V
+HSPLandroid/os/AsyncTask;->access$900(Landroid/os/AsyncTask;Ljava/lang/Object;)V
 HSPLandroid/os/AsyncTask;->cancel(Z)Z
 HSPLandroid/os/AsyncTask;->execute(Ljava/lang/Runnable;)V
 HSPLandroid/os/AsyncTask;->execute([Ljava/lang/Object;)Landroid/os/AsyncTask;
 HSPLandroid/os/AsyncTask;->executeOnExecutor(Ljava/util/concurrent/Executor;[Ljava/lang/Object;)Landroid/os/AsyncTask;
+HSPLandroid/os/AsyncTask;->finish(Ljava/lang/Object;)V
+HSPLandroid/os/AsyncTask;->getHandler()Landroid/os/Handler;
 HSPLandroid/os/AsyncTask;->getMainHandler()Landroid/os/Handler;
 HSPLandroid/os/AsyncTask;->isCancelled()Z
-HSPLandroid/os/AsyncTask;->onCancelled()V
-HSPLandroid/os/AsyncTask;->onCancelled(Ljava/lang/Object;)V
 HSPLandroid/os/AsyncTask;->onPostExecute(Ljava/lang/Object;)V
 HSPLandroid/os/AsyncTask;->onPreExecute()V
+HSPLandroid/os/AsyncTask;->postResult(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/os/AsyncTask;->postResultIfNotInvoked(Ljava/lang/Object;)V
+HSPLandroid/os/BaseBundle;-><init>()V
+HSPLandroid/os/BaseBundle;-><init>(I)V
+HSPLandroid/os/BaseBundle;-><init>(Landroid/os/BaseBundle;)V
+HSPLandroid/os/BaseBundle;-><init>(Landroid/os/Parcel;I)V
 HSPLandroid/os/BaseBundle;-><init>(Ljava/lang/ClassLoader;I)V
+HSPLandroid/os/BaseBundle;-><init>(Z)V
+HSPLandroid/os/BaseBundle;->clear()V
 HSPLandroid/os/BaseBundle;->containsKey(Ljava/lang/String;)Z
 HSPLandroid/os/BaseBundle;->copyInternal(Landroid/os/BaseBundle;Z)V
 HSPLandroid/os/BaseBundle;->deepCopyValue(Ljava/lang/Object;)Ljava/lang/Object;
@@ -11107,8 +8860,6 @@
 HSPLandroid/os/BaseBundle;->getBoolean(Ljava/lang/String;Z)Z
 HSPLandroid/os/BaseBundle;->getByteArray(Ljava/lang/String;)[B
 HSPLandroid/os/BaseBundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;
-HSPLandroid/os/BaseBundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;
-HSPLandroid/os/BaseBundle;->getCharSequenceArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;F)F
 HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;)I
 HSPLandroid/os/BaseBundle;->getInt(Ljava/lang/String;I)I
@@ -11116,6 +8867,7 @@
 HSPLandroid/os/BaseBundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;)J
 HSPLandroid/os/BaseBundle;->getLong(Ljava/lang/String;J)J
+HSPLandroid/os/BaseBundle;->getMap()Landroid/util/ArrayMap;
 HSPLandroid/os/BaseBundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable;
 HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/os/BaseBundle;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
@@ -11124,182 +8876,112 @@
 HSPLandroid/os/BaseBundle;->initializeFromParcelLocked(Landroid/os/Parcel;ZZ)V
 HSPLandroid/os/BaseBundle;->isEmpty()Z
 HSPLandroid/os/BaseBundle;->isEmptyParcel()Z
+HSPLandroid/os/BaseBundle;->isEmptyParcel(Landroid/os/Parcel;)Z
 HSPLandroid/os/BaseBundle;->isParcelled()Z
 HSPLandroid/os/BaseBundle;->keySet()Ljava/util/Set;
-HPLandroid/os/BaseBundle;->kindofEquals(Landroid/os/BaseBundle;)Z
-HSPLandroid/os/BaseBundle;->maybeIsEmpty()Z
-HSPLandroid/os/BaseBundle;->putAll(Landroid/os/PersistableBundle;)V
+HSPLandroid/os/BaseBundle;->putAll(Landroid/util/ArrayMap;)V
 HSPLandroid/os/BaseBundle;->putBoolean(Ljava/lang/String;Z)V
+HSPLandroid/os/BaseBundle;->putByteArray(Ljava/lang/String;[B)V
+HSPLandroid/os/BaseBundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
+HSPLandroid/os/BaseBundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V
+HSPLandroid/os/BaseBundle;->putFloat(Ljava/lang/String;F)V
 HSPLandroid/os/BaseBundle;->putInt(Ljava/lang/String;I)V
 HSPLandroid/os/BaseBundle;->putIntArray(Ljava/lang/String;[I)V
+HSPLandroid/os/BaseBundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
 HSPLandroid/os/BaseBundle;->putLong(Ljava/lang/String;J)V
 HSPLandroid/os/BaseBundle;->putLongArray(Ljava/lang/String;[J)V
+HSPLandroid/os/BaseBundle;->putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V
 HSPLandroid/os/BaseBundle;->putString(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/os/BaseBundle;->putStringArray(Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/os/BaseBundle;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
+HSPLandroid/os/BaseBundle;->readFromParcelInner(Landroid/os/Parcel;)V
 HSPLandroid/os/BaseBundle;->readFromParcelInner(Landroid/os/Parcel;I)V
-HSPLandroid/os/BaseBundle;->setShouldDefuse(Z)V
+HSPLandroid/os/BaseBundle;->recycleParcel(Landroid/os/Parcel;)V
+HSPLandroid/os/BaseBundle;->remove(Ljava/lang/String;)V
+HSPLandroid/os/BaseBundle;->setClassLoader(Ljava/lang/ClassLoader;)V
 HSPLandroid/os/BaseBundle;->size()I
 HSPLandroid/os/BaseBundle;->unparcel()V
 HSPLandroid/os/BaseBundle;->writeToParcelInner(Landroid/os/Parcel;I)V
+HSPLandroid/os/BatteryManager;-><init>(Landroid/content/Context;Lcom/android/internal/app/IBatteryStats;Landroid/os/IBatteryPropertiesRegistrar;)V
 HSPLandroid/os/BatteryManager;->isCharging()Z
-HSPLandroid/os/BatteryProperty$1;-><init>()V
-HPLandroid/os/BatteryProperty;->setLong(J)V
-HSPLandroid/os/BatteryStats$BitDescription;-><init>(IILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
-HSPLandroid/os/BatteryStats$BitDescription;-><init>(ILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/BatteryStats$HistoryEventTracker;-><init>()V
-HSPLandroid/os/BatteryStats$HistoryEventTracker;->getStateForEvent(I)Ljava/util/HashMap;
-HSPLandroid/os/BatteryStats$HistoryEventTracker;->updateState(ILjava/lang/String;II)Z
-HSPLandroid/os/BatteryStats$HistoryItem;-><init>()V
-HSPLandroid/os/BatteryStats$HistoryItem;->clear()V
-HSPLandroid/os/BatteryStats$HistoryItem;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/BatteryStats$HistoryItem;->setTo(JBLandroid/os/BatteryStats$HistoryItem;)V
-HSPLandroid/os/BatteryStats$HistoryItem;->setTo(Landroid/os/BatteryStats$HistoryItem;)V
-HSPLandroid/os/BatteryStats$HistoryItem;->setToCommon(Landroid/os/BatteryStats$HistoryItem;)V
-HSPLandroid/os/BatteryStats$HistoryItem;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/os/BatteryStats$HistoryPrinter;-><init>()V
-HPLandroid/os/BatteryStats$HistoryPrinter;->printNextItem(Landroid/os/BatteryStats$HistoryItem;JZZ)Ljava/lang/String;
-HPLandroid/os/BatteryStats$HistoryPrinter;->printNextItem(Ljava/io/PrintWriter;Landroid/os/BatteryStats$HistoryItem;JZZ)V
-PLandroid/os/BatteryStats$HistoryPrinter;->reset()V
-HSPLandroid/os/BatteryStats$HistoryStepDetails;-><init>()V
-HSPLandroid/os/BatteryStats$HistoryStepDetails;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/BatteryStats$HistoryStepDetails;->writeToParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/BatteryStats$HistoryTag;->equals(Ljava/lang/Object;)Z
-HSPLandroid/os/BatteryStats$HistoryTag;->hashCode()I
-HSPLandroid/os/BatteryStats$HistoryTag;->setTo(Landroid/os/BatteryStats$HistoryTag;)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;-><init>(I)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;-><init>(I[J)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;->addLevelSteps(IJJ)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;->appendHex(JILjava/lang/StringBuilder;)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;->computeTimePerLevel()J
-HSPLandroid/os/BatteryStats$LevelStepTracker;->decodeEntryAt(ILjava/lang/String;)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;->encodeEntryAt(ILjava/lang/StringBuilder;)V
-HPLandroid/os/BatteryStats$LevelStepTracker;->getDurationAt(I)J
-HPLandroid/os/BatteryStats$LevelStepTracker;->getInitModeAt(I)I
-HPLandroid/os/BatteryStats$LevelStepTracker;->getLevelAt(I)I
-HPLandroid/os/BatteryStats$LevelStepTracker;->getModModeAt(I)I
-HSPLandroid/os/BatteryStats$LevelStepTracker;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/BatteryStats$LevelStepTracker;->writeToParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/BatteryStats$Timer;-><init>()V
-HPLandroid/os/BatteryStats$Timer;->getCurrentDurationMsLocked(J)J
-HPLandroid/os/BatteryStats$Timer;->getMaxDurationMsLocked(J)J
-HPLandroid/os/BatteryStats$Timer;->getTotalDurationMsLocked(J)J
-HSPLandroid/os/BatteryStats;-><init>()V
-HPLandroid/os/BatteryStats;->controllerActivityHasData(Landroid/os/BatteryStats$ControllerActivityCounter;I)Z
-HPLandroid/os/BatteryStats;->dumpCheckinLocked(Landroid/content/Context;Ljava/io/PrintWriter;IIZ)V
-HPLandroid/os/BatteryStats;->dumpCheckinLocked(Landroid/content/Context;Ljava/io/PrintWriter;Ljava/util/List;IJ)V
-HPLandroid/os/BatteryStats;->dumpControllerActivityLine(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$ControllerActivityCounter;I)V
-HPLandroid/os/BatteryStats;->dumpDurationSteps(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Z)Z
-HPLandroid/os/BatteryStats;->dumpHistoryLocked(Ljava/io/PrintWriter;IJZ)V
-HPLandroid/os/BatteryStats;->dumpLine(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HPLandroid/os/BatteryStats;->dumpLineHeader(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;)V
-HPLandroid/os/BatteryStats;->dumpTimer(Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;Landroid/os/BatteryStats$Timer;JI)V
-HSPLandroid/os/BatteryStats;->mapToInternalProcessState(I)I
-HPLandroid/os/BatteryStats;->printBitDescriptions(Ljava/lang/StringBuilder;IILandroid/os/BatteryStats$HistoryTag;[Landroid/os/BatteryStats$BitDescription;Z)V
-HPLandroid/os/BatteryStats;->printWakeLockCheckin(Ljava/lang/StringBuilder;Landroid/os/BatteryStats$Timer;JLjava/lang/String;ILjava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/BestClock;-><init>(Ljava/time/ZoneId;[Ljava/time/Clock;)V
-HSPLandroid/os/BestClock;->millis()J
-HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactEnded(Ljava/lang/Object;)V
-HSPLandroid/os/Binder$PropagateWorkSourceTransactListener;->onTransactStarted(Landroid/os/IBinder;I)Ljava/lang/Object;
+HSPLandroid/os/BatteryProperty;-><init>()V
 HSPLandroid/os/Binder;-><init>()V
 HSPLandroid/os/Binder;-><init>(Ljava/lang/String;)V
-HSPLandroid/os/Binder;->access$000()J
 HSPLandroid/os/Binder;->allowBlocking(Landroid/os/IBinder;)Landroid/os/IBinder;
 HSPLandroid/os/Binder;->attachInterface(Landroid/os/IInterface;Ljava/lang/String;)V
+HSPLandroid/os/Binder;->checkParcel(Landroid/os/IBinder;ILandroid/os/Parcel;Ljava/lang/String;)V
 HSPLandroid/os/Binder;->copyAllowBlocking(Landroid/os/IBinder;Landroid/os/IBinder;)V
 HSPLandroid/os/Binder;->defaultBlocking(Landroid/os/IBinder;)Landroid/os/IBinder;
-HSPLandroid/os/Binder;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HPLandroid/os/Binder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLandroid/os/Binder;->dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
 HSPLandroid/os/Binder;->execTransact(IJJI)Z
 HSPLandroid/os/Binder;->execTransactInternal(IJJII)Z
 HSPLandroid/os/Binder;->getCallingUserHandle()Landroid/os/UserHandle;
 HSPLandroid/os/Binder;->getInterfaceDescriptor()Ljava/lang/String;
 HSPLandroid/os/Binder;->isBinderAlive()Z
-HSPLandroid/os/Binder;->isProxy(Landroid/os/IInterface;)Z
+HSPLandroid/os/Binder;->isTracingEnabled()Z
 HSPLandroid/os/Binder;->linkToDeath(Landroid/os/IBinder$DeathRecipient;I)V
 HSPLandroid/os/Binder;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/Binder;->pingBinder()Z
 HSPLandroid/os/Binder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;
-HSPLandroid/os/Binder;->setObserver(Lcom/android/internal/os/BinderInternal$Observer;)V
-HSPLandroid/os/Binder;->setProxyTransactListener(Landroid/os/Binder$ProxyTransactListener;)V
-HSPLandroid/os/Binder;->setWarnOnBlocking(Z)V
-HSPLandroid/os/Binder;->setWorkSourceProvider(Lcom/android/internal/os/BinderInternal$WorkSourceProvider;)V
-HSPLandroid/os/Binder;->shellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
 HSPLandroid/os/Binder;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/os/Binder;->unlinkToDeath(Landroid/os/IBinder$DeathRecipient;I)Z
 HSPLandroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
-HSPLandroid/os/Binder;->withCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
-HSPLandroid/os/BinderProxy$ProxyMap;-><init>(Landroid/os/BinderProxy$1;)V
 HSPLandroid/os/BinderProxy$ProxyMap;->get(J)Landroid/os/BinderProxy;
+HSPLandroid/os/BinderProxy$ProxyMap;->hash(J)I
 HSPLandroid/os/BinderProxy$ProxyMap;->remove(II)V
 HSPLandroid/os/BinderProxy$ProxyMap;->set(JLandroid/os/BinderProxy;)V
-HSPLandroid/os/BinderProxy;->access$500()J
-HSPLandroid/os/BinderProxy;->dump(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
+HSPLandroid/os/BinderProxy;-><init>(J)V
 HSPLandroid/os/BinderProxy;->getInstance(JJ)Landroid/os/BinderProxy;
 HSPLandroid/os/BinderProxy;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IInterface;
-HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;)V
+HSPLandroid/os/BinderProxy;->sendDeathNotice(Landroid/os/IBinder$DeathRecipient;Landroid/os/IBinder;)V
 HSPLandroid/os/BinderProxy;->transact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/Build;->access$000(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/Build;->access$100(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLandroid/os/Build;->deriveFingerprint()Ljava/lang/String;
-HSPLandroid/os/Build;->ensureFingerprintProperty()V
-HSPLandroid/os/Build;->getLong(Ljava/lang/String;)J
 HSPLandroid/os/Build;->getRadioVersion()Ljava/lang/String;
-HSPLandroid/os/Build;->getSerial()Ljava/lang/String;
-HSPLandroid/os/Build;->getString(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/Build;->getStringList(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLandroid/os/Build;->isBuildConsistent()Z
-HSPLandroid/os/Bundle$1;-><init>()V
+HSPLandroid/os/Build;->lambda$joinListOrElse$0(Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Bundle;
 HSPLandroid/os/Bundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/Bundle$1;->newArray(I)[Landroid/os/Bundle;
-HSPLandroid/os/Bundle$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/os/Bundle;-><init>()V
 HSPLandroid/os/Bundle;-><init>(I)V
 HSPLandroid/os/Bundle;-><init>(Landroid/os/Bundle;)V
+HSPLandroid/os/Bundle;-><init>(Landroid/os/Parcel;I)V
 HSPLandroid/os/Bundle;-><init>(Landroid/os/PersistableBundle;)V
+HSPLandroid/os/Bundle;-><init>(Z)V
 HSPLandroid/os/Bundle;->clear()V
 HSPLandroid/os/Bundle;->clone()Ljava/lang/Object;
 HSPLandroid/os/Bundle;->deepCopy()Landroid/os/Bundle;
-HSPLandroid/os/Bundle;->describeContents()I
-HSPLandroid/os/Bundle;->forPair(Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
 HSPLandroid/os/Bundle;->getBinder(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/Bundle;->getBundle(Ljava/lang/String;)Landroid/os/Bundle;
 HSPLandroid/os/Bundle;->getByteArray(Ljava/lang/String;)[B
 HSPLandroid/os/Bundle;->getCharSequence(Ljava/lang/String;)Ljava/lang/CharSequence;
-HSPLandroid/os/Bundle;->getCharSequenceArray(Ljava/lang/String;)[Ljava/lang/CharSequence;
-HSPLandroid/os/Bundle;->getCharSequenceArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;F)F
+HSPLandroid/os/Bundle;->getIntegerArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/os/Bundle;->getParcelable(Ljava/lang/String;)Landroid/os/Parcelable;
 HSPLandroid/os/Bundle;->getParcelableArray(Ljava/lang/String;)[Landroid/os/Parcelable;
 HSPLandroid/os/Bundle;->getParcelableArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLandroid/os/Bundle;->getSerializable(Ljava/lang/String;)Ljava/io/Serializable;
-HSPLandroid/os/Bundle;->getSize()I
-HSPLandroid/os/Bundle;->getSparseParcelableArray(Ljava/lang/String;)Landroid/util/SparseArray;
 HSPLandroid/os/Bundle;->getStringArrayList(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLandroid/os/Bundle;->hasFileDescriptors()Z
+HSPLandroid/os/Bundle;->maybePrefillHasFds()V
 HSPLandroid/os/Bundle;->putAll(Landroid/os/Bundle;)V
 HSPLandroid/os/Bundle;->putBinder(Ljava/lang/String;Landroid/os/IBinder;)V
 HSPLandroid/os/Bundle;->putBundle(Ljava/lang/String;Landroid/os/Bundle;)V
 HSPLandroid/os/Bundle;->putByteArray(Ljava/lang/String;[B)V
 HSPLandroid/os/Bundle;->putCharSequence(Ljava/lang/String;Ljava/lang/CharSequence;)V
 HSPLandroid/os/Bundle;->putCharSequenceArray(Ljava/lang/String;[Ljava/lang/CharSequence;)V
-HSPLandroid/os/Bundle;->putCharSequenceArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
 HSPLandroid/os/Bundle;->putFloat(Ljava/lang/String;F)V
 HSPLandroid/os/Bundle;->putIntegerArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
 HSPLandroid/os/Bundle;->putParcelable(Ljava/lang/String;Landroid/os/Parcelable;)V
 HSPLandroid/os/Bundle;->putParcelableArray(Ljava/lang/String;[Landroid/os/Parcelable;)V
 HSPLandroid/os/Bundle;->putParcelableArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
-HSPLandroid/os/Bundle;->putParcelableList(Ljava/lang/String;Ljava/util/List;)V
 HSPLandroid/os/Bundle;->putSerializable(Ljava/lang/String;Ljava/io/Serializable;)V
 HSPLandroid/os/Bundle;->putSparseParcelableArray(Ljava/lang/String;Landroid/util/SparseArray;)V
 HSPLandroid/os/Bundle;->putStringArrayList(Ljava/lang/String;Ljava/util/ArrayList;)V
 HSPLandroid/os/Bundle;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/os/Bundle;->remove(Ljava/lang/String;)V
+HSPLandroid/os/Bundle;->setAllowFds(Z)Z
 HSPLandroid/os/Bundle;->setClassLoader(Ljava/lang/ClassLoader;)V
 HSPLandroid/os/Bundle;->setDefusable(Landroid/os/Bundle;Z)Landroid/os/Bundle;
+HSPLandroid/os/Bundle;->setDefusable(Z)V
 HSPLandroid/os/Bundle;->toString()Ljava/lang/String;
 HSPLandroid/os/Bundle;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/os/CancellationSignal$Transport;-><init>()V
+HSPLandroid/os/CancellationSignal$Transport;-><init>(Landroid/os/CancellationSignal$1;)V
 HSPLandroid/os/CancellationSignal;-><init>()V
 HSPLandroid/os/CancellationSignal;->cancel()V
 HSPLandroid/os/CancellationSignal;->createTransport()Landroid/os/ICancellationSignal;
@@ -11309,42 +8991,48 @@
 HSPLandroid/os/CancellationSignal;->setRemote(Landroid/os/ICancellationSignal;)V
 HSPLandroid/os/CancellationSignal;->throwIfCanceled()V
 HSPLandroid/os/CancellationSignal;->waitForCancelFinishedLocked()V
-HSPLandroid/os/ChildZygoteProcess;-><init>(Landroid/net/LocalSocketAddress;I)V
 HSPLandroid/os/ConditionVariable;-><init>()V
 HSPLandroid/os/ConditionVariable;-><init>(Z)V
 HSPLandroid/os/ConditionVariable;->block()V
 HSPLandroid/os/ConditionVariable;->block(J)Z
 HSPLandroid/os/ConditionVariable;->close()V
 HSPLandroid/os/ConditionVariable;->open()V
-HSPLandroid/os/CpuUsageInfo$1;-><init>()V
 HSPLandroid/os/DeadObjectException;-><init>()V
-HSPLandroid/os/Debug$MemoryInfo$1;-><init>()V
 HSPLandroid/os/Debug$MemoryInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Debug$MemoryInfo;
 HSPLandroid/os/Debug$MemoryInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Landroid/os/Debug$MemoryInfo;
 HSPLandroid/os/Debug$MemoryInfo$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/os/Debug$MemoryInfo;-><init>()V
+HSPLandroid/os/Debug$MemoryInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/os/Debug$MemoryInfo;-><init>(Landroid/os/Parcel;Landroid/os/Debug$1;)V
 HSPLandroid/os/Debug$MemoryInfo;->getMemoryStats()Ljava/util/Map;
 HSPLandroid/os/Debug$MemoryInfo;->getOtherLabel(I)Ljava/lang/String;
 HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivate(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivateClean(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherPrivateDirty(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherPss(I)I
+HSPLandroid/os/Debug$MemoryInfo;->getOtherRss(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherSharedClean(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherSharedDirty(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappablePss(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappedOut(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getOtherSwappedOutPss(I)I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryCode()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryCodeRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryGraphics()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryGraphicsRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryJavaHeap()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryJavaHeapRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryNativeHeap()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryNativeHeapRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryPrivateOther()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryStack()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryStackRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummarySystem()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalPss()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwap()I
 HSPLandroid/os/Debug$MemoryInfo;->getSummaryTotalSwapPss()I
+HSPLandroid/os/Debug$MemoryInfo;->getSummaryUnknownRss()I
 HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateClean()I
 HSPLandroid/os/Debug$MemoryInfo;->getTotalPrivateDirty()I
 HSPLandroid/os/Debug$MemoryInfo;->getTotalPss()I
@@ -11354,139 +9042,71 @@
 HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappablePss()I
 HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappedOut()I
 HSPLandroid/os/Debug$MemoryInfo;->getTotalSwappedOutPss()I
-HSPLandroid/os/Debug$MemoryInfo;->getTotalUss()I
 HSPLandroid/os/Debug$MemoryInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/Debug$MemoryInfo;->set(Landroid/os/Debug$MemoryInfo;)V
-HSPLandroid/os/Debug$MemoryInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/Debug;->countInstancesOfClass(Ljava/lang/Class;)J
-HSPLandroid/os/Debug;->getCaller([Ljava/lang/StackTraceElement;I)Ljava/lang/String;
-HSPLandroid/os/Debug;->getCallers(I)Ljava/lang/String;
 HSPLandroid/os/Debug;->getMethodTracingMode()I
 HSPLandroid/os/Debug;->getVmFeatureList()[Ljava/lang/String;
 HSPLandroid/os/Debug;->isDebuggerConnected()Z
-HSPLandroid/os/Debug;->threadCpuTimeNanos()J
 HSPLandroid/os/Debug;->waitingForDebugger()Z
-HSPLandroid/os/DropBoxManager$Entry$1;-><init>()V
-HSPLandroid/os/DropBoxManager$Entry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/DropBoxManager$Entry;
-HSPLandroid/os/DropBoxManager$Entry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/os/DropBoxManager$Entry;-><init>(Ljava/lang/String;J)V
-HSPLandroid/os/DropBoxManager$Entry;-><init>(Ljava/lang/String;JLandroid/os/ParcelFileDescriptor;I)V
-HSPLandroid/os/DropBoxManager$Entry;-><init>(Ljava/lang/String;JLjava/io/File;I)V
-HSPLandroid/os/DropBoxManager$Entry;-><init>(Ljava/lang/String;JLjava/lang/String;)V
-HSPLandroid/os/DropBoxManager$Entry;-><init>(Ljava/lang/String;J[BI)V
-HSPLandroid/os/DropBoxManager$Entry;->close()V
-HSPLandroid/os/DropBoxManager$Entry;->getFlags()I
-HSPLandroid/os/DropBoxManager$Entry;->getInputStream()Ljava/io/InputStream;
-HSPLandroid/os/DropBoxManager$Entry;->getTag()Ljava/lang/String;
-HSPLandroid/os/DropBoxManager$Entry;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/DropBoxManager;->addFile(Ljava/lang/String;Ljava/io/File;I)V
-HSPLandroid/os/DropBoxManager;->addText(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/DropBoxManager;->isTagEnabled(Ljava/lang/String;)Z
+HSPLandroid/os/DeviceIdleManager;-><init>(Landroid/content/Context;Landroid/os/IDeviceIdleController;)V
+HSPLandroid/os/DropBoxManager;-><init>(Landroid/content/Context;Lcom/android/internal/os/IDropBoxManagerService;)V
+HSPLandroid/os/Environment$UserEnvironment;-><init>(I)V
 HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File;
 HSPLandroid/os/Environment$UserEnvironment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File;
 HSPLandroid/os/Environment$UserEnvironment;->buildExternalStoragePublicDirs(Ljava/lang/String;)[Ljava/io/File;
 HSPLandroid/os/Environment$UserEnvironment;->getExternalDirs()[Ljava/io/File;
-HPLandroid/os/Environment$UserEnvironment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->buildExternalStorageAppCacheDirs(Ljava/lang/String;)[Ljava/io/File;
 HSPLandroid/os/Environment;->buildExternalStorageAppFilesDirs(Ljava/lang/String;)[Ljava/io/File;
 HSPLandroid/os/Environment;->buildPath(Ljava/io/File;[Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/os/Environment;->buildPaths([Ljava/io/File;[Ljava/lang/String;)[Ljava/io/File;
-HSPLandroid/os/Environment;->getDataAppDirectory(Ljava/lang/String;)Ljava/io/File;
 HSPLandroid/os/Environment;->getDataDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getDataMiscCeDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getDataMiscCeDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataMiscDirectory()Ljava/io/File;
 HSPLandroid/os/Environment;->getDataProfilesDeDirectory(I)Ljava/io/File;
 HSPLandroid/os/Environment;->getDataProfilesDePackageDirectory(ILjava/lang/String;)Ljava/io/File;
-HPLandroid/os/Environment;->getDataRefProfilesDePackageDirectory(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataSystemCeDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getDataSystemCeDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataSystemDeDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getDataSystemDeDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataSystemDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserCeDirectory(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserCePackageDirectory(Ljava/lang/String;ILjava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserDeDirectory(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserDeDirectory(Ljava/lang/String;I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataUserDePackageDirectory(Ljava/lang/String;ILjava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDataVendorDeDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getDirectory(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->getDownloadCacheDirectory()Ljava/io/File;
 HSPLandroid/os/Environment;->getExternalStorageDirectory()Ljava/io/File;
 HSPLandroid/os/Environment;->getExternalStorageState()Ljava/lang/String;
-HSPLandroid/os/Environment;->getLegacyExternalStorageDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getOdmDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getOemDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getPackageCacheDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getProductDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getProductServicesDirectory()Ljava/io/File;
-HSPLandroid/os/Environment;->getRootDirectory()Ljava/io/File;
+HSPLandroid/os/Environment;->getExternalStorageState(Ljava/io/File;)Ljava/lang/String;
 HSPLandroid/os/Environment;->getUserConfigDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getUserSystemDirectory(I)Ljava/io/File;
-HSPLandroid/os/Environment;->getVendorDirectory()Ljava/io/File;
 HSPLandroid/os/Environment;->initForCurrentUser()V
 HSPLandroid/os/Environment;->isExternalStorageEmulated()Z
 HSPLandroid/os/Environment;->isExternalStorageEmulated(Ljava/io/File;)Z
-HSPLandroid/os/Environment;->setUserRequired(Z)V
+HSPLandroid/os/Environment;->throwIfUserRequired()V
+HSPLandroid/os/EventLogTags;->writeServiceManagerSlow(ILjava/lang/String;)V
+HSPLandroid/os/EventLogTags;->writeServiceManagerStats(III)V
 HSPLandroid/os/FactoryTest;->getMode()I
-HPLandroid/os/FactoryTest;->isLongPressOnPowerOffEnabled()Z
-PLandroid/os/FileBridge;-><init>()V
-PLandroid/os/FileBridge;->forceClose()V
-PLandroid/os/FileBridge;->isClosed()Z
-HPLandroid/os/FileBridge;->run()V
 HSPLandroid/os/FileObserver$ObserverThread;-><init>()V
 HSPLandroid/os/FileObserver$ObserverThread;->onEvent(IILjava/lang/String;)V
 HSPLandroid/os/FileObserver$ObserverThread;->run()V
 HSPLandroid/os/FileObserver$ObserverThread;->startWatching(Ljava/util/List;ILandroid/os/FileObserver;)[I
+HSPLandroid/os/FileObserver;-><clinit>()V
+HSPLandroid/os/FileObserver;-><init>(Ljava/io/File;I)V
 HSPLandroid/os/FileObserver;-><init>(Ljava/lang/String;I)V
+HSPLandroid/os/FileObserver;-><init>(Ljava/util/List;I)V
 HSPLandroid/os/FileObserver;->startWatching()V
-HSPLandroid/os/FileUtils$1;->compare(Ljava/io/File;Ljava/io/File;)I
-HSPLandroid/os/FileUtils$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/os/FileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/os/FileUtils;->buildValidExtFilename(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/FileUtils;->bytesToFile(Ljava/lang/String;[B)V
 HSPLandroid/os/FileUtils;->contains(Ljava/io/File;Ljava/io/File;)Z
 HSPLandroid/os/FileUtils;->contains(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/os/FileUtils;->createDir(Ljava/io/File;)Z
-HSPLandroid/os/FileUtils;->createDir(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/FileUtils;->deleteContents(Ljava/io/File;)Z
-HSPLandroid/os/FileUtils;->deleteContentsAndDir(Ljava/io/File;)Z
-HSPLandroid/os/FileUtils;->deleteOlderFiles(Ljava/io/File;IJ)Z
-HSPLandroid/os/FileUtils;->getUid(Ljava/lang/String;)I
-HSPLandroid/os/FileUtils;->isValidExtFilename(Ljava/lang/String;)Z
-HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;)[Ljava/io/File;
+HSPLandroid/os/FileUtils;->listOrEmpty(Ljava/io/File;)[Ljava/lang/String;
 HSPLandroid/os/FileUtils;->newFileOrNull(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/FileUtils;->readTextFile(Ljava/io/File;ILjava/lang/String;)Ljava/lang/String;
-HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/io/File;)Ljava/io/File;
-HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)Ljava/lang/String;
-HPLandroid/os/FileUtils;->rewriteAfterRename(Ljava/io/File;Ljava/io/File;[Ljava/lang/String;)[Ljava/lang/String;
-HPLandroid/os/FileUtils;->roundStorageSize(J)J
-HSPLandroid/os/FileUtils;->setPermissions(Ljava/io/File;III)I
-HSPLandroid/os/FileUtils;->setPermissions(Ljava/io/FileDescriptor;III)I
 HSPLandroid/os/FileUtils;->setPermissions(Ljava/lang/String;III)I
-HSPLandroid/os/FileUtils;->stringToFile(Ljava/io/File;Ljava/lang/String;)V
-HSPLandroid/os/FileUtils;->stringToFile(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/os/FileUtils;->sync(Ljava/io/FileOutputStream;)Z
 HSPLandroid/os/FileUtils;->translateModePfdToPosix(I)I
-HSPLandroid/os/FileUtils;->translateModePosixToPfd(I)I
-HSPLandroid/os/FileUtils;->translateModeStringToPosix(Ljava/lang/String;)I
 HSPLandroid/os/FileUtils;->trimFilename(Ljava/lang/StringBuilder;I)V
-HSPLandroid/os/GraphicsEnvironment$OpenGlDriverChoice;-><init>(Ljava/lang/String;I)V
-HSPLandroid/os/GraphicsEnvironment;-><init>()V
-HSPLandroid/os/GraphicsEnvironment;->buildMap()Ljava/util/Map;
-HSPLandroid/os/GraphicsEnvironment;->chooseDriver(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z
+HSPLandroid/os/GraphicsEnvironment;->checkAngleWhitelist(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z
+HSPLandroid/os/GraphicsEnvironment;->chooseDriver(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+HSPLandroid/os/GraphicsEnvironment;->chooseDriverInternal(Landroid/os/Bundle;Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
+HSPLandroid/os/GraphicsEnvironment;->getAppInfoWithMetadata(Landroid/content/Context;Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo;
 HSPLandroid/os/GraphicsEnvironment;->getDriverForPkg(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsPkgIndex(Ljava/lang/String;Ljava/util/List;)I
 HSPLandroid/os/GraphicsEnvironment;->getGlobalSettingsString(Landroid/content/ContentResolver;Landroid/os/Bundle;Ljava/lang/String;)Ljava/util/List;
 HSPLandroid/os/GraphicsEnvironment;->getInstance()Landroid/os/GraphicsEnvironment;
+HSPLandroid/os/GraphicsEnvironment;->getVulkanVersion(Landroid/content/pm/PackageManager;)I
 HSPLandroid/os/GraphicsEnvironment;->setLayerPaths(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/os/GraphicsEnvironment;->setup(Landroid/content/Context;Landroid/os/Bundle;)V
 HSPLandroid/os/GraphicsEnvironment;->setupAngle(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)Z
-HSPLandroid/os/GraphicsEnvironment;->setupGpuLayers(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;)V
+HSPLandroid/os/GraphicsEnvironment;->setupGpuLayers(Landroid/content/Context;Landroid/os/Bundle;Landroid/content/pm/PackageManager;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;)V
 HSPLandroid/os/GraphicsEnvironment;->shouldShowAngleInUseDialogBox(Landroid/content/Context;)Z
+HSPLandroid/os/GraphicsEnvironment;->shouldUseAngle(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z
 HSPLandroid/os/GraphicsEnvironment;->showAngleInUseDialogBox(Landroid/content/Context;)V
-HSPLandroid/os/Handler$BlockingRunnable;->postAndWait(Landroid/os/Handler;J)Z
-HSPLandroid/os/Handler$BlockingRunnable;->run()V
+HSPLandroid/os/Handler$MessengerImpl;-><init>(Landroid/os/Handler;)V
+HSPLandroid/os/Handler$MessengerImpl;-><init>(Landroid/os/Handler;Landroid/os/Handler$1;)V
 HSPLandroid/os/Handler$MessengerImpl;->send(Landroid/os/Message;)V
 HSPLandroid/os/Handler;-><init>()V
 HSPLandroid/os/Handler;-><init>(Landroid/os/Handler$Callback;)V
@@ -11497,16 +9117,17 @@
 HSPLandroid/os/Handler;-><init>(Z)V
 HSPLandroid/os/Handler;->createAsync(Landroid/os/Looper;)Landroid/os/Handler;
 HSPLandroid/os/Handler;->dispatchMessage(Landroid/os/Message;)V
+HSPLandroid/os/Handler;->enqueueMessage(Landroid/os/MessageQueue;Landroid/os/Message;J)Z
 HSPLandroid/os/Handler;->getIMessenger()Landroid/os/IMessenger;
 HSPLandroid/os/Handler;->getLooper()Landroid/os/Looper;
 HSPLandroid/os/Handler;->getMain()Landroid/os/Handler;
-HSPLandroid/os/Handler;->getMessageName(Landroid/os/Message;)Ljava/lang/String;
 HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;)Landroid/os/Message;
+HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;Ljava/lang/Object;)Landroid/os/Message;
+HSPLandroid/os/Handler;->handleCallback(Landroid/os/Message;)V
 HSPLandroid/os/Handler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/os/Handler;->hasCallbacks(Ljava/lang/Runnable;)Z
 HSPLandroid/os/Handler;->hasMessages(I)Z
 HSPLandroid/os/Handler;->hasMessages(ILjava/lang/Object;)Z
-HSPLandroid/os/Handler;->hasMessagesOrCallbacks()Z
 HSPLandroid/os/Handler;->obtainMessage()Landroid/os/Message;
 HSPLandroid/os/Handler;->obtainMessage(I)Landroid/os/Message;
 HSPLandroid/os/Handler;->obtainMessage(III)Landroid/os/Message;
@@ -11521,7 +9142,6 @@
 HSPLandroid/os/Handler;->removeCallbacksAndMessages(Ljava/lang/Object;)V
 HSPLandroid/os/Handler;->removeMessages(I)V
 HSPLandroid/os/Handler;->removeMessages(ILjava/lang/Object;)V
-HSPLandroid/os/Handler;->runWithScissors(Ljava/lang/Runnable;J)Z
 HSPLandroid/os/Handler;->sendEmptyMessage(I)Z
 HSPLandroid/os/Handler;->sendEmptyMessageAtTime(IJ)Z
 HSPLandroid/os/Handler;->sendEmptyMessageDelayed(IJ)Z
@@ -11535,207 +9155,103 @@
 HSPLandroid/os/HandlerThread;-><init>(Ljava/lang/String;)V
 HSPLandroid/os/HandlerThread;-><init>(Ljava/lang/String;I)V
 HSPLandroid/os/HandlerThread;->getLooper()Landroid/os/Looper;
-HSPLandroid/os/HandlerThread;->getThreadHandler()Landroid/os/Handler;
-HSPLandroid/os/HandlerThread;->getThreadId()I
 HSPLandroid/os/HandlerThread;->onLooperPrepared()V
 HSPLandroid/os/HandlerThread;->quit()Z
 HSPLandroid/os/HandlerThread;->quitSafely()Z
 HSPLandroid/os/HandlerThread;->run()V
-HSPLandroid/os/HidlSupport;->deepHashCode(Ljava/lang/Object;)I
-HSPLandroid/os/HidlSupport;->interfacesEqual(Landroid/os/IHwInterface;Ljava/lang/Object;)Z
-HSPLandroid/os/HidlSupport;->throwErrorIfUnsupportedType(Ljava/lang/Object;)V
 HSPLandroid/os/HwBinder;-><init>()V
 HSPLandroid/os/HwBinder;->getService(Ljava/lang/String;Ljava/lang/String;)Landroid/os/IHwBinder;
 HSPLandroid/os/HwBlob;-><init>(I)V
+HSPLandroid/os/HwBlob;->wrapArray([B)[Ljava/lang/Byte;
 HSPLandroid/os/HwParcel;-><init>()V
 HSPLandroid/os/HwParcel;-><init>(Z)V
-HSPLandroid/os/HwParcel;->readInt32Vector()Ljava/util/ArrayList;
 HSPLandroid/os/HwParcel;->readInt8Vector()Ljava/util/ArrayList;
 HSPLandroid/os/HwParcel;->readStringVector()Ljava/util/ArrayList;
-HPLandroid/os/HwParcel;->writeInt16Vector(Ljava/util/ArrayList;)V
-HSPLandroid/os/HwParcel;->writeInt32Vector(Ljava/util/ArrayList;)V
-HSPLandroid/os/HwParcel;->writeInt8Vector(Ljava/util/ArrayList;)V
 HSPLandroid/os/HwParcel;->writeStringVector(Ljava/util/ArrayList;)V
 HSPLandroid/os/HwRemoteBinder;-><init>()V
 HSPLandroid/os/HwRemoteBinder;->queryLocalInterface(Ljava/lang/String;)Landroid/os/IHwInterface;
-HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;-><init>()V
+HSPLandroid/os/IBatteryPropertiesRegistrar$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IBatteryPropertiesRegistrar$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IBatteryPropertiesRegistrar;
-HPLandroid/os/IBatteryPropertiesRegistrar$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/os/IBinder$DeathRecipient;->binderDied(Landroid/os/IBinder;)V
+HSPLandroid/os/IBinder;->getSuggestedMaxIpcSizeBytes()I
+HSPLandroid/os/ICancellationSignal$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/ICancellationSignal$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/os/ICancellationSignal$Stub;-><init>()V
 HSPLandroid/os/ICancellationSignal$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ICancellationSignal;
-HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;->getSerialForPackage(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub;-><init>()V
 HSPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdentifiersPolicyService;
-HPLandroid/os/IDeviceIdentifiersPolicyService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IDeviceIdleController$Stub;-><init>()V
+HSPLandroid/os/IDeviceIdleController$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IDeviceIdleController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IDeviceIdleController;
-HPLandroid/os/IDeviceIdleController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IDumpstate$Stub;-><init>()V
-HSPLandroid/os/IExternalVibratorService$Stub;-><init>()V
-HSPLandroid/os/IHardwarePropertiesManager$Stub;-><init>()V
-HSPLandroid/os/IHardwarePropertiesManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IIncidentCompanion$Stub;-><init>()V
-HSPLandroid/os/IIncidentManager$Stub$Proxy;->systemRunning()V
-HSPLandroid/os/IIncidentManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IIncidentManager;
-HSPLandroid/os/IInstalld$Stub$Proxy;->assertFsverityRootHashMatches(Ljava/lang/String;[B)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->clearAppProfiles(Ljava/lang/String;Ljava/lang/String;)V
-HPLandroid/os/IInstalld$Stub$Proxy;->copySystemProfile(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/os/IInstalld$Stub$Proxy;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J
-HPLandroid/os/IInstalld$Stub$Proxy;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V
-HPLandroid/os/IInstalld$Stub$Proxy;->createProfileSnapshot(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/os/IInstalld$Stub$Proxy;->createUserData(Ljava/lang/String;III)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->destroyAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->destroyAppProfiles(Ljava/lang/String;)V
-HPLandroid/os/IInstalld$Stub$Proxy;->destroyProfileSnapshot(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->fixupAppData(Ljava/lang/String;I)V
-HPLandroid/os/IInstalld$Stub$Proxy;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;)[J
-HPLandroid/os/IInstalld$Stub$Proxy;->getExternalSize(Ljava/lang/String;II[I)[J
-HPLandroid/os/IInstalld$Stub$Proxy;->getUserSize(Ljava/lang/String;II[I)[J
-HPLandroid/os/IInstalld$Stub$Proxy;->hashSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)[B
-HSPLandroid/os/IInstalld$Stub$Proxy;->idmap(Ljava/lang/String;Ljava/lang/String;I)V
-HPLandroid/os/IInstalld$Stub$Proxy;->installApkVerity(Ljava/lang/String;Ljava/io/FileDescriptor;I)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->invalidateMounts()V
-HPLandroid/os/IInstalld$Stub$Proxy;->isQuotaSupported(Ljava/lang/String;)Z
-HSPLandroid/os/IInstalld$Stub$Proxy;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->markBootComplete(Ljava/lang/String;)V
-HPLandroid/os/IInstalld$Stub$Proxy;->mergeProfiles(ILjava/lang/String;Ljava/lang/String;)Z
-HPLandroid/os/IInstalld$Stub$Proxy;->moveAb(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->prepareAppProfile(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-HPLandroid/os/IInstalld$Stub$Proxy;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLandroid/os/IInstalld$Stub$Proxy;->rmPackageDir(Ljava/lang/String;)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->rmdex(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IInstalld$Stub$Proxy;->setAppQuota(Ljava/lang/String;IIJ)V
-HSPLandroid/os/IInstalld$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IInstalld;
+HSPLandroid/os/IMessenger$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IMessenger$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/os/IMessenger$Stub$Proxy;->send(Landroid/os/Message;)V
+HSPLandroid/os/IMessenger$Stub;-><init>()V
 HSPLandroid/os/IMessenger$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/os/IMessenger$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IMessenger;
 HSPLandroid/os/IMessenger$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/os/INetworkActivityListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/os/INetworkActivityListener$Stub$Proxy;->onNetworkActive()V
-PLandroid/os/INetworkActivityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkActivityListener;
-HSPLandroid/os/INetworkManagementService$Stub$Proxy;->isBandwidthControlEnabled()Z
+HSPLandroid/os/INetworkManagementService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/INetworkManagementService$Stub$Proxy;->setUidCleartextNetworkPolicy(II)V
-HSPLandroid/os/INetworkManagementService$Stub;-><init>()V
 HSPLandroid/os/INetworkManagementService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/INetworkManagementService;
-HPLandroid/os/INetworkManagementService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/os/INetworkManagementService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IPermissionController$Stub;-><init>()V
-HSPLandroid/os/IPermissionController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/os/IPowerManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IPowerManager$Stub$Proxy;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
 HSPLandroid/os/IPowerManager$Stub$Proxy;->isDeviceIdleMode()Z
 HSPLandroid/os/IPowerManager$Stub$Proxy;->isInteractive()Z
 HSPLandroid/os/IPowerManager$Stub$Proxy;->isPowerSaveMode()Z
-HSPLandroid/os/IPowerManager$Stub$Proxy;->isWakeLockLevelSupported(I)Z
 HSPLandroid/os/IPowerManager$Stub$Proxy;->releaseWakeLock(Landroid/os/IBinder;I)V
-HSPLandroid/os/IPowerManager$Stub$Proxy;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
-HSPLandroid/os/IPowerManager$Stub$Proxy;->userActivity(JII)V
-HSPLandroid/os/IPowerManager$Stub;-><init>()V
 HSPLandroid/os/IPowerManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IPowerManager;
-HPLandroid/os/IPowerManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/os/IPowerManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IProcessInfoService$Stub;-><init>()V
-HPLandroid/os/IProcessInfoService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IProgressListener$Stub;-><init>()V
-HSPLandroid/os/IProgressListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IRecoverySystem$Stub;-><init>()V
+HSPLandroid/os/IRemoteCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IRemoteCallback$Stub$Proxy;->sendResult(Landroid/os/Bundle;)V
 HSPLandroid/os/IRemoteCallback$Stub;-><init>()V
-HSPLandroid/os/IRemoteCallback$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/os/IRemoteCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IRemoteCallback;
-HSPLandroid/os/IRemoteCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/ISchedulingPolicyService$Stub;-><init>()V
-HSPLandroid/os/ISchedulingPolicyService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IStatsCompanionService$Stub;-><init>()V
-HPLandroid/os/IStatsCompanionService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/os/IStatsCompanionService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IStatsManager$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IStatsManager$Stub$Proxy;->informAllUidData([I[J[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
-HPLandroid/os/IStatsManager$Stub$Proxy;->informOnePackage(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IStatsManager$Stub$Proxy;->informPollAlarmFired()V
-HSPLandroid/os/IStatsManager$Stub$Proxy;->statsCompanionReady()V
-HSPLandroid/os/IStatsManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsManager;
-HPLandroid/os/IStoraged$Stub$Proxy;->getRecentPerf()I
-HSPLandroid/os/IStoraged$Stub$Proxy;->onUserStarted(I)V
-HSPLandroid/os/IStoraged$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStoraged;
-HSPLandroid/os/ISystemUpdateManager$Stub;-><init>()V
-HSPLandroid/os/ISystemUpdateManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/ISystemUpdateManager;
-HPLandroid/os/ISystemUpdateManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IThermalEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IThermalEventListener$Stub$Proxy;->notifyThrottling(Landroid/os/Temperature;)V
-HSPLandroid/os/IThermalEventListener$Stub;-><init>()V
-HSPLandroid/os/IThermalEventListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IThermalService$Stub;-><init>()V
+HSPLandroid/os/IServiceManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/os/IServiceManager$Stub$Proxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
+HSPLandroid/os/IServiceManager$Stub$Proxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder;
+HSPLandroid/os/IServiceManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager;
+HSPLandroid/os/IStatsManagerService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IStatsManagerService;
 HSPLandroid/os/IThermalService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IThermalService;
-HSPLandroid/os/IThermalService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IThermalStatusListener$Stub;-><init>()V
-HSPLandroid/os/IThermalStatusListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IUpdateLock$Stub;-><init>()V
+HSPLandroid/os/IUserManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IUserManager$Stub$Proxy;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
 HSPLandroid/os/IUserManager$Stub$Proxy;->getProfileIds(IZ)[I
 HSPLandroid/os/IUserManager$Stub$Proxy;->getProfiles(IZ)Ljava/util/List;
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List;
 HSPLandroid/os/IUserManager$Stub$Proxy;->getUserSerialNumber(I)I
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUsers(Z)Ljava/util/List;
-HSPLandroid/os/IUserManager$Stub$Proxy;->hasBaseUserRestriction(Ljava/lang/String;I)Z
+HSPLandroid/os/IUserManager$Stub$Proxy;->getUsers(ZZZ)Ljava/util/List;
 HSPLandroid/os/IUserManager$Stub$Proxy;->hasUserRestriction(Ljava/lang/String;I)Z
 HSPLandroid/os/IUserManager$Stub$Proxy;->isDemoUser(I)Z
 HSPLandroid/os/IUserManager$Stub$Proxy;->isManagedProfile(I)Z
+HSPLandroid/os/IUserManager$Stub$Proxy;->isProfile(I)Z
+HSPLandroid/os/IUserManager$Stub$Proxy;->isUserRunning(I)Z
 HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlocked(I)Z
 HSPLandroid/os/IUserManager$Stub$Proxy;->isUserUnlockingOrUnlocked(I)Z
-HSPLandroid/os/IUserManager$Stub;-><init>()V
 HSPLandroid/os/IUserManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IUserManager;
-HPLandroid/os/IUserManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/os/IUserManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IVibratorService$Stub$Proxy;->hasVibrator()Z
-HSPLandroid/os/IVibratorService$Stub;-><init>()V
-HSPLandroid/os/IVibratorService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IVold$Stub$Proxy;->commitChanges()V
-HSPLandroid/os/IVold$Stub$Proxy;->destroySandboxForApp(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLandroid/os/IVold$Stub$Proxy;->fdeClearPassword()V
-HSPLandroid/os/IVold$Stub$Proxy;->fdeGetPassword()Ljava/lang/String;
-HSPLandroid/os/IVold$Stub$Proxy;->monitor()V
-HSPLandroid/os/IVold$Stub$Proxy;->mount(Ljava/lang/String;II)V
-HSPLandroid/os/IVold$Stub$Proxy;->onSecureKeyguardStateChanged(Z)V
-HSPLandroid/os/IVold$Stub$Proxy;->onUserAdded(II)V
-HSPLandroid/os/IVold$Stub$Proxy;->onUserStarted(I[Ljava/lang/String;[I[Ljava/lang/String;)V
-HSPLandroid/os/IVold$Stub$Proxy;->prepareUserStorage(Ljava/lang/String;III)V
-HSPLandroid/os/IVold$Stub$Proxy;->reset()V
-HPLandroid/os/IVold$Stub$Proxy;->runIdleMaint(Landroid/os/IVoldTaskListener;)V
-HSPLandroid/os/IVold$Stub$Proxy;->setListener(Landroid/os/IVoldListener;)V
-HSPLandroid/os/IVold$Stub$Proxy;->unlockUserKey(IILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/IVold$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVold;
-HSPLandroid/os/IVoldListener$Stub;-><init>()V
-HSPLandroid/os/IVoldListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IVoldListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IVoldTaskListener$Stub;-><init>()V
-HSPLandroid/os/IVoldTaskListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/IVoldTaskListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/LocaleList$1;-><init>()V
+HSPLandroid/os/IVibratorService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/os/IVibratorService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IVibratorService;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/LocaleList;-><init>(Ljava/util/Locale;Landroid/os/LocaleList;)V
 HSPLandroid/os/LocaleList;-><init>([Ljava/util/Locale;)V
+HSPLandroid/os/LocaleList;->computeFirstMatch(Ljava/util/Collection;Z)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->computeFirstMatchIndex(Ljava/util/Collection;Z)I
 HSPLandroid/os/LocaleList;->equals(Ljava/lang/Object;)Z
+HSPLandroid/os/LocaleList;->findFirstMatchIndex(Ljava/util/Locale;)I
 HSPLandroid/os/LocaleList;->forLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->get(I)Ljava/util/Locale;
 HSPLandroid/os/LocaleList;->getAdjustedDefault()Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->getDefault()Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->getEmptyLocaleList()Landroid/os/LocaleList;
 HSPLandroid/os/LocaleList;->getFirstMatchWithEnglishSupported([Ljava/lang/String;)Ljava/util/Locale;
+HSPLandroid/os/LocaleList;->getLikelyScript(Ljava/util/Locale;)Ljava/lang/String;
 HSPLandroid/os/LocaleList;->hashCode()I
 HSPLandroid/os/LocaleList;->isEmpty()Z
+HSPLandroid/os/LocaleList;->isPseudoLocale(Ljava/lang/String;)Z
+HSPLandroid/os/LocaleList;->isPseudoLocale(Ljava/util/Locale;)Z
 HSPLandroid/os/LocaleList;->isPseudoLocalesOnly([Ljava/lang/String;)Z
 HSPLandroid/os/LocaleList;->matchScore(Ljava/util/Locale;Ljava/util/Locale;)I
 HSPLandroid/os/LocaleList;->setDefault(Landroid/os/LocaleList;)V
 HSPLandroid/os/LocaleList;->setDefault(Landroid/os/LocaleList;I)V
 HSPLandroid/os/LocaleList;->size()I
+HSPLandroid/os/LocaleList;->toLanguageTags()Ljava/lang/String;
 HSPLandroid/os/LocaleList;->toString()Ljava/lang/String;
 HSPLandroid/os/LocaleList;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/LocaleList;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLandroid/os/Looper;-><init>(Z)V
 HSPLandroid/os/Looper;->getMainLooper()Landroid/os/Looper;
 HSPLandroid/os/Looper;->getQueue()Landroid/os/MessageQueue;
 HSPLandroid/os/Looper;->getThread()Ljava/lang/Thread;
@@ -11744,27 +9260,28 @@
 HSPLandroid/os/Looper;->myLooper()Landroid/os/Looper;
 HSPLandroid/os/Looper;->myQueue()Landroid/os/MessageQueue;
 HSPLandroid/os/Looper;->prepare()V
+HSPLandroid/os/Looper;->prepare(Z)V
 HSPLandroid/os/Looper;->prepareMainLooper()V
 HSPLandroid/os/Looper;->quit()V
-HSPLandroid/os/Looper;->setObserver(Landroid/os/Looper$Observer;)V
+HSPLandroid/os/Looper;->quitSafely()V
+HSPLandroid/os/Looper;->setSlowLogThresholdMs(JJ)V
+HSPLandroid/os/Looper;->setTraceTag(J)V
 HSPLandroid/os/Looper;->showSlowLog(JJJLjava/lang/String;Landroid/os/Message;)Z
 HSPLandroid/os/Looper;->toString()Ljava/lang/String;
-HSPLandroid/os/MemoryFile;-><init>(Ljava/lang/String;I)V
-HSPLandroid/os/MemoryFile;->close()V
-HSPLandroid/os/MemoryFile;->deactivate()V
-HSPLandroid/os/MemoryFile;->getFileDescriptor()Ljava/io/FileDescriptor;
-HSPLandroid/os/MemoryFile;->getSize(Ljava/io/FileDescriptor;)I
-HSPLandroid/os/MemoryFile;->readBytes([BIII)I
-HSPLandroid/os/MemoryFile;->writeBytes([BIII)V
-HSPLandroid/os/Message$1;-><init>()V
 HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Message;
 HSPLandroid/os/Message$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/Message;-><init>()V
+HSPLandroid/os/Message;->access$000(Landroid/os/Message;Landroid/os/Parcel;)V
 HSPLandroid/os/Message;->copyFrom(Landroid/os/Message;)V
 HSPLandroid/os/Message;->getCallback()Ljava/lang/Runnable;
 HSPLandroid/os/Message;->getData()Landroid/os/Bundle;
 HSPLandroid/os/Message;->getTarget()Landroid/os/Handler;
+HSPLandroid/os/Message;->getWhen()J
+HSPLandroid/os/Message;->isAsynchronous()Z
+HSPLandroid/os/Message;->isInUse()Z
+HSPLandroid/os/Message;->markInUse()V
 HSPLandroid/os/Message;->obtain()Landroid/os/Message;
+HSPLandroid/os/Message;->obtain(Landroid/os/Handler;)Landroid/os/Message;
 HSPLandroid/os/Message;->obtain(Landroid/os/Handler;I)Landroid/os/Message;
 HSPLandroid/os/Message;->obtain(Landroid/os/Handler;III)Landroid/os/Message;
 HSPLandroid/os/Message;->obtain(Landroid/os/Handler;IIILjava/lang/Object;)Landroid/os/Message;
@@ -11776,49 +9293,56 @@
 HSPLandroid/os/Message;->recycle()V
 HSPLandroid/os/Message;->recycleUnchecked()V
 HSPLandroid/os/Message;->sendToTarget()V
+HSPLandroid/os/Message;->setAsynchronous(Z)V
+HSPLandroid/os/Message;->setCallback(Ljava/lang/Runnable;)Landroid/os/Message;
 HSPLandroid/os/Message;->setData(Landroid/os/Bundle;)V
 HSPLandroid/os/Message;->toString()Ljava/lang/String;
 HSPLandroid/os/Message;->toString(J)Ljava/lang/String;
 HSPLandroid/os/Message;->updateCheckRecycle(I)V
 HSPLandroid/os/Message;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/os/MessageQueue$FileDescriptorRecord;-><init>(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue;-><init>(Z)V
 HSPLandroid/os/MessageQueue;->addIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V
+HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
+HSPLandroid/os/MessageQueue;->dispatchEvents(II)I
+HSPLandroid/os/MessageQueue;->dispose()V
 HSPLandroid/os/MessageQueue;->enqueueMessage(Landroid/os/Message;J)Z
 HSPLandroid/os/MessageQueue;->finalize()V
-HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;)Z
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;ILjava/lang/Object;)Z
 HSPLandroid/os/MessageQueue;->hasMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)Z
-HSPLandroid/os/MessageQueue;->isPolling()Z
 HSPLandroid/os/MessageQueue;->next()Landroid/os/Message;
 HSPLandroid/os/MessageQueue;->postSyncBarrier()I
 HSPLandroid/os/MessageQueue;->postSyncBarrier(J)I
 HSPLandroid/os/MessageQueue;->quit(Z)V
 HSPLandroid/os/MessageQueue;->removeAllFutureMessagesLocked()V
+HSPLandroid/os/MessageQueue;->removeAllMessagesLocked()V
 HSPLandroid/os/MessageQueue;->removeCallbacksAndMessages(Landroid/os/Handler;Ljava/lang/Object;)V
 HSPLandroid/os/MessageQueue;->removeIdleHandler(Landroid/os/MessageQueue$IdleHandler;)V
 HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;ILjava/lang/Object;)V
 HSPLandroid/os/MessageQueue;->removeMessages(Landroid/os/Handler;Ljava/lang/Runnable;Ljava/lang/Object;)V
 HSPLandroid/os/MessageQueue;->removeSyncBarrier(I)V
-HSPLandroid/os/Messenger$1;-><init>()V
+HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
 HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;
 HSPLandroid/os/Messenger$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/Messenger;-><init>(Landroid/os/Handler;)V
 HSPLandroid/os/Messenger;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/os/Messenger;->equals(Ljava/lang/Object;)Z
 HSPLandroid/os/Messenger;->getBinder()Landroid/os/IBinder;
-HSPLandroid/os/Messenger;->hashCode()I
+HSPLandroid/os/Messenger;->readMessengerOrNullFromParcel(Landroid/os/Parcel;)Landroid/os/Messenger;
 HSPLandroid/os/Messenger;->send(Landroid/os/Message;)V
+HSPLandroid/os/Messenger;->writeMessengerOrNullToParcel(Landroid/os/Messenger;Landroid/os/Parcel;)V
 HSPLandroid/os/Messenger;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/Parcel$1;-><init>()V
+HSPLandroid/os/Parcel$2;-><init>(Landroid/os/Parcel;Ljava/io/InputStream;Ljava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel$2;->resolveClass(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;
-HSPLandroid/os/Parcel$ReadWriteHelper;-><init>()V
 HSPLandroid/os/Parcel$ReadWriteHelper;->readString(Landroid/os/Parcel;)Ljava/lang/String;
 HSPLandroid/os/Parcel$ReadWriteHelper;->writeString(Landroid/os/Parcel;Ljava/lang/String;)V
+HSPLandroid/os/Parcel;-><init>(J)V
+HSPLandroid/os/Parcel;->access$000(Landroid/os/Parcel;)J
+HSPLandroid/os/Parcel;->adoptClassCookies(Landroid/os/Parcel;)V
 HSPLandroid/os/Parcel;->appendFrom(Landroid/os/Parcel;II)V
 HSPLandroid/os/Parcel;->copyClassCookies()Ljava/util/Map;
-HSPLandroid/os/Parcel;->createBinderArrayList()Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->createByteArray()[B
-HSPLandroid/os/Parcel;->createDoubleArray()[D
 HSPLandroid/os/Parcel;->createException(ILjava/lang/String;)Ljava/lang/Exception;
+HSPLandroid/os/Parcel;->createExceptionOrNull(ILjava/lang/String;)Ljava/lang/Exception;
 HSPLandroid/os/Parcel;->createFloatArray()[F
 HSPLandroid/os/Parcel;->createIntArray()[I
 HSPLandroid/os/Parcel;->createLongArray()[J
@@ -11826,21 +9350,28 @@
 HSPLandroid/os/Parcel;->createStringArrayList()Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->createTypedArray(Landroid/os/Parcelable$Creator;)[Ljava/lang/Object;
 HSPLandroid/os/Parcel;->createTypedArrayList(Landroid/os/Parcelable$Creator;)Ljava/util/ArrayList;
+HSPLandroid/os/Parcel;->dataAvail()I
 HSPLandroid/os/Parcel;->dataPosition()I
 HSPLandroid/os/Parcel;->dataSize()I
+HSPLandroid/os/Parcel;->destroy()V
 HSPLandroid/os/Parcel;->enforceInterface(Ljava/lang/String;)V
 HSPLandroid/os/Parcel;->finalize()V
+HSPLandroid/os/Parcel;->freeBuffer()V
 HSPLandroid/os/Parcel;->getClassCookie(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLandroid/os/Parcel;->getExceptionCode(Ljava/lang/Throwable;)I
+HSPLandroid/os/Parcel;->hasFileDescriptors()Z
+HSPLandroid/os/Parcel;->hasReadWriteHelper()Z
+HSPLandroid/os/Parcel;->init(J)V
 HSPLandroid/os/Parcel;->marshall()[B
 HSPLandroid/os/Parcel;->obtain()Landroid/os/Parcel;
 HSPLandroid/os/Parcel;->obtain(J)Landroid/os/Parcel;
-HSPLandroid/os/Parcel;->putClassCookies(Ljava/util/Map;)V
+HSPLandroid/os/Parcel;->pushAllowFds(Z)Z
 HSPLandroid/os/Parcel;->readArrayList(Ljava/lang/ClassLoader;)Ljava/util/ArrayList;
 HSPLandroid/os/Parcel;->readArrayMap(Landroid/util/ArrayMap;Ljava/lang/ClassLoader;)V
+HSPLandroid/os/Parcel;->readArrayMapInternal(Landroid/util/ArrayMap;ILjava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel;->readArraySet(Ljava/lang/ClassLoader;)Landroid/util/ArraySet;
 HSPLandroid/os/Parcel;->readBlob()[B
 HSPLandroid/os/Parcel;->readBoolean()Z
-HSPLandroid/os/Parcel;->readBooleanArray([Z)V
 HSPLandroid/os/Parcel;->readBundle()Landroid/os/Bundle;
 HSPLandroid/os/Parcel;->readBundle(Ljava/lang/ClassLoader;)Landroid/os/Bundle;
 HSPLandroid/os/Parcel;->readByte()B
@@ -11856,14 +9387,19 @@
 HSPLandroid/os/Parcel;->readInt()I
 HSPLandroid/os/Parcel;->readIntArray([I)V
 HSPLandroid/os/Parcel;->readList(Ljava/util/List;Ljava/lang/ClassLoader;)V
+HSPLandroid/os/Parcel;->readListInternal(Ljava/util/List;ILjava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel;->readLong()J
-HSPLandroid/os/Parcel;->readLongArray([J)V
+HSPLandroid/os/Parcel;->readMap(Ljava/util/Map;Ljava/lang/ClassLoader;)V
+HSPLandroid/os/Parcel;->readMapInternal(Ljava/util/Map;ILjava/lang/ClassLoader;)V
 HSPLandroid/os/Parcel;->readParcelable(Ljava/lang/ClassLoader;)Landroid/os/Parcelable;
+HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;)[Landroid/os/Parcelable;
 HSPLandroid/os/Parcel;->readParcelableArray(Ljava/lang/ClassLoader;Ljava/lang/Class;)[Landroid/os/Parcelable;
 HSPLandroid/os/Parcel;->readParcelableCreator(Ljava/lang/ClassLoader;)Landroid/os/Parcelable$Creator;
 HSPLandroid/os/Parcel;->readParcelableList(Ljava/util/List;Ljava/lang/ClassLoader;)Ljava/util/List;
 HSPLandroid/os/Parcel;->readPersistableBundle()Landroid/os/PersistableBundle;
 HSPLandroid/os/Parcel;->readPersistableBundle(Ljava/lang/ClassLoader;)Landroid/os/PersistableBundle;
+HSPLandroid/os/Parcel;->readRawFileDescriptor()Ljava/io/FileDescriptor;
+HSPLandroid/os/Parcel;->readSerializable()Ljava/io/Serializable;
 HSPLandroid/os/Parcel;->readSerializable(Ljava/lang/ClassLoader;)Ljava/io/Serializable;
 HSPLandroid/os/Parcel;->readSparseArray(Ljava/lang/ClassLoader;)Landroid/util/SparseArray;
 HSPLandroid/os/Parcel;->readString()Ljava/lang/String;
@@ -11875,28 +9411,25 @@
 HSPLandroid/os/Parcel;->readTypedObject(Landroid/os/Parcelable$Creator;)Ljava/lang/Object;
 HSPLandroid/os/Parcel;->readValue(Ljava/lang/ClassLoader;)Ljava/lang/Object;
 HSPLandroid/os/Parcel;->recycle()V
+HSPLandroid/os/Parcel;->restoreAllowFds(Z)V
 HSPLandroid/os/Parcel;->setClassCookie(Ljava/lang/Class;Ljava/lang/Object;)V
-HSPLandroid/os/Parcel;->setDataCapacity(I)V
 HSPLandroid/os/Parcel;->setDataPosition(I)V
 HSPLandroid/os/Parcel;->setDataSize(I)V
-HSPLandroid/os/Parcel;->setReadWriteHelper(Landroid/os/Parcel$ReadWriteHelper;)V
-HSPLandroid/os/Parcel;->setStackTraceParceling(Z)V
 HSPLandroid/os/Parcel;->unmarshall([BII)V
 HSPLandroid/os/Parcel;->updateNativeSize(J)V
 HSPLandroid/os/Parcel;->writeArrayMap(Landroid/util/ArrayMap;)V
 HSPLandroid/os/Parcel;->writeArrayMapInternal(Landroid/util/ArrayMap;)V
 HSPLandroid/os/Parcel;->writeArraySet(Landroid/util/ArraySet;)V
 HSPLandroid/os/Parcel;->writeBinderList(Ljava/util/List;)V
-HSPLandroid/os/Parcel;->writeBlob([B)V
 HSPLandroid/os/Parcel;->writeBoolean(Z)V
-HSPLandroid/os/Parcel;->writeBooleanArray([Z)V
 HSPLandroid/os/Parcel;->writeBundle(Landroid/os/Bundle;)V
 HSPLandroid/os/Parcel;->writeByte(B)V
 HSPLandroid/os/Parcel;->writeByteArray([B)V
+HSPLandroid/os/Parcel;->writeByteArray([BII)V
 HSPLandroid/os/Parcel;->writeCharSequence(Ljava/lang/CharSequence;)V
-HSPLandroid/os/Parcel;->writeCharSequenceArray([Ljava/lang/CharSequence;)V
 HSPLandroid/os/Parcel;->writeDouble(D)V
 HSPLandroid/os/Parcel;->writeException(Ljava/lang/Exception;)V
+HSPLandroid/os/Parcel;->writeFileDescriptor(Ljava/io/FileDescriptor;)V
 HSPLandroid/os/Parcel;->writeFloat(F)V
 HSPLandroid/os/Parcel;->writeFloatArray([F)V
 HSPLandroid/os/Parcel;->writeInt(I)V
@@ -11915,7 +9448,6 @@
 HSPLandroid/os/Parcel;->writePersistableBundle(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/Parcel;->writeSerializable(Ljava/io/Serializable;)V
 HSPLandroid/os/Parcel;->writeSparseArray(Landroid/util/SparseArray;)V
-HSPLandroid/os/Parcel;->writeSparseBooleanArray(Landroid/util/SparseBooleanArray;)V
 HSPLandroid/os/Parcel;->writeString(Ljava/lang/String;)V
 HSPLandroid/os/Parcel;->writeStringArray([Ljava/lang/String;)V
 HSPLandroid/os/Parcel;->writeStringList(Ljava/util/List;)V
@@ -11926,7 +9458,6 @@
 HSPLandroid/os/Parcel;->writeTypedList(Ljava/util/List;I)V
 HSPLandroid/os/Parcel;->writeTypedObject(Landroid/os/Parcelable;I)V
 HSPLandroid/os/Parcel;->writeValue(Ljava/lang/Object;)V
-HSPLandroid/os/ParcelFileDescriptor$2;-><init>()V
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;-><init>(Landroid/os/ParcelFileDescriptor;)V
@@ -11940,70 +9471,49 @@
 HSPLandroid/os/ParcelFileDescriptor;-><init>(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
 HSPLandroid/os/ParcelFileDescriptor;->canDetectErrors()Z
 HSPLandroid/os/ParcelFileDescriptor;->close()V
+HSPLandroid/os/ParcelFileDescriptor;->closeWithStatus(ILjava/lang/String;)V
 HSPLandroid/os/ParcelFileDescriptor;->createPipe()[Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor;->detachFd()I
 HSPLandroid/os/ParcelFileDescriptor;->dup()Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor;->dup(Ljava/io/FileDescriptor;)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor;->finalize()V
-HPLandroid/os/ParcelFileDescriptor;->fromData([BLjava/lang/String;)Landroid/os/ParcelFileDescriptor;
+HSPLandroid/os/ParcelFileDescriptor;->fromFd(I)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor;->getFd()I
-HSPLandroid/os/ParcelFileDescriptor;->getFile(Ljava/io/FileDescriptor;)Ljava/io/File;
 HSPLandroid/os/ParcelFileDescriptor;->getFileDescriptor()Ljava/io/FileDescriptor;
+HSPLandroid/os/ParcelFileDescriptor;->ifAtLeastQ(I)I
+HSPLandroid/os/ParcelFileDescriptor;->isAtLeastQ()Z
 HSPLandroid/os/ParcelFileDescriptor;->open(Ljava/io/File;I)Landroid/os/ParcelFileDescriptor;
 HSPLandroid/os/ParcelFileDescriptor;->openInternal(Ljava/io/File;I)Ljava/io/FileDescriptor;
-HSPLandroid/os/ParcelFileDescriptor;->parseMode(Ljava/lang/String;)I
 HSPLandroid/os/ParcelFileDescriptor;->releaseResources()V
 HSPLandroid/os/ParcelFileDescriptor;->writeCommStatusAndClose(ILjava/lang/String;)V
 HSPLandroid/os/ParcelFileDescriptor;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/ParcelUuid$1;-><init>()V
 HSPLandroid/os/ParcelUuid$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ParcelUuid;
 HSPLandroid/os/ParcelUuid$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/ParcelUuid$1;->newArray(I)[Landroid/os/ParcelUuid;
-HSPLandroid/os/ParcelUuid$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/os/ParcelUuid;->equals(Ljava/lang/Object;)Z
+HSPLandroid/os/ParcelUuid;-><init>(Ljava/util/UUID;)V
 HSPLandroid/os/ParcelUuid;->fromString(Ljava/lang/String;)Landroid/os/ParcelUuid;
+HSPLandroid/os/ParcelUuid;->getUuid()Ljava/util/UUID;
 HSPLandroid/os/ParcelUuid;->hashCode()I
 HSPLandroid/os/ParcelUuid;->toString()Ljava/lang/String;
-HSPLandroid/os/ParcelableException$1;-><init>()V
-HSPLandroid/os/ParcelableException;-><init>(Ljava/lang/Throwable;)V
-HSPLandroid/os/ParcelableException;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/ParcelableParcel$1;-><init>()V
-HSPLandroid/os/ParcelableParcel;-><init>(Ljava/lang/ClassLoader;)V
-HSPLandroid/os/ParcelableParcel;->getParcel()Landroid/os/Parcel;
-HSPLandroid/os/ParcelableParcel;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/PatternMatcher$1;-><init>()V
+HSPLandroid/os/ParcelUuid;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/PatternMatcher$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PatternMatcher;
 HSPLandroid/os/PatternMatcher$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/PatternMatcher$1;->newArray(I)[Landroid/os/PatternMatcher;
 HSPLandroid/os/PatternMatcher$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/os/PatternMatcher;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/os/PatternMatcher;-><init>(Ljava/lang/String;I)V
-HSPLandroid/os/PatternMatcher;->match(Ljava/lang/String;)Z
-HPLandroid/os/PatternMatcher;->matchGlobPattern(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/os/PatternMatcher;->matchPattern(Ljava/lang/String;Ljava/lang/String;[II)Z
 HSPLandroid/os/PatternMatcher;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/PersistableBundle$1;-><init>()V
 HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PersistableBundle;
 HSPLandroid/os/PersistableBundle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/PersistableBundle$MyReadMapCallback;->readThisUnknownObjectXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/os/PersistableBundle;-><init>()V
 HSPLandroid/os/PersistableBundle;-><init>(Landroid/os/Bundle;)V
+HSPLandroid/os/PersistableBundle;-><init>(Landroid/os/Parcel;I)V
 HSPLandroid/os/PersistableBundle;-><init>(Landroid/os/PersistableBundle;)V
 HSPLandroid/os/PersistableBundle;-><init>(Landroid/util/ArrayMap;)V
-HSPLandroid/os/PersistableBundle;->clone()Ljava/lang/Object;
+HSPLandroid/os/PersistableBundle;-><init>(Z)V
 HSPLandroid/os/PersistableBundle;->deepCopy()Landroid/os/PersistableBundle;
-HSPLandroid/os/PersistableBundle;->getPersistableBundle(Ljava/lang/String;)Landroid/os/PersistableBundle;
 HSPLandroid/os/PersistableBundle;->isValidType(Ljava/lang/Object;)Z
-HSPLandroid/os/PersistableBundle;->putPersistableBundle(Ljava/lang/String;Landroid/os/PersistableBundle;)V
-HSPLandroid/os/PersistableBundle;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/PersistableBundle;
-HSPLandroid/os/PersistableBundle;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLandroid/os/PersistableBundle;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/PersistableBundle;->writeUnknownObject(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/os/PooledStringReader;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/PooledStringReader;->readString()Ljava/lang/String;
-HSPLandroid/os/PooledStringWriter;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/PooledStringWriter;->finish()V
-HSPLandroid/os/PooledStringWriter;->writeString(Ljava/lang/String;)V
+HSPLandroid/os/PowerManager$WakeLock$1;-><init>(Landroid/os/PowerManager$WakeLock;)V
 HSPLandroid/os/PowerManager$WakeLock$1;->run()V
 HSPLandroid/os/PowerManager$WakeLock;-><init>(Landroid/os/PowerManager;ILjava/lang/String;Ljava/lang/String;)V
 HSPLandroid/os/PowerManager$WakeLock;->acquire()V
@@ -12011,190 +9521,101 @@
 HSPLandroid/os/PowerManager$WakeLock;->acquireLocked()V
 HSPLandroid/os/PowerManager$WakeLock;->finalize()V
 HSPLandroid/os/PowerManager$WakeLock;->isHeld()Z
-HPLandroid/os/PowerManager$WakeLock;->lambda$wrap$0$PowerManager$WakeLock(Ljava/lang/Runnable;)V
 HSPLandroid/os/PowerManager$WakeLock;->release()V
 HSPLandroid/os/PowerManager$WakeLock;->release(I)V
 HSPLandroid/os/PowerManager$WakeLock;->setReferenceCounted(Z)V
 HSPLandroid/os/PowerManager$WakeLock;->setWorkSource(Landroid/os/WorkSource;)V
-HSPLandroid/os/PowerManager$WakeLock;->toString()Ljava/lang/String;
-HPLandroid/os/PowerManager$WakeLock;->wrap(Ljava/lang/Runnable;)Ljava/lang/Runnable;
 HSPLandroid/os/PowerManager;-><init>(Landroid/content/Context;Landroid/os/IPowerManager;Landroid/os/Handler;)V
-HSPLandroid/os/PowerManager;->getDefaultScreenBrightnessSetting()I
-HSPLandroid/os/PowerManager;->getLocationPowerSaveMode()I
 HSPLandroid/os/PowerManager;->getMaximumScreenBrightnessSetting()I
 HSPLandroid/os/PowerManager;->getMinimumScreenBrightnessSetting()I
-HSPLandroid/os/PowerManager;->getPowerSaveState(I)Landroid/os/PowerSaveState;
-HPLandroid/os/PowerManager;->goToSleep(JII)V
 HSPLandroid/os/PowerManager;->isDeviceIdleMode()Z
 HSPLandroid/os/PowerManager;->isInteractive()Z
 HSPLandroid/os/PowerManager;->isLightDeviceIdleMode()Z
 HSPLandroid/os/PowerManager;->isPowerSaveMode()Z
 HSPLandroid/os/PowerManager;->isScreenOn()Z
-HSPLandroid/os/PowerManager;->isWakeLockLevelSupported(I)Z
 HSPLandroid/os/PowerManager;->newWakeLock(ILjava/lang/String;)Landroid/os/PowerManager$WakeLock;
-HPLandroid/os/PowerManager;->sleepReasonToString(I)Ljava/lang/String;
-HSPLandroid/os/PowerManager;->userActivity(JII)V
-HSPLandroid/os/PowerManager;->userActivity(JZ)V
 HSPLandroid/os/PowerManager;->validateWakeLockParameters(ILjava/lang/String;)V
-HPLandroid/os/PowerManager;->wakeReasonToString(I)Ljava/lang/String;
-HSPLandroid/os/PowerManager;->wakeUp(JILjava/lang/String;)V
-HSPLandroid/os/PowerManagerInternal;->registerLowPowerModeObserver(ILjava/util/function/Consumer;)V
-HSPLandroid/os/PowerManagerInternal;->wakefulnessToString(I)Ljava/lang/String;
-HSPLandroid/os/PowerSaveState$1;-><init>()V
-HSPLandroid/os/PowerSaveState$Builder;->build()Landroid/os/PowerSaveState;
-HSPLandroid/os/PowerSaveState;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/Process;->getStartElapsedRealtime()J
-HSPLandroid/os/Process;->getThreadGroupLeader(I)I
-HPLandroid/os/Process;->getUidForPid(I)I
 HSPLandroid/os/Process;->is64Bit()Z
 HSPLandroid/os/Process;->isApplicationUid(I)Z
 HSPLandroid/os/Process;->isIsolated()Z
 HSPLandroid/os/Process;->isIsolated(I)Z
-HSPLandroid/os/Process;->isThreadInProcess(II)Z
-HSPLandroid/os/Process;->killProcessQuiet(I)V
 HSPLandroid/os/Process;->myPid()I
 HSPLandroid/os/Process;->myTid()I
 HSPLandroid/os/Process;->myUid()I
 HSPLandroid/os/Process;->myUserHandle()Landroid/os/UserHandle;
 HSPLandroid/os/Process;->setStartTimes(JJ)V
-HSPLandroid/os/Process;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/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;)Landroid/os/Process$ProcessStartResult;
-HPLandroid/os/Process;->startWebView(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/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;)Landroid/os/Process$ProcessStartResult;
-HPLandroid/os/RecoverySystem;->handleAftermath(Landroid/content/Context;)Ljava/lang/String;
-HSPLandroid/os/Registrant;-><init>(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLandroid/os/Registrant;->clear()V
-HSPLandroid/os/Registrant;->getHandler()Landroid/os/Handler;
-HSPLandroid/os/Registrant;->internalNotifyRegistrant(Ljava/lang/Object;Ljava/lang/Throwable;)V
-HSPLandroid/os/Registrant;->notifyRegistrant()V
-HSPLandroid/os/Registrant;->notifyRegistrant(Landroid/os/AsyncResult;)V
-HSPLandroid/os/Registrant;->notifyResult(Ljava/lang/Object;)V
-HSPLandroid/os/RegistrantList;-><init>()V
-HSPLandroid/os/RegistrantList;->add(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLandroid/os/RegistrantList;->add(Landroid/os/Registrant;)V
-HSPLandroid/os/RegistrantList;->addUnique(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLandroid/os/RegistrantList;->internalNotifyRegistrants(Ljava/lang/Object;Ljava/lang/Throwable;)V
-HSPLandroid/os/RegistrantList;->notifyRegistrants()V
-HSPLandroid/os/RegistrantList;->notifyRegistrants(Landroid/os/AsyncResult;)V
-HSPLandroid/os/RegistrantList;->notifyResult(Ljava/lang/Object;)V
-HSPLandroid/os/RegistrantList;->remove(Landroid/os/Handler;)V
-HSPLandroid/os/RegistrantList;->removeCleared()V
-HSPLandroid/os/RegistrantList;->size()I
 HSPLandroid/os/RemoteCallback$1;-><init>(Landroid/os/RemoteCallback;)V
-HSPLandroid/os/RemoteCallback$1;->sendResult(Landroid/os/Bundle;)V
-HSPLandroid/os/RemoteCallback$3;-><init>()V
-HSPLandroid/os/RemoteCallback$3;->createFromParcel(Landroid/os/Parcel;)Landroid/os/RemoteCallback;
-HSPLandroid/os/RemoteCallback$3;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/RemoteCallback;-><init>(Landroid/os/RemoteCallback$OnResultListener;)V
+HSPLandroid/os/RemoteCallback;-><init>(Landroid/os/RemoteCallback$OnResultListener;Landroid/os/Handler;)V
 HSPLandroid/os/RemoteCallback;->sendResult(Landroid/os/Bundle;)V
-HSPLandroid/os/RemoteCallback;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/RemoteCallbackList$Callback;->binderDied()V
+HSPLandroid/os/RemoteCallbackList$Callback;-><init>(Landroid/os/RemoteCallbackList;Landroid/os/IInterface;Ljava/lang/Object;)V
 HSPLandroid/os/RemoteCallbackList;-><init>()V
 HSPLandroid/os/RemoteCallbackList;->beginBroadcast()I
-HSPLandroid/os/RemoteCallbackList;->broadcast(Ljava/util/function/Consumer;)V
-HSPLandroid/os/RemoteCallbackList;->broadcastForEachCookie(Ljava/util/function/Consumer;)V
 HSPLandroid/os/RemoteCallbackList;->finishBroadcast()V
-HSPLandroid/os/RemoteCallbackList;->getBroadcastCookie(I)Ljava/lang/Object;
 HSPLandroid/os/RemoteCallbackList;->getBroadcastItem(I)Landroid/os/IInterface;
-HSPLandroid/os/RemoteCallbackList;->getRegisteredCallbackCount()I
-HSPLandroid/os/RemoteCallbackList;->kill()V
 HSPLandroid/os/RemoteCallbackList;->logExcessiveCallbacks()V
-HSPLandroid/os/RemoteCallbackList;->onCallbackDied(Landroid/os/IInterface;)V
-HSPLandroid/os/RemoteCallbackList;->onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V
 HSPLandroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;)Z
 HSPLandroid/os/RemoteCallbackList;->register(Landroid/os/IInterface;Ljava/lang/Object;)Z
 HSPLandroid/os/RemoteCallbackList;->unregister(Landroid/os/IInterface;)Z
+HSPLandroid/os/RemoteException;-><init>()V
 HSPLandroid/os/RemoteException;-><init>(Ljava/lang/String;)V
-HSPLandroid/os/ResultReceiver$1;-><init>()V
+HSPLandroid/os/RemoteException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
 HSPLandroid/os/ResultReceiver$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ResultReceiver;
 HSPLandroid/os/ResultReceiver$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/os/ResultReceiver$MyResultReceiver;-><init>(Landroid/os/ResultReceiver;)V
 HSPLandroid/os/ResultReceiver$MyResultReceiver;->send(ILandroid/os/Bundle;)V
-HSPLandroid/os/ResultReceiver$MyRunnable;->run()V
 HSPLandroid/os/ResultReceiver;-><init>(Landroid/os/Handler;)V
+HSPLandroid/os/ResultReceiver;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/os/ResultReceiver;->send(ILandroid/os/Bundle;)V
 HSPLandroid/os/ResultReceiver;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/SELinux;->restorecon(Ljava/io/File;)Z
-HPLandroid/os/SELinux;->restoreconRecursive(Ljava/io/File;)Z
 HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;)V
 HSPLandroid/os/ServiceManager;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
-HSPLandroid/os/ServiceManager;->checkService(Ljava/lang/String;)Landroid/os/IBinder;
+HSPLandroid/os/ServiceManager;->getIServiceManager()Landroid/os/IServiceManager;
 HSPLandroid/os/ServiceManager;->getService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManager;->getServiceOrThrow(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManager;->initServiceCache(Ljava/util/Map;)V
 HSPLandroid/os/ServiceManager;->rawGetService(Ljava/lang/String;)Landroid/os/IBinder;
+HSPLandroid/os/ServiceManagerNative;->asInterface(Landroid/os/IBinder;)Landroid/os/IServiceManager;
+HSPLandroid/os/ServiceManagerProxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/ServiceManagerProxy;->addService(Ljava/lang/String;Landroid/os/IBinder;ZI)V
 HSPLandroid/os/ServiceManagerProxy;->checkService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLandroid/os/ServiceManagerProxy;->getService(Ljava/lang/String;)Landroid/os/IBinder;
-HSPLandroid/os/ServiceSpecificException;->toString()Ljava/lang/String;
-HSPLandroid/os/SharedMemory$1;-><init>()V
-HSPLandroid/os/SharedMemory$Closer;->run()V
-HSPLandroid/os/SharedMemory$MemoryRegistration;->acquire()Landroid/os/SharedMemory$MemoryRegistration;
-HSPLandroid/os/SharedMemory$MemoryRegistration;->release()V
-HSPLandroid/os/SharedMemory$Unmapper;->run()V
-HSPLandroid/os/SharedMemory;-><init>(Ljava/io/FileDescriptor;)V
-HPLandroid/os/SharedMemory;->close()V
-HSPLandroid/os/SharedMemory;->create(Ljava/lang/String;I)Landroid/os/SharedMemory;
-HSPLandroid/os/SharedMemory;->map(III)Ljava/nio/ByteBuffer;
-HSPLandroid/os/SharedMemory;->mapReadWrite()Ljava/nio/ByteBuffer;
-HPLandroid/os/SharedMemory;->setProtect(I)Z
-HPLandroid/os/SharedMemory;->unmap(Ljava/nio/ByteBuffer;)V
-HSPLandroid/os/ShellCallback$1;-><init>()V
-HSPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/ShellCallback;
-HSPLandroid/os/ShellCallback$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/ShellCommand;->exec(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)I
-HSPLandroid/os/ShellCommand;->getNextArg()Ljava/lang/String;
-HSPLandroid/os/ShellCommand;->getNextOption()Ljava/lang/String;
-HSPLandroid/os/ShellCommand;->getOutPrintWriter()Ljava/io/PrintWriter;
-HSPLandroid/os/ShellCommand;->getRawOutputStream()Ljava/io/OutputStream;
-HSPLandroid/os/ShellCommand;->init(Landroid/os/Binder;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;I)V
-HSPLandroid/os/SimpleClock;->instant()Ljava/time/Instant;
 HSPLandroid/os/StatFs;-><init>(Ljava/lang/String;)V
 HSPLandroid/os/StatFs;->doStat(Ljava/lang/String;)Landroid/system/StructStatVfs;
 HSPLandroid/os/StatFs;->getAvailableBlocks()I
 HSPLandroid/os/StatFs;->getAvailableBlocksLong()J
 HSPLandroid/os/StatFs;->getAvailableBytes()J
 HSPLandroid/os/StatFs;->getBlockCount()I
+HSPLandroid/os/StatFs;->getBlockCountLong()J
 HSPLandroid/os/StatFs;->getBlockSize()I
 HSPLandroid/os/StatFs;->getBlockSizeLong()J
 HSPLandroid/os/StatFs;->getTotalBytes()J
-HSPLandroid/os/StatFs;->restat(Ljava/lang/String;)V
-HSPLandroid/os/StatsLogEventWrapper$1;-><init>()V
-HSPLandroid/os/StatsLogEventWrapper;-><init>(IJJ)V
-HPLandroid/os/StatsLogEventWrapper;->writeBoolean(Z)V
-HSPLandroid/os/StatsLogEventWrapper;->writeInt(I)V
-HSPLandroid/os/StatsLogEventWrapper;->writeLong(J)V
-HSPLandroid/os/StatsLogEventWrapper;->writeString(Ljava/lang/String;)V
-HSPLandroid/os/StatsLogEventWrapper;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/StrictMode$1;-><init>()V
+HSPLandroid/os/StatsServiceManager;-><init>()V
 HSPLandroid/os/StrictMode$1;->initialValue()Ljava/lang/Object;
 HSPLandroid/os/StrictMode$1;->initialValue()Ljava/util/ArrayList;
-HSPLandroid/os/StrictMode$2;-><init>()V
 HSPLandroid/os/StrictMode$2;->initialValue()Ljava/lang/Object;
 HSPLandroid/os/StrictMode$2;->initialValue()Ljava/util/ArrayList;
-HSPLandroid/os/StrictMode$3;-><init>()V
 HSPLandroid/os/StrictMode$3;->initialValue()Landroid/os/Handler;
 HSPLandroid/os/StrictMode$3;->initialValue()Ljava/lang/Object;
-HSPLandroid/os/StrictMode$4;-><init>()V
 HSPLandroid/os/StrictMode$4;->initialValue()Landroid/os/StrictMode$AndroidBlockGuardPolicy;
 HSPLandroid/os/StrictMode$4;->initialValue()Ljava/lang/Object;
-HSPLandroid/os/StrictMode$5;-><init>()V
 HSPLandroid/os/StrictMode$5;->onPathAccess(Ljava/lang/String;)V
-HSPLandroid/os/StrictMode$6;-><init>()V
-HSPLandroid/os/StrictMode$7;-><init>()V
-HSPLandroid/os/StrictMode$8;-><init>()V
 HSPLandroid/os/StrictMode$8;->initialValue()Landroid/os/StrictMode$ThreadSpanState;
 HSPLandroid/os/StrictMode$8;->initialValue()Ljava/lang/Object;
-HSPLandroid/os/StrictMode$9;-><init>()V
+HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;-><init>(I)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->getThreadPolicyMask()I
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->handleViolationWithTimingAttempt(Landroid/os/StrictMode$ViolationInfo;)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->lambda$handleViolationWithTimingAttempt$0$StrictMode$AndroidBlockGuardPolicy(Landroid/view/IWindowManager;Ljava/util/ArrayList;)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onCustomSlowCall(Ljava/lang/String;)V
-HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onExplicitGc()V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onReadFromDisk()V
-HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onResourceMismatch(Ljava/lang/Object;)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onThreadPolicyViolation(Landroid/os/StrictMode$ViolationInfo;)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onUnbufferedIO()V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onWriteToDisk()V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->setThreadPolicyMask(I)V
 HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->startHandlingViolationException(Landroid/os/strictmode/Violation;)V
+HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>()V
+HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;-><init>(Landroid/os/StrictMode$1;)V
 HSPLandroid/os/StrictMode$AndroidCloseGuardReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLandroid/os/StrictMode$InstanceTracker;-><init>(Ljava/lang/Object;)V
 HSPLandroid/os/StrictMode$InstanceTracker;->finalize()V
@@ -12203,152 +9624,171 @@
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->build()Landroid/os/StrictMode$ThreadPolicy;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectAll()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectCustomSlowCalls()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectResourceMismatches()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->detectUnbufferedIo()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->disable(I)Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->enable(I)Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyDeath()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyDeathOnNetwork()Landroid/os/StrictMode$ThreadPolicy$Builder;
+HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyDropBox()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->penaltyLog()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitAll()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskReads()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy$Builder;->permitDiskWrites()Landroid/os/StrictMode$ThreadPolicy$Builder;
 HSPLandroid/os/StrictMode$ThreadPolicy;-><init>(ILandroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;)V
-HSPLandroid/os/StrictMode$ViolationInfo$1;-><init>()V
-HSPLandroid/os/StrictMode$ViolationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/StrictMode$ViolationInfo;
-HSPLandroid/os/StrictMode$ViolationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/os/StrictMode$ThreadPolicy;-><init>(ILandroid/os/StrictMode$OnThreadViolationListener;Ljava/util/concurrent/Executor;Landroid/os/StrictMode$1;)V
+HSPLandroid/os/StrictMode$ThreadSpanState;-><init>()V
+HSPLandroid/os/StrictMode$ThreadSpanState;-><init>(Landroid/os/StrictMode$1;)V
 HSPLandroid/os/StrictMode$ViolationInfo;-><init>(Landroid/os/Parcel;Z)V
 HSPLandroid/os/StrictMode$ViolationInfo;-><init>(Landroid/os/strictmode/Violation;I)V
+HSPLandroid/os/StrictMode$ViolationInfo;->access$1200(Landroid/os/StrictMode$ViolationInfo;)Landroid/os/strictmode/Violation;
+HSPLandroid/os/StrictMode$ViolationInfo;->access$500(Landroid/os/StrictMode$ViolationInfo;)I
+HSPLandroid/os/StrictMode$ViolationInfo;->addLocalStack(Ljava/lang/Throwable;)V
 HSPLandroid/os/StrictMode$ViolationInfo;->getStackTrace()Ljava/lang/String;
-HSPLandroid/os/StrictMode$ViolationInfo;->getViolationDetails()Ljava/lang/String;
 HSPLandroid/os/StrictMode$ViolationInfo;->hashCode()I
+HSPLandroid/os/StrictMode$ViolationInfo;->penaltyEnabled(I)Z
 HSPLandroid/os/StrictMode$ViolationInfo;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/os/StrictMode$VmPolicy$Builder;-><init>()V
 HSPLandroid/os/StrictMode$VmPolicy$Builder;->build()Landroid/os/StrictMode$VmPolicy;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;
 HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectAll()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectContentUriWithoutPermission()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectCredentialProtectedWhileLocked()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedClosableObjects()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedRegistrationObjects()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectLeakedSqlLiteObjects()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->detectUntaggedSockets()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->disable(I)Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->enable(I)Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->penaltyDeathOnFileUriExposure()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->penaltyDropBox()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->penaltyLog()Landroid/os/StrictMode$VmPolicy$Builder;
+HSPLandroid/os/StrictMode$VmPolicy$Builder;->permitActivityLeaks()Landroid/os/StrictMode$VmPolicy$Builder;
 HSPLandroid/os/StrictMode$VmPolicy;-><init>(ILjava/util/HashMap;Landroid/os/StrictMode$OnVmViolationListener;Ljava/util/concurrent/Executor;)V
+HSPLandroid/os/StrictMode$VmPolicy;-><init>(ILjava/util/HashMap;Landroid/os/StrictMode$OnVmViolationListener;Ljava/util/concurrent/Executor;Landroid/os/StrictMode$1;)V
 HSPLandroid/os/StrictMode;->access$100()Ljava/util/HashMap;
+HSPLandroid/os/StrictMode;->access$1000()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$1100()Landroid/os/StrictMode$ViolationLogger;
+HSPLandroid/os/StrictMode;->access$1400(ILandroid/os/StrictMode$ViolationInfo;)V
+HSPLandroid/os/StrictMode;->access$1500()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$1600()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$1700(Ljava/lang/String;I)V
+HSPLandroid/os/StrictMode;->access$2400()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$400()Z
+HSPLandroid/os/StrictMode;->access$600()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$800()Ljava/lang/ThreadLocal;
+HSPLandroid/os/StrictMode;->access$900()Z
 HSPLandroid/os/StrictMode;->allowThreadDiskReads()Landroid/os/StrictMode$ThreadPolicy;
 HSPLandroid/os/StrictMode;->allowThreadDiskReadsMask()I
 HSPLandroid/os/StrictMode;->allowThreadDiskWrites()Landroid/os/StrictMode$ThreadPolicy;
 HSPLandroid/os/StrictMode;->allowThreadDiskWritesMask()I
+HSPLandroid/os/StrictMode;->clearGatheredViolations()V
 HSPLandroid/os/StrictMode;->decrementExpectedActivityCount(Ljava/lang/Class;)V
-HSPLandroid/os/StrictMode;->dropboxViolationAsync(ILandroid/os/StrictMode$ViolationInfo;)V
 HSPLandroid/os/StrictMode;->getThreadPolicy()Landroid/os/StrictMode$ThreadPolicy;
-HSPLandroid/os/StrictMode;->handleApplicationStrictModeViolation(ILandroid/os/StrictMode$ViolationInfo;)V
+HSPLandroid/os/StrictMode;->getThreadPolicyMask()I
+HSPLandroid/os/StrictMode;->hasGatheredViolations()Z
 HSPLandroid/os/StrictMode;->incrementExpectedActivityCount(Ljava/lang/Class;)V
 HSPLandroid/os/StrictMode;->initThreadDefaults(Landroid/content/pm/ApplicationInfo;)V
 HSPLandroid/os/StrictMode;->initVmDefaults(Landroid/content/pm/ApplicationInfo;)V
 HSPLandroid/os/StrictMode;->isBundledSystemApp(Landroid/content/pm/ApplicationInfo;)Z
 HSPLandroid/os/StrictMode;->isUserKeyUnlocked(I)Z
-HSPLandroid/os/StrictMode;->lambda$dropboxViolationAsync$2(ILandroid/os/StrictMode$ViolationInfo;)V
-HSPLandroid/os/StrictMode;->noteResourceMismatch(Ljava/lang/Object;)V
+HSPLandroid/os/StrictMode;->lambda$static$0(Landroid/os/StrictMode$ViolationInfo;)V
 HSPLandroid/os/StrictMode;->noteSlowCall(Ljava/lang/String;)V
 HSPLandroid/os/StrictMode;->onBinderStrictModePolicyChange(I)V
 HSPLandroid/os/StrictMode;->onCredentialProtectedPathAccess(Ljava/lang/String;I)V
+HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;)V
 HSPLandroid/os/StrictMode;->onVmPolicyViolation(Landroid/os/strictmode/Violation;Z)V
+HSPLandroid/os/StrictMode;->readAndHandleBinderCallViolations(Landroid/os/Parcel;)V
 HSPLandroid/os/StrictMode;->setBlockGuardPolicy(I)V
+HSPLandroid/os/StrictMode;->setBlockGuardVmPolicy(I)V
+HSPLandroid/os/StrictMode;->setCloseGuardEnabled(Z)V
 HSPLandroid/os/StrictMode;->setThreadPolicy(Landroid/os/StrictMode$ThreadPolicy;)V
 HSPLandroid/os/StrictMode;->setThreadPolicyMask(I)V
 HSPLandroid/os/StrictMode;->setVmPolicy(Landroid/os/StrictMode$VmPolicy;)V
+HSPLandroid/os/StrictMode;->tooManyViolationsThisLoop()Z
 HSPLandroid/os/StrictMode;->trackActivity(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/os/StrictMode;->vmClosableObjectLeaksEnabled()Z
 HSPLandroid/os/StrictMode;->vmContentUriWithoutPermissionEnabled()Z
 HSPLandroid/os/StrictMode;->vmFileUriExposureEnabled()Z
 HSPLandroid/os/StrictMode;->vmImplicitDirectBootEnabled()Z
 HSPLandroid/os/StrictMode;->vmRegistrationLeaksEnabled()Z
 HSPLandroid/os/StrictMode;->vmSqliteObjectLeaksEnabled()Z
 HSPLandroid/os/StrictMode;->vmUntaggedSocketEnabled()Z
-HSPLandroid/os/StrictMode;->writeGatheredViolationsToParcel(Landroid/os/Parcel;)V
-HSPLandroid/os/SynchronousResultReceiver;-><init>(Ljava/lang/String;)V
-HSPLandroid/os/SynchronousResultReceiver;->awaitResult(J)Landroid/os/SynchronousResultReceiver$Result;
-HSPLandroid/os/SynchronousResultReceiver;->getName()Ljava/lang/String;
-HSPLandroid/os/SynchronousResultReceiver;->onReceiveResult(ILandroid/os/Bundle;)V
-HSPLandroid/os/SystemClock$1;->millis()J
-HSPLandroid/os/SystemClock$2;->millis()J
-HSPLandroid/os/SystemClock$3;->millis()J
-HSPLandroid/os/SystemClock;->currentNetworkTimeClock()Ljava/time/Clock;
-HSPLandroid/os/SystemClock;->currentNetworkTimeMillis()J
-HSPLandroid/os/SystemClock;->elapsedRealtimeClock()Ljava/time/Clock;
 HSPLandroid/os/SystemClock;->sleep(J)V
-HSPLandroid/os/SystemClock;->uptimeMillisClock()Ljava/time/Clock;
+HSPLandroid/os/SystemProperties$Handle;-><init>(J)V
+HSPLandroid/os/SystemProperties$Handle;-><init>(JLandroid/os/SystemProperties$1;)V
+HSPLandroid/os/SystemProperties$Handle;->getLong(J)J
+HSPLandroid/os/SystemProperties;->access$300(JJ)J
 HSPLandroid/os/SystemProperties;->addChangeCallback(Ljava/lang/Runnable;)V
 HSPLandroid/os/SystemProperties;->callChangeCallbacks()V
-HSPLandroid/os/SystemProperties;->digestOf([Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/os/SystemProperties;->find(Ljava/lang/String;)Landroid/os/SystemProperties$Handle;
 HSPLandroid/os/SystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/os/SystemProperties;->get(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/os/SystemProperties;->getBoolean(Ljava/lang/String;Z)Z
 HSPLandroid/os/SystemProperties;->getInt(Ljava/lang/String;I)I
 HSPLandroid/os/SystemProperties;->getLong(Ljava/lang/String;J)J
+HSPLandroid/os/SystemProperties;->native_get(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/os/SystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/SystemService$1;-><init>()V
-HSPLandroid/os/SystemService$State;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/os/SystemService;->getState(Ljava/lang/String;)Landroid/os/SystemService$State;
-HSPLandroid/os/SystemService;->isRunning(Ljava/lang/String;)Z
-HSPLandroid/os/SystemUpdateManager;-><init>(Landroid/os/ISystemUpdateManager;)V
-HPLandroid/os/SystemVibrator;-><init>()V
+HSPLandroid/os/SystemService$1;->run()V
+HSPLandroid/os/SystemService;->access$100()Ljava/lang/Object;
 HSPLandroid/os/SystemVibrator;-><init>(Landroid/content/Context;)V
-HSPLandroid/os/SystemVibrator;->cancel()V
 HSPLandroid/os/SystemVibrator;->hasVibrator()Z
-HSPLandroid/os/SystemVibrator;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Ljava/lang/String;Landroid/media/AudioAttributes;)V
-HSPLandroid/os/Temperature$1;-><init>()V
+HSPLandroid/os/TelephonyServiceManager$ServiceRegisterer;-><init>(Landroid/os/TelephonyServiceManager;Ljava/lang/String;)V
+HSPLandroid/os/TelephonyServiceManager$ServiceRegisterer;-><init>(Ljava/lang/String;)V
+HSPLandroid/os/TelephonyServiceManager$ServiceRegisterer;->get()Landroid/os/IBinder;
+HSPLandroid/os/TelephonyServiceManager;-><init>()V
+HSPLandroid/os/TelephonyServiceManager;->getCarrierConfigServiceRegisterer()Landroid/os/TelephonyServiceManager$ServiceRegisterer;
+HSPLandroid/os/TelephonyServiceManager;->getPhoneSubServiceRegisterer()Landroid/os/TelephonyServiceManager$ServiceRegisterer;
+HSPLandroid/os/TelephonyServiceManager;->getSubscriptionServiceRegisterer()Landroid/os/TelephonyServiceManager$ServiceRegisterer;
+HSPLandroid/os/TelephonyServiceManager;->getTelephonyRegistryServiceRegisterer()Landroid/os/TelephonyServiceManager$ServiceRegisterer;
+HSPLandroid/os/TelephonyServiceManager;->getTelephonyServiceRegisterer()Landroid/os/TelephonyServiceManager$ServiceRegisterer;
+HSPLandroid/os/ThreadLocalWorkSource;->getToken()J
+HSPLandroid/os/ThreadLocalWorkSource;->getUid()I
+HSPLandroid/os/ThreadLocalWorkSource;->lambda$static$0()Ljava/lang/Integer;
+HSPLandroid/os/ThreadLocalWorkSource;->parseUidFromToken(J)I
 HSPLandroid/os/ThreadLocalWorkSource;->restore(J)V
 HSPLandroid/os/ThreadLocalWorkSource;->setUid(I)J
-HSPLandroid/os/TokenWatcher;-><init>(Landroid/os/Handler;Ljava/lang/String;)V
 HSPLandroid/os/Trace;->asyncTraceBegin(JLjava/lang/String;I)V
 HSPLandroid/os/Trace;->asyncTraceEnd(JLjava/lang/String;I)V
 HSPLandroid/os/Trace;->beginSection(Ljava/lang/String;)V
 HSPLandroid/os/Trace;->endSection()V
+HSPLandroid/os/Trace;->isEnabled()Z
 HSPLandroid/os/Trace;->isTagEnabled(J)Z
 HSPLandroid/os/Trace;->setAppTracingAllowed(Z)V
 HSPLandroid/os/Trace;->setTracingEnabled(ZI)V
 HSPLandroid/os/Trace;->traceBegin(JLjava/lang/String;)V
 HSPLandroid/os/Trace;->traceCounter(JLjava/lang/String;I)V
 HSPLandroid/os/Trace;->traceEnd(J)V
-HPLandroid/os/TransactionTooLargeException;-><init>(Ljava/lang/String;)V
-HSPLandroid/os/UEventObserver$UEventThread;->addObserver(Ljava/lang/String;Landroid/os/UEventObserver;)V
-HSPLandroid/os/UEventObserver$UEventThread;->removeObserver(Landroid/os/UEventObserver;)V
-HSPLandroid/os/UEventObserver$UEventThread;->run()V
-HSPLandroid/os/UEventObserver;->finalize()V
-HSPLandroid/os/UEventObserver;->getThread()Landroid/os/UEventObserver$UEventThread;
-HSPLandroid/os/UEventObserver;->peekThread()Landroid/os/UEventObserver$UEventThread;
-HSPLandroid/os/UEventObserver;->startObserving(Ljava/lang/String;)V
-HSPLandroid/os/UpdateLock;-><init>(Ljava/lang/String;)V
-HSPLandroid/os/UpdateLock;->isHeld()Z
-HSPLandroid/os/UserHandle$1;-><init>()V
 HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;
 HSPLandroid/os/UserHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/UserHandle;-><init>(I)V
-HPLandroid/os/UserHandle;->describeContents()I
 HSPLandroid/os/UserHandle;->equals(Ljava/lang/Object;)Z
-HSPLandroid/os/UserHandle;->formatUid(Ljava/io/PrintWriter;I)V
-HSPLandroid/os/UserHandle;->formatUid(Ljava/lang/StringBuilder;I)V
 HSPLandroid/os/UserHandle;->getAppId(I)I
 HSPLandroid/os/UserHandle;->getCacheAppGid(I)I
-HSPLandroid/os/UserHandle;->getCallingAppId()I
+HSPLandroid/os/UserHandle;->getCacheAppGid(II)I
 HSPLandroid/os/UserHandle;->getCallingUserId()I
 HSPLandroid/os/UserHandle;->getIdentifier()I
-HSPLandroid/os/UserHandle;->getSharedAppGid(I)I
 HSPLandroid/os/UserHandle;->getUid(II)I
-HSPLandroid/os/UserHandle;->getUserGid(I)I
 HSPLandroid/os/UserHandle;->getUserHandleForUid(I)Landroid/os/UserHandle;
 HSPLandroid/os/UserHandle;->getUserId(I)I
 HSPLandroid/os/UserHandle;->hashCode()I
 HSPLandroid/os/UserHandle;->isApp(I)Z
-HSPLandroid/os/UserHandle;->isIsolated(I)Z
-HSPLandroid/os/UserHandle;->isOwner()Z
+HSPLandroid/os/UserHandle;->isCore(I)Z
 HSPLandroid/os/UserHandle;->isSameApp(II)Z
-HSPLandroid/os/UserHandle;->isSystem()Z
 HSPLandroid/os/UserHandle;->myUserId()I
 HSPLandroid/os/UserHandle;->of(I)Landroid/os/UserHandle;
 HSPLandroid/os/UserHandle;->readFromParcel(Landroid/os/Parcel;)Landroid/os/UserHandle;
 HSPLandroid/os/UserHandle;->toString()Ljava/lang/String;
 HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/os/UserHandle;->writeToParcel(Landroid/os/UserHandle;Landroid/os/Parcel;)V
-HSPLandroid/os/UserManager$EnforcingUser$1;-><init>()V
 HSPLandroid/os/UserManager;-><init>(Landroid/content/Context;Landroid/os/IUserManager;)V
-HPLandroid/os/UserManager;->canAddMoreManagedProfiles(IZ)Z
 HSPLandroid/os/UserManager;->get(Landroid/content/Context;)Landroid/os/UserManager;
 HSPLandroid/os/UserManager;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
-HSPLandroid/os/UserManager;->getCredentialOwnerProfile(I)I
-HSPLandroid/os/UserManager;->getEnabledProfileIds(I)[I
-HSPLandroid/os/UserManager;->getEnabledProfiles(I)Ljava/util/List;
 HSPLandroid/os/UserManager;->getMaxSupportedUsers()I
-HSPLandroid/os/UserManager;->getPrimaryUser()Landroid/content/pm/UserInfo;
 HSPLandroid/os/UserManager;->getProfileIds(IZ)[I
 HSPLandroid/os/UserManager;->getProfileIdsWithDisabled(I)[I
 HSPLandroid/os/UserManager;->getProfileParent(I)Landroid/content/pm/UserInfo;
@@ -12359,382 +9799,149 @@
 HSPLandroid/os/UserManager;->getUserHandle(I)I
 HSPLandroid/os/UserManager;->getUserInfo(I)Landroid/content/pm/UserInfo;
 HSPLandroid/os/UserManager;->getUserProfiles()Ljava/util/List;
-HSPLandroid/os/UserManager;->getUserRestrictionSources(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/os/UserManager;->getUserRestrictions(Landroid/os/UserHandle;)Landroid/os/Bundle;
 HSPLandroid/os/UserManager;->getUserSerialNumber(I)I
 HSPLandroid/os/UserManager;->getUsers()Ljava/util/List;
 HSPLandroid/os/UserManager;->getUsers(Z)Ljava/util/List;
-HSPLandroid/os/UserManager;->hasBaseUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z
+HSPLandroid/os/UserManager;->getUsers(ZZZ)Ljava/util/List;
+HSPLandroid/os/UserManager;->hasBadge(I)Z
 HSPLandroid/os/UserManager;->hasUserRestriction(Ljava/lang/String;)Z
 HSPLandroid/os/UserManager;->hasUserRestriction(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/os/UserManager;->isAdminUser()Z
+HSPLandroid/os/UserManager;->hasUserRestrictionForUser(Ljava/lang/String;Landroid/os/UserHandle;)Z
 HSPLandroid/os/UserManager;->isDemoUser()Z
 HSPLandroid/os/UserManager;->isDeviceInDemoMode(Landroid/content/Context;)Z
+HSPLandroid/os/UserManager;->isHeadlessSystemUserMode()Z
 HSPLandroid/os/UserManager;->isManagedProfile()Z
 HSPLandroid/os/UserManager;->isManagedProfile(I)Z
-HSPLandroid/os/UserManager;->isPrimaryUser()Z
-HSPLandroid/os/UserManager;->isQuietModeEnabled(Landroid/os/UserHandle;)Z
-HSPLandroid/os/UserManager;->isSameProfileGroup(II)Z
-HSPLandroid/os/UserManager;->isSplitSystemUser()Z
+HSPLandroid/os/UserManager;->isProfile(I)Z
 HSPLandroid/os/UserManager;->isSystemUser()Z
-HSPLandroid/os/UserManager;->isUserAdmin(I)Z
 HSPLandroid/os/UserManager;->isUserRunning(I)Z
 HSPLandroid/os/UserManager;->isUserRunning(Landroid/os/UserHandle;)Z
-HSPLandroid/os/UserManager;->isUserSwitcherEnabled()Z
+HSPLandroid/os/UserManager;->isUserTypeGuest(Ljava/lang/String;)Z
+HSPLandroid/os/UserManager;->isUserTypeManagedProfile(Ljava/lang/String;)Z
+HSPLandroid/os/UserManager;->isUserTypeRestricted(Ljava/lang/String;)Z
 HSPLandroid/os/UserManager;->isUserUnlocked()Z
 HSPLandroid/os/UserManager;->isUserUnlocked(I)Z
 HSPLandroid/os/UserManager;->isUserUnlocked(Landroid/os/UserHandle;)Z
 HSPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(I)Z
-HPLandroid/os/UserManager;->isUserUnlockingOrUnlocked(Landroid/os/UserHandle;)Z
 HSPLandroid/os/UserManager;->supportsMultipleUsers()Z
-HSPLandroid/os/VibrationEffect$1;-><init>()V
-HPLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/VibrationEffect;
-HPLandroid/os/VibrationEffect$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/VibrationEffect$OneShot$1;-><init>()V
-HPLandroid/os/VibrationEffect$OneShot;->getAmplitude()I
-HPLandroid/os/VibrationEffect$OneShot;->getDuration()J
-HPLandroid/os/VibrationEffect$OneShot;->resolve(I)Landroid/os/VibrationEffect$OneShot;
-HPLandroid/os/VibrationEffect$OneShot;->scale(FI)Landroid/os/VibrationEffect$OneShot;
-HSPLandroid/os/VibrationEffect$OneShot;->validate()V
-HSPLandroid/os/VibrationEffect$Prebaked$1;-><init>()V
-HPLandroid/os/VibrationEffect$Prebaked;->getDuration()J
-HPLandroid/os/VibrationEffect$Prebaked;->getEffectStrength()I
-HPLandroid/os/VibrationEffect$Prebaked;->getId()I
-HPLandroid/os/VibrationEffect$Prebaked;->setEffectStrength(I)V
-HPLandroid/os/VibrationEffect$Prebaked;->shouldFallback()Z
-HSPLandroid/os/VibrationEffect$Prebaked;->validate()V
-HSPLandroid/os/VibrationEffect$Waveform$1;-><init>()V
-HPLandroid/os/VibrationEffect$Waveform;->getAmplitudes()[I
-HPLandroid/os/VibrationEffect$Waveform;->getDuration()J
-HPLandroid/os/VibrationEffect$Waveform;->getRepeatIndex()I
-HPLandroid/os/VibrationEffect$Waveform;->getTimings()[J
-HPLandroid/os/VibrationEffect$Waveform;->resolve(I)Landroid/os/VibrationEffect$Waveform;
-HPLandroid/os/VibrationEffect$Waveform;->scale(FI)Landroid/os/VibrationEffect$Waveform;
-HSPLandroid/os/VibrationEffect$Waveform;->validate()V
-HSPLandroid/os/VibrationEffect;->createOneShot(JI)Landroid/os/VibrationEffect;
-HSPLandroid/os/VibrationEffect;->createWaveform([JI)Landroid/os/VibrationEffect;
-HSPLandroid/os/VibrationEffect;->createWaveform([J[II)Landroid/os/VibrationEffect;
-HSPLandroid/os/VibrationEffect;->get(I)Landroid/os/VibrationEffect;
-HSPLandroid/os/VibrationEffect;->get(IZ)Landroid/os/VibrationEffect;
-HSPLandroid/os/Vibrator;->getDefaultHapticFeedbackIntensity()I
-HSPLandroid/os/Vibrator;->getDefaultNotificationVibrationIntensity()I
-HSPLandroid/os/Vibrator;->getDefaultRingVibrationIntensity()I
-HSPLandroid/os/Vibrator;->vibrate(Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V
-HSPLandroid/os/WorkSource$1;-><init>()V
+HSPLandroid/os/VibrationAttributes$1;-><init>()V
+HSPLandroid/os/VibrationAttributes$Builder;->build()Landroid/os/VibrationAttributes;
+HSPLandroid/os/VibrationAttributes;-><clinit>()V
+HSPLandroid/os/VibrationAttributes;-><init>(IILandroid/media/AudioAttributes;)V
+HSPLandroid/os/VibrationAttributes;-><init>(IILandroid/media/AudioAttributes;Landroid/os/VibrationAttributes$1;)V
+HSPLandroid/os/VibrationEffect;-><init>()V
+HSPLandroid/os/Vibrator;-><init>(Landroid/content/Context;)V
+HSPLandroid/os/Vibrator;->loadDefaultIntensity(Landroid/content/Context;I)I
+HSPLandroid/os/Vibrator;->loadVibrationIntensities(Landroid/content/Context;)V
 HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource;
 HSPLandroid/os/WorkSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/WorkSource$WorkChain$1;-><init>()V
-HPLandroid/os/WorkSource$WorkChain$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/WorkSource$WorkChain;
-HPLandroid/os/WorkSource$WorkChain$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/WorkSource$WorkChain;->equals(Ljava/lang/Object;)Z
-HPLandroid/os/WorkSource$WorkChain;->getAttributionUid()I
-HPLandroid/os/WorkSource$WorkChain;->getTags()[Ljava/lang/String;
-HPLandroid/os/WorkSource$WorkChain;->getUids()[I
-HSPLandroid/os/WorkSource;-><init>(I)V
+HSPLandroid/os/WorkSource;-><init>()V
 HSPLandroid/os/WorkSource;-><init>(ILjava/lang/String;)V
 HSPLandroid/os/WorkSource;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/os/WorkSource;-><init>(Landroid/os/WorkSource;)V
-HPLandroid/os/WorkSource;->add(I)Z
-HSPLandroid/os/WorkSource;->add(ILjava/lang/String;)Z
 HSPLandroid/os/WorkSource;->add(Landroid/os/WorkSource;)Z
-HSPLandroid/os/WorkSource;->clearNames()V
-HSPLandroid/os/WorkSource;->diff(Landroid/os/WorkSource;)Z
-HSPLandroid/os/WorkSource;->diffChains(Landroid/os/WorkSource;Landroid/os/WorkSource;)[Ljava/util/ArrayList;
-HSPLandroid/os/WorkSource;->equals(Ljava/lang/Object;)Z
-HSPLandroid/os/WorkSource;->get(I)I
-HSPLandroid/os/WorkSource;->getAttributionUid()I
-HSPLandroid/os/WorkSource;->getName(I)Ljava/lang/String;
-HSPLandroid/os/WorkSource;->getWorkChains()Ljava/util/ArrayList;
-HPLandroid/os/WorkSource;->insert(II)V
+HSPLandroid/os/WorkSource;->getPackageName(I)Ljava/lang/String;
+HSPLandroid/os/WorkSource;->getUid(I)I
 HSPLandroid/os/WorkSource;->insert(IILjava/lang/String;)V
-HSPLandroid/os/WorkSource;->isChainedBatteryAttributionEnabled(Landroid/content/Context;)Z
 HSPLandroid/os/WorkSource;->isEmpty()Z
-HSPLandroid/os/WorkSource;->remove(Landroid/os/WorkSource;)Z
-HSPLandroid/os/WorkSource;->removeUidsAndNames(Landroid/os/WorkSource;)Z
-HPLandroid/os/WorkSource;->set(I)V
-HSPLandroid/os/WorkSource;->set(Landroid/os/WorkSource;)V
-HSPLandroid/os/WorkSource;->setReturningDiffs(Landroid/os/WorkSource;)[Landroid/os/WorkSource;
 HSPLandroid/os/WorkSource;->size()I
-HSPLandroid/os/WorkSource;->toString()Ljava/lang/String;
 HSPLandroid/os/WorkSource;->updateLocked(Landroid/os/WorkSource;ZZ)Z
 HSPLandroid/os/WorkSource;->updateUidsAndNamesLocked(Landroid/os/WorkSource;ZZ)Z
-HSPLandroid/os/WorkSource;->updateUidsLocked(Landroid/os/WorkSource;ZZ)Z
 HSPLandroid/os/WorkSource;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/ZygoteProcess$ZygoteState;->close()V
-HSPLandroid/os/ZygoteProcess$ZygoteState;->connect(Landroid/net/LocalSocketAddress;Landroid/net/LocalSocketAddress;)Landroid/os/ZygoteProcess$ZygoteState;
-HSPLandroid/os/ZygoteProcess$ZygoteState;->isClosed()Z
-HSPLandroid/os/ZygoteProcess$ZygoteState;->matches(Ljava/lang/String;)Z
-HSPLandroid/os/ZygoteProcess;-><init>()V
-HSPLandroid/os/ZygoteProcess;-><init>(Landroid/net/LocalSocketAddress;Landroid/net/LocalSocketAddress;)V
-HSPLandroid/os/ZygoteProcess;->attemptZygoteSendArgsAndGetResult(Landroid/os/ZygoteProcess$ZygoteState;Ljava/lang/String;)Landroid/os/Process$ProcessStartResult;
-HSPLandroid/os/ZygoteProcess;->establishZygoteConnectionForAbi(Ljava/lang/String;)V
-HSPLandroid/os/ZygoteProcess;->fetchUsapPoolEnabledProp()Z
-HSPLandroid/os/ZygoteProcess;->fetchUsapPoolEnabledPropWithMinInterval()Z
-HSPLandroid/os/ZygoteProcess;->getAbiList(Ljava/io/BufferedWriter;Ljava/io/DataInputStream;)Ljava/util/List;
-HSPLandroid/os/ZygoteProcess;->getPrimarySocketAddress()Landroid/net/LocalSocketAddress;
-HSPLandroid/os/ZygoteProcess;->maybeSetApiBlacklistExemptions(Landroid/os/ZygoteProcess$ZygoteState;Z)Z
-HSPLandroid/os/ZygoteProcess;->maybeSetHiddenApiAccessLogSampleRate(Landroid/os/ZygoteProcess$ZygoteState;)V
-HSPLandroid/os/ZygoteProcess;->maybeSetHiddenApiAccessStatslogSampleRate(Landroid/os/ZygoteProcess$ZygoteState;)V
-HSPLandroid/os/ZygoteProcess;->openZygoteSocketIfNeeded(Ljava/lang/String;)Landroid/os/ZygoteProcess$ZygoteState;
-HSPLandroid/os/ZygoteProcess;->preloadApp(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)Z
-HSPLandroid/os/ZygoteProcess;->preloadDefault(Ljava/lang/String;)Z
-HSPLandroid/os/ZygoteProcess;->setApiBlacklistExemptions(Ljava/util/List;)Z
-HSPLandroid/os/ZygoteProcess;->setHiddenApiAccessLogSampleRate(I)V
-HSPLandroid/os/ZygoteProcess;->setHiddenApiAccessStatslogSampleRate(I)V
-HSPLandroid/os/ZygoteProcess;->start(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult;
-HSPLandroid/os/ZygoteProcess;->startChildZygote(Ljava/lang/String;Ljava/lang/String;II[IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)Landroid/os/ChildZygoteProcess;
-HSPLandroid/os/ZygoteProcess;->startViaZygote(Ljava/lang/String;Ljava/lang/String;II[IIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;Z[Ljava/lang/String;)Landroid/os/Process$ProcessStartResult;
-HSPLandroid/os/ZygoteProcess;->waitForConnectionToZygote(Landroid/net/LocalSocketAddress;)V
-HSPLandroid/os/ZygoteProcess;->waitForConnectionToZygote(Ljava/lang/String;)V
-HSPLandroid/os/ZygoteProcess;->zygoteSendArgsAndGetResult(Landroid/os/ZygoteProcess$ZygoteState;ZLjava/util/ArrayList;)Landroid/os/Process$ProcessStartResult;
-PLandroid/os/connectivity/CellularBatteryStats$1;-><init>()V
-PLandroid/os/connectivity/CellularBatteryStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/connectivity/CellularBatteryStats;
-PLandroid/os/connectivity/CellularBatteryStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/os/connectivity/CellularBatteryStats;-><init>()V
-HPLandroid/os/connectivity/CellularBatteryStats;->initialize()V
-PLandroid/os/connectivity/CellularBatteryStats;->readFromParcel(Landroid/os/Parcel;)V
-PLandroid/os/connectivity/CellularBatteryStats;->setTimeInRatMs([J)V
-PLandroid/os/connectivity/CellularBatteryStats;->setTimeInRxSignalStrengthLevelMs([J)V
-PLandroid/os/connectivity/CellularBatteryStats;->setTxTimeMs([J)V
-HPLandroid/os/connectivity/CellularBatteryStats;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/os/connectivity/GpsBatteryStats$1;-><init>()V
-PLandroid/os/connectivity/GpsBatteryStats;-><init>()V
-PLandroid/os/connectivity/GpsBatteryStats;->setTimeInGpsSignalQualityLevel([J)V
-HPLandroid/os/connectivity/GpsBatteryStats;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/os/connectivity/WifiBatteryStats$1;-><init>()V
-PLandroid/os/connectivity/WifiBatteryStats;-><init>()V
-HPLandroid/os/connectivity/WifiBatteryStats;->initialize()V
-HPLandroid/os/connectivity/WifiBatteryStats;->setTimeInRxSignalStrengthLevelMs([J)V
-HPLandroid/os/connectivity/WifiBatteryStats;->setTimeInStateMs([J)V
-HPLandroid/os/connectivity/WifiBatteryStats;->setTimeInSupplicantStateMs([J)V
-HPLandroid/os/connectivity/WifiBatteryStats;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/os/health/HealthKeys$Constants;-><init>(Ljava/lang/Class;)V
-PLandroid/os/health/HealthKeys$Constants;->getDataType()Ljava/lang/String;
-HPLandroid/os/health/HealthKeys$Constants;->getIndex(II)I
-PLandroid/os/health/HealthKeys$Constants;->getKeys(I)[I
-PLandroid/os/health/HealthKeys$Constants;->getSize(I)I
-PLandroid/os/health/HealthKeys$SortedIntArray;->addValue(I)V
-PLandroid/os/health/HealthKeys$SortedIntArray;->getArray()[I
-HSPLandroid/os/health/HealthStats;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/health/HealthStats;->getMeasurement(I)J
-HSPLandroid/os/health/HealthStats;->getStats(I)Ljava/util/Map;
-HSPLandroid/os/health/HealthStats;->getTimer(I)Landroid/os/health/TimerStat;
-HSPLandroid/os/health/HealthStats;->getTimers(I)Ljava/util/Map;
-HSPLandroid/os/health/HealthStats;->hasMeasurement(I)Z
-HSPLandroid/os/health/HealthStats;->hasMeasurements(I)Z
-HSPLandroid/os/health/HealthStats;->hasStats(I)Z
-HSPLandroid/os/health/HealthStats;->hasTimer(I)Z
-HSPLandroid/os/health/HealthStats;->hasTimers(I)Z
-HSPLandroid/os/health/HealthStatsParceler$1;-><init>()V
-HSPLandroid/os/health/HealthStatsParceler$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/health/HealthStatsParceler;
-HSPLandroid/os/health/HealthStatsParceler$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/health/HealthStatsParceler;->getHealthStats()Landroid/os/health/HealthStats;
-HPLandroid/os/health/HealthStatsParceler;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/os/health/HealthStatsWriter;-><init>(Landroid/os/health/HealthKeys$Constants;)V
-HPLandroid/os/health/HealthStatsWriter;->addMeasurement(IJ)V
-HPLandroid/os/health/HealthStatsWriter;->addMeasurements(ILjava/lang/String;J)V
-HPLandroid/os/health/HealthStatsWriter;->addStats(ILjava/lang/String;Landroid/os/health/HealthStatsWriter;)V
-HPLandroid/os/health/HealthStatsWriter;->addTimer(IIJ)V
-HPLandroid/os/health/HealthStatsWriter;->addTimers(ILjava/lang/String;Landroid/os/health/TimerStat;)V
-HPLandroid/os/health/HealthStatsWriter;->flattenToParcel(Landroid/os/Parcel;)V
-HPLandroid/os/health/HealthStatsWriter;->writeLongsMap(Landroid/os/Parcel;Landroid/util/ArrayMap;)V
-HPLandroid/os/health/HealthStatsWriter;->writeParcelableMap(Landroid/os/Parcel;Landroid/util/ArrayMap;)V
-HSPLandroid/os/health/SystemHealthManager;->takeMyUidSnapshot()Landroid/os/health/HealthStats;
-HSPLandroid/os/health/SystemHealthManager;->takeUidSnapshot(I)Landroid/os/health/HealthStats;
-HSPLandroid/os/health/TimerStat$1;-><init>()V
-HSPLandroid/os/health/TimerStat$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/health/TimerStat;
-HSPLandroid/os/health/TimerStat$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/health/TimerStat;-><init>(IJ)V
-HPLandroid/os/health/TimerStat;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/image/IDynamicSystemService$Stub;-><init>()V
-HPLandroid/os/image/IDynamicSystemService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/storage/IStorageEventListener$Stub$Proxy;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+HSPLandroid/os/storage/IObbActionListener$Stub;-><init>()V
+HSPLandroid/os/storage/IStorageEventListener$Stub;-><init>()V
 HSPLandroid/os/storage/IStorageEventListener$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/os/storage/IStorageManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;
-HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
 HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->isUserKeyUnlocked(I)Z
-HSPLandroid/os/storage/IStorageManager$Stub;-><init>()V
 HSPLandroid/os/storage/IStorageManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/storage/IStorageManager;
-HPLandroid/os/storage/IStorageManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/os/storage/IStorageManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/storage/StorageEventListener;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->handleMessage(Landroid/os/Message;)Z
-HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->onStorageStateChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+HSPLandroid/os/storage/StorageEventListener;-><init>()V
+HSPLandroid/os/storage/StorageManager$ObbActionListener;-><init>(Landroid/os/storage/StorageManager;)V
+HSPLandroid/os/storage/StorageManager$ObbActionListener;-><init>(Landroid/os/storage/StorageManager;Landroid/os/storage/StorageManager$1;)V
+HSPLandroid/os/storage/StorageManager$StorageEventListenerDelegate;-><init>(Landroid/os/storage/StorageManager;Ljava/util/concurrent/Executor;Landroid/os/storage/StorageEventListener;Landroid/os/storage/StorageManager$StorageVolumeCallback;)V
+HSPLandroid/os/storage/StorageManager$StorageVolumeCallback;-><init>()V
 HSPLandroid/os/storage/StorageManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLandroid/os/storage/StorageManager;->allocateBytes(Ljava/io/FileDescriptor;JI)V
-HSPLandroid/os/storage/StorageManager;->allocateBytes(Ljava/util/UUID;JI)V
-HSPLandroid/os/storage/StorageManager;->checkPermissionAndAppOp(ZIILjava/lang/String;Ljava/lang/String;I)Z
-HSPLandroid/os/storage/StorageManager;->checkPermissionReadImages(ZIILjava/lang/String;)Z
-HSPLandroid/os/storage/StorageManager;->convert(Ljava/lang/String;)Ljava/util/UUID;
 HSPLandroid/os/storage/StorageManager;->convert(Ljava/util/UUID;)Ljava/lang/String;
-HSPLandroid/os/storage/StorageManager;->findEmulatedForPrivate(Landroid/os/storage/VolumeInfo;)Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/StorageManager;->findPathForUuid(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/storage/StorageManager;->findPrivateForEmulated(Landroid/os/storage/VolumeInfo;)Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/StorageManager;->findVolumeById(Ljava/lang/String;)Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/StorageManager;->findVolumeByQualifiedUuid(Ljava/lang/String;)Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/StorageManager;->from(Landroid/content/Context;)Landroid/os/storage/StorageManager;
-HSPLandroid/os/storage/StorageManager;->getAllocatableBytes(Ljava/util/UUID;I)J
-HSPLandroid/os/storage/StorageManager;->getBestVolumeDescription(Landroid/os/storage/VolumeInfo;)Ljava/lang/String;
-HPLandroid/os/storage/StorageManager;->getPrimaryStorageSize()J
-HPLandroid/os/storage/StorageManager;->getPrimaryStorageUuid()Ljava/lang/String;
-HSPLandroid/os/storage/StorageManager;->getPrimaryVolume()Landroid/os/storage/StorageVolume;
-HSPLandroid/os/storage/StorageManager;->getStorageCacheBytes(Ljava/io/File;I)J
-HSPLandroid/os/storage/StorageManager;->getStorageFullBytes(Ljava/io/File;)J
-HSPLandroid/os/storage/StorageManager;->getStorageLowBytes(Ljava/io/File;)J
+HSPLandroid/os/storage/StorageManager;->getStorageVolume(Ljava/io/File;I)Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageManager;->getStorageVolume([Landroid/os/storage/StorageVolume;Ljava/io/File;)Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageManager;->getStorageVolumes()Ljava/util/List;
 HSPLandroid/os/storage/StorageManager;->getUuidForPath(Ljava/io/File;)Ljava/util/UUID;
-HSPLandroid/os/storage/StorageManager;->getVolumeList()[Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageManager;->getVolumeList(II)[Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageManager;->getVolumes()Ljava/util/List;
-HSPLandroid/os/storage/StorageManager;->getWritablePrivateVolumes()Ljava/util/List;
-HSPLandroid/os/storage/StorageManager;->hasAdoptable()Z
-HSPLandroid/os/storage/StorageManager;->hasIsolatedStorage()Z
-HSPLandroid/os/storage/StorageManager;->inCryptKeeperBounce()Z
-HSPLandroid/os/storage/StorageManager;->isBlockEncrypted()Z
-HSPLandroid/os/storage/StorageManager;->isFileEncryptedEmulatedOnly()Z
-HSPLandroid/os/storage/StorageManager;->isFileEncryptedNativeOnly()Z
-HSPLandroid/os/storage/StorageManager;->isFileEncryptedNativeOrEmulated()Z
-HSPLandroid/os/storage/StorageManager;->isUserKeyUnlocked(I)Z
-HSPLandroid/os/storage/StorageManager;->prepareUserStorage(Ljava/lang/String;III)V
-HSPLandroid/os/storage/StorageManager;->registerListener(Landroid/os/storage/StorageEventListener;)V
-HSPLandroid/os/storage/StorageVolume$1;-><init>()V
 HSPLandroid/os/storage/StorageVolume$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageVolume$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/os/storage/StorageVolume$1;->newArray(I)[Landroid/os/storage/StorageVolume;
 HSPLandroid/os/storage/StorageVolume$1;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/os/storage/StorageVolume;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/storage/StorageVolume;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;ZZZZJLandroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/storage/StorageVolume;->describeContents()I
-HSPLandroid/os/storage/StorageVolume;->getPath()Ljava/lang/String;
+HSPLandroid/os/storage/StorageVolume;-><init>(Landroid/os/Parcel;Landroid/os/storage/StorageVolume$1;)V
+HSPLandroid/os/storage/StorageVolume;->getPathFile()Ljava/io/File;
 HSPLandroid/os/storage/StorageVolume;->getState()Ljava/lang/String;
 HSPLandroid/os/storage/StorageVolume;->getUuid()Ljava/lang/String;
-HSPLandroid/os/storage/StorageVolume;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/storage/VolumeInfo$1;-><init>()V
-HSPLandroid/os/storage/VolumeInfo$2;-><init>()V
 HSPLandroid/os/storage/VolumeInfo$2;->createFromParcel(Landroid/os/Parcel;)Landroid/os/storage/VolumeInfo;
 HSPLandroid/os/storage/VolumeInfo$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/storage/VolumeInfo$2;->newArray(I)[Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/VolumeInfo$2;->newArray(I)[Ljava/lang/Object;
 HSPLandroid/os/storage/VolumeInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/storage/VolumeInfo;-><init>(Ljava/lang/String;ILandroid/os/storage/DiskInfo;Ljava/lang/String;)V
-HSPLandroid/os/storage/VolumeInfo;->buildStorageVolume(Landroid/content/Context;IZ)Landroid/os/storage/StorageVolume;
-HSPLandroid/os/storage/VolumeInfo;->clone()Landroid/os/storage/VolumeInfo;
-HSPLandroid/os/storage/VolumeInfo;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLandroid/os/storage/VolumeInfo;->getBroadcastForEnvironment(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getDescription()Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getDiskId()Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getEnvironmentForState(I)Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getFsUuid()Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getId()Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->getInternalPathForUser(I)Ljava/io/File;
-HSPLandroid/os/storage/VolumeInfo;->getPath()Ljava/io/File;
-HSPLandroid/os/storage/VolumeInfo;->getPathForUser(I)Ljava/io/File;
-HSPLandroid/os/storage/VolumeInfo;->getState()I
 HSPLandroid/os/storage/VolumeInfo;->getType()I
-HSPLandroid/os/storage/VolumeInfo;->isMountedReadable()Z
-HSPLandroid/os/storage/VolumeInfo;->isMountedWritable()Z
-HSPLandroid/os/storage/VolumeInfo;->isPrimary()Z
-HSPLandroid/os/storage/VolumeInfo;->isVisible()Z
-HSPLandroid/os/storage/VolumeInfo;->isVisibleForRead(I)Z
-HSPLandroid/os/storage/VolumeInfo;->isVisibleForUser(I)Z
-HSPLandroid/os/storage/VolumeInfo;->isVisibleForWrite(I)Z
-HSPLandroid/os/storage/VolumeInfo;->toString()Ljava/lang/String;
-HSPLandroid/os/storage/VolumeInfo;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/permission/-$$Lambda$PermissionControllerManager$PendingGetRuntimePermissionBackup$TnLX6gxZCMF3D0czwj_XwNhPIgE;->run()V
-HSPLandroid/permission/-$$Lambda$PermissionControllerManager$RemoteService$L8N-TbqIPWKu7tyiOxbu_00YKss;-><init>()V
-HPLandroid/permission/IPermissionController$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/permission/IPermissionController$Stub$Proxy;->getRuntimePermissionBackup(Landroid/os/UserHandle;Landroid/os/ParcelFileDescriptor;)V
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->doInBackground([Ljava/lang/Void;)[B
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->getRemotePipe()Landroid/os/ParcelFileDescriptor;
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->onPostExecute(Ljava/lang/Object;)V
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->onPostExecute([B)V
-PLandroid/permission/PermissionControllerManager$FileReaderTask;->onPreExecute()V
-PLandroid/permission/PermissionControllerManager$PendingGetRuntimePermissionBackup;->accept(Ljava/lang/Object;)V
-PLandroid/permission/PermissionControllerManager$PendingGetRuntimePermissionBackup;->accept([B)V
-PLandroid/permission/PermissionControllerManager$PendingGetRuntimePermissionBackup;->run()V
-HSPLandroid/permission/PermissionControllerManager$RemoteService;->getRemoteRequestMillis()J
-HSPLandroid/permission/PermissionControllerManager$RemoteService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-HSPLandroid/permission/PermissionControllerManager$RemoteService;->getTimeoutIdleBindMillis()J
-HSPLandroid/permission/PermissionControllerManager;-><init>(Landroid/content/Context;)V
-HPLandroid/permission/PermissionControllerManager;->getRuntimePermissionBackup(Landroid/os/UserHandle;Ljava/util/concurrent/Executor;Landroid/permission/PermissionControllerManager$OnGetRuntimePermissionBackupCallback;)V
-HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getNewPermissions()Ljava/util/List;
-HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getSplitPermission()Ljava/lang/String;
-HSPLandroid/permission/PermissionManager$SplitPermissionInfo;->getTargetSdk()I
-HSPLandroid/permission/PermissionManager;->getSplitPermissions()Ljava/util/List;
+HSPLandroid/os/strictmode/DiskReadViolation;-><init>()V
+HSPLandroid/os/strictmode/LeakedClosableViolation;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+HSPLandroid/os/strictmode/Violation;-><init>(Ljava/lang/String;)V
+HSPLandroid/permission/IPermissionManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/permission/IPermissionManager$Stub$Proxy;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLandroid/permission/IPermissionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/permission/IPermissionManager;
 HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferences(Landroid/content/Context;)Landroid/content/SharedPreferences;
-HSPLandroid/preference/PreferenceManager;->setDefaultValues(Landroid/content/Context;IZ)V
-HSPLandroid/preference/PreferenceManager;->setDefaultValues(Landroid/content/Context;Ljava/lang/String;IIZ)V
-HSPLandroid/print/IPrintManager$Stub;-><init>()V
-PLandroid/print/IPrintSpooler$Stub$Proxy;->pruneApprovedPrintServices(Ljava/util/List;)V
-PLandroid/print/IPrintSpooler$Stub$Proxy;->removeObsoletePrintJobs()V
-PLandroid/print/IPrintSpooler$Stub$Proxy;->setClient(Landroid/print/IPrintSpoolerClient;)V
-PLandroid/print/IPrintSpooler$Stub;->asInterface(Landroid/os/IBinder;)Landroid/print/IPrintSpooler;
-HSPLandroid/print/IPrintSpoolerCallbacks$Stub;-><init>()V
-HSPLandroid/print/IPrintSpoolerClient$Stub;-><init>()V
-PLandroid/print/IPrintSpoolerClient$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/print/IPrintSpoolerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/printservice/IPrintServiceClient$Stub;-><init>()V
-HSPLandroid/printservice/PrintServiceInfo$1;-><init>()V
-HSPLandroid/printservice/PrintServiceInfo;->create(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)Landroid/printservice/PrintServiceInfo;
-HSPLandroid/printservice/PrintServiceInfo;->hashCode()I
-HPLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;-><init>(Ljava/lang/String;DDD)V
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;->getEncoderId()Ljava/lang/String;
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;->getIRRConfig()Landroid/privacy/internal/rappor/RapporConfig;
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;->getProbabilityP()D
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;->getProbabilityQ()D
-HPLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;-><init>(Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;Z[B)V
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;->createEncoder(Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;[B)Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;
-PLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;->encodeBoolean(Z)[B
-HPLandroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;->getLongTermRandomizedResult(DZ[BLjava/lang/String;)Z
-HPLandroid/privacy/internal/rappor/RapporConfig;-><init>(Ljava/lang/String;IDDDII)V
-HPLandroid/privacy/internal/rappor/RapporEncoder;-><init>(Landroid/privacy/internal/rappor/RapporConfig;Z[B)V
-PLandroid/privacy/internal/rappor/RapporEncoder;->encodeBoolean(Z)[B
-HSPLandroid/provider/-$$Lambda$FontsContract$3FDNQd-WsglsyDhif-aHVbzkfrA;-><init>()V
+HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferencesMode()I
+HSPLandroid/preference/PreferenceManager;->getDefaultSharedPreferencesName(Landroid/content/Context;)Ljava/lang/String;
+HPLandroid/provider/-$$Lambda$DeviceConfig$6U9gBH6h5Oab2DB_e83az4n_WEo;-><init>(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;Landroid/provider/DeviceConfig$Properties;)V
+HPLandroid/provider/-$$Lambda$DeviceConfig$6U9gBH6h5Oab2DB_e83az4n_WEo;->run()V
+HSPLandroid/provider/-$$Lambda$FontsContract$rqfIZKvP1frnI9vP1hVA8jQN_RE;-><init>(Landroid/provider/FontRequest;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/locks/Lock;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/locks/Condition;)V
 HSPLandroid/provider/-$$Lambda$FontsContract$rqfIZKvP1frnI9vP1hVA8jQN_RE;->run()V
-HSPLandroid/provider/BlockedNumberContract$SystemContract;->shouldShowEmergencyCallNotification(Landroid/content/Context;)Z
-PLandroid/provider/BlockedNumberContract$SystemContract;->shouldSystemBlockNumber(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)I
-HPLandroid/provider/CallLog$Calls;->addCall(Lcom/android/internal/telephony/CallerInfo;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIILandroid/telecom/PhoneAccountHandle;JILjava/lang/Long;ZLandroid/os/UserHandle;ZILjava/lang/CharSequence;Ljava/lang/String;Landroid/telecom/CallIdentification;)Landroid/net/Uri;
-HPLandroid/provider/CallLog$Calls;->addEntryAndRemoveExpiredEntries(Landroid/content/Context;Landroid/os/UserManager;Landroid/os/UserHandle;Landroid/content/ContentValues;)Landroid/net/Uri;
-HPLandroid/provider/CallLog$Calls;->charSequenceToString(Ljava/lang/CharSequence;)Ljava/lang/String;
-HPLandroid/provider/CallLog$Calls;->getLogAccountAddress(Landroid/content/Context;Landroid/telecom/PhoneAccountHandle;)Ljava/lang/String;
-HPLandroid/provider/CallLog$Calls;->getLogNumberPresentation(Ljava/lang/String;I)I
-HSPLandroid/provider/CallLog$Calls;->shouldHaveSharedCallLogEntries(Landroid/content/Context;Landroid/os/UserManager;I)Z
-HSPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;
+HSPLandroid/provider/-$$Lambda$Settings$NameValueCache$cLX_nUBDGp9SYpFxrABk-2ceeMI;-><init>(Landroid/provider/Settings$NameValueCache;)V
+HSPLandroid/provider/-$$Lambda$Settings$NameValueCache$qSyMM6rUAHCa-5rsP-atfAqR3sA;-><init>(Landroid/provider/Settings$NameValueCache;)V
+HSPLandroid/provider/CalendarContract$Attendees;-><clinit>()V
 HSPLandroid/provider/ContactsContract$CommonDataKinds$Phone;->getTypeLabelResource(I)I
-HSPLandroid/provider/ContactsContract$Contacts;->getLookupUri(JLjava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/ContactsContract$Contacts;->isEnterpriseContactId(J)Z
-HPLandroid/provider/DeviceConfig$1;->onChange(ZLandroid/net/Uri;)V
-PLandroid/provider/DeviceConfig$3;->run()V
-HSPLandroid/provider/DeviceConfig;->addOnPropertyChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertyChangedListener;)V
-HSPLandroid/provider/DeviceConfig;->decrementNamespace(Ljava/lang/String;)V
+HSPLandroid/provider/DeviceConfig$1;-><init>(Landroid/os/Handler;)V
+PLandroid/provider/DeviceConfig$1;->onChange(ZLandroid/net/Uri;)V
+HPLandroid/provider/DeviceConfig$Properties$Builder;-><init>(Ljava/lang/String;)V
+HPLandroid/provider/DeviceConfig$Properties$Builder;->build()Landroid/provider/DeviceConfig$Properties;
+HPLandroid/provider/DeviceConfig$Properties$Builder;->setString(Ljava/lang/String;Ljava/lang/String;)Landroid/provider/DeviceConfig$Properties$Builder;
+HSPLandroid/provider/DeviceConfig$Properties;-><init>(Ljava/lang/String;Ljava/util/Map;)V
+HSPLandroid/provider/DeviceConfig$Properties;->getKeyset()Ljava/util/Set;
+HPLandroid/provider/DeviceConfig$Properties;->getNamespace()Ljava/lang/String;
+HSPLandroid/provider/DeviceConfig$Properties;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLandroid/provider/DeviceConfig;->access$100(Landroid/net/Uri;)V
+HSPLandroid/provider/DeviceConfig;->addOnPropertiesChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+HSPLandroid/provider/DeviceConfig;->createNamespaceUri(Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/provider/DeviceConfig;->enforceReadPermission(Landroid/content/Context;Ljava/lang/String;)V
 HSPLandroid/provider/DeviceConfig;->getBoolean(Ljava/lang/String;Ljava/lang/String;Z)Z
 HSPLandroid/provider/DeviceConfig;->getFloat(Ljava/lang/String;Ljava/lang/String;F)F
 HSPLandroid/provider/DeviceConfig;->getInt(Ljava/lang/String;Ljava/lang/String;I)I
 HSPLandroid/provider/DeviceConfig;->getLong(Ljava/lang/String;Ljava/lang/String;J)J
+HSPLandroid/provider/DeviceConfig;->getProperties(Ljava/lang/String;[Ljava/lang/String;)Landroid/provider/DeviceConfig$Properties;
 HSPLandroid/provider/DeviceConfig;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/DeviceConfig;->getString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HPLandroid/provider/DeviceConfig;->handleChange(Landroid/net/Uri;)V
 HSPLandroid/provider/DeviceConfig;->incrementNamespace(Ljava/lang/String;)V
-HSPLandroid/provider/DeviceConfig;->removeOnPropertyChangedListener(Landroid/provider/DeviceConfig$OnPropertyChangedListener;)V
-PLandroid/provider/Downloads;->removeAllDownloadsByPackage(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)V
+HPLandroid/provider/DeviceConfig;->lambda$handleChange$0(Landroid/provider/DeviceConfig$OnPropertiesChangedListener;Landroid/provider/DeviceConfig$Properties;)V
 HSPLandroid/provider/FontRequest;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/List;)V
-HSPLandroid/provider/FontsContract$1;-><init>()V
-HPLandroid/provider/FontsContract$1;->run()V
+HSPLandroid/provider/FontRequest;->getIdentifier()Ljava/lang/String;
+HSPLandroid/provider/FontRequest;->getProviderAuthority()Ljava/lang/String;
+HSPLandroid/provider/FontRequest;->getProviderPackage()Ljava/lang/String;
+HSPLandroid/provider/FontRequest;->getQuery()Ljava/lang/String;
+PLandroid/provider/FontsContract$1;->run()V
+HSPLandroid/provider/FontsContract$FontFamilyResult;-><init>(I[Landroid/provider/FontsContract$FontInfo;)V
 HSPLandroid/provider/FontsContract$FontFamilyResult;->getFonts()[Landroid/provider/FontsContract$FontInfo;
 HSPLandroid/provider/FontsContract$FontFamilyResult;->getStatusCode()I
+HSPLandroid/provider/FontsContract$FontInfo;-><init>(Landroid/net/Uri;I[Landroid/graphics/fonts/FontVariationAxis;IZI)V
 HSPLandroid/provider/FontsContract$FontInfo;->getAxes()[Landroid/graphics/fonts/FontVariationAxis;
 HSPLandroid/provider/FontsContract$FontInfo;->getResultCode()I
 HSPLandroid/provider/FontsContract$FontInfo;->getTtcIndex()I
 HSPLandroid/provider/FontsContract$FontInfo;->getUri()Landroid/net/Uri;
 HSPLandroid/provider/FontsContract$FontInfo;->getWeight()I
 HSPLandroid/provider/FontsContract$FontInfo;->isItalic()Z
-HSPLandroid/provider/FontsContract;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+PLandroid/provider/FontsContract;->access$000()Ljava/lang/Object;
+PLandroid/provider/FontsContract;->access$100()Landroid/os/HandlerThread;
+PLandroid/provider/FontsContract;->access$102(Landroid/os/HandlerThread;)Landroid/os/HandlerThread;
+PLandroid/provider/FontsContract;->access$202(Landroid/os/Handler;)Landroid/os/Handler;
 HSPLandroid/provider/FontsContract;->buildTypeface(Landroid/content/Context;Landroid/os/CancellationSignal;[Landroid/provider/FontsContract$FontInfo;)Landroid/graphics/Typeface;
 HSPLandroid/provider/FontsContract;->fetchFonts(Landroid/content/Context;Landroid/os/CancellationSignal;Landroid/provider/FontRequest;)Landroid/provider/FontsContract$FontFamilyResult;
 HSPLandroid/provider/FontsContract;->getFontFromProvider(Landroid/content/Context;Landroid/provider/FontRequest;Ljava/lang/String;Landroid/os/CancellationSignal;)[Landroid/provider/FontsContract$FontInfo;
@@ -12743,341 +9950,267 @@
 HSPLandroid/provider/FontsContract;->lambda$getFontSync$0(Landroid/provider/FontRequest;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/locks/Lock;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/atomic/AtomicBoolean;Ljava/util/concurrent/locks/Condition;)V
 HSPLandroid/provider/FontsContract;->prepareFontData(Landroid/content/Context;[Landroid/provider/FontsContract$FontInfo;Landroid/os/CancellationSignal;)Ljava/util/Map;
 HSPLandroid/provider/FontsContract;->setApplicationContextForResources(Landroid/content/Context;)V
-HSPLandroid/provider/MediaStore$Audio$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/MediaStore$Files;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/MediaStore$Images$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/MediaStore$Video$Media;->getContentUri(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/SearchIndexableResource;-><init>(Landroid/content/Context;)V
+HSPLandroid/provider/SearchIndexablesContract;-><clinit>()V
 HSPLandroid/provider/SearchIndexablesProvider;-><init>()V
 HSPLandroid/provider/SearchIndexablesProvider;->attachInfo(Landroid/content/Context;Landroid/content/pm/ProviderInfo;)V
-HSPLandroid/provider/Settings$ContentProviderHolder;-><init>(Landroid/net/Uri;)V
+HSPLandroid/provider/SearchIndexablesProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
+HSPLandroid/provider/SearchIndexablesProvider;->queryDynamicRawData([Ljava/lang/String;)Landroid/database/Cursor;
+HSPLandroid/provider/Settings$Config;->createCompositeName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/provider/Settings$Config;->createPrefix(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/provider/Settings$Config;->getStrings(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Ljava/util/Map;
+HSPLandroid/provider/Settings$ContentProviderHolder;->access$000(Landroid/provider/Settings$ContentProviderHolder;)Landroid/net/Uri;
 HSPLandroid/provider/Settings$ContentProviderHolder;->getProvider(Landroid/content/ContentResolver;)Landroid/content/IContentProvider;
+HSPLandroid/provider/Settings$GenerationTracker;-><init>(Landroid/util/MemoryIntArray;IILjava/lang/Runnable;)V
+HSPLandroid/provider/Settings$GenerationTracker;->getCurrentGeneration()I
+HSPLandroid/provider/Settings$GenerationTracker;->isGenerationChanged()Z
 HSPLandroid/provider/Settings$GenerationTracker;->readCurrentGeneration()I
-HSPLandroid/provider/Settings$Global$1;-><init>()V
-HSPLandroid/provider/Settings$Global$2;-><init>()V
-HSPLandroid/provider/Settings$Global$3;-><init>()V
 HSPLandroid/provider/Settings$Global;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F
 HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I
 HSPLandroid/provider/Settings$Global;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
 HSPLandroid/provider/Settings$Global;->getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J
-HSPLandroid/provider/Settings$Global;->getMovedToSecureSettings(Ljava/util/Set;)V
 HSPLandroid/provider/Settings$Global;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Global;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
 HSPLandroid/provider/Settings$Global;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/provider/Settings$Global;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
-HSPLandroid/provider/Settings$Global;->putLong(Landroid/content/ContentResolver;Ljava/lang/String;J)Z
 HSPLandroid/provider/Settings$Global;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-HSPLandroid/provider/Settings$NameValueCache;-><init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Landroid/provider/Settings$ContentProviderHolder;)V
+HSPLandroid/provider/Settings$Global;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
 HSPLandroid/provider/Settings$NameValueCache;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-HSPLandroid/provider/Settings$Secure$1;-><init>()V
-HSPLandroid/provider/Settings$Secure$2;-><init>()V
-HSPLandroid/provider/Settings$Secure$3;-><init>()V
-HSPLandroid/provider/Settings$Secure$4;-><init>()V
-HSPLandroid/provider/Settings$Secure;->getCloneToManagedProfileSettings(Ljava/util/Set;)V
-HSPLandroid/provider/Settings$Secure;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F
+HSPLandroid/provider/Settings$NameValueCache;->getStringsForPrefix(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/util/List;)Landroid/util/ArrayMap;
+HSPLandroid/provider/Settings$NameValueCache;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZIZ)Z
+HSPLandroid/provider/Settings$NameValueTable;->getUriFor(Landroid/net/Uri;Ljava/lang/String;)Landroid/net/Uri;
 HSPLandroid/provider/Settings$Secure;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;FI)F
 HSPLandroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I
 HSPLandroid/provider/Settings$Secure;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
 HSPLandroid/provider/Settings$Secure;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I
 HSPLandroid/provider/Settings$Secure;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
-HSPLandroid/provider/Settings$Secure;->getLong(Landroid/content/ContentResolver;Ljava/lang/String;J)J
-HSPLandroid/provider/Settings$Secure;->getLongForUser(Landroid/content/ContentResolver;Ljava/lang/String;JI)J
-HSPLandroid/provider/Settings$Secure;->getMovedToGlobalSettings(Ljava/util/Set;)V
 HSPLandroid/provider/Settings$Secure;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$Secure;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
 HSPLandroid/provider/Settings$Secure;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/Settings$Secure;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
-HSPLandroid/provider/Settings$Secure;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
-HSPLandroid/provider/Settings$Secure;->putString(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/provider/Settings$Secure;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLandroid/provider/Settings$Secure;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZI)Z
-HSPLandroid/provider/Settings$System$1;-><init>()V
-HSPLandroid/provider/Settings$System$2;-><init>()V
-HSPLandroid/provider/Settings$System$2;->validate(Ljava/lang/String;)Z
-HSPLandroid/provider/Settings$System$3;-><init>()V
-HSPLandroid/provider/Settings$System$4;-><init>()V
-HSPLandroid/provider/Settings$System$5;-><init>()V
-HSPLandroid/provider/Settings$System$6;-><init>()V
-HSPLandroid/provider/Settings$System;->adjustConfigurationForUser(Landroid/content/ContentResolver;Landroid/content/res/Configuration;IZ)V
-HSPLandroid/provider/Settings$System;->clearConfiguration(Landroid/content/res/Configuration;)V
-HSPLandroid/provider/Settings$System;->getCloneFromParentOnValueSettings(Ljava/util/Map;)V
-HSPLandroid/provider/Settings$System;->getCloneToManagedProfileSettings(Ljava/util/Set;)V
-HSPLandroid/provider/Settings$System;->getConfiguration(Landroid/content/ContentResolver;Landroid/content/res/Configuration;)V
-HSPLandroid/provider/Settings$System;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;F)F
-HSPLandroid/provider/Settings$System;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;FI)F
-HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;)I
+HSPLandroid/provider/Settings$SettingNotFoundException;-><init>(Ljava/lang/String;)V
 HSPLandroid/provider/Settings$System;->getInt(Landroid/content/ContentResolver;Ljava/lang/String;I)I
 HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)I
 HSPLandroid/provider/Settings$System;->getIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)I
-HSPLandroid/provider/Settings$System;->getMovedToGlobalSettings(Ljava/util/Set;)V
-HSPLandroid/provider/Settings$System;->getMovedToSecureSettings(Ljava/util/Set;)V
 HSPLandroid/provider/Settings$System;->getString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/provider/Settings$System;->getStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)Ljava/lang/String;
 HSPLandroid/provider/Settings$System;->getUriFor(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/provider/Settings$System;->putInt(Landroid/content/ContentResolver;Ljava/lang/String;I)Z
 HSPLandroid/provider/Settings$System;->putIntForUser(Landroid/content/ContentResolver;Ljava/lang/String;II)Z
 HSPLandroid/provider/Settings$System;->putStringForUser(Landroid/content/ContentResolver;Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLandroid/provider/Settings;->isCallingPackageAllowedToPerformAppOpsProtectedOperation(Landroid/content/Context;ILjava/lang/String;ZI[Ljava/lang/String;Z)Z
 HSPLandroid/provider/Settings;->isInSystemServer()Z
-HSPLandroid/provider/Settings;->setInSystemServer()V
-HSPLandroid/provider/SettingsValidators$1;-><init>()V
-HSPLandroid/provider/SettingsValidators$2;-><init>()V
-HSPLandroid/provider/SettingsValidators$2;->validate(Ljava/lang/String;)Z
-HSPLandroid/provider/SettingsValidators$3;-><init>()V
-HSPLandroid/provider/SettingsValidators$4;-><init>()V
-HSPLandroid/provider/SettingsValidators$5;-><init>()V
-HSPLandroid/provider/SettingsValidators$6;-><init>()V
-HSPLandroid/provider/SettingsValidators$7;-><init>()V
-HSPLandroid/provider/SettingsValidators$8;-><init>()V
-HSPLandroid/provider/SettingsValidators$9;-><init>()V
-HSPLandroid/provider/SettingsValidators$ComponentNameListValidator;-><init>(Ljava/lang/String;)V
-HSPLandroid/provider/SettingsValidators$DiscreteValueValidator;-><init>([Ljava/lang/String;)V
-HSPLandroid/provider/SettingsValidators$DiscreteValueValidator;->validate(Ljava/lang/String;)Z
-HSPLandroid/provider/SettingsValidators$InclusiveFloatRangeValidator;-><init>(FF)V
-HSPLandroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;-><init>(II)V
-HSPLandroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;->validate(Ljava/lang/String;)Z
-HSPLandroid/provider/SettingsValidators$PackageNameListValidator;-><init>(Ljava/lang/String;)V
-HSPLandroid/provider/Telephony$CarrierId;->getSpecificCarrierIdUriForSubscriptionId(I)Landroid/net/Uri;
-HSPLandroid/provider/Telephony$CarrierId;->getUriForSubscriptionId(I)Landroid/net/Uri;
-HSPLandroid/provider/Telephony$Mms;->isEmailAddress(Ljava/lang/String;)Z
-PLandroid/provider/Telephony$Mms;->isPhoneNumber(Ljava/lang/String;)Z
-HSPLandroid/provider/Telephony$ServiceStateTable;->getContentValuesForServiceState(Landroid/telephony/ServiceState;)Landroid/content/ContentValues;
-HSPLandroid/provider/Telephony$ServiceStateTable;->getUriForSubscriptionId(I)Landroid/net/Uri;
-HSPLandroid/provider/Telephony$ServiceStateTable;->getUriForSubscriptionIdAndField(ILjava/lang/String;)Landroid/net/Uri;
 HSPLandroid/provider/Telephony$Sms;->getDefaultSmsPackage(Landroid/content/Context;)Ljava/lang/String;
-PLandroid/provider/Telephony$Threads;->getOrCreateThreadId(Landroid/content/Context;Ljava/util/Set;)J
 HSPLandroid/renderscript/RenderScriptCacheDir;->setupDiskCache(Ljava/io/File;)V
-HSPLandroid/security/IKeyChainService$Stub$Proxy;->getUserCaAliases()Landroid/content/pm/StringParceledListSlice;
-HSPLandroid/security/KeyChain$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/security/KeyChain$KeyChainConnection;->close()V
-HSPLandroid/security/KeyChain$KeyChainConnection;->getService()Landroid/security/IKeyChainService;
-HSPLandroid/security/KeyChain;->bindAsUser(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection;
+HSPLandroid/security/KeyStore$KeyCharacteristicsCallbackResult;-><init>(Landroid/security/KeyStore;Landroid/security/keystore/KeystoreResponse;Landroid/security/keymaster/KeyCharacteristics;)V
 HSPLandroid/security/KeyStore$KeyCharacteristicsCallbackResult;->getKeyCharacteristics()Landroid/security/keymaster/KeyCharacteristics;
 HSPLandroid/security/KeyStore$KeyCharacteristicsCallbackResult;->getKeystoreResponse()Landroid/security/keystore/KeystoreResponse;
+HSPLandroid/security/KeyStore$KeyCharacteristicsPromise;-><init>(Landroid/security/KeyStore;)V
+HSPLandroid/security/KeyStore$KeyCharacteristicsPromise;-><init>(Landroid/security/KeyStore;Landroid/security/KeyStore$1;)V
+HSPLandroid/security/KeyStore$KeyCharacteristicsPromise;->getFuture()Ljava/util/concurrent/CompletableFuture;
 HSPLandroid/security/KeyStore$KeyCharacteristicsPromise;->onFinished(Landroid/security/keystore/KeystoreResponse;Landroid/security/keymaster/KeyCharacteristics;)V
-HSPLandroid/security/KeyStore$KeystoreResultPromise;->onFinished(Landroid/security/keystore/KeystoreResponse;)V
+HSPLandroid/security/KeyStore$KeystoreResultPromise;-><init>(Landroid/security/KeyStore;)V
+HSPLandroid/security/KeyStore$KeystoreResultPromise;-><init>(Landroid/security/KeyStore;Landroid/security/KeyStore$1;)V
+HSPLandroid/security/KeyStore$OperationPromise;-><init>(Landroid/security/KeyStore;)V
+HSPLandroid/security/KeyStore$OperationPromise;-><init>(Landroid/security/KeyStore;Landroid/security/KeyStore$1;)V
+HSPLandroid/security/KeyStore$OperationPromise;->getFuture()Ljava/util/concurrent/CompletableFuture;
 HSPLandroid/security/KeyStore$OperationPromise;->onFinished(Landroid/security/keymaster/OperationResult;)V
-HSPLandroid/security/KeyStore$State;-><init>(Ljava/lang/String;I)V
+HSPLandroid/security/KeyStore;-><init>(Landroid/security/keystore/IKeystoreService;)V
 HSPLandroid/security/KeyStore;->abort(Landroid/os/IBinder;)I
-HPLandroid/security/KeyStore;->addAuthToken([B)I
 HSPLandroid/security/KeyStore;->begin(Ljava/lang/String;IZLandroid/security/keymaster/KeymasterArguments;[BI)Landroid/security/keymaster/OperationResult;
-HSPLandroid/security/KeyStore;->clearUid(I)Z
-HSPLandroid/security/KeyStore;->contains(Ljava/lang/String;)Z
 HSPLandroid/security/KeyStore;->contains(Ljava/lang/String;I)Z
-HSPLandroid/security/KeyStore;->finish(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B)Landroid/security/keymaster/OperationResult;
+HSPLandroid/security/KeyStore;->finish(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B[B)Landroid/security/keymaster/OperationResult;
+HSPLandroid/security/KeyStore;->getApplicationContext()Landroid/content/Context;
 HSPLandroid/security/KeyStore;->getInstance()Landroid/security/KeyStore;
 HSPLandroid/security/KeyStore;->getKeyCharacteristics(Ljava/lang/String;Landroid/security/keymaster/KeymasterBlob;Landroid/security/keymaster/KeymasterBlob;ILandroid/security/keymaster/KeyCharacteristics;)I
 HSPLandroid/security/KeyStore;->getToken()Landroid/os/IBinder;
-HPLandroid/security/KeyStore;->grant(Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/security/KeyStore;->state(I)Landroid/security/KeyStore$State;
-HPLandroid/security/KeyStore;->unlock(ILjava/lang/String;)Z
 HSPLandroid/security/KeyStore;->update(Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)Landroid/security/keymaster/OperationResult;
-HSPLandroid/security/NetworkSecurityPolicy;-><init>()V
-HPLandroid/security/Scrypt;-><init>()V
-HPLandroid/security/Scrypt;->scrypt([B[BIIII)[B
-HSPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;-><init>()V
-HPLandroid/security/keymaster/IKeyAttestationApplicationIdProvider$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/security/keymaster/KeyAttestationApplicationId$1;-><init>()V
-PLandroid/security/keymaster/KeyAttestationApplicationId;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/security/keymaster/KeyAttestationPackageInfo$1;-><init>()V
-PLandroid/security/keymaster/KeyAttestationPackageInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/security/keymaster/KeyCharacteristics$1;-><init>()V
 HSPLandroid/security/keymaster/KeyCharacteristics$1;->createFromParcel(Landroid/os/Parcel;)Landroid/security/keymaster/KeyCharacteristics;
 HSPLandroid/security/keymaster/KeyCharacteristics$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/security/keymaster/KeyCharacteristics;-><init>()V
+HSPLandroid/security/keymaster/KeyCharacteristics;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/security/keymaster/KeyCharacteristics;->getEnum(I)Ljava/lang/Integer;
 HSPLandroid/security/keymaster/KeyCharacteristics;->getEnums(I)Ljava/util/List;
+HSPLandroid/security/keymaster/KeyCharacteristics;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/security/keymaster/KeyCharacteristics;->shallowCopyFrom(Landroid/security/keymaster/KeyCharacteristics;)V
-HSPLandroid/security/keymaster/KeymasterArgument$1;-><init>()V
 HSPLandroid/security/keymaster/KeymasterArgument$1;->createFromParcel(Landroid/os/Parcel;)Landroid/security/keymaster/KeymasterArgument;
 HSPLandroid/security/keymaster/KeymasterArgument$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/security/keymaster/KeymasterArgument;-><init>(I)V
 HSPLandroid/security/keymaster/KeymasterArgument;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/security/keymaster/KeymasterArguments$1;-><init>()V
 HSPLandroid/security/keymaster/KeymasterArguments$1;->createFromParcel(Landroid/os/Parcel;)Landroid/security/keymaster/KeymasterArguments;
 HSPLandroid/security/keymaster/KeymasterArguments$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/security/keymaster/KeymasterArguments;-><init>()V
+HSPLandroid/security/keymaster/KeymasterArguments;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/security/keymaster/KeymasterArguments;-><init>(Landroid/os/Parcel;Landroid/security/keymaster/KeymasterArguments$1;)V
 HSPLandroid/security/keymaster/KeymasterArguments;->addBytes(I[B)V
 HSPLandroid/security/keymaster/KeymasterArguments;->addEnum(II)V
+HSPLandroid/security/keymaster/KeymasterArguments;->addEnumTag(II)V
 HSPLandroid/security/keymaster/KeymasterArguments;->addUnsignedInt(IJ)V
 HSPLandroid/security/keymaster/KeymasterArguments;->containsTag(I)Z
+HSPLandroid/security/keymaster/KeymasterArguments;->getArgumentByTag(I)Landroid/security/keymaster/KeymasterArgument;
 HSPLandroid/security/keymaster/KeymasterArguments;->getBytes(I[B)[B
 HSPLandroid/security/keymaster/KeymasterArguments;->getEnum(II)I
+HSPLandroid/security/keymaster/KeymasterArguments;->getEnumTagValue(Landroid/security/keymaster/KeymasterArgument;)I
 HSPLandroid/security/keymaster/KeymasterArguments;->getEnums(I)Ljava/util/List;
 HSPLandroid/security/keymaster/KeymasterArguments;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/security/keymaster/KeymasterBlob$1;-><init>()V
+HSPLandroid/security/keymaster/KeymasterBlob;-><init>([B)V
 HSPLandroid/security/keymaster/KeymasterBlob;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/security/keymaster/KeymasterBlobArgument;-><init>(I[B)V
 HSPLandroid/security/keymaster/KeymasterBlobArgument;->writeValue(Landroid/os/Parcel;)V
-HSPLandroid/security/keymaster/KeymasterCertificateChain$1;-><init>()V
+HSPLandroid/security/keymaster/KeymasterBooleanArgument;-><init>(ILandroid/os/Parcel;)V
+HSPLandroid/security/keymaster/KeymasterDateArgument;-><init>(ILandroid/os/Parcel;)V
+HSPLandroid/security/keymaster/KeymasterDefs;->getTagType(I)I
 HSPLandroid/security/keymaster/KeymasterIntArgument;-><init>(II)V
+HSPLandroid/security/keymaster/KeymasterIntArgument;-><init>(ILandroid/os/Parcel;)V
 HSPLandroid/security/keymaster/KeymasterIntArgument;->writeValue(Landroid/os/Parcel;)V
-HSPLandroid/security/keymaster/OperationResult$1;-><init>()V
 HSPLandroid/security/keymaster/OperationResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/security/keymaster/OperationResult;
 HSPLandroid/security/keymaster/OperationResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/security/keymaster/OperationResult;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$AdditionalAuthenticationDataStream;->finish([B[B)Landroid/security/keymaster/OperationResult;
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$BufferAllOutputUntilDoFinalStreamer;->doFinal([BII[B[B)[B
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM$NoPadding;-><init>()V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM$NoPadding;->finalize()V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->addAlgorithmSpecificParametersToBegin(Landroid/security/keymaster/KeymasterArguments;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->createAdditionalAuthenticationDataStreamer(Landroid/security/KeyStore;Landroid/os/IBinder;)Landroid/security/keystore/KeyStoreCryptoOperationStreamer;
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->createMainDataStreamer(Landroid/security/KeyStore;Landroid/os/IBinder;)Landroid/security/keystore/KeyStoreCryptoOperationStreamer;
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->getAdditionalEntropyAmountForBegin()I
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->getAdditionalEntropyAmountForFinish()I
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->initAlgorithmSpecificParameters()V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->initAlgorithmSpecificParameters(Ljava/security/spec/AlgorithmParameterSpec;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->resetAll()V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$GCM;->resetWhilePreservingInitState()V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->addAlgorithmSpecificParametersToBegin(Landroid/security/keymaster/KeymasterArguments;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->engineGetIV()[B
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->getIv()[B
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->initKey(ILjava/security/Key;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->loadAlgorithmSpecificParametersFromBeginResult(Landroid/security/keymaster/KeymasterArguments;)V
-HSPLandroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi;->setIv([B)V
 HSPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;-><init>()V
 HSPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putAsymmetricCipherImpl(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putMacImpl(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putSignatureImpl(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/security/keystore/AndroidKeyStoreBCWorkaroundProvider;->putSymmetricCipherImpl(Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;-><init>()V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->engineDoFinal([BII)[B
-HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->engineInit(ILjava/security/Key;Ljava/security/SecureRandom;)V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->engineInit(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->ensureKeystoreOperationInitialized()V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->finalize()V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->flushAAD()V
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->init(ILjava/security/Key;Ljava/security/SecureRandom;)V
+HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->isEncrypting()Z
 HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->resetAll()V
+HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->resetWhilePreservingInitState()V
+HSPLandroid/security/keystore/AndroidKeyStoreCipherSpiBase;->setKey(Landroid/security/keystore/AndroidKeyStoreKey;)V
+HSPLandroid/security/keystore/AndroidKeyStoreKey;-><init>(Ljava/lang/String;ILjava/lang/String;)V
 HSPLandroid/security/keystore/AndroidKeyStoreKey;->getAlgorithm()Ljava/lang/String;
 HSPLandroid/security/keystore/AndroidKeyStoreKey;->getAlias()Ljava/lang/String;
 HSPLandroid/security/keystore/AndroidKeyStoreKey;->getFormat()Ljava/lang/String;
 HSPLandroid/security/keystore/AndroidKeyStoreKey;->getUid()I
-HSPLandroid/security/keystore/AndroidKeyStoreKeyFactorySpi;-><init>()V
-HSPLandroid/security/keystore/AndroidKeyStoreKeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
 HSPLandroid/security/keystore/AndroidKeyStoreProvider;-><init>()V
 HSPLandroid/security/keystore/AndroidKeyStoreProvider;->getKeyCharacteristics(Landroid/security/KeyStore;Ljava/lang/String;I)Landroid/security/keymaster/KeyCharacteristics;
 HSPLandroid/security/keystore/AndroidKeyStoreProvider;->install()V
 HSPLandroid/security/keystore/AndroidKeyStoreProvider;->loadAndroidKeyStoreKeyFromKeystore(Landroid/security/KeyStore;Ljava/lang/String;I)Landroid/security/keystore/AndroidKeyStoreKey;
 HSPLandroid/security/keystore/AndroidKeyStoreProvider;->loadAndroidKeyStoreSecretKeyFromKeystore(Ljava/lang/String;ILandroid/security/keymaster/KeyCharacteristics;)Landroid/security/keystore/AndroidKeyStoreSecretKey;
+HSPLandroid/security/keystore/AndroidKeyStoreProvider;->putKeyFactoryImpl(Ljava/lang/String;)V
+HSPLandroid/security/keystore/AndroidKeyStoreProvider;->putSecretKeyFactoryImpl(Ljava/lang/String;)V
+HSPLandroid/security/keystore/AndroidKeyStoreSecretKey;-><init>(Ljava/lang/String;ILjava/lang/String;)V
 HSPLandroid/security/keystore/AndroidKeyStoreSpi;-><init>()V
 HSPLandroid/security/keystore/AndroidKeyStoreSpi;->engineContainsAlias(Ljava/lang/String;)Z
 HSPLandroid/security/keystore/AndroidKeyStoreSpi;->engineGetKey(Ljava/lang/String;[C)Ljava/security/Key;
-HSPLandroid/security/keystore/AndroidKeyStoreSpi;->engineIsCertificateEntry(Ljava/lang/String;)Z
-HSPLandroid/security/keystore/AndroidKeyStoreSpi;->engineIsKeyEntry(Ljava/lang/String;)Z
 HSPLandroid/security/keystore/AndroidKeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V
-HSPLandroid/security/keystore/AndroidKeyStoreSpi;->isKeyEntry(Ljava/lang/String;)Z
+HSPLandroid/security/keystore/ArrayUtils;->concat([BII[BII)[B
+HSPLandroid/security/keystore/ArrayUtils;->concat([B[B)[B
+HSPLandroid/security/keystore/ArrayUtils;->copy([BI[BII)I
+HSPLandroid/security/keystore/ArrayUtils;->subarray([BII)[B
+HSPLandroid/security/keystore/IKeystoreKeyCharacteristicsCallback$Stub;-><init>()V
 HSPLandroid/security/keystore/IKeystoreKeyCharacteristicsCallback$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/security/keystore/IKeystoreKeyCharacteristicsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/security/keystore/IKeystoreOperationResultCallback$Stub;-><init>()V
 HSPLandroid/security/keystore/IKeystoreOperationResultCallback$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/security/keystore/IKeystoreOperationResultCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/security/keystore/IKeystoreResponseCallback$Stub;-><init>()V
 HSPLandroid/security/keystore/IKeystoreResponseCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/security/keystore/IKeystoreResponseCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->abort(Landroid/security/keystore/IKeystoreResponseCallback;Landroid/os/IBinder;)I
-HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->addAuthToken([B)I
+HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->begin(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Ljava/lang/String;IZLandroid/security/keymaster/KeymasterArguments;[BI)I
-HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->clear_uid(J)I
 HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->exist(Ljava/lang/String;I)I
-HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->finish(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B)I
+HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->finish(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B[B[B)I
 HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->getKeyCharacteristics(Landroid/security/keystore/IKeystoreKeyCharacteristicsCallback;Ljava/lang/String;Landroid/security/keymaster/KeymasterBlob;Landroid/security/keymaster/KeymasterBlob;I)I
-HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->getState(I)I
-HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->grant(Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->onKeyguardVisibilityChanged(ZI)I
-HPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->unlock(ILjava/lang/String;)I
 HSPLandroid/security/keystore/IKeystoreService$Stub$Proxy;->update(Landroid/security/keystore/IKeystoreOperationResultCallback;Landroid/os/IBinder;Landroid/security/keymaster/KeymasterArguments;[B)I
 HSPLandroid/security/keystore/IKeystoreService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/security/keystore/IKeystoreService;
 HSPLandroid/security/keystore/KeyProperties$KeyAlgorithm;->fromKeymasterSecretKeyAlgorithm(II)Ljava/lang/String;
-HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->finish([B[B)Landroid/security/keymaster/OperationResult;
+HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;-><init>(Landroid/security/KeyStore;Landroid/os/IBinder;)V
+HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->finish([B[B[B)Landroid/security/keymaster/OperationResult;
 HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;->update([B)Landroid/security/keymaster/OperationResult;
+HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;-><init>(Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;I)V
+HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;-><init>(Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;II)V
 HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->doFinal([BII[B[B)[B
-HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->flush()[B
 HSPLandroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;->update([BII)[B
 HSPLandroid/security/keystore/KeyStoreCryptoOperationUtils;->getExceptionForCipherInit(Landroid/security/KeyStore;Landroid/security/keystore/AndroidKeyStoreKey;I)Ljava/security/GeneralSecurityException;
-HSPLandroid/security/keystore/KeystoreResponse$1;-><init>()V
+HSPLandroid/security/keystore/KeyStoreCryptoOperationUtils;->getRandomBytesToMixIntoKeystoreRng(Ljava/security/SecureRandom;I)[B
 HSPLandroid/security/keystore/KeystoreResponse$1;->createFromParcel(Landroid/os/Parcel;)Landroid/security/keystore/KeystoreResponse;
 HSPLandroid/security/keystore/KeystoreResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/security/keystore/ParcelableKeyGenParameterSpec$1;-><init>()V
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$1;-><init>()V
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$Builder;-><init>()V
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$Builder;->build()Landroid/security/keystore/recovery/KeyChainProtectionParams;
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$Builder;->setKeyDerivationParams(Landroid/security/keystore/recovery/KeyDerivationParams;)Landroid/security/keystore/recovery/KeyChainProtectionParams$Builder;
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$Builder;->setLockScreenUiFormat(I)Landroid/security/keystore/recovery/KeyChainProtectionParams$Builder;
-PLandroid/security/keystore/recovery/KeyChainProtectionParams$Builder;->setUserSecretType(I)Landroid/security/keystore/recovery/KeyChainProtectionParams$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$1;-><init>()V
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;-><init>()V
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->build()Landroid/security/keystore/recovery/KeyChainSnapshot;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setCounterId(J)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setEncryptedRecoveryKeyBlob([B)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setKeyChainProtectionParams(Ljava/util/List;)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setMaxAttempts(I)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setServerParams([B)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setSnapshotVersion(I)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setTrustedHardwareCertPath(Ljava/security/cert/CertPath;)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyChainSnapshot$Builder;->setWrappedApplicationKeys(Ljava/util/List;)Landroid/security/keystore/recovery/KeyChainSnapshot$Builder;
-PLandroid/security/keystore/recovery/KeyDerivationParams$1;-><init>()V
-PLandroid/security/keystore/recovery/KeyDerivationParams;->createScryptParams([BI)Landroid/security/keystore/recovery/KeyDerivationParams;
-PLandroid/security/keystore/recovery/RecoveryCertPath$1;-><init>()V
-PLandroid/security/keystore/recovery/RecoveryCertPath;->createRecoveryCertPath(Ljava/security/cert/CertPath;)Landroid/security/keystore/recovery/RecoveryCertPath;
-PLandroid/security/keystore/recovery/TrustedRootCertificates;->constructRootCertificateMap()Landroid/util/ArrayMap;
-PLandroid/security/keystore/recovery/TrustedRootCertificates;->getRootCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
-PLandroid/security/keystore/recovery/TrustedRootCertificates;->getRootCertificates()Ljava/util/Map;
-PLandroid/security/keystore/recovery/TrustedRootCertificates;->parseBase64Certificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
-PLandroid/security/keystore/recovery/WrappedApplicationKey$1;-><init>()V
-PLandroid/security/keystore/recovery/WrappedApplicationKey$Builder;-><init>()V
-PLandroid/security/keystore/recovery/WrappedApplicationKey$Builder;->build()Landroid/security/keystore/recovery/WrappedApplicationKey;
-PLandroid/security/keystore/recovery/WrappedApplicationKey$Builder;->setAlias(Ljava/lang/String;)Landroid/security/keystore/recovery/WrappedApplicationKey$Builder;
-PLandroid/security/keystore/recovery/WrappedApplicationKey$Builder;->setEncryptedKeyMaterial([B)Landroid/security/keystore/recovery/WrappedApplicationKey$Builder;
-PLandroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeBase64Cert(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
-PLandroid/security/keystore/recovery/X509CertificateParsingUtils;->decodeCert(Ljava/io/InputStream;)Ljava/security/cert/X509Certificate;
+HSPLandroid/security/keystore/KeystoreResponse;-><init>(ILjava/lang/String;)V
+HSPLandroid/security/keystore/KeystoreResponse;->getErrorCode()I
+HSPLandroid/security/net/config/ApplicationConfig;-><init>(Landroid/security/net/config/ConfigSource;)V
 HSPLandroid/security/net/config/ApplicationConfig;->ensureInitialized()V
 HSPLandroid/security/net/config/ApplicationConfig;->getConfigForHostname(Ljava/lang/String;)Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/ApplicationConfig;->getDefaultInstance()Landroid/security/net/config/ApplicationConfig;
+HSPLandroid/security/net/config/ApplicationConfig;->getTrustManager()Ljavax/net/ssl/X509TrustManager;
 HSPLandroid/security/net/config/ApplicationConfig;->setDefaultInstance(Landroid/security/net/config/ApplicationConfig;)V
+HSPLandroid/security/net/config/CertificatesEntryRef;-><init>(Landroid/security/net/config/CertificateSource;Z)V
+HSPLandroid/security/net/config/CertificatesEntryRef;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
+HSPLandroid/security/net/config/CertificatesEntryRef;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor;
+HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;-><init>(Landroid/security/net/config/ApplicationConfig;)V
 HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCertificateTransparencyVerificationRequired(Ljava/lang/String;)Z
-HSPLandroid/security/net/config/ConfigNetworkSecurityPolicy;->isCleartextTrafficPermitted(Ljava/lang/String;)Z
+HSPLandroid/security/net/config/DirectoryCertificateSource$1;-><init>(Landroid/security/net/config/DirectoryCertificateSource;Ljava/security/cert/X509Certificate;)V
+HSPLandroid/security/net/config/DirectoryCertificateSource$3;-><init>(Landroid/security/net/config/DirectoryCertificateSource;Ljava/security/cert/X509Certificate;)V
 HSPLandroid/security/net/config/DirectoryCertificateSource$3;->match(Ljava/security/cert/X509Certificate;)Z
 HSPLandroid/security/net/config/DirectoryCertificateSource;-><init>(Ljava/io/File;)V
+HSPLandroid/security/net/config/DirectoryCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
+HSPLandroid/security/net/config/DirectoryCertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
 HSPLandroid/security/net/config/DirectoryCertificateSource;->findCert(Ljavax/security/auth/x500/X500Principal;Landroid/security/net/config/DirectoryCertificateSource$CertSelector;)Ljava/security/cert/X509Certificate;
 HSPLandroid/security/net/config/DirectoryCertificateSource;->findCerts(Ljavax/security/auth/x500/X500Principal;Landroid/security/net/config/DirectoryCertificateSource$CertSelector;)Ljava/util/Set;
+HSPLandroid/security/net/config/DirectoryCertificateSource;->getHash(Ljavax/security/auth/x500/X500Principal;)Ljava/lang/String;
 HSPLandroid/security/net/config/DirectoryCertificateSource;->hashName(Ljavax/security/auth/x500/X500Principal;)I
 HSPLandroid/security/net/config/DirectoryCertificateSource;->intToHexString(II)Ljava/lang/String;
 HSPLandroid/security/net/config/DirectoryCertificateSource;->readCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
+HSPLandroid/security/net/config/Domain;->hashCode()I
+HSPLandroid/security/net/config/KeyStoreCertificateSource;-><init>(Ljava/security/KeyStore;)V
+HSPLandroid/security/net/config/KeyStoreConfigSource;-><init>(Ljava/security/KeyStore;)V
 HSPLandroid/security/net/config/KeyStoreConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/KeyStoreConfigSource;->getPerDomainConfigs()Ljava/util/Set;
+HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;-><init>(ZLandroid/content/pm/ApplicationInfo;)V
 HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/ManifestConfigSource$DefaultConfigSource;->getPerDomainConfigs()Ljava/util/Set;
+HSPLandroid/security/net/config/ManifestConfigSource;-><init>(Landroid/content/Context;)V
 HSPLandroid/security/net/config/ManifestConfigSource;->getConfigSource()Landroid/security/net/config/ConfigSource;
 HSPLandroid/security/net/config/ManifestConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/ManifestConfigSource;->getPerDomainConfigs()Ljava/util/Set;
+HSPLandroid/security/net/config/NetworkSecurityConfig$1;-><init>(Landroid/security/net/config/NetworkSecurityConfig;)V
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;-><init>()V
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRef(Landroid/security/net/config/CertificatesEntryRef;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->addCertificatesEntryRefs(Ljava/util/Collection;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->build()Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCertificatesEntryRefs()Ljava/util/List;
 HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveCleartextTrafficPermitted()Z
 HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectiveHstsEnforced()Z
 HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getEffectivePinSet()Landroid/security/net/config/PinSet;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->getParent()Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setCleartextTrafficPermitted(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setHstsEnforced(Z)Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig$Builder;->setParent(Landroid/security/net/config/NetworkSecurityConfig$Builder;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
 HSPLandroid/security/net/config/NetworkSecurityConfig;-><init>(ZZLandroid/security/net/config/PinSet;Ljava/util/List;)V
 HSPLandroid/security/net/config/NetworkSecurityConfig;-><init>(ZZLandroid/security/net/config/PinSet;Ljava/util/List;Landroid/security/net/config/NetworkSecurityConfig$1;)V
+HSPLandroid/security/net/config/NetworkSecurityConfig;->findAllCertificatesByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
+HSPLandroid/security/net/config/NetworkSecurityConfig;->findTrustAnchorBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Landroid/security/net/config/TrustAnchor;
 HSPLandroid/security/net/config/NetworkSecurityConfig;->getDefaultBuilder(Landroid/content/pm/ApplicationInfo;)Landroid/security/net/config/NetworkSecurityConfig$Builder;
+HSPLandroid/security/net/config/NetworkSecurityConfig;->getPins()Landroid/security/net/config/PinSet;
 HSPLandroid/security/net/config/NetworkSecurityConfig;->getTrustManager()Landroid/security/net/config/NetworkSecurityTrustManager;
+HSPLandroid/security/net/config/NetworkSecurityConfig;->isCleartextTrafficPermitted()Z
 HSPLandroid/security/net/config/NetworkSecurityConfigProvider;-><init>()V
 HSPLandroid/security/net/config/NetworkSecurityConfigProvider;->install(Landroid/content/Context;)V
 HSPLandroid/security/net/config/NetworkSecurityTrustManager;-><init>(Landroid/security/net/config/NetworkSecurityConfig;)V
 HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkPins(Ljava/util/List;)V
 HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
 HSPLandroid/security/net/config/NetworkSecurityTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
-HSPLandroid/security/net/config/PinSet;-><init>(Ljava/util/Set;J)V
+HSPLandroid/security/net/config/RootTrustManager;-><init>(Landroid/security/net/config/ApplicationConfig;)V
 HSPLandroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
 HSPLandroid/security/net/config/RootTrustManager;->checkServerTrusted([Ljava/security/cert/X509Certificate;Ljava/lang/String;Ljava/net/Socket;)V
 HSPLandroid/security/net/config/RootTrustManagerFactorySpi;-><init>()V
 HSPLandroid/security/net/config/RootTrustManagerFactorySpi;->engineGetTrustManagers()[Ljavax/net/ssl/TrustManager;
 HSPLandroid/security/net/config/RootTrustManagerFactorySpi;->engineInit(Ljava/security/KeyStore;)V
+HSPLandroid/security/net/config/SystemCertificateSource$NoPreloadHolder;-><clinit>()V
+HSPLandroid/security/net/config/SystemCertificateSource$NoPreloadHolder;->access$100()Landroid/security/net/config/SystemCertificateSource;
 HSPLandroid/security/net/config/SystemCertificateSource;-><init>()V
 HSPLandroid/security/net/config/SystemCertificateSource;-><init>(Landroid/security/net/config/SystemCertificateSource$1;)V
 HSPLandroid/security/net/config/SystemCertificateSource;->findAllByIssuerAndSignature(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
 HSPLandroid/security/net/config/SystemCertificateSource;->findBySubjectAndPublicKey(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
+HSPLandroid/security/net/config/SystemCertificateSource;->getInstance()Landroid/security/net/config/SystemCertificateSource;
 HSPLandroid/security/net/config/SystemCertificateSource;->isCertMarkedAsRemoved(Ljava/lang/String;)Z
 HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;-><init>(Landroid/security/net/config/NetworkSecurityConfig;)V
 HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;->findAllIssuers(Ljava/security/cert/X509Certificate;)Ljava/util/Set;
 HSPLandroid/security/net/config/TrustedCertificateStoreAdapter;->getTrustAnchor(Ljava/security/cert/X509Certificate;)Ljava/security/cert/X509Certificate;
-HSPLandroid/security/net/config/XmlConfigSource;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
 HSPLandroid/security/net/config/XmlConfigSource;-><init>(Landroid/content/Context;ILandroid/content/pm/ApplicationInfo;)V
+HSPLandroid/security/net/config/XmlConfigSource;->addDebugAnchorsIfNeeded(Landroid/security/net/config/NetworkSecurityConfig$Builder;Landroid/security/net/config/NetworkSecurityConfig$Builder;)V
 HSPLandroid/security/net/config/XmlConfigSource;->ensureInitialized()V
 HSPLandroid/security/net/config/XmlConfigSource;->getDefaultConfig()Landroid/security/net/config/NetworkSecurityConfig;
 HSPLandroid/security/net/config/XmlConfigSource;->getPerDomainConfigs()Ljava/util/Set;
@@ -13086,1682 +10219,477 @@
 HSPLandroid/security/net/config/XmlConfigSource;->parseDomain(Landroid/content/res/XmlResourceParser;Ljava/util/Set;)Landroid/security/net/config/Domain;
 HSPLandroid/security/net/config/XmlConfigSource;->parseNetworkSecurityConfig(Landroid/content/res/XmlResourceParser;)V
 HSPLandroid/security/net/config/XmlConfigSource;->parseTrustAnchors(Landroid/content/res/XmlResourceParser;Z)Ljava/util/Collection;
-PLandroid/service/appprediction/IPredictionService$Stub$Proxy;->notifyAppTargetEvent(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
-PLandroid/service/appprediction/IPredictionService$Stub$Proxy;->onCreatePredictionSession(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
-PLandroid/service/appprediction/IPredictionService$Stub$Proxy;->registerPredictionUpdates(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
-PLandroid/service/appprediction/IPredictionService$Stub$Proxy;->requestPredictionUpdate(Landroid/app/prediction/AppPredictionSessionId;)V
-PLandroid/service/appprediction/IPredictionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/appprediction/IPredictionService;
-HSPLandroid/service/autofill/AutofillServiceInfo;-><init>(Landroid/content/Context;Landroid/content/ComponentName;I)V
-HSPLandroid/service/autofill/AutofillServiceInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ServiceInfo;)V
-HSPLandroid/service/autofill/AutofillServiceInfo;->getServiceInfoOrThrow(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
-HSPLandroid/service/autofill/AutofillServiceInfo;->parseCompatibilityPackages(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/res/Resources;)Landroid/util/ArrayMap;
-PLandroid/service/autofill/FillContext$1;-><init>()V
-HPLandroid/service/autofill/FillContext;->findViewNodesByAutofillIds([Landroid/view/autofill/AutofillId;)[Landroid/app/assist/AssistStructure$ViewNode;
-PLandroid/service/autofill/FillContext;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/service/autofill/FillRequest$1;-><init>()V
-PLandroid/service/autofill/FillRequest;-><init>(ILjava/util/ArrayList;Landroid/os/Bundle;I)V
-PLandroid/service/autofill/IAutoFillService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/service/autofill/IAutoFillService$Stub$Proxy;->onConnectedStateChanged(Z)V
-PLandroid/service/autofill/IAutoFillService$Stub$Proxy;->onFillRequest(Landroid/service/autofill/FillRequest;Landroid/service/autofill/IFillCallback;)V
-PLandroid/service/autofill/IAutoFillService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/IAutoFillService;
-PLandroid/service/autofill/IFillCallback$Stub;-><init>()V
-PLandroid/service/autofill/IFillCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/service/autofill/IFillCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/service/autofill/UserData$1;-><init>()V
-PLandroid/service/autofill/UserData;->getInt(Ljava/lang/String;I)I
-PLandroid/service/autofill/augmented/IAugmentedAutofillService$Stub$Proxy;->onConnected()V
-HPLandroid/service/autofill/augmented/IAugmentedAutofillService$Stub$Proxy;->onDestroyAllFillWindowsRequest()V
-PLandroid/service/autofill/augmented/IAugmentedAutofillService$Stub$Proxy;->onFillRequest(ILandroid/os/IBinder;ILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLandroid/service/autofill/augmented/IFillCallback;)V
-PLandroid/service/autofill/augmented/IAugmentedAutofillService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/autofill/augmented/IAugmentedAutofillService;
-PLandroid/service/autofill/augmented/IFillCallback$Stub;-><init>()V
-PLandroid/service/autofill/augmented/IFillCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/service/autofill/augmented/IFillCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/carrier/CarrierIdentifier$1;-><init>()V
-HSPLandroid/service/carrier/CarrierIdentifier;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
-HSPLandroid/service/carrier/CarrierIdentifier;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/carrier/ICarrierService$Stub$Proxy;->getCarrierConfig(Landroid/service/carrier/CarrierIdentifier;Landroid/os/ResultReceiver;)V
-HSPLandroid/service/carrier/ICarrierService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/carrier/ICarrierService;
-HSPLandroid/service/contentcapture/ActivityEvent$1;-><init>()V
-HSPLandroid/service/contentcapture/ContentCaptureServiceInfo;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ZI)V
-HSPLandroid/service/contentcapture/ContentCaptureServiceInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ServiceInfo;)V
-HSPLandroid/service/contentcapture/ContentCaptureServiceInfo;->getServiceInfoOrThrow(Landroid/content/ComponentName;ZI)Landroid/content/pm/ServiceInfo;
-HPLandroid/service/contentcapture/IContentCaptureService$Stub$Proxy;->onActivityEvent(Landroid/service/contentcapture/ActivityEvent;)V
-PLandroid/service/contentcapture/IContentCaptureService$Stub$Proxy;->onActivitySnapshot(Ljava/lang/String;Landroid/service/contentcapture/SnapshotData;)V
-PLandroid/service/contentcapture/IContentCaptureService$Stub$Proxy;->onConnected(Landroid/os/IBinder;ZZ)V
-PLandroid/service/contentcapture/IContentCaptureService$Stub$Proxy;->onSessionFinished(Ljava/lang/String;)V
-PLandroid/service/contentcapture/IContentCaptureService$Stub$Proxy;->onSessionStarted(Landroid/view/contentcapture/ContentCaptureContext;Ljava/lang/String;ILcom/android/internal/os/IResultReceiver;I)V
-PLandroid/service/contentcapture/IContentCaptureService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/contentcapture/IContentCaptureService;
-HSPLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;-><init>()V
-HSPLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/service/contentcapture/IContentCaptureServiceCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/service/contentcapture/SnapshotData$1;-><init>()V
-HSPLandroid/service/dreams/IDreamManager$Stub$Proxy;->getDefaultDreamComponent()Landroid/content/ComponentName;
-HSPLandroid/service/dreams/IDreamManager$Stub;-><init>()V
-HSPLandroid/service/dreams/IDreamManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamManager;
-HSPLandroid/service/dreams/IDreamManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/service/dreams/IDreamService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/service/dreams/IDreamService$Stub$Proxy;->attach(Landroid/os/IBinder;ZLandroid/os/IRemoteCallback;)V
-HPLandroid/service/dreams/IDreamService$Stub$Proxy;->detach()V
-HPLandroid/service/dreams/IDreamService$Stub$Proxy;->wakeUp()V
-PLandroid/service/dreams/IDreamService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/dreams/IDreamService;
-HSPLandroid/service/euicc/EuiccProfileInfo$1;-><init>()V
-HSPLandroid/service/euicc/GetEuiccProfileInfoListResult$1;-><init>()V
-HSPLandroid/service/euicc/GetEuiccProfileInfoListResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/euicc/GetEuiccProfileInfoListResult;
-HSPLandroid/service/euicc/GetEuiccProfileInfoListResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/euicc/GetEuiccProfileInfoListResult;->getProfiles()Ljava/util/List;
-HSPLandroid/service/euicc/IEuiccService$Stub$Proxy;->getEuiccProfileInfoList(ILandroid/service/euicc/IGetEuiccProfileInfoListCallback;)V
-HSPLandroid/service/euicc/IEuiccService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/euicc/IEuiccService;
-HSPLandroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;-><init>()V
-HSPLandroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/service/gatekeeper/GateKeeperResponse$1;-><init>()V
-PLandroid/service/gatekeeper/GateKeeperResponse$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/gatekeeper/GateKeeperResponse;
-PLandroid/service/gatekeeper/GateKeeperResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->verifyChallenge(IJ[B[B)Landroid/service/gatekeeper/GateKeeperResponse;
-HSPLandroid/service/gatekeeper/IGateKeeperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/gatekeeper/IGateKeeperService;
-HSPLandroid/service/media/IMediaBrowserService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/media/MediaBrowserService$ServiceBinder$1;->run()V
-HSPLandroid/service/media/MediaBrowserService$ServiceBinder;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/MediaBrowserService;-><init>()V
-HSPLandroid/service/media/MediaBrowserService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/service/media/MediaBrowserService;->onCreate()V
-HSPLandroid/service/notification/Adjustment$1;-><init>()V
-HSPLandroid/service/notification/Adjustment$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/Adjustment;
-HSPLandroid/service/notification/Adjustment$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/Adjustment;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/Adjustment;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/CharSequence;I)V
-HSPLandroid/service/notification/Adjustment;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/Condition$1;-><init>()V
-HSPLandroid/service/notification/Condition$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/Condition;
-HSPLandroid/service/notification/Condition$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/Condition$1;->newArray(I)[Landroid/service/notification/Condition;
-HSPLandroid/service/notification/Condition$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/service/notification/Condition;-><init>(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;III)V
-HSPLandroid/service/notification/Condition;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/Condition;->equals(Ljava/lang/Object;)Z
-HSPLandroid/service/notification/Condition;->hashCode()I
-HSPLandroid/service/notification/Condition;->stateToString(I)Ljava/lang/String;
-HSPLandroid/service/notification/Condition;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/Condition;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/ConditionProviderService$H;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/service/notification/ConditionProviderService$Provider;->onConnected()V
-HSPLandroid/service/notification/ConditionProviderService$Provider;->onSubscribe(Landroid/net/Uri;)V
-HSPLandroid/service/notification/ConditionProviderService;-><init>()V
-HSPLandroid/service/notification/ConditionProviderService;->isBound()Z
-HSPLandroid/service/notification/ConditionProviderService;->notifyCondition(Landroid/service/notification/Condition;)V
-HSPLandroid/service/notification/ConditionProviderService;->notifyConditions([Landroid/service/notification/Condition;)V
-HSPLandroid/service/notification/ConditionProviderService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/service/notification/IConditionProvider$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/notification/IConditionProvider$Stub$Proxy;->onConnected()V
-HSPLandroid/service/notification/IConditionProvider$Stub$Proxy;->onSubscribe(Landroid/net/Uri;)V
-HSPLandroid/service/notification/IConditionProvider$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/notification/IConditionProvider$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/IConditionProvider;
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/service/notification/INotificationListener$Stub$Proxy;->onActionClicked(Ljava/lang/String;Landroid/app/Notification$Action;I)V
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->onInterruptionFilterChanged(I)V
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationEnqueuedWithChannel(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/app/NotificationChannel;)V
-HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationPosted(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;)V
-HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V
-HSPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
-HPLandroid/service/notification/INotificationListener$Stub$Proxy;->onNotificationsSeen(Ljava/util/List;)V
+HSPLandroid/service/notification/INotificationListener$Stub;-><init>()V
 HSPLandroid/service/notification/INotificationListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/notification/INotificationListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/notification/INotificationListener;
-HSPLandroid/service/notification/INotificationListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;->get()Landroid/service/notification/StatusBarNotification;
-HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;-><init>()V
-HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/service/notification/IStatusBarNotificationHolder$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/notification/NotificationAssistantService$MyHandler;->handleMessage(Landroid/os/Message;)V
-HPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onActionClicked(Ljava/lang/String;Landroid/app/Notification$Action;I)V
-HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationEnqueuedWithChannel(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/app/NotificationChannel;)V
-HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationExpansionChanged(Ljava/lang/String;ZZ)V
-HSPLandroid/service/notification/NotificationAssistantService$NotificationAssistantServiceWrapper;->onNotificationsSeen(Ljava/util/List;)V
-HSPLandroid/service/notification/NotificationAssistantService;-><init>()V
-HSPLandroid/service/notification/NotificationAssistantService;->adjustNotification(Landroid/service/notification/Adjustment;)V
-HSPLandroid/service/notification/NotificationAssistantService;->attachBaseContext(Landroid/content/Context;)V
-HSPLandroid/service/notification/NotificationAssistantService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
+HSPLandroid/service/notification/NotificationListenerService$MyHandler;-><init>(Landroid/service/notification/NotificationListenerService;Landroid/os/Looper;)V
 HSPLandroid/service/notification/NotificationListenerService$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onInterruptionFilterChanged(I)V
+HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;-><init>(Landroid/service/notification/NotificationListenerService;)V
 HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onListenerConnected(Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationPosted(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRankingUpdate(Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;->onNotificationRemoved(Landroid/service/notification/IStatusBarNotificationHolder;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
 HSPLandroid/service/notification/NotificationListenerService$Ranking;-><init>()V
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getChannel()Landroid/app/NotificationChannel;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getImportance()I
-HPLandroid/service/notification/NotificationListenerService$Ranking;->importanceToString(I)Ljava/lang/String;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Ljava/lang/String;IZIIILjava/lang/CharSequence;Ljava/lang/String;Landroid/app/NotificationChannel;Ljava/util/ArrayList;Ljava/util/ArrayList;ZIZJZLjava/util/ArrayList;Ljava/util/ArrayList;Z)V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;-><init>()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildBooleanMapFromBundle(Landroid/os/Bundle;)Landroid/util/ArrayMap;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildChannelsLocked()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildImportanceLocked()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildIntMapFromBundle(Landroid/os/Bundle;)Landroid/util/ArrayMap;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildLongMapFromBundle(Landroid/os/Bundle;)Landroid/util/ArrayMap;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildOverridePeopleLocked()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildRanksLocked()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildSmartActions()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildSmartReplies()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildSnoozeCriteriaLocked()V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->buildStringMapFromBundle(Landroid/os/Bundle;)Landroid/util/ArrayMap;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->canBubble(Ljava/lang/String;)Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getChannel(Ljava/lang/String;)Landroid/app/NotificationChannel;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getHidden(Ljava/lang/String;)Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getImportance(Ljava/lang/String;)I
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getImportanceExplanation(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getLastAudiblyAlerted(Ljava/lang/String;)J
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getNoisy(Ljava/lang/String;)Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOverrideGroupKey(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getOverridePeople(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRank(Ljava/lang/String;)I
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getRanking(Ljava/lang/String;Landroid/service/notification/NotificationListenerService$Ranking;)Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getShowBadge(Ljava/lang/String;)Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSmartActions(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSmartReplies(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSnoozeCriteria(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getSuppressedVisualEffects(Ljava/lang/String;)I
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getUserSentiment(Ljava/lang/String;)I
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->getVisibilityOverride(Ljava/lang/String;)I
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;->isIntercepted(Ljava/lang/String;)Z
+HSPLandroid/service/notification/NotificationListenerService$Ranking;->getKey()Ljava/lang/String;
 HSPLandroid/service/notification/NotificationListenerService;-><init>()V
-HSPLandroid/service/notification/NotificationListenerService;->cleanUpNotificationList(Landroid/content/pm/ParceledListSlice;)[Landroid/service/notification/StatusBarNotification;
+HSPLandroid/service/notification/NotificationListenerService;->access$100(Landroid/service/notification/NotificationListenerService;Landroid/app/Notification;)V
+HSPLandroid/service/notification/NotificationListenerService;->access$200(Landroid/service/notification/NotificationListenerService;Landroid/app/Notification;)V
+HSPLandroid/service/notification/NotificationListenerService;->access$300(Landroid/service/notification/NotificationListenerService;)Ljava/lang/Object;
+HSPLandroid/service/notification/NotificationListenerService;->access$400(Landroid/service/notification/NotificationListenerService;)Landroid/service/notification/NotificationListenerService$RankingMap;
+HSPLandroid/service/notification/NotificationListenerService;->access$500(Landroid/service/notification/NotificationListenerService;)Landroid/os/Handler;
+HSPLandroid/service/notification/NotificationListenerService;->access$600(Landroid/service/notification/NotificationListenerService;)Z
+HSPLandroid/service/notification/NotificationListenerService;->access$602(Landroid/service/notification/NotificationListenerService;Z)Z
+HSPLandroid/service/notification/NotificationListenerService;->applyUpdateLocked(Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLandroid/service/notification/NotificationListenerService;->createLegacyIconExtras(Landroid/app/Notification;)V
-HSPLandroid/service/notification/NotificationListenerService;->getActiveNotifications()[Landroid/service/notification/StatusBarNotification;
-HSPLandroid/service/notification/NotificationListenerService;->getActiveNotifications([Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification;
 HSPLandroid/service/notification/NotificationListenerService;->getContext()Landroid/content/Context;
-HSPLandroid/service/notification/NotificationListenerService;->isBound()Z
+HSPLandroid/service/notification/NotificationListenerService;->getNotificationInterface()Landroid/app/INotificationManager;
 HSPLandroid/service/notification/NotificationListenerService;->maybePopulatePeople(Landroid/app/Notification;)V
 HSPLandroid/service/notification/NotificationListenerService;->maybePopulateRemoteViews(Landroid/app/Notification;)V
-HSPLandroid/service/notification/NotificationListenerService;->onDestroy()V
-HSPLandroid/service/notification/NotificationListenerService;->onInterruptionFilterChanged(I)V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;)V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationRankingUpdate(Landroid/service/notification/NotificationListenerService$RankingMap;)V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)V
 HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;Landroid/service/notification/NotificationStats;I)V
-HSPLandroid/service/notification/NotificationRankingUpdate$1;-><init>()V
-HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationRankingUpdate;
-HSPLandroid/service/notification/NotificationRankingUpdate$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/NotificationRankingUpdate;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/NotificationRankingUpdate;-><init>([Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/os/Bundle;[ILandroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;Landroid/os/Bundle;[Z)V
-HSPLandroid/service/notification/NotificationRankingUpdate;->getCanBubble()[Z
-HSPLandroid/service/notification/NotificationRankingUpdate;->getChannels()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getHidden()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getImportance()[I
-HSPLandroid/service/notification/NotificationRankingUpdate;->getImportanceExplanation()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getInterceptedKeys()[Ljava/lang/String;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getLastAudiblyAlerted()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getNoisy()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getOrderedKeys()[Ljava/lang/String;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getOverrideGroupKeys()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getOverridePeople()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getShowBadge()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getSmartActions()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getSmartReplies()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getSnoozeCriteria()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getSuppressedVisualEffects()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getUserSentiment()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->getVisibilityOverrides()Landroid/os/Bundle;
-HSPLandroid/service/notification/NotificationRankingUpdate;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/NotificationStats$1;-><init>()V
-HSPLandroid/service/notification/NotificationStats$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationStats;
-HSPLandroid/service/notification/NotificationStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/NotificationStats;-><init>(Landroid/os/Parcel;)V
-HPLandroid/service/notification/NotificationStats;->hasInteracted()Z
-HSPLandroid/service/notification/NotificationStats;->hasSeen()Z
-HSPLandroid/service/notification/NotificationStats;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/NotifyingApp$1;-><init>()V
-HSPLandroid/service/notification/ScheduleCalendar;->getNextChangeTime(J)J
-HSPLandroid/service/notification/ScheduleCalendar;->getTime(JII)J
-HSPLandroid/service/notification/ScheduleCalendar;->isInSchedule(IJJJ)Z
-HSPLandroid/service/notification/ScheduleCalendar;->isInSchedule(J)Z
-HSPLandroid/service/notification/ScheduleCalendar;->maybeSetNextAlarm(JJ)V
-HSPLandroid/service/notification/ScheduleCalendar;->shouldExitForAlarm(J)Z
-HSPLandroid/service/notification/ScheduleCalendar;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/ScheduleCalendar;->updateDays()V
-HSPLandroid/service/notification/StatusBarNotification$1;-><init>()V
+HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap;
 HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/StatusBarNotification;
 HSPLandroid/service/notification/StatusBarNotification$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/service/notification/StatusBarNotification;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/StatusBarNotification;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IILandroid/app/Notification;Landroid/os/UserHandle;Ljava/lang/String;J)V
-HSPLandroid/service/notification/StatusBarNotification;->clone()Landroid/service/notification/StatusBarNotification;
-HSPLandroid/service/notification/StatusBarNotification;->cloneLight()Landroid/service/notification/StatusBarNotification;
-HSPLandroid/service/notification/StatusBarNotification;->getGroup()Ljava/lang/String;
 HSPLandroid/service/notification/StatusBarNotification;->getGroupKey()Ljava/lang/String;
 HSPLandroid/service/notification/StatusBarNotification;->getId()I
-HSPLandroid/service/notification/StatusBarNotification;->getInitialPid()I
 HSPLandroid/service/notification/StatusBarNotification;->getKey()Ljava/lang/String;
-HSPLandroid/service/notification/StatusBarNotification;->getLogMaker()Landroid/metrics/LogMaker;
 HSPLandroid/service/notification/StatusBarNotification;->getNotification()Landroid/app/Notification;
-HSPLandroid/service/notification/StatusBarNotification;->getOpPkg()Ljava/lang/String;
-HSPLandroid/service/notification/StatusBarNotification;->getOverrideGroupKey()Ljava/lang/String;
 HSPLandroid/service/notification/StatusBarNotification;->getPackageName()Ljava/lang/String;
 HSPLandroid/service/notification/StatusBarNotification;->getPostTime()J
 HSPLandroid/service/notification/StatusBarNotification;->getTag()Ljava/lang/String;
-HSPLandroid/service/notification/StatusBarNotification;->getUid()I
 HSPLandroid/service/notification/StatusBarNotification;->getUser()Landroid/os/UserHandle;
 HSPLandroid/service/notification/StatusBarNotification;->getUserId()I
 HSPLandroid/service/notification/StatusBarNotification;->groupKey()Ljava/lang/String;
 HSPLandroid/service/notification/StatusBarNotification;->isAppGroup()Z
 HSPLandroid/service/notification/StatusBarNotification;->isGroup()Z
 HSPLandroid/service/notification/StatusBarNotification;->key()Ljava/lang/String;
-HPLandroid/service/notification/StatusBarNotification;->setOverrideGroupKey(Ljava/lang/String;)V
-HSPLandroid/service/notification/StatusBarNotification;->shortenTag(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/service/notification/StatusBarNotification;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/ZenModeConfig$1;-><init>()V
-HSPLandroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff;
-HSPLandroid/service/notification/ZenModeConfig$Diff;->addLine(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Object;)Landroid/service/notification/ZenModeConfig$Diff;
-HSPLandroid/service/notification/ZenModeConfig$Diff;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig$ScheduleInfo;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;-><init>()V
-HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig$ZenRule;
-HSPLandroid/service/notification/ZenModeConfig$ZenRule$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->appendDiff(Landroid/service/notification/ZenModeConfig$Diff;Ljava/lang/String;Landroid/service/notification/ZenModeConfig$ZenRule;)V
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->equals(Ljava/lang/Object;)Z
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->hashCode()I
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->isAutomaticActive()Z
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->isTrueOrUnknown()Z
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig$ZenRule;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/ZenModeConfig;-><init>()V
-HSPLandroid/service/notification/ZenModeConfig;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/ZenModeConfig;->areAllPriorityOnlyNotificationZenSoundsMuted(Landroid/app/NotificationManager$Policy;)Z
-HSPLandroid/service/notification/ZenModeConfig;->areAllPriorityOnlyNotificationZenSoundsMuted(Landroid/service/notification/ZenModeConfig;)Z
-HSPLandroid/service/notification/ZenModeConfig;->areAllZenBehaviorSoundsMuted(Landroid/app/NotificationManager$Policy;)Z
-HSPLandroid/service/notification/ZenModeConfig;->copy()Landroid/service/notification/ZenModeConfig;
-HSPLandroid/service/notification/ZenModeConfig;->diff(Landroid/service/notification/ZenModeConfig;)Landroid/service/notification/ZenModeConfig$Diff;
-HSPLandroid/service/notification/ZenModeConfig;->diff(Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)Landroid/service/notification/ZenModeConfig$Diff;
-HSPLandroid/service/notification/ZenModeConfig;->equals(Ljava/lang/Object;)Z
-HSPLandroid/service/notification/ZenModeConfig;->generateMinuteBuckets()[I
-HSPLandroid/service/notification/ZenModeConfig;->hashCode()I
-HSPLandroid/service/notification/ZenModeConfig;->isValid()Z
-HSPLandroid/service/notification/ZenModeConfig;->isValidCountdownConditionId(Landroid/net/Uri;)Z
-HSPLandroid/service/notification/ZenModeConfig;->isValidEventConditionId(Landroid/net/Uri;)Z
-HSPLandroid/service/notification/ZenModeConfig;->isValidScheduleConditionId(Landroid/net/Uri;)Z
-HSPLandroid/service/notification/ZenModeConfig;->readConditionXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/Condition;
-HSPLandroid/service/notification/ZenModeConfig;->readRuleXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/ZenModeConfig$ZenRule;
-HSPLandroid/service/notification/ZenModeConfig;->readXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/ZenModeConfig;
-HSPLandroid/service/notification/ZenModeConfig;->readZenPolicyXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/service/notification/ZenPolicy;
-HSPLandroid/service/notification/ZenModeConfig;->rulesToString()Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig;->sameCondition(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
-HSPLandroid/service/notification/ZenModeConfig;->toNotificationPolicy()Landroid/app/NotificationManager$Policy;
-HSPLandroid/service/notification/ZenModeConfig;->toNotificationPolicy(Landroid/service/notification/ZenPolicy;)Landroid/app/NotificationManager$Policy;
-HSPLandroid/service/notification/ZenModeConfig;->toScheduleCalendar(Landroid/net/Uri;)Landroid/service/notification/ScheduleCalendar;
-HSPLandroid/service/notification/ZenModeConfig;->toString()Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig;->tryParseCountdownConditionId(Landroid/net/Uri;)J
-HSPLandroid/service/notification/ZenModeConfig;->tryParseDayList(Ljava/lang/String;Ljava/lang/String;)[I
-HSPLandroid/service/notification/ZenModeConfig;->tryParseEventConditionId(Landroid/net/Uri;)Landroid/service/notification/ZenModeConfig$EventInfo;
-HSPLandroid/service/notification/ZenModeConfig;->tryParseHourAndMinute(Ljava/lang/String;)[I
-HSPLandroid/service/notification/ZenModeConfig;->tryParseInt(Ljava/lang/String;I)I
-HSPLandroid/service/notification/ZenModeConfig;->tryParseLong(Ljava/lang/String;J)J
-HSPLandroid/service/notification/ZenModeConfig;->tryParseLong(Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;
-HSPLandroid/service/notification/ZenModeConfig;->tryParseScheduleConditionId(Landroid/net/Uri;)Landroid/service/notification/ZenModeConfig$ScheduleInfo;
-HSPLandroid/service/notification/ZenModeConfig;->writeConditionXml(Landroid/service/notification/Condition;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/service/notification/ZenModeConfig;->writeRuleXml(Landroid/service/notification/ZenModeConfig$ZenRule;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLandroid/service/notification/ZenModeConfig;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/service/notification/ZenModeConfig;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/Integer;)V
-HSPLandroid/service/notification/ZenPolicy$1;-><init>()V
-HSPLandroid/service/notification/ZenPolicy;-><init>()V
-HSPLandroid/service/notification/ZenPolicy;->apply(Landroid/service/notification/ZenPolicy;)V
-HSPLandroid/service/notification/ZenPolicy;->getZenPolicyPriorityCategoryState(I)I
-HSPLandroid/service/notification/ZenPolicy;->getZenPolicyVisualEffectState(I)I
-HSPLandroid/service/oemlock/IOemLockService$Stub;-><init>()V
-HPLandroid/service/oemlock/IOemLockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;-><init>()V
-HPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/service/textclassifier/ITextClassifierCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;-><init>()V
-HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/textclassifier/ITextClassifierCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
-HPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onSuggestConversationActions(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
-HPLandroid/service/textclassifier/ITextClassifierService$Stub$Proxy;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
-HSPLandroid/service/textclassifier/ITextClassifierService$Stub;-><init>()V
-HSPLandroid/service/textclassifier/ITextClassifierService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/textclassifier/ITextClassifierService;
-HPLandroid/service/textclassifier/ITextClassifierService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/textclassifier/TextClassifierService;->getResponse(Landroid/os/Bundle;)Landroid/os/Parcelable;
-HSPLandroid/service/textclassifier/TextClassifierService;->getServiceComponentName(Landroid/content/Context;)Landroid/content/ComponentName;
-PLandroid/service/trust/ITrustAgentService$Stub$Proxy;->onConfigure(Ljava/util/List;Landroid/os/IBinder;)V
-HPLandroid/service/trust/ITrustAgentService$Stub$Proxy;->onDeviceLocked()V
-HPLandroid/service/trust/ITrustAgentService$Stub$Proxy;->onDeviceUnlocked()V
-PLandroid/service/trust/ITrustAgentService$Stub$Proxy;->onUnlockAttempt(Z)V
-PLandroid/service/trust/ITrustAgentService$Stub$Proxy;->setCallback(Landroid/service/trust/ITrustAgentServiceCallback;)V
-PLandroid/service/trust/ITrustAgentService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/trust/ITrustAgentService;
-PLandroid/service/trust/ITrustAgentServiceCallback$Stub;-><init>()V
-PLandroid/service/trust/ITrustAgentServiceCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/service/voice/IVoiceInteractionService$Stub$Proxy;->ready()V
-HPLandroid/service/voice/IVoiceInteractionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionService;
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->closeSystemDialogs()V
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->handleAssist(Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;II)V
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->handleScreenshot(Landroid/graphics/Bitmap;)V
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->hide()V
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->onLockscreenShown()V
-PLandroid/service/voice/IVoiceInteractionSession$Stub$Proxy;->show(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;)V
-PLandroid/service/voice/IVoiceInteractionSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSession;
-PLandroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;->newSession(Landroid/os/IBinder;Landroid/os/Bundle;I)V
-HPLandroid/service/voice/IVoiceInteractionSessionService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/voice/IVoiceInteractionSessionService;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;I)V
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;-><init>(Landroid/content/pm/PackageManager;Landroid/content/pm/ServiceInfo;)V
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getParseError()Ljava/lang/String;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getRecognitionService()Ljava/lang/String;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getServiceInfo()Landroid/content/pm/ServiceInfo;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getServiceInfoOrThrow(Landroid/content/ComponentName;I)Landroid/content/pm/ServiceInfo;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getSessionService()Ljava/lang/String;
-HSPLandroid/service/voice/VoiceInteractionServiceInfo;->getSupportsLaunchFromKeyguard()Z
-HSPLandroid/service/vr/IPersistentVrStateCallbacks$Stub;-><init>()V
-HSPLandroid/service/vr/IPersistentVrStateCallbacks$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/vr/IVrManager$Stub;-><init>()V
-HSPLandroid/service/vr/IVrManager$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/service/vr/IVrManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/vr/IVrManager;
-HSPLandroid/service/vr/IVrManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/vr/IVrStateCallbacks$Stub$Proxy;->asBinder()Landroid/os/IBinder;
 HSPLandroid/service/vr/IVrStateCallbacks$Stub;-><init>()V
-HSPLandroid/service/vr/IVrStateCallbacks$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/wallpaper/IWallpaperConnection$Stub;-><init>()V
-HSPLandroid/service/wallpaper/IWallpaperConnection$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/wallpaper/IWallpaperConnection$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->requestWallpaperColors()V
-HSPLandroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;->setInAmbientMode(ZJ)V
-HSPLandroid/service/wallpaper/IWallpaperService$Stub$Proxy;->attach(Landroid/service/wallpaper/IWallpaperConnection;Landroid/os/IBinder;IZIILandroid/graphics/Rect;I)V
-HSPLandroid/service/wallpaper/IWallpaperService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/wallpaper/IWallpaperService;
-HSPLandroid/sysprop/AdbProperties;->secure()Ljava/util/Optional;
-HSPLandroid/sysprop/AdbProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
-HSPLandroid/sysprop/CryptoProperties$state_values;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/sysprop/CryptoProperties$state_values;->values()[Landroid/sysprop/CryptoProperties$state_values;
-HSPLandroid/sysprop/CryptoProperties$type_values;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/sysprop/CryptoProperties$type_values;->values()[Landroid/sysprop/CryptoProperties$type_values;
-HSPLandroid/sysprop/CryptoProperties;->state()Ljava/util/Optional;
-HSPLandroid/sysprop/CryptoProperties;->tryParseEnum(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
-HSPLandroid/sysprop/CryptoProperties;->type()Ljava/util/Optional;
-HSPLandroid/sysprop/DisplayProperties;->debug_force_rtl(Ljava/lang/Boolean;)V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$2V_2ZQoGHfOIfKo_A8Ss547oL-c;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$2V_2ZQoGHfOIfKo_A8Ss547oL-c;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$BfPaTA0e9gauJmR4vGNCDkGZ3uc;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$BfPaTA0e9gauJmR4vGNCDkGZ3uc;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$BfPaTA0e9gauJmR4vGNCDkGZ3uc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$EV4LSOwY7Dsh1rJalZDLmnGJw5I;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$EV4LSOwY7Dsh1rJalZDLmnGJw5I;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$EV4LSOwY7Dsh1rJalZDLmnGJw5I;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$H4jN0VIBNpZQBeWYt6qS3DCe_M8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$JNTRmlscGaFlYo_3krOr_WWd2QI;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$JNTRmlscGaFlYo_3krOr_WWd2QI;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$JNTRmlscGaFlYo_3krOr_WWd2QI;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$UKEfAuJVPm5cKR_UnPj1L66mN34;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$VtSZ_Uto4bMa49ncgAfdWewMFOU;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$VtSZ_Uto4bMa49ncgAfdWewMFOU;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$VtSZ_Uto4bMa49ncgAfdWewMFOU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$dc-CgjsF3BtDxLSSKL5bQ9ullG0;-><clinit>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$dc-CgjsF3BtDxLSSKL5bQ9ullG0;-><init>()V
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$dc-CgjsF3BtDxLSSKL5bQ9ullG0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/-$$Lambda$TelephonyProperties$kemQbl44ndTqXdQVvnYppJuQboQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/sysprop/DisplayProperties;->debug_force_rtl()Ljava/util/Optional;
 HSPLandroid/sysprop/DisplayProperties;->debug_layout()Ljava/util/Optional;
 HSPLandroid/sysprop/DisplayProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
-HSPLandroid/sysprop/VoldProperties;->decrypt()Ljava/util/Optional;
-HSPLandroid/sysprop/VoldProperties;->encrypt_progress()Ljava/util/Optional;
+HSPLandroid/sysprop/TelephonyProperties;->baseband_version()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->current_active_phone()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->default_network()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->icc_operator_alpha()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->icc_operator_iso_country()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->icc_operator_numeric()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$baseband_version$0(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$default_network$14(Ljava/lang/String;)Ljava/lang/Integer;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$icc_operator_alpha$8(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$icc_operator_iso_country$9(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$icc_operator_numeric$7(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$operator_alpha$1(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$operator_is_roaming$3(Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLandroid/sysprop/TelephonyProperties;->lambda$operator_numeric$2(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/TelephonyProperties;->multi_sim_config()Ljava/util/Optional;
+HSPLandroid/sysprop/TelephonyProperties;->operator_alpha()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->operator_is_roaming()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->operator_numeric()Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->tryParseBoolean(Ljava/lang/String;)Ljava/lang/Boolean;
+HSPLandroid/sysprop/TelephonyProperties;->tryParseInteger(Ljava/lang/String;)Ljava/lang/Integer;
+HSPLandroid/sysprop/TelephonyProperties;->tryParseList(Ljava/util/function/Function;Ljava/lang/String;)Ljava/util/List;
+HSPLandroid/sysprop/TelephonyProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/sysprop/VndkProperties;->product_vndk_version()Ljava/util/Optional;
+HSPLandroid/sysprop/VndkProperties;->tryParseString(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/system/ErrnoException;-><init>(Ljava/lang/String;I)V
 HSPLandroid/system/ErrnoException;->getMessage()Ljava/lang/String;
-HSPLandroid/system/ErrnoException;->rethrowAsIOException()Ljava/io/IOException;
 HSPLandroid/system/GaiException;-><init>(Ljava/lang/String;I)V
+HSPLandroid/system/GaiException;->rethrowAsUnknownHostException(Ljava/lang/String;)Ljava/net/UnknownHostException;
+HSPLandroid/system/Int32Ref;-><init>(I)V
 HSPLandroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/InetSocketAddress;)Ljava/io/FileDescriptor;
-HSPLandroid/system/Os;->access(Ljava/lang/String;I)Z
-HSPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
+HSPLandroid/system/Os;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
 HSPLandroid/system/Os;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
 HSPLandroid/system/Os;->chmod(Ljava/lang/String;I)V
-HSPLandroid/system/Os;->chown(Ljava/lang/String;II)V
 HSPLandroid/system/Os;->close(Ljava/io/FileDescriptor;)V
-HPLandroid/system/Os;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;
-HSPLandroid/system/Os;->fchmod(Ljava/io/FileDescriptor;I)V
-HSPLandroid/system/Os;->fchown(Ljava/io/FileDescriptor;II)V
 HSPLandroid/system/Os;->fcntlInt(Ljava/io/FileDescriptor;II)I
 HSPLandroid/system/Os;->fdatasync(Ljava/io/FileDescriptor;)V
 HSPLandroid/system/Os;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;
-HPLandroid/system/Os;->fsync(Ljava/io/FileDescriptor;)V
-HSPLandroid/system/Os;->getenv(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/system/Os;->getgid()I
 HSPLandroid/system/Os;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;
 HSPLandroid/system/Os;->getpgid(I)I
 HSPLandroid/system/Os;->getpid()I
-HSPLandroid/system/Os;->getrlimit(I)Landroid/system/StructRlimit;
 HSPLandroid/system/Os;->gettid()I
 HSPLandroid/system/Os;->getuid()I
-HSPLandroid/system/Os;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B
 HSPLandroid/system/Os;->ioctlInt(Ljava/io/FileDescriptor;ILandroid/system/Int32Ref;)I
 HSPLandroid/system/Os;->listen(Ljava/io/FileDescriptor;I)V
-HSPLandroid/system/Os;->lseek(Ljava/io/FileDescriptor;JI)J
 HSPLandroid/system/Os;->mkdir(Ljava/lang/String;I)V
-HSPLandroid/system/Os;->mlock(JJ)V
-HSPLandroid/system/Os;->mmap(JJIILjava/io/FileDescriptor;J)J
-HSPLandroid/system/Os;->munmap(JJ)V
 HSPLandroid/system/Os;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;
 HSPLandroid/system/Os;->pipe2(I)[Ljava/io/FileDescriptor;
 HSPLandroid/system/Os;->poll([Landroid/system/StructPollfd;I)I
-HSPLandroid/system/Os;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V
 HSPLandroid/system/Os;->read(Ljava/io/FileDescriptor;[BII)I
-HSPLandroid/system/Os;->readlink(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/system/Os;->rename(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/system/Os;->setpgid(II)V
 HSPLandroid/system/Os;->setregid(II)V
 HSPLandroid/system/Os;->setreuid(II)V
 HSPLandroid/system/Os;->setsockoptTimeval(Ljava/io/FileDescriptor;IILandroid/system/StructTimeval;)V
 HSPLandroid/system/Os;->socket(III)Ljava/io/FileDescriptor;
-HSPLandroid/system/Os;->socketpair(IIILjava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
 HSPLandroid/system/Os;->stat(Ljava/lang/String;)Landroid/system/StructStat;
 HSPLandroid/system/Os;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;
 HSPLandroid/system/Os;->sysconf(I)J
-HSPLandroid/system/Os;->umask(I)I
 HSPLandroid/system/Os;->write(Ljava/io/FileDescriptor;[BII)I
-HSPLandroid/system/OsConstants;->errnoName(I)Ljava/lang/String;
-HSPLandroid/system/OsConstants;->placeholder()I
+HSPLandroid/system/OsConstants;->S_ISDIR(I)Z
+HSPLandroid/system/OsConstants;->S_ISREG(I)Z
+HSPLandroid/system/StructAddrinfo;-><init>()V
 HSPLandroid/system/StructCapUserData;-><init>(III)V
+HSPLandroid/system/StructCapUserHeader;-><init>(II)V
 HSPLandroid/system/StructIfaddrs;-><init>(Ljava/lang/String;ILjava/net/InetAddress;Ljava/net/InetAddress;Ljava/net/InetAddress;[B)V
 HSPLandroid/system/StructLinger;-><init>(II)V
-HSPLandroid/system/StructPasswd;-><init>(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;)V
-HSPLandroid/system/StructRlimit;-><init>(JJ)V
+HSPLandroid/system/StructLinger;->isOn()Z
+HSPLandroid/system/StructPollfd;-><init>()V
 HSPLandroid/system/StructStat;-><init>(JJIJIIJJLandroid/system/StructTimespec;Landroid/system/StructTimespec;Landroid/system/StructTimespec;JJ)V
 HSPLandroid/system/StructStatVfs;-><init>(JJJJJJJJJJJ)V
 HSPLandroid/system/StructTimespec;-><init>(JJ)V
 HSPLandroid/system/StructTimespec;->equals(Ljava/lang/Object;)Z
+HSPLandroid/system/StructTimeval;-><init>(JJ)V
 HSPLandroid/system/StructTimeval;->fromMillis(J)Landroid/system/StructTimeval;
-HSPLandroid/system/StructUtsname;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/system/UnixSocketAddress;-><init>([B)V
-HSPLandroid/system/UnixSocketAddress;->createFileSystem(Ljava/lang/String;)Landroid/system/UnixSocketAddress;
-HSPLandroid/telecom/-$$Lambda$cyYWqCYT05eM23eLVm4oQ5DrYjw;-><init>()V
-HSPLandroid/telecom/-$$Lambda$qa4s1Fm2YuohEunaJUJcmJXDXG0;-><init>()V
-HSPLandroid/telecom/-$$Lambda$qa4s1Fm2YuohEunaJUJcmJXDXG0;->getSessionId()Ljava/lang/String;
-HSPLandroid/telecom/AudioState$1;-><init>()V
-HSPLandroid/telecom/CallAudioState$1;-><init>()V
-HSPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/CallAudioState;
-HSPLandroid/telecom/CallAudioState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/telecom/CallAudioState;-><init>(Landroid/telecom/CallAudioState;)V
-HSPLandroid/telecom/CallAudioState;-><init>(ZII)V
-HSPLandroid/telecom/CallAudioState;->audioRouteToString(I)Ljava/lang/String;
-HSPLandroid/telecom/CallAudioState;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telecom/CallAudioState;->getRoute()I
-HSPLandroid/telecom/CallAudioState;->getSupportedRouteMask()I
-HSPLandroid/telecom/CallAudioState;->toString()Ljava/lang/String;
-HPLandroid/telecom/CallAudioState;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/telecom/Connection;->capabilitiesToString(I)Ljava/lang/String;
-HPLandroid/telecom/Connection;->capabilitiesToStringInternal(IZ)Ljava/lang/String;
-PLandroid/telecom/Connection;->capabilitiesToStringShort(I)Ljava/lang/String;
-PLandroid/telecom/Connection;->propertiesToString(I)Ljava/lang/String;
-HPLandroid/telecom/Connection;->propertiesToStringInternal(IZ)Ljava/lang/String;
-PLandroid/telecom/ConnectionRequest$1;-><init>()V
-PLandroid/telecom/ConnectionRequest$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/ConnectionRequest;
-PLandroid/telecom/ConnectionRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/telecom/ConnectionRequest$Builder;->build()Landroid/telecom/ConnectionRequest;
-PLandroid/telecom/ConnectionRequest;-><init>(Landroid/os/Parcel;)V
-PLandroid/telecom/ConnectionRequest;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/telecom/ConnectionService;-><init>()V
-HPLandroid/telecom/ConnectionService;->access$100(Landroid/telecom/ConnectionService;)Landroid/telecom/ConnectionServiceAdapter;
-HPLandroid/telecom/ConnectionService;->access$1900(Landroid/telecom/ConnectionService;Ljava/lang/String;Landroid/telecom/CallAudioState;)V
-HPLandroid/telecom/ConnectionService;->access$200(Landroid/telecom/ConnectionService;)V
-HPLandroid/telecom/ConnectionService;->access$300(Landroid/telecom/ConnectionService;)Z
-HPLandroid/telecom/ConnectionService;->access$500(Landroid/telecom/ConnectionService;)Ljava/util/List;
-HPLandroid/telecom/ConnectionService;->access$600(Landroid/telecom/ConnectionService;Ljava/lang/String;)V
-HPLandroid/telecom/ConnectionService;->addConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/Connection;)V
-HPLandroid/telecom/ConnectionService;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZ)V
-HPLandroid/telecom/ConnectionService;->createIdList(Ljava/util/List;)Ljava/util/List;
-HPLandroid/telecom/ConnectionService;->endAllConnections()V
-HPLandroid/telecom/ConnectionService;->findConnectionForAction(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/Connection;
-HPLandroid/telecom/ConnectionService;->getAllConnections()Ljava/util/Collection;
-HPLandroid/telecom/ConnectionService;->notifyCreateConnectionComplete(Ljava/lang/String;)V
-HPLandroid/telecom/ConnectionService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HPLandroid/telecom/ConnectionService;->onCallAudioStateChanged(Ljava/lang/String;Landroid/telecom/CallAudioState;)V
-HPLandroid/telecom/ConnectionService;->onUnbind(Landroid/content/Intent;)Z
-HPLandroid/telecom/ConnectionService;->removeConnection(Landroid/telecom/Connection;)V
-HSPLandroid/telecom/DefaultDialerManager;->getDefaultDialerApplication(Landroid/content/Context;I)Ljava/lang/String;
-HSPLandroid/telecom/DisconnectCause$1;-><init>()V
-HSPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/DisconnectCause;
-HSPLandroid/telecom/DisconnectCause$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telecom/DisconnectCause;-><init>(I)V
-HPLandroid/telecom/DisconnectCause;->toString()Ljava/lang/String;
-HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;)V
-HSPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V
-HPLandroid/telecom/Log;->addEvent(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Log;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V
-HSPLandroid/telecom/Log;->buildMessage(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/telecom/Log;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V
-HSPLandroid/telecom/Log;->createSubsession()Landroid/telecom/Logging/Session;
-HSPLandroid/telecom/Log;->d(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Log;->d(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Log;->endSession()V
-HSPLandroid/telecom/Log;->getEventManager()Landroid/telecom/Logging/EventManager;
-HPLandroid/telecom/Log;->getExternalSession()Landroid/telecom/Logging/Session$Info;
-HSPLandroid/telecom/Log;->getSessionId()Ljava/lang/String;
-HSPLandroid/telecom/Log;->getSessionManager()Landroid/telecom/Logging/SessionManager;
-HSPLandroid/telecom/Log;->i(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Log;->i(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Log;->isLoggable(I)Z
-HSPLandroid/telecom/Log;->obfuscatePhoneNumber(Ljava/lang/StringBuilder;Ljava/lang/String;)V
-HSPLandroid/telecom/Log;->pii(Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/telecom/Log;->piiHandle(Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/telecom/Log;->registerEventListener(Landroid/telecom/Logging/EventManager$EventListener;)V
-HSPLandroid/telecom/Log;->registerSessionListener(Landroid/telecom/Logging/SessionManager$ISessionListener;)V
-HSPLandroid/telecom/Log;->setSessionContext(Landroid/content/Context;)V
-HSPLandroid/telecom/Log;->setTag(Ljava/lang/String;)V
-HPLandroid/telecom/Log;->startSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V
-HSPLandroid/telecom/Log;->startSession(Ljava/lang/String;)V
-HPLandroid/telecom/Log;->startSession(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telecom/Log;->v(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
-HPLandroid/telecom/Log;->w(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;-><init>()V
-HSPLandroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;->get()I
-HPLandroid/telecom/Logging/-$$Lambda$SessionManager$VyH2gT1EjIvzDy_C9JfTT60CISM;->run()V
-HSPLandroid/telecom/Logging/-$$Lambda$SessionManager$hhtZwTEbvO-fLNlAvB6Do9_2gW4;->get()J
-HPLandroid/telecom/Logging/EventManager$Event;-><init>(Ljava/lang/String;Ljava/lang/String;JLjava/lang/Object;)V
-HPLandroid/telecom/Logging/EventManager$EventRecord;->addEvent(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
-PLandroid/telecom/Logging/EventManager$EventRecord;->getRecordEntry()Landroid/telecom/Logging/EventManager$Loggable;
-HSPLandroid/telecom/Logging/EventManager$TimedEventPair;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telecom/Logging/EventManager$TimedEventPair;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HSPLandroid/telecom/Logging/EventManager;-><init>(Landroid/telecom/Logging/SessionManager$ISessionIdQueryHandler;)V
-PLandroid/telecom/Logging/EventManager;->addEventRecord(Landroid/telecom/Logging/EventManager$EventRecord;)V
-HSPLandroid/telecom/Logging/EventManager;->addRequestResponsePair(Landroid/telecom/Logging/EventManager$TimedEventPair;)V
-HSPLandroid/telecom/Logging/EventManager;->event(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/Object;)V
-PLandroid/telecom/Logging/EventManager;->event(Landroid/telecom/Logging/EventManager$Loggable;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/Object;)V
-HSPLandroid/telecom/Logging/EventManager;->registerEventListener(Landroid/telecom/Logging/EventManager$EventListener;)V
-HPLandroid/telecom/Logging/Runnable$1;->run()V
-PLandroid/telecom/Logging/Runnable;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
-PLandroid/telecom/Logging/Runnable;->cancel()V
-PLandroid/telecom/Logging/Runnable;->prepare()Ljava/lang/Runnable;
-PLandroid/telecom/Logging/Session$Info$1;-><init>()V
-PLandroid/telecom/Logging/Session$Info$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/Logging/Session$Info;
-PLandroid/telecom/Logging/Session$Info$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/telecom/Logging/Session$Info;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telecom/Logging/Session;-><init>(Ljava/lang/String;Ljava/lang/String;JZLjava/lang/String;)V
-HSPLandroid/telecom/Logging/Session;->addChild(Landroid/telecom/Logging/Session;)V
-HSPLandroid/telecom/Logging/Session;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telecom/Logging/Session;->getChildSessions()Ljava/util/ArrayList;
-HSPLandroid/telecom/Logging/Session;->getExecutionStartTimeMilliseconds()J
-HSPLandroid/telecom/Logging/Session;->getFullMethodPath(Ljava/lang/StringBuilder;Z)V
-HSPLandroid/telecom/Logging/Session;->getFullMethodPath(Z)Ljava/lang/String;
-HSPLandroid/telecom/Logging/Session;->getFullSessionId()Ljava/lang/String;
-PLandroid/telecom/Logging/Session;->getInfo()Landroid/telecom/Logging/Session$Info;
-HSPLandroid/telecom/Logging/Session;->getLocalExecutionTime()J
-HSPLandroid/telecom/Logging/Session;->getNextChildId()Ljava/lang/String;
-HSPLandroid/telecom/Logging/Session;->getParentSession()Landroid/telecom/Logging/Session;
-HSPLandroid/telecom/Logging/Session;->getShortMethodName()Ljava/lang/String;
-HSPLandroid/telecom/Logging/Session;->isExternal()Z
-HSPLandroid/telecom/Logging/Session;->isSessionCompleted()Z
-HSPLandroid/telecom/Logging/Session;->isStartedFromActiveSession()Z
-HSPLandroid/telecom/Logging/Session;->markSessionCompleted(J)V
-PLandroid/telecom/Logging/Session;->printFullSessionTree()Ljava/lang/String;
-PLandroid/telecom/Logging/Session;->printSessionTree()Ljava/lang/String;
-PLandroid/telecom/Logging/Session;->printSessionTree(ILjava/lang/StringBuilder;)V
-HSPLandroid/telecom/Logging/Session;->removeChild(Landroid/telecom/Logging/Session;)V
-HSPLandroid/telecom/Logging/Session;->setExecutionStartTimeMs(J)V
-HSPLandroid/telecom/Logging/Session;->setParentSession(Landroid/telecom/Logging/Session;)V
-HSPLandroid/telecom/Logging/Session;->setSessionId(Ljava/lang/String;)V
-HSPLandroid/telecom/Logging/Session;->setShortMethodName(Ljava/lang/String;)V
-HSPLandroid/telecom/Logging/Session;->toString()Ljava/lang/String;
-HSPLandroid/telecom/Logging/SessionManager;-><init>()V
-PLandroid/telecom/Logging/SessionManager;->cancelSubsession(Landroid/telecom/Logging/Session;)V
-HPLandroid/telecom/Logging/SessionManager;->cleanupStaleSessions(J)V
-HSPLandroid/telecom/Logging/SessionManager;->continueSession(Landroid/telecom/Logging/Session;Ljava/lang/String;)V
-HSPLandroid/telecom/Logging/SessionManager;->createSubsession()Landroid/telecom/Logging/Session;
-HSPLandroid/telecom/Logging/SessionManager;->createSubsession(Z)Landroid/telecom/Logging/Session;
-HSPLandroid/telecom/Logging/SessionManager;->endParentSessions(Landroid/telecom/Logging/Session;)V
-HSPLandroid/telecom/Logging/SessionManager;->endSession()V
-PLandroid/telecom/Logging/SessionManager;->getExternalSession()Landroid/telecom/Logging/Session$Info;
-HSPLandroid/telecom/Logging/SessionManager;->getNextSessionID()Ljava/lang/String;
-HSPLandroid/telecom/Logging/SessionManager;->getSessionId()Ljava/lang/String;
-PLandroid/telecom/Logging/SessionManager;->lambda$new$0$SessionManager()V
-HSPLandroid/telecom/Logging/SessionManager;->lambda$new$1$SessionManager()J
-HSPLandroid/telecom/Logging/SessionManager;->registerSessionListener(Landroid/telecom/Logging/SessionManager$ISessionListener;)V
-HSPLandroid/telecom/Logging/SessionManager;->resetStaleSessionTimer()V
-HSPLandroid/telecom/Logging/SessionManager;->setContext(Landroid/content/Context;)V
-HPLandroid/telecom/Logging/SessionManager;->startExternalSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;)V
-PLandroid/telecom/Logging/SessionManager;->startSession(Landroid/telecom/Logging/Session$Info;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telecom/Logging/SessionManager;->startSession(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telecom/ParcelableCall$1;-><init>()V
-HSPLandroid/telecom/ParcelableCall;-><init>(Ljava/lang/String;ILandroid/telecom/DisconnectCause;Ljava/util/List;IIIJLandroid/net/Uri;ILjava/lang/String;ILandroid/telecom/GatewayInfo;Landroid/telecom/PhoneAccountHandle;ZLcom/android/internal/telecom/IVideoProvider;ZLandroid/telecom/ParcelableRttCall;Ljava/lang/String;Ljava/util/List;Landroid/telecom/StatusHints;ILjava/util/List;Landroid/os/Bundle;Landroid/os/Bundle;JLandroid/telecom/CallIdentification;I)V
-HPLandroid/telecom/ParcelableCall;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/telecom/ParcelableConnection$1;-><init>()V
-HPLandroid/telecom/ParcelableConnection$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/ParcelableConnection;
-PLandroid/telecom/ParcelableConnection$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/telecom/ParcelableConnection;-><init>(Landroid/telecom/PhoneAccountHandle;IIIILandroid/net/Uri;ILjava/lang/String;ILcom/android/internal/telecom/IVideoProvider;IZZJJLandroid/telecom/StatusHints;Landroid/telecom/DisconnectCause;Ljava/util/List;Landroid/os/Bundle;)V
-PLandroid/telecom/ParcelableConnection;-><init>(Landroid/telecom/PhoneAccountHandle;IIIILandroid/net/Uri;ILjava/lang/String;ILcom/android/internal/telecom/IVideoProvider;IZZJJLandroid/telecom/StatusHints;Landroid/telecom/DisconnectCause;Ljava/util/List;Landroid/os/Bundle;Ljava/lang/String;)V
-HSPLandroid/telecom/PhoneAccount$1;-><init>()V
-HSPLandroid/telecom/PhoneAccount$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/PhoneAccount;
-HSPLandroid/telecom/PhoneAccount$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telecom/PhoneAccount$Builder;->addSupportedUriScheme(Ljava/lang/String;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->build()Landroid/telecom/PhoneAccount;
-HSPLandroid/telecom/PhoneAccount$Builder;->setAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setCapabilities(I)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setExtras(Landroid/os/Bundle;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setGroupId(Ljava/lang/String;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setHighlightColor(I)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setIcon(Landroid/graphics/drawable/Icon;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setIsEnabled(Z)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setShortDescription(Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setSubscriptionAddress(Landroid/net/Uri;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setSupportedAudioRoutes(I)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount$Builder;->setSupportedUriSchemes(Ljava/util/List;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telecom/PhoneAccount;-><init>(Landroid/telecom/PhoneAccountHandle;Landroid/net/Uri;Landroid/net/Uri;ILandroid/graphics/drawable/Icon;ILjava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/util/List;Landroid/os/Bundle;IZLjava/lang/String;)V
-HSPLandroid/telecom/PhoneAccount;->areBundlesEqual(Landroid/os/Bundle;Landroid/os/Bundle;)Z
-HSPLandroid/telecom/PhoneAccount;->audioRoutesToString()Ljava/lang/String;
-HSPLandroid/telecom/PhoneAccount;->builder(Landroid/telecom/PhoneAccountHandle;Ljava/lang/CharSequence;)Landroid/telecom/PhoneAccount$Builder;
-HSPLandroid/telecom/PhoneAccount;->capabilitiesToString()Ljava/lang/String;
-HSPLandroid/telecom/PhoneAccount;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telecom/PhoneAccount;->getAccountHandle()Landroid/telecom/PhoneAccountHandle;
-HSPLandroid/telecom/PhoneAccount;->getExtras()Landroid/os/Bundle;
-HSPLandroid/telecom/PhoneAccount;->hasCapabilities(I)Z
-HSPLandroid/telecom/PhoneAccount;->supportsUriScheme(Ljava/lang/String;)Z
-HSPLandroid/telecom/PhoneAccount;->toString()Ljava/lang/String;
-HSPLandroid/telecom/PhoneAccount;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telecom/PhoneAccountHandle$1;-><init>()V
 HSPLandroid/telecom/PhoneAccountHandle$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telecom/PhoneAccountHandle;
 HSPLandroid/telecom/PhoneAccountHandle$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/telecom/PhoneAccountHandle;-><init>(Landroid/content/ComponentName;Ljava/lang/String;)V
 HSPLandroid/telecom/PhoneAccountHandle;-><init>(Landroid/content/ComponentName;Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLandroid/telecom/PhoneAccountHandle;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telecom/PhoneAccountHandle;-><init>(Landroid/os/Parcel;Landroid/telecom/PhoneAccountHandle$1;)V
 HSPLandroid/telecom/PhoneAccountHandle;->checkParameters(Landroid/content/ComponentName;Landroid/os/UserHandle;)V
-HSPLandroid/telecom/PhoneAccountHandle;->describeContents()I
 HSPLandroid/telecom/PhoneAccountHandle;->equals(Ljava/lang/Object;)Z
 HSPLandroid/telecom/PhoneAccountHandle;->getComponentName()Landroid/content/ComponentName;
 HSPLandroid/telecom/PhoneAccountHandle;->getId()Ljava/lang/String;
-HSPLandroid/telecom/PhoneAccountHandle;->hashCode()I
-HSPLandroid/telecom/PhoneAccountHandle;->toString()Ljava/lang/String;
 HSPLandroid/telecom/PhoneAccountHandle;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/telecom/TelecomAnalytics$SessionTiming$1;-><init>()V
 HSPLandroid/telecom/TelecomManager;-><init>(Landroid/content/Context;)V
-HPLandroid/telecom/TelecomManager;->addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V
-HSPLandroid/telecom/TelecomManager;->from(Landroid/content/Context;)Landroid/telecom/TelecomManager;
-HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts()Ljava/util/List;
-HSPLandroid/telecom/TelecomManager;->getCallCapablePhoneAccounts(Z)Ljava/util/List;
-HSPLandroid/telecom/TelecomManager;->getCurrentTtyMode()I
+HSPLandroid/telecom/TelecomManager;-><init>(Landroid/content/Context;Lcom/android/internal/telecom/ITelecomService;)V
+HSPLandroid/telecom/TelecomManager;->getCallState()I
 HSPLandroid/telecom/TelecomManager;->getDefaultDialerPackage()Ljava/lang/String;
-HSPLandroid/telecom/TelecomManager;->getDefaultOutgoingPhoneAccount(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle;
-HSPLandroid/telecom/TelecomManager;->getDefaultPhoneApp()Landroid/content/ComponentName;
-HSPLandroid/telecom/TelecomManager;->getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount;
-HSPLandroid/telecom/TelecomManager;->getPhoneAccountsSupportingScheme(Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/telecom/TelecomManager;->getSimCallManager(I)Landroid/telecom/PhoneAccountHandle;
-HSPLandroid/telecom/TelecomManager;->getSystemDialerPackage()Ljava/lang/String;
-HSPLandroid/telecom/TelecomManager;->getUserSelectedOutgoingPhoneAccount()Landroid/telecom/PhoneAccountHandle;
-HSPLandroid/telecom/TelecomManager;->isInCall()Z
-HSPLandroid/telecom/TelecomManager;->isRinging()Z
-HSPLandroid/telecom/TelecomManager;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;)Z
-HSPLandroid/telecom/TelecomManager;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V
-HSPLandroid/telecom/TelecomManager;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
-HSPLandroid/telecom/VideoProfile$1;-><init>()V
-HSPLandroid/telecom/VideoProfile;->isVideo(I)Z
-HSPLandroid/telecom/VideoProfile;->videoStateToString(I)Ljava/lang/String;
-HSPLandroid/telephony/-$$Lambda$MLKtmRGKP3e0WU7x_KyS5-Vg8q4;-><init>()V
-HSPLandroid/telephony/-$$Lambda$MLKtmRGKP3e0WU7x_KyS5-Vg8q4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/telephony/-$$Lambda$NetworkRegistrationInfo$1JuZmO5PoYGZY8bHhZYwvmqwOB0;-><init>()V
+HSPLandroid/telecom/TelecomManager;->getTelecomService()Lcom/android/internal/telecom/ITelecomService;
+HSPLandroid/telecom/TelecomManager;->isServiceConnected()Z
 HSPLandroid/telephony/-$$Lambda$NetworkRegistrationInfo$1JuZmO5PoYGZY8bHhZYwvmqwOB0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$-CiOzgf6ys4EwlCYOVUsuz9YQ5c;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$0s34qsuHFsa43jUHrTkD62ni6Ds;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$1M3m0i6211i2YjWyTDT7l0bJm3I;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2VMO21pFQN-JN3kpn6vQN1zPFEU;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2cMrwdqnKBpixpApeIX38rmRLak;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$4NHt5Shg_DHV-T1IxfcQLHP5-j0;->run()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$6czWSGzxct0CXPVO54T0aq05qls;-><init>(Landroid/telephony/PhoneStateListener;ILjava/lang/String;)V
 HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$6czWSGzxct0CXPVO54T0aq05qls;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Hbn6-eZxY2p3rjOfStodI04A8E8;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$JalixlMNdjktPsNntP_JT9pymhs;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Q2A8FgYlU8_D6PD78tThGut_rTc;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$TqrkuLPlaG_ucU7VbLS4tnf8hG8;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$WYWtWHdkZDxBd9anjoxyZozPWHc;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$XyayAGWQZC2dNjwr697SfSGBBOc;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$aysbwPqxcLV_5w6LP0TzZu2D-ew;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$bELzxgwsPigyVKYkAXBO2BjcSm8;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$dUc3j82sK9P9Zpaq-91n9bk_Rpc;->run()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$lHL69WZlO89JjNC1LLvFWp2OuKY;->run()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$MtX5gtAKHxLcUp_ibya6VO1zuoE;-><init>(Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;Landroid/telephony/PhoneStateListener;I)V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$MtX5gtAKHxLcUp_ibya6VO1zuoE;->runOrThrow()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Rh4FuYaAZPAbrOYr6GGF6llSePE;-><init>(Landroid/telephony/PhoneStateListener;I)V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Rh4FuYaAZPAbrOYr6GGF6llSePE;->run()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$j6NpsS_PE3VHutxIDEmwFHop7Yc;-><init>(Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;Landroid/telephony/PhoneStateListener;Landroid/telephony/SignalStrength;)V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$j6NpsS_PE3VHutxIDEmwFHop7Yc;->runOrThrow()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$lP7_Xy6P82nXGbUQ_ZUY6rZR4bI;-><init>(Landroid/telephony/PhoneStateListener;Landroid/telephony/SignalStrength;)V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$lP7_Xy6P82nXGbUQ_ZUY6rZR4bI;->run()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$nrGqSRBJrc3_EwotCDNwfKeizIo;-><init>(Landroid/telephony/PhoneStateListener;Landroid/telephony/ServiceState;)V
 HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$nrGqSRBJrc3_EwotCDNwfKeizIo;->run()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$oDAZqs8paeefe_3k_uRKV5plQW4;-><init>(Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;Landroid/telephony/PhoneStateListener;ILjava/lang/String;)V
 HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$oDAZqs8paeefe_3k_uRKV5plQW4;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$okPCYOx4UxYuvUHlM2iS425QGIg;->runOrThrow()V
+HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$uC5syhzl229gIpaK7Jfs__OCJxQ;-><init>(Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;Landroid/telephony/PhoneStateListener;Landroid/telephony/ServiceState;)V
 HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$uC5syhzl229gIpaK7Jfs__OCJxQ;->runOrThrow()V
-HSPLandroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$yvQnAlFGg5EWDG2vcA9X-4xnalA;->runOrThrow()V
+HSPLandroid/telephony/-$$Lambda$SubscriptionManager$R_uORt9bKcmEo6JnjiGP2KgjIOQ;-><init>(Landroid/telephony/SubscriptionManager;)V
 HSPLandroid/telephony/-$$Lambda$SubscriptionManager$R_uORt9bKcmEo6JnjiGP2KgjIOQ;->test(Ljava/lang/Object;)Z
-HSPLandroid/telephony/AccessNetworkConstants$AccessNetworkType;->toString(I)Ljava/lang/String;
+HSPLandroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$3Kis6wL1IbLustWe9A2o4-2YpGo;->createService(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$b_92_3ZijRrdEa9yLyFA5xu19OM;->createService(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$sQClc4rjc9ydh0nXpY79gr33av4;->createService(Landroid/content/Context;)Ljava/lang/Object;
+HSPLandroid/telephony/-$$Lambda$TelephonyRegistryManager$1$cLzLZB4oGnI-HG_-4MhxcXoHys8;-><init>(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
+HSPLandroid/telephony/-$$Lambda$TelephonyRegistryManager$1$cLzLZB4oGnI-HG_-4MhxcXoHys8;->run()V
 HSPLandroid/telephony/AccessNetworkConstants;->transportTypeToString(I)Ljava/lang/String;
 HSPLandroid/telephony/AccessNetworkUtils;->getOperatingBandForEarfcn(I)I
-HSPLandroid/telephony/AnomalyReporter;->initialize(Landroid/content/Context;)V
-HSPLandroid/telephony/CallAttributes$1;-><init>()V
-HPLandroid/telephony/CallAttributes;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CallQuality$1;-><init>()V
-HPLandroid/telephony/CallQuality;->toString()Ljava/lang/String;
-HPLandroid/telephony/CallQuality;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CarrierConfigManager$Gps;->access$000()Landroid/os/PersistableBundle;
-HSPLandroid/telephony/CarrierConfigManager$Gps;->getDefaults()Landroid/os/PersistableBundle;
 HSPLandroid/telephony/CarrierConfigManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/telephony/CarrierConfigManager;->getConfig()Landroid/os/PersistableBundle;
 HSPLandroid/telephony/CarrierConfigManager;->getConfigForSubId(I)Landroid/os/PersistableBundle;
-HPLandroid/telephony/CarrierConfigManager;->getDefaultCarrierServicePackageName()Ljava/lang/String;
-HSPLandroid/telephony/CarrierConfigManager;->getDefaultConfig()Landroid/os/PersistableBundle;
-HSPLandroid/telephony/CarrierConfigManager;->isConfigForIdentifiedCarrier(Landroid/os/PersistableBundle;)Z
-HSPLandroid/telephony/CarrierConfigManager;->updateConfigForPhoneId(ILjava/lang/String;)V
-HSPLandroid/telephony/CellConfigLte$1;-><init>()V
-HSPLandroid/telephony/CellConfigLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellConfigLte;
-HSPLandroid/telephony/CellConfigLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellConfigLte;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellConfigLte;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellIdentity$1;-><init>()V
+HSPLandroid/telephony/CarrierConfigManager;->getICarrierConfigLoader()Lcom/android/internal/telephony/ICarrierConfigLoader;
+HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentity;
+HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/telephony/CellIdentity;-><init>(Ljava/lang/String;ILandroid/os/Parcel;)V
 HSPLandroid/telephony/CellIdentity;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telephony/CellIdentity;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellIdentity;->getType()I
-HSPLandroid/telephony/CellIdentityCdma$1;-><init>()V
-HSPLandroid/telephony/CellIdentityCdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentityCdma;
-HSPLandroid/telephony/CellIdentityCdma$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellIdentityCdma;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellIdentityGsm$1;-><init>()V
-HSPLandroid/telephony/CellIdentityGsm$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentityGsm;
-HSPLandroid/telephony/CellIdentityGsm$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellIdentityGsm;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellIdentityGsm;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellIdentityLte$1;-><init>()V
+HSPLandroid/telephony/CellIdentity;->isMcc(Ljava/lang/String;)Z
+HSPLandroid/telephony/CellIdentity;->isMnc(Ljava/lang/String;)Z
+HSPLandroid/telephony/CellIdentity;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/telephony/CellIdentityLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentityLte;
 HSPLandroid/telephony/CellIdentityLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellIdentityLte;-><init>(Landroid/hardware/radio/V1_2/CellIdentityLte;)V
 HSPLandroid/telephony/CellIdentityLte;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellIdentityLte;->asCellLocation()Landroid/telephony/CellLocation;
-HSPLandroid/telephony/CellIdentityLte;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellIdentityLte;->getChannelNumber()I
-HSPLandroid/telephony/CellIdentityLte;->getMcc()I
-HSPLandroid/telephony/CellIdentityLte;->toString()Ljava/lang/String;
+HSPLandroid/telephony/CellIdentityLte;->createFromParcelBody(Landroid/os/Parcel;)Landroid/telephony/CellIdentityLte;
 HSPLandroid/telephony/CellIdentityLte;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellIdentityWcdma$1;-><init>()V
 HSPLandroid/telephony/CellIdentityWcdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentityWcdma;
 HSPLandroid/telephony/CellIdentityWcdma$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellIdentityWcdma;-><init>(Landroid/hardware/radio/V1_2/CellIdentityWcdma;)V
-HSPLandroid/telephony/CellIdentityWcdma;->asCellLocation()Landroid/telephony/CellLocation;
-HSPLandroid/telephony/CellIdentityWcdma;->asCellLocation()Landroid/telephony/gsm/GsmCellLocation;
-HSPLandroid/telephony/CellIdentityWcdma;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellIdentityWcdma;->getChannelNumber()I
-HSPLandroid/telephony/CellIdentityWcdma;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellIdentityWcdma;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellInfo$1;-><init>()V
+HSPLandroid/telephony/CellIdentityWcdma;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telephony/CellIdentityWcdma;->createFromParcelBody(Landroid/os/Parcel;)Landroid/telephony/CellIdentityWcdma;
 HSPLandroid/telephony/CellInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellInfo;
 HSPLandroid/telephony/CellInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellInfo;->create(Landroid/hardware/radio/V1_2/CellInfo;)Landroid/telephony/CellInfo;
-HSPLandroid/telephony/CellInfo;->isRegistered()Z
-HSPLandroid/telephony/CellInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellInfoGsm$1;-><init>()V
-HSPLandroid/telephony/CellInfoLte$1;-><init>()V
-HSPLandroid/telephony/CellInfoLte;-><init>(Landroid/hardware/radio/V1_2/CellInfo;)V
-HSPLandroid/telephony/CellInfoLte;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellInfoLte;->getCellIdentity()Landroid/telephony/CellIdentity;
-HSPLandroid/telephony/CellInfoLte;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellInfoLte;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellInfoWcdma$1;-><init>()V
-HSPLandroid/telephony/CellInfoWcdma;->getCellIdentity()Landroid/telephony/CellIdentity;
-HSPLandroid/telephony/CellInfoWcdma;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellInfoWcdma;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellLocation;->getEmpty()Landroid/telephony/CellLocation;
-HSPLandroid/telephony/CellSignalStrengthCdma$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrength;-><init>()V
+HSPLandroid/telephony/CellSignalStrength;->getNumSignalStrengthLevels()I
 HSPLandroid/telephony/CellSignalStrengthCdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthCdma;
 HSPLandroid/telephony/CellSignalStrengthCdma$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthCdma;-><init>()V
-HSPLandroid/telephony/CellSignalStrengthCdma;-><init>(IIIII)V
 HSPLandroid/telephony/CellSignalStrengthCdma;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellSignalStrengthCdma;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthCdma;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthCdma$1;)V
 HSPLandroid/telephony/CellSignalStrengthCdma;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellSignalStrengthCdma;->getCdmaLevel()I
-HSPLandroid/telephony/CellSignalStrengthCdma;->getEvdoLevel()I
-HSPLandroid/telephony/CellSignalStrengthCdma;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthCdma;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/CellSignalStrengthGsm$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrengthCdma;->isValid()Z
 HSPLandroid/telephony/CellSignalStrengthGsm$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthGsm;
 HSPLandroid/telephony/CellSignalStrengthGsm$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthGsm;-><init>()V
-HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(III)V
-HSPLandroid/telephony/CellSignalStrengthGsm;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthGsm$1;)V
 HSPLandroid/telephony/CellSignalStrengthGsm;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellSignalStrengthGsm;->getLevel()I
-HSPLandroid/telephony/CellSignalStrengthGsm;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthGsm;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/CellSignalStrengthLte$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrengthGsm;->isValid()Z
 HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthLte;
 HSPLandroid/telephony/CellSignalStrengthLte$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthLte;-><init>()V
-HSPLandroid/telephony/CellSignalStrengthLte;-><init>(IIIIII)V
-HSPLandroid/telephony/CellSignalStrengthLte;-><init>(Landroid/hardware/radio/V1_0/LteSignalStrength;)V
 HSPLandroid/telephony/CellSignalStrengthLte;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellSignalStrengthLte;->convertRssiAsuToDBm(I)I
-HSPLandroid/telephony/CellSignalStrengthLte;->copyFrom(Landroid/telephony/CellSignalStrengthLte;)V
-HSPLandroid/telephony/CellSignalStrengthLte;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthLte;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthLte$1;)V
 HSPLandroid/telephony/CellSignalStrengthLte;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellSignalStrengthLte;->getDbm()I
 HSPLandroid/telephony/CellSignalStrengthLte;->getLevel()I
-HSPLandroid/telephony/CellSignalStrengthLte;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthLte;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/CellSignalStrengthLte;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellSignalStrengthNr$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrengthLte;->isValid()Z
 HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthNr;
 HSPLandroid/telephony/CellSignalStrengthNr$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthNr;-><init>()V
 HSPLandroid/telephony/CellSignalStrengthNr;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellSignalStrengthNr;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthNr;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthNr$1;)V
 HSPLandroid/telephony/CellSignalStrengthNr;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellSignalStrengthNr;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthNr;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/CellSignalStrengthNr;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/CellSignalStrengthTdscdma$1;-><init>()V
 HSPLandroid/telephony/CellSignalStrengthTdscdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthTdscdma;
 HSPLandroid/telephony/CellSignalStrengthTdscdma$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>()V
-HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>(III)V
-HSPLandroid/telephony/CellSignalStrengthTdscdma;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthTdscdma$1;)V
 HSPLandroid/telephony/CellSignalStrengthTdscdma;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/CellSignalStrengthTdscdma;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthTdscdma;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/CellSignalStrengthWcdma$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrengthTdscdma;->isValid()Z
 HSPLandroid/telephony/CellSignalStrengthWcdma$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellSignalStrengthWcdma;
 HSPLandroid/telephony/CellSignalStrengthWcdma$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>()V
-HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(IIII)V
-HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(Landroid/hardware/radio/V1_2/WcdmaSignalStrength;)V
 HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/CellSignalStrengthWcdma;->describeContents()I
+HSPLandroid/telephony/CellSignalStrengthWcdma;-><init>(Landroid/os/Parcel;Landroid/telephony/CellSignalStrengthWcdma$1;)V
 HSPLandroid/telephony/CellSignalStrengthWcdma;->equals(Ljava/lang/Object;)Z
-HPLandroid/telephony/CellSignalStrengthWcdma;->getDbm()I
-HSPLandroid/telephony/CellSignalStrengthWcdma;->getLevel()I
-HSPLandroid/telephony/CellSignalStrengthWcdma;->toString()Ljava/lang/String;
-HSPLandroid/telephony/CellSignalStrengthWcdma;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/ClientRequestStats$1;-><init>()V
-HSPLandroid/telephony/ClientRequestStats;-><init>()V
-HSPLandroid/telephony/ClientRequestStats;->updateRequestHistograms(II)V
-HSPLandroid/telephony/DataFailCause$1;-><init>()V
-HSPLandroid/telephony/DataFailCause;->getFailCause(I)I
-HSPLandroid/telephony/DataFailCause;->isEventLoggable(I)Z
-HSPLandroid/telephony/DataFailCause;->isPermanentFailure(Landroid/content/Context;II)Z
-HSPLandroid/telephony/DataFailCause;->isRadioRestartFailure(Landroid/content/Context;II)Z
-HSPLandroid/telephony/DataFailCause;->toString(I)Ljava/lang/String;
-HSPLandroid/telephony/DataSpecificRegistrationInfo$1;-><init>()V
+HSPLandroid/telephony/CellSignalStrengthWcdma;->isValid()Z
 HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/DataSpecificRegistrationInfo;
 HSPLandroid/telephony/DataSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/DataSpecificRegistrationInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(Landroid/os/Parcel;Landroid/telephony/DataSpecificRegistrationInfo$1;)V
+HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(Landroid/telephony/DataSpecificRegistrationInfo;)V
+HSPLandroid/telephony/DataSpecificRegistrationInfo;->isUsingCarrierAggregation()Z
 HSPLandroid/telephony/DataSpecificRegistrationInfo;->toString()Ljava/lang/String;
-PLandroid/telephony/DisconnectCause;->toString(I)Ljava/lang/String;
-HSPLandroid/telephony/INetworkService$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/INetworkService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/INetworkService;
-HSPLandroid/telephony/INetworkServiceCallback$Stub;-><init>()V
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;-><init>()V
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->build()Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setCallingPackage(Ljava/lang/String;)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setCallingPid(I)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setCallingUid(I)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setMethod(Ljava/lang/String;)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setMinSdkVersionForCoarse(I)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setMinSdkVersionForFine(I)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionResult;-><init>(Ljava/lang/String;I)V
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionResult;->values()[Landroid/telephony/LocationAccessPolicy$LocationPermissionResult;
-HSPLandroid/telephony/LocationAccessPolicy;->checkAppLocationPermissionHelper(Landroid/content/Context;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;Ljava/lang/String;)Landroid/telephony/LocationAccessPolicy$LocationPermissionResult;
-HSPLandroid/telephony/LocationAccessPolicy;->checkLocationPermission(Landroid/content/Context;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)Landroid/telephony/LocationAccessPolicy$LocationPermissionResult;
-HSPLandroid/telephony/LocationAccessPolicy;->isAppAtLeastSdkVersion(Landroid/content/Context;Ljava/lang/String;I)Z
-HSPLandroid/telephony/LocationAccessPolicy;->isCurrentProfile(Landroid/content/Context;I)Z
-HSPLandroid/telephony/LocationAccessPolicy;->logError(Landroid/content/Context;Ljava/lang/String;)V
-HSPLandroid/telephony/LteVopsSupportInfo$1;-><init>()V
 HSPLandroid/telephony/LteVopsSupportInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/LteVopsSupportInfo;
 HSPLandroid/telephony/LteVopsSupportInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/LteVopsSupportInfo;-><init>(II)V
-HSPLandroid/telephony/ModemActivityInfo$1;-><init>()V
-HSPLandroid/telephony/ModemActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ModemActivityInfo;
-HSPLandroid/telephony/ModemActivityInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/ModemActivityInfo;-><init>(JII[III)V
-HSPLandroid/telephony/ModemActivityInfo;->getEnergyUsed()I
-HSPLandroid/telephony/ModemActivityInfo;->getIdleTimeMillis()I
-HSPLandroid/telephony/ModemActivityInfo;->getRxTimeMillis()I
-HSPLandroid/telephony/ModemActivityInfo;->getSleepTimeMillis()I
-HSPLandroid/telephony/ModemActivityInfo;->getTimestamp()J
-HSPLandroid/telephony/ModemActivityInfo;->getTxTimeMillis()[I
-HSPLandroid/telephony/ModemActivityInfo;->isEmpty()Z
-HSPLandroid/telephony/ModemActivityInfo;->isValid()Z
-HSPLandroid/telephony/ModemActivityInfo;->setEnergyUsed(I)V
-HSPLandroid/telephony/ModemActivityInfo;->setIdleTimeMillis(I)V
-HSPLandroid/telephony/ModemActivityInfo;->setRxTimeMillis(I)V
-HSPLandroid/telephony/ModemActivityInfo;->setSleepTimeMillis(I)V
-HSPLandroid/telephony/ModemActivityInfo;->setTimestamp(J)V
-HSPLandroid/telephony/ModemActivityInfo;->setTxTimeMillis([I)V
-HSPLandroid/telephony/ModemActivityInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ModemActivityInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/ModemInfo$1;-><init>()V
-HSPLandroid/telephony/ModemInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ModemInfo;
-HSPLandroid/telephony/ModemInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/ModemInfo;-><init>(IIZZ)V
-HSPLandroid/telephony/ModemInfo;->hashCode()I
-HSPLandroid/telephony/ModemInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ModemInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/NetworkRegistrationInfo$1;-><init>()V
+HSPLandroid/telephony/LteVopsSupportInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telephony/LteVopsSupportInfo;-><init>(Landroid/os/Parcel;Landroid/telephony/LteVopsSupportInfo$1;)V
+HSPLandroid/telephony/LteVopsSupportInfo;->toString()Ljava/lang/String;
 HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/NetworkRegistrationInfo;
 HSPLandroid/telephony/NetworkRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;)V
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;IZZZLandroid/telephony/LteVopsSupportInfo;)V
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;ZIII)V
 HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/NetworkRegistrationInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(Landroid/os/Parcel;Landroid/telephony/NetworkRegistrationInfo$1;)V
+HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(Landroid/telephony/NetworkRegistrationInfo;)V
+HSPLandroid/telephony/NetworkRegistrationInfo;->domainToString(I)Ljava/lang/String;
 HSPLandroid/telephony/NetworkRegistrationInfo;->getAccessNetworkTechnology()I
-HSPLandroid/telephony/NetworkRegistrationInfo;->getRegistrationState()I
+HSPLandroid/telephony/NetworkRegistrationInfo;->getDataSpecificInfo()Landroid/telephony/DataSpecificRegistrationInfo;
+HSPLandroid/telephony/NetworkRegistrationInfo;->getDomain()I
+HSPLandroid/telephony/NetworkRegistrationInfo;->getRoamingType()I
+HSPLandroid/telephony/NetworkRegistrationInfo;->getTransportType()I
 HSPLandroid/telephony/NetworkRegistrationInfo;->isInService()Z
+HSPLandroid/telephony/NetworkRegistrationInfo;->lambda$toString$0(Ljava/lang/Integer;)Ljava/lang/String;
+HSPLandroid/telephony/NetworkRegistrationInfo;->nrStateToString(I)Ljava/lang/String;
 HSPLandroid/telephony/NetworkRegistrationInfo;->registrationStateToString(I)Ljava/lang/String;
 HSPLandroid/telephony/NetworkRegistrationInfo;->serviceTypeToString(I)Ljava/lang/String;
 HSPLandroid/telephony/NetworkRegistrationInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/NetworkRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/NetworkService$INetworkServiceWrapper;->createNetworkServiceProvider(I)V
-HSPLandroid/telephony/NetworkService$INetworkServiceWrapper;->registerForNetworkRegistrationInfoChanged(ILandroid/telephony/INetworkServiceCallback;)V
-HSPLandroid/telephony/NetworkService$INetworkServiceWrapper;->requestNetworkRegistrationInfo(IILandroid/telephony/INetworkServiceCallback;)V
-HSPLandroid/telephony/NetworkService$NetworkServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/telephony/NetworkService$NetworkServiceProvider;-><init>(Landroid/telephony/NetworkService;I)V
-HSPLandroid/telephony/NetworkService$NetworkServiceProvider;->notifyInfoChangedToCallbacks()V
-HSPLandroid/telephony/NetworkService$NetworkServiceProvider;->notifyNetworkRegistrationInfoChanged()V
-HSPLandroid/telephony/NetworkService$NetworkServiceProvider;->registerForInfoChanged(Landroid/telephony/INetworkServiceCallback;)V
-HSPLandroid/telephony/NetworkService;-><init>()V
-HSPLandroid/telephony/NetworkService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/telephony/NetworkServiceCallback;->onRequestNetworkRegistrationInfoComplete(ILandroid/telephony/NetworkRegistrationInfo;)V
-HSPLandroid/telephony/PhoneCapability$1;-><init>()V
-HSPLandroid/telephony/PhoneCapability$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/PhoneCapability;
-HSPLandroid/telephony/PhoneCapability$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/PhoneCapability;-><init>(IIILjava/util/List;Z)V
-HSPLandroid/telephony/PhoneCapability;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/PhoneCapability;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/PhoneCapability;->hashCode()I
-HSPLandroid/telephony/PhoneCapability;->toString()Ljava/lang/String;
-HSPLandroid/telephony/PhoneCapability;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/PhoneNumberUtils;->bcdToChar(BI)C
-HSPLandroid/telephony/PhoneNumberUtils;->calledPartyBCDToString([BIII)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->compare(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->compareLoosely(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->convertKeypadLettersToDigits(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->createTtsSpan(Ljava/lang/String;)Landroid/text/style/TtsSpan;
-HSPLandroid/telephony/PhoneNumberUtils;->createTtsSpannable(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortion(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->extractNetworkPortionAlt(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->extractPostDialPortion(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Landroid/text/Editable;I)V
-HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->formatNumber(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->formatNumberInternal(Ljava/lang/String;Ljava/lang/String;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->formatNumberToE164(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->getFormatTypeFromCountryCode(Ljava/lang/String;)I
-HSPLandroid/telephony/PhoneNumberUtils;->internalCalledPartyBCDFragmentToString(Ljava/lang/StringBuilder;[BIII)V
-HSPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumber(Ljava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->isGlobalPhoneNumber(Ljava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumber(Landroid/content/Context;Ljava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->isLocalEmergencyNumberInternal(ILjava/lang/String;Landroid/content/Context;Z)Z
-HSPLandroid/telephony/PhoneNumberUtils;->isNonSeparator(C)Z
-HPLandroid/telephony/PhoneNumberUtils;->isUriNumber(Ljava/lang/String;)Z
-HPLandroid/telephony/PhoneNumberUtils;->isVoiceMailNumber(Landroid/content/Context;ILjava/lang/String;)Z
-HSPLandroid/telephony/PhoneNumberUtils;->normalizeNumber(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->splitAtNonNumerics(Ljava/lang/CharSequence;)Ljava/lang/String;
-HPLandroid/telephony/PhoneNumberUtils;->stringFromStringAndTOA(Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/telephony/PhoneNumberUtils;->stripSeparators(Ljava/lang/String;)Ljava/lang/String;
-HPLandroid/telephony/PhoneNumberUtils;->toaFromString(Ljava/lang/String;)I
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCallForwardingIndicatorChanged$7$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Z)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;-><init>(Landroid/telephony/PhoneStateListener;Ljava/util/concurrent/Executor;)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$54(Landroid/telephony/PhoneStateListener;I)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$55$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;I)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCallStateChanged$10(Landroid/telephony/PhoneStateListener;ILjava/lang/String;)V
 HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCallStateChanged$11$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;ILjava/lang/String;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCellInfoChanged$21$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Ljava/util/List;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCellLocationChanged$9$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/CellLocation;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onDataActivity$15$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;I)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onDataConnectionStateChanged$13$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;II)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onMessageWaitingIndicatorChanged$5$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Z)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onPhoneCapabilityChanged$47$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/PhoneCapability;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onPreciseCallStateChanged$23$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/PreciseCallState;)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onServiceStateChanged$0(Landroid/telephony/PhoneStateListener;Landroid/telephony/ServiceState;)V
 HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onServiceStateChanged$1$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onSignalStrengthsChanged$17$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/SignalStrength;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCallForwardingIndicatorChanged(Z)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onSignalStrengthsChanged$18(Landroid/telephony/PhoneStateListener;Landroid/telephony/SignalStrength;)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onSignalStrengthsChanged$19$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Landroid/telephony/SignalStrength;)V
+HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onActiveDataSubIdChanged(I)V
 HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCallStateChanged(ILjava/lang/String;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCellInfoChanged(Ljava/util/List;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCellLocationChanged(Landroid/os/Bundle;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onDataActivity(I)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onDataConnectionStateChanged(II)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onMessageWaitingIndicatorChanged(Z)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V
 HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
 HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V
 HSPLandroid/telephony/PhoneStateListener;-><init>()V
-HSPLandroid/telephony/PhoneStateListener;-><init>(Landroid/os/Looper;)V
 HSPLandroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;Landroid/os/Looper;)V
-HSPLandroid/telephony/PhoneStateListener;->onDataConnectionStateChanged(I)V
-HSPLandroid/telephony/PhysicalChannelConfig$1;-><init>()V
-HSPLandroid/telephony/PhysicalChannelConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/PhysicalChannelConfig;
-HSPLandroid/telephony/PhysicalChannelConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/PhysicalChannelConfig$Builder;-><init>()V
-HSPLandroid/telephony/PhysicalChannelConfig$Builder;->build()Landroid/telephony/PhysicalChannelConfig;
-HSPLandroid/telephony/PhysicalChannelConfig;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/PhysicalChannelConfig;-><init>(Landroid/telephony/PhysicalChannelConfig$Builder;)V
-HSPLandroid/telephony/PhysicalChannelConfig;->getConnectionStatusString()Ljava/lang/String;
-HSPLandroid/telephony/PhysicalChannelConfig;->toString()Ljava/lang/String;
-HSPLandroid/telephony/PhysicalChannelConfig;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/PreciseCallState$1;-><init>()V
-HSPLandroid/telephony/PreciseCallState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/PreciseCallState;
-HSPLandroid/telephony/PreciseCallState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/PreciseCallState;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/PreciseCallState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/PreciseDataConnectionState$1;-><init>()V
-HSPLandroid/telephony/PreciseDataConnectionState;-><init>(IIILjava/lang/String;Landroid/net/LinkProperties;I)V
-HPLandroid/telephony/PreciseDataConnectionState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/RadioAccessFamily$1;-><init>()V
-HSPLandroid/telephony/RadioAccessFamily;->getAdjustedRaf(I)I
-HSPLandroid/telephony/RadioAccessFamily;->getNetworkTypeFromRaf(I)I
-HSPLandroid/telephony/RadioAccessFamily;->getRadioAccessFamily()I
-HSPLandroid/telephony/RadioAccessFamily;->getRafFromNetworkType(I)I
-HSPLandroid/telephony/Rlog;->d(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/telephony/Rlog;->e(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/telephony/Rlog;->i(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/telephony/Rlog;->isLoggable(Ljava/lang/String;I)Z
-HSPLandroid/telephony/Rlog;->pii(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/String;
-HSPLandroid/telephony/Rlog;->pii(ZLjava/lang/Object;)Ljava/lang/String;
-HSPLandroid/telephony/Rlog;->secureHash([B)Ljava/lang/String;
-HSPLandroid/telephony/Rlog;->v(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/telephony/ServiceState$1;-><init>()V
+HSPLandroid/telephony/PhoneStateListener;-><init>(Ljava/lang/Integer;Ljava/util/concurrent/Executor;)V
+HSPLandroid/telephony/PhoneStateListener;-><init>(Ljava/util/concurrent/Executor;)V
 HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ServiceState;
 HSPLandroid/telephony/ServiceState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/telephony/ServiceState;-><init>()V
 HSPLandroid/telephony/ServiceState;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/ServiceState;-><init>(Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/ServiceState;->addNetworkRegistrationInfo(Landroid/telephony/NetworkRegistrationInfo;)V
-HSPLandroid/telephony/ServiceState;->convertBearerBitmaskToNetworkTypeBitmask(I)I
-HSPLandroid/telephony/ServiceState;->convertNetworkTypeBitmaskToBearerBitmask(I)I
 HSPLandroid/telephony/ServiceState;->copyFrom(Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/ServiceState;->describeContents()I
-HSPLandroid/telephony/ServiceState;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/ServiceState;->getCdmaDefaultRoamingIndicator()I
-HSPLandroid/telephony/ServiceState;->getCdmaEriIconIndex()I
-HSPLandroid/telephony/ServiceState;->getCdmaEriIconMode()I
-HSPLandroid/telephony/ServiceState;->getCdmaNetworkId()I
-HSPLandroid/telephony/ServiceState;->getCdmaRoamingIndicator()I
-HSPLandroid/telephony/ServiceState;->getCdmaSystemId()I
-HSPLandroid/telephony/ServiceState;->getCellBandwidths()[I
-HSPLandroid/telephony/ServiceState;->getCssIndicator()I
 HSPLandroid/telephony/ServiceState;->getDataNetworkType()I
-HSPLandroid/telephony/ServiceState;->getDataOperatorAlphaLong()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getDataOperatorAlphaShort()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getDataOperatorNumeric()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getDataRegState()I
-HSPLandroid/telephony/ServiceState;->getDataRoaming()Z
-HSPLandroid/telephony/ServiceState;->getDataRoamingFromRegistration()Z
 HSPLandroid/telephony/ServiceState;->getDataRoamingType()I
 HSPLandroid/telephony/ServiceState;->getDuplexMode()I
-HSPLandroid/telephony/ServiceState;->getIsManualSelection()Z
-HSPLandroid/telephony/ServiceState;->getLteEarfcnRsrpBoost()I
 HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfo(II)Landroid/telephony/NetworkRegistrationInfo;
-HSPLandroid/telephony/ServiceState;->getNrFrequencyRange()I
-HSPLandroid/telephony/ServiceState;->getNrState()I
-HSPLandroid/telephony/ServiceState;->getOperatorAlpha()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getOperatorAlphaLong()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getOperatorNumeric()Ljava/lang/String;
+HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfoList()Ljava/util/List;
 HSPLandroid/telephony/ServiceState;->getRilDataRadioTechnology()I
 HSPLandroid/telephony/ServiceState;->getRilVoiceRadioTechnology()I
-HSPLandroid/telephony/ServiceState;->getRoaming()Z
 HSPLandroid/telephony/ServiceState;->getState()I
-HSPLandroid/telephony/ServiceState;->getVoiceNetworkType()I
-HSPLandroid/telephony/ServiceState;->getVoiceOperatorAlphaLong()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getVoiceOperatorAlphaShort()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->getVoiceOperatorNumeric()Ljava/lang/String;
 HSPLandroid/telephony/ServiceState;->getVoiceRegState()I
-HSPLandroid/telephony/ServiceState;->getVoiceRoaming()Z
 HSPLandroid/telephony/ServiceState;->getVoiceRoamingType()I
-HSPLandroid/telephony/ServiceState;->isEmergencyOnly()Z
-HSPLandroid/telephony/ServiceState;->isGsm(I)Z
 HSPLandroid/telephony/ServiceState;->isUsingCarrierAggregation()Z
 HSPLandroid/telephony/ServiceState;->networkTypeToRilRadioTechnology(I)I
-HSPLandroid/telephony/ServiceState;->newFromBundle(Landroid/os/Bundle;)Landroid/telephony/ServiceState;
-HSPLandroid/telephony/ServiceState;->rilRadioTechnologyToAccessNetworkType(I)I
-HSPLandroid/telephony/ServiceState;->rilRadioTechnologyToNetworkType(I)I
 HSPLandroid/telephony/ServiceState;->rilRadioTechnologyToString(I)Ljava/lang/String;
+HSPLandroid/telephony/ServiceState;->rilServiceStateToString(I)Ljava/lang/String;
 HSPLandroid/telephony/ServiceState;->roamingTypeToString(I)Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->sanitizeLocationInfo(Z)Landroid/telephony/ServiceState;
-HSPLandroid/telephony/ServiceState;->setCdmaDefaultRoamingIndicator(I)V
-HSPLandroid/telephony/ServiceState;->setCdmaEriIconIndex(I)V
-HSPLandroid/telephony/ServiceState;->setCdmaEriIconMode(I)V
-HSPLandroid/telephony/ServiceState;->setCdmaRoamingIndicator(I)V
-HSPLandroid/telephony/ServiceState;->setCdmaSystemAndNetworkId(II)V
-HSPLandroid/telephony/ServiceState;->setCellBandwidths([I)V
-HSPLandroid/telephony/ServiceState;->setChannelNumber(I)V
-HSPLandroid/telephony/ServiceState;->setCssIndicator(I)V
-HSPLandroid/telephony/ServiceState;->setDataOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telephony/ServiceState;->setDataRegState(I)V
-HSPLandroid/telephony/ServiceState;->setDataRoaming(Z)V
-HSPLandroid/telephony/ServiceState;->setDataRoamingType(I)V
-HSPLandroid/telephony/ServiceState;->setEmergencyOnly(Z)V
-HSPLandroid/telephony/ServiceState;->setIsManualSelection(Z)V
-HSPLandroid/telephony/ServiceState;->setIsUsingCarrierAggregation(Z)V
-HSPLandroid/telephony/ServiceState;->setLteEarfcnRsrpBoost(I)V
-HSPLandroid/telephony/ServiceState;->setNrFrequencyRange(I)V
-HSPLandroid/telephony/ServiceState;->setNullState(I)V
-HSPLandroid/telephony/ServiceState;->setOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telephony/ServiceState;->setRilDataRadioTechnology(I)V
-HSPLandroid/telephony/ServiceState;->setRilVoiceRadioTechnology(I)V
-HSPLandroid/telephony/ServiceState;->setStateOff()V
-HSPLandroid/telephony/ServiceState;->setStateOutOfService()V
-HSPLandroid/telephony/ServiceState;->setVoiceOperatorName(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telephony/ServiceState;->setVoiceRegState(I)V
-HSPLandroid/telephony/ServiceState;->setVoiceRoaming(Z)V
-HSPLandroid/telephony/ServiceState;->setVoiceRoamingType(I)V
 HSPLandroid/telephony/ServiceState;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/SignalStrength$1;-><init>()V
 HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SignalStrength;
 HSPLandroid/telephony/SignalStrength$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/SignalStrength;-><init>()V
-HSPLandroid/telephony/SignalStrength;-><init>(Landroid/hardware/radio/V1_2/SignalStrength;)V
 HSPLandroid/telephony/SignalStrength;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/SignalStrength;-><init>(Landroid/telephony/SignalStrength;)V
-HSPLandroid/telephony/SignalStrength;->copyFrom(Landroid/telephony/SignalStrength;)V
-HSPLandroid/telephony/SignalStrength;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/SignalStrength;->fillInNotifierBundle(Landroid/os/Bundle;)V
-HPLandroid/telephony/SignalStrength;->getCellSignalStrengths()Ljava/util/List;
-HPLandroid/telephony/SignalStrength;->getCellSignalStrengths(Ljava/lang/Class;)Ljava/util/List;
 HSPLandroid/telephony/SignalStrength;->getLevel()I
 HSPLandroid/telephony/SignalStrength;->getPrimary()Landroid/telephony/CellSignalStrength;
-HSPLandroid/telephony/SignalStrength;->isGsm()Z
-HSPLandroid/telephony/SignalStrength;->toString()Ljava/lang/String;
-HSPLandroid/telephony/SignalStrength;->updateLevel(Landroid/os/PersistableBundle;Landroid/telephony/ServiceState;)V
-HSPLandroid/telephony/SignalStrength;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/SmsManager;-><init>(I)V
-HPLandroid/telephony/SmsManager;->getAutoPersisting()Z
-HSPLandroid/telephony/SmsManager;->getDefault()Landroid/telephony/SmsManager;
-HSPLandroid/telephony/SmsManager;->getMmsConfig(Landroid/os/BaseBundle;)Landroid/os/Bundle;
-PLandroid/telephony/SmsMessage;->createFromPdu([BLjava/lang/String;)Landroid/telephony/SmsMessage;
-HSPLandroid/telephony/SmsMessage;->createFromPdu([BLjava/lang/String;Z)Landroid/telephony/SmsMessage;
-HSPLandroid/telephony/SubscriptionInfo$1;-><init>()V
 HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/SubscriptionInfo;
 HSPLandroid/telephony/SubscriptionInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/SubscriptionInfo;-><init>(ILjava/lang/String;ILjava/lang/CharSequence;Ljava/lang/CharSequence;IILjava/lang/String;ILandroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z[Landroid/telephony/UiccAccessRule;Ljava/lang/String;IZLjava/lang/String;ZIII)V
-HSPLandroid/telephony/SubscriptionInfo;->getCarrierId()I
-HSPLandroid/telephony/SubscriptionInfo;->getCarrierName()Ljava/lang/CharSequence;
-HSPLandroid/telephony/SubscriptionInfo;->getCountryIso()Ljava/lang/String;
-HSPLandroid/telephony/SubscriptionInfo;->getDisplayName()Ljava/lang/CharSequence;
+HSPLandroid/telephony/SubscriptionInfo;-><init>(ILjava/lang/String;ILjava/lang/CharSequence;Ljava/lang/CharSequence;IILjava/lang/String;ILandroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z[Landroid/telephony/UiccAccessRule;Ljava/lang/String;IZLjava/lang/String;ZIIILjava/lang/String;[Landroid/telephony/UiccAccessRule;Z)V
 HSPLandroid/telephony/SubscriptionInfo;->getGroupUuid()Landroid/os/ParcelUuid;
 HSPLandroid/telephony/SubscriptionInfo;->getIccId()Ljava/lang/String;
 HSPLandroid/telephony/SubscriptionInfo;->getMcc()I
 HSPLandroid/telephony/SubscriptionInfo;->getMnc()I
-HSPLandroid/telephony/SubscriptionInfo;->getNameSource()I
 HSPLandroid/telephony/SubscriptionInfo;->getNumber()Ljava/lang/String;
 HSPLandroid/telephony/SubscriptionInfo;->getSimSlotIndex()I
 HSPLandroid/telephony/SubscriptionInfo;->getSubscriptionId()I
-HSPLandroid/telephony/SubscriptionInfo;->givePrintableIccid(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/SubscriptionInfo;->isEmbedded()Z
 HSPLandroid/telephony/SubscriptionInfo;->isOpportunistic()Z
-HSPLandroid/telephony/SubscriptionInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/SubscriptionInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/SubscriptionManager$OnOpportunisticSubscriptionsChangedListener;-><init>()V
-HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1;->onSubscriptionsChanged()V
-HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;->handleMessage(Landroid/os/Message;)V
+HSPLandroid/telephony/SubscriptionInfo;->setAssociatedPlmns([Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;-><init>(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
 HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;-><init>()V
-HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;-><init>(Landroid/os/Looper;)V
-HSPLandroid/telephony/SubscriptionManager;->addOnOpportunisticSubscriptionsChangedListener(Ljava/util/concurrent/Executor;Landroid/telephony/SubscriptionManager$OnOpportunisticSubscriptionsChangedListener;)V
+HSPLandroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;->access$000(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)Lcom/android/internal/telephony/util/HandlerExecutor;
+HSPLandroid/telephony/SubscriptionManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/telephony/SubscriptionManager;->addOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
-HSPLandroid/telephony/SubscriptionManager;->addSubscriptionInfoRecord(Ljava/lang/String;I)Landroid/net/Uri;
-HSPLandroid/telephony/SubscriptionManager;->addSubscriptionInfoRecord(Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/telephony/SubscriptionManager;->addOnSubscriptionsChangedListener(Ljava/util/concurrent/Executor;Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
 HSPLandroid/telephony/SubscriptionManager;->from(Landroid/content/Context;)Landroid/telephony/SubscriptionManager;
-HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionIdList()[I
+HSPLandroid/telephony/SubscriptionManager;->getActiveDataSubscriptionId()I
 HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfo(I)Landroid/telephony/SubscriptionInfo;
-HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoForSimSlotIndex(I)Landroid/telephony/SubscriptionInfo;
 HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoList()Ljava/util/List;
 HSPLandroid/telephony/SubscriptionManager;->getActiveSubscriptionInfoList(Z)Ljava/util/List;
-HSPLandroid/telephony/SubscriptionManager;->getDefaultDataPhoneId()I
 HSPLandroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionId()I
-HSPLandroid/telephony/SubscriptionManager;->getDefaultDataSubscriptionInfo()Landroid/telephony/SubscriptionInfo;
 HSPLandroid/telephony/SubscriptionManager;->getDefaultSmsSubscriptionId()I
 HSPLandroid/telephony/SubscriptionManager;->getDefaultSubscriptionId()I
-HSPLandroid/telephony/SubscriptionManager;->getDefaultVoicePhoneId()I
 HSPLandroid/telephony/SubscriptionManager;->getDefaultVoiceSubscriptionId()I
-HSPLandroid/telephony/SubscriptionManager;->getIntegerSubscriptionProperty(ILjava/lang/String;ILandroid/content/Context;)I
-HSPLandroid/telephony/SubscriptionManager;->getOpportunisticSubscriptions()Ljava/util/List;
 HSPLandroid/telephony/SubscriptionManager;->getPhoneId(I)I
 HSPLandroid/telephony/SubscriptionManager;->getResourcesForSubId(Landroid/content/Context;I)Landroid/content/res/Resources;
 HSPLandroid/telephony/SubscriptionManager;->getResourcesForSubId(Landroid/content/Context;IZ)Landroid/content/res/Resources;
 HSPLandroid/telephony/SubscriptionManager;->getSimStateForSlotIndex(I)I
 HSPLandroid/telephony/SubscriptionManager;->getSlotIndex(I)I
-HSPLandroid/telephony/SubscriptionManager;->getSubId(I)[I
-HSPLandroid/telephony/SubscriptionManager;->getSubscriptionProperty(ILjava/lang/String;Landroid/content/Context;)Ljava/lang/String;
-HSPLandroid/telephony/SubscriptionManager;->getUriForSubscriptionId(I)Landroid/net/Uri;
-HSPLandroid/telephony/SubscriptionManager;->isActiveSubId(I)Z
 HSPLandroid/telephony/SubscriptionManager;->isSubscriptionVisible(Landroid/telephony/SubscriptionInfo;)Z
 HSPLandroid/telephony/SubscriptionManager;->isUsableSubIdValue(I)Z
-HSPLandroid/telephony/SubscriptionManager;->isValidPhoneId(I)Z
-HSPLandroid/telephony/SubscriptionManager;->isValidSlotIndex(I)Z
 HSPLandroid/telephony/SubscriptionManager;->isValidSubscriptionId(I)Z
 HSPLandroid/telephony/SubscriptionManager;->lambda$getActiveSubscriptionInfoList$0$SubscriptionManager(Landroid/telephony/SubscriptionInfo;)Z
-HSPLandroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;I)V
-HSPLandroid/telephony/SubscriptionManager;->putPhoneIdAndSubIdExtra(Landroid/content/Intent;II)V
-HSPLandroid/telephony/SubscriptionManager;->removeOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
-HSPLandroid/telephony/SubscriptionManager;->setDefaultDataSubId(I)V
-HSPLandroid/telephony/SubscriptionPlan$1;-><init>()V
-HSPLandroid/telephony/SubscriptionPlan$1;->newArray(I)[Landroid/telephony/SubscriptionPlan;
-HSPLandroid/telephony/SubscriptionPlan$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/telephony/TelephonyHistogram$1;-><init>()V
-HSPLandroid/telephony/TelephonyHistogram;-><init>(III)V
-HPLandroid/telephony/TelephonyHistogram;-><init>(Landroid/telephony/TelephonyHistogram;)V
-HSPLandroid/telephony/TelephonyHistogram;->addTimeTaken(I)V
-HPLandroid/telephony/TelephonyHistogram;->getBucketCounters()[I
-HPLandroid/telephony/TelephonyHistogram;->getBucketEndPoints()[I
-HSPLandroid/telephony/TelephonyManager$MultiSimVariants;-><init>(Ljava/lang/String;I)V
-HSPLandroid/telephony/TelephonyManager$MultiSimVariants;->values()[Landroid/telephony/TelephonyManager$MultiSimVariants;
-HSPLandroid/telephony/TelephonyManager;-><init>()V
+HSPLandroid/telephony/TelephonyFrameworkInitializer;->getTelephonyServiceManager()Landroid/os/TelephonyServiceManager;
+HSPLandroid/telephony/TelephonyFrameworkInitializer;->lambda$registerServiceWrappers$0(Landroid/content/Context;)Landroid/telephony/TelephonyManager;
+HSPLandroid/telephony/TelephonyFrameworkInitializer;->lambda$registerServiceWrappers$1(Landroid/content/Context;)Landroid/telephony/SubscriptionManager;
+HSPLandroid/telephony/TelephonyFrameworkInitializer;->lambda$registerServiceWrappers$2(Landroid/content/Context;)Landroid/telephony/CarrierConfigManager;
+HSPLandroid/telephony/TelephonyFrameworkInitializer;->setTelephonyServiceManager(Landroid/os/TelephonyServiceManager;)V
 HSPLandroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;)V
 HSPLandroid/telephony/TelephonyManager;-><init>(Landroid/content/Context;I)V
-HSPLandroid/telephony/TelephonyManager;->checkCarrierPrivilegesForPackage(Ljava/lang/String;)I
 HSPLandroid/telephony/TelephonyManager;->checkCarrierPrivilegesForPackageAnyPhone(Ljava/lang/String;)I
-HSPLandroid/telephony/TelephonyManager;->createForPhoneAccountHandle(Landroid/telecom/PhoneAccountHandle;)Landroid/telephony/TelephonyManager;
 HSPLandroid/telephony/TelephonyManager;->createForSubscriptionId(I)Landroid/telephony/TelephonyManager;
-HSPLandroid/telephony/TelephonyManager;->enableIms(I)V
-HSPLandroid/telephony/TelephonyManager;->from(Landroid/content/Context;)Landroid/telephony/TelephonyManager;
-HPLandroid/telephony/TelephonyManager;->getActiveVisualVoicemailSmsFilterSettings(I)Landroid/telephony/VisualVoicemailSmsFilterSettings;
-HSPLandroid/telephony/TelephonyManager;->getAllCellInfo()Ljava/util/List;
+HSPLandroid/telephony/TelephonyManager;->getActiveModemCount()I
 HSPLandroid/telephony/TelephonyManager;->getCallState()I
-HSPLandroid/telephony/TelephonyManager;->getCardIdForDefaultEuicc()I
-HSPLandroid/telephony/TelephonyManager;->getCarrierConfig()Landroid/os/PersistableBundle;
-HPLandroid/telephony/TelephonyManager;->getCarrierIdFromSimMccMnc()I
-HSPLandroid/telephony/TelephonyManager;->getCarrierInfoForImsiEncryption(I)Landroid/telephony/ImsiEncryptionInfo;
-HSPLandroid/telephony/TelephonyManager;->getCarrierPackageNamesForIntentAndPhone(Landroid/content/Intent;I)Ljava/util/List;
-HSPLandroid/telephony/TelephonyManager;->getCertsFromCarrierPrivilegeAccessRules()Ljava/util/List;
 HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneType()I
 HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneType(I)I
 HSPLandroid/telephony/TelephonyManager;->getCurrentPhoneTypeForSlot(I)I
-HSPLandroid/telephony/TelephonyManager;->getDataEnabled()Z
 HSPLandroid/telephony/TelephonyManager;->getDataEnabled(I)Z
-HSPLandroid/telephony/TelephonyManager;->getDataNetworkType()I
-HSPLandroid/telephony/TelephonyManager;->getDataNetworkType(I)I
-HSPLandroid/telephony/TelephonyManager;->getDataState()I
 HSPLandroid/telephony/TelephonyManager;->getDefault()Landroid/telephony/TelephonyManager;
-HSPLandroid/telephony/TelephonyManager;->getEmergencyNumberList()Ljava/util/Map;
+HSPLandroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String;
+HSPLandroid/telephony/TelephonyManager;->getFeatureId()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getGroupIdLevel1()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getImei()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getImei(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLandroid/telephony/TelephonyManager;->getImsMmTelFeatureAndListen(ILcom/android/ims/internal/IImsServiceFeatureCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLandroid/telephony/TelephonyManager;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLandroid/telephony/TelephonyManager;->getIsimIst()Ljava/lang/String;
+HSPLandroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony;
 HSPLandroid/telephony/TelephonyManager;->getLine1Number()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getLine1Number(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getMergedSubscriberIds()[Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getMultiSimConfiguration()Landroid/telephony/TelephonyManager$MultiSimVariants;
 HSPLandroid/telephony/TelephonyManager;->getNetworkCountryIso()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getNetworkCountryIsoForPhone(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getNetworkOperator()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorForPhone(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorName()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getNetworkOperatorName(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getNetworkType()I
-HSPLandroid/telephony/TelephonyManager;->getNetworkTypeName(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getNumberOfModemsWithSimultaneousDataConnections()I
-HSPLandroid/telephony/TelephonyManager;->getOtaSpNumberSchemaForPhone(ILjava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getPackagesWithCarrierPrivileges()Ljava/util/List;
+HSPLandroid/telephony/TelephonyManager;->getNetworkType(I)I
+HSPLandroid/telephony/TelephonyManager;->getOpPackageName()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getPhoneCount()I
+HSPLandroid/telephony/TelephonyManager;->getPhoneId()I
 HSPLandroid/telephony/TelephonyManager;->getPhoneType()I
 HSPLandroid/telephony/TelephonyManager;->getPhoneType(I)I
-HSPLandroid/telephony/TelephonyManager;->getProcCmdLine()Ljava/lang/String;
+HSPLandroid/telephony/TelephonyManager;->getPhoneTypeFromNetworkType(I)I
+HSPLandroid/telephony/TelephonyManager;->getPhoneTypeFromProperty(I)I
 HSPLandroid/telephony/TelephonyManager;->getServiceState()Landroid/telephony/ServiceState;
 HSPLandroid/telephony/TelephonyManager;->getServiceStateForSubscriber(I)Landroid/telephony/ServiceState;
-HPLandroid/telephony/TelephonyManager;->getSignalStrength()Landroid/telephony/SignalStrength;
-HSPLandroid/telephony/TelephonyManager;->getSimApplicationState()I
-HSPLandroid/telephony/TelephonyManager;->getSimCarrierId()I
-HSPLandroid/telephony/TelephonyManager;->getSimCount()I
 HSPLandroid/telephony/TelephonyManager;->getSimCountryIso()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimCountryIsoForPhone(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperator()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getSimOperator(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperatorName()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getSimOperatorName(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperatorNameForPhone(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumeric()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumeric(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimOperatorNumericForPhone(I)Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSimState()I
-HSPLandroid/telephony/TelephonyManager;->getSimState(I)I
 HSPLandroid/telephony/TelephonyManager;->getSimStateIncludingLoaded()I
 HSPLandroid/telephony/TelephonyManager;->getSlotIndex()I
-HSPLandroid/telephony/TelephonyManager;->getSmsReceiveCapableForPhone(IZ)Z
-HSPLandroid/telephony/TelephonyManager;->getSmsSendCapableForPhone(IZ)Z
-HSPLandroid/telephony/TelephonyManager;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I
-HSPLandroid/telephony/TelephonyManager;->getSubIdForPhoneAccountHandle(Landroid/telecom/PhoneAccountHandle;)I
+HSPLandroid/telephony/TelephonyManager;->getSubId()I
+HSPLandroid/telephony/TelephonyManager;->getSubId(I)I
 HSPLandroid/telephony/TelephonyManager;->getSubscriberId()Ljava/lang/String;
 HSPLandroid/telephony/TelephonyManager;->getSubscriberId(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getTetherApnRequired()Z
-HSPLandroid/telephony/TelephonyManager;->getTetherApnRequired(I)Z
-HSPLandroid/telephony/TelephonyManager;->getUiccCardsInfo()Ljava/util/List;
-HSPLandroid/telephony/TelephonyManager;->getVisualVoicemailPackageName()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getVoiceMailNumber(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType()I
-HSPLandroid/telephony/TelephonyManager;->getVoiceNetworkType(I)I
-HSPLandroid/telephony/TelephonyManager;->getVtDataUsage(I)Landroid/net/NetworkStats;
-HSPLandroid/telephony/TelephonyManager;->isDataCapable()Z
+HSPLandroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo;
+HSPLandroid/telephony/TelephonyManager;->getTelephonyProperty(ILjava/util/List;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/telephony/TelephonyManager;->getTelephonyRegistry()Lcom/android/internal/telephony/ITelephonyRegistry;
 HSPLandroid/telephony/TelephonyManager;->isDataEnabled()Z
-HSPLandroid/telephony/TelephonyManager;->isEmergencyNumber(Ljava/lang/String;)Z
-HSPLandroid/telephony/TelephonyManager;->isImsiEncryptionRequired(II)Z
-HSPLandroid/telephony/TelephonyManager;->isMultiSimEnabled()Z
 HSPLandroid/telephony/TelephonyManager;->isNetworkRoaming()Z
 HSPLandroid/telephony/TelephonyManager;->isNetworkRoaming(I)Z
 HSPLandroid/telephony/TelephonyManager;->isSmsCapable()Z
 HSPLandroid/telephony/TelephonyManager;->isVoiceCapable()Z
 HSPLandroid/telephony/TelephonyManager;->listen(Landroid/telephony/PhoneStateListener;I)V
-HSPLandroid/telephony/TelephonyManager;->requestModemActivityInfo(Landroid/os/ResultReceiver;)V
-HSPLandroid/telephony/TelephonyManager;->setBasebandVersionForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setDataNetworkTypeForPhone(II)V
-HSPLandroid/telephony/TelephonyManager;->setNetworkOperatorNameForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setNetworkOperatorNumericForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setNetworkRoamingForPhone(IZ)V
-HSPLandroid/telephony/TelephonyManager;->setPhoneType(II)V
-HSPLandroid/telephony/TelephonyManager;->setPolicyDataEnabled(ZI)V
-HSPLandroid/telephony/TelephonyManager;->setSimCountryIsoForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setSimOperatorNameForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setSimOperatorNumericForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setSimStateForPhone(ILjava/lang/String;)V
-HSPLandroid/telephony/TelephonyManager;->setTelephonyProperty(ILjava/lang/String;Ljava/lang/String;)V
-PLandroid/telephony/TelephonyScanManager$NetworkScanCallback;-><init>()V
-HSPLandroid/telephony/UiccAccessRule$1;-><init>()V
-HSPLandroid/telephony/UiccAccessRule$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/UiccAccessRule;
-HSPLandroid/telephony/UiccAccessRule$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Landroid/telephony/UiccAccessRule;
-HSPLandroid/telephony/UiccAccessRule$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/telephony/UiccCardInfo$1;-><init>()V
-HSPLandroid/telephony/UiccSlotInfo$1;-><init>()V
-HSPLandroid/telephony/UiccSlotInfo;-><init>(ZZLjava/lang/String;IIZZ)V
-HSPLandroid/telephony/UiccSlotInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;-><init>()V
+HSPLandroid/telephony/TelephonyRegistryManager$1;-><init>(Landroid/telephony/TelephonyRegistryManager;Ljava/util/concurrent/Executor;Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
+HSPLandroid/telephony/TelephonyRegistryManager$1;->lambda$onSubscriptionsChanged$0(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;)V
+HSPLandroid/telephony/TelephonyRegistryManager$1;->onSubscriptionsChanged()V
+HSPLandroid/telephony/TelephonyRegistryManager;-><init>(Landroid/content/Context;)V
+HSPLandroid/telephony/TelephonyRegistryManager;->addOnSubscriptionsChangedListener(Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;Ljava/util/concurrent/Executor;)V
+HSPLandroid/telephony/TelephonyRegistryManager;->listenForSubscriber(ILjava/lang/String;Ljava/lang/String;Landroid/telephony/PhoneStateListener;IZ)V
 HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/VoiceSpecificRegistrationInfo;
 HSPLandroid/telephony/VoiceSpecificRegistrationInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->equals(Ljava/lang/Object;)Z
+HSPLandroid/telephony/VoiceSpecificRegistrationInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/telephony/VoiceSpecificRegistrationInfo;-><init>(Landroid/os/Parcel;Landroid/telephony/VoiceSpecificRegistrationInfo$1;)V
+HSPLandroid/telephony/VoiceSpecificRegistrationInfo;-><init>(Landroid/telephony/VoiceSpecificRegistrationInfo;)V
 HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/VoiceSpecificRegistrationInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/data/ApnSetting$1;-><init>()V
-HSPLandroid/telephony/data/ApnSetting$Builder;-><init>()V
-HSPLandroid/telephony/data/ApnSetting$Builder;->access$2800(Landroid/telephony/data/ApnSetting$Builder;I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->buildWithoutCheck()Landroid/telephony/data/ApnSetting;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setApnName(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setApnSetId(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setApnTypeBitmask(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setAuthType(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setCarrierEnabled(Z)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setCarrierId(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setEntryName(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMaxConns(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMaxConnsTime(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMmsProxyAddress(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMmsProxyPort(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMmsc(Landroid/net/Uri;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setModemCognitive(Z)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMtu(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMvnoMatchData(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setMvnoType(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setNetworkTypeBitmask(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setOperatorNumeric(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setPassword(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setProfileId(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setProtocol(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setProxyAddress(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setProxyPort(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setRoamingProtocol(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setSkip464Xlat(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setUser(Ljava/lang/String;)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting$Builder;->setWaitTime(I)Landroid/telephony/data/ApnSetting$Builder;
-HSPLandroid/telephony/data/ApnSetting;-><init>(Landroid/telephony/data/ApnSetting$Builder;)V
-HSPLandroid/telephony/data/ApnSetting;->UriFromString(Ljava/lang/String;)Landroid/net/Uri;
-HSPLandroid/telephony/data/ApnSetting;->canHandleType(I)Z
-HSPLandroid/telephony/data/ApnSetting;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/data/ApnSetting;->equals(Ljava/lang/Object;Z)Z
-HSPLandroid/telephony/data/ApnSetting;->getApnName()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getApnTypeBitmask()I
-HSPLandroid/telephony/data/ApnSetting;->getApnTypeString(I)Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getApnTypesBitmaskFromString(Ljava/lang/String;)I
-HSPLandroid/telephony/data/ApnSetting;->getApnTypesStringFromBitmask(I)Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getAuthType()I
-HSPLandroid/telephony/data/ApnSetting;->getEntryName()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getId()I
-HSPLandroid/telephony/data/ApnSetting;->getMaxConns()I
-HSPLandroid/telephony/data/ApnSetting;->getMaxConnsTime()I
-HSPLandroid/telephony/data/ApnSetting;->getMtu()I
-HSPLandroid/telephony/data/ApnSetting;->getMvnoTypeIntFromString(Ljava/lang/String;)I
-HSPLandroid/telephony/data/ApnSetting;->getNetworkTypeBitmask()I
-HSPLandroid/telephony/data/ApnSetting;->getOperatorNumeric()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getPassword()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getPermanentFailed()Z
-HSPLandroid/telephony/data/ApnSetting;->getProfileId()I
-HSPLandroid/telephony/data/ApnSetting;->getProtocol()I
-HSPLandroid/telephony/data/ApnSetting;->getProtocolIntFromString(Ljava/lang/String;)I
-HSPLandroid/telephony/data/ApnSetting;->getProtocolStringFromInt(I)Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getProxyAddressAsString()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getProxyPort()I
-HSPLandroid/telephony/data/ApnSetting;->getRoamingProtocol()I
-HSPLandroid/telephony/data/ApnSetting;->getSkip464Xlat()I
-HSPLandroid/telephony/data/ApnSetting;->getUser()Ljava/lang/String;
-HSPLandroid/telephony/data/ApnSetting;->getWaitTime()I
-HSPLandroid/telephony/data/ApnSetting;->isEnabled()Z
-HSPLandroid/telephony/data/ApnSetting;->isPersistent()Z
-HSPLandroid/telephony/data/ApnSetting;->makeApnSetting(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/net/Uri;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IIIIZIIZIIIIILjava/lang/String;III)Landroid/telephony/data/ApnSetting;
-HSPLandroid/telephony/data/ApnSetting;->makeApnSetting(Landroid/database/Cursor;)Landroid/telephony/data/ApnSetting;
-HSPLandroid/telephony/data/ApnSetting;->portFromString(Ljava/lang/String;)I
-HSPLandroid/telephony/data/ApnSetting;->setPermanentFailed(Z)V
-HSPLandroid/telephony/data/ApnSetting;->similar(Landroid/telephony/data/ApnSetting;)Z
-HSPLandroid/telephony/data/ApnSetting;->toString()Ljava/lang/String;
-HSPLandroid/telephony/data/DataCallResponse$1;-><init>()V
-HSPLandroid/telephony/data/DataCallResponse;-><init>(IIIIILjava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/util/List;Ljava/util/List;I)V
-HSPLandroid/telephony/data/DataCallResponse;->toString()Ljava/lang/String;
-HSPLandroid/telephony/data/DataProfile$1;-><init>()V
-HSPLandroid/telephony/data/DataProfile$Builder;->build()Landroid/telephony/data/DataProfile;
-HSPLandroid/telephony/data/DataProfile;-><init>(ILjava/lang/String;IILjava/lang/String;Ljava/lang/String;IIIIZIIIIZZ)V
-HSPLandroid/telephony/data/DataProfile;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/data/DataProfile;->toString()Ljava/lang/String;
-HSPLandroid/telephony/data/DataService$DataServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/telephony/data/DataService$DataServiceProvider;-><init>(Landroid/telephony/data/DataService;I)V
-HSPLandroid/telephony/data/DataService$DataServiceProvider;->notifyDataCallListChanged(Ljava/util/List;)V
-HSPLandroid/telephony/data/DataService$DataServiceProvider;->registerForDataCallListChanged(Landroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->createDataServiceProvider(I)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->deactivateDataCall(IIILandroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->registerForDataCallListChanged(ILandroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->setDataProfile(ILjava/util/List;ZLandroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->setInitialAttachApn(ILandroid/telephony/data/DataProfile;ZLandroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService$IDataServiceWrapper;->setupDataCall(IILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/IDataServiceCallback;)V
-HSPLandroid/telephony/data/DataService;-><init>()V
-HSPLandroid/telephony/data/DataService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/telephony/data/DataServiceCallback;->onDeactivateDataCallComplete(I)V
-HSPLandroid/telephony/data/DataServiceCallback;->onSetInitialAttachApnComplete(I)V
-HSPLandroid/telephony/data/DataServiceCallback;->onSetupDataCallComplete(ILandroid/telephony/data/DataCallResponse;)V
-HSPLandroid/telephony/data/IDataService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/data/IDataService;
-HSPLandroid/telephony/data/IDataServiceCallback$Stub;-><init>()V
-HSPLandroid/telephony/emergency/EmergencyNumber$1;-><init>()V
-HSPLandroid/telephony/emergency/EmergencyNumber$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/emergency/EmergencyNumber;
-HSPLandroid/telephony/emergency/EmergencyNumber$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/emergency/EmergencyNumber;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/emergency/EmergencyNumber;->areSameEmergencyNumbers(Landroid/telephony/emergency/EmergencyNumber;Landroid/telephony/emergency/EmergencyNumber;)Z
-HSPLandroid/telephony/emergency/EmergencyNumber;->compareTo(Ljava/lang/Object;)I
-HSPLandroid/telephony/emergency/EmergencyNumber;->getDisplayPriorityScore()I
-HSPLandroid/telephony/emergency/EmergencyNumber;->hashCode()I
-HSPLandroid/telephony/emergency/EmergencyNumber;->mergeSameNumbersInEmergencyNumberList(Ljava/util/List;)V
-HSPLandroid/telephony/emergency/EmergencyNumber;->toString()Ljava/lang/String;
-HSPLandroid/telephony/emergency/EmergencyNumber;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/euicc/EuiccManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/telephony/euicc/EuiccManager;->isEnabled()Z
-HSPLandroid/telephony/gsm/GsmCellLocation;->fillInNotifierBundle(Landroid/os/Bundle;)V
-HSPLandroid/telephony/gsm/GsmCellLocation;->getCid()I
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$4YNlUy9HsD02E7Sbv2VeVtbao08;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$gK2iK9ZQ3GDeuMTfhRd7yjiYlO8;->runOrThrow()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$8xq93ap6i0L56Aegaj-ZEUt9ISc;->runOrThrow()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$AhnK6VJjwgpDNC1GXRrwfgtYvkM;->runOrThrow()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$F58PRHsH__07pmyvC0NTRprfEPU;->runOrThrow()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$J4VhgcUtd6SivHcdkzpurbTuyLc;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$iuI3HyNU5eUABA_QRyzQ8Jw2-8g;->runOrThrow()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$jAP4lCkBQEdyrlgt5jaNPTlFXlY;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$oDp7ilyKfflFThUCP4Du9EYoDoQ;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$q0Uz23ATIYan5EBJYUigIVvwE3g;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ProvisioningManager$Callback$CallbackBinder$R_8jXQuOM7aV7dIwYBzcWwV-YpM;->run()V
-HSPLandroid/telephony/ims/-$$Lambda$ProvisioningManager$Callback$CallbackBinder$rMBayJlNIko46WAqcRq_ggxbfrY;->runOrThrow()V
-HSPLandroid/telephony/ims/ImsMmTelManager$CapabilityCallback$CapabilityBinder;->lambda$onCapabilitiesStatusChanged$0$ImsMmTelManager$CapabilityCallback$CapabilityBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$CapabilityCallback$CapabilityBinder;->lambda$onCapabilitiesStatusChanged$1$ImsMmTelManager$CapabilityCallback$CapabilityBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$CapabilityCallback$CapabilityBinder;->onCapabilitiesStatusChanged(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$CapabilityCallback;-><init>()V
-HSPLandroid/telephony/ims/ImsMmTelManager$CapabilityCallback;->setExecutor(Ljava/util/concurrent/Executor;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder$1;-><init>()V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->getAccessType(I)I
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onDeregistered$4$ImsMmTelManager$RegistrationCallback$RegistrationBinder(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onDeregistered$5$ImsMmTelManager$RegistrationCallback$RegistrationBinder(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onRegistered$0$ImsMmTelManager$RegistrationCallback$RegistrationBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onRegistered$1$ImsMmTelManager$RegistrationCallback$RegistrationBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onRegistering$2$ImsMmTelManager$RegistrationCallback$RegistrationBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onRegistering$3$ImsMmTelManager$RegistrationCallback$RegistrationBinder(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onSubscriberAssociatedUriChanged$8$ImsMmTelManager$RegistrationCallback$RegistrationBinder([Landroid/net/Uri;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->lambda$onSubscriberAssociatedUriChanged$9$ImsMmTelManager$RegistrationCallback$RegistrationBinder([Landroid/net/Uri;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->onDeregistered(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->onRegistered(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->onRegistering(I)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;->onSubscriberAssociatedUriChanged([Landroid/net/Uri;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback;-><init>()V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback;->onSubscriberAssociatedUriChanged([Landroid/net/Uri;)V
-HSPLandroid/telephony/ims/ImsMmTelManager$RegistrationCallback;->setExecutor(Ljava/util/concurrent/Executor;)V
-HSPLandroid/telephony/ims/ImsMmTelManager;->createForSubscriptionId(I)Landroid/telephony/ims/ImsMmTelManager;
-HSPLandroid/telephony/ims/ImsMmTelManager;->getITelephony()Lcom/android/internal/telephony/ITelephony;
-HSPLandroid/telephony/ims/ImsMmTelManager;->isAvailable(II)Z
-HSPLandroid/telephony/ims/ImsMmTelManager;->isImsAvailableOnDevice()Z
-HSPLandroid/telephony/ims/ImsMmTelManager;->registerMmTelCapabilityCallback(Ljava/util/concurrent/Executor;Landroid/telephony/ims/ImsMmTelManager$CapabilityCallback;)V
-HSPLandroid/telephony/ims/ImsMmTelManager;->unregisterMmTelCapabilityCallback(Landroid/telephony/ims/ImsMmTelManager$CapabilityCallback;)V
-HSPLandroid/telephony/ims/ImsReasonInfo$1;-><init>()V
-HSPLandroid/telephony/ims/ImsReasonInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/ims/ImsReasonInfo;
-HSPLandroid/telephony/ims/ImsReasonInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/ims/ImsReasonInfo;-><init>(IILjava/lang/String;)V
-HSPLandroid/telephony/ims/ImsReasonInfo;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ims/ImsReasonInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/ims/ImsService$1;->createMmTelFeature(ILcom/android/ims/internal/IImsFeatureStatusCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLandroid/telephony/ims/ImsService$1;->enableIms(I)V
-HSPLandroid/telephony/ims/ImsService$1;->getConfig(I)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLandroid/telephony/ims/ImsService$1;->getRegistration(I)Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLandroid/telephony/ims/ImsService$1;->notifyImsServiceReadyForFeatureCreation()V
-HSPLandroid/telephony/ims/ImsService$1;->setListener(Landroid/telephony/ims/aidl/IImsServiceControllerListener;)V
-HSPLandroid/telephony/ims/ImsService$Listener;-><init>()V
-HSPLandroid/telephony/ims/ImsService;-><init>()V
-HSPLandroid/telephony/ims/ImsService;->addImsFeature(IILandroid/telephony/ims/feature/ImsFeature;)V
-HSPLandroid/telephony/ims/ProvisioningManager$Callback$CallbackBinder;->lambda$onIntConfigChanged$0$ProvisioningManager$Callback$CallbackBinder(II)V
-HSPLandroid/telephony/ims/ProvisioningManager$Callback$CallbackBinder;->lambda$onIntConfigChanged$1$ProvisioningManager$Callback$CallbackBinder(II)V
-HSPLandroid/telephony/ims/ProvisioningManager$Callback$CallbackBinder;->onIntConfigChanged(II)V
-HSPLandroid/telephony/ims/ProvisioningManager$Callback;-><init>()V
-HSPLandroid/telephony/ims/ProvisioningManager$Callback;->setExecutor(Ljava/util/concurrent/Executor;)V
-HSPLandroid/telephony/ims/RcsMessageStore;-><init>()V
-HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub$Proxy;->onCapabilitiesStatusChanged(I)V
-HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub;-><init>()V
-HSPLandroid/telephony/ims/aidl/IImsCapabilityCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/telephony/ims/aidl/IImsConfigCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub$Proxy;->getFeatureState()I
-HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLandroid/telephony/ims/aidl/IImsMmTelFeature$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/telephony/ims/aidl/IImsRegistration$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsRegistration$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;->onDeregistered(Landroid/telephony/ims/ImsReasonInfo;)V
-PLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;->onRegistered(I)V
-HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsRegistrationCallback;
-HSPLandroid/telephony/ims/aidl/IImsServiceController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/telephony/ims/aidl/IImsServiceController;
-HSPLandroid/telephony/ims/aidl/IImsServiceControllerListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/telephony/ims/aidl/IImsSmsListener$Stub;-><init>()V
-HSPLandroid/telephony/ims/aidl/IRcs$Stub;-><init>()V
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$1;-><init>()V
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$CapabilityPair;->getCapability()I
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$CapabilityPair;->getRadioTech()I
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$CapabilityPair;->hashCode()I
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest$CapabilityPair;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;-><init>()V
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;->addCapabilitiesToDisableForTech(II)V
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;->addCapabilitiesToEnableForTech(II)V
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;->getCapabilitiesToDisable()Ljava/util/List;
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;->getCapabilitiesToEnable()Ljava/util/List;
-HSPLandroid/telephony/ims/feature/CapabilityChangeRequest;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ims/feature/ImsFeature$Capabilities;->copy()Landroid/telephony/ims/feature/ImsFeature$Capabilities;
-HSPLandroid/telephony/ims/feature/ImsFeature;-><init>()V
-HSPLandroid/telephony/ims/feature/ImsFeature;->addCapabilityCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->addImsFeatureStatusCallback(Lcom/android/ims/internal/IImsFeatureStatusCallback;)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->getFeatureState()I
-HSPLandroid/telephony/ims/feature/ImsFeature;->notifyCapabilitiesStatusChanged(Landroid/telephony/ims/feature/ImsFeature$Capabilities;)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->notifyFeatureState(I)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->queryCapabilityStatus()Landroid/telephony/ims/feature/ImsFeature$Capabilities;
-HSPLandroid/telephony/ims/feature/ImsFeature;->requestChangeEnabledCapabilities(Landroid/telephony/ims/feature/CapabilityChangeRequest;Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->sendImsServiceIntent(I)V
-HSPLandroid/telephony/ims/feature/ImsFeature;->setFeatureState(I)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->addCapabilityCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->changeCapabilitiesConfiguration(Landroid/telephony/ims/feature/CapabilityChangeRequest;Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->getEcbmInterface()Lcom/android/ims/internal/IImsEcbm;
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->getFeatureState()I
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->getMultiEndpointInterface()Lcom/android/ims/internal/IImsMultiEndpoint;
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->getUtInterface()Lcom/android/ims/internal/IImsUt;
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->onSmsReady()V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->queryCapabilityConfiguration(IILandroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->removeCapabilityCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->setListener(Landroid/telephony/ims/aidl/IImsMmTelListener;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->setSmsListener(Landroid/telephony/ims/aidl/IImsSmsListener;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$1;->setUiTtyMode(ILandroid/os/Message;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$Listener;-><init>()V
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;-><init>()V
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;-><init>(Landroid/telephony/ims/feature/ImsFeature$Capabilities;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->addCapabilities(I)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->isCapable(I)Z
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->removeCapabilities(I)V
-HSPLandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ims/feature/MmTelFeature;-><init>()V
-HSPLandroid/telephony/ims/feature/MmTelFeature;->getEcbmInterface()Lcom/android/ims/internal/IImsEcbm;
-HSPLandroid/telephony/ims/feature/MmTelFeature;->getMultiEndpointInterface()Lcom/android/ims/internal/IImsMultiEndpoint;
-HSPLandroid/telephony/ims/feature/MmTelFeature;->getUtInterface()Lcom/android/ims/internal/IImsUt;
-HSPLandroid/telephony/ims/feature/MmTelFeature;->notifyCapabilitiesStatusChanged(Landroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature;->queryCapabilityConfigurationInternal(IILandroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLandroid/telephony/ims/feature/MmTelFeature;->queryCapabilityStatus()Landroid/telephony/ims/feature/ImsFeature$Capabilities;
-HSPLandroid/telephony/ims/feature/MmTelFeature;->setListener(Landroid/telephony/ims/aidl/IImsMmTelListener;)V
-HSPLandroid/telephony/ims/stub/-$$Lambda$ImsConfigImplBase$yL4863k-FoQyqg_FX2mWsLMqbyA;->accept(Ljava/lang/Object;)V
-HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$cWwTXSDsk-bWPbsDJYI--DUBMnE;->accept(Ljava/lang/Object;)V
-HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$s7PspXVbCf1Q_WSzodP2glP9TjI;->accept(Ljava/lang/Object;)V
-HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$sbjuTvW-brOSWMR74UInSZEIQB0;->accept(Ljava/lang/Object;)V
-HSPLandroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$wwtkoeOtGwMjG5I0-ZTfjNpGU-s;->accept(Ljava/lang/Object;)V
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->addImsConfigCallback(Landroid/telephony/ims/aidl/IImsConfigCallback;)V
-HPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->getConfigInt(I)I
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->getImsConfigImpl()Landroid/telephony/ims/stub/ImsConfigImplBase;
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->notifyImsConfigChanged(II)V
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->setConfigInt(II)I
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;->updateCachedValue(IIZ)V
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase;-><init>(Landroid/content/Context;)V
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase;->getIImsConfig()Landroid/telephony/ims/aidl/IImsConfig;
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase;->lambda$notifyConfigChanged$0(IILandroid/telephony/ims/aidl/IImsConfigCallback;)V
-HSPLandroid/telephony/ims/stub/ImsEcbmImplBase$1;->setListener(Lcom/android/ims/internal/IImsEcbmListener;)V
-HSPLandroid/telephony/ims/stub/ImsEcbmImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsEcbmImplBase;->getImsEcbm()Lcom/android/ims/internal/IImsEcbm;
-HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;->hashCode()I
-HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;->toString()Ljava/lang/String;
-HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/telephony/ims/stub/ImsFeatureConfiguration;->getServiceFeatures()Ljava/util/Set;
-HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase$1;->setListener(Lcom/android/ims/internal/IImsExternalCallStateListener;)V
-HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;->getIImsMultiEndpoint()Lcom/android/ims/internal/IImsMultiEndpoint;
-HSPLandroid/telephony/ims/stub/ImsMultiEndpointImplBase;->onImsExternalCallStateUpdate(Ljava/util/List;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase$1;->addRegistrationCallback(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase$1;->getRegistrationTechnology()I
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->getConnectionType()I
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->lambda$onDeregistered$2(Landroid/telephony/ims/ImsReasonInfo;Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->lambda$onRegistered$0(ILandroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->lambda$onRegistering$1(ILandroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->lambda$onSubscriberAssociatedUriChanged$4([Landroid/net/Uri;Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->onDeregistered(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->onRegistered(I)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->onRegistering(I)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->onSubscriberAssociatedUriChanged([Landroid/net/Uri;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->updateNewCallbackWithState(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->updateToDisconnectedState(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->updateToState(II)V
-HSPLandroid/telephony/ims/stub/ImsSmsImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsSmsImplBase;->registerSmsListener(Landroid/telephony/ims/aidl/IImsSmsListener;)V
-HSPLandroid/telephony/ims/stub/ImsUtImplBase$1;->setListener(Lcom/android/ims/internal/IImsUtListener;)V
-HSPLandroid/telephony/ims/stub/ImsUtImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsUtImplBase;->getInterface()Lcom/android/ims/internal/IImsUt;
-HSPLandroid/text/AndroidBidi$EmojiBidiOverride;-><init>()V
+HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback$RegistrationBinder;-><init>(Landroid/telephony/ims/RegistrationManager$RegistrationCallback;)V
+HSPLandroid/telephony/ims/RegistrationManager$RegistrationCallback;-><init>()V
+HSPLandroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;-><init>()V
 HSPLandroid/text/AndroidBidi$EmojiBidiOverride;->classify(I)I
-HSPLandroid/text/AndroidBidi;->bidi(I[C[B)I
-HSPLandroid/text/AndroidBidi;->directions(I[BI[CII)Landroid/text/Layout$Directions;
+HSPLandroid/text/AutoGrowArray$ByteArray;-><init>()V
+HSPLandroid/text/AutoGrowArray$ByteArray;-><init>(I)V
 HSPLandroid/text/AutoGrowArray$ByteArray;->clear()V
 HSPLandroid/text/AutoGrowArray$ByteArray;->clearWithReleasingLargeArray()V
 HSPLandroid/text/AutoGrowArray$ByteArray;->get(I)B
 HSPLandroid/text/AutoGrowArray$ByteArray;->getRawArray()[B
 HSPLandroid/text/AutoGrowArray$ByteArray;->resize(I)V
+HSPLandroid/text/AutoGrowArray$FloatArray;-><init>()V
+HSPLandroid/text/AutoGrowArray$FloatArray;-><init>(I)V
 HSPLandroid/text/AutoGrowArray$FloatArray;->clear()V
 HSPLandroid/text/AutoGrowArray$FloatArray;->clearWithReleasingLargeArray()V
+HSPLandroid/text/AutoGrowArray$FloatArray;->ensureCapacity(I)V
 HSPLandroid/text/AutoGrowArray$FloatArray;->getRawArray()[F
 HSPLandroid/text/AutoGrowArray$FloatArray;->resize(I)V
+HSPLandroid/text/AutoGrowArray$IntArray;-><init>(I)V
 HSPLandroid/text/AutoGrowArray$IntArray;->append(I)V
 HSPLandroid/text/AutoGrowArray$IntArray;->clear()V
 HSPLandroid/text/AutoGrowArray$IntArray;->clearWithReleasingLargeArray()V
+HSPLandroid/text/AutoGrowArray$IntArray;->ensureCapacity(I)V
 HSPLandroid/text/AutoGrowArray$IntArray;->getRawArray()[I
+HSPLandroid/text/AutoGrowArray;->access$000(II)I
+HSPLandroid/text/AutoGrowArray;->computeNewCapacity(II)I
+HSPLandroid/text/BidiFormatter$DirectionalityEstimator;-><init>(Ljava/lang/CharSequence;Z)V
 HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->dirTypeBackward()B
 HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->dirTypeForward()B
+HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getCachedDirectionality(C)B
 HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getEntryDir()I
 HSPLandroid/text/BidiFormatter$DirectionalityEstimator;->getExitDir()I
-HSPLandroid/text/BidiFormatter;-><init>(ZILandroid/text/TextDirectionHeuristic;)V
+HSPLandroid/text/BidiFormatter;->getDefaultInstanceFromContext(Z)Landroid/text/BidiFormatter;
+HSPLandroid/text/BidiFormatter;->getEntryDir(Ljava/lang/CharSequence;)I
+HSPLandroid/text/BidiFormatter;->getExitDir(Ljava/lang/CharSequence;)I
 HSPLandroid/text/BidiFormatter;->getInstance()Landroid/text/BidiFormatter;
+HSPLandroid/text/BidiFormatter;->getStereoReset()Z
 HSPLandroid/text/BidiFormatter;->markAfter(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String;
 HSPLandroid/text/BidiFormatter;->markBefore(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String;
-HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/CharSequence;Landroid/text/TextDirectionHeuristic;Z)Ljava/lang/CharSequence;
-HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/text/BidiFormatter;->unicodeWrap(Ljava/lang/String;Landroid/text/TextDirectionHeuristic;)Ljava/lang/String;
 HSPLandroid/text/BoringLayout$Metrics;-><init>()V
+HSPLandroid/text/BoringLayout$Metrics;->access$000(Landroid/text/BoringLayout$Metrics;)V
+HSPLandroid/text/BoringLayout$Metrics;->reset()V
+HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)V
 HSPLandroid/text/BoringLayout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)V
 HSPLandroid/text/BoringLayout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/BoringLayout;->ellipsized(II)V
@@ -14785,29 +10713,50 @@
 HSPLandroid/text/BoringLayout;->make(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;
 HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;Z)Landroid/text/BoringLayout;
 HSPLandroid/text/BoringLayout;->replaceOrMake(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FFLandroid/text/BoringLayout$Metrics;ZLandroid/text/TextUtils$TruncateAt;I)Landroid/text/BoringLayout;
-HSPLandroid/text/CharSequenceCharacterIterator;->current()C
-HSPLandroid/text/CharSequenceCharacterIterator;->first()C
-HSPLandroid/text/CharSequenceCharacterIterator;->getBeginIndex()I
-HSPLandroid/text/CharSequenceCharacterIterator;->getEndIndex()I
-HSPLandroid/text/CharSequenceCharacterIterator;->getIndex()I
-HSPLandroid/text/CharSequenceCharacterIterator;->next()C
-HSPLandroid/text/CharSequenceCharacterIterator;->setIndex(I)C
+HSPLandroid/text/ClipboardManager;-><init>()V
+HSPLandroid/text/DynamicLayout$Builder;-><init>()V
+HSPLandroid/text/DynamicLayout$Builder;->access$1000(Landroid/text/DynamicLayout$Builder;)Z
+HSPLandroid/text/DynamicLayout$Builder;->access$1100(Landroid/text/DynamicLayout$Builder;)I
+HSPLandroid/text/DynamicLayout$Builder;->access$1200(Landroid/text/DynamicLayout$Builder;)I
+HSPLandroid/text/DynamicLayout$Builder;->access$1300(Landroid/text/DynamicLayout$Builder;)I
+HSPLandroid/text/DynamicLayout$Builder;->access$1400(Landroid/text/DynamicLayout$Builder;)Ljava/lang/CharSequence;
+HSPLandroid/text/DynamicLayout$Builder;->access$1500(Landroid/text/DynamicLayout$Builder;)Z
+HSPLandroid/text/DynamicLayout$Builder;->access$1700(Landroid/text/DynamicLayout$Builder;)Landroid/graphics/Paint$FontMetricsInt;
+HSPLandroid/text/DynamicLayout$Builder;->access$200(Landroid/text/DynamicLayout$Builder;)Landroid/text/TextUtils$TruncateAt;
+HSPLandroid/text/DynamicLayout$Builder;->access$300(Landroid/text/DynamicLayout$Builder;)Ljava/lang/CharSequence;
+HSPLandroid/text/DynamicLayout$Builder;->access$400(Landroid/text/DynamicLayout$Builder;)Landroid/text/TextPaint;
+HSPLandroid/text/DynamicLayout$Builder;->access$500(Landroid/text/DynamicLayout$Builder;)I
+HSPLandroid/text/DynamicLayout$Builder;->access$600(Landroid/text/DynamicLayout$Builder;)Landroid/text/Layout$Alignment;
+HSPLandroid/text/DynamicLayout$Builder;->access$700(Landroid/text/DynamicLayout$Builder;)Landroid/text/TextDirectionHeuristic;
+HSPLandroid/text/DynamicLayout$Builder;->access$800(Landroid/text/DynamicLayout$Builder;)F
+HSPLandroid/text/DynamicLayout$Builder;->access$900(Landroid/text/DynamicLayout$Builder;)F
 HSPLandroid/text/DynamicLayout$Builder;->build()Landroid/text/DynamicLayout;
 HSPLandroid/text/DynamicLayout$Builder;->obtain(Ljava/lang/CharSequence;Landroid/text/TextPaint;I)Landroid/text/DynamicLayout$Builder;
-HSPLandroid/text/DynamicLayout$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V
-HSPLandroid/text/DynamicLayout$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V
+HSPLandroid/text/DynamicLayout$Builder;->recycle(Landroid/text/DynamicLayout$Builder;)V
+HSPLandroid/text/DynamicLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setBreakStrategy(I)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setDisplayText(Ljava/lang/CharSequence;)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setEllipsizedWidth(I)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setHyphenationFrequency(I)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setIncludePad(Z)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setJustificationMode(I)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setLineSpacing(FF)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/DynamicLayout$Builder;
+HSPLandroid/text/DynamicLayout$ChangeWatcher;-><init>(Landroid/text/DynamicLayout;)V
 HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V
-HSPLandroid/text/DynamicLayout$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/text/DynamicLayout$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/text/DynamicLayout;-><init>(Landroid/text/DynamicLayout$Builder;)V
+HSPLandroid/text/DynamicLayout;-><init>(Landroid/text/DynamicLayout$Builder;Landroid/text/DynamicLayout$1;)V
 HSPLandroid/text/DynamicLayout;->addBlockAtOffset(I)V
 HSPLandroid/text/DynamicLayout;->contentMayProtrudeFromLineTopOrBottom(Ljava/lang/CharSequence;II)Z
 HSPLandroid/text/DynamicLayout;->createBlocks()V
+HSPLandroid/text/DynamicLayout;->createEllipsizer(Landroid/text/TextUtils$TruncateAt;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/text/DynamicLayout;->generate(Landroid/text/DynamicLayout$Builder;)V
 HSPLandroid/text/DynamicLayout;->getBlockEndLines()[I
 HSPLandroid/text/DynamicLayout;->getBlockIndices()[I
 HSPLandroid/text/DynamicLayout;->getBlocksAlwaysNeedToBeRedrawn()Landroid/util/ArraySet;
+HSPLandroid/text/DynamicLayout;->getContentMayProtrudeFromTopOrBottom(I)Z
 HSPLandroid/text/DynamicLayout;->getEllipsisCount(I)I
 HSPLandroid/text/DynamicLayout;->getEllipsisStart(I)I
 HSPLandroid/text/DynamicLayout;->getEllipsizedWidth()I
@@ -14817,7 +10766,6 @@
 HSPLandroid/text/DynamicLayout;->getLineCount()I
 HSPLandroid/text/DynamicLayout;->getLineDescent(I)I
 HSPLandroid/text/DynamicLayout;->getLineDirections(I)Landroid/text/Layout$Directions;
-HSPLandroid/text/DynamicLayout;->getLineExtra(I)I
 HSPLandroid/text/DynamicLayout;->getLineStart(I)I
 HSPLandroid/text/DynamicLayout;->getLineTop(I)I
 HSPLandroid/text/DynamicLayout;->getNumberOfBlocks()I
@@ -14827,12 +10775,13 @@
 HSPLandroid/text/DynamicLayout;->setIndexFirstChangedBlock(I)V
 HSPLandroid/text/DynamicLayout;->updateAlwaysNeedsToBeRedrawn(I)V
 HSPLandroid/text/DynamicLayout;->updateBlocks(III)V
-HSPLandroid/text/Editable$Factory;-><init>()V
 HSPLandroid/text/Editable$Factory;->getInstance()Landroid/text/Editable$Factory;
 HSPLandroid/text/Editable$Factory;->newEditable(Ljava/lang/CharSequence;)Landroid/text/Editable;
 HSPLandroid/text/Emoji;->isNewEmoji(I)Z
+HSPLandroid/text/Html$HtmlParser;->access$000()Lorg/ccil/cowan/tagsoup/HTMLSchema;
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;)Landroid/text/Spanned;
 HSPLandroid/text/Html;->fromHtml(Ljava/lang/String;ILandroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;)Landroid/text/Spanned;
+HSPLandroid/text/HtmlToSpannedConverter;-><init>(Ljava/lang/String;Landroid/text/Html$ImageGetter;Landroid/text/Html$TagHandler;Lorg/ccil/cowan/tagsoup/Parser;I)V
 HSPLandroid/text/HtmlToSpannedConverter;->characters([CII)V
 HSPLandroid/text/HtmlToSpannedConverter;->convert()Landroid/text/Spanned;
 HSPLandroid/text/HtmlToSpannedConverter;->endDocument()V
@@ -14845,38 +10794,33 @@
 HSPLandroid/text/HtmlToSpannedConverter;->startElement(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lorg/xml/sax/Attributes;)V
 HSPLandroid/text/HtmlToSpannedConverter;->startPrefixMapping(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/text/Hyphenator;->init()V
-HSPLandroid/text/Layout$Alignment;-><init>(Ljava/lang/String;I)V
-HSPLandroid/text/Layout$Alignment;->values()[Landroid/text/Layout$Alignment;
-HSPLandroid/text/Layout$Directions;-><init>([I)V
 HSPLandroid/text/Layout$Directions;->getRunCount()I
 HSPLandroid/text/Layout$Directions;->getRunLength(I)I
 HSPLandroid/text/Layout$Directions;->getRunStart(I)I
 HSPLandroid/text/Layout$Directions;->isRunRtl(I)Z
+HSPLandroid/text/Layout$Ellipsizer;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/Layout$Ellipsizer;->charAt(I)C
 HSPLandroid/text/Layout$Ellipsizer;->getChars(II[CI)V
 HSPLandroid/text/Layout$Ellipsizer;->length()I
-HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanEnd(Ljava/lang/Object;)I
-HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanFlags(Ljava/lang/Object;)I
-HSPLandroid/text/Layout$SpannedEllipsizer;->getSpanStart(Ljava/lang/Object;)I
+HSPLandroid/text/Layout$SpannedEllipsizer;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/Layout$SpannedEllipsizer;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/text/Layout$SpannedEllipsizer;->nextSpanTransition(IILjava/lang/Class;)I
 HSPLandroid/text/Layout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V
 HSPLandroid/text/Layout;-><init>(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;Landroid/text/TextDirectionHeuristic;FF)V
+HSPLandroid/text/Layout;->access$200(Landroid/text/Layout;III[CILandroid/text/TextUtils$TruncateAt;)V
 HSPLandroid/text/Layout;->draw(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/text/Layout;->drawBackground(Landroid/graphics/Canvas;Landroid/graphics/Path;Landroid/graphics/Paint;III)V
 HSPLandroid/text/Layout;->drawText(Landroid/graphics/Canvas;II)V
 HSPLandroid/text/Layout;->ellipsize(III[CILandroid/text/TextUtils$TruncateAt;)V
-HSPLandroid/text/Layout;->getCursorPath(ILandroid/graphics/Path;Ljava/lang/CharSequence;)V
 HSPLandroid/text/Layout;->getDesiredWidthWithLimit(Ljava/lang/CharSequence;IILandroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;F)F
 HSPLandroid/text/Layout;->getEndHyphenEdit(I)I
 HSPLandroid/text/Layout;->getHeight()I
 HSPLandroid/text/Layout;->getHeight(Z)I
-HSPLandroid/text/Layout;->getHorizontal(IZ)F
 HSPLandroid/text/Layout;->getHorizontal(IZIZ)F
+HSPLandroid/text/Layout;->getHorizontal(IZZ)F
 HSPLandroid/text/Layout;->getIndentAdjust(ILandroid/text/Layout$Alignment;)I
 HSPLandroid/text/Layout;->getLineBaseline(I)I
 HSPLandroid/text/Layout;->getLineBottom(I)I
-HSPLandroid/text/Layout;->getLineBottomWithoutSpacing(I)I
 HSPLandroid/text/Layout;->getLineEnd(I)I
 HSPLandroid/text/Layout;->getLineExtent(ILandroid/text/Layout$TabStops;Z)F
 HSPLandroid/text/Layout;->getLineExtent(IZ)F
@@ -14890,24 +10834,27 @@
 HSPLandroid/text/Layout;->getLineVisibleEnd(I)I
 HSPLandroid/text/Layout;->getLineVisibleEnd(III)I
 HSPLandroid/text/Layout;->getLineWidth(I)F
-HSPLandroid/text/Layout;->getOffsetForHorizontal(IF)I
-HSPLandroid/text/Layout;->getOffsetForHorizontal(IFZ)I
+HSPLandroid/text/Layout;->getPaint()Landroid/text/TextPaint;
 HSPLandroid/text/Layout;->getParagraphAlignment(I)Landroid/text/Layout$Alignment;
 HSPLandroid/text/Layout;->getParagraphLeadingMargin(I)I
+HSPLandroid/text/Layout;->getParagraphLeft(I)I
+HSPLandroid/text/Layout;->getParagraphRight(I)I
 HSPLandroid/text/Layout;->getParagraphSpans(Landroid/text/Spanned;IILjava/lang/Class;)[Ljava/lang/Object;
-HSPLandroid/text/Layout;->getPrimaryHorizontal(I)F
 HSPLandroid/text/Layout;->getPrimaryHorizontal(IZ)F
+HSPLandroid/text/Layout;->getSpacingAdd()F
+HSPLandroid/text/Layout;->getSpacingMultiplier()F
 HSPLandroid/text/Layout;->getStartHyphenEdit(I)I
+HSPLandroid/text/Layout;->getText()Ljava/lang/CharSequence;
+HSPLandroid/text/Layout;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;
+HSPLandroid/text/Layout;->getWidth()I
 HSPLandroid/text/Layout;->increaseWidthTo(I)V
 HSPLandroid/text/Layout;->isJustificationRequired(I)Z
 HSPLandroid/text/Layout;->measurePara(Landroid/text/TextPaint;Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)F
 HSPLandroid/text/Layout;->primaryIsTrailingPrevious(I)Z
 HSPLandroid/text/Layout;->replaceWith(Ljava/lang/CharSequence;Landroid/text/TextPaint;ILandroid/text/Layout$Alignment;FF)V
 HSPLandroid/text/Layout;->setJustificationMode(I)V
-HSPLandroid/text/Layout;->shouldClampCursor(I)Z
 HSPLandroid/text/MeasuredParagraph;-><init>()V
 HSPLandroid/text/MeasuredParagraph;->applyMetricsAffectingSpan(Landroid/text/TextPaint;[Landroid/text/style/MetricAffectingSpan;IILandroid/graphics/text/MeasuredText$Builder;)V
-HSPLandroid/text/MeasuredParagraph;->applyReplacementRun(Landroid/text/style/ReplacementSpan;IILandroid/graphics/text/MeasuredText$Builder;)V
 HSPLandroid/text/MeasuredParagraph;->applyStyleRun(IILandroid/graphics/text/MeasuredText$Builder;)V
 HSPLandroid/text/MeasuredParagraph;->breakText(IZF)I
 HSPLandroid/text/MeasuredParagraph;->buildForBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;Landroid/text/MeasuredParagraph;)Landroid/text/MeasuredParagraph;
@@ -14924,8 +10871,9 @@
 HSPLandroid/text/MeasuredParagraph;->obtain()Landroid/text/MeasuredParagraph;
 HSPLandroid/text/MeasuredParagraph;->recycle()V
 HSPLandroid/text/MeasuredParagraph;->release()V
+HSPLandroid/text/MeasuredParagraph;->reset()V
 HSPLandroid/text/MeasuredParagraph;->resetAndAnalyzeBidi(Ljava/lang/CharSequence;IILandroid/text/TextDirectionHeuristic;)V
-HSPLandroid/text/NoCopySpan$Concrete;-><init>()V
+HSPLandroid/text/PackedIntVector;-><init>(I)V
 HSPLandroid/text/PackedIntVector;->adjustValuesBelow(III)V
 HSPLandroid/text/PackedIntVector;->deleteAt(II)V
 HSPLandroid/text/PackedIntVector;->getValue(II)I
@@ -14933,8 +10881,10 @@
 HSPLandroid/text/PackedIntVector;->insertAt(I[I)V
 HSPLandroid/text/PackedIntVector;->moveRowGapTo(I)V
 HSPLandroid/text/PackedIntVector;->moveValueGapTo(II)V
+HSPLandroid/text/PackedIntVector;->setValueInternal(III)V
 HSPLandroid/text/PackedIntVector;->size()I
 HSPLandroid/text/PackedIntVector;->width()I
+HSPLandroid/text/PackedObjectVector;-><init>(I)V
 HSPLandroid/text/PackedObjectVector;->deleteAt(II)V
 HSPLandroid/text/PackedObjectVector;->getValue(II)Ljava/lang/Object;
 HSPLandroid/text/PackedObjectVector;->growBuffer()V
@@ -14942,49 +10892,45 @@
 HSPLandroid/text/PackedObjectVector;->moveRowGapTo(I)V
 HSPLandroid/text/PackedObjectVector;->setValue(IILjava/lang/Object;)V
 HSPLandroid/text/PackedObjectVector;->size()I
+HSPLandroid/text/PrecomputedText$ParagraphInfo;-><init>(ILandroid/text/MeasuredParagraph;)V
 HSPLandroid/text/PrecomputedText$Params;-><init>(Landroid/text/TextPaint;Landroid/text/TextDirectionHeuristic;II)V
+HSPLandroid/text/PrecomputedText$Params;->getBreakStrategy()I
+HSPLandroid/text/PrecomputedText$Params;->getHyphenationFrequency()I
+HSPLandroid/text/PrecomputedText$Params;->getTextDirection()Landroid/text/TextDirectionHeuristic;
+HSPLandroid/text/PrecomputedText$Params;->getTextPaint()Landroid/text/TextPaint;
 HSPLandroid/text/PrecomputedText;->createMeasuredParagraphs(Ljava/lang/CharSequence;Landroid/text/PrecomputedText$Params;IIZ)[Landroid/text/PrecomputedText$ParagraphInfo;
-HSPLandroid/text/Selection$END;-><init>(Landroid/text/Selection$1;)V
-HSPLandroid/text/Selection$MEMORY;-><init>(Landroid/text/Selection$1;)V
-HSPLandroid/text/Selection$START;-><init>(Landroid/text/Selection$1;)V
 HSPLandroid/text/Selection;->getSelectionEnd(Ljava/lang/CharSequence;)I
 HSPLandroid/text/Selection;->getSelectionStart(Ljava/lang/CharSequence;)I
+HSPLandroid/text/Selection;->removeMemory(Landroid/text/Spannable;)V
 HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;I)V
 HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;II)V
+HSPLandroid/text/Selection;->setSelection(Landroid/text/Spannable;III)V
 HSPLandroid/text/Selection;->updateMemory(Landroid/text/Spannable;I)V
 HSPLandroid/text/SpanSet;-><init>(Ljava/lang/Class;)V
 HSPLandroid/text/SpanSet;->getNextTransition(II)I
-HSPLandroid/text/SpanSet;->hasSpansIntersecting(II)Z
 HSPLandroid/text/SpanSet;->init(Landroid/text/Spanned;II)V
 HSPLandroid/text/SpanSet;->recycle()V
-HSPLandroid/text/Spannable$Factory;-><init>()V
 HSPLandroid/text/Spannable$Factory;->getInstance()Landroid/text/Spannable$Factory;
 HSPLandroid/text/Spannable$Factory;->newSpannable(Ljava/lang/CharSequence;)Landroid/text/Spannable;
 HSPLandroid/text/SpannableString;-><init>(Ljava/lang/CharSequence;)V
-HSPLandroid/text/SpannableString;->equals(Ljava/lang/Object;)Z
+HSPLandroid/text/SpannableString;-><init>(Ljava/lang/CharSequence;Z)V
 HSPLandroid/text/SpannableString;->getSpanEnd(Ljava/lang/Object;)I
 HSPLandroid/text/SpannableString;->getSpanFlags(Ljava/lang/Object;)I
 HSPLandroid/text/SpannableString;->getSpanStart(Ljava/lang/Object;)I
 HSPLandroid/text/SpannableString;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/text/SpannableString;->nextSpanTransition(IILjava/lang/Class;)I
-HSPLandroid/text/SpannableString;->removeSpan(Ljava/lang/Object;)V
-HSPLandroid/text/SpannableString;->removeSpan(Ljava/lang/Object;I)V
 HSPLandroid/text/SpannableString;->setSpan(Ljava/lang/Object;III)V
-HSPLandroid/text/SpannableString;->subSequence(II)Ljava/lang/CharSequence;
 HSPLandroid/text/SpannableStringBuilder;-><init>()V
 HSPLandroid/text/SpannableStringBuilder;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/SpannableStringBuilder;-><init>(Ljava/lang/CharSequence;II)V
-HSPLandroid/text/SpannableStringBuilder;->append(C)Landroid/text/SpannableStringBuilder;
-HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/Editable;
 HSPLandroid/text/SpannableStringBuilder;->append(Ljava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;
 HSPLandroid/text/SpannableStringBuilder;->calcMax(I)I
 HSPLandroid/text/SpannableStringBuilder;->change(IILjava/lang/CharSequence;II)V
 HSPLandroid/text/SpannableStringBuilder;->charAt(I)C
 HSPLandroid/text/SpannableStringBuilder;->checkRange(Ljava/lang/String;II)V
-HSPLandroid/text/SpannableStringBuilder;->clear()V
+HSPLandroid/text/SpannableStringBuilder;->checkSortBuffer([II)[I
+HSPLandroid/text/SpannableStringBuilder;->compareSpans(II[I[I)I
 HSPLandroid/text/SpannableStringBuilder;->countSpans(IILjava/lang/Class;I)I
-HSPLandroid/text/SpannableStringBuilder;->delete(II)Landroid/text/SpannableStringBuilder;
-HSPLandroid/text/SpannableStringBuilder;->equals(Ljava/lang/Object;)Z
 HSPLandroid/text/SpannableStringBuilder;->getChars(II[CI)V
 HSPLandroid/text/SpannableStringBuilder;->getSpanEnd(Ljava/lang/Object;)I
 HSPLandroid/text/SpannableStringBuilder;->getSpanFlags(Ljava/lang/Object;)I
@@ -14992,8 +10938,10 @@
 HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/text/SpannableStringBuilder;->getSpans(IILjava/lang/Class;Z)[Ljava/lang/Object;
 HSPLandroid/text/SpannableStringBuilder;->getSpansRec(IILjava/lang/Class;I[Ljava/lang/Object;[I[IIZ)I
-HSPLandroid/text/SpannableStringBuilder;->getTextWatcherDepth()I
 HSPLandroid/text/SpannableStringBuilder;->hasNonExclusiveExclusiveSpanAt(Ljava/lang/CharSequence;I)Z
+HSPLandroid/text/SpannableStringBuilder;->invalidateIndex(I)V
+HSPLandroid/text/SpannableStringBuilder;->isInvalidParagraph(II)Z
+HSPLandroid/text/SpannableStringBuilder;->leftChild(I)I
 HSPLandroid/text/SpannableStringBuilder;->length()I
 HSPLandroid/text/SpannableStringBuilder;->moveGapTo(I)V
 HSPLandroid/text/SpannableStringBuilder;->nextSpanTransition(IILjava/lang/Class;)I
@@ -15003,15 +10951,17 @@
 HSPLandroid/text/SpannableStringBuilder;->removeSpan(II)V
 HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;)V
 HSPLandroid/text/SpannableStringBuilder;->removeSpan(Ljava/lang/Object;I)V
-HSPLandroid/text/SpannableStringBuilder;->removeSpansForChange(IIZI)Z
-HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/Editable;
 HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;)Landroid/text/SpannableStringBuilder;
 HSPLandroid/text/SpannableStringBuilder;->replace(IILjava/lang/CharSequence;II)Landroid/text/SpannableStringBuilder;
 HSPLandroid/text/SpannableStringBuilder;->resizeFor(I)V
+HSPLandroid/text/SpannableStringBuilder;->resolveGap(I)I
 HSPLandroid/text/SpannableStringBuilder;->restoreInvariants()V
+HSPLandroid/text/SpannableStringBuilder;->rightChild(I)I
 HSPLandroid/text/SpannableStringBuilder;->sendAfterTextChanged([Landroid/text/TextWatcher;)V
 HSPLandroid/text/SpannableStringBuilder;->sendBeforeTextChanged([Landroid/text/TextWatcher;III)V
+HSPLandroid/text/SpannableStringBuilder;->sendSpanAdded(Ljava/lang/Object;II)V
 HSPLandroid/text/SpannableStringBuilder;->sendSpanChanged(Ljava/lang/Object;IIII)V
+HSPLandroid/text/SpannableStringBuilder;->sendSpanRemoved(Ljava/lang/Object;II)V
 HSPLandroid/text/SpannableStringBuilder;->sendTextChanged([Landroid/text/TextWatcher;III)V
 HSPLandroid/text/SpannableStringBuilder;->sendToSpanWatchers(III)V
 HSPLandroid/text/SpannableStringBuilder;->setFilters([Landroid/text/InputFilter;)V
@@ -15021,30 +10971,38 @@
 HSPLandroid/text/SpannableStringBuilder;->sort([Ljava/lang/Object;[I[I)V
 HSPLandroid/text/SpannableStringBuilder;->subSequence(II)Ljava/lang/CharSequence;
 HSPLandroid/text/SpannableStringBuilder;->toString()Ljava/lang/String;
-HSPLandroid/text/SpannableStringBuilder;->updatedIntervalBound(IIIIZZ)I
+HSPLandroid/text/SpannableStringBuilder;->treeRoot()I
 HSPLandroid/text/SpannableStringInternal;-><init>(Ljava/lang/CharSequence;IIZ)V
 HSPLandroid/text/SpannableStringInternal;->charAt(I)C
 HSPLandroid/text/SpannableStringInternal;->checkRange(Ljava/lang/String;II)V
-HSPLandroid/text/SpannableStringInternal;->copySpans(Landroid/text/SpannableStringInternal;IIZ)V
-HSPLandroid/text/SpannableStringInternal;->copySpans(Landroid/text/Spanned;IIZ)V
-HSPLandroid/text/SpannableStringInternal;->equals(Ljava/lang/Object;)Z
+HSPLandroid/text/SpannableStringInternal;->copySpansFromInternal(Landroid/text/SpannableStringInternal;IIZ)V
+HSPLandroid/text/SpannableStringInternal;->copySpansFromSpanned(Landroid/text/Spanned;IIZ)V
 HSPLandroid/text/SpannableStringInternal;->getChars(II[CI)V
+HSPLandroid/text/SpannableStringInternal;->getSpanEnd(Ljava/lang/Object;)I
+HSPLandroid/text/SpannableStringInternal;->getSpanFlags(Ljava/lang/Object;)I
+HSPLandroid/text/SpannableStringInternal;->getSpanStart(Ljava/lang/Object;)I
 HSPLandroid/text/SpannableStringInternal;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
+HSPLandroid/text/SpannableStringInternal;->isOutOfCopyRange(IIII)Z
 HSPLandroid/text/SpannableStringInternal;->length()I
 HSPLandroid/text/SpannableStringInternal;->nextSpanTransition(IILjava/lang/Class;)I
-HSPLandroid/text/SpannableStringInternal;->removeSpan(Ljava/lang/Object;I)V
-HSPLandroid/text/SpannableStringInternal;->sendSpanChanged(Ljava/lang/Object;IIII)V
+HSPLandroid/text/SpannableStringInternal;->sendSpanAdded(Ljava/lang/Object;II)V
+HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;III)V
 HSPLandroid/text/SpannableStringInternal;->setSpan(Ljava/lang/Object;IIIZ)V
 HSPLandroid/text/SpannableStringInternal;->toString()Ljava/lang/String;
 HSPLandroid/text/SpannedString;-><init>(Ljava/lang/CharSequence;)V
-HSPLandroid/text/SpannedString;->equals(Ljava/lang/Object;)Z
+HSPLandroid/text/SpannedString;-><init>(Ljava/lang/CharSequence;Z)V
 HSPLandroid/text/SpannedString;->getSpanEnd(Ljava/lang/Object;)I
 HSPLandroid/text/SpannedString;->getSpanFlags(Ljava/lang/Object;)I
 HSPLandroid/text/SpannedString;->getSpanStart(Ljava/lang/Object;)I
 HSPLandroid/text/SpannedString;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/text/SpannedString;->nextSpanTransition(IILjava/lang/Class;)I
+HSPLandroid/text/StaticLayout$Builder;-><init>()V
+HSPLandroid/text/StaticLayout$Builder;->access$100(Landroid/text/StaticLayout$Builder;)Z
 HSPLandroid/text/StaticLayout$Builder;->access$1000(Landroid/text/StaticLayout$Builder;)F
 HSPLandroid/text/StaticLayout$Builder;->access$1100(Landroid/text/StaticLayout$Builder;)I
+HSPLandroid/text/StaticLayout$Builder;->access$1200(Landroid/text/StaticLayout$Builder;)I
+HSPLandroid/text/StaticLayout$Builder;->access$1300(Landroid/text/StaticLayout$Builder;)[I
+HSPLandroid/text/StaticLayout$Builder;->access$1400(Landroid/text/StaticLayout$Builder;)[I
 HSPLandroid/text/StaticLayout$Builder;->access$1500(Landroid/text/StaticLayout$Builder;)I
 HSPLandroid/text/StaticLayout$Builder;->access$1600(Landroid/text/StaticLayout$Builder;)I
 HSPLandroid/text/StaticLayout$Builder;->access$1700(Landroid/text/StaticLayout$Builder;)I
@@ -15057,11 +11015,30 @@
 HSPLandroid/text/StaticLayout$Builder;->access$400(Landroid/text/StaticLayout$Builder;)Ljava/lang/CharSequence;
 HSPLandroid/text/StaticLayout$Builder;->access$500(Landroid/text/StaticLayout$Builder;)Landroid/text/TextPaint;
 HSPLandroid/text/StaticLayout$Builder;->access$600(Landroid/text/StaticLayout$Builder;)I
+HSPLandroid/text/StaticLayout$Builder;->access$700(Landroid/text/StaticLayout$Builder;)Landroid/text/Layout$Alignment;
 HSPLandroid/text/StaticLayout$Builder;->access$800(Landroid/text/StaticLayout$Builder;)Landroid/text/TextDirectionHeuristic;
 HSPLandroid/text/StaticLayout$Builder;->access$900(Landroid/text/StaticLayout$Builder;)F
 HSPLandroid/text/StaticLayout$Builder;->build()Landroid/text/StaticLayout;
+HSPLandroid/text/StaticLayout$Builder;->finish()V
 HSPLandroid/text/StaticLayout$Builder;->obtain(Ljava/lang/CharSequence;IILandroid/text/TextPaint;I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->recycle(Landroid/text/StaticLayout$Builder;)V
+HSPLandroid/text/StaticLayout$Builder;->setAddLastLineLineSpacing(Z)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setEllipsizedWidth(I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setHyphenationFrequency(I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setIncludePad(Z)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setJustificationMode(I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setPaint(Landroid/text/TextPaint;)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setText(Ljava/lang/CharSequence;II)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder;
+HSPLandroid/text/StaticLayout$Builder;->setWidth(I)Landroid/text/StaticLayout$Builder;
 HSPLandroid/text/StaticLayout;-><init>(Landroid/text/StaticLayout$Builder;)V
+HSPLandroid/text/StaticLayout;-><init>(Landroid/text/StaticLayout$Builder;Landroid/text/StaticLayout$1;)V
 HSPLandroid/text/StaticLayout;-><init>(Ljava/lang/CharSequence;)V
 HSPLandroid/text/StaticLayout;->calculateEllipsis(IILandroid/text/MeasuredParagraph;IFLandroid/text/TextUtils$TruncateAt;IFLandroid/text/TextPaint;Z)V
 HSPLandroid/text/StaticLayout;->generate(Landroid/text/StaticLayout$Builder;ZZ)V
@@ -15083,31 +11060,35 @@
 HSPLandroid/text/StaticLayout;->getParagraphDirection(I)I
 HSPLandroid/text/StaticLayout;->getStartHyphenEdit(I)I
 HSPLandroid/text/StaticLayout;->getTopPadding()I
+HSPLandroid/text/StaticLayout;->getTotalInsets(I)F
 HSPLandroid/text/StaticLayout;->out(Ljava/lang/CharSequence;IIIIIIIFF[Landroid/text/style/LineHeightSpan;[ILandroid/graphics/Paint$FontMetricsInt;ZIZLandroid/text/MeasuredParagraph;IZZZ[CILandroid/text/TextUtils$TruncateAt;FFLandroid/text/TextPaint;Z)I
-HSPLandroid/text/TextDirectionHeuristics$AnyStrong;-><init>(Z)V
-HSPLandroid/text/TextDirectionHeuristics$FirstStrong;-><init>()V
+HSPLandroid/text/StaticLayout;->packHyphenEdit(II)I
+HSPLandroid/text/StaticLayout;->unpackEndHyphenEdit(I)I
+HSPLandroid/text/StaticLayout;->unpackStartHyphenEdit(I)I
 HSPLandroid/text/TextDirectionHeuristics$FirstStrong;->checkRtl(Ljava/lang/CharSequence;II)I
+HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->doCheck(Ljava/lang/CharSequence;II)Z
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicImpl;->isRtl(Ljava/lang/CharSequence;II)Z
-HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;-><init>(Landroid/text/TextDirectionHeuristics$TextDirectionAlgorithm;ZLandroid/text/TextDirectionHeuristics$1;)V
 HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicInternal;->defaultIsRtl()Z
-HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;-><init>()V
-HSPLandroid/text/TextDirectionHeuristics$TextDirectionHeuristicLocale;->defaultIsRtl()Z
+HSPLandroid/text/TextDirectionHeuristics;->access$100(I)I
 HSPLandroid/text/TextDirectionHeuristics;->isRtlCodePoint(I)I
-HSPLandroid/text/TextLine$DecorationInfo;->copyInfo()Landroid/text/TextLine$DecorationInfo;
+HSPLandroid/text/TextLine$DecorationInfo;-><init>()V
+HSPLandroid/text/TextLine$DecorationInfo;-><init>(Landroid/text/TextLine$1;)V
+HSPLandroid/text/TextLine$DecorationInfo;->hasDecoration()Z
 HSPLandroid/text/TextLine;-><init>()V
+HSPLandroid/text/TextLine;->adjustEndHyphenEdit(II)I
+HSPLandroid/text/TextLine;->adjustStartHyphenEdit(II)I
 HSPLandroid/text/TextLine;->draw(Landroid/graphics/Canvas;FIII)V
 HSPLandroid/text/TextLine;->drawRun(Landroid/graphics/Canvas;IIZFIIIZ)F
-HSPLandroid/text/TextLine;->drawStroke(Landroid/text/TextPaint;Landroid/graphics/Canvas;IFFFFF)V
 HSPLandroid/text/TextLine;->drawTextRun(Landroid/graphics/Canvas;Landroid/text/TextPaint;IIIIZFI)V
 HSPLandroid/text/TextLine;->equalAttributes(Landroid/text/TextPaint;Landroid/text/TextPaint;)Z
 HSPLandroid/text/TextLine;->expandMetricsFromPaint(Landroid/graphics/Paint$FontMetricsInt;Landroid/text/TextPaint;)V
 HSPLandroid/text/TextLine;->extractDecorationInfo(Landroid/text/TextPaint;Landroid/text/TextLine$DecorationInfo;)V
 HSPLandroid/text/TextLine;->getRunAdvance(Landroid/text/TextPaint;IIIIZI)F
-HSPLandroid/text/TextLine;->handleReplacement(Landroid/text/style/ReplacementSpan;Landroid/text/TextPaint;IIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
 HSPLandroid/text/TextLine;->handleRun(IIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;Z)F
 HSPLandroid/text/TextLine;->handleText(Landroid/text/TextPaint;IIIIZLandroid/graphics/Canvas;FIIILandroid/graphics/Paint$FontMetricsInt;ZILjava/util/ArrayList;)F
 HSPLandroid/text/TextLine;->isLineEndSpace(C)Z
 HSPLandroid/text/TextLine;->measure(IZLandroid/graphics/Paint$FontMetricsInt;)F
+HSPLandroid/text/TextLine;->measureRun(IIIZLandroid/graphics/Paint$FontMetricsInt;)F
 HSPLandroid/text/TextLine;->metrics(Landroid/graphics/Paint$FontMetricsInt;)F
 HSPLandroid/text/TextLine;->obtain()Landroid/text/TextLine;
 HSPLandroid/text/TextLine;->recycle(Landroid/text/TextLine;)Landroid/text/TextLine;
@@ -15115,11 +11096,8 @@
 HSPLandroid/text/TextLine;->updateMetrics(Landroid/graphics/Paint$FontMetricsInt;IIIII)V
 HSPLandroid/text/TextPaint;-><init>()V
 HSPLandroid/text/TextPaint;-><init>(I)V
-HSPLandroid/text/TextPaint;-><init>(Landroid/graphics/Paint;)V
-HSPLandroid/text/TextPaint;->getUnderlineThickness()F
 HSPLandroid/text/TextPaint;->set(Landroid/text/TextPaint;)V
 HSPLandroid/text/TextPaint;->setUnderlineText(IF)V
-HSPLandroid/text/TextUtils$1;-><init>()V
 HSPLandroid/text/TextUtils$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/text/TextUtils$SimpleStringSplitter;-><init>(C)V
@@ -15128,180 +11106,121 @@
 HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/Object;
 HSPLandroid/text/TextUtils$SimpleStringSplitter;->next()Ljava/lang/String;
 HSPLandroid/text/TextUtils$SimpleStringSplitter;->setString(Ljava/lang/String;)V
-HSPLandroid/text/TextUtils$StringWithRemovedChars;->toString()Ljava/lang/String;
-HSPLandroid/text/TextUtils$TruncateAt;-><init>(Ljava/lang/String;I)V
 HSPLandroid/text/TextUtils;->concat([Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->copySpansFrom(Landroid/text/Spanned;IILjava/lang/Class;Landroid/text/Spannable;I)V
 HSPLandroid/text/TextUtils;->couldAffectRtl(C)Z
-HSPLandroid/text/TextUtils;->delimitedStringContains(Ljava/lang/String;CLjava/lang/String;)Z
+HSPLandroid/text/TextUtils;->doesNotNeedBidi([CII)Z
+HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;ZLandroid/text/TextUtils$EllipsizeCallback;Landroid/text/TextDirectionHeuristic;Ljava/lang/String;)Ljava/lang/CharSequence;
+HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->equals(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
-HSPLandroid/text/TextUtils;->expandTemplate(Ljava/lang/CharSequence;[Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->getCapsMode(Ljava/lang/CharSequence;II)I
 HSPLandroid/text/TextUtils;->getChars(Ljava/lang/CharSequence;II[CI)V
 HSPLandroid/text/TextUtils;->getEllipsisString(Landroid/text/TextUtils$TruncateAt;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->getLayoutDirectionFromLocale(Ljava/util/Locale;)I
+HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;C)I
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CI)I
 HSPLandroid/text/TextUtils;->indexOf(Ljava/lang/CharSequence;CII)I
+HSPLandroid/text/TextUtils;->isDigitsOnly(Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->isEmpty(Ljava/lang/CharSequence;)Z
-HSPLandroid/text/TextUtils;->isGraphic(Ljava/lang/CharSequence;)Z
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->join(Ljava/lang/CharSequence;[Ljava/lang/Object;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CI)I
 HSPLandroid/text/TextUtils;->lastIndexOf(Ljava/lang/CharSequence;CII)I
-HSPLandroid/text/TextUtils;->makeSafeForPresentation(Ljava/lang/String;IFI)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->obtain(I)[C
+HSPLandroid/text/TextUtils;->packRangeInLong(II)J
 HSPLandroid/text/TextUtils;->recycle([C)V
 HSPLandroid/text/TextUtils;->removeEmptySpans([Ljava/lang/Object;Landroid/text/Spanned;Ljava/lang/Class;)[Ljava/lang/Object;
-HSPLandroid/text/TextUtils;->safeIntern(Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->split(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
 HSPLandroid/text/TextUtils;->stringOrSpannedString(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->substring(Ljava/lang/CharSequence;II)Ljava/lang/String;
 HSPLandroid/text/TextUtils;->toUpperCase(Ljava/util/Locale;Ljava/lang/CharSequence;Z)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->trimNoCopySpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->trimToParcelableSize(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLandroid/text/TextUtils;->trimToSize(Ljava/lang/CharSequence;I)Ljava/lang/CharSequence;
+HSPLandroid/text/TextUtils;->unpackRangeEndFromLong(J)I
+HSPLandroid/text/TextUtils;->unpackRangeStartFromLong(J)I
 HSPLandroid/text/TextUtils;->writeToParcel(Ljava/lang/CharSequence;Landroid/os/Parcel;I)V
-HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;J)Ljava/lang/CharSequence;
 HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Calendar;)Ljava/lang/CharSequence;
 HSPLandroid/text/format/DateFormat;->format(Ljava/lang/CharSequence;Ljava/util/Date;)Ljava/lang/CharSequence;
 HSPLandroid/text/format/DateFormat;->getBestDateTimePattern(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/text/format/DateFormat;->getDayOfWeekString(Llibcore/icu/LocaleData;III)Ljava/lang/String;
 HSPLandroid/text/format/DateFormat;->getMonthString(Llibcore/icu/LocaleData;III)Ljava/lang/String;
-HSPLandroid/text/format/DateFormat;->getTimeFormat(Landroid/content/Context;)Ljava/text/DateFormat;
-HSPLandroid/text/format/DateFormat;->getTimeFormatString(Landroid/content/Context;)Ljava/lang/String;
 HSPLandroid/text/format/DateFormat;->hasDesignator(Ljava/lang/CharSequence;C)Z
 HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;)Z
 HSPLandroid/text/format/DateFormat;->is24HourFormat(Landroid/content/Context;I)Z
 HSPLandroid/text/format/DateFormat;->is24HourLocale(Ljava/util/Locale;)Z
 HSPLandroid/text/format/DateFormat;->zeroPad(II)Ljava/lang/String;
 HSPLandroid/text/format/DateUtils;->formatDateRange(Landroid/content/Context;Ljava/util/Formatter;JJILjava/lang/String;)Ljava/util/Formatter;
-HSPLandroid/text/format/DateUtils;->formatDateTime(Landroid/content/Context;JI)Ljava/lang/String;
 HSPLandroid/text/format/DateUtils;->formatElapsedTime(J)Ljava/lang/String;
 HSPLandroid/text/format/DateUtils;->formatElapsedTime(Ljava/lang/StringBuilder;J)Ljava/lang/String;
 HSPLandroid/text/format/DateUtils;->initFormatStrings()V
 HSPLandroid/text/format/DateUtils;->initFormatStringsLocked()V
-HSPLandroid/text/format/Formatter;->formatBytes(Landroid/content/res/Resources;JI)Landroid/text/format/Formatter$BytesResult;
-HSPLandroid/text/format/Formatter;->formatFileSize(Landroid/content/Context;J)Ljava/lang/String;
-HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsFromTime(Landroid/text/format/Time;)V
-HSPLandroid/text/format/Time$TimeCalculator;->copyFieldsToTime(Landroid/text/format/Time;)V
-HSPLandroid/text/format/Time$TimeCalculator;->format(Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/text/format/Time$TimeCalculator;-><init>(Ljava/lang/String;)V
 HSPLandroid/text/format/Time$TimeCalculator;->lookupZoneInfo(Ljava/lang/String;)Llibcore/util/ZoneInfo;
-HSPLandroid/text/format/Time$TimeCalculator;->setTimeInMillis(J)V
-HSPLandroid/text/format/Time$TimeCalculator;->toMillis(Z)J
 HSPLandroid/text/format/Time;-><init>()V
-HSPLandroid/text/format/Time;-><init>(Ljava/lang/String;)V
-HSPLandroid/text/format/Time;->format(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/text/format/Time;->getJulianDay(JJ)I
-HSPLandroid/text/format/Time;->set(J)V
-HSPLandroid/text/format/Time;->setToNow()V
-HSPLandroid/text/format/Time;->toMillis(Z)J
-HSPLandroid/text/format/TimeFormatter;-><init>()V
-HSPLandroid/text/format/TimeFormatter;->format(Ljava/lang/String;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)Ljava/lang/String;
-HSPLandroid/text/format/TimeFormatter;->formatInternal(Ljava/lang/String;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)V
-HSPLandroid/text/format/TimeFormatter;->handleToken(Ljava/nio/CharBuffer;Llibcore/util/ZoneInfo$WallTime;Llibcore/util/ZoneInfo;)Z
+HSPLandroid/text/format/Time;->initialize(Ljava/lang/String;)V
 HSPLandroid/text/method/AllCapsTransformationMethod;-><init>(Landroid/content/Context;)V
 HSPLandroid/text/method/AllCapsTransformationMethod;->getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;
 HSPLandroid/text/method/AllCapsTransformationMethod;->setLengthChangesAllowed(Z)V
+HSPLandroid/text/method/ArrowKeyMovementMethod;-><init>()V
 HSPLandroid/text/method/ArrowKeyMovementMethod;->canSelectArbitrarily()Z
 HSPLandroid/text/method/ArrowKeyMovementMethod;->getInstance()Landroid/text/method/MovementMethod;
 HSPLandroid/text/method/ArrowKeyMovementMethod;->initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V
-HSPLandroid/text/method/ArrowKeyMovementMethod;->onTakeFocus(Landroid/widget/TextView;Landroid/text/Spannable;I)V
-HSPLandroid/text/method/LinkMovementMethod;->initialize(Landroid/widget/TextView;Landroid/text/Spannable;)V
-HSPLandroid/text/method/MetaKeyKeyListener;->getMetaState(Ljava/lang/CharSequence;I)I
+HSPLandroid/text/method/BaseKeyListener;-><init>()V
+HSPLandroid/text/method/BaseMovementMethod;-><init>()V
+HSPLandroid/text/method/MetaKeyKeyListener;-><init>()V
 HSPLandroid/text/method/MetaKeyKeyListener;->isMetaTracker(Ljava/lang/CharSequence;Ljava/lang/Object;)Z
-HSPLandroid/text/method/MetaKeyKeyListener;->resetMetaState(Landroid/text/Spannable;)V
-HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->charAt(I)C
+HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;-><init>(Ljava/lang/CharSequence;[C[C)V
 HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->getChars(II[CI)V
 HSPLandroid/text/method/ReplacementTransformationMethod$ReplacementCharSequence;->length()I
-HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanEnd(Ljava/lang/Object;)I
-HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanFlags(Ljava/lang/Object;)I
-HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpanStart(Ljava/lang/Object;)I
+HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;-><init>(Landroid/text/Spanned;[C[C)V
 HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->getSpans(IILjava/lang/Class;)[Ljava/lang/Object;
-HSPLandroid/text/method/ReplacementTransformationMethod$SpannedReplacementCharSequence;->nextSpanTransition(IILjava/lang/Class;)I
+HSPLandroid/text/method/ReplacementTransformationMethod;-><init>()V
 HSPLandroid/text/method/ReplacementTransformationMethod;->getTransformation(Ljava/lang/CharSequence;Landroid/view/View;)Ljava/lang/CharSequence;
-HSPLandroid/text/method/ReplacementTransformationMethod;->onFocusChanged(Landroid/view/View;Ljava/lang/CharSequence;ZILandroid/graphics/Rect;)V
+HSPLandroid/text/method/SingleLineTransformationMethod;-><init>()V
 HSPLandroid/text/method/SingleLineTransformationMethod;->getInstance()Landroid/text/method/SingleLineTransformationMethod;
 HSPLandroid/text/method/SingleLineTransformationMethod;->getOriginal()[C
 HSPLandroid/text/method/SingleLineTransformationMethod;->getReplacement()[C
-HSPLandroid/text/method/TextKeyListener$Capitalize;-><init>(Ljava/lang/String;I)V
-HSPLandroid/text/method/TextKeyListener$Capitalize;->values()[Landroid/text/method/TextKeyListener$Capitalize;
-HSPLandroid/text/method/TextKeyListener;->getInstance()Landroid/text/method/TextKeyListener;
+HSPLandroid/text/method/TextKeyListener;-><init>(Landroid/text/method/TextKeyListener$Capitalize;Z)V
 HSPLandroid/text/method/TextKeyListener;->getInstance(ZLandroid/text/method/TextKeyListener$Capitalize;)Landroid/text/method/TextKeyListener;
 HSPLandroid/text/method/TextKeyListener;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/text/method/TextKeyListener;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V
 HSPLandroid/text/method/TextKeyListener;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/text/method/WordIterator;->checkOffsetIsValid(I)V
-HSPLandroid/text/method/WordIterator;->following(I)I
-HSPLandroid/text/method/WordIterator;->getBeginning(I)I
-HSPLandroid/text/method/WordIterator;->getBeginning(IZ)I
-HSPLandroid/text/method/WordIterator;->setCharSequence(Ljava/lang/CharSequence;II)V
-HSPLandroid/text/style/BackgroundColorSpan;-><init>(I)V
+HSPLandroid/text/style/CharacterStyle;-><init>()V
 HSPLandroid/text/style/CharacterStyle;->getUnderlying()Landroid/text/style/CharacterStyle;
-HSPLandroid/text/style/DynamicDrawableSpan;->getSize(Landroid/graphics/Paint;Ljava/lang/CharSequence;IILandroid/graphics/Paint$FontMetricsInt;)I
+HSPLandroid/text/style/ClickableSpan;-><init>()V
 HSPLandroid/text/style/ForegroundColorSpan;-><init>(I)V
-HSPLandroid/text/style/ForegroundColorSpan;->getSpanTypeIdInternal()I
-HSPLandroid/text/style/ForegroundColorSpan;->updateDrawState(Landroid/text/TextPaint;)V
-HSPLandroid/text/style/ForegroundColorSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/text/style/ImageSpan;->getDrawable()Landroid/graphics/drawable/Drawable;
+HSPLandroid/text/style/MetricAffectingSpan;-><init>()V
 HSPLandroid/text/style/MetricAffectingSpan;->getUnderlying()Landroid/text/style/CharacterStyle;
 HSPLandroid/text/style/MetricAffectingSpan;->getUnderlying()Landroid/text/style/MetricAffectingSpan;
 HSPLandroid/text/style/StyleSpan;-><init>(I)V
-HSPLandroid/text/style/StyleSpan;->apply(Landroid/graphics/Paint;I)V
-HSPLandroid/text/style/StyleSpan;->getSpanTypeIdInternal()I
-HSPLandroid/text/style/StyleSpan;->updateDrawState(Landroid/text/TextPaint;)V
-HSPLandroid/text/style/StyleSpan;->updateMeasureState(Landroid/text/TextPaint;)V
-HSPLandroid/text/style/StyleSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/text/style/SuggestionSpan$1;-><init>()V
-HSPLandroid/text/style/SuggestionSpan;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/content/Context;I)V
-HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/content/Context;II)V
 HSPLandroid/text/style/TextAppearanceSpan;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/text/style/TextAppearanceSpan;->getSpanTypeIdInternal()I
-HSPLandroid/text/style/TextAppearanceSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/text/style/TtsSpan;->getSpanTypeIdInternal()I
-HSPLandroid/text/style/TtsSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/text/style/UnderlineSpan;-><init>()V
-HSPLandroid/text/style/UnderlineSpan;->getSpanTypeIdInternal()I
-HSPLandroid/text/style/UnderlineSpan;->updateDrawState(Landroid/text/TextPaint;)V
-HSPLandroid/text/style/UnderlineSpan;->writeToParcelInternal(Landroid/os/Parcel;I)V
-HSPLandroid/transition/AutoTransition;-><init>()V
-HSPLandroid/transition/ChangeBounds$1;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeBounds$2;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeBounds$3;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeBounds$4;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeBounds$5;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeBounds$6;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeImageTransform$1;-><init>()V
-HSPLandroid/transition/ChangeImageTransform$2;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeTransform$1;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
-HSPLandroid/transition/ChangeTransform$2;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
+HSPLandroid/transition/ChangeBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/transition/ChangeBounds;->setResizeClip(Z)V
+HSPLandroid/transition/ChangeClipBounds;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/transition/ChangeImageTransform;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/transition/ChangeTransform;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/transition/Transition$1;-><init>()V
-HSPLandroid/transition/Transition;-><init>()V
+HSPLandroid/transition/Fade;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/transition/Transition;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/transition/Transition;->setDuration(J)Landroid/transition/Transition;
+HSPLandroid/transition/TransitionInflater;-><init>(Landroid/content/Context;)V
 HSPLandroid/transition/TransitionInflater;->createTransitionFromXml(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/transition/Transition;)Landroid/transition/Transition;
 HSPLandroid/transition/TransitionInflater;->from(Landroid/content/Context;)Landroid/transition/TransitionInflater;
 HSPLandroid/transition/TransitionInflater;->inflateTransition(I)Landroid/transition/Transition;
 HSPLandroid/transition/TransitionManager;-><init>()V
-HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;)V
-HSPLandroid/transition/TransitionManager;->beginDelayedTransition(Landroid/view/ViewGroup;Landroid/transition/Transition;)V
-HSPLandroid/transition/TransitionManager;->getRunningTransitions()Landroid/util/ArrayMap;
-HSPLandroid/transition/TransitionSet;-><init>()V
 HSPLandroid/transition/TransitionSet;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/transition/TransitionSet;->addTransition(Landroid/transition/Transition;)Landroid/transition/TransitionSet;
+HSPLandroid/transition/TransitionSet;->addTransitionInternal(Landroid/transition/Transition;)V
 HSPLandroid/transition/TransitionSet;->getTransitionCount()I
 HSPLandroid/transition/TransitionSet;->setOrdering(I)Landroid/transition/TransitionSet;
+HSPLandroid/transition/TransitionValuesMaps;-><init>()V
+HSPLandroid/transition/Visibility;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/transition/Visibility;->getMode()I
+HSPLandroid/transition/Visibility;->setMode(I)V
 HSPLandroid/util/AndroidException;-><init>()V
 HSPLandroid/util/AndroidException;-><init>(Ljava/lang/String;)V
+HSPLandroid/util/AndroidException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
 HSPLandroid/util/AndroidRuntimeException;-><init>(Ljava/lang/String;)V
+HSPLandroid/util/ArrayMap$1;-><init>(Landroid/util/ArrayMap;)V
 HSPLandroid/util/ArrayMap$1;->colGetEntry(II)Ljava/lang/Object;
-HSPLandroid/util/ArrayMap$1;->colGetMap()Ljava/util/Map;
 HSPLandroid/util/ArrayMap$1;->colGetSize()I
 HSPLandroid/util/ArrayMap$1;->colIndexOfKey(Ljava/lang/Object;)I
-HSPLandroid/util/ArrayMap$1;->colIndexOfValue(Ljava/lang/Object;)I
 HSPLandroid/util/ArrayMap$1;->colRemoveAt(I)V
 HSPLandroid/util/ArrayMap;-><init>()V
 HSPLandroid/util/ArrayMap;-><init>(I)V
@@ -15311,14 +11230,14 @@
 HSPLandroid/util/ArrayMap;->append(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/util/ArrayMap;->binarySearchHashes([III)I
 HSPLandroid/util/ArrayMap;->clear()V
-HSPLandroid/util/ArrayMap;->containsAll(Ljava/util/Collection;)Z
 HSPLandroid/util/ArrayMap;->containsKey(Ljava/lang/Object;)Z
 HSPLandroid/util/ArrayMap;->ensureCapacity(I)V
 HSPLandroid/util/ArrayMap;->entrySet()Ljava/util/Set;
 HSPLandroid/util/ArrayMap;->equals(Ljava/lang/Object;)Z
+HSPLandroid/util/ArrayMap;->erase()V
 HSPLandroid/util/ArrayMap;->freeArrays([I[Ljava/lang/Object;I)V
 HSPLandroid/util/ArrayMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/util/ArrayMap;->hashCode()I
+HSPLandroid/util/ArrayMap;->getCollection()Landroid/util/MapCollections;
 HSPLandroid/util/ArrayMap;->indexOf(Ljava/lang/Object;I)I
 HSPLandroid/util/ArrayMap;->indexOfKey(Ljava/lang/Object;)I
 HSPLandroid/util/ArrayMap;->indexOfNull()I
@@ -15331,17 +11250,17 @@
 HSPLandroid/util/ArrayMap;->putAll(Ljava/util/Map;)V
 HSPLandroid/util/ArrayMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/ArrayMap;->removeAt(I)Ljava/lang/Object;
-HPLandroid/util/ArrayMap;->setValueAt(ILjava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/ArrayMap;->size()I
 HSPLandroid/util/ArrayMap;->toString()Ljava/lang/String;
 HSPLandroid/util/ArrayMap;->validate()V
 HSPLandroid/util/ArrayMap;->valueAt(I)Ljava/lang/Object;
 HSPLandroid/util/ArrayMap;->values()Ljava/util/Collection;
+HSPLandroid/util/ArraySet$1;-><init>(Landroid/util/ArraySet;)V
 HSPLandroid/util/ArraySet$1;->colGetEntry(II)Ljava/lang/Object;
 HSPLandroid/util/ArraySet$1;->colGetSize()I
-HSPLandroid/util/ArraySet$1;->colRemoveAt(I)V
 HSPLandroid/util/ArraySet;-><init>()V
 HSPLandroid/util/ArraySet;-><init>(I)V
+HSPLandroid/util/ArraySet;-><init>(IZ)V
 HSPLandroid/util/ArraySet;-><init>(Landroid/util/ArraySet;)V
 HSPLandroid/util/ArraySet;-><init>(Ljava/util/Collection;)V
 HSPLandroid/util/ArraySet;->add(Ljava/lang/Object;)Z
@@ -15349,11 +11268,13 @@
 HSPLandroid/util/ArraySet;->addAll(Ljava/util/Collection;)Z
 HSPLandroid/util/ArraySet;->allocArrays(I)V
 HSPLandroid/util/ArraySet;->append(Ljava/lang/Object;)V
+HSPLandroid/util/ArraySet;->binarySearch([II)I
 HSPLandroid/util/ArraySet;->clear()V
 HSPLandroid/util/ArraySet;->contains(Ljava/lang/Object;)Z
 HSPLandroid/util/ArraySet;->ensureCapacity(I)V
 HSPLandroid/util/ArraySet;->equals(Ljava/lang/Object;)Z
 HSPLandroid/util/ArraySet;->freeArrays([I[Ljava/lang/Object;I)V
+HSPLandroid/util/ArraySet;->getCollection()Landroid/util/MapCollections;
 HSPLandroid/util/ArraySet;->hashCode()I
 HSPLandroid/util/ArraySet;->indexOf(Ljava/lang/Object;)I
 HSPLandroid/util/ArraySet;->indexOf(Ljava/lang/Object;I)I
@@ -15363,25 +11284,17 @@
 HSPLandroid/util/ArraySet;->remove(Ljava/lang/Object;)Z
 HSPLandroid/util/ArraySet;->removeAll(Ljava/util/Collection;)Z
 HSPLandroid/util/ArraySet;->removeAt(I)Ljava/lang/Object;
-HSPLandroid/util/ArraySet;->retainAll(Ljava/util/Collection;)Z
+HSPLandroid/util/ArraySet;->shouldShrink()Z
 HSPLandroid/util/ArraySet;->size()I
 HSPLandroid/util/ArraySet;->toArray()[Ljava/lang/Object;
 HSPLandroid/util/ArraySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
-HSPLandroid/util/ArraySet;->toString()Ljava/lang/String;
 HSPLandroid/util/ArraySet;->valueAt(I)Ljava/lang/Object;
 HSPLandroid/util/ArraySet;->valueAtUnchecked(I)Ljava/lang/Object;
 HSPLandroid/util/AtomicFile;-><init>(Ljava/io/File;)V
 HSPLandroid/util/AtomicFile;-><init>(Ljava/io/File;Ljava/lang/String;)V
-HSPLandroid/util/AtomicFile;->delete()V
-HSPLandroid/util/AtomicFile;->exists()Z
-HSPLandroid/util/AtomicFile;->failWrite(Ljava/io/FileOutputStream;)V
-HSPLandroid/util/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V
-HSPLandroid/util/AtomicFile;->getBaseFile()Ljava/io/File;
-HSPLandroid/util/AtomicFile;->getLastModifiedTime()J
 HSPLandroid/util/AtomicFile;->openRead()Ljava/io/FileInputStream;
-HSPLandroid/util/AtomicFile;->readFully()[B
-HSPLandroid/util/AtomicFile;->startWrite()Ljava/io/FileOutputStream;
-HSPLandroid/util/AtomicFile;->startWrite(J)Ljava/io/FileOutputStream;
+HSPLandroid/util/Base64$Coder;-><init>()V
+HSPLandroid/util/Base64$Decoder;-><init>(I[B)V
 HSPLandroid/util/Base64$Decoder;->process([BIIZ)Z
 HSPLandroid/util/Base64$Encoder;-><init>(I[B)V
 HSPLandroid/util/Base64$Encoder;->process([BIIZ)Z
@@ -15392,67 +11305,36 @@
 HSPLandroid/util/Base64;->encode([BIII)[B
 HSPLandroid/util/Base64;->encodeToString([BI)Ljava/lang/String;
 HSPLandroid/util/Base64;->encodeToString([BIII)Ljava/lang/String;
-HSPLandroid/util/ByteStringUtils;->fromHexToByteArray(Ljava/lang/String;)[B
-HSPLandroid/util/ByteStringUtils;->toHexString([B)Ljava/lang/String;
 HSPLandroid/util/ContainerHelpers;->binarySearch([III)I
-HSPLandroid/util/DataUnit$1;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$2;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$3;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$4;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$5;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$5;->toBytes(J)J
-HSPLandroid/util/DataUnit$6;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/DataUnit$6;->toBytes(J)J
-HSPLandroid/util/DebugUtils;->buildShortClassTag(Ljava/lang/Object;Ljava/lang/StringBuilder;)V
+HSPLandroid/util/ContainerHelpers;->binarySearch([JIJ)I
+HSPLandroid/util/DebugUtils;->constNameWithoutPrefix(Ljava/lang/String;Ljava/lang/reflect/Field;)Ljava/lang/String;
 HSPLandroid/util/DebugUtils;->flagsToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String;
-HSPLandroid/util/DebugUtils;->valueToString(Ljava/lang/Class;Ljava/lang/String;I)Ljava/lang/String;
 HSPLandroid/util/DisplayMetrics;-><init>()V
-HSPLandroid/util/DisplayMetrics;->getDeviceDensity()I
 HSPLandroid/util/DisplayMetrics;->setTo(Landroid/util/DisplayMetrics;)V
 HSPLandroid/util/DisplayMetrics;->setToDefaults()V
-HSPLandroid/util/EventLog$Event;-><init>([B)V
-HSPLandroid/util/EventLog$Event;->decodeObject()Ljava/lang/Object;
-HSPLandroid/util/EventLog$Event;->getData()Ljava/lang/Object;
-HPLandroid/util/EventLog$Event;->getUid()I
-HSPLandroid/util/EventLog;->getTagCode(Ljava/lang/String;)I
-HSPLandroid/util/EventLog;->readTagsFile()V
-HPLandroid/util/ExceptionUtils;->propagate(Ljava/lang/Throwable;)Ljava/lang/RuntimeException;
-HSPLandroid/util/FastImmutableArraySet$FastIterator;->hasNext()Z
-HSPLandroid/util/FastImmutableArraySet$FastIterator;->next()Ljava/lang/Object;
-HSPLandroid/util/FastImmutableArraySet;->iterator()Ljava/util/Iterator;
-HSPLandroid/util/FeatureFlagUtils;->isEnabled(Landroid/content/Context;Ljava/lang/String;)Z
+HSPLandroid/util/ExceptionUtils;->appendCause(Ljava/lang/Throwable;Ljava/lang/Throwable;)Ljava/lang/Throwable;
+HSPLandroid/util/ExceptionUtils;->getRootCause(Ljava/lang/Throwable;)Ljava/lang/Throwable;
 HSPLandroid/util/FloatProperty;-><init>(Ljava/lang/String;)V
-HSPLandroid/util/IconDrawableFactory;->newInstance(Landroid/content/Context;)Landroid/util/IconDrawableFactory;
 HSPLandroid/util/IntArray;-><init>()V
 HSPLandroid/util/IntArray;-><init>(I)V
 HSPLandroid/util/IntArray;->add(I)V
 HSPLandroid/util/IntArray;->add(II)V
-HSPLandroid/util/IntArray;->addAll(Landroid/util/IntArray;)V
-HSPLandroid/util/IntArray;->binarySearch(I)I
 HSPLandroid/util/IntArray;->clear()V
 HSPLandroid/util/IntArray;->ensureCapacity(I)V
 HSPLandroid/util/IntArray;->get(I)I
-HSPLandroid/util/IntArray;->indexOf(I)I
 HSPLandroid/util/IntArray;->remove(I)V
 HSPLandroid/util/IntArray;->size()I
-HSPLandroid/util/IntArray;->toArray()[I
+HSPLandroid/util/IntProperty;-><init>(Ljava/lang/String;)V
 HSPLandroid/util/JsonReader;-><init>(Ljava/io/Reader;)V
-HSPLandroid/util/JsonReader;->beginArray()V
+HSPLandroid/util/JsonReader;->advance()Landroid/util/JsonToken;
 HSPLandroid/util/JsonReader;->beginObject()V
-HSPLandroid/util/JsonReader;->close()V
 HSPLandroid/util/JsonReader;->decodeLiteral()Landroid/util/JsonToken;
-HSPLandroid/util/JsonReader;->decodeNumber([CII)Landroid/util/JsonToken;
-HSPLandroid/util/JsonReader;->endArray()V
-HSPLandroid/util/JsonReader;->endObject()V
 HSPLandroid/util/JsonReader;->expect(Landroid/util/JsonToken;)V
 HSPLandroid/util/JsonReader;->fillBuffer(I)Z
 HSPLandroid/util/JsonReader;->hasNext()Z
-HSPLandroid/util/JsonReader;->nextBoolean()Z
 HSPLandroid/util/JsonReader;->nextInArray(Z)Landroid/util/JsonToken;
 HSPLandroid/util/JsonReader;->nextInObject(Z)Landroid/util/JsonToken;
-HSPLandroid/util/JsonReader;->nextInt()I
 HSPLandroid/util/JsonReader;->nextLiteral(Z)Ljava/lang/String;
-HSPLandroid/util/JsonReader;->nextLong()J
 HSPLandroid/util/JsonReader;->nextName()Ljava/lang/String;
 HSPLandroid/util/JsonReader;->nextNonWhitespace()I
 HSPLandroid/util/JsonReader;->nextString()Ljava/lang/String;
@@ -15460,94 +11342,56 @@
 HSPLandroid/util/JsonReader;->nextValue()Landroid/util/JsonToken;
 HSPLandroid/util/JsonReader;->objectValue()Landroid/util/JsonToken;
 HSPLandroid/util/JsonReader;->peek()Landroid/util/JsonToken;
-HSPLandroid/util/JsonReader;->readEscapeCharacter()C
+HSPLandroid/util/JsonReader;->peekStack()Landroid/util/JsonScope;
+HSPLandroid/util/JsonReader;->pop()Landroid/util/JsonScope;
+HSPLandroid/util/JsonReader;->push(Landroid/util/JsonScope;)V
 HSPLandroid/util/JsonReader;->readLiteral()Landroid/util/JsonToken;
-HSPLandroid/util/JsonReader;->setLenient(Z)V
-HSPLandroid/util/JsonReader;->skipValue()V
-HSPLandroid/util/JsonScope;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/JsonScope;->values()[Landroid/util/JsonScope;
-HSPLandroid/util/JsonToken;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/JsonWriter;-><init>(Ljava/io/Writer;)V
-HSPLandroid/util/JsonWriter;->beforeName()V
-HSPLandroid/util/JsonWriter;->beforeValue(Z)V
-HSPLandroid/util/JsonWriter;->beginArray()Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->beginObject()Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->close()V
-HSPLandroid/util/JsonWriter;->close(Landroid/util/JsonScope;Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->endArray()Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->endObject()Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->name(Ljava/lang/String;)Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->open(Landroid/util/JsonScope;Ljava/lang/String;)Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->string(Ljava/lang/String;)V
-HSPLandroid/util/JsonWriter;->value(J)Landroid/util/JsonWriter;
-HSPLandroid/util/JsonWriter;->value(Ljava/lang/String;)Landroid/util/JsonWriter;
-HSPLandroid/util/KeyValueListParser$IntValue;-><init>(Ljava/lang/String;I)V
-HSPLandroid/util/KeyValueListParser$IntValue;->getValue()I
-HSPLandroid/util/KeyValueListParser$IntValue;->parse(Landroid/util/KeyValueListParser;)V
+HSPLandroid/util/JsonReader;->replaceTop(Landroid/util/JsonScope;)V
 HSPLandroid/util/KeyValueListParser;-><init>(C)V
-HSPLandroid/util/KeyValueListParser;->getBoolean(Ljava/lang/String;Z)Z
-HSPLandroid/util/KeyValueListParser;->getDurationMillis(Ljava/lang/String;J)J
-HSPLandroid/util/KeyValueListParser;->getFloat(Ljava/lang/String;F)F
-HSPLandroid/util/KeyValueListParser;->getInt(Ljava/lang/String;I)I
-HSPLandroid/util/KeyValueListParser;->getIntArray(Ljava/lang/String;[I)[I
-HSPLandroid/util/KeyValueListParser;->getLong(Ljava/lang/String;J)J
-HSPLandroid/util/KeyValueListParser;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLandroid/util/KeyValueListParser;->setString(Ljava/lang/String;)V
-HSPLandroid/util/KeyValueListParser;->size()I
-HSPLandroid/util/KeyValueSettingObserver;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;Landroid/net/Uri;)V
-HSPLandroid/util/KeyValueSettingObserver;->setParserValue()V
-HSPLandroid/util/KeyValueSettingObserver;->start()V
 HSPLandroid/util/LocalLog;-><init>(I)V
+HSPLandroid/util/LocalLog;-><init>(IZ)V
 HSPLandroid/util/LocalLog;->append(Ljava/lang/String;)V
 HSPLandroid/util/LocalLog;->log(Ljava/lang/String;)V
-HSPLandroid/util/Log$1;-><init>()V
 HSPLandroid/util/Log$1;->onTerribleFailure(Ljava/lang/String;Landroid/util/Log$TerribleFailure;Z)V
+HSPLandroid/util/Log$ImmediateLogWriter;-><init>(IILjava/lang/String;)V
 HSPLandroid/util/Log$ImmediateLogWriter;->flush()V
+HSPLandroid/util/Log$ImmediateLogWriter;->getWritten()I
 HSPLandroid/util/Log$ImmediateLogWriter;->write([CII)V
-HSPLandroid/util/Log;->access$000()I
+HSPLandroid/util/Log$TerribleFailure;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLandroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/util/Log;->d(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
 HSPLandroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
 HSPLandroid/util/Log;->getStackTraceString(Ljava/lang/Throwable;)Ljava/lang/String;
 HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->i(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
+HSPLandroid/util/Log;->logToRadioBuffer(ILjava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->println(ILjava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->printlns(IILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
 HSPLandroid/util/Log;->v(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Log;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-HSPLandroid/util/Log;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
+HSPLandroid/util/Log;->wtf(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;ZZ)I
 HSPLandroid/util/LogPrinter;-><init>(ILjava/lang/String;)V
-HSPLandroid/util/LogPrinter;->println(Ljava/lang/String;)V
 HSPLandroid/util/LongArray;-><init>()V
+HSPLandroid/util/LongArray;-><init>(I)V
 HSPLandroid/util/LongArray;->add(IJ)V
 HSPLandroid/util/LongArray;->add(J)V
 HSPLandroid/util/LongArray;->ensureCapacity(I)V
 HSPLandroid/util/LongArray;->get(I)J
 HSPLandroid/util/LongArray;->size()I
-PLandroid/util/LongArrayQueue;-><init>()V
-HPLandroid/util/LongArrayQueue;->addLast(J)V
-HPLandroid/util/LongArrayQueue;->get(I)J
-PLandroid/util/LongArrayQueue;->grow()V
-HPLandroid/util/LongArrayQueue;->peekFirst()J
-HPLandroid/util/LongArrayQueue;->peekLast()J
-HPLandroid/util/LongArrayQueue;->removeFirst()J
-HPLandroid/util/LongArrayQueue;->size()I
 HSPLandroid/util/LongSparseArray;-><init>()V
 HSPLandroid/util/LongSparseArray;-><init>(I)V
-HSPLandroid/util/LongSparseArray;->append(JLjava/lang/Object;)V
 HSPLandroid/util/LongSparseArray;->clear()V
-HSPLandroid/util/LongSparseArray;->clone()Landroid/util/LongSparseArray;
 HSPLandroid/util/LongSparseArray;->delete(J)V
 HSPLandroid/util/LongSparseArray;->gc()V
 HSPLandroid/util/LongSparseArray;->get(J)Ljava/lang/Object;
 HSPLandroid/util/LongSparseArray;->get(JLjava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/util/LongSparseArray;->indexOfKey(J)I
 HSPLandroid/util/LongSparseArray;->keyAt(I)J
 HSPLandroid/util/LongSparseArray;->put(JLjava/lang/Object;)V
 HSPLandroid/util/LongSparseArray;->remove(J)V
 HSPLandroid/util/LongSparseArray;->removeAt(I)V
-HSPLandroid/util/LongSparseArray;->setValueAt(ILjava/lang/Object;)V
 HSPLandroid/util/LongSparseArray;->size()I
 HSPLandroid/util/LongSparseArray;->valueAt(I)Ljava/lang/Object;
 HSPLandroid/util/LongSparseLongArray;-><init>()V
@@ -15555,125 +11399,101 @@
 HSPLandroid/util/LongSparseLongArray;->append(JJ)V
 HSPLandroid/util/LongSparseLongArray;->clear()V
 HSPLandroid/util/LongSparseLongArray;->clone()Landroid/util/LongSparseLongArray;
-HSPLandroid/util/LongSparseLongArray;->delete(J)V
-HSPLandroid/util/LongSparseLongArray;->get(J)J
 HSPLandroid/util/LongSparseLongArray;->get(JJ)J
 HSPLandroid/util/LongSparseLongArray;->indexOfKey(J)I
-HSPLandroid/util/LongSparseLongArray;->keyAt(I)J
 HSPLandroid/util/LongSparseLongArray;->put(JJ)V
-HSPLandroid/util/LongSparseLongArray;->removeAt(I)V
-HSPLandroid/util/LongSparseLongArray;->size()I
 HSPLandroid/util/LongSparseLongArray;->valueAt(I)J
 HSPLandroid/util/LruCache;-><init>(I)V
 HSPLandroid/util/LruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/LruCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/util/LruCache;->evictAll()V
 HSPLandroid/util/LruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/util/LruCache;->hitCount()I
-HSPLandroid/util/LruCache;->missCount()I
 HSPLandroid/util/LruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/LruCache;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/LruCache;->resize(I)V
 HSPLandroid/util/LruCache;->safeSizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLandroid/util/LruCache;->size()I
 HSPLandroid/util/LruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/util/LruCache;->snapshot()Ljava/util/Map;
 HSPLandroid/util/LruCache;->trimToSize(I)V
+HSPLandroid/util/MapCollections$ArrayIterator;-><init>(Landroid/util/MapCollections;I)V
 HSPLandroid/util/MapCollections$ArrayIterator;->hasNext()Z
 HSPLandroid/util/MapCollections$ArrayIterator;->next()Ljava/lang/Object;
 HSPLandroid/util/MapCollections$ArrayIterator;->remove()V
+HSPLandroid/util/MapCollections$EntrySet;-><init>(Landroid/util/MapCollections;)V
 HSPLandroid/util/MapCollections$EntrySet;->iterator()Ljava/util/Iterator;
 HSPLandroid/util/MapCollections$EntrySet;->size()I
+HSPLandroid/util/MapCollections$KeySet;-><init>(Landroid/util/MapCollections;)V
 HSPLandroid/util/MapCollections$KeySet;->contains(Ljava/lang/Object;)Z
-HSPLandroid/util/MapCollections$KeySet;->containsAll(Ljava/util/Collection;)Z
-HSPLandroid/util/MapCollections$KeySet;->equals(Ljava/lang/Object;)Z
-HSPLandroid/util/MapCollections$KeySet;->isEmpty()Z
 HSPLandroid/util/MapCollections$KeySet;->iterator()Ljava/util/Iterator;
 HSPLandroid/util/MapCollections$KeySet;->size()I
 HSPLandroid/util/MapCollections$KeySet;->toArray()[Ljava/lang/Object;
 HSPLandroid/util/MapCollections$KeySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLandroid/util/MapCollections$MapIterator;-><init>(Landroid/util/MapCollections;)V
 HSPLandroid/util/MapCollections$MapIterator;->getKey()Ljava/lang/Object;
 HSPLandroid/util/MapCollections$MapIterator;->getValue()Ljava/lang/Object;
 HSPLandroid/util/MapCollections$MapIterator;->hasNext()Z
 HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/lang/Object;
-HSPLandroid/util/MapCollections$ValuesCollection;->contains(Ljava/lang/Object;)Z
+HSPLandroid/util/MapCollections$MapIterator;->next()Ljava/util/Map$Entry;
+HSPLandroid/util/MapCollections$ValuesCollection;-><init>(Landroid/util/MapCollections;)V
 HSPLandroid/util/MapCollections$ValuesCollection;->iterator()Ljava/util/Iterator;
 HSPLandroid/util/MapCollections$ValuesCollection;->size()I
 HSPLandroid/util/MapCollections$ValuesCollection;->toArray()[Ljava/lang/Object;
-HSPLandroid/util/MapCollections;->equalsSetHelper(Ljava/util/Set;Ljava/lang/Object;)Z
+HSPLandroid/util/MapCollections;-><init>()V
 HSPLandroid/util/MapCollections;->getEntrySet()Ljava/util/Set;
 HSPLandroid/util/MapCollections;->getKeySet()Ljava/util/Set;
 HSPLandroid/util/MapCollections;->getValues()Ljava/util/Collection;
 HSPLandroid/util/MapCollections;->toArrayHelper(I)[Ljava/lang/Object;
 HSPLandroid/util/MapCollections;->toArrayHelper([Ljava/lang/Object;I)[Ljava/lang/Object;
 HSPLandroid/util/MathUtils;->addOrThrow(II)I
-HSPLandroid/util/MathUtils;->exp(F)F
-HSPLandroid/util/MathUtils;->log(F)F
-HSPLandroid/util/MathUtils;->pow(FF)F
-HSPLandroid/util/MemoryIntArray$1;-><init>()V
+HSPLandroid/util/MathUtils;->constrain(FFF)F
+HSPLandroid/util/MathUtils;->constrain(III)I
+HSPLandroid/util/MathUtils;->lerp(FFF)F
 HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Landroid/util/MemoryIntArray;
 HSPLandroid/util/MemoryIntArray$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/util/MemoryIntArray;-><init>(I)V
 HSPLandroid/util/MemoryIntArray;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/util/MemoryIntArray;-><init>(Landroid/os/Parcel;Landroid/util/MemoryIntArray$1;)V
+HSPLandroid/util/MemoryIntArray;->enforceNotClosed()V
 HSPLandroid/util/MemoryIntArray;->enforceValidIndex(I)V
 HSPLandroid/util/MemoryIntArray;->get(I)I
-HSPLandroid/util/MemoryIntArray;->set(II)V
+HSPLandroid/util/MemoryIntArray;->isClosed()Z
 HSPLandroid/util/MemoryIntArray;->size()I
-HSPLandroid/util/MemoryIntArray;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/util/MergedConfiguration$1;-><init>()V
 HSPLandroid/util/MergedConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Landroid/util/MergedConfiguration;
 HSPLandroid/util/MergedConfiguration$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/util/MergedConfiguration;-><init>()V
-HSPLandroid/util/MergedConfiguration;-><init>(Landroid/content/res/Configuration;)V
-HSPLandroid/util/MergedConfiguration;-><init>(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
-HSPLandroid/util/MergedConfiguration;-><init>(Landroid/util/MergedConfiguration;)V
+HSPLandroid/util/MergedConfiguration;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/util/MergedConfiguration;-><init>(Landroid/os/Parcel;Landroid/util/MergedConfiguration$1;)V
 HSPLandroid/util/MergedConfiguration;->equals(Ljava/lang/Object;)Z
 HSPLandroid/util/MergedConfiguration;->getGlobalConfiguration()Landroid/content/res/Configuration;
-HSPLandroid/util/MergedConfiguration;->getMergedConfiguration()Landroid/content/res/Configuration;
 HSPLandroid/util/MergedConfiguration;->getOverrideConfiguration()Landroid/content/res/Configuration;
 HSPLandroid/util/MergedConfiguration;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/util/MergedConfiguration;->setConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
-HSPLandroid/util/MergedConfiguration;->setGlobalConfiguration(Landroid/content/res/Configuration;)V
-HSPLandroid/util/MergedConfiguration;->setTo(Landroid/util/MergedConfiguration;)V
-HSPLandroid/util/MergedConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/util/NtpTrustedTime;->currentTimeMillis()J
-HSPLandroid/util/NtpTrustedTime;->forceRefresh()Z
-HSPLandroid/util/NtpTrustedTime;->forceRefresh(Landroid/net/Network;)Z
-HSPLandroid/util/NtpTrustedTime;->getCacheAge()J
-HSPLandroid/util/NtpTrustedTime;->getCacheCertainty()J
-HSPLandroid/util/NtpTrustedTime;->getCachedNtpTime()J
-HSPLandroid/util/NtpTrustedTime;->getCachedNtpTimeReference()J
-HSPLandroid/util/NtpTrustedTime;->getInstance(Landroid/content/Context;)Landroid/util/NtpTrustedTime;
-HSPLandroid/util/NtpTrustedTime;->hasCache()Z
-HSPLandroid/util/PackageUtils;->computeSha256Digest([B)Ljava/lang/String;
-HSPLandroid/util/PackageUtils;->computeSha256DigestBytes([B)[B
-HPLandroid/util/PackageUtils;->computeSignaturesSha256Digest([Landroid/content/pm/Signature;)Ljava/lang/String;
+HSPLandroid/util/MergedConfiguration;->updateMergedConfig()V
 HSPLandroid/util/Pair;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/util/Pair;->create(Ljava/lang/Object;Ljava/lang/Object;)Landroid/util/Pair;
 HSPLandroid/util/Pair;->equals(Ljava/lang/Object;)Z
 HSPLandroid/util/Pair;->hashCode()I
 HSPLandroid/util/Pair;->toString()Ljava/lang/String;
-HSPLandroid/util/PathParser$PathData;-><init>()V
 HSPLandroid/util/PathParser$PathData;-><init>(Landroid/util/PathParser$PathData;)V
 HSPLandroid/util/PathParser$PathData;-><init>(Ljava/lang/String;)V
 HSPLandroid/util/PathParser$PathData;->finalize()V
-HSPLandroid/util/PathParser$PathData;->getNativePtr()J
-HSPLandroid/util/PathParser;->canMorph(Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;)Z
+HSPLandroid/util/PathParser;->access$100(J)J
+HSPLandroid/util/PathParser;->access$200(Ljava/lang/String;I)J
+HSPLandroid/util/PathParser;->access$400(J)V
 HSPLandroid/util/PathParser;->createPathFromPathData(Ljava/lang/String;)Landroid/graphics/Path;
-HSPLandroid/util/PathParser;->interpolatePathData(Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;Landroid/util/PathParser$PathData;F)Z
+HSPLandroid/util/Patterns;-><clinit>()V
 HSPLandroid/util/Pools$SimplePool;-><init>(I)V
 HSPLandroid/util/Pools$SimplePool;->acquire()Ljava/lang/Object;
+HSPLandroid/util/Pools$SimplePool;->isInPool(Ljava/lang/Object;)Z
 HSPLandroid/util/Pools$SimplePool;->release(Ljava/lang/Object;)Z
 HSPLandroid/util/Pools$SynchronizedPool;-><init>(I)V
 HSPLandroid/util/Pools$SynchronizedPool;-><init>(ILjava/lang/Object;)V
 HSPLandroid/util/Pools$SynchronizedPool;->acquire()Ljava/lang/Object;
 HSPLandroid/util/Pools$SynchronizedPool;->release(Ljava/lang/Object;)Z
-HSPLandroid/util/PrintWriterPrinter;->println(Ljava/lang/String;)V
 HSPLandroid/util/Property;-><init>(Ljava/lang/Class;Ljava/lang/String;)V
 HSPLandroid/util/Property;->getName()Ljava/lang/String;
 HSPLandroid/util/Property;->getType()Ljava/lang/Class;
 HSPLandroid/util/Range;-><init>(Ljava/lang/Comparable;Ljava/lang/Comparable;)V
-HSPLandroid/util/Range;->contains(Ljava/lang/Comparable;)Z
+HSPLandroid/util/Range;->clamp(Ljava/lang/Comparable;)Ljava/lang/Comparable;
 HSPLandroid/util/Range;->create(Ljava/lang/Comparable;Ljava/lang/Comparable;)Landroid/util/Range;
 HSPLandroid/util/Range;->getLower()Ljava/lang/Comparable;
 HSPLandroid/util/Range;->getUpper()Ljava/lang/Comparable;
@@ -15682,38 +11502,20 @@
 HSPLandroid/util/Rational;-><init>(II)V
 HSPLandroid/util/Rational;->compareTo(Landroid/util/Rational;)I
 HSPLandroid/util/Rational;->compareTo(Ljava/lang/Object;)I
-HSPLandroid/util/RecurrenceRule$1;-><init>()V
-HSPLandroid/util/RecurrenceRule$RecurringIterator;-><init>(Landroid/util/RecurrenceRule;)V
-HSPLandroid/util/RecurrenceRule$RecurringIterator;->hasNext()Z
-HSPLandroid/util/RecurrenceRule$RecurringIterator;->next()Landroid/util/Range;
-HSPLandroid/util/RecurrenceRule$RecurringIterator;->next()Ljava/lang/Object;
-HSPLandroid/util/RecurrenceRule$RecurringIterator;->roundBoundaryTime(Ljava/time/ZonedDateTime;)Ljava/time/ZonedDateTime;
-HSPLandroid/util/RecurrenceRule$RecurringIterator;->updateCycle()V
-HSPLandroid/util/RecurrenceRule;-><init>(Ljava/time/ZonedDateTime;Ljava/time/ZonedDateTime;Ljava/time/Period;)V
-HSPLandroid/util/RecurrenceRule;->buildRecurringMonthly(ILjava/time/ZoneId;)Landroid/util/RecurrenceRule;
-HSPLandroid/util/RecurrenceRule;->convertPeriod(Ljava/lang/String;)Ljava/time/Period;
-HSPLandroid/util/RecurrenceRule;->convertPeriod(Ljava/time/Period;)Ljava/lang/String;
-HSPLandroid/util/RecurrenceRule;->convertZonedDateTime(Ljava/lang/String;)Ljava/time/ZonedDateTime;
-HSPLandroid/util/RecurrenceRule;->convertZonedDateTime(Ljava/time/ZonedDateTime;)Ljava/lang/String;
-HSPLandroid/util/RecurrenceRule;->cycleIterator()Ljava/util/Iterator;
-HSPLandroid/util/RecurrenceRule;->equals(Ljava/lang/Object;)Z
-HSPLandroid/util/RecurrenceRule;->isMonthly()Z
+HSPLandroid/util/Rational;->equals(Landroid/util/Rational;)Z
+HSPLandroid/util/Rational;->gcd(II)I
+HSPLandroid/util/Rational;->isNaN()Z
+HSPLandroid/util/Rational;->isNegInf()Z
+HSPLandroid/util/Rational;->isPosInf()Z
 HSPLandroid/util/Singleton;->get()Ljava/lang/Object;
 HSPLandroid/util/Size;-><init>(II)V
-HSPLandroid/util/Size;->equals(Ljava/lang/Object;)Z
+HSPLandroid/util/Size;->getHeight()I
+HSPLandroid/util/Size;->getWidth()I
 HSPLandroid/util/Size;->hashCode()I
 HSPLandroid/util/Size;->parseSize(Ljava/lang/String;)Landroid/util/Size;
-HSPLandroid/util/Size;->toString()Ljava/lang/String;
 HSPLandroid/util/Slog;->d(Ljava/lang/String;Ljava/lang/String;)I
 HSPLandroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->e(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
 HSPLandroid/util/Slog;->i(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->println(ILjava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->v(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->w(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
-HSPLandroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/util/Slog;->wtf(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Throwable;)I
 HSPLandroid/util/SparseArray;-><init>()V
 HSPLandroid/util/SparseArray;-><init>(I)V
 HSPLandroid/util/SparseArray;->append(ILjava/lang/Object;)V
@@ -15724,12 +11526,10 @@
 HSPLandroid/util/SparseArray;->get(I)Ljava/lang/Object;
 HSPLandroid/util/SparseArray;->get(ILjava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/util/SparseArray;->indexOfKey(I)I
-HSPLandroid/util/SparseArray;->indexOfValue(Ljava/lang/Object;)I
 HSPLandroid/util/SparseArray;->keyAt(I)I
 HSPLandroid/util/SparseArray;->put(ILjava/lang/Object;)V
 HSPLandroid/util/SparseArray;->remove(I)V
 HSPLandroid/util/SparseArray;->removeAt(I)V
-HSPLandroid/util/SparseArray;->removeReturnOld(I)Ljava/lang/Object;
 HSPLandroid/util/SparseArray;->setValueAt(ILjava/lang/Object;)V
 HSPLandroid/util/SparseArray;->size()I
 HSPLandroid/util/SparseArray;->valueAt(I)Ljava/lang/Object;
@@ -15737,9 +11537,7 @@
 HSPLandroid/util/SparseBooleanArray;-><init>(I)V
 HSPLandroid/util/SparseBooleanArray;->append(IZ)V
 HSPLandroid/util/SparseBooleanArray;->clear()V
-HSPLandroid/util/SparseBooleanArray;->clone()Landroid/util/SparseBooleanArray;
 HSPLandroid/util/SparseBooleanArray;->delete(I)V
-HSPLandroid/util/SparseBooleanArray;->equals(Ljava/lang/Object;)Z
 HSPLandroid/util/SparseBooleanArray;->get(I)Z
 HSPLandroid/util/SparseBooleanArray;->get(IZ)Z
 HSPLandroid/util/SparseBooleanArray;->indexOfKey(I)I
@@ -15747,7 +11545,6 @@
 HSPLandroid/util/SparseBooleanArray;->keyAt(I)I
 HSPLandroid/util/SparseBooleanArray;->put(IZ)V
 HSPLandroid/util/SparseBooleanArray;->size()I
-HSPLandroid/util/SparseBooleanArray;->toString()Ljava/lang/String;
 HSPLandroid/util/SparseBooleanArray;->valueAt(I)Z
 HSPLandroid/util/SparseIntArray;-><init>()V
 HSPLandroid/util/SparseIntArray;-><init>(I)V
@@ -15755,68 +11552,31 @@
 HSPLandroid/util/SparseIntArray;->clear()V
 HSPLandroid/util/SparseIntArray;->clone()Landroid/util/SparseIntArray;
 HSPLandroid/util/SparseIntArray;->copyKeys()[I
-HSPLandroid/util/SparseIntArray;->delete(I)V
 HSPLandroid/util/SparseIntArray;->get(I)I
 HSPLandroid/util/SparseIntArray;->get(II)I
 HSPLandroid/util/SparseIntArray;->indexOfKey(I)I
 HSPLandroid/util/SparseIntArray;->keyAt(I)I
 HSPLandroid/util/SparseIntArray;->put(II)V
 HSPLandroid/util/SparseIntArray;->removeAt(I)V
-HSPLandroid/util/SparseIntArray;->setValueAt(II)V
 HSPLandroid/util/SparseIntArray;->size()I
-HSPLandroid/util/SparseIntArray;->toString()Ljava/lang/String;
 HSPLandroid/util/SparseIntArray;->valueAt(I)I
 HSPLandroid/util/SparseLongArray;-><init>()V
 HSPLandroid/util/SparseLongArray;-><init>(I)V
-HSPLandroid/util/SparseLongArray;->clear()V
-HSPLandroid/util/SparseLongArray;->delete(I)V
 HSPLandroid/util/SparseLongArray;->get(I)J
 HSPLandroid/util/SparseLongArray;->get(IJ)J
-HPLandroid/util/SparseLongArray;->indexOfKey(I)I
 HSPLandroid/util/SparseLongArray;->keyAt(I)I
 HSPLandroid/util/SparseLongArray;->put(IJ)V
-HSPLandroid/util/SparseLongArray;->removeAt(I)V
 HSPLandroid/util/SparseLongArray;->size()I
 HSPLandroid/util/SparseLongArray;->valueAt(I)J
-HSPLandroid/util/SparseSetArray;-><init>()V
-HSPLandroid/util/SparseSetArray;->add(ILjava/lang/Object;)Z
-HSPLandroid/util/SparseSetArray;->contains(ILjava/lang/Object;)Z
-HSPLandroid/util/SparseSetArray;->remove(ILjava/lang/Object;)Z
-HSPLandroid/util/Spline$MonotoneCubicSpline;-><init>([F[F)V
-HSPLandroid/util/Spline$MonotoneCubicSpline;->interpolate(F)F
-HSPLandroid/util/Spline;->createSpline([F[F)Landroid/util/Spline;
-HSPLandroid/util/Spline;->isMonotonic([F)Z
-HSPLandroid/util/Spline;->isStrictlyIncreasing([F)Z
 HSPLandroid/util/StateSet;->get(I)[I
 HSPLandroid/util/StateSet;->stateSetMatches([I[I)Z
 HSPLandroid/util/StateSet;->trimStateSet([II)[I
-HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;I)V
-HPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;II)V
-HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;)V
-HPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;Ljava/lang/String;Ljava/lang/String;I)V
-HPLandroid/util/StringBuilderPrinter;->println(Ljava/lang/String;)V
-HSPLandroid/util/TimeUtils;->formatDuration(J)Ljava/lang/String;
-HSPLandroid/util/TimeUtils;->formatDuration(JJLjava/io/PrintWriter;)V
-HPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;)V
-HSPLandroid/util/TimeUtils;->formatDuration(JLjava/io/PrintWriter;I)V
+HSPLandroid/util/StatsLog;->writeRaw([BI)V
 HSPLandroid/util/TimeUtils;->formatDuration(JLjava/lang/StringBuilder;)V
 HSPLandroid/util/TimeUtils;->formatDurationLocked(JI)I
-HPLandroid/util/TimeUtils;->formatForLogging(J)Ljava/lang/String;
 HSPLandroid/util/TimeUtils;->printFieldLocked([CICIZI)I
-HSPLandroid/util/TimedRemoteCaller;-><init>(J)V
-HPLandroid/util/TimedRemoteCaller;->getResultTimed(I)Ljava/lang/Object;
-HPLandroid/util/TimedRemoteCaller;->onBeforeRemoteCall()I
-HPLandroid/util/TimedRemoteCaller;->onRemoteMethodResult(Ljava/lang/Object;I)V
-HSPLandroid/util/TimestampedValue;->readFromParcel(Landroid/os/Parcel;Ljava/lang/ClassLoader;Ljava/lang/Class;)Landroid/util/TimestampedValue;
-HSPLandroid/util/TimestampedValue;->referenceTimeDifference(Landroid/util/TimestampedValue;Landroid/util/TimestampedValue;)J
-HSPLandroid/util/TimestampedValue;->toString()Ljava/lang/String;
-HSPLandroid/util/TimestampedValue;->writeToParcel(Landroid/os/Parcel;Landroid/util/TimestampedValue;)V
-HSPLandroid/util/TimingLogger;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/util/TimingLogger;->addSplit(Ljava/lang/String;)V
-HSPLandroid/util/TimingLogger;->dumpToLog()V
-HSPLandroid/util/TimingLogger;->reset()V
-HSPLandroid/util/TimingLogger;->reset(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/util/TimingsTraceLog;-><init>(Ljava/lang/String;J)V
+HSPLandroid/util/TimingsTraceLog;-><init>(Ljava/lang/String;JI)V
 HSPLandroid/util/TimingsTraceLog;->assertSameThread()V
 HSPLandroid/util/TimingsTraceLog;->logDuration(Ljava/lang/String;J)V
 HSPLandroid/util/TimingsTraceLog;->traceBegin(Ljava/lang/String;)V
@@ -15833,258 +11593,187 @@
 HSPLandroid/util/TypedValue;->getDimension(Landroid/util/DisplayMetrics;)F
 HSPLandroid/util/TypedValue;->getFloat()F
 HSPLandroid/util/TypedValue;->getFraction(FF)F
-HSPLandroid/util/Xml$Encoding;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLandroid/util/UtilConfig;->setThrowExceptionForUpperArrayOutOfBounds(Z)V
 HSPLandroid/util/Xml;->asAttributeSet(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/AttributeSet;
 HSPLandroid/util/Xml;->newPullParser()Lorg/xmlpull/v1/XmlPullParser;
-HSPLandroid/util/Xml;->newSerializer()Lorg/xmlpull/v1/XmlSerializer;
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->generateApkVerityRootHash(Ljava/lang/String;)[B
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->isSupportedSignatureAlgorithm(I)Z
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;Z)Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verify(Ljava/lang/String;Z)Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;)V
-HSPLandroid/util/apk/ApkSignatureSchemeV2Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)[Ljava/security/cert/X509Certificate;
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->generateApkVerityRootHash(Ljava/lang/String;)[B
-HPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->getVerityRootHash(Ljava/lang/String;)[B
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->isSupportedSignatureAlgorithm(I)Z
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verify(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;Z)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verify(Ljava/lang/String;Z)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verifyAdditionalAttributes(Ljava/nio/ByteBuffer;Ljava/util/List;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureSchemeV3Verifier;->verifySigner(Ljava/nio/ByteBuffer;Ljava/util/Map;Ljava/security/cert/CertificateFactory;)Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
-HSPLandroid/util/apk/ApkSignatureVerifier;->closeQuietly(Landroid/util/jar/StrictJarFile;)V
-HPLandroid/util/apk/ApkSignatureVerifier;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;)[B
-HSPLandroid/util/apk/ApkSignatureVerifier;->generateApkVerityRootHash(Ljava/lang/String;)[B
-HPLandroid/util/apk/ApkSignatureVerifier;->getVerityRootHash(Ljava/lang/String;)[B
-HSPLandroid/util/apk/ApkSignatureVerifier;->loadCertificates(Landroid/util/jar/StrictJarFile;Ljava/util/zip/ZipEntry;)[[Ljava/security/cert/Certificate;
-HSPLandroid/util/apk/ApkSignatureVerifier;->readFullyIgnoringContents(Ljava/io/InputStream;)V
-HSPLandroid/util/apk/ApkSignatureVerifier;->unsafeGetCertsWithoutVerification(Ljava/lang/String;I)Landroid/content/pm/PackageParser$SigningDetails;
-HSPLandroid/util/apk/ApkSignatureVerifier;->verify(Ljava/lang/String;I)Landroid/content/pm/PackageParser$SigningDetails;
-HSPLandroid/util/apk/ApkSignatureVerifier;->verifyV1Signature(Ljava/lang/String;Z)Landroid/content/pm/PackageParser$SigningDetails;
-HSPLandroid/util/apk/ApkSigningBlockUtils$1;->create(I)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/ApkSigningBlockUtils$MultipleDigestDataDigester;->consume(Ljava/nio/ByteBuffer;)V
-HSPLandroid/util/apk/ApkSigningBlockUtils;->compareContentDigestAlgorithm(II)I
-HSPLandroid/util/apk/ApkSigningBlockUtils;->compareSignatureAlgorithm(II)I
-HSPLandroid/util/apk/ApkSigningBlockUtils;->computeContentDigestsPer1MbChunk([I[Landroid/util/apk/DataSource;)[[B
-HSPLandroid/util/apk/ApkSigningBlockUtils;->findApkSignatureSchemeBlock(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->findApkSigningBlock(Ljava/io/RandomAccessFile;J)Landroid/util/Pair;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->findSignature(Ljava/io/RandomAccessFile;I)Landroid/util/apk/SignatureInfo;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getByteBuffer(Ljava/nio/ByteBuffer;I)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getCentralDirOffset(Ljava/nio/ByteBuffer;J)J
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getContentDigestAlgorithmJcaDigestAlgorithm(I)Ljava/lang/String;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getContentDigestAlgorithmOutputSizeBytes(I)I
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getLengthPrefixedSlice(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getSignatureAlgorithmContentDigestAlgorithm(I)I
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getSignatureAlgorithmJcaKeyAlgorithm(I)Ljava/lang/String;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->getSignatureAlgorithmJcaSignatureAlgorithm(I)Landroid/util/Pair;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->parseVerityDigestAndVerifySourceLength([BJLandroid/util/apk/SignatureInfo;)[B
-HSPLandroid/util/apk/ApkSigningBlockUtils;->readLengthPrefixedByteArray(Ljava/nio/ByteBuffer;)[B
-HSPLandroid/util/apk/ApkSigningBlockUtils;->setUnsignedInt32LittleEndian(I[BI)V
-HSPLandroid/util/apk/ApkSigningBlockUtils;->sliceFromTo(Ljava/nio/ByteBuffer;II)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/ApkSigningBlockUtils;->verifyIntegrity(Ljava/util/Map;Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;)V
-HSPLandroid/util/apk/ApkSigningBlockUtils;->verifyIntegrityFor1MbChunkBasedAlgorithm(Ljava/util/Map;Ljava/io/FileDescriptor;Landroid/util/apk/SignatureInfo;)V
-HSPLandroid/util/apk/ApkSigningBlockUtils;->verifyIntegrityForVerityBasedAlgorithm([BLjava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;)V
-HSPLandroid/util/apk/ByteBufferDataSource;->feedIntoDataDigester(Landroid/util/apk/DataDigester;JI)V
-HSPLandroid/util/apk/ByteBufferDataSource;->size()J
-HSPLandroid/util/apk/MemoryMappedFileDataSource;->feedIntoDataDigester(Landroid/util/apk/DataDigester;JI)V
-HSPLandroid/util/apk/MemoryMappedFileDataSource;->size()J
-HSPLandroid/util/apk/VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V
-HSPLandroid/util/apk/VerbatimX509Certificate;->getEncoded()[B
-HSPLandroid/util/apk/VerityBuilder$BufferedDigester;-><init>([BLjava/nio/ByteBuffer;)V
-HSPLandroid/util/apk/VerityBuilder$BufferedDigester;->consume(Ljava/nio/ByteBuffer;)V
-HSPLandroid/util/apk/VerityBuilder;->assertSigningBlockAlignedAndHasFullPages(Landroid/util/apk/SignatureInfo;)V
-HSPLandroid/util/apk/VerityBuilder;->calculateVerityLevelOffset(J)[I
-HPLandroid/util/apk/VerityBuilder;->generateApkVerity(Ljava/lang/String;Landroid/util/apk/ByteBufferFactory;Landroid/util/apk/SignatureInfo;)[B
-HSPLandroid/util/apk/VerityBuilder;->generateApkVerityDigestAtLeafLevel(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;[BLjava/nio/ByteBuffer;)V
-HSPLandroid/util/apk/VerityBuilder;->generateApkVerityExtensions(Ljava/nio/ByteBuffer;JJJ)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/VerityBuilder;->generateApkVerityHeader(Ljava/nio/ByteBuffer;J[B)Ljava/nio/ByteBuffer;
-HSPLandroid/util/apk/VerityBuilder;->generateApkVerityRootHash(Ljava/io/RandomAccessFile;Ljava/nio/ByteBuffer;Landroid/util/apk/SignatureInfo;)[B
-HSPLandroid/util/apk/VerityBuilder;->generateVerityTreeInternal(Ljava/io/RandomAccessFile;Landroid/util/apk/ByteBufferFactory;Landroid/util/apk/SignatureInfo;Z)Landroid/util/apk/VerityBuilder$VerityResult;
-HSPLandroid/util/apk/VerityBuilder;->generateVerityTreeInternal(Ljava/io/RandomAccessFile;Landroid/util/apk/SignatureInfo;[B[ILjava/nio/ByteBuffer;Z)[B
-HSPLandroid/util/apk/WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
-HSPLandroid/util/apk/WrappedX509Certificate;->getPublicKey()Ljava/security/PublicKey;
-HSPLandroid/util/apk/ZipUtils;->findZipEndOfCentralDirectoryRecord(Ljava/io/RandomAccessFile;I)Landroid/util/Pair;
-HSPLandroid/util/apk/ZipUtils;->findZipEndOfCentralDirectoryRecord(Ljava/nio/ByteBuffer;)I
-HSPLandroid/util/apk/ZipUtils;->setUnsignedInt32(Ljava/nio/ByteBuffer;IJ)V
-HSPLandroid/util/jar/StrictJarFile$FDStream;->read([BII)I
-HSPLandroid/util/jar/StrictJarFile$JarFileInputStream;->read([BII)I
-HSPLandroid/util/jar/StrictJarFile$ZipInflaterInputStream;->close()V
-HSPLandroid/util/jar/StrictJarFile$ZipInflaterInputStream;->read([BII)I
-HSPLandroid/util/jar/StrictJarFile;-><init>(Ljava/lang/String;Ljava/io/FileDescriptor;ZZ)V
-HSPLandroid/util/jar/StrictJarFile;-><init>(Ljava/lang/String;ZZ)V
-HSPLandroid/util/jar/StrictJarFile;->access$000(JLjava/lang/String;)J
-HSPLandroid/util/jar/StrictJarFile;->close()V
-HSPLandroid/util/jar/StrictJarFile;->finalize()V
-HSPLandroid/util/jar/StrictJarFile;->findEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
-HSPLandroid/util/jar/StrictJarFile;->getMetaEntries()Ljava/util/HashMap;
-HSPLandroid/util/jar/StrictJarFile;->getZipInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
-HSPLandroid/util/jar/StrictJarManifest;->getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;
-HSPLandroid/util/jar/StrictJarManifest;->getEntries()Ljava/util/Map;
-HSPLandroid/util/jar/StrictJarManifest;->getMainAttributesEnd()I
-HSPLandroid/util/jar/StrictJarManifestReader;-><init>([BLjava/util/jar/Attributes;)V
-HSPLandroid/util/jar/StrictJarManifestReader;->readEntries(Ljava/util/Map;Ljava/util/Map;)V
-HSPLandroid/util/jar/StrictJarManifestReader;->readName()V
-HSPLandroid/util/jar/StrictJarManifestReader;->readValue()V
-HSPLandroid/util/jar/StrictJarVerifier$VerifierEntry;->verify()V
-HSPLandroid/util/jar/StrictJarVerifier$VerifierEntry;->write([BII)V
-HSPLandroid/util/jar/StrictJarVerifier;-><init>(Ljava/lang/String;Landroid/util/jar/StrictJarManifest;Ljava/util/HashMap;Z)V
-HSPLandroid/util/jar/StrictJarVerifier;->getCertificateChains(Ljava/lang/String;)[[Ljava/security/cert/Certificate;
-HSPLandroid/util/jar/StrictJarVerifier;->initEntry(Ljava/lang/String;)Landroid/util/jar/StrictJarVerifier$VerifierEntry;
-HSPLandroid/util/jar/StrictJarVerifier;->isSignedJar()Z
-HSPLandroid/util/jar/StrictJarVerifier;->readCertificates()Z
-HSPLandroid/util/jar/StrictJarVerifier;->verify(Ljava/util/jar/Attributes;Ljava/lang/String;[BIIZZ)Z
-HSPLandroid/util/jar/StrictJarVerifier;->verifyBytes([B[B)[Ljava/security/cert/Certificate;
-HSPLandroid/util/jar/StrictJarVerifier;->verifyCertificate(Ljava/lang/String;)V
-HSPLandroid/util/jar/StrictJarVerifier;->verifyMessageDigest([B[B)Z
 HSPLandroid/util/proto/EncodedBuffer;-><init>(I)V
 HSPLandroid/util/proto/EncodedBuffer;->editRawFixed32(II)V
 HSPLandroid/util/proto/EncodedBuffer;->getBytes(I)[B
 HSPLandroid/util/proto/EncodedBuffer;->getRawFixed32At(I)I
-HSPLandroid/util/proto/EncodedBuffer;->nextWriteBuffer()V
+HSPLandroid/util/proto/EncodedBuffer;->getRawVarint32Size(I)I
+HSPLandroid/util/proto/EncodedBuffer;->getReadPos()I
+HSPLandroid/util/proto/EncodedBuffer;->getReadableSize()I
+HSPLandroid/util/proto/EncodedBuffer;->getWritePos()I
 HSPLandroid/util/proto/EncodedBuffer;->readRawByte()B
 HSPLandroid/util/proto/EncodedBuffer;->readRawFixed32()I
 HSPLandroid/util/proto/EncodedBuffer;->readRawUnsigned()J
-HSPLandroid/util/proto/EncodedBuffer;->rewindWriteTo(I)V
+HSPLandroid/util/proto/EncodedBuffer;->rewindRead()V
 HSPLandroid/util/proto/EncodedBuffer;->skipRead(I)V
 HSPLandroid/util/proto/EncodedBuffer;->startEditing()V
 HSPLandroid/util/proto/EncodedBuffer;->writeFromThisBuffer(II)V
+HSPLandroid/util/proto/EncodedBuffer;->writeRawBuffer([B)V
 HSPLandroid/util/proto/EncodedBuffer;->writeRawBuffer([BII)V
 HSPLandroid/util/proto/EncodedBuffer;->writeRawByte(B)V
-HSPLandroid/util/proto/ProtoInputStream;-><init>(Ljava/io/InputStream;)V
-HSPLandroid/util/proto/ProtoInputStream;-><init>(Ljava/io/InputStream;I)V
-HSPLandroid/util/proto/ProtoInputStream;->assertFieldNumber(J)V
-HSPLandroid/util/proto/ProtoInputStream;->assertFreshData()V
-HSPLandroid/util/proto/ProtoInputStream;->assertWireType(I)V
-HSPLandroid/util/proto/ProtoInputStream;->checkPacked(J)V
-HSPLandroid/util/proto/ProtoInputStream;->end(J)V
-HSPLandroid/util/proto/ProtoInputStream;->fillBuffer()V
-HSPLandroid/util/proto/ProtoInputStream;->incOffset(I)V
-HSPLandroid/util/proto/ProtoInputStream;->isNextField(J)Z
-HSPLandroid/util/proto/ProtoInputStream;->nextField()I
-HSPLandroid/util/proto/ProtoInputStream;->readBoolean(J)Z
-HSPLandroid/util/proto/ProtoInputStream;->readFixed32()I
-HSPLandroid/util/proto/ProtoInputStream;->readFloat(J)F
-HSPLandroid/util/proto/ProtoInputStream;->readInt(J)I
-HSPLandroid/util/proto/ProtoInputStream;->readLong(J)J
-HSPLandroid/util/proto/ProtoInputStream;->readRawString(I)Ljava/lang/String;
-HSPLandroid/util/proto/ProtoInputStream;->readString(J)Ljava/lang/String;
-HSPLandroid/util/proto/ProtoInputStream;->readTag()V
-HSPLandroid/util/proto/ProtoInputStream;->readVarint()J
-HSPLandroid/util/proto/ProtoInputStream;->start(J)J
+HSPLandroid/util/proto/EncodedBuffer;->writeRawFixed32(I)V
+HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint32(I)V
+HSPLandroid/util/proto/EncodedBuffer;->writeRawVarint64(J)V
+HSPLandroid/util/proto/ProtoOutputStream;-><init>()V
 HSPLandroid/util/proto/ProtoOutputStream;-><init>(I)V
-HPLandroid/util/proto/ProtoOutputStream;-><init>(Ljava/io/FileDescriptor;)V
+HSPLandroid/util/proto/ProtoOutputStream;-><init>(Ljava/io/FileDescriptor;)V
 HSPLandroid/util/proto/ProtoOutputStream;-><init>(Ljava/io/OutputStream;)V
+HSPLandroid/util/proto/ProtoOutputStream;->assertNotCompacted()V
 HSPLandroid/util/proto/ProtoOutputStream;->compactIfNecessary()V
 HSPLandroid/util/proto/ProtoOutputStream;->compactSizes(I)V
 HSPLandroid/util/proto/ProtoOutputStream;->editEncodedSize(I)I
 HSPLandroid/util/proto/ProtoOutputStream;->end(J)V
 HSPLandroid/util/proto/ProtoOutputStream;->endObjectImpl(JZ)V
 HSPLandroid/util/proto/ProtoOutputStream;->flush()V
-HSPLandroid/util/proto/ProtoOutputStream;->getBytes()[B
+HSPLandroid/util/proto/ProtoOutputStream;->getTagSize(I)I
+HSPLandroid/util/proto/ProtoOutputStream;->readRawTag()I
 HSPLandroid/util/proto/ProtoOutputStream;->start(J)J
 HSPLandroid/util/proto/ProtoOutputStream;->startObjectImpl(IZ)J
-HSPLandroid/util/proto/ProtoOutputStream;->write(JF)V
 HSPLandroid/util/proto/ProtoOutputStream;->write(JI)V
 HSPLandroid/util/proto/ProtoOutputStream;->write(JJ)V
 HSPLandroid/util/proto/ProtoOutputStream;->write(JLjava/lang/String;)V
-HSPLandroid/util/proto/ProtoOutputStream;->write(JZ)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeInt32Impl(II)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeInt64Impl(IJ)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeKnownLengthHeader(II)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeStringImpl(ILjava/lang/String;)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeTag(II)V
+HSPLandroid/util/proto/ProtoOutputStream;->writeUnsignedVarintFromSignedInt(I)V
 HSPLandroid/util/proto/ProtoOutputStream;->writeUtf8String(ILjava/lang/String;)V
+HSPLandroid/util/proto/ProtoStream;-><init>()V
+HSPLandroid/util/proto/ProtoStream;->getDepthFromToken(J)I
+HSPLandroid/util/proto/ProtoStream;->getOffsetFromToken(J)I
+HSPLandroid/util/proto/ProtoStream;->getRepeatedFromToken(J)Z
 HSPLandroid/util/proto/ProtoStream;->makeToken(IZIII)J
+HSPLandroid/view/-$$Lambda$1kvF4JuyM42-wmyDVPAIYdPz1jE;-><init>(Landroid/view/RenderNodeAnimator;)V
 HSPLandroid/view/-$$Lambda$1kvF4JuyM42-wmyDVPAIYdPz1jE;->run()V
-HSPLandroid/view/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;-><init>()V
-HSPLandroid/view/-$$Lambda$FocusFinder$FocusSorter$h0f2ZYL6peSaaEeCCkAoYs_YZvU;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/view/-$$Lambda$FocusFinder$FocusSorter$kW7K1t9q7Y62V38r-7g6xRzqqq8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/view/-$$Lambda$FocusFinder$P8rLvOJhymJH5ALAgUjGaM5gxKA;-><init>()V
-HSPLandroid/view/-$$Lambda$FocusFinder$Pgx6IETuqCkrhJYdiBes48tolG4;-><init>()V
-HSPLandroid/view/-$$Lambda$InsetsController$Cj7UJrCkdHvJAZ_cYKrXuTMsjz8;-><init>()V
-HSPLandroid/view/-$$Lambda$ViewRootImpl$SOWCXD2hcuOyPEUFjoV8YFVJB34;->onFrameComplete(J)V
-HSPLandroid/view/-$$Lambda$ViewRootImpl$x5nGsJmfMGl8jXdwWgDuOQZdxR8;->run()V
-HSPLandroid/view/-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0;-><init>()V
-HSPLandroid/view/-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/AbsSavedState$1;-><init>()V
-HSPLandroid/view/AbsSavedState$2;-><init>()V
+HSPLandroid/view/-$$Lambda$FocusFinder$FocusSorter$h0f2ZYL6peSaaEeCCkAoYs_YZvU;-><init>(Landroid/view/FocusFinder$FocusSorter;)V
+HSPLandroid/view/-$$Lambda$FocusFinder$FocusSorter$kW7K1t9q7Y62V38r-7g6xRzqqq8;-><init>(Landroid/view/FocusFinder$FocusSorter;)V
+HSPLandroid/view/-$$Lambda$InsetsController$6uoSHBPvxV1C0JOZKhH1AyuNXmo;-><init>(Landroid/view/InsetsController;)V
+HSPLandroid/view/-$$Lambda$InsetsController$HI9QZ2HvGm6iykc-WONz2KPG61Q;-><init>(Landroid/view/InsetsController;)V
+HSPLandroid/view/-$$Lambda$InsetsController$RZT3QkL9zMFTeHtZbfcaHIzvlsc;-><clinit>()V
+HSPLandroid/view/-$$Lambda$InsetsController$RZT3QkL9zMFTeHtZbfcaHIzvlsc;-><init>()V
+HSPLandroid/view/-$$Lambda$InsetsController$zpmOxHfTFV_3me2u3C8YaXSUauQ;-><init>(Landroid/view/InsetsController;)V
+HSPLandroid/view/-$$Lambda$QI1s392qW8l6mC24bcy9050SkuY;-><init>(Landroid/view/View;)V
+HSPLandroid/view/-$$Lambda$View$llq76MkPXP4bNcb9oJt_msw0fnQ;-><init>(Landroid/view/View;)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$7A_3tkr_Kw4TZAeIUGVlOoTcZhg;-><init>(Landroid/view/ViewRootImpl;Ljava/util/ArrayList;)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$7A_3tkr_Kw4TZAeIUGVlOoTcZhg;->run()V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$DJd0VUYJgsebcnSohO6h8zc_ONI;-><init>(Landroid/view/ViewRootImpl;ZLjava/util/ArrayList;)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$DJd0VUYJgsebcnSohO6h8zc_ONI;->run()V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$YBiqAhbCbXVPSKdbE3K4rH2gpxI;-><init>(Landroid/view/ViewRootImpl;Landroid/os/Handler;Ljava/util/ArrayList;)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$YBiqAhbCbXVPSKdbE3K4rH2gpxI;->onFrameComplete(J)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$vBfxngTfPtkwcFoa96FB0CWn5ZI;-><init>(Landroid/view/ViewRootImpl;Landroid/os/Handler;ZLjava/util/ArrayList;)V
+HSPLandroid/view/-$$Lambda$ViewRootImpl$vBfxngTfPtkwcFoa96FB0CWn5ZI;->onFrameComplete(J)V
+HSPLandroid/view/-$$Lambda$WlJa6OPA72p3gYtA3nVKC7Z1tGY;-><init>(Landroid/view/View;)V
+HSPLandroid/view/-$$Lambda$WlJa6OPA72p3gYtA3nVKC7Z1tGY;->run()V
+HSPLandroid/view/-$$Lambda$Y3lG3v_J32-xL0IjMGgNorZjESw;->get()Ljava/lang/Object;
 HSPLandroid/view/AbsSavedState;-><init>(Landroid/os/Parcelable;)V
-HSPLandroid/view/AbsSavedState;->getSuperState()Landroid/os/Parcelable;
 HSPLandroid/view/AbsSavedState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/Choreographer$1;-><init>()V
 HSPLandroid/view/Choreographer$1;->initialValue()Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer$1;->initialValue()Ljava/lang/Object;
-HSPLandroid/view/Choreographer$2;-><init>()V
 HSPLandroid/view/Choreographer$2;->initialValue()Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer$2;->initialValue()Ljava/lang/Object;
-HSPLandroid/view/Choreographer$3;-><init>()V
+HSPLandroid/view/Choreographer$CallbackQueue;-><init>(Landroid/view/Choreographer;)V
+HSPLandroid/view/Choreographer$CallbackQueue;-><init>(Landroid/view/Choreographer;Landroid/view/Choreographer$1;)V
 HSPLandroid/view/Choreographer$CallbackQueue;->addCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer$CallbackQueue;->extractDueCallbacksLocked(J)Landroid/view/Choreographer$CallbackRecord;
 HSPLandroid/view/Choreographer$CallbackQueue;->removeCallbacksLocked(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLandroid/view/Choreographer$CallbackRecord;-><init>()V
+HSPLandroid/view/Choreographer$CallbackRecord;-><init>(Landroid/view/Choreographer$1;)V
+HSPLandroid/view/Choreographer$CallbackRecord;->run(J)V
+HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;I)V
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->onVsync(JJI)V
 HSPLandroid/view/Choreographer$FrameDisplayEventReceiver;->run()V
+HSPLandroid/view/Choreographer$FrameHandler;-><init>(Landroid/view/Choreographer;Landroid/os/Looper;)V
 HSPLandroid/view/Choreographer$FrameHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;I)V
+HSPLandroid/view/Choreographer;-><init>(Landroid/os/Looper;ILandroid/view/Choreographer$1;)V
+HSPLandroid/view/Choreographer;->access$102(Landroid/view/Choreographer;)Landroid/view/Choreographer;
+HSPLandroid/view/Choreographer;->access$400(Landroid/view/Choreographer;)Landroid/view/Choreographer$FrameHandler;
+HSPLandroid/view/Choreographer;->access$500()Ljava/lang/Object;
+HSPLandroid/view/Choreographer;->access$600(Landroid/view/Choreographer;JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord;
+HSPLandroid/view/Choreographer;->access$700(Landroid/view/Choreographer;Landroid/view/Choreographer$CallbackRecord;)V
 HSPLandroid/view/Choreographer;->doCallbacks(IJ)V
 HSPLandroid/view/Choreographer;->doFrame(JI)V
 HSPLandroid/view/Choreographer;->doScheduleCallback(I)V
 HSPLandroid/view/Choreographer;->doScheduleVsync()V
+HSPLandroid/view/Choreographer;->getFrameIntervalNanos()J
 HSPLandroid/view/Choreographer;->getFrameTime()J
 HSPLandroid/view/Choreographer;->getFrameTimeNanos()J
 HSPLandroid/view/Choreographer;->getInstance()Landroid/view/Choreographer;
 HSPLandroid/view/Choreographer;->getMainThreadInstance()Landroid/view/Choreographer;
-HSPLandroid/view/Choreographer;->getSfInstance()Landroid/view/Choreographer;
+HSPLandroid/view/Choreographer;->getRefreshRate()F
+HSPLandroid/view/Choreographer;->isRunningOnLooperThreadLocked()Z
+HSPLandroid/view/Choreographer;->obtainCallbackLocked(JLjava/lang/Object;Ljava/lang/Object;)Landroid/view/Choreographer$CallbackRecord;
 HSPLandroid/view/Choreographer;->postCallback(ILjava/lang/Runnable;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer;->postCallbackDelayed(ILjava/lang/Runnable;Ljava/lang/Object;J)V
 HSPLandroid/view/Choreographer;->postCallbackDelayedInternal(ILjava/lang/Object;Ljava/lang/Object;J)V
 HSPLandroid/view/Choreographer;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
+HSPLandroid/view/Choreographer;->postFrameCallbackDelayed(Landroid/view/Choreographer$FrameCallback;J)V
+HSPLandroid/view/Choreographer;->recycleCallbackLocked(Landroid/view/Choreographer$CallbackRecord;)V
 HSPLandroid/view/Choreographer;->removeCallbacks(ILjava/lang/Runnable;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer;->removeCallbacksInternal(ILjava/lang/Object;Ljava/lang/Object;)V
 HSPLandroid/view/Choreographer;->removeFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
 HSPLandroid/view/Choreographer;->scheduleFrameLocked(J)V
+HSPLandroid/view/Choreographer;->scheduleVsyncLocked()V
+HSPLandroid/view/Choreographer;->setFPSDivisor(I)V
+HSPLandroid/view/ContextThemeWrapper;-><init>()V
 HSPLandroid/view/ContextThemeWrapper;-><init>(Landroid/content/Context;I)V
-HSPLandroid/view/ContextThemeWrapper;->applyOverrideConfiguration(Landroid/content/res/Configuration;)V
+HSPLandroid/view/ContextThemeWrapper;-><init>(Landroid/content/Context;Landroid/content/res/Resources$Theme;)V
 HSPLandroid/view/ContextThemeWrapper;->attachBaseContext(Landroid/content/Context;)V
-HSPLandroid/view/ContextThemeWrapper;->getAssets()Landroid/content/res/AssetManager;
 HSPLandroid/view/ContextThemeWrapper;->getResources()Landroid/content/res/Resources;
+HSPLandroid/view/ContextThemeWrapper;->getResourcesInternal()Landroid/content/res/Resources;
 HSPLandroid/view/ContextThemeWrapper;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLandroid/view/ContextThemeWrapper;->getTheme()Landroid/content/res/Resources$Theme;
 HSPLandroid/view/ContextThemeWrapper;->initializeTheme()V
 HSPLandroid/view/ContextThemeWrapper;->onApplyThemeResource(Landroid/content/res/Resources$Theme;IZ)V
 HSPLandroid/view/ContextThemeWrapper;->setTheme(I)V
-HSPLandroid/view/Display$HdrCapabilities$1;-><init>()V
 HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$HdrCapabilities;
 HSPLandroid/view/Display$HdrCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/Display$HdrCapabilities;-><init>([IFFF)V
-HSPLandroid/view/Display$HdrCapabilities;->hashCode()I
+HSPLandroid/view/Display$HdrCapabilities;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/Display$HdrCapabilities;-><init>(Landroid/os/Parcel;Landroid/view/Display$1;)V
 HSPLandroid/view/Display$HdrCapabilities;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/view/Display$HdrCapabilities;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/Display$Mode$1;-><init>()V
 HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/Display$Mode;
 HSPLandroid/view/Display$Mode$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/Display$Mode;-><init>(IIIF)V
+HSPLandroid/view/Display$Mode;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/Display$Mode;-><init>(Landroid/os/Parcel;Landroid/view/Display$1;)V
 HSPLandroid/view/Display$Mode;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/Display$Mode;->toString()Ljava/lang/String;
+HSPLandroid/view/Display$Mode;->getModeId()I
+HSPLandroid/view/Display$Mode;->getPhysicalHeight()I
+HSPLandroid/view/Display$Mode;->getPhysicalWidth()I
+HSPLandroid/view/Display$Mode;->getRefreshRate()F
+HSPLandroid/view/Display$Mode;->matches(IIF)Z
 HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/content/res/Resources;)V
 HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;)V
 HSPLandroid/view/Display;-><init>(Landroid/hardware/display/DisplayManagerGlobal;ILandroid/view/DisplayInfo;Landroid/view/DisplayAdjustments;Landroid/content/res/Resources;)V
 HSPLandroid/view/Display;->getDisplayAdjustments()Landroid/view/DisplayAdjustments;
 HSPLandroid/view/Display;->getDisplayId()I
-HSPLandroid/view/Display;->getDisplayInfo(Landroid/view/DisplayInfo;)Z
+HSPLandroid/view/Display;->getFlags()I
 HSPLandroid/view/Display;->getHeight()I
-HSPLandroid/view/Display;->getMaximumSizeDimension()I
 HSPLandroid/view/Display;->getMetrics(Landroid/util/DisplayMetrics;)V
+HSPLandroid/view/Display;->getMode()Landroid/view/Display$Mode;
 HSPLandroid/view/Display;->getRealMetrics(Landroid/util/DisplayMetrics;)V
 HSPLandroid/view/Display;->getRealSize(Landroid/graphics/Point;)V
 HSPLandroid/view/Display;->getRefreshRate()F
 HSPLandroid/view/Display;->getRotation()I
 HSPLandroid/view/Display;->getSize(Landroid/graphics/Point;)V
 HSPLandroid/view/Display;->getState()I
-HSPLandroid/view/Display;->getUniqueId()Ljava/lang/String;
+HSPLandroid/view/Display;->getSupportedColorModes()[I
+HSPLandroid/view/Display;->getSupportedModes()[Landroid/view/Display$Mode;
+HSPLandroid/view/Display;->getSupportedWideColorGamut()[Landroid/graphics/ColorSpace;
 HSPLandroid/view/Display;->getWidth()I
-HSPLandroid/view/Display;->hasAccess(I)Z
 HSPLandroid/view/Display;->isValid()Z
-HSPLandroid/view/Display;->stateToString(I)Ljava/lang/String;
-HSPLandroid/view/Display;->typeToString(I)Ljava/lang/String;
+HSPLandroid/view/Display;->isWideColorGamut()Z
 HSPLandroid/view/Display;->updateCachedAppSizeIfNeededLocked()V
-HSPLandroid/view/DisplayAddress$Physical$1;-><init>()V
-HSPLandroid/view/DisplayAddress;->fromPhysicalDisplayId(J)Landroid/view/DisplayAddress$Physical;
+HSPLandroid/view/Display;->updateDisplayInfoLocked()V
+HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayAddress$Physical;
+HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/DisplayAddress$Physical;-><init>(J)V
+HSPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress$1;)V
+HSPLandroid/view/DisplayAddress;-><init>()V
 HSPLandroid/view/DisplayAdjustments;-><init>()V
 HSPLandroid/view/DisplayAdjustments;-><init>(Landroid/content/res/Configuration;)V
 HSPLandroid/view/DisplayAdjustments;-><init>(Landroid/view/DisplayAdjustments;)V
@@ -16093,290 +11782,224 @@
 HSPLandroid/view/DisplayAdjustments;->getConfiguration()Landroid/content/res/Configuration;
 HSPLandroid/view/DisplayAdjustments;->hashCode()I
 HSPLandroid/view/DisplayAdjustments;->setCompatibilityInfo(Landroid/content/res/CompatibilityInfo;)V
-HSPLandroid/view/DisplayCutout$Bounds;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
-HSPLandroid/view/DisplayCutout$Bounds;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/view/DisplayCutout$1;)V
+HSPLandroid/view/DisplayAdjustments;->setConfiguration(Landroid/content/res/Configuration;)V
 HSPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;Z)V
-HSPLandroid/view/DisplayCutout$Bounds;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/DisplayCutout$Bounds;->toString()Ljava/lang/String;
-HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;-><init>()V
+HSPLandroid/view/DisplayCutout$Bounds;-><init>([Landroid/graphics/Rect;ZLandroid/view/DisplayCutout$1;)V
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayCutout$ParcelableWrapper;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;-><init>()V
+HSPLandroid/view/DisplayCutout$ParcelableWrapper;-><init>(Landroid/view/DisplayCutout;)V
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;->equals(Ljava/lang/Object;)Z
+HSPLandroid/view/DisplayCutout$ParcelableWrapper;->get()Landroid/view/DisplayCutout;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;->readCutoutFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayCutout;
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/view/DisplayCutout$ParcelableWrapper;->set(Landroid/view/DisplayCutout$ParcelableWrapper;)V
-HSPLandroid/view/DisplayCutout$ParcelableWrapper;->writeCutoutToParcel(Landroid/view/DisplayCutout;Landroid/os/Parcel;I)V
-HSPLandroid/view/DisplayCutout$ParcelableWrapper;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/DisplayCutout;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
+HSPLandroid/view/DisplayCutout$ParcelableWrapper;->set(Landroid/view/DisplayCutout;)V
+HSPLandroid/view/DisplayCutout;-><init>(Landroid/graphics/Rect;Landroid/graphics/Insets;[Landroid/graphics/Rect;Z)V
+HSPLandroid/view/DisplayCutout;-><init>(Landroid/graphics/Rect;Landroid/graphics/Insets;[Landroid/graphics/Rect;ZLandroid/view/DisplayCutout$1;)V
 HSPLandroid/view/DisplayCutout;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/DisplayCutout;->fromBounds([Landroid/graphics/Rect;)Landroid/view/DisplayCutout;
-HSPLandroid/view/DisplayCutout;->fromResourcesRectApproximation(Landroid/content/res/Resources;II)Landroid/view/DisplayCutout;
-HSPLandroid/view/DisplayCutout;->getBoundingRects()Ljava/util/List;
-HSPLandroid/view/DisplayCutout;->getBoundingRectsAll()[Landroid/graphics/Rect;
-HSPLandroid/view/DisplayCutout;->getSafeInsetBottom()I
-HSPLandroid/view/DisplayCutout;->getSafeInsetLeft()I
-HSPLandroid/view/DisplayCutout;->getSafeInsetRight()I
-HSPLandroid/view/DisplayCutout;->getSafeInsetTop()I
-HSPLandroid/view/DisplayCutout;->getSafeInsets()Landroid/graphics/Rect;
-HSPLandroid/view/DisplayCutout;->inset(IIII)Landroid/view/DisplayCutout;
-HSPLandroid/view/DisplayCutout;->isBoundsEmpty()Z
+HSPLandroid/view/DisplayCutout;->getCopyOrRef(Landroid/graphics/Rect;Z)Landroid/graphics/Rect;
 HSPLandroid/view/DisplayCutout;->isEmpty()Z
-HSPLandroid/view/DisplayCutout;->pathAndDisplayCutoutFromSpec(Ljava/lang/String;IIF)Landroid/util/Pair;
-HSPLandroid/view/DisplayCutout;->replaceSafeInsets(Landroid/graphics/Rect;)Landroid/view/DisplayCutout;
-HSPLandroid/view/DisplayCutout;->toString()Ljava/lang/String;
-HSPLandroid/view/DisplayEventReceiver;-><init>(Landroid/os/Looper;I)V
+HSPLandroid/view/DisplayEventReceiver;-><init>(Landroid/os/Looper;II)V
 HSPLandroid/view/DisplayEventReceiver;->dispatchVsync(JJI)V
-HSPLandroid/view/DisplayInfo$1;-><init>()V
+HSPLandroid/view/DisplayEventReceiver;->scheduleVsync()V
 HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayInfo;
 HSPLandroid/view/DisplayInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/DisplayInfo;-><init>()V
-HSPLandroid/view/DisplayInfo;-><init>(Landroid/view/DisplayInfo;)V
-HSPLandroid/view/DisplayInfo;->copyFrom(Landroid/view/DisplayInfo;)V
-HSPLandroid/view/DisplayInfo;->equals(Landroid/view/DisplayInfo;)Z
+HSPLandroid/view/DisplayInfo;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/DisplayInfo;-><init>(Landroid/os/Parcel;Landroid/view/DisplayInfo$1;)V
 HSPLandroid/view/DisplayInfo;->findMode(I)Landroid/view/Display$Mode;
-HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;)V
-HSPLandroid/view/DisplayInfo;->getDefaultMode()Landroid/view/Display$Mode;
+HSPLandroid/view/DisplayInfo;->getAppMetrics(Landroid/util/DisplayMetrics;Landroid/view/DisplayAdjustments;)V
 HSPLandroid/view/DisplayInfo;->getLogicalMetrics(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;)V
 HSPLandroid/view/DisplayInfo;->getMetricsWithSize(Landroid/util/DisplayMetrics;Landroid/content/res/CompatibilityInfo;Landroid/content/res/Configuration;II)V
-HSPLandroid/view/DisplayInfo;->hasAccess(I)Z
+HSPLandroid/view/DisplayInfo;->getMode()Landroid/view/Display$Mode;
 HSPLandroid/view/DisplayInfo;->isWideColorGamut()Z
 HSPLandroid/view/DisplayInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/view/DisplayInfo;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/DisplayListCanvas;-><init>(J)V
-HSPLandroid/view/FocusFinder$1;-><init>()V
 HSPLandroid/view/FocusFinder$1;->initialValue()Landroid/view/FocusFinder;
 HSPLandroid/view/FocusFinder$1;->initialValue()Ljava/lang/Object;
-HSPLandroid/view/FocusFinder$FocusSorter;->lambda$new$0$FocusFinder$FocusSorter(Landroid/view/View;Landroid/view/View;)I
-HSPLandroid/view/FocusFinder$FocusSorter;->lambda$new$1$FocusFinder$FocusSorter(Landroid/view/View;Landroid/view/View;)I
+HSPLandroid/view/FocusFinder$FocusSorter;-><init>()V
 HSPLandroid/view/FocusFinder$FocusSorter;->sort([Landroid/view/View;IILandroid/view/ViewGroup;Z)V
 HSPLandroid/view/FocusFinder$UserSpecifiedFocusComparator;-><init>(Landroid/view/FocusFinder$UserSpecifiedFocusComparator$NextFocusGetter;)V
 HSPLandroid/view/FocusFinder;-><init>()V
+HSPLandroid/view/FocusFinder;-><init>(Landroid/view/FocusFinder$1;)V
+HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View;
 HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;I)Landroid/view/View;
-HSPLandroid/view/FocusFinder;->findNextFocus(Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;ILjava/util/ArrayList;)Landroid/view/View;
-HSPLandroid/view/FocusFinder;->findNextFocusInAbsoluteDirection(Ljava/util/ArrayList;Landroid/view/ViewGroup;Landroid/view/View;Landroid/graphics/Rect;I)Landroid/view/View;
-HSPLandroid/view/FocusFinder;->findNextUserSpecifiedFocus(Landroid/view/ViewGroup;Landroid/view/View;I)Landroid/view/View;
 HSPLandroid/view/FocusFinder;->getEffectiveRoot(Landroid/view/ViewGroup;Landroid/view/View;)Landroid/view/ViewGroup;
-HSPLandroid/view/FocusFinder;->isBetterCandidate(ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-HSPLandroid/view/FocusFinder;->isCandidate(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Z
+HSPLandroid/view/FocusFinder;->getInstance()Landroid/view/FocusFinder;
+HSPLandroid/view/FocusFinder;->sort([Landroid/view/View;IILandroid/view/ViewGroup;Z)V
+HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;)V
+HSPLandroid/view/GestureDetector$GestureHandler;-><init>(Landroid/view/GestureDetector;Landroid/os/Handler;)V
 HSPLandroid/view/GestureDetector$GestureHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;-><init>()V
-HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDoubleTap(Landroid/view/MotionEvent;)Z
-HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDoubleTapEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onDown(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
-HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onLongPress(Landroid/view/MotionEvent;)V
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onShowPress(Landroid/view/MotionEvent;)V
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapConfirmed(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/GestureDetector$SimpleOnGestureListener;->onSingleTapUp(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/GestureDetector;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;)V
 HSPLandroid/view/GestureDetector;-><init>(Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V
+HSPLandroid/view/GestureDetector;->access$000(Landroid/view/GestureDetector;)Landroid/view/MotionEvent;
+HSPLandroid/view/GestureDetector;->access$100(Landroid/view/GestureDetector;)Landroid/view/GestureDetector$OnGestureListener;
+HSPLandroid/view/GestureDetector;->access$200(Landroid/view/GestureDetector;I)V
+HSPLandroid/view/GestureDetector;->access$300(Landroid/view/GestureDetector;)V
+HSPLandroid/view/GestureDetector;->access$400(Landroid/view/GestureDetector;)Landroid/view/GestureDetector$OnDoubleTapListener;
+HSPLandroid/view/GestureDetector;->access$500(Landroid/view/GestureDetector;)Z
 HSPLandroid/view/GestureDetector;->cancel()V
-HSPLandroid/view/GestureDetector;->cancelTaps()V
+HSPLandroid/view/GestureDetector;->dispatchLongPress()V
 HSPLandroid/view/GestureDetector;->init(Landroid/content/Context;)V
 HSPLandroid/view/GestureDetector;->isConsideredDoubleTap(Landroid/view/MotionEvent;Landroid/view/MotionEvent;Landroid/view/MotionEvent;)Z
 HSPLandroid/view/GestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z
+HSPLandroid/view/GestureDetector;->recordGestureClassification(I)V
 HSPLandroid/view/GestureDetector;->setContextClickListener(Landroid/view/GestureDetector$OnContextClickListener;)V
 HSPLandroid/view/GestureDetector;->setOnDoubleTapListener(Landroid/view/GestureDetector$OnDoubleTapListener;)V
+HSPLandroid/view/GestureExclusionTracker$GestureExclusionViewInfo;-><init>(Landroid/view/View;)V
+HSPLandroid/view/GestureExclusionTracker$GestureExclusionViewInfo;->getView()Landroid/view/View;
+HSPLandroid/view/GestureExclusionTracker$GestureExclusionViewInfo;->update()I
+HSPLandroid/view/GestureExclusionTracker;-><init>()V
+HSPLandroid/view/GestureExclusionTracker;->computeChangedRects()Ljava/util/List;
+HSPLandroid/view/GestureExclusionTracker;->updateRectsForView(Landroid/view/View;)V
 HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;IILandroid/graphics/Rect;)V
-HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLandroid/view/Gravity;->apply(IIILandroid/graphics/Rect;Landroid/graphics/Rect;I)V
-HSPLandroid/view/Gravity;->applyDisplay(ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLandroid/view/Gravity;->getAbsoluteGravity(II)I
+HSPLandroid/view/Gravity;->isHorizontal(I)Z
+HSPLandroid/view/Gravity;->isVertical(I)Z
+HSPLandroid/view/HandlerActionQueue$HandlerAction;-><init>(Ljava/lang/Runnable;J)V
 HSPLandroid/view/HandlerActionQueue$HandlerAction;->matches(Ljava/lang/Runnable;)Z
+HSPLandroid/view/HandlerActionQueue;-><init>()V
 HSPLandroid/view/HandlerActionQueue;->executeActions(Landroid/os/Handler;)V
 HSPLandroid/view/HandlerActionQueue;->post(Ljava/lang/Runnable;)V
 HSPLandroid/view/HandlerActionQueue;->postDelayed(Ljava/lang/Runnable;J)V
 HSPLandroid/view/HandlerActionQueue;->removeCallbacks(Ljava/lang/Runnable;)V
-HSPLandroid/view/IApplicationToken$Stub;-><init>()V
-HSPLandroid/view/IApplicationToken$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IDockedStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IDockedStackListener$Stub$Proxy;->onAdjustedForImeChanged(ZJ)V
-HSPLandroid/view/IDockedStackListener$Stub$Proxy;->onDividerVisibilityChanged(Z)V
-HSPLandroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackExistsChanged(Z)V
-HSPLandroid/view/IDockedStackListener$Stub$Proxy;->onDockedStackMinimizedChanged(ZJZ)V
-HSPLandroid/view/IDockedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IDockedStackListener;
+HSPLandroid/view/IGraphicsStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/view/IGraphicsStats$Stub$Proxy;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
-HSPLandroid/view/IGraphicsStats$Stub;-><init>()V
 HSPLandroid/view/IGraphicsStats$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IGraphicsStats;
-HSPLandroid/view/IGraphicsStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IGraphicsStatsCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IGraphicsStatsCallback$Stub$Proxy;->onRotateGraphicsStatsBuffer()V
-HSPLandroid/view/IGraphicsStatsCallback$Stub;-><init>()V
 HSPLandroid/view/IGraphicsStatsCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IGraphicsStatsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IPinnedStackController$Stub;-><init>()V
-HSPLandroid/view/IPinnedStackController$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IPinnedStackController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onActionsChanged(Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onImeVisibilityChanged(ZI)V
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onListenerRegistered(Landroid/view/IPinnedStackController;)V
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onMinimizedStateChanged(Z)V
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onMovementBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)V
-HSPLandroid/view/IPinnedStackListener$Stub$Proxy;->onShelfVisibilityChanged(ZI)V
-HSPLandroid/view/IPinnedStackListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackListener;
-PLandroid/view/IRecentsAnimationController$Stub;-><init>()V
-PLandroid/view/IRecentsAnimationController$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/view/IRecentsAnimationController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/view/IRecentsAnimationRunner$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/view/IRecentsAnimationRunner$Stub$Proxy;->onAnimationCanceled(Z)V
-PLandroid/view/IRecentsAnimationRunner$Stub$Proxy;->onAnimationStart(Landroid/view/IRecentsAnimationController;[Landroid/view/RemoteAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLandroid/view/IRecentsAnimationRunner$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRecentsAnimationRunner;
-PLandroid/view/IRemoteAnimationFinishedCallback$Stub;-><init>()V
-PLandroid/view/IRemoteAnimationFinishedCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLandroid/view/IRemoteAnimationFinishedCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/view/IRemoteAnimationRunner$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/view/IRemoteAnimationRunner$Stub$Proxy;->onAnimationStart([Landroid/view/RemoteAnimationTarget;Landroid/view/IRemoteAnimationFinishedCallback;)V
-HSPLandroid/view/IRotationWatcher$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IRotationWatcher$Stub$Proxy;->onRotationChanged(I)V
-HSPLandroid/view/IRotationWatcher$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IRotationWatcher;
-HSPLandroid/view/IWallpaperVisibilityListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IWallpaperVisibilityListener$Stub$Proxy;->onWallpaperVisibilityChanged(ZI)V
-HSPLandroid/view/IWallpaperVisibilityListener$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWallpaperVisibilityListener;
-HSPLandroid/view/IWindow$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLandroid/view/IWindow$Stub$Proxy;->closeSystemDialogs(Ljava/lang/String;)V
-HSPLandroid/view/IWindow$Stub$Proxy;->dispatchAppVisibility(Z)V
-HSPLandroid/view/IWindow$Stub$Proxy;->dispatchSystemUiVisibilityChanged(IIII)V
-HPLandroid/view/IWindow$Stub$Proxy;->dispatchWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)V
-HSPLandroid/view/IWindow$Stub$Proxy;->dispatchWallpaperOffsets(FFFFZ)V
-HSPLandroid/view/IWindow$Stub$Proxy;->dispatchWindowShown()V
-HSPLandroid/view/IWindow$Stub$Proxy;->insetsChanged(Landroid/view/InsetsState;)V
-HSPLandroid/view/IWindow$Stub$Proxy;->moved(II)V
-HSPLandroid/view/IWindow$Stub$Proxy;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
-HSPLandroid/view/IWindow$Stub$Proxy;->windowFocusChanged(ZZ)V
+HSPLandroid/view/IWindow$Stub;-><init>()V
 HSPLandroid/view/IWindow$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IWindow$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindow;
 HSPLandroid/view/IWindow$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IWindowId$Stub;-><init>()V
-PLandroid/view/IWindowId$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/view/IWindowManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/view/IWindowManager$Stub$Proxy;->getCurrentAnimatorScale()F
 HSPLandroid/view/IWindowManager$Stub$Proxy;->hasNavigationBar(I)Z
 HSPLandroid/view/IWindowManager$Stub$Proxy;->isKeyguardLocked()Z
-HSPLandroid/view/IWindowManager$Stub$Proxy;->isKeyguardSecure(I)Z
 HSPLandroid/view/IWindowManager$Stub$Proxy;->openSession(Landroid/view/IWindowSessionCallback;)Landroid/view/IWindowSession;
-HSPLandroid/view/IWindowManager$Stub;-><init>()V
 HSPLandroid/view/IWindowManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowManager;
-HPLandroid/view/IWindowManager$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/view/IWindowManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IWindowSession$Stub$Proxy;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
-HSPLandroid/view/IWindowSession$Stub$Proxy;->finishDrawing(Landroid/view/IWindow;)V
-HSPLandroid/view/IWindowSession$Stub$Proxy;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V
+HSPLandroid/view/IWindowSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/view/IWindowSession$Stub$Proxy;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
+HSPLandroid/view/IWindowSession$Stub$Proxy;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;)V
 HSPLandroid/view/IWindowSession$Stub$Proxy;->getInTouchMode()Z
-HSPLandroid/view/IWindowSession$Stub$Proxy;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
-HSPLandroid/view/IWindowSession$Stub$Proxy;->performHapticFeedback(IZ)Z
+HSPLandroid/view/IWindowSession$Stub$Proxy;->insetsModified(Landroid/view/IWindow;Landroid/view/InsetsState;)V
 HSPLandroid/view/IWindowSession$Stub$Proxy;->pokeDrawLock(Landroid/os/IBinder;)V
-HSPLandroid/view/IWindowSession$Stub$Proxy;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;)I
+HSPLandroid/view/IWindowSession$Stub$Proxy;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/graphics/Point;Landroid/view/SurfaceControl;)I
 HSPLandroid/view/IWindowSession$Stub$Proxy;->remove(Landroid/view/IWindow;)V
-HSPLandroid/view/IWindowSession$Stub$Proxy;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
-HSPLandroid/view/IWindowSession$Stub;-><init>()V
-HSPLandroid/view/IWindowSession$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/view/IWindowSession$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLandroid/view/IWindowSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IWindowSessionCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
+HSPLandroid/view/IWindowSession$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSession;
+HSPLandroid/view/IWindowSessionCallback$Stub;-><init>()V
 HSPLandroid/view/IWindowSessionCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IWindowSessionCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IWindowSessionCallback;
-HSPLandroid/view/ImeInsetsSourceConsumer;->onWindowFocusGained()V
-HSPLandroid/view/ImeInsetsSourceConsumer;->onWindowFocusLost()V
-HSPLandroid/view/InputApplicationHandle;->finalize()V
-HSPLandroid/view/InputChannel$1;-><init>()V
+HSPLandroid/view/ImeFocusController;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ImeFocusController;->checkFocus(ZZ)Z
+HSPLandroid/view/ImeFocusController;->getImmDelegate()Landroid/view/ImeFocusController$InputMethodManagerDelegate;
+HSPLandroid/view/ImeFocusController;->getServedView()Landroid/view/View;
+HSPLandroid/view/ImeFocusController;->isInLocalFocusMode(Landroid/view/WindowManager$LayoutParams;)Z
+HSPLandroid/view/ImeFocusController;->onPostWindowFocus(Landroid/view/View;ZLandroid/view/WindowManager$LayoutParams;)V
+HSPLandroid/view/ImeFocusController;->onPreWindowFocus(ZLandroid/view/WindowManager$LayoutParams;)V
+HSPLandroid/view/ImeFocusController;->onProcessImeInputStage(Ljava/lang/Object;Landroid/view/InputEvent;Landroid/view/WindowManager$LayoutParams;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;)I
+HSPLandroid/view/ImeFocusController;->onTraversal(ZLandroid/view/WindowManager$LayoutParams;)V
+HSPLandroid/view/ImeFocusController;->onViewDetachedFromWindow(Landroid/view/View;)V
+HSPLandroid/view/ImeFocusController;->onViewFocusChanged(Landroid/view/View;Z)V
+HSPLandroid/view/ImeFocusController;->onWindowDismissed()V
+HSPLandroid/view/ImeFocusController;->setNextServedView(Landroid/view/View;)V
+HSPLandroid/view/ImeFocusController;->setServedView(Landroid/view/View;)V
+HSPLandroid/view/ImeFocusController;->updateImeFocusable(Landroid/view/WindowManager$LayoutParams;Z)Z
 HSPLandroid/view/InputChannel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputChannel;
 HSPLandroid/view/InputChannel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/InputChannel;-><init>()V
 HSPLandroid/view/InputChannel;->dispose()V
-HSPLandroid/view/InputChannel;->dup()Landroid/view/InputChannel;
 HSPLandroid/view/InputChannel;->finalize()V
-HSPLandroid/view/InputChannel;->getToken()Landroid/os/IBinder;
-HSPLandroid/view/InputChannel;->openInputChannelPair(Ljava/lang/String;)[Landroid/view/InputChannel;
 HSPLandroid/view/InputChannel;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/view/InputChannel;->setToken(Landroid/os/IBinder;)V
-HSPLandroid/view/InputChannel;->transferTo(Landroid/view/InputChannel;)V
-HSPLandroid/view/InputChannel;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/InputDevice$1;-><init>()V
 HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputDevice;
 HSPLandroid/view/InputDevice$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/InputDevice$MotionRange;-><init>(IIFFFFF)V
 HSPLandroid/view/InputDevice$MotionRange;-><init>(IIFFFFFLandroid/view/InputDevice$1;)V
-HSPLandroid/view/InputDevice;-><init>(IIILjava/lang/String;IILjava/lang/String;ZIILandroid/view/KeyCharacterMap;ZZZ)V
 HSPLandroid/view/InputDevice;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/InputDevice;-><init>(Landroid/os/Parcel;Landroid/view/InputDevice$1;)V
 HSPLandroid/view/InputDevice;->addMotionRange(IIFFFFF)V
-HSPLandroid/view/InputDevice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/InputEvent$1;-><init>()V
-HPLandroid/view/InputEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InputEvent;
-HPLandroid/view/InputEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/InputDevice;->getDevice(I)Landroid/view/InputDevice;
+HSPLandroid/view/InputDevice;->getDeviceIds()[I
+HSPLandroid/view/InputDevice;->getGeneration()I
+HSPLandroid/view/InputDevice;->getKeyCharacterMap()Landroid/view/KeyCharacterMap;
+HSPLandroid/view/InputDevice;->getSources()I
+HSPLandroid/view/InputEvent;-><init>()V
 HSPLandroid/view/InputEvent;->getSequenceNumber()I
 HSPLandroid/view/InputEvent;->isFromSource(I)Z
 HSPLandroid/view/InputEvent;->prepareForReuse()V
 HSPLandroid/view/InputEvent;->recycle()V
 HSPLandroid/view/InputEvent;->recycleIfNeededAfterDispatch()V
+HSPLandroid/view/InputEventCompatProcessor;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/InputEventCompatProcessor;->processInputEventForCompatibility(Landroid/view/InputEvent;)Ljava/util/List;
+HSPLandroid/view/InputEventConsistencyVerifier;->isInstrumentationEnabled()Z
 HSPLandroid/view/InputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
+HSPLandroid/view/InputEventReceiver;->consumeBatchedInputEvents(J)Z
 HSPLandroid/view/InputEventReceiver;->dispatchBatchedInputEventPending()V
 HSPLandroid/view/InputEventReceiver;->dispatchInputEvent(ILandroid/view/InputEvent;)V
 HSPLandroid/view/InputEventReceiver;->dispose()V
 HSPLandroid/view/InputEventReceiver;->dispose(Z)V
 HSPLandroid/view/InputEventReceiver;->finalize()V
 HSPLandroid/view/InputEventReceiver;->finishInputEvent(Landroid/view/InputEvent;Z)V
-HSPLandroid/view/InputEventReceiver;->onBatchedInputEventPending()V
 HSPLandroid/view/InputEventSender;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;)V
 HSPLandroid/view/InputEventSender;->dispatchInputEventFinished(IZ)V
 HSPLandroid/view/InputEventSender;->dispose(Z)V
 HSPLandroid/view/InputEventSender;->finalize()V
 HSPLandroid/view/InputEventSender;->sendInputEvent(ILandroid/view/InputEvent;)Z
-HSPLandroid/view/InputWindowHandle;-><init>(Landroid/view/InputApplicationHandle;Landroid/view/IWindow;I)V
-HSPLandroid/view/InputWindowHandle;->finalize()V
 HSPLandroid/view/InsetsController;-><init>(Landroid/view/ViewRootImpl;)V
-HSPLandroid/view/InsetsController;->getSourceConsumer(I)Landroid/view/InsetsSourceConsumer;
-HSPLandroid/view/InsetsController;->getViewRoot()Landroid/view/ViewRootImpl;
+HSPLandroid/view/InsetsController;-><init>(Landroid/view/ViewRootImpl;Ljava/util/function/BiFunction;Landroid/os/Handler;)V
+HSPLandroid/view/InsetsController;->applyLocalVisibilityOverride()V
+HSPLandroid/view/InsetsController;->calculateInsets(ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;I)Landroid/view/WindowInsets;
+HSPLandroid/view/InsetsController;->calculateInsets(ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;II)Landroid/view/WindowInsets;
+HSPLandroid/view/InsetsController;->calculateVisibleInsets(Landroid/graphics/Rect;I)Landroid/graphics/Rect;
+HSPLandroid/view/InsetsController;->getState()Landroid/view/InsetsState;
 HSPLandroid/view/InsetsController;->onFrameChanged(Landroid/graphics/Rect;)V
 HSPLandroid/view/InsetsController;->onStateChanged(Landroid/view/InsetsState;)Z
-HSPLandroid/view/InsetsController;->onWindowFocusGained()V
-HSPLandroid/view/InsetsController;->onWindowFocusLost()V
-HSPLandroid/view/InsetsSource$1;-><init>()V
+HSPLandroid/view/InsetsController;->sendStateToWindowManager()V
+HSPLandroid/view/InsetsFlags;-><init>()V
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsSource;
 HSPLandroid/view/InsetsSource$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/InsetsSource;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/InsetsSource;-><init>(Landroid/view/InsetsSource;)V
+HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
+HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
 HSPLandroid/view/InsetsSource;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/InsetsSource;->getType()I
-HSPLandroid/view/InsetsSource;->setFrame(Landroid/graphics/Rect;)V
-HSPLandroid/view/InsetsSource;->setVisible(Z)V
-HSPLandroid/view/InsetsSource;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/InsetsSourceConsumer;->applyLocalVisibilityOverride()Z
-HSPLandroid/view/InsetsState$1;-><init>()V
+HSPLandroid/view/InsetsSource;->isVisible()Z
 HSPLandroid/view/InsetsState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/InsetsState;
 HSPLandroid/view/InsetsState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/InsetsState;-><init>()V
+HSPLandroid/view/InsetsState;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;IILandroid/util/SparseIntArray;)Landroid/view/WindowInsets;
+HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;ILandroid/util/SparseIntArray;)Landroid/view/WindowInsets;
+HSPLandroid/view/InsetsState;->calculateVisibleInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;I)Landroid/graphics/Rect;
 HSPLandroid/view/InsetsState;->equals(Ljava/lang/Object;)Z
 HSPLandroid/view/InsetsState;->getSource(I)Landroid/view/InsetsSource;
+HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V
+HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V
 HSPLandroid/view/InsetsState;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/view/InsetsState;->removeSource(I)V
 HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;)V
 HSPLandroid/view/InsetsState;->set(Landroid/view/InsetsState;Z)V
-HSPLandroid/view/InsetsState;->setDisplayFrame(Landroid/graphics/Rect;)V
+HSPLandroid/view/InsetsState;->toPublicType(I)I
 HSPLandroid/view/InsetsState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/KeyCharacterMap$1;-><init>()V
 HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyCharacterMap;
 HSPLandroid/view/KeyCharacterMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/KeyCharacterMap;-><init>(J)V
 HSPLandroid/view/KeyCharacterMap;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/KeyCharacterMap;->addCombining(II)V
-HSPLandroid/view/KeyCharacterMap;->addDeadKey(III)V
-HSPLandroid/view/KeyCharacterMap;->finalize()V
+HSPLandroid/view/KeyCharacterMap;-><init>(Landroid/os/Parcel;Landroid/view/KeyCharacterMap$1;)V
 HSPLandroid/view/KeyCharacterMap;->get(II)I
-HSPLandroid/view/KeyCharacterMap;->getKeyboardType()I
 HSPLandroid/view/KeyCharacterMap;->load(I)Landroid/view/KeyCharacterMap;
-HSPLandroid/view/KeyCharacterMap;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/KeyEvent$1;-><init>()V
-HSPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/KeyEvent;
-HSPLandroid/view/KeyEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
 HSPLandroid/view/KeyEvent$DispatcherState;-><init>()V
 HSPLandroid/view/KeyEvent$DispatcherState;->handleUpEvent(Landroid/view/KeyEvent;)V
-HSPLandroid/view/KeyEvent$DispatcherState;->isTracking(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/KeyEvent$DispatcherState;->reset()V
 HSPLandroid/view/KeyEvent$DispatcherState;->reset(Ljava/lang/Object;)V
 HSPLandroid/view/KeyEvent$DispatcherState;->startTracking(Landroid/view/KeyEvent;Ljava/lang/Object;)V
-HSPLandroid/view/KeyEvent;-><init>(JJIIIIIII)V
-HSPLandroid/view/KeyEvent;-><init>(Landroid/os/Parcel;)V
-HPLandroid/view/KeyEvent;->actionToString(I)Ljava/lang/String;
+HSPLandroid/view/KeyEvent;-><init>()V
+HSPLandroid/view/KeyEvent;->access$076(Landroid/view/KeyEvent;I)I
 HSPLandroid/view/KeyEvent;->dispatch(Landroid/view/KeyEvent$Callback;Landroid/view/KeyEvent$DispatcherState;Ljava/lang/Object;)Z
 HSPLandroid/view/KeyEvent;->getAction()I
 HSPLandroid/view/KeyEvent;->getDeviceId()I
@@ -16385,29 +12008,27 @@
 HSPLandroid/view/KeyEvent;->getKeyCharacterMap()Landroid/view/KeyCharacterMap;
 HSPLandroid/view/KeyEvent;->getKeyCode()I
 HSPLandroid/view/KeyEvent;->getMetaState()I
+HSPLandroid/view/KeyEvent;->getRepeatCount()I
 HSPLandroid/view/KeyEvent;->getUnicodeChar()I
 HSPLandroid/view/KeyEvent;->getUnicodeChar(I)I
-HPLandroid/view/KeyEvent;->isAltPressed()Z
-HSPLandroid/view/KeyEvent;->isCtrlPressed()Z
-HPLandroid/view/KeyEvent;->isMetaKey(I)Z
-HPLandroid/view/KeyEvent;->isMetaPressed()Z
+HSPLandroid/view/KeyEvent;->isCanceled()Z
+HSPLandroid/view/KeyEvent;->isLongPress()Z
 HSPLandroid/view/KeyEvent;->isModifierKey(I)Z
-HPLandroid/view/KeyEvent;->isShiftPressed()Z
-HSPLandroid/view/KeyEvent;->isSystem()Z
-HSPLandroid/view/KeyEvent;->isSystemKey(I)Z
-HSPLandroid/view/KeyEvent;->isWakeKey()Z
-HSPLandroid/view/KeyEvent;->metaStateToString(I)Ljava/lang/String;
+HSPLandroid/view/KeyEvent;->isTracking()Z
 HSPLandroid/view/KeyEvent;->normalizeMetaState(I)I
 HSPLandroid/view/KeyEvent;->obtain()Landroid/view/KeyEvent;
-HSPLandroid/view/KeyEvent;->obtain(JJIIIIIIIIILjava/lang/String;)Landroid/view/KeyEvent;
-HSPLandroid/view/KeyEvent;->recycle()V
+HSPLandroid/view/KeyEvent;->obtain(JJIIIIIIIII[BLjava/lang/String;)Landroid/view/KeyEvent;
 HSPLandroid/view/KeyEvent;->recycleIfNeededAfterDispatch()V
-HSPLandroid/view/KeyEvent;->toString()Ljava/lang/String;
-HSPLandroid/view/KeyEvent;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/KeyEvent;->startTracking()V
+HSPLandroid/view/LayoutInflater$FactoryMerger;-><init>(Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;Landroid/view/LayoutInflater$Factory;Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater$FactoryMerger;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;-><init>(Landroid/content/Context;)V
+HSPLandroid/view/LayoutInflater;-><init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V
 HSPLandroid/view/LayoutInflater;->advanceToRootNode(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLandroid/view/LayoutInflater;->consumeChildElements(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLandroid/view/LayoutInflater;->createView(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->createViewFromTag(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;Z)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->from(Landroid/content/Context;)Landroid/view/LayoutInflater;
 HSPLandroid/view/LayoutInflater;->getContext()Landroid/content/Context;
@@ -16419,39 +12040,44 @@
 HSPLandroid/view/LayoutInflater;->initPrecompiledViews(Z)V
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/content/Context;Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->onCreateView(Landroid/view/View;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
+HSPLandroid/view/LayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->parseInclude(Lorg/xmlpull/v1/XmlPullParser;Landroid/content/Context;Landroid/view/View;Landroid/util/AttributeSet;)V
 HSPLandroid/view/LayoutInflater;->rInflate(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/content/Context;Landroid/util/AttributeSet;Z)V
+HSPLandroid/view/LayoutInflater;->rInflateChildren(Lorg/xmlpull/v1/XmlPullParser;Landroid/view/View;Landroid/util/AttributeSet;Z)V
 HSPLandroid/view/LayoutInflater;->setFactory2(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->setFilter(Landroid/view/LayoutInflater$Filter;)V
 HSPLandroid/view/LayoutInflater;->setPrivateFactory(Landroid/view/LayoutInflater$Factory2;)V
 HSPLandroid/view/LayoutInflater;->tryCreateView(Landroid/view/View;Ljava/lang/String;Landroid/content/Context;Landroid/util/AttributeSet;)Landroid/view/View;
 HSPLandroid/view/LayoutInflater;->tryInflatePrecompiled(ILandroid/content/res/Resources;Landroid/view/ViewGroup;Z)Landroid/view/View;
-HSPLandroid/view/MenuInflater$MenuState;->readItem(Landroid/util/AttributeSet;)V
-HSPLandroid/view/MenuInflater$MenuState;->setItem(Landroid/view/MenuItem;)V
+HSPLandroid/view/LayoutInflater;->verifyClassLoader(Ljava/lang/reflect/Constructor;)Z
 HSPLandroid/view/MenuInflater;-><init>(Landroid/content/Context;)V
-HSPLandroid/view/MenuInflater;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
-HSPLandroid/view/MenuInflater;->inflate(ILandroid/view/Menu;)V
-HSPLandroid/view/MenuInflater;->parseMenu(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/view/Menu;)V
-HSPLandroid/view/MotionEvent$1;-><init>()V
+HSPLandroid/view/MotionEvent$PointerCoords;-><init>()V
+HSPLandroid/view/MotionEvent$PointerCoords;->clear()V
+HSPLandroid/view/MotionEvent$PointerCoords;->createArray(I)[Landroid/view/MotionEvent$PointerCoords;
+HSPLandroid/view/MotionEvent$PointerProperties;-><init>()V
+HSPLandroid/view/MotionEvent$PointerProperties;->clear()V
+HSPLandroid/view/MotionEvent$PointerProperties;->createArray(I)[Landroid/view/MotionEvent$PointerProperties;
+HSPLandroid/view/MotionEvent;-><init>()V
 HSPLandroid/view/MotionEvent;->ensureSharedTempPointerCapacity(I)V
 HSPLandroid/view/MotionEvent;->finalize()V
 HSPLandroid/view/MotionEvent;->findPointerIndex(I)I
 HSPLandroid/view/MotionEvent;->getAction()I
 HSPLandroid/view/MotionEvent;->getActionIndex()I
 HSPLandroid/view/MotionEvent;->getActionMasked()I
+HSPLandroid/view/MotionEvent;->getButtonState()I
 HSPLandroid/view/MotionEvent;->getClassification()I
 HSPLandroid/view/MotionEvent;->getDownTime()J
 HSPLandroid/view/MotionEvent;->getEventTime()J
 HSPLandroid/view/MotionEvent;->getEventTimeNano()J
 HSPLandroid/view/MotionEvent;->getFlags()I
 HSPLandroid/view/MotionEvent;->getHistoricalEventTime(I)J
-HSPLandroid/view/MotionEvent;->getHistoricalPressure(II)F
+HSPLandroid/view/MotionEvent;->getHistoricalEventTimeNano(I)J
 HSPLandroid/view/MotionEvent;->getHistoricalX(II)F
 HSPLandroid/view/MotionEvent;->getHistoricalY(II)F
 HSPLandroid/view/MotionEvent;->getHistorySize()I
 HSPLandroid/view/MotionEvent;->getPointerCount()I
 HSPLandroid/view/MotionEvent;->getPointerId(I)I
-HSPLandroid/view/MotionEvent;->getPressure(I)F
+HSPLandroid/view/MotionEvent;->getPointerIdBits()I
 HSPLandroid/view/MotionEvent;->getRawX()F
 HSPLandroid/view/MotionEvent;->getRawY()F
 HSPLandroid/view/MotionEvent;->getSource()I
@@ -16460,8 +12086,8 @@
 HSPLandroid/view/MotionEvent;->getX(I)F
 HSPLandroid/view/MotionEvent;->getY()F
 HSPLandroid/view/MotionEvent;->getY(I)F
+HSPLandroid/view/MotionEvent;->initialize(IIIIIIIIIFFFFJJI[Landroid/view/MotionEvent$PointerProperties;[Landroid/view/MotionEvent$PointerCoords;)Z
 HSPLandroid/view/MotionEvent;->isTouchEvent()Z
-HSPLandroid/view/MotionEvent;->isWithinBoundsNoHistory(FFFF)Z
 HSPLandroid/view/MotionEvent;->obtain()Landroid/view/MotionEvent;
 HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFII)Landroid/view/MotionEvent;
 HSPLandroid/view/MotionEvent;->obtain(JJIFFFFIFFIIII)Landroid/view/MotionEvent;
@@ -16470,305 +12096,236 @@
 HSPLandroid/view/MotionEvent;->offsetLocation(FF)V
 HSPLandroid/view/MotionEvent;->recycle()V
 HSPLandroid/view/MotionEvent;->setAction(I)V
-HSPLandroid/view/MotionEvent;->setLocation(FF)V
-HSPLandroid/view/MotionEvent;->split(I)Landroid/view/MotionEvent;
-HSPLandroid/view/MotionEvent;->transform(Landroid/graphics/Matrix;)V
-HSPLandroid/view/OrientationEventListener;-><init>(Landroid/content/Context;)V
-HSPLandroid/view/OrientationEventListener;-><init>(Landroid/content/Context;I)V
-HSPLandroid/view/PointerIcon$1;-><init>()V
+HSPLandroid/view/MotionEvent;->setCursorPosition(FF)V
+HSPLandroid/view/MotionEvent;->updateCursorPosition()V
+HSPLandroid/view/PointerIcon$2;-><init>()V
 HSPLandroid/view/PointerIcon;-><init>(I)V
 HSPLandroid/view/PointerIcon;->getSystemIcon(Landroid/content/Context;I)Landroid/view/PointerIcon;
 HSPLandroid/view/PointerIcon;->getSystemIconTypeIndex(I)I
-HSPLandroid/view/PointerIcon;->setUseLargeIcons(Z)V
-HSPLandroid/view/RemoteAnimationAdapter$1;-><init>()V
-PLandroid/view/RemoteAnimationAdapter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RemoteAnimationAdapter;
-PLandroid/view/RemoteAnimationAdapter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/view/RemoteAnimationAdapter;->getCallingPid()I
-HPLandroid/view/RemoteAnimationAdapter;->getDuration()J
-HPLandroid/view/RemoteAnimationAdapter;->getRunner()Landroid/view/IRemoteAnimationRunner;
-HPLandroid/view/RemoteAnimationAdapter;->getStatusBarTransitionDelay()J
-HPLandroid/view/RemoteAnimationAdapter;->setCallingPid(I)V
-HSPLandroid/view/RemoteAnimationDefinition$1;-><init>()V
-PLandroid/view/RemoteAnimationDefinition$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RemoteAnimationDefinition;
-PLandroid/view/RemoteAnimationDefinition$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry$1;-><init>()V
-PLandroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;
-PLandroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/RemoteAnimationDefinition;-><init>(Landroid/os/Parcel;)V
-PLandroid/view/RemoteAnimationDefinition;->getAdapter(ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
-PLandroid/view/RemoteAnimationDefinition;->hasTransition(ILandroid/util/ArraySet;)Z
-PLandroid/view/RemoteAnimationDefinition;->setCallingPid(I)V
-HSPLandroid/view/RemoteAnimationTarget$1;-><init>()V
-PLandroid/view/RemoteAnimationTarget;-><init>(IILandroid/view/SurfaceControl;ZLandroid/graphics/Rect;Landroid/graphics/Rect;ILandroid/graphics/Point;Landroid/graphics/Rect;Landroid/app/WindowConfiguration;ZLandroid/view/SurfaceControl;Landroid/graphics/Rect;)V
-HPLandroid/view/RemoteAnimationTarget;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/RenderNodeAnimator$1;-><init>(I)V
+HSPLandroid/view/PointerIcon;->registerDisplayListener(Landroid/content/Context;)V
 HSPLandroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;F)V
 HSPLandroid/view/RenderNodeAnimator;-><init>(Landroid/graphics/CanvasProperty;IF)V
 HSPLandroid/view/RenderNodeAnimator;->applyInterpolator()V
 HSPLandroid/view/RenderNodeAnimator;->callOnFinished(Landroid/view/RenderNodeAnimator;)V
+HSPLandroid/view/RenderNodeAnimator;->checkMutable()V
+HSPLandroid/view/RenderNodeAnimator;->cloneListeners()Ljava/util/ArrayList;
+HSPLandroid/view/RenderNodeAnimator;->doStart()V
 HSPLandroid/view/RenderNodeAnimator;->end()V
 HSPLandroid/view/RenderNodeAnimator;->getNativeAnimator()J
+HSPLandroid/view/RenderNodeAnimator;->init(J)V
+HSPLandroid/view/RenderNodeAnimator;->isNativeInterpolator(Landroid/animation/TimeInterpolator;)Z
 HSPLandroid/view/RenderNodeAnimator;->isRunning()Z
+HSPLandroid/view/RenderNodeAnimator;->moveToRunningState()V
+HSPLandroid/view/RenderNodeAnimator;->notifyStartListeners()V
 HSPLandroid/view/RenderNodeAnimator;->onFinished()V
+HSPLandroid/view/RenderNodeAnimator;->releaseNativePtr()V
 HSPLandroid/view/RenderNodeAnimator;->setDuration(J)Landroid/view/RenderNodeAnimator;
 HSPLandroid/view/RenderNodeAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)V
 HSPLandroid/view/RenderNodeAnimator;->setStartDelay(J)V
 HSPLandroid/view/RenderNodeAnimator;->setStartValue(F)V
 HSPLandroid/view/RenderNodeAnimator;->setTarget(Landroid/graphics/RecordingCanvas;)V
+HSPLandroid/view/RenderNodeAnimator;->setTarget(Landroid/graphics/RenderNode;)V
 HSPLandroid/view/RenderNodeAnimator;->start()V
 HSPLandroid/view/RenderNodeAnimatorSetHelper;->createNativeInterpolator(Landroid/animation/TimeInterpolator;J)J
 HSPLandroid/view/RenderNodeAnimatorSetHelper;->getTarget(Landroid/graphics/RecordingCanvas;)Landroid/graphics/RenderNode;
-HSPLandroid/view/ScaleGestureDetector;-><init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;)V
-HSPLandroid/view/ScaleGestureDetector;-><init>(Landroid/content/Context;Landroid/view/ScaleGestureDetector$OnScaleGestureListener;Landroid/os/Handler;)V
-HSPLandroid/view/ScaleGestureDetector;->onTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLandroid/view/ScaleGestureDetector;->setQuickScaleEnabled(Z)V
-HSPLandroid/view/ScaleGestureDetector;->setStylusScaleEnabled(Z)V
-HSPLandroid/view/Surface$1;-><init>()V
+HSPLandroid/view/Surface$CompatibleCanvas;-><init>(Landroid/view/Surface;)V
+HSPLandroid/view/Surface$CompatibleCanvas;-><init>(Landroid/view/Surface;Landroid/view/Surface$1;)V
 HSPLandroid/view/Surface;-><init>()V
-HSPLandroid/view/Surface;-><init>(Landroid/graphics/SurfaceTexture;)V
-HSPLandroid/view/Surface;->attachAndQueueBuffer(Landroid/graphics/GraphicBuffer;)V
 HSPLandroid/view/Surface;->checkNotReleasedLocked()V
 HSPLandroid/view/Surface;->copyFrom(Landroid/view/SurfaceControl;)V
-HSPLandroid/view/Surface;->destroy()V
 HSPLandroid/view/Surface;->finalize()V
 HSPLandroid/view/Surface;->getGenerationId()I
 HSPLandroid/view/Surface;->getNextFrameNumber()J
 HSPLandroid/view/Surface;->isValid()Z
-HSPLandroid/view/Surface;->lockCanvas(Landroid/graphics/Rect;)Landroid/graphics/Canvas;
 HSPLandroid/view/Surface;->release()V
-HSPLandroid/view/Surface;->rotationToString(I)Ljava/lang/String;
 HSPLandroid/view/Surface;->setNativeObjectLocked(J)V
-HSPLandroid/view/Surface;->unlockCanvasAndPost(Landroid/graphics/Canvas;)V
-HSPLandroid/view/Surface;->unlockSwCanvasAndPost(Landroid/graphics/Canvas;)V
-HSPLandroid/view/SurfaceControl$1;-><init>()V
+HSPLandroid/view/SurfaceControl$Builder;-><init>(Landroid/view/SurfaceSession;)V
 HSPLandroid/view/SurfaceControl$Builder;->build()Landroid/view/SurfaceControl;
+HSPLandroid/view/SurfaceControl$Builder;->isColorLayerSet()Z
+HSPLandroid/view/SurfaceControl$Builder;->isContainerLayerSet()Z
 HSPLandroid/view/SurfaceControl$Builder;->setBufferSize(II)Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setColorLayer()Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setContainerLayer()Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setFlags(I)Landroid/view/SurfaceControl$Builder;
+HSPLandroid/view/SurfaceControl$Builder;->setFlags(II)Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setFormat(I)Landroid/view/SurfaceControl$Builder;
-HSPLandroid/view/SurfaceControl$Builder;->setMetadata(II)Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setName(Ljava/lang/String;)Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setOpaque(Z)Landroid/view/SurfaceControl$Builder;
 HSPLandroid/view/SurfaceControl$Builder;->setParent(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Builder;
-HSPLandroid/view/SurfaceControl$Builder;->setSecure(Z)Landroid/view/SurfaceControl$Builder;
-HSPLandroid/view/SurfaceControl$PhysicalDisplayInfo;-><init>()V
-HSPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->createFromNative(IIIIJI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
-HPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->getColorSpace()Landroid/graphics/ColorSpace;
-HSPLandroid/view/SurfaceControl$ScreenshotGraphicBuffer;->getGraphicBuffer()Landroid/graphics/GraphicBuffer;
+HSPLandroid/view/SurfaceControl$Builder;->unsetBufferSize()V
 HSPLandroid/view/SurfaceControl$Transaction;-><init>()V
 HSPLandroid/view/SurfaceControl$Transaction;->apply()V
 HSPLandroid/view/SurfaceControl$Transaction;->apply(Z)V
 HSPLandroid/view/SurfaceControl$Transaction;->applyResizedSurfaces()V
-HSPLandroid/view/SurfaceControl$Transaction;->deferTransactionUntil(Landroid/view/SurfaceControl;Landroid/os/IBinder;J)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->detachChildren(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->checkPreconditions(Landroid/view/SurfaceControl;)V
 HSPLandroid/view/SurfaceControl$Transaction;->hide(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->merge(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->remove(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->reparent(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setAlpha(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setAnimationTransaction()Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setBufferSize(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction;
-HPLandroid/view/SurfaceControl$Transaction;->setColor(Landroid/view/SurfaceControl;[F)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setColorSpaceAgnostic(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setCornerRadius(Landroid/view/SurfaceControl;F)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setDisplayLayerStack(Landroid/os/IBinder;I)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setDisplayProjection(Landroid/os/IBinder;ILandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setEarlyWakeup()Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setInputWindowInfo(Landroid/view/SurfaceControl;Landroid/view/InputWindowHandle;)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setLayer(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setLayerStack(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;FFFF)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setMatrix(Landroid/view/SurfaceControl;Landroid/graphics/Matrix;[F)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setOpaque(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setOverrideScalingMode(Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setPosition(Landroid/view/SurfaceControl;FF)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setRelativeLayer(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;I)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl$Transaction;->setSecure(Landroid/view/SurfaceControl;Z)Landroid/view/SurfaceControl$Transaction;
-HPLandroid/view/SurfaceControl$Transaction;->setTransparentRegionHint(Landroid/view/SurfaceControl;Landroid/graphics/Region;)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;II)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->setWindowCrop(Landroid/view/SurfaceControl;Landroid/graphics/Rect;)Landroid/view/SurfaceControl$Transaction;
 HSPLandroid/view/SurfaceControl$Transaction;->show(Landroid/view/SurfaceControl;)Landroid/view/SurfaceControl$Transaction;
+HSPLandroid/view/SurfaceControl$Transaction;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/SurfaceControl;-><init>()V
 HSPLandroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILandroid/view/SurfaceControl;Landroid/util/SparseIntArray;)V
-HSPLandroid/view/SurfaceControl;->access$200()J
-HPLandroid/view/SurfaceControl;->captureLayers(Landroid/os/IBinder;Landroid/graphics/Rect;F)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
-HSPLandroid/view/SurfaceControl;->closeTransaction()V
-HSPLandroid/view/SurfaceControl;->closeTransaction(Z)V
-HSPLandroid/view/SurfaceControl;->copyFrom(Landroid/view/SurfaceControl;)V
-HSPLandroid/view/SurfaceControl;->detachChildren()V
+HSPLandroid/view/SurfaceControl;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILandroid/view/SurfaceControl;Landroid/util/SparseIntArray;Landroid/view/SurfaceControl$1;)V
+HSPLandroid/view/SurfaceControl;->access$1000(JJII)V
+HSPLandroid/view/SurfaceControl;->access$1100(JJFF)V
+HSPLandroid/view/SurfaceControl;->access$2000(JJFFFF)V
+HSPLandroid/view/SurfaceControl;->access$2300(JJIIII)V
+HSPLandroid/view/SurfaceControl;->access$300(Landroid/view/SurfaceControl;)V
+HSPLandroid/view/SurfaceControl;->access$400()J
+HSPLandroid/view/SurfaceControl;->access$4400(JLandroid/os/Parcel;)V
+HSPLandroid/view/SurfaceControl;->access$500(JZ)V
+HSPLandroid/view/SurfaceControl;->assignNativeObject(J)V
+HSPLandroid/view/SurfaceControl;->checkNotReleased()V
 HSPLandroid/view/SurfaceControl;->finalize()V
-HSPLandroid/view/SurfaceControl;->getActiveColorMode(Landroid/os/IBinder;)I
-HSPLandroid/view/SurfaceControl;->getActiveConfig(Landroid/os/IBinder;)I
-HSPLandroid/view/SurfaceControl;->getAllowedDisplayConfigs(Landroid/os/IBinder;)[I
-HSPLandroid/view/SurfaceControl;->getCompositionColorSpaces()[Landroid/graphics/ColorSpace;
-HSPLandroid/view/SurfaceControl;->getDisplayBrightnessSupport(Landroid/os/IBinder;)Z
-HSPLandroid/view/SurfaceControl;->getDisplayColorModes(Landroid/os/IBinder;)[I
-HSPLandroid/view/SurfaceControl;->getDisplayConfigs(Landroid/os/IBinder;)[Landroid/view/SurfaceControl$PhysicalDisplayInfo;
-HSPLandroid/view/SurfaceControl;->getDisplayedContentSamplingAttributes(Landroid/os/IBinder;)Landroid/hardware/display/DisplayedContentSamplingAttributes;
-HSPLandroid/view/SurfaceControl;->getHandle()Landroid/os/IBinder;
-HSPLandroid/view/SurfaceControl;->getHdrCapabilities(Landroid/os/IBinder;)Landroid/view/Display$HdrCapabilities;
-HSPLandroid/view/SurfaceControl;->getHeight()I
-HSPLandroid/view/SurfaceControl;->getInternalDisplayToken()Landroid/os/IBinder;
-HSPLandroid/view/SurfaceControl;->getPhysicalDisplayIds()[J
-HSPLandroid/view/SurfaceControl;->getPhysicalDisplayToken(J)Landroid/os/IBinder;
-HSPLandroid/view/SurfaceControl;->getWidth()I
-HSPLandroid/view/SurfaceControl;->mergeToGlobalTransaction(Landroid/view/SurfaceControl$Transaction;)V
-HSPLandroid/view/SurfaceControl;->openTransaction()V
+HSPLandroid/view/SurfaceControl;->isValid()Z
 HSPLandroid/view/SurfaceControl;->readFromParcel(Landroid/os/Parcel;)V
 HSPLandroid/view/SurfaceControl;->release()V
-HSPLandroid/view/SurfaceControl;->remove()V
-HPLandroid/view/SurfaceControl;->screenshot(Landroid/graphics/Rect;IIZI)Landroid/graphics/Bitmap;
-HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;)V
-HPLandroid/view/SurfaceControl;->screenshot(Landroid/os/IBinder;Landroid/view/Surface;Landroid/graphics/Rect;IIZI)V
-HSPLandroid/view/SurfaceControl;->screenshotToBufferWithSecureLayersUnsafe(Landroid/os/IBinder;Landroid/graphics/Rect;IIZI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
-HSPLandroid/view/SurfaceControl;->setAllowedDisplayConfigs(Landroid/os/IBinder;[I)Z
-HSPLandroid/view/SurfaceControl;->setAlpha(F)V
-HSPLandroid/view/SurfaceControl;->setBufferSize(II)V
-HPLandroid/view/SurfaceControl;->setColor([F)V
-HSPLandroid/view/SurfaceControl;->setColorSpaceAgnostic(Z)V
-HSPLandroid/view/SurfaceControl;->setDisplayPowerMode(Landroid/os/IBinder;I)V
-HSPLandroid/view/SurfaceControl;->setDisplayedContentSamplingEnabled(Landroid/os/IBinder;ZII)Z
-HSPLandroid/view/SurfaceControl;->setLayer(I)V
-HSPLandroid/view/SurfaceControl;->setMatrix(FFFF)V
-HSPLandroid/view/SurfaceControl;->setOpaque(Z)V
-HSPLandroid/view/SurfaceControl;->setPosition(FF)V
-HSPLandroid/view/SurfaceControl;->setSecure(Z)V
-HPLandroid/view/SurfaceControl;->setTransparentRegionHint(Landroid/graphics/Region;)V
-HSPLandroid/view/SurfaceControl;->setWindowCrop(Landroid/graphics/Rect;)V
-HSPLandroid/view/SurfaceControl;->show()V
-HSPLandroid/view/SurfaceControl;->toString()Ljava/lang/String;
-HSPLandroid/view/SurfaceControl;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/SurfaceSession;-><init>()V
 HSPLandroid/view/SurfaceSession;->finalize()V
-HSPLandroid/view/SurfaceSession;->kill()V
-HSPLandroid/view/SurfaceView$2;->onPreDraw()Z
-HSPLandroid/view/SurfaceView;-><init>(Landroid/content/Context;)V
-HSPLandroid/view/SurfaceView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/view/SurfaceView;->onAttachedToWindow()V
-HSPLandroid/view/SurfaceView;->onDetachedFromWindow()V
-HSPLandroid/view/SurfaceView;->onWindowVisibilityChanged(I)V
-HSPLandroid/view/SurfaceView;->updateSurface()V
-HSPLandroid/view/SurfaceView;->windowStopped(Z)V
-HSPLandroid/view/TextureView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/TextureView;->onAttachedToWindow()V
-HSPLandroid/view/TextureView;->onDetachedFromWindowInternal()V
-HSPLandroid/view/TextureView;->onVisibilityChanged(Landroid/view/View;I)V
-HSPLandroid/view/TextureView;->releaseSurfaceTexture()V
 HSPLandroid/view/ThreadedRenderer;-><init>(Landroid/content/Context;ZLjava/lang/String;)V
+HSPLandroid/view/ThreadedRenderer;->create(Landroid/content/Context;ZLjava/lang/String;)Landroid/view/ThreadedRenderer;
+HSPLandroid/view/ThreadedRenderer;->destroy()V
+HSPLandroid/view/ThreadedRenderer;->destroyHardwareResources(Landroid/view/View;)V
+HSPLandroid/view/ThreadedRenderer;->destroyResources(Landroid/view/View;)V
 HSPLandroid/view/ThreadedRenderer;->draw(Landroid/view/View;Landroid/view/View$AttachInfo;Landroid/view/ThreadedRenderer$DrawCallbacks;)V
-HSPLandroid/view/ThreadedRenderer;->enableForegroundTrimming()V
 HSPLandroid/view/ThreadedRenderer;->getHeight()I
 HSPLandroid/view/ThreadedRenderer;->getWidth()I
 HSPLandroid/view/ThreadedRenderer;->initialize(Landroid/view/Surface;)Z
+HSPLandroid/view/ThreadedRenderer;->initializeIfNeeded(IILandroid/view/View$AttachInfo;Landroid/view/Surface;Landroid/graphics/Rect;)Z
 HSPLandroid/view/ThreadedRenderer;->isAvailable()Z
 HSPLandroid/view/ThreadedRenderer;->isEnabled()Z
+HSPLandroid/view/ThreadedRenderer;->isRequested()Z
+HSPLandroid/view/ThreadedRenderer;->loadSystemProperties()Z
+HSPLandroid/view/ThreadedRenderer;->setEnabled(Z)V
+HSPLandroid/view/ThreadedRenderer;->setLightCenter(Landroid/view/View$AttachInfo;)V
+HSPLandroid/view/ThreadedRenderer;->setRequested(Z)V
+HSPLandroid/view/ThreadedRenderer;->setSurface(Landroid/view/Surface;)V
 HSPLandroid/view/ThreadedRenderer;->setup(IILandroid/view/View$AttachInfo;Landroid/graphics/Rect;)V
+HSPLandroid/view/ThreadedRenderer;->updateEnabledState(Landroid/view/Surface;)V
 HSPLandroid/view/ThreadedRenderer;->updateRootDisplayList(Landroid/view/View;Landroid/view/ThreadedRenderer$DrawCallbacks;)V
 HSPLandroid/view/ThreadedRenderer;->updateSurface(Landroid/view/Surface;)V
 HSPLandroid/view/ThreadedRenderer;->updateViewTreeDisplayList(Landroid/view/View;)V
-HSPLandroid/view/TouchDelegate;-><init>(Landroid/graphics/Rect;Landroid/view/View;)V
+HSPLandroid/view/VelocityTracker;-><init>(Ljava/lang/String;)V
 HSPLandroid/view/VelocityTracker;->addMovement(Landroid/view/MotionEvent;)V
 HSPLandroid/view/VelocityTracker;->clear()V
-HSPLandroid/view/VelocityTracker;->computeCurrentVelocity(I)V
 HSPLandroid/view/VelocityTracker;->computeCurrentVelocity(IF)V
 HSPLandroid/view/VelocityTracker;->finalize()V
-HSPLandroid/view/VelocityTracker;->getXVelocity()F
 HSPLandroid/view/VelocityTracker;->getXVelocity(I)F
-HSPLandroid/view/VelocityTracker;->getYVelocity()F
 HSPLandroid/view/VelocityTracker;->getYVelocity(I)F
 HSPLandroid/view/VelocityTracker;->obtain()Landroid/view/VelocityTracker;
 HSPLandroid/view/VelocityTracker;->recycle()V
-HSPLandroid/view/View$10;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$11;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$12;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$13;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$13;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$13;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/View$13;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$13;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$14;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$14;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$14;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/View$14;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$14;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$3;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$3;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$3;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLandroid/view/View$1;-><init>(Landroid/view/View;)V
+HSPLandroid/view/View$1;->positionChanged(JIIII)V
+HSPLandroid/view/View$1;->positionLost(J)V
 HSPLandroid/view/View$3;->setValue(Landroid/view/View;F)V
 HSPLandroid/view/View$3;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$4;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$4;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$4;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$5;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$5;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$5;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLandroid/view/View$5;->setValue(Landroid/view/View;F)V
 HSPLandroid/view/View$5;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$6;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$6;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$6;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/View$6;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$6;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$7;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$7;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$7;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$8;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/View$9;-><init>(Ljava/lang/String;)V
 HSPLandroid/view/View$AccessibilityDelegate;-><init>()V
 HSPLandroid/view/View$AccessibilityDelegate;->sendAccessibilityEvent(Landroid/view/View;I)V
 HSPLandroid/view/View$AttachInfo;-><init>(Landroid/view/IWindowSession;Landroid/view/IWindow;Landroid/view/Display;Landroid/view/ViewRootImpl;Landroid/os/Handler;Landroid/view/View$AttachInfo$Callbacks;Landroid/content/Context;)V
-HSPLandroid/view/View$BaseSavedState$1;-><init>()V
 HSPLandroid/view/View$BaseSavedState;-><init>(Landroid/os/Parcelable;)V
 HSPLandroid/view/View$BaseSavedState;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/View$CheckForTap;-><init>(Landroid/view/View;)V
+HSPLandroid/view/View$CheckForTap;-><init>(Landroid/view/View;Landroid/view/View$1;)V
 HSPLandroid/view/View$CheckForTap;->run()V
+HSPLandroid/view/View$ForegroundInfo;-><init>()V
+HSPLandroid/view/View$ForegroundInfo;-><init>(Landroid/view/View$1;)V
 HSPLandroid/view/View$ForegroundInfo;->access$100(Landroid/view/View$ForegroundInfo;)Z
 HSPLandroid/view/View$ForegroundInfo;->access$102(Landroid/view/View$ForegroundInfo;Z)Z
+HSPLandroid/view/View$ForegroundInfo;->access$1700(Landroid/view/View$ForegroundInfo;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/view/View$ForegroundInfo;->access$1702(Landroid/view/View$ForegroundInfo;Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
+HSPLandroid/view/View$ForegroundInfo;->access$2302(Landroid/view/View$ForegroundInfo;Z)Z
+HSPLandroid/view/View$ForegroundInfo;->access$2600(Landroid/view/View$ForegroundInfo;)I
+HSPLandroid/view/View$ForegroundInfo;->access$2602(Landroid/view/View$ForegroundInfo;I)I
+HSPLandroid/view/View$ForegroundInfo;->access$2700(Landroid/view/View$ForegroundInfo;)I
+HSPLandroid/view/View$ForegroundInfo;->access$2702(Landroid/view/View$ForegroundInfo;I)I
+HSPLandroid/view/View$ForegroundInfo;->access$2800(Landroid/view/View$ForegroundInfo;)Landroid/view/View$TintInfo;
+HSPLandroid/view/View$ListenerInfo;-><init>()V
+HSPLandroid/view/View$ListenerInfo;->access$1500(Landroid/view/View$ListenerInfo;)Ljava/util/List;
+HSPLandroid/view/View$ListenerInfo;->access$1900(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnSystemUiVisibilityChangeListener;
+HSPLandroid/view/View$ListenerInfo;->access$200(Landroid/view/View$ListenerInfo;)Ljava/util/ArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$202(Landroid/view/View$ListenerInfo;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$300(Landroid/view/View$ListenerInfo;)Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$302(Landroid/view/View$ListenerInfo;Ljava/util/concurrent/CopyOnWriteArrayList;)Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$400(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnKeyListener;
+HSPLandroid/view/View$ListenerInfo;->access$402(Landroid/view/View$ListenerInfo;Landroid/view/View$OnKeyListener;)Landroid/view/View$OnKeyListener;
+HSPLandroid/view/View$ListenerInfo;->access$4200(Landroid/view/View$ListenerInfo;)Ljava/util/ArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$4300(Landroid/view/View$ListenerInfo;)Ljava/util/ArrayList;
+HSPLandroid/view/View$ListenerInfo;->access$500(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnTouchListener;
+HSPLandroid/view/View$ListenerInfo;->access$502(Landroid/view/View$ListenerInfo;Landroid/view/View$OnTouchListener;)Landroid/view/View$OnTouchListener;
+HSPLandroid/view/View$ListenerInfo;->access$600(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnGenericMotionListener;
+HSPLandroid/view/View$ListenerInfo;->access$700(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnHoverListener;
+HSPLandroid/view/View$ListenerInfo;->access$800(Landroid/view/View$ListenerInfo;)Landroid/view/View$OnDragListener;
 HSPLandroid/view/View$MeasureSpec;->getMode(I)I
 HSPLandroid/view/View$MeasureSpec;->getSize(I)I
 HSPLandroid/view/View$MeasureSpec;->makeMeasureSpec(II)I
 HSPLandroid/view/View$MeasureSpec;->makeSafeMeasureSpec(II)I
+HSPLandroid/view/View$PerformClick;-><init>(Landroid/view/View;)V
+HSPLandroid/view/View$PerformClick;-><init>(Landroid/view/View;Landroid/view/View$1;)V
 HSPLandroid/view/View$PerformClick;->run()V
 HSPLandroid/view/View$ScrollabilityCache;-><init>(Landroid/view/ViewConfiguration;Landroid/view/View;)V
 HSPLandroid/view/View$ScrollabilityCache;->run()V
+HSPLandroid/view/View$TooltipInfo;-><init>()V
+HSPLandroid/view/View$TooltipInfo;-><init>(Landroid/view/View$1;)V
+HSPLandroid/view/View$TooltipInfo;->clearAnchorPos()V
+HSPLandroid/view/View$TransformationInfo;-><init>()V
+HSPLandroid/view/View$TransformationInfo;->access$2400(Landroid/view/View$TransformationInfo;)F
+HSPLandroid/view/View$TransformationInfo;->access$2400(Landroid/view/View$TransformationInfo;)Landroid/graphics/Matrix;
+HSPLandroid/view/View$TransformationInfo;->access$2500(Landroid/view/View$TransformationInfo;)Landroid/graphics/Matrix;
+HSPLandroid/view/View$TransformationInfo;->access$2502(Landroid/view/View$TransformationInfo;Landroid/graphics/Matrix;)Landroid/graphics/Matrix;
+HSPLandroid/view/View$TransformationInfo;->access$2600(Landroid/view/View$TransformationInfo;)F
+HSPLandroid/view/View$TransformationInfo;->access$2602(Landroid/view/View$TransformationInfo;F)F
+HSPLandroid/view/View$UnsetPressedState;-><init>(Landroid/view/View;)V
+HSPLandroid/view/View$UnsetPressedState;-><init>(Landroid/view/View;Landroid/view/View$1;)V
 HSPLandroid/view/View$UnsetPressedState;->run()V
 HSPLandroid/view/View$VisibilityChangeForAutofillHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/view/View;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/view/View;->access$3000()Z
+HSPLandroid/view/View;->access$3100()Z
+HSPLandroid/view/View;->access$3200()Z
+HSPLandroid/view/View;->access$3300(Landroid/view/View;I)V
+HSPLandroid/view/View;->access$3700(Landroid/view/View;)Z
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;I)V
 HSPLandroid/view/View;->addFocusables(Ljava/util/ArrayList;II)V
 HSPLandroid/view/View;->addOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V
 HSPLandroid/view/View;->addOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
 HSPLandroid/view/View;->animate()Landroid/view/ViewPropertyAnimator;
-HSPLandroid/view/View;->announceForAccessibility(Ljava/lang/CharSequence;)V
 HSPLandroid/view/View;->applyBackgroundTint()V
 HSPLandroid/view/View;->applyForegroundTint()V
+HSPLandroid/view/View;->applyInsets(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->applyLegacyAnimation(Landroid/view/ViewGroup;JLandroid/view/animation/Animation;Z)Z
 HSPLandroid/view/View;->areDrawablesResolved()Z
 HSPLandroid/view/View;->assignParent(Landroid/view/ViewParent;)V
 HSPLandroid/view/View;->awakenScrollBars()Z
 HSPLandroid/view/View;->awakenScrollBars(IZ)Z
 HSPLandroid/view/View;->bringToFront()V
-HSPLandroid/view/View;->buildDrawingCache(Z)V
-HSPLandroid/view/View;->buildDrawingCacheImpl(Z)V
-HSPLandroid/view/View;->buildLayer()V
 HSPLandroid/view/View;->calculateIsImportantForContentCapture()Z
 HSPLandroid/view/View;->canHaveDisplayList()Z
 HSPLandroid/view/View;->canNotifyAutofillEnterExitEvent()Z
+HSPLandroid/view/View;->canReceivePointerEvents()Z
 HSPLandroid/view/View;->canResolveLayoutDirection()Z
 HSPLandroid/view/View;->canResolveTextDirection()Z
-HSPLandroid/view/View;->canScrollHorizontally(I)Z
 HSPLandroid/view/View;->canScrollVertically(I)Z
 HSPLandroid/view/View;->canTakeFocus()Z
+HSPLandroid/view/View;->cancel(Landroid/view/View$SendAccessibilityEventThrottle;)V
 HSPLandroid/view/View;->cancelLongPress()V
 HSPLandroid/view/View;->cancelPendingInputEvents()V
-HSPLandroid/view/View;->checkForLongClick(JFF)V
+HSPLandroid/view/View;->checkForLongClick(JFFI)V
 HSPLandroid/view/View;->checkInputConnectionProxy(Landroid/view/View;)Z
+HSPLandroid/view/View;->cleanupDraw()V
 HSPLandroid/view/View;->clearAccessibilityFocus()V
 HSPLandroid/view/View;->clearAccessibilityFocusNoCallbacks(I)V
+HSPLandroid/view/View;->clearAccessibilityThrottles()V
 HSPLandroid/view/View;->clearAnimation()V
 HSPLandroid/view/View;->clearFocus()V
 HSPLandroid/view/View;->clearFocusInternal(Landroid/view/View;ZZ)V
@@ -16777,15 +12334,12 @@
 HSPLandroid/view/View;->combineVisibility(II)I
 HSPLandroid/view/View;->computeFitSystemWindows(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->computeHorizontalScrollExtent()I
-HSPLandroid/view/View;->computeHorizontalScrollRange()I
 HSPLandroid/view/View;->computeOpaqueFlags()V
 HSPLandroid/view/View;->computeScroll()V
 HSPLandroid/view/View;->computeSystemWindowInsets(Landroid/view/WindowInsets;Landroid/graphics/Rect;)Landroid/view/WindowInsets;
 HSPLandroid/view/View;->computeVerticalScrollExtent()I
 HSPLandroid/view/View;->computeVerticalScrollOffset()I
-HSPLandroid/view/View;->computeVerticalScrollRange()I
 HSPLandroid/view/View;->damageInParent()V
-HSPLandroid/view/View;->debugDraw()Z
 HSPLandroid/view/View;->destroyDrawingCache()V
 HSPLandroid/view/View;->destroyHardwareResources()V
 HSPLandroid/view/View;->dispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
@@ -16796,19 +12350,11 @@
 HSPLandroid/view/View;->dispatchDetachedFromWindow()V
 HSPLandroid/view/View;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/View;->dispatchDrawableHotspotChanged(FF)V
-HSPLandroid/view/View;->dispatchFinishTemporaryDetach()V
-HSPLandroid/view/View;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
-HSPLandroid/view/View;->dispatchPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/View;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/View;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V
-HSPLandroid/view/View;->dispatchProvideStructure(Landroid/view/ViewStructure;II)V
-HSPLandroid/view/View;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V
+HSPLandroid/view/View;->dispatchPointerEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V
 HSPLandroid/view/View;->dispatchScreenStateChanged(I)V
-HSPLandroid/view/View;->dispatchSetActivated(Z)V
 HSPLandroid/view/View;->dispatchSetPressed(Z)V
 HSPLandroid/view/View;->dispatchSetSelected(Z)V
-HSPLandroid/view/View;->dispatchStartTemporaryDetach()V
 HSPLandroid/view/View;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->dispatchVisibilityAggregated(Z)Z
 HSPLandroid/view/View;->dispatchVisibilityChanged(Landroid/view/View;I)V
@@ -16823,35 +12369,28 @@
 HSPLandroid/view/View;->drawableHotspotChanged(FF)V
 HSPLandroid/view/View;->drawableStateChanged()V
 HSPLandroid/view/View;->ensureTransformationInfo()V
+HSPLandroid/view/View;->findAccessibilityFocusHost(Z)Landroid/view/View;
 HSPLandroid/view/View;->findFocus()Landroid/view/View;
 HSPLandroid/view/View;->findKeyboardNavigationCluster()Landroid/view/View;
-HSPLandroid/view/View;->findUserSetNextFocus(Landroid/view/View;I)Landroid/view/View;
 HSPLandroid/view/View;->findViewById(I)Landroid/view/View;
 HSPLandroid/view/View;->findViewTraversal(I)Landroid/view/View;
-HSPLandroid/view/View;->findViewWithTag(Ljava/lang/Object;)Landroid/view/View;
-HSPLandroid/view/View;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View;
 HSPLandroid/view/View;->fitSystemWindows(Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->fitSystemWindowsInt(Landroid/graphics/Rect;)Z
-HSPLandroid/view/View;->focusSearch(I)Landroid/view/View;
 HSPLandroid/view/View;->forceLayout()V
-HSPLandroid/view/View;->gatherTransparentRegion(Landroid/graphics/Region;)Z
-HSPLandroid/view/View;->generateViewId()I
-HSPLandroid/view/View;->getAccessibilityClassName()Ljava/lang/CharSequence;
+HSPLandroid/view/View;->getAccessibilityDelegate()Landroid/view/View$AccessibilityDelegate;
 HSPLandroid/view/View;->getAccessibilityLiveRegion()I
 HSPLandroid/view/View;->getAccessibilityNodeProvider()Landroid/view/accessibility/AccessibilityNodeProvider;
 HSPLandroid/view/View;->getAccessibilityViewId()I
-HSPLandroid/view/View;->getAccessibilityWindowId()I
 HSPLandroid/view/View;->getAlpha()F
 HSPLandroid/view/View;->getAnimation()Landroid/view/animation/Animation;
-HSPLandroid/view/View;->getApplicationWindowToken()Landroid/os/IBinder;
-HSPLandroid/view/View;->getAutofillHints()[Ljava/lang/String;
+HSPLandroid/view/View;->getAutofillId()Landroid/view/autofill/AutofillId;
+HSPLandroid/view/View;->getAutofillManager()Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/View;->getAutofillType()I
 HSPLandroid/view/View;->getAutofillViewId()I
 HSPLandroid/view/View;->getBackground()Landroid/graphics/drawable/Drawable;
 HSPLandroid/view/View;->getBaseline()I
 HSPLandroid/view/View;->getBottom()I
-HSPLandroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;)V
-HSPLandroid/view/View;->getBoundsOnScreen(Landroid/graphics/Rect;Z)V
+HSPLandroid/view/View;->getClipToOutline()Z
 HSPLandroid/view/View;->getContentDescription()Ljava/lang/CharSequence;
 HSPLandroid/view/View;->getContext()Landroid/content/Context;
 HSPLandroid/view/View;->getDefaultSize(II)I
@@ -16862,15 +12401,15 @@
 HSPLandroid/view/View;->getDrawingRect(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getDrawingTime()J
 HSPLandroid/view/View;->getElevation()F
+HSPLandroid/view/View;->getFinalAlpha()F
 HSPLandroid/view/View;->getFitsSystemWindows()Z
 HSPLandroid/view/View;->getFocusable()I
 HSPLandroid/view/View;->getFocusableAttribute(Landroid/content/res/TypedArray;)I
-HSPLandroid/view/View;->getFocusedRect(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getForeground()Landroid/graphics/drawable/Drawable;
 HSPLandroid/view/View;->getForegroundGravity()I
-HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->getGlobalVisibleRect(Landroid/graphics/Rect;Landroid/graphics/Point;)Z
 HSPLandroid/view/View;->getHandler()Landroid/os/Handler;
+HSPLandroid/view/View;->getHasOverlappingRendering()Z
 HSPLandroid/view/View;->getHeight()I
 HSPLandroid/view/View;->getHitRect(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getId()I
@@ -16885,15 +12424,15 @@
 HSPLandroid/view/View;->getLeft()I
 HSPLandroid/view/View;->getListenerInfo()Landroid/view/View$ListenerInfo;
 HSPLandroid/view/View;->getLocationInWindow([I)V
-HSPLandroid/view/View;->getLocationOnScreen()[I
 HSPLandroid/view/View;->getLocationOnScreen([I)V
 HSPLandroid/view/View;->getMatrix()Landroid/graphics/Matrix;
 HSPLandroid/view/View;->getMeasuredHeight()I
 HSPLandroid/view/View;->getMeasuredState()I
 HSPLandroid/view/View;->getMeasuredWidth()I
+HSPLandroid/view/View;->getMeasuredWidthAndState()I
 HSPLandroid/view/View;->getMinimumHeight()I
 HSPLandroid/view/View;->getMinimumWidth()I
-HSPLandroid/view/View;->getOutsets(Landroid/graphics/Rect;)V
+HSPLandroid/view/View;->getNotifiedContentCaptureAppeared()Z
 HSPLandroid/view/View;->getOverScrollMode()I
 HSPLandroid/view/View;->getPaddingBottom()I
 HSPLandroid/view/View;->getPaddingEnd()I
@@ -16902,9 +12441,9 @@
 HSPLandroid/view/View;->getPaddingStart()I
 HSPLandroid/view/View;->getPaddingTop()I
 HSPLandroid/view/View;->getParent()Landroid/view/ViewParent;
-HSPLandroid/view/View;->getParentForAccessibility()Landroid/view/ViewParent;
 HSPLandroid/view/View;->getPivotX()F
 HSPLandroid/view/View;->getPivotY()F
+HSPLandroid/view/View;->getProjectionReceiver()Landroid/view/View;
 HSPLandroid/view/View;->getRawLayoutDirection()I
 HSPLandroid/view/View;->getRawTextAlignment()I
 HSPLandroid/view/View;->getRawTextDirection()I
@@ -16920,10 +12459,10 @@
 HSPLandroid/view/View;->getScaleY()F
 HSPLandroid/view/View;->getScrollX()I
 HSPLandroid/view/View;->getScrollY()I
-HSPLandroid/view/View;->getSelfOrParentImportantForA11y()Landroid/view/View;
 HSPLandroid/view/View;->getStraightVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getSuggestedMinimumHeight()I
 HSPLandroid/view/View;->getSuggestedMinimumWidth()I
+HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List;
 HSPLandroid/view/View;->getSystemUiVisibility()I
 HSPLandroid/view/View;->getTag()Ljava/lang/Object;
 HSPLandroid/view/View;->getTag(I)Ljava/lang/Object;
@@ -16934,16 +12473,16 @@
 HSPLandroid/view/View;->getTranslationX()F
 HSPLandroid/view/View;->getTranslationY()F
 HSPLandroid/view/View;->getTranslationZ()F
+HSPLandroid/view/View;->getVerticalScrollBarBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getVerticalScrollbarWidth()I
 HSPLandroid/view/View;->getViewRootImpl()Landroid/view/ViewRootImpl;
 HSPLandroid/view/View;->getViewTreeObserver()Landroid/view/ViewTreeObserver;
 HSPLandroid/view/View;->getVisibility()I
 HSPLandroid/view/View;->getWidth()I
-HSPLandroid/view/View;->getWindowAttachCount()I
+HSPLandroid/view/View;->getWindowInsetsController()Landroid/view/WindowInsetsController;
 HSPLandroid/view/View;->getWindowSystemUiVisibility()I
 HSPLandroid/view/View;->getWindowToken()Landroid/os/IBinder;
 HSPLandroid/view/View;->getWindowVisibility()I
-HSPLandroid/view/View;->getWindowVisibleDisplayFrame(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->getX()F
 HSPLandroid/view/View;->getY()F
 HSPLandroid/view/View;->getZ()F
@@ -16951,21 +12490,25 @@
 HSPLandroid/view/View;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->hasAncestorThatBlocksDescendantFocus()Z
 HSPLandroid/view/View;->hasDefaultFocus()Z
-HSPLandroid/view/View;->hasExplicitFocusable()Z
 HSPLandroid/view/View;->hasFocus()Z
 HSPLandroid/view/View;->hasFocusable()Z
 HSPLandroid/view/View;->hasFocusable(ZZ)Z
 HSPLandroid/view/View;->hasIdentityMatrix()Z
+HSPLandroid/view/View;->hasImeFocus()Z
 HSPLandroid/view/View;->hasListenersForAccessibility()Z
-HSPLandroid/view/View;->hasNestedScrollingParent()Z
 HSPLandroid/view/View;->hasOnClickListeners()Z
 HSPLandroid/view/View;->hasOverlappingRendering()Z
+HSPLandroid/view/View;->hasPendingLongPressCallback()Z
+HSPLandroid/view/View;->hasRtlSupport()Z
+HSPLandroid/view/View;->hasSize()Z
 HSPLandroid/view/View;->hasTransientState()Z
 HSPLandroid/view/View;->hasUnhandledKeyListener()Z
 HSPLandroid/view/View;->hasWindowFocus()Z
 HSPLandroid/view/View;->hideTooltip()V
 HSPLandroid/view/View;->includeForAccessibility()Z
 HSPLandroid/view/View;->inflate(Landroid/content/Context;ILandroid/view/ViewGroup;)Landroid/view/View;
+HSPLandroid/view/View;->initScrollCache()V
+HSPLandroid/view/View;->initialAwakenScrollBars()Z
 HSPLandroid/view/View;->initializeScrollIndicatorsInternal()V
 HSPLandroid/view/View;->initializeScrollbarsInternal(Landroid/content/res/TypedArray;)V
 HSPLandroid/view/View;->internalSetPadding(IIII)V
@@ -16982,19 +12525,21 @@
 HSPLandroid/view/View;->invalidateViewProperty(ZZ)V
 HSPLandroid/view/View;->isAccessibilityFocused()Z
 HSPLandroid/view/View;->isAccessibilityFocusedViewOrHost()Z
+HSPLandroid/view/View;->isAccessibilityPane()Z
 HSPLandroid/view/View;->isActionableForAccessibility()Z
 HSPLandroid/view/View;->isActivated()Z
+HSPLandroid/view/View;->isAggregatedVisible()Z
 HSPLandroid/view/View;->isAttachedToWindow()Z
 HSPLandroid/view/View;->isAutofillable()Z
 HSPLandroid/view/View;->isAutofilled()Z
 HSPLandroid/view/View;->isClickable()Z
-HSPLandroid/view/View;->isContextClickable()Z
 HSPLandroid/view/View;->isDefaultFocusHighlightNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/view/View;->isEnabled()Z
 HSPLandroid/view/View;->isFocusable()Z
+HSPLandroid/view/View;->isFocusableInTouchMode()Z
 HSPLandroid/view/View;->isFocused()Z
+HSPLandroid/view/View;->isFocusedByDefault()Z
 HSPLandroid/view/View;->isForegroundInsidePadding()Z
-HSPLandroid/view/View;->isHapticFeedbackEnabled()Z
 HSPLandroid/view/View;->isHardwareAccelerated()Z
 HSPLandroid/view/View;->isHorizontalFadingEdgeEnabled()Z
 HSPLandroid/view/View;->isHorizontalScrollBarEnabled()Z
@@ -17004,9 +12549,11 @@
 HSPLandroid/view/View;->isInEditMode()Z
 HSPLandroid/view/View;->isInScrollingContainer()Z
 HSPLandroid/view/View;->isInTouchMode()Z
+HSPLandroid/view/View;->isKeyboardNavigationCluster()Z
 HSPLandroid/view/View;->isLaidOut()Z
 HSPLandroid/view/View;->isLayoutDirectionInherited()Z
 HSPLandroid/view/View;->isLayoutDirectionResolved()Z
+HSPLandroid/view/View;->isLayoutModeOptical(Ljava/lang/Object;)Z
 HSPLandroid/view/View;->isLayoutRequested()Z
 HSPLandroid/view/View;->isLayoutRtl()Z
 HSPLandroid/view/View;->isLayoutValid()Z
@@ -17015,11 +12562,14 @@
 HSPLandroid/view/View;->isOpaque()Z
 HSPLandroid/view/View;->isPaddingResolved()Z
 HSPLandroid/view/View;->isPressed()Z
+HSPLandroid/view/View;->isProjectionReceiver()Z
 HSPLandroid/view/View;->isRootNamespace()Z
 HSPLandroid/view/View;->isRtlCompatibilityMode()Z
 HSPLandroid/view/View;->isSelected()Z
+HSPLandroid/view/View;->isShowingLayoutBounds()Z
 HSPLandroid/view/View;->isShown()Z
 HSPLandroid/view/View;->isSoundEffectsEnabled()Z
+HSPLandroid/view/View;->isTemporarilyDetached()Z
 HSPLandroid/view/View;->isTextAlignmentInherited()Z
 HSPLandroid/view/View;->isTextAlignmentResolved()Z
 HSPLandroid/view/View;->isTextDirectionInherited()Z
@@ -17030,15 +12580,17 @@
 HSPLandroid/view/View;->isVisibleToUser(Landroid/graphics/Rect;)Z
 HSPLandroid/view/View;->jumpDrawablesToCurrentState()V
 HSPLandroid/view/View;->layout(IIII)V
+HSPLandroid/view/View;->makeFrameworkOptionalFitsSystemWindows()V
 HSPLandroid/view/View;->makeOptionalFitsSystemWindows()V
-HSPLandroid/view/View;->mapRectFromViewToScreenCoords(Landroid/graphics/RectF;Z)V
 HSPLandroid/view/View;->measure(II)V
 HSPLandroid/view/View;->mergeDrawableStates([I[I)[I
 HSPLandroid/view/View;->needGlobalAttributesUpdate(Z)V
+HSPLandroid/view/View;->needRtlPropertiesResolution()Z
 HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeeded(Z)V
 HSPLandroid/view/View;->notifyAppearedOrDisappearedForContentCaptureIfNeededNoTrace(Z)V
 HSPLandroid/view/View;->notifyAutofillManagerOnClick()V
 HSPLandroid/view/View;->notifyEnterOrExitForAutoFillIfNeeded(Z)V
+HSPLandroid/view/View;->notifyFocusChangeToImeFocusController(Z)V
 HSPLandroid/view/View;->notifyGlobalFocusCleared(Landroid/view/View;)V
 HSPLandroid/view/View;->notifySubtreeAccessibilityStateChangedIfNeeded()V
 HSPLandroid/view/View;->notifyViewAccessibilityStateChangedIfNeeded(I)V
@@ -17046,11 +12598,11 @@
 HSPLandroid/view/View;->offsetTopAndBottom(I)V
 HSPLandroid/view/View;->onAnimationEnd()V
 HSPLandroid/view/View;->onAnimationStart()V
+HSPLandroid/view/View;->onApplyFrameworkOptionalFitSystemWindows(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLandroid/view/View;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLandroid/view/View;->onAttachedToWindow()V
 HSPLandroid/view/View;->onCancelPendingInputEvents()V
 HSPLandroid/view/View;->onCheckIsTextEditor()Z
-HSPLandroid/view/View;->onCloseSystemDialogs(Ljava/lang/String;)V
 HSPLandroid/view/View;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/view/View;->onCreateDrawableState(I)[I
 HSPLandroid/view/View;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
@@ -17063,29 +12615,17 @@
 HSPLandroid/view/View;->onDrawVerticalScrollBar(Landroid/graphics/Canvas;Landroid/graphics/drawable/Drawable;IIII)V
 HSPLandroid/view/View;->onFilterTouchEventForSecurity(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->onFinishInflate()V
-HSPLandroid/view/View;->onFinishTemporaryDetach()V
 HSPLandroid/view/View;->onFocusChanged(ZILandroid/graphics/Rect;)V
 HSPLandroid/view/View;->onFocusLost()V
-HSPLandroid/view/View;->onInitializeAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLandroid/view/View;->onInitializeAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLandroid/view/View;->onKeyDown(ILandroid/view/KeyEvent;)Z
-HSPLandroid/view/View;->onKeyUp(ILandroid/view/KeyEvent;)Z
 HSPLandroid/view/View;->onLayout(ZIIII)V
 HSPLandroid/view/View;->onMeasure(II)V
-HSPLandroid/view/View;->onPopulateAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLandroid/view/View;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLandroid/view/View;->onProvideAutofillStructure(Landroid/view/ViewStructure;I)V
-HSPLandroid/view/View;->onProvideAutofillVirtualStructure(Landroid/view/ViewStructure;I)V
-HSPLandroid/view/View;->onProvideStructure(Landroid/view/ViewStructure;II)V
 HSPLandroid/view/View;->onResolveDrawables(I)V
-HSPLandroid/view/View;->onRestoreInstanceState(Landroid/os/Parcelable;)V
 HSPLandroid/view/View;->onRtlPropertiesChanged(I)V
 HSPLandroid/view/View;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/view/View;->onScreenStateChanged(I)V
 HSPLandroid/view/View;->onScrollChanged(IIII)V
 HSPLandroid/view/View;->onSetAlpha(I)Z
 HSPLandroid/view/View;->onSizeChanged(IIII)V
-HSPLandroid/view/View;->onStartTemporaryDetach()V
 HSPLandroid/view/View;->onTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->onVisibilityAggregated(Z)V
 HSPLandroid/view/View;->onVisibilityChanged(Landroid/view/View;I)V
@@ -17094,10 +12634,10 @@
 HSPLandroid/view/View;->onWindowVisibilityChanged(I)V
 HSPLandroid/view/View;->performButtonActionOnTouchDown(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/View;->performClick()Z
+HSPLandroid/view/View;->performClickInternal()Z
 HSPLandroid/view/View;->performCollectViewAttributes(Landroid/view/View$AttachInfo;I)V
-HSPLandroid/view/View;->performHapticFeedback(I)Z
-HSPLandroid/view/View;->performHapticFeedback(II)Z
 HSPLandroid/view/View;->playSoundEffect(I)V
+HSPLandroid/view/View;->pointInView(FF)Z
 HSPLandroid/view/View;->pointInView(FFF)Z
 HSPLandroid/view/View;->post(Ljava/lang/Runnable;)Z
 HSPLandroid/view/View;->postDelayed(Ljava/lang/Runnable;J)Z
@@ -17105,22 +12645,28 @@
 HSPLandroid/view/View;->postInvalidateDelayed(J)V
 HSPLandroid/view/View;->postInvalidateOnAnimation()V
 HSPLandroid/view/View;->postOnAnimation(Ljava/lang/Runnable;)V
-HSPLandroid/view/View;->postOnAnimationDelayed(Ljava/lang/Runnable;J)V
+HSPLandroid/view/View;->postSendViewScrolledAccessibilityEventCallback(II)V
+HSPLandroid/view/View;->postUpdateSystemGestureExclusionRects()V
 HSPLandroid/view/View;->rebuildOutline()V
-HSPLandroid/view/View;->recomputePadding()V
+HSPLandroid/view/View;->recordGestureClassification(I)V
 HSPLandroid/view/View;->refreshDrawableState()V
 HSPLandroid/view/View;->registerPendingFrameMetricsObservers()V
 HSPLandroid/view/View;->removeCallbacks(Ljava/lang/Runnable;)Z
+HSPLandroid/view/View;->removeLongPressCallback()V
 HSPLandroid/view/View;->removeOnAttachStateChangeListener(Landroid/view/View$OnAttachStateChangeListener;)V
 HSPLandroid/view/View;->removeOnLayoutChangeListener(Landroid/view/View$OnLayoutChangeListener;)V
+HSPLandroid/view/View;->removePerformClickCallback()V
+HSPLandroid/view/View;->removeTapCallback()V
+HSPLandroid/view/View;->removeUnsetPressCallback()V
 HSPLandroid/view/View;->requestApplyInsets()V
 HSPLandroid/view/View;->requestFitSystemWindows()V
 HSPLandroid/view/View;->requestFocus()Z
+HSPLandroid/view/View;->requestFocus(I)Z
 HSPLandroid/view/View;->requestFocus(ILandroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestFocusNoSearch(ILandroid/graphics/Rect;)Z
 HSPLandroid/view/View;->requestLayout()V
-HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;)Z
-HSPLandroid/view/View;->requestRectangleOnScreen(Landroid/graphics/Rect;Z)Z
+HSPLandroid/view/View;->resetDisplayList()V
+HSPLandroid/view/View;->resetPressedState()V
 HSPLandroid/view/View;->resetResolvedDrawables()V
 HSPLandroid/view/View;->resetResolvedDrawablesInternal()V
 HSPLandroid/view/View;->resetResolvedLayoutDirection()V
@@ -17139,42 +12685,34 @@
 HSPLandroid/view/View;->resolveSizeAndState(III)I
 HSPLandroid/view/View;->resolveTextAlignment()Z
 HSPLandroid/view/View;->resolveTextDirection()Z
-HSPLandroid/view/View;->restoreHierarchyState(Landroid/util/SparseArray;)V
 HSPLandroid/view/View;->retrieveExplicitStyle(Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
-HSPLandroid/view/View;->rootViewRequestFocus()Z
+HSPLandroid/view/View;->sanitizeFloatPropertyValue(FLjava/lang/String;)F
 HSPLandroid/view/View;->sanitizeFloatPropertyValue(FLjava/lang/String;FF)F
-HSPLandroid/view/View;->saveAttributeData(Landroid/util/AttributeSet;Landroid/content/res/TypedArray;)V
 HSPLandroid/view/View;->saveAttributeDataForStyleable(Landroid/content/Context;[ILandroid/util/AttributeSet;Landroid/content/res/TypedArray;II)V
 HSPLandroid/view/View;->saveHierarchyState(Landroid/util/SparseArray;)V
-HSPLandroid/view/View;->scheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;J)V
 HSPLandroid/view/View;->scrollTo(II)V
 HSPLandroid/view/View;->sendAccessibilityEvent(I)V
 HSPLandroid/view/View;->sendAccessibilityEventInternal(I)V
-HSPLandroid/view/View;->sendAccessibilityEventUnchecked(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLandroid/view/View;->sendAccessibilityEventUncheckedInternal(Landroid/view/accessibility/AccessibilityEvent;)V
 HSPLandroid/view/View;->setAccessibilityDelegate(Landroid/view/View$AccessibilityDelegate;)V
-HSPLandroid/view/View;->setAccessibilityHeading(Z)V
 HSPLandroid/view/View;->setAccessibilityLiveRegion(I)V
-HSPLandroid/view/View;->setAccessibilityTraversalAfter(I)V
-HSPLandroid/view/View;->setAccessibilityTraversalBefore(I)V
 HSPLandroid/view/View;->setActivated(Z)V
 HSPLandroid/view/View;->setAlpha(F)V
+HSPLandroid/view/View;->setAlphaInternal(F)V
+HSPLandroid/view/View;->setAlphaNoInvalidation(F)Z
 HSPLandroid/view/View;->setAnimation(Landroid/view/animation/Animation;)V
 HSPLandroid/view/View;->setAutofilled(Z)V
 HSPLandroid/view/View;->setBackground(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/view/View;->setBackgroundBounds()V
 HSPLandroid/view/View;->setBackgroundColor(I)V
 HSPLandroid/view/View;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
+HSPLandroid/view/View;->setBackgroundRenderNodeProperties(Landroid/graphics/RenderNode;)V
 HSPLandroid/view/View;->setBackgroundResource(I)V
-HSPLandroid/view/View;->setBackgroundTintList(Landroid/content/res/ColorStateList;)V
 HSPLandroid/view/View;->setBottom(I)V
 HSPLandroid/view/View;->setClickable(Z)V
-HSPLandroid/view/View;->setClipBounds(Landroid/graphics/Rect;)V
 HSPLandroid/view/View;->setClipToOutline(Z)V
 HSPLandroid/view/View;->setContentDescription(Ljava/lang/CharSequence;)V
 HSPLandroid/view/View;->setDefaultFocusHighlightEnabled(Z)V
 HSPLandroid/view/View;->setDisplayListProperties(Landroid/graphics/RenderNode;)V
-HSPLandroid/view/View;->setDuplicateParentStateEnabled(Z)V
 HSPLandroid/view/View;->setElevation(F)V
 HSPLandroid/view/View;->setEnabled(Z)V
 HSPLandroid/view/View;->setFitsSystemWindows(Z)V
@@ -17187,46 +12725,34 @@
 HSPLandroid/view/View;->setFrame(IIII)Z
 HSPLandroid/view/View;->setHasTransientState(Z)V
 HSPLandroid/view/View;->setHorizontalFadingEdgeEnabled(Z)V
-HSPLandroid/view/View;->setHorizontalScrollBarEnabled(Z)V
 HSPLandroid/view/View;->setId(I)V
 HSPLandroid/view/View;->setImportantForAccessibility(I)V
 HSPLandroid/view/View;->setImportantForAutofill(I)V
 HSPLandroid/view/View;->setImportantForContentCapture(I)V
 HSPLandroid/view/View;->setIsRootNamespace(Z)V
-HSPLandroid/view/View;->setKeepScreenOn(Z)V
 HSPLandroid/view/View;->setKeyboardNavigationCluster(Z)V
-HSPLandroid/view/View;->setLayerPaint(Landroid/graphics/Paint;)V
+HSPLandroid/view/View;->setKeyedTag(ILjava/lang/Object;)V
 HSPLandroid/view/View;->setLayerType(ILandroid/graphics/Paint;)V
 HSPLandroid/view/View;->setLayoutDirection(I)V
 HSPLandroid/view/View;->setLayoutParams(Landroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/view/View;->setLeft(I)V
 HSPLandroid/view/View;->setLongClickable(Z)V
 HSPLandroid/view/View;->setMeasuredDimension(II)V
+HSPLandroid/view/View;->setMeasuredDimensionRaw(II)V
 HSPLandroid/view/View;->setMinimumHeight(I)V
-HSPLandroid/view/View;->setMinimumWidth(I)V
-HSPLandroid/view/View;->setNextFocusDownId(I)V
-HSPLandroid/view/View;->setNextFocusForwardId(I)V
-HSPLandroid/view/View;->setNextFocusLeftId(I)V
-HSPLandroid/view/View;->setNextFocusRightId(I)V
-HSPLandroid/view/View;->setNextFocusUpId(I)V
 HSPLandroid/view/View;->setOnApplyWindowInsetsListener(Landroid/view/View$OnApplyWindowInsetsListener;)V
 HSPLandroid/view/View;->setOnClickListener(Landroid/view/View$OnClickListener;)V
-HSPLandroid/view/View;->setOnCreateContextMenuListener(Landroid/view/View$OnCreateContextMenuListener;)V
 HSPLandroid/view/View;->setOnFocusChangeListener(Landroid/view/View$OnFocusChangeListener;)V
-HSPLandroid/view/View;->setOnHoverListener(Landroid/view/View$OnHoverListener;)V
 HSPLandroid/view/View;->setOnKeyListener(Landroid/view/View$OnKeyListener;)V
 HSPLandroid/view/View;->setOnLongClickListener(Landroid/view/View$OnLongClickListener;)V
 HSPLandroid/view/View;->setOnTouchListener(Landroid/view/View$OnTouchListener;)V
 HSPLandroid/view/View;->setOutlineProvider(Landroid/view/ViewOutlineProvider;)V
-HSPLandroid/view/View;->setOutlineProviderFromAttribute(I)V
 HSPLandroid/view/View;->setOverScrollMode(I)V
 HSPLandroid/view/View;->setPadding(IIII)V
 HSPLandroid/view/View;->setPaddingRelative(IIII)V
 HSPLandroid/view/View;->setPivotX(F)V
 HSPLandroid/view/View;->setPivotY(F)V
-HSPLandroid/view/View;->setPointerIcon(Landroid/view/PointerIcon;)V
 HSPLandroid/view/View;->setPressed(Z)V
-HSPLandroid/view/View;->setRight(I)V
+HSPLandroid/view/View;->setPressed(ZFF)V
 HSPLandroid/view/View;->setRotation(F)V
 HSPLandroid/view/View;->setRotationX(F)V
 HSPLandroid/view/View;->setRotationY(F)V
@@ -17235,33 +12761,27 @@
 HSPLandroid/view/View;->setScaleX(F)V
 HSPLandroid/view/View;->setScaleY(F)V
 HSPLandroid/view/View;->setScrollContainer(Z)V
-HSPLandroid/view/View;->setScrollIndicators(II)V
-HSPLandroid/view/View;->setScrollX(I)V
-HSPLandroid/view/View;->setScrollY(I)V
 HSPLandroid/view/View;->setSelected(Z)V
+HSPLandroid/view/View;->setStateDescription(Ljava/lang/CharSequence;)V
 HSPLandroid/view/View;->setStateListAnimator(Landroid/animation/StateListAnimator;)V
+HSPLandroid/view/View;->setSystemGestureExclusionRects(Ljava/util/List;)V
 HSPLandroid/view/View;->setSystemUiVisibility(I)V
 HSPLandroid/view/View;->setTag(ILjava/lang/Object;)V
 HSPLandroid/view/View;->setTag(Ljava/lang/Object;)V
 HSPLandroid/view/View;->setTagInternal(ILjava/lang/Object;)V
-HSPLandroid/view/View;->setTextAlignment(I)V
-HSPLandroid/view/View;->setTextDirection(I)V
 HSPLandroid/view/View;->setTooltipText(Ljava/lang/CharSequence;)V
-HSPLandroid/view/View;->setTop(I)V
-HSPLandroid/view/View;->setTouchDelegate(Landroid/view/TouchDelegate;)V
-HSPLandroid/view/View;->setTransitionAlpha(F)V
+HSPLandroid/view/View;->setTransitionName(Ljava/lang/String;)V
 HSPLandroid/view/View;->setTranslationX(F)V
 HSPLandroid/view/View;->setTranslationY(F)V
 HSPLandroid/view/View;->setTranslationZ(F)V
-HSPLandroid/view/View;->setVerticalScrollBarEnabled(Z)V
 HSPLandroid/view/View;->setVisibility(I)V
 HSPLandroid/view/View;->setWillNotDraw(Z)V
 HSPLandroid/view/View;->setX(F)V
 HSPLandroid/view/View;->setY(F)V
 HSPLandroid/view/View;->shouldDrawRoundScrollbar()Z
 HSPLandroid/view/View;->sizeChange(IIII)V
+HSPLandroid/view/View;->skipInvalidate()Z
 HSPLandroid/view/View;->startAnimation(Landroid/view/animation/Animation;)V
-HSPLandroid/view/View;->startNestedScroll(I)Z
 HSPLandroid/view/View;->stopNestedScroll()V
 HSPLandroid/view/View;->switchDefaultFocusHighlight()V
 HSPLandroid/view/View;->toString()Ljava/lang/String;
@@ -17271,44 +12791,46 @@
 HSPLandroid/view/View;->unscheduleDrawable(Landroid/graphics/drawable/Drawable;Ljava/lang/Runnable;)V
 HSPLandroid/view/View;->updateDisplayListIfDirty()Landroid/graphics/RenderNode;
 HSPLandroid/view/View;->updateFocusedInCluster(Landroid/view/View;I)V
+HSPLandroid/view/View;->updateSystemGestureExclusionRects()V
 HSPLandroid/view/View;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
+HSPLandroid/view/ViewAnimationHostBridge;-><init>(Landroid/view/View;)V
 HSPLandroid/view/ViewAnimationHostBridge;->isAttached()Z
 HSPLandroid/view/ViewAnimationHostBridge;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
 HSPLandroid/view/ViewAnimationHostBridge;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
 HSPLandroid/view/ViewConfiguration;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/ViewConfiguration;->get(Landroid/content/Context;)Landroid/view/ViewConfiguration;
-HPLandroid/view/ViewConfiguration;->getDeviceGlobalActionKeyTimeout()J
-HSPLandroid/view/ViewConfiguration;->getDoubleTapMinTime()I
 HSPLandroid/view/ViewConfiguration;->getDoubleTapTimeout()I
-HSPLandroid/view/ViewConfiguration;->getKeyRepeatTimeout()I
 HSPLandroid/view/ViewConfiguration;->getLongPressTimeout()I
+HSPLandroid/view/ViewConfiguration;->getPressedStateDuration()I
+HSPLandroid/view/ViewConfiguration;->getScaledAmbiguousGestureMultiplier()F
 HSPLandroid/view/ViewConfiguration;->getScaledDoubleTapSlop()I
 HSPLandroid/view/ViewConfiguration;->getScaledDoubleTapTouchSlop()I
 HSPLandroid/view/ViewConfiguration;->getScaledFadingEdgeLength()I
 HSPLandroid/view/ViewConfiguration;->getScaledHorizontalScrollFactor()F
 HSPLandroid/view/ViewConfiguration;->getScaledHoverSlop()I
-HSPLandroid/view/ViewConfiguration;->getScaledMaximumDrawingCacheSize()I
 HSPLandroid/view/ViewConfiguration;->getScaledMaximumFlingVelocity()I
 HSPLandroid/view/ViewConfiguration;->getScaledMinScrollbarTouchTarget()I
 HSPLandroid/view/ViewConfiguration;->getScaledMinimumFlingVelocity()I
-HSPLandroid/view/ViewConfiguration;->getScaledMinimumScalingSpan()I
 HSPLandroid/view/ViewConfiguration;->getScaledOverflingDistance()I
 HSPLandroid/view/ViewConfiguration;->getScaledOverscrollDistance()I
 HSPLandroid/view/ViewConfiguration;->getScaledPagingTouchSlop()I
 HSPLandroid/view/ViewConfiguration;->getScaledScrollBarSize()I
 HSPLandroid/view/ViewConfiguration;->getScaledTouchSlop()I
 HSPLandroid/view/ViewConfiguration;->getScaledVerticalScrollFactor()F
-HSPLandroid/view/ViewConfiguration;->getScaledWindowTouchSlop()I
+HSPLandroid/view/ViewConfiguration;->getScrollBarFadeDuration()I
+HSPLandroid/view/ViewConfiguration;->getScrollDefaultDelay()I
+HSPLandroid/view/ViewConfiguration;->getScrollFriction()F
 HSPLandroid/view/ViewConfiguration;->getTapTimeout()I
 HSPLandroid/view/ViewConfiguration;->isFadingMarqueeEnabled()Z
 HSPLandroid/view/ViewDebug;->getViewInstanceCount()J
 HSPLandroid/view/ViewDebug;->getViewRootImplCount()J
-HSPLandroid/view/ViewGroup$1;-><init>()V
+HSPLandroid/view/ViewGroup$4;-><init>(Landroid/view/ViewGroup;)V
 HSPLandroid/view/ViewGroup$4;->endTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V
 HSPLandroid/view/ViewGroup$4;->startTransition(Landroid/animation/LayoutTransition;Landroid/view/ViewGroup;Landroid/view/View;I)V
-HSPLandroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;->recycle()V
+HSPLandroid/view/ViewGroup$LayoutParams;-><init>()V
 HSPLandroid/view/ViewGroup$LayoutParams;-><init>(II)V
 HSPLandroid/view/ViewGroup$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/view/ViewGroup$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup$LayoutParams;->resolveLayoutDirection(I)V
 HSPLandroid/view/ViewGroup$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;-><init>(II)V
@@ -17325,6 +12847,7 @@
 HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginEnd(I)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMarginStart(I)V
 HSPLandroid/view/ViewGroup$MarginLayoutParams;->setMargins(IIII)V
+HSPLandroid/view/ViewGroup$TouchTarget;-><init>()V
 HSPLandroid/view/ViewGroup$TouchTarget;->obtain(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget;
 HSPLandroid/view/ViewGroup$TouchTarget;->recycle()V
 HSPLandroid/view/ViewGroup;-><init>(Landroid/content/Context;)V
@@ -17333,6 +12856,7 @@
 HSPLandroid/view/ViewGroup;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/view/ViewGroup;->addFocusables(Ljava/util/ArrayList;II)V
 HSPLandroid/view/ViewGroup;->addInArray(Landroid/view/View;I)V
+HSPLandroid/view/ViewGroup;->addTouchTarget(Landroid/view/View;I)Landroid/view/ViewGroup$TouchTarget;
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;I)V
 HSPLandroid/view/ViewGroup;->addView(Landroid/view/View;II)V
@@ -17343,6 +12867,7 @@
 HSPLandroid/view/ViewGroup;->addViewInner(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;Z)V
 HSPLandroid/view/ViewGroup;->attachViewToParent(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup;->bringChildToFront(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->brokenDispatchApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLandroid/view/ViewGroup;->buildOrderedChildList()Ljava/util/ArrayList;
 HSPLandroid/view/ViewGroup;->buildTouchDispatchChildList()Ljava/util/ArrayList;
 HSPLandroid/view/ViewGroup;->cancelAndClearTouchTargets(Landroid/view/MotionEvent;)V
@@ -17351,11 +12876,10 @@
 HSPLandroid/view/ViewGroup;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/view/ViewGroup;->childDrawableStateChanged(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->childHasTransientStateChanged(Landroid/view/View;Z)V
-HSPLandroid/view/ViewGroup;->cleanupLayoutState(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->clearCachedLayoutMode()V
 HSPLandroid/view/ViewGroup;->clearChildFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->clearDisappearingChildren()V
 HSPLandroid/view/ViewGroup;->clearFocus()V
-HSPLandroid/view/ViewGroup;->clearFocusedInCluster()V
 HSPLandroid/view/ViewGroup;->clearTouchTargets()V
 HSPLandroid/view/ViewGroup;->destroyHardwareResources()V
 HSPLandroid/view/ViewGroup;->detachAllViewsFromParent()V
@@ -17368,20 +12892,14 @@
 HSPLandroid/view/ViewGroup;->dispatchDetachedFromWindow()V
 HSPLandroid/view/ViewGroup;->dispatchDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/view/ViewGroup;->dispatchDrawableHotspotChanged(FF)V
-HSPLandroid/view/ViewGroup;->dispatchFinishTemporaryDetach()V
 HSPLandroid/view/ViewGroup;->dispatchFreezeSelfOnly(Landroid/util/SparseArray;)V
 HSPLandroid/view/ViewGroup;->dispatchGetDisplayList()V
 HSPLandroid/view/ViewGroup;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchKeyEventPreIme(Landroid/view/KeyEvent;)Z
-HSPLandroid/view/ViewGroup;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/ViewGroup;->dispatchProvideAutofillStructure(Landroid/view/ViewStructure;I)V
-HSPLandroid/view/ViewGroup;->dispatchRestoreInstanceState(Landroid/util/SparseArray;)V
 HSPLandroid/view/ViewGroup;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V
 HSPLandroid/view/ViewGroup;->dispatchScreenStateChanged(I)V
 HSPLandroid/view/ViewGroup;->dispatchSetPressed(Z)V
 HSPLandroid/view/ViewGroup;->dispatchSetSelected(Z)V
-HSPLandroid/view/ViewGroup;->dispatchStartTemporaryDetach()V
-HSPLandroid/view/ViewGroup;->dispatchThawSelfOnly(Landroid/util/SparseArray;)V
 HSPLandroid/view/ViewGroup;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/ViewGroup;->dispatchTransformedTouchEvent(Landroid/view/MotionEvent;ZLandroid/view/View;I)Z
 HSPLandroid/view/ViewGroup;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Landroid/view/View;
@@ -17399,14 +12917,10 @@
 HSPLandroid/view/ViewGroup;->exitTooltipHoverTargets()V
 HSPLandroid/view/ViewGroup;->findFocus()Landroid/view/View;
 HSPLandroid/view/ViewGroup;->findViewTraversal(I)Landroid/view/View;
-HSPLandroid/view/ViewGroup;->findViewWithTagTraversal(Ljava/lang/Object;)Landroid/view/View;
 HSPLandroid/view/ViewGroup;->finishAnimatingView(Landroid/view/View;Landroid/view/animation/Animation;)V
-HSPLandroid/view/ViewGroup;->focusSearch(Landroid/view/View;I)Landroid/view/View;
 HSPLandroid/view/ViewGroup;->focusableViewAvailable(Landroid/view/View;)V
-HSPLandroid/view/ViewGroup;->gatherTransparentRegion(Landroid/graphics/Region;)Z
 HSPLandroid/view/ViewGroup;->generateDefaultLayoutParams()Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/view/ViewGroup;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
-HSPLandroid/view/ViewGroup;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedIndex(IIZ)I
 HSPLandroid/view/ViewGroup;->getAndVerifyPreorderedView(Ljava/util/ArrayList;[Landroid/view/View;I)Landroid/view/View;
 HSPLandroid/view/ViewGroup;->getChildAt(I)Landroid/view/View;
@@ -17419,11 +12933,13 @@
 HSPLandroid/view/ViewGroup;->getClipToPadding()Z
 HSPLandroid/view/ViewGroup;->getDescendantFocusability()I
 HSPLandroid/view/ViewGroup;->getFocusedChild()Landroid/view/View;
-HSPLandroid/view/ViewGroup;->getLayoutMode()I
 HSPLandroid/view/ViewGroup;->getLayoutTransition()Landroid/animation/LayoutTransition;
-HSPLandroid/view/ViewGroup;->getScrollIndicatorBounds(Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewGroup;->getTempPoint()[F
+HSPLandroid/view/ViewGroup;->getTouchTarget(Landroid/view/View;)Landroid/view/ViewGroup$TouchTarget;
 HSPLandroid/view/ViewGroup;->getTouchscreenBlocksFocus()Z
 HSPLandroid/view/ViewGroup;->handleFocusGainInternal(ILandroid/graphics/Rect;)V
+HSPLandroid/view/ViewGroup;->hasBooleanFlag(I)Z
+HSPLandroid/view/ViewGroup;->hasChildWithZ()Z
 HSPLandroid/view/ViewGroup;->hasDefaultFocus()Z
 HSPLandroid/view/ViewGroup;->hasFocus()Z
 HSPLandroid/view/ViewGroup;->hasFocusable(ZZ)Z
@@ -17435,7 +12951,6 @@
 HSPLandroid/view/ViewGroup;->initViewGroup()V
 HSPLandroid/view/ViewGroup;->internalSetPadding(IIII)V
 HSPLandroid/view/ViewGroup;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V
-HSPLandroid/view/ViewGroup;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;
 HSPLandroid/view/ViewGroup;->isChildrenDrawingOrderEnabled()Z
 HSPLandroid/view/ViewGroup;->isLayoutModeOptical()Z
 HSPLandroid/view/ViewGroup;->isLayoutSuppressed()Z
@@ -17443,12 +12958,12 @@
 HSPLandroid/view/ViewGroup;->isViewTransitioning(Landroid/view/View;)Z
 HSPLandroid/view/ViewGroup;->jumpDrawablesToCurrentState()V
 HSPLandroid/view/ViewGroup;->layout(IIII)V
+HSPLandroid/view/ViewGroup;->makeFrameworkOptionalFitsSystemWindows()V
 HSPLandroid/view/ViewGroup;->makeOptionalFitsSystemWindows()V
 HSPLandroid/view/ViewGroup;->measureChild(Landroid/view/View;II)V
 HSPLandroid/view/ViewGroup;->measureChildWithMargins(Landroid/view/View;IIII)V
-HSPLandroid/view/ViewGroup;->measureChildren(II)V
-HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V
 HSPLandroid/view/ViewGroup;->notifySubtreeAccessibilityStateChangedIfNeeded()V
+HSPLandroid/view/ViewGroup;->offsetDescendantRectToMyCoords(Landroid/view/View;Landroid/graphics/Rect;)V
 HSPLandroid/view/ViewGroup;->offsetRectBetweenParentAndChild(Landroid/view/View;Landroid/graphics/Rect;ZZ)V
 HSPLandroid/view/ViewGroup;->onAttachedToWindow()V
 HSPLandroid/view/ViewGroup;->onChildVisibilityChanged(Landroid/view/View;II)V
@@ -17457,14 +12972,11 @@
 HSPLandroid/view/ViewGroup;->onDetachedFromWindow()V
 HSPLandroid/view/ViewGroup;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/view/ViewGroup;->onRequestFocusInDescendants(ILandroid/graphics/Rect;)Z
-HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/ViewGroup;->onRequestSendAccessibilityEventInternal(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z
 HSPLandroid/view/ViewGroup;->onSetLayoutParams(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/ViewGroup;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
 HSPLandroid/view/ViewGroup;->onViewAdded(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->onViewRemoved(Landroid/view/View;)V
-HSPLandroid/view/ViewGroup;->populateChildrenForAutofill(Ljava/util/ArrayList;I)V
-HSPLandroid/view/ViewGroup;->recomputeViewAttributes(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->recreateChildDisplayList(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->removeAllViews()V
 HSPLandroid/view/ViewGroup;->removeAllViewsInLayout()V
 HSPLandroid/view/ViewGroup;->removeDetachedView(Landroid/view/View;Z)V
@@ -17474,19 +12986,18 @@
 HSPLandroid/view/ViewGroup;->removeViewAt(I)V
 HSPLandroid/view/ViewGroup;->removeViewInLayout(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->removeViewInternal(ILandroid/view/View;)V
+HSPLandroid/view/ViewGroup;->removeViewInternal(Landroid/view/View;)Z
 HSPLandroid/view/ViewGroup;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V
-HSPLandroid/view/ViewGroup;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/ViewGroup;->requestDisallowInterceptTouchEvent(Z)V
 HSPLandroid/view/ViewGroup;->requestFocus(ILandroid/graphics/Rect;)Z
-HSPLandroid/view/ViewGroup;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/ViewGroup;->requestTransitionStart(Landroid/animation/LayoutTransition;)V
-HSPLandroid/view/ViewGroup;->requestTransparentRegion(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->resetCancelNextUpFlag(Landroid/view/View;)Z
 HSPLandroid/view/ViewGroup;->resetResolvedDrawables()V
 HSPLandroid/view/ViewGroup;->resetResolvedLayoutDirection()V
 HSPLandroid/view/ViewGroup;->resetResolvedPadding()V
 HSPLandroid/view/ViewGroup;->resetResolvedTextAlignment()V
 HSPLandroid/view/ViewGroup;->resetResolvedTextDirection()V
 HSPLandroid/view/ViewGroup;->resetSubtreeAccessibilityStateChanged()V
+HSPLandroid/view/ViewGroup;->resetTouchState()V
 HSPLandroid/view/ViewGroup;->resolveDrawables()V
 HSPLandroid/view/ViewGroup;->resolveLayoutDirection()Z
 HSPLandroid/view/ViewGroup;->resolveLayoutParams()V
@@ -17494,138 +13005,204 @@
 HSPLandroid/view/ViewGroup;->resolveRtlPropertiesIfNeeded()Z
 HSPLandroid/view/ViewGroup;->resolveTextAlignment()Z
 HSPLandroid/view/ViewGroup;->resolveTextDirection()Z
-HSPLandroid/view/ViewGroup;->restoreDefaultFocus()Z
 HSPLandroid/view/ViewGroup;->setAlwaysDrawnWithCacheEnabled(Z)V
+HSPLandroid/view/ViewGroup;->setBooleanFlag(IZ)V
 HSPLandroid/view/ViewGroup;->setChildrenDrawingCacheEnabled(Z)V
 HSPLandroid/view/ViewGroup;->setChildrenDrawingOrderEnabled(Z)V
 HSPLandroid/view/ViewGroup;->setClipChildren(Z)V
 HSPLandroid/view/ViewGroup;->setClipToPadding(Z)V
 HSPLandroid/view/ViewGroup;->setDescendantFocusability(I)V
-HSPLandroid/view/ViewGroup;->setLayoutAnimation(Landroid/view/animation/LayoutAnimationController;)V
 HSPLandroid/view/ViewGroup;->setLayoutTransition(Landroid/animation/LayoutTransition;)V
 HSPLandroid/view/ViewGroup;->setMotionEventSplittingEnabled(Z)V
 HSPLandroid/view/ViewGroup;->setOnHierarchyChangeListener(Landroid/view/ViewGroup$OnHierarchyChangeListener;)V
 HSPLandroid/view/ViewGroup;->setTouchscreenBlocksFocus(Z)V
 HSPLandroid/view/ViewGroup;->shouldBlockFocusForTouchscreen()Z
 HSPLandroid/view/ViewGroup;->shouldDelayChildPressedState()Z
-HSPLandroid/view/ViewGroup;->startViewTransition(Landroid/view/View;)V
+HSPLandroid/view/ViewGroup;->touchAccessibilityNodeProviderIfNeeded(Landroid/view/View;)V
 HSPLandroid/view/ViewGroup;->transformPointToViewLocal([FLandroid/view/View;)V
-HSPLandroid/view/ViewGroup;->unFocus(Landroid/view/View;)V
-HSPLandroid/view/ViewGroup;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/view/ViewOutlineProvider$1;-><init>()V
 HSPLandroid/view/ViewOutlineProvider$1;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V
-HSPLandroid/view/ViewOutlineProvider$2;-><init>()V
-HSPLandroid/view/ViewOutlineProvider$2;->getOutline(Landroid/view/View;Landroid/graphics/Outline;)V
-HSPLandroid/view/ViewOutlineProvider$3;-><init>()V
 HSPLandroid/view/ViewOutlineProvider;-><init>()V
+HSPLandroid/view/ViewPropertyAnimator$1;-><init>(Landroid/view/ViewPropertyAnimator;)V
 HSPLandroid/view/ViewPropertyAnimator$1;->run()V
+HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;-><init>(Landroid/view/ViewPropertyAnimator;)V
+HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;-><init>(Landroid/view/ViewPropertyAnimator;Landroid/view/ViewPropertyAnimator$1;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationCancel(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationEnd(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationStart(Landroid/animation/Animator;)V
 HSPLandroid/view/ViewPropertyAnimator$AnimatorEventListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
-HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;->cancel(I)Z
+HSPLandroid/view/ViewPropertyAnimator$NameValuesHolder;-><init>(IFF)V
+HSPLandroid/view/ViewPropertyAnimator$PropertyBundle;-><init>(ILjava/util/ArrayList;)V
 HSPLandroid/view/ViewPropertyAnimator;-><init>(Landroid/view/View;)V
+HSPLandroid/view/ViewPropertyAnimator;->access$100(Landroid/view/ViewPropertyAnimator;)V
+HSPLandroid/view/ViewPropertyAnimator;->access$200(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap;
+HSPLandroid/view/ViewPropertyAnimator;->access$300(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap;
+HSPLandroid/view/ViewPropertyAnimator;->access$400(Landroid/view/ViewPropertyAnimator;)Landroid/animation/Animator$AnimatorListener;
+HSPLandroid/view/ViewPropertyAnimator;->access$500(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap;
+HSPLandroid/view/ViewPropertyAnimator;->access$600(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap;
+HSPLandroid/view/ViewPropertyAnimator;->access$700(Landroid/view/ViewPropertyAnimator;)Ljava/util/HashMap;
+HSPLandroid/view/ViewPropertyAnimator;->access$800(Landroid/view/ViewPropertyAnimator;IF)V
+HSPLandroid/view/ViewPropertyAnimator;->access$900(Landroid/view/ViewPropertyAnimator;)Landroid/animation/ValueAnimator$AnimatorUpdateListener;
 HSPLandroid/view/ViewPropertyAnimator;->alpha(F)Landroid/view/ViewPropertyAnimator;
+HSPLandroid/view/ViewPropertyAnimator;->animateProperty(IF)V
 HSPLandroid/view/ViewPropertyAnimator;->animatePropertyBy(IFF)V
 HSPLandroid/view/ViewPropertyAnimator;->cancel()V
 HSPLandroid/view/ViewPropertyAnimator;->getValue(I)F
 HSPLandroid/view/ViewPropertyAnimator;->setDuration(J)Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/ViewPropertyAnimator;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/ViewPropertyAnimator;->setListener(Landroid/animation/Animator$AnimatorListener;)Landroid/view/ViewPropertyAnimator;
-HSPLandroid/view/ViewPropertyAnimator;->setStartDelay(J)Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/ViewPropertyAnimator;->setValue(IF)V
 HSPLandroid/view/ViewPropertyAnimator;->start()V
 HSPLandroid/view/ViewPropertyAnimator;->startAnimation()V
-HSPLandroid/view/ViewPropertyAnimator;->translationX(F)Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/ViewPropertyAnimator;->translationY(F)Landroid/view/ViewPropertyAnimator;
 HSPLandroid/view/ViewPropertyAnimator;->withEndAction(Ljava/lang/Runnable;)Landroid/view/ViewPropertyAnimator;
+HSPLandroid/view/ViewRootImpl$1;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$1;->onDisplayChanged(I)V
+HSPLandroid/view/ViewRootImpl$1;->toViewScreenState(I)I
+HSPLandroid/view/ViewRootImpl$4;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$4;->run()V
-HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureConnection()V
+HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;->ensureNoConnection()V
+HSPLandroid/view/ViewRootImpl$AsyncInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$AsyncInputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V
 HSPLandroid/view/ViewRootImpl$AsyncInputStage;->defer(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$AsyncInputStage;->dequeue(Landroid/view/ViewRootImpl$QueuedInputEvent;Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$AsyncInputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
+HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;->run()V
+HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processMotionEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$EarlyPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$HighContrastTextManager;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$ImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;->onFinishedInputEvent(Ljava/lang/Object;Z)V
 HSPLandroid/view/ViewRootImpl$ImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$InputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$InputStage;->apply(Landroid/view/ViewRootImpl$QueuedInputEvent;I)V
+HSPLandroid/view/ViewRootImpl$InputStage;->deliver(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$InputStage;->finish(Landroid/view/ViewRootImpl$QueuedInputEvent;Z)V
 HSPLandroid/view/ViewRootImpl$InputStage;->forward(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$InputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$InputStage;->onDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl$InputStage;->onWindowFocusChanged(Z)V
 HSPLandroid/view/ViewRootImpl$InputStage;->shouldDropInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)Z
+HSPLandroid/view/ViewRootImpl$InputStage;->traceEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;J)V
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->addView(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->postIfNeededLocked()V
 HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->removeView(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl$InvalidateOnAnimationRunnable;->run()V
+HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$NativePostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$NativePreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$QueuedInputEvent;-><init>()V
+HSPLandroid/view/ViewRootImpl$QueuedInputEvent;-><init>(Landroid/view/ViewRootImpl$1;)V
+HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->shouldSendToSynthesizer()Z
 HSPLandroid/view/ViewRootImpl$QueuedInputEvent;->shouldSkipIme()Z
-HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->removeCallbacksAndRun()V
-HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->run()V
-HSPLandroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;->runOrPost(Landroid/view/View;I)V
 HSPLandroid/view/ViewRootImpl$SyntheticInputStage;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onDetachedFromWindow()V
 HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$SyntheticInputStage;->onWindowFocusChanged(Z)V
 HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;-><init>(Landroid/view/ViewRootImpl$SyntheticJoystickHandler;)V
+HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;->resetState()V
+HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler;->access$2600(Landroid/view/ViewRootImpl$SyntheticJoystickHandler;)V
 HSPLandroid/view/ViewRootImpl$SyntheticJoystickHandler;->cancel()V
+HSPLandroid/view/ViewRootImpl$SyntheticKeyboardHandler;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$SyntheticTouchNavigationHandler$1;-><init>(Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;)V
+HSPLandroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$SyntheticTrackballHandler;-><init>(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl$SystemUiVisibilityInfo;-><init>()V
+HSPLandroid/view/ViewRootImpl$TrackballAxis;-><init>()V
+HSPLandroid/view/ViewRootImpl$TraversalRunnable;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$TraversalRunnable;->run()V
+HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;-><init>()V
+HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;-><init>(Landroid/view/ViewRootImpl$1;)V
 HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->dispatch(Landroid/view/View;Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->preDispatch(Landroid/view/KeyEvent;)V
 HSPLandroid/view/ViewRootImpl$UnhandledKeyManager;->preViewDispatch(Landroid/view/KeyEvent;)Z
+HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->maybeUpdatePointerIcon(Landroid/view/MotionEvent;)V
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onDeliverToNext(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
 HSPLandroid/view/ViewRootImpl$ViewPostImeInputStage;->processPointerEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;-><init>(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$InputStage;)V
 HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->onProcess(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$ViewPreImeInputStage;->processKeyEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)I
+HSPLandroid/view/ViewRootImpl$ViewRootHandler;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$ViewRootHandler;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/view/ViewRootImpl$ViewRootHandler;->sendMessageAtTime(Landroid/os/Message;J)Z
+HSPLandroid/view/ViewRootImpl$W;-><init>(Landroid/view/ViewRootImpl;)V
 HSPLandroid/view/ViewRootImpl$W;->closeSystemDialogs(Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl$W;->dispatchAppVisibility(Z)V
-HSPLandroid/view/ViewRootImpl$W;->dispatchSystemUiVisibilityChanged(IIII)V
-HSPLandroid/view/ViewRootImpl$W;->dispatchWindowShown()V
 HSPLandroid/view/ViewRootImpl$W;->insetsChanged(Landroid/view/InsetsState;)V
-HSPLandroid/view/ViewRootImpl$W;->moved(II)V
-HSPLandroid/view/ViewRootImpl$W;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
+HSPLandroid/view/ViewRootImpl$W;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
 HSPLandroid/view/ViewRootImpl$W;->windowFocusChanged(ZZ)V
+HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;-><init>(Landroid/view/ViewRootImpl;Landroid/view/InputChannel;Landroid/os/Looper;)V
+HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->dispose()V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onBatchedInputEventPending()V
+HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onFocusEvent(ZZ)V
 HSPLandroid/view/ViewRootImpl$WindowInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
 HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;)V
-HSPLandroid/view/ViewRootImpl;->access$1000(Landroid/view/ViewRootImpl;Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewRootImpl;-><init>(Landroid/content/Context;Landroid/view/Display;Landroid/view/IWindowSession;)V
+HSPLandroid/view/ViewRootImpl;->access$1100(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl;->access$1600(Landroid/view/ViewRootImpl;Landroid/view/ViewRootImpl$QueuedInputEvent;)V
+HSPLandroid/view/ViewRootImpl;->access$1900(Landroid/view/ViewRootImpl;)Landroid/view/ImeFocusController;
+HSPLandroid/view/ViewRootImpl;->access$2000(Landroid/view/ViewRootImpl;Landroid/view/KeyEvent;)Z
+HSPLandroid/view/ViewRootImpl;->access$2100(Landroid/view/ViewRootImpl;)Landroid/view/autofill/AutofillManager;
+HSPLandroid/view/ViewRootImpl;->access$2200(Landroid/view/ViewRootImpl;)Landroid/view/ViewRootImpl$UnhandledKeyManager;
+HSPLandroid/view/ViewRootImpl;->access$2300(Landroid/view/ViewRootImpl;Landroid/view/MotionEvent;)V
+HSPLandroid/view/ViewRootImpl;->access$300(Landroid/view/ViewRootImpl;)Landroid/util/MergedConfiguration;
+HSPLandroid/view/ViewRootImpl;->access$3502(Landroid/view/ViewRootImpl;Z)Z
+HSPLandroid/view/ViewRootImpl;->access$3600(Landroid/view/ViewRootImpl;Z)V
+HSPLandroid/view/ViewRootImpl;->access$3800(Landroid/view/ViewRootImpl;)Landroid/view/InputEventCompatProcessor;
+HSPLandroid/view/ViewRootImpl;->access$4000(Landroid/view/ViewRootImpl;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
+HSPLandroid/view/ViewRootImpl;->access$4100(Landroid/view/ViewRootImpl;Landroid/view/InsetsState;)V
 HSPLandroid/view/ViewRootImpl;->access$600(Landroid/view/ViewRootImpl;Landroid/graphics/Rect;)V
+HSPLandroid/view/ViewRootImpl;->access$700(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/ViewRootImpl;->access$800(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->access$900(Landroid/view/ViewRootImpl;)Landroid/view/InsetsController;
 HSPLandroid/view/ViewRootImpl;->addConfigCallback(Landroid/view/ViewRootImpl$ConfigChangedCallback;)V
 HSPLandroid/view/ViewRootImpl;->addWindowCallbacks(Landroid/view/WindowCallbacks;)V
+HSPLandroid/view/ViewRootImpl;->adjustLayoutParamsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V
+HSPLandroid/view/ViewRootImpl;->applyKeepScreenOnFlag(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ViewRootImpl;->canResolveTextDirection()Z
+HSPLandroid/view/ViewRootImpl;->cancelInvalidate(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->checkForLeavingTouchModeAndConsume(Landroid/view/KeyEvent;)Z
+HSPLandroid/view/ViewRootImpl;->checkThread()V
 HSPLandroid/view/ViewRootImpl;->childDrawableStateChanged(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->childHasTransientStateChanged(Landroid/view/View;Z)V
 HSPLandroid/view/ViewRootImpl;->clearChildFocus(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->collectViewAttributes()Z
+HSPLandroid/view/ViewRootImpl;->controlInsetsForCompatibility(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ViewRootImpl;->deliverInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
+HSPLandroid/view/ViewRootImpl;->destroyHardwareRenderer()V
 HSPLandroid/view/ViewRootImpl;->destroyHardwareResources()V
+HSPLandroid/view/ViewRootImpl;->destroySurface()V
 HSPLandroid/view/ViewRootImpl;->die(Z)Z
 HSPLandroid/view/ViewRootImpl;->dipToPx(I)I
+HSPLandroid/view/ViewRootImpl;->dispatchAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl;->dispatchApplyInsets(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->dispatchCheckFocus()V
+HSPLandroid/view/ViewRootImpl;->dispatchCloseSystemDialogs(Ljava/lang/String;)V
 HSPLandroid/view/ViewRootImpl;->dispatchDetachedFromWindow()V
-HSPLandroid/view/ViewRootImpl;->dispatchMoved(II)V
-HSPLandroid/view/ViewRootImpl;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
+HSPLandroid/view/ViewRootImpl;->dispatchInsetsChanged(Landroid/view/InsetsState;)V
+HSPLandroid/view/ViewRootImpl;->dispatchInvalidateDelayed(Landroid/view/View;J)V
+HSPLandroid/view/ViewRootImpl;->dispatchInvalidateOnAnimation(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
+HSPLandroid/view/ViewRootImpl;->dispatchUnhandledKeyEvent(Landroid/view/KeyEvent;)Z
+HSPLandroid/view/ViewRootImpl;->doConsumeBatchedInput(J)V
 HSPLandroid/view/ViewRootImpl;->doDie()V
 HSPLandroid/view/ViewRootImpl;->doProcessInputEvents()V
 HSPLandroid/view/ViewRootImpl;->doTraversal()V
 HSPLandroid/view/ViewRootImpl;->draw(Z)Z
 HSPLandroid/view/ViewRootImpl;->drawAccessibilityFocusedDrawableIfNeeded(Landroid/graphics/Canvas;)V
-HSPLandroid/view/ViewRootImpl;->drawSoftware(Landroid/view/Surface;Landroid/view/View$AttachInfo;IIZLandroid/graphics/Rect;Landroid/graphics/Rect;)Z
+HSPLandroid/view/ViewRootImpl;->drawPending()V
 HSPLandroid/view/ViewRootImpl;->enableHardwareAcceleration(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/ViewRootImpl;->endDragResizing()V
 HSPLandroid/view/ViewRootImpl;->enqueueInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;IZ)V
@@ -17633,196 +13210,272 @@
 HSPLandroid/view/ViewRootImpl;->ensureTouchMode(Z)Z
 HSPLandroid/view/ViewRootImpl;->ensureTouchModeLocally(Z)Z
 HSPLandroid/view/ViewRootImpl;->enterTouchMode()Z
+HSPLandroid/view/ViewRootImpl;->finishBLASTSync()V
 HSPLandroid/view/ViewRootImpl;->finishInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl;->fireAccessibilityFocusEventIfHasFocusedNode()V
 HSPLandroid/view/ViewRootImpl;->focusableViewAvailable(Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->forceLayout(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->getAccessibilityFocusedHost()Landroid/view/View;
 HSPLandroid/view/ViewRootImpl;->getAccessibilityFocusedRect(Landroid/graphics/Rect;)Z
 HSPLandroid/view/ViewRootImpl;->getAudioManager()Landroid/media/AudioManager;
 HSPLandroid/view/ViewRootImpl;->getAutofillManager()Landroid/view/autofill/AutofillManager;
 HSPLandroid/view/ViewRootImpl;->getChildVisibleRect(Landroid/view/View;Landroid/graphics/Rect;Landroid/graphics/Point;)Z
-HSPLandroid/view/ViewRootImpl;->getCommonPredecessor(Landroid/view/View;Landroid/view/View;)Landroid/view/View;
 HSPLandroid/view/ViewRootImpl;->getDisplayId()I
 HSPLandroid/view/ViewRootImpl;->getHostVisibility()I
+HSPLandroid/view/ViewRootImpl;->getImeFocusController()Landroid/view/ImeFocusController;
+HSPLandroid/view/ViewRootImpl;->getImpliedSystemUiVisibility(Landroid/view/WindowManager$LayoutParams;)I
+HSPLandroid/view/ViewRootImpl;->getInsetsController()Landroid/view/InsetsController;
+HSPLandroid/view/ViewRootImpl;->getNightMode()I
 HSPLandroid/view/ViewRootImpl;->getParent()Landroid/view/ViewParent;
 HSPLandroid/view/ViewRootImpl;->getRootMeasureSpec(II)I
 HSPLandroid/view/ViewRootImpl;->getRunQueue()Landroid/view/HandlerActionQueue;
 HSPLandroid/view/ViewRootImpl;->getTextDirection()I
-HSPLandroid/view/ViewRootImpl;->getTitle()Ljava/lang/CharSequence;
 HSPLandroid/view/ViewRootImpl;->getValidLayoutRequesters(Ljava/util/ArrayList;Z)Ljava/util/ArrayList;
-HSPLandroid/view/ViewRootImpl;->getWindowFlags()I
+HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View;
 HSPLandroid/view/ViewRootImpl;->getWindowInsets(Z)Landroid/view/WindowInsets;
+HSPLandroid/view/ViewRootImpl;->handleAppVisibility(Z)V
 HSPLandroid/view/ViewRootImpl;->handleContentCaptureFlush()V
-HSPLandroid/view/ViewRootImpl;->handleDispatchSystemUiVisibilityChanged(Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;)V
-HSPLandroid/view/ViewRootImpl;->handleDispatchWindowShown()V
-HSPLandroid/view/ViewRootImpl;->handleWindowContentChangedEvent(Landroid/view/accessibility/AccessibilityEvent;)V
 HSPLandroid/view/ViewRootImpl;->handleWindowFocusChanged()V
 HSPLandroid/view/ViewRootImpl;->hasColorModeChanged(I)Z
+HSPLandroid/view/ViewRootImpl;->invalidate()V
 HSPLandroid/view/ViewRootImpl;->invalidateChild(Landroid/view/View;Landroid/graphics/Rect;)V
 HSPLandroid/view/ViewRootImpl;->invalidateChildInParent([ILandroid/graphics/Rect;)Landroid/view/ViewParent;
 HSPLandroid/view/ViewRootImpl;->invalidateRectOnScreen(Landroid/graphics/Rect;)V
 HSPLandroid/view/ViewRootImpl;->isContentCaptureEnabled()Z
-HSPLandroid/view/ViewRootImpl;->isInLocalFocusMode()Z
+HSPLandroid/view/ViewRootImpl;->isContentCaptureReallyEnabled()Z
+HSPLandroid/view/ViewRootImpl;->isInLayout()Z
 HSPLandroid/view/ViewRootImpl;->isInTouchMode()Z
 HSPLandroid/view/ViewRootImpl;->isLayoutRequested()Z
 HSPLandroid/view/ViewRootImpl;->isNavigationKey(Landroid/view/KeyEvent;)Z
 HSPLandroid/view/ViewRootImpl;->isTextDirectionResolved()Z
+HSPLandroid/view/ViewRootImpl;->isTypingKey(Landroid/view/KeyEvent;)Z
+HSPLandroid/view/ViewRootImpl;->lambda$performDraw$1$ViewRootImpl(Ljava/util/ArrayList;)V
+HSPLandroid/view/ViewRootImpl;->lambda$performDraw$1$ViewRootImpl(ZLjava/util/ArrayList;)V
+HSPLandroid/view/ViewRootImpl;->lambda$performDraw$2$ViewRootImpl(Landroid/os/Handler;Ljava/util/ArrayList;J)V
+HSPLandroid/view/ViewRootImpl;->lambda$performDraw$2$ViewRootImpl(Landroid/os/Handler;ZLjava/util/ArrayList;J)V
+HSPLandroid/view/ViewRootImpl;->loadSystemProperties()V
 HSPLandroid/view/ViewRootImpl;->maybeHandleWindowMove(Landroid/graphics/Rect;)V
 HSPLandroid/view/ViewRootImpl;->maybeUpdateTooltip(Landroid/view/MotionEvent;)V
 HSPLandroid/view/ViewRootImpl;->measureHierarchy(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/content/res/Resources;II)Z
-HSPLandroid/view/ViewRootImpl;->notifySubtreeAccessibilityStateChanged(Landroid/view/View;Landroid/view/View;I)V
+HSPLandroid/view/ViewRootImpl;->notifyInsetsChanged()V
+HSPLandroid/view/ViewRootImpl;->notifyRendererOfFramePending()V
+HSPLandroid/view/ViewRootImpl;->notifySurfaceCreated()V
+HSPLandroid/view/ViewRootImpl;->notifySurfaceDestroyed()V
+HSPLandroid/view/ViewRootImpl;->obtainQueuedInputEvent(Landroid/view/InputEvent;Landroid/view/InputEventReceiver;I)Landroid/view/ViewRootImpl$QueuedInputEvent;
 HSPLandroid/view/ViewRootImpl;->onDescendantInvalidated(Landroid/view/View;Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->onPostDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/view/ViewRootImpl;->onPreDraw(Landroid/graphics/RecordingCanvas;)V
 HSPLandroid/view/ViewRootImpl;->onStartNestedScroll(Landroid/view/View;Landroid/view/View;I)Z
+HSPLandroid/view/ViewRootImpl;->pendingDrawFinished()V
 HSPLandroid/view/ViewRootImpl;->performConfigurationChange(Landroid/util/MergedConfiguration;ZI)V
 HSPLandroid/view/ViewRootImpl;->performContentCaptureInitialReport()V
 HSPLandroid/view/ViewRootImpl;->performDraw()V
-HSPLandroid/view/ViewRootImpl;->performHapticFeedback(IZ)Z
 HSPLandroid/view/ViewRootImpl;->performLayout(Landroid/view/WindowManager$LayoutParams;II)V
 HSPLandroid/view/ViewRootImpl;->performMeasure(II)V
 HSPLandroid/view/ViewRootImpl;->performTraversals()V
 HSPLandroid/view/ViewRootImpl;->playSoundEffect(I)V
 HSPLandroid/view/ViewRootImpl;->pokeDrawLockIfNeeded()V
 HSPLandroid/view/ViewRootImpl;->profileRendering(Z)V
-HSPLandroid/view/ViewRootImpl;->recomputeViewAttributes(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->recycleQueuedInputEvent(Landroid/view/ViewRootImpl$QueuedInputEvent;)V
 HSPLandroid/view/ViewRootImpl;->registerAnimatingRenderNode(Landroid/graphics/RenderNode;)V
+HSPLandroid/view/ViewRootImpl;->registerVectorDrawableAnimator(Landroid/view/NativeVectorDrawableAnimator;)V
 HSPLandroid/view/ViewRootImpl;->relayoutWindow(Landroid/view/WindowManager$LayoutParams;IZ)I
+HSPLandroid/view/ViewRootImpl;->removeSendWindowContentChangedCallback()V
 HSPLandroid/view/ViewRootImpl;->removeWindowCallbacks(Landroid/view/WindowCallbacks;)V
 HSPLandroid/view/ViewRootImpl;->reportDrawFinished()V
 HSPLandroid/view/ViewRootImpl;->reportNextDraw()V
 HSPLandroid/view/ViewRootImpl;->requestChildFocus(Landroid/view/View;Landroid/view/View;)V
-HSPLandroid/view/ViewRootImpl;->requestChildRectangleOnScreen(Landroid/view/View;Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/ViewRootImpl;->requestDisallowInterceptTouchEvent(Z)V
 HSPLandroid/view/ViewRootImpl;->requestFitSystemWindows()V
 HSPLandroid/view/ViewRootImpl;->requestLayout()V
-HSPLandroid/view/ViewRootImpl;->requestSendAccessibilityEvent(Landroid/view/View;Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLandroid/view/ViewRootImpl;->requestTransparentRegion(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->requestLayoutDuringLayout(Landroid/view/View;)Z
+HSPLandroid/view/ViewRootImpl;->scheduleConsumeBatchedInput()V
 HSPLandroid/view/ViewRootImpl;->scheduleTraversals()V
 HSPLandroid/view/ViewRootImpl;->scrollToRectOrFocus(Landroid/graphics/Rect;Z)Z
 HSPLandroid/view/ViewRootImpl;->setAccessibilityFocus(Landroid/view/View;Landroid/view/accessibility/AccessibilityNodeInfo;)V
+HSPLandroid/view/ViewRootImpl;->setActivityConfigCallback(Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
+HSPLandroid/view/ViewRootImpl;->setFrame(Landroid/graphics/Rect;)V
 HSPLandroid/view/ViewRootImpl;->setLayoutParams(Landroid/view/WindowManager$LayoutParams;Z)V
+HSPLandroid/view/ViewRootImpl;->setOnContentApplyWindowInsetsListener(Landroid/view/Window$OnContentApplyWindowInsetsListener;)V
 HSPLandroid/view/ViewRootImpl;->setTag()V
 HSPLandroid/view/ViewRootImpl;->setView(Landroid/view/View;Landroid/view/WindowManager$LayoutParams;Landroid/view/View;)V
 HSPLandroid/view/ViewRootImpl;->setWindowStopped(Z)V
 HSPLandroid/view/ViewRootImpl;->shouldUseDisplaySize(Landroid/view/WindowManager$LayoutParams;)Z
-HSPLandroid/view/ViewRootImpl;->updateBoundsSurface()V
+HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V
+HSPLandroid/view/ViewRootImpl;->unscheduleConsumeBatchedInput()V
+HSPLandroid/view/ViewRootImpl;->unscheduleTraversals()V
+HSPLandroid/view/ViewRootImpl;->updateBoundsLayer()V
 HSPLandroid/view/ViewRootImpl;->updateConfiguration(I)V
 HSPLandroid/view/ViewRootImpl;->updateContentDrawBounds()Z
 HSPLandroid/view/ViewRootImpl;->updateForceDarkMode()V
 HSPLandroid/view/ViewRootImpl;->updateInternalDisplay(ILandroid/content/res/Resources;)V
+HSPLandroid/view/ViewRootImpl;->updateSystemGestureExclusionRectsForView(Landroid/view/View;)V
+HSPLandroid/view/ViewRootImpl;->updateVisibleInsets()V
 HSPLandroid/view/ViewRootImpl;->windowFocusChanged(ZZ)V
 HSPLandroid/view/ViewStub;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/view/ViewStub;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/view/ViewStub;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/view/ViewStub;->inflate()Landroid/view/View;
+HSPLandroid/view/ViewStub;->inflateViewNoAdd(Landroid/view/ViewGroup;)Landroid/view/View;
+HSPLandroid/view/ViewStub;->replaceSelfWithView(Landroid/view/View;Landroid/view/ViewGroup;)V
+HSPLandroid/view/ViewStub;->setLayoutInflater(Landroid/view/LayoutInflater;)V
 HSPLandroid/view/ViewStub;->setVisibility(I)V
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;-><init>()V
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->access$000(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;)Ljava/util/ArrayList;
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->access$002(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->access$102(Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;I)I
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->get(I)Ljava/lang/Object;
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray$Access;->size()I
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;-><init>()V
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->add(Ljava/lang/Object;)V
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->addAll(Landroid/view/ViewTreeObserver$CopyOnWriteArray;)V
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->end()V
+HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->getArray()Ljava/util/ArrayList;
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->remove(Ljava/lang/Object;)V
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->size()I
 HSPLandroid/view/ViewTreeObserver$CopyOnWriteArray;->start()Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;
-HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->isEmpty()Z
-HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->reset()V
-HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;->set(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
-HSPLandroid/view/ViewTreeObserver;->addOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V
+HSPLandroid/view/ViewTreeObserver$InternalInsetsInfo;-><init>()V
+HSPLandroid/view/ViewTreeObserver;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/ViewTreeObserver;->addOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V
 HSPLandroid/view/ViewTreeObserver;->addOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V
 HSPLandroid/view/ViewTreeObserver;->addOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V
 HSPLandroid/view/ViewTreeObserver;->addOnScrollChangedListener(Landroid/view/ViewTreeObserver$OnScrollChangedListener;)V
+HSPLandroid/view/ViewTreeObserver;->addOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V
+HSPLandroid/view/ViewTreeObserver;->captureFrameCommitCallbacks()Ljava/util/ArrayList;
 HSPLandroid/view/ViewTreeObserver;->checkIsAlive()V
-HSPLandroid/view/ViewTreeObserver;->dispatchOnComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
+HSPLandroid/view/ViewTreeObserver;->dispatchOnDraw()V
 HSPLandroid/view/ViewTreeObserver;->dispatchOnEnterAnimationComplete()V
+HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalFocusChange(Landroid/view/View;Landroid/view/View;)V
 HSPLandroid/view/ViewTreeObserver;->dispatchOnGlobalLayout()V
 HSPLandroid/view/ViewTreeObserver;->dispatchOnPreDraw()Z
 HSPLandroid/view/ViewTreeObserver;->dispatchOnScrollChanged()V
+HSPLandroid/view/ViewTreeObserver;->dispatchOnSystemGestureExclusionRectsChanged(Ljava/util/List;)V
+HSPLandroid/view/ViewTreeObserver;->dispatchOnTouchModeChanged(Z)V
 HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowAttachedChange(Z)V
-HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowShown()V
+HSPLandroid/view/ViewTreeObserver;->dispatchOnWindowFocusChange(Z)V
 HSPLandroid/view/ViewTreeObserver;->hasComputeInternalInsetsListeners()Z
 HSPLandroid/view/ViewTreeObserver;->isAlive()Z
+HSPLandroid/view/ViewTreeObserver;->kill()V
 HSPLandroid/view/ViewTreeObserver;->merge(Landroid/view/ViewTreeObserver;)V
-HSPLandroid/view/ViewTreeObserver;->removeGlobalOnLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V
-HSPLandroid/view/ViewTreeObserver;->removeOnComputeInternalInsetsListener(Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;)V
 HSPLandroid/view/ViewTreeObserver;->removeOnDrawListener(Landroid/view/ViewTreeObserver$OnDrawListener;)V
 HSPLandroid/view/ViewTreeObserver;->removeOnGlobalLayoutListener(Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;)V
 HSPLandroid/view/ViewTreeObserver;->removeOnPreDrawListener(Landroid/view/ViewTreeObserver$OnPreDrawListener;)V
+HSPLandroid/view/ViewTreeObserver;->removeOnTouchModeChangeListener(Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;)V
 HSPLandroid/view/Window;-><init>(Landroid/content/Context;)V
 HSPLandroid/view/Window;->addFlags(I)V
 HSPLandroid/view/Window;->adjustLayoutParamsForSubWindow(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/Window;->clearFlags(I)V
+HSPLandroid/view/Window;->destroy()V
+HSPLandroid/view/Window;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/Window;->findViewById(I)Landroid/view/View;
 HSPLandroid/view/Window;->getAttributes()Landroid/view/WindowManager$LayoutParams;
 HSPLandroid/view/Window;->getCallback()Landroid/view/Window$Callback;
+HSPLandroid/view/Window;->getContainer()Landroid/view/Window;
+HSPLandroid/view/Window;->getContext()Landroid/content/Context;
+HSPLandroid/view/Window;->getDefaultFeatures(Landroid/content/Context;)I
+HSPLandroid/view/Window;->getFeatures()I
+HSPLandroid/view/Window;->getForcedWindowFlags()I
+HSPLandroid/view/Window;->getLocalFeatures()I
+HSPLandroid/view/Window;->getWindowControllerCallback()Landroid/view/Window$WindowControllerCallback;
 HSPLandroid/view/Window;->getWindowManager()Landroid/view/WindowManager;
 HSPLandroid/view/Window;->getWindowStyle()Landroid/content/res/TypedArray;
 HSPLandroid/view/Window;->hasFeature(I)Z
+HSPLandroid/view/Window;->hasSoftInputMode()Z
 HSPLandroid/view/Window;->haveDimAmount()Z
-HSPLandroid/view/Window;->isOutOfBounds(Landroid/content/Context;Landroid/view/MotionEvent;)Z
+HSPLandroid/view/Window;->isActive()Z
+HSPLandroid/view/Window;->isDestroyed()Z
 HSPLandroid/view/Window;->makeActive()V
+HSPLandroid/view/Window;->requestFeature(I)Z
+HSPLandroid/view/Window;->setAttributes(Landroid/view/WindowManager$LayoutParams;)V
 HSPLandroid/view/Window;->setCallback(Landroid/view/Window$Callback;)V
 HSPLandroid/view/Window;->setCloseOnTouchOutside(Z)V
 HSPLandroid/view/Window;->setCloseOnTouchOutsideIfNotSet(Z)V
 HSPLandroid/view/Window;->setColorMode(I)V
+HSPLandroid/view/Window;->setDefaultWindowFormat(I)V
 HSPLandroid/view/Window;->setFlags(II)V
 HSPLandroid/view/Window;->setGravity(I)V
 HSPLandroid/view/Window;->setLayout(II)V
-HSPLandroid/view/Window;->setNeedsMenuKey(I)V
+HSPLandroid/view/Window;->setOnWindowDismissedCallback(Landroid/view/Window$OnWindowDismissedCallback;)V
+HSPLandroid/view/Window;->setOnWindowSwipeDismissedCallback(Landroid/view/Window$OnWindowSwipeDismissedCallback;)V
+HSPLandroid/view/Window;->setPreferMinimalPostProcessing(Z)V
 HSPLandroid/view/Window;->setSoftInputMode(I)V
-HSPLandroid/view/Window;->setType(I)V
-HSPLandroid/view/Window;->setWindowAnimations(I)V
+HSPLandroid/view/Window;->setWindowControllerCallback(Landroid/view/Window$WindowControllerCallback;)V
 HSPLandroid/view/Window;->setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;)V
 HSPLandroid/view/Window;->setWindowManager(Landroid/view/WindowManager;Landroid/os/IBinder;Ljava/lang/String;Z)V
 HSPLandroid/view/Window;->shouldCloseOnTouch(Landroid/content/Context;Landroid/view/MotionEvent;)Z
-HSPLandroid/view/WindowAnimationFrameStats$1;-><init>()V
-HSPLandroid/view/WindowContentFrameStats$1;-><init>()V
 HSPLandroid/view/WindowInsets$Builder;-><init>(Landroid/view/WindowInsets;)V
 HSPLandroid/view/WindowInsets$Builder;->build()Landroid/view/WindowInsets;
+HSPLandroid/view/WindowInsets$Builder;->setSystemWindowInsets(Landroid/graphics/Insets;)Landroid/view/WindowInsets$Builder;
+HSPLandroid/view/WindowInsets$Side;->all()I
+HSPLandroid/view/WindowInsets$Type;->ime()I
 HSPLandroid/view/WindowInsets$Type;->indexOf(I)I
-HSPLandroid/view/WindowInsets;-><init>(Landroid/graphics/Rect;Landroid/graphics/Rect;ZZLandroid/view/DisplayCutout;)V
-HSPLandroid/view/WindowInsets;-><init>([Landroid/graphics/Insets;[Landroid/graphics/Insets;[ZZZLandroid/view/DisplayCutout;)V
+HSPLandroid/view/WindowInsets$Type;->navigationBars()I
+HSPLandroid/view/WindowInsets$Type;->systemBars()I
+HSPLandroid/view/WindowInsets;-><init>(Landroid/graphics/Rect;)V
+HSPLandroid/view/WindowInsets;-><init>([Landroid/graphics/Insets;[Landroid/graphics/Insets;[ZZZLandroid/view/DisplayCutout;I)V
+HSPLandroid/view/WindowInsets;-><init>([Landroid/graphics/Insets;[Landroid/graphics/Insets;[ZZZLandroid/view/DisplayCutout;IZ)V
+HSPLandroid/view/WindowInsets;->access$000(Landroid/view/WindowInsets;)[Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->access$100(Landroid/view/WindowInsets;)[Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->access$200(Landroid/view/WindowInsets;)[Z
+HSPLandroid/view/WindowInsets;->access$300(Landroid/view/WindowInsets;)Z
+HSPLandroid/view/WindowInsets;->access$400(Landroid/view/WindowInsets;)Z
+HSPLandroid/view/WindowInsets;->access$500(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout;
+HSPLandroid/view/WindowInsets;->access$600(Landroid/view/WindowInsets;)Z
+HSPLandroid/view/WindowInsets;->access$700(Landroid/view/WindowInsets;)Z
+HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V
 HSPLandroid/view/WindowInsets;->consumeDisplayCutout()Landroid/view/WindowInsets;
+HSPLandroid/view/WindowInsets;->consumeSystemWindowInsets()Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->createCompatTypeMap(Landroid/graphics/Rect;)[Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->displayCutoutCopyConstructorArgument(Landroid/view/WindowInsets;)Landroid/view/DisplayCutout;
 HSPLandroid/view/WindowInsets;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/WindowInsets;->getDisplayCutout()Landroid/view/DisplayCutout;
+HSPLandroid/view/WindowInsets;->getInsets(I)Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->getInsets([Landroid/graphics/Insets;I)Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->getStableInsetBottom()I
 HSPLandroid/view/WindowInsets;->getStableInsetLeft()I
 HSPLandroid/view/WindowInsets;->getStableInsetRight()I
+HSPLandroid/view/WindowInsets;->getStableInsetTop()I
+HSPLandroid/view/WindowInsets;->getStableInsets()Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetBottom()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetLeft()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetRight()I
 HSPLandroid/view/WindowInsets;->getSystemWindowInsetTop()I
+HSPLandroid/view/WindowInsets;->getSystemWindowInsets()Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->getSystemWindowInsetsAsRect()Landroid/graphics/Rect;
 HSPLandroid/view/WindowInsets;->inset(IIII)Landroid/view/WindowInsets;
+HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Insets;)Landroid/view/WindowInsets;
+HSPLandroid/view/WindowInsets;->inset(Landroid/graphics/Rect;)Landroid/view/WindowInsets;
 HSPLandroid/view/WindowInsets;->insetInsets(Landroid/graphics/Insets;IIII)Landroid/graphics/Insets;
+HSPLandroid/view/WindowInsets;->insetInsets([Landroid/graphics/Insets;IIII)[Landroid/graphics/Insets;
 HSPLandroid/view/WindowInsets;->isConsumed()Z
+HSPLandroid/view/WindowInsets;->isSystemWindowInsetsConsumed()Z
 HSPLandroid/view/WindowInsets;->replaceSystemWindowInsets(IIII)Landroid/view/WindowInsets;
-HSPLandroid/view/WindowManager$LayoutParams$1;-><init>()V
-HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/WindowManager$LayoutParams;
-HSPLandroid/view/WindowManager$LayoutParams$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/WindowInsets;->shouldAlwaysConsumeSystemBars()Z
+HSPLandroid/view/WindowLeaked;-><init>(Ljava/lang/String;)V
 HSPLandroid/view/WindowManager$LayoutParams;-><init>()V
-HSPLandroid/view/WindowManager$LayoutParams;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/view/WindowManager$LayoutParams;->copyFrom(Landroid/view/WindowManager$LayoutParams;)I
 HSPLandroid/view/WindowManager$LayoutParams;->getColorMode()I
-HSPLandroid/view/WindowManager$LayoutParams;->isFullscreen()Z
+HSPLandroid/view/WindowManager$LayoutParams;->getFitWindowInsetsSides()I
+HSPLandroid/view/WindowManager$LayoutParams;->getFitWindowInsetsTypes()I
+HSPLandroid/view/WindowManager$LayoutParams;->getTitle()Ljava/lang/CharSequence;
 HSPLandroid/view/WindowManager$LayoutParams;->mayUseInputMethod(I)Z
 HSPLandroid/view/WindowManager$LayoutParams;->setColorMode(I)V
+HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsSides(I)V
+HSPLandroid/view/WindowManager$LayoutParams;->setFitInsetsTypes(I)V
 HSPLandroid/view/WindowManager$LayoutParams;->setSurfaceInsets(Landroid/view/View;ZZ)V
 HSPLandroid/view/WindowManager$LayoutParams;->setTitle(Ljava/lang/CharSequence;)V
 HSPLandroid/view/WindowManager$LayoutParams;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/WindowManagerGlobal$1;-><init>()V
+HSPLandroid/view/WindowManagerGlobal$2;-><init>(Landroid/view/WindowManagerGlobal;)V
+HSPLandroid/view/WindowManagerGlobal$2;->run()V
 HSPLandroid/view/WindowManagerGlobal;-><init>()V
+HSPLandroid/view/WindowManagerGlobal;->access$000(Landroid/view/WindowManagerGlobal;)Ljava/lang/Object;
+HSPLandroid/view/WindowManagerGlobal;->access$100(Landroid/view/WindowManagerGlobal;)Ljava/util/ArrayList;
 HSPLandroid/view/WindowManagerGlobal;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;Landroid/view/Display;Landroid/view/Window;)V
 HSPLandroid/view/WindowManagerGlobal;->closeAll(Landroid/os/IBinder;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/view/WindowManagerGlobal;->closeAllExceptView(Landroid/os/IBinder;Landroid/view/View;Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/view/WindowManagerGlobal;->doRemoveView(Landroid/view/ViewRootImpl;)V
-HSPLandroid/view/WindowManagerGlobal;->doTrimForeground()V
-HPLandroid/view/WindowManagerGlobal;->dumpGfxInfo(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
 HSPLandroid/view/WindowManagerGlobal;->findViewLocked(Landroid/view/View;Z)I
 HSPLandroid/view/WindowManagerGlobal;->getInstance()Landroid/view/WindowManagerGlobal;
-HSPLandroid/view/WindowManagerGlobal;->getRootViews(Landroid/os/IBinder;)Ljava/util/ArrayList;
 HSPLandroid/view/WindowManagerGlobal;->getWindowManagerService()Landroid/view/IWindowManager;
 HSPLandroid/view/WindowManagerGlobal;->getWindowSession()Landroid/view/IWindowSession;
 HSPLandroid/view/WindowManagerGlobal;->initialize()V
@@ -17830,137 +13483,106 @@
 HSPLandroid/view/WindowManagerGlobal;->removeView(Landroid/view/View;Z)V
 HSPLandroid/view/WindowManagerGlobal;->removeViewLocked(IZ)V
 HSPLandroid/view/WindowManagerGlobal;->setStoppedState(Landroid/os/IBinder;Z)V
+HSPLandroid/view/WindowManagerGlobal;->shouldDestroyEglContext(I)Z
+HSPLandroid/view/WindowManagerGlobal;->trimForeground()V
 HSPLandroid/view/WindowManagerGlobal;->trimMemory(I)V
 HSPLandroid/view/WindowManagerGlobal;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;)V
+HSPLandroid/view/WindowManagerImpl;-><init>(Landroid/content/Context;Landroid/view/Window;)V
 HSPLandroid/view/WindowManagerImpl;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/view/WindowManagerImpl;->applyDefaultToken(Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/view/WindowManagerImpl;->createLocalWindowManager(Landroid/view/Window;)Landroid/view/WindowManagerImpl;
 HSPLandroid/view/WindowManagerImpl;->getDefaultDisplay()Landroid/view/Display;
-HSPLandroid/view/WindowManagerImpl;->removeView(Landroid/view/View;)V
 HSPLandroid/view/WindowManagerImpl;->removeViewImmediate(Landroid/view/View;)V
 HSPLandroid/view/WindowManagerImpl;->updateViewLayout(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/view/accessibility/-$$Lambda$AccessibilityManager$1$o7fCplskH9NlBwJvkl6NoZ0L_BA;->run()V
-HSPLandroid/view/accessibility/AccessibilityEvent$1;-><init>()V
-HSPLandroid/view/accessibility/AccessibilityEvent;->clear()V
-HSPLandroid/view/accessibility/AccessibilityEvent;->setEventTime(J)V
-HSPLandroid/view/accessibility/AccessibilityEvent;->setPackageName(Ljava/lang/CharSequence;)V
-HSPLandroid/view/accessibility/AccessibilityEvent;->writeAccessibilityRecordToParcel(Landroid/view/accessibility/AccessibilityRecord;Landroid/os/Parcel;I)V
-HSPLandroid/view/accessibility/AccessibilityEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/accessibility/AccessibilityManager$1;->lambda$notifyServicesStateChanged$0$AccessibilityManager$1(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;)V
+HSPLandroid/view/accessibility/AccessibilityManager$1;-><init>(Landroid/view/accessibility/AccessibilityManager;)V
 HSPLandroid/view/accessibility/AccessibilityManager$1;->notifyServicesStateChanged(J)V
 HSPLandroid/view/accessibility/AccessibilityManager$1;->setState(I)V
+HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;-><init>(Landroid/view/accessibility/AccessibilityManager;)V
+HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;-><init>(Landroid/view/accessibility/AccessibilityManager;Landroid/view/accessibility/AccessibilityManager$1;)V
 HSPLandroid/view/accessibility/AccessibilityManager$MyCallback;->handleMessage(Landroid/os/Message;)Z
 HSPLandroid/view/accessibility/AccessibilityManager;-><init>(Landroid/content/Context;Landroid/view/accessibility/IAccessibilityManager;I)V
-HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Ljava/lang/String;Landroid/view/accessibility/IAccessibilityInteractionConnection;)I
-HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityServicesStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityServicesStateChangeListener;Landroid/os/Handler;)V
+HSPLandroid/view/accessibility/AccessibilityManager;->access$000(Landroid/view/accessibility/AccessibilityManager;J)V
+HSPLandroid/view/accessibility/AccessibilityManager;->access$100(Landroid/view/accessibility/AccessibilityManager;)Ljava/lang/Object;
+HSPLandroid/view/accessibility/AccessibilityManager;->access$200(Landroid/view/accessibility/AccessibilityManager;)Landroid/util/ArrayMap;
+HSPLandroid/view/accessibility/AccessibilityManager;->access$400(Landroid/view/accessibility/AccessibilityManager;I)V
 HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z
 HSPLandroid/view/accessibility/AccessibilityManager;->addAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;Landroid/os/Handler;)V
 HSPLandroid/view/accessibility/AccessibilityManager;->addHighTextContrastStateChangeListener(Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;Landroid/os/Handler;)V
-HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;)Z
 HSPLandroid/view/accessibility/AccessibilityManager;->addTouchExplorationStateChangeListener(Landroid/view/accessibility/AccessibilityManager$TouchExplorationStateChangeListener;Landroid/os/Handler;)V
 HSPLandroid/view/accessibility/AccessibilityManager;->getEnabledAccessibilityServiceList(I)Ljava/util/List;
-HSPLandroid/view/accessibility/AccessibilityManager;->getInstalledAccessibilityServiceList()Ljava/util/List;
 HSPLandroid/view/accessibility/AccessibilityManager;->getInstance(Landroid/content/Context;)Landroid/view/accessibility/AccessibilityManager;
-HSPLandroid/view/accessibility/AccessibilityManager;->getRecommendedTimeoutMillis(II)I
-HSPLandroid/view/accessibility/AccessibilityManager;->isAccessibilityVolumeStreamActive()Z
+HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager;
 HSPLandroid/view/accessibility/AccessibilityManager;->isEnabled()Z
 HSPLandroid/view/accessibility/AccessibilityManager;->isHighTextContrastEnabled()Z
 HSPLandroid/view/accessibility/AccessibilityManager;->isTouchExplorationEnabled()Z
-HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityButtonVisibilityChanged(Z)V
-HSPLandroid/view/accessibility/AccessibilityManager;->notifyAccessibilityStateChanged()V
-HSPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
 HSPLandroid/view/accessibility/AccessibilityManager;->removeAccessibilityStateChangeListener(Landroid/view/accessibility/AccessibilityManager$AccessibilityStateChangeListener;)Z
 HSPLandroid/view/accessibility/AccessibilityManager;->removeHighTextContrastStateChangeListener(Landroid/view/accessibility/AccessibilityManager$HighTextContrastChangeListener;)V
-HSPLandroid/view/accessibility/AccessibilityManager;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
 HSPLandroid/view/accessibility/AccessibilityManager;->setStateLocked(I)V
 HSPLandroid/view/accessibility/AccessibilityManager;->tryConnectToServiceLocked(Landroid/view/accessibility/IAccessibilityManager;)V
-HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->findView(I)Landroid/view/View;
+HSPLandroid/view/accessibility/AccessibilityManager;->updateUiTimeout(J)V
+HSPLandroid/view/accessibility/AccessibilityNodeIdManager;-><init>()V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->getInstance()Landroid/view/accessibility/AccessibilityNodeIdManager;
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->registerViewWithId(Landroid/view/View;I)V
 HSPLandroid/view/accessibility/AccessibilityNodeIdManager;->unregisterViewWithId(I)V
-HSPLandroid/view/accessibility/AccessibilityNodeInfo$1;-><init>()V
-HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;-><init>(I)V
 HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;-><init>(ILjava/lang/CharSequence;)V
-HSPLandroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;->hashCode()I
-HSPLandroid/view/accessibility/AccessibilityNodeInfo;-><init>()V
-HSPLandroid/view/accessibility/AccessibilityNodeInfo;->makeNodeId(II)J
-HSPLandroid/view/accessibility/AccessibilityRecord;-><init>()V
-HSPLandroid/view/accessibility/AccessibilityRecord;->clear()V
-HSPLandroid/view/accessibility/AccessibilityRecord;->enforceNotSealed()V
-HSPLandroid/view/accessibility/AccessibilityRecord;->isSealed()Z
-HSPLandroid/view/accessibility/AccessibilityRecord;->setClassName(Ljava/lang/CharSequence;)V
-HSPLandroid/view/accessibility/AccessibilityRecord;->setSource(Landroid/view/View;I)V
-HSPLandroid/view/accessibility/CaptioningManager$CaptionStyle;-><init>(IIIIILjava/lang/String;)V
+HSPLandroid/view/accessibility/CaptioningManager$1;-><init>(Landroid/view/accessibility/CaptioningManager;)V
+HSPLandroid/view/accessibility/CaptioningManager$CaptioningChangeListener;-><init>()V
+HSPLandroid/view/accessibility/CaptioningManager$MyContentObserver;-><init>(Landroid/view/accessibility/CaptioningManager;Landroid/os/Handler;)V
 HSPLandroid/view/accessibility/CaptioningManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/view/accessibility/CaptioningManager;->addCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V
-HSPLandroid/view/accessibility/CaptioningManager;->getFontScale()F
 HSPLandroid/view/accessibility/CaptioningManager;->getLocale()Ljava/util/Locale;
-HSPLandroid/view/accessibility/CaptioningManager;->getRawUserStyle()I
-HSPLandroid/view/accessibility/CaptioningManager;->getUserStyle()Landroid/view/accessibility/CaptioningManager$CaptionStyle;
+HSPLandroid/view/accessibility/CaptioningManager;->getRawLocale()Ljava/lang/String;
 HSPLandroid/view/accessibility/CaptioningManager;->isEnabled()Z
 HSPLandroid/view/accessibility/CaptioningManager;->removeCaptioningChangeListener(Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;)V
-HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;->asBinder()Landroid/os/IBinder;
+HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
 HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
-HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getInstalledAccessibilityServiceList(I)Ljava/util/List;
 HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->getRecommendedTimeoutMillis()J
-HSPLandroid/view/accessibility/IAccessibilityManager$Stub;-><init>()V
-HSPLandroid/view/accessibility/IAccessibilityManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->notifyServicesStateChanged(J)V
-HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;->setState(I)V
+HSPLandroid/view/accessibility/IAccessibilityManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/accessibility/IAccessibilityManager;
+HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;-><init>()V
 HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/accessibility/IAccessibilityManagerClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;I)V
+HSPLandroid/view/accessibility/WeakSparseArray;-><init>()V
+HSPLandroid/view/accessibility/WeakSparseArray;->append(ILjava/lang/Object;)V
+HSPLandroid/view/accessibility/WeakSparseArray;->remove(I)V
+HSPLandroid/view/accessibility/WeakSparseArray;->removeUnreachableValues()V
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;-><init>()V
-HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->createNativeInterpolator()J
 HSPLandroid/view/animation/AccelerateDecelerateInterpolator;->getInterpolation(F)F
 HSPLandroid/view/animation/AccelerateInterpolator;-><init>()V
-HSPLandroid/view/animation/AccelerateInterpolator;-><init>(F)V
 HSPLandroid/view/animation/AccelerateInterpolator;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
 HSPLandroid/view/animation/AccelerateInterpolator;->getInterpolation(F)F
-HSPLandroid/view/animation/AlphaAnimation;-><init>(FF)V
+HSPLandroid/view/animation/AlphaAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/view/animation/AlphaAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-HSPLandroid/view/animation/AlphaAnimation;->hasAlpha()Z
 HSPLandroid/view/animation/AlphaAnimation;->willChangeBounds()Z
 HSPLandroid/view/animation/AlphaAnimation;->willChangeTransformationMatrix()Z
-HSPLandroid/view/animation/Animation$1;->run()V
-HSPLandroid/view/animation/Animation$3;->run()V
+HSPLandroid/view/animation/Animation$1;-><init>(Landroid/view/animation/Animation;)V
+HSPLandroid/view/animation/Animation$2;-><init>(Landroid/view/animation/Animation;)V
+HSPLandroid/view/animation/Animation$3;-><init>(Landroid/view/animation/Animation;)V
+HSPLandroid/view/animation/Animation$Description;-><init>()V
 HSPLandroid/view/animation/Animation$Description;->parseValue(Landroid/util/TypedValue;)Landroid/view/animation/Animation$Description;
 HSPLandroid/view/animation/Animation;-><init>()V
 HSPLandroid/view/animation/Animation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/Animation;->cancel()V
-HSPLandroid/view/animation/Animation;->computeDurationHint()J
 HSPLandroid/view/animation/Animation;->detach()V
 HSPLandroid/view/animation/Animation;->dispatchAnimationEnd()V
 HSPLandroid/view/animation/Animation;->dispatchAnimationStart()V
 HSPLandroid/view/animation/Animation;->ensureInterpolator()V
 HSPLandroid/view/animation/Animation;->finalize()V
-HSPLandroid/view/animation/Animation;->getBackgroundColor()I
+HSPLandroid/view/animation/Animation;->fireAnimationEnd()V
+HSPLandroid/view/animation/Animation;->fireAnimationStart()V
 HSPLandroid/view/animation/Animation;->getDuration()J
 HSPLandroid/view/animation/Animation;->getFillAfter()Z
-HPLandroid/view/animation/Animation;->getInterpolator()Landroid/view/animation/Interpolator;
-HSPLandroid/view/animation/Animation;->getInvalidateRegion(IIIILandroid/graphics/RectF;Landroid/view/animation/Transformation;)V
-HSPLandroid/view/animation/Animation;->getRepeatCount()I
 HSPLandroid/view/animation/Animation;->getScaleFactor()F
-HPLandroid/view/animation/Animation;->getShowWallpaper()Z
 HSPLandroid/view/animation/Animation;->getStartOffset()J
-HSPLandroid/view/animation/Animation;->getStartTime()J
 HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;)Z
 HSPLandroid/view/animation/Animation;->getTransformation(JLandroid/view/animation/Transformation;F)Z
-HPLandroid/view/animation/Animation;->getZAdjustment()I
-HSPLandroid/view/animation/Animation;->hasAlpha()Z
+HSPLandroid/view/animation/Animation;->hasAnimationListener()Z
 HSPLandroid/view/animation/Animation;->hasEnded()Z
-HSPLandroid/view/animation/Animation;->hasRoundedCorners()Z
 HSPLandroid/view/animation/Animation;->hasStarted()Z
 HSPLandroid/view/animation/Animation;->initialize(IIII)V
-HSPLandroid/view/animation/Animation;->initializeInvalidateRegion(IIII)V
-HSPLandroid/view/animation/Animation;->isFillEnabled()Z
+HSPLandroid/view/animation/Animation;->isCanceled()Z
 HSPLandroid/view/animation/Animation;->isInitialized()Z
 HSPLandroid/view/animation/Animation;->reset()V
 HSPLandroid/view/animation/Animation;->resolveSize(IFII)F
-HSPLandroid/view/animation/Animation;->restrictDuration(J)V
-HSPLandroid/view/animation/Animation;->scaleCurrentDuration(F)V
 HSPLandroid/view/animation/Animation;->setAnimationListener(Landroid/view/animation/Animation$AnimationListener;)V
 HSPLandroid/view/animation/Animation;->setBackgroundColor(I)V
 HSPLandroid/view/animation/Animation;->setDetachWallpaper(Z)V
@@ -17981,442 +13603,221 @@
 HSPLandroid/view/animation/Animation;->willChangeBounds()Z
 HSPLandroid/view/animation/Animation;->willChangeTransformationMatrix()Z
 HSPLandroid/view/animation/AnimationSet;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/AnimationSet;-><init>(Z)V
 HSPLandroid/view/animation/AnimationSet;->addAnimation(Landroid/view/animation/Animation;)V
-HSPLandroid/view/animation/AnimationSet;->computeDurationHint()J
-HSPLandroid/view/animation/AnimationSet;->getAnimations()Ljava/util/List;
-HSPLandroid/view/animation/AnimationSet;->getDuration()J
 HSPLandroid/view/animation/AnimationSet;->getTransformation(JLandroid/view/animation/Transformation;)Z
-HSPLandroid/view/animation/AnimationSet;->hasAlpha()Z
+HSPLandroid/view/animation/AnimationSet;->init()V
 HSPLandroid/view/animation/AnimationSet;->initialize(IIII)V
-HSPLandroid/view/animation/AnimationSet;->initializeInvalidateRegion(IIII)V
 HSPLandroid/view/animation/AnimationSet;->reset()V
 HSPLandroid/view/animation/AnimationSet;->restoreChildrenStartOffset()V
-HSPLandroid/view/animation/AnimationSet;->restrictDuration(J)V
-HSPLandroid/view/animation/AnimationSet;->scaleCurrentDuration(F)V
 HSPLandroid/view/animation/AnimationSet;->setDuration(J)V
 HSPLandroid/view/animation/AnimationSet;->setFillAfter(Z)V
 HSPLandroid/view/animation/AnimationSet;->setFillBefore(Z)V
+HSPLandroid/view/animation/AnimationSet;->setFlag(IZ)V
 HSPLandroid/view/animation/AnimationSet;->setRepeatMode(I)V
 HSPLandroid/view/animation/AnimationSet;->setStartOffset(J)V
-HSPLandroid/view/animation/AnimationSet;->setStartTime(J)V
-HSPLandroid/view/animation/AnimationSet;->willChangeBounds()Z
-HSPLandroid/view/animation/AnimationSet;->willChangeTransformationMatrix()Z
-HSPLandroid/view/animation/AnimationUtils$1;-><init>()V
 HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Landroid/view/animation/AnimationUtils$AnimationState;
 HSPLandroid/view/animation/AnimationUtils$1;->initialValue()Ljava/lang/Object;
+HSPLandroid/view/animation/AnimationUtils$AnimationState;-><init>()V
+HSPLandroid/view/animation/AnimationUtils$AnimationState;-><init>(Landroid/view/animation/AnimationUtils$1;)V
+HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->createAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/view/animation/AnimationSet;Landroid/util/AttributeSet;)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->createInterpolatorFromXml(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Lorg/xmlpull/v1/XmlPullParser;)Landroid/view/animation/Interpolator;
-HSPLandroid/view/animation/AnimationUtils;->createLayoutAnimationFromXml(Landroid/content/Context;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;)Landroid/view/animation/LayoutAnimationController;
 HSPLandroid/view/animation/AnimationUtils;->currentAnimationTimeMillis()J
 HSPLandroid/view/animation/AnimationUtils;->loadAnimation(Landroid/content/Context;I)Landroid/view/animation/Animation;
 HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/Context;I)Landroid/view/animation/Interpolator;
 HSPLandroid/view/animation/AnimationUtils;->loadInterpolator(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;I)Landroid/view/animation/Interpolator;
-HSPLandroid/view/animation/AnimationUtils;->loadLayoutAnimation(Landroid/content/Context;I)Landroid/view/animation/LayoutAnimationController;
+HSPLandroid/view/animation/AnimationUtils;->lockAnimationClock(J)V
+HSPLandroid/view/animation/AnimationUtils;->unlockAnimationClock()V
+HSPLandroid/view/animation/BaseInterpolator;-><init>()V
 HSPLandroid/view/animation/BaseInterpolator;->getChangingConfiguration()I
 HSPLandroid/view/animation/BaseInterpolator;->setChangingConfiguration(I)V
-HPLandroid/view/animation/ClipRectAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HPLandroid/view/animation/ClipRectAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-HPLandroid/view/animation/ClipRectAnimation;->initialize(IIII)V
 HSPLandroid/view/animation/DecelerateInterpolator;-><init>()V
 HSPLandroid/view/animation/DecelerateInterpolator;-><init>(F)V
 HSPLandroid/view/animation/DecelerateInterpolator;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
 HSPLandroid/view/animation/DecelerateInterpolator;->getInterpolation(F)F
-HSPLandroid/view/animation/LayoutAnimationController;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/content/Context;I)V
-HSPLandroid/view/animation/LayoutAnimationController;->setAnimation(Landroid/view/animation/Animation;)V
 HSPLandroid/view/animation/LinearInterpolator;-><init>()V
 HSPLandroid/view/animation/LinearInterpolator;->createNativeInterpolator()J
 HSPLandroid/view/animation/LinearInterpolator;->getInterpolation(F)F
-HSPLandroid/view/animation/OvershootInterpolator;-><init>()V
 HSPLandroid/view/animation/PathInterpolator;-><init>(FFFF)V
 HSPLandroid/view/animation/PathInterpolator;-><init>(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;)V
 HSPLandroid/view/animation/PathInterpolator;->createNativeInterpolator()J
 HSPLandroid/view/animation/PathInterpolator;->getInterpolation(F)F
+HSPLandroid/view/animation/PathInterpolator;->initCubic(FFFF)V
 HSPLandroid/view/animation/PathInterpolator;->initPath(Landroid/graphics/Path;)V
 HSPLandroid/view/animation/PathInterpolator;->parseInterpolatorFromTypeArray(Landroid/content/res/TypedArray;)V
-HSPLandroid/view/animation/RotateAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/RotateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-HSPLandroid/view/animation/RotateAnimation;->initialize(IIII)V
-HSPLandroid/view/animation/ScaleAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/ScaleAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-HSPLandroid/view/animation/ScaleAnimation;->initialize(IIII)V
-HSPLandroid/view/animation/ScaleAnimation;->resolveScale(FIIII)F
 HSPLandroid/view/animation/Transformation;-><init>()V
 HSPLandroid/view/animation/Transformation;->clear()V
 HSPLandroid/view/animation/Transformation;->compose(Landroid/view/animation/Transformation;)V
 HSPLandroid/view/animation/Transformation;->getAlpha()F
-HSPLandroid/view/animation/Transformation;->getClipRect()Landroid/graphics/Rect;
 HSPLandroid/view/animation/Transformation;->getMatrix()Landroid/graphics/Matrix;
-HSPLandroid/view/animation/Transformation;->getTransformationType()I
-HSPLandroid/view/animation/Transformation;->set(Landroid/view/animation/Transformation;)V
 HSPLandroid/view/animation/Transformation;->setAlpha(F)V
-HPLandroid/view/animation/Transformation;->setClipRect(IIII)V
-HPLandroid/view/animation/Transformation;->setClipRect(Landroid/graphics/Rect;)V
-HSPLandroid/view/animation/TranslateAnimation;-><init>(FFFF)V
 HSPLandroid/view/animation/TranslateAnimation;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/view/animation/TranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-HSPLandroid/view/animation/TranslateAnimation;->initialize(IIII)V
-HSPLandroid/view/autofill/AutofillId$1;-><init>()V
 HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillId;
 HSPLandroid/view/autofill/AutofillId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/autofill/AutofillId;-><init>(I)V
+HSPLandroid/view/autofill/AutofillId;-><init>(IIJI)V
+HSPLandroid/view/autofill/AutofillId;-><init>(IIJILandroid/view/autofill/AutofillId$1;)V
 HSPLandroid/view/autofill/AutofillId;->equals(Ljava/lang/Object;)Z
+HSPLandroid/view/autofill/AutofillId;->hasSession()Z
 HSPLandroid/view/autofill/AutofillId;->hashCode()I
-HSPLandroid/view/autofill/AutofillId;->toString()Ljava/lang/String;
+HSPLandroid/view/autofill/AutofillId;->isVirtualInt()Z
+HSPLandroid/view/autofill/AutofillId;->isVirtualLong()Z
 HSPLandroid/view/autofill/AutofillId;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/autofill/AutofillManager;-><init>(Landroid/content/Context;Landroid/view/autofill/IAutoFillManager;)V
 HSPLandroid/view/autofill/AutofillManager;->ensureServiceClientAddedIfNeededLocked()V
 HSPLandroid/view/autofill/AutofillManager;->getClient()Landroid/view/autofill/AutofillManager$AutofillClient;
-HSPLandroid/view/autofill/AutofillManager;->isEnabled()Z
+HSPLandroid/view/autofill/AutofillManager;->hasAutofillFeature()Z
+HSPLandroid/view/autofill/AutofillManager;->isAutofillUiShowing()Z
 HSPLandroid/view/autofill/AutofillManager;->notifyValueChanged(Landroid/view/View;)V
+HSPLandroid/view/autofill/AutofillManager;->notifyViewVisibilityChanged(Landroid/view/View;Z)V
 HSPLandroid/view/autofill/AutofillManager;->notifyViewVisibilityChangedInternal(Landroid/view/View;IZZ)V
+HSPLandroid/view/autofill/AutofillManager;->requestHideFillUi()V
 HSPLandroid/view/autofill/AutofillManager;->requestHideFillUi(Landroid/view/autofill/AutofillId;Z)V
-HSPLandroid/view/autofill/AutofillValue$1;-><init>()V
-HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/autofill/AutofillValue;
-HPLandroid/view/autofill/AutofillValue$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLandroid/view/autofill/AutofillValue;-><init>(Landroid/os/Parcel;)V
-HPLandroid/view/autofill/AutofillValue;->equals(Ljava/lang/Object;)Z
-HPLandroid/view/autofill/AutofillValue;->getTextValue()Ljava/lang/CharSequence;
-HPLandroid/view/autofill/AutofillValue;->isEmpty()Z
+HSPLandroid/view/autofill/AutofillManager;->startAutofillIfNeededLocked(Landroid/view/View;)Z
 HSPLandroid/view/autofill/AutofillValue;->writeToParcel(Landroid/os/Parcel;I)V
-HPLandroid/view/autofill/Helper;->toList(Ljava/util/Set;)Ljava/util/ArrayList;
-HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;->addClient(Landroid/view/autofill/IAutoFillManagerClient;Landroid/content/ComponentName;ILcom/android/internal/os/IResultReceiver;)V
-HSPLandroid/view/autofill/IAutoFillManager$Stub;-><init>()V
+HSPLandroid/view/autofill/IAutoFillManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/view/autofill/IAutoFillManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManager;
-HPLandroid/view/autofill/IAutoFillManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->getAugmentedAutofillClient(Lcom/android/internal/os/IResultReceiver;)V
-PLandroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;->setSessionFinished(ILjava/util/List;)V
-HSPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asBinder()Landroid/os/IBinder;
-HPLandroid/view/autofill/IAutoFillManagerClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/autofill/IAutoFillManagerClient;
-HSPLandroid/view/contentcapture/ContentCaptureContext$1;-><init>()V
-HSPLandroid/view/contentcapture/ContentCaptureContext;-><init>(Landroid/view/contentcapture/ContentCaptureContext;Landroid/content/ComponentName;III)V
-PLandroid/view/contentcapture/ContentCaptureContext;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/contentcapture/ContentCaptureHelper;->getDefaultLoggingLevel()I
-HSPLandroid/view/contentcapture/ContentCaptureHelper;->getLoggingLevelAsString(I)Ljava/lang/String;
-HSPLandroid/view/contentcapture/ContentCaptureHelper;->setLoggingLevel(I)V
-HSPLandroid/view/contentcapture/IContentCaptureManager$Stub;-><init>()V
-HPLandroid/view/contentcapture/IContentCaptureManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$DelegateImpl$imXagcrnfBo6bvJbiHKCn0Q2ZzU;-><init>(Landroid/view/inputmethod/InputMethodManager$DelegateImpl;ZLandroid/view/View;III)V
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$DelegateImpl$imXagcrnfBo6bvJbiHKCn0Q2ZzU;->run()V
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$DelegateImpl$r2X8PLo_YIORJTYJGDfinf_IvK4;-><init>(Landroid/view/inputmethod/InputMethodManager$DelegateImpl;Landroid/view/View;)V
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$DelegateImpl$r2X8PLo_YIORJTYJGDfinf_IvK4;->run()V
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$dfnCauFoZCf-HfXs1QavrkwWDf0;-><init>(Landroid/view/inputmethod/InputMethodManager;I)V
+HSPLandroid/view/inputmethod/-$$Lambda$InputMethodManager$dfnCauFoZCf-HfXs1QavrkwWDf0;->run()V
+HSPLandroid/view/inputmethod/BaseInputConnection;-><init>(Landroid/view/inputmethod/InputMethodManager;Z)V
 HSPLandroid/view/inputmethod/BaseInputConnection;->beginBatchEdit()Z
 HSPLandroid/view/inputmethod/BaseInputConnection;->endBatchEdit()Z
 HSPLandroid/view/inputmethod/BaseInputConnection;->finishComposingText()Z
 HSPLandroid/view/inputmethod/BaseInputConnection;->getEditable()Landroid/text/Editable;
-HSPLandroid/view/inputmethod/BaseInputConnection;->getHandler()Landroid/os/Handler;
-HSPLandroid/view/inputmethod/BaseInputConnection;->getSelectedText(I)Ljava/lang/CharSequence;
-HSPLandroid/view/inputmethod/BaseInputConnection;->getTextAfterCursor(II)Ljava/lang/CharSequence;
-HSPLandroid/view/inputmethod/BaseInputConnection;->getTextBeforeCursor(II)Ljava/lang/CharSequence;
 HSPLandroid/view/inputmethod/BaseInputConnection;->removeComposingSpans(Landroid/text/Spannable;)V
-HSPLandroid/view/inputmethod/BaseInputConnection;->replaceText(Ljava/lang/CharSequence;IZ)V
-HSPLandroid/view/inputmethod/BaseInputConnection;->reportFullscreenMode(Z)Z
 HSPLandroid/view/inputmethod/BaseInputConnection;->sendCurrentText()V
-HSPLandroid/view/inputmethod/ComposingText;-><init>()V
 HSPLandroid/view/inputmethod/CursorAnchorInfo$Builder;-><init>()V
-HSPLandroid/view/inputmethod/EditorInfo$1;-><init>()V
-HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/EditorInfo;
-HSPLandroid/view/inputmethod/EditorInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/view/inputmethod/EditorInfo$InitialSurroundingText$1;-><init>()V
+HSPLandroid/view/inputmethod/EditorInfo$InitialSurroundingText;-><clinit>()V
+HSPLandroid/view/inputmethod/EditorInfo$InitialSurroundingText;-><init>()V
+HSPLandroid/view/inputmethod/EditorInfo$InitialSurroundingText;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/view/inputmethod/EditorInfo;-><init>()V
-HSPLandroid/view/inputmethod/EditorInfo;->makeCompatible(I)V
 HSPLandroid/view/inputmethod/EditorInfo;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/inputmethod/ExtractedText$1;-><init>()V
-HSPLandroid/view/inputmethod/ExtractedTextRequest$1;-><init>()V
-HSPLandroid/view/inputmethod/ExtractedTextRequest;-><init>()V
-HSPLandroid/view/inputmethod/InputBinding$1;-><init>()V
-HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputBinding;
-HSPLandroid/view/inputmethod/InputBinding$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/inputmethod/InputBinding;-><init>(Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputBinding;)V
-HSPLandroid/view/inputmethod/InputBinding;->getConnection()Landroid/view/inputmethod/InputConnection;
-HSPLandroid/view/inputmethod/InputConnectionInspector;->getMissingMethodFlags(Landroid/view/inputmethod/InputConnection;)I
-HSPLandroid/view/inputmethod/InputMethodInfo$1;-><init>()V
-HSPLandroid/view/inputmethod/InputMethodInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputMethodInfo;
-HSPLandroid/view/inputmethod/InputMethodInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/inputmethod/InputMethodInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;Ljava/util/List;)V
-HSPLandroid/view/inputmethod/InputMethodInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/inputmethod/InputMethodInfo;->computeId(Landroid/content/pm/ResolveInfo;)Ljava/lang/String;
-HSPLandroid/view/inputmethod/InputMethodInfo;->equals(Ljava/lang/Object;)Z
-HSPLandroid/view/inputmethod/InputMethodInfo;->getComponent()Landroid/content/ComponentName;
 HSPLandroid/view/inputmethod/InputMethodInfo;->getId()Ljava/lang/String;
 HSPLandroid/view/inputmethod/InputMethodInfo;->getPackageName()Ljava/lang/String;
-HSPLandroid/view/inputmethod/InputMethodInfo;->getServiceInfo()Landroid/content/pm/ServiceInfo;
-HSPLandroid/view/inputmethod/InputMethodInfo;->getSubtypeAt(I)Landroid/view/inputmethod/InputMethodSubtype;
-HSPLandroid/view/inputmethod/InputMethodInfo;->getSubtypeCount()I
-HSPLandroid/view/inputmethod/InputMethodInfo;->loadLabel(Landroid/content/pm/PackageManager;)Ljava/lang/CharSequence;
-HSPLandroid/view/inputmethod/InputMethodInfo;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/inputmethod/InputMethodManager$1;-><init>(Landroid/view/inputmethod/InputMethodManager;)V
 HSPLandroid/view/inputmethod/InputMethodManager$1;->onBindMethod(Lcom/android/internal/view/InputBindResult;)V
 HSPLandroid/view/inputmethod/InputMethodManager$1;->onUnbindMethod(II)V
 HSPLandroid/view/inputmethod/InputMethodManager$1;->reportFullscreenMode(Z)V
 HSPLandroid/view/inputmethod/InputMethodManager$1;->setActive(ZZ)V
 HSPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;-><init>(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;Landroid/view/inputmethod/InputMethodManager;)V
-HSPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->deactivate()V
-HSPLandroid/view/inputmethod/InputMethodManager$ControlledInputConnectionWrapper;->isActive()Z
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;-><init>(Landroid/view/inputmethod/InputMethodManager;)V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;-><init>(Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/InputMethodManager$1;)V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->finishComposingText()V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->finishInput()V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->isCurrentRootView(Landroid/view/ViewRootImpl;)Z
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->isRestartOnNextWindowFocus(Z)Z
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->lambda$startInput$0$InputMethodManager$DelegateImpl(Landroid/view/View;)V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->lambda$startInputAsyncOnWindowFocusGain$1$InputMethodManager$DelegateImpl(ZLandroid/view/View;III)V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->setCurrentRootView(Landroid/view/ViewRootImpl;)V
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->startInput(ILandroid/view/View;III)Z
+HSPLandroid/view/inputmethod/InputMethodManager$DelegateImpl;->startInputAsyncOnWindowFocusGain(Landroid/view/View;IIZ)V
+HSPLandroid/view/inputmethod/InputMethodManager$H;-><init>(Landroid/view/inputmethod/InputMethodManager;Landroid/os/Looper;)V
 HSPLandroid/view/inputmethod/InputMethodManager$H;->handleMessage(Landroid/os/Message;)V
 HSPLandroid/view/inputmethod/InputMethodManager$ImeInputEventSender;->onInputEventFinished(IZ)V
+HSPLandroid/view/inputmethod/InputMethodManager$ImeThreadFactory;-><init>(Ljava/lang/String;)V
+HSPLandroid/view/inputmethod/InputMethodManager$ImeThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
 HSPLandroid/view/inputmethod/InputMethodManager$PendingEvent;->run()V
 HSPLandroid/view/inputmethod/InputMethodManager;-><init>(Lcom/android/internal/view/IInputMethodManager;ILandroid/os/Looper;)V
+HSPLandroid/view/inputmethod/InputMethodManager;->access$100(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/View;
+HSPLandroid/view/inputmethod/InputMethodManager;->access$1000(Landroid/view/View;)Z
+HSPLandroid/view/inputmethod/InputMethodManager;->access$200(Landroid/view/inputmethod/InputMethodManager;Landroid/view/View;I)I
+HSPLandroid/view/inputmethod/InputMethodManager;->access$300(Landroid/view/inputmethod/InputMethodManager;)Ljava/util/concurrent/Future;
+HSPLandroid/view/inputmethod/InputMethodManager;->access$302(Landroid/view/inputmethod/InputMethodManager;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future;
+HSPLandroid/view/inputmethod/InputMethodManager;->access$400(Landroid/view/inputmethod/InputMethodManager;)Ljava/util/concurrent/ExecutorService;
+HSPLandroid/view/inputmethod/InputMethodManager;->access$500(Landroid/view/inputmethod/InputMethodManager;)Z
+HSPLandroid/view/inputmethod/InputMethodManager;->access$502(Landroid/view/inputmethod/InputMethodManager;Z)Z
+HSPLandroid/view/inputmethod/InputMethodManager;->access$600(Landroid/view/inputmethod/InputMethodManager;)Landroid/view/ImeFocusController;
+HSPLandroid/view/inputmethod/InputMethodManager;->access$700(Landroid/view/inputmethod/InputMethodManager;Landroid/view/inputmethod/EditorInfo;)V
+HSPLandroid/view/inputmethod/InputMethodManager;->access$802(Landroid/view/inputmethod/InputMethodManager;I)I
+HSPLandroid/view/inputmethod/InputMethodManager;->access$902(Landroid/view/inputmethod/InputMethodManager;Landroid/graphics/Matrix;)Landroid/graphics/Matrix;
+HSPLandroid/view/inputmethod/InputMethodManager;->canStartInput(Landroid/view/View;)Z
+HSPLandroid/view/inputmethod/InputMethodManager;->checkFocus()V
 HSPLandroid/view/inputmethod/InputMethodManager;->checkFocusNoStartInput(Z)Z
-HSPLandroid/view/inputmethod/InputMethodManager;->closeCurrentInput()V
+HSPLandroid/view/inputmethod/InputMethodManager;->clearBindingLocked()V
+HSPLandroid/view/inputmethod/InputMethodManager;->clearConnectionLocked()V
+HSPLandroid/view/inputmethod/InputMethodManager;->createInstance(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager;
 HSPLandroid/view/inputmethod/InputMethodManager;->createRealInstance(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager;
 HSPLandroid/view/inputmethod/InputMethodManager;->dispatchInputEvent(Landroid/view/InputEvent;Ljava/lang/Object;Landroid/view/inputmethod/InputMethodManager$FinishedInputEventCallback;Landroid/os/Handler;)I
+HSPLandroid/view/inputmethod/InputMethodManager;->ensureDefaultInstanceForDefaultDisplayIfNecessary()V
+HSPLandroid/view/inputmethod/InputMethodManager;->finishInputLocked()V
 HSPLandroid/view/inputmethod/InputMethodManager;->finishedInputEvent(IZZ)V
 HSPLandroid/view/inputmethod/InputMethodManager;->flushPendingEventsLocked()V
-HSPLandroid/view/inputmethod/InputMethodManager;->focusIn(Landroid/view/View;)V
-HSPLandroid/view/inputmethod/InputMethodManager;->focusOut(Landroid/view/View;)V
 HSPLandroid/view/inputmethod/InputMethodManager;->forContext(Landroid/content/Context;)Landroid/view/inputmethod/InputMethodManager;
 HSPLandroid/view/inputmethod/InputMethodManager;->forContextInternal(ILandroid/os/Looper;)Landroid/view/inputmethod/InputMethodManager;
-HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodList()Ljava/util/List;
-HSPLandroid/view/inputmethod/InputMethodManager;->getEnabledInputMethodSubtypeList(Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;
+HSPLandroid/view/inputmethod/InputMethodManager;->getDelegate()Landroid/view/inputmethod/InputMethodManager$DelegateImpl;
 HSPLandroid/view/inputmethod/InputMethodManager;->getFallbackInputMethodManagerIfNecessary(Landroid/view/View;)Landroid/view/inputmethod/InputMethodManager;
-HSPLandroid/view/inputmethod/InputMethodManager;->getInputMethodList()Ljava/util/List;
+HSPLandroid/view/inputmethod/InputMethodManager;->getFocusController()Landroid/view/ImeFocusController;
+HSPLandroid/view/inputmethod/InputMethodManager;->getServedViewLocked()Landroid/view/View;
+HSPLandroid/view/inputmethod/InputMethodManager;->getStartInputFlags(Landroid/view/View;I)I
+HSPLandroid/view/inputmethod/InputMethodManager;->hasServedByInputMethodLocked(Landroid/view/View;)Z
 HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;I)Z
 HSPLandroid/view/inputmethod/InputMethodManager;->hideSoftInputFromWindow(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z
 HSPLandroid/view/inputmethod/InputMethodManager;->isActive(Landroid/view/View;)Z
-HSPLandroid/view/inputmethod/InputMethodManager;->isCursorAnchorInfoEnabled()Z
+HSPLandroid/view/inputmethod/InputMethodManager;->isAutofillUIShowing(Landroid/view/View;)Z
 HSPLandroid/view/inputmethod/InputMethodManager;->isFullscreenMode()Z
+HSPLandroid/view/inputmethod/InputMethodManager;->isInEditMode()Z
+HSPLandroid/view/inputmethod/InputMethodManager;->lambda$startInputInner$1$InputMethodManager(I)V
 HSPLandroid/view/inputmethod/InputMethodManager;->maybeCallServedViewChangedLocked(Landroid/view/inputmethod/EditorInfo;)V
-HSPLandroid/view/inputmethod/InputMethodManager;->onPostWindowFocus(Landroid/view/View;Landroid/view/View;IZI)V
-HSPLandroid/view/inputmethod/InputMethodManager;->onPreWindowFocus(Landroid/view/View;Z)V
 HSPLandroid/view/inputmethod/InputMethodManager;->onViewDetachedFromWindow(Landroid/view/View;)V
-HSPLandroid/view/inputmethod/InputMethodManager;->registerImeConsumer(Landroid/view/ImeInsetsSourceConsumer;)V
 HSPLandroid/view/inputmethod/InputMethodManager;->restartInput(Landroid/view/View;)V
 HSPLandroid/view/inputmethod/InputMethodManager;->sendInputEventOnMainLooperLocked(Landroid/view/inputmethod/InputMethodManager$PendingEvent;)I
 HSPLandroid/view/inputmethod/InputMethodManager;->setInputChannelLocked(Landroid/view/InputChannel;)V
-HSPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;I)Z
-HSPLandroid/view/inputmethod/InputMethodManager;->showSoftInput(Landroid/view/View;ILandroid/os/ResultReceiver;)Z
+HSPLandroid/view/inputmethod/InputMethodManager;->setNextServedViewLocked(Landroid/view/View;)V
+HSPLandroid/view/inputmethod/InputMethodManager;->setServedViewLocked(Landroid/view/View;)V
 HSPLandroid/view/inputmethod/InputMethodManager;->startInputInner(ILandroid/os/IBinder;III)Z
-HSPLandroid/view/inputmethod/InputMethodManager;->updateSelection(Landroid/view/View;IIII)V
-HSPLandroid/view/inputmethod/InputMethodManager;->windowDismissed(Landroid/os/IBinder;)V
-HSPLandroid/view/inputmethod/InputMethodSubtype$1;-><init>()V
-HSPLandroid/view/inputmethod/InputMethodSubtype$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/inputmethod/InputMethodSubtype;
-HSPLandroid/view/inputmethod/InputMethodSubtype$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/inputmethod/InputMethodSubtype;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/inputmethod/InputMethodSubtype;-><init>(Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;)V
-HSPLandroid/view/inputmethod/InputMethodSubtype;->containsExtraValueKey(Ljava/lang/String;)Z
-HSPLandroid/view/inputmethod/InputMethodSubtype;->getExtraValueHashMap()Ljava/util/HashMap;
-HSPLandroid/view/inputmethod/InputMethodSubtype;->hashCode()I
-HSPLandroid/view/inputmethod/InputMethodSubtype;->hashCodeInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZZ)I
-HSPLandroid/view/inputmethod/InputMethodSubtype;->sort(Landroid/content/Context;ILandroid/view/inputmethod/InputMethodInfo;Ljava/util/List;)Ljava/util/List;
-HSPLandroid/view/inputmethod/InputMethodSubtype;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;-><init>(Ljava/util/List;)V
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->compress([B)[B
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->get(I)Landroid/view/inputmethod/InputMethodSubtype;
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->getCount()I
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->marshall([Landroid/view/inputmethod/InputMethodSubtype;)[B
-HSPLandroid/view/inputmethod/InputMethodSubtypeArray;->writeToParcel(Landroid/os/Parcel;)V
-HSPLandroid/view/inputmethod/InputMethodSystemProperty;->getMultiClientImeComponentName()Landroid/content/ComponentName;
-HSPLandroid/view/textclassifier/-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE;-><init>()V
-HSPLandroid/view/textclassifier/-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;-><init>()V
-HPLandroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;-><init>()V
-PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;->test(Ljava/lang/Object;)Z
-PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$YTQv8oPvlmJL4tITUFD4z4JWKRk;-><init>()V
-PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$sY0w9od2zcl4YFel0lG4VB3vf7I;-><init>()V
-PLandroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$sY0w9od2zcl4YFel0lG4VB3vf7I;->chooseTitle(Landroid/view/textclassifier/intent/LabeledIntent;Landroid/content/pm/ResolveInfo;)Ljava/lang/CharSequence;
-HSPLandroid/view/textclassifier/-$$Lambda$EntityConfidence$YPh8hwgSYYK8OyQ1kFlQngc71Q0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/view/textclassifier/-$$Lambda$L_UQMPjXwBN0ch4zL2dD82nf9RI;-><init>()V
-HSPLandroid/view/textclassifier/-$$Lambda$NxwbyZSxofZ4Z5SQhfXmtLQ1nxk;-><init>()V
-HSPLandroid/view/textclassifier/-$$Lambda$NxwbyZSxofZ4Z5SQhfXmtLQ1nxk;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLandroid/view/textclassifier/-$$Lambda$OGSS2qx6njxlnp0dnKb4lA3jnw8;-><init>()V
-PLandroid/view/textclassifier/-$$Lambda$OGSS2qx6njxlnp0dnKb4lA3jnw8;->get()Ljava/lang/Object;
-HSPLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95ArUyMvfbw;-><init>()V
-HSPLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95ArUyMvfbw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLandroid/view/textclassifier/-$$Lambda$TextClassifierImpl$ftq-sQqJYwUdrdbbr9jz3p4AWos;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;-><init>()V
-HPLandroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/textclassifier/-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM;-><init>()V
-HSPLandroid/view/textclassifier/-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLandroid/view/textclassifier/ActionsSuggestionsHelper$PersonEncoder;->encode(Landroid/app/Person;)I
-PLandroid/view/textclassifier/ActionsSuggestionsHelper;->createLabeledIntentResult(Landroid/content/Context;Landroid/view/textclassifier/intent/TemplateIntentFactory;Lcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestion;)Landroid/view/textclassifier/intent/LabeledIntent$Result;
-HPLandroid/view/textclassifier/ActionsSuggestionsHelper;->createResultId(Landroid/content/Context;Ljava/util/List;ILjava/util/List;)Ljava/lang/String;
-PLandroid/view/textclassifier/ActionsSuggestionsHelper;->getRepresentation(Landroid/view/textclassifier/ConversationAction;)Landroid/util/Pair;
-HPLandroid/view/textclassifier/ActionsSuggestionsHelper;->removeActionsWithDuplicates(Ljava/util/List;)Ljava/util/List;
-HPLandroid/view/textclassifier/ActionsSuggestionsHelper;->toNativeMessages(Ljava/util/List;Ljava/util/function/Function;)[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;
-HSPLandroid/view/textclassifier/ConfigParser;-><init>(Ljava/lang/String;)V
-PLandroid/view/textclassifier/ConversationAction$1;-><init>()V
-PLandroid/view/textclassifier/ConversationAction;->getConfidenceScore()F
-PLandroid/view/textclassifier/ConversationAction;->getTextReply()Ljava/lang/CharSequence;
-PLandroid/view/textclassifier/ConversationAction;->getType()Ljava/lang/String;
-HSPLandroid/view/textclassifier/ConversationActions$1;-><init>()V
-PLandroid/view/textclassifier/ConversationActions$Message$1;-><init>()V
-PLandroid/view/textclassifier/ConversationActions$Message$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/ConversationActions$Message;
-PLandroid/view/textclassifier/ConversationActions$Message$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/textclassifier/ConversationActions$Message$Builder;-><init>(Landroid/app/Person;)V
-PLandroid/view/textclassifier/ConversationActions$Message$Builder;->build()Landroid/view/textclassifier/ConversationActions$Message;
-PLandroid/view/textclassifier/ConversationActions$Message$Builder;->setReferenceTime(Ljava/time/ZonedDateTime;)Landroid/view/textclassifier/ConversationActions$Message$Builder;
-PLandroid/view/textclassifier/ConversationActions$Message$Builder;->setText(Ljava/lang/CharSequence;)Landroid/view/textclassifier/ConversationActions$Message$Builder;
-HPLandroid/view/textclassifier/ConversationActions$Message;-><init>(Landroid/os/Parcel;)V
-PLandroid/view/textclassifier/ConversationActions$Message;->getAuthor()Landroid/app/Person;
-HPLandroid/view/textclassifier/ConversationActions$Message;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/view/textclassifier/ConversationActions$Request$1;-><init>()V
-PLandroid/view/textclassifier/ConversationActions$Request$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/ConversationActions$Request;
-PLandroid/view/textclassifier/ConversationActions$Request$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/textclassifier/ConversationActions$Request$Builder;-><init>(Ljava/util/List;)V
-HPLandroid/view/textclassifier/ConversationActions$Request$Builder;->build()Landroid/view/textclassifier/ConversationActions$Request;
-PLandroid/view/textclassifier/ConversationActions$Request$Builder;->setHints(Ljava/util/List;)Landroid/view/textclassifier/ConversationActions$Request$Builder;
-PLandroid/view/textclassifier/ConversationActions$Request$Builder;->setMaxSuggestions(I)Landroid/view/textclassifier/ConversationActions$Request$Builder;
-PLandroid/view/textclassifier/ConversationActions$Request$Builder;->setTypeConfig(Landroid/view/textclassifier/TextClassifier$EntityConfig;)Landroid/view/textclassifier/ConversationActions$Request$Builder;
-HPLandroid/view/textclassifier/ConversationActions$Request;->readFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/ConversationActions$Request;
-HPLandroid/view/textclassifier/ConversationActions$Request;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/textclassifier/ConversationActions;-><init>(Ljava/util/List;Ljava/lang/String;)V
-HSPLandroid/view/textclassifier/ConversationActions;->getConversationActions()Ljava/util/List;
-HSPLandroid/view/textclassifier/ConversationActions;->getId()Ljava/lang/String;
-HSPLandroid/view/textclassifier/EntityConfidence$1;-><init>()V
-HSPLandroid/view/textclassifier/EntityConfidence;-><init>(Ljava/util/Map;)V
-HSPLandroid/view/textclassifier/EntityConfidence;->resetSortedEntitiesFromMap()V
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFile;-><init>(Ljava/io/File;ILjava/util/List;Z)V
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFile;->isPreferredTo(Landroid/view/textclassifier/ModelFileManager$ModelFile;)Z
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFile;->toString()Ljava/lang/String;
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;-><init>(Ljava/io/File;Ljava/lang/String;Ljava/io/File;Ljava/util/function/Function;Ljava/util/function/Function;)V
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;->createModelFile(Ljava/io/File;)Landroid/view/textclassifier/ModelFileManager$ModelFile;
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;->get()Ljava/lang/Object;
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;->get()Ljava/util/List;
-HSPLandroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;->maybeCloseAndLogError(Landroid/os/ParcelFileDescriptor;)V
-HSPLandroid/view/textclassifier/ModelFileManager;->findBestModelFile(Landroid/os/LocaleList;)Landroid/view/textclassifier/ModelFileManager$ModelFile;
-HSPLandroid/view/textclassifier/ModelFileManager;->listModelFiles()Ljava/util/List;
-HSPLandroid/view/textclassifier/SystemTextClassifier$BlockingCallback;->onSuccess(Landroid/os/Bundle;)V
-HSPLandroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;->get()Ljava/lang/Object;
-HSPLandroid/view/textclassifier/SystemTextClassifier;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;)V
-HPLandroid/view/textclassifier/SystemTextClassifier;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassifierEvent;)V
-HPLandroid/view/textclassifier/SystemTextClassifier;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions;
-HSPLandroid/view/textclassifier/TextClassification$1;-><init>()V
-HSPLandroid/view/textclassifier/TextClassification$Builder;-><init>()V
-HSPLandroid/view/textclassifier/TextClassification$Builder;->build()Landroid/view/textclassifier/TextClassification;
-HSPLandroid/view/textclassifier/TextClassification$Builder;->buildExtras()Landroid/os/Bundle;
-HSPLandroid/view/textclassifier/TextClassificationConstants;-><init>(Ljava/lang/String;)V
-HSPLandroid/view/textclassifier/TextClassificationConstants;->parseFloatArray(Landroid/view/textclassifier/ConfigParser;Ljava/lang/String;Ljava/lang/String;)[F
-PLandroid/view/textclassifier/TextClassificationContext$1;-><init>()V
-PLandroid/view/textclassifier/TextClassificationContext$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/TextClassificationContext;
-PLandroid/view/textclassifier/TextClassificationContext$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/textclassifier/TextClassificationContext$Builder;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-PLandroid/view/textclassifier/TextClassificationContext$Builder;->build()Landroid/view/textclassifier/TextClassificationContext;
-PLandroid/view/textclassifier/TextClassificationContext;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/textclassifier/-$$Lambda$TextClassificationManager$JIaezIJbMig_-kVzN6oArzkTsJE;-><init>(Landroid/view/textclassifier/TextClassificationManager;)V
+HSPLandroid/view/textclassifier/SelectionSessionLogger;->getTokenIterator(Ljava/util/Locale;)Ljava/text/BreakIterator;
+HSPLandroid/view/textclassifier/TextClassificationConstants;-><init>()V
+HSPLandroid/view/textclassifier/TextClassificationConstants;->isSmartSelectionAnimationEnabled()Z
 HSPLandroid/view/textclassifier/TextClassificationManager$SettingsObserver;-><init>(Landroid/view/textclassifier/TextClassificationManager;)V
-HSPLandroid/view/textclassifier/TextClassificationManager$SettingsObserver;->onChange(Z)V
+HPLandroid/view/textclassifier/TextClassificationManager$SettingsObserver;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
 HSPLandroid/view/textclassifier/TextClassificationManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/view/textclassifier/TextClassificationManager;->finalize()V
-HSPLandroid/view/textclassifier/TextClassificationManager;->getLocalTextClassifier()Landroid/view/textclassifier/TextClassifier;
 HSPLandroid/view/textclassifier/TextClassificationManager;->getSettings()Landroid/view/textclassifier/TextClassificationConstants;
 HSPLandroid/view/textclassifier/TextClassificationManager;->getSettings(Landroid/content/Context;)Landroid/view/textclassifier/TextClassificationConstants;
-HSPLandroid/view/textclassifier/TextClassificationManager;->getSystemTextClassifier()Landroid/view/textclassifier/TextClassifier;
-HSPLandroid/view/textclassifier/TextClassificationManager;->getTextClassifier()Landroid/view/textclassifier/TextClassifier;
-HSPLandroid/view/textclassifier/TextClassificationManager;->invalidate()V
-HSPLandroid/view/textclassifier/TextClassifier$1;-><init>()V
-HSPLandroid/view/textclassifier/TextClassifier$EntityConfig$1;-><init>()V
-PLandroid/view/textclassifier/TextClassifier$EntityConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/TextClassifier$EntityConfig;
-PLandroid/view/textclassifier/TextClassifier$EntityConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/textclassifier/TextClassifier$EntityConfig$Builder;-><init>()V
-HSPLandroid/view/textclassifier/TextClassifier$EntityConfig$Builder;->build()Landroid/view/textclassifier/TextClassifier$EntityConfig;
-HPLandroid/view/textclassifier/TextClassifier$EntityConfig;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/textclassifier/TextClassifier$EntityConfig;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/view/textclassifier/TextClassifierEvent$1;-><init>()V
-PLandroid/view/textclassifier/TextClassifierEvent$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/TextClassifierEvent;
-PLandroid/view/textclassifier/TextClassifierEvent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;-><init>(II)V
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;->build()Landroid/view/textclassifier/TextClassifierEvent;
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;->setEntityTypes([Ljava/lang/String;)Landroid/view/textclassifier/TextClassifierEvent$Builder;
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;->setEventContext(Landroid/view/textclassifier/TextClassificationContext;)Landroid/view/textclassifier/TextClassifierEvent$Builder;
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;->setEventTime(J)Landroid/view/textclassifier/TextClassifierEvent$Builder;
-PLandroid/view/textclassifier/TextClassifierEvent$Builder;->setResultId(Ljava/lang/String;)Landroid/view/textclassifier/TextClassifierEvent$Builder;
-PLandroid/view/textclassifier/TextClassifierEvent;-><init>(II[Ljava/lang/String;Landroid/view/textclassifier/TextClassificationContext;Ljava/lang/String;IJLandroid/os/Bundle;IIII[ILjava/lang/String;FLjava/lang/String;)V
-HPLandroid/view/textclassifier/TextClassifierEvent;->readFromParcel(Landroid/os/Parcel;)Landroid/view/textclassifier/TextClassifierEvent;
-HPLandroid/view/textclassifier/TextClassifierEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/textclassifier/TextClassifierImpl;-><init>(Landroid/content/Context;Landroid/view/textclassifier/TextClassificationConstants;Landroid/view/textclassifier/TextClassifier;)V
-HPLandroid/view/textclassifier/TextClassifierImpl;->createConversationActionResult(Landroid/view/textclassifier/ConversationActions$Request;[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestion;)Landroid/view/textclassifier/ConversationActions;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->detectLanguage(Landroid/view/textclassifier/TextLanguage$Request;)Landroid/view/textclassifier/TextLanguage;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->detectLanguageTagsFromText(Ljava/lang/CharSequence;)Ljava/lang/String;
-HPLandroid/view/textclassifier/TextClassifierImpl;->getActionsImpl()Lcom/google/android/textclassifier/ActionsSuggestionsModel;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->getAnnotatorImpl(Landroid/os/LocaleList;)Lcom/google/android/textclassifier/AnnotatorModel;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->getLangIdImpl()Lcom/google/android/textclassifier/LangIdModel;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->getLangIdThreshold()F
-HSPLandroid/view/textclassifier/TextClassifierImpl;->getResourceLocalesString()Ljava/lang/String;
-HSPLandroid/view/textclassifier/TextClassifierImpl;->maybeCloseAndLogError(Landroid/os/ParcelFileDescriptor;)V
-HPLandroid/view/textclassifier/TextClassifierImpl;->resolveActionTypesFromRequest(Landroid/view/textclassifier/ConversationActions$Request;)Ljava/util/Collection;
-HPLandroid/view/textclassifier/TextClassifierImpl;->suggestConversationActions(Landroid/view/textclassifier/ConversationActions$Request;)Landroid/view/textclassifier/ConversationActions;
-HSPLandroid/view/textclassifier/TextLanguage$1;-><init>()V
-HSPLandroid/view/textclassifier/TextLanguage$Builder;-><init>()V
-HSPLandroid/view/textclassifier/TextLanguage$Builder;->build()Landroid/view/textclassifier/TextLanguage;
-HSPLandroid/view/textclassifier/TextLanguage$Builder;->putLocale(Landroid/icu/util/ULocale;F)Landroid/view/textclassifier/TextLanguage$Builder;
-HSPLandroid/view/textclassifier/TextLanguage$Request$1;-><init>()V
-HSPLandroid/view/textclassifier/TextSelection$1;-><init>()V
-PLandroid/view/textclassifier/intent/-$$Lambda$LabeledIntent$LaL7EfxShgNu4lrdo3mv85g49Jg;-><init>()V
-PLandroid/view/textclassifier/intent/LabeledIntent;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/Intent;I)V
-PLandroid/view/textclassifier/intent/LabeledIntent;->resolve(Landroid/content/Context;Landroid/view/textclassifier/intent/LabeledIntent$TitleChooser;Landroid/os/Bundle;)Landroid/view/textclassifier/intent/LabeledIntent$Result;
-HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->create([Lcom/google/android/textclassifier/RemoteActionTemplate;)Ljava/util/List;
-HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->createIntent(Lcom/google/android/textclassifier/RemoteActionTemplate;)Landroid/content/Intent;
-HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->isValidTemplate(Lcom/google/android/textclassifier/RemoteActionTemplate;)Z
-HPLandroid/view/textclassifier/intent/TemplateIntentFactory;->nameVariantsToBundle([Lcom/google/android/textclassifier/NamedVariant;)Landroid/os/Bundle;
-HSPLandroid/view/textservice/SpellCheckerInfo$1;-><init>()V
-HSPLandroid/view/textservice/SpellCheckerInfo;-><init>(Landroid/content/Context;Landroid/content/pm/ResolveInfo;)V
-HPLandroid/view/textservice/SpellCheckerInfo;->getComponent()Landroid/content/ComponentName;
-HPLandroid/view/textservice/SpellCheckerInfo;->getPackageName()Ljava/lang/String;
-HSPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeAt(I)Landroid/view/textservice/SpellCheckerSubtype;
-HSPLandroid/view/textservice/SpellCheckerInfo;->getSubtypeCount()I
-HSPLandroid/view/textservice/SpellCheckerSubtype$1;-><init>()V
-HSPLandroid/view/textservice/SpellCheckerSubtype$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/textservice/SpellCheckerSubtype;
-HSPLandroid/view/textservice/SpellCheckerSubtype$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/textservice/SpellCheckerSubtype;-><init>(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-HSPLandroid/view/textservice/SpellCheckerSubtype;-><init>(Landroid/os/Parcel;)V
-HPLandroid/view/textservice/SpellCheckerSubtype;->getLocaleObject()Ljava/util/Locale;
-HPLandroid/view/textservice/SpellCheckerSubtype;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/view/textservice/SpellCheckerSubtype;->getLocaleObject()Ljava/util/Locale;
+HSPLandroid/view/textservice/SpellCheckerSubtype;->hashCodeInternal(Ljava/lang/String;Ljava/lang/String;)I
+HSPLandroid/view/textservice/TextServicesManager;-><init>(I)V
 HSPLandroid/view/textservice/TextServicesManager;->createInstance(Landroid/content/Context;)Landroid/view/textservice/TextServicesManager;
-HSPLandroid/view/textservice/TextServicesManager;->getCurrentSpellCheckerSubtype(Z)Landroid/view/textservice/SpellCheckerSubtype;
-HSPLandroid/webkit/-$$Lambda$xYTrYQCPf1HcdlWzDof3mq93ihs;-><init>()V
-HSPLandroid/webkit/-$$Lambda$xYTrYQCPf1HcdlWzDof3mq93ihs;->run()V
-HSPLandroid/webkit/ConsoleMessage$MessageLevel;-><init>(Ljava/lang/String;I)V
-HSPLandroid/webkit/CookieManager;->getInstance()Landroid/webkit/CookieManager;
-HSPLandroid/webkit/CookieSyncManager;->checkInstanceIsAllowed()V
-HSPLandroid/webkit/CookieSyncManager;->createInstance(Landroid/content/Context;)Landroid/webkit/CookieSyncManager;
-HSPLandroid/webkit/CookieSyncManager;->getInstance()Landroid/webkit/CookieSyncManager;
+HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->isMultiProcessEnabled()Z
 HSPLandroid/webkit/IWebViewUpdateService$Stub$Proxy;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
-HSPLandroid/webkit/IWebViewUpdateService$Stub;-><init>()V
-HSPLandroid/webkit/IWebViewUpdateService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/webkit/URLUtil;->isValidUrl(Ljava/lang/String;)Z
-HSPLandroid/webkit/UserPackage;->getPackageInfo()Landroid/content/pm/PackageInfo;
-HSPLandroid/webkit/UserPackage;->getPackageInfosAllUsers(Landroid/content/Context;Ljava/lang/String;I)Ljava/util/List;
-HSPLandroid/webkit/UserPackage;->hasCorrectTargetSdkVersion(Landroid/content/pm/PackageInfo;)Z
-HSPLandroid/webkit/UserPackage;->isEnabledPackage()Z
-HSPLandroid/webkit/UserPackage;->isInstalledPackage()Z
+HSPLandroid/webkit/IWebViewUpdateService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/webkit/IWebViewUpdateService;
+HSPLandroid/webkit/WebViewDelegate;-><init>()V
 HSPLandroid/webkit/WebViewDelegate;->getApplication()Landroid/app/Application;
 HSPLandroid/webkit/WebViewDelegate;->getDataDirectorySuffix()Ljava/lang/String;
 HSPLandroid/webkit/WebViewDelegate;->getPackageId(Landroid/content/res/Resources;Ljava/lang/String;)I
 HSPLandroid/webkit/WebViewDelegate;->isMultiProcessEnabled()Z
-HSPLandroid/webkit/WebViewFactory;->fixupStubApplicationInfo(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManager;)V
 HSPLandroid/webkit/WebViewFactory;->getDataDirectorySuffix()Ljava/lang/String;
 HSPLandroid/webkit/WebViewFactory;->getLoadedPackageInfo()Landroid/content/pm/PackageInfo;
 HSPLandroid/webkit/WebViewFactory;->getProvider()Landroid/webkit/WebViewFactoryProvider;
 HSPLandroid/webkit/WebViewFactory;->getProviderClass()Ljava/lang/Class;
+HSPLandroid/webkit/WebViewFactory;->getUpdateService()Landroid/webkit/IWebViewUpdateService;
+HSPLandroid/webkit/WebViewFactory;->getUpdateServiceUnchecked()Landroid/webkit/IWebViewUpdateService;
 HSPLandroid/webkit/WebViewFactory;->getWebViewContextAndSetProvider()Landroid/content/Context;
 HSPLandroid/webkit/WebViewFactory;->getWebViewLibrary(Landroid/content/pm/ApplicationInfo;)Ljava/lang/String;
-HSPLandroid/webkit/WebViewFactory;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)I
+HSPLandroid/webkit/WebViewFactory;->getWebViewProviderClass(Ljava/lang/ClassLoader;)Ljava/lang/Class;
+HSPLandroid/webkit/WebViewFactory;->isWebViewSupported()Z
 HSPLandroid/webkit/WebViewFactory;->prepareWebViewInZygote()V
 HSPLandroid/webkit/WebViewFactory;->signaturesEquals([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)Z
 HSPLandroid/webkit/WebViewFactory;->verifyPackageInfo(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;)V
-HSPLandroid/webkit/WebViewLibraryLoader;->createRelroFile(ZLjava/lang/String;Ljava/lang/String;)V
 HSPLandroid/webkit/WebViewLibraryLoader;->loadNativeLibrary(Ljava/lang/ClassLoader;Ljava/lang/String;)I
 HSPLandroid/webkit/WebViewLibraryLoader;->reserveAddressSpaceInZygote()V
-HSPLandroid/webkit/WebViewProviderInfo$1;-><init>()V
-HSPLandroid/webkit/WebViewProviderInfo;-><init>(Ljava/lang/String;Ljava/lang/String;ZZ[Ljava/lang/String;)V
-HSPLandroid/webkit/WebViewProviderResponse$1;-><init>()V
 HSPLandroid/webkit/WebViewProviderResponse$1;->createFromParcel(Landroid/os/Parcel;)Landroid/webkit/WebViewProviderResponse;
 HSPLandroid/webkit/WebViewProviderResponse$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/webkit/WebViewZygote;->connectToZygoteIfNeededLocked()V
-HPLandroid/webkit/WebViewZygote;->getPackageName()Ljava/lang/String;
-HSPLandroid/webkit/WebViewZygote;->getProcess()Landroid/os/ZygoteProcess;
-HPLandroid/webkit/WebViewZygote;->isMultiprocessEnabled()Z
-HSPLandroid/webkit/WebViewZygote;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;Landroid/content/pm/ApplicationInfo;)V
-HSPLandroid/webkit/WebViewZygote;->setMultiprocessEnabled(Z)V
-HSPLandroid/widget/-$$Lambda$RemoteViews$xYCMzfQwRCAW2azHo-bWqQ9R0Wk;-><init>()V
-HSPLandroid/widget/-$$Lambda$SmartSelectSprite$c8eqlh2kO_X0luLU2BexwK921WA;-><init>()V
-HSPLandroid/widget/-$$Lambda$SmartSelectSprite$mdkXIT1_UNlJQMaziE_E815aIKE;-><init>()V
+HSPLandroid/webkit/WebViewProviderResponse;-><init>(Landroid/os/Parcel;)V
+HSPLandroid/webkit/WebViewProviderResponse;-><init>(Landroid/os/Parcel;Landroid/webkit/WebViewProviderResponse$1;)V
+HSPLandroid/widget/-$$Lambda$IfzAW5fP9thoftErKAjo9SLZufw;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/-$$Lambda$yIdmBO6ZxaY03PGN08RySVVQXuE;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/AbsListView$AdapterDataSetObserver;-><init>(Landroid/widget/AbsListView;)V
 HSPLandroid/widget/AbsListView$AdapterDataSetObserver;->onChanged()V
-HSPLandroid/widget/AbsListView$RecycleBin;->addScrapView(Landroid/view/View;I)V
+HSPLandroid/widget/AbsListView$RecycleBin;-><init>(Landroid/widget/AbsListView;)V
 HSPLandroid/widget/AbsListView$RecycleBin;->clear()V
 HSPLandroid/widget/AbsListView$RecycleBin;->clearTransientStateViews()V
-HSPLandroid/widget/AbsListView$RecycleBin;->fillActiveViews(II)V
-HSPLandroid/widget/AbsListView$RecycleBin;->getActiveView(I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->getScrapView(I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->getTransientStateView(I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->markChildrenDirty()V
@@ -18425,52 +13826,31 @@
 HSPLandroid/widget/AbsListView$RecycleBin;->retrieveFromScrap(Ljava/util/ArrayList;I)Landroid/view/View;
 HSPLandroid/widget/AbsListView$RecycleBin;->scrapActiveViews()V
 HSPLandroid/widget/AbsListView$RecycleBin;->setViewTypeCount(I)V
-HSPLandroid/widget/AbsListView$RecycleBin;->shouldRecycleViewType(I)Z
-HSPLandroid/widget/AbsListView$SavedState$1;-><init>()V
-HSPLandroid/widget/AbsListView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/widget/AbsListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/AbsListView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/AbsListView;->clearChoices()V
-HSPLandroid/widget/AbsListView;->computeVerticalScrollExtent()I
-HSPLandroid/widget/AbsListView;->computeVerticalScrollOffset()I
-HSPLandroid/widget/AbsListView;->computeVerticalScrollRange()I
-HSPLandroid/widget/AbsListView;->dispatchDraw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/AbsListView;->dispatchSetPressed(Z)V
-HSPLandroid/widget/AbsListView;->draw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/AbsListView;->dismissPopup()V
 HSPLandroid/widget/AbsListView;->drawableStateChanged()V
-HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
-HSPLandroid/widget/AbsListView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/AbsListView$LayoutParams;
-HSPLandroid/widget/AbsListView;->getVerticalScrollbarWidth()I
 HSPLandroid/widget/AbsListView;->handleBoundsChange()V
-HSPLandroid/widget/AbsListView;->handleDataChanged()V
-HSPLandroid/widget/AbsListView;->handleScrollBarDragging(Landroid/view/MotionEvent;)Z
 HSPLandroid/widget/AbsListView;->hideSelector()V
 HSPLandroid/widget/AbsListView;->initAbsListView()V
 HSPLandroid/widget/AbsListView;->internalSetPadding(IIII)V
 HSPLandroid/widget/AbsListView;->invokeOnItemScrollListener()V
-HSPLandroid/widget/AbsListView;->isFastScrollEnabled()Z
 HSPLandroid/widget/AbsListView;->isInFilterMode()Z
-HSPLandroid/widget/AbsListView;->isVerticalScrollBarHidden()Z
 HSPLandroid/widget/AbsListView;->jumpDrawablesToCurrentState()V
+HSPLandroid/widget/AbsListView;->layoutChildren()V
 HSPLandroid/widget/AbsListView;->obtainView(I[Z)Landroid/view/View;
 HSPLandroid/widget/AbsListView;->onAttachedToWindow()V
-HSPLandroid/widget/AbsListView;->onDetachedFromWindow()V
-HSPLandroid/widget/AbsListView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/widget/AbsListView;->onLayout(ZIIII)V
 HSPLandroid/widget/AbsListView;->onMeasure(II)V
 HSPLandroid/widget/AbsListView;->onRtlPropertiesChanged(I)V
-HSPLandroid/widget/AbsListView;->onSaveInstanceState()Landroid/os/Parcelable;
-HSPLandroid/widget/AbsListView;->onTouchDown(Landroid/view/MotionEvent;)V
-HSPLandroid/widget/AbsListView;->onTouchEvent(Landroid/view/MotionEvent;)Z
+HSPLandroid/widget/AbsListView;->onSizeChanged(IIII)V
 HSPLandroid/widget/AbsListView;->onTouchModeChanged(Z)V
-HSPLandroid/widget/AbsListView;->onTouchUp(Landroid/view/MotionEvent;)V
 HSPLandroid/widget/AbsListView;->onWindowFocusChanged(Z)V
-HSPLandroid/widget/AbsListView;->pointToPosition(II)I
-HSPLandroid/widget/AbsListView;->positionSelector(ILandroid/view/View;)V
-HSPLandroid/widget/AbsListView;->positionSelector(ILandroid/view/View;ZFF)V
 HSPLandroid/widget/AbsListView;->requestLayout()V
 HSPLandroid/widget/AbsListView;->resetList()V
 HSPLandroid/widget/AbsListView;->setAdapter(Landroid/widget/ListAdapter;)V
+HSPLandroid/widget/AbsListView;->setCacheColorHint(I)V
 HSPLandroid/widget/AbsListView;->setChoiceMode(I)V
 HSPLandroid/widget/AbsListView;->setFastScrollAlwaysVisible(Z)V
 HSPLandroid/widget/AbsListView;->setFastScrollEnabled(Z)V
@@ -18489,233 +13869,136 @@
 HSPLandroid/widget/AbsListView;->updateScrollIndicators()V
 HSPLandroid/widget/AbsListView;->updateSelectorState()V
 HSPLandroid/widget/AbsListView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
-HSPLandroid/widget/AbsSeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/AbsSeekBar;->applyThumbTint()V
-HSPLandroid/widget/AbsSeekBar;->applyTickMarkTint()V
-HSPLandroid/widget/AbsSeekBar;->drawThumb(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/AbsSeekBar;->drawTickMarks(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/AbsSeekBar;->drawTrack(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/AbsSeekBar;->drawableStateChanged()V
-HSPLandroid/widget/AbsSeekBar;->getThumbOffset()I
-HSPLandroid/widget/AbsSeekBar;->jumpDrawablesToCurrentState()V
-HSPLandroid/widget/AbsSeekBar;->onDraw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/AbsSeekBar;->onMeasure(II)V
-HSPLandroid/widget/AbsSeekBar;->onResolveDrawables(I)V
-HSPLandroid/widget/AbsSeekBar;->onRtlPropertiesChanged(I)V
-HSPLandroid/widget/AbsSeekBar;->onSizeChanged(IIII)V
-HSPLandroid/widget/AbsSeekBar;->onVisualProgressChanged(IF)V
-HSPLandroid/widget/AbsSeekBar;->setKeyProgressIncrement(I)V
-HSPLandroid/widget/AbsSeekBar;->setMax(I)V
-HSPLandroid/widget/AbsSeekBar;->setMin(I)V
-HSPLandroid/widget/AbsSeekBar;->setThumb(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/AbsSeekBar;->setThumbOffset(I)V
-HSPLandroid/widget/AbsSeekBar;->setThumbPos(ILandroid/graphics/drawable/Drawable;FI)V
-HSPLandroid/widget/AbsSeekBar;->setTickMark(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/AbsSeekBar;->updateThumbAndTrackPos(II)V
-HSPLandroid/widget/AbsSeekBar;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
-HSPLandroid/widget/ActionMenuPresenter$2;->onViewDetachedFromWindow(Landroid/view/View;)V
-HSPLandroid/widget/ActionMenuPresenter;-><init>(Landroid/content/Context;)V
-HSPLandroid/widget/ActionMenuPresenter;->bindItemView(Lcom/android/internal/view/menu/MenuItemImpl;Lcom/android/internal/view/menu/MenuView$ItemView;)V
-HSPLandroid/widget/ActionMenuPresenter;->dismissPopupMenus()Z
-HSPLandroid/widget/ActionMenuPresenter;->flagActionItems()Z
-HSPLandroid/widget/ActionMenuPresenter;->getItemView(Lcom/android/internal/view/menu/MenuItemImpl;Landroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;
-HSPLandroid/widget/ActionMenuPresenter;->hideOverflowMenu()Z
-HSPLandroid/widget/ActionMenuPresenter;->hideSubMenus()Z
-HSPLandroid/widget/ActionMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V
-HSPLandroid/widget/ActionMenuPresenter;->isOverflowMenuShowing()Z
-HSPLandroid/widget/ActionMenuPresenter;->setExpandedActionViewsExclusive(Z)V
-HSPLandroid/widget/ActionMenuPresenter;->setMenuView(Landroid/widget/ActionMenuView;)V
-HSPLandroid/widget/ActionMenuPresenter;->setReserveOverflow(Z)V
-HSPLandroid/widget/ActionMenuPresenter;->shouldIncludeItem(ILcom/android/internal/view/menu/MenuItemImpl;)Z
-HSPLandroid/widget/ActionMenuPresenter;->updateMenuView(Z)V
-HSPLandroid/widget/ActionMenuView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/ActionMenuView;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
-HSPLandroid/widget/ActionMenuView;->dismissPopupMenus()V
-HSPLandroid/widget/ActionMenuView;->generateDefaultLayoutParams()Landroid/widget/ActionMenuView$LayoutParams;
-HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
-HSPLandroid/widget/ActionMenuView;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/ActionMenuView$LayoutParams;
-HSPLandroid/widget/ActionMenuView;->generateOverflowButtonLayoutParams()Landroid/widget/ActionMenuView$LayoutParams;
-HSPLandroid/widget/ActionMenuView;->getMenu()Landroid/view/Menu;
-HSPLandroid/widget/ActionMenuView;->hasDividerBeforeChildAt(I)Z
-HSPLandroid/widget/ActionMenuView;->initialize(Lcom/android/internal/view/menu/MenuBuilder;)V
-HSPLandroid/widget/ActionMenuView;->isOverflowMenuShowing()Z
-HSPLandroid/widget/ActionMenuView;->onDetachedFromWindow()V
-HSPLandroid/widget/ActionMenuView;->onLayout(ZIIII)V
-HSPLandroid/widget/ActionMenuView;->onMeasure(II)V
-HSPLandroid/widget/ActionMenuView;->peekMenu()Lcom/android/internal/view/menu/MenuBuilder;
-HSPLandroid/widget/ActionMenuView;->setExpandedActionViewsExclusive(Z)V
-HSPLandroid/widget/ActionMenuView;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V
-HSPLandroid/widget/ActionMenuView;->setOnMenuItemClickListener(Landroid/widget/ActionMenuView$OnMenuItemClickListener;)V
-HSPLandroid/widget/ActionMenuView;->setOverflowReserved(Z)V
-HSPLandroid/widget/ActionMenuView;->setPopupTheme(I)V
+HSPLandroid/widget/AdapterView$AdapterDataSetObserver;-><init>(Landroid/widget/AdapterView;)V
 HSPLandroid/widget/AdapterView$AdapterDataSetObserver;->onChanged()V
 HSPLandroid/widget/AdapterView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/AdapterView;->checkFocus()V
 HSPLandroid/widget/AdapterView;->checkSelectionChanged()V
-HSPLandroid/widget/AdapterView;->dispatchSaveInstanceState(Landroid/util/SparseArray;)V
 HSPLandroid/widget/AdapterView;->getItemIdAtPosition(I)J
-HSPLandroid/widget/AdapterView;->getSelectedItemId()J
+HSPLandroid/widget/AdapterView;->onLayout(ZIIII)V
 HSPLandroid/widget/AdapterView;->rememberSyncState()V
 HSPLandroid/widget/AdapterView;->setFocusableInTouchMode(Z)V
 HSPLandroid/widget/AdapterView;->setNextSelectedPositionInt(I)V
 HSPLandroid/widget/AdapterView;->setOnItemClickListener(Landroid/widget/AdapterView$OnItemClickListener;)V
 HSPLandroid/widget/AdapterView;->setSelectedPositionInt(I)V
-HSPLandroid/widget/ArrayAdapter;-><init>(Landroid/content/Context;I)V
-HSPLandroid/widget/ArrayAdapter;-><init>(Landroid/content/Context;IILjava/util/List;Z)V
 HSPLandroid/widget/BaseAdapter;-><init>()V
 HSPLandroid/widget/BaseAdapter;->areAllItemsEnabled()Z
-HSPLandroid/widget/BaseAdapter;->getItemViewType(I)I
-HSPLandroid/widget/BaseAdapter;->getViewTypeCount()I
 HSPLandroid/widget/BaseAdapter;->hasStableIds()Z
-HSPLandroid/widget/BaseAdapter;->isEnabled(I)Z
 HSPLandroid/widget/BaseAdapter;->notifyDataSetChanged()V
 HSPLandroid/widget/BaseAdapter;->registerDataSetObserver(Landroid/database/DataSetObserver;)V
-HSPLandroid/widget/BaseAdapter;->unregisterDataSetObserver(Landroid/database/DataSetObserver;)V
 HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/Button;->getAccessibilityClassName()Ljava/lang/CharSequence;
-HSPLandroid/widget/CheckBox;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/Chronometer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/Chronometer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/Chronometer;->onDetachedFromWindow()V
-HSPLandroid/widget/Chronometer;->onVisibilityChanged(Landroid/view/View;I)V
-HSPLandroid/widget/Chronometer;->onWindowVisibilityChanged(I)V
-HSPLandroid/widget/Chronometer;->setCountDown(Z)V
-HSPLandroid/widget/Chronometer;->setFormat(Ljava/lang/String;)V
-HSPLandroid/widget/Chronometer;->updateRunning()V
-HSPLandroid/widget/Chronometer;->updateText(J)V
+HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/CompoundButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/CompoundButton;->applyButtonTint()V
 HSPLandroid/widget/CompoundButton;->drawableStateChanged()V
 HSPLandroid/widget/CompoundButton;->getAutofillType()I
+HSPLandroid/widget/CompoundButton;->getButtonStateDescription()Ljava/lang/CharSequence;
 HSPLandroid/widget/CompoundButton;->getCompoundPaddingLeft()I
 HSPLandroid/widget/CompoundButton;->getCompoundPaddingRight()I
-HSPLandroid/widget/CompoundButton;->getHorizontalOffsetForDrawables()I
 HSPLandroid/widget/CompoundButton;->isChecked()Z
 HSPLandroid/widget/CompoundButton;->jumpDrawablesToCurrentState()V
 HSPLandroid/widget/CompoundButton;->onCreateDrawableState(I)[I
-HSPLandroid/widget/CompoundButton;->onDraw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/CompoundButton;->onResolveDrawables(I)V
-HSPLandroid/widget/CompoundButton;->setButtonDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/CompoundButton;->setChecked(Z)V
+HSPLandroid/widget/CompoundButton;->setDefaultStateDescritption()V
 HSPLandroid/widget/CompoundButton;->setOnCheckedChangeListener(Landroid/widget/CompoundButton$OnCheckedChangeListener;)V
 HSPLandroid/widget/CompoundButton;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/EdgeEffect;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/EdgeEffect;->draw(Landroid/graphics/Canvas;)Z
-HSPLandroid/widget/EdgeEffect;->finish()V
 HSPLandroid/widget/EdgeEffect;->isFinished()Z
-HSPLandroid/widget/EdgeEffect;->onAbsorb(I)V
-HSPLandroid/widget/EdgeEffect;->onPull(FF)V
 HSPLandroid/widget/EdgeEffect;->onRelease()V
 HSPLandroid/widget/EdgeEffect;->setSize(II)V
 HSPLandroid/widget/EdgeEffect;->update()V
 HSPLandroid/widget/EditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/EditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroid/widget/EditText;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/EditText;->getDefaultEditable()Z
 HSPLandroid/widget/EditText;->getDefaultMovementMethod()Landroid/text/method/MovementMethod;
-HSPLandroid/widget/EditText;->getFreezesText()Z
 HSPLandroid/widget/EditText;->getText()Landroid/text/Editable;
 HSPLandroid/widget/EditText;->getText()Ljava/lang/CharSequence;
-HSPLandroid/widget/EditText;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V
 HSPLandroid/widget/EditText;->setText(Ljava/lang/CharSequence;Landroid/widget/TextView$BufferType;)V
 HSPLandroid/widget/EditText;->supportsAutoSizeText()Z
-HSPLandroid/widget/Editor$1;->run()V
+HSPLandroid/widget/Editor$1;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$2;-><init>(Landroid/widget/Editor;)V
 HSPLandroid/widget/Editor$2;->onDraw()V
-HSPLandroid/widget/Editor$Blink;->cancel()V
-HSPLandroid/widget/Editor$Blink;->run()V
-HSPLandroid/widget/Editor$Blink;->uncancel()V
+HSPLandroid/widget/Editor$3;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$5;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;-><init>(Landroid/widget/Editor;Landroid/widget/Editor$1;)V
 HSPLandroid/widget/Editor$CursorAnchorInfoNotifier;->updatePosition(IIZZ)V
-HSPLandroid/widget/Editor$EditOperation$1;-><init>()V
-HSPLandroid/widget/Editor$EditOperation;-><init>(Landroid/widget/Editor;Ljava/lang/String;ILjava/lang/String;Z)V
-HSPLandroid/widget/Editor$EditOperation;->commit()V
-HSPLandroid/widget/Editor$EditOperation;->mergeInsertWith(Landroid/widget/Editor$EditOperation;)Z
-HSPLandroid/widget/Editor$InsertionPointCursorController;->hide()V
-HSPLandroid/widget/Editor$InsertionPointCursorController;->invalidateHandle()V
-HSPLandroid/widget/Editor$InsertionPointCursorController;->isActive()Z
-HSPLandroid/widget/Editor$InsertionPointCursorController;->isCursorBeingModified()Z
-HSPLandroid/widget/Editor$InsertionPointCursorController;->onDetached()V
-HSPLandroid/widget/Editor$MagnifierMotionAnimator;-><init>(Landroid/widget/Magnifier;)V
+HSPLandroid/widget/Editor$InputContentType;-><init>()V
+HSPLandroid/widget/Editor$PositionListener;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$PositionListener;-><init>(Landroid/widget/Editor;Landroid/widget/Editor$1;)V
 HSPLandroid/widget/Editor$PositionListener;->addSubscriber(Landroid/widget/Editor$TextViewPositionListener;Z)V
 HSPLandroid/widget/Editor$PositionListener;->onPreDraw()Z
-HSPLandroid/widget/Editor$PositionListener;->onScrollChanged()V
 HSPLandroid/widget/Editor$PositionListener;->removeSubscriber(Landroid/widget/Editor$TextViewPositionListener;)V
 HSPLandroid/widget/Editor$PositionListener;->updatePosition()V
 HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;-><init>(Landroid/widget/Editor;)V
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->invalidateHandles()V
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->isCursorBeingModified()Z
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->isDragAcceleratorActive()Z
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->isSelectionStartDragged()Z
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->onDetached()V
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->resetDragAcceleratorState()V
-HSPLandroid/widget/Editor$SelectionModifierCursorController;->resetTouchOffsets()V
+HSPLandroid/widget/Editor$ProcessTextIntentActionsHandler;-><init>(Landroid/widget/Editor;Landroid/widget/Editor$1;)V
+HSPLandroid/widget/Editor$SpanController;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$SpanController;-><init>(Landroid/widget/Editor;Landroid/widget/Editor$1;)V
 HSPLandroid/widget/Editor$SpanController;->hide()V
+HSPLandroid/widget/Editor$SpanController;->isNonIntermediateSelectionSpan(Landroid/text/Spannable;Ljava/lang/Object;)Z
 HSPLandroid/widget/Editor$SpanController;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/widget/Editor$SpanController;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V
 HSPLandroid/widget/Editor$SpanController;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V
+HSPLandroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;-><init>(Landroid/widget/Editor$SuggestionHelper;)V
+HSPLandroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;-><init>(Landroid/widget/Editor$SuggestionHelper;Landroid/widget/Editor$1;)V
+HSPLandroid/widget/Editor$SuggestionHelper;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor$SuggestionHelper;-><init>(Landroid/widget/Editor;Landroid/widget/Editor$1;)V
 HSPLandroid/widget/Editor$TextRenderNode;->needsRecord()Z
-HSPLandroid/widget/Editor$UndoInputFilter;->beginBatchEdit()V
-HSPLandroid/widget/Editor$UndoInputFilter;->canUndoEdit(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Z
-HSPLandroid/widget/Editor$UndoInputFilter;->endBatchEdit()V
-HSPLandroid/widget/Editor$UndoInputFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;
-HSPLandroid/widget/Editor$UndoInputFilter;->handleEdit(Ljava/lang/CharSequence;IILandroid/text/Spanned;IIZ)V
-HSPLandroid/widget/Editor$UndoInputFilter;->recordEdit(Landroid/widget/Editor$EditOperation;I)V
-HSPLandroid/widget/Editor$UndoInputFilter;->saveInstanceState(Landroid/os/Parcel;)V
+HSPLandroid/widget/Editor$UndoInputFilter;-><init>(Landroid/widget/Editor;)V
 HSPLandroid/widget/Editor;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/Editor;->access$000(Landroid/widget/Editor;)Landroid/widget/Editor$MagnifierMotionAnimator;
+HSPLandroid/widget/Editor;->access$1600(Landroid/widget/Editor;)V
+HSPLandroid/widget/Editor;->access$300(Landroid/widget/Editor;)Landroid/widget/TextView;
 HSPLandroid/widget/Editor;->addSpanWatchers(Landroid/text/Spannable;)V
 HSPLandroid/widget/Editor;->adjustInputType(ZZZZ)V
-HSPLandroid/widget/Editor;->beginBatchEdit()V
-HSPLandroid/widget/Editor;->clampHorizontalPosition(Landroid/graphics/drawable/Drawable;F)I
 HSPLandroid/widget/Editor;->createInputContentTypeIfNeeded()V
-HSPLandroid/widget/Editor;->createInputMethodStateIfNeeded()V
 HSPLandroid/widget/Editor;->discardTextDisplayLists()V
-HSPLandroid/widget/Editor;->downgradeEasyCorrectionSpans()V
 HSPLandroid/widget/Editor;->drawHardwareAccelerated(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
 HSPLandroid/widget/Editor;->drawHardwareAcceleratedInner(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I[I[IIII)I
-HSPLandroid/widget/Editor;->endBatchEdit()V
 HSPLandroid/widget/Editor;->ensureEndedBatchEdit()V
 HSPLandroid/widget/Editor;->ensureNoSelectionIfNonSelectable()V
-HSPLandroid/widget/Editor;->finishBatchEdit(Landroid/widget/Editor$InputMethodState;)V
+HSPLandroid/widget/Editor;->extractedTextModeWillBeStarted()Z
 HSPLandroid/widget/Editor;->forgetUndoRedo()V
 HSPLandroid/widget/Editor;->getAvailableDisplayListIndex([III)I
-HSPLandroid/widget/Editor;->getLastTapPosition()I
+HSPLandroid/widget/Editor;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager;
+HSPLandroid/widget/Editor;->getInsertionController()Landroid/widget/Editor$InsertionPointCursorController;
+HSPLandroid/widget/Editor;->getPositionListener()Landroid/widget/Editor$PositionListener;
+HSPLandroid/widget/Editor;->getSelectionActionModeHelper()Landroid/widget/SelectionActionModeHelper;
 HSPLandroid/widget/Editor;->getSelectionController()Landroid/widget/Editor$SelectionModifierCursorController;
 HSPLandroid/widget/Editor;->getTextActionMode()Landroid/view/ActionMode;
 HSPLandroid/widget/Editor;->getTextView()Landroid/widget/TextView;
 HSPLandroid/widget/Editor;->hideCursorAndSpanControllers()V
+HSPLandroid/widget/Editor;->hideCursorControllers()V
 HSPLandroid/widget/Editor;->hideInsertionPointCursorController()V
-HSPLandroid/widget/Editor;->invalidateHandlesAndActionMode()V
+HSPLandroid/widget/Editor;->hideSpanControllers()V
 HSPLandroid/widget/Editor;->invalidateTextDisplayList()V
-HSPLandroid/widget/Editor;->invalidateTextDisplayList(Landroid/text/Layout;II)V
-HSPLandroid/widget/Editor;->loadCursorDrawable()V
+HSPLandroid/widget/Editor;->isCursorVisible()Z
 HSPLandroid/widget/Editor;->makeBlink()V
 HSPLandroid/widget/Editor;->onAttachedToWindow()V
 HSPLandroid/widget/Editor;->onDetachedFromWindow()V
 HSPLandroid/widget/Editor;->onDraw(Landroid/graphics/Canvas;Landroid/text/Layout;Landroid/graphics/Path;Landroid/graphics/Paint;I)V
-HSPLandroid/widget/Editor;->onFocusChanged(ZI)V
-HSPLandroid/widget/Editor;->onLocaleChanged()V
 HSPLandroid/widget/Editor;->onScreenStateChanged(I)V
-HSPLandroid/widget/Editor;->onScrollChanged()V
 HSPLandroid/widget/Editor;->onWindowFocusChanged(Z)V
 HSPLandroid/widget/Editor;->prepareCursorControllers()V
 HSPLandroid/widget/Editor;->refreshTextActionMode()V
-HSPLandroid/widget/Editor;->reportExtractedText()Z
-HSPLandroid/widget/Editor;->saveInstanceState()Landroid/os/ParcelableParcel;
+HSPLandroid/widget/Editor;->resumeBlink()V
 HSPLandroid/widget/Editor;->sendOnTextChanged(III)V
 HSPLandroid/widget/Editor;->sendUpdateSelection()V
 HSPLandroid/widget/Editor;->setFrame()V
 HSPLandroid/widget/Editor;->shouldBlink()Z
-HSPLandroid/widget/Editor;->shouldRenderCursor()Z
 HSPLandroid/widget/Editor;->stopTextActionMode()V
-HSPLandroid/widget/Editor;->updateCursorPosition()V
-HSPLandroid/widget/Editor;->updateCursorPosition(IIF)V
+HSPLandroid/widget/Editor;->stopTextActionModeWithPreservingSelection()V
+HSPLandroid/widget/Editor;->suspendBlink()V
 HSPLandroid/widget/Editor;->updateSpellCheckSpans(IIZ)V
-HSPLandroid/widget/ForwardingListener;-><init>(Landroid/view/View;)V
-HSPLandroid/widget/ForwardingListener;->onViewAttachedToWindow(Landroid/view/View;)V
-HSPLandroid/widget/ForwardingListener;->onViewDetachedFromWindow(Landroid/view/View;)V
+HSPLandroid/widget/EditorTouchState;-><init>()V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(III)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/widget/FrameLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/FrameLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
@@ -18727,137 +14010,37 @@
 HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/FrameLayout$LayoutParams;
 HSPLandroid/widget/FrameLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/FrameLayout;->getAccessibilityClassName()Ljava/lang/CharSequence;
+HSPLandroid/widget/FrameLayout;->getPaddingBottomWithForeground()I
 HSPLandroid/widget/FrameLayout;->getPaddingLeftWithForeground()I
 HSPLandroid/widget/FrameLayout;->getPaddingRightWithForeground()I
+HSPLandroid/widget/FrameLayout;->getPaddingTopWithForeground()I
 HSPLandroid/widget/FrameLayout;->layoutChildren(IIIIZ)V
 HSPLandroid/widget/FrameLayout;->onLayout(ZIIII)V
 HSPLandroid/widget/FrameLayout;->onMeasure(II)V
 HSPLandroid/widget/FrameLayout;->setForegroundGravity(I)V
-HSPLandroid/widget/FrameLayout;->setMeasureAllChildren(Z)V
 HSPLandroid/widget/FrameLayout;->shouldDelayChildPressedState()Z
-HSPLandroid/widget/GridLayout$1;-><init>()V
-HSPLandroid/widget/GridLayout$2;-><init>()V
-HSPLandroid/widget/GridLayout$3;-><init>()V
-HSPLandroid/widget/GridLayout$3;->getAlignmentValue(Landroid/view/View;II)I
-HSPLandroid/widget/GridLayout$3;->getGravityOffset(Landroid/view/View;I)I
-HSPLandroid/widget/GridLayout$4;-><init>()V
-HSPLandroid/widget/GridLayout$6;-><init>()V
-HSPLandroid/widget/GridLayout$7$1;->getOffset(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Alignment;IZ)I
-HSPLandroid/widget/GridLayout$7$1;->include(II)V
-HSPLandroid/widget/GridLayout$7$1;->reset()V
-HSPLandroid/widget/GridLayout$7$1;->size(Z)I
-HSPLandroid/widget/GridLayout$7;-><init>()V
-HSPLandroid/widget/GridLayout$7;->getAlignmentValue(Landroid/view/View;II)I
-HSPLandroid/widget/GridLayout$7;->getBounds()Landroid/widget/GridLayout$Bounds;
-HSPLandroid/widget/GridLayout$7;->getGravityOffset(Landroid/view/View;I)I
-HSPLandroid/widget/GridLayout$8;-><init>()V
-HSPLandroid/widget/GridLayout$8;->getAlignmentValue(Landroid/view/View;II)I
-HSPLandroid/widget/GridLayout$8;->getGravityOffset(Landroid/view/View;I)I
-HSPLandroid/widget/GridLayout$8;->getSizeInCell(Landroid/view/View;II)I
-HSPLandroid/widget/GridLayout$Alignment;->getBounds()Landroid/widget/GridLayout$Bounds;
-HSPLandroid/widget/GridLayout$Alignment;->getSizeInCell(Landroid/view/View;II)I
-HSPLandroid/widget/GridLayout$Assoc;->pack()Landroid/widget/GridLayout$PackedMap;
-HSPLandroid/widget/GridLayout$Axis$1;-><init>(Landroid/widget/GridLayout$Axis;[Landroid/widget/GridLayout$Arc;)V
-HSPLandroid/widget/GridLayout$Axis$1;->walk(I)V
-HSPLandroid/widget/GridLayout$Axis;-><init>(Landroid/widget/GridLayout;Z)V
-HSPLandroid/widget/GridLayout$Axis;->calculateMaxIndex()I
-HSPLandroid/widget/GridLayout$Axis;->computeGroupBounds()V
-HSPLandroid/widget/GridLayout$Axis;->computeHasWeights()Z
-HSPLandroid/widget/GridLayout$Axis;->computeLinks(Landroid/widget/GridLayout$PackedMap;Z)V
-HSPLandroid/widget/GridLayout$Axis;->computeLocations([I)V
-HSPLandroid/widget/GridLayout$Axis;->createArcs()[Landroid/widget/GridLayout$Arc;
-HSPLandroid/widget/GridLayout$Axis;->createGroupBounds()Landroid/widget/GridLayout$PackedMap;
-HSPLandroid/widget/GridLayout$Axis;->createLinks(Z)Landroid/widget/GridLayout$PackedMap;
-HSPLandroid/widget/GridLayout$Axis;->getGroupBounds()Landroid/widget/GridLayout$PackedMap;
-HSPLandroid/widget/GridLayout$Axis;->getLocations()[I
-HSPLandroid/widget/GridLayout$Axis;->getMeasure(I)I
-HSPLandroid/widget/GridLayout$Axis;->groupArcsByFirstVertex([Landroid/widget/GridLayout$Arc;)[[Landroid/widget/GridLayout$Arc;
-HSPLandroid/widget/GridLayout$Axis;->include(Ljava/util/List;Landroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$MutableInt;Z)V
-HSPLandroid/widget/GridLayout$Axis;->layout(I)V
-HSPLandroid/widget/GridLayout$Axis;->setCount(I)V
-HSPLandroid/widget/GridLayout$Axis;->solve([Landroid/widget/GridLayout$Arc;[IZ)Z
-HSPLandroid/widget/GridLayout$Bounds;->getOffset(Landroid/widget/GridLayout;Landroid/view/View;Landroid/widget/GridLayout$Alignment;IZ)I
-HSPLandroid/widget/GridLayout$Bounds;->include(II)V
-HSPLandroid/widget/GridLayout$Bounds;->reset()V
-HSPLandroid/widget/GridLayout$Bounds;->size(Z)I
-HSPLandroid/widget/GridLayout$Interval;-><init>(II)V
-HSPLandroid/widget/GridLayout$Interval;->equals(Ljava/lang/Object;)Z
-HSPLandroid/widget/GridLayout$Interval;->hashCode()I
-HSPLandroid/widget/GridLayout$Interval;->size()I
-HSPLandroid/widget/GridLayout$LayoutParams;->hashCode()I
-HSPLandroid/widget/GridLayout$LayoutParams;->init(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/GridLayout$LayoutParams;->reInitSuper(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/GridLayout$LayoutParams;->setBaseAttributes(Landroid/content/res/TypedArray;II)V
-HSPLandroid/widget/GridLayout$PackedMap;->compact([Ljava/lang/Object;[I)[Ljava/lang/Object;
-HSPLandroid/widget/GridLayout$PackedMap;->createIndex([Ljava/lang/Object;)[I
-HSPLandroid/widget/GridLayout$PackedMap;->getValue(I)Ljava/lang/Object;
-HSPLandroid/widget/GridLayout$Spec;-><init>(ZIILandroid/widget/GridLayout$Alignment;F)V
-HSPLandroid/widget/GridLayout$Spec;-><init>(ZLandroid/widget/GridLayout$Interval;Landroid/widget/GridLayout$Alignment;F)V
-HSPLandroid/widget/GridLayout$Spec;->access$100(Landroid/widget/GridLayout$Spec;Z)Landroid/widget/GridLayout$Alignment;
-HSPLandroid/widget/GridLayout$Spec;->equals(Ljava/lang/Object;)Z
-HSPLandroid/widget/GridLayout$Spec;->hashCode()I
-HSPLandroid/widget/GridLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/GridLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/GridLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
-HSPLandroid/widget/GridLayout;->checkLayoutParams(Landroid/widget/GridLayout$LayoutParams;Z)V
-HSPLandroid/widget/GridLayout;->computeLayoutParamsHashCode()I
-HSPLandroid/widget/GridLayout;->consistencyCheck()V
-HSPLandroid/widget/GridLayout;->createSwitchingAlignment(Landroid/widget/GridLayout$Alignment;Landroid/widget/GridLayout$Alignment;)Landroid/widget/GridLayout$Alignment;
-HSPLandroid/widget/GridLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
-HSPLandroid/widget/GridLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/GridLayout$LayoutParams;
-HSPLandroid/widget/GridLayout;->getAlignment(IZ)Landroid/widget/GridLayout$Alignment;
-HSPLandroid/widget/GridLayout;->getDefaultMargin(Landroid/view/View;Landroid/widget/GridLayout$LayoutParams;ZZ)I
-HSPLandroid/widget/GridLayout;->getLayoutParams(Landroid/view/View;)Landroid/widget/GridLayout$LayoutParams;
-HSPLandroid/widget/GridLayout;->getMargin(Landroid/view/View;ZZ)I
-HSPLandroid/widget/GridLayout;->getMargin1(Landroid/view/View;ZZ)I
-HSPLandroid/widget/GridLayout;->getMeasurement(Landroid/view/View;Z)I
-HSPLandroid/widget/GridLayout;->measureChildrenWithMargins(IIZ)V
-HSPLandroid/widget/GridLayout;->onChildVisibilityChanged(Landroid/view/View;II)V
-HSPLandroid/widget/GridLayout;->onLayout(ZIIII)V
-HSPLandroid/widget/GridLayout;->onMeasure(II)V
-HSPLandroid/widget/GridLayout;->onViewAdded(Landroid/view/View;)V
-HSPLandroid/widget/GridLayout;->requestLayout()V
-HSPLandroid/widget/GridLayout;->setAlignmentMode(I)V
-HSPLandroid/widget/GridLayout;->setColumnCount(I)V
-HSPLandroid/widget/GridLayout;->setColumnOrderPreserved(Z)V
-HSPLandroid/widget/GridLayout;->setOrientation(I)V
-HSPLandroid/widget/GridLayout;->setRowCount(I)V
-HSPLandroid/widget/GridLayout;->setRowOrderPreserved(Z)V
-HSPLandroid/widget/GridLayout;->setUseDefaultMargins(Z)V
-HSPLandroid/widget/GridLayout;->spec(I)Landroid/widget/GridLayout$Spec;
-HSPLandroid/widget/GridLayout;->validateLayoutParams()V
-HSPLandroid/widget/HorizontalScrollView$SavedState$1;-><init>()V
-HSPLandroid/widget/HorizontalScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/HorizontalScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/HorizontalScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/widget/HorizontalScrollView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/widget/HorizontalScrollView;->computeScroll()V
-HSPLandroid/widget/HorizontalScrollView;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/HorizontalScrollView;->initScrollView()V
-HSPLandroid/widget/HorizontalScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V
-HSPLandroid/widget/HorizontalScrollView;->onLayout(ZIIII)V
-HSPLandroid/widget/HorizontalScrollView;->onMeasure(II)V
-HSPLandroid/widget/HorizontalScrollView;->onSizeChanged(IIII)V
 HSPLandroid/widget/HorizontalScrollView;->requestLayout()V
-HSPLandroid/widget/HorizontalScrollView;->scrollTo(II)V
 HSPLandroid/widget/HorizontalScrollView;->setFillViewport(Z)V
 HSPLandroid/widget/ImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/ImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/ImageButton;->onSetAlpha(I)Z
-HSPLandroid/widget/ImageView$ScaleType;-><init>(Ljava/lang/String;II)V
+HSPLandroid/widget/ImageButton;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/ImageView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/ImageView;->applyAlpha()V
+HSPLandroid/widget/ImageView;->applyColorFilter()V
 HSPLandroid/widget/ImageView;->applyImageTint()V
-HSPLandroid/widget/ImageView;->clearColorFilter()V
+HSPLandroid/widget/ImageView;->applyXfermode()V
 HSPLandroid/widget/ImageView;->configureBounds()V
 HSPLandroid/widget/ImageView;->drawableHotspotChanged(FF)V
 HSPLandroid/widget/ImageView;->drawableStateChanged()V
 HSPLandroid/widget/ImageView;->getBaseline()I
 HSPLandroid/widget/ImageView;->getDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/ImageView;->getImageMatrix()Landroid/graphics/Matrix;
-HSPLandroid/widget/ImageView;->getScaleType()Landroid/widget/ImageView$ScaleType;
 HSPLandroid/widget/ImageView;->hasOverlappingRendering()Z
 HSPLandroid/widget/ImageView;->initImageView()V
 HSPLandroid/widget/ImageView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
@@ -18872,23 +14055,19 @@
 HSPLandroid/widget/ImageView;->onRtlPropertiesChanged(I)V
 HSPLandroid/widget/ImageView;->onVisibilityAggregated(Z)V
 HSPLandroid/widget/ImageView;->resizeFromDrawable()V
-HSPLandroid/widget/ImageView;->resolveAdjustedSize(III)I
 HSPLandroid/widget/ImageView;->resolveUri()V
+HSPLandroid/widget/ImageView;->scaleTypeToScaleToFit(Landroid/widget/ImageView$ScaleType;)Landroid/graphics/Matrix$ScaleToFit;
 HSPLandroid/widget/ImageView;->setAdjustViewBounds(Z)V
 HSPLandroid/widget/ImageView;->setAlpha(I)V
-HSPLandroid/widget/ImageView;->setColorFilter(I)V
 HSPLandroid/widget/ImageView;->setColorFilter(ILandroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/widget/ImageView;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/widget/ImageView;->setCropToPadding(Z)V
 HSPLandroid/widget/ImageView;->setFrame(IIII)Z
 HSPLandroid/widget/ImageView;->setImageAlpha(I)V
 HSPLandroid/widget/ImageView;->setImageBitmap(Landroid/graphics/Bitmap;)V
 HSPLandroid/widget/ImageView;->setImageDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/ImageView;->setImageIcon(Landroid/graphics/drawable/Icon;)V
 HSPLandroid/widget/ImageView;->setImageMatrix(Landroid/graphics/Matrix;)V
 HSPLandroid/widget/ImageView;->setImageResource(I)V
 HSPLandroid/widget/ImageView;->setImageTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/ImageView;->setImageTintMode(Landroid/graphics/PorterDuff$Mode;)V
 HSPLandroid/widget/ImageView;->setMaxHeight(I)V
 HSPLandroid/widget/ImageView;->setMaxWidth(I)V
 HSPLandroid/widget/ImageView;->setScaleType(Landroid/widget/ImageView$ScaleType;)V
@@ -18897,12 +14076,14 @@
 HSPLandroid/widget/ImageView;->updateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ImageView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(II)V
-HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(IIF)V
 HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/widget/LinearLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/LinearLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/LinearLayout;->allViewsAreGoneBefore(I)Z
 HSPLandroid/widget/LinearLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
 HSPLandroid/widget/LinearLayout;->forceUniformHeight(II)V
 HSPLandroid/widget/LinearLayout;->forceUniformWidth(II)V
@@ -18912,14 +14093,10 @@
 HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/LinearLayout$LayoutParams;
 HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/LinearLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/widget/LinearLayout$LayoutParams;
-HSPLandroid/widget/LinearLayout;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/widget/LinearLayout;->getBaseline()I
 HSPLandroid/widget/LinearLayout;->getChildrenSkipCount(Landroid/view/View;I)I
-HSPLandroid/widget/LinearLayout;->getDividerDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/LinearLayout;->getGravity()I
 HSPLandroid/widget/LinearLayout;->getLocationOffset(Landroid/view/View;)I
 HSPLandroid/widget/LinearLayout;->getNextLocationOffset(Landroid/view/View;)I
-HSPLandroid/widget/LinearLayout;->getOrientation()I
 HSPLandroid/widget/LinearLayout;->getVirtualChildAt(I)Landroid/view/View;
 HSPLandroid/widget/LinearLayout;->getVirtualChildCount()I
 HSPLandroid/widget/LinearLayout;->hasDividerBeforeChildAt(I)Z
@@ -18938,19 +14115,14 @@
 HSPLandroid/widget/LinearLayout;->setGravity(I)V
 HSPLandroid/widget/LinearLayout;->setOrientation(I)V
 HSPLandroid/widget/LinearLayout;->shouldDelayChildPressedState()Z
+HSPLandroid/widget/ListView$ArrowScrollFocusResult;-><init>()V
+HSPLandroid/widget/ListView$ArrowScrollFocusResult;-><init>(Landroid/widget/ListView$1;)V
 HSPLandroid/widget/ListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/ListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/ListView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/ListView;->adjustViewsUpOrDown()V
 HSPLandroid/widget/ListView;->clearRecycledState(Ljava/util/ArrayList;)V
-HSPLandroid/widget/ListView;->correctTooHigh(I)V
-HSPLandroid/widget/ListView;->dispatchDraw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/ListView;->drawChild(Landroid/graphics/Canvas;Landroid/view/View;J)Z
 HSPLandroid/widget/ListView;->fillDown(II)Landroid/view/View;
-HSPLandroid/widget/ListView;->fillFromTop(I)Landroid/view/View;
-HSPLandroid/widget/ListView;->fillSpecific(II)Landroid/view/View;
-HSPLandroid/widget/ListView;->fillUp(II)Landroid/view/View;
-HSPLandroid/widget/ListView;->findMotionRow(I)I
-HSPLandroid/widget/ListView;->findViewInHeadersOrFooters(Ljava/util/ArrayList;I)Landroid/view/View;
 HSPLandroid/widget/ListView;->findViewTraversal(I)Landroid/view/View;
 HSPLandroid/widget/ListView;->getAdapter()Landroid/widget/Adapter;
 HSPLandroid/widget/ListView;->getAdapter()Landroid/widget/ListAdapter;
@@ -18958,7 +14130,6 @@
 HSPLandroid/widget/ListView;->layoutChildren()V
 HSPLandroid/widget/ListView;->lookForSelectablePosition(IZ)I
 HSPLandroid/widget/ListView;->makeAndAddView(IIZIZ)Landroid/view/View;
-HSPLandroid/widget/ListView;->onDetachedFromWindow()V
 HSPLandroid/widget/ListView;->onFinishInflate()V
 HSPLandroid/widget/ListView;->onMeasure(II)V
 HSPLandroid/widget/ListView;->onSizeChanged(IIII)V
@@ -18966,62 +14137,48 @@
 HSPLandroid/widget/ListView;->resetList()V
 HSPLandroid/widget/ListView;->setAdapter(Landroid/widget/ListAdapter;)V
 HSPLandroid/widget/ListView;->setCacheColorHint(I)V
-HSPLandroid/widget/ListView;->setDivider(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ListView;->setupChild(Landroid/view/View;IIZIZZ)V
-HSPLandroid/widget/Magnifier$Builder;->applyDefaults()V
-HSPLandroid/widget/Magnifier;-><init>(Landroid/widget/Magnifier$Builder;)V
-HSPLandroid/widget/Magnifier;->createBuilderWithOldMagnifierDefaults(Landroid/view/View;)Landroid/widget/Magnifier$Builder;
-HSPLandroid/widget/Magnifier;->update()V
 HSPLandroid/widget/OverScroller$SplineOverScroller;-><init>(Landroid/content/Context;)V
+HSPLandroid/widget/OverScroller$SplineOverScroller;->access$000(Landroid/widget/OverScroller$SplineOverScroller;)Z
+HSPLandroid/widget/OverScroller$SplineOverScroller;->access$100(Landroid/widget/OverScroller$SplineOverScroller;)I
+HSPLandroid/widget/OverScroller$SplineOverScroller;->access$200(Landroid/widget/OverScroller$SplineOverScroller;)F
+HSPLandroid/widget/OverScroller$SplineOverScroller;->access$400(Landroid/widget/OverScroller$SplineOverScroller;)I
 HSPLandroid/widget/OverScroller$SplineOverScroller;->continueWhenFinished()Z
 HSPLandroid/widget/OverScroller$SplineOverScroller;->finish()V
 HSPLandroid/widget/OverScroller$SplineOverScroller;->fling(IIIII)V
-HSPLandroid/widget/OverScroller$SplineOverScroller;->springback(III)Z
+HSPLandroid/widget/OverScroller$SplineOverScroller;->getSplineDeceleration(I)D
+HSPLandroid/widget/OverScroller$SplineOverScroller;->getSplineFlingDistance(I)D
+HSPLandroid/widget/OverScroller$SplineOverScroller;->getSplineFlingDuration(I)I
 HSPLandroid/widget/OverScroller$SplineOverScroller;->update()Z
 HSPLandroid/widget/OverScroller;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/OverScroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V
+HSPLandroid/widget/OverScroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V
 HSPLandroid/widget/OverScroller;->abortAnimation()V
 HSPLandroid/widget/OverScroller;->computeScrollOffset()Z
 HSPLandroid/widget/OverScroller;->fling(IIIIIIII)V
 HSPLandroid/widget/OverScroller;->fling(IIIIIIIIII)V
-HSPLandroid/widget/OverScroller;->forceFinished(Z)V
 HSPLandroid/widget/OverScroller;->getCurrVelocity()F
 HSPLandroid/widget/OverScroller;->getCurrX()I
 HSPLandroid/widget/OverScroller;->getCurrY()I
-HSPLandroid/widget/OverScroller;->getDuration()I
 HSPLandroid/widget/OverScroller;->getFinalX()I
 HSPLandroid/widget/OverScroller;->getFinalY()I
 HSPLandroid/widget/OverScroller;->isFinished()Z
-HSPLandroid/widget/OverScroller;->springBack(IIIIII)Z
-HSPLandroid/widget/PopupMenu;-><init>(Landroid/content/Context;Landroid/view/View;III)V
-HSPLandroid/widget/PopupMenu;->getMenu()Landroid/view/Menu;
-HSPLandroid/widget/PopupMenu;->getMenuInflater()Landroid/view/MenuInflater;
-HSPLandroid/widget/PopupMenu;->inflate(I)V
-HSPLandroid/widget/PopupMenu;->setOnMenuItemClickListener(Landroid/widget/PopupMenu$OnMenuItemClickListener;)V
-HSPLandroid/widget/PopupWindow;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/PopupWindow;->dismiss()V
-HSPLandroid/widget/PopupWindow;->getTransition(I)Landroid/transition/Transition;
 HSPLandroid/widget/PopupWindow;->isShowing()Z
-HSPLandroid/widget/PopupWindow;->setAttachedInDecor(Z)V
-HSPLandroid/widget/PopupWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/PopupWindow;->setContentView(Landroid/view/View;)V
-HSPLandroid/widget/PopupWindow;->setEnterTransition(Landroid/transition/Transition;)V
-HSPLandroid/widget/PopupWindow;->setExitTransition(Landroid/transition/Transition;)V
-HSPLandroid/widget/PopupWindow;->setFocusable(Z)V
-HSPLandroid/widget/PopupWindow;->setInputMethodMode(I)V
-HSPLandroid/widget/ProgressBar$SavedState$1;-><init>()V
+HSPLandroid/widget/ProgressBar$1;-><init>(Landroid/widget/ProgressBar;Ljava/lang/String;)V
+HSPLandroid/widget/ProgressBar$SavedState;-><init>(Landroid/os/Parcelable;)V
 HSPLandroid/widget/ProgressBar$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/widget/ProgressBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/ProgressBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/ProgressBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/ProgressBar;->applyIndeterminateTint()V
-HSPLandroid/widget/ProgressBar;->applyPrimaryProgressTint()V
+HSPLandroid/widget/ProgressBar;->applyProgressTints()V
 HSPLandroid/widget/ProgressBar;->doRefreshProgress(IIZZZ)V
 HSPLandroid/widget/ProgressBar;->drawTrack(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/ProgressBar;->drawableStateChanged()V
-HSPLandroid/widget/ProgressBar;->getCurrentDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/ProgressBar;->getIndeterminateDrawable()Landroid/graphics/drawable/Drawable;
+HSPLandroid/widget/ProgressBar;->formatStateDescription(I)Ljava/lang/CharSequence;
 HSPLandroid/widget/ProgressBar;->getMax()I
 HSPLandroid/widget/ProgressBar;->getMin()I
+HSPLandroid/widget/ProgressBar;->getPercent(I)F
 HSPLandroid/widget/ProgressBar;->getProgress()I
 HSPLandroid/widget/ProgressBar;->getProgressDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/widget/ProgressBar;->initProgressBar()V
@@ -19057,31 +14214,33 @@
 HSPLandroid/widget/ProgressBar;->updateDrawableBounds(II)V
 HSPLandroid/widget/ProgressBar;->updateDrawableState()V
 HSPLandroid/widget/ProgressBar;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
+HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;-><init>()V
+HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;->acquire(Landroid/view/View;)Landroid/widget/RelativeLayout$DependencyGraph$Node;
 HSPLandroid/widget/RelativeLayout$DependencyGraph$Node;->release()V
+HSPLandroid/widget/RelativeLayout$DependencyGraph;-><init>()V
+HSPLandroid/widget/RelativeLayout$DependencyGraph;-><init>(Landroid/widget/RelativeLayout$1;)V
+HSPLandroid/widget/RelativeLayout$DependencyGraph;->access$500(Landroid/widget/RelativeLayout$DependencyGraph;)Landroid/util/SparseArray;
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->add(Landroid/view/View;)V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->clear()V
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->findRoots([I)Ljava/util/ArrayDeque;
 HSPLandroid/widget/RelativeLayout$DependencyGraph;->getSortedViews([Landroid/view/View;[I)V
-HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(II)V
 HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$100(Landroid/widget/RelativeLayout$LayoutParams;)I
-HSPLandroid/widget/RelativeLayout$LayoutParams;->access$112(Landroid/widget/RelativeLayout$LayoutParams;I)I
+HSPLandroid/widget/RelativeLayout$LayoutParams;->access$102(Landroid/widget/RelativeLayout$LayoutParams;I)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$200(Landroid/widget/RelativeLayout$LayoutParams;)I
-HSPLandroid/widget/RelativeLayout$LayoutParams;->access$212(Landroid/widget/RelativeLayout$LayoutParams;I)I
+HSPLandroid/widget/RelativeLayout$LayoutParams;->access$202(Landroid/widget/RelativeLayout$LayoutParams;I)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$300(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$302(Landroid/widget/RelativeLayout$LayoutParams;I)I
-HSPLandroid/widget/RelativeLayout$LayoutParams;->access$312(Landroid/widget/RelativeLayout$LayoutParams;I)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$400(Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->access$402(Landroid/widget/RelativeLayout$LayoutParams;I)I
-HSPLandroid/widget/RelativeLayout$LayoutParams;->access$412(Landroid/widget/RelativeLayout$LayoutParams;I)I
-HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(I)V
+HSPLandroid/widget/RelativeLayout$LayoutParams;->access$700(Landroid/widget/RelativeLayout$LayoutParams;)[I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->addRule(II)V
 HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules()[I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->getRules(I)[I
 HSPLandroid/widget/RelativeLayout$LayoutParams;->hasRelativeRules()Z
 HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveLayoutDirection(I)V
 HSPLandroid/widget/RelativeLayout$LayoutParams;->resolveRules(I)V
-HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;)V
+HSPLandroid/widget/RelativeLayout$LayoutParams;->shouldResolveLayoutDirection(I)Z
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/RelativeLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
@@ -19093,11 +14252,11 @@
 HSPLandroid/widget/RelativeLayout;->compareLayoutPosition(Landroid/widget/RelativeLayout$LayoutParams;Landroid/widget/RelativeLayout$LayoutParams;)I
 HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/widget/RelativeLayout$LayoutParams;
-HSPLandroid/widget/RelativeLayout;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/widget/RelativeLayout;->getBaseline()I
 HSPLandroid/widget/RelativeLayout;->getChildMeasureSpec(IIIIIIII)I
 HSPLandroid/widget/RelativeLayout;->getRelatedView([II)Landroid/view/View;
 HSPLandroid/widget/RelativeLayout;->getRelatedViewBaselineOffset([I)I
+HSPLandroid/widget/RelativeLayout;->getRelatedViewParams([II)Landroid/widget/RelativeLayout$LayoutParams;
 HSPLandroid/widget/RelativeLayout;->initFromAttributes(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/RelativeLayout;->measureChild(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
 HSPLandroid/widget/RelativeLayout;->measureChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;II)V
@@ -19106,84 +14265,43 @@
 HSPLandroid/widget/RelativeLayout;->positionAtEdge(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;I)V
 HSPLandroid/widget/RelativeLayout;->positionChildHorizontal(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
 HSPLandroid/widget/RelativeLayout;->positionChildVertical(Landroid/view/View;Landroid/widget/RelativeLayout$LayoutParams;IZ)Z
+HSPLandroid/widget/RelativeLayout;->queryCompatibilityModes(Landroid/content/Context;)V
 HSPLandroid/widget/RelativeLayout;->requestLayout()V
-HSPLandroid/widget/RelativeLayout;->setGravity(I)V
 HSPLandroid/widget/RelativeLayout;->shouldDelayChildPressedState()Z
 HSPLandroid/widget/RelativeLayout;->sortChildren()V
-HSPLandroid/widget/RemoteViews$1;-><init>()V
-HSPLandroid/widget/RemoteViews$2;-><init>()V
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Landroid/widget/RemoteViews;
 HSPLandroid/widget/RemoteViews$2;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/widget/RemoteViews$Action;-><init>()V
+HSPLandroid/widget/RemoteViews$Action;-><init>(Landroid/widget/RemoteViews$1;)V
 HSPLandroid/widget/RemoteViews$Action;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z
-HSPLandroid/widget/RemoteViews$Action;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
-HPLandroid/widget/RemoteViews$Action;->visitUris(Ljava/util/function/Consumer;)V
-HSPLandroid/widget/RemoteViews$BitmapCache;->getBitmapForId(I)Landroid/graphics/Bitmap;
+HSPLandroid/widget/RemoteViews$BitmapCache;-><init>()V
+HSPLandroid/widget/RemoteViews$BitmapCache;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/widget/RemoteViews$BitmapCache;->getBitmapId(Landroid/graphics/Bitmap;)I
-HPLandroid/widget/RemoteViews$BitmapCache;->getBitmapMemory()I
 HSPLandroid/widget/RemoteViews$BitmapCache;->writeBitmapsToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$BitmapReflectionAction;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V
-HSPLandroid/widget/RemoteViews$BitmapReflectionAction;->getActionTag()I
-HSPLandroid/widget/RemoteViews$BitmapReflectionAction;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
-HSPLandroid/widget/RemoteViews$BitmapReflectionAction;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$MethodKey;-><init>()V
-HSPLandroid/widget/RemoteViews$MethodKey;->equals(Ljava/lang/Object;)Z
-HSPLandroid/widget/RemoteViews$MethodKey;->hashCode()I
-HSPLandroid/widget/RemoteViews$MethodKey;->set(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)V
+HSPLandroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/widget/RemoteViews;ILjava/lang/String;ILjava/lang/Object;)V
 HSPLandroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V
-HSPLandroid/widget/RemoteViews$ReflectionAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
 HSPLandroid/widget/RemoteViews$ReflectionAction;->getActionTag()I
-HSPLandroid/widget/RemoteViews$ReflectionAction;->getParameterType()Ljava/lang/Class;
-HPLandroid/widget/RemoteViews$ReflectionAction;->visitUris(Ljava/util/function/Consumer;)V
 HSPLandroid/widget/RemoteViews$ReflectionAction;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$RemoteResponse;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/widget/RemoteViews$RemoteResponse;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->getResources()Landroid/content/res/Resources;
-HSPLandroid/widget/RemoteViews$RemoteViewsContextWrapper;->getTheme()Landroid/content/res/Resources$Theme;
-HSPLandroid/widget/RemoteViews$SetOnClickResponse;->getActionTag()I
-HSPLandroid/widget/RemoteViews$SetOnClickResponse;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$TextViewSizeAction;->getActionTag()I
-HSPLandroid/widget/RemoteViews$TextViewSizeAction;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RemoteViews$ViewGroupActionAdd;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILjava/util/Map;)V
-HSPLandroid/widget/RemoteViews$ViewPaddingAction;-><init>(Landroid/widget/RemoteViews;Landroid/os/Parcel;)V
-HSPLandroid/widget/RemoteViews$ViewPaddingAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
+HSPLandroid/widget/RemoteViews$RemoteResponse;-><init>()V
+HSPLandroid/widget/RemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V
+HSPLandroid/widget/RemoteViews;-><init>(Landroid/os/Parcel;)V
 HSPLandroid/widget/RemoteViews;-><init>(Landroid/os/Parcel;Landroid/widget/RemoteViews$BitmapCache;Landroid/content/pm/ApplicationInfo;ILjava/util/Map;)V
-HSPLandroid/widget/RemoteViews;-><init>(Landroid/widget/RemoteViews;)V
-HSPLandroid/widget/RemoteViews;-><init>(Ljava/lang/String;I)V
-HSPLandroid/widget/RemoteViews;->addFlags(I)V
-HSPLandroid/widget/RemoteViews;->clone()Landroid/widget/RemoteViews;
-HPLandroid/widget/RemoteViews;->estimateMemoryUsage()I
+HSPLandroid/widget/RemoteViews;->access$800(Landroid/widget/RemoteViews;)Landroid/widget/RemoteViews$BitmapCache;
+HSPLandroid/widget/RemoteViews;->addAction(Landroid/widget/RemoteViews$Action;)V
 HSPLandroid/widget/RemoteViews;->getActionFromParcel(Landroid/os/Parcel;I)Landroid/widget/RemoteViews$Action;
-HSPLandroid/widget/RemoteViews;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
-HSPLandroid/widget/RemoteViews;->getContextForResources(Landroid/content/Context;)Landroid/content/Context;
-HSPLandroid/widget/RemoteViews;->getLayoutId()I
-HSPLandroid/widget/RemoteViews;->getMethod(Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
-HSPLandroid/widget/RemoteViews;->getPackage()Ljava/lang/String;
-HSPLandroid/widget/RemoteViews;->hasFlags(I)Z
-HSPLandroid/widget/RemoteViews;->hasSameAppInfo(Landroid/content/pm/ApplicationInfo;)Z
-HSPLandroid/widget/RemoteViews;->inflateView(Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;I)Landroid/view/View;
-HSPLandroid/widget/RemoteViews;->onLoadClass(Ljava/lang/Class;)Z
-HSPLandroid/widget/RemoteViews;->performApply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
-HSPLandroid/widget/RemoteViews;->setBitmap(ILjava/lang/String;Landroid/graphics/Bitmap;)V
-HSPLandroid/widget/RemoteViews;->setBitmapCache(Landroid/widget/RemoteViews$BitmapCache;)V
+HSPLandroid/widget/RemoteViews;->hasLandscapeAndPortraitLayouts()Z
+HSPLandroid/widget/RemoteViews;->readActionsFromParcel(Landroid/os/Parcel;I)V
 HSPLandroid/widget/RemoteViews;->setCharSequence(ILjava/lang/String;Ljava/lang/CharSequence;)V
-HSPLandroid/widget/RemoteViews;->setContentDescription(ILjava/lang/CharSequence;)V
-HSPLandroid/widget/RemoteViews;->setImageViewBitmap(ILandroid/graphics/Bitmap;)V
 HSPLandroid/widget/RemoteViews;->setInt(ILjava/lang/String;I)V
-HSPLandroid/widget/RemoteViews;->setNotRoot()V
 HSPLandroid/widget/RemoteViews;->setOnClickPendingIntent(ILandroid/app/PendingIntent;)V
 HSPLandroid/widget/RemoteViews;->setOnClickResponse(ILandroid/widget/RemoteViews$RemoteResponse;)V
-HSPLandroid/widget/RemoteViews;->setTextViewText(ILjava/lang/CharSequence;)V
 HSPLandroid/widget/RemoteViews;->setViewVisibility(II)V
-HPLandroid/widget/RemoteViews;->visitUris(Ljava/util/function/Consumer;)V
 HSPLandroid/widget/RemoteViews;->writeActionsToParcel(Landroid/os/Parcel;)V
 HSPLandroid/widget/RemoteViews;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/RtlSpacingHelper;->getEnd()I
-HSPLandroid/widget/RtlSpacingHelper;->getStart()I
-HSPLandroid/widget/RtlSpacingHelper;->setAbsolute(II)V
-HSPLandroid/widget/RtlSpacingHelper;->setDirection(Z)V
-HSPLandroid/widget/RtlSpacingHelper;->setRelative(II)V
+HSPLandroid/widget/ScrollBarDrawable;-><init>()V
 HSPLandroid/widget/ScrollBarDrawable;->draw(Landroid/graphics/Canvas;)V
 HSPLandroid/widget/ScrollBarDrawable;->drawThumb(Landroid/graphics/Canvas;Landroid/graphics/Rect;IIZ)V
+HSPLandroid/widget/ScrollBarDrawable;->drawTrack(Landroid/graphics/Canvas;Landroid/graphics/Rect;Z)V
 HSPLandroid/widget/ScrollBarDrawable;->getSize(Z)I
 HSPLandroid/widget/ScrollBarDrawable;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->isStateful()Z
@@ -19192,82 +14310,64 @@
 HSPLandroid/widget/ScrollBarDrawable;->onStateChange([I)Z
 HSPLandroid/widget/ScrollBarDrawable;->propagateCurrentState(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setAlpha(I)V
-HSPLandroid/widget/ScrollBarDrawable;->setAlwaysDrawVerticalTrack(Z)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalThumbDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setHorizontalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setParameters(IIIZ)V
 HSPLandroid/widget/ScrollBarDrawable;->setVerticalThumbDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/ScrollBarDrawable;->setVerticalTrackDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/ScrollView$SavedState$1;-><init>()V
-HSPLandroid/widget/ScrollView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/widget/ScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+HSPLandroid/widget/ScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
 HSPLandroid/widget/ScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
 HSPLandroid/widget/ScrollView;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
 HSPLandroid/widget/ScrollView;->addView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
+HSPLandroid/widget/ScrollView;->clamp(III)I
 HSPLandroid/widget/ScrollView;->computeScroll()V
 HSPLandroid/widget/ScrollView;->computeVerticalScrollOffset()I
 HSPLandroid/widget/ScrollView;->computeVerticalScrollRange()I
 HSPLandroid/widget/ScrollView;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/ScrollView;->getAccessibilityClassName()Ljava/lang/CharSequence;
 HSPLandroid/widget/ScrollView;->initScrollView()V
 HSPLandroid/widget/ScrollView;->measureChildWithMargins(Landroid/view/View;IIII)V
 HSPLandroid/widget/ScrollView;->onDetachedFromWindow()V
-HSPLandroid/widget/ScrollView;->onInterceptTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/widget/ScrollView;->onLayout(ZIIII)V
 HSPLandroid/widget/ScrollView;->onMeasure(II)V
-HSPLandroid/widget/ScrollView;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/widget/ScrollView;->onSizeChanged(IIII)V
 HSPLandroid/widget/ScrollView;->requestLayout()V
 HSPLandroid/widget/ScrollView;->scrollTo(II)V
 HSPLandroid/widget/ScrollView;->setFillViewport(Z)V
-HSPLandroid/widget/ScrollView;->shouldDelayChildPressedState()Z
-HSPLandroid/widget/Scroller$ViscousFluidInterpolator;->viscousFluid(F)F
+HSPLandroid/widget/Scroller$ViscousFluidInterpolator;-><init>()V
 HSPLandroid/widget/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;)V
 HSPLandroid/widget/Scroller;-><init>(Landroid/content/Context;Landroid/view/animation/Interpolator;Z)V
-HSPLandroid/widget/Scroller;->computeScrollOffset()Z
+HSPLandroid/widget/Scroller;->computeDeceleration(F)F
 HSPLandroid/widget/Scroller;->isFinished()Z
-HSPLandroid/widget/SeekBar;->onProgressRefresh(FZI)V
-HSPLandroid/widget/SeekBar;->setOnSeekBarChangeListener(Landroid/widget/SeekBar$OnSeekBarChangeListener;)V
+HSPLandroid/widget/SelectionActionModeHelper$SelectionMetricsLogger;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;-><init>(Landroid/widget/SelectionActionModeHelper$SelectionTracker;)V
+HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker$LogAbandonRunnable;-><init>(Landroid/widget/SelectionActionModeHelper$SelectionTracker;Landroid/widget/SelectionActionModeHelper$1;)V
+HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->isSelectionStarted()Z
+HSPLandroid/widget/SelectionActionModeHelper$SelectionTracker;->onTextChanged(IILandroid/view/textclassifier/TextClassification;)V
+HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;-><init>(Landroid/content/Context;Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V
 HSPLandroid/widget/SelectionActionModeHelper$TextClassificationHelper;->init(Ljava/util/function/Supplier;Ljava/lang/CharSequence;IILandroid/os/LocaleList;)V
 HSPLandroid/widget/SelectionActionModeHelper;-><init>(Landroid/widget/Editor;)V
+HSPLandroid/widget/SelectionActionModeHelper;->getText(Landroid/widget/TextView;)Ljava/lang/CharSequence;
+HSPLandroid/widget/SelectionActionModeHelper;->getTextClassificationSettings()Landroid/view/textclassifier/TextClassificationConstants;
+HSPLandroid/widget/SelectionActionModeHelper;->isDrawingHighlight()Z
+HSPLandroid/widget/SelectionActionModeHelper;->onDraw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/SelectionActionModeHelper;->onTextChanged(II)V
 HSPLandroid/widget/SmartSelectSprite;-><init>(Landroid/content/Context;ILjava/lang/Runnable;)V
-HSPLandroid/widget/Space;-><init>(Landroid/content/Context;)V
+HSPLandroid/widget/SmartSelectSprite;->isAnimationActive()Z
 HSPLandroid/widget/Space;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/Space;->draw(Landroid/graphics/Canvas;)V
+HSPLandroid/widget/Space;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
+HSPLandroid/widget/Space;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
+HSPLandroid/widget/Space;->getDefaultSize2(II)I
 HSPLandroid/widget/Space;->onMeasure(II)V
-HSPLandroid/widget/SpellChecker;-><init>(Landroid/widget/TextView;)V
-HSPLandroid/widget/SpellChecker;->closeSession()V
-HSPLandroid/widget/SpellChecker;->resetSession()V
-HSPLandroid/widget/SpellChecker;->spellCheck(II)V
-HSPLandroid/widget/Switch$1;-><init>(Ljava/lang/String;)V
-HSPLandroid/widget/Switch;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/Switch;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/Switch;->drawableStateChanged()V
-HSPLandroid/widget/Switch;->getCompoundPaddingLeft()I
-HSPLandroid/widget/Switch;->getCompoundPaddingRight()I
-HSPLandroid/widget/Switch;->jumpDrawablesToCurrentState()V
-HSPLandroid/widget/Switch;->onCreateDrawableState(I)[I
-HSPLandroid/widget/Switch;->onLayout(ZIIII)V
-HSPLandroid/widget/Switch;->onMeasure(II)V
-HSPLandroid/widget/Switch;->setChecked(Z)V
-HSPLandroid/widget/Switch;->setSwitchTextAppearance(Landroid/content/Context;I)V
-HSPLandroid/widget/Switch;->setSwitchTypeface(Landroid/graphics/Typeface;)V
-HSPLandroid/widget/Switch;->setSwitchTypeface(Landroid/graphics/Typeface;I)V
-HSPLandroid/widget/Switch;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
-HSPLandroid/widget/TextView$3;->run()V
-HSPLandroid/widget/TextView$BufferType;-><init>(Ljava/lang/String;I)V
-HSPLandroid/widget/TextView$ChangeWatcher;->afterTextChanged(Landroid/text/Editable;)V
-HSPLandroid/widget/TextView$ChangeWatcher;->beforeTextChanged(Ljava/lang/CharSequence;III)V
+HSPLandroid/widget/TextView$ChangeWatcher;-><init>(Landroid/widget/TextView;)V
+HSPLandroid/widget/TextView$ChangeWatcher;-><init>(Landroid/widget/TextView;Landroid/widget/TextView$1;)V
 HSPLandroid/widget/TextView$ChangeWatcher;->onSpanAdded(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/widget/TextView$ChangeWatcher;->onSpanChanged(Landroid/text/Spannable;Ljava/lang/Object;IIII)V
 HSPLandroid/widget/TextView$ChangeWatcher;->onSpanRemoved(Landroid/text/Spannable;Ljava/lang/Object;II)V
-HSPLandroid/widget/TextView$ChangeWatcher;->onTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/widget/TextView$Drawables;-><init>(Landroid/content/Context;)V
 HSPLandroid/widget/TextView$Drawables;->applyErrorDrawableIfNeeded(I)V
 HSPLandroid/widget/TextView$Drawables;->hasMetadata()Z
 HSPLandroid/widget/TextView$Drawables;->resolveWithLayoutDirection(I)Z
-HSPLandroid/widget/TextView$SavedState$1;-><init>()V
-HSPLandroid/widget/TextView$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
 HSPLandroid/widget/TextView$TextAppearanceAttributes;-><init>()V
 HSPLandroid/widget/TextView$TextAppearanceAttributes;-><init>(Landroid/widget/TextView$1;)V
 HSPLandroid/widget/TextView;-><init>(Landroid/content/Context;)V
@@ -19280,32 +14380,22 @@
 HSPLandroid/widget/TextView;->applyTextAppearance(Landroid/widget/TextView$TextAppearanceAttributes;)V
 HSPLandroid/widget/TextView;->assumeLayout()V
 HSPLandroid/widget/TextView;->autoSizeText()V
-HSPLandroid/widget/TextView;->beginBatchEdit()V
 HSPLandroid/widget/TextView;->bringPointIntoView(I)Z
 HSPLandroid/widget/TextView;->bringTextIntoView()Z
-HSPLandroid/widget/TextView;->canMarquee()Z
 HSPLandroid/widget/TextView;->cancelLongPress()V
 HSPLandroid/widget/TextView;->checkForRelayout()V
 HSPLandroid/widget/TextView;->checkForResize()V
-HSPLandroid/widget/TextView;->cleanupAutoSizePresetSizes([I)[I
 HSPLandroid/widget/TextView;->compressText(F)Z
 HSPLandroid/widget/TextView;->computeScroll()V
-HSPLandroid/widget/TextView;->computeVerticalScrollExtent()I
-HSPLandroid/widget/TextView;->computeVerticalScrollRange()I
 HSPLandroid/widget/TextView;->createEditorIfNeeded()V
 HSPLandroid/widget/TextView;->desired(Landroid/text/Layout;)I
 HSPLandroid/widget/TextView;->drawableHotspotChanged(FF)V
 HSPLandroid/widget/TextView;->drawableStateChanged()V
-HSPLandroid/widget/TextView;->endBatchEdit()V
-HSPLandroid/widget/TextView;->findLargestTextSizeWhichFits(Landroid/graphics/RectF;)I
-HSPLandroid/widget/TextView;->fixFocusableAndClickableSettings()V
 HSPLandroid/widget/TextView;->getAccessibilityClassName()Ljava/lang/CharSequence;
-HSPLandroid/widget/TextView;->getAutoSizeStepGranularity()I
 HSPLandroid/widget/TextView;->getAutofillType()I
 HSPLandroid/widget/TextView;->getBaseline()I
 HSPLandroid/widget/TextView;->getBaselineOffset()I
 HSPLandroid/widget/TextView;->getBoxHeight(Landroid/text/Layout;)I
-HSPLandroid/widget/TextView;->getBreakStrategy()I
 HSPLandroid/widget/TextView;->getCompoundPaddingBottom()I
 HSPLandroid/widget/TextView;->getCompoundPaddingLeft()I
 HSPLandroid/widget/TextView;->getCompoundPaddingRight()I
@@ -19315,93 +14405,62 @@
 HSPLandroid/widget/TextView;->getDefaultMovementMethod()Landroid/text/method/MovementMethod;
 HSPLandroid/widget/TextView;->getDesiredHeight()I
 HSPLandroid/widget/TextView;->getDesiredHeight(Landroid/text/Layout;Z)I
-HSPLandroid/widget/TextView;->getEditableText()Landroid/text/Editable;
-HSPLandroid/widget/TextView;->getEllipsize()Landroid/text/TextUtils$TruncateAt;
-HSPLandroid/widget/TextView;->getError()Ljava/lang/CharSequence;
 HSPLandroid/widget/TextView;->getExtendedPaddingBottom()I
 HSPLandroid/widget/TextView;->getExtendedPaddingTop()I
 HSPLandroid/widget/TextView;->getFilters()[Landroid/text/InputFilter;
-HSPLandroid/widget/TextView;->getFocusedRect(Landroid/graphics/Rect;)V
 HSPLandroid/widget/TextView;->getFreezesText()Z
 HSPLandroid/widget/TextView;->getGravity()I
-HSPLandroid/widget/TextView;->getHint()Ljava/lang/CharSequence;
 HSPLandroid/widget/TextView;->getHorizontalOffsetForDrawables()I
 HSPLandroid/widget/TextView;->getHorizontallyScrolling()Z
-HSPLandroid/widget/TextView;->getHyphenationFrequency()I
-HSPLandroid/widget/TextView;->getIncludeFontPadding()Z
+HSPLandroid/widget/TextView;->getInputMethodManager()Landroid/view/inputmethod/InputMethodManager;
 HSPLandroid/widget/TextView;->getInputType()I
-HSPLandroid/widget/TextView;->getInterestingRect(Landroid/graphics/Rect;I)V
-HSPLandroid/widget/TextView;->getJustificationMode()I
 HSPLandroid/widget/TextView;->getKeyListener()Landroid/text/method/KeyListener;
 HSPLandroid/widget/TextView;->getLayout()Landroid/text/Layout;
 HSPLandroid/widget/TextView;->getLayoutAlignment()Landroid/text/Layout$Alignment;
 HSPLandroid/widget/TextView;->getLineCount()I
-HSPLandroid/widget/TextView;->getLineHeight()I
-HSPLandroid/widget/TextView;->getLineSpacingExtra()F
-HSPLandroid/widget/TextView;->getLineSpacingMultiplier()F
-HSPLandroid/widget/TextView;->getMaxEms()I
-HSPLandroid/widget/TextView;->getMaxHeight()I
 HSPLandroid/widget/TextView;->getMaxLines()I
-HSPLandroid/widget/TextView;->getMaxWidth()I
-HSPLandroid/widget/TextView;->getMinEms()I
 HSPLandroid/widget/TextView;->getPaint()Landroid/text/TextPaint;
 HSPLandroid/widget/TextView;->getSelectionEnd()I
 HSPLandroid/widget/TextView;->getSelectionStart()I
-HSPLandroid/widget/TextView;->getSpellCheckerLocale()Ljava/util/Locale;
 HSPLandroid/widget/TextView;->getText()Ljava/lang/CharSequence;
-HSPLandroid/widget/TextView;->getTextColors()Landroid/content/res/ColorStateList;
-HSPLandroid/widget/TextView;->getTextCursorDrawable()Landroid/graphics/drawable/Drawable;
 HSPLandroid/widget/TextView;->getTextDirectionHeuristic()Landroid/text/TextDirectionHeuristic;
 HSPLandroid/widget/TextView;->getTextLocale()Ljava/util/Locale;
 HSPLandroid/widget/TextView;->getTextLocales()Landroid/os/LocaleList;
-HSPLandroid/widget/TextView;->getTextServicesManagerForUser()Landroid/view/textservice/TextServicesManager;
 HSPLandroid/widget/TextView;->getTextSize()F
-HSPLandroid/widget/TextView;->getTotalPaddingLeft()I
-HSPLandroid/widget/TextView;->getTotalPaddingRight()I
-HSPLandroid/widget/TextView;->getTotalPaddingTop()I
 HSPLandroid/widget/TextView;->getTransformationMethod()Landroid/text/method/TransformationMethod;
-HSPLandroid/widget/TextView;->getTypeface()Landroid/graphics/Typeface;
 HSPLandroid/widget/TextView;->getUpdatedHighlightPath()Landroid/graphics/Path;
 HSPLandroid/widget/TextView;->getVerticalOffset(Z)I
-HSPLandroid/widget/TextView;->handleTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/widget/TextView;->hasOverlappingRendering()Z
 HSPLandroid/widget/TextView;->hasPasswordTransformationMethod()Z
 HSPLandroid/widget/TextView;->hasSelection()Z
-HSPLandroid/widget/TextView;->hideErrorIfUnchanged()V
-HSPLandroid/widget/TextView;->invalidateCursorPath()V
+HSPLandroid/widget/TextView;->invalidateCursor(III)V
 HSPLandroid/widget/TextView;->invalidateDrawable(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->invalidateRegion(IIZ)V
+HSPLandroid/widget/TextView;->isAutoSizeEnabled()Z
+HSPLandroid/widget/TextView;->isAutofillable()Z
 HSPLandroid/widget/TextView;->isInExtractedMode()Z
 HSPLandroid/widget/TextView;->isInputMethodTarget()Z
 HSPLandroid/widget/TextView;->isMarqueeFadeEnabled()Z
 HSPLandroid/widget/TextView;->isMultilineInputType(I)Z
+HSPLandroid/widget/TextView;->isShowingHint()Z
 HSPLandroid/widget/TextView;->isSuggestionsEnabled()Z
 HSPLandroid/widget/TextView;->isTextEditable()Z
 HSPLandroid/widget/TextView;->isTextSelectable()Z
 HSPLandroid/widget/TextView;->jumpDrawablesToCurrentState()V
-HSPLandroid/widget/TextView;->length()I
 HSPLandroid/widget/TextView;->makeNewLayout(IILandroid/text/BoringLayout$Metrics;Landroid/text/BoringLayout$Metrics;IZ)V
 HSPLandroid/widget/TextView;->makeSingleLayout(ILandroid/text/BoringLayout$Metrics;ILandroid/text/Layout$Alignment;ZLandroid/text/TextUtils$TruncateAt;Z)Landroid/text/Layout;
 HSPLandroid/widget/TextView;->notifyListeningManagersAfterTextChanged()V
 HSPLandroid/widget/TextView;->nullLayouts()V
 HSPLandroid/widget/TextView;->onAttachedToWindow()V
-HSPLandroid/widget/TextView;->onBeginBatchEdit()V
 HSPLandroid/widget/TextView;->onCheckIsTextEditor()Z
 HSPLandroid/widget/TextView;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLandroid/widget/TextView;->onCreateDrawableState(I)[I
-HSPLandroid/widget/TextView;->onCreateInputConnection(Landroid/view/inputmethod/EditorInfo;)Landroid/view/inputmethod/InputConnection;
 HSPLandroid/widget/TextView;->onDetachedFromWindowInternal()V
 HSPLandroid/widget/TextView;->onDraw(Landroid/graphics/Canvas;)V
-HSPLandroid/widget/TextView;->onEndBatchEdit()V
-HSPLandroid/widget/TextView;->onFocusChanged(ZILandroid/graphics/Rect;)V
 HSPLandroid/widget/TextView;->onLayout(ZIIII)V
-HSPLandroid/widget/TextView;->onLocaleChanged()V
 HSPLandroid/widget/TextView;->onMeasure(II)V
-HSPLandroid/widget/TextView;->onPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)V
 HSPLandroid/widget/TextView;->onPreDraw()Z
-HSPLandroid/widget/TextView;->onProvideStructure(Landroid/view/ViewStructure;II)V
 HSPLandroid/widget/TextView;->onResolveDrawables(I)V
-HSPLandroid/widget/TextView;->onRestoreInstanceState(Landroid/os/Parcelable;)V
 HSPLandroid/widget/TextView;->onRtlPropertiesChanged(I)V
 HSPLandroid/widget/TextView;->onSaveInstanceState()Landroid/os/Parcelable;
 HSPLandroid/widget/TextView;->onScreenStateChanged(I)V
@@ -19411,27 +14470,24 @@
 HSPLandroid/widget/TextView;->onTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLandroid/widget/TextView;->onVisibilityChanged(Landroid/view/View;I)V
 HSPLandroid/widget/TextView;->onWindowFocusChanged(Z)V
+HSPLandroid/widget/TextView;->preloadFontCache()V
+HSPLandroid/widget/TextView;->prepareDrawableForDisplay(Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->readTextAppearance(Landroid/content/Context;Landroid/content/res/TypedArray;Landroid/widget/TextView$TextAppearanceAttributes;Z)V
 HSPLandroid/widget/TextView;->registerForPreDraw()V
 HSPLandroid/widget/TextView;->removeAdjacentSuggestionSpans(I)V
 HSPLandroid/widget/TextView;->removeIntersectingNonAdjacentSpans(IILjava/lang/Class;)V
 HSPLandroid/widget/TextView;->removeMisspelledSpans(Landroid/text/Spannable;)V
 HSPLandroid/widget/TextView;->removeSuggestionSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/widget/TextView;->resetErrorChangedFlag()V
 HSPLandroid/widget/TextView;->resetResolvedDrawables()V
+HSPLandroid/widget/TextView;->resolveStyleAndSetTypeface(Landroid/graphics/Typeface;II)V
 HSPLandroid/widget/TextView;->restartMarqueeIfNeeded()V
 HSPLandroid/widget/TextView;->sendAccessibilityEventInternal(I)V
-HSPLandroid/widget/TextView;->sendAfterTextChanged(Landroid/text/Editable;)V
 HSPLandroid/widget/TextView;->sendBeforeTextChanged(Ljava/lang/CharSequence;III)V
 HSPLandroid/widget/TextView;->sendOnTextChanged(Ljava/lang/CharSequence;III)V
-HSPLandroid/widget/TextView;->setAutoSizeTextTypeUniformWithPresetSizes([II)V
 HSPLandroid/widget/TextView;->setCompoundDrawablePadding(I)V
 HSPLandroid/widget/TextView;->setCompoundDrawables(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesRelative(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
 HSPLandroid/widget/TextView;->setCompoundDrawablesWithIntrinsicBounds(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/TextView;->setCursorVisible(Z)V
-HSPLandroid/widget/TextView;->setElegantTextHeight(Z)V
 HSPLandroid/widget/TextView;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)V
 HSPLandroid/widget/TextView;->setEnabled(Z)V
 HSPLandroid/widget/TextView;->setFilters(Landroid/text/Editable;[Landroid/text/InputFilter;)V
@@ -19441,26 +14497,21 @@
 HSPLandroid/widget/TextView;->setHighlightColor(I)V
 HSPLandroid/widget/TextView;->setHint(Ljava/lang/CharSequence;)V
 HSPLandroid/widget/TextView;->setHintInternal(Ljava/lang/CharSequence;)V
+HSPLandroid/widget/TextView;->setHintTextColor(Landroid/content/res/ColorStateList;)V
 HSPLandroid/widget/TextView;->setHorizontallyScrolling(Z)V
 HSPLandroid/widget/TextView;->setIncludeFontPadding(Z)V
-HSPLandroid/widget/TextView;->setInputType(I)V
 HSPLandroid/widget/TextView;->setInputType(IZ)V
 HSPLandroid/widget/TextView;->setInputTypeSingleLine(Z)V
-HSPLandroid/widget/TextView;->setKeyListenerOnly(Landroid/text/method/KeyListener;)V
 HSPLandroid/widget/TextView;->setLetterSpacing(F)V
-HSPLandroid/widget/TextView;->setLineSpacing(FF)V
 HSPLandroid/widget/TextView;->setLines(I)V
-HSPLandroid/widget/TextView;->setMaxEms(I)V
+HSPLandroid/widget/TextView;->setLinkTextColor(Landroid/content/res/ColorStateList;)V
 HSPLandroid/widget/TextView;->setMaxLines(I)V
 HSPLandroid/widget/TextView;->setMaxWidth(I)V
 HSPLandroid/widget/TextView;->setMinHeight(I)V
-HSPLandroid/widget/TextView;->setMinLines(I)V
 HSPLandroid/widget/TextView;->setMinWidth(I)V
-HSPLandroid/widget/TextView;->setMovementMethod(Landroid/text/method/MovementMethod;)V
 HSPLandroid/widget/TextView;->setOnEditorActionListener(Landroid/widget/TextView$OnEditorActionListener;)V
 HSPLandroid/widget/TextView;->setPadding(IIII)V
 HSPLandroid/widget/TextView;->setPaddingRelative(IIII)V
-HSPLandroid/widget/TextView;->setPrivateImeOptions(Ljava/lang/String;)V
 HSPLandroid/widget/TextView;->setRawInputType(I)V
 HSPLandroid/widget/TextView;->setRawTextSize(FZ)V
 HSPLandroid/widget/TextView;->setRelativeDrawablesIfNeeded(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
@@ -19477,748 +14528,106 @@
 HSPLandroid/widget/TextView;->setTextColor(I)V
 HSPLandroid/widget/TextView;->setTextColor(Landroid/content/res/ColorStateList;)V
 HSPLandroid/widget/TextView;->setTextInternal(Ljava/lang/CharSequence;)V
-HSPLandroid/widget/TextView;->setTextIsSelectable(Z)V
 HSPLandroid/widget/TextView;->setTextSize(IF)V
+HSPLandroid/widget/TextView;->setTextSizeInternal(IFZ)V
 HSPLandroid/widget/TextView;->setTransformationMethod(Landroid/text/method/TransformationMethod;)V
 HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;)V
 HSPLandroid/widget/TextView;->setTypeface(Landroid/graphics/Typeface;I)V
 HSPLandroid/widget/TextView;->setTypefaceFromAttrs(Landroid/graphics/Typeface;Ljava/lang/String;III)V
-HSPLandroid/widget/TextView;->setupAutoSizeText()Z
-HSPLandroid/widget/TextView;->setupAutoSizeUniformPresetSizesConfiguration()Z
-HSPLandroid/widget/TextView;->shouldAdvanceFocusOnEnter()Z
 HSPLandroid/widget/TextView;->spanChange(Landroid/text/Spanned;Ljava/lang/Object;IIII)V
 HSPLandroid/widget/TextView;->startMarquee()V
+HSPLandroid/widget/TextView;->startStopMarquee(Z)V
 HSPLandroid/widget/TextView;->stopMarquee()V
 HSPLandroid/widget/TextView;->stopTextActionMode()V
-HSPLandroid/widget/TextView;->suggestedSizeFitsInSpace(ILandroid/graphics/RectF;)Z
 HSPLandroid/widget/TextView;->supportsAutoSizeText()Z
 HSPLandroid/widget/TextView;->textCanBeSelected()Z
-HSPLandroid/widget/TextView;->updateAfterEdit()V
+HSPLandroid/widget/TextView;->unregisterForPreDraw()V
 HSPLandroid/widget/TextView;->updateTextColors()V
 HSPLandroid/widget/TextView;->useDynamicLayout()Z
 HSPLandroid/widget/TextView;->verifyDrawable(Landroid/graphics/drawable/Drawable;)Z
-HSPLandroid/widget/TextView;->viewportToContentHorizontalOffset()I
-HSPLandroid/widget/TextView;->viewportToContentVerticalOffset()I
-HSPLandroid/widget/Toast$TN$1;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/widget/Toast$TN;-><init>(Ljava/lang/String;Landroid/os/Looper;)V
-HSPLandroid/widget/Toast$TN;->handleHide()V
-HSPLandroid/widget/Toast$TN;->handleShow(Landroid/os/IBinder;)V
-HSPLandroid/widget/Toast$TN;->hide()V
-HSPLandroid/widget/Toast$TN;->show(Landroid/os/IBinder;)V
-HSPLandroid/widget/Toast$TN;->trySendAccessibilityEvent()V
-HSPLandroid/widget/Toast;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLandroid/widget/Toast;->makeText(Landroid/content/Context;Landroid/os/Looper;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
-HSPLandroid/widget/Toast;->makeText(Landroid/content/Context;Ljava/lang/CharSequence;I)Landroid/widget/Toast;
-HSPLandroid/widget/Toast;->show()V
-HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->flagActionItems()Z
-HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->initForMenu(Landroid/content/Context;Lcom/android/internal/view/menu/MenuBuilder;)V
-HSPLandroid/widget/Toolbar$ExpandedActionViewMenuPresenter;->updateMenuView(Z)V
-HSPLandroid/widget/Toolbar$SavedState$1;-><init>()V
-HSPLandroid/widget/Toolbar$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/widget/Toolbar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/Toolbar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/Toolbar;->addCustomViewsWithGravity(Ljava/util/List;I)V
-HSPLandroid/widget/Toolbar;->addSystemView(Landroid/view/View;Z)V
-HSPLandroid/widget/Toolbar;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
-HSPLandroid/widget/Toolbar;->dismissPopupMenus()V
-HSPLandroid/widget/Toolbar;->ensureMenu()V
-HSPLandroid/widget/Toolbar;->ensureMenuView()V
-HSPLandroid/widget/Toolbar;->ensureNavButtonView()V
-HSPLandroid/widget/Toolbar;->generateDefaultLayoutParams()Landroid/widget/Toolbar$LayoutParams;
-HSPLandroid/widget/Toolbar;->getChildTop(Landroid/view/View;I)I
-HSPLandroid/widget/Toolbar;->getContentInsetEnd()I
-HSPLandroid/widget/Toolbar;->getContentInsetStart()I
-HSPLandroid/widget/Toolbar;->getCurrentContentInsetEnd()I
-HSPLandroid/widget/Toolbar;->getCurrentContentInsetLeft()I
-HSPLandroid/widget/Toolbar;->getCurrentContentInsetRight()I
-HSPLandroid/widget/Toolbar;->getCurrentContentInsetStart()I
-HSPLandroid/widget/Toolbar;->getMenu()Landroid/view/Menu;
-HSPLandroid/widget/Toolbar;->getNavigationContentDescription()Ljava/lang/CharSequence;
-HSPLandroid/widget/Toolbar;->getNavigationIcon()Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/Toolbar;->getSubtitle()Ljava/lang/CharSequence;
-HSPLandroid/widget/Toolbar;->getTitle()Ljava/lang/CharSequence;
-HSPLandroid/widget/Toolbar;->getViewListMeasuredWidth(Ljava/util/List;[I)I
-HSPLandroid/widget/Toolbar;->getWrapper()Lcom/android/internal/widget/DecorToolbar;
-HSPLandroid/widget/Toolbar;->isOverflowMenuShowing()Z
-HSPLandroid/widget/Toolbar;->layoutChildLeft(Landroid/view/View;I[II)I
-HSPLandroid/widget/Toolbar;->layoutChildRight(Landroid/view/View;I[II)I
-HSPLandroid/widget/Toolbar;->measureChildCollapseMargins(Landroid/view/View;IIII[I)I
-HSPLandroid/widget/Toolbar;->measureChildConstrained(Landroid/view/View;IIIII)V
-HSPLandroid/widget/Toolbar;->onAttachedToWindow()V
-HSPLandroid/widget/Toolbar;->onDetachedFromWindow()V
-HSPLandroid/widget/Toolbar;->onLayout(ZIIII)V
-HSPLandroid/widget/Toolbar;->onMeasure(II)V
-HSPLandroid/widget/Toolbar;->onRtlPropertiesChanged(I)V
-HSPLandroid/widget/Toolbar;->onSaveInstanceState()Landroid/os/Parcelable;
-HSPLandroid/widget/Toolbar;->setContentInsetsRelative(II)V
-HSPLandroid/widget/Toolbar;->setLogo(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/Toolbar;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V
-HSPLandroid/widget/Toolbar;->setNavigationContentDescription(Ljava/lang/CharSequence;)V
-HSPLandroid/widget/Toolbar;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/widget/Toolbar;->setNavigationOnClickListener(Landroid/view/View$OnClickListener;)V
-HSPLandroid/widget/Toolbar;->setOnMenuItemClickListener(Landroid/widget/Toolbar$OnMenuItemClickListener;)V
-HSPLandroid/widget/Toolbar;->setPopupTheme(I)V
-HSPLandroid/widget/Toolbar;->setSubtitle(Ljava/lang/CharSequence;)V
-HSPLandroid/widget/Toolbar;->setSubtitleTextAppearance(Landroid/content/Context;I)V
-HSPLandroid/widget/Toolbar;->setTitle(Ljava/lang/CharSequence;)V
-HSPLandroid/widget/Toolbar;->setTitleTextAppearance(Landroid/content/Context;I)V
-HSPLandroid/widget/Toolbar;->shouldCollapse()Z
-HSPLandroid/widget/Toolbar;->shouldLayout(Landroid/view/View;)Z
-HSPLandroid/widget/ViewAnimator;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/ViewAnimator;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
-HSPLandroid/widget/ViewAnimator;->getBaseline()I
-HSPLandroid/widget/ViewAnimator;->getCurrentView()Landroid/view/View;
-HSPLandroid/widget/ViewAnimator;->setAnimateFirstView(Z)V
-HSPLandroid/widget/ViewAnimator;->setDisplayedChild(I)V
-HSPLandroid/widget/ViewAnimator;->showOnly(I)V
-HSPLandroid/widget/ViewAnimator;->showOnly(IZ)V
-HSPLandroid/widget/ViewSwitcher;-><init>(Landroid/content/Context;)V
-HSPLandroid/widget/ViewSwitcher;->addView(Landroid/view/View;ILandroid/view/ViewGroup$LayoutParams;)V
-PLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V
-PLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readRawVarint32()I
-PLcom/android/framework/protobuf/nano/CodedInputByteBufferNano;->readString()Ljava/lang/String;
-PLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->checkNoSpaceLeft()V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeBoolSize(IZ)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeInt32Size(II)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeInt64Size(IJ)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeMessageSize(ILcom/android/framework/protobuf/nano/MessageNano;)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeRawVarint64Size(J)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->computeStringSize(ILjava/lang/String;)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;[BII)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->encodedLength(Ljava/lang/CharSequence;)I
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeBool(IZ)V
-PLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeDouble(ID)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt32(II)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt32NoTag(I)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt64(IJ)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeInt64NoTag(J)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeMessage(ILcom/android/framework/protobuf/nano/MessageNano;)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeMessageNoTag(Lcom/android/framework/protobuf/nano/MessageNano;)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(B)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(I)V
-PLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawLittleEndian64(J)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint32(I)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint64(J)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeString(ILjava/lang/String;)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeStringNoTag(Ljava/lang/String;)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V
-HPLcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;->writeUInt32NoTag(I)V
-HPLcom/android/framework/protobuf/nano/MessageNano;->getCachedSize()I
-HPLcom/android/framework/protobuf/nano/MessageNano;->getSerializedSize()I
-HPLcom/android/framework/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/framework/protobuf/nano/MessageNano;[BII)Lcom/android/framework/protobuf/nano/MessageNano;
-HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;)[B
-HPLcom/android/framework/protobuf/nano/MessageNano;->toByteArray(Lcom/android/framework/protobuf/nano/MessageNano;[BII)V
-HSPLcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet;->getCountryCodeSet()Ljava/util/Set;
-HSPLcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;->getCountryCodeToRegionCodeMap()Ljava/util/Map;
-HSPLcom/android/i18n/phonenumbers/MetadataManager$1;-><init>()V
-HSPLcom/android/i18n/phonenumbers/MetadataManager$1;->loadMetadata(Ljava/lang/String;)Ljava/io/InputStream;
-HSPLcom/android/i18n/phonenumbers/MetadataManager;->getMetadataFromMultiFilePrefix(Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/String;Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/MetadataManager;->getMetadataFromSingleFileName(Ljava/lang/String;Lcom/android/i18n/phonenumbers/MetadataLoader;)Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/MetadataManager;->loadMetadataAndCloseInput(Ljava/io/InputStream;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;
-HSPLcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/NumberParseException$ErrorType;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$1;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$2;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$3;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$Leniency$4;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;->values()[Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;-><init>(Lcom/android/i18n/phonenumbers/MetadataSource;Ljava/util/Map;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->buildNationalNumberForParsing(Ljava/lang/String;Ljava/lang/StringBuilder;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->chooseFormattingPatternForNumber(Ljava/util/List;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createExtnPattern(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->createInstance(Lcom/android/i18n/phonenumbers/MetadataLoader;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractCountryCode(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;)I
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->extractPossibleNumber(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->format(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatInOriginalFormat(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatNsn(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/CharSequence;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->formatNsnUsingPattern(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/CharSequence;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getCountryCodeForValidRegion(Ljava/lang/String;)I
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getInstance()Lcom/android/i18n/phonenumbers/PhoneNumberUtil;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getMetadataForRegion(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNationalSignificantNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNddPrefixForRegion(Ljava/lang/String;Z)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberDescByType(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberType(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getNumberTypeHelper(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForCountryCode(I)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->getRegionCodeForNumberFromRegionList(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/util/List;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->hasFormattingPatternForNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z
-HPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isNumberGeographical(Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;I)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isNumberMatchingDesc(Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumber(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->isValidNumberForRegion(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Ljava/lang/String;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeAppendFormattedExtension(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeExtractCountryCode(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Ljava/lang/StringBuilder;ZLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)I
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripExtension(Ljava/lang/StringBuilder;)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripInternationalPrefixAndNormalize(Ljava/lang/StringBuilder;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->maybeStripNationalPrefixAndCarrierCode(Ljava/lang/StringBuilder;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Ljava/lang/StringBuilder;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalize(Ljava/lang/StringBuilder;)Ljava/lang/StringBuilder;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeDigits(Ljava/lang/CharSequence;Z)Ljava/lang/StringBuilder;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->normalizeHelper(Ljava/lang/CharSequence;Ljava/util/Map;Z)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parse(Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/CharSequence;Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseAndKeepRawInput(Ljava/lang/CharSequence;Ljava/lang/String;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parseHelper(Ljava/lang/CharSequence;Ljava/lang/String;ZZLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->parsePrefixAsIdd(Ljava/util/regex/Pattern;Ljava/lang/StringBuilder;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->prefixNumberWithCountryCallingCode(ILcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberFormat;Ljava/lang/StringBuilder;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->rawInputContainsNationalPrefix(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setInstance(Lcom/android/i18n/phonenumbers/PhoneNumberUtil;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->setItalianLeadingZerosForPhoneNumber(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;)V
-HSPLcom/android/i18n/phonenumbers/PhoneNumberUtil;->testNumberLength(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;)Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getFormat()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getLeadingDigitsPattern(I)Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getNationalPrefixFormattingRule()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->getPattern()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->leadingDigitsPatternSize()I
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->readExternal(Ljava/io/ObjectInput;)V
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setFormat(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setNationalPrefixFormattingRule(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setNationalPrefixOptionalWhenFormatting(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;->setPattern(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;-><init>()V
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getCountryCode()I
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getFixedLine()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getGeneralDesc()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getInternationalPrefix()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getLeadingDigits()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getMobile()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getNationalPrefix()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getNationalPrefixForParsing()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getNationalPrefixTransformRule()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getPager()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getPersonalNumber()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getPremiumRate()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getSameMobileAndFixedLinePattern()Z
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getSharedCost()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getTollFree()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getUan()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getVoicemail()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->getVoip()Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->hasLeadingDigits()Z
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->intlNumberFormats()Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->numberFormats()Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->readExternal(Ljava/io/ObjectInput;)V
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setCountryCode(I)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setFixedLine(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setGeneralDesc(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setId(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setInternationalPrefix(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setLeadingDigits(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setLeadingZeroPossible(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMainCountryForCode(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMobile(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setMobileNumberPortableRegion(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNationalPrefix(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNationalPrefixForParsing(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNationalPrefixTransformRule(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setNoInternationalDialling(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPager(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPersonalNumber(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPreferredExtnPrefix(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setPremiumRate(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setSameMobileAndFixedLinePattern(Z)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setSharedCost(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setTollFree(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setUan(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setVoicemail(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;->setVoip(Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;->getMetadataList()Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->getNationalNumberPattern()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->getPossibleLengthList()Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->getPossibleLengthLocalOnlyList()Ljava/util/List;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->readExternal(Ljava/io/ObjectInput;)V
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->setExampleNumber(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;->setNationalNumberPattern(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;->values()[Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCode()I
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getCountryCodeSource()Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getNationalNumber()J
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->getRawInput()Ljava/lang/String;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasCountryCode()Z
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasCountryCodeSource()Z
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasExtension()Z
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->hasRawInput()Z
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->isItalianLeadingZero()Z
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setCountryCode(I)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setCountryCodeSource(Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setNationalNumber(J)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;->setRawInput(Ljava/lang/String;)Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
-HSPLcom/android/i18n/phonenumbers/ShortNumbersRegionCodeSet;->getRegionCodeSet()Ljava/util/Set;
-HSPLcom/android/i18n/phonenumbers/internal/RegexBasedMatcher;->matchNationalNumber(Ljava/lang/CharSequence;Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;Z)Z
-HSPLcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache$1;->removeEldestEntry(Ljava/util/Map$Entry;)Z
-HSPLcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/i18n/phonenumbers/internal/RegexCache;->getPatternForRegex(Ljava/lang/String;)Ljava/util/regex/Pattern;
-HSPLcom/android/ims/-$$Lambda$ImsManager$Connector$1$QkUK3GnYms22eckyg3OL-BmtP3M;->run()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$Connector$N5r1SvOgM0jfHDwKkcQbyw_uTP0;->run()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$Connector$yM9scWJWjDp_h0yrkCgrjFZH5oI;->get()I
-HSPLcom/android/ims/-$$Lambda$ImsManager$D1JuJ3ba2jMHWDKlSpm03meBR1c;->run()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$Flxe43OUFnnU0pgnksvwPE6o3Mk;-><init>()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$Flxe43OUFnnU0pgnksvwPE6o3Mk;->executeRunnable(Ljava/lang/Runnable;)V
-HSPLcom/android/ims/-$$Lambda$ImsManager$LiW49wt0wLMYHjgtAwL8NLIATfs;->run()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$YhRaDrc3t9_7beNiU5gQcqZilOw;-><init>()V
-HSPLcom/android/ims/-$$Lambda$ImsManager$YhRaDrc3t9_7beNiU5gQcqZilOw;->test(Ljava/lang/Object;)Z
-HSPLcom/android/ims/-$$Lambda$MmTelFeatureConnection$1$2oMo1vy7PK7RvBpj3WhQvVVnmLE;->run()V
-HSPLcom/android/ims/-$$Lambda$szO0o3matefQqo-6NB-dzsr9eCw;-><init>()V
-HSPLcom/android/ims/-$$Lambda$szO0o3matefQqo-6NB-dzsr9eCw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/ims/ImsConfig;->addConfigCallback(Landroid/telephony/ims/ProvisioningManager$Callback;)V
-HSPLcom/android/ims/ImsConfig;->addConfigCallback(Landroid/telephony/ims/aidl/IImsConfigCallback;)V
-HSPLcom/android/ims/ImsConfig;->getConfigInt(I)I
-HSPLcom/android/ims/ImsConfig;->getProvisionedValue(I)I
-HSPLcom/android/ims/ImsConfig;->setConfig(II)I
-HSPLcom/android/ims/ImsConfig;->setProvisionedValue(II)I
-HSPLcom/android/ims/ImsConfigListener$Stub;-><init>()V
-HSPLcom/android/ims/ImsEcbm;->setEcbmStateListener(Lcom/android/ims/ImsEcbmStateListener;)V
-HSPLcom/android/ims/ImsException;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/ims/ImsException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;I)V
-HSPLcom/android/ims/ImsManager$2;->onQueryCapabilityConfiguration(IIZ)V
-HSPLcom/android/ims/ImsManager$Connector$1;->lambda$notifyStateChanged$0$ImsManager$Connector$1()V
-HSPLcom/android/ims/ImsManager$Connector$1;->notifyStateChanged()V
-HSPLcom/android/ims/ImsManager$Connector;-><init>(Landroid/content/Context;ILcom/android/ims/ImsManager$Connector$Listener;)V
-HSPLcom/android/ims/ImsManager$Connector;-><init>(Landroid/content/Context;ILcom/android/ims/ImsManager$Connector$Listener;Ljava/util/concurrent/Executor;)V
-HSPLcom/android/ims/ImsManager$Connector;->connect()V
-HSPLcom/android/ims/ImsManager$Connector;->getImsService()V
-HSPLcom/android/ims/ImsManager$Connector;->lambda$new$0$ImsManager$Connector()V
-HSPLcom/android/ims/ImsManager$Connector;->lambda$new$1$ImsManager$Connector()I
-HSPLcom/android/ims/ImsManager$Connector;->notifyReady()V
-HSPLcom/android/ims/ImsManager$Connector;->retryGetImsService()V
-HSPLcom/android/ims/ImsManager;-><init>(Landroid/content/Context;I)V
-HSPLcom/android/ims/ImsManager;->addCapabilitiesCallback(Landroid/telephony/ims/ImsMmTelManager$CapabilityCallback;)V
-HSPLcom/android/ims/ImsManager;->addCapabilitiesCallbackForSubscription(Landroid/telephony/ims/aidl/IImsCapabilityCallback;I)V
-HSPLcom/android/ims/ImsManager;->addNotifyStatusChangedCallbackIfAvailable(Lcom/android/ims/MmTelFeatureConnection$IFeatureUpdate;)V
-HSPLcom/android/ims/ImsManager;->addRegistrationCallback(Landroid/telephony/ims/ImsMmTelManager$RegistrationCallback;)V
-HSPLcom/android/ims/ImsManager;->addRegistrationCallbackForSubscription(Landroid/telephony/ims/aidl/IImsRegistrationCallback;I)V
-HSPLcom/android/ims/ImsManager;->changeMmTelCapability(Landroid/telephony/ims/feature/CapabilityChangeRequest;)V
-HSPLcom/android/ims/ImsManager;->checkAndThrowExceptionIfServiceUnavailable()V
-HSPLcom/android/ims/ImsManager;->connectIfServiceIsAvailable()V
-HSPLcom/android/ims/ImsManager;->getConfigInterface()Lcom/android/ims/ImsConfig;
-HSPLcom/android/ims/ImsManager;->getEcbmInterface()Lcom/android/ims/ImsEcbm;
-HSPLcom/android/ims/ImsManager;->getImsServiceState()I
-HSPLcom/android/ims/ImsManager;->getInstance(Landroid/content/Context;I)Lcom/android/ims/ImsManager;
-HSPLcom/android/ims/ImsManager;->getMultiEndpointInterface()Lcom/android/ims/ImsMultiEndpoint;
-HSPLcom/android/ims/ImsManager;->getRegistrationTech()I
-HSPLcom/android/ims/ImsManager;->getSmsFormat()Ljava/lang/String;
-HSPLcom/android/ims/ImsManager;->getSupplementaryServiceConfiguration()Lcom/android/ims/ImsUtInterface;
-HSPLcom/android/ims/ImsManager;->getWfcMode(Z)I
-HSPLcom/android/ims/ImsManager;->isDynamicBinding()Z
-HSPLcom/android/ims/ImsManager;->isEnhanced4gLteModeSettingEnabledByUser()Z
-HSPLcom/android/ims/ImsManager;->isGbaValid()Z
-HSPLcom/android/ims/ImsManager;->isNonTtyOrTtyOnVolteEnabled()Z
-HSPLcom/android/ims/ImsManager;->isServiceAvailable()Z
-HSPLcom/android/ims/ImsManager;->isSuppServicesOverUtEnabledByPlatform()Z
-HSPLcom/android/ims/ImsManager;->isTtyOnVoLteCapable()Z
-HSPLcom/android/ims/ImsManager;->isTurnOffImsAllowedByPlatform()Z
-HSPLcom/android/ims/ImsManager;->isVolteEnabledByPlatform()Z
-HSPLcom/android/ims/ImsManager;->isVolteProvisionedOnDevice()Z
-HSPLcom/android/ims/ImsManager;->isVtEnabledByPlatform()Z
-HSPLcom/android/ims/ImsManager;->isVtEnabledByUser()Z
-HSPLcom/android/ims/ImsManager;->isWfcEnabledByPlatform()Z
-HSPLcom/android/ims/ImsManager;->isWfcEnabledByUser()Z
-HSPLcom/android/ims/ImsManager;->isWfcRoamingEnabledByUser()Z
-HSPLcom/android/ims/ImsManager;->lambda$setRttConfig$4$ImsManager(ZI)V
-HSPLcom/android/ims/ImsManager;->lambda$setWfcModeInternal$1$ImsManager(I)V
-HSPLcom/android/ims/ImsManager;->lambda$setWfcRoamingSettingInternal$2$ImsManager(I)V
-HSPLcom/android/ims/ImsManager;->onSmsReady()V
-HSPLcom/android/ims/ImsManager;->open(Landroid/telephony/ims/feature/MmTelFeature$Listener;)V
-HSPLcom/android/ims/ImsManager;->queryMmTelCapability(II)Z
-HSPLcom/android/ims/ImsManager;->removeCapabilitiesCallbackForSubscription(Landroid/telephony/ims/aidl/IImsCapabilityCallback;I)V
-HSPLcom/android/ims/ImsManager;->removeNotifyStatusChangedCallback(Lcom/android/ims/MmTelFeatureConnection$IFeatureUpdate;)V
-HSPLcom/android/ims/ImsManager;->setConfigListener(Lcom/android/ims/ImsConfigListener;)V
-HSPLcom/android/ims/ImsManager;->setSmsListener(Landroid/telephony/ims/aidl/IImsSmsListener;)V
-HSPLcom/android/ims/ImsManager;->setUiTTYMode(Landroid/content/Context;ILandroid/os/Message;)V
-HSPLcom/android/ims/ImsManager;->updateImsServiceConfig(Z)V
-HSPLcom/android/ims/ImsManager;->updateRttConfigValue()Z
-HSPLcom/android/ims/ImsManager;->updateUtFeatureValue(Landroid/telephony/ims/feature/CapabilityChangeRequest;)V
-HSPLcom/android/ims/ImsManager;->updateVideoCallFeatureValue(Landroid/telephony/ims/feature/CapabilityChangeRequest;)V
-HSPLcom/android/ims/ImsManager;->updateVolteFeatureValue(Landroid/telephony/ims/feature/CapabilityChangeRequest;)V
-HSPLcom/android/ims/ImsManager;->updateWfcFeatureAndProvisionedValues(Landroid/telephony/ims/feature/CapabilityChangeRequest;)V
-HSPLcom/android/ims/ImsMultiEndpoint$ImsExternalCallStateListenerProxy;->onImsExternalCallStateUpdate(Ljava/util/List;)V
-HSPLcom/android/ims/ImsMultiEndpoint;->setExternalCallStateListener(Lcom/android/ims/ImsExternalCallStateListener;)V
-HSPLcom/android/ims/ImsUt;-><init>(Lcom/android/ims/internal/IImsUt;)V
-HSPLcom/android/ims/ImsUt;->registerForSuppServiceIndication(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/ims/MmTelFeatureConnection$1;->imsFeatureCreated(II)V
-HSPLcom/android/ims/MmTelFeatureConnection$1;->lambda$imsFeatureCreated$0$MmTelFeatureConnection$1(II)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager$1;->onSubscriptionsChanged()V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->addCallback(Landroid/os/IInterface;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->addCallbackForSubscription(Landroid/os/IInterface;I)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->linkCallbackToSubscription(Landroid/os/IInterface;I)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->removeCallback(Landroid/os/IInterface;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->removeCallbackForSubscription(Landroid/os/IInterface;I)V
-HSPLcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;->unlinkCallbackFromSubscription(Landroid/os/IInterface;I)V
-HSPLcom/android/ims/MmTelFeatureConnection$CapabilityCallbackManager;->registerCallback(Landroid/os/IInterface;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CapabilityCallbackManager;->registerCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CapabilityCallbackManager;->unregisterCallback(Landroid/os/IInterface;)V
-HSPLcom/android/ims/MmTelFeatureConnection$CapabilityCallbackManager;->unregisterCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection$ImsRegistrationCallbackAdapter;->registerCallback(Landroid/os/IInterface;)V
-HSPLcom/android/ims/MmTelFeatureConnection$ImsRegistrationCallbackAdapter;->registerCallback(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection;-><init>(Landroid/content/Context;I)V
-HSPLcom/android/ims/MmTelFeatureConnection;->access$600(Lcom/android/ims/MmTelFeatureConnection;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->addCapabilityCallback(Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->addCapabilityCallbackForSubscription(Landroid/telephony/ims/aidl/IImsCapabilityCallback;I)V
-HSPLcom/android/ims/MmTelFeatureConnection;->addRegistrationCallback(Landroid/telephony/ims/aidl/IImsRegistrationCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->addRegistrationCallbackForSubscription(Landroid/telephony/ims/aidl/IImsRegistrationCallback;I)V
-HSPLcom/android/ims/MmTelFeatureConnection;->changeEnabledCapabilities(Landroid/telephony/ims/feature/CapabilityChangeRequest;Landroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->checkServiceIsReady()V
-HSPLcom/android/ims/MmTelFeatureConnection;->create(Landroid/content/Context;I)Lcom/android/ims/MmTelFeatureConnection;
-HSPLcom/android/ims/MmTelFeatureConnection;->getConfig()Landroid/telephony/ims/aidl/IImsConfig;
-HSPLcom/android/ims/MmTelFeatureConnection;->getConfigInterface()Landroid/telephony/ims/aidl/IImsConfig;
-HSPLcom/android/ims/MmTelFeatureConnection;->getEcbmInterface()Lcom/android/ims/internal/IImsEcbm;
-HSPLcom/android/ims/MmTelFeatureConnection;->getFeatureState()I
-HSPLcom/android/ims/MmTelFeatureConnection;->getMultiEndpointInterface()Lcom/android/ims/internal/IImsMultiEndpoint;
-HSPLcom/android/ims/MmTelFeatureConnection;->getRegistration()Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLcom/android/ims/MmTelFeatureConnection;->getRegistrationTech()I
-HSPLcom/android/ims/MmTelFeatureConnection;->getSmsFormat()Ljava/lang/String;
-HSPLcom/android/ims/MmTelFeatureConnection;->getUtInterface()Lcom/android/ims/internal/IImsUt;
-HSPLcom/android/ims/MmTelFeatureConnection;->isBinderAlive()Z
-HSPLcom/android/ims/MmTelFeatureConnection;->isBinderReady()Z
-HSPLcom/android/ims/MmTelFeatureConnection;->onSmsReady()V
-HSPLcom/android/ims/MmTelFeatureConnection;->openConnection(Landroid/telephony/ims/feature/MmTelFeature$Listener;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->queryEnabledCapabilities(IILandroid/telephony/ims/aidl/IImsCapabilityCallback;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->removeCapabilityCallbackForSubscription(Landroid/telephony/ims/aidl/IImsCapabilityCallback;I)V
-HSPLcom/android/ims/MmTelFeatureConnection;->retrieveFeatureState()Ljava/lang/Integer;
-HSPLcom/android/ims/MmTelFeatureConnection;->setBinder(Landroid/os/IBinder;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->setSmsListener(Landroid/telephony/ims/aidl/IImsSmsListener;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->setStatusCallback(Lcom/android/ims/MmTelFeatureConnection$IFeatureUpdate;)V
-HSPLcom/android/ims/MmTelFeatureConnection;->setUiTTYMode(ILandroid/os/Message;)V
-HSPLcom/android/ims/internal/IImsEcbm$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsEcbmListener$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsExternalCallStateListener$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsFeatureStatusCallback$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsFeatureStatusCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/ims/internal/IImsMultiEndpoint$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub$Proxy;->imsFeatureCreated(II)V
-HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/ims/internal/IImsServiceFeatureCallback;
-HSPLcom/android/ims/internal/IImsServiceFeatureCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/ims/internal/IImsUt$Stub;-><init>()V
-HSPLcom/android/ims/internal/IImsUtListener$Stub;-><init>()V
-HSPLcom/android/ims/internal/uce/UceServiceBase$UceServiceBinder;->createPresenceService(Lcom/android/ims/internal/uce/presence/IPresenceListener;Lcom/android/ims/internal/uce/common/UceLong;)I
-HSPLcom/android/ims/internal/uce/UceServiceBase$UceServiceBinder;->getServiceStatus()Z
-HSPLcom/android/ims/internal/uce/UceServiceBase;-><init>()V
-HSPLcom/android/ims/internal/uce/UceServiceBase;->getBinder()Lcom/android/ims/internal/uce/UceServiceBase$UceServiceBinder;
-HSPLcom/android/ims/internal/uce/common/CapInfo$1;-><init>()V
-HSPLcom/android/ims/internal/uce/common/CapInfo;->isIpVideoSupported()Z
-HSPLcom/android/ims/internal/uce/common/CapInfo;->isIpVoiceSupported()Z
-HSPLcom/android/ims/internal/uce/common/StatusCode$1;-><init>()V
-HSPLcom/android/ims/internal/uce/common/UceLong$1;-><init>()V
-HSPLcom/android/ims/internal/uce/common/UceLong$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/ims/internal/uce/common/UceLong;
-HSPLcom/android/ims/internal/uce/common/UceLong$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/ims/internal/uce/common/UceLong;->getUceLong()J
-HSPLcom/android/ims/internal/uce/common/UceLong;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/ims/internal/uce/presence/IPresenceService$Stub;-><init>()V
-HSPLcom/android/ims/internal/uce/presence/PresCapInfo$1;-><init>()V
-HSPLcom/android/ims/internal/uce/presence/PresCmdId$1;-><init>()V
-HSPLcom/android/ims/internal/uce/presence/PresCmdStatus$1;-><init>()V
-HSPLcom/android/ims/internal/uce/presence/PresPublishTriggerType$1;-><init>()V
-HSPLcom/android/ims/internal/uce/presence/PresSipResponse$1;-><init>()V
-HSPLcom/android/ims/internal/uce/uceservice/IUceService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->getFrameworkShortcutFeaturesMap()Ljava/util/Map;
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->getTargetServiceComponentNameString(Landroid/content/Context;I)Ljava/lang/String;
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->isAccessibilityShortcutAvailable(Z)Z
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->onSettingsChanged()V
-HSPLcom/android/internal/accessibility/AccessibilityShortcutController;->setCurrentUser(I)V
-HSPLcom/android/internal/alsa/AlsaCardsParser;-><init>()V
-HSPLcom/android/internal/alsa/LineTokenizer;-><init>(Ljava/lang/String;)V
-HSPLcom/android/internal/app/AlertController;-><init>(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)V
-HSPLcom/android/internal/app/AlertController;->create(Landroid/content/Context;Landroid/content/DialogInterface;Landroid/view/Window;)Lcom/android/internal/app/AlertController;
-HSPLcom/android/internal/app/AlertController;->installContent()V
-HSPLcom/android/internal/app/AlertController;->resolvePanel(Landroid/view/View;Landroid/view/View;)Landroid/view/ViewGroup;
-HSPLcom/android/internal/app/AlertController;->setBackground(Landroid/content/res/TypedArray;Landroid/view/View;Landroid/view/View;Landroid/view/View;Landroid/view/View;ZZZ)V
-HSPLcom/android/internal/app/AlertController;->setupButtons(Landroid/view/ViewGroup;)V
-HSPLcom/android/internal/app/AlertController;->setupContent(Landroid/view/ViewGroup;)V
-HSPLcom/android/internal/app/AlertController;->setupCustomContent(Landroid/view/ViewGroup;)V
-HSPLcom/android/internal/app/AlertController;->setupTitle(Landroid/view/ViewGroup;)V
-HSPLcom/android/internal/app/AlertController;->setupView()V
+HSPLcom/android/icu/charset/CharsetDecoderICU;-><init>(Ljava/nio/charset/Charset;FJ)V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
+HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I
+HSPLcom/android/icu/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I
+HSPLcom/android/icu/charset/CharsetDecoderICU;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
+HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->implReplaceWith(Ljava/lang/String;)V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->implReset()V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetDecoderICU;
+HSPLcom/android/icu/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V
+HSPLcom/android/icu/charset/CharsetDecoderICU;->updateCallback()V
+HSPLcom/android/icu/charset/CharsetEncoderICU;-><init>(Ljava/nio/charset/Charset;FF[BJ)V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
+HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I
+HSPLcom/android/icu/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I
+HSPLcom/android/icu/charset/CharsetEncoderICU;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
+HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->implReset()V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->makeReplacement(Ljava/lang/String;J)[B
+HSPLcom/android/icu/charset/CharsetEncoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Lcom/android/icu/charset/CharsetEncoderICU;
+HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->setPosition(Ljava/nio/CharBuffer;)V
+HSPLcom/android/icu/charset/CharsetEncoderICU;->updateCallback()V
+HSPLcom/android/icu/charset/CharsetICU;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+HSPLcom/android/icu/charset/CharsetICU;->charsetForName(Ljava/lang/String;)Ljava/nio/charset/Charset;
+HSPLcom/android/icu/charset/CharsetICU;->newDecoder()Ljava/nio/charset/CharsetDecoder;
+HSPLcom/android/icu/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder;
+HSPLcom/android/icu/charset/NativeConverter;->U_FAILURE(I)Z
+HSPLcom/android/icu/charset/NativeConverter;->registerConverter(Ljava/lang/Object;J)V
+HSPLcom/android/icu/charset/NativeConverter;->setCallbackDecode(JLjava/nio/charset/CharsetDecoder;)V
+HSPLcom/android/icu/charset/NativeConverter;->setCallbackEncode(JLjava/nio/charset/CharsetEncoder;)V
+HSPLcom/android/icu/charset/NativeConverter;->translateCodingErrorAction(Ljava/nio/charset/CodingErrorAction;)I
+HSPLcom/android/icu/util/regex/MatcherNative;-><init>(Lcom/android/icu/util/regex/PatternNative;)V
+HSPLcom/android/icu/util/regex/MatcherNative;->create(Lcom/android/icu/util/regex/PatternNative;)Lcom/android/icu/util/regex/MatcherNative;
+HSPLcom/android/icu/util/regex/MatcherNative;->find(I[I)Z
+HSPLcom/android/icu/util/regex/MatcherNative;->findNext([I)Z
+HSPLcom/android/icu/util/regex/MatcherNative;->groupCount()I
+HSPLcom/android/icu/util/regex/MatcherNative;->hitEnd()Z
+HSPLcom/android/icu/util/regex/MatcherNative;->lookingAt([I)Z
+HSPLcom/android/icu/util/regex/MatcherNative;->matches([I)Z
+HSPLcom/android/icu/util/regex/MatcherNative;->setInput(Ljava/lang/String;II)V
+HSPLcom/android/icu/util/regex/MatcherNative;->useAnchoringBounds(Z)V
+HSPLcom/android/icu/util/regex/MatcherNative;->useTransparentBounds(Z)V
+HSPLcom/android/icu/util/regex/PatternNative;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/icu/util/regex/PatternNative;->create(Ljava/lang/String;I)Lcom/android/icu/util/regex/PatternNative;
+HSPLcom/android/icu/util/regex/PatternNative;->openMatcher()J
 HSPLcom/android/internal/app/AssistUtils;-><init>(Landroid/content/Context;)V
 HSPLcom/android/internal/app/AssistUtils;->getAssistComponentForUser(I)Landroid/content/ComponentName;
-HPLcom/android/internal/app/AssistUtils;->isPreinstalledAssistant(Landroid/content/Context;Landroid/content/ComponentName;)Z
-HPLcom/android/internal/app/AssistUtils;->shouldDisclose(Landroid/content/Context;Landroid/content/ComponentName;)Z
-HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HPLcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;->opActiveChanged(IILjava/lang/String;Z)V
-HSPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsCallback$Stub$Proxy;->opChanged(IILjava/lang/String;)V
-HSPLcom/android/internal/app/IAppOpsCallback$Stub;-><init>()V
-HSPLcom/android/internal/app/IAppOpsCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;->opNoted(IILjava/lang/String;I)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkAudioOperation(IIILjava/lang/String;)I
+HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperation(IILjava/lang/String;)I
 HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkPackage(ILjava/lang/String;)I
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteOperation(IILjava/lang/String;)I
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteProxyOperation(IILjava/lang/String;ILjava/lang/String;)I
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->setMode(IILjava/lang/String;I)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->setUidMode(III)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/internal/app/IAppOpsService$Stub;-><init>()V
-HSPLcom/android/internal/app/IAppOpsService$Stub;->asBinder()Landroid/os/IBinder;
+HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)I
+HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->noteProxyOperation(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)I
+HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->shouldCollectNotes(I)Z
 HSPLcom/android/internal/app/IAppOpsService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IAppOpsService;
-HPLcom/android/internal/app/IAppOpsService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/app/IAppOpsService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->getStatisticsStream()Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->isCharging()Z
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
-HSPLcom/android/internal/app/IBatteryStats$Stub;-><init>()V
+HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/app/IBatteryStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IBatteryStats;
-HPLcom/android/internal/app/IBatteryStats$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/app/IBatteryStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/ISoundTriggerService$Stub;-><init>()V
-HPLcom/android/internal/app/ISoundTriggerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;-><init>()V
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->onVoiceSessionHidden()V
-PLcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;->onVoiceSessionShown()V
-HSPLcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;-><init>()V
-PLcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractionManagerService;
 HSPLcom/android/internal/app/IVoiceInteractor$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/IVoiceInteractor;
-HSPLcom/android/internal/app/ProcessMap;-><init>()V
-HSPLcom/android/internal/app/ProcessMap;->get(Ljava/lang/String;I)Ljava/lang/Object;
-HSPLcom/android/internal/app/ProcessMap;->getMap()Landroid/util/ArrayMap;
-HSPLcom/android/internal/app/ProcessMap;->put(Ljava/lang/String;ILjava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/internal/app/ProcessMap;->remove(Ljava/lang/String;I)Ljava/lang/Object;
-HPLcom/android/internal/app/ProcessMap;->size()I
-HSPLcom/android/internal/app/ResolverActivity$ActionTitle;-><init>(Ljava/lang/String;ILjava/lang/String;III)V
-HSPLcom/android/internal/app/ResolverActivity;->getLabelRes(Ljava/lang/String;)I
-HSPLcom/android/internal/app/procstats/AssociationState$SourceKey;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/app/procstats/AssociationState$SourceKey;->hashCode()I
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->startActive(J)V
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->stop()V
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->stopActive(J)V
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->stopTracking(J)V
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->toString()Ljava/lang/String;
-HSPLcom/android/internal/app/procstats/AssociationState$SourceState;->trackProcState(IIJ)V
-HSPLcom/android/internal/app/procstats/AssociationState;-><init>(Lcom/android/internal/app/procstats/ProcessStats;Lcom/android/internal/app/procstats/ProcessStats$PackageState;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessState;)V
-HPLcom/android/internal/app/procstats/AssociationState;->add(Lcom/android/internal/app/procstats/AssociationState;)V
-HPLcom/android/internal/app/procstats/AssociationState;->commitStateTime(J)V
-HPLcom/android/internal/app/procstats/AssociationState;->dumpTimesCheckin(Ljava/io/PrintWriter;Ljava/lang/String;IJLjava/lang/String;J)V
-HSPLcom/android/internal/app/procstats/AssociationState;->readFromParcel(Lcom/android/internal/app/procstats/ProcessStats;Landroid/os/Parcel;I)Ljava/lang/String;
-HPLcom/android/internal/app/procstats/AssociationState;->resetSafely(J)V
-HSPLcom/android/internal/app/procstats/AssociationState;->startSource(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/AssociationState$SourceState;
-HPLcom/android/internal/app/procstats/AssociationState;->writeToParcel(Lcom/android/internal/app/procstats/ProcessStats;Landroid/os/Parcel;J)V
-HPLcom/android/internal/app/procstats/DumpUtils;->collapseString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/internal/app/procstats/DumpUtils;->dumpAdjTimesCheckin(Ljava/io/PrintWriter;Ljava/lang/String;[JIJJ)V
-HPLcom/android/internal/app/procstats/DumpUtils;->printAdjTagAndValue(Ljava/io/PrintWriter;IJ)V
-HPLcom/android/internal/app/procstats/DumpUtils;->printProcStateTag(Ljava/io/PrintWriter;I)V
-HSPLcom/android/internal/app/procstats/DurationsTable;->addDuration(IJ)V
-HSPLcom/android/internal/app/procstats/DurationsTable;->addDurations(Lcom/android/internal/app/procstats/DurationsTable;)V
-HSPLcom/android/internal/app/procstats/IProcessStats$Stub;-><init>()V
-HSPLcom/android/internal/app/procstats/IProcessStats$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/app/procstats/IProcessStats;
-HPLcom/android/internal/app/procstats/IProcessStats$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/procstats/ProcessState$1;-><init>()V
-HSPLcom/android/internal/app/procstats/ProcessState$PssAggr;-><init>()V
-HSPLcom/android/internal/app/procstats/ProcessState$PssAggr;->add(JJ)V
-HSPLcom/android/internal/app/procstats/ProcessState;-><init>(Lcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;IJLjava/lang/String;J)V
-HSPLcom/android/internal/app/procstats/ProcessState;-><init>(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;IJLjava/lang/String;)V
-HPLcom/android/internal/app/procstats/ProcessState;->add(Lcom/android/internal/app/procstats/ProcessState;)V
-HSPLcom/android/internal/app/procstats/ProcessState;->addPss(JJJZIJLandroid/util/ArrayMap;)V
-HSPLcom/android/internal/app/procstats/ProcessState;->aggregatePss(Lcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;J)V
-HSPLcom/android/internal/app/procstats/ProcessState;->clone(J)Lcom/android/internal/app/procstats/ProcessState;
-HSPLcom/android/internal/app/procstats/ProcessState;->commitStateTime(J)V
-HSPLcom/android/internal/app/procstats/ProcessState;->decActiveServices(Ljava/lang/String;)V
-HSPLcom/android/internal/app/procstats/ProcessState;->decStartedServices(IJLjava/lang/String;)V
-HPLcom/android/internal/app/procstats/ProcessState;->dumpAllPssCheckin(Ljava/io/PrintWriter;)V
-HPLcom/android/internal/app/procstats/ProcessState;->dumpAllStateCheckin(Ljava/io/PrintWriter;J)V
-HPLcom/android/internal/app/procstats/ProcessState;->dumpPackageProcCheckin(Ljava/io/PrintWriter;Ljava/lang/String;IJLjava/lang/String;J)V
-HPLcom/android/internal/app/procstats/ProcessState;->dumpProcCheckin(Ljava/io/PrintWriter;Ljava/lang/String;IJ)V
-HPLcom/android/internal/app/procstats/ProcessState;->dumpPssSamplesCheckin(Ljava/io/PrintWriter;[JI)V
-HSPLcom/android/internal/app/procstats/ProcessState;->ensureNotDead()V
-HSPLcom/android/internal/app/procstats/ProcessState;->getPssAverage(I)J
-HSPLcom/android/internal/app/procstats/ProcessState;->getPssSampleCount(I)J
-HSPLcom/android/internal/app/procstats/ProcessState;->makeActive()V
-HSPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Landroid/util/ArrayMap;I)Lcom/android/internal/app/procstats/ProcessState;
-HSPLcom/android/internal/app/procstats/ProcessState;->pullFixedProc(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
-HSPLcom/android/internal/app/procstats/ProcessState;->readFromParcel(Landroid/os/Parcel;Z)Z
-HPLcom/android/internal/app/procstats/ProcessState;->reportExcessiveCpu(Landroid/util/ArrayMap;)V
-HSPLcom/android/internal/app/procstats/ProcessState;->setCombinedState(IJ)V
-HSPLcom/android/internal/app/procstats/ProcessState;->setState(IIJLandroid/util/ArrayMap;)V
-HSPLcom/android/internal/app/procstats/ProcessState;->toString()Ljava/lang/String;
-HPLcom/android/internal/app/procstats/ProcessState;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/app/procstats/ProcessStats$1;-><init>()V
-HPLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/app/procstats/ProcessStats;
-HPLcom/android/internal/app/procstats/ProcessStats$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/internal/app/procstats/ProcessStats$PackageState;-><init>(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;IJ)V
-HSPLcom/android/internal/app/procstats/ProcessStats$PackageState;->getAssociationStateLocked(Lcom/android/internal/app/procstats/ProcessState;Ljava/lang/String;)Lcom/android/internal/app/procstats/AssociationState;
-HSPLcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;-><init>([I[I)V
-HPLcom/android/internal/app/procstats/ProcessStats;-><init>(Landroid/os/Parcel;)V
-HSPLcom/android/internal/app/procstats/ProcessStats;-><init>(Z)V
-HPLcom/android/internal/app/procstats/ProcessStats;->add(Lcom/android/internal/app/procstats/ProcessStats;)V
-HSPLcom/android/internal/app/procstats/ProcessStats;->addSysMemUsage(JJJJJ)V
-HSPLcom/android/internal/app/procstats/ProcessStats;->buildTimePeriodStartClockStr()V
-HSPLcom/android/internal/app/procstats/ProcessStats;->computeTotalMemoryUse(Lcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;J)V
-HPLcom/android/internal/app/procstats/ProcessStats;->dumpCheckinLocked(Ljava/io/PrintWriter;Ljava/lang/String;I)V
-HPLcom/android/internal/app/procstats/ProcessStats;->getAssociationStateLocked(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/AssociationState;
-HSPLcom/android/internal/app/procstats/ProcessStats;->getPackageStateLocked(Ljava/lang/String;IJ)Lcom/android/internal/app/procstats/ProcessStats$PackageState;
-HSPLcom/android/internal/app/procstats/ProcessStats;->getProcessStateLocked(Lcom/android/internal/app/procstats/ProcessStats$PackageState;Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
-HSPLcom/android/internal/app/procstats/ProcessStats;->getProcessStateLocked(Ljava/lang/String;IJLjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
-HSPLcom/android/internal/app/procstats/ProcessStats;->getServiceStateLocked(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
-HSPLcom/android/internal/app/procstats/ProcessStats;->read(Ljava/io/InputStream;)V
-HSPLcom/android/internal/app/procstats/ProcessStats;->readCheckedInt(Landroid/os/Parcel;ILjava/lang/String;)Z
-HSPLcom/android/internal/app/procstats/ProcessStats;->readCommonString(Landroid/os/Parcel;I)Ljava/lang/String;
-HSPLcom/android/internal/app/procstats/ProcessStats;->readCompactedLongArray(Landroid/os/Parcel;I[JI)V
-HSPLcom/android/internal/app/procstats/ProcessStats;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/app/procstats/ProcessStats;->readFully(Ljava/io/InputStream;[I)[B
-HSPLcom/android/internal/app/procstats/ProcessStats;->resetCommon()V
-HPLcom/android/internal/app/procstats/ProcessStats;->resetSafely()V
-HSPLcom/android/internal/app/procstats/ProcessStats;->splitAndParseNumbers(Ljava/lang/String;)[I
-HSPLcom/android/internal/app/procstats/ProcessStats;->updateFragmentation()V
-HSPLcom/android/internal/app/procstats/ProcessStats;->updateTrackingAssociationsLocked(IJ)V
-HPLcom/android/internal/app/procstats/ProcessStats;->writeCommonString(Landroid/os/Parcel;Ljava/lang/String;)V
-HPLcom/android/internal/app/procstats/ProcessStats;->writeCompactedLongArray(Landroid/os/Parcel;[JI)V
-HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;I)V
-HPLcom/android/internal/app/procstats/ProcessStats;->writeToParcel(Landroid/os/Parcel;JI)V
-HSPLcom/android/internal/app/procstats/PssTable;->mergeStats(IIJJJJJJJJJ)V
-HPLcom/android/internal/app/procstats/PssTable;->mergeStats(Lcom/android/internal/app/procstats/PssTable;)V
-HSPLcom/android/internal/app/procstats/PssTable;->mergeStats([JIIJJJJJJJJJ)V
-HPLcom/android/internal/app/procstats/PssTable;->mergeStats([JI[JI)V
-HSPLcom/android/internal/app/procstats/ServiceState;-><init>(Lcom/android/internal/app/procstats/ProcessStats;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessState;)V
-HPLcom/android/internal/app/procstats/ServiceState;->add(Lcom/android/internal/app/procstats/ServiceState;)V
-HSPLcom/android/internal/app/procstats/ServiceState;->applyNewOwner(Ljava/lang/Object;)V
-HSPLcom/android/internal/app/procstats/ServiceState;->clearCurrentOwner(Ljava/lang/Object;Z)V
-HPLcom/android/internal/app/procstats/ServiceState;->commitStateTime(J)V
-HPLcom/android/internal/app/procstats/ServiceState;->dumpTimeCheckin(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;IJLjava/lang/String;IIIJJ)V
-HPLcom/android/internal/app/procstats/ServiceState;->dumpTimesCheckin(Ljava/io/PrintWriter;Ljava/lang/String;IJLjava/lang/String;J)V
-HSPLcom/android/internal/app/procstats/ServiceState;->readFromParcel(Landroid/os/Parcel;)Z
-HPLcom/android/internal/app/procstats/ServiceState;->resetSafely(J)V
-HSPLcom/android/internal/app/procstats/ServiceState;->setBound(ZIJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->setExecuting(ZIJ)V
-HPLcom/android/internal/app/procstats/ServiceState;->setForeground(ZIJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->setMemFactor(IJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->setRestarting(ZIJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->setStarted(ZIJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->updateRunning(IJ)V
-HSPLcom/android/internal/app/procstats/ServiceState;->updateStartedState(IJ)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->binarySearch(B)I
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->copyFrom(Lcom/android/internal/app/procstats/SparseMappingTable$Table;I)V
-HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->dumpInternalState()Ljava/lang/String;
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getArrayForKey(I)[J
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getKey(B)I
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getKeyAt(I)I
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getKeyCount()I
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getOrAddKey(BI)I
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getValue(I)J
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getValue(II)J
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->getValueForId(BI)J
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->readFromParcel(Landroid/os/Parcel;)Z
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->resetTable()V
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->setValue(IIJ)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->setValue(IJ)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable$Table;->validateKeys(Z)Z
-HPLcom/android/internal/app/procstats/SparseMappingTable$Table;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable;->readCompactedLongArray(Landroid/os/Parcel;[JI)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/app/procstats/SparseMappingTable;->reset()V
-HPLcom/android/internal/app/procstats/SparseMappingTable;->writeCompactedLongArray(Landroid/os/Parcel;[JI)V
-HPLcom/android/internal/app/procstats/SparseMappingTable;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/app/procstats/SysMemUsageTable;->getTotalMemUsage()[J
-HSPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(I[JI)V
-HPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeStats(Lcom/android/internal/app/procstats/SysMemUsageTable;)V
-HSPLcom/android/internal/app/procstats/SysMemUsageTable;->mergeSysMemUsage([JI[JI)V
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getAppWidgetIds(Landroid/content/ComponentName;)[I
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;-><init>()V
+HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/appwidget/IAppWidgetService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/appwidget/IAppWidgetService;
-HPLcom/android/internal/appwidget/IAppWidgetService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->cancelFullBackup()V
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->checkFullBackupSize(J)I
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->configurationIntent()Landroid/content/Intent;
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->currentDestinationString()Ljava/lang/String;
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->dataManagementIntent()Landroid/content/Intent;
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->dataManagementIntentLabel()Ljava/lang/CharSequence;
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->finishBackup()I
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->getBackupQuota(Ljava/lang/String;Z)J
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->getTransportFlags()I
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->name()Ljava/lang/String;
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->performBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->performFullBackup(Landroid/content/pm/PackageInfo;Landroid/os/ParcelFileDescriptor;I)I
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->requestFullBackupTime()J
-HPLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->sendBackupData(I)I
-PLcom/android/internal/backup/IBackupTransport$Stub$Proxy;->transportDirName()Ljava/lang/String;
-HPLcom/android/internal/backup/IBackupTransport$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/backup/IBackupTransport;
-HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->close()V
-HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Landroid/content/pm/PackageParser$Package;)Lcom/android/internal/content/NativeLibraryHelper$Handle;
-HPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/io/File;)Lcom/android/internal/content/NativeLibraryHelper$Handle;
-HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->create(Ljava/util/List;ZZZ)Lcom/android/internal/content/NativeLibraryHelper$Handle;
-HSPLcom/android/internal/content/NativeLibraryHelper$Handle;->finalize()V
-HSPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesForSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;[Ljava/lang/String;Z)I
-HPLcom/android/internal/content/NativeLibraryHelper;->copyNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/io/File;Ljava/lang/String;)I
-HSPLcom/android/internal/content/NativeLibraryHelper;->createNativeLibrarySubdir(Ljava/io/File;)V
-HSPLcom/android/internal/content/NativeLibraryHelper;->findSupportedAbi(Lcom/android/internal/content/NativeLibraryHelper$Handle;[Ljava/lang/String;)I
-HSPLcom/android/internal/content/NativeLibraryHelper;->hasRenderscriptBitcode(Lcom/android/internal/content/NativeLibraryHelper$Handle;)Z
-HPLcom/android/internal/content/NativeLibraryHelper;->removeNativeBinariesFromDirLI(Ljava/io/File;Z)V
-HPLcom/android/internal/content/NativeLibraryHelper;->sumNativeBinariesWithOverride(Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J
-PLcom/android/internal/content/PackageHelper$1;->getAllow3rdPartyOnInternalConfig(Landroid/content/Context;)Z
-PLcom/android/internal/content/PackageHelper$1;->getExistingAppInfo(Landroid/content/Context;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/internal/content/PackageHelper$1;->getForceAllowOnExternalSetting(Landroid/content/Context;)Z
-PLcom/android/internal/content/PackageHelper$1;->getStorageManager(Landroid/content/Context;)Landroid/os/storage/StorageManager;
-HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Lcom/android/internal/content/NativeLibraryHelper$Handle;Ljava/lang/String;)J
-HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;)J
-HPLcom/android/internal/content/PackageHelper;->calculateInstalledSize(Landroid/content/pm/PackageParser$PackageLite;Ljava/lang/String;Ljava/io/FileDescriptor;)J
-HPLcom/android/internal/content/PackageHelper;->fitsOnInternal(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Z
-HPLcom/android/internal/content/PackageHelper;->getDefaultTestableInterface()Lcom/android/internal/content/PackageHelper$TestableInterface;
-HSPLcom/android/internal/content/PackageHelper;->getStorageManager()Landroid/os/storage/IStorageManager;
-HPLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)I
-HPLcom/android/internal/content/PackageHelper;->resolveInstallLocation(Landroid/content/Context;Ljava/lang/String;IJI)I
-HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;)Ljava/lang/String;
-HPLcom/android/internal/content/PackageHelper;->resolveInstallVolume(Landroid/content/Context;Landroid/content/pm/PackageInstaller$SessionParams;Lcom/android/internal/content/PackageHelper$TestableInterface;)Ljava/lang/String;
-HSPLcom/android/internal/content/PackageMonitor;-><init>()V
-HSPLcom/android/internal/content/PackageMonitor;->didSomePackagesChange()Z
-HSPLcom/android/internal/content/PackageMonitor;->getChangingUserId()I
-HSPLcom/android/internal/content/PackageMonitor;->getPackageName(Landroid/content/Intent;)Ljava/lang/String;
-HPLcom/android/internal/content/PackageMonitor;->isComponentModified(Ljava/lang/String;)Z
-HSPLcom/android/internal/content/PackageMonitor;->isPackageAppearing(Ljava/lang/String;)I
-HSPLcom/android/internal/content/PackageMonitor;->isPackageDisappearing(Ljava/lang/String;)I
-HSPLcom/android/internal/content/PackageMonitor;->isPackageModified(Ljava/lang/String;)Z
-HSPLcom/android/internal/content/PackageMonitor;->onBeginPackageChanges()V
-HSPLcom/android/internal/content/PackageMonitor;->onFinishPackageChanges()V
-HSPLcom/android/internal/content/PackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/internal/content/PackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V
-HSPLcom/android/internal/content/PackageMonitor;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
-HSPLcom/android/internal/content/PackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/internal/content/PackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/internal/content/PackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
-HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
-HPLcom/android/internal/content/PackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V
-HSPLcom/android/internal/content/PackageMonitor;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/content/PackageMonitor;->onSomePackagesChanged()V
-HSPLcom/android/internal/content/PackageMonitor;->onUidRemoved(I)V
-HSPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/Looper;Landroid/os/UserHandle;Z)V
-HSPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/Looper;Z)V
-HSPLcom/android/internal/content/PackageMonitor;->register(Landroid/content/Context;Landroid/os/UserHandle;ZLandroid/os/Handler;)V
-HSPLcom/android/internal/content/ReferrerIntent$1;-><init>()V
-HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/content/ReferrerIntent;
-HSPLcom/android/internal/content/ReferrerIntent$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HPLcom/android/internal/content/ReferrerIntent;-><init>(Landroid/content/Intent;Ljava/lang/String;)V
-HPLcom/android/internal/content/ReferrerIntent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/internal/graphics/ColorUtils;->HSLToColor([F)I
-HSPLcom/android/internal/graphics/ColorUtils;->RGBToHSL(III[F)V
-HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->getFrameTime()J
-HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;->postFrameCallback(Landroid/view/Choreographer$FrameCallback;)V
+HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;-><init>(JI)V
+HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/internal/compat/ChangeReporter$ChangeReport;->hashCode()I
+HSPLcom/android/internal/compat/ChangeReporter;-><init>(I)V
+HSPLcom/android/internal/compat/ChangeReporter;->debugLog(IJI)V
+HSPLcom/android/internal/compat/ChangeReporter;->isAlreadyReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)Z
+HSPLcom/android/internal/compat/ChangeReporter;->markAsReported(ILcom/android/internal/compat/ChangeReporter$ChangeReport;)V
+HSPLcom/android/internal/compat/ChangeReporter;->reportChange(IJI)V
+HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToDebug(IJI)Z
+HSPLcom/android/internal/compat/ChangeReporter;->shouldWriteToStatsLog(IJI)Z
+HSPLcom/android/internal/compat/ChangeReporter;->stateToString(I)Ljava/lang/String;
+HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;-><init>(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;Landroid/content/res/Resources;)V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->addDrawable(Landroid/graphics/drawable/Drawable;)I
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->canApplyTheme()Z
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->getCurrentDrawableIndexBasedOnScale()I
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->mutate()V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;-><init>()V
+HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;-><init>(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Landroid/content/res/Resources;)V
+HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;-><init>(Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;Landroid/content/res/Resources;Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$1;)V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->applyTheme(Landroid/content/res/Resources$Theme;)V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->clearMutated()V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
@@ -20226,1258 +14635,178 @@
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->mutate()Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->onStateChange([I)Z
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->setConstantState(Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;)V
-HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->start()V
 HSPLcom/android/internal/graphics/drawable/AnimationScaleListDrawable;->stop()V
-HSPLcom/android/internal/infra/-$$Lambda$7-CJJfrUZBVuXZyYFEWBNh8Mky8;-><init>()V
-HSPLcom/android/internal/infra/-$$Lambda$7-CJJfrUZBVuXZyYFEWBNh8Mky8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcCU8EMuMNAy4;-><init>()V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcCU8EMuMNAy4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;-><init>()V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;-><init>()V
-HPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;-><init>()V
-HSPLcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;->accept(Ljava/lang/Object;)V
-PLcom/android/internal/infra/-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A;-><init>()V
-HPLcom/android/internal/infra/-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/internal/infra/AbstractRemoteService$VultureCallback;Landroid/os/Handler;IZI)V
-HSPLcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;->handleOnDestroy()V
-HSPLcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;->handlePendingRequestWhileUnBound(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V
-HSPLcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;->handlePendingRequests()V
-HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->finish()Z
-HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->getService()Lcom/android/internal/infra/AbstractRemoteService;
-HSPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->isFinal()Z
-HPLcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;->onFinished()V
-HPLcom/android/internal/infra/AbstractRemoteService$MyAsyncPendingRequest;->run()V
-HSPLcom/android/internal/infra/AbstractRemoteService$PendingRequest;-><init>(Lcom/android/internal/infra/AbstractRemoteService;)V
-HSPLcom/android/internal/infra/AbstractRemoteService$PendingRequest;->onFinished()V
-HSPLcom/android/internal/infra/AbstractRemoteService$RemoteServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HPLcom/android/internal/infra/AbstractRemoteService$RemoteServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/internal/infra/AbstractRemoteService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/internal/infra/AbstractRemoteService$VultureCallback;Landroid/os/Handler;IZ)V
-HPLcom/android/internal/infra/AbstractRemoteService;->binderDied()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->checkIfDestroyed()Z
-HSPLcom/android/internal/infra/AbstractRemoteService;->destroy()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->finishRequest(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V
-HPLcom/android/internal/infra/AbstractRemoteService;->handleBinderDied()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->handleEnsureBound()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->handleEnsureUnbound()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->handleOnConnectedStateChanged(Z)V
-HSPLcom/android/internal/infra/AbstractRemoteService;->handlePendingRequest(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V
-HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleAsyncRequest(Lcom/android/internal/infra/AbstractRemoteService$AsyncRequest;)V
-HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleBind()V
-HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleRequest(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V
-HSPLcom/android/internal/infra/AbstractRemoteService;->scheduleUnbind()V
-HPLcom/android/internal/infra/AbstractRemoteService;->toString()Ljava/lang/String;
-HSPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/internal/infra/AbstractRemoteService$VultureCallback;Landroid/os/Handler;IZ)V
-HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handleOnDestroy()V
-HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequestWhileUnBound(Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;)V
-HPLcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;->handlePendingRequests()V
-HSPLcom/android/internal/infra/WhitelistHelper;->getWhitelistedComponents(Ljava/lang/String;)Landroid/util/ArraySet;
-HPLcom/android/internal/infra/WhitelistHelper;->isWhitelisted(Landroid/content/ComponentName;)Z
-HSPLcom/android/internal/infra/WhitelistHelper;->isWhitelisted(Ljava/lang/String;)Z
-HPLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
-HPLcom/android/internal/infra/WhitelistHelper;->setWhitelist(Ljava/util/List;Ljava/util/List;)V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->notifyUserAction()V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->reportFullscreenMode(Z)V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->reportStartInput(Landroid/os/IBinder;)V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->setImeWindowStatus(II)V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;->updateStatusIcon(Ljava/lang/String;I)V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub;-><init>()V
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations$OpsHolder;->getAndWarnIfNull()Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations$OpsHolder;->set(Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;-><init>()V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->notifyUserAction()V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->reportFullscreenMode(Z)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->reportStartInput(Landroid/os/IBinder;)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->set(Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->setImeWindowStatus(II)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperations;->updateStatusIcon(Ljava/lang/String;I)V
-HSPLcom/android/internal/inputmethod/InputMethodPrivilegedOperationsRegistry;->put(Landroid/os/IBinder;Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations;)V
 HSPLcom/android/internal/inputmethod/SubtypeLocaleUtils;->constructLocaleFromString(Ljava/lang/String;)Ljava/util/Locale;
-HSPLcom/android/internal/location/GpsNetInitiatedHandler$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HPLcom/android/internal/location/GpsNetInitiatedHandler$2;->onCallStateChanged(ILjava/lang/String;)V
-HSPLcom/android/internal/location/GpsNetInitiatedHandler;-><init>(Landroid/content/Context;Landroid/location/INetInitiatedListener;Z)V
-HSPLcom/android/internal/location/GpsNetInitiatedHandler;->setEmergencyExtensionSeconds(I)V
-HSPLcom/android/internal/location/GpsNetInitiatedHandler;->setSuplEsEnabled(Z)V
-HSPLcom/android/internal/location/GpsNetInitiatedHandler;->updateLocationMode()V
-PLcom/android/internal/location/ILocationProvider$Stub$Proxy;->setLocationProviderManager(Lcom/android/internal/location/ILocationProviderManager;)V
-HPLcom/android/internal/location/ILocationProvider$Stub$Proxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-HSPLcom/android/internal/location/ILocationProvider$Stub;-><init>()V
-HSPLcom/android/internal/location/ILocationProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProvider;
-HSPLcom/android/internal/location/ILocationProviderManager$Stub;-><init>()V
-HPLcom/android/internal/location/ILocationProviderManager$Stub;->asBinder()Landroid/os/IBinder;
-HPLcom/android/internal/location/ILocationProviderManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/location/ProviderProperties$1;-><init>()V
-HSPLcom/android/internal/location/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderProperties;
-HSPLcom/android/internal/location/ProviderProperties$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/internal/location/ProviderProperties;-><init>(ZZZZZZZII)V
-HSPLcom/android/internal/location/ProviderProperties;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/internal/location/ProviderRequest$1;-><init>()V
-HSPLcom/android/internal/location/ProviderRequest;-><init>()V
-HPLcom/android/internal/location/ProviderRequest;->writeToParcel(Landroid/os/Parcel;I)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->buildProto()Lcom/android/internal/location/nano/GnssLogsProto$PowerMetrics;
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;->reportSignalQuality([FI)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->addItem(D)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getCount()I
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getMean()D
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->getStandardDeviation()D
-HSPLcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;->reset()V
-HSPLcom/android/internal/location/gnssmetrics/GnssMetrics;-><init>(Lcom/android/internal/app/IBatteryStats;)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->dumpGnssMetricsAsProtoString()Ljava/lang/String;
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logCn0([FI)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logMissedReports(II)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logPositionAccuracyMeters(F)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logReceivedLocationStatus(Z)V
-HPLcom/android/internal/location/gnssmetrics/GnssMetrics;->logTimeToFirstFixMilliSecs(I)V
-HSPLcom/android/internal/location/gnssmetrics/GnssMetrics;->reset()V
-PLcom/android/internal/location/nano/GnssLogsProto$GnssLog;->clear()Lcom/android/internal/location/nano/GnssLogsProto$GnssLog;
-PLcom/android/internal/location/nano/GnssLogsProto$GnssLog;->computeSerializedSize()I
-PLcom/android/internal/location/nano/GnssLogsProto$GnssLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/internal/location/nano/GnssLogsProto$PowerMetrics;->computeSerializedSize()I
-PLcom/android/internal/location/nano/GnssLogsProto$PowerMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
 HSPLcom/android/internal/logging/AndroidConfig;-><init>()V
-HSPLcom/android/internal/logging/AndroidHandler$1;-><init>()V
 HSPLcom/android/internal/logging/AndroidHandler$1;->format(Ljava/util/logging/LogRecord;)Ljava/lang/String;
+HSPLcom/android/internal/logging/AndroidHandler;-><init>()V
+HSPLcom/android/internal/logging/AndroidHandler;->getAndroidLevel(Ljava/util/logging/Level;)I
 HSPLcom/android/internal/logging/AndroidHandler;->publish(Ljava/util/logging/LogRecord;)V
-HSPLcom/android/internal/logging/EventLogTags;->writeCommitSysConfigFile(Ljava/lang/String;J)V
+HSPLcom/android/internal/logging/EventLogTags;->writeSysuiMultiAction([Ljava/lang/Object;)V
 HSPLcom/android/internal/logging/MetricsLogger;-><init>()V
-HSPLcom/android/internal/logging/MetricsLogger;->action(I)V
 HSPLcom/android/internal/logging/MetricsLogger;->action(II)V
-HSPLcom/android/internal/logging/MetricsLogger;->action(IZ)V
-HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/content/Context;II)V
-HSPLcom/android/internal/logging/MetricsLogger;->action(Landroid/metrics/LogMaker;)V
-HSPLcom/android/internal/logging/MetricsLogger;->count(Landroid/content/Context;Ljava/lang/String;I)V
-HSPLcom/android/internal/logging/MetricsLogger;->count(Ljava/lang/String;I)V
+HSPLcom/android/internal/logging/MetricsLogger;->getLogger()Lcom/android/internal/logging/MetricsLogger;
 HSPLcom/android/internal/logging/MetricsLogger;->hidden(I)V
-HSPLcom/android/internal/logging/MetricsLogger;->hidden(Landroid/content/Context;I)V
-HSPLcom/android/internal/logging/MetricsLogger;->histogram(Landroid/content/Context;Ljava/lang/String;I)V
-HSPLcom/android/internal/logging/MetricsLogger;->histogram(Ljava/lang/String;I)V
 HSPLcom/android/internal/logging/MetricsLogger;->saveLog(Landroid/metrics/LogMaker;)V
-HSPLcom/android/internal/logging/MetricsLogger;->visible(I)V
-HSPLcom/android/internal/logging/MetricsLogger;->visible(Landroid/content/Context;I)V
 HSPLcom/android/internal/logging/MetricsLogger;->write(Landroid/metrics/LogMaker;)V
-HSPLcom/android/internal/net/INetworkWatchlistManager$Stub;-><init>()V
-HPLcom/android/internal/net/INetworkWatchlistManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/net/INetworkWatchlistManager;
-HSPLcom/android/internal/net/NetworkStatsFactory;-><init>()V
-HSPLcom/android/internal/net/NetworkStatsFactory;-><init>(Ljava/io/File;Z)V
-HSPLcom/android/internal/net/NetworkStatsFactory;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Z)V
-HPLcom/android/internal/net/NetworkStatsFactory;->augmentWithStackedInterfaces([Ljava/lang/String;)[Ljava/lang/String;
-HPLcom/android/internal/net/NetworkStatsFactory;->noteStackedIface(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/net/NetworkStatsFactory;->readBpfNetworkStatsDev()Landroid/net/NetworkStats;
-HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetail(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats;
-HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsDetailInternal(I[Ljava/lang/String;ILandroid/net/NetworkStats;)Landroid/net/NetworkStats;
-HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsSummaryDev()Landroid/net/NetworkStats;
-HSPLcom/android/internal/net/NetworkStatsFactory;->readNetworkStatsSummaryXt()Landroid/net/NetworkStats;
-HSPLcom/android/internal/notification/SystemNotificationChannels;->createAll(Landroid/content/Context;)V
-HSPLcom/android/internal/os/-$$Lambda$BatteryStatsImpl$7bfIWpn8X2h-hSzLD6dcuK4Ljuw;->onUidCpuTime(ILjava/lang/Object;)V
-HSPLcom/android/internal/os/-$$Lambda$BatteryStatsImpl$B-TmZhQb712ePnuJTxvMe7P-YwQ;->onUidCpuTime(ILjava/lang/Object;)V
-HSPLcom/android/internal/os/-$$Lambda$BatteryStatsImpl$Xvt9xdVPtevMWGIjcbxXf0_mr_c;->onUidCpuTime(ILjava/lang/Object;)V
-HSPLcom/android/internal/os/-$$Lambda$BatteryStatsImpl$_l2oiaRDRhjCXI_PwXPsAhrgegI;->onUidCpuTime(ILjava/lang/Object;)V
-PLcom/android/internal/os/-$$Lambda$BinderCallsStats$sqXweH5BoxhmZvI188ctqYiACRk;-><init>()V
-HPLcom/android/internal/os/-$$Lambda$BinderCallsStats$sqXweH5BoxhmZvI188ctqYiACRk;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/internal/os/-$$Lambda$RuntimeInit$ep4ioD9YINkHI5Q1wZ0N_7VFAOg;-><init>()V
 HSPLcom/android/internal/os/-$$Lambda$RuntimeInit$ep4ioD9YINkHI5Q1wZ0N_7VFAOg;->get()Ljava/lang/Object;
+HSPLcom/android/internal/os/-$$Lambda$ZygoteConnection$KxVsZ-s4KsanePOHCU5JcuypPik;-><init>(II)V
 HSPLcom/android/internal/os/-$$Lambda$ZygoteConnection$KxVsZ-s4KsanePOHCU5JcuypPik;->run()V
+HSPLcom/android/internal/os/-$$Lambda$ZygoteConnection$xjqM7qW7vAjTqh2tR5XRF5Vn5mk;-><init>([Ljava/lang/String;)V
 HSPLcom/android/internal/os/-$$Lambda$ZygoteConnection$xjqM7qW7vAjTqh2tR5XRF5Vn5mk;->run()V
-HSPLcom/android/internal/os/AtomicDirectory;-><init>(Ljava/io/File;)V
-HSPLcom/android/internal/os/AtomicDirectory;->backup()V
-HSPLcom/android/internal/os/AtomicDirectory;->closeWrite(Ljava/io/FileOutputStream;)V
-HSPLcom/android/internal/os/AtomicDirectory;->delete()V
-HSPLcom/android/internal/os/AtomicDirectory;->finishWrite()V
-HSPLcom/android/internal/os/AtomicDirectory;->getOrCreateBaseDirectory()Ljava/io/File;
-HSPLcom/android/internal/os/AtomicDirectory;->openWrite(Ljava/io/File;)Ljava/io/FileOutputStream;
-HSPLcom/android/internal/os/AtomicDirectory;->restore()V
-HSPLcom/android/internal/os/AtomicDirectory;->startRead()Ljava/io/File;
-HSPLcom/android/internal/os/AtomicDirectory;->startWrite()Ljava/io/File;
-HSPLcom/android/internal/os/AtomicDirectory;->throwIfSomeFilesOpen()V
-HSPLcom/android/internal/os/AtomicFile;-><init>(Ljava/io/File;)V
-HSPLcom/android/internal/os/AtomicFile;->delete()V
-HSPLcom/android/internal/os/AtomicFile;->exists()Z
-HSPLcom/android/internal/os/AtomicFile;->finishWrite(Ljava/io/FileOutputStream;)V
-HSPLcom/android/internal/os/AtomicFile;->openRead()Ljava/io/FileInputStream;
-HSPLcom/android/internal/os/AtomicFile;->readFully()[B
-HSPLcom/android/internal/os/AtomicFile;->startWrite()Ljava/io/FileOutputStream;
-HSPLcom/android/internal/os/AtomicFile;->truncate()V
+HSPLcom/android/internal/os/AndroidPrintStream;-><init>(ILjava/lang/String;)V
+HSPLcom/android/internal/os/BackgroundThread;-><init>()V
 HSPLcom/android/internal/os/BackgroundThread;->ensureThreadLocked()V
-HSPLcom/android/internal/os/BackgroundThread;->get()Lcom/android/internal/os/BackgroundThread;
-HSPLcom/android/internal/os/BackgroundThread;->getExecutor()Ljava/util/concurrent/Executor;
 HSPLcom/android/internal/os/BackgroundThread;->getHandler()Landroid/os/Handler;
-HSPLcom/android/internal/os/BatterySipper$DrainType;-><init>(Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatterySipper$DrainType;->values()[Lcom/android/internal/os/BatterySipper$DrainType;
-HSPLcom/android/internal/os/BatterySipper;->add(Lcom/android/internal/os/BatterySipper;)V
-HSPLcom/android/internal/os/BatterySipper;->compareTo(Lcom/android/internal/os/BatterySipper;)I
-HSPLcom/android/internal/os/BatterySipper;->compareTo(Ljava/lang/Object;)I
-HSPLcom/android/internal/os/BatterySipper;->computeMobilemspp()V
-HSPLcom/android/internal/os/BatterySipper;->getUid()I
-HSPLcom/android/internal/os/BatterySipper;->sumPower()D
-HSPLcom/android/internal/os/BatteryStatsHelper$1;->compare(Lcom/android/internal/os/BatterySipper;Lcom/android/internal/os/BatterySipper;)I
-HSPLcom/android/internal/os/BatteryStatsHelper$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;Z)V
-HSPLcom/android/internal/os/BatteryStatsHelper;-><init>(Landroid/content/Context;ZZ)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addAmbientDisplayUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addBluetoothUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addIdleUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addMemoryUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addPhoneUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addRadioUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addScreenUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addUserUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->addWiFiUsage()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->checkHasBluetoothPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
-HSPLcom/android/internal/os/BatteryStatsHelper;->checkHasWifiPowerReporting(Landroid/os/BatteryStats;Lcom/android/internal/os/PowerProfile;)Z
-HPLcom/android/internal/os/BatteryStatsHelper;->checkWifiOnly(Landroid/content/Context;)Z
-HSPLcom/android/internal/os/BatteryStatsHelper;->clearStats()V
-HSPLcom/android/internal/os/BatteryStatsHelper;->convertMsToUs(J)J
-HSPLcom/android/internal/os/BatteryStatsHelper;->convertUsToMs(J)J
-HPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/BatteryStats;)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->create(Landroid/os/Bundle;)V
-HPLcom/android/internal/os/BatteryStatsHelper;->getComputedPower()D
-HSPLcom/android/internal/os/BatteryStatsHelper;->getForegroundActivityTotalTimeUs(Landroid/os/BatteryStats$Uid;J)J
-HPLcom/android/internal/os/BatteryStatsHelper;->getMaxDrainedPower()D
-HPLcom/android/internal/os/BatteryStatsHelper;->getMinDrainedPower()D
-HPLcom/android/internal/os/BatteryStatsHelper;->getPowerProfile()Lcom/android/internal/os/PowerProfile;
-HSPLcom/android/internal/os/BatteryStatsHelper;->getProcessForegroundTimeMs(Landroid/os/BatteryStats$Uid;I)J
-HSPLcom/android/internal/os/BatteryStatsHelper;->getStats()Landroid/os/BatteryStats;
-HSPLcom/android/internal/os/BatteryStatsHelper;->getStats(Lcom/android/internal/app/IBatteryStats;)Lcom/android/internal/os/BatteryStatsImpl;
-HSPLcom/android/internal/os/BatteryStatsHelper;->getTotalPower()D
-HSPLcom/android/internal/os/BatteryStatsHelper;->getUsageList()Ljava/util/List;
-HSPLcom/android/internal/os/BatteryStatsHelper;->isTypeService(Lcom/android/internal/os/BatterySipper;)Z
-HSPLcom/android/internal/os/BatteryStatsHelper;->isTypeSystem(Lcom/android/internal/os/BatterySipper;)Z
-HPLcom/android/internal/os/BatteryStatsHelper;->makemAh(D)Ljava/lang/String;
-HSPLcom/android/internal/os/BatteryStatsHelper;->processAppUsage(Landroid/util/SparseArray;)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(II)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILandroid/util/SparseArray;JJ)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->refreshStats(ILjava/util/List;)V
-HSPLcom/android/internal/os/BatteryStatsHelper;->removeHiddenBatterySippers(Ljava/util/List;)D
-HSPLcom/android/internal/os/BatteryStatsHelper;->shouldHideSipper(Lcom/android/internal/os/BatterySipper;)Z
-HSPLcom/android/internal/os/BatteryStatsHelper;->smearScreenBatterySipper(Ljava/util/List;Lcom/android/internal/os/BatterySipper;)V
-HSPLcom/android/internal/os/BatteryStatsHistory$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
-HSPLcom/android/internal/os/BatteryStatsHistory;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsHistory;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Ljava/io/File;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsHistory;->createActiveFile()V
-HSPLcom/android/internal/os/BatteryStatsHistory;->createNextFile()V
-HSPLcom/android/internal/os/BatteryStatsHistory;->finishIteratingHistory()V
-HSPLcom/android/internal/os/BatteryStatsHistory;->getActiveFile()Lcom/android/internal/os/AtomicFile;
-HSPLcom/android/internal/os/BatteryStatsHistory;->getFilesNumbers()Ljava/util/List;
-HSPLcom/android/internal/os/BatteryStatsHistory;->getNextParcel(Landroid/os/BatteryStats$HistoryItem;)Landroid/os/Parcel;
-HPLcom/android/internal/os/BatteryStatsHistory;->readFileToParcel(Landroid/os/Parcel;Lcom/android/internal/os/AtomicFile;)Z
-HSPLcom/android/internal/os/BatteryStatsHistory;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsHistory;->resetAllFiles()V
-HSPLcom/android/internal/os/BatteryStatsHistory;->startIteratingHistory()Z
-HSPLcom/android/internal/os/BatteryStatsHistory;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$1;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V
-HPLcom/android/internal/os/BatteryStatsImpl$1;->run()V
-HSPLcom/android/internal/os/BatteryStatsImpl$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$3;->run()V
-HSPLcom/android/internal/os/BatteryStatsImpl$5;->run()V
-HSPLcom/android/internal/os/BatteryStatsImpl$6;-><init>()V
-HSPLcom/android/internal/os/BatteryStatsImpl$6;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl;
-HSPLcom/android/internal/os/BatteryStatsImpl$6;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->abortLastDuration(Lcom/android/internal/os/BatteryStatsImpl;)V
-HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->addDuration(Lcom/android/internal/os/BatteryStatsImpl;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeCurrentCountLocked()I
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->computeRunTimeLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->reset(Z)Z
-HPLcom/android/internal/os/BatteryStatsImpl$BatchTimer;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$1;)V
-HPLcom/android/internal/os/BatteryStatsImpl$BluetoothActivityInfoCache;->set(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Constants;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/os/Handler;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateConstants()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateKernelUidReadersThrottleTime(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Constants;->updateTrackCpuTimesByProcStateLocked(ZZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;ILandroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getIdleTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getMonitoredRailChargeConsumedMaMs()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getPowerCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getRxTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getScanTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getSleepTimeCounter()Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Landroid/os/BatteryStats$LongCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->getTxTimeCounters()[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->reset(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeSummaryToParcel(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->addAtomic(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->detach()V
-HPLcom/android/internal/os/BatteryStatsImpl$Counter;->getCountLocked(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->readCounterFromParcel(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$Counter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->stepAtomic()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$Counter;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->detach()V
-HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->getSubTimer()Lcom/android/internal/os/BatteryStatsImpl$DurationTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->startRunningLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->stopRunningLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HPLcom/android/internal/os/BatteryStatsImpl$DualTimer;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getCurrentDurationMsLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getMaxDurationMsLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->getTotalDurationMsLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->startRunningLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->stopRunningLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HPLcom/android/internal/os/BatteryStatsImpl$DurationTimer;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;-><init>(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->addCountLocked(JZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->getCountLocked(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;->writeToParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->access$2300(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->access$2600(Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->addCountLocked([JZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getCountsLocked(I)[J
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->getSize()I
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readFromParcel(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->readSummaryFromParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;->writeSummaryToParcelLocked(Landroid/os/Parcel;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$MyHandler;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Landroid/os/Looper;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->add(Ljava/lang/String;Ljava/lang/Object;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->cleanup()V
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->clear()V
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->getMap()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->startObject(Ljava/lang/String;)Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$OverflowArrayMap;->stopObject(Ljava/lang/String;)Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->add(JI)V
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeCurrentCountLocked()I
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->computeRunTimeLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->endSample()V
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->getUpdateVersion()I
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->setUpdateVersion(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->update(JI)V
-HPLcom/android/internal/os/BatteryStatsImpl$SamplingTimer;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Lcom/android/internal/os/BatteryStatsImpl$Uid;ILjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeCurrentCountLocked()I
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->computeRunTimeLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->isRunningLocked()Z
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->refreshTimersLocked(JLjava/util/ArrayList;Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;)J
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->reset(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->setMark(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->setTimeout(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->startRunningLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->stopRunningLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;->writeToParcel(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$SystemClocks;->elapsedRealtime()J
-HSPLcom/android/internal/os/BatteryStatsImpl$SystemClocks;->uptimeMillis()J
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;-><init>(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->add(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->computeRealtime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->computeUptime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getRealtime(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->getUptime(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->init(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->isRunning()Z
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->remove(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->setRunning(ZJJ)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeSummaryToParcel(Landroid/os/Parcel;JJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$TimeBase;->writeToParcel(Landroid/os/Parcel;JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;ILcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->detach()V
-HPLcom/android/internal/os/BatteryStatsImpl$Timer;->getCountLocked(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->getTimeSinceMarkLocked(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->getTotalTimeLocked(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->readSummaryFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Timer;->writeSummaryFromParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$1;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$1;->instantiateObject()Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$2;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$2;->instantiateObject()Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$3;->instantiateObject()Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$3;->instantiateObject()Ljava/lang/Object;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getBatteryStats()Lcom/android/internal/os/BatteryStatsImpl;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getLaunches(I)I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStartTimeToNowLocked(J)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->getStarts(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->readFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startLaunchedLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->startRunningLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopLaunchedLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->stopRunningLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;->writeToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;-><init>(Lcom/android/internal/os/BatteryStatsImpl;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->detach()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getServiceStats()Landroid/util/ArrayMap;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->getWakeupAlarmStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->noteWakeupAlarmLocked(Ljava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->readFromParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;->writeToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Ljava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addCpuTimeLocked(IIZ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addExcessiveCpu(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->addForegroundTimeLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->detach()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getForegroundTime(I)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getNumAnrs(I)I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getNumCrashes(I)I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getStarts(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getSystemTime(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->getUserTime(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->incNumCrashesLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->incStartsLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->isActive()Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->onTimeStarted(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->onTimeStopped(JJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->readExcessivePowerFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeExcessivePowerToParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Proc;->writeToParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;I)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorBackgroundTime()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->getSensorTime()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->readTimersFromParcel(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->reset()Z
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;->writeToParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;-><init>(Lcom/android/internal/os/BatteryStatsImpl;Lcom/android/internal/os/BatteryStatsImpl$Uid;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->getWakeTime(I)Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->reset()Z
-HPLcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;->writeToParcelLocked(Landroid/os/Parcel;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;-><init>(Lcom/android/internal/os/BatteryStatsImpl;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->access$2400(Lcom/android/internal/os/BatteryStatsImpl$Uid;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->access$2402(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->access$2500(Lcom/android/internal/os/BatteryStatsImpl$Uid;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->access$2502(Lcom/android/internal/os/BatteryStatsImpl$Uid;Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;)Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->addIsolatedUid(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createAggregatedPartialWakelockTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createAudioTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanResultBgCounterLocked()Lcom/android/internal/os/BatteryStatsImpl$Counter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanResultCounterLocked()Lcom/android/internal/os/BatteryStatsImpl$Counter;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createBluetoothScanTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createCameraTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createForegroundActivityTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createForegroundServiceTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createVibratorOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->createVideoTurnedOnTimerLocked()Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->detachFromTimeBase()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAggregatedPartialWakelockTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getAudioTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Landroid/os/BatteryStats$Counter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultBgCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Landroid/os/BatteryStats$Counter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanResultCounter()Lcom/android/internal/os/BatteryStatsImpl$Counter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanBackgroundTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getBluetoothUnoptimizedScanTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCameraTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuActiveTime()J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuClusterTimes()[J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuFreqTimes(I)[J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getCpuFreqTimes(II)[J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getDeferredJobsCheckinLineLocked(Ljava/lang/StringBuilder;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFlashlightTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundActivityTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getForegroundServiceTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getFullWifiLockTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobCompletionStats()Landroid/util/ArrayMap;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getJobStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioActiveCount(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioActiveTime(I)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMobileRadioApWakeupCount(I)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getMulticastWakelockStats()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityBytes(II)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getNetworkActivityPackets(II)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateBluetoothControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateModemControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getOrCreateWifiControllerActivityLocked()Lcom/android/internal/os/BatteryStatsImpl$ControllerActivityCounterImpl;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPackageStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStats()Landroid/util/SparseArray;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getPidStatsLocked(I)Landroid/os/BatteryStats$Uid$Pid;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTime(IJI)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStateTimer(I)Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getProcessStatsLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getScreenOffCpuFreqTimes(I)[J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSensorStats()Landroid/util/SparseArray;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSensorTimerLocked(IZ)Lcom/android/internal/os/BatteryStatsImpl$DualTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getServiceStatsLocked(Ljava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSyncStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getSystemCpuTimeUs(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getTimeAtCpuSpeed(III)J
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUid()I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserActivityCount(II)I
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getUserCpuTimeUs(I)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Landroid/os/BatteryStats$Timer;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVibratorOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Landroid/os/BatteryStats$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getVideoTurnedOnTimer()Lcom/android/internal/os/BatteryStatsImpl$Timer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockStats()Landroid/util/ArrayMap;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWakelockTimerLocked(Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;I)Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiMulticastTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiRadioApWakeupCount(I)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiRunningTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanActualTime(J)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanBackgroundCount(I)I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanBackgroundTime(J)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanCount(I)I
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->getWifiScanTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->hasUserActivity()Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->initNetworkActivityLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->initUserActivityLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->isInBackground()Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->makeProcessState(ILandroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityPausedLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteActivityResumedLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOffLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteAudioTurnedOnLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanResultsLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStartedLocked(JZ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteBluetoothScanStoppedLocked(JZ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOffLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteCameraTurnedOnLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServicePausedLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteForegroundServiceResumedLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockAcquiredLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteFullWifiLockReleasedLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteJobsDeferredLocked(IJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteMobileRadioActiveTimeLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteMobileRadioApWakeupLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteNetworkActivityLocked(IJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartGps(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartJobLocked(Ljava/lang/String;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSensor(IJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartSyncLocked(Ljava/lang/String;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStartWakeLocked(ILjava/lang/String;IJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopGps(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopJobLocked(Ljava/lang/String;JI)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSensor(IJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopSyncLocked(Ljava/lang/String;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteStopWakeLocked(ILjava/lang/String;IJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteUserActivityLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOffLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVibratorOnLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOffLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteVideoTurnedOnLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastDisabledLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiMulticastEnabledLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiRadioApWakeupLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStartedLocked(J)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->noteWifiScanStoppedLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readFromParcelLocked(Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Lcom/android/internal/os/BatteryStatsImpl$TimeBase;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobCompletionsFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readJobSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readSyncSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->readWakeSummaryFromParcelLocked(Ljava/lang/String;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->removeIsolatedUid(I)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->reportExcessiveCpuLocked(Ljava/lang/String;JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->reset(JJ)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryBgTimeBase(JJ)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateOnBatteryScreenOffBgTimeBase(JJ)Z
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->updateUidProcessStateLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeJobCompletionsToParcelLocked(Landroid/os/Parcel;)V
-HPLcom/android/internal/os/BatteryStatsImpl$Uid;->writeToParcelLocked(Landroid/os/Parcel;JJ)V
-HPLcom/android/internal/os/BatteryStatsImpl$UidToRemove;->remove()V
-HSPLcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;->exists(I)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Lcom/android/internal/os/BatteryStatsImpl$Clocks;Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$RailEnergyDataCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;-><init>(Ljava/io/File;Landroid/os/Handler;Lcom/android/internal/os/BatteryStatsImpl$PlatformIdleStateCallback;Lcom/android/internal/os/BatteryStatsImpl$RailEnergyDataCallback;Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryBufferLocked(JBLandroid/os/BatteryStats$HistoryItem;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryBufferLocked(JLandroid/os/BatteryStats$HistoryItem;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryEventLocked(JJILjava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryRecordInnerLocked(JLandroid/os/BatteryStats$HistoryItem;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addHistoryRecordLocked(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addIsolatedUidLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->addModemTxPowerToHistory(Landroid/telephony/ModemActivityInfo;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->aggregateLastWakeupUptimeLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->buildStateInt(Landroid/os/BatteryStats$HistoryItem;)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->clearHistoryLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->clearPendingRemovedUids()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->commitPendingDataToDisk(Landroid/os/Parcel;Lcom/android/internal/os/AtomicFile;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryRealtime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryScreenOffRealtime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryScreenOffUptime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryTimeRemaining(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeBatteryUptime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeChargeTimeRemaining(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeHistoryStepDetails(Landroid/os/BatteryStats$HistoryStepDetails;Landroid/os/BatteryStats$HistoryStepDetails;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeRealtime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->computeUptime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->copyFromAllUidsCpuTimes()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->copyFromAllUidsCpuTimes(ZZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->detachIfNotNull(Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->detachIfNotNull([Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->detachIfNotNull([[Lcom/android/internal/os/BatteryStatsImpl$TimeBaseObs;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->ensureStartClockTime(J)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->excludeFromStringArray([Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/internal/os/BatteryStatsImpl;->finishAddingCpuLocked(IIIIIIII)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->finishIteratingHistoryLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->getBatteryRealtime(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptime(J)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getBatteryUptimeLocked()J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getBluetoothControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
-HPLcom/android/internal/os/BatteryStatsImpl;->getChargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
-HPLcom/android/internal/os/BatteryStatsImpl;->getCpuFreqs()[J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getDeltaModemActivityInfo(Landroid/telephony/ModemActivityInfo;)Landroid/telephony/ModemActivityInfo;
-HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdleModeTime(IJI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdlingCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getDeviceIdlingTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenDozeSinceCharge()I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOffSinceCharge()I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getDischargeAmountScreenOnSinceCharge()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getDischargeLevelStepTracker()Landroid/os/BatteryStats$LevelStepTracker;
-HPLcom/android/internal/os/BatteryStatsImpl;->getEndPlatformVersion()Ljava/lang/String;
-HPLcom/android/internal/os/BatteryStatsImpl;->getEstimatedBatteryCapacity()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getExternalStatsCollectionRateLimitMs()J
-HPLcom/android/internal/os/BatteryStatsImpl;->getGlobalWifiRunningTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getGpsBatteryDrainMaMs()J
-HPLcom/android/internal/os/BatteryStatsImpl;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getGpsSignalQualityTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getHighDischargeAmountSinceCharge()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryBaseTime()J
-HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryStringPoolSize()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolString(I)Ljava/lang/String;
-HPLcom/android/internal/os/BatteryStatsImpl;->getHistoryTagPoolUid(I)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getInteractiveTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getIsOnBattery()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->getKernelMemoryStats()Landroid/util/LongSparseArray;
-HPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockStats()Ljava/util/Map;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getKernelWakelockTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;
-HPLcom/android/internal/os/BatteryStatsImpl;->getLongestDeviceIdleModeTime(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getLowDischargeAmountSinceCharge()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getMaxLearnedBatteryCapacity()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getMinLearnedBatteryCapacity()I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileIfaces()[Ljava/lang/String;
-HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveAdjustedTime(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveCount(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownCount(I)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getMobileRadioActiveUnknownTime(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getModemControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityBytes(II)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getNetworkActivityPackets(II)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getNextHistoryLocked(Landroid/os/BatteryStats$HistoryItem;)Z
-HPLcom/android/internal/os/BatteryStatsImpl;->getNumConnectivityChange(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getPackageStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg;
-HPLcom/android/internal/os/BatteryStatsImpl;->getParcelVersion()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneDataConnectionTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneOnTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalScanningTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthCount(II)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->getPhoneSignalStrengthTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getPowerManagerWakeLockLevel(I)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getPowerSaveModeEnabledTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getProcessStatsLocked(ILjava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Proc;
-HPLcom/android/internal/os/BatteryStatsImpl;->getRpmStats()Ljava/util/Map;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getRpmTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenBrightnessTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenDozeTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getScreenOffRpmStats()Ljava/util/Map;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getScreenOnTime(JI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getServiceStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getStartClockTime()J
-HPLcom/android/internal/os/BatteryStatsImpl;->getStartCount()I
-HPLcom/android/internal/os/BatteryStatsImpl;->getStartPlatformVersion()Ljava/lang/String;
-HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischarge(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeDeepDoze(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeLightDoze(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenDoze(I)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getUahDischargeScreenOff(I)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->getUidStats()Landroid/util/SparseArray;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getUidStatsLocked(I)Lcom/android/internal/os/BatteryStatsImpl$Uid;
-HPLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonStats()Ljava/util/Map;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getWakeupReasonTimerLocked(Ljava/lang/String;)Lcom/android/internal/os/BatteryStatsImpl$SamplingTimer;
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiActiveTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats;
-HSPLcom/android/internal/os/BatteryStatsImpl;->getWifiControllerActivity()Landroid/os/BatteryStats$ControllerActivityCounter;
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockCount(I)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiMulticastWakelockTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiOnTime(JI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSignalStrengthTime(IJI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiStateCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiStateTime(IJI)J
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateCount(II)I
-HPLcom/android/internal/os/BatteryStatsImpl;->getWifiSupplStateTime(IJI)J
-HSPLcom/android/internal/os/BatteryStatsImpl;->hasBluetoothActivityReporting()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->hasWifiActivityReporting()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->init(Lcom/android/internal/os/BatteryStatsImpl$Clocks;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->initActiveHistoryEventsLocked(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->initDischarge()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->initTimes(JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->isCharging()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isOnBattery()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isOnBatteryLocked()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isOnBatteryScreenOffLocked()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isScreenDoze(I)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isScreenOff(I)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->isScreenOn(I)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->lambda$readKernelUidCpuActiveTimesLocked$2$BatteryStatsImpl(ZILjava/lang/Long;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->lambda$readKernelUidCpuClusterTimesLocked$3$BatteryStatsImpl(ZI[J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->lambda$readKernelUidCpuFreqTimesLocked$1$BatteryStatsImpl(ZZZIII[J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->lambda$readKernelUidCpuTimesLocked$0$BatteryStatsImpl(IZLandroid/util/SparseLongArray;I[J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->mapUid(I)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->markPartialTimersAsEligible()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteActivityPausedLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteActivityResumedLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteAlarmFinishLocked(Ljava/lang/String;Landroid/os/WorkSource;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteAlarmStartLocked(Ljava/lang/String;Landroid/os/WorkSource;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteAlarmStartOrFinishLocked(ILjava/lang/String;Landroid/os/WorkSource;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOffLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteAudioOnLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanResultsFromSourceLocked(Landroid/os/WorkSource;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedFromSourceLocked(Landroid/os/WorkSource;Z)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStartedLocked(Landroid/os/WorkSource$WorkChain;IZ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedFromSourceLocked(Landroid/os/WorkSource;Z)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteBluetoothScanStoppedLocked(Landroid/os/WorkSource$WorkChain;IZ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOffLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteCameraOnLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteChangeWakelockFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;ILandroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteConnectivityChangedLocked(ILjava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteCurrentTimeChangedLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteDeviceIdleModeLocked(ILjava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteEventLocked(ILjava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredFromSourceLocked(Landroid/os/WorkSource;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockAcquiredLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedFromSourceLocked(Landroid/os/WorkSource;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteFullWifiLockReleasedLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteGpsChangedLocked(Landroid/os/WorkSource;Landroid/os/WorkSource;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteGpsSignalQualityLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteInteractiveLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteJobFinishLocked(Ljava/lang/String;II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteJobStartLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteJobsDeferredLocked(IIJ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakeLockFinishInternal(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakeLockStartInternal(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockFinishFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteLongPartialWakelockStartFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteMobileRadioPowerStateLocked(IJI)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteNetworkInterfaceTypeLocked(Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->notePackageInstalledLocked(Ljava/lang/String;J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePackageUninstalledLocked(Ljava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneDataConnectionStateLocked(IZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneOffLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl;->notePhoneOnLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneSignalStrengthLocked(Landroid/telephony/SignalStrength;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePhoneStateLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->notePowerSaveModeLocked(Z)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteProcessAnrLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessCrashLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessDiedLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessFinishLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteProcessStartLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteResetBluetoothScanLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteScreenBrightnessLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteScreenStateLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStartGpsLocked(ILandroid/os/WorkSource$WorkChain;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStartSensorLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStartWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;IZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStartWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IZJJ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteStopGpsLocked(ILandroid/os/WorkSource$WorkChain;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStopSensorLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStopWakeFromSourceLocked(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteStopWakeLocked(IILandroid/os/WorkSource$WorkChain;Ljava/lang/String;Ljava/lang/String;IJJ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteSyncFinishLocked(Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteSyncStartLocked(Ljava/lang/String;I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteUidProcessStateLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteUsbConnectionStateLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteUserActivityLocked(II)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOffLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteVibratorOnLocked(IJ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteVideoOffLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteVideoOnLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWakeUpLocked(Ljava/lang/String;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWakeupReasonLocked(Ljava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWakupAlarmLocked(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiMulticastDisabledLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiMulticastEnabledLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiOffLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiOnLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRadioPowerState(IJI)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRssiChangedLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiRunningLocked(Landroid/os/WorkSource;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStartedFromSourceLocked(Landroid/os/WorkSource;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStartedLocked(I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStoppedFromSourceLocked(Landroid/os/WorkSource;)V
-HPLcom/android/internal/os/BatteryStatsImpl;->noteWifiScanStoppedLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiStateLocked(ILjava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->noteWifiSupplicantStateChangedLocked(IZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->postBatteryNeedsCpuUpdateMsg()V
-HPLcom/android/internal/os/BatteryStatsImpl;->prepareForDumpLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->pullPendingStateUpdatesLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemTagDetailsLocked(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/BatteryStats$DailyItem;ZLjava/lang/String;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemTagLocked(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyItemsLocked(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readDailyStatsLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readFromParcelLocked(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryBuffer(Landroid/os/Parcel;Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readHistoryDelta(Landroid/os/Parcel;Landroid/os/BatteryStats$HistoryItem;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuActiveTimesLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuClusterTimesLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuFreqTimesLocked(Ljava/util/ArrayList;ZZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readKernelUidCpuTimesLocked(Ljava/util/ArrayList;Landroid/util/SparseLongArray;Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readNetworkStatsLocked([Ljava/lang/String;)Landroid/net/NetworkStats;
-HSPLcom/android/internal/os/BatteryStatsImpl;->readOldHistory(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->readSummaryFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->recordDailyStatsIfNeededLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->recordDailyStatsLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->registerUsbStateReceiver(Landroid/content/Context;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->removeIsolatedUidLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->removeUidStatsLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->reportChangesToStatsLog(Landroid/os/BatteryStats$HistoryItem;III)V
-HPLcom/android/internal/os/BatteryStatsImpl;->reportExcessiveCpuLocked(ILjava/lang/String;JJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->resetAllStatsLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->scheduleRemoveIsolatedUidLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setBatteryStateLocked(IIIIIIII)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setCallback(Lcom/android/internal/os/BatteryStatsImpl$BatteryCallback;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setChargingLocked(Z)Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->setExternalStatsSyncLocked(Lcom/android/internal/os/BatteryStatsImpl$ExternalStatsSync;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setOnBatteryLocked(JJZIII)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setPowerProfileLocked(Lcom/android/internal/os/PowerProfile;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->setRadioScanningTimeoutLocked(J)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->startAddingCpuLocked()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->startIteratingHistoryLocked()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->startRecordingHistory(JJZ)V
-HPLcom/android/internal/os/BatteryStatsImpl;->stopAllGpsSignalQualityTimersLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->stopAllPhoneSignalStrengthTimersLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->systemServicesReady(Landroid/content/Context;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->trackPerProcStateCpuTimes()Z
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateAllPhoneStateLocked(III)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateBatteryPropertiesLocked()V
-HPLcom/android/internal/os/BatteryStatsImpl;->updateBluetoothStateLocked(Landroid/bluetooth/BluetoothActivityEnergyInfo;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateClusterSpeedTimes(Landroid/util/SparseLongArray;Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateCpuTimeLocked(ZZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateDailyDeadlineLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateDischargeScreenLevelsLocked(II)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateKernelMemoryBandwidthLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateKernelWakelocksLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateMobileRadioState(Landroid/telephony/ModemActivityInfo;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateNewDischargeScreenLevelLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateOldDischargeScreenLevelLocked(I)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateRailStatsLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateRpmStatsLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateTimeBasesLocked(ZIJJ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->updateWifiState(Landroid/net/wifi/WifiActivityEnergyInfo;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeAsyncLocked()V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeDailyItemsLocked(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeDailyLevelSteps(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/BatteryStats$LevelStepTracker;Ljava/lang/StringBuilder;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryBuffer(Landroid/os/Parcel;ZZ)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryDelta(Landroid/os/Parcel;Landroid/os/BatteryStats$HistoryItem;Landroid/os/BatteryStats$HistoryItem;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeHistoryTag(Landroid/os/BatteryStats$HistoryTag;)I
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeOldHistory(Landroid/os/Parcel;)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeParcelToFileLocked(Landroid/os/Parcel;Lcom/android/internal/os/AtomicFile;Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeStatsLocked(Z)V
-HSPLcom/android/internal/os/BatteryStatsImpl;->writeSummaryToParcel(Landroid/os/Parcel;Z)V
-HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcel(Landroid/os/Parcel;I)V
-HPLcom/android/internal/os/BatteryStatsImpl;->writeToParcelLocked(Landroid/os/Parcel;ZI)V
-HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;-><init>()V
-HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/os/BinderCallsStats$CallStatKey;->hashCode()I
-HSPLcom/android/internal/os/BinderCallsStats$Injector;->getRandomGenerator()Ljava/util/Random;
-HSPLcom/android/internal/os/BinderCallsStats$UidEntry;->get(ILjava/lang/Class;IZ)Lcom/android/internal/os/BinderCallsStats$CallStat;
-HPLcom/android/internal/os/BinderCallsStats$UidEntry;->getCallStatsList()Ljava/util/Collection;
-HSPLcom/android/internal/os/BinderCallsStats$UidEntry;->getOrCreate(ILjava/lang/Class;IZZ)Lcom/android/internal/os/BinderCallsStats$CallStat;
-HSPLcom/android/internal/os/BinderCallsStats;-><init>(Lcom/android/internal/os/BinderCallsStats$Injector;)V
-HSPLcom/android/internal/os/BinderCallsStats;->callEnded(Lcom/android/internal/os/BinderInternal$CallSession;III)V
-HSPLcom/android/internal/os/BinderCallsStats;->callStarted(Landroid/os/Binder;II)Lcom/android/internal/os/BinderInternal$CallSession;
-HSPLcom/android/internal/os/BinderCallsStats;->callThrewException(Lcom/android/internal/os/BinderInternal$CallSession;Ljava/lang/Exception;)V
-HPLcom/android/internal/os/BinderCallsStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/BinderCallsStats$ExportedCallStat;
-HSPLcom/android/internal/os/BinderCallsStats;->getCallingUid()I
-HPLcom/android/internal/os/BinderCallsStats;->getDefaultTransactionNameMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLcom/android/internal/os/BinderCallsStats;->getElapsedRealtimeMicro()J
-HPLcom/android/internal/os/BinderCallsStats;->getExportedCallStats()Ljava/util/ArrayList;
-HSPLcom/android/internal/os/BinderCallsStats;->getThreadTimeMicro()J
-HSPLcom/android/internal/os/BinderCallsStats;->processCallEnded(Lcom/android/internal/os/BinderInternal$CallSession;III)V
-HSPLcom/android/internal/os/BinderCallsStats;->reset()V
-HPLcom/android/internal/os/BinderCallsStats;->resolveTransactionCode(Ljava/lang/reflect/Method;I)Ljava/lang/String;
-HSPLcom/android/internal/os/BinderCallsStats;->setAddDebugEntries(Z)V
-HSPLcom/android/internal/os/BinderCallsStats;->setDetailedTracking(Z)V
-HSPLcom/android/internal/os/BinderCallsStats;->setDeviceState(Lcom/android/internal/os/CachedDeviceState$Readonly;)V
-HSPLcom/android/internal/os/BinderCallsStats;->setMaxBinderCallStats(I)V
-HSPLcom/android/internal/os/BinderCallsStats;->setSamplingInterval(I)V
-HSPLcom/android/internal/os/BinderCallsStats;->setTrackDirectCallerUid(Z)V
-HSPLcom/android/internal/os/BinderCallsStats;->setTrackScreenInteractive(Z)V
-HSPLcom/android/internal/os/BinderCallsStats;->shouldRecordDetailedData()Z
-HSPLcom/android/internal/os/BinderInternal$BinderProxyLimitListenerDelegate;-><init>(Lcom/android/internal/os/BinderInternal$1;)V
-HSPLcom/android/internal/os/BinderInternal$BinderProxyLimitListenerDelegate;->setListener(Lcom/android/internal/os/BinderInternal$BinderProxyLimitListener;Landroid/os/Handler;)V
 HSPLcom/android/internal/os/BinderInternal$GcWatcher;-><init>()V
 HSPLcom/android/internal/os/BinderInternal$GcWatcher;->finalize()V
 HSPLcom/android/internal/os/BinderInternal;->addGcWatcher(Ljava/lang/Runnable;)V
 HSPLcom/android/internal/os/BinderInternal;->forceBinderGc()V
 HSPLcom/android/internal/os/BinderInternal;->forceGc(Ljava/lang/String;)V
-HSPLcom/android/internal/os/BinderInternal;->getLastGcTime()J
-HSPLcom/android/internal/os/BinderInternal;->setBinderProxyCountCallback(Lcom/android/internal/os/BinderInternal$BinderProxyLimitListener;Landroid/os/Handler;)V
-HSPLcom/android/internal/os/BluetoothPowerCalculator;-><init>(Lcom/android/internal/os/PowerProfile;)V
-HSPLcom/android/internal/os/BluetoothPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/BluetoothPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
-HSPLcom/android/internal/os/BluetoothPowerCalculator;->reset()V
-HSPLcom/android/internal/os/CachedDeviceState$Readonly;->createTimeOnBatteryStopwatch()Lcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;
-HSPLcom/android/internal/os/CachedDeviceState$Readonly;->isCharging()Z
-HPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->getMillis()J
-HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->isRunning()Z
-HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->reset()V
-HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->start()V
-HSPLcom/android/internal/os/CachedDeviceState$TimeInStateStopwatch;->stop()V
-HSPLcom/android/internal/os/CachedDeviceState;-><init>()V
-HSPLcom/android/internal/os/CachedDeviceState;->getReadonlyClient()Lcom/android/internal/os/CachedDeviceState$Readonly;
-HSPLcom/android/internal/os/CachedDeviceState;->setCharging(Z)V
-HSPLcom/android/internal/os/CachedDeviceState;->setScreenInteractive(Z)V
-HSPLcom/android/internal/os/CachedDeviceState;->updateStopwatches(Z)V
-HSPLcom/android/internal/os/CameraPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
 HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
 HSPLcom/android/internal/os/ClassLoaderFactory;->createClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;IZLjava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
-HSPLcom/android/internal/os/ClassLoaderFactory;->getPathClassLoaderName()Ljava/lang/String;
-HSPLcom/android/internal/os/ClassLoaderFactory;->isDelegateLastClassLoaderName(Ljava/lang/String;)Z
 HSPLcom/android/internal/os/ClassLoaderFactory;->isPathClassLoaderName(Ljava/lang/String;)Z
-HSPLcom/android/internal/os/ClassLoaderFactory;->isValidClassLoaderName(Ljava/lang/String;)Z
-HSPLcom/android/internal/os/CpuPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/FlashlightPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/FuseAppLoop$1;-><init>()V
-HSPLcom/android/internal/os/HandlerCaller$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/internal/os/HandlerCaller$MyHandler;-><init>(Lcom/android/internal/os/HandlerCaller;Landroid/os/Looper;Z)V
 HSPLcom/android/internal/os/HandlerCaller;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/os/HandlerCaller$Callback;Z)V
-HSPLcom/android/internal/os/HandlerCaller;->executeOrSendMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessage(I)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageI(II)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIIIIII(IIIIIII)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIIO(IIILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIIOOOO(IIILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIO(IILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageIOO(IILjava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/os/HandlerCaller;->obtainMessageO(ILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOO(ILjava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOOO(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->obtainMessageOOOOO(ILjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/os/HandlerCaller;->sendMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/os/IDropBoxManagerService$Stub;-><init>()V
 HSPLcom/android/internal/os/IDropBoxManagerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IDropBoxManagerService;
-HPLcom/android/internal/os/IDropBoxManagerService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/os/IDropBoxManagerService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLcom/android/internal/os/IResultReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLcom/android/internal/os/IResultReceiver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/os/IResultReceiver$Stub$Proxy;->send(ILandroid/os/Bundle;)V
 HSPLcom/android/internal/os/IResultReceiver$Stub;-><init>()V
 HSPLcom/android/internal/os/IResultReceiver$Stub;->asBinder()Landroid/os/IBinder;
 HSPLcom/android/internal/os/IResultReceiver$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/os/IResultReceiver;
 HSPLcom/android/internal/os/IResultReceiver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;->close()V
-HSPLcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;->hasNextLine()Z
-HSPLcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;->nextLine()Ljava/nio/CharBuffer;
-HSPLcom/android/internal/os/KernelCpuProcStringReader;-><init>(Ljava/lang/String;)V
-HSPLcom/android/internal/os/KernelCpuProcStringReader;->asLongs(Ljava/nio/CharBuffer;[J)I
-HSPLcom/android/internal/os/KernelCpuProcStringReader;->open(Z)Lcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;
-HSPLcom/android/internal/os/KernelCpuSpeedReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuSpeedReader;-><init>(II)V
-HSPLcom/android/internal/os/KernelCpuSpeedReader;->readDelta()[J
-HSPLcom/android/internal/os/KernelCpuThreadReader$FrequencyBucketCreator;-><init>([JI)V
-HSPLcom/android/internal/os/KernelCpuThreadReader$FrequencyBucketCreator;->getBucketMinFrequencies([J)[I
-HPLcom/android/internal/os/KernelCpuThreadReader$FrequencyBucketCreator;->getBucketedValues([J)[I
-HPLcom/android/internal/os/KernelCpuThreadReader$Injector;->getUidForPid(I)I
-HPLcom/android/internal/os/KernelCpuThreadReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuThreadReader;->create(ILjava/util/function/Predicate;I)Lcom/android/internal/os/KernelCpuThreadReader;
-HPLcom/android/internal/os/KernelCpuThreadReader;->getCpuFrequenciesKhz()[I
-HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessCpuUsage()Ljava/util/ArrayList;
-HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessCpuUsage(Ljava/nio/file/Path;II)Lcom/android/internal/os/KernelCpuThreadReader$ProcessCpuUsage;
-HPLcom/android/internal/os/KernelCpuThreadReader;->getProcessId(Ljava/nio/file/Path;)I
-HPLcom/android/internal/os/KernelCpuThreadReader;->getThreadCpuUsage(Ljava/nio/file/Path;)Lcom/android/internal/os/KernelCpuThreadReader$ThreadCpuUsage;
-HSPLcom/android/internal/os/KernelCpuThreadReader;->setNumBuckets(I)V
-HSPLcom/android/internal/os/KernelCpuThreadReaderSettingsObserver$UidPredicate;->fromString(Ljava/lang/String;)Lcom/android/internal/os/KernelCpuThreadReaderSettingsObserver$UidPredicate;
-HPLcom/android/internal/os/KernelCpuThreadReaderSettingsObserver$UidPredicate;->test(Ljava/lang/Integer;)Z
-HPLcom/android/internal/os/KernelCpuThreadReaderSettingsObserver$UidPredicate;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/os/KernelCpuThreadReaderSettingsObserver;->getSettingsModifiedReader(Landroid/content/Context;)Lcom/android/internal/os/KernelCpuThreadReader;
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;-><init>(Z)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;->checkPrecondition(Lcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;)Z
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader;->readDeltaImpl(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;-><init>(Z)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;->checkPrecondition(Lcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;)Z
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;->readDeltaImpl(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader;->sumClusterTime()V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;-><init>(Z)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->checkPrecondition(Lcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;)Z
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->extractClusterInfoFromProcFileFreqs()Landroid/util/IntArray;
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->perClusterTimesAvailable()Z
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->readDeltaImpl(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->readFreqs(Lcom/android/internal/os/PowerProfile;)[J
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader;->readFreqs(Ljava/lang/String;)[J
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;-><init>(Z)V
-HPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->readAbsoluteImpl(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->readDeltaImpl(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->removeUid(I)V
-HPLcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;->removeUidsFromKernelModule(II)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader;-><init>(Lcom/android/internal/os/KernelCpuProcStringReader;Z)V
-HPLcom/android/internal/os/KernelCpuUidTimeReader;->readAbsolute(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader;->readDelta(Lcom/android/internal/os/KernelCpuUidTimeReader$Callback;)V
-HPLcom/android/internal/os/KernelCpuUidTimeReader;->removeUid(I)V
-HSPLcom/android/internal/os/KernelCpuUidTimeReader;->setThrottle(J)V
-HSPLcom/android/internal/os/KernelMemoryBandwidthStats;-><init>()V
-HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->getBandwidthEntries()Landroid/util/LongSparseLongArray;
-HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->parseStats(Ljava/io/BufferedReader;)V
-HSPLcom/android/internal/os/KernelMemoryBandwidthStats;->updateStats()V
-HSPLcom/android/internal/os/KernelWakelockReader;-><init>()V
-HSPLcom/android/internal/os/KernelWakelockReader;->parseProcWakelocks([BIZLcom/android/internal/os/KernelWakelockStats;)Lcom/android/internal/os/KernelWakelockStats;
-HSPLcom/android/internal/os/KernelWakelockReader;->readKernelWakelockStats(Lcom/android/internal/os/KernelWakelockStats;)Lcom/android/internal/os/KernelWakelockStats;
-HSPLcom/android/internal/os/KernelWakelockStats;-><init>()V
-HSPLcom/android/internal/os/LooperStats$DispatchSession;-><init>()V
-HSPLcom/android/internal/os/LooperStats$Entry;->idFor(Landroid/os/Message;Z)I
-HSPLcom/android/internal/os/LooperStats$Entry;->reset()V
-HPLcom/android/internal/os/LooperStats$ExportedEntry;-><init>(Lcom/android/internal/os/LooperStats$Entry;)V
-HSPLcom/android/internal/os/LooperStats;-><init>(II)V
-HPLcom/android/internal/os/LooperStats;->createDebugEntry(Ljava/lang/String;J)Lcom/android/internal/os/LooperStats$ExportedEntry;
-HSPLcom/android/internal/os/LooperStats;->findEntry(Landroid/os/Message;Z)Lcom/android/internal/os/LooperStats$Entry;
-HSPLcom/android/internal/os/LooperStats;->getElapsedRealtimeMicro()J
-HPLcom/android/internal/os/LooperStats;->getEntries()Ljava/util/List;
-HSPLcom/android/internal/os/LooperStats;->getSystemUptimeMillis()J
-HSPLcom/android/internal/os/LooperStats;->getThreadTimeMicro()J
-HPLcom/android/internal/os/LooperStats;->maybeAddSpecialEntry(Ljava/util/List;Lcom/android/internal/os/LooperStats$Entry;)V
-HSPLcom/android/internal/os/LooperStats;->messageDispatchStarting()Ljava/lang/Object;
-HSPLcom/android/internal/os/LooperStats;->messageDispatched(Ljava/lang/Object;Landroid/os/Message;)V
-HSPLcom/android/internal/os/LooperStats;->reset()V
-HSPLcom/android/internal/os/LooperStats;->setAddDebugEntries(Z)V
-HSPLcom/android/internal/os/LooperStats;->setDeviceState(Lcom/android/internal/os/CachedDeviceState$Readonly;)V
-HSPLcom/android/internal/os/LooperStats;->setSamplingInterval(I)V
-HSPLcom/android/internal/os/LooperStats;->shouldCollectDetailedData()Z
-HSPLcom/android/internal/os/MediaPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/MemoryPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;-><init>(Lcom/android/internal/os/PowerProfile;Landroid/os/BatteryStats;)V
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;->getMobilePowerPerPacket(JI)D
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;->reset()V
-HSPLcom/android/internal/os/MobileRadioPowerCalculator;->reset(Landroid/os/BatteryStats;)V
-HSPLcom/android/internal/os/PowerCalculator;-><init>()V
-HSPLcom/android/internal/os/PowerCalculator;->reset()V
-HSPLcom/android/internal/os/PowerProfile;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/os/PowerProfile;-><init>(Landroid/content/Context;Z)V
-HSPLcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;)D
-HSPLcom/android/internal/os/PowerProfile;->getAveragePower(Ljava/lang/String;I)D
-HSPLcom/android/internal/os/PowerProfile;->getAveragePowerForCpuCluster(I)D
-HSPLcom/android/internal/os/PowerProfile;->getAveragePowerForCpuCore(II)D
-HSPLcom/android/internal/os/PowerProfile;->getAveragePowerOrDefault(Ljava/lang/String;D)D
-HSPLcom/android/internal/os/PowerProfile;->getBatteryCapacity()D
-HSPLcom/android/internal/os/PowerProfile;->getNumCoresInCpuCluster(I)I
-HSPLcom/android/internal/os/PowerProfile;->getNumCpuClusters()I
-HSPLcom/android/internal/os/PowerProfile;->getNumElements(Ljava/lang/String;)I
-HSPLcom/android/internal/os/PowerProfile;->getNumSpeedStepsInCpuCluster(I)I
-HSPLcom/android/internal/os/PowerProfile;->initCpuClusters()V
-HSPLcom/android/internal/os/PowerProfile;->readPowerValuesFromXml(Landroid/content/Context;Z)V
-HSPLcom/android/internal/os/ProcStatsUtil;->readTerminatedProcFile(Ljava/lang/String;B)Ljava/lang/String;
-HSPLcom/android/internal/os/ProcTimeInStateReader;->getFrequenciesKhz()[J
-HPLcom/android/internal/os/ProcTimeInStateReader;->getUsageTimesMillis(Ljava/nio/file/Path;)[J
-HSPLcom/android/internal/os/ProcTimeInStateReader;->initializeTimeInStateFormat(Ljava/nio/file/Path;)V
-HSPLcom/android/internal/os/ProcessCpuTracker$1;-><init>()V
-HPLcom/android/internal/os/ProcessCpuTracker$1;->compare(Lcom/android/internal/os/ProcessCpuTracker$Stats;Lcom/android/internal/os/ProcessCpuTracker$Stats;)I
-HPLcom/android/internal/os/ProcessCpuTracker$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/internal/os/ProcessCpuTracker$Stats;-><init>(IIZ)V
-HSPLcom/android/internal/os/ProcessCpuTracker;-><init>(Z)V
-HPLcom/android/internal/os/ProcessCpuTracker;->buildWorkingProcs()V
-HSPLcom/android/internal/os/ProcessCpuTracker;->collectStats(Ljava/lang/String;IZ[ILjava/util/ArrayList;)[I
-HSPLcom/android/internal/os/ProcessCpuTracker;->countStats()I
-HSPLcom/android/internal/os/ProcessCpuTracker;->getCpuTimeForPid(I)J
-HSPLcom/android/internal/os/ProcessCpuTracker;->getName(Lcom/android/internal/os/ProcessCpuTracker$Stats;Ljava/lang/String;)V
-HSPLcom/android/internal/os/ProcessCpuTracker;->getStats(I)Lcom/android/internal/os/ProcessCpuTracker$Stats;
-HSPLcom/android/internal/os/ProcessCpuTracker;->getStats(Lcom/android/internal/os/ProcessCpuTracker$FilterStats;)Ljava/util/List;
-HSPLcom/android/internal/os/ProcessCpuTracker;->init()V
-HSPLcom/android/internal/os/ProcessCpuTracker;->onLoadChanged(FFF)V
-HSPLcom/android/internal/os/ProcessCpuTracker;->onMeasureProcessName(Ljava/lang/String;)I
-HPLcom/android/internal/os/ProcessCpuTracker;->printCurrentLoad()Ljava/lang/String;
-HPLcom/android/internal/os/ProcessCpuTracker;->printCurrentState(J)Ljava/lang/String;
-HPLcom/android/internal/os/ProcessCpuTracker;->printProcessCPU(Ljava/io/PrintWriter;Ljava/lang/String;ILjava/lang/String;IIIIIIII)V
-HPLcom/android/internal/os/ProcessCpuTracker;->printRatio(Ljava/io/PrintWriter;JJ)V
-HSPLcom/android/internal/os/ProcessCpuTracker;->update()V
-HSPLcom/android/internal/os/RailStats;-><init>()V
-HSPLcom/android/internal/os/RailStats;->setRailStatsAvailability(Z)V
-HSPLcom/android/internal/os/RpmStats$PowerStateSubsystem;->putState(Ljava/lang/String;JI)V
-HSPLcom/android/internal/os/RpmStats;-><init>()V
-HSPLcom/android/internal/os/RpmStats;->getSubsystem(Ljava/lang/String;)Lcom/android/internal/os/RpmStats$PowerStateSubsystem;
+HSPLcom/android/internal/os/LoggingPrintStream$1;-><init>()V
+HSPLcom/android/internal/os/LoggingPrintStream;-><init>()V
+HSPLcom/android/internal/os/RuntimeInit$Arguments;-><init>([Ljava/lang/String;)V
 HSPLcom/android/internal/os/RuntimeInit$Arguments;->parseArgs([Ljava/lang/String;)V
+HSPLcom/android/internal/os/RuntimeInit$KillApplicationHandler;-><init>(Lcom/android/internal/os/RuntimeInit$LoggingHandler;)V
+HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>()V
+HSPLcom/android/internal/os/RuntimeInit$LoggingHandler;-><init>(Lcom/android/internal/os/RuntimeInit$1;)V
+HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;-><init>(Ljava/lang/reflect/Method;[Ljava/lang/String;)V
 HSPLcom/android/internal/os/RuntimeInit$MethodAndArgsCaller;->run()V
-HSPLcom/android/internal/os/RuntimeInit;->applicationInit(I[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable;
+HSPLcom/android/internal/os/RuntimeInit$RuntimeThreadPrioritySetter;->setPriority(II)V
+HSPLcom/android/internal/os/RuntimeInit;->applicationInit(I[J[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable;
 HSPLcom/android/internal/os/RuntimeInit;->commonInit()V
 HSPLcom/android/internal/os/RuntimeInit;->findStaticMain(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable;
-HSPLcom/android/internal/os/RuntimeInit;->getApplicationObject()Landroid/os/IBinder;
 HSPLcom/android/internal/os/RuntimeInit;->getDefaultUserAgent()Ljava/lang/String;
+HSPLcom/android/internal/os/RuntimeInit;->lambda$commonInit$0()Ljava/lang/String;
+HSPLcom/android/internal/os/RuntimeInit;->maybeDisableHeapPointerTagging([J)V
 HSPLcom/android/internal/os/RuntimeInit;->redirectLogStreams()V
 HSPLcom/android/internal/os/RuntimeInit;->setApplicationObject(Landroid/os/IBinder;)V
 HSPLcom/android/internal/os/RuntimeInit;->wtf(Ljava/lang/String;Ljava/lang/Throwable;Z)V
-HSPLcom/android/internal/os/SensorPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/SensorPowerCalculator;->getAverageGpsPower(Lcom/android/internal/os/PowerProfile;Landroid/os/BatteryStats;JI)D
+HSPLcom/android/internal/os/SomeArgs;-><init>()V
 HSPLcom/android/internal/os/SomeArgs;->clear()V
 HSPLcom/android/internal/os/SomeArgs;->obtain()Lcom/android/internal/os/SomeArgs;
 HSPLcom/android/internal/os/SomeArgs;->recycle()V
-PLcom/android/internal/os/TransferPipe;-><init>()V
-PLcom/android/internal/os/TransferPipe;->closeFd(I)V
-PLcom/android/internal/os/TransferPipe;->getNewOutputStream()Ljava/io/OutputStream;
-PLcom/android/internal/os/TransferPipe;->getReadFd()Landroid/os/ParcelFileDescriptor;
-PLcom/android/internal/os/TransferPipe;->getWriteFd()Landroid/os/ParcelFileDescriptor;
-PLcom/android/internal/os/TransferPipe;->go(Ljava/io/FileDescriptor;)V
-PLcom/android/internal/os/TransferPipe;->go(Ljava/io/FileDescriptor;J)V
-PLcom/android/internal/os/TransferPipe;->kill()V
-HPLcom/android/internal/os/TransferPipe;->run()V
-HSPLcom/android/internal/os/WakelockPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/WakelockPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
-HSPLcom/android/internal/os/WakelockPowerCalculator;->reset()V
-HSPLcom/android/internal/os/WifiPowerCalculator;-><init>(Lcom/android/internal/os/PowerProfile;)V
-HSPLcom/android/internal/os/WifiPowerCalculator;->calculateApp(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats$Uid;JJI)V
-HSPLcom/android/internal/os/WifiPowerCalculator;->calculateRemaining(Lcom/android/internal/os/BatterySipper;Landroid/os/BatteryStats;JJI)V
-HSPLcom/android/internal/os/WifiPowerCalculator;->reset()V
+HSPLcom/android/internal/os/StatsdHiddenApiUsageLogger;->getInstance()Lcom/android/internal/os/StatsdHiddenApiUsageLogger;
+HSPLcom/android/internal/os/StatsdHiddenApiUsageLogger;->hiddenApiUsed(ILjava/lang/String;Ljava/lang/String;IZ)V
+HSPLcom/android/internal/os/StatsdHiddenApiUsageLogger;->newLogUsage(Ljava/lang/String;IZ)V
+HSPLcom/android/internal/os/StatsdHiddenApiUsageLogger;->setHiddenApiAccessLogSampleRates(II)V
 HSPLcom/android/internal/os/Zygote;->applyDebuggerSystemProperty(Lcom/android/internal/os/ZygoteArguments;)V
 HSPLcom/android/internal/os/Zygote;->applyInvokeWithSecurityPolicy(Lcom/android/internal/os/ZygoteArguments;Landroid/net/Credentials;)V
 HSPLcom/android/internal/os/Zygote;->applyInvokeWithSystemProperty(Lcom/android/internal/os/ZygoteArguments;)V
 HSPLcom/android/internal/os/Zygote;->applyUidSecurityPolicy(Lcom/android/internal/os/ZygoteArguments;Landroid/net/Credentials;)V
 HSPLcom/android/internal/os/Zygote;->callPostForkChildHooks(IZZLjava/lang/String;)V
-HSPLcom/android/internal/os/Zygote;->callPostForkSystemServerHooks()V
 HSPLcom/android/internal/os/Zygote;->createManagedSocketFromInitSocket(Ljava/lang/String;)Landroid/net/LocalServerSocket;
-HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)I
-HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/internal/os/Zygote;->disableExecuteOnly(I)V
+HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;IZ[Ljava/lang/String;)I
+HSPLcom/android/internal/os/Zygote;->forkSystemServer(II[II[[IJJ)I
 HSPLcom/android/internal/os/Zygote;->getConfigurationProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/os/Zygote;->getConfigurationPropertyBoolean(Ljava/lang/String;Ljava/lang/Boolean;)Z
+HSPLcom/android/internal/os/Zygote;->getUsapPoolEventFD()Ljava/io/FileDescriptor;
+HSPLcom/android/internal/os/Zygote;->getWrapProperty(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/os/Zygote;->initNativeState(Z)V
 HSPLcom/android/internal/os/Zygote;->readArgumentList(Ljava/io/BufferedReader;)[Ljava/lang/String;
-HSPLcom/android/internal/os/Zygote;->resetNicePriority()V
+HSPLcom/android/internal/os/Zygote;->setAppProcessName(Lcom/android/internal/os/ZygoteArguments;Ljava/lang/String;)V
 HSPLcom/android/internal/os/ZygoteArguments;-><init>([Ljava/lang/String;)V
+HSPLcom/android/internal/os/ZygoteArguments;->getAssignmentList(Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/internal/os/ZygoteArguments;->getAssignmentValue(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/internal/os/ZygoteArguments;->parseArgs([Ljava/lang/String;)V
-HSPLcom/android/internal/os/ZygoteConnection$HiddenApiUsageLogger;-><init>()V
 HSPLcom/android/internal/os/ZygoteConnection;-><init>(Landroid/net/LocalSocket;Ljava/lang/String;)V
 HSPLcom/android/internal/os/ZygoteConnection;->canPreloadApp()Z
 HSPLcom/android/internal/os/ZygoteConnection;->closeSocket()V
 HSPLcom/android/internal/os/ZygoteConnection;->getFileDescriptor()Ljava/io/FileDescriptor;
 HSPLcom/android/internal/os/ZygoteConnection;->handleAbiListQuery()V
 HSPLcom/android/internal/os/ZygoteConnection;->handleApiBlacklistExemptions(Lcom/android/internal/os/ZygoteServer;[Ljava/lang/String;)Ljava/lang/Runnable;
-HSPLcom/android/internal/os/ZygoteConnection;->handleChildProc(Lcom/android/internal/os/ZygoteArguments;[Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable;
+HSPLcom/android/internal/os/ZygoteConnection;->handleBootCompleted()V
+HSPLcom/android/internal/os/ZygoteConnection;->handleChildProc(Lcom/android/internal/os/ZygoteArguments;Ljava/io/FileDescriptor;Z)Ljava/lang/Runnable;
 HSPLcom/android/internal/os/ZygoteConnection;->handleHiddenApiAccessLogSampleRate(Lcom/android/internal/os/ZygoteServer;II)Ljava/lang/Runnable;
-HSPLcom/android/internal/os/ZygoteConnection;->handleParentProc(I[Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;)V
-HSPLcom/android/internal/os/ZygoteConnection;->handlePreload()V
+HSPLcom/android/internal/os/ZygoteConnection;->handleParentProc(ILjava/io/FileDescriptor;)V
 HSPLcom/android/internal/os/ZygoteConnection;->isClosedByPeer()Z
-HSPLcom/android/internal/os/ZygoteConnection;->isPreloadComplete()Z
-HSPLcom/android/internal/os/ZygoteConnection;->preload()V
+HSPLcom/android/internal/os/ZygoteConnection;->lambda$handleApiBlacklistExemptions$0([Ljava/lang/String;)V
+HSPLcom/android/internal/os/ZygoteConnection;->lambda$handleHiddenApiAccessLogSampleRate$1(II)V
 HSPLcom/android/internal/os/ZygoteConnection;->processOneCommand(Lcom/android/internal/os/ZygoteServer;)Ljava/lang/Runnable;
 HSPLcom/android/internal/os/ZygoteConnection;->setChildPgid(I)V
 HSPLcom/android/internal/os/ZygoteConnection;->stateChangeWithUsapPoolReset(Lcom/android/internal/os/ZygoteServer;Ljava/lang/Runnable;)Ljava/lang/Runnable;
-HSPLcom/android/internal/os/ZygoteInit;->createSystemServerClassLoader()V
-HSPLcom/android/internal/os/ZygoteInit;->encodeSystemServerClassPath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/os/ZygoteInit;->cacheNonBootClasspathClassLoaders()V
+HSPLcom/android/internal/os/ZygoteInit;->endPreload()V
 HSPLcom/android/internal/os/ZygoteInit;->forkSystemServer(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/os/ZygoteServer;)Ljava/lang/Runnable;
-HSPLcom/android/internal/os/ZygoteInit;->handleSystemServerProcess(Lcom/android/internal/os/ZygoteArguments;)Ljava/lang/Runnable;
+HSPLcom/android/internal/os/ZygoteInit;->gcAndFinalize()V
 HSPLcom/android/internal/os/ZygoteInit;->main([Ljava/lang/String;)V
-HSPLcom/android/internal/os/ZygoteInit;->performSystemServerDexOpt(Ljava/lang/String;)Z
+HSPLcom/android/internal/os/ZygoteInit;->maybePreloadGraphicsDriver()V
+HSPLcom/android/internal/os/ZygoteInit;->posixCapabilitiesAsBits([I)J
 HSPLcom/android/internal/os/ZygoteInit;->preload(Landroid/util/TimingsTraceLog;)V
 HSPLcom/android/internal/os/ZygoteInit;->preloadClasses()V
 HSPLcom/android/internal/os/ZygoteInit;->preloadColorStateLists(Landroid/content/res/TypedArray;)I
 HSPLcom/android/internal/os/ZygoteInit;->preloadDrawables(Landroid/content/res/TypedArray;)I
 HSPLcom/android/internal/os/ZygoteInit;->preloadResources()V
-HSPLcom/android/internal/os/ZygoteInit;->prepareSystemServerProfile(Ljava/lang/String;)V
+HSPLcom/android/internal/os/ZygoteInit;->preloadSharedLibraries()V
+HSPLcom/android/internal/os/ZygoteInit;->preloadTextResources()V
+HSPLcom/android/internal/os/ZygoteInit;->setApiBlacklistExemptions([Ljava/lang/String;)V
+HSPLcom/android/internal/os/ZygoteInit;->setHiddenApiAccessLogSampleRate(I)V
+HSPLcom/android/internal/os/ZygoteInit;->setHiddenApiUsageLogger(Ldalvik/system/VMRuntime$HiddenApiUsageLogger;)V
+HSPLcom/android/internal/os/ZygoteInit;->shouldProfileSystemServer()Z
 HSPLcom/android/internal/os/ZygoteInit;->warmUpJcaProviders()V
+HSPLcom/android/internal/os/ZygoteInit;->zygoteInit(I[J[Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Runnable;
 HSPLcom/android/internal/os/ZygoteServer;-><init>(Z)V
 HSPLcom/android/internal/os/ZygoteServer;->acceptCommandPeer(Ljava/lang/String;)Lcom/android/internal/os/ZygoteConnection;
 HSPLcom/android/internal/os/ZygoteServer;->closeServerSocket()V
 HSPLcom/android/internal/os/ZygoteServer;->createNewConnection(Landroid/net/LocalSocket;Ljava/lang/String;)Lcom/android/internal/os/ZygoteConnection;
 HSPLcom/android/internal/os/ZygoteServer;->fetchUsapPoolPolicyProps()V
+HSPLcom/android/internal/os/ZygoteServer;->fetchUsapPoolPolicyPropsWithMinInterval()V
 HSPLcom/android/internal/os/ZygoteServer;->getZygoteSocketFileDescriptor()Ljava/io/FileDescriptor;
 HSPLcom/android/internal/os/ZygoteServer;->isUsapPoolEnabled()Z
 HSPLcom/android/internal/os/ZygoteServer;->runSelectLoop(Ljava/lang/String;)Ljava/lang/Runnable;
 HSPLcom/android/internal/os/ZygoteServer;->setForkChild()V
+HSPLcom/android/internal/policy/-$$Lambda$PhoneWindow$9SyKQeTuaYx7qUIMJIr4Lk2OpYw;-><init>(Lcom/android/internal/policy/PhoneWindow;)V
+HSPLcom/android/internal/policy/-$$Lambda$PhoneWindow$9SyKQeTuaYx7qUIMJIr4Lk2OpYw;->onContentApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/util/Pair;
+HSPLcom/android/internal/policy/DecorContext;-><init>(Landroid/content/Context;Landroid/content/Context;)V
+HSPLcom/android/internal/policy/DecorContext;->getAutofillOptions()Landroid/content/AutofillOptions;
 HSPLcom/android/internal/policy/DecorContext;->getContentCaptureOptions()Landroid/content/ContentCaptureOptions;
 HSPLcom/android/internal/policy/DecorContext;->getResources()Landroid/content/res/Resources;
 HSPLcom/android/internal/policy/DecorContext;->getSystemService(Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/internal/policy/DecorContext;->setPhoneWindow(Lcom/android/internal/policy/PhoneWindow;)V
-HSPLcom/android/internal/policy/DecorView$1;-><init>()V
-HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;-><init>(IIIIILjava/lang/String;IILcom/android/internal/policy/DecorView$1;)V
 HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isPresent(IIZ)Z
-HPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(IIIZ)Z
 HSPLcom/android/internal/policy/DecorView$ColorViewAttributes;->isVisible(ZIIZ)Z
+HSPLcom/android/internal/policy/DecorView$ColorViewState;-><init>(Lcom/android/internal/policy/DecorView$ColorViewAttributes;)V
 HSPLcom/android/internal/policy/DecorView;-><init>(Landroid/content/Context;ILcom/android/internal/policy/PhoneWindow;Landroid/view/WindowManager$LayoutParams;)V
+HSPLcom/android/internal/policy/DecorView;->calculateBarColor(IIIIIIZ)I
+HSPLcom/android/internal/policy/DecorView;->calculateNavigationBarColor()I
+HSPLcom/android/internal/policy/DecorView;->calculateStatusBarColor()I
 HSPLcom/android/internal/policy/DecorView;->createDecorCaptionView(Landroid/view/LayoutInflater;)Lcom/android/internal/widget/DecorCaptionView;
 HSPLcom/android/internal/policy/DecorView;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
-HSPLcom/android/internal/policy/DecorView;->dispatchPopulateAccessibilityEventInternal(Landroid/view/accessibility/AccessibilityEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->dispatchTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->draw(Landroid/graphics/Canvas;)V
+HSPLcom/android/internal/policy/DecorView;->drawLegacyNavigationBarBackground(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawResizingShadowIfNeeded(Landroid/graphics/RecordingCanvas;)V
 HSPLcom/android/internal/policy/DecorView;->drawableChanged()V
 HSPLcom/android/internal/policy/DecorView;->enableCaption(Z)V
 HSPLcom/android/internal/policy/DecorView;->enforceNonTranslucentBackground(Landroid/graphics/drawable/Drawable;Z)Landroid/graphics/drawable/Drawable;
 HSPLcom/android/internal/policy/DecorView;->finishChanging()V
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Landroid/graphics/Region;)Z
-HSPLcom/android/internal/policy/DecorView;->gatherTransparentRegion(Lcom/android/internal/policy/DecorView$ColorViewState;Landroid/graphics/Region;)Z
 HSPLcom/android/internal/policy/DecorView;->getAccessibilityViewId()I
-HPLcom/android/internal/policy/DecorView;->getNavigationBarRect(IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/internal/policy/DecorView;->getBackground()Landroid/graphics/drawable/Drawable;
+HSPLcom/android/internal/policy/DecorView;->getColorViewBottomInset(II)I
+HSPLcom/android/internal/policy/DecorView;->getColorViewRightInset(II)I
+HSPLcom/android/internal/policy/DecorView;->getColorViewTopInset(II)I
+HSPLcom/android/internal/policy/DecorView;->getNavBarSize(III)I
 HSPLcom/android/internal/policy/DecorView;->getResources()Landroid/content/res/Resources;
+HSPLcom/android/internal/policy/DecorView;->getTitleSuffix(Landroid/view/WindowManager$LayoutParams;)Ljava/lang/String;
 HSPLcom/android/internal/policy/DecorView;->initResizingPaints()V
+HSPLcom/android/internal/policy/DecorView;->initializeElevation()V
+HSPLcom/android/internal/policy/DecorView;->isNavBarToLeftEdge(II)Z
+HSPLcom/android/internal/policy/DecorView;->isNavBarToRightEdge(II)Z
+HSPLcom/android/internal/policy/DecorView;->isResizing()Z
 HSPLcom/android/internal/policy/DecorView;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->onAttachedToWindow()V
 HSPLcom/android/internal/policy/DecorView;->onCloseSystemDialogs(Ljava/lang/String;)V
@@ -21494,8 +14823,8 @@
 HSPLcom/android/internal/policy/DecorView;->onTouchEvent(Landroid/view/MotionEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->onWindowFocusChanged(Z)V
 HSPLcom/android/internal/policy/DecorView;->onWindowSystemUiVisibilityChanged(I)V
+HSPLcom/android/internal/policy/DecorView;->releaseThreadedRenderer()V
 HSPLcom/android/internal/policy/DecorView;->sendAccessibilityEvent(I)V
-HSPLcom/android/internal/policy/DecorView;->setBackgroundFallback(Landroid/graphics/drawable/Drawable;)V
 HSPLcom/android/internal/policy/DecorView;->setColor(Landroid/view/View;IIZZ)V
 HSPLcom/android/internal/policy/DecorView;->setFrame(IIII)Z
 HSPLcom/android/internal/policy/DecorView;->setWindow(Lcom/android/internal/policy/PhoneWindow;)V
@@ -21504,7 +14833,9 @@
 HSPLcom/android/internal/policy/DecorView;->startChanging()V
 HSPLcom/android/internal/policy/DecorView;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLcom/android/internal/policy/DecorView;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIIZZIZZ)V
+HSPLcom/android/internal/policy/DecorView;->updateAvailableWidth()V
+HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V
+HSPLcom/android/internal/policy/DecorView;->updateColorViewInt(Lcom/android/internal/policy/DecorView$ColorViewState;IIIIZZIZZLandroid/view/InsetsState;)V
 HSPLcom/android/internal/policy/DecorView;->updateColorViewTranslations()V
 HSPLcom/android/internal/policy/DecorView;->updateColorViews(Landroid/view/WindowInsets;Z)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->updateDecorCaptionStatus(Landroid/content/res/Configuration;)V
@@ -21513,658 +14844,81 @@
 HSPLcom/android/internal/policy/DecorView;->updateStatusGuard(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
 HSPLcom/android/internal/policy/DecorView;->willYouTakeTheInputQueue()Landroid/view/InputQueue$Callback;
 HSPLcom/android/internal/policy/DecorView;->willYouTakeTheSurface()Landroid/view/SurfaceHolder$Callback2;
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;-><init>(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;)V
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;-><init>(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;IZ)V
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;->addRatio16_9Targets(ZI)V
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;->calculateTargets(ZI)V
-HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;-><init>()V
-HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->addStateMonitorCallback(Lcom/android/internal/policy/IKeyguardStateCallback;)V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onBootCompleted()V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onDreamingStarted()V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onDreamingStopped()V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onFinishedGoingToSleep(IZ)V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onFinishedWakingUp()V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurnedOff()V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurnedOn()V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurningOff()V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onStartedGoingToSleep(I)V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onStartedWakingUp()V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->onSystemReady()V
-HSPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->setOccluded(ZZ)V
-HPLcom/android/internal/policy/IKeyguardService$Stub$Proxy;->startKeyguardExitAnimation(JJ)V
-HSPLcom/android/internal/policy/IKeyguardService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardService;
-HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;-><init>()V
-HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/policy/IShortcutService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IShortcutService;
+HSPLcom/android/internal/policy/PhoneFallbackEventHandler;-><init>(Landroid/content/Context;)V
 HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->getAudioManager()Landroid/media/AudioManager;
 HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->preDispatchKeyEvent(Landroid/view/KeyEvent;)V
 HSPLcom/android/internal/policy/PhoneFallbackEventHandler;->setView(Landroid/view/View;)V
 HSPLcom/android/internal/policy/PhoneLayoutInflater;-><init>(Landroid/content/Context;)V
+HSPLcom/android/internal/policy/PhoneLayoutInflater;-><init>(Landroid/view/LayoutInflater;Landroid/content/Context;)V
 HSPLcom/android/internal/policy/PhoneLayoutInflater;->cloneInContext(Landroid/content/Context;)Landroid/view/LayoutInflater;
 HSPLcom/android/internal/policy/PhoneLayoutInflater;->onCreateView(Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
-HSPLcom/android/internal/policy/PhoneWindow$1;->run()V
-HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState$1;-><init>()V
-HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;->onSaveInstanceState()Landroid/os/Parcelable;
-HSPLcom/android/internal/policy/PhoneWindow$RotationWatcher;-><init>()V
+HSPLcom/android/internal/policy/PhoneWindow$1;-><init>(Lcom/android/internal/policy/PhoneWindow;)V
+HSPLcom/android/internal/policy/PhoneWindow$PanelFeatureState;-><init>(I)V
+HSPLcom/android/internal/policy/PhoneWindow$PhoneWindowMenuCallback;-><init>(Lcom/android/internal/policy/PhoneWindow;)V
 HSPLcom/android/internal/policy/PhoneWindow;-><init>(Landroid/content/Context;)V
 HSPLcom/android/internal/policy/PhoneWindow;-><init>(Landroid/content/Context;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;)V
-HSPLcom/android/internal/policy/PhoneWindow;->alwaysReadCloseOnTouchAttr()V
 HSPLcom/android/internal/policy/PhoneWindow;->closeAllPanels()V
 HSPLcom/android/internal/policy/PhoneWindow;->closeContextMenu()V
 HSPLcom/android/internal/policy/PhoneWindow;->closePanel(Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;Z)V
+HSPLcom/android/internal/policy/PhoneWindow;->createDefaultContentWindowInsetsListener()Landroid/view/Window$OnContentApplyWindowInsetsListener;
 HSPLcom/android/internal/policy/PhoneWindow;->dispatchWindowAttributesChanged(Landroid/view/WindowManager$LayoutParams;)V
-HSPLcom/android/internal/policy/PhoneWindow;->doInvalidatePanelMenu(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->generateDecor(I)Lcom/android/internal/policy/DecorView;
 HSPLcom/android/internal/policy/PhoneWindow;->generateLayout(Lcom/android/internal/policy/DecorView;)Landroid/view/ViewGroup;
 HSPLcom/android/internal/policy/PhoneWindow;->getDecorView()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->getLayoutInflater()Landroid/view/LayoutInflater;
-HSPLcom/android/internal/policy/PhoneWindow;->getNavigationBarColor()I
-HSPLcom/android/internal/policy/PhoneWindow;->getNavigationBarDividerColor()I
 HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZ)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;
 HSPLcom/android/internal/policy/PhoneWindow;->getPanelState(IZLcom/android/internal/policy/PhoneWindow$PanelFeatureState;)Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;
 HSPLcom/android/internal/policy/PhoneWindow;->getTransition(Landroid/transition/Transition;Landroid/transition/Transition;I)Landroid/transition/Transition;
-HSPLcom/android/internal/policy/PhoneWindow;->getVolumeControlStream()I
 HSPLcom/android/internal/policy/PhoneWindow;->installDecor()V
-HSPLcom/android/internal/policy/PhoneWindow;->invalidatePanelMenu(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->isFloating()Z
 HSPLcom/android/internal/policy/PhoneWindow;->isShowingWallpaper()Z
 HSPLcom/android/internal/policy/PhoneWindow;->isTranslucent()Z
+HSPLcom/android/internal/policy/PhoneWindow;->lambda$createDefaultContentWindowInsetsListener$0$PhoneWindow(Landroid/view/WindowInsets;)Landroid/util/Pair;
 HSPLcom/android/internal/policy/PhoneWindow;->onActive()V
-HSPLcom/android/internal/policy/PhoneWindow;->onKeyDown(IILandroid/view/KeyEvent;)Z
-HSPLcom/android/internal/policy/PhoneWindow;->onKeyUp(IILandroid/view/KeyEvent;)Z
 HSPLcom/android/internal/policy/PhoneWindow;->onViewRootImplSet(Landroid/view/ViewRootImpl;)V
 HSPLcom/android/internal/policy/PhoneWindow;->openPanelsAfterRestore()V
 HSPLcom/android/internal/policy/PhoneWindow;->peekDecorView()Landroid/view/View;
 HSPLcom/android/internal/policy/PhoneWindow;->requestFeature(I)Z
-HSPLcom/android/internal/policy/PhoneWindow;->restoreHierarchyState(Landroid/os/Bundle;)V
 HSPLcom/android/internal/policy/PhoneWindow;->saveHierarchyState()Landroid/os/Bundle;
-HPLcom/android/internal/policy/PhoneWindow;->sendCloseSystemWindows(Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/internal/policy/PhoneWindow;->savePanelState(Landroid/util/SparseArray;)V
 HSPLcom/android/internal/policy/PhoneWindow;->setAttributes(Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/internal/policy/PhoneWindow;->setBackgroundDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLcom/android/internal/policy/PhoneWindow;->setCloseOnSwipeEnabled(Z)V
 HSPLcom/android/internal/policy/PhoneWindow;->setContentView(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->setContentView(Landroid/view/View;)V
 HSPLcom/android/internal/policy/PhoneWindow;->setContentView(Landroid/view/View;Landroid/view/ViewGroup$LayoutParams;)V
-HSPLcom/android/internal/policy/PhoneWindow;->setDefaultIcon(I)V
-HSPLcom/android/internal/policy/PhoneWindow;->setDefaultLogo(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->setDefaultWindowFormat(I)V
-HSPLcom/android/internal/policy/PhoneWindow;->setNavigationBarColor(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->setStatusBarColor(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->setTheme(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->setTitle(Ljava/lang/CharSequence;)V
 HSPLcom/android/internal/policy/PhoneWindow;->setTitle(Ljava/lang/CharSequence;Z)V
 HSPLcom/android/internal/policy/PhoneWindow;->setTitleColor(I)V
-HSPLcom/android/internal/policy/PhoneWindow;->setVolumeControlStream(I)V
 HSPLcom/android/internal/policy/PhoneWindow;->superDispatchKeyEvent(Landroid/view/KeyEvent;)Z
 HSPLcom/android/internal/policy/PhoneWindow;->superDispatchTouchEvent(Landroid/view/MotionEvent;)Z
-HSPLcom/android/internal/policy/PipSnapAlgorithm;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->applySnapFraction(Landroid/graphics/Rect;Landroid/graphics/Rect;F)V
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->calculateSnapTargets()V
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->getMovementBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;I)V
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->getSizeForAspectRatio(FFII)Landroid/util/Size;
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->getSnapFraction(Landroid/graphics/Rect;Landroid/graphics/Rect;)F
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->onConfigurationChanged()V
-HSPLcom/android/internal/policy/PipSnapAlgorithm;->snapRectToClosestEdge(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/internal/policy/ScreenDecorationsUtils;->getWindowCornerRadius(Landroid/content/res/Resources;)F
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionCancelled(I)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionFinished(I)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionPending(I)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->appTransitionStarting(IJJ)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->disable(III)V
-HPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->handleSystemKey(I)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->onProposedRotationChanged(IZ)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setImeWindowStatus(ILandroid/os/IBinder;IIZ)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setSystemUiVisibility(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setTopAppHidesStatusBar(Z)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->setWindowState(III)V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub$Proxy;->topAppWindowChanged(IZ)V
-HSPLcom/android/internal/statusbar/IStatusBarService$Stub;-><init>()V
+HSPLcom/android/internal/policy/ScreenDecorationsUtils;->supportsRoundedCornersOnWindows(Landroid/content/res/Resources;)Z
 HSPLcom/android/internal/statusbar/IStatusBarService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/statusbar/IStatusBarService;
-HSPLcom/android/internal/statusbar/IStatusBarService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/statusbar/NotificationVisibility$1;-><init>()V
-PLcom/android/internal/statusbar/NotificationVisibility$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/statusbar/NotificationVisibility;
-HPLcom/android/internal/statusbar/NotificationVisibility$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLcom/android/internal/statusbar/NotificationVisibility$1;->newArray(I)[Lcom/android/internal/statusbar/NotificationVisibility;
-HPLcom/android/internal/statusbar/NotificationVisibility$1;->newArray(I)[Ljava/lang/Object;
-HSPLcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;-><init>(Ljava/lang/String;II)V
-PLcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;->values()[Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;
-HPLcom/android/internal/statusbar/NotificationVisibility;->readFromParcel(Landroid/os/Parcel;)V
-HSPLcom/android/internal/statusbar/NotificationVisibility;->recycle()V
-HSPLcom/android/internal/statusbar/StatusBarIcon;-><init>(Landroid/os/UserHandle;Ljava/lang/String;Landroid/graphics/drawable/Icon;IILjava/lang/CharSequence;)V
-PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->addConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V
-PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->createConnection(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Landroid/telecom/ConnectionRequest;ZZLandroid/telecom/Logging/Session$Info;)V
-PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->createConnectionComplete(Ljava/lang/String;Landroid/telecom/Logging/Session$Info;)V
-PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->onCallAudioStateChanged(Ljava/lang/String;Landroid/telecom/CallAudioState;Landroid/telecom/Logging/Session$Info;)V
-PLcom/android/internal/telecom/IConnectionService$Stub$Proxy;->removeConnectionServiceAdapter(Lcom/android/internal/telecom/IConnectionServiceAdapter;Landroid/telecom/Logging/Session$Info;)V
-PLcom/android/internal/telecom/IConnectionService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IConnectionService;
-PLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;-><init>()V
-PLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->asBinder()Landroid/os/IBinder;
-HPLcom/android/internal/telecom/IConnectionServiceAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/internal/telecom/IInCallAdapter$Stub;-><init>()V
-PLcom/android/internal/telecom/IInCallAdapter$Stub;->asBinder()Landroid/os/IBinder;
-PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->addCall(Landroid/telecom/ParcelableCall;)V
-PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->onCallAudioStateChanged(Landroid/telecom/CallAudioState;)V
-PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->onCanAddCallChanged(Z)V
-PLcom/android/internal/telecom/IInCallService$Stub$Proxy;->setInCallAdapter(Lcom/android/internal/telecom/IInCallAdapter;)V
-HPLcom/android/internal/telecom/IInCallService$Stub$Proxy;->updateCall(Landroid/telecom/ParcelableCall;)V
-PLcom/android/internal/telecom/IInCallService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IInCallService;
-HPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->addNewIncomingCall(Landroid/telecom/PhoneAccountHandle;Landroid/os/Bundle;)V
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallCapablePhoneAccounts(ZLjava/lang/String;)Ljava/util/List;
+HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCallState()I
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getCurrentTtyMode(Ljava/lang/String;)I
 HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getDefaultDialerPackage()Ljava/lang/String;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getDefaultOutgoingPhoneAccount(Ljava/lang/String;Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getPhoneAccount(Landroid/telecom/PhoneAccountHandle;)Landroid/telecom/PhoneAccount;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getPhoneAccountsSupportingScheme(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getSystemDialerPackage()Ljava/lang/String;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->getUserSelectedOutgoingPhoneAccount(Ljava/lang/String;)Landroid/telecom/PhoneAccountHandle;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isInCall(Ljava/lang/String;)Z
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->isVoiceMailNumber(Landroid/telecom/PhoneAccountHandle;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->registerPhoneAccount(Landroid/telecom/PhoneAccount;)V
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->unregisterPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
-HSPLcom/android/internal/telecom/ITelecomService$Stub;-><init>()V
 HSPLcom/android/internal/telecom/ITelecomService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/ITelecomService;
-HPLcom/android/internal/telecom/ITelecomService$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/telecom/ITelecomService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telecom/IVideoProvider$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telecom/IVideoProvider;
-PLcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;->onResult(Ljava/util/List;Ljava/util/List;)V
-HSPLcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$o5faRHxto_4PRqL7yYyTpAmBXy4;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$o5faRHxto_4PRqL7yYyTpAmBXy4;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$1zkPy06BwndFkKrGCUI1ORIPJcI;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$1zkPy06BwndFkKrGCUI1ORIPJcI;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2WGP2Bp11k7_Xwi1N4YefElOUuM;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2WGP2Bp11k7_Xwi1N4YefElOUuM;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2xgrYNleR8FFzFT8hEQx3mDtZ8g;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2xgrYNleR8FFzFT8hEQx3mDtZ8g;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$8HFbCDJDN1mrLJG980qYH5MGqMk;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$8HFbCDJDN1mrLJG980qYH5MGqMk;->checkPermission(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$AjZFvwh3Ujx5W3fleFNksc6bLf0;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$FHid4fId_8FGzS_VkQR6V_NuxrY;->checkPermission(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$Ja9yTBcEYPqTRBIP-hL0otixVeE;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$P0j9hvO3e-UE9_1i1QM_ujl8Bpo;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$P0j9hvO3e-UE9_1i1QM_ujl8Bpo;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$U28a_EGx2cvmQhDfRRgonMt5Zrc;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$U28a_EGx2cvmQhDfRRgonMt5Zrc;->checkPermission(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$ZOtVAnuhxrXl2L906I6eTOentP0;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$ZOtVAnuhxrXl2L906I6eTOentP0;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$bWluhZvk2X-dQ0UidKfdpd0kwuw;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$bWluhZvk2X-dQ0UidKfdpd0kwuw;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$hh4N6_N4-PPm_vWjCdCRvS8--Cw;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$hh4N6_N4-PPm_vWjCdCRvS8--Cw;->callMethod(Lcom/android/internal/telephony/Phone;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$qSXnUMuIwAZ0TQjtyVEfznh1w8o;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$qSXnUMuIwAZ0TQjtyVEfznh1w8o;->checkPermission(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$RILRequest$VaC9ddQXT8qxCl7rcNKtUadFQoI;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$RILRequest$VaC9ddQXT8qxCl7rcNKtUadFQoI;->applyAsInt(I)I
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionController$Nt_ojdeqo4C2mbuwymYLvwgOLGo;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionController$VCQsMNqRHpN3RyoXYzh2YUwA2yc;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionController$u5xE-urXR6ElZ50305_6guo20Fc;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$-zZXM9oMRZ3vZz7dJOG19J00Bmw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$D5yF1HbS4cvCyoAj3FESkPtA_0g;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$D5yF1HbS4cvCyoAj3FESkPtA_0g;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$MMx9iQX0JVqqMPLTUZhdBubFSzU;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$eUdIxJOKoyVP5UmFJtWXBUO93Qk;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$nLdppNQT1Bv7QyIU3LwAwVD2K60;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/-$$Lambda$TelephonyPermissions$LxEEC4irBSbjD1lSC4EeVLgFY9I;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$TelephonyPermissions$LxEEC4irBSbjD1lSC4EeVLgFY9I;->get()Ljava/lang/Object;
-HSPLcom/android/internal/telephony/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;->applyAsInt(Ljava/lang/Object;)I
-HSPLcom/android/internal/telephony/-$$Lambda$WWHOcG5P4-jgjzPPgLwm-wN15OM;-><init>()V
-HSPLcom/android/internal/telephony/-$$Lambda$WWHOcG5P4-jgjzPPgLwm-wN15OM;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/AppSmsManager;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/BaseCommands;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/BaseCommands;->getRadioState()I
-HSPLcom/android/internal/telephony/BaseCommands;->getRilVersion()I
-HSPLcom/android/internal/telephony/BaseCommands;->registerForAvailable(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForCdmaOtaProvision(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForCdmaSubscriptionChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForCellInfoList(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForDataCallListChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForEmergencyNumberList(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForExitEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForHardwareConfigChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForIccRefresh(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForIccStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForImsNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForLceInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForModemReset(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForNattKeepaliveStatus(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForNetworkStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForOffOrNotAvailable(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForOn(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForPcoData(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForPhysicalChannelConfiguration(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForRadioCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForRadioStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForResendIncallMute(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForRilConnected(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForSrvccStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForSubscriptionStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->registerForVoiceRadioTechChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setEmergencyCallbackMode(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCallRing(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCatCallSetUp(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCatCcAlphaNotify(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCatEvent(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCatProactiveCmd(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnCatSessionEnd(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnIccSmsFull(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnNewCdmaSms(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnNewGsmBroadcastSms(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnNewGsmSms(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnRestrictedStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnSignalStrengthUpdate(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnSmsOnSim(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnSmsStatus(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnSs(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnSuppServiceNotification(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnUSSD(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setOnUnsolOemHookRaw(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/BaseCommands;->setRadioState(IZ)V
-HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCallWaitingInfo(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaOtaProvision(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/BaseCommands;->unregisterForCdmaPrlChanged(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/BaseCommands;->unregisterForInCallVoicePrivacyOff(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/BaseCommands;->unregisterForInCallVoicePrivacyOn(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/BaseCommands;->unregisterForLceInfo(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/BaseCommands;->unregisterForNattKeepaliveStatus(Landroid/os/Handler;)V
-PLcom/android/internal/telephony/BlockChecker;->getBlockStatus(Landroid/content/Context;Ljava/lang/String;Landroid/os/Bundle;)I
-HSPLcom/android/internal/telephony/Call$SrvccState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/Call$State;-><init>(Ljava/lang/String;I)V
-HPLcom/android/internal/telephony/Call$State;->isRinging()Z
-HSPLcom/android/internal/telephony/Call$State;->values()[Lcom/android/internal/telephony/Call$State;
-HSPLcom/android/internal/telephony/Call;->clearDisconnected()V
-HSPLcom/android/internal/telephony/Call;->getEarliestConnection()Lcom/android/internal/telephony/Connection;
-HSPLcom/android/internal/telephony/Call;->getState()Lcom/android/internal/telephony/Call$State;
-HSPLcom/android/internal/telephony/Call;->isIdle()Z
-HSPLcom/android/internal/telephony/Call;->isRinging()Z
-HSPLcom/android/internal/telephony/Call;->setState(Lcom/android/internal/telephony/Call$State;)V
-HSPLcom/android/internal/telephony/CallManager$CallManagerHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CallManager;-><init>()V
-HPLcom/android/internal/telephony/CallManager;->getActiveFgCall(I)Lcom/android/internal/telephony/Call;
-HPLcom/android/internal/telephony/CallManager;->getActiveFgCallState(I)Lcom/android/internal/telephony/Call$State;
-HPLcom/android/internal/telephony/CallManager;->getFirstNonIdleCall(Ljava/util/List;I)Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/CallManager;->getInstance()Lcom/android/internal/telephony/CallManager;
-HPLcom/android/internal/telephony/CallManager;->getPhone(I)Lcom/android/internal/telephony/Phone;
-HPLcom/android/internal/telephony/CallManager;->hasActiveFgCall()Z
-HPLcom/android/internal/telephony/CallManager;->hasMoreThanOneRingingCall()Z
-HSPLcom/android/internal/telephony/CallManager;->registerForDisconnect(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForMmiComplete(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForPhoneStates(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForSuppServiceFailed(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/CallManager;->registerPhone(Lcom/android/internal/telephony/Phone;)Z
-HSPLcom/android/internal/telephony/CallTracker;->handleRadioAvailable()V
-HSPLcom/android/internal/telephony/CallTracker;->pollCallsWhenSafe()V
-HPLcom/android/internal/telephony/CallerInfo;->doSecondaryLookupIfNecessary(Landroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfo;)Lcom/android/internal/telephony/CallerInfo;
-HPLcom/android/internal/telephony/CallerInfo;->getCallerInfo(Landroid/content/Context;Landroid/net/Uri;Landroid/database/Cursor;)Lcom/android/internal/telephony/CallerInfo;
-HPLcom/android/internal/telephony/CallerInfo;->getCurrentCountryIso(Landroid/content/Context;Ljava/util/Locale;)Ljava/lang/String;
-HPLcom/android/internal/telephony/CallerInfo;->getGeoDescription(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/internal/telephony/CallerInfo;->toString()Ljava/lang/String;
-PLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$1;->run()V
-HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->createHandler(Landroid/os/Looper;)Landroid/os/Handler;
-HPLcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;->onQueryComplete(ILjava/lang/Object;Landroid/database/Cursor;)V
-PLcom/android/internal/telephony/CallerInfoAsyncQuery;->getCurrentProfileContentResolver(Landroid/content/Context;)Landroid/content/ContentResolver;
-PLcom/android/internal/telephony/CallerInfoAsyncQuery;->sanitizeUriToString(Landroid/net/Uri;)Ljava/lang/String;
-PLcom/android/internal/telephony/CallerInfoAsyncQuery;->startQuery(ILandroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;Ljava/lang/Object;)Lcom/android/internal/telephony/CallerInfoAsyncQuery;
-PLcom/android/internal/telephony/CallerInfoAsyncQuery;->startQuery(ILandroid/content/Context;Ljava/lang/String;Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;Ljava/lang/Object;I)Lcom/android/internal/telephony/CallerInfoAsyncQuery;
-HSPLcom/android/internal/telephony/CarrierActionAgent$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionReportDefaultNetworkStatus(Z)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionReset()V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionSetMeteredApnsEnabled(Z)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->carrierActionSetRadioEnabled(Z)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->getCarrierActionEnabled(I)Ljava/lang/Boolean;
-HSPLcom/android/internal/telephony/CarrierActionAgent;->getRegistrantsFromAction(I)Landroid/os/RegistrantList;
-HSPLcom/android/internal/telephony/CarrierActionAgent;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/CarrierActionAgent;->registerForCarrierAction(ILandroid/os/Handler;ILjava/lang/Object;Z)V
-HSPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/content/ContentResolver;I)V
-HSPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/telephony/TelephonyManager;Landroid/content/ContentResolver;I)V
-HSPLcom/android/internal/telephony/CarrierAppUtils;->disableCarrierAppsUntilPrivileged(Ljava/lang/String;Landroid/content/pm/IPackageManager;Landroid/telephony/TelephonyManager;Landroid/content/ContentResolver;ILandroid/util/ArraySet;Landroid/util/ArrayMap;)V
-HSPLcom/android/internal/telephony/CarrierAppUtils;->getApplicationInfoIfSystemApp(Landroid/content/pm/IPackageManager;ILjava/lang/String;)Landroid/content/pm/ApplicationInfo;
-HSPLcom/android/internal/telephony/CarrierAppUtils;->getDefaultCarrierAppCandidatesHelper(Landroid/content/pm/IPackageManager;ILandroid/util/ArraySet;)Ljava/util/List;
-HSPLcom/android/internal/telephony/CarrierAppUtils;->getDefaultCarrierAssociatedAppsHelper(Landroid/content/pm/IPackageManager;ILandroid/util/ArrayMap;)Ljava/util/Map;
-HSPLcom/android/internal/telephony/CarrierInfoManager;->getCarrierInfoForImsiEncryption(ILandroid/content/Context;)Landroid/telephony/ImsiEncryptionInfo;
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->carrierUsesKeys()Z
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->cleanupRenewalAlarms()V
-HSPLcom/android/internal/telephony/CarrierResolver$1;->onChange(ZLandroid/net/Uri;)V
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;-><init>(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/util/List;ILjava/lang/String;I)V
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->match(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)V
-HSPLcom/android/internal/telephony/CarrierResolver;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/CarrierResolver;->getCarrierId()I
-HSPLcom/android/internal/telephony/CarrierResolver;->getCarrierIdFromMccMnc(Landroid/content/Context;Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/CarrierResolver;->getCarrierListVersion()I
-HSPLcom/android/internal/telephony/CarrierResolver;->getPreferApn()Ljava/lang/String;
-HSPLcom/android/internal/telephony/CarrierResolver;->getSpecificCarrierId()I
-HSPLcom/android/internal/telephony/CarrierResolver;->getSubscriptionMatchingRule()Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;
-HSPLcom/android/internal/telephony/CarrierResolver;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CarrierResolver;->handleSimLoaded()V
-HSPLcom/android/internal/telephony/CarrierResolver;->loadCarrierMatchingRulesOnMccMnc()V
-HSPLcom/android/internal/telephony/CarrierResolver;->makeCarrierMatchingRule(Landroid/database/Cursor;)Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;
-HSPLcom/android/internal/telephony/CarrierResolver;->matchSubscriptionCarrier()V
-HSPLcom/android/internal/telephony/CarrierResolver;->resolveSubscriptionCarrierId(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/CarrierResolver;->updateCarrierIdAndName(ILjava/lang/String;ILjava/lang/String;I)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$2;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->getPackage()Ljava/lang/String;
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->getPhoneId()I
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->rebind()V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;->unbind(Z)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HPLcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/CarrierServiceBindHelper;->updateForPhoneId(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$1;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->getTypeId()I
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->sendMessage()Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$EmergencyNetworkNotification;->setDelay(Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->getTypeId()I
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->sendMessage()Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;->setDelay(Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/ServiceStateTracker;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->cancelNotification(I)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->evaluateSendingMessage(Lcom/android/internal/telephony/CarrierServiceStateTracker$NotificationType;)Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->evaluateSendingMessageOrCancelNotification(Lcom/android/internal/telephony/CarrierServiceStateTracker$NotificationType;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->getNotificationManager(Landroid/content/Context;)Landroid/app/NotificationManager;
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->handleConfigChanges()V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isGlobalMode()Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isPhoneRegisteredForWifiCalling()Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->isPhoneStillRegistered()Z
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->registerNotificationTypes()V
-HSPLcom/android/internal/telephony/CarrierServiceStateTracker;->registerPrefNetworkModeObserver()V
-HSPLcom/android/internal/telephony/CarrierSignalAgent$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->broadcast(Landroid/content/Intent;Ljava/util/Set;Z)V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->hasRegisteredReceivers(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->loadCarrierConfig()V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->notifyCarrierSignalReceivers(Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/CarrierSignalAgent;->parseAndCache([Ljava/lang/String;)Ljava/util/Map;
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;-><init>(Lcom/android/internal/telephony/CellularNetworkService;I)V
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->convertHalCellIdentityToCellIdentity(Landroid/hardware/radio/V1_2/CellIdentity;)Landroid/telephony/CellIdentity;
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->createRegistrationStateFromDataRegState(Ljava/lang/Object;)Landroid/telephony/NetworkRegistrationInfo;
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->createRegistrationStateFromVoiceRegState(Ljava/lang/Object;)Landroid/telephony/NetworkRegistrationInfo;
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->getAccessNetworkTechnologyFromRat(I)I
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->getAvailableServices(IIZ)Ljava/util/List;
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->getRegStateFromHalRegState(I)I
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->requestNetworkRegistrationInfo(ILandroid/telephony/NetworkServiceCallback;)V
-HSPLcom/android/internal/telephony/CellularNetworkService;-><init>()V
-HSPLcom/android/internal/telephony/CellularNetworkService;->onCreateNetworkServiceProvider(I)Landroid/telephony/NetworkService$NetworkServiceProvider;
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->changeConcurrentRequests(IJ)V
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->completeRequest(Lcom/android/internal/telephony/RilWakelockInfo;J)V
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->getPendingRequestCount()I
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->removePendingWakelock(II)Lcom/android/internal/telephony/RilWakelockInfo;
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->startAttributingWakelock(IIIJ)V
-HSPLcom/android/internal/telephony/ClientWakelockAccountant;->stopAttributingWakelock(IIJ)V
-HSPLcom/android/internal/telephony/ClientWakelockTracker;->getClientWakelockAccountant(Ljava/lang/String;)Lcom/android/internal/telephony/ClientWakelockAccountant;
-HSPLcom/android/internal/telephony/ClientWakelockTracker;->isClientActive(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/ClientWakelockTracker;->startTracking(Ljava/lang/String;III)V
-HSPLcom/android/internal/telephony/ClientWakelockTracker;->stopTracking(Ljava/lang/String;III)V
-HSPLcom/android/internal/telephony/ClientWakelockTracker;->updateConcurrentRequests(IJ)V
-HSPLcom/android/internal/telephony/CommandException$Error;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/CommandException;->fromRilErrno(I)Lcom/android/internal/telephony/CommandException;
-HSPLcom/android/internal/telephony/CommandException;->getCommandError()Lcom/android/internal/telephony/CommandException$Error;
-HPLcom/android/internal/telephony/Connection;-><init>(I)V
-HPLcom/android/internal/telephony/Connection;->addListener(Lcom/android/internal/telephony/Connection$Listener;)V
-HPLcom/android/internal/telephony/Connection;->addPostDialListener(Lcom/android/internal/telephony/Connection$PostDialListener;)V
-HPLcom/android/internal/telephony/Connection;->getAddress()Ljava/lang/String;
-HPLcom/android/internal/telephony/Connection;->getAudioModeIsVoip()Z
-HPLcom/android/internal/telephony/Connection;->getAudioQuality()I
-HPLcom/android/internal/telephony/Connection;->getCallRadioTech()I
-HPLcom/android/internal/telephony/Connection;->getCnapName()Ljava/lang/String;
-HPLcom/android/internal/telephony/Connection;->getCnapNamePresentation()I
-HPLcom/android/internal/telephony/Connection;->getConnectTime()J
-HPLcom/android/internal/telephony/Connection;->getConnectionCapabilities()I
-HPLcom/android/internal/telephony/Connection;->getConnectionExtras()Landroid/os/Bundle;
-HPLcom/android/internal/telephony/Connection;->getCreateTime()J
-HPLcom/android/internal/telephony/Connection;->getDisconnectCause()I
-HPLcom/android/internal/telephony/Connection;->getPhoneType()I
-HPLcom/android/internal/telephony/Connection;->getPostDialState()Lcom/android/internal/telephony/Connection$PostDialState;
-HPLcom/android/internal/telephony/Connection;->getTelecomCallId()Ljava/lang/String;
-HPLcom/android/internal/telephony/Connection;->getVideoProvider()Landroid/telecom/Connection$VideoProvider;
-HPLcom/android/internal/telephony/Connection;->getVideoState()I
-HPLcom/android/internal/telephony/Connection;->isActiveCallDisconnectedOnAnswer()Z
-HPLcom/android/internal/telephony/Connection;->isIncoming()Z
-HPLcom/android/internal/telephony/Connection;->isNetworkIdentifiedEmergencyCall()Z
-HPLcom/android/internal/telephony/Connection;->isPulledCall()Z
-HPLcom/android/internal/telephony/Connection;->notifyDisconnect(I)V
-HPLcom/android/internal/telephony/Connection;->removeListener(Lcom/android/internal/telephony/Connection$Listener;)V
-HPLcom/android/internal/telephony/Connection;->removePostDialListener(Lcom/android/internal/telephony/Connection$PostDialListener;)V
-HPLcom/android/internal/telephony/Connection;->setAudioQuality(I)V
-HPLcom/android/internal/telephony/Connection;->setCallRadioTech(I)V
-HPLcom/android/internal/telephony/Connection;->setTelecomCallId(Ljava/lang/String;)V
-HPLcom/android/internal/telephony/Connection;->shouldAllowAddCallDuringVideoCall()Z
-HSPLcom/android/internal/telephony/DctConstants$Activity;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/DctConstants$Activity;->values()[Lcom/android/internal/telephony/DctConstants$Activity;
-HSPLcom/android/internal/telephony/DctConstants$State;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/DctConstants$State;->values()[Lcom/android/internal/telephony/DctConstants$State;
-HSPLcom/android/internal/telephony/DebugService;-><init>()V
-HPLcom/android/internal/telephony/DebugService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HPLcom/android/internal/telephony/DefaultPhoneNotifier;->convertDataActivityState(Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;)I
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->convertPreciseCallState(Lcom/android/internal/telephony/Call$State;)I
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->doNotifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyCallForwardingChanged(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyCellInfo(Lcom/android/internal/telephony/Phone;Ljava/util/List;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyCellLocation(Lcom/android/internal/telephony/Phone;Landroid/telephony/CellLocation;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyDataActivity(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyDataConnection(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Lcom/android/internal/telephony/PhoneConstants$DataState;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyEmergencyNumberList()V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyMessageWaitingChanged(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyOtaspChanged(Lcom/android/internal/telephony/Phone;I)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyPhoneState(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyPhysicalChannelConfiguration(Lcom/android/internal/telephony/Phone;Ljava/util/List;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyPreciseCallState(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyPreciseDataConnectionFailed(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyRadioPowerStateChanged(I)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyServiceState(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifySignalStrength(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor$1;->onAvailable(Landroid/net/Network;)V
-HPLcom/android/internal/telephony/DeviceStateMonitor$1;->onLost(Landroid/net/Network;)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor$2;->onDisplayChanged(I)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->computeCellInfoMinInterval()I
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->isScreenOn()Z
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->onReset()V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->onUpdateDeviceState(IZ)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->sendDeviceState(IZ)V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->setLinkCapacityReportingCriteria()V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->setSignalStrengthReportingCriteria()V
-HSPLcom/android/internal/telephony/DeviceStateMonitor;->setUnsolResponseFilter(IZ)V
-HSPLcom/android/internal/telephony/ExponentialBackoff$1;->removeCallbacks(Ljava/lang/Runnable;)V
-HSPLcom/android/internal/telephony/ExponentialBackoff;-><init>(JJILandroid/os/Looper;Ljava/lang/Runnable;)V
-HSPLcom/android/internal/telephony/ExponentialBackoff;->stop()V
-HSPLcom/android/internal/telephony/GlobalSettingsHelper;->getSettingName(Landroid/content/Context;Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/GlobalSettingsHelper;->setInt(Landroid/content/Context;Ljava/lang/String;II)Z
-HSPLcom/android/internal/telephony/GsmAlphabet;->enableCountrySpecificEncodings()V
-HSPLcom/android/internal/telephony/GsmAlphabet;->gsm7BitPackedToString([BIIIII)Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmAlphabet;->gsm8BitUnpackedToString([BIILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaCall;->getConnections()Ljava/util/List;
-HPLcom/android/internal/telephony/GsmCdmaCall;->getPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;-><init>(Lcom/android/internal/telephony/GsmCdmaPhone;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->dispatchCsCallRadioTech(I)V
-HPLcom/android/internal/telephony/GsmCdmaCallTracker;->getPhone()Lcom/android/internal/telephony/GsmCdmaPhone;
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->getState()Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->handlePollCalls(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForVoiceCallEnded(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->registerForVoiceCallStarted(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->unregisterForCallWaiting(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->unregisterForVoiceCallEnded(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->unregisterForVoiceCallStarted(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->updatePhoneState()V
-HSPLcom/android/internal/telephony/GsmCdmaCallTracker;->updatePhoneType(Z)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneNotifier;ZIILcom/android/internal/telephony/TelephonyComponentFactory;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getBackgroundCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getBackgroundCall()Lcom/android/internal/telephony/GsmCdmaCall;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCallTracker()Lcom/android/internal/telephony/CallTracker;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCarrierId()I
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCarrierInfoForImsiEncryption(I)Landroid/telephony/ImsiEncryptionInfo;
-HPLcom/android/internal/telephony/GsmCdmaPhone;->getCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getCsCallRadioTech(II)I
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataActivityState()Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataConnectionState(Ljava/lang/String;)Lcom/android/internal/telephony/PhoneConstants$DataState;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDataRoamingEnabled()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getDeviceId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getEmergencyNumberTracker()Lcom/android/internal/telephony/emergency/EmergencyNumberTracker;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getForegroundCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getForegroundCall()Lcom/android/internal/telephony/GsmCdmaCall;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getFullIccSerialNumber()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getGroupIdLevel1()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getGroupIdLevel2()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccCard()Lcom/android/internal/telephony/IccCard;
-HPLcom/android/internal/telephony/GsmCdmaPhone;->getIccPhoneBookInterfaceManager()Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccRecordsLoaded()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccSerialNumber()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIccSmsInterfaceManager()Lcom/android/internal/telephony/IccSmsInterfaceManager;
-HPLcom/android/internal/telephony/GsmCdmaPhone;->getImei()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getIsimRecords()Lcom/android/internal/telephony/uicc/IsimRecords;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getLine1AlphaTag()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getLine1Number()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getOperatorNumeric()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getPhoneType()I
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getPlmn()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getRingingCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getServiceState()Landroid/telephony/ServiceState;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getServiceStateTracker()Lcom/android/internal/telephony/ServiceStateTracker;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getSpecificCarrierId()I
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getState()Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getSubscriberId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getTransportManager()Lcom/android/internal/telephony/dataconnection/TransportManager;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getVmSimImsi()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->getVoiceMailNumber()Ljava/lang/String;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioAvailable()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioOffOrNotAvailable()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->handleRadioPowerStateChange()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->initOnce(Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->initRatSpecific(I)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->isInEmergencyCall()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeCdma()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeCdmaLte()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->isPhoneTypeGsm()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->isUserDataEnabled()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->loadTtyMode()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->logi(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->mergeServiceStates(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState;
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyCallForwardingIndicator()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyLocationChanged(Landroid/telephony/CellLocation;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyPhoneStateChanged()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyPreciseCallStateChanged()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->notifyServiceStateChanged(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->onUpdateIccAvailability()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->phoneObjectUpdater(I)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->prepareEri()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForCdmaOtaStatusChange(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForEcmTimerReset(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForIccRecordEvents()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->resolveSubscriptionCarrierId(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->setBroadcastEmergencyCallStateChanges(Z)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->setLinkCapacityReportingCriteria([I[II)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->setSignalStrengthReportingCriteria([II)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->setTTYMode(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->setUiTTYMode(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->syncClirSetting()V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForCallWaiting(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForEriFileLoaded(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->unregisterForSimRecordsLoaded(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->updateCurrentCarrierInProvider()Z
-HSPLcom/android/internal/telephony/GsmCdmaPhone;->updateVoiceMail()V
-HSPLcom/android/internal/telephony/HalVersion;-><init>(II)V
-HSPLcom/android/internal/telephony/HalVersion;->compareTo(Lcom/android/internal/telephony/HalVersion;)I
-HSPLcom/android/internal/telephony/HalVersion;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/HalVersion;->greater(Lcom/android/internal/telephony/HalVersion;)Z
-HSPLcom/android/internal/telephony/HalVersion;->greaterOrEqual(Lcom/android/internal/telephony/HalVersion;)Z
-HSPLcom/android/internal/telephony/HalVersion;->less(Lcom/android/internal/telephony/HalVersion;)Z
-HSPLcom/android/internal/telephony/HalVersion;->lessOrEqual(Lcom/android/internal/telephony/HalVersion;)Z
-HSPLcom/android/internal/telephony/HalVersion;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/HardwareConfig;-><init>(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/HardwareConfig;->assignModem(Ljava/lang/String;IIIIII)V
-HSPLcom/android/internal/telephony/HardwareConfig;->assignSim(Ljava/lang/String;ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/HardwareConfig;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getConfigForSubId(ILjava/lang/String;)Landroid/os/PersistableBundle;
-HPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getDefaultCarrierServicePackageName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;-><init>()V
+HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;->getConfigForSubIdWithFeature(ILjava/lang/String;Ljava/lang/String;)Landroid/os/PersistableBundle;
 HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ICarrierConfigLoader;
-HSPLcom/android/internal/telephony/ICarrierConfigLoader$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HPLcom/android/internal/telephony/IIccPhoneBook$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/internal/telephony/IMms$Stub$Proxy;->getAutoPersisting()Z
-HSPLcom/android/internal/telephony/IMms$Stub;-><init>()V
-HSPLcom/android/internal/telephony/IMms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IMms;
-HPLcom/android/internal/telephony/IMms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;->onSubscriptionsChanged()V
 HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;-><init>()V
 HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->asBinder()Landroid/os/IBinder;
 HSPLcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/IOns$Stub;-><init>()V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onActiveDataSubIdChanged(I)V
-HPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onCallAttributesChanged(Landroid/telephony/CallAttributes;)V
-PLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onCallDisconnectCauseChanged(II)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onCallForwardingIndicatorChanged(Z)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onCallStateChanged(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onCarrierNetworkChange(Z)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onDataActivity(I)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onDataConnectionStateChanged(II)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onMessageWaitingIndicatorChanged(Z)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V
-HPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onPreciseDataConnectionStateChanged(Landroid/telephony/PreciseDataConnectionState;)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V
 HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;-><init>()V
 HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->asBinder()Landroid/os/IBinder;
 HSPLcom/android/internal/telephony/IPhoneStateListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getCarrierInfoForImsiEncryption(IILjava/lang/String;)Landroid/telephony/ImsiEncryptionInfo;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;-><init>()V
+HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getLine1NumberForSubscriber(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getSubscriberIdForSubscriber(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/IPhoneSubInfo;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/ISms$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISms;
-HSPLcom/android/internal/telephony/ISms$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/ISmsImplBase;-><init>()V
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubIdList(Z)[I
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubscriptionInfo(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo;
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/internal/telephony/ISub$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveDataSubscriptionId()I
+HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubscriptionInfo(ILjava/lang/String;Ljava/lang/String;)Landroid/telephony/SubscriptionInfo;
+HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getActiveSubscriptionInfoList(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultDataSubId()I
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSmsSubId()I
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getDefaultSubId()I
@@ -22172,2094 +14926,136 @@
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getPhoneId(I)I
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSimStateForSlotIndex(I)I
 HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSlotIndex(I)I
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSubId(I)[I
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->getSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ISub$Stub$Proxy;->isActiveSubId(ILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/ISub$Stub;-><init>()V
 HSPLcom/android/internal/telephony/ISub$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ISub;
-HSPLcom/android/internal/telephony/ISub$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->checkCarrierPrivilegesForPackage(Ljava/lang/String;)I
+HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getActivePhoneTypeForSlot(I)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getAllCellInfo(Ljava/lang/String;)Ljava/util/List;
-HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getCarrierIdFromMccMnc(ILjava/lang/String;Z)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getCarrierPrivilegeStatusForUid(II)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDataNetworkTypeForSubscriber(ILjava/lang/String;)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDataState()I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getEmergencyNumberList(Ljava/lang/String;)Ljava/util/Map;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getImeiForSlot(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1NumberForDisplay(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getMergedSubscriberIds(Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getMmTelFeatureAndListen(ILcom/android/ims/internal/IImsServiceFeatureCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkCountryIsoForPhone(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getPackagesWithCarrierPrivileges()Ljava/util/List;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getServiceStateForSubscriber(ILjava/lang/String;)Landroid/telephony/ServiceState;
-HPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSignalStrength(I)Landroid/telephony/SignalStrength;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubIdForPhoneAccount(Landroid/telecom/PhoneAccount;)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getSubscriptionCarrierId(I)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getTetherApnRequiredForSubscriber(I)Z
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVisualVoicemailPackageName(Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVoiceNetworkTypeForSubscriber(ILjava/lang/String;)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getVtDataUsage(IZ)Landroid/net/NetworkStats;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isEmergencyNumber(Ljava/lang/String;Z)Z
+HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1NumberForDisplay(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkCountryIsoForPhone(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkTypeForSubscriber(ILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getServiceStateForSubscriber(ILjava/lang/String;Ljava/lang/String;)Landroid/telephony/ServiceState;
 HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isUserDataEnabled(I)Z
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->requestModemActivityInfo(Landroid/os/ResultReceiver;)V
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->setPolicyDataEnabled(ZI)V
-HSPLcom/android/internal/telephony/ITelephony$Stub;-><init>()V
 HSPLcom/android/internal/telephony/ITelephony$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephony;
-HSPLcom/android/internal/telephony/ITelephony$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnOpportunisticSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyActiveDataSubIdChanged(I)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyCallForwardingChangedForSubscriber(IZ)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyCallStateForPhoneId(IIILjava/lang/String;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyCellInfoForSubscriber(ILjava/util/List;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataActivityForSubscriber(II)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyEmergencyNumberList()V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyMessageWaitingChangedForPhoneId(IIZ)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOtaspChanged(I)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyPhysicalChannelConfigurationForSubscriber(ILjava/util/List;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyPreciseCallState(IIII)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyPreciseDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyRadioPowerStateChanged(I)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifySubscriptionInfoChanged()V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;-><init>()V
+HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->listenForSubscriber(ILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
 HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/ITelephonyRegistry;
-HPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/telephony/IccCard;->getState()Lcom/android/internal/telephony/IccCardConstants$State;
-HSPLcom/android/internal/telephony/IccCard;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/IccCardConstants$State;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/IccCardConstants$State;->values()[Lcom/android/internal/telephony/IccCardConstants$State;
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;->notifyPending(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;Ljava/lang/Object;)V
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->checkThread()V
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->getAdnRecordsInEf(I)Ljava/util/List;
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->updateIccRecords(Lcom/android/internal/telephony/uicc/IccRecords;)V
-HPLcom/android/internal/telephony/IccPhoneBookInterfaceManager;->waitForResult(Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;)V
-HSPLcom/android/internal/telephony/IccProvider;-><init>()V
-HPLcom/android/internal/telephony/IccProvider;->getRequestSubId(Landroid/net/Uri;)I
-HSPLcom/android/internal/telephony/IccProvider;->getType(Landroid/net/Uri;)Ljava/lang/String;
-HPLcom/android/internal/telephony/IccProvider;->loadFromEf(II)Landroid/database/MatrixCursor;
-HPLcom/android/internal/telephony/IccProvider;->loadRecord(Lcom/android/internal/telephony/uicc/AdnRecord;Landroid/database/MatrixCursor;I)V
-HSPLcom/android/internal/telephony/IccProvider;->onCreate()Z
-HPLcom/android/internal/telephony/IccProvider;->query(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->addRange(IIZ)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->finishUpdate()Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CdmaBroadcastRangeManager;->startUpdate()V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->addRange(IIZ)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->finishUpdate()Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager$CellBroadcastRangeManager;->startUpdate()V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;-><init>(Lcom/android/internal/telephony/Phone;Landroid/content/Context;Landroid/app/AppOpsManager;Landroid/os/UserManager;Lcom/android/internal/telephony/SmsDispatchersController;)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableCdmaBroadcastRange(II)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableCellBroadcastRange(III)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->disableGsmBroadcastRange(II)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableCdmaBroadcastRange(II)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableCellBroadcastRange(III)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->enableGsmBroadcastRange(II)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->setCdmaBroadcastConfig([Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->setCellBroadcastActivation(Z)Z
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->setCellBroadcastConfig([Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;)Z
-HSPLcom/android/internal/telephony/ImsSmsDispatcher$1;->onRegistered(I)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher$1;->onRegistering(I)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher$1;->onUnregistered(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher$2;->onCapabilitiesStatusChanged(Landroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher$4;->connectionReady(Lcom/android/ims/ImsManager;)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsDispatchersController;)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher;->getFormat()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ImsSmsDispatcher;->getSmsListener()Landroid/telephony/ims/aidl/IImsSmsListener;
-HSPLcom/android/internal/telephony/ImsSmsDispatcher;->setListeners()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$1;-><init>()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$2;-><init>()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$DeliveringState;->enter()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$DeliveringState;->exit()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$DeliveringState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->enter()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->exit()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$IdleState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->enter()V
-HSPLcom/android/internal/telephony/InboundSmsHandler$StartupState;->processMessage(Landroid/os/Message;)Z
-HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->enter()V
-HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->exit()V
-HPLcom/android/internal/telephony/InboundSmsHandler$WaitingState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/InboundSmsHandler;-><init>(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/CellBroadcastHandler;)V
-HSPLcom/android/internal/telephony/InboundSmsHandler;->addTrackerToRawTable(Lcom/android/internal/telephony/InboundSmsTracker;Z)I
-HSPLcom/android/internal/telephony/InboundSmsHandler;->addTrackerToRawTableAndSendMessage(Lcom/android/internal/telephony/InboundSmsTracker;Z)I
-HSPLcom/android/internal/telephony/InboundSmsHandler;->checkAndHandleDuplicate(Lcom/android/internal/telephony/InboundSmsTracker;)Z
-HSPLcom/android/internal/telephony/InboundSmsHandler;->deleteFromRawTable(Ljava/lang/String;[Ljava/lang/String;I)V
-HPLcom/android/internal/telephony/InboundSmsHandler;->dispatchIntent(Landroid/content/Intent;Ljava/lang/String;ILandroid/os/Bundle;Landroid/content/BroadcastReceiver;Landroid/os/UserHandle;)V
-HSPLcom/android/internal/telephony/InboundSmsHandler;->dispatchMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
-HSPLcom/android/internal/telephony/InboundSmsHandler;->dispatchNormalMessage(Lcom/android/internal/telephony/SmsMessageBase;)I
-HPLcom/android/internal/telephony/InboundSmsHandler;->filterSms([[BILcom/android/internal/telephony/InboundSmsTracker;Lcom/android/internal/telephony/InboundSmsHandler$SmsBroadcastReceiver;Z)Z
-HSPLcom/android/internal/telephony/InboundSmsHandler;->getPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/InboundSmsHandler;->getWakeLockTimeout()I
-HSPLcom/android/internal/telephony/InboundSmsHandler;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/InboundSmsHandler;->processMessagePart(Lcom/android/internal/telephony/InboundSmsTracker;)Z
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getAddress()Ljava/lang/String;
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getContentValues()Landroid/content/ContentValues;
-PLcom/android/internal/telephony/InboundSmsTracker;->getDeleteWhere()Ljava/lang/String;
-PLcom/android/internal/telephony/InboundSmsTracker;->getDeleteWhereArgs()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getDestPort()I
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getMessageCount()I
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getReferenceNumber()I
-HSPLcom/android/internal/telephony/InboundSmsTracker;->getTimestamp()J
-PLcom/android/internal/telephony/InboundSmsTracker;->is3gpp2()Z
-HSPLcom/android/internal/telephony/InboundSmsTracker;->setDeleteWhere(Ljava/lang/String;[Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/IntRangeManager$ClientRange;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/IntRangeManager$IntRange;->insert(Lcom/android/internal/telephony/IntRangeManager$ClientRange;)V
-HSPLcom/android/internal/telephony/IntRangeManager;->disableRange(IILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/IntRangeManager;->enableRange(IILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/IntRangeManager;->isEmpty()Z
-HSPLcom/android/internal/telephony/IntRangeManager;->tryAddRanges(IIZ)Z
-HSPLcom/android/internal/telephony/IntentBroadcaster$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/IntentBroadcaster;->broadcastStickyIntent(Landroid/content/Intent;I)V
-HSPLcom/android/internal/telephony/LinkCapacityEstimate;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/LocaleTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/LocaleTracker;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/NitzStateMachine;Landroid/os/Looper;)V
-HSPLcom/android/internal/telephony/LocaleTracker;->getCurrentCountry()Ljava/lang/String;
-HSPLcom/android/internal/telephony/LocaleTracker;->getMccFromCellInfo()Ljava/lang/String;
-HSPLcom/android/internal/telephony/LocaleTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/LocaleTracker;->onSimCardStateChanged(I)V
-HSPLcom/android/internal/telephony/LocaleTracker;->processCellInfo(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/LocaleTracker;->requestNextCellInfo(Z)V
-HSPLcom/android/internal/telephony/LocaleTracker;->updateLocale()V
-HSPLcom/android/internal/telephony/LocaleTracker;->updateOperatorNumeric(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/LocaleTracker;->updateTrackingStatus()V
-HSPLcom/android/internal/telephony/MccTable$MccEntry;-><init>(ILjava/lang/String;I)V
-HSPLcom/android/internal/telephony/MccTable$MccEntry;->compareTo(Lcom/android/internal/telephony/MccTable$MccEntry;)I
-HSPLcom/android/internal/telephony/MccTable$MccEntry;->compareTo(Ljava/lang/Object;)I
-HSPLcom/android/internal/telephony/MccTable;->countryCodeForMcc(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/MccTable;->setTimezoneFromMccIfNeeded(Landroid/content/Context;I)V
-HSPLcom/android/internal/telephony/MccTable;->updateMccMncConfiguration(Landroid/content/Context;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->disableDataForNonDefaultNonOpportunisticSubscriptions()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->getInstance()Lcom/android/internal/telephony/MultiSimSettingController;
-HSPLcom/android/internal/telephony/MultiSimSettingController;->onAllSubscriptionsLoaded()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->onDefaultDataSettingChanged()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->showSimSelectDialogIfNeeded(Ljava/util/List;ZZZ)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->updateDefaultValue(Ljava/util/List;ILcom/android/internal/telephony/MultiSimSettingController$UpdateDefaultAction;)Z
-HSPLcom/android/internal/telephony/MultiSimSettingController;->updateDefaults()V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager$NetworkRegStateCallback;->onNetworkStateChanged()V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager$NetworkRegStateCallback;->onRequestNetworkRegistrationInfoComplete(ILandroid/telephony/NetworkRegistrationInfo;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager$NetworkServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;-><init>(ILcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->bindService()V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->getPackageName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->isServiceConnected()Z
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->registerForNetworkRegistrationInfoChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/NetworkRegistrationManager;->requestNetworkRegistrationInfo(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/NetworkScanRequestTracker;-><init>()V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;-><init>(Lcom/android/internal/telephony/GsmCdmaPhone;Lcom/android/internal/telephony/NewTimeServiceHelper;Lcom/android/internal/telephony/NitzStateMachine$DeviceState;Lcom/android/internal/telephony/TimeZoneLookupHelper;)V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->handleNetworkAvailable()V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->handleNetworkCountryCodeSet(Z)V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->handleNetworkCountryCodeUnavailable()V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->handleNitzReceived(Landroid/util/TimestampedValue;)V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->isNitzSignalOffsetInfoBogus(Landroid/util/TimestampedValue;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->setAndBroadcastNetworkSetTimeZone(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->updateTimeFromNitz()V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->updateTimeZoneFromCountryAndNitz()V
-HSPLcom/android/internal/telephony/NewNitzStateMachine;->updateTimeZoneFromNetworkCountryCode(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->currentTimeMillis()J
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->elapsedRealtime()J
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->isTimeZoneDetectionEnabled()Z
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->isTimeZoneSettingInitialized()Z
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->setDeviceTimeZone(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->setDeviceTimeZoneStatic(Landroid/content/Context;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->setListener(Lcom/android/internal/telephony/NewTimeServiceHelper$Listener;)V
-HSPLcom/android/internal/telephony/NewTimeServiceHelper;->suggestDeviceTime(Landroid/util/TimestampedValue;)V
-HSPLcom/android/internal/telephony/NitzData;-><init>(Ljava/lang/String;ILjava/lang/Integer;JLjava/util/TimeZone;)V
-HSPLcom/android/internal/telephony/NitzData;->parse(Ljava/lang/String;)Lcom/android/internal/telephony/NitzData;
-HSPLcom/android/internal/telephony/NitzData;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/NitzStateMachine$DeviceState;-><init>(Lcom/android/internal/telephony/GsmCdmaPhone;)V
-HSPLcom/android/internal/telephony/NitzStateMachine$DeviceState;->getIgnoreNitz()Z
-HSPLcom/android/internal/telephony/NitzStateMachine$DeviceState;->getNetworkCountryIsoForPhone()Ljava/lang/String;
-HSPLcom/android/internal/telephony/NitzStateMachine$DeviceState;->getNitzUpdateDiffMillis()I
-HSPLcom/android/internal/telephony/NitzStateMachine$DeviceState;->getNitzUpdateSpacingMillis()I
-HSPLcom/android/internal/telephony/Phone;-><init>(Ljava/lang/String;Lcom/android/internal/telephony/PhoneNotifier;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;ZILcom/android/internal/telephony/TelephonyComponentFactory;)V
-HSPLcom/android/internal/telephony/Phone;->getActionAttached()Ljava/lang/String;
-HSPLcom/android/internal/telephony/Phone;->getActionDetached()Ljava/lang/String;
-HSPLcom/android/internal/telephony/Phone;->getActiveApnHost(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/Phone;->getActiveApnTypes()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/Phone;->getAllCellInfo()Ljava/util/List;
-HSPLcom/android/internal/telephony/Phone;->getCallForwardingIndicator()Z
-HSPLcom/android/internal/telephony/Phone;->getCallForwardingIndicatorFromSharedPref()I
-HSPLcom/android/internal/telephony/Phone;->getCarrierActionAgent()Lcom/android/internal/telephony/CarrierActionAgent;
-HSPLcom/android/internal/telephony/Phone;->getCarrierSignalAgent()Lcom/android/internal/telephony/CarrierSignalAgent;
-HSPLcom/android/internal/telephony/Phone;->getContext()Landroid/content/Context;
-HPLcom/android/internal/telephony/Phone;->getCurrentUiccAppType()Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;
-HSPLcom/android/internal/telephony/Phone;->getDataConnectionState()Lcom/android/internal/telephony/PhoneConstants$DataState;
-HSPLcom/android/internal/telephony/Phone;->getDataEnabledSettings()Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;
-HSPLcom/android/internal/telephony/Phone;->getDcTracker(I)Lcom/android/internal/telephony/dataconnection/DcTracker;
-HSPLcom/android/internal/telephony/Phone;->getHalVersion()Lcom/android/internal/telephony/HalVersion;
-HSPLcom/android/internal/telephony/Phone;->getHandler()Landroid/os/Handler;
-HSPLcom/android/internal/telephony/Phone;->getIccRecords()Lcom/android/internal/telephony/uicc/IccRecords;
-HSPLcom/android/internal/telephony/Phone;->getImsPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/Phone;->getLinkProperties(Ljava/lang/String;)Landroid/net/LinkProperties;
-HSPLcom/android/internal/telephony/Phone;->getLocaleFromCarrierProperties(Landroid/content/Context;)Ljava/util/Locale;
-HSPLcom/android/internal/telephony/Phone;->getMessageWaitingIndicator()Z
-HSPLcom/android/internal/telephony/Phone;->getModemActivityInfo(Landroid/os/Message;Landroid/os/WorkSource;)V
-HSPLcom/android/internal/telephony/Phone;->getNetworkCapabilities(Ljava/lang/String;)Landroid/net/NetworkCapabilities;
-HSPLcom/android/internal/telephony/Phone;->getPhoneId()I
-HSPLcom/android/internal/telephony/Phone;->getPhoneName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/Phone;->getRadioAccessFamily()I
-HSPLcom/android/internal/telephony/Phone;->getRadioCapability()Lcom/android/internal/telephony/RadioCapability;
-HSPLcom/android/internal/telephony/Phone;->getSignalStrength()Landroid/telephony/SignalStrength;
-HSPLcom/android/internal/telephony/Phone;->getSimulatedRadioControl()Lcom/android/internal/telephony/test/SimulatedRadioControl;
-HSPLcom/android/internal/telephony/Phone;->getSubId()I
-HSPLcom/android/internal/telephony/Phone;->getUiccCard()Lcom/android/internal/telephony/uicc/UiccCard;
-HSPLcom/android/internal/telephony/Phone;->getUnitTestMode()Z
-HSPLcom/android/internal/telephony/Phone;->getVtDataUsage(Z)Landroid/net/NetworkStats;
-HSPLcom/android/internal/telephony/Phone;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/Phone;->hasMatchedTetherApnSetting()Z
-HPLcom/android/internal/telephony/Phone;->isConcurrentVoiceAndDataAllowed()Z
-HSPLcom/android/internal/telephony/Phone;->isDataAllowed(I)Z
-HSPLcom/android/internal/telephony/Phone;->isDataAllowed(ILcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z
-HSPLcom/android/internal/telephony/Phone;->isImsCapabilityAvailable(II)Z
-HPLcom/android/internal/telephony/Phone;->isImsRegistered()Z
-HSPLcom/android/internal/telephony/Phone;->isInEcm()Z
-HSPLcom/android/internal/telephony/Phone;->isShuttingDown()Z
-HSPLcom/android/internal/telephony/Phone;->isVideoEnabled()Z
-HSPLcom/android/internal/telephony/Phone;->isWifiCallingEnabled()Z
-HSPLcom/android/internal/telephony/Phone;->notifyCellInfo(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/Phone;->notifyDataActivity()V
-HSPLcom/android/internal/telephony/Phone;->notifyDataConnection()V
-HSPLcom/android/internal/telephony/Phone;->notifyDataConnection(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/Phone;->notifyEmergencyNumberList()V
-HSPLcom/android/internal/telephony/Phone;->notifyForVideoCapabilityChanged(Z)V
-HSPLcom/android/internal/telephony/Phone;->notifyOtaspChanged(I)V
-HSPLcom/android/internal/telephony/Phone;->notifyPhysicalChannelConfiguration(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/Phone;->notifyPreciseDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/Phone;->notifySignalStrength()V
-HSPLcom/android/internal/telephony/Phone;->radioCapabilityUpdated(Lcom/android/internal/telephony/RadioCapability;)V
-HSPLcom/android/internal/telephony/Phone;->registerForCallWaiting(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForCdmaOtaStatusChange(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForCellInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForDisconnect(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForDisplayInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForEcmTimerReset(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForEmergencyCallToggle(Landroid/os/Handler;ILjava/lang/Object;)V
-HPLcom/android/internal/telephony/Phone;->registerForHandoverStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOff(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForInCallVoicePrivacyOn(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForIncomingRing(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForMmiComplete(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForMmiInitiate(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForNewRingingConnection(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForOnHoldTone(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForPreciseCallStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForRadioCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForResendIncallMute(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForServiceStateChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForSignalInfo(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForSuppServiceFailed(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForUnknownConnection(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->registerForVideoCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->requestCellInfoUpdate(Landroid/os/WorkSource;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/Phone;->sendSubscriptionSettings(Z)V
-HSPLcom/android/internal/telephony/Phone;->setCellInfoMinInterval(I)V
-HPLcom/android/internal/telephony/Phone;->setEchoSuppressionEnabled()V
-HSPLcom/android/internal/telephony/Phone;->setOnPostDialCharacter(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/Phone;->setPreferredNetworkType(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/Phone;->setPreferredNetworkTypeIfSimLoaded()V
-HSPLcom/android/internal/telephony/Phone;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/Phone;->setVoiceMessageCount(I)V
-HSPLcom/android/internal/telephony/Phone;->startLceAfterRadioIsAvailable()V
-HSPLcom/android/internal/telephony/Phone;->startMonitoringImsService()V
-HPLcom/android/internal/telephony/Phone;->unregisterForDisconnect(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/Phone;->unregisterForHandoverStateChanged(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/Phone;->unregisterForInCallVoicePrivacyOff(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/Phone;->unregisterForInCallVoicePrivacyOn(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/Phone;->unregisterForNewRingingConnection(Landroid/os/Handler;)V
-HPLcom/android/internal/telephony/Phone;->unregisterForPreciseCallStateChanged(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/Phone;->unregisterForUnknownConnection(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/Phone;->unregisterForVideoCapabilityChanged(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/Phone;->updateDataConnectionTracker()V
-HSPLcom/android/internal/telephony/Phone;->updateImsPhone()V
-HSPLcom/android/internal/telephony/PhoneConfigurationManager$MainThreadHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;->getInstance()Lcom/android/internal/telephony/PhoneConfigurationManager;
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;->getNumberOfModemsWithSimultaneousDataConnections()I
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;->getPhoneCount()I
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;->getStaticPhoneCapability()Landroid/telephony/PhoneCapability;
-HSPLcom/android/internal/telephony/PhoneConfigurationManager;->init(Landroid/content/Context;)Lcom/android/internal/telephony/PhoneConfigurationManager;
-HSPLcom/android/internal/telephony/PhoneConstantConversions;->convertCallState(I)Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/PhoneConstantConversions;->convertCallState(Lcom/android/internal/telephony/PhoneConstants$State;)I
-HSPLcom/android/internal/telephony/PhoneConstantConversions;->convertDataState(I)Lcom/android/internal/telephony/PhoneConstants$DataState;
-HSPLcom/android/internal/telephony/PhoneConstantConversions;->convertDataState(Lcom/android/internal/telephony/PhoneConstants$DataState;)I
-HSPLcom/android/internal/telephony/PhoneConstants$DataState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/PhoneConstants$DataState;->values()[Lcom/android/internal/telephony/PhoneConstants$DataState;
-HSPLcom/android/internal/telephony/PhoneConstants$State;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/PhoneConstants$State;->values()[Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/PhoneFactory;->addLocalLog(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/PhoneFactory;->calculatePreferredNetworkType(Landroid/content/Context;I)I
-HSPLcom/android/internal/telephony/PhoneFactory;->getDefaultPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/PhoneFactory;->getImsResolver()Lcom/android/internal/telephony/ims/ImsResolver;
-HSPLcom/android/internal/telephony/PhoneFactory;->getNetworkFactory(I)Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;
-HSPLcom/android/internal/telephony/PhoneFactory;->getPhone(I)Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/PhoneFactory;->getPhones()[Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/PhoneFactory;->localLog(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/PhoneFactory;->makeDefaultPhone(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/PhoneFactory;->makeDefaultPhones(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;->values()[Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->callPhoneMethodWithPermissionCheck(ILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper;Lcom/android/internal/telephony/PhoneSubInfoController$PermissionCheckHelper;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getCarrierInfoForImsiEncryption(IILjava/lang/String;)Landroid/telephony/ImsiEncryptionInfo;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getGroupIdLevel1ForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIccSerialNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIsimDomain(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIsimImpu(I)[Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getLine1AlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getLine1NumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getSubscriberIdForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HPLcom/android/internal/telephony/PhoneSubInfoController;->getVoiceMailNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithPrivilegedCheck$24$PhoneSubInfoController(Ljava/lang/String;Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$getVoiceMailNumberForSubscriber$12$PhoneSubInfoController(Lcom/android/internal/telephony/Phone;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSwitcher$1;->onAvailable(Landroid/net/Network;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher$3;->onPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher$3;->onPreciseCallStateChanged(Landroid/telephony/PreciseCallState;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher$5;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneSwitcherNetworkRequestListener;->needNetworkFor(Landroid/net/NetworkRequest;I)V
-HSPLcom/android/internal/telephony/PhoneSwitcher$PhoneSwitcherNetworkRequestListener;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;-><init>(IILandroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;Landroid/os/Looper;Lcom/android/internal/telephony/ITelephonyRegistry;[Lcom/android/internal/telephony/CommandsInterface;[Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->getPreferredDataPhoneId()I
-HSPLcom/android/internal/telephony/PhoneSwitcher;->getSubIdFromNetworkRequest(Landroid/net/NetworkRequest;)I
-HSPLcom/android/internal/telephony/PhoneSwitcher;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->isPhoneActive(I)Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->notifyPreferredDataSubIdChanged()V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->onEvaluate(ZLjava/lang/String;)Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->onPhoneCapabilityChangedInternal(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->onRequestNetwork(Landroid/net/NetworkRequest;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->phoneIdForRequest(Landroid/net/NetworkRequest;)I
-HSPLcom/android/internal/telephony/PhoneSwitcher;->registerDefaultNetworkChangeCallback()V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->registerForActivePhoneSwitch(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->removeDefaultNetworkChangeCallback()V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->shouldApplyNetworkRequest(Landroid/net/NetworkRequest;I)Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->switchPhone(IZ)V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->updatePreferredDataPhoneId()V
-HSPLcom/android/internal/telephony/PhoneSwitcher;->validatePhoneId(I)V
-HSPLcom/android/internal/telephony/ProxyController;-><init>(Landroid/content/Context;[Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/uicc/UiccController;[Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/PhoneSwitcher;)V
-HSPLcom/android/internal/telephony/ProxyController;->clearTransaction()V
-HSPLcom/android/internal/telephony/ProxyController;->getMaxRafSupported()I
-HSPLcom/android/internal/telephony/ProxyController;->setRadioCapability([Landroid/telephony/RadioAccessFamily;)Z
-HSPLcom/android/internal/telephony/RIL$RilHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;-><init>(Landroid/content/Context;IILjava/lang/Integer;)V
-HSPLcom/android/internal/telephony/RIL;->acquireWakeLock(Lcom/android/internal/telephony/RILRequest;I)V
-HSPLcom/android/internal/telephony/RIL;->addRequest(Lcom/android/internal/telephony/RILRequest;)V
-HSPLcom/android/internal/telephony/RIL;->addToRilHistogram(Lcom/android/internal/telephony/RILRequest;)V
-HSPLcom/android/internal/telephony/RIL;->clearWakeLock(I)Z
-HSPLcom/android/internal/telephony/RIL;->convertDataCallResult(Ljava/lang/Object;)Landroid/telephony/data/DataCallResponse;
-HSPLcom/android/internal/telephony/RIL;->convertHalCellInfoList_1_2(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/RIL;->convertHalHwConfigList(Ljava/util/ArrayList;Lcom/android/internal/telephony/RIL;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/RIL;->convertHalRadioCapability(Landroid/hardware/radio/V1_0/RadioCapability;Lcom/android/internal/telephony/RIL;)Lcom/android/internal/telephony/RadioCapability;
-HSPLcom/android/internal/telephony/RIL;->convertToHalDataProfile10(Landroid/telephony/data/DataProfile;)Landroid/hardware/radio/V1_0/DataProfileInfo;
-HSPLcom/android/internal/telephony/RIL;->convertToNetworkTypeBitMask(I)I
-HSPLcom/android/internal/telephony/RIL;->deactivateDataCall(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->decrementWakeLock(Lcom/android/internal/telephony/RILRequest;)V
-HSPLcom/android/internal/telephony/RIL;->findAndRemoveRequestFromList(I)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RIL;->getBasebandVersion(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getCdmaSubscriptionSource(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getCellInfoList(Landroid/os/Message;Landroid/os/WorkSource;)V
-HSPLcom/android/internal/telephony/RIL;->getCurrentCalls(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/RIL;->getDataCallList(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getDataRegistrationState(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getDeviceIdentity(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getHalVersion()Lcom/android/internal/telephony/HalVersion;
-HSPLcom/android/internal/telephony/RIL;->getHardwareConfig(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getIMSIForApp(Ljava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getIccCardStatus(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getImsRegistrationState(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getModemActivityInfo(Landroid/os/Message;Landroid/os/WorkSource;)V
-HSPLcom/android/internal/telephony/RIL;->getNetworkSelectionMode(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getOemHookProxy(Landroid/os/Message;)Landroid/hardware/radio/deprecated/V1_0/IOemHook;
-HSPLcom/android/internal/telephony/RIL;->getOperator(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getRadioCapability(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getRadioProxy(Landroid/os/Message;)Landroid/hardware/radio/V1_0/IRadio;
-HSPLcom/android/internal/telephony/RIL;->getSignalStrength(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/RIL;->getTelephonyRILTimingHistograms()Ljava/util/List;
-HSPLcom/android/internal/telephony/RIL;->getVoiceRadioTechnology(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->getVoiceRegistrationState(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->iccCloseLogicalChannel(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->iccIOForApp(IILjava/lang/String;IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->iccOpenLogicalChannel(Ljava/lang/String;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->iccTransmitApduLogicalChannel(IIIIIILjava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->notifyRegistrantsRilConnectionChanged(I)V
-HSPLcom/android/internal/telephony/RIL;->processIndication(I)V
-HSPLcom/android/internal/telephony/RIL;->processResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RIL;->processResponseDone(Lcom/android/internal/telephony/RILRequest;Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/RIL;->queryFacilityLockForApp(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->reportStkServiceIsRunning(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->requestToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/RIL;->responseToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/RIL;->retToString(ILjava/lang/Object;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/RIL;->riljLog(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RIL;->riljLoge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RIL;->riljLogv(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RIL;->sendAck()V
-HSPLcom/android/internal/telephony/RIL;->sendDeviceState(IZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->sendTerminalResponse(Ljava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setCdmaBroadcastConfig([Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setCdmaSubscriptionSource(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setDataProfile([Landroid/telephony/data/DataProfile;ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setGsmBroadcastActivation(ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setGsmBroadcastConfig([Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setInitialAttachApn(Landroid/telephony/data/DataProfile;ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setLinkCapacityReportingCriteria(III[I[IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setOnNITZTime(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/RIL;->setPhoneType(I)V
-HSPLcom/android/internal/telephony/RIL;->setPreferredNetworkType(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setRadioPower(ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setSignalStrengthReportingCriteria(II[IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setTTYMode(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setUnsolResponseFilter(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->setupDataCall(ILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->startLceService(IZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->unsljLog(I)V
-HSPLcom/android/internal/telephony/RIL;->unsljLogMore(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/RIL;->unsljLogRet(ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/RILRequest;->getWorkSourceClientId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/RILRequest;->obtain(ILandroid/os/Message;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RILRequest;->obtain(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RILRequest;->onError(ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/RILRequest;->release()V
-HSPLcom/android/internal/telephony/RILRequest;->serialString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/RadioCapability;->getLogicalModemUuid()Ljava/lang/String;
-HSPLcom/android/internal/telephony/RadioCapability;->getPhase()I
-HSPLcom/android/internal/telephony/RadioCapability;->getRadioAccessFamily()I
-HSPLcom/android/internal/telephony/RadioCapability;->getSession()I
-HSPLcom/android/internal/telephony/RadioCapability;->getStatus()I
-HSPLcom/android/internal/telephony/RadioCapability;->getVersion()I
-HSPLcom/android/internal/telephony/RadioCapability;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/RadioConfig;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/RadioConfig;->convertHalSlotStatus(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/RadioConfig;->findAndRemoveRequestFromList(I)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RadioConfig;->getPhoneCapability(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RadioConfig;->getRadioConfigProxy(Landroid/os/Message;)Landroid/hardware/radio/config/V1_0/IRadioConfig;
-HSPLcom/android/internal/telephony/RadioConfig;->getSimSlotsStatus(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RadioConfig;->isSetPreferredDataCommandSupported()Z
-HSPLcom/android/internal/telephony/RadioConfig;->obtainRequest(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RadioConfig;->processResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RadioConfig;->registerForSimSlotStatusChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/RadioConfig;->requestToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/RadioConfig;->setPreferredDataModem(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RadioConfig;->updateRadioConfigProxy()V
-HSPLcom/android/internal/telephony/RadioConfigIndication;->simSlotsStatusChanged(ILjava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioConfigResponse;->convertHalPhoneCapability(Landroid/hardware/radio/config/V1_1/PhoneCapability;)Landroid/telephony/PhoneCapability;
-HSPLcom/android/internal/telephony/RadioConfigResponse;->getPhoneCapabilityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/config/V1_1/PhoneCapability;)V
-HSPLcom/android/internal/telephony/RadioConfigResponse;->getSimSlotsStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioConfigResponse;->setPreferredDataModemResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioIndication;->convertConnectionStatusFromCellConnectionStatus(I)I
-HSPLcom/android/internal/telephony/RadioIndication;->currentLinkCapacityEstimate(ILandroid/hardware/radio/V1_2/LinkCapacityEstimate;)V
-HSPLcom/android/internal/telephony/RadioIndication;->currentPhysicalChannelConfigs(ILjava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioIndication;->currentSignalStrength_1_2(ILandroid/hardware/radio/V1_2/SignalStrength;)V
-HSPLcom/android/internal/telephony/RadioIndication;->dataCallListChanged(ILjava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioIndication;->getRadioStateFromInt(I)I
-HSPLcom/android/internal/telephony/RadioIndication;->imsNetworkStateChanged(I)V
-HSPLcom/android/internal/telephony/RadioIndication;->networkStateChanged(I)V
-HSPLcom/android/internal/telephony/RadioIndication;->nitzTimeReceived(ILjava/lang/String;J)V
-HSPLcom/android/internal/telephony/RadioIndication;->physicalChannelConfigsIndication(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/RadioIndication;->radioStateChanged(II)V
-HSPLcom/android/internal/telephony/RadioIndication;->rilConnected(I)V
-HSPLcom/android/internal/telephony/RadioIndication;->stkProactiveCommand(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/RadioIndication;->stkSessionEnd(I)V
-HSPLcom/android/internal/telephony/RadioIndication;->voiceRadioTechChanged(II)V
-HSPLcom/android/internal/telephony/RadioResponse;->convertHalCardStatus(Landroid/hardware/radio/V1_0/CardStatus;)Lcom/android/internal/telephony/uicc/IccCardStatus;
-HSPLcom/android/internal/telephony/RadioResponse;->deactivateDataCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getBasebandVersionResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V
-HSPLcom/android/internal/telephony/RadioResponse;->getCellInfoListResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getCurrentCallsResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HPLcom/android/internal/telephony/RadioResponse;->getDataCallListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getDataRegistrationStateResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/DataRegStateResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getDeviceIdentityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getFacilityLockForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V
-HSPLcom/android/internal/telephony/RadioResponse;->getHardwareConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getIMSIForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getIccCardStatusResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/CardStatus;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getImsRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ZI)V
-HSPLcom/android/internal/telephony/RadioResponse;->getModemActivityInfoResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/ActivityStatsInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getNetworkSelectionModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Z)V
-HSPLcom/android/internal/telephony/RadioResponse;->getOperatorResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getRadioCapabilityResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/RadioCapability;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getSignalStrengthResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/SignalStrength;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRadioTechnologyResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;I)V
-HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRegistrationStateResponse_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/VoiceRegStateResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->iccCloseLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->iccIOForAppResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->iccOpenLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;ILjava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->iccTransmitApduLogicalChannelResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->reportStkServiceIsRunningResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseActivityData(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/ActivityStatsInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseCurrentCalls_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseIccCardStatus_1_2(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_2/CardStatus;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseIccIo(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/IccIoResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseIntArrayList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseStringArrayList(Lcom/android/internal/telephony/RIL;Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->sendDeviceStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->sendTerminalResponseToSimResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setCdmaBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setCdmaSubscriptionSourceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setGsmBroadcastActivationResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setGsmBroadcastConfigResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setIndicationFilterResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setInitialAttachApnResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setLinkCapacityReportingCriteriaResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setPreferredNetworkTypeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setRadioPowerResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setSignalStrengthReportingCriteriaResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setTTYModeResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->setupDataCallResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SetupDataCallResult;)V
-HSPLcom/android/internal/telephony/RatRatcheter$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/RatRatcheter;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/RatRatcheter;->isSameRatFamily(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;)Z
-HSPLcom/android/internal/telephony/RatRatcheter;->ratchet(Landroid/telephony/ServiceState;Landroid/telephony/ServiceState;Z)V
-HSPLcom/android/internal/telephony/RatRatcheter;->ratchetRat(II)I
-HSPLcom/android/internal/telephony/RatRatcheter;->resetRatFamilyMap()V
-HSPLcom/android/internal/telephony/RatRatcheter;->updateBandwidths([ILandroid/telephony/ServiceState;)Z
-HSPLcom/android/internal/telephony/RestrictedState;->isPsRestricted()Z
-HSPLcom/android/internal/telephony/RetryManager;-><init>(Lcom/android/internal/telephony/Phone;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RetryManager;->configure(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/RetryManager;->configureRetry()V
-HSPLcom/android/internal/telephony/RetryManager;->getDelayForNextApn(Z)J
-HSPLcom/android/internal/telephony/RetryManager;->getNextApnSetting()Landroid/telephony/data/ApnSetting;
-HSPLcom/android/internal/telephony/RetryManager;->getRetryAfterDisconnectDelay()J
-HSPLcom/android/internal/telephony/RetryManager;->getRetryTimer()I
-HSPLcom/android/internal/telephony/RetryManager;->getWaitingApns()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/RetryManager;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/RetryManager;->parseNonNegativeInt(Ljava/lang/String;Ljava/lang/String;)Landroid/util/Pair;
-HSPLcom/android/internal/telephony/RetryManager;->setModemSuggestedDelay(J)V
-HSPLcom/android/internal/telephony/RetryManager;->setWaitingApns(Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RilWakelockInfo;->getRilRequestSent()I
-HSPLcom/android/internal/telephony/RilWakelockInfo;->getTokenNumber()I
-HSPLcom/android/internal/telephony/RilWakelockInfo;->getWakelockTimeAttributedToClient()J
-HSPLcom/android/internal/telephony/RilWakelockInfo;->setResponseTime(J)V
-HSPLcom/android/internal/telephony/RilWakelockInfo;->updateConcurrentRequests(IJ)V
-HSPLcom/android/internal/telephony/RilWakelockInfo;->updateTime(J)V
-HSPLcom/android/internal/telephony/SMSDispatcher;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsDispatchersController;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;-><init>(Lcom/android/internal/telephony/GsmCdmaPhone;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->cancelAllNotifications()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->cancelPollState()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->combinePsRegistrationStates(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->containsEarfcnInEarfcnRange(Ljava/util/ArrayList;I)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->convertEarfcnStringArrayToPairList([Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getAllCellInfo()Ljava/util/List;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getBandwidthsFromConfigs(Ljava/util/List;)[I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCarrierConfig()Landroid/os/PersistableBundle;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCellLocation()Landroid/telephony/CellLocation;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCellLocationFromCellInfo(Ljava/util/List;)Landroid/telephony/CellLocation;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCidFromCellIdentity(Landroid/telephony/CellIdentity;)I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCombinedRegState()I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCurrentDataConnectionState()I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getDesiredPowerState()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getLocaleTracker()Lcom/android/internal/telephony/LocaleTracker;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getOtasp()I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getPhoneId()I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getPowerStateFromCarrier()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getSignalStrength()Landroid/telephony/SignalStrength;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->handlePollStateResult(ILandroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->handlePollStateResultMessage(ILandroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isConcurrentVoiceAndDataAllowed()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isDeviceShuttingDown()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isGprsConsistent(II)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isInvalidOperatorNumeric(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isMinInfoReady()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isNrStateChanged(Landroid/telephony/NetworkRegistrationInfo;Landroid/telephony/NetworkRegistrationInfo;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isRadioOn()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->isSimAbsent()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->logAttachChange()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->logMdnChange(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->logRatChange()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->notifyDataRegStateRilRadioTechnologyChanged(I)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->notifySignalStrength()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->notifyVoiceRegStateRilRadioTechnologyChanged()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->onCarrierConfigChanged()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->onImsCapabilityChanged()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->onImsServiceStateChanged()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->onSignalStrengthResult(Landroid/os/AsyncResult;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->onUpdateIccAvailability()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->pollState()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->pollState(Z)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->pollStateDone()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->processPendingRadioPowerOffAfterDataOff()Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->queueNextSignalStrengthPoll()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataConnectionAttached(ILandroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataConnectionDetached(ILandroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRegStateOrRatChanged(ILandroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRoamingOff(Landroid/os/Handler;ILjava/lang/Object;Z)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForDataRoamingOn(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForImsCapabilityChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForNetworkAttached(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForNetworkDetached(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForPsRestrictedDisabled(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForPsRestrictedEnabled(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForSubscriptionInfoReady(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->registerForVoiceRegStateOrRatChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->requestAllCellInfo(Landroid/os/WorkSource;Landroid/os/Message;)V
-HPLcom/android/internal/telephony/ServiceStateTracker;->requestCellLocation(Landroid/os/WorkSource;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->resetServiceStateInIwlanMode()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->setCellInfoMinInterval(I)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->setPhyCellInfoFromCellIdentity(Landroid/telephony/ServiceState;Landroid/telephony/CellIdentity;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->setPowerStateToDesired()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->setRoamingType(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->setTimeFromNITZString(Ljava/lang/String;J)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateLteEarfcnLists(Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateNrFrequencyRangeFromPhysicalChannelConfigs(Ljava/util/List;Landroid/telephony/ServiceState;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateNrStateFromPhysicalChannelConfigs(Ljava/util/List;Landroid/telephony/NetworkRegistrationInfo;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameFromCarrierConfig()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameFromEri()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOtaspState()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updatePhoneObject()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updatePhoneType()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateRoamingState()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateServiceStateLteEarfcnBoost(Landroid/telephony/ServiceState;I)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateSpnDisplay()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->useDataRegStateForDataOnlyDevices()V
-HSPLcom/android/internal/telephony/SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/SettingsObserver;->observe(Landroid/net/Uri;I)V
-HSPLcom/android/internal/telephony/SettingsObserver;->onChange(ZLandroid/net/Uri;)V
-HSPLcom/android/internal/telephony/SettingsObserver;->unobserve()V
-HSPLcom/android/internal/telephony/SimActivationTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/SimActivationTracker;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/SmsAddress;->couldBeEmailGateway()Z
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$000(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$002(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$102(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$202(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$302(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$402(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$502(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$602(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->access$700(Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;)I
 HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->isComplete()Z
-HSPLcom/android/internal/telephony/SmsApplication$SmsApplicationData;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageChanged()V
-HPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/SmsApplication$SmsPackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SmsApplication;->assignExclusiveSmsPermissionsToSystemApp(Landroid/content/Context;Landroid/content/pm/PackageManager;Landroid/app/AppOpsManager;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SmsApplication;->defaultSmsAppChanged(Landroid/content/Context;)V
 HSPLcom/android/internal/telephony/SmsApplication;->getApplication(Landroid/content/Context;ZI)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;
-HPLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionAsUser(Landroid/content/Context;I)Ljava/util/Collection;
 HSPLcom/android/internal/telephony/SmsApplication;->getApplicationCollectionInternal(Landroid/content/Context;I)Ljava/util/Collection;
 HSPLcom/android/internal/telephony/SmsApplication;->getApplicationForPackage(Ljava/util/Collection;Ljava/lang/String;)Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;
-HSPLcom/android/internal/telephony/SmsApplication;->getDefaultMmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName;
-HPLcom/android/internal/telephony/SmsApplication;->getDefaultRespondViaMessageApplication(Landroid/content/Context;Z)Landroid/content/ComponentName;
-HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSendToApplication(Landroid/content/Context;Z)Landroid/content/ComponentName;
 HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplication(Landroid/content/Context;Z)Landroid/content/ComponentName;
 HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsApplicationAsUser(Landroid/content/Context;ZI)Landroid/content/ComponentName;
-HSPLcom/android/internal/telephony/SmsApplication;->initSmsPackageMonitor(Landroid/content/Context;)V
-HPLcom/android/internal/telephony/SmsApplication;->isDefaultSmsApplication(Landroid/content/Context;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/SmsApplication;->replacePreferredActivity(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/SmsApplication;->tryFixExclusiveSmsAppops(Landroid/content/Context;Lcom/android/internal/telephony/SmsApplication$SmsApplicationData;Z)Z
-HSPLcom/android/internal/telephony/SmsBroadcastUndelivered$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;->run()V
-HSPLcom/android/internal/telephony/SmsBroadcastUndelivered;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;)V
-HSPLcom/android/internal/telephony/SmsBroadcastUndelivered;->scanRawTable(Landroid/content/Context;Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;J)V
-HSPLcom/android/internal/telephony/SmsDispatchersController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/SmsDispatchersController;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/SmsUsageMonitor;)V
-HSPLcom/android/internal/telephony/SmsDispatchersController;->handleInService(J)V
-HSPLcom/android/internal/telephony/SmsDispatchersController;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/SmsDispatchersController;->handlePartialSegmentTimerExpiry(J)V
-HSPLcom/android/internal/telephony/SmsDispatchersController;->reevaluateTimerStatus()V
-HSPLcom/android/internal/telephony/SmsDispatchersController;->resetPartialSegmentWaitTimer()V
-HSPLcom/android/internal/telephony/SmsDispatchersController;->updateImsInfo(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/SmsMessageBase;->getDisplayOriginatingAddress()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SmsMessageBase;->getMessageBody()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SmsMessageBase;->getOriginatingAddress()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SmsMessageBase;->getTimestampMillis()J
-HSPLcom/android/internal/telephony/SmsMessageBase;->parseMessageBody()V
-HSPLcom/android/internal/telephony/SmsStorageMonitor;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/SmsStorageMonitor;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/SmsStorageMonitor;->isStorageAvailable()Z
-HSPLcom/android/internal/telephony/SmsUsageMonitor;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/SmsUsageMonitor;->loadPremiumSmsPolicyDb()V
-HSPLcom/android/internal/telephony/SubscriptionController$ScLocalLog;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionController;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->addSubInfo(Ljava/lang/String;Ljava/lang/String;II)I
-HSPLcom/android/internal/telephony/SubscriptionController;->addToSubIdList(III)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->broadcastDefaultDataSubIdChanged(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->broadcastDefaultSmsSubIdChanged(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->broadcastDefaultVoiceSubIdChanged(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->clearSubInfoRecord(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->enforceModifyPhoneState(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubIdArrayList()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubIdList(Z)[I
-HPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCount(Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubInfoCountMax()I
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfo(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo;
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfoForSimSlotIndex(ILjava/lang/String;)Landroid/telephony/SubscriptionInfo;
-HSPLcom/android/internal/telephony/SubscriptionController;->getActiveSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getAvailableSubscriptionInfoList(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultDataSubId()I
-HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultSmsSubId()I
-HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultSubId()I
-HSPLcom/android/internal/telephony/SubscriptionController;->getDefaultVoiceSubId()I
-HSPLcom/android/internal/telephony/SubscriptionController;->getGroupUuid(I)Landroid/os/ParcelUuid;
-HSPLcom/android/internal/telephony/SubscriptionController;->getInstance()Lcom/android/internal/telephony/SubscriptionController;
-HSPLcom/android/internal/telephony/SubscriptionController;->getOpportunisticSubscriptions(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getPhoneId(I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->getSimStateForSlotIndex(I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->getSlotIndex(I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubId(I)[I
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubIdUsingPhoneId(I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfo(Ljava/lang/String;Ljava/lang/Object;)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfoRecord(Landroid/database/Cursor;)Landroid/telephony/SubscriptionInfo;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfoUsingSlotIndexPrivileged(IZ)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionInfoListFromCacheHelper(Ljava/lang/String;Ljava/util/List;)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionProperty(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionController;->init(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->init(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/SubscriptionController;
-HSPLcom/android/internal/telephony/SubscriptionController;->isActiveSubId(I)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->isActiveSubId(ILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->isSubInfoReady()Z
-HSPLcom/android/internal/telephony/SubscriptionController;->isSubscriptionVisible(I)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->lambda$getActiveSubIdList$3$SubscriptionController(Ljava/lang/Integer;)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->logdl(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->migrateImsSettingHelper(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->migrateImsSettings()V
-HSPLcom/android/internal/telephony/SubscriptionController;->notifySubscriptionInfoChanged()V
-HSPLcom/android/internal/telephony/SubscriptionController;->refreshCachedActiveSubscriptionInfoList()V
-HSPLcom/android/internal/telephony/SubscriptionController;->refreshCachedOpportunisticSubscriptionInfoList()Z
-HSPLcom/android/internal/telephony/SubscriptionController;->sendDefaultChangedBroadcast(II)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setCarrierId(II)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setCarrierText(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setCountryIso(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setDefaultDataSubId(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setDefaultFallbackSubId(II)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setDefaultSmsSubId(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setDefaultVoiceSubId(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setDisplayName(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setDisplayNameUsingSrc(Ljava/lang/String;IJ)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setMccMnc(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setPlmnSpn(IZLjava/lang/String;ZLjava/lang/String;)Z
-HSPLcom/android/internal/telephony/SubscriptionController;->updateAllDataConnectionTrackers()V
-HSPLcom/android/internal/telephony/SubscriptionController;->updatePhonesAvailability([Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->validateSubId(I)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;-><init>(Landroid/os/Looper;Landroid/content/Context;[Lcom/android/internal/telephony/Phone;[Lcom/android/internal/telephony/CommandsInterface;Landroid/content/pm/IPackageManager;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->broadcastSimApplicationStateChanged(II)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->broadcastSimCardStateChanged(II)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->broadcastSimStateChanged(ILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->handleSimLoaded(I)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->initializeCarrierApps()V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->internalIccStateToMessage(Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->isAllIccIdQueryDone()Z
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateSubscriptionInfoByIccId$2$SubscriptionInfoUpdater(Ljava/lang/Integer;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->simStateString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptions(I)Z
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateInternalIccState(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionInfoByIccId(I)V
-HSPLcom/android/internal/telephony/SubscriptionMonitor$1;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/SubscriptionMonitor$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/SubscriptionMonitor;-><init>(Lcom/android/internal/telephony/ITelephonyRegistry;Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;I)V
-HSPLcom/android/internal/telephony/SubscriptionMonitor;->registerForSubscriptionChanged(ILandroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/TelephonyCapabilities;->supportsNetworkSelection(Lcom/android/internal/telephony/Phone;)Z
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->getValidatedPaths()Ljava/lang/String;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->lambda$parseInjection$3$TelephonyComponentFactory$InjectedComponents(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->lambda$parseXml$2$TelephonyComponentFactory$InjectedComponents(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->makeInjectedInstance()V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->parseXmlByTag(Lorg/xmlpull/v1/XmlPullParser;ZLjava/util/function/Consumer;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;->setAttributes(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getCdmaSubscriptionSourceManagerInstance(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Landroid/os/Handler;ILjava/lang/Object;)Lcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getIDeviceIdleController()Landroid/os/IDeviceIdleController;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->getInstance()Lcom/android/internal/telephony/TelephonyComponentFactory;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->inject(Ljava/lang/String;)Lcom/android/internal/telephony/TelephonyComponentFactory;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->injectTheComponentFactory(Landroid/content/res/XmlResourceParser;)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeAppSmsManager(Landroid/content/Context;)Lcom/android/internal/telephony/AppSmsManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeCarrierActionAgent(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CarrierActionAgent;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeCarrierResolver(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CarrierResolver;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeCarrierSignalAgent(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/CarrierSignalAgent;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeDataEnabledSettings(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeDcTracker(Lcom/android/internal/telephony/Phone;I)Lcom/android/internal/telephony/dataconnection/DcTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeDeviceStateMonitor(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/DeviceStateMonitor;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeEmergencyNumberTracker(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/emergency/EmergencyNumberTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeEriManager(Lcom/android/internal/telephony/Phone;Landroid/content/Context;I)Lcom/android/internal/telephony/cdma/EriManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeGsmCdmaCallTracker(Lcom/android/internal/telephony/GsmCdmaPhone;)Lcom/android/internal/telephony/GsmCdmaCallTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeIccPhoneBookInterfaceManager(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeIccSmsInterfaceManager(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/IccSmsInterfaceManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeImsExternalCallTracker(Lcom/android/internal/telephony/imsphone/ImsPhone;)Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeImsPhoneCallTracker(Lcom/android/internal/telephony/imsphone/ImsPhone;)Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeLocaleTracker(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/NitzStateMachine;Landroid/os/Looper;)Lcom/android/internal/telephony/LocaleTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeNitzStateMachine(Lcom/android/internal/telephony/GsmCdmaPhone;)Lcom/android/internal/telephony/NitzStateMachine;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeServiceStateTracker(Lcom/android/internal/telephony/GsmCdmaPhone;Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/ServiceStateTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSimActivationTracker(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/SimActivationTracker;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSmsStorageMonitor(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/SmsStorageMonitor;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeSmsUsageMonitor(Landroid/content/Context;)Lcom/android/internal/telephony/SmsUsageMonitor;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeTransportManager(Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/dataconnection/TransportManager;
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeUiccProfile(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;ILcom/android/internal/telephony/uicc/UiccCard;Ljava/lang/Object;)Lcom/android/internal/telephony/uicc/UiccProfile;
-HSPLcom/android/internal/telephony/TelephonyDevController;->create()Lcom/android/internal/telephony/TelephonyDevController;
-HSPLcom/android/internal/telephony/TelephonyDevController;->getInstance()Lcom/android/internal/telephony/TelephonyDevController;
-HSPLcom/android/internal/telephony/TelephonyDevController;->initFromResource()V
-HSPLcom/android/internal/telephony/TelephonyDevController;->updateOrInsert(Lcom/android/internal/telephony/HardwareConfig;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadDeviceIdentifiers(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadDeviceIdentifiers(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadPhoneNumber(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadPhoneState(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadSubscriberIdentifiers(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadCallLog(Landroid/content/Context;IIILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadCallLog(Landroid/content/Context;Ljava/util/function/Supplier;IIILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadDeviceIdentifiers(Landroid/content/Context;IILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadPhoneNumber(Landroid/content/Context;Ljava/util/function/Supplier;IIILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadPhoneState(Landroid/content/Context;IIILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadPhoneState(Landroid/content/Context;Ljava/util/function/Supplier;IIILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->enforceCallingOrSelfModifyPermissionOrCarrierPrivilege(Landroid/content/Context;ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/TelephonyPermissions;->getCarrierPrivilegeStatus(Ljava/util/function/Supplier;II)I
-HSPLcom/android/internal/telephony/TelephonyPermissions;->reportAccessDeniedToReadIdentifiers(Landroid/content/Context;IIILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyTester;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/TelephonyTester;->overrideServiceState(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/TimeZoneLookupHelper$CountryResult;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/TimeZoneLookupHelper$OffsetResult;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->getCountryTimeZones(Ljava/lang/String;)Llibcore/timezone/CountryTimeZones;
-HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->lookupByCountry(Ljava/lang/String;J)Lcom/android/internal/telephony/TimeZoneLookupHelper$CountryResult;
-HSPLcom/android/internal/telephony/TimeZoneLookupHelper;->lookupByNitzCountry(Lcom/android/internal/telephony/NitzData;Ljava/lang/String;)Lcom/android/internal/telephony/TimeZoneLookupHelper$OffsetResult;
-HPLcom/android/internal/telephony/UiccPhoneBookController;->getAdnRecordsInEfForSubscriber(II)Ljava/util/List;
-HPLcom/android/internal/telephony/UiccPhoneBookController;->getIccPhoneBookInterfaceManager(I)Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;
-HSPLcom/android/internal/telephony/UiccSmsController;->disableCellBroadcastRangeForSubscriber(IIII)Z
-HSPLcom/android/internal/telephony/UiccSmsController;->enableCellBroadcastRangeForSubscriber(IIII)Z
-HSPLcom/android/internal/telephony/UiccSmsController;->getPreferredSmsSubscription()I
-HSPLcom/android/internal/telephony/UiccSmsController;->isSmsSimPickActivityNeeded(I)Z
-HSPLcom/android/internal/telephony/WakeLockStateMachine$IdleState;->enter()V
-HSPLcom/android/internal/telephony/WakeLockStateMachine$IdleState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/WakeLockStateMachine;-><init>(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/WakeLockStateMachine;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/WapPushOverSms$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/WapPushOverSms$BindServiceThread;->run()V
-HSPLcom/android/internal/telephony/WapPushOverSms;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/WapPushOverSms;->bindWapPushManagerService(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/cat/CatLog;->d(Ljava/lang/Object;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/cat/CatLog;->d(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/cat/CatService;-><init>(Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/UiccCardApplication;Lcom/android/internal/telephony/uicc/IccRecords;Landroid/content/Context;Lcom/android/internal/telephony/uicc/IccFileHandler;Lcom/android/internal/telephony/uicc/UiccProfile;I)V
-HSPLcom/android/internal/telephony/cat/CatService;->getInstance(I)Lcom/android/internal/telephony/cat/AppInterface;
-HSPLcom/android/internal/telephony/cat/CatService;->getInstance(Lcom/android/internal/telephony/CommandsInterface;Landroid/content/Context;Lcom/android/internal/telephony/uicc/UiccProfile;I)Lcom/android/internal/telephony/cat/CatService;
-HSPLcom/android/internal/telephony/cat/CatService;->handleCommand(Lcom/android/internal/telephony/cat/CommandParams;Z)V
-HSPLcom/android/internal/telephony/cat/CatService;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/cat/CatService;->handleRilMsg(Lcom/android/internal/telephony/cat/RilMessage;)V
-HSPLcom/android/internal/telephony/cat/CatService;->handleSessionEnd()V
-HSPLcom/android/internal/telephony/cat/CatService;->isStkAppInstalled()Z
-HSPLcom/android/internal/telephony/cat/CatService;->sendTerminalResponse(Lcom/android/internal/telephony/cat/CommandDetails;Lcom/android/internal/telephony/cat/ResultCode;ZILcom/android/internal/telephony/cat/ResponseData;)V
-HSPLcom/android/internal/telephony/cat/CatService;->updateIccAvailability()V
-HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->getInstance(Lcom/android/internal/telephony/cat/RilMessageDecoder;Lcom/android/internal/telephony/uicc/IccFileHandler;)Lcom/android/internal/telephony/cat/CommandParamsFactory;
-HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->make(Lcom/android/internal/telephony/cat/BerTlv;)V
-HSPLcom/android/internal/telephony/cat/CommandParamsFactory;->processCommandDetails(Ljava/util/List;)Lcom/android/internal/telephony/cat/CommandDetails;
-HSPLcom/android/internal/telephony/cat/IconLoader;-><init>(Landroid/os/Looper;Lcom/android/internal/telephony/uicc/IccFileHandler;)V
-HSPLcom/android/internal/telephony/cat/IconLoader;->getInstance(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;)Lcom/android/internal/telephony/cat/IconLoader;
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder$StateCmdParamsReady;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder$StateStart;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder;-><init>(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;)V
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->decodeMessageParams(Lcom/android/internal/telephony/cat/RilMessage;)Z
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->getInstance(Landroid/os/Handler;Lcom/android/internal/telephony/uicc/IccFileHandler;I)Lcom/android/internal/telephony/cat/RilMessageDecoder;
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->sendMsgParamsDecoded(Lcom/android/internal/telephony/cat/ResultCode;Lcom/android/internal/telephony/cat/CommandParams;)V
-HSPLcom/android/internal/telephony/cat/RilMessageDecoder;->sendStartDecodingMessageParams(Lcom/android/internal/telephony/cat/RilMessage;)V
-HSPLcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;)V
-HSPLcom/android/internal/telephony/cdma/CdmaSMSDispatcher;->getFormat()Ljava/lang/String;
-HSPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getFromServiceCategory()I
-HSPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getLanguage()I
-HSPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->getToServiceCategory()I
-HSPLcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;->isSelected()Z
-HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->getDefault(Landroid/content/Context;)I
-HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->getInstance(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Landroid/os/Handler;ILjava/lang/Object;)Lcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;
-HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->handleGetCdmaSubscriptionSource(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/cdma/EriManager;->isEriFileLoaded()Z
-HSPLcom/android/internal/telephony/cdma/EriManager;->loadEriFile()V
-HSPLcom/android/internal/telephony/cdma/EriManager;->loadEriFileFromXml()V
-HSPLcom/android/internal/telephony/dataconnection/-$$Lambda$DataConnection$-tFSpFGzTv_UdpzJlTMOvg8VO98;-><init>()V
-HSPLcom/android/internal/telephony/dataconnection/-$$Lambda$DataConnection$-tFSpFGzTv_UdpzJlTMOvg8VO98;->apply(I)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/dataconnection/-$$Lambda$XZAGhHrbkIDyusER4MAM6luKcT0;-><init>()V
-HSPLcom/android/internal/telephony/dataconnection/-$$Lambda$XZAGhHrbkIDyusER4MAM6luKcT0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;-><init>(Lcom/android/internal/telephony/Phone;Ljava/lang/String;Ljava/lang/String;Landroid/net/NetworkConfig;Lcom/android/internal/telephony/dataconnection/DcTracker;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnSetting()Landroid/telephony/data/ApnSetting;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnType()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnTypeBitmask()I
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnTypeFromNetworkRequest(Landroid/net/NetworkRequest;)I
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getApnTypeFromNetworkType(I)I
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getConnectionGeneration()I
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getDataConnection()Lcom/android/internal/telephony/dataconnection/DataConnection;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getDelayForNextApn(Z)J
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getNetworkRequests()Ljava/util/List;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getNextApnSetting()Landroid/telephony/data/ApnSetting;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getReason()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getReconnectIntent()Landroid/app/PendingIntent;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getRetryAfterDisconnectDelay()J
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getState()Lcom/android/internal/telephony/DctConstants$State;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->getWaitingApns()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->hasRestrictedRequests(Z)Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->incAndGetConnectionGeneration()I
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isConnectable()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isDependencyMet()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isDisconnected()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isProvisioningApn()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->isReady()Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->releaseDataConnection(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->releaseNetwork(Landroid/net/NetworkRequest;ILandroid/util/LocalLog;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->requestLog(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;Landroid/util/LocalLog;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->resetErrorCodeRetries()V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->restartOnError(I)Z
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setApnSetting(Landroid/telephony/data/ApnSetting;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setConcurrentVoiceAndDataAllowed(Z)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setDataConnection(Lcom/android/internal/telephony/dataconnection/DataConnection;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setEnabled(Z)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setModemSuggestedDelay(J)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setReason(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setReconnectIntent(Landroid/app/PendingIntent;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setState(Lcom/android/internal/telephony/DctConstants$State;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->setWaitingApns(Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/ApnSettingUtils;->isMetered(Landroid/telephony/data/ApnSetting;Lcom/android/internal/telephony/Phone;)Z
-HSPLcom/android/internal/telephony/dataconnection/ApnSettingUtils;->isMeteredApnType(Ljava/lang/String;Lcom/android/internal/telephony/Phone;)Z
-HSPLcom/android/internal/telephony/dataconnection/ApnSettingUtils;->mvnoMatches(Lcom/android/internal/telephony/uicc/IccRecords;ILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider;-><init>(Lcom/android/internal/telephony/dataconnection/CellularDataService;I)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider;->deactivateDataCall(IILandroid/telephony/data/DataServiceCallback;)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider;->setDataProfile(Ljava/util/List;ZLandroid/telephony/data/DataServiceCallback;)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider;->setInitialAttachApn(Landroid/telephony/data/DataProfile;ZLandroid/telephony/data/DataServiceCallback;)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService$CellularDataServiceProvider;->setupDataCall(ILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/telephony/data/DataServiceCallback;)V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService;-><init>()V
-HSPLcom/android/internal/telephony/dataconnection/CellularDataService;->onCreateDataServiceProvider(I)Landroid/telephony/data/DataService$DataServiceProvider;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcActivatingState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcActivatingState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;->exit()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcActiveState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcDefaultState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->exit()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->setEnterNotificationParams(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->setEnterNotificationParams(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;->setEnterNotificationParams(Lcom/android/internal/telephony/dataconnection/DataConnection$DisconnectParams;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;-><init>(Lcom/android/internal/telephony/dataconnection/DataConnection;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;->networkStatus(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;->sendLinkProperties(Landroid/net/LinkProperties;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;->sendNetworkCapabilities(Landroid/net/NetworkCapabilities;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;->sendNetworkInfo(Landroid/net/NetworkInfo;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;->unwanted()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$DisconnectParams;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;->values()[Lcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;-><init>(Lcom/android/internal/telephony/Phone;Ljava/lang/String;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->access$2000(Lcom/android/internal/telephony/dataconnection/DataConnection;)Lcom/android/internal/telephony/dataconnection/DataConnection$DcNetworkAgent;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->access$5000(Lcom/android/internal/telephony/dataconnection/DataConnection;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->bringUp(Lcom/android/internal/telephony/dataconnection/ApnContext;IILandroid/os/Message;II)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->calculateScore()I
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->checkSetMtu(Landroid/telephony/data/ApnSetting;Landroid/net/LinkProperties;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->clearSettings()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->cmdToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->connect(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)I
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getApnContexts()Ljava/util/List;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getApnSetting()Landroid/telephony/data/ApnSetting;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getLinkProperties()Landroid/net/LinkProperties;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getNetworkCapabilities()Landroid/net/NetworkCapabilities;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getSuggestedRetryDelay(Landroid/telephony/data/DataCallResponse;)J
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->getWhatToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->initConnection(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isActivating()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isActive()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isDnsOk([Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isInactive()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->isUnmeteredUseOnly()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->makeDataConnection(Lcom/android/internal/telephony/Phone;ILcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Lcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;Lcom/android/internal/telephony/dataconnection/DcController;)Lcom/android/internal/telephony/dataconnection/DataConnection;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->msgToString(Landroid/os/Message;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->notifyAllWithEvent(Lcom/android/internal/telephony/dataconnection/ApnContext;ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->notifyConnectCompleted(Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;IZ)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->notifyDisconnectCompleted(Lcom/android/internal/telephony/dataconnection/DataConnection$DisconnectParams;Z)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->onSetupConnectionCompleted(ILandroid/telephony/data/DataCallResponse;Lcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;)Lcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->reevaluateDataConnectionProperties()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->setLinkProperties(Landroid/telephony/data/DataCallResponse;Landroid/net/LinkProperties;)Lcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->shouldRestrictNetwork()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->shouldSkip464Xlat()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->tearDown(Lcom/android/internal/telephony/dataconnection/ApnContext;Ljava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->tearDownData(Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->toStringSimple()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->updateLinkProperty(Landroid/telephony/data/DataCallResponse;)Lcom/android/internal/telephony/dataconnection/DataConnection$UpdateLinkPropertyResult;
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->updateNetworkInfoSuspendState()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->updateScore()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->updateTcpBufferSizes(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataAllowedReasonType;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;-><init>(Ljava/lang/String;IZ)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;-><init>()V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->copyFrom(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->getDataRoamingEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->getDefaultDataRoamingEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isDataEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isInternalDataEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isProvisioning()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isUserDataEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->registerForDataEnabledChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->setPolicyDataEnabled(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->updateDataEnabled()V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceCallback;->onDataCallListChanged(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceCallback;->onDeactivateDataCallComplete(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceCallback;->onSetInitialAttachApnComplete(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceCallback;->onSetupDataCallComplete(ILandroid/telephony/data/DataCallResponse;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;-><init>(Lcom/android/internal/telephony/Phone;ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->bindDataService()V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->deactivateDataCall(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->getAllDataServicePackageNames()Ljava/util/Set;
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->getDataServicePackageName(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->getTransportType()I
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->grantPermissionsToService(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->registerForDataCallListChanged(Landroid/os/Handler;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->registerForServiceBindingChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->revokePermissionsFromUnusedDataServices()V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->setDataProfile(Ljava/util/List;ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->setInitialAttachApn(Landroid/telephony/data/DataProfile;ZLandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DataServiceManager;->setupDataCall(ILandroid/telephony/data/DataProfile;ZZILandroid/net/LinkProperties;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->enter()V
-HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->onDataStateChanged(Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcController;-><init>(Ljava/lang/String;Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/dataconnection/DcTracker;Lcom/android/internal/telephony/dataconnection/DataServiceManager;Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController;->addActiveDcByCid(Lcom/android/internal/telephony/dataconnection/DataConnection;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController;->addDc(Lcom/android/internal/telephony/dataconnection/DataConnection;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController;->isExecutingCarrierChange()Z
-HSPLcom/android/internal/telephony/dataconnection/DcController;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DcController;->removeActiveDcByCid(Lcom/android/internal/telephony/dataconnection/DataConnection;)V
-HSPLcom/android/internal/telephony/dataconnection/DcRequest;->compareTo(Lcom/android/internal/telephony/dataconnection/DcRequest;)I
-HSPLcom/android/internal/telephony/dataconnection/DcRequest;->compareTo(Ljava/lang/Object;)I
-HSPLcom/android/internal/telephony/dataconnection/DcRequest;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcRequest;->initApnPriorities(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/dataconnection/DcController;Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;-><init>(Lcom/android/internal/telephony/Phone;Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTesterFailBringUpAll;->getDcFailBringUp()Lcom/android/internal/telephony/dataconnection/DcFailBringUp;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->compare(Lcom/android/internal/telephony/dataconnection/ApnContext;Lcom/android/internal/telephony/dataconnection/ApnContext;)I
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$3;->run()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$ApnChangeObserver;->onChange(Z)V
-HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->broadcastDataStallDetected(I)V
-HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->checkRecovery()Z
-HPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->doRecovery()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isAggressiveRecovery()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isNoRxDataStallDetectionEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->isRecoveryOnBadNetworkEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->processNetworkStatusChanged(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;->reset()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$DctOnSubscriptionsChangedListener;->onSubscriptionsChanged()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;-><init>(Lcom/android/internal/telephony/Phone;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->addApnContext(Ljava/lang/String;Landroid/net/NetworkConfig;)Lcom/android/internal/telephony/dataconnection/ApnContext;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->addEmergencyApnSetting()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->addRequestNetworkCompleteMsg(Landroid/os/Message;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->apnListToString(Ljava/util/ArrayList;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->buildWaitingApns(Ljava/lang/String;I)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->checkDataRoamingStatus(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->checkForCompatibleConnectedApnContext(Lcom/android/internal/telephony/dataconnection/ApnContext;)Lcom/android/internal/telephony/dataconnection/DataConnection;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpAllConnectionsInternal(ZLjava/lang/String;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpConnectionInternal(ZILcom/android/internal/telephony/dataconnection/ApnContext;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->cleanUpConnectionsOnUpdatedApns(ZLjava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->completeConnection(Lcom/android/internal/telephony/dataconnection/ApnContext;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->containsAllApns(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->createAllApnList()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->createDataConnection()Lcom/android/internal/telephony/dataconnection/DataConnection;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->createDataProfile(Landroid/telephony/data/ApnSetting;IZ)Landroid/telephony/data/DataProfile;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->dedupeApnSettings()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->disableApn(II)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->enableApn(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->fetchDunApns()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->findFreeDataConnection()Lcom/android/internal/telephony/dataconnection/DataConnection;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getActiveApnString(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getActiveApnTypes()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getActivity()Lcom/android/internal/telephony/DctConstants$Activity;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getDataRat()I
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getDataRoamingEnabled()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getLinkProperties(Ljava/lang/String;)Landroid/net/LinkProperties;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getNetworkCapabilities(Ljava/lang/String;)Landroid/net/NetworkCapabilities;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getOverallState()Lcom/android/internal/telephony/DctConstants$State;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getPreferredApn()Landroid/telephony/data/ApnSetting;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->getState(Ljava/lang/String;)Lcom/android/internal/telephony/DctConstants$State;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->hasMatchedTetherApnSetting()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->initApnContexts()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->initEmergencyApnSetting()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isConnected()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/ApnContext;Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataRoamingFromUserAction()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDisconnected()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isEmergency()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isOnlySingleDcAllowed(I)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isPermanentFailure(I)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onApnChanged()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataConnectionAttached()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataEnabledChanged(ZI)V
-HPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataReconnect(Landroid/os/Bundle;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataRoamingOff()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataServiceBindingChanged(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataSetupComplete(Lcom/android/internal/telephony/dataconnection/ApnContext;ZII)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataSetupCompleteError(Lcom/android/internal/telephony/dataconnection/ApnContext;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDisableApn(II)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDisconnectDone(Lcom/android/internal/telephony/dataconnection/ApnContext;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onEnableApn(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onNetworkStatusChanged(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onRadioAvailable()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onRadioOffOrNotAvailable()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onRecordsLoadedOrSubIdChanged()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onUpdateIcc()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerForAllEvents()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerServiceStateTrackerEvents()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->registerSettingsObserver()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->releaseNetwork(Landroid/net/NetworkRequest;ILandroid/util/LocalLog;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;Landroid/util/LocalLog;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->sendStartNetStatPoll(Lcom/android/internal/telephony/DctConstants$Activity;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->sendStopNetStatPoll(Lcom/android/internal/telephony/DctConstants$Activity;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setActivity(Lcom/android/internal/telephony/DctConstants$Activity;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setDataProfilesAsNeeded()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setDefaultDataRoamingEnabled()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setInitialAttachApn()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupData(Lcom/android/internal/telephony/dataconnection/ApnContext;II)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApns(Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->sortApnListByPreferred(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->startAlarmForReconnect(JLcom/android/internal/telephony/dataconnection/ApnContext;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->startDataStallAlarm(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->startNetStatPoll()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->stopDataStallAlarm()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->trySetupData(Lcom/android/internal/telephony/dataconnection/ApnContext;I)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->update()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->updateAutoAttachOnCreation()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->updateDataActivity()V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory$InternalHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;-><init>(Lcom/android/internal/telephony/SubscriptionMonitor;Landroid/os/Looper;Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->makeNetworkFilter(I)Landroid/net/NetworkCapabilities;
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->needNetworkFor(Landroid/net/NetworkRequest;I)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onActivePhoneSwitch()V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onNeedNetworkFor(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onReleaseNetworkFor(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->onSubIdChange()V
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->releaseNetworkFor(Landroid/net/NetworkRequest;)V
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;-><init>(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;->getAvailableTransports()[I
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;->getCurrentTransport(I)I
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;->isInLegacyMode()Z
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;->registerForHandoverNeededEvent(Landroid/os/Handler;I)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->cacheEmergencyDatabaseByCountry(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->convertEmergencyNumberFromEccInfo(Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;Ljava/lang/String;)Landroid/telephony/emergency/EmergencyNumber;
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getEmergencyNumberList()Ljava/util/List;
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getEmergencyNumberListFromEccList()Ljava/util/List;
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getEmergencyNumberListTestMode()Ljava/util/List;
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->getLabeledEmergencyNumberForEcclist(Ljava/lang/String;)Landroid/telephony/emergency/EmergencyNumber;
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumber(Ljava/lang/String;Z)Z
-HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberForTest(Ljava/lang/String;)Z
-HPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->isEmergencyNumberFromEccList(Ljava/lang/String;Z)Z
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->notifyEmergencyNumberList()V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->onCarrierConfigChanged()V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->updateEmergencyNumberDatabaseCountryChange(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->updateEmergencyNumberList()V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->updateEmergencyNumberListDatabaseAndNotify(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->updateEmergencyNumberPrefixAndNotify([Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/euicc/-$$Lambda$EuiccConnector$ConnectedState$4$S52i3hpE3-FGho807KZ1LR5rXQM;->run()V
-HSPLcom/android/internal/telephony/euicc/EuiccCardController$SimSlotStatusChangedBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/euicc/EuiccCardController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/internal/telephony/euicc/EuiccController;Lcom/android/internal/telephony/uicc/UiccController;)V
-HSPLcom/android/internal/telephony/euicc/EuiccCardController;->init(Landroid/content/Context;)Lcom/android/internal/telephony/euicc/EuiccCardController;
-HSPLcom/android/internal/telephony/euicc/EuiccCardController;->isBootUp(Landroid/content/Context;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccCardController;->isEmbeddedSlotActivated()Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$AvailableState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$BindingState;->enter()V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$4;->lambda$onComplete$0$EuiccConnector$ConnectedState$4(Lcom/android/internal/telephony/euicc/EuiccConnector$BaseEuiccCommandCallback;Landroid/service/euicc/GetEuiccProfileInfoListResult;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$4;->onComplete(Landroid/service/euicc/GetEuiccProfileInfoListResult;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->enter()V
-HPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->exit()V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$DisconnectedState;->enter()V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$DisconnectedState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HPLcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector$UnavailableState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->createBinding()Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->findBestComponent(Landroid/content/pm/PackageManager;Ljava/util/List;)Landroid/content/pm/ComponentInfo;
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->getCallback(Landroid/os/Message;)Lcom/android/internal/telephony/euicc/EuiccConnector$BaseEuiccCommandCallback;
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->getEuiccProfileInfoList(ILcom/android/internal/telephony/euicc/EuiccConnector$GetEuiccProfileInfoListCommandCallback;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->getSlotIdFromCardId(I)I
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->init(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->isValidEuiccComponent(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)Z
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/internal/telephony/euicc/EuiccController$3;->onListComplete(Landroid/service/euicc/GetEuiccProfileInfoListResult;)V
-HSPLcom/android/internal/telephony/euicc/EuiccController;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/euicc/EuiccConnector;)V
-HSPLcom/android/internal/telephony/euicc/EuiccController;->blockingGetEuiccProfileInfoList(I)Landroid/service/euicc/GetEuiccProfileInfoListResult;
-HSPLcom/android/internal/telephony/euicc/EuiccController;->get()Lcom/android/internal/telephony/euicc/EuiccController;
-HSPLcom/android/internal/telephony/euicc/EuiccController;->init(Landroid/content/Context;)Lcom/android/internal/telephony/euicc/EuiccController;
-HSPLcom/android/internal/telephony/euicc/IEuiccCardController$Stub;-><init>()V
-HSPLcom/android/internal/telephony/euicc/IEuiccController$Stub;-><init>()V
-HSPLcom/android/internal/telephony/euicc/IEuiccController$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/telephony/euicc/IEuiccController;
-HSPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SmsStorageMonitor;Lcom/android/internal/telephony/Phone;)V
-HPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->dispatchMessageRadioSpecific(Lcom/android/internal/telephony/SmsMessageBase;)I
-HPLcom/android/internal/telephony/gsm/GsmInboundSmsHandler;->is3gpp2()Z
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;-><init>(Lcom/android/internal/telephony/Phone;Lcom/android/internal/telephony/SmsDispatchersController;Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;)V
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getFormat()Ljava/lang/String;
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getUiccCardApplication()Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->onUpdateIccAvailability()V
-HSPLcom/android/internal/telephony/gsm/SimTlv;-><init>([BII)V
-HSPLcom/android/internal/telephony/gsm/SimTlv;->getData()[B
-HSPLcom/android/internal/telephony/gsm/SimTlv;->getTag()I
-HSPLcom/android/internal/telephony/gsm/SimTlv;->isValidObject()Z
-HPLcom/android/internal/telephony/gsm/SimTlv;->nextObject()Z
-HSPLcom/android/internal/telephony/gsm/SimTlv;->parseCurrentTlvObject()Z
-HSPLcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;Lcom/android/internal/telephony/uicc/AdnRecordCache;)V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->createPbrFile(Ljava/util/ArrayList;)V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->loadEfFilesFromUsim()Ljava/util/ArrayList;
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readAdnFileAndWait(I)V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readEmailFileAndWait(I)V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->readPbrFileAndWait()V
-HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->reset()V
-HPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->updatePhoneAdnRecord()V
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs;-><init>()V
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$VfY5To_kbbTJevLzywTg-_S1JhA;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$aWLlEvfonhYSfDR8cVsM6A5pmqI;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$pNx4XUM9FmR6cV_MCAGiEt8F4pg;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$rPjfocpARQ2sab24iic4o3kTTgw;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$ImsServiceController$w3xbtqEhKr7IY81qFuw0e94p84Y;->test(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/ims/-$$Lambda$WVd6ghNMbVDukmkxia3ZwNeZzEY;-><init>()V
-HSPLcom/android/internal/telephony/ims/-$$Lambda$WVd6ghNMbVDukmkxia3ZwNeZzEY;->get()Ljava/lang/Object;
-HSPLcom/android/internal/telephony/ims/-$$Lambda$WamP7BPq0j01TgYE3GvUqU3b-rs;-><init>()V
-HSPLcom/android/internal/telephony/ims/-$$Lambda$WamP7BPq0j01TgYE3GvUqU3b-rs;->create(Landroid/content/Context;Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager$Listener;)Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager;
-HSPLcom/android/internal/telephony/ims/ImsResolver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver$3;->getSubId(I)I
-HSPLcom/android/internal/telephony/ims/ImsResolver$4;->create(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)Lcom/android/internal/telephony/ims/ImsServiceController;
-HSPLcom/android/internal/telephony/ims/ImsResolver$4;->getServiceInterface()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ims/ImsResolver$5;->getServiceInterface()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ims/ImsResolver$7;->onComplete(Landroid/content/ComponentName;Ljava/util/Set;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->getSupportedFeatures()Ljava/util/HashSet;
-HSPLcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;->replaceFeatures(Ljava/util/Set;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;-><init>(Landroid/content/Context;Ljava/lang/String;IZ)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->bindImsServiceWithFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;Ljava/util/HashSet;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->calculateFeaturesToCreate(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)Ljava/util/HashSet;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->carrierConfigChanged(I)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->dynamicQueryComplete(Landroid/content/ComponentName;Ljava/util/Set;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->enableIms(I)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsConfig(II)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsRegistration(II)Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceController(II)Lcom/android/internal/telephony/ims/ImsServiceController;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceControllerAndListen(IILcom/android/ims/internal/IImsServiceFeatureCallback;)Lcom/android/internal/telephony/ims/ImsServiceController;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceControllers(I)Landroid/util/SparseArray;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceInfo(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getImsServiceInfoFromCache(Ljava/lang/String;)Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->getMmTelFeatureAndListen(ILcom/android/ims/internal/IImsServiceFeatureCallback;)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->imsServiceFeatureCreated(IILcom/android/internal/telephony/ims/ImsServiceController;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->initPopulateCacheAndStartBind()V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->lambda$new$0$ImsResolver(Landroid/os/Message;)Z
-HSPLcom/android/internal/telephony/ims/ImsResolver;->maybeAddedImsService(Ljava/lang/String;)V
-HPLcom/android/internal/telephony/ims/ImsResolver;->maybeRemovedImsService(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/ims/ImsResolver;->printFeatures(Ljava/util/Set;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->putImsController(IILcom/android/internal/telephony/ims/ImsServiceController;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->scheduleQueryForFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;I)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->searchForImsServices(Ljava/lang/String;Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceControllerFactory;)Ljava/util/List;
-HSPLcom/android/internal/telephony/ims/ImsResolver;->startDynamicQuery(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->unbindImsService(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->updateBoundCarrierServices(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/ims/ImsResolver;->updateImsServiceFeatures(Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController$3;->getMaximumDelay()J
-HSPLcom/android/internal/telephony/ims/ImsServiceController$3;->getStartDelay()J
-HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureContainer;->hashCode()I
-HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureContainer;->resolve(Ljava/lang/Class;)Landroid/os/IInterface;
-HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsFeatureStatusCallback$1;->notifyImsFeatureStatus(I)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController$ImsServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->addImsServiceFeature(Landroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->addImsServiceFeatureCallback(Lcom/android/ims/internal/IImsServiceFeatureCallback;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->bind(Ljava/util/HashSet;)Z
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->changeImsServiceFeatures(Ljava/util/HashSet;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->createImsFeature(IILcom/android/ims/internal/IImsFeatureStatusCallback;)Landroid/os/IInterface;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->enableIms(I)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->getComponentName()Landroid/content/ComponentName;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->getConfig(I)Landroid/telephony/ims/aidl/IImsConfig;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->getMmTelFeature(I)Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->getRegistration(I)Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->getServiceInterface()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->grantPermissionsToService()V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->isServiceControllerAvailable()Z
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->notifyImsServiceReady()V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureCreatedCallback(II)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->sendImsFeatureStatusChanged(III)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->setServiceController(Landroid/os/IBinder;)V
-HSPLcom/android/internal/telephony/ims/ImsServiceController;->startBindToService(Landroid/content/Intent;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceConnection;I)Z
-HSPLcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager;->startQuery(Landroid/content/ComponentName;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;-><init>(Landroid/content/ContentResolver;)V
-HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;->init(Landroid/content/Context;)Lcom/android/internal/telephony/ims/RcsMessageStoreController;
-HSPLcom/android/internal/telephony/imsphone/-$$Lambda$ImsPhoneCallTracker$QlPVd_3u4_verjHUDnkn6zaSe54;-><init>()V
-HSPLcom/android/internal/telephony/imsphone/-$$Lambda$ImsPhoneCallTracker$Zw03itjXT6-LrhiYuD-9nKFg2Wg;-><init>()V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ExternalCallStateListener;->onImsExternalCallStateUpdate(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;-><init>(Lcom/android/internal/telephony/imsphone/ImsPhone;)V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->getExternalCallStateListener()Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ExternalCallStateListener;
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->handleVideoCapabilitiesChanged(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->refreshCallPullState()V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->refreshExternalCallState(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->registerForNotifications()V
-HSPLcom/android/internal/telephony/imsphone/ImsExternalCallTracker;->setCallPuller(Lcom/android/internal/telephony/imsphone/ImsPullCall;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;Z)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getBackgroundCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getBackgroundCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getDefaultPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getExternalCallTracker()Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getForegroundCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getForegroundCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getImsEcbmStateListener()Lcom/android/ims/ImsEcbmStateListener;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getPhoneId()I
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getPhoneType()I
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getRingingCall()Lcom/android/internal/telephony/Call;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getRingingCall()Lcom/android/internal/telephony/imsphone/ImsPhoneCall;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getServiceState()Landroid/telephony/ServiceState;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getState()Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getSubId()I
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->getVtDataUsage(Z)Landroid/net/NetworkStats;
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isImsCapabilityAvailable(II)Z
-HPLcom/android/internal/telephony/imsphone/ImsPhone;->isImsRegistered()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isInEcm()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isVideoEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isWifiCallingEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->onFeatureCapabilityChanged()V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->processDisconnectReason(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForOnHoldTone(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForRingbackTone(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForSilentRedial(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->registerForTtyModeReceived(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setCurrentSubscriberUris([Landroid/net/Uri;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setImsRegistered(Z)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->setServiceState(I)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->updateDataServiceState()V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneBase;-><init>(Ljava/lang/String;Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Z)V
-HPLcom/android/internal/telephony/imsphone/ImsPhoneCall;->getPhone()Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$3;->connectionReady(Lcom/android/ims/ImsManager;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$6;->onRegistered(I)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$6;->onRegistering(I)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$6;->onSubscriberAssociatedUriChanged([Landroid/net/Uri;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$6;->onUnregistered(Landroid/telephony/ims/ImsReasonInfo;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$7;->onCapabilitiesStatusChanged(Landroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$8;->onSetFeatureResponse(IIII)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$9;->onProvisioningIntChanged(II)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$9;->sendConfigChangedIntent(ILjava/lang/String;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$HoldSwapState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;-><init>(Lcom/android/internal/telephony/imsphone/ImsPhone;Ljava/util/concurrent/Executor;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->addReasonCodeRemapping(Ljava/lang/Integer;Ljava/lang/String;Ljava/lang/Integer;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->cacheCarrierConfiguration(I)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getEcbmInterface()Lcom/android/ims/ImsEcbm;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getImsRegistrationTech()I
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getMultiEndpointInterface()Lcom/android/ims/ImsMultiEndpoint;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getPackageUid(Landroid/content/Context;Ljava/lang/String;)I
-HPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getPhone()Lcom/android/internal/telephony/imsphone/ImsPhone;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getState()Lcom/android/internal/telephony/PhoneConstants$State;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getUtInterface()Lcom/android/ims/ImsUtInterface;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->getVtDataUsage(Z)Landroid/net/NetworkStats;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->handleFeatureCapabilityChanged(Landroid/telephony/ims/feature/ImsFeature$Capabilities;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isImsCapabilityAvailable(II)Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isUtEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isVideoCallEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isVolteEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isVowifiEnabled()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->onDataEnabledChanged(ZI)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->registerPhoneStateListener(Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$PhoneStateListener;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->startListeningForCalls()V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->updateCarrierConfigCache(Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneFactory;->makePhone(Landroid/content/Context;Lcom/android/internal/telephony/PhoneNotifier;Lcom/android/internal/telephony/Phone;)Lcom/android/internal/telephony/imsphone/ImsPhone;
-HSPLcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$tQOsX1lKb2eTuPp-1rpkeIAEOoY;->test(Ljava/lang/Object;)Z
-HPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;
-HPLcom/android/internal/telephony/metrics/CallSessionEventBuilder;->setDelay(I)Lcom/android/internal/telephony/metrics/CallSessionEventBuilder;
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;-><init>(I)V
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;->addEvent(JLcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;->addEvent(Lcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;->containsCsCalls()Z
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;->isEventsDropped()Z
-HPLcom/android/internal/telephony/metrics/InProgressCallSession;->setLastKnownPhoneState(I)V
-HPLcom/android/internal/telephony/metrics/InProgressSmsSession;-><init>(I)V
-HPLcom/android/internal/telephony/metrics/InProgressSmsSession;->addEvent(JLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V
-HPLcom/android/internal/telephony/metrics/InProgressSmsSession;->isEventsDropped()Z
-PLcom/android/internal/telephony/metrics/ModemPowerMetrics;->buildProto()Lcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;
-PLcom/android/internal/telephony/metrics/ModemPowerMetrics;->getStats()Landroid/os/connectivity/CellularBatteryStats;
-HPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;
-HPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setDelay(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->build()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setSimStateChange(Landroid/util/SparseArray;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;-><init>()V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->addTelephonyEvent(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressCallSession(JILcom/android/internal/telephony/metrics/CallSessionEventBuilder;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->annotateInProgressSmsSession(JILcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->buildProto()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->convertSmsFormat(Ljava/lang/String;)I
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishCallSession(Lcom/android/internal/telephony/metrics/InProgressCallSession;)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishSmsSession(Lcom/android/internal/telephony/metrics/InProgressSmsSession;)Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->getInstance()Lcom/android/internal/telephony/metrics/TelephonyMetrics;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->reset()V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewCallSessionIfNeeded(I)Lcom/android/internal/telephony/metrics/InProgressCallSession;
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewSmsSession(I)Lcom/android/internal/telephony/metrics/InProgressSmsSession;
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->toPrivacyFuzzedTimeInterval(JJ)I
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->toServiceStateProto(Landroid/telephony/ServiceState;)Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->updateActiveSubscriptionInfoList(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->updateSimState(II)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeCarrierIdMatchingEvent(IIILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeDataStallEvent(II)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeDataSwitch(ILcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeImsSetFeatureValue(IIII)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeIncomingSmsSession(IZLjava/lang/String;[JZ)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeIncomingSmsSessionWithType(IIZLjava/lang/String;[JZZ)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeNITZEvent(IJ)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnImsCapabilities(IILandroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnImsConnectionState(IILandroid/telephony/ims/ImsReasonInfo;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnRilSolicitedResponse(IIIILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnSetupDataCallResponse(IIIILandroid/telephony/data/DataCallResponse;)V
-HPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writePhoneState(ILcom/android/internal/telephony/PhoneConstants$State;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilDataCallEvent(IIII)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilDeactivateDataCall(IIII)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeServiceStateChanged(ILandroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeSetPreferredNetworkType(II)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeSetupDataCall(IIILjava/lang/String;I)V
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;->clear()Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;->emptyArray()[Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/protobuf/nano/MessageNano;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;->emptyArray()[Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/protobuf/nano/MessageNano;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/internal/telephony/protobuf/nano/MessageNano;
-HSPLcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;->parseFrom([B)Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsCapabilities;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsCapabilities;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;
-PLcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;->computeSerializedSize()I
-PLcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;
-HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;
-HPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/internal/telephony/nano/TelephonyProto$SmsSession;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->computeSerializedSize()I
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;
-HPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->computeSerializedSize()I
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->emptyArray()[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;->computeSerializedSize()I
-PLcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonySettings;->computeSerializedSize()I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonySettings;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->readMessage(Lcom/android/internal/telephony/protobuf/nano/MessageNano;)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->readRawBytes(I)[B
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->readRawVarint32()I
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->readString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->readTag()I
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->rewindToPosition(I)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->skipField(I)Z
-HSPLcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;->skipRawBytes(I)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->checkNoSpaceLeft()V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32Size(II)I
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeInt32SizeNoTag(I)I
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeMessageSize(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)I
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->computeRawVarint64Size(J)I
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;Ljava/nio/ByteBuffer;)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encode(Ljava/lang/CharSequence;[BII)I
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->encodedLength(Ljava/lang/CharSequence;)I
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32(II)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt32NoTag(I)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64(IJ)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeInt64NoTag(J)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessage(ILcom/android/internal/telephony/protobuf/nano/MessageNano;)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeMessageNoTag(Lcom/android/internal/telephony/protobuf/nano/MessageNano;)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(B)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawByte(I)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawLittleEndian64(J)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint32(I)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeRawVarint64(J)V
-HSPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeStringNoTag(Ljava/lang/String;)V
-HPLcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;->writeTag(II)V
-HSPLcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;->writeTo(Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/internal/telephony/protobuf/nano/MessageNano;->getCachedSize()I
-HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->getSerializedSize()I
-HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->mergeFrom(Lcom/android/internal/telephony/protobuf/nano/MessageNano;[BII)Lcom/android/internal/telephony/protobuf/nano/MessageNano;
-HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->messageNanoEquals(Lcom/android/internal/telephony/protobuf/nano/MessageNano;Lcom/android/internal/telephony/protobuf/nano/MessageNano;)Z
-HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;->toByteArray(Lcom/android/internal/telephony/protobuf/nano/MessageNano;[BII)V
-HSPLcom/android/internal/telephony/uicc/AdnRecord$1;-><init>()V
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->getAlphaTag()Ljava/lang/String;
-HPLcom/android/internal/telephony/uicc/AdnRecord;->getEfid()I
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->getNumber()Ljava/lang/String;
-HPLcom/android/internal/telephony/uicc/AdnRecord;->getRecId()I
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->isEmpty()Z
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->parseRecord([B)V
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/AdnRecordCache;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;)V
-HSPLcom/android/internal/telephony/uicc/AdnRecordCache;->clearWaiters()V
-HPLcom/android/internal/telephony/uicc/AdnRecordCache;->extensionEfForEf(I)I
-HPLcom/android/internal/telephony/uicc/AdnRecordCache;->getRecordsIfLoaded(I)Ljava/util/ArrayList;
-HPLcom/android/internal/telephony/uicc/AdnRecordCache;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/internal/telephony/uicc/AdnRecordCache;->requestLoadAllAdnLike(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/AdnRecordCache;->reset()V
-HSPLcom/android/internal/telephony/uicc/AdnRecordLoader;-><init>(Lcom/android/internal/telephony/uicc/IccFileHandler;)V
-HSPLcom/android/internal/telephony/uicc/AdnRecordLoader;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/AdnRecordLoader;->loadFromEF(IIILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$HistoricalBytes;->getRawData()[B
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$HistoricalBytes;->getValue(I)[B
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$HistoricalBytes;->parseHistoricalBytes([BII)Lcom/android/internal/telephony/uicc/AnswerToReset$HistoricalBytes;
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$HistoricalBytes;->parseLtvNode(ILandroid/util/ArrayMap;[BI)I
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$InterfaceByte;->getTB()Ljava/lang/Byte;
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$InterfaceByte;->getTD()Ljava/lang/Byte;
-HSPLcom/android/internal/telephony/uicc/AnswerToReset$InterfaceByte;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->checkIsEuiccSupported()V
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->getConventionByte()B
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->isEuiccSupported()Z
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->isExtendedApduSupported()Z
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->parseAtrString(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->parseConventionByte([BI)I
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->parseInterfaceBytes([BI)I
-HSPLcom/android/internal/telephony/uicc/AnswerToReset;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/CarrierTestOverride;->isInTestMode()Z
-HSPLcom/android/internal/telephony/uicc/CarrierTestOverride;->loadCarrierTestOverrides()V
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;->values()[Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;->values()[Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus$PersoSubState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus;->AppStateFromRILInt(I)Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus;->AppTypeFromRILInt(I)Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus;->PersoSubstateFromRILInt(I)Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$PersoSubState;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus;->PinStateFromRILInt(I)Lcom/android/internal/telephony/uicc/IccCardStatus$PinState;
-HSPLcom/android/internal/telephony/uicc/IccCardApplicationStatus;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccCardStatus$CardState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccCardStatus$CardState;->values()[Lcom/android/internal/telephony/uicc/IccCardStatus$CardState;
-HSPLcom/android/internal/telephony/uicc/IccCardStatus$PinState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccCardStatus$PinState;->values()[Lcom/android/internal/telephony/uicc/IccCardStatus$PinState;
-HSPLcom/android/internal/telephony/uicc/IccCardStatus;->setCardState(I)V
-HSPLcom/android/internal/telephony/uicc/IccCardStatus;->setUniversalPinState(I)V
-HSPLcom/android/internal/telephony/uicc/IccCardStatus;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->getCommonIccEFPath(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->loadEFLinearFixed(IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->loadEFLinearFixed(ILjava/lang/String;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->loadEFLinearFixedAll(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->loadEFLinearFixedAll(ILjava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->loadEFTransparent(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->sendResult(Landroid/os/Message;Ljava/lang/Object;Ljava/lang/Throwable;)V
-HSPLcom/android/internal/telephony/uicc/IccFileHandler;->updateEFLinearFixed(II[BLjava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccIoResult;->getErrorString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccIoResult;->getException()Lcom/android/internal/telephony/uicc/IccException;
-HSPLcom/android/internal/telephony/uicc/IccIoResult;->success()Z
-HSPLcom/android/internal/telephony/uicc/IccIoResult;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;-><init>(Lcom/android/internal/telephony/uicc/UiccCardApplication;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getAdnCache()Lcom/android/internal/telephony/uicc/AdnRecordCache;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getFullIccId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getGid1()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getGid2()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getIMSI()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getIccId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getLockedRecordsLoaded()Z
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getNetworkLockedRecordsLoaded()Z
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getPnnHomeName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getRecordsLoaded()Z
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getServiceProviderName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->isLoaded()Z
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForLockedRecordsLoaded(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForNetworkLockedRecordsLoaded(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForNetworkSelectionModeAutomatic(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForNewSms(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForRecordsEvents(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForRecordsLoaded(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->registerForRecordsOverride(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->setImsi(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->setServiceProviderName(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->unregisterForRecordsEvents(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->unregisterForRecordsLoaded(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/uicc/IccRecords;->updateOperatorPlmn()V
-HSPLcom/android/internal/telephony/uicc/IccServiceTable;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccSlotStatus$SlotState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/IccSlotStatus;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/internal/telephony/uicc/IccSlotStatus;->setCardState(I)V
-HSPLcom/android/internal/telephony/uicc/IccSlotStatus;->setSlotState(I)V
-HSPLcom/android/internal/telephony/uicc/IccSlotStatus;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->adnStringFieldToString([BII)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->bcdPlmnToString([BI)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->bcdToString([BII)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->bchToString([BII)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->byteToHex(B)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->bytesToHexString([B)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->getDecimalSubstring(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->hexCharToInt(C)I
-HSPLcom/android/internal/telephony/uicc/IccUtils;->hexStringToBytes(Ljava/lang/String;)[B
-HSPLcom/android/internal/telephony/uicc/IccUtils;->networkNameToString([BII)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccUtils;->stripTrailingFs(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/InstallCarrierAppUtils;->hideAllNotifications(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/uicc/IsimFileHandler;->getEFPath(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimDomainLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimDomainLoaded;->onRecordLoaded(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpiLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpiLoaded;->onRecordLoaded(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpuLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpuLoaded;->onRecordLoaded(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimIstLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimPcscfLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;-><init>(Lcom/android/internal/telephony/uicc/UiccCardApplication;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->fetchIsimRecords()V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->getIsimDomain()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->getIsimImpu()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->isimTlvToString([B)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->onAllRecordsLoaded()V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->onReady()V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->onRecordLoaded()V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->resetRecords()V
-HSPLcom/android/internal/telephony/uicc/IsimUiccRecords;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/PlmnActRecord$1;-><init>()V
-HSPLcom/android/internal/telephony/uicc/PlmnActRecord;->accessTechString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/PlmnActRecord;->getRecords([B)[Lcom/android/internal/telephony/uicc/PlmnActRecord;
-HSPLcom/android/internal/telephony/uicc/PlmnActRecord;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords$EfPlLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords$EfPlLoaded;->onRecordLoaded(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords$EfUsimLiLoaded;->getEfName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords$EfUsimLiLoaded;->onRecordLoaded(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords$GetSpnFsmState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords$GetSpnFsmState;->values()[Lcom/android/internal/telephony/uicc/SIMRecords$GetSpnFsmState;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;-><init>(Lcom/android/internal/telephony/uicc/UiccCardApplication;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->fetchSimRecords()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getDisplayRule(Landroid/telephony/ServiceState;)I
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getMsisdnAlphaTag()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getMsisdnNumber()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getOperatorNumeric()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getSpnFsm(ZLandroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceCallForwardingFlag()I
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceMailNumber()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getVoiceMessageCount()I
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->loadCallForwardingRecords()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->loadEfLiAndEfPl()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->onAllRecordsLoaded()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->onReady()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->onRecordLoaded()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->parseBcdPlmnList([BLjava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->resetRecords()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->setVoiceCallForwardingFlagFromSimRecords()V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->setVoiceMessageWaiting(II)V
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->toString()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->validEfCfis([B)Z
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getApplication(I)Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getCardId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getCardState()Lcom/android/internal/telephony/uicc/IccCardStatus$CardState;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getCarrierPackageNamesForIntent(Landroid/content/pm/PackageManager;Landroid/content/Intent;)Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getCarrierPrivilegeStatus(Landroid/content/pm/PackageManager;Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getIccId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getOperatorBrandOverride()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->getUiccProfile()Lcom/android/internal/telephony/uicc/UiccProfile;
-HSPLcom/android/internal/telephony/uicc/UiccCard;->hasCarrierPrivilegeRules()Z
-HSPLcom/android/internal/telephony/uicc/UiccCard;->update(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;)V
-HSPLcom/android/internal/telephony/uicc/UiccCard;->updateCardId()V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;-><init>(Lcom/android/internal/telephony/uicc/UiccProfile;Lcom/android/internal/telephony/uicc/IccCardApplicationStatus;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->createIccFileHandler(Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;)Lcom/android/internal/telephony/uicc/IccFileHandler;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->createIccRecords(Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/uicc/IccRecords;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getAid()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getIccFileHandler()Lcom/android/internal/telephony/uicc/IccFileHandler;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getIccRecords()Lcom/android/internal/telephony/uicc/IccRecords;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getPhoneId()I
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getPin1State()Lcom/android/internal/telephony/uicc/IccCardStatus$PinState;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getState()Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getType()Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->getUiccProfile()Lcom/android/internal/telephony/uicc/UiccProfile;
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->isAppIgnored()Z
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->isReady()Z
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->notifyNetworkLockedRegistrantsIfNeeded(Landroid/os/Registrant;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->notifyPinLockedRegistrantsIfNeeded(Landroid/os/Registrant;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->notifyReadyRegistrantsIfNeeded(Landroid/os/Registrant;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->onQueryFacilityLock(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->onQueryFdnEnabled(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->queryFdn()V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->registerForLocked(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->registerForReady(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccCardApplication;->unregisterForReady(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;-><init>(Lcom/android/internal/telephony/uicc/UiccProfile;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->areCarrierPriviligeRulesLoaded()Z
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->getAccessRules()Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->getCarrierPackageNamesForIntent(Landroid/content/pm/PackageManager;Landroid/content/Intent;)Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->getCarrierPrivilegeStatus(Landroid/content/pm/PackageManager;Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->getCarrierPrivilegeStatusForUid(Landroid/content/pm/PackageManager;I)I
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;->hasCarrierPrivilegeRules()Z
-HSPLcom/android/internal/telephony/uicc/UiccController;-><init>(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->addCardId(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->addCardLog(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->convertToPublicCardId(Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/uicc/UiccController;->getAllUiccCardInfos()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getCardIdForDefaultEuicc()I
-HSPLcom/android/internal/telephony/uicc/UiccController;->getCiIndex(Landroid/os/Message;)Ljava/lang/Integer;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getIccRecords(II)Lcom/android/internal/telephony/uicc/IccRecords;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getIccStateIntentString(Lcom/android/internal/telephony/IccCardConstants$State;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getInstance()Lcom/android/internal/telephony/uicc/UiccController;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCard(I)Lcom/android/internal/telephony/uicc/UiccCard;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCardApplication(II)Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccCardForPhone(I)Lcom/android/internal/telephony/uicc/UiccCard;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccProfileForPhone(I)Lcom/android/internal/telephony/uicc/UiccProfile;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccSlotForPhone(I)Lcom/android/internal/telephony/uicc/UiccSlot;
-HSPLcom/android/internal/telephony/uicc/UiccController;->getUiccSlots()[Lcom/android/internal/telephony/uicc/UiccSlot;
-HSPLcom/android/internal/telephony/uicc/UiccController;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->loadCardStrings()Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/uicc/UiccController;->make(Landroid/content/Context;[Lcom/android/internal/telephony/CommandsInterface;)Lcom/android/internal/telephony/uicc/UiccController;
-HSPLcom/android/internal/telephony/uicc/UiccController;->onGetIccCardStatusDone(Landroid/os/AsyncResult;Ljava/lang/Integer;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->onGetSlotStatusDone(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->registerForIccChanged(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->slotStatusChanged(Ljava/util/ArrayList;)Z
-HSPLcom/android/internal/telephony/uicc/UiccController;->updateInternalIccState(Landroid/content/Context;Lcom/android/internal/telephony/IccCardConstants$State;Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15$Pkcs15Selector;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->getRules()Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile$3;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;ILcom/android/internal/telephony/uicc/UiccCard;Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->areAllApplicationsReady()Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->areAllRecordsLoaded()Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->areCarrierPriviligeRulesLoaded()Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->checkAndUpdateIfAnyAppToBeIgnored()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->checkIndexLocked(ILcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;)I
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->createAndUpdateCatServiceLocked()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getApplication(I)Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getApplicationIndex(I)Lcom/android/internal/telephony/uicc/UiccCardApplication;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getCarrierPackageNamesForIntent(Landroid/content/pm/PackageManager;Landroid/content/Intent;)Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getCarrierPrivilegeRules()Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getCarrierPrivilegeStatus(Landroid/content/pm/PackageManager;Ljava/lang/String;)I
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getCarrierPrivilegeStatusForUid(Landroid/content/pm/PackageManager;I)I
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getCertsFromCarrierPrivilegeAccessRules()Ljava/util/List;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccRecords()Lcom/android/internal/telephony/uicc/IccRecords;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccRecordsLoaded()Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getIccStateReason(Lcom/android/internal/telephony/IccCardConstants$State;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getOperatorBrandOverride()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getPhoneId()I
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getServiceProviderName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getState()Lcom/android/internal/telephony/IccCardConstants$State;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->getUninstalledCarrierPackages()Ljava/util/Set;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->handleCarrierNameOverride()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->handleSimCountryIsoOverride()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->hasCarrierPrivilegeRules()Z
-HPLcom/android/internal/telephony/uicc/UiccProfile;->hasIccCard()Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccCloseLogicalChannel(ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccOpenLogicalChannel(Ljava/lang/String;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->iccTransmitApduLogicalChannel(IIIIIILjava/lang/String;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->isSupportedApplication(Lcom/android/internal/telephony/uicc/UiccCardApplication;)Z
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->loglocal(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->onCarrierPrivilegesLoadedMessage()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->registerAllAppEvents()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->registerForNetworkLocked(Landroid/os/Handler;ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->resetProperties()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->sanitizeApplicationIndexesLocked()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->setCurrentAppType(Z)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->setExternalState(Lcom/android/internal/telephony/IccCardConstants$State;Z)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->unregisterAllAppEvents()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->unregisterForNetworkLocked(Landroid/os/Handler;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->update(Landroid/content/Context;Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->updateCarrierNameForSubscription(Lcom/android/internal/telephony/SubscriptionController;I)V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->updateExternalState()V
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->updateIccAvailability(Z)V
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->getCardState()Lcom/android/internal/telephony/uicc/IccCardStatus$CardState;
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->getIccId()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->getPhoneId()I
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->getUiccCard()Lcom/android/internal/telephony/uicc/UiccCard;
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->isActive()Z
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->isEuicc()Z
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->isExtendedApduSupported()Z
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->isRemovable()Z
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->update(Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccCardStatus;II)V
-HSPLcom/android/internal/telephony/uicc/UiccSlot;->update(Lcom/android/internal/telephony/CommandsInterface;Lcom/android/internal/telephony/uicc/IccSlotStatus;I)V
-HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/uicc/UiccController;)V
-HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccStateChangedLauncher;->notifyStateChanged()V
-HSPLcom/android/internal/telephony/uicc/UsimFileHandler;->getEFPath(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UsimFileHandler;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UsimServiceTable$UsimService;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/uicc/UsimServiceTable;-><init>([B)V
-HSPLcom/android/internal/telephony/uicc/UsimServiceTable;->getTag()Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UsimServiceTable;->getValues()[Ljava/lang/Object;
-HSPLcom/android/internal/telephony/uicc/VoiceMailConstants;->containsCarrier(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/uicc/VoiceMailConstants;->loadVoiceMail()V
-HSPLcom/android/internal/telephony/util/NotificationChannelController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/internal/telephony/util/NotificationChannelController;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/util/NotificationChannelController;->createAll(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/util/NotificationChannelController;->migrateVoicemailNotificationSettings(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/util/VoicemailNotificationSettingsUtil;->getRingTonePreference(Landroid/content/Context;)Landroid/net/Uri;
-HSPLcom/android/internal/telephony/util/VoicemailNotificationSettingsUtil;->migrateVoicemailRingtoneSettingsIfNeeded(Landroid/content/Context;Landroid/content/SharedPreferences;)V
-HSPLcom/android/internal/telephony/util/VoicemailNotificationSettingsUtil;->migrateVoicemailVibrationSettingsIfNeeded(Landroid/content/Context;Landroid/content/SharedPreferences;)V
-PLcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;->getISpellCheckerSession(Ljava/lang/String;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;Lcom/android/internal/textservice/ISpellCheckerServiceCallback;)V
-PLcom/android/internal/textservice/ISpellCheckerService$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ISpellCheckerService;
-PLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;-><init>()V
-PLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->asBinder()Landroid/os/IBinder;
-PLcom/android/internal/textservice/ISpellCheckerServiceCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-PLcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;->getCurrentSpellCheckerSubtype(IZ)Landroid/view/textservice/SpellCheckerSubtype;
-HSPLcom/android/internal/textservice/ITextServicesManager$Stub;-><init>()V
-HPLcom/android/internal/textservice/ITextServicesManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;->onServiceConnected(Lcom/android/internal/textservice/ISpellCheckerSession;)V
-PLcom/android/internal/util/-$$Lambda$DumpUtils$vCLO_0ezRxkpSERUWCFrJ0ph5jg;->test(Ljava/lang/Object;)Z
-PLcom/android/internal/util/-$$Lambda$FunctionalUtils$koCSI8D7Nu5vOJTVTEj0m3leo_U;->run()V
-HSPLcom/android/internal/util/ArrayUtils;->add(Landroid/util/ArraySet;Ljava/lang/Object;)Landroid/util/ArraySet;
-HSPLcom/android/internal/util/ArrayUtils;->add(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList;
+HSPLcom/android/internal/telephony/SmsApplication;->getDefaultSmsPackage(Landroid/content/Context;I)Ljava/lang/String;
+HSPLcom/android/internal/telephony/SmsApplication;->getIncomingUserId(Landroid/content/Context;)I
+HSPLcom/android/internal/telephony/util/HandlerExecutor;-><init>(Landroid/os/Handler;)V
+HSPLcom/android/internal/telephony/util/HandlerExecutor;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/textservice/ITextServicesManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/textservice/ITextServicesManager;
+HSPLcom/android/internal/util/AnnotationValidations;->validate(Ljava/lang/Class;Landroid/annotation/IntRange;ILjava/lang/String;J)V
+HSPLcom/android/internal/util/AnnotationValidations;->validate(Ljava/lang/Class;Landroid/annotation/IntRange;ILjava/lang/String;JLjava/lang/String;J)V
+HSPLcom/android/internal/util/AnnotationValidations;->validate(Ljava/lang/Class;Landroid/annotation/NonNull;Ljava/lang/Object;)V
+HSPLcom/android/internal/util/AnnotationValidations;->validate(Ljava/lang/Class;Ljava/lang/annotation/Annotation;I)V
 HSPLcom/android/internal/util/ArrayUtils;->appendElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLcom/android/internal/util/ArrayUtils;->appendElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;Z)[Ljava/lang/Object;
-HSPLcom/android/internal/util/ArrayUtils;->appendInt([II)[I
-HSPLcom/android/internal/util/ArrayUtils;->appendInt([IIZ)[I
-HSPLcom/android/internal/util/ArrayUtils;->appendLong([JJZ)[J
 HSPLcom/android/internal/util/ArrayUtils;->checkBounds(II)V
-HSPLcom/android/internal/util/ArrayUtils;->contains(Ljava/util/Collection;Ljava/lang/Object;)Z
-HSPLcom/android/internal/util/ArrayUtils;->contains([II)Z
 HSPLcom/android/internal/util/ArrayUtils;->contains([Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLcom/android/internal/util/ArrayUtils;->containsAll([Ljava/lang/Object;[Ljava/lang/Object;)Z
-HSPLcom/android/internal/util/ArrayUtils;->convertToIntArray(Ljava/util/List;)[I
-HSPLcom/android/internal/util/ArrayUtils;->convertToLongArray([I)[J
 HSPLcom/android/internal/util/ArrayUtils;->deepToString(Ljava/lang/Object;)Ljava/lang/String;
-HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/io/File;)[Ljava/io/File;
+HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/internal/util/ArrayUtils;->emptyArray(Ljava/lang/Class;)[Ljava/lang/Object;
-HSPLcom/android/internal/util/ArrayUtils;->filterNotNull([Ljava/lang/Object;Ljava/util/function/IntFunction;)[Ljava/lang/Object;
 HSPLcom/android/internal/util/ArrayUtils;->indexOf([Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/internal/util/ArrayUtils;->isEmpty(Ljava/util/Collection;)Z
+HSPLcom/android/internal/util/ArrayUtils;->isEmpty([I)Z
 HSPLcom/android/internal/util/ArrayUtils;->isEmpty([Ljava/lang/Object;)Z
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedArray(Ljava/lang/Class;I)[Ljava/lang/Object;
+HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedBooleanArray(I)[Z
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedByteArray(I)[B
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedCharArray(I)[C
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedFloatArray(I)[F
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedIntArray(I)[I
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedLongArray(I)[J
 HSPLcom/android/internal/util/ArrayUtils;->newUnpaddedObjectArray(I)[Ljava/lang/Object;
-HSPLcom/android/internal/util/ArrayUtils;->referenceEquals(Ljava/util/ArrayList;Ljava/util/ArrayList;)Z
-HSPLcom/android/internal/util/ArrayUtils;->remove(Ljava/util/ArrayList;Ljava/lang/Object;)Ljava/util/ArrayList;
-HSPLcom/android/internal/util/ArrayUtils;->removeElement(Ljava/lang/Class;[Ljava/lang/Object;Ljava/lang/Object;)[Ljava/lang/Object;
-HSPLcom/android/internal/util/ArrayUtils;->removeInt([II)[I
-HSPLcom/android/internal/util/ArrayUtils;->size(Ljava/util/Collection;)I
-HSPLcom/android/internal/util/ArrayUtils;->total([J)J
-HSPLcom/android/internal/util/ArrayUtils;->trimToSize([Ljava/lang/Object;I)[Ljava/lang/Object;
+HSPLcom/android/internal/util/ArrayUtils;->size([Ljava/lang/Object;)I
 HSPLcom/android/internal/util/ArrayUtils;->unstableRemoveIf(Ljava/util/ArrayList;Ljava/util/function/Predicate;)I
-HSPLcom/android/internal/util/AsyncChannel$DeathMonitor;->binderDied()V
-HSPLcom/android/internal/util/AsyncChannel$SyncMessenger$SyncHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/AsyncChannel$SyncMessenger;->obtain()Lcom/android/internal/util/AsyncChannel$SyncMessenger;
-HSPLcom/android/internal/util/AsyncChannel$SyncMessenger;->recycle()V
-HSPLcom/android/internal/util/AsyncChannel$SyncMessenger;->sendMessageSynchronously(Landroid/os/Messenger;Landroid/os/Message;)Landroid/os/Message;
-HSPLcom/android/internal/util/AsyncChannel;->connect(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Handler;)V
-HSPLcom/android/internal/util/AsyncChannel;->connect(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)V
-HSPLcom/android/internal/util/AsyncChannel;->connectSync(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)I
-HSPLcom/android/internal/util/AsyncChannel;->connected(Landroid/content/Context;Landroid/os/Handler;Landroid/os/Messenger;)V
-HPLcom/android/internal/util/AsyncChannel;->disconnect()V
-HSPLcom/android/internal/util/AsyncChannel;->linkToDeathMonitor()Z
-HSPLcom/android/internal/util/AsyncChannel;->replyToMessage(Landroid/os/Message;II)V
-HSPLcom/android/internal/util/AsyncChannel;->replyToMessage(Landroid/os/Message;Landroid/os/Message;)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessage(I)V
-HPLcom/android/internal/util/AsyncChannel;->sendMessage(II)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessage(III)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessage(IIILjava/lang/Object;)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessage(ILjava/lang/Object;)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(I)Landroid/os/Message;
-HSPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(III)Landroid/os/Message;
-HPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(ILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/AsyncChannel;->sendMessageSynchronously(Landroid/os/Message;)Landroid/os/Message;
-HSPLcom/android/internal/util/BitUtils;->packBits([I)J
-HSPLcom/android/internal/util/BitUtils;->toBytes(J)[B
 HSPLcom/android/internal/util/BitUtils;->unpackBits(J)[I
-HPLcom/android/internal/util/CollectionUtils;->addIf(Ljava/util/List;Ljava/util/Collection;Ljava/util/function/Predicate;)V
-HSPLcom/android/internal/util/CollectionUtils;->copyOf(Ljava/util/Set;)Ljava/util/Set;
-HSPLcom/android/internal/util/CollectionUtils;->filter(Ljava/util/Set;Ljava/util/function/Predicate;)Ljava/util/Set;
-HSPLcom/android/internal/util/CollectionUtils;->firstOrNull(Ljava/util/Collection;)Ljava/lang/Object;
-HSPLcom/android/internal/util/CollectionUtils;->firstOrNull(Ljava/util/List;)Ljava/lang/Object;
 HSPLcom/android/internal/util/CollectionUtils;->isEmpty(Ljava/util/Collection;)Z
-HSPLcom/android/internal/util/CollectionUtils;->map(Ljava/util/Set;Ljava/util/function/Function;)Ljava/util/Set;
-HPLcom/android/internal/util/CollectionUtils;->singletonOrEmpty(Ljava/lang/Object;)Ljava/util/List;
 HSPLcom/android/internal/util/CollectionUtils;->size(Ljava/util/Collection;)I
-HSPLcom/android/internal/util/ConcurrentUtils$1$1;->run()V
-HSPLcom/android/internal/util/ConcurrentUtils$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/internal/util/ConcurrentUtils;->newFixedThreadPool(ILjava/lang/String;I)Ljava/util/concurrent/ExecutorService;
-HSPLcom/android/internal/util/ConcurrentUtils;->waitForCountDownNoInterrupt(Ljava/util/concurrent/CountDownLatch;JLjava/lang/String;)V
-HSPLcom/android/internal/util/ConcurrentUtils;->waitForFutureNoInterrupt(Ljava/util/concurrent/Future;Ljava/lang/String;)Ljava/lang/Object;
-HSPLcom/android/internal/util/ConcurrentUtils;->wtfIfLockHeld(Ljava/lang/String;Ljava/lang/Object;)V
-HPLcom/android/internal/util/DumpUtils;->checkDumpAndUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
-HSPLcom/android/internal/util/DumpUtils;->checkDumpPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
-HPLcom/android/internal/util/DumpUtils;->checkUsageStatsPermission(Landroid/content/Context;Ljava/lang/String;Ljava/io/PrintWriter;)Z
-HPLcom/android/internal/util/DumpUtils;->filterRecord(Ljava/lang/String;)Ljava/util/function/Predicate;
-HPLcom/android/internal/util/DumpUtils;->lambda$filterRecord$2(ILjava/lang/String;Landroid/content/ComponentName$WithComponentName;)Z
 HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;-><init>(I)V
 HSPLcom/android/internal/util/ExponentiallyBucketedHistogram;->add(I)V
+HSPLcom/android/internal/util/FastMath;->round(F)I
+HSPLcom/android/internal/util/FastPrintWriter$DummyWriter;-><init>()V
+HSPLcom/android/internal/util/FastPrintWriter$DummyWriter;-><init>(Lcom/android/internal/util/FastPrintWriter$1;)V
 HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;)V
 HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/OutputStream;ZI)V
-HPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/Writer;)V
 HSPLcom/android/internal/util/FastPrintWriter;-><init>(Ljava/io/Writer;ZI)V
+HSPLcom/android/internal/util/FastPrintWriter;->appendLocked(C)V
 HSPLcom/android/internal/util/FastPrintWriter;->appendLocked(Ljava/lang/String;II)V
-HPLcom/android/internal/util/FastPrintWriter;->appendLocked([CII)V
-HPLcom/android/internal/util/FastPrintWriter;->checkError()Z
 HSPLcom/android/internal/util/FastPrintWriter;->close()V
 HSPLcom/android/internal/util/FastPrintWriter;->flush()V
 HSPLcom/android/internal/util/FastPrintWriter;->flushBytesLocked()V
 HSPLcom/android/internal/util/FastPrintWriter;->flushLocked()V
+HSPLcom/android/internal/util/FastPrintWriter;->initDefaultEncoder()V
 HSPLcom/android/internal/util/FastPrintWriter;->print(C)V
 HSPLcom/android/internal/util/FastPrintWriter;->print(I)V
 HSPLcom/android/internal/util/FastPrintWriter;->print(J)V
 HSPLcom/android/internal/util/FastPrintWriter;->print(Ljava/lang/String;)V
 HSPLcom/android/internal/util/FastPrintWriter;->println()V
-HSPLcom/android/internal/util/FastPrintWriter;->println(C)V
-HSPLcom/android/internal/util/FastPrintWriter;->println(I)V
-HPLcom/android/internal/util/FastPrintWriter;->println(J)V
 HSPLcom/android/internal/util/FastPrintWriter;->write(I)V
 HSPLcom/android/internal/util/FastPrintWriter;->write(Ljava/lang/String;)V
-HPLcom/android/internal/util/FastPrintWriter;->write([CII)V
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>()V
 HSPLcom/android/internal/util/FastXmlSerializer;-><init>(I)V
+HSPLcom/android/internal/util/FastXmlSerializer;->append(C)V
+HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;)V
 HSPLcom/android/internal/util/FastXmlSerializer;->append(Ljava/lang/String;II)V
+HSPLcom/android/internal/util/FastXmlSerializer;->appendIndent(I)V
 HSPLcom/android/internal/util/FastXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/FastXmlSerializer;->endDocument()V
 HSPLcom/android/internal/util/FastXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/FastXmlSerializer;->escapeAndAppendString(Ljava/lang/String;)V
 HSPLcom/android/internal/util/FastXmlSerializer;->flush()V
+HSPLcom/android/internal/util/FastXmlSerializer;->flushBytes()V
 HSPLcom/android/internal/util/FastXmlSerializer;->setFeature(Ljava/lang/String;Z)V
 HSPLcom/android/internal/util/FastXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V
 HSPLcom/android/internal/util/FastXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V
 HSPLcom/android/internal/util/FastXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/internal/util/FastXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
-HSPLcom/android/internal/util/FileRotator$FileInfo;->parse(Ljava/lang/String;)Z
-HSPLcom/android/internal/util/FileRotator;-><init>(Ljava/io/File;Ljava/lang/String;JJ)V
-HPLcom/android/internal/util/FileRotator;->getActiveName(J)Ljava/lang/String;
-HSPLcom/android/internal/util/FileRotator;->maybeRotate(J)V
-HSPLcom/android/internal/util/FileRotator;->readFile(Ljava/io/File;Lcom/android/internal/util/FileRotator$Reader;)V
-HSPLcom/android/internal/util/FileRotator;->readMatching(Lcom/android/internal/util/FileRotator$Reader;JJ)V
-HPLcom/android/internal/util/FileRotator;->rewriteActive(Lcom/android/internal/util/FileRotator$Rewriter;J)V
-HSPLcom/android/internal/util/FileRotator;->rewriteSingle(Lcom/android/internal/util/FileRotator$Rewriter;Ljava/lang/String;)V
-HSPLcom/android/internal/util/FileRotator;->writeFile(Ljava/io/File;Lcom/android/internal/util/FileRotator$Writer;)V
-HSPLcom/android/internal/util/FunctionalUtils$RemoteExceptionIgnoringConsumer;->accept(Ljava/lang/Object;)V
-HSPLcom/android/internal/util/FunctionalUtils$ThrowingConsumer;->accept(Ljava/lang/Object;)V
-HPLcom/android/internal/util/FunctionalUtils$ThrowingRunnable;->run()V
-HPLcom/android/internal/util/FunctionalUtils;->handleExceptions(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)Ljava/lang/Runnable;
-HPLcom/android/internal/util/FunctionalUtils;->lambda$handleExceptions$0(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/util/function/Consumer;)V
 HSPLcom/android/internal/util/GrowingArrayUtils;->append([III)[I
 HSPLcom/android/internal/util/GrowingArrayUtils;->append([JIJ)[J
 HSPLcom/android/internal/util/GrowingArrayUtils;->append([Ljava/lang/Object;ILjava/lang/Object;)[Ljava/lang/Object;
 HSPLcom/android/internal/util/GrowingArrayUtils;->append([ZIZ)[Z
+HSPLcom/android/internal/util/GrowingArrayUtils;->growSize(I)I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([IIII)[I
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([JIIJ)[J
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([Ljava/lang/Object;IILjava/lang/Object;)[Ljava/lang/Object;
 HSPLcom/android/internal/util/GrowingArrayUtils;->insert([ZIIZ)[Z
-HSPLcom/android/internal/util/HexDump;->hexStringToByteArray(Ljava/lang/String;)[B
-HSPLcom/android/internal/util/HexDump;->toByte(C)I
-HSPLcom/android/internal/util/HexDump;->toHexString([B)Ljava/lang/String;
-HSPLcom/android/internal/util/HexDump;->toHexString([BIIZ)Ljava/lang/String;
-HSPLcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;)V
-HSPLcom/android/internal/util/IndentingPrintWriter;-><init>(Ljava/io/Writer;Ljava/lang/String;I)V
-HSPLcom/android/internal/util/IndentingPrintWriter;->decreaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
-HSPLcom/android/internal/util/IndentingPrintWriter;->increaseIndent()Lcom/android/internal/util/IndentingPrintWriter;
-HSPLcom/android/internal/util/IndentingPrintWriter;->maybeWriteIndent()V
-HSPLcom/android/internal/util/IndentingPrintWriter;->printHexPair(Ljava/lang/String;I)Lcom/android/internal/util/IndentingPrintWriter;
-HSPLcom/android/internal/util/IndentingPrintWriter;->printPair(Ljava/lang/String;Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
-HSPLcom/android/internal/util/IndentingPrintWriter;->printPair(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/internal/util/IndentingPrintWriter;
-HSPLcom/android/internal/util/IndentingPrintWriter;->println()V
-HSPLcom/android/internal/util/IndentingPrintWriter;->write(I)V
-HSPLcom/android/internal/util/IndentingPrintWriter;->write(Ljava/lang/String;II)V
-HSPLcom/android/internal/util/IndentingPrintWriter;->write([CII)V
-HSPLcom/android/internal/util/JournaledFile;->chooseForRead()Ljava/io/File;
-HSPLcom/android/internal/util/JournaledFile;->chooseForWrite()Ljava/io/File;
-HSPLcom/android/internal/util/JournaledFile;->commit()V
-HSPLcom/android/internal/util/LatencyTracker;->getInstance(Landroid/content/Context;)Lcom/android/internal/util/LatencyTracker;
-HSPLcom/android/internal/util/LatencyTracker;->onActionEnd(I)V
-HSPLcom/android/internal/util/LatencyTracker;->onActionStart(I)V
+HSPLcom/android/internal/util/IntPair;->first(J)I
+HSPLcom/android/internal/util/IntPair;->second(J)I
 HSPLcom/android/internal/util/LineBreakBufferedWriter;-><init>(Ljava/io/Writer;I)V
+HSPLcom/android/internal/util/LineBreakBufferedWriter;-><init>(Ljava/io/Writer;II)V
+HSPLcom/android/internal/util/LineBreakBufferedWriter;->appendToBuffer(Ljava/lang/String;II)V
+HSPLcom/android/internal/util/LineBreakBufferedWriter;->ensureCapacity(I)V
 HSPLcom/android/internal/util/LineBreakBufferedWriter;->flush()V
 HSPLcom/android/internal/util/LineBreakBufferedWriter;->println()V
 HSPLcom/android/internal/util/LineBreakBufferedWriter;->write(Ljava/lang/String;II)V
-HSPLcom/android/internal/util/LocalLog;-><init>(Ljava/lang/String;)V
+HSPLcom/android/internal/util/LineBreakBufferedWriter;->writeBuffer(I)V
 HSPLcom/android/internal/util/MemInfoReader;-><init>()V
-HSPLcom/android/internal/util/MemInfoReader;->getCachedSizeKb()J
-HSPLcom/android/internal/util/MemInfoReader;->getFreeSizeKb()J
-HSPLcom/android/internal/util/MemInfoReader;->getKernelUsedSizeKb()J
 HSPLcom/android/internal/util/MemInfoReader;->getTotalSize()J
-HSPLcom/android/internal/util/MemInfoReader;->getTotalSizeKb()J
-HSPLcom/android/internal/util/MemInfoReader;->getZramTotalSizeKb()J
 HSPLcom/android/internal/util/MemInfoReader;->readMemInfo()V
-HSPLcom/android/internal/util/MessageUtils;->findMessageNames([Ljava/lang/Class;)Landroid/util/SparseArray;
-HSPLcom/android/internal/util/MessageUtils;->findMessageNames([Ljava/lang/Class;[Ljava/lang/String;)Landroid/util/SparseArray;
-HSPLcom/android/internal/util/NotificationMessagingUtil;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/util/NotificationMessagingUtil;->isDefaultMessagingApp(Landroid/service/notification/StatusBarNotification;)Z
-HSPLcom/android/internal/util/NotificationMessagingUtil;->isImportantMessaging(Landroid/service/notification/StatusBarNotification;I)Z
-HSPLcom/android/internal/util/NotificationMessagingUtil;->isMessaging(Landroid/service/notification/StatusBarNotification;)Z
-HSPLcom/android/internal/util/ObjectUtils;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
-HSPLcom/android/internal/util/ParseUtils;->parseIntWithBase(Ljava/lang/String;II)I
 HSPLcom/android/internal/util/Preconditions;->checkArgument(Z)V
 HSPLcom/android/internal/util/Preconditions;->checkArgument(ZLjava/lang/Object;)V
-HSPLcom/android/internal/util/Preconditions;->checkArgument(ZLjava/lang/String;[Ljava/lang/Object;)V
 HSPLcom/android/internal/util/Preconditions;->checkArgumentInRange(IIILjava/lang/String;)I
-HSPLcom/android/internal/util/Preconditions;->checkArgumentInRange(JJJLjava/lang/String;)J
-HSPLcom/android/internal/util/Preconditions;->checkArgumentNonNegative(FLjava/lang/String;)F
 HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(I)I
 HSPLcom/android/internal/util/Preconditions;->checkArgumentNonnegative(ILjava/lang/String;)I
-HSPLcom/android/internal/util/Preconditions;->checkArgumentPositive(ILjava/lang/String;)I
-HSPLcom/android/internal/util/Preconditions;->checkArrayElementsInRange([FFFLjava/lang/String;)[F
-HSPLcom/android/internal/util/Preconditions;->checkArrayElementsInRange([IIILjava/lang/String;)[I
 HSPLcom/android/internal/util/Preconditions;->checkCollectionElementsNotNull(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/Collection;
 HSPLcom/android/internal/util/Preconditions;->checkFlagsArgument(II)I
 HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;)Ljava/lang/Object;
@@ -24268,493 +15064,182 @@
 HSPLcom/android/internal/util/Preconditions;->checkState(ZLjava/lang/String;)V
 HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
 HSPLcom/android/internal/util/Preconditions;->checkStringNotEmpty(Ljava/lang/CharSequence;Ljava/lang/Object;)Ljava/lang/CharSequence;
-HSPLcom/android/internal/util/ProgressReporter;-><init>(I)V
-HSPLcom/android/internal/util/ProgressReporter;->addListener(Landroid/os/IProgressListener;)V
-HSPLcom/android/internal/util/ProgressReporter;->finish()V
-HSPLcom/android/internal/util/ProgressReporter;->notifyFinished(ILandroid/os/Bundle;)V
-HSPLcom/android/internal/util/ProgressReporter;->notifyProgress(IILandroid/os/Bundle;)V
-HSPLcom/android/internal/util/ProgressReporter;->notifyStarted(ILandroid/os/Bundle;)V
-HSPLcom/android/internal/util/ProgressReporter;->setProgress(I)V
-HSPLcom/android/internal/util/ProgressReporter;->setProgress(IILjava/lang/CharSequence;)V
-HSPLcom/android/internal/util/ProgressReporter;->setProgress(ILjava/lang/CharSequence;)V
-HSPLcom/android/internal/util/ProgressReporter;->start()V
-HSPLcom/android/internal/util/RingBuffer;-><init>(Ljava/lang/Class;I)V
-HSPLcom/android/internal/util/RingBuffer;->append(Ljava/lang/Object;)V
-HSPLcom/android/internal/util/RingBuffer;->clear()V
-HSPLcom/android/internal/util/RingBuffer;->createNewItem()Ljava/lang/Object;
-HSPLcom/android/internal/util/RingBuffer;->getNextSlot()Ljava/lang/Object;
-HPLcom/android/internal/util/RingBuffer;->isEmpty()Z
-HSPLcom/android/internal/util/RingBuffer;->size()I
-HPLcom/android/internal/util/RingBuffer;->toArray()[Ljava/lang/Object;
-HSPLcom/android/internal/util/RingBufferIndices;->add()I
-HSPLcom/android/internal/util/ScreenShapeHelper;->getWindowOutsetBottomPx(Landroid/content/res/Resources;)I
-HSPLcom/android/internal/util/ScreenshotHelper;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/util/StatLogger;-><init>([Ljava/lang/String;)V
 HSPLcom/android/internal/util/StatLogger;->getTime()J
 HSPLcom/android/internal/util/StatLogger;->logDurationStat(IJ)J
-HSPLcom/android/internal/util/State;-><init>()V
-HSPLcom/android/internal/util/State;->enter()V
-HSPLcom/android/internal/util/State;->exit()V
-HSPLcom/android/internal/util/State;->getName()Ljava/lang/String;
-HSPLcom/android/internal/util/State;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/internal/util/StateMachine$LogRec;->update(Lcom/android/internal/util/StateMachine;Landroid/os/Message;Ljava/lang/String;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;)V
-HSPLcom/android/internal/util/StateMachine$LogRecords;->add(Lcom/android/internal/util/StateMachine;Landroid/os/Message;Ljava/lang/String;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;Lcom/android/internal/util/IState;)V
-HSPLcom/android/internal/util/StateMachine$LogRecords;->cleanup()V
-HSPLcom/android/internal/util/StateMachine$LogRecords;->logOnlyTransitions()Z
-HSPLcom/android/internal/util/StateMachine$LogRecords;->setLogOnlyTransitions(Z)V
-HSPLcom/android/internal/util/StateMachine$LogRecords;->setSize(I)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;-><init>(Landroid/os/Looper;Lcom/android/internal/util/StateMachine;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->addState(Lcom/android/internal/util/State;Lcom/android/internal/util/State;)Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;
-HSPLcom/android/internal/util/StateMachine$SmHandler;->cleanupAfterQuitting()V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->completeConstruction()V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->deferMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->invokeEnterMethods(I)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->invokeExitMethods(Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->moveDeferredMessageAtFrontOfQueue()V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->moveTempStateStackToStateStack()I
-HSPLcom/android/internal/util/StateMachine$SmHandler;->performTransitions(Lcom/android/internal/util/State;Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->processMsg(Landroid/os/Message;)Lcom/android/internal/util/State;
-HSPLcom/android/internal/util/StateMachine$SmHandler;->setInitialState(Lcom/android/internal/util/State;)V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->setupInitialStateStack()V
-HSPLcom/android/internal/util/StateMachine$SmHandler;->setupTempStateStackWithStatesToEnter(Lcom/android/internal/util/State;)Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;
-HSPLcom/android/internal/util/StateMachine$SmHandler;->transitionTo(Lcom/android/internal/util/IState;)V
-HSPLcom/android/internal/util/StateMachine;-><init>(Ljava/lang/String;)V
-HSPLcom/android/internal/util/StateMachine;-><init>(Ljava/lang/String;Landroid/os/Handler;)V
-HSPLcom/android/internal/util/StateMachine;-><init>(Ljava/lang/String;Landroid/os/Looper;)V
-HSPLcom/android/internal/util/StateMachine;->addLogRec(Ljava/lang/String;)V
-HSPLcom/android/internal/util/StateMachine;->addState(Lcom/android/internal/util/State;)V
-HSPLcom/android/internal/util/StateMachine;->addState(Lcom/android/internal/util/State;Lcom/android/internal/util/State;)V
-HSPLcom/android/internal/util/StateMachine;->deferMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine;->getCurrentState()Lcom/android/internal/util/IState;
-HSPLcom/android/internal/util/StateMachine;->getLogRecString(Landroid/os/Message;)Ljava/lang/String;
-HSPLcom/android/internal/util/StateMachine;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/util/StateMachine;->logAndAddLogRec(Ljava/lang/String;)V
-HSPLcom/android/internal/util/StateMachine;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/util/StateMachine;->obtainMessage(I)Landroid/os/Message;
-HSPLcom/android/internal/util/StateMachine;->obtainMessage(III)Landroid/os/Message;
-HSPLcom/android/internal/util/StateMachine;->obtainMessage(IIILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/StateMachine;->obtainMessage(ILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/StateMachine;->onPostHandleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine;->onPreHandleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine;->onQuitting()V
-HSPLcom/android/internal/util/StateMachine;->quitNow()V
-HSPLcom/android/internal/util/StateMachine;->recordLogRec(Landroid/os/Message;)Z
-HSPLcom/android/internal/util/StateMachine;->removeMessages(I)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(I)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(II)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(III)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(IIILjava/lang/Object;)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(ILjava/lang/Object;)V
-HSPLcom/android/internal/util/StateMachine;->sendMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/util/StateMachine;->sendMessageAtFrontOfQueue(I)V
-HPLcom/android/internal/util/StateMachine;->sendMessageAtFrontOfQueue(IIILjava/lang/Object;)V
-HSPLcom/android/internal/util/StateMachine;->sendMessageDelayed(IJ)V
-HSPLcom/android/internal/util/StateMachine;->sendMessageDelayed(Landroid/os/Message;J)V
-HSPLcom/android/internal/util/StateMachine;->setDbg(Z)V
-HSPLcom/android/internal/util/StateMachine;->setInitialState(Lcom/android/internal/util/State;)V
-HSPLcom/android/internal/util/StateMachine;->setLogOnlyTransitions(Z)V
-HSPLcom/android/internal/util/StateMachine;->setLogRecSize(I)V
-HSPLcom/android/internal/util/StateMachine;->start()V
-HSPLcom/android/internal/util/StateMachine;->transitionTo(Lcom/android/internal/util/IState;)V
-HSPLcom/android/internal/util/StateMachine;->unhandledMessage(Landroid/os/Message;)V
-HPLcom/android/internal/util/SyncResultReceiver;->bundleFor(Landroid/os/Parcelable;)Landroid/os/Bundle;
+HSPLcom/android/internal/util/SyncResultReceiver;-><init>(I)V
+HSPLcom/android/internal/util/SyncResultReceiver;->getIntResult()I
 HSPLcom/android/internal/util/SyncResultReceiver;->send(ILandroid/os/Bundle;)V
 HSPLcom/android/internal/util/SyncResultReceiver;->waitResult()V
-HSPLcom/android/internal/util/TokenBucket;-><init>(II)V
-HSPLcom/android/internal/util/TokenBucket;-><init>(III)V
-HPLcom/android/internal/util/TokenBucket;->get()Z
-HPLcom/android/internal/util/TokenBucket;->get(I)I
 HSPLcom/android/internal/util/VirtualRefBasePtr;-><init>(J)V
 HSPLcom/android/internal/util/VirtualRefBasePtr;->finalize()V
+HSPLcom/android/internal/util/VirtualRefBasePtr;->get()J
 HSPLcom/android/internal/util/VirtualRefBasePtr;->release()V
-HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;I)V
-HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;III)V
-HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;IIILjava/lang/Object;)V
-HSPLcom/android/internal/util/WakeupMessage;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Ljava/lang/Runnable;)V
-HSPLcom/android/internal/util/WakeupMessage;->cancel()V
-HPLcom/android/internal/util/WakeupMessage;->onAlarm()V
-HSPLcom/android/internal/util/WakeupMessage;->schedule(J)V
 HSPLcom/android/internal/util/XmlUtils;->beginDocument(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
-HSPLcom/android/internal/util/XmlUtils;->convertValueToBoolean(Ljava/lang/CharSequence;Z)Z
-HSPLcom/android/internal/util/XmlUtils;->nextElement(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/internal/util/XmlUtils;->nextElementWithin(Lorg/xmlpull/v1/XmlPullParser;I)Z
-HSPLcom/android/internal/util/XmlUtils;->readBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
-HSPLcom/android/internal/util/XmlUtils;->readBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z
-HSPLcom/android/internal/util/XmlUtils;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
-HSPLcom/android/internal/util/XmlUtils;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
-HSPLcom/android/internal/util/XmlUtils;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
-HSPLcom/android/internal/util/XmlUtils;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
 HSPLcom/android/internal/util/XmlUtils;->readMapXml(Ljava/io/InputStream;)Ljava/util/HashMap;
-HSPLcom/android/internal/util/XmlUtils;->readStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/util/XmlUtils;->readThisArrayMapXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Landroid/util/ArrayMap;
-HSPLcom/android/internal/util/XmlUtils;->readThisByteArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[B
-HSPLcom/android/internal/util/XmlUtils;->readThisLongArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[J
 HSPLcom/android/internal/util/XmlUtils;->readThisMapXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;)Ljava/util/HashMap;
 HSPLcom/android/internal/util/XmlUtils;->readThisPrimitiveValueXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->readThisSetXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/util/HashSet;
-HSPLcom/android/internal/util/XmlUtils;->readThisStringArrayXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/internal/util/XmlUtils;->readThisValueXml(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;Lcom/android/internal/util/XmlUtils$ReadMapCallback;Z)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->readValueXml(Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/internal/util/XmlUtils;->skipCurrentTag(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/internal/util/XmlUtils;->writeBooleanAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V
-HSPLcom/android/internal/util/XmlUtils;->writeByteArrayXml([BLjava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeIntAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;I)V
-HSPLcom/android/internal/util/XmlUtils;->writeLongArrayXml([JLjava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeLongAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/io/OutputStream;)V
+HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
 HSPLcom/android/internal/util/XmlUtils;->writeMapXml(Ljava/util/Map;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
 HSPLcom/android/internal/util/XmlUtils;->writeSetXml(Ljava/util/Set;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeStringArrayXml([Ljava/lang/String;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/internal/util/XmlUtils;->writeStringAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
-HSPLcom/android/internal/util/XmlUtils;->writeUriAttribute(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/net/Uri;)V
 HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/internal/util/XmlUtils;->writeValueXml(Ljava/lang/Object;Ljava/lang/String;Lorg/xmlpull/v1/XmlSerializer;Lcom/android/internal/util/XmlUtils$WriteMapCallback;)V
-HSPLcom/android/internal/util/function/pooled/ArgumentPlaceholder;-><init>()V
-HSPLcom/android/internal/util/function/pooled/OmniFunction;->accept(Ljava/lang/Object;)V
+HSPLcom/android/internal/util/function/pooled/OmniFunction;-><init>()V
 HSPLcom/android/internal/util/function/pooled/OmniFunction;->run()V
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->__()Lcom/android/internal/util/function/pooled/ArgumentPlaceholder;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainConsumer(Ljava/util/function/BiConsumer;Lcom/android/internal/util/function/pooled/ArgumentPlaceholder;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledConsumer;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/HexConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/QuintConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Lcom/android/internal/util/function/TriConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Ljava/util/function/BiConsumer;Ljava/lang/Object;Ljava/lang/Object;)Landroid/os/Message;
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainMessage(Ljava/util/function/Consumer;Ljava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainRunnable(Lcom/android/internal/util/function/QuadConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledRunnable;
-HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainRunnable(Lcom/android/internal/util/function/TriConsumer;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledRunnable;
 HSPLcom/android/internal/util/function/pooled/PooledLambda;->obtainRunnable(Ljava/util/function/BiConsumer;Ljava/lang/Object;Ljava/lang/Object;)Lcom/android/internal/util/function/pooled/PooledRunnable;
-HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeArgCount(I)I
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->decodeReturnType(I)I
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl$LambdaType;->encode(II)I
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;-><init>()V
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->access$000(II)I
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->access$100(II)I
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;)Lcom/android/internal/util/function/pooled/PooledLambdaImpl;
-HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;Ljava/lang/Object;IIILjava/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;)Lcom/android/internal/util/function/pooled/PooledLambda;
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->acquire(Lcom/android/internal/util/function/pooled/PooledLambdaImpl$Pool;Ljava/lang/Object;IIILjava/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;)Lcom/android/internal/util/function/pooled/PooledLambda;
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->checkNotRecycled()V
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->doInvoke()Ljava/lang/Object;
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->doRecycle()V
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->fillInArg(Ljava/lang/Object;)Z
-HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->invoke(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;
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->getFlags(I)I
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->invoke(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;
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->isInvocationArgAtIndex(I)Z
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->isRecycleOnUse()Z
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->isRecycled()Z
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->mask(II)I
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->popArg(I)Ljava/lang/Object;
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->recycleOnUse()Lcom/android/internal/util/function/pooled/OmniFunction;
 HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->recycleOnUse()Lcom/android/internal/util/function/pooled/PooledRunnable;
-HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->toString()Ljava/lang/String;
-HSPLcom/android/internal/view/ActionBarPolicy;->getMaxActionButtons()I
-HSPLcom/android/internal/view/BaseIWindow;-><init>()V
-PLcom/android/internal/view/BaseIWindow;->closeSystemDialogs(Ljava/lang/String;)V
-PLcom/android/internal/view/BaseIWindow;->dispatchAppVisibility(Z)V
-HSPLcom/android/internal/view/BaseIWindow;->insetsChanged(Landroid/view/InsetsState;)V
-HSPLcom/android/internal/view/IInputConnectionWrapper$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->beginBatchEdit()V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->closeConnection()V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->commitText(Ljava/lang/CharSequence;I)V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->setFlags(II)V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->setIfInBounds([Ljava/lang/Object;ILjava/lang/Object;)V
+HSPLcom/android/internal/util/function/pooled/PooledLambdaImpl;->unmask(II)I
+HSPLcom/android/internal/view/IInputConnectionWrapper$MyHandler;-><init>(Lcom/android/internal/view/IInputConnectionWrapper;Landroid/os/Looper;)V
+HSPLcom/android/internal/view/IInputConnectionWrapper;-><init>(Landroid/os/Looper;Landroid/view/inputmethod/InputConnection;)V
 HSPLcom/android/internal/view/IInputConnectionWrapper;->dispatchMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->endBatchEdit()V
 HSPLcom/android/internal/view/IInputConnectionWrapper;->executeMessage(Landroid/os/Message;)V
 HSPLcom/android/internal/view/IInputConnectionWrapper;->finishComposingText()V
 HSPLcom/android/internal/view/IInputConnectionWrapper;->getInputConnection()Landroid/view/inputmethod/InputConnection;
-HSPLcom/android/internal/view/IInputConnectionWrapper;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V
-HSPLcom/android/internal/view/IInputConnectionWrapper;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V
 HSPLcom/android/internal/view/IInputConnectionWrapper;->isFinished()Z
 HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessage(I)Landroid/os/Message;
-HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIISC(IIIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message;
-HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageIO(IILjava/lang/Object;)Landroid/os/Message;
-HSPLcom/android/internal/view/IInputConnectionWrapper;->obtainMessageISC(IIILcom/android/internal/view/IInputContextCallback;)Landroid/os/Message;
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->beginBatchEdit()V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->commitText(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->deleteSurroundingText(II)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->endBatchEdit()V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->finishComposingText()V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getSelectedText(IILcom/android/internal/view/IInputContextCallback;)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextAfterCursor(IIILcom/android/internal/view/IInputContextCallback;)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->getTextBeforeCursor(IIILcom/android/internal/view/IInputContextCallback;)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->sendKeyEvent(Landroid/view/KeyEvent;)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingRegion(II)V
-HSPLcom/android/internal/view/IInputContext$Stub$Proxy;->setComposingText(Ljava/lang/CharSequence;I)V
+HSPLcom/android/internal/view/IInputContext$Stub;-><init>()V
 HSPLcom/android/internal/view/IInputContext$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputContext$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputContext;
-HSPLcom/android/internal/view/IInputContext$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setSelectedText(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextAfterCursor(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/IInputContextCallback$Stub$Proxy;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/IInputContextCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputContextCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->bindInput(Landroid/view/inputmethod/InputBinding;)V
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->createSession(Landroid/view/InputChannel;Lcom/android/internal/view/IInputSessionCallback;)V
-HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->hideSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->initializeInternal(Landroid/os/IBinder;ILcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;)V
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->setSessionEnabled(Lcom/android/internal/view/IInputMethodSession;Z)V
-HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->showSoftInput(ILandroid/os/ResultReceiver;)V
-HSPLcom/android/internal/view/IInputMethod$Stub$Proxy;->startInput(Landroid/os/IBinder;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;ZZ)V
-HPLcom/android/internal/view/IInputMethod$Stub$Proxy;->unbindInput()V
-HSPLcom/android/internal/view/IInputMethod$Stub;-><init>()V
-HSPLcom/android/internal/view/IInputMethod$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethod;
-HSPLcom/android/internal/view/IInputMethod$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->onBindMethod(Lcom/android/internal/view/InputBindResult;)V
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->onUnbindMethod(II)V
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->reportFullscreenMode(Z)V
-HSPLcom/android/internal/view/IInputMethodClient$Stub$Proxy;->setActive(ZZ)V
+HSPLcom/android/internal/view/IInputMethodClient$Stub;-><init>()V
 HSPLcom/android/internal/view/IInputMethodClient$Stub;->asBinder()Landroid/os/IBinder;
 HSPLcom/android/internal/view/IInputMethodClient$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;I)V
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodList(I)Ljava/util/List;
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List;
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->getInputMethodList(I)Ljava/util/List;
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
-HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
 HSPLcom/android/internal/view/IInputMethodManager$Stub$Proxy;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;II)Lcom/android/internal/view/InputBindResult;
-HSPLcom/android/internal/view/IInputMethodManager$Stub;-><init>()V
-HSPLcom/android/internal/view/IInputMethodManager$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->finishSession()V
-HSPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;->updateSelection(IIIIII)V
-HSPLcom/android/internal/view/IInputMethodSession$Stub;-><init>()V
-HSPLcom/android/internal/view/IInputMethodSession$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputMethodSession$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/IInputSessionCallback$Stub$Proxy;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V
-HSPLcom/android/internal/view/IInputSessionCallback$Stub;-><init>()V
-HSPLcom/android/internal/view/IInputSessionCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/view/IInputSessionCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/view/InputBindResult$1;-><init>()V
+HSPLcom/android/internal/view/IInputMethodManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodManager;
+HSPLcom/android/internal/view/IInputMethodSession$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/android/internal/view/IInputMethodSession$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/view/IInputMethodSession;
 HSPLcom/android/internal/view/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/view/InputBindResult;
 HSPLcom/android/internal/view/InputBindResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/internal/view/InputBindResult;-><init>(ILcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;Ljava/lang/String;I)V
 HSPLcom/android/internal/view/InputBindResult;-><init>(Landroid/os/Parcel;)V
-HSPLcom/android/internal/view/InputBindResult;->error(I)Lcom/android/internal/view/InputBindResult;
-HSPLcom/android/internal/view/InputBindResult;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;-><init>()V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->dispose()V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->getInstance()Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback;
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setSelectedText(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setTextAfterCursor(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->setTextBeforeCursor(Ljava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/InputConnectionWrapper$InputContextCallback;->waitForResultLocked()V
-HSPLcom/android/internal/view/InputConnectionWrapper;->getSelectedText(I)Ljava/lang/CharSequence;
-HSPLcom/android/internal/view/InputConnectionWrapper;->getTextAfterCursor(II)Ljava/lang/CharSequence;
-HSPLcom/android/internal/view/InputConnectionWrapper;->getTextBeforeCursor(II)Ljava/lang/CharSequence;
-HSPLcom/android/internal/view/RotationPolicy;->isRotationLockToggleVisible(Landroid/content/Context;)Z
-HSPLcom/android/internal/view/RotationPolicy;->isRotationLocked(Landroid/content/Context;)Z
-HSPLcom/android/internal/view/RotationPolicy;->isRotationSupported(Landroid/content/Context;)Z
-HSPLcom/android/internal/view/WindowManagerPolicyThread;->set(Ljava/lang/Thread;Landroid/os/Looper;)V
-HSPLcom/android/internal/view/menu/ActionMenuItem;-><init>(Landroid/content/Context;IIIILjava/lang/CharSequence;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->hasText()Z
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->initialize(Lcom/android/internal/view/menu/MenuItemImpl;I)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->onMeasure(II)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->prefersCondensedTitle()Z
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->setIcon(Landroid/graphics/drawable/Drawable;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->setItemInvoker(Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->setPopupCallback(Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->setTitle(Ljava/lang/CharSequence;)V
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->shouldAllowTextWithIcon()Z
-HSPLcom/android/internal/view/menu/ActionMenuItemView;->updateTextButtonVisibility()V
-HSPLcom/android/internal/view/menu/BaseMenuPresenter;->addItemView(Landroid/view/View;I)V
-HSPLcom/android/internal/view/menu/BaseMenuPresenter;->createItemView(Landroid/view/ViewGroup;)Lcom/android/internal/view/menu/MenuView$ItemView;
-HSPLcom/android/internal/view/menu/BaseMenuPresenter;->setCallback(Lcom/android/internal/view/menu/MenuPresenter$Callback;)V
-HSPLcom/android/internal/view/menu/BaseMenuPresenter;->updateMenuView(Z)V
-HSPLcom/android/internal/view/menu/MenuBuilder;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->add(IIII)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuBuilder;->add(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuBuilder;->addInternal(IIILjava/lang/CharSequence;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuBuilder;->addMenuPresenter(Lcom/android/internal/view/menu/MenuPresenter;Landroid/content/Context;)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->clear()V
-HSPLcom/android/internal/view/menu/MenuBuilder;->dispatchPresenterUpdate(Z)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->findItem(I)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuBuilder;->flagActionItems()V
-HSPLcom/android/internal/view/menu/MenuBuilder;->getActionItems()Ljava/util/ArrayList;
-HSPLcom/android/internal/view/menu/MenuBuilder;->getContext()Landroid/content/Context;
-HSPLcom/android/internal/view/menu/MenuBuilder;->getNonActionItems()Ljava/util/ArrayList;
-HSPLcom/android/internal/view/menu/MenuBuilder;->getVisibleItems()Ljava/util/ArrayList;
-HSPLcom/android/internal/view/menu/MenuBuilder;->hasVisibleItems()Z
-HSPLcom/android/internal/view/menu/MenuBuilder;->onItemActionRequestChanged(Lcom/android/internal/view/menu/MenuItemImpl;)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->onItemVisibleChanged(Lcom/android/internal/view/menu/MenuItemImpl;)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->onItemsChanged(Z)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->setCallback(Lcom/android/internal/view/menu/MenuBuilder$Callback;)V
-HSPLcom/android/internal/view/menu/MenuBuilder;->size()I
-HSPLcom/android/internal/view/menu/MenuBuilder;->startDispatchingItemsChanged()V
-HSPLcom/android/internal/view/menu/MenuBuilder;->stopDispatchingItemsChanged()V
-HSPLcom/android/internal/view/menu/MenuItemImpl;-><init>(Lcom/android/internal/view/menu/MenuBuilder;IIIILjava/lang/CharSequence;I)V
-HSPLcom/android/internal/view/menu/MenuItemImpl;->applyIconTintIfNecessary(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/Drawable;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->getIcon()Landroid/graphics/drawable/Drawable;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->isVisible()Z
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setAlphabeticShortcut(CI)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setCheckable(Z)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setChecked(Z)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setContentDescription(Ljava/lang/CharSequence;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setEnabled(Z)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setIcon(I)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setNumericShortcut(CI)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setOnMenuItemClickListener(Landroid/view/MenuItem$OnMenuItemClickListener;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setShowAsAction(I)V
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setTitleCondensed(Ljava/lang/CharSequence;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setTooltipText(Ljava/lang/CharSequence;)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuItemImpl;->setVisible(Z)Landroid/view/MenuItem;
-HSPLcom/android/internal/view/menu/MenuPopupHelper;->setGravity(I)V
-HSPLcom/android/internal/view/menu/MenuPopupHelper;->setOnDismissListener(Landroid/widget/PopupWindow$OnDismissListener;)V
-HSPLcom/android/internal/widget/AbsActionBarView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->getOpacity()I
-HSPLcom/android/internal/widget/ActionBarContainer$ActionBarBackgroundDrawable;->getOutline(Landroid/graphics/Outline;)V
-HSPLcom/android/internal/widget/ActionBarContainer;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLcom/android/internal/widget/ActionBarContainer;->drawableStateChanged()V
-HSPLcom/android/internal/widget/ActionBarContainer;->jumpDrawablesToCurrentState()V
-HSPLcom/android/internal/widget/ActionBarContainer;->onFinishInflate()V
-HSPLcom/android/internal/widget/ActionBarContainer;->onLayout(ZIIII)V
-HSPLcom/android/internal/widget/ActionBarContainer;->onMeasure(II)V
-HSPLcom/android/internal/widget/ActionBarContainer;->onResolveDrawables(I)V
-HSPLcom/android/internal/widget/ActionBarContextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLcom/android/internal/widget/ActionBarContextView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLcom/android/internal/widget/ActionBarContextView;->onDetachedFromWindow()V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout$5;-><init>(Ljava/lang/String;)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->applyInsets(Landroid/view/View;Landroid/graphics/Rect;ZZZZ)Z
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->checkLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Z
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->dismissPopups()V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Landroid/view/ViewGroup$LayoutParams;
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->generateLayoutParams(Landroid/util/AttributeSet;)Lcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams;
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->getDecorToolbar(Landroid/view/View;)Lcom/android/internal/widget/DecorToolbar;
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->getTitle()Ljava/lang/CharSequence;
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->hasIcon()Z
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->init(Landroid/content/Context;)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->initFeature(I)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onApplyWindowInsets(Landroid/view/WindowInsets;)Landroid/view/WindowInsets;
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onDetachedFromWindow()V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onLayout(ZIIII)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onMeasure(II)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->onWindowVisibilityChanged(I)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->pullChildren()V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setIcon(I)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setUiOptions(I)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setWindowCallback(Landroid/view/Window$Callback;)V
-HSPLcom/android/internal/widget/ActionBarOverlayLayout;->setWindowTitle(Ljava/lang/CharSequence;)V
+HSPLcom/android/internal/view/InputBindResult;->getActivityViewToScreenMatrix()Landroid/graphics/Matrix;
+HSPLcom/android/internal/widget/BackgroundFallback;-><init>()V
 HSPLcom/android/internal/widget/BackgroundFallback;->draw(Landroid/view/ViewGroup;Landroid/view/ViewGroup;Landroid/graphics/Canvas;Landroid/view/View;Landroid/view/View;Landroid/view/View;)V
 HSPLcom/android/internal/widget/BackgroundFallback;->hasFallback()Z
-HSPLcom/android/internal/widget/BackgroundFallback;->setDrawable(Landroid/graphics/drawable/Drawable;)V
-HSPLcom/android/internal/widget/DialogTitle;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLcom/android/internal/widget/EditableInputConnection;->beginBatchEdit()Z
-HSPLcom/android/internal/widget/EditableInputConnection;->closeConnection()V
-HSPLcom/android/internal/widget/EditableInputConnection;->commitText(Ljava/lang/CharSequence;I)Z
-HSPLcom/android/internal/widget/EditableInputConnection;->endBatchEdit()Z
-HSPLcom/android/internal/widget/EditableInputConnection;->getEditable()Landroid/text/Editable;
-PLcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;->onCredentialVerified()V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getBoolean(Ljava/lang/String;ZI)Z
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getLong(Ljava/lang/String;JI)J
-HSPLcom/android/internal/widget/ILockSettings$Stub;-><init>()V
 HSPLcom/android/internal/widget/ILockSettings$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/widget/ILockSettings;
-HPLcom/android/internal/widget/ILockSettings$Stub;->getDefaultTransactionName(I)Ljava/lang/String;
-HSPLcom/android/internal/widget/ILockSettings$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$1;->onStrongAuthRequiredChanged(II)V
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker$H;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->getDefaultFlags(Landroid/content/Context;)I
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->getStrongAuthForUser(I)I
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->handleStrongAuthRequiredChanged(II)V
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->isTrustAllowedForUser(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
 HSPLcom/android/internal/widget/LockPatternUtils;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/widget/LockPatternUtils;->frpCredentialEnabled(Landroid/content/Context;)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->getBoolean(Ljava/lang/String;ZI)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->getDevicePolicyManager()Landroid/app/admin/DevicePolicyManager;
-HSPLcom/android/internal/widget/LockPatternUtils;->getEnabledTrustAgents(I)Ljava/util/List;
-HSPLcom/android/internal/widget/LockPatternUtils;->getKeyguardStoredPasswordQuality(I)I
+HSPLcom/android/internal/widget/LockPatternUtils;->getCredentialTypeForUser(I)I
 HSPLcom/android/internal/widget/LockPatternUtils;->getLockSettings()Lcom/android/internal/widget/ILockSettings;
-HSPLcom/android/internal/widget/LockPatternUtils;->getLong(Ljava/lang/String;JI)J
-HSPLcom/android/internal/widget/LockPatternUtils;->getOwnerInfo(I)Ljava/lang/String;
-HSPLcom/android/internal/widget/LockPatternUtils;->getPowerButtonInstantlyLocks(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->getString(Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/internal/widget/LockPatternUtils;->hasSecureLockScreen()Z
-HSPLcom/android/internal/widget/LockPatternUtils;->hasSeparateChallenge(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isLockPasswordEnabled(II)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isOwnerInfoEnabled(I)Z
-HPLcom/android/internal/widget/LockPatternUtils;->isPowerButtonInstantlyLocksEverChosen(I)Z
 HSPLcom/android/internal/widget/LockPatternUtils;->isSecure(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isSeparateProfileChallengeEnabled(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isTrustUsuallyManaged(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isVisiblePatternEnabled(I)Z
-HPLcom/android/internal/widget/LockPatternUtils;->isVisiblePatternEverChosen(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->registerStrongAuthTracker(Lcom/android/internal/widget/LockPatternUtils$StrongAuthTracker;)V
-HSPLcom/android/internal/widget/LockPatternUtils;->savedPasswordExists(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->savedPatternExists(I)Z
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper$1;-><init>(Lcom/android/internal/widget/ToolbarWidgetWrapper;)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;-><init>(Landroid/widget/Toolbar;ZI)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->dismissPopupMenus()V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getContext()Landroid/content/Context;
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getDisplayOptions()I
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getMenu()Landroid/view/Menu;
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getTitle()Ljava/lang/CharSequence;
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->getViewGroup()Landroid/view/ViewGroup;
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->hasIcon()Z
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->isSplit()Z
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDefaultNavigationContentDescription(I)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setDisplayOptions(I)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(I)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setIcon(Landroid/graphics/drawable/Drawable;)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuCallbacks(Lcom/android/internal/view/menu/MenuPresenter$Callback;Lcom/android/internal/view/menu/MenuBuilder$Callback;)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setMenuPrepared()V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setNavigationIcon(Landroid/graphics/drawable/Drawable;)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setWindowCallback(Landroid/view/Window$Callback;)V
-HSPLcom/android/internal/widget/ToolbarWidgetWrapper;->setWindowTitle(Ljava/lang/CharSequence;)V
-HSPLcom/android/internal/widget/VerifyCredentialResponse$1;-><init>()V
-HSPLcom/android/internal/widget/VerifyCredentialResponse;-><init>()V
-HSPLcom/android/internal/widget/VerifyCredentialResponse;-><init>(II[B)V
-PLcom/android/internal/widget/VerifyCredentialResponse;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLcom/android/internal/widget/LockscreenCredential;-><init>(I[B)V
+HSPLcom/android/internal/widget/ScrollBarUtils;->getThumbLength(IIII)I
+HSPLcom/android/internal/widget/ScrollBarUtils;->getThumbOffset(IIIII)I
 HSPLcom/android/okhttp/Address;-><init>(Ljava/lang/String;ILcom/android/okhttp/Dns;Ljavax/net/SocketFactory;Ljavax/net/ssl/SSLSocketFactory;Ljavax/net/ssl/HostnameVerifier;Lcom/android/okhttp/CertificatePinner;Lcom/android/okhttp/Authenticator;Ljava/net/Proxy;Ljava/util/List;Ljava/util/List;Ljava/net/ProxySelector;)V
 HSPLcom/android/okhttp/Address;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/okhttp/Address;->getCertificatePinner()Lcom/android/okhttp/CertificatePinner;
+HSPLcom/android/okhttp/Address;->getConnectionSpecs()Ljava/util/List;
+HSPLcom/android/okhttp/Address;->getDns()Lcom/android/okhttp/Dns;
+HSPLcom/android/okhttp/Address;->getHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;
+HSPLcom/android/okhttp/Address;->getProtocols()Ljava/util/List;
+HSPLcom/android/okhttp/Address;->getProxy()Ljava/net/Proxy;
+HSPLcom/android/okhttp/Address;->getProxySelector()Ljava/net/ProxySelector;
+HSPLcom/android/okhttp/Address;->getSocketFactory()Ljavax/net/SocketFactory;
+HSPLcom/android/okhttp/Address;->getSslSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
+HSPLcom/android/okhttp/Address;->getUriHost()Ljava/lang/String;
+HSPLcom/android/okhttp/Address;->getUriPort()I
 HSPLcom/android/okhttp/Address;->hashCode()I
-HSPLcom/android/okhttp/CacheControl$Builder;-><init>()V
-HSPLcom/android/okhttp/CacheControl$Builder;->build()Lcom/android/okhttp/CacheControl;
-HSPLcom/android/okhttp/CacheControl$Builder;->maxStale(ILjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/CacheControl$Builder;
-HSPLcom/android/okhttp/CacheControl$Builder;->noCache()Lcom/android/okhttp/CacheControl$Builder;
-HSPLcom/android/okhttp/CacheControl$Builder;->onlyIfCached()Lcom/android/okhttp/CacheControl$Builder;
-HSPLcom/android/okhttp/CacheControl;-><init>(Lcom/android/okhttp/CacheControl$Builder;)V
+HSPLcom/android/okhttp/Address;->url()Lcom/android/okhttp/HttpUrl;
+HSPLcom/android/okhttp/CacheControl;-><init>(ZZIIZZZIIZZLjava/lang/String;)V
+HSPLcom/android/okhttp/CacheControl;->onlyIfCached()Z
 HSPLcom/android/okhttp/CacheControl;->parse(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/CacheControl;
-HSPLcom/android/okhttp/CertificatePinner$Builder;-><init>()V
-HSPLcom/android/okhttp/CertificatePinner$Builder;->build()Lcom/android/okhttp/CertificatePinner;
-HSPLcom/android/okhttp/CipherSuite;-><init>(Ljava/lang/String;ILjava/lang/String;IIII)V
+HSPLcom/android/okhttp/ConfigAwareConnectionPool$1;-><init>(Lcom/android/okhttp/ConfigAwareConnectionPool;)V
 HSPLcom/android/okhttp/ConfigAwareConnectionPool$1;->onNetworkConfigurationChanged()V
-HSPLcom/android/okhttp/ConfigAwareConnectionPool;-><init>()V
+HSPLcom/android/okhttp/ConfigAwareConnectionPool;->access$002(Lcom/android/okhttp/ConfigAwareConnectionPool;Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/ConnectionPool;
 HSPLcom/android/okhttp/ConfigAwareConnectionPool;->get()Lcom/android/okhttp/ConnectionPool;
+HSPLcom/android/okhttp/ConfigAwareConnectionPool;->getInstance()Lcom/android/okhttp/ConfigAwareConnectionPool;
+HSPLcom/android/okhttp/ConnectionPool$1;-><init>(Lcom/android/okhttp/ConnectionPool;)V
 HSPLcom/android/okhttp/ConnectionPool$1;->run()V
 HSPLcom/android/okhttp/ConnectionPool;-><init>(IJ)V
 HSPLcom/android/okhttp/ConnectionPool;-><init>(IJLjava/util/concurrent/TimeUnit;)V
 HSPLcom/android/okhttp/ConnectionPool;->cleanup(J)J
+HSPLcom/android/okhttp/ConnectionPool;->connectionBecameIdle(Lcom/android/okhttp/internal/io/RealConnection;)Z
 HSPLcom/android/okhttp/ConnectionPool;->get(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/http/StreamAllocation;)Lcom/android/okhttp/internal/io/RealConnection;
 HSPLcom/android/okhttp/ConnectionPool;->pruneAndGetAllocationCount(Lcom/android/okhttp/internal/io/RealConnection;J)I
+HSPLcom/android/okhttp/ConnectionPool;->put(Lcom/android/okhttp/internal/io/RealConnection;)V
 HSPLcom/android/okhttp/ConnectionSpec$Builder;-><init>(Lcom/android/okhttp/ConnectionSpec;)V
-HSPLcom/android/okhttp/ConnectionSpec$Builder;-><init>(Z)V
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->allEnabledCipherSuites()Lcom/android/okhttp/ConnectionSpec$Builder;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->allEnabledTlsVersions()Lcom/android/okhttp/ConnectionSpec$Builder;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$000(Lcom/android/okhttp/ConnectionSpec$Builder;)Z
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$100(Lcom/android/okhttp/ConnectionSpec$Builder;)[Ljava/lang/String;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$200(Lcom/android/okhttp/ConnectionSpec$Builder;)[Ljava/lang/String;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->access$300(Lcom/android/okhttp/ConnectionSpec$Builder;)Z
 HSPLcom/android/okhttp/ConnectionSpec$Builder;->build()Lcom/android/okhttp/ConnectionSpec;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Lcom/android/okhttp/CipherSuite;)Lcom/android/okhttp/ConnectionSpec$Builder;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->supportsTlsExtensions(Z)Lcom/android/okhttp/ConnectionSpec$Builder;
-HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Lcom/android/okhttp/TlsVersion;)Lcom/android/okhttp/ConnectionSpec$Builder;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->cipherSuites([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
+HSPLcom/android/okhttp/ConnectionSpec$Builder;->tlsVersions([Ljava/lang/String;)Lcom/android/okhttp/ConnectionSpec$Builder;
+HSPLcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;)V
+HSPLcom/android/okhttp/ConnectionSpec;-><init>(Lcom/android/okhttp/ConnectionSpec$Builder;Lcom/android/okhttp/ConnectionSpec$1;)V
+HSPLcom/android/okhttp/ConnectionSpec;->access$400(Lcom/android/okhttp/ConnectionSpec;)Z
+HSPLcom/android/okhttp/ConnectionSpec;->access$500(Lcom/android/okhttp/ConnectionSpec;)[Ljava/lang/String;
+HSPLcom/android/okhttp/ConnectionSpec;->access$600(Lcom/android/okhttp/ConnectionSpec;)[Ljava/lang/String;
+HSPLcom/android/okhttp/ConnectionSpec;->access$700(Lcom/android/okhttp/ConnectionSpec;)Z
+HSPLcom/android/okhttp/ConnectionSpec;->apply(Ljavax/net/ssl/SSLSocket;Z)V
 HSPLcom/android/okhttp/ConnectionSpec;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/okhttp/ConnectionSpec;->hashCode()I
 HSPLcom/android/okhttp/ConnectionSpec;->isCompatible(Ljavax/net/ssl/SSLSocket;)Z
 HSPLcom/android/okhttp/ConnectionSpec;->supportedSpec(Ljavax/net/ssl/SSLSocket;Z)Lcom/android/okhttp/ConnectionSpec;
-HSPLcom/android/okhttp/ConnectionSpecs;->builder(Z)Lcom/android/okhttp/ConnectionSpec$Builder;
-HSPLcom/android/okhttp/Dns$1;-><init>()V
+HSPLcom/android/okhttp/ConnectionSpec;->supportsTlsExtensions()Z
+HSPLcom/android/okhttp/Dispatcher;-><init>()V
 HSPLcom/android/okhttp/Dns$1;->lookup(Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/okhttp/Handshake;-><init>(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
 HSPLcom/android/okhttp/Handshake;->get(Ljavax/net/ssl/SSLSession;)Lcom/android/okhttp/Handshake;
+HSPLcom/android/okhttp/Headers$Builder;-><init>()V
+HSPLcom/android/okhttp/Headers$Builder;->access$000(Lcom/android/okhttp/Headers$Builder;)Ljava/util/List;
+HSPLcom/android/okhttp/Headers$Builder;->add(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
 HSPLcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Headers$Builder;->addLenient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/Headers$Builder;->checkNameAndValue(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/okhttp/Headers$Builder;->removeAll(Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
-HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;-><init>(Lcom/android/okhttp/HttpHandler$1;)V
+HSPLcom/android/okhttp/Headers$Builder;->set(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V
+HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$1;)V
+HSPLcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/Headers;->name(I)Ljava/lang/String;
+HSPLcom/android/okhttp/Headers;->newBuilder()Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Headers;->size()I
+HSPLcom/android/okhttp/Headers;->value(I)Ljava/lang/String;
 HSPLcom/android/okhttp/HttpHandler;-><init>()V
 HSPLcom/android/okhttp/HttpHandler;->createHttpOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;
 HSPLcom/android/okhttp/HttpHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection;
-HSPLcom/android/okhttp/HttpUrl$Builder$ParseResult;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/okhttp/HttpUrl$Builder$ParseResult;->values()[Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
+HSPLcom/android/okhttp/HttpUrl$Builder;-><init>()V
+HSPLcom/android/okhttp/HttpUrl$Builder;->build()Lcom/android/okhttp/HttpUrl;
 HSPLcom/android/okhttp/HttpUrl$Builder;->canonicalizeHost(Ljava/lang/String;II)Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl$Builder;->containsInvalidHostnameAsciiCodes(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/HttpUrl$Builder;->domainToAscii(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/HttpUrl$Builder;->effectivePort()I
+HSPLcom/android/okhttp/HttpUrl$Builder;->encodedQuery(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
 HSPLcom/android/okhttp/HttpUrl$Builder;->host(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder;
+HSPLcom/android/okhttp/HttpUrl$Builder;->isDot(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/HttpUrl$Builder;->isDotDot(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/HttpUrl$Builder;->parse(Lcom/android/okhttp/HttpUrl;Ljava/lang/String;)Lcom/android/okhttp/HttpUrl$Builder$ParseResult;
 HSPLcom/android/okhttp/HttpUrl$Builder;->port(I)Lcom/android/okhttp/HttpUrl$Builder;
@@ -24766,27 +15251,40 @@
 HSPLcom/android/okhttp/HttpUrl$Builder;->schemeDelimiterOffset(Ljava/lang/String;II)I
 HSPLcom/android/okhttp/HttpUrl$Builder;->skipLeadingAsciiWhitespace(Ljava/lang/String;II)I
 HSPLcom/android/okhttp/HttpUrl$Builder;->skipTrailingAsciiWhitespace(Ljava/lang/String;II)I
+HSPLcom/android/okhttp/HttpUrl$Builder;->slashCount(Ljava/lang/String;II)I
 HSPLcom/android/okhttp/HttpUrl$Builder;->toString()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;)V
+HSPLcom/android/okhttp/HttpUrl;-><init>(Lcom/android/okhttp/HttpUrl$Builder;Lcom/android/okhttp/HttpUrl$1;)V
+HSPLcom/android/okhttp/HttpUrl;->access$200(Ljava/lang/String;IILjava/lang/String;)I
 HSPLcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;IILjava/lang/String;ZZZZ)Ljava/lang/String;
+HSPLcom/android/okhttp/HttpUrl;->canonicalize(Ljava/lang/String;Ljava/lang/String;ZZZZ)Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->decodeHexDigit(C)I
+HSPLcom/android/okhttp/HttpUrl;->defaultPort(Ljava/lang/String;)I
+HSPLcom/android/okhttp/HttpUrl;->delimiterOffset(Ljava/lang/String;IILjava/lang/String;)I
+HSPLcom/android/okhttp/HttpUrl;->encodedFragment()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->encodedPassword()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->encodedPath()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->encodedPathSegments()Ljava/util/List;
 HSPLcom/android/okhttp/HttpUrl;->encodedQuery()Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->encodedUsername()Ljava/lang/String;
+HSPLcom/android/okhttp/HttpUrl;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/okhttp/HttpUrl;->getChecked(Ljava/lang/String;)Lcom/android/okhttp/HttpUrl;
+HSPLcom/android/okhttp/HttpUrl;->hashCode()I
+HSPLcom/android/okhttp/HttpUrl;->host()Ljava/lang/String;
+HSPLcom/android/okhttp/HttpUrl;->isHttps()Z
 HSPLcom/android/okhttp/HttpUrl;->namesAndValuesToQueryString(Ljava/lang/StringBuilder;Ljava/util/List;)V
 HSPLcom/android/okhttp/HttpUrl;->newBuilder()Lcom/android/okhttp/HttpUrl$Builder;
+HSPLcom/android/okhttp/HttpUrl;->pathSegmentsToString(Ljava/lang/StringBuilder;Ljava/util/List;)V
 HSPLcom/android/okhttp/HttpUrl;->percentDecode(Lcom/android/okhttp/okio/Buffer;Ljava/lang/String;IIZ)V
 HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;IIZ)Ljava/lang/String;
+HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/lang/String;Z)Ljava/lang/String;
 HSPLcom/android/okhttp/HttpUrl;->percentDecode(Ljava/util/List;Z)Ljava/util/List;
+HSPLcom/android/okhttp/HttpUrl;->port()I
 HSPLcom/android/okhttp/HttpUrl;->queryStringToNamesAndValues(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/okhttp/HttpUrl;->uri()Ljava/net/URI;
 HSPLcom/android/okhttp/HttpsHandler;-><init>()V
 HSPLcom/android/okhttp/HttpsHandler;->createHttpsOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;
 HSPLcom/android/okhttp/HttpsHandler;->newOkUrlFactory(Ljava/net/Proxy;)Lcom/android/okhttp/OkUrlFactory;
-HSPLcom/android/okhttp/OkHttpClient$1;-><init>()V
 HSPLcom/android/okhttp/OkHttpClient$1;->addLenient(Lcom/android/okhttp/Headers$Builder;Ljava/lang/String;)V
 HSPLcom/android/okhttp/OkHttpClient$1;->apply(Lcom/android/okhttp/ConnectionSpec;Ljavax/net/ssl/SSLSocket;Z)V
 HSPLcom/android/okhttp/OkHttpClient$1;->connectionBecameIdle(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/internal/io/RealConnection;)Z
@@ -24820,153 +15318,337 @@
 HSPLcom/android/okhttp/OkHttpClient;->setConnectionPool(Lcom/android/okhttp/ConnectionPool;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setConnectionSpecs(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setFollowRedirects(Z)V
+HSPLcom/android/okhttp/OkHttpClient;->setFollowSslRedirects(Z)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setProtocols(Ljava/util/List;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setProxy(Ljava/net/Proxy;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setReadTimeout(JLjava/util/concurrent/TimeUnit;)V
 HSPLcom/android/okhttp/OkHttpClient;->setSslSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)Lcom/android/okhttp/OkHttpClient;
 HSPLcom/android/okhttp/OkHttpClient;->setWriteTimeout(JLjava/util/concurrent/TimeUnit;)V
+HSPLcom/android/okhttp/OkUrlFactories;->setUrlFilter(Lcom/android/okhttp/OkUrlFactory;Lcom/android/okhttp/internal/URLFilter;)V
+HSPLcom/android/okhttp/OkUrlFactory;-><init>(Lcom/android/okhttp/OkHttpClient;)V
+HSPLcom/android/okhttp/OkUrlFactory;->client()Lcom/android/okhttp/OkHttpClient;
+HSPLcom/android/okhttp/OkUrlFactory;->open(Ljava/net/URL;)Ljava/net/HttpURLConnection;
 HSPLcom/android/okhttp/OkUrlFactory;->open(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/HttpURLConnection;
-HSPLcom/android/okhttp/Protocol;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/okhttp/OkUrlFactory;->setUrlFilter(Lcom/android/okhttp/internal/URLFilter;)V
 HSPLcom/android/okhttp/Protocol;->get(Ljava/lang/String;)Lcom/android/okhttp/Protocol;
+HSPLcom/android/okhttp/Protocol;->toString()Ljava/lang/String;
+HSPLcom/android/okhttp/Request$Builder;-><init>()V
 HSPLcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;)V
+HSPLcom/android/okhttp/Request$Builder;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Request$1;)V
+HSPLcom/android/okhttp/Request$Builder;->access$000(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/HttpUrl;
+HSPLcom/android/okhttp/Request$Builder;->access$100(Lcom/android/okhttp/Request$Builder;)Ljava/lang/String;
+HSPLcom/android/okhttp/Request$Builder;->access$200(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Request$Builder;->access$300(Lcom/android/okhttp/Request$Builder;)Lcom/android/okhttp/RequestBody;
+HSPLcom/android/okhttp/Request$Builder;->access$400(Lcom/android/okhttp/Request$Builder;)Ljava/lang/Object;
 HSPLcom/android/okhttp/Request$Builder;->addHeader(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
 HSPLcom/android/okhttp/Request$Builder;->build()Lcom/android/okhttp/Request;
 HSPLcom/android/okhttp/Request$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Request$Builder;
 HSPLcom/android/okhttp/Request$Builder;->method(Ljava/lang/String;Lcom/android/okhttp/RequestBody;)Lcom/android/okhttp/Request$Builder;
+HSPLcom/android/okhttp/Request$Builder;->url(Lcom/android/okhttp/HttpUrl;)Lcom/android/okhttp/Request$Builder;
 HSPLcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;)V
-HSPLcom/android/okhttp/RequestBody;->create(Lcom/android/okhttp/MediaType;[B)Lcom/android/okhttp/RequestBody;
+HSPLcom/android/okhttp/Request;-><init>(Lcom/android/okhttp/Request$Builder;Lcom/android/okhttp/Request$1;)V
+HSPLcom/android/okhttp/Request;->access$1000(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Headers;
+HSPLcom/android/okhttp/Request;->access$600(Lcom/android/okhttp/Request;)Lcom/android/okhttp/HttpUrl;
+HSPLcom/android/okhttp/Request;->access$700(Lcom/android/okhttp/Request;)Ljava/lang/String;
+HSPLcom/android/okhttp/Request;->access$800(Lcom/android/okhttp/Request;)Lcom/android/okhttp/RequestBody;
+HSPLcom/android/okhttp/Request;->access$900(Lcom/android/okhttp/Request;)Ljava/lang/Object;
+HSPLcom/android/okhttp/Request;->cacheControl()Lcom/android/okhttp/CacheControl;
+HSPLcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/Request;->headers()Lcom/android/okhttp/Headers;
+HSPLcom/android/okhttp/Request;->httpUrl()Lcom/android/okhttp/HttpUrl;
+HSPLcom/android/okhttp/Request;->isHttps()Z
+HSPLcom/android/okhttp/Request;->method()Ljava/lang/String;
+HSPLcom/android/okhttp/Request;->newBuilder()Lcom/android/okhttp/Request$Builder;
+HSPLcom/android/okhttp/Response$Builder;-><init>()V
 HSPLcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;)V
+HSPLcom/android/okhttp/Response$Builder;-><init>(Lcom/android/okhttp/Response;Lcom/android/okhttp/Response$1;)V
+HSPLcom/android/okhttp/Response$Builder;->access$000(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/Response$Builder;->access$100(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Protocol;
+HSPLcom/android/okhttp/Response$Builder;->access$200(Lcom/android/okhttp/Response$Builder;)I
+HSPLcom/android/okhttp/Response$Builder;->access$300(Lcom/android/okhttp/Response$Builder;)Ljava/lang/String;
+HSPLcom/android/okhttp/Response$Builder;->access$400(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Handshake;
+HSPLcom/android/okhttp/Response$Builder;->access$500(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Headers$Builder;
+HSPLcom/android/okhttp/Response$Builder;->access$600(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/ResponseBody;
+HSPLcom/android/okhttp/Response$Builder;->access$700(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response$Builder;->access$800(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response$Builder;->access$900(Lcom/android/okhttp/Response$Builder;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response$Builder;->body(Lcom/android/okhttp/ResponseBody;)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response$Builder;->build()Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response$Builder;->cacheResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response$Builder;->checkSupportResponse(Ljava/lang/String;Lcom/android/okhttp/Response;)V
+HSPLcom/android/okhttp/Response$Builder;->code(I)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response$Builder;->handshake(Lcom/android/okhttp/Handshake;)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response$Builder;->header(Ljava/lang/String;Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response$Builder;->headers(Lcom/android/okhttp/Headers;)Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response$Builder;->message(Ljava/lang/String;)Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response$Builder;->networkResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response$Builder;->priorResponse(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response$Builder;->protocol(Lcom/android/okhttp/Protocol;)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response$Builder;->request(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;)V
+HSPLcom/android/okhttp/Response;-><init>(Lcom/android/okhttp/Response$Builder;Lcom/android/okhttp/Response$1;)V
+HSPLcom/android/okhttp/Response;->access$1100(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/Response;->access$1200(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Protocol;
+HSPLcom/android/okhttp/Response;->access$1300(Lcom/android/okhttp/Response;)I
+HSPLcom/android/okhttp/Response;->access$1400(Lcom/android/okhttp/Response;)Ljava/lang/String;
+HSPLcom/android/okhttp/Response;->access$1500(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Handshake;
+HSPLcom/android/okhttp/Response;->access$1600(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Headers;
+HSPLcom/android/okhttp/Response;->access$1700(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody;
+HSPLcom/android/okhttp/Response;->access$1800(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response;->access$1900(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response;->access$2000(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/Response;->body()Lcom/android/okhttp/ResponseBody;
+HSPLcom/android/okhttp/Response;->code()I
+HSPLcom/android/okhttp/Response;->header(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/Response;->header(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/Response;->headers()Lcom/android/okhttp/Headers;
+HSPLcom/android/okhttp/Response;->message()Ljava/lang/String;
+HSPLcom/android/okhttp/Response;->newBuilder()Lcom/android/okhttp/Response$Builder;
+HSPLcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol;
+HSPLcom/android/okhttp/Response;->request()Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/ResponseBody;-><init>()V
+HSPLcom/android/okhttp/ResponseBody;->byteStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/Route;-><init>(Lcom/android/okhttp/Address;Ljava/net/Proxy;Ljava/net/InetSocketAddress;)V
+HSPLcom/android/okhttp/Route;->getAddress()Lcom/android/okhttp/Address;
+HSPLcom/android/okhttp/Route;->getProxy()Ljava/net/Proxy;
+HSPLcom/android/okhttp/Route;->getSocketAddress()Ljava/net/InetSocketAddress;
 HSPLcom/android/okhttp/Route;->hashCode()I
-HSPLcom/android/okhttp/TlsVersion;-><init>(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/okhttp/Route;->requiresTunnel()Z
+HSPLcom/android/okhttp/internal/ConnectionSpecSelector;-><init>(Ljava/util/List;)V
 HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->configureSecureSocket(Ljavax/net/ssl/SSLSocket;)Lcom/android/okhttp/ConnectionSpec;
-HSPLcom/android/okhttp/internal/DiskLruCache$4;-><init>()V
-HSPLcom/android/okhttp/internal/OptionalMethod;-><init>(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)V
-HSPLcom/android/okhttp/internal/Platform;-><init>()V
+HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->connectionFailed(Ljava/io/IOException;)Z
+HSPLcom/android/okhttp/internal/ConnectionSpecSelector;->isFallbackPossible(Ljavax/net/ssl/SSLSocket;)Z
+HSPLcom/android/okhttp/internal/OptionalMethod;->getMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;
+HSPLcom/android/okhttp/internal/OptionalMethod;->getPublicMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
+HSPLcom/android/okhttp/internal/OptionalMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptional(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptionalWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/okhttp/internal/OptionalMethod;->invokeWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/okhttp/internal/OptionalMethod;->isSupported(Ljava/lang/Object;)Z
 HSPLcom/android/okhttp/internal/Platform;->afterHandshake(Ljavax/net/ssl/SSLSocket;)V
 HSPLcom/android/okhttp/internal/Platform;->configureTlsExtensions(Ljavax/net/ssl/SSLSocket;Ljava/lang/String;Ljava/util/List;)V
 HSPLcom/android/okhttp/internal/Platform;->connectSocket(Ljava/net/Socket;Ljava/net/InetSocketAddress;I)V
-HSPLcom/android/okhttp/internal/Platform;->get()Lcom/android/okhttp/internal/Platform;
-HSPLcom/android/okhttp/internal/Platform;->getPrefix()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/Platform;->getProtocolIds(Ljava/util/List;)[Ljava/lang/String;
 HSPLcom/android/okhttp/internal/Platform;->getSelectedProtocol(Ljavax/net/ssl/SSLSocket;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/Platform;->isPlatformSocket(Ljavax/net/ssl/SSLSocket;)Z
+HSPLcom/android/okhttp/internal/RouteDatabase;-><init>()V
 HSPLcom/android/okhttp/internal/RouteDatabase;->connected(Lcom/android/okhttp/Route;)V
+HSPLcom/android/okhttp/internal/RouteDatabase;->failed(Lcom/android/okhttp/Route;)V
 HSPLcom/android/okhttp/internal/RouteDatabase;->shouldPostpone(Lcom/android/okhttp/Route;)Z
+HSPLcom/android/okhttp/internal/Util$1;-><init>(Ljava/lang/String;Z)V
 HSPLcom/android/okhttp/internal/Util$1;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
-HSPLcom/android/okhttp/internal/Util;->closeQuietly(Ljava/net/Socket;)V
-HSPLcom/android/okhttp/internal/Util;->hostHeader(Lcom/android/okhttp/HttpUrl;Z)Ljava/lang/String;
-HSPLcom/android/okhttp/internal/Util;->immutableList([Ljava/lang/Object;)Ljava/util/List;
-HSPLcom/android/okhttp/internal/Util;->toHumanReadableAscii(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/internal/http/AuthenticatorAdapter;-><init>()V
+HSPLcom/android/okhttp/internal/Util;->checkOffsetAndCount(JJJ)V
+HSPLcom/android/okhttp/internal/Util;->equal(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLcom/android/okhttp/internal/Util;->immutableList(Ljava/util/List;)Ljava/util/List;
+HSPLcom/android/okhttp/internal/Util;->threadFactory(Ljava/lang/String;Z)Ljava/util/concurrent/ThreadFactory;
 HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;-><init>(JLcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
+HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->get()Lcom/android/okhttp/internal/http/CacheStrategy;
 HSPLcom/android/okhttp/internal/http/CacheStrategy$Factory;->getCandidate()Lcom/android/okhttp/internal/http/CacheStrategy;
+HSPLcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;)V
+HSPLcom/android/okhttp/internal/http/CacheStrategy;-><init>(Lcom/android/okhttp/Request;Lcom/android/okhttp/Response;Lcom/android/okhttp/internal/http/CacheStrategy$1;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$1;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->endOfInput()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->timeout()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/HttpEngine;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->close()V
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J
 HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSource;->readChunkSize()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;J)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;JLcom/android/okhttp/internal/http/Http1xStream$1;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->close()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->flush()V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
+HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;J)V
 HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;->close()V
 HSPLcom/android/okhttp/internal/http/Http1xStream$FixedLengthSource;->read(Lcom/android/okhttp/okio/Buffer;J)J
+HSPLcom/android/okhttp/internal/http/Http1xStream;-><init>(Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/okio/BufferedSource;Lcom/android/okhttp/okio/BufferedSink;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$300(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSink;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$400(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/okio/ForwardingTimeout;)V
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$500(Lcom/android/okhttp/internal/http/Http1xStream;)I
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$502(Lcom/android/okhttp/internal/http/Http1xStream;I)I
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$600(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSource;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->access$700(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/internal/http/StreamAllocation;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->detachTimeout(Lcom/android/okhttp/okio/ForwardingTimeout;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream;->finishRequest()V
 HSPLcom/android/okhttp/internal/http/Http1xStream;->getTransferStream(Lcom/android/okhttp/Response;)Lcom/android/okhttp/okio/Source;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSource(Lcom/android/okhttp/internal/http/HttpEngine;)Lcom/android/okhttp/okio/Source;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSink(J)Lcom/android/okhttp/okio/Sink;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->newFixedLengthSource(J)Lcom/android/okhttp/okio/Source;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->openResponseBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/ResponseBody;
+HSPLcom/android/okhttp/internal/http/Http1xStream;->readHeaders()Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->readResponse()Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->readResponseHeaders()Lcom/android/okhttp/Response$Builder;
 HSPLcom/android/okhttp/internal/http/Http1xStream;->setHttpEngine(Lcom/android/okhttp/internal/http/HttpEngine;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequest(Lcom/android/okhttp/Headers;Ljava/lang/String;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequestBody(Lcom/android/okhttp/internal/http/RetryableSink;)V
 HSPLcom/android/okhttp/internal/http/Http1xStream;->writeRequestHeaders(Lcom/android/okhttp/Request;)V
-HSPLcom/android/okhttp/internal/http/HttpDate$1;-><init>()V
-HSPLcom/android/okhttp/internal/http/HttpEngine$1;-><init>()V
 HSPLcom/android/okhttp/internal/http/HttpEngine;-><init>(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;ZZZLcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)V
 HSPLcom/android/okhttp/internal/http/HttpEngine;->cacheWritingResponse(Lcom/android/okhttp/internal/http/CacheRequest;Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->cancel()V
+HSPLcom/android/okhttp/internal/http/HttpEngine;->close()Lcom/android/okhttp/internal/http/StreamAllocation;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->connect()Lcom/android/okhttp/internal/http/HttpStream;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->createAddress(Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/Request;)Lcom/android/okhttp/Address;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->followUpRequest()Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->getBufferedRequestBody()Lcom/android/okhttp/okio/BufferedSink;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->getConnection()Lcom/android/okhttp/Connection;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->getRequestBody()Lcom/android/okhttp/okio/Sink;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->hasBody(Lcom/android/okhttp/Response;)Z
+HSPLcom/android/okhttp/internal/http/HttpEngine;->hasResponse()Z
 HSPLcom/android/okhttp/internal/http/HttpEngine;->maybeCache()V
 HSPLcom/android/okhttp/internal/http/HttpEngine;->networkRequest(Lcom/android/okhttp/Request;)Lcom/android/okhttp/Request;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->permitsRequestBody(Lcom/android/okhttp/Request;)Z
 HSPLcom/android/okhttp/internal/http/HttpEngine;->readNetworkResponse()Lcom/android/okhttp/Response;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->readResponse()V
+HSPLcom/android/okhttp/internal/http/HttpEngine;->receiveHeaders(Lcom/android/okhttp/Headers;)V
+HSPLcom/android/okhttp/internal/http/HttpEngine;->recover(Lcom/android/okhttp/internal/http/RouteException;)Lcom/android/okhttp/internal/http/HttpEngine;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->releaseStreamAllocation()V
 HSPLcom/android/okhttp/internal/http/HttpEngine;->sendRequest()V
+HSPLcom/android/okhttp/internal/http/HttpEngine;->stripBody(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
 HSPLcom/android/okhttp/internal/http/HttpEngine;->unzip(Lcom/android/okhttp/Response;)Lcom/android/okhttp/Response;
+HSPLcom/android/okhttp/internal/http/HttpEngine;->writingRequestHeaders()V
 HSPLcom/android/okhttp/internal/http/HttpMethod;->permitsRequestBody(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/internal/http/HttpMethod;->requiresRequestBody(Ljava/lang/String;)Z
-HSPLcom/android/okhttp/internal/http/OkHeaders$1;-><init>()V
 HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/okhttp/internal/http/OkHeaders$1;->compare(Ljava/lang/String;Ljava/lang/String;)I
-HSPLcom/android/okhttp/internal/http/OkHeaders;->stringToLong(Ljava/lang/String;)J
-HSPLcom/android/okhttp/internal/http/OkHeaders;->toMultimap(Lcom/android/okhttp/Headers;Ljava/lang/String;)Ljava/util/Map;
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Headers;)J
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Request;)J
+HSPLcom/android/okhttp/internal/http/OkHeaders;->contentLength(Lcom/android/okhttp/Response;)J
+HSPLcom/android/okhttp/internal/http/RealResponseBody;-><init>(Lcom/android/okhttp/Headers;Lcom/android/okhttp/okio/BufferedSource;)V
 HSPLcom/android/okhttp/internal/http/RealResponseBody;->source()Lcom/android/okhttp/okio/BufferedSource;
 HSPLcom/android/okhttp/internal/http/RequestLine;->get(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/http/RequestLine;->includeAuthorityInRequestLine(Lcom/android/okhttp/Request;Ljava/net/Proxy$Type;)Z
 HSPLcom/android/okhttp/internal/http/RequestLine;->requestPath(Lcom/android/okhttp/HttpUrl;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/http/RetryableSink;-><init>()V
+HSPLcom/android/okhttp/internal/http/RetryableSink;-><init>(I)V
 HSPLcom/android/okhttp/internal/http/RetryableSink;->close()V
+HSPLcom/android/okhttp/internal/http/RetryableSink;->contentLength()J
 HSPLcom/android/okhttp/internal/http/RetryableSink;->flush()V
 HSPLcom/android/okhttp/internal/http/RetryableSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
+HSPLcom/android/okhttp/internal/http/RetryableSink;->writeToSocket(Lcom/android/okhttp/okio/Sink;)V
+HSPLcom/android/okhttp/internal/http/RouteException;-><init>(Ljava/io/IOException;)V
+HSPLcom/android/okhttp/internal/http/RouteException;->getLastConnectException()Ljava/io/IOException;
 HSPLcom/android/okhttp/internal/http/RouteSelector;-><init>(Lcom/android/okhttp/Address;Lcom/android/okhttp/internal/RouteDatabase;)V
+HSPLcom/android/okhttp/internal/http/RouteSelector;->connectFailed(Lcom/android/okhttp/Route;Ljava/io/IOException;)V
+HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNext()Z
+HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextInetSocketAddress()Z
+HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextPostponed()Z
+HSPLcom/android/okhttp/internal/http/RouteSelector;->hasNextProxy()Z
 HSPLcom/android/okhttp/internal/http/RouteSelector;->next()Lcom/android/okhttp/Route;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->nextInetSocketAddress()Ljava/net/InetSocketAddress;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->nextProxy()Ljava/net/Proxy;
 HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextInetSocketAddress(Ljava/net/Proxy;)V
 HSPLcom/android/okhttp/internal/http/RouteSelector;->resetNextProxy(Lcom/android/okhttp/HttpUrl;Ljava/net/Proxy;)V
+HSPLcom/android/okhttp/internal/http/StatusLine;-><init>(Lcom/android/okhttp/Protocol;ILjava/lang/String;)V
+HSPLcom/android/okhttp/internal/http/StatusLine;->get(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/StatusLine;
 HSPLcom/android/okhttp/internal/http/StatusLine;->parse(Ljava/lang/String;)Lcom/android/okhttp/internal/http/StatusLine;
+HSPLcom/android/okhttp/internal/http/StatusLine;->toString()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/http/StreamAllocation;-><init>(Lcom/android/okhttp/ConnectionPool;Lcom/android/okhttp/Address;)V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->acquire(Lcom/android/okhttp/internal/io/RealConnection;)V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->cancel()V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->connection()Lcom/android/okhttp/internal/io/RealConnection;
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed()V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->connectionFailed(Ljava/io/IOException;)V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->deallocate(ZZZ)V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->findConnection(IIIZ)Lcom/android/okhttp/internal/io/RealConnection;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->findHealthyConnection(IIIZZ)Lcom/android/okhttp/internal/io/RealConnection;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->newStream(IIIZZ)Lcom/android/okhttp/internal/http/HttpStream;
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->noNewStreams()V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->recover(Lcom/android/okhttp/internal/http/RouteException;)Z
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->release()V
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->release(Lcom/android/okhttp/internal/io/RealConnection;)V
+HSPLcom/android/okhttp/internal/http/StreamAllocation;->routeDatabase()Lcom/android/okhttp/internal/RouteDatabase;
 HSPLcom/android/okhttp/internal/http/StreamAllocation;->streamFinished(Lcom/android/okhttp/internal/http/HttpStream;)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;-><init>(Ljava/net/HttpURLConnection;)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->connect()V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->disconnect()V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentEncoding()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentLength()I
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderFields()Ljava/util/Map;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getInputStream()Ljava/io/InputStream;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getOutputStream()Ljava/io/OutputStream;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseCode()I
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getResponseMessage()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getURL()Ljava/net/URL;
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setChunkedStreamingMode(I)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setConnectTimeout(I)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoInput(Z)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setDoOutput(Z)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setFixedLengthStreamingMode(I)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setInstanceFollowRedirects(Z)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setReadTimeout(I)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setRequestMethod(Ljava/lang/String;)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setUseCaches(Z)V
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;-><init>(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;)V
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;-><init>(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/URLFilter;)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->connect()V
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->defaultUserAgent()Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->disconnect()V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->execute(Z)Z
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderFields()Ljava/util/Map;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaders()Lcom/android/okhttp/Headers;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getInputStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream;
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponse()Lcom/android/okhttp/internal/http/HttpEngine;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseCode()I
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getResponseMessage()Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->initHttpEngine()V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->newHttpEngine(Ljava/lang/String;Lcom/android/okhttp/internal/http/StreamAllocation;Lcom/android/okhttp/internal/http/RetryableSink;Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/HttpEngine;
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->responseSourceHeader(Lcom/android/okhttp/Response;)Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setConnectTimeout(I)V
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setFixedLengthStreamingMode(I)V
+HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setFixedLengthStreamingMode(J)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setInstanceFollowRedirects(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setReadTimeout(I)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V
 HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;-><init>(Lcom/android/okhttp/internal/huc/HttpURLConnectionImpl;)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;-><init>(Ljava/net/URL;Lcom/android/okhttp/OkHttpClient;Lcom/android/okhttp/internal/URLFilter;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->addRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->connect()V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->disconnect()V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentEncoding()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentLength()I
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderField(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderFields()Ljava/util/Map;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getInputStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getOutputStream()Ljava/io/OutputStream;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseCode()I
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getResponseMessage()Ljava/lang/String;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getURL()Ljava/net/URL;
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setChunkedStreamingMode(I)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setConnectTimeout(I)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoInput(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setDoOutput(Z)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setFixedLengthStreamingMode(I)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setInstanceFollowRedirects(Z)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setReadTimeout(I)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setRequestMethod(Ljava/lang/String;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setRequestProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V
 HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setUseCaches(Z)V
-HSPLcom/android/okhttp/internal/io/FileSystem$1;-><init>()V
+HSPLcom/android/okhttp/internal/io/RealConnection;-><init>(Lcom/android/okhttp/Route;)V
+HSPLcom/android/okhttp/internal/io/RealConnection;->allocationLimit()I
 HSPLcom/android/okhttp/internal/io/RealConnection;->connect(IIILjava/util/List;Z)V
 HSPLcom/android/okhttp/internal/io/RealConnection;->connectSocket(IIILcom/android/okhttp/internal/ConnectionSpecSelector;)V
 HSPLcom/android/okhttp/internal/io/RealConnection;->connectTls(IILcom/android/okhttp/internal/ConnectionSpecSelector;)V
+HSPLcom/android/okhttp/internal/io/RealConnection;->getHandshake()Lcom/android/okhttp/Handshake;
+HSPLcom/android/okhttp/internal/io/RealConnection;->getRoute()Lcom/android/okhttp/Route;
+HSPLcom/android/okhttp/internal/io/RealConnection;->getSocket()Ljava/net/Socket;
 HSPLcom/android/okhttp/internal/io/RealConnection;->isHealthy(Z)Z
-HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;-><init>()V
-HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->getSubjectAltNames(Ljava/security/cert/X509Certificate;I)Ljava/util/List;
+HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verify(Ljava/lang/String;Ljavax/net/ssl/SSLSession;)Z
+HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyAsIpAddress(Ljava/lang/String;)Z
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/okhttp/internal/tls/OkHostnameVerifier;->verifyHostName(Ljava/lang/String;Ljava/security/cert/X509Certificate;)Z
 HSPLcom/android/okhttp/okio/AsyncTimeout$1;->flush()V
@@ -24974,31 +15656,54 @@
 HSPLcom/android/okhttp/okio/AsyncTimeout$1;->write(Lcom/android/okhttp/okio/Buffer;J)V
 HSPLcom/android/okhttp/okio/AsyncTimeout$2;->read(Lcom/android/okhttp/okio/Buffer;J)J
 HSPLcom/android/okhttp/okio/AsyncTimeout$2;->timeout()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/AsyncTimeout$Watchdog;-><init>()V
 HSPLcom/android/okhttp/okio/AsyncTimeout$Watchdog;->run()V
+HSPLcom/android/okhttp/okio/AsyncTimeout;-><init>()V
+HSPLcom/android/okhttp/okio/AsyncTimeout;->access$000()Lcom/android/okhttp/okio/AsyncTimeout;
 HSPLcom/android/okhttp/okio/AsyncTimeout;->awaitTimeout()Lcom/android/okhttp/okio/AsyncTimeout;
 HSPLcom/android/okhttp/okio/AsyncTimeout;->cancelScheduledTimeout(Lcom/android/okhttp/okio/AsyncTimeout;)Z
 HSPLcom/android/okhttp/okio/AsyncTimeout;->enter()V
+HSPLcom/android/okhttp/okio/AsyncTimeout;->exit()Z
+HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Ljava/io/IOException;)Ljava/io/IOException;
+HSPLcom/android/okhttp/okio/AsyncTimeout;->exit(Z)V
+HSPLcom/android/okhttp/okio/AsyncTimeout;->remainingNanos(J)J
 HSPLcom/android/okhttp/okio/AsyncTimeout;->scheduleTimeout(Lcom/android/okhttp/okio/AsyncTimeout;JZ)V
+HSPLcom/android/okhttp/okio/Buffer;-><init>()V
 HSPLcom/android/okhttp/okio/Buffer;->clear()V
+HSPLcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J
 HSPLcom/android/okhttp/okio/Buffer;->copyTo(Lcom/android/okhttp/okio/Buffer;JJ)Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/Buffer;->exhausted()Z
 HSPLcom/android/okhttp/okio/Buffer;->getByte(J)B
 HSPLcom/android/okhttp/okio/Buffer;->indexOf(BJ)J
 HSPLcom/android/okhttp/okio/Buffer;->read(Lcom/android/okhttp/okio/Buffer;J)J
 HSPLcom/android/okhttp/okio/Buffer;->read([BII)I
 HSPLcom/android/okhttp/okio/Buffer;->readByte()B
+HSPLcom/android/okhttp/okio/Buffer;->readByteArray()[B
+HSPLcom/android/okhttp/okio/Buffer;->readByteArray(J)[B
+HSPLcom/android/okhttp/okio/Buffer;->readFully([B)V
 HSPLcom/android/okhttp/okio/Buffer;->readHexadecimalUnsignedLong()J
 HSPLcom/android/okhttp/okio/Buffer;->readInt()I
+HSPLcom/android/okhttp/okio/Buffer;->readIntLe()I
 HSPLcom/android/okhttp/okio/Buffer;->readShort()S
 HSPLcom/android/okhttp/okio/Buffer;->readString(JLjava/nio/charset/Charset;)Ljava/lang/String;
 HSPLcom/android/okhttp/okio/Buffer;->readUtf8()Ljava/lang/String;
+HSPLcom/android/okhttp/okio/Buffer;->readUtf8(J)Ljava/lang/String;
 HSPLcom/android/okhttp/okio/Buffer;->readUtf8Line(J)Ljava/lang/String;
+HSPLcom/android/okhttp/okio/Buffer;->size()J
 HSPLcom/android/okhttp/okio/Buffer;->skip(J)V
 HSPLcom/android/okhttp/okio/Buffer;->writableSegment(I)Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Buffer;->write(Lcom/android/okhttp/okio/Buffer;J)V
 HSPLcom/android/okhttp/okio/Buffer;->write([BII)Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer;
+HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;II)Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/Buffer;->writeUtf8CodePoint(I)Lcom/android/okhttp/okio/Buffer;
-HSPLcom/android/okhttp/okio/ByteString;->of([B)Lcom/android/okhttp/okio/ByteString;
+HSPLcom/android/okhttp/okio/ForwardingTimeout;-><init>(Lcom/android/okhttp/okio/Timeout;)V
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->delegate()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->hasDeadline()Z
+HSPLcom/android/okhttp/okio/ForwardingTimeout;->setDelegate(Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/ForwardingTimeout;
 HSPLcom/android/okhttp/okio/GzipSource;-><init>(Lcom/android/okhttp/okio/Source;)V
 HSPLcom/android/okhttp/okio/GzipSource;->checkEqual(Ljava/lang/String;II)V
 HSPLcom/android/okhttp/okio/GzipSource;->close()V
@@ -25006,31 +15711,37 @@
 HSPLcom/android/okhttp/okio/GzipSource;->consumeTrailer()V
 HSPLcom/android/okhttp/okio/GzipSource;->read(Lcom/android/okhttp/okio/Buffer;J)J
 HSPLcom/android/okhttp/okio/GzipSource;->updateCrc(Lcom/android/okhttp/okio/Buffer;JJ)V
+HSPLcom/android/okhttp/okio/InflaterSource;-><init>(Lcom/android/okhttp/okio/BufferedSource;Ljava/util/zip/Inflater;)V
+HSPLcom/android/okhttp/okio/InflaterSource;->close()V
 HSPLcom/android/okhttp/okio/InflaterSource;->read(Lcom/android/okhttp/okio/Buffer;J)J
 HSPLcom/android/okhttp/okio/InflaterSource;->refill()Z
+HSPLcom/android/okhttp/okio/InflaterSource;->releaseInflatedBytes()V
 HSPLcom/android/okhttp/okio/Okio$1;->flush()V
 HSPLcom/android/okhttp/okio/Okio$1;->write(Lcom/android/okhttp/okio/Buffer;J)V
 HSPLcom/android/okhttp/okio/Okio$2;->read(Lcom/android/okhttp/okio/Buffer;J)J
-HSPLcom/android/okhttp/okio/Okio;->buffer(Lcom/android/okhttp/okio/Sink;)Lcom/android/okhttp/okio/BufferedSink;
-HSPLcom/android/okhttp/okio/Okio;->buffer(Lcom/android/okhttp/okio/Source;)Lcom/android/okhttp/okio/BufferedSource;
-HSPLcom/android/okhttp/okio/Okio;->sink(Ljava/net/Socket;)Lcom/android/okhttp/okio/Sink;
-HSPLcom/android/okhttp/okio/Okio;->source(Ljava/net/Socket;)Lcom/android/okhttp/okio/Source;
+HSPLcom/android/okhttp/okio/RealBufferedSink$1;-><init>(Lcom/android/okhttp/okio/RealBufferedSink;)V
 HSPLcom/android/okhttp/okio/RealBufferedSink$1;->close()V
 HSPLcom/android/okhttp/okio/RealBufferedSink$1;->flush()V
 HSPLcom/android/okhttp/okio/RealBufferedSink$1;->write([BII)V
+HSPLcom/android/okhttp/okio/RealBufferedSink;->access$000(Lcom/android/okhttp/okio/RealBufferedSink;)Z
 HSPLcom/android/okhttp/okio/RealBufferedSink;->buffer()Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->close()V
+HSPLcom/android/okhttp/okio/RealBufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->flush()V
 HSPLcom/android/okhttp/okio/RealBufferedSink;->outputStream()Ljava/io/OutputStream;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->timeout()Lcom/android/okhttp/okio/Timeout;
 HSPLcom/android/okhttp/okio/RealBufferedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
 HSPLcom/android/okhttp/okio/RealBufferedSink;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/BufferedSink;
+HSPLcom/android/okhttp/okio/RealBufferedSource$1;-><init>(Lcom/android/okhttp/okio/RealBufferedSource;)V
 HSPLcom/android/okhttp/okio/RealBufferedSource$1;->available()I
 HSPLcom/android/okhttp/okio/RealBufferedSource$1;->close()V
+HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read()I
 HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read([BII)I
+HSPLcom/android/okhttp/okio/RealBufferedSource;->access$000(Lcom/android/okhttp/okio/RealBufferedSource;)Z
 HSPLcom/android/okhttp/okio/RealBufferedSource;->buffer()Lcom/android/okhttp/okio/Buffer;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->close()V
 HSPLcom/android/okhttp/okio/RealBufferedSource;->exhausted()Z
+HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(B)J
 HSPLcom/android/okhttp/okio/RealBufferedSource;->indexOf(BJ)J
 HSPLcom/android/okhttp/okio/RealBufferedSource;->inputStream()Ljava/io/InputStream;
 HSPLcom/android/okhttp/okio/RealBufferedSource;->read(Lcom/android/okhttp/okio/Buffer;J)J
@@ -25042,635 +15753,102 @@
 HSPLcom/android/okhttp/okio/RealBufferedSource;->require(J)V
 HSPLcom/android/okhttp/okio/RealBufferedSource;->skip(J)V
 HSPLcom/android/okhttp/okio/RealBufferedSource;->timeout()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/Segment;-><init>()V
+HSPLcom/android/okhttp/okio/Segment;-><init>(Lcom/android/okhttp/okio/Segment;)V
+HSPLcom/android/okhttp/okio/Segment;-><init>([BII)V
 HSPLcom/android/okhttp/okio/Segment;->compact()V
+HSPLcom/android/okhttp/okio/Segment;->pop()Lcom/android/okhttp/okio/Segment;
+HSPLcom/android/okhttp/okio/Segment;->push(Lcom/android/okhttp/okio/Segment;)Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Segment;->split(I)Lcom/android/okhttp/okio/Segment;
 HSPLcom/android/okhttp/okio/Segment;->writeTo(Lcom/android/okhttp/okio/Segment;I)V
 HSPLcom/android/okhttp/okio/SegmentPool;->recycle(Lcom/android/okhttp/okio/Segment;)V
 HSPLcom/android/okhttp/okio/SegmentPool;->take()Lcom/android/okhttp/okio/Segment;
-HSPLcom/android/okhttp/okio/Timeout$1;-><init>()V
+HSPLcom/android/okhttp/okio/Timeout;-><init>()V
 HSPLcom/android/okhttp/okio/Timeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
 HSPLcom/android/okhttp/okio/Timeout;->clearTimeout()Lcom/android/okhttp/okio/Timeout;
+HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J
+HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
 HSPLcom/android/okhttp/okio/Timeout;->hasDeadline()Z
 HSPLcom/android/okhttp/okio/Timeout;->throwIfReached()V
 HSPLcom/android/okhttp/okio/Timeout;->timeout(JLjava/util/concurrent/TimeUnit;)Lcom/android/okhttp/okio/Timeout;
 HSPLcom/android/okhttp/okio/Timeout;->timeoutNanos()J
-HSPLcom/android/okhttp/okio/Util;->checkOffsetAndCount(JJJ)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;-><init>([BI)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->fromInputStream(ILjava/io/InputStream;)Lcom/android/org/bouncycastle/asn1/ASN1BitString;
-HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->getOctets()[B
-HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->getPadBits()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1BitString;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->get(I)Lcom/android/org/bouncycastle/asn1/ASN1Encodable;
-HSPLcom/android/org/bouncycastle/asn1/ASN1EncodableVector;->size()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->buildDEREncodableVector(Lcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;)Lcom/android/org/bouncycastle/asn1/ASN1EncodableVector;
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->buildObject(III)Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->createPrimitiveDERObject(ILcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;[[B)Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readLength()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readLength(Ljava/io/InputStream;I)I
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1InputStream;->readTagNumber(Ljava/io/InputStream;I)I
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;-><init>([BZ)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->encodedLength()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Integer;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getPositiveValue()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Integer;->getValue()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Null;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z
-HSPLcom/android/org/bouncycastle/asn1/ASN1Object;->getEncoded(Ljava/lang/String;)[B
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier$OidHandle;->hashCode()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;-><init>(Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;-><init>([B)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->asn1Equals(Lcom/android/org/bouncycastle/asn1/ASN1Primitive;)Z
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->branch(Ljava/lang/String;)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->doOutput(Ljava/io/ByteArrayOutputStream;)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->encodedLength()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getBody()[B
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getId()Ljava/lang/String;
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->hashCode()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->intern()Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidBranchID(Ljava/lang/String;I)Z
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->isValidIdentifier(Ljava/lang/String;)Z
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->toString()Ljava/lang/String;
-HSPLcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;->writeField(Ljava/io/ByteArrayOutputStream;J)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->write(I)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->write([B)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeEncoded(I[B)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1OutputStream;->writeLength(I)V
-HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->fromByteArray([B)Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Primitive;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/ASN1Sequence;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getObjectAt(I)Lcom/android/org/bouncycastle/asn1/ASN1Encodable;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->getObjects()Ljava/util/Enumeration;
-HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->size()I
-HSPLcom/android/org/bouncycastle/asn1/ASN1Sequence;->toDERObject()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/DERBitString;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V
-HSPLcom/android/org/bouncycastle/asn1/DERBitString;->encodedLength()I
-HSPLcom/android/org/bouncycastle/asn1/DERBitString;->getInstance(Ljava/lang/Object;)Lcom/android/org/bouncycastle/asn1/DERBitString;
-HSPLcom/android/org/bouncycastle/asn1/DERNull;-><init>()V
-HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;->getDERSubStream()Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;
-HSPLcom/android/org/bouncycastle/asn1/DEROutputStream;->writeObject(Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)V
-HSPLcom/android/org/bouncycastle/asn1/DERSequence;-><init>()V
-HSPLcom/android/org/bouncycastle/asn1/DERSequence;->encode(Lcom/android/org/bouncycastle/asn1/ASN1OutputStream;)V
-HSPLcom/android/org/bouncycastle/asn1/DERSequence;->encodedLength()I
-HSPLcom/android/org/bouncycastle/asn1/DERSequence;->getBodyLength()I
-HSPLcom/android/org/bouncycastle/asn1/DERSet;-><init>()V
-HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->getRemaining()I
-HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read()I
-HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->read([BII)I
-HSPLcom/android/org/bouncycastle/asn1/DefiniteLengthInputStream;->toByteArray()[B
-HSPLcom/android/org/bouncycastle/asn1/LimitedInputStream;->setParentEofDetect(Z)V
-HSPLcom/android/org/bouncycastle/asn1/OIDTokenizer;->nextToken()Ljava/lang/String;
-HSPLcom/android/org/bouncycastle/asn1/StreamUtil;->findLimit(Ljava/io/InputStream;)I
-HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V
-HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getAlgorithm()Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;
-HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->getParameters()Lcom/android/org/bouncycastle/asn1/ASN1Encodable;
-HSPLcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V
-HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getG()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getP()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/asn1/x509/DSAParameter;->getQ()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;-><init>(Lcom/android/org/bouncycastle/asn1/ASN1Sequence;)V
-HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->getAlgorithm()Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;
-HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->parsePublicKey()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;->toASN1Primitive()Lcom/android/org/bouncycastle/asn1/ASN1Primitive;
-HSPLcom/android/org/bouncycastle/crypto/CryptoServicesPermission;-><init>(Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar$Property;-><init>(Ljava/lang/String;Ljava/lang/Class;)V
-HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->localSetGlobalProperty(Lcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar$Property;[Ljava/lang/Object;)V
-HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->toDH(Lcom/android/org/bouncycastle/crypto/params/DSAParameters;)Lcom/android/org/bouncycastle/crypto/params/DHParameters;
-HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryBouncyCastle;-><init>()V
-HSPLcom/android/org/bouncycastle/crypto/digests/AndroidDigestFactoryOpenSSL;-><init>()V
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->doFinal([BI)I
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->getDigestSize()I
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->reset()V
-HSPLcom/android/org/bouncycastle/crypto/digests/OpenSSLDigest;->update([BII)V
-HSPLcom/android/org/bouncycastle/crypto/params/DHParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;IILjava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DHValidationParameters;)V
-HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;Ljava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;)V
-HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getG()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getP()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getQ()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/crypto/params/DSAParameters;->getValidationParameters()Lcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;
-HSPLcom/android/org/bouncycastle/crypto/params/DSAPublicKeyParameters;->validate(Ljava/math/BigInteger;Lcom/android/org/bouncycastle/crypto/params/DSAParameters;)Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;-><init>([BI)V
-HSPLcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;->getCounter()I
-HSPLcom/android/org/bouncycastle/crypto/params/DSAValidationParameters;->getSeed()[B
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/DH$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/DSA$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/EC$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->addDigestSignature(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/RSA$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/X509$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;-><init>(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getEncoded()[B
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getParams()Ljava/security/interfaces/DSAParams;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->getY()Ljava/math/BigInteger;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/BCDSAPublicKey;->hashCode()I
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/dsa/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi$EC;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/ec/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/rsa/KeyFactorySpi;->generatePublic(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/BaseKeyFactorySpi;->engineGeneratePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil;->getEncodedSubjectPublicKeyInfo(Lcom/android/org/bouncycastle/asn1/x509/AlgorithmIdentifier;Lcom/android/org/bouncycastle/asn1/ASN1Encodable;)[B
-HSPLcom/android/org/bouncycastle/jcajce/provider/asymmetric/util/KeyUtil;->getEncodedSubjectPublicKeyInfo(Lcom/android/org/bouncycastle/asn1/x509/SubjectPublicKeyInfo;)[B
-HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/config/ProviderConfigurationPermission;->calculateMask(Ljava/lang/String;)I
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlgorithm(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/DigestAlgorithmProvider;->addHMACAlias(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/MD5$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/MD5$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA1$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA1$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA224$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA224$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA256$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA256$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA384$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA384$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA512$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/digest/SHA512$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/BC$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/BC$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/PKCS12$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
+HSPLcom/android/okhttp/okio/Util;->reverseBytesInt(I)I
+HSPLcom/android/org/bouncycastle/crypto/CryptoServicesRegistrar;->getSecureRandom()Ljava/security/SecureRandom;
+HSPLcom/android/org/bouncycastle/crypto/params/KeyParameter;->getKey()[B
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$Std;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;->getObject()Ljava/lang/Object;
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi$StoreEntry;->getType()I
+HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;-><init>(I)V
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineAliases()Ljava/util/Enumeration;
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineGetCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
 HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineLoad(Ljava/io/InputStream;[C)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/keystore/bc/BcKeyStoreSpi;->engineSetCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/AES;->access$000()Ljava/util/Map;
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/ARC4$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/Blowfish$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/DES$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/DES$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/DESede$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPBKDF2$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBEPKCS12$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/PBES2AlgorithmParameters$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/RC2$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;-><init>()V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/Twofish$Mappings;->configure(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/BaseBlockCipher$AEADGenericBlockCipher;->findExceptionConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
-HSPLcom/android/org/bouncycastle/jcajce/provider/symmetric/util/ClassUtil;->loadClass(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Class;
-HSPLcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->addSignatureAlgorithm(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOid(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V
-HSPLcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricAlgorithmProvider;->registerOidAlgorithmParameterGenerator(Lcom/android/org/bouncycastle/jcajce/provider/config/ConfigurableProvider;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider$1;->run()Ljava/lang/Object;
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;-><init>()V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->addAlgorithm(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->addAttributes(Ljava/lang/String;Ljava/util/Map;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->addKeyInfoConverter(Lcom/android/org/bouncycastle/asn1/ASN1ObjectIdentifier;Lcom/android/org/bouncycastle/jcajce/provider/util/AsymmetricKeyInfoConverter;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->hasAlgorithm(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->loadAlgorithms(Ljava/lang/String;[Ljava/lang/String;)V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProvider;->setup()V
-HSPLcom/android/org/bouncycastle/jce/provider/BouncyCastleProviderConfiguration;-><init>()V
+HSPLcom/android/org/bouncycastle/jcajce/util/DefaultJcaJceHelper;-><init>()V
 HSPLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;-><init>(Ljava/security/cert/CertStoreParameters;)V
-HPLcom/android/org/bouncycastle/jce/provider/CertStoreCollectionSpi;->engineGetCertificates(Ljava/security/cert/CertSelector;)Ljava/util/Collection;
-HSPLcom/android/org/bouncycastle/util/Integers;->valueOf(I)Ljava/lang/Integer;
-HSPLcom/android/org/bouncycastle/util/Properties$1;->run()Ljava/lang/Object;
-HSPLcom/android/org/bouncycastle/util/Properties;->isOverrideSet(Ljava/lang/String;)Z
-HSPLcom/android/org/bouncycastle/util/Strings$1;-><init>()V
-HSPLcom/android/org/bouncycastle/util/Strings$1;->run()Ljava/lang/Object;
-HSPLcom/android/org/bouncycastle/util/Strings$1;->run()Ljava/lang/String;
-HSPLcom/android/org/bouncycastle/util/Strings;->toLowerCase(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/org/bouncycastle/util/encoders/Hex;->decode(Ljava/lang/String;)[B
-HSPLcom/android/org/bouncycastle/util/encoders/HexEncoder;-><init>()V
-HSPLcom/android/org/bouncycastle/util/encoders/HexEncoder;->decode(Ljava/lang/String;Ljava/io/OutputStream;)I
-HSPLcom/android/org/bouncycastle/util/encoders/HexEncoder;->initialiseDecodingTable()V
-HSPLcom/android/org/kxml2/io/KXmlParser$ValueContext;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/org/bouncycastle/util/Arrays;->clone([B)[B
 HSPLcom/android/org/kxml2/io/KXmlParser;-><init>()V
 HSPLcom/android/org/kxml2/io/KXmlParser;->adjustNsp()Z
-HSPLcom/android/org/kxml2/io/KXmlParser;->close()V
+HSPLcom/android/org/kxml2/io/KXmlParser;->ensureCapacity([Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->fillBuffer(I)Z
-HSPLcom/android/org/kxml2/io/KXmlParser;->getAttributeCount()I
-HSPLcom/android/org/kxml2/io/KXmlParser;->getAttributeName(I)Ljava/lang/String;
-HSPLcom/android/org/kxml2/io/KXmlParser;->getAttributeValue(I)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->getAttributeValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/org/kxml2/io/KXmlParser;->getColumnNumber()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->getDepth()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->getEventType()I
-HSPLcom/android/org/kxml2/io/KXmlParser;->getLineNumber()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->getName()Ljava/lang/String;
-HSPLcom/android/org/kxml2/io/KXmlParser;->getNamespace()Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->getNamespace(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->getNamespaceCount(I)I
-HSPLcom/android/org/kxml2/io/KXmlParser;->getPositionDescription()Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->getText()Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->next()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->next(Z)I
-HSPLcom/android/org/kxml2/io/KXmlParser;->nextTag()I
-HSPLcom/android/org/kxml2/io/KXmlParser;->nextText()Ljava/lang/String;
-HSPLcom/android/org/kxml2/io/KXmlParser;->nextToken()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->parseStartTag(ZZ)V
+HSPLcom/android/org/kxml2/io/KXmlParser;->peekCharacter()I
 HSPLcom/android/org/kxml2/io/KXmlParser;->peekType(Z)I
 HSPLcom/android/org/kxml2/io/KXmlParser;->read(C)V
 HSPLcom/android/org/kxml2/io/KXmlParser;->read([C)V
-HSPLcom/android/org/kxml2/io/KXmlParser;->readComment(Z)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readEndTag()V
 HSPLcom/android/org/kxml2/io/KXmlParser;->readEntity(Ljava/lang/StringBuilder;ZZLcom/android/org/kxml2/io/KXmlParser$ValueContext;)V
 HSPLcom/android/org/kxml2/io/KXmlParser;->readName()Ljava/lang/String;
-HSPLcom/android/org/kxml2/io/KXmlParser;->readUntil([CZ)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readValue(CZZLcom/android/org/kxml2/io/KXmlParser$ValueContext;)Ljava/lang/String;
 HSPLcom/android/org/kxml2/io/KXmlParser;->readXmlDeclaration()V
-HSPLcom/android/org/kxml2/io/KXmlParser;->require(ILjava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/org/kxml2/io/KXmlParser;->setFeature(Ljava/lang/String;Z)V
 HSPLcom/android/org/kxml2/io/KXmlParser;->setInput(Ljava/io/InputStream;Ljava/lang/String;)V
 HSPLcom/android/org/kxml2/io/KXmlParser;->setInput(Ljava/io/Reader;)V
-HPLcom/android/org/kxml2/io/KXmlSerializer;-><init>()V
+HSPLcom/android/org/kxml2/io/KXmlParser;->skip()V
+HSPLcom/android/org/kxml2/io/KXmlSerializer;->append(C)V
+HSPLcom/android/org/kxml2/io/KXmlSerializer;->append(Ljava/lang/String;)V
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->append(Ljava/lang/String;II)V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->check(Z)V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->endDocument()V
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->endTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->flush()V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->setFeature(Ljava/lang/String;Z)V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/OutputStream;Ljava/lang/String;)V
+HSPLcom/android/org/kxml2/io/KXmlSerializer;->flushBuffer()V
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->setOutput(Ljava/io/Writer;)V
-HSPLcom/android/org/kxml2/io/KXmlSerializer;->startDocument(Ljava/lang/String;Ljava/lang/Boolean;)V
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->startTag(Ljava/lang/String;Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
-HPLcom/android/org/kxml2/io/KXmlSerializer;->text(Ljava/lang/String;)Lorg/xmlpull/v1/XmlSerializer;
 HSPLcom/android/org/kxml2/io/KXmlSerializer;->writeEscaped(Ljava/lang/String;I)V
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->checkLastTagWas(I)V
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->readMessage(Lcom/android/phone/ecc/nano/MessageNano;)V
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->readRawVarint32()I
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->readString()Ljava/lang/String;
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->rewindToPosition(I)V
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->skipField(I)Z
-HSPLcom/android/phone/ecc/nano/CodedInputByteBufferNano;->skipRawBytes(I)V
-HSPLcom/android/phone/ecc/nano/MessageNano;->mergeFrom(Lcom/android/phone/ecc/nano/MessageNano;[BII)Lcom/android/phone/ecc/nano/MessageNano;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$AllInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/MessageNano;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$AllInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/ProtobufEccData$AllInfo;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;->emptyArray()[Lcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/MessageNano;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->emptyArray()[Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/MessageNano;
-HSPLcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;->mergeFrom(Lcom/android/phone/ecc/nano/CodedInputByteBufferNano;)Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;
-HPLcom/android/server/AppWidgetBackupBridge;->getWidgetState(Ljava/lang/String;I)[B
-HSPLcom/android/server/AppWidgetBackupBridge;->register(Lcom/android/server/WidgetBackupProvider;)V
-PLcom/android/server/BootReceiver$1;->run()V
-PLcom/android/server/BootReceiver;-><init>()V
-PLcom/android/server/BootReceiver;->addAuditErrorsToDropBox(Landroid/os/DropBoxManager;Ljava/util/HashMap;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;->getBootHeadersToLogAndUpdate()Ljava/lang/String;
-PLcom/android/server/BootReceiver;->getCurrentBootHeaders()Ljava/lang/String;
-PLcom/android/server/BootReceiver;->getPreviousBootHeaders()Ljava/lang/String;
-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;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HPLcom/android/server/BootReceiver;->readTimestamps()Ljava/util/HashMap;
-HSPLcom/android/server/LocalServices;->addService(Ljava/lang/Class;Ljava/lang/Object;)V
-HSPLcom/android/server/LocalServices;->getService(Ljava/lang/Class;)Ljava/lang/Object;
-HSPLcom/android/server/NetworkManagementSocketTagger$1;-><init>()V
 HSPLcom/android/server/NetworkManagementSocketTagger$1;->initialValue()Lcom/android/server/NetworkManagementSocketTagger$SocketTags;
 HSPLcom/android/server/NetworkManagementSocketTagger$1;->initialValue()Ljava/lang/Object;
-HSPLcom/android/server/NetworkManagementSocketTagger;->setKernelCounterSet(II)V
+HSPLcom/android/server/NetworkManagementSocketTagger$SocketTags;-><init>()V
+HSPLcom/android/server/NetworkManagementSocketTagger;-><init>()V
+HSPLcom/android/server/NetworkManagementSocketTagger;->install()V
 HSPLcom/android/server/NetworkManagementSocketTagger;->setThreadSocketStatsTag(I)I
 HSPLcom/android/server/NetworkManagementSocketTagger;->tag(Ljava/io/FileDescriptor;)V
 HSPLcom/android/server/NetworkManagementSocketTagger;->tagSocketFd(Ljava/io/FileDescriptor;II)V
-HSPLcom/android/server/SystemConfig$SharedLibraryEntry;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
-HSPLcom/android/server/SystemConfig;-><init>()V
-HSPLcom/android/server/SystemConfig;->addFeature(Ljava/lang/String;I)V
-HSPLcom/android/server/SystemConfig;->getAllowIgnoreLocationSettings()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowImplicitBroadcasts()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowInDataUsageSave()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowInPowerSave()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowInPowerSaveExceptIdle()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowUnthrottledLocation()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getAllowedAssociations()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getAvailableFeatures()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getBackupTransportWhitelist()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getBugreportWhitelistedPackages()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getDefaultVrComponents()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierApps()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getDisabledUntilUsedPreinstalledCarrierAssociatedApps()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getGlobalGids()[I
-HSPLcom/android/server/SystemConfig;->getHiddenApiWhitelistedApps()Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getInstance()Lcom/android/server/SystemConfig;
-HSPLcom/android/server/SystemConfig;->getPermissions()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getPrivAppPermissions(Ljava/lang/String;)Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getProductPrivAppDenyPermissions(Ljava/lang/String;)Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getProductPrivAppPermissions(Ljava/lang/String;)Landroid/util/ArraySet;
-HSPLcom/android/server/SystemConfig;->getSharedLibraries()Landroid/util/ArrayMap;
-HSPLcom/android/server/SystemConfig;->getSplitPermissions()Ljava/util/ArrayList;
-HSPLcom/android/server/SystemConfig;->getSystemPermissions()Landroid/util/SparseArray;
-HSPLcom/android/server/SystemConfig;->readPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
-HSPLcom/android/server/SystemConfig;->readPermissions(Ljava/io/File;I)V
-HSPLcom/android/server/SystemConfig;->readPermissionsFromXml(Ljava/io/File;I)V
-HSPLcom/android/server/SystemConfig;->readPrivAppPermissions(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/SystemConfig;->readSplitPermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/io/File;)V
-PLcom/android/server/backup/AccountManagerBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/AccountSyncSettingsBackupHelper;->accountAdded(Landroid/content/Context;I)V
-PLcom/android/server/backup/AccountSyncSettingsBackupHelper;->accountAddedInternal(I)V
-PLcom/android/server/backup/AccountSyncSettingsBackupHelper;->performBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/backup/AccountSyncSettingsBackupHelper;->readOldMd5Checksum(Landroid/os/ParcelFileDescriptor;)[B
-HPLcom/android/server/backup/AccountSyncSettingsBackupHelper;->serializeAccountSyncSettingsToJSON(I)Lorg/json/JSONObject;
-PLcom/android/server/backup/NotificationBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/PermissionBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/PreferredActivityBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/ShortcutBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/SliceBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/backup/SystemBackupAgent;-><init>()V
-PLcom/android/server/backup/SystemBackupAgent;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V
-PLcom/android/server/backup/SystemBackupAgent;->onCreate(Landroid/os/UserHandle;)V
-PLcom/android/server/backup/UsageStatsBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfProgramEvent;->computeSerializedSize()I
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfProgramEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfStatistics;-><init>()V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfStatistics;->clear()Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfStatistics;
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfStatistics;->computeSerializedSize()I
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ApfStatistics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ConnectStatistics;-><init>()V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ConnectStatistics;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ConnectStatistics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DHCPEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DHCPEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DNSLookupBatch;-><init>()V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DNSLookupBatch;->clear()Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DNSLookupBatch;
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DNSLookupBatch;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DNSLookupBatch;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DefaultNetworkEvent;-><init>()V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DefaultNetworkEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$DefaultNetworkEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;->computeSerializedSize()I
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;->emptyArray()[Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityLog;-><init>()V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityLog;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpProvisioningEvent;->computeSerializedSize()I
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpProvisioningEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpReachabilityEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpReachabilityEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$NetworkEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$NetworkEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;->emptyArray()[Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$RaEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$RaEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ValidationProbeEvent;->computeSerializedSize()I
-HPLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$ValidationProbeEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;-><init>()V
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;->clear()Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;->computeSerializedSize()I
-PLcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$WakeupStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/net/BaseNetdEventCallback;-><init>()V
-HSPLcom/android/server/net/BaseNetdEventCallback;->onConnectEvent(Ljava/lang/String;IJI)V
-HPLcom/android/server/net/BaseNetdEventCallback;->onNat64PrefixEvent(IZLjava/lang/String;I)V
-HSPLcom/android/server/net/BaseNetdEventCallback;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
-HSPLcom/android/server/net/BaseNetworkObserver;-><init>()V
-HSPLcom/android/server/net/BaseNetworkObserver;->addressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->addressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->interfaceAdded(Ljava/lang/String;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V
-HSPLcom/android/server/net/BaseNetworkObserver;->interfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->interfaceLinkStateChanged(Ljava/lang/String;Z)V
-HPLcom/android/server/net/BaseNetworkObserver;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->routeRemoved(Landroid/net/RouteInfo;)V
-HSPLcom/android/server/net/BaseNetworkObserver;->routeUpdated(Landroid/net/RouteInfo;)V
-HSPLcom/android/server/sip/SipService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/sip/SipService;->start(Landroid/content/Context;)V
-HSPLcom/android/server/sip/SipWakeupTimer;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;)V
-HSPLcom/android/server/wifi/BaseWifiService;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32;
-PLcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;
-PLcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats$LinkProbeFailureReasonCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats$LinkProbeFailureReasonCount;
-PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;
-PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$RouterFingerPrint;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$SoftApConnectedClientsEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApConnectedClientsEvent;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount;
-PLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent$ConfigInfo;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;-><init>()V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$NanStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$NanStatusHistogramBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO$DurationBucket;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO$DurationBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO$DurationBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket;
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;-><init>()V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;-><init>()V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;-><init>()V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiPowerStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRadioUsage;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRadioUsage;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$HistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$HistogramBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttIndividualStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttIndividualStatusHistogramBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttOverallStatusHistogramBucket;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttOverallStatusHistogramBucket;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttToPeerLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->computeSerializedSize()I
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->clear()Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats$Session;->emptyArray()[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats$Session;
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;-><init>()V
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;->computeSerializedSize()I
-PLcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HSPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;-><init>()V
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->computeSerializedSize()I
-HPLcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
-HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->computeSerializedSize()I
-PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/framework/protobuf/nano/MessageNano;
-PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->mergeFrom(Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;
-PLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->parseFrom([B)Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;
-HPLcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;->writeTo(Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;)V
+HSPLcom/android/telephony/Rlog;->log(ILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/telephony/Rlog;->w(Ljava/lang/String;Ljava/lang/String;)I
 HSPLcom/google/android/collect/Lists;->newArrayList()Ljava/util/ArrayList;
-HSPLcom/google/android/collect/Lists;->newArrayList([Ljava/lang/Object;)Ljava/util/ArrayList;
-HSPLcom/google/android/collect/Maps;->newArrayMap()Landroid/util/ArrayMap;
 HSPLcom/google/android/collect/Maps;->newHashMap()Ljava/util/HashMap;
-HSPLcom/google/android/collect/Sets;->newArraySet()Landroid/util/ArraySet;
-HSPLcom/google/android/collect/Sets;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet;
 HSPLcom/google/android/collect/Sets;->newHashSet()Ljava/util/HashSet;
 HSPLcom/google/android/collect/Sets;->newHashSet([Ljava/lang/Object;)Ljava/util/HashSet;
 HSPLcom/google/android/gles_jni/EGLConfigImpl;-><init>(J)V
-HSPLcom/google/android/gles_jni/EGLContextImpl;-><init>(J)V
-HSPLcom/google/android/gles_jni/EGLDisplayImpl;-><init>(J)V
-HSPLcom/google/android/gles_jni/EGLImpl;-><init>()V
 HSPLcom/google/android/gles_jni/EGLImpl;->eglCreateContext(Ljavax/microedition/khronos/egl/EGLDisplay;Ljavax/microedition/khronos/egl/EGLConfig;Ljavax/microedition/khronos/egl/EGLContext;[I)Ljavax/microedition/khronos/egl/EGLContext;
 HSPLcom/google/android/gles_jni/EGLImpl;->eglGetDisplay(Ljava/lang/Object;)Ljavax/microedition/khronos/egl/EGLDisplay;
 HSPLcom/google/android/gles_jni/EGLSurfaceImpl;-><init>(J)V
-HPLcom/google/android/rappor/Encoder;-><init>(Ljava/util/Random;Ljava/security/MessageDigest;Ljava/security/MessageDigest;[BLjava/lang/String;IDDDII)V
-HPLcom/google/android/rappor/Encoder;->checkArgument(ZLjava/lang/Object;)V
-HPLcom/google/android/rappor/Encoder;->computeInstantaneousRandomizedResponse(Ljava/util/BitSet;)Ljava/util/BitSet;
-HPLcom/google/android/rappor/Encoder;->computePermanentRandomizedResponse(Ljava/util/BitSet;)Ljava/util/BitSet;
-HPLcom/google/android/rappor/Encoder;->encodeBits(Ljava/util/BitSet;)[B
-HPLcom/google/android/rappor/Encoder;->encodeBoolean(Z)[B
-HPLcom/google/android/rappor/HmacDrbg;-><init>([B[B)V
-HPLcom/google/android/rappor/HmacDrbg;->bytesConcat([[B)[B
-HPLcom/google/android/rappor/HmacDrbg;->hash([B)[B
-HPLcom/google/android/rappor/HmacDrbg;->hmacDrbgGenerate([BII)V
-HPLcom/google/android/rappor/HmacDrbg;->hmacDrbgUpdate([B)V
-HPLcom/google/android/rappor/HmacDrbg;->nextBytes(I)[B
-PLcom/google/android/rappor/HmacDrbg;->nextBytes([B)V
-HPLcom/google/android/rappor/HmacDrbg;->nextBytes([BII)V
-HPLcom/google/android/rappor/HmacDrbg;->setKey([B)V
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestion;-><init>(Ljava/lang/String;Ljava/lang/String;F[Lcom/google/android/textclassifier/NamedVariant;[B[Lcom/google/android/textclassifier/RemoteActionTemplate;)V
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$Conversation;->getConversationMessages()[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;->getDetectedTextLanguageTags()Ljava/lang/String;
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;->getReferenceTimeMsUtc()J
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;->getReferenceTimezone()Ljava/lang/String;
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;->getText()Ljava/lang/String;
-PLcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;->getUserId()I
-PLcom/google/android/textclassifier/ActionsSuggestionsModel;-><init>(I)V
-PLcom/google/android/textclassifier/ActionsSuggestionsModel;-><init>(I[B)V
-PLcom/google/android/textclassifier/ActionsSuggestionsModel;->getLocales(I)Ljava/lang/String;
-PLcom/google/android/textclassifier/ActionsSuggestionsModel;->getVersion(I)I
-PLcom/google/android/textclassifier/ActionsSuggestionsModel;->suggestActionsWithIntents(Lcom/google/android/textclassifier/ActionsSuggestionsModel$Conversation;Lcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestionOptions;Ljava/lang/Object;Ljava/lang/String;Lcom/google/android/textclassifier/AnnotatorModel;)[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ActionSuggestion;
-HSPLcom/google/android/textclassifier/AnnotatorModel;-><init>(I)V
-HSPLcom/google/android/textclassifier/AnnotatorModel;->getLocales(I)Ljava/lang/String;
-HSPLcom/google/android/textclassifier/AnnotatorModel;->getVersion(I)I
-HSPLcom/google/android/textclassifier/LangIdModel$LanguageResult;-><init>(Ljava/lang/String;F)V
-HSPLcom/google/android/textclassifier/LangIdModel;-><init>(I)V
-HSPLcom/google/android/textclassifier/LangIdModel;->detectLanguages(Ljava/lang/String;)[Lcom/google/android/textclassifier/LangIdModel$LanguageResult;
-HSPLcom/google/android/textclassifier/LangIdModel;->getLangIdThreshold()F
-HSPLcom/google/android/textclassifier/LangIdModel;->getVersion(I)I
-PLcom/google/android/textclassifier/NamedVariant;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/google/android/textclassifier/RemoteActionTemplate;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;[Ljava/lang/String;Ljava/lang/String;[Lcom/google/android/textclassifier/NamedVariant;Ljava/lang/Integer;)V
+HSPLdalvik/system/BaseDexClassLoader;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/lang/String;Ljava/lang/ClassLoader;)V
+HSPLdalvik/system/BaseDexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/BaseDexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;Z)V
 HSPLdalvik/system/BaseDexClassLoader;->addNativePath(Ljava/util/Collection;)V
 HSPLdalvik/system/BaseDexClassLoader;->findClass(Ljava/lang/String;)Ljava/lang/Class;
 HSPLdalvik/system/BaseDexClassLoader;->findLibrary(Ljava/lang/String;)Ljava/lang/String;
 HSPLdalvik/system/BaseDexClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL;
-HSPLdalvik/system/BaseDexClassLoader;->findResources(Ljava/lang/String;)Ljava/util/Enumeration;
 HSPLdalvik/system/BaseDexClassLoader;->getLdLibraryPath()Ljava/lang/String;
 HSPLdalvik/system/BaseDexClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package;
 HSPLdalvik/system/BaseDexClassLoader;->reportClassLoaderChain()V
+HSPLdalvik/system/BaseDexClassLoader;->setReporter(Ldalvik/system/BaseDexClassLoader$Reporter;)V
 HSPLdalvik/system/BaseDexClassLoader;->toString()Ljava/lang/String;
 HSPLdalvik/system/BlockGuard$1;->onExplicitGc()V
 HSPLdalvik/system/BlockGuard$1;->onNetwork()V
@@ -25681,10 +15859,10 @@
 HSPLdalvik/system/BlockGuard$3;->initialValue()Ldalvik/system/BlockGuard$Policy;
 HSPLdalvik/system/BlockGuard$3;->initialValue()Ljava/lang/Object;
 HSPLdalvik/system/BlockGuard;->getThreadPolicy()Ldalvik/system/BlockGuard$Policy;
+HSPLdalvik/system/BlockGuard;->getVmPolicy()Ldalvik/system/BlockGuard$VmPolicy;
 HSPLdalvik/system/BlockGuard;->setThreadPolicy(Ldalvik/system/BlockGuard$Policy;)V
 HSPLdalvik/system/BlockGuard;->setVmPolicy(Ldalvik/system/BlockGuard$VmPolicy;)V
-HSPLdalvik/system/CloseGuard$DefaultReporter;-><init>(Ldalvik/system/CloseGuard$1;)V
-HSPLdalvik/system/CloseGuard$DefaultReporter;->report(Ljava/lang/String;Ljava/lang/Throwable;)V
+HSPLdalvik/system/CloseGuard;-><init>()V
 HSPLdalvik/system/CloseGuard;->close()V
 HSPLdalvik/system/CloseGuard;->get()Ldalvik/system/CloseGuard;
 HSPLdalvik/system/CloseGuard;->getReporter()Ldalvik/system/CloseGuard$Reporter;
@@ -25693,56 +15871,81 @@
 HSPLdalvik/system/CloseGuard;->setReporter(Ldalvik/system/CloseGuard$Reporter;)V
 HSPLdalvik/system/CloseGuard;->warnIfOpen()V
 HSPLdalvik/system/DalvikLogging;->loggerNameToTag(Ljava/lang/String;)Ljava/lang/String;
+HSPLdalvik/system/DelegateLastClassLoader;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/DelegateLastClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Z)V
 HSPLdalvik/system/DelegateLastClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
-HSPLdalvik/system/DexClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
+HSPLdalvik/system/DexFile;-><init>(Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
+HSPLdalvik/system/DexFile;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)V
 HSPLdalvik/system/DexFile;->defineClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/Object;Ldalvik/system/DexFile;Ljava/util/List;)Ljava/lang/Class;
 HSPLdalvik/system/DexFile;->finalize()V
-HSPLdalvik/system/DexFile;->getDexFileOptimizationInfo(Ljava/lang/String;Ljava/lang/String;)Ldalvik/system/DexFile$OptimizationInfo;
+HSPLdalvik/system/DexFile;->loadClassBinaryName(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class;
 HSPLdalvik/system/DexFile;->openDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ljava/lang/Object;
 HSPLdalvik/system/DexPathList$Element;-><init>(Ldalvik/system/DexFile;Ljava/io/File;)V
+HSPLdalvik/system/DexPathList$Element;-><init>(Ljava/io/File;)V
+HSPLdalvik/system/DexPathList$Element;->access$000(Ldalvik/system/DexPathList$Element;)Ljava/lang/String;
 HSPLdalvik/system/DexPathList$Element;->findClass(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/util/List;)Ljava/lang/Class;
 HSPLdalvik/system/DexPathList$Element;->findResource(Ljava/lang/String;)Ljava/net/URL;
+HSPLdalvik/system/DexPathList$Element;->getDexPath()Ljava/lang/String;
 HSPLdalvik/system/DexPathList$Element;->maybeInit()V
 HSPLdalvik/system/DexPathList$Element;->toString()Ljava/lang/String;
+HSPLdalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;)V
+HSPLdalvik/system/DexPathList$NativeLibraryElement;-><init>(Ljava/io/File;Ljava/lang/String;)V
 HSPLdalvik/system/DexPathList$NativeLibraryElement;->equals(Ljava/lang/Object;)Z
 HSPLdalvik/system/DexPathList$NativeLibraryElement;->findNativeLibrary(Ljava/lang/String;)Ljava/lang/String;
 HSPLdalvik/system/DexPathList$NativeLibraryElement;->maybeInit()V
 HSPLdalvik/system/DexPathList;-><init>(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Z)V
 HSPLdalvik/system/DexPathList;->addNativePath(Ljava/util/Collection;)V
 HSPLdalvik/system/DexPathList;->findClass(Ljava/lang/String;Ljava/util/List;)Ljava/lang/Class;
+HSPLdalvik/system/DexPathList;->findLibrary(Ljava/lang/String;)Ljava/lang/String;
+HSPLdalvik/system/DexPathList;->findResource(Ljava/lang/String;)Ljava/net/URL;
+HSPLdalvik/system/DexPathList;->getAllNativeLibraryDirectories()Ljava/util/List;
+HSPLdalvik/system/DexPathList;->getDexPaths()Ljava/util/List;
+HSPLdalvik/system/DexPathList;->getNativeLibraryDirectories()Ljava/util/List;
+HSPLdalvik/system/DexPathList;->loadDexFile(Ljava/io/File;Ljava/io/File;Ljava/lang/ClassLoader;[Ldalvik/system/DexPathList$Element;)Ldalvik/system/DexFile;
 HSPLdalvik/system/DexPathList;->makeDexElements(Ljava/util/List;Ljava/io/File;Ljava/util/List;Ljava/lang/ClassLoader;Z)[Ldalvik/system/DexPathList$Element;
 HSPLdalvik/system/DexPathList;->makePathElements(Ljava/util/List;)[Ldalvik/system/DexPathList$NativeLibraryElement;
+HSPLdalvik/system/DexPathList;->splitDexPath(Ljava/lang/String;)Ljava/util/List;
 HSPLdalvik/system/DexPathList;->splitPaths(Ljava/lang/String;Z)Ljava/util/List;
 HSPLdalvik/system/DexPathList;->toString()Ljava/lang/String;
 HSPLdalvik/system/PathClassLoader;-><init>(Ljava/lang/String;Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/PathClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;)V
 HSPLdalvik/system/PathClassLoader;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;[Ljava/lang/ClassLoader;)V
+HSPLdalvik/system/RuntimeHooks;->getThreadPrioritySetter()Ldalvik/system/ThreadPrioritySetter;
 HSPLdalvik/system/RuntimeHooks;->getTimeZoneIdSupplier()Ljava/util/function/Supplier;
 HSPLdalvik/system/RuntimeHooks;->setTimeZoneIdSupplier(Ljava/util/function/Supplier;)V
 HSPLdalvik/system/RuntimeHooks;->setUncaughtExceptionPreHandler(Ljava/lang/Thread$UncaughtExceptionHandler;)V
-HSPLdalvik/system/SocketTagger$1;-><init>()V
+HSPLdalvik/system/SocketTagger;-><init>()V
 HSPLdalvik/system/SocketTagger;->get()Ldalvik/system/SocketTagger;
 HSPLdalvik/system/SocketTagger;->set(Ldalvik/system/SocketTagger;)V
 HSPLdalvik/system/VMRuntime;->getInstructionSet(Ljava/lang/String;)Ljava/lang/String;
 HSPLdalvik/system/VMRuntime;->getRuntime()Ldalvik/system/VMRuntime;
 HSPLdalvik/system/VMRuntime;->getTargetSdkVersion()I
-HSPLdalvik/system/VMRuntime;->is64BitAbi(Ljava/lang/String;)Z
-HSPLdalvik/system/VMRuntime;->is64BitInstructionSet(Ljava/lang/String;)Z
+HSPLdalvik/system/VMRuntime;->hiddenApiUsed(ILjava/lang/String;Ljava/lang/String;IZ)V
+HSPLdalvik/system/VMRuntime;->notifyNativeAllocation()V
 HSPLdalvik/system/VMRuntime;->registerNativeAllocation(I)V
 HSPLdalvik/system/VMRuntime;->registerNativeFree(I)V
 HSPLdalvik/system/VMRuntime;->runFinalization(J)V
-HSPLdalvik/system/VMRuntime;->setTargetHeapUtilization(F)F
+HSPLdalvik/system/VMRuntime;->runFinalizationSync()V
+HSPLdalvik/system/VMRuntime;->setDisabledCompatChanges([J)V
+HSPLdalvik/system/VMRuntime;->setHiddenApiUsageLogger(Ldalvik/system/VMRuntime$HiddenApiUsageLogger;)V
+HSPLdalvik/system/VMRuntime;->setNonSdkApiUsageConsumer(Ljava/util/function/Consumer;)V
 HSPLdalvik/system/VMRuntime;->setTargetSdkVersion(I)V
 HSPLdalvik/system/ZygoteHooks;->gcAndFinalize()V
-HSPLdalvik/system/ZygoteHooks;->onBeginPreload()V
 HSPLdalvik/system/ZygoteHooks;->onEndPreload()V
 HSPLdalvik/system/ZygoteHooks;->postForkChild(IZZLjava/lang/String;)V
 HSPLdalvik/system/ZygoteHooks;->postForkCommon()V
-HSPLdalvik/system/ZygoteHooks;->postForkSystemServer()V
 HSPLdalvik/system/ZygoteHooks;->preFork()V
+HSPLdalvik/system/ZygoteHooks;->waitUntilAllThreadsStopped()V
+HSPLjava/io/Bits;->getBoolean([BI)Z
+HSPLjava/io/Bits;->getFloat([BI)F
+HSPLjava/io/Bits;->getInt([BI)I
 HSPLjava/io/Bits;->getLong([BI)J
+HSPLjava/io/Bits;->getShort([BI)S
+HSPLjava/io/Bits;->putBoolean([BIZ)V
+HSPLjava/io/Bits;->putFloat([BIF)V
+HSPLjava/io/Bits;->putInt([BII)V
 HSPLjava/io/Bits;->putLong([BIJ)V
+HSPLjava/io/Bits;->putShort([BIS)V
 HSPLjava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;)V
 HSPLjava/io/BufferedInputStream;-><init>(Ljava/io/InputStream;I)V
 HSPLjava/io/BufferedInputStream;->available()I
@@ -25760,6 +15963,7 @@
 HSPLjava/io/BufferedOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/BufferedOutputStream;-><init>(Ljava/io/OutputStream;I)V
 HSPLjava/io/BufferedOutputStream;->flush()V
+HSPLjava/io/BufferedOutputStream;->flushBuffer()V
 HSPLjava/io/BufferedOutputStream;->write(I)V
 HSPLjava/io/BufferedOutputStream;->write([BII)V
 HSPLjava/io/BufferedReader;-><init>(Ljava/io/Reader;)V
@@ -25778,6 +15982,7 @@
 HSPLjava/io/BufferedWriter;->ensureOpen()V
 HSPLjava/io/BufferedWriter;->flush()V
 HSPLjava/io/BufferedWriter;->flushBuffer()V
+HSPLjava/io/BufferedWriter;->min(II)I
 HSPLjava/io/BufferedWriter;->newLine()V
 HSPLjava/io/BufferedWriter;->write(I)V
 HSPLjava/io/BufferedWriter;->write(Ljava/lang/String;II)V
@@ -25795,6 +16000,7 @@
 HSPLjava/io/ByteArrayOutputStream;-><init>(I)V
 HSPLjava/io/ByteArrayOutputStream;->close()V
 HSPLjava/io/ByteArrayOutputStream;->ensureCapacity(I)V
+HSPLjava/io/ByteArrayOutputStream;->grow(I)V
 HSPLjava/io/ByteArrayOutputStream;->reset()V
 HSPLjava/io/ByteArrayOutputStream;->size()I
 HSPLjava/io/ByteArrayOutputStream;->toByteArray()[B
@@ -25805,10 +16011,10 @@
 HSPLjava/io/ByteArrayOutputStream;->writeTo(Ljava/io/OutputStream;)V
 HSPLjava/io/CharArrayWriter;-><init>()V
 HSPLjava/io/CharArrayWriter;-><init>(I)V
+HSPLjava/io/CharArrayWriter;->flush()V
+HSPLjava/io/CharArrayWriter;->reset()V
 HSPLjava/io/CharArrayWriter;->toCharArray()[C
-HSPLjava/io/CharArrayWriter;->toString()Ljava/lang/String;
 HSPLjava/io/CharArrayWriter;->write(I)V
-HSPLjava/io/CharArrayWriter;->write([CII)V
 HSPLjava/io/DataInputStream;-><init>(Ljava/io/InputStream;)V
 HSPLjava/io/DataInputStream;->read([B)I
 HSPLjava/io/DataInputStream;->read([BII)I
@@ -25820,31 +16026,31 @@
 HSPLjava/io/DataInputStream;->readLong()J
 HSPLjava/io/DataInputStream;->readUTF()Ljava/lang/String;
 HSPLjava/io/DataInputStream;->readUTF(Ljava/io/DataInput;)Ljava/lang/String;
-HSPLjava/io/DataInputStream;->readUnsignedByte()I
 HSPLjava/io/DataInputStream;->readUnsignedShort()I
 HSPLjava/io/DataInputStream;->skipBytes(I)I
 HSPLjava/io/DataOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/DataOutputStream;->flush()V
+HSPLjava/io/DataOutputStream;->incCount(I)V
 HSPLjava/io/DataOutputStream;->write([BII)V
 HSPLjava/io/DataOutputStream;->writeBoolean(Z)V
 HSPLjava/io/DataOutputStream;->writeByte(I)V
 HSPLjava/io/DataOutputStream;->writeInt(I)V
 HSPLjava/io/DataOutputStream;->writeLong(J)V
+HSPLjava/io/DataOutputStream;->writeShort(I)V
 HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;)V
 HSPLjava/io/DataOutputStream;->writeUTF(Ljava/lang/String;Ljava/io/DataOutput;)I
-HSPLjava/io/DefaultFileSystem;->getFileSystem()Ljava/io/FileSystem;
 HSPLjava/io/EOFException;-><init>()V
-HSPLjava/io/EOFException;-><init>(Ljava/lang/String;)V
 HSPLjava/io/ExpiringCache;->clear()V
-HSPLjava/io/File$PathStatus;-><init>(Ljava/lang/String;I)V
 HSPLjava/io/File$TempDirectory;->generateFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
 HSPLjava/io/File;-><init>(Ljava/io/File;Ljava/lang/String;)V
 HSPLjava/io/File;-><init>(Ljava/lang/String;)V
+HSPLjava/io/File;-><init>(Ljava/lang/String;I)V
+HSPLjava/io/File;-><init>(Ljava/lang/String;Ljava/io/File;)V
 HSPLjava/io/File;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/io/File;->canRead()Z
+HSPLjava/io/File;->canWrite()Z
 HSPLjava/io/File;->compareTo(Ljava/io/File;)I
 HSPLjava/io/File;->createNewFile()Z
-HSPLjava/io/File;->createTempFile(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)Ljava/io/File;
 HSPLjava/io/File;->delete()Z
 HSPLjava/io/File;->equals(Ljava/lang/Object;)Z
 HSPLjava/io/File;->exists()Z
@@ -25864,10 +16070,10 @@
 HSPLjava/io/File;->isAbsolute()Z
 HSPLjava/io/File;->isDirectory()Z
 HSPLjava/io/File;->isFile()Z
+HSPLjava/io/File;->isInvalid()Z
 HSPLjava/io/File;->lastModified()J
 HSPLjava/io/File;->length()J
 HSPLjava/io/File;->list()[Ljava/lang/String;
-HSPLjava/io/File;->list(Ljava/io/FilenameFilter;)[Ljava/lang/String;
 HSPLjava/io/File;->listFiles()[Ljava/io/File;
 HSPLjava/io/File;->listFiles(Ljava/io/FileFilter;)[Ljava/io/File;
 HSPLjava/io/File;->listFiles(Ljava/io/FilenameFilter;)[Ljava/io/File;
@@ -25875,16 +16081,18 @@
 HSPLjava/io/File;->mkdirs()Z
 HSPLjava/io/File;->renameTo(Ljava/io/File;)Z
 HSPLjava/io/File;->setLastModified(J)Z
-HSPLjava/io/File;->slashify(Ljava/lang/String;Z)Ljava/lang/String;
 HSPLjava/io/File;->toPath()Ljava/nio/file/Path;
 HSPLjava/io/File;->toString()Ljava/lang/String;
 HSPLjava/io/File;->toURI()Ljava/net/URI;
-HSPLjava/io/FileDescriptor$1;-><init>()V
 HSPLjava/io/FileDescriptor$1;->set(Ljava/io/FileDescriptor;I)V
 HSPLjava/io/FileDescriptor;-><init>()V
-HSPLjava/io/FileDescriptor;->dupFd(I)Ljava/io/FileDescriptor;
+HSPLjava/io/FileDescriptor;->access$002(Ljava/io/FileDescriptor;I)I
+HSPLjava/io/FileDescriptor;->getInt$()I
+HSPLjava/io/FileDescriptor;->getOwnerId$()J
 HSPLjava/io/FileDescriptor;->isSocket$()Z
 HSPLjava/io/FileDescriptor;->release$()Ljava/io/FileDescriptor;
+HSPLjava/io/FileDescriptor;->setInt$(I)V
+HSPLjava/io/FileDescriptor;->setOwnerId$(J)V
 HSPLjava/io/FileDescriptor;->valid()Z
 HSPLjava/io/FileInputStream;-><init>(Ljava/io/File;)V
 HSPLjava/io/FileInputStream;-><init>(Ljava/io/FileDescriptor;)V
@@ -25904,7 +16112,6 @@
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/File;Z)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;)V
 HSPLjava/io/FileOutputStream;-><init>(Ljava/io/FileDescriptor;Z)V
-HSPLjava/io/FileOutputStream;-><init>(Ljava/lang/String;)V
 HSPLjava/io/FileOutputStream;->close()V
 HSPLjava/io/FileOutputStream;->finalize()V
 HSPLjava/io/FileOutputStream;->getChannel()Ljava/nio/channels/FileChannel;
@@ -25914,10 +16121,8 @@
 HSPLjava/io/FileOutputStream;->write([BII)V
 HSPLjava/io/FileReader;-><init>(Ljava/io/File;)V
 HSPLjava/io/FileReader;-><init>(Ljava/lang/String;)V
-HSPLjava/io/FileSystem;->getBooleanProperty(Ljava/lang/String;Z)Z
 HSPLjava/io/FileWriter;-><init>(Ljava/io/File;)V
 HSPLjava/io/FileWriter;-><init>(Ljava/io/File;Z)V
-HSPLjava/io/FileWriter;-><init>(Ljava/lang/String;)V
 HSPLjava/io/FilterInputStream;-><init>(Ljava/io/InputStream;)V
 HSPLjava/io/FilterInputStream;->available()I
 HSPLjava/io/FilterInputStream;->close()V
@@ -25925,12 +16130,15 @@
 HSPLjava/io/FilterInputStream;->read()I
 HSPLjava/io/FilterInputStream;->read([B)I
 HSPLjava/io/FilterInputStream;->read([BII)I
-HSPLjava/io/FilterInputStream;->reset()V
-HSPLjava/io/FilterInputStream;->skip(J)J
 HSPLjava/io/FilterOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/FilterOutputStream;->close()V
+HSPLjava/io/FilterOutputStream;->flush()V
 HSPLjava/io/FilterOutputStream;->write([B)V
+HSPLjava/io/FilterReader;-><init>(Ljava/io/Reader;)V
+HSPLjava/io/FilterReader;->read()I
+HSPLjava/io/IOException;-><init>()V
 HSPLjava/io/IOException;-><init>(Ljava/lang/String;)V
+HSPLjava/io/IOException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLjava/io/InputStream;-><init>()V
 HSPLjava/io/InputStream;->close()V
 HSPLjava/io/InputStream;->markSupported()Z
@@ -25942,6 +16150,7 @@
 HSPLjava/io/InputStreamReader;->close()V
 HSPLjava/io/InputStreamReader;->read([CII)I
 HSPLjava/io/InputStreamReader;->ready()Z
+HSPLjava/io/InterruptedIOException;-><init>(Ljava/lang/String;)V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;-><init>(Ljava/io/ObjectInputStream;Ljava/io/InputStream;)V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->close()V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->currentBlockRemaining()I
@@ -25966,7 +16175,9 @@
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->refill()V
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->setBlockDataMode(Z)Z
 HSPLjava/io/ObjectInputStream$BlockDataInputStream;->skipBlockData()V
+HSPLjava/io/ObjectInputStream$HandleTable$HandleList;-><init>()V
 HSPLjava/io/ObjectInputStream$HandleTable$HandleList;->add(I)V
+HSPLjava/io/ObjectInputStream$HandleTable;-><init>(I)V
 HSPLjava/io/ObjectInputStream$HandleTable;->assign(Ljava/lang/Object;)I
 HSPLjava/io/ObjectInputStream$HandleTable;->clear()V
 HSPLjava/io/ObjectInputStream$HandleTable;->finish(I)V
@@ -25976,17 +16187,24 @@
 HSPLjava/io/ObjectInputStream$HandleTable;->markDependency(II)V
 HSPLjava/io/ObjectInputStream$HandleTable;->setObject(ILjava/lang/Object;)V
 HSPLjava/io/ObjectInputStream$HandleTable;->size()I
+HSPLjava/io/ObjectInputStream$PeekInputStream;-><init>(Ljava/io/InputStream;)V
 HSPLjava/io/ObjectInputStream$PeekInputStream;->close()V
 HSPLjava/io/ObjectInputStream$PeekInputStream;->peek()I
 HSPLjava/io/ObjectInputStream$PeekInputStream;->read()I
 HSPLjava/io/ObjectInputStream$PeekInputStream;->read([BII)I
 HSPLjava/io/ObjectInputStream$PeekInputStream;->readFully([BII)V
+HSPLjava/io/ObjectInputStream$ValidationList;-><init>()V
 HSPLjava/io/ObjectInputStream$ValidationList;->clear()V
 HSPLjava/io/ObjectInputStream$ValidationList;->doCallbacks()V
 HSPLjava/io/ObjectInputStream;-><init>(Ljava/io/InputStream;)V
+HSPLjava/io/ObjectInputStream;->access$500(Ljava/io/ObjectInputStream;)Z
+HSPLjava/io/ObjectInputStream;->checkResolve(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/io/ObjectInputStream;->clear()V
 HSPLjava/io/ObjectInputStream;->close()V
 HSPLjava/io/ObjectInputStream;->defaultReadFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/ObjectInputStream;->defaultReadObject()V
+HSPLjava/io/ObjectInputStream;->isCustomSubclass()Z
+HSPLjava/io/ObjectInputStream;->latestUserDefinedLoader()Ljava/lang/ClassLoader;
 HSPLjava/io/ObjectInputStream;->readArray(Z)Ljava/lang/Object;
 HSPLjava/io/ObjectInputStream;->readBoolean()Z
 HSPLjava/io/ObjectInputStream;->readByte()B
@@ -26015,6 +16233,7 @@
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->flush()V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->getUTFLength(Ljava/lang/String;)J
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->setBlockDataMode(Z)Z
+HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->warnIfClosed()V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->write([BIIZ)V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeBlockHeader(I)V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeByte(I)V
@@ -26024,9 +16243,15 @@
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeShort(I)V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;)V
 HSPLjava/io/ObjectOutputStream$BlockDataOutputStream;->writeUTF(Ljava/lang/String;J)V
+HSPLjava/io/ObjectOutputStream$HandleTable;-><init>(IF)V
 HSPLjava/io/ObjectOutputStream$HandleTable;->assign(Ljava/lang/Object;)I
+HSPLjava/io/ObjectOutputStream$HandleTable;->clear()V
+HSPLjava/io/ObjectOutputStream$HandleTable;->growEntries()V
 HSPLjava/io/ObjectOutputStream$HandleTable;->growSpine()V
+HSPLjava/io/ObjectOutputStream$HandleTable;->hash(Ljava/lang/Object;)I
+HSPLjava/io/ObjectOutputStream$HandleTable;->insert(Ljava/lang/Object;I)V
 HSPLjava/io/ObjectOutputStream$HandleTable;->lookup(Ljava/lang/Object;)I
+HSPLjava/io/ObjectOutputStream$ReplaceTable;-><init>(IF)V
 HSPLjava/io/ObjectOutputStream$ReplaceTable;->lookup(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/io/ObjectOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/io/ObjectOutputStream;->annotateClass(Ljava/lang/Class;)V
@@ -26034,15 +16259,18 @@
 HSPLjava/io/ObjectOutputStream;->defaultWriteFields(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/ObjectOutputStream;->defaultWriteObject()V
 HSPLjava/io/ObjectOutputStream;->flush()V
+HSPLjava/io/ObjectOutputStream;->isCustomSubclass()Z
 HSPLjava/io/ObjectOutputStream;->verifySubclass()V
 HSPLjava/io/ObjectOutputStream;->writeArray(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
 HSPLjava/io/ObjectOutputStream;->writeByte(I)V
 HSPLjava/io/ObjectOutputStream;->writeClassDesc(Ljava/io/ObjectStreamClass;Z)V
 HSPLjava/io/ObjectOutputStream;->writeClassDescriptor(Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/ObjectOutputStream;->writeEnum(Ljava/lang/Enum;Ljava/io/ObjectStreamClass;Z)V
+HSPLjava/io/ObjectOutputStream;->writeHandle(I)V
 HSPLjava/io/ObjectOutputStream;->writeInt(I)V
 HSPLjava/io/ObjectOutputStream;->writeLong(J)V
 HSPLjava/io/ObjectOutputStream;->writeNonProxyDesc(Ljava/io/ObjectStreamClass;Z)V
+HSPLjava/io/ObjectOutputStream;->writeNull()V
 HSPLjava/io/ObjectOutputStream;->writeObject(Ljava/lang/Object;)V
 HSPLjava/io/ObjectOutputStream;->writeObject0(Ljava/lang/Object;Z)V
 HSPLjava/io/ObjectOutputStream;->writeOrdinaryObject(Ljava/lang/Object;Ljava/io/ObjectStreamClass;Z)V
@@ -26052,12 +16280,26 @@
 HSPLjava/io/ObjectOutputStream;->writeString(Ljava/lang/String;Z)V
 HSPLjava/io/ObjectOutputStream;->writeTypeString(Ljava/lang/String;)V
 HSPLjava/io/ObjectOutputStream;->writeUTF(Ljava/lang/String;)V
+HSPLjava/io/ObjectStreamClass$1;-><init>(Ljava/io/ObjectStreamClass;)V
+HSPLjava/io/ObjectStreamClass$1;->run()Ljava/lang/Long;
+HSPLjava/io/ObjectStreamClass$1;->run()Ljava/lang/Object;
+HSPLjava/io/ObjectStreamClass$2;-><init>(Ljava/io/ObjectStreamClass;Ljava/lang/Class;)V
+HSPLjava/io/ObjectStreamClass$2;->run()Ljava/lang/Object;
 HSPLjava/io/ObjectStreamClass$2;->run()Ljava/lang/Void;
+HSPLjava/io/ObjectStreamClass$3;-><init>()V
 HSPLjava/io/ObjectStreamClass$3;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I
 HSPLjava/io/ObjectStreamClass$3;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLjava/io/ObjectStreamClass$EntryFuture;->get()Ljava/lang/Object;
-HSPLjava/io/ObjectStreamClass$EntryFuture;->getOwner()Ljava/lang/Thread;
+HSPLjava/io/ObjectStreamClass$4;-><init>()V
+HSPLjava/io/ObjectStreamClass$5;-><init>()V
+HSPLjava/io/ObjectStreamClass$5;->compare(Ljava/io/ObjectStreamClass$MemberSignature;Ljava/io/ObjectStreamClass$MemberSignature;)I
+HSPLjava/io/ObjectStreamClass$5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLjava/io/ObjectStreamClass$Caches;->access$200()Ljava/lang/ref/ReferenceQueue;
+HSPLjava/io/ObjectStreamClass$Caches;->access$2600()Ljava/lang/ref/ReferenceQueue;
+HSPLjava/io/ObjectStreamClass$ClassDataSlot;-><init>(Ljava/io/ObjectStreamClass;Z)V
+HSPLjava/io/ObjectStreamClass$EntryFuture;-><init>()V
+HSPLjava/io/ObjectStreamClass$EntryFuture;-><init>(Ljava/io/ObjectStreamClass$1;)V
 HSPLjava/io/ObjectStreamClass$EntryFuture;->set(Ljava/lang/Object;)Z
+HSPLjava/io/ObjectStreamClass$ExceptionInfo;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/io/ObjectStreamClass$FieldReflector;-><init>([Ljava/io/ObjectStreamField;)V
 HSPLjava/io/ObjectStreamClass$FieldReflector;->getFields()[Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass$FieldReflector;->getObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
@@ -26067,13 +16309,40 @@
 HSPLjava/io/ObjectStreamClass$FieldReflectorKey;-><init>(Ljava/lang/Class;[Ljava/io/ObjectStreamField;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/io/ObjectStreamClass$FieldReflectorKey;->hashCode()I
+HSPLjava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Constructor;)V
 HSPLjava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Field;)V
+HSPLjava/io/ObjectStreamClass$MemberSignature;-><init>(Ljava/lang/reflect/Method;)V
+HSPLjava/io/ObjectStreamClass$WeakClassKey;-><init>(Ljava/lang/Class;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/io/ObjectStreamClass$WeakClassKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/io/ObjectStreamClass$WeakClassKey;->hashCode()I
+HSPLjava/io/ObjectStreamClass;-><init>()V
 HSPLjava/io/ObjectStreamClass;-><init>(Ljava/lang/Class;)V
+HSPLjava/io/ObjectStreamClass;->access$000(Ljava/io/ObjectStreamClass;)Ljava/lang/Class;
+HSPLjava/io/ObjectStreamClass;->access$100(Ljava/lang/Class;)J
+HSPLjava/io/ObjectStreamClass;->access$1200(Ljava/io/ObjectStreamClass;)Z
+HSPLjava/io/ObjectStreamClass;->access$1302(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Constructor;)Ljava/lang/reflect/Constructor;
+HSPLjava/io/ObjectStreamClass;->access$1500(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
+HSPLjava/io/ObjectStreamClass;->access$1600(Ljava/io/ObjectStreamClass;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$1602(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$1700(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$1802(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$1902(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$2002(Ljava/io/ObjectStreamClass;Z)Z
+HSPLjava/io/ObjectStreamClass;->access$2102(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$2200(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$2302(Ljava/io/ObjectStreamClass;Ljava/lang/reflect/Method;)Ljava/lang/reflect/Method;
+HSPLjava/io/ObjectStreamClass;->access$2400(Ljava/lang/Class;)Ljava/lang/String;
+HSPLjava/io/ObjectStreamClass;->access$2500([Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/String;
+HSPLjava/io/ObjectStreamClass;->access$400(Ljava/io/ObjectStreamClass;)Z
+HSPLjava/io/ObjectStreamClass;->access$502(Ljava/io/ObjectStreamClass;Ljava/lang/Long;)Ljava/lang/Long;
+HSPLjava/io/ObjectStreamClass;->access$602(Ljava/io/ObjectStreamClass;[Ljava/io/ObjectStreamField;)[Ljava/io/ObjectStreamField;
+HSPLjava/io/ObjectStreamClass;->access$700(Ljava/lang/Class;)Ljava/lang/Long;
+HSPLjava/io/ObjectStreamClass;->access$800(Ljava/lang/Class;)[Ljava/io/ObjectStreamField;
+HSPLjava/io/ObjectStreamClass;->access$900(Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/ObjectStreamClass;->checkDefaultSerialize()V
 HSPLjava/io/ObjectStreamClass;->checkDeserialize()V
 HSPLjava/io/ObjectStreamClass;->checkSerialize()V
+HSPLjava/io/ObjectStreamClass;->classNamesEqual(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLjava/io/ObjectStreamClass;->computeDefaultSUID(Ljava/lang/Class;)J
 HSPLjava/io/ObjectStreamClass;->computeFieldOffsets()V
 HSPLjava/io/ObjectStreamClass;->forClass()Ljava/lang/Class;
@@ -26098,6 +16367,7 @@
 HSPLjava/io/ObjectStreamClass;->getSerialVersionUID()J
 HSPLjava/io/ObjectStreamClass;->getSerializableConstructor(Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
 HSPLjava/io/ObjectStreamClass;->getSuperDesc()Ljava/io/ObjectStreamClass;
+HSPLjava/io/ObjectStreamClass;->getVariantFor(Ljava/lang/Class;)Ljava/io/ObjectStreamClass;
 HSPLjava/io/ObjectStreamClass;->hasReadObjectMethod()Z
 HSPLjava/io/ObjectStreamClass;->hasReadResolveMethod()Z
 HSPLjava/io/ObjectStreamClass;->hasWriteObjectData()Z
@@ -26113,7 +16383,9 @@
 HSPLjava/io/ObjectStreamClass;->lookup(Ljava/lang/Class;Z)Ljava/io/ObjectStreamClass;
 HSPLjava/io/ObjectStreamClass;->matchFields([Ljava/io/ObjectStreamField;Ljava/io/ObjectStreamClass;)[Ljava/io/ObjectStreamField;
 HSPLjava/io/ObjectStreamClass;->newInstance()Ljava/lang/Object;
+HSPLjava/io/ObjectStreamClass;->processQueue(Ljava/lang/ref/ReferenceQueue;Ljava/util/concurrent/ConcurrentMap;)V
 HSPLjava/io/ObjectStreamClass;->readNonProxy(Ljava/io/ObjectInputStream;)V
+HSPLjava/io/ObjectStreamClass;->requireInitialized()V
 HSPLjava/io/ObjectStreamClass;->setObjFieldValues(Ljava/lang/Object;[Ljava/lang/Object;)V
 HSPLjava/io/ObjectStreamClass;->setPrimFieldValues(Ljava/lang/Object;[B)V
 HSPLjava/io/ObjectStreamClass;->writeNonProxy(Ljava/io/ObjectOutputStream;)V
@@ -26141,12 +16413,16 @@
 HSPLjava/io/OutputStreamWriter;-><init>(Ljava/io/OutputStream;Ljava/nio/charset/Charset;)V
 HSPLjava/io/OutputStreamWriter;->close()V
 HSPLjava/io/OutputStreamWriter;->flush()V
+HSPLjava/io/OutputStreamWriter;->write(I)V
 HSPLjava/io/OutputStreamWriter;->write(Ljava/lang/String;II)V
 HSPLjava/io/OutputStreamWriter;->write([CII)V
 HSPLjava/io/PrintStream;-><init>(Ljava/io/OutputStream;)V
+HSPLjava/io/PrintStream;-><init>(Ljava/io/OutputStream;Z)V
+HSPLjava/io/PrintStream;-><init>(ZLjava/io/OutputStream;)V
 HSPLjava/io/PrintStream;->close()V
-HSPLjava/io/PrintWriter;-><init>(Ljava/io/File;)V
+HSPLjava/io/PrintStream;->requireNonNull(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object;
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/OutputStream;)V
+HSPLjava/io/PrintWriter;-><init>(Ljava/io/OutputStream;Z)V
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/Writer;)V
 HSPLjava/io/PrintWriter;-><init>(Ljava/io/Writer;Z)V
 HSPLjava/io/PrintWriter;->append(C)Ljava/io/PrintWriter;
@@ -26157,26 +16433,18 @@
 HSPLjava/io/PrintWriter;->flush()V
 HSPLjava/io/PrintWriter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;
 HSPLjava/io/PrintWriter;->newLine()V
-HPLjava/io/PrintWriter;->print(D)V
-HPLjava/io/PrintWriter;->print(F)V
 HSPLjava/io/PrintWriter;->print(I)V
 HSPLjava/io/PrintWriter;->print(J)V
-HSPLjava/io/PrintWriter;->print(Ljava/lang/Object;)V
 HSPLjava/io/PrintWriter;->print(Ljava/lang/String;)V
-HSPLjava/io/PrintWriter;->print(Z)V
-HSPLjava/io/PrintWriter;->printf(Ljava/lang/String;[Ljava/lang/Object;)Ljava/io/PrintWriter;
 HSPLjava/io/PrintWriter;->println()V
-HPLjava/io/PrintWriter;->println(F)V
-HSPLjava/io/PrintWriter;->println(I)V
-HSPLjava/io/PrintWriter;->println(J)V
 HSPLjava/io/PrintWriter;->println(Ljava/lang/Object;)V
 HSPLjava/io/PrintWriter;->println(Ljava/lang/String;)V
-HSPLjava/io/PrintWriter;->println(Z)V
 HSPLjava/io/PrintWriter;->write(I)V
 HSPLjava/io/PrintWriter;->write(Ljava/lang/String;)V
 HSPLjava/io/PrintWriter;->write(Ljava/lang/String;II)V
 HSPLjava/io/PrintWriter;->write([CII)V
 HSPLjava/io/PushbackInputStream;-><init>(Ljava/io/InputStream;I)V
+HSPLjava/io/PushbackInputStream;->ensureOpen()V
 HSPLjava/io/PushbackInputStream;->read()I
 HSPLjava/io/PushbackInputStream;->read([BII)I
 HSPLjava/io/PushbackInputStream;->unread([BII)V
@@ -26196,6 +16464,7 @@
 HSPLjava/io/RandomAccessFile;->read()I
 HSPLjava/io/RandomAccessFile;->read([B)I
 HSPLjava/io/RandomAccessFile;->read([BII)I
+HSPLjava/io/RandomAccessFile;->readBytes([BII)I
 HSPLjava/io/RandomAccessFile;->readFully([B)V
 HSPLjava/io/RandomAccessFile;->readFully([BII)V
 HSPLjava/io/RandomAccessFile;->readInt()I
@@ -26203,19 +16472,27 @@
 HSPLjava/io/RandomAccessFile;->setLength(J)V
 HSPLjava/io/RandomAccessFile;->write([B)V
 HSPLjava/io/RandomAccessFile;->write([BII)V
-HSPLjava/io/RandomAccessFile;->writeUTF(Ljava/lang/String;)V
+HSPLjava/io/RandomAccessFile;->writeBytes([BII)V
+HSPLjava/io/Reader;-><init>()V
+HSPLjava/io/Reader;-><init>(Ljava/lang/Object;)V
 HSPLjava/io/Reader;->read(Ljava/nio/CharBuffer;)I
 HSPLjava/io/Reader;->read([C)I
 HSPLjava/io/SequenceInputStream;-><init>(Ljava/io/InputStream;Ljava/io/InputStream;)V
 HSPLjava/io/SequenceInputStream;->nextStream()V
 HSPLjava/io/SequenceInputStream;->read()I
+HSPLjava/io/SerialCallbackContext;-><init>(Ljava/lang/Object;Ljava/io/ObjectStreamClass;)V
 HSPLjava/io/SerialCallbackContext;->check()V
+HSPLjava/io/SerialCallbackContext;->checkAndSetUsed()V
+HSPLjava/io/SerialCallbackContext;->getDesc()Ljava/io/ObjectStreamClass;
+HSPLjava/io/SerialCallbackContext;->getObj()Ljava/lang/Object;
+HSPLjava/io/SerialCallbackContext;->setUsed()V
 HSPLjava/io/StringReader;-><init>(Ljava/lang/String;)V
 HSPLjava/io/StringReader;->close()V
 HSPLjava/io/StringReader;->ensureOpen()V
 HSPLjava/io/StringReader;->read()I
 HSPLjava/io/StringReader;->read([CII)I
 HSPLjava/io/StringWriter;-><init>()V
+HSPLjava/io/StringWriter;->append(C)Ljava/io/StringWriter;
 HSPLjava/io/StringWriter;->append(Ljava/lang/CharSequence;)Ljava/io/StringWriter;
 HSPLjava/io/StringWriter;->append(Ljava/lang/CharSequence;)Ljava/io/Writer;
 HSPLjava/io/StringWriter;->close()V
@@ -26225,7 +16502,6 @@
 HSPLjava/io/StringWriter;->write(Ljava/lang/String;)V
 HSPLjava/io/StringWriter;->write(Ljava/lang/String;II)V
 HSPLjava/io/StringWriter;->write([CII)V
-HSPLjava/io/UnixFileSystem;-><init>()V
 HSPLjava/io/UnixFileSystem;->canonicalize(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/io/UnixFileSystem;->checkAccess(Ljava/io/File;I)Z
 HSPLjava/io/UnixFileSystem;->compare(Ljava/io/File;Ljava/io/File;)I
@@ -26235,8 +16511,6 @@
 HSPLjava/io/UnixFileSystem;->getBooleanAttributes(Ljava/io/File;)I
 HSPLjava/io/UnixFileSystem;->getLastModifiedTime(Ljava/io/File;)J
 HSPLjava/io/UnixFileSystem;->getLength(Ljava/io/File;)J
-HSPLjava/io/UnixFileSystem;->getPathSeparator()C
-HSPLjava/io/UnixFileSystem;->getSeparator()C
 HSPLjava/io/UnixFileSystem;->getSpace(Ljava/io/File;I)J
 HSPLjava/io/UnixFileSystem;->hashCode(Ljava/io/File;)I
 HSPLjava/io/UnixFileSystem;->isAbsolute(Ljava/io/File;)Z
@@ -26247,11 +16521,16 @@
 HSPLjava/io/UnixFileSystem;->resolve(Ljava/io/File;)Ljava/lang/String;
 HSPLjava/io/UnixFileSystem;->resolve(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/io/UnixFileSystem;->setLastModifiedTime(Ljava/io/File;J)Z
+HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z
+HSPLjava/io/Writer;-><init>()V
+HSPLjava/io/Writer;-><init>(Ljava/lang/Object;)V
 HSPLjava/io/Writer;->append(C)Ljava/io/Writer;
 HSPLjava/io/Writer;->append(Ljava/lang/CharSequence;)Ljava/io/Writer;
 HSPLjava/io/Writer;->write(Ljava/lang/String;)V
 HSPLjava/lang/AbstractStringBuilder;-><init>(I)V
 HSPLjava/lang/AbstractStringBuilder;->append(C)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->append(D)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->append(F)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(I)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(J)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->append(Ljava/lang/AbstractStringBuilder;)Ljava/lang/AbstractStringBuilder;
@@ -26263,18 +16542,31 @@
 HSPLjava/lang/AbstractStringBuilder;->append([CII)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->appendCodePoint(I)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->appendNull()Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->charAt(I)C
 HSPLjava/lang/AbstractStringBuilder;->codePointAt(I)I
 HSPLjava/lang/AbstractStringBuilder;->delete(II)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->deleteCharAt(I)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->ensureCapacity(I)V
 HSPLjava/lang/AbstractStringBuilder;->ensureCapacityInternal(I)V
 HSPLjava/lang/AbstractStringBuilder;->getChars(II[CI)V
+HSPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;)I
+HSPLjava/lang/AbstractStringBuilder;->indexOf(Ljava/lang/String;I)I
+HSPLjava/lang/AbstractStringBuilder;->insert(IC)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->insert(II)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/AbstractStringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->lastIndexOf(Ljava/lang/String;I)I
+HSPLjava/lang/AbstractStringBuilder;->length()I
 HSPLjava/lang/AbstractStringBuilder;->newCapacity(I)I
 HSPLjava/lang/AbstractStringBuilder;->replace(IILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
+HSPLjava/lang/AbstractStringBuilder;->setCharAt(IC)V
 HSPLjava/lang/AbstractStringBuilder;->setLength(I)V
+HSPLjava/lang/AbstractStringBuilder;->substring(I)Ljava/lang/String;
 HSPLjava/lang/AbstractStringBuilder;->substring(II)Ljava/lang/String;
-HSPLjava/lang/ArrayIndexOutOfBoundsException;-><init>(Ljava/lang/String;)V
+HSPLjava/lang/Boolean;-><init>(Z)V
 HSPLjava/lang/Boolean;->booleanValue()Z
 HSPLjava/lang/Boolean;->compare(ZZ)I
+HSPLjava/lang/Boolean;->compareTo(Ljava/lang/Boolean;)I
+HSPLjava/lang/Boolean;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Boolean;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/Boolean;->getBoolean(Ljava/lang/String;)Z
 HSPLjava/lang/Boolean;->hashCode()I
@@ -26288,39 +16580,35 @@
 HSPLjava/lang/BootClassLoader;->findResource(Ljava/lang/String;)Ljava/net/URL;
 HSPLjava/lang/BootClassLoader;->findResources(Ljava/lang/String;)Ljava/util/Enumeration;
 HSPLjava/lang/BootClassLoader;->getInstance()Ljava/lang/BootClassLoader;
-HSPLjava/lang/BootClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package;
 HSPLjava/lang/BootClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL;
 HSPLjava/lang/BootClassLoader;->getResources(Ljava/lang/String;)Ljava/util/Enumeration;
 HSPLjava/lang/BootClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
 HSPLjava/lang/Byte;-><init>(B)V
 HSPLjava/lang/Byte;->byteValue()B
-HSPLjava/lang/Byte;->hashCode()I
+HSPLjava/lang/Byte;->compare(BB)I
 HSPLjava/lang/Byte;->toString()Ljava/lang/String;
 HSPLjava/lang/Byte;->toUnsignedInt(B)I
 HSPLjava/lang/Byte;->valueOf(B)Ljava/lang/Byte;
 HSPLjava/lang/CaseMapper;->toLowerCase(Ljava/util/Locale;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/lang/CaseMapper;->toUpperCase(Ljava/util/Locale;Ljava/lang/String;I)Ljava/lang/String;
 HSPLjava/lang/CaseMapper;->upperIndex(I)I
-HSPLjava/lang/Character$Subset;->equals(Ljava/lang/Object;)Z
-HSPLjava/lang/Character$Subset;->hashCode()I
+HSPLjava/lang/Character;-><init>(C)V
 HSPLjava/lang/Character;->charCount(I)I
 HSPLjava/lang/Character;->charValue()C
 HSPLjava/lang/Character;->codePointAt(Ljava/lang/CharSequence;I)I
+HSPLjava/lang/Character;->codePointAtImpl([CII)I
 HSPLjava/lang/Character;->codePointBefore(Ljava/lang/CharSequence;I)I
 HSPLjava/lang/Character;->codePointCount(Ljava/lang/CharSequence;II)I
-HSPLjava/lang/Character;->codePointCountImpl([CII)I
-HSPLjava/lang/Character;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Character;->digit(CI)I
 HSPLjava/lang/Character;->digit(II)I
 HSPLjava/lang/Character;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/Character;->forDigit(II)C
 HSPLjava/lang/Character;->getDirectionality(C)B
 HSPLjava/lang/Character;->getDirectionality(I)B
-HSPLjava/lang/Character;->getNumericValue(C)I
-HSPLjava/lang/Character;->getNumericValue(I)I
 HSPLjava/lang/Character;->getType(I)I
 HSPLjava/lang/Character;->hashCode()I
-HSPLjava/lang/Character;->isAlphabetic(I)Z
+HSPLjava/lang/Character;->hashCode(C)I
+HSPLjava/lang/Character;->isBmpCodePoint(I)Z
 HSPLjava/lang/Character;->isDigit(C)Z
 HSPLjava/lang/Character;->isDigit(I)Z
 HSPLjava/lang/Character;->isHighSurrogate(C)Z
@@ -26329,14 +16617,11 @@
 HSPLjava/lang/Character;->isLetterOrDigit(C)Z
 HSPLjava/lang/Character;->isLetterOrDigit(I)Z
 HSPLjava/lang/Character;->isLowSurrogate(C)Z
-HSPLjava/lang/Character;->isSupplementaryCodePoint(I)Z
 HSPLjava/lang/Character;->isUpperCase(C)Z
 HSPLjava/lang/Character;->isUpperCase(I)Z
 HSPLjava/lang/Character;->isValidCodePoint(I)Z
 HSPLjava/lang/Character;->isWhitespace(C)Z
 HSPLjava/lang/Character;->isWhitespace(I)Z
-HSPLjava/lang/Character;->offsetByCodePointsImpl([CIIII)I
-HSPLjava/lang/Character;->toChars(I)[C
 HSPLjava/lang/Character;->toChars(I[CI)I
 HSPLjava/lang/Character;->toCodePoint(CC)I
 HSPLjava/lang/Character;->toLowerCase(C)C
@@ -26344,12 +16629,16 @@
 HSPLjava/lang/Character;->toString()Ljava/lang/String;
 HSPLjava/lang/Character;->toString(C)Ljava/lang/String;
 HSPLjava/lang/Character;->toUpperCase(C)C
+HSPLjava/lang/Character;->toUpperCase(I)I
 HSPLjava/lang/Character;->valueOf(C)Ljava/lang/Character;
+HSPLjava/lang/Class$Caches;->access$000()Llibcore/util/BasicLruCache;
 HSPLjava/lang/Class;->asSubclass(Ljava/lang/Class;)Ljava/lang/Class;
 HSPLjava/lang/Class;->cast(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/Class;->classNameImpliesTopLevel()Z
 HSPLjava/lang/Class;->findInterfaceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLjava/lang/Class;->forName(Ljava/lang/String;)Ljava/lang/Class;
 HSPLjava/lang/Class;->forName(Ljava/lang/String;ZLjava/lang/ClassLoader;)Ljava/lang/Class;
+HSPLjava/lang/Class;->getAccessFlags()I
 HSPLjava/lang/Class;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
 HSPLjava/lang/Class;->getCanonicalName()Ljava/lang/String;
 HSPLjava/lang/Class;->getClassLoader()Ljava/lang/ClassLoader;
@@ -26358,11 +16647,16 @@
 HSPLjava/lang/Class;->getConstructor0([Ljava/lang/Class;I)Ljava/lang/reflect/Constructor;
 HSPLjava/lang/Class;->getConstructors()[Ljava/lang/reflect/Constructor;
 HSPLjava/lang/Class;->getDeclaredConstructor([Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
+HSPLjava/lang/Class;->getDeclaredConstructors()[Ljava/lang/reflect/Constructor;
 HSPLjava/lang/Class;->getDeclaredMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLjava/lang/Class;->getDeclaredMethods()[Ljava/lang/reflect/Method;
+HSPLjava/lang/Class;->getEnclosingConstructor()Ljava/lang/reflect/Constructor;
+HSPLjava/lang/Class;->getEnclosingMethod()Ljava/lang/reflect/Method;
 HSPLjava/lang/Class;->getEnumConstants()[Ljava/lang/Object;
+HSPLjava/lang/Class;->getEnumConstantsShared()[Ljava/lang/Object;
 HSPLjava/lang/Class;->getField(Ljava/lang/String;)Ljava/lang/reflect/Field;
 HSPLjava/lang/Class;->getFields()[Ljava/lang/reflect/Field;
+HSPLjava/lang/Class;->getGenericInterfaces()[Ljava/lang/reflect/Type;
 HSPLjava/lang/Class;->getGenericSuperclass()Ljava/lang/reflect/Type;
 HSPLjava/lang/Class;->getInterfaces()[Ljava/lang/Class;
 HSPLjava/lang/Class;->getMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
@@ -26371,12 +16665,14 @@
 HSPLjava/lang/Class;->getModifiers()I
 HSPLjava/lang/Class;->getName()Ljava/lang/String;
 HSPLjava/lang/Class;->getPackage()Ljava/lang/Package;
+HSPLjava/lang/Class;->getPackageName$()Ljava/lang/String;
 HSPLjava/lang/Class;->getPublicFieldsRecursive(Ljava/util/List;)V
+HSPLjava/lang/Class;->getPublicMethodRecursive(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
 HSPLjava/lang/Class;->getPublicMethodsInternal(Ljava/util/List;)V
 HSPLjava/lang/Class;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;
+HSPLjava/lang/Class;->getSignatureAttribute()Ljava/lang/String;
 HSPLjava/lang/Class;->getSimpleName()Ljava/lang/String;
 HSPLjava/lang/Class;->getSuperclass()Ljava/lang/Class;
-HSPLjava/lang/Class;->getTypeName()Ljava/lang/String;
 HSPLjava/lang/Class;->getTypeParameters()[Ljava/lang/reflect/TypeVariable;
 HSPLjava/lang/Class;->isAnnotation()Z
 HSPLjava/lang/Class;->isAnnotationPresent(Ljava/lang/Class;)Z
@@ -26386,6 +16682,7 @@
 HSPLjava/lang/Class;->isInstance(Ljava/lang/Object;)Z
 HSPLjava/lang/Class;->isInterface()Z
 HSPLjava/lang/Class;->isLocalClass()Z
+HSPLjava/lang/Class;->isLocalOrAnonymousClass()Z
 HSPLjava/lang/Class;->isMemberClass()Z
 HSPLjava/lang/Class;->isPrimitive()Z
 HSPLjava/lang/Class;->resolveName(Ljava/lang/String;)Ljava/lang/String;
@@ -26393,14 +16690,15 @@
 HSPLjava/lang/ClassCastException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/ClassLoader;-><init>()V
 HSPLjava/lang/ClassLoader;-><init>(Ljava/lang/ClassLoader;)V
-HSPLjava/lang/ClassLoader;->access$000()Ljava/lang/ClassLoader;
+HSPLjava/lang/ClassLoader;-><init>(Ljava/lang/Void;Ljava/lang/ClassLoader;)V
+HSPLjava/lang/ClassLoader;->checkCreateClassLoader()Ljava/lang/Void;
 HSPLjava/lang/ClassLoader;->definePackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;)Ljava/lang/Package;
 HSPLjava/lang/ClassLoader;->findLoadedClass(Ljava/lang/String;)Ljava/lang/Class;
+HSPLjava/lang/ClassLoader;->getClassLoader(Ljava/lang/Class;)Ljava/lang/ClassLoader;
 HSPLjava/lang/ClassLoader;->getPackage(Ljava/lang/String;)Ljava/lang/Package;
 HSPLjava/lang/ClassLoader;->getParent()Ljava/lang/ClassLoader;
 HSPLjava/lang/ClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL;
 HSPLjava/lang/ClassLoader;->getResourceAsStream(Ljava/lang/String;)Ljava/io/InputStream;
-HSPLjava/lang/ClassLoader;->getResources(Ljava/lang/String;)Ljava/util/Enumeration;
 HSPLjava/lang/ClassLoader;->getSystemClassLoader()Ljava/lang/ClassLoader;
 HSPLjava/lang/ClassLoader;->loadClass(Ljava/lang/String;)Ljava/lang/Class;
 HSPLjava/lang/ClassLoader;->loadClass(Ljava/lang/String;Z)Ljava/lang/Class;
@@ -26410,29 +16708,36 @@
 HSPLjava/lang/Daemons$Daemon;->interrupt(Ljava/lang/Thread;)V
 HSPLjava/lang/Daemons$Daemon;->isRunning()Z
 HSPLjava/lang/Daemons$Daemon;->run()V
-HSPLjava/lang/Daemons$Daemon;->start()V
 HSPLjava/lang/Daemons$Daemon;->startInternal()V
 HSPLjava/lang/Daemons$Daemon;->startPostZygoteFork()V
 HSPLjava/lang/Daemons$Daemon;->stop()V
+HSPLjava/lang/Daemons$FinalizerDaemon;->access$200()Ljava/lang/Daemons$FinalizerDaemon;
+HSPLjava/lang/Daemons$FinalizerDaemon;->access$900(Ljava/lang/Daemons$FinalizerDaemon;)Ljava/util/concurrent/atomic/AtomicInteger;
 HSPLjava/lang/Daemons$FinalizerDaemon;->doFinalize(Ljava/lang/ref/FinalizerReference;)V
 HSPLjava/lang/Daemons$FinalizerDaemon;->runInternal()V
+HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->access$300()Ljava/lang/Daemons$FinalizerWatchdogDaemon;
+HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->access$600(Ljava/lang/Daemons$FinalizerWatchdogDaemon;)V
+HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->access$700(Ljava/lang/Daemons$FinalizerWatchdogDaemon;)V
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->getNeedToWork()Z
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->goToSleep()V
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->runInternal()V
-HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepFor(J)Z
+HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepForMillis(J)Z
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepUntilNeeded()Z
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->waitForFinalization()Ljava/lang/Object;
 HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->wakeUp()V
 HSPLjava/lang/Daemons$HeapTaskDaemon;->interrupt(Ljava/lang/Thread;)V
 HSPLjava/lang/Daemons$HeapTaskDaemon;->runInternal()V
 HSPLjava/lang/Daemons$ReferenceQueueDaemon;->runInternal()V
-HSPLjava/lang/Daemons;->start()V
+HSPLjava/lang/Daemons;->access$400()Ljava/util/concurrent/CountDownLatch;
+HSPLjava/lang/Daemons;->access$802(J)J
+HSPLjava/lang/Daemons;->startPostZygoteFork()V
+HSPLjava/lang/Daemons;->stop()V
+HSPLjava/lang/Double;-><init>(D)V
 HSPLjava/lang/Double;->compare(DD)I
-HSPLjava/lang/Double;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Double;->doubleToLongBits(D)J
 HSPLjava/lang/Double;->doubleValue()D
 HSPLjava/lang/Double;->equals(Ljava/lang/Object;)Z
-HSPLjava/lang/Double;->hashCode()I
+HSPLjava/lang/Double;->floatValue()F
 HSPLjava/lang/Double;->isInfinite(D)Z
 HSPLjava/lang/Double;->isNaN(D)Z
 HSPLjava/lang/Double;->longValue()J
@@ -26444,16 +16749,19 @@
 HSPLjava/lang/Enum$1;->create(Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLjava/lang/Enum$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/lang/Enum;-><init>(Ljava/lang/String;I)V
+HSPLjava/lang/Enum;->access$000(Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLjava/lang/Enum;->compareTo(Ljava/lang/Enum;)I
 HSPLjava/lang/Enum;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Enum;->enumValues(Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLjava/lang/Enum;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/Enum;->getDeclaringClass()Ljava/lang/Class;
+HSPLjava/lang/Enum;->getSharedConstants(Ljava/lang/Class;)[Ljava/lang/Enum;
 HSPLjava/lang/Enum;->hashCode()I
 HSPLjava/lang/Enum;->name()Ljava/lang/String;
 HSPLjava/lang/Enum;->ordinal()I
 HSPLjava/lang/Enum;->toString()Ljava/lang/String;
 HSPLjava/lang/Enum;->valueOf(Ljava/lang/Class;Ljava/lang/String;)Ljava/lang/Enum;
+HSPLjava/lang/Error;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Exception;-><init>()V
 HSPLjava/lang/Exception;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Exception;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
@@ -26462,12 +16770,14 @@
 HSPLjava/lang/Float;-><init>(F)V
 HSPLjava/lang/Float;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Float;->compare(FF)I
+HSPLjava/lang/Float;->compareTo(Ljava/lang/Float;)I
 HSPLjava/lang/Float;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/Float;->doubleValue()D
 HSPLjava/lang/Float;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/Float;->floatToIntBits(F)I
 HSPLjava/lang/Float;->floatValue()F
 HSPLjava/lang/Float;->hashCode()I
+HSPLjava/lang/Float;->hashCode(F)I
 HSPLjava/lang/Float;->isFinite(F)Z
 HSPLjava/lang/Float;->isInfinite(F)Z
 HSPLjava/lang/Float;->isNaN(F)Z
@@ -26476,13 +16786,10 @@
 HSPLjava/lang/Float;->toString(F)Ljava/lang/String;
 HSPLjava/lang/Float;->valueOf(F)Ljava/lang/Float;
 HSPLjava/lang/IllegalAccessException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/IllegalArgumentException;-><init>()V
 HSPLjava/lang/IllegalArgumentException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/IllegalStateException;-><init>()V
 HSPLjava/lang/IllegalStateException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/IllegalStateException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
-HPLjava/lang/IllegalStateException;-><init>(Ljava/lang/Throwable;)V
-HSPLjava/lang/InheritableThreadLocal;-><init>()V
+HSPLjava/lang/IncompatibleClassChangeError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/InheritableThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
 HSPLjava/lang/InheritableThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
 HSPLjava/lang/Integer;-><init>(I)V
@@ -26493,10 +16800,12 @@
 HSPLjava/lang/Integer;->decode(Ljava/lang/String;)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->doubleValue()D
 HSPLjava/lang/Integer;->equals(Ljava/lang/Object;)Z
+HSPLjava/lang/Integer;->formatUnsignedInt(II[CII)I
 HSPLjava/lang/Integer;->getChars(II[C)V
 HSPLjava/lang/Integer;->getInteger(Ljava/lang/String;I)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->getInteger(Ljava/lang/String;Ljava/lang/Integer;)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->hashCode()I
+HSPLjava/lang/Integer;->hashCode(I)I
 HSPLjava/lang/Integer;->highestOneBit(I)I
 HSPLjava/lang/Integer;->intValue()I
 HSPLjava/lang/Integer;->longValue()J
@@ -26513,16 +16822,19 @@
 HSPLjava/lang/Integer;->rotateRight(II)I
 HSPLjava/lang/Integer;->shortValue()S
 HSPLjava/lang/Integer;->signum(I)I
+HSPLjava/lang/Integer;->stringSize(I)I
 HSPLjava/lang/Integer;->toBinaryString(I)Ljava/lang/String;
 HSPLjava/lang/Integer;->toHexString(I)Ljava/lang/String;
 HSPLjava/lang/Integer;->toString()Ljava/lang/String;
 HSPLjava/lang/Integer;->toString(I)Ljava/lang/String;
 HSPLjava/lang/Integer;->toString(II)Ljava/lang/String;
+HSPLjava/lang/Integer;->toUnsignedString0(II)Ljava/lang/String;
 HSPLjava/lang/Integer;->valueOf(I)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;)Ljava/lang/Integer;
 HSPLjava/lang/Integer;->valueOf(Ljava/lang/String;I)Ljava/lang/Integer;
 HSPLjava/lang/InterruptedException;-><init>()V
 HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V
+HSPLjava/lang/LinkageError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Long;-><init>(J)V
 HSPLjava/lang/Long;->bitCount(J)I
 HSPLjava/lang/Long;->compare(JJ)I
@@ -26537,34 +16849,40 @@
 HSPLjava/lang/Long;->getLong(Ljava/lang/String;J)Ljava/lang/Long;
 HSPLjava/lang/Long;->getLong(Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;
 HSPLjava/lang/Long;->hashCode()I
+HSPLjava/lang/Long;->hashCode(J)I
 HSPLjava/lang/Long;->highestOneBit(J)J
 HSPLjava/lang/Long;->intValue()I
 HSPLjava/lang/Long;->longValue()J
 HSPLjava/lang/Long;->lowestOneBit(J)J
-HSPLjava/lang/Long;->max(JJ)J
 HSPLjava/lang/Long;->numberOfLeadingZeros(J)I
 HSPLjava/lang/Long;->numberOfTrailingZeros(J)I
 HSPLjava/lang/Long;->parseLong(Ljava/lang/String;)J
 HSPLjava/lang/Long;->parseLong(Ljava/lang/String;I)J
-HSPLjava/lang/Long;->parseUnsignedLong(Ljava/lang/String;I)J
 HSPLjava/lang/Long;->reverse(J)J
 HSPLjava/lang/Long;->reverseBytes(J)J
 HSPLjava/lang/Long;->rotateLeft(JI)J
 HSPLjava/lang/Long;->rotateRight(JI)J
 HSPLjava/lang/Long;->signum(J)I
+HSPLjava/lang/Long;->stringSize(J)I
+HSPLjava/lang/Long;->sum(JJ)J
 HSPLjava/lang/Long;->toHexString(J)Ljava/lang/String;
 HSPLjava/lang/Long;->toString()Ljava/lang/String;
 HSPLjava/lang/Long;->toString(J)Ljava/lang/String;
 HSPLjava/lang/Long;->toString(JI)Ljava/lang/String;
+HSPLjava/lang/Long;->toUnsignedString0(JI)Ljava/lang/String;
 HSPLjava/lang/Long;->valueOf(J)Ljava/lang/Long;
 HSPLjava/lang/Long;->valueOf(Ljava/lang/String;)Ljava/lang/Long;
+HSPLjava/lang/Long;->valueOf(Ljava/lang/String;I)Ljava/lang/Long;
 HSPLjava/lang/Math;->abs(D)D
 HSPLjava/lang/Math;->abs(F)F
 HSPLjava/lang/Math;->abs(I)I
 HSPLjava/lang/Math;->abs(J)J
-HSPLjava/lang/Math;->addExact(II)I
 HSPLjava/lang/Math;->addExact(JJ)J
+HSPLjava/lang/Math;->copySign(FF)F
+HSPLjava/lang/Math;->floorDiv(II)I
+HSPLjava/lang/Math;->floorDiv(JJ)J
 HSPLjava/lang/Math;->floorMod(II)I
+HSPLjava/lang/Math;->floorMod(JJ)J
 HSPLjava/lang/Math;->max(DD)D
 HSPLjava/lang/Math;->max(FF)F
 HSPLjava/lang/Math;->max(II)I
@@ -26573,22 +16891,24 @@
 HSPLjava/lang/Math;->min(FF)F
 HSPLjava/lang/Math;->min(II)I
 HSPLjava/lang/Math;->min(JJ)J
-HSPLjava/lang/Math;->multiplyExact(II)I
 HSPLjava/lang/Math;->multiplyExact(JJ)J
 HSPLjava/lang/Math;->nextAfter(DD)D
+HSPLjava/lang/Math;->powerOfTwoD(I)D
 HSPLjava/lang/Math;->random()D
+HSPLjava/lang/Math;->randomLongInternal()J
 HSPLjava/lang/Math;->round(D)J
 HSPLjava/lang/Math;->round(F)I
 HSPLjava/lang/Math;->scalb(FI)F
 HSPLjava/lang/Math;->setRandomSeedInternal(J)V
 HSPLjava/lang/Math;->signum(F)F
+HSPLjava/lang/Math;->subtractExact(JJ)J
 HSPLjava/lang/Math;->toDegrees(D)D
 HSPLjava/lang/Math;->toIntExact(J)I
 HSPLjava/lang/Math;->toRadians(D)D
-HSPLjava/lang/Math;->ulp(F)F
 HSPLjava/lang/NoClassDefFoundError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/NoSuchFieldException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/NoSuchMethodError;-><init>(Ljava/lang/String;)V
+HSPLjava/lang/NoSuchMethodException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/NullPointerException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/Number;-><init>()V
 HSPLjava/lang/Object;-><init>()V
@@ -26601,50 +16921,50 @@
 HSPLjava/lang/Object;->toString()Ljava/lang/String;
 HSPLjava/lang/Object;->wait()V
 HSPLjava/lang/Object;->wait(J)V
+HSPLjava/lang/Package;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/net/URL;Ljava/lang/ClassLoader;)V
 HSPLjava/lang/Package;->getName()Ljava/lang/String;
-HSPLjava/lang/ProcessBuilder$NullInputStream;-><init>()V
-HSPLjava/lang/ProcessBuilder$NullInputStream;->read()I
-HSPLjava/lang/ProcessBuilder$NullOutputStream;-><init>()V
+HSPLjava/lang/Process;-><init>()V
 HSPLjava/lang/ProcessBuilder;-><init>([Ljava/lang/String;)V
+HSPLjava/lang/ProcessBuilder;->directory(Ljava/io/File;)Ljava/lang/ProcessBuilder;
 HSPLjava/lang/ProcessBuilder;->environment([Ljava/lang/String;)Ljava/lang/ProcessBuilder;
 HSPLjava/lang/ProcessBuilder;->start()Ljava/lang/Process;
-HSPLjava/lang/ProcessEnvironment$ExternalData;->getBytes()[B
-HSPLjava/lang/ProcessEnvironment$ExternalData;->hashCode()I
-HSPLjava/lang/ProcessEnvironment$StringEnvironment;-><init>(Ljava/util/Map;)V
-HSPLjava/lang/ProcessEnvironment$Value;->valueOf([B)Ljava/lang/ProcessEnvironment$Value;
-HSPLjava/lang/ProcessEnvironment$Variable;->valueOf([B)Ljava/lang/ProcessEnvironment$Variable;
+HSPLjava/lang/ProcessEnvironment;->toEnvironmentBlock(Ljava/util/Map;[I)[B
 HSPLjava/lang/ProcessImpl;->start([Ljava/lang/String;Ljava/util/Map;Ljava/lang/String;[Ljava/lang/ProcessBuilder$Redirect;Z)Ljava/lang/Process;
+HSPLjava/lang/ProcessImpl;->toCString(Ljava/lang/String;)[B
+HSPLjava/lang/ReflectiveOperationException;-><init>(Ljava/lang/String;)V
+HSPLjava/lang/ReflectiveOperationException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+HSPLjava/lang/ReflectiveOperationException;-><init>(Ljava/lang/Throwable;)V
 HSPLjava/lang/Runtime;->addShutdownHook(Ljava/lang/Thread;)V
 HSPLjava/lang/Runtime;->availableProcessors()I
-HSPLjava/lang/Runtime;->exec(Ljava/lang/String;)Ljava/lang/Process;
-HSPLjava/lang/Runtime;->exec(Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
 HSPLjava/lang/Runtime;->exec([Ljava/lang/String;[Ljava/lang/String;Ljava/io/File;)Ljava/lang/Process;
 HSPLjava/lang/Runtime;->gc()V
 HSPLjava/lang/Runtime;->getLibPaths()[Ljava/lang/String;
 HSPLjava/lang/Runtime;->getRuntime()Ljava/lang/Runtime;
-HSPLjava/lang/Runtime;->initLibPaths()[Ljava/lang/String;
+HSPLjava/lang/Runtime;->load0(Ljava/lang/Class;Ljava/lang/String;)V
 HSPLjava/lang/Runtime;->loadLibrary0(Ljava/lang/Class;Ljava/lang/String;)V
 HSPLjava/lang/Runtime;->loadLibrary0(Ljava/lang/ClassLoader;Ljava/lang/Class;Ljava/lang/String;)V
+HSPLjava/lang/Runtime;->nativeLoad(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/String;
 HSPLjava/lang/Runtime;->runFinalization()V
 HSPLjava/lang/RuntimeException;-><init>()V
 HSPLjava/lang/RuntimeException;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/RuntimeException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLjava/lang/RuntimeException;-><init>(Ljava/lang/Throwable;)V
-HSPLjava/lang/RuntimePermission;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/SecurityException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/Short;->hashCode()I
+HSPLjava/lang/Short;-><init>(S)V
 HSPLjava/lang/Short;->reverseBytes(S)S
+HSPLjava/lang/Short;->shortValue()S
 HSPLjava/lang/Short;->valueOf(S)Ljava/lang/Short;
-HSPLjava/lang/StackTraceElement;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
 HSPLjava/lang/StackTraceElement;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/StackTraceElement;->getClassName()Ljava/lang/String;
+HSPLjava/lang/StackTraceElement;->getFileName()Ljava/lang/String;
 HSPLjava/lang/StackTraceElement;->getLineNumber()I
 HSPLjava/lang/StackTraceElement;->getMethodName()Ljava/lang/String;
+HSPLjava/lang/StackTraceElement;->isNativeMethod()Z
 HSPLjava/lang/StackTraceElement;->toString()Ljava/lang/String;
-HPLjava/lang/StrictMath;->toIntExact(J)I
 HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/lang/String$CaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
 HSPLjava/lang/String;->codePointAt(I)I
+HSPLjava/lang/String;->codePointBefore(I)I
 HSPLjava/lang/String;->codePointCount(II)I
 HSPLjava/lang/String;->compareTo(Ljava/lang/Object;)I
 HSPLjava/lang/String;->compareToIgnoreCase(Ljava/lang/String;)I
@@ -26659,12 +16979,14 @@
 HSPLjava/lang/String;->getBytes(Ljava/lang/String;)[B
 HSPLjava/lang/String;->getBytes(Ljava/nio/charset/Charset;)[B
 HSPLjava/lang/String;->getChars(II[CI)V
+HSPLjava/lang/String;->getChars([CI)V
 HSPLjava/lang/String;->hashCode()I
 HSPLjava/lang/String;->indexOf(I)I
 HSPLjava/lang/String;->indexOf(II)I
 HSPLjava/lang/String;->indexOf(Ljava/lang/String;)I
 HSPLjava/lang/String;->indexOf(Ljava/lang/String;I)I
 HSPLjava/lang/String;->indexOf(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLjava/lang/String;->indexOf([CIILjava/lang/String;I)I
 HSPLjava/lang/String;->indexOf([CII[CIII)I
 HSPLjava/lang/String;->isEmpty()Z
 HSPLjava/lang/String;->join(Ljava/lang/CharSequence;Ljava/lang/Iterable;)Ljava/lang/String;
@@ -26672,7 +16994,9 @@
 HSPLjava/lang/String;->lastIndexOf(I)I
 HSPLjava/lang/String;->lastIndexOf(II)I
 HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;)I
+HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;I)I
 HSPLjava/lang/String;->lastIndexOf(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLjava/lang/String;->lastIndexOf([CIILjava/lang/String;I)I
 HSPLjava/lang/String;->lastIndexOf([CII[CIII)I
 HSPLjava/lang/String;->length()I
 HSPLjava/lang/String;->matches(Ljava/lang/String;)Z
@@ -26696,11 +17020,13 @@
 HSPLjava/lang/String;->toUpperCase(Ljava/util/Locale;)Ljava/lang/String;
 HSPLjava/lang/String;->trim()Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(C)Ljava/lang/String;
+HSPLjava/lang/String;->valueOf(D)Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(F)Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(I)Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(J)Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(Ljava/lang/Object;)Ljava/lang/String;
 HSPLjava/lang/String;->valueOf(Z)Ljava/lang/String;
+HSPLjava/lang/String;->valueOf([C)Ljava/lang/String;
 HSPLjava/lang/StringBuffer;-><init>()V
 HSPLjava/lang/StringBuffer;-><init>(I)V
 HSPLjava/lang/StringBuffer;-><init>(Ljava/lang/String;)V
@@ -26712,10 +17038,8 @@
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/CharSequence;II)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/Object;)Ljava/lang/StringBuffer;
-HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/String;)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
-HSPLjava/lang/StringBuffer;->append(Z)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->append([CII)Ljava/lang/StringBuffer;
 HSPLjava/lang/StringBuffer;->charAt(I)C
 HSPLjava/lang/StringBuffer;->codePointAt(I)I
@@ -26742,21 +17066,22 @@
 HSPLjava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/StringBuilder;->append(Ljava/lang/String;)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->append(Z)Ljava/lang/StringBuilder;
+HSPLjava/lang/StringBuilder;->append([C)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->append([CII)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->appendCodePoint(I)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->charAt(I)C
-HSPLjava/lang/StringBuilder;->codePointCount(II)I
 HSPLjava/lang/StringBuilder;->delete(II)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->deleteCharAt(I)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->ensureCapacity(I)V
 HSPLjava/lang/StringBuilder;->getChars(II[CI)V
 HSPLjava/lang/StringBuilder;->indexOf(Ljava/lang/String;)I
+HSPLjava/lang/StringBuilder;->indexOf(Ljava/lang/String;I)I
 HSPLjava/lang/StringBuilder;->insert(IC)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->insert(II)Ljava/lang/StringBuilder;
+HSPLjava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/AbstractStringBuilder;
 HSPLjava/lang/StringBuilder;->insert(ILjava/lang/String;)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->lastIndexOf(Ljava/lang/String;I)I
 HSPLjava/lang/StringBuilder;->length()I
-HSPLjava/lang/StringBuilder;->offsetByCodePoints(II)I
 HSPLjava/lang/StringBuilder;->replace(IILjava/lang/String;)Ljava/lang/StringBuilder;
 HSPLjava/lang/StringBuilder;->setCharAt(IC)V
 HSPLjava/lang/StringBuilder;->setLength(I)V
@@ -26774,31 +17099,10 @@
 HSPLjava/lang/StringFactory;->newStringFromChars([CII)Ljava/lang/String;
 HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/lang/System$PropertiesWithNonOverrideableDefaults;->remove(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/lang/System;->addLegacyLocaleSystemProperties()V
-HSPLjava/lang/System;->arraycopy([BI[BII)V
 HSPLjava/lang/System;->arraycopy([CI[CII)V
-HSPLjava/lang/System;->arraycopy([FI[FII)V
-HSPLjava/lang/System;->arraycopy([II[III)V
-HSPLjava/lang/System;->arraycopy([JI[JII)V
-HSPLjava/lang/System;->arraycopy([ZI[ZII)V
-HSPLjava/lang/System;->clearProperty(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/lang/System;->gc()V
-HSPLjava/lang/System;->getProperties()Ljava/util/Properties;
-HSPLjava/lang/System;->getProperty(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/lang/System;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/lang/System;->getenv(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/lang/System;->identityHashCode(Ljava/lang/Object;)I
-HSPLjava/lang/System;->initProperties()Ljava/util/Properties;
-HSPLjava/lang/System;->initUnchangeableSystemProperties()Ljava/util/Properties;
-HSPLjava/lang/System;->lineSeparator()Ljava/lang/String;
-HSPLjava/lang/System;->loadLibrary(Ljava/lang/String;)V
-HSPLjava/lang/System;->logW(Ljava/lang/String;)V
-HSPLjava/lang/System;->logW(Ljava/lang/String;Ljava/lang/Throwable;)V
-HSPLjava/lang/System;->newPrintStream(Ljava/io/FileOutputStream;Ljava/lang/String;)Ljava/io/PrintStream;
-HSPLjava/lang/System;->runFinalization()V
-HSPLjava/lang/System;->setErr(Ljava/io/PrintStream;)V
-HSPLjava/lang/System;->setOut(Ljava/io/PrintStream;)V
-HSPLjava/lang/System;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/lang/System;->checkKey(Ljava/lang/String;)V
+HSPLjava/lang/System;->load(Ljava/lang/String;)V
+HSPLjava/lang/Thread$State;->values()[Ljava/lang/Thread$State;
 HSPLjava/lang/Thread;-><init>()V
 HSPLjava/lang/Thread;-><init>(Ljava/lang/Runnable;)V
 HSPLjava/lang/Thread;-><init>(Ljava/lang/Runnable;Ljava/lang/String;)V
@@ -26808,14 +17112,19 @@
 HSPLjava/lang/Thread;-><init>(Ljava/lang/ThreadGroup;Ljava/lang/String;IZ)V
 HSPLjava/lang/Thread;->activeCount()I
 HSPLjava/lang/Thread;->blockedOn(Lsun/nio/ch/Interruptible;)V
+HSPLjava/lang/Thread;->checkAccess()V
 HSPLjava/lang/Thread;->getContextClassLoader()Ljava/lang/ClassLoader;
 HSPLjava/lang/Thread;->getDefaultUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
 HSPLjava/lang/Thread;->getId()J
 HSPLjava/lang/Thread;->getName()Ljava/lang/String;
+HSPLjava/lang/Thread;->getPriority()I
 HSPLjava/lang/Thread;->getStackTrace()[Ljava/lang/StackTraceElement;
 HSPLjava/lang/Thread;->getState()Ljava/lang/Thread$State;
+HSPLjava/lang/Thread;->getThreadGroup()Ljava/lang/ThreadGroup;
 HSPLjava/lang/Thread;->getUncaughtExceptionHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
+HSPLjava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;J)V
 HSPLjava/lang/Thread;->init(Ljava/lang/ThreadGroup;Ljava/lang/Runnable;Ljava/lang/String;JLjava/security/AccessControlContext;)V
+HSPLjava/lang/Thread;->init2(Ljava/lang/Thread;)V
 HSPLjava/lang/Thread;->interrupt()V
 HSPLjava/lang/Thread;->isAlive()Z
 HSPLjava/lang/Thread;->isDaemon()Z
@@ -26839,28 +17148,50 @@
 HSPLjava/lang/ThreadGroup;->activeCount()I
 HSPLjava/lang/ThreadGroup;->add(Ljava/lang/Thread;)V
 HSPLjava/lang/ThreadGroup;->addUnstarted()V
+HSPLjava/lang/ThreadGroup;->getMaxPriority()I
+HSPLjava/lang/ThreadGroup;->getName()Ljava/lang/String;
 HSPLjava/lang/ThreadGroup;->remove(Ljava/lang/Thread;)V
 HSPLjava/lang/ThreadGroup;->threadTerminated(Ljava/lang/Thread;)V
+HSPLjava/lang/ThreadLocal$SuppliedThreadLocal;-><init>(Ljava/util/function/Supplier;)V
 HSPLjava/lang/ThreadLocal$SuppliedThreadLocal;->initialValue()Ljava/lang/Object;
+HSPLjava/lang/ThreadLocal$ThreadLocalMap$Entry;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal$ThreadLocalMap;)V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;-><init>(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->access$000(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->access$100(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->access$200(Ljava/lang/ThreadLocal$ThreadLocalMap;Ljava/lang/ThreadLocal;)V
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->cleanSomeSlots(II)Z
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntries()V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;->expungeStaleEntry(I)I
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->rehash()V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;->remove(Ljava/lang/ThreadLocal;)V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;->resize()V
 HSPLjava/lang/ThreadLocal$ThreadLocalMap;->set(Ljava/lang/ThreadLocal;Ljava/lang/Object;)V
+HSPLjava/lang/ThreadLocal$ThreadLocalMap;->setThreshold(I)V
 HSPLjava/lang/ThreadLocal;-><init>()V
+HSPLjava/lang/ThreadLocal;->access$400(Ljava/lang/ThreadLocal;)I
 HSPLjava/lang/ThreadLocal;->createMap(Ljava/lang/Thread;Ljava/lang/Object;)V
 HSPLjava/lang/ThreadLocal;->get()Ljava/lang/Object;
 HSPLjava/lang/ThreadLocal;->getMap(Ljava/lang/Thread;)Ljava/lang/ThreadLocal$ThreadLocalMap;
 HSPLjava/lang/ThreadLocal;->initialValue()Ljava/lang/Object;
+HSPLjava/lang/ThreadLocal;->nextHashCode()I
 HSPLjava/lang/ThreadLocal;->remove()V
 HSPLjava/lang/ThreadLocal;->set(Ljava/lang/Object;)V
+HSPLjava/lang/ThreadLocal;->setInitialValue()Ljava/lang/Object;
 HSPLjava/lang/ThreadLocal;->withInitial(Ljava/util/function/Supplier;)Ljava/lang/ThreadLocal;
+HSPLjava/lang/Throwable$PrintStreamOrWriter;-><init>()V
+HSPLjava/lang/Throwable$PrintStreamOrWriter;-><init>(Ljava/lang/Throwable$1;)V
+HSPLjava/lang/Throwable$WrappedPrintWriter;-><init>(Ljava/io/PrintWriter;)V
 HSPLjava/lang/Throwable$WrappedPrintWriter;->lock()Ljava/lang/Object;
 HSPLjava/lang/Throwable$WrappedPrintWriter;->println(Ljava/lang/Object;)V
 HSPLjava/lang/Throwable;-><init>()V
 HSPLjava/lang/Throwable;-><init>(Ljava/lang/String;)V
+HSPLjava/lang/Throwable;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
 HSPLjava/lang/Throwable;-><init>(Ljava/lang/String;Ljava/lang/Throwable;ZZ)V
+HSPLjava/lang/Throwable;-><init>(Ljava/lang/Throwable;)V
 HSPLjava/lang/Throwable;->addSuppressed(Ljava/lang/Throwable;)V
 HSPLjava/lang/Throwable;->fillInStackTrace()Ljava/lang/Throwable;
 HSPLjava/lang/Throwable;->getCause()Ljava/lang/Throwable;
@@ -26877,57 +17208,45 @@
 HSPLjava/lang/Throwable;->setStackTrace([Ljava/lang/StackTraceElement;)V
 HSPLjava/lang/Throwable;->toString()Ljava/lang/String;
 HSPLjava/lang/Throwable;->writeObject(Ljava/io/ObjectOutputStream;)V
-HSPLjava/lang/UNIXProcess$1;-><init>()V
-HSPLjava/lang/UNIXProcess$1;->run()Ljava/lang/Object;
-HSPLjava/lang/UNIXProcess$1;->run()Ljava/util/concurrent/Executor;
+HSPLjava/lang/UNIXProcess$2;-><init>(Ljava/lang/UNIXProcess;[I)V
 HSPLjava/lang/UNIXProcess$2;->run()Ljava/lang/Object;
 HSPLjava/lang/UNIXProcess$2;->run()Ljava/lang/Void;
+HSPLjava/lang/UNIXProcess$3;-><init>(Ljava/lang/UNIXProcess;)V
 HSPLjava/lang/UNIXProcess$3;->run()V
+HSPLjava/lang/UNIXProcess$ProcessPipeInputStream;-><init>(I)V
 HSPLjava/lang/UNIXProcess$ProcessPipeInputStream;->drainInputStream(Ljava/io/InputStream;)[B
 HSPLjava/lang/UNIXProcess$ProcessPipeInputStream;->processExited()V
+HSPLjava/lang/UNIXProcess$ProcessPipeOutputStream;-><init>(I)V
 HSPLjava/lang/UNIXProcess$ProcessPipeOutputStream;->processExited()V
-HSPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->getRootThreadGroup()Ljava/lang/ThreadGroup;
 HSPLjava/lang/UNIXProcess$ProcessReaperThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
 HSPLjava/lang/UNIXProcess;-><init>([B[BI[BI[B[IZ)V
-HSPLjava/lang/UNIXProcess;->getErrorStream()Ljava/io/InputStream;
+HSPLjava/lang/UNIXProcess;->access$100(Ljava/lang/UNIXProcess;)I
+HSPLjava/lang/UNIXProcess;->access$200(Ljava/lang/UNIXProcess;I)I
 HSPLjava/lang/UNIXProcess;->getInputStream()Ljava/io/InputStream;
-HSPLjava/lang/UNIXProcess;->getOutputStream()Ljava/io/OutputStream;
 HSPLjava/lang/UNIXProcess;->initStreams([I)V
+HSPLjava/lang/UNIXProcess;->newFileDescriptor(I)Ljava/io/FileDescriptor;
 HSPLjava/lang/UNIXProcess;->processExited(I)V
-HSPLjava/lang/UNIXProcess;->waitFor()I
 HSPLjava/lang/UnsatisfiedLinkError;-><init>(Ljava/lang/String;)V
 HSPLjava/lang/UnsupportedOperationException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/VMClassLoader;->createBootClassPathUrlHandlers()[Llibcore/io/ClassPathURLStreamHandler;
-HSPLjava/lang/VMClassLoader;->getResource(Ljava/lang/String;)Ljava/net/URL;
-HSPLjava/lang/VMClassLoader;->getResources(Ljava/lang/String;)Ljava/util/List;
-HSPLjava/lang/invoke/MethodHandles$Lookup;->checkAccess(Ljava/lang/Class;Ljava/lang/Class;ILjava/lang/String;)V
-HSPLjava/lang/invoke/MethodHandles$Lookup;->unreflect(Ljava/lang/reflect/Method;)Ljava/lang/invoke/MethodHandle;
-HSPLjava/lang/invoke/MethodHandles;->publicLookup()Ljava/lang/invoke/MethodHandles$Lookup;
-HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->equals(Ljava/lang/Object;)Z
-HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet$WeakEntry;->hashCode()I
-HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet;->add(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/lang/invoke/MethodType$ConcurrentWeakInternSet;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/lang/invoke/MethodType;->equals(Ljava/lang/Object;)Z
-HSPLjava/lang/invoke/MethodType;->genericMethodType(IZ)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodType;->hashCode()I
-HSPLjava/lang/invoke/MethodType;->insertParameterTypes(I[Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodType;->makeImpl(Ljava/lang/Class;[Ljava/lang/Class;Z)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodTypeForm;-><init>(Ljava/lang/invoke/MethodType;)V
-HSPLjava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/Class;I)Ljava/lang/Class;
-HSPLjava/lang/invoke/MethodTypeForm;->canonicalize(Ljava/lang/invoke/MethodType;II)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodTypeForm;->canonicalizeAll([Ljava/lang/Class;I)[Ljava/lang/Class;
 HSPLjava/lang/invoke/VarHandle;->acquireFence()V
 HSPLjava/lang/invoke/VarHandle;->fullFence()V
 HSPLjava/lang/invoke/VarHandle;->loadLoadFence()V
 HSPLjava/lang/invoke/VarHandle;->releaseFence()V
 HSPLjava/lang/invoke/VarHandle;->storeStoreFence()V
+HSPLjava/lang/ref/FinalizerReference$Sentinel;-><init>()V
+HSPLjava/lang/ref/FinalizerReference$Sentinel;-><init>(Ljava/lang/ref/FinalizerReference$1;)V
 HSPLjava/lang/ref/FinalizerReference$Sentinel;->awaitFinalization(J)V
 HSPLjava/lang/ref/FinalizerReference$Sentinel;->finalize()V
+HSPLjava/lang/ref/FinalizerReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/ref/FinalizerReference;->add(Ljava/lang/Object;)V
+HSPLjava/lang/ref/FinalizerReference;->clear()V
 HSPLjava/lang/ref/FinalizerReference;->enqueueSentinelReference(Ljava/lang/ref/FinalizerReference$Sentinel;)Z
+HSPLjava/lang/ref/FinalizerReference;->finalizeAllEnqueued(J)V
+HSPLjava/lang/ref/FinalizerReference;->get()Ljava/lang/Object;
 HSPLjava/lang/ref/FinalizerReference;->remove(Ljava/lang/ref/FinalizerReference;)V
 HSPLjava/lang/ref/PhantomReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
-HSPLjava/lang/ref/Reference$SinkHolder$1;-><init>()V
+HSPLjava/lang/ref/Reference;-><init>(Ljava/lang/Object;)V
+HSPLjava/lang/ref/Reference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/ref/Reference;->clear()V
 HSPLjava/lang/ref/Reference;->get()Ljava/lang/Object;
 HSPLjava/lang/ref/Reference;->reachabilityFence(Ljava/lang/Object;)V
@@ -26936,6 +17255,7 @@
 HSPLjava/lang/ref/ReferenceQueue;->enqueueLocked(Ljava/lang/ref/Reference;)Z
 HSPLjava/lang/ref/ReferenceQueue;->enqueuePending(Ljava/lang/ref/Reference;)V
 HSPLjava/lang/ref/ReferenceQueue;->poll()Ljava/lang/ref/Reference;
+HSPLjava/lang/ref/ReferenceQueue;->reallyPollLocked()Ljava/lang/ref/Reference;
 HSPLjava/lang/ref/ReferenceQueue;->remove()Ljava/lang/ref/Reference;
 HSPLjava/lang/ref/ReferenceQueue;->remove(J)Ljava/lang/ref/Reference;
 HSPLjava/lang/ref/SoftReference;-><init>(Ljava/lang/Object;)V
@@ -26943,6 +17263,7 @@
 HSPLjava/lang/ref/SoftReference;->get()Ljava/lang/Object;
 HSPLjava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;)V
 HSPLjava/lang/ref/WeakReference;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
+HSPLjava/lang/reflect/AccessibleObject;-><init>()V
 HSPLjava/lang/reflect/AccessibleObject;->isAccessible()Z
 HSPLjava/lang/reflect/AccessibleObject;->setAccessible(Z)V
 HSPLjava/lang/reflect/AccessibleObject;->setAccessible0(Ljava/lang/reflect/AccessibleObject;Z)V
@@ -26951,155 +17272,190 @@
 HSPLjava/lang/reflect/Array;->newArray(Ljava/lang/Class;I)Ljava/lang/Object;
 HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;I)Ljava/lang/Object;
 HSPLjava/lang/reflect/Array;->newInstance(Ljava/lang/Class;[I)Ljava/lang/Object;
-HSPLjava/lang/reflect/Array;->set(Ljava/lang/Object;ILjava/lang/Object;)V
+HSPLjava/lang/reflect/Constructor;-><init>(Ljava/lang/Class;Ljava/lang/Class;)V
 HSPLjava/lang/reflect/Constructor;->getDeclaringClass()Ljava/lang/Class;
 HSPLjava/lang/reflect/Constructor;->getModifiers()I
+HSPLjava/lang/reflect/Constructor;->getName()Ljava/lang/String;
 HSPLjava/lang/reflect/Constructor;->getParameterTypes()[Ljava/lang/Class;
 HSPLjava/lang/reflect/Constructor;->newInstance([Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/reflect/Constructor;->serializationCopy(Ljava/lang/Class;Ljava/lang/Class;)Ljava/lang/reflect/Constructor;
+HSPLjava/lang/reflect/Executable;-><init>()V
+HSPLjava/lang/reflect/Executable;->equalNameAndParametersInternal(Ljava/lang/reflect/Method;)Z
+HSPLjava/lang/reflect/Executable;->equalParamTypes([Ljava/lang/Class;[Ljava/lang/Class;)Z
+HSPLjava/lang/reflect/Executable;->fixMethodFlags(I)I
+HSPLjava/lang/reflect/Executable;->getAccessFlags()I
+HSPLjava/lang/reflect/Executable;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+HSPLjava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class;
+HSPLjava/lang/reflect/Executable;->getModifiersInternal()I
 HSPLjava/lang/reflect/Executable;->isAnnotationPresent(Ljava/lang/Class;)Z
-HSPLjava/lang/reflect/Executable;->printModifiersIfNonzero(Ljava/lang/StringBuilder;IZ)V
-HSPLjava/lang/reflect/Executable;->separateWithCommas([Ljava/lang/Class;Ljava/lang/StringBuilder;)V
-HSPLjava/lang/reflect/Executable;->sharedToString(IZ[Ljava/lang/Class;[Ljava/lang/Class;)Ljava/lang/String;
 HSPLjava/lang/reflect/Field;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+HSPLjava/lang/reflect/Field;->getDeclaringClass()Ljava/lang/Class;
+HSPLjava/lang/reflect/Field;->getGenericType()Ljava/lang/reflect/Type;
 HSPLjava/lang/reflect/Field;->getModifiers()I
 HSPLjava/lang/reflect/Field;->getName()Ljava/lang/String;
+HSPLjava/lang/reflect/Field;->getOffset()I
+HSPLjava/lang/reflect/Field;->getSignatureAttribute()Ljava/lang/String;
 HSPLjava/lang/reflect/Field;->getType()Ljava/lang/Class;
-HSPLjava/lang/reflect/Field;->isAnnotationPresent(Ljava/lang/Class;)Z
 HSPLjava/lang/reflect/Field;->isSynthetic()Z
+HSPLjava/lang/reflect/InvocationTargetException;-><init>(Ljava/lang/Throwable;)V
 HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/lang/reflect/Method$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I
+HSPLjava/lang/reflect/Method;->equalNameAndParameters(Ljava/lang/reflect/Method;)Z
 HSPLjava/lang/reflect/Method;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/reflect/Method;->getAnnotation(Ljava/lang/Class;)Ljava/lang/annotation/Annotation;
+HSPLjava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;
 HSPLjava/lang/reflect/Method;->getModifiers()I
 HSPLjava/lang/reflect/Method;->getName()Ljava/lang/String;
 HSPLjava/lang/reflect/Method;->getParameterTypes()[Ljava/lang/Class;
 HSPLjava/lang/reflect/Method;->getReturnType()Ljava/lang/Class;
-HSPLjava/lang/reflect/Method;->specificToStringHeader(Ljava/lang/StringBuilder;)V
-HSPLjava/lang/reflect/Method;->toString()Ljava/lang/String;
+HSPLjava/lang/reflect/Method;->hashCode()I
 HSPLjava/lang/reflect/Modifier;->isFinal(I)Z
+HSPLjava/lang/reflect/Modifier;->isPrivate(I)Z
+HSPLjava/lang/reflect/Modifier;->isProtected(I)Z
 HSPLjava/lang/reflect/Modifier;->isPublic(I)Z
 HSPLjava/lang/reflect/Modifier;->isStatic(I)Z
-HSPLjava/lang/reflect/Modifier;->toString(I)Ljava/lang/String;
+HSPLjava/lang/reflect/Modifier;->isSynthetic(I)Z
+HSPLjava/lang/reflect/Modifier;->isVolatile(I)Z
 HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/lang/reflect/Proxy$1;->compare(Ljava/lang/reflect/Method;Ljava/lang/reflect/Method;)I
+HSPLjava/lang/reflect/Proxy$Key1;-><init>(Ljava/lang/Class;)V
 HSPLjava/lang/reflect/Proxy$Key1;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/reflect/Proxy$Key1;->hashCode()I
 HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Object;
 HSPLjava/lang/reflect/Proxy$KeyFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy$ProxyClassFactory;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/reflect/Proxy;->access$300([Ljava/lang/Class;)Ljava/util/List;
+HSPLjava/lang/reflect/Proxy;->access$400()Ljava/util/Comparator;
+HSPLjava/lang/reflect/Proxy;->access$500(Ljava/util/List;)V
+HSPLjava/lang/reflect/Proxy;->access$600(Ljava/util/List;)Ljava/util/List;
+HSPLjava/lang/reflect/Proxy;->access$700(Ljava/lang/String;[Ljava/lang/Class;Ljava/lang/ClassLoader;[Ljava/lang/reflect/Method;[[Ljava/lang/Class;)Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy;->deduplicateAndGetExceptions(Ljava/util/List;)Ljava/util/List;
 HSPLjava/lang/reflect/Proxy;->getMethods([Ljava/lang/Class;)Ljava/util/List;
+HSPLjava/lang/reflect/Proxy;->getMethodsRecursive([Ljava/lang/Class;Ljava/util/List;)V
+HSPLjava/lang/reflect/Proxy;->getProxyClass0(Ljava/lang/ClassLoader;[Ljava/lang/Class;)Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy;->intersectExceptions([Ljava/lang/Class;[Ljava/lang/Class;)[Ljava/lang/Class;
 HSPLjava/lang/reflect/Proxy;->invoke(Ljava/lang/reflect/Proxy;Ljava/lang/reflect/Method;[Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/lang/reflect/Proxy;->isProxyClass(Ljava/lang/Class;)Z
 HSPLjava/lang/reflect/Proxy;->newProxyInstance(Ljava/lang/ClassLoader;[Ljava/lang/Class;Ljava/lang/reflect/InvocationHandler;)Ljava/lang/Object;
 HSPLjava/lang/reflect/Proxy;->validateReturnTypes(Ljava/util/List;)V
+HSPLjava/lang/reflect/WeakCache$CacheKey;-><init>(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLjava/lang/reflect/WeakCache$CacheKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/lang/reflect/WeakCache$CacheKey;->hashCode()I
+HSPLjava/lang/reflect/WeakCache$CacheKey;->valueOf(Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)Ljava/lang/Object;
+HSPLjava/lang/reflect/WeakCache$CacheValue;-><init>(Ljava/lang/Object;)V
 HSPLjava/lang/reflect/WeakCache$CacheValue;->hashCode()I
+HSPLjava/lang/reflect/WeakCache$Factory;-><init>(Ljava/lang/reflect/WeakCache;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentMap;)V
 HSPLjava/lang/reflect/WeakCache$Factory;->get()Ljava/lang/Object;
+HSPLjava/lang/reflect/WeakCache;->access$000(Ljava/lang/reflect/WeakCache;)Ljava/util/function/BiFunction;
+HSPLjava/lang/reflect/WeakCache;->access$100(Ljava/lang/reflect/WeakCache;)Ljava/util/concurrent/ConcurrentMap;
+HSPLjava/lang/reflect/WeakCache;->expungeStaleEntries()V
 HSPLjava/lang/reflect/WeakCache;->get(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/math/BigDecimal;-><init>(D)V
 HSPLjava/math/BigDecimal;-><init>(I)V
 HSPLjava/math/BigDecimal;-><init>(II)V
+HSPLjava/math/BigDecimal;-><init>(JI)V
+HSPLjava/math/BigDecimal;-><init>(Ljava/lang/String;)V
+HSPLjava/math/BigDecimal;-><init>(Ljava/math/BigInteger;I)V
 HSPLjava/math/BigDecimal;-><init>([CII)V
 HSPLjava/math/BigDecimal;->add(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->bitLength(J)I
+HSPLjava/math/BigDecimal;->bitLength(I)I
 HSPLjava/math/BigDecimal;->compareTo(Ljava/math/BigDecimal;)I
 HSPLjava/math/BigDecimal;->divide(Ljava/math/BigDecimal;ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->dividePrimitiveLongs(JJILjava/math/RoundingMode;)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->doubleValue()D
-HSPLjava/math/BigDecimal;->longValueExact()J
+HSPLjava/math/BigDecimal;->getUnscaledValue()Ljava/math/BigInteger;
+HSPLjava/math/BigDecimal;->isZero()Z
 HSPLjava/math/BigDecimal;->movePoint(J)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->movePointLeft(I)Ljava/math/BigDecimal;
 HSPLjava/math/BigDecimal;->multiply(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->negate()Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->safeLongToInt(J)I
-HSPLjava/math/BigDecimal;->scale()I
 HSPLjava/math/BigDecimal;->setScale(ILjava/math/RoundingMode;)Ljava/math/BigDecimal;
+HSPLjava/math/BigDecimal;->setUnscaledValue(Ljava/math/BigInteger;)V
 HSPLjava/math/BigDecimal;->signum()I
-HSPLjava/math/BigDecimal;->stripTrailingZeros()Ljava/math/BigDecimal;
 HSPLjava/math/BigDecimal;->subtract(Ljava/math/BigDecimal;)Ljava/math/BigDecimal;
 HSPLjava/math/BigDecimal;->toBigIntegerExact()Ljava/math/BigInteger;
-HSPLjava/math/BigDecimal;->toPlainString()Ljava/lang/String;
-HSPLjava/math/BigDecimal;->valueOf(D)Ljava/math/BigDecimal;
-HSPLjava/math/BigDecimal;->valueOf(J)Ljava/math/BigDecimal;
+HSPLjava/math/BigDecimal;->valueOf(JI)Ljava/math/BigDecimal;
+HSPLjava/math/BigInt;-><init>()V
+HSPLjava/math/BigInt;->bitLength()I
 HSPLjava/math/BigInt;->checkString(Ljava/lang/String;I)Ljava/lang/String;
-HSPLjava/math/BigInteger;-><init>(IJ)V
+HSPLjava/math/BigInt;->cmp(Ljava/math/BigInt;Ljava/math/BigInt;)I
+HSPLjava/math/BigInt;->decString()Ljava/lang/String;
+HSPLjava/math/BigInt;->division(Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;Ljava/math/BigInt;)V
+HSPLjava/math/BigInt;->hasNativeBignum()Z
+HSPLjava/math/BigInt;->littleEndianIntsMagnitude()[I
+HSPLjava/math/BigInt;->longInt()J
+HSPLjava/math/BigInt;->makeValid()V
+HSPLjava/math/BigInt;->product(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
+HSPLjava/math/BigInt;->putBigEndian([BZ)V
+HSPLjava/math/BigInt;->putBigEndianTwosComplement([B)V
+HSPLjava/math/BigInt;->putDecString(Ljava/lang/String;)V
+HSPLjava/math/BigInt;->putHexString(Ljava/lang/String;)V
+HSPLjava/math/BigInt;->sign()I
+HSPLjava/math/BigInt;->twosCompFitsIntoBytes(I)Z
 HSPLjava/math/BigInteger;-><init>(I[B)V
 HSPLjava/math/BigInteger;-><init>(Ljava/lang/String;)V
 HSPLjava/math/BigInteger;-><init>(Ljava/lang/String;I)V
+HSPLjava/math/BigInteger;-><init>(Ljava/math/BigInt;)V
 HSPLjava/math/BigInteger;-><init>([B)V
 HSPLjava/math/BigInteger;->abs()Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->add(Ljava/math/BigInteger;)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->bitLength()I
 HSPLjava/math/BigInteger;->compareTo(Ljava/math/BigInteger;)I
-HSPLjava/math/BigInteger;->divide(Ljava/math/BigInteger;)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->divideAndRemainder(Ljava/math/BigInteger;)[Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->equals(Ljava/lang/Object;)Z
 HSPLjava/math/BigInteger;->getBigInt()Ljava/math/BigInt;
 HSPLjava/math/BigInteger;->getFirstNonzeroDigit()I
-HSPLjava/math/BigInteger;->getLowestSetBit()I
 HSPLjava/math/BigInteger;->hashCode()I
 HSPLjava/math/BigInteger;->intValue()I
 HSPLjava/math/BigInteger;->longValue()J
-HSPLjava/math/BigInteger;->modPow(Ljava/math/BigInteger;Ljava/math/BigInteger;)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->multiply(Ljava/math/BigInteger;)Ljava/math/BigInteger;
 HSPLjava/math/BigInteger;->prepareJavaRepresentation()V
-HSPLjava/math/BigInteger;->shiftLeft(I)Ljava/math/BigInteger;
+HSPLjava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V
+HSPLjava/math/BigInteger;->setJavaRepresentation(II[I)V
 HSPLjava/math/BigInteger;->signum()I
-HSPLjava/math/BigInteger;->subtract(Ljava/math/BigInteger;)Ljava/math/BigInteger;
-HSPLjava/math/BigInteger;->testBit(I)Z
 HSPLjava/math/BigInteger;->toByteArray()[B
 HSPLjava/math/BigInteger;->toString()Ljava/lang/String;
 HSPLjava/math/BigInteger;->toString(I)Ljava/lang/String;
 HSPLjava/math/BigInteger;->twosComplement()[B
-HSPLjava/math/BigInteger;->valueOf(J)Ljava/math/BigInteger;
-HSPLjava/math/BigInteger;->writeObject(Ljava/io/ObjectOutputStream;)V
 HSPLjava/math/Conversion;->bigInteger2String(Ljava/math/BigInteger;I)Ljava/lang/String;
-HSPLjava/math/MathContext;-><init>(I)V
-HSPLjava/math/MathContext;-><init>(ILjava/math/RoundingMode;)V
-HSPLjava/math/MathContext;->checkValid()V
-HSPLjava/math/Multiplication;->powerOf10(J)Ljava/math/BigInteger;
-HSPLjava/math/RoundingMode;-><init>(Ljava/lang/String;II)V
-HSPLjava/math/RoundingMode;->valueOf(I)Ljava/math/RoundingMode;
+HSPLjava/math/MathContext;->equals(Ljava/lang/Object;)Z
+HSPLjava/math/MathContext;->getPrecision()I
+HSPLjava/math/MathContext;->getRoundingMode()Ljava/math/RoundingMode;
 HSPLjava/math/RoundingMode;->values()[Ljava/math/RoundingMode;
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->bind(ILjava/net/InetAddress;)V
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->close()V
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->create()V
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->finalize()V
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->getOption(I)Ljava/lang/Object;
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->isClosed()Z
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->receive(Ljava/net/DatagramPacket;)V
 HSPLjava/net/AbstractPlainDatagramSocketImpl;->setOption(ILjava/lang/Object;)V
 HSPLjava/net/AbstractPlainSocketImpl;-><init>()V
 HSPLjava/net/AbstractPlainSocketImpl;->acquireFD()Ljava/io/FileDescriptor;
-HSPLjava/net/AbstractPlainSocketImpl;->bind(Ljava/net/InetAddress;I)V
 HSPLjava/net/AbstractPlainSocketImpl;->close()V
 HSPLjava/net/AbstractPlainSocketImpl;->connect(Ljava/net/SocketAddress;I)V
+HSPLjava/net/AbstractPlainSocketImpl;->connectToAddress(Ljava/net/InetAddress;II)V
 HSPLjava/net/AbstractPlainSocketImpl;->create(Z)V
 HSPLjava/net/AbstractPlainSocketImpl;->doConnect(Ljava/net/InetAddress;II)V
 HSPLjava/net/AbstractPlainSocketImpl;->finalize()V
 HSPLjava/net/AbstractPlainSocketImpl;->getInputStream()Ljava/io/InputStream;
 HSPLjava/net/AbstractPlainSocketImpl;->getOption(I)Ljava/lang/Object;
 HSPLjava/net/AbstractPlainSocketImpl;->getOutputStream()Ljava/io/OutputStream;
+HSPLjava/net/AbstractPlainSocketImpl;->getTimeout()I
 HSPLjava/net/AbstractPlainSocketImpl;->isClosedOrPending()Z
-HSPLjava/net/AbstractPlainSocketImpl;->listen(I)V
+HSPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z
 HSPLjava/net/AbstractPlainSocketImpl;->releaseFD()V
 HSPLjava/net/AbstractPlainSocketImpl;->setOption(ILjava/lang/Object;)V
 HSPLjava/net/AbstractPlainSocketImpl;->socketClose()V
+HSPLjava/net/AbstractPlainSocketImpl;->socketPreClose()V
+HSPLjava/net/AddressCache$AddressCacheEntry;-><init>(Ljava/lang/Object;)V
+HSPLjava/net/AddressCache$AddressCacheKey;-><init>(Ljava/lang/String;I)V
 HSPLjava/net/AddressCache$AddressCacheKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/AddressCache$AddressCacheKey;->hashCode()I
-HSPLjava/net/AddressCache;-><init>()V
 HSPLjava/net/AddressCache;->clear()V
 HSPLjava/net/AddressCache;->get(Ljava/lang/String;I)Ljava/lang/Object;
 HSPLjava/net/AddressCache;->put(Ljava/lang/String;I[Ljava/net/InetAddress;)V
+HSPLjava/net/AddressCache;->putUnknownHost(Ljava/lang/String;ILjava/lang/String;)V
+HSPLjava/net/CookieHandler;-><init>()V
 HSPLjava/net/CookieHandler;->getDefault()Ljava/net/CookieHandler;
-HSPLjava/net/CookiePolicy$1;-><init>()V
-HSPLjava/net/CookiePolicy$2;-><init>()V
-HSPLjava/net/CookiePolicy$3;-><init>()V
+HSPLjava/net/CookieManager;-><init>(Ljava/net/CookieStore;Ljava/net/CookiePolicy;)V
 HSPLjava/net/DatagramPacket;-><init>([BI)V
-HSPLjava/net/DatagramPacket;-><init>([BILjava/net/InetAddress;I)V
+HSPLjava/net/DatagramPacket;-><init>([BII)V
 HSPLjava/net/DatagramPacket;->getAddress()Ljava/net/InetAddress;
 HSPLjava/net/DatagramPacket;->getData()[B
 HSPLjava/net/DatagramPacket;->getLength()I
@@ -27108,44 +17464,29 @@
 HSPLjava/net/DatagramPacket;->setAddress(Ljava/net/InetAddress;)V
 HSPLjava/net/DatagramPacket;->setData([BII)V
 HSPLjava/net/DatagramPacket;->setPort(I)V
+HSPLjava/net/DatagramPacket;->setReceivedLength(I)V
+HSPLjava/net/DatagramSocket$1;-><init>(Ljava/net/DatagramSocket;)V
 HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Object;
 HSPLjava/net/DatagramSocket$1;->run()Ljava/lang/Void;
-HSPLjava/net/DatagramSocket;-><init>()V
 HSPLjava/net/DatagramSocket;-><init>(Ljava/net/SocketAddress;)V
 HSPLjava/net/DatagramSocket;->bind(Ljava/net/SocketAddress;)V
 HSPLjava/net/DatagramSocket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
 HSPLjava/net/DatagramSocket;->checkOldImpl()V
 HSPLjava/net/DatagramSocket;->close()V
 HSPLjava/net/DatagramSocket;->createImpl()V
-HSPLjava/net/DatagramSocket;->getFileDescriptor$()Ljava/io/FileDescriptor;
 HSPLjava/net/DatagramSocket;->getImpl()Ljava/net/DatagramSocketImpl;
-HSPLjava/net/DatagramSocket;->getReuseAddress()Z
 HSPLjava/net/DatagramSocket;->isBound()Z
 HSPLjava/net/DatagramSocket;->isClosed()Z
 HSPLjava/net/DatagramSocket;->receive(Ljava/net/DatagramPacket;)V
 HSPLjava/net/DatagramSocket;->send(Ljava/net/DatagramPacket;)V
-HSPLjava/net/DatagramSocket;->setSoTimeout(I)V
 HSPLjava/net/DatagramSocketImpl;->setDatagramSocket(Ljava/net/DatagramSocket;)V
-HSPLjava/net/DefaultDatagramSocketImplFactory;->createDatagramSocketImpl(Z)Ljava/net/DatagramSocketImpl;
-HSPLjava/net/DefaultInterface;->getDefault()Ljava/net/NetworkInterface;
-HSPLjava/net/HttpCookie$10;-><init>()V
-HSPLjava/net/HttpCookie$11;-><init>()V
-HSPLjava/net/HttpCookie$1;-><init>()V
-HSPLjava/net/HttpCookie$2;-><init>()V
-HSPLjava/net/HttpCookie$3;-><init>()V
-HSPLjava/net/HttpCookie$4;-><init>()V
-HSPLjava/net/HttpCookie$5;-><init>()V
-HSPLjava/net/HttpCookie$6;-><init>()V
-HSPLjava/net/HttpCookie$7;-><init>()V
-HSPLjava/net/HttpCookie$8;-><init>()V
-HSPLjava/net/HttpCookie$9;-><init>()V
 HSPLjava/net/HttpURLConnection;-><init>(Ljava/net/URL;)V
 HSPLjava/net/HttpURLConnection;->getFollowRedirects()Z
-HSPLjava/net/HttpURLConnection;->setInstanceFollowRedirects(Z)V
+HSPLjava/net/HttpURLConnection;->setChunkedStreamingMode(I)V
 HSPLjava/net/IDN;->toASCII(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/IDN;->toASCII(Ljava/lang/String;I)Ljava/lang/String;
-HSPLjava/net/IDN;->toUnicode(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/net/IDN;->toUnicode(Ljava/lang/String;I)Ljava/lang/String;
+HSPLjava/net/InMemoryCookieStore;-><init>()V
+HSPLjava/net/InMemoryCookieStore;-><init>(I)V
 HSPLjava/net/Inet4Address;-><init>(Ljava/lang/String;[B)V
 HSPLjava/net/Inet4Address;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/Inet4Address;->getAddress()[B
@@ -27155,7 +17496,8 @@
 HSPLjava/net/Inet4Address;->isLinkLocalAddress()Z
 HSPLjava/net/Inet4Address;->isLoopbackAddress()Z
 HSPLjava/net/Inet4Address;->isMulticastAddress()Z
-HSPLjava/net/Inet4Address;->numericToTextFormat([B)Ljava/lang/String;
+HSPLjava/net/Inet6Address$Inet6AddressHolder;-><init>(Ljava/net/Inet6Address;)V
+HSPLjava/net/Inet6Address$Inet6AddressHolder;-><init>(Ljava/net/Inet6Address;Ljava/net/Inet6Address$1;)V
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->hashCode()I
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->init([BI)V
@@ -27163,11 +17505,11 @@
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->isLinkLocalAddress()Z
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->isLoopbackAddress()Z
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->isMulticastAddress()Z
-HSPLjava/net/Inet6Address$Inet6AddressHolder;->isSiteLocalAddress()Z
 HSPLjava/net/Inet6Address$Inet6AddressHolder;->setAddr([B)V
 HSPLjava/net/Inet6Address;-><init>(Ljava/lang/String;[BI)V
 HSPLjava/net/Inet6Address;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/Inet6Address;->getAddress()[B
+HSPLjava/net/Inet6Address;->getByAddress(Ljava/lang/String;[BI)Ljava/net/Inet6Address;
 HSPLjava/net/Inet6Address;->getHostAddress()Ljava/lang/String;
 HSPLjava/net/Inet6Address;->getScopeId()I
 HSPLjava/net/Inet6Address;->hashCode()I
@@ -27175,63 +17517,77 @@
 HSPLjava/net/Inet6Address;->isLinkLocalAddress()Z
 HSPLjava/net/Inet6Address;->isLoopbackAddress()Z
 HSPLjava/net/Inet6Address;->isMulticastAddress()Z
-HSPLjava/net/Inet6Address;->isSiteLocalAddress()Z
-HSPLjava/net/Inet6AddressImpl;-><init>()V
 HSPLjava/net/Inet6AddressImpl;->clearAddressCache()V
 HSPLjava/net/Inet6AddressImpl;->lookupAllHostAddr(Ljava/lang/String;I)[Ljava/net/InetAddress;
 HSPLjava/net/Inet6AddressImpl;->lookupHostByName(Ljava/lang/String;I)[Ljava/net/InetAddress;
-HSPLjava/net/InetAddress$1;-><init>()V
+HSPLjava/net/InetAddress$InetAddressHolder;-><init>()V
 HSPLjava/net/InetAddress$InetAddressHolder;->getAddress()I
 HSPLjava/net/InetAddress$InetAddressHolder;->getHostName()Ljava/lang/String;
 HSPLjava/net/InetAddress$InetAddressHolder;->init(Ljava/lang/String;I)V
+HSPLjava/net/InetAddress;-><init>()V
 HSPLjava/net/InetAddress;->clearDnsCache()V
 HSPLjava/net/InetAddress;->getAllByName(Ljava/lang/String;)[Ljava/net/InetAddress;
-HSPLjava/net/InetAddress;->getAllByNameOnNet(Ljava/lang/String;I)[Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[B)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress(Ljava/lang/String;[BI)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByAddress([B)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->getByName(Ljava/lang/String;)Ljava/net/InetAddress;
-HSPLjava/net/InetAddress;->getByNameOnNet(Ljava/lang/String;I)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->holder()Ljava/net/InetAddress$InetAddressHolder;
 HSPLjava/net/InetAddress;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;
 HSPLjava/net/InetAddress;->toString()Ljava/lang/String;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;I)V
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;-><init>(Ljava/lang/String;Ljava/net/InetAddress;ILjava/net/InetSocketAddress$1;)V
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$400(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)I
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$500(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/net/InetAddress;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$700(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/lang/String;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$800(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Z
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->equals(Ljava/lang/Object;)Z
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getAddress()Ljava/net/InetAddress;
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostString()Ljava/lang/String;
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getPort()I
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->hashCode()I
+HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z
 HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->toString()Ljava/lang/String;
 HSPLjava/net/InetSocketAddress;-><init>()V
+HSPLjava/net/InetSocketAddress;-><init>(I)V
+HSPLjava/net/InetSocketAddress;-><init>(ILjava/lang/String;)V
 HSPLjava/net/InetSocketAddress;-><init>(Ljava/lang/String;I)V
 HSPLjava/net/InetSocketAddress;-><init>(Ljava/net/InetAddress;I)V
+HSPLjava/net/InetSocketAddress;->checkHost(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/InetSocketAddress;->checkPort(I)I
 HSPLjava/net/InetSocketAddress;->createUnresolved(Ljava/lang/String;I)Ljava/net/InetSocketAddress;
 HSPLjava/net/InetSocketAddress;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/InetSocketAddress;->getAddress()Ljava/net/InetAddress;
 HSPLjava/net/InetSocketAddress;->getHostString()Ljava/lang/String;
 HSPLjava/net/InetSocketAddress;->getPort()I
 HSPLjava/net/InetSocketAddress;->hashCode()I
+HSPLjava/net/InetSocketAddress;->isUnresolved()Z
 HSPLjava/net/InetSocketAddress;->toString()Ljava/lang/String;
+HSPLjava/net/InterfaceAddress;-><init>(Ljava/net/InetAddress;Ljava/net/Inet4Address;Ljava/net/InetAddress;)V
+HSPLjava/net/InterfaceAddress;->countPrefixLength(Ljava/net/InetAddress;)S
 HSPLjava/net/JarURLConnection;-><init>(Ljava/net/URL;)V
 HSPLjava/net/JarURLConnection;->getEntryName()Ljava/lang/String;
 HSPLjava/net/JarURLConnection;->parseSpecs(Ljava/net/URL;)V
+HSPLjava/net/NetworkInterface;-><init>(Ljava/lang/String;I[Ljava/net/InetAddress;)V
 HSPLjava/net/NetworkInterface;->getAll()[Ljava/net/NetworkInterface;
+HSPLjava/net/NetworkInterface;->getName()Ljava/lang/String;
 HSPLjava/net/Parts;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/net/Parts;->getPath()Ljava/lang/String;
+HSPLjava/net/Parts;->getQuery()Ljava/lang/String;
+HSPLjava/net/Parts;->getRef()Ljava/lang/String;
 HSPLjava/net/PlainDatagramSocketImpl;->bind0(ILjava/net/InetAddress;)V
 HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketClose()V
 HSPLjava/net/PlainDatagramSocketImpl;->datagramSocketCreate()V
 HSPLjava/net/PlainDatagramSocketImpl;->doRecv(Ljava/net/DatagramPacket;I)V
 HSPLjava/net/PlainDatagramSocketImpl;->receive0(Ljava/net/DatagramPacket;)V
 HSPLjava/net/PlainDatagramSocketImpl;->send(Ljava/net/DatagramPacket;)V
-HSPLjava/net/PlainDatagramSocketImpl;->socketGetOption(I)Ljava/lang/Object;
+HSPLjava/net/PlainSocketImpl;-><init>()V
 HSPLjava/net/PlainSocketImpl;->getMarkerFD()Ljava/io/FileDescriptor;
-HSPLjava/net/PlainSocketImpl;->socketBind(Ljava/net/InetAddress;I)V
 HSPLjava/net/PlainSocketImpl;->socketClose0(Z)V
 HSPLjava/net/PlainSocketImpl;->socketConnect(Ljava/net/InetAddress;II)V
 HSPLjava/net/PlainSocketImpl;->socketCreate(Z)V
 HSPLjava/net/PlainSocketImpl;->socketGetOption(I)Ljava/lang/Object;
-HSPLjava/net/PlainSocketImpl;->socketListen(I)V
 HSPLjava/net/PlainSocketImpl;->socketSetOption(ILjava/lang/Object;)V
 HSPLjava/net/PlainSocketImpl;->socketSetOption0(ILjava/lang/Object;)V
-HSPLjava/net/ProtocolException;-><init>(Ljava/lang/String;)V
-HSPLjava/net/Proxy$Type;-><init>(Ljava/lang/String;I)V
-HSPLjava/net/Proxy;-><init>()V
 HSPLjava/net/Proxy;->address()Ljava/net/SocketAddress;
 HSPLjava/net/Proxy;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/Proxy;->hashCode()I
@@ -27239,20 +17595,14 @@
 HSPLjava/net/ProxySelector;->getDefault()Ljava/net/ProxySelector;
 HSPLjava/net/ProxySelector;->setDefault(Ljava/net/ProxySelector;)V
 HSPLjava/net/ResponseCache;->getDefault()Ljava/net/ResponseCache;
-HSPLjava/net/ServerSocket;->bind(Ljava/net/SocketAddress;I)V
-HSPLjava/net/ServerSocket;->createImpl()V
-HSPLjava/net/ServerSocket;->getImpl()Ljava/net/SocketImpl;
-HSPLjava/net/ServerSocket;->isBound()Z
-HSPLjava/net/ServerSocket;->isClosed()Z
-HSPLjava/net/ServerSocket;->setBound()V
-HSPLjava/net/ServerSocket;->setCreated()V
+HSPLjava/net/Socket$2;-><init>(Ljava/net/Socket;)V
 HSPLjava/net/Socket$2;->run()Ljava/io/InputStream;
 HSPLjava/net/Socket$2;->run()Ljava/lang/Object;
+HSPLjava/net/Socket$3;-><init>(Ljava/net/Socket;)V
 HSPLjava/net/Socket$3;->run()Ljava/io/OutputStream;
 HSPLjava/net/Socket$3;->run()Ljava/lang/Object;
 HSPLjava/net/Socket;-><init>()V
 HSPLjava/net/Socket;-><init>(Ljava/net/InetAddress;I)V
-HSPLjava/net/Socket;-><init>(Ljava/net/SocketImpl;)V
 HSPLjava/net/Socket;-><init>([Ljava/net/InetAddress;ILjava/net/SocketAddress;Z)V
 HSPLjava/net/Socket;->checkAddress(Ljava/net/InetAddress;Ljava/lang/String;)V
 HSPLjava/net/Socket;->close()V
@@ -27276,69 +17626,144 @@
 HSPLjava/net/Socket;->isConnected()Z
 HSPLjava/net/Socket;->isInputShutdown()Z
 HSPLjava/net/Socket;->isOutputShutdown()Z
+HSPLjava/net/Socket;->nonNullAddress(Ljava/net/InetAddress;)[Ljava/net/InetAddress;
 HSPLjava/net/Socket;->setBound()V
 HSPLjava/net/Socket;->setConnected()V
 HSPLjava/net/Socket;->setCreated()V
 HSPLjava/net/Socket;->setImpl()V
 HSPLjava/net/Socket;->setSoTimeout(I)V
 HSPLjava/net/Socket;->setTcpNoDelay(Z)V
+HSPLjava/net/SocketAddress;-><init>()V
 HSPLjava/net/SocketException;-><init>(Ljava/lang/String;)V
+HSPLjava/net/SocketImpl;-><init>()V
 HSPLjava/net/SocketImpl;->getFileDescriptor()Ljava/io/FileDescriptor;
+HSPLjava/net/SocketImpl;->getInetAddress()Ljava/net/InetAddress;
+HSPLjava/net/SocketImpl;->getLocalPort()I
+HSPLjava/net/SocketImpl;->getPort()I
 HSPLjava/net/SocketImpl;->getSocket()Ljava/net/Socket;
-HSPLjava/net/SocketImpl;->setServerSocket(Ljava/net/ServerSocket;)V
 HSPLjava/net/SocketImpl;->setSocket(Ljava/net/Socket;)V
+HSPLjava/net/SocketInputStream;-><init>(Ljava/net/AbstractPlainSocketImpl;)V
 HSPLjava/net/SocketInputStream;->finalize()V
+HSPLjava/net/SocketInputStream;->read([BII)I
+HSPLjava/net/SocketInputStream;->read([BIII)I
+HSPLjava/net/SocketInputStream;->socketRead(Ljava/io/FileDescriptor;[BIII)I
+HSPLjava/net/SocketOutputStream;-><init>(Ljava/net/AbstractPlainSocketImpl;)V
 HSPLjava/net/SocketOutputStream;->finalize()V
+HSPLjava/net/SocketOutputStream;->socketWrite([BII)V
+HSPLjava/net/SocketOutputStream;->write([BII)V
 HSPLjava/net/SocketTimeoutException;-><init>(Ljava/lang/String;)V
+HSPLjava/net/SocksSocketImpl;-><init>()V
 HSPLjava/net/SocksSocketImpl;->close()V
 HSPLjava/net/SocksSocketImpl;->connect(Ljava/net/SocketAddress;I)V
 HSPLjava/net/SocksSocketImpl;->getInetAddress()Ljava/net/InetAddress;
 HSPLjava/net/SocksSocketImpl;->getLocalPort()I
 HSPLjava/net/SocksSocketImpl;->getPort()I
-HSPLjava/net/StandardProtocolFamily;-><init>(Ljava/lang/String;I)V
+HSPLjava/net/SocksSocketImpl;->remainingMillis(J)I
+HSPLjava/net/URI$Parser;-><init>(Ljava/net/URI;Ljava/lang/String;)V
+HSPLjava/net/URI$Parser;->at(IIC)Z
+HSPLjava/net/URI$Parser;->charAt(I)C
+HSPLjava/net/URI$Parser;->checkChar(IJJLjava/lang/String;)V
+HSPLjava/net/URI$Parser;->checkChars(IIJJLjava/lang/String;)V
 HSPLjava/net/URI$Parser;->parse(Z)V
 HSPLjava/net/URI$Parser;->parseAuthority(II)I
 HSPLjava/net/URI$Parser;->parseHierarchical(II)I
 HSPLjava/net/URI$Parser;->parseHostname(II)I
 HSPLjava/net/URI$Parser;->parseIPv4Address(II)I
 HSPLjava/net/URI$Parser;->parseServer(II)I
+HSPLjava/net/URI$Parser;->scan(IIC)I
 HSPLjava/net/URI$Parser;->scan(IIJJ)I
+HSPLjava/net/URI$Parser;->scan(IILjava/lang/String;Ljava/lang/String;)I
+HSPLjava/net/URI$Parser;->scanEscape(IIC)I
 HSPLjava/net/URI$Parser;->scanIPv4Address(IIZ)I
+HSPLjava/net/URI$Parser;->substring(II)Ljava/lang/String;
 HSPLjava/net/URI;-><init>(Ljava/lang/String;)V
 HSPLjava/net/URI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/net/URI;->access$002(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$100()J
+HSPLjava/net/URI;->access$1002(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$1200()J
+HSPLjava/net/URI;->access$1300()J
+HSPLjava/net/URI;->access$1402(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$1502(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$1600()J
+HSPLjava/net/URI;->access$1700()J
+HSPLjava/net/URI;->access$200()J
+HSPLjava/net/URI;->access$2000()J
+HSPLjava/net/URI;->access$2100()J
+HSPLjava/net/URI;->access$2202(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$2402(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$2502(Ljava/net/URI;I)I
+HSPLjava/net/URI;->access$2800()J
+HSPLjava/net/URI;->access$2900()J
+HSPLjava/net/URI;->access$300(CJJ)Z
+HSPLjava/net/URI;->access$3000()J
+HSPLjava/net/URI;->access$3100()J
+HSPLjava/net/URI;->access$3200()J
+HSPLjava/net/URI;->access$3300()J
+HSPLjava/net/URI;->access$3400()J
+HSPLjava/net/URI;->access$3500()J
+HSPLjava/net/URI;->access$3600()J
+HSPLjava/net/URI;->access$400()J
+HSPLjava/net/URI;->access$500()J
+HSPLjava/net/URI;->access$600()J
+HSPLjava/net/URI;->access$702(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->access$800()J
+HSPLjava/net/URI;->access$900()J
 HSPLjava/net/URI;->appendAuthority(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLjava/net/URI;->appendFragment(Ljava/lang/StringBuffer;Ljava/lang/String;)V
 HSPLjava/net/URI;->appendSchemeSpecificPart(Ljava/lang/StringBuffer;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HSPLjava/net/URI;->checkPath(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URI;->create(Ljava/lang/String;)Ljava/net/URI;
 HSPLjava/net/URI;->decode(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/URI;->defineString()V
-HSPLjava/net/URI;->encode(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URI;->equal(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLjava/net/URI;->equalIgnoringCase(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLjava/net/URI;->equals(Ljava/lang/Object;)Z
 HSPLjava/net/URI;->getAuthority()Ljava/lang/String;
 HSPLjava/net/URI;->getFragment()Ljava/lang/String;
 HSPLjava/net/URI;->getHost()Ljava/lang/String;
 HSPLjava/net/URI;->getPath()Ljava/lang/String;
 HSPLjava/net/URI;->getPort()I
 HSPLjava/net/URI;->getQuery()Ljava/lang/String;
+HSPLjava/net/URI;->getRawQuery()Ljava/lang/String;
 HSPLjava/net/URI;->getScheme()Ljava/lang/String;
 HSPLjava/net/URI;->getUserInfo()Ljava/lang/String;
+HSPLjava/net/URI;->hash(ILjava/lang/String;)I
+HSPLjava/net/URI;->hashCode()I
+HSPLjava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I
+HSPLjava/net/URI;->isAbsolute()Z
+HSPLjava/net/URI;->isOpaque()Z
 HSPLjava/net/URI;->match(CJJ)Z
 HSPLjava/net/URI;->quote(Ljava/lang/String;JJ)Ljava/lang/String;
-HSPLjava/net/URI;->toASCIIString()Ljava/lang/String;
+HSPLjava/net/URI;->toLower(C)I
 HSPLjava/net/URI;->toString()Ljava/lang/String;
 HSPLjava/net/URI;->toString(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/URL;-><init>(Ljava/lang/String;)V
 HSPLjava/net/URL;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/net/URLStreamHandler;)V
+HSPLjava/net/URL;-><init>(Ljava/net/URL;Ljava/lang/String;)V
 HSPLjava/net/URL;-><init>(Ljava/net/URL;Ljava/lang/String;Ljava/net/URLStreamHandler;)V
 HSPLjava/net/URL;->createBuiltinHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
+HSPLjava/net/URL;->getAuthority()Ljava/lang/String;
+HSPLjava/net/URL;->getFile()Ljava/lang/String;
 HSPLjava/net/URL;->getHost()Ljava/lang/String;
+HSPLjava/net/URL;->getPath()Ljava/lang/String;
+HSPLjava/net/URL;->getPort()I
 HSPLjava/net/URL;->getProtocol()Ljava/lang/String;
+HSPLjava/net/URL;->getQuery()Ljava/lang/String;
+HSPLjava/net/URL;->getRef()Ljava/lang/String;
 HSPLjava/net/URL;->getURLStreamHandler(Ljava/lang/String;)Ljava/net/URLStreamHandler;
+HSPLjava/net/URL;->getUserInfo()Ljava/lang/String;
 HSPLjava/net/URL;->isValidProtocol(Ljava/lang/String;)Z
 HSPLjava/net/URL;->openConnection()Ljava/net/URLConnection;
+HSPLjava/net/URL;->openStream()Ljava/io/InputStream;
 HSPLjava/net/URL;->set(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URL;->toExternalForm()Ljava/lang/String;
 HSPLjava/net/URL;->toString()Ljava/lang/String;
+HSPLjava/net/URLConnection;-><init>(Ljava/net/URL;)V
+HSPLjava/net/URLConnection;->getContentEncoding()Ljava/lang/String;
+HSPLjava/net/URLConnection;->getContentLength()I
 HSPLjava/net/URLConnection;->getContentLengthLong()J
 HSPLjava/net/URLConnection;->getContentType()Ljava/lang/String;
 HSPLjava/net/URLConnection;->getHeaderFieldLong(Ljava/lang/String;J)J
@@ -27346,36 +17771,89 @@
 HSPLjava/net/URLConnection;->getUseCaches()Z
 HSPLjava/net/URLConnection;->setDoInput(Z)V
 HSPLjava/net/URLConnection;->setDoOutput(Z)V
-HSPLjava/net/URLConnection;->setReadTimeout(I)V
 HSPLjava/net/URLConnection;->setUseCaches(Z)V
 HSPLjava/net/URLDecoder;->decode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/net/URLEncoder;->encode(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/net/URLStreamHandler;-><init>()V
 HSPLjava/net/URLStreamHandler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V
 HSPLjava/net/URLStreamHandler;->setURL(Ljava/net/URL;Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/net/URLStreamHandler;->toExternalForm(Ljava/net/URL;)Ljava/lang/String;
+HSPLjava/net/UnknownHostException;-><init>(Ljava/lang/String;)V
+HSPLjava/nio/Bits;->byteOrder()Ljava/nio/ByteOrder;
+HSPLjava/nio/Bits;->char0(C)B
+HSPLjava/nio/Bits;->char1(C)B
+HSPLjava/nio/Bits;->getFloat(Ljava/nio/ByteBuffer;IZ)F
+HSPLjava/nio/Bits;->getFloatL(Ljava/nio/ByteBuffer;I)F
+HSPLjava/nio/Bits;->getInt(Ljava/nio/ByteBuffer;IZ)I
+HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I
+HSPLjava/nio/Bits;->getIntL(Ljava/nio/ByteBuffer;I)I
+HSPLjava/nio/Bits;->getLong(Ljava/nio/ByteBuffer;IZ)J
 HSPLjava/nio/Bits;->getLongB(Ljava/nio/ByteBuffer;I)J
 HSPLjava/nio/Bits;->getLongL(Ljava/nio/ByteBuffer;I)J
+HSPLjava/nio/Bits;->getShort(Ljava/nio/ByteBuffer;IZ)S
+HSPLjava/nio/Bits;->getShortB(Ljava/nio/ByteBuffer;I)S
+HSPLjava/nio/Bits;->getShortL(Ljava/nio/ByteBuffer;I)S
+HSPLjava/nio/Bits;->int0(I)B
+HSPLjava/nio/Bits;->int1(I)B
+HSPLjava/nio/Bits;->int2(I)B
+HSPLjava/nio/Bits;->int3(I)B
+HSPLjava/nio/Bits;->long0(J)B
+HSPLjava/nio/Bits;->long1(J)B
+HSPLjava/nio/Bits;->long2(J)B
+HSPLjava/nio/Bits;->long3(J)B
+HSPLjava/nio/Bits;->long4(J)B
+HSPLjava/nio/Bits;->long5(J)B
+HSPLjava/nio/Bits;->long6(J)B
+HSPLjava/nio/Bits;->long7(J)B
+HSPLjava/nio/Bits;->makeInt(BBBB)I
 HSPLjava/nio/Bits;->makeLong(BBBBBBBB)J
+HSPLjava/nio/Bits;->makeShort(BB)S
+HSPLjava/nio/Bits;->pageCount(J)I
+HSPLjava/nio/Bits;->pageSize()I
+HSPLjava/nio/Bits;->putChar(Ljava/nio/ByteBuffer;ICZ)V
+HSPLjava/nio/Bits;->putCharB(Ljava/nio/ByteBuffer;IC)V
+HSPLjava/nio/Bits;->putInt(Ljava/nio/ByteBuffer;IIZ)V
 HSPLjava/nio/Bits;->putIntB(Ljava/nio/ByteBuffer;II)V
 HSPLjava/nio/Bits;->putIntL(Ljava/nio/ByteBuffer;II)V
+HSPLjava/nio/Bits;->putLong(Ljava/nio/ByteBuffer;IJZ)V
 HSPLjava/nio/Bits;->putLongB(Ljava/nio/ByteBuffer;IJ)V
 HSPLjava/nio/Bits;->putLongL(Ljava/nio/ByteBuffer;IJ)V
+HSPLjava/nio/Bits;->putShort(Ljava/nio/ByteBuffer;ISZ)V
+HSPLjava/nio/Bits;->putShortB(Ljava/nio/ByteBuffer;IS)V
+HSPLjava/nio/Bits;->putShortL(Ljava/nio/ByteBuffer;IS)V
+HSPLjava/nio/Bits;->short0(S)B
+HSPLjava/nio/Bits;->short1(S)B
+HSPLjava/nio/Bits;->unsafe()Lsun/misc/Unsafe;
 HSPLjava/nio/Buffer;-><init>(IIIII)V
 HSPLjava/nio/Buffer;->capacity()I
 HSPLjava/nio/Buffer;->checkBounds(III)V
 HSPLjava/nio/Buffer;->checkIndex(I)I
 HSPLjava/nio/Buffer;->checkIndex(II)I
+HSPLjava/nio/Buffer;->clear()Ljava/nio/Buffer;
+HSPLjava/nio/Buffer;->discardMark()V
+HSPLjava/nio/Buffer;->flip()Ljava/nio/Buffer;
 HSPLjava/nio/Buffer;->hasRemaining()Z
 HSPLjava/nio/Buffer;->limit()I
+HSPLjava/nio/Buffer;->limit(I)Ljava/nio/Buffer;
+HSPLjava/nio/Buffer;->mark()Ljava/nio/Buffer;
+HSPLjava/nio/Buffer;->markValue()I
+HSPLjava/nio/Buffer;->nextGetIndex()I
+HSPLjava/nio/Buffer;->nextGetIndex(I)I
+HSPLjava/nio/Buffer;->nextPutIndex()I
+HSPLjava/nio/Buffer;->nextPutIndex(I)I
 HSPLjava/nio/Buffer;->position()I
 HSPLjava/nio/Buffer;->position(I)Ljava/nio/Buffer;
 HSPLjava/nio/Buffer;->remaining()I
+HSPLjava/nio/Buffer;->reset()Ljava/nio/Buffer;
+HSPLjava/nio/Buffer;->rewind()Ljava/nio/Buffer;
+HSPLjava/nio/ByteBuffer;-><init>(IIII)V
 HSPLjava/nio/ByteBuffer;-><init>(IIII[BI)V
 HSPLjava/nio/ByteBuffer;->allocate(I)Ljava/nio/ByteBuffer;
 HSPLjava/nio/ByteBuffer;->allocateDirect(I)Ljava/nio/ByteBuffer;
 HSPLjava/nio/ByteBuffer;->array()[B
 HSPLjava/nio/ByteBuffer;->arrayOffset()I
 HSPLjava/nio/ByteBuffer;->clear()Ljava/nio/Buffer;
+HSPLjava/nio/ByteBuffer;->compare(BB)I
 HSPLjava/nio/ByteBuffer;->compareTo(Ljava/nio/ByteBuffer;)I
 HSPLjava/nio/ByteBuffer;->flip()Ljava/nio/Buffer;
 HSPLjava/nio/ByteBuffer;->get([B)Ljava/nio/ByteBuffer;
@@ -27394,7 +17872,6 @@
 HSPLjava/nio/ByteBuffer;->wrap([BII)Ljava/nio/ByteBuffer;
 HSPLjava/nio/ByteBufferAsCharBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V
 HSPLjava/nio/ByteBufferAsCharBuffer;->duplicate()Ljava/nio/CharBuffer;
-HSPLjava/nio/ByteBufferAsCharBuffer;->get()C
 HSPLjava/nio/ByteBufferAsCharBuffer;->get(I)C
 HSPLjava/nio/ByteBufferAsCharBuffer;->get([CII)Ljava/nio/CharBuffer;
 HSPLjava/nio/ByteBufferAsCharBuffer;->isDirect()Z
@@ -27404,17 +17881,17 @@
 HSPLjava/nio/ByteBufferAsCharBuffer;->toString(II)Ljava/lang/String;
 HSPLjava/nio/ByteBufferAsFloatBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V
 HSPLjava/nio/ByteBufferAsFloatBuffer;->ix(I)I
-HSPLjava/nio/ByteBufferAsFloatBuffer;->put(IF)Ljava/nio/FloatBuffer;
 HSPLjava/nio/ByteBufferAsIntBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V
 HSPLjava/nio/ByteBufferAsIntBuffer;->get([III)Ljava/nio/IntBuffer;
 HSPLjava/nio/ByteBufferAsIntBuffer;->ix(I)I
 HSPLjava/nio/ByteBufferAsLongBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V
-HSPLjava/nio/ByteBufferAsLongBuffer;->get([JII)Ljava/nio/LongBuffer;
 HSPLjava/nio/ByteBufferAsLongBuffer;->ix(I)I
 HSPLjava/nio/ByteBufferAsShortBuffer;-><init>(Ljava/nio/ByteBuffer;IIIIILjava/nio/ByteOrder;)V
 HSPLjava/nio/ByteBufferAsShortBuffer;->get([SII)Ljava/nio/ShortBuffer;
 HSPLjava/nio/ByteBufferAsShortBuffer;->ix(I)I
 HSPLjava/nio/ByteOrder;->nativeOrder()Ljava/nio/ByteOrder;
+HSPLjava/nio/CharBuffer;-><init>(IIII)V
+HSPLjava/nio/CharBuffer;-><init>(IIII[CI)V
 HSPLjava/nio/CharBuffer;->allocate(I)Ljava/nio/CharBuffer;
 HSPLjava/nio/CharBuffer;->array()[C
 HSPLjava/nio/CharBuffer;->arrayOffset()I
@@ -27430,51 +17907,57 @@
 HSPLjava/nio/CharBuffer;->toString()Ljava/lang/String;
 HSPLjava/nio/CharBuffer;->wrap(Ljava/lang/CharSequence;)Ljava/nio/CharBuffer;
 HSPLjava/nio/CharBuffer;->wrap(Ljava/lang/CharSequence;II)Ljava/nio/CharBuffer;
+HSPLjava/nio/CharBuffer;->wrap([C)Ljava/nio/CharBuffer;
 HSPLjava/nio/CharBuffer;->wrap([CII)Ljava/nio/CharBuffer;
 HSPLjava/nio/DirectByteBuffer$MemoryRef;-><init>(I)V
-HSPLjava/nio/DirectByteBuffer$MemoryRef;->free()V
+HSPLjava/nio/DirectByteBuffer$MemoryRef;-><init>(JLjava/lang/Object;)V
 HSPLjava/nio/DirectByteBuffer;-><init>(IJLjava/io/FileDescriptor;Ljava/lang/Runnable;Z)V
+HSPLjava/nio/DirectByteBuffer;-><init>(ILjava/nio/DirectByteBuffer$MemoryRef;)V
 HSPLjava/nio/DirectByteBuffer;-><init>(JI)V
+HSPLjava/nio/DirectByteBuffer;-><init>(Ljava/nio/DirectByteBuffer$MemoryRef;IIIIIZ)V
 HSPLjava/nio/DirectByteBuffer;->address()J
 HSPLjava/nio/DirectByteBuffer;->asCharBuffer()Ljava/nio/CharBuffer;
 HSPLjava/nio/DirectByteBuffer;->asFloatBuffer()Ljava/nio/FloatBuffer;
 HSPLjava/nio/DirectByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer;
-HSPLjava/nio/DirectByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer;
 HSPLjava/nio/DirectByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer;
 HSPLjava/nio/DirectByteBuffer;->cleaner()Lsun/misc/Cleaner;
 HSPLjava/nio/DirectByteBuffer;->duplicate()Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->get()B
 HSPLjava/nio/DirectByteBuffer;->get(I)B
+HSPLjava/nio/DirectByteBuffer;->get(J)B
 HSPLjava/nio/DirectByteBuffer;->get([BII)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->getChar()C
 HSPLjava/nio/DirectByteBuffer;->getChar(I)C
 HSPLjava/nio/DirectByteBuffer;->getCharUnchecked(I)C
 HSPLjava/nio/DirectByteBuffer;->getInt()I
 HSPLjava/nio/DirectByteBuffer;->getInt(I)I
+HSPLjava/nio/DirectByteBuffer;->getInt(J)I
 HSPLjava/nio/DirectByteBuffer;->getLong(I)J
+HSPLjava/nio/DirectByteBuffer;->getLong(J)J
 HSPLjava/nio/DirectByteBuffer;->getShort(I)S
+HSPLjava/nio/DirectByteBuffer;->getShort(J)S
 HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[CII)V
 HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[III)V
-HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[JII)V
 HSPLjava/nio/DirectByteBuffer;->getUnchecked(I[SII)V
 HSPLjava/nio/DirectByteBuffer;->isDirect()Z
 HSPLjava/nio/DirectByteBuffer;->isReadOnly()Z
-HSPLjava/nio/DirectByteBuffer;->put(B)Ljava/nio/ByteBuffer;
+HSPLjava/nio/DirectByteBuffer;->ix(I)J
 HSPLjava/nio/DirectByteBuffer;->put(Ljava/nio/ByteBuffer;)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
-HSPLjava/nio/DirectByteBuffer;->putFloatUnchecked(IF)V
-HSPLjava/nio/DirectByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
-HSPLjava/nio/DirectByteBuffer;->putLong(J)Ljava/nio/ByteBuffer;
-HSPLjava/nio/DirectByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;
-HSPLjava/nio/DirectByteBuffer;->setAccessible(Z)V
+HSPLjava/nio/DirectByteBuffer;->putInt(JI)Ljava/nio/ByteBuffer;
 HSPLjava/nio/DirectByteBuffer;->slice()Ljava/nio/ByteBuffer;
+HSPLjava/nio/FloatBuffer;-><init>(IIII)V
+HSPLjava/nio/FloatBuffer;-><init>(IIII[FI)V
 HSPLjava/nio/FloatBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/FloatBuffer;->position(I)Ljava/nio/Buffer;
+HSPLjava/nio/HeapByteBuffer;-><init>(II)V
+HSPLjava/nio/HeapByteBuffer;-><init>(IIZ)V
+HSPLjava/nio/HeapByteBuffer;-><init>([BII)V
+HSPLjava/nio/HeapByteBuffer;-><init>([BIIIIIZ)V
+HSPLjava/nio/HeapByteBuffer;-><init>([BIIZ)V
 HSPLjava/nio/HeapByteBuffer;->_get(I)B
 HSPLjava/nio/HeapByteBuffer;->_put(IB)V
-HSPLjava/nio/HeapByteBuffer;->asReadOnlyBuffer()Ljava/nio/ByteBuffer;
-HSPLjava/nio/HeapByteBuffer;->asShortBuffer()Ljava/nio/ShortBuffer;
 HSPLjava/nio/HeapByteBuffer;->compact()Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->duplicate()Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->get()B
@@ -27489,134 +17972,133 @@
 HSPLjava/nio/HeapByteBuffer;->getShort(I)S
 HSPLjava/nio/HeapByteBuffer;->isDirect()Z
 HSPLjava/nio/HeapByteBuffer;->isReadOnly()Z
+HSPLjava/nio/HeapByteBuffer;->ix(I)I
 HSPLjava/nio/HeapByteBuffer;->put(B)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->put([BII)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putChar(C)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putInt(I)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putInt(II)Ljava/nio/ByteBuffer;
+HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putLong(J)Ljava/nio/ByteBuffer;
-HSPLjava/nio/HeapByteBuffer;->putShort(IS)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->putShort(S)Ljava/nio/ByteBuffer;
 HSPLjava/nio/HeapByteBuffer;->slice()Ljava/nio/ByteBuffer;
-HSPLjava/nio/HeapCharBuffer;->get()C
+HSPLjava/nio/HeapCharBuffer;-><init>(II)V
+HSPLjava/nio/HeapCharBuffer;-><init>(IIZ)V
+HSPLjava/nio/HeapCharBuffer;-><init>([CII)V
+HSPLjava/nio/HeapCharBuffer;-><init>([CIIIIIZ)V
+HSPLjava/nio/HeapCharBuffer;-><init>([CIIZ)V
 HSPLjava/nio/HeapCharBuffer;->get(I)C
 HSPLjava/nio/HeapCharBuffer;->ix(I)I
 HSPLjava/nio/HeapCharBuffer;->put(Ljava/nio/CharBuffer;)Ljava/nio/CharBuffer;
 HSPLjava/nio/HeapCharBuffer;->put([CII)Ljava/nio/CharBuffer;
 HSPLjava/nio/HeapCharBuffer;->slice()Ljava/nio/CharBuffer;
 HSPLjava/nio/HeapCharBuffer;->toString(II)Ljava/lang/String;
+HSPLjava/nio/IntBuffer;-><init>(IIII)V
+HSPLjava/nio/IntBuffer;-><init>(IIII[II)V
 HSPLjava/nio/IntBuffer;->get([I)Ljava/nio/IntBuffer;
 HSPLjava/nio/IntBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/IntBuffer;->position(I)Ljava/nio/Buffer;
-HSPLjava/nio/LongBuffer;->get([J)Ljava/nio/LongBuffer;
+HSPLjava/nio/LongBuffer;-><init>(IIII)V
+HSPLjava/nio/LongBuffer;-><init>(IIII[JI)V
 HSPLjava/nio/LongBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/LongBuffer;->position(I)Ljava/nio/Buffer;
+HSPLjava/nio/MappedByteBuffer;-><init>(IIII)V
+HSPLjava/nio/MappedByteBuffer;-><init>(IIIILjava/io/FileDescriptor;)V
+HSPLjava/nio/MappedByteBuffer;-><init>(IIII[BI)V
+HSPLjava/nio/MappedByteBuffer;->checkMapped()V
 HSPLjava/nio/MappedByteBuffer;->load()Ljava/nio/MappedByteBuffer;
-HSPLjava/nio/NIOAccess;->getBasePointer(Ljava/nio/Buffer;)J
-HSPLjava/nio/NioUtils;->freeDirectBuffer(Ljava/nio/ByteBuffer;)V
+HSPLjava/nio/MappedByteBuffer;->mappingAddress(J)J
+HSPLjava/nio/MappedByteBuffer;->mappingLength(J)J
+HSPLjava/nio/MappedByteBuffer;->mappingOffset()J
+HSPLjava/nio/ShortBuffer;-><init>(IIII)V
+HSPLjava/nio/ShortBuffer;-><init>(IIII[SI)V
 HSPLjava/nio/ShortBuffer;->get([S)Ljava/nio/ShortBuffer;
 HSPLjava/nio/ShortBuffer;->limit(I)Ljava/nio/Buffer;
 HSPLjava/nio/ShortBuffer;->position(I)Ljava/nio/Buffer;
 HSPLjava/nio/StringCharBuffer;-><init>(Ljava/lang/CharSequence;II)V
 HSPLjava/nio/StringCharBuffer;->get()C
-HSPLjava/nio/StringCharBuffer;->get(I)C
+HSPLjava/nio/channels/Channels;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;)V
 HSPLjava/nio/channels/Channels;->newInputStream(Ljava/nio/channels/ReadableByteChannel;)Ljava/io/InputStream;
-HSPLjava/nio/channels/FileChannel$MapMode;-><init>(Ljava/lang/String;)V
+HSPLjava/nio/channels/FileChannel;-><init>()V
+HSPLjava/nio/channels/FileChannel;->lock()Ljava/nio/channels/FileLock;
+HSPLjava/nio/channels/FileChannel;->open(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;
+HSPLjava/nio/channels/FileChannel;->open(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/FileChannel;
 HSPLjava/nio/channels/FileChannel;->tryLock()Ljava/nio/channels/FileLock;
 HSPLjava/nio/channels/FileLock;-><init>(Ljava/nio/channels/FileChannel;JJZ)V
 HSPLjava/nio/channels/FileLock;->acquiredBy()Ljava/nio/channels/Channel;
+HSPLjava/nio/channels/FileLock;->position()J
+HSPLjava/nio/channels/FileLock;->size()J
+HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;-><init>()V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->begin()V
+HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->blockedOn(Lsun/nio/ch/Interruptible;)V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->close()V
 HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->end(Z)V
+HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z
 HSPLjava/nio/charset/Charset;-><init>(Ljava/lang/String;[Ljava/lang/String;)V
 HSPLjava/nio/charset/Charset;->aliases()Ljava/util/Set;
 HSPLjava/nio/charset/Charset;->atBugLevel(Ljava/lang/String;)Z
 HSPLjava/nio/charset/Charset;->cache(Ljava/lang/String;Ljava/nio/charset/Charset;)V
 HSPLjava/nio/charset/Charset;->checkName(Ljava/lang/String;)V
-HSPLjava/nio/charset/Charset;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;
 HSPLjava/nio/charset/Charset;->defaultCharset()Ljava/nio/charset/Charset;
-HSPLjava/nio/charset/Charset;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
 HSPLjava/nio/charset/Charset;->equals(Ljava/lang/Object;)Z
 HSPLjava/nio/charset/Charset;->forName(Ljava/lang/String;)Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/Charset;->forNameUEE(Ljava/lang/String;)Ljava/nio/charset/Charset;
+HSPLjava/nio/charset/Charset;->isSupported(Ljava/lang/String;)Z
 HSPLjava/nio/charset/Charset;->lookup(Ljava/lang/String;)Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/Charset;->lookup2(Ljava/lang/String;)Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/Charset;->name()Ljava/lang/String;
 HSPLjava/nio/charset/CharsetDecoder;-><init>(Ljava/nio/charset/Charset;FF)V
 HSPLjava/nio/charset/CharsetDecoder;-><init>(Ljava/nio/charset/Charset;FFLjava/lang/String;)V
+HSPLjava/nio/charset/CharsetDecoder;->averageCharsPerByte()F
+HSPLjava/nio/charset/CharsetDecoder;->charset()Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;)Ljava/nio/CharBuffer;
 HSPLjava/nio/charset/CharsetDecoder;->decode(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;Z)Ljava/nio/charset/CoderResult;
+HSPLjava/nio/charset/CharsetDecoder;->flush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
+HSPLjava/nio/charset/CharsetDecoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CharsetDecoder;->maxCharsPerByte()F
 HSPLjava/nio/charset/CharsetDecoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
 HSPLjava/nio/charset/CharsetDecoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetDecoder;
 HSPLjava/nio/charset/CharsetDecoder;->replaceWith(Ljava/lang/String;)Ljava/nio/charset/CharsetDecoder;
+HSPLjava/nio/charset/CharsetDecoder;->replacement()Ljava/lang/String;
 HSPLjava/nio/charset/CharsetDecoder;->reset()Ljava/nio/charset/CharsetDecoder;
-HSPLjava/nio/charset/CharsetDecoderICU;->decodeLoop(Ljava/nio/ByteBuffer;Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
-HSPLjava/nio/charset/CharsetDecoderICU;->getArray(Ljava/nio/ByteBuffer;)I
-HSPLjava/nio/charset/CharsetDecoderICU;->getArray(Ljava/nio/CharBuffer;)I
-HSPLjava/nio/charset/CharsetDecoderICU;->implFlush(Ljava/nio/CharBuffer;)Ljava/nio/charset/CoderResult;
-HSPLjava/nio/charset/CharsetDecoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V
-HSPLjava/nio/charset/CharsetDecoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V
-HSPLjava/nio/charset/CharsetDecoderICU;->implReplaceWith(Ljava/lang/String;)V
-HSPLjava/nio/charset/CharsetDecoderICU;->implReset()V
-HSPLjava/nio/charset/CharsetDecoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Ljava/nio/charset/CharsetDecoderICU;
-HSPLjava/nio/charset/CharsetDecoderICU;->setPosition(Ljava/nio/CharBuffer;)V
+HSPLjava/nio/charset/CharsetDecoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CharsetEncoder;-><init>(Ljava/nio/charset/Charset;FF[BZ)V
+HSPLjava/nio/charset/CharsetEncoder;->averageBytesPerChar()F
+HSPLjava/nio/charset/CharsetEncoder;->charset()Ljava/nio/charset/Charset;
 HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;)Ljava/nio/ByteBuffer;
 HSPLjava/nio/charset/CharsetEncoder;->encode(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;Z)Ljava/nio/charset/CoderResult;
+HSPLjava/nio/charset/CharsetEncoder;->flush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
+HSPLjava/nio/charset/CharsetEncoder;->malformedInputAction()Ljava/nio/charset/CodingErrorAction;
+HSPLjava/nio/charset/CharsetEncoder;->maxBytesPerChar()F
 HSPLjava/nio/charset/CharsetEncoder;->onMalformedInput(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
 HSPLjava/nio/charset/CharsetEncoder;->onUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)Ljava/nio/charset/CharsetEncoder;
 HSPLjava/nio/charset/CharsetEncoder;->replacement()[B
-HSPLjava/nio/charset/CharsetEncoderICU;->encodeLoop(Ljava/nio/CharBuffer;Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
-HSPLjava/nio/charset/CharsetEncoderICU;->getArray(Ljava/nio/ByteBuffer;)I
-HSPLjava/nio/charset/CharsetEncoderICU;->getArray(Ljava/nio/CharBuffer;)I
-HSPLjava/nio/charset/CharsetEncoderICU;->implFlush(Ljava/nio/ByteBuffer;)Ljava/nio/charset/CoderResult;
-HSPLjava/nio/charset/CharsetEncoderICU;->implOnMalformedInput(Ljava/nio/charset/CodingErrorAction;)V
-HSPLjava/nio/charset/CharsetEncoderICU;->implOnUnmappableCharacter(Ljava/nio/charset/CodingErrorAction;)V
-HSPLjava/nio/charset/CharsetEncoderICU;->implReset()V
-HSPLjava/nio/charset/CharsetEncoderICU;->newInstance(Ljava/nio/charset/Charset;Ljava/lang/String;)Ljava/nio/charset/CharsetEncoderICU;
-HSPLjava/nio/charset/CharsetEncoderICU;->setPosition(Ljava/nio/ByteBuffer;)V
-HSPLjava/nio/charset/CharsetICU;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
-HSPLjava/nio/charset/CharsetICU;->newDecoder()Ljava/nio/charset/CharsetDecoder;
-HSPLjava/nio/charset/CharsetICU;->newEncoder()Ljava/nio/charset/CharsetEncoder;
-HSPLjava/nio/charset/CoderResult$1;-><init>()V
-HSPLjava/nio/charset/CoderResult$2;-><init>()V
-HSPLjava/nio/charset/CoderResult;-><init>(II)V
+HSPLjava/nio/charset/CharsetEncoder;->reset()Ljava/nio/charset/CharsetEncoder;
+HSPLjava/nio/charset/CharsetEncoder;->unmappableCharacterAction()Ljava/nio/charset/CodingErrorAction;
 HSPLjava/nio/charset/CoderResult;->isError()Z
 HSPLjava/nio/charset/CoderResult;->isOverflow()Z
 HSPLjava/nio/charset/CoderResult;->isUnderflow()Z
-HSPLjava/nio/charset/CodingErrorAction;-><init>(Ljava/lang/String;)V
-HSPLjava/nio/file/AccessMode;-><init>(Ljava/lang/String;I)V
-HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->defaultFileSystem()Ljava/nio/file/FileSystem;
-HSPLjava/nio/file/FileSystems$DefaultFileSystemHolder;->getDefaultProvider()Ljava/nio/file/spi/FileSystemProvider;
+HSPLjava/nio/file/FileSystemException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/nio/file/FileSystems;->getDefault()Ljava/nio/file/FileSystem;
-PLjava/nio/file/Files$1;->accept(Ljava/lang/Object;)Z
-PLjava/nio/file/Files$1;->accept(Ljava/nio/file/Path;)Z
-HSPLjava/nio/file/Files$AcceptAllFilter;-><init>()V
-HSPLjava/nio/file/Files$AcceptAllFilter;->accept(Ljava/lang/Object;)Z
-HSPLjava/nio/file/Files$AcceptAllFilter;->accept(Ljava/nio/file/Path;)Z
-HSPLjava/nio/file/Files;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLjava/nio/file/Files;->createLink(Ljava/nio/file/Path;Ljava/nio/file/Path;)Ljava/nio/file/Path;
-HSPLjava/nio/file/Files;->exists(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
-HSPLjava/nio/file/Files;->followLinks([Ljava/nio/file/LinkOption;)Z
 HSPLjava/nio/file/Files;->isRegularFile(Ljava/nio/file/Path;[Ljava/nio/file/LinkOption;)Z
-HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;)Ljava/io/BufferedReader;
-HSPLjava/nio/file/Files;->newBufferedReader(Ljava/nio/file/Path;Ljava/nio/charset/Charset;)Ljava/io/BufferedReader;
-HPLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;)Ljava/nio/file/DirectoryStream;
-HPLjava/nio/file/Files;->newDirectoryStream(Ljava/nio/file/Path;Ljava/lang/String;)Ljava/nio/file/DirectoryStream;
-HSPLjava/nio/file/Files;->read(Ljava/io/InputStream;I)[B
-HSPLjava/nio/file/Files;->readAllBytes(Ljava/nio/file/Path;)[B
-HSPLjava/nio/file/LinkOption;-><init>(Ljava/lang/String;I)V
+HSPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
+HSPLjava/nio/file/Files;->newByteChannel(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/nio/channels/SeekableByteChannel;
+HSPLjava/nio/file/Files;->provider(Ljava/nio/file/Path;)Ljava/nio/file/spi/FileSystemProvider;
+HSPLjava/nio/file/Files;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;
+HSPLjava/nio/file/NoSuchFileException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/nio/file/Paths;->get(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
-HSPLjava/nio/file/StandardOpenOption;-><init>(Ljava/lang/String;I)V
-HSPLjava/nio/file/spi/FileSystemProvider;->newInputStream(Ljava/nio/file/Path;[Ljava/nio/file/OpenOption;)Ljava/io/InputStream;
+HSPLjava/nio/file/StandardOpenOption;->values()[Ljava/nio/file/StandardOpenOption;
+HSPLjava/nio/file/attribute/FileTime;-><init>(JLjava/util/concurrent/TimeUnit;Ljava/time/Instant;)V
+HSPLjava/nio/file/attribute/FileTime;->from(JLjava/util/concurrent/TimeUnit;)Ljava/nio/file/attribute/FileTime;
+HSPLjava/security/AccessControlContext;-><init>([Ljava/security/ProtectionDomain;)V
 HSPLjava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedAction;)Ljava/lang/Object;
 HSPLjava/security/AccessController;->doPrivileged(Ljava/security/PrivilegedExceptionAction;)Ljava/lang/Object;
+HSPLjava/security/AccessController;->getContext()Ljava/security/AccessControlContext;
 HSPLjava/security/AlgorithmParameters;->getInstance(Ljava/lang/String;)Ljava/security/AlgorithmParameters;
 HSPLjava/security/AlgorithmParametersSpi;-><init>()V
-HSPLjava/security/BasicPermission;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLjava/security/CryptoPrimitive;-><init>(Ljava/lang/String;I)V
-HSPLjava/security/CryptoPrimitive;->values()[Ljava/security/CryptoPrimitive;
+HSPLjava/security/CodeSigner;-><init>(Ljava/security/cert/CertPath;Ljava/security/Timestamp;)V
+HSPLjava/security/CodeSigner;->getSignerCertPath()Ljava/security/cert/CertPath;
+HSPLjava/security/GeneralSecurityException;-><init>(Ljava/lang/String;)V
 HSPLjava/security/KeyFactory;-><init>(Ljava/lang/String;)V
 HSPLjava/security/KeyFactory;->generatePrivate(Ljava/security/spec/KeySpec;)Ljava/security/PrivateKey;
 HSPLjava/security/KeyFactory;->generatePublic(Ljava/security/spec/KeySpec;)Ljava/security/PublicKey;
@@ -27626,88 +18108,120 @@
 HSPLjava/security/KeyPair;-><init>(Ljava/security/PublicKey;Ljava/security/PrivateKey;)V
 HSPLjava/security/KeyPair;->getPrivate()Ljava/security/PrivateKey;
 HSPLjava/security/KeyPair;->getPublic()Ljava/security/PublicKey;
+HSPLjava/security/KeyStore$1;-><init>()V
+HSPLjava/security/KeyStore$1;->run()Ljava/lang/Object;
+HSPLjava/security/KeyStore$1;->run()Ljava/lang/String;
+HSPLjava/security/KeyStore;-><init>(Ljava/security/KeyStoreSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjava/security/KeyStore;->aliases()Ljava/util/Enumeration;
-HSPLjava/security/KeyStore;->containsAlias(Ljava/lang/String;)Z
 HSPLjava/security/KeyStore;->getCertificate(Ljava/lang/String;)Ljava/security/cert/Certificate;
 HSPLjava/security/KeyStore;->getDefaultType()Ljava/lang/String;
-HSPLjava/security/KeyStore;->getEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;
 HSPLjava/security/KeyStore;->getInstance(Ljava/lang/String;)Ljava/security/KeyStore;
 HSPLjava/security/KeyStore;->getKey(Ljava/lang/String;[C)Ljava/security/Key;
 HSPLjava/security/KeyStore;->getType()Ljava/lang/String;
 HSPLjava/security/KeyStore;->load(Ljava/io/InputStream;[C)V
 HSPLjava/security/KeyStore;->load(Ljava/security/KeyStore$LoadStoreParameter;)V
-HSPLjava/security/KeyStore;->setCertificateEntry(Ljava/lang/String;Ljava/security/cert/Certificate;)V
 HSPLjava/security/KeyStoreSpi;-><init>()V
-HSPLjava/security/KeyStoreSpi;->engineGetEntry(Ljava/lang/String;Ljava/security/KeyStore$ProtectionParameter;)Ljava/security/KeyStore$Entry;
 HSPLjava/security/KeyStoreSpi;->engineLoad(Ljava/security/KeyStore$LoadStoreParameter;)V
+HSPLjava/security/MessageDigest$Delegate;-><init>(Ljava/security/MessageDigestSpi;Ljava/lang/String;)V
+HSPLjava/security/MessageDigest$Delegate;->clone()Ljava/lang/Object;
 HSPLjava/security/MessageDigest$Delegate;->engineDigest()[B
 HSPLjava/security/MessageDigest$Delegate;->engineDigest([BII)I
 HSPLjava/security/MessageDigest$Delegate;->engineGetDigestLength()I
 HSPLjava/security/MessageDigest$Delegate;->engineReset()V
 HSPLjava/security/MessageDigest$Delegate;->engineUpdate(B)V
-HSPLjava/security/MessageDigest$Delegate;->engineUpdate(Ljava/nio/ByteBuffer;)V
 HSPLjava/security/MessageDigest$Delegate;->engineUpdate([BII)V
+HSPLjava/security/MessageDigest;-><init>(Ljava/lang/String;)V
+HSPLjava/security/MessageDigest;->access$000(Ljava/security/MessageDigest;)Ljava/lang/String;
+HSPLjava/security/MessageDigest;->access$100(Ljava/security/MessageDigest;)Ljava/security/Provider;
+HSPLjava/security/MessageDigest;->access$102(Ljava/security/MessageDigest;Ljava/security/Provider;)Ljava/security/Provider;
+HSPLjava/security/MessageDigest;->access$200(Ljava/security/MessageDigest;)I
+HSPLjava/security/MessageDigest;->access$202(Ljava/security/MessageDigest;I)I
 HSPLjava/security/MessageDigest;->digest()[B
 HSPLjava/security/MessageDigest;->digest([B)[B
 HSPLjava/security/MessageDigest;->digest([BII)I
 HSPLjava/security/MessageDigest;->getDigestLength()I
 HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;)Ljava/security/MessageDigest;
-HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljava/security/MessageDigest;
 HSPLjava/security/MessageDigest;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/MessageDigest;
 HSPLjava/security/MessageDigest;->isEqual([B[B)Z
 HSPLjava/security/MessageDigest;->reset()V
 HSPLjava/security/MessageDigest;->update(B)V
-HSPLjava/security/MessageDigest;->update(Ljava/nio/ByteBuffer;)V
 HSPLjava/security/MessageDigest;->update([B)V
 HSPLjava/security/MessageDigest;->update([BII)V
 HSPLjava/security/MessageDigestSpi;-><init>()V
 HSPLjava/security/MessageDigestSpi;->engineDigest([BII)I
-HSPLjava/security/MessageDigestSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V
 HSPLjava/security/NoSuchAlgorithmException;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Provider$EngineDescription;->getConstructorParameterClass()Ljava/lang/Class;
+HSPLjava/security/Provider$Service;-><init>(Ljava/security/Provider;)V
+HSPLjava/security/Provider$Service;-><init>(Ljava/security/Provider;Ljava/security/Provider$1;)V
+HSPLjava/security/Provider$Service;->access$000(Ljava/security/Provider$Service;)Z
+HSPLjava/security/Provider$Service;->access$302(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/security/Provider$Service;->access$402(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/security/Provider$Service;->access$500(Ljava/security/Provider$Service;Ljava/lang/String;)V
+HSPLjava/security/Provider$Service;->access$602(Ljava/security/Provider$Service;Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/security/Provider$Service;->addAlias(Ljava/lang/String;)V
 HSPLjava/security/Provider$Service;->addAttribute(Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/security/Provider$Service;->getAlgorithm()Ljava/lang/String;
+HSPLjava/security/Provider$Service;->getAttribute(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/security/Provider$Service;->getClassName()Ljava/lang/String;
 HSPLjava/security/Provider$Service;->getImplClass()Ljava/lang/Class;
 HSPLjava/security/Provider$Service;->getKeyClass(Ljava/lang/String;)Ljava/lang/Class;
+HSPLjava/security/Provider$Service;->getProvider()Ljava/security/Provider;
+HSPLjava/security/Provider$Service;->getType()Ljava/lang/String;
 HSPLjava/security/Provider$Service;->hasKeyAttributes()Z
+HSPLjava/security/Provider$Service;->isValid()Z
 HSPLjava/security/Provider$Service;->newInstance(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/security/Provider$Service;->supportsKeyClass(Ljava/security/Key;)Z
 HSPLjava/security/Provider$Service;->supportsKeyFormat(Ljava/security/Key;)Z
 HSPLjava/security/Provider$Service;->supportsParameter(Ljava/lang/Object;)Z
+HSPLjava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
 HSPLjava/security/Provider$ServiceKey;-><init>(Ljava/lang/String;Ljava/lang/String;ZLjava/security/Provider$1;)V
 HSPLjava/security/Provider$ServiceKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/security/Provider$ServiceKey;->hashCode()I
 HSPLjava/security/Provider$ServiceKey;->matches(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLjava/security/Provider$UString;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Provider$UString;->equals(Ljava/lang/Object;)Z
 HSPLjava/security/Provider$UString;->hashCode()I
 HSPLjava/security/Provider;-><init>(Ljava/lang/String;DLjava/lang/String;)V
-HSPLjava/security/Provider;->addEngine(Ljava/lang/String;ZLjava/lang/String;)V
+HSPLjava/security/Provider;->access$1000()Ljava/util/Map;
 HSPLjava/security/Provider;->check(Ljava/lang/String;)V
 HSPLjava/security/Provider;->checkInitialized()V
 HSPLjava/security/Provider;->checkLegacy(Ljava/lang/Object;)Z
 HSPLjava/security/Provider;->ensureLegacyParsed()V
+HSPLjava/security/Provider;->getEngineName(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/security/Provider;->getName()Ljava/lang/String;
 HSPLjava/security/Provider;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
 HSPLjava/security/Provider;->getServices()Ljava/util/Set;
 HSPLjava/security/Provider;->getTypeAndAlgorithm(Ljava/lang/String;)[Ljava/lang/String;
+HSPLjava/security/Provider;->implPut(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/security/Provider;->parseLegacyPut(Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/security/Provider;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/security/Provider;->putId()V
 HSPLjava/security/Provider;->removeInvalidServices(Ljava/util/Map;)V
 HSPLjava/security/Provider;->warmUpServiceProvision()V
 HSPLjava/security/SecureRandom;-><init>()V
+HSPLjava/security/SecureRandom;-><init>(Ljava/security/SecureRandomSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjava/security/SecureRandom;->getDefaultPRNG(Z[B)V
 HSPLjava/security/SecureRandom;->getInstance(Ljava/lang/String;)Ljava/security/SecureRandom;
 HSPLjava/security/SecureRandom;->getPrngAlgorithm()Ljava/lang/String;
+HSPLjava/security/SecureRandom;->getProvider()Ljava/security/Provider;
+HSPLjava/security/SecureRandom;->getSecureRandomSpi()Ljava/security/SecureRandomSpi;
 HSPLjava/security/SecureRandom;->next(I)I
 HSPLjava/security/SecureRandom;->nextBytes([B)V
 HSPLjava/security/SecureRandom;->setSeed(J)V
 HSPLjava/security/SecureRandomSpi;-><init>()V
 HSPLjava/security/Security;->addProvider(Ljava/security/Provider;)I
+HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/Object;
+HSPLjava/security/Security;->getImpl(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)[Ljava/lang/Object;
 HSPLjava/security/Security;->getProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/security/Security;->getProvider(Ljava/lang/String;)Ljava/security/Provider;
 HSPLjava/security/Security;->getProviders()[Ljava/security/Provider;
 HSPLjava/security/Security;->getSpiClass(Ljava/lang/String;)Ljava/lang/Class;
+HSPLjava/security/Security;->getVersion()I
+HSPLjava/security/Security;->increaseVersion()V
 HSPLjava/security/Security;->insertProviderAt(Ljava/security/Provider;I)I
+HSPLjava/security/Security;->invalidateSMCache(Ljava/lang/String;)V
 HSPLjava/security/Security;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/security/Signature$Delegate;-><init>(Ljava/lang/String;)V
 HSPLjava/security/Signature$Delegate;->chooseFirstProvider()V
 HSPLjava/security/Signature$Delegate;->chooseProvider(ILjava/security/Key;Ljava/security/SecureRandom;)V
 HSPLjava/security/Signature$Delegate;->engineInitVerify(Ljava/security/PublicKey;)V
@@ -27716,6 +18230,9 @@
 HSPLjava/security/Signature$Delegate;->engineVerify([B)Z
 HSPLjava/security/Signature$Delegate;->init(Ljava/security/SignatureSpi;ILjava/security/Key;Ljava/security/SecureRandom;)V
 HSPLjava/security/Signature$Delegate;->newInstance(Ljava/security/Provider$Service;)Ljava/security/SignatureSpi;
+HSPLjava/security/Signature;-><init>(Ljava/lang/String;)V
+HSPLjava/security/Signature;->access$000(Ljava/security/Signature;)Ljava/lang/String;
+HSPLjava/security/Signature;->access$200(Ljava/security/Provider$Service;)Z
 HSPLjava/security/Signature;->getInstance(Ljava/lang/String;)Ljava/security/Signature;
 HSPLjava/security/Signature;->initVerify(Ljava/security/PublicKey;)V
 HSPLjava/security/Signature;->isSpi(Ljava/security/Provider$Service;)Z
@@ -27725,36 +18242,30 @@
 HSPLjava/security/Signature;->verify([B)Z
 HSPLjava/security/SignatureSpi;-><init>()V
 HSPLjava/security/SignatureSpi;->engineUpdate(Ljava/nio/ByteBuffer;)V
-HSPLjava/security/cert/CRLReason;-><init>(Ljava/lang/String;I)V
-HSPLjava/security/cert/CRLReason;->values()[Ljava/security/cert/CRLReason;
 HSPLjava/security/cert/CertPath;-><init>(Ljava/lang/String;)V
 HSPLjava/security/cert/CertPath;->getType()Ljava/lang/String;
-PLjava/security/cert/CertPathBuilder;->build(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;
-PLjava/security/cert/CertPathBuilder;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathBuilder;
-HPLjava/security/cert/CertPathHelperImpl;->implSetPathToNames(Ljava/security/cert/X509CertSelector;Ljava/util/Set;)V
-HSPLjava/security/cert/CertPathHelperImpl;->initialize()V
+HSPLjava/security/cert/CertPathValidator;-><init>(Ljava/security/cert/CertPathValidatorSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjava/security/cert/CertPathValidator;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertPathValidator;
-HSPLjava/security/cert/CertPathValidator;->getRevocationChecker()Ljava/security/cert/CertPathChecker;
 HSPLjava/security/cert/CertPathValidator;->validate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;
+HSPLjava/security/cert/CertPathValidatorSpi;-><init>()V
+HSPLjava/security/cert/CertStore;-><init>(Ljava/security/cert/CertStoreSpi;Ljava/security/Provider;Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)V
 HSPLjava/security/cert/CertStore;->getInstance(Ljava/lang/String;Ljava/security/cert/CertStoreParameters;)Ljava/security/cert/CertStore;
+HSPLjava/security/cert/CertStoreSpi;-><init>(Ljava/security/cert/CertStoreParameters;)V
+HSPLjava/security/cert/Certificate;-><init>(Ljava/lang/String;)V
 HSPLjava/security/cert/Certificate;->equals(Ljava/lang/Object;)Z
 HSPLjava/security/cert/Certificate;->hashCode()I
-HPLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/io/InputStream;)Ljava/security/cert/CertPath;
+HSPLjava/security/cert/CertificateFactory;-><init>(Ljava/security/cert/CertificateFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjava/security/cert/CertificateFactory;->generateCertPath(Ljava/util/List;)Ljava/security/cert/CertPath;
 HSPLjava/security/cert/CertificateFactory;->generateCertificate(Ljava/io/InputStream;)Ljava/security/cert/Certificate;
 HSPLjava/security/cert/CertificateFactory;->getInstance(Ljava/lang/String;)Ljava/security/cert/CertificateFactory;
 HSPLjava/security/cert/CertificateFactorySpi;-><init>()V
 HSPLjava/security/cert/CollectionCertStoreParameters;-><init>(Ljava/util/Collection;)V
 HSPLjava/security/cert/CollectionCertStoreParameters;->clone()Ljava/lang/Object;
-HPLjava/security/cert/CollectionCertStoreParameters;->getCollection()Ljava/util/Collection;
-PLjava/security/cert/PKIXBuilderParameters;-><init>(Ljava/util/Set;Ljava/security/cert/CertSelector;)V
-PLjava/security/cert/PKIXBuilderParameters;->getMaxPathLength()I
-PLjava/security/cert/PKIXCertPathBuilderResult;->getCertPath()Ljava/security/cert/CertPath;
 HSPLjava/security/cert/PKIXCertPathChecker;-><init>()V
 HSPLjava/security/cert/PKIXCertPathChecker;->clone()Ljava/lang/Object;
+HSPLjava/security/cert/PKIXCertPathValidatorResult;-><init>(Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;)V
 HSPLjava/security/cert/PKIXParameters;-><init>(Ljava/util/Set;)V
 HSPLjava/security/cert/PKIXParameters;->addCertPathChecker(Ljava/security/cert/PKIXCertPathChecker;)V
-HPLjava/security/cert/PKIXParameters;->addCertStore(Ljava/security/cert/CertStore;)V
 HSPLjava/security/cert/PKIXParameters;->getCertPathCheckers()Ljava/util/List;
 HSPLjava/security/cert/PKIXParameters;->getCertStores()Ljava/util/List;
 HSPLjava/security/cert/PKIXParameters;->getDate()Ljava/util/Date;
@@ -27767,31 +18278,14 @@
 HSPLjava/security/cert/PKIXParameters;->isExplicitPolicyRequired()Z
 HSPLjava/security/cert/PKIXParameters;->isPolicyMappingInhibited()Z
 HSPLjava/security/cert/PKIXParameters;->isRevocationEnabled()Z
-HSPLjava/security/cert/PKIXParameters;->setCertPathCheckers(Ljava/util/List;)V
-HSPLjava/security/cert/PKIXParameters;->setDate(Ljava/util/Date;)V
 HSPLjava/security/cert/PKIXParameters;->setRevocationEnabled(Z)V
-HSPLjava/security/cert/PKIXParameters;->setTargetCertConstraints(Ljava/security/cert/CertSelector;)V
 HSPLjava/security/cert/PKIXParameters;->setTrustAnchors(Ljava/util/Set;)V
-HSPLjava/security/cert/PKIXRevocationChecker$Option;-><init>(Ljava/lang/String;I)V
-HSPLjava/security/cert/PKIXRevocationChecker$Option;->values()[Ljava/security/cert/PKIXRevocationChecker$Option;
-HSPLjava/security/cert/PKIXRevocationChecker;->clone()Ljava/security/cert/PKIXRevocationChecker;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOcspExtensions()Ljava/util/List;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponder()Ljava/net/URI;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponderCert()Ljava/security/cert/X509Certificate;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOcspResponses()Ljava/util/Map;
-HSPLjava/security/cert/PKIXRevocationChecker;->getOptions()Ljava/util/Set;
-HSPLjava/security/cert/PKIXRevocationChecker;->setOcspResponses(Ljava/util/Map;)V
-HSPLjava/security/cert/PKIXRevocationChecker;->setOptions(Ljava/util/Set;)V
 HSPLjava/security/cert/PolicyQualifierInfo;-><init>([B)V
 HSPLjava/security/cert/TrustAnchor;-><init>(Ljava/security/cert/X509Certificate;[B)V
+HSPLjava/security/cert/TrustAnchor;->getNameConstraints()[B
 HSPLjava/security/cert/TrustAnchor;->getTrustedCert()Ljava/security/cert/X509Certificate;
 HSPLjava/security/cert/TrustAnchor;->setNameConstraints([B)V
 HSPLjava/security/cert/X509CertSelector;-><init>()V
-HPLjava/security/cert/X509CertSelector;->clone()Ljava/lang/Object;
-HPLjava/security/cert/X509CertSelector;->getBasicConstraints()I
-HPLjava/security/cert/X509CertSelector;->getCertificate()Ljava/security/cert/X509Certificate;
-HPLjava/security/cert/X509CertSelector;->getExtensionObject(Ljava/security/cert/X509Certificate;I)Ljava/security/cert/Extension;
-HPLjava/security/cert/X509CertSelector;->getSubject()Ljavax/security/auth/x500/X500Principal;
 HSPLjava/security/cert/X509CertSelector;->match(Ljava/security/cert/Certificate;)Z
 HSPLjava/security/cert/X509CertSelector;->matchAuthorityKeyID(Ljava/security/cert/X509Certificate;)Z
 HSPLjava/security/cert/X509CertSelector;->matchBasicConstraints(Ljava/security/cert/X509Certificate;)Z
@@ -27804,14 +18298,8 @@
 HSPLjava/security/cert/X509CertSelector;->matchSubjectAlternativeNames(Ljava/security/cert/X509Certificate;)Z
 HSPLjava/security/cert/X509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z
 HSPLjava/security/cert/X509CertSelector;->matchSubjectPublicKeyAlgID(Ljava/security/cert/X509Certificate;)Z
-HPLjava/security/cert/X509CertSelector;->setBasicConstraints(I)V
-HPLjava/security/cert/X509CertSelector;->setCertificateValid(Ljava/util/Date;)V
-HPLjava/security/cert/X509CertSelector;->setPathToNamesInternal(Ljava/util/Set;)V
 HSPLjava/security/cert/X509CertSelector;->setSubject(Ljavax/security/auth/x500/X500Principal;)V
 HSPLjava/security/cert/X509Certificate;-><init>()V
-HSPLjava/security/spec/DSAParameterSpec;->getG()Ljava/math/BigInteger;
-HSPLjava/security/spec/DSAParameterSpec;->getP()Ljava/math/BigInteger;
-HSPLjava/security/spec/DSAParameterSpec;->getQ()Ljava/math/BigInteger;
 HSPLjava/security/spec/ECFieldFp;-><init>(Ljava/math/BigInteger;)V
 HSPLjava/security/spec/ECFieldFp;->getFieldSize()I
 HSPLjava/security/spec/ECFieldFp;->getP()Ljava/math/BigInteger;
@@ -27819,31 +18307,30 @@
 HSPLjava/security/spec/ECParameterSpec;->getCurve()Ljava/security/spec/EllipticCurve;
 HSPLjava/security/spec/ECParameterSpec;->getOrder()Ljava/math/BigInteger;
 HSPLjava/security/spec/ECParameterSpec;->setCurveName(Ljava/lang/String;)V
-HSPLjava/security/spec/ECPoint;-><init>()V
 HSPLjava/security/spec/ECPoint;-><init>(Ljava/math/BigInteger;Ljava/math/BigInteger;)V
 HSPLjava/security/spec/EllipticCurve;-><init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;)V
 HSPLjava/security/spec/EllipticCurve;-><init>(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/math/BigInteger;[B)V
 HSPLjava/security/spec/EllipticCurve;->checkValidity(Ljava/security/spec/ECField;Ljava/math/BigInteger;Ljava/lang/String;)V
 HSPLjava/security/spec/EllipticCurve;->getField()Ljava/security/spec/ECField;
-HSPLjava/security/spec/InvalidKeySpecException;-><init>(Ljava/lang/String;)V
-HSPLjava/security/spec/MGF1ParameterSpec;-><init>(Ljava/lang/String;)V
+HSPLjava/security/spec/EncodedKeySpec;-><init>([B)V
+HSPLjava/security/spec/EncodedKeySpec;->getEncoded()[B
 HSPLjava/security/spec/PKCS8EncodedKeySpec;-><init>([B)V
 HSPLjava/security/spec/PKCS8EncodedKeySpec;->getEncoded()[B
 HSPLjava/security/spec/X509EncodedKeySpec;-><init>([B)V
 HSPLjava/security/spec/X509EncodedKeySpec;->getEncoded()[B
-HSPLjava/sql/Timestamp;-><init>(J)V
-HSPLjava/sql/Timestamp;->toString()Ljava/lang/String;
 HSPLjava/text/AttributedCharacterIterator$Attribute;-><init>(Ljava/lang/String;)V
+HSPLjava/text/AttributedCharacterIterator$Attribute;->equals(Ljava/lang/Object;)Z
 HSPLjava/text/AttributedCharacterIterator$Attribute;->hashCode()I
-HSPLjava/text/BreakIterator;->getWordInstance()Ljava/text/BreakIterator;
+HSPLjava/text/BreakIterator;-><init>()V
 HSPLjava/text/BreakIterator;->getWordInstance(Ljava/util/Locale;)Ljava/text/BreakIterator;
+HSPLjava/text/CalendarBuilder;-><init>()V
 HSPLjava/text/CalendarBuilder;->establish(Ljava/util/Calendar;)Ljava/util/Calendar;
 HSPLjava/text/CalendarBuilder;->isSet(I)Z
 HSPLjava/text/CalendarBuilder;->set(II)Ljava/text/CalendarBuilder;
-HSPLjava/text/Collator;->getInstance()Ljava/text/Collator;
+HSPLjava/text/Collator;-><init>(Landroid/icu/text/Collator;)V
 HSPLjava/text/Collator;->getInstance(Ljava/util/Locale;)Ljava/text/Collator;
 HSPLjava/text/Collator;->setStrength(I)V
-HSPLjava/text/DateFormat$Field;-><init>(Ljava/lang/String;I)V
+HSPLjava/text/DateFormat;-><init>()V
 HSPLjava/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
 HSPLjava/text/DateFormat;->format(Ljava/util/Date;)Ljava/lang/String;
 HSPLjava/text/DateFormat;->get(IIILjava/util/Locale;)Ljava/text/DateFormat;
@@ -27851,11 +18338,11 @@
 HSPLjava/text/DateFormat;->getTimeZone()Ljava/util/TimeZone;
 HSPLjava/text/DateFormat;->parse(Ljava/lang/String;)Ljava/util/Date;
 HSPLjava/text/DateFormat;->set24HourTimePref(Ljava/lang/Boolean;)V
-HSPLjava/text/DateFormat;->setLenient(Z)V
 HSPLjava/text/DateFormat;->setTimeZone(Ljava/util/TimeZone;)V
 HSPLjava/text/DateFormatSymbols;-><init>(Ljava/util/Locale;)V
 HSPLjava/text/DateFormatSymbols;->getAmPmStrings()[Ljava/lang/String;
 HSPLjava/text/DateFormatSymbols;->getCachedInstance(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
+HSPLjava/text/DateFormatSymbols;->getInstanceRef(Ljava/util/Locale;)Ljava/text/DateFormatSymbols;
 HSPLjava/text/DateFormatSymbols;->getMonths()[Ljava/lang/String;
 HSPLjava/text/DateFormatSymbols;->getShortMonths()[Ljava/lang/String;
 HSPLjava/text/DateFormatSymbols;->getShortWeekdays()[Ljava/lang/String;
@@ -27872,65 +18359,98 @@
 HSPLjava/text/DecimalFormat;->getIcuFieldPosition(Ljava/text/FieldPosition;)Ljava/text/FieldPosition;
 HSPLjava/text/DecimalFormat;->getMaximumFractionDigits()I
 HSPLjava/text/DecimalFormat;->getMaximumIntegerDigits()I
-HSPLjava/text/DecimalFormat;->getMinimumFractionDigits()I
 HSPLjava/text/DecimalFormat;->getMinimumIntegerDigits()I
 HSPLjava/text/DecimalFormat;->getNegativePrefix()Ljava/lang/String;
 HSPLjava/text/DecimalFormat;->getNegativeSuffix()Ljava/lang/String;
 HSPLjava/text/DecimalFormat;->getPositivePrefix()Ljava/lang/String;
 HSPLjava/text/DecimalFormat;->getPositiveSuffix()Ljava/lang/String;
+HSPLjava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V
 HSPLjava/text/DecimalFormat;->isParseBigDecimal()Z
 HSPLjava/text/DecimalFormat;->isParseIntegerOnly()Z
 HSPLjava/text/DecimalFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/lang/Number;
+HSPLjava/text/DecimalFormat;->setDecimalSeparatorAlwaysShown(Z)V
 HSPLjava/text/DecimalFormat;->setGroupingUsed(Z)V
 HSPLjava/text/DecimalFormat;->setMaximumFractionDigits(I)V
 HSPLjava/text/DecimalFormat;->setMaximumIntegerDigits(I)V
-HSPLjava/text/DecimalFormat;->setMinimumFractionDigits(I)V
 HSPLjava/text/DecimalFormat;->setMinimumIntegerDigits(I)V
+HSPLjava/text/DecimalFormat;->setParseIntegerOnly(Z)V
 HSPLjava/text/DecimalFormat;->toPattern()Ljava/lang/String;
 HSPLjava/text/DecimalFormat;->updateFieldsFromIcu()V
 HSPLjava/text/DecimalFormatSymbols;-><init>(Ljava/util/Locale;)V
 HSPLjava/text/DecimalFormatSymbols;->clone()Ljava/lang/Object;
 HSPLjava/text/DecimalFormatSymbols;->fromIcuInstance(Landroid/icu/text/DecimalFormatSymbols;)Ljava/text/DecimalFormatSymbols;
+HSPLjava/text/DecimalFormatSymbols;->getDecimalSeparator()C
+HSPLjava/text/DecimalFormatSymbols;->getGroupingSeparator()C
 HSPLjava/text/DecimalFormatSymbols;->getIcuDecimalFormatSymbols()Landroid/icu/text/DecimalFormatSymbols;
+HSPLjava/text/DecimalFormatSymbols;->getInfinity()Ljava/lang/String;
+HSPLjava/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;
+HSPLjava/text/DecimalFormatSymbols;->getNaN()Ljava/lang/String;
 HSPLjava/text/DecimalFormatSymbols;->getZeroDigit()C
 HSPLjava/text/DecimalFormatSymbols;->initialize(Ljava/util/Locale;)V
 HSPLjava/text/DecimalFormatSymbols;->maybeStripMarkers(Ljava/lang/String;C)C
 HSPLjava/text/DecimalFormatSymbols;->setCurrency(Ljava/util/Currency;)V
+HSPLjava/text/DecimalFormatSymbols;->setCurrencySymbol(Ljava/lang/String;)V
+HSPLjava/text/DecimalFormatSymbols;->setDecimalSeparator(C)V
+HSPLjava/text/DecimalFormatSymbols;->setDigit(C)V
+HSPLjava/text/DecimalFormatSymbols;->setExponentSeparator(Ljava/lang/String;)V
+HSPLjava/text/DecimalFormatSymbols;->setGroupingSeparator(C)V
+HSPLjava/text/DecimalFormatSymbols;->setInfinity(Ljava/lang/String;)V
 HSPLjava/text/DecimalFormatSymbols;->setInternationalCurrencySymbol(Ljava/lang/String;)V
+HSPLjava/text/DecimalFormatSymbols;->setMinusSign(C)V
+HSPLjava/text/DecimalFormatSymbols;->setMonetaryDecimalSeparator(C)V
+HSPLjava/text/DecimalFormatSymbols;->setNaN(Ljava/lang/String;)V
+HSPLjava/text/DecimalFormatSymbols;->setPatternSeparator(C)V
+HSPLjava/text/DecimalFormatSymbols;->setPerMill(C)V
+HSPLjava/text/DecimalFormatSymbols;->setPercent(C)V
+HSPLjava/text/DecimalFormatSymbols;->setZeroDigit(C)V
 HSPLjava/text/DontCareFieldPosition$1;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
-HSPLjava/text/DontCareFieldPosition;-><init>()V
 HSPLjava/text/DontCareFieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate;
+HSPLjava/text/FieldPosition$Delegate;-><init>(Ljava/text/FieldPosition;)V
+HSPLjava/text/FieldPosition$Delegate;-><init>(Ljava/text/FieldPosition;Ljava/text/FieldPosition$1;)V
 HSPLjava/text/FieldPosition$Delegate;->formatted(ILjava/text/Format$Field;Ljava/lang/Object;IILjava/lang/StringBuffer;)V
+HSPLjava/text/FieldPosition;-><init>(I)V
+HSPLjava/text/FieldPosition;->access$200(Ljava/text/FieldPosition;Ljava/text/Format$Field;I)Z
 HSPLjava/text/FieldPosition;->getBeginIndex()I
 HSPLjava/text/FieldPosition;->getEndIndex()I
 HSPLjava/text/FieldPosition;->getField()I
 HSPLjava/text/FieldPosition;->getFieldAttribute()Ljava/text/Format$Field;
 HSPLjava/text/FieldPosition;->getFieldDelegate()Ljava/text/Format$FieldDelegate;
+HSPLjava/text/FieldPosition;->matchesField(Ljava/text/Format$Field;I)Z
 HSPLjava/text/FieldPosition;->setBeginIndex(I)V
 HSPLjava/text/FieldPosition;->setEndIndex(I)V
 HSPLjava/text/Format$Field;-><init>(Ljava/lang/String;)V
+HSPLjava/text/Format;-><init>()V
 HSPLjava/text/Format;->clone()Ljava/lang/Object;
 HSPLjava/text/Format;->format(Ljava/lang/Object;)Ljava/lang/String;
-HSPLjava/text/MessageFormat$Field;-><init>(Ljava/lang/String;)V
+HSPLjava/text/IcuIteratorWrapper;-><init>(Landroid/icu/text/BreakIterator;)V
 HSPLjava/text/MessageFormat;-><init>(Ljava/lang/String;)V
 HSPLjava/text/MessageFormat;->applyPattern(Ljava/lang/String;)V
+HSPLjava/text/MessageFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
+HSPLjava/text/MessageFormat;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;
 HSPLjava/text/MessageFormat;->makeFormat(II[Ljava/lang/StringBuilder;)V
 HSPLjava/text/MessageFormat;->subformat([Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;Ljava/util/List;)Ljava/lang/StringBuffer;
-HSPLjava/text/Normalizer$Form;-><init>(Ljava/lang/String;ILandroid/icu/text/Normalizer$Mode;)V
+HSPLjava/text/Normalizer$Form;->access$000(Ljava/text/Normalizer$Form;)Landroid/icu/text/Normalizer$Mode;
 HSPLjava/text/Normalizer;->normalize(Ljava/lang/CharSequence;Ljava/text/Normalizer$Form;)Ljava/lang/String;
+HSPLjava/text/NumberFormat;-><init>()V
+HSPLjava/text/NumberFormat;->clone()Ljava/lang/Object;
 HSPLjava/text/NumberFormat;->format(D)Ljava/lang/String;
-HSPLjava/text/NumberFormat;->format(J)Ljava/lang/String;
-HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;
 HSPLjava/text/NumberFormat;->getInstance(Ljava/util/Locale;I)Ljava/text/NumberFormat;
-HSPLjava/text/NumberFormat;->getIntegerInstance()Ljava/text/NumberFormat;
 HSPLjava/text/NumberFormat;->getIntegerInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;
+HSPLjava/text/NumberFormat;->getNumberInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;
 HSPLjava/text/NumberFormat;->getPercentInstance()Ljava/text/NumberFormat;
+HSPLjava/text/NumberFormat;->getPercentInstance(Ljava/util/Locale;)Ljava/text/NumberFormat;
+HSPLjava/text/NumberFormat;->setMaximumFractionDigits(I)V
+HSPLjava/text/NumberFormat;->setMaximumIntegerDigits(I)V
+HSPLjava/text/NumberFormat;->setMinimumIntegerDigits(I)V
+HSPLjava/text/NumberFormat;->setParseIntegerOnly(Z)V
+HSPLjava/text/ParseException;-><init>(Ljava/lang/String;I)V
 HSPLjava/text/ParsePosition;-><init>(I)V
 HSPLjava/text/ParsePosition;->getErrorIndex()I
 HSPLjava/text/ParsePosition;->getIndex()I
 HSPLjava/text/ParsePosition;->setIndex(I)V
+HSPLjava/text/RuleBasedCollator;-><init>(Landroid/icu/text/RuleBasedCollator;)V
 HSPLjava/text/RuleBasedCollator;->compare(Ljava/lang/String;Ljava/lang/String;)I
-HSPLjava/text/SimpleDateFormat;-><init>()V
+HSPLjava/text/SimpleDateFormat;-><init>(IILjava/util/Locale;)V
 HSPLjava/text/SimpleDateFormat;-><init>(Ljava/lang/String;)V
 HSPLjava/text/SimpleDateFormat;-><init>(Ljava/lang/String;Ljava/util/Locale;)V
 HSPLjava/text/SimpleDateFormat;->checkNegativeNumberExpression()V
@@ -27942,8 +18462,11 @@
 HSPLjava/text/SimpleDateFormat;->formatWeekday(IIZZ)Ljava/lang/String;
 HSPLjava/text/SimpleDateFormat;->getDateTimeFormat(IILjava/util/Locale;)Ljava/lang/String;
 HSPLjava/text/SimpleDateFormat;->initialize(Ljava/util/Locale;)V
+HSPLjava/text/SimpleDateFormat;->initializeCalendar(Ljava/util/Locale;)V
+HSPLjava/text/SimpleDateFormat;->initializeDefaultCentury()V
 HSPLjava/text/SimpleDateFormat;->matchString(Ljava/lang/String;II[Ljava/lang/String;Ljava/text/CalendarBuilder;)I
 HSPLjava/text/SimpleDateFormat;->parse(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
+HSPLjava/text/SimpleDateFormat;->parseAmbiguousDatesAsAfter(Ljava/util/Date;)V
 HSPLjava/text/SimpleDateFormat;->parseInternal(Ljava/lang/String;Ljava/text/ParsePosition;)Ljava/util/Date;
 HSPLjava/text/SimpleDateFormat;->parseMonth(Ljava/lang/String;IIIILjava/text/ParsePosition;ZZLjava/text/CalendarBuilder;)I
 HSPLjava/text/SimpleDateFormat;->parseWeekday(Ljava/lang/String;IIZZLjava/text/CalendarBuilder;)I
@@ -27953,337 +18476,146 @@
 HSPLjava/text/SimpleDateFormat;->useDateFormatSymbols()Z
 HSPLjava/text/SimpleDateFormat;->zeroPaddingNumber(IIILjava/lang/StringBuffer;)V
 HSPLjava/text/StringCharacterIterator;-><init>(Ljava/lang/String;)V
+HSPLjava/text/StringCharacterIterator;-><init>(Ljava/lang/String;I)V
 HSPLjava/text/StringCharacterIterator;-><init>(Ljava/lang/String;III)V
 HSPLjava/text/StringCharacterIterator;->clone()Ljava/lang/Object;
 HSPLjava/text/StringCharacterIterator;->current()C
-HSPLjava/text/StringCharacterIterator;->first()C
-HSPLjava/text/StringCharacterIterator;->getBeginIndex()I
-HSPLjava/text/StringCharacterIterator;->getEndIndex()I
-HSPLjava/text/StringCharacterIterator;->getIndex()I
 HSPLjava/text/StringCharacterIterator;->next()C
-HSPLjava/text/StringCharacterIterator;->setIndex(I)C
-HSPLjava/time/-$$Lambda$Bq8PKq1YWr8nyVk9SSfRYKrOu4A;-><init>()V
-HSPLjava/time/-$$Lambda$Bq8PKq1YWr8nyVk9SSfRYKrOu4A;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
-HSPLjava/time/-$$Lambda$JBWLm7jbzHiLhHxYdB_IuO_vFO8;-><init>()V
-HSPLjava/time/-$$Lambda$JBWLm7jbzHiLhHxYdB_IuO_vFO8;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
-HSPLjava/time/-$$Lambda$PTL8WkLA4o-1z4zIUBjrvwi808w;-><init>()V
-HSPLjava/time/-$$Lambda$PTL8WkLA4o-1z4zIUBjrvwi808w;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
-HSPLjava/time/-$$Lambda$up1HpCqucM_DXyY-rpDOyCcdmIA;-><init>()V
-HSPLjava/time/-$$Lambda$up1HpCqucM_DXyY-rpDOyCcdmIA;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
+HSPLjava/time/Clock$SystemClock;-><init>(Ljava/time/ZoneId;)V
 HSPLjava/time/Clock$SystemClock;->getZone()Ljava/time/ZoneId;
 HSPLjava/time/Clock$SystemClock;->instant()Ljava/time/Instant;
 HSPLjava/time/Clock$SystemClock;->millis()J
-HSPLjava/time/Clock;->systemDefaultZone()Ljava/time/Clock;
+HSPLjava/time/Clock;-><init>()V
 HSPLjava/time/Clock;->systemUTC()Ljava/time/Clock;
-HSPLjava/time/DateTimeException;-><init>(Ljava/lang/String;)V
-HSPLjava/time/DayOfWeek;-><init>(Ljava/lang/String;I)V
+HSPLjava/time/DayOfWeek;->getValue()I
 HSPLjava/time/DayOfWeek;->of(I)Ljava/time/DayOfWeek;
-HSPLjava/time/DayOfWeek;->values()[Ljava/time/DayOfWeek;
-HSPLjava/time/Duration;-><init>(JI)V
-HSPLjava/time/Duration;->ofDays(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofHours(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofMillis(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofMinutes(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofNanos(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofSeconds(J)Ljava/time/Duration;
-HSPLjava/time/Duration;->ofSeconds(JJ)Ljava/time/Duration;
 HSPLjava/time/Duration;->toMillis()J
 HSPLjava/time/Instant;-><init>(JI)V
 HSPLjava/time/Instant;->create(JI)Ljava/time/Instant;
 HSPLjava/time/Instant;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/Instant;
-HSPLjava/time/Instant;->isSupported(Ljava/time/temporal/TemporalField;)Z
+HSPLjava/time/Instant;->getEpochSecond()J
+HSPLjava/time/Instant;->getNano()I
 HSPLjava/time/Instant;->now()Ljava/time/Instant;
 HSPLjava/time/Instant;->ofEpochMilli(J)Ljava/time/Instant;
 HSPLjava/time/Instant;->ofEpochSecond(JJ)Ljava/time/Instant;
-HSPLjava/time/Instant;->parse(Ljava/lang/CharSequence;)Ljava/time/Instant;
-HSPLjava/time/Instant;->plus(JJ)Ljava/time/Instant;
-HSPLjava/time/Instant;->plusMillis(J)Ljava/time/Instant;
 HSPLjava/time/Instant;->toEpochMilli()J
-HSPLjava/time/LocalDate;->atTime(Ljava/time/LocalTime;)Ljava/time/chrono/ChronoLocalDateTime;
-HSPLjava/time/LocalDate;->create(III)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/LocalDate;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDate;
+HSPLjava/time/Instant;->until(Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalUnit;)J
+HSPLjava/time/LocalDate;->get(Ljava/time/temporal/TemporalField;)I
 HSPLjava/time/LocalDate;->get0(Ljava/time/temporal/TemporalField;)I
-HSPLjava/time/LocalDate;->getChronology()Ljava/time/chrono/Chronology;
-HPLjava/time/LocalDate;->getLong(Ljava/time/temporal/TemporalField;)J
-HSPLjava/time/LocalDate;->isAfter(Ljava/time/chrono/ChronoLocalDate;)Z
-HSPLjava/time/LocalDate;->isSupported(Ljava/time/temporal/TemporalField;)Z
-HSPLjava/time/LocalDate;->minusDays(J)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->minusYears(J)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->now()Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->now(Ljava/time/Clock;)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->of(III)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->ofEpochDay(J)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDate;
+HSPLjava/time/LocalDate;->getDayOfMonth()I
+HSPLjava/time/LocalDate;->getDayOfWeek()Ljava/time/DayOfWeek;
+HSPLjava/time/LocalDate;->getYear()I
+HSPLjava/time/LocalDate;->isLeapYear()Z
+HSPLjava/time/LocalDate;->of(ILjava/time/Month;I)Ljava/time/LocalDate;
 HSPLjava/time/LocalDate;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->plusMonths(J)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/LocalDate;->resolvePreviousValid(III)Ljava/time/LocalDate;
+HSPLjava/time/LocalDate;->plusDays(J)Ljava/time/LocalDate;
 HSPLjava/time/LocalDate;->toEpochDay()J
 HSPLjava/time/LocalDate;->toString()Ljava/lang/String;
-HSPLjava/time/LocalDate;->withDayOfMonth(I)Ljava/time/LocalDate;
-HSPLjava/time/LocalDate;->withMonth(I)Ljava/time/LocalDate;
+HSPLjava/time/LocalDate;->with(Ljava/time/temporal/TemporalAdjuster;)Ljava/time/LocalDate;
 HSPLjava/time/LocalDateTime;-><init>(Ljava/time/LocalDate;Ljava/time/LocalTime;)V
-HSPLjava/time/LocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
-HSPLjava/time/LocalDateTime;->atZone(Ljava/time/ZoneId;)Ljava/time/chrono/ChronoZonedDateTime;
-HSPLjava/time/LocalDateTime;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/LocalDateTime;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalDateTime;
 HSPLjava/time/LocalDateTime;->getDayOfMonth()I
-HSPLjava/time/LocalDateTime;->getMonth()Ljava/time/Month;
+HSPLjava/time/LocalDateTime;->getHour()I
+HSPLjava/time/LocalDateTime;->getSecond()I
 HSPLjava/time/LocalDateTime;->getYear()I
-HSPLjava/time/LocalDateTime;->isAfter(Ljava/time/chrono/ChronoLocalDateTime;)Z
-HSPLjava/time/LocalDateTime;->isBefore(Ljava/time/chrono/ChronoLocalDateTime;)Z
-HSPLjava/time/LocalDateTime;->isSupported(Ljava/time/temporal/TemporalField;)Z
-HSPLjava/time/LocalDateTime;->minusDays(J)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->now()Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->now(Ljava/time/Clock;)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->of(IIIIIII)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->of(ILjava/time/Month;III)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->ofEpochSecond(JILjava/time/ZoneOffset;)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/LocalDateTime;
-HSPLjava/time/LocalDateTime;->plusDays(J)Ljava/time/LocalDateTime;
+HSPLjava/time/LocalDateTime;->plusSeconds(J)Ljava/time/LocalDateTime;
 HSPLjava/time/LocalDateTime;->plusWithOverflow(Ljava/time/LocalDate;JJJJI)Ljava/time/LocalDateTime;
+HSPLjava/time/LocalDateTime;->toLocalDate()Ljava/time/LocalDate;
 HSPLjava/time/LocalDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate;
 HSPLjava/time/LocalDateTime;->toLocalTime()Ljava/time/LocalTime;
 HSPLjava/time/LocalDateTime;->toString()Ljava/lang/String;
+HSPLjava/time/LocalDateTime;->with(Ljava/time/LocalDate;Ljava/time/LocalTime;)Ljava/time/LocalDateTime;
+HSPLjava/time/LocalTime$1;-><clinit>()V
 HSPLjava/time/LocalTime;-><init>(IIII)V
-HSPLjava/time/LocalTime;->compareTo(Ljava/time/LocalTime;)I
-HSPLjava/time/LocalTime;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/LocalTime;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/LocalTime;
-HSPLjava/time/LocalTime;->get0(Ljava/time/temporal/TemporalField;)I
-HSPLjava/time/LocalTime;->getLong(Ljava/time/temporal/TemporalField;)J
-HSPLjava/time/LocalTime;->isSupported(Ljava/time/temporal/TemporalField;)Z
-HSPLjava/time/LocalTime;->of(IIII)Ljava/time/LocalTime;
+HSPLjava/time/LocalTime;->create(IIII)Ljava/time/LocalTime;
+HSPLjava/time/LocalTime;->getHour()I
+HSPLjava/time/LocalTime;->getMinute()I
+HSPLjava/time/LocalTime;->getNano()I
+HSPLjava/time/LocalTime;->getSecond()I
 HSPLjava/time/LocalTime;->ofNanoOfDay(J)Ljava/time/LocalTime;
-HSPLjava/time/LocalTime;->ofSecondOfDay(J)Ljava/time/LocalTime;
+HSPLjava/time/LocalTime;->toNanoOfDay()J
+HSPLjava/time/LocalTime;->toSecondOfDay()I
 HSPLjava/time/LocalTime;->toString()Ljava/lang/String;
-HSPLjava/time/LocalTime;->truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/LocalTime;
-HSPLjava/time/Month;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/Month;->length(Z)I
-HSPLjava/time/Month;->of(I)Ljava/time/Month;
-HSPLjava/time/Month;->values()[Ljava/time/Month;
-HSPLjava/time/Period;-><init>(III)V
-HSPLjava/time/Period;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/Period;->multipliedBy(I)Ljava/time/Period;
-HSPLjava/time/Period;->ofMonths(I)Ljava/time/Period;
-HSPLjava/time/Period;->parse(Ljava/lang/CharSequence;)Ljava/time/Period;
-HSPLjava/time/Period;->parseNumber(Ljava/lang/CharSequence;Ljava/lang/String;I)I
-HSPLjava/time/Period;->toString()Ljava/lang/String;
-HSPLjava/time/ZoneId;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/ZoneId;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZoneId;
+HSPLjava/time/Month;->getValue()I
+HSPLjava/time/ZoneId;-><init>()V
+HSPLjava/time/ZoneId;->of(Ljava/lang/String;)Ljava/time/ZoneId;
 HSPLjava/time/ZoneId;->of(Ljava/lang/String;Ljava/util/Map;)Ljava/time/ZoneId;
 HSPLjava/time/ZoneId;->of(Ljava/lang/String;Z)Ljava/time/ZoneId;
 HSPLjava/time/ZoneId;->systemDefault()Ljava/time/ZoneId;
-HSPLjava/time/ZoneId;->toString()Ljava/lang/String;
+HSPLjava/time/ZoneOffset;-><init>(I)V
 HSPLjava/time/ZoneOffset;->buildId(I)Ljava/lang/String;
-HSPLjava/time/ZoneOffset;->equals(Ljava/lang/Object;)Z
+HSPLjava/time/ZoneOffset;->getId()Ljava/lang/String;
+HSPLjava/time/ZoneOffset;->getTotalSeconds()I
 HSPLjava/time/ZoneOffset;->ofTotalSeconds(I)Ljava/time/ZoneOffset;
+HSPLjava/time/ZoneRegion;-><init>(Ljava/lang/String;Ljava/time/zone/ZoneRules;)V
 HSPLjava/time/ZoneRegion;->checkName(Ljava/lang/String;)V
 HSPLjava/time/ZoneRegion;->getId()Ljava/lang/String;
 HSPLjava/time/ZoneRegion;->getRules()Ljava/time/zone/ZoneRules;
 HSPLjava/time/ZoneRegion;->ofId(Ljava/lang/String;Z)Ljava/time/ZoneRegion;
+HSPLjava/time/ZonedDateTime;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneId;)V
 HSPLjava/time/ZonedDateTime;->create(JILjava/time/ZoneId;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->equals(Ljava/lang/Object;)Z
-HPLjava/time/ZonedDateTime;->format(Ljava/time/format/DateTimeFormatter;)Ljava/lang/String;
-HSPLjava/time/ZonedDateTime;->from(Ljava/time/temporal/TemporalAccessor;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->getDayOfMonth()I
-HSPLjava/time/ZonedDateTime;->getLong(Ljava/time/temporal/TemporalField;)J
-HSPLjava/time/ZonedDateTime;->getOffset()Ljava/time/ZoneOffset;
-HSPLjava/time/ZonedDateTime;->getZone()Ljava/time/ZoneId;
-HSPLjava/time/ZonedDateTime;->now(Ljava/time/Clock;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->of(Ljava/time/LocalDate;Ljava/time/LocalTime;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
 HSPLjava/time/ZonedDateTime;->ofInstant(Ljava/time/Instant;Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->ofLocal(Ljava/time/LocalDateTime;Ljava/time/ZoneId;Ljava/time/ZoneOffset;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;)Ljava/time/ZonedDateTime;
-HPLjava/time/ZonedDateTime;->parse(Ljava/lang/CharSequence;Ljava/time/format/DateTimeFormatter;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->plus(Ljava/time/temporal/TemporalAmount;)Ljava/time/ZonedDateTime;
-HPLjava/time/ZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/LocalDate;
-HSPLjava/time/ZonedDateTime;->toLocalDate()Ljava/time/chrono/ChronoLocalDate;
-HSPLjava/time/ZonedDateTime;->toLocalTime()Ljava/time/LocalTime;
-HSPLjava/time/ZonedDateTime;->toString()Ljava/lang/String;
-HSPLjava/time/ZonedDateTime;->truncatedTo(Ljava/time/temporal/TemporalUnit;)Ljava/time/ZonedDateTime;
-HSPLjava/time/ZonedDateTime;->withZoneSameInstant(Ljava/time/ZoneId;)Ljava/time/ZonedDateTime;
-HSPLjava/time/chrono/-$$Lambda$AbstractChronology$5b0W7uLeaWkn0HLPDKwPXzJ7HPo;-><init>()V
-HSPLjava/time/chrono/-$$Lambda$AbstractChronology$j22w8kHhJoqCd56hhLQK1G0VLFw;-><init>()V
-HSPLjava/time/chrono/-$$Lambda$AbstractChronology$onW9aZyLFliH5Gg1qLodD_GoPfA;-><init>()V
-HSPLjava/time/chrono/AbstractChronology;->equals(Ljava/lang/Object;)Z
-HSPLjava/time/chrono/AbstractChronology;->resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
 HSPLjava/time/chrono/ChronoLocalDateTime;->toEpochSecond(Ljava/time/ZoneOffset;)J
-HSPLjava/time/chrono/ChronoZonedDateTime;->compareTo(Ljava/lang/Object;)I
-HSPLjava/time/chrono/ChronoZonedDateTime;->compareTo(Ljava/time/chrono/ChronoZonedDateTime;)I
-HPLjava/time/chrono/ChronoZonedDateTime;->getChronology()Ljava/time/chrono/Chronology;
-HPLjava/time/chrono/ChronoZonedDateTime;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/chrono/ChronoZonedDateTime;->toEpochSecond()J
-HSPLjava/time/chrono/ChronoZonedDateTime;->toInstant()Ljava/time/Instant;
-HSPLjava/time/chrono/IsoChronology;-><init>()V
-HSPLjava/time/chrono/IsoChronology;->resolveDate(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-HSPLjava/time/chrono/IsoChronology;->resolveProlepticMonth(Ljava/util/Map;Ljava/time/format/ResolverStyle;)V
-HSPLjava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-HSPLjava/time/chrono/IsoChronology;->resolveYMD(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-HSPLjava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/LocalDate;
-HSPLjava/time/chrono/IsoChronology;->resolveYearOfEra(Ljava/util/Map;Ljava/time/format/ResolverStyle;)Ljava/time/chrono/ChronoLocalDate;
-HSPLjava/time/format/-$$Lambda$DateTimeFormatter$GhpE1dbCMFpBqvhZZgrqVYpzk8E;-><init>()V
-HSPLjava/time/format/-$$Lambda$DateTimeFormatter$QqeEAMXK7Qf5gsmaSCLmrVwQ1Ns;-><init>()V
-HSPLjava/time/format/-$$Lambda$DateTimeFormatterBuilder$M-GACNxm6552EiylPRPw4dyNXKo;-><init>()V
-HPLjava/time/format/-$$Lambda$DateTimeFormatterBuilder$M-GACNxm6552EiylPRPw4dyNXKo;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
+HSPLjava/time/chrono/IsoChronology;->isLeapYear(J)Z
 HSPLjava/time/format/DateTimeFormatter;-><init>(Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;Ljava/util/Locale;Ljava/time/format/DecimalStyle;Ljava/time/format/ResolverStyle;Ljava/util/Set;Ljava/time/chrono/Chronology;Ljava/time/ZoneId;)V
+HSPLjava/time/format/DateTimeFormatter;->format(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/String;
 HSPLjava/time/format/DateTimeFormatter;->formatTo(Ljava/time/temporal/TemporalAccessor;Ljava/lang/Appendable;)V
-HSPLjava/time/format/DateTimeFormatter;->ofPattern(Ljava/lang/String;)Ljava/time/format/DateTimeFormatter;
-HSPLjava/time/format/DateTimeFormatter;->parse(Ljava/lang/CharSequence;Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/format/DateTimeFormatter;->parseResolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/temporal/TemporalAccessor;
-HSPLjava/time/format/DateTimeFormatter;->parseUnresolved0(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/time/format/DateTimeParseContext;
-HSPLjava/time/format/DateTimeFormatter;->toPrinterParser(Z)Ljava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;
-HSPLjava/time/format/DateTimeFormatterBuilder$2;-><init>()V
-HPLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
+HSPLjava/time/format/DateTimeFormatter;->getDecimalStyle()Ljava/time/format/DecimalStyle;
+HSPLjava/time/format/DateTimeFormatterBuilder$CharLiteralPrinterParser;-><init>(C)V
+HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>(Ljava/util/List;Z)V
+HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;-><init>([Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;Z)V
 HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$CompositePrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IIZ)V
-HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertFromFraction(Ljava/math/BigDecimal;)J
-HPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->convertToFraction(J)Ljava/math/BigDecimal;
-HPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$FractionPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HSPLjava/time/format/DateTimeFormatterBuilder$InstantPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->getValue(Ljava/time/format/DateTimePrintContext;J)J
-HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->setValue(Ljava/time/format/DateTimeParseContext;JII)I
-HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withFixedWidth()Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;->withSubsequentWidth(I)Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;
-HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;-><init>(Ljava/lang/String;Ljava/lang/String;)V
-HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->checkPattern(Ljava/lang/String;)I
-HPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HSPLjava/time/format/DateTimeFormatterBuilder$OffsetIdPrinterParser;->parseNumber([IILjava/lang/CharSequence;Z)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->add0(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->isEqual(CC)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->match(Ljava/lang/CharSequence;Ljava/text/ParsePosition;)Ljava/lang/String;
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->newNode(Ljava/lang/String;Ljava/lang/String;Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixLength(Ljava/lang/String;)I
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->prefixOf(Ljava/lang/CharSequence;II)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$PrefixTree;->toKey(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$SettingsParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->format(Ljava/time/format/DateTimePrintContext;Ljava/lang/StringBuilder;)Z
-HSPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->getTree(Ljava/time/format/DateTimeParseContext;)Ljava/time/format/DateTimeFormatterBuilder$PrefixTree;
-HSPLjava/time/format/DateTimeFormatterBuilder$ZoneIdPrinterParser;->parse(Ljava/time/format/DateTimeParseContext;Ljava/lang/CharSequence;I)I
-HSPLjava/time/format/DateTimeFormatterBuilder;-><init>()V
-HSPLjava/time/format/DateTimeFormatterBuilder;->append(Ljava/time/format/DateTimeFormatter;)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendFraction(Ljava/time/temporal/TemporalField;IIZ)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendInstant()Ljava/time/format/DateTimeFormatterBuilder;
+HSPLjava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;-><init>(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)V
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendInternal(Ljava/time/format/DateTimeFormatterBuilder$DateTimePrinterParser;)I
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendLiteral(C)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendLiteral(Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendOffset(Ljava/lang/String;Ljava/lang/String;)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendOffsetId()Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendText(Ljava/time/temporal/TemporalField;Ljava/util/Map;)Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/format/DateTimeFormatterBuilder$NumberPrinterParser;)Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/temporal/TemporalField;I)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendValue(Ljava/time/temporal/TemporalField;IILjava/time/format/SignStyle;)Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->appendZoneRegionId()Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->optionalEnd()Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->optionalStart()Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->parseCaseInsensitive()Ljava/time/format/DateTimeFormatterBuilder;
-HSPLjava/time/format/DateTimeFormatterBuilder;->parseCaseSensitive()Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->parseField(CILjava/time/temporal/TemporalField;)V
-HSPLjava/time/format/DateTimeFormatterBuilder;->parseLenient()Ljava/time/format/DateTimeFormatterBuilder;
 HSPLjava/time/format/DateTimeFormatterBuilder;->parsePattern(Ljava/lang/String;)V
-HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter()Ljava/time/format/DateTimeFormatter;
-HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
 HSPLjava/time/format/DateTimeFormatterBuilder;->toFormatter(Ljava/util/Locale;Ljava/time/format/ResolverStyle;Ljava/time/chrono/Chronology;)Ljava/time/format/DateTimeFormatter;
-HSPLjava/time/format/DateTimeParseContext;->copy()Ljava/time/format/DateTimeParseContext;
-HSPLjava/time/format/DateTimeParseContext;->getParsed(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-HSPLjava/time/format/DateTimeParseContext;->setParsedField(Ljava/time/temporal/TemporalField;JII)I
-HSPLjava/time/format/DateTimeParseContext;->subSequenceEquals(Ljava/lang/CharSequence;ILjava/lang/CharSequence;II)Z
-HSPLjava/time/format/DateTimePrintContext;->adjust(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)Ljava/time/temporal/TemporalAccessor;
-HSPLjava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalField;)Ljava/lang/Long;
-PLjava/time/format/DateTimePrintContext;->getValue(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/format/DateTimeTextProvider$1;-><init>()V
-HSPLjava/time/format/DateTimeTextProvider$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLjava/time/format/DateTimeTextProvider$1;->compare(Ljava/util/Map$Entry;Ljava/util/Map$Entry;)I
-HSPLjava/time/format/DateTimeTextProvider$LocaleStore;-><init>(Ljava/util/Map;)V
-HSPLjava/time/format/DecimalStyle;-><init>(CCCC)V
-HSPLjava/time/format/Parsed;->crossCheck()V
-HSPLjava/time/format/Parsed;->crossCheck(Ljava/time/temporal/TemporalAccessor;)V
-HSPLjava/time/format/Parsed;->getLong(Ljava/time/temporal/TemporalField;)J
-HSPLjava/time/format/Parsed;->isSupported(Ljava/time/temporal/TemporalField;)Z
-HSPLjava/time/format/Parsed;->query(Ljava/time/temporal/TemporalQuery;)Ljava/lang/Object;
-HSPLjava/time/format/Parsed;->resolveFields()V
-HSPLjava/time/format/Parsed;->resolveFractional()V
-HSPLjava/time/format/Parsed;->resolveInstant()V
-HSPLjava/time/format/Parsed;->resolveInstantFields()V
-HSPLjava/time/format/Parsed;->resolveTime(JJJJ)V
-HSPLjava/time/format/Parsed;->resolveTimeFields()V
-HSPLjava/time/format/Parsed;->resolveTimeLenient()V
-HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/LocalTime;Ljava/time/Period;)V
-HSPLjava/time/format/Parsed;->updateCheckConflict(Ljava/time/chrono/ChronoLocalDate;)V
-HSPLjava/time/format/ResolverStyle;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/format/SignStyle;-><init>(Ljava/lang/String;I)V
-HPLjava/time/format/SignStyle;->values()[Ljava/time/format/SignStyle;
-HSPLjava/time/format/TextStyle;-><init>(Ljava/lang/String;III)V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$IZUinmsZUz98YXPe0ftAd27ByiE;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$JPrXwgedeqexYxypO8VpPKV4l3c;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$PBpYKRiwkxqQNlcU-BOJfaQoONg;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$PBpYKRiwkxqQNlcU-BOJfaQoONg;->queryFrom(Ljava/time/temporal/TemporalAccessor;)Ljava/lang/Object;
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$WGGw7SkRcanjtxRiTk5p0dKf_jc;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$bI5NESEXE4DqyC7TnOvbkx1GlvM;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$okxqZ6ZoOhHd_zSzW7k5qRIaLxM;-><init>()V
-HSPLjava/time/temporal/-$$Lambda$TemporalQueries$thd4JmExRUYKd7nNlE7b5oT19ms;-><init>()V
-HSPLjava/time/temporal/ChronoField;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;)V
-HSPLjava/time/temporal/ChronoField;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/TemporalUnit;Ljava/time/temporal/ValueRange;Ljava/lang/String;)V
+HSPLjava/time/format/DateTimePrintContext;-><init>(Ljava/time/temporal/TemporalAccessor;Ljava/time/format/DateTimeFormatter;)V
+HSPLjava/time/temporal/-$$Lambda$TemporalAdjusters$A9OZwfMlHD1vy7-nYt5NssACu7Q;-><init>(I)V
+HSPLjava/time/temporal/-$$Lambda$TemporalAdjusters$A9OZwfMlHD1vy7-nYt5NssACu7Q;->adjustInto(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;
+HSPLjava/time/temporal/ChronoField;->checkValidIntValue(J)I
 HSPLjava/time/temporal/ChronoField;->checkValidValue(J)J
+HSPLjava/time/temporal/ChronoField;->isTimeBased()Z
 HSPLjava/time/temporal/ChronoField;->range()Ljava/time/temporal/ValueRange;
-HSPLjava/time/temporal/ChronoField;->values()[Ljava/time/temporal/ChronoField;
-HSPLjava/time/temporal/ChronoUnit;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/time/Duration;)V
-HSPLjava/time/temporal/ChronoUnit;->getDuration()Ljava/time/Duration;
-HSPLjava/time/temporal/ChronoUnit;->values()[Ljava/time/temporal/ChronoUnit;
-HSPLjava/time/temporal/IsoFields$Field$1;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/temporal/IsoFields$Field$2;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/temporal/IsoFields$Field$3;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/temporal/IsoFields$Field$4;-><init>(Ljava/lang/String;I)V
-HSPLjava/time/temporal/IsoFields$Unit;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/time/Duration;)V
-HSPLjava/time/temporal/TemporalAccessor;->get(Ljava/time/temporal/TemporalField;)I
-HSPLjava/time/temporal/TemporalAccessor;->range(Ljava/time/temporal/TemporalField;)Ljava/time/temporal/ValueRange;
-HSPLjava/time/temporal/TemporalField;->resolve(Ljava/util/Map;Ljava/time/temporal/TemporalAccessor;Ljava/time/format/ResolverStyle;)Ljava/time/temporal/TemporalAccessor;
+HSPLjava/time/temporal/TemporalAdjusters;->lambda$nextOrSame$10(ILjava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;
+HSPLjava/time/temporal/TemporalAdjusters;->nextOrSame(Ljava/time/DayOfWeek;)Ljava/time/temporal/TemporalAdjuster;
+HSPLjava/time/temporal/TemporalQueries;->chronology()Ljava/time/temporal/TemporalQuery;
+HSPLjava/time/temporal/TemporalQueries;->localTime()Ljava/time/temporal/TemporalQuery;
+HSPLjava/time/temporal/TemporalQueries;->offset()Ljava/time/temporal/TemporalQuery;
+HSPLjava/time/temporal/TemporalQueries;->zone()Ljava/time/temporal/TemporalQuery;
+HSPLjava/time/temporal/TemporalQueries;->zoneId()Ljava/time/temporal/TemporalQuery;
+HSPLjava/time/temporal/ValueRange;->checkValidIntValue(JLjava/time/temporal/TemporalField;)I
 HSPLjava/time/temporal/ValueRange;->checkValidValue(JLjava/time/temporal/TemporalField;)J
+HSPLjava/time/temporal/ValueRange;->getMaximum()J
+HSPLjava/time/temporal/ValueRange;->getMinimum()J
+HSPLjava/time/temporal/ValueRange;->isIntValue()Z
 HSPLjava/time/temporal/ValueRange;->isValidIntValue(J)Z
 HSPLjava/time/temporal/ValueRange;->isValidValue(J)Z
-HSPLjava/time/temporal/ValueRange;->of(JJ)Ljava/time/temporal/ValueRange;
-HSPLjava/time/temporal/ValueRange;->of(JJJ)Ljava/time/temporal/ValueRange;
-HSPLjava/time/temporal/ValueRange;->of(JJJJ)Ljava/time/temporal/ValueRange;
 HSPLjava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/time/zone/IcuZoneRulesProvider$ZoneRulesCache;->create(Ljava/lang/String;)Ljava/time/zone/ZoneRules;
-HSPLjava/time/zone/IcuZoneRulesProvider;-><init>()V
-HSPLjava/time/zone/IcuZoneRulesProvider;->generateZoneRules(Ljava/lang/String;)Ljava/time/zone/ZoneRules;
 HSPLjava/time/zone/IcuZoneRulesProvider;->provideRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules;
-HSPLjava/time/zone/IcuZoneRulesProvider;->provideZoneIds()Ljava/util/Set;
-HSPLjava/time/zone/IcuZoneRulesProvider;->toZoneOffsetTransitionRule(Landroid/icu/util/AnnualTimeZoneRule;I)Ljava/time/zone/ZoneOffsetTransitionRule;
-HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;-><init>(Ljava/lang/String;I)V
+HSPLjava/time/zone/ZoneOffsetTransition;-><init>(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
+HSPLjava/time/zone/ZoneOffsetTransition;->getDateTimeAfter()Ljava/time/LocalDateTime;
+HSPLjava/time/zone/ZoneOffsetTransition;->getDateTimeBefore()Ljava/time/LocalDateTime;
+HSPLjava/time/zone/ZoneOffsetTransition;->getDurationSeconds()I
+HSPLjava/time/zone/ZoneOffsetTransition;->getOffsetAfter()Ljava/time/ZoneOffset;
+HSPLjava/time/zone/ZoneOffsetTransition;->getOffsetBefore()Ljava/time/ZoneOffset;
+HSPLjava/time/zone/ZoneOffsetTransition;->isGap()Z
+HSPLjava/time/zone/ZoneOffsetTransition;->toEpochSecond()J
 HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->createDateTime(Ljava/time/LocalDateTime;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/LocalDateTime;
-HSPLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;->values()[Ljava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;
+HSPLjava/time/zone/ZoneOffsetTransitionRule;-><init>(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)V
 HSPLjava/time/zone/ZoneOffsetTransitionRule;->createTransition(I)Ljava/time/zone/ZoneOffsetTransition;
 HSPLjava/time/zone/ZoneOffsetTransitionRule;->of(Ljava/time/Month;ILjava/time/DayOfWeek;Ljava/time/LocalTime;ZLjava/time/zone/ZoneOffsetTransitionRule$TimeDefinition;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;)Ljava/time/zone/ZoneOffsetTransitionRule;
 HSPLjava/time/zone/ZoneRules;-><init>(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)V
-HSPLjava/time/zone/ZoneRules;->findOffsetInfo(Ljava/time/LocalDateTime;Ljava/time/zone/ZoneOffsetTransition;)Ljava/lang/Object;
 HSPLjava/time/zone/ZoneRules;->findTransitionArray(I)[Ljava/time/zone/ZoneOffsetTransition;
+HSPLjava/time/zone/ZoneRules;->findYear(JLjava/time/ZoneOffset;)I
 HSPLjava/time/zone/ZoneRules;->getOffset(Ljava/time/Instant;)Ljava/time/ZoneOffset;
-HSPLjava/time/zone/ZoneRules;->getOffsetInfo(Ljava/time/LocalDateTime;)Ljava/lang/Object;
 HSPLjava/time/zone/ZoneRules;->of(Ljava/time/ZoneOffset;Ljava/time/ZoneOffset;Ljava/util/List;Ljava/util/List;Ljava/util/List;)Ljava/time/zone/ZoneRules;
-HSPLjava/time/zone/ZoneRulesProvider;->getProvider(Ljava/lang/String;)Ljava/time/zone/ZoneRulesProvider;
-HSPLjava/time/zone/ZoneRulesProvider;->getRules(Ljava/lang/String;Z)Ljava/time/zone/ZoneRules;
-HSPLjava/time/zone/ZoneRulesProvider;->registerProvider(Ljava/time/zone/ZoneRulesProvider;)V
-HSPLjava/time/zone/ZoneRulesProvider;->registerProvider0(Ljava/time/zone/ZoneRulesProvider;)V
-HSPLjava/util/-$$Lambda$Comparator$4V5k8aLimtS0VsEILEAqQ9UGZYo;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLjava/util/-$$Lambda$Comparator$BZSVCoA8i87ehjxxZ1weEounfDQ;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLjava/util/-$$Lambda$Comparator$DNgpxUFZqmT4lOBzlVyPjWwvEvw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLjava/util/-$$Lambda$Comparator$SPB8K9Yj7Pw1mljm7LpasV7zxWw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLjava/util/-$$Lambda$Comparator$DNgpxUFZqmT4lOBzlVyPjWwvEvw;-><init>(Ljava/util/function/ToIntFunction;)V
 HSPLjava/util/AbstractCollection;-><init>()V
 HSPLjava/util/AbstractCollection;->addAll(Ljava/util/Collection;)Z
-HSPLjava/util/AbstractCollection;->clear()V
 HSPLjava/util/AbstractCollection;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/AbstractCollection;->containsAll(Ljava/util/Collection;)Z
 HSPLjava/util/AbstractCollection;->isEmpty()Z
@@ -28294,9 +18626,14 @@
 HSPLjava/util/AbstractCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/AbstractCollection;->toString()Ljava/lang/String;
 HSPLjava/util/AbstractList$Itr;-><init>(Ljava/util/AbstractList;)V
+HSPLjava/util/AbstractList$Itr;-><init>(Ljava/util/AbstractList;Ljava/util/AbstractList$1;)V
+HSPLjava/util/AbstractList$Itr;->checkForComodification()V
 HSPLjava/util/AbstractList$Itr;->hasNext()Z
 HSPLjava/util/AbstractList$Itr;->next()Ljava/lang/Object;
+HSPLjava/util/AbstractList$ListItr;-><init>(Ljava/util/AbstractList;I)V
 HSPLjava/util/AbstractList$ListItr;->nextIndex()I
+HSPLjava/util/AbstractList$SubList;-><init>(Ljava/util/AbstractList;II)V
+HSPLjava/util/AbstractList$SubList;->checkForComodification()V
 HSPLjava/util/AbstractList;-><init>()V
 HSPLjava/util/AbstractList;->add(Ljava/lang/Object;)Z
 HSPLjava/util/AbstractList;->clear()V
@@ -28305,13 +18642,17 @@
 HSPLjava/util/AbstractList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/AbstractList;->listIterator()Ljava/util/ListIterator;
 HSPLjava/util/AbstractList;->listIterator(I)Ljava/util/ListIterator;
+HSPLjava/util/AbstractList;->rangeCheckForAdd(I)V
 HSPLjava/util/AbstractList;->subList(II)Ljava/util/List;
+HSPLjava/util/AbstractList;->subListRangeCheck(III)V
 HSPLjava/util/AbstractMap$SimpleImmutableEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLjava/util/AbstractMap$SimpleImmutableEntry;-><init>(Ljava/util/Map$Entry;)V
 HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/AbstractMap$SimpleImmutableEntry;->getValue()Ljava/lang/Object;
 HSPLjava/util/AbstractMap$SimpleImmutableEntry;->hashCode()I
 HSPLjava/util/AbstractMap;-><init>()V
 HSPLjava/util/AbstractMap;->clear()V
+HSPLjava/util/AbstractMap;->clone()Ljava/lang/Object;
 HSPLjava/util/AbstractMap;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/AbstractMap;->hashCode()I
 HSPLjava/util/AbstractMap;->isEmpty()Z
@@ -28319,16 +18660,22 @@
 HSPLjava/util/AbstractMap;->toString()Ljava/lang/String;
 HSPLjava/util/AbstractQueue;-><init>()V
 HSPLjava/util/AbstractQueue;->add(Ljava/lang/Object;)Z
-HSPLjava/util/AbstractQueue;->addAll(Ljava/util/Collection;)Z
 HSPLjava/util/AbstractQueue;->clear()V
 HSPLjava/util/AbstractQueue;->remove()Ljava/lang/Object;
+HSPLjava/util/AbstractSequentialList;-><init>()V
 HSPLjava/util/AbstractSequentialList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/AbstractSet;-><init>()V
 HSPLjava/util/AbstractSet;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/AbstractSet;->hashCode()I
 HSPLjava/util/AbstractSet;->removeAll(Ljava/util/Collection;)Z
+HSPLjava/util/ArrayDeque$DeqIterator;-><init>(Ljava/util/ArrayDeque;)V
+HSPLjava/util/ArrayDeque$DeqIterator;-><init>(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$1;)V
 HSPLjava/util/ArrayDeque$DeqIterator;->hasNext()Z
 HSPLjava/util/ArrayDeque$DeqIterator;->next()Ljava/lang/Object;
+HSPLjava/util/ArrayDeque$DeqIterator;->remove()V
+HSPLjava/util/ArrayDeque$DescendingIterator;-><init>(Ljava/util/ArrayDeque;)V
+HSPLjava/util/ArrayDeque$DescendingIterator;-><init>(Ljava/util/ArrayDeque;Ljava/util/ArrayDeque$1;)V
+HSPLjava/util/ArrayDeque$DescendingIterator;->hasNext()Z
 HSPLjava/util/ArrayDeque;-><init>()V
 HSPLjava/util/ArrayDeque;-><init>(I)V
 HSPLjava/util/ArrayDeque;-><init>(Ljava/util/Collection;)V
@@ -28336,13 +18683,13 @@
 HSPLjava/util/ArrayDeque;->addFirst(Ljava/lang/Object;)V
 HSPLjava/util/ArrayDeque;->addLast(Ljava/lang/Object;)V
 HSPLjava/util/ArrayDeque;->allocateElements(I)V
+HSPLjava/util/ArrayDeque;->checkInvariants()V
 HSPLjava/util/ArrayDeque;->clear()V
 HSPLjava/util/ArrayDeque;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/ArrayDeque;->delete(I)Z
 HSPLjava/util/ArrayDeque;->descendingIterator()Ljava/util/Iterator;
 HSPLjava/util/ArrayDeque;->doubleCapacity()V
 HSPLjava/util/ArrayDeque;->getFirst()Ljava/lang/Object;
-HSPLjava/util/ArrayDeque;->getLast()Ljava/lang/Object;
 HSPLjava/util/ArrayDeque;->isEmpty()Z
 HSPLjava/util/ArrayDeque;->iterator()Ljava/util/Iterator;
 HSPLjava/util/ArrayDeque;->offer(Ljava/lang/Object;)Z
@@ -28362,17 +18709,24 @@
 HSPLjava/util/ArrayDeque;->removeLast()Ljava/lang/Object;
 HSPLjava/util/ArrayDeque;->size()I
 HSPLjava/util/ArrayDeque;->toArray()[Ljava/lang/Object;
-HPLjava/util/ArrayDeque;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/ArrayList$ArrayListSpliterator;-><init>(Ljava/util/ArrayList;III)V
 HSPLjava/util/ArrayList$ArrayListSpliterator;->characteristics()I
 HSPLjava/util/ArrayList$ArrayListSpliterator;->estimateSize()J
 HSPLjava/util/ArrayList$ArrayListSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
+HSPLjava/util/ArrayList$ArrayListSpliterator;->getFence()I
 HSPLjava/util/ArrayList$ArrayListSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
+HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;)V
 HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList$1;)V
 HSPLjava/util/ArrayList$Itr;->hasNext()Z
 HSPLjava/util/ArrayList$Itr;->next()Ljava/lang/Object;
 HSPLjava/util/ArrayList$Itr;->remove()V
+HSPLjava/util/ArrayList$ListItr;-><init>(Ljava/util/ArrayList;I)V
+HSPLjava/util/ArrayList$ListItr;->hasPrevious()Z
+HSPLjava/util/ArrayList$ListItr;->previous()Ljava/lang/Object;
+HSPLjava/util/ArrayList$SubList$1;-><init>(Ljava/util/ArrayList$SubList;II)V
 HSPLjava/util/ArrayList$SubList$1;->hasNext()Z
 HSPLjava/util/ArrayList$SubList$1;->next()Ljava/lang/Object;
+HSPLjava/util/ArrayList$SubList;-><init>(Ljava/util/ArrayList;Ljava/util/AbstractList;III)V
 HSPLjava/util/ArrayList$SubList;->get(I)Ljava/lang/Object;
 HSPLjava/util/ArrayList$SubList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/ArrayList$SubList;->listIterator(I)Ljava/util/ListIterator;
@@ -28393,15 +18747,16 @@
 HSPLjava/util/ArrayList;->ensureCapacity(I)V
 HSPLjava/util/ArrayList;->ensureCapacityInternal(I)V
 HSPLjava/util/ArrayList;->ensureExplicitCapacity(I)V
+HSPLjava/util/ArrayList;->fastRemove(I)V
 HSPLjava/util/ArrayList;->forEach(Ljava/util/function/Consumer;)V
 HSPLjava/util/ArrayList;->get(I)Ljava/lang/Object;
 HSPLjava/util/ArrayList;->grow(I)V
 HSPLjava/util/ArrayList;->indexOf(Ljava/lang/Object;)I
 HSPLjava/util/ArrayList;->isEmpty()Z
 HSPLjava/util/ArrayList;->iterator()Ljava/util/Iterator;
-HSPLjava/util/ArrayList;->lastIndexOf(Ljava/lang/Object;)I
 HSPLjava/util/ArrayList;->listIterator()Ljava/util/ListIterator;
 HSPLjava/util/ArrayList;->listIterator(I)Ljava/util/ListIterator;
+HSPLjava/util/ArrayList;->readObject(Ljava/io/ObjectInputStream;)V
 HSPLjava/util/ArrayList;->remove(I)Ljava/lang/Object;
 HSPLjava/util/ArrayList;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/ArrayList;->removeAll(Ljava/util/Collection;)Z
@@ -28416,129 +18771,125 @@
 HSPLjava/util/ArrayList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/ArrayList;->trimToSize()V
+HSPLjava/util/ArrayList;->writeObject(Ljava/io/ObjectOutputStream;)V
+HSPLjava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
 HSPLjava/util/Arrays$ArrayList;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/Arrays$ArrayList;->get(I)Ljava/lang/Object;
 HSPLjava/util/Arrays$ArrayList;->indexOf(Ljava/lang/Object;)I
 HSPLjava/util/Arrays$ArrayList;->size()I
-HSPLjava/util/Arrays$ArrayList;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Arrays$ArrayList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Arrays$ArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/Arrays;->asList([Ljava/lang/Object;)Ljava/util/List;
+HSPLjava/util/Arrays;->binarySearch([CC)I
 HSPLjava/util/Arrays;->binarySearch([II)I
 HSPLjava/util/Arrays;->binarySearch([IIII)I
-HSPLjava/util/Arrays;->binarySearch([JIIJ)I
 HSPLjava/util/Arrays;->binarySearch([JJ)I
 HSPLjava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/util/Arrays;->binarySearch([Ljava/lang/Object;Ljava/lang/Object;Ljava/util/Comparator;)I
+HSPLjava/util/Arrays;->binarySearch0([CIIC)I
+HSPLjava/util/Arrays;->binarySearch0([IIII)I
+HSPLjava/util/Arrays;->binarySearch0([JIIJ)I
+HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;)I
 HSPLjava/util/Arrays;->binarySearch0([Ljava/lang/Object;IILjava/lang/Object;Ljava/util/Comparator;)I
 HSPLjava/util/Arrays;->copyOf([BI)[B
 HSPLjava/util/Arrays;->copyOf([CI)[C
+HSPLjava/util/Arrays;->copyOf([DI)[D
 HSPLjava/util/Arrays;->copyOf([FI)[F
 HSPLjava/util/Arrays;->copyOf([II)[I
 HSPLjava/util/Arrays;->copyOf([JI)[J
 HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;I)[Ljava/lang/Object;
 HSPLjava/util/Arrays;->copyOf([Ljava/lang/Object;ILjava/lang/Class;)[Ljava/lang/Object;
-HSPLjava/util/Arrays;->copyOf([ZI)[Z
 HSPLjava/util/Arrays;->copyOfRange([BII)[B
 HSPLjava/util/Arrays;->copyOfRange([CII)[C
-HSPLjava/util/Arrays;->copyOfRange([III)[I
-HSPLjava/util/Arrays;->copyOfRange([JII)[J
 HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;II)[Ljava/lang/Object;
 HSPLjava/util/Arrays;->copyOfRange([Ljava/lang/Object;IILjava/lang/Class;)[Ljava/lang/Object;
-HSPLjava/util/Arrays;->deepEquals([Ljava/lang/Object;[Ljava/lang/Object;)Z
-HSPLjava/util/Arrays;->deepEquals0(Ljava/lang/Object;Ljava/lang/Object;)Z
-HSPLjava/util/Arrays;->deepHashCode([Ljava/lang/Object;)I
+HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String;
+HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V
 HSPLjava/util/Arrays;->equals([B[B)Z
-HSPLjava/util/Arrays;->equals([F[F)Z
 HSPLjava/util/Arrays;->equals([I[I)Z
-HSPLjava/util/Arrays;->equals([J[J)Z
 HSPLjava/util/Arrays;->equals([Ljava/lang/Object;[Ljava/lang/Object;)Z
-HSPLjava/util/Arrays;->equals([Z[Z)Z
 HSPLjava/util/Arrays;->fill([BB)V
+HSPLjava/util/Arrays;->fill([BIIB)V
 HSPLjava/util/Arrays;->fill([CC)V
 HSPLjava/util/Arrays;->fill([CIIC)V
 HSPLjava/util/Arrays;->fill([FF)V
 HSPLjava/util/Arrays;->fill([II)V
 HSPLjava/util/Arrays;->fill([IIII)V
-HSPLjava/util/Arrays;->fill([JIIJ)V
 HSPLjava/util/Arrays;->fill([JJ)V
 HSPLjava/util/Arrays;->fill([Ljava/lang/Object;IILjava/lang/Object;)V
 HSPLjava/util/Arrays;->fill([Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLjava/util/Arrays;->fill([SS)V
 HSPLjava/util/Arrays;->fill([ZZ)V
 HSPLjava/util/Arrays;->hashCode([B)I
+HSPLjava/util/Arrays;->hashCode([F)I
 HSPLjava/util/Arrays;->hashCode([I)I
 HSPLjava/util/Arrays;->hashCode([J)I
 HSPLjava/util/Arrays;->hashCode([Ljava/lang/Object;)I
 HSPLjava/util/Arrays;->rangeCheck(III)V
 HSPLjava/util/Arrays;->sort([C)V
-HSPLjava/util/Arrays;->sort([F)V
 HSPLjava/util/Arrays;->sort([I)V
-HSPLjava/util/Arrays;->sort([III)V
 HSPLjava/util/Arrays;->sort([J)V
 HSPLjava/util/Arrays;->sort([Ljava/lang/Object;)V
+HSPLjava/util/Arrays;->sort([Ljava/lang/Object;II)V
 HSPLjava/util/Arrays;->sort([Ljava/lang/Object;IILjava/util/Comparator;)V
 HSPLjava/util/Arrays;->sort([Ljava/lang/Object;Ljava/util/Comparator;)V
-HSPLjava/util/Arrays;->stream([I)Ljava/util/stream/IntStream;
+HSPLjava/util/Arrays;->spliterator([Ljava/lang/Object;II)Ljava/util/Spliterator;
 HSPLjava/util/Arrays;->stream([Ljava/lang/Object;)Ljava/util/stream/Stream;
+HSPLjava/util/Arrays;->stream([Ljava/lang/Object;II)Ljava/util/stream/Stream;
 HSPLjava/util/Arrays;->toString([B)Ljava/lang/String;
 HSPLjava/util/Arrays;->toString([I)Ljava/lang/String;
-HSPLjava/util/Arrays;->toString([J)Ljava/lang/String;
 HSPLjava/util/Arrays;->toString([Ljava/lang/Object;)Ljava/lang/String;
-HSPLjava/util/Base64$Decoder;-><init>(ZZ)V
 HSPLjava/util/Base64$Decoder;->decode(Ljava/lang/String;)[B
 HSPLjava/util/Base64$Decoder;->decode([B)[B
 HSPLjava/util/Base64$Decoder;->decode0([BII[B)I
 HSPLjava/util/Base64$Decoder;->outLength([BII)I
-HSPLjava/util/Base64$Encoder;-><init>(Z[BIZ)V
-HSPLjava/util/Base64$Encoder;->access$200()[C
-HSPLjava/util/Base64$Encoder;->access$300()[C
-HSPLjava/util/Base64$Encoder;->encode([B)[B
-HSPLjava/util/Base64$Encoder;->encode0([BII[B)I
-HSPLjava/util/Base64$Encoder;->encodeToString([B)Ljava/lang/String;
-HSPLjava/util/Base64$Encoder;->outLength(I)I
-HSPLjava/util/Base64;->getDecoder()Ljava/util/Base64$Decoder;
-HSPLjava/util/Base64;->getEncoder()Ljava/util/Base64$Encoder;
+HSPLjava/util/Base64;->getMimeDecoder()Ljava/util/Base64$Decoder;
 HSPLjava/util/BitSet;-><init>()V
 HSPLjava/util/BitSet;-><init>(I)V
-HSPLjava/util/BitSet;->andNot(Ljava/util/BitSet;)V
 HSPLjava/util/BitSet;->cardinality()I
+HSPLjava/util/BitSet;->checkInvariants()V
 HSPLjava/util/BitSet;->checkRange(II)V
 HSPLjava/util/BitSet;->clear()V
 HSPLjava/util/BitSet;->clear(I)V
 HSPLjava/util/BitSet;->clone()Ljava/lang/Object;
-HSPLjava/util/BitSet;->equals(Ljava/lang/Object;)Z
+HSPLjava/util/BitSet;->ensureCapacity(I)V
+HSPLjava/util/BitSet;->expandTo(I)V
 HSPLjava/util/BitSet;->get(I)Z
-HSPLjava/util/BitSet;->intersects(Ljava/util/BitSet;)Z
+HSPLjava/util/BitSet;->initWords(I)V
 HSPLjava/util/BitSet;->isEmpty()Z
 HSPLjava/util/BitSet;->length()I
 HSPLjava/util/BitSet;->nextClearBit(I)I
 HSPLjava/util/BitSet;->nextSetBit(I)I
 HSPLjava/util/BitSet;->or(Ljava/util/BitSet;)V
+HSPLjava/util/BitSet;->recalculateWordsInUse()V
 HSPLjava/util/BitSet;->set(I)V
 HSPLjava/util/BitSet;->set(II)V
-HSPLjava/util/BitSet;->set(IIZ)V
 HSPLjava/util/BitSet;->set(IZ)V
-HSPLjava/util/BitSet;->toByteArray()[B
-HSPLjava/util/BitSet;->toString()Ljava/lang/String;
-HSPLjava/util/BitSet;->valueOf(Ljava/nio/ByteBuffer;)Ljava/util/BitSet;
-HSPLjava/util/BitSet;->valueOf([B)Ljava/util/BitSet;
+HSPLjava/util/BitSet;->wordIndex(I)I
+HSPLjava/util/Calendar;-><init>()V
 HSPLjava/util/Calendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;)V
+HSPLjava/util/Calendar;->aggregateStamp(II)I
 HSPLjava/util/Calendar;->clear()V
 HSPLjava/util/Calendar;->clone()Ljava/lang/Object;
 HSPLjava/util/Calendar;->complete()V
+HSPLjava/util/Calendar;->createCalendar(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
 HSPLjava/util/Calendar;->get(I)I
 HSPLjava/util/Calendar;->getFirstDayOfWeek()I
 HSPLjava/util/Calendar;->getInstance()Ljava/util/Calendar;
 HSPLjava/util/Calendar;->getInstance(Ljava/util/TimeZone;)Ljava/util/Calendar;
 HSPLjava/util/Calendar;->getInstance(Ljava/util/TimeZone;Ljava/util/Locale;)Ljava/util/Calendar;
 HSPLjava/util/Calendar;->getMinimalDaysInFirstWeek()I
+HSPLjava/util/Calendar;->getSetStateFields()I
 HSPLjava/util/Calendar;->getTime()Ljava/util/Date;
 HSPLjava/util/Calendar;->getTimeInMillis()J
+HSPLjava/util/Calendar;->getTimeZone()Ljava/util/TimeZone;
 HSPLjava/util/Calendar;->getZone()Ljava/util/TimeZone;
 HSPLjava/util/Calendar;->internalGet(I)I
 HSPLjava/util/Calendar;->internalSet(II)V
+HSPLjava/util/Calendar;->isFieldSet(II)Z
 HSPLjava/util/Calendar;->isLenient()Z
+HSPLjava/util/Calendar;->isPartiallyNormalized()Z
+HSPLjava/util/Calendar;->isSet(I)Z
 HSPLjava/util/Calendar;->selectFields()I
 HSPLjava/util/Calendar;->set(II)V
 HSPLjava/util/Calendar;->set(IIIIII)V
@@ -28547,36 +18898,37 @@
 HSPLjava/util/Calendar;->setLenient(Z)V
 HSPLjava/util/Calendar;->setTime(Ljava/util/Date;)V
 HSPLjava/util/Calendar;->setTimeInMillis(J)V
+HSPLjava/util/Calendar;->setTimeZone(Ljava/util/TimeZone;)V
 HSPLjava/util/Calendar;->setWeekCountData(Ljava/util/Locale;)V
 HSPLjava/util/Calendar;->setZoneShared(Z)V
+HSPLjava/util/Calendar;->updateTime()V
 HSPLjava/util/Collection;->removeIf(Ljava/util/function/Predicate;)Z
 HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream;
+HSPLjava/util/Collections$1;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Collections$1;->hasNext()Z
 HSPLjava/util/Collections$1;->next()Ljava/lang/Object;
-HPLjava/util/Collections$2;->characteristics()I
-HPLjava/util/Collections$2;->estimateSize()J
-HPLjava/util/Collections$2;->forEachRemaining(Ljava/util/function/Consumer;)V
-HPLjava/util/Collections$2;->tryAdvance(Ljava/util/function/Consumer;)Z
+HSPLjava/util/Collections$3;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/Collections$3;->hasMoreElements()Z
 HSPLjava/util/Collections$3;->nextElement()Ljava/lang/Object;
+HSPLjava/util/Collections$CopiesList;-><init>(ILjava/lang/Object;)V
 HSPLjava/util/Collections$CopiesList;->get(I)Ljava/lang/Object;
 HSPLjava/util/Collections$CopiesList;->size()I
 HSPLjava/util/Collections$CopiesList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyEnumeration;->hasMoreElements()Z
 HSPLjava/util/Collections$EmptyIterator;->hasNext()Z
-HSPLjava/util/Collections$EmptyList;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$EmptyList;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$EmptyList;->isEmpty()Z
 HSPLjava/util/Collections$EmptyList;->iterator()Ljava/util/Iterator;
+HSPLjava/util/Collections$EmptyList;->listIterator()Ljava/util/ListIterator;
 HSPLjava/util/Collections$EmptyList;->readResolve()Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyList;->size()I
-HSPLjava/util/Collections$EmptyList;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/Collections$EmptyList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/Collections$EmptyMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/Collections$EmptyMap;->isEmpty()Z
+HSPLjava/util/Collections$EmptyMap;->keySet()Ljava/util/Set;
 HSPLjava/util/Collections$EmptyMap;->size()I
 HSPLjava/util/Collections$EmptyMap;->values()Ljava/util/Collection;
 HSPLjava/util/Collections$EmptySet;->contains(Ljava/lang/Object;)Z
@@ -28585,6 +18937,7 @@
 HSPLjava/util/Collections$EmptySet;->size()I
 HSPLjava/util/Collections$EmptySet;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$EmptySet;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/Collections$ReverseComparator2;-><init>(Ljava/util/Comparator;)V
 HSPLjava/util/Collections$ReverseComparator2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Comparable;Ljava/lang/Comparable;)I
 HSPLjava/util/Collections$ReverseComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
@@ -28596,21 +18949,23 @@
 HSPLjava/util/Collections$SetFromMap;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$SetFromMap;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$SetFromMap;->size()I
-HSPLjava/util/Collections$SetFromMap;->stream()Ljava/util/stream/Stream;
 HSPLjava/util/Collections$SetFromMap;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$SetFromMap;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/Collections$SingletonList;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Collections$SingletonList;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$SingletonList;->get(I)Ljava/lang/Object;
 HSPLjava/util/Collections$SingletonList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$SingletonList;->size()I
-HPLjava/util/Collections$SingletonList;->spliterator()Ljava/util/Spliterator;
+HSPLjava/util/Collections$SingletonMap;-><init>(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLjava/util/Collections$SingletonMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/Collections$SingletonMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/Collections$SingletonMap;->keySet()Ljava/util/Set;
 HSPLjava/util/Collections$SingletonMap;->size()I
+HSPLjava/util/Collections$SingletonSet;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Collections$SingletonSet;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$SingletonSet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$SingletonSet;->size()I
+HSPLjava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/Collections$SynchronizedCollection;-><init>(Ljava/util/Collection;Ljava/lang/Object;)V
 HSPLjava/util/Collections$SynchronizedCollection;->add(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$SynchronizedCollection;->clear()V
@@ -28621,6 +18976,8 @@
 HSPLjava/util/Collections$SynchronizedCollection;->size()I
 HSPLjava/util/Collections$SynchronizedCollection;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$SynchronizedCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/Collections$SynchronizedList;-><init>(Ljava/util/List;)V
+HSPLjava/util/Collections$SynchronizedMap;-><init>(Ljava/util/Map;)V
 HSPLjava/util/Collections$SynchronizedMap;->clear()V
 HSPLjava/util/Collections$SynchronizedMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$SynchronizedMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
@@ -28629,32 +18986,41 @@
 HSPLjava/util/Collections$SynchronizedMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/Collections$SynchronizedMap;->size()I
 HSPLjava/util/Collections$SynchronizedMap;->values()Ljava/util/Collection;
+HSPLjava/util/Collections$SynchronizedRandomAccessList;-><init>(Ljava/util/List;)V
+HSPLjava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;)V
 HSPLjava/util/Collections$SynchronizedSet;-><init>(Ljava/util/Set;Ljava/lang/Object;)V
 HSPLjava/util/Collections$SynchronizedSet;->equals(Ljava/lang/Object;)Z
+HSPLjava/util/Collections$UnmodifiableCollection$1;-><init>(Ljava/util/Collections$UnmodifiableCollection;)V
 HSPLjava/util/Collections$UnmodifiableCollection$1;->hasNext()Z
 HSPLjava/util/Collections$UnmodifiableCollection$1;->next()Ljava/lang/Object;
+HSPLjava/util/Collections$UnmodifiableCollection;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/Collections$UnmodifiableCollection;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$UnmodifiableCollection;->containsAll(Ljava/util/Collection;)Z
 HSPLjava/util/Collections$UnmodifiableCollection;->isEmpty()Z
 HSPLjava/util/Collections$UnmodifiableCollection;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Collections$UnmodifiableCollection;->size()I
-HSPLjava/util/Collections$UnmodifiableCollection;->stream()Ljava/util/stream/Stream;
 HSPLjava/util/Collections$UnmodifiableCollection;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Collections$UnmodifiableCollection;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/Collections$UnmodifiableCollection;->toString()Ljava/lang/String;
+HSPLjava/util/Collections$UnmodifiableList$1;-><init>(Ljava/util/Collections$UnmodifiableList;I)V
 HSPLjava/util/Collections$UnmodifiableList$1;->hasNext()Z
 HSPLjava/util/Collections$UnmodifiableList$1;->next()Ljava/lang/Object;
+HSPLjava/util/Collections$UnmodifiableList;-><init>(Ljava/util/List;)V
 HSPLjava/util/Collections$UnmodifiableList;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$UnmodifiableList;->get(I)Ljava/lang/Object;
 HSPLjava/util/Collections$UnmodifiableList;->hashCode()I
 HSPLjava/util/Collections$UnmodifiableList;->listIterator()Ljava/util/ListIterator;
 HSPLjava/util/Collections$UnmodifiableList;->listIterator(I)Ljava/util/ListIterator;
+HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;-><init>(Ljava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;)V
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->hasNext()Z
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->next()Ljava/lang/Object;
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$1;->next()Ljava/util/Map$Entry;
+HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;-><init>(Ljava/util/Map$Entry;)V
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet$UnmodifiableEntry;->getValue()Ljava/lang/Object;
+HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;-><init>(Ljava/util/Set;)V
 HSPLjava/util/Collections$UnmodifiableMap$UnmodifiableEntrySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/Collections$UnmodifiableMap;-><init>(Ljava/util/Map;)V
 HSPLjava/util/Collections$UnmodifiableMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/Collections$UnmodifiableMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/Collections$UnmodifiableMap;->equals(Ljava/lang/Object;)Z
@@ -28664,34 +19030,45 @@
 HSPLjava/util/Collections$UnmodifiableMap;->keySet()Ljava/util/Set;
 HSPLjava/util/Collections$UnmodifiableMap;->size()I
 HSPLjava/util/Collections$UnmodifiableMap;->values()Ljava/util/Collection;
+HSPLjava/util/Collections$UnmodifiableRandomAccessList;-><init>(Ljava/util/List;)V
 HSPLjava/util/Collections$UnmodifiableRandomAccessList;->subList(II)Ljava/util/List;
+HSPLjava/util/Collections$UnmodifiableSet;-><init>(Ljava/util/Set;)V
 HSPLjava/util/Collections$UnmodifiableSet;->equals(Ljava/lang/Object;)Z
+HSPLjava/util/Collections$UnmodifiableSortedMap;-><init>(Ljava/util/SortedMap;)V
+HSPLjava/util/Collections$UnmodifiableSortedSet;-><init>(Ljava/util/SortedSet;)V
 HSPLjava/util/Collections;->addAll(Ljava/util/Collection;[Ljava/lang/Object;)Z
 HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;)I
 HSPLjava/util/Collections;->binarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
+HSPLjava/util/Collections;->disjoint(Ljava/util/Collection;Ljava/util/Collection;)Z
+HSPLjava/util/Collections;->emptyEnumeration()Ljava/util/Enumeration;
+HSPLjava/util/Collections;->emptyIterator()Ljava/util/Iterator;
 HSPLjava/util/Collections;->emptyList()Ljava/util/List;
+HSPLjava/util/Collections;->emptyListIterator()Ljava/util/ListIterator;
 HSPLjava/util/Collections;->emptyMap()Ljava/util/Map;
 HSPLjava/util/Collections;->emptySet()Ljava/util/Set;
 HSPLjava/util/Collections;->enumeration(Ljava/util/Collection;)Ljava/util/Enumeration;
+HSPLjava/util/Collections;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;)I
 HSPLjava/util/Collections;->indexedBinarySearch(Ljava/util/List;Ljava/lang/Object;Ljava/util/Comparator;)I
-HSPLjava/util/Collections;->max(Ljava/util/Collection;Ljava/util/Comparator;)Ljava/lang/Object;
 HSPLjava/util/Collections;->nCopies(ILjava/lang/Object;)Ljava/util/List;
 HSPLjava/util/Collections;->newSetFromMap(Ljava/util/Map;)Ljava/util/Set;
 HSPLjava/util/Collections;->reverse(Ljava/util/List;)V
 HSPLjava/util/Collections;->reverseOrder()Ljava/util/Comparator;
 HSPLjava/util/Collections;->reverseOrder(Ljava/util/Comparator;)Ljava/util/Comparator;
-HSPLjava/util/Collections;->shuffle(Ljava/util/List;)V
 HSPLjava/util/Collections;->shuffle(Ljava/util/List;Ljava/util/Random;)V
 HSPLjava/util/Collections;->singleton(Ljava/lang/Object;)Ljava/util/Set;
+HSPLjava/util/Collections;->singletonIterator(Ljava/lang/Object;)Ljava/util/Iterator;
 HSPLjava/util/Collections;->singletonList(Ljava/lang/Object;)Ljava/util/List;
 HSPLjava/util/Collections;->singletonMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/Map;
 HSPLjava/util/Collections;->sort(Ljava/util/List;)V
 HSPLjava/util/Collections;->sort(Ljava/util/List;Ljava/util/Comparator;)V
 HSPLjava/util/Collections;->swap(Ljava/util/List;II)V
+HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;)Ljava/util/Collection;
+HSPLjava/util/Collections;->synchronizedCollection(Ljava/util/Collection;Ljava/lang/Object;)Ljava/util/Collection;
 HSPLjava/util/Collections;->synchronizedList(Ljava/util/List;)Ljava/util/List;
 HSPLjava/util/Collections;->synchronizedMap(Ljava/util/Map;)Ljava/util/Map;
 HSPLjava/util/Collections;->synchronizedSet(Ljava/util/Set;)Ljava/util/Set;
+HSPLjava/util/Collections;->synchronizedSet(Ljava/util/Set;Ljava/lang/Object;)Ljava/util/Set;
 HSPLjava/util/Collections;->unmodifiableCollection(Ljava/util/Collection;)Ljava/util/Collection;
 HSPLjava/util/Collections;->unmodifiableList(Ljava/util/List;)Ljava/util/List;
 HSPLjava/util/Collections;->unmodifiableMap(Ljava/util/Map;)Ljava/util/Map;
@@ -28706,184 +19083,220 @@
 HSPLjava/util/ComparableTimSort;->gallopRight(Ljava/lang/Comparable;[Ljava/lang/Object;III)I
 HSPLjava/util/ComparableTimSort;->mergeAt(I)V
 HSPLjava/util/ComparableTimSort;->mergeCollapse()V
+HSPLjava/util/ComparableTimSort;->mergeForceCollapse()V
 HSPLjava/util/ComparableTimSort;->mergeHi(IIII)V
 HSPLjava/util/ComparableTimSort;->mergeLo(IIII)V
+HSPLjava/util/ComparableTimSort;->minRunLength(I)I
+HSPLjava/util/ComparableTimSort;->pushRun(II)V
+HSPLjava/util/ComparableTimSort;->reverseRange([Ljava/lang/Object;II)V
 HSPLjava/util/ComparableTimSort;->sort([Ljava/lang/Object;II[Ljava/lang/Object;II)V
-HSPLjava/util/Comparator;->comparing(Ljava/util/function/Function;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->comparingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
 HSPLjava/util/Comparator;->comparingInt(Ljava/util/function/ToIntFunction;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->comparingLong(Ljava/util/function/ToLongFunction;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->nullsLast(Ljava/util/Comparator;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->reversed()Ljava/util/Comparator;
-HSPLjava/util/Comparator;->thenComparing(Ljava/util/Comparator;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->thenComparing(Ljava/util/function/Function;)Ljava/util/Comparator;
-HSPLjava/util/Comparator;->thenComparingDouble(Ljava/util/function/ToDoubleFunction;)Ljava/util/Comparator;
-HSPLjava/util/Comparators$NullComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLjava/util/Currency;-><init>(Landroid/icu/util/Currency;)V
+HSPLjava/util/Currency;->getCurrencyCode()Ljava/lang/String;
 HSPLjava/util/Currency;->getInstance(Ljava/lang/String;)Ljava/util/Currency;
 HSPLjava/util/Currency;->getInstance(Ljava/util/Locale;)Ljava/util/Currency;
 HSPLjava/util/Currency;->getSymbol(Ljava/util/Locale;)Ljava/lang/String;
 HSPLjava/util/Date;-><init>()V
 HSPLjava/util/Date;-><init>(J)V
+HSPLjava/util/Date;->after(Ljava/util/Date;)Z
 HSPLjava/util/Date;->before(Ljava/util/Date;)Z
 HSPLjava/util/Date;->clone()Ljava/lang/Object;
 HSPLjava/util/Date;->compareTo(Ljava/util/Date;)I
-HSPLjava/util/Date;->from(Ljava/time/Instant;)Ljava/util/Date;
+HSPLjava/util/Date;->convertToAbbr(Ljava/lang/StringBuilder;Ljava/lang/String;)Ljava/lang/StringBuilder;
 HSPLjava/util/Date;->getCalendarSystem(J)Lsun/util/calendar/BaseCalendar;
+HSPLjava/util/Date;->getMillisOf(Ljava/util/Date;)J
 HSPLjava/util/Date;->getTime()J
+HSPLjava/util/Date;->getTimeImpl()J
 HSPLjava/util/Date;->normalize()Lsun/util/calendar/BaseCalendar$Date;
 HSPLjava/util/Date;->setTime(J)V
 HSPLjava/util/Date;->toString()Ljava/lang/String;
+HSPLjava/util/Dictionary;-><init>()V
 HSPLjava/util/DualPivotQuicksort;->doSort([CII[CII)V
-HSPLjava/util/DualPivotQuicksort;->doSort([FII[FII)V
 HSPLjava/util/DualPivotQuicksort;->sort([CIIZ)V
 HSPLjava/util/DualPivotQuicksort;->sort([CII[CII)V
-HSPLjava/util/DualPivotQuicksort;->sort([FIIZ)V
-HSPLjava/util/DualPivotQuicksort;->sort([FII[FII)V
 HSPLjava/util/DualPivotQuicksort;->sort([IIIZ)V
 HSPLjava/util/DualPivotQuicksort;->sort([III[III)V
 HSPLjava/util/DualPivotQuicksort;->sort([JIIZ)V
 HSPLjava/util/DualPivotQuicksort;->sort([JII[JII)V
-HSPLjava/util/EnumMap$1;-><init>()V
+HSPLjava/util/EnumMap$EntryIterator$Entry;-><init>(Ljava/util/EnumMap$EntryIterator;I)V
+HSPLjava/util/EnumMap$EntryIterator$Entry;-><init>(Ljava/util/EnumMap$EntryIterator;ILjava/util/EnumMap$1;)V
+HSPLjava/util/EnumMap$EntryIterator$Entry;->checkIndexForEntryUse()V
 HSPLjava/util/EnumMap$EntryIterator$Entry;->getKey()Ljava/lang/Enum;
 HSPLjava/util/EnumMap$EntryIterator$Entry;->getKey()Ljava/lang/Object;
 HSPLjava/util/EnumMap$EntryIterator$Entry;->getValue()Ljava/lang/Object;
+HSPLjava/util/EnumMap$EntryIterator;-><init>(Ljava/util/EnumMap;)V
+HSPLjava/util/EnumMap$EntryIterator;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
 HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/lang/Object;
 HSPLjava/util/EnumMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/EnumMap$EntrySet;-><init>(Ljava/util/EnumMap;)V
+HSPLjava/util/EnumMap$EntrySet;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
 HSPLjava/util/EnumMap$EntrySet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/EnumMap$EntrySet;->size()I
+HSPLjava/util/EnumMap$EnumMapIterator;-><init>(Ljava/util/EnumMap;)V
+HSPLjava/util/EnumMap$EnumMapIterator;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
 HSPLjava/util/EnumMap$EnumMapIterator;->hasNext()Z
-HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Enum;
-HSPLjava/util/EnumMap$KeyIterator;->next()Ljava/lang/Object;
-HSPLjava/util/EnumMap$KeySet;->contains(Ljava/lang/Object;)Z
+HSPLjava/util/EnumMap$KeyIterator;-><init>(Ljava/util/EnumMap;)V
+HSPLjava/util/EnumMap$KeyIterator;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
+HSPLjava/util/EnumMap$KeySet;-><init>(Ljava/util/EnumMap;)V
+HSPLjava/util/EnumMap$KeySet;-><init>(Ljava/util/EnumMap;Ljava/util/EnumMap$1;)V
 HSPLjava/util/EnumMap$KeySet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/EnumMap$KeySet;->size()I
 HSPLjava/util/EnumMap;-><init>(Ljava/lang/Class;)V
-HSPLjava/util/EnumMap;-><init>(Ljava/util/Map;)V
-HSPLjava/util/EnumMap;->clear()V
+HSPLjava/util/EnumMap;->access$1100(Ljava/util/EnumMap;)[Ljava/lang/Enum;
+HSPLjava/util/EnumMap;->access$1200(Ljava/util/EnumMap;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/EnumMap;->access$200(Ljava/util/EnumMap;)I
+HSPLjava/util/EnumMap;->access$600(Ljava/util/EnumMap;)[Ljava/lang/Object;
 HSPLjava/util/EnumMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/EnumMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/EnumMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/EnumMap;->getKeyUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
+HSPLjava/util/EnumMap;->isValidKey(Ljava/lang/Object;)Z
 HSPLjava/util/EnumMap;->keySet()Ljava/util/Set;
+HSPLjava/util/EnumMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/EnumMap;->put(Ljava/lang/Enum;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/EnumMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/EnumMap;->putAll(Ljava/util/Map;)V
-HSPLjava/util/EnumMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/EnumMap;->size()I
 HSPLjava/util/EnumMap;->typeCheck(Ljava/lang/Enum;)V
+HSPLjava/util/EnumMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/EnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V
 HSPLjava/util/EnumSet;->allOf(Ljava/lang/Class;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->clone()Ljava/util/EnumSet;
-HSPLjava/util/EnumSet;->complementOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->copyOf(Ljava/util/Collection;)Ljava/util/EnumSet;
+HSPLjava/util/EnumSet;->copyOf(Ljava/util/EnumSet;)Ljava/util/EnumSet;
+HSPLjava/util/EnumSet;->getUniverse(Ljava/lang/Class;)[Ljava/lang/Enum;
 HSPLjava/util/EnumSet;->noneOf(Ljava/lang/Class;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;
-HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;Ljava/lang/Enum;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->of(Ljava/lang/Enum;[Ljava/lang/Enum;)Ljava/util/EnumSet;
 HSPLjava/util/EnumSet;->typeCheck(Ljava/lang/Enum;)V
+HSPLjava/util/Formatter$Conversion;->isCharacter(C)Z
 HSPLjava/util/Formatter$Conversion;->isFloat(C)Z
+HSPLjava/util/Formatter$Conversion;->isGeneral(C)Z
+HSPLjava/util/Formatter$Conversion;->isInteger(C)Z
+HSPLjava/util/Formatter$Conversion;->isText(C)Z
 HSPLjava/util/Formatter$Conversion;->isValid(C)Z
-HSPLjava/util/Formatter$DateTime;->isValid(C)Z
+HSPLjava/util/Formatter$FixedString;-><init>(Ljava/util/Formatter;Ljava/lang/String;)V
 HSPLjava/util/Formatter$FixedString;->index()I
 HSPLjava/util/Formatter$FixedString;->print(Ljava/lang/Object;Ljava/util/Locale;)V
 HSPLjava/util/Formatter$Flags;-><init>(I)V
+HSPLjava/util/Formatter$Flags;->access$100(Ljava/util/Formatter$Flags;Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
+HSPLjava/util/Formatter$Flags;->add(Ljava/util/Formatter$Flags;)Ljava/util/Formatter$Flags;
 HSPLjava/util/Formatter$Flags;->contains(Ljava/util/Formatter$Flags;)Z
 HSPLjava/util/Formatter$Flags;->parse(C)Ljava/util/Formatter$Flags;
 HSPLjava/util/Formatter$Flags;->parse(Ljava/lang/String;)Ljava/util/Formatter$Flags;
 HSPLjava/util/Formatter$Flags;->valueOf()I
 HSPLjava/util/Formatter$FormatSpecifier;-><init>(Ljava/util/Formatter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/Formatter$FormatSpecifier;->addZeros([CI)[C
+HSPLjava/util/Formatter$FormatSpecifier;->adjustWidth(ILjava/util/Formatter$Flags;Z)I
+HSPLjava/util/Formatter$FormatSpecifier;->checkBadFlags([Ljava/util/Formatter$Flags;)V
 HSPLjava/util/Formatter$FormatSpecifier;->checkCharacter()V
-HSPLjava/util/Formatter$FormatSpecifier;->checkDateTime()V
 HSPLjava/util/Formatter$FormatSpecifier;->checkFloat()V
 HSPLjava/util/Formatter$FormatSpecifier;->checkGeneral()V
 HSPLjava/util/Formatter$FormatSpecifier;->checkInteger()V
 HSPLjava/util/Formatter$FormatSpecifier;->checkNumeric()V
 HSPLjava/util/Formatter$FormatSpecifier;->checkText()V
 HSPLjava/util/Formatter$FormatSpecifier;->conversion(Ljava/lang/String;)C
+HSPLjava/util/Formatter$FormatSpecifier;->flags(Ljava/lang/String;)Ljava/util/Formatter$Flags;
+HSPLjava/util/Formatter$FormatSpecifier;->getZero(Ljava/util/Locale;)C
 HSPLjava/util/Formatter$FormatSpecifier;->index()I
 HSPLjava/util/Formatter$FormatSpecifier;->index(Ljava/lang/String;)I
 HSPLjava/util/Formatter$FormatSpecifier;->justify(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Formatter$FormatSpecifier;->leadingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
 HSPLjava/util/Formatter$FormatSpecifier;->localizedMagnitude(Ljava/lang/StringBuilder;[CLjava/util/Formatter$Flags;ILjava/util/Locale;)Ljava/lang/StringBuilder;
 HSPLjava/util/Formatter$FormatSpecifier;->precision(Ljava/lang/String;)I
+HSPLjava/util/Formatter$FormatSpecifier;->print(BLjava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(DLjava/util/Locale;)V
+HSPLjava/util/Formatter$FormatSpecifier;->print(FLjava/util/Locale;)V
+HSPLjava/util/Formatter$FormatSpecifier;->print(ILjava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(JLjava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/Object;Ljava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/String;)V
 HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;DLjava/util/Locale;Ljava/util/Formatter$Flags;CIZ)V
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/lang/StringBuilder;Ljava/util/Calendar;CLjava/util/Locale;)Ljava/lang/Appendable;
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/util/Calendar;CLjava/util/Locale;)V
+HSPLjava/util/Formatter$FormatSpecifier;->printBoolean(Ljava/lang/Object;)V
 HSPLjava/util/Formatter$FormatSpecifier;->printCharacter(Ljava/lang/Object;)V
-HSPLjava/util/Formatter$FormatSpecifier;->printDateTime(Ljava/lang/Object;Ljava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->printFloat(Ljava/lang/Object;Ljava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->printInteger(Ljava/lang/Object;Ljava/util/Locale;)V
 HSPLjava/util/Formatter$FormatSpecifier;->printString(Ljava/lang/Object;Ljava/util/Locale;)V
+HSPLjava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
 HSPLjava/util/Formatter$FormatSpecifier;->width(Ljava/lang/String;)I
 HSPLjava/util/Formatter$FormatSpecifierParser;-><init>(Ljava/util/Formatter;Ljava/lang/String;I)V
+HSPLjava/util/Formatter$FormatSpecifierParser;->advance()C
+HSPLjava/util/Formatter$FormatSpecifierParser;->back(I)V
+HSPLjava/util/Formatter$FormatSpecifierParser;->getEndIdx()I
+HSPLjava/util/Formatter$FormatSpecifierParser;->getFormatSpecifier()Ljava/util/Formatter$FormatSpecifier;
+HSPLjava/util/Formatter$FormatSpecifierParser;->isEnd()Z
+HSPLjava/util/Formatter$FormatSpecifierParser;->nextInt()Ljava/lang/String;
+HSPLjava/util/Formatter$FormatSpecifierParser;->nextIsInt()Z
+HSPLjava/util/Formatter$FormatSpecifierParser;->peek()C
+HSPLjava/util/Formatter;-><init>()V
 HSPLjava/util/Formatter;-><init>(Ljava/lang/Appendable;)V
 HSPLjava/util/Formatter;-><init>(Ljava/lang/Appendable;Ljava/util/Locale;)V
+HSPLjava/util/Formatter;-><init>(Ljava/util/Locale;)V
+HSPLjava/util/Formatter;-><init>(Ljava/util/Locale;Ljava/lang/Appendable;)V
+HSPLjava/util/Formatter;->access$000(Ljava/util/Formatter;)Ljava/lang/Appendable;
+HSPLjava/util/Formatter;->access$400(Ljava/util/Formatter;)C
+HSPLjava/util/Formatter;->ensureOpen()V
 HSPLjava/util/Formatter;->format(Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
 HSPLjava/util/Formatter;->format(Ljava/util/Locale;Ljava/lang/String;[Ljava/lang/Object;)Ljava/util/Formatter;
 HSPLjava/util/Formatter;->getZero(Ljava/util/Locale;)C
 HSPLjava/util/Formatter;->locale()Ljava/util/Locale;
+HSPLjava/util/Formatter;->nonNullAppendable(Ljava/lang/Appendable;)Ljava/lang/Appendable;
 HSPLjava/util/Formatter;->out()Ljava/lang/Appendable;
 HSPLjava/util/Formatter;->parse(Ljava/lang/String;)[Ljava/util/Formatter$FormatString;
 HSPLjava/util/Formatter;->toString()Ljava/lang/String;
 HSPLjava/util/GregorianCalendar;-><init>()V
-HSPLjava/util/GregorianCalendar;-><init>(III)V
 HSPLjava/util/GregorianCalendar;-><init>(IIIIII)V
 HSPLjava/util/GregorianCalendar;-><init>(IIIIIII)V
 HSPLjava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;)V
 HSPLjava/util/GregorianCalendar;-><init>(Ljava/util/TimeZone;Ljava/util/Locale;)V
 HSPLjava/util/GregorianCalendar;->add(II)V
+HSPLjava/util/GregorianCalendar;->adjustDstOffsetForInvalidWallClock(JLjava/util/TimeZone;I)I
 HSPLjava/util/GregorianCalendar;->adjustForZoneAndDaylightSavingsTime(IJLjava/util/TimeZone;)J
 HSPLjava/util/GregorianCalendar;->clone()Ljava/lang/Object;
 HSPLjava/util/GregorianCalendar;->computeFields()V
 HSPLjava/util/GregorianCalendar;->computeFields(II)I
 HSPLjava/util/GregorianCalendar;->computeTime()V
+HSPLjava/util/GregorianCalendar;->getCurrentFixedDate()J
 HSPLjava/util/GregorianCalendar;->getFixedDate(Lsun/util/calendar/BaseCalendar;II)J
-HSPLjava/util/GregorianCalendar;->getLeastMaximum(I)I
-HSPLjava/util/GregorianCalendar;->getMaximum(I)I
-HSPLjava/util/GregorianCalendar;->getMinimum(I)I
 HSPLjava/util/GregorianCalendar;->getTimeZone()Ljava/util/TimeZone;
 HSPLjava/util/GregorianCalendar;->getWeekNumber(JJ)I
+HSPLjava/util/GregorianCalendar;->internalGetEra()I
 HSPLjava/util/GregorianCalendar;->isLeapYear(I)Z
+HSPLjava/util/GregorianCalendar;->monthLength(I)I
+HSPLjava/util/GregorianCalendar;->monthLength(II)I
 HSPLjava/util/GregorianCalendar;->pinDayOfMonth()V
 HSPLjava/util/GregorianCalendar;->setTimeZone(Ljava/util/TimeZone;)V
+HSPLjava/util/HashMap$EntryIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$EntryIterator;->next()Ljava/lang/Object;
+HSPLjava/util/HashMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/HashMap$EntrySet;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$EntrySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/HashMap$EntrySet;->size()I
-HSPLjava/util/HashMap$EntrySet;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/HashMap$EntrySpliterator;->characteristics()I
-HSPLjava/util/HashMap$EntrySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
 HSPLjava/util/HashMap$HashIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$HashIterator;->hasNext()Z
 HSPLjava/util/HashMap$HashIterator;->nextNode()Ljava/util/HashMap$Node;
 HSPLjava/util/HashMap$HashIterator;->remove()V
+HSPLjava/util/HashMap$HashMapSpliterator;-><init>(Ljava/util/HashMap;IIII)V
 HSPLjava/util/HashMap$HashMapSpliterator;->estimateSize()J
+HSPLjava/util/HashMap$HashMapSpliterator;->getFence()I
+HSPLjava/util/HashMap$KeyIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$KeyIterator;->next()Ljava/lang/Object;
+HSPLjava/util/HashMap$KeySet;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$KeySet;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/HashMap$KeySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/HashMap$KeySet;->size()I
+HSPLjava/util/HashMap$KeySpliterator;-><init>(Ljava/util/HashMap;IIII)V
 HSPLjava/util/HashMap$KeySpliterator;->characteristics()I
 HSPLjava/util/HashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/HashMap$KeySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
+HSPLjava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
 HSPLjava/util/HashMap$Node;->getKey()Ljava/lang/Object;
 HSPLjava/util/HashMap$Node;->getValue()Ljava/lang/Object;
 HSPLjava/util/HashMap$Node;->hashCode()I
 HSPLjava/util/HashMap$Node;->setValue(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/HashMap$TreeNode;->balanceInsertion(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap$TreeNode;->moveRootToFront([Ljava/util/HashMap$Node;Ljava/util/HashMap$TreeNode;)V
-HSPLjava/util/HashMap$TreeNode;->rotateLeft(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap$TreeNode;->rotateRight(Ljava/util/HashMap$TreeNode;Ljava/util/HashMap$TreeNode;)Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap$TreeNode;->split(Ljava/util/HashMap;[Ljava/util/HashMap$Node;II)V
-HSPLjava/util/HashMap$TreeNode;->treeify([Ljava/util/HashMap$Node;)V
+HSPLjava/util/HashMap$ValueIterator;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$ValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/HashMap$ValueSpliterator;-><init>(Ljava/util/HashMap;IIII)V
 HSPLjava/util/HashMap$ValueSpliterator;->characteristics()I
-HSPLjava/util/HashMap$ValueSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/HashMap$ValueSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-HSPLjava/util/HashMap$Values;->forEach(Ljava/util/function/Consumer;)V
+HSPLjava/util/HashMap$Values;-><init>(Ljava/util/HashMap;)V
 HSPLjava/util/HashMap$Values;->iterator()Ljava/util/Iterator;
 HSPLjava/util/HashMap$Values;->size()I
 HSPLjava/util/HashMap$Values;->spliterator()Ljava/util/Spliterator;
@@ -28894,9 +19307,9 @@
 HSPLjava/util/HashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
 HSPLjava/util/HashMap;->afterNodeInsertion(Z)V
 HSPLjava/util/HashMap;->afterNodeRemoval(Ljava/util/HashMap$Node;)V
+HSPLjava/util/HashMap;->capacity()I
 HSPLjava/util/HashMap;->clear()V
 HSPLjava/util/HashMap;->clone()Ljava/lang/Object;
-HSPLjava/util/HashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
 HSPLjava/util/HashMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/HashMap;->containsValue(Ljava/lang/Object;)Z
 HSPLjava/util/HashMap;->entrySet()Ljava/util/Set;
@@ -28908,7 +19321,6 @@
 HSPLjava/util/HashMap;->internalWriteEntries(Ljava/io/ObjectOutputStream;)V
 HSPLjava/util/HashMap;->isEmpty()Z
 HSPLjava/util/HashMap;->keySet()Ljava/util/Set;
-HSPLjava/util/HashMap;->merge(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/function/BiFunction;)Ljava/lang/Object;
 HSPLjava/util/HashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
 HSPLjava/util/HashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/HashMap;->putAll(Ljava/util/Map;)V
@@ -28919,16 +19331,16 @@
 HSPLjava/util/HashMap;->reinitialize()V
 HSPLjava/util/HashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/HashMap;->removeNode(ILjava/lang/Object;Ljava/lang/Object;ZZ)Ljava/util/HashMap$Node;
-HSPLjava/util/HashMap;->replacementNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-HSPLjava/util/HashMap;->replacementTreeNode(Ljava/util/HashMap$Node;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
 HSPLjava/util/HashMap;->resize()[Ljava/util/HashMap$Node;
 HSPLjava/util/HashMap;->size()I
+HSPLjava/util/HashMap;->tableSizeFor(I)I
 HSPLjava/util/HashMap;->treeifyBin([Ljava/util/HashMap$Node;I)V
 HSPLjava/util/HashMap;->values()Ljava/util/Collection;
 HSPLjava/util/HashMap;->writeObject(Ljava/io/ObjectOutputStream;)V
 HSPLjava/util/HashSet;-><init>()V
 HSPLjava/util/HashSet;-><init>(I)V
 HSPLjava/util/HashSet;-><init>(IF)V
+HSPLjava/util/HashSet;-><init>(IFZ)V
 HSPLjava/util/HashSet;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/HashSet;->add(Ljava/lang/Object;)Z
 HSPLjava/util/HashSet;->clear()V
@@ -28939,28 +19351,39 @@
 HSPLjava/util/HashSet;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/HashSet;->size()I
 HSPLjava/util/HashSet;->spliterator()Ljava/util/Spliterator;
+HSPLjava/util/Hashtable$EntrySet;-><init>(Ljava/util/Hashtable;)V
+HSPLjava/util/Hashtable$EntrySet;-><init>(Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
 HSPLjava/util/Hashtable$EntrySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/Hashtable$Enumerator;-><init>(Ljava/util/Hashtable;IZ)V
 HSPLjava/util/Hashtable$Enumerator;->hasMoreElements()Z
 HSPLjava/util/Hashtable$Enumerator;->hasNext()Z
 HSPLjava/util/Hashtable$Enumerator;->next()Ljava/lang/Object;
 HSPLjava/util/Hashtable$Enumerator;->nextElement()Ljava/lang/Object;
-HSPLjava/util/Hashtable$HashtableEntry;->clone()Ljava/lang/Object;
+HSPLjava/util/Hashtable$HashtableEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/Hashtable$HashtableEntry;)V
 HSPLjava/util/Hashtable$HashtableEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/Hashtable$HashtableEntry;->getValue()Ljava/lang/Object;
-HPLjava/util/Hashtable$KeySet;->contains(Ljava/lang/Object;)Z
+HSPLjava/util/Hashtable$KeySet;-><init>(Ljava/util/Hashtable;)V
+HSPLjava/util/Hashtable$KeySet;-><init>(Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
 HSPLjava/util/Hashtable$KeySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Hashtable$KeySet;->size()I
+HSPLjava/util/Hashtable$ValueCollection;-><init>(Ljava/util/Hashtable;)V
+HSPLjava/util/Hashtable$ValueCollection;-><init>(Ljava/util/Hashtable;Ljava/util/Hashtable$1;)V
 HSPLjava/util/Hashtable$ValueCollection;->iterator()Ljava/util/Iterator;
 HSPLjava/util/Hashtable$ValueCollection;->size()I
 HSPLjava/util/Hashtable;-><init>()V
 HSPLjava/util/Hashtable;-><init>(I)V
 HSPLjava/util/Hashtable;-><init>(IF)V
+HSPLjava/util/Hashtable;->access$100(Ljava/util/Hashtable;I)Ljava/util/Iterator;
+HSPLjava/util/Hashtable;->access$200(Ljava/util/Hashtable;)I
+HSPLjava/util/Hashtable;->access$400(Ljava/util/Hashtable;)[Ljava/util/Hashtable$HashtableEntry;
+HSPLjava/util/Hashtable;->access$500(Ljava/util/Hashtable;)I
 HSPLjava/util/Hashtable;->addEntry(ILjava/lang/Object;Ljava/lang/Object;I)V
 HSPLjava/util/Hashtable;->clear()V
-HSPLjava/util/Hashtable;->clone()Ljava/lang/Object;
 HSPLjava/util/Hashtable;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/Hashtable;->entrySet()Ljava/util/Set;
 HSPLjava/util/Hashtable;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/Hashtable;->getEnumeration(I)Ljava/util/Enumeration;
+HSPLjava/util/Hashtable;->getIterator(I)Ljava/util/Iterator;
 HSPLjava/util/Hashtable;->isEmpty()Z
 HSPLjava/util/Hashtable;->keySet()Ljava/util/Set;
 HSPLjava/util/Hashtable;->keys()Ljava/util/Enumeration;
@@ -28970,57 +19393,77 @@
 HSPLjava/util/Hashtable;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLjava/util/Hashtable;->size()I
 HSPLjava/util/Hashtable;->values()Ljava/util/Collection;
+HSPLjava/util/IdentityHashMap$EntryIterator$Entry;-><init>(Ljava/util/IdentityHashMap$EntryIterator;I)V
+HSPLjava/util/IdentityHashMap$EntryIterator$Entry;-><init>(Ljava/util/IdentityHashMap$EntryIterator;ILjava/util/IdentityHashMap$1;)V
+HSPLjava/util/IdentityHashMap$EntryIterator$Entry;->checkIndexForEntryUse()V
 HSPLjava/util/IdentityHashMap$EntryIterator$Entry;->getKey()Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap$EntryIterator$Entry;->getValue()Ljava/lang/Object;
+HSPLjava/util/IdentityHashMap$EntryIterator;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$EntryIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$EntryIterator;->next()Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/IdentityHashMap$EntrySet;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$EntrySet;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$EntrySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->hasNext()Z
 HSPLjava/util/IdentityHashMap$IdentityHashMapIterator;->nextIndex()I
-HSPLjava/util/IdentityHashMap$KeyIterator;->next()Ljava/lang/Object;
+HSPLjava/util/IdentityHashMap$KeyIterator;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$KeyIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
+HSPLjava/util/IdentityHashMap$KeySet;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$KeySet;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$KeySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/IdentityHashMap$ValueIterator;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$ValueIterator;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$ValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/IdentityHashMap$Values;-><init>(Ljava/util/IdentityHashMap;)V
+HSPLjava/util/IdentityHashMap$Values;-><init>(Ljava/util/IdentityHashMap;Ljava/util/IdentityHashMap$1;)V
 HSPLjava/util/IdentityHashMap$Values;->iterator()Ljava/util/Iterator;
 HSPLjava/util/IdentityHashMap;-><init>()V
 HSPLjava/util/IdentityHashMap;-><init>(I)V
+HSPLjava/util/IdentityHashMap;->capacity(I)I
 HSPLjava/util/IdentityHashMap;->clear()V
 HSPLjava/util/IdentityHashMap;->closeDeletion(I)V
 HSPLjava/util/IdentityHashMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/IdentityHashMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/IdentityHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/IdentityHashMap;->hash(Ljava/lang/Object;I)I
+HSPLjava/util/IdentityHashMap;->init(I)V
 HSPLjava/util/IdentityHashMap;->isEmpty()Z
 HSPLjava/util/IdentityHashMap;->keySet()Ljava/util/Set;
+HSPLjava/util/IdentityHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/IdentityHashMap;->nextKeyIndex(II)I
 HSPLjava/util/IdentityHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap;->resize(I)Z
+HSPLjava/util/IdentityHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/IdentityHashMap;->values()Ljava/util/Collection;
 HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/JumboEnumSet$EnumSetIterator;->hasNext()Z
-HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Enum;
-HSPLjava/util/JumboEnumSet$EnumSetIterator;->next()Ljava/lang/Object;
-HSPLjava/util/JumboEnumSet$EnumSetIterator;->remove()V
-HSPLjava/util/JumboEnumSet;->add(Ljava/lang/Enum;)Z
-HSPLjava/util/JumboEnumSet;->add(Ljava/lang/Object;)Z
-HSPLjava/util/JumboEnumSet;->addAll(Ljava/util/Collection;)Z
-HSPLjava/util/JumboEnumSet;->contains(Ljava/lang/Object;)Z
-HSPLjava/util/JumboEnumSet;->isEmpty()Z
-HSPLjava/util/JumboEnumSet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/JumboEnumSet;->removeAll(Ljava/util/Collection;)Z
-HSPLjava/util/JumboEnumSet;->size()I
+HSPLjava/util/LinkedHashMap$LinkedEntryIterator;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedEntryIterator;->next()Ljava/lang/Object;
+HSPLjava/util/LinkedHashMap$LinkedEntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/LinkedHashMap$LinkedEntrySet;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedEntrySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/LinkedHashMap$LinkedEntrySet;->size()I
+HSPLjava/util/LinkedHashMap$LinkedHashIterator;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedHashIterator;->hasNext()Z
+HSPLjava/util/LinkedHashMap$LinkedHashIterator;->nextNode()Ljava/util/LinkedHashMap$LinkedHashMapEntry;
 HSPLjava/util/LinkedHashMap$LinkedHashIterator;->remove()V
+HSPLjava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
+HSPLjava/util/LinkedHashMap$LinkedKeyIterator;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedKeyIterator;->next()Ljava/lang/Object;
+HSPLjava/util/LinkedHashMap$LinkedKeySet;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedKeySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/LinkedHashMap$LinkedKeySet;->size()I
+HSPLjava/util/LinkedHashMap$LinkedValueIterator;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/LinkedHashMap$LinkedValues;-><init>(Ljava/util/LinkedHashMap;)V
 HSPLjava/util/LinkedHashMap$LinkedValues;->iterator()Ljava/util/Iterator;
 HSPLjava/util/LinkedHashMap$LinkedValues;->size()I
 HSPLjava/util/LinkedHashMap;-><init>()V
 HSPLjava/util/LinkedHashMap;-><init>(I)V
+HSPLjava/util/LinkedHashMap;-><init>(IF)V
 HSPLjava/util/LinkedHashMap;-><init>(IFZ)V
 HSPLjava/util/LinkedHashMap;-><init>(Ljava/util/Map;)V
 HSPLjava/util/LinkedHashMap;->afterNodeAccess(Ljava/util/HashMap$Node;)V
@@ -29031,29 +19474,30 @@
 HSPLjava/util/LinkedHashMap;->entrySet()Ljava/util/Set;
 HSPLjava/util/LinkedHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/LinkedHashMap;->keySet()Ljava/util/Set;
+HSPLjava/util/LinkedHashMap;->linkNodeLast(Ljava/util/LinkedHashMap$LinkedHashMapEntry;)V
 HSPLjava/util/LinkedHashMap;->newNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$Node;
-HSPLjava/util/LinkedHashMap;->reinitialize()V
 HSPLjava/util/LinkedHashMap;->removeEldestEntry(Ljava/util/Map$Entry;)Z
 HSPLjava/util/LinkedHashMap;->values()Ljava/util/Collection;
 HSPLjava/util/LinkedHashSet;-><init>()V
+HSPLjava/util/LinkedHashSet;-><init>(I)V
 HSPLjava/util/LinkedHashSet;-><init>(Ljava/util/Collection;)V
-PLjava/util/LinkedList$LLSpliterator;->characteristics()I
-PLjava/util/LinkedList$LLSpliterator;->estimateSize()J
-PLjava/util/LinkedList$LLSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/LinkedList$ListItr;->add(Ljava/lang/Object;)V
+HSPLjava/util/LinkedList$ListItr;-><init>(Ljava/util/LinkedList;I)V
+HSPLjava/util/LinkedList$ListItr;->checkForComodification()V
 HSPLjava/util/LinkedList$ListItr;->hasNext()Z
 HSPLjava/util/LinkedList$ListItr;->hasPrevious()Z
 HSPLjava/util/LinkedList$ListItr;->next()Ljava/lang/Object;
 HSPLjava/util/LinkedList$ListItr;->previous()Ljava/lang/Object;
 HSPLjava/util/LinkedList$ListItr;->remove()V
+HSPLjava/util/LinkedList$Node;-><init>(Ljava/util/LinkedList$Node;Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
 HSPLjava/util/LinkedList;-><init>()V
 HSPLjava/util/LinkedList;-><init>(Ljava/util/Collection;)V
-HSPLjava/util/LinkedList;->add(ILjava/lang/Object;)V
 HSPLjava/util/LinkedList;->add(Ljava/lang/Object;)Z
 HSPLjava/util/LinkedList;->addAll(ILjava/util/Collection;)Z
 HSPLjava/util/LinkedList;->addAll(Ljava/util/Collection;)Z
 HSPLjava/util/LinkedList;->addFirst(Ljava/lang/Object;)V
 HSPLjava/util/LinkedList;->addLast(Ljava/lang/Object;)V
+HSPLjava/util/LinkedList;->checkElementIndex(I)V
+HSPLjava/util/LinkedList;->checkPositionIndex(I)V
 HSPLjava/util/LinkedList;->clear()V
 HSPLjava/util/LinkedList;->clone()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->contains(Ljava/lang/Object;)Z
@@ -29061,78 +19505,63 @@
 HSPLjava/util/LinkedList;->getFirst()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->getLast()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->indexOf(Ljava/lang/Object;)I
-HSPLjava/util/LinkedList;->linkBefore(Ljava/lang/Object;Ljava/util/LinkedList$Node;)V
+HSPLjava/util/LinkedList;->isElementIndex(I)Z
+HSPLjava/util/LinkedList;->isPositionIndex(I)Z
+HSPLjava/util/LinkedList;->linkFirst(Ljava/lang/Object;)V
 HSPLjava/util/LinkedList;->linkLast(Ljava/lang/Object;)V
 HSPLjava/util/LinkedList;->listIterator(I)Ljava/util/ListIterator;
 HSPLjava/util/LinkedList;->node(I)Ljava/util/LinkedList$Node;
 HSPLjava/util/LinkedList;->offer(Ljava/lang/Object;)Z
-HSPLjava/util/LinkedList;->offerFirst(Ljava/lang/Object;)Z
 HSPLjava/util/LinkedList;->peek()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->peekLast()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->poll()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->pollLast()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->pop()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->push(Ljava/lang/Object;)V
 HSPLjava/util/LinkedList;->remove()Ljava/lang/Object;
 HSPLjava/util/LinkedList;->remove(I)Ljava/lang/Object;
 HSPLjava/util/LinkedList;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/LinkedList;->removeFirst()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->removeLast()Ljava/lang/Object;
-HSPLjava/util/LinkedList;->set(ILjava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/LinkedList;->size()I
-HPLjava/util/LinkedList;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/LinkedList;->superClone()Ljava/util/LinkedList;
 HSPLjava/util/LinkedList;->toArray()[Ljava/lang/Object;
 HSPLjava/util/LinkedList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/LinkedList;->unlink(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
-HSPLjava/util/List;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/Locale$Builder;-><init>()V
-HSPLjava/util/Locale$Builder;->build()Ljava/util/Locale;
-HSPLjava/util/Locale$Builder;->setLanguage(Ljava/lang/String;)Ljava/util/Locale$Builder;
+HSPLjava/util/LinkedList;->unlinkFirst(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
+HSPLjava/util/LinkedList;->unlinkLast(Ljava/util/LinkedList$Node;)Ljava/lang/Object;
 HSPLjava/util/Locale$Cache;->createObject(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/Locale$Cache;->createObject(Ljava/util/Locale$LocaleKey;)Ljava/util/Locale;
-HSPLjava/util/Locale$Category;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLjava/util/Locale$Category;->values()[Ljava/util/Locale$Category;
-HSPLjava/util/Locale$FilteringMode;-><init>(Ljava/lang/String;I)V
-HSPLjava/util/Locale$LanguageRange;-><init>(Ljava/lang/String;D)V
-HSPLjava/util/Locale$LanguageRange;->isSubtagIllFormed(Ljava/lang/String;Z)Z
-HSPLjava/util/Locale$LanguageRange;->parse(Ljava/lang/String;)Ljava/util/List;
+HSPLjava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
+HSPLjava/util/Locale$LocaleKey;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
+HSPLjava/util/Locale$LocaleKey;->access$200(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/BaseLocale;
+HSPLjava/util/Locale$LocaleKey;->access$300(Ljava/util/Locale$LocaleKey;)Lsun/util/locale/LocaleExtensions;
 HSPLjava/util/Locale$LocaleKey;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/Locale$LocaleKey;->hashCode()I
 HSPLjava/util/Locale;-><init>(Ljava/lang/String;)V
 HSPLjava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/Locale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)V
+HSPLjava/util/Locale;-><init>(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;Ljava/util/Locale$1;)V
 HSPLjava/util/Locale;->adjustLanguageCode(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Locale;->clone()Ljava/lang/Object;
+HSPLjava/util/Locale;->convertOldISOCodes(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Locale;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/Locale;->forLanguageTag(Ljava/lang/String;)Ljava/util/Locale;
 HSPLjava/util/Locale;->getCompatibilityExtensions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/LocaleExtensions;
 HSPLjava/util/Locale;->getCountry()Ljava/lang/String;
 HSPLjava/util/Locale;->getDefault()Ljava/util/Locale;
 HSPLjava/util/Locale;->getDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;
-HSPLjava/util/Locale;->getDisplayLanguage(Ljava/util/Locale;)Ljava/lang/String;
 HSPLjava/util/Locale;->getExtensionKeys()Ljava/util/Set;
-HSPLjava/util/Locale;->getISO3Country()Ljava/lang/String;
-HSPLjava/util/Locale;->getISO3Language()Ljava/lang/String;
-HSPLjava/util/Locale;->getISOCountries()[Ljava/lang/String;
-HSPLjava/util/Locale;->getISOLanguages()[Ljava/lang/String;
+HSPLjava/util/Locale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
+HSPLjava/util/Locale;->getInstance(Lsun/util/locale/BaseLocale;Lsun/util/locale/LocaleExtensions;)Ljava/util/Locale;
 HSPLjava/util/Locale;->getLanguage()Ljava/lang/String;
 HSPLjava/util/Locale;->getScript()Ljava/lang/String;
 HSPLjava/util/Locale;->getVariant()Ljava/lang/String;
+HSPLjava/util/Locale;->hasExtensions()Z
 HSPLjava/util/Locale;->hashCode()I
-HSPLjava/util/Locale;->initDefault()Ljava/util/Locale;
-HSPLjava/util/Locale;->initDefault(Ljava/util/Locale$Category;)Ljava/util/Locale;
 HSPLjava/util/Locale;->isValidBcp47Alpha(Ljava/lang/String;II)Z
-HSPLjava/util/Locale;->lookup(Ljava/util/List;Ljava/util/Collection;)Ljava/util/Locale;
-HSPLjava/util/Locale;->normalizeAndValidateLanguage(Ljava/lang/String;Z)Ljava/lang/String;
 HSPLjava/util/Locale;->setDefault(Ljava/util/Locale$Category;Ljava/util/Locale;)V
 HSPLjava/util/Locale;->setDefault(Ljava/util/Locale;)V
 HSPLjava/util/Locale;->toLanguageTag()Ljava/lang/String;
 HSPLjava/util/Locale;->toString()Ljava/lang/String;
 HSPLjava/util/Map;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
-HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V
 HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/Map;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/MissingResourceException;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/NoSuchElementException;-><init>()V
 HSPLjava/util/Objects;->equals(Ljava/lang/Object;Ljava/lang/Object;)Z
@@ -29144,13 +19573,7 @@
 HSPLjava/util/Objects;->toString(Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Observable;-><init>()V
 HSPLjava/util/Observable;->addObserver(Ljava/util/Observer;)V
-HSPLjava/util/Observable;->clearChanged()V
-HSPLjava/util/Observable;->deleteObserver(Ljava/util/Observer;)V
-HSPLjava/util/Observable;->hasChanged()Z
-HSPLjava/util/Observable;->notifyObservers()V
-HSPLjava/util/Observable;->notifyObservers(Ljava/lang/Object;)V
-HSPLjava/util/Observable;->setChanged()V
-HSPLjava/util/Optional;-><init>()V
+HSPLjava/util/Optional;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/Optional;->empty()Ljava/util/Optional;
 HSPLjava/util/Optional;->get()Ljava/lang/Object;
 HSPLjava/util/Optional;->ifPresent(Ljava/util/function/Consumer;)V
@@ -29159,41 +19582,42 @@
 HSPLjava/util/Optional;->of(Ljava/lang/Object;)Ljava/util/Optional;
 HSPLjava/util/Optional;->ofNullable(Ljava/lang/Object;)Ljava/util/Optional;
 HSPLjava/util/Optional;->orElse(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/PriorityQueue$Itr;-><init>(Ljava/util/PriorityQueue;)V
+HSPLjava/util/PriorityQueue$Itr;-><init>(Ljava/util/PriorityQueue;Ljava/util/PriorityQueue$1;)V
 HSPLjava/util/PriorityQueue$Itr;->hasNext()Z
 HSPLjava/util/PriorityQueue$Itr;->next()Ljava/lang/Object;
 HSPLjava/util/PriorityQueue$Itr;->remove()V
 HSPLjava/util/PriorityQueue;-><init>()V
 HSPLjava/util/PriorityQueue;-><init>(ILjava/util/Comparator;)V
 HSPLjava/util/PriorityQueue;->add(Ljava/lang/Object;)Z
-HSPLjava/util/PriorityQueue;->clear()V
 HSPLjava/util/PriorityQueue;->grow(I)V
+HSPLjava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I
 HSPLjava/util/PriorityQueue;->iterator()Ljava/util/Iterator;
 HSPLjava/util/PriorityQueue;->offer(Ljava/lang/Object;)Z
 HSPLjava/util/PriorityQueue;->peek()Ljava/lang/Object;
 HSPLjava/util/PriorityQueue;->poll()Ljava/lang/Object;
 HSPLjava/util/PriorityQueue;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/PriorityQueue;->removeAt(I)Ljava/lang/Object;
+HSPLjava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V
 HSPLjava/util/PriorityQueue;->siftDownComparable(ILjava/lang/Object;)V
 HSPLjava/util/PriorityQueue;->siftDownUsingComparator(ILjava/lang/Object;)V
+HSPLjava/util/PriorityQueue;->siftUp(ILjava/lang/Object;)V
+HSPLjava/util/PriorityQueue;->siftUpComparable(ILjava/lang/Object;)V
+HSPLjava/util/PriorityQueue;->siftUpUsingComparator(ILjava/lang/Object;)V
 HSPLjava/util/PriorityQueue;->size()I
+HSPLjava/util/Properties$LineReader;-><init>(Ljava/util/Properties;Ljava/io/InputStream;)V
 HSPLjava/util/Properties$LineReader;->readLine()I
 HSPLjava/util/Properties;-><init>()V
-HSPLjava/util/Properties;->enumerate(Ljava/util/Hashtable;)V
-HSPLjava/util/Properties;->enumerateStringProperties(Ljava/util/Hashtable;)V
+HSPLjava/util/Properties;-><init>(Ljava/util/Properties;)V
 HSPLjava/util/Properties;->getProperty(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Properties;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/Properties;->load(Ljava/io/InputStream;)V
 HSPLjava/util/Properties;->load0(Ljava/util/Properties$LineReader;)V
 HSPLjava/util/Properties;->loadConvert([CII[C)Ljava/lang/String;
-HSPLjava/util/Properties;->propertyNames()Ljava/util/Enumeration;
-HSPLjava/util/Properties;->saveConvert(Ljava/lang/String;ZZ)Ljava/lang/String;
 HSPLjava/util/Properties;->setProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
-HSPLjava/util/Properties;->store(Ljava/io/OutputStream;Ljava/lang/String;)V
-HSPLjava/util/Properties;->store0(Ljava/io/BufferedWriter;Ljava/lang/String;Z)V
-HSPLjava/util/Properties;->stringPropertyNames()Ljava/util/Set;
-HSPLjava/util/Properties;->writeComments(Ljava/io/BufferedWriter;Ljava/lang/String;)V
 HSPLjava/util/Random;-><init>()V
 HSPLjava/util/Random;-><init>(J)V
+HSPLjava/util/Random;->initialScramble(J)J
 HSPLjava/util/Random;->next(I)I
 HSPLjava/util/Random;->nextBytes([B)V
 HSPLjava/util/Random;->nextDouble()D
@@ -29202,67 +19626,62 @@
 HSPLjava/util/Random;->nextInt()I
 HSPLjava/util/Random;->nextInt(I)I
 HSPLjava/util/Random;->nextLong()J
+HSPLjava/util/Random;->seedUniquifier()J
 HSPLjava/util/Random;->setSeed(J)V
+HSPLjava/util/RegularEnumSet$EnumSetIterator;-><init>(Ljava/util/RegularEnumSet;)V
 HSPLjava/util/RegularEnumSet$EnumSetIterator;->hasNext()Z
 HSPLjava/util/RegularEnumSet$EnumSetIterator;->next()Ljava/lang/Enum;
 HSPLjava/util/RegularEnumSet$EnumSetIterator;->next()Ljava/lang/Object;
+HSPLjava/util/RegularEnumSet;-><init>(Ljava/lang/Class;[Ljava/lang/Enum;)V
+HSPLjava/util/RegularEnumSet;->access$000(Ljava/util/RegularEnumSet;)J
 HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Enum;)Z
 HSPLjava/util/RegularEnumSet;->add(Ljava/lang/Object;)Z
 HSPLjava/util/RegularEnumSet;->addAll()V
-HSPLjava/util/RegularEnumSet;->complement()V
 HSPLjava/util/RegularEnumSet;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/RegularEnumSet;->isEmpty()Z
 HSPLjava/util/RegularEnumSet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/RegularEnumSet;->size()I
-HSPLjava/util/ResourceBundle$1;-><init>()V
+HSPLjava/util/ResourceBundle;-><init>()V
 HSPLjava/util/ResourceBundle;->getObject(Ljava/lang/String;)Ljava/lang/Object;
 HSPLjava/util/ResourceBundle;->getString(Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/util/ResourceBundle;->getStringArray(Ljava/lang/String;)[Ljava/lang/String;
+HSPLjava/util/Scanner$1;-><init>(Ljava/util/Scanner;I)V
 HSPLjava/util/Scanner$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/Scanner$1;->create(Ljava/lang/String;)Ljava/util/regex/Pattern;
-HSPLjava/util/Scanner;-><init>(Ljava/io/File;)V
 HSPLjava/util/Scanner;-><init>(Ljava/lang/Readable;Ljava/util/regex/Pattern;)V
-HSPLjava/util/Scanner;->buildIntegerPatternString()Ljava/lang/String;
-HSPLjava/util/Scanner;->close()V
-HSPLjava/util/Scanner;->findPatternInBuffer(Ljava/util/regex/Pattern;I)Ljava/lang/String;
-HSPLjava/util/Scanner;->findWithinHorizon(Ljava/util/regex/Pattern;I)Ljava/lang/String;
+HSPLjava/util/Scanner;->clearCaches()V
+HSPLjava/util/Scanner;->ensureOpen()V
 HSPLjava/util/Scanner;->getCompleteTokenInBuffer(Ljava/util/regex/Pattern;)Ljava/lang/String;
-HSPLjava/util/Scanner;->next(Ljava/util/regex/Pattern;)Ljava/lang/String;
-HSPLjava/util/Scanner;->nextLine()Ljava/lang/String;
-HSPLjava/util/Scanner;->nextLong()J
-HSPLjava/util/Scanner;->nextLong(I)J
+HSPLjava/util/Scanner;->hasNext()Z
+HSPLjava/util/Scanner;->hasTokenInBuffer()Z
+HSPLjava/util/Scanner;->makeSpace()Z
+HSPLjava/util/Scanner;->next()Ljava/lang/String;
 HSPLjava/util/Scanner;->readInput()V
-HSPLjava/util/Scanner;->setRadix(I)V
+HSPLjava/util/Scanner;->revertState(Z)Z
+HSPLjava/util/Scanner;->saveState()V
+HSPLjava/util/Scanner;->translateSavedIndexes(I)V
+HSPLjava/util/Scanner;->useDelimiter(Ljava/lang/String;)Ljava/util/Scanner;
 HSPLjava/util/Scanner;->useLocale(Ljava/util/Locale;)Ljava/util/Scanner;
-HSPLjava/util/ServiceLoader$LazyIterator;->hasNext()Z
-HSPLjava/util/ServiceLoader$LazyIterator;->hasNextService()Z
-HSPLjava/util/ServiceLoader;-><init>(Ljava/lang/Class;Ljava/lang/ClassLoader;)V
-HSPLjava/util/ServiceLoader;->loadFromSystemProperty(Ljava/lang/Class;)Ljava/lang/Object;
 HSPLjava/util/Set;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/SimpleTimeZone;-><init>(ILjava/lang/String;)V
 HSPLjava/util/SimpleTimeZone;->clone()Ljava/lang/Object;
 HSPLjava/util/SimpleTimeZone;->getOffset(J)I
 HSPLjava/util/SimpleTimeZone;->getOffsets(J[I)I
 HSPLjava/util/SimpleTimeZone;->getRawOffset()I
+HSPLjava/util/SimpleTimeZone;->hasSameRules(Ljava/util/TimeZone;)Z
 HSPLjava/util/Spliterator$OfInt;->forEachRemaining(Ljava/util/function/Consumer;)V
 HSPLjava/util/Spliterator;->getExactSizeIfKnown()J
+HSPLjava/util/Spliterators$ArraySpliterator;-><init>([Ljava/lang/Object;III)V
 HSPLjava/util/Spliterators$ArraySpliterator;->characteristics()I
 HSPLjava/util/Spliterators$ArraySpliterator;->estimateSize()J
 HSPLjava/util/Spliterators$ArraySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
 HSPLjava/util/Spliterators$ArraySpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
-HSPLjava/util/Spliterators$EmptySpliterator$OfRef;->forEachRemaining(Ljava/util/function/Consumer;)V
-HPLjava/util/Spliterators$EmptySpliterator$OfRef;->tryAdvance(Ljava/util/function/Consumer;)Z
-HSPLjava/util/Spliterators$EmptySpliterator;->characteristics()I
-HSPLjava/util/Spliterators$EmptySpliterator;->estimateSize()J
-HSPLjava/util/Spliterators$IntArraySpliterator;->characteristics()I
-HSPLjava/util/Spliterators$IntArraySpliterator;->estimateSize()J
-HSPLjava/util/Spliterators$IntArraySpliterator;->forEachRemaining(Ljava/util/function/IntConsumer;)V
-HSPLjava/util/Spliterators$IntArraySpliterator;->tryAdvance(Ljava/util/function/IntConsumer;)Z
+HSPLjava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
 HSPLjava/util/Spliterators$IteratorSpliterator;->characteristics()I
 HSPLjava/util/Spliterators$IteratorSpliterator;->estimateSize()J
 HSPLjava/util/Spliterators$IteratorSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
 HSPLjava/util/Spliterators$IteratorSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
 HSPLjava/util/Spliterators;->checkFromToBounds(III)V
+HSPLjava/util/Spliterators;->spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator;
+HSPLjava/util/Spliterators;->spliterator([Ljava/lang/Object;III)Ljava/util/Spliterator;
 HSPLjava/util/Stack;-><init>()V
 HSPLjava/util/Stack;->empty()Z
 HSPLjava/util/Stack;->peek()Ljava/lang/Object;
@@ -29271,26 +19690,24 @@
 HSPLjava/util/StringJoiner;-><init>(Ljava/lang/CharSequence;)V
 HSPLjava/util/StringJoiner;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
 HSPLjava/util/StringJoiner;->add(Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
+HSPLjava/util/StringJoiner;->prepareBuilder()Ljava/lang/StringBuilder;
 HSPLjava/util/StringJoiner;->toString()Ljava/lang/String;
 HSPLjava/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLjava/util/StringTokenizer;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLjava/util/StringTokenizer;->countTokens()I
 HSPLjava/util/StringTokenizer;->hasMoreTokens()Z
 HSPLjava/util/StringTokenizer;->nextToken()Ljava/lang/String;
 HSPLjava/util/StringTokenizer;->scanToken(I)I
 HSPLjava/util/StringTokenizer;->setMaxDelimCodePoint()V
 HSPLjava/util/StringTokenizer;->skipDelimiters(I)I
-HSPLjava/util/SubList$1;->hasNext()Z
-HSPLjava/util/SubList$1;->next()Ljava/lang/Object;
-HSPLjava/util/SubList$1;->nextIndex()I
-HSPLjava/util/SubList;-><init>(Ljava/util/AbstractList;II)V
-HSPLjava/util/SubList;->iterator()Ljava/util/Iterator;
-HSPLjava/util/SubList;->listIterator(I)Ljava/util/ListIterator;
-HSPLjava/util/SubList;->size()I
+HSPLjava/util/TaskQueue;-><init>()V
 HSPLjava/util/TaskQueue;->add(Ljava/util/TimerTask;)V
 HSPLjava/util/TaskQueue;->clear()V
 HSPLjava/util/TaskQueue;->fixDown(I)V
 HSPLjava/util/TaskQueue;->fixUp(I)V
 HSPLjava/util/TaskQueue;->getMin()Ljava/util/TimerTask;
 HSPLjava/util/TaskQueue;->isEmpty()Z
+HSPLjava/util/TaskQueue;->removeMin()V
 HSPLjava/util/TimSort;-><init>([Ljava/lang/Object;Ljava/util/Comparator;[Ljava/lang/Object;II)V
 HSPLjava/util/TimSort;->binarySort([Ljava/lang/Object;IIILjava/util/Comparator;)V
 HSPLjava/util/TimSort;->countRunAndMakeAscending([Ljava/lang/Object;IILjava/util/Comparator;)I
@@ -29299,9 +19716,15 @@
 HSPLjava/util/TimSort;->gallopRight(Ljava/lang/Object;[Ljava/lang/Object;IIILjava/util/Comparator;)I
 HSPLjava/util/TimSort;->mergeAt(I)V
 HSPLjava/util/TimSort;->mergeCollapse()V
+HSPLjava/util/TimSort;->mergeForceCollapse()V
 HSPLjava/util/TimSort;->mergeHi(IIII)V
 HSPLjava/util/TimSort;->mergeLo(IIII)V
+HSPLjava/util/TimSort;->minRunLength(I)I
+HSPLjava/util/TimSort;->pushRun(II)V
+HSPLjava/util/TimSort;->reverseRange([Ljava/lang/Object;II)V
 HSPLjava/util/TimSort;->sort([Ljava/lang/Object;IILjava/util/Comparator;[Ljava/lang/Object;II)V
+HSPLjava/util/TimeZone;-><init>()V
+HSPLjava/util/TimeZone;->appendNumber(Ljava/lang/StringBuilder;II)V
 HSPLjava/util/TimeZone;->clone()Ljava/lang/Object;
 HSPLjava/util/TimeZone;->createGmtOffsetString(ZZI)Ljava/lang/String;
 HSPLjava/util/TimeZone;->getAvailableIDs()[Ljava/lang/String;
@@ -29313,108 +19736,121 @@
 HSPLjava/util/TimeZone;->setDefault(Ljava/util/TimeZone;)V
 HSPLjava/util/TimeZone;->setID(Ljava/lang/String;)V
 HSPLjava/util/TimeZone;->toZoneId()Ljava/time/ZoneId;
+HSPLjava/util/Timer$1;-><init>(Ljava/util/Timer;)V
 HSPLjava/util/Timer$1;->finalize()V
 HSPLjava/util/Timer;-><init>()V
 HSPLjava/util/Timer;-><init>(Ljava/lang/String;)V
+HSPLjava/util/Timer;->access$000(Ljava/util/Timer;)Ljava/util/TaskQueue;
+HSPLjava/util/Timer;->access$100(Ljava/util/Timer;)Ljava/util/TimerThread;
 HSPLjava/util/Timer;->cancel()V
 HSPLjava/util/Timer;->sched(Ljava/util/TimerTask;JJ)V
 HSPLjava/util/Timer;->schedule(Ljava/util/TimerTask;J)V
+HSPLjava/util/Timer;->serialNumber()I
 HSPLjava/util/TimerTask;-><init>()V
+HSPLjava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V
 HSPLjava/util/TimerThread;->mainLoop()V
 HSPLjava/util/TimerThread;->run()V
+HSPLjava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;-><init>(Ljava/util/TreeMap$AscendingSubMap;)V
 HSPLjava/util/TreeMap$AscendingSubMap$AscendingEntrySetView;->iterator()Ljava/util/Iterator;
-HSPLjava/util/TreeMap$AscendingSubMap;->comparator()Ljava/util/Comparator;
+HSPLjava/util/TreeMap$AscendingSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
 HSPLjava/util/TreeMap$AscendingSubMap;->entrySet()Ljava/util/Set;
-HSPLjava/util/TreeMap$AscendingSubMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;
 HSPLjava/util/TreeMap$AscendingSubMap;->keyIterator()Ljava/util/Iterator;
-HSPLjava/util/TreeMap$AscendingSubMap;->subHighest()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap$EntryIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/lang/Object;
+HSPLjava/util/TreeMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/TreeMap$EntrySet;-><init>(Ljava/util/TreeMap;)V
 HSPLjava/util/TreeMap$EntrySet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/TreeMap$EntrySet;->size()I
+HSPLjava/util/TreeMap$KeyIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$KeyIterator;->next()Ljava/lang/Object;
-HSPLjava/util/TreeMap$KeySet;->isEmpty()Z
+HSPLjava/util/TreeMap$KeySet;-><init>(Ljava/util/NavigableMap;)V
 HSPLjava/util/TreeMap$KeySet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->isEmpty()Z
-HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;->size()I
+HSPLjava/util/TreeMap$NavigableSubMap$EntrySetView;-><init>(Ljava/util/TreeMap$NavigableSubMap;)V
+HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;-><init>(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->next()Ljava/lang/Object;
-HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->remove()V
+HSPLjava/util/TreeMap$NavigableSubMap$SubMapEntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;-><init>(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->hasNext()Z
 HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap$NavigableSubMap$SubMapIterator;->removeAscending()V
-HSPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;->next()Ljava/lang/Object;
+HSPLjava/util/TreeMap$NavigableSubMap$SubMapKeyIterator;-><init>(Ljava/util/TreeMap$NavigableSubMap;Ljava/util/TreeMap$TreeMapEntry;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$NavigableSubMap;-><init>(Ljava/util/TreeMap;ZLjava/lang/Object;ZZLjava/lang/Object;Z)V
-HSPLjava/util/TreeMap$NavigableSubMap;->absHighest()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap$NavigableSubMap;->absHighFence()Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap$NavigableSubMap;->absLowest()Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap$NavigableSubMap;->isEmpty()Z
-HSPLjava/util/TreeMap$NavigableSubMap;->lastKey()Ljava/lang/Object;
 HSPLjava/util/TreeMap$NavigableSubMap;->navigableKeySet()Ljava/util/NavigableSet;
-HSPLjava/util/TreeMap$NavigableSubMap;->size()I
+HSPLjava/util/TreeMap$NavigableSubMap;->tooHigh(Ljava/lang/Object;)Z
+HSPLjava/util/TreeMap$PrivateEntryIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$PrivateEntryIterator;->hasNext()Z
 HSPLjava/util/TreeMap$PrivateEntryIterator;->nextEntry()Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap$PrivateEntryIterator;->remove()V
+HSPLjava/util/TreeMap$TreeMapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$TreeMapEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/TreeMap$TreeMapEntry;->getValue()Ljava/lang/Object;
+HSPLjava/util/TreeMap$ValueIterator;-><init>(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap$ValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/TreeMap$Values;-><init>(Ljava/util/TreeMap;)V
 HSPLjava/util/TreeMap$Values;->iterator()Ljava/util/Iterator;
 HSPLjava/util/TreeMap$Values;->size()I
 HSPLjava/util/TreeMap;-><init>()V
 HSPLjava/util/TreeMap;-><init>(Ljava/util/Comparator;)V
+HSPLjava/util/TreeMap;->access$000(Ljava/util/TreeMap;Ljava/util/TreeMap$TreeMapEntry;)V
+HSPLjava/util/TreeMap;->access$100(Ljava/util/TreeMap;)I
+HSPLjava/util/TreeMap;->access$200()Ljava/lang/Object;
 HSPLjava/util/TreeMap;->buildFromSorted(IIIILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V
 HSPLjava/util/TreeMap;->ceilingEntry(Ljava/lang/Object;)Ljava/util/Map$Entry;
 HSPLjava/util/TreeMap;->ceilingKey(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/TreeMap;->clear()V
 HSPLjava/util/TreeMap;->clone()Ljava/lang/Object;
+HSPLjava/util/TreeMap;->colorOf(Ljava/util/TreeMap$TreeMapEntry;)Z
 HSPLjava/util/TreeMap;->comparator()Ljava/util/Comparator;
+HSPLjava/util/TreeMap;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLjava/util/TreeMap;->computeRedLevel(I)I
 HSPLjava/util/TreeMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/TreeMap;->deleteEntry(Ljava/util/TreeMap$TreeMapEntry;)V
-HSPLjava/util/TreeMap;->descendingMap()Ljava/util/NavigableMap;
 HSPLjava/util/TreeMap;->entrySet()Ljava/util/Set;
+HSPLjava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry;
 HSPLjava/util/TreeMap;->firstKey()Ljava/lang/Object;
 HSPLjava/util/TreeMap;->fixAfterDeletion(Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap;->fixAfterInsertion(Ljava/util/TreeMap$TreeMapEntry;)V
-HSPLjava/util/TreeMap;->floorKey(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/TreeMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/TreeMap;->getCeilingEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->getEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap;->getFloorEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap;->getHigherEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap;->getLowerEntry(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap;->headMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;
+HSPLjava/util/TreeMap;->getEntryUsingComparator(Ljava/lang/Object;)Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap;->getFirstEntry()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry;
+HSPLjava/util/TreeMap;->key(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
 HSPLjava/util/TreeMap;->keyIterator()Ljava/util/Iterator;
+HSPLjava/util/TreeMap;->keyOrNull(Ljava/util/TreeMap$TreeMapEntry;)Ljava/lang/Object;
 HSPLjava/util/TreeMap;->keySet()Ljava/util/Set;
 HSPLjava/util/TreeMap;->lastKey()Ljava/lang/Object;
+HSPLjava/util/TreeMap;->leftOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->navigableKeySet()Ljava/util/NavigableSet;
+HSPLjava/util/TreeMap;->parentOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V
 HSPLjava/util/TreeMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/TreeMap;->rightOf(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->rotateLeft(Ljava/util/TreeMap$TreeMapEntry;)V
 HSPLjava/util/TreeMap;->rotateRight(Ljava/util/TreeMap$TreeMapEntry;)V
+HSPLjava/util/TreeMap;->setColor(Ljava/util/TreeMap$TreeMapEntry;Z)V
 HSPLjava/util/TreeMap;->size()I
 HSPLjava/util/TreeMap;->subMap(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableMap;
-HSPLjava/util/TreeMap;->tailMap(Ljava/lang/Object;Z)Ljava/util/NavigableMap;
+HSPLjava/util/TreeMap;->successor(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/TreeMap$TreeMapEntry;
 HSPLjava/util/TreeMap;->values()Ljava/util/Collection;
 HSPLjava/util/TreeSet;-><init>()V
 HSPLjava/util/TreeSet;-><init>(Ljava/util/Collection;)V
 HSPLjava/util/TreeSet;-><init>(Ljava/util/Comparator;)V
+HSPLjava/util/TreeSet;-><init>(Ljava/util/NavigableMap;)V
 HSPLjava/util/TreeSet;->add(Ljava/lang/Object;)Z
 HSPLjava/util/TreeSet;->addAll(Ljava/util/Collection;)Z
 HSPLjava/util/TreeSet;->clear()V
-HSPLjava/util/TreeSet;->comparator()Ljava/util/Comparator;
 HSPLjava/util/TreeSet;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/TreeSet;->first()Ljava/lang/Object;
-HSPLjava/util/TreeSet;->headSet(Ljava/lang/Object;)Ljava/util/SortedSet;
-HSPLjava/util/TreeSet;->headSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
 HSPLjava/util/TreeSet;->isEmpty()Z
 HSPLjava/util/TreeSet;->iterator()Ljava/util/Iterator;
-HSPLjava/util/TreeSet;->last()Ljava/lang/Object;
 HSPLjava/util/TreeSet;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/TreeSet;->size()I
-HSPLjava/util/TreeSet;->subSet(Ljava/lang/Object;ZLjava/lang/Object;Z)Ljava/util/NavigableSet;
-HSPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;)Ljava/util/SortedSet;
-HSPLjava/util/TreeSet;->tailSet(Ljava/lang/Object;Z)Ljava/util/NavigableSet;
 HSPLjava/util/UUID;-><init>(JJ)V
 HSPLjava/util/UUID;-><init>([B)V
-HSPLjava/util/UUID;->compareTo(Ljava/lang/Object;)I
-HSPLjava/util/UUID;->compareTo(Ljava/util/UUID;)I
+HSPLjava/util/UUID;->digits(JI)Ljava/lang/String;
 HSPLjava/util/UUID;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/UUID;->fromString(Ljava/lang/String;)Ljava/util/UUID;
 HSPLjava/util/UUID;->getLeastSignificantBits()J
@@ -29422,13 +19858,16 @@
 HSPLjava/util/UUID;->hashCode()I
 HSPLjava/util/UUID;->randomUUID()Ljava/util/UUID;
 HSPLjava/util/UUID;->toString()Ljava/lang/String;
+HSPLjava/util/Vector$1;-><init>(Ljava/util/Vector;)V
 HSPLjava/util/Vector$1;->hasMoreElements()Z
 HSPLjava/util/Vector$1;->nextElement()Ljava/lang/Object;
+HSPLjava/util/Vector$Itr;-><init>(Ljava/util/Vector;)V
+HSPLjava/util/Vector$Itr;-><init>(Ljava/util/Vector;Ljava/util/Vector$1;)V
 HSPLjava/util/Vector$Itr;->checkForComodification()V
 HSPLjava/util/Vector$Itr;->hasNext()Z
 HSPLjava/util/Vector$Itr;->next()Ljava/lang/Object;
-HPLjava/util/Vector$Itr;->remove()V
 HSPLjava/util/Vector;-><init>()V
+HSPLjava/util/Vector;-><init>(I)V
 HSPLjava/util/Vector;-><init>(II)V
 HSPLjava/util/Vector;->add(Ljava/lang/Object;)Z
 HSPLjava/util/Vector;->addElement(Ljava/lang/Object;)V
@@ -29438,31 +19877,39 @@
 HSPLjava/util/Vector;->elementAt(I)Ljava/lang/Object;
 HSPLjava/util/Vector;->elementData(I)Ljava/lang/Object;
 HSPLjava/util/Vector;->elements()Ljava/util/Enumeration;
+HSPLjava/util/Vector;->ensureCapacityHelper(I)V
 HSPLjava/util/Vector;->get(I)Ljava/lang/Object;
 HSPLjava/util/Vector;->grow(I)V
-HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;)I
 HSPLjava/util/Vector;->indexOf(Ljava/lang/Object;I)I
 HSPLjava/util/Vector;->isEmpty()Z
 HSPLjava/util/Vector;->iterator()Ljava/util/Iterator;
-HSPLjava/util/Vector;->remove(I)Ljava/lang/Object;
 HSPLjava/util/Vector;->removeAllElements()V
-HSPLjava/util/Vector;->removeElement(Ljava/lang/Object;)Z
 HSPLjava/util/Vector;->removeElementAt(I)V
 HSPLjava/util/Vector;->size()I
 HSPLjava/util/Vector;->sort(Ljava/util/Comparator;)V
 HSPLjava/util/Vector;->toArray()[Ljava/lang/Object;
 HSPLjava/util/Vector;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/WeakHashMap$Entry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;ILjava/util/WeakHashMap$Entry;)V
 HSPLjava/util/WeakHashMap$Entry;->getKey()Ljava/lang/Object;
-HSPLjava/util/WeakHashMap$Entry;->getValue()Ljava/lang/Object;
-HSPLjava/util/WeakHashMap$EntryIterator;->next()Ljava/lang/Object;
-HSPLjava/util/WeakHashMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/WeakHashMap$EntryIterator;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$EntryIterator;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
+HSPLjava/util/WeakHashMap$EntrySet;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$EntrySet;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
 HSPLjava/util/WeakHashMap$EntrySet;->iterator()Ljava/util/Iterator;
+HSPLjava/util/WeakHashMap$HashIterator;-><init>(Ljava/util/WeakHashMap;)V
 HSPLjava/util/WeakHashMap$HashIterator;->hasNext()Z
 HSPLjava/util/WeakHashMap$HashIterator;->nextEntry()Ljava/util/WeakHashMap$Entry;
+HSPLjava/util/WeakHashMap$KeyIterator;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$KeyIterator;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
 HSPLjava/util/WeakHashMap$KeyIterator;->next()Ljava/lang/Object;
+HSPLjava/util/WeakHashMap$KeySet;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$KeySet;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
 HSPLjava/util/WeakHashMap$KeySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/WeakHashMap$KeySet;->size()I
-HSPLjava/util/WeakHashMap$ValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/WeakHashMap$ValueIterator;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$ValueIterator;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
+HSPLjava/util/WeakHashMap$Values;-><init>(Ljava/util/WeakHashMap;)V
+HSPLjava/util/WeakHashMap$Values;-><init>(Ljava/util/WeakHashMap;Ljava/util/WeakHashMap$1;)V
 HSPLjava/util/WeakHashMap$Values;->iterator()Ljava/util/Iterator;
 HSPLjava/util/WeakHashMap;-><init>()V
 HSPLjava/util/WeakHashMap;-><init>(I)V
@@ -29470,19 +19917,25 @@
 HSPLjava/util/WeakHashMap;->clear()V
 HSPLjava/util/WeakHashMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/WeakHashMap;->entrySet()Ljava/util/Set;
+HSPLjava/util/WeakHashMap;->eq(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLjava/util/WeakHashMap;->expungeStaleEntries()V
 HSPLjava/util/WeakHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/WeakHashMap;->getEntry(Ljava/lang/Object;)Ljava/util/WeakHashMap$Entry;
+HSPLjava/util/WeakHashMap;->getTable()[Ljava/util/WeakHashMap$Entry;
+HSPLjava/util/WeakHashMap;->hash(Ljava/lang/Object;)I
+HSPLjava/util/WeakHashMap;->indexFor(II)I
 HSPLjava/util/WeakHashMap;->isEmpty()Z
 HSPLjava/util/WeakHashMap;->keySet()Ljava/util/Set;
+HSPLjava/util/WeakHashMap;->maskNull(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/WeakHashMap;->newTable(I)[Ljava/util/WeakHashMap$Entry;
 HSPLjava/util/WeakHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/WeakHashMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/WeakHashMap;->resize(I)V
 HSPLjava/util/WeakHashMap;->size()I
 HSPLjava/util/WeakHashMap;->transfer([Ljava/util/WeakHashMap$Entry;[Ljava/util/WeakHashMap$Entry;)V
+HSPLjava/util/WeakHashMap;->unmaskNull(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/WeakHashMap;->values()Ljava/util/Collection;
 HSPLjava/util/concurrent/AbstractExecutorService;-><init>()V
-HSPLjava/util/concurrent/AbstractExecutorService;->invokeAll(Ljava/util/Collection;JLjava/util/concurrent/TimeUnit;)Ljava/util/List;
 HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/RunnableFuture;
 HSPLjava/util/concurrent/AbstractExecutorService;->newTaskFor(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/RunnableFuture;
 HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
@@ -29490,58 +19943,51 @@
 HSPLjava/util/concurrent/ArrayBlockingQueue;-><init>(I)V
 HSPLjava/util/concurrent/ArrayBlockingQueue;-><init>(IZ)V
 HSPLjava/util/concurrent/ArrayBlockingQueue;->dequeue()Ljava/lang/Object;
+HSPLjava/util/concurrent/ArrayBlockingQueue;->enqueue(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/ArrayBlockingQueue;->offer(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/ArrayBlockingQueue;->poll()Ljava/lang/Object;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ArrayBlockingQueue;->put(Ljava/lang/Object;)V
-HSPLjava/util/concurrent/ArrayBlockingQueue;->remainingCapacity()I
 HSPLjava/util/concurrent/ArrayBlockingQueue;->size()I
 HSPLjava/util/concurrent/ArrayBlockingQueue;->take()Ljava/lang/Object;
+HSPLjava/util/concurrent/CancellationException;-><init>()V
 HSPLjava/util/concurrent/CancellationException;-><init>(Ljava/lang/String;)V
-HSPLjava/util/concurrent/CompletableFuture$AltResult;-><init>(Ljava/lang/Throwable;)V
-HSPLjava/util/concurrent/CompletableFuture$Completion;->run()V
-HSPLjava/util/concurrent/CompletableFuture$Signaller;->block()Z
-HSPLjava/util/concurrent/CompletableFuture$Signaller;->isReleasable()Z
-HSPLjava/util/concurrent/CompletableFuture$Signaller;->tryFire(I)Ljava/util/concurrent/CompletableFuture;
+HSPLjava/util/concurrent/CompletableFuture$Completion;-><init>()V
+HSPLjava/util/concurrent/CompletableFuture$Signaller;-><init>(ZJJ)V
 HSPLjava/util/concurrent/CompletableFuture;-><init>()V
+HSPLjava/util/concurrent/CompletableFuture;->casStack(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)Z
 HSPLjava/util/concurrent/CompletableFuture;->complete(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/CompletableFuture;->completedFuture(Ljava/lang/Object;)Ljava/util/concurrent/CompletableFuture;
+HSPLjava/util/concurrent/CompletableFuture;->completeValue(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/CompletableFuture;->get()Ljava/lang/Object;
-HSPLjava/util/concurrent/CompletableFuture;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
-HSPLjava/util/concurrent/CompletableFuture;->isDone()Z
-HSPLjava/util/concurrent/CompletableFuture;->newIncompleteFuture()Ljava/util/concurrent/CompletableFuture;
+HSPLjava/util/concurrent/CompletableFuture;->lazySetNext(Ljava/util/concurrent/CompletableFuture$Completion;Ljava/util/concurrent/CompletableFuture$Completion;)V
 HSPLjava/util/concurrent/CompletableFuture;->postComplete()V
-HSPLjava/util/concurrent/CompletableFuture;->postFire(Ljava/util/concurrent/CompletableFuture;I)Ljava/util/concurrent/CompletableFuture;
-HSPLjava/util/concurrent/CompletableFuture;->reportGet(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/concurrent/CompletableFuture;->timedGet(J)Ljava/lang/Object;
-HSPLjava/util/concurrent/CompletableFuture;->uniWhenComplete(Ljava/util/concurrent/CompletableFuture;Ljava/util/function/BiConsumer;Ljava/util/concurrent/CompletableFuture$UniWhenComplete;)Z
-HSPLjava/util/concurrent/CompletableFuture;->uniWhenCompleteStage(Ljava/util/concurrent/Executor;Ljava/util/function/BiConsumer;)Ljava/util/concurrent/CompletableFuture;
+HSPLjava/util/concurrent/CompletableFuture;->tryPushStack(Ljava/util/concurrent/CompletableFuture$Completion;)Z
 HSPLjava/util/concurrent/CompletableFuture;->waitingGet(Z)Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->hasNext()Z
-HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;->remove()V
+HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->size()I
 HSPLjava/util/concurrent/ConcurrentHashMap$CollectionView;->toArray()[Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->next()Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentHashMap$EntryIterator;->next()Ljava/util/Map$Entry;
+HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;->iterator()Ljava/util/Iterator;
 HSPLjava/util/concurrent/ConcurrentHashMap$ForwardingNode;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+HSPLjava/util/concurrent/ConcurrentHashMap$KeyIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$KeyIterator;->next()Ljava/lang/Object;
-HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->add(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;Ljava/lang/Object;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->iterator()Ljava/util/Iterator;
-HSPLjava/util/concurrent/ConcurrentHashMap$KeySetView;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/concurrent/ConcurrentHashMap$KeySpliterator;->characteristics()I
-HSPLjava/util/concurrent/ConcurrentHashMap$KeySpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
+HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;->getKey()Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap$MapEntry;->getValue()Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentHashMap$Node;)V
+HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
 HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;->advance()Ljava/util/concurrent/ConcurrentHashMap$Node;
-HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;-><init>(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)V
-HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->balanceInsertion(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
 HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->find(ILjava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$Node;
-HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->putTreeVal(ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateLeft(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
-HSPLjava/util/concurrent/ConcurrentHashMap$TreeBin;->rotateRight(Ljava/util/concurrent/ConcurrentHashMap$TreeNode;Ljava/util/concurrent/ConcurrentHashMap$TreeNode;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
 HSPLjava/util/concurrent/ConcurrentHashMap$TreeNode;->findTreeNode(ILjava/lang/Object;Ljava/lang/Class;)Ljava/util/concurrent/ConcurrentHashMap$TreeNode;
+HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$ValueIterator;->next()Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentHashMap$ValuesView;-><init>(Ljava/util/concurrent/ConcurrentHashMap;)V
 HSPLjava/util/concurrent/ConcurrentHashMap$ValuesView;->iterator()Ljava/util/Iterator;
 HSPLjava/util/concurrent/ConcurrentHashMap;-><init>()V
 HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(I)V
@@ -29549,16 +19995,13 @@
 HSPLjava/util/concurrent/ConcurrentHashMap;->addCount(JI)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->casTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;Ljava/util/concurrent/ConcurrentHashMap$Node;)Z
 HSPLjava/util/concurrent/ConcurrentHashMap;->clear()V
-HSPLjava/util/concurrent/ConcurrentHashMap;->computeIfAbsent(Ljava/lang/Object;Ljava/util/function/Function;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap;->containsKey(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ConcurrentHashMap;->entrySet()Ljava/util/Set;
-HSPLjava/util/concurrent/ConcurrentHashMap;->fullAddCount(JZ)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap;->initTable()[Ljava/util/concurrent/ConcurrentHashMap$Node;
 HSPLjava/util/concurrent/ConcurrentHashMap;->isEmpty()Z
 HSPLjava/util/concurrent/ConcurrentHashMap;->keySet()Ljava/util/Set;
 HSPLjava/util/concurrent/ConcurrentHashMap;->mappingCount()J
-HSPLjava/util/concurrent/ConcurrentHashMap;->newKeySet()Ljava/util/concurrent/ConcurrentHashMap$KeySetView;
 HSPLjava/util/concurrent/ConcurrentHashMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap;->putIfAbsent(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentHashMap;->putVal(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
@@ -29568,44 +20011,57 @@
 HSPLjava/util/concurrent/ConcurrentHashMap;->resizeStamp(I)I
 HSPLjava/util/concurrent/ConcurrentHashMap;->setTabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;ILjava/util/concurrent/ConcurrentHashMap$Node;)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->size()I
+HSPLjava/util/concurrent/ConcurrentHashMap;->spread(I)I
+HSPLjava/util/concurrent/ConcurrentHashMap;->sumCount()J
 HSPLjava/util/concurrent/ConcurrentHashMap;->tabAt([Ljava/util/concurrent/ConcurrentHashMap$Node;I)Ljava/util/concurrent/ConcurrentHashMap$Node;
-HSPLjava/util/concurrent/ConcurrentHashMap;->toString()Ljava/lang/String;
+HSPLjava/util/concurrent/ConcurrentHashMap;->tableSizeFor(I)I
 HSPLjava/util/concurrent/ConcurrentHashMap;->transfer([Ljava/util/concurrent/ConcurrentHashMap$Node;[Ljava/util/concurrent/ConcurrentHashMap$Node;)V
-HSPLjava/util/concurrent/ConcurrentHashMap;->treeifyBin([Ljava/util/concurrent/ConcurrentHashMap$Node;I)V
-HSPLjava/util/concurrent/ConcurrentHashMap;->tryPresize(I)V
 HSPLjava/util/concurrent/ConcurrentHashMap;->values()Ljava/util/Collection;
-HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>()V
+HSPLjava/util/concurrent/ConcurrentLinkedDeque$Node;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/ConcurrentLinkedDeque;-><init>()V
 HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue;)V
 HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->hasNext()Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue$Itr;->next()Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>()V
+HSPLjava/util/concurrent/ConcurrentLinkedQueue$Node;-><init>(Ljava/util/concurrent/ConcurrentLinkedQueue$1;)V
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;-><init>()V
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->add(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casItem(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->casTail(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->first()Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->isEmpty()Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->iterator()Ljava/util/Iterator;
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->lazySetNext(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->newNode(Ljava/lang/Object;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->offer(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/ConcurrentLinkedQueue;->peek()Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->poll()Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ConcurrentLinkedQueue;->size()I
-HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->advance()V
-HSPLjava/util/concurrent/ConcurrentSkipListMap$Iter;->hasNext()Z
-HSPLjava/util/concurrent/ConcurrentSkipListMap$ValueIterator;->next()Ljava/lang/Object;
-HSPLjava/util/concurrent/ConcurrentSkipListMap$Values;->iterator()Ljava/util/Iterator;
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->succ(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)Ljava/util/concurrent/ConcurrentLinkedQueue$Node;
+HSPLjava/util/concurrent/ConcurrentLinkedQueue;->updateHead(Ljava/util/concurrent/ConcurrentLinkedQueue$Node;Ljava/util/concurrent/ConcurrentLinkedQueue$Node;)V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$HeadIndex;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;I)V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->casRight(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->link(Ljava/util/concurrent/ConcurrentSkipListMap$Index;Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Index;->unlink(Ljava/util/concurrent/ConcurrentSkipListMap$Index;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;-><init>(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)V
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->appendMarker(Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->casNext(Ljava/util/concurrent/ConcurrentSkipListMap$Node;Ljava/util/concurrent/ConcurrentSkipListMap$Node;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap$Node;->casValue(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ConcurrentSkipListMap;-><init>()V
-HSPLjava/util/concurrent/ConcurrentSkipListMap;-><init>(Ljava/util/Comparator;)V
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->clear()V
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->doGet(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->casHead(Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;Ljava/util/concurrent/ConcurrentSkipListMap$HeadIndex;)Z
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->cpr(Ljava/util/Comparator;Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->doPut(Ljava/lang/Object;Ljava/lang/Object;Z)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->doRemove(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->findPredecessor(Ljava/lang/Object;Ljava/util/Comparator;)Ljava/util/concurrent/ConcurrentSkipListMap$Node;
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLjava/util/concurrent/ConcurrentSkipListMap;->initialize()V
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->remove(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ConcurrentSkipListMap;->tryReduceLevel()V
-HSPLjava/util/concurrent/ConcurrentSkipListMap;->values()Ljava/util/Collection;
-HSPLjava/util/concurrent/ConcurrentSkipListSet;-><init>()V
+HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;-><init>([Ljava/lang/Object;I)V
 HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->hasNext()Z
 HSPLjava/util/concurrent/CopyOnWriteArrayList$COWIterator;->next()Ljava/lang/Object;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;-><init>()V
@@ -29618,20 +20074,27 @@
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->clear()V
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->contains(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->get(I)Ljava/lang/Object;
+HSPLjava/util/concurrent/CopyOnWriteArrayList;->get([Ljava/lang/Object;I)Ljava/lang/Object;
+HSPLjava/util/concurrent/CopyOnWriteArrayList;->getArray()[Ljava/lang/Object;
+HSPLjava/util/concurrent/CopyOnWriteArrayList;->indexOf(Ljava/lang/Object;[Ljava/lang/Object;II)I
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->isEmpty()Z
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->iterator()Ljava/util/Iterator;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(I)Ljava/lang/Object;
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->remove(Ljava/lang/Object;[Ljava/lang/Object;I)Z
-HSPLjava/util/concurrent/CopyOnWriteArrayList;->removeAll(Ljava/util/Collection;)Z
+HSPLjava/util/concurrent/CopyOnWriteArrayList;->setArray([Ljava/lang/Object;)V
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->size()I
-HSPLjava/util/concurrent/CopyOnWriteArrayList;->sort(Ljava/util/Comparator;)V
 HSPLjava/util/concurrent/CopyOnWriteArrayList;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
 HSPLjava/util/concurrent/CopyOnWriteArraySet;-><init>()V
 HSPLjava/util/concurrent/CopyOnWriteArraySet;->add(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/CopyOnWriteArraySet;->isEmpty()Z
 HSPLjava/util/concurrent/CopyOnWriteArraySet;->iterator()Ljava/util/Iterator;
 HSPLjava/util/concurrent/CopyOnWriteArraySet;->remove(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/CopyOnWriteArraySet;->size()I
+HSPLjava/util/concurrent/CountDownLatch$Sync;-><init>(I)V
+HSPLjava/util/concurrent/CountDownLatch$Sync;->getCount()I
 HSPLjava/util/concurrent/CountDownLatch$Sync;->tryAcquireShared(I)I
+HSPLjava/util/concurrent/CountDownLatch$Sync;->tryReleaseShared(I)Z
 HSPLjava/util/concurrent/CountDownLatch;-><init>(I)V
 HSPLjava/util/concurrent/CountDownLatch;->await()V
 HSPLjava/util/concurrent/CountDownLatch;->await(JLjava/util/concurrent/TimeUnit;)Z
@@ -29640,14 +20103,19 @@
 HSPLjava/util/concurrent/ExecutionException;-><init>(Ljava/lang/Throwable;)V
 HSPLjava/util/concurrent/Executors$DefaultThreadFactory;-><init>()V
 HSPLjava/util/concurrent/Executors$DefaultThreadFactory;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLjava/util/concurrent/Executors$DelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->execute(Ljava/lang/Runnable;)V
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->isShutdown()Z
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdown()V
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->shutdownNow()Ljava/util/List;
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
 HSPLjava/util/concurrent/Executors$DelegatedExecutorService;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
+HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;-><init>(Ljava/util/concurrent/ScheduledExecutorService;)V
 HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->schedule(Ljava/lang/Runnable;JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
+HSPLjava/util/concurrent/Executors$DelegatedScheduledExecutorService;->scheduleAtFixedRate(Ljava/lang/Runnable;JJLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/ScheduledFuture;
+HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;-><init>(Ljava/util/concurrent/ExecutorService;)V
 HSPLjava/util/concurrent/Executors$FinalizableDelegatedExecutorService;->finalize()V
+HSPLjava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
 HSPLjava/util/concurrent/Executors$RunnableAdapter;->call()Ljava/lang/Object;
 HSPLjava/util/concurrent/Executors;->callable(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Callable;
 HSPLjava/util/concurrent/Executors;->defaultThreadFactory()Ljava/util/concurrent/ThreadFactory;
@@ -29663,15 +20131,8 @@
 HSPLjava/util/concurrent/Executors;->newSingleThreadScheduledExecutor(Ljava/util/concurrent/ThreadFactory;)Ljava/util/concurrent/ScheduledExecutorService;
 HSPLjava/util/concurrent/Executors;->unconfigurableExecutorService(Ljava/util/concurrent/ExecutorService;)Ljava/util/concurrent/ExecutorService;
 HSPLjava/util/concurrent/Executors;->unconfigurableScheduledExecutorService(Ljava/util/concurrent/ScheduledExecutorService;)Ljava/util/concurrent/ScheduledExecutorService;
-HSPLjava/util/concurrent/ForkJoinPool$1;-><init>()V
-HSPLjava/util/concurrent/ForkJoinPool$1;->run()Ljava/lang/Object;
-HSPLjava/util/concurrent/ForkJoinPool$1;->run()Ljava/util/concurrent/ForkJoinPool;
-HSPLjava/util/concurrent/ForkJoinPool$DefaultForkJoinWorkerThreadFactory;-><init>(Ljava/util/concurrent/ForkJoinPool$1;)V
-HSPLjava/util/concurrent/ForkJoinPool;-><init>(ILjava/util/concurrent/ForkJoinPool$ForkJoinWorkerThreadFactory;Ljava/lang/Thread$UncaughtExceptionHandler;ILjava/lang/String;)V
-HSPLjava/util/concurrent/ForkJoinPool;->commonPool()Ljava/util/concurrent/ForkJoinPool;
-HSPLjava/util/concurrent/ForkJoinPool;->getCommonPoolParallelism()I
-HSPLjava/util/concurrent/ForkJoinPool;->makeCommonPool()Ljava/util/concurrent/ForkJoinPool;
-HSPLjava/util/concurrent/ForkJoinPool;->managedBlock(Ljava/util/concurrent/ForkJoinPool$ManagedBlocker;)V
+HSPLjava/util/concurrent/ForkJoinTask;-><init>()V
+HSPLjava/util/concurrent/FutureTask$WaitNode;-><init>()V
 HSPLjava/util/concurrent/FutureTask;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
 HSPLjava/util/concurrent/FutureTask;-><init>(Ljava/util/concurrent/Callable;)V
 HSPLjava/util/concurrent/FutureTask;->awaitDone(ZJ)I
@@ -29680,81 +20141,83 @@
 HSPLjava/util/concurrent/FutureTask;->finishCompletion()V
 HSPLjava/util/concurrent/FutureTask;->get()Ljava/lang/Object;
 HSPLjava/util/concurrent/FutureTask;->get(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
+HSPLjava/util/concurrent/FutureTask;->handlePossibleCancellationInterrupt(I)V
 HSPLjava/util/concurrent/FutureTask;->isCancelled()Z
 HSPLjava/util/concurrent/FutureTask;->isDone()Z
 HSPLjava/util/concurrent/FutureTask;->removeWaiter(Ljava/util/concurrent/FutureTask$WaitNode;)V
+HSPLjava/util/concurrent/FutureTask;->report(I)Ljava/lang/Object;
 HSPLjava/util/concurrent/FutureTask;->run()V
 HSPLjava/util/concurrent/FutureTask;->runAndReset()Z
 HSPLjava/util/concurrent/FutureTask;->set(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/FutureTask;->setException(Ljava/lang/Throwable;)V
+HSPLjava/util/concurrent/LinkedBlockingDeque$Node;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/LinkedBlockingDeque;-><init>()V
 HSPLjava/util/concurrent/LinkedBlockingDeque;-><init>(I)V
-HSPLjava/util/concurrent/LinkedBlockingDeque;->add(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/LinkedBlockingDeque;->addFirst(Ljava/lang/Object;)V
-HSPLjava/util/concurrent/LinkedBlockingDeque;->addLast(Ljava/lang/Object;)V
-HSPLjava/util/concurrent/LinkedBlockingDeque;->linkFirst(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
 HSPLjava/util/concurrent/LinkedBlockingDeque;->linkLast(Ljava/util/concurrent/LinkedBlockingDeque$Node;)Z
 HSPLjava/util/concurrent/LinkedBlockingDeque;->offer(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/LinkedBlockingDeque;->offerFirst(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/LinkedBlockingDeque;->offerLast(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/LinkedBlockingDeque;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
-HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst()Ljava/lang/Object;
-HSPLjava/util/concurrent/LinkedBlockingDeque;->pollFirst(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
-HPLjava/util/concurrent/LinkedBlockingDeque;->pop()Ljava/lang/Object;
-HPLjava/util/concurrent/LinkedBlockingDeque;->remainingCapacity()I
-HSPLjava/util/concurrent/LinkedBlockingDeque;->removeFirst()Ljava/lang/Object;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->size()I
-HSPLjava/util/concurrent/LinkedBlockingDeque;->take()Ljava/lang/Object;
-HSPLjava/util/concurrent/LinkedBlockingDeque;->takeFirst()Ljava/lang/Object;
 HSPLjava/util/concurrent/LinkedBlockingDeque;->unlinkFirst()Ljava/lang/Object;
+HSPLjava/util/concurrent/LinkedBlockingQueue$Node;-><init>(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/LinkedBlockingQueue;-><init>()V
 HSPLjava/util/concurrent/LinkedBlockingQueue;-><init>(I)V
+HSPLjava/util/concurrent/LinkedBlockingQueue;->dequeue()Ljava/lang/Object;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;)I
 HSPLjava/util/concurrent/LinkedBlockingQueue;->drainTo(Ljava/util/Collection;I)I
+HSPLjava/util/concurrent/LinkedBlockingQueue;->enqueue(Ljava/util/concurrent/LinkedBlockingQueue$Node;)V
 HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyLock()V
 HSPLjava/util/concurrent/LinkedBlockingQueue;->fullyUnlock()V
 HSPLjava/util/concurrent/LinkedBlockingQueue;->offer(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/LinkedBlockingQueue;->poll()Ljava/lang/Object;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
 HSPLjava/util/concurrent/LinkedBlockingQueue;->put(Ljava/lang/Object;)V
-HSPLjava/util/concurrent/LinkedBlockingQueue;->remainingCapacity()I
 HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotEmpty()V
-HSPLjava/util/concurrent/LinkedBlockingQueue;->signalNotFull()V
 HSPLjava/util/concurrent/LinkedBlockingQueue;->size()I
 HSPLjava/util/concurrent/LinkedBlockingQueue;->take()Ljava/lang/Object;
 HSPLjava/util/concurrent/PriorityBlockingQueue;-><init>()V
 HSPLjava/util/concurrent/PriorityBlockingQueue;-><init>(ILjava/util/Comparator;)V
 HSPLjava/util/concurrent/PriorityBlockingQueue;->add(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/PriorityBlockingQueue;->dequeue()Ljava/lang/Object;
 HSPLjava/util/concurrent/PriorityBlockingQueue;->offer(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/PriorityBlockingQueue;->peek()Ljava/lang/Object;
 HSPLjava/util/concurrent/PriorityBlockingQueue;->poll()Ljava/lang/Object;
+HSPLjava/util/concurrent/PriorityBlockingQueue;->put(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/PriorityBlockingQueue;->siftDownComparable(ILjava/lang/Object;[Ljava/lang/Object;I)V
-HSPLjava/util/concurrent/PriorityBlockingQueue;->size()I
+HSPLjava/util/concurrent/PriorityBlockingQueue;->siftUpComparable(ILjava/lang/Object;[Ljava/lang/Object;)V
 HSPLjava/util/concurrent/PriorityBlockingQueue;->take()Ljava/lang/Object;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;-><init>(Ljava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;[Ljava/util/concurrent/RunnableScheduledFuture;)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue$Itr;->hasNext()Z
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;-><init>()V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->add(Ljava/lang/Runnable;)Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->drainTo(Ljava/util/Collection;)I
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->finishPoll(Ljava/util/concurrent/RunnableScheduledFuture;)Ljava/util/concurrent/RunnableScheduledFuture;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->grow()V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->indexOf(Ljava/lang/Object;)I
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->isEmpty()Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->iterator()Ljava/util/Iterator;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->offer(Ljava/lang/Runnable;)Z
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->peekExpired()Ljava/util/concurrent/RunnableScheduledFuture;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/util/concurrent/RunnableScheduledFuture;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->remove(Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->setIndex(Ljava/util/concurrent/RunnableScheduledFuture;I)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftDown(ILjava/util/concurrent/RunnableScheduledFuture;)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->siftUp(ILjava/util/concurrent/RunnableScheduledFuture;)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->size()I
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->take()Ljava/lang/Object;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->take()Ljava/util/concurrent/RunnableScheduledFuture;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->toArray()[Ljava/lang/Object;
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$DelayedWorkQueue;->toArray([Ljava/lang/Object;)[Ljava/lang/Object;
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJ)V
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/lang/Runnable;Ljava/lang/Object;JJJ)V
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;-><init>(Ljava/util/concurrent/ScheduledThreadPoolExecutor;Ljava/util/concurrent/Callable;JJ)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->cancel(Z)Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/lang/Object;)I
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->compareTo(Ljava/util/concurrent/Delayed;)I
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->getDelay(Ljava/util/concurrent/TimeUnit;)J
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->isPeriodic()Z
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->run()V
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor$ScheduledFutureTask;->setNextRunTime()V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;-><init>(I)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;-><init>(ILjava/util/concurrent/ThreadFactory;)V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;-><init>(ILjava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
@@ -29775,44 +20238,63 @@
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdown()V
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->shutdownNow()Ljava/util/List;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/lang/Runnable;)Ljava/util/concurrent/Future;
-HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->submit(Ljava/util/concurrent/Callable;)Ljava/util/concurrent/Future;
 HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(J)J
+HSPLjava/util/concurrent/ScheduledThreadPoolExecutor;->triggerTime(JLjava/util/concurrent/TimeUnit;)J
+HSPLjava/util/concurrent/Semaphore$NonfairSync;-><init>(I)V
 HSPLjava/util/concurrent/Semaphore$NonfairSync;->tryAcquireShared(I)I
+HSPLjava/util/concurrent/Semaphore$Sync;-><init>(I)V
+HSPLjava/util/concurrent/Semaphore$Sync;->nonfairTryAcquireShared(I)I
 HSPLjava/util/concurrent/Semaphore$Sync;->tryReleaseShared(I)Z
 HSPLjava/util/concurrent/Semaphore;-><init>(I)V
+HSPLjava/util/concurrent/Semaphore;-><init>(IZ)V
 HSPLjava/util/concurrent/Semaphore;->acquire()V
+HSPLjava/util/concurrent/Semaphore;->acquireUninterruptibly()V
 HSPLjava/util/concurrent/Semaphore;->release()V
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;-><init>(Ljava/lang/Object;)V
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->casNext(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->isCancelled()Z
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryCancel()V
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack$SNode;->tryMatch(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;-><init>()V
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->awaitFulfill(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;ZJ)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->casHead(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->clean(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)V
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->isFulfilling(I)Z
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->shouldSpin(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;)Z
+HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->snode(Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;Ljava/lang/Object;Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;I)Ljava/util/concurrent/SynchronousQueue$TransferStack$SNode;
 HSPLjava/util/concurrent/SynchronousQueue$TransferStack;->transfer(Ljava/lang/Object;ZJ)Ljava/lang/Object;
+HSPLjava/util/concurrent/SynchronousQueue$Transferer;-><init>()V
 HSPLjava/util/concurrent/SynchronousQueue;-><init>()V
+HSPLjava/util/concurrent/SynchronousQueue;-><init>(Z)V
 HSPLjava/util/concurrent/SynchronousQueue;->isEmpty()Z
 HSPLjava/util/concurrent/SynchronousQueue;->offer(Ljava/lang/Object;)Z
 HSPLjava/util/concurrent/SynchronousQueue;->poll(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
 HSPLjava/util/concurrent/SynchronousQueue;->take()Ljava/lang/Object;
-HSPLjava/util/concurrent/ThreadLocalRandom$1;-><init>()V
-HSPLjava/util/concurrent/ThreadLocalRandom$1;->run()Ljava/lang/Boolean;
-HSPLjava/util/concurrent/ThreadLocalRandom$1;->run()Ljava/lang/Object;
-HSPLjava/util/concurrent/ThreadLocalRandom;-><init>()V
-HSPLjava/util/concurrent/ThreadLocalRandom;->current()Ljava/util/concurrent/ThreadLocalRandom;
-HSPLjava/util/concurrent/ThreadLocalRandom;->localInit()V
-HSPLjava/util/concurrent/ThreadLocalRandom;->mix64(J)J
+HSPLjava/util/concurrent/ThreadLocalRandom;->mix32(J)I
 HSPLjava/util/concurrent/ThreadLocalRandom;->nextInt()I
-HSPLjava/util/concurrent/ThreadLocalRandom;->nextSecondarySeed()I
-HSPLjava/util/concurrent/ThreadLocalRandom;->setSeed(J)V
-HSPLjava/util/concurrent/ThreadPoolExecutor$AbortPolicy;-><init>()V
+HSPLjava/util/concurrent/ThreadLocalRandom;->nextSeed()J
+HSPLjava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;-><init>()V
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;-><init>(Ljava/util/concurrent/ThreadPoolExecutor;Ljava/lang/Runnable;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->interruptIfStarted()V
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->lock()V
 HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->run()V
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryAcquire(I)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryLock()Z
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->tryRelease(I)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor$Worker;->unlock()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;-><init>(IIJLjava/util/concurrent/TimeUnit;Ljava/util/concurrent/BlockingQueue;Ljava/util/concurrent/ThreadFactory;Ljava/util/concurrent/RejectedExecutionHandler;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->addWorker(Ljava/lang/Runnable;Z)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->advanceRunState(I)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->afterExecute(Ljava/lang/Runnable;Ljava/lang/Throwable;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->allowCoreThreadTimeOut(Z)V
-HSPLjava/util/concurrent/ThreadPoolExecutor;->awaitTermination(JLjava/util/concurrent/TimeUnit;)Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->beforeExecute(Ljava/lang/Thread;Ljava/lang/Runnable;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->checkShutdownAccess()V
+HSPLjava/util/concurrent/ThreadPoolExecutor;->compareAndDecrementWorkerCount(I)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->compareAndIncrementWorkerCount(I)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->ctlOf(II)I
+HSPLjava/util/concurrent/ThreadPoolExecutor;->decrementWorkerCount()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->drainQueue()Ljava/util/List;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->ensurePrestart()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->execute(Ljava/lang/Runnable;)V
@@ -29820,32 +20302,39 @@
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getQueue()Ljava/util/concurrent/BlockingQueue;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getTask()Ljava/lang/Runnable;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->getThreadFactory()Ljava/util/concurrent/ThreadFactory;
+HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptIdleWorkers(Z)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->interruptWorkers()V
+HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunning(I)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->isRunningOrShutdown(Z)Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->isShutdown()Z
 HSPLjava/util/concurrent/ThreadPoolExecutor;->onShutdown()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->prestartAllCoreThreads()I
 HSPLjava/util/concurrent/ThreadPoolExecutor;->processWorkerExit(Ljava/util/concurrent/ThreadPoolExecutor$Worker;Z)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->purge()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->remove(Ljava/lang/Runnable;)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateAtLeast(II)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateLessThan(II)Z
+HSPLjava/util/concurrent/ThreadPoolExecutor;->runStateOf(I)I
 HSPLjava/util/concurrent/ThreadPoolExecutor;->runWorker(Ljava/util/concurrent/ThreadPoolExecutor$Worker;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setKeepAliveTime(JLjava/util/concurrent/TimeUnit;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setMaximumPoolSize(I)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->setRejectedExecutionHandler(Ljava/util/concurrent/RejectedExecutionHandler;)V
+HSPLjava/util/concurrent/ThreadPoolExecutor;->setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdown()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->shutdownNow()Ljava/util/List;
 HSPLjava/util/concurrent/ThreadPoolExecutor;->terminated()V
 HSPLjava/util/concurrent/ThreadPoolExecutor;->tryTerminate()V
+HSPLjava/util/concurrent/ThreadPoolExecutor;->workerCountOf(I)I
 HSPLjava/util/concurrent/TimeUnit$1;->convert(JLjava/util/concurrent/TimeUnit;)J
-HSPLjava/util/concurrent/TimeUnit$1;->toHours(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toMicros(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$1;->toSeconds(J)J
+HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J
 HSPLjava/util/concurrent/TimeUnit$2;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$3;->convert(JLjava/util/concurrent/TimeUnit;)J
 HSPLjava/util/concurrent/TimeUnit$3;->toDays(J)J
-HSPLjava/util/concurrent/TimeUnit$3;->toHours(J)J
 HSPLjava/util/concurrent/TimeUnit$3;->toMicros(J)J
 HSPLjava/util/concurrent/TimeUnit$3;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$3;->toMinutes(J)J
@@ -29860,24 +20349,23 @@
 HSPLjava/util/concurrent/TimeUnit$5;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$5;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$5;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$6;->convert(JLjava/util/concurrent/TimeUnit;)J
 HSPLjava/util/concurrent/TimeUnit$6;->toMillis(J)J
-HSPLjava/util/concurrent/TimeUnit$6;->toMinutes(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$6;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$7;->toHours(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toMillis(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toMinutes(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toNanos(J)J
 HSPLjava/util/concurrent/TimeUnit$7;->toSeconds(J)J
+HSPLjava/util/concurrent/TimeUnit;->x(JJJ)J
+HSPLjava/util/concurrent/TimeoutException;-><init>()V
 HSPLjava/util/concurrent/TimeoutException;-><init>(Ljava/lang/String;)V
 HSPLjava/util/concurrent/atomic/AtomicBoolean;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicBoolean;-><init>(Z)V
 HSPLjava/util/concurrent/atomic/AtomicBoolean;->compareAndSet(ZZ)Z
 HSPLjava/util/concurrent/atomic/AtomicBoolean;->get()Z
 HSPLjava/util/concurrent/atomic/AtomicBoolean;->getAndSet(Z)Z
+HSPLjava/util/concurrent/atomic/AtomicBoolean;->lazySet(Z)V
 HSPLjava/util/concurrent/atomic/AtomicBoolean;->set(Z)V
-HSPLjava/util/concurrent/atomic/AtomicBoolean;->toString()Ljava/lang/String;
 HSPLjava/util/concurrent/atomic/AtomicInteger;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicInteger;-><init>(I)V
 HSPLjava/util/concurrent/atomic/AtomicInteger;->addAndGet(I)I
@@ -29888,33 +20376,36 @@
 HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndDecrement()I
 HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndIncrement()I
 HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndSet(I)I
-HSPLjava/util/concurrent/atomic/AtomicInteger;->getAndUpdate(Ljava/util/function/IntUnaryOperator;)I
 HSPLjava/util/concurrent/atomic/AtomicInteger;->incrementAndGet()I
 HSPLjava/util/concurrent/atomic/AtomicInteger;->lazySet(I)V
 HSPLjava/util/concurrent/atomic/AtomicInteger;->set(I)V
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
+HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;II)Z
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->decrementAndGet(Ljava/lang/Object;)I
+HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->getAndAdd(Ljava/lang/Object;I)I
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->getAndSet(Ljava/lang/Object;I)I
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater$AtomicIntegerFieldUpdaterImpl;->set(Ljava/lang/Object;I)V
+HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicIntegerFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicIntegerFieldUpdater;
 HSPLjava/util/concurrent/atomic/AtomicLong;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicLong;-><init>(J)V
 HSPLjava/util/concurrent/atomic/AtomicLong;->addAndGet(J)J
 HSPLjava/util/concurrent/atomic/AtomicLong;->compareAndSet(JJ)Z
-HSPLjava/util/concurrent/atomic/AtomicLong;->doubleValue()D
+HSPLjava/util/concurrent/atomic/AtomicLong;->decrementAndGet()J
 HSPLjava/util/concurrent/atomic/AtomicLong;->get()J
 HSPLjava/util/concurrent/atomic/AtomicLong;->getAndAdd(J)J
-HSPLjava/util/concurrent/atomic/AtomicLong;->getAndDecrement()J
 HSPLjava/util/concurrent/atomic/AtomicLong;->getAndIncrement()J
 HSPLjava/util/concurrent/atomic/AtomicLong;->getAndSet(J)J
 HSPLjava/util/concurrent/atomic/AtomicLong;->incrementAndGet()J
 HSPLjava/util/concurrent/atomic/AtomicLong;->lazySet(J)V
 HSPLjava/util/concurrent/atomic/AtomicLong;->set(J)V
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;-><init>(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
+HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->accessCheck(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->getAndAdd(Ljava/lang/Object;J)J
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->getAndIncrement(Ljava/lang/Object;)J
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater$CASUpdater;->incrementAndGet(Ljava/lang/Object;)J
+HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicLongFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicLongFieldUpdater;
 HSPLjava/util/concurrent/atomic/AtomicReference;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicReference;-><init>(Ljava/lang/Object;)V
@@ -29924,37 +20415,89 @@
 HSPLjava/util/concurrent/atomic/AtomicReference;->lazySet(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReference;->set(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;-><init>(I)V
+HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->byteOffset(I)J
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->checkedByteOffset(I)J
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->get(I)Ljava/lang/Object;
+HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->getRaw(J)Ljava/lang/Object;
+HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->lazySet(ILjava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->length()I
 HSPLjava/util/concurrent/atomic/AtomicReferenceArray;->set(ILjava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;-><init>(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Class;)V
+HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->accessCheck(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->compareAndSet(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater$AtomicReferenceFieldUpdaterImpl;->valueCheck(Ljava/lang/Object;)V
+HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;-><init>()V
 HSPLjava/util/concurrent/atomic/AtomicReferenceFieldUpdater;->newUpdater(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/String;)Ljava/util/concurrent/atomic/AtomicReferenceFieldUpdater;
 HSPLjava/util/concurrent/atomic/LongAdder;-><init>()V
 HSPLjava/util/concurrent/atomic/LongAdder;->add(J)V
+HSPLjava/util/concurrent/atomic/Striped64;-><init>()V
+HSPLjava/util/concurrent/atomic/Striped64;->casBase(JJ)Z
+HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;-><init>()V
+HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->getExclusiveOwnerThread()Ljava/lang/Thread;
+HSPLjava/util/concurrent/locks/AbstractOwnableSynchronizer;->setExclusiveOwnerThread(Ljava/lang/Thread;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->addConditionWaiter()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->await()V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->awaitNanos(J)J
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->checkInterruptWhileWaiting(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->doSignalAll(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->reportInterruptAfterWait(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signal()V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->signalAll()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;->unlinkCancelledWaiters()V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;-><init>(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetNext(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->compareAndSetWaitStatus(II)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->isShared()Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;->predecessor()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;-><init>()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquire(I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireInterruptibly(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireQueued(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireShared(I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireSharedInterruptibly(I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->addWaiter(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->apparentlyFirstQueuedIsExclusive()Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->cancelAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetState(II)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->compareAndSetTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireInterruptibly(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireShared(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedInterruptibly(I)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doAcquireSharedNanos(IJ)Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->doReleaseShared()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->enq(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->findNodeFromTail(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->fullyRelease(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)I
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->getState()I
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->hasQueuedPredecessors()Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->initializeSyncQueue()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->isOnSyncQueue(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->parkAndCheckInterrupt()Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->releaseShared(I)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->selfInterrupt()V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHead(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setHeadAndPropagate(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->setState(I)V
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->shouldParkAfterFailedAcquire(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferAfterCancelledWait(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->transferForSignal(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)Z
+HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z
 HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->unparkSuccessor(Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$Node;)V
 HSPLjava/util/concurrent/locks/LockSupport;->park(Ljava/lang/Object;)V
 HSPLjava/util/concurrent/locks/LockSupport;->parkNanos(Ljava/lang/Object;J)V
+HSPLjava/util/concurrent/locks/LockSupport;->setBlocker(Ljava/lang/Thread;Ljava/lang/Object;)V
 HSPLjava/util/concurrent/locks/LockSupport;->unpark(Ljava/lang/Thread;)V
+HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->lock()V
 HSPLjava/util/concurrent/locks/ReentrantLock$NonfairSync;->tryAcquire(I)Z
+HSPLjava/util/concurrent/locks/ReentrantLock$Sync;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->isHeldExclusively()Z
+HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->newCondition()Ljava/util/concurrent/locks/AbstractQueuedSynchronizer$ConditionObject;
 HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->nonfairTryAcquire(I)Z
 HSPLjava/util/concurrent/locks/ReentrantLock$Sync;->tryRelease(I)Z
 HSPLjava/util/concurrent/locks/ReentrantLock;-><init>()V
@@ -29965,51 +20508,58 @@
 HSPLjava/util/concurrent/locks/ReentrantLock;->newCondition()Ljava/util/concurrent/locks/Condition;
 HSPLjava/util/concurrent/locks/ReentrantLock;->tryLock()Z
 HSPLjava/util/concurrent/locks/ReentrantLock;->unlock()V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->readerShouldBlock()Z
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$FairSync;->writerShouldBlock()Z
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->readerShouldBlock()Z
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$NonfairSync;->writerShouldBlock()Z
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;-><init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->lock()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;->unlock()V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;-><init>()V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;-><init>()V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/lang/Object;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync$ThreadLocalHoldCounter;->initialValue()Ljava/util/concurrent/locks/ReentrantReadWriteLock$Sync$HoldCounter;
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;-><init>()V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->exclusiveCount(I)I
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->fullTryAcquireShared(Ljava/lang/Thread;)I
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->isHeldExclusively()Z
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->sharedCount(I)I
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquire(I)Z
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryAcquireShared(I)I
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryRelease(I)Z
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$Sync;->tryReleaseShared(I)Z
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;-><init>(Ljava/util/concurrent/locks/ReentrantReadWriteLock;)V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->lock()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;->unlock()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;-><init>()V
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;-><init>(Z)V
+HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->getThreadId(Ljava/lang/Thread;)J
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/Lock;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->readLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$ReadLock;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/Lock;
 HSPLjava/util/concurrent/locks/ReentrantReadWriteLock;->writeLock()Ljava/util/concurrent/locks/ReentrantReadWriteLock$WriteLock;
-HSPLjava/util/function/-$$Lambda$BinaryOperator$V_WUclL0kAOZvMw9EtWtwAvmNJc;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/function/-$$Lambda$DoubleUnaryOperator$i7wtM_8Ous-CB32HCfZ4usZ4zaQ;-><init>()V
-HSPLjava/util/function/-$$Lambda$DoubleUnaryOperator$i7wtM_8Ous-CB32HCfZ4usZ4zaQ;->applyAsDouble(D)D
-HSPLjava/util/function/-$$Lambda$Function$1mm3dZ9IMG2T6zAULCCEh3eoHSY;-><init>()V
-HSPLjava/util/function/-$$Lambda$Function$1mm3dZ9IMG2T6zAULCCEh3eoHSY;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/function/-$$Lambda$Predicate$17UUIF1CH_K9duk0ChtjSwOycuM;->test(Ljava/lang/Object;)Z
-PLjava/util/function/-$$Lambda$Predicate$GyIVQ08CWbeMZxHDkkrN-5apRkc;->test(Ljava/lang/Object;)Z
-HSPLjava/util/function/DoubleUnaryOperator;->andThen(Ljava/util/function/DoubleUnaryOperator;)Ljava/util/function/DoubleUnaryOperator;
-HSPLjava/util/function/DoubleUnaryOperator;->identity()Ljava/util/function/DoubleUnaryOperator;
-HSPLjava/util/function/Function;->identity()Ljava/util/function/Function;
-HPLjava/util/function/Predicate;->and(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;
-HSPLjava/util/function/Predicate;->or(Ljava/util/function/Predicate;)Ljava/util/function/Predicate;
 HSPLjava/util/jar/Attributes$Name;-><init>(Ljava/lang/String;)V
 HSPLjava/util/jar/Attributes$Name;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/jar/Attributes$Name;->hashCode()I
+HSPLjava/util/jar/Attributes$Name;->isAlpha(C)Z
+HSPLjava/util/jar/Attributes$Name;->isDigit(C)Z
+HSPLjava/util/jar/Attributes$Name;->isValid(C)Z
+HSPLjava/util/jar/Attributes$Name;->isValid(Ljava/lang/String;)Z
 HSPLjava/util/jar/Attributes$Name;->toString()Ljava/lang/String;
 HSPLjava/util/jar/Attributes;-><init>()V
 HSPLjava/util/jar/Attributes;-><init>(I)V
 HSPLjava/util/jar/Attributes;->entrySet()Ljava/util/Set;
 HSPLjava/util/jar/Attributes;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/jar/Attributes;->getValue(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/jar/Attributes;->getValue(Ljava/util/jar/Attributes$Name;)Ljava/lang/String;
 HSPLjava/util/jar/Attributes;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
 HSPLjava/util/jar/Attributes;->putValue(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/jar/Attributes;->read(Ljava/util/jar/Manifest$FastInputStream;[B)V
 HSPLjava/util/jar/Attributes;->size()I
+HSPLjava/util/jar/JarEntry;-><init>(Ljava/util/zip/ZipEntry;)V
+HSPLjava/util/jar/JarFile$JarFileEntry;-><init>(Ljava/util/jar/JarFile;Ljava/util/zip/ZipEntry;)V
+HSPLjava/util/jar/JarFile;-><init>(Ljava/io/File;ZI)V
 HSPLjava/util/jar/JarFile;-><init>(Ljava/lang/String;)V
 HSPLjava/util/jar/JarFile;->getBytes(Ljava/util/zip/ZipEntry;)[B
 HSPLjava/util/jar/JarFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
@@ -30020,6 +20570,7 @@
 HSPLjava/util/jar/JarFile;->getManifestFromReference()Ljava/util/jar/Manifest;
 HSPLjava/util/jar/JarFile;->initializeVerifier()V
 HSPLjava/util/jar/JarFile;->maybeInstantiateVerifier()V
+HSPLjava/util/jar/JarVerifier$3;-><init>(Ljava/util/jar/JarVerifier;)V
 HSPLjava/util/jar/JarVerifier$VerifierStream;-><init>(Ljava/util/jar/Manifest;Ljava/util/jar/JarEntry;Ljava/io/InputStream;Ljava/util/jar/JarVerifier;)V
 HSPLjava/util/jar/JarVerifier$VerifierStream;->close()V
 HSPLjava/util/jar/JarVerifier$VerifierStream;->read()I
@@ -30032,75 +20583,100 @@
 HSPLjava/util/jar/JarVerifier;->processEntry(Lsun/security/util/ManifestEntryVerifier;)V
 HSPLjava/util/jar/JarVerifier;->update(ILsun/security/util/ManifestEntryVerifier;)V
 HSPLjava/util/jar/JarVerifier;->update(I[BIILsun/security/util/ManifestEntryVerifier;)V
+HSPLjava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;)V
+HSPLjava/util/jar/Manifest$FastInputStream;-><init>(Ljava/io/InputStream;I)V
+HSPLjava/util/jar/Manifest$FastInputStream;->fill()V
 HSPLjava/util/jar/Manifest$FastInputStream;->peek()B
 HSPLjava/util/jar/Manifest$FastInputStream;->readLine([B)I
 HSPLjava/util/jar/Manifest$FastInputStream;->readLine([BII)I
+HSPLjava/util/jar/Manifest;-><init>()V
+HSPLjava/util/jar/Manifest;-><init>(Ljava/io/InputStream;)V
 HSPLjava/util/jar/Manifest;->getAttributes(Ljava/lang/String;)Ljava/util/jar/Attributes;
 HSPLjava/util/jar/Manifest;->getEntries()Ljava/util/Map;
 HSPLjava/util/jar/Manifest;->getMainAttributes()Ljava/util/jar/Attributes;
 HSPLjava/util/jar/Manifest;->parseName([BI)Ljava/lang/String;
 HSPLjava/util/jar/Manifest;->read(Ljava/io/InputStream;)V
+HSPLjava/util/jar/Manifest;->toLower(I)I
+HSPLjava/util/logging/ErrorManager;-><init>()V
+HSPLjava/util/logging/Formatter;-><init>()V
 HSPLjava/util/logging/Handler;-><init>()V
 HSPLjava/util/logging/Handler;->checkPermission()V
 HSPLjava/util/logging/Handler;->getFormatter()Ljava/util/logging/Formatter;
+HSPLjava/util/logging/Handler;->getLevel()Ljava/util/logging/Level;
+HSPLjava/util/logging/Handler;->isLoggable(Ljava/util/logging/LogRecord;)Z
 HSPLjava/util/logging/Handler;->setFormatter(Ljava/util/logging/Formatter;)V
-HSPLjava/util/logging/Level$KnownLevel;-><init>(Ljava/util/logging/Level;)V
-HSPLjava/util/logging/Level$KnownLevel;->add(Ljava/util/logging/Level;)V
-HSPLjava/util/logging/Level$KnownLevel;->findByName(Ljava/lang/String;)Ljava/util/logging/Level$KnownLevel;
-HSPLjava/util/logging/Level;-><init>(Ljava/lang/String;ILjava/lang/String;)V
-HSPLjava/util/logging/Level;-><init>(Ljava/lang/String;ILjava/lang/String;Z)V
-HSPLjava/util/logging/Level;->findLevel(Ljava/lang/String;)Ljava/util/logging/Level;
+HSPLjava/util/logging/Handler;->setLevel(Ljava/util/logging/Level;)V
+HSPLjava/util/logging/Level;->equals(Ljava/lang/Object;)Z
 HSPLjava/util/logging/Level;->intValue()I
-HSPLjava/util/logging/LogManager$1;-><init>()V
-HSPLjava/util/logging/LogManager$1;->run()Ljava/lang/Object;
-HSPLjava/util/logging/LogManager$1;->run()Ljava/util/logging/LogManager;
-HSPLjava/util/logging/LogManager$2;->run()Ljava/lang/Object;
-HSPLjava/util/logging/LogManager$3;->run()Ljava/lang/Object;
-HSPLjava/util/logging/LogManager$3;->run()Ljava/lang/Void;
+HSPLjava/util/logging/LogManager$5;-><init>(Ljava/util/logging/LogManager;Ljava/lang/String;Ljava/util/logging/Logger;)V
 HSPLjava/util/logging/LogManager$5;->run()Ljava/lang/Object;
+HSPLjava/util/logging/LogManager$LogNode;-><init>(Ljava/util/logging/LogManager$LogNode;Ljava/util/logging/LogManager$LoggerContext;)V
 HSPLjava/util/logging/LogManager$LogNode;->walkAndSetParent(Ljava/util/logging/Logger;)V
+HSPLjava/util/logging/LogManager$LoggerContext$1;-><init>(Ljava/util/logging/LogManager$LoggerContext;Ljava/util/logging/Logger;Ljava/util/logging/LogManager;Ljava/lang/String;)V
+HSPLjava/util/logging/LogManager$LoggerContext$1;->run()Ljava/lang/Object;
 HSPLjava/util/logging/LogManager$LoggerContext$1;->run()Ljava/lang/Void;
 HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;)Z
 HSPLjava/util/logging/LogManager$LoggerContext;->addLocalLogger(Ljava/util/logging/Logger;Z)Z
 HSPLjava/util/logging/LogManager$LoggerContext;->ensureAllDefaultLoggers(Ljava/util/logging/Logger;)V
 HSPLjava/util/logging/LogManager$LoggerContext;->ensureDefaultLogger(Ljava/util/logging/Logger;)V
+HSPLjava/util/logging/LogManager$LoggerContext;->ensureInitialized()V
 HSPLjava/util/logging/LogManager$LoggerContext;->findLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
+HSPLjava/util/logging/LogManager$LoggerContext;->getGlobalLogger()Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager$LoggerContext;->getLoggerNames()Ljava/util/Enumeration;
 HSPLjava/util/logging/LogManager$LoggerContext;->getNode(Ljava/lang/String;)Ljava/util/logging/LogManager$LogNode;
+HSPLjava/util/logging/LogManager$LoggerContext;->getOwner()Ljava/util/logging/LogManager;
+HSPLjava/util/logging/LogManager$LoggerContext;->getRootLogger()Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager$LoggerContext;->processParentHandlers(Ljava/util/logging/Logger;Ljava/lang/String;)V
 HSPLjava/util/logging/LogManager$LoggerContext;->removeLoggerRef(Ljava/lang/String;Ljava/util/logging/LogManager$LoggerWeakRef;)V
+HSPLjava/util/logging/LogManager$LoggerContext;->requiresDefaultLoggers()Z
+HSPLjava/util/logging/LogManager$LoggerWeakRef;-><init>(Ljava/util/logging/LogManager;Ljava/util/logging/Logger;)V
 HSPLjava/util/logging/LogManager$LoggerWeakRef;->dispose()V
+HSPLjava/util/logging/LogManager$LoggerWeakRef;->setNode(Ljava/util/logging/LogManager$LogNode;)V
+HSPLjava/util/logging/LogManager$LoggerWeakRef;->setParentRef(Ljava/lang/ref/WeakReference;)V
 HSPLjava/util/logging/LogManager$RootLogger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
 HSPLjava/util/logging/LogManager$RootLogger;->addHandler(Ljava/util/logging/Handler;)V
-HSPLjava/util/logging/LogManager;-><init>(Ljava/lang/Void;)V
+HSPLjava/util/logging/LogManager;->access$1300(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V
+HSPLjava/util/logging/LogManager;->access$1400(Ljava/util/logging/LogManager;Ljava/lang/String;)[Ljava/lang/String;
+HSPLjava/util/logging/LogManager;->access$1500(Ljava/util/logging/LogManager;)Ljava/lang/ref/ReferenceQueue;
+HSPLjava/util/logging/LogManager;->access$1600(Ljava/util/logging/LogManager;)V
+HSPLjava/util/logging/LogManager;->access$200()Ljava/util/logging/LogManager;
+HSPLjava/util/logging/LogManager;->access$600(Ljava/util/logging/LogManager;)Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager;->addLogger(Ljava/util/logging/Logger;)Z
 HSPLjava/util/logging/LogManager;->checkPermission()V
 HSPLjava/util/logging/LogManager;->contexts()Ljava/util/List;
 HSPLjava/util/logging/LogManager;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
+HSPLjava/util/logging/LogManager;->doSetParent(Ljava/util/logging/Logger;Ljava/util/logging/Logger;)V
+HSPLjava/util/logging/LogManager;->drainLoggerRefQueueBounded()V
 HSPLjava/util/logging/LogManager;->ensureLogManagerInitialized()V
 HSPLjava/util/logging/LogManager;->getBooleanProperty(Ljava/lang/String;Z)Z
 HSPLjava/util/logging/LogManager;->getLevelProperty(Ljava/lang/String;Ljava/util/logging/Level;)Ljava/util/logging/Level;
 HSPLjava/util/logging/LogManager;->getLogManager()Ljava/util/logging/LogManager;
 HSPLjava/util/logging/LogManager;->getLogger(Ljava/lang/String;)Ljava/util/logging/Logger;
 HSPLjava/util/logging/LogManager;->getProperty(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/util/logging/LogManager;->getSystemContext()Ljava/util/logging/LogManager$LoggerContext;
+HSPLjava/util/logging/LogManager;->getUserContext()Ljava/util/logging/LogManager$LoggerContext;
 HSPLjava/util/logging/LogManager;->initializeGlobalHandlers()V
+HSPLjava/util/logging/LogManager;->loadLoggerHandlers(Ljava/util/logging/Logger;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/logging/LogManager;->parseClassNames(Ljava/lang/String;)[Ljava/lang/String;
-HSPLjava/util/logging/LogManager;->readConfiguration()V
-HSPLjava/util/logging/LogManager;->readConfiguration(Ljava/io/InputStream;)V
-HSPLjava/util/logging/LogManager;->readPrimordialConfiguration()V
 HSPLjava/util/logging/LogManager;->reset()V
 HSPLjava/util/logging/LogManager;->resetLogger(Ljava/util/logging/Logger;)V
-HSPLjava/util/logging/LogManager;->setLevelsOnExistingLoggers()V
 HSPLjava/util/logging/LogRecord;-><init>(Ljava/util/logging/Level;Ljava/lang/String;)V
 HSPLjava/util/logging/LogRecord;->defaultThreadID()I
 HSPLjava/util/logging/LogRecord;->getLevel()Ljava/util/logging/Level;
 HSPLjava/util/logging/LogRecord;->getLoggerName()Ljava/lang/String;
 HSPLjava/util/logging/LogRecord;->getMessage()Ljava/lang/String;
 HSPLjava/util/logging/LogRecord;->getThrown()Ljava/lang/Throwable;
-HSPLjava/util/logging/Logger$LoggerBundle;-><init>(Ljava/lang/String;Ljava/util/ResourceBundle;Ljava/util/logging/Logger$1;)V
-HSPLjava/util/logging/Logger;-><init>(Ljava/lang/String;)V
+HSPLjava/util/logging/LogRecord;->setLoggerName(Ljava/lang/String;)V
+HSPLjava/util/logging/LogRecord;->setSourceClassName(Ljava/lang/String;)V
+HSPLjava/util/logging/LogRecord;->setSourceMethodName(Ljava/lang/String;)V
+HSPLjava/util/logging/LogRecord;->setThrown(Ljava/lang/Throwable;)V
+HSPLjava/util/logging/Logger$LoggerBundle;->isSystemBundle()Z
 HSPLjava/util/logging/Logger;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;Ljava/util/logging/LogManager;Z)V
 HSPLjava/util/logging/Logger;->accessCheckedHandlers()[Ljava/util/logging/Handler;
+HSPLjava/util/logging/Logger;->addHandler(Ljava/util/logging/Handler;)V
+HSPLjava/util/logging/Logger;->checkPermission()V
+HSPLjava/util/logging/Logger;->demandLogger(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)Ljava/util/logging/Logger;
+HSPLjava/util/logging/Logger;->doLog(Ljava/util/logging/LogRecord;)V
 HSPLjava/util/logging/Logger;->doSetParent(Ljava/util/logging/Logger;)V
 HSPLjava/util/logging/Logger;->findResourceBundle(Ljava/lang/String;Z)Ljava/util/ResourceBundle;
 HSPLjava/util/logging/Logger;->getEffectiveLoggerBundle()Ljava/util/logging/Logger$LoggerBundle;
@@ -30112,8 +20688,7 @@
 HSPLjava/util/logging/Logger;->getResourceBundleName()Ljava/lang/String;
 HSPLjava/util/logging/Logger;->getUseParentHandlers()Z
 HSPLjava/util/logging/Logger;->isLoggable(Ljava/util/logging/Level;)Z
-HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/Object;)V
-HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;[Ljava/lang/Object;)V
+HSPLjava/util/logging/Logger;->log(Ljava/util/logging/Level;Ljava/lang/String;)V
 HSPLjava/util/logging/Logger;->log(Ljava/util/logging/LogRecord;)V
 HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLjava/util/logging/Logger;->logp(Ljava/util/logging/Level;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
@@ -30125,14 +20700,17 @@
 HSPLjava/util/logging/Logger;->setParent(Ljava/util/logging/Logger;)V
 HSPLjava/util/logging/Logger;->setupResourceInfo(Ljava/lang/String;Ljava/lang/Class;)V
 HSPLjava/util/logging/Logger;->updateEffectiveLevel()V
-HSPLjava/util/logging/LoggingProxyImpl;-><init>()V
-HSPLjava/util/prefs/FileSystemPreferences$3;-><init>()V
-HSPLjava/util/prefs/Preferences;->factory()Ljava/util/prefs/PreferencesFactory;
+HSPLjava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V
 HSPLjava/util/regex/Matcher;->appendEvaluated(Ljava/lang/StringBuffer;Ljava/lang/String;)V
+HSPLjava/util/regex/Matcher;->appendReplacement(Ljava/lang/StringBuffer;Ljava/lang/String;)Ljava/util/regex/Matcher;
+HSPLjava/util/regex/Matcher;->appendTail(Ljava/lang/StringBuffer;)Ljava/lang/StringBuffer;
 HSPLjava/util/regex/Matcher;->end()I
 HSPLjava/util/regex/Matcher;->end(I)I
+HSPLjava/util/regex/Matcher;->ensureMatch()V
 HSPLjava/util/regex/Matcher;->find()Z
 HSPLjava/util/regex/Matcher;->find(I)Z
+HSPLjava/util/regex/Matcher;->getSubSequence(II)Ljava/lang/CharSequence;
+HSPLjava/util/regex/Matcher;->getTextLength()I
 HSPLjava/util/regex/Matcher;->group()Ljava/lang/String;
 HSPLjava/util/regex/Matcher;->group(I)Ljava/lang/String;
 HSPLjava/util/regex/Matcher;->groupCount()I
@@ -30142,6 +20720,7 @@
 HSPLjava/util/regex/Matcher;->region(II)Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->replaceAll(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/regex/Matcher;->replaceFirst(Ljava/lang/String;)Ljava/lang/String;
+HSPLjava/util/regex/Matcher;->reset()Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->reset(Ljava/lang/CharSequence;II)Ljava/util/regex/Matcher;
 HSPLjava/util/regex/Matcher;->resetForInput()V
@@ -30156,262 +20735,213 @@
 HSPLjava/util/regex/Pattern;->compile(Ljava/lang/String;I)Ljava/util/regex/Pattern;
 HSPLjava/util/regex/Pattern;->fastSplit(Ljava/lang/String;Ljava/lang/String;I)[Ljava/lang/String;
 HSPLjava/util/regex/Pattern;->matcher(Ljava/lang/CharSequence;)Ljava/util/regex/Matcher;
+HSPLjava/util/regex/Pattern;->matches(Ljava/lang/String;Ljava/lang/CharSequence;)Z
 HSPLjava/util/regex/Pattern;->quote(Ljava/lang/String;)Ljava/lang/String;
 HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;)[Ljava/lang/String;
 HSPLjava/util/regex/Pattern;->split(Ljava/lang/CharSequence;I)[Ljava/lang/String;
-HSPLjava/util/stream/-$$Lambda$Abl7XfE0Z4AgkViLas9vhsO9mjw;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$Collectors$0y_EMl863H_U7B4kxyGscB4vAag;-><init>()V
-HSPLjava/util/stream/-$$Lambda$Collectors$F7-we3W7I2plNaGHqh_d2lzmvho;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$Collectors$SMVdf7W0ks2OOmS3zJw7DHc-Nhc;-><init>()V
-HSPLjava/util/stream/-$$Lambda$Collectors$f0IPpRuyw9HZC8FIP30mNjUUUhw;-><init>()V
-HSPLjava/util/stream/-$$Lambda$Collectors$f68RHYk8qNU7alEHPPrPoFuCJO4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$Collectors$iab6bVO3ydceISRiUEq_MRHYzoU;-><init>()V
-HSPLjava/util/stream/-$$Lambda$Collectors$kXZFmh6iM6xf9lJWimhd2Ef6NEs;-><init>()V
-HSPLjava/util/stream/-$$Lambda$Collectors$nKlT6uFghrTzWO44dlFAJFeRr34;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLjava/util/stream/-$$Lambda$Collectors$TzSZZBK0laNSWMge_uuxANwkkMo;-><init>(Ljava/util/function/BinaryOperator;)V
+HSPLjava/util/stream/-$$Lambda$Collectors$pzPeDl3rCgtNVSeZPHZk5f2se60;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)V
 HSPLjava/util/stream/-$$Lambda$Collectors$pzPeDl3rCgtNVSeZPHZk5f2se60;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$Drw47GGUtPrz9CklhlT0v26u-5c;-><init>()V
 HSPLjava/util/stream/-$$Lambda$Drw47GGUtPrz9CklhlT0v26u-5c;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$IntPipeline$R-E7oGjPWog3HR9X-8MdhU1ZGRE;-><init>()V
-HSPLjava/util/stream/-$$Lambda$IntPipeline$R-E7oGjPWog3HR9X-8MdhU1ZGRE;->applyAsInt(Ljava/lang/Object;)I
-HSPLjava/util/stream/-$$Lambda$IntPipeline$ozedusDMANE_B8aDthWCd1L-na4;-><init>()V
+HSPLjava/util/stream/-$$Lambda$MatchOps$_LtFSpSMfVwoPv-8p_1cMGGcaHA;-><init>(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Predicate;)V
 HSPLjava/util/stream/-$$Lambda$MatchOps$_LtFSpSMfVwoPv-8p_1cMGGcaHA;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$MatchOps$emK14UX33I4-nqH2o5l7hLEVAy8;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$ReferencePipeline$mk6xSsLZAKvG89IyN8pzBoM6otw;-><init>()V
 HSPLjava/util/stream/-$$Lambda$ReferencePipeline$mk6xSsLZAKvG89IyN8pzBoM6otw;->applyAsLong(Ljava/lang/Object;)J
-HSPLjava/util/stream/-$$Lambda$bjSXRjZ5UYwAzkW-XPKwqbJ9BRQ;-><init>()V
-HSPLjava/util/stream/-$$Lambda$dplkPhACWDPIy18ogwdupEQaN40;-><init>()V
 HSPLjava/util/stream/-$$Lambda$dplkPhACWDPIy18ogwdupEQaN40;->applyAsLong(JJ)J
-HSPLjava/util/stream/-$$Lambda$i0Jl5dMkfWphZviqg6QdkkWPWRI;-><init>()V
-HSPLjava/util/stream/-$$Lambda$ihOtgw0eLCrsEBOphyN7SwoAlDg;-><init>()V
 HSPLjava/util/stream/-$$Lambda$ihOtgw0eLCrsEBOphyN7SwoAlDg;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$okJigbB9kSn__oCZ5Do9uFNyF6A;-><init>()V
 HSPLjava/util/stream/-$$Lambda$okJigbB9kSn__oCZ5Do9uFNyF6A;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$ono9Bp0lMrKbIRfAAYdycY0_qag;-><init>()V
-HSPLjava/util/stream/-$$Lambda$ono9Bp0lMrKbIRfAAYdycY0_qag;->applyAsInt(II)I
-HSPLjava/util/stream/-$$Lambda$opQ7JxjVCJzqzgTxGU3LVtqC7is;-><init>()V
 HSPLjava/util/stream/-$$Lambda$opQ7JxjVCJzqzgTxGU3LVtqC7is;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$r-8H_R_mZJjp9wd0XTLoEAHMNQ0;-><init>()V
 HSPLjava/util/stream/-$$Lambda$r-8H_R_mZJjp9wd0XTLoEAHMNQ0;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$ry7iWszBr7beYy31SdRxibDyciQ;-><init>()V
-HSPLjava/util/stream/-$$Lambda$ry7iWszBr7beYy31SdRxibDyciQ;->get()Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$sKPaOkcQePGTRevrwmKVVhCTmTo;-><init>()V
-HSPLjava/util/stream/-$$Lambda$sKPaOkcQePGTRevrwmKVVhCTmTo;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$uJ6CkL42Bk73jN5EzP0Fx7o1eVA;-><init>()V
 HSPLjava/util/stream/-$$Lambda$uJ6CkL42Bk73jN5EzP0Fx7o1eVA;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLjava/util/stream/-$$Lambda$wFoiz-RiPqYBPe0X4aSzbj2iL3g;-><init>()V
-HSPLjava/util/stream/-$$Lambda$wFoiz-RiPqYBPe0X4aSzbj2iL3g;->apply(I)Ljava/lang/Object;
-HSPLjava/util/stream/-$$Lambda$yTqQxkqu88ZhKI6fWaTTLwOLF60;-><init>()V
 HSPLjava/util/stream/-$$Lambda$yTqQxkqu88ZhKI6fWaTTLwOLF60;->get()Ljava/lang/Object;
+HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
 HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
-HSPLjava/util/stream/AbstractPipeline;->close()V
 HSPLjava/util/stream/AbstractPipeline;->copyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
+HSPLjava/util/stream/AbstractPipeline;->copyIntoWithCancel(Ljava/util/stream/Sink;Ljava/util/Spliterator;)V
+HSPLjava/util/stream/AbstractPipeline;->evaluate(Ljava/util/Spliterator;ZLjava/util/function/IntFunction;)Ljava/util/stream/Node;
 HSPLjava/util/stream/AbstractPipeline;->evaluate(Ljava/util/stream/TerminalOp;)Ljava/lang/Object;
 HSPLjava/util/stream/AbstractPipeline;->evaluateToArrayNode(Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
+HSPLjava/util/stream/AbstractPipeline;->exactOutputSizeIfKnown(Ljava/util/Spliterator;)J
+HSPLjava/util/stream/AbstractPipeline;->getStreamAndOpFlags()I
 HSPLjava/util/stream/AbstractPipeline;->isParallel()Z
-HSPLjava/util/stream/AbstractPipeline;->sequential()Ljava/util/stream/BaseStream;
+HSPLjava/util/stream/AbstractPipeline;->onClose(Ljava/lang/Runnable;)Ljava/util/stream/BaseStream;
 HSPLjava/util/stream/AbstractPipeline;->sourceSpliterator(I)Ljava/util/Spliterator;
 HSPLjava/util/stream/AbstractPipeline;->sourceStageSpliterator()Ljava/util/Spliterator;
 HSPLjava/util/stream/AbstractPipeline;->spliterator()Ljava/util/Spliterator;
 HSPLjava/util/stream/AbstractPipeline;->wrapAndCopyInto(Ljava/util/stream/Sink;Ljava/util/Spliterator;)Ljava/util/stream/Sink;
-HSPLjava/util/stream/Collector$Characteristics;-><init>(Ljava/lang/String;I)V
-HSPLjava/util/stream/Collector$Characteristics;->values()[Ljava/util/stream/Collector$Characteristics;
-HSPLjava/util/stream/Collector;->of(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;[Ljava/util/stream/Collector$Characteristics;)Ljava/util/stream/Collector;
+HSPLjava/util/stream/AbstractPipeline;->wrapSink(Ljava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/AbstractSpinedBuffer;-><init>()V
+HSPLjava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/Set;)V
+HSPLjava/util/stream/Collectors$CollectorImpl;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;Ljava/util/function/Function;Ljava/util/Set;)V
 HSPLjava/util/stream/Collectors$CollectorImpl;->accumulator()Ljava/util/function/BiConsumer;
 HSPLjava/util/stream/Collectors$CollectorImpl;->characteristics()Ljava/util/Set;
 HSPLjava/util/stream/Collectors$CollectorImpl;->combiner()Ljava/util/function/BinaryOperator;
 HSPLjava/util/stream/Collectors$CollectorImpl;->finisher()Ljava/util/function/Function;
 HSPLjava/util/stream/Collectors$CollectorImpl;->supplier()Ljava/util/function/Supplier;
-HSPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;)Ljava/util/stream/Collector;
-HSPLjava/util/stream/Collectors;->groupingBy(Ljava/util/function/Function;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)Ljava/util/stream/Collector;
+HSPLjava/util/stream/Collectors;->access$000()Ljava/util/function/Function;
+HSPLjava/util/stream/Collectors;->castingIdentity()Ljava/util/function/Function;
 HSPLjava/util/stream/Collectors;->joining(Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
+HSPLjava/util/stream/Collectors;->joining(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/stream/Collector;
+HSPLjava/util/stream/Collectors;->lambda$joining$6(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Ljava/util/StringJoiner;
+HSPLjava/util/stream/Collectors;->mapMerger(Ljava/util/function/BinaryOperator;)Ljava/util/function/BinaryOperator;
 HSPLjava/util/stream/Collectors;->toCollection(Ljava/util/function/Supplier;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->toList()Ljava/util/stream/Collector;
-HSPLjava/util/stream/Collectors;->toMap(Ljava/util/function/Function;Ljava/util/function/Function;)Ljava/util/stream/Collector;
 HSPLjava/util/stream/Collectors;->toSet()Ljava/util/stream/Collector;
+HSPLjava/util/stream/DistinctOps$1$2;-><init>(Ljava/util/stream/DistinctOps$1;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/DistinctOps$1$2;->accept(Ljava/lang/Object;)V
 HSPLjava/util/stream/DistinctOps$1$2;->begin(J)V
 HSPLjava/util/stream/DistinctOps$1$2;->end()V
+HSPLjava/util/stream/DistinctOps$1;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/DistinctOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/DistinctOps;->makeRef(Ljava/util/stream/AbstractPipeline;)Ljava/util/stream/ReferencePipeline;
+HSPLjava/util/stream/FindOps$FindOp;-><init>(ZLjava/util/stream/StreamShape;Ljava/lang/Object;Ljava/util/function/Predicate;Ljava/util/function/Supplier;)V
 HSPLjava/util/stream/FindOps$FindOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
 HSPLjava/util/stream/FindOps$FindOp;->getOpFlags()I
+HSPLjava/util/stream/FindOps$FindSink$OfRef;-><init>()V
 HSPLjava/util/stream/FindOps$FindSink$OfRef;->get()Ljava/lang/Object;
+HSPLjava/util/stream/FindOps$FindSink$OfRef;->get()Ljava/util/Optional;
+HSPLjava/util/stream/FindOps$FindSink;-><init>()V
 HSPLjava/util/stream/FindOps$FindSink;->accept(Ljava/lang/Object;)V
 HSPLjava/util/stream/FindOps$FindSink;->cancellationRequested()Z
-HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/FindOps;->makeRef(Z)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/ForEachOps$ForEachOp$OfRef;-><init>(Ljava/util/function/Consumer;Z)V
+HSPLjava/util/stream/ForEachOps$ForEachOp;-><init>(Z)V
 HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
 HSPLjava/util/stream/ForEachOps$ForEachOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Void;
 HSPLjava/util/stream/ForEachOps$ForEachOp;->get()Ljava/lang/Void;
 HSPLjava/util/stream/ForEachOps$ForEachOp;->getOpFlags()I
-HSPLjava/util/stream/IntPipeline$4$1;->accept(I)V
-HSPLjava/util/stream/IntPipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/ForEachOps;->makeRef(Ljava/util/function/Consumer;Z)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/IntPipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
+HSPLjava/util/stream/IntPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/IntPipeline$StatelessOp;->opIsStateful()Z
-HSPLjava/util/stream/IntPipeline;->anyMatch(Ljava/util/function/IntPredicate;)Z
-HSPLjava/util/stream/IntPipeline;->boxed()Ljava/util/stream/Stream;
-HSPLjava/util/stream/IntPipeline;->distinct()Ljava/util/stream/IntStream;
-HSPLjava/util/stream/IntPipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
+HSPLjava/util/stream/IntPipeline;-><init>(Ljava/util/Spliterator;IZ)V
+HSPLjava/util/stream/IntPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
 HSPLjava/util/stream/IntPipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
-HSPLjava/util/stream/IntPipeline;->sum()I
 HSPLjava/util/stream/IntPipeline;->toArray()[I
-HSPLjava/util/stream/IntStream;->of([I)Ljava/util/stream/IntStream;
+HSPLjava/util/stream/LongPipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/LongPipeline$StatelessOp;->opIsStateful()Z
+HSPLjava/util/stream/LongPipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
+HSPLjava/util/stream/LongPipeline;->reduce(JLjava/util/function/LongBinaryOperator;)J
+HSPLjava/util/stream/LongPipeline;->sum()J
+HSPLjava/util/stream/MatchOps$1MatchSink;-><init>(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Predicate;)V
 HSPLjava/util/stream/MatchOps$1MatchSink;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/MatchOps$BooleanTerminalSink;-><init>(Ljava/util/stream/MatchOps$MatchKind;)V
 HSPLjava/util/stream/MatchOps$BooleanTerminalSink;->cancellationRequested()Z
 HSPLjava/util/stream/MatchOps$BooleanTerminalSink;->getAndClearState()Z
-HSPLjava/util/stream/MatchOps$MatchKind;-><init>(Ljava/lang/String;IZZ)V
+HSPLjava/util/stream/MatchOps$MatchKind;->access$000(Ljava/util/stream/MatchOps$MatchKind;)Z
+HSPLjava/util/stream/MatchOps$MatchKind;->access$100(Ljava/util/stream/MatchOps$MatchKind;)Z
+HSPLjava/util/stream/MatchOps$MatchOp;-><init>(Ljava/util/stream/StreamShape;Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Supplier;)V
+HSPLjava/util/stream/MatchOps$MatchOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Boolean;
 HSPLjava/util/stream/MatchOps$MatchOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
 HSPLjava/util/stream/MatchOps$MatchOp;->getOpFlags()I
+HSPLjava/util/stream/MatchOps;->lambda$makeRef$0(Ljava/util/stream/MatchOps$MatchKind;Ljava/util/function/Predicate;)Ljava/util/stream/MatchOps$BooleanTerminalSink;
+HSPLjava/util/stream/MatchOps;->makeRef(Ljava/util/function/Predicate;Ljava/util/stream/MatchOps$MatchKind;)Ljava/util/stream/TerminalOp;
 HSPLjava/util/stream/Node;->getChildCount()I
-HSPLjava/util/stream/Nodes$ArrayNode;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-HSPLjava/util/stream/Nodes$EmptyNode$OfDouble;-><init>()V
-HSPLjava/util/stream/Nodes$EmptyNode$OfInt;-><init>()V
-HSPLjava/util/stream/Nodes$EmptyNode$OfLong;-><init>()V
-HSPLjava/util/stream/Nodes$EmptyNode$OfRef;-><init>(Ljava/util/stream/Nodes$1;)V
-HSPLjava/util/stream/Nodes$FixedNodeBuilder;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/Nodes$FixedNodeBuilder;->begin(J)V
-HSPLjava/util/stream/Nodes$FixedNodeBuilder;->build()Ljava/util/stream/Node;
-HSPLjava/util/stream/Nodes$FixedNodeBuilder;->end()V
+HSPLjava/util/stream/Nodes$IntArrayNode;-><init>(J)V
 HSPLjava/util/stream/Nodes$IntArrayNode;->asPrimitiveArray()Ljava/lang/Object;
 HSPLjava/util/stream/Nodes$IntArrayNode;->asPrimitiveArray()[I
+HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;-><init>(J)V
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->accept(I)V
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->begin(J)V
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->build()Ljava/util/stream/Node$OfInt;
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->build()Ljava/util/stream/Node;
 HSPLjava/util/stream/Nodes$IntFixedNodeBuilder;->end()V
-HSPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->accept(I)V
-HSPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->asPrimitiveArray()Ljava/lang/Object;
-HSPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->begin(J)V
-HSPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->build()Ljava/util/stream/Node;
-HSPLjava/util/stream/Nodes$IntSpinedNodeBuilder;->end()V
-HSPLjava/util/stream/Nodes$SpinedNodeBuilder;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/Nodes$SpinedNodeBuilder;->asArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-HSPLjava/util/stream/Nodes$SpinedNodeBuilder;->begin(J)V
-HSPLjava/util/stream/Nodes$SpinedNodeBuilder;->build()Ljava/util/stream/Node;
-HSPLjava/util/stream/Nodes$SpinedNodeBuilder;->end()V
+HSPLjava/util/stream/Nodes;->builder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/Nodes;->flatten(Ljava/util/stream/Node;Ljava/util/function/IntFunction;)Ljava/util/stream/Node;
 HSPLjava/util/stream/Nodes;->flattenInt(Ljava/util/stream/Node$OfInt;)Ljava/util/stream/Node$OfInt;
+HSPLjava/util/stream/Nodes;->intBuilder(J)Ljava/util/stream/Node$Builder$OfInt;
 HSPLjava/util/stream/PipelineHelper;-><init>()V
-HSPLjava/util/stream/ReduceOps$2;->makeSink()Ljava/util/stream/ReduceOps$2ReducingSink;
-HSPLjava/util/stream/ReduceOps$2;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
-HSPLjava/util/stream/ReduceOps$2ReducingSink;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/ReduceOps$2ReducingSink;->begin(J)V
-HSPLjava/util/stream/ReduceOps$2ReducingSink;->get()Ljava/lang/Object;
-HSPLjava/util/stream/ReduceOps$2ReducingSink;->get()Ljava/util/Optional;
+HSPLjava/util/stream/ReduceOps$2;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/BinaryOperator;)V
+HSPLjava/util/stream/ReduceOps$3;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/BinaryOperator;Ljava/util/function/BiConsumer;Ljava/util/function/Supplier;Ljava/util/stream/Collector;)V
 HSPLjava/util/stream/ReduceOps$3;->getOpFlags()I
 HSPLjava/util/stream/ReduceOps$3;->makeSink()Ljava/util/stream/ReduceOps$3ReducingSink;
 HSPLjava/util/stream/ReduceOps$3;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
+HSPLjava/util/stream/ReduceOps$3ReducingSink;-><init>(Ljava/util/function/Supplier;Ljava/util/function/BiConsumer;Ljava/util/function/BinaryOperator;)V
 HSPLjava/util/stream/ReduceOps$3ReducingSink;->accept(Ljava/lang/Object;)V
 HSPLjava/util/stream/ReduceOps$3ReducingSink;->begin(J)V
-HSPLjava/util/stream/ReduceOps$5;->makeSink()Ljava/util/stream/ReduceOps$5ReducingSink;
-HSPLjava/util/stream/ReduceOps$5;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
-HSPLjava/util/stream/ReduceOps$5ReducingSink;->accept(I)V
-HSPLjava/util/stream/ReduceOps$5ReducingSink;->begin(J)V
-HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Integer;
-HSPLjava/util/stream/ReduceOps$5ReducingSink;->get()Ljava/lang/Object;
+HSPLjava/util/stream/ReduceOps$8;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/LongBinaryOperator;J)V
 HSPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$8ReducingSink;
 HSPLjava/util/stream/ReduceOps$8;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
+HSPLjava/util/stream/ReduceOps$8ReducingSink;-><init>(JLjava/util/function/LongBinaryOperator;)V
 HSPLjava/util/stream/ReduceOps$8ReducingSink;->accept(J)V
 HSPLjava/util/stream/ReduceOps$8ReducingSink;->begin(J)V
 HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Long;
 HSPLjava/util/stream/ReduceOps$8ReducingSink;->get()Ljava/lang/Object;
+HSPLjava/util/stream/ReduceOps$Box;-><init>()V
 HSPLjava/util/stream/ReduceOps$Box;->get()Ljava/lang/Object;
 HSPLjava/util/stream/ReduceOps$ReduceOp;-><init>(Ljava/util/stream/StreamShape;)V
 HSPLjava/util/stream/ReduceOps$ReduceOp;->evaluateSequential(Ljava/util/stream/PipelineHelper;Ljava/util/Spliterator;)Ljava/lang/Object;
+HSPLjava/util/stream/ReduceOps;->makeLong(JLjava/util/function/LongBinaryOperator;)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/util/function/BinaryOperator;)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/util/stream/Collector;)Ljava/util/stream/TerminalOp;
+HSPLjava/util/stream/ReferencePipeline$2$1;-><init>(Ljava/util/stream/ReferencePipeline$2;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$2$1;->accept(Ljava/lang/Object;)V
 HSPLjava/util/stream/ReferencePipeline$2$1;->begin(J)V
+HSPLjava/util/stream/ReferencePipeline$2;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Predicate;)V
 HSPLjava/util/stream/ReferencePipeline$2;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/ReferencePipeline$3$1;-><init>(Ljava/util/stream/ReferencePipeline$3;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$3$1;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/ReferencePipeline$3;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V
 HSPLjava/util/stream/ReferencePipeline$3;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/ReferencePipeline$4$1;-><init>(Ljava/util/stream/ReferencePipeline$4;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$4$1;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/ReferencePipeline$4;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToIntFunction;)V
 HSPLjava/util/stream/ReferencePipeline$4;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/ReferencePipeline$5$1;-><init>(Ljava/util/stream/ReferencePipeline$5;Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/ReferencePipeline$5$1;->accept(Ljava/lang/Object;)V
+HSPLjava/util/stream/ReferencePipeline$5;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/ToLongFunction;)V
 HSPLjava/util/stream/ReferencePipeline$5;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-HSPLjava/util/stream/ReferencePipeline$7$1;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/ReferencePipeline$7$1;->begin(J)V
-HSPLjava/util/stream/ReferencePipeline$7;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
+HSPLjava/util/stream/ReferencePipeline$7;-><init>(Ljava/util/stream/ReferencePipeline;Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;ILjava/util/function/Function;)V
+HSPLjava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
 HSPLjava/util/stream/ReferencePipeline$Head;->forEach(Ljava/util/function/Consumer;)V
+HSPLjava/util/stream/ReferencePipeline$StatefulOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/ReferencePipeline$StatefulOp;->opIsStateful()Z
+HSPLjava/util/stream/ReferencePipeline$StatelessOp;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/stream/StreamShape;I)V
 HSPLjava/util/stream/ReferencePipeline$StatelessOp;->opIsStateful()Z
+HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
+HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/stream/AbstractPipeline;I)V
 HSPLjava/util/stream/ReferencePipeline;->anyMatch(Ljava/util/function/Predicate;)Z
 HSPLjava/util/stream/ReferencePipeline;->collect(Ljava/util/stream/Collector;)Ljava/lang/Object;
 HSPLjava/util/stream/ReferencePipeline;->count()J
+HSPLjava/util/stream/ReferencePipeline;->distinct()Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->filter(Ljava/util/function/Predicate;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/ReferencePipeline;->findAny()Ljava/util/Optional;
 HSPLjava/util/stream/ReferencePipeline;->findFirst()Ljava/util/Optional;
 HSPLjava/util/stream/ReferencePipeline;->flatMap(Ljava/util/function/Function;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->forEach(Ljava/util/function/Consumer;)V
 HSPLjava/util/stream/ReferencePipeline;->forEachWithCancel(Ljava/util/Spliterator;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/ReferencePipeline;->limit(J)Ljava/util/stream/Stream;
+HSPLjava/util/stream/ReferencePipeline;->lambda$count$2(Ljava/lang/Object;)J
 HSPLjava/util/stream/ReferencePipeline;->makeNodeBuilder(JLjava/util/function/IntFunction;)Ljava/util/stream/Node$Builder;
 HSPLjava/util/stream/ReferencePipeline;->map(Ljava/util/function/Function;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->mapToInt(Ljava/util/function/ToIntFunction;)Ljava/util/stream/IntStream;
-HSPLjava/util/stream/ReferencePipeline;->max(Ljava/util/Comparator;)Ljava/util/Optional;
-HSPLjava/util/stream/ReferencePipeline;->noneMatch(Ljava/util/function/Predicate;)Z
+HSPLjava/util/stream/ReferencePipeline;->mapToLong(Ljava/util/function/ToLongFunction;)Ljava/util/stream/LongStream;
+HSPLjava/util/stream/ReferencePipeline;->reduce(Ljava/util/function/BinaryOperator;)Ljava/util/Optional;
 HSPLjava/util/stream/ReferencePipeline;->sorted(Ljava/util/Comparator;)Ljava/util/stream/Stream;
 HSPLjava/util/stream/ReferencePipeline;->toArray(Ljava/util/function/IntFunction;)[Ljava/lang/Object;
-HSPLjava/util/stream/Sink$ChainedInt;->begin(J)V
+HSPLjava/util/stream/Sink$ChainedInt;-><init>(Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/Sink$ChainedInt;->end()V
+HSPLjava/util/stream/Sink$ChainedReference;-><init>(Ljava/util/stream/Sink;)V
 HSPLjava/util/stream/Sink$ChainedReference;->begin(J)V
 HSPLjava/util/stream/Sink$ChainedReference;->cancellationRequested()Z
 HSPLjava/util/stream/Sink$ChainedReference;->end()V
 HSPLjava/util/stream/Sink;->begin(J)V
-HSPLjava/util/stream/Sink;->cancellationRequested()Z
 HSPLjava/util/stream/Sink;->end()V
-HSPLjava/util/stream/SliceOps$1$1;-><init>(Ljava/util/stream/SliceOps$1;Ljava/util/stream/Sink;)V
-HSPLjava/util/stream/SliceOps$1$1;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/SliceOps$1$1;->begin(J)V
-HSPLjava/util/stream/SliceOps$1$1;->cancellationRequested()Z
-HSPLjava/util/stream/SliceOps$1;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-HSPLjava/util/stream/SliceOps;->makeRef(Ljava/util/stream/AbstractPipeline;JJ)Ljava/util/stream/Stream;
-HSPLjava/util/stream/SortedOps$OfRef;->opWrapSink(ILjava/util/stream/Sink;)Ljava/util/stream/Sink;
-HSPLjava/util/stream/SortedOps$RefSortingSink;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/SortedOps$RefSortingSink;->begin(J)V
-HSPLjava/util/stream/SortedOps$RefSortingSink;->end()V
-HSPLjava/util/stream/SpinedBuffer$OfInt;->arrayLength(Ljava/lang/Object;)I
-HSPLjava/util/stream/SpinedBuffer$OfInt;->arrayLength([I)I
-HSPLjava/util/stream/SpinedBuffer$OfInt;->count()J
-HSPLjava/util/stream/SpinedBuffer$OfPrimitive;->capacity()J
-HSPLjava/util/stream/SpinedBuffer$OfPrimitive;->copyInto(Ljava/lang/Object;I)V
-HSPLjava/util/stream/SpinedBuffer$OfPrimitive;->ensureCapacity(J)V
-HSPLjava/util/stream/SpinedBuffer$OfPrimitive;->preAccept()V
-HSPLjava/util/stream/SpinedBuffer;->accept(Ljava/lang/Object;)V
-HSPLjava/util/stream/SpinedBuffer;->capacity()J
-HSPLjava/util/stream/SpinedBuffer;->clear()V
-HSPLjava/util/stream/SpinedBuffer;->copyInto([Ljava/lang/Object;I)V
-HSPLjava/util/stream/SpinedBuffer;->count()J
-HSPLjava/util/stream/SpinedBuffer;->ensureCapacity(J)V
-HSPLjava/util/stream/Stream;->concat(Ljava/util/stream/Stream;Ljava/util/stream/Stream;)Ljava/util/stream/Stream;
-HPLjava/util/stream/Stream;->empty()Ljava/util/stream/Stream;
-HSPLjava/util/stream/Stream;->generate(Ljava/util/function/Supplier;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/Stream;->of([Ljava/lang/Object;)Ljava/util/stream/Stream;
-HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->build()Ljava/util/Map;
-HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->clear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->mask(Ljava/util/stream/StreamOpFlag$Type;Ljava/lang/Integer;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-HSPLjava/util/stream/StreamOpFlag$MaskBuilder;->setAndClear(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-HSPLjava/util/stream/StreamOpFlag$Type;-><init>(Ljava/lang/String;I)V
-HSPLjava/util/stream/StreamOpFlag$Type;->values()[Ljava/util/stream/StreamOpFlag$Type;
-HSPLjava/util/stream/StreamOpFlag;-><init>(Ljava/lang/String;IILjava/util/stream/StreamOpFlag$MaskBuilder;)V
-HSPLjava/util/stream/StreamOpFlag;->createFlagMask()I
-HSPLjava/util/stream/StreamOpFlag;->createMask(Ljava/util/stream/StreamOpFlag$Type;)I
-HSPLjava/util/stream/StreamOpFlag;->set(Ljava/util/stream/StreamOpFlag$Type;)Ljava/util/stream/StreamOpFlag$MaskBuilder;
-HSPLjava/util/stream/StreamShape;-><init>(Ljava/lang/String;I)V
-HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator$OfRef;->tryAdvance(Ljava/util/function/Consumer;)Z
-HSPLjava/util/stream/StreamSpliterators$InfiniteSupplyingSpliterator;->characteristics()I
-HSPLjava/util/stream/Streams$ConcatSpliterator;->characteristics()I
-HSPLjava/util/stream/Streams$ConcatSpliterator;->estimateSize()J
-HSPLjava/util/stream/Streams$ConcatSpliterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/stream/Streams$ConcatSpliterator;->tryAdvance(Ljava/util/function/Consumer;)Z
+HSPLjava/util/stream/SortedOps$OfRef;-><init>(Ljava/util/stream/AbstractPipeline;Ljava/util/Comparator;)V
+HSPLjava/util/stream/SortedOps;->makeRef(Ljava/util/stream/AbstractPipeline;Ljava/util/Comparator;)Ljava/util/stream/Stream;
+HSPLjava/util/stream/SpinedBuffer;-><init>()V
+HSPLjava/util/stream/StreamOpFlag;->combineOpFlags(II)I
+HSPLjava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I
+HSPLjava/util/stream/StreamOpFlag;->getMask(I)I
+HSPLjava/util/stream/StreamOpFlag;->isKnown(I)Z
+HSPLjava/util/stream/StreamSupport;->intStream(Ljava/util/Spliterator$OfInt;Z)Ljava/util/stream/IntStream;
+HSPLjava/util/stream/StreamSupport;->stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
 HSPLjava/util/stream/TerminalOp;->getOpFlags()I
-HSPLjava/util/zip/Adler32;-><init>()V
-HSPLjava/util/zip/Adler32;->getValue()J
-HSPLjava/util/zip/Adler32;->update([B)V
 HSPLjava/util/zip/CRC32;-><init>()V
 HSPLjava/util/zip/CRC32;->getValue()J
 HSPLjava/util/zip/CRC32;->reset()V
 HSPLjava/util/zip/CRC32;->update(I)V
-HSPLjava/util/zip/CRC32;->update([B)V
 HSPLjava/util/zip/CRC32;->update([BII)V
+HSPLjava/util/zip/CheckedInputStream;-><init>(Ljava/io/InputStream;Ljava/util/zip/Checksum;)V
 HSPLjava/util/zip/CheckedInputStream;->read()I
+HSPLjava/util/zip/CheckedInputStream;->read([BII)I
 HSPLjava/util/zip/Deflater;-><init>(IZ)V
 HSPLjava/util/zip/Deflater;->deflate([BII)I
 HSPLjava/util/zip/Deflater;->deflate([BIII)I
@@ -30424,23 +20954,32 @@
 HSPLjava/util/zip/Deflater;->getTotalIn()I
 HSPLjava/util/zip/Deflater;->needsInput()Z
 HSPLjava/util/zip/Deflater;->setInput([BII)V
-HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;)V
 HSPLjava/util/zip/DeflaterOutputStream;-><init>(Ljava/io/OutputStream;Ljava/util/zip/Deflater;IZ)V
 HSPLjava/util/zip/DeflaterOutputStream;->close()V
 HSPLjava/util/zip/DeflaterOutputStream;->deflate()V
 HSPLjava/util/zip/DeflaterOutputStream;->finish()V
 HSPLjava/util/zip/DeflaterOutputStream;->flush()V
 HSPLjava/util/zip/DeflaterOutputStream;->write([BII)V
+HSPLjava/util/zip/GZIPInputStream$1;-><init>(Ljava/util/zip/GZIPInputStream;Ljava/io/InputStream;)V
 HSPLjava/util/zip/GZIPInputStream;-><init>(Ljava/io/InputStream;)V
 HSPLjava/util/zip/GZIPInputStream;-><init>(Ljava/io/InputStream;I)V
 HSPLjava/util/zip/GZIPInputStream;->close()V
+HSPLjava/util/zip/GZIPInputStream;->ensureOpen()V
 HSPLjava/util/zip/GZIPInputStream;->read([BII)I
 HSPLjava/util/zip/GZIPInputStream;->readHeader(Ljava/io/InputStream;)I
 HSPLjava/util/zip/GZIPInputStream;->readTrailer()Z
 HSPLjava/util/zip/GZIPInputStream;->readUByte(Ljava/io/InputStream;)I
+HSPLjava/util/zip/GZIPInputStream;->readUInt(Ljava/io/InputStream;)J
+HSPLjava/util/zip/GZIPInputStream;->readUShort(Ljava/io/InputStream;)I
+HSPLjava/util/zip/GZIPInputStream;->skipBytes(Ljava/io/InputStream;I)V
 HSPLjava/util/zip/GZIPOutputStream;-><init>(Ljava/io/OutputStream;)V
+HSPLjava/util/zip/GZIPOutputStream;-><init>(Ljava/io/OutputStream;IZ)V
 HSPLjava/util/zip/GZIPOutputStream;->finish()V
 HSPLjava/util/zip/GZIPOutputStream;->write([BII)V
+HSPLjava/util/zip/GZIPOutputStream;->writeHeader()V
+HSPLjava/util/zip/GZIPOutputStream;->writeInt(I[BI)V
+HSPLjava/util/zip/GZIPOutputStream;->writeShort(I[BI)V
+HSPLjava/util/zip/GZIPOutputStream;->writeTrailer([BI)V
 HSPLjava/util/zip/Inflater;-><init>(Z)V
 HSPLjava/util/zip/Inflater;->end()V
 HSPLjava/util/zip/Inflater;->ended()Z
@@ -30457,78 +20996,113 @@
 HSPLjava/util/zip/InflaterInputStream;-><init>(Ljava/io/InputStream;Ljava/util/zip/Inflater;I)V
 HSPLjava/util/zip/InflaterInputStream;->available()I
 HSPLjava/util/zip/InflaterInputStream;->close()V
+HSPLjava/util/zip/InflaterInputStream;->ensureOpen()V
 HSPLjava/util/zip/InflaterInputStream;->fill()V
 HSPLjava/util/zip/InflaterInputStream;->read()I
 HSPLjava/util/zip/InflaterInputStream;->read([BII)I
+HSPLjava/util/zip/ZStreamRef;-><init>(J)V
 HSPLjava/util/zip/ZStreamRef;->address()J
 HSPLjava/util/zip/ZStreamRef;->clear()V
+HSPLjava/util/zip/ZipCoder;-><init>(Ljava/nio/charset/Charset;)V
+HSPLjava/util/zip/ZipCoder;->decoder()Ljava/nio/charset/CharsetDecoder;
+HSPLjava/util/zip/ZipCoder;->encoder()Ljava/nio/charset/CharsetEncoder;
+HSPLjava/util/zip/ZipCoder;->get(Ljava/nio/charset/Charset;)Ljava/util/zip/ZipCoder;
 HSPLjava/util/zip/ZipCoder;->getBytes(Ljava/lang/String;)[B
+HSPLjava/util/zip/ZipCoder;->isUTF8()Z
 HSPLjava/util/zip/ZipCoder;->toString([BI)Ljava/lang/String;
-HSPLjava/util/zip/ZipEntry;-><init>(Ljava/lang/String;Ljava/lang/String;JJJII[BJ)V
+HSPLjava/util/zip/ZipEntry;-><init>()V
 HSPLjava/util/zip/ZipEntry;-><init>(Ljava/util/zip/ZipEntry;)V
-HSPLjava/util/zip/ZipEntry;->getCompressedSize()J
-HSPLjava/util/zip/ZipEntry;->getDataOffset()J
 HSPLjava/util/zip/ZipEntry;->getMethod()I
 HSPLjava/util/zip/ZipEntry;->getName()Ljava/lang/String;
 HSPLjava/util/zip/ZipEntry;->getSize()J
 HSPLjava/util/zip/ZipEntry;->isDirectory()Z
 HSPLjava/util/zip/ZipEntry;->setExtra0([BZ)V
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;-><init>(Ljava/util/zip/ZipFile;)V
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry;
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object;
+HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry;
+HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;-><init>(Ljava/util/zip/ZipFile;Ljava/util/zip/ZipFile$ZipFileInputStream;Ljava/util/zip/Inflater;I)V
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->available()I
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->close()V
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->fill()V
 HSPLjava/util/zip/ZipFile$ZipFileInflaterInputStream;->finalize()V
+HSPLjava/util/zip/ZipFile$ZipFileInputStream;-><init>(Ljava/util/zip/ZipFile;J)V
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->close()V
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->finalize()V
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read()I
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->read([BII)I
 HSPLjava/util/zip/ZipFile$ZipFileInputStream;->size()J
+HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
 HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;ILjava/nio/charset/Charset;)V
 HSPLjava/util/zip/ZipFile;-><init>(Ljava/lang/String;)V
+HSPLjava/util/zip/ZipFile;->access$000(Ljava/util/zip/ZipFile;)Ljava/util/Map;
+HSPLjava/util/zip/ZipFile;->access$100(Ljava/util/zip/ZipFile;Ljava/util/zip/Inflater;)V
+HSPLjava/util/zip/ZipFile;->access$1000(JJ)V
+HSPLjava/util/zip/ZipFile;->access$1100(J)J
+HSPLjava/util/zip/ZipFile;->access$1200(J)J
+HSPLjava/util/zip/ZipFile;->access$1300(Ljava/util/zip/ZipFile;)V
+HSPLjava/util/zip/ZipFile;->access$1400(JJJ[BII)I
+HSPLjava/util/zip/ZipFile;->access$200(Ljava/util/zip/ZipFile;)V
+HSPLjava/util/zip/ZipFile;->access$300(Ljava/util/zip/ZipFile;)I
+HSPLjava/util/zip/ZipFile;->access$400(Ljava/util/zip/ZipFile;)J
+HSPLjava/util/zip/ZipFile;->access$500(JI)J
+HSPLjava/util/zip/ZipFile;->access$900(Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
 HSPLjava/util/zip/ZipFile;->close()V
 HSPLjava/util/zip/ZipFile;->ensureOpen()V
+HSPLjava/util/zip/ZipFile;->ensureOpenOrZipException()V
+HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration;
 HSPLjava/util/zip/ZipFile;->finalize()V
 HSPLjava/util/zip/ZipFile;->getEntry(Ljava/lang/String;)Ljava/util/zip/ZipEntry;
 HSPLjava/util/zip/ZipFile;->getInflater()Ljava/util/zip/Inflater;
 HSPLjava/util/zip/ZipFile;->getInputStream(Ljava/util/zip/ZipEntry;)Ljava/io/InputStream;
 HSPLjava/util/zip/ZipFile;->getZipEntry(Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
 HSPLjava/util/zip/ZipFile;->releaseInflater(Ljava/util/zip/Inflater;)V
-HSPLjavax/crypto/Cipher$InitType;-><init>(Ljava/lang/String;I)V
-HSPLjavax/crypto/Cipher$InitType;->values()[Ljavax/crypto/Cipher$InitType;
-HSPLjavax/crypto/Cipher$NeedToSet;-><init>(Ljava/lang/String;I)V
+HSPLjava/util/zip/ZipUtils;->get16([BI)I
+HSPLjavax/crypto/Cipher$CipherSpiAndProvider;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
+HSPLjavax/crypto/Cipher$InitParams;-><init>(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/SecureRandom;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;)V
+HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;-><init>(Ljavax/crypto/Cipher;Ljava/security/Provider;Ljavax/crypto/CipherSpi;)V
 HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->setCipherSpiImplAndProvider(Ljavax/crypto/CipherSpi;Ljava/security/Provider;)V
 HSPLjavax/crypto/Cipher$SpiAndProviderUpdater;->updateAndGetSpiAndProvider(Ljavax/crypto/Cipher$InitParams;Ljavax/crypto/CipherSpi;Ljava/security/Provider;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
+HSPLjavax/crypto/Cipher$Transform;-><init>(Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;)V
+HSPLjavax/crypto/Cipher$Transform;->access$300(Ljavax/crypto/Cipher$Transform;)Ljava/lang/String;
+HSPLjavax/crypto/Cipher$Transform;->access$400(Ljavax/crypto/Cipher$Transform;)Ljavax/crypto/Cipher$NeedToSet;
+HSPLjavax/crypto/Cipher;-><init>(Ljavax/crypto/CipherSpi;Ljava/security/Provider;Ljava/lang/String;[Ljava/lang/String;)V
+HSPLjavax/crypto/Cipher;->access$002(Ljavax/crypto/Cipher;Ljavax/crypto/CipherSpi;)Ljavax/crypto/CipherSpi;
+HSPLjavax/crypto/Cipher;->access$102(Ljavax/crypto/Cipher;Ljava/security/Provider;)Ljava/security/Provider;
+HSPLjavax/crypto/Cipher;->access$200(Ljavax/crypto/Cipher;)[Ljava/lang/String;
 HSPLjavax/crypto/Cipher;->checkCipherState()V
+HSPLjavax/crypto/Cipher;->checkOpmode(I)V
 HSPLjavax/crypto/Cipher;->chooseProvider(Ljavax/crypto/Cipher$InitType;ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/AlgorithmParameters;Ljava/security/SecureRandom;)V
 HSPLjavax/crypto/Cipher;->createCipher(Ljava/lang/String;Ljava/security/Provider;)Ljavax/crypto/Cipher;
 HSPLjavax/crypto/Cipher;->doFinal([B)[B
 HSPLjavax/crypto/Cipher;->doFinal([BII)[B
-HSPLjavax/crypto/Cipher;->doFinal([BII[BI)I
-HSPLjavax/crypto/Cipher;->getIV()[B
 HSPLjavax/crypto/Cipher;->getInstance(Ljava/lang/String;)Ljavax/crypto/Cipher;
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;)V
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/SecureRandom;)V
 HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
+HSPLjavax/crypto/Cipher;->init(ILjava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
+HSPLjavax/crypto/Cipher;->matchAttribute(Ljava/security/Provider$Service;Ljava/lang/String;Ljava/lang/String;)Z
 HSPLjavax/crypto/Cipher;->tokenizeTransformation(Ljava/lang/String;)[Ljava/lang/String;
 HSPLjavax/crypto/Cipher;->tryCombinations(Ljavax/crypto/Cipher$InitParams;Ljava/security/Provider;[Ljava/lang/String;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
 HSPLjavax/crypto/Cipher;->tryTransformWithProvider(Ljavax/crypto/Cipher$InitParams;[Ljava/lang/String;Ljavax/crypto/Cipher$NeedToSet;Ljava/security/Provider$Service;)Ljavax/crypto/Cipher$CipherSpiAndProvider;
 HSPLjavax/crypto/Cipher;->updateProviderIfNeeded()V
 HSPLjavax/crypto/CipherSpi;-><init>()V
+HSPLjavax/crypto/JceSecurity;->canUseProvider(Ljava/security/Provider;)Z
 HSPLjavax/crypto/KeyGenerator;-><init>(Ljava/lang/String;)V
 HSPLjavax/crypto/KeyGenerator;->generateKey()Ljavax/crypto/SecretKey;
 HSPLjavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
 HSPLjavax/crypto/KeyGenerator;->nextSpi(Ljavax/crypto/KeyGeneratorSpi;Z)Ljavax/crypto/KeyGeneratorSpi;
 HSPLjavax/crypto/KeyGeneratorSpi;-><init>()V
+HSPLjavax/crypto/Mac;-><init>(Ljava/lang/String;)V
 HSPLjavax/crypto/Mac;->chooseFirstProvider()V
 HSPLjavax/crypto/Mac;->chooseProvider(Ljava/security/Key;Ljava/security/spec/AlgorithmParameterSpec;)V
 HSPLjavax/crypto/Mac;->doFinal()[B
 HSPLjavax/crypto/Mac;->doFinal([B)[B
-HSPLjavax/crypto/Mac;->doFinal([BI)V
 HSPLjavax/crypto/Mac;->getInstance(Ljava/lang/String;)Ljavax/crypto/Mac;
-HSPLjavax/crypto/Mac;->getMacLength()I
 HSPLjavax/crypto/Mac;->init(Ljava/security/Key;)V
-HSPLjavax/crypto/Mac;->update(B)V
 HSPLjavax/crypto/Mac;->update([B)V
-HSPLjavax/crypto/Mac;->update([BII)V
 HSPLjavax/crypto/MacSpi;-><init>()V
 HSPLjavax/crypto/spec/GCMParameterSpec;-><init>(I[B)V
 HSPLjavax/crypto/spec/GCMParameterSpec;->getIV()[B
@@ -30537,22 +21111,25 @@
 HSPLjavax/crypto/spec/IvParameterSpec;-><init>([B)V
 HSPLjavax/crypto/spec/IvParameterSpec;-><init>([BII)V
 HSPLjavax/crypto/spec/IvParameterSpec;->getIV()[B
-HSPLjavax/crypto/spec/OAEPParameterSpec;-><init>()V
-HSPLjavax/crypto/spec/PSource$PSpecified;-><init>([B)V
 HSPLjavax/crypto/spec/SecretKeySpec;-><init>([BLjava/lang/String;)V
 HSPLjavax/crypto/spec/SecretKeySpec;->getEncoded()[B
 HSPLjavax/crypto/spec/SecretKeySpec;->getFormat()Ljava/lang/String;
-HSPLjavax/microedition/khronos/egl/EGLContext;->getEGL()Ljavax/microedition/khronos/egl/EGL;
+HSPLjavax/net/DefaultSocketFactory;-><init>()V
 HSPLjavax/net/DefaultSocketFactory;->createSocket()Ljava/net/Socket;
 HSPLjavax/net/DefaultSocketFactory;->createSocket(Ljava/net/InetAddress;I)Ljava/net/Socket;
 HSPLjavax/net/SocketFactory;-><init>()V
 HSPLjavax/net/SocketFactory;->getDefault()Ljavax/net/SocketFactory;
 HSPLjavax/net/ssl/ExtendedSSLSession;-><init>()V
+HSPLjavax/net/ssl/HttpsURLConnection$NoPreloadHolder;-><clinit>()V
 HSPLjavax/net/ssl/HttpsURLConnection;-><init>(Ljava/net/URL;)V
 HSPLjavax/net/ssl/HttpsURLConnection;->getDefaultHostnameVerifier()Ljavax/net/ssl/HostnameVerifier;
 HSPLjavax/net/ssl/HttpsURLConnection;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
 HSPLjavax/net/ssl/HttpsURLConnection;->setDefaultHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V
 HSPLjavax/net/ssl/HttpsURLConnection;->setDefaultSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V
+HSPLjavax/net/ssl/KeyManagerFactory$1;-><init>()V
+HSPLjavax/net/ssl/KeyManagerFactory$1;->run()Ljava/lang/Object;
+HSPLjavax/net/ssl/KeyManagerFactory$1;->run()Ljava/lang/String;
+HSPLjavax/net/ssl/KeyManagerFactory;-><init>(Ljavax/net/ssl/KeyManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjavax/net/ssl/KeyManagerFactory;->getDefaultAlgorithm()Ljava/lang/String;
 HSPLjavax/net/ssl/KeyManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/KeyManagerFactory;
 HSPLjavax/net/ssl/KeyManagerFactory;->getKeyManagers()[Ljavax/net/ssl/KeyManager;
@@ -30563,6 +21140,7 @@
 HSPLjavax/net/ssl/SNIHostName;->getAsciiName()Ljava/lang/String;
 HSPLjavax/net/ssl/SNIServerName;-><init>(I[B)V
 HSPLjavax/net/ssl/SNIServerName;->getType()I
+HSPLjavax/net/ssl/SSLContext;-><init>(Ljavax/net/ssl/SSLContextSpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLContext;->getDefault()Ljavax/net/ssl/SSLContext;
 HSPLjavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/SSLContext;
 HSPLjavax/net/ssl/SSLContext;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljavax/net/ssl/SSLContext;
@@ -30570,7 +21148,24 @@
 HSPLjavax/net/ssl/SSLContext;->init([Ljavax/net/ssl/KeyManager;[Ljavax/net/ssl/TrustManager;Ljava/security/SecureRandom;)V
 HSPLjavax/net/ssl/SSLContext;->setDefault(Ljavax/net/ssl/SSLContext;)V
 HSPLjavax/net/ssl/SSLContextSpi;-><init>()V
+HSPLjavax/net/ssl/SSLEngine;-><init>()V
+HSPLjavax/net/ssl/SSLEngine;->getSSLParameters()Ljavax/net/ssl/SSLParameters;
+HSPLjavax/net/ssl/SSLEngine;->setSSLParameters(Ljavax/net/ssl/SSLParameters;)V
+HSPLjavax/net/ssl/SSLEngine;->wrap([Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Ljavax/net/ssl/SSLEngineResult;
+HSPLjavax/net/ssl/SSLEngineResult$HandshakeStatus;-><clinit>()V
+HSPLjavax/net/ssl/SSLEngineResult$HandshakeStatus;-><init>(Ljava/lang/String;I)V
+HSPLjavax/net/ssl/SSLEngineResult$HandshakeStatus;->values()[Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
+HSPLjavax/net/ssl/SSLEngineResult$Status;-><clinit>()V
+HSPLjavax/net/ssl/SSLEngineResult$Status;-><init>(Ljava/lang/String;I)V
+HSPLjavax/net/ssl/SSLEngineResult$Status;->values()[Ljavax/net/ssl/SSLEngineResult$Status;
+HSPLjavax/net/ssl/SSLEngineResult;-><init>(Ljavax/net/ssl/SSLEngineResult$Status;Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;II)V
+HSPLjavax/net/ssl/SSLEngineResult;->bytesConsumed()I
+HSPLjavax/net/ssl/SSLEngineResult;->bytesProduced()I
+HSPLjavax/net/ssl/SSLEngineResult;->getHandshakeStatus()Ljavax/net/ssl/SSLEngineResult$HandshakeStatus;
+HSPLjavax/net/ssl/SSLEngineResult;->getStatus()Ljavax/net/ssl/SSLEngineResult$Status;
 HSPLjavax/net/ssl/SSLException;-><init>(Ljava/lang/String;)V
+HSPLjavax/net/ssl/SSLParameters;-><init>()V
+HSPLjavax/net/ssl/SSLParameters;->clone([Ljava/lang/String;)[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getApplicationProtocols()[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getCipherSuites()[Ljava/lang/String;
 HSPLjavax/net/ssl/SSLParameters;->getEndpointIdentificationAlgorithm()Ljava/lang/String;
@@ -30580,18 +21175,30 @@
 HSPLjavax/net/ssl/SSLParameters;->getUseCipherSuitesOrder()Z
 HSPLjavax/net/ssl/SSLParameters;->getWantClientAuth()Z
 HSPLjavax/net/ssl/SSLParameters;->setApplicationProtocols([Ljava/lang/String;)V
+HSPLjavax/net/ssl/SSLParameters;->setCipherSuites([Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLParameters;->setEndpointIdentificationAlgorithm(Ljava/lang/String;)V
+HSPLjavax/net/ssl/SSLParameters;->setProtocols([Ljava/lang/String;)V
 HSPLjavax/net/ssl/SSLParameters;->setServerNames(Ljava/util/List;)V
 HSPLjavax/net/ssl/SSLParameters;->setUseCipherSuitesOrder(Z)V
 HSPLjavax/net/ssl/SSLSocket;-><init>()V
 HSPLjavax/net/ssl/SSLSocket;->getSSLParameters()Ljavax/net/ssl/SSLParameters;
 HSPLjavax/net/ssl/SSLSocket;->setSSLParameters(Ljavax/net/ssl/SSLParameters;)V
+HSPLjavax/net/ssl/SSLSocketFactory$1;-><init>(Ljava/lang/String;)V
+HSPLjavax/net/ssl/SSLSocketFactory$1;->run()Ljava/lang/Object;
+HSPLjavax/net/ssl/SSLSocketFactory$1;->run()Ljava/lang/String;
 HSPLjavax/net/ssl/SSLSocketFactory;-><init>()V
 HSPLjavax/net/ssl/SSLSocketFactory;->getDefault()Ljavax/net/SocketFactory;
+HSPLjavax/net/ssl/SSLSocketFactory;->getSecurityProperty(Ljava/lang/String;)Ljava/lang/String;
+HSPLjavax/net/ssl/SSLSocketFactory;->log(Ljava/lang/String;)V
+HSPLjavax/net/ssl/TrustManagerFactory$1;-><init>()V
+HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/Object;
+HSPLjavax/net/ssl/TrustManagerFactory$1;->run()Ljava/lang/String;
+HSPLjavax/net/ssl/TrustManagerFactory;-><init>(Ljavax/net/ssl/TrustManagerFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V
 HSPLjavax/net/ssl/TrustManagerFactory;->getDefaultAlgorithm()Ljava/lang/String;
 HSPLjavax/net/ssl/TrustManagerFactory;->getInstance(Ljava/lang/String;)Ljavax/net/ssl/TrustManagerFactory;
 HSPLjavax/net/ssl/TrustManagerFactory;->getTrustManagers()[Ljavax/net/ssl/TrustManager;
 HSPLjavax/net/ssl/TrustManagerFactory;->init(Ljava/security/KeyStore;)V
+HSPLjavax/net/ssl/TrustManagerFactorySpi;-><init>()V
 HSPLjavax/net/ssl/X509ExtendedKeyManager;-><init>()V
 HSPLjavax/net/ssl/X509ExtendedTrustManager;-><init>()V
 HSPLjavax/security/auth/x500/X500Principal;-><init>(Ljava/lang/String;)V
@@ -30602,60 +21209,38 @@
 HSPLjavax/security/auth/x500/X500Principal;->getEncoded()[B
 HSPLjavax/security/auth/x500/X500Principal;->getName(Ljava/lang/String;)Ljava/lang/String;
 HSPLjavax/security/auth/x500/X500Principal;->hashCode()I
-HSPLjavax/security/cert/X509Certificate$1;-><init>()V
-HSPLjavax/security/cert/X509Certificate$1;->run()Ljava/lang/Object;
-HSPLjavax/security/cert/X509Certificate$1;->run()Ljava/lang/String;
-HSPLjavax/xml/parsers/DocumentBuilder;->parse(Ljava/io/InputStream;)Lorg/w3c/dom/Document;
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->isCoalescing()Z
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->isIgnoringComments()Z
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->isIgnoringElementContentWhitespace()Z
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->isNamespaceAware()Z
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->isValidating()Z
-HSPLjavax/xml/parsers/DocumentBuilderFactory;->newInstance()Ljavax/xml/parsers/DocumentBuilderFactory;
-HSPLjavax/xml/parsers/SAXParserFactory;->newInstance()Ljavax/xml/parsers/SAXParserFactory;
 HSPLlibcore/icu/DateIntervalFormat;->formatDateRange(JJILjava/lang/String;)Ljava/lang/String;
 HSPLlibcore/icu/DateIntervalFormat;->formatDateRange(Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;JJI)Ljava/lang/String;
 HSPLlibcore/icu/DateIntervalFormat;->getFormatter(Ljava/lang/String;Landroid/icu/util/ULocale;Landroid/icu/util/TimeZone;)Landroid/icu/text/DateIntervalFormat;
 HSPLlibcore/icu/DateIntervalFormat;->isExactlyMidnight(Landroid/icu/util/Calendar;)Z
+HSPLlibcore/icu/DateUtilsBridge;->createIcuCalendar(Landroid/icu/util/TimeZone;Landroid/icu/util/ULocale;J)Landroid/icu/util/Calendar;
+HSPLlibcore/icu/DateUtilsBridge;->fallInSameMonth(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z
 HSPLlibcore/icu/DateUtilsBridge;->fallOnDifferentDates(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;)Z
+HSPLlibcore/icu/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone;
 HSPLlibcore/icu/DateUtilsBridge;->toSkeleton(Landroid/icu/util/Calendar;Landroid/icu/util/Calendar;I)Ljava/lang/String;
-HSPLlibcore/icu/ICU;->addLikelySubtags(Ljava/util/Locale;)Ljava/util/Locale;
 HSPLlibcore/icu/ICU;->getBestDateTimePattern(Ljava/lang/String;Ljava/util/Locale;)Ljava/lang/String;
-HSPLlibcore/icu/ICU;->getDisplayLanguage(Ljava/util/Locale;Ljava/util/Locale;)Ljava/lang/String;
-HSPLlibcore/icu/ICU;->getISOCountries()[Ljava/lang/String;
-HSPLlibcore/icu/ICU;->getISOLanguages()[Ljava/lang/String;
-HSPLlibcore/icu/LocaleData;->get(Ljava/util/Locale;)Llibcore/icu/LocaleData;
 HSPLlibcore/icu/LocaleData;->getDateFormat(I)Ljava/lang/String;
 HSPLlibcore/icu/LocaleData;->getTimeFormat(I)Ljava/lang/String;
-HSPLlibcore/icu/LocaleData;->initLocaleData(Ljava/util/Locale;)Llibcore/icu/LocaleData;
-HSPLlibcore/icu/LocaleData;->initializePatternSeparator(Llibcore/icu/LocaleData;Ljava/util/Locale;)V
-HSPLlibcore/icu/LocaleData;->mapInvalidAndNullLocales(Ljava/util/Locale;)Ljava/util/Locale;
-HSPLlibcore/icu/RelativeDateTimeFormatter$FormatterCache;-><init>()V
-HSPLlibcore/icu/TimeZoneNames$1;-><init>()V
-HSPLlibcore/icu/TimeZoneNames$ZoneStringsCache;-><init>()V
 HSPLlibcore/internal/StringPool;-><init>()V
 HSPLlibcore/internal/StringPool;->get([CII)Ljava/lang/String;
 HSPLlibcore/io/BlockGuardOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
 HSPLlibcore/io/BlockGuardOs;->access(Ljava/lang/String;I)Z
 HSPLlibcore/io/BlockGuardOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress;
 HSPLlibcore/io/BlockGuardOs;->chmod(Ljava/lang/String;I)V
-HSPLlibcore/io/BlockGuardOs;->chown(Ljava/lang/String;II)V
 HSPLlibcore/io/BlockGuardOs;->close(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HSPLlibcore/io/BlockGuardOs;->fchmod(Ljava/io/FileDescriptor;I)V
-HSPLlibcore/io/BlockGuardOs;->fchown(Ljava/io/FileDescriptor;II)V
 HSPLlibcore/io/BlockGuardOs;->fdatasync(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/BlockGuardOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;
-HPLlibcore/io/BlockGuardOs;->fsync(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/BlockGuardOs;->ftruncate(Ljava/io/FileDescriptor;J)V
-HSPLlibcore/io/BlockGuardOs;->getxattr(Ljava/lang/String;Ljava/lang/String;)[B
+HSPLlibcore/io/BlockGuardOs;->isInetDomain(I)Z
+HSPLlibcore/io/BlockGuardOs;->isInetSocket(Ljava/io/FileDescriptor;)Z
+HSPLlibcore/io/BlockGuardOs;->isLingerSocket(Ljava/io/FileDescriptor;)Z
+HSPLlibcore/io/BlockGuardOs;->isUdpSocket(Ljava/io/FileDescriptor;)Z
 HSPLlibcore/io/BlockGuardOs;->lseek(Ljava/io/FileDescriptor;JI)J
 HSPLlibcore/io/BlockGuardOs;->mkdir(Ljava/lang/String;I)V
 HSPLlibcore/io/BlockGuardOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;
 HSPLlibcore/io/BlockGuardOs;->poll([Landroid/system/StructPollfd;I)I
-HSPLlibcore/io/BlockGuardOs;->posix_fallocate(Ljava/io/FileDescriptor;JJ)V
 HSPLlibcore/io/BlockGuardOs;->read(Ljava/io/FileDescriptor;[BII)I
-HSPLlibcore/io/BlockGuardOs;->readlink(Ljava/lang/String;)Ljava/lang/String;
 HSPLlibcore/io/BlockGuardOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I
 HSPLlibcore/io/BlockGuardOs;->remove(Ljava/lang/String;)V
 HSPLlibcore/io/BlockGuardOs;->rename(Ljava/lang/String;Ljava/lang/String;)V
@@ -30666,36 +21251,41 @@
 HSPLlibcore/io/BlockGuardOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;
 HSPLlibcore/io/BlockGuardOs;->tagSocket(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;
 HSPLlibcore/io/BlockGuardOs;->write(Ljava/io/FileDescriptor;[BII)I
+HSPLlibcore/io/BufferIterator;-><init>()V
+HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;-><init>(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;Ljava/io/InputStream;)V
 HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection$1;->close()V
+HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;-><init>(Llibcore/io/ClassPathURLStreamHandler;Ljava/net/URL;)V
+HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->access$100(Llibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;)Ljava/util/jar/JarFile;
 HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->connect()V
 HSPLlibcore/io/ClassPathURLStreamHandler$ClassPathURLConnection;->getInputStream()Ljava/io/InputStream;
+HSPLlibcore/io/ClassPathURLStreamHandler;-><init>(Ljava/lang/String;)V
+HSPLlibcore/io/ClassPathURLStreamHandler;->access$000(Llibcore/io/ClassPathURLStreamHandler;)Ljava/util/jar/JarFile;
 HSPLlibcore/io/ClassPathURLStreamHandler;->getEntryUrlOrNull(Ljava/lang/String;)Ljava/net/URL;
 HSPLlibcore/io/ClassPathURLStreamHandler;->isEntryStored(Ljava/lang/String;)Z
 HSPLlibcore/io/ClassPathURLStreamHandler;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection;
 HSPLlibcore/io/ForwardingOs;-><init>(Llibcore/io/Os;)V
+HSPLlibcore/io/ForwardingOs;->accept(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)Ljava/io/FileDescriptor;
 HSPLlibcore/io/ForwardingOs;->access(Ljava/lang/String;I)Z
 HSPLlibcore/io/ForwardingOs;->android_fdsan_exchange_owner_tag(Ljava/io/FileDescriptor;JJ)V
 HSPLlibcore/io/ForwardingOs;->android_getaddrinfo(Ljava/lang/String;Landroid/system/StructAddrinfo;I)[Ljava/net/InetAddress;
 HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HSPLlibcore/io/ForwardingOs;->bind(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
 HSPLlibcore/io/ForwardingOs;->capget(Landroid/system/StructCapUserHeader;)[Landroid/system/StructCapUserData;
 HSPLlibcore/io/ForwardingOs;->chmod(Ljava/lang/String;I)V
 HSPLlibcore/io/ForwardingOs;->close(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HPLlibcore/io/ForwardingOs;->dup(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;
 HSPLlibcore/io/ForwardingOs;->dup2(Ljava/io/FileDescriptor;I)Ljava/io/FileDescriptor;
 HSPLlibcore/io/ForwardingOs;->fcntlInt(Ljava/io/FileDescriptor;II)I
 HSPLlibcore/io/ForwardingOs;->fcntlVoid(Ljava/io/FileDescriptor;I)I
+HSPLlibcore/io/ForwardingOs;->fdatasync(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/ForwardingOs;->fstat(Ljava/io/FileDescriptor;)Landroid/system/StructStat;
+HSPLlibcore/io/ForwardingOs;->ftruncate(Ljava/io/FileDescriptor;J)V
+HSPLlibcore/io/ForwardingOs;->gai_strerror(I)Ljava/lang/String;
 HSPLlibcore/io/ForwardingOs;->getenv(Ljava/lang/String;)Ljava/lang/String;
-HSPLlibcore/io/ForwardingOs;->getgid()I
 HSPLlibcore/io/ForwardingOs;->getifaddrs()[Landroid/system/StructIfaddrs;
 HSPLlibcore/io/ForwardingOs;->getnameinfo(Ljava/net/InetAddress;I)Ljava/lang/String;
 HSPLlibcore/io/ForwardingOs;->getpeername(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;
 HSPLlibcore/io/ForwardingOs;->getpgid(I)I
 HSPLlibcore/io/ForwardingOs;->getpid()I
-HSPLlibcore/io/ForwardingOs;->getpwuid(I)Landroid/system/StructPasswd;
-HSPLlibcore/io/ForwardingOs;->getrlimit(I)Landroid/system/StructRlimit;
 HSPLlibcore/io/ForwardingOs;->getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;
 HSPLlibcore/io/ForwardingOs;->getsockoptInt(Ljava/io/FileDescriptor;II)I
 HSPLlibcore/io/ForwardingOs;->getsockoptLinger(Ljava/io/FileDescriptor;II)Landroid/system/StructLinger;
@@ -30706,15 +21296,14 @@
 HSPLlibcore/io/ForwardingOs;->listen(Ljava/io/FileDescriptor;I)V
 HSPLlibcore/io/ForwardingOs;->lseek(Ljava/io/FileDescriptor;JI)J
 HSPLlibcore/io/ForwardingOs;->mkdir(Ljava/lang/String;I)V
-HSPLlibcore/io/ForwardingOs;->mlock(JJ)V
-HSPLlibcore/io/ForwardingOs;->mmap(JJIILjava/io/FileDescriptor;J)J
-HSPLlibcore/io/ForwardingOs;->munmap(JJ)V
 HSPLlibcore/io/ForwardingOs;->open(Ljava/lang/String;II)Ljava/io/FileDescriptor;
 HSPLlibcore/io/ForwardingOs;->pipe2(I)[Ljava/io/FileDescriptor;
 HSPLlibcore/io/ForwardingOs;->poll([Landroid/system/StructPollfd;I)I
 HSPLlibcore/io/ForwardingOs;->read(Ljava/io/FileDescriptor;[BII)I
+HSPLlibcore/io/ForwardingOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I
 HSPLlibcore/io/ForwardingOs;->remove(Ljava/lang/String;)V
 HSPLlibcore/io/ForwardingOs;->rename(Ljava/lang/String;Ljava/lang/String;)V
+HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I
 HSPLlibcore/io/ForwardingOs;->setpgid(II)V
 HSPLlibcore/io/ForwardingOs;->setregid(II)V
 HSPLlibcore/io/ForwardingOs;->setreuid(II)V
@@ -30727,10 +21316,10 @@
 HSPLlibcore/io/ForwardingOs;->statvfs(Ljava/lang/String;)Landroid/system/StructStatVfs;
 HSPLlibcore/io/ForwardingOs;->strerror(I)Ljava/lang/String;
 HSPLlibcore/io/ForwardingOs;->sysconf(I)J
-HSPLlibcore/io/ForwardingOs;->umask(I)I
-HSPLlibcore/io/ForwardingOs;->uname()Landroid/system/StructUtsname;
 HSPLlibcore/io/ForwardingOs;->write(Ljava/io/FileDescriptor;[BII)I
 HSPLlibcore/io/IoBridge;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
+HSPLlibcore/io/IoBridge;->booleanFromInt(I)Z
+HSPLlibcore/io/IoBridge;->booleanToInt(Z)I
 HSPLlibcore/io/IoBridge;->closeAndSignalBlockedThreads(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/IoBridge;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V
 HSPLlibcore/io/IoBridge;->connectErrno(Ljava/io/FileDescriptor;Ljava/net/InetAddress;II)V
@@ -30749,29 +21338,24 @@
 HSPLlibcore/io/IoBridge;->setSocketOptionErrno(Ljava/io/FileDescriptor;ILjava/lang/Object;)V
 HSPLlibcore/io/IoBridge;->socket(III)Ljava/io/FileDescriptor;
 HSPLlibcore/io/IoBridge;->write(Ljava/io/FileDescriptor;[BII)V
-HSPLlibcore/io/IoTracker$Mode;-><init>(Ljava/lang/String;I)V
 HSPLlibcore/io/IoTracker;-><init>()V
+HSPLlibcore/io/IoTracker;->reset()V
 HSPLlibcore/io/IoTracker;->trackIo(I)V
 HSPLlibcore/io/IoTracker;->trackIo(ILlibcore/io/IoTracker$Mode;)V
-HSPLlibcore/io/IoUtils$FileReader;-><init>(Ljava/lang/String;)V
-HSPLlibcore/io/IoUtils$FileReader;->readFully()Llibcore/io/IoUtils$FileReader;
-HSPLlibcore/io/IoUtils$FileReader;->toByteArray()[B
-HSPLlibcore/io/IoUtils$FileReader;->toString(Ljava/nio/charset/Charset;)Ljava/lang/String;
 HSPLlibcore/io/IoUtils;->acquireRawFd(Ljava/io/FileDescriptor;)I
 HSPLlibcore/io/IoUtils;->canOpenReadOnly(Ljava/lang/String;)Z
+HSPLlibcore/io/IoUtils;->close(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/io/FileDescriptor;)V
 HSPLlibcore/io/IoUtils;->closeQuietly(Ljava/lang/AutoCloseable;)V
 HSPLlibcore/io/IoUtils;->generateFdOwnerId(Ljava/lang/Object;)J
 HSPLlibcore/io/IoUtils;->isParcelFileDescriptor(Ljava/lang/Object;)Z
-HSPLlibcore/io/IoUtils;->readFileAsByteArray(Ljava/lang/String;)[B
-HSPLlibcore/io/IoUtils;->readFileAsString(Ljava/lang/String;)Ljava/lang/String;
 HSPLlibcore/io/IoUtils;->setBlocking(Ljava/io/FileDescriptor;Z)V
 HSPLlibcore/io/IoUtils;->setFdOwner(Ljava/io/FileDescriptor;Ljava/lang/Object;)V
 HSPLlibcore/io/Libcore;->compareAndSetOs(Llibcore/io/Os;Llibcore/io/Os;)Z
+HSPLlibcore/io/Libcore;->getOs()Llibcore/io/Os;
 HSPLlibcore/io/Linux;->read(Ljava/io/FileDescriptor;[BII)I
 HSPLlibcore/io/Linux;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I
 HSPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I
-HSPLlibcore/io/Linux;->umask(I)I
 HSPLlibcore/io/Linux;->write(Ljava/io/FileDescriptor;[BII)I
 HSPLlibcore/io/Memory;->peekInt(JZ)I
 HSPLlibcore/io/Memory;->peekInt([BILjava/nio/ByteOrder;)I
@@ -30779,34 +21363,28 @@
 HSPLlibcore/io/Memory;->peekShort(JZ)S
 HSPLlibcore/io/Memory;->peekShort([BILjava/nio/ByteOrder;)S
 HSPLlibcore/io/Memory;->pokeInt(JIZ)V
-HSPLlibcore/io/Memory;->pokeLong(JJZ)V
-HSPLlibcore/io/Memory;->pokeShort(JSZ)V
-HSPLlibcore/io/MemoryMappedFile;-><init>(JJ)V
-HSPLlibcore/io/MemoryMappedFile;->mmapRO(Ljava/lang/String;)Llibcore/io/MemoryMappedFile;
-HSPLlibcore/io/MemoryMappedFile;->size()I
+HSPLlibcore/io/MemoryMappedFile;->bigEndianIterator()Llibcore/io/BufferIterator;
+HSPLlibcore/io/MemoryMappedFile;->checkNotClosed()V
 HSPLlibcore/io/NioBufferIterator;-><init>(Llibcore/io/MemoryMappedFile;JIZ)V
-HSPLlibcore/io/NioBufferIterator;->checkDstBounds(III)V
+HSPLlibcore/io/NioBufferIterator;->checkArrayBounds(III)V
 HSPLlibcore/io/NioBufferIterator;->checkReadBounds(III)V
 HSPLlibcore/io/NioBufferIterator;->readByte()B
 HSPLlibcore/io/NioBufferIterator;->readByteArray([BII)V
 HSPLlibcore/io/NioBufferIterator;->readInt()I
-HSPLlibcore/io/NioBufferIterator;->readIntArray([III)V
-HSPLlibcore/io/NioBufferIterator;->seek(I)V
+HSPLlibcore/io/NioBufferIterator;->readLongArray([JII)V
 HSPLlibcore/io/NioBufferIterator;->skip(I)V
 HSPLlibcore/io/Os;->compareAndSetDefault(Llibcore/io/Os;Llibcore/io/Os;)Z
-HSPLlibcore/io/Streams;->readFully(Ljava/io/InputStream;)[B
-HPLlibcore/io/Streams;->readFully(Ljava/io/Reader;)Ljava/lang/String;
+HSPLlibcore/io/Os;->getDefault()Llibcore/io/Os;
 HSPLlibcore/net/InetAddressUtils;->parseNumericAddress(Ljava/lang/String;)Ljava/net/InetAddress;
 HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrow(Ljava/lang/String;)Ljava/net/InetAddress;
 HSPLlibcore/net/InetAddressUtils;->parseNumericAddressNoThrowStripOptionalBrackets(Ljava/lang/String;)Ljava/net/InetAddress;
-HSPLlibcore/net/NetworkSecurityPolicy$DefaultNetworkSecurityPolicy;-><init>()V
+HSPLlibcore/net/NetworkSecurityPolicy;-><init>()V
 HSPLlibcore/net/NetworkSecurityPolicy;->getInstance()Llibcore/net/NetworkSecurityPolicy;
 HSPLlibcore/net/NetworkSecurityPolicy;->setInstance(Llibcore/net/NetworkSecurityPolicy;)V
-HSPLlibcore/net/event/NetworkEventDispatcher;-><init>()V
 HSPLlibcore/net/event/NetworkEventDispatcher;->addListener(Llibcore/net/event/NetworkEventListener;)V
 HSPLlibcore/net/event/NetworkEventDispatcher;->getInstance()Llibcore/net/event/NetworkEventDispatcher;
 HSPLlibcore/net/event/NetworkEventDispatcher;->onNetworkConfigurationChanged()V
-HSPLlibcore/net/http/HttpDate$1;-><init>()V
+HSPLlibcore/net/event/NetworkEventListener;-><init>()V
 HSPLlibcore/reflect/AnnotationFactory;-><init>(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)V
 HSPLlibcore/reflect/AnnotationFactory;->createAnnotation(Ljava/lang/Class;[Llibcore/reflect/AnnotationMember;)Ljava/lang/annotation/Annotation;
 HSPLlibcore/reflect/AnnotationFactory;->getElementsDescription(Ljava/lang/Class;)[Llibcore/reflect/AnnotationMember;
@@ -30814,184 +21392,137 @@
 HSPLlibcore/reflect/AnnotationMember;-><init>(Ljava/lang/String;Ljava/lang/Object;)V
 HSPLlibcore/reflect/AnnotationMember;-><init>(Ljava/lang/String;Ljava/lang/Object;Ljava/lang/Class;Ljava/lang/reflect/Method;)V
 HSPLlibcore/reflect/AnnotationMember;->copyValue()Ljava/lang/Object;
+HSPLlibcore/reflect/AnnotationMember;->setDefinition(Llibcore/reflect/AnnotationMember;)Llibcore/reflect/AnnotationMember;
 HSPLlibcore/reflect/AnnotationMember;->validateValue()Ljava/lang/Object;
-HSPLlibcore/reflect/GenericArrayTypeImpl;->getGenericComponentType()Ljava/lang/reflect/Type;
-HSPLlibcore/reflect/GenericArrayTypeImpl;->hashCode()I
+HSPLlibcore/reflect/GenericSignatureParser;-><init>(Ljava/lang/ClassLoader;)V
+HSPLlibcore/reflect/GenericSignatureParser;->expect(C)V
+HSPLlibcore/reflect/GenericSignatureParser;->isStopSymbol(C)Z
 HSPLlibcore/reflect/GenericSignatureParser;->parseClassSignature()V
 HSPLlibcore/reflect/GenericSignatureParser;->parseClassTypeSignature()Ljava/lang/reflect/Type;
 HSPLlibcore/reflect/GenericSignatureParser;->parseFieldTypeSignature()Ljava/lang/reflect/Type;
 HSPLlibcore/reflect/GenericSignatureParser;->parseForClass(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V
+HSPLlibcore/reflect/GenericSignatureParser;->parseForField(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V
+HSPLlibcore/reflect/GenericSignatureParser;->parseFormalTypeParameter()Llibcore/reflect/TypeVariableImpl;
 HSPLlibcore/reflect/GenericSignatureParser;->parseOptFormalTypeParameters()V
 HSPLlibcore/reflect/GenericSignatureParser;->parseOptTypeArguments()Llibcore/reflect/ListOfTypes;
 HSPLlibcore/reflect/GenericSignatureParser;->parseTypeArgument()Ljava/lang/reflect/Type;
-HSPLlibcore/reflect/GenericSignatureParser;->parseTypeSignature()Ljava/lang/reflect/Type;
+HSPLlibcore/reflect/GenericSignatureParser;->parseTypeVariableSignature()Llibcore/reflect/TypeVariableImpl;
 HSPLlibcore/reflect/GenericSignatureParser;->scanIdentifier()V
+HSPLlibcore/reflect/GenericSignatureParser;->scanSymbol()V
+HSPLlibcore/reflect/GenericSignatureParser;->setInput(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V
+HSPLlibcore/reflect/ListOfTypes;-><init>(I)V
+HSPLlibcore/reflect/ListOfTypes;->add(Ljava/lang/reflect/Type;)V
+HSPLlibcore/reflect/ListOfTypes;->getResolvedTypes()[Ljava/lang/reflect/Type;
+HSPLlibcore/reflect/ListOfTypes;->length()I
 HSPLlibcore/reflect/ListOfTypes;->resolveTypes(Ljava/util/List;)[Ljava/lang/reflect/Type;
+HSPLlibcore/reflect/ListOfVariables;-><init>()V
+HSPLlibcore/reflect/ListOfVariables;->add(Ljava/lang/reflect/TypeVariable;)V
+HSPLlibcore/reflect/ListOfVariables;->getArray()[Ljava/lang/reflect/TypeVariable;
+HSPLlibcore/reflect/ParameterizedTypeImpl;-><init>(Llibcore/reflect/ParameterizedTypeImpl;Ljava/lang/String;Llibcore/reflect/ListOfTypes;Ljava/lang/ClassLoader;)V
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getActualTypeArguments()[Ljava/lang/reflect/Type;
+HSPLlibcore/reflect/ParameterizedTypeImpl;->getOwnerType()Ljava/lang/reflect/Type;
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/Class;
 HSPLlibcore/reflect/ParameterizedTypeImpl;->getRawType()Ljava/lang/reflect/Type;
-HSPLlibcore/reflect/ParameterizedTypeImpl;->hashCode()I
+HSPLlibcore/reflect/ParameterizedTypeImpl;->getResolvedType()Ljava/lang/reflect/Type;
+HSPLlibcore/reflect/TypeVariableImpl;-><init>(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)V
+HSPLlibcore/reflect/TypeVariableImpl;-><init>(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;Llibcore/reflect/ListOfTypes;)V
+HSPLlibcore/reflect/TypeVariableImpl;->findFormalVar(Ljava/lang/reflect/GenericDeclaration;Ljava/lang/String;)Ljava/lang/reflect/TypeVariable;
+HSPLlibcore/reflect/TypeVariableImpl;->getGenericDeclaration()Ljava/lang/reflect/GenericDeclaration;
+HSPLlibcore/reflect/TypeVariableImpl;->getName()Ljava/lang/String;
+HSPLlibcore/reflect/TypeVariableImpl;->resolve()V
 HSPLlibcore/reflect/Types;->getType(Ljava/lang/reflect/Type;)Ljava/lang/reflect/Type;
-HSPLlibcore/timezone/-$$Lambda$TimeZoneFinder$ReaderSupplier$gDAfECMWS_ohJ_Rfk1HN7JyDSJA;->get()Ljava/io/Reader;
-HSPLlibcore/timezone/CountryTimeZones;->createValidated(Ljava/lang/String;Ljava/lang/String;ZLjava/util/List;Ljava/lang/String;)Llibcore/timezone/CountryTimeZones;
-HSPLlibcore/timezone/CountryTimeZones;->getDefaultTimeZone()Landroid/icu/util/TimeZone;
-HSPLlibcore/timezone/CountryTimeZones;->getIcuTimeZones()Ljava/util/List;
-HSPLlibcore/timezone/CountryTimeZones;->isDefaultOkForCountryTimeZoneDetection(J)Z
-HSPLlibcore/timezone/CountryTimeZones;->isForCountryCode(Ljava/lang/String;)Z
-HSPLlibcore/timezone/CountryTimeZones;->lookupByOffsetWithBias(IZJLandroid/icu/util/TimeZone;)Llibcore/timezone/CountryTimeZones$OffsetResult;
-HSPLlibcore/timezone/TimeZoneDataFiles;->generateIcuDataPath()Ljava/lang/String;
-HSPLlibcore/timezone/TimeZoneDataFiles;->getTimeZoneFilePaths(Ljava/lang/String;)[Ljava/lang/String;
-HSPLlibcore/timezone/TimeZoneFinder$ReaderSupplier;->forFile(Ljava/lang/String;Ljava/nio/charset/Charset;)Llibcore/timezone/TimeZoneFinder$ReaderSupplier;
-HSPLlibcore/timezone/TimeZoneFinder$SelectiveCountryTimeZonesExtractor;->processCountryZones(Ljava/lang/String;Ljava/lang/String;ZLjava/util/List;Ljava/lang/String;)Z
-HSPLlibcore/timezone/TimeZoneFinder$TimeZonesProcessor;->processHeader(Ljava/lang/String;)Z
-HSPLlibcore/timezone/TimeZoneFinder;->checkOnEndTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
-HSPLlibcore/timezone/TimeZoneFinder;->consumeText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
-HSPLlibcore/timezone/TimeZoneFinder;->createInstanceWithFallback([Ljava/lang/String;)Llibcore/timezone/TimeZoneFinder;
-HSPLlibcore/timezone/TimeZoneFinder;->findStartTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z
-HSPLlibcore/timezone/TimeZoneFinder;->getInstance()Llibcore/timezone/TimeZoneFinder;
-HSPLlibcore/timezone/TimeZoneFinder;->lookupCountryTimeZones(Ljava/lang/String;)Llibcore/timezone/CountryTimeZones;
-HSPLlibcore/timezone/TimeZoneFinder;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/Boolean;)Ljava/lang/Boolean;
-HSPLlibcore/timezone/TimeZoneFinder;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/Long;)Ljava/lang/Long;
-HSPLlibcore/timezone/TimeZoneFinder;->parseTimeZoneMappings(Lorg/xmlpull/v1/XmlPullParser;)Ljava/util/List;
-HSPLlibcore/timezone/TimeZoneFinder;->processCountryZones(Lorg/xmlpull/v1/XmlPullParser;Llibcore/timezone/TimeZoneFinder$TimeZonesProcessor;)Z
-HSPLlibcore/timezone/TimeZoneFinder;->processXml(Llibcore/timezone/TimeZoneFinder$TimeZonesProcessor;)V
+HSPLlibcore/reflect/Types;->getTypeArray(Llibcore/reflect/ListOfTypes;Z)[Ljava/lang/reflect/Type;
+HSPLlibcore/timezone/ZoneInfoDB$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLlibcore/timezone/ZoneInfoDB$1;->create(Ljava/lang/String;)Llibcore/util/ZoneInfo;
 HSPLlibcore/timezone/ZoneInfoDB$TzData$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLlibcore/timezone/ZoneInfoDB$TzData$1;->create(Ljava/lang/String;)Llibcore/util/ZoneInfo;
+HSPLlibcore/timezone/ZoneInfoDB$TzData;->checkNotClosed()V
 HSPLlibcore/timezone/ZoneInfoDB$TzData;->close()V
 HSPLlibcore/timezone/ZoneInfoDB$TzData;->finalize()V
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->getAvailableIDs()[Ljava/lang/String;
 HSPLlibcore/timezone/ZoneInfoDB$TzData;->getBufferIterator(Ljava/lang/String;)Llibcore/io/BufferIterator;
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->hasTimeZone(Ljava/lang/String;)Z
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->loadData(Ljava/lang/String;)Z
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->loadTzDataWithFallback([Ljava/lang/String;)Llibcore/timezone/ZoneInfoDB$TzData;
 HSPLlibcore/timezone/ZoneInfoDB$TzData;->makeTimeZone(Ljava/lang/String;)Llibcore/util/ZoneInfo;
 HSPLlibcore/timezone/ZoneInfoDB$TzData;->makeTimeZoneUncached(Ljava/lang/String;)Llibcore/util/ZoneInfo;
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->readHeader()V
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->readIndex(Llibcore/io/BufferIterator;II)V
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->readZoneTab(Llibcore/io/BufferIterator;II)V
-HSPLlibcore/timezone/ZoneInfoDB$TzData;->validateOffset(II)V
-HSPLlibcore/timezone/ZoneInfoDB;->getInstance()Llibcore/timezone/ZoneInfoDB$TzData;
+HSPLlibcore/timezone/ZoneInfoDB;->checkNotClosed()V
+HSPLlibcore/timezone/ZoneInfoDB;->close()V
+HSPLlibcore/timezone/ZoneInfoDB;->finalize()V
+HSPLlibcore/timezone/ZoneInfoDB;->getAvailableIDs()[Ljava/lang/String;
+HSPLlibcore/timezone/ZoneInfoDB;->getBufferIterator(Ljava/lang/String;)Llibcore/io/BufferIterator;
+HSPLlibcore/timezone/ZoneInfoDB;->getInstance()Llibcore/timezone/ZoneInfoDB;
+HSPLlibcore/timezone/ZoneInfoDB;->makeTimeZone(Ljava/lang/String;)Llibcore/util/ZoneInfo;
+HSPLlibcore/timezone/ZoneInfoDB;->makeTimeZoneUncached(Ljava/lang/String;)Llibcore/util/ZoneInfo;
+HSPLlibcore/timezone/ZoneInfoDb$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLlibcore/timezone/ZoneInfoDb$1;->create(Ljava/lang/String;)Llibcore/util/ZoneInfo;
+HSPLlibcore/timezone/ZoneInfoDb;->checkNotClosed()V
+HSPLlibcore/timezone/ZoneInfoDb;->close()V
+HSPLlibcore/timezone/ZoneInfoDb;->finalize()V
+HSPLlibcore/timezone/ZoneInfoDb;->getBufferIterator(Ljava/lang/String;)Llibcore/io/BufferIterator;
+HSPLlibcore/timezone/ZoneInfoDb;->getInstance()Llibcore/timezone/ZoneInfoDb;
+HSPLlibcore/timezone/ZoneInfoDb;->makeTimeZone(Ljava/lang/String;)Llibcore/util/ZoneInfo;
+HSPLlibcore/timezone/ZoneInfoDb;->makeTimeZoneUncached(Ljava/lang/String;)Llibcore/util/ZoneInfo;
 HSPLlibcore/util/ArrayUtils;->throwsIfOutOfBounds(III)V
-HSPLlibcore/util/BasicLruCache;-><init>(I)V
 HSPLlibcore/util/BasicLruCache;->create(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLlibcore/util/BasicLruCache;->entryEvicted(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLlibcore/util/BasicLruCache;->evictAll()V
 HSPLlibcore/util/BasicLruCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLlibcore/util/BasicLruCache;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLlibcore/util/BasicLruCache;->trimToSize(I)V
 HSPLlibcore/util/CollectionUtils;->removeDuplicates(Ljava/util/List;Ljava/util/Comparator;)V
-HSPLlibcore/util/HexEncoding;->decode([CZ)[B
-HSPLlibcore/util/HexEncoding;->encode([BII)[C
-HSPLlibcore/util/HexEncoding;->encodeToString([B)Ljava/lang/String;
-HPLlibcore/util/HexEncoding;->toDigit([CI)I
+HSPLlibcore/util/FP16;->ceil(S)S
+HSPLlibcore/util/FP16;->floor(S)S
+HSPLlibcore/util/FP16;->greater(SS)Z
+HSPLlibcore/util/FP16;->greaterEquals(SS)Z
+HSPLlibcore/util/FP16;->less(SS)Z
+HSPLlibcore/util/FP16;->lessEquals(SS)Z
+HSPLlibcore/util/FP16;->rint(S)S
+HSPLlibcore/util/FP16;->toFloat(S)F
+HSPLlibcore/util/FP16;->toHalf(F)S
 HSPLlibcore/util/NativeAllocationRegistry$CleanerRunner;->run()V
 HSPLlibcore/util/NativeAllocationRegistry$CleanerThunk;->run()V
 HSPLlibcore/util/NativeAllocationRegistry;-><init>(Ljava/lang/ClassLoader;JJ)V
 HSPLlibcore/util/NativeAllocationRegistry;-><init>(Ljava/lang/ClassLoader;JJZ)V
-HSPLlibcore/util/NativeAllocationRegistry;->createMalloced(Ljava/lang/ClassLoader;J)Llibcore/util/NativeAllocationRegistry;
+HSPLlibcore/util/NativeAllocationRegistry;->access$000(Llibcore/util/NativeAllocationRegistry;)J
+HSPLlibcore/util/NativeAllocationRegistry;->access$100(Llibcore/util/NativeAllocationRegistry;)J
+HSPLlibcore/util/NativeAllocationRegistry;->access$200(J)V
 HSPLlibcore/util/NativeAllocationRegistry;->createMalloced(Ljava/lang/ClassLoader;JJ)Llibcore/util/NativeAllocationRegistry;
 HSPLlibcore/util/NativeAllocationRegistry;->createNonmalloced(Ljava/lang/ClassLoader;JJ)Llibcore/util/NativeAllocationRegistry;
 HSPLlibcore/util/NativeAllocationRegistry;->registerNativeAllocation(J)V
 HSPLlibcore/util/NativeAllocationRegistry;->registerNativeAllocation(Ljava/lang/Object;J)Ljava/lang/Runnable;
+HSPLlibcore/util/NativeAllocationRegistry;->registerNativeFree(J)V
 HSPLlibcore/util/SneakyThrow;->sneakyThrow(Ljava/lang/Throwable;)V
 HSPLlibcore/util/SneakyThrow;->sneakyThrow_(Ljava/lang/Throwable;)V
 HSPLlibcore/util/XmlObjectFactory;->newXmlPullParser()Lorg/xmlpull/v1/XmlPullParser;
-HSPLlibcore/util/XmlObjectFactory;->newXmlSerializer()Lorg/xmlpull/v1/XmlSerializer;
-HSPLlibcore/util/ZoneInfo$OffsetInterval;->containsWallTime(J)Z
-HSPLlibcore/util/ZoneInfo$OffsetInterval;->create(Llibcore/util/ZoneInfo;I)Llibcore/util/ZoneInfo$OffsetInterval;
-HSPLlibcore/util/ZoneInfo$OffsetInterval;->getIsDst()I
-HSPLlibcore/util/ZoneInfo$OffsetInterval;->getTotalOffsetSeconds()I
 HSPLlibcore/util/ZoneInfo$WallTime;-><init>()V
 HSPLlibcore/util/ZoneInfo$WallTime;->copyFieldsFromCalendar()V
-HSPLlibcore/util/ZoneInfo$WallTime;->copyFieldsToCalendar()V
-HSPLlibcore/util/ZoneInfo$WallTime;->doWallTimeSearch(Llibcore/util/ZoneInfo;IIZ)Ljava/lang/Integer;
-HSPLlibcore/util/ZoneInfo$WallTime;->getGmtOffset()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getHour()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getIsDst()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getMinute()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getMonth()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getMonthDay()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getSecond()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getWeekDay()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getYear()I
-HSPLlibcore/util/ZoneInfo$WallTime;->getYearDay()I
-HSPLlibcore/util/ZoneInfo$WallTime;->localtime(ILlibcore/util/ZoneInfo;)V
-HSPLlibcore/util/ZoneInfo$WallTime;->mktime(Llibcore/util/ZoneInfo;)I
-HSPLlibcore/util/ZoneInfo$WallTime;->setGmtOffset(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setHour(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setIsDst(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setMinute(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setMonth(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setMonthDay(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setSecond(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setWeekDay(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setYear(I)V
-HSPLlibcore/util/ZoneInfo$WallTime;->setYearDay(I)V
 HSPLlibcore/util/ZoneInfo;-><init>(Ljava/lang/String;[J[B[I[BJ)V
-HSPLlibcore/util/ZoneInfo;->access$400(JI)I
-HSPLlibcore/util/ZoneInfo;->access$500(II)I
+HSPLlibcore/util/ZoneInfo;->access$000(Llibcore/util/ZoneInfo;)I
+HSPLlibcore/util/ZoneInfo;->access$100(Llibcore/util/ZoneInfo;)[J
+HSPLlibcore/util/ZoneInfo;->checkTzifVersionAcceptable(Ljava/lang/String;B)V
 HSPLlibcore/util/ZoneInfo;->clone()Ljava/lang/Object;
-HSPLlibcore/util/ZoneInfo;->getDSTSavings()I
+HSPLlibcore/util/ZoneInfo;->findOffsetIndexForTimeInMilliseconds(J)I
+HSPLlibcore/util/ZoneInfo;->findOffsetIndexForTimeInSeconds(J)I
+HSPLlibcore/util/ZoneInfo;->findTransitionIndex(J)I
 HSPLlibcore/util/ZoneInfo;->getOffset(J)I
 HSPLlibcore/util/ZoneInfo;->getOffsetsByUtcTime(J[I)I
 HSPLlibcore/util/ZoneInfo;->getRawOffset()I
+HSPLlibcore/util/ZoneInfo;->hasSameRules(Ljava/util/TimeZone;)Z
 HSPLlibcore/util/ZoneInfo;->hashCode()I
 HSPLlibcore/util/ZoneInfo;->inDaylightTime(Ljava/util/Date;)Z
+HSPLlibcore/util/ZoneInfo;->read64BitData(Ljava/lang/String;Llibcore/io/BufferIterator;J)Llibcore/util/ZoneInfo;
 HSPLlibcore/util/ZoneInfo;->readTimeZone(Ljava/lang/String;Llibcore/io/BufferIterator;J)Llibcore/util/ZoneInfo;
+HSPLlibcore/util/ZoneInfo;->roundDownMillisToSeconds(J)J
+HSPLlibcore/util/ZoneInfo;->roundUpMillisToSeconds(J)J
+HSPLlibcore/util/ZoneInfo;->skipOver32BitData(Ljava/lang/String;Llibcore/io/BufferIterator;)V
 HSPLorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(ILjava/nio/ByteBuffer;)V
+HSPLorg/apache/harmony/dalvik/ddmc/Chunk;-><init>(I[BII)V
 HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->putString(Ljava/nio/ByteBuffer;Ljava/lang/String;)V
-HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->type(Ljava/lang/String;)I
 HSPLorg/apache/harmony/dalvik/ddmc/ChunkHandler;->wrapChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)Ljava/nio/ByteBuffer;
 HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->broadcast(I)V
 HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->dispatch(I[BII)Lorg/apache/harmony/dalvik/ddmc/Chunk;
-HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->registerHandler(ILorg/apache/harmony/dalvik/ddmc/ChunkHandler;)V
-HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->registrationComplete()V
 HSPLorg/apache/harmony/dalvik/ddmc/DdmServer;->sendChunk(Lorg/apache/harmony/dalvik/ddmc/Chunk;)V
-HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getData()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getLength()I
-HSPLorg/apache/harmony/xml/dom/CharacterDataImpl;->getNodeValue()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/DOMImplementationImpl;->getInstance()Lorg/apache/harmony/xml/dom/DOMImplementationImpl;
-HSPLorg/apache/harmony/xml/dom/DocumentImpl;-><init>(Lorg/apache/harmony/xml/dom/DOMImplementationImpl;Ljava/lang/String;Ljava/lang/String;Lorg/w3c/dom/DocumentType;Ljava/lang/String;)V
-HSPLorg/apache/harmony/xml/dom/DocumentImpl;->getDocumentElement()Lorg/w3c/dom/Element;
-HSPLorg/apache/harmony/xml/dom/DocumentImpl;->insertChildAt(Lorg/w3c/dom/Node;I)Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/DocumentImpl;->isXMLIdentifier(Ljava/lang/String;)Z
-HSPLorg/apache/harmony/xml/dom/ElementImpl;->getNodeName()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/ElementImpl;->getNodeType()S
-HSPLorg/apache/harmony/xml/dom/ElementImpl;->getTagName()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->appendChild(Lorg/w3c/dom/Node;)Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getChildNodes()Lorg/w3c/dom/NodeList;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getFirstChild()Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getLastChild()Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getNextSibling()Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->getTextContent()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->insertChildAt(Lorg/w3c/dom/Node;I)Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->isParentOf(Lorg/w3c/dom/Node;)Z
-HSPLorg/apache/harmony/xml/dom/InnerNodeImpl;->normalize()V
-HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;-><init>(Lorg/apache/harmony/xml/dom/DocumentImpl;)V
-HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;->getNextSibling()Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;->getPreviousSibling()Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/LeafNodeImpl;->isParentOf(Lorg/w3c/dom/Node;)Z
-HSPLorg/apache/harmony/xml/dom/NodeImpl$1;-><init>()V
-HSPLorg/apache/harmony/xml/dom/NodeImpl;->getTextContent()Ljava/lang/String;
-HSPLorg/apache/harmony/xml/dom/NodeImpl;->normalize()V
-HSPLorg/apache/harmony/xml/dom/NodeImpl;->setName(Lorg/apache/harmony/xml/dom/NodeImpl;Ljava/lang/String;)V
-HSPLorg/apache/harmony/xml/dom/NodeListImpl;-><init>()V
-HSPLorg/apache/harmony/xml/dom/NodeListImpl;->getLength()I
-HSPLorg/apache/harmony/xml/dom/NodeListImpl;->item(I)Lorg/w3c/dom/Node;
-HSPLorg/apache/harmony/xml/dom/TextImpl;->getNodeType()S
-HSPLorg/apache/harmony/xml/dom/TextImpl;->minimize()Lorg/apache/harmony/xml/dom/TextImpl;
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderFactoryImpl;->newDocumentBuilder()Ljavax/xml/parsers/DocumentBuilder;
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->appendText(Lorg/apache/harmony/xml/dom/DocumentImpl;Lorg/w3c/dom/Node;ILjava/lang/String;)V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->parse(Lcom/android/org/kxml2/io/KXmlParser;Lorg/apache/harmony/xml/dom/DocumentImpl;Lorg/w3c/dom/Node;I)V
-HSPLorg/apache/harmony/xml/parsers/DocumentBuilderImpl;->parse(Lorg/xml/sax/InputSource;)Lorg/w3c/dom/Document;
-HSPLorg/apache/http/conn/ssl/AllowAllHostnameVerifier;-><init>()V
-HSPLorg/apache/http/conn/ssl/BrowserCompatHostnameVerifier;-><init>()V
-HSPLorg/apache/http/conn/ssl/StrictHostnameVerifier;-><init>()V
 HSPLorg/apache/http/params/HttpConnectionParams;->setConnectionTimeout(Lorg/apache/http/params/HttpParams;I)V
 HSPLorg/apache/http/params/HttpConnectionParams;->setSoTimeout(Lorg/apache/http/params/HttpParams;I)V
-HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->addAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLorg/ccil/cowan/tagsoup/AttributesImpl;-><init>(Lorg/xml/sax/Attributes;)V
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->clear()V
-HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->ensureCapacity(I)V
-HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getIndex(Ljava/lang/String;)I
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getLength()I
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getLocalName(I)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/AttributesImpl;->getQName(I)Ljava/lang/String;
@@ -31005,87 +21536,66 @@
 HSPLorg/ccil/cowan/tagsoup/Element;->canContain(Lorg/ccil/cowan/tagsoup/Element;)Z
 HSPLorg/ccil/cowan/tagsoup/Element;->clean()V
 HSPLorg/ccil/cowan/tagsoup/Element;->flags()I
-HSPLorg/ccil/cowan/tagsoup/Element;->isPreclosed()Z
 HSPLorg/ccil/cowan/tagsoup/Element;->localName()Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Element;->model()I
 HSPLorg/ccil/cowan/tagsoup/Element;->name()Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/Element;->namespace()Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/Element;->next()Lorg/ccil/cowan/tagsoup/Element;
 HSPLorg/ccil/cowan/tagsoup/Element;->parent()Lorg/ccil/cowan/tagsoup/ElementType;
 HSPLorg/ccil/cowan/tagsoup/Element;->setNext(Lorg/ccil/cowan/tagsoup/Element;)V
-HSPLorg/ccil/cowan/tagsoup/ElementType;-><init>(Ljava/lang/String;IIILorg/ccil/cowan/tagsoup/Schema;)V
 HSPLorg/ccil/cowan/tagsoup/ElementType;->atts()Lorg/ccil/cowan/tagsoup/AttributesImpl;
 HSPLorg/ccil/cowan/tagsoup/ElementType;->canContain(Lorg/ccil/cowan/tagsoup/ElementType;)Z
 HSPLorg/ccil/cowan/tagsoup/ElementType;->flags()I
 HSPLorg/ccil/cowan/tagsoup/ElementType;->localName()Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/ElementType;->localName(Ljava/lang/String;)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/ElementType;->model()I
 HSPLorg/ccil/cowan/tagsoup/ElementType;->name()Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/ElementType;->namespace()Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/ElementType;->namespace(Ljava/lang/String;Z)Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/ElementType;->normalize(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/ElementType;->parent()Lorg/ccil/cowan/tagsoup/ElementType;
-HSPLorg/ccil/cowan/tagsoup/ElementType;->setAttribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLorg/ccil/cowan/tagsoup/ElementType;->setAttribute(Lorg/ccil/cowan/tagsoup/AttributesImpl;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLorg/ccil/cowan/tagsoup/ElementType;->setParent(Lorg/ccil/cowan/tagsoup/ElementType;)V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;-><init>()V
+HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->mark()V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->resetDocumentLocator(Ljava/lang/String;Ljava/lang/String;)V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->save(ILorg/ccil/cowan/tagsoup/ScanHandler;)V
 HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->scan(Ljava/io/Reader;Lorg/ccil/cowan/tagsoup/ScanHandler;)V
-HSPLorg/ccil/cowan/tagsoup/HTMLSchema;-><init>()V
+HSPLorg/ccil/cowan/tagsoup/HTMLScanner;->unread(Ljava/io/PushbackReader;I)V
+HSPLorg/ccil/cowan/tagsoup/Parser$1;-><init>(Lorg/ccil/cowan/tagsoup/Parser;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;-><init>()V
-HSPLorg/ccil/cowan/tagsoup/Parser;->entity([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->eof([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->etag([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->etag_basic([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->etag_cdata([CII)Z
-HSPLorg/ccil/cowan/tagsoup/Parser;->getEntity()I
+HSPLorg/ccil/cowan/tagsoup/Parser;->foreign(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLorg/ccil/cowan/tagsoup/Parser;->getReader(Lorg/xml/sax/InputSource;)Ljava/io/Reader;
-HSPLorg/ccil/cowan/tagsoup/Parser;->gi([CII)V
-HSPLorg/ccil/cowan/tagsoup/Parser;->lookupEntity([CII)I
-HSPLorg/ccil/cowan/tagsoup/Parser;->makeName([CII)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/Parser;->parse(Lorg/xml/sax/InputSource;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->pcdata([CII)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->pop()V
+HSPLorg/ccil/cowan/tagsoup/Parser;->prefixOf(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/Parser;->push(Lorg/ccil/cowan/tagsoup/Element;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->rectify(Lorg/ccil/cowan/tagsoup/Element;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->restart(Lorg/ccil/cowan/tagsoup/Element;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setContentHandler(Lorg/xml/sax/ContentHandler;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setProperty(Ljava/lang/String;Ljava/lang/Object;)V
 HSPLorg/ccil/cowan/tagsoup/Parser;->setup()V
-HSPLorg/ccil/cowan/tagsoup/Parser;->stagc([CII)V
-HSPLorg/ccil/cowan/tagsoup/Schema;-><init>()V
-HSPLorg/ccil/cowan/tagsoup/Schema;->attribute(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLorg/ccil/cowan/tagsoup/Schema;->elementType(Ljava/lang/String;III)V
-HSPLorg/ccil/cowan/tagsoup/Schema;->entity(Ljava/lang/String;I)V
+HSPLorg/ccil/cowan/tagsoup/Parser;->truthValue(Z)Ljava/lang/Boolean;
 HSPLorg/ccil/cowan/tagsoup/Schema;->getElementType(Ljava/lang/String;)Lorg/ccil/cowan/tagsoup/ElementType;
 HSPLorg/ccil/cowan/tagsoup/Schema;->getPrefix()Ljava/lang/String;
 HSPLorg/ccil/cowan/tagsoup/Schema;->getURI()Ljava/lang/String;
-HSPLorg/ccil/cowan/tagsoup/Schema;->parent(Ljava/lang/String;Ljava/lang/String;)V
-HSPLorg/ccil/cowan/tagsoup/Schema;->setPrefix(Ljava/lang/String;)V
-HSPLorg/ccil/cowan/tagsoup/Schema;->setURI(Ljava/lang/String;)V
 HSPLorg/json/JSON;->checkDouble(D)D
 HSPLorg/json/JSON;->toBoolean(Ljava/lang/Object;)Ljava/lang/Boolean;
-HSPLorg/json/JSON;->toDouble(Ljava/lang/Object;)Ljava/lang/Double;
 HSPLorg/json/JSON;->toInteger(Ljava/lang/Object;)Ljava/lang/Integer;
 HSPLorg/json/JSON;->toLong(Ljava/lang/Object;)Ljava/lang/Long;
+HSPLorg/json/JSON;->toString(Ljava/lang/Object;)Ljava/lang/String;
 HSPLorg/json/JSONArray;-><init>()V
-HSPLorg/json/JSONArray;-><init>(Ljava/lang/Object;)V
 HSPLorg/json/JSONArray;-><init>(Ljava/lang/String;)V
+HSPLorg/json/JSONArray;-><init>(Lorg/json/JSONTokener;)V
 HSPLorg/json/JSONArray;->get(I)Ljava/lang/Object;
 HSPLorg/json/JSONArray;->getJSONObject(I)Lorg/json/JSONObject;
 HSPLorg/json/JSONArray;->getString(I)Ljava/lang/String;
 HSPLorg/json/JSONArray;->length()I
 HSPLorg/json/JSONArray;->opt(I)Ljava/lang/Object;
 HSPLorg/json/JSONArray;->optJSONObject(I)Lorg/json/JSONObject;
-HSPLorg/json/JSONArray;->put(J)Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;->put(Ljava/lang/Object;)Lorg/json/JSONArray;
 HSPLorg/json/JSONArray;->toString()Ljava/lang/String;
 HSPLorg/json/JSONArray;->writeTo(Lorg/json/JSONStringer;)V
-HSPLorg/json/JSONObject$1;-><init>()V
+HSPLorg/json/JSONException;-><init>(Ljava/lang/String;)V
 HSPLorg/json/JSONObject;-><init>()V
 HSPLorg/json/JSONObject;-><init>(Ljava/lang/String;)V
 HSPLorg/json/JSONObject;-><init>(Ljava/util/Map;)V
+HSPLorg/json/JSONObject;-><init>(Lorg/json/JSONTokener;)V
 HSPLorg/json/JSONObject;->checkName(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/json/JSONObject;->get(Ljava/lang/String;)Ljava/lang/Object;
 HSPLorg/json/JSONObject;->getBoolean(Ljava/lang/String;)Z
@@ -31095,28 +21605,28 @@
 HSPLorg/json/JSONObject;->getLong(Ljava/lang/String;)J
 HSPLorg/json/JSONObject;->getString(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/json/JSONObject;->has(Ljava/lang/String;)Z
+HSPLorg/json/JSONObject;->isNull(Ljava/lang/String;)Z
 HSPLorg/json/JSONObject;->keys()Ljava/util/Iterator;
+HSPLorg/json/JSONObject;->length()I
 HSPLorg/json/JSONObject;->numberToString(Ljava/lang/Number;)Ljava/lang/String;
 HSPLorg/json/JSONObject;->opt(Ljava/lang/String;)Ljava/lang/Object;
-HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;)Z
 HSPLorg/json/JSONObject;->optBoolean(Ljava/lang/String;Z)Z
-HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;)D
-HSPLorg/json/JSONObject;->optDouble(Ljava/lang/String;D)D
+HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;)I
 HSPLorg/json/JSONObject;->optInt(Ljava/lang/String;I)I
+HSPLorg/json/JSONObject;->optJSONArray(Ljava/lang/String;)Lorg/json/JSONArray;
 HSPLorg/json/JSONObject;->optJSONObject(Ljava/lang/String;)Lorg/json/JSONObject;
+HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;)J
 HSPLorg/json/JSONObject;->optLong(Ljava/lang/String;J)J
 HSPLorg/json/JSONObject;->optString(Ljava/lang/String;)Ljava/lang/String;
 HSPLorg/json/JSONObject;->optString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLorg/json/JSONObject;->put(Ljava/lang/String;D)Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;I)Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;J)Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->put(Ljava/lang/String;Z)Lorg/json/JSONObject;
-HSPLorg/json/JSONObject;->putOpt(Ljava/lang/String;Ljava/lang/Object;)Lorg/json/JSONObject;
 HSPLorg/json/JSONObject;->toString()Ljava/lang/String;
 HSPLorg/json/JSONObject;->wrap(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLorg/json/JSONObject;->writeTo(Lorg/json/JSONStringer;)V
-HSPLorg/json/JSONStringer$Scope;-><init>(Ljava/lang/String;I)V
+HSPLorg/json/JSONStringer;-><init>()V
 HSPLorg/json/JSONStringer;->array()Lorg/json/JSONStringer;
 HSPLorg/json/JSONStringer;->beforeKey()V
 HSPLorg/json/JSONStringer;->beforeValue()V
@@ -31124,10 +21634,15 @@
 HSPLorg/json/JSONStringer;->endArray()Lorg/json/JSONStringer;
 HSPLorg/json/JSONStringer;->endObject()Lorg/json/JSONStringer;
 HSPLorg/json/JSONStringer;->key(Ljava/lang/String;)Lorg/json/JSONStringer;
+HSPLorg/json/JSONStringer;->newline()V
 HSPLorg/json/JSONStringer;->object()Lorg/json/JSONStringer;
 HSPLorg/json/JSONStringer;->open(Lorg/json/JSONStringer$Scope;Ljava/lang/String;)Lorg/json/JSONStringer;
+HSPLorg/json/JSONStringer;->peek()Lorg/json/JSONStringer$Scope;
+HSPLorg/json/JSONStringer;->replaceTop(Lorg/json/JSONStringer$Scope;)V
 HSPLorg/json/JSONStringer;->string(Ljava/lang/String;)V
+HSPLorg/json/JSONStringer;->toString()Ljava/lang/String;
 HSPLorg/json/JSONStringer;->value(Ljava/lang/Object;)Lorg/json/JSONStringer;
+HSPLorg/json/JSONTokener;-><init>(Ljava/lang/String;)V
 HSPLorg/json/JSONTokener;->nextCleanInternal()I
 HSPLorg/json/JSONTokener;->nextString(C)Ljava/lang/String;
 HSPLorg/json/JSONTokener;->nextToInternal(Ljava/lang/String;)Ljava/lang/String;
@@ -31136,51 +21651,60 @@
 HSPLorg/json/JSONTokener;->readEscapeCharacter()C
 HSPLorg/json/JSONTokener;->readLiteral()Ljava/lang/Object;
 HSPLorg/json/JSONTokener;->readObject()Lorg/json/JSONObject;
+HSPLorg/xml/sax/InputSource;-><init>(Ljava/io/Reader;)V
 HSPLorg/xml/sax/InputSource;->getByteStream()Ljava/io/InputStream;
 HSPLorg/xml/sax/InputSource;->getCharacterStream()Ljava/io/Reader;
 HSPLorg/xml/sax/InputSource;->getEncoding()Ljava/lang/String;
 HSPLorg/xml/sax/InputSource;->getPublicId()Ljava/lang/String;
 HSPLorg/xml/sax/InputSource;->getSystemId()Ljava/lang/String;
+HSPLorg/xml/sax/InputSource;->setCharacterStream(Ljava/io/Reader;)V
+HSPLorg/xml/sax/helpers/DefaultHandler;-><init>()V
 HSPLorg/xmlpull/v1/XmlPullParserFactory;-><init>()V
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->getParserInstance()Lorg/xmlpull/v1/XmlPullParser;
-HPLorg/xmlpull/v1/XmlPullParserFactory;->getSerializerInstance()Lorg/xmlpull/v1/XmlSerializer;
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->newInstance()Lorg/xmlpull/v1/XmlPullParserFactory;
 HSPLorg/xmlpull/v1/XmlPullParserFactory;->newPullParser()Lorg/xmlpull/v1/XmlPullParser;
-HPLorg/xmlpull/v1/XmlPullParserFactory;->newSerializer()Lorg/xmlpull/v1/XmlSerializer;
-HSPLsun/invoke/util/Wrapper;->forPrimitiveType(Ljava/lang/Class;)Lsun/invoke/util/Wrapper;
-HSPLsun/misc/ASCIICaseInsensitiveComparator;-><init>()V
 HSPLsun/misc/ASCIICaseInsensitiveComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLsun/misc/ASCIICaseInsensitiveComparator;->compare(Ljava/lang/String;Ljava/lang/String;)I
+HSPLsun/misc/ASCIICaseInsensitiveComparator;->isUpper(I)Z
+HSPLsun/misc/ASCIICaseInsensitiveComparator;->lowerCaseHashCode(Ljava/lang/String;)I
+HSPLsun/misc/ASCIICaseInsensitiveComparator;->toLower(I)I
+HSPLsun/misc/Cleaner;-><init>(Ljava/lang/Object;Ljava/lang/Runnable;)V
 HSPLsun/misc/Cleaner;->add(Lsun/misc/Cleaner;)Lsun/misc/Cleaner;
 HSPLsun/misc/Cleaner;->clean()V
 HSPLsun/misc/Cleaner;->create(Ljava/lang/Object;Ljava/lang/Runnable;)Lsun/misc/Cleaner;
 HSPLsun/misc/Cleaner;->remove(Lsun/misc/Cleaner;)Z
-HSPLsun/misc/CompoundEnumeration;->hasMoreElements()Z
 HSPLsun/misc/FDBigInteger;-><init>(J[CII)V
 HSPLsun/misc/FDBigInteger;-><init>([II)V
-HSPLsun/misc/FDBigInteger;->add(Lsun/misc/FDBigInteger;)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->addAndCmp(Lsun/misc/FDBigInteger;Lsun/misc/FDBigInteger;)I
+HSPLsun/misc/FDBigInteger;->big5pow(I)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->cmp(Lsun/misc/FDBigInteger;)I
 HSPLsun/misc/FDBigInteger;->cmpPow52(II)I
 HSPLsun/misc/FDBigInteger;->getNormalizationBias()I
 HSPLsun/misc/FDBigInteger;->leftInplaceSub(Lsun/misc/FDBigInteger;)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->leftShift(I)Lsun/misc/FDBigInteger;
+HSPLsun/misc/FDBigInteger;->leftShift([II[IIII)V
 HSPLsun/misc/FDBigInteger;->makeImmutable()V
-HSPLsun/misc/FDBigInteger;->mult(I)Lsun/misc/FDBigInteger;
-HSPLsun/misc/FDBigInteger;->mult([IIII[I)V
+HSPLsun/misc/FDBigInteger;->mult([III[I)V
 HSPLsun/misc/FDBigInteger;->multAddMe(II)V
+HSPLsun/misc/FDBigInteger;->multAndCarryBy10([II[I)I
 HSPLsun/misc/FDBigInteger;->multBy10()Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->multByPow52(II)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->multDiffMe(JLsun/misc/FDBigInteger;)J
 HSPLsun/misc/FDBigInteger;->quoRemIteration(Lsun/misc/FDBigInteger;)I
 HSPLsun/misc/FDBigInteger;->rightInplaceSub(Lsun/misc/FDBigInteger;)Lsun/misc/FDBigInteger;
+HSPLsun/misc/FDBigInteger;->size()I
 HSPLsun/misc/FDBigInteger;->trimLeadingZeros()V
 HSPLsun/misc/FDBigInteger;->valueOfMulPow52(JII)Lsun/misc/FDBigInteger;
+HSPLsun/misc/FDBigInteger;->valueOfPow2(I)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FDBigInteger;->valueOfPow52(II)Lsun/misc/FDBigInteger;
 HSPLsun/misc/FloatingDecimal$1;->initialValue()Ljava/lang/Object;
 HSPLsun/misc/FloatingDecimal$1;->initialValue()Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;
+HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;-><init>(ZI[CI)V
 HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;->doubleValue()D
 HSPLsun/misc/FloatingDecimal$ASCIIToBinaryBuffer;->floatValue()F
+HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;-><init>()V
+HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->access$000(Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;Z)V
+HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->access$100(Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;IJIZ)V
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->appendTo(Ljava/lang/Appendable;)V
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->developLongDigits(IJI)V
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->dtoa(IJIZ)V
@@ -31191,25 +21715,34 @@
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->isExceptional()Z
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->isNegative()Z
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->roundup()V
+HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->setSign(Z)V
 HSPLsun/misc/FloatingDecimal$BinaryToASCIIBuffer;->toJavaFormatString()Ljava/lang/String;
 HSPLsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer;->doubleValue()D
 HSPLsun/misc/FloatingDecimal$PreparedASCIIToBinaryBuffer;->floatValue()F
+HSPLsun/misc/FloatingDecimal;->appendTo(DLjava/lang/Appendable;)V
+HSPLsun/misc/FloatingDecimal;->appendTo(FLjava/lang/Appendable;)V
+HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIBuffer()Lsun/misc/FloatingDecimal$BinaryToASCIIBuffer;
+HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(D)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;
 HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(DZ)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;
 HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(F)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;
+HSPLsun/misc/FloatingDecimal;->parseDouble(Ljava/lang/String;)D
+HSPLsun/misc/FloatingDecimal;->parseFloat(Ljava/lang/String;)F
 HSPLsun/misc/FloatingDecimal;->readJavaFormatString(Ljava/lang/String;)Lsun/misc/FloatingDecimal$ASCIIToBinaryConverter;
-HSPLsun/misc/FormattedFloatingDecimal$1;-><init>()V
+HSPLsun/misc/FloatingDecimal;->toJavaFormatString(D)Ljava/lang/String;
+HSPLsun/misc/FloatingDecimal;->toJavaFormatString(F)Ljava/lang/String;
 HSPLsun/misc/FormattedFloatingDecimal$1;->initialValue()Ljava/lang/Object;
-HSPLsun/misc/FormattedFloatingDecimal$Form;-><init>(Ljava/lang/String;I)V
-HSPLsun/misc/FormattedFloatingDecimal$Form;->values()[Lsun/misc/FormattedFloatingDecimal$Form;
 HSPLsun/misc/FormattedFloatingDecimal;-><init>(ILsun/misc/FormattedFloatingDecimal$Form;Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;)V
 HSPLsun/misc/FormattedFloatingDecimal;->applyPrecision(I[CII)I
+HSPLsun/misc/FormattedFloatingDecimal;->create(ZI)[C
 HSPLsun/misc/FormattedFloatingDecimal;->fillDecimal(I[CIIZ)V
+HSPLsun/misc/FormattedFloatingDecimal;->getBuffer()[C
 HSPLsun/misc/FormattedFloatingDecimal;->getMantissa()[C
 HSPLsun/misc/FormattedFloatingDecimal;->valueOf(DILsun/misc/FormattedFloatingDecimal$Form;)Lsun/misc/FormattedFloatingDecimal;
 HSPLsun/misc/IOUtils;->readFully(Ljava/io/InputStream;IZ)[B
+HSPLsun/misc/LRUCache;-><init>(I)V
 HSPLsun/misc/LRUCache;->forName(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLsun/misc/LRUCache;->moveToFront([Ljava/lang/Object;I)V
 HSPLsun/misc/SharedSecrets;->getJavaIOFileDescriptorAccess()Lsun/misc/JavaIOFileDescriptorAccess;
-HSPLsun/misc/SharedSecrets;->setJavaIOFileDescriptorAccess(Lsun/misc/JavaIOFileDescriptorAccess;)V
 HSPLsun/misc/Unsafe;->arrayBaseOffset(Ljava/lang/Class;)I
 HSPLsun/misc/Unsafe;->arrayIndexScale(Ljava/lang/Class;)I
 HSPLsun/misc/Unsafe;->getAndAddInt(Ljava/lang/Object;JI)I
@@ -31219,52 +21752,45 @@
 HSPLsun/misc/Unsafe;->getAndSetObject(Ljava/lang/Object;JLjava/lang/Object;)Ljava/lang/Object;
 HSPLsun/misc/Unsafe;->getUnsafe()Lsun/misc/Unsafe;
 HSPLsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J
-HSPLsun/misc/VM;->booted()V
-HSPLsun/misc/VM;->initializeOSEnvironment()V
-HSPLsun/misc/Version;->initSystemProperties()V
-HSPLsun/net/NetProperties$1;-><init>()V
-HSPLsun/net/NetProperties$1;->run()Ljava/lang/Object;
-HSPLsun/net/NetProperties$1;->run()Ljava/lang/Void;
-HSPLsun/net/NetProperties;->get(Ljava/lang/String;)Ljava/lang/String;
-HSPLsun/net/NetProperties;->loadDefaultProperties()V
-HSPLsun/net/ResourceManager;->beforeUdpCreate()V
+HSPLsun/net/NetHooks;->beforeTcpConnect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
+HSPLsun/net/ResourceManager;->afterUdpClose()V
+HSPLsun/net/spi/DefaultProxySelector$1;-><init>(Lsun/net/spi/DefaultProxySelector;Ljava/lang/String;Lsun/net/spi/DefaultProxySelector$NonProxyInfo;Ljava/lang/String;)V
+HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/lang/Object;
 HSPLsun/net/spi/DefaultProxySelector$1;->run()Ljava/net/Proxy;
-HSPLsun/net/spi/DefaultProxySelector$NonProxyInfo;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/util/regex/Pattern;Ljava/lang/String;)V
-HSPLsun/net/spi/DefaultProxySelector;-><init>()V
 HSPLsun/net/spi/DefaultProxySelector;->select(Ljava/net/URI;)Ljava/util/List;
+HSPLsun/net/util/IPAddressUtil;->convertFromIPv4MappedAddress([B)[B
 HSPLsun/net/util/IPAddressUtil;->isIPv4MappedAddress([B)Z
 HSPLsun/net/www/ParseUtil;->decode(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/net/www/ParseUtil;->encodePath(Ljava/lang/String;Z)Ljava/lang/String;
-HSPLsun/net/www/ParseUtil;->highMask(CC)J
-HSPLsun/net/www/ParseUtil;->highMask(Ljava/lang/String;)J
-HSPLsun/net/www/ParseUtil;->lowMask(CC)J
-HSPLsun/net/www/ParseUtil;->lowMask(Ljava/lang/String;)J
 HSPLsun/net/www/protocol/file/Handler;->parseURL(Ljava/net/URL;Ljava/lang/String;II)V
-HSPLsun/nio/ch/ChannelInputStream;->available()I
+HSPLsun/net/www/protocol/jar/Handler;-><init>()V
+HSPLsun/nio/ch/ChannelInputStream;-><init>(Ljava/nio/channels/ReadableByteChannel;)V
 HSPLsun/nio/ch/ChannelInputStream;->close()V
-HSPLsun/nio/ch/ChannelInputStream;->read()I
 HSPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/ByteBuffer;)I
 HSPLsun/nio/ch/ChannelInputStream;->read(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/ByteBuffer;Z)I
 HSPLsun/nio/ch/ChannelInputStream;->read([BII)I
-HSPLsun/nio/ch/DatagramDispatcher;-><init>()V
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;-><init>(JJILjava/io/FileDescriptor;)V
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;-><init>(JJILjava/io/FileDescriptor;Lsun/nio/ch/FileChannelImpl$1;)V
 HSPLsun/nio/ch/FileChannelImpl$Unmapper;->run()V
 HSPLsun/nio/ch/FileChannelImpl;-><init>(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)V
+HSPLsun/nio/ch/FileChannelImpl;->access$000(JJ)I
 HSPLsun/nio/ch/FileChannelImpl;->ensureOpen()V
 HSPLsun/nio/ch/FileChannelImpl;->fileLockTable()Lsun/nio/ch/FileLockTable;
 HSPLsun/nio/ch/FileChannelImpl;->finalize()V
 HSPLsun/nio/ch/FileChannelImpl;->implCloseChannel()V
-HSPLsun/nio/ch/FileChannelImpl;->isSharedFileLockTable()Z
 HSPLsun/nio/ch/FileChannelImpl;->lock(JJZ)Ljava/nio/channels/FileLock;
 HSPLsun/nio/ch/FileChannelImpl;->map(Ljava/nio/channels/FileChannel$MapMode;JJ)Ljava/nio/MappedByteBuffer;
+HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
+HSPLsun/nio/ch/FileChannelImpl;->open(Ljava/io/FileDescriptor;Ljava/lang/String;ZZZLjava/lang/Object;)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/ch/FileChannelImpl;->position()J
 HSPLsun/nio/ch/FileChannelImpl;->position(J)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/ch/FileChannelImpl;->read(Ljava/nio/ByteBuffer;)I
+HSPLsun/nio/ch/FileChannelImpl;->release(Lsun/nio/ch/FileLockImpl;)V
 HSPLsun/nio/ch/FileChannelImpl;->size()J
 HSPLsun/nio/ch/FileChannelImpl;->tryLock(JJZ)Ljava/nio/channels/FileLock;
 HSPLsun/nio/ch/FileChannelImpl;->write(Ljava/nio/ByteBuffer;)I
-HSPLsun/nio/ch/FileDispatcherImpl;-><init>()V
+HSPLsun/nio/ch/FileDispatcher;-><init>()V
+HSPLsun/nio/ch/FileDispatcherImpl;-><init>(Z)V
 HSPLsun/nio/ch/FileDispatcherImpl;->close(Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/FileDispatcherImpl;->duplicateForMapping(Ljava/io/FileDescriptor;)Ljava/io/FileDescriptor;
 HSPLsun/nio/ch/FileDispatcherImpl;->lock(Ljava/io/FileDescriptor;ZJJZ)I
@@ -31272,38 +21798,45 @@
 HSPLsun/nio/ch/FileDispatcherImpl;->release(Ljava/io/FileDescriptor;JJ)V
 HSPLsun/nio/ch/FileDispatcherImpl;->size(Ljava/io/FileDescriptor;)J
 HSPLsun/nio/ch/FileDispatcherImpl;->write(Ljava/io/FileDescriptor;JI)I
+HSPLsun/nio/ch/FileKey;-><init>()V
 HSPLsun/nio/ch/FileKey;->create(Ljava/io/FileDescriptor;)Lsun/nio/ch/FileKey;
 HSPLsun/nio/ch/FileKey;->hashCode()I
+HSPLsun/nio/ch/FileLockImpl;-><init>(Ljava/nio/channels/FileChannel;JJZ)V
 HSPLsun/nio/ch/FileLockImpl;->invalidate()V
 HSPLsun/nio/ch/FileLockImpl;->isValid()Z
-HSPLsun/nio/ch/IOUtil;->read(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
-HSPLsun/nio/ch/IOUtil;->readIntoNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
-HSPLsun/nio/ch/IOUtil;->write(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
-HSPLsun/nio/ch/IOUtil;->writeFromNativeBuffer(Ljava/io/FileDescriptor;Ljava/nio/ByteBuffer;JLsun/nio/ch/NativeDispatcher;)I
+HSPLsun/nio/ch/FileLockImpl;->release()V
+HSPLsun/nio/ch/FileLockTable;-><init>()V
+HSPLsun/nio/ch/FileLockTable;->newSharedFileLockTable(Ljava/nio/channels/Channel;Ljava/io/FileDescriptor;)Lsun/nio/ch/FileLockTable;
+HSPLsun/nio/ch/IOStatus;->checkAll(J)Z
+HSPLsun/nio/ch/IOStatus;->normalize(I)I
+HSPLsun/nio/ch/IOStatus;->normalize(J)J
+HSPLsun/nio/ch/NativeDispatcher;-><init>()V
+HSPLsun/nio/ch/NativeThreadSet;-><init>(I)V
 HSPLsun/nio/ch/NativeThreadSet;->add()I
 HSPLsun/nio/ch/NativeThreadSet;->remove(I)V
 HSPLsun/nio/ch/NativeThreadSet;->signalAndWait()V
-HSPLsun/nio/ch/Net$1;-><init>()V
-HSPLsun/nio/ch/Net;->isFastTcpLoopbackRequested()Z
+HSPLsun/nio/ch/SharedFileLockTable$FileLockReference;-><init>(Ljava/nio/channels/FileLock;Ljava/lang/ref/ReferenceQueue;Lsun/nio/ch/FileKey;)V
+HSPLsun/nio/ch/SharedFileLockTable;-><init>(Ljava/nio/channels/Channel;Ljava/io/FileDescriptor;)V
 HSPLsun/nio/ch/SharedFileLockTable;->add(Ljava/nio/channels/FileLock;)V
+HSPLsun/nio/ch/SharedFileLockTable;->remove(Ljava/nio/channels/FileLock;)V
 HSPLsun/nio/ch/SharedFileLockTable;->removeAll()Ljava/util/List;
+HSPLsun/nio/ch/SharedFileLockTable;->removeKeyIfEmpty(Lsun/nio/ch/FileKey;Ljava/util/List;)V
 HSPLsun/nio/ch/SharedFileLockTable;->removeStaleEntries()V
-HSPLsun/nio/ch/SocketDispatcher;-><init>()V
-HSPLsun/nio/ch/Util$1;-><init>()V
 HSPLsun/nio/ch/Util$1;->initialValue()Ljava/lang/Object;
 HSPLsun/nio/ch/Util$1;->initialValue()Lsun/nio/ch/Util$BufferCache;
+HSPLsun/nio/ch/Util$BufferCache;-><init>()V
 HSPLsun/nio/ch/Util$BufferCache;->get(I)Ljava/nio/ByteBuffer;
 HSPLsun/nio/ch/Util$BufferCache;->isEmpty()Z
+HSPLsun/nio/ch/Util$BufferCache;->next(I)I
 HSPLsun/nio/ch/Util$BufferCache;->offerFirst(Ljava/nio/ByteBuffer;)Z
 HSPLsun/nio/ch/Util$BufferCache;->removeFirst()Ljava/nio/ByteBuffer;
-HSPLsun/nio/ch/Util;->getMaxCachedBufferSize()J
-HSPLsun/nio/ch/Util;->getTemporaryDirectBuffer(I)Ljava/nio/ByteBuffer;
+HSPLsun/nio/ch/Util;->access$000()I
 HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)V
 HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/CharsetDecoder;)V
-HSPLsun/nio/cs/StreamDecoder;-><init>(Ljava/nio/channels/ReadableByteChannel;Ljava/nio/charset/CharsetDecoder;I)V
 HSPLsun/nio/cs/StreamDecoder;->close()V
 HSPLsun/nio/cs/StreamDecoder;->ensureOpen()V
 HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamDecoder;
+HSPLsun/nio/cs/StreamDecoder;->forInputStreamReader(Ljava/io/InputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamDecoder;
 HSPLsun/nio/cs/StreamDecoder;->implClose()V
 HSPLsun/nio/cs/StreamDecoder;->implRead([CII)I
 HSPLsun/nio/cs/StreamDecoder;->implReady()Z
@@ -31318,29 +21851,20 @@
 HSPLsun/nio/cs/StreamEncoder;->flush()V
 HSPLsun/nio/cs/StreamEncoder;->flushLeftoverChar(Ljava/nio/CharBuffer;Z)V
 HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/lang/String;)Lsun/nio/cs/StreamEncoder;
+HSPLsun/nio/cs/StreamEncoder;->forOutputStreamWriter(Ljava/io/OutputStream;Ljava/lang/Object;Ljava/nio/charset/Charset;)Lsun/nio/cs/StreamEncoder;
 HSPLsun/nio/cs/StreamEncoder;->implClose()V
 HSPLsun/nio/cs/StreamEncoder;->implFlush()V
 HSPLsun/nio/cs/StreamEncoder;->implFlushBuffer()V
 HSPLsun/nio/cs/StreamEncoder;->implWrite([CII)V
+HSPLsun/nio/cs/StreamEncoder;->write(I)V
 HSPLsun/nio/cs/StreamEncoder;->write(Ljava/lang/String;II)V
 HSPLsun/nio/cs/StreamEncoder;->write([CII)V
 HSPLsun/nio/cs/StreamEncoder;->writeBytes()V
-HSPLsun/nio/cs/ThreadLocalCoders$1;-><init>(I)V
-HSPLsun/nio/cs/ThreadLocalCoders$1;->create(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLsun/nio/cs/ThreadLocalCoders$2;-><init>(I)V
-HSPLsun/nio/cs/ThreadLocalCoders$2;->create(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLsun/nio/cs/ThreadLocalCoders$2;->hasName(Ljava/lang/Object;Ljava/lang/Object;)Z
 HSPLsun/nio/cs/ThreadLocalCoders$Cache;->forName(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLsun/nio/fs/AbstractPath;->resolve(Ljava/lang/String;)Ljava/nio/file/Path;
-HSPLsun/nio/fs/AbstractPath;->startsWith(Ljava/lang/String;)Z
-HSPLsun/nio/fs/AbstractPath;->toFile()Ljava/io/File;
-HSPLsun/nio/fs/DefaultFileSystemProvider;->create()Ljava/nio/file/spi/FileSystemProvider;
-HSPLsun/nio/fs/DefaultFileSystemProvider;->createProvider(Ljava/lang/String;)Ljava/nio/file/spi/FileSystemProvider;
-PLsun/nio/fs/Globs;->toRegexPattern(Ljava/lang/String;Z)Ljava/lang/String;
-HSPLsun/nio/fs/LinuxFileSystemProvider;-><init>()V
+HSPLsun/nio/cs/ThreadLocalCoders$Cache;->moveToFront([Ljava/lang/Object;I)V
+HSPLsun/nio/fs/AbstractBasicFileAttributeView;-><init>()V
+HSPLsun/nio/fs/AbstractPath;-><init>()V
 HSPLsun/nio/fs/LinuxFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;
-HSPLsun/nio/fs/LinuxFileSystemProvider;->newFileSystem(Ljava/lang/String;)Lsun/nio/fs/LinuxFileSystem;
-HSPLsun/nio/fs/LinuxFileSystemProvider;->newFileSystem(Ljava/lang/String;)Lsun/nio/fs/UnixFileSystem;
 HSPLsun/nio/fs/LinuxFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;
 HSPLsun/nio/fs/NativeBuffer;->address()J
 HSPLsun/nio/fs/NativeBuffer;->owner()Ljava/lang/Object;
@@ -31348,127 +21872,130 @@
 HSPLsun/nio/fs/NativeBuffer;->setOwner(Ljava/lang/Object;)V
 HSPLsun/nio/fs/NativeBuffer;->size()I
 HSPLsun/nio/fs/NativeBuffers;->copyCStringToNativeBuffer([BLsun/nio/fs/NativeBuffer;)V
+HSPLsun/nio/fs/NativeBuffers;->getNativeBufferFromCache(I)Lsun/nio/fs/NativeBuffer;
 HSPLsun/nio/fs/NativeBuffers;->releaseNativeBuffer(Lsun/nio/fs/NativeBuffer;)V
+HSPLsun/nio/fs/UnixChannelFactory$1;-><clinit>()V
+HSPLsun/nio/fs/UnixChannelFactory$Flags;-><init>()V
 HSPLsun/nio/fs/UnixChannelFactory$Flags;->toFlags(Ljava/util/Set;)Lsun/nio/fs/UnixChannelFactory$Flags;
+HSPLsun/nio/fs/UnixChannelFactory;-><clinit>()V
 HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(ILsun/nio/fs/UnixPath;Ljava/lang/String;Ljava/util/Set;I)Ljava/nio/channels/FileChannel;
+HSPLsun/nio/fs/UnixChannelFactory;->newFileChannel(Lsun/nio/fs/UnixPath;Ljava/util/Set;I)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/fs/UnixChannelFactory;->open(ILsun/nio/fs/UnixPath;Ljava/lang/String;Lsun/nio/fs/UnixChannelFactory$Flags;I)Ljava/io/FileDescriptor;
-HSPLsun/nio/fs/UnixConstants;->get_S_IAMB()I
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->hasNext()Z
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->next()Ljava/lang/Object;
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->next()Ljava/nio/file/Path;
-HSPLsun/nio/fs/UnixDirectoryStream$UnixDirectoryIterator;->readNextEntry()Ljava/nio/file/Path;
-HSPLsun/nio/fs/UnixDirectoryStream;->close()V
-HSPLsun/nio/fs/UnixDirectoryStream;->closeImpl()Z
-HSPLsun/nio/fs/UnixDirectoryStream;->finalize()V
-HSPLsun/nio/fs/UnixDirectoryStream;->iterator(Ljava/nio/file/DirectoryStream;)Ljava/util/Iterator;
 HSPLsun/nio/fs/UnixException;-><init>(I)V
 HSPLsun/nio/fs/UnixException;->errno()I
 HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;)V
 HSPLsun/nio/fs/UnixException;->rethrowAsIOException(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;)V
 HSPLsun/nio/fs/UnixException;->translateToIOException(Ljava/lang/String;Ljava/lang/String;)Ljava/io/IOException;
+HSPLsun/nio/fs/UnixFileAttributeViews$Basic;-><init>(Lsun/nio/fs/UnixPath;Z)V
 HSPLsun/nio/fs/UnixFileAttributeViews$Basic;->readAttributes()Ljava/nio/file/attribute/BasicFileAttributes;
-HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->creationTime()Ljava/nio/file/attribute/FileTime;
+HSPLsun/nio/fs/UnixFileAttributeViews;->createBasicView(Lsun/nio/fs/UnixPath;Z)Lsun/nio/fs/UnixFileAttributeViews$Basic;
+HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;-><init>(Lsun/nio/fs/UnixFileAttributes;)V
 HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->isRegularFile()Z
-HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->lastModifiedTime()Ljava/nio/file/attribute/FileTime;
-HSPLsun/nio/fs/UnixFileAttributes;->creationTime()Ljava/nio/file/attribute/FileTime;
+HSPLsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;->wrap(Lsun/nio/fs/UnixFileAttributes;)Lsun/nio/fs/UnixFileAttributes$UnixAsBasicFileAttributes;
+HSPLsun/nio/fs/UnixFileAttributes;-><init>()V
+HSPLsun/nio/fs/UnixFileAttributes;->asBasicFileAttributes()Ljava/nio/file/attribute/BasicFileAttributes;
+HSPLsun/nio/fs/UnixFileAttributes;->get(Lsun/nio/fs/UnixPath;Z)Lsun/nio/fs/UnixFileAttributes;
 HSPLsun/nio/fs/UnixFileAttributes;->isRegularFile()Z
-HSPLsun/nio/fs/UnixFileAttributes;->lastModifiedTime()Ljava/nio/file/attribute/FileTime;
-HSPLsun/nio/fs/UnixFileModeAttribute;->toUnixMode(I[Ljava/nio/file/attribute/FileAttribute;)I
-PLsun/nio/fs/UnixFileSystem$3;->matches(Ljava/nio/file/Path;)Z
-HSPLsun/nio/fs/UnixFileSystem;-><init>(Lsun/nio/fs/UnixFileSystemProvider;Ljava/lang/String;)V
-HPLsun/nio/fs/UnixFileSystem;->compilePathMatchPattern(Ljava/lang/String;)Ljava/util/regex/Pattern;
 HSPLsun/nio/fs/UnixFileSystem;->getPath(Ljava/lang/String;[Ljava/lang/String;)Ljava/nio/file/Path;
-HPLsun/nio/fs/UnixFileSystem;->getPathMatcher(Ljava/lang/String;)Ljava/nio/file/PathMatcher;
 HSPLsun/nio/fs/UnixFileSystem;->needToResolveAgainstDefaultDirectory()Z
 HSPLsun/nio/fs/UnixFileSystem;->normalizeJavaPath(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/nio/fs/UnixFileSystem;->normalizeNativePath([C)[C
 HSPLsun/nio/fs/UnixFileSystem;->provider()Ljava/nio/file/spi/FileSystemProvider;
 HSPLsun/nio/fs/UnixFileSystemProvider;->checkAccess(Ljava/nio/file/Path;[Ljava/nio/file/AccessMode;)V
-HSPLsun/nio/fs/UnixFileSystemProvider;->checkUri(Ljava/net/URI;)V
-HSPLsun/nio/fs/UnixFileSystemProvider;->createLink(Ljava/nio/file/Path;Ljava/nio/file/Path;)V
+HSPLsun/nio/fs/UnixFileSystemProvider;->checkPath(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixFileSystemProvider;->getFileAttributeView(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/FileAttributeView;
-HSPLsun/nio/fs/UnixFileSystemProvider;->getFileSystem(Ljava/net/URI;)Ljava/nio/file/FileSystem;
 HSPLsun/nio/fs/UnixFileSystemProvider;->newByteChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/SeekableByteChannel;
-HSPLsun/nio/fs/UnixFileSystemProvider;->newDirectoryStream(Ljava/nio/file/Path;Ljava/nio/file/DirectoryStream$Filter;)Ljava/nio/file/DirectoryStream;
+HSPLsun/nio/fs/UnixFileSystemProvider;->newFileChannel(Ljava/nio/file/Path;Ljava/util/Set;[Ljava/nio/file/attribute/FileAttribute;)Ljava/nio/channels/FileChannel;
 HSPLsun/nio/fs/UnixFileSystemProvider;->readAttributes(Ljava/nio/file/Path;Ljava/lang/Class;[Ljava/nio/file/LinkOption;)Ljava/nio/file/attribute/BasicFileAttributes;
-HSPLsun/nio/fs/UnixNativeDispatcher;->access(Lsun/nio/fs/UnixPath;I)V
-HSPLsun/nio/fs/UnixNativeDispatcher;->link(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixPath;)V
-HSPLsun/nio/fs/UnixNativeDispatcher;->open(Lsun/nio/fs/UnixPath;II)I
-HSPLsun/nio/fs/UnixNativeDispatcher;->stat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V
+HSPLsun/nio/fs/UnixNativeDispatcher;->copyToNativeBuffer(Lsun/nio/fs/UnixPath;)Lsun/nio/fs/NativeBuffer;
+HSPLsun/nio/fs/UnixNativeDispatcher;->lstat(Lsun/nio/fs/UnixPath;Lsun/nio/fs/UnixFileAttributes;)V
+HSPLsun/nio/fs/UnixPath;-><init>(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)V
+HSPLsun/nio/fs/UnixPath;-><init>(Lsun/nio/fs/UnixFileSystem;[B)V
+HSPLsun/nio/fs/UnixPath;->checkNotNul(Ljava/lang/String;C)V
 HSPLsun/nio/fs/UnixPath;->checkRead()V
 HSPLsun/nio/fs/UnixPath;->encode(Lsun/nio/fs/UnixFileSystem;Ljava/lang/String;)[B
 HSPLsun/nio/fs/UnixPath;->getByteArrayForSysCalls()[B
-HPLsun/nio/fs/UnixPath;->getFileName()Ljava/nio/file/Path;
-HPLsun/nio/fs/UnixPath;->getFileName()Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixPath;->getFileSystem()Ljava/nio/file/FileSystem;
 HSPLsun/nio/fs/UnixPath;->getFileSystem()Lsun/nio/fs/UnixFileSystem;
-HSPLsun/nio/fs/UnixPath;->getNameCount()I
 HSPLsun/nio/fs/UnixPath;->getParent()Ljava/nio/file/Path;
 HSPLsun/nio/fs/UnixPath;->getParent()Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixPath;->getPathForExceptionMessage()Ljava/lang/String;
 HSPLsun/nio/fs/UnixPath;->initOffsets()V
-HSPLsun/nio/fs/UnixPath;->normalize(Ljava/lang/String;II)Ljava/lang/String;
+HSPLsun/nio/fs/UnixPath;->isEmpty()Z
 HSPLsun/nio/fs/UnixPath;->normalizeAndCheck(Ljava/lang/String;)Ljava/lang/String;
-HSPLsun/nio/fs/UnixPath;->resolve(Ljava/nio/file/Path;)Ljava/nio/file/Path;
 HSPLsun/nio/fs/UnixPath;->resolve(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath;
-HSPLsun/nio/fs/UnixPath;->resolve([B)Lsun/nio/fs/UnixPath;
 HSPLsun/nio/fs/UnixPath;->resolve([B[B)[B
-HSPLsun/nio/fs/UnixPath;->startsWith(Ljava/nio/file/Path;)Z
 HSPLsun/nio/fs/UnixPath;->toString()Ljava/lang/String;
-HSPLsun/nio/fs/UnixSecureDirectoryStream;->close()V
-HSPLsun/nio/fs/UnixSecureDirectoryStream;->finalize()V
-HSPLsun/nio/fs/UnixSecureDirectoryStream;->iterator()Ljava/util/Iterator;
-HSPLsun/nio/fs/Util;->newSet([Ljava/lang/Object;)Ljava/util/Set;
+HSPLsun/nio/fs/UnixPath;->toUnixPath(Ljava/nio/file/Path;)Lsun/nio/fs/UnixPath;
+HSPLsun/nio/fs/Util;->followLinks([Ljava/nio/file/LinkOption;)Z
+HSPLsun/nio/fs/Util;->jnuEncoding()Ljava/nio/charset/Charset;
+HSPLsun/nio/fs/Util;->toString([B)Ljava/lang/String;
 HSPLsun/reflect/Reflection;->ensureMemberAccess(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V
+HSPLsun/reflect/Reflection;->getCallerClass()Ljava/lang/Class;
+HSPLsun/reflect/Reflection;->isSameClassPackage(Ljava/lang/Class;Ljava/lang/Class;)Z
 HSPLsun/reflect/Reflection;->isSameClassPackage(Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;)Z
 HSPLsun/reflect/Reflection;->verifyMemberAccess(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)Z
 HSPLsun/reflect/misc/ReflectUtil;->ensureMemberAccess(Ljava/lang/Class;Ljava/lang/Class;Ljava/lang/Object;I)V
-HSPLsun/security/action/GetBooleanAction;-><init>(Ljava/lang/String;)V
-HSPLsun/security/action/GetBooleanAction;->run()Ljava/lang/Boolean;
-HSPLsun/security/action/GetBooleanAction;->run()Ljava/lang/Object;
 HSPLsun/security/action/GetPropertyAction;-><init>(Ljava/lang/String;)V
-HSPLsun/security/action/GetPropertyAction;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLsun/security/action/GetPropertyAction;->run()Ljava/lang/Object;
 HSPLsun/security/action/GetPropertyAction;->run()Ljava/lang/String;
+HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;)V
+HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;Lsun/security/jca/GetInstance$1;)V
+HSPLsun/security/jca/GetInstance$Instance;->toArray()[Ljava/lang/Object;
 HSPLsun/security/jca/GetInstance;->checkSuperClass(Ljava/security/Provider$Service;Ljava/lang/Class;Ljava/lang/Class;)V
 HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
 HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/Object;)Lsun/security/jca/GetInstance$Instance;
+HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
+HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
+HSPLsun/security/jca/GetInstance;->getInstance(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance;
+HSPLsun/security/jca/GetInstance;->getInstance(Ljava/security/Provider$Service;Ljava/lang/Class;Ljava/lang/Object;)Lsun/security/jca/GetInstance$Instance;
 HSPLsun/security/jca/GetInstance;->getService(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
 HSPLsun/security/jca/GetInstance;->getService(Ljava/lang/String;Ljava/lang/String;Ljava/security/Provider;)Ljava/security/Provider$Service;
-HSPLsun/security/jca/ProviderConfig$2;->run()Ljava/security/Provider;
+HSPLsun/security/jca/GetInstance;->getServices(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+HSPLsun/security/jca/ProviderConfig;-><init>(Ljava/lang/String;)V
+HSPLsun/security/jca/ProviderConfig;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLsun/security/jca/ProviderConfig;-><init>(Ljava/security/Provider;)V
 HSPLsun/security/jca/ProviderConfig;->equals(Ljava/lang/Object;)Z
+HSPLsun/security/jca/ProviderConfig;->expand(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/security/jca/ProviderConfig;->getProvider()Ljava/security/Provider;
-HSPLsun/security/jca/ProviderConfig;->initProvider(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/security/Provider;
-HSPLsun/security/jca/ProviderList$1;-><init>(Ljava/lang/String;DLjava/lang/String;)V
+HSPLsun/security/jca/ProviderList$3;-><init>(Lsun/security/jca/ProviderList;)V
 HSPLsun/security/jca/ProviderList$3;->get(I)Ljava/lang/Object;
 HSPLsun/security/jca/ProviderList$3;->get(I)Ljava/security/Provider;
 HSPLsun/security/jca/ProviderList$3;->size()I
+HSPLsun/security/jca/ProviderList$ServiceList$1;-><init>(Lsun/security/jca/ProviderList$ServiceList;)V
 HSPLsun/security/jca/ProviderList$ServiceList$1;->hasNext()Z
 HSPLsun/security/jca/ProviderList$ServiceList$1;->next()Ljava/lang/Object;
 HSPLsun/security/jca/ProviderList$ServiceList$1;->next()Ljava/security/Provider$Service;
+HSPLsun/security/jca/ProviderList$ServiceList;-><init>(Lsun/security/jca/ProviderList;Ljava/lang/String;Ljava/lang/String;)V
+HSPLsun/security/jca/ProviderList$ServiceList;->access$200(Lsun/security/jca/ProviderList$ServiceList;I)Ljava/security/Provider$Service;
+HSPLsun/security/jca/ProviderList$ServiceList;->addService(Ljava/security/Provider$Service;)V
+HSPLsun/security/jca/ProviderList$ServiceList;->iterator()Ljava/util/Iterator;
 HSPLsun/security/jca/ProviderList$ServiceList;->tryGet(I)Ljava/security/Provider$Service;
-HSPLsun/security/jca/ProviderList;-><init>()V
 HSPLsun/security/jca/ProviderList;-><init>([Lsun/security/jca/ProviderConfig;Z)V
-HSPLsun/security/jca/ProviderList;->fromSecurityProperties()Lsun/security/jca/ProviderList;
+HSPLsun/security/jca/ProviderList;->access$100(Lsun/security/jca/ProviderList;)[Lsun/security/jca/ProviderConfig;
+HSPLsun/security/jca/ProviderList;->getIndex(Ljava/lang/String;)I
 HSPLsun/security/jca/ProviderList;->getJarList([Ljava/lang/String;)Lsun/security/jca/ProviderList;
+HSPLsun/security/jca/ProviderList;->getProvider(I)Ljava/security/Provider;
 HSPLsun/security/jca/ProviderList;->getProvider(Ljava/lang/String;)Ljava/security/Provider;
+HSPLsun/security/jca/ProviderList;->getProviderConfig(Ljava/lang/String;)Lsun/security/jca/ProviderConfig;
+HSPLsun/security/jca/ProviderList;->getService(Ljava/lang/String;Ljava/lang/String;)Ljava/security/Provider$Service;
+HSPLsun/security/jca/ProviderList;->getServices(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
 HSPLsun/security/jca/ProviderList;->insertAt(Lsun/security/jca/ProviderList;Ljava/security/Provider;I)Lsun/security/jca/ProviderList;
 HSPLsun/security/jca/ProviderList;->loadAll()I
+HSPLsun/security/jca/ProviderList;->providers()Ljava/util/List;
 HSPLsun/security/jca/ProviderList;->removeInvalid()Lsun/security/jca/ProviderList;
-HSPLsun/security/jca/ProviderList;->size()I
-HSPLsun/security/jca/Providers;->beginThreadProviderList(Lsun/security/jca/ProviderList;)Lsun/security/jca/ProviderList;
-HSPLsun/security/jca/Providers;->checkBouncyCastleDeprecation(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLsun/security/jca/Providers;->checkBouncyCastleDeprecation(Ljava/security/Provider;Ljava/lang/String;Ljava/lang/String;)V
-HSPLsun/security/jca/Providers;->endThreadProviderList(Lsun/security/jca/ProviderList;)V
-HSPLsun/security/jca/Providers;->getFullProviderList()Lsun/security/jca/ProviderList;
-HSPLsun/security/jca/Providers;->getSunProvider()Ljava/security/Provider;
-HSPLsun/security/jca/Providers;->startJarVerification()Ljava/lang/Object;
-HSPLsun/security/jca/Providers;->stopJarVerification(Ljava/lang/Object;)V
-HSPLsun/security/jca/ServiceId;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLsun/security/jca/ProviderList;->toArray()[Ljava/security/Provider;
+HSPLsun/security/jca/Providers;->getProviderList()Lsun/security/jca/ProviderList;
+HSPLsun/security/jca/Providers;->getSystemProviderList()Lsun/security/jca/ProviderList;
+HSPLsun/security/jca/Providers;->getThreadProviderList()Lsun/security/jca/ProviderList;
+HSPLsun/security/jca/Providers;->setProviderList(Lsun/security/jca/ProviderList;)V
+HSPLsun/security/jca/Providers;->setSystemProviderList(Lsun/security/jca/ProviderList;)V
+HSPLsun/security/pkcs/ContentInfo;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/pkcs/ContentInfo;-><init>(Lsun/security/util/DerInputStream;Z)V
 HSPLsun/security/pkcs/ContentInfo;->getContent()Lsun/security/util/DerValue;
 HSPLsun/security/pkcs/ContentInfo;->getData()[B
-HSPLsun/security/pkcs/PKCS7$VerbatimX509Certificate;->getEncoded()[B
+HSPLsun/security/pkcs/PKCS7$VerbatimX509Certificate;-><init>(Ljava/security/cert/X509Certificate;[B)V
+HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;-><init>(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getIssuerDN()Ljava/security/Principal;
 HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getKeyUsage()[Z
 HSPLsun/security/pkcs/PKCS7$WrappedX509Certificate;->getPublicKey()Ljava/security/PublicKey;
@@ -31486,6 +22013,7 @@
 HSPLsun/security/pkcs/PKCS7;->populateCertIssuerNames()V
 HSPLsun/security/pkcs/PKCS7;->verify(Lsun/security/pkcs/SignerInfo;[B)Lsun/security/pkcs/SignerInfo;
 HSPLsun/security/pkcs/PKCS7;->verify([B)[Lsun/security/pkcs/SignerInfo;
+HSPLsun/security/pkcs/SignerInfo;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/pkcs/SignerInfo;-><init>(Lsun/security/util/DerInputStream;Z)V
 HSPLsun/security/pkcs/SignerInfo;->getCertificate(Lsun/security/pkcs/PKCS7;)Ljava/security/cert/X509Certificate;
 HSPLsun/security/pkcs/SignerInfo;->getCertificateChain(Lsun/security/pkcs/PKCS7;)Ljava/util/ArrayList;
@@ -31495,81 +22023,40 @@
 HSPLsun/security/pkcs/SignerInfo;->getTsToken()Lsun/security/pkcs/PKCS7;
 HSPLsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;Ljava/io/InputStream;)Lsun/security/pkcs/SignerInfo;
 HSPLsun/security/pkcs/SignerInfo;->verify(Lsun/security/pkcs/PKCS7;[B)Lsun/security/pkcs/SignerInfo;
-HSPLsun/security/provider/CertPathProvider;-><init>()V
 HSPLsun/security/provider/X509Factory;->addToCache(Lsun/security/util/Cache;[BLjava/lang/Object;)V
 HSPLsun/security/provider/X509Factory;->getFromCache(Lsun/security/util/Cache;[B)Ljava/lang/Object;
 HSPLsun/security/provider/X509Factory;->intern(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl;
+HSPLsun/security/provider/certpath/AdaptableX509CertSelector;-><init>()V
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->match(Ljava/security/cert/Certificate;)Z
 HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->matchSubjectKeyID(Ljava/security/cert/X509Certificate;)Z
-HPLsun/security/provider/certpath/AdaptableX509CertSelector;->setValidityPeriod(Ljava/util/Date;Ljava/util/Date;)V
-PLsun/security/provider/certpath/AdjacencyList;->buildList(Ljava/util/List;ILsun/security/provider/certpath/BuildStep;)Z
+HSPLsun/security/provider/certpath/AdaptableX509CertSelector;->setSkiAndSerialNumber(Lsun/security/x509/AuthorityKeyIdentifierExtension;)V
 HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;)V
 HSPLsun/security/provider/certpath/AlgorithmChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/security/AlgorithmConstraints;)V
-HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/PublicKey;Lsun/security/x509/AlgorithmId;)V
 HSPLsun/security/provider/certpath/AlgorithmChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
-HSPLsun/security/provider/certpath/AlgorithmChecker;->checkFingerprint(Ljava/security/cert/X509Certificate;)Z
 HSPLsun/security/provider/certpath/AlgorithmChecker;->init(Z)V
-HPLsun/security/provider/certpath/AlgorithmChecker;->isForwardCheckingSupported()Z
-HPLsun/security/provider/certpath/AlgorithmChecker;->trySetTrustAnchor(Ljava/security/cert/TrustAnchor;)V
 HSPLsun/security/provider/certpath/BasicChecker;-><init>(Ljava/security/cert/TrustAnchor;Ljava/util/Date;Ljava/lang/String;Z)V
 HSPLsun/security/provider/certpath/BasicChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
+HSPLsun/security/provider/certpath/BasicChecker;->getPublicKey()Ljava/security/PublicKey;
 HSPLsun/security/provider/certpath/BasicChecker;->init(Z)V
 HSPLsun/security/provider/certpath/BasicChecker;->updateState(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/provider/certpath/BasicChecker;->verifyNameChaining(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/provider/certpath/BasicChecker;->verifySignature(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/provider/certpath/BasicChecker;->verifyTimestamp(Ljava/security/cert/X509Certificate;)V
-PLsun/security/provider/certpath/Builder;->addMatchingCerts(Ljava/security/cert/X509CertSelector;Ljava/util/Collection;Ljava/util/Collection;Z)Z
-HSPLsun/security/provider/certpath/CertId;-><init>(Ljavax/security/auth/x500/X500Principal;Ljava/security/PublicKey;Lsun/security/x509/SerialNumber;)V
-HSPLsun/security/provider/certpath/CertId;-><init>(Lsun/security/util/DerInputStream;)V
-HSPLsun/security/provider/certpath/CertId;->equals(Ljava/lang/Object;)Z
-HSPLsun/security/provider/certpath/CertId;->getHashAlgorithm()Lsun/security/x509/AlgorithmId;
-HSPLsun/security/provider/certpath/CertId;->getIssuerKeyHash()[B
-HSPLsun/security/provider/certpath/CertId;->getIssuerNameHash()[B
-HSPLsun/security/provider/certpath/CertId;->getSerialNumber()Ljava/math/BigInteger;
-HSPLsun/security/provider/certpath/CertId;->hashCode()I
+HSPLsun/security/provider/certpath/ConstraintsChecker;-><init>(I)V
 HSPLsun/security/provider/certpath/ConstraintsChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
 HSPLsun/security/provider/certpath/ConstraintsChecker;->checkBasicConstraints(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/provider/certpath/ConstraintsChecker;->init(Z)V
 HSPLsun/security/provider/certpath/ConstraintsChecker;->mergeNameConstraints(Ljava/security/cert/X509Certificate;Lsun/security/x509/NameConstraintsExtension;)Lsun/security/x509/NameConstraintsExtension;
 HSPLsun/security/provider/certpath/ConstraintsChecker;->verifyNameConstraints(Ljava/security/cert/X509Certificate;)V
-PLsun/security/provider/certpath/ForwardBuilder$PKIXCertComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLsun/security/provider/certpath/ForwardBuilder$PKIXCertComparator;->compare(Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;)I
-PLsun/security/provider/certpath/ForwardBuilder;-><init>(Lsun/security/provider/certpath/PKIX$BuilderParams;Z)V
-PLsun/security/provider/certpath/ForwardBuilder;->addCertToPath(Ljava/security/cert/X509Certificate;Ljava/util/LinkedList;)V
-PLsun/security/provider/certpath/ForwardBuilder;->getMatchingCACerts(Lsun/security/provider/certpath/ForwardState;Ljava/util/List;Ljava/util/Collection;)V
-PLsun/security/provider/certpath/ForwardBuilder;->getMatchingCerts(Lsun/security/provider/certpath/State;Ljava/util/List;)Ljava/util/Collection;
-PLsun/security/provider/certpath/ForwardBuilder;->getMatchingEECerts(Lsun/security/provider/certpath/ForwardState;Ljava/util/List;Ljava/util/Collection;)V
-PLsun/security/provider/certpath/ForwardBuilder;->isPathCompleted(Ljava/security/cert/X509Certificate;)Z
-PLsun/security/provider/certpath/ForwardBuilder;->verifyCert(Ljava/security/cert/X509Certificate;Lsun/security/provider/certpath/State;Ljava/util/List;)V
-PLsun/security/provider/certpath/ForwardState;->clone()Ljava/lang/Object;
-PLsun/security/provider/certpath/ForwardState;->initState(Ljava/util/List;)V
-PLsun/security/provider/certpath/ForwardState;->isInitial()Z
-PLsun/security/provider/certpath/ForwardState;->keyParamsNeeded()Z
-PLsun/security/provider/certpath/ForwardState;->updateState(Ljava/security/cert/X509Certificate;)V
+HSPLsun/security/provider/certpath/KeyChecker;-><init>(ILjava/security/cert/CertSelector;)V
 HSPLsun/security/provider/certpath/KeyChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
 HSPLsun/security/provider/certpath/KeyChecker;->init(Z)V
 HSPLsun/security/provider/certpath/KeyChecker;->verifyCAKeyUsage(Ljava/security/cert/X509Certificate;)V
-HSPLsun/security/provider/certpath/OCSP$RevocationStatus$CertStatus;-><init>(Ljava/lang/String;I)V
-HSPLsun/security/provider/certpath/OCSPResponse$ResponseStatus;-><init>(Ljava/lang/String;I)V
-HSPLsun/security/provider/certpath/OCSPResponse$ResponseStatus;->values()[Lsun/security/provider/certpath/OCSPResponse$ResponseStatus;
-HSPLsun/security/provider/certpath/OCSPResponse$SingleResponse;-><init>(Lsun/security/util/DerValue;)V
-HSPLsun/security/provider/certpath/OCSPResponse$SingleResponse;-><init>(Lsun/security/util/DerValue;Lsun/security/provider/certpath/OCSPResponse$1;)V
-HSPLsun/security/provider/certpath/OCSPResponse$SingleResponse;->access$100(Lsun/security/provider/certpath/OCSPResponse$SingleResponse;)Lsun/security/provider/certpath/CertId;
-HSPLsun/security/provider/certpath/OCSPResponse;-><init>([B)V
-HSPLsun/security/provider/certpath/OCSPResponse;->initializeClockSkew()I
-HSPLsun/security/provider/certpath/OCSPResponse;->verify(Ljava/util/List;Ljava/security/cert/X509Certificate;Ljava/security/cert/X509Certificate;Ljava/util/Date;[B)V
-HSPLsun/security/provider/certpath/OCSPResponse;->verifySignature(Ljava/security/cert/X509Certificate;)Z
-PLsun/security/provider/certpath/PKIX$BuilderParams;->certStores()Ljava/util/List;
-PLsun/security/provider/certpath/PKIX$BuilderParams;->checkParams(Ljava/security/cert/PKIXBuilderParameters;)V
-PLsun/security/provider/certpath/PKIX$BuilderParams;->getTargetSubject(Ljava/util/List;Ljava/security/cert/X509CertSelector;)Ljavax/security/auth/x500/X500Principal;
-PLsun/security/provider/certpath/PKIX$BuilderParams;->maxPathLength()I
-PLsun/security/provider/certpath/PKIX$BuilderParams;->targetSubject()Ljavax/security/auth/x500/X500Principal;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;-><init>(Ljava/security/cert/CertPath;Ljava/security/cert/PKIXParameters;)V
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;-><init>(Ljava/security/cert/PKIXParameters;)V
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->anyPolicyInhibited()Z
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPath()Ljava/security/cert/CertPath;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certPathCheckers()Ljava/util/List;
-HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certStores()Ljava/util/List;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->certificates()Ljava/util/List;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->date()Ljava/util/Date;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->explicitPolicyRequired()Z
@@ -31577,12 +22064,12 @@
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyMappingInhibited()Z
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->policyQualifiersRejected()Z
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->revocationEnabled()Z
-HPLsun/security/provider/certpath/PKIX$ValidatorParams;->setCertPath(Ljava/security/cert/CertPath;)V
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->sigProvider()Ljava/lang/String;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->targetCertConstraints()Ljava/security/cert/CertSelector;
 HSPLsun/security/provider/certpath/PKIX$ValidatorParams;->trustAnchors()Ljava/util/Set;
+HSPLsun/security/provider/certpath/PKIX;->checkParams(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Lsun/security/provider/certpath/PKIX$ValidatorParams;
+HSPLsun/security/provider/certpath/PKIX;->isDSAPublicKeyWithoutParams(Ljava/security/PublicKey;)Z
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;-><init>()V
-HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineGetRevocationChecker()Ljava/security/cert/CertPathChecker;
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->engineValidate(Ljava/security/cert/CertPath;Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathValidatorResult;
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
 HSPLsun/security/provider/certpath/PKIXCertPathValidator;->validate(Lsun/security/provider/certpath/PKIX$ValidatorParams;)Ljava/security/cert/PKIXCertPathValidatorResult;
@@ -31592,7 +22079,6 @@
 HSPLsun/security/provider/certpath/PolicyChecker;->checkPolicy(Ljava/security/cert/X509Certificate;)V
 HSPLsun/security/provider/certpath/PolicyChecker;->getPolicyTree()Ljava/security/cert/PolicyNode;
 HSPLsun/security/provider/certpath/PolicyChecker;->init(Z)V
-HPLsun/security/provider/certpath/PolicyChecker;->isForwardCheckingSupported()Z
 HSPLsun/security/provider/certpath/PolicyChecker;->mergeExplicitPolicy(ILsun/security/x509/X509CertImpl;Z)I
 HSPLsun/security/provider/certpath/PolicyChecker;->mergeInhibitAnyPolicy(ILsun/security/x509/X509CertImpl;)I
 HSPLsun/security/provider/certpath/PolicyChecker;->mergePolicyMapping(ILsun/security/x509/X509CertImpl;)I
@@ -31601,54 +22087,37 @@
 HSPLsun/security/provider/certpath/PolicyChecker;->processPolicyMappings(Lsun/security/x509/X509CertImpl;IILsun/security/provider/certpath/PolicyNodeImpl;ZLjava/util/Set;)Lsun/security/provider/certpath/PolicyNodeImpl;
 HSPLsun/security/provider/certpath/PolicyNodeImpl;-><init>(Lsun/security/provider/certpath/PolicyNodeImpl;Ljava/lang/String;Ljava/util/Set;ZLjava/util/Set;Z)V
 HSPLsun/security/provider/certpath/PolicyNodeImpl;-><init>(Lsun/security/provider/certpath/PolicyNodeImpl;Lsun/security/provider/certpath/PolicyNodeImpl;)V
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->addChild(Lsun/security/provider/certpath/PolicyNodeImpl;)V
 HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree()Lsun/security/provider/certpath/PolicyNodeImpl;
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->copyTree(Lsun/security/provider/certpath/PolicyNodeImpl;)Lsun/security/provider/certpath/PolicyNodeImpl;
 HSPLsun/security/provider/certpath/PolicyNodeImpl;->getChildren()Ljava/util/Iterator;
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->getDepth()I
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->getExpectedPolicies()Ljava/util/Set;
 HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodes(I)Ljava/util/Set;
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodes(ILjava/util/Set;)V
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpected(ILjava/lang/String;Z)Ljava/util/Set;
 HSPLsun/security/provider/certpath/PolicyNodeImpl;->getPolicyNodesExpectedHelper(ILjava/lang/String;Z)Ljava/util/Set;
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->getValidPolicy()Ljava/lang/String;
 HSPLsun/security/provider/certpath/PolicyNodeImpl;->prune(I)V
-HSPLsun/security/provider/certpath/RevocationChecker$1;->run()Lsun/security/provider/certpath/RevocationChecker$RevocationProperties;
-HSPLsun/security/provider/certpath/RevocationChecker$Mode;-><init>(Ljava/lang/String;I)V
-HSPLsun/security/provider/certpath/RevocationChecker$Mode;->values()[Lsun/security/provider/certpath/RevocationChecker$Mode;
-HSPLsun/security/provider/certpath/RevocationChecker;->check(Ljava/security/cert/Certificate;Ljava/util/Collection;)V
-HSPLsun/security/provider/certpath/RevocationChecker;->check(Ljava/security/cert/X509Certificate;Ljava/util/Collection;Ljava/security/PublicKey;Z)V
-HSPLsun/security/provider/certpath/RevocationChecker;->checkOCSP(Ljava/security/cert/X509Certificate;Ljava/util/Collection;)V
-HSPLsun/security/provider/certpath/RevocationChecker;->clone()Ljava/lang/Object;
-HSPLsun/security/provider/certpath/RevocationChecker;->clone()Lsun/security/provider/certpath/RevocationChecker;
-HSPLsun/security/provider/certpath/RevocationChecker;->getResponderCert(Lsun/security/provider/certpath/RevocationChecker$RevocationProperties;Ljava/util/Set;Ljava/util/List;)Ljava/security/cert/X509Certificate;
-HSPLsun/security/provider/certpath/RevocationChecker;->init(Ljava/security/cert/TrustAnchor;Lsun/security/provider/certpath/PKIX$ValidatorParams;)V
-HSPLsun/security/provider/certpath/RevocationChecker;->init(Z)V
-HSPLsun/security/provider/certpath/RevocationChecker;->toURI(Ljava/lang/String;)Ljava/net/URI;
-HSPLsun/security/provider/certpath/RevocationChecker;->updateState(Ljava/security/cert/X509Certificate;)V
-PLsun/security/provider/certpath/SunCertPathBuilder;-><init>()V
-PLsun/security/provider/certpath/SunCertPathBuilder;->addVertices(Ljava/util/Collection;Ljava/util/List;)Ljava/util/List;
-PLsun/security/provider/certpath/SunCertPathBuilder;->build()Ljava/security/cert/PKIXCertPathBuilderResult;
-PLsun/security/provider/certpath/SunCertPathBuilder;->buildCertPath(ZLjava/util/List;)Ljava/security/cert/PKIXCertPathBuilderResult;
-PLsun/security/provider/certpath/SunCertPathBuilder;->buildForward(Ljava/util/List;Ljava/util/LinkedList;Z)V
-PLsun/security/provider/certpath/SunCertPathBuilder;->depthFirstSearchForward(Ljavax/security/auth/x500/X500Principal;Lsun/security/provider/certpath/ForwardState;Lsun/security/provider/certpath/ForwardBuilder;Ljava/util/List;Ljava/util/LinkedList;)V
-PLsun/security/provider/certpath/SunCertPathBuilder;->engineBuild(Ljava/security/cert/CertPathParameters;)Ljava/security/cert/CertPathBuilderResult;
-PLsun/security/provider/certpath/SunCertPathBuilderResult;-><init>(Ljava/security/cert/CertPath;Ljava/security/cert/TrustAnchor;Ljava/security/cert/PolicyNode;Ljava/security/PublicKey;Lsun/security/provider/certpath/AdjacencyList;)V
-PLsun/security/provider/certpath/Vertex;->getCertificate()Ljava/security/cert/X509Certificate;
-PLsun/security/provider/certpath/Vertex;->getIndex()I
-PLsun/security/provider/certpath/Vertex;->getThrowable()Ljava/lang/Throwable;
-PLsun/security/provider/certpath/Vertex;->setIndex(I)V
+HSPLsun/security/provider/certpath/PolicyNodeImpl;->setImmutable()V
 HSPLsun/security/util/AbstractAlgorithmConstraints;->checkAlgorithm([Ljava/lang/String;Ljava/lang/String;Lsun/security/util/AlgorithmDecomposer;)Z
-HSPLsun/security/util/AbstractAlgorithmConstraints;->getAlgorithms(Ljava/lang/String;)[Ljava/lang/String;
 HSPLsun/security/util/AlgorithmDecomposer;->decompose(Ljava/lang/String;)Ljava/util/Set;
-HSPLsun/security/util/AlgorithmDecomposer;->decomposeImpl(Ljava/lang/String;)Ljava/util/Set;
-HSPLsun/security/util/AlgorithmDecomposer;->decomposeOneHash(Ljava/lang/String;)Ljava/util/Set;
 HSPLsun/security/util/BitArray;-><init>(I[B)V
 HSPLsun/security/util/BitArray;->get(I)Z
 HSPLsun/security/util/BitArray;->length()I
+HSPLsun/security/util/BitArray;->position(I)I
+HSPLsun/security/util/BitArray;->subscript(I)I
 HSPLsun/security/util/BitArray;->toBooleanArray()[Z
 HSPLsun/security/util/BitArray;->toByteArray()[B
-HSPLsun/security/util/ByteArrayLexOrder;-><init>()V
-HSPLsun/security/util/ByteArrayTagOrder;-><init>()V
+HSPLsun/security/util/Cache$EqualByteArray;-><init>([B)V
 HSPLsun/security/util/Cache$EqualByteArray;->equals(Ljava/lang/Object;)Z
 HSPLsun/security/util/Cache$EqualByteArray;->hashCode()I
-HSPLsun/security/util/Cache;->newSoftMemoryCache(I)Lsun/security/util/Cache;
+HSPLsun/security/util/CertConstraintParameters;-><init>(Ljava/security/cert/X509Certificate;Z)V
 HSPLsun/security/util/CertConstraintParameters;->getCertificate()Ljava/security/cert/X509Certificate;
-HSPLsun/security/util/Debug;->getInstance(Ljava/lang/String;)Lsun/security/util/Debug;
-HSPLsun/security/util/Debug;->getInstance(Ljava/lang/String;Ljava/lang/String;)Lsun/security/util/Debug;
+HSPLsun/security/util/DerIndefLenConverter;->isIndefinite(I)Z
+HSPLsun/security/util/DerIndefLenConverter;->isLongForm(I)Z
+HSPLsun/security/util/DerInputBuffer;-><init>([B)V
+HSPLsun/security/util/DerInputBuffer;-><init>([BII)V
 HSPLsun/security/util/DerInputBuffer;->dup()Lsun/security/util/DerInputBuffer;
 HSPLsun/security/util/DerInputBuffer;->getBigInteger(IZ)Ljava/math/BigInteger;
 HSPLsun/security/util/DerInputBuffer;->getBitString()[B
@@ -31663,20 +22132,23 @@
 HSPLsun/security/util/DerInputBuffer;->peek()I
 HSPLsun/security/util/DerInputBuffer;->toByteArray()[B
 HSPLsun/security/util/DerInputBuffer;->truncate(I)V
+HSPLsun/security/util/DerInputStream;-><init>(Lsun/security/util/DerInputBuffer;)V
+HSPLsun/security/util/DerInputStream;-><init>([B)V
 HSPLsun/security/util/DerInputStream;->available()I
 HSPLsun/security/util/DerInputStream;->getBigInteger()Ljava/math/BigInteger;
 HSPLsun/security/util/DerInputStream;->getByte()I
 HSPLsun/security/util/DerInputStream;->getBytes([B)V
 HSPLsun/security/util/DerInputStream;->getDerValue()Lsun/security/util/DerValue;
-HSPLsun/security/util/DerInputStream;->getEnumerated()I
 HSPLsun/security/util/DerInputStream;->getGeneralizedTime()Ljava/util/Date;
 HSPLsun/security/util/DerInputStream;->getLength()I
 HSPLsun/security/util/DerInputStream;->getLength(ILjava/io/InputStream;)I
+HSPLsun/security/util/DerInputStream;->getLength(Ljava/io/InputStream;)I
 HSPLsun/security/util/DerInputStream;->getOID()Lsun/security/util/ObjectIdentifier;
 HSPLsun/security/util/DerInputStream;->getOctetString()[B
 HSPLsun/security/util/DerInputStream;->getSequence(I)[Lsun/security/util/DerValue;
 HSPLsun/security/util/DerInputStream;->getSequence(IZ)[Lsun/security/util/DerValue;
 HSPLsun/security/util/DerInputStream;->getSet(I)[Lsun/security/util/DerValue;
+HSPLsun/security/util/DerInputStream;->getSet(IZ)[Lsun/security/util/DerValue;
 HSPLsun/security/util/DerInputStream;->getSet(IZZ)[Lsun/security/util/DerValue;
 HSPLsun/security/util/DerInputStream;->getUTCTime()Ljava/util/Date;
 HSPLsun/security/util/DerInputStream;->getUnalignedBitString()Lsun/security/util/BitArray;
@@ -31688,25 +22160,34 @@
 HSPLsun/security/util/DerInputStream;->reset()V
 HSPLsun/security/util/DerInputStream;->subStream(IZ)Lsun/security/util/DerInputStream;
 HSPLsun/security/util/DerInputStream;->toByteArray()[B
+HSPLsun/security/util/DerOutputStream;-><init>()V
+HSPLsun/security/util/DerOutputStream;->putDerValue(Lsun/security/util/DerValue;)V
 HSPLsun/security/util/DerOutputStream;->putLength(I)V
+HSPLsun/security/util/DerOutputStream;->putNull()V
+HSPLsun/security/util/DerOutputStream;->putOID(Lsun/security/util/ObjectIdentifier;)V
 HSPLsun/security/util/DerOutputStream;->putOctetString([B)V
 HSPLsun/security/util/DerOutputStream;->putOrderedSet(B[Lsun/security/util/DerEncoder;Ljava/util/Comparator;)V
 HSPLsun/security/util/DerOutputStream;->putOrderedSetOf(B[Lsun/security/util/DerEncoder;)V
+HSPLsun/security/util/DerOutputStream;->putUnalignedBitString(Lsun/security/util/BitArray;)V
 HSPLsun/security/util/DerOutputStream;->write(BLsun/security/util/DerOutputStream;)V
 HSPLsun/security/util/DerOutputStream;->write(B[B)V
 HSPLsun/security/util/DerValue;-><init>(B[B)V
+HSPLsun/security/util/DerValue;-><init>(Ljava/io/InputStream;)V
 HSPLsun/security/util/DerValue;-><init>(Ljava/lang/String;)V
 HSPLsun/security/util/DerValue;-><init>(Lsun/security/util/DerInputBuffer;Z)V
+HSPLsun/security/util/DerValue;-><init>([B)V
 HSPLsun/security/util/DerValue;->encode(Lsun/security/util/DerOutputStream;)V
 HSPLsun/security/util/DerValue;->getBigInteger()Ljava/math/BigInteger;
 HSPLsun/security/util/DerValue;->getBitString()[B
 HSPLsun/security/util/DerValue;->getBoolean()Z
+HSPLsun/security/util/DerValue;->getData()Lsun/security/util/DerInputStream;
 HSPLsun/security/util/DerValue;->getDataBytes()[B
 HSPLsun/security/util/DerValue;->getIA5String()Ljava/lang/String;
 HSPLsun/security/util/DerValue;->getInteger()I
 HSPLsun/security/util/DerValue;->getOID()Lsun/security/util/ObjectIdentifier;
 HSPLsun/security/util/DerValue;->getOctetString()[B
 HSPLsun/security/util/DerValue;->getOriginalEncodedForm()[B
+HSPLsun/security/util/DerValue;->getTag()B
 HSPLsun/security/util/DerValue;->getUnalignedBitString()Lsun/security/util/BitArray;
 HSPLsun/security/util/DerValue;->init(BLjava/lang/String;)Lsun/security/util/DerInputStream;
 HSPLsun/security/util/DerValue;->init(ZLjava/io/InputStream;)Lsun/security/util/DerInputStream;
@@ -31718,89 +22199,80 @@
 HSPLsun/security/util/DerValue;->resetTag(B)V
 HSPLsun/security/util/DerValue;->toByteArray()[B
 HSPLsun/security/util/DerValue;->toDerInputStream()Lsun/security/util/DerInputStream;
-HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;-><init>(Ljava/lang/String;I)V
-HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->of(Ljava/lang/String;)Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-HSPLsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;->values()[Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;
-HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;-><init>([Ljava/lang/String;)V
+HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->getConstraints(Ljava/lang/String;)Ljava/util/Set;
 HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Ljava/security/Key;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints$Constraints;->permits(Lsun/security/util/CertConstraintParameters;)V
-HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;-><init>(Ljava/lang/String;Lsun/security/util/DisabledAlgorithmConstraints$Constraint$Operator;I)V
 HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Ljava/security/Key;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permits(Lsun/security/util/CertConstraintParameters;)V
 HSPLsun/security/util/DisabledAlgorithmConstraints$KeySizeConstraint;->permitsImpl(Ljava/security/Key;)Z
-HSPLsun/security/util/DisabledAlgorithmConstraints;-><init>(Ljava/lang/String;)V
+HSPLsun/security/util/DisabledAlgorithmConstraints;->access$000()Lsun/security/util/Debug;
 HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints;->checkConstraints(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V
-HSPLsun/security/util/DisabledAlgorithmConstraints;->checkProperty(Ljava/lang/String;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/AlgorithmParameters;)Z
 HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/lang/String;Ljava/security/Key;Ljava/security/AlgorithmParameters;)Z
+HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Ljava/security/Key;)Z
+HSPLsun/security/util/DisabledAlgorithmConstraints;->permits(Ljava/util/Set;Lsun/security/util/CertConstraintParameters;)V
 HSPLsun/security/util/KeyUtil;->getKeySize(Ljava/security/Key;)I
+HSPLsun/security/util/ManifestDigester$Entry;-><init>(III[B)V
+HSPLsun/security/util/ManifestDigester$Position;-><init>()V
 HSPLsun/security/util/ManifestDigester;-><init>([B)V
 HSPLsun/security/util/ManifestDigester;->findSection(ILsun/security/util/ManifestDigester$Position;)Z
 HSPLsun/security/util/ManifestDigester;->isNameAttr([BI)Z
 HSPLsun/security/util/ManifestDigester;->manifestDigest(Ljava/security/MessageDigest;)[B
+HSPLsun/security/util/ManifestEntryVerifier$SunProviderHolder;->access$000()Ljava/security/Provider;
 HSPLsun/security/util/ManifestEntryVerifier;-><init>(Ljava/util/jar/Manifest;)V
 HSPLsun/security/util/ManifestEntryVerifier;->getEntry()Ljava/util/jar/JarEntry;
 HSPLsun/security/util/ManifestEntryVerifier;->setEntry(Ljava/lang/String;Ljava/util/jar/JarEntry;)V
 HSPLsun/security/util/ManifestEntryVerifier;->update(B)V
 HSPLsun/security/util/ManifestEntryVerifier;->update([BII)V
 HSPLsun/security/util/ManifestEntryVerifier;->verify(Ljava/util/Hashtable;Ljava/util/Hashtable;)[Ljava/security/CodeSigner;
+HSPLsun/security/util/MemoryCache$SoftCacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)V
 HSPLsun/security/util/MemoryCache$SoftCacheEntry;->getValue()Ljava/lang/Object;
 HSPLsun/security/util/MemoryCache$SoftCacheEntry;->isValid(J)Z
-HSPLsun/security/util/MemoryCache;-><init>(ZII)V
 HSPLsun/security/util/MemoryCache;->emptyQueue()V
 HSPLsun/security/util/MemoryCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLsun/security/util/MemoryCache;->newEntry(Ljava/lang/Object;Ljava/lang/Object;JLjava/lang/ref/ReferenceQueue;)Lsun/security/util/MemoryCache$CacheEntry;
 HSPLsun/security/util/MemoryCache;->put(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLsun/security/util/ObjectIdentifier;-><init>(Ljava/lang/String;)V
 HSPLsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputBuffer;)V
 HSPLsun/security/util/ObjectIdentifier;-><init>(Lsun/security/util/DerInputStream;)V
-HSPLsun/security/util/ObjectIdentifier;-><init>([I)V
 HSPLsun/security/util/ObjectIdentifier;->check([B)V
-HSPLsun/security/util/ObjectIdentifier;->checkCount(I)V
-HSPLsun/security/util/ObjectIdentifier;->checkFirstComponent(I)V
-HSPLsun/security/util/ObjectIdentifier;->checkOtherComponent(II)V
-HSPLsun/security/util/ObjectIdentifier;->checkSecondComponent(II)V
+HSPLsun/security/util/ObjectIdentifier;->encode(Lsun/security/util/DerOutputStream;)V
 HSPLsun/security/util/ObjectIdentifier;->equals(Ljava/lang/Object;)Z
 HSPLsun/security/util/ObjectIdentifier;->hashCode()I
-HSPLsun/security/util/ObjectIdentifier;->init([II)V
-HSPLsun/security/util/ObjectIdentifier;->newInternal([I)Lsun/security/util/ObjectIdentifier;
-HSPLsun/security/util/ObjectIdentifier;->pack([BIIII)[B
-HSPLsun/security/util/ObjectIdentifier;->pack7Oid([BII[BI)I
 HSPLsun/security/util/ObjectIdentifier;->toString()Ljava/lang/String;
 HSPLsun/security/util/SignatureFileVerifier;-><init>(Ljava/util/ArrayList;Lsun/security/util/ManifestDigester;Ljava/lang/String;[B)V
 HSPLsun/security/util/SignatureFileVerifier;->getDigest(Ljava/lang/String;)Ljava/security/MessageDigest;
 HSPLsun/security/util/SignatureFileVerifier;->getSigners([Lsun/security/pkcs/SignerInfo;Lsun/security/pkcs/PKCS7;)[Ljava/security/CodeSigner;
-HSPLsun/security/util/SignatureFileVerifier;->isBlockOrSF(Ljava/lang/String;)Z
-HSPLsun/security/util/SignatureFileVerifier;->matches([Ljava/security/CodeSigner;[Ljava/security/CodeSigner;[Ljava/security/CodeSigner;)Z
+HSPLsun/security/util/SignatureFileVerifier;->needSignatureFileBytes()Z
 HSPLsun/security/util/SignatureFileVerifier;->process(Ljava/util/Hashtable;Ljava/util/List;)V
 HSPLsun/security/util/SignatureFileVerifier;->processImpl(Ljava/util/Hashtable;Ljava/util/List;)V
+HSPLsun/security/util/SignatureFileVerifier;->setSignatureFile([B)V
 HSPLsun/security/util/SignatureFileVerifier;->updateSigners([Ljava/security/CodeSigner;Ljava/util/Hashtable;Ljava/lang/String;)V
 HSPLsun/security/util/SignatureFileVerifier;->verifyManifestHash(Ljava/util/jar/Manifest;Lsun/security/util/ManifestDigester;Ljava/util/List;)Z
 HSPLsun/security/x509/AVA;-><init>(Ljava/io/Reader;ILjava/util/Map;)V
+HSPLsun/security/x509/AVA;-><init>(Ljava/io/Reader;Ljava/util/Map;)V
 HSPLsun/security/x509/AVA;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/AVA;->derEncode(Ljava/io/OutputStream;)V
 HSPLsun/security/x509/AVA;->isDerString(Lsun/security/util/DerValue;Z)Z
+HSPLsun/security/x509/AVA;->isTerminator(II)Z
 HSPLsun/security/x509/AVA;->parseString(Ljava/io/Reader;IILjava/lang/StringBuilder;)Lsun/security/util/DerValue;
+HSPLsun/security/x509/AVA;->readChar(Ljava/io/Reader;Ljava/lang/String;)I
+HSPLsun/security/x509/AVA;->toKeyword(ILjava/util/Map;)Ljava/lang/String;
 HSPLsun/security/x509/AVA;->toRFC2253CanonicalString()Ljava/lang/String;
 HSPLsun/security/x509/AVA;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String;
-HSPLsun/security/x509/AVAKeyword;-><init>(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;ZZ)V
 HSPLsun/security/x509/AVAKeyword;->getKeyword(Lsun/security/util/ObjectIdentifier;ILjava/util/Map;)Ljava/lang/String;
 HSPLsun/security/x509/AVAKeyword;->getOID(Ljava/lang/String;ILjava/util/Map;)Lsun/security/util/ObjectIdentifier;
 HSPLsun/security/x509/AVAKeyword;->isCompliant(I)Z
-HSPLsun/security/x509/AlgorithmId;-><init>(Lsun/security/util/ObjectIdentifier;)V
-HSPLsun/security/x509/AlgorithmId;->algOID(Ljava/lang/String;)Lsun/security/util/ObjectIdentifier;
+HSPLsun/security/x509/AccessDescription;-><init>(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/AlgorithmId;-><init>(Lsun/security/util/ObjectIdentifier;Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/AlgorithmId;->decodeParams()V
 HSPLsun/security/x509/AlgorithmId;->derEncode(Ljava/io/OutputStream;)V
+HSPLsun/security/x509/AlgorithmId;->encode(Lsun/security/util/DerOutputStream;)V
 HSPLsun/security/x509/AlgorithmId;->equals(Lsun/security/x509/AlgorithmId;)Z
-HSPLsun/security/x509/AlgorithmId;->get(Ljava/lang/String;)Lsun/security/x509/AlgorithmId;
 HSPLsun/security/x509/AlgorithmId;->getEncAlgFromSigAlg(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/security/x509/AlgorithmId;->getName()Ljava/lang/String;
 HSPLsun/security/x509/AlgorithmId;->getParameters()Ljava/security/AlgorithmParameters;
-HSPLsun/security/x509/AlgorithmId;->hashCode()I
 HSPLsun/security/x509/AlgorithmId;->makeSigAlg(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLsun/security/x509/AlgorithmId;->oid([I)Lsun/security/util/ObjectIdentifier;
-HSPLsun/security/x509/AlgorithmId;->paramsToString()Ljava/lang/String;
 HSPLsun/security/x509/AlgorithmId;->parse(Lsun/security/util/DerValue;)Lsun/security/x509/AlgorithmId;
 HSPLsun/security/x509/AuthorityInfoAccessExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/AuthorityInfoAccessExtension;->getName()Ljava/lang/String;
@@ -31813,38 +22285,48 @@
 HSPLsun/security/x509/CRLDistributionPointsExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/CRLDistributionPointsExtension;-><init>(Lsun/security/util/ObjectIdentifier;Ljava/lang/Boolean;Ljava/lang/Object;Ljava/lang/String;)V
 HSPLsun/security/x509/CRLDistributionPointsExtension;->getName()Ljava/lang/String;
+HSPLsun/security/x509/CertificateAlgorithmId;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/CertificateAlgorithmId;->get(Ljava/lang/String;)Lsun/security/x509/AlgorithmId;
+HSPLsun/security/x509/CertificateExtensions;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/CertificateExtensions;->getAllExtensions()Ljava/util/Collection;
 HSPLsun/security/x509/CertificateExtensions;->getExtension(Ljava/lang/String;)Lsun/security/x509/Extension;
+HSPLsun/security/x509/CertificateExtensions;->init(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/CertificateExtensions;->parseExtension(Lsun/security/x509/Extension;)V
 HSPLsun/security/x509/CertificatePoliciesExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/CertificatePoliciesExtension;->get(Ljava/lang/String;)Ljava/util/List;
 HSPLsun/security/x509/CertificatePoliciesExtension;->getName()Ljava/lang/String;
+HSPLsun/security/x509/CertificatePolicyId;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/CertificatePolicyId;->getIdentifier()Lsun/security/util/ObjectIdentifier;
-HSPLsun/security/x509/CertificateSerialNumber;->get(Ljava/lang/String;)Lsun/security/x509/SerialNumber;
+HSPLsun/security/x509/CertificateSerialNumber;-><init>(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/CertificateValidity;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/CertificateValidity;->construct(Lsun/security/util/DerValue;)V
-HPLsun/security/x509/CertificateValidity;->get(Ljava/lang/String;)Ljava/util/Date;
+HSPLsun/security/x509/CertificateVersion;-><init>()V
+HSPLsun/security/x509/CertificateVersion;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/CertificateVersion;->compare(I)I
 HSPLsun/security/x509/CertificateVersion;->construct(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/CertificateX509Key;-><init>(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/CertificateX509Key;->get(Ljava/lang/String;)Ljava/security/PublicKey;
 HSPLsun/security/x509/DNSName;-><init>(Ljava/lang/String;)V
+HSPLsun/security/x509/DNSName;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/DistributionPoint;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/ExtendedKeyUsageExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/ExtendedKeyUsageExtension;->getName()Ljava/lang/String;
+HSPLsun/security/x509/Extension;-><init>()V
 HSPLsun/security/x509/Extension;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/Extension;->getExtensionId()Lsun/security/util/ObjectIdentifier;
 HSPLsun/security/x509/Extension;->getExtensionValue()[B
 HSPLsun/security/x509/Extension;->isCritical()Z
+HSPLsun/security/x509/GeneralName;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/GeneralName;-><init>(Lsun/security/util/DerValue;Z)V
+HSPLsun/security/x509/GeneralNames;-><init>()V
 HSPLsun/security/x509/GeneralNames;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/GeneralNames;->add(Lsun/security/x509/GeneralName;)Lsun/security/x509/GeneralNames;
+HSPLsun/security/x509/KeyIdentifier;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/KeyIdentifier;->encode(Lsun/security/util/DerOutputStream;)V
-HSPLsun/security/x509/KeyIdentifier;->equals(Ljava/lang/Object;)Z
 HSPLsun/security/x509/KeyUsageExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/KeyUsageExtension;->getName()Ljava/lang/String;
-HSPLsun/security/x509/NetscapeCertTypeExtension$MapEntry;-><init>(Ljava/lang/String;I)V
 HSPLsun/security/x509/OIDMap$OIDInfo;->getClazz()Ljava/lang/Class;
-HSPLsun/security/x509/OIDMap;->addInternal(Ljava/lang/String;Lsun/security/util/ObjectIdentifier;Ljava/lang/Class;)V
+HSPLsun/security/x509/OIDMap;->getClass(Lsun/security/util/ObjectIdentifier;)Ljava/lang/Class;
 HSPLsun/security/x509/PolicyInformation;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/PolicyInformation;->getPolicyIdentifier()Lsun/security/x509/CertificatePolicyId;
 HSPLsun/security/x509/PolicyInformation;->getPolicyQualifiers()Ljava/util/Set;
@@ -31854,16 +22336,18 @@
 HSPLsun/security/x509/RDN;->toRFC2253String(Ljava/util/Map;)Ljava/lang/String;
 HSPLsun/security/x509/RDN;->toRFC2253String(Z)Ljava/lang/String;
 HSPLsun/security/x509/RDN;->toRFC2253StringInternal(ZLjava/util/Map;)Ljava/lang/String;
-HSPLsun/security/x509/SerialNumber;->getNumber()Ljava/math/BigInteger;
+HSPLsun/security/x509/SerialNumber;-><init>(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/SerialNumber;->construct(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/SubjectAlternativeNameExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
 HSPLsun/security/x509/SubjectAlternativeNameExtension;->getName()Ljava/lang/String;
 HSPLsun/security/x509/SubjectKeyIdentifierExtension;-><init>(Ljava/lang/Boolean;Ljava/lang/Object;)V
-HSPLsun/security/x509/SubjectKeyIdentifierExtension;->get(Ljava/lang/String;)Lsun/security/x509/KeyIdentifier;
 HSPLsun/security/x509/SubjectKeyIdentifierExtension;->getName()Ljava/lang/String;
 HSPLsun/security/x509/URIName;-><init>(Ljava/lang/String;)V
-HSPLsun/security/x509/X500Name$1;-><init>()V
-HSPLsun/security/x509/X500Name$1;->run()Ljava/lang/Object;
-HSPLsun/security/x509/X500Name$1;->run()[Ljava/lang/Object;
+HSPLsun/security/x509/URIName;-><init>(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/X500Name;-><init>(Ljava/lang/String;Ljava/util/Map;)V
+HSPLsun/security/x509/X500Name;-><init>(Lsun/security/util/DerInputStream;)V
+HSPLsun/security/x509/X500Name;-><init>(Lsun/security/util/DerValue;)V
+HSPLsun/security/x509/X500Name;-><init>([B)V
 HSPLsun/security/x509/X500Name;->asX500Name(Ljavax/security/auth/x500/X500Principal;)Lsun/security/x509/X500Name;
 HSPLsun/security/x509/X500Name;->asX500Principal()Ljavax/security/auth/x500/X500Principal;
 HSPLsun/security/x509/X500Name;->checkNoNewLinesNorTabsAtBeginningOfDN(Ljava/lang/String;)V
@@ -31882,37 +22366,35 @@
 HSPLsun/security/x509/X500Name;->parseDER(Lsun/security/util/DerInputStream;)V
 HSPLsun/security/x509/X500Name;->parseDN(Ljava/lang/String;Ljava/util/Map;)V
 HSPLsun/security/x509/X509AttributeName;-><init>(Ljava/lang/String;)V
+HSPLsun/security/x509/X509AttributeName;->getPrefix()Ljava/lang/String;
+HSPLsun/security/x509/X509AttributeName;->getSuffix()Ljava/lang/String;
 HSPLsun/security/x509/X509CertImpl;-><init>([B)V
 HSPLsun/security/x509/X509CertImpl;->get(Ljava/lang/String;)Ljava/lang/Object;
 HSPLsun/security/x509/X509CertImpl;->getAuthorityKeyIdentifierExtension()Lsun/security/x509/AuthorityKeyIdentifierExtension;
 HSPLsun/security/x509/X509CertImpl;->getCertificatePoliciesExtension()Lsun/security/x509/CertificatePoliciesExtension;
 HSPLsun/security/x509/X509CertImpl;->getEncodedInternal()[B
+HSPLsun/security/x509/X509CertImpl;->getEncodedInternal(Ljava/security/cert/Certificate;)[B
 HSPLsun/security/x509/X509CertImpl;->getExtension(Lsun/security/util/ObjectIdentifier;)Lsun/security/x509/Extension;
 HSPLsun/security/x509/X509CertImpl;->getIssuerX500Principal()Ljavax/security/auth/x500/X500Principal;
 HSPLsun/security/x509/X509CertImpl;->getNameConstraintsExtension()Lsun/security/x509/NameConstraintsExtension;
-HPLsun/security/x509/X509CertImpl;->getNotAfter()Ljava/util/Date;
-HPLsun/security/x509/X509CertImpl;->getNotBefore()Ljava/util/Date;
 HSPLsun/security/x509/X509CertImpl;->getPolicyConstraintsExtension()Lsun/security/x509/PolicyConstraintsExtension;
 HSPLsun/security/x509/X509CertImpl;->getPolicyMappingsExtension()Lsun/security/x509/PolicyMappingsExtension;
 HSPLsun/security/x509/X509CertImpl;->getPublicKey()Ljava/security/PublicKey;
-HSPLsun/security/x509/X509CertImpl;->getSerialNumberObject()Lsun/security/x509/SerialNumber;
 HSPLsun/security/x509/X509CertImpl;->getSigAlgName()Ljava/lang/String;
-HPLsun/security/x509/X509CertImpl;->getSubjectAlternativeNameExtension()Lsun/security/x509/SubjectAlternativeNameExtension;
-HSPLsun/security/x509/X509CertImpl;->getSubjectKeyId()Lsun/security/x509/KeyIdentifier;
-HSPLsun/security/x509/X509CertImpl;->getSubjectKeyIdentifierExtension()Lsun/security/x509/SubjectKeyIdentifierExtension;
 HSPLsun/security/x509/X509CertImpl;->getSubjectX500Principal()Ljavax/security/auth/x500/X500Principal;
-HPLsun/security/x509/X509CertImpl;->isSelfSigned(Ljava/security/cert/X509Certificate;Ljava/lang/String;)Z
+HSPLsun/security/x509/X509CertImpl;->isSelfIssued(Ljava/security/cert/X509Certificate;)Z
+HSPLsun/security/x509/X509CertImpl;->parse(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/X509CertImpl;->parse(Lsun/security/util/DerValue;[B)V
-HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;)V
-HSPLsun/security/x509/X509CertImpl;->verify(Ljava/security/PublicKey;Ljava/lang/String;)V
+HSPLsun/security/x509/X509CertImpl;->toImpl(Ljava/security/cert/X509Certificate;)Lsun/security/x509/X509CertImpl;
 HSPLsun/security/x509/X509CertInfo;-><init>(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/X509CertInfo;-><init>([B)V
+HSPLsun/security/x509/X509CertInfo;->attributeMap(Ljava/lang/String;)I
 HSPLsun/security/x509/X509CertInfo;->get(Ljava/lang/String;)Ljava/lang/Object;
-HSPLsun/security/x509/X509CertInfo;->getEncodedInfo()[B
 HSPLsun/security/x509/X509CertInfo;->getX500Name(Ljava/lang/String;Z)Ljava/lang/Object;
 HSPLsun/security/x509/X509CertInfo;->parse(Lsun/security/util/DerValue;)V
 HSPLsun/security/x509/X509CertInfo;->verifyCert(Lsun/security/x509/X500Name;Lsun/security/x509/CertificateExtensions;)V
 HSPLsun/security/x509/X509Key;->buildX509Key(Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)Ljava/security/PublicKey;
+HSPLsun/security/x509/X509Key;->encode(Lsun/security/util/DerOutputStream;Lsun/security/x509/AlgorithmId;Lsun/security/util/BitArray;)V
 HSPLsun/security/x509/X509Key;->parse(Lsun/security/util/DerValue;)Ljava/security/PublicKey;
 HSPLsun/util/calendar/AbstractCalendar;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/AbstractCalendar;->getDayOfWeekDateOnOrBefore(JI)J
@@ -31920,16 +22402,22 @@
 HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDay(Lsun/util/calendar/CalendarDate;)J
 HSPLsun/util/calendar/AbstractCalendar;->getTimeOfDayValue(Lsun/util/calendar/CalendarDate;)J
 HSPLsun/util/calendar/AbstractCalendar;->setTimeOfDay(Lsun/util/calendar/CalendarDate;I)Lsun/util/calendar/CalendarDate;
+HSPLsun/util/calendar/BaseCalendar$Date;-><init>(Ljava/util/TimeZone;)V
 HSPLsun/util/calendar/BaseCalendar$Date;->getCachedJan1()J
 HSPLsun/util/calendar/BaseCalendar$Date;->getCachedYear()I
+HSPLsun/util/calendar/BaseCalendar$Date;->hit(I)Z
+HSPLsun/util/calendar/BaseCalendar$Date;->hit(J)Z
 HSPLsun/util/calendar/BaseCalendar$Date;->setCache(IJI)V
 HSPLsun/util/calendar/BaseCalendar;->getCalendarDateFromFixedDate(Lsun/util/calendar/CalendarDate;J)V
+HSPLsun/util/calendar/BaseCalendar;->getDayOfWeekFromFixedDate(J)I
+HSPLsun/util/calendar/BaseCalendar;->getDayOfYear(III)J
 HSPLsun/util/calendar/BaseCalendar;->getFixedDate(IIILsun/util/calendar/BaseCalendar$Date;)J
 HSPLsun/util/calendar/BaseCalendar;->getFixedDate(Lsun/util/calendar/CalendarDate;)J
 HSPLsun/util/calendar/BaseCalendar;->getGregorianYearFromFixedDate(J)I
 HSPLsun/util/calendar/BaseCalendar;->isLeapYear(I)Z
 HSPLsun/util/calendar/BaseCalendar;->isLeapYear(Lsun/util/calendar/CalendarDate;)Z
 HSPLsun/util/calendar/BaseCalendar;->normalizeMonth(Lsun/util/calendar/CalendarDate;)V
+HSPLsun/util/calendar/CalendarDate;-><init>(Ljava/util/TimeZone;)V
 HSPLsun/util/calendar/CalendarDate;->clone()Ljava/lang/Object;
 HSPLsun/util/calendar/CalendarDate;->getDayOfMonth()I
 HSPLsun/util/calendar/CalendarDate;->getDayOfWeek()I
@@ -31962,11 +22450,12 @@
 HSPLsun/util/calendar/CalendarDate;->setZone(Ljava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/CalendarDate;->setZoneOffset(I)V
 HSPLsun/util/calendar/CalendarSystem;->getGregorianCalendar()Lsun/util/calendar/Gregorian;
+HSPLsun/util/calendar/CalendarUtils;->floorDivide(II)I
+HSPLsun/util/calendar/CalendarUtils;->isGregorianLeapYear(I)Z
 HSPLsun/util/calendar/CalendarUtils;->sprintf0d(Ljava/lang/StringBuilder;II)Ljava/lang/StringBuilder;
-HSPLsun/util/calendar/Era;-><init>(Ljava/lang/String;Ljava/lang/String;JZ)V
+HSPLsun/util/calendar/Gregorian$Date;-><init>(Ljava/util/TimeZone;)V
 HSPLsun/util/calendar/Gregorian$Date;->getNormalizedYear()I
 HSPLsun/util/calendar/Gregorian$Date;->setNormalizedYear(I)V
-HSPLsun/util/calendar/Gregorian;-><init>()V
 HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/CalendarDate;
 HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLjava/util/TimeZone;)Lsun/util/calendar/Gregorian$Date;
 HSPLsun/util/calendar/Gregorian;->getCalendarDate(JLsun/util/calendar/CalendarDate;)Lsun/util/calendar/CalendarDate;
@@ -31977,20 +22466,37 @@
 HSPLsun/util/locale/BaseLocale$Cache;->createObject(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale;
 HSPLsun/util/locale/BaseLocale$Cache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLsun/util/locale/BaseLocale$Cache;->normalizeKey(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
+HSPLsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLsun/util/locale/BaseLocale$Key;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLsun/util/locale/BaseLocale$Key;->access$100(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference;
+HSPLsun/util/locale/BaseLocale$Key;->access$200(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference;
+HSPLsun/util/locale/BaseLocale$Key;->access$300(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference;
+HSPLsun/util/locale/BaseLocale$Key;->access$400(Lsun/util/locale/BaseLocale$Key;)Ljava/lang/ref/SoftReference;
 HSPLsun/util/locale/BaseLocale$Key;->equals(Ljava/lang/Object;)Z
 HSPLsun/util/locale/BaseLocale$Key;->hashCode()I
 HSPLsun/util/locale/BaseLocale$Key;->normalize(Lsun/util/locale/BaseLocale$Key;)Lsun/util/locale/BaseLocale$Key;
 HSPLsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLsun/util/locale/BaseLocale;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lsun/util/locale/BaseLocale$1;)V
 HSPLsun/util/locale/BaseLocale;->equals(Ljava/lang/Object;)Z
 HSPLsun/util/locale/BaseLocale;->getInstance(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lsun/util/locale/BaseLocale;
+HSPLsun/util/locale/BaseLocale;->getLanguage()Ljava/lang/String;
+HSPLsun/util/locale/BaseLocale;->getRegion()Ljava/lang/String;
+HSPLsun/util/locale/BaseLocale;->getScript()Ljava/lang/String;
+HSPLsun/util/locale/BaseLocale;->getVariant()Ljava/lang/String;
 HSPLsun/util/locale/BaseLocale;->hashCode()I
-HSPLsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;-><init>(Ljava/lang/String;Lsun/util/locale/InternalLocaleBuilder$1;)V
+HSPLsun/util/locale/Extension;-><init>(CLjava/lang/String;)V
+HSPLsun/util/locale/Extension;->setValue(Ljava/lang/String;)V
+HSPLsun/util/locale/InternalLocaleBuilder;-><init>()V
+HSPLsun/util/locale/InternalLocaleBuilder;->clear()Lsun/util/locale/InternalLocaleBuilder;
+HSPLsun/util/locale/InternalLocaleBuilder;->clearExtensions()Lsun/util/locale/InternalLocaleBuilder;
 HSPLsun/util/locale/InternalLocaleBuilder;->getBaseLocale()Lsun/util/locale/BaseLocale;
 HSPLsun/util/locale/InternalLocaleBuilder;->getLocaleExtensions()Lsun/util/locale/LocaleExtensions;
 HSPLsun/util/locale/InternalLocaleBuilder;->setExtensions(Ljava/util/List;Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
-HSPLsun/util/locale/InternalLocaleBuilder;->setLanguage(Ljava/lang/String;)Lsun/util/locale/InternalLocaleBuilder;
 HSPLsun/util/locale/InternalLocaleBuilder;->setLanguageTag(Lsun/util/locale/LanguageTag;)Lsun/util/locale/InternalLocaleBuilder;
+HSPLsun/util/locale/LanguageTag;-><init>()V
+HSPLsun/util/locale/LanguageTag;->canonicalizeLanguage(Ljava/lang/String;)Ljava/lang/String;
+HSPLsun/util/locale/LanguageTag;->canonicalizeRegion(Ljava/lang/String;)Ljava/lang/String;
+HSPLsun/util/locale/LanguageTag;->canonicalizeScript(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/util/locale/LanguageTag;->getExtensions()Ljava/util/List;
 HSPLsun/util/locale/LanguageTag;->getExtlangs()Ljava/util/List;
 HSPLsun/util/locale/LanguageTag;->getLanguage()Ljava/lang/String;
@@ -31998,6 +22504,10 @@
 HSPLsun/util/locale/LanguageTag;->getRegion()Ljava/lang/String;
 HSPLsun/util/locale/LanguageTag;->getScript()Ljava/lang/String;
 HSPLsun/util/locale/LanguageTag;->getVariants()Ljava/util/List;
+HSPLsun/util/locale/LanguageTag;->isExtlang(Ljava/lang/String;)Z
+HSPLsun/util/locale/LanguageTag;->isLanguage(Ljava/lang/String;)Z
+HSPLsun/util/locale/LanguageTag;->isRegion(Ljava/lang/String;)Z
+HSPLsun/util/locale/LanguageTag;->isScript(Ljava/lang/String;)Z
 HSPLsun/util/locale/LanguageTag;->parse(Ljava/lang/String;Lsun/util/locale/ParseStatus;)Lsun/util/locale/LanguageTag;
 HSPLsun/util/locale/LanguageTag;->parseExtensions(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
 HSPLsun/util/locale/LanguageTag;->parseExtlangs(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
@@ -32007,19 +22517,28 @@
 HSPLsun/util/locale/LanguageTag;->parseRegion(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
 HSPLsun/util/locale/LanguageTag;->parseScript(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
 HSPLsun/util/locale/LanguageTag;->parseVariants(Lsun/util/locale/StringTokenIterator;Lsun/util/locale/ParseStatus;)Z
-HSPLsun/util/locale/LocaleMatcher;->getEquivalentForRegionAndVariant(Ljava/lang/String;)Ljava/lang/String;
-HSPLsun/util/locale/LocaleMatcher;->getEquivalentsForLanguage(Ljava/lang/String;)[Ljava/lang/String;
-HSPLsun/util/locale/LocaleMatcher;->lookup(Ljava/util/List;Ljava/util/Collection;)Ljava/util/Locale;
-HSPLsun/util/locale/LocaleMatcher;->lookupTag(Ljava/util/List;Ljava/util/Collection;)Ljava/lang/String;
-HSPLsun/util/locale/LocaleMatcher;->parse(Ljava/lang/String;)Ljava/util/List;
+HSPLsun/util/locale/LocaleExtensions;-><clinit>()V
+HSPLsun/util/locale/LocaleExtensions;-><init>(Ljava/lang/String;Ljava/lang/Character;Lsun/util/locale/Extension;)V
+HSPLsun/util/locale/LocaleObjectCache$CacheEntry;-><init>(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/ref/ReferenceQueue;)V
 HSPLsun/util/locale/LocaleObjectCache$CacheEntry;->getKey()Ljava/lang/Object;
+HSPLsun/util/locale/LocaleObjectCache;->cleanStaleEntries()V
 HSPLsun/util/locale/LocaleObjectCache;->get(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLsun/util/locale/LocaleObjectCache;->normalizeKey(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLsun/util/locale/LocaleUtils;->caseIgnoreMatch(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLsun/util/locale/LocaleUtils;->isAlpha(C)Z
+HSPLsun/util/locale/LocaleUtils;->isAlphaString(Ljava/lang/String;)Z
+HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/List;)Z
+HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Map;)Z
+HSPLsun/util/locale/LocaleUtils;->isEmpty(Ljava/util/Set;)Z
+HSPLsun/util/locale/LocaleUtils;->isNumeric(C)Z
+HSPLsun/util/locale/LocaleUtils;->isNumericString(Ljava/lang/String;)Z
 HSPLsun/util/locale/LocaleUtils;->toLowerString(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/util/locale/LocaleUtils;->toTitleString(Ljava/lang/String;)Ljava/lang/String;
 HSPLsun/util/locale/LocaleUtils;->toUpperString(Ljava/lang/String;)Ljava/lang/String;
+HSPLsun/util/locale/ParseStatus;-><init>()V
 HSPLsun/util/locale/ParseStatus;->isError()Z
+HSPLsun/util/locale/ParseStatus;->reset()V
+HSPLsun/util/locale/StringTokenIterator;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 HSPLsun/util/locale/StringTokenIterator;->current()Ljava/lang/String;
 HSPLsun/util/locale/StringTokenIterator;->currentEnd()I
 HSPLsun/util/locale/StringTokenIterator;->hasNext()Z
@@ -32027,26 +22546,25 @@
 HSPLsun/util/locale/StringTokenIterator;->next()Ljava/lang/String;
 HSPLsun/util/locale/StringTokenIterator;->nextDelimiter(I)I
 HSPLsun/util/locale/StringTokenIterator;->setStart(I)Lsun/util/locale/StringTokenIterator;
-HSPLsun/util/logging/LoggingSupport$1;-><init>()V
-HSPLsun/util/logging/LoggingSupport$1;->run()Ljava/lang/Object;
-HSPLsun/util/logging/LoggingSupport$1;->run()Lsun/util/logging/LoggingProxy;
-HSPLsun/util/logging/PlatformLogger$1;-><init>()V
-HSPLsun/util/logging/PlatformLogger$1;->run()Ljava/lang/Boolean;
-HSPLsun/util/logging/PlatformLogger$1;->run()Ljava/lang/Object;
-HSPLsun/util/logging/PlatformLogger$Level;-><init>(Ljava/lang/String;I)V
-HSPLsun/util/logging/PlatformLogger;->redirectPlatformLoggers()V
+HSPLsun/util/locale/UnicodeLocaleExtension;-><clinit>()V
+HSPLsun/util/locale/UnicodeLocaleExtension;-><init>(Ljava/lang/String;Ljava/lang/String;)V
 Landroid/R$styleable;
 Landroid/accessibilityservice/AccessibilityServiceInfo$1;
 Landroid/accessibilityservice/AccessibilityServiceInfo;
+Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;
+Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;
+Landroid/accessibilityservice/IAccessibilityServiceClient;
 Landroid/accounts/Account$1;
 Landroid/accounts/Account;
 Landroid/accounts/AccountAndUser;
 Landroid/accounts/AccountManager$10;
 Landroid/accounts/AccountManager$11;
+Landroid/accounts/AccountManager$17;
 Landroid/accounts/AccountManager$18;
 Landroid/accounts/AccountManager$1;
 Landroid/accounts/AccountManager$20;
 Landroid/accounts/AccountManager$2;
+Landroid/accounts/AccountManager$3;
 Landroid/accounts/AccountManager$AmsTask$1;
 Landroid/accounts/AccountManager$AmsTask$Response;
 Landroid/accounts/AccountManager$AmsTask;
@@ -32064,14 +22582,19 @@
 Landroid/accounts/AuthenticatorDescription$1;
 Landroid/accounts/AuthenticatorDescription;
 Landroid/accounts/AuthenticatorException;
+Landroid/accounts/IAccountAuthenticator$Stub$Proxy;
+Landroid/accounts/IAccountAuthenticator$Stub;
+Landroid/accounts/IAccountAuthenticator;
 Landroid/accounts/IAccountManager$Stub$Proxy;
 Landroid/accounts/IAccountManager$Stub;
 Landroid/accounts/IAccountManager;
+Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
 Landroid/accounts/IAccountManagerResponse$Stub;
 Landroid/accounts/IAccountManagerResponse;
 Landroid/accounts/OnAccountsUpdateListener;
 Landroid/accounts/OperationCanceledException;
 Landroid/animation/AnimationHandler$1;
+Landroid/animation/AnimationHandler$2;
 Landroid/animation/AnimationHandler$AnimationFrameCallback;
 Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;
 Landroid/animation/AnimationHandler$MyFrameCallbackProvider;
@@ -32092,6 +22615,7 @@
 Landroid/animation/AnimatorSet$SeekState;
 Landroid/animation/AnimatorSet;
 Landroid/animation/ArgbEvaluator;
+Landroid/animation/BidirectionalTypeConverter;
 Landroid/animation/FloatEvaluator;
 Landroid/animation/FloatKeyframeSet;
 Landroid/animation/IntEvaluator;
@@ -32106,6 +22630,7 @@
 Landroid/animation/Keyframes;
 Landroid/animation/LayoutTransition$1;
 Landroid/animation/LayoutTransition$2;
+Landroid/animation/LayoutTransition$3;
 Landroid/animation/LayoutTransition$4;
 Landroid/animation/LayoutTransition$5;
 Landroid/animation/LayoutTransition$CleanupCallback;
@@ -32114,12 +22639,16 @@
 Landroid/animation/ObjectAnimator;
 Landroid/animation/PathKeyframes$1;
 Landroid/animation/PathKeyframes$2;
+Landroid/animation/PathKeyframes$3;
+Landroid/animation/PathKeyframes$4;
 Landroid/animation/PathKeyframes$FloatKeyframesBase;
 Landroid/animation/PathKeyframes$IntKeyframesBase;
 Landroid/animation/PathKeyframes$SimpleKeyframes;
 Landroid/animation/PathKeyframes;
+Landroid/animation/PropertyValuesHolder$1;
 Landroid/animation/PropertyValuesHolder$FloatPropertyValuesHolder;
 Landroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;
+Landroid/animation/PropertyValuesHolder$PropertyValues$DataSource;
 Landroid/animation/PropertyValuesHolder$PropertyValues;
 Landroid/animation/PropertyValuesHolder;
 Landroid/animation/RectEvaluator;
@@ -32130,24 +22659,42 @@
 Landroid/animation/TimeAnimator$TimeListener;
 Landroid/animation/TimeAnimator;
 Landroid/animation/TimeInterpolator;
+Landroid/animation/TypeConverter;
 Landroid/animation/TypeEvaluator;
 Landroid/animation/ValueAnimator$AnimatorUpdateListener;
 Landroid/animation/ValueAnimator;
+Landroid/apex/ApexInfo$1;
+Landroid/apex/ApexInfo;
 Landroid/apex/IApexService$Stub$Proxy;
 Landroid/apex/IApexService$Stub;
 Landroid/apex/IApexService;
+Landroid/app/-$$Lambda$ActivityThread$A4ykhsPb8qV3ffTqpQDklHSMDJ0;
 Landroid/app/-$$Lambda$ActivityThread$ActivityClientRecord$HOrG1qglSjSUHSjKBn2rXtX0gGg;
+Landroid/app/-$$Lambda$ActivityThread$ApplicationThread$nBC_BR7B9W6ftKAxur3BC53SJYc;
 Landroid/app/-$$Lambda$ActivityThread$ApplicationThread$tUGFX7CUhzB4Pg5wFd5yeqOnu38;
-Landroid/app/-$$Lambda$ActivityThread$ZXDWm3IBeFmLnFVblhB-IOZCr9o;
+Landroid/app/-$$Lambda$ActivityThread$ApplicationThread$uR_ee-5oPoxu4U_by7wU55jwtdU;
+Landroid/app/-$$Lambda$ActivityThread$FmvGY8exyv0L0oqZrnunpl8OFI8;
+Landroid/app/-$$Lambda$ActivityThread$Wg40iAoNYFxps_KmrqtgptTB054;
+Landroid/app/-$$Lambda$ActivityTransitionState$yioLR6wQWjZ9DcWK5bibElIbsXc;
+Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$DkVcBvqB32SMHlxw0sWQPh3GL1A;
+Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$HUOLFYs8TiaQIOXcrq6JzjxA6gs;
+Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$Vs6pDL0wjOBTquwNnreWVbPQrn4;
 Landroid/app/-$$Lambda$Dialog$zXRzrq3I7H1_zmZ8d_W7t2CQN0I;
+Landroid/app/-$$Lambda$FragmentTransition$jurn0WXuKw3bRQ_2d5zCWdeZWuI;
 Landroid/app/-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA;
 Landroid/app/-$$Lambda$Notification$hOCsSZH8tWalFSbIzQ9x9IcPa9M;
 Landroid/app/-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM;
 Landroid/app/-$$Lambda$SharedPreferencesImpl$EditorImpl$3CAjkhzA131V3V-sLfP2uy0FWZ0;
+Landroid/app/-$$Lambda$WallpaperManager$Globals$1AcnQUORvPlCjJoNqdxfQT4o4Nw;
+Landroid/app/-$$Lambda$WallpaperManager$Globals$2yG7V1sbMECCnlFTLyjKWKqNoYI;
+Landroid/app/-$$Lambda$ZsFzoG2loyqNOR2cNbo-thrNK5c;
 Landroid/app/-$$Lambda$oslF4K8Uk6v-6nTRoaEpCmfAptE;
 Landroid/app/ActionBar$LayoutParams;
 Landroid/app/ActionBar;
+Landroid/app/Activity$1;
 Landroid/app/Activity$HostCallbacks;
+Landroid/app/Activity$ManagedCursor;
+Landroid/app/Activity$ManagedDialog;
 Landroid/app/Activity$NonConfigurationInstances;
 Landroid/app/Activity;
 Landroid/app/ActivityManager$1;
@@ -32167,6 +22714,8 @@
 Landroid/app/ActivityManager$StackInfo;
 Landroid/app/ActivityManager$TaskDescription$1;
 Landroid/app/ActivityManager$TaskDescription;
+Landroid/app/ActivityManager$TaskSnapshot$1;
+Landroid/app/ActivityManager$TaskSnapshot;
 Landroid/app/ActivityManager$UidObserver;
 Landroid/app/ActivityManager;
 Landroid/app/ActivityManagerInternal;
@@ -32195,20 +22744,27 @@
 Landroid/app/ActivityThread$PurgeIdler;
 Landroid/app/ActivityThread$ReceiverData;
 Landroid/app/ActivityThread$RequestAssistContextExtras;
+Landroid/app/ActivityThread$SafeCancellationTransport;
 Landroid/app/ActivityThread$ServiceArgsData;
 Landroid/app/ActivityThread$UpdateCompatibilityData;
 Landroid/app/ActivityThread;
+Landroid/app/ActivityTransitionCoordinator;
+Landroid/app/ActivityTransitionState$1;
 Landroid/app/ActivityTransitionState;
+Landroid/app/AlarmManager$AlarmClockInfo$1;
 Landroid/app/AlarmManager$AlarmClockInfo;
 Landroid/app/AlarmManager$ListenerWrapper;
 Landroid/app/AlarmManager$OnAlarmListener;
 Landroid/app/AlarmManager;
 Landroid/app/AlertDialog$Builder;
 Landroid/app/AlertDialog;
+Landroid/app/AppCompatCallbacks;
 Landroid/app/AppComponentFactory;
 Landroid/app/AppDetailsActivity;
 Landroid/app/AppGlobals;
+Landroid/app/AppOpsManager$1;
 Landroid/app/AppOpsManager$2;
+Landroid/app/AppOpsManager$3;
 Landroid/app/AppOpsManager$HistoricalOp$1;
 Landroid/app/AppOpsManager$HistoricalOp;
 Landroid/app/AppOpsManager$HistoricalOps$1;
@@ -32227,15 +22783,23 @@
 Landroid/app/AppOpsManagerInternal;
 Landroid/app/Application$ActivityLifecycleCallbacks;
 Landroid/app/Application;
+Landroid/app/ApplicationErrorReport$1;
 Landroid/app/ApplicationErrorReport$CrashInfo;
 Landroid/app/ApplicationErrorReport$ParcelableCrashInfo$1;
 Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;
+Landroid/app/ApplicationErrorReport;
+Landroid/app/ApplicationLoaders$CachedClassLoader;
 Landroid/app/ApplicationLoaders;
+Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;
 Landroid/app/ApplicationPackageManager$OnPermissionsChangeListenerDelegate;
 Landroid/app/ApplicationPackageManager$ResourceName;
 Landroid/app/ApplicationPackageManager;
+Landroid/app/AutomaticZenRule$1;
+Landroid/app/AutomaticZenRule;
 Landroid/app/BackStackRecord$Op;
 Landroid/app/BackStackRecord;
+Landroid/app/BackStackState$1;
+Landroid/app/BackStackState;
 Landroid/app/BroadcastOptions;
 Landroid/app/ClientTransactionHandler;
 Landroid/app/ContentProviderHolder$1;
@@ -32247,34 +22811,54 @@
 Landroid/app/Dialog$ListenersHandler;
 Landroid/app/Dialog;
 Landroid/app/DialogFragment;
+Landroid/app/DirectAction;
+Landroid/app/DownloadManager$CursorTranslator;
+Landroid/app/DownloadManager$Query;
+Landroid/app/DownloadManager$Request;
 Landroid/app/DownloadManager;
+Landroid/app/EnterTransitionCoordinator;
+Landroid/app/ExitTransitionCoordinator;
 Landroid/app/Fragment$1;
 Landroid/app/Fragment$AnimationInfo;
+Landroid/app/Fragment$InstantiationException;
 Landroid/app/Fragment$OnStartEnterTransitionListener;
 Landroid/app/Fragment;
 Landroid/app/FragmentContainer;
 Landroid/app/FragmentController;
 Landroid/app/FragmentHostCallback;
 Landroid/app/FragmentManager$BackStackEntry;
+Landroid/app/FragmentManager$FragmentLifecycleCallbacks;
+Landroid/app/FragmentManager$OnBackStackChangedListener;
 Landroid/app/FragmentManager;
 Landroid/app/FragmentManagerImpl$1;
+Landroid/app/FragmentManagerImpl$2;
+Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;
 Landroid/app/FragmentManagerImpl$OpGenerator;
+Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;
 Landroid/app/FragmentManagerImpl;
+Landroid/app/FragmentManagerNonConfig;
 Landroid/app/FragmentManagerState$1;
 Landroid/app/FragmentManagerState;
 Landroid/app/FragmentState$1;
 Landroid/app/FragmentState;
 Landroid/app/FragmentTransaction;
+Landroid/app/FragmentTransition$2;
+Landroid/app/FragmentTransition$5;
 Landroid/app/FragmentTransition$FragmentContainerTransition;
 Landroid/app/FragmentTransition;
+Landroid/app/IActivityController$Stub$Proxy;
+Landroid/app/IActivityController$Stub;
+Landroid/app/IActivityController;
 Landroid/app/IActivityManager$Stub$Proxy;
 Landroid/app/IActivityManager$Stub;
 Landroid/app/IActivityManager;
 Landroid/app/IActivityTaskManager$Stub$Proxy;
 Landroid/app/IActivityTaskManager$Stub;
 Landroid/app/IActivityTaskManager;
+Landroid/app/IAlarmCompleteListener$Stub$Proxy;
 Landroid/app/IAlarmCompleteListener$Stub;
 Landroid/app/IAlarmCompleteListener;
+Landroid/app/IAlarmListener$Stub$Proxy;
 Landroid/app/IAlarmListener$Stub;
 Landroid/app/IAlarmListener;
 Landroid/app/IAlarmManager$Stub$Proxy;
@@ -32286,24 +22870,42 @@
 Landroid/app/IApplicationThread$Stub$Proxy;
 Landroid/app/IApplicationThread$Stub;
 Landroid/app/IApplicationThread;
+Landroid/app/IAssistDataReceiver$Stub$Proxy;
+Landroid/app/IAssistDataReceiver$Stub;
+Landroid/app/IAssistDataReceiver;
+Landroid/app/IBackupAgent$Stub$Proxy;
 Landroid/app/IBackupAgent$Stub;
 Landroid/app/IBackupAgent;
+Landroid/app/IInstantAppResolver$Stub$Proxy;
+Landroid/app/IInstantAppResolver$Stub;
+Landroid/app/IInstantAppResolver;
+Landroid/app/IInstrumentationWatcher$Stub$Proxy;
 Landroid/app/IInstrumentationWatcher$Stub;
 Landroid/app/IInstrumentationWatcher;
 Landroid/app/INotificationManager$Stub$Proxy;
 Landroid/app/INotificationManager$Stub;
 Landroid/app/INotificationManager;
+Landroid/app/IProcessObserver$Stub$Proxy;
 Landroid/app/IProcessObserver$Stub;
 Landroid/app/IProcessObserver;
+Landroid/app/IRequestFinishCallback$Stub$Proxy;
+Landroid/app/IRequestFinishCallback$Stub;
+Landroid/app/IRequestFinishCallback;
 Landroid/app/ISearchManager$Stub;
 Landroid/app/ISearchManager;
+Landroid/app/IServiceConnection$Stub$Proxy;
 Landroid/app/IServiceConnection$Stub;
 Landroid/app/IServiceConnection;
+Landroid/app/IStopUserCallback$Stub$Proxy;
+Landroid/app/IStopUserCallback$Stub;
+Landroid/app/IStopUserCallback;
 Landroid/app/ITaskStackListener$Stub$Proxy;
 Landroid/app/ITaskStackListener$Stub;
 Landroid/app/ITaskStackListener;
+Landroid/app/ITransientNotification$Stub$Proxy;
 Landroid/app/ITransientNotification$Stub;
 Landroid/app/ITransientNotification;
+Landroid/app/IUiAutomationConnection$Stub$Proxy;
 Landroid/app/IUiAutomationConnection$Stub;
 Landroid/app/IUiAutomationConnection;
 Landroid/app/IUiModeManager$Stub$Proxy;
@@ -32312,6 +22914,7 @@
 Landroid/app/IUidObserver$Stub$Proxy;
 Landroid/app/IUidObserver$Stub;
 Landroid/app/IUidObserver;
+Landroid/app/IUriGrantsManager$Stub$Proxy;
 Landroid/app/IUriGrantsManager$Stub;
 Landroid/app/IUriGrantsManager;
 Landroid/app/IUserSwitchObserver$Stub$Proxy;
@@ -32323,6 +22926,9 @@
 Landroid/app/IWallpaperManagerCallback$Stub$Proxy;
 Landroid/app/IWallpaperManagerCallback$Stub;
 Landroid/app/IWallpaperManagerCallback;
+Landroid/app/Instrumentation$ActivityGoing;
+Landroid/app/Instrumentation$ActivityMonitor;
+Landroid/app/Instrumentation$ActivityWaiter;
 Landroid/app/Instrumentation;
 Landroid/app/IntentReceiverLeaked;
 Landroid/app/IntentService$ServiceHandler;
@@ -32338,6 +22944,7 @@
 Landroid/app/LoadedApk$ServiceDispatcher$InnerConnection;
 Landroid/app/LoadedApk$ServiceDispatcher$RunConnection;
 Landroid/app/LoadedApk$ServiceDispatcher;
+Landroid/app/LoadedApk$SplitDependencyLoaderImpl;
 Landroid/app/LoadedApk$WarningContextClassLoader;
 Landroid/app/LoadedApk;
 Landroid/app/LoaderManager$LoaderCallbacks;
@@ -32351,6 +22958,8 @@
 Landroid/app/Notification$Action;
 Landroid/app/Notification$BigPictureStyle;
 Landroid/app/Notification$BigTextStyle;
+Landroid/app/Notification$BubbleMetadata$1;
+Landroid/app/Notification$BubbleMetadata;
 Landroid/app/Notification$Builder;
 Landroid/app/Notification$BuilderRemoteViews;
 Landroid/app/Notification$DecoratedCustomViewStyle;
@@ -32370,23 +22979,29 @@
 Landroid/app/NotificationManager$Policy;
 Landroid/app/NotificationManager;
 Landroid/app/OnActivityPausedListener;
+Landroid/app/PackageInstallObserver$1;
 Landroid/app/PendingIntent$1;
 Landroid/app/PendingIntent$2;
 Landroid/app/PendingIntent$CanceledException;
+Landroid/app/PendingIntent$FinishedDispatcher;
 Landroid/app/PendingIntent$OnFinished;
 Landroid/app/PendingIntent$OnMarshaledListener;
 Landroid/app/PendingIntent;
 Landroid/app/Person$1;
 Landroid/app/Person$Builder;
 Landroid/app/Person;
+Landroid/app/PictureInPictureParams$1;
+Landroid/app/PictureInPictureParams;
 Landroid/app/ProfilerInfo$1;
 Landroid/app/ProfilerInfo;
 Landroid/app/QueuedWork$QueuedWorkHandler;
 Landroid/app/QueuedWork;
 Landroid/app/ReceiverRestrictedContext;
 Landroid/app/RemoteAction$1;
+Landroid/app/RemoteAction;
 Landroid/app/RemoteInput$1;
 Landroid/app/RemoteInput;
+Landroid/app/RemoteServiceException;
 Landroid/app/ResourcesManager$1;
 Landroid/app/ResourcesManager$ActivityResources;
 Landroid/app/ResourcesManager$ApkKey;
@@ -32394,6 +23009,9 @@
 Landroid/app/ResultInfo$1;
 Landroid/app/ResultInfo;
 Landroid/app/SearchManager;
+Landroid/app/SearchableInfo$1;
+Landroid/app/SearchableInfo$ActionKeyInfo;
+Landroid/app/SearchableInfo;
 Landroid/app/Service;
 Landroid/app/ServiceConnectionLeaked;
 Landroid/app/ServiceStartArgs$1;
@@ -32407,8 +23025,6 @@
 Landroid/app/SharedPreferencesImpl$EditorImpl;
 Landroid/app/SharedPreferencesImpl$MemoryCommitResult;
 Landroid/app/SharedPreferencesImpl;
-Landroid/app/StatsManager$StatsUnavailableException;
-Landroid/app/StatsManager;
 Landroid/app/StatusBarManager;
 Landroid/app/SynchronousUserSwitchObserver;
 Landroid/app/SystemServiceRegistry$100;
@@ -32428,7 +23044,6 @@
 Landroid/app/SystemServiceRegistry$113;
 Landroid/app/SystemServiceRegistry$114;
 Landroid/app/SystemServiceRegistry$115;
-Landroid/app/SystemServiceRegistry$116;
 Landroid/app/SystemServiceRegistry$11;
 Landroid/app/SystemServiceRegistry$12;
 Landroid/app/SystemServiceRegistry$13;
@@ -32528,9 +23143,13 @@
 Landroid/app/SystemServiceRegistry$99;
 Landroid/app/SystemServiceRegistry$9;
 Landroid/app/SystemServiceRegistry$CachedServiceFetcher;
+Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithBinder;
+Landroid/app/SystemServiceRegistry$ContextAwareServiceProducerWithoutBinder;
 Landroid/app/SystemServiceRegistry$ServiceFetcher;
 Landroid/app/SystemServiceRegistry$StaticApplicationContextServiceFetcher;
 Landroid/app/SystemServiceRegistry$StaticServiceFetcher;
+Landroid/app/SystemServiceRegistry$StaticServiceProducerWithBinder;
+Landroid/app/SystemServiceRegistry$StaticServiceProducerWithoutBinder;
 Landroid/app/SystemServiceRegistry;
 Landroid/app/TaskInfo;
 Landroid/app/TaskStackListener;
@@ -32538,20 +23157,29 @@
 Landroid/app/UriGrantsManager$1;
 Landroid/app/UriGrantsManager;
 Landroid/app/UserSwitchObserver;
+Landroid/app/VoiceInteractor$Request;
+Landroid/app/VoiceInteractor;
+Landroid/app/Vr2dDisplayProperties$1;
+Landroid/app/Vr2dDisplayProperties;
 Landroid/app/VrManager;
 Landroid/app/WallpaperColors$1;
 Landroid/app/WallpaperColors;
 Landroid/app/WallpaperInfo$1;
+Landroid/app/WallpaperInfo;
 Landroid/app/WallpaperManager$Globals;
+Landroid/app/WallpaperManager$OnColorsChangedListener;
 Landroid/app/WallpaperManager;
 Landroid/app/WindowConfiguration$1;
 Landroid/app/WindowConfiguration;
 Landroid/app/admin/-$$Lambda$DevicePolicyManager$aBAov4sAc4DWENs1-hCXh31NAg0;
 Landroid/app/admin/-$$Lambda$DevicePolicyManager$w2TynM9H41ejac4JVpNbnemNVWk;
+Landroid/app/admin/-$$Lambda$pWaRScwKTZTgGW4Wa_v5R_pKBDU;
 Landroid/app/admin/DeviceAdminInfo$1;
 Landroid/app/admin/DeviceAdminInfo$PolicyInfo;
 Landroid/app/admin/DeviceAdminInfo;
+Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;
 Landroid/app/admin/DevicePolicyCache;
+Landroid/app/admin/DevicePolicyEventLogger;
 Landroid/app/admin/DevicePolicyManager$1;
 Landroid/app/admin/DevicePolicyManager$2;
 Landroid/app/admin/DevicePolicyManager$InstallSystemUpdateCallback;
@@ -32559,6 +23187,8 @@
 Landroid/app/admin/DevicePolicyManager;
 Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;
 Landroid/app/admin/DevicePolicyManagerInternal;
+Landroid/app/admin/IDeviceAdminService$Stub$Proxy;
+Landroid/app/admin/IDeviceAdminService;
 Landroid/app/admin/IDevicePolicyManager$Stub$Proxy;
 Landroid/app/admin/IDevicePolicyManager$Stub;
 Landroid/app/admin/IDevicePolicyManager;
@@ -32567,6 +23197,7 @@
 Landroid/app/admin/SecurityLog$SecurityEvent$1;
 Landroid/app/admin/SecurityLog$SecurityEvent;
 Landroid/app/admin/SecurityLog;
+Landroid/app/admin/StartInstallingUpdateCallback$Stub$Proxy;
 Landroid/app/admin/StartInstallingUpdateCallback$Stub;
 Landroid/app/admin/StartInstallingUpdateCallback;
 Landroid/app/admin/SystemUpdateInfo$1;
@@ -32598,22 +23229,45 @@
 Landroid/app/backup/BackupManager;
 Landroid/app/backup/BackupTransport$TransportImpl;
 Landroid/app/backup/BackupTransport;
+Landroid/app/backup/BlobBackupHelper;
 Landroid/app/backup/FileBackupHelperBase;
 Landroid/app/backup/FullBackup;
 Landroid/app/backup/FullBackupDataOutput;
+Landroid/app/backup/IBackupCallback$Stub$Proxy;
+Landroid/app/backup/IBackupCallback$Stub;
+Landroid/app/backup/IBackupCallback;
 Landroid/app/backup/IBackupManager$Stub$Proxy;
 Landroid/app/backup/IBackupManager$Stub;
 Landroid/app/backup/IBackupManager;
+Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;
+Landroid/app/backup/IBackupManagerMonitor$Stub;
+Landroid/app/backup/IBackupManagerMonitor;
+Landroid/app/backup/IBackupObserver$Stub$Proxy;
+Landroid/app/backup/IBackupObserver$Stub;
+Landroid/app/backup/IBackupObserver;
+Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;
+Landroid/app/backup/IFullBackupRestoreObserver$Stub;
+Landroid/app/backup/IFullBackupRestoreObserver;
+Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;
+Landroid/app/backup/ISelectBackupTransportCallback$Stub;
+Landroid/app/backup/ISelectBackupTransportCallback;
 Landroid/app/backup/SharedPreferencesBackupHelper;
+Landroid/app/blob/-$$Lambda$BlobStoreManagerFrameworkInitializer$WjSRSHMmxWPF4Fq-7TpX23MBh2U;
+Landroid/app/blob/BlobStoreManager;
+Landroid/app/blob/BlobStoreManagerFrameworkInitializer;
 Landroid/app/contentsuggestions/ContentSuggestionsManager;
 Landroid/app/contentsuggestions/IContentSuggestionsManager$Stub;
 Landroid/app/contentsuggestions/IContentSuggestionsManager;
+Landroid/app/job/-$$Lambda$FpGlzN9oJcl8o5soW-gU-DyTvXM;
+Landroid/app/job/-$$Lambda$JobSchedulerFrameworkInitializer$PtYe8PQc1PVJQXRnpm3iSxcWTR0;
+Landroid/app/job/-$$Lambda$JobSchedulerFrameworkInitializer$RHUxgww0pZFMmfQWKgaRAx0YFqA;
 Landroid/app/job/IJobCallback$Stub$Proxy;
 Landroid/app/job/IJobCallback$Stub;
 Landroid/app/job/IJobCallback;
 Landroid/app/job/IJobScheduler$Stub$Proxy;
 Landroid/app/job/IJobScheduler$Stub;
 Landroid/app/job/IJobScheduler;
+Landroid/app/job/IJobService$Stub$Proxy;
 Landroid/app/job/IJobService$Stub;
 Landroid/app/job/IJobService;
 Landroid/app/job/JobInfo$1;
@@ -32624,6 +23278,7 @@
 Landroid/app/job/JobParameters$1;
 Landroid/app/job/JobParameters;
 Landroid/app/job/JobScheduler;
+Landroid/app/job/JobSchedulerFrameworkInitializer;
 Landroid/app/job/JobService$1;
 Landroid/app/job/JobService;
 Landroid/app/job/JobServiceEngine$JobHandler;
@@ -32631,11 +23286,31 @@
 Landroid/app/job/JobServiceEngine;
 Landroid/app/job/JobWorkItem$1;
 Landroid/app/job/JobWorkItem;
+Landroid/app/prediction/AppPredictionContext$1;
+Landroid/app/prediction/AppPredictionContext;
 Landroid/app/prediction/AppPredictionManager;
+Landroid/app/prediction/AppPredictionSessionId$1;
+Landroid/app/prediction/AppPredictionSessionId;
+Landroid/app/prediction/AppPredictor;
+Landroid/app/prediction/AppTarget$1;
+Landroid/app/prediction/AppTarget;
+Landroid/app/prediction/AppTargetEvent$1;
+Landroid/app/prediction/AppTargetEvent;
+Landroid/app/prediction/AppTargetId$1;
+Landroid/app/prediction/AppTargetId;
+Landroid/app/prediction/IPredictionCallback$Stub$Proxy;
+Landroid/app/prediction/IPredictionCallback$Stub;
+Landroid/app/prediction/IPredictionCallback;
+Landroid/app/prediction/IPredictionManager$Stub$Proxy;
 Landroid/app/prediction/IPredictionManager$Stub;
 Landroid/app/prediction/IPredictionManager;
+Landroid/app/role/-$$Lambda$RoleControllerManager$Jsb4ev7pHUqel8_lglNSRLiUzpg;
+Landroid/app/role/-$$Lambda$o94o2jK_ei-IVw-3oY_QJ49zpAA;
+Landroid/app/role/IOnRoleHoldersChangedListener$Stub$Proxy;
 Landroid/app/role/IOnRoleHoldersChangedListener$Stub;
 Landroid/app/role/IOnRoleHoldersChangedListener;
+Landroid/app/role/IRoleController$Stub;
+Landroid/app/role/IRoleController;
 Landroid/app/role/IRoleManager$Stub$Proxy;
 Landroid/app/role/IRoleManager$Stub;
 Landroid/app/role/IRoleManager;
@@ -32643,6 +23318,8 @@
 Landroid/app/role/RoleControllerManager;
 Landroid/app/role/RoleManager$OnRoleHoldersChangedListenerDelegate;
 Landroid/app/role/RoleManager;
+Landroid/app/servertransaction/ActivityConfigurationChangeItem$1;
+Landroid/app/servertransaction/ActivityConfigurationChangeItem;
 Landroid/app/servertransaction/ActivityLifecycleItem;
 Landroid/app/servertransaction/ActivityRelaunchItem$1;
 Landroid/app/servertransaction/ActivityRelaunchItem;
@@ -32674,8 +23351,6 @@
 Landroid/app/servertransaction/TopResumedActivityChangeItem;
 Landroid/app/servertransaction/TransactionExecutor;
 Landroid/app/servertransaction/TransactionExecutorHelper;
-Landroid/app/servertransaction/WindowVisibilityItem$1;
-Landroid/app/servertransaction/WindowVisibilityItem;
 Landroid/app/slice/-$$Lambda$SliceProvider$bIgM5f4PsMvz_YYWEeFTjvTqevw;
 Landroid/app/slice/ISliceManager$Stub$Proxy;
 Landroid/app/slice/ISliceManager$Stub;
@@ -32693,9 +23368,8 @@
 Landroid/app/timedetector/ITimeDetectorService$Stub;
 Landroid/app/timedetector/ITimeDetectorService;
 Landroid/app/timedetector/TimeDetector;
-Landroid/app/timedetector/TimeSignal$1;
-Landroid/app/timedetector/TimeSignal;
 Landroid/app/timezone/RulesManager;
+Landroid/app/timezonedetector/TimeZoneDetector;
 Landroid/app/trust/IStrongAuthTracker$Stub$Proxy;
 Landroid/app/trust/IStrongAuthTracker$Stub;
 Landroid/app/trust/IStrongAuthTracker;
@@ -32705,7 +23379,9 @@
 Landroid/app/trust/ITrustManager$Stub$Proxy;
 Landroid/app/trust/ITrustManager$Stub;
 Landroid/app/trust/ITrustManager;
+Landroid/app/trust/TrustManager$1;
 Landroid/app/trust/TrustManager$2;
+Landroid/app/trust/TrustManager$TrustListener;
 Landroid/app/trust/TrustManager;
 Landroid/app/usage/AppStandbyInfo$1;
 Landroid/app/usage/AppStandbyInfo;
@@ -32718,6 +23394,7 @@
 Landroid/app/usage/ConfigurationStats$1;
 Landroid/app/usage/ConfigurationStats;
 Landroid/app/usage/EventList;
+Landroid/app/usage/ICacheQuotaService$Stub$Proxy;
 Landroid/app/usage/ICacheQuotaService$Stub;
 Landroid/app/usage/ICacheQuotaService;
 Landroid/app/usage/IStorageStatsManager$Stub$Proxy;
@@ -32726,6 +23403,8 @@
 Landroid/app/usage/IUsageStatsManager$Stub$Proxy;
 Landroid/app/usage/IUsageStatsManager$Stub;
 Landroid/app/usage/IUsageStatsManager;
+Landroid/app/usage/NetworkStatsManager$CallbackHandler;
+Landroid/app/usage/NetworkStatsManager$UsageCallback;
 Landroid/app/usage/NetworkStatsManager;
 Landroid/app/usage/StorageStats$1;
 Landroid/app/usage/StorageStats;
@@ -32737,45 +23416,67 @@
 Landroid/app/usage/UsageStats$1;
 Landroid/app/usage/UsageStats;
 Landroid/app/usage/UsageStatsManager;
-Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;
-Landroid/app/usage/UsageStatsManagerInternal;
 Landroid/appwidget/AppWidgetManager;
 Landroid/appwidget/AppWidgetManagerInternal;
 Landroid/appwidget/AppWidgetProvider;
+Landroid/appwidget/AppWidgetProviderInfo$1;
+Landroid/appwidget/AppWidgetProviderInfo;
 Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;
 Landroid/attention/AttentionManagerInternal;
+Landroid/bluetooth/-$$Lambda$BluetoothAdapter$2$INSd_aND-SGWhhPZUtIqya_Uxw4;
 Landroid/bluetooth/BluetoothA2dp$1;
-Landroid/bluetooth/BluetoothA2dp$2;
 Landroid/bluetooth/BluetoothA2dp;
+Landroid/bluetooth/BluetoothA2dpSink;
 Landroid/bluetooth/BluetoothActivityEnergyInfo$1;
 Landroid/bluetooth/BluetoothActivityEnergyInfo;
 Landroid/bluetooth/BluetoothAdapter$1;
 Landroid/bluetooth/BluetoothAdapter$2;
 Landroid/bluetooth/BluetoothAdapter;
+Landroid/bluetooth/BluetoothAvrcpController;
 Landroid/bluetooth/BluetoothClass$1;
 Landroid/bluetooth/BluetoothClass;
 Landroid/bluetooth/BluetoothCodecConfig$1;
 Landroid/bluetooth/BluetoothCodecConfig;
+Landroid/bluetooth/BluetoothCodecStatus$1;
+Landroid/bluetooth/BluetoothCodecStatus;
 Landroid/bluetooth/BluetoothDevice$1;
 Landroid/bluetooth/BluetoothDevice$2;
 Landroid/bluetooth/BluetoothDevice;
+Landroid/bluetooth/BluetoothGattService$1;
+Landroid/bluetooth/BluetoothGattService;
 Landroid/bluetooth/BluetoothHeadset$1;
 Landroid/bluetooth/BluetoothHeadset$2;
 Landroid/bluetooth/BluetoothHeadset$3;
 Landroid/bluetooth/BluetoothHeadset;
+Landroid/bluetooth/BluetoothHeadsetClient;
 Landroid/bluetooth/BluetoothHearingAid$1;
-Landroid/bluetooth/BluetoothHearingAid$2;
 Landroid/bluetooth/BluetoothHearingAid;
+Landroid/bluetooth/BluetoothHidDevice$1;
 Landroid/bluetooth/BluetoothHidDevice;
+Landroid/bluetooth/BluetoothHidDeviceAppQosSettings$1;
+Landroid/bluetooth/BluetoothHidDeviceAppQosSettings;
+Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings$1;
+Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings;
+Landroid/bluetooth/BluetoothHidHost$1;
 Landroid/bluetooth/BluetoothHidHost;
 Landroid/bluetooth/BluetoothInputStream;
 Landroid/bluetooth/BluetoothManager;
+Landroid/bluetooth/BluetoothMap$1;
 Landroid/bluetooth/BluetoothMap;
+Landroid/bluetooth/BluetoothMapClient;
 Landroid/bluetooth/BluetoothOutputStream;
+Landroid/bluetooth/BluetoothPan$1;
 Landroid/bluetooth/BluetoothPan;
+Landroid/bluetooth/BluetoothPbap$1;
+Landroid/bluetooth/BluetoothPbap$2;
 Landroid/bluetooth/BluetoothPbap;
+Landroid/bluetooth/BluetoothPbapClient;
 Landroid/bluetooth/BluetoothProfile$ServiceListener;
 Landroid/bluetooth/BluetoothProfile;
+Landroid/bluetooth/BluetoothProfileConnector$1;
+Landroid/bluetooth/BluetoothProfileConnector$2;
+Landroid/bluetooth/BluetoothProfileConnector;
+Landroid/bluetooth/BluetoothSap$1;
 Landroid/bluetooth/BluetoothSap;
 Landroid/bluetooth/BluetoothServerSocket;
 Landroid/bluetooth/BluetoothSocket$SocketState;
@@ -32795,6 +23496,12 @@
 Landroid/bluetooth/IBluetoothGatt$Stub$Proxy;
 Landroid/bluetooth/IBluetoothGatt$Stub;
 Landroid/bluetooth/IBluetoothGatt;
+Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;
+Landroid/bluetooth/IBluetoothGattCallback$Stub;
+Landroid/bluetooth/IBluetoothGattCallback;
+Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;
+Landroid/bluetooth/IBluetoothGattServerCallback$Stub;
+Landroid/bluetooth/IBluetoothGattServerCallback;
 Landroid/bluetooth/IBluetoothHeadset$Stub$Proxy;
 Landroid/bluetooth/IBluetoothHeadset$Stub;
 Landroid/bluetooth/IBluetoothHeadset;
@@ -32803,8 +23510,13 @@
 Landroid/bluetooth/IBluetoothHeadsetPhone;
 Landroid/bluetooth/IBluetoothHearingAid$Stub;
 Landroid/bluetooth/IBluetoothHearingAid;
+Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;
 Landroid/bluetooth/IBluetoothHidDevice$Stub;
 Landroid/bluetooth/IBluetoothHidDevice;
+Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;
+Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;
+Landroid/bluetooth/IBluetoothHidDeviceCallback;
+Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;
 Landroid/bluetooth/IBluetoothHidHost$Stub;
 Landroid/bluetooth/IBluetoothHidHost;
 Landroid/bluetooth/IBluetoothManager$Stub$Proxy;
@@ -32813,27 +23525,50 @@
 Landroid/bluetooth/IBluetoothManagerCallback$Stub$Proxy;
 Landroid/bluetooth/IBluetoothManagerCallback$Stub;
 Landroid/bluetooth/IBluetoothManagerCallback;
+Landroid/bluetooth/IBluetoothMap$Stub$Proxy;
 Landroid/bluetooth/IBluetoothMap$Stub;
 Landroid/bluetooth/IBluetoothMap;
+Landroid/bluetooth/IBluetoothMetadataListener$Stub$Proxy;
 Landroid/bluetooth/IBluetoothMetadataListener$Stub;
 Landroid/bluetooth/IBluetoothMetadataListener;
+Landroid/bluetooth/IBluetoothPan$Stub$Proxy;
 Landroid/bluetooth/IBluetoothPan$Stub;
 Landroid/bluetooth/IBluetoothPan;
+Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;
 Landroid/bluetooth/IBluetoothPbap$Stub;
 Landroid/bluetooth/IBluetoothPbap;
+Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;
 Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub;
 Landroid/bluetooth/IBluetoothProfileServiceConnection;
+Landroid/bluetooth/IBluetoothSap$Stub$Proxy;
 Landroid/bluetooth/IBluetoothSap$Stub;
 Landroid/bluetooth/IBluetoothSap;
 Landroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;
 Landroid/bluetooth/IBluetoothSocketManager$Stub;
 Landroid/bluetooth/IBluetoothSocketManager;
+Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;
 Landroid/bluetooth/IBluetoothStateChangeCallback$Stub;
 Landroid/bluetooth/IBluetoothStateChangeCallback;
+Landroid/bluetooth/OobData$1;
+Landroid/bluetooth/OobData;
 Landroid/bluetooth/UidTraffic$1;
 Landroid/bluetooth/UidTraffic;
+Landroid/bluetooth/le/AdvertiseData$1;
+Landroid/bluetooth/le/AdvertiseData;
+Landroid/bluetooth/le/AdvertisingSetParameters$1;
+Landroid/bluetooth/le/AdvertisingSetParameters;
+Landroid/bluetooth/le/BluetoothLeScanner;
+Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;
+Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;
+Landroid/bluetooth/le/IAdvertisingSetCallback;
+Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;
+Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;
+Landroid/bluetooth/le/IPeriodicAdvertisingCallback;
 Landroid/bluetooth/le/IScannerCallback$Stub$Proxy;
+Landroid/bluetooth/le/IScannerCallback$Stub;
 Landroid/bluetooth/le/IScannerCallback;
+Landroid/bluetooth/le/PeriodicAdvertisingParameters$1;
+Landroid/bluetooth/le/PeriodicAdvertisingParameters;
 Landroid/bluetooth/le/ScanFilter$1;
 Landroid/bluetooth/le/ScanFilter$Builder;
 Landroid/bluetooth/le/ScanFilter;
@@ -32843,9 +23578,17 @@
 Landroid/bluetooth/le/ScanSettings$1;
 Landroid/bluetooth/le/ScanSettings$Builder;
 Landroid/bluetooth/le/ScanSettings;
+Landroid/companion/AssociationRequest$1;
+Landroid/companion/AssociationRequest;
 Landroid/companion/CompanionDeviceManager;
+Landroid/companion/ICompanionDeviceManager$Stub$Proxy;
 Landroid/companion/ICompanionDeviceManager$Stub;
 Landroid/companion/ICompanionDeviceManager;
+Landroid/companion/IFindDeviceCallback$Stub$Proxy;
+Landroid/companion/IFindDeviceCallback$Stub;
+Landroid/companion/IFindDeviceCallback;
+Landroid/compat/Compatibility$Callbacks;
+Landroid/compat/Compatibility;
 Landroid/content/-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc;
 Landroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;
 Landroid/content/AbstractThreadedSyncAdapter$SyncThread;
@@ -32861,6 +23604,11 @@
 Landroid/content/BroadcastReceiver$PendingResult$1;
 Landroid/content/BroadcastReceiver$PendingResult;
 Landroid/content/BroadcastReceiver;
+Landroid/content/ClipData$1;
+Landroid/content/ClipData$Item;
+Landroid/content/ClipData;
+Landroid/content/ClipDescription$1;
+Landroid/content/ClipDescription;
 Landroid/content/ClipboardManager$1;
 Landroid/content/ClipboardManager$OnPrimaryClipChangedListener;
 Landroid/content/ClipboardManager;
@@ -32869,12 +23617,14 @@
 Landroid/content/ComponentName$1;
 Landroid/content/ComponentName$WithComponentName;
 Landroid/content/ComponentName;
+Landroid/content/ContentCaptureOptions$1;
 Landroid/content/ContentCaptureOptions;
 Landroid/content/ContentInterface;
 Landroid/content/ContentProvider$PipeDataWriter;
 Landroid/content/ContentProvider$Transport;
 Landroid/content/ContentProvider;
 Landroid/content/ContentProviderClient$CursorWrapperInner;
+Landroid/content/ContentProviderClient$NotRespondingRunnable;
 Landroid/content/ContentProviderClient;
 Landroid/content/ContentProviderNative;
 Landroid/content/ContentProviderOperation$1;
@@ -32912,10 +23662,13 @@
 Landroid/content/IIntentSender$Stub$Proxy;
 Landroid/content/IIntentSender$Stub;
 Landroid/content/IIntentSender;
+Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;
 Landroid/content/IOnPrimaryClipChangedListener$Stub;
 Landroid/content/IOnPrimaryClipChangedListener;
+Landroid/content/IRestrictionsManager$Stub$Proxy;
 Landroid/content/IRestrictionsManager$Stub;
 Landroid/content/IRestrictionsManager;
+Landroid/content/ISyncAdapter$Stub$Proxy;
 Landroid/content/ISyncAdapter$Stub;
 Landroid/content/ISyncAdapter;
 Landroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;
@@ -32924,6 +23677,7 @@
 Landroid/content/ISyncContext$Stub$Proxy;
 Landroid/content/ISyncContext$Stub;
 Landroid/content/ISyncContext;
+Landroid/content/ISyncStatusObserver$Stub$Proxy;
 Landroid/content/ISyncStatusObserver$Stub;
 Landroid/content/ISyncStatusObserver;
 Landroid/content/Intent$1;
@@ -32934,12 +23688,15 @@
 Landroid/content/IntentFilter$MalformedMimeTypeException;
 Landroid/content/IntentFilter;
 Landroid/content/IntentSender$1;
+Landroid/content/IntentSender$FinishedDispatcher;
 Landroid/content/IntentSender$SendIntentException;
 Landroid/content/IntentSender;
 Landroid/content/Loader$ForceLoadContentObserver;
 Landroid/content/Loader$OnLoadCanceledListener;
 Landroid/content/Loader$OnLoadCompleteListener;
 Landroid/content/Loader;
+Landroid/content/LocusId$1;
+Landroid/content/LocusId;
 Landroid/content/OperationApplicationException;
 Landroid/content/PeriodicSync$1;
 Landroid/content/ReceiverCallNotAllowedException;
@@ -32971,23 +23728,33 @@
 Landroid/content/UndoOperation;
 Landroid/content/UndoOwner;
 Landroid/content/UriMatcher;
+Landroid/content/integrity/AppIntegrityManager;
+Landroid/content/om/IOverlayManager$Stub$Proxy;
 Landroid/content/om/IOverlayManager$Stub;
 Landroid/content/om/IOverlayManager;
 Landroid/content/om/OverlayInfo$1;
 Landroid/content/om/OverlayInfo;
 Landroid/content/om/OverlayManager;
-Landroid/content/pm/-$$Lambda$jpya2qgMDDEok2GAoKRDqPM5lIE;
+Landroid/content/om/OverlayableInfo;
+Landroid/content/pm/-$$Lambda$PackageParser$0DZRgzfgaIMpCOhJqjw6PUiU5vw;
+Landroid/content/pm/-$$Lambda$PackageParser$0aobsT7Zf7WVZCqMZ5z2clAuQf4;
+Landroid/content/pm/-$$Lambda$PackageParser$M-9fHqS_eEp1oYkuKJhRHOGUxf8;
+Landroid/content/pm/-$$Lambda$T1UQAuePWRRmVQ1KzTyMAktZUPM;
+Landroid/content/pm/-$$Lambda$ciir_QAmv6RwJro4I58t77dPnxU;
+Landroid/content/pm/-$$Lambda$n3uXeb1v-YRmq_BWTfosEqUUr9g;
+Landroid/content/pm/-$$Lambda$zO9HBUVgPeroyDQPLJE-MNMvSqc;
 Landroid/content/pm/ActivityInfo$1;
 Landroid/content/pm/ActivityInfo$WindowLayout;
 Landroid/content/pm/ActivityInfo;
-Landroid/content/pm/AndroidHidlUpdater;
 Landroid/content/pm/ApplicationInfo$1;
 Landroid/content/pm/ApplicationInfo;
+Landroid/content/pm/BaseParceledListSlice$1;
 Landroid/content/pm/BaseParceledListSlice;
 Landroid/content/pm/ComponentInfo;
 Landroid/content/pm/ConfigurationInfo$1;
 Landroid/content/pm/ConfigurationInfo;
 Landroid/content/pm/CrossProfileApps;
+Landroid/content/pm/DataLoaderManager;
 Landroid/content/pm/FallbackCategoryProvider;
 Landroid/content/pm/FeatureGroupInfo$1;
 Landroid/content/pm/FeatureGroupInfo;
@@ -32995,21 +23762,32 @@
 Landroid/content/pm/FeatureInfo;
 Landroid/content/pm/ICrossProfileApps$Stub;
 Landroid/content/pm/ICrossProfileApps;
+Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;
+Landroid/content/pm/IDexModuleRegisterCallback$Stub;
+Landroid/content/pm/IDexModuleRegisterCallback;
 Landroid/content/pm/ILauncherApps$Stub$Proxy;
 Landroid/content/pm/ILauncherApps$Stub;
 Landroid/content/pm/ILauncherApps;
+Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;
 Landroid/content/pm/IOnAppsChangedListener$Stub;
 Landroid/content/pm/IOnAppsChangedListener;
-Landroid/content/pm/IOnPermissionsChangeListener$Stub;
-Landroid/content/pm/IOnPermissionsChangeListener;
 Landroid/content/pm/IOtaDexopt$Stub;
 Landroid/content/pm/IOtaDexopt;
+Landroid/content/pm/IPackageDataObserver$Stub$Proxy;
 Landroid/content/pm/IPackageDataObserver$Stub;
 Landroid/content/pm/IPackageDataObserver;
+Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;
+Landroid/content/pm/IPackageDeleteObserver$Stub;
+Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;
+Landroid/content/pm/IPackageDeleteObserver2$Stub;
+Landroid/content/pm/IPackageDeleteObserver2;
 Landroid/content/pm/IPackageDeleteObserver;
+Landroid/content/pm/IPackageInstallObserver2$Stub;
+Landroid/content/pm/IPackageInstallObserver2;
 Landroid/content/pm/IPackageInstaller$Stub$Proxy;
 Landroid/content/pm/IPackageInstaller$Stub;
 Landroid/content/pm/IPackageInstaller;
+Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;
 Landroid/content/pm/IPackageInstallerCallback$Stub;
 Landroid/content/pm/IPackageInstallerCallback;
 Landroid/content/pm/IPackageInstallerSession$Stub$Proxy;
@@ -33019,25 +23797,32 @@
 Landroid/content/pm/IPackageManager;
 Landroid/content/pm/IPackageManagerNative$Stub;
 Landroid/content/pm/IPackageManagerNative;
+Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;
 Landroid/content/pm/IPackageMoveObserver$Stub;
 Landroid/content/pm/IPackageMoveObserver;
+Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;
 Landroid/content/pm/IPackageStatsObserver$Stub;
 Landroid/content/pm/IPackageStatsObserver;
 Landroid/content/pm/IShortcutService$Stub$Proxy;
 Landroid/content/pm/IShortcutService$Stub;
 Landroid/content/pm/IShortcutService;
+Landroid/content/pm/InstantAppIntentFilter$1;
+Landroid/content/pm/InstantAppIntentFilter;
+Landroid/content/pm/InstantAppResolveInfo$1;
+Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;
+Landroid/content/pm/InstantAppResolveInfo;
 Landroid/content/pm/InstrumentationInfo$1;
 Landroid/content/pm/InstrumentationInfo;
 Landroid/content/pm/IntentFilterVerificationInfo$1;
 Landroid/content/pm/IntentFilterVerificationInfo;
+Landroid/content/pm/KeySet$1;
+Landroid/content/pm/KeySet;
+Landroid/content/pm/LauncherActivityInfo;
 Landroid/content/pm/LauncherApps$1;
+Landroid/content/pm/LauncherApps$CallbackMessageHandler;
 Landroid/content/pm/LauncherApps;
 Landroid/content/pm/ModuleInfo$1;
 Landroid/content/pm/ModuleInfo;
-Landroid/content/pm/OrgApacheHttpLegacyUpdater;
-Landroid/content/pm/PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater;
-Landroid/content/pm/PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary;
-Landroid/content/pm/PackageBackwardCompatibility;
 Landroid/content/pm/PackageInfo$1;
 Landroid/content/pm/PackageInfo;
 Landroid/content/pm/PackageInstaller$Session;
@@ -33049,17 +23834,9 @@
 Landroid/content/pm/PackageInstaller$SessionParams;
 Landroid/content/pm/PackageInstaller;
 Landroid/content/pm/PackageItemInfo;
-Landroid/content/pm/PackageList;
 Landroid/content/pm/PackageManager$NameNotFoundException;
 Landroid/content/pm/PackageManager$OnPermissionsChangedListener;
 Landroid/content/pm/PackageManager;
-Landroid/content/pm/PackageManagerInternal$DefaultBrowserProvider;
-Landroid/content/pm/PackageManagerInternal$DefaultHomeProvider;
-Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
-Landroid/content/pm/PackageManagerInternal$PackageListObserver;
-Landroid/content/pm/PackageManagerInternal$PackagesProvider;
-Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;
-Landroid/content/pm/PackageManagerInternal;
 Landroid/content/pm/PackageParser$1;
 Landroid/content/pm/PackageParser$Activity$1;
 Landroid/content/pm/PackageParser$Activity;
@@ -33069,6 +23846,8 @@
 Landroid/content/pm/PackageParser$Callback;
 Landroid/content/pm/PackageParser$CallbackImpl;
 Landroid/content/pm/PackageParser$Component;
+Landroid/content/pm/PackageParser$Instrumentation$1;
+Landroid/content/pm/PackageParser$Instrumentation;
 Landroid/content/pm/PackageParser$IntentInfo;
 Landroid/content/pm/PackageParser$NewPermissionInfo;
 Landroid/content/pm/PackageParser$Package$1;
@@ -33094,7 +23873,6 @@
 Landroid/content/pm/PackageParser;
 Landroid/content/pm/PackageParserCacheHelper$ReadHelper;
 Landroid/content/pm/PackageParserCacheHelper$WriteHelper;
-Landroid/content/pm/PackageSharedLibraryUpdater;
 Landroid/content/pm/PackageStats$1;
 Landroid/content/pm/PackageStats;
 Landroid/content/pm/PackageUserState;
@@ -33131,8 +23909,11 @@
 Landroid/content/pm/Signature$1;
 Landroid/content/pm/Signature;
 Landroid/content/pm/SigningInfo$1;
+Landroid/content/pm/SigningInfo;
 Landroid/content/pm/StringParceledListSlice$1;
 Landroid/content/pm/StringParceledListSlice;
+Landroid/content/pm/SuspendDialogInfo$1;
+Landroid/content/pm/SuspendDialogInfo;
 Landroid/content/pm/UserInfo$1;
 Landroid/content/pm/UserInfo;
 Landroid/content/pm/VerifierInfo$1;
@@ -33142,16 +23923,23 @@
 Landroid/content/pm/XmlSerializerAndParser;
 Landroid/content/pm/dex/ArtManager;
 Landroid/content/pm/dex/ArtManagerInternal;
+Landroid/content/pm/dex/DexMetadataHelper;
 Landroid/content/pm/dex/IArtManager$Stub;
 Landroid/content/pm/dex/IArtManager;
+Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;
+Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;
+Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;
 Landroid/content/pm/split/DefaultSplitAssetLoader;
+Landroid/content/pm/split/SplitAssetDependencyLoader;
 Landroid/content/pm/split/SplitAssetLoader;
 Landroid/content/pm/split/SplitDependencyLoader$IllegalDependencyException;
+Landroid/content/pm/split/SplitDependencyLoader;
 Landroid/content/res/-$$Lambda$Resources$4msWUw7LKsgLexLZjIfWa4oguq4;
 Landroid/content/res/-$$Lambda$ResourcesImpl$99dm2ENnzo9b0SIUjUj2Kl3pi90;
 Landroid/content/res/-$$Lambda$ResourcesImpl$h3PTRX185BeQl8SVC2_w9arp5Og;
 Landroid/content/res/ApkAssets;
 Landroid/content/res/AssetFileDescriptor$1;
+Landroid/content/res/AssetFileDescriptor$AutoCloseInputStream;
 Landroid/content/res/AssetFileDescriptor;
 Landroid/content/res/AssetManager$AssetInputStream;
 Landroid/content/res/AssetManager$Builder;
@@ -33162,6 +23950,7 @@
 Landroid/content/res/CompatResources;
 Landroid/content/res/CompatibilityInfo$1;
 Landroid/content/res/CompatibilityInfo$2;
+Landroid/content/res/CompatibilityInfo$Translator;
 Landroid/content/res/CompatibilityInfo;
 Landroid/content/res/ComplexColor;
 Landroid/content/res/Configuration$1;
@@ -33170,8 +23959,11 @@
 Landroid/content/res/ConstantState;
 Landroid/content/res/DrawableCache;
 Landroid/content/res/FontResourcesParser$FamilyResourceEntry;
+Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;
+Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
 Landroid/content/res/FontResourcesParser$ProviderResourceEntry;
 Landroid/content/res/FontResourcesParser;
+Landroid/content/res/GradientColor$GradientColorFactory;
 Landroid/content/res/GradientColor;
 Landroid/content/res/ObbInfo$1;
 Landroid/content/res/ObbInfo;
@@ -33185,6 +23977,7 @@
 Landroid/content/res/ResourcesImpl$ThemeImpl;
 Landroid/content/res/ResourcesImpl;
 Landroid/content/res/ResourcesKey;
+Landroid/content/res/StringBlock$Height;
 Landroid/content/res/StringBlock$StyleIDs;
 Landroid/content/res/StringBlock;
 Landroid/content/res/ThemedResourceCache;
@@ -33192,6 +23985,7 @@
 Landroid/content/res/XmlBlock$Parser;
 Landroid/content/res/XmlBlock;
 Landroid/content/res/XmlResourceParser;
+Landroid/content/rollback/IRollbackManager$Stub$Proxy;
 Landroid/content/rollback/IRollbackManager$Stub;
 Landroid/content/rollback/IRollbackManager;
 Landroid/content/rollback/RollbackManager;
@@ -33232,8 +24026,10 @@
 Landroid/database/MergeCursor;
 Landroid/database/Observable;
 Landroid/database/SQLException;
+Landroid/database/StaleDataException;
 Landroid/database/sqlite/-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q;
 Landroid/database/sqlite/DatabaseObjectNotClosedException;
+Landroid/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException;
 Landroid/database/sqlite/SQLiteCantOpenDatabaseException;
 Landroid/database/sqlite/SQLiteClosable;
 Landroid/database/sqlite/SQLiteCompatibilityWalFlags;
@@ -33242,6 +24038,7 @@
 Landroid/database/sqlite/SQLiteConnection$PreparedStatement;
 Landroid/database/sqlite/SQLiteConnection$PreparedStatementCache;
 Landroid/database/sqlite/SQLiteConnection;
+Landroid/database/sqlite/SQLiteConnectionPool$1;
 Landroid/database/sqlite/SQLiteConnectionPool$AcquiredConnectionStatus;
 Landroid/database/sqlite/SQLiteConnectionPool$ConnectionWaiter;
 Landroid/database/sqlite/SQLiteConnectionPool$IdleConnectionHandler;
@@ -33258,8 +24055,8 @@
 Landroid/database/sqlite/SQLiteDatabaseConfiguration;
 Landroid/database/sqlite/SQLiteDatabaseCorruptException;
 Landroid/database/sqlite/SQLiteDatabaseLockedException;
-Landroid/database/sqlite/SQLiteDebug$Consts;
 Landroid/database/sqlite/SQLiteDebug$DbStats;
+Landroid/database/sqlite/SQLiteDebug$NoPreloadHolder;
 Landroid/database/sqlite/SQLiteDebug$PagerStats;
 Landroid/database/sqlite/SQLiteDebug;
 Landroid/database/sqlite/SQLiteDirectCursorDriver;
@@ -33276,6 +24073,8 @@
 Landroid/database/sqlite/SQLiteStatement;
 Landroid/database/sqlite/SQLiteStatementInfo;
 Landroid/database/sqlite/SQLiteTransactionListener;
+Landroid/database/sqlite/SqliteWrapper;
+Landroid/ddm/DdmHandleAppName$Names;
 Landroid/ddm/DdmHandleAppName;
 Landroid/ddm/DdmHandleExit;
 Landroid/ddm/DdmHandleHeap;
@@ -33294,10 +24093,13 @@
 Landroid/graphics/-$$Lambda$ColorSpace$BNp-1CyCzsQzfE-Ads9uc4rJDfw;
 Landroid/graphics/-$$Lambda$ColorSpace$Rgb$8EkhO2jIf14tuA3BvrmYJMa7YXM;
 Landroid/graphics/-$$Lambda$ColorSpace$Rgb$CqKld6797g7__JnuY0NeFz5q4_E;
+Landroid/graphics/-$$Lambda$ColorSpace$Rgb$V_0lmM2WEpxGBDV_1G1wvvidn7Y;
 Landroid/graphics/-$$Lambda$ColorSpace$Rgb$ZvS77aTfobOSa2o9MTqYMph4Rcg;
 Landroid/graphics/-$$Lambda$ColorSpace$Rgb$b9VGKuNnse0bbguR9jbOM_wK2Ac;
 Landroid/graphics/-$$Lambda$ColorSpace$Rgb$bWzafC8vMHNuVmRuTUPEFUMlfuY;
+Landroid/graphics/-$$Lambda$ColorSpace$Rgb$iMkODTKa3_8kPZUnZZerD2Lv-yo;
 Landroid/graphics/-$$Lambda$ColorSpace$S2rlqJvkXGTpUF6mZhvkElds8JE;
+Landroid/graphics/BLASTBufferQueue;
 Landroid/graphics/BaseCanvas;
 Landroid/graphics/BaseRecordingCanvas;
 Landroid/graphics/Bitmap$1;
@@ -33309,6 +24111,7 @@
 Landroid/graphics/BitmapFactory;
 Landroid/graphics/BitmapRegionDecoder;
 Landroid/graphics/BitmapShader;
+Landroid/graphics/BlendMode$1;
 Landroid/graphics/BlendMode;
 Landroid/graphics/BlendModeColorFilter;
 Landroid/graphics/BlurMaskFilter$Blur;
@@ -33327,6 +24130,7 @@
 Landroid/graphics/ColorSpace$Lab;
 Landroid/graphics/ColorSpace$Model;
 Landroid/graphics/ColorSpace$Named;
+Landroid/graphics/ColorSpace$RenderIntent;
 Landroid/graphics/ColorSpace$Rgb$NoImagePreloadHolder;
 Landroid/graphics/ColorSpace$Rgb$TransferParameters;
 Landroid/graphics/ColorSpace$Rgb;
@@ -33351,6 +24155,8 @@
 Landroid/graphics/HardwareRenderer$ProcessInitializer$1;
 Landroid/graphics/HardwareRenderer$ProcessInitializer;
 Landroid/graphics/HardwareRenderer;
+Landroid/graphics/HardwareRendererObserver$OnFrameMetricsAvailableListener;
+Landroid/graphics/HardwareRendererObserver;
 Landroid/graphics/ImageDecoder$AssetInputStreamSource;
 Landroid/graphics/ImageDecoder$DecodeException;
 Landroid/graphics/ImageDecoder$ImageInfo;
@@ -33362,6 +24168,7 @@
 Landroid/graphics/Insets;
 Landroid/graphics/Interpolator$Result;
 Landroid/graphics/Interpolator;
+Landroid/graphics/LeakyTypefaceStorage;
 Landroid/graphics/LightingColorFilter;
 Landroid/graphics/LinearGradient;
 Landroid/graphics/MaskFilter;
@@ -33401,6 +24208,7 @@
 Landroid/graphics/RadialGradient;
 Landroid/graphics/RecordingCanvas;
 Landroid/graphics/Rect$1;
+Landroid/graphics/Rect$UnflattenHelper;
 Landroid/graphics/Rect;
 Landroid/graphics/RectF$1;
 Landroid/graphics/RectF;
@@ -33413,6 +24221,7 @@
 Landroid/graphics/RenderNode$NoImagePreloadHolder;
 Landroid/graphics/RenderNode$PositionUpdateListener;
 Landroid/graphics/RenderNode;
+Landroid/graphics/RuntimeShader;
 Landroid/graphics/Shader$NoImagePreloadHolder;
 Landroid/graphics/Shader$TileMode;
 Landroid/graphics/Shader;
@@ -33428,25 +24237,33 @@
 Landroid/graphics/Typeface;
 Landroid/graphics/Xfermode;
 Landroid/graphics/YuvImage;
+Landroid/graphics/drawable/-$$Lambda$AnimatedVectorDrawable$VectorDrawableAnimatorRT$PzjgSeyQweoFjbEZJP80UteZqm8;
 Landroid/graphics/drawable/-$$Lambda$BitmapDrawable$LMqt8JvxZ4giSOIRAtlCKDg39Jw;
+Landroid/graphics/drawable/-$$Lambda$Drawable$bbJz2VgQAwkXlE27mR8nPMYacEw;
 Landroid/graphics/drawable/-$$Lambda$NinePatchDrawable$yQvfm7FAkslD5wdGFysjgwt8cLE;
 Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;
 Landroid/graphics/drawable/AdaptiveIconDrawable$LayerState;
 Landroid/graphics/drawable/AdaptiveIconDrawable;
 Landroid/graphics/drawable/Animatable2;
 Landroid/graphics/drawable/Animatable;
+Landroid/graphics/drawable/AnimatedImageDrawable$State;
 Landroid/graphics/drawable/AnimatedImageDrawable;
+Landroid/graphics/drawable/AnimatedRotateDrawable$1;
 Landroid/graphics/drawable/AnimatedRotateDrawable$AnimatedRotateState;
 Landroid/graphics/drawable/AnimatedRotateDrawable;
+Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;
 Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedStateListState;
 Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatedVectorDrawableTransition;
+Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;
 Landroid/graphics/drawable/AnimatedStateListDrawable$Transition;
 Landroid/graphics/drawable/AnimatedStateListDrawable;
 Landroid/graphics/drawable/AnimatedVectorDrawable$1;
+Landroid/graphics/drawable/AnimatedVectorDrawable$2;
 Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator;
 Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;
 Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;
 Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;
+Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;
 Landroid/graphics/drawable/AnimatedVectorDrawable;
 Landroid/graphics/drawable/AnimationDrawable$AnimationState;
 Landroid/graphics/drawable/AnimationDrawable;
@@ -33456,9 +24273,12 @@
 Landroid/graphics/drawable/ClipDrawable;
 Landroid/graphics/drawable/ColorDrawable$ColorState;
 Landroid/graphics/drawable/ColorDrawable;
+Landroid/graphics/drawable/ColorStateListDrawable$ColorStateListDrawableState;
+Landroid/graphics/drawable/ColorStateListDrawable;
 Landroid/graphics/drawable/Drawable$Callback;
 Landroid/graphics/drawable/Drawable$ConstantState;
 Landroid/graphics/drawable/Drawable;
+Landroid/graphics/drawable/DrawableContainer$1;
 Landroid/graphics/drawable/DrawableContainer$BlockInvalidateCallback;
 Landroid/graphics/drawable/DrawableContainer$DrawableContainerState;
 Landroid/graphics/drawable/DrawableContainer;
@@ -33477,6 +24297,8 @@
 Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
 Landroid/graphics/drawable/LayerDrawable$LayerState;
 Landroid/graphics/drawable/LayerDrawable;
+Landroid/graphics/drawable/LevelListDrawable$LevelListState;
+Landroid/graphics/drawable/LevelListDrawable;
 Landroid/graphics/drawable/NinePatchDrawable$NinePatchState;
 Landroid/graphics/drawable/NinePatchDrawable;
 Landroid/graphics/drawable/PaintDrawable;
@@ -33539,6 +24361,7 @@
 Landroid/graphics/fonts/FontCustomizationParser;
 Landroid/graphics/fonts/FontFamily$Builder;
 Landroid/graphics/fonts/FontFamily;
+Landroid/graphics/fonts/FontFileUtil;
 Landroid/graphics/fonts/FontStyle;
 Landroid/graphics/fonts/FontVariationAxis;
 Landroid/graphics/fonts/SystemFonts;
@@ -33551,10 +24374,14 @@
 Landroid/graphics/text/LineBreaker;
 Landroid/graphics/text/MeasuredText$Builder;
 Landroid/graphics/text/MeasuredText;
+Landroid/gsi/IGsiService$Stub$Proxy;
+Landroid/gsi/IGsiService$Stub;
+Landroid/gsi/IGsiService;
 Landroid/hardware/Camera$CameraInfo;
 Landroid/hardware/Camera$Face;
 Landroid/hardware/Camera;
 Landroid/hardware/CameraStatus$1;
+Landroid/hardware/CameraStatus;
 Landroid/hardware/ConsumerIrManager;
 Landroid/hardware/GeomagneticField$LegendreTable;
 Landroid/hardware/GeomagneticField;
@@ -33572,20 +24399,25 @@
 Landroid/hardware/ISensorPrivacyListener$Stub$Proxy;
 Landroid/hardware/ISensorPrivacyListener$Stub;
 Landroid/hardware/ISensorPrivacyListener;
+Landroid/hardware/ISensorPrivacyManager$Stub$Proxy;
 Landroid/hardware/ISensorPrivacyManager$Stub;
 Landroid/hardware/ISensorPrivacyManager;
 Landroid/hardware/ISerialManager$Stub;
 Landroid/hardware/ISerialManager;
 Landroid/hardware/Sensor;
+Landroid/hardware/SensorAdditionalInfo;
 Landroid/hardware/SensorEvent;
 Landroid/hardware/SensorEventListener;
 Landroid/hardware/SensorManager;
+Landroid/hardware/SensorPrivacyManager$1;
 Landroid/hardware/SensorPrivacyManager;
 Landroid/hardware/SerialManager;
 Landroid/hardware/SerialPort;
 Landroid/hardware/SystemSensorManager$BaseEventQueue;
 Landroid/hardware/SystemSensorManager$SensorEventQueue;
+Landroid/hardware/SystemSensorManager$TriggerEventQueue;
 Landroid/hardware/SystemSensorManager;
+Landroid/hardware/TriggerEvent;
 Landroid/hardware/TriggerEventListener;
 Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;
 Landroid/hardware/biometrics/BiometricAuthenticator;
@@ -33597,11 +24429,16 @@
 Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub$Proxy;
 Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;
 Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;
+Landroid/hardware/biometrics/IBiometricService$Stub$Proxy;
 Landroid/hardware/biometrics/IBiometricService$Stub;
 Landroid/hardware/biometrics/IBiometricService;
 Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub$Proxy;
 Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;
 Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;
+Landroid/hardware/biometrics/IBiometricServiceReceiver$Stub$Proxy;
+Landroid/hardware/biometrics/IBiometricServiceReceiver$Stub;
+Landroid/hardware/biometrics/IBiometricServiceReceiver;
+Landroid/hardware/biometrics/IBiometricServiceReceiverInternal$Stub$Proxy;
 Landroid/hardware/biometrics/IBiometricServiceReceiverInternal$Stub;
 Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;
 Landroid/hardware/camera2/CameraAccessException;
@@ -33610,9 +24447,14 @@
 Landroid/hardware/camera2/CameraCharacteristics$3;
 Landroid/hardware/camera2/CameraCharacteristics$4;
 Landroid/hardware/camera2/CameraCharacteristics$5;
+Landroid/hardware/camera2/CameraCharacteristics$6;
 Landroid/hardware/camera2/CameraCharacteristics$Key;
 Landroid/hardware/camera2/CameraCharacteristics;
+Landroid/hardware/camera2/CameraDevice;
+Landroid/hardware/camera2/CameraManager$AvailabilityCallback;
 Landroid/hardware/camera2/CameraManager$CameraManagerGlobal$1;
+Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;
+Landroid/hardware/camera2/CameraManager$TorchCallback;
 Landroid/hardware/camera2/CameraManager;
 Landroid/hardware/camera2/CameraMetadata;
 Landroid/hardware/camera2/CaptureRequest$1;
@@ -33625,6 +24467,8 @@
 Landroid/hardware/camera2/CaptureResult$Key;
 Landroid/hardware/camera2/CaptureResult;
 Landroid/hardware/camera2/DngCreator;
+Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraHandlerExecutor;
+Landroid/hardware/camera2/impl/CameraDeviceImpl;
 Landroid/hardware/camera2/impl/CameraMetadataNative$10;
 Landroid/hardware/camera2/impl/CameraMetadataNative$11;
 Landroid/hardware/camera2/impl/CameraMetadataNative$12;
@@ -33638,6 +24482,7 @@
 Landroid/hardware/camera2/impl/CameraMetadataNative$1;
 Landroid/hardware/camera2/impl/CameraMetadataNative$20;
 Landroid/hardware/camera2/impl/CameraMetadataNative$21;
+Landroid/hardware/camera2/impl/CameraMetadataNative$22;
 Landroid/hardware/camera2/impl/CameraMetadataNative$2;
 Landroid/hardware/camera2/impl/CameraMetadataNative$3;
 Landroid/hardware/camera2/impl/CameraMetadataNative$4;
@@ -33652,6 +24497,7 @@
 Landroid/hardware/camera2/impl/SetCommand;
 Landroid/hardware/camera2/legacy/LegacyCameraDevice;
 Landroid/hardware/camera2/legacy/LegacyExceptionUtils$BufferQueueAbandonedException;
+Landroid/hardware/camera2/legacy/LegacyMetadataMapper;
 Landroid/hardware/camera2/legacy/PerfMeasurement;
 Landroid/hardware/camera2/marshal/MarshalHelpers;
 Landroid/hardware/camera2/marshal/MarshalQueryable;
@@ -33660,6 +24506,7 @@
 Landroid/hardware/camera2/marshal/Marshaler;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableArray;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableBlackLevelPattern;
+Landroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableColorSpaceTransform;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableEnum;
@@ -33681,6 +24528,7 @@
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableStreamConfigurationDuration;
 Landroid/hardware/camera2/marshal/impl/MarshalQueryableString;
 Landroid/hardware/camera2/params/BlackLevelPattern;
+Landroid/hardware/camera2/params/Capability;
 Landroid/hardware/camera2/params/ColorSpaceTransform;
 Landroid/hardware/camera2/params/Face;
 Landroid/hardware/camera2/params/HighSpeedVideoConfiguration;
@@ -33699,14 +24547,19 @@
 Landroid/hardware/camera2/params/StreamConfigurationDuration;
 Landroid/hardware/camera2/params/StreamConfigurationMap;
 Landroid/hardware/camera2/params/TonemapCurve;
+Landroid/hardware/camera2/utils/ArrayUtils;
 Landroid/hardware/camera2/utils/TypeReference$SpecializedTypeReference;
 Landroid/hardware/camera2/utils/TypeReference;
 Landroid/hardware/contexthub/V1_0/ContextHub;
+Landroid/hardware/contexthub/V1_0/ContextHubMsg;
 Landroid/hardware/contexthub/V1_0/HubAppInfo;
 Landroid/hardware/contexthub/V1_0/IContexthub$Proxy;
 Landroid/hardware/contexthub/V1_0/IContexthub;
 Landroid/hardware/contexthub/V1_0/IContexthubCallback$Stub;
 Landroid/hardware/contexthub/V1_0/IContexthubCallback;
+Landroid/hardware/contexthub/V1_0/MemRange;
+Landroid/hardware/contexthub/V1_0/PhysicalSensor;
+Landroid/hardware/display/-$$Lambda$NightDisplayListener$sOK1HmSbMnFLzc4SdDD1WpVWJiI;
 Landroid/hardware/display/AmbientBrightnessDayStats$1;
 Landroid/hardware/display/AmbientBrightnessDayStats;
 Landroid/hardware/display/AmbientDisplayConfiguration;
@@ -33743,7 +24596,14 @@
 Landroid/hardware/display/IDisplayManagerCallback$Stub$Proxy;
 Landroid/hardware/display/IDisplayManagerCallback$Stub;
 Landroid/hardware/display/IDisplayManagerCallback;
+Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;
+Landroid/hardware/display/IVirtualDisplayCallback$Stub;
+Landroid/hardware/display/IVirtualDisplayCallback;
+Landroid/hardware/display/NightDisplayListener$1;
 Landroid/hardware/display/NightDisplayListener$Callback;
+Landroid/hardware/display/NightDisplayListener;
+Landroid/hardware/display/Time$1;
+Landroid/hardware/display/Time;
 Landroid/hardware/display/WifiDisplay$1;
 Landroid/hardware/display/WifiDisplay;
 Landroid/hardware/display/WifiDisplaySessionInfo$1;
@@ -33757,18 +24617,26 @@
 Landroid/hardware/fingerprint/FingerprintManager$2;
 Landroid/hardware/fingerprint/FingerprintManager$MyHandler;
 Landroid/hardware/fingerprint/FingerprintManager;
+Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;
+Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;
+Landroid/hardware/fingerprint/IFingerprintClientActiveCallback;
 Landroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;
 Landroid/hardware/fingerprint/IFingerprintService$Stub;
 Landroid/hardware/fingerprint/IFingerprintService;
+Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;
 Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub;
 Landroid/hardware/fingerprint/IFingerprintServiceReceiver;
 Landroid/hardware/hdmi/HdmiControlManager;
 Landroid/hardware/hdmi/HdmiPlaybackClient$DisplayStatusCallback;
+Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;
 Landroid/hardware/input/IInputDevicesChangedListener$Stub;
 Landroid/hardware/input/IInputDevicesChangedListener;
 Landroid/hardware/input/IInputManager$Stub$Proxy;
 Landroid/hardware/input/IInputManager$Stub;
 Landroid/hardware/input/IInputManager;
+Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;
+Landroid/hardware/input/ITabletModeChangedListener$Stub;
+Landroid/hardware/input/ITabletModeChangedListener;
 Landroid/hardware/input/InputDeviceIdentifier$1;
 Landroid/hardware/input/InputDeviceIdentifier;
 Landroid/hardware/input/InputManager$InputDeviceListener;
@@ -33782,23 +24650,67 @@
 Landroid/hardware/input/TouchCalibration;
 Landroid/hardware/iris/IrisManager;
 Landroid/hardware/location/ActivityRecognitionHardware;
+Landroid/hardware/location/ContextHubClient;
 Landroid/hardware/location/ContextHubInfo$1;
 Landroid/hardware/location/ContextHubInfo;
+Landroid/hardware/location/ContextHubManager$2;
+Landroid/hardware/location/ContextHubManager$3;
+Landroid/hardware/location/ContextHubManager$4;
 Landroid/hardware/location/ContextHubManager;
+Landroid/hardware/location/ContextHubMessage$1;
+Landroid/hardware/location/ContextHubMessage;
+Landroid/hardware/location/ContextHubTransaction;
+Landroid/hardware/location/GeofenceHardwareImpl$1;
+Landroid/hardware/location/GeofenceHardwareImpl$2;
+Landroid/hardware/location/GeofenceHardwareImpl$3;
+Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;
+Landroid/hardware/location/GeofenceHardwareImpl$Reaper;
+Landroid/hardware/location/GeofenceHardwareImpl;
+Landroid/hardware/location/GeofenceHardwareMonitorEvent$1;
+Landroid/hardware/location/GeofenceHardwareMonitorEvent;
+Landroid/hardware/location/GeofenceHardwareRequest;
+Landroid/hardware/location/GeofenceHardwareRequestParcelable$1;
+Landroid/hardware/location/GeofenceHardwareRequestParcelable;
+Landroid/hardware/location/GeofenceHardwareService$1;
 Landroid/hardware/location/GeofenceHardwareService;
+Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;
 Landroid/hardware/location/IActivityRecognitionHardware$Stub;
 Landroid/hardware/location/IActivityRecognitionHardware;
+Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;
+Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;
+Landroid/hardware/location/IActivityRecognitionHardwareClient;
+Landroid/hardware/location/IContextHubCallback$Stub$Proxy;
 Landroid/hardware/location/IContextHubCallback$Stub;
 Landroid/hardware/location/IContextHubCallback;
+Landroid/hardware/location/IContextHubClient$Stub$Proxy;
 Landroid/hardware/location/IContextHubClient$Stub;
 Landroid/hardware/location/IContextHubClient;
+Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;
 Landroid/hardware/location/IContextHubClientCallback$Stub;
 Landroid/hardware/location/IContextHubClientCallback;
+Landroid/hardware/location/IContextHubService$Stub$Proxy;
 Landroid/hardware/location/IContextHubService$Stub;
 Landroid/hardware/location/IContextHubService;
+Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;
 Landroid/hardware/location/IContextHubTransactionCallback$Stub;
 Landroid/hardware/location/IContextHubTransactionCallback;
+Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;
+Landroid/hardware/location/IGeofenceHardware$Stub;
+Landroid/hardware/location/IGeofenceHardware;
+Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;
+Landroid/hardware/location/IGeofenceHardwareCallback$Stub;
+Landroid/hardware/location/IGeofenceHardwareCallback;
+Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;
+Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;
+Landroid/hardware/location/IGeofenceHardwareMonitorCallback;
+Landroid/hardware/location/MemoryRegion$1;
 Landroid/hardware/location/MemoryRegion;
+Landroid/hardware/location/NanoApp$1;
+Landroid/hardware/location/NanoApp;
+Landroid/hardware/location/NanoAppBinary$1;
+Landroid/hardware/location/NanoAppBinary;
+Landroid/hardware/location/NanoAppFilter$1;
+Landroid/hardware/location/NanoAppFilter;
 Landroid/hardware/location/NanoAppInstanceInfo$1;
 Landroid/hardware/location/NanoAppInstanceInfo;
 Landroid/hardware/location/NanoAppMessage$1;
@@ -33833,54 +24745,119 @@
 Landroid/hardware/radio/RadioMetadata;
 Landroid/hardware/radio/V1_0/ActivityStatsInfo;
 Landroid/hardware/radio/V1_0/AppStatus;
+Landroid/hardware/radio/V1_0/Call;
+Landroid/hardware/radio/V1_0/CallForwardInfo;
 Landroid/hardware/radio/V1_0/CardStatus;
+Landroid/hardware/radio/V1_0/CarrierRestrictions;
 Landroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;
+Landroid/hardware/radio/V1_0/CdmaCallWaiting;
+Landroid/hardware/radio/V1_0/CdmaInformationRecords;
+Landroid/hardware/radio/V1_0/CdmaSignalInfoRecord;
 Landroid/hardware/radio/V1_0/CdmaSignalStrength;
+Landroid/hardware/radio/V1_0/CdmaSmsAddress;
+Landroid/hardware/radio/V1_0/CdmaSmsMessage;
+Landroid/hardware/radio/V1_0/CdmaSmsSubaddress;
+Landroid/hardware/radio/V1_0/CellIdentity;
+Landroid/hardware/radio/V1_0/CellIdentityCdma;
+Landroid/hardware/radio/V1_0/CellIdentityGsm;
 Landroid/hardware/radio/V1_0/CellIdentityLte;
+Landroid/hardware/radio/V1_0/CellIdentityTdscdma;
+Landroid/hardware/radio/V1_0/CellIdentityWcdma;
+Landroid/hardware/radio/V1_0/CellInfo;
+Landroid/hardware/radio/V1_0/CellInfoGsm;
+Landroid/hardware/radio/V1_0/CellInfoLte;
+Landroid/hardware/radio/V1_0/CellInfoTdscdma;
 Landroid/hardware/radio/V1_0/CellInfoType;
+Landroid/hardware/radio/V1_0/CellInfoWcdma;
+Landroid/hardware/radio/V1_0/DataCallFailCause;
 Landroid/hardware/radio/V1_0/DataProfileInfo;
 Landroid/hardware/radio/V1_0/DataRegStateResult;
 Landroid/hardware/radio/V1_0/EvdoSignalStrength;
 Landroid/hardware/radio/V1_0/GsmBroadcastSmsConfigInfo;
 Landroid/hardware/radio/V1_0/GsmSignalStrength;
+Landroid/hardware/radio/V1_0/GsmSmsMessage;
 Landroid/hardware/radio/V1_0/HardwareConfig;
+Landroid/hardware/radio/V1_0/HardwareConfigModem;
+Landroid/hardware/radio/V1_0/HardwareConfigSim;
 Landroid/hardware/radio/V1_0/IRadio;
 Landroid/hardware/radio/V1_0/IRadioIndication;
 Landroid/hardware/radio/V1_0/IRadioResponse;
 Landroid/hardware/radio/V1_0/IccIo;
 Landroid/hardware/radio/V1_0/IccIoResult;
+Landroid/hardware/radio/V1_0/ImsSmsMessage;
+Landroid/hardware/radio/V1_0/LastCallFailCauseInfo;
+Landroid/hardware/radio/V1_0/LceDataInfo;
+Landroid/hardware/radio/V1_0/LceStatusInfo;
 Landroid/hardware/radio/V1_0/LteSignalStrength;
+Landroid/hardware/radio/V1_0/NeighboringCell;
+Landroid/hardware/radio/V1_0/OperatorInfo;
+Landroid/hardware/radio/V1_0/PcoDataInfo;
 Landroid/hardware/radio/V1_0/RadioCapability;
 Landroid/hardware/radio/V1_0/RadioResponseInfo;
 Landroid/hardware/radio/V1_0/RegState;
+Landroid/hardware/radio/V1_0/SendSmsResult;
 Landroid/hardware/radio/V1_0/SetupDataCallResult;
+Landroid/hardware/radio/V1_0/SignalStrength;
+Landroid/hardware/radio/V1_0/SimApdu;
+Landroid/hardware/radio/V1_0/SimRefreshResult;
+Landroid/hardware/radio/V1_0/StkCcUnsolSsResult;
+Landroid/hardware/radio/V1_0/SuppSvcNotification;
 Landroid/hardware/radio/V1_0/TdScdmaSignalStrength;
+Landroid/hardware/radio/V1_0/UusInfo;
 Landroid/hardware/radio/V1_0/VoiceRegStateResult;
 Landroid/hardware/radio/V1_0/WcdmaSignalStrength;
+Landroid/hardware/radio/V1_1/IRadio$Proxy;
 Landroid/hardware/radio/V1_1/IRadio;
 Landroid/hardware/radio/V1_1/IRadioIndication;
 Landroid/hardware/radio/V1_1/IRadioResponse;
+Landroid/hardware/radio/V1_1/KeepaliveStatus;
+Landroid/hardware/radio/V1_1/NetworkScanResult;
 Landroid/hardware/radio/V1_2/Call;
 Landroid/hardware/radio/V1_2/CardStatus;
 Landroid/hardware/radio/V1_2/CellIdentity;
+Landroid/hardware/radio/V1_2/CellIdentityCdma;
+Landroid/hardware/radio/V1_2/CellIdentityGsm;
+Landroid/hardware/radio/V1_2/CellIdentityLte;
 Landroid/hardware/radio/V1_2/CellIdentityOperatorNames;
+Landroid/hardware/radio/V1_2/CellIdentityTdscdma;
+Landroid/hardware/radio/V1_2/CellIdentityWcdma;
 Landroid/hardware/radio/V1_2/CellInfo;
+Landroid/hardware/radio/V1_2/CellInfoCdma;
+Landroid/hardware/radio/V1_2/CellInfoGsm;
+Landroid/hardware/radio/V1_2/CellInfoLte;
+Landroid/hardware/radio/V1_2/CellInfoTdscdma;
+Landroid/hardware/radio/V1_2/CellInfoWcdma;
 Landroid/hardware/radio/V1_2/DataRegStateResult;
 Landroid/hardware/radio/V1_2/IRadio;
 Landroid/hardware/radio/V1_2/IRadioIndication;
 Landroid/hardware/radio/V1_2/IRadioResponse;
+Landroid/hardware/radio/V1_2/LinkCapacityEstimate;
+Landroid/hardware/radio/V1_2/NetworkScanResult;
+Landroid/hardware/radio/V1_2/PhysicalChannelConfig;
 Landroid/hardware/radio/V1_2/SignalStrength;
+Landroid/hardware/radio/V1_2/TdscdmaSignalStrength;
 Landroid/hardware/radio/V1_2/VoiceRegStateResult;
 Landroid/hardware/radio/V1_2/WcdmaSignalStrength;
 Landroid/hardware/radio/V1_3/IRadio$Proxy;
 Landroid/hardware/radio/V1_3/IRadio;
 Landroid/hardware/radio/V1_3/IRadioIndication;
 Landroid/hardware/radio/V1_3/IRadioResponse;
+Landroid/hardware/radio/V1_4/CardStatus;
+Landroid/hardware/radio/V1_4/CarrierRestrictionsWithPriority;
+Landroid/hardware/radio/V1_4/CellInfo;
+Landroid/hardware/radio/V1_4/DataRegStateResult$VopsInfo;
+Landroid/hardware/radio/V1_4/DataRegStateResult;
+Landroid/hardware/radio/V1_4/EmergencyNumber;
 Landroid/hardware/radio/V1_4/IRadio;
 Landroid/hardware/radio/V1_4/IRadioIndication$Stub;
 Landroid/hardware/radio/V1_4/IRadioIndication;
 Landroid/hardware/radio/V1_4/IRadioResponse$Stub;
 Landroid/hardware/radio/V1_4/IRadioResponse;
+Landroid/hardware/radio/V1_4/NetworkScanResult;
+Landroid/hardware/radio/V1_4/NrIndicators;
+Landroid/hardware/radio/V1_4/PhysicalChannelConfig;
+Landroid/hardware/radio/V1_4/SetupDataCallResult;
+Landroid/hardware/radio/V1_4/SignalStrength;
 Landroid/hardware/radio/config/V1_0/IRadioConfig;
 Landroid/hardware/radio/config/V1_0/IRadioConfigIndication;
 Landroid/hardware/radio/config/V1_0/IRadioConfigResponse;
@@ -33890,17 +24867,23 @@
 Landroid/hardware/radio/config/V1_1/IRadioConfigIndication;
 Landroid/hardware/radio/config/V1_1/IRadioConfigResponse;
 Landroid/hardware/radio/config/V1_1/ModemInfo;
+Landroid/hardware/radio/config/V1_1/ModemsConfig;
 Landroid/hardware/radio/config/V1_1/PhoneCapability;
 Landroid/hardware/radio/config/V1_2/IRadioConfigIndication$Stub;
 Landroid/hardware/radio/config/V1_2/IRadioConfigIndication;
 Landroid/hardware/radio/config/V1_2/IRadioConfigResponse$Stub;
 Landroid/hardware/radio/config/V1_2/IRadioConfigResponse;
+Landroid/hardware/radio/config/V1_2/SimSlotStatus;
+Landroid/hardware/radio/deprecated/V1_0/IOemHook$Proxy;
 Landroid/hardware/radio/deprecated/V1_0/IOemHook;
 Landroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;
 Landroid/hardware/radio/deprecated/V1_0/IOemHookIndication;
 Landroid/hardware/radio/deprecated/V1_0/IOemHookResponse$Stub;
 Landroid/hardware/radio/deprecated/V1_0/IOemHookResponse;
 Landroid/hardware/sidekick/SidekickInternal;
+Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;
+Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;
+Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
 Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel$1;
 Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;
 Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent$1;
@@ -33940,6 +24923,8 @@
 Landroid/hardware/usb/IUsbManager;
 Landroid/hardware/usb/ParcelableUsbPort$1;
 Landroid/hardware/usb/ParcelableUsbPort;
+Landroid/hardware/usb/UsbAccessory$2;
+Landroid/hardware/usb/UsbAccessory;
 Landroid/hardware/usb/UsbDevice$1;
 Landroid/hardware/usb/UsbDevice;
 Landroid/hardware/usb/UsbDeviceConnection;
@@ -33955,17 +24940,8 @@
 Landroid/icu/impl/BMPSet;
 Landroid/icu/impl/CacheBase;
 Landroid/icu/impl/CacheValue$NullValue;
-Landroid/icu/impl/CacheValue$SoftValue;
 Landroid/icu/impl/CacheValue$Strength;
 Landroid/icu/impl/CacheValue;
-Landroid/icu/impl/CalType;
-Landroid/icu/impl/CalendarUtil$CalendarPreferences;
-Landroid/icu/impl/CalendarUtil;
-Landroid/icu/impl/CaseMapImpl$StringContextIterator;
-Landroid/icu/impl/CaseMapImpl;
-Landroid/icu/impl/CharTrie;
-Landroid/icu/impl/CharacterIteration;
-Landroid/icu/impl/CharacterPropertiesImpl;
 Landroid/icu/impl/ClassLoaderUtil;
 Landroid/icu/impl/CurrencyData$CurrencyDisplayInfo;
 Landroid/icu/impl/CurrencyData$CurrencyDisplayInfoProvider;
@@ -33973,8 +24949,6 @@
 Landroid/icu/impl/CurrencyData$CurrencySpacingInfo$SpacingType;
 Landroid/icu/impl/CurrencyData$CurrencySpacingInfo;
 Landroid/icu/impl/CurrencyData;
-Landroid/icu/impl/DateNumberFormat;
-Landroid/icu/impl/Grego;
 Landroid/icu/impl/ICUBinary$Authenticate;
 Landroid/icu/impl/ICUBinary$DatPackageReader$IsAcceptable;
 Landroid/icu/impl/ICUBinary$DatPackageReader;
@@ -33996,26 +24970,20 @@
 Landroid/icu/impl/ICUData;
 Landroid/icu/impl/ICUDebug;
 Landroid/icu/impl/ICULocaleService$ICUResourceBundleFactory;
-Landroid/icu/impl/ICULocaleService$LocaleKey;
 Landroid/icu/impl/ICULocaleService$LocaleKeyFactory;
 Landroid/icu/impl/ICULocaleService;
 Landroid/icu/impl/ICUNotifier;
 Landroid/icu/impl/ICURWLock;
 Landroid/icu/impl/ICUResourceBundle$1;
-Landroid/icu/impl/ICUResourceBundle$2$1;
-Landroid/icu/impl/ICUResourceBundle$2;
 Landroid/icu/impl/ICUResourceBundle$3;
 Landroid/icu/impl/ICUResourceBundle$4;
-Landroid/icu/impl/ICUResourceBundle$AvailEntry;
 Landroid/icu/impl/ICUResourceBundle$Loader;
 Landroid/icu/impl/ICUResourceBundle$OpenType;
 Landroid/icu/impl/ICUResourceBundle$WholeBundle;
 Landroid/icu/impl/ICUResourceBundle;
 Landroid/icu/impl/ICUResourceBundleImpl$ResourceArray;
-Landroid/icu/impl/ICUResourceBundleImpl$ResourceBinary;
 Landroid/icu/impl/ICUResourceBundleImpl$ResourceContainer;
 Landroid/icu/impl/ICUResourceBundleImpl$ResourceInt;
-Landroid/icu/impl/ICUResourceBundleImpl$ResourceIntVector;
 Landroid/icu/impl/ICUResourceBundleImpl$ResourceString;
 Landroid/icu/impl/ICUResourceBundleImpl$ResourceTable;
 Landroid/icu/impl/ICUResourceBundleImpl;
@@ -34033,74 +25001,25 @@
 Landroid/icu/impl/ICUResourceBundleReader$Table16;
 Landroid/icu/impl/ICUResourceBundleReader$Table;
 Landroid/icu/impl/ICUResourceBundleReader;
-Landroid/icu/impl/ICUService$CacheEntry;
 Landroid/icu/impl/ICUService$Factory;
-Landroid/icu/impl/ICUService$Key;
 Landroid/icu/impl/ICUService;
-Landroid/icu/impl/IDNA2003;
-Landroid/icu/impl/JavaTimeZone;
 Landroid/icu/impl/LocaleIDParser;
-Landroid/icu/impl/LocaleIDs;
-Landroid/icu/impl/Norm2AllModes$1;
-Landroid/icu/impl/Norm2AllModes$ComposeNormalizer2;
-Landroid/icu/impl/Norm2AllModes$DecomposeNormalizer2;
-Landroid/icu/impl/Norm2AllModes$FCDNormalizer2;
-Landroid/icu/impl/Norm2AllModes$NFCSingleton;
-Landroid/icu/impl/Norm2AllModes$NFKCSingleton;
-Landroid/icu/impl/Norm2AllModes$NoopNormalizer2;
-Landroid/icu/impl/Norm2AllModes$Norm2AllModesSingleton;
-Landroid/icu/impl/Norm2AllModes$Normalizer2WithImpl;
-Landroid/icu/impl/Norm2AllModes;
-Landroid/icu/impl/Normalizer2Impl$1;
-Landroid/icu/impl/Normalizer2Impl$IsAcceptable;
-Landroid/icu/impl/Normalizer2Impl$UTF16Plus;
-Landroid/icu/impl/Normalizer2Impl;
-Landroid/icu/impl/OlsonTimeZone;
 Landroid/icu/impl/Pair;
-Landroid/icu/impl/PatternProps;
-Landroid/icu/impl/PatternTokenizer;
-Landroid/icu/impl/PluralRulesLoader;
 Landroid/icu/impl/RBBIDataWrapper$IsAcceptable;
 Landroid/icu/impl/RBBIDataWrapper$RBBIDataHeader;
 Landroid/icu/impl/RBBIDataWrapper$RBBIStateTable;
 Landroid/icu/impl/RBBIDataWrapper;
-Landroid/icu/impl/ReplaceableUCharacterIterator;
-Landroid/icu/impl/RuleCharacterIterator;
 Landroid/icu/impl/SimpleCache;
-Landroid/icu/impl/SimpleFormatterImpl;
 Landroid/icu/impl/SoftCache;
-Landroid/icu/impl/StandardPlural;
-Landroid/icu/impl/StringPrepDataReader;
-Landroid/icu/impl/TextTrieMap$Node;
-Landroid/icu/impl/TextTrieMap;
-Landroid/icu/impl/TimeZoneNamesFactoryImpl;
-Landroid/icu/impl/TimeZoneNamesImpl$1;
-Landroid/icu/impl/TimeZoneNamesImpl$MZ2TZsCache;
-Landroid/icu/impl/TimeZoneNamesImpl$MZMapEntry;
-Landroid/icu/impl/TimeZoneNamesImpl$TZ2MZsCache;
-Landroid/icu/impl/TimeZoneNamesImpl$ZNames$NameTypeIndex;
-Landroid/icu/impl/TimeZoneNamesImpl$ZNames;
-Landroid/icu/impl/TimeZoneNamesImpl$ZNamesLoader;
-Landroid/icu/impl/TimeZoneNamesImpl;
-Landroid/icu/impl/Trie$DataManipulate;
-Landroid/icu/impl/Trie$DefaultGetFoldingOffset;
 Landroid/icu/impl/Trie2$1;
 Landroid/icu/impl/Trie2$2;
-Landroid/icu/impl/Trie2$Range;
-Landroid/icu/impl/Trie2$Trie2Iterator;
 Landroid/icu/impl/Trie2$UTrie2Header;
 Landroid/icu/impl/Trie2$ValueMapper;
 Landroid/icu/impl/Trie2$ValueWidth;
 Landroid/icu/impl/Trie2;
 Landroid/icu/impl/Trie2_16;
-Landroid/icu/impl/Trie2_32;
-Landroid/icu/impl/Trie;
 Landroid/icu/impl/UBiDiProps$IsAcceptable;
 Landroid/icu/impl/UBiDiProps;
-Landroid/icu/impl/UCaseProps$ContextIterator;
-Landroid/icu/impl/UCaseProps$IsAcceptable;
-Landroid/icu/impl/UCaseProps$LatinCase;
-Landroid/icu/impl/UCaseProps;
 Landroid/icu/impl/UCharacterProperty$10;
 Landroid/icu/impl/UCharacterProperty$11;
 Landroid/icu/impl/UCharacterProperty$12;
@@ -34137,32 +25056,17 @@
 Landroid/icu/impl/UCharacterProperty$NormInertBinaryProperty;
 Landroid/icu/impl/UCharacterProperty$NormQuickCheckIntProperty;
 Landroid/icu/impl/UCharacterProperty;
-Landroid/icu/impl/UPropertyAliases$IsAcceptable;
-Landroid/icu/impl/UPropertyAliases;
-Landroid/icu/impl/URLHandler$URLVisitor;
 Landroid/icu/impl/UResource$Array;
 Landroid/icu/impl/UResource$Key;
 Landroid/icu/impl/UResource$Sink;
 Landroid/icu/impl/UResource$Table;
 Landroid/icu/impl/UResource$Value;
 Landroid/icu/impl/UResource;
-Landroid/icu/impl/USerializedSet;
 Landroid/icu/impl/Utility;
 Landroid/icu/impl/ZoneMeta$1;
 Landroid/icu/impl/ZoneMeta$CustomTimeZoneCache;
 Landroid/icu/impl/ZoneMeta$SystemTimeZoneCache;
 Landroid/icu/impl/ZoneMeta;
-Landroid/icu/impl/coll/CollationData;
-Landroid/icu/impl/coll/CollationDataReader$IsAcceptable;
-Landroid/icu/impl/coll/CollationDataReader;
-Landroid/icu/impl/coll/CollationFastLatin;
-Landroid/icu/impl/coll/CollationIterator$CEBuffer;
-Landroid/icu/impl/coll/CollationLoader;
-Landroid/icu/impl/coll/CollationRoot;
-Landroid/icu/impl/coll/CollationSettings;
-Landroid/icu/impl/coll/CollationTailoring;
-Landroid/icu/impl/coll/SharedObject$Reference;
-Landroid/icu/impl/coll/SharedObject;
 Landroid/icu/impl/locale/AsciiUtil;
 Landroid/icu/impl/locale/BaseLocale$Cache;
 Landroid/icu/impl/locale/BaseLocale$Key;
@@ -34171,48 +25075,41 @@
 Landroid/icu/impl/locale/LocaleObjectCache;
 Landroid/icu/impl/locale/LocaleSyntaxException;
 Landroid/icu/impl/number/AffixPatternProvider;
-Landroid/icu/impl/number/AffixUtils$SymbolProvider;
-Landroid/icu/impl/number/ConstantMultiFieldModifier;
+Landroid/icu/impl/number/AffixUtils;
 Landroid/icu/impl/number/CustomSymbolCurrency;
-Landroid/icu/impl/number/DecimalQuantity;
+Landroid/icu/impl/number/DecimalFormatProperties$ParseMode;
+Landroid/icu/impl/number/DecimalFormatProperties;
+Landroid/icu/impl/number/Grouper;
 Landroid/icu/impl/number/MacroProps;
-Landroid/icu/impl/number/MicroProps;
-Landroid/icu/impl/number/MicroPropsGenerator;
-Landroid/icu/impl/number/Modifier;
-Landroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;
+Landroid/icu/impl/number/Padder$PadPosition;
 Landroid/icu/impl/number/PatternStringParser$ParsedPatternInfo;
 Landroid/icu/impl/number/PatternStringParser$ParsedSubpatternInfo;
 Landroid/icu/impl/number/PatternStringParser$ParserState;
+Landroid/icu/impl/number/PatternStringParser;
+Landroid/icu/impl/number/PropertiesAffixPatternProvider;
 Landroid/icu/impl/number/RoundingUtils;
 Landroid/icu/lang/UCharacter;
 Landroid/icu/lang/UCharacterEnums$ECharacterCategory;
 Landroid/icu/lang/UCharacterEnums$ECharacterDirection;
-Landroid/icu/lang/UScript$ScriptUsage;
-Landroid/icu/lang/UScript;
-Landroid/icu/math/BigDecimal;
-Landroid/icu/math/MathContext;
 Landroid/icu/number/CurrencyPrecision;
-Landroid/icu/number/CurrencyRounder;
-Landroid/icu/number/FormattedNumber;
 Landroid/icu/number/FractionPrecision;
-Landroid/icu/number/FractionRounder;
+Landroid/icu/number/IntegerWidth;
+Landroid/icu/number/LocalizedNumberFormatter;
+Landroid/icu/number/NumberFormatter$DecimalSeparatorDisplay;
+Landroid/icu/number/NumberFormatter$SignDisplay;
+Landroid/icu/number/NumberFormatter;
 Landroid/icu/number/NumberFormatterSettings;
+Landroid/icu/number/NumberPropertyMapper;
 Landroid/icu/number/Precision$CurrencyRounderImpl;
 Landroid/icu/number/Precision$FracSigRounderImpl;
 Landroid/icu/number/Precision$FractionRounderImpl;
+Landroid/icu/number/Precision$IncrementFiveRounderImpl;
 Landroid/icu/number/Precision$IncrementRounderImpl;
 Landroid/icu/number/Precision$InfiniteRounderImpl;
 Landroid/icu/number/Precision$PassThroughRounderImpl;
 Landroid/icu/number/Precision$SignificantRounderImpl;
 Landroid/icu/number/Precision;
-Landroid/icu/number/Rounder;
 Landroid/icu/number/UnlocalizedNumberFormatter;
-Landroid/icu/text/AlphabeticIndex$1;
-Landroid/icu/text/AlphabeticIndex$Bucket;
-Landroid/icu/text/AlphabeticIndex$BucketList;
-Landroid/icu/text/AlphabeticIndex$ImmutableIndex;
-Landroid/icu/text/Bidi$ImpTabPair;
-Landroid/icu/text/Bidi;
 Landroid/icu/text/BidiClassifier;
 Landroid/icu/text/BreakIterator$BreakIteratorCache;
 Landroid/icu/text/BreakIterator$BreakIteratorServiceShim;
@@ -34220,186 +25117,63 @@
 Landroid/icu/text/BreakIteratorFactory$BFService$1RBBreakIteratorFactory;
 Landroid/icu/text/BreakIteratorFactory$BFService;
 Landroid/icu/text/BreakIteratorFactory;
-Landroid/icu/text/CaseMap$Title;
-Landroid/icu/text/CaseMap$Upper;
-Landroid/icu/text/CaseMap;
-Landroid/icu/text/Collator$ServiceShim;
-Landroid/icu/text/Collator;
-Landroid/icu/text/CollatorServiceShim$CService$1CollatorFactory;
-Landroid/icu/text/CollatorServiceShim$CService;
-Landroid/icu/text/CollatorServiceShim;
 Landroid/icu/text/CurrencyDisplayNames;
 Landroid/icu/text/CurrencyMetaInfo$CurrencyDigits;
 Landroid/icu/text/CurrencyMetaInfo$CurrencyFilter;
 Landroid/icu/text/CurrencyMetaInfo;
-Landroid/icu/text/DateFormat$BooleanAttribute;
-Landroid/icu/text/DateFormat$Field;
-Landroid/icu/text/DateFormat;
-Landroid/icu/text/DateFormatSymbols$1;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink$AliasType;
-Landroid/icu/text/DateFormatSymbols$CalendarDataSink;
-Landroid/icu/text/DateFormatSymbols$CapitalizationContextUsage;
-Landroid/icu/text/DateFormatSymbols;
-Landroid/icu/text/DateIntervalFormat$BestMatchInfo;
-Landroid/icu/text/DateIntervalFormat;
-Landroid/icu/text/DateIntervalInfo$DateIntervalSink;
-Landroid/icu/text/DateIntervalInfo$PatternInfo;
-Landroid/icu/text/DateIntervalInfo;
-Landroid/icu/text/DateTimePatternGenerator$AppendItemFormatsSink;
-Landroid/icu/text/DateTimePatternGenerator$AppendItemNamesSink;
-Landroid/icu/text/DateTimePatternGenerator$AvailableFormatsSink;
-Landroid/icu/text/DateTimePatternGenerator$DTPGflags;
-Landroid/icu/text/DateTimePatternGenerator$DateTimeMatcher;
-Landroid/icu/text/DateTimePatternGenerator$DayPeriodAllowedHoursSink;
-Landroid/icu/text/DateTimePatternGenerator$DisplayWidth;
-Landroid/icu/text/DateTimePatternGenerator$DistanceInfo;
-Landroid/icu/text/DateTimePatternGenerator$FormatParser;
-Landroid/icu/text/DateTimePatternGenerator$PatternInfo;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithMatcher;
-Landroid/icu/text/DateTimePatternGenerator$PatternWithSkeletonFlag;
-Landroid/icu/text/DateTimePatternGenerator$SkeletonFields;
-Landroid/icu/text/DateTimePatternGenerator$VariableField;
-Landroid/icu/text/DateTimePatternGenerator;
 Landroid/icu/text/DecimalFormat;
 Landroid/icu/text/DecimalFormatSymbols$1;
 Landroid/icu/text/DecimalFormatSymbols$CacheData;
 Landroid/icu/text/DecimalFormatSymbols$DecFmtDataSink;
 Landroid/icu/text/DecimalFormatSymbols;
-Landroid/icu/text/DecimalFormat_ICU58_Android$Unit;
-Landroid/icu/text/DecimalFormat_ICU58_Android;
 Landroid/icu/text/DictionaryBreakEngine$DequeI;
 Landroid/icu/text/DictionaryBreakEngine;
-Landroid/icu/text/DigitList_Android;
 Landroid/icu/text/DisplayContext$Type;
 Landroid/icu/text/DisplayContext;
-Landroid/icu/text/Edits;
-Landroid/icu/text/IDNA;
 Landroid/icu/text/LanguageBreakEngine;
 Landroid/icu/text/Normalizer$FCDMode;
 Landroid/icu/text/Normalizer$Mode;
-Landroid/icu/text/Normalizer$ModeImpl;
 Landroid/icu/text/Normalizer$NFCMode;
 Landroid/icu/text/Normalizer$NFDMode;
 Landroid/icu/text/Normalizer$NFKCMode;
 Landroid/icu/text/Normalizer$NFKDMode;
-Landroid/icu/text/Normalizer$NFKDModeImpl;
 Landroid/icu/text/Normalizer$NONEMode;
 Landroid/icu/text/Normalizer$QuickCheckResult;
-Landroid/icu/text/Normalizer2;
 Landroid/icu/text/Normalizer;
-Landroid/icu/text/NumberFormat$Field;
-Landroid/icu/text/NumberFormat$NumberFormatShim;
 Landroid/icu/text/NumberFormat;
-Landroid/icu/text/NumberFormatServiceShim$NFService$1RBNumberFormatFactory;
-Landroid/icu/text/NumberFormatServiceShim$NFService;
 Landroid/icu/text/NumberingSystem$1;
 Landroid/icu/text/NumberingSystem$2;
 Landroid/icu/text/NumberingSystem$LocaleLookupData;
 Landroid/icu/text/NumberingSystem;
-Landroid/icu/text/PluralRanges$Matrix;
-Landroid/icu/text/PluralRanges;
-Landroid/icu/text/PluralRules$1;
-Landroid/icu/text/PluralRules$2;
-Landroid/icu/text/PluralRules$AndConstraint;
-Landroid/icu/text/PluralRules$BinaryConstraint;
-Landroid/icu/text/PluralRules$Constraint;
-Landroid/icu/text/PluralRules$Factory;
-Landroid/icu/text/PluralRules$FixedDecimal;
-Landroid/icu/text/PluralRules$FixedDecimalRange;
-Landroid/icu/text/PluralRules$FixedDecimalSamples;
-Landroid/icu/text/PluralRules$IFixedDecimal;
-Landroid/icu/text/PluralRules$Operand;
-Landroid/icu/text/PluralRules$PluralType;
-Landroid/icu/text/PluralRules$RangeConstraint;
-Landroid/icu/text/PluralRules$Rule;
-Landroid/icu/text/PluralRules$RuleList;
-Landroid/icu/text/PluralRules$SampleType;
-Landroid/icu/text/PluralRules$SimpleTokenizer;
-Landroid/icu/text/PluralRules;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache$1;
-Landroid/icu/text/RelativeDateTimeFormatter$Cache;
-Landroid/icu/text/RelativeDateTimeFormatter$Loader;
-Landroid/icu/text/RelativeDateTimeFormatter$RelDateTimeDataSink;
-Landroid/icu/text/Replaceable;
-Landroid/icu/text/ReplaceableString;
 Landroid/icu/text/RuleBasedBreakIterator$BreakCache;
 Landroid/icu/text/RuleBasedBreakIterator$DictionaryCache;
 Landroid/icu/text/RuleBasedBreakIterator$LookAheadResults;
 Landroid/icu/text/RuleBasedBreakIterator;
-Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-Landroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator$NFDIterator;
-Landroid/icu/text/RuleBasedCollator$UTF16NFDIterator;
-Landroid/icu/text/RuleBasedCollator;
-Landroid/icu/text/SimpleDateFormat$PatternItem;
-Landroid/icu/text/SimpleDateFormat;
-Landroid/icu/text/StringPrep;
 Landroid/icu/text/StringPrepParseException;
-Landroid/icu/text/TimeZoneNames$Cache;
-Landroid/icu/text/TimeZoneNames$Factory;
+Landroid/icu/text/StringTransform;
 Landroid/icu/text/TimeZoneNames$NameType;
-Landroid/icu/text/TimeZoneNames;
-Landroid/icu/text/UCharacterIterator;
-Landroid/icu/text/UFieldPosition;
+Landroid/icu/text/Transform;
+Landroid/icu/text/Transliterator;
 Landroid/icu/text/UFormat;
-Landroid/icu/text/UForwardCharacterIterator;
-Landroid/icu/text/UTF16$StringComparator;
 Landroid/icu/text/UTF16;
 Landroid/icu/text/UnhandledBreakEngine;
 Landroid/icu/text/UnicodeFilter;
 Landroid/icu/text/UnicodeMatcher;
-Landroid/icu/text/UnicodeSet$Filter;
-Landroid/icu/text/UnicodeSet$GeneralCategoryMaskFilter;
-Landroid/icu/text/UnicodeSet$IntPropertyFilter;
-Landroid/icu/text/UnicodeSet$UnicodeSetIterator2;
 Landroid/icu/text/UnicodeSet;
-Landroid/icu/util/AnnualTimeZoneRule;
-Landroid/icu/util/BasicTimeZone;
-Landroid/icu/util/BytesTrie$Result;
-Landroid/icu/util/BytesTrie;
-Landroid/icu/util/Calendar$1;
-Landroid/icu/util/Calendar$FormatConfiguration;
-Landroid/icu/util/Calendar$PatternData;
-Landroid/icu/util/Calendar$WeekData;
-Landroid/icu/util/Calendar$WeekDataCache;
-Landroid/icu/util/Calendar;
-Landroid/icu/util/CharsTrie$Entry;
-Landroid/icu/util/CharsTrie$Iterator;
-Landroid/icu/util/CodePointMap$Range;
-Landroid/icu/util/CodePointMap$RangeOption;
-Landroid/icu/util/CodePointMap$ValueFilter;
-Landroid/icu/util/CodePointMap;
-Landroid/icu/util/CodePointTrie$1;
-Landroid/icu/util/CodePointTrie$Data16;
-Landroid/icu/util/CodePointTrie$Data;
-Landroid/icu/util/CodePointTrie$Fast16;
-Landroid/icu/util/CodePointTrie$Fast;
-Landroid/icu/util/CodePointTrie$Type;
-Landroid/icu/util/CodePointTrie$ValueWidth;
-Landroid/icu/util/CodePointTrie;
 Landroid/icu/util/Currency$1;
 Landroid/icu/util/Currency$CurrencyUsage;
 Landroid/icu/util/Currency;
-Landroid/icu/util/DateTimeRule;
 Landroid/icu/util/Freezable;
-Landroid/icu/util/GregorianCalendar;
-Landroid/icu/util/InitialTimeZoneRule;
 Landroid/icu/util/MeasureUnit$1;
 Landroid/icu/util/MeasureUnit$2;
 Landroid/icu/util/MeasureUnit$3;
 Landroid/icu/util/MeasureUnit$4;
 Landroid/icu/util/MeasureUnit$Factory;
 Landroid/icu/util/MeasureUnit;
-Landroid/icu/util/Output;
-Landroid/icu/util/STZInfo;
-Landroid/icu/util/SimpleTimeZone;
-Landroid/icu/util/TimeArrayTimeZoneRule;
 Landroid/icu/util/TimeUnit;
 Landroid/icu/util/TimeZone$ConstantZone;
 Landroid/icu/util/TimeZone$SystemTimeZoneType;
 Landroid/icu/util/TimeZone;
-Landroid/icu/util/TimeZoneRule;
-Landroid/icu/util/TimeZoneTransition;
 Landroid/icu/util/ULocale$1;
 Landroid/icu/util/ULocale$2;
 Landroid/icu/util/ULocale$3;
@@ -34410,40 +25184,76 @@
 Landroid/icu/util/UResourceBundle$1;
 Landroid/icu/util/UResourceBundle$RootType;
 Landroid/icu/util/UResourceBundle;
-Landroid/icu/util/UResourceBundleIterator;
 Landroid/icu/util/UResourceTypeMismatchException;
 Landroid/icu/util/VersionInfo;
+Landroid/inputmethodservice/-$$Lambda$InputMethodService$8T9TmAUIN7vW9eU6kTg8309_d4E;
+Landroid/inputmethodservice/-$$Lambda$InputMethodService$wp8DeVGx_WDOPw4F6an7QbwVxf0;
+Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;
+Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;
+Landroid/inputmethodservice/AbstractInputMethodService;
+Landroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;
+Landroid/inputmethodservice/IInputMethodSessionWrapper;
+Landroid/inputmethodservice/IInputMethodWrapper$InputMethodSessionCallbackWrapper;
+Landroid/inputmethodservice/IInputMethodWrapper;
+Landroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;
+Landroid/inputmethodservice/InputMethodService$Insets;
+Landroid/inputmethodservice/InputMethodService$SettingsObserver;
+Landroid/inputmethodservice/InputMethodService;
 Landroid/inputmethodservice/SoftInputWindow;
+Landroid/internal/hidl/base/V1_0/DebugInfo;
 Landroid/internal/hidl/base/V1_0/IBase;
 Landroid/location/Address$1;
 Landroid/location/Address;
-Landroid/location/BatchedLocationCallbackTransport$CallbackTransport;
-Landroid/location/BatchedLocationCallbackTransport;
 Landroid/location/Country$1;
+Landroid/location/Country;
+Landroid/location/CountryDetector$ListenerTransport;
 Landroid/location/CountryDetector;
 Landroid/location/CountryListener;
 Landroid/location/Criteria$1;
+Landroid/location/Criteria;
 Landroid/location/Geocoder;
 Landroid/location/GeocoderParams$1;
 Landroid/location/GeocoderParams;
-Landroid/location/GnssMeasurementCallbackTransport$ListenerTransport;
-Landroid/location/GnssMeasurementCallbackTransport;
-Landroid/location/GnssNavigationMessageCallbackTransport$ListenerTransport;
-Landroid/location/GnssNavigationMessageCallbackTransport;
+Landroid/location/Geofence$1;
+Landroid/location/Geofence;
+Landroid/location/GnssClock$1;
+Landroid/location/GnssClock;
+Landroid/location/GnssMeasurement$1;
+Landroid/location/GnssMeasurement;
+Landroid/location/GnssMeasurementCorrections$1;
+Landroid/location/GnssMeasurementCorrections;
 Landroid/location/GpsStatus$Listener;
+Landroid/location/IBatchedLocationCallback$Stub$Proxy;
 Landroid/location/IBatchedLocationCallback$Stub;
 Landroid/location/IBatchedLocationCallback;
 Landroid/location/ICountryDetector$Stub$Proxy;
 Landroid/location/ICountryDetector$Stub;
 Landroid/location/ICountryDetector;
+Landroid/location/ICountryListener$Stub$Proxy;
+Landroid/location/ICountryListener$Stub;
+Landroid/location/ICountryListener;
+Landroid/location/IFusedGeofenceHardware$Stub$Proxy;
+Landroid/location/IFusedGeofenceHardware$Stub;
+Landroid/location/IFusedGeofenceHardware;
+Landroid/location/IGeocodeProvider$Stub$Proxy;
+Landroid/location/IGeocodeProvider$Stub;
+Landroid/location/IGeocodeProvider;
+Landroid/location/IGeofenceProvider$Stub$Proxy;
+Landroid/location/IGeofenceProvider$Stub;
+Landroid/location/IGeofenceProvider;
+Landroid/location/IGnssMeasurementsListener$Stub$Proxy;
 Landroid/location/IGnssMeasurementsListener$Stub;
 Landroid/location/IGnssMeasurementsListener;
+Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;
 Landroid/location/IGnssNavigationMessageListener$Stub;
 Landroid/location/IGnssNavigationMessageListener;
+Landroid/location/IGnssStatusListener$Stub$Proxy;
 Landroid/location/IGnssStatusListener$Stub;
 Landroid/location/IGnssStatusListener;
+Landroid/location/IGpsGeofenceHardware$Stub$Proxy;
 Landroid/location/IGpsGeofenceHardware$Stub;
 Landroid/location/IGpsGeofenceHardware;
+Landroid/location/ILocationListener$Stub$Proxy;
 Landroid/location/ILocationListener$Stub;
 Landroid/location/ILocationListener;
 Landroid/location/ILocationManager$Stub$Proxy;
@@ -34451,29 +25261,29 @@
 Landroid/location/ILocationManager;
 Landroid/location/INetInitiatedListener$Stub;
 Landroid/location/INetInitiatedListener;
-Landroid/location/LocalListenerHelper;
 Landroid/location/Location$1;
 Landroid/location/Location$2;
 Landroid/location/Location$BearingDistanceCache;
 Landroid/location/Location;
 Landroid/location/LocationListener;
-Landroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;
-Landroid/location/LocationManager$GnssStatusListenerTransport;
-Landroid/location/LocationManager$ListenerTransport$1;
-Landroid/location/LocationManager$ListenerTransport$2;
-Landroid/location/LocationManager$ListenerTransport;
 Landroid/location/LocationManager;
 Landroid/location/LocationProvider;
 Landroid/location/LocationRequest$1;
 Landroid/location/LocationRequest;
+Landroid/media/-$$Lambda$MediaCodecInfo$VideoCapabilities$DpgwEn-gVFZT9EtP3qcxpiA2G0M;
 Landroid/media/AudioAttributes$1;
 Landroid/media/AudioAttributes$Builder;
 Landroid/media/AudioAttributes;
+Landroid/media/AudioDeviceAddress$1;
+Landroid/media/AudioDeviceAddress;
 Landroid/media/AudioDeviceCallback;
 Landroid/media/AudioDeviceInfo;
 Landroid/media/AudioDevicePort;
 Landroid/media/AudioDevicePortConfig;
+Landroid/media/AudioFocusInfo$1;
+Landroid/media/AudioFocusInfo;
 Landroid/media/AudioFocusRequest$Builder;
+Landroid/media/AudioFocusRequest;
 Landroid/media/AudioFormat$1;
 Landroid/media/AudioFormat$Builder;
 Landroid/media/AudioFormat;
@@ -34486,12 +25296,14 @@
 Landroid/media/AudioManager$4;
 Landroid/media/AudioManager$AudioPlaybackCallback;
 Landroid/media/AudioManager$AudioPlaybackCallbackInfo;
+Landroid/media/AudioManager$BlockingFocusResultReceiver;
 Landroid/media/AudioManager$FocusRequestInfo;
 Landroid/media/AudioManager$NativeEventHandlerDelegate$1;
 Landroid/media/AudioManager$NativeEventHandlerDelegate;
 Landroid/media/AudioManager$OnAmPortUpdateListener;
 Landroid/media/AudioManager$OnAudioFocusChangeListener;
 Landroid/media/AudioManager$OnAudioPortUpdateListener;
+Landroid/media/AudioManager$SafeWaitObject;
 Landroid/media/AudioManager$ServiceEventHandlerDelegate$1;
 Landroid/media/AudioManager$ServiceEventHandlerDelegate;
 Landroid/media/AudioManager;
@@ -34513,6 +25325,8 @@
 Landroid/media/AudioRecordRoutingProxy;
 Landroid/media/AudioRecordingMonitor;
 Landroid/media/AudioRecordingMonitorClient;
+Landroid/media/AudioRecordingMonitorImpl$1;
+Landroid/media/AudioRecordingMonitorImpl;
 Landroid/media/AudioRoutesInfo$1;
 Landroid/media/AudioRoutesInfo;
 Landroid/media/AudioRouting;
@@ -34530,12 +25344,16 @@
 Landroid/media/ExifInterface$ByteOrderedDataInputStream;
 Landroid/media/ExifInterface$ExifAttribute;
 Landroid/media/ExifInterface$ExifTag;
+Landroid/media/ExifInterface$Rational;
 Landroid/media/ExifInterface;
+Landroid/media/ExternalRingtonesCursorWrapper;
+Landroid/media/IAudioFocusDispatcher$Stub$Proxy;
 Landroid/media/IAudioFocusDispatcher$Stub;
 Landroid/media/IAudioFocusDispatcher;
 Landroid/media/IAudioRoutesObserver$Stub$Proxy;
 Landroid/media/IAudioRoutesObserver$Stub;
 Landroid/media/IAudioRoutesObserver;
+Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;
 Landroid/media/IAudioServerStateDispatcher$Stub;
 Landroid/media/IAudioServerStateDispatcher;
 Landroid/media/IAudioService$Stub$Proxy;
@@ -34543,21 +25361,32 @@
 Landroid/media/IAudioService;
 Landroid/media/IMediaHTTPConnection$Stub;
 Landroid/media/IMediaHTTPConnection;
+Landroid/media/IMediaHTTPService$Stub;
+Landroid/media/IMediaHTTPService;
 Landroid/media/IMediaResourceMonitor$Stub;
 Landroid/media/IMediaResourceMonitor;
+Landroid/media/IMediaRouter2Client$Stub$Proxy;
+Landroid/media/IMediaRouter2Client$Stub;
+Landroid/media/IMediaRouter2Client;
+Landroid/media/IMediaRouter2Manager$Stub$Proxy;
+Landroid/media/IMediaRouter2Manager$Stub;
+Landroid/media/IMediaRouter2Manager;
 Landroid/media/IMediaRouterClient$Stub$Proxy;
 Landroid/media/IMediaRouterClient$Stub;
 Landroid/media/IMediaRouterClient;
 Landroid/media/IMediaRouterService$Stub$Proxy;
 Landroid/media/IMediaRouterService$Stub;
 Landroid/media/IMediaRouterService;
+Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;
 Landroid/media/IPlaybackConfigDispatcher$Stub;
 Landroid/media/IPlaybackConfigDispatcher;
 Landroid/media/IPlayer$Stub$Proxy;
 Landroid/media/IPlayer$Stub;
 Landroid/media/IPlayer;
+Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;
 Landroid/media/IRecordingConfigDispatcher$Stub;
 Landroid/media/IRecordingConfigDispatcher;
+Landroid/media/IRemoteVolumeController$Stub$Proxy;
 Landroid/media/IRemoteVolumeController$Stub;
 Landroid/media/IRemoteVolumeController;
 Landroid/media/IRemoteVolumeObserver$Stub;
@@ -34565,6 +25394,7 @@
 Landroid/media/IRingtonePlayer$Stub$Proxy;
 Landroid/media/IRingtonePlayer$Stub;
 Landroid/media/IRingtonePlayer;
+Landroid/media/IVolumeController$Stub$Proxy;
 Landroid/media/IVolumeController$Stub;
 Landroid/media/IVolumeController;
 Landroid/media/Image$Plane;
@@ -34577,6 +25407,7 @@
 Landroid/media/ImageWriter;
 Landroid/media/JetPlayer;
 Landroid/media/MediaCodec$BufferInfo;
+Landroid/media/MediaCodec$BufferMap$CodecBuffer;
 Landroid/media/MediaCodec$BufferMap;
 Landroid/media/MediaCodec$CodecException;
 Landroid/media/MediaCodec$CryptoException;
@@ -34590,6 +25421,7 @@
 Landroid/media/MediaCodecInfo$CodecProfileLevel;
 Landroid/media/MediaCodecInfo$EncoderCapabilities;
 Landroid/media/MediaCodecInfo$Feature;
+Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;
 Landroid/media/MediaCodecInfo$VideoCapabilities;
 Landroid/media/MediaCodecInfo;
 Landroid/media/MediaCodecList;
@@ -34599,6 +25431,7 @@
 Landroid/media/MediaDescription;
 Landroid/media/MediaDrm$Certificate;
 Landroid/media/MediaDrm$KeyRequest;
+Landroid/media/MediaDrm$KeyStatus;
 Landroid/media/MediaDrm$MediaDrmStateException;
 Landroid/media/MediaDrm$ProvisionRequest;
 Landroid/media/MediaDrm$SessionException;
@@ -34607,17 +25440,23 @@
 Landroid/media/MediaExtractor;
 Landroid/media/MediaFormat;
 Landroid/media/MediaHTTPConnection;
+Landroid/media/MediaHTTPService;
 Landroid/media/MediaMetadata$1;
 Landroid/media/MediaMetadata$Builder;
 Landroid/media/MediaMetadata;
 Landroid/media/MediaMetadataRetriever$BitmapParams;
 Landroid/media/MediaMetadataRetriever;
+Landroid/media/MediaMetrics;
 Landroid/media/MediaMuxer;
 Landroid/media/MediaPlayer$1;
 Landroid/media/MediaPlayer$2$1;
 Landroid/media/MediaPlayer$2;
 Landroid/media/MediaPlayer$3;
+Landroid/media/MediaPlayer$6;
 Landroid/media/MediaPlayer$7;
+Landroid/media/MediaPlayer$DrmInfo;
+Landroid/media/MediaPlayer$EventHandler$1;
+Landroid/media/MediaPlayer$EventHandler$2;
 Landroid/media/MediaPlayer$EventHandler;
 Landroid/media/MediaPlayer$OnCompletionListener;
 Landroid/media/MediaPlayer$OnErrorListener;
@@ -34627,11 +25466,15 @@
 Landroid/media/MediaPlayer$TimeProvider$EventHandler;
 Landroid/media/MediaPlayer$TimeProvider;
 Landroid/media/MediaPlayer$TrackInfo$1;
+Landroid/media/MediaPlayer$TrackInfo;
 Landroid/media/MediaPlayer;
 Landroid/media/MediaRecorder;
+Landroid/media/MediaRoute2Info$1;
+Landroid/media/MediaRoute2Info;
 Landroid/media/MediaRouter$Callback;
 Landroid/media/MediaRouter$CallbackInfo;
 Landroid/media/MediaRouter$RouteCategory;
+Landroid/media/MediaRouter$RouteGroup;
 Landroid/media/MediaRouter$RouteInfo$1;
 Landroid/media/MediaRouter$RouteInfo;
 Landroid/media/MediaRouter$SimpleCallback;
@@ -34647,6 +25490,9 @@
 Landroid/media/MediaRouter$WifiDisplayStatusChangedReceiver;
 Landroid/media/MediaRouter;
 Landroid/media/MediaRouterClientState$1;
+Landroid/media/MediaRouterClientState$RouteInfo$1;
+Landroid/media/MediaRouterClientState$RouteInfo;
+Landroid/media/MediaRouterClientState;
 Landroid/media/MediaScanner;
 Landroid/media/MediaScannerConnection$MediaScannerConnectionClient;
 Landroid/media/MediaScannerConnection$OnScanCompletedListener;
@@ -34657,6 +25503,7 @@
 Landroid/media/MicrophoneDirection;
 Landroid/media/MicrophoneInfo$Coordinate3F;
 Landroid/media/MicrophoneInfo;
+Landroid/media/NativeRoutingEventHandlerDelegate;
 Landroid/media/NotProvisionedException;
 Landroid/media/PlaybackParams$1;
 Landroid/media/PlaybackParams;
@@ -34666,18 +25513,26 @@
 Landroid/media/PlayerBase$PlayerIdCard;
 Landroid/media/PlayerBase;
 Landroid/media/Rating$1;
+Landroid/media/Rating;
 Landroid/media/RemoteDisplay;
 Landroid/media/ResampleInputStream;
 Landroid/media/Ringtone$MyOnCompletionListener;
+Landroid/media/Ringtone;
 Landroid/media/RingtoneManager;
 Landroid/media/SoundPool$Builder;
 Landroid/media/SoundPool$EventHandler;
 Landroid/media/SoundPool$OnLoadCompleteListener;
 Landroid/media/SoundPool;
 Landroid/media/SubtitleController$1;
+Landroid/media/SubtitleController$2;
 Landroid/media/SubtitleController$Anchor;
 Landroid/media/SubtitleController$Listener;
+Landroid/media/SubtitleController;
+Landroid/media/SubtitleData;
+Landroid/media/SubtitleTrack;
 Landroid/media/SyncParams;
+Landroid/media/TimedMetaData;
+Landroid/media/TimedText;
 Landroid/media/ToneGenerator;
 Landroid/media/Utils$1;
 Landroid/media/Utils$2;
@@ -34697,8 +25552,8 @@
 Landroid/media/audiopolicy/AudioMix;
 Landroid/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion;
 Landroid/media/audiopolicy/AudioMixingRule;
-Landroid/media/audiopolicy/AudioProductStrategies$1;
-Landroid/media/audiopolicy/AudioProductStrategies;
+Landroid/media/audiopolicy/AudioPolicyConfig$1;
+Landroid/media/audiopolicy/AudioPolicyConfig;
 Landroid/media/audiopolicy/AudioProductStrategy$1;
 Landroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup$1;
 Landroid/media/audiopolicy/AudioProductStrategy$AudioAttributesGroup;
@@ -34706,8 +25561,9 @@
 Landroid/media/audiopolicy/AudioVolumeGroup$1;
 Landroid/media/audiopolicy/AudioVolumeGroup;
 Landroid/media/audiopolicy/AudioVolumeGroupChangeHandler;
-Landroid/media/audiopolicy/AudioVolumeGroups$1;
-Landroid/media/audiopolicy/AudioVolumeGroups;
+Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;
+Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;
+Landroid/media/audiopolicy/IAudioPolicyCallback;
 Landroid/media/browse/MediaBrowser$1;
 Landroid/media/browse/MediaBrowser$2;
 Landroid/media/browse/MediaBrowser$6;
@@ -34729,17 +25585,29 @@
 Landroid/media/midi/MidiDeviceInfo$1;
 Landroid/media/midi/MidiDeviceInfo;
 Landroid/media/midi/MidiManager;
+Landroid/media/projection/IMediaProjection$Stub$Proxy;
+Landroid/media/projection/IMediaProjection$Stub;
+Landroid/media/projection/IMediaProjection;
+Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;
 Landroid/media/projection/IMediaProjectionManager$Stub;
 Landroid/media/projection/IMediaProjectionManager;
+Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;
 Landroid/media/projection/IMediaProjectionWatcherCallback$Stub;
 Landroid/media/projection/IMediaProjectionWatcherCallback;
+Landroid/media/projection/MediaProjectionManager$CallbackDelegate;
 Landroid/media/projection/MediaProjectionManager;
+Landroid/media/session/-$$Lambda$MediaSessionManager$IEuWPZ528guBgmyKPMUWhBwnMCE;
+Landroid/media/session/IActiveSessionsListener$Stub$Proxy;
 Landroid/media/session/IActiveSessionsListener$Stub;
 Landroid/media/session/IActiveSessionsListener;
-Landroid/media/session/ICallback$Stub;
-Landroid/media/session/ICallback;
+Landroid/media/session/IOnMediaKeyEventDispatchedListener$Stub;
+Landroid/media/session/IOnMediaKeyEventDispatchedListener;
+Landroid/media/session/IOnMediaKeyEventSessionChangedListener$Stub;
+Landroid/media/session/IOnMediaKeyEventSessionChangedListener;
+Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;
 Landroid/media/session/IOnMediaKeyListener$Stub;
 Landroid/media/session/IOnMediaKeyListener;
+Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;
 Landroid/media/session/IOnVolumeKeyLongPressListener$Stub;
 Landroid/media/session/IOnVolumeKeyLongPressListener;
 Landroid/media/session/ISession$Stub$Proxy;
@@ -34748,11 +25616,13 @@
 Landroid/media/session/ISession2TokensListener$Stub;
 Landroid/media/session/ISession2TokensListener;
 Landroid/media/session/ISession;
+Landroid/media/session/ISessionCallback$Stub$Proxy;
 Landroid/media/session/ISessionCallback$Stub;
 Landroid/media/session/ISessionCallback;
 Landroid/media/session/ISessionController$Stub$Proxy;
 Landroid/media/session/ISessionController$Stub;
 Landroid/media/session/ISessionController;
+Landroid/media/session/ISessionControllerCallback$Stub$Proxy;
 Landroid/media/session/ISessionControllerCallback$Stub;
 Landroid/media/session/ISessionControllerCallback;
 Landroid/media/session/ISessionManager$Stub$Proxy;
@@ -34761,6 +25631,8 @@
 Landroid/media/session/MediaController$Callback;
 Landroid/media/session/MediaController$CallbackStub;
 Landroid/media/session/MediaController$MessageHandler;
+Landroid/media/session/MediaController$PlaybackInfo$1;
+Landroid/media/session/MediaController$PlaybackInfo;
 Landroid/media/session/MediaController$TransportControls;
 Landroid/media/session/MediaController;
 Landroid/media/session/MediaSession$Callback;
@@ -34771,10 +25643,12 @@
 Landroid/media/session/MediaSession$Token$1;
 Landroid/media/session/MediaSession$Token;
 Landroid/media/session/MediaSession;
-Landroid/media/session/MediaSessionManager$Callback;
-Landroid/media/session/MediaSessionManager$CallbackImpl$4;
-Landroid/media/session/MediaSessionManager$CallbackImpl;
+Landroid/media/session/MediaSessionManager$1;
 Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;
+Landroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListener;
+Landroid/media/session/MediaSessionManager$OnMediaKeyEventDispatchedListenerStub;
+Landroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListener;
+Landroid/media/session/MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub;
 Landroid/media/session/MediaSessionManager$OnMediaKeyListener;
 Landroid/media/session/MediaSessionManager$OnMediaKeyListenerImpl;
 Landroid/media/session/MediaSessionManager$OnSession2TokensChangedListener;
@@ -34794,9 +25668,12 @@
 Landroid/media/soundtrigger/SoundTriggerManager;
 Landroid/media/tv/TvInputHardwareInfo$Builder;
 Landroid/media/tv/TvInputManager;
+Landroid/media/tv/TvStreamConfig$1;
 Landroid/media/tv/TvStreamConfig$Builder;
 Landroid/media/tv/TvStreamConfig;
 Landroid/metrics/LogMaker;
+Landroid/mtp/MtpDatabase$1;
+Landroid/mtp/MtpDatabase$2;
 Landroid/mtp/MtpDatabase;
 Landroid/mtp/MtpDevice;
 Landroid/mtp/MtpDeviceInfo;
@@ -34807,37 +25684,68 @@
 Landroid/mtp/MtpServer;
 Landroid/mtp/MtpStorage;
 Landroid/mtp/MtpStorageInfo;
+Landroid/mtp/MtpStorageManager$MtpNotifier;
+Landroid/mtp/MtpStorageManager$MtpObject;
+Landroid/mtp/MtpStorageManager;
 Landroid/net/-$$Lambda$FpGXkd3pLxeXY58eJ_84mi1PLWQ;
+Landroid/net/-$$Lambda$Network$KD6DxaMRJIcajhj36TU1K7lJnHQ;
+Landroid/net/-$$Lambda$NetworkStats$xvFSsVoR0k5s7Fhw1yPDPVIpx8A;
 Landroid/net/-$$Lambda$p1_56lwnt1xBuY1muPblbN1Dtkw;
+Landroid/net/ConnectionInfo$1;
+Landroid/net/ConnectionInfo;
+Landroid/net/ConnectivityManager$1;
+Landroid/net/ConnectivityManager$2;
+Landroid/net/ConnectivityManager$3;
 Landroid/net/ConnectivityManager$CallbackHandler;
+Landroid/net/ConnectivityManager$LegacyRequest;
 Landroid/net/ConnectivityManager$NetworkCallback;
 Landroid/net/ConnectivityManager$OnNetworkActiveListener;
+Landroid/net/ConnectivityManager$OnStartTetheringCallback;
+Landroid/net/ConnectivityManager$OnTetheringEntitlementResultListener;
+Landroid/net/ConnectivityManager$OnTetheringEventCallback;
+Landroid/net/ConnectivityManager$PacketKeepalive;
+Landroid/net/ConnectivityManager$PacketKeepaliveCallback;
+Landroid/net/ConnectivityManager$TooManyRequestsException;
 Landroid/net/ConnectivityManager;
+Landroid/net/ConnectivityMetricsEvent$1;
 Landroid/net/ConnectivityMetricsEvent;
 Landroid/net/ConnectivityThread$Singleton;
 Landroid/net/ConnectivityThread;
 Landroid/net/Credentials;
+Landroid/net/DataUsageRequest$1;
+Landroid/net/DataUsageRequest;
 Landroid/net/DhcpInfo$1;
+Landroid/net/DhcpInfo;
+Landroid/net/DhcpResults$1;
 Landroid/net/DhcpResults;
 Landroid/net/EthernetManager;
+Landroid/net/EventLogTags;
 Landroid/net/IConnectivityManager$Stub$Proxy;
 Landroid/net/IConnectivityManager$Stub;
 Landroid/net/IConnectivityManager;
 Landroid/net/IEthernetManager$Stub;
 Landroid/net/IEthernetManager;
+Landroid/net/IIpConnectivityMetrics$Stub$Proxy;
 Landroid/net/IIpConnectivityMetrics$Stub;
 Landroid/net/IIpConnectivityMetrics;
 Landroid/net/IIpSecService$Stub;
 Landroid/net/IIpSecService;
+Landroid/net/INetdEventCallback$Stub$Proxy;
 Landroid/net/INetdEventCallback$Stub;
 Landroid/net/INetdEventCallback;
+Landroid/net/INetworkManagementEventObserver$Stub$Proxy;
 Landroid/net/INetworkManagementEventObserver$Stub;
 Landroid/net/INetworkManagementEventObserver;
+Landroid/net/INetworkPolicyListener$Stub$Proxy;
 Landroid/net/INetworkPolicyListener$Stub;
 Landroid/net/INetworkPolicyListener;
 Landroid/net/INetworkPolicyManager$Stub$Proxy;
 Landroid/net/INetworkPolicyManager$Stub;
 Landroid/net/INetworkPolicyManager;
+Landroid/net/INetworkRecommendationProvider$Stub$Proxy;
+Landroid/net/INetworkRecommendationProvider$Stub;
+Landroid/net/INetworkRecommendationProvider;
+Landroid/net/INetworkScoreCache$Stub$Proxy;
 Landroid/net/INetworkScoreCache$Stub;
 Landroid/net/INetworkScoreCache;
 Landroid/net/INetworkScoreService$Stub$Proxy;
@@ -34846,23 +25754,25 @@
 Landroid/net/INetworkStatsService$Stub$Proxy;
 Landroid/net/INetworkStatsService$Stub;
 Landroid/net/INetworkStatsService;
+Landroid/net/ISocketKeepaliveCallback$Stub$Proxy;
+Landroid/net/ISocketKeepaliveCallback$Stub;
+Landroid/net/ISocketKeepaliveCallback;
 Landroid/net/ITestNetworkManager$Stub;
 Landroid/net/ITestNetworkManager;
+Landroid/net/ITetheringStatsProvider$Stub$Proxy;
 Landroid/net/ITetheringStatsProvider$Stub;
 Landroid/net/ITetheringStatsProvider;
 Landroid/net/InterfaceConfiguration$1;
 Landroid/net/InterfaceConfiguration;
-Landroid/net/InterfaceConfigurationParcel$1;
-Landroid/net/InterfaceConfigurationParcel;
 Landroid/net/IpConfiguration$1;
 Landroid/net/IpConfiguration$IpAssignment;
 Landroid/net/IpConfiguration$ProxySettings;
 Landroid/net/IpConfiguration;
-Landroid/net/IpMemoryStore;
 Landroid/net/IpPrefix$1;
 Landroid/net/IpPrefix$2;
 Landroid/net/IpPrefix;
 Landroid/net/IpSecManager$SpiUnavailableException;
+Landroid/net/IpSecManager$UdpEncapsulationSocket;
 Landroid/net/IpSecManager;
 Landroid/net/KeepalivePacketData;
 Landroid/net/LinkAddress$1;
@@ -34880,6 +25790,7 @@
 Landroid/net/MacAddress;
 Landroid/net/MatchAllNetworkSpecifier$1;
 Landroid/net/MatchAllNetworkSpecifier;
+Landroid/net/NattSocketKeepalive;
 Landroid/net/Network$1;
 Landroid/net/Network$NetworkBoundSocketFactory;
 Landroid/net/Network;
@@ -34888,9 +25799,6 @@
 Landroid/net/NetworkCapabilities$NameOf;
 Landroid/net/NetworkCapabilities;
 Landroid/net/NetworkConfig;
-Landroid/net/NetworkFactory$NetworkRequestInfo;
-Landroid/net/NetworkFactory$SerialNumber;
-Landroid/net/NetworkFactory;
 Landroid/net/NetworkIdentity;
 Landroid/net/NetworkInfo$1;
 Landroid/net/NetworkInfo$DetailedState;
@@ -34898,11 +25806,13 @@
 Landroid/net/NetworkInfo;
 Landroid/net/NetworkKey$1;
 Landroid/net/NetworkKey;
-Landroid/net/NetworkMisc$1;
-Landroid/net/NetworkMisc;
+Landroid/net/NetworkPolicy$1;
 Landroid/net/NetworkPolicy;
+Landroid/net/NetworkPolicyManager$1;
 Landroid/net/NetworkPolicyManager$Listener;
 Landroid/net/NetworkPolicyManager;
+Landroid/net/NetworkProvider;
+Landroid/net/NetworkQuotaInfo;
 Landroid/net/NetworkRequest$1;
 Landroid/net/NetworkRequest$Builder;
 Landroid/net/NetworkRequest$Type;
@@ -34917,11 +25827,14 @@
 Landroid/net/NetworkStats;
 Landroid/net/NetworkStatsHistory$1;
 Landroid/net/NetworkStatsHistory$DataStreamUtils;
+Landroid/net/NetworkStatsHistory$Entry;
+Landroid/net/NetworkStatsHistory$ParcelUtils;
 Landroid/net/NetworkStatsHistory;
 Landroid/net/NetworkTemplate$1;
 Landroid/net/NetworkTemplate;
 Landroid/net/NetworkUtils;
 Landroid/net/NetworkWatchlistManager;
+Landroid/net/PacProxySelector;
 Landroid/net/ParseException;
 Landroid/net/PrivateDnsConnectivityChecker;
 Landroid/net/Proxy;
@@ -34929,28 +25842,29 @@
 Landroid/net/ProxyInfo;
 Landroid/net/RouteInfo$1;
 Landroid/net/RouteInfo;
+Landroid/net/RssiCurve$1;
+Landroid/net/RssiCurve;
 Landroid/net/SSLCertificateSocketFactory$1;
 Landroid/net/SSLCertificateSocketFactory;
 Landroid/net/SSLSessionCache;
 Landroid/net/ScoredNetwork$1;
 Landroid/net/ScoredNetwork;
+Landroid/net/SntpClient$InvalidServerReplyException;
+Landroid/net/SntpClient;
+Landroid/net/SocketKeepalive$Callback;
 Landroid/net/SocketKeepalive$ErrorCodeException;
-Landroid/net/SocketKeepalive$InvalidPacketException;
+Landroid/net/SocketKeepalive;
 Landroid/net/StaticIpConfiguration$1;
+Landroid/net/StaticIpConfiguration$Builder;
 Landroid/net/StaticIpConfiguration;
 Landroid/net/StringNetworkSpecifier$1;
 Landroid/net/StringNetworkSpecifier;
-Landroid/net/TcpKeepalivePacketData;
-Landroid/net/TcpKeepalivePacketDataParcelable;
+Landroid/net/TcpSocketKeepalive;
 Landroid/net/TestNetworkManager;
-Landroid/net/TetherStatsParcel$1;
-Landroid/net/TetherStatsParcel;
 Landroid/net/TrafficStats;
 Landroid/net/TransportInfo;
 Landroid/net/UidRange$1;
 Landroid/net/UidRange;
-Landroid/net/UidRangeParcel$1;
-Landroid/net/UidRangeParcel;
 Landroid/net/Uri$1;
 Landroid/net/Uri$AbstractHierarchicalUri;
 Landroid/net/Uri$AbstractPart;
@@ -34973,100 +25887,59 @@
 Landroid/net/http/HttpResponseCache;
 Landroid/net/http/X509TrustManagerExtensions;
 Landroid/net/lowpan/LowpanManager;
+Landroid/net/metrics/ApfProgramEvent$1;
 Landroid/net/metrics/ApfProgramEvent;
+Landroid/net/metrics/ApfStats$1;
+Landroid/net/metrics/ApfStats;
+Landroid/net/metrics/ConnectStats;
 Landroid/net/metrics/DefaultNetworkEvent;
+Landroid/net/metrics/DhcpClientEvent$1;
+Landroid/net/metrics/DhcpClientEvent;
+Landroid/net/metrics/DnsEvent;
 Landroid/net/metrics/IpConnectivityLog$Event;
 Landroid/net/metrics/IpConnectivityLog;
+Landroid/net/metrics/IpManagerEvent$1;
+Landroid/net/metrics/IpManagerEvent;
+Landroid/net/metrics/IpReachabilityEvent$1;
+Landroid/net/metrics/IpReachabilityEvent;
+Landroid/net/metrics/NetworkEvent$1;
+Landroid/net/metrics/NetworkEvent;
+Landroid/net/metrics/NetworkMetrics$Metrics;
+Landroid/net/metrics/NetworkMetrics$Summary;
+Landroid/net/metrics/RaEvent$1;
+Landroid/net/metrics/RaEvent;
+Landroid/net/metrics/ValidationProbeEvent$1;
+Landroid/net/metrics/ValidationProbeEvent;
 Landroid/net/metrics/WakeupEvent;
+Landroid/net/metrics/WakeupStats;
+Landroid/net/nsd/INsdManager$Stub$Proxy;
 Landroid/net/nsd/INsdManager$Stub;
 Landroid/net/nsd/INsdManager;
+Landroid/net/nsd/NsdManager$ServiceHandler;
 Landroid/net/nsd/NsdManager;
+Landroid/net/shared/Inet4AddressUtils;
+Landroid/net/shared/InetAddressUtils;
+Landroid/net/sip/ISipService$Stub$Proxy;
 Landroid/net/sip/ISipService$Stub;
 Landroid/net/sip/ISipService;
+Landroid/net/sip/ISipSession$Stub;
+Landroid/net/sip/ISipSession;
+Landroid/net/sip/ISipSessionListener$Stub;
+Landroid/net/sip/ISipSessionListener;
+Landroid/net/sip/SipException;
 Landroid/net/sip/SipManager;
-Landroid/net/util/-$$Lambda$MultinetworkPolicyTracker$0siHK6f4lHJz8hbdHbT6G4Kp-V4;
+Landroid/net/sip/SipProfile;
+Landroid/net/sip/SipSessionAdapter;
 Landroid/net/util/MultinetworkPolicyTracker$1;
 Landroid/net/util/MultinetworkPolicyTracker$SettingObserver;
 Landroid/net/util/MultinetworkPolicyTracker;
-Landroid/net/wifi/INetworkRequestMatchCallback;
-Landroid/net/wifi/ISoftApCallback$Stub;
-Landroid/net/wifi/ISoftApCallback;
-Landroid/net/wifi/ITrafficStateCallback$Stub;
-Landroid/net/wifi/ITrafficStateCallback;
-Landroid/net/wifi/IWifiManager$Stub$Proxy;
-Landroid/net/wifi/IWifiManager$Stub;
-Landroid/net/wifi/IWifiManager;
-Landroid/net/wifi/IWifiScanner$Stub;
-Landroid/net/wifi/IWifiScanner;
-Landroid/net/wifi/ParcelUtil;
-Landroid/net/wifi/RssiPacketCountInfo;
-Landroid/net/wifi/RttManager;
-Landroid/net/wifi/ScanResult$1;
-Landroid/net/wifi/ScanResult$InformationElement;
-Landroid/net/wifi/ScanResult$RadioChainInfo;
-Landroid/net/wifi/ScanResult;
-Landroid/net/wifi/SupplicantState$1;
-Landroid/net/wifi/SupplicantState;
-Landroid/net/wifi/WifiActivityEnergyInfo$1;
-Landroid/net/wifi/WifiActivityEnergyInfo;
-Landroid/net/wifi/WifiConfiguration$1;
-Landroid/net/wifi/WifiConfiguration$NetworkSelectionStatus;
-Landroid/net/wifi/WifiConfiguration$RecentFailure;
-Landroid/net/wifi/WifiConfiguration;
-Landroid/net/wifi/WifiEnterpriseConfig$1;
-Landroid/net/wifi/WifiEnterpriseConfig;
-Landroid/net/wifi/WifiInfo$1;
-Landroid/net/wifi/WifiInfo;
-Landroid/net/wifi/WifiManager$SoftApCallback;
-Landroid/net/wifi/WifiManager$WifiLock;
-Landroid/net/wifi/WifiManager;
-Landroid/net/wifi/WifiNetworkAgentSpecifier;
+Landroid/net/wifi/WifiNetworkScoreCache$CacheListener$1;
 Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;
 Landroid/net/wifi/WifiNetworkScoreCache;
-Landroid/net/wifi/WifiScanner$ActionListener;
-Landroid/net/wifi/WifiScanner$ChannelSpec;
-Landroid/net/wifi/WifiScanner$PnoScanListener;
-Landroid/net/wifi/WifiScanner$ScanData$1;
-Landroid/net/wifi/WifiScanner$ScanData;
-Landroid/net/wifi/WifiScanner$ScanListener;
-Landroid/net/wifi/WifiScanner$ScanSettings$1;
-Landroid/net/wifi/WifiScanner$ScanSettings;
-Landroid/net/wifi/WifiScanner$ServiceHandler;
-Landroid/net/wifi/WifiScanner;
-Landroid/net/wifi/WifiSsid$1;
-Landroid/net/wifi/WifiSsid;
-Landroid/net/wifi/WpsInfo$1;
-Landroid/net/wifi/WpsInfo;
-Landroid/net/wifi/aware/Characteristics;
-Landroid/net/wifi/aware/ConfigRequest;
-Landroid/net/wifi/aware/IWifiAwareManager$Stub;
-Landroid/net/wifi/aware/IWifiAwareManager;
-Landroid/net/wifi/aware/WifiAwareManager;
-Landroid/net/wifi/hotspot2/IProvisioningCallback;
-Landroid/net/wifi/hotspot2/OsuProvider;
-Landroid/net/wifi/hotspot2/PasspointConfiguration;
-Landroid/net/wifi/hotspot2/pps/HomeSp;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub;
-Landroid/net/wifi/p2p/IWifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pConfig$1;
-Landroid/net/wifi/p2p/WifiP2pConfig;
-Landroid/net/wifi/p2p/WifiP2pDevice$1;
-Landroid/net/wifi/p2p/WifiP2pDevice;
-Landroid/net/wifi/p2p/WifiP2pDeviceList$1;
-Landroid/net/wifi/p2p/WifiP2pDeviceList;
-Landroid/net/wifi/p2p/WifiP2pGroup;
-Landroid/net/wifi/p2p/WifiP2pGroupList$1;
-Landroid/net/wifi/p2p/WifiP2pGroupList$2;
-Landroid/net/wifi/p2p/WifiP2pGroupList$GroupDeleteListener;
-Landroid/net/wifi/p2p/WifiP2pGroupList;
-Landroid/net/wifi/p2p/WifiP2pInfo$1;
-Landroid/net/wifi/p2p/WifiP2pInfo;
-Landroid/net/wifi/p2p/WifiP2pManager;
-Landroid/net/wifi/p2p/WifiP2pProvDiscEvent;
-Landroid/net/wifi/p2p/nsd/WifiP2pServiceInfo;
-Landroid/net/wifi/rtt/IWifiRttManager$Stub;
-Landroid/net/wifi/rtt/IWifiRttManager;
-Landroid/net/wifi/rtt/WifiRttManager;
+Landroid/net/wifi/wificond/WifiCondManager;
+Landroid/nfc/BeamShareData$1;
+Landroid/nfc/BeamShareData;
+Landroid/nfc/IAppCallback$Stub$Proxy;
 Landroid/nfc/IAppCallback$Stub;
 Landroid/nfc/IAppCallback;
 Landroid/nfc/INfcAdapter$Stub$Proxy;
@@ -35081,6 +25954,12 @@
 Landroid/nfc/INfcTag$Stub$Proxy;
 Landroid/nfc/INfcTag$Stub;
 Landroid/nfc/INfcTag;
+Landroid/nfc/INfcUnlockHandler$Stub$Proxy;
+Landroid/nfc/INfcUnlockHandler$Stub;
+Landroid/nfc/INfcUnlockHandler;
+Landroid/nfc/ITagRemovedCallback$Stub$Proxy;
+Landroid/nfc/ITagRemovedCallback$Stub;
+Landroid/nfc/ITagRemovedCallback;
 Landroid/nfc/NfcActivityManager$NfcActivityState;
 Landroid/nfc/NfcActivityManager$NfcApplicationState;
 Landroid/nfc/NfcActivityManager;
@@ -35088,6 +25967,10 @@
 Landroid/nfc/NfcAdapter$CreateNdefMessageCallback;
 Landroid/nfc/NfcAdapter;
 Landroid/nfc/NfcManager;
+Landroid/nfc/Tag$1;
+Landroid/nfc/Tag;
+Landroid/nfc/TechListParcel$1;
+Landroid/nfc/TechListParcel;
 Landroid/opengl/EGL14;
 Landroid/opengl/EGL15;
 Landroid/opengl/EGLConfig;
@@ -35113,20 +25996,25 @@
 Landroid/opengl/Matrix;
 Landroid/opengl/Visibility;
 Landroid/os/-$$Lambda$Binder$IYUHVkWouPK_9CG2s8VwyWBt5_I;
+Landroid/os/-$$Lambda$Build$WrC6eL7oW2Zm9UDTcXXKr0DnOMw;
 Landroid/os/-$$Lambda$HidlSupport$CwwfmHPEvZaybUxpLzKdwrpQRfA;
+Landroid/os/-$$Lambda$HidlSupport$GHxmwrIWiKN83tl6aMQt_nV5hiw;
 Landroid/os/-$$Lambda$IyvVQC-0mKtsfXbnO0kDL64hrk0;
+Landroid/os/-$$Lambda$PowerManager$WakeLock$VvFzmRZ4ZGlXx7u3lSAJ_T-YUjw;
 Landroid/os/-$$Lambda$StrictMode$1yH8AK0bTwVwZOb9x8HoiSBdzr0;
 Landroid/os/-$$Lambda$StrictMode$AndroidBlockGuardPolicy$9nBulCQKaMajrWr41SB7f7YRT1I;
+Landroid/os/-$$Lambda$StrictMode$AndroidBlockGuardPolicy$FxZGA9KtfTewqdcxlUwvIe5Nx9I;
+Landroid/os/-$$Lambda$StrictMode$UFC_nI1x6u8ZwMQmA7bmj9NHZz4;
 Landroid/os/-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ;
 Landroid/os/-$$Lambda$StrictMode$yZJXPvy2veRNA-xL_SWdXzX_OLg;
 Landroid/os/-$$Lambda$ThreadLocalWorkSource$IP9vRFCDG5YwbWbXAEGHH52B9IE;
-Landroid/os/-$$Lambda$Trace$2zLZ-Lc2kAXsVjw_nLYeNhqmGq0;
 Landroid/os/-$$Lambda$q1UvBdLgHRZVzc68BxdksTmbuCw;
 Landroid/os/AsyncResult;
 Landroid/os/AsyncTask$1;
 Landroid/os/AsyncTask$2;
 Landroid/os/AsyncTask$3;
 Landroid/os/AsyncTask$4;
+Landroid/os/AsyncTask$5;
 Landroid/os/AsyncTask$AsyncTaskResult;
 Landroid/os/AsyncTask$InternalHandler;
 Landroid/os/AsyncTask$SerialExecutor$1;
@@ -35137,15 +26025,21 @@
 Landroid/os/BadParcelableException;
 Landroid/os/BaseBundle$NoImagePreloadHolder;
 Landroid/os/BaseBundle;
+Landroid/os/BasicShellCommandHandler;
 Landroid/os/BatteryManager;
 Landroid/os/BatteryManagerInternal;
 Landroid/os/BatteryProperty$1;
+Landroid/os/BatteryProperty;
+Landroid/os/BatterySaverPolicyConfig$1;
+Landroid/os/BatterySaverPolicyConfig;
+Landroid/os/BatteryStats$2;
 Landroid/os/BatteryStats$BitDescription;
 Landroid/os/BatteryStats$ControllerActivityCounter;
 Landroid/os/BatteryStats$Counter;
 Landroid/os/BatteryStats$DailyItem;
 Landroid/os/BatteryStats$HistoryEventTracker;
 Landroid/os/BatteryStats$HistoryItem;
+Landroid/os/BatteryStats$HistoryPrinter;
 Landroid/os/BatteryStats$HistoryStepDetails;
 Landroid/os/BatteryStats$HistoryTag;
 Landroid/os/BatteryStats$IntToString;
@@ -35163,7 +26057,7 @@
 Landroid/os/BatteryStats$Uid$Wakelock;
 Landroid/os/BatteryStats$Uid;
 Landroid/os/BatteryStats;
-Landroid/os/BatteryStatsInternal;
+Landroid/os/BatteryStatsManager;
 Landroid/os/BestClock;
 Landroid/os/Binder$NoImagePreloadHolder;
 Landroid/os/Binder$PropagateWorkSourceTransactListener;
@@ -35200,7 +26094,9 @@
 Landroid/os/FileBridge$FileBridgeOutputStream;
 Landroid/os/FileObserver$ObserverThread;
 Landroid/os/FileObserver;
+Landroid/os/FileUtils$1;
 Landroid/os/FileUtils;
+Landroid/os/GraphicsEnvironment$1;
 Landroid/os/GraphicsEnvironment$OpenGlDriverChoice;
 Landroid/os/GraphicsEnvironment;
 Landroid/os/Handler$BlockingRunnable;
@@ -35210,6 +26106,7 @@
 Landroid/os/HandlerExecutor;
 Landroid/os/HandlerThread;
 Landroid/os/HardwarePropertiesManager;
+Landroid/os/HidlMemory;
 Landroid/os/HidlSupport$Mutable;
 Landroid/os/HidlSupport;
 Landroid/os/HwBinder;
@@ -35224,6 +26121,7 @@
 Landroid/os/ICancellationSignal$Stub$Proxy;
 Landroid/os/ICancellationSignal$Stub;
 Landroid/os/ICancellationSignal;
+Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;
 Landroid/os/IDeviceIdentifiersPolicyService$Stub;
 Landroid/os/IDeviceIdentifiersPolicyService;
 Landroid/os/IDeviceIdleController$Stub$Proxy;
@@ -35250,6 +26148,9 @@
 Landroid/os/IMessenger$Stub$Proxy;
 Landroid/os/IMessenger$Stub;
 Landroid/os/IMessenger;
+Landroid/os/INetworkActivityListener$Stub$Proxy;
+Landroid/os/INetworkActivityListener$Stub;
+Landroid/os/INetworkActivityListener;
 Landroid/os/INetworkManagementService$Stub$Proxy;
 Landroid/os/INetworkManagementService$Stub;
 Landroid/os/INetworkManagementService;
@@ -35260,30 +26161,36 @@
 Landroid/os/IPowerManager;
 Landroid/os/IProcessInfoService$Stub;
 Landroid/os/IProcessInfoService;
+Landroid/os/IProgressListener$Stub$Proxy;
 Landroid/os/IProgressListener$Stub;
 Landroid/os/IProgressListener;
 Landroid/os/IRecoverySystem$Stub;
 Landroid/os/IRecoverySystem;
+Landroid/os/IRemoteCallback$Stub$Proxy;
 Landroid/os/IRemoteCallback$Stub;
 Landroid/os/IRemoteCallback;
 Landroid/os/ISchedulingPolicyService$Stub;
 Landroid/os/ISchedulingPolicyService;
+Landroid/os/IServiceManager$Stub$Proxy;
+Landroid/os/IServiceManager$Stub;
 Landroid/os/IServiceManager;
 Landroid/os/IStatsCompanionService$Stub;
 Landroid/os/IStatsCompanionService;
-Landroid/os/IStatsManager$Stub$Proxy;
-Landroid/os/IStatsManager$Stub;
-Landroid/os/IStatsManager;
+Landroid/os/IStatsd$Stub;
+Landroid/os/IStatsd;
 Landroid/os/IStoraged$Stub$Proxy;
 Landroid/os/IStoraged$Stub;
 Landroid/os/IStoraged;
 Landroid/os/ISystemUpdateManager$Stub$Proxy;
 Landroid/os/ISystemUpdateManager$Stub;
 Landroid/os/ISystemUpdateManager;
+Landroid/os/IThermalEventListener$Stub$Proxy;
 Landroid/os/IThermalEventListener$Stub;
 Landroid/os/IThermalEventListener;
+Landroid/os/IThermalService$Stub$Proxy;
 Landroid/os/IThermalService$Stub;
 Landroid/os/IThermalService;
+Landroid/os/IThermalStatusListener$Stub$Proxy;
 Landroid/os/IThermalStatusListener$Stub;
 Landroid/os/IThermalStatusListener;
 Landroid/os/IUpdateLock$Stub;
@@ -35299,6 +26206,9 @@
 Landroid/os/IVold;
 Landroid/os/IVoldListener$Stub;
 Landroid/os/IVoldListener;
+Landroid/os/IVoldTaskListener$Stub$Proxy;
+Landroid/os/IVoldTaskListener$Stub;
+Landroid/os/IVoldTaskListener;
 Landroid/os/IncidentManager;
 Landroid/os/LocaleList$1;
 Landroid/os/LocaleList;
@@ -35307,12 +26217,14 @@
 Landroid/os/MemoryFile;
 Landroid/os/Message$1;
 Landroid/os/Message;
+Landroid/os/MessageQueue$FileDescriptorRecord;
 Landroid/os/MessageQueue$IdleHandler;
 Landroid/os/MessageQueue$OnFileDescriptorEventListener;
 Landroid/os/MessageQueue;
 Landroid/os/Messenger$1;
 Landroid/os/Messenger;
 Landroid/os/NativeHandle;
+Landroid/os/NetworkOnMainThreadException;
 Landroid/os/OperationCanceledException;
 Landroid/os/Parcel$1;
 Landroid/os/Parcel$2;
@@ -35349,11 +26261,15 @@
 Landroid/os/PowerSaveState$1;
 Landroid/os/PowerSaveState$Builder;
 Landroid/os/PowerSaveState;
+Landroid/os/PowerWhitelistManager;
 Landroid/os/Process$ProcessStartResult;
 Landroid/os/Process;
+Landroid/os/ProxyFileDescriptorCallback;
 Landroid/os/RecoverySystem;
 Landroid/os/Registrant;
 Landroid/os/RegistrantList;
+Landroid/os/RemoteCallback$1;
+Landroid/os/RemoteCallback$2;
 Landroid/os/RemoteCallback$3;
 Landroid/os/RemoteCallback$OnResultListener;
 Landroid/os/RemoteCallback;
@@ -35371,6 +26287,9 @@
 Landroid/os/ServiceManagerProxy;
 Landroid/os/ServiceSpecificException;
 Landroid/os/SharedMemory$1;
+Landroid/os/SharedMemory$Closer;
+Landroid/os/SharedMemory$MemoryRegistration;
+Landroid/os/SharedMemory$Unmapper;
 Landroid/os/SharedMemory;
 Landroid/os/ShellCallback$1;
 Landroid/os/ShellCallback;
@@ -35407,14 +26326,18 @@
 Landroid/os/SystemClock$3;
 Landroid/os/SystemClock;
 Landroid/os/SystemProperties;
+Landroid/os/SystemService$State;
+Landroid/os/SystemService;
 Landroid/os/SystemUpdateManager;
 Landroid/os/SystemVibrator;
+Landroid/os/TelephonyServiceManager;
 Landroid/os/Temperature$1;
 Landroid/os/Temperature;
 Landroid/os/ThreadLocalWorkSource;
 Landroid/os/TokenWatcher$1;
 Landroid/os/TokenWatcher;
 Landroid/os/Trace;
+Landroid/os/TraceNameSupplier;
 Landroid/os/TransactionTooLargeException;
 Landroid/os/TransactionTracker;
 Landroid/os/UEventObserver$UEventThread;
@@ -35426,8 +26349,6 @@
 Landroid/os/UserManager$EnforcingUser;
 Landroid/os/UserManager$UserOperationException;
 Landroid/os/UserManager;
-Landroid/os/UserManagerInternal$UserRestrictionsListener;
-Landroid/os/UserManagerInternal;
 Landroid/os/VibrationEffect$1;
 Landroid/os/VibrationEffect$OneShot$1;
 Landroid/os/VibrationEffect$OneShot;
@@ -35446,9 +26367,19 @@
 Landroid/os/ZygoteProcess$ZygoteState;
 Landroid/os/ZygoteProcess;
 Landroid/os/ZygoteStartFailedEx;
+Landroid/os/connectivity/CellularBatteryStats$1;
+Landroid/os/connectivity/CellularBatteryStats;
+Landroid/os/connectivity/GpsBatteryStats$1;
+Landroid/os/connectivity/GpsBatteryStats;
+Landroid/os/connectivity/WifiActivityEnergyInfo;
+Landroid/os/connectivity/WifiBatteryStats$1;
+Landroid/os/connectivity/WifiBatteryStats;
+Landroid/os/health/HealthKeys$Constant;
+Landroid/os/health/HealthKeys$SortedIntArray;
 Landroid/os/health/HealthStats;
 Landroid/os/health/HealthStatsParceler$1;
 Landroid/os/health/HealthStatsParceler;
+Landroid/os/health/HealthStatsWriter;
 Landroid/os/health/SystemHealthManager;
 Landroid/os/health/TimerStat$1;
 Landroid/os/health/TimerStat;
@@ -35456,17 +26387,27 @@
 Landroid/os/image/DynamicSystemManager;
 Landroid/os/image/IDynamicSystemService$Stub;
 Landroid/os/image/IDynamicSystemService;
+Landroid/os/incremental/IncrementalManager;
+Landroid/os/storage/DiskInfo$1;
 Landroid/os/storage/DiskInfo;
+Landroid/os/storage/IObbActionListener$Stub$Proxy;
 Landroid/os/storage/IObbActionListener$Stub;
 Landroid/os/storage/IObbActionListener;
+Landroid/os/storage/IStorageEventListener$Stub$Proxy;
 Landroid/os/storage/IStorageEventListener$Stub;
 Landroid/os/storage/IStorageEventListener;
 Landroid/os/storage/IStorageManager$Stub$Proxy;
 Landroid/os/storage/IStorageManager$Stub;
 Landroid/os/storage/IStorageManager;
+Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;
+Landroid/os/storage/IStorageShutdownObserver$Stub;
+Landroid/os/storage/IStorageShutdownObserver;
+Landroid/os/storage/OnObbStateChangeListener;
 Landroid/os/storage/StorageEventListener;
+Landroid/os/storage/StorageManager$1;
 Landroid/os/storage/StorageManager$ObbActionListener;
 Landroid/os/storage/StorageManager$StorageEventListenerDelegate;
+Landroid/os/storage/StorageManager$StorageVolumeCallback;
 Landroid/os/storage/StorageManager;
 Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;
 Landroid/os/storage/StorageManagerInternal;
@@ -35475,33 +26416,72 @@
 Landroid/os/storage/VolumeInfo$1;
 Landroid/os/storage/VolumeInfo$2;
 Landroid/os/storage/VolumeInfo;
+Landroid/os/storage/VolumeRecord$1;
 Landroid/os/storage/VolumeRecord;
+Landroid/os/strictmode/ContentUriWithoutPermissionViolation;
+Landroid/os/strictmode/CredentialProtectedWhileLockedViolation;
+Landroid/os/strictmode/CustomViolation;
 Landroid/os/strictmode/DiskReadViolation;
+Landroid/os/strictmode/DiskWriteViolation;
+Landroid/os/strictmode/ExplicitGcViolation;
+Landroid/os/strictmode/ImplicitDirectBootViolation;
 Landroid/os/strictmode/InstanceCountViolation;
+Landroid/os/strictmode/IntentReceiverLeakedViolation;
+Landroid/os/strictmode/LeakedClosableViolation;
+Landroid/os/strictmode/NetworkViolation;
+Landroid/os/strictmode/ResourceMismatchViolation;
+Landroid/os/strictmode/ServiceConnectionLeakedViolation;
+Landroid/os/strictmode/SqliteObjectLeakedViolation;
+Landroid/os/strictmode/UnbufferedIoViolation;
+Landroid/os/strictmode/UntaggedSocketViolation;
 Landroid/os/strictmode/Violation;
-Landroid/permission/-$$Lambda$PermissionControllerManager$RemoteService$L8N-TbqIPWKu7tyiOxbu_00YKss;
+Landroid/permission/-$$Lambda$PermissionControllerManager$Iy-7wiKMCV-MFSPGyIJxP_DSf8E;
+Landroid/permission/IOnPermissionsChangeListener$Stub;
+Landroid/permission/IOnPermissionsChangeListener;
 Landroid/permission/IPermissionController$Stub$Proxy;
+Landroid/permission/IPermissionController$Stub;
 Landroid/permission/IPermissionController;
-Landroid/permission/PermissionControllerManager$RemoteService;
+Landroid/permission/IPermissionManager$Stub$Proxy;
+Landroid/permission/IPermissionManager$Stub;
+Landroid/permission/IPermissionManager;
 Landroid/permission/PermissionControllerManager;
 Landroid/permission/PermissionManager$SplitPermissionInfo;
 Landroid/permission/PermissionManager;
 Landroid/permission/PermissionManagerInternal;
+Landroid/preference/GenericInflater$Parent;
+Landroid/preference/GenericInflater;
 Landroid/preference/Preference$OnPreferenceChangeListener;
 Landroid/preference/Preference;
 Landroid/preference/PreferenceActivity;
 Landroid/preference/PreferenceFragment$OnPreferenceStartFragmentCallback;
 Landroid/preference/PreferenceFragment;
+Landroid/preference/PreferenceGroup;
+Landroid/preference/PreferenceInflater;
 Landroid/preference/PreferenceManager$OnPreferenceTreeClickListener;
 Landroid/preference/PreferenceManager;
+Landroid/preference/PreferenceScreen;
 Landroid/print/IPrintManager$Stub;
 Landroid/print/IPrintManager;
+Landroid/print/IPrintSpooler$Stub$Proxy;
+Landroid/print/IPrintSpooler$Stub;
+Landroid/print/IPrintSpooler;
 Landroid/print/PrintDocumentAdapter;
+Landroid/print/PrintJobInfo$1;
+Landroid/print/PrintJobInfo;
 Landroid/print/PrintManager;
+Landroid/printservice/PrintServiceInfo$1;
+Landroid/printservice/PrintServiceInfo;
+Landroid/privacy/DifferentialPrivacyConfig;
+Landroid/privacy/DifferentialPrivacyEncoder;
+Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;
+Landroid/privacy/internal/rappor/RapporConfig;
+Landroid/privacy/internal/rappor/RapporEncoder;
 Landroid/provider/-$$Lambda$FontsContract$3FDNQd-WsglsyDhif-aHVbzkfrA;
 Landroid/provider/-$$Lambda$FontsContract$rqfIZKvP1frnI9vP1hVA8jQN_RE;
 Landroid/provider/-$$Lambda$Settings$NameValueCache$qSyMM6rUAHCa-5rsP-atfAqR3sA;
 Landroid/provider/BaseColumns;
+Landroid/provider/BlockedNumberContract$SystemContract;
+Landroid/provider/BlockedNumberContract;
 Landroid/provider/CalendarContract$CalendarColumns;
 Landroid/provider/CalendarContract$CalendarSyncColumns;
 Landroid/provider/CalendarContract$Calendars;
@@ -35525,27 +26505,21 @@
 Landroid/provider/ContactsContract$DataColumns;
 Landroid/provider/ContactsContract$DataColumnsWithJoins;
 Landroid/provider/ContactsContract$DataUsageStatColumns;
+Landroid/provider/ContactsContract$PhoneLookup;
+Landroid/provider/ContactsContract$PhoneLookupColumns;
 Landroid/provider/ContactsContract$RawContactsColumns;
 Landroid/provider/ContactsContract$StatusColumns;
 Landroid/provider/ContactsContract;
 Landroid/provider/DeviceConfig$1;
-Landroid/provider/DeviceConfig$OnPropertyChangedListener;
+Landroid/provider/DeviceConfig$OnPropertiesChangedListener;
 Landroid/provider/DeviceConfig;
 Landroid/provider/Downloads$Impl;
+Landroid/provider/Downloads;
 Landroid/provider/FontRequest;
 Landroid/provider/FontsContract$1;
 Landroid/provider/FontsContract$FontFamilyResult;
 Landroid/provider/FontsContract$FontInfo;
 Landroid/provider/FontsContract;
-Landroid/provider/MediaStore$Audio$AudioColumns;
-Landroid/provider/MediaStore$Audio$Media;
-Landroid/provider/MediaStore$Files;
-Landroid/provider/MediaStore$Images$ImageColumns;
-Landroid/provider/MediaStore$Images$Media;
-Landroid/provider/MediaStore$MediaColumns;
-Landroid/provider/MediaStore$Video$Media;
-Landroid/provider/MediaStore$Video$VideoColumns;
-Landroid/provider/MediaStore;
 Landroid/provider/SearchIndexableData;
 Landroid/provider/SearchIndexableResource;
 Landroid/provider/SearchIndexablesProvider;
@@ -35553,55 +26527,32 @@
 Landroid/provider/Settings$Config;
 Landroid/provider/Settings$ContentProviderHolder;
 Landroid/provider/Settings$GenerationTracker;
-Landroid/provider/Settings$Global$1;
-Landroid/provider/Settings$Global$2;
-Landroid/provider/Settings$Global$3;
 Landroid/provider/Settings$Global;
 Landroid/provider/Settings$NameValueCache;
 Landroid/provider/Settings$NameValueTable;
-Landroid/provider/Settings$Secure$1;
-Landroid/provider/Settings$Secure$2;
-Landroid/provider/Settings$Secure$3;
-Landroid/provider/Settings$Secure$4;
 Landroid/provider/Settings$Secure;
 Landroid/provider/Settings$SettingNotFoundException;
-Landroid/provider/Settings$System$1;
-Landroid/provider/Settings$System$2;
-Landroid/provider/Settings$System$3;
-Landroid/provider/Settings$System$4;
-Landroid/provider/Settings$System$5;
-Landroid/provider/Settings$System$6;
 Landroid/provider/Settings$System;
 Landroid/provider/Settings;
-Landroid/provider/SettingsValidators$1;
-Landroid/provider/SettingsValidators$2;
-Landroid/provider/SettingsValidators$3;
-Landroid/provider/SettingsValidators$4;
-Landroid/provider/SettingsValidators$5;
-Landroid/provider/SettingsValidators$6;
-Landroid/provider/SettingsValidators$7;
-Landroid/provider/SettingsValidators$8;
-Landroid/provider/SettingsValidators$9;
-Landroid/provider/SettingsValidators$ComponentNameListValidator;
-Landroid/provider/SettingsValidators$DiscreteValueValidator;
-Landroid/provider/SettingsValidators$InclusiveFloatRangeValidator;
-Landroid/provider/SettingsValidators$InclusiveIntegerRangeValidator;
-Landroid/provider/SettingsValidators$PackageNameListValidator;
-Landroid/provider/SettingsValidators$Validator;
-Landroid/provider/SettingsValidators;
+Landroid/provider/Telephony$BaseMmsColumns;
 Landroid/provider/Telephony$CarrierColumns;
 Landroid/provider/Telephony$CarrierId$All;
 Landroid/provider/Telephony$CarrierId;
 Landroid/provider/Telephony$Carriers;
+Landroid/provider/Telephony$Mms;
 Landroid/provider/Telephony$ServiceStateTable;
+Landroid/provider/Telephony$SimInfo;
 Landroid/provider/Telephony$Sms;
 Landroid/provider/Telephony$TextBasedSmsColumns;
 Landroid/provider/UserDictionary$Words;
 Landroid/renderscript/RenderScriptCacheDir;
 Landroid/security/AttestedKeyPair;
 Landroid/security/Credentials;
+Landroid/security/FileIntegrityManager;
 Landroid/security/IKeyChainAliasCallback$Stub;
 Landroid/security/IKeyChainAliasCallback;
+Landroid/security/IKeyChainService$Stub$Proxy;
+Landroid/security/IKeyChainService$Stub;
 Landroid/security/IKeyChainService;
 Landroid/security/KeyChain$1;
 Landroid/security/KeyChain$AliasResponse;
@@ -35609,6 +26560,11 @@
 Landroid/security/KeyChain;
 Landroid/security/KeyChainAliasCallback;
 Landroid/security/KeyChainException;
+Landroid/security/KeyStore$KeyCharacteristicsCallbackResult;
+Landroid/security/KeyStore$KeyCharacteristicsPromise;
+Landroid/security/KeyStore$KeystoreResultPromise;
+Landroid/security/KeyStore$OperationPromise;
+Landroid/security/KeyStore$State;
 Landroid/security/KeyStore;
 Landroid/security/KeyStoreException;
 Landroid/security/NetworkSecurityPolicy;
@@ -35624,9 +26580,13 @@
 Landroid/security/keymaster/KeymasterBlob$1;
 Landroid/security/keymaster/KeymasterBlob;
 Landroid/security/keymaster/KeymasterBlobArgument;
+Landroid/security/keymaster/KeymasterBooleanArgument;
 Landroid/security/keymaster/KeymasterCertificateChain$1;
 Landroid/security/keymaster/KeymasterCertificateChain;
+Landroid/security/keymaster/KeymasterDateArgument;
+Landroid/security/keymaster/KeymasterDefs;
 Landroid/security/keymaster/KeymasterIntArgument;
+Landroid/security/keymaster/KeymasterLongArgument;
 Landroid/security/keymaster/OperationResult$1;
 Landroid/security/keymaster/OperationResult;
 Landroid/security/keystore/AndroidKeyStoreAuthenticatedAESCipherSpi$AdditionalAuthenticationDataStream;
@@ -35638,27 +26598,54 @@
 Landroid/security/keystore/AndroidKeyStoreCipherSpiBase;
 Landroid/security/keystore/AndroidKeyStoreKey;
 Landroid/security/keystore/AndroidKeyStoreKeyFactorySpi;
+Landroid/security/keystore/AndroidKeyStoreLoadStoreParameter;
+Landroid/security/keystore/AndroidKeyStorePrivateKey;
 Landroid/security/keystore/AndroidKeyStoreProvider;
+Landroid/security/keystore/AndroidKeyStoreSecretKey;
 Landroid/security/keystore/AndroidKeyStoreSpi;
+Landroid/security/keystore/ArrayUtils;
 Landroid/security/keystore/AttestationUtils;
+Landroid/security/keystore/IKeystoreKeyCharacteristicsCallback$Stub;
+Landroid/security/keystore/IKeystoreKeyCharacteristicsCallback;
+Landroid/security/keystore/IKeystoreOperationResultCallback$Stub;
+Landroid/security/keystore/IKeystoreOperationResultCallback;
+Landroid/security/keystore/IKeystoreResponseCallback$Stub;
+Landroid/security/keystore/IKeystoreResponseCallback;
 Landroid/security/keystore/IKeystoreService$Stub$Proxy;
 Landroid/security/keystore/IKeystoreService$Stub;
 Landroid/security/keystore/IKeystoreService;
 Landroid/security/keystore/KeyAttestationException;
 Landroid/security/keystore/KeyGenParameterSpec;
 Landroid/security/keystore/KeyPermanentlyInvalidatedException;
+Landroid/security/keystore/KeyProperties$Digest;
 Landroid/security/keystore/KeyProperties$KeyAlgorithm;
+Landroid/security/keystore/KeyStoreConnectException;
 Landroid/security/keystore/KeyStoreCryptoOperation;
 Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$MainDataStream;
 Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer$Stream;
 Landroid/security/keystore/KeyStoreCryptoOperationChunkedStreamer;
 Landroid/security/keystore/KeyStoreCryptoOperationStreamer;
 Landroid/security/keystore/KeyStoreCryptoOperationUtils;
+Landroid/security/keystore/KeystoreResponse$1;
+Landroid/security/keystore/KeystoreResponse;
 Landroid/security/keystore/ParcelableKeyGenParameterSpec$1;
 Landroid/security/keystore/ParcelableKeyGenParameterSpec;
 Landroid/security/keystore/StrongBoxUnavailableException;
 Landroid/security/keystore/UserAuthArgs;
+Landroid/security/keystore/UserNotAuthenticatedException;
+Landroid/security/keystore/Utils;
+Landroid/security/keystore/recovery/KeyChainProtectionParams$1;
+Landroid/security/keystore/recovery/KeyChainProtectionParams;
+Landroid/security/keystore/recovery/KeyChainSnapshot$1;
+Landroid/security/keystore/recovery/KeyChainSnapshot;
+Landroid/security/keystore/recovery/KeyDerivationParams$1;
+Landroid/security/keystore/recovery/KeyDerivationParams;
+Landroid/security/keystore/recovery/RecoveryCertPath$1;
+Landroid/security/keystore/recovery/RecoveryCertPath;
 Landroid/security/keystore/recovery/RecoveryController;
+Landroid/security/keystore/recovery/WrappedApplicationKey$1;
+Landroid/security/keystore/recovery/WrappedApplicationKey;
+Landroid/security/keystore/recovery/X509CertificateParsingUtils;
 Landroid/security/net/config/ApplicationConfig;
 Landroid/security/net/config/CertificateSource;
 Landroid/security/net/config/CertificatesEntryRef;
@@ -35668,6 +26655,7 @@
 Landroid/security/net/config/DirectoryCertificateSource$3;
 Landroid/security/net/config/DirectoryCertificateSource$CertSelector;
 Landroid/security/net/config/DirectoryCertificateSource;
+Landroid/security/net/config/Domain;
 Landroid/security/net/config/KeyStoreCertificateSource;
 Landroid/security/net/config/KeyStoreConfigSource;
 Landroid/security/net/config/ManifestConfigSource$DefaultConfigSource;
@@ -35679,33 +26667,88 @@
 Landroid/security/net/config/NetworkSecurityTrustManager;
 Landroid/security/net/config/Pin;
 Landroid/security/net/config/PinSet;
+Landroid/security/net/config/ResourceCertificateSource;
 Landroid/security/net/config/RootTrustManager;
 Landroid/security/net/config/RootTrustManagerFactorySpi;
 Landroid/security/net/config/SystemCertificateSource$NoPreloadHolder;
 Landroid/security/net/config/SystemCertificateSource;
 Landroid/security/net/config/TrustAnchor;
 Landroid/security/net/config/TrustedCertificateStoreAdapter;
+Landroid/security/net/config/UserCertificateSource$NoPreloadHolder;
 Landroid/security/net/config/UserCertificateSource;
+Landroid/security/net/config/WfaCertificateSource$NoPreloadHolder;
+Landroid/security/net/config/WfaCertificateSource;
 Landroid/security/net/config/XmlConfigSource$ParserException;
 Landroid/security/net/config/XmlConfigSource;
+Landroid/service/appprediction/IPredictionService$Stub$Proxy;
+Landroid/service/appprediction/IPredictionService$Stub;
+Landroid/service/appprediction/IPredictionService;
+Landroid/service/autofill/AutofillServiceInfo;
+Landroid/service/autofill/FieldClassificationUserData;
+Landroid/service/autofill/FillResponse$1;
+Landroid/service/autofill/FillResponse;
+Landroid/service/autofill/IAutoFillService$Stub$Proxy;
+Landroid/service/autofill/IAutoFillService$Stub;
+Landroid/service/autofill/IAutoFillService;
+Landroid/service/autofill/UserData$1;
+Landroid/service/autofill/UserData;
+Landroid/service/autofill/augmented/IAugmentedAutofillService$Stub$Proxy;
+Landroid/service/autofill/augmented/IAugmentedAutofillService$Stub;
+Landroid/service/autofill/augmented/IAugmentedAutofillService;
 Landroid/service/carrier/CarrierIdentifier$1;
 Landroid/service/carrier/CarrierIdentifier;
+Landroid/service/carrier/CarrierMessagingServiceWrapper$CarrierMessagingCallbackWrapper;
+Landroid/service/carrier/CarrierMessagingServiceWrapper;
 Landroid/service/carrier/ICarrierService$Stub$Proxy;
 Landroid/service/carrier/ICarrierService$Stub;
 Landroid/service/carrier/ICarrierService;
+Landroid/service/contentcapture/ContentCaptureServiceInfo;
+Landroid/service/contentcapture/FlushMetrics$1;
+Landroid/service/contentcapture/FlushMetrics;
+Landroid/service/contentcapture/IContentCaptureService$Stub$Proxy;
+Landroid/service/contentcapture/IContentCaptureService$Stub;
+Landroid/service/contentcapture/IContentCaptureService;
+Landroid/service/dataloader/DataLoaderService;
 Landroid/service/dreams/DreamManagerInternal;
 Landroid/service/dreams/IDreamManager$Stub$Proxy;
 Landroid/service/dreams/IDreamManager$Stub;
 Landroid/service/dreams/IDreamManager;
+Landroid/service/dreams/IDreamService$Stub$Proxy;
+Landroid/service/dreams/IDreamService$Stub;
+Landroid/service/dreams/IDreamService;
 Landroid/service/euicc/EuiccProfileInfo$1;
 Landroid/service/euicc/EuiccProfileInfo;
 Landroid/service/euicc/GetEuiccProfileInfoListResult$1;
 Landroid/service/euicc/GetEuiccProfileInfoListResult;
+Landroid/service/euicc/IDeleteSubscriptionCallback$Stub;
+Landroid/service/euicc/IDeleteSubscriptionCallback;
+Landroid/service/euicc/IDownloadSubscriptionCallback$Stub;
+Landroid/service/euicc/IDownloadSubscriptionCallback;
+Landroid/service/euicc/IEraseSubscriptionsCallback$Stub;
+Landroid/service/euicc/IEraseSubscriptionsCallback;
 Landroid/service/euicc/IEuiccService$Stub$Proxy;
 Landroid/service/euicc/IEuiccService$Stub;
 Landroid/service/euicc/IEuiccService;
+Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback$Stub;
+Landroid/service/euicc/IGetDefaultDownloadableSubscriptionListCallback;
+Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback$Stub;
+Landroid/service/euicc/IGetDownloadableSubscriptionMetadataCallback;
+Landroid/service/euicc/IGetEidCallback$Stub;
+Landroid/service/euicc/IGetEidCallback;
+Landroid/service/euicc/IGetEuiccInfoCallback$Stub;
+Landroid/service/euicc/IGetEuiccInfoCallback;
 Landroid/service/euicc/IGetEuiccProfileInfoListCallback$Stub;
 Landroid/service/euicc/IGetEuiccProfileInfoListCallback;
+Landroid/service/euicc/IGetOtaStatusCallback$Stub;
+Landroid/service/euicc/IGetOtaStatusCallback;
+Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback$Stub;
+Landroid/service/euicc/IRetainSubscriptionsForFactoryResetCallback;
+Landroid/service/euicc/ISwitchToSubscriptionCallback$Stub;
+Landroid/service/euicc/ISwitchToSubscriptionCallback;
+Landroid/service/euicc/IUpdateSubscriptionNicknameCallback$Stub;
+Landroid/service/euicc/IUpdateSubscriptionNicknameCallback;
+Landroid/service/gatekeeper/GateKeeperResponse$1;
+Landroid/service/gatekeeper/GateKeeperResponse;
 Landroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;
 Landroid/service/gatekeeper/IGateKeeperService$Stub;
 Landroid/service/gatekeeper/IGateKeeperService;
@@ -35733,8 +26776,10 @@
 Landroid/service/notification/ConditionProviderService$H;
 Landroid/service/notification/ConditionProviderService$Provider;
 Landroid/service/notification/ConditionProviderService;
+Landroid/service/notification/IConditionProvider$Stub$Proxy;
 Landroid/service/notification/IConditionProvider$Stub;
 Landroid/service/notification/IConditionProvider;
+Landroid/service/notification/INotificationListener$Stub$Proxy;
 Landroid/service/notification/INotificationListener$Stub;
 Landroid/service/notification/INotificationListener;
 Landroid/service/notification/IStatusBarNotificationHolder$Stub$Proxy;
@@ -35753,6 +26798,9 @@
 Landroid/service/notification/NotificationRankingUpdate;
 Landroid/service/notification/NotificationStats$1;
 Landroid/service/notification/NotificationStats;
+Landroid/service/notification/ScheduleCalendar;
+Landroid/service/notification/SnoozeCriterion$1;
+Landroid/service/notification/SnoozeCriterion;
 Landroid/service/notification/StatusBarNotification$1;
 Landroid/service/notification/StatusBarNotification;
 Landroid/service/notification/ZenModeConfig$1;
@@ -35768,29 +26816,46 @@
 Landroid/service/oemlock/IOemLockService$Stub;
 Landroid/service/oemlock/IOemLockService;
 Landroid/service/oemlock/OemLockManager;
+Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;
 Landroid/service/persistentdata/IPersistentDataBlockService$Stub;
 Landroid/service/persistentdata/IPersistentDataBlockService;
 Landroid/service/persistentdata/PersistentDataBlockManager;
+Landroid/service/textclassifier/ITextClassifierCallback$Stub$Proxy;
+Landroid/service/textclassifier/ITextClassifierCallback$Stub;
+Landroid/service/textclassifier/ITextClassifierCallback;
 Landroid/service/textclassifier/ITextClassifierService$Stub$Proxy;
 Landroid/service/textclassifier/ITextClassifierService$Stub;
 Landroid/service/textclassifier/ITextClassifierService;
 Landroid/service/textclassifier/TextClassifierService;
+Landroid/service/trust/ITrustAgentService$Stub$Proxy;
+Landroid/service/trust/ITrustAgentService$Stub;
+Landroid/service/trust/ITrustAgentService;
+Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;
 Landroid/service/voice/IVoiceInteractionService$Stub;
 Landroid/service/voice/IVoiceInteractionService;
+Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;
+Landroid/service/voice/IVoiceInteractionSession$Stub;
 Landroid/service/voice/IVoiceInteractionSession;
+Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;
 Landroid/service/voice/IVoiceInteractionSessionService$Stub;
 Landroid/service/voice/IVoiceInteractionSessionService;
 Landroid/service/voice/VoiceInteractionManagerInternal;
+Landroid/service/voice/VoiceInteractionServiceInfo;
+Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;
 Landroid/service/vr/IPersistentVrStateCallbacks$Stub;
 Landroid/service/vr/IPersistentVrStateCallbacks;
+Landroid/service/vr/IVrManager$Stub$Proxy;
 Landroid/service/vr/IVrManager$Stub;
 Landroid/service/vr/IVrManager;
+Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;
 Landroid/service/vr/IVrStateCallbacks$Stub;
 Landroid/service/vr/IVrStateCallbacks;
 Landroid/service/wallpaper/IWallpaperConnection$Stub;
 Landroid/service/wallpaper/IWallpaperConnection;
+Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;
 Landroid/service/wallpaper/IWallpaperEngine$Stub;
 Landroid/service/wallpaper/IWallpaperEngine;
+Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;
 Landroid/service/wallpaper/IWallpaperService$Stub;
 Landroid/service/wallpaper/IWallpaperService;
 Landroid/speech/tts/ITextToSpeechCallback$Stub;
@@ -35803,11 +26868,15 @@
 Landroid/speech/tts/TextToSpeech$OnInitListener;
 Landroid/speech/tts/TextToSpeech;
 Landroid/speech/tts/TtsEngines;
+Landroid/stats/devicepolicy/nano/StringList;
+Landroid/sysprop/-$$Lambda$TelephonyProperties$H4jN0VIBNpZQBeWYt6qS3DCe_M8;
+Landroid/sysprop/-$$Lambda$TelephonyProperties$kemQbl44ndTqXdQVvnYppJuQboQ;
 Landroid/sysprop/AdbProperties;
 Landroid/sysprop/CryptoProperties$state_values;
 Landroid/sysprop/CryptoProperties$type_values;
 Landroid/sysprop/CryptoProperties;
 Landroid/sysprop/DisplayProperties;
+Landroid/sysprop/TelephonyProperties;
 Landroid/sysprop/VoldProperties;
 Landroid/system/ErrnoException;
 Landroid/system/GaiException;
@@ -35820,7 +26889,6 @@
 Landroid/system/StructAddrinfo;
 Landroid/system/StructCapUserData;
 Landroid/system/StructCapUserHeader;
-Landroid/system/StructFlock;
 Landroid/system/StructGroupReq;
 Landroid/system/StructIfaddrs;
 Landroid/system/StructLinger;
@@ -35834,31 +26902,92 @@
 Landroid/system/StructUcred;
 Landroid/system/StructUtsname;
 Landroid/system/UnixSocketAddress;
+Landroid/system/suspend/WakeLockInfo$1;
+Landroid/system/suspend/WakeLockInfo;
+Landroid/telecom/-$$Lambda$cyYWqCYT05eM23eLVm4oQ5DrYjw;
+Landroid/telecom/-$$Lambda$qa4s1Fm2YuohEunaJUJcmJXDXG0;
+Landroid/telecom/AudioState$1;
+Landroid/telecom/AudioState;
 Landroid/telecom/CallAudioState$1;
 Landroid/telecom/CallAudioState;
+Landroid/telecom/Conference$Listener;
+Landroid/telecom/Conference;
+Landroid/telecom/Conferenceable;
+Landroid/telecom/Connection$FailureSignalingConnection;
+Landroid/telecom/Connection$Listener;
+Landroid/telecom/Connection;
+Landroid/telecom/ConnectionRequest$1;
+Landroid/telecom/ConnectionRequest;
+Landroid/telecom/ConnectionService$1;
+Landroid/telecom/ConnectionService$2;
+Landroid/telecom/ConnectionService$3;
+Landroid/telecom/ConnectionService$4;
+Landroid/telecom/ConnectionService$5;
 Landroid/telecom/ConnectionService;
+Landroid/telecom/ConnectionServiceAdapter;
 Landroid/telecom/DefaultDialerManager;
 Landroid/telecom/DisconnectCause$1;
+Landroid/telecom/DisconnectCause;
 Landroid/telecom/Log;
+Landroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;
+Landroid/telecom/Logging/-$$Lambda$SessionManager$VyH2gT1EjIvzDy_C9JfTT60CISM;
+Landroid/telecom/Logging/-$$Lambda$SessionManager$hhtZwTEbvO-fLNlAvB6Do9_2gW4;
+Landroid/telecom/Logging/EventManager$Event;
+Landroid/telecom/Logging/EventManager$EventListener;
+Landroid/telecom/Logging/EventManager$EventRecord;
+Landroid/telecom/Logging/EventManager;
+Landroid/telecom/Logging/Runnable$1;
+Landroid/telecom/Logging/Runnable;
+Landroid/telecom/Logging/Session$Info$1;
+Landroid/telecom/Logging/Session$Info;
+Landroid/telecom/Logging/Session;
+Landroid/telecom/Logging/SessionManager$ICurrentThreadId;
+Landroid/telecom/Logging/SessionManager$ISessionCleanupTimeoutMs;
+Landroid/telecom/Logging/SessionManager$ISessionIdQueryHandler;
+Landroid/telecom/Logging/SessionManager$ISessionListener;
+Landroid/telecom/Logging/SessionManager;
+Landroid/telecom/ParcelableConference$1;
+Landroid/telecom/ParcelableConference;
+Landroid/telecom/ParcelableConnection$1;
+Landroid/telecom/ParcelableConnection;
 Landroid/telecom/PhoneAccount$1;
 Landroid/telecom/PhoneAccount$Builder;
 Landroid/telecom/PhoneAccount;
 Landroid/telecom/PhoneAccountHandle$1;
 Landroid/telecom/PhoneAccountHandle;
+Landroid/telecom/RemoteConnectionManager;
+Landroid/telecom/StatusHints$1;
+Landroid/telecom/StatusHints;
 Landroid/telecom/TelecomManager;
 Landroid/telecom/VideoProfile$1;
+Landroid/telecom/VideoProfile;
+Landroid/telephony/-$$Lambda$DataFailCause$djkZSxdG-s-w2L5rQKiGu6OudyY;
+Landroid/telephony/-$$Lambda$MLKtmRGKP3e0WU7x_KyS5-Vg8q4;
 Landroid/telephony/-$$Lambda$NetworkRegistrationInfo$1JuZmO5PoYGZY8bHhZYwvmqwOB0;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$-CiOzgf6ys4EwlCYOVUsuz9YQ5c;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$1M3m0i6211i2YjWyTDT7l0bJm3I;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2cMrwdqnKBpixpApeIX38rmRLak;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$4NHt5Shg_DHV-T1IxfcQLHP5-j0;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$6czWSGzxct0CXPVO54T0aq05qls;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Hbn6-eZxY2p3rjOfStodI04A8E8;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Q2A8FgYlU8_D6PD78tThGut_rTc;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$TqrkuLPlaG_ucU7VbLS4tnf8hG8;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$WYWtWHdkZDxBd9anjoxyZozPWHc;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$lHL69WZlO89JjNC1LLvFWp2OuKY;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$YY3srkIkMm8vTSFJZHoiKzUUrGs;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$bELzxgwsPigyVKYkAXBO2BjcSm8;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$jlNX9JiqGSNg9W49vDcKucKdeCI;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$nrGqSRBJrc3_EwotCDNwfKeizIo;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$oDAZqs8paeefe_3k_uRKV5plQW4;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$okPCYOx4UxYuvUHlM2iS425QGIg;
 Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$uC5syhzl229gIpaK7Jfs__OCJxQ;
+Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$yvQnAlFGg5EWDG2vcA9X-4xnalA;
 Landroid/telephony/-$$Lambda$SubscriptionManager$R_uORt9bKcmEo6JnjiGP2KgjIOQ;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$3Kis6wL1IbLustWe9A2o4-2YpGo;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$MLDtRnX1dj1RKFdjgIsOvcQxhA0;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$b_92_3ZijRrdEa9yLyFA5xu19OM;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$mpe0Kh92VEQmEtmo60oqykdvnBE;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$o3geRfUaRT9tnqKKZbu1EbUxw4Q;
+Landroid/telephony/-$$Lambda$TelephonyFrameworkInitializer$sQClc4rjc9ydh0nXpY79gr33av4;
+Landroid/telephony/AccessNetworkConstants$AccessNetworkType;
 Landroid/telephony/AccessNetworkConstants$TransportType;
 Landroid/telephony/AccessNetworkConstants;
 Landroid/telephony/AccessNetworkUtils;
@@ -35869,20 +26998,38 @@
 Landroid/telephony/CallQuality;
 Landroid/telephony/CarrierConfigManager$Gps;
 Landroid/telephony/CarrierConfigManager;
+Landroid/telephony/CarrierRestrictionRules$1;
 Landroid/telephony/CarrierRestrictionRules;
+Landroid/telephony/CellConfigLte$1;
+Landroid/telephony/CellConfigLte;
 Landroid/telephony/CellIdentity$1;
 Landroid/telephony/CellIdentity;
+Landroid/telephony/CellIdentityCdma$1;
+Landroid/telephony/CellIdentityCdma;
 Landroid/telephony/CellIdentityGsm$1;
+Landroid/telephony/CellIdentityGsm;
 Landroid/telephony/CellIdentityLte$1;
 Landroid/telephony/CellIdentityLte;
+Landroid/telephony/CellIdentityNr$1;
+Landroid/telephony/CellIdentityNr;
+Landroid/telephony/CellIdentityTdscdma$1;
+Landroid/telephony/CellIdentityTdscdma;
 Landroid/telephony/CellIdentityWcdma$1;
 Landroid/telephony/CellIdentityWcdma;
 Landroid/telephony/CellInfo$1;
 Landroid/telephony/CellInfo;
+Landroid/telephony/CellInfoCdma$1;
+Landroid/telephony/CellInfoCdma;
 Landroid/telephony/CellInfoGsm$1;
+Landroid/telephony/CellInfoGsm;
 Landroid/telephony/CellInfoLte$1;
 Landroid/telephony/CellInfoLte;
+Landroid/telephony/CellInfoNr$1;
+Landroid/telephony/CellInfoNr;
+Landroid/telephony/CellInfoTdscdma$1;
+Landroid/telephony/CellInfoTdscdma;
 Landroid/telephony/CellInfoWcdma$1;
+Landroid/telephony/CellInfoWcdma;
 Landroid/telephony/CellLocation;
 Landroid/telephony/CellSignalStrength;
 Landroid/telephony/CellSignalStrengthCdma$1;
@@ -35899,16 +27046,25 @@
 Landroid/telephony/CellSignalStrengthWcdma;
 Landroid/telephony/ClientRequestStats$1;
 Landroid/telephony/ClientRequestStats;
+Landroid/telephony/DataConnectionRealTimeInfo$1;
+Landroid/telephony/DataConnectionRealTimeInfo;
+Landroid/telephony/DataFailCause$1;
 Landroid/telephony/DataFailCause;
 Landroid/telephony/DataSpecificRegistrationInfo$1;
 Landroid/telephony/DataSpecificRegistrationInfo;
+Landroid/telephony/ICellInfoCallback$Stub$Proxy;
+Landroid/telephony/ICellInfoCallback$Stub;
 Landroid/telephony/ICellInfoCallback;
+Landroid/telephony/INetworkService$Stub$Proxy;
 Landroid/telephony/INetworkService$Stub;
 Landroid/telephony/INetworkService;
 Landroid/telephony/INetworkServiceCallback$Stub;
 Landroid/telephony/INetworkServiceCallback;
+Landroid/telephony/IccOpenLogicalChannelResponse$1;
 Landroid/telephony/IccOpenLogicalChannelResponse;
+Landroid/telephony/ImsiEncryptionInfo$1;
 Landroid/telephony/ImsiEncryptionInfo;
+Landroid/telephony/JapanesePhoneNumberFormatter;
 Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
 Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;
 Landroid/telephony/LocationAccessPolicy$LocationPermissionResult;
@@ -35916,25 +27072,30 @@
 Landroid/telephony/LteVopsSupportInfo$1;
 Landroid/telephony/LteVopsSupportInfo;
 Landroid/telephony/ModemActivityInfo$1;
+Landroid/telephony/ModemActivityInfo$TransmitPower;
 Landroid/telephony/ModemActivityInfo;
-Landroid/telephony/ModemInfo$1;
-Landroid/telephony/ModemInfo;
+Landroid/telephony/NeighboringCellInfo$1;
+Landroid/telephony/NeighboringCellInfo;
 Landroid/telephony/NetworkRegistrationInfo$1;
 Landroid/telephony/NetworkRegistrationInfo$Builder;
 Landroid/telephony/NetworkRegistrationInfo;
+Landroid/telephony/NetworkScanRequest$1;
 Landroid/telephony/NetworkScanRequest;
 Landroid/telephony/NetworkService$INetworkServiceWrapper;
 Landroid/telephony/NetworkService$NetworkServiceHandler;
 Landroid/telephony/NetworkService$NetworkServiceProvider;
 Landroid/telephony/NetworkService;
 Landroid/telephony/NetworkServiceCallback;
+Landroid/telephony/PackageChangeReceiver;
 Landroid/telephony/PhoneCapability$1;
 Landroid/telephony/PhoneCapability;
+Landroid/telephony/PhoneNumberRange$1;
 Landroid/telephony/PhoneNumberRange;
 Landroid/telephony/PhoneNumberUtils;
 Landroid/telephony/PhoneStateListener$IPhoneStateListenerStub;
 Landroid/telephony/PhoneStateListener;
 Landroid/telephony/PhysicalChannelConfig$1;
+Landroid/telephony/PhysicalChannelConfig$Builder;
 Landroid/telephony/PhysicalChannelConfig;
 Landroid/telephony/PreciseCallState$1;
 Landroid/telephony/PreciseCallState;
@@ -35948,27 +27109,35 @@
 Landroid/telephony/SignalStrength$1;
 Landroid/telephony/SignalStrength;
 Landroid/telephony/SmsManager;
+Landroid/telephony/SmsMessage;
 Landroid/telephony/SubscriptionInfo$1;
 Landroid/telephony/SubscriptionInfo;
-Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$1;
+Landroid/telephony/SubscriptionManager$OnOpportunisticSubscriptionsChangedListener;
 Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler;
 Landroid/telephony/SubscriptionManager$OnSubscriptionsChangedListener;
 Landroid/telephony/SubscriptionManager;
+Landroid/telephony/SubscriptionPlan$1;
+Landroid/telephony/SubscriptionPlan;
+Landroid/telephony/TelephonyFrameworkInitializer;
 Landroid/telephony/TelephonyHistogram$1;
 Landroid/telephony/TelephonyHistogram;
 Landroid/telephony/TelephonyManager$5;
 Landroid/telephony/TelephonyManager$7;
 Landroid/telephony/TelephonyManager$MultiSimVariants;
 Landroid/telephony/TelephonyManager;
+Landroid/telephony/TelephonyRegistryManager;
 Landroid/telephony/UiccAccessRule$1;
 Landroid/telephony/UiccAccessRule;
 Landroid/telephony/UiccCardInfo$1;
 Landroid/telephony/UiccCardInfo;
 Landroid/telephony/UiccSlotInfo$1;
 Landroid/telephony/UiccSlotInfo;
+Landroid/telephony/VisualVoicemailSmsFilterSettings$1;
+Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;
 Landroid/telephony/VisualVoicemailSmsFilterSettings;
 Landroid/telephony/VoiceSpecificRegistrationInfo$1;
 Landroid/telephony/VoiceSpecificRegistrationInfo;
+Landroid/telephony/cdma/CdmaCellLocation;
 Landroid/telephony/data/ApnSetting$1;
 Landroid/telephony/data/ApnSetting$Builder;
 Landroid/telephony/data/ApnSetting;
@@ -35977,14 +27146,17 @@
 Landroid/telephony/data/DataProfile$1;
 Landroid/telephony/data/DataProfile$Builder;
 Landroid/telephony/data/DataProfile;
+Landroid/telephony/data/DataService$DataCallListChangedIndication;
 Landroid/telephony/data/DataService$DataServiceHandler;
 Landroid/telephony/data/DataService$DataServiceProvider;
+Landroid/telephony/data/DataService$DeactivateDataCallRequest;
 Landroid/telephony/data/DataService$IDataServiceWrapper;
 Landroid/telephony/data/DataService$SetDataProfileRequest;
 Landroid/telephony/data/DataService$SetInitialAttachApnRequest;
 Landroid/telephony/data/DataService$SetupDataCallRequest;
 Landroid/telephony/data/DataService;
 Landroid/telephony/data/DataServiceCallback;
+Landroid/telephony/data/IDataService$Stub$Proxy;
 Landroid/telephony/data/IDataService$Stub;
 Landroid/telephony/data/IDataService;
 Landroid/telephony/data/IDataServiceCallback$Stub;
@@ -35995,17 +27167,17 @@
 Landroid/telephony/euicc/EuiccManager;
 Landroid/telephony/gsm/GsmCellLocation;
 Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$4YNlUy9HsD02E7Sbv2VeVtbao08;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$gK2iK9ZQ3GDeuMTfhRd7yjiYlO8;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$F58PRHsH__07pmyvC0NTRprfEPU;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$q0Uz23ATIYan5EBJYUigIVvwE3g;
 Landroid/telephony/ims/-$$Lambda$ProvisioningManager$Callback$CallbackBinder$R_8jXQuOM7aV7dIwYBzcWwV-YpM;
-Landroid/telephony/ims/-$$Lambda$ProvisioningManager$Callback$CallbackBinder$rMBayJlNIko46WAqcRq_ggxbfrY;
+Landroid/telephony/ims/ImsCallForwardInfo$1;
+Landroid/telephony/ims/ImsCallForwardInfo;
+Landroid/telephony/ims/ImsCallProfile$1;
 Landroid/telephony/ims/ImsCallProfile;
 Landroid/telephony/ims/ImsException;
+Landroid/telephony/ims/ImsExternalCallState$1;
+Landroid/telephony/ims/ImsExternalCallState;
+Landroid/telephony/ims/ImsManager;
 Landroid/telephony/ims/ImsMmTelManager$CapabilityCallback$CapabilityBinder;
 Landroid/telephony/ims/ImsMmTelManager$CapabilityCallback;
-Landroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder$1;
-Landroid/telephony/ims/ImsMmTelManager$RegistrationCallback$RegistrationBinder;
 Landroid/telephony/ims/ImsMmTelManager$RegistrationCallback;
 Landroid/telephony/ims/ImsMmTelManager;
 Landroid/telephony/ims/ImsReasonInfo$1;
@@ -36013,37 +27185,48 @@
 Landroid/telephony/ims/ImsService$1;
 Landroid/telephony/ims/ImsService$Listener;
 Landroid/telephony/ims/ImsService;
+Landroid/telephony/ims/ImsSsInfo$1;
+Landroid/telephony/ims/ImsSsInfo;
 Landroid/telephony/ims/ImsUtListener;
 Landroid/telephony/ims/ProvisioningManager$Callback$CallbackBinder;
 Landroid/telephony/ims/ProvisioningManager$Callback;
-Landroid/telephony/ims/RcsManager;
-Landroid/telephony/ims/RcsMessageStore;
+Landroid/telephony/ims/RegistrationManager$1;
+Landroid/telephony/ims/RegistrationManager$RegistrationCallback;
+Landroid/telephony/ims/RegistrationManager;
+Landroid/telephony/ims/aidl/IImsCapabilityCallback$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsCapabilityCallback$Stub;
 Landroid/telephony/ims/aidl/IImsCapabilityCallback;
+Landroid/telephony/ims/aidl/IImsConfig$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsConfig$Stub;
 Landroid/telephony/ims/aidl/IImsConfig;
+Landroid/telephony/ims/aidl/IImsConfigCallback$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsConfigCallback$Stub;
 Landroid/telephony/ims/aidl/IImsConfigCallback;
+Landroid/telephony/ims/aidl/IImsMmTelFeature$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsMmTelFeature$Stub;
 Landroid/telephony/ims/aidl/IImsMmTelFeature;
+Landroid/telephony/ims/aidl/IImsMmTelListener$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsMmTelListener$Stub;
 Landroid/telephony/ims/aidl/IImsMmTelListener;
 Landroid/telephony/ims/aidl/IImsRcsFeature;
 Landroid/telephony/ims/aidl/IImsRegistration$Stub;
 Landroid/telephony/ims/aidl/IImsRegistration;
+Landroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsRegistrationCallback$Stub;
 Landroid/telephony/ims/aidl/IImsRegistrationCallback;
+Landroid/telephony/ims/aidl/IImsServiceController$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsServiceController$Stub;
 Landroid/telephony/ims/aidl/IImsServiceController;
 Landroid/telephony/ims/aidl/IImsServiceControllerListener$Stub;
 Landroid/telephony/ims/aidl/IImsServiceControllerListener;
+Landroid/telephony/ims/aidl/IImsSmsListener$Stub$Proxy;
 Landroid/telephony/ims/aidl/IImsSmsListener$Stub;
 Landroid/telephony/ims/aidl/IImsSmsListener;
-Landroid/telephony/ims/aidl/IRcs$Stub;
-Landroid/telephony/ims/aidl/IRcs;
 Landroid/telephony/ims/feature/CapabilityChangeRequest$1;
 Landroid/telephony/ims/feature/CapabilityChangeRequest$CapabilityPair;
 Landroid/telephony/ims/feature/CapabilityChangeRequest;
+Landroid/telephony/ims/feature/ImsFeature$1;
+Landroid/telephony/ims/feature/ImsFeature$2;
 Landroid/telephony/ims/feature/ImsFeature$Capabilities;
 Landroid/telephony/ims/feature/ImsFeature$CapabilityCallbackProxy;
 Landroid/telephony/ims/feature/ImsFeature;
@@ -36052,11 +27235,15 @@
 Landroid/telephony/ims/feature/MmTelFeature$MmTelCapabilities;
 Landroid/telephony/ims/feature/MmTelFeature;
 Landroid/telephony/ims/stub/-$$Lambda$ImsConfigImplBase$yL4863k-FoQyqg_FX2mWsLMqbyA;
+Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$cWwTXSDsk-bWPbsDJYI--DUBMnE;
 Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$s7PspXVbCf1Q_WSzodP2glP9TjI;
+Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$sbjuTvW-brOSWMR74UInSZEIQB0;
+Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$wwtkoeOtGwMjG5I0-ZTfjNpGU-s;
 Landroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;
 Landroid/telephony/ims/stub/ImsConfigImplBase;
 Landroid/telephony/ims/stub/ImsEcbmImplBase$1;
 Landroid/telephony/ims/stub/ImsEcbmImplBase;
+Landroid/telephony/ims/stub/ImsFeatureConfiguration$1;
 Landroid/telephony/ims/stub/ImsFeatureConfiguration$FeatureSlotPair;
 Landroid/telephony/ims/stub/ImsFeatureConfiguration;
 Landroid/telephony/ims/stub/ImsMultiEndpointImplBase$1;
@@ -36078,6 +27265,7 @@
 Landroid/text/BidiFormatter;
 Landroid/text/BoringLayout$Metrics;
 Landroid/text/BoringLayout;
+Landroid/text/CharSequenceCharacterIterator;
 Landroid/text/ClipboardManager;
 Landroid/text/DynamicLayout$Builder;
 Landroid/text/DynamicLayout$ChangeWatcher;
@@ -36094,7 +27282,19 @@
 Landroid/text/Html$HtmlParser;
 Landroid/text/Html$TagHandler;
 Landroid/text/Html;
+Landroid/text/HtmlToSpannedConverter$Big;
+Landroid/text/HtmlToSpannedConverter$Blockquote;
+Landroid/text/HtmlToSpannedConverter$Bold;
+Landroid/text/HtmlToSpannedConverter$Bullet;
+Landroid/text/HtmlToSpannedConverter$Heading;
 Landroid/text/HtmlToSpannedConverter$Href;
+Landroid/text/HtmlToSpannedConverter$Italic;
+Landroid/text/HtmlToSpannedConverter$Monospace;
+Landroid/text/HtmlToSpannedConverter$Small;
+Landroid/text/HtmlToSpannedConverter$Strikethrough;
+Landroid/text/HtmlToSpannedConverter$Sub;
+Landroid/text/HtmlToSpannedConverter$Super;
+Landroid/text/HtmlToSpannedConverter$Underline;
 Landroid/text/HtmlToSpannedConverter;
 Landroid/text/Hyphenator;
 Landroid/text/InputFilter$LengthFilter;
@@ -36104,7 +27304,9 @@
 Landroid/text/Layout$Alignment;
 Landroid/text/Layout$Directions;
 Landroid/text/Layout$Ellipsizer;
+Landroid/text/Layout$HorizontalMeasurementProvider;
 Landroid/text/Layout$SpannedEllipsizer;
+Landroid/text/Layout$TabStops;
 Landroid/text/Layout;
 Landroid/text/MeasuredParagraph;
 Landroid/text/NoCopySpan$Concrete;
@@ -36113,6 +27315,7 @@
 Landroid/text/PackedObjectVector;
 Landroid/text/ParcelableSpan;
 Landroid/text/PrecomputedText$ParagraphInfo;
+Landroid/text/PrecomputedText$Params$Builder;
 Landroid/text/PrecomputedText$Params;
 Landroid/text/PrecomputedText;
 Landroid/text/Selection$END;
@@ -36154,6 +27357,7 @@
 Landroid/text/TextWatcher;
 Landroid/text/format/DateFormat;
 Landroid/text/format/DateUtils;
+Landroid/text/format/Formatter$BytesResult;
 Landroid/text/format/Formatter;
 Landroid/text/format/Time$TimeCalculator;
 Landroid/text/format/Time;
@@ -36162,6 +27366,10 @@
 Landroid/text/method/ArrowKeyMovementMethod;
 Landroid/text/method/BaseKeyListener;
 Landroid/text/method/BaseMovementMethod;
+Landroid/text/method/DateKeyListener;
+Landroid/text/method/DateTimeKeyListener;
+Landroid/text/method/DialerKeyListener;
+Landroid/text/method/DigitsKeyListener;
 Landroid/text/method/KeyListener;
 Landroid/text/method/LinkMovementMethod;
 Landroid/text/method/MetaKeyKeyListener;
@@ -36177,44 +27385,70 @@
 Landroid/text/method/TextKeyListener$Capitalize;
 Landroid/text/method/TextKeyListener$SettingsObserver;
 Landroid/text/method/TextKeyListener;
+Landroid/text/method/TimeKeyListener;
 Landroid/text/method/Touch;
 Landroid/text/method/TransformationMethod2;
 Landroid/text/method/TransformationMethod;
 Landroid/text/method/WordIterator;
 Landroid/text/style/AbsoluteSizeSpan;
+Landroid/text/style/AccessibilityClickableSpan$1;
+Landroid/text/style/AccessibilityClickableSpan;
+Landroid/text/style/AccessibilityURLSpan;
+Landroid/text/style/AlignmentSpan$Standard;
 Landroid/text/style/AlignmentSpan;
 Landroid/text/style/BackgroundColorSpan;
+Landroid/text/style/BulletSpan;
 Landroid/text/style/CharacterStyle;
 Landroid/text/style/ClickableSpan;
 Landroid/text/style/DynamicDrawableSpan;
 Landroid/text/style/EasyEditSpan;
 Landroid/text/style/ForegroundColorSpan;
 Landroid/text/style/ImageSpan;
+Landroid/text/style/LeadingMarginSpan$LeadingMarginSpan2;
+Landroid/text/style/LeadingMarginSpan$Standard;
 Landroid/text/style/LeadingMarginSpan;
+Landroid/text/style/LineBackgroundSpan$Standard;
 Landroid/text/style/LineBackgroundSpan;
+Landroid/text/style/LineHeightSpan$Standard;
+Landroid/text/style/LineHeightSpan$WithDensity;
 Landroid/text/style/LineHeightSpan;
+Landroid/text/style/LocaleSpan;
 Landroid/text/style/MetricAffectingSpan;
 Landroid/text/style/ParagraphStyle;
+Landroid/text/style/QuoteSpan;
 Landroid/text/style/RelativeSizeSpan;
 Landroid/text/style/ReplacementSpan;
+Landroid/text/style/ScaleXSpan;
 Landroid/text/style/SpellCheckSpan;
+Landroid/text/style/StrikethroughSpan;
 Landroid/text/style/StyleSpan;
+Landroid/text/style/SubscriptSpan;
+Landroid/text/style/SuggestionRangeSpan;
 Landroid/text/style/SuggestionSpan$1;
 Landroid/text/style/SuggestionSpan;
+Landroid/text/style/SuperscriptSpan;
 Landroid/text/style/TabStopSpan;
 Landroid/text/style/TextAppearanceSpan;
+Landroid/text/style/TtsSpan$Builder;
+Landroid/text/style/TtsSpan$SemioticClassBuilder;
+Landroid/text/style/TtsSpan$TelephoneBuilder;
+Landroid/text/style/TtsSpan;
+Landroid/text/style/TypefaceSpan;
 Landroid/text/style/URLSpan;
 Landroid/text/style/UnderlineSpan;
 Landroid/text/style/UpdateAppearance;
 Landroid/text/style/UpdateLayout;
 Landroid/text/style/WrapTogetherSpan;
+Landroid/text/util/-$$Lambda$Linkify$7J_-cMhIF2bcttjkxA2jDFP8sKw;
 Landroid/text/util/Linkify$1;
 Landroid/text/util/Linkify$2;
 Landroid/text/util/Linkify$3;
 Landroid/text/util/Linkify$MatchFilter;
 Landroid/text/util/Linkify$TransformFilter;
+Landroid/text/util/Linkify;
 Landroid/text/util/Rfc822Token;
 Landroid/text/util/Rfc822Tokenizer;
+Landroid/transition/ArcMotion;
 Landroid/transition/AutoTransition;
 Landroid/transition/ChangeBounds$1;
 Landroid/transition/ChangeBounds$2;
@@ -36227,18 +27461,34 @@
 Landroid/transition/ChangeImageTransform$1;
 Landroid/transition/ChangeImageTransform$2;
 Landroid/transition/ChangeImageTransform;
+Landroid/transition/ChangeScroll;
 Landroid/transition/ChangeTransform$1;
 Landroid/transition/ChangeTransform$2;
 Landroid/transition/ChangeTransform;
+Landroid/transition/CircularPropagation;
+Landroid/transition/Explode;
 Landroid/transition/Fade$1;
 Landroid/transition/Fade$FadeAnimatorListener;
 Landroid/transition/Fade;
 Landroid/transition/PathMotion;
+Landroid/transition/PatternPathMotion;
+Landroid/transition/Recolor;
 Landroid/transition/Scene;
+Landroid/transition/Slide$1;
+Landroid/transition/Slide$2;
+Landroid/transition/Slide$3;
+Landroid/transition/Slide$4;
+Landroid/transition/Slide$5;
+Landroid/transition/Slide$6;
+Landroid/transition/Slide$CalculateSlide;
+Landroid/transition/Slide$CalculateSlideHorizontal;
+Landroid/transition/Slide$CalculateSlideVertical;
+Landroid/transition/Slide;
 Landroid/transition/Transition$1;
 Landroid/transition/Transition$2;
 Landroid/transition/Transition$3;
 Landroid/transition/Transition$AnimationInfo;
+Landroid/transition/Transition$EpicenterCallback;
 Landroid/transition/Transition$TransitionListener;
 Landroid/transition/Transition;
 Landroid/transition/TransitionInflater;
@@ -36246,12 +27496,14 @@
 Landroid/transition/TransitionManager$MultiListener$1;
 Landroid/transition/TransitionManager$MultiListener;
 Landroid/transition/TransitionManager;
+Landroid/transition/TransitionPropagation;
 Landroid/transition/TransitionSet$TransitionSetListener;
 Landroid/transition/TransitionSet;
 Landroid/transition/TransitionUtils;
 Landroid/transition/TransitionValues;
 Landroid/transition/TransitionValuesMaps;
 Landroid/transition/Visibility;
+Landroid/transition/VisibilityPropagation;
 Landroid/util/AndroidException;
 Landroid/util/AndroidRuntimeException;
 Landroid/util/ArrayMap$1;
@@ -36260,11 +27512,11 @@
 Landroid/util/ArraySet;
 Landroid/util/AtomicFile;
 Landroid/util/AttributeSet;
+Landroid/util/BackupUtils;
 Landroid/util/Base64$Coder;
 Landroid/util/Base64$Decoder;
 Landroid/util/Base64$Encoder;
 Landroid/util/Base64;
-Landroid/util/ByteStringUtils;
 Landroid/util/ContainerHelpers;
 Landroid/util/DataUnit$1;
 Landroid/util/DataUnit$2;
@@ -36282,6 +27534,7 @@
 Landroid/util/FastImmutableArraySet;
 Landroid/util/FeatureFlagUtils;
 Landroid/util/FloatProperty;
+Landroid/util/Half;
 Landroid/util/IconDrawableFactory;
 Landroid/util/IntArray;
 Landroid/util/IntProperty;
@@ -36289,9 +27542,13 @@
 Landroid/util/JsonReader;
 Landroid/util/JsonScope;
 Landroid/util/JsonToken;
+Landroid/util/JsonWriter$1;
 Landroid/util/JsonWriter;
 Landroid/util/KeyValueListParser$IntValue;
 Landroid/util/KeyValueListParser;
+Landroid/util/KeyValueSettingObserver$SettingObserver;
+Landroid/util/KeyValueSettingObserver;
+Landroid/util/LauncherIcons;
 Landroid/util/LocalLog;
 Landroid/util/Log$1;
 Landroid/util/Log$ImmediateLogWriter;
@@ -36300,7 +27557,9 @@
 Landroid/util/Log$TerribleFailureHandler;
 Landroid/util/Log;
 Landroid/util/LogPrinter;
+Landroid/util/LogWriter;
 Landroid/util/LongArray;
+Landroid/util/LongArrayQueue;
 Landroid/util/LongSparseArray;
 Landroid/util/LongSparseLongArray;
 Landroid/util/LruCache;
@@ -36332,6 +27591,9 @@
 Landroid/util/Property;
 Landroid/util/Range;
 Landroid/util/Rational;
+Landroid/util/RecurrenceRule$NonrecurringIterator;
+Landroid/util/RecurrenceRule$RecurringIterator;
+Landroid/util/RecurrenceRule;
 Landroid/util/Singleton;
 Landroid/util/Size;
 Landroid/util/SizeF;
@@ -36341,6 +27603,7 @@
 Landroid/util/SparseIntArray;
 Landroid/util/SparseLongArray;
 Landroid/util/SparseSetArray;
+Landroid/util/Spline$LinearSpline;
 Landroid/util/Spline$MonotoneCubicSpline;
 Landroid/util/Spline;
 Landroid/util/StateSet;
@@ -36349,11 +27612,11 @@
 Landroid/util/SuperNotCalledException;
 Landroid/util/TimeUtils;
 Landroid/util/TimedRemoteCaller;
-Landroid/util/TimestampedValue;
 Landroid/util/TimingLogger;
 Landroid/util/TimingsTraceLog;
 Landroid/util/TrustedTime;
 Landroid/util/TypedValue;
+Landroid/util/UtilConfig;
 Landroid/util/Xml;
 Landroid/util/XmlPullAttributes;
 Landroid/util/apk/ApkSignatureSchemeV2Verifier$VerifiedSigner;
@@ -36362,15 +27625,19 @@
 Landroid/util/apk/ApkSignatureSchemeV3Verifier$VerifiedSigner;
 Landroid/util/apk/ApkSignatureSchemeV3Verifier;
 Landroid/util/apk/ApkSignatureVerifier;
+Landroid/util/apk/ApkSigningBlockUtils$1;
 Landroid/util/apk/ApkSigningBlockUtils$MultipleDigestDataDigester;
 Landroid/util/apk/ApkSigningBlockUtils;
 Landroid/util/apk/ByteBufferDataSource;
+Landroid/util/apk/ByteBufferFactory;
 Landroid/util/apk/DataDigester;
 Landroid/util/apk/DataSource;
 Landroid/util/apk/MemoryMappedFileDataSource;
 Landroid/util/apk/SignatureInfo;
 Landroid/util/apk/SignatureNotFoundException;
 Landroid/util/apk/VerbatimX509Certificate;
+Landroid/util/apk/VerityBuilder$BufferedDigester;
+Landroid/util/apk/VerityBuilder$VerityResult;
 Landroid/util/apk/VerityBuilder;
 Landroid/util/apk/WrappedX509Certificate;
 Landroid/util/apk/ZipUtils;
@@ -36384,24 +27651,31 @@
 Landroid/util/jar/StrictJarManifestReader;
 Landroid/util/jar/StrictJarVerifier$VerifierEntry;
 Landroid/util/jar/StrictJarVerifier;
+Landroid/util/proto/EncodedBuffer;
 Landroid/util/proto/ProtoInputStream;
 Landroid/util/proto/ProtoOutputStream;
 Landroid/util/proto/ProtoParseException;
 Landroid/util/proto/ProtoStream;
 Landroid/util/proto/WireTypeMismatchException;
+Landroid/view/-$$Lambda$1kvF4JuyM42-wmyDVPAIYdPz1jE;
 Landroid/view/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;
 Landroid/view/-$$Lambda$FocusFinder$FocusSorter$h0f2ZYL6peSaaEeCCkAoYs_YZvU;
 Landroid/view/-$$Lambda$FocusFinder$FocusSorter$kW7K1t9q7Y62V38r-7g6xRzqqq8;
 Landroid/view/-$$Lambda$FocusFinder$P8rLvOJhymJH5ALAgUjGaM5gxKA;
 Landroid/view/-$$Lambda$FocusFinder$Pgx6IETuqCkrhJYdiBes48tolG4;
 Landroid/view/-$$Lambda$InsetsController$Cj7UJrCkdHvJAZ_cYKrXuTMsjz8;
-Landroid/view/-$$Lambda$InsetsController$HI9QZ2HvGm6iykc-WONz2KPG61Q;
+Landroid/view/-$$Lambda$PYGleuqIeCxjTD1pJqqx1opFv1g;
 Landroid/view/-$$Lambda$QI1s392qW8l6mC24bcy9050SkuY;
-Landroid/view/-$$Lambda$SurfaceView$Cs7TGTdA1lXf9qW8VOJAfEsMjdk;
 Landroid/view/-$$Lambda$SurfaceView$SyyzxOgxKwZMRgiiTGcRYbOU5JY;
+Landroid/view/-$$Lambda$SurfaceView$w68OV7dB_zKVNsA-r0IrAUtyWas;
+Landroid/view/-$$Lambda$ThreadedRenderer$ydBD-R1iP5u-97XYakm-jKvC1b4;
 Landroid/view/-$$Lambda$View$llq76MkPXP4bNcb9oJt_msw0fnQ;
-Landroid/view/-$$Lambda$ViewRootImpl$SOWCXD2hcuOyPEUFjoV8YFVJB34;
-Landroid/view/-$$Lambda$ViewRootImpl$x5nGsJmfMGl8jXdwWgDuOQZdxR8;
+Landroid/view/-$$Lambda$ViewRootImpl$IReiNMSbDakZSGbIZuL_ifaFWn8;
+Landroid/view/-$$Lambda$ViewRootImpl$dznxCZGM2R1fsBljsJKomLjBRoM;
+Landroid/view/-$$Lambda$WindowManagerGlobal$2bR3FsEm4EdRwuXfttH0wA2xOW4;
+Landroid/view/-$$Lambda$WlJa6OPA72p3gYtA3nVKC7Z1tGY;
+Landroid/view/-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0;
+Landroid/view/-$$Lambda$dj1hfDQd0iEp_uBDBPEUMMYJJwk;
 Landroid/view/AbsSavedState$1;
 Landroid/view/AbsSavedState$2;
 Landroid/view/AbsSavedState;
@@ -36412,6 +27686,8 @@
 Landroid/view/ActionMode;
 Landroid/view/ActionProvider$SubUiVisibilityListener;
 Landroid/view/ActionProvider;
+Landroid/view/AppTransitionAnimationSpec$1;
+Landroid/view/AppTransitionAnimationSpec;
 Landroid/view/Choreographer$1;
 Landroid/view/Choreographer$2;
 Landroid/view/Choreographer$3;
@@ -36442,6 +27718,8 @@
 Landroid/view/DisplayInfo$1;
 Landroid/view/DisplayInfo;
 Landroid/view/DisplayListCanvas;
+Landroid/view/DragEvent$1;
+Landroid/view/DragEvent;
 Landroid/view/FallbackEventHandler;
 Landroid/view/FocusFinder$1;
 Landroid/view/FocusFinder$FocusSorter;
@@ -36457,26 +27735,51 @@
 Landroid/view/GestureDetector$OnGestureListener;
 Landroid/view/GestureDetector$SimpleOnGestureListener;
 Landroid/view/GestureDetector;
+Landroid/view/GestureExclusionTracker$GestureExclusionViewInfo;
 Landroid/view/GestureExclusionTracker;
 Landroid/view/Gravity;
 Landroid/view/HandlerActionQueue$HandlerAction;
 Landroid/view/HandlerActionQueue;
+Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;
+Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;
+Landroid/view/IAppTransitionAnimationSpecsFuture;
+Landroid/view/IDisplayFoldListener$Stub$Proxy;
+Landroid/view/IDisplayFoldListener$Stub;
+Landroid/view/IDisplayFoldListener;
+Landroid/view/IDockedStackListener$Stub$Proxy;
 Landroid/view/IDockedStackListener$Stub;
 Landroid/view/IDockedStackListener;
 Landroid/view/IGraphicsStats$Stub$Proxy;
 Landroid/view/IGraphicsStats$Stub;
 Landroid/view/IGraphicsStats;
+Landroid/view/IGraphicsStatsCallback$Stub$Proxy;
 Landroid/view/IGraphicsStatsCallback$Stub;
 Landroid/view/IGraphicsStatsCallback;
+Landroid/view/IOnKeyguardExitResult$Stub$Proxy;
+Landroid/view/IOnKeyguardExitResult$Stub;
+Landroid/view/IOnKeyguardExitResult;
+Landroid/view/IPinnedStackController$Stub$Proxy;
 Landroid/view/IPinnedStackController$Stub;
 Landroid/view/IPinnedStackController;
+Landroid/view/IPinnedStackListener$Stub$Proxy;
 Landroid/view/IPinnedStackListener$Stub;
 Landroid/view/IPinnedStackListener;
+Landroid/view/IRecentsAnimationRunner$Stub$Proxy;
+Landroid/view/IRecentsAnimationRunner$Stub;
+Landroid/view/IRecentsAnimationRunner;
+Landroid/view/IRemoteAnimationRunner$Stub$Proxy;
+Landroid/view/IRemoteAnimationRunner$Stub;
+Landroid/view/IRemoteAnimationRunner;
+Landroid/view/IRotationWatcher$Stub$Proxy;
 Landroid/view/IRotationWatcher$Stub;
 Landroid/view/IRotationWatcher;
+Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;
+Landroid/view/ISystemGestureExclusionListener$Stub;
+Landroid/view/ISystemGestureExclusionListener;
 Landroid/view/IWallpaperVisibilityListener$Stub$Proxy;
 Landroid/view/IWallpaperVisibilityListener$Stub;
 Landroid/view/IWallpaperVisibilityListener;
+Landroid/view/IWindow$Stub$Proxy;
 Landroid/view/IWindow$Stub;
 Landroid/view/IWindow;
 Landroid/view/IWindowId;
@@ -36486,6 +27789,7 @@
 Landroid/view/IWindowSession$Stub$Proxy;
 Landroid/view/IWindowSession$Stub;
 Landroid/view/IWindowSession;
+Landroid/view/IWindowSessionCallback$Stub$Proxy;
 Landroid/view/IWindowSessionCallback$Stub;
 Landroid/view/IWindowSessionCallback;
 Landroid/view/ImeInsetsSourceConsumer;
@@ -36506,25 +27810,32 @@
 Landroid/view/InputQueue$FinishedInputEventCallback;
 Landroid/view/InputQueue;
 Landroid/view/InputWindowHandle;
+Landroid/view/InsetsAnimationControlCallbacks;
 Landroid/view/InsetsController;
 Landroid/view/InsetsSource$1;
 Landroid/view/InsetsSource;
 Landroid/view/InsetsSourceConsumer;
+Landroid/view/InsetsSourceControl$1;
+Landroid/view/InsetsSourceControl;
 Landroid/view/InsetsState$1;
 Landroid/view/InsetsState;
 Landroid/view/KeyCharacterMap$1;
 Landroid/view/KeyCharacterMap$FallbackAction;
+Landroid/view/KeyCharacterMap$UnavailableException;
 Landroid/view/KeyCharacterMap;
 Landroid/view/KeyEvent$1;
 Landroid/view/KeyEvent$Callback;
 Landroid/view/KeyEvent$DispatcherState;
 Landroid/view/KeyEvent;
+Landroid/view/LayoutInflater$BlinkLayout$1;
+Landroid/view/LayoutInflater$BlinkLayout;
 Landroid/view/LayoutInflater$Factory2;
 Landroid/view/LayoutInflater$Factory;
 Landroid/view/LayoutInflater$FactoryMerger;
 Landroid/view/LayoutInflater$Filter;
 Landroid/view/LayoutInflater;
 Landroid/view/Menu;
+Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;
 Landroid/view/MenuInflater$MenuState;
 Landroid/view/MenuInflater;
 Landroid/view/MenuItem$OnActionExpandListener;
@@ -36538,16 +27849,26 @@
 Landroid/view/OrientationEventListener$SensorEventListenerImpl;
 Landroid/view/OrientationEventListener;
 Landroid/view/PointerIcon$1;
+Landroid/view/PointerIcon$2;
 Landroid/view/PointerIcon;
+Landroid/view/RemotableViewMethod;
+Landroid/view/RemoteAnimationAdapter$1;
 Landroid/view/RemoteAnimationAdapter;
+Landroid/view/RemoteAnimationDefinition$1;
+Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry$1;
+Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;
+Landroid/view/RemoteAnimationDefinition;
 Landroid/view/RenderNodeAnimator$1;
+Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;
 Landroid/view/RenderNodeAnimator;
 Landroid/view/RenderNodeAnimatorSetHelper;
+Landroid/view/RoundScrollbarRenderer;
 Landroid/view/ScaleGestureDetector$1;
 Landroid/view/ScaleGestureDetector$OnScaleGestureListener;
 Landroid/view/ScaleGestureDetector$SimpleOnScaleGestureListener;
 Landroid/view/ScaleGestureDetector;
 Landroid/view/SearchEvent;
+Landroid/view/SoundEffectConstants;
 Landroid/view/SubMenu;
 Landroid/view/Surface$1;
 Landroid/view/Surface$CompatibleCanvas;
@@ -36556,9 +27877,10 @@
 Landroid/view/SurfaceControl$1;
 Landroid/view/SurfaceControl$Builder;
 Landroid/view/SurfaceControl$CieXyz;
+Landroid/view/SurfaceControl$DesiredDisplayConfigSpecs;
 Landroid/view/SurfaceControl$DisplayPrimaries;
-Landroid/view/SurfaceControl$PhysicalDisplayInfo;
 Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
+Landroid/view/SurfaceControl$Transaction$1;
 Landroid/view/SurfaceControl$Transaction;
 Landroid/view/SurfaceControl;
 Landroid/view/SurfaceHolder$Callback2;
@@ -36567,11 +27889,8 @@
 Landroid/view/SurfaceSession;
 Landroid/view/SurfaceView$1;
 Landroid/view/SurfaceView$2;
-Landroid/view/SurfaceView$3;
-Landroid/view/SurfaceView$4;
 Landroid/view/SurfaceView;
 Landroid/view/TextureLayer;
-Landroid/view/TextureView$1;
 Landroid/view/TextureView$SurfaceTextureListener;
 Landroid/view/TextureView;
 Landroid/view/ThreadedRenderer$DrawCallbacks;
@@ -36595,10 +27914,13 @@
 Landroid/view/View$9;
 Landroid/view/View$AccessibilityDelegate;
 Landroid/view/View$AttachInfo$Callbacks;
+Landroid/view/View$AttachInfo$InvalidateInfo;
 Landroid/view/View$AttachInfo;
 Landroid/view/View$BaseSavedState$1;
 Landroid/view/View$BaseSavedState;
+Landroid/view/View$CheckForLongPress;
 Landroid/view/View$CheckForTap;
+Landroid/view/View$DeclaredOnClickListener;
 Landroid/view/View$ForegroundInfo;
 Landroid/view/View$ListenerInfo;
 Landroid/view/View$MatchIdPredicate;
@@ -36632,6 +27954,8 @@
 Landroid/view/ViewGroup$1;
 Landroid/view/ViewGroup$2;
 Landroid/view/ViewGroup$4;
+Landroid/view/ViewGroup$ChildListForAccessibility;
+Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
 Landroid/view/ViewGroup$LayoutParams;
 Landroid/view/ViewGroup$MarginLayoutParams;
 Landroid/view/ViewGroup$OnHierarchyChangeListener;
@@ -36647,16 +27971,21 @@
 Landroid/view/ViewOverlay;
 Landroid/view/ViewParent;
 Landroid/view/ViewPropertyAnimator$1;
+Landroid/view/ViewPropertyAnimator$2;
+Landroid/view/ViewPropertyAnimator$3;
 Landroid/view/ViewPropertyAnimator$AnimatorEventListener;
 Landroid/view/ViewPropertyAnimator$NameValuesHolder;
 Landroid/view/ViewPropertyAnimator$PropertyBundle;
 Landroid/view/ViewPropertyAnimator;
 Landroid/view/ViewRootImpl$1;
+Landroid/view/ViewRootImpl$2;
+Landroid/view/ViewRootImpl$3;
 Landroid/view/ViewRootImpl$4;
 Landroid/view/ViewRootImpl$AccessibilityInteractionConnection;
 Landroid/view/ViewRootImpl$AccessibilityInteractionConnectionManager;
 Landroid/view/ViewRootImpl$ActivityConfigCallback;
 Landroid/view/ViewRootImpl$AsyncInputStage;
+Landroid/view/ViewRootImpl$CalledFromWrongThreadException;
 Landroid/view/ViewRootImpl$ConfigChangedCallback;
 Landroid/view/ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable;
 Landroid/view/ViewRootImpl$ConsumeBatchedInputRunnable;
@@ -36669,6 +27998,7 @@
 Landroid/view/ViewRootImpl$NativePreImeInputStage;
 Landroid/view/ViewRootImpl$QueuedInputEvent;
 Landroid/view/ViewRootImpl$SendWindowContentChangedAccessibilityEvent;
+Landroid/view/ViewRootImpl$SurfaceChangedCallback;
 Landroid/view/ViewRootImpl$SyntheticInputStage;
 Landroid/view/ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState;
 Landroid/view/ViewRootImpl$SyntheticJoystickHandler;
@@ -36677,6 +28007,7 @@
 Landroid/view/ViewRootImpl$SyntheticTouchNavigationHandler;
 Landroid/view/ViewRootImpl$SyntheticTrackballHandler;
 Landroid/view/ViewRootImpl$SystemUiVisibilityInfo;
+Landroid/view/ViewRootImpl$TakenSurfaceHolder;
 Landroid/view/ViewRootImpl$TrackballAxis;
 Landroid/view/ViewRootImpl$TraversalRunnable;
 Landroid/view/ViewRootImpl$UnhandledKeyManager;
@@ -36685,21 +28016,26 @@
 Landroid/view/ViewRootImpl$ViewRootHandler;
 Landroid/view/ViewRootImpl$W;
 Landroid/view/ViewRootImpl$WindowInputEventReceiver;
-Landroid/view/ViewRootImpl$WindowStoppedCallback;
 Landroid/view/ViewRootImpl;
+Landroid/view/ViewStructure$HtmlInfo;
 Landroid/view/ViewStructure;
 Landroid/view/ViewStub$OnInflateListener;
+Landroid/view/ViewStub$ViewReplaceRunnable;
 Landroid/view/ViewStub;
 Landroid/view/ViewTreeObserver$CopyOnWriteArray$Access;
 Landroid/view/ViewTreeObserver$CopyOnWriteArray;
 Landroid/view/ViewTreeObserver$InternalInsetsInfo;
 Landroid/view/ViewTreeObserver$OnComputeInternalInsetsListener;
 Landroid/view/ViewTreeObserver$OnDrawListener;
+Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;
 Landroid/view/ViewTreeObserver$OnGlobalFocusChangeListener;
 Landroid/view/ViewTreeObserver$OnGlobalLayoutListener;
 Landroid/view/ViewTreeObserver$OnPreDrawListener;
 Landroid/view/ViewTreeObserver$OnScrollChangedListener;
 Landroid/view/ViewTreeObserver$OnTouchModeChangeListener;
+Landroid/view/ViewTreeObserver$OnWindowAttachListener;
+Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;
+Landroid/view/ViewTreeObserver$OnWindowShownListener;
 Landroid/view/ViewTreeObserver;
 Landroid/view/Window$Callback;
 Landroid/view/Window$OnFrameMetricsAvailableListener;
@@ -36713,11 +28049,13 @@
 Landroid/view/WindowContentFrameStats$1;
 Landroid/view/WindowContentFrameStats;
 Landroid/view/WindowId$1;
+Landroid/view/WindowInsets$Builder;
 Landroid/view/WindowInsets$Type;
 Landroid/view/WindowInsets;
 Landroid/view/WindowInsetsController;
 Landroid/view/WindowLeaked;
 Landroid/view/WindowManager$BadTokenException;
+Landroid/view/WindowManager$InvalidDisplayException;
 Landroid/view/WindowManager$LayoutParams$1;
 Landroid/view/WindowManager$LayoutParams;
 Landroid/view/WindowManager;
@@ -36727,6 +28065,8 @@
 Landroid/view/WindowManagerImpl;
 Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
 Landroid/view/WindowManagerPolicyConstants;
+Landroid/view/accessibility/-$$Lambda$AccessibilityManager$1$o7fCplskH9NlBwJvkl6NoZ0L_BA;
+Landroid/view/accessibility/-$$Lambda$AccessibilityManager$yzw5NYY7_MfAQ9gLy3mVllchaXo;
 Landroid/view/accessibility/AccessibilityEvent$1;
 Landroid/view/accessibility/AccessibilityEvent;
 Landroid/view/accessibility/AccessibilityEventSource;
@@ -36739,6 +28079,7 @@
 Landroid/view/accessibility/AccessibilityManager;
 Landroid/view/accessibility/AccessibilityNodeIdManager;
 Landroid/view/accessibility/AccessibilityNodeInfo$1;
+Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction$1;
 Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;
 Landroid/view/accessibility/AccessibilityNodeInfo;
 Landroid/view/accessibility/AccessibilityNodeProvider;
@@ -36748,6 +28089,7 @@
 Landroid/view/accessibility/CaptioningManager$CaptioningChangeListener;
 Landroid/view/accessibility/CaptioningManager$MyContentObserver;
 Landroid/view/accessibility/CaptioningManager;
+Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;
 Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub;
 Landroid/view/accessibility/IAccessibilityInteractionConnection;
 Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback$Stub$Proxy;
@@ -36756,8 +28098,11 @@
 Landroid/view/accessibility/IAccessibilityManager$Stub$Proxy;
 Landroid/view/accessibility/IAccessibilityManager$Stub;
 Landroid/view/accessibility/IAccessibilityManager;
+Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;
 Landroid/view/accessibility/IAccessibilityManagerClient$Stub;
 Landroid/view/accessibility/IAccessibilityManagerClient;
+Landroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;
+Landroid/view/accessibility/WeakSparseArray;
 Landroid/view/animation/AccelerateDecelerateInterpolator;
 Landroid/view/animation/AccelerateInterpolator;
 Landroid/view/animation/AlphaAnimation;
@@ -36772,13 +28117,20 @@
 Landroid/view/animation/AnimationUtils$1;
 Landroid/view/animation/AnimationUtils$AnimationState;
 Landroid/view/animation/AnimationUtils;
+Landroid/view/animation/AnticipateInterpolator;
+Landroid/view/animation/AnticipateOvershootInterpolator;
 Landroid/view/animation/BaseInterpolator;
+Landroid/view/animation/BounceInterpolator;
+Landroid/view/animation/ClipRectAnimation;
+Landroid/view/animation/CycleInterpolator;
 Landroid/view/animation/DecelerateInterpolator;
+Landroid/view/animation/GridLayoutAnimationController;
 Landroid/view/animation/Interpolator;
 Landroid/view/animation/LayoutAnimationController;
 Landroid/view/animation/LinearInterpolator;
 Landroid/view/animation/OvershootInterpolator;
 Landroid/view/animation/PathInterpolator;
+Landroid/view/animation/RotateAnimation;
 Landroid/view/animation/ScaleAnimation;
 Landroid/view/animation/Transformation;
 Landroid/view/animation/TranslateAnimation;
@@ -36797,26 +28149,47 @@
 Landroid/view/autofill/IAutoFillManager$Stub$Proxy;
 Landroid/view/autofill/IAutoFillManager$Stub;
 Landroid/view/autofill/IAutoFillManager;
+Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;
 Landroid/view/autofill/IAutoFillManagerClient$Stub;
 Landroid/view/autofill/IAutoFillManagerClient;
 Landroid/view/autofill/IAutofillWindowPresenter;
+Landroid/view/contentcapture/ContentCaptureCondition$1;
+Landroid/view/contentcapture/ContentCaptureCondition;
+Landroid/view/contentcapture/ContentCaptureContext$1;
+Landroid/view/contentcapture/ContentCaptureContext;
 Landroid/view/contentcapture/ContentCaptureHelper;
 Landroid/view/contentcapture/ContentCaptureManager$ContentCaptureClient;
 Landroid/view/contentcapture/ContentCaptureManager;
+Landroid/view/contentcapture/DataRemovalRequest$1;
+Landroid/view/contentcapture/DataRemovalRequest;
 Landroid/view/contentcapture/IContentCaptureManager$Stub;
 Landroid/view/contentcapture/IContentCaptureManager;
+Landroid/view/inputmethod/-$$Lambda$InputMethodManager$dfnCauFoZCf-HfXs1QavrkwWDf0;
+Landroid/view/inputmethod/-$$Lambda$InputMethodManager$iDWn3IGSUFqIcs8Py42UhfrshxI;
 Landroid/view/inputmethod/BaseInputConnection;
+Landroid/view/inputmethod/CompletionInfo$1;
+Landroid/view/inputmethod/CompletionInfo;
 Landroid/view/inputmethod/ComposingText;
+Landroid/view/inputmethod/CorrectionInfo$1;
+Landroid/view/inputmethod/CorrectionInfo;
+Landroid/view/inputmethod/CursorAnchorInfo$1;
 Landroid/view/inputmethod/CursorAnchorInfo$Builder;
+Landroid/view/inputmethod/CursorAnchorInfo;
 Landroid/view/inputmethod/EditorInfo$1;
 Landroid/view/inputmethod/EditorInfo;
 Landroid/view/inputmethod/ExtractedText$1;
 Landroid/view/inputmethod/ExtractedText;
+Landroid/view/inputmethod/ExtractedTextRequest$1;
+Landroid/view/inputmethod/ExtractedTextRequest;
 Landroid/view/inputmethod/InputBinding$1;
 Landroid/view/inputmethod/InputBinding;
 Landroid/view/inputmethod/InputConnection;
 Landroid/view/inputmethod/InputConnectionInspector;
 Landroid/view/inputmethod/InputConnectionWrapper;
+Landroid/view/inputmethod/InputContentInfo$1;
+Landroid/view/inputmethod/InputContentInfo;
+Landroid/view/inputmethod/InputMethod$SessionCallback;
+Landroid/view/inputmethod/InputMethod;
 Landroid/view/inputmethod/InputMethodInfo$1;
 Landroid/view/inputmethod/InputMethodInfo;
 Landroid/view/inputmethod/InputMethodManager$1;
@@ -36826,44 +28199,103 @@
 Landroid/view/inputmethod/InputMethodManager$ImeInputEventSender;
 Landroid/view/inputmethod/InputMethodManager$PendingEvent;
 Landroid/view/inputmethod/InputMethodManager;
+Landroid/view/inputmethod/InputMethodSession$EventCallback;
+Landroid/view/inputmethod/InputMethodSession;
 Landroid/view/inputmethod/InputMethodSubtype$1;
 Landroid/view/inputmethod/InputMethodSubtype$InputMethodSubtypeBuilder;
 Landroid/view/inputmethod/InputMethodSubtype;
 Landroid/view/inputmethod/InputMethodSubtypeArray;
-Landroid/view/inputmethod/InputMethodSystemProperty;
 Landroid/view/textclassifier/-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE;
 Landroid/view/textclassifier/-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A;
+Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;
+Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$YTQv8oPvlmJL4tITUFD4z4JWKRk;
+Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$sY0w9od2zcl4YFel0lG4VB3vf7I;
 Landroid/view/textclassifier/-$$Lambda$EntityConfidence$YPh8hwgSYYK8OyQ1kFlQngc71Q0;
 Landroid/view/textclassifier/-$$Lambda$L_UQMPjXwBN0ch4zL2dD82nf9RI;
 Landroid/view/textclassifier/-$$Lambda$NxwbyZSxofZ4Z5SQhfXmtLQ1nxk;
-Landroid/view/textclassifier/-$$Lambda$TextClassificationManager$JIaezIJbMig_-kVzN6oArzkTsJE;
+Landroid/view/textclassifier/-$$Lambda$OGSS2qx6njxlnp0dnKb4lA3jnw8;
 Landroid/view/textclassifier/-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95ArUyMvfbw;
+Landroid/view/textclassifier/-$$Lambda$TextClassifierImpl$ftq-sQqJYwUdrdbbr9jz3p4AWos;
+Landroid/view/textclassifier/-$$Lambda$TextClassifierImpl$iSt_Guet-O6Vtdk0MA4z-Z4lzaM;
 Landroid/view/textclassifier/-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA;
 Landroid/view/textclassifier/-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM;
-Landroid/view/textclassifier/ConfigParser;
+Landroid/view/textclassifier/ActionsModelParamsSupplier$ActionsModelParams;
+Landroid/view/textclassifier/ActionsModelParamsSupplier;
+Landroid/view/textclassifier/ActionsSuggestionsHelper$PersonEncoder;
+Landroid/view/textclassifier/ActionsSuggestionsHelper;
+Landroid/view/textclassifier/ConversationAction$1;
+Landroid/view/textclassifier/ConversationAction$Builder;
+Landroid/view/textclassifier/ConversationAction;
 Landroid/view/textclassifier/ConversationActions$1;
+Landroid/view/textclassifier/ConversationActions$Message$1;
+Landroid/view/textclassifier/ConversationActions$Message;
+Landroid/view/textclassifier/ConversationActions$Request$1;
+Landroid/view/textclassifier/ConversationActions$Request;
 Landroid/view/textclassifier/ConversationActions;
 Landroid/view/textclassifier/EntityConfidence$1;
 Landroid/view/textclassifier/EntityConfidence;
+Landroid/view/textclassifier/ExtrasUtils;
 Landroid/view/textclassifier/GenerateLinksLogger;
+Landroid/view/textclassifier/Log;
+Landroid/view/textclassifier/ModelFileManager$ModelFile;
 Landroid/view/textclassifier/ModelFileManager$ModelFileSupplierImpl;
 Landroid/view/textclassifier/ModelFileManager;
+Landroid/view/textclassifier/SelectionEvent$1;
+Landroid/view/textclassifier/SelectionEvent;
+Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;
 Landroid/view/textclassifier/SelectionSessionLogger;
+Landroid/view/textclassifier/SystemTextClassifier$BlockingCallback;
+Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
 Landroid/view/textclassifier/SystemTextClassifier;
 Landroid/view/textclassifier/TextClassification$1;
 Landroid/view/textclassifier/TextClassification$Builder;
+Landroid/view/textclassifier/TextClassification$Request$1;
+Landroid/view/textclassifier/TextClassification$Request;
 Landroid/view/textclassifier/TextClassification;
 Landroid/view/textclassifier/TextClassificationConstants;
+Landroid/view/textclassifier/TextClassificationContext$1;
+Landroid/view/textclassifier/TextClassificationContext$Builder;
+Landroid/view/textclassifier/TextClassificationContext;
 Landroid/view/textclassifier/TextClassificationManager$SettingsObserver;
 Landroid/view/textclassifier/TextClassificationManager;
 Landroid/view/textclassifier/TextClassificationSessionFactory;
+Landroid/view/textclassifier/TextClassificationSessionId$1;
+Landroid/view/textclassifier/TextClassificationSessionId;
 Landroid/view/textclassifier/TextClassifier$1;
+Landroid/view/textclassifier/TextClassifier$EntityConfig$1;
+Landroid/view/textclassifier/TextClassifier$EntityConfig$Builder;
+Landroid/view/textclassifier/TextClassifier$EntityConfig;
+Landroid/view/textclassifier/TextClassifier$Utils;
 Landroid/view/textclassifier/TextClassifier;
+Landroid/view/textclassifier/TextClassifierEvent$1;
+Landroid/view/textclassifier/TextClassifierEvent$ConversationActionsEvent$1;
+Landroid/view/textclassifier/TextClassifierEvent$ConversationActionsEvent;
+Landroid/view/textclassifier/TextClassifierEvent$LanguageDetectionEvent$1;
+Landroid/view/textclassifier/TextClassifierEvent$LanguageDetectionEvent;
+Landroid/view/textclassifier/TextClassifierEvent$TextLinkifyEvent$1;
+Landroid/view/textclassifier/TextClassifierEvent$TextLinkifyEvent;
+Landroid/view/textclassifier/TextClassifierEvent$TextSelectionEvent$1;
+Landroid/view/textclassifier/TextClassifierEvent$TextSelectionEvent;
+Landroid/view/textclassifier/TextClassifierEvent;
 Landroid/view/textclassifier/TextClassifierEventTronLogger;
 Landroid/view/textclassifier/TextClassifierImpl;
+Landroid/view/textclassifier/TextLanguage$1;
+Landroid/view/textclassifier/TextLanguage$Builder;
+Landroid/view/textclassifier/TextLanguage$Request$1;
+Landroid/view/textclassifier/TextLanguage$Request$Builder;
+Landroid/view/textclassifier/TextLanguage$Request;
+Landroid/view/textclassifier/TextLanguage;
+Landroid/view/textclassifier/TextLinks$Request$1;
+Landroid/view/textclassifier/TextLinks$Request;
 Landroid/view/textclassifier/TextSelection$1;
+Landroid/view/textclassifier/TextSelection$Request$1;
+Landroid/view/textclassifier/TextSelection$Request;
 Landroid/view/textclassifier/TextSelection;
+Landroid/view/textclassifier/intent/-$$Lambda$LabeledIntent$LaL7EfxShgNu4lrdo3mv85g49Jg;
 Landroid/view/textclassifier/intent/ClassificationIntentFactory;
+Landroid/view/textclassifier/intent/LabeledIntent$Result;
+Landroid/view/textclassifier/intent/LabeledIntent$TitleChooser;
+Landroid/view/textclassifier/intent/LabeledIntent;
 Landroid/view/textclassifier/intent/LegacyClassificationIntentFactory;
 Landroid/view/textclassifier/intent/TemplateClassificationIntentFactory;
 Landroid/view/textclassifier/intent/TemplateIntentFactory;
@@ -36879,7 +28311,6 @@
 Landroid/view/textservice/SpellCheckerSubtype$1;
 Landroid/view/textservice/SpellCheckerSubtype;
 Landroid/view/textservice/TextServicesManager;
-Landroid/webkit/-$$Lambda$xYTrYQCPf1HcdlWzDof3mq93ihs;
 Landroid/webkit/ConsoleMessage$MessageLevel;
 Landroid/webkit/ConsoleMessage;
 Landroid/webkit/CookieManager;
@@ -36938,21 +28369,29 @@
 Landroid/widget/-$$Lambda$IfzAW5fP9thoftErKAjo9SLZufw;
 Landroid/widget/-$$Lambda$PopupWindow$8Gc2stI5cSJZbuKX7X4Qr_vU2nI;
 Landroid/widget/-$$Lambda$PopupWindow$nV1HS3Nc6Ck5JRIbIHe3mkyHWzc;
-Landroid/widget/-$$Lambda$RemoteViews$xYCMzfQwRCAW2azHo-bWqQ9R0Wk;
+Landroid/widget/-$$Lambda$RemoteViews$FAOkoZgPKPkiYdtkDxAhkeoykww;
+Landroid/widget/-$$Lambda$RemoteViews$Ld8XNSMwygf42608Zln-rjTyHy0;
+Landroid/widget/-$$Lambda$RemoteViews$SetOnClickResponse$9rKnU2QqCzJhBC39ZrKYXob0-MA;
 Landroid/widget/-$$Lambda$SmartSelectSprite$c8eqlh2kO_X0luLU2BexwK921WA;
 Landroid/widget/-$$Lambda$SmartSelectSprite$mdkXIT1_UNlJQMaziE_E815aIKE;
 Landroid/widget/-$$Lambda$yIdmBO6ZxaY03PGN08RySVVQXuE;
+Landroid/widget/AbsListView$1;
+Landroid/widget/AbsListView$2;
 Landroid/widget/AbsListView$3;
+Landroid/widget/AbsListView$4;
 Landroid/widget/AbsListView$AdapterDataSetObserver;
+Landroid/widget/AbsListView$CheckForTap;
 Landroid/widget/AbsListView$FlingRunnable$1;
 Landroid/widget/AbsListView$FlingRunnable;
 Landroid/widget/AbsListView$LayoutParams;
+Landroid/widget/AbsListView$ListItemAccessibilityDelegate;
 Landroid/widget/AbsListView$OnScrollListener;
 Landroid/widget/AbsListView$PerformClick;
 Landroid/widget/AbsListView$RecycleBin;
 Landroid/widget/AbsListView$RecyclerListener;
 Landroid/widget/AbsListView$SavedState$1;
 Landroid/widget/AbsListView$SavedState;
+Landroid/widget/AbsListView$SelectionBoundsAdjuster;
 Landroid/widget/AbsListView$WindowRunnnable;
 Landroid/widget/AbsListView;
 Landroid/widget/AbsSeekBar;
@@ -36962,11 +28401,13 @@
 Landroid/widget/AbsoluteLayout;
 Landroid/widget/ActionMenuPresenter$1;
 Landroid/widget/ActionMenuPresenter$2;
+Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;
 Landroid/widget/ActionMenuPresenter$OverflowMenuButton$1;
 Landroid/widget/ActionMenuPresenter$OverflowMenuButton;
 Landroid/widget/ActionMenuPresenter$PopupPresenterCallback;
 Landroid/widget/ActionMenuPresenter;
 Landroid/widget/ActionMenuView$ActionMenuChildView;
+Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;
 Landroid/widget/ActionMenuView$LayoutParams;
 Landroid/widget/ActionMenuView$MenuBuilderCallback;
 Landroid/widget/ActionMenuView$OnMenuItemClickListener;
@@ -36986,6 +28427,8 @@
 Landroid/widget/CheckBox;
 Landroid/widget/Checkable;
 Landroid/widget/CheckedTextView;
+Landroid/widget/Chronometer$1;
+Landroid/widget/Chronometer;
 Landroid/widget/CompoundButton$OnCheckedChangeListener;
 Landroid/widget/CompoundButton;
 Landroid/widget/EdgeEffect;
@@ -36997,15 +28440,20 @@
 Landroid/widget/Editor$Blink;
 Landroid/widget/Editor$CursorAnchorInfoNotifier;
 Landroid/widget/Editor$CursorController;
+Landroid/widget/Editor$EasyEditDeleteListener;
+Landroid/widget/Editor$EasyEditPopupWindow;
 Landroid/widget/Editor$EditOperation$1;
 Landroid/widget/Editor$EditOperation;
 Landroid/widget/Editor$InputContentType;
 Landroid/widget/Editor$InputMethodState;
 Landroid/widget/Editor$InsertionPointCursorController;
 Landroid/widget/Editor$MagnifierMotionAnimator;
+Landroid/widget/Editor$PinnedPopupWindow;
 Landroid/widget/Editor$PositionListener;
 Landroid/widget/Editor$ProcessTextIntentActionsHandler;
 Landroid/widget/Editor$SelectionModifierCursorController;
+Landroid/widget/Editor$SpanController$1;
+Landroid/widget/Editor$SpanController$2;
 Landroid/widget/Editor$SpanController;
 Landroid/widget/Editor$SuggestionHelper$SuggestionSpanComparator;
 Landroid/widget/Editor$SuggestionHelper;
@@ -37031,20 +28479,27 @@
 Landroid/widget/GridLayout$4;
 Landroid/widget/GridLayout$5;
 Landroid/widget/GridLayout$6;
+Landroid/widget/GridLayout$7$1;
 Landroid/widget/GridLayout$7;
 Landroid/widget/GridLayout$8;
 Landroid/widget/GridLayout$Alignment;
 Landroid/widget/GridLayout$Arc;
 Landroid/widget/GridLayout$Assoc;
+Landroid/widget/GridLayout$Axis$1;
+Landroid/widget/GridLayout$Axis;
 Landroid/widget/GridLayout$Bounds;
 Landroid/widget/GridLayout$Interval;
+Landroid/widget/GridLayout$LayoutParams;
 Landroid/widget/GridLayout$MutableInt;
 Landroid/widget/GridLayout$PackedMap;
+Landroid/widget/GridLayout$Spec;
+Landroid/widget/GridLayout;
 Landroid/widget/HeaderViewListAdapter;
 Landroid/widget/HorizontalScrollView$SavedState$1;
 Landroid/widget/HorizontalScrollView$SavedState;
 Landroid/widget/HorizontalScrollView;
 Landroid/widget/ImageButton;
+Landroid/widget/ImageView$ImageDrawableCallback;
 Landroid/widget/ImageView$ScaleType;
 Landroid/widget/ImageView;
 Landroid/widget/LinearLayout$LayoutParams;
@@ -37058,6 +28513,7 @@
 Landroid/widget/ListPopupWindow;
 Landroid/widget/ListView$ArrowScrollFocusResult;
 Landroid/widget/ListView$FixedViewInfo;
+Landroid/widget/ListView$FocusSelector;
 Landroid/widget/ListView;
 Landroid/widget/Magnifier$Builder;
 Landroid/widget/Magnifier;
@@ -37066,15 +28522,20 @@
 Landroid/widget/MultiAutoCompleteTextView;
 Landroid/widget/OverScroller$SplineOverScroller;
 Landroid/widget/OverScroller;
+Landroid/widget/PopupMenu$1;
+Landroid/widget/PopupMenu$2;
 Landroid/widget/PopupMenu$OnMenuItemClickListener;
 Landroid/widget/PopupMenu;
 Landroid/widget/PopupWindow$1;
 Landroid/widget/PopupWindow$2;
+Landroid/widget/PopupWindow$3;
 Landroid/widget/PopupWindow$OnDismissListener;
 Landroid/widget/PopupWindow$PopupDecorView;
 Landroid/widget/PopupWindow;
 Landroid/widget/ProgressBar$1;
-Landroid/widget/ProgressBar$AccessibilityEventSender;
+Landroid/widget/ProgressBar$ProgressTintInfo;
+Landroid/widget/ProgressBar$RefreshData;
+Landroid/widget/ProgressBar$RefreshProgressRunnable;
 Landroid/widget/ProgressBar$SavedState$1;
 Landroid/widget/ProgressBar$SavedState;
 Landroid/widget/ProgressBar;
@@ -37089,17 +28550,35 @@
 Landroid/widget/RemoteViews$1;
 Landroid/widget/RemoteViews$2;
 Landroid/widget/RemoteViews$Action;
+Landroid/widget/RemoteViews$ActionException;
+Landroid/widget/RemoteViews$AsyncApplyTask;
 Landroid/widget/RemoteViews$BitmapCache;
 Landroid/widget/RemoteViews$BitmapReflectionAction;
 Landroid/widget/RemoteViews$LayoutParamAction;
+Landroid/widget/RemoteViews$MethodArgs;
 Landroid/widget/RemoteViews$MethodKey;
 Landroid/widget/RemoteViews$OnClickHandler;
+Landroid/widget/RemoteViews$OverrideTextColorsAction;
 Landroid/widget/RemoteViews$ReflectionAction;
 Landroid/widget/RemoteViews$RemoteResponse;
 Landroid/widget/RemoteViews$RemoteView;
+Landroid/widget/RemoteViews$RemoteViewsContextWrapper;
+Landroid/widget/RemoteViews$RunnableAction;
 Landroid/widget/RemoteViews$RuntimeAction;
 Landroid/widget/RemoteViews$SetDrawableTint;
+Landroid/widget/RemoteViews$SetEmptyView;
+Landroid/widget/RemoteViews$SetIntTagAction;
 Landroid/widget/RemoteViews$SetOnClickResponse;
+Landroid/widget/RemoteViews$SetPendingIntentTemplate;
+Landroid/widget/RemoteViews$SetRemoteInputsAction;
+Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;
+Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;
+Landroid/widget/RemoteViews$SetRippleDrawableColor;
+Landroid/widget/RemoteViews$TextViewDrawableAction;
+Landroid/widget/RemoteViews$TextViewSizeAction;
+Landroid/widget/RemoteViews$ViewContentNavigation;
+Landroid/widget/RemoteViews$ViewGroupActionAdd;
+Landroid/widget/RemoteViews$ViewGroupActionRemove;
 Landroid/widget/RemoteViews$ViewPaddingAction;
 Landroid/widget/RemoteViews;
 Landroid/widget/RemoteViewsAdapter$RemoteAdapterConnectionCallback;
@@ -37131,10 +28610,12 @@
 Landroid/widget/Spinner;
 Landroid/widget/SpinnerAdapter;
 Landroid/widget/Switch$1;
+Landroid/widget/Switch;
 Landroid/widget/TableLayout$PassThroughHierarchyChangeListener;
 Landroid/widget/TableLayout;
 Landroid/widget/TableRow$ChildrenTracker;
 Landroid/widget/TableRow;
+Landroid/widget/TextView$1;
 Landroid/widget/TextView$2;
 Landroid/widget/TextView$3;
 Landroid/widget/TextView$4;
@@ -37142,12 +28623,15 @@
 Landroid/widget/TextView$ChangeWatcher;
 Landroid/widget/TextView$CharWrapper;
 Landroid/widget/TextView$Drawables;
+Landroid/widget/TextView$Marquee;
 Landroid/widget/TextView$OnEditorActionListener;
 Landroid/widget/TextView$SavedState$1;
 Landroid/widget/TextView$SavedState;
 Landroid/widget/TextView$TextAppearanceAttributes;
 Landroid/widget/TextView;
 Landroid/widget/ThemedSpinnerAdapter;
+Landroid/widget/Toast$TN$1;
+Landroid/widget/Toast$TN;
 Landroid/widget/Toast;
 Landroid/widget/ToggleButton;
 Landroid/widget/Toolbar$1;
@@ -37156,13 +28640,18 @@
 Landroid/widget/Toolbar$LayoutParams;
 Landroid/widget/Toolbar$OnMenuItemClickListener;
 Landroid/widget/Toolbar$SavedState$1;
+Landroid/widget/Toolbar$SavedState;
 Landroid/widget/Toolbar;
 Landroid/widget/ViewAnimator;
 Landroid/widget/ViewSwitcher;
 Landroid/widget/WrapperListAdapter;
+Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;
+Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano$OutOfSpaceException;
+Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;
 Lcom/android/framework/protobuf/nano/InternalNano;
 Lcom/android/framework/protobuf/nano/InvalidProtocolBufferNanoException;
 Lcom/android/framework/protobuf/nano/MessageNano;
+Lcom/android/framework/protobuf/nano/WireFormatNano;
 Lcom/android/i18n/phonenumbers/AlternateFormatsCountryCodeSet;
 Lcom/android/i18n/phonenumbers/CountryCodeToRegionCodeMap;
 Lcom/android/i18n/phonenumbers/MetadataLoader;
@@ -37170,6 +28659,7 @@
 Lcom/android/i18n/phonenumbers/MetadataManager;
 Lcom/android/i18n/phonenumbers/MetadataSource;
 Lcom/android/i18n/phonenumbers/MultiFileMetadataSourceImpl;
+Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType;
 Lcom/android/i18n/phonenumbers/NumberParseException;
 Lcom/android/i18n/phonenumbers/PhoneNumberUtil$1;
 Lcom/android/i18n/phonenumbers/PhoneNumberUtil$2;
@@ -37182,29 +28672,41 @@
 Lcom/android/i18n/phonenumbers/PhoneNumberUtil$PhoneNumberType;
 Lcom/android/i18n/phonenumbers/PhoneNumberUtil$ValidationResult;
 Lcom/android/i18n/phonenumbers/PhoneNumberUtil;
+Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat$Builder;
 Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat;
 Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadata;
 Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneMetadataCollection;
 Lcom/android/i18n/phonenumbers/Phonemetadata$PhoneNumberDesc;
 Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber$CountryCodeSource;
 Lcom/android/i18n/phonenumbers/Phonenumber$PhoneNumber;
+Lcom/android/i18n/phonenumbers/ShortNumberInfo;
 Lcom/android/i18n/phonenumbers/ShortNumbersRegionCodeSet;
+Lcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder;
 Lcom/android/i18n/phonenumbers/internal/MatcherApi;
 Lcom/android/i18n/phonenumbers/internal/RegexBasedMatcher;
 Lcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache$1;
 Lcom/android/i18n/phonenumbers/internal/RegexCache$LRUCache;
 Lcom/android/i18n/phonenumbers/internal/RegexCache;
-Lcom/android/ims/-$$Lambda$ImsManager$Connector$1$QkUK3GnYms22eckyg3OL-BmtP3M;
-Lcom/android/ims/-$$Lambda$ImsManager$Connector$N5r1SvOgM0jfHDwKkcQbyw_uTP0;
-Lcom/android/ims/-$$Lambda$ImsManager$Connector$yM9scWJWjDp_h0yrkCgrjFZH5oI;
+Lcom/android/icu/charset/CharsetDecoderICU;
+Lcom/android/icu/charset/CharsetEncoderICU;
+Lcom/android/icu/charset/CharsetICU;
+Lcom/android/icu/charset/NativeConverter;
+Lcom/android/icu/util/CaseMapperNative;
+Lcom/android/icu/util/Icu4cMetadata;
+Lcom/android/icu/util/LocaleNative;
+Lcom/android/icu/util/regex/MatcherNative;
+Lcom/android/icu/util/regex/PatternNative;
 Lcom/android/ims/-$$Lambda$ImsManager$D1JuJ3ba2jMHWDKlSpm03meBR1c;
-Lcom/android/ims/-$$Lambda$ImsManager$Flxe43OUFnnU0pgnksvwPE6o3Mk;
 Lcom/android/ims/-$$Lambda$ImsManager$LiW49wt0wLMYHjgtAwL8NLIATfs;
 Lcom/android/ims/-$$Lambda$ImsManager$YhRaDrc3t9_7beNiU5gQcqZilOw;
-Lcom/android/ims/-$$Lambda$MmTelFeatureConnection$1$2oMo1vy7PK7RvBpj3WhQvVVnmLE;
-Lcom/android/ims/-$$Lambda$MmTelFeatureConnection$ij8S4RNRiQPHfppwkejp36BG78I;
 Lcom/android/ims/-$$Lambda$szO0o3matefQqo-6NB-dzsr9eCw;
+Lcom/android/ims/FeatureConnection$IFeatureUpdate;
+Lcom/android/ims/FeatureConnection;
+Lcom/android/ims/FeatureConnector$Listener;
+Lcom/android/ims/IFeatureConnector;
 Lcom/android/ims/ImsCall$Listener;
+Lcom/android/ims/ImsCall;
+Lcom/android/ims/ImsCallbackAdapterManager;
 Lcom/android/ims/ImsConfig;
 Lcom/android/ims/ImsConfigListener$Stub;
 Lcom/android/ims/ImsConfigListener;
@@ -37213,11 +28715,8 @@
 Lcom/android/ims/ImsEcbmStateListener;
 Lcom/android/ims/ImsException;
 Lcom/android/ims/ImsExternalCallStateListener;
+Lcom/android/ims/ImsManager$2;
 Lcom/android/ims/ImsManager$3;
-Lcom/android/ims/ImsManager$Connector$1;
-Lcom/android/ims/ImsManager$Connector$Listener;
-Lcom/android/ims/ImsManager$Connector$RetryTimeout;
-Lcom/android/ims/ImsManager$Connector;
 Lcom/android/ims/ImsManager$ExecutorFactory;
 Lcom/android/ims/ImsManager;
 Lcom/android/ims/ImsMultiEndpoint$ImsExternalCallStateListenerProxy;
@@ -37225,14 +28724,11 @@
 Lcom/android/ims/ImsUt$IImsUtListenerProxy;
 Lcom/android/ims/ImsUt;
 Lcom/android/ims/ImsUtInterface;
-Lcom/android/ims/MmTelFeatureConnection$1;
-Lcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager$1;
-Lcom/android/ims/MmTelFeatureConnection$CallbackAdapterManager;
 Lcom/android/ims/MmTelFeatureConnection$CapabilityCallbackManager;
-Lcom/android/ims/MmTelFeatureConnection$IFeatureUpdate;
 Lcom/android/ims/MmTelFeatureConnection$ImsRegistrationCallbackAdapter;
 Lcom/android/ims/MmTelFeatureConnection$ProvisioningCallbackManager;
 Lcom/android/ims/MmTelFeatureConnection;
+Lcom/android/ims/internal/ICall;
 Lcom/android/ims/internal/IImsEcbm$Stub;
 Lcom/android/ims/internal/IImsEcbm;
 Lcom/android/ims/internal/IImsEcbmListener$Stub;
@@ -37250,23 +28746,42 @@
 Lcom/android/ims/internal/IImsUt;
 Lcom/android/ims/internal/IImsUtListener$Stub;
 Lcom/android/ims/internal/IImsUtListener;
+Lcom/android/ims/internal/ImsVideoCallProviderWrapper$ImsVideoProviderWrapperCallback;
+Lcom/android/ims/internal/uce/UceServiceBase$UceServiceBinder;
 Lcom/android/ims/internal/uce/UceServiceBase;
+Lcom/android/ims/internal/uce/common/UceLong$1;
+Lcom/android/ims/internal/uce/common/UceLong;
+Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;
+Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;
+Lcom/android/ims/internal/uce/options/IOptionsListener;
+Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;
+Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;
+Lcom/android/ims/internal/uce/presence/IPresenceListener;
+Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;
+Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;
+Lcom/android/ims/internal/uce/uceservice/IUceListener;
 Lcom/android/ims/internal/uce/uceservice/IUceService$Stub;
 Lcom/android/ims/internal/uce/uceservice/IUceService;
 Lcom/android/internal/R$styleable;
 Lcom/android/internal/accessibility/AccessibilityShortcutController$1;
 Lcom/android/internal/accessibility/AccessibilityShortcutController$FrameworkObjectProvider;
+Lcom/android/internal/accessibility/AccessibilityShortcutController$ToggleableFrameworkFeatureInfo;
 Lcom/android/internal/accessibility/AccessibilityShortcutController;
 Lcom/android/internal/alsa/AlsaCardsParser;
 Lcom/android/internal/alsa/LineTokenizer;
+Lcom/android/internal/app/AlertController$1;
 Lcom/android/internal/app/AlertController$AlertParams;
+Lcom/android/internal/app/AlertController$ButtonHandler;
+Lcom/android/internal/app/AlertController$RecycleListView;
 Lcom/android/internal/app/AlertController;
 Lcom/android/internal/app/AssistUtils;
+Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;
 Lcom/android/internal/app/IAppOpsActiveCallback$Stub;
 Lcom/android/internal/app/IAppOpsActiveCallback;
 Lcom/android/internal/app/IAppOpsCallback$Stub$Proxy;
 Lcom/android/internal/app/IAppOpsCallback$Stub;
 Lcom/android/internal/app/IAppOpsCallback;
+Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;
 Lcom/android/internal/app/IAppOpsNotedCallback$Stub;
 Lcom/android/internal/app/IAppOpsNotedCallback;
 Lcom/android/internal/app/IAppOpsService$Stub$Proxy;
@@ -37277,62 +28792,106 @@
 Lcom/android/internal/app/IBatteryStats;
 Lcom/android/internal/app/ISoundTriggerService$Stub;
 Lcom/android/internal/app/ISoundTriggerService;
+Lcom/android/internal/app/IVoiceActionCheckCallback$Stub$Proxy;
+Lcom/android/internal/app/IVoiceActionCheckCallback$Stub;
+Lcom/android/internal/app/IVoiceActionCheckCallback;
 Lcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;
 Lcom/android/internal/app/IVoiceInteractionManagerService$Stub;
 Lcom/android/internal/app/IVoiceInteractionManagerService;
+Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;
 Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub;
 Lcom/android/internal/app/IVoiceInteractionSessionListener;
 Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub$Proxy;
+Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;
 Lcom/android/internal/app/IVoiceInteractionSessionShowCallback;
+Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;
 Lcom/android/internal/app/IVoiceInteractor$Stub;
 Lcom/android/internal/app/IVoiceInteractor;
+Lcom/android/internal/app/MicroAlertController;
 Lcom/android/internal/app/ProcessMap;
+Lcom/android/internal/app/ResolverActivity$ActionTitle;
 Lcom/android/internal/app/ResolverActivity;
+Lcom/android/internal/app/ResolverListAdapter$ResolverListCommunicator;
+Lcom/android/internal/app/ToolbarActionBar;
+Lcom/android/internal/app/WindowDecorActionBar;
+Lcom/android/internal/app/procstats/-$$Lambda$AssociationState$kgfxYpOOyQWCFPwGaRqRz0N4-zg;
 Lcom/android/internal/app/procstats/AssociationState$SourceKey;
 Lcom/android/internal/app/procstats/AssociationState$SourceState;
 Lcom/android/internal/app/procstats/AssociationState;
+Lcom/android/internal/app/procstats/DumpUtils;
 Lcom/android/internal/app/procstats/DurationsTable;
+Lcom/android/internal/app/procstats/IProcessStats$Stub$Proxy;
 Lcom/android/internal/app/procstats/IProcessStats$Stub;
 Lcom/android/internal/app/procstats/IProcessStats;
 Lcom/android/internal/app/procstats/ProcessState$1;
+Lcom/android/internal/app/procstats/ProcessState$PssAggr;
 Lcom/android/internal/app/procstats/ProcessState;
 Lcom/android/internal/app/procstats/ProcessStats$1;
 Lcom/android/internal/app/procstats/ProcessStats$PackageState;
 Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+Lcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;
 Lcom/android/internal/app/procstats/ProcessStats;
 Lcom/android/internal/app/procstats/PssTable;
 Lcom/android/internal/app/procstats/ServiceState;
 Lcom/android/internal/app/procstats/SparseMappingTable$Table;
 Lcom/android/internal/app/procstats/SparseMappingTable;
 Lcom/android/internal/app/procstats/SysMemUsageTable;
+Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;
+Lcom/android/internal/appwidget/IAppWidgetHost$Stub;
+Lcom/android/internal/appwidget/IAppWidgetHost;
 Lcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;
 Lcom/android/internal/appwidget/IAppWidgetService$Stub;
 Lcom/android/internal/appwidget/IAppWidgetService;
+Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;
 Lcom/android/internal/backup/IBackupTransport$Stub;
 Lcom/android/internal/backup/IBackupTransport;
+Lcom/android/internal/compat/ChangeReporter;
 Lcom/android/internal/content/NativeLibraryHelper$Handle;
 Lcom/android/internal/content/NativeLibraryHelper;
+Lcom/android/internal/content/PackageHelper$1;
+Lcom/android/internal/content/PackageHelper$TestableInterface;
 Lcom/android/internal/content/PackageHelper;
 Lcom/android/internal/content/PackageMonitor;
 Lcom/android/internal/content/ReferrerIntent$1;
 Lcom/android/internal/content/ReferrerIntent;
+Lcom/android/internal/database/SortCursor;
+Lcom/android/internal/graphics/ColorUtils;
 Lcom/android/internal/graphics/SfVsyncFrameCallbackProvider;
 Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable$AnimationScaleListState;
 Lcom/android/internal/graphics/drawable/AnimationScaleListDrawable;
+Lcom/android/internal/infra/-$$Lambda$7-CJJfrUZBVuXZyYFEWBNh8Mky8;
+Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcCU8EMuMNAy4;
+Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;
 Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw;
+Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$PendingRequest$IBoaBGXZQEXJr69u3aJF-LCJ42Y;
+Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;
+Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$ocrHd68Md9x6FfAzVQ6w8MAjFqY;
+Lcom/android/internal/infra/-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A;
 Lcom/android/internal/infra/AbstractMultiplePendingRequestsRemoteService;
 Lcom/android/internal/infra/AbstractRemoteService$BasePendingRequest;
+Lcom/android/internal/infra/AbstractRemoteService$MyAsyncPendingRequest;
 Lcom/android/internal/infra/AbstractRemoteService$PendingRequest;
 Lcom/android/internal/infra/AbstractRemoteService$RemoteServiceConnection;
 Lcom/android/internal/infra/AbstractRemoteService$VultureCallback;
 Lcom/android/internal/infra/AbstractRemoteService;
 Lcom/android/internal/infra/AbstractSinglePendingRequestRemoteService;
+Lcom/android/internal/infra/ServiceConnector$Job;
 Lcom/android/internal/infra/WhitelistHelper;
+Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;
 Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub;
 Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations;
+Lcom/android/internal/inputmethod/InputMethodDebug;
+Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations$OpsHolder;
+Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations;
+Lcom/android/internal/inputmethod/InputMethodPrivilegedOperationsRegistry;
+Lcom/android/internal/inputmethod/SubtypeLocaleUtils;
 Lcom/android/internal/location/GpsNetInitiatedHandler$1;
 Lcom/android/internal/location/GpsNetInitiatedHandler$2;
 Lcom/android/internal/location/GpsNetInitiatedHandler;
+Lcom/android/internal/location/ILocationProvider$Stub$Proxy;
+Lcom/android/internal/location/ILocationProvider$Stub;
+Lcom/android/internal/location/ILocationProvider;
+Lcom/android/internal/location/ILocationProviderManager$Stub$Proxy;
 Lcom/android/internal/location/ILocationProviderManager$Stub;
 Lcom/android/internal/location/ILocationProviderManager;
 Lcom/android/internal/location/ProviderProperties$1;
@@ -37342,34 +28901,47 @@
 Lcom/android/internal/location/gnssmetrics/GnssMetrics$GnssPowerMetrics;
 Lcom/android/internal/location/gnssmetrics/GnssMetrics$Statistics;
 Lcom/android/internal/location/gnssmetrics/GnssMetrics;
+Lcom/android/internal/location/nano/GnssLogsProto$GnssLog;
+Lcom/android/internal/location/nano/GnssLogsProto$PowerMetrics;
 Lcom/android/internal/logging/AndroidConfig;
 Lcom/android/internal/logging/AndroidHandler$1;
 Lcom/android/internal/logging/AndroidHandler;
 Lcom/android/internal/logging/EventLogTags;
 Lcom/android/internal/logging/MetricsLogger;
+Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;
 Lcom/android/internal/net/INetworkWatchlistManager$Stub;
 Lcom/android/internal/net/INetworkWatchlistManager;
-Lcom/android/internal/net/NetworkStatsFactory;
+Lcom/android/internal/net/VpnConfig$1;
+Lcom/android/internal/net/VpnConfig;
+Lcom/android/internal/net/VpnInfo$1;
 Lcom/android/internal/net/VpnInfo;
+Lcom/android/internal/net/VpnProfile$1;
+Lcom/android/internal/net/VpnProfile;
 Lcom/android/internal/notification/SystemNotificationChannels;
+Lcom/android/internal/os/-$$Lambda$6-ytl6NLMGWt_iQr4_PfakNWUKQ;
 Lcom/android/internal/os/-$$Lambda$BatteryStatsImpl$7bfIWpn8X2h-hSzLD6dcuK4Ljuw;
 Lcom/android/internal/os/-$$Lambda$BatteryStatsImpl$B-TmZhQb712ePnuJTxvMe7P-YwQ;
 Lcom/android/internal/os/-$$Lambda$BatteryStatsImpl$Xvt9xdVPtevMWGIjcbxXf0_mr_c;
 Lcom/android/internal/os/-$$Lambda$BatteryStatsImpl$_l2oiaRDRhjCXI_PwXPsAhrgegI;
+Lcom/android/internal/os/-$$Lambda$BinderCallsStats$sqXweH5BoxhmZvI188ctqYiACRk;
 Lcom/android/internal/os/-$$Lambda$RuntimeInit$ep4ioD9YINkHI5Q1wZ0N_7VFAOg;
 Lcom/android/internal/os/-$$Lambda$ZygoteConnection$KxVsZ-s4KsanePOHCU5JcuypPik;
 Lcom/android/internal/os/-$$Lambda$ZygoteConnection$xjqM7qW7vAjTqh2tR5XRF5Vn5mk;
+Lcom/android/internal/os/-$$Lambda$sHtqZgGVjxOf9IJdAdZO6gwD_Do;
 Lcom/android/internal/os/AndroidPrintStream;
+Lcom/android/internal/os/AppFuseMount;
 Lcom/android/internal/os/AtomicDirectory;
-Lcom/android/internal/os/AtomicFile;
 Lcom/android/internal/os/BackgroundThread;
 Lcom/android/internal/os/BatterySipper$DrainType;
 Lcom/android/internal/os/BatterySipper;
+Lcom/android/internal/os/BatteryStatsHelper$1;
 Lcom/android/internal/os/BatteryStatsHelper;
 Lcom/android/internal/os/BatteryStatsHistory$1;
 Lcom/android/internal/os/BatteryStatsHistory;
 Lcom/android/internal/os/BatteryStatsImpl$1;
 Lcom/android/internal/os/BatteryStatsImpl$2;
+Lcom/android/internal/os/BatteryStatsImpl$3;
+Lcom/android/internal/os/BatteryStatsImpl$4;
 Lcom/android/internal/os/BatteryStatsImpl$5;
 Lcom/android/internal/os/BatteryStatsImpl$6;
 Lcom/android/internal/os/BatteryStatsImpl$BatchTimer;
@@ -37403,15 +28975,20 @@
 Lcom/android/internal/os/BatteryStatsImpl$Uid$Sensor;
 Lcom/android/internal/os/BatteryStatsImpl$Uid$Wakelock;
 Lcom/android/internal/os/BatteryStatsImpl$Uid;
+Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;
 Lcom/android/internal/os/BatteryStatsImpl$UserInfoProvider;
 Lcom/android/internal/os/BatteryStatsImpl;
 Lcom/android/internal/os/BinderCallsStats$CallStat;
+Lcom/android/internal/os/BinderCallsStats$CallStatKey;
+Lcom/android/internal/os/BinderCallsStats$ExportedCallStat;
 Lcom/android/internal/os/BinderCallsStats$Injector;
 Lcom/android/internal/os/BinderCallsStats$OverflowBinder;
 Lcom/android/internal/os/BinderCallsStats$UidEntry;
 Lcom/android/internal/os/BinderCallsStats;
+Lcom/android/internal/os/BinderDeathDispatcher$RecipientsInfo;
 Lcom/android/internal/os/BinderInternal$BinderProxyLimitListener;
 Lcom/android/internal/os/BinderInternal$BinderProxyLimitListenerDelegate;
+Lcom/android/internal/os/BinderInternal$CallSession;
 Lcom/android/internal/os/BinderInternal$GcWatcher;
 Lcom/android/internal/os/BinderInternal$Observer;
 Lcom/android/internal/os/BinderInternal$WorkSourceProvider;
@@ -37436,11 +29013,16 @@
 Lcom/android/internal/os/IResultReceiver$Stub$Proxy;
 Lcom/android/internal/os/IResultReceiver$Stub;
 Lcom/android/internal/os/IResultReceiver;
+Lcom/android/internal/os/IShellCallback$Stub$Proxy;
+Lcom/android/internal/os/IShellCallback$Stub;
+Lcom/android/internal/os/IShellCallback;
 Lcom/android/internal/os/KernelCpuProcStringReader$ProcFileIterator;
 Lcom/android/internal/os/KernelCpuProcStringReader;
 Lcom/android/internal/os/KernelCpuSpeedReader;
 Lcom/android/internal/os/KernelCpuThreadReader$FrequencyBucketCreator;
 Lcom/android/internal/os/KernelCpuThreadReader$Injector;
+Lcom/android/internal/os/KernelCpuThreadReader$ProcessCpuUsage;
+Lcom/android/internal/os/KernelCpuThreadReader$ThreadCpuUsage;
 Lcom/android/internal/os/KernelCpuThreadReader;
 Lcom/android/internal/os/KernelCpuThreadReaderSettingsObserver$UidPredicate;
 Lcom/android/internal/os/KernelCpuThreadReaderSettingsObserver;
@@ -37451,6 +29033,7 @@
 Lcom/android/internal/os/KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader;
 Lcom/android/internal/os/KernelCpuUidTimeReader;
 Lcom/android/internal/os/KernelMemoryBandwidthStats;
+Lcom/android/internal/os/KernelSingleUidTimeReader;
 Lcom/android/internal/os/KernelWakelockReader;
 Lcom/android/internal/os/KernelWakelockStats$Entry;
 Lcom/android/internal/os/KernelWakelockStats;
@@ -37458,6 +29041,7 @@
 Lcom/android/internal/os/LoggingPrintStream;
 Lcom/android/internal/os/LooperStats$DispatchSession;
 Lcom/android/internal/os/LooperStats$Entry;
+Lcom/android/internal/os/LooperStats$ExportedEntry;
 Lcom/android/internal/os/LooperStats;
 Lcom/android/internal/os/MediaPowerCalculator;
 Lcom/android/internal/os/MemoryPowerCalculator;
@@ -37484,89 +29068,137 @@
 Lcom/android/internal/os/RuntimeInit;
 Lcom/android/internal/os/SensorPowerCalculator;
 Lcom/android/internal/os/SomeArgs;
+Lcom/android/internal/os/StatsdHiddenApiUsageLogger;
 Lcom/android/internal/os/StoragedUidIoStatsReader;
+Lcom/android/internal/os/TransferPipe;
 Lcom/android/internal/os/WakelockPowerCalculator;
 Lcom/android/internal/os/WifiPowerCalculator;
+Lcom/android/internal/os/WifiPowerEstimator;
+Lcom/android/internal/os/WrapperInit;
 Lcom/android/internal/os/Zygote;
 Lcom/android/internal/os/ZygoteArguments;
-Lcom/android/internal/os/ZygoteConnection$HiddenApiUsageLogger;
 Lcom/android/internal/os/ZygoteConnection;
 Lcom/android/internal/os/ZygoteInit;
+Lcom/android/internal/os/ZygoteSecurityException;
+Lcom/android/internal/os/ZygoteServer$UsapPoolRefillAction;
 Lcom/android/internal/os/ZygoteServer;
 Lcom/android/internal/policy/DecorContext;
 Lcom/android/internal/policy/DecorView$1;
+Lcom/android/internal/policy/DecorView$2;
+Lcom/android/internal/policy/DecorView$3;
 Lcom/android/internal/policy/DecorView$ColorViewAttributes;
 Lcom/android/internal/policy/DecorView$ColorViewState;
 Lcom/android/internal/policy/DecorView;
 Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget;
 Lcom/android/internal/policy/DividerSnapAlgorithm;
 Lcom/android/internal/policy/DockedDividerUtils;
+Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;
+Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;
+Lcom/android/internal/policy/IKeyguardDismissCallback;
+Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;
 Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub;
 Lcom/android/internal/policy/IKeyguardDrawnCallback;
+Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;
+Lcom/android/internal/policy/IKeyguardExitCallback$Stub;
+Lcom/android/internal/policy/IKeyguardExitCallback;
+Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;
 Lcom/android/internal/policy/IKeyguardService$Stub;
 Lcom/android/internal/policy/IKeyguardService;
+Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;
 Lcom/android/internal/policy/IKeyguardStateCallback$Stub;
 Lcom/android/internal/policy/IKeyguardStateCallback;
+Lcom/android/internal/policy/IShortcutService$Stub$Proxy;
 Lcom/android/internal/policy/IShortcutService$Stub;
 Lcom/android/internal/policy/IShortcutService;
 Lcom/android/internal/policy/PhoneFallbackEventHandler;
 Lcom/android/internal/policy/PhoneLayoutInflater;
 Lcom/android/internal/policy/PhoneWindow$1;
 Lcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState$1;
+Lcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;
 Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;
 Lcom/android/internal/policy/PhoneWindow$PhoneWindowMenuCallback;
 Lcom/android/internal/policy/PhoneWindow$RotationWatcher$1;
 Lcom/android/internal/policy/PhoneWindow$RotationWatcher;
 Lcom/android/internal/policy/PhoneWindow;
-Lcom/android/internal/policy/PipSnapAlgorithm;
 Lcom/android/internal/policy/ScreenDecorationsUtils;
+Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
 Lcom/android/internal/statusbar/IStatusBar$Stub;
 Lcom/android/internal/statusbar/IStatusBar;
+Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;
 Lcom/android/internal/statusbar/IStatusBarService$Stub;
 Lcom/android/internal/statusbar/IStatusBarService;
+Lcom/android/internal/statusbar/NotificationVisibility$1;
+Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;
+Lcom/android/internal/statusbar/NotificationVisibility;
+Lcom/android/internal/statusbar/StatusBarIcon$1;
 Lcom/android/internal/statusbar/StatusBarIcon;
+Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;
+Lcom/android/internal/telecom/IConnectionService$Stub;
+Lcom/android/internal/telecom/IConnectionService;
+Lcom/android/internal/telecom/IInCallService$Stub$Proxy;
+Lcom/android/internal/telecom/IInCallService$Stub;
+Lcom/android/internal/telecom/IInCallService;
 Lcom/android/internal/telecom/ITelecomService$Stub$Proxy;
 Lcom/android/internal/telecom/ITelecomService$Stub;
 Lcom/android/internal/telecom/ITelecomService;
 Lcom/android/internal/telecom/IVideoCallback;
+Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;
 Lcom/android/internal/telecom/IVideoProvider$Stub;
 Lcom/android/internal/telecom/IVideoProvider;
+Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;
+Lcom/android/internal/telecom/RemoteServiceCallback$Stub;
+Lcom/android/internal/telecom/RemoteServiceCallback;
+Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$55347QtGjuukX-px3jYZkJd_z3U;
 Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$DcLtrTEtdlCd4WOev4Zk79vrSko;
-Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$GxCl_qV1anWayDxo4dQIuZZ5PC0;
 Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$WtGtOenjqxSBoW5BUjT-VlNoSTM;
-Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$o5faRHxto_4PRqL7yYyTpAmBXy4;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$1zkPy06BwndFkKrGCUI1ORIPJcI;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2WGP2Bp11k7_Xwi1N4YefElOUuM;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$8HFbCDJDN1mrLJG980qYH5MGqMk;
+Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2xgrYNleR8FFzFT8hEQx3mDtZ8g;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$AjZFvwh3Ujx5W3fleFNksc6bLf0;
+Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$Ja9yTBcEYPqTRBIP-hL0otixVeE;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$P0j9hvO3e-UE9_1i1QM_ujl8Bpo;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$U28a_EGx2cvmQhDfRRgonMt5Zrc;
+Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$ZOtVAnuhxrXl2L906I6eTOentP0;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$bWluhZvk2X-dQ0UidKfdpd0kwuw;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$hh4N6_N4-PPm_vWjCdCRvS8--Cw;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$qSXnUMuIwAZ0TQjtyVEfznh1w8o;
+Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$rpyQeO7zACcc5v4krwU9_qRMHL8;
 Lcom/android/internal/telephony/-$$Lambda$PhoneSwitcher$WfAxZbJDpCUxBytiUchQ87aGijQ;
+Lcom/android/internal/telephony/-$$Lambda$RIL$803u4JiCud_JSoDndvAhT13ZZqU;
+Lcom/android/internal/telephony/-$$Lambda$RIL$Ir4pOMTf7R0Jtw4O3F7JgMVtXO4;
+Lcom/android/internal/telephony/-$$Lambda$RIL$ZGWeCQ9boMO1_J1_yQ82l_jK-Nc;
+Lcom/android/internal/telephony/-$$Lambda$RIL$zYsQZAc3z9bM5fCaq_J0dn5kjjo;
+Lcom/android/internal/telephony/-$$Lambda$RILConstants$ODSbRKyUeaOFMcez-ZudOmaKCBw;
+Lcom/android/internal/telephony/-$$Lambda$RILConstants$zIAjDPNpW8a5C22QbMmMwM64vD8;
 Lcom/android/internal/telephony/-$$Lambda$RILRequest$VaC9ddQXT8qxCl7rcNKtUadFQoI;
+Lcom/android/internal/telephony/-$$Lambda$RadioIndication$GND6XxOOm1d_Ro76zEUFjA9OrEA;
 Lcom/android/internal/telephony/-$$Lambda$SubscriptionController$Nt_ojdeqo4C2mbuwymYLvwgOLGo;
 Lcom/android/internal/telephony/-$$Lambda$SubscriptionController$VCQsMNqRHpN3RyoXYzh2YUwA2yc;
 Lcom/android/internal/telephony/-$$Lambda$SubscriptionController$u5xE-urXR6ElZ50305_6guo20Fc;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$-zZXM9oMRZ3vZz7dJOG19J00Bmw;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$D5yF1HbS4cvCyoAj3FESkPtA_0g;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$MMx9iQX0JVqqMPLTUZhdBubFSzU;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$DY4i_CG7hrAeejGLeh3hMUZySnw;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$UFyB0ValfLD0rdGDibCjTnGFkeo;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$Y5woGfEDKrozRViLH7WF93qPEno;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$ZTY4uxKw17CHcHQzbBUF7m-dN-E;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$ecTEeMEIjOEa2z5W3wjqiicibbY;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$qyDxq2AWyReUxdc6HttVGQeDD3Y;
+Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$tLUuQ7lYu8EjRd038qzQlDm-CtA;
+Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$09rMKC8001jAR0zFrzzlPx26Xjs;
 Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$DKjB_mCxFOHomOyKLPFU9-9Dywc;
+Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$UYUq9z2WZwxqOLXquU0tTNN9wAs;
 Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$eUdIxJOKoyVP5UmFJtWXBUO93Qk;
 Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$nLdppNQT1Bv7QyIU3LwAwVD2K60;
-Lcom/android/internal/telephony/-$$Lambda$TelephonyPermissions$LxEEC4irBSbjD1lSC4EeVLgFY9I;
+Lcom/android/internal/telephony/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;
+Lcom/android/internal/telephony/-$$Lambda$WWHOcG5P4-jgjzPPgLwm-wN15OM;
+Lcom/android/internal/telephony/ATParseEx;
 Lcom/android/internal/telephony/AppSmsManager;
 Lcom/android/internal/telephony/BaseCommands;
+Lcom/android/internal/telephony/BlockChecker;
 Lcom/android/internal/telephony/Call$SrvccState;
 Lcom/android/internal/telephony/Call$State;
 Lcom/android/internal/telephony/Call;
+Lcom/android/internal/telephony/CallForwardInfo;
 Lcom/android/internal/telephony/CallManager$CallManagerHandler;
 Lcom/android/internal/telephony/CallManager;
 Lcom/android/internal/telephony/CallStateException;
 Lcom/android/internal/telephony/CallTracker;
-Lcom/android/internal/telephony/CallerInfo;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$OnQueryCompleteListener;
 Lcom/android/internal/telephony/CarrierActionAgent$1;
 Lcom/android/internal/telephony/CarrierActionAgent;
 Lcom/android/internal/telephony/CarrierAppUtils;
@@ -37580,6 +29212,7 @@
 Lcom/android/internal/telephony/CarrierServiceBindHelper$1;
 Lcom/android/internal/telephony/CarrierServiceBindHelper$2;
 Lcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;
+Lcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServiceConnection;
 Lcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServicePackageMonitor;
 Lcom/android/internal/telephony/CarrierServiceBindHelper;
 Lcom/android/internal/telephony/CarrierServiceStateTracker$1;
@@ -37589,9 +29222,13 @@
 Lcom/android/internal/telephony/CarrierServiceStateTracker$NotificationType;
 Lcom/android/internal/telephony/CarrierServiceStateTracker$PrefNetworkNotification;
 Lcom/android/internal/telephony/CarrierServiceStateTracker;
+Lcom/android/internal/telephony/CarrierServicesSmsFilter$CallbackTimeoutHandler;
+Lcom/android/internal/telephony/CarrierServicesSmsFilter$CarrierServicesSmsFilterCallbackInterface;
+Lcom/android/internal/telephony/CarrierServicesSmsFilter;
 Lcom/android/internal/telephony/CarrierSignalAgent$1;
 Lcom/android/internal/telephony/CarrierSignalAgent;
-Lcom/android/internal/telephony/CellBroadcastHandler;
+Lcom/android/internal/telephony/CarrierSmsUtils;
+Lcom/android/internal/telephony/CellNetworkScanResult$1;
 Lcom/android/internal/telephony/CellNetworkScanResult;
 Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider$1;
 Lcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;
@@ -37603,6 +29240,8 @@
 Lcom/android/internal/telephony/CommandException$Error;
 Lcom/android/internal/telephony/CommandException;
 Lcom/android/internal/telephony/CommandsInterface;
+Lcom/android/internal/telephony/Connection$Listener;
+Lcom/android/internal/telephony/Connection$PostDialState;
 Lcom/android/internal/telephony/Connection;
 Lcom/android/internal/telephony/DctConstants$Activity;
 Lcom/android/internal/telephony/DctConstants$State;
@@ -37614,6 +29253,8 @@
 Lcom/android/internal/telephony/DeviceStateMonitor$3;
 Lcom/android/internal/telephony/DeviceStateMonitor$AccessNetworkThresholds;
 Lcom/android/internal/telephony/DeviceStateMonitor;
+Lcom/android/internal/telephony/DriverCall$State;
+Lcom/android/internal/telephony/DriverCall;
 Lcom/android/internal/telephony/EncodeException;
 Lcom/android/internal/telephony/ExponentialBackoff$1;
 Lcom/android/internal/telephony/ExponentialBackoff$HandlerAdapter;
@@ -37622,35 +29263,50 @@
 Lcom/android/internal/telephony/GsmAlphabet;
 Lcom/android/internal/telephony/GsmCdmaCall;
 Lcom/android/internal/telephony/GsmCdmaCallTracker$1;
+Lcom/android/internal/telephony/GsmCdmaCallTracker$2;
+Lcom/android/internal/telephony/GsmCdmaCallTracker$3;
 Lcom/android/internal/telephony/GsmCdmaCallTracker;
 Lcom/android/internal/telephony/GsmCdmaConnection;
 Lcom/android/internal/telephony/GsmCdmaPhone$1;
 Lcom/android/internal/telephony/GsmCdmaPhone$2;
 Lcom/android/internal/telephony/GsmCdmaPhone$3;
+Lcom/android/internal/telephony/GsmCdmaPhone$Cfu;
 Lcom/android/internal/telephony/GsmCdmaPhone;
 Lcom/android/internal/telephony/HalVersion;
 Lcom/android/internal/telephony/HardwareConfig;
+Lcom/android/internal/telephony/HbpcdUtils;
 Lcom/android/internal/telephony/ICarrierConfigLoader$Stub$Proxy;
 Lcom/android/internal/telephony/ICarrierConfigLoader$Stub;
 Lcom/android/internal/telephony/ICarrierConfigLoader;
+Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;
 Lcom/android/internal/telephony/IIccPhoneBook$Stub;
 Lcom/android/internal/telephony/IIccPhoneBook;
+Lcom/android/internal/telephony/IIntegerConsumer$Stub$Proxy;
+Lcom/android/internal/telephony/IIntegerConsumer$Stub;
+Lcom/android/internal/telephony/IIntegerConsumer;
+Lcom/android/internal/telephony/IMms$Stub$Proxy;
 Lcom/android/internal/telephony/IMms$Stub;
 Lcom/android/internal/telephony/IMms;
+Lcom/android/internal/telephony/INumberVerificationCallback$Stub$Proxy;
+Lcom/android/internal/telephony/INumberVerificationCallback$Stub;
 Lcom/android/internal/telephony/INumberVerificationCallback;
 Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub$Proxy;
 Lcom/android/internal/telephony/IOnSubscriptionsChangedListener$Stub;
 Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;
+Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;
 Lcom/android/internal/telephony/IPhoneStateListener$Stub;
 Lcom/android/internal/telephony/IPhoneStateListener;
 Lcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;
 Lcom/android/internal/telephony/IPhoneSubInfo$Stub;
 Lcom/android/internal/telephony/IPhoneSubInfo;
+Lcom/android/internal/telephony/ISetOpportunisticDataCallback$Stub$Proxy;
 Lcom/android/internal/telephony/ISetOpportunisticDataCallback$Stub;
 Lcom/android/internal/telephony/ISetOpportunisticDataCallback;
+Lcom/android/internal/telephony/ISms$Stub$Proxy;
 Lcom/android/internal/telephony/ISms$Stub;
 Lcom/android/internal/telephony/ISms;
 Lcom/android/internal/telephony/ISmsImplBase;
+Lcom/android/internal/telephony/IState;
 Lcom/android/internal/telephony/ISub$Stub$Proxy;
 Lcom/android/internal/telephony/ISub$Stub;
 Lcom/android/internal/telephony/ISub;
@@ -37660,9 +29316,11 @@
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;
 Lcom/android/internal/telephony/ITelephonyRegistry$Stub;
 Lcom/android/internal/telephony/ITelephonyRegistry;
+Lcom/android/internal/telephony/IWapPushManager;
 Lcom/android/internal/telephony/IccCard;
 Lcom/android/internal/telephony/IccCardConstants$State;
 Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$1;
+Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;
 Lcom/android/internal/telephony/IccPhoneBookInterfaceManager;
 Lcom/android/internal/telephony/IccProvider;
 Lcom/android/internal/telephony/IccSmsInterfaceManager$1;
@@ -37676,22 +29334,30 @@
 Lcom/android/internal/telephony/ImsSmsDispatcher;
 Lcom/android/internal/telephony/InboundSmsHandler$1;
 Lcom/android/internal/telephony/InboundSmsHandler$2;
+Lcom/android/internal/telephony/InboundSmsHandler$CarrierServicesSmsFilterCallback;
 Lcom/android/internal/telephony/InboundSmsHandler$DefaultState;
 Lcom/android/internal/telephony/InboundSmsHandler$DeliveringState;
 Lcom/android/internal/telephony/InboundSmsHandler$IdleState;
 Lcom/android/internal/telephony/InboundSmsHandler$NewMessageNotificationActionReceiver;
+Lcom/android/internal/telephony/InboundSmsHandler$SmsBroadcastReceiver;
 Lcom/android/internal/telephony/InboundSmsHandler$StartupState;
 Lcom/android/internal/telephony/InboundSmsHandler$WaitingState;
 Lcom/android/internal/telephony/InboundSmsHandler;
+Lcom/android/internal/telephony/InboundSmsTracker;
 Lcom/android/internal/telephony/IntRangeManager$ClientRange;
 Lcom/android/internal/telephony/IntRangeManager$IntRange;
 Lcom/android/internal/telephony/IntRangeManager;
 Lcom/android/internal/telephony/IntentBroadcaster$1;
 Lcom/android/internal/telephony/IntentBroadcaster;
+Lcom/android/internal/telephony/LastCallFailCause;
+Lcom/android/internal/telephony/LinkCapacityEstimate;
+Lcom/android/internal/telephony/LocalLog;
 Lcom/android/internal/telephony/LocaleTracker$1;
 Lcom/android/internal/telephony/LocaleTracker;
 Lcom/android/internal/telephony/MccTable$MccEntry;
 Lcom/android/internal/telephony/MccTable;
+Lcom/android/internal/telephony/MmiCode;
+Lcom/android/internal/telephony/MultiSimSettingController$1;
 Lcom/android/internal/telephony/MultiSimSettingController$UpdateDefaultAction;
 Lcom/android/internal/telephony/MultiSimSettingController;
 Lcom/android/internal/telephony/NetworkRegistrationManager$1;
@@ -37702,37 +29368,35 @@
 Lcom/android/internal/telephony/NetworkScanRequestTracker$1;
 Lcom/android/internal/telephony/NetworkScanRequestTracker$NetworkScanRequestScheduler;
 Lcom/android/internal/telephony/NetworkScanRequestTracker;
-Lcom/android/internal/telephony/NewNitzStateMachine$1;
-Lcom/android/internal/telephony/NewNitzStateMachine;
-Lcom/android/internal/telephony/NewTimeServiceHelper$1;
-Lcom/android/internal/telephony/NewTimeServiceHelper$Listener;
-Lcom/android/internal/telephony/NewTimeServiceHelper;
 Lcom/android/internal/telephony/NitzData;
 Lcom/android/internal/telephony/NitzStateMachine$DeviceState;
 Lcom/android/internal/telephony/NitzStateMachine;
+Lcom/android/internal/telephony/NitzStateMachineImpl;
 Lcom/android/internal/telephony/OemHookIndication;
 Lcom/android/internal/telephony/OemHookResponse;
+Lcom/android/internal/telephony/OperatorInfo$1;
+Lcom/android/internal/telephony/OperatorInfo$State;
 Lcom/android/internal/telephony/OperatorInfo;
-Lcom/android/internal/telephony/Phone$1;
 Lcom/android/internal/telephony/Phone;
-Lcom/android/internal/telephony/PhoneConfigurationManager$MainThreadHandler;
 Lcom/android/internal/telephony/PhoneConfigurationManager;
-Lcom/android/internal/telephony/PhoneConfigurationModels;
 Lcom/android/internal/telephony/PhoneConstantConversions$1;
 Lcom/android/internal/telephony/PhoneConstantConversions;
 Lcom/android/internal/telephony/PhoneConstants$DataState;
 Lcom/android/internal/telephony/PhoneConstants$State;
 Lcom/android/internal/telephony/PhoneFactory;
 Lcom/android/internal/telephony/PhoneInternalInterface$DataActivityState;
+Lcom/android/internal/telephony/PhoneInternalInterface$DialArgs$Builder;
+Lcom/android/internal/telephony/PhoneInternalInterface$DialArgs;
+Lcom/android/internal/telephony/PhoneInternalInterface$SuppService;
 Lcom/android/internal/telephony/PhoneInternalInterface;
 Lcom/android/internal/telephony/PhoneNotifier;
 Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper;
 Lcom/android/internal/telephony/PhoneSubInfoController$PermissionCheckHelper;
 Lcom/android/internal/telephony/PhoneSubInfoController;
 Lcom/android/internal/telephony/PhoneSwitcher$1;
-Lcom/android/internal/telephony/PhoneSwitcher$3;
-Lcom/android/internal/telephony/PhoneSwitcher$4;
-Lcom/android/internal/telephony/PhoneSwitcher$5;
+Lcom/android/internal/telephony/PhoneSwitcher$2;
+Lcom/android/internal/telephony/PhoneSwitcher$DefaultNetworkCallback;
+Lcom/android/internal/telephony/PhoneSwitcher$EmergencyOverrideRequest;
 Lcom/android/internal/telephony/PhoneSwitcher$PhoneState;
 Lcom/android/internal/telephony/PhoneSwitcher$PhoneSwitcherNetworkRequestListener;
 Lcom/android/internal/telephony/PhoneSwitcher;
@@ -37743,6 +29407,7 @@
 Lcom/android/internal/telephony/RIL;
 Lcom/android/internal/telephony/RILConstants;
 Lcom/android/internal/telephony/RILRequest;
+Lcom/android/internal/telephony/RadioBugDetector;
 Lcom/android/internal/telephony/RadioCapability;
 Lcom/android/internal/telephony/RadioConfig$ServiceDeathRecipient;
 Lcom/android/internal/telephony/RadioConfig;
@@ -37752,11 +29417,17 @@
 Lcom/android/internal/telephony/RadioResponse;
 Lcom/android/internal/telephony/RatRatcheter$1;
 Lcom/android/internal/telephony/RatRatcheter;
+Lcom/android/internal/telephony/RegistrantList;
 Lcom/android/internal/telephony/RestrictedState;
 Lcom/android/internal/telephony/RetryManager$RetryRec;
 Lcom/android/internal/telephony/RetryManager;
 Lcom/android/internal/telephony/RilWakelockInfo;
+Lcom/android/internal/telephony/SMSDispatcher$DataSmsSender;
 Lcom/android/internal/telephony/SMSDispatcher$SettingsObserver;
+Lcom/android/internal/telephony/SMSDispatcher$SmsSender;
+Lcom/android/internal/telephony/SMSDispatcher$SmsSenderCallback;
+Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
+Lcom/android/internal/telephony/SMSDispatcher$TextSmsSender;
 Lcom/android/internal/telephony/SMSDispatcher;
 Lcom/android/internal/telephony/ServiceStateTracker$1;
 Lcom/android/internal/telephony/ServiceStateTracker$SstSubscriptionsChangedListener;
@@ -37769,21 +29440,27 @@
 Lcom/android/internal/telephony/SmsApplication;
 Lcom/android/internal/telephony/SmsBroadcastUndelivered$1;
 Lcom/android/internal/telephony/SmsBroadcastUndelivered$ScanRawTableThread;
+Lcom/android/internal/telephony/SmsBroadcastUndelivered$SmsReferenceKey;
 Lcom/android/internal/telephony/SmsBroadcastUndelivered;
+Lcom/android/internal/telephony/SmsConstants$MessageClass;
+Lcom/android/internal/telephony/SmsController;
 Lcom/android/internal/telephony/SmsDispatchersController$1;
 Lcom/android/internal/telephony/SmsDispatchersController;
+Lcom/android/internal/telephony/SmsMessageBase;
+Lcom/android/internal/telephony/SmsNumberUtils;
+Lcom/android/internal/telephony/SmsPermissions;
+Lcom/android/internal/telephony/SmsResponse;
 Lcom/android/internal/telephony/SmsStorageMonitor$1;
 Lcom/android/internal/telephony/SmsStorageMonitor;
 Lcom/android/internal/telephony/SmsUsageMonitor$SettingsObserver;
 Lcom/android/internal/telephony/SmsUsageMonitor$SettingsObserverHandler;
 Lcom/android/internal/telephony/SmsUsageMonitor;
-Lcom/android/internal/telephony/SubscriptionController$ScLocalLog;
+Lcom/android/internal/telephony/State;
+Lcom/android/internal/telephony/StateMachine;
 Lcom/android/internal/telephony/SubscriptionController;
 Lcom/android/internal/telephony/SubscriptionInfoUpdater$1;
+Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;
 Lcom/android/internal/telephony/SubscriptionInfoUpdater;
-Lcom/android/internal/telephony/SubscriptionMonitor$1;
-Lcom/android/internal/telephony/SubscriptionMonitor$2;
-Lcom/android/internal/telephony/SubscriptionMonitor;
 Lcom/android/internal/telephony/TelephonyCapabilities;
 Lcom/android/internal/telephony/TelephonyComponentFactory$InjectedComponents;
 Lcom/android/internal/telephony/TelephonyComponentFactory;
@@ -37791,38 +29468,68 @@
 Lcom/android/internal/telephony/TelephonyPermissions;
 Lcom/android/internal/telephony/TelephonyTester$1;
 Lcom/android/internal/telephony/TelephonyTester;
+Lcom/android/internal/telephony/TimeServiceHelper;
 Lcom/android/internal/telephony/TimeZoneLookupHelper$CountryResult;
-Lcom/android/internal/telephony/TimeZoneLookupHelper$OffsetResult;
 Lcom/android/internal/telephony/TimeZoneLookupHelper;
+Lcom/android/internal/telephony/UUSInfo;
 Lcom/android/internal/telephony/UiccPhoneBookController;
-Lcom/android/internal/telephony/UiccSmsController;
+Lcom/android/internal/telephony/VisualVoicemailSmsFilter$1;
+Lcom/android/internal/telephony/VisualVoicemailSmsFilter$PhoneAccountHandleConverter;
+Lcom/android/internal/telephony/VisualVoicemailSmsFilter;
 Lcom/android/internal/telephony/WakeLockStateMachine$1;
 Lcom/android/internal/telephony/WakeLockStateMachine$DefaultState;
 Lcom/android/internal/telephony/WakeLockStateMachine$IdleState;
 Lcom/android/internal/telephony/WakeLockStateMachine$WaitingState;
 Lcom/android/internal/telephony/WakeLockStateMachine;
 Lcom/android/internal/telephony/WapPushOverSms$1;
-Lcom/android/internal/telephony/WapPushOverSms$BindServiceThread;
 Lcom/android/internal/telephony/WapPushOverSms;
+Lcom/android/internal/telephony/cat/AppInterface$CommandType;
 Lcom/android/internal/telephony/cat/AppInterface;
+Lcom/android/internal/telephony/cat/BIPClientParams;
+Lcom/android/internal/telephony/cat/BerTlv;
+Lcom/android/internal/telephony/cat/CallSetupParams;
+Lcom/android/internal/telephony/cat/CatCmdMessage$1;
+Lcom/android/internal/telephony/cat/CatCmdMessage;
 Lcom/android/internal/telephony/cat/CatException;
 Lcom/android/internal/telephony/cat/CatLog;
+Lcom/android/internal/telephony/cat/CatResponseMessage;
+Lcom/android/internal/telephony/cat/CatService$1;
 Lcom/android/internal/telephony/cat/CatService;
+Lcom/android/internal/telephony/cat/CommandParams;
+Lcom/android/internal/telephony/cat/CommandParamsFactory$1;
 Lcom/android/internal/telephony/cat/CommandParamsFactory;
+Lcom/android/internal/telephony/cat/ComprehensionTlv;
+Lcom/android/internal/telephony/cat/ComprehensionTlvTag;
+Lcom/android/internal/telephony/cat/DTTZResponseData;
+Lcom/android/internal/telephony/cat/DisplayTextParams;
 Lcom/android/internal/telephony/cat/IconLoader;
+Lcom/android/internal/telephony/cat/LanguageParams;
+Lcom/android/internal/telephony/cat/LanguageResponseData;
+Lcom/android/internal/telephony/cat/LaunchBrowserParams;
+Lcom/android/internal/telephony/cat/ResponseData;
+Lcom/android/internal/telephony/cat/ResultCode;
 Lcom/android/internal/telephony/cat/ResultException;
+Lcom/android/internal/telephony/cat/RilMessage;
 Lcom/android/internal/telephony/cat/RilMessageDecoder$StateCmdParamsReady;
 Lcom/android/internal/telephony/cat/RilMessageDecoder$StateStart;
 Lcom/android/internal/telephony/cat/RilMessageDecoder;
+Lcom/android/internal/telephony/cat/ValueParser;
+Lcom/android/internal/telephony/cdma/CdmaCallWaitingNotification;
 Lcom/android/internal/telephony/cdma/CdmaInboundSmsHandler;
 Lcom/android/internal/telephony/cdma/CdmaSMSDispatcher;
-Lcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler$1;
-Lcom/android/internal/telephony/cdma/CdmaServiceCategoryProgramHandler;
 Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;
 Lcom/android/internal/telephony/cdma/CdmaSubscriptionSourceManager;
 Lcom/android/internal/telephony/cdma/EriInfo;
 Lcom/android/internal/telephony/cdma/EriManager$EriFile;
 Lcom/android/internal/telephony/cdma/EriManager;
+Lcom/android/internal/telephony/cdma/SmsMessage;
+Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData$1;
+Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData$Builder;
+Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData;
+Lcom/android/internal/telephony/cdnr/CarrierDisplayNameResolver$CarrierDisplayNameConditionRule;
+Lcom/android/internal/telephony/cdnr/CarrierDisplayNameResolver;
+Lcom/android/internal/telephony/dataconnection/-$$Lambda$DataConnection$-tFSpFGzTv_UdpzJlTMOvg8VO98;
+Lcom/android/internal/telephony/dataconnection/-$$Lambda$XZAGhHrbkIDyusER4MAM6luKcT0;
 Lcom/android/internal/telephony/dataconnection/AccessNetworksManager$1;
 Lcom/android/internal/telephony/dataconnection/AccessNetworksManager;
 Lcom/android/internal/telephony/dataconnection/ApnContext;
@@ -37838,11 +29545,18 @@
 Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectingState;
 Lcom/android/internal/telephony/dataconnection/DataConnection$DcDisconnectionErrorCreatingConnection;
 Lcom/android/internal/telephony/dataconnection/DataConnection$DcInactiveState;
+Lcom/android/internal/telephony/dataconnection/DataConnection$DisconnectParams;
 Lcom/android/internal/telephony/dataconnection/DataConnection$SetupResult;
+Lcom/android/internal/telephony/dataconnection/DataConnection$UpdateLinkPropertyResult;
 Lcom/android/internal/telephony/dataconnection/DataConnection;
 Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataAllowedReasonType;
 Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;
 Lcom/android/internal/telephony/dataconnection/DataConnectionReasons;
+Lcom/android/internal/telephony/dataconnection/DataEnabledOverride$OverrideConditions;
+Lcom/android/internal/telephony/dataconnection/DataEnabledOverride$OverrideRule;
+Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;
+Lcom/android/internal/telephony/dataconnection/DataEnabledSettings$1;
+Lcom/android/internal/telephony/dataconnection/DataEnabledSettings$2;
 Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;
 Lcom/android/internal/telephony/dataconnection/DataServiceManager$1;
 Lcom/android/internal/telephony/dataconnection/DataServiceManager$CellularDataServiceCallback;
@@ -37850,10 +29564,10 @@
 Lcom/android/internal/telephony/dataconnection/DataServiceManager$DataServiceManagerDeathRecipient;
 Lcom/android/internal/telephony/dataconnection/DataServiceManager;
 Lcom/android/internal/telephony/dataconnection/DcController$1;
-Lcom/android/internal/telephony/dataconnection/DcController$2;
 Lcom/android/internal/telephony/dataconnection/DcController$DccDefaultState;
 Lcom/android/internal/telephony/dataconnection/DcController;
 Lcom/android/internal/telephony/dataconnection/DcFailBringUp;
+Lcom/android/internal/telephony/dataconnection/DcNetworkAgent;
 Lcom/android/internal/telephony/dataconnection/DcRequest;
 Lcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll$1;
 Lcom/android/internal/telephony/dataconnection/DcTesterDeactivateAll;
@@ -37862,15 +29576,20 @@
 Lcom/android/internal/telephony/dataconnection/DcTracker$1;
 Lcom/android/internal/telephony/dataconnection/DcTracker$2;
 Lcom/android/internal/telephony/dataconnection/DcTracker$3;
+Lcom/android/internal/telephony/dataconnection/DcTracker$4;
 Lcom/android/internal/telephony/dataconnection/DcTracker$5;
 Lcom/android/internal/telephony/dataconnection/DcTracker$ApnChangeObserver;
 Lcom/android/internal/telephony/dataconnection/DcTracker$DataStallRecoveryHandler;
 Lcom/android/internal/telephony/dataconnection/DcTracker$DctOnSubscriptionsChangedListener;
+Lcom/android/internal/telephony/dataconnection/DcTracker$ProvisionNotificationBroadcastReceiver;
 Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;
 Lcom/android/internal/telephony/dataconnection/DcTracker$TxRxSum;
 Lcom/android/internal/telephony/dataconnection/DcTracker;
+Lcom/android/internal/telephony/dataconnection/KeepaliveStatus$1;
+Lcom/android/internal/telephony/dataconnection/KeepaliveStatus;
 Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory$InternalHandler;
 Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;
+Lcom/android/internal/telephony/dataconnection/TransportManager$HandoverParams;
 Lcom/android/internal/telephony/dataconnection/TransportManager;
 Lcom/android/internal/telephony/emergency/EmergencyNumberTracker$1;
 Lcom/android/internal/telephony/emergency/EmergencyNumberTracker;
@@ -37881,32 +29600,50 @@
 Lcom/android/internal/telephony/euicc/EuiccConnector$AvailableState;
 Lcom/android/internal/telephony/euicc/EuiccConnector$BaseEuiccCommandCallback;
 Lcom/android/internal/telephony/euicc/EuiccConnector$BindingState;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$10;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$11;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$12;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$13;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$1;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$2;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$3;
 Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$4;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$5;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$6;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$7;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$8;
+Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$9;
 Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState;
+Lcom/android/internal/telephony/euicc/EuiccConnector$DeleteRequest;
 Lcom/android/internal/telephony/euicc/EuiccConnector$DisconnectedState;
+Lcom/android/internal/telephony/euicc/EuiccConnector$DownloadRequest;
 Lcom/android/internal/telephony/euicc/EuiccConnector$EuiccPackageMonitor;
+Lcom/android/internal/telephony/euicc/EuiccConnector$GetDefaultListRequest;
 Lcom/android/internal/telephony/euicc/EuiccConnector$GetEuiccProfileInfoListCommandCallback;
+Lcom/android/internal/telephony/euicc/EuiccConnector$GetMetadataRequest;
+Lcom/android/internal/telephony/euicc/EuiccConnector$SwitchRequest;
 Lcom/android/internal/telephony/euicc/EuiccConnector$UnavailableState;
+Lcom/android/internal/telephony/euicc/EuiccConnector$UpdateNicknameRequest;
 Lcom/android/internal/telephony/euicc/EuiccConnector;
 Lcom/android/internal/telephony/euicc/EuiccController$3;
 Lcom/android/internal/telephony/euicc/EuiccController;
 Lcom/android/internal/telephony/euicc/IEuiccCardController$Stub;
 Lcom/android/internal/telephony/euicc/IEuiccCardController;
+Lcom/android/internal/telephony/euicc/IEuiccController$Stub$Proxy;
 Lcom/android/internal/telephony/euicc/IEuiccController$Stub;
 Lcom/android/internal/telephony/euicc/IEuiccController;
-Lcom/android/internal/telephony/gsm/GsmCellBroadcastHandler;
 Lcom/android/internal/telephony/gsm/GsmInboundSmsHandler;
+Lcom/android/internal/telephony/gsm/GsmMmiCode;
 Lcom/android/internal/telephony/gsm/GsmSMSDispatcher;
 Lcom/android/internal/telephony/gsm/SimTlv;
 Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;
+Lcom/android/internal/telephony/gsm/SmsMessage;
+Lcom/android/internal/telephony/gsm/SuppServiceNotification;
 Lcom/android/internal/telephony/gsm/UsimDataDownloadHandler;
+Lcom/android/internal/telephony/gsm/UsimPhoneBookManager$File;
+Lcom/android/internal/telephony/gsm/UsimPhoneBookManager$PbrRecord;
 Lcom/android/internal/telephony/gsm/UsimPhoneBookManager;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$VfY5To_kbbTJevLzywTg-_S1JhA;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$aWLlEvfonhYSfDR8cVsM6A5pmqI;
 Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$pNx4XUM9FmR6cV_MCAGiEt8F4pg;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsServiceController$w3xbtqEhKr7IY81qFuw0e94p84Y;
-Lcom/android/internal/telephony/ims/-$$Lambda$WVd6ghNMbVDukmkxia3ZwNeZzEY;
 Lcom/android/internal/telephony/ims/-$$Lambda$WamP7BPq0j01TgYE3GvUqU3b-rs;
 Lcom/android/internal/telephony/ims/ImsResolver$1;
 Lcom/android/internal/telephony/ims/ImsResolver$2;
@@ -37915,10 +29652,12 @@
 Lcom/android/internal/telephony/ims/ImsResolver$5;
 Lcom/android/internal/telephony/ims/ImsResolver$6;
 Lcom/android/internal/telephony/ims/ImsResolver$7;
+Lcom/android/internal/telephony/ims/ImsResolver$8;
 Lcom/android/internal/telephony/ims/ImsResolver$ImsDynamicQueryManagerFactory;
 Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceControllerFactory;
 Lcom/android/internal/telephony/ims/ImsResolver$ImsServiceInfo;
 Lcom/android/internal/telephony/ims/ImsResolver$SubscriptionManagerProxy;
+Lcom/android/internal/telephony/ims/ImsResolver$TelephonyManagerProxy;
 Lcom/android/internal/telephony/ims/ImsResolver;
 Lcom/android/internal/telephony/ims/ImsServiceController$1;
 Lcom/android/internal/telephony/ims/ImsServiceController$2;
@@ -37930,14 +29669,9 @@
 Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;
 Lcom/android/internal/telephony/ims/ImsServiceController$RebindRetry;
 Lcom/android/internal/telephony/ims/ImsServiceController;
+Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager$ImsServiceFeatureQuery;
 Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager$Listener;
 Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager;
-Lcom/android/internal/telephony/ims/RcsEventQueryHelper;
-Lcom/android/internal/telephony/ims/RcsMessageQueryHelper;
-Lcom/android/internal/telephony/ims/RcsMessageStoreController;
-Lcom/android/internal/telephony/ims/RcsMessageStoreUtil;
-Lcom/android/internal/telephony/ims/RcsParticipantQueryHelper;
-Lcom/android/internal/telephony/ims/RcsThreadQueryHelper;
 Lcom/android/internal/telephony/imsphone/-$$Lambda$ImsPhoneCallTracker$QlPVd_3u4_verjHUDnkn6zaSe54;
 Lcom/android/internal/telephony/imsphone/-$$Lambda$ImsPhoneCallTracker$Zw03itjXT6-LrhiYuD-9nKFg2Wg;
 Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker$1;
@@ -37947,9 +29681,11 @@
 Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker$ImsCallNotify;
 Lcom/android/internal/telephony/imsphone/ImsExternalCallTracker;
 Lcom/android/internal/telephony/imsphone/ImsExternalConnection$Listener;
+Lcom/android/internal/telephony/imsphone/ImsExternalConnection;
 Lcom/android/internal/telephony/imsphone/ImsPhone$1;
 Lcom/android/internal/telephony/imsphone/ImsPhone$2;
 Lcom/android/internal/telephony/imsphone/ImsPhone$3;
+Lcom/android/internal/telephony/imsphone/ImsPhone$Cf;
 Lcom/android/internal/telephony/imsphone/ImsPhone;
 Lcom/android/internal/telephony/imsphone/ImsPhoneBase;
 Lcom/android/internal/telephony/imsphone/ImsPhoneCall;
@@ -37969,42 +29705,61 @@
 Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker$SharedPreferenceProxy;
 Lcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;
 Lcom/android/internal/telephony/imsphone/ImsPhoneCommandInterface;
+Lcom/android/internal/telephony/imsphone/ImsPhoneConnection;
 Lcom/android/internal/telephony/imsphone/ImsPhoneFactory;
+Lcom/android/internal/telephony/imsphone/ImsPhoneMmiCode;
 Lcom/android/internal/telephony/imsphone/ImsPullCall;
+Lcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$fLmZDbNadlr6LF7zSJ6jCR1AAsk;
 Lcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$tQOsX1lKb2eTuPp-1rpkeIAEOoY;
+Lcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$x2dJi76S2YQdpSTfY8RZ8qC_K6g;
 Lcom/android/internal/telephony/metrics/CallSessionEventBuilder;
 Lcom/android/internal/telephony/metrics/InProgressCallSession;
 Lcom/android/internal/telephony/metrics/InProgressSmsSession;
+Lcom/android/internal/telephony/metrics/ModemPowerMetrics;
 Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
 Lcom/android/internal/telephony/metrics/TelephonyEventBuilder;
+Lcom/android/internal/telephony/metrics/TelephonyMetrics$1;
 Lcom/android/internal/telephony/metrics/TelephonyMetrics;
 Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;
 Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;
 Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierList;
 Lcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;
+Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo;
 Lcom/android/internal/telephony/nano/TelephonyProto$ImsCapabilities;
 Lcom/android/internal/telephony/nano/TelephonyProto$ImsConnectionState;
 Lcom/android/internal/telephony/nano/TelephonyProto$ImsReasonInfo;
+Lcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;
 Lcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;
 Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;
+Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;
+Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$DataSwitch;
+Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$OnDemandDataSwitch;
+Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilDeactivateDataCall;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCall;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilSetupDataCallResponse;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;
+Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;
+Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState$TelephonyOperator;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyServiceState;
 Lcom/android/internal/telephony/nano/TelephonyProto$TelephonySettings;
+Lcom/android/internal/telephony/nano/TelephonyProto$Time;
 Lcom/android/internal/telephony/protobuf/nano/CodedInputByteBufferNano;
+Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano$OutOfSpaceException;
 Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano;
 Lcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;
 Lcom/android/internal/telephony/protobuf/nano/InternalNano;
 Lcom/android/internal/telephony/protobuf/nano/InvalidProtocolBufferNanoException;
 Lcom/android/internal/telephony/protobuf/nano/MessageNano;
+Lcom/android/internal/telephony/protobuf/nano/MessageNanoPrinter;
 Lcom/android/internal/telephony/protobuf/nano/WireFormatNano;
+Lcom/android/internal/telephony/sip/SipPhone;
+Lcom/android/internal/telephony/sip/SipPhoneBase;
 Lcom/android/internal/telephony/test/SimulatedRadioControl;
 Lcom/android/internal/telephony/uicc/AdnRecord$1;
 Lcom/android/internal/telephony/uicc/AdnRecord;
@@ -38014,6 +29769,7 @@
 Lcom/android/internal/telephony/uicc/AnswerToReset$InterfaceByte;
 Lcom/android/internal/telephony/uicc/AnswerToReset;
 Lcom/android/internal/telephony/uicc/CarrierTestOverride;
+Lcom/android/internal/telephony/uicc/CsimFileHandler;
 Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppState;
 Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$AppType;
 Lcom/android/internal/telephony/uicc/IccCardApplicationStatus$PersoSubState;
@@ -38022,18 +29778,35 @@
 Lcom/android/internal/telephony/uicc/IccCardStatus$PinState;
 Lcom/android/internal/telephony/uicc/IccCardStatus;
 Lcom/android/internal/telephony/uicc/IccConstants;
+Lcom/android/internal/telephony/uicc/IccException;
 Lcom/android/internal/telephony/uicc/IccFileHandler$LoadLinearFixedContext;
 Lcom/android/internal/telephony/uicc/IccFileHandler;
+Lcom/android/internal/telephony/uicc/IccFileNotFound;
+Lcom/android/internal/telephony/uicc/IccFileTypeMismatch;
 Lcom/android/internal/telephony/uicc/IccIoResult;
 Lcom/android/internal/telephony/uicc/IccRecords$IccRecordLoaded;
 Lcom/android/internal/telephony/uicc/IccRecords;
+Lcom/android/internal/telephony/uicc/IccRefreshResponse;
 Lcom/android/internal/telephony/uicc/IccServiceTable;
 Lcom/android/internal/telephony/uicc/IccSlotStatus$SlotState;
 Lcom/android/internal/telephony/uicc/IccSlotStatus;
 Lcom/android/internal/telephony/uicc/IccUtils;
+Lcom/android/internal/telephony/uicc/IccVmNotSupportedException;
+Lcom/android/internal/telephony/uicc/InstallCarrierAppTrampolineActivity;
 Lcom/android/internal/telephony/uicc/InstallCarrierAppUtils;
+Lcom/android/internal/telephony/uicc/IsimFileHandler;
+Lcom/android/internal/telephony/uicc/IsimRecords;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimDomainLoaded;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpiLoaded;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpuLoaded;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimIstLoaded;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimPcscfLoaded;
+Lcom/android/internal/telephony/uicc/IsimUiccRecords;
 Lcom/android/internal/telephony/uicc/PlmnActRecord$1;
 Lcom/android/internal/telephony/uicc/PlmnActRecord;
+Lcom/android/internal/telephony/uicc/RuimFileHandler;
+Lcom/android/internal/telephony/uicc/RuimRecords;
+Lcom/android/internal/telephony/uicc/SIMFileHandler;
 Lcom/android/internal/telephony/uicc/SIMRecords$1;
 Lcom/android/internal/telephony/uicc/SIMRecords$EfPlLoaded;
 Lcom/android/internal/telephony/uicc/SIMRecords$EfUsimLiLoaded;
@@ -38044,15 +29817,18 @@
 Lcom/android/internal/telephony/uicc/UiccCardApplication$2;
 Lcom/android/internal/telephony/uicc/UiccCardApplication;
 Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules$1;
+Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules$TLV;
 Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules;
 Lcom/android/internal/telephony/uicc/UiccController$1;
 Lcom/android/internal/telephony/uicc/UiccController;
+Lcom/android/internal/telephony/uicc/UiccPkcs15$FileHandler;
 Lcom/android/internal/telephony/uicc/UiccPkcs15$Pkcs15Selector;
 Lcom/android/internal/telephony/uicc/UiccPkcs15;
 Lcom/android/internal/telephony/uicc/UiccProfile$1;
 Lcom/android/internal/telephony/uicc/UiccProfile$2;
 Lcom/android/internal/telephony/uicc/UiccProfile$3;
 Lcom/android/internal/telephony/uicc/UiccProfile$4;
+Lcom/android/internal/telephony/uicc/UiccProfile$5;
 Lcom/android/internal/telephony/uicc/UiccProfile;
 Lcom/android/internal/telephony/uicc/UiccSlot;
 Lcom/android/internal/telephony/uicc/UiccStateChangedLauncher;
@@ -38060,20 +29836,40 @@
 Lcom/android/internal/telephony/uicc/UsimServiceTable$UsimService;
 Lcom/android/internal/telephony/uicc/UsimServiceTable;
 Lcom/android/internal/telephony/uicc/VoiceMailConstants;
+Lcom/android/internal/telephony/uicc/asn1/InvalidAsn1DataException;
+Lcom/android/internal/telephony/uicc/asn1/TagNotFoundException;
 Lcom/android/internal/telephony/uicc/euicc/EuiccCard;
+Lcom/android/internal/telephony/uicc/euicc/EuiccSpecVersion;
 Lcom/android/internal/telephony/util/NotificationChannelController$1;
 Lcom/android/internal/telephony/util/NotificationChannelController;
+Lcom/android/internal/telephony/util/SMSDispatcherUtil;
+Lcom/android/internal/telephony/util/TelephonyUtils;
 Lcom/android/internal/telephony/util/VoicemailNotificationSettingsUtil;
+Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;
+Lcom/android/internal/textservice/ISpellCheckerService$Stub;
+Lcom/android/internal/textservice/ISpellCheckerService;
 Lcom/android/internal/textservice/ISpellCheckerSession$Stub$Proxy;
+Lcom/android/internal/textservice/ISpellCheckerSession$Stub;
 Lcom/android/internal/textservice/ISpellCheckerSession;
+Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;
 Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub;
 Lcom/android/internal/textservice/ISpellCheckerSessionListener;
 Lcom/android/internal/textservice/ITextServicesManager$Stub$Proxy;
 Lcom/android/internal/textservice/ITextServicesManager$Stub;
 Lcom/android/internal/textservice/ITextServicesManager;
+Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;
 Lcom/android/internal/textservice/ITextServicesSessionListener$Stub;
 Lcom/android/internal/textservice/ITextServicesSessionListener;
 Lcom/android/internal/transition/EpicenterTranslateClipReveal;
+Lcom/android/internal/util/-$$Lambda$DumpUtils$D1OlZP6xIpu72ypnJd0fzx0wd6I;
+Lcom/android/internal/util/-$$Lambda$DumpUtils$X8irOs5hfloCKy89_l1HRA1QeG0;
+Lcom/android/internal/util/-$$Lambda$DumpUtils$vCLO_0ezRxkpSERUWCFrJ0ph5jg;
+Lcom/android/internal/util/-$$Lambda$FunctionalUtils$koCSI8D7Nu5vOJTVTEj0m3leo_U;
+Lcom/android/internal/util/-$$Lambda$JwOUSWW2-Jzu15y4Kn4JuPh8tWM;
+Lcom/android/internal/util/-$$Lambda$TCbPpgWlKJUHZgFKCczglAvxLfw;
+Lcom/android/internal/util/-$$Lambda$eRa1rlfDk6Og2yFeXGHqUGPzRF0;
+Lcom/android/internal/util/-$$Lambda$grRTg3idX3yJe9Zyx-tmLBiD1DM;
+Lcom/android/internal/util/-$$Lambda$kVylv1rl9MOSbHFZoVyK5dl1kfY;
 Lcom/android/internal/util/ArrayUtils;
 Lcom/android/internal/util/AsyncChannel$AsyncChannelConnection;
 Lcom/android/internal/util/AsyncChannel$DeathMonitor;
@@ -38084,7 +29880,10 @@
 Lcom/android/internal/util/CollectionUtils;
 Lcom/android/internal/util/ConcurrentUtils$1$1;
 Lcom/android/internal/util/ConcurrentUtils$1;
+Lcom/android/internal/util/ConcurrentUtils$DirectExecutor;
 Lcom/android/internal/util/ConcurrentUtils;
+Lcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;
+Lcom/android/internal/util/ContrastColorUtil;
 Lcom/android/internal/util/DumpUtils$Dump;
 Lcom/android/internal/util/DumpUtils;
 Lcom/android/internal/util/ExponentiallyBucketedHistogram;
@@ -38112,12 +29911,14 @@
 Lcom/android/internal/util/LineBreakBufferedWriter;
 Lcom/android/internal/util/LocalLog;
 Lcom/android/internal/util/MemInfoReader;
+Lcom/android/internal/util/MessageUtils$DuplicateConstantError;
 Lcom/android/internal/util/MessageUtils;
 Lcom/android/internal/util/NotificationMessagingUtil$1;
 Lcom/android/internal/util/NotificationMessagingUtil;
 Lcom/android/internal/util/ObjectUtils;
 Lcom/android/internal/util/ParseUtils;
 Lcom/android/internal/util/Preconditions;
+Lcom/android/internal/util/ProcFileReader;
 Lcom/android/internal/util/ProgressReporter;
 Lcom/android/internal/util/RingBuffer;
 Lcom/android/internal/util/RingBufferIndices;
@@ -38131,29 +29932,41 @@
 Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;
 Lcom/android/internal/util/StateMachine$SmHandler;
 Lcom/android/internal/util/StateMachine;
+Lcom/android/internal/util/SyncResultReceiver$TimeoutException;
 Lcom/android/internal/util/SyncResultReceiver;
 Lcom/android/internal/util/ToBooleanFunction;
 Lcom/android/internal/util/TokenBucket;
+Lcom/android/internal/util/UserIcons;
 Lcom/android/internal/util/VirtualRefBasePtr;
 Lcom/android/internal/util/WakeupMessage;
 Lcom/android/internal/util/XmlUtils$ReadMapCallback;
 Lcom/android/internal/util/XmlUtils$WriteMapCallback;
 Lcom/android/internal/util/XmlUtils;
+Lcom/android/internal/util/function/DecConsumer;
+Lcom/android/internal/util/function/DecFunction;
 Lcom/android/internal/util/function/HeptConsumer;
 Lcom/android/internal/util/function/HeptFunction;
+Lcom/android/internal/util/function/HeptPredicate;
 Lcom/android/internal/util/function/HexConsumer;
 Lcom/android/internal/util/function/HexFunction;
+Lcom/android/internal/util/function/HexPredicate;
 Lcom/android/internal/util/function/NonaConsumer;
 Lcom/android/internal/util/function/NonaFunction;
+Lcom/android/internal/util/function/NonaPredicate;
 Lcom/android/internal/util/function/OctConsumer;
 Lcom/android/internal/util/function/OctFunction;
+Lcom/android/internal/util/function/OctPredicate;
 Lcom/android/internal/util/function/QuadConsumer;
 Lcom/android/internal/util/function/QuadFunction;
+Lcom/android/internal/util/function/QuadPredicate;
 Lcom/android/internal/util/function/QuintConsumer;
 Lcom/android/internal/util/function/QuintFunction;
+Lcom/android/internal/util/function/QuintPredicate;
 Lcom/android/internal/util/function/TriConsumer;
 Lcom/android/internal/util/function/TriFunction;
 Lcom/android/internal/util/function/TriPredicate;
+Lcom/android/internal/util/function/UndecConsumer;
+Lcom/android/internal/util/function/UndecFunction;
 Lcom/android/internal/util/function/pooled/ArgumentPlaceholder;
 Lcom/android/internal/util/function/pooled/OmniFunction;
 Lcom/android/internal/util/function/pooled/PooledConsumer;
@@ -38169,6 +29982,7 @@
 Lcom/android/internal/util/function/pooled/PooledSupplier$OfLong;
 Lcom/android/internal/util/function/pooled/PooledSupplier;
 Lcom/android/internal/view/ActionBarPolicy;
+Lcom/android/internal/view/BaseSurfaceHolder;
 Lcom/android/internal/view/IInputConnectionWrapper$MyHandler;
 Lcom/android/internal/view/IInputConnectionWrapper;
 Lcom/android/internal/view/IInputContext$Stub$Proxy;
@@ -38177,8 +29991,10 @@
 Lcom/android/internal/view/IInputContextCallback$Stub$Proxy;
 Lcom/android/internal/view/IInputContextCallback$Stub;
 Lcom/android/internal/view/IInputContextCallback;
+Lcom/android/internal/view/IInputMethod$Stub$Proxy;
 Lcom/android/internal/view/IInputMethod$Stub;
 Lcom/android/internal/view/IInputMethod;
+Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;
 Lcom/android/internal/view/IInputMethodClient$Stub;
 Lcom/android/internal/view/IInputMethodClient;
 Lcom/android/internal/view/IInputMethodManager$Stub$Proxy;
@@ -38187,11 +30003,16 @@
 Lcom/android/internal/view/IInputMethodSession$Stub$Proxy;
 Lcom/android/internal/view/IInputMethodSession$Stub;
 Lcom/android/internal/view/IInputMethodSession;
+Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;
 Lcom/android/internal/view/IInputSessionCallback$Stub;
 Lcom/android/internal/view/IInputSessionCallback;
 Lcom/android/internal/view/InputBindResult$1;
 Lcom/android/internal/view/InputBindResult;
+Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback;
+Lcom/android/internal/view/InputConnectionWrapper;
+Lcom/android/internal/view/OneShotPreDrawListener;
 Lcom/android/internal/view/RootViewSurfaceTaker;
+Lcom/android/internal/view/RotationPolicy$1;
 Lcom/android/internal/view/RotationPolicy;
 Lcom/android/internal/view/SurfaceCallbackHelper$1;
 Lcom/android/internal/view/SurfaceCallbackHelper;
@@ -38201,15 +30022,20 @@
 Lcom/android/internal/view/animation/NativeInterpolatorFactory;
 Lcom/android/internal/view/animation/NativeInterpolatorFactoryHelper;
 Lcom/android/internal/view/menu/ActionMenuItem;
+Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;
+Lcom/android/internal/view/menu/ActionMenuItemView$PopupCallback;
+Lcom/android/internal/view/menu/ActionMenuItemView;
 Lcom/android/internal/view/menu/BaseMenuPresenter;
 Lcom/android/internal/view/menu/MenuBuilder$Callback;
 Lcom/android/internal/view/menu/MenuBuilder$ItemInvoker;
 Lcom/android/internal/view/menu/MenuBuilder;
 Lcom/android/internal/view/menu/MenuHelper;
 Lcom/android/internal/view/menu/MenuItemImpl;
+Lcom/android/internal/view/menu/MenuPopupHelper$1;
 Lcom/android/internal/view/menu/MenuPopupHelper;
 Lcom/android/internal/view/menu/MenuPresenter$Callback;
 Lcom/android/internal/view/menu/MenuPresenter;
+Lcom/android/internal/view/menu/MenuView$ItemView;
 Lcom/android/internal/view/menu/MenuView;
 Lcom/android/internal/view/menu/ShowableListMenu;
 Lcom/android/internal/widget/AbsActionBarView$VisibilityAnimListener;
@@ -38224,11 +30050,16 @@
 Lcom/android/internal/widget/ActionBarOverlayLayout$5;
 Lcom/android/internal/widget/ActionBarOverlayLayout$ActionBarVisibilityCallback;
 Lcom/android/internal/widget/ActionBarOverlayLayout$LayoutParams;
+Lcom/android/internal/widget/ActionBarOverlayLayout;
 Lcom/android/internal/widget/BackgroundFallback;
+Lcom/android/internal/widget/DecorCaptionView;
 Lcom/android/internal/widget/DecorContentParent;
 Lcom/android/internal/widget/DecorToolbar;
 Lcom/android/internal/widget/DialogTitle;
 Lcom/android/internal/widget/EditableInputConnection;
+Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;
+Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;
+Lcom/android/internal/widget/ICheckCredentialProgressCallback;
 Lcom/android/internal/widget/ILockSettings$Stub$Proxy;
 Lcom/android/internal/widget/ILockSettings$Stub;
 Lcom/android/internal/widget/ILockSettings;
@@ -38339,7 +30170,10 @@
 Lcom/android/okhttp/internal/tls/OkHostnameVerifier;
 Lcom/android/okhttp/internal/tls/RealTrustRootIndex;
 Lcom/android/okhttp/internal/tls/TrustRootIndex;
+Lcom/android/okhttp/internalandroidapi/Dns;
 Lcom/android/okhttp/internalandroidapi/HasCacheHolder;
+Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;
+Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;
 Lcom/android/okhttp/okio/AsyncTimeout$1;
 Lcom/android/okhttp/okio/AsyncTimeout$2;
 Lcom/android/okhttp/okio/AsyncTimeout$Watchdog;
@@ -38563,6 +30397,9 @@
 Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;
 Lcom/android/phone/ecc/nano/WireFormatNano;
 Lcom/android/server/AppWidgetBackupBridge;
+Lcom/android/server/BootReceiver$1;
+Lcom/android/server/BootReceiver$2;
+Lcom/android/server/BootReceiver;
 Lcom/android/server/LocalServices;
 Lcom/android/server/NetworkManagementSocketTagger$1;
 Lcom/android/server/NetworkManagementSocketTagger$SocketTags;
@@ -38571,44 +30408,30 @@
 Lcom/android/server/SystemConfig$SharedLibraryEntry;
 Lcom/android/server/SystemConfig;
 Lcom/android/server/WidgetBackupProvider;
+Lcom/android/server/backup/AccountManagerBackupHelper;
+Lcom/android/server/backup/AccountSyncSettingsBackupHelper;
+Lcom/android/server/backup/NotificationBackupHelper;
+Lcom/android/server/backup/PermissionBackupHelper;
+Lcom/android/server/backup/PreferredActivityBackupHelper;
+Lcom/android/server/backup/ShortcutBackupHelper;
+Lcom/android/server/backup/SliceBackupHelper;
+Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
+Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;
 Lcom/android/server/net/BaseNetdEventCallback;
 Lcom/android/server/net/BaseNetworkObserver;
+Lcom/android/server/sip/SipService$1;
+Lcom/android/server/sip/SipService$ConnectivityReceiver;
+Lcom/android/server/sip/SipService$MyExecutor;
+Lcom/android/server/sip/SipService$SipKeepAliveProcessCallback;
+Lcom/android/server/sip/SipService$SipSessionGroupExt;
 Lcom/android/server/sip/SipService;
+Lcom/android/server/sip/SipSessionGroup$KeepAliveProcessCallback;
+Lcom/android/server/sip/SipSessionGroup$SipSessionImpl;
+Lcom/android/server/sip/SipWakeLock;
+Lcom/android/server/sip/SipWakeupTimer$MyEventComparator;
 Lcom/android/server/sip/SipWakeupTimer;
-Lcom/android/server/wifi/BaseWifiService;
-Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;
-Lcom/android/server/wifi/nano/WifiMetricsProto$ExperimentValues;
-Lcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32;
-Lcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;
-Lcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$PnoScanMetrics;
-Lcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApConnectedClientsEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLinkLayerUsageStats;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkRequestApiLog;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiNetworkSuggestionApiLog;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiP2pStats;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WpsMetrics;
+Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;
+Lcom/android/telephony/Rlog;
 Lcom/google/android/collect/Lists;
 Lcom/google/android/collect/Maps;
 Lcom/google/android/collect/Sets;
@@ -38619,6 +30442,13 @@
 Lcom/google/android/gles_jni/EGLSurfaceImpl;
 Lcom/google/android/gles_jni/GLImpl;
 Lcom/google/android/mms/MmsException;
+Lcom/google/android/rappor/Encoder;
+Lcom/google/android/rappor/HmacDrbg;
+Lcom/google/android/textclassifier/ActionsSuggestionsModel$Conversation;
+Lcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;
+Lcom/google/android/textclassifier/ActionsSuggestionsModel;
+Lcom/google/android/textclassifier/AnnotatorModel;
+Lcom/google/android/textclassifier/LangIdModel;
 Lcom/sun/security/cert/internal/x509/X509V1CertImpl;
 Ldalvik/annotation/optimization/CriticalNative;
 Ldalvik/annotation/optimization/FastNative;
@@ -38660,6 +30490,7 @@
 Ldalvik/system/VMRuntime;
 Ldalvik/system/VMStack;
 Ldalvik/system/ZygoteHooks;
+Ljava/io/-$$Lambda$ObjectStreamClass$GVMp_c-BEBrBo_ZKh_HiLSO-fGo;
 Ljava/io/Bits;
 Ljava/io/BufferedInputStream;
 Ljava/io/BufferedOutputStream;
@@ -38725,6 +30556,7 @@
 Ljava/io/ObjectStreamClass$5;
 Ljava/io/ObjectStreamClass$Caches;
 Ljava/io/ObjectStreamClass$ClassDataSlot;
+Ljava/io/ObjectStreamClass$DefaultSUIDCompatibilityListener;
 Ljava/io/ObjectStreamClass$EntryFuture;
 Ljava/io/ObjectStreamClass$ExceptionInfo;
 Ljava/io/ObjectStreamClass$FieldReflector;
@@ -39055,6 +30887,7 @@
 Ljava/net/JarURLConnection;
 Ljava/net/MalformedURLException;
 Ljava/net/MulticastSocket;
+Ljava/net/NetPermission;
 Ljava/net/NetworkInterface$1checkedAddresses;
 Ljava/net/NetworkInterface;
 Ljava/net/NoRouteToHostException;
@@ -39079,6 +30912,7 @@
 Ljava/net/SocketInputStream;
 Ljava/net/SocketOptions;
 Ljava/net/SocketOutputStream;
+Ljava/net/SocketPermission;
 Ljava/net/SocketTimeoutException;
 Ljava/net/SocksConsts;
 Ljava/net/SocksSocketImpl;
@@ -39158,10 +30992,7 @@
 Ljava/nio/charset/CharacterCodingException;
 Ljava/nio/charset/Charset;
 Ljava/nio/charset/CharsetDecoder;
-Ljava/nio/charset/CharsetDecoderICU;
 Ljava/nio/charset/CharsetEncoder;
-Ljava/nio/charset/CharsetEncoderICU;
-Ljava/nio/charset/CharsetICU;
 Ljava/nio/charset/CoderResult$1;
 Ljava/nio/charset/CoderResult$2;
 Ljava/nio/charset/CoderResult$Cache;
@@ -39172,12 +31003,15 @@
 Ljava/nio/charset/UnsupportedCharsetException;
 Ljava/nio/file/AccessMode;
 Ljava/nio/file/CopyOption;
+Ljava/nio/file/DirectoryStream$Filter;
+Ljava/nio/file/DirectoryStream;
 Ljava/nio/file/FileAlreadyExistsException;
 Ljava/nio/file/FileSystem;
 Ljava/nio/file/FileSystemException;
 Ljava/nio/file/FileSystems$DefaultFileSystemHolder$1;
 Ljava/nio/file/FileSystems$DefaultFileSystemHolder;
 Ljava/nio/file/FileSystems;
+Ljava/nio/file/Files$AcceptAllFilter;
 Ljava/nio/file/Files;
 Ljava/nio/file/LinkOption;
 Ljava/nio/file/NoSuchFileException;
@@ -39200,6 +31034,7 @@
 Ljava/security/AlgorithmConstraints;
 Ljava/security/AlgorithmParameters;
 Ljava/security/AlgorithmParametersSpi;
+Ljava/security/AllPermission;
 Ljava/security/BasicPermission;
 Ljava/security/CodeSigner;
 Ljava/security/CryptoPrimitive;
@@ -39251,6 +31086,7 @@
 Ljava/security/SecureRandom;
 Ljava/security/SecureRandomSpi;
 Ljava/security/Security;
+Ljava/security/SecurityPermission;
 Ljava/security/Signature$Delegate;
 Ljava/security/Signature;
 Ljava/security/SignatureException;
@@ -39322,6 +31158,7 @@
 Ljava/security/spec/KeySpec;
 Ljava/security/spec/MGF1ParameterSpec;
 Ljava/security/spec/PKCS8EncodedKeySpec;
+Ljava/security/spec/PSSParameterSpec;
 Ljava/security/spec/RSAPrivateCrtKeySpec;
 Ljava/security/spec/RSAPrivateKeySpec;
 Ljava/security/spec/RSAPublicKeySpec;
@@ -39360,6 +31197,7 @@
 Ljava/text/SimpleDateFormat;
 Ljava/text/StringCharacterIterator;
 Ljava/time/-$$Lambda$Bq8PKq1YWr8nyVk9SSfRYKrOu4A;
+Ljava/time/-$$Lambda$up1HpCqucM_DXyY-rpDOyCcdmIA;
 Ljava/time/Clock$SystemClock;
 Ljava/time/Clock;
 Ljava/time/DateTimeException;
@@ -39669,11 +31507,11 @@
 Ljava/util/PriorityQueue;
 Ljava/util/Properties$LineReader;
 Ljava/util/Properties;
+Ljava/util/PropertyPermission;
 Ljava/util/PropertyResourceBundle;
 Ljava/util/Queue;
 Ljava/util/Random;
 Ljava/util/RandomAccess;
-Ljava/util/RandomAccessSubList;
 Ljava/util/RegularEnumSet$EnumSetIterator;
 Ljava/util/RegularEnumSet;
 Ljava/util/ResourceBundle$1;
@@ -39711,8 +31549,6 @@
 Ljava/util/Stack;
 Ljava/util/StringJoiner;
 Ljava/util/StringTokenizer;
-Ljava/util/SubList$1;
-Ljava/util/SubList;
 Ljava/util/TaskQueue;
 Ljava/util/TimSort;
 Ljava/util/TimeZone;
@@ -40001,6 +31837,7 @@
 Ljava/util/logging/LogRecord;
 Ljava/util/logging/Logger$1;
 Ljava/util/logging/Logger$LoggerBundle;
+Ljava/util/logging/Logger$SystemLoggerHelper;
 Ljava/util/logging/Logger;
 Ljava/util/logging/LoggingPermission;
 Ljava/util/logging/LoggingProxyImpl;
@@ -40030,6 +31867,7 @@
 Ljava/util/stream/-$$Lambda$IntPipeline$R-E7oGjPWog3HR9X-8MdhU1ZGRE;
 Ljava/util/stream/-$$Lambda$IntPipeline$ozedusDMANE_B8aDthWCd1L-na4;
 Ljava/util/stream/-$$Lambda$MatchOps$_LtFSpSMfVwoPv-8p_1cMGGcaHA;
+Ljava/util/stream/-$$Lambda$MatchOps$emK14UX33I4-nqH2o5l7hLEVAy8;
 Ljava/util/stream/-$$Lambda$ReferencePipeline$mk6xSsLZAKvG89IyN8pzBoM6otw;
 Ljava/util/stream/-$$Lambda$bjSXRjZ5UYwAzkW-XPKwqbJ9BRQ;
 Ljava/util/stream/-$$Lambda$dplkPhACWDPIy18ogwdupEQaN40;
@@ -40264,12 +32102,15 @@
 Ljavax/xml/parsers/ParserConfigurationException;
 Ljavax/xml/parsers/SAXParser;
 Ljavax/xml/parsers/SAXParserFactory;
+Llibcore/content/type/-$$Lambda$MimeMap$xJ95jeANwfbnj45hvSUmlPtZWWg;
+Llibcore/content/type/MimeMap$MemoizingSupplier;
+Llibcore/content/type/MimeMap;
 Llibcore/icu/DateIntervalFormat;
 Llibcore/icu/DateUtilsBridge;
 Llibcore/icu/ICU;
 Llibcore/icu/LocaleData;
-Llibcore/icu/NativeConverter;
 Llibcore/icu/RelativeDateTimeFormatter$FormatterCache;
+Llibcore/icu/RelativeDateTimeFormatter;
 Llibcore/icu/TimeZoneNames$1;
 Llibcore/icu/TimeZoneNames$ZoneStringsCache;
 Llibcore/icu/TimeZoneNames;
@@ -40313,18 +32154,13 @@
 Llibcore/reflect/TypeVariableImpl;
 Llibcore/reflect/Types;
 Llibcore/reflect/WildcardTypeImpl;
-Llibcore/timezone/-$$Lambda$TimeZoneFinder$ReaderSupplier$gDAfECMWS_ohJ_Rfk1HN7JyDSJA;
 Llibcore/timezone/CountryTimeZones$OffsetResult;
 Llibcore/timezone/CountryTimeZones$TimeZoneMapping;
 Llibcore/timezone/CountryTimeZones;
 Llibcore/timezone/TimeZoneDataFiles;
-Llibcore/timezone/TimeZoneFinder$ReaderSupplier;
 Llibcore/timezone/TimeZoneFinder$SelectiveCountryTimeZonesExtractor;
 Llibcore/timezone/TimeZoneFinder$TimeZonesProcessor;
 Llibcore/timezone/TimeZoneFinder;
-Llibcore/timezone/ZoneInfoDB$TzData$1;
-Llibcore/timezone/ZoneInfoDB$TzData;
-Llibcore/timezone/ZoneInfoDB;
 Llibcore/util/ArrayUtils;
 Llibcore/util/BasicLruCache;
 Llibcore/util/CharsetUtils;
@@ -40626,6 +32462,7 @@
 Lsun/security/util/MemoryCache$SoftCacheEntry;
 Lsun/security/util/MemoryCache;
 Lsun/security/util/ObjectIdentifier;
+Lsun/security/util/SecurityConstants;
 Lsun/security/util/SignatureFileVerifier;
 Lsun/security/x509/AVA;
 Lsun/security/x509/AVAKeyword;
@@ -40702,6 +32539,7 @@
 Lsun/util/locale/InternalLocaleBuilder$CaseInsensitiveChar;
 Lsun/util/locale/InternalLocaleBuilder;
 Lsun/util/locale/LanguageTag;
+Lsun/util/locale/LocaleMatcher;
 Lsun/util/locale/LocaleObjectCache$CacheEntry;
 Lsun/util/locale/LocaleObjectCache;
 Lsun/util/locale/LocaleSyntaxException;
@@ -40715,4770 +32553,3 @@
 Lsun/util/logging/PlatformLogger$Level;
 Lsun/util/logging/PlatformLogger$LoggerProxy;
 Lsun/util/logging/PlatformLogger;
-HSPLandroid/accounts/AccountManager$18;->run()V
-HSPLandroid/accounts/AccountManager$BaseFutureTask$1;-><init>(Landroid/accounts/AccountManager;)V
-HSPLandroid/accounts/AccountManager$BaseFutureTask$Response;-><init>(Landroid/accounts/AccountManager$BaseFutureTask;)V
-HSPLandroid/accounts/AccountManager$BaseFutureTask;-><init>(Landroid/accounts/AccountManager;Landroid/os/Handler;)V
-HSPLandroid/accounts/AccountManager$Future2Task;->getResult(JLjava/util/concurrent/TimeUnit;)Ljava/lang/Object;
-HSPLandroid/accounts/AccountManager$Future2Task;-><init>(Landroid/accounts/AccountManager;Landroid/os/Handler;Landroid/accounts/AccountManagerCallback;)V
-HSPLandroid/accounts/AccountManager$Future2Task;->start()Landroid/accounts/AccountManager$Future2Task;
-HSPLandroid/accounts/AccountManager;->access$000(Landroid/accounts/AccountManager;)Landroid/accounts/IAccountManager;
-HSPLandroid/accounts/AccountManager;->access$100(Landroid/accounts/AccountManager;)Landroid/content/Context;
-HSPLandroid/accounts/AccountManager;->access$200(Landroid/accounts/AccountManager;)Ljava/util/HashMap;
-HSPLandroid/accounts/AccountManager;->access$300(Landroid/accounts/AccountManager;)Ljava/util/HashMap;
-HSPLandroid/accounts/AccountManager;->getAccountsByTypeAndFeatures(Ljava/lang/String;[Ljava/lang/String;Landroid/accounts/AccountManagerCallback;Landroid/os/Handler;)Landroid/accounts/AccountManagerFuture;
-HSPLandroid/accounts/AccountManager;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
-HSPLandroid/accounts/AccountManager;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
-HSPLandroid/accounts/AccountManager;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/accounts/AccountManager;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/accounts/IAccountManagerResponse$Stub;-><init>()V
-HSPLandroid/animation/Animator;->isPaused()Z
-HSPLandroid/animation/AnimatorSet$SeekState;->getPlayTime()J
-HSPLandroid/animation/AnimatorSet$SeekState;->setPlayTime(JZ)V
-HSPLandroid/animation/AnimatorSet$SeekState;->updateSeekDirection(Z)V
-HSPLandroid/animation/AnimatorSet;->access$200(Landroid/animation/AnimatorSet;)J
-HSPLandroid/animation/AnimatorSet;->setCurrentPlayTime(J)V
-HSPLandroid/animation/ObjectAnimator;->setAutoCancel(Z)V
-HSPLandroid/animation/PropertyValuesHolder$IntPropertyValuesHolder;-><init>(Ljava/lang/String;[I)V
-HSPLandroid/animation/PropertyValuesHolder;->ofInt(Ljava/lang/String;[I)Landroid/animation/PropertyValuesHolder;
-HSPLandroid/animation/RectEvaluator;-><init>(Landroid/graphics/Rect;)V
-HSPLandroid/app/Activity;->attach(Landroid/content/Context;Landroid/app/ActivityThread;Landroid/app/Instrumentation;Landroid/os/IBinder;ILandroid/app/Application;Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/CharSequence;Landroid/app/Activity;Ljava/lang/String;Landroid/app/Activity$NonConfigurationInstances;Landroid/content/res/Configuration;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/view/Window;Landroid/view/ViewRootImpl$ActivityConfigCallback;Landroid/os/IBinder;)V
-HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$RunningServiceInfo;
-HSPLandroid/app/ActivityManager$RunningServiceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V
-HSPLandroid/app/ActivityManager$RunningServiceInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$RunningServiceInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/ActivityManager$StackInfo;
-HSPLandroid/app/ActivityManager$StackInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/ActivityManager$StackInfo;-><init>(Landroid/os/Parcel;Landroid/app/ActivityManager$1;)V
-HSPLandroid/app/ActivityManager$StackInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$StackInfo;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureNavigationBarContrastWhenTransparent(Z)V
-HSPLandroid/app/ActivityManager$TaskDescription;->setEnsureStatusBarContrastWhenTransparent(Z)V
-HSPLandroid/app/ActivityManager;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
-HSPLandroid/app/ActivityManager;->getLockTaskModeState()I
-HSPLandroid/app/ActivityManager;->getRunningServices(I)Ljava/util/List;
-HSPLandroid/app/ActivityManager;->getRunningTasks(I)Ljava/util/List;
-HSPLandroid/app/ActivityManager;->getTaskService()Landroid/app/IActivityTaskManager;
-HSPLandroid/app/Activity;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V
-HSPLandroid/app/Activity;->setContentView(Landroid/view/View;)V
-HSPLandroid/app/Activity;->setDefaultKeyMode(I)V
-HSPLandroid/app/Activity;->setRequestedOrientation(I)V
-HSPLandroid/app/ActivityThread$ActivityClientRecord;-><init>(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;)V
-HSPLandroid/app/ActivityThread$ActivityClientRecord;->isPersistable()Z
-HSPLandroid/app/ActivityThread;->applyPendingProcessState()V
-HSPLandroid/app/ActivityThread;->countLaunchingActivities(I)V
-HSPLandroid/app/ActivityThread;->getHandler()Landroid/os/Handler;
-HSPLandroid/app/ActivityThread;->isLoadedApkResourceDirsUpToDate(Landroid/app/LoadedApk;Landroid/content/pm/ApplicationInfo;)Z
-HSPLandroid/app/ActivityThread;->lambda$attach$1$ActivityThread(Landroid/content/res/Configuration;)V
-HSPLandroid/app/ActivityThread;->relaunchAllActivities(Z)V
-HSPLandroid/app/ActivityTransitionState;->startExitOutTransition(Landroid/app/Activity;Landroid/os/Bundle;)V
-HSPLandroid/app/admin/DevicePolicyManager;->getCameraDisabled(Landroid/content/ComponentName;I)Z
-HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerComponentOnCallingUser()Landroid/content/ComponentName;
-HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwner()Ljava/lang/String;
-HSPLandroid/app/admin/DevicePolicyManager;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence;
-HSPLandroid/app/admin/DevicePolicyManager;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;)I
-HSPLandroid/app/admin/DevicePolicyManager;->getProfileOwner()Landroid/content/ComponentName;
-HSPLandroid/app/admin/DevicePolicyManager;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-HSPLandroid/app/admin/DevicePolicyManager;->isAdminActiveAsUser(Landroid/content/ComponentName;I)Z
-HSPLandroid/app/admin/DevicePolicyManager;->isAdminActive(Landroid/content/ComponentName;)Z
-HSPLandroid/app/admin/DevicePolicyManager;->isLogoutEnabled()Z
-HSPLandroid/app/admin/DevicePolicyManager;->isNetworkLoggingEnabled(Landroid/content/ComponentName;)Z
-HSPLandroid/app/admin/DevicePolicyManager;->throwIfParentInstance(Ljava/lang/String;)V
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getCameraDisabled(Landroid/content/ComponentName;I)Z
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getProfileOwner(I)Landroid/content/ComponentName;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isAdminActive(Landroid/content/ComponentName;I)Z
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isLogoutEnabled()Z
-HSPLandroid/app/admin/IDevicePolicyManager$Stub$Proxy;->isNetworkLoggingEnabled(Landroid/content/ComponentName;Ljava/lang/String;)Z
-HSPLandroid/app/AlarmManager;->set(IJJJLandroid/app/AlarmManager$OnAlarmListener;Landroid/os/Handler;Landroid/os/WorkSource;)V
-HSPLandroid/app/AlarmManager;->set(IJJJLandroid/app/PendingIntent;Landroid/os/WorkSource;)V
-HSPLandroid/app/AlarmManager;->setWindow(IJJLandroid/app/PendingIntent;)V
-HSPLandroid/app/Application;->getProcessName()Ljava/lang/String;
-HSPLandroid/app/ApplicationLoaders;->getCachedNonBootclasspathSystemLib(Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
-HSPLandroid/app/ApplicationLoaders;->getSharedLibraryClassLoaderWithSharedLibraries(Ljava/lang/String;IZLjava/lang/String;Ljava/lang/String;Ljava/lang/ClassLoader;Ljava/lang/String;Ljava/util/List;)Ljava/lang/ClassLoader;
-HSPLandroid/app/ApplicationLoaders;->sharedLibrariesEquals(Ljava/util/List;Ljava/util/List;)Z
-HSPLandroid/app/ApplicationPackageManager;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String;
-HSPLandroid/app/ApplicationPackageManager;->getSystemAvailableFeatures()[Landroid/content/pm/FeatureInfo;
-HSPLandroid/app/ApplicationPackageManager;->getUserBadgedLabel(Ljava/lang/CharSequence;Landroid/os/UserHandle;)Ljava/lang/CharSequence;
-HSPLandroid/app/ApplicationPackageManager;->isManagedProfile(I)Z
-HSPLandroid/app/ApplicationPackageManager;->isSafeMode()Z
-HSPLandroid/app/ApplicationPackageManager;->registerMoveCallback(Landroid/content/pm/PackageManager$MoveCallback;Landroid/os/Handler;)V
-HSPLandroid/app/AppOpsManager$2;-><init>(Landroid/app/AppOpsManager;Landroid/app/AppOpsManager$OnOpActiveChangedListener;)V
-HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$OpEntry;
-HSPLandroid/app/AppOpsManager$OpEntry$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/AppOpsManager$OpEntry;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/AppOpsManager$PackageOps;
-HSPLandroid/app/AppOpsManager$PackageOps$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/AppOpsManager$PackageOps;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/AppOpsManager;->access$800(Landroid/os/Parcel;)Landroid/util/LongSparseLongArray;
-HSPLandroid/app/AppOpsManager;->access$900(Landroid/os/Parcel;)Landroid/util/LongSparseArray;
-HSPLandroid/app/AppOpsManager;->checkOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->finishOp(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/app/AppOpsManager;->noteProxyOpNoThrow(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->readLongSparseLongArrayFromParcel(Landroid/os/Parcel;)Landroid/util/LongSparseLongArray;
-HSPLandroid/app/AppOpsManager;->readLongSparseStringArrayFromParcel(Landroid/os/Parcel;)Landroid/util/LongSparseArray;
-HSPLandroid/app/AppOpsManager;->startOpNoThrow(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/AppOpsManager;->startWatchingActive([ILandroid/app/AppOpsManager$OnOpActiveChangedListener;)V
-HSPLandroid/app/AppOpsManager;->startWatchingMode(Ljava/lang/String;Ljava/lang/String;ILandroid/app/AppOpsManager$OnOpChangedListener;)V
-HSPLandroid/app/AppOpsManager;->startWatchingMode(Ljava/lang/String;Ljava/lang/String;Landroid/app/AppOpsManager$OnOpChangedListener;)V
-HSPLandroid/app/AppOpsManager;->startWatchingNoted([ILandroid/app/AppOpsManager$OnOpNotedListener;)V
-HSPLandroid/app/AppOpsManager;->unsafeCheckOpRaw(Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/BackStackRecord;->replace(ILandroid/app/Fragment;Ljava/lang/String;)Landroid/app/FragmentTransaction;
-HSPLandroid/app/backup/BackupManager;->checkServiceBinder()V
-HSPLandroid/app/backup/BackupManager;->getCurrentTransport()Ljava/lang/String;
-HSPLandroid/app/backup/BackupManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-HSPLandroid/app/backup/BackupManager;->updateTransportAttributes(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;)V
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->configurationIntent()Landroid/content/Intent;
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->currentDestinationString()Ljava/lang/String;
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->dataManagementIntentLabel()Ljava/lang/CharSequence;
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->dataManagementIntent()Landroid/content/Intent;
-HSPLandroid/app/backup/BackupTransport$TransportImpl;-><init>(Landroid/app/backup/BackupTransport;)V
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->name()Ljava/lang/String;
-HSPLandroid/app/backup/BackupTransport$TransportImpl;->transportDirName()Ljava/lang/String;
-HSPLandroid/app/backup/BackupTransport;->configurationIntent()Landroid/content/Intent;
-HSPLandroid/app/backup/BackupTransport;->dataManagementIntentLabel()Ljava/lang/CharSequence;
-HSPLandroid/app/backup/BackupTransport;->dataManagementIntent()Landroid/content/Intent;
-HSPLandroid/app/backup/BackupTransport;->getBinder()Landroid/os/IBinder;
-HSPLandroid/app/backup/BackupTransport;-><init>()V
-HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->getCurrentTransport()Ljava/lang/String;
-HSPLandroid/app/backup/IBackupManager$Stub$Proxy;->updateTransportAttributesForUser(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-HSPLandroid/app/ContextImpl$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
-HSPLandroid/app/ContextImpl$1;-><init>(Ljava/lang/String;)V
-HSPLandroid/app/ContextImpl;->createResources(Landroid/os/IBinder;Landroid/app/LoadedApk;Ljava/lang/String;ILandroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;)Landroid/content/res/Resources;
-HSPLandroid/app/ContextImpl;->databaseList()[Ljava/lang/String;
-HSPLandroid/app/ContextImpl;->deleteDatabase(Ljava/lang/String;)Z
-HSPLandroid/app/ContextImpl;->deleteFile(Ljava/lang/String;)Z
-HSPLandroid/app/ContextImpl;->getOuterContext()Landroid/content/Context;
-HSPLandroid/app/ContextImpl;->moveFiles(Ljava/io/File;Ljava/io/File;Ljava/lang/String;)I
-HSPLandroid/app/ContextImpl;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z
-HSPLandroid/app/ContextImpl;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;)Landroid/database/sqlite/SQLiteDatabase;
-HSPLandroid/app/ContextImpl;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;
-HSPLandroid/app/ContextImpl;->updateDisplay(I)V
-HSPLandroid/app/Dialog;->getLayoutInflater()Landroid/view/LayoutInflater;
-HSPLandroid/app/Dialog;->setContentView(I)V
-HSPLandroid/app/Dialog;->setOnShowListener(Landroid/content/DialogInterface$OnShowListener;)V
-HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;)Landroid/database/Cursor;
-HSPLandroid/app/DownloadManager;->query(Landroid/app/DownloadManager$Query;[Ljava/lang/String;)Landroid/database/Cursor;
-HSPLandroid/app/FragmentManagerImpl;->registerFragmentLifecycleCallbacks(Landroid/app/FragmentManager$FragmentLifecycleCallbacks;Z)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getServices(II)Ljava/util/List;
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getTasks(I)Ljava/util/List;
-HSPLandroid/app/IActivityManager$Stub$Proxy;->getUidForIntentSender(Landroid/content/IIntentSender;)I
-HSPLandroid/app/IActivityManager$Stub$Proxy;->isUserRunning(II)Z
-HSPLandroid/app/IActivityManager$Stub$Proxy;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->registerProcessObserver(Landroid/app/IProcessObserver;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->setHasTopUi(Z)V
-HSPLandroid/app/IActivityManager$Stub$Proxy;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getFilteredTasks(III)Ljava/util/List;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getFocusedStackInfo()Landroid/app/ActivityManager$StackInfo;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getLastResumedActivityUserId()I
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getLockTaskModeState()I
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTasks(I)Ljava/util/List;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot;
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->keyguardGoingAway(I)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->registerRemoteAnimations(Landroid/os/IBinder;Landroid/view/RemoteAnimationDefinition;)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setLockScreenShown(ZZ)V
-HSPLandroid/app/IActivityTaskManager$Stub$Proxy;->setRequestedOrientation(Landroid/os/IBinder;I)V
-HSPLandroid/app/IAlarmManager$Stub$Proxy;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
-HSPLandroid/app/INotificationManager$Stub$Proxy;->cancelAllNotifications(Ljava/lang/String;I)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
-HSPLandroid/app/INotificationManager$Stub$Proxy;->getEffectsSuppressor()Landroid/content/ComponentName;
-HSPLandroid/app/INotificationManager$Stub$Proxy;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
-HSPLandroid/app/INotificationManager$Stub$Proxy;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->requestBindListener(Landroid/content/ComponentName;)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->setPrivateNotificationsAllowed(Z)V
-HSPLandroid/app/INotificationManager$Stub$Proxy;->shouldHideSilentStatusIcons(Ljava/lang/String;)Z
-HSPLandroid/app/IProcessObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IProcessObserver$Stub;-><init>()V
-HSPLandroid/app/IProcessObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/ITaskStackListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/ITaskStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IUidObserver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getHeightHint(I)I
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaperInfo(I)Landroid/app/WallpaperInfo;
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor;
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->getWidthHint(I)I
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->isWallpaperSupported(Ljava/lang/String;)Z
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->setInAmbientMode(ZJ)V
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z
-HSPLandroid/app/IWallpaperManager$Stub$Proxy;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
-HSPLandroid/app/IWallpaperManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/IWallpaperManager;
-HSPLandroid/app/IWallpaperManagerCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/IWallpaperManagerCallback$Stub;-><init>()V
-HSPLandroid/app/IWallpaperManagerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/job/IJobScheduler$Stub$Proxy;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
-HSPLandroid/app/job/JobInfo$Builder;->setRequiresBatteryNotLow(Z)Landroid/app/job/JobInfo$Builder;
-HSPLandroid/app/job/JobInfo;->getNetworkType()I
-HSPLandroid/app/job/JobInfo;->isRequireCharging()Z
-HSPLandroid/app/job/JobInfo;->isRequireDeviceIdle()Z
-HSPLandroid/app/KeyguardManager;->setPrivateNotificationsAllowed(Z)V
-HSPLandroid/app/LoadedApk;->getApplicationInfo()Landroid/content/pm/ApplicationInfo;
-HSPLandroid/app/LoadedApk;->getOverlayDirs()[Ljava/lang/String;
-HSPLandroid/app/LoadedApk;->getResDir()Ljava/lang/String;
-HSPLandroid/app/LoadedApk;->getSplitClassLoader(Ljava/lang/String;)Ljava/lang/ClassLoader;
-HSPLandroid/app/LoadedApk;->getSplitPaths(Ljava/lang/String;)[Ljava/lang/String;
-HSPLandroid/app/Notification$Action;->access$1900(Landroid/app/Notification$Action;)[Landroid/app/RemoteInput;
-HSPLandroid/app/Notification$Builder;->access$2500(Landroid/app/Notification$Builder;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$Builder;->access$300(Landroid/app/Notification$Builder;)Landroid/app/Notification;
-HSPLandroid/app/Notification$Builder;->applyStandardTemplate(ILandroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->applyStandardTemplate(ILandroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(ILandroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->applyStandardTemplateWithActions(ILandroid/app/Notification$TemplateBindResult;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->bindActivePermissions(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindAlertedIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindExpandButton(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindHeaderAppName(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindHeaderChronometerAndTime(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindHeaderText(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindHeaderTextSecondary(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindLargeIconAndReply(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;Landroid/app/Notification$TemplateBindResult;)V
-HSPLandroid/app/Notification$Builder;->bindLargeIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)Z
-HSPLandroid/app/Notification$Builder;->bindNotificationHeader(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindProfileBadge(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->bindReplyIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)Z
-HSPLandroid/app/Notification$Builder;->bindSmallIcon(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->calculateMarginEnd(ZZ)I
-HSPLandroid/app/Notification$Builder;->createBigContentView()Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->createContentView()Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->createContentView(Z)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->createSummaryText()Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$Builder;->ensureColors(Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->filterOutContextualActions(Ljava/util/List;)Ljava/util/List;
-HSPLandroid/app/Notification$Builder;->findReplyAction()Landroid/app/Notification$Action;
-HSPLandroid/app/Notification$Builder;->generateActionButton(Landroid/app/Notification$Action;ZLandroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->getActionLayoutResource()I
-HSPLandroid/app/Notification$Builder;->getBackgroundColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->getBaseLayoutResource()I
-HSPLandroid/app/Notification$Builder;->getBigBaseLayoutResource()I
-HSPLandroid/app/Notification$Builder;->getHeadsUpStatusBarText(Z)Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$Builder;->getNeutralColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->getPrimaryTextColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->getProfileBadgeDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/app/Notification$Builder;->getProfileBadge()Landroid/graphics/Bitmap;
-HSPLandroid/app/Notification$Builder;->getRawColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->getSecondaryTextColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->handleProgressBar(Landroid/widget/RemoteViews;Landroid/os/Bundle;Landroid/app/Notification$StandardTemplateParams;)Z
-HSPLandroid/app/Notification$Builder;->hasForegroundColor()Z
-HSPLandroid/app/Notification$Builder;->hasValidRemoteInput(Landroid/app/Notification$Action;)Z
-HSPLandroid/app/Notification$Builder;->isColorized(Landroid/app/Notification$StandardTemplateParams;)Z
-HSPLandroid/app/Notification$Builder;->isLegacy()Z
-HSPLandroid/app/Notification$Builder;->loadHeaderAppName()Ljava/lang/String;
-HSPLandroid/app/Notification$Builder;->makeHeaderExpanded(Landroid/widget/RemoteViews;)V
-HSPLandroid/app/Notification$Builder;->makeLowPriorityContentView(Z)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->makeNotificationHeader(Landroid/app/Notification$StandardTemplateParams;)Landroid/widget/RemoteViews;
-HSPLandroid/app/Notification$Builder;->processLargeLegacyIcon(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->processLegacyText(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$Builder;->processSmallIconColor(Landroid/graphics/drawable/Icon;Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->processTextSpans(Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/app/Notification$BuilderRemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V
-HSPLandroid/app/Notification$Builder;->resetNotificationHeader(Landroid/widget/RemoteViews;)V
-HSPLandroid/app/Notification$Builder;->resetStandardTemplate(Landroid/widget/RemoteViews;)V
-HSPLandroid/app/Notification$Builder;->resetStandardTemplateWithActions(Landroid/widget/RemoteViews;)V
-HSPLandroid/app/Notification$Builder;->resolveContrastColor(Landroid/app/Notification$StandardTemplateParams;)I
-HSPLandroid/app/Notification$Builder;->resolveNeutralColor()I
-HSPLandroid/app/Notification$Builder;->setContentMinHeight(Landroid/widget/RemoteViews;Z)V
-HSPLandroid/app/Notification$Builder;->setTextViewColorPrimary(Landroid/widget/RemoteViews;ILandroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->setTextViewColorSecondary(Landroid/widget/RemoteViews;ILandroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$Builder;->showsTimeOrChronometer()Z
-HSPLandroid/app/Notification$Builder;->textColorsNeedInversion()Z
-HSPLandroid/app/Notification$Builder;->updateBackgroundColor(Landroid/widget/RemoteViews;Landroid/app/Notification$StandardTemplateParams;)V
-HSPLandroid/app/Notification$StandardTemplateParams;->disallowColorization()Landroid/app/Notification$StandardTemplateParams;
-HSPLandroid/app/Notification$StandardTemplateParams;->fillTextsFrom(Landroid/app/Notification$Builder;)Landroid/app/Notification$StandardTemplateParams;
-HSPLandroid/app/Notification$StandardTemplateParams;->forceDefaultColor()Landroid/app/Notification$StandardTemplateParams;
-HSPLandroid/app/Notification$StandardTemplateParams;->reset()Landroid/app/Notification$StandardTemplateParams;
-HSPLandroid/app/Notification$StandardTemplateParams;->summaryText(Ljava/lang/CharSequence;)Landroid/app/Notification$StandardTemplateParams;
-HSPLandroid/app/Notification;->access$1300(Landroid/app/Notification;)Landroid/graphics/drawable/Icon;
-HSPLandroid/app/Notification;->access$1602(Landroid/app/Notification;Z)Z
-HSPLandroid/app/Notification;->access$1800(Landroid/app/Notification;)Z
-HSPLandroid/app/Notification;->access$2000(Landroid/app/Notification;)J
-HSPLandroid/app/Notification;->access$2100(Landroid/app/Notification;)Landroid/graphics/drawable/Icon;
-HSPLandroid/app/NotificationChannel;->enableVibration(Z)V
-HSPLandroid/app/NotificationChannel;->setGroup(Ljava/lang/String;)V
-HSPLandroid/app/Notification;->getShortcutId()Ljava/lang/String;
-HSPLandroid/app/Notification;->hasLargeIcon()Z
-HSPLandroid/app/Notification;->isMediaNotification()Z
-HSPLandroid/app/NotificationManager;->cancelAll()V
-HSPLandroid/app/NotificationManager;->getCurrentInterruptionFilter()I
-HSPLandroid/app/NotificationManager;->getEffectsSuppressor()Landroid/content/ComponentName;
-HSPLandroid/app/NotificationManager;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
-HSPLandroid/app/NotificationManager;->shouldHideSilentStatusBarIcons()Z
-HSPLandroid/app/NotificationManager;->zenModeToInterruptionFilter(I)I
-HSPLandroid/app/Notification;->showsChronometer()Z
-HSPLandroid/app/Notification;->showsTime()Z
-HSPLandroid/app/PendingIntent$1;-><init>(Landroid/app/PendingIntent;)V
-HSPLandroid/app/PendingIntent;->getTarget()Landroid/content/IIntentSender;
-HSPLandroid/app/PendingIntent;->getTargetPackage()Ljava/lang/String;
-HSPLandroid/app/PendingIntent;->registerCancelListener(Landroid/app/PendingIntent$CancelListener;)V
-HSPLandroid/app/PendingIntent;->unregisterCancelListener(Landroid/app/PendingIntent$CancelListener;)V
-HSPLandroid/app/prediction/AppPredictionManager;->createAppPredictionSession(Landroid/app/prediction/AppPredictionContext;)Landroid/app/prediction/AppPredictor;
-HSPLandroid/app/prediction/AppPredictionManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/app/prediction/IPredictionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/app/prediction/IPredictionManager;
-HSPLandroid/app/RemoteAction$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/RemoteAction;
-HSPLandroid/app/RemoteAction$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/servertransaction/LaunchActivityItem;->postExecute(Landroid/app/ClientTransactionHandler;Landroid/os/IBinder;Landroid/app/servertransaction/PendingTransactionActions;)V
-HSPLandroid/app/servertransaction/LaunchActivityItem;->setValues(Landroid/app/servertransaction/LaunchActivityItem;Landroid/content/Intent;ILandroid/content/pm/ActivityInfo;Landroid/content/res/Configuration;Landroid/content/res/Configuration;Landroid/content/res/CompatibilityInfo;Ljava/lang/String;Lcom/android/internal/app/IVoiceInteractor;ILandroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/util/List;Ljava/util/List;ZLandroid/app/ProfilerInfo;Landroid/os/IBinder;)V
-HSPLandroid/app/Service;->stopSelfResult(I)Z
-HSPLandroid/app/StatsManager;->addConfig(J[B)V
-HSPLandroid/app/StatsManager;->getReports(J)[B
-HSPLandroid/app/StatsManager;->setFetchReportsOperation(Landroid/app/PendingIntent;J)V
-HSPLandroid/app/StatsManager;->setPullerCallback(ILandroid/os/IStatsPullerCallback;)V
-HSPLandroid/app/StatusBarManager;->disable(I)V
-HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Landroid/app/prediction/AppPredictionManager;
-HSPLandroid/app/SystemServiceRegistry$103;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$15;->createService()Landroid/os/IBinder;
-HSPLandroid/app/SystemServiceRegistry$15;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Landroid/net/nsd/NsdManager;
-HSPLandroid/app/SystemServiceRegistry$34;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Landroid/hardware/SensorPrivacyManager;
-HSPLandroid/app/SystemServiceRegistry$39;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$86;->createService()Landroid/service/persistentdata/PersistentDataBlockManager;
-HSPLandroid/app/SystemServiceRegistry$86;->createService()Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Landroid/media/projection/MediaProjectionManager;
-HSPLandroid/app/SystemServiceRegistry$88;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Landroid/content/om/OverlayManager;
-HSPLandroid/app/SystemServiceRegistry$95;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Landroid/hardware/location/ContextHubManager;
-HSPLandroid/app/SystemServiceRegistry$98;->createService(Landroid/app/ContextImpl;)Ljava/lang/Object;
-HSPLandroid/app/trust/IStrongAuthTracker$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/trust/ITrustListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/app/trust/ITrustListener$Stub;-><init>()V
-HSPLandroid/app/trust/ITrustListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V
-HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isDeviceSecure(I)Z
-HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->isTrustUsuallyManaged(I)Z
-HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->registerTrustListener(Landroid/app/trust/ITrustListener;)V
-HSPLandroid/app/trust/ITrustManager$Stub$Proxy;->reportKeyguardShowingChanged()V
-HSPLandroid/app/trust/TrustManager$2;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/app/trust/TrustManager;->access$000(Landroid/app/trust/TrustManager;)Landroid/os/Handler;
-HSPLandroid/app/trust/TrustManager;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V
-HSPLandroid/app/trust/TrustManager;->isTrustUsuallyManaged(I)Z
-HSPLandroid/app/trust/TrustManager;->registerTrustListener(Landroid/app/trust/TrustManager$TrustListener;)V
-HSPLandroid/app/trust/TrustManager;->reportKeyguardShowingChanged()V
-HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->isAppInactive(Ljava/lang/String;I)Z
-HSPLandroid/app/usage/IUsageStatsManager$Stub$Proxy;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
-HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/usage/UsageEvents;
-HSPLandroid/app/usage/UsageEvents$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/usage/UsageEvents$Event;->getClassName()Ljava/lang/String;
-HSPLandroid/app/usage/UsageEvents$Event;->getConfiguration()Landroid/content/res/Configuration;
-HSPLandroid/app/usage/UsageEvents$Event;->getEventType()I
-HSPLandroid/app/usage/UsageEvents$Event;->getPackageName()Ljava/lang/String;
-HSPLandroid/app/usage/UsageEvents$Event;->getTimeStamp()J
-HSPLandroid/app/usage/UsageEvents$Event;-><init>()V
-HSPLandroid/app/usage/UsageEvents;->getNextEvent(Landroid/app/usage/UsageEvents$Event;)Z
-HSPLandroid/app/usage/UsageEvents;->hasNextEvent()Z
-HSPLandroid/app/usage/UsageEvents;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/app/usage/UsageEvents;->readEventFromParcel(Landroid/os/Parcel;Landroid/app/usage/UsageEvents$Event;)V
-HSPLandroid/app/usage/UsageStats;->getLastTimeStamp()J
-HSPLandroid/app/usage/UsageStatsManager;->isAppInactive(Ljava/lang/String;)Z
-HSPLandroid/app/usage/UsageStatsManager;->queryAndAggregateUsageStats(JJ)Ljava/util/Map;
-HSPLandroid/app/usage/UsageStatsManager;->queryEvents(JJ)Landroid/app/usage/UsageEvents;
-HSPLandroid/app/WallpaperColors;->getColorHints()I
-HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/app/WallpaperInfo;
-HSPLandroid/app/WallpaperInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/app/WallpaperManager$Globals;->access$200(Landroid/app/WallpaperManager$Globals;)Landroid/app/IWallpaperManager;
-HSPLandroid/app/WallpaperManager$Globals;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;II)V
-HSPLandroid/app/WallpaperManager$Globals;->lambda$onWallpaperColorsChanged$1$WallpaperManager$Globals(Landroid/util/Pair;Landroid/app/WallpaperColors;II)V
-HSPLandroid/app/WallpaperManager$Globals;->lambda$removeOnColorsChangedListener$0(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/util/Pair;)Z
-HSPLandroid/app/WallpaperManager$Globals;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;II)V
-HSPLandroid/app/WallpaperManager$Globals;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;II)V
-HSPLandroid/app/WallpaperManager;->access$100()Landroid/app/WallpaperManager$Globals;
-HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;I)V
-HSPLandroid/app/WallpaperManager;->addOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;Landroid/os/Handler;)V
-HSPLandroid/app/WallpaperManager;->getDesiredMinimumHeight()I
-HSPLandroid/app/WallpaperManager;->getDesiredMinimumWidth()I
-HSPLandroid/app/WallpaperManager;->getInstance(Landroid/content/Context;)Landroid/app/WallpaperManager;
-HSPLandroid/app/WallpaperManager;->getWallpaperInfo(I)Landroid/app/WallpaperInfo;
-HSPLandroid/app/WallpaperManager;->getWallpaperInfo()Landroid/app/WallpaperInfo;
-HSPLandroid/app/WallpaperManager;->isWallpaperSupported()Z
-HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;I)V
-HSPLandroid/app/WallpaperManager;->removeOnColorsChangedListener(Landroid/app/WallpaperManager$OnColorsChangedListener;)V
-HSPLandroid/app/WallpaperManager;->setWallpaperOffsets(Landroid/os/IBinder;FF)V
-HSPLandroid/app/WallpaperManager;->setWallpaperOffsetSteps(FF)V
-HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(ILandroid/os/UserHandle;Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/appwidget/AppWidgetManager;->getInstalledProvidersForProfile(Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp;
-HSPLandroid/bluetooth/BluetoothA2dp$1;->getServiceInterface(Landroid/os/IBinder;)Ljava/lang/Object;
-HSPLandroid/bluetooth/BluetoothAdapter;->enableBLE()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->getAddress()Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothLeScanner()Landroid/bluetooth/le/BluetoothLeScanner;
-HSPLandroid/bluetooth/BluetoothAdapter;->getBluetoothManager()Landroid/bluetooth/IBluetoothManager;
-HSPLandroid/bluetooth/BluetoothAdapter;->getConnectionState()I
-HSPLandroid/bluetooth/BluetoothAdapter;->getLeAccess()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->getLeState()I
-HSPLandroid/bluetooth/BluetoothAdapter;->getRemoteDevice(Ljava/lang/String;)Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/BluetoothAdapter;->isBleScanAlwaysAvailable()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->isLeEnabled()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->isOffloadedFilteringSupported()Z
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureL2capOn(I)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingInsecureRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(I)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingL2capOn(IZZ)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(I)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothAdapter;->listenUsingRfcommOn(IZZ)Landroid/bluetooth/BluetoothServerSocket;
-HSPLandroid/bluetooth/BluetoothClass;-><init>(I)V
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getBitsPerSample()I
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getChannelMode()I
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecPriority()I
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific1()J
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific2()J
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific3()J
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecSpecific4()J
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getCodecType()I
-HSPLandroid/bluetooth/BluetoothCodecConfig;->getSampleRate()I
-HSPLandroid/bluetooth/BluetoothCodecConfig;-><init>(IIIIIJJJJ)V
-HSPLandroid/bluetooth/BluetoothDevice;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/bluetooth/BluetoothHeadset;->isInbandRingingSupported(Landroid/content/Context;)Z
-HSPLandroid/bluetooth/BluetoothInputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V
-HSPLandroid/bluetooth/BluetoothManager;->getAdapter()Landroid/bluetooth/BluetoothAdapter;
-HSPLandroid/bluetooth/BluetoothOutputStream;-><init>(Landroid/bluetooth/BluetoothSocket;)V
-HSPLandroid/bluetooth/BluetoothPbap;->access$000(Ljava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothPbap;->log(Ljava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$000(Landroid/bluetooth/BluetoothProfileConnector;)Z
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$200(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$302(Landroid/bluetooth/BluetoothProfileConnector;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$400(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile$ServiceListener;
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$500(Landroid/bluetooth/BluetoothProfileConnector;)I
-HSPLandroid/bluetooth/BluetoothProfileConnector;->access$600(Landroid/bluetooth/BluetoothProfileConnector;)Landroid/bluetooth/BluetoothProfile;
-HSPLandroid/bluetooth/BluetoothProfileConnector;->connect(Landroid/content/Context;Landroid/bluetooth/BluetoothProfile$ServiceListener;)V
-HSPLandroid/bluetooth/BluetoothProfileConnector;->doBind()Z
-HSPLandroid/bluetooth/BluetoothProfileConnector;->getService()Ljava/lang/Object;
-HSPLandroid/bluetooth/BluetoothProfileConnector;->logDebug(Ljava/lang/String;)V
-HSPLandroid/bluetooth/BluetoothServerSocket;->accept(I)Landroid/bluetooth/BluetoothSocket;
-HSPLandroid/bluetooth/BluetoothServerSocket;->accept()Landroid/bluetooth/BluetoothSocket;
-HSPLandroid/bluetooth/BluetoothServerSocket;->getChannel()I
-HSPLandroid/bluetooth/BluetoothServerSocket;-><init>(IZZI)V
-HSPLandroid/bluetooth/BluetoothServerSocket;-><init>(IZZIZZ)V
-HSPLandroid/bluetooth/BluetoothServerSocket;->setChannel(I)V
-HSPLandroid/bluetooth/BluetoothSocket;->accept(I)Landroid/bluetooth/BluetoothSocket;
-HSPLandroid/bluetooth/BluetoothSocket;->bindListen()I
-HSPLandroid/bluetooth/BluetoothSocket;->getPort()I
-HSPLandroid/bluetooth/BluetoothSocket;->getSecurityFlags()I
-HSPLandroid/bluetooth/BluetoothSocket;-><init>(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;)V
-HSPLandroid/bluetooth/BluetoothSocket;-><init>(IIZZLandroid/bluetooth/BluetoothDevice;ILandroid/os/ParcelUuid;ZZ)V
-HSPLandroid/bluetooth/BluetoothSocket;->readAll(Ljava/io/InputStream;[B)I
-HSPLandroid/bluetooth/BluetoothSocket;->readInt(Ljava/io/InputStream;)I
-HSPLandroid/bluetooth/BluetoothSocket;->setExcludeSdp(Z)V
-HSPLandroid/bluetooth/BluetoothSocket;->waitSocketSignal(Ljava/io/InputStream;)Ljava/lang/String;
-HSPLandroid/bluetooth/BluetoothUuid;->getServiceIdentifierFromParcelUuid(Landroid/os/ParcelUuid;)I
-HSPLandroid/bluetooth/BluetoothUuid;->is16BitUuid(Landroid/os/ParcelUuid;)Z
-HSPLandroid/bluetooth/BluetoothUuid;->parseUuidFrom([B)Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/BluetoothUuid;->uuidToBytes(Landroid/os/ParcelUuid;)[B
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->getAdapterConnectionState()I
-HSPLandroid/bluetooth/IBluetooth$Stub$Proxy;->isOffloadedFilteringSupported()Z
-HSPLandroid/bluetooth/IBluetooth$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetooth$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothA2dp;
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothA2dp$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothAvrcpTarget$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/IBluetoothCallback$Stub$Proxy;->onBluetoothStateChange(II)V
-HSPLandroid/bluetooth/IBluetoothCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothCallback;
-HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->registerScanner(Landroid/bluetooth/le/IScannerCallback;Landroid/os/WorkSource;)V
-HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->startScan(ILandroid/bluetooth/le/ScanSettings;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V
-HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->stopScan(I)V
-HSPLandroid/bluetooth/IBluetoothGatt$Stub$Proxy;->unregisterScanner(I)V
-HSPLandroid/bluetooth/IBluetoothGatt$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothGatt$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothHeadset$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothHeadset$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/IBluetoothHeadsetPhone$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHeadsetPhone;
-HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidDevice;
-HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothHidDevice$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothHidHost$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothHidHost;
-HSPLandroid/bluetooth/IBluetoothHidHost$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothHidHost$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getAddress()Ljava/lang/String;
-HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt;
-HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->isBleScanAlwaysAvailable()Z
-HSPLandroid/bluetooth/IBluetoothManager$Stub$Proxy;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
-HSPLandroid/bluetooth/IBluetoothMap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothMap;
-HSPLandroid/bluetooth/IBluetoothMap$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothMap$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothPan$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothPan;
-HSPLandroid/bluetooth/IBluetoothPan$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothPbap$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothSap$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSap;
-HSPLandroid/bluetooth/IBluetoothSap$Stub;-><init>()V
-HSPLandroid/bluetooth/IBluetoothSap$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;->createSocketChannel(ILjava/lang/String;Landroid/os/ParcelUuid;II)Landroid/os/ParcelFileDescriptor;
-HSPLandroid/bluetooth/IBluetoothSocketManager$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/IBluetoothSocketManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/bluetooth/IBluetoothSocketManager;
-HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->asBinder()Landroid/os/IBinder;
-HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScannerRegistered(II)V
-HSPLandroid/bluetooth/le/IScannerCallback$Stub$Proxy;->onScanResult(Landroid/bluetooth/le/ScanResult;)V
-HSPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanFilter;
-HSPLandroid/bluetooth/le/ScanFilter$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/bluetooth/le/ScanFilter$Builder;->setManufacturerData(I[B[B)Landroid/bluetooth/le/ScanFilter$Builder;
-HSPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceData(Landroid/os/ParcelUuid;[B)Landroid/bluetooth/le/ScanFilter$Builder;
-HSPLandroid/bluetooth/le/ScanFilter$Builder;->setServiceUuid(Landroid/os/ParcelUuid;)Landroid/bluetooth/le/ScanFilter$Builder;
-HSPLandroid/bluetooth/le/ScanFilter;->getDeviceAddress()Ljava/lang/String;
-HSPLandroid/bluetooth/le/ScanFilter;->getDeviceName()Ljava/lang/String;
-HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerData()[B
-HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerDataMask()[B
-HSPLandroid/bluetooth/le/ScanFilter;->getManufacturerId()I
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceData()[B
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceDataMask()[B
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceDataUuid()Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceSolicitationUuid()Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceUuid()Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/le/ScanFilter;->getServiceUuidMask()Landroid/os/ParcelUuid;
-HSPLandroid/bluetooth/le/ScanFilter;->matches(Landroid/bluetooth/le/ScanResult;)Z
-HSPLandroid/bluetooth/le/ScanFilter;->matchesPartialData([B[B[B)Z
-HSPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuid(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z
-HSPLandroid/bluetooth/le/ScanFilter;->matchesServiceUuids(Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Ljava/util/List;)Z
-HSPLandroid/bluetooth/le/ScanFilter;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/bluetooth/le/ScanRecord;->extractBytes([BII)[B
-HSPLandroid/bluetooth/le/ScanRecord;->getBytes()[B
-HSPLandroid/bluetooth/le/ScanRecord;->getManufacturerSpecificData(I)[B
-HSPLandroid/bluetooth/le/ScanRecord;->getServiceData(Landroid/os/ParcelUuid;)[B
-HSPLandroid/bluetooth/le/ScanRecord;->getServiceUuids()Ljava/util/List;
-HSPLandroid/bluetooth/le/ScanRecord;-><init>(Ljava/util/List;Ljava/util/List;Landroid/util/SparseArray;Ljava/util/Map;IILjava/lang/String;[B)V
-HSPLandroid/bluetooth/le/ScanRecord;->parseFromBytes([B)Landroid/bluetooth/le/ScanRecord;
-HSPLandroid/bluetooth/le/ScanRecord;->parseServiceUuid([BIIILjava/util/List;)I
-HSPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanResult;
-HSPLandroid/bluetooth/le/ScanResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/bluetooth/le/ScanResult;->getDevice()Landroid/bluetooth/BluetoothDevice;
-HSPLandroid/bluetooth/le/ScanResult;->getRssi()I
-HSPLandroid/bluetooth/le/ScanResult;->getScanRecord()Landroid/bluetooth/le/ScanRecord;
-HSPLandroid/bluetooth/le/ScanResult;->getTimestampNanos()J
-HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/bluetooth/BluetoothDevice;IIIIIIILandroid/bluetooth/le/ScanRecord;J)V
-HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/os/Parcel;Landroid/bluetooth/le/ScanResult$1;)V
-HSPLandroid/bluetooth/le/ScanResult;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/bluetooth/le/ScanResult;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/bluetooth/le/ScanResult;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/bluetooth/le/ScanSettings;
-HSPLandroid/bluetooth/le/ScanSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->build()Landroid/bluetooth/le/ScanSettings;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;-><init>()V
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->isValidCallbackType(I)Z
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->setCallbackType(I)Landroid/bluetooth/le/ScanSettings$Builder;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->setMatchMode(I)Landroid/bluetooth/le/ScanSettings$Builder;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->setNumOfMatches(I)Landroid/bluetooth/le/ScanSettings$Builder;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->setReportDelay(J)Landroid/bluetooth/le/ScanSettings$Builder;
-HSPLandroid/bluetooth/le/ScanSettings$Builder;->setScanMode(I)Landroid/bluetooth/le/ScanSettings$Builder;
-HSPLandroid/bluetooth/le/ScanSettings;->getCallbackType()I
-HSPLandroid/bluetooth/le/ScanSettings;->getLegacy()Z
-HSPLandroid/bluetooth/le/ScanSettings;->getMatchMode()I
-HSPLandroid/bluetooth/le/ScanSettings;->getReportDelayMillis()J
-HSPLandroid/bluetooth/le/ScanSettings;->getScanMode()I
-HSPLandroid/bluetooth/le/ScanSettings;-><init>(IIIJIIZILandroid/bluetooth/le/ScanSettings$1;)V
-HSPLandroid/bluetooth/le/ScanSettings;-><init>(IIIJIIZI)V
-HSPLandroid/bluetooth/le/ScanSettings;-><init>(Landroid/os/Parcel;Landroid/bluetooth/le/ScanSettings$1;)V
-HSPLandroid/bluetooth/le/ScanSettings;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/bluetooth/le/ScanSettings;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/AbstractThreadedSyncAdapter$1;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;-><init>(Landroid/content/AbstractThreadedSyncAdapter;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->lambda$onUnsyncableAccount$0(Ljava/lang/Object;Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->onUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$ISyncAdapterImpl;->startSync(Landroid/content/ISyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;Landroid/content/AbstractThreadedSyncAdapter$1;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;-><init>(Landroid/content/AbstractThreadedSyncAdapter;Ljava/lang/String;Landroid/content/SyncContext;Ljava/lang/String;Landroid/accounts/Account;Landroid/os/Bundle;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->isCanceled()Z
-HSPLandroid/content/AbstractThreadedSyncAdapter$SyncThread;->run()V
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$100()Z
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$1200(Landroid/content/AbstractThreadedSyncAdapter;Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$1300(Landroid/content/AbstractThreadedSyncAdapter;)Landroid/content/Context;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$200(Landroid/content/AbstractThreadedSyncAdapter;Landroid/accounts/Account;)Landroid/accounts/Account;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$300(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/lang/Object;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$400(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/HashMap;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$500(Landroid/content/AbstractThreadedSyncAdapter;)Z
-HSPLandroid/content/AbstractThreadedSyncAdapter;->access$600(Landroid/content/AbstractThreadedSyncAdapter;)Ljava/util/concurrent/atomic/AtomicInteger;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->getContext()Landroid/content/Context;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->getSyncAdapterBinder()Landroid/os/IBinder;
-HSPLandroid/content/AbstractThreadedSyncAdapter;->handleOnUnsyncableAccount(Landroid/content/ISyncAdapterUnsyncableAccountCallback;)V
-HSPLandroid/content/AbstractThreadedSyncAdapter;-><init>(Landroid/content/Context;ZZ)V
-HSPLandroid/content/AbstractThreadedSyncAdapter;->onUnsyncableAccount()Z
-HSPLandroid/content/AbstractThreadedSyncAdapter;->toSyncKey(Landroid/accounts/Account;)Landroid/accounts/Account;
-HSPLandroid/content/ComponentName;-><init>(Ljava/lang/String;Landroid/os/Parcel;)V
-HSPLandroid/content/ComponentName;->readFromParcel(Landroid/os/Parcel;)Landroid/content/ComponentName;
-HSPLandroid/content/ContentProvider;->call(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Landroid/os/Bundle;
-HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->close()V
-HSPLandroid/content/ContentProviderClient$CursorWrapperInner;->finalize()V
-HSPLandroid/content/ContentProviderClient;->getLocalContentProvider()Landroid/content/ContentProvider;
-HSPLandroid/content/ContentProvider;->coerceToLocalContentProvider(Landroid/content/IContentProvider;)Landroid/content/ContentProvider;
-HSPLandroid/content/ContentProvider;->onCallingPackageChanged()V
-HSPLandroid/content/ContentResolver;->acquireUnstableContentProviderClient(Ljava/lang/String;)Landroid/content/ContentProviderClient;
-HSPLandroid/content/ContentResolver;->acquireUnstableProvider(Ljava/lang/String;)Landroid/content/IContentProvider;
-HSPLandroid/content/ContentResolver;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
-HSPLandroid/content/ContentResolver;->getContentService()Landroid/content/IContentService;
-HSPLandroid/content/ContentResolver;->getMasterSyncAutomatically()Z
-HSPLandroid/content/ContentResolver;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
-HSPLandroid/content/ContentResolver;->invalidPeriodicExtras(Landroid/os/Bundle;)Z
-HSPLandroid/content/ContentResolver;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/content/ContentResolver;->requestSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/Bundle;)V
-HSPLandroid/content/ContentResolver;->requestSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/content/ContentResolver;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
-HSPLandroid/content/ContentResolver;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
-HSPLandroid/content/ContentResolver;->setSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;Z)V
-HSPLandroid/content/ContentResolver;->validateSyncExtrasBundle(Landroid/os/Bundle;)V
-HSPLandroid/content/ContentValues;->getAsByteArray(Ljava/lang/String;)[B
-HSPLandroid/content/ContentValues;->valueSet()Ljava/util/Set;
-HSPLandroid/content/Context;->registerComponentCallbacks(Landroid/content/ComponentCallbacks;)V
-HSPLandroid/content/ContextWrapper;->databaseList()[Ljava/lang/String;
-HSPLandroid/content/ContextWrapper;->deleteDatabase(Ljava/lang/String;)Z
-HSPLandroid/content/ContextWrapper;->deleteFile(Ljava/lang/String;)Z
-HSPLandroid/content/ContextWrapper;->getThemeResId()I
-HSPLandroid/content/ContextWrapper;->moveSharedPreferencesFrom(Landroid/content/Context;Ljava/lang/String;)Z
-HSPLandroid/content/ContextWrapper;->openOrCreateDatabase(Ljava/lang/String;ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;)Landroid/database/sqlite/SQLiteDatabase;
-HSPLandroid/content/ContextWrapper;->updateDisplay(I)V
-HSPLandroid/content/IClipboard$Stub$Proxy;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;I)V
-HSPLandroid/content/IContentService$Stub$Proxy;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
-HSPLandroid/content/IContentService$Stub$Proxy;->getMasterSyncAutomatically()Z
-HSPLandroid/content/IContentService$Stub$Proxy;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
-HSPLandroid/content/IContentService$Stub$Proxy;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLandroid/content/IContentService$Stub$Proxy;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
-HSPLandroid/content/IContentService$Stub$Proxy;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
-HSPLandroid/content/IContentService$Stub$Proxy;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V
-HSPLandroid/content/IIntentReceiver$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/IntentFilter;->matchAction(Ljava/lang/String;)Z
-HSPLandroid/content/Intent;->putExtras(Landroid/content/Intent;)Landroid/content/Intent;
-HSPLandroid/content/ISyncAdapter$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/ISyncAdapter$Stub;-><init>()V
-HSPLandroid/content/ISyncAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub$Proxy;->onUnsyncableAccountDone(Z)V
-HSPLandroid/content/ISyncAdapterUnsyncableAccountCallback$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncAdapterUnsyncableAccountCallback;
-HSPLandroid/content/ISyncContext$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/content/ISyncContext$Stub$Proxy;->onFinished(Landroid/content/SyncResult;)V
-HSPLandroid/content/ISyncContext$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/ISyncContext;
-HSPLandroid/content/om/OverlayManager;-><init>(Landroid/content/Context;Landroid/content/om/IOverlayManager;)V
-HSPLandroid/content/pm/BaseParceledListSlice;-><init>(Ljava/util/List;)V
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getAllSessions(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getLauncherActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->hasShortcutHostPermission(Ljava/lang/String;)Z
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo;
-HSPLandroid/content/pm/ILauncherApps$Stub$Proxy;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/pm/IOnAppsChangedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/content/pm/IPackageInstaller$Stub$Proxy;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V
-HSPLandroid/content/pm/IPackageInstaller$Stub;->asInterface(Landroid/os/IBinder;)Landroid/content/pm/IPackageInstaller;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getPackagesHoldingPermissions([Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->isSafeMode()Z
-HSPLandroid/content/pm/IPackageManager$Stub$Proxy;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V
-HSPLandroid/content/pm/IPackageMoveObserver$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/content/pm/IPackageMoveObserver$Stub;-><init>()V
-HSPLandroid/content/pm/LauncherApps$1;->onPackageChanged(Landroid/os/UserHandle;Ljava/lang/String;)V
-HSPLandroid/content/pm/LauncherApps$1;->onShortcutChanged(Landroid/os/UserHandle;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/content/pm/LauncherApps;->access$100(Landroid/content/pm/LauncherApps;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->addCallbackLocked(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V
-HSPLandroid/content/pm/LauncherApps;->convertToActivityList(Landroid/content/pm/ParceledListSlice;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->findCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)I
-HSPLandroid/content/pm/LauncherApps;->getActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->getAllPackageInstallerSessions()Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->getShortcutConfigActivityList(Ljava/lang/String;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->getShortcuts(Landroid/content/pm/LauncherApps$ShortcutQuery;Landroid/os/UserHandle;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->hasShortcutHostPermission()Z
-HSPLandroid/content/pm/LauncherApps;->isActivityEnabled(Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/LauncherApps;->isPackageEnabled(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/LauncherApps;->logErrorForInvalidProfileAccess(Landroid/os/UserHandle;)V
-HSPLandroid/content/pm/LauncherApps;->maybeUpdateDisabledMessage(Ljava/util/List;)Ljava/util/List;
-HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;Landroid/os/Handler;)V
-HSPLandroid/content/pm/LauncherApps;->registerCallback(Landroid/content/pm/LauncherApps$Callback;)V
-HSPLandroid/content/pm/LauncherApps;->removeCallbackLocked(Landroid/content/pm/LauncherApps$Callback;)V
-HSPLandroid/content/pm/LauncherApps;->resolveActivity(Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/LauncherActivityInfo;
-HSPLandroid/content/pm/LauncherApps;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLandroid/content/pm/PackageInfo;-><init>()V
-HSPLandroid/content/pm/PackageInstaller$SessionCallback;-><init>()V
-HSPLandroid/content/pm/PackageInstaller;->registerSessionCallback(Landroid/content/pm/PackageInstaller$SessionCallback;)V
-HSPLandroid/content/pm/PackageManager;->getPackageArchiveInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
-HSPLandroid/content/pm/PackageParser$CallbackImpl;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLandroid/content/pm/PackageParser$CallbackImpl;->hasFeature(Ljava/lang/String;)Z
-HSPLandroid/content/pm/PackageParser$CallbackImpl;-><init>(Landroid/content/pm/PackageManager;)V
-HSPLandroid/content/pm/PackageParser;->generatePackageInfo(Landroid/content/pm/PackageParser$Package;[IIJJLjava/util/Set;Landroid/content/pm/PackageUserState;)Landroid/content/pm/PackageInfo;
-HSPLandroid/content/pm/ParceledListSlice;-><init>(Ljava/util/List;)V
-HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Landroid/content/pm/ServiceInfo;
-HSPLandroid/content/pm/ServiceInfo$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/content/pm/ShortcutInfo;->getActivity()Landroid/content/ComponentName;
-HSPLandroid/content/pm/ShortcutInfo;->getDisabledReasonForRestoreIssue(Landroid/content/Context;I)Ljava/lang/String;
-HSPLandroid/content/pm/ShortcutInfo;->getDisabledReason()I
-HSPLandroid/content/pm/ShortcutInfo;->getPackage()Ljava/lang/String;
-HSPLandroid/content/pm/ShortcutInfo;->getUserHandle()Landroid/os/UserHandle;
-HSPLandroid/content/pm/ShortcutInfo;->hasFlags(I)Z
-HSPLandroid/content/pm/ShortcutInfo;->isDeclaredInManifest()Z
-HSPLandroid/content/pm/ShortcutInfo;->isDynamic()Z
-HSPLandroid/content/pm/ShortcutInfo;->isEnabled()Z
-HSPLandroid/content/res/ApkAssets;->close()V
-HSPLandroid/content/res/AssetFileDescriptor;-><init>(Landroid/os/ParcelFileDescriptor;JJ)V
-HSPLandroid/content/res/AssetManager;->isUpToDate()Z
-HSPLandroid/content/res/AssetManager;->openFd(Ljava/lang/String;)Landroid/content/res/AssetFileDescriptor;
-HSPLandroid/content/res/ComplexColor;-><init>()V
-HSPLandroid/content/res/Configuration;->isOtherSeqNewer(Landroid/content/res/Configuration;)Z
-HSPLandroid/content/res/ConstantState;-><init>()V
-HSPLandroid/content/res/GradientColor;->access$000(Landroid/content/res/GradientColor;)I
-HSPLandroid/content/res/GradientColor;->canApplyTheme()Z
-HSPLandroid/content/res/GradientColor;->createFromXmlInner(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)Landroid/content/res/GradientColor;
-HSPLandroid/content/res/GradientColor;->getConstantState()Landroid/content/res/ConstantState;
-HSPLandroid/content/res/GradientColor;->getDefaultColor()I
-HSPLandroid/content/res/GradientColor;->getShader()Landroid/graphics/Shader;
-HSPLandroid/content/res/GradientColor;->inflateChildElements(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
-HSPLandroid/content/res/GradientColor;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
-HSPLandroid/content/res/GradientColor;-><init>()V
-HSPLandroid/content/res/GradientColor;->onColorsChange()V
-HSPLandroid/content/res/GradientColor;->parseTileMode(I)Landroid/graphics/Shader$TileMode;
-HSPLandroid/content/res/GradientColor;->updateRootElementState(Landroid/content/res/TypedArray;)V
-HSPLandroid/content/res/GradientColor;->validateXmlContent()V
-HSPLandroid/content/res/Resources;->getDrawableForDensity(II)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/ResourcesImpl;->loadColorOrXmlDrawable(Landroid/content/res/Resources;Landroid/util/TypedValue;IILjava/lang/String;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/content/res/Resources;->obtainAttributes(Landroid/content/res/Resources;Landroid/content/res/Resources$Theme;Landroid/util/AttributeSet;[I)Landroid/content/res/TypedArray;
-HSPLandroid/content/res/StringBlock;->close()V
-HSPLandroid/content/res/TypedArray;->getThemeAttributeId(II)I
-HSPLandroid/content/SyncContext;-><init>(Landroid/content/ISyncContext;)V
-HSPLandroid/content/SyncContext;->onFinished(Landroid/content/SyncResult;)V
-HSPLandroid/content/SyncRequest$Builder;->access$1000(Landroid/content/SyncRequest$Builder;)Z
-HSPLandroid/content/SyncRequest$Builder;->access$100(Landroid/content/SyncRequest$Builder;)J
-HSPLandroid/content/SyncRequest$Builder;->access$200(Landroid/content/SyncRequest$Builder;)J
-HSPLandroid/content/SyncRequest$Builder;->access$300(Landroid/content/SyncRequest$Builder;)Landroid/accounts/Account;
-HSPLandroid/content/SyncRequest$Builder;->access$400(Landroid/content/SyncRequest$Builder;)Ljava/lang/String;
-HSPLandroid/content/SyncRequest$Builder;->access$500(Landroid/content/SyncRequest$Builder;)I
-HSPLandroid/content/SyncRequest$Builder;->access$600(Landroid/content/SyncRequest$Builder;)I
-HSPLandroid/content/SyncRequest$Builder;->access$700(Landroid/content/SyncRequest$Builder;)Z
-HSPLandroid/content/SyncRequest$Builder;->access$800(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle;
-HSPLandroid/content/SyncRequest$Builder;->access$900(Landroid/content/SyncRequest$Builder;)Landroid/os/Bundle;
-HSPLandroid/content/SyncRequest$Builder;->build()Landroid/content/SyncRequest;
-HSPLandroid/content/SyncRequest$Builder;-><init>()V
-HSPLandroid/content/SyncRequest$Builder;->setExtras(Landroid/os/Bundle;)Landroid/content/SyncRequest$Builder;
-HSPLandroid/content/SyncRequest$Builder;->setSyncAdapter(Landroid/accounts/Account;Ljava/lang/String;)Landroid/content/SyncRequest$Builder;
-HSPLandroid/content/SyncRequest$Builder;->setupInterval(JJ)V
-HSPLandroid/content/SyncRequest$Builder;->syncOnce()Landroid/content/SyncRequest$Builder;
-HSPLandroid/content/SyncRequest;-><init>(Landroid/content/SyncRequest$Builder;)V
-HSPLandroid/content/SyncRequest;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/SyncResult;-><init>()V
-HSPLandroid/content/SyncResult;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/content/SyncStats;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/database/AbstractCursor$SelfContentObserver;-><init>(Landroid/database/AbstractCursor;)V
-HSPLandroid/database/AbstractCursor;->getExtras()Landroid/os/Bundle;
-HSPLandroid/database/AbstractCursor;->setNotificationUris(Landroid/content/ContentResolver;Ljava/util/List;IZ)V
-HSPLandroid/database/AbstractWindowedCursor;->setWindow(Landroid/database/CursorWindow;)V
-HSPLandroid/database/CrossProcessCursorWrapper;->getWindow()Landroid/database/CursorWindow;
-HSPLandroid/database/CursorWindow;-><init>(Ljava/lang/String;)V
-HSPLandroid/database/CursorWindow;-><init>(Z)V
-HSPLandroid/database/CursorWindow;->putBlob([BII)Z
-HSPLandroid/database/CursorWindow;->putDouble(DII)Z
-HSPLandroid/database/CursorWrapper;->getExtras()Landroid/os/Bundle;
-HSPLandroid/database/CursorWrapper;->getWantsAllOnMoveCalls()Z
-HSPLandroid/database/CursorWrapper;->getWrappedCursor()Landroid/database/Cursor;
-HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;)J
-HSPLandroid/database/DatabaseUtils;->queryNumEntries(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)J
-HSPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/database/DatabaseUtils;->stringForQuery(Landroid/database/sqlite/SQLiteStatement;[Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/database/MatrixCursor;->getBlob(I)[B
-HSPLandroid/database/MatrixCursor;->getDouble(I)D
-HSPLandroid/database/sqlite/SQLiteCursor;->setWindow(Landroid/database/CursorWindow;)V
-HSPLandroid/database/sqlite/SQLiteDatabase$1;->accept(Ljava/io/File;)Z
-HSPLandroid/database/sqlite/SQLiteDatabase$1;-><init>(Ljava/lang/String;)V
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->addOpenFlags(I)Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;->build()Landroid/database/sqlite/SQLiteDatabase$OpenParams;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;-><init>(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$000(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$100(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/sqlite/SQLiteDatabase$CursorFactory;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$200(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Landroid/database/DatabaseErrorHandler;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$300(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$400(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)I
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$600(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;->access$700(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)Ljava/lang/String;
-HSPLandroid/database/sqlite/SQLiteDatabase$OpenParams;-><init>(ILandroid/database/sqlite/SQLiteDatabase$CursorFactory;Landroid/database/DatabaseErrorHandler;IIJLjava/lang/String;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$1;)V
-HSPLandroid/database/sqlite/SQLiteDatabase;->beginTransactionNonExclusive()V
-HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;)Z
-HSPLandroid/database/sqlite/SQLiteDatabase;->deleteDatabase(Ljava/io/File;Z)Z
-HSPLandroid/database/sqlite/SQLiteDatabase;->getMaximumSize()J
-HSPLandroid/database/sqlite/SQLiteDatabase;->getPageSize()J
-HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadDefaultConnectionFlags(Z)I
-HSPLandroid/database/sqlite/SQLiteDatabase;->getThreadSession()Landroid/database/sqlite/SQLiteSession;
-HSPLandroid/database/sqlite/SQLiteDatabase;->query(ZLjava/lang/String;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/database/sqlite/SQLiteDatabase;->rawQuery(Ljava/lang/String;[Ljava/lang/String;Landroid/os/CancellationSignal;)Landroid/database/Cursor;
-HSPLandroid/database/sqlite/SQLiteDatabase;->releaseMemory()I
-HSPLandroid/database/sqlite/SQLiteGlobal;->releaseMemory()I
-HSPLandroid/database/sqlite/SQLiteOpenHelper;->setOpenParamsBuilder(Landroid/database/sqlite/SQLiteDatabase$OpenParams$Builder;)V
-HSPLandroid/database/sqlite/SQLiteOpenHelper;->setOpenParams(Landroid/database/sqlite/SQLiteDatabase$OpenParams;)V
-HSPLandroid/database/sqlite/SQLiteProgram;->bindAllArgsAsStrings([Ljava/lang/String;)V
-HSPLandroid/database/sqlite/SQLiteProgram;->getBindArgs()[Ljava/lang/Object;
-HSPLandroid/database/sqlite/SQLiteProgram;->getConnectionFlags()I
-HSPLandroid/database/sqlite/SQLiteProgram;->getSession()Landroid/database/sqlite/SQLiteSession;
-HSPLandroid/database/sqlite/SQLiteProgram;->getSql()Ljava/lang/String;
-HSPLandroid/database/sqlite/SQLiteQueryBuilder;->query(Landroid/database/sqlite/SQLiteDatabase;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
-HSPLandroid/database/sqlite/SQLiteSession;->acquireConnection(Ljava/lang/String;ILandroid/os/CancellationSignal;)V
-HSPLandroid/database/sqlite/SQLiteSession;->executeForString(Ljava/lang/String;[Ljava/lang/Object;ILandroid/os/CancellationSignal;)Ljava/lang/String;
-HSPLandroid/database/sqlite/SQLiteStatement;->simpleQueryForString()Ljava/lang/String;
-HSPLandroid/graphics/-$$Lambda$ColorSpace$Rgb$8EkhO2jIf14tuA3BvrmYJMa7YXM;->applyAsDouble(D)D
-HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;FFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Rect;Landroid/graphics/RectF;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/BaseRecordingCanvas;->drawRoundRect(FFFFFFLandroid/graphics/Paint;)V
-HSPLandroid/graphics/Bitmap;->checkRecycled(Ljava/lang/String;)V
-HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;IIII)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/Bitmap;->createBitmap(Landroid/graphics/Bitmap;)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/Bitmap;->extractAlpha(Landroid/graphics/Paint;[I)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/BitmapFactory$Options;->nativeColorSpace(Landroid/graphics/BitmapFactory$Options;)J
-HSPLandroid/graphics/BitmapFactory$Options;->nativeInBitmap(Landroid/graphics/BitmapFactory$Options;)J
-HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/BitmapFactory;->decodeFileDescriptor(Ljava/io/FileDescriptor;Landroid/graphics/Rect;Landroid/graphics/BitmapFactory$Options;)Landroid/graphics/Bitmap;
-HSPLandroid/graphics/Bitmap;->getNativeInstance()J
-HSPLandroid/graphics/Bitmap;->noteHardwareBitmapSlowCall()V
-HSPLandroid/graphics/BlendMode;->blendModeToPorterDuffMode(Landroid/graphics/BlendMode;)Landroid/graphics/PorterDuff$Mode;
-HSPLandroid/graphics/BlendModeColorFilter;->createNativeInstance()J
-HSPLandroid/graphics/BlendModeColorFilter;->getColor()I
-HSPLandroid/graphics/BlendModeColorFilter;->getMode()Landroid/graphics/BlendMode;
-HSPLandroid/graphics/BlendModeColorFilter;-><init>(ILandroid/graphics/BlendMode;)V
-HSPLandroid/graphics/BlendMode;->fromValue(I)Landroid/graphics/BlendMode;
-HSPLandroid/graphics/BlendMode;->getXfermode()Landroid/graphics/Xfermode;
-HSPLandroid/graphics/Canvas;->checkValidSaveFlags(I)V
-HSPLandroid/graphics/Canvas;->clipOutPath(Landroid/graphics/Path;)Z
-HSPLandroid/graphics/Canvas;->drawBitmap(Landroid/graphics/Bitmap;Landroid/graphics/Matrix;Landroid/graphics/Paint;)V
-HSPLandroid/graphics/Canvas;->getClipBounds()Landroid/graphics/Rect;
-HSPLandroid/graphics/Canvas;->saveLayer(FFFFLandroid/graphics/Paint;I)I
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;)I
-HSPLandroid/graphics/Canvas;->saveLayer(Landroid/graphics/RectF;Landroid/graphics/Paint;I)I
-HSPLandroid/graphics/ColorFilter;->discardNativeInstance()V
-HSPLandroid/graphics/ColorFilter;-><init>()V
-HSPLandroid/graphics/Color;->luminance(I)F
-HSPLandroid/graphics/ColorMatrixColorFilter;-><init>([F)V
-HSPLandroid/graphics/ColorMatrixColorFilter;->setColorMatrixArray([F)V
-HSPLandroid/graphics/ColorMatrix;->set([F)V
-HSPLandroid/graphics/ColorSpace$Rgb;->clamp(D)D
-HSPLandroid/graphics/ColorSpace$Rgb;->getEotf()Ljava/util/function/DoubleUnaryOperator;
-HSPLandroid/graphics/ColorSpace$Rgb;->lambda$8EkhO2jIf14tuA3BvrmYJMa7YXM(Landroid/graphics/ColorSpace$Rgb;D)D
-HSPLandroid/graphics/CornerPathEffect;-><init>(F)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;-><init>(I)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->addLayer(ILandroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->createChildDrawable(Landroid/graphics/drawable/Drawable;)Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getBackground()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getExtraInsetFraction()F
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getForeground()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->getIconMask()Landroid/graphics/Path;
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;-><init>(Landroid/graphics/drawable/Drawable;Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/AdaptiveIconDrawable;->mutate()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;->newDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->access$200(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;)Landroid/animation/Animator$AnimatorListener;
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->access$300(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->addPendingAction(I)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->createRTAnimatorForRootGroup([Landroid/animation/PropertyValuesHolder;Landroid/animation/ObjectAnimator;Landroid/graphics/drawable/VectorDrawable$VectorDrawableState;J)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->invalidateOwningView()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->isRunning()Z
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->reset()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->transferPendingActions(Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimator;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorRT;->useLastSeenTarget()Z
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$1700(JFF)J
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->access$700(Landroid/graphics/drawable/AnimatedVectorDrawable;)Ljava/util/ArrayList;
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->clearAnimationCallbacks()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->ensureAnimatorSet()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->fallbackOntoUI()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->forceAnimationOnUI()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;-><init>(Landroid/graphics/drawable/AnimatedVectorDrawable$AnimatedVectorDrawableState;Landroid/content/res/Resources;Landroid/graphics/drawable/AnimatedVectorDrawable$1;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->registerAnimationCallback(Landroid/graphics/drawable/Animatable2$AnimationCallback;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->removeAnimatorSetListener()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->reset()V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setColorFilter(Landroid/graphics/ColorFilter;)V
-HSPLandroid/graphics/drawable/AnimatedVectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V
-HSPLandroid/graphics/drawable/BitmapDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V
-HSPLandroid/graphics/drawable/ColorDrawable;-><init>()V
-HSPLandroid/graphics/drawable/ColorDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/Drawable$ConstantState;->newDrawable(Landroid/content/res/Resources;)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Drawable;->clearMutated()V
-HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->getChildCount()I
-HSPLandroid/graphics/drawable/DrawableContainer$DrawableContainerState;->growArray(II)V
-HSPLandroid/graphics/drawable/DrawableContainer;->getAlpha()I
-HSPLandroid/graphics/drawable/Drawable;->inflate(Landroid/content/res/Resources;Lorg/xmlpull/v1/XmlPullParser;Landroid/util/AttributeSet;Landroid/content/res/Resources$Theme;)V
-HSPLandroid/graphics/drawable/Drawable;->mutate()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Drawable;->parseBlendMode(ILandroid/graphics/BlendMode;)Landroid/graphics/BlendMode;
-HSPLandroid/graphics/drawable/Drawable;->setTintMode(Landroid/graphics/PorterDuff$Mode;)V
-HSPLandroid/graphics/drawable/Drawable;->updateBlendModeFilter(Landroid/graphics/BlendModeColorFilter;Landroid/content/res/ColorStateList;Landroid/graphics/BlendMode;)Landroid/graphics/BlendModeColorFilter;
-HSPLandroid/graphics/drawable/DrawableWrapper;->getOpacity()I
-HSPLandroid/graphics/drawable/DrawableWrapper;-><init>(Landroid/graphics/drawable/Drawable;)V
-HSPLandroid/graphics/drawable/DrawableWrapper;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
-HSPLandroid/graphics/drawable/DrawableWrapper;->onLevelChange(I)Z
-HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->getAngleFromOrientation(Landroid/graphics/drawable/GradientDrawable$Orientation;)I
-HSPLandroid/graphics/drawable/GradientDrawable$GradientState;->updateGradientStateOrientation()V
-HSPLandroid/graphics/drawable/Icon;->loadDrawableAsUser(Landroid/content/Context;I)Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/Icon;->sameAs(Landroid/graphics/drawable/Icon;)Z
-HSPLandroid/graphics/drawable/Icon;->setTintMode(Landroid/graphics/PorterDuff$Mode;)Landroid/graphics/drawable/Icon;
-HSPLandroid/graphics/drawable/LayerDrawable$LayerState;->newDrawable()Landroid/graphics/drawable/Drawable;
-HSPLandroid/graphics/drawable/NinePatchDrawable;-><init>()V
-HSPLandroid/graphics/drawable/NinePatchDrawable;->setAlpha(I)V
-HSPLandroid/graphics/drawable/RippleDrawable;->setForceSoftware(Z)V
-HSPLandroid/graphics/drawable/RotateDrawable;->mutateConstantState()Landroid/graphics/drawable/DrawableWrapper$DrawableWrapperState;
-HSPLandroid/graphics/drawable/ShapeDrawable;->setTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/drawable/shapes/Shape;->clone()Landroid/graphics/drawable/shapes/Shape;
-HSPLandroid/graphics/drawable/VectorDrawable$VectorDrawableState;->getProperty(Ljava/lang/String;)Landroid/util/Property;
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$2;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$3;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$4;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$4;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$5;->setValue(Landroid/graphics/drawable/VectorDrawable$VGroup;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup$5;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setScaleX(F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setScaleY(F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateX(F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VGroup;->setTranslateY(F)V
-HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;->set(Landroid/graphics/drawable/VectorDrawable$VPath;Landroid/util/PathParser$PathData;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VPath$1;->set(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/graphics/drawable/VectorDrawable$VPath;->setPathData(Landroid/util/PathParser$PathData;)V
-HSPLandroid/graphics/drawable/VectorDrawable;->access$2900(JF)V
-HSPLandroid/graphics/drawable/VectorDrawable;->access$3100(JF)V
-HSPLandroid/graphics/drawable/VectorDrawable;->access$3300(JF)V
-HSPLandroid/graphics/drawable/VectorDrawable;->access$3500(JF)V
-HSPLandroid/graphics/drawable/VectorDrawable;->access$3600(JJ)V
-HSPLandroid/graphics/drawable/VectorDrawable;->setTintBlendMode(Landroid/graphics/BlendMode;)V
-HSPLandroid/graphics/drawable/VectorDrawable;->updateColorFilters(Landroid/graphics/BlendMode;Landroid/content/res/ColorStateList;)V
-HSPLandroid/graphics/HardwareRenderer;->buildLayer(Landroid/graphics/RenderNode;)V
-HSPLandroid/graphics/HardwareRenderer;->overrideProperty(Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/graphics/HardwareRenderer;->setContextPriority(I)V
-HSPLandroid/graphics/HardwareRenderer;->setFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V
-HSPLandroid/graphics/MaskFilter;->finalize()V
-HSPLandroid/graphics/Matrix;->ni()J
-HSPLandroid/graphics/Matrix;->postRotate(FFF)Z
-HSPLandroid/graphics/Paint;->clearShadowLayer()V
-HSPLandroid/graphics/Paint;->getFontMetrics()Landroid/graphics/Paint$FontMetrics;
-HSPLandroid/graphics/Paint;->setARGB(IIII)V
-HSPLandroid/graphics/Paint;->setFontFeatureSettings(Ljava/lang/String;)V
-HSPLandroid/graphics/Paint;->setStrokeMiter(F)V
-HSPLandroid/graphics/Path;->addCircle(FFFLandroid/graphics/Path$Direction;)V
-HSPLandroid/graphics/Path;->addPath(Landroid/graphics/Path;)V
-HSPLandroid/graphics/Path;->addRoundRect(FFFFFFLandroid/graphics/Path$Direction;)V
-HSPLandroid/graphics/Path;->arcTo(Landroid/graphics/RectF;FF)V
-HSPLandroid/graphics/PathEffect;-><init>()V
-HSPLandroid/graphics/PathMeasure;->finalize()V
-HSPLandroid/graphics/PathMeasure;->getLength()F
-HSPLandroid/graphics/PathMeasure;->getPosTan(F[F[F)Z
-HSPLandroid/graphics/PathMeasure;-><init>(Landroid/graphics/Path;Z)V
-HSPLandroid/graphics/PathMeasure;-><init>()V
-HSPLandroid/graphics/PathMeasure;->setPath(Landroid/graphics/Path;Z)V
-HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z
-HSPLandroid/graphics/Path;->op(Landroid/graphics/Path;Landroid/graphics/Path;Landroid/graphics/Path$Op;)Z
-HSPLandroid/graphics/Path;->quadTo(FFFF)V
-HSPLandroid/graphics/Path;->readOnlyNI()J
-HSPLandroid/graphics/Path;->rLineTo(FF)V
-HSPLandroid/graphics/PointF;->set(Landroid/graphics/PointF;)V
-HSPLandroid/graphics/Point;->readFromParcel(Landroid/os/Parcel;)V
-HSPLandroid/graphics/RectF;->offsetTo(FF)V
-HSPLandroid/graphics/Rect;->inset(II)V
-HSPLandroid/graphics/Rect;->offsetTo(II)V
-HSPLandroid/graphics/Rect;->setIntersect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/Region;->getBounds()Landroid/graphics/Rect;
-HSPLandroid/graphics/Region;-><init>(IIII)V
-HSPLandroid/graphics/RegionIterator;-><init>(Landroid/graphics/Region;)V
-HSPLandroid/graphics/RegionIterator;->next(Landroid/graphics/Rect;)Z
-HSPLandroid/graphics/Region;->ni()J
-HSPLandroid/graphics/Region;->setPath(Landroid/graphics/Path;Landroid/graphics/Region;)Z
-HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;-><init>([Landroid/graphics/RenderNode$PositionUpdateListener;)V
-HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionChanged(JIIII)V
-HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->positionLost(J)V
-HSPLandroid/graphics/RenderNode$CompositePositionUpdateListener;->without(Landroid/graphics/RenderNode$PositionUpdateListener;)Landroid/graphics/RenderNode$CompositePositionUpdateListener;
-HSPLandroid/graphics/RenderNode;->removePositionUpdateListener(Landroid/graphics/RenderNode$PositionUpdateListener;)V
-HSPLandroid/graphics/Typeface;->create(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface;
-HSPLandroid/graphics/Typeface;->createWeightStyle(Landroid/graphics/Typeface;IZ)Landroid/graphics/Typeface;
-HSPLandroid/hardware/biometrics/BiometricManager;->registerEnabledOnKeyguardCallback(Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;)V
-HSPLandroid/hardware/biometrics/BiometricSourceType;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;-><init>()V
-HSPLandroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/biometrics/IBiometricServiceLockoutResetCallback$Stub;-><init>()V
-HSPLandroid/hardware/Camera$CameraInfo;-><init>()V
-HSPLandroid/hardware/camera2/CameraManager;->registerTorchCallback(Landroid/hardware/camera2/CameraManager$TorchCallback;Landroid/os/Handler;)V
-HSPLandroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean;->createMarshaler(Landroid/hardware/camera2/utils/TypeReference;I)Landroid/hardware/camera2/marshal/Marshaler;
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSettingDefaultOn(Ljava/lang/String;I)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->boolSetting(Ljava/lang/String;II)Z
-HSPLandroid/hardware/display/AmbientDisplayConfiguration;->tapGestureEnabled(I)Z
-HSPLandroid/hardware/display/DisplayManager;->getStableDisplaySize()Landroid/graphics/Point;
-HSPLandroid/hardware/display/DisplayManagerGlobal;->getStableDisplaySize()Landroid/graphics/Point;
-HSPLandroid/hardware/display/IDisplayManager$Stub$Proxy;->getStableDisplaySize()Landroid/graphics/Point;
-HSPLandroid/hardware/fingerprint/FingerprintManager$1;-><init>(Landroid/hardware/fingerprint/FingerprintManager;Landroid/os/PowerManager;Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V
-HSPLandroid/hardware/fingerprint/FingerprintManager;->addLockoutResetCallback(Landroid/hardware/fingerprint/FingerprintManager$LockoutResetCallback;)V
-HSPLandroid/hardware/fingerprint/IFingerprintService$Stub$Proxy;->addLockoutResetCallback(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
-HSPLandroid/hardware/input/IInputManager$Stub$Proxy;->hasKeys(II[I[Z)Z
-HSPLandroid/hardware/input/InputManager;->deviceHasKeys(I[I)[Z
-HSPLandroid/hardware/ISensorPrivacyListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/ISensorPrivacyListener$Stub;-><init>()V
-HSPLandroid/hardware/ISensorPrivacyManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/ISensorPrivacyManager;
-HSPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/ContextHubInfo;
-HSPLandroid/hardware/location/ContextHubInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/location/ContextHubInfo;->getMaxPacketLengthBytes()I
-HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/os/Parcel;Landroid/hardware/location/ContextHubInfo$1;)V
-HSPLandroid/hardware/location/ContextHubInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/hardware/location/ContextHubManager;->access$000(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$Callback;
-HSPLandroid/hardware/location/ContextHubManager;->access$100(Landroid/hardware/location/ContextHubManager;)Landroid/os/Handler;
-HSPLandroid/hardware/location/ContextHubManager;->access$200(Landroid/hardware/location/ContextHubManager;)Landroid/hardware/location/ContextHubManager$ICallback;
-HSPLandroid/hardware/location/ContextHubManager;->access$300(Landroid/hardware/location/ContextHubManager;IILandroid/hardware/location/ContextHubMessage;)V
-HSPLandroid/hardware/location/ContextHubManager;->createClientCallback(Landroid/hardware/location/ContextHubClient;Landroid/hardware/location/ContextHubClientCallback;Ljava/util/concurrent/Executor;)Landroid/hardware/location/IContextHubClientCallback;
-HSPLandroid/hardware/location/ContextHubManager;->createClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubClientCallback;)Landroid/hardware/location/ContextHubClient;
-HSPLandroid/hardware/location/ContextHubManager;->createClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/ContextHubClientCallback;Ljava/util/concurrent/Executor;)Landroid/hardware/location/ContextHubClient;
-HSPLandroid/hardware/location/ContextHubManager;->createQueryCallback(Landroid/hardware/location/ContextHubTransaction;)Landroid/hardware/location/IContextHubTransactionCallback;
-HSPLandroid/hardware/location/ContextHubManager;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
-HSPLandroid/hardware/location/ContextHubManager;->getContextHubHandles()[I
-HSPLandroid/hardware/location/ContextHubManager;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo;
-HSPLandroid/hardware/location/ContextHubManager;->getContextHubs()Ljava/util/List;
-HSPLandroid/hardware/location/ContextHubManager;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
-HSPLandroid/hardware/location/ContextHubManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLandroid/hardware/location/ContextHubManager;->invokeOnMessageReceiptCallback(IILandroid/hardware/location/ContextHubMessage;)V
-HSPLandroid/hardware/location/ContextHubManager;->queryNanoApps(Landroid/hardware/location/ContextHubInfo;)Landroid/hardware/location/ContextHubTransaction;
-HSPLandroid/hardware/location/ContextHubManager;->registerCallback(Landroid/hardware/location/ContextHubManager$Callback;)I
-HSPLandroid/hardware/location/ContextHubManager;->registerCallback(Landroid/hardware/location/ContextHubManager$Callback;Landroid/os/Handler;)I
-HSPLandroid/hardware/location/ContextHubManager;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
-HSPLandroid/hardware/location/IActivityRecognitionHardware$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IActivityRecognitionHardware;
-HSPLandroid/hardware/location/IContextHubCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IContextHubCallback$Stub;-><init>()V
-HSPLandroid/hardware/location/IContextHubCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/location/IContextHubClientCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/location/IContextHubService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/location/IContextHubService;
-HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/hardware/location/IContextHubTransactionCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Landroid/hardware/location/MemoryRegion;
-HSPLandroid/hardware/location/MemoryRegion$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppInstanceInfo;
-HSPLandroid/hardware/location/NanoAppInstanceInfo$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/location/NanoAppInstanceInfo;-><init>(Landroid/os/Parcel;Landroid/hardware/location/NanoAppInstanceInfo$1;)V
-HSPLandroid/hardware/location/NanoAppInstanceInfo;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/hardware/location/NanoAppMessage;->getMessageType()I
-HSPLandroid/hardware/location/NanoAppMessage;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/hardware/location/NanoAppState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/hardware/location/NanoAppState;
-HSPLandroid/hardware/location/NanoAppState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/hardware/location/NanoAppState;->getNanoAppId()J
-HSPLandroid/hardware/location/NanoAppState;-><init>(Landroid/os/Parcel;Landroid/hardware/location/NanoAppState$1;)V
-HSPLandroid/hardware/location/NanoAppState;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/hardware/radio/deprecated/V1_0/IOemHook;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/deprecated/V1_0/IOemHook;
-HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookIndication$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
-HSPLandroid/hardware/radio/deprecated/V1_0/IOemHookResponse$Stub;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/radio/V1_0/CardStatus;-><init>()V
-HSPLandroid/hardware/radio/V1_0/CardStatus;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/CdmaBroadcastSmsConfigInfo;->toString()Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_0/CdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/CellIdentityLte;-><init>()V
-HSPLandroid/hardware/radio/V1_0/CellIdentityLte;->toString()Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/CellInfoType;->toString(I)Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/DataProfileInfo;->writeToParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/DataRegStateResult;-><init>()V
-HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/DataRegStateResult;->toString()Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_0/EvdoSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_0/GsmSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/IccIo;->writeToParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/LteSignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_0/RegState;->toString(I)Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/SetupDataCallResult;->toString()Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;-><init>()V
-HSPLandroid/hardware/radio/V1_0/TdScdmaSignalStrength;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;-><init>()V
-HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
-HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->readFromParcel(Landroid/os/HwParcel;)V
-HSPLandroid/hardware/radio/V1_0/VoiceRegStateResult;->toString()Ljava/lang/String;
-HSPLandroid/hardware/radio/V1_1/IRadio;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/radio/V1_1/IRadio;
-HSPLandroid/hardware/radio/V1_1/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_1/IRadio;
-HSPLandroid/hardware/radio/V1_2/IRadio;->getService(Ljava/lang/String;Z)Landroid/hardware/radio/V1_2/IRadio;
-HSPLandroid/hardware/Sensor;->getFifoMaxEventCount()I
-HSPLandroid/hardware/SensorManager;->getDelay(I)I
-HSPLandroid/hardware/SensorManager;-><init>()V
-HSPLandroid/hardware/SensorManager;->registerListener(Landroid/hardware/SensorEventListener;Landroid/hardware/Sensor;IILandroid/os/Handler;)Z
-HSPLandroid/hardware/SensorPrivacyManager;->addSensorPrivacyListener(Landroid/hardware/SensorPrivacyManager$OnSensorPrivacyChangedListener;)V
-HSPLandroid/hardware/SensorPrivacyManager;->getInstance(Landroid/content/Context;)Landroid/hardware/SensorPrivacyManager;
-HSPLandroid/hardware/SensorPrivacyManager;-><init>(Landroid/content/Context;Landroid/hardware/ISensorPrivacyManager;)V
-HSPLandroid/hardware/SensorPrivacyManager;->isSensorPrivacyEnabled()Z
-HSPLandroid/hardware/TriggerEventListener;-><init>()V
-HSPLandroid/icu/impl/CacheValue$NullValue;->isNull()Z
-HSPLandroid/icu/impl/coll/CollationData;->getCE32FromContexts(I)I
-HSPLandroid/icu/impl/coll/CollationData;->getCE32(I)I
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->append(J)V
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->getCEs()[J
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->get(I)J
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->incLength()V
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;-><init>()V
-HSPLandroid/icu/impl/coll/CollationIterator$CEBuffer;->set(IJ)J
-HSPLandroid/icu/impl/coll/CollationSettings;->dontCheckFCD()Z
-HSPLandroid/icu/impl/coll/CollationSettings;->getAlternateHandling()Z
-HSPLandroid/icu/impl/coll/CollationSettings;->getStrength(I)I
-HSPLandroid/icu/impl/coll/CollationSettings;->hasReordering()Z
-HSPLandroid/icu/impl/coll/CollationSettings;->isNumeric()Z
-HSPLandroid/icu/impl/coll/SharedObject$Reference;->readOnly()Landroid/icu/impl/coll/SharedObject;
-HSPLandroid/icu/impl/JavaTimeZone;->freeze()Landroid/icu/util/TimeZone;
-HSPLandroid/icu/impl/JavaTimeZone;-><init>(Ljava/util/TimeZone;Ljava/lang/String;)V
-HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;->apply(Landroid/icu/impl/number/NumberStringBuilder;II)I
-HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;ZZLandroid/icu/impl/number/Modifier$Parameters;)V
-HSPLandroid/icu/impl/number/ConstantMultiFieldModifier;-><init>(Landroid/icu/impl/number/NumberStringBuilder;Landroid/icu/impl/number/NumberStringBuilder;ZZ)V
-HSPLandroid/icu/impl/number/MicroProps;->clone()Ljava/lang/Object;
-HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->applyToMicros(Landroid/icu/impl/number/MicroProps;Landroid/icu/impl/number/DecimalQuantity;)V
-HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;-><init>(Landroid/icu/impl/number/AdoptingModifierStore;Landroid/icu/text/PluralRules;Landroid/icu/impl/number/MicroPropsGenerator;)V
-HSPLandroid/icu/impl/number/MutablePatternModifier$ImmutablePatternModifier;->processQuantity(Landroid/icu/impl/number/DecimalQuantity;)Landroid/icu/impl/number/MicroProps;
-HSPLandroid/icu/impl/StandardPlural;->orOtherFromString(Ljava/lang/CharSequence;)Landroid/icu/impl/StandardPlural;
-HSPLandroid/icu/impl/Trie2_32;->getFromU16SingleLead(C)I
-HSPLandroid/icu/impl/Trie2_32;->get(I)I
-HSPLandroid/icu/impl/UCharacterProperty;->getProperty(I)I
-HSPLandroid/icu/impl/UCharacterProperty;->getType(I)I
-HSPLandroid/icu/impl/UResource$Key;->contentEquals(Ljava/lang/CharSequence;)Z
-HSPLandroid/icu/impl/UResource$Key;->regionMatches(ILjava/lang/CharSequence;I)Z
-HSPLandroid/icu/lang/UCharacter;->getType(I)I
-HSPLandroid/icu/text/AlphabeticIndex$1;-><init>(Landroid/icu/text/AlphabeticIndex;)V
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$1400(Landroid/icu/text/AlphabeticIndex$Bucket;)I
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$1402(Landroid/icu/text/AlphabeticIndex$Bucket;I)I
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$800(Landroid/icu/text/AlphabeticIndex$Bucket;)Ljava/lang/String;
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;->access$900(Landroid/icu/text/AlphabeticIndex$Bucket;)Landroid/icu/text/AlphabeticIndex$Bucket;
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;->getLabel()Ljava/lang/String;
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;Landroid/icu/text/AlphabeticIndex$1;)V
-HSPLandroid/icu/text/AlphabeticIndex$Bucket;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/icu/text/AlphabeticIndex$Bucket$LabelType;)V
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$200(Landroid/icu/text/AlphabeticIndex$BucketList;)I
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$300(Landroid/icu/text/AlphabeticIndex$BucketList;Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;->access$400(Landroid/icu/text/AlphabeticIndex$BucketList;)Ljava/util/List;
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketCount()I
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;->getBucketIndex(Ljava/lang/CharSequence;Landroid/icu/text/Collator;)I
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/icu/text/AlphabeticIndex$1;)V
-HSPLandroid/icu/text/AlphabeticIndex$BucketList;-><init>(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
-HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucket(I)Landroid/icu/text/AlphabeticIndex$Bucket;
-HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;->getBucketIndex(Ljava/lang/CharSequence;)I
-HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;Landroid/icu/text/AlphabeticIndex$1;)V
-HSPLandroid/icu/text/AlphabeticIndex$ImmutableIndex;-><init>(Landroid/icu/text/AlphabeticIndex$BucketList;Landroid/icu/text/Collator;)V
-HSPLandroid/icu/text/BreakIterator;->getSentenceInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/BreakIterator;
-HSPLandroid/icu/text/Collator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLandroid/icu/text/DateFormat;->format(Ljava/lang/Object;Ljava/lang/StringBuffer;Ljava/text/FieldPosition;)Ljava/lang/StringBuffer;
-HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-HSPLandroid/icu/text/DateFormat;->getInstanceForSkeleton(Ljava/lang/String;Ljava/util/Locale;)Landroid/icu/text/DateFormat;
-HSPLandroid/icu/text/DateFormat;->getPatternInstance(Ljava/lang/String;Landroid/icu/util/ULocale;)Landroid/icu/text/DateFormat;
-HSPLandroid/icu/text/DateTimePatternGenerator;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/DateTimePatternGenerator;
-HSPLandroid/icu/text/DisplayContext;->type()Landroid/icu/text/DisplayContext$Type;
-HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;I)Landroid/icu/text/NumberFormat;
-HSPLandroid/icu/text/NumberFormat;->getInstance(Landroid/icu/util/ULocale;)Landroid/icu/text/NumberFormat;
-HSPLandroid/icu/text/PluralRules$Factory;->getDefaultFactory()Landroid/icu/impl/PluralRulesLoader;
-HSPLandroid/icu/text/PluralRules;->forLocale(Landroid/icu/util/ULocale;)Landroid/icu/text/PluralRules;
-HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;Landroid/icu/text/RuleBasedCollator$1;)V
-HSPLandroid/icu/text/RuleBasedCollator$CollationBuffer;-><init>(Landroid/icu/impl/coll/CollationData;)V
-HSPLandroid/icu/text/RuleBasedCollator$FCDUTF16NFDIterator;-><init>()V
-HSPLandroid/icu/text/RuleBasedCollator$NFDIterator;-><init>()V
-HSPLandroid/icu/text/RuleBasedCollator$UTF16NFDIterator;-><init>()V
-HSPLandroid/icu/text/RuleBasedCollator;->freeze()Landroid/icu/text/Collator;
-HSPLandroid/icu/text/RuleBasedCollator;->getCollationBuffer()Landroid/icu/text/RuleBasedCollator$CollationBuffer;
-HSPLandroid/icu/text/RuleBasedCollator;->internalAddContractions(ILandroid/icu/text/UnicodeSet;)V
-HSPLandroid/icu/text/RuleBasedCollator;->internalGetCEs(Ljava/lang/CharSequence;)[J
-HSPLandroid/icu/text/RuleBasedCollator;->isAlternateHandlingShifted()Z
-HSPLandroid/icu/text/RuleBasedCollator;->isFrozen()Z
-HSPLandroid/icu/text/RuleBasedCollator;->releaseCollationBuffer(Landroid/icu/text/RuleBasedCollator$CollationBuffer;)V
-HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/text/DateFormatSymbols;Landroid/icu/util/Calendar;Landroid/icu/text/NumberFormat;Landroid/icu/util/ULocale;ZLjava/lang/String;)V
-HSPLandroid/icu/text/SimpleDateFormat;-><init>(Ljava/lang/String;Landroid/icu/util/ULocale;)V
-HSPLandroid/icu/text/UFieldPosition;->getCountVisibleFractionDigits()I
-HSPLandroid/icu/text/UFieldPosition;->getFractionDigits()J
-HSPLandroid/icu/text/UFieldPosition;-><init>(Ljava/text/Format$Field;I)V
-HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->hasNext()Z
-HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;-><init>(Landroid/icu/text/UnicodeSet;)V
-HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/Object;
-HSPLandroid/icu/text/UnicodeSet$UnicodeSetIterator2;->next()Ljava/lang/String;
-HSPLandroid/icu/text/UnicodeSet;->access$400(Landroid/icu/text/UnicodeSet;)I
-HSPLandroid/icu/text/UnicodeSet;->access$500(Landroid/icu/text/UnicodeSet;)[I
-HSPLandroid/icu/text/UnicodeSet;->add(Ljava/lang/CharSequence;)Landroid/icu/text/UnicodeSet;
-HSPLandroid/icu/text/UnicodeSet;->addString(Ljava/lang/CharSequence;)V
-HSPLandroid/icu/text/UnicodeSet;->checkFrozen()V
-HSPLandroid/icu/text/UnicodeSet;-><init>(Ljava/lang/String;I)V
-HSPLandroid/icu/text/UnicodeSet;->isEmpty()Z
-HSPLandroid/icu/text/UnicodeSet;->iterator()Ljava/util/Iterator;
-HSPLandroid/icu/text/UTF16$StringComparator;-><init>(ZZI)V
-HSPLandroid/icu/text/UTF16$StringComparator;->setCodePointCompare(Z)V
-HSPLandroid/icu/text/UTF16;->_charAt(Ljava/lang/CharSequence;IC)I
-HSPLandroid/icu/text/UTF16;->getLeadSurrogate(I)C
-HSPLandroid/icu/text/UTF16;->getTrailSurrogate(I)C
-HSPLandroid/icu/text/UTF16;->hasMoreCodePointsThan(Ljava/lang/String;I)Z
-HSPLandroid/icu/util/BytesTrie$Result;->hasNext()Z
-HSPLandroid/icu/util/BytesTrie$Result;->hasValue()Z
-HSPLandroid/icu/util/CharsTrie$Entry;-><init>(Landroid/icu/util/CharsTrie$1;)V
-HSPLandroid/icu/util/CharsTrie$Entry;-><init>()V
-HSPLandroid/icu/util/CharsTrie$Iterator;->branchNext(II)I
-HSPLandroid/icu/util/CharsTrie$Iterator;->hasNext()Z
-HSPLandroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;IIILandroid/icu/util/CharsTrie$1;)V
-HSPLandroid/icu/util/CharsTrie$Iterator;-><init>(Ljava/lang/CharSequence;III)V
-HSPLandroid/icu/util/CharsTrie$Iterator;->next()Landroid/icu/util/CharsTrie$Entry;
-HSPLandroid/icu/util/TimeZone;-><init>()V
-HSPLandroid/icu/util/TimeZone;->setID(Ljava/lang/String;)V
-HSPLandroid/location/IGnssStatusListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/location/IGnssStatusListener$Stub;-><init>()V
-HSPLandroid/location/ILocationListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/location/ILocationManager$Stub$Proxy;->getAllProviders()Ljava/util/List;
-HSPLandroid/location/ILocationManager$Stub$Proxy;->getExtraLocationControllerPackage()Ljava/lang/String;
-HSPLandroid/location/ILocationManager$Stub$Proxy;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location;
-HSPLandroid/location/ILocationManager$Stub$Proxy;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;
-HSPLandroid/location/ILocationManager$Stub$Proxy;->isProviderEnabledForUser(Ljava/lang/String;I)Z
-HSPLandroid/location/ILocationManager$Stub$Proxy;->locationCallbackFinished(Landroid/location/ILocationListener;)V
-HSPLandroid/location/ILocationManager$Stub$Proxy;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z
-HSPLandroid/location/ILocationManager$Stub$Proxy;->setExtraLocationControllerPackageEnabled(Z)V
-HSPLandroid/location/ILocationManager$Stub$Proxy;->setExtraLocationControllerPackage(Ljava/lang/String;)V
-HSPLandroid/location/Location;->getVerticalAccuracyMeters()F
-HSPLandroid/location/Location;->hasAltitude()Z
-HSPLandroid/location/Location;->hasBearingAccuracy()Z
-HSPLandroid/location/Location;->hasElapsedRealtimeUncertaintyNanos()Z
-HSPLandroid/location/Location;->hasSpeedAccuracy()Z
-HSPLandroid/location/Location;->hasVerticalAccuracy()Z
-HSPLandroid/location/LocationManager$GnssStatusListenerTransport$GnssHandler;-><init>(Landroid/location/LocationManager$GnssStatusListenerTransport;Landroid/os/Handler;)V
-HSPLandroid/location/LocationManager$GnssStatusListenerTransport;-><init>(Landroid/location/LocationManager;Landroid/location/GpsStatus$Listener;Landroid/os/Handler;)V
-HSPLandroid/location/LocationManager;->addGpsStatusListener(Landroid/location/GpsStatus$Listener;)Z
-HSPLandroid/location/LocationManager;->checkProvider(Ljava/lang/String;)V
-HSPLandroid/location/LocationManager;->getAllProviders()Ljava/util/List;
-HSPLandroid/location/LocationManager;->getExtraLocationControllerPackage()Ljava/lang/String;
-HSPLandroid/location/LocationManager;->getLastKnownLocation(Ljava/lang/String;)Landroid/location/Location;
-HSPLandroid/location/LocationManager;->removeGpsStatusListener(Landroid/location/GpsStatus$Listener;)V
-HSPLandroid/location/LocationManager;->setLocationControllerExtraPackageEnabled(Z)V
-HSPLandroid/location/LocationManager;->setLocationControllerExtraPackage(Ljava/lang/String;)V
-HSPLandroid/location/LocationRequest;->setHideFromAppOps(Z)V
-HSPLandroid/location/LocationRequest;->setLocationSettingsIgnored(Z)Landroid/location/LocationRequest;
-HSPLandroid/location/LocationRequest;->setWorkSource(Landroid/os/WorkSource;)V
-HSPLandroid/location/Location;->setProvider(Ljava/lang/String;)V
-HSPLandroid/location/Location;->toString()Ljava/lang/String;
-HSPLandroid/media/AudioDeviceInfo;->getProductName()Ljava/lang/CharSequence;
-HSPLandroid/media/AudioManager;->getLastAudibleStreamVolume(I)I
-HSPLandroid/media/AudioManager;->getService()Landroid/media/IAudioService;
-HSPLandroid/media/AudioManager;->getStreamMinVolumeInt(I)I
-HSPLandroid/media/AudioManager;->isStreamAffectedByMute(I)Z
-HSPLandroid/media/AudioManager;->setVolumeController(Landroid/media/IVolumeController;)V
-HSPLandroid/media/AudioManager;->setVolumePolicy(Landroid/media/VolumePolicy;)V
-HSPLandroid/media/AudioPort;->name()Ljava/lang/String;
-HSPLandroid/media/AudioSystem;->streamToString(I)Ljava/lang/String;
-HSPLandroid/media/browse/MediaBrowser$1;-><init>(Landroid/media/browse/MediaBrowser;)V
-HSPLandroid/media/browse/MediaBrowser$1;->run()V
-HSPLandroid/media/browse/MediaBrowser$2;-><init>(Landroid/media/browse/MediaBrowser;)V
-HSPLandroid/media/browse/MediaBrowser$2;->run()V
-HSPLandroid/media/browse/MediaBrowser$6;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser$6;->run()V
-HSPLandroid/media/browse/MediaBrowser$7;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/media/browse/MediaBrowser$7;->run()V
-HSPLandroid/media/browse/MediaBrowser$8;-><init>(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/os/Bundle;Landroid/content/pm/ParceledListSlice;)V
-HSPLandroid/media/browse/MediaBrowser$8;->run()V
-HSPLandroid/media/browse/MediaBrowser$ConnectionCallback;-><init>()V
-HSPLandroid/media/browse/MediaBrowser$MediaItem$1;->createFromParcel(Landroid/os/Parcel;)Landroid/media/browse/MediaBrowser$MediaItem;
-HSPLandroid/media/browse/MediaBrowser$MediaItem$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/media/browse/MediaBrowser$MediaItem;->getDescription()Landroid/media/MediaDescription;
-HSPLandroid/media/browse/MediaBrowser$MediaItem;->getMediaId()Ljava/lang/String;
-HSPLandroid/media/browse/MediaBrowser$MediaItem;-><init>(Landroid/os/Parcel;Landroid/media/browse/MediaBrowser$1;)V
-HSPLandroid/media/browse/MediaBrowser$MediaItem;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/media/browse/MediaBrowser$MediaItem;->isBrowsable()Z
-HSPLandroid/media/browse/MediaBrowser$MediaItem;->toString()Ljava/lang/String;
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection$1;-><init>(Landroid/media/browse/MediaBrowser$MediaServiceConnection;Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection$1;->run()V
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->access$1600(Landroid/media/browse/MediaBrowser$MediaServiceConnection;Ljava/lang/String;)Z
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;-><init>(Landroid/media/browse/MediaBrowser;Landroid/media/browse/MediaBrowser$1;)V
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;-><init>(Landroid/media/browse/MediaBrowser;)V
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->isCurrent(Ljava/lang/String;)Z
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLandroid/media/browse/MediaBrowser$MediaServiceConnection;->postOrRun(Ljava/lang/Runnable;)V
-HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;-><init>(Landroid/media/browse/MediaBrowser;)V
-HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnectFailed()V
-HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onConnect(Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser$ServiceCallbacks;->onLoadChildrenWithOptions(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser$SubscriptionCallback;-><init>()V
-HSPLandroid/media/browse/MediaBrowser$Subscription;->getCallback(Landroid/content/Context;Landroid/os/Bundle;)Landroid/media/browse/MediaBrowser$SubscriptionCallback;
-HSPLandroid/media/browse/MediaBrowser$Subscription;->getCallbacks()Ljava/util/List;
-HSPLandroid/media/browse/MediaBrowser$Subscription;->getOptionsList()Ljava/util/List;
-HSPLandroid/media/browse/MediaBrowser$Subscription;-><init>()V
-HSPLandroid/media/browse/MediaBrowser$Subscription;->isEmpty()Z
-HSPLandroid/media/browse/MediaBrowser$Subscription;->putCallback(Landroid/content/Context;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
-HSPLandroid/media/browse/MediaBrowser;->access$000(Landroid/media/browse/MediaBrowser;)I
-HSPLandroid/media/browse/MediaBrowser;->access$002(Landroid/media/browse/MediaBrowser;I)I
-HSPLandroid/media/browse/MediaBrowser;->access$100(Landroid/media/browse/MediaBrowser;)Landroid/service/media/IMediaBrowserService;
-HSPLandroid/media/browse/MediaBrowser;->access$102(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserService;)Landroid/service/media/IMediaBrowserService;
-HSPLandroid/media/browse/MediaBrowser;->access$1102(Landroid/media/browse/MediaBrowser;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/media/browse/MediaBrowser;->access$1202(Landroid/media/browse/MediaBrowser;Landroid/media/session/MediaSession$Token;)Landroid/media/session/MediaSession$Token;
-HSPLandroid/media/browse/MediaBrowser;->access$1302(Landroid/media/browse/MediaBrowser;Landroid/os/Bundle;)Landroid/os/Bundle;
-HSPLandroid/media/browse/MediaBrowser;->access$1400(Landroid/media/browse/MediaBrowser;)Landroid/util/ArrayMap;
-HSPLandroid/media/browse/MediaBrowser;->access$1700(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$ServiceCallbacks;
-HSPLandroid/media/browse/MediaBrowser;->access$1800(Landroid/media/browse/MediaBrowser;)Landroid/os/Bundle;
-HSPLandroid/media/browse/MediaBrowser;->access$1900(Landroid/media/browse/MediaBrowser;)Landroid/os/Handler;
-HSPLandroid/media/browse/MediaBrowser;->access$2000(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser;->access$200(Landroid/media/browse/MediaBrowser;)Landroid/service/media/IMediaBrowserServiceCallbacks;
-HSPLandroid/media/browse/MediaBrowser;->access$202(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)Landroid/service/media/IMediaBrowserServiceCallbacks;
-HSPLandroid/media/browse/MediaBrowser;->access$2100(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/media/browse/MediaBrowser;->access$2200(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser;->access$300(Landroid/media/browse/MediaBrowser;)Landroid/content/ComponentName;
-HSPLandroid/media/browse/MediaBrowser;->access$400(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$MediaServiceConnection;
-HSPLandroid/media/browse/MediaBrowser;->access$402(Landroid/media/browse/MediaBrowser;Landroid/media/browse/MediaBrowser$MediaServiceConnection;)Landroid/media/browse/MediaBrowser$MediaServiceConnection;
-HSPLandroid/media/browse/MediaBrowser;->access$600(Landroid/media/browse/MediaBrowser;)Landroid/content/Context;
-HSPLandroid/media/browse/MediaBrowser;->access$700(Landroid/media/browse/MediaBrowser;)V
-HSPLandroid/media/browse/MediaBrowser;->access$800(Landroid/media/browse/MediaBrowser;)Landroid/media/browse/MediaBrowser$ConnectionCallback;
-HSPLandroid/media/browse/MediaBrowser;->access$900(Landroid/media/browse/MediaBrowser;Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;)Z
-HSPLandroid/media/browse/MediaBrowser;->connect()V
-HSPLandroid/media/browse/MediaBrowser;->disconnect()V
-HSPLandroid/media/browse/MediaBrowser;->forceCloseConnection()V
-HSPLandroid/media/browse/MediaBrowser;->getNewServiceCallbacks()Landroid/media/browse/MediaBrowser$ServiceCallbacks;
-HSPLandroid/media/browse/MediaBrowser;->getRoot()Ljava/lang/String;
-HSPLandroid/media/browse/MediaBrowser;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/media/browse/MediaBrowser$ConnectionCallback;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser;->isConnected()Z
-HSPLandroid/media/browse/MediaBrowser;->isCurrent(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;)Z
-HSPLandroid/media/browse/MediaBrowser;->onConnectionFailed(Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/media/browse/MediaBrowser;->onLoadChildren(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser;->onServiceConnected(Landroid/service/media/IMediaBrowserServiceCallbacks;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/os/Bundle;)V
-HSPLandroid/media/browse/MediaBrowser;->subscribeInternal(Ljava/lang/String;Landroid/os/Bundle;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
-HSPLandroid/media/browse/MediaBrowser;->subscribe(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
-HSPLandroid/media/browse/MediaBrowser;->unsubscribeInternal(Ljava/lang/String;Landroid/media/browse/MediaBrowser$SubscriptionCallback;)V
-HSPLandroid/media/browse/MediaBrowser;->unsubscribe(Ljava/lang/String;)V
-HSPLandroid/media/browse/MediaBrowserUtils;->areSameOptions(Landroid/os/Bundle;Landroid/os/Bundle;)Z
-HSPLandroid/media/IAudioService$Stub$Proxy;->getLastAudibleStreamVolume(I)I
-HSPLandroid/media/IAudioService$Stub$Proxy;->getStreamMinVolume(I)I
-HSPLandroid/media/IAudioService$Stub$Proxy;->isStreamAffectedByMute(I)Z
-HSPLandroid/media/IAudioService$Stub$Proxy;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumeController(Landroid/media/IVolumeController;)V
-HSPLandroid/media/IAudioService$Stub$Proxy;->setVolumePolicy(Landroid/media/VolumePolicy;)V
-HSPLandroid/media/IMediaRouterService$Stub$Proxy;->registerClientGroupId(Landroid/media/IMediaRouterClient;Ljava/lang/String;)V
-HSPLandroid/media/IRemoteVolumeController$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IRemoteVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/IRingtonePlayer$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IRingtonePlayer$Stub;-><init>()V
-HSPLandroid/media/IVolumeController$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/IVolumeController$Stub;-><init>()V
-HSPLandroid/media/IVolumeController$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/MediaDescription;->getMediaId()Ljava/lang/String;
-HSPLandroid/media/MediaDescription;->getTitle()Ljava/lang/CharSequence;
-HSPLandroid/media/MediaDescription;->toString()Ljava/lang/String;
-HSPLandroid/media/MediaRouter$Static;->setRouterGroupId(Ljava/lang/String;)V
-HSPLandroid/media/MediaRouter$VolumeCallback;-><init>()V
-HSPLandroid/media/MediaRouter;->setRouterGroupId(Ljava/lang/String;)V
-HSPLandroid/media/projection/IMediaProjectionManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/media/projection/IMediaProjectionManager;
-HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/projection/IMediaProjectionWatcherCallback$Stub;-><init>()V
-HSPLandroid/media/projection/MediaProjectionManager;->addCallback(Landroid/media/projection/MediaProjectionManager$Callback;Landroid/os/Handler;)V
-HSPLandroid/media/projection/MediaProjectionManager;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
-HSPLandroid/media/projection/MediaProjectionManager;-><init>(Landroid/content/Context;)V
-HSPLandroid/media/session/IActiveSessionsListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/IActiveSessionsListener$Stub;-><init>()V
-HSPLandroid/media/session/IActiveSessionsListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/session/ICallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/ICallback$Stub;-><init>()V
-HSPLandroid/media/session/ICallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->getMetadata()Landroid/media/MediaMetadata;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->getPackageName()Ljava/lang/String;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->getPlaybackState()Landroid/media/session/PlaybackState;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->getQueue()Landroid/content/pm/ParceledListSlice;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->registerCallback(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
-HSPLandroid/media/session/ISessionController$Stub$Proxy;->unregisterCallback(Landroid/media/session/ISessionControllerCallback;)V
-HSPLandroid/media/session/ISessionControllerCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/media/session/ISessionControllerCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/media/session/ISessionManager$Stub$Proxy;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
-HSPLandroid/media/session/ISessionManager$Stub$Proxy;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
-HSPLandroid/media/session/ISessionManager$Stub$Proxy;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V
-HSPLandroid/media/session/ISessionManager$Stub$Proxy;->setCallback(Landroid/media/session/ICallback;)V
-HSPLandroid/media/session/MediaController$CallbackStub;->onMetadataChanged(Landroid/media/MediaMetadata;)V
-HSPLandroid/media/session/MediaController$CallbackStub;->onPlaybackStateChanged(Landroid/media/session/PlaybackState;)V
-HSPLandroid/media/session/MediaController$CallbackStub;->onQueueTitleChanged(Ljava/lang/CharSequence;)V
-HSPLandroid/media/session/MediaController$CallbackStub;->onSessionDestroyed()V
-HSPLandroid/media/session/MediaController$MessageHandler;->access$102(Landroid/media/session/MediaController$MessageHandler;Z)Z
-HSPLandroid/media/session/MediaController$MessageHandler;->access$200(Landroid/media/session/MediaController$MessageHandler;)Landroid/media/session/MediaController$Callback;
-HSPLandroid/media/session/MediaController$MessageHandler;->handleMessage(Landroid/os/Message;)V
-HSPLandroid/media/session/MediaController$MessageHandler;-><init>(Landroid/os/Looper;Landroid/media/session/MediaController$Callback;)V
-HSPLandroid/media/session/MediaController$MessageHandler;->post(ILjava/lang/Object;Landroid/os/Bundle;)V
-HSPLandroid/media/session/MediaController;->access$600(Landroid/media/session/MediaController;ILjava/lang/Object;Landroid/os/Bundle;)V
-HSPLandroid/media/session/MediaController;->addCallbackLocked(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V
-HSPLandroid/media/session/MediaController;->getHandlerForCallbackLocked(Landroid/media/session/MediaController$Callback;)Landroid/media/session/MediaController$MessageHandler;
-HSPLandroid/media/session/MediaController;->getMetadata()Landroid/media/MediaMetadata;
-HSPLandroid/media/session/MediaController;->getPackageName()Ljava/lang/String;
-HSPLandroid/media/session/MediaController;->getPlaybackInfo()Landroid/media/session/MediaController$PlaybackInfo;
-HSPLandroid/media/session/MediaController;->getPlaybackState()Landroid/media/session/PlaybackState;
-HSPLandroid/media/session/MediaController;->getQueue()Ljava/util/List;
-HSPLandroid/media/session/MediaController;->getTransportControls()Landroid/media/session/MediaController$TransportControls;
-HSPLandroid/media/session/MediaController;->postMessage(ILjava/lang/Object;Landroid/os/Bundle;)V
-HSPLandroid/media/session/MediaController;->registerCallback(Landroid/media/session/MediaController$Callback;Landroid/os/Handler;)V
-HSPLandroid/media/session/MediaController;->removeCallbackLocked(Landroid/media/session/MediaController$Callback;)Z
-HSPLandroid/media/session/MediaController;->unregisterCallback(Landroid/media/session/MediaController$Callback;)V
-HSPLandroid/media/session/MediaSession$Token;->equals(Ljava/lang/Object;)Z
-HSPLandroid/media/session/MediaSession$Token;->hashCode()I
-HSPLandroid/media/session/MediaSessionManager$CallbackImpl$4;-><init>(Landroid/media/session/MediaSessionManager$CallbackImpl;Landroid/content/ComponentName;)V
-HSPLandroid/media/session/MediaSessionManager$CallbackImpl$4;->run()V
-HSPLandroid/media/session/MediaSessionManager$CallbackImpl;->access$900(Landroid/media/session/MediaSessionManager$CallbackImpl;)Landroid/media/session/MediaSessionManager$Callback;
-HSPLandroid/media/session/MediaSessionManager$CallbackImpl;-><init>(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V
-HSPLandroid/media/session/MediaSessionManager$CallbackImpl;->onAddressedPlayerChangedToMediaButtonReceiver(Landroid/content/ComponentName;)V
-HSPLandroid/media/session/MediaSessionManager$Callback;-><init>()V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;-><init>(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;Ljava/util/List;)V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1$1;->run()V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;-><init>(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper$1;->onActiveSessionsChanged(Ljava/util/List;)V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$000(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/IActiveSessionsListener$Stub;
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$100(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$200(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/os/Handler;
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$300(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/content/Context;
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->access$400(Landroid/media/session/MediaSessionManager$SessionsChangedWrapper;)Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;-><init>(Landroid/content/Context;Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/os/Handler;)V
-HSPLandroid/media/session/MediaSessionManager$SessionsChangedWrapper;->release()V
-HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;ILandroid/os/Handler;)V
-HSPLandroid/media/session/MediaSessionManager;->addOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;Landroid/content/ComponentName;Landroid/os/Handler;)V
-HSPLandroid/media/session/MediaSessionManager;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
-HSPLandroid/media/session/MediaSessionManager;->removeOnActiveSessionsChangedListener(Landroid/media/session/MediaSessionManager$OnActiveSessionsChangedListener;)V
-HSPLandroid/media/session/MediaSessionManager;->setCallback(Landroid/media/session/MediaSessionManager$Callback;Landroid/os/Handler;)V
-HSPLandroid/media/SoundPool$Builder;-><init>()V
-HSPLandroid/media/SoundPool$Builder;->setMaxStreams(I)Landroid/media/SoundPool$Builder;
-HSPLandroid/media/SoundPool;->load(Landroid/content/Context;II)I
-HSPLandroid/media/VolumePolicy;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/metrics/LogMaker;->deserialize([Ljava/lang/Object;)V
-HSPLandroid/metrics/LogMaker;->getCategory()I
-HSPLandroid/metrics/LogMaker;->getCounterBucket()J
-HSPLandroid/metrics/LogMaker;->getCounterName()Ljava/lang/String;
-HSPLandroid/metrics/LogMaker;->getCounterValue()I
-HSPLandroid/metrics/LogMaker;->getSubtype()I
-HSPLandroid/metrics/LogMaker;->getTimestamp()J
-HSPLandroid/metrics/LogMaker;-><init>([Ljava/lang/Object;)V
-HSPLandroid/metrics/LogMaker;->isLongCounterBucket()Z
-HSPLandroid/metrics/LogMaker;->setProcessId(I)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setTimestamp(J)Landroid/metrics/LogMaker;
-HSPLandroid/metrics/LogMaker;->setUid(I)Landroid/metrics/LogMaker;
-HSPLandroid/net/apf/ApfCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/apf/ApfCapabilities;
-HSPLandroid/net/apf/ApfCapabilities$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/apf/ApfCapabilities;->getApfDrop8023Frames()Z
-HSPLandroid/net/apf/ApfCapabilities;->getApfEtherTypeBlackList()[I
-HSPLandroid/net/apf/ApfCapabilities;->hasDataAccess()Z
-HSPLandroid/net/apf/ApfCapabilities;-><init>(Landroid/os/Parcel;Landroid/net/apf/ApfCapabilities$1;)V
-HSPLandroid/net/apf/ApfCapabilities;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/net/apf/ApfCapabilities;->toString()Ljava/lang/String;
-HSPLandroid/net/ConnectivityManager;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
-HSPLandroid/net/ConnectivityManager;->getInstanceOrNull()Landroid/net/ConnectivityManager;
-HSPLandroid/net/ConnectivityManager;->reportNetworkConnectivity(Landroid/net/Network;Z)V
-HSPLandroid/net/ConnectivityManager;->shouldAvoidBadWifi()Z
-HSPLandroid/net/ConnectivityMetricsEvent;-><init>()V
-HSPLandroid/net/ConnectivityMetricsEvent;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->reportNetworkConnectivity(Landroid/net/Network;Z)V
-HSPLandroid/net/IConnectivityManager$Stub$Proxy;->shouldAvoidBadWifi()Z
-HSPLandroid/net/INetworkScoreCache$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/INetworkScoreService$Stub$Proxy;->getActiveScorerPackage()Ljava/lang/String;
-HSPLandroid/net/INetworkScoreService$Stub$Proxy;->updateScores([Landroid/net/ScoredNetwork;)Z
-HSPLandroid/net/INetworkStatsService$Stub$Proxy;->getTotalStats(I)J
-HSPLandroid/net/IpPrefix;->contains(Ljava/net/InetAddress;)Z
-HSPLandroid/net/LinkAddress;->equals(Ljava/lang/Object;)Z
-HSPLandroid/net/LinkProperties;->hasIpv4AddressOnInterface(Ljava/lang/String;)Z
-HSPLandroid/net/LinkProperties;->hasIpv6DnsServer()Z
-HSPLandroid/net/LinkProperties;->isIpv4Provisioned()Z
-HSPLandroid/net/LinkProperties;->isIpv6Provisioned()Z
-HSPLandroid/net/LinkProperties;->isProvisioned()Z
-HSPLandroid/net/LinkProperties;->isReachable(Ljava/net/InetAddress;)Z
-HSPLandroid/net/LinkProperties;->setTcpBufferSizes(Ljava/lang/String;)V
-HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Landroid/net/LocalSocketImpl;I)Landroid/net/LocalSocket;
-HSPLandroid/net/LocalSocket;->createConnectedLocalSocket(Ljava/io/FileDescriptor;)Landroid/net/LocalSocket;
-HSPLandroid/net/LocalSocketImpl;-><init>(Ljava/io/FileDescriptor;)V
-HSPLandroid/net/LocalSocket;-><init>(Landroid/net/LocalSocketImpl;I)V
-HSPLandroid/net/metrics/ApfProgramEvent;->flagsFor(ZZ)I
-HSPLandroid/net/metrics/IpConnectivityLog;-><init>()V
-HSPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/metrics/IpConnectivityLog$Event;)Z
-HSPLandroid/net/metrics/IpConnectivityLog;->log(Landroid/net/Network;[ILandroid/net/metrics/IpConnectivityLog$Event;)Z
-HSPLandroid/net/metrics/IpConnectivityLog;->log(Ljava/lang/String;Landroid/net/metrics/IpConnectivityLog$Event;)Z
-HSPLandroid/net/metrics/IpConnectivityLog;->makeEv(Landroid/net/metrics/IpConnectivityLog$Event;)Landroid/net/ConnectivityMetricsEvent;
-HSPLandroid/net/NetworkCapabilities$1;->newArray(I)[Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkCapabilities$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/net/NetworkCapabilities;->equalsTransportTypes(Landroid/net/NetworkCapabilities;)Z
-HSPLandroid/net/NetworkCapabilities;->setUids(Ljava/util/Set;)Landroid/net/NetworkCapabilities;
-HSPLandroid/net/NetworkInfo;->isAvailable()Z
-HSPLandroid/net/Network;-><init>(IZ)V
-HSPLandroid/net/Network;-><init>(Landroid/net/Network;)V
-HSPLandroid/net/NetworkKey;-><init>(Landroid/net/WifiKey;)V
-HSPLandroid/net/Network;->lambda$maybeInitUrlConnectionFactory$0$Network(Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/net/Network;->maybeInitUrlConnectionFactory()V
-HSPLandroid/net/Network;->openConnection(Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/URLConnection;
-HSPLandroid/net/Network;->openConnection(Ljava/net/URL;)Ljava/net/URLConnection;
-HSPLandroid/net/NetworkRequest$Builder;->setUids(Ljava/util/Set;)Landroid/net/NetworkRequest$Builder;
-HSPLandroid/net/NetworkScoreManager;->updateScores([Landroid/net/ScoredNetwork;)Z
-HSPLandroid/net/NetworkUtils;->protectFromVpn(Ljava/io/FileDescriptor;)Z
-HSPLandroid/net/nsd/INsdManager$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/nsd/INsdManager;
-HSPLandroid/net/nsd/NsdManager;->access$000(Landroid/net/nsd/NsdManager;)Lcom/android/internal/util/AsyncChannel;
-HSPLandroid/net/nsd/NsdManager;->access$100(Landroid/net/nsd/NsdManager;)Ljava/util/concurrent/CountDownLatch;
-HSPLandroid/net/nsd/NsdManager;->getMessenger()Landroid/os/Messenger;
-HSPLandroid/net/nsd/NsdManager;-><init>(Landroid/content/Context;Landroid/net/nsd/INsdManager;)V
-HSPLandroid/net/nsd/NsdManager;->init()V
-HSPLandroid/net/RouteInfo;->getGateway()Ljava/net/InetAddress;
-HSPLandroid/net/RouteInfo;->getInterface()Ljava/lang/String;
-HSPLandroid/net/RouteInfo;->hasGateway()Z
-HSPLandroid/net/RouteInfo;->matches(Ljava/net/InetAddress;)Z
-HSPLandroid/net/ScoredNetwork;->calculateBadge(I)I
-HSPLandroid/net/ScoredNetwork;-><init>(Landroid/net/NetworkKey;Landroid/net/RssiCurve;ZLandroid/os/Bundle;)V
-HSPLandroid/net/ScoredNetwork;-><init>(Landroid/net/NetworkKey;Landroid/net/RssiCurve;Z)V
-HSPLandroid/net/ScoredNetwork;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/StaticIpConfiguration;->getDnsServers()Ljava/util/List;
-HSPLandroid/net/StaticIpConfiguration;->getDomains()Ljava/lang/String;
-HSPLandroid/net/StaticIpConfiguration;->getGateway()Ljava/net/InetAddress;
-HSPLandroid/net/StaticIpConfiguration;->getIpAddress()Landroid/net/LinkAddress;
-HSPLandroid/net/StaticIpConfiguration;->getRoutes(Ljava/lang/String;)Ljava/util/List;
-HSPLandroid/net/StaticIpConfiguration;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/net/TrafficStats;->clearThreadStatsUid()V
-HSPLandroid/net/TrafficStats;->getMobileRxBytes()J
-HSPLandroid/net/TrafficStats;->getMobileTxBytes()J
-HSPLandroid/net/TrafficStats;->getThreadStatsTag()I
-HSPLandroid/net/TrafficStats;->getTotalRxBytes()J
-HSPLandroid/net/TrafficStats;->setThreadStatsUid(I)V
-HSPLandroid/net/TrafficStats;->tagSocket(Ljava/net/Socket;)V
-HSPLandroid/net/Uri$AbstractPart;->getDecoded()Ljava/lang/String;
-HSPLandroid/net/Uri$HierarchicalUri;->getFragment()Ljava/lang/String;
-HSPLandroid/net/Uri$Part;->fromEncoded(Ljava/lang/String;)Landroid/net/Uri$Part;
-HSPLandroid/net/Uri$StringUri;->findFragmentSeparator()I
-HSPLandroid/net/Uri$StringUri;->findSchemeSeparator()I
-HSPLandroid/net/Uri$StringUri;->getEncodedFragment()Ljava/lang/String;
-HSPLandroid/net/Uri$StringUri;->getFragmentPart()Landroid/net/Uri$Part;
-HSPLandroid/net/Uri$StringUri;->parseFragment()Ljava/lang/String;
-HSPLandroid/net/wifi/ISoftApCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/wifi/ISoftApCallback$Stub;-><init>()V
-HSPLandroid/net/wifi/ISoftApCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/wifi/ITrafficStateCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/wifi/ITrafficStateCallback$Stub;-><init>()V
-HSPLandroid/net/wifi/ITrafficStateCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireMulticastLock(Landroid/os/IBinder;Ljava/lang/String;)V
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->acquireWifiLock(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/WorkSource;)Z
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->getWifiApConfiguration()Landroid/net/wifi/WifiConfiguration;
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->registerSoftApCallback(Landroid/os/IBinder;Landroid/net/wifi/ISoftApCallback;I)V
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->registerTrafficStateCallback(Landroid/os/IBinder;Landroid/net/wifi/ITrafficStateCallback;I)V
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseMulticastLock(Ljava/lang/String;)V
-HSPLandroid/net/wifi/IWifiManager$Stub$Proxy;->releaseWifiLock(Landroid/os/IBinder;)Z
-HSPLandroid/net/wifi/ScanResult;->is80211mcResponder()Z
-HSPLandroid/net/wifi/WifiInfo;->getIpAddress()I
-HSPLandroid/net/wifi/WifiInfo;->getMacAddress()Ljava/lang/String;
-HSPLandroid/net/wifi/WifiManager$WifiLock;->acquire()V
-HSPLandroid/net/wifi/WifiManager$WifiLock;->finalize()V
-HSPLandroid/net/wifi/WifiManager$WifiLock;->release()V
-HSPLandroid/net/wifi/WifiManager;->access$000(Landroid/net/wifi/WifiManager;)Z
-HSPLandroid/net/wifi/WifiManager;->access$800(Landroid/net/wifi/WifiManager;)I
-HSPLandroid/net/wifi/WifiManager;->access$808(Landroid/net/wifi/WifiManager;)I
-HSPLandroid/net/wifi/WifiManager;->access$810(Landroid/net/wifi/WifiManager;)I
-HSPLandroid/net/wifi/WifiManager;->createMulticastLock(Ljava/lang/String;)Landroid/net/wifi/WifiManager$MulticastLock;
-HSPLandroid/net/wifi/WifiManager;->registerSoftApCallback(Landroid/net/wifi/WifiManager$SoftApCallback;Landroid/os/Handler;)V
-HSPLandroid/net/wifi/WifiManager;->registerTrafficStateCallback(Landroid/net/wifi/WifiManager$TrafficStateCallback;Landroid/os/Handler;)V
-HSPLandroid/net/wifi/WifiNetworkAgentSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/wifi/WifiNetworkAgentSpecifier;
-HSPLandroid/net/wifi/WifiNetworkAgentSpecifier$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/net/wifi/WifiNetworkScoreCache$CacheListener;->post(Ljava/util/List;)V
-HSPLandroid/net/wifi/WifiNetworkScoreCache;->registerListener(Landroid/net/wifi/WifiNetworkScoreCache$CacheListener;)V
-HSPLandroid/nfc/INfcAdapter$Stub;-><init>()V
-HSPLandroid/nfc/INfcAdapter$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/nfc/INfcCardEmulation$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/nfc/INfcCardEmulation$Stub;-><init>()V
-HSPLandroid/nfc/INfcFCardEmulation$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/nfc/INfcFCardEmulation$Stub;-><init>()V
-HSPLandroid/nfc/INfcTag$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/nfc/INfcTag$Stub;-><init>()V
-HSPLandroid/os/BaseBundle;->getDouble(Ljava/lang/String;)D
-HSPLandroid/os/BaseBundle;->getDouble(Ljava/lang/String;D)D
-HSPLandroid/os/BaseBundle;->getFloat(Ljava/lang/String;)F
-HSPLandroid/os/BaseBundle;-><init>(Landroid/os/Parcel;I)V
-HSPLandroid/os/BaseBundle;->putDouble(Ljava/lang/String;D)V
-HSPLandroid/os/Bundle;->getFloat(Ljava/lang/String;)F
-HSPLandroid/os/Bundle;->maybePrefillHasFds()V
-HSPLandroid/os/DropBoxManager$Entry;->getTimeMillis()J
-HSPLandroid/os/DropBoxManager;->getNextEntry(Ljava/lang/String;J)Landroid/os/DropBoxManager$Entry;
-HSPLandroid/os/Environment;->getExternalStoragePublicDirectory(Ljava/lang/String;)Ljava/io/File;
-HSPLandroid/os/Environment;->throwIfUserRequired()V
-HSPLandroid/os/FileUtils;->listFilesOrEmpty(Ljava/io/File;Ljava/io/FilenameFilter;)[Ljava/io/File;
-HSPLandroid/os/FileUtils;->listOrEmpty(Ljava/io/File;)[Ljava/lang/String;
-HSPLandroid/os/GraphicsEnvironment;->checkAngleWhitelist(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z
-HSPLandroid/os/GraphicsEnvironment;->chooseDriverInternal(Landroid/content/Context;Landroid/os/Bundle;)Ljava/lang/String;
-HSPLandroid/os/GraphicsEnvironment;->shouldUseAngle(Landroid/content/Context;Landroid/os/Bundle;Ljava/lang/String;)Z
-HSPLandroid/os/Handler;->getPostMessage(Ljava/lang/Runnable;Ljava/lang/Object;)Landroid/os/Message;
-HSPLandroid/os/Handler;->postDelayed(Ljava/lang/Runnable;Ljava/lang/Object;J)Z
-HSPLandroid/os/IPowerManager$Stub$Proxy;->getLastShutdownReason()I
-HSPLandroid/os/IPowerManager$Stub$Proxy;->getPowerSaveState(I)Landroid/os/PowerSaveState;
-HSPLandroid/os/IPowerManager$Stub$Proxy;->isLightDeviceIdleMode()Z
-HSPLandroid/os/IPowerManager$Stub$Proxy;->setDozeAfterScreenOff(Z)V
-HSPLandroid/os/IStatsManager$Stub$Proxy;->addConfiguration(J[BLjava/lang/String;)V
-HSPLandroid/os/IStatsManager$Stub$Proxy;->getData(JLjava/lang/String;)[B
-HSPLandroid/os/IStatsManager$Stub$Proxy;->registerPullerCallback(ILandroid/os/IStatsPullerCallback;Ljava/lang/String;)V
-HSPLandroid/os/IStatsManager$Stub$Proxy;->setDataFetchOperation(JLandroid/os/IBinder;Ljava/lang/String;)V
-HSPLandroid/os/IThermalEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/IUserManager$Stub$Proxy;->getProfileParent(I)Landroid/content/pm/UserInfo;
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUserAccount(I)Ljava/lang/String;
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUserHandle(I)I
-HSPLandroid/os/IUserManager$Stub$Proxy;->getUserIcon(I)Landroid/os/ParcelFileDescriptor;
-HSPLandroid/os/IUserManager$Stub$Proxy;->isQuietModeEnabled(I)Z
-HSPLandroid/os/IUserManager$Stub$Proxy;->isUserRunning(I)Z
-HSPLandroid/os/LocaleList;->toLanguageTags()Ljava/lang/String;
-HSPLandroid/os/Message;->getWhen()J
-HSPLandroid/os/MessageQueue;->addOnFileDescriptorEventListener(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
-HSPLandroid/os/MessageQueue;->dispatchEvents(II)I
-HSPLandroid/os/MessageQueue;->removeOnFileDescriptorEventListener(Ljava/io/FileDescriptor;)V
-HSPLandroid/os/MessageQueue;->updateOnFileDescriptorEventListenerLocked(Ljava/io/FileDescriptor;ILandroid/os/MessageQueue$OnFileDescriptorEventListener;)V
-HSPLandroid/os/Message;->setAsynchronous(Z)V
-HSPLandroid/os/Message;->setCallback(Ljava/lang/Runnable;)Landroid/os/Message;
-HSPLandroid/os/Message;->setTarget(Landroid/os/Handler;)V
-HSPLandroid/os/Parcel;->createTypedArrayMap(Landroid/os/Parcelable$Creator;)Landroid/util/ArrayMap;
-HSPLandroid/os/ParcelFileDescriptor$AutoCloseInputStream;->read()I
-HSPLandroid/os/Parcel;->hasFileDescriptors()Z
-HSPLandroid/os/Parcel;->readCharSequenceList()Ljava/util/ArrayList;
-HSPLandroid/os/Parcel;->readFileDescriptor()Landroid/os/ParcelFileDescriptor;
-HSPLandroid/os/ParcelUuid;->getUuid()Ljava/util/UUID;
-HSPLandroid/os/ParcelUuid;-><init>(Ljava/util/UUID;)V
-HSPLandroid/os/ParcelUuid;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/Parcel;->writeFileDescriptor(Ljava/io/FileDescriptor;)V
-HSPLandroid/os/PersistableBundle;->toString()Ljava/lang/String;
-HSPLandroid/os/PowerManager;->getDefaultScreenBrightnessForVrSetting()I
-HSPLandroid/os/PowerManager;->getLastShutdownReason()I
-HSPLandroid/os/PowerManager;->getMaximumScreenBrightnessForVrSetting()I
-HSPLandroid/os/PowerManager;->getMinimumScreenBrightnessForVrSetting()I
-HSPLandroid/os/PowerManager;->setDozeAfterScreenOff(Z)V
-HSPLandroid/os/PowerSaveState$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/PowerSaveState;
-HSPLandroid/os/PowerSaveState$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/PowerSaveState;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/os/StatFs;->getBlockCountLong()J
-HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Landroid/os/storage/DiskInfo;
-HSPLandroid/os/storage/DiskInfo$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/os/storage/IStorageEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getDisks()[Landroid/os/storage/DiskInfo;
-HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord;
-HSPLandroid/os/storage/IStorageManager$Stub$Proxy;->registerListener(Landroid/os/storage/IStorageEventListener;)V
-HSPLandroid/os/storage/StorageManager;->getDisks()Ljava/util/List;
-HSPLandroid/os/storage/StorageManager;->getVolumeRecords()Ljava/util/List;
-HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Landroid/os/storage/VolumeRecord;
-HSPLandroid/os/storage/VolumeRecord$1;->newArray(I)[Ljava/lang/Object;
-HSPLandroid/os/Temperature$1;->createFromParcel(Landroid/os/Parcel;)Landroid/os/Temperature;
-HSPLandroid/os/Temperature$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/os/Temperature;-><init>(FILjava/lang/String;I)V
-HSPLandroid/os/Temperature;->isValidStatus(I)Z
-HSPLandroid/os/Temperature;->isValidType(I)Z
-HSPLandroid/os/Trace;->beginAsyncSection(Ljava/lang/String;I)V
-HSPLandroid/os/UserManager;->canAddMoreUsers()Z
-HSPLandroid/os/UserManager;->canSwitchUsers()Z
-HSPLandroid/os/UserManager;->getUserAccount(I)Ljava/lang/String;
-HSPLandroid/os/UserManager;->getUserCount()I
-HSPLandroid/os/UserManager;->getUserIcon(I)Landroid/graphics/Bitmap;
-HSPLandroid/os/UserManager;->isGuestUserEphemeral()Z
-HSPLandroid/os/UserManager;->isGuestUser(I)Z
-HSPLandroid/os/UserManager;->isGuestUser()Z
-HSPLandroid/os/WorkSource$WorkChain;->addNode(ILjava/lang/String;)Landroid/os/WorkSource$WorkChain;
-HSPLandroid/os/WorkSource$WorkChain;-><init>()V
-HSPLandroid/os/WorkSource$WorkChain;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/os/WorkSource;->createWorkChain()Landroid/os/WorkSource$WorkChain;
-HSPLandroid/os/WorkSource;->hashCode()I
-HSPLandroid/os/WorkSource;-><init>()V
-HSPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabel(Landroid/content/res/Resources;ILjava/lang/CharSequence;)Ljava/lang/CharSequence;
-HSPLandroid/provider/ContactsContract$CommonDataKinds$Email;->getTypeLabelResource(I)I
-HSPLandroid/provider/DeviceConfig;->addOnPropertiesChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
-HSPLandroid/provider/Settings$Secure;->isLocationProviderEnabled(Landroid/content/ContentResolver;Ljava/lang/String;)Z
-HSPLandroid/provider/Settings$System;->canWrite(Landroid/content/Context;)Z
-HSPLandroid/provider/Settings$System;->getFloatForUser(Landroid/content/ContentResolver;Ljava/lang/String;I)F
-HSPLandroid/provider/Settings$System;->getFloat(Landroid/content/ContentResolver;Ljava/lang/String;)F
-HSPLandroid/provider/Settings;->isCallingPackageAllowedToWriteSettings(Landroid/content/Context;ILjava/lang/String;Z)Z
-HSPLandroid/security/keymaster/KeymasterArguments;-><init>()V
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getBlockModes()[Ljava/lang/String;
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getBoundToSpecificSecureUserId()J
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getEncryptionPaddings()[Ljava/lang/String;
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getKeySize()I
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getKeystoreAlias()Ljava/lang/String;
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getPurposes()I
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getSignaturePaddings()[Ljava/lang/String;
-HSPLandroid/security/keystore/KeyGenParameterSpec;->getUserAuthenticationValidityDurationSeconds()I
-HSPLandroid/security/keystore/KeyGenParameterSpec;-><init>(Ljava/lang/String;IILjava/security/spec/AlgorithmParameterSpec;Ljavax/security/auth/x500/X500Principal;Ljava/math/BigInteger;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;Ljava/util/Date;I[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;ZZIZ[BZZZZZZ)V
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isDigestsSpecified()Z
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isRandomizedEncryptionRequired()Z
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isUnlockedDeviceRequired()Z
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserAuthenticationRequired()Z
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserConfirmationRequired()Z
-HSPLandroid/security/keystore/KeyGenParameterSpec;->isUserPresenceRequired()Z
-HSPLandroid/security/keystore/recovery/RecoveryController;->getInstance(Landroid/content/Context;)Landroid/security/keystore/recovery/RecoveryController;
-HSPLandroid/security/keystore/recovery/RecoveryController;->getRecoverySecretTypes()[I
-HSPLandroid/security/keystore/recovery/RecoveryController;-><init>(Lcom/android/internal/widget/ILockSettings;Landroid/security/KeyStore;)V
-HSPLandroid/security/keystore/recovery/RecoveryController;->initRecoveryService(Ljava/lang/String;[B[B)V
-HSPLandroid/security/keystore/recovery/RecoveryController;->setRecoverySecretTypes([I)V
-HSPLandroid/security/keystore/recovery/RecoveryController;->setServerParams([B)V
-HSPLandroid/security/keystore/recovery/RecoveryController;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V
-HSPLandroid/service/dreams/IDreamManager$Stub$Proxy;->forceAmbientDisplayEnabled(Z)V
-HSPLandroid/service/euicc/GetEuiccProfileInfoListResult;->getResult()I
-HSPLandroid/service/gatekeeper/IGateKeeperService$Stub$Proxy;->getSecureUserId(I)J
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->addSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->connect(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->disconnect(Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscriptionDeprecated(Ljava/lang/String;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub$Proxy;->removeSubscription(Ljava/lang/String;Landroid/os/IBinder;Landroid/service/media/IMediaBrowserServiceCallbacks;)V
-HSPLandroid/service/media/IMediaBrowserService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/media/IMediaBrowserService;
-HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;-><init>()V
-HSPLandroid/service/media/IMediaBrowserServiceCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/service/notification/INotificationListener$Stub;-><init>()V
-HSPLandroid/service/notification/NotificationListenerService$MyHandler;-><init>(Landroid/service/notification/NotificationListenerService;Landroid/os/Looper;)V
-HSPLandroid/service/notification/NotificationListenerService$NotificationListenerWrapper;-><init>(Landroid/service/notification/NotificationListenerService;)V
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->canBubble()Z
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->canShowBadge()Z
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getKey()Ljava/lang/String;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getLastAudiblyAlertedMillis()J
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getOverrideGroupKey()Ljava/lang/String;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getRank()I
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSmartActions()Ljava/util/List;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSmartReplies()Ljava/util/List;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSnoozeCriteria()Ljava/util/List;
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getSuppressedVisualEffects()I
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getUserSentiment()I
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->getVisibilityOverride()I
-HSPLandroid/service/notification/NotificationListenerService$Ranking;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->isAmbient()Z
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->isSuspended()Z
-HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/NotificationListenerService$RankingMap;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;-><init>(Landroid/os/Parcel;Landroid/service/notification/NotificationListenerService$1;)V
-HSPLandroid/service/notification/NotificationListenerService$RankingMap;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/service/notification/NotificationListenerService$Ranking;->populate(Landroid/service/notification/NotificationListenerService$Ranking;)V
-HSPLandroid/service/notification/NotificationListenerService;->attachBaseContext(Landroid/content/Context;)V
-HSPLandroid/service/notification/NotificationListenerService;->getCurrentRanking()Landroid/service/notification/NotificationListenerService$RankingMap;
-HSPLandroid/service/notification/NotificationListenerService;->getNotificationInterface()Landroid/app/INotificationManager;
-HSPLandroid/service/notification/NotificationListenerService;->onBind(Landroid/content/Intent;)Landroid/os/IBinder;
-HSPLandroid/service/notification/NotificationListenerService;->onListenerConnected()V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;)V
-HSPLandroid/service/notification/NotificationListenerService;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V
-HSPLandroid/service/notification/NotificationListenerService;->registerAsSystemService(Landroid/content/Context;Landroid/content/ComponentName;I)V
-HSPLandroid/service/notification/NotificationListenerService;->requestRebind(Landroid/content/ComponentName;)V
-HSPLandroid/service/notification/NotificationListenerService;->setNotificationsShown([Ljava/lang/String;)V
-HSPLandroid/service/notification/NotificationRankingUpdate;->getRankingMap()Landroid/service/notification/NotificationListenerService$RankingMap;
-HSPLandroid/service/notification/StatusBarNotification;->getPackageContext(Landroid/content/Context;)Landroid/content/Context;
-HSPLandroid/service/notification/StatusBarNotification;->isClearable()Z
-HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Landroid/service/notification/ZenModeConfig;
-HSPLandroid/service/notification/ZenModeConfig$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/service/notification/ZenModeConfig;->getDescription(Landroid/content/Context;ZLandroid/service/notification/ZenModeConfig;Z)Ljava/lang/String;
-HSPLandroid/service/notification/ZenModeConfig;->isZenOverridingRinger(ILandroid/app/NotificationManager$Policy;)Z
-HSPLandroid/service/persistentdata/IPersistentDataBlockService$Stub;->asInterface(Landroid/os/IBinder;)Landroid/service/persistentdata/IPersistentDataBlockService;
-HSPLandroid/service/persistentdata/PersistentDataBlockManager;->getMaximumDataBlockSize()J
-HSPLandroid/service/persistentdata/PersistentDataBlockManager;-><init>(Landroid/service/persistentdata/IPersistentDataBlockService;)V
-HSPLandroid/service/persistentdata/PersistentDataBlockManager;->read()[B
-HSPLandroid/service/persistentdata/PersistentDataBlockManager;->write([B)I
-HSPLandroid/service/textclassifier/TextClassifierService;->getDefaultTextClassifierImplementation(Landroid/content/Context;)Landroid/view/textclassifier/TextClassifier;
-HSPLandroid/service/wallpaper/IWallpaperService$Stub;-><init>()V
-HSPLandroid/system/NetlinkSocketAddress;-><init>(II)V
-HSPLandroid/system/Os;->bind(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HSPLandroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/InetAddress;I)V
-HSPLandroid/system/Os;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
-HSPLandroid/system/Os;->getsockname(Ljava/io/FileDescriptor;)Ljava/net/SocketAddress;
-HSPLandroid/system/Os;->prctl(IJJJJ)I
-HSPLandroid/system/Os;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I
-HSPLandroid/system/Os;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V
-HSPLandroid/system/Os;->setsockoptInt(Ljava/io/FileDescriptor;III)V
-HSPLandroid/system/PacketSocketAddress;-><init>(I[B)V
-HSPLandroid/system/PacketSocketAddress;-><init>(SISB[B)V
-HSPLandroid/system/PacketSocketAddress;-><init>(SI)V
-HSPLandroid/system/StructGroupReq;-><init>(ILjava/net/InetAddress;)V
-HSPLandroid/system/StructTimeval;-><init>(JJ)V
-HSPLandroid/telecom/TelecomManager;->getTelecomService()Lcom/android/internal/telecom/ITelecomService;
-HSPLandroid/telecom/TelecomManager;->isServiceConnected()Z
-HSPLandroid/telecom/TelecomManager;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
-HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/CellIdentity;
-HSPLandroid/telephony/CellIdentity$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/CellIdentity;->getOperatorAlphaLong()Ljava/lang/CharSequence;
-HSPLandroid/telephony/CellIdentity;->getOperatorAlphaShort()Ljava/lang/CharSequence;
-HSPLandroid/telephony/CellIdentity;->inRangeOrUnavailable(III)I
-HSPLandroid/telephony/CellIdentityLte;->createFromParcelBody(Landroid/os/Parcel;)Landroid/telephony/CellIdentityLte;
-HSPLandroid/telephony/CellIdentityLte;->getCi()I
-HSPLandroid/telephony/CellIdentityLte;->getMnc()I
-HSPLandroid/telephony/CellIdentityLte;->getPci()I
-HSPLandroid/telephony/CellIdentityLte;->getTac()I
-HSPLandroid/telephony/CellIdentityLte;-><init>(IIIIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/telephony/CellIdentityLte;-><init>(Landroid/hardware/radio/V1_0/CellIdentityLte;)V
-HSPLandroid/telephony/CellIdentity;->setOperatorAlphaLong(Ljava/lang/String;)V
-HSPLandroid/telephony/CellIdentity;->setOperatorAlphaShort(Ljava/lang/String;)V
-HSPLandroid/telephony/CellInfo;->create(Landroid/hardware/radio/V1_0/CellInfo;)Landroid/telephony/CellInfo;
-HSPLandroid/telephony/CellInfo;-><init>(Landroid/hardware/radio/V1_0/CellInfo;)V
-HSPLandroid/telephony/CellInfoLte;->getCellIdentity()Landroid/telephony/CellIdentityLte;
-HSPLandroid/telephony/CellInfoLte;->getCellSignalStrength()Landroid/telephony/CellSignalStrengthLte;
-HSPLandroid/telephony/CellInfoLte;-><init>(Landroid/hardware/radio/V1_0/CellInfo;)V
-HSPLandroid/telephony/CellSignalStrengthCdma;-><init>(Landroid/hardware/radio/V1_0/CdmaSignalStrength;Landroid/hardware/radio/V1_0/EvdoSignalStrength;)V
-HSPLandroid/telephony/CellSignalStrength;->getRssiDbmFromAsu(I)I
-HSPLandroid/telephony/CellSignalStrengthGsm;-><init>(Landroid/hardware/radio/V1_0/GsmSignalStrength;)V
-HSPLandroid/telephony/CellSignalStrengthGsm;->setDefaultValues()V
-HSPLandroid/telephony/CellSignalStrengthLte;->getTimingAdvance()I
-HSPLandroid/telephony/CellSignalStrengthTdscdma;-><init>(Landroid/hardware/radio/V1_0/TdScdmaSignalStrength;)V
-HSPLandroid/telephony/CellSignalStrengthTdscdma;->setDefaultValues()V
-HSPLandroid/telephony/data/ApnSetting$Builder;->build()Landroid/telephony/data/ApnSetting;
-HSPLandroid/telephony/data/ApnSetting;->getApnTypes()Ljava/util/List;
-HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(IZZZLandroid/telephony/LteVopsSupportInfo;Z)V
-HSPLandroid/telephony/DataSpecificRegistrationInfo;-><init>(Landroid/telephony/DataSpecificRegistrationInfo;)V
-HSPLandroid/telephony/emergency/EmergencyNumber;->compareTo(Landroid/telephony/emergency/EmergencyNumber;)I
-HSPLandroid/telephony/emergency/EmergencyNumber;->getCountryIso()Ljava/lang/String;
-HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyCallRouting()I
-HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyNumberSourceBitmask()I
-HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyServiceCategoryBitmask()I
-HSPLandroid/telephony/emergency/EmergencyNumber;->getEmergencyUrns()Ljava/util/List;
-HSPLandroid/telephony/emergency/EmergencyNumber;->getMnc()Ljava/lang/String;
-HSPLandroid/telephony/emergency/EmergencyNumber;->getNumber()Ljava/lang/String;
-HSPLandroid/telephony/emergency/EmergencyNumber;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/util/List;II)V
-HSPLandroid/telephony/emergency/EmergencyNumber;->mergeSameEmergencyNumbers(Landroid/telephony/emergency/EmergencyNumber;Landroid/telephony/emergency/EmergencyNumber;)Landroid/telephony/emergency/EmergencyNumber;
-HSPLandroid/telephony/IccOpenLogicalChannelResponse;-><init>(II[B)V
-HSPLandroid/telephony/IccOpenLogicalChannelResponse;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/telephony/ims/aidl/IImsConfig$Stub;-><init>()V
-HSPLandroid/telephony/ims/feature/ImsFeature;->initialize(Landroid/content/Context;I)V
-HSPLandroid/telephony/ims/feature/MmTelFeature;->getBinder()Landroid/telephony/ims/aidl/IImsMmTelFeature;
-HSPLandroid/telephony/ims/feature/MmTelFeature;->getSmsImplementation()Landroid/telephony/ims/stub/ImsSmsImplBase;
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase$ImsConfigStub;-><init>(Landroid/telephony/ims/stub/ImsConfigImplBase;)V
-HSPLandroid/telephony/ims/stub/ImsConfigImplBase;-><init>()V
-HSPLandroid/telephony/ims/stub/ImsRegistrationImplBase;->getBinder()Landroid/telephony/ims/aidl/IImsRegistration;
-HSPLandroid/telephony/ims/stub/ImsSmsImplBase;->onReady()V
-HSPLandroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;->setLogAsInfo(Z)Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery$Builder;
-HSPLandroid/telephony/LocationAccessPolicy;->logError(Landroid/content/Context;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;Ljava/lang/String;)V
-HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->build()Landroid/telephony/NetworkRegistrationInfo;
-HSPLandroid/telephony/NetworkRegistrationInfo$Builder;-><init>()V
-HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setDomain(I)Landroid/telephony/NetworkRegistrationInfo$Builder;
-HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setRegistrationState(I)Landroid/telephony/NetworkRegistrationInfo$Builder;
-HSPLandroid/telephony/NetworkRegistrationInfo$Builder;->setTransportType(I)Landroid/telephony/NetworkRegistrationInfo$Builder;
-HSPLandroid/telephony/NetworkRegistrationInfo;->getCellIdentity()Landroid/telephony/CellIdentity;
-HSPLandroid/telephony/NetworkRegistrationInfo;->getDomain()I
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;IZZZLandroid/telephony/LteVopsSupportInfo;Z)V
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(IIIIIZLjava/util/List;Landroid/telephony/CellIdentity;Landroid/telephony/NetworkRegistrationInfo$1;)V
-HSPLandroid/telephony/NetworkRegistrationInfo;-><init>(Landroid/telephony/NetworkRegistrationInfo;)V
-HSPLandroid/telephony/NetworkRegistrationInfo;->updateNrState(Landroid/telephony/DataSpecificRegistrationInfo;)V
-HSPLandroid/telephony/PhoneNumberUtils;->charToBCD(CI)I
-HSPLandroid/telephony/PhoneNumberUtils;->isEmergencyNumberInternal(ILjava/lang/String;Ljava/lang/String;Z)Z
-HSPLandroid/telephony/PhoneNumberUtils;->networkPortionToCalledPartyBCD(Ljava/lang/String;)[B
-HSPLandroid/telephony/PhoneNumberUtils;->numberToCalledPartyBCDHelper(Ljava/lang/String;ZI)[B
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$52(Landroid/telephony/PhoneStateListener;I)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onActiveDataSubIdChanged$53$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;I)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCarrierNetworkChange$40(Landroid/telephony/PhoneStateListener;Z)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->lambda$onCarrierNetworkChange$41$PhoneStateListener$IPhoneStateListenerStub(Landroid/telephony/PhoneStateListener;Z)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onActiveDataSubIdChanged(I)V
-HSPLandroid/telephony/PhoneStateListener$IPhoneStateListenerStub;->onCarrierNetworkChange(Z)V
-HSPLandroid/telephony/PhoneStateListener;->onCallStateChanged(ILjava/lang/String;)V
-HSPLandroid/telephony/ServiceState;->bearerBitmapHasCdma(I)Z
-HSPLandroid/telephony/ServiceState;->getChannelNumber()I
-HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfoListForDomain(I)Ljava/util/List;
-HSPLandroid/telephony/ServiceState;->getNetworkRegistrationInfoList()Ljava/util/List;
-HSPLandroid/telephony/ServiceState;->getOperatorAlphaShort()Ljava/lang/String;
-HSPLandroid/telephony/ServiceState;->init()V
-HSPLandroid/telephony/ServiceState;->networkBitmaskHasAccessNetworkType(II)Z
-HSPLandroid/telephony/ServiceState;->networkTypeToAccessNetworkType(I)I
-HSPLandroid/telephony/ServiceState;->setIwlanPreferred(Z)V
-HSPLandroid/telephony/ServiceState;->setOperatorAlphaLongRaw(Ljava/lang/String;)V
-HSPLandroid/telephony/ServiceState;->setOperatorAlphaShortRaw(Ljava/lang/String;)V
-HSPLandroid/telephony/SignalStrength;-><init>(Landroid/hardware/radio/V1_0/SignalStrength;)V
-HSPLandroid/telephony/SignalStrength;-><init>(Landroid/telephony/CellSignalStrengthCdma;Landroid/telephony/CellSignalStrengthGsm;Landroid/telephony/CellSignalStrengthWcdma;Landroid/telephony/CellSignalStrengthTdscdma;Landroid/telephony/CellSignalStrengthLte;Landroid/telephony/CellSignalStrengthNr;)V
-HSPLandroid/telephony/SubscriptionInfo;->equals(Ljava/lang/Object;)Z
-HSPLandroid/telephony/SubscriptionInfo;->getDataRoaming()I
-HSPLandroid/telephony/SubscriptionInfo;-><init>(ILjava/lang/String;ILjava/lang/CharSequence;Ljava/lang/CharSequence;IILjava/lang/String;ILandroid/graphics/Bitmap;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z[Landroid/telephony/UiccAccessRule;Ljava/lang/String;IZLjava/lang/String;ZIIILjava/lang/String;)V
-HSPLandroid/telephony/SubscriptionManager;->isUsableSubscriptionId(I)Z
-HSPLandroid/telephony/TelephonyManager;->getDeviceId()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getGroupIdLevel1(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getITelephony()Lcom/android/internal/telephony/ITelephony;
-HSPLandroid/telephony/TelephonyManager;->getLine1AlphaTag(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getLine1AlphaTag()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getNetworkOperator(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getNetworkType(I)I
-HSPLandroid/telephony/TelephonyManager;->getOpPackageName()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getPhoneAccountHandleForSubscriptionId(I)Landroid/telecom/PhoneAccountHandle;
-HSPLandroid/telephony/TelephonyManager;->getSimSerialNumber(I)Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getSimSerialNumber()Ljava/lang/String;
-HSPLandroid/telephony/TelephonyManager;->getSubId()I
-HSPLandroid/telephony/TelephonyManager;->getSubscriberInfo()Lcom/android/internal/telephony/IPhoneSubInfo;
-HSPLandroid/telephony/VisualVoicemailSmsFilterSettings$1;->createFromParcel(Landroid/os/Parcel;)Landroid/telephony/VisualVoicemailSmsFilterSettings;
-HSPLandroid/telephony/VisualVoicemailSmsFilterSettings$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/telephony/VisualVoicemailSmsFilterSettings;-><init>(Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;Landroid/telephony/VisualVoicemailSmsFilterSettings$1;)V
-HSPLandroid/telephony/VisualVoicemailSmsFilterSettings;-><init>(Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;)V
-HSPLandroid/telephony/VoiceSpecificRegistrationInfo;-><init>(Landroid/telephony/VoiceSpecificRegistrationInfo;)V
-HSPLandroid/text/format/DateFormat;->hasSeconds(Ljava/lang/CharSequence;)Z
-HSPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJI)Ljava/lang/CharSequence;
-HSPLandroid/text/format/DateUtils;->getRelativeTimeSpanString(JJJ)Ljava/lang/CharSequence;
-HSPLandroid/text/InputFilter$LengthFilter;->filter(Ljava/lang/CharSequence;IILandroid/text/Spanned;II)Ljava/lang/CharSequence;
-HSPLandroid/text/InputFilter$LengthFilter;-><init>(I)V
-HSPLandroid/text/StaticLayout$Builder;->setAlignment(Landroid/text/Layout$Alignment;)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setBreakStrategy(I)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setEllipsizedWidth(I)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setEllipsize(Landroid/text/TextUtils$TruncateAt;)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setHyphenationFrequency(I)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setIncludePad(Z)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setIndents([I[I)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setLineSpacing(FF)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setMaxLines(I)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setTextDirection(Landroid/text/TextDirectionHeuristic;)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/StaticLayout$Builder;->setUseLineSpacingFromFallbacks(Z)Landroid/text/StaticLayout$Builder;
-HSPLandroid/text/TextUtils;->ellipsize(Ljava/lang/CharSequence;Landroid/text/TextPaint;FLandroid/text/TextUtils$TruncateAt;)Ljava/lang/CharSequence;
-HSPLandroid/text/TextUtils;->emptyIfNull(Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/transition/Transition;->addTarget(I)Landroid/transition/Transition;
-HSPLandroid/transition/Transition;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/Transition;
-HSPLandroid/transition/TransitionSet;->setDuration(J)Landroid/transition/TransitionSet;
-HSPLandroid/transition/TransitionSet;->setInterpolator(Landroid/animation/TimeInterpolator;)Landroid/transition/TransitionSet;
-HSPLandroid/transition/Visibility;-><init>()V
-HSPLandroid/util/ArrayMap;->containsValue(Ljava/lang/Object;)Z
-HSPLandroid/util/ArraySet;->removeAll(Landroid/util/ArraySet;)Z
-HSPLandroid/util/EventLog$Event;->getProcessId()I
-HSPLandroid/util/EventLog$Event;->getTag()I
-HSPLandroid/util/EventLog$Event;->getTimeNanos()J
-HSPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Float;)V
-HSPLandroid/util/FloatProperty;->set(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/util/IntProperty;-><init>(Ljava/lang/String;)V
-HSPLandroid/util/IntProperty;->set(Ljava/lang/Object;Ljava/lang/Integer;)V
-HSPLandroid/util/IntProperty;->set(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLandroid/util/LongSparseArray;->indexOfValue(Ljava/lang/Object;)I
-HSPLandroid/util/MathUtils;->constrain(FFF)F
-HSPLandroid/util/MathUtils;->fitRect(Landroid/graphics/Rect;I)V
-HSPLandroid/util/PathParser$PathData;->setPathData(Landroid/util/PathParser$PathData;)V
-HSPLandroid/util/PathParser;->access$300(JJ)V
-HSPLandroid/util/Range;->clamp(Ljava/lang/Comparable;)Ljava/lang/Comparable;
-HSPLandroid/util/StatsLogInternal;->write(ILandroid/os/WorkSource;IZZZ)V
-HSPLandroid/view/accessibility/AccessibilityManager;->getServiceLocked()Landroid/view/accessibility/IAccessibilityManager;
-HSPLandroid/view/accessibility/AccessibilityManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
-HSPLandroid/view/accessibility/IAccessibilityInteractionConnection$Stub;-><init>()V
-HSPLandroid/view/accessibility/IAccessibilityManager$Stub$Proxy;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
-HSPLandroid/view/animation/BaseInterpolator;-><init>()V
-HSPLandroid/view/animation/OvershootInterpolator;-><init>(F)V
-HSPLandroid/view/animation/PathInterpolator;-><init>(Landroid/graphics/Path;)V
-HSPLandroid/view/CompositionSamplingListener;-><init>(Ljava/util/concurrent/Executor;)V
-HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/DisplayAddress$Physical;
-HSPLandroid/view/DisplayAddress$Physical$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/DisplayAddress$Physical;-><init>(JLandroid/view/DisplayAddress$1;)V
-HSPLandroid/view/DisplayAddress$Physical;-><init>(J)V
-HSPLandroid/view/DisplayAddress;-><init>()V
-HSPLandroid/view/Display;->getAppVsyncOffsetNanos()J
-HSPLandroid/view/Display;->getCurrentSizeRange(Landroid/graphics/Point;Landroid/graphics/Point;)V
-HSPLandroid/view/Display;->getPresentationDeadlineNanos()J
-HSPLandroid/view/Display;->updateDisplayInfoLocked()V
-HSPLandroid/view/GestureDetector;->recordGestureClassification(I)V
-HSPLandroid/view/GestureExclusionTracker;->computeChangedRects()Ljava/util/List;
-HSPLandroid/view/GestureExclusionTracker;->updateRectsForView(Landroid/view/View;)V
-HSPLandroid/view/IDockedStackListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IDockedStackListener$Stub;-><init>()V
-HSPLandroid/view/IDockedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/InputDevice$MotionRange;->getAxis()I
-HSPLandroid/view/InputDevice$MotionRange;->getSource()I
-HSPLandroid/view/InputDevice;->getMotionRanges()Ljava/util/List;
-HSPLandroid/view/InputDevice;->getSources()I
-HSPLandroid/view/InputDevice;->hasKeys([I)[Z
-HSPLandroid/view/inputmethod/InputMethodSubtype;->isAuxiliary()Z
-HSPLandroid/view/InsetsController;->calculateInsets(ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;I)Landroid/view/WindowInsets;
-HSPLandroid/view/InsetsSource;->calculateInsets(Landroid/graphics/Rect;Z)Landroid/graphics/Insets;
-HSPLandroid/view/InsetsSource;->isVisible()Z
-HSPLandroid/view/InsetsState;->calculateInsets(Landroid/graphics/Rect;ZZLandroid/view/DisplayCutout;Landroid/graphics/Rect;Landroid/graphics/Rect;ILandroid/util/SparseIntArray;)Landroid/view/WindowInsets;
-HSPLandroid/view/InsetsState;->processSourceAsPublicType(Landroid/view/InsetsSource;[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[ZLandroid/graphics/Insets;I)V
-HSPLandroid/view/InsetsState;->processSource(Landroid/view/InsetsSource;Landroid/graphics/Rect;Z[Landroid/graphics/Insets;Landroid/util/SparseIntArray;[Z)V
-HSPLandroid/view/InsetsState;->toPublicType(I)I
-HSPLandroid/view/IPinnedStackController$Stub;->asInterface(Landroid/os/IBinder;)Landroid/view/IPinnedStackController;
-HSPLandroid/view/IPinnedStackListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IPinnedStackListener$Stub;-><init>()V
-HSPLandroid/view/IPinnedStackListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IRotationWatcher$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IRotationWatcher$Stub;-><init>()V
-HSPLandroid/view/IWallpaperVisibilityListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/view/IWallpaperVisibilityListener$Stub;-><init>()V
-HSPLandroid/view/IWallpaperVisibilityListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/view/IWindowManager$Stub$Proxy;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;ILandroid/view/InputChannel;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->destroyInputConsumer(Ljava/lang/String;I)Z
-HSPLandroid/view/IWindowManager$Stub$Proxy;->freezeRotation(I)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->getDockedStackSide()I
-HSPLandroid/view/IWindowManager$Stub$Proxy;->getInitialDisplaySize(ILandroid/graphics/Point;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->getStableInsets(ILandroid/graphics/Rect;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
-HSPLandroid/view/IWindowManager$Stub$Proxy;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->setShelfHeight(ZI)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->statusBarVisibilityChanged(II)V
-HSPLandroid/view/IWindowManager$Stub$Proxy;->watchRotation(Landroid/view/IRotationWatcher;I)I
-HSPLandroid/view/IWindowSession$Stub$Proxy;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
-HSPLandroid/view/IWindowSession$Stub$Proxy;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V
-HSPLandroid/view/LayoutInflater;->createView(Ljava/lang/String;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/view/View;
-HSPLandroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJ)V
-HSPLandroid/view/RemoteAnimationAdapter;-><init>(Landroid/view/IRemoteAnimationRunner;JJZ)V
-HSPLandroid/view/RemoteAnimationAdapter;->writeToParcel(Landroid/os/Parcel;I)V
-HSPLandroid/view/SurfaceControl$1;->createFromParcel(Landroid/os/Parcel;)Landroid/view/SurfaceControl;
-HSPLandroid/view/SurfaceControl$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLandroid/view/SurfaceControl$Transaction;->deferTransactionUntilSurface(Landroid/view/SurfaceControl;Landroid/view/Surface;J)Landroid/view/SurfaceControl$Transaction;
-HSPLandroid/view/SurfaceControl;->access$2700(JJJJ)V
-HSPLandroid/view/SurfaceControl;->access$800(Landroid/view/SurfaceControl;)V
-HSPLandroid/view/SurfaceControl;->checkNotReleased()V
-HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;Landroid/view/SurfaceControl$1;)V
-HSPLandroid/view/SurfaceControl;-><init>(Landroid/os/Parcel;)V
-HSPLandroid/view/textclassifier/ConfigParser;->getBoolean(Ljava/lang/String;Z)Z
-HSPLandroid/view/textclassifier/ConfigParser;->getInt(Ljava/lang/String;I)I
-HSPLandroid/view/textclassifier/ConfigParser;->getLegacySettings()Landroid/util/KeyValueListParser;
-HSPLandroid/view/textclassifier/TextClassificationManager;->getApplicationContext()Landroid/content/Context;
-HSPLandroid/view/textclassifier/TextClassificationManager;->getTextClassifier(I)Landroid/view/textclassifier/TextClassifier;
-HSPLandroid/view/textclassifier/TextClassificationManager;->lambda$getSettings$2$TextClassificationManager()Ljava/lang/String;
-HSPLandroid/view/ThreadedRenderer;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V
-HSPLandroid/view/View$10;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$10;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$1;-><init>(Landroid/view/View;)V
-HSPLandroid/view/View$1;->positionChanged(JIIII)V
-HSPLandroid/view/View$7;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$7;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/View$8;->get(Landroid/view/View;)Ljava/lang/Float;
-HSPLandroid/view/View$8;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/view/View$8;->setValue(Landroid/view/View;F)V
-HSPLandroid/view/View$8;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/view/View$ListenerInfo;->access$1200(Landroid/view/View$ListenerInfo;)Ljava/util/List;
-HSPLandroid/view/View$ListenerInfo;->access$1202(Landroid/view/View$ListenerInfo;Ljava/util/List;)Ljava/util/List;
-HSPLandroid/view/View$TransformationInfo;->access$2300(Landroid/view/View$TransformationInfo;)F
-HSPLandroid/view/View$TransformationInfo;->access$2302(Landroid/view/View$TransformationInfo;F)F
-HSPLandroid/view/View;->canReceivePointerEvents()Z
-HSPLandroid/view/View;->checkForLongClick(JFFI)V
-HSPLandroid/view/ViewConfiguration;->getScrollBarFadeDuration()I
-HSPLandroid/view/ViewConfiguration;->getScrollDefaultDelay()I
-HSPLandroid/view/ViewConfiguration;->getScrollFriction()F
-HSPLandroid/view/View;->forceHasOverlappingRendering(Z)V
-HSPLandroid/view/View;->getClipBounds()Landroid/graphics/Rect;
-HSPLandroid/view/View;->getLocalVisibleRect(Landroid/graphics/Rect;)Z
-HSPLandroid/view/View;->getSystemGestureExclusionRects()Ljava/util/List;
-HSPLandroid/view/ViewGroup;->addTransientView(Landroid/view/View;I)V
-HSPLandroid/view/ViewGroup;->getTransientViewCount()I
-HSPLandroid/view/ViewGroup;->getTransientView(I)Landroid/view/View;
-HSPLandroid/view/ViewGroup;->removeTransientView(Landroid/view/View;)V
-HSPLandroid/view/View;->initScrollCache()V
-HSPLandroid/view/View;->isPaddingRelative()Z
-HSPLandroid/view/View;->isVerticalFadingEdgeEnabled()Z
-HSPLandroid/view/View;->postUpdateSystemGestureExclusionRects()V
-HSPLandroid/view/ViewPropertyAnimator;->withLayer()Landroid/view/ViewPropertyAnimator;
-HSPLandroid/view/ViewRootImpl;->getView()Landroid/view/View;
-HSPLandroid/view/ViewRootImpl;->registerRtFrameCallback(Landroid/graphics/HardwareRenderer$FrameDrawingCallback;)V
-HSPLandroid/view/ViewRootImpl;->systemGestureExclusionChanged()V
-HSPLandroid/view/ViewRootImpl;->updateSystemGestureExclusionRectsForView(Landroid/view/View;)V
-HSPLandroid/view/View;->setAccessibilityPaneTitle(Ljava/lang/CharSequence;)V
-HSPLandroid/view/View;->setAlphaInternal(F)V
-HSPLandroid/view/View;->setForceDarkAllowed(Z)V
-HSPLandroid/view/View;->setHapticFeedbackEnabled(Z)V
-HSPLandroid/view/View;->setSystemGestureExclusionRects(Ljava/util/List;)V
-HSPLandroid/view/View;->setVerticalFadingEdgeEnabled(Z)V
-HSPLandroid/view/ViewStub;->setVisibilityAsync(I)Ljava/lang/Runnable;
-HSPLandroid/view/ViewTreeObserver;->dispatchOnSystemGestureExclusionRectsChanged(Ljava/util/List;)V
-HSPLandroid/view/View;->updateSystemGestureExclusionRects()V
-HSPLandroid/view/WindowInsets$Type;->compatSystemInsets()I
-HSPLandroid/view/WindowInsets;->assignCompatInsets([Landroid/graphics/Insets;Landroid/graphics/Rect;)V
-HSPLandroid/view/WindowInsets;->getMandatorySystemGestureInsets()Landroid/graphics/Insets;
-HSPLandroid/view/WindowInsets;->getStableInsets()Landroid/graphics/Insets;
-HSPLandroid/view/WindowInsets;->getStableInsetTop()I
-HSPLandroid/view/WindowInsets;->getTappableElementInsets()Landroid/graphics/Insets;
-HSPLandroid/view/WindowManager$LayoutParams;-><init>(IIIIIII)V
-HSPLandroid/view/WindowManager$LayoutParams;-><init>(IIIII)V
-HSPLandroid/view/Window;->setOnWindowDismissedCallback(Landroid/view/Window$OnWindowDismissedCallback;)V
-HSPLandroid/view/Window;->setWindowControllerCallback(Landroid/view/Window$WindowControllerCallback;)V
-HSPLandroid/widget/AbsSeekBar;->setThumbTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/AbsSeekBar;->updateGestureExclusionRects()V
-HSPLandroid/widget/ActionMenuPresenter$2;->onViewAttachedToWindow(Landroid/view/View;)V
-HSPLandroid/widget/Button;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/ImageView;->access$002(Landroid/widget/ImageView;Landroid/net/Uri;)Landroid/net/Uri;
-HSPLandroid/widget/ImageView;->access$102(Landroid/widget/ImageView;I)I
-HSPLandroid/widget/ImageView;->setImageIconAsync(Landroid/graphics/drawable/Icon;)Ljava/lang/Runnable;
-HSPLandroid/widget/ImageView;->setImageLevel(I)V
-HSPLandroid/widget/ProgressBar$1;->get(Landroid/widget/ProgressBar;)Ljava/lang/Float;
-HSPLandroid/widget/ProgressBar$1;->get(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/widget/ProgressBar$1;->setValue(Landroid/widget/ProgressBar;F)V
-HSPLandroid/widget/ProgressBar$1;->setValue(Ljava/lang/Object;F)V
-HSPLandroid/widget/ProgressBar;->access$700(Landroid/widget/ProgressBar;IF)V
-HSPLandroid/widget/ProgressBar;->access$800(Landroid/widget/ProgressBar;)F
-HSPLandroid/widget/ProgressBar;->access$802(Landroid/widget/ProgressBar;F)F
-HSPLandroid/widget/ProgressBar;->applyProgressBackgroundTint()V
-HSPLandroid/widget/ProgressBar;->getTintTarget(IZ)Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/ProgressBar;->setProgressBackgroundTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/ProgressBar;->setProgress(IZ)V
-HSPLandroid/widget/ProgressBar;->setProgressTintList(Landroid/content/res/ColorStateList;)V
-HSPLandroid/widget/RelativeLayout$LayoutParams;-><init>(Landroid/view/ViewGroup$MarginLayoutParams;)V
-HSPLandroid/widget/RelativeLayout$LayoutParams;->removeRule(I)V
-HSPLandroid/widget/RelativeLayout;->generateLayoutParams(Landroid/view/ViewGroup$LayoutParams;)Landroid/view/ViewGroup$LayoutParams;
-HSPLandroid/widget/RelativeLayout;->getGravity()I
-HSPLandroid/widget/RemoteViews$1;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
-HSPLandroid/widget/RemoteViews$Action;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action;
-HSPLandroid/widget/RemoteViews$Action;-><init>(Landroid/widget/RemoteViews$1;)V
-HSPLandroid/widget/RemoteViews$Action;-><init>()V
-HSPLandroid/widget/RemoteViews$BitmapCache;-><init>()V
-HSPLandroid/widget/RemoteViews$LayoutParamAction;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
-HSPLandroid/widget/RemoteViews$LayoutParamAction;-><init>(III)V
-HSPLandroid/widget/RemoteViews$LayoutParamAction;->resolveDimenPixelOffset(Landroid/view/View;I)I
-HSPLandroid/widget/RemoteViews$ReflectionAction;->initActionAsync(Landroid/widget/RemoteViews$ViewTree;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$Action;
-HSPLandroid/widget/RemoteViews$ReflectionAction;-><init>(Landroid/widget/RemoteViews;ILjava/lang/String;ILjava/lang/Object;)V
-HSPLandroid/widget/RemoteViews$RemoteResponse;->access$500(Landroid/widget/RemoteViews$RemoteResponse;)Landroid/app/PendingIntent;
-HSPLandroid/widget/RemoteViews$RuntimeAction;-><init>(Landroid/widget/RemoteViews$1;)V
-HSPLandroid/widget/RemoteViews$RuntimeAction;-><init>()V
-HSPLandroid/widget/RemoteViews$SetDrawableTint;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
-HSPLandroid/widget/RemoteViews$SetDrawableTint;-><init>(Landroid/widget/RemoteViews;IZILandroid/graphics/PorterDuff$Mode;)V
-HSPLandroid/widget/RemoteViews$SetOnClickResponse;->apply(Landroid/view/View;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnClickHandler;)V
-HSPLandroid/widget/RemoteViews;->access$1100(Landroid/widget/RemoteViews;Landroid/widget/RemoteViews;)V
-HSPLandroid/widget/RemoteViews;->access$1500(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask;
-HSPLandroid/widget/RemoteViews;->access$2400(Landroid/widget/RemoteViews;Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View;
-HSPLandroid/widget/RemoteViews;->access$2600(Landroid/widget/RemoteViews;)Ljava/util/ArrayList;
-HSPLandroid/widget/RemoteViews;->access$700(Landroid/widget/RemoteViews;Landroid/view/View;Ljava/lang/String;Ljava/lang/Class;Z)Ljava/lang/invoke/MethodHandle;
-HSPLandroid/widget/RemoteViews;->access$900()Landroid/widget/RemoteViews$Action;
-HSPLandroid/widget/RemoteViews;->addAction(Landroid/widget/RemoteViews$Action;)V
-HSPLandroid/widget/RemoteViews;->addView(ILandroid/widget/RemoteViews;)V
-HSPLandroid/widget/RemoteViews;->applyAsync(Landroid/content/Context;Landroid/view/ViewGroup;Ljava/util/concurrent/Executor;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/os/CancellationSignal;
-HSPLandroid/widget/RemoteViews;->configureRemoteViewsAsChild(Landroid/widget/RemoteViews;)V
-HSPLandroid/widget/RemoteViews;->getAsyncApplyTask(Landroid/content/Context;Landroid/view/ViewGroup;Landroid/widget/RemoteViews$OnViewAppliedListener;Landroid/widget/RemoteViews$OnClickHandler;)Landroid/widget/RemoteViews$AsyncApplyTask;
-HSPLandroid/widget/RemoteViews;->getRemoteViewsToApply(Landroid/content/Context;)Landroid/widget/RemoteViews;
-HSPLandroid/widget/RemoteViews;->hasLandscapeAndPortraitLayouts()Z
-HSPLandroid/widget/RemoteViews;->inflateView(Landroid/content/Context;Landroid/widget/RemoteViews;Landroid/view/ViewGroup;)Landroid/view/View;
-HSPLandroid/widget/RemoteViews;-><init>(Landroid/content/pm/ApplicationInfo;I)V
-HSPLandroid/widget/RemoteViews;->removeAllViews(I)V
-HSPLandroid/widget/RemoteViews;->setBoolean(ILjava/lang/String;Z)V
-HSPLandroid/widget/RemoteViews;->setDrawableTint(IZILandroid/graphics/PorterDuff$Mode;)V
-HSPLandroid/widget/RemoteViews;->setIcon(ILjava/lang/String;Landroid/graphics/drawable/Icon;)V
-HSPLandroid/widget/RemoteViews;->setImageViewIcon(ILandroid/graphics/drawable/Icon;)V
-HSPLandroid/widget/RemoteViews;->setIntTag(III)V
-HSPLandroid/widget/RemoteViews;->setLong(ILjava/lang/String;J)V
-HSPLandroid/widget/RemoteViews;->setRemoteInputs(I[Landroid/app/RemoteInput;)V
-HSPLandroid/widget/RemoteViews;->setTextColor(II)V
-HSPLandroid/widget/RemoteViews;->setViewLayoutMarginBottomDimen(II)V
-HSPLandroid/widget/RemoteViews;->setViewLayoutMarginEnd(II)V
-HSPLandroid/widget/RemoteViews;->setViewLayoutWidth(II)V
-HSPLandroid/widget/RemoteViews;->startTaskOnExecutor(Landroid/widget/RemoteViews$AsyncApplyTask;Ljava/util/concurrent/Executor;)Landroid/os/CancellationSignal;
-HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;II)V
-HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;I)V
-HSPLandroid/widget/SeekBar;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
-HSPLandroid/widget/TextView;->getCompoundDrawablePadding()I
-HSPLandroid/widget/TextView;->getCompoundDrawables()[Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/TextView;->getCompoundDrawablesRelative()[Landroid/graphics/drawable/Drawable;
-HSPLandroid/widget/TextView;->setCompoundDrawablesRelativeWithIntrinsicBounds(IIII)V
-HSPLandroid/widget/TextView;->setFontFeatureSettings(Ljava/lang/String;)V
-HSPLandroid/widget/TextView;->setLineHeight(I)V
-HSPLandroid/widget/TextView;->setMarqueeRepeatLimit(I)V
-HSPLandroid/widget/Toolbar;->setTitle(I)V
-HSPLandroid/widget/ViewAnimator;->getDisplayedChild()I
-HSPLcom/android/internal/app/AssistUtils;->activeServiceSupportsLaunchFromKeyguard()Z
-HSPLcom/android/internal/app/AssistUtils;->getActiveServiceComponentName()Landroid/content/ComponentName;
-HSPLcom/android/internal/app/AssistUtils;->onLockscreenShown()V
-HSPLcom/android/internal/app/AssistUtils;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
-HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsActiveCallback$Stub;-><init>()V
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;-><init>()V
-HSPLcom/android/internal/app/IAppOpsNotedCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->checkOperationRaw(IILjava/lang/String;)I
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getPackagesForOps([I)Ljava/util/List;
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder;
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Z)I
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/internal/app/IAppOpsService$Stub$Proxy;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanResults(Landroid/os/WorkSource;I)V
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStarted(Landroid/os/WorkSource;Z)V
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteBleScanStopped(Landroid/os/WorkSource;Z)V
-HSPLcom/android/internal/app/IBatteryStats$Stub$Proxy;->noteResetBleScan()V
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->activeServiceSupportsLaunchFromKeyguard()Z
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->getActiveServiceComponentName()Landroid/content/ComponentName;
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->onLockscreenShown()V
-HSPLcom/android/internal/app/IVoiceInteractionManagerService$Stub$Proxy;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
-HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/app/IVoiceInteractionSessionListener$Stub;-><init>()V
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/internal/appwidget/IAppWidgetService$Stub$Proxy;->stopListening(Ljava/lang/String;I)V
-HSPLcom/android/internal/backup/IBackupTransport$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/backup/IBackupTransport$Stub;-><init>()V
-HSPLcom/android/internal/backup/IBackupTransport$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/graphics/SfVsyncFrameCallbackProvider;-><init>()V
-HSPLcom/android/internal/location/ILocationProviderManager$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/location/ILocationProviderManager;
-HSPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Lcom/android/internal/location/ProviderRequest;
-HSPLcom/android/internal/location/ProviderRequest$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-HSPLcom/android/internal/logging/MetricsLogger;->visibility(IZ)V
-HSPLcom/android/internal/os/IDropBoxManagerService$Stub$Proxy;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry;
-HSPLcom/android/internal/os/Zygote;->disableExecuteOnly(I)V
-HSPLcom/android/internal/os/Zygote;->forkAndSpecialize(II[II[[IILjava/lang/String;Ljava/lang/String;[I[IZLjava/lang/String;Ljava/lang/String;I)I
-HSPLcom/android/internal/policy/DecorView;->calculateBarColor(IIIIIIZ)I
-HSPLcom/android/internal/policy/DecorView;->calculateNavigationBarColor()I
-HSPLcom/android/internal/policy/DecorView;->drawLegacyNavigationBarBackground(Landroid/graphics/RecordingCanvas;)V
-HSPLcom/android/internal/policy/DecorView;->getBackground()Landroid/graphics/drawable/Drawable;
-HSPLcom/android/internal/policy/DecorView;->updateBackgroundDrawable()V
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;->getMiddleTarget()Lcom/android/internal/policy/DividerSnapAlgorithm$SnapTarget;
-HSPLcom/android/internal/policy/DividerSnapAlgorithm;-><init>(Landroid/content/res/Resources;IIIZLandroid/graphics/Rect;I)V
-HSPLcom/android/internal/policy/IKeyguardDrawnCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardDrawnCallback;
-HSPLcom/android/internal/policy/IKeyguardService$Stub;-><init>()V
-HSPLcom/android/internal/policy/IKeyguardService$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/policy/IKeyguardStateCallback$Stub;->asInterface(Landroid/os/IBinder;)Lcom/android/internal/policy/IKeyguardStateCallback;
-HSPLcom/android/internal/policy/IShortcutService$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/policy/IShortcutService$Stub;-><init>()V
-HSPLcom/android/internal/policy/PhoneWindow;->getTransitionBackgroundFadeDuration()J
-HSPLcom/android/internal/policy/ScreenDecorationsUtils;->supportsRoundedCornersOnWindows(Landroid/content/res/Resources;)Z
-HSPLcom/android/internal/statusbar/IStatusBar$Stub;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/internal/statusbar/IStatusBar$Stub;-><init>()V
-HSPLcom/android/internal/statusbar/IStatusBar$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/internal/statusbar/StatusBarIcon;->clone()Lcom/android/internal/statusbar/StatusBarIcon;
-HSPLcom/android/internal/telecom/ITelecomService$Stub$Proxy;->setUserSelectedOutgoingPhoneAccount(Landroid/telecom/PhoneAccountHandle;)V
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->handleAlarmOrConfigChange()V
-HSPLcom/android/internal/telephony/CarrierKeyDownloadManager;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$300(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$400(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$500(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)I
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->access$700(Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;->imsiPrefixMatch(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/CarrierResolver;->isPreferApnUserEdited(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/CarrierResolver;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/cdma/EriManager$EriFile;-><init>(Lcom/android/internal/telephony/cdma/EriManager;)V
-HSPLcom/android/internal/telephony/cdma/EriManager;-><init>(Lcom/android/internal/telephony/Phone;I)V
-HSPLcom/android/internal/telephony/CellularNetworkService$CellularNetworkServiceProvider;->convertHalCellIdentityToCellIdentity(Landroid/hardware/radio/V1_0/CellIdentity;)Landroid/telephony/CellIdentity;
-HSPLcom/android/internal/telephony/CommandException;-><init>(Lcom/android/internal/telephony/CommandException$Error;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->logl(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->releaseNetwork(Landroid/net/NetworkRequest;I)V
-HSPLcom/android/internal/telephony/dataconnection/ApnContext;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/ApnSettingUtils;->isMeteredApnType(ILcom/android/internal/telephony/Phone;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection$ConnectionParams;-><init>(Lcom/android/internal/telephony/dataconnection/ApnContext;IILandroid/os/Message;III)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->bringUp(Lcom/android/internal/telephony/dataconnection/ApnContext;IILandroid/os/Message;III)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;->isHardReason()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->add(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)V
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->containsHardDisallowedReasons()Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->contains(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnectionReasons;->containsOnly(Lcom/android/internal/telephony/dataconnection/DataConnectionReasons$DataDisallowedReasonType;)Z
-HSPLcom/android/internal/telephony/dataconnection/DataConnection;->setHandoverState(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$000(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)I
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$002(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;I)I
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$100(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)Lcom/android/internal/telephony/Phone;
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$200(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$302(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;)Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$400(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$500(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->access$600(Lcom/android/internal/telephony/dataconnection/DataEnabledSettings;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->getDataEnabledOverride()Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->isDataEnabled(I)Z
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->localLog(Ljava/lang/String;Z)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->notifyDataEnabledOverrideChanged()V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->registerForDataEnabledOverrideChanged(Landroid/os/Handler;I)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->setDataRoamingEnabled(Z)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->updateDataEnabledAndNotify(I)V
-HSPLcom/android/internal/telephony/dataconnection/DataEnabledSettings;->updatePhoneStateListener()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->isDataAllowed(Lcom/android/internal/telephony/dataconnection/ApnContext;ILcom/android/internal/telephony/dataconnection/DataConnectionReasons;)Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->onDataEnabledOverrideRulesChanged()V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->releaseNetwork(Landroid/net/NetworkRequest;I)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->requestNetwork(Landroid/net/NetworkRequest;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->requestTypeToString(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnAllConnectableApns(Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->setupDataOnConnectableApn(Lcom/android/internal/telephony/dataconnection/ApnContext;Ljava/lang/String;Lcom/android/internal/telephony/dataconnection/DcTracker$RetryFailures;)V
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->shouldAutoAttach()Z
-HSPLcom/android/internal/telephony/dataconnection/DcTracker;->shouldCleanUpConnection(Lcom/android/internal/telephony/dataconnection/ApnContext;Z)Z
-HSPLcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;->logl(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/dataconnection/TransportManager;->isAnyApnPreferredOnIwlan()Z
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyEmergencyNumberList(Lcom/android/internal/telephony/Phone;)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyOemHookRawEventForSubscriber(Lcom/android/internal/telephony/Phone;[B)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyRadioPowerStateChanged(Lcom/android/internal/telephony/Phone;I)V
-HSPLcom/android/internal/telephony/DefaultPhoneNotifier;->notifyUserMobileDataStateChanged(Lcom/android/internal/telephony/Phone;Z)V
-HSPLcom/android/internal/telephony/emergency/EmergencyNumberTracker;->writeUpdatedEmergencyNumberListMetrics(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/euicc/EuiccConnector;->findBestComponent(Landroid/content/pm/PackageManager;)Landroid/content/pm/ComponentInfo;
-HSPLcom/android/internal/telephony/GlobalSettingsHelper;->setBoolean(Landroid/content/Context;Ljava/lang/String;IZ)Z
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->getSubmitPdu(Ljava/lang/String;Ljava/lang/String;I[BZ)Lcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->sendSms(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
-HSPLcom/android/internal/telephony/gsm/GsmSMSDispatcher;->shouldBlockSmsForEcbm()Z
-HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->access$200(Lcom/android/internal/telephony/gsm/UsimPhoneBookManager;Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/gsm/UsimPhoneBookManager;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/IccCardConstants$State;->intToState(I)Lcom/android/internal/telephony/IccCardConstants$State;
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->filterDestAddress(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->sendDataInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
-HSPLcom/android/internal/telephony/IccSmsInterfaceManager;->sendDataWithSelfPermissions(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
-HSPLcom/android/internal/telephony/ims/ImsResolver$5;->create(Landroid/content/Context;Landroid/content/ComponentName;Lcom/android/internal/telephony/ims/ImsServiceController$ImsServiceControllerCallbacks;)Lcom/android/internal/telephony/ims/ImsServiceController;
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->isInEmergencyCall()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhoneCallTracker;->sendImsServiceStateIntent(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->isInEmergencyCall()Z
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->notifyForVideoCapabilityChanged(Z)V
-HSPLcom/android/internal/telephony/imsphone/ImsPhone;->updateRoamingState(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/ims/RcsEventQueryHelper;-><init>(Landroid/content/ContentResolver;)V
-HSPLcom/android/internal/telephony/ims/RcsMessageQueryHelper;-><init>(Landroid/content/ContentResolver;)V
-HSPLcom/android/internal/telephony/ims/RcsMessageStoreController;-><init>(Landroid/content/Context;)V
-HSPLcom/android/internal/telephony/ims/RcsMessageStoreUtil;-><init>(Landroid/content/ContentResolver;)V
-HSPLcom/android/internal/telephony/ims/RcsParticipantQueryHelper;-><init>(Landroid/content/ContentResolver;)V
-HSPLcom/android/internal/telephony/ims/RcsThreadQueryHelper;-><init>(Landroid/content/ContentResolver;Lcom/android/internal/telephony/ims/RcsParticipantQueryHelper;)V
-HSPLcom/android/internal/telephony/ImsSmsDispatcher;->isAvailable()Z
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getIccSerialNumberForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/IPhoneSubInfo$Stub$Proxy;->getLine1AlphaTagForSubscriber(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getDeviceId(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getLine1AlphaTagForDisplay(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->getNetworkTypeForSubscriber(ILjava/lang/String;)I
-HSPLcom/android/internal/telephony/ITelephony$Stub$Proxy;->isDataEnabled(I)Z
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyDataConnectionForSubscriber(IIIZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyEmergencyNumberList(II)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOemHookRawEventForSubscriber(II[B)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyOtaspChanged(II)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyRadioPowerStateChanged(III)V
-HSPLcom/android/internal/telephony/ITelephonyRegistry$Stub$Proxy;->notifyUserMobileDataStateChangedForPhoneId(IIZ)V
-HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->addEvent(Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;)V
-HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->decreaseExpectedResponse()V
-HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->getNumExpectedResponses()I
-HSPLcom/android/internal/telephony/metrics/InProgressSmsSession;->increaseExpectedResponse()V
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;-><init>(I)V
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setErrorCode(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setFormat(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setRilErrno(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setRilRequestId(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/SmsSessionEventBuilder;->setTech(I)Lcom/android/internal/telephony/metrics/SmsSessionEventBuilder;
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;-><init>(I)V
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;-><init>(JI)V
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setCarrierIdMatching(Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder;
-HSPLcom/android/internal/telephony/metrics/TelephonyEventBuilder;->setUpdatedEmergencyNumber(Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo;)Lcom/android/internal/telephony/metrics/TelephonyEventBuilder;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->convertEmergencyNumberToEmergencyNumberInfo(Landroid/telephony/emergency/EmergencyNumber;)Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->finishSmsSessionIfNeeded(Lcom/android/internal/telephony/metrics/InProgressSmsSession;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->lambda$convertEmergencyNumberToEmergencyNumberInfo$1(I)[Ljava/lang/String;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->logv(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->startNewSmsSessionIfNeeded(I)Lcom/android/internal/telephony/metrics/InProgressSmsSession;
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeCarrierIdMatchingEvent(IIILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/CarrierResolver$CarrierMatchingRule;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeEmergencyNumberUpdateEvent(ILandroid/telephony/emergency/EmergencyNumber;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeOnSmsSolicitedResponse(IIILcom/android/internal/telephony/SmsResponse;)V
-HSPLcom/android/internal/telephony/metrics/TelephonyMetrics;->writeRilSendSms(IIII)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->init(Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;)Lcom/android/internal/telephony/MultiSimSettingController;
-HSPLcom/android/internal/telephony/MultiSimSettingController;-><init>(Landroid/content/Context;Lcom/android/internal/telephony/SubscriptionController;)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->lambda$updatePrimarySubListAndGetChangeType$3(Landroid/telephony/SubscriptionInfo;)Z
-HSPLcom/android/internal/telephony/MultiSimSettingController;->lambda$updatePrimarySubListAndGetChangeType$4(Landroid/telephony/SubscriptionInfo;)Ljava/lang/Integer;
-HSPLcom/android/internal/telephony/MultiSimSettingController;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->notifyAllSubscriptionLoaded()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->notifyDefaultDataSubChanged()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->notifySubscriptionInfoChanged()V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->updateDefaults(Z)V
-HSPLcom/android/internal/telephony/MultiSimSettingController;->updatePrimarySubListAndGetChangeType(Ljava/util/List;Z)I
-HSPLcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;-><init>()V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatching;-><init>()V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;->clear()Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$CarrierIdMatchingResult;-><init>()V
-HSPLcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;-><init>()V
-HSPLcom/android/internal/telephony/OemHookIndication;->oemHookRaw(ILjava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/PhoneFactory;->getSmsController()Lcom/android/internal/telephony/SmsController;
-HSPLcom/android/internal/telephony/PhoneFactory;->getSubscriptionInfoUpdater()Lcom/android/internal/telephony/SubscriptionInfoUpdater;
-HSPLcom/android/internal/telephony/Phone;->notifySmsSent(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/Phone;->notifyUserMobileDataStateChanged(Z)V
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->callPhoneMethodForSubIdWithPrivilegedCheck(ILjava/lang/String;Lcom/android/internal/telephony/PhoneSubInfoController$CallPhoneMethodHelper;)Ljava/lang/Object;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->getIsimIst(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithPrivilegedCheck$25$PhoneSubInfoController(Ljava/lang/String;Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithReadPhoneNumberCheck$27(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$callPhoneMethodForSubIdWithReadSubscriberIdentifiersCheck$24(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/PhoneSubInfoController;->lambda$getIsimIst$17(Lcom/android/internal/telephony/Phone;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/PhoneSwitcher;->getInstance()Lcom/android/internal/telephony/PhoneSwitcher;
-HSPLcom/android/internal/telephony/PhoneSwitcher;->isEmergencyNetworkRequest(Landroid/net/NetworkRequest;)Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->isEmergency()Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->isInEmergencyCallbackMode()Z
-HSPLcom/android/internal/telephony/PhoneSwitcher;->sendRilCommands(I)V
-HSPLcom/android/internal/telephony/protobuf/nano/ExtendableMessageNano;-><init>()V
-HSPLcom/android/internal/telephony/protobuf/nano/MessageNano;-><init>()V
-HSPLcom/android/internal/telephony/ProxyController;->getSmsController()Lcom/android/internal/telephony/SmsController;
-HSPLcom/android/internal/telephony/RadioIndication;->currentSignalStrength(ILandroid/hardware/radio/V1_0/SignalStrength;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getCellInfoListResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getCurrentCallsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getDataRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/DataRegStateResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getIccCardStatusResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getSignalStrengthResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V
-HSPLcom/android/internal/telephony/RadioResponse;->getVoiceRegistrationStateResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/VoiceRegStateResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseCellInfoList(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseCurrentCalls(Landroid/hardware/radio/V1_0/RadioResponseInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseIccCardStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/CardStatus;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseLceStatus(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseSignalStrength(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SignalStrength;)V
-HSPLcom/android/internal/telephony/RadioResponse;->responseSms(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->sendImsSmsResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/SendSmsResult;)V
-HSPLcom/android/internal/telephony/RadioResponse;->sendMessageResponse(Landroid/os/Message;Ljava/lang/Object;)V
-HSPLcom/android/internal/telephony/RadioResponse;->startLceServiceResponse(Landroid/hardware/radio/V1_0/RadioResponseInfo;Landroid/hardware/radio/V1_0/LceStatusInfo;)V
-HSPLcom/android/internal/telephony/RIL;->arrayListToPrimitiveArray(Ljava/util/ArrayList;)[B
-HSPLcom/android/internal/telephony/RIL;->constructGsmSendSmsRilRequest(Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/radio/V1_0/GsmSmsMessage;
-HSPLcom/android/internal/telephony/RIL;->convertHalCellInfoList(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/internal/telephony/RIL;->getModemStatus(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->obtainRequest(ILandroid/os/Message;Landroid/os/WorkSource;)Lcom/android/internal/telephony/RILRequest;
-HSPLcom/android/internal/telephony/RIL;->sendImsGsmSms(Ljava/lang/String;Ljava/lang/String;IILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/RIL;->unsljLogvRet(ILjava/lang/Object;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->filterOperatorNameByPattern(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCarrierNameDisplayBitmask(Landroid/telephony/ServiceState;)I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getCombinedRegState(Landroid/telephony/ServiceState;)I
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getOperatorBrandOverride()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getOperatorNameFromEri()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->getServiceProviderName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/ServiceStateTracker;->modemTriggeredPollState()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->notifySpnDisplayUpdate(Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->processIwlanRegistrationInfo()V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateNrStateFromPhysicalChannelConfigs(Ljava/util/List;Landroid/telephony/ServiceState;)Z
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForCellIdentity(Landroid/telephony/CellIdentity;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForCellInfo(Ljava/util/List;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNameForServiceState(Landroid/telephony/ServiceState;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateOperatorNamePattern(Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/ServiceStateTracker;->updateSpnDisplayLegacy()V
-HSPLcom/android/internal/telephony/SMSDispatcher;->checkDestination(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
-HSPLcom/android/internal/telephony/SMSDispatcher;->getCarrierAppPackageName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTracker(Ljava/lang/String;Ljava/util/HashMap;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;Landroid/net/Uri;ZLjava/lang/String;ZZZ)Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
-HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTracker(Ljava/lang/String;Ljava/util/HashMap;Landroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicBoolean;Landroid/net/Uri;Lcom/android/internal/telephony/SmsHeader;ZLjava/lang/String;ZZIIZ)Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
-HSPLcom/android/internal/telephony/SMSDispatcher;->getSmsTrackerMap(Ljava/lang/String;Ljava/lang/String;I[BLcom/android/internal/telephony/SmsMessageBase$SubmitPduBase;)Ljava/util/HashMap;
-HSPLcom/android/internal/telephony/SMSDispatcher;->getSubId()I
-HSPLcom/android/internal/telephony/SMSDispatcher;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/SMSDispatcher;->handleSendComplete(Landroid/os/AsyncResult;)V
-HSPLcom/android/internal/telephony/SMSDispatcher;->isIms()Z
-HSPLcom/android/internal/telephony/SmsDispatchersController;->getUsageMonitor()Lcom/android/internal/telephony/SmsUsageMonitor;
-HSPLcom/android/internal/telephony/SmsDispatchersController;->isCdmaFormat(Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/SmsDispatchersController;->isCdmaMo()Z
-HSPLcom/android/internal/telephony/SmsDispatchersController;->isIms()Z
-HSPLcom/android/internal/telephony/SmsDispatchersController;->sendData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
-HSPLcom/android/internal/telephony/SMSDispatcher;->sendData(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I[BLandroid/app/PendingIntent;Landroid/app/PendingIntent;Z)V
-HSPLcom/android/internal/telephony/SMSDispatcher;->sendRawPdu(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
-HSPLcom/android/internal/telephony/SMSDispatcher;->sendSmsByCarrierApp(ZLcom/android/internal/telephony/SMSDispatcher$SmsTracker;)Z
-HSPLcom/android/internal/telephony/SMSDispatcher;->sendSubmitPdu(Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;)V
-HSPLcom/android/internal/telephony/SmsUsageMonitor;->check(Ljava/lang/String;I)Z
-HSPLcom/android/internal/telephony/SmsUsageMonitor;->isUnderLimit(Ljava/util/ArrayList;I)Z
-HSPLcom/android/internal/telephony/SmsUsageMonitor;->removeExpiredTimestamps()V
-HSPLcom/android/internal/telephony/SubscriptionController;->clearSlotIndexForSubInfoRecords()V
-HSPLcom/android/internal/telephony/SubscriptionController;->getDataEnabledOverrideRules(I)Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionController;->getOptionalStringFromCursor(Landroid/database/Cursor;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubInfoUsingSlotIndexPrivileged(I)Ljava/util/List;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionInfo(I)Landroid/telephony/SubscriptionInfo;
-HSPLcom/android/internal/telephony/SubscriptionController;->getSubscriptionProperty(ILjava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionController;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionController;->notifySubInfoReady()V
-HSPLcom/android/internal/telephony/SubscriptionController;->sendDefaultChangedBroadcast(I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setAssociatedPlmns([Ljava/lang/String;[Ljava/lang/String;I)V
-HSPLcom/android/internal/telephony/SubscriptionController;->setDisplayNumber(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionController;->setImsi(Ljava/lang/String;I)I
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->getDefaultCarrierServicePackageName()Ljava/lang/String;
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->isCarrierServicePackage(ILjava/lang/String;)Z
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$handleMessage$0(Z)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateEmbeddedSubscriptions$4$SubscriptionInfoUpdater(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateEmbeddedSubscriptions$5$SubscriptionInfoUpdater(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateSubscriptionByCarrierConfigAndNotifyComplete$6$SubscriptionInfoUpdater(ILjava/lang/String;Landroid/os/PersistableBundle;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->lambda$updateSubscriptionInfoByIccId$3(Z)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->logd(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->loge(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->setSubInfoInitialized()V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptionsCache(Landroid/service/euicc/GetEuiccProfileInfoListResult;)Z
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateEmbeddedSubscriptions(Ljava/util/List;Lcom/android/internal/telephony/SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateInternalIccState(Ljava/lang/String;Ljava/lang/String;IZ)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionByCarrierConfigAndNotifyComplete(ILjava/lang/String;Landroid/os/PersistableBundle;Landroid/os/Message;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionByCarrierConfig(ILjava/lang/String;Landroid/os/PersistableBundle;)V
-HSPLcom/android/internal/telephony/SubscriptionInfoUpdater;->updateSubscriptionInfoByIccId(IZ)V
-HSPLcom/android/internal/telephony/TelephonyComponentFactory;->makeEriManager(Lcom/android/internal/telephony/Phone;I)Lcom/android/internal/telephony/cdma/EriManager;
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCallingOrSelfReadPhoneStateNoThrow(Landroid/content/Context;ILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkCarrierPrivilegeForAnySubId(Landroid/content/Context;Ljava/util/function/Supplier;I)Z
-HSPLcom/android/internal/telephony/TelephonyPermissions;->checkReadDeviceIdentifiers(Landroid/content/Context;Ljava/util/function/Supplier;IIILjava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/internal/telephony/uicc/AdnRecord;->getEmails()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getEhplmns()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getHomePlmns()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getPlmnsFromHplmnActRecord()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/IccRecords;->getServiceProviderDisplayInformation()[Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/SIMRecords;->getCarrierNameDisplayCondition()I
-HSPLcom/android/internal/telephony/uicc/UiccCard;->iccOpenLogicalChannel(Ljava/lang/String;ILandroid/os/Message;)V
-HSPLcom/android/internal/telephony/uicc/UiccController;->getSlotIdFromPhoneId(I)I
-HSPLcom/android/internal/telephony/uicc/UiccController;->updateInternalIccState(Landroid/content/Context;Lcom/android/internal/telephony/IccCardConstants$State;Ljava/lang/String;IZ)V
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$000(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$100(Lcom/android/internal/telephony/uicc/UiccPkcs15;)I
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->access$200(Lcom/android/internal/telephony/uicc/UiccPkcs15;)Lcom/android/internal/telephony/uicc/UiccProfile;
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->log(Ljava/lang/String;)V
-HSPLcom/android/internal/telephony/uicc/UiccPkcs15;->parseAcrf(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/internal/telephony/uicc/UiccProfile;->updateCarrierNameForSubscription(Lcom/android/internal/telephony/SubscriptionController;II)V
-HSPLcom/android/internal/telephony/util/NotificationChannelController;->getChannel(Ljava/lang/String;Landroid/content/Context;)Landroid/app/NotificationChannel;
-HSPLcom/android/internal/telephony/util/NotificationChannelController;->migrateCallFowardNotificationChannel(Landroid/content/Context;Landroid/app/NotificationChannel;)V
-HSPLcom/android/internal/util/ArrayUtils;->defeatNullable([Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/internal/util/AsyncChannel;-><init>()V
-HSPLcom/android/internal/util/BitUtils;->maskedEquals(Ljava/util/UUID;Ljava/util/UUID;Ljava/util/UUID;)Z
-HSPLcom/android/internal/util/BitUtils;->uint16(S)I
-HSPLcom/android/internal/util/BitUtils;->uint32(I)J
-HSPLcom/android/internal/util/BitUtils;->uint8(B)I
-HSPLcom/android/internal/util/GrowingArrayUtils;->append([FIF)[F
-HSPLcom/android/internal/util/LatencyTracker;->isEnabled(Landroid/content/Context;)Z
-HSPLcom/android/internal/util/Preconditions;->checkNotNull(Ljava/lang/Object;Ljava/lang/String;[Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/internal/util/StateMachine;->getHandler()Landroid/os/Handler;
-HSPLcom/android/internal/util/StateMachine;->getName()Ljava/lang/String;
-HSPLcom/android/internal/view/InputBindResult;->getActivityViewToScreenMatrix()Landroid/graphics/Matrix;
-HSPLcom/android/internal/view/RotationPolicy;->areAllRotationsAllowed(Landroid/content/Context;)Z
-HSPLcom/android/internal/view/RotationPolicy;->getRotationLockOrientation(Landroid/content/Context;)I
-HSPLcom/android/internal/view/RotationPolicy;->registerRotationPolicyListener(Landroid/content/Context;Lcom/android/internal/view/RotationPolicy$RotationPolicyListener;I)V
-HSPLcom/android/internal/view/RotationPolicy;->setRotationLockAtAngle(Landroid/content/Context;ZI)V
-HSPLcom/android/internal/view/RotationPolicy;->setRotationLock(ZI)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->checkVoldPassword(I)Z
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getRecoverySecretTypes()[I
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->initRecoveryServiceWithSigFile(Ljava/lang/String;[B[B)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setBoolean(Ljava/lang/String;ZI)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setRecoverySecretTypes([I)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setServerParams([B)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V
-HSPLcom/android/internal/widget/ILockSettings$Stub$Proxy;->userPresent(I)V
-HSPLcom/android/internal/widget/LockPatternUtils;->checkVoldPassword(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->getActivePasswordQuality(I)I
-HSPLcom/android/internal/widget/LockPatternUtils;->getDeviceOwnerInfo()Ljava/lang/String;
-HSPLcom/android/internal/widget/LockPatternUtils;->getUserManager()Landroid/os/UserManager;
-HSPLcom/android/internal/widget/LockPatternUtils;->isLockPatternEnabled(II)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->isLockScreenDisabled(I)Z
-HSPLcom/android/internal/widget/LockPatternUtils;->userPresent(I)V
-HSPLcom/android/okhttp/Headers$Builder;->access$000(Lcom/android/okhttp/Headers$Builder;)Ljava/util/List;
-HSPLcom/android/okhttp/Headers$Builder;->build()Lcom/android/okhttp/Headers;
-HSPLcom/android/okhttp/Headers$Builder;->get(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/Headers;->get(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/Headers;->get([Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;Lcom/android/okhttp/Headers$1;)V
-HSPLcom/android/okhttp/Headers;-><init>(Lcom/android/okhttp/Headers$Builder;)V
-HSPLcom/android/okhttp/HttpHandler$CleartextURLFilter;->checkURLPermitted(Ljava/net/URL;)V
-HSPLcom/android/okhttp/HttpUrl;->url()Ljava/net/URL;
-HSPLcom/android/okhttp/internal/http/Http1xStream$AbstractSource;->timeout()Lcom/android/okhttp/okio/Timeout;
-HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->close()V
-HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->flush()V
-HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/internal/http/Http1xStream$1;)V
-HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;-><init>(Lcom/android/okhttp/internal/http/Http1xStream;)V
-HSPLcom/android/okhttp/internal/http/Http1xStream$ChunkedSink;->write(Lcom/android/okhttp/okio/Buffer;J)V
-HSPLcom/android/okhttp/internal/http/Http1xStream;->access$300(Lcom/android/okhttp/internal/http/Http1xStream;)Lcom/android/okhttp/okio/BufferedSink;
-HSPLcom/android/okhttp/internal/http/Http1xStream;->access$400(Lcom/android/okhttp/internal/http/Http1xStream;Lcom/android/okhttp/okio/ForwardingTimeout;)V
-HSPLcom/android/okhttp/internal/http/Http1xStream;->access$502(Lcom/android/okhttp/internal/http/Http1xStream;I)I
-HSPLcom/android/okhttp/internal/http/Http1xStream;->createRequestBody(Lcom/android/okhttp/Request;J)Lcom/android/okhttp/okio/Sink;
-HSPLcom/android/okhttp/internal/http/Http1xStream;->detachTimeout(Lcom/android/okhttp/okio/ForwardingTimeout;)V
-HSPLcom/android/okhttp/internal/http/Http1xStream;->newChunkedSink()Lcom/android/okhttp/okio/Sink;
-HSPLcom/android/okhttp/internal/http/HttpEngine;->getResponse()Lcom/android/okhttp/Response;
-HSPLcom/android/okhttp/internal/http/StatusLine;->get(Lcom/android/okhttp/Response;)Lcom/android/okhttp/internal/http/StatusLine;
-HSPLcom/android/okhttp/internal/http/StatusLine;-><init>(Lcom/android/okhttp/Protocol;ILjava/lang/String;)V
-HSPLcom/android/okhttp/internal/http/StatusLine;->toString()Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentEncoding()Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentLength()I
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getContentType()Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getHeaderFields()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperties()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->getURL()Ljava/net/URL;
-HSPLcom/android/okhttp/internal/huc/DelegatingHttpsURLConnection;->setChunkedStreamingMode(I)V
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentEncoding()Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentLength()I
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getContentType()Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getHeaderFields()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperties()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->getURL()Ljava/net/URL;
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setChunkedStreamingMode(I)V
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setHostnameVerifier(Ljavax/net/ssl/HostnameVerifier;)V
-HSPLcom/android/okhttp/internal/huc/HttpsURLConnectionImpl;->setSSLSocketFactory(Ljavax/net/ssl/SSLSocketFactory;)V
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getHeaderFields()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperties()Ljava/util/Map;
-HSPLcom/android/okhttp/internal/huc/HttpURLConnectionImpl;->getRequestProperty(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/internal/OptionalMethod;->getMethod(Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLcom/android/okhttp/internal/OptionalMethod;->getPublicMethod(Ljava/lang/Class;Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLcom/android/okhttp/internal/OptionalMethod;->invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptional(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/okhttp/internal/OptionalMethod;->invokeOptionalWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/okhttp/internal/OptionalMethod;->invokeWithoutCheckedException(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/okhttp/internal/OptionalMethod;->isSupported(Ljava/lang/Object;)Z
-HSPLcom/android/okhttp/internal/Platform;->concatLengthPrefixed(Ljava/util/List;)[B
-HSPLcom/android/okhttp/internal/Util;->discard(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z
-HSPLcom/android/okhttp/internal/Util;->skipAll(Lcom/android/okhttp/okio/Source;ILjava/util/concurrent/TimeUnit;)Z
-HSPLcom/android/okhttp/OkHttpClient;->getDefaultSSLSocketFactory()Ljavax/net/ssl/SSLSocketFactory;
-HSPLcom/android/okhttp/OkHttpClient;->setDns(Lcom/android/okhttp/Dns;)Lcom/android/okhttp/OkHttpClient;
-HSPLcom/android/okhttp/OkHttpClient;->setSocketFactory(Ljavax/net/SocketFactory;)Lcom/android/okhttp/OkHttpClient;
-HSPLcom/android/okhttp/okio/Buffer;->completeSegmentByteCount()J
-HSPLcom/android/okhttp/okio/Buffer;-><init>()V
-HSPLcom/android/okhttp/okio/Buffer;->readByteArray()[B
-HSPLcom/android/okhttp/okio/Buffer;->readByteArray(J)[B
-HSPLcom/android/okhttp/okio/Buffer;->readFully([B)V
-HSPLcom/android/okhttp/okio/Buffer;->size()J
-HSPLcom/android/okhttp/okio/Buffer;->writeByte(I)Lcom/android/okhttp/okio/Buffer;
-HSPLcom/android/okhttp/okio/Buffer;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/Buffer;
-HSPLcom/android/okhttp/okio/Buffer;->writeUtf8(Ljava/lang/String;)Lcom/android/okhttp/okio/Buffer;
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->clearDeadline()Lcom/android/okhttp/okio/Timeout;
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->delegate()Lcom/android/okhttp/okio/Timeout;
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->hasDeadline()Z
-HSPLcom/android/okhttp/okio/ForwardingTimeout;-><init>(Lcom/android/okhttp/okio/Timeout;)V
-HSPLcom/android/okhttp/okio/ForwardingTimeout;->setDelegate(Lcom/android/okhttp/okio/Timeout;)Lcom/android/okhttp/okio/ForwardingTimeout;
-HSPLcom/android/okhttp/okio/RealBufferedSink;->emitCompleteSegments()Lcom/android/okhttp/okio/BufferedSink;
-HSPLcom/android/okhttp/okio/RealBufferedSink;->emit()Lcom/android/okhttp/okio/BufferedSink;
-HSPLcom/android/okhttp/okio/RealBufferedSink;->writeHexadecimalUnsignedLong(J)Lcom/android/okhttp/okio/BufferedSink;
-HSPLcom/android/okhttp/okio/RealBufferedSource$1;->read()I
-HSPLcom/android/okhttp/okio/RealBufferedSource;->access$000(Lcom/android/okhttp/okio/RealBufferedSource;)Z
-HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime()J
-HSPLcom/android/okhttp/okio/Timeout;->deadlineNanoTime(J)Lcom/android/okhttp/okio/Timeout;
-HSPLcom/android/okhttp/okio/Timeout;-><init>()V
-HSPLcom/android/okhttp/OkUrlFactories;->open(Lcom/android/okhttp/OkUrlFactory;Ljava/net/URL;Ljava/net/Proxy;)Ljava/net/HttpURLConnection;
-HSPLcom/android/okhttp/OkUrlFactory;->client()Lcom/android/okhttp/OkHttpClient;
-HSPLcom/android/okhttp/Protocol;->toString()Ljava/lang/String;
-HSPLcom/android/okhttp/Request;->header(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/okhttp/Response;->code()I
-HSPLcom/android/okhttp/Response;->message()Ljava/lang/String;
-HSPLcom/android/okhttp/Response;->protocol()Lcom/android/okhttp/Protocol;
-HSPLcom/android/server/NetworkManagementSocketTagger;->getThreadSocketStatsTag()I
-HSPLcom/android/server/NetworkManagementSocketTagger;->setThreadSocketStatsUid(I)I
-HSPLdalvik/system/BlockGuard;->getVmPolicy()Ldalvik/system/BlockGuard$VmPolicy;
-HSPLdalvik/system/SocketTagger;->tag(Ljava/net/Socket;)V
-HSPLjava/io/DataInputStream;->readDouble()D
-HSPLjava/io/DataOutputStream;->incCount(I)V
-HSPLjava/io/DataOutputStream;->writeDouble(D)V
-HSPLjava/io/DataOutputStream;->writeShort(I)V
-HSPLjava/io/File;->deleteOnExit()V
-HSPLjava/io/FileDescriptor;->getInt$()I
-HSPLjava/io/File;->isInvalid()Z
-HSPLjava/io/File;->setExecutable(ZZ)Z
-HSPLjava/io/File;->setReadable(ZZ)Z
-HSPLjava/io/FilterOutputStream;->flush()V
-HSPLjava/io/IOException;-><init>()V
-HSPLjava/io/RandomAccessFile;->write(I)V
-HSPLjava/io/RandomAccessFile;->writeLong(J)V
-HSPLjava/io/SequenceInputStream;->available()I
-HSPLjava/io/SequenceInputStream;->close()V
-HSPLjava/io/SequenceInputStream;->read([BII)I
-HSPLjava/io/StringWriter;->append(C)Ljava/io/StringWriter;
-HSPLjava/io/StringWriter;->append(C)Ljava/io/Writer;
-HSPLjava/io/UnixFileSystem;->setPermission(Ljava/io/File;IZZ)Z
-HSPLjava/lang/AssertionError;-><init>(Ljava/lang/Object;)V
-HSPLjava/lang/AssertionError;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/Byte;->compare(BB)I
-HSPLjava/lang/Byte;->compareTo(Ljava/lang/Byte;)I
-HSPLjava/lang/Byte;->compareTo(Ljava/lang/Object;)I
-HSPLjava/lang/Byte;->parseByte(Ljava/lang/String;)B
-HSPLjava/lang/Byte;->parseByte(Ljava/lang/String;I)B
-HSPLjava/lang/Class;->getInstanceMethod(Ljava/lang/String;[Ljava/lang/Class;)Ljava/lang/reflect/Method;
-HSPLjava/lang/Class;->getPackageName$()Ljava/lang/String;
-HSPLjava/lang/Class;->getProtectionDomain()Ljava/security/ProtectionDomain;
-HSPLjava/lang/Daemons$FinalizerWatchdogDaemon;->sleepForMillis(J)Z
-HSPLjava/lang/Double;->floatValue()F
-HSPLjava/lang/Error;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/Float;->compareTo(Ljava/lang/Float;)I
-HSPLjava/lang/IllegalMonitorStateException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/InstantiationException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/Integer;->byteValue()B
-HSPLjava/lang/Integer;->toUnsignedLong(I)J
-HSPLjava/lang/invoke/MethodHandleImpl;-><init>(JILjava/lang/invoke/MethodType;)V
-HSPLjava/lang/invoke/MethodHandle;-><init>(JILjava/lang/invoke/MethodType;)V
-HSPLjava/lang/invoke/MethodHandles$Lookup;->checkReturnType(Ljava/lang/reflect/Method;Ljava/lang/invoke/MethodType;)V
-HSPLjava/lang/invoke/MethodHandles$Lookup;->createMethodHandle(Ljava/lang/reflect/Method;ILjava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-HSPLjava/lang/invoke/MethodHandles$Lookup;->findVirtual(Ljava/lang/Class;Ljava/lang/String;Ljava/lang/invoke/MethodType;)Ljava/lang/invoke/MethodHandle;
-HSPLjava/lang/invoke/MethodHandle;->type()Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodType;->changeReturnType(Ljava/lang/Class;)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodType;->dropParameterTypes(II)Ljava/lang/invoke/MethodType;
-HSPLjava/lang/invoke/MethodType;->ptypes()[Ljava/lang/Class;
-HSPLjava/lang/invoke/MethodType;->returnType()Ljava/lang/Class;
-HSPLjava/lang/invoke/MethodType;->rtype()Ljava/lang/Class;
-HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V
-HSPLjava/lang/Long;->valueOf(Ljava/lang/String;I)Ljava/lang/Long;
-HSPLjava/lang/Math;->subtractExact(JJ)J
-HSPLjava/lang/reflect/Executable;->getArtMethod()J
-HSPLjava/lang/reflect/Executable;->getDeclaringClassInternal()Ljava/lang/Class;
-HSPLjava/lang/reflect/Executable;->isSynthetic()Z
-HSPLjava/lang/reflect/Executable;->isVarArgs()Z
-HSPLjava/lang/ReflectiveOperationException;-><init>(Ljava/lang/String;)V
-HSPLjava/lang/reflect/Method;->getDeclaringClass()Ljava/lang/Class;
-HSPLjava/lang/reflect/Method;->isSynthetic()Z
-HSPLjava/lang/reflect/Method;->isVarArgs()Z
-HSPLjava/lang/Short;->shortValue()S
-HSPLjava/lang/StackTraceElement;->getFileName()Ljava/lang/String;
-HSPLjava/lang/StringBuffer;->substring(II)Ljava/lang/String;
-HSPLjava/lang/StringBuffer;->substring(I)Ljava/lang/String;
-HSPLjava/lang/System;->getSecurityManager()Ljava/lang/SecurityManager;
-HSPLjava/lang/Thread;->getUncaughtExceptionPreHandler()Ljava/lang/Thread$UncaughtExceptionHandler;
-HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntryAfterMiss(Ljava/lang/ThreadLocal;ILjava/lang/ThreadLocal$ThreadLocalMap$Entry;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-HSPLjava/lang/ThreadLocal$ThreadLocalMap;->getEntry(Ljava/lang/ThreadLocal;)Ljava/lang/ThreadLocal$ThreadLocalMap$Entry;
-HSPLjava/lang/ThreadLocal$ThreadLocalMap;->nextIndex(II)I
-HSPLjava/lang/ThreadLocal;->access$400(Ljava/lang/ThreadLocal;)I
-HSPLjava/math/BigInteger;-><init>(Ljava/math/BigInt;)V
-HSPLjava/math/BigInteger;->mod(Ljava/math/BigInteger;)Ljava/math/BigInteger;
-HSPLjava/math/BigInteger;->setBigInt(Ljava/math/BigInt;)V
-HSPLjava/math/BigInt;->hasNativeBignum()Z
-HSPLjava/math/BigInt;-><init>()V
-HSPLjava/math/BigInt;->modulus(Ljava/math/BigInt;Ljava/math/BigInt;)Ljava/math/BigInt;
-HSPLjava/math/BigInt;->newBigInt()Ljava/math/BigInt;
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/AbstractPlainDatagramSocketImpl;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/AbstractPlainSocketImpl;->getTimeout()I
-HSPLjava/net/AbstractPlainSocketImpl;->isConnectionReset()Z
-HSPLjava/net/DatagramPacket;-><init>([BIILjava/net/SocketAddress;)V
-HSPLjava/net/DatagramPacket;-><init>([BILjava/net/SocketAddress;)V
-HSPLjava/net/DatagramPacket;->setSocketAddress(Ljava/net/SocketAddress;)V
-HSPLjava/net/DatagramSocket;->setReuseAddress(Z)V
-HSPLjava/net/HttpURLConnection;->setChunkedStreamingMode(I)V
-HSPLjava/net/Inet6Address$Inet6AddressHolder;->isIPv4CompatibleAddress()Z
-HSPLjava/net/Inet6AddressImpl;->getHostByAddr0([B)Ljava/lang/String;
-HSPLjava/net/Inet6AddressImpl;->getHostByAddr([B)Ljava/lang/String;
-HSPLjava/net/Inet6Address;->isIPv4CompatibleAddress()Z
-HSPLjava/net/InetAddress$1;->getHostByAddr([B)Ljava/lang/String;
-HSPLjava/net/InetAddress;->getHostFromNameService(Ljava/net/InetAddress;)Ljava/lang/String;
-HSPLjava/net/InetAddress;->getHostName()Ljava/lang/String;
-HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$600(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Ljava/lang/String;
-HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->access$800(Ljava/net/InetSocketAddress$InetSocketAddressHolder;)Z
-HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->getHostName()Ljava/lang/String;
-HSPLjava/net/InetSocketAddress$InetSocketAddressHolder;->isUnresolved()Z
-HSPLjava/net/InetSocketAddress;->getHostName()Ljava/lang/String;
-HSPLjava/net/InetSocketAddress;-><init>(I)V
-HSPLjava/net/InetSocketAddress;->isUnresolved()Z
-HSPLjava/net/InterfaceAddress;->getAddress()Ljava/net/InetAddress;
-HSPLjava/net/MulticastSocket;-><init>(I)V
-HSPLjava/net/MulticastSocket;-><init>(Ljava/net/SocketAddress;)V
-HSPLjava/net/MulticastSocket;->joinGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/MulticastSocket;->leaveGroup(Ljava/net/SocketAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/MulticastSocket;->setNetworkInterface(Ljava/net/NetworkInterface;)V
-HSPLjava/net/MulticastSocket;->setTimeToLive(I)V
-HSPLjava/net/NetworkInterface$1checkedAddresses;->hasMoreElements()Z
-HSPLjava/net/NetworkInterface$1checkedAddresses;-><init>(Ljava/net/NetworkInterface;)V
-HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/lang/Object;
-HSPLjava/net/NetworkInterface$1checkedAddresses;->nextElement()Ljava/net/InetAddress;
-HSPLjava/net/NetworkInterface;->access$000(Ljava/net/NetworkInterface;)[Ljava/net/InetAddress;
-HSPLjava/net/NetworkInterface;->getByName(Ljava/lang/String;)Ljava/net/NetworkInterface;
-HSPLjava/net/NetworkInterface;->getFlags()I
-HSPLjava/net/NetworkInterface;->getHardwareAddress()[B
-HSPLjava/net/NetworkInterface;->getIndex()I
-HSPLjava/net/NetworkInterface;->getInetAddresses()Ljava/util/Enumeration;
-HSPLjava/net/NetworkInterface;->getInterfaceAddresses()Ljava/util/List;
-HSPLjava/net/NetworkInterface;->getMTU()I
-HSPLjava/net/NetworkInterface;->getName()Ljava/lang/String;
-HSPLjava/net/NetworkInterface;->getNetworkInterfaces()Ljava/util/Enumeration;
-HSPLjava/net/NetworkInterface;->isLoopback()Z
-HSPLjava/net/NetworkInterface;->isPointToPoint()Z
-HSPLjava/net/NetworkInterface;->isUp()Z
-HSPLjava/net/NetworkInterface;->isVirtual()Z
-HSPLjava/net/NetworkInterface;->supportsMulticast()Z
-HSPLjava/net/PlainDatagramSocketImpl;->join(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/PlainDatagramSocketImpl;->leave(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)V
-HSPLjava/net/PlainDatagramSocketImpl;->makeGroupReq(Ljava/net/InetAddress;Ljava/net/NetworkInterface;)Landroid/system/StructGroupReq;
-HSPLjava/net/PlainDatagramSocketImpl;->setTimeToLive(I)V
-HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption0(ILjava/lang/Object;)V
-HSPLjava/net/PlainDatagramSocketImpl;->socketSetOption(ILjava/lang/Object;)V
-HSPLjava/net/SocketAddress;-><init>()V
-HSPLjava/net/SocketInputStream;->read([BII)I
-HSPLjava/net/SocketInputStream;->read([BIII)I
-HSPLjava/net/SocketInputStream;->socketRead(Ljava/io/FileDescriptor;[BIII)I
-HSPLjava/net/SocketOutputStream;->socketWrite([BII)V
-HSPLjava/net/SocketOutputStream;->write([BII)V
-HSPLjava/net/UnknownHostException;-><init>(Ljava/lang/String;)V
-HSPLjava/net/URI$Parser;->charAt(I)C
-HSPLjava/net/URI$Parser;-><init>(Ljava/net/URI;Ljava/lang/String;)V
-HSPLjava/net/URI$Parser;->scanEscape(IIC)I
-HSPLjava/net/URI;->access$002(Ljava/net/URI;Ljava/lang/String;)Ljava/lang/String;
-HSPLjava/net/URI;->access$100()J
-HSPLjava/net/URI;->access$200()J
-HSPLjava/net/URI;->access$300(CJJ)Z
-HSPLjava/net/URI;->hashCode()I
-HSPLjava/net/URI;->hashIgnoringCase(ILjava/lang/String;)I
-HSPLjava/net/URI;->hash(ILjava/lang/String;)I
-HSPLjava/net/URI;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLjava/net/URI;->isAbsolute()Z
-HSPLjava/net/URI;->isOpaque()Z
-HSPLjava/net/URI;->toLower(C)I
-HSPLjava/net/URI;->toURL()Ljava/net/URL;
-HSPLjava/net/URLConnection;->getContentEncoding()Ljava/lang/String;
-HSPLjava/net/URLConnection;->getContentLength()I
-HSPLjava/nio/Bits;->getFloatB(Ljava/nio/ByteBuffer;I)F
-HSPLjava/nio/Bits;->getFloat(Ljava/nio/ByteBuffer;IZ)F
-HSPLjava/nio/Bits;->getIntB(Ljava/nio/ByteBuffer;I)I
-HSPLjava/nio/Bits;->getInt(Ljava/nio/ByteBuffer;IZ)I
-HSPLjava/nio/Bits;->makeInt(BBBB)I
-HSPLjava/nio/Bits;->putFloatB(Ljava/nio/ByteBuffer;IF)V
-HSPLjava/nio/Bits;->putFloat(Ljava/nio/ByteBuffer;IFZ)V
-HSPLjava/nio/Bits;->putLong(Ljava/nio/ByteBuffer;IJZ)V
-HSPLjava/nio/Buffer;->nextGetIndex()I
-HSPLjava/nio/Buffer;->nextGetIndex(I)I
-HSPLjava/nio/Buffer;->nextPutIndex(I)I
-HSPLjava/nio/ByteBufferAsIntBuffer;->get()I
-HSPLjava/nio/ByteBufferAsIntBuffer;->get(I)I
-HSPLjava/nio/ByteBufferAsIntBuffer;->put([III)Ljava/nio/IntBuffer;
-HSPLjava/nio/ByteBufferAsLongBuffer;->put([JII)Ljava/nio/LongBuffer;
-HSPLjava/nio/ByteBufferAsShortBuffer;->put([SII)Ljava/nio/ShortBuffer;
-HSPLjava/nio/ByteBuffer;->compareTo(Ljava/lang/Object;)I
-HSPLjava/nio/ByteBuffer;->equals(BB)Z
-HSPLjava/nio/ByteBuffer;->equals(Ljava/lang/Object;)Z
-HSPLjava/nio/channels/FileChannel;->lock()Ljava/nio/channels/FileLock;
-HSPLjava/nio/channels/FileLock;->position()J
-HSPLjava/nio/channels/FileLock;->size()J
-HSPLjava/nio/channels/spi/AbstractInterruptibleChannel;->isOpen()Z
-HSPLjava/nio/DirectByteBuffer;->getFloat()F
-HSPLjava/nio/DirectByteBuffer;->getFloat(J)F
-HSPLjava/nio/DirectByteBuffer;->getLong()J
-HSPLjava/nio/DirectByteBuffer;->getLong(J)J
-HSPLjava/nio/DirectByteBuffer;->ix(I)J
-HSPLjava/nio/HeapByteBuffer;->asIntBuffer()Ljava/nio/IntBuffer;
-HSPLjava/nio/HeapByteBuffer;->asLongBuffer()Ljava/nio/LongBuffer;
-HSPLjava/nio/HeapByteBuffer;->getFloat()F
-HSPLjava/nio/HeapByteBuffer;->getIntUnchecked(I)I
-HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[III)V
-HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[JII)V
-HSPLjava/nio/HeapByteBuffer;->getUnchecked(I[SII)V
-HSPLjava/nio/HeapByteBuffer;->ix(I)I
-HSPLjava/nio/HeapByteBuffer;->putFloat(F)Ljava/nio/ByteBuffer;
-HSPLjava/nio/HeapByteBuffer;->putLong(IJ)Ljava/nio/ByteBuffer;
-HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[III)V
-HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[JII)V
-HSPLjava/nio/HeapByteBuffer;->putUnchecked(I[SII)V
-HSPLjava/nio/IntBuffer;->put([I)Ljava/nio/IntBuffer;
-HSPLjava/nio/LongBuffer;->put([J)Ljava/nio/LongBuffer;
-HSPLjava/nio/ShortBuffer;->put([S)Ljava/nio/ShortBuffer;
-HSPLjava/security/GeneralSecurityException;-><init>(Ljava/lang/Throwable;)V
-HSPLjava/security/InvalidAlgorithmParameterException;-><init>(Ljava/lang/Throwable;)V
-HSPLjava/security/KeyFactory;->getInstance(Ljava/lang/String;Ljava/security/Provider;)Ljava/security/KeyFactory;
-HSPLjava/security/KeyFactory;-><init>(Ljava/security/KeyFactorySpi;Ljava/security/Provider;Ljava/lang/String;)V
-HSPLjava/security/MessageDigest;->getAlgorithm()Ljava/lang/String;
-HSPLjava/security/MessageDigest;-><init>(Ljava/lang/String;)V
-HSPLjava/security/Provider$Service;->getProvider()Ljava/security/Provider;
-HSPLjava/security/spec/ECParameterSpec;->getCurveName()Ljava/lang/String;
-HSPLjava/security/spec/ECParameterSpec;->getGenerator()Ljava/security/spec/ECPoint;
-HSPLjava/security/spec/ECPoint;->getAffineX()Ljava/math/BigInteger;
-HSPLjava/security/spec/ECPoint;->getAffineY()Ljava/math/BigInteger;
-HSPLjava/security/spec/ECPublicKeySpec;->getParams()Ljava/security/spec/ECParameterSpec;
-HSPLjava/security/spec/ECPublicKeySpec;->getW()Ljava/security/spec/ECPoint;
-HSPLjava/security/spec/ECPublicKeySpec;-><init>(Ljava/security/spec/ECPoint;Ljava/security/spec/ECParameterSpec;)V
-HSPLjava/security/spec/EllipticCurve;->getA()Ljava/math/BigInteger;
-HSPLjava/security/spec/EllipticCurve;->getB()Ljava/math/BigInteger;
-HSPLjava/text/DateFormat;->getDateTimeInstance(II)Ljava/text/DateFormat;
-HSPLjava/text/DecimalFormat;->initPattern(Ljava/lang/String;)V
-HSPLjava/text/DecimalFormat;-><init>()V
-HSPLjava/text/DecimalFormatSymbols;->getInstance(Ljava/util/Locale;)Ljava/text/DecimalFormatSymbols;
-HSPLjava/text/FieldPosition;-><init>(I)V
-HSPLjava/text/FieldPosition;-><init>(Ljava/text/Format$Field;I)V
-HSPLjava/text/Format;-><init>()V
-HSPLjava/text/NumberFormat;-><init>()V
-HSPLjava/text/SimpleDateFormat;->isDigit(C)Z
-HSPLjava/text/SimpleDateFormat;->subParseNumericZone(Ljava/lang/String;IIIZLjava/text/CalendarBuilder;)I
-HSPLjava/time/Duration;->between(Ljava/time/temporal/Temporal;Ljava/time/temporal/Temporal;)Ljava/time/Duration;
-HSPLjava/time/Duration;->compareTo(Ljava/time/Duration;)I
-HSPLjava/time/Duration;->getNano()I
-HSPLjava/time/Duration;->getSeconds()J
-HSPLjava/time/Duration;->isNegative()Z
-HSPLjava/time/Duration;->minus(Ljava/time/Duration;)Ljava/time/Duration;
-HSPLjava/time/Duration;->plus(JJ)Ljava/time/Duration;
-HSPLjava/time/Duration;->subtractFrom(Ljava/time/temporal/Temporal;)Ljava/time/temporal/Temporal;
-HSPLjava/time/Duration;->toString()Ljava/lang/String;
-HSPLjava/time/Instant;->compareTo(Ljava/time/Instant;)I
-HSPLjava/time/Instant;->isBefore(Ljava/time/Instant;)Z
-HSPLjava/time/Instant;->minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant;
-HSPLjava/time/Instant;->minus(JLjava/time/temporal/TemporalUnit;)Ljava/time/temporal/Temporal;
-HSPLjava/time/Instant;->minus(Ljava/time/temporal/TemporalAmount;)Ljava/time/Instant;
-HSPLjava/time/Instant;->nanosUntil(Ljava/time/Instant;)J
-HSPLjava/time/Instant;->plus(JLjava/time/temporal/TemporalUnit;)Ljava/time/Instant;
-HSPLjava/time/Instant;->plusSeconds(J)Ljava/time/Instant;
-HSPLjava/time/Instant;->until(Ljava/time/temporal/Temporal;Ljava/time/temporal/TemporalUnit;)J
-HSPLjava/util/AbstractList$Itr;->checkForComodification()V
-HSPLjava/util/AbstractList$ListItr;->hasPrevious()Z
-HSPLjava/util/AbstractList$ListItr;->previousIndex()I
-HSPLjava/util/AbstractList$ListItr;->previous()Ljava/lang/Object;
-HSPLjava/util/AbstractList;->indexOf(Ljava/lang/Object;)I
-HSPLjava/util/AbstractMap$2;-><init>(Ljava/util/AbstractMap;)V
-HSPLjava/util/AbstractMap$2;->iterator()Ljava/util/Iterator;
-HSPLjava/util/AbstractMap$SimpleImmutableEntry;-><init>(Ljava/util/Map$Entry;)V
-HSPLjava/util/AbstractMap;->values()Ljava/util/Collection;
-HSPLjava/util/ArrayList$Itr;-><init>(Ljava/util/ArrayList;)V
-HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;)Ljava/lang/String;
-HSPLjava/util/Arrays;->deepToString([Ljava/lang/Object;Ljava/lang/StringBuilder;Ljava/util/Set;)V
-HSPLjava/util/Arrays;->fill([DD)V
-HSPLjava/util/Arrays;->fill([ZIIZ)V
-HSPLjava/util/Arrays;->sort([Ljava/lang/Object;II)V
-HSPLjava/util/Arrays;->toString([F)Ljava/lang/String;
-HSPLjava/util/BitSet;->checkInvariants()V
-HSPLjava/util/BitSet;->clear(II)V
-HSPLjava/util/BitSet;->recalculateWordsInUse()V
-HSPLjava/util/BitSet;->wordIndex(I)I
-HSPLjava/util/Calendar;->after(Ljava/lang/Object;)Z
-HSPLjava/util/Calendar;->before(Ljava/lang/Object;)Z
-HSPLjava/util/Calendar;->compareTo(J)I
-HSPLjava/util/Calendar;->compareTo(Ljava/util/Calendar;)I
-HSPLjava/util/Calendar;->getMillisOf(Ljava/util/Calendar;)J
-HSPLjava/util/Collections$EmptyList;->listIterator()Ljava/util/ListIterator;
-HSPLjava/util/Collections$EmptyList;->sort(Ljava/util/Comparator;)V
-HSPLjava/util/Collections$EmptyMap;->keySet()Ljava/util/Set;
-HSPLjava/util/Collections$SynchronizedMap;->containsValue(Ljava/lang/Object;)Z
-HSPLjava/util/Collections$SynchronizedMap;->keySet()Ljava/util/Set;
-HSPLjava/util/Collections$UnmodifiableMap;->toString()Ljava/lang/String;
-HSPLjava/util/Collections;->emptyListIterator()Ljava/util/ListIterator;
-HSPLjava/util/Collections;->frequency(Ljava/util/Collection;Ljava/lang/Object;)I
-HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream;
-HSPLjava/util/concurrent/AbstractExecutorService;->submit(Ljava/lang/Runnable;Ljava/lang/Object;)Ljava/util/concurrent/Future;
-HSPLjava/util/concurrent/ArrayBlockingQueue;->add(Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/atomic/AtomicBoolean;->lazySet(Z)V
-HSPLjava/util/concurrent/atomic/AtomicLong;->decrementAndGet()J
-HSPLjava/util/concurrent/ConcurrentHashMap$BaseIterator;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;IIILjava/util/concurrent/ConcurrentHashMap;)V
-HSPLjava/util/concurrent/ConcurrentHashMap$EntrySetView;->removeIf(Ljava/util/function/Predicate;)Z
-HSPLjava/util/concurrent/ConcurrentHashMap$Traverser;-><init>([Ljava/util/concurrent/ConcurrentHashMap$Node;III)V
-HSPLjava/util/concurrent/ConcurrentHashMap;-><init>(Ljava/util/Map;)V
-HSPLjava/util/concurrent/ConcurrentHashMap;->putAll(Ljava/util/Map;)V
-HSPLjava/util/concurrent/ConcurrentHashMap;->removeEntryIf(Ljava/util/function/Predicate;)Z
-HSPLjava/util/concurrent/ConcurrentHashMap;->remove(Ljava/lang/Object;Ljava/lang/Object;)Z
-HSPLjava/util/concurrent/Executors$RunnableAdapter;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-HSPLjava/util/concurrent/LinkedBlockingQueue;->clear()V
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->acquireShared(I)V
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->getState()I
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->release(I)Z
-HSPLjava/util/concurrent/locks/AbstractQueuedSynchronizer;->tryAcquireSharedNanos(IJ)Z
-HSPLjava/util/concurrent/Semaphore$Sync;->getPermits()I
-HSPLjava/util/concurrent/Semaphore;->acquireUninterruptibly()V
-HSPLjava/util/concurrent/Semaphore;->availablePermits()I
-HSPLjava/util/concurrent/Semaphore;->tryAcquire(JLjava/util/concurrent/TimeUnit;)Z
-HSPLjava/util/concurrent/ThreadPoolExecutor$DiscardPolicy;-><init>()V
-HSPLjava/util/concurrent/ThreadPoolExecutor;->getMaximumPoolSize()I
-HSPLjava/util/concurrent/ThreadPoolExecutor;->setThreadFactory(Ljava/util/concurrent/ThreadFactory;)V
-HSPLjava/util/concurrent/TimeUnit$2;->convert(JLjava/util/concurrent/TimeUnit;)J
-HSPLjava/util/concurrent/TimeUnit$2;->toSeconds(J)J
-HSPLjava/util/concurrent/TimeUnit$5;->toMicros(J)J
-HSPLjava/util/concurrent/TimeUnit$7;->toMicros(J)J
-HSPLjava/util/concurrent/TimeUnit;->x(JJJ)J
-HSPLjava/util/Date;->after(Ljava/util/Date;)Z
-HSPLjava/util/Date;->getCalendarSystem(I)Lsun/util/calendar/BaseCalendar;
-HSPLjava/util/Date;->getCalendarSystem(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar;
-HSPLjava/util/Date;->getMillisOf(Ljava/util/Date;)J
-HSPLjava/util/Date;->getTimeImpl()J
-HSPLjava/util/Date;-><init>(IIIIII)V
-HSPLjava/util/Date;->normalize(Lsun/util/calendar/BaseCalendar$Date;)Lsun/util/calendar/BaseCalendar$Date;
-HSPLjava/util/Formatter$FormatSpecifier;->print(Ljava/math/BigInteger;Ljava/util/Locale;)V
-HSPLjava/util/Formatter$FormatSpecifier;->trailingSign(Ljava/lang/StringBuilder;Z)Ljava/lang/StringBuilder;
-HSPLjava/util/Formatter;->access$000(Ljava/util/Formatter;)Ljava/lang/Appendable;
-HSPLjava/util/function/-$$Lambda$DoubleUnaryOperator$EzzlhUGRoL66wVBCG-_euZgC-CA;->applyAsDouble(D)D
-HSPLjava/util/function/DoubleUnaryOperator;->lambda$andThen$1(Ljava/util/function/DoubleUnaryOperator;Ljava/util/function/DoubleUnaryOperator;D)D
-HSPLjava/util/HashMap$Node;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-HSPLjava/util/HashMap$TreeNode;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-HSPLjava/util/HashMap$TreeNode;->putTreeVal(Ljava/util/HashMap;[Ljava/util/HashMap$Node;ILjava/lang/Object;Ljava/lang/Object;)Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashMap;->newTreeNode(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)Ljava/util/HashMap$TreeNode;
-HSPLjava/util/HashSet;-><init>(IFZ)V
-HSPLjava/util/IdentityHashMap$KeySet;->size()I
-HSPLjava/util/IdentityHashMap;->size()I
-HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/util/LinkedHashMap$LinkedEntrySet;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/LinkedHashMap$LinkedHashMapEntry;-><init>(ILjava/lang/Object;Ljava/lang/Object;Ljava/util/HashMap$Node;)V
-HSPLjava/util/LinkedHashMap$LinkedKeySet;->contains(Ljava/lang/Object;)Z
-HSPLjava/util/LinkedHashMap;-><init>(IF)V
-HSPLjava/util/LinkedHashSet;-><init>(IF)V
-HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V
-HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLjava/util/PriorityQueue;->comparator()Ljava/util/Comparator;
-HSPLjava/util/PriorityQueue;->contains(Ljava/lang/Object;)Z
-HSPLjava/util/PriorityQueue;->indexOf(Ljava/lang/Object;)I
-HSPLjava/util/PriorityQueue;->initElementsFromCollection(Ljava/util/Collection;)V
-HSPLjava/util/PriorityQueue;-><init>(Ljava/util/Collection;)V
-HSPLjava/util/PriorityQueue;->siftDown(ILjava/lang/Object;)V
-HSPLjava/util/regex/Matcher;->regionEnd()I
-HSPLjava/util/regex/Matcher;->regionStart()I
-HSPLjava/util/Spliterators$IteratorSpliterator;-><init>(Ljava/util/Collection;I)V
-HSPLjava/util/Spliterators;->spliterator(Ljava/util/Collection;I)Ljava/util/Spliterator;
-HSPLjava/util/stream/AbstractPipeline;-><init>(Ljava/util/Spliterator;IZ)V
-HSPLjava/util/stream/ReduceOps$1;-><init>(Ljava/util/stream/StreamShape;Ljava/util/function/BinaryOperator;Ljava/util/function/BiFunction;Ljava/lang/Object;)V
-HSPLjava/util/stream/ReduceOps$1;->makeSink()Ljava/util/stream/ReduceOps$1ReducingSink;
-HSPLjava/util/stream/ReduceOps$1;->makeSink()Ljava/util/stream/ReduceOps$AccumulatingSink;
-HSPLjava/util/stream/ReduceOps$1ReducingSink;->begin(J)V
-HSPLjava/util/stream/ReduceOps$1ReducingSink;-><init>(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)V
-HSPLjava/util/stream/ReduceOps$Box;-><init>()V
-HSPLjava/util/stream/ReduceOps;->makeRef(Ljava/lang/Object;Ljava/util/function/BiFunction;Ljava/util/function/BinaryOperator;)Ljava/util/stream/TerminalOp;
-HSPLjava/util/stream/ReferencePipeline$Head;-><init>(Ljava/util/Spliterator;IZ)V
-HSPLjava/util/stream/ReferencePipeline;-><init>(Ljava/util/Spliterator;IZ)V
-HSPLjava/util/stream/ReferencePipeline;->reduce(Ljava/lang/Object;Ljava/util/function/BinaryOperator;)Ljava/lang/Object;
-HSPLjava/util/stream/StreamOpFlag;->fromCharacteristics(Ljava/util/Spliterator;)I
-HSPLjava/util/stream/StreamSupport;->stream(Ljava/util/Spliterator;Z)Ljava/util/stream/Stream;
-HSPLjava/util/TaskQueue;-><init>()V
-HSPLjava/util/Timer$1;-><init>(Ljava/util/Timer;)V
-HSPLjava/util/Timer;-><init>(Ljava/lang/String;Z)V
-HSPLjava/util/Timer;->scheduleAtFixedRate(Ljava/util/TimerTask;JJ)V
-HSPLjava/util/TimerThread;-><init>(Ljava/util/TaskQueue;)V
-HSPLjava/util/TreeMap$KeySet;->comparator()Ljava/util/Comparator;
-HSPLjava/util/TreeMap$KeySet;->size()I
-HSPLjava/util/TreeMap;->addAllForTreeSet(Ljava/util/SortedSet;Ljava/lang/Object;)V
-HSPLjava/util/TreeMap;->buildFromSorted(ILjava/util/Iterator;Ljava/io/ObjectInputStream;Ljava/lang/Object;)V
-HSPLjava/util/TreeMap;->computeRedLevel(I)I
-HSPLjava/util/TreeMap;->exportEntry(Ljava/util/TreeMap$TreeMapEntry;)Ljava/util/Map$Entry;
-HSPLjava/util/TreeMap;->getLastEntry()Ljava/util/TreeMap$TreeMapEntry;
-HSPLjava/util/TreeMap;->lastEntry()Ljava/util/Map$Entry;
-HSPLjava/util/TreeMap;->putAll(Ljava/util/Map;)V
-HSPLjava/util/TreeMap;->subMap(Ljava/lang/Object;Ljava/lang/Object;)Ljava/util/SortedMap;
-HSPLjava/util/TreeSet;-><init>(Ljava/util/SortedSet;)V
-HSPLjava/util/Vector;->ensureCapacityHelper(I)V
-HSPLjava/util/Vector;->insertElementAt(Ljava/lang/Object;I)V
-HSPLjava/util/Vector;->setElementAt(Ljava/lang/Object;I)V
-HSPLjava/util/zip/Adler32;->update([BII)V
-HSPLjava/util/zip/Adler32;->update(I)V
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasMoreElements()Z
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;->hasNext()Z
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;-><init>(Ljava/util/zip/ZipFile;)V
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/lang/Object;
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;->nextElement()Ljava/util/zip/ZipEntry;
-HSPLjava/util/zip/ZipFile$ZipEntryIterator;->next()Ljava/util/zip/ZipEntry;
-HSPLjava/util/zip/ZipFile;->access$1000(JJ)V
-HSPLjava/util/zip/ZipFile;->access$200(Ljava/util/zip/ZipFile;)V
-HSPLjava/util/zip/ZipFile;->access$300(Ljava/util/zip/ZipFile;)I
-HSPLjava/util/zip/ZipFile;->access$400(Ljava/util/zip/ZipFile;)J
-HSPLjava/util/zip/ZipFile;->access$500(JI)J
-HSPLjava/util/zip/ZipFile;->access$900(Ljava/util/zip/ZipFile;Ljava/lang/String;J)Ljava/util/zip/ZipEntry;
-HSPLjava/util/zip/ZipFile;->entries()Ljava/util/Enumeration;
-HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;I)V
-HSPLjava/util/zip/ZipFile;-><init>(Ljava/io/File;)V
-HSPLjavax/crypto/JceSecurity;->access$000()Ljava/net/URL;
-HSPLjavax/crypto/JceSecurity;->getCodeBase(Ljava/lang/Class;)Ljava/net/URL;
-HSPLjavax/crypto/JceSecurity;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/lang/String;)Lsun/security/jca/GetInstance$Instance;
-HSPLjavax/crypto/JceSecurity;->getVerificationResult(Ljava/security/Provider;)Ljava/lang/Exception;
-HSPLjavax/crypto/JceSecurity;->verifyProviderJar(Ljava/net/URL;)V
-HSPLjavax/crypto/KeyGenerator;->getInstance(Ljava/lang/String;Ljava/lang/String;)Ljavax/crypto/KeyGenerator;
-HSPLjavax/crypto/KeyGenerator;->init(Ljava/security/spec/AlgorithmParameterSpec;Ljava/security/SecureRandom;)V
-HSPLjavax/crypto/KeyGenerator;->init(Ljava/security/spec/AlgorithmParameterSpec;)V
-HSPLjavax/crypto/KeyGenerator;-><init>(Ljavax/crypto/KeyGeneratorSpi;Ljava/security/Provider;Ljava/lang/String;)V
-HSPLjavax/crypto/Mac;->reset()V
-HSPLjavax/crypto/spec/SecretKeySpec;->getAlgorithm()Ljava/lang/String;
-HSPLlibcore/icu/DateUtilsBridge;->icuTimeZone(Ljava/util/TimeZone;)Landroid/icu/util/TimeZone;
-HSPLlibcore/io/BlockGuardOs;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
-HSPLlibcore/io/BlockGuardOs;->isUdpSocket(Ljava/io/FileDescriptor;)Z
-HSPLlibcore/io/BlockGuardOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I
-HSPLlibcore/io/ForwardingOs;->connect(Ljava/io/FileDescriptor;Ljava/net/SocketAddress;)V
-HSPLlibcore/io/ForwardingOs;->prctl(IJJJJ)I
-HSPLlibcore/io/ForwardingOs;->recvfrom(Ljava/io/FileDescriptor;[BIIILjava/net/InetSocketAddress;)I
-HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/InetAddress;I)I
-HSPLlibcore/io/ForwardingOs;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I
-HSPLlibcore/io/ForwardingOs;->setsockoptByte(Ljava/io/FileDescriptor;III)V
-HSPLlibcore/io/ForwardingOs;->setsockoptGroupReq(Ljava/io/FileDescriptor;IILandroid/system/StructGroupReq;)V
-HSPLlibcore/io/ForwardingOs;->setsockoptIfreq(Ljava/io/FileDescriptor;IILjava/lang/String;)V
-HSPLlibcore/io/ForwardingOs;->setsockoptIpMreqn(Ljava/io/FileDescriptor;III)V
-HSPLlibcore/io/Linux;->sendto(Ljava/io/FileDescriptor;[BIIILjava/net/SocketAddress;)I
-HSPLlibcore/util/ZoneInfo;->access$500(JI)I
-HSPLlibcore/util/ZoneInfo;->access$600(JI)I
-HSPLlibcore/util/ZoneInfo;->checked32BitAdd(JI)I
-HSPLlibcore/util/ZoneInfo;->checked32BitSubtract(JI)I
-HSPLorg/json/JSONArray;-><init>(Ljava/util/Collection;)V
-HSPLorg/json/JSONObject;->length()I
-HSPLorg/json/JSONTokener;->skipToEndOfLine()V
-HSPLsun/misc/FloatingDecimal;->appendTo(DLjava/lang/Appendable;)V
-HSPLsun/misc/FloatingDecimal;->getBinaryToASCIIConverter(D)Lsun/misc/FloatingDecimal$BinaryToASCIIConverter;
-HSPLsun/misc/FloatingDecimal;->parseDouble(Ljava/lang/String;)D
-HSPLsun/misc/FloatingDecimal;->parseFloat(Ljava/lang/String;)F
-HSPLsun/misc/FloatingDecimal;->toJavaFormatString(D)Ljava/lang/String;
-HSPLsun/nio/ch/FileChannelImpl;->release(Lsun/nio/ch/FileLockImpl;)V
-HSPLsun/nio/ch/FileLockImpl;->release()V
-HSPLsun/nio/ch/SharedFileLockTable;->remove(Ljava/nio/channels/FileLock;)V
-HSPLsun/nio/fs/NativeBuffer$Deallocator;->run()V
-HSPLsun/nio/fs/NativeBuffer;->access$000()Lsun/misc/Unsafe;
-HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;Lsun/security/jca/GetInstance$1;)V
-HSPLsun/security/jca/GetInstance$Instance;-><init>(Ljava/security/Provider;Ljava/lang/Object;)V
-HSPLsun/security/jca/GetInstance;->getInstance(Ljava/lang/String;Ljava/lang/Class;Ljava/lang/String;Ljava/security/Provider;)Lsun/security/jca/GetInstance$Instance;
-HSPLsun/security/jca/GetInstance;->getInstance(Ljava/security/Provider$Service;Ljava/lang/Class;)Lsun/security/jca/GetInstance$Instance;
-HSPLsun/util/calendar/BaseCalendar$Date;->setNormalizedDate(III)Lsun/util/calendar/BaseCalendar$Date;
-HSPLjava/util/Iterator;->forEachRemaining(Ljava/util/function/Consumer;)V
-HSPLjava/lang/Iterable;->forEach(Ljava/util/function/Consumer;)V
-HSPLjava/util/Map;->forEach(Ljava/util/function/BiConsumer;)V
-HSPLjava/util/Collection;->spliterator()Ljava/util/Spliterator;
-HSPLjava/util/Collection;->stream()Ljava/util/stream/Stream;
-HSPLandroid/os/Trace;->endAsyncSection(Ljava/lang/String;I)V
-HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLandroid/bluetooth/le/ScanFilter;-><init>(Ljava/lang/String;Ljava/lang/String;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;Landroid/os/ParcelUuid;[B[BI[B[B)V
-HSPLjava/nio/ByteBuffer;->array()Ljava/lang/Object;
-HSPLjava/nio/NIOAccess;->getBaseArray(Ljava/nio/Buffer;)Ljava/lang/Object;
-HSPLjava/nio/NIOAccess;->getBaseArrayOffset(Ljava/nio/Buffer;)I
-HSPLandroid/graphics/drawable/RotateDrawable;->draw(Landroid/graphics/Canvas;)V
-HSPLandroid/graphics/Bitmap;->checkHardware(Ljava/lang/String;)V
-HSPLandroid/graphics/Bitmap;->copyPixelsToBuffer(Ljava/nio/Buffer;)V
-HSPLandroid/graphics/Bitmap;->getDensity()I
-HSPLandroid/accounts/AccountManager;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/AccountManager;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/accounts/IAccountManager$Stub$Proxy;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/os/StrictMode$AndroidBlockGuardPolicy;->onNetwork()V
-HSPLjava/util/Arrays$ArrayList;-><init>([Ljava/lang/Object;)V
-HSPLjava/util/regex/Matcher;-><init>(Ljava/util/regex/Pattern;Ljava/lang/CharSequence;)V
-HSPLjava/util/Map;->getOrDefault(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-[[F
-[[J
-Landroid/accessibilityservice/IAccessibilityServiceClient$Stub;
-Landroid/accessibilityservice/IAccessibilityServiceClient$Stub$Proxy;
-[Landroid/accounts/Account;
-Landroid/accounts/AccountManager$17;
-Landroid/accounts/AccountManager$3;
-[Landroid/accounts/AuthenticatorDescription;
-Landroid/accounts/IAccountAuthenticator;
-Landroid/accounts/IAccountAuthenticator$Stub;
-Landroid/accounts/IAccountAuthenticator$Stub$Proxy;
-Landroid/accounts/IAccountManagerResponse$Stub$Proxy;
-Landroid/animation/AnimationHandler$2;
-[Landroid/animation/Animator;
-Landroid/animation/BidirectionalTypeConverter;
-[Landroid/animation/Keyframe;
-[Landroid/animation/Keyframe$FloatKeyframe;
-[Landroid/animation/Keyframe$IntKeyframe;
-[Landroid/animation/Keyframe$ObjectKeyframe;
-Landroid/animation/LayoutTransition$3;
-Landroid/animation/PathKeyframes$3;
-Landroid/animation/PathKeyframes$4;
-[Landroid/animation/PropertyValuesHolder;
-Landroid/animation/PropertyValuesHolder$1;
-[Landroid/apex/ApexInfo;
-Landroid/apex/ApexInfo;
-Landroid/app/-$$Lambda$ActivityThread$A4ykhsPb8qV3ffTqpQDklHSMDJ0;
-Landroid/app/-$$Lambda$ActivityThread$Wg40iAoNYFxps_KmrqtgptTB054;
-Landroid/app/-$$Lambda$ActivityTransitionState$yioLR6wQWjZ9DcWK5bibElIbsXc;
-Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$DkVcBvqB32SMHlxw0sWQPh3GL1A;
-Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$HUOLFYs8TiaQIOXcrq6JzjxA6gs;
-Landroid/app/-$$Lambda$AppOpsManager$HistoricalOp$Vs6pDL0wjOBTquwNnreWVbPQrn4;
-Landroid/app/-$$Lambda$FragmentTransition$jurn0WXuKw3bRQ_2d5zCWdeZWuI;
-Landroid/app/-$$Lambda$WallpaperManager$Globals$1AcnQUORvPlCjJoNqdxfQT4o4Nw;
-Landroid/app/-$$Lambda$WallpaperManager$Globals$2yG7V1sbMECCnlFTLyjKWKqNoYI;
-Landroid/app/Activity$1;
-Landroid/app/Activity$ManagedCursor;
-Landroid/app/Activity$ManagedDialog;
-Landroid/app/ActivityManager$TaskSnapshot;
-Landroid/app/ActivityTransitionState$1;
-Landroid/app/admin/DevicePolicyCache$EmptyDevicePolicyCache;
-Landroid/app/admin/DevicePolicyEventLogger;
-Landroid/app/admin/IDeviceAdminService;
-Landroid/app/admin/IDeviceAdminService$Stub$Proxy;
-Landroid/app/admin/StartInstallingUpdateCallback$Stub$Proxy;
-Landroid/app/AppCompatCallbacks;
-Landroid/app/ApplicationErrorReport;
-Landroid/app/ApplicationLoaders$CachedClassLoader;
-Landroid/app/ApplicationPackageManager$MoveCallbackDelegate;
-Landroid/app/AppOpsManager$1;
-Landroid/app/AppOpsManager$3;
-[Landroid/app/assist/AssistStructure$ViewNode;
-Landroid/app/AutomaticZenRule;
-[Landroid/app/BackStackState;
-Landroid/app/BackStackState;
-Landroid/app/backup/BlobBackupHelper;
-Landroid/app/backup/IBackupCallback$Stub;
-Landroid/app/backup/IBackupCallback$Stub$Proxy;
-Landroid/app/backup/IBackupManagerMonitor$Stub;
-Landroid/app/backup/IBackupManagerMonitor$Stub$Proxy;
-Landroid/app/backup/IBackupObserver$Stub;
-Landroid/app/backup/IBackupObserver$Stub$Proxy;
-Landroid/app/backup/IFullBackupRestoreObserver$Stub;
-Landroid/app/backup/IFullBackupRestoreObserver$Stub$Proxy;
-Landroid/app/backup/ISelectBackupTransportCallback$Stub;
-Landroid/app/backup/ISelectBackupTransportCallback$Stub$Proxy;
-Landroid/app/DownloadManager$CursorTranslator;
-Landroid/app/EnterTransitionCoordinator;
-Landroid/app/ExitTransitionCoordinator;
-Landroid/app/Fragment$InstantiationException;
-Landroid/app/FragmentManager$FragmentLifecycleCallbacks;
-Landroid/app/FragmentManager$OnBackStackChangedListener;
-Landroid/app/FragmentManagerImpl$2;
-Landroid/app/FragmentManagerImpl$AnimateOnHWLayerIfNeededListener;
-Landroid/app/FragmentManagerImpl$StartEnterTransitionListener;
-Landroid/app/FragmentManagerNonConfig;
-[Landroid/app/FragmentState;
-Landroid/app/FragmentTransition$2;
-Landroid/app/FragmentTransition$5;
-Landroid/app/IActivityController$Stub;
-Landroid/app/IActivityController$Stub$Proxy;
-Landroid/app/IAlarmCompleteListener$Stub$Proxy;
-Landroid/app/IAlarmListener$Stub$Proxy;
-Landroid/app/IAssistDataReceiver;
-Landroid/app/IAssistDataReceiver$Stub;
-Landroid/app/IAssistDataReceiver$Stub$Proxy;
-Landroid/app/IBackupAgent$Stub$Proxy;
-Landroid/app/IInstantAppResolver;
-Landroid/app/IInstantAppResolver$Stub;
-Landroid/app/IInstantAppResolver$Stub$Proxy;
-Landroid/app/IInstrumentationWatcher$Stub$Proxy;
-Landroid/app/Instrumentation$ActivityGoing;
-Landroid/app/Instrumentation$ActivityMonitor;
-Landroid/app/Instrumentation$ActivityWaiter;
-Landroid/app/IProcessObserver$Stub$Proxy;
-Landroid/app/IRequestFinishCallback$Stub;
-Landroid/app/IRequestFinishCallback$Stub$Proxy;
-Landroid/app/IServiceConnection$Stub$Proxy;
-Landroid/app/IStopUserCallback$Stub;
-Landroid/app/IStopUserCallback$Stub$Proxy;
-Landroid/app/ITransientNotification$Stub$Proxy;
-Landroid/app/IUiAutomationConnection$Stub$Proxy;
-Landroid/app/IUriGrantsManager$Stub$Proxy;
-Landroid/app/job/IJobService$Stub$Proxy;
-[Landroid/app/job/JobInfo$TriggerContentUri;
-Landroid/app/LoadedApk$SplitDependencyLoaderImpl;
-[Landroid/app/LoaderManagerImpl;
-[Landroid/app/Notification$Action;
-Landroid/app/Notification$BubbleMetadata;
-[Landroid/app/NotificationChannel;
-[Landroid/app/NotificationChannelGroup;
-Landroid/app/PackageInstallObserver$1;
-Landroid/app/PendingIntent$FinishedDispatcher;
-[Landroid/app/Person;
-Landroid/app/PictureInPictureParams;
-Landroid/app/prediction/AppPredictionContext;
-Landroid/app/prediction/AppPredictionSessionId;
-Landroid/app/prediction/AppPredictor;
-Landroid/app/prediction/AppTarget;
-Landroid/app/prediction/AppTargetEvent;
-Landroid/app/prediction/AppTargetId;
-Landroid/app/prediction/IPredictionCallback$Stub;
-Landroid/app/prediction/IPredictionCallback$Stub$Proxy;
-Landroid/app/prediction/IPredictionManager$Stub$Proxy;
-Landroid/app/RemoteAction;
-[Landroid/app/RemoteInput;
-Landroid/app/RemoteServiceException;
-Landroid/app/role/-$$Lambda$o94o2jK_ei-IVw-3oY_QJ49zpAA;
-Landroid/app/role/-$$Lambda$RoleControllerManager$9hUe0y0G47wIHKhViIp3z2IRAIk;
-Landroid/app/role/-$$Lambda$RoleControllerManager$Jsb4ev7pHUqel8_lglNSRLiUzpg;
-Landroid/app/role/IOnRoleHoldersChangedListener$Stub$Proxy;
-Landroid/app/role/IRoleController$Stub;
-Landroid/app/SearchableInfo;
-Landroid/app/SearchableInfo$ActionKeyInfo;
-Landroid/app/servertransaction/ActivityConfigurationChangeItem;
-[Landroid/app/slice/SliceItem;
-[Landroid/app/slice/SliceSpec;
-Landroid/app/StatsManager$StatsdDeathRecipient;
-Landroid/app/trust/TrustManager$1;
-Landroid/app/trust/TrustManager$TrustListener;
-Landroid/app/usage/ICacheQuotaService$Stub$Proxy;
-Landroid/app/usage/NetworkStatsManager$CallbackHandler;
-Landroid/app/usage/NetworkStatsManager$UsageCallback;
-Landroid/app/VoiceInteractor;
-Landroid/app/Vr2dDisplayProperties;
-Landroid/app/WallpaperInfo;
-Landroid/app/WallpaperManager$OnColorsChangedListener;
-Landroid/appwidget/AppWidgetProviderInfo;
-Landroid/bluetooth/-$$Lambda$BluetoothAdapter$2$INSd_aND-SGWhhPZUtIqya_Uxw4;
-Landroid/bluetooth/BluetoothA2dpSink;
-Landroid/bluetooth/BluetoothAvrcpController;
-[Landroid/bluetooth/BluetoothCodecConfig;
-Landroid/bluetooth/BluetoothCodecStatus;
-[Landroid/bluetooth/BluetoothDevice;
-Landroid/bluetooth/BluetoothGattService;
-Landroid/bluetooth/BluetoothHeadsetClient;
-Landroid/bluetooth/BluetoothHidDevice$1;
-Landroid/bluetooth/BluetoothHidDeviceAppQosSettings;
-Landroid/bluetooth/BluetoothHidDeviceAppSdpSettings;
-Landroid/bluetooth/BluetoothHidHost$1;
-Landroid/bluetooth/BluetoothMap$1;
-Landroid/bluetooth/BluetoothMapClient;
-Landroid/bluetooth/BluetoothPan$1;
-Landroid/bluetooth/BluetoothPbap$1;
-Landroid/bluetooth/BluetoothPbap$2;
-Landroid/bluetooth/BluetoothPbapClient;
-Landroid/bluetooth/BluetoothProfileConnector$1;
-Landroid/bluetooth/BluetoothProfileConnector$2;
-Landroid/bluetooth/BluetoothSap$1;
-Landroid/bluetooth/IBluetoothGattCallback$Stub;
-Landroid/bluetooth/IBluetoothGattCallback$Stub$Proxy;
-Landroid/bluetooth/IBluetoothGattServerCallback$Stub;
-Landroid/bluetooth/IBluetoothGattServerCallback$Stub$Proxy;
-Landroid/bluetooth/IBluetoothHidDevice$Stub$Proxy;
-Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub;
-Landroid/bluetooth/IBluetoothHidDeviceCallback$Stub$Proxy;
-Landroid/bluetooth/IBluetoothHidHost$Stub$Proxy;
-Landroid/bluetooth/IBluetoothMap$Stub$Proxy;
-Landroid/bluetooth/IBluetoothMetadataListener$Stub$Proxy;
-Landroid/bluetooth/IBluetoothPan$Stub$Proxy;
-Landroid/bluetooth/IBluetoothPbap$Stub$Proxy;
-Landroid/bluetooth/IBluetoothProfileServiceConnection$Stub$Proxy;
-Landroid/bluetooth/IBluetoothSap$Stub$Proxy;
-Landroid/bluetooth/IBluetoothStateChangeCallback$Stub$Proxy;
-Landroid/bluetooth/le/AdvertiseData;
-Landroid/bluetooth/le/AdvertisingSetParameters;
-Landroid/bluetooth/le/BluetoothLeScanner;
-Landroid/bluetooth/le/IAdvertisingSetCallback$Stub;
-Landroid/bluetooth/le/IAdvertisingSetCallback$Stub$Proxy;
-Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub;
-Landroid/bluetooth/le/IPeriodicAdvertisingCallback$Stub$Proxy;
-Landroid/bluetooth/le/IScannerCallback$Stub;
-Landroid/bluetooth/le/PeriodicAdvertisingParameters;
-Landroid/bluetooth/OobData;
-[Landroid/bluetooth/UidTraffic;
-Landroid/companion/AssociationRequest;
-Landroid/companion/ICompanionDeviceManager$Stub$Proxy;
-Landroid/companion/IFindDeviceCallback$Stub;
-Landroid/companion/IFindDeviceCallback$Stub$Proxy;
-Landroid/compat/Compatibility;
-Landroid/content/ClipData;
-Landroid/content/ClipData$Item;
-Landroid/content/ClipDescription;
-Landroid/content/ContentProviderClient$NotRespondingRunnable;
-[Landroid/content/ContentValues;
-[Landroid/content/Intent;
-[Landroid/content/IntentFilter;
-Landroid/content/IntentSender$FinishedDispatcher;
-Landroid/content/IOnPrimaryClipChangedListener$Stub$Proxy;
-Landroid/content/IRestrictionsManager$Stub$Proxy;
-Landroid/content/ISyncAdapter$Stub$Proxy;
-Landroid/content/ISyncStatusObserver$Stub$Proxy;
-Landroid/content/LocusId;
-Landroid/content/om/IOverlayManager$Stub$Proxy;
-Landroid/content/pm/-$$Lambda$ciir_QAmv6RwJro4I58t77dPnxU;
-Landroid/content/pm/-$$Lambda$n3uXeb1v-YRmq_BWTfosEqUUr9g;
-Landroid/content/pm/-$$Lambda$PackageParser$0aobsT7Zf7WVZCqMZ5z2clAuQf4;
-Landroid/content/pm/-$$Lambda$PackageParser$0DZRgzfgaIMpCOhJqjw6PUiU5vw;
-Landroid/content/pm/-$$Lambda$PackageParser$M-9fHqS_eEp1oYkuKJhRHOGUxf8;
-Landroid/content/pm/-$$Lambda$T1UQAuePWRRmVQ1KzTyMAktZUPM;
-Landroid/content/pm/-$$Lambda$zO9HBUVgPeroyDQPLJE-MNMvSqc;
-[Landroid/content/pm/ActivityInfo;
-Landroid/content/pm/BaseParceledListSlice$1;
-[Landroid/content/pm/ConfigurationInfo;
-Landroid/content/pm/dex/DexMetadataHelper;
-Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub;
-Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback$Stub$Proxy;
-[Landroid/content/pm/FeatureGroupInfo;
-[Landroid/content/pm/FeatureInfo;
-Landroid/content/pm/IDexModuleRegisterCallback$Stub;
-Landroid/content/pm/IDexModuleRegisterCallback$Stub$Proxy;
-Landroid/content/pm/InstantAppIntentFilter;
-Landroid/content/pm/InstantAppResolveInfo;
-Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;
-[Landroid/content/pm/InstrumentationInfo;
-Landroid/content/pm/IOnAppsChangedListener$Stub$Proxy;
-Landroid/content/pm/IPackageDataObserver$Stub$Proxy;
-Landroid/content/pm/IPackageDeleteObserver$Stub;
-Landroid/content/pm/IPackageDeleteObserver$Stub$Proxy;
-Landroid/content/pm/IPackageDeleteObserver2$Stub;
-Landroid/content/pm/IPackageDeleteObserver2$Stub$Proxy;
-Landroid/content/pm/IPackageInstallerCallback$Stub$Proxy;
-Landroid/content/pm/IPackageMoveObserver$Stub$Proxy;
-Landroid/content/pm/IPackageStatsObserver$Stub$Proxy;
-Landroid/content/pm/KeySet;
-Landroid/content/pm/LauncherActivityInfo;
-Landroid/content/pm/LauncherApps$CallbackMessageHandler;
-[Landroid/content/pm/PackageInfo;
-Landroid/content/pm/PackageParser$Instrumentation;
-[Landroid/content/pm/PathPermission;
-[Landroid/content/pm/PermissionInfo;
-[Landroid/content/pm/ProviderInfo;
-[Landroid/content/pm/ServiceInfo;
-[Landroid/content/pm/Signature;
-Landroid/content/pm/SigningInfo;
-Landroid/content/pm/split/SplitAssetDependencyLoader;
-Landroid/content/pm/split/SplitDependencyLoader;
-Landroid/content/pm/SuspendDialogInfo;
-[Landroid/content/pm/VerifierInfo;
-Landroid/content/res/AssetFileDescriptor$AutoCloseInputStream;
-[Landroid/content/res/ColorStateList;
-Landroid/content/res/CompatibilityInfo$Translator;
-Landroid/content/res/FontResourcesParser$FontFamilyFilesResourceEntry;
-[Landroid/content/res/FontResourcesParser$FontFileResourceEntry;
-Landroid/content/res/GradientColor$GradientColorFactory;
-Landroid/content/res/StringBlock$Height;
-[Landroid/content/res/XmlBlock;
-Landroid/content/rollback/IRollbackManager$Stub$Proxy;
-[Landroid/content/SyncAdapterType;
-[Landroid/content/UndoOwner;
-[Landroid/database/CursorWindow;
-Landroid/database/sqlite/SQLiteBindOrColumnIndexOutOfRangeException;
-[Landroid/database/sqlite/SQLiteConnection$Operation;
-Landroid/database/sqlite/SQLiteConnectionPool$1;
-Landroid/database/sqlite/SQLiteDebug$NoPreloadHolder;
-Landroid/database/sqlite/SqliteWrapper;
-Landroid/database/StaleDataException;
-Landroid/graphics/-$$Lambda$ColorSpace$Rgb$iMkODTKa3_8kPZUnZZerD2Lv-yo;
-Landroid/graphics/-$$Lambda$ColorSpace$Rgb$V_0lmM2WEpxGBDV_1G1wvvidn7Y;
-Landroid/graphics/BlendMode$1;
-[Landroid/graphics/ColorSpace;
-Landroid/graphics/ColorSpace$RenderIntent;
-Landroid/graphics/drawable/-$$Lambda$AnimatedVectorDrawable$VectorDrawableAnimatorRT$PzjgSeyQweoFjbEZJP80UteZqm8;
-Landroid/graphics/drawable/-$$Lambda$Drawable$bbJz2VgQAwkXlE27mR8nPMYacEw;
-[Landroid/graphics/drawable/AdaptiveIconDrawable$ChildDrawable;
-Landroid/graphics/drawable/AnimatedImageDrawable$State;
-Landroid/graphics/drawable/AnimatedRotateDrawable$1;
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimatableTransition;
-Landroid/graphics/drawable/AnimatedStateListDrawable$AnimationDrawableTransition;
-Landroid/graphics/drawable/AnimatedVectorDrawable$2;
-Landroid/graphics/drawable/AnimatedVectorDrawable$VectorDrawableAnimatorUI;
-Landroid/graphics/drawable/ColorStateListDrawable;
-Landroid/graphics/drawable/ColorStateListDrawable$ColorStateListDrawableState;
-[Landroid/graphics/drawable/Drawable;
-Landroid/graphics/drawable/DrawableContainer$1;
-[Landroid/graphics/drawable/LayerDrawable$ChildDrawable;
-Landroid/graphics/drawable/LevelListDrawable;
-Landroid/graphics/drawable/LevelListDrawable$LevelListState;
-[Landroid/graphics/drawable/RippleForeground;
-[Landroid/graphics/fonts/FontFamily;
-Landroid/graphics/fonts/FontFileUtil;
-[Landroid/graphics/fonts/FontVariationAxis;
-Landroid/graphics/LeakyTypefaceStorage;
-Landroid/graphics/Rect$UnflattenHelper;
-Landroid/gsi/IGsiService;
-Landroid/gsi/IGsiService$Stub;
-Landroid/gsi/IGsiService$Stub$Proxy;
-Landroid/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback$Stub;
-Landroid/hardware/biometrics/IBiometricConfirmDeviceCredentialCallback$Stub$Proxy;
-Landroid/hardware/biometrics/IBiometricService$Stub$Proxy;
-Landroid/hardware/biometrics/IBiometricServiceReceiver$Stub;
-Landroid/hardware/biometrics/IBiometricServiceReceiver$Stub$Proxy;
-Landroid/hardware/biometrics/IBiometricServiceReceiverInternal$Stub$Proxy;
-Landroid/hardware/camera2/CameraManager$AvailabilityCallback;
-Landroid/hardware/camera2/CameraManager$CameraManagerGlobal;
-Landroid/hardware/camera2/CameraManager$TorchCallback;
-Landroid/hardware/camera2/impl/CameraDeviceImpl;
-Landroid/hardware/camera2/impl/CameraDeviceImpl$CameraHandlerExecutor;
-Landroid/hardware/camera2/legacy/LegacyMetadataMapper;
-Landroid/hardware/camera2/marshal/impl/MarshalQueryableBoolean$MarshalerBoolean;
-[Landroid/hardware/camera2/marshal/MarshalQueryable;
-Landroid/hardware/camera2/utils/ArrayUtils;
-[Landroid/hardware/CameraStatus;
-Landroid/hardware/CameraStatus;
-Landroid/hardware/contexthub/V1_0/ContextHubMsg;
-Landroid/hardware/contexthub/V1_0/MemRange;
-Landroid/hardware/contexthub/V1_0/PhysicalSensor;
-Landroid/hardware/display/-$$Lambda$NightDisplayListener$sOK1HmSbMnFLzc4SdDD1WpVWJiI;
-Landroid/hardware/display/IVirtualDisplayCallback$Stub;
-Landroid/hardware/display/IVirtualDisplayCallback$Stub$Proxy;
-Landroid/hardware/display/NightDisplayListener;
-Landroid/hardware/display/NightDisplayListener$1;
-Landroid/hardware/display/Time;
-Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub;
-Landroid/hardware/fingerprint/IFingerprintClientActiveCallback$Stub$Proxy;
-Landroid/hardware/fingerprint/IFingerprintServiceReceiver$Stub$Proxy;
-Landroid/hardware/input/IInputDevicesChangedListener$Stub$Proxy;
-Landroid/hardware/input/ITabletModeChangedListener$Stub;
-Landroid/hardware/input/ITabletModeChangedListener$Stub$Proxy;
-Landroid/hardware/ISensorPrivacyManager$Stub$Proxy;
-Landroid/hardware/location/ContextHubClient;
-Landroid/hardware/location/ContextHubManager$2;
-Landroid/hardware/location/ContextHubManager$3;
-Landroid/hardware/location/ContextHubManager$4;
-Landroid/hardware/location/ContextHubMessage;
-Landroid/hardware/location/ContextHubTransaction;
-Landroid/hardware/location/GeofenceHardwareImpl;
-Landroid/hardware/location/GeofenceHardwareImpl$1;
-Landroid/hardware/location/GeofenceHardwareImpl$2;
-Landroid/hardware/location/GeofenceHardwareImpl$3;
-Landroid/hardware/location/GeofenceHardwareImpl$GeofenceTransition;
-Landroid/hardware/location/GeofenceHardwareImpl$Reaper;
-Landroid/hardware/location/GeofenceHardwareMonitorEvent;
-Landroid/hardware/location/GeofenceHardwareRequest;
-[Landroid/hardware/location/GeofenceHardwareRequestParcelable;
-Landroid/hardware/location/GeofenceHardwareRequestParcelable;
-Landroid/hardware/location/GeofenceHardwareService$1;
-Landroid/hardware/location/IActivityRecognitionHardware$Stub$Proxy;
-Landroid/hardware/location/IActivityRecognitionHardwareClient;
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub;
-Landroid/hardware/location/IActivityRecognitionHardwareClient$Stub$Proxy;
-Landroid/hardware/location/IContextHubCallback$Stub$Proxy;
-Landroid/hardware/location/IContextHubClient$Stub$Proxy;
-Landroid/hardware/location/IContextHubClientCallback$Stub$Proxy;
-Landroid/hardware/location/IContextHubService$Stub$Proxy;
-Landroid/hardware/location/IContextHubTransactionCallback$Stub$Proxy;
-Landroid/hardware/location/IGeofenceHardware;
-Landroid/hardware/location/IGeofenceHardware$Stub$Proxy;
-Landroid/hardware/location/IGeofenceHardwareCallback;
-Landroid/hardware/location/IGeofenceHardwareCallback$Stub;
-Landroid/hardware/location/IGeofenceHardwareCallback$Stub$Proxy;
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback;
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub;
-Landroid/hardware/location/IGeofenceHardwareMonitorCallback$Stub$Proxy;
-[Landroid/hardware/location/MemoryRegion;
-Landroid/hardware/location/NanoApp;
-Landroid/hardware/location/NanoAppBinary;
-Landroid/hardware/location/NanoAppFilter;
-Landroid/hardware/radio/config/V1_1/ModemsConfig;
-Landroid/hardware/radio/config/V1_2/SimSlotStatus;
-Landroid/hardware/radio/deprecated/V1_0/IOemHook$Proxy;
-Landroid/hardware/radio/V1_0/Call;
-Landroid/hardware/radio/V1_0/CallForwardInfo;
-Landroid/hardware/radio/V1_0/CarrierRestrictions;
-Landroid/hardware/radio/V1_0/CdmaCallWaiting;
-Landroid/hardware/radio/V1_0/CdmaInformationRecords;
-Landroid/hardware/radio/V1_0/CdmaSignalInfoRecord;
-Landroid/hardware/radio/V1_0/CdmaSmsAddress;
-Landroid/hardware/radio/V1_0/CdmaSmsMessage;
-Landroid/hardware/radio/V1_0/CdmaSmsSubaddress;
-Landroid/hardware/radio/V1_0/CellIdentity;
-Landroid/hardware/radio/V1_0/CellIdentityCdma;
-Landroid/hardware/radio/V1_0/CellIdentityGsm;
-Landroid/hardware/radio/V1_0/CellIdentityTdscdma;
-Landroid/hardware/radio/V1_0/CellIdentityWcdma;
-Landroid/hardware/radio/V1_0/CellInfo;
-Landroid/hardware/radio/V1_0/CellInfoGsm;
-Landroid/hardware/radio/V1_0/CellInfoLte;
-Landroid/hardware/radio/V1_0/CellInfoTdscdma;
-Landroid/hardware/radio/V1_0/CellInfoWcdma;
-Landroid/hardware/radio/V1_0/DataCallFailCause;
-Landroid/hardware/radio/V1_0/GsmSmsMessage;
-Landroid/hardware/radio/V1_0/HardwareConfigModem;
-Landroid/hardware/radio/V1_0/HardwareConfigSim;
-Landroid/hardware/radio/V1_0/ImsSmsMessage;
-Landroid/hardware/radio/V1_0/LastCallFailCauseInfo;
-Landroid/hardware/radio/V1_0/LceDataInfo;
-Landroid/hardware/radio/V1_0/LceStatusInfo;
-Landroid/hardware/radio/V1_0/NeighboringCell;
-Landroid/hardware/radio/V1_0/OperatorInfo;
-Landroid/hardware/radio/V1_0/PcoDataInfo;
-Landroid/hardware/radio/V1_0/SendSmsResult;
-Landroid/hardware/radio/V1_0/SignalStrength;
-Landroid/hardware/radio/V1_0/SimApdu;
-Landroid/hardware/radio/V1_0/SimRefreshResult;
-Landroid/hardware/radio/V1_0/StkCcUnsolSsResult;
-Landroid/hardware/radio/V1_0/SuppSvcNotification;
-Landroid/hardware/radio/V1_0/UusInfo;
-Landroid/hardware/radio/V1_1/IRadio$Proxy;
-Landroid/hardware/radio/V1_1/KeepaliveStatus;
-Landroid/hardware/radio/V1_1/NetworkScanResult;
-Landroid/hardware/radio/V1_2/CellIdentityCdma;
-Landroid/hardware/radio/V1_2/CellIdentityGsm;
-Landroid/hardware/radio/V1_2/CellIdentityLte;
-Landroid/hardware/radio/V1_2/CellIdentityTdscdma;
-Landroid/hardware/radio/V1_2/CellIdentityWcdma;
-Landroid/hardware/radio/V1_2/CellInfoCdma;
-Landroid/hardware/radio/V1_2/CellInfoGsm;
-Landroid/hardware/radio/V1_2/CellInfoLte;
-Landroid/hardware/radio/V1_2/CellInfoTdscdma;
-Landroid/hardware/radio/V1_2/CellInfoWcdma;
-Landroid/hardware/radio/V1_2/LinkCapacityEstimate;
-Landroid/hardware/radio/V1_2/NetworkScanResult;
-Landroid/hardware/radio/V1_2/PhysicalChannelConfig;
-Landroid/hardware/radio/V1_2/TdscdmaSignalStrength;
-Landroid/hardware/radio/V1_4/CardStatus;
-Landroid/hardware/radio/V1_4/CarrierRestrictionsWithPriority;
-Landroid/hardware/radio/V1_4/CellInfo;
-Landroid/hardware/radio/V1_4/DataRegStateResult;
-Landroid/hardware/radio/V1_4/DataRegStateResult$VopsInfo;
-Landroid/hardware/radio/V1_4/EmergencyNumber;
-Landroid/hardware/radio/V1_4/NetworkScanResult;
-Landroid/hardware/radio/V1_4/NrIndicators;
-Landroid/hardware/radio/V1_4/PhysicalChannelConfig;
-Landroid/hardware/radio/V1_4/SetupDataCallResult;
-Landroid/hardware/radio/V1_4/SignalStrength;
-Landroid/hardware/SensorAdditionalInfo;
-Landroid/hardware/SensorPrivacyManager$1;
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub;
-Landroid/hardware/soundtrigger/IRecognitionStatusCallback$Stub$Proxy;
-[Landroid/hardware/soundtrigger/SoundTrigger$ConfidenceLevel;
-[Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionExtra;
-Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate;
-Landroid/hardware/soundtrigger/SoundTriggerModule$NativeEventHandlerDelegate$1;
-Landroid/hardware/SystemSensorManager$TriggerEventQueue;
-Landroid/hardware/TriggerEvent;
-Landroid/hardware/usb/UsbAccessory;
-Landroid/icu/impl/locale/InternalLocaleBuilder;
-Landroid/icu/impl/locale/LanguageTag;
-Landroid/icu/text/BidiLine;
-Landroid/icu/text/Edits$Iterator;
-Landroid/inputmethodservice/-$$Lambda$InputMethodService$8T9TmAUIN7vW9eU6kTg8309_d4E;
-Landroid/inputmethodservice/-$$Lambda$InputMethodService$wp8DeVGx_WDOPw4F6an7QbwVxf0;
-Landroid/inputmethodservice/AbstractInputMethodService;
-Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodImpl;
-Landroid/inputmethodservice/AbstractInputMethodService$AbstractInputMethodSessionImpl;
-Landroid/inputmethodservice/IInputMethodSessionWrapper;
-Landroid/inputmethodservice/IInputMethodSessionWrapper$ImeInputEventReceiver;
-Landroid/inputmethodservice/IInputMethodWrapper;
-Landroid/inputmethodservice/IInputMethodWrapper$InputMethodSessionCallbackWrapper;
-Landroid/inputmethodservice/InputMethodService;
-Landroid/inputmethodservice/InputMethodService$InputMethodSessionImpl;
-Landroid/inputmethodservice/InputMethodService$Insets;
-Landroid/inputmethodservice/InputMethodService$SettingsObserver;
-Landroid/internal/hidl/base/V1_0/DebugInfo;
-Landroid/location/Country;
-Landroid/location/CountryDetector$ListenerTransport;
-Landroid/location/Criteria;
-Landroid/location/Geofence;
-Landroid/location/GnssClock;
-Landroid/location/GnssMeasurement;
-Landroid/location/GnssMeasurementCorrections;
-Landroid/location/IBatchedLocationCallback$Stub$Proxy;
-Landroid/location/ICountryListener$Stub;
-Landroid/location/ICountryListener$Stub$Proxy;
-Landroid/location/IFusedGeofenceHardware$Stub;
-Landroid/location/IFusedGeofenceHardware$Stub$Proxy;
-Landroid/location/IGeocodeProvider;
-Landroid/location/IGeocodeProvider$Stub;
-Landroid/location/IGeocodeProvider$Stub$Proxy;
-Landroid/location/IGeofenceProvider;
-Landroid/location/IGeofenceProvider$Stub;
-Landroid/location/IGeofenceProvider$Stub$Proxy;
-Landroid/location/IGnssMeasurementsListener$Stub$Proxy;
-Landroid/location/IGnssNavigationMessageListener$Stub$Proxy;
-Landroid/location/IGnssStatusListener$Stub$Proxy;
-Landroid/location/IGpsGeofenceHardware$Stub$Proxy;
-Landroid/location/ILocationListener$Stub$Proxy;
-Landroid/location/LocationManager$GnssStatusListenerTransport$1;
-Landroid/media/-$$Lambda$MediaCodecInfo$VideoCapabilities$DpgwEn-gVFZT9EtP3qcxpiA2G0M;
-[Landroid/media/AudioDeviceInfo;
-Landroid/media/AudioFocusInfo;
-Landroid/media/AudioFocusRequest;
-Landroid/media/AudioManager$BlockingFocusResultReceiver;
-Landroid/media/AudioManager$SafeWaitObject;
-[Landroid/media/AudioPatch;
-Landroid/media/audiopolicy/AudioPolicyConfig;
-Landroid/media/audiopolicy/IAudioPolicyCallback;
-Landroid/media/audiopolicy/IAudioPolicyCallback$Stub;
-Landroid/media/audiopolicy/IAudioPolicyCallback$Stub$Proxy;
-[Landroid/media/AudioPort;
-Landroid/media/AudioRecordingMonitorImpl;
-Landroid/media/AudioRecordingMonitorImpl$1;
-[Landroid/media/ExifInterface$Rational;
-Landroid/media/ExifInterface$Rational;
-Landroid/media/IAudioFocusDispatcher$Stub$Proxy;
-Landroid/media/IAudioServerStateDispatcher$Stub$Proxy;
-Landroid/media/IMediaRouter2Client$Stub;
-Landroid/media/IMediaRouter2Client$Stub$Proxy;
-Landroid/media/IMediaRouter2Manager$Stub;
-Landroid/media/IMediaRouter2Manager$Stub$Proxy;
-Landroid/media/IPlaybackConfigDispatcher$Stub$Proxy;
-Landroid/media/IRecordingConfigDispatcher$Stub$Proxy;
-Landroid/media/IRemoteVolumeController$Stub$Proxy;
-Landroid/media/IVolumeController$Stub$Proxy;
-Landroid/media/MediaCodec$BufferMap$CodecBuffer;
-[Landroid/media/MediaCodecInfo;
-[Landroid/media/MediaCodecInfo$CodecCapabilities;
-[Landroid/media/MediaCodecInfo$CodecProfileLevel;
-Landroid/media/MediaCodecInfo$VideoCapabilities$PerformancePoint;
-Landroid/media/MediaHTTPService;
-Landroid/media/MediaPlayer$6;
-Landroid/media/MediaPlayer$DrmInfo;
-Landroid/media/MediaPlayer$EventHandler$1;
-Landroid/media/MediaPlayer$EventHandler$2;
-[Landroid/media/MediaPlayer$TrackInfo;
-Landroid/media/MediaPlayer$TrackInfo;
-Landroid/media/MediaRoute2Info;
-Landroid/media/MediaRouter$RouteGroup;
-Landroid/media/MediaRouterClientState;
-Landroid/media/MediaRouterClientState$RouteInfo;
-[Landroid/media/MediaTimeProvider$OnMediaTimeListener;
-Landroid/media/NativeRoutingEventHandlerDelegate;
-Landroid/media/projection/IMediaProjection$Stub;
-Landroid/media/projection/IMediaProjection$Stub$Proxy;
-Landroid/media/projection/IMediaProjectionManager$Stub$Proxy;
-Landroid/media/projection/IMediaProjectionWatcherCallback$Stub$Proxy;
-Landroid/media/projection/MediaProjectionManager$CallbackDelegate;
-Landroid/media/Rating;
-Landroid/media/Ringtone;
-Landroid/media/Session2Token;
-Landroid/media/session/IActiveSessionsListener$Stub$Proxy;
-Landroid/media/session/ICallback$Stub$Proxy;
-Landroid/media/session/IOnMediaKeyListener$Stub$Proxy;
-Landroid/media/session/IOnVolumeKeyLongPressListener$Stub$Proxy;
-Landroid/media/session/ISessionCallback$Stub$Proxy;
-Landroid/media/session/ISessionControllerCallback$Stub$Proxy;
-Landroid/media/session/MediaController$PlaybackInfo;
-Landroid/media/session/MediaSessionManager$CallbackStub;
-Landroid/media/SubtitleController;
-Landroid/media/SubtitleController$2;
-Landroid/media/SubtitleData;
-Landroid/media/SubtitleTrack;
-Landroid/media/TimedMetaData;
-Landroid/media/TimedText;
-Landroid/net/-$$Lambda$Network$KD6DxaMRJIcajhj36TU1K7lJnHQ;
-Landroid/net/-$$Lambda$NetworkFactory$HfslgqyaKc_n0wXX5_qRYVZoGfI;
-Landroid/net/-$$Lambda$NetworkStats$xvFSsVoR0k5s7Fhw1yPDPVIpx8A;
-Landroid/net/ConnectionInfo;
-Landroid/net/DataUsageRequest;
-Landroid/net/EventLogTags;
-Landroid/net/IIpConnectivityMetrics$Stub$Proxy;
-Landroid/net/INetdEventCallback$Stub$Proxy;
-Landroid/net/INetworkManagementEventObserver$Stub$Proxy;
-Landroid/net/INetworkPolicyListener$Stub$Proxy;
-Landroid/net/INetworkRecommendationProvider;
-Landroid/net/INetworkRecommendationProvider$Stub;
-Landroid/net/INetworkRecommendationProvider$Stub$Proxy;
-Landroid/net/INetworkScoreCache$Stub$Proxy;
-Landroid/net/ISocketKeepaliveCallback$Stub;
-Landroid/net/ISocketKeepaliveCallback$Stub$Proxy;
-Landroid/net/ITetheringEventCallback$Stub;
-Landroid/net/ITetheringEventCallback$Stub$Proxy;
-Landroid/net/ITetheringStatsProvider$Stub$Proxy;
-Landroid/net/LinkProperties$CompareResult;
-Landroid/net/metrics/ApfStats;
-Landroid/net/metrics/ConnectStats;
-Landroid/net/metrics/DhcpClientEvent;
-Landroid/net/metrics/DnsEvent;
-Landroid/net/metrics/IpManagerEvent;
-Landroid/net/metrics/IpReachabilityEvent;
-Landroid/net/metrics/NetworkEvent;
-Landroid/net/metrics/NetworkMetrics$Metrics;
-Landroid/net/metrics/NetworkMetrics$Summary;
-Landroid/net/metrics/RaEvent;
-Landroid/net/metrics/ValidationProbeEvent;
-Landroid/net/metrics/WakeupStats;
-[Landroid/net/Network;
-[Landroid/net/NetworkCapabilities;
-[Landroid/net/NetworkKey;
-[Landroid/net/NetworkPolicy;
-Landroid/net/NetworkPolicyManager$1;
-[Landroid/net/NetworkState;
-Landroid/net/NetworkStatsHistory$Entry;
-Landroid/net/NetworkStatsHistory$ParcelUtils;
-Landroid/net/nsd/INsdManager$Stub$Proxy;
-Landroid/net/nsd/NsdManager$ServiceHandler;
-Landroid/net/PacProxySelector;
-Landroid/net/RssiCurve;
-[Landroid/net/ScoredNetwork;
-Landroid/net/shared/Inet4AddressUtils;
-Landroid/net/shared/InetAddressUtils;
-Landroid/net/sip/ISipService$Stub$Proxy;
-Landroid/net/SntpClient;
-Landroid/net/SntpClient$InvalidServerReplyException;
-Landroid/net/StaticIpConfiguration$Builder;
-[Landroid/net/UidRange;
-[Landroid/net/Uri;
-[Landroid/net/wifi/AnqpInformationElement;
-Landroid/net/wifi/AnqpInformationElement;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub;
-Landroid/net/wifi/hotspot2/IProvisioningCallback$Stub$Proxy;
-Landroid/net/wifi/IDppCallback$Stub;
-Landroid/net/wifi/IDppCallback$Stub$Proxy;
-Landroid/net/wifi/INetworkRequestMatchCallback$Stub;
-Landroid/net/wifi/INetworkRequestMatchCallback$Stub$Proxy;
-Landroid/net/wifi/IOnWifiUsabilityStatsListener$Stub;
-Landroid/net/wifi/IOnWifiUsabilityStatsListener$Stub$Proxy;
-Landroid/net/wifi/ISoftApCallback$Stub$Proxy;
-Landroid/net/wifi/ITrafficStateCallback$Stub$Proxy;
-Landroid/net/wifi/IWifiScanner$Stub$Proxy;
-Landroid/net/wifi/p2p/IWifiP2pManager$Stub$Proxy;
-Landroid/net/wifi/rtt/IRttCallback$Stub;
-Landroid/net/wifi/rtt/IRttCallback$Stub$Proxy;
-Landroid/net/wifi/rtt/RangingRequest;
-[Landroid/net/wifi/ScanResult$InformationElement;
-[Landroid/net/wifi/ScanResult$RadioChainInfo;
-Landroid/net/wifi/SupplicantState$2;
-Landroid/net/wifi/WifiConfiguration$KeyMgmt;
-Landroid/net/wifi/WifiManager$MulticastLock;
-Landroid/net/wifi/WifiManager$SoftApCallbackProxy;
-Landroid/net/wifi/WifiManager$TrafficStateCallbackProxy;
-Landroid/net/wifi/WifiNetworkScoreCache$CacheListener$1;
-Landroid/net/wifi/WifiNetworkSpecifier;
-Landroid/net/wifi/WifiNetworkSuggestion;
-[Landroid/net/wifi/WifiScanner$ChannelSpec;
-Landroid/net/wifi/WifiScanner$OperationResult;
-Landroid/net/wifi/WifiScanner$ParcelableScanData;
-Landroid/net/wifi/WifiScanner$ParcelableScanResults;
-[Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
-Landroid/net/wifi/WifiScanner$ScanSettings$HiddenNetwork;
-Landroid/nfc/BeamShareData;
-Landroid/nfc/IAppCallback$Stub$Proxy;
-Landroid/nfc/INfcUnlockHandler$Stub;
-Landroid/nfc/INfcUnlockHandler$Stub$Proxy;
-Landroid/nfc/ITagRemovedCallback$Stub;
-Landroid/nfc/ITagRemovedCallback$Stub$Proxy;
-Landroid/nfc/Tag;
-Landroid/nfc/TechListParcel;
-Landroid/os/-$$Lambda$HidlSupport$GHxmwrIWiKN83tl6aMQt_nV5hiw;
-Landroid/os/-$$Lambda$PowerManager$WakeLock$VvFzmRZ4ZGlXx7u3lSAJ_T-YUjw;
-Landroid/os/-$$Lambda$StrictMode$AndroidBlockGuardPolicy$FxZGA9KtfTewqdcxlUwvIe5Nx9I;
-Landroid/os/-$$Lambda$StrictMode$UFC_nI1x6u8ZwMQmA7bmj9NHZz4;
-Landroid/os/AsyncTask$5;
-Landroid/os/BatteryProperty;
-Landroid/os/BatterySaverPolicyConfig;
-Landroid/os/BatteryStats$2;
-Landroid/os/BatteryStats$HistoryPrinter;
-[Landroid/os/Bundle;
-Landroid/os/connectivity/CellularBatteryStats;
-Landroid/os/connectivity/GpsBatteryStats;
-Landroid/os/connectivity/WifiBatteryStats;
-[Landroid/os/Debug$MemoryInfo;
-Landroid/os/FileUtils$1;
-Landroid/os/GraphicsEnvironment$1;
-Landroid/os/health/HealthKeys$Constant;
-[Landroid/os/health/HealthKeys$SortedIntArray;
-Landroid/os/health/HealthKeys$SortedIntArray;
-Landroid/os/health/HealthStatsWriter;
-Landroid/os/IDeviceIdentifiersPolicyService$Stub$Proxy;
-Landroid/os/IMaintenanceActivityListener$Stub;
-Landroid/os/IMaintenanceActivityListener$Stub$Proxy;
-Landroid/os/INetworkActivityListener;
-Landroid/os/INetworkActivityListener$Stub;
-Landroid/os/INetworkActivityListener$Stub$Proxy;
-Landroid/os/IProgressListener$Stub$Proxy;
-Landroid/os/IRemoteCallback$Stub$Proxy;
-Landroid/os/IServiceManager$Stub;
-Landroid/os/IServiceManager$Stub$Proxy;
-Landroid/os/IThermalEventListener$Stub$Proxy;
-Landroid/os/IThermalService$Stub$Proxy;
-Landroid/os/IThermalStatusListener$Stub$Proxy;
-Landroid/os/IVoldTaskListener$Stub;
-Landroid/os/IVoldTaskListener$Stub$Proxy;
-Landroid/os/MessageQueue$FileDescriptorRecord;
-[Landroid/os/MessageQueue$IdleHandler;
-Landroid/os/NetworkOnMainThreadException;
-[Landroid/os/Parcelable;
-[Landroid/os/ParcelFileDescriptor;
-[Landroid/os/ParcelUuid;
-[Landroid/os/PatternMatcher;
-[Landroid/os/PersistableBundle;
-[Landroid/os/RegistrantList;
-Landroid/os/RemoteCallback$1;
-Landroid/os/RemoteCallback$2;
-Landroid/os/SharedMemory$Closer;
-Landroid/os/SharedMemory$MemoryRegistration;
-Landroid/os/SharedMemory$Unmapper;
-Landroid/os/StatsDimensionsValue;
-[Landroid/os/storage/DiskInfo;
-Landroid/os/storage/IObbActionListener$Stub$Proxy;
-Landroid/os/storage/IStorageEventListener$Stub$Proxy;
-Landroid/os/storage/IStorageShutdownObserver$Stub;
-Landroid/os/storage/IStorageShutdownObserver$Stub$Proxy;
-[Landroid/os/storage/StorageVolume;
-[Landroid/os/storage/VolumeInfo;
-[Landroid/os/storage/VolumeRecord;
-Landroid/os/strictmode/ContentUriWithoutPermissionViolation;
-Landroid/os/strictmode/CredentialProtectedWhileLockedViolation;
-Landroid/os/strictmode/CustomViolation;
-Landroid/os/strictmode/DiskWriteViolation;
-Landroid/os/strictmode/ExplicitGcViolation;
-Landroid/os/strictmode/ImplicitDirectBootViolation;
-Landroid/os/strictmode/IntentReceiverLeakedViolation;
-Landroid/os/strictmode/LeakedClosableViolation;
-Landroid/os/strictmode/NetworkViolation;
-Landroid/os/strictmode/ResourceMismatchViolation;
-Landroid/os/strictmode/ServiceConnectionLeakedViolation;
-Landroid/os/strictmode/SqliteObjectLeakedViolation;
-Landroid/os/strictmode/UnbufferedIoViolation;
-Landroid/os/strictmode/UntaggedSocketViolation;
-Landroid/os/SystemService;
-Landroid/os/SystemService$State;
-[Landroid/os/WorkSource;
-Landroid/permission/-$$Lambda$PermissionControllerManager$Iy-7wiKMCV-MFSPGyIJxP_DSf8E;
-Landroid/permission/-$$Lambda$PermissionControllerManager$yYvntg8BoN_6kTWlcdYA7GFZJjs;
-Landroid/permission/IPermissionController$Stub;
-Landroid/permission/IPermissionManager$Stub;
-Landroid/permission/IPermissionManager$Stub$Proxy;
-Landroid/preference/PreferenceInflater;
-Landroid/preference/PreferenceScreen;
-Landroid/print/IPrintSpooler;
-Landroid/print/IPrintSpooler$Stub;
-Landroid/print/IPrintSpooler$Stub$Proxy;
-Landroid/print/PrintJobInfo;
-Landroid/printservice/PrintServiceInfo;
-Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingEncoder;
-Landroid/privacy/internal/rappor/RapporConfig;
-Landroid/privacy/internal/rappor/RapporEncoder;
-Landroid/provider/BlockedNumberContract;
-Landroid/provider/BlockedNumberContract$SystemContract;
-Landroid/provider/ContactsContract$PhoneLookup;
-Landroid/provider/DeviceConfig$2;
-Landroid/provider/Downloads;
-[Landroid/provider/FontsContract$FontInfo;
-Landroid/provider/Telephony$Mms;
-Landroid/security/IKeyChainService$Stub;
-Landroid/security/IKeyChainService$Stub$Proxy;
-Landroid/security/keymaster/KeymasterBooleanArgument;
-Landroid/security/keymaster/KeymasterDateArgument;
-Landroid/security/keymaster/KeymasterDefs;
-Landroid/security/keymaster/KeymasterLongArgument;
-Landroid/security/KeyStore$KeyCharacteristicsCallbackResult;
-Landroid/security/KeyStore$KeyCharacteristicsPromise;
-Landroid/security/KeyStore$KeystoreResultPromise;
-Landroid/security/KeyStore$OperationPromise;
-Landroid/security/KeyStore$State;
-Landroid/security/keystore/AndroidKeyStoreLoadStoreParameter;
-Landroid/security/keystore/AndroidKeyStorePrivateKey;
-Landroid/security/keystore/AndroidKeyStoreSecretKey;
-Landroid/security/keystore/ArrayUtils;
-Landroid/security/keystore/KeyProperties$Digest;
-Landroid/security/keystore/KeyStoreConnectException;
-Landroid/security/keystore/KeystoreResponse;
-Landroid/security/keystore/recovery/KeyChainProtectionParams;
-Landroid/security/keystore/recovery/KeyChainSnapshot;
-Landroid/security/keystore/recovery/KeyDerivationParams;
-Landroid/security/keystore/recovery/RecoveryCertPath;
-Landroid/security/keystore/recovery/WrappedApplicationKey;
-Landroid/security/keystore/recovery/X509CertificateParsingUtils;
-Landroid/security/keystore/UserNotAuthenticatedException;
-Landroid/security/keystore/Utils;
-Landroid/security/net/config/Domain;
-Landroid/security/net/config/ResourceCertificateSource;
-Landroid/security/net/config/TrustedCertificateStoreAdapter;
-Landroid/security/net/config/UserCertificateSource$NoPreloadHolder;
-Landroid/security/net/config/WfaCertificateSource;
-Landroid/security/net/config/WfaCertificateSource$NoPreloadHolder;
-Landroid/service/appprediction/IPredictionService;
-Landroid/service/appprediction/IPredictionService$Stub;
-Landroid/service/appprediction/IPredictionService$Stub$Proxy;
-Landroid/service/autofill/augmented/IAugmentedAutofillService;
-Landroid/service/autofill/augmented/IAugmentedAutofillService$Stub;
-Landroid/service/autofill/augmented/IAugmentedAutofillService$Stub$Proxy;
-Landroid/service/autofill/AutofillServiceInfo;
-Landroid/service/autofill/FillResponse;
-Landroid/service/autofill/IAutoFillService;
-Landroid/service/autofill/IAutoFillService$Stub;
-Landroid/service/autofill/IAutoFillService$Stub$Proxy;
-Landroid/service/autofill/UserData;
-Landroid/service/contentcapture/ContentCaptureServiceInfo;
-Landroid/service/contentcapture/FlushMetrics;
-Landroid/service/contentcapture/IContentCaptureService;
-Landroid/service/contentcapture/IContentCaptureService$Stub;
-Landroid/service/contentcapture/IContentCaptureService$Stub$Proxy;
-Landroid/service/dreams/IDreamService;
-Landroid/service/dreams/IDreamService$Stub;
-Landroid/service/dreams/IDreamService$Stub$Proxy;
-[Landroid/service/euicc/EuiccProfileInfo;
-Landroid/service/gatekeeper/GateKeeperResponse;
-[Landroid/service/notification/Condition;
-Landroid/service/notification/IConditionProvider$Stub$Proxy;
-Landroid/service/notification/INotificationListener$Stub$Proxy;
-Landroid/service/notification/ScheduleCalendar;
-Landroid/service/notification/SnoozeCriterion;
-[Landroid/service/notification/StatusBarNotification;
-[Landroid/service/notification/ZenModeConfig$ZenRule;
-Landroid/service/persistentdata/IPersistentDataBlockService$Stub$Proxy;
-Landroid/service/textclassifier/ITextClassifierCallback$Stub;
-Landroid/service/textclassifier/ITextClassifierCallback$Stub$Proxy;
-Landroid/service/trust/ITrustAgentService;
-Landroid/service/trust/ITrustAgentService$Stub;
-Landroid/service/trust/ITrustAgentService$Stub$Proxy;
-Landroid/service/voice/IVoiceInteractionService$Stub$Proxy;
-Landroid/service/voice/IVoiceInteractionSession$Stub;
-Landroid/service/voice/IVoiceInteractionSession$Stub$Proxy;
-Landroid/service/voice/IVoiceInteractionSessionService$Stub$Proxy;
-Landroid/service/voice/VoiceInteractionServiceInfo;
-Landroid/service/vr/IPersistentVrStateCallbacks$Stub$Proxy;
-Landroid/service/vr/IVrManager$Stub$Proxy;
-Landroid/service/vr/IVrStateCallbacks$Stub$Proxy;
-Landroid/service/wallpaper/IWallpaperEngine$Stub$Proxy;
-Landroid/service/wallpaper/IWallpaperService$Stub$Proxy;
-Landroid/stats/devicepolicy/nano/StringList;
-Landroid/sysprop/ProductProperties;
-[Landroid/system/StructPollfd;
-Landroid/system/suspend/WakeLockInfo;
-Landroid/telecom/-$$Lambda$cyYWqCYT05eM23eLVm4oQ5DrYjw;
-Landroid/telecom/-$$Lambda$qa4s1Fm2YuohEunaJUJcmJXDXG0;
-Landroid/telecom/AudioState;
-Landroid/telecom/Conference;
-Landroid/telecom/Conferenceable;
-Landroid/telecom/Connection;
-Landroid/telecom/Connection$FailureSignalingConnection;
-Landroid/telecom/ConnectionRequest;
-Landroid/telecom/ConnectionService$1;
-Landroid/telecom/ConnectionService$2;
-Landroid/telecom/ConnectionService$3;
-Landroid/telecom/ConnectionService$4;
-Landroid/telecom/ConnectionService$5;
-Landroid/telecom/ConnectionServiceAdapter;
-Landroid/telecom/DisconnectCause;
-Landroid/telecom/Logging/-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E;
-Landroid/telecom/Logging/-$$Lambda$SessionManager$hhtZwTEbvO-fLNlAvB6Do9_2gW4;
-Landroid/telecom/Logging/-$$Lambda$SessionManager$VyH2gT1EjIvzDy_C9JfTT60CISM;
-Landroid/telecom/Logging/EventManager;
-Landroid/telecom/Logging/EventManager$Event;
-Landroid/telecom/Logging/EventManager$EventListener;
-Landroid/telecom/Logging/EventManager$EventRecord;
-Landroid/telecom/Logging/Runnable;
-Landroid/telecom/Logging/Runnable$1;
-Landroid/telecom/Logging/Session;
-Landroid/telecom/Logging/Session$Info;
-Landroid/telecom/Logging/SessionManager;
-Landroid/telecom/Logging/SessionManager$ISessionListener;
-Landroid/telecom/ParcelableConference;
-Landroid/telecom/ParcelableConnection;
-Landroid/telecom/RemoteConnectionManager;
-Landroid/telecom/StatusHints;
-Landroid/telecom/VideoProfile;
-Landroid/telephony/-$$Lambda$DataFailCause$djkZSxdG-s-w2L5rQKiGu6OudyY;
-Landroid/telephony/-$$Lambda$MLKtmRGKP3e0WU7x_KyS5-Vg8q4;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$0s34qsuHFsa43jUHrTkD62ni6Ds;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2cMrwdqnKBpixpApeIX38rmRLak;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2VMO21pFQN-JN3kpn6vQN1zPFEU;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$4NHt5Shg_DHV-T1IxfcQLHP5-j0;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$aysbwPqxcLV_5w6LP0TzZu2D-ew;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$bELzxgwsPigyVKYkAXBO2BjcSm8;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$dUc3j82sK9P9Zpaq-91n9bk_Rpc;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Hbn6-eZxY2p3rjOfStodI04A8E8;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$ipH9N0fJiGE9EBJHahQeXcCZXzo;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$JalixlMNdjktPsNntP_JT9pymhs;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$jlNX9JiqGSNg9W49vDcKucKdeCI;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$nnG75RvQ1_1KZGJk1ySeCH1JJRg;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Q2A8FgYlU8_D6PD78tThGut_rTc;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$XyayAGWQZC2dNjwr697SfSGBBOc;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$yvQnAlFGg5EWDG2vcA9X-4xnalA;
-Landroid/telephony/-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$YY3srkIkMm8vTSFJZHoiKzUUrGs;
-Landroid/telephony/AccessNetworkConstants$AccessNetworkType;
-Landroid/telephony/cdma/CdmaCellLocation;
-Landroid/telephony/CellConfigLte;
-Landroid/telephony/CellIdentityCdma;
-Landroid/telephony/CellIdentityGsm;
-Landroid/telephony/CellIdentityNr;
-Landroid/telephony/CellIdentityTdscdma;
-Landroid/telephony/CellInfoCdma;
-Landroid/telephony/CellInfoGsm;
-Landroid/telephony/CellInfoNr;
-Landroid/telephony/CellInfoTdscdma;
-Landroid/telephony/CellInfoWcdma;
-Landroid/telephony/DataConnectionRealTimeInfo;
-[Landroid/telephony/data/DataProfile;
-Landroid/telephony/data/DataService$DataCallListChangedIndication;
-Landroid/telephony/data/DataService$DeactivateDataCallRequest;
-Landroid/telephony/DataFailCause$1;
-Landroid/telephony/data/IDataService$Stub$Proxy;
-Landroid/telephony/ICellInfoCallback$Stub;
-Landroid/telephony/ICellInfoCallback$Stub$Proxy;
-Landroid/telephony/IFinancialSmsCallback$Stub;
-Landroid/telephony/IFinancialSmsCallback$Stub$Proxy;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$8xq93ap6i0L56Aegaj-ZEUt9ISc;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$AhnK6VJjwgpDNC1GXRrwfgtYvkM;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$iuI3HyNU5eUABA_QRyzQ8Jw2-8g;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$J4VhgcUtd6SivHcdkzpurbTuyLc;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$jAP4lCkBQEdyrlgt5jaNPTlFXlY;
-Landroid/telephony/ims/-$$Lambda$ImsMmTelManager$RegistrationCallback$RegistrationBinder$oDp7ilyKfflFThUCP4Du9EYoDoQ;
-Landroid/telephony/ims/aidl/IImsCapabilityCallback$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsConfig$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsConfigCallback$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsMmTelFeature$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsMmTelListener$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsRegistrationCallback$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsServiceController$Stub$Proxy;
-Landroid/telephony/ims/aidl/IImsSmsListener$Stub$Proxy;
-[Landroid/telephony/ims/ImsCallForwardInfo;
-Landroid/telephony/ims/ImsExternalCallState;
-[Landroid/telephony/ims/ImsSsInfo;
-Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$cWwTXSDsk-bWPbsDJYI--DUBMnE;
-Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$sbjuTvW-brOSWMR74UInSZEIQB0;
-Landroid/telephony/ims/stub/-$$Lambda$ImsRegistrationImplBase$wwtkoeOtGwMjG5I0-ZTfjNpGU-s;
-Landroid/telephony/INetworkService$Stub$Proxy;
-Landroid/telephony/JapanesePhoneNumberFormatter;
-Landroid/telephony/NeighboringCellInfo;
-Landroid/telephony/PhysicalChannelConfig$Builder;
-[Landroid/telephony/RadioAccessFamily;
-Landroid/telephony/SmsMessage;
-Landroid/telephony/SubscriptionManager$OnOpportunisticSubscriptionsChangedListener;
-Landroid/telephony/SubscriptionManager$OnOpportunisticSubscriptionsChangedListener$1;
-[Landroid/telephony/SubscriptionPlan;
-Landroid/telephony/SubscriptionPlan;
-[Landroid/telephony/UiccAccessRule;
-Landroid/telephony/VisualVoicemailSmsFilterSettings$Builder;
-Landroid/text/CharSequenceCharacterIterator;
-[Landroid/text/DynamicLayout$ChangeWatcher;
-[Landroid/text/FontConfig$Alias;
-[Landroid/text/FontConfig$Family;
-[Landroid/text/FontConfig$Font;
-Landroid/text/format/Formatter$BytesResult;
-Landroid/text/HtmlToSpannedConverter$Big;
-Landroid/text/HtmlToSpannedConverter$Blockquote;
-Landroid/text/HtmlToSpannedConverter$Bold;
-Landroid/text/HtmlToSpannedConverter$Bullet;
-Landroid/text/HtmlToSpannedConverter$Heading;
-Landroid/text/HtmlToSpannedConverter$Italic;
-Landroid/text/HtmlToSpannedConverter$Monospace;
-Landroid/text/HtmlToSpannedConverter$Small;
-Landroid/text/HtmlToSpannedConverter$Strikethrough;
-Landroid/text/HtmlToSpannedConverter$Sub;
-Landroid/text/HtmlToSpannedConverter$Super;
-Landroid/text/HtmlToSpannedConverter$Underline;
-[Landroid/text/Layout$Directions;
-Landroid/text/Layout$HorizontalMeasurementProvider;
-Landroid/text/Layout$TabStops;
-Landroid/text/method/DateKeyListener;
-Landroid/text/method/DateTimeKeyListener;
-Landroid/text/method/DialerKeyListener;
-Landroid/text/method/DigitsKeyListener;
-Landroid/text/method/TimeKeyListener;
-[Landroid/text/PrecomputedText$ParagraphInfo;
-Landroid/text/PrecomputedText$Params$Builder;
-[Landroid/text/Selection$MemoryTextWatcher;
-[Landroid/text/SpanWatcher;
-Landroid/text/style/AccessibilityClickableSpan;
-Landroid/text/style/AccessibilityURLSpan;
-[Landroid/text/style/AlignmentSpan;
-Landroid/text/style/AlignmentSpan$Standard;
-Landroid/text/style/BulletSpan;
-[Landroid/text/style/CharacterStyle;
-[Landroid/text/style/ClickableSpan;
-[Landroid/text/style/LeadingMarginSpan;
-Landroid/text/style/LeadingMarginSpan$LeadingMarginSpan2;
-Landroid/text/style/LeadingMarginSpan$Standard;
-[Landroid/text/style/LineBackgroundSpan;
-Landroid/text/style/LineBackgroundSpan$Standard;
-[Landroid/text/style/LineHeightSpan;
-Landroid/text/style/LineHeightSpan$Standard;
-Landroid/text/style/LineHeightSpan$WithDensity;
-Landroid/text/style/LocaleSpan;
-[Landroid/text/style/MetricAffectingSpan;
-Landroid/text/style/QuoteSpan;
-[Landroid/text/style/ReplacementSpan;
-Landroid/text/style/ScaleXSpan;
-[Landroid/text/style/SpellCheckSpan;
-Landroid/text/style/StrikethroughSpan;
-Landroid/text/style/SubscriptSpan;
-Landroid/text/style/SuggestionRangeSpan;
-[Landroid/text/style/SuggestionSpan;
-Landroid/text/style/SuperscriptSpan;
-[Landroid/text/style/TabStopSpan;
-Landroid/text/style/TtsSpan;
-Landroid/text/style/TtsSpan$TelephoneBuilder;
-Landroid/text/style/TypefaceSpan;
-[Landroid/text/TextWatcher;
-Landroid/text/util/Linkify;
-Landroid/transition/ArcMotion;
-Landroid/transition/ChangeScroll;
-Landroid/transition/CircularPropagation;
-Landroid/transition/Explode;
-Landroid/transition/PatternPathMotion;
-Landroid/transition/Recolor;
-Landroid/transition/Slide;
-Landroid/util/apk/ApkSigningBlockUtils$1;
-[Landroid/util/apk/DataSource;
-Landroid/util/apk/VerityBuilder$BufferedDigester;
-Landroid/util/apk/VerityBuilder$VerityResult;
-[Landroid/util/ArrayMap;
-Landroid/util/BackupUtils;
-Landroid/util/Half;
-Landroid/util/JsonWriter$1;
-Landroid/util/KeyValueSettingObserver;
-Landroid/util/KeyValueSettingObserver$SettingObserver;
-Landroid/util/LauncherIcons;
-Landroid/util/LogWriter;
-Landroid/util/LongArrayQueue;
-Landroid/util/proto/EncodedBuffer;
-Landroid/util/RecurrenceRule;
-Landroid/util/RecurrenceRule$NonrecurringIterator;
-Landroid/util/RecurrenceRule$RecurringIterator;
-Landroid/util/Spline$LinearSpline;
-Landroid/util/UtilConfig;
-Landroid/view/-$$Lambda$1kvF4JuyM42-wmyDVPAIYdPz1jE;
-Landroid/view/-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0;
-Landroid/view/-$$Lambda$dj1hfDQd0iEp_uBDBPEUMMYJJwk;
-Landroid/view/-$$Lambda$PYGleuqIeCxjTD1pJqqx1opFv1g;
-Landroid/view/-$$Lambda$SurfaceView$w68OV7dB_zKVNsA-r0IrAUtyWas;
-Landroid/view/-$$Lambda$ThreadedRenderer$ydBD-R1iP5u-97XYakm-jKvC1b4;
-Landroid/view/-$$Lambda$ViewRootImpl$dznxCZGM2R1fsBljsJKomLjBRoM;
-Landroid/view/-$$Lambda$ViewRootImpl$IReiNMSbDakZSGbIZuL_ifaFWn8;
-Landroid/view/-$$Lambda$ViewRootImpl$YBiqAhbCbXVPSKdbE3K4rH2gpxI;
-Landroid/view/-$$Lambda$ViewRootImpl$zlBUjCwDtoAWMNaHI62DIq-eKFY;
-Landroid/view/-$$Lambda$WindowManagerGlobal$2bR3FsEm4EdRwuXfttH0wA2xOW4;
-Landroid/view/-$$Lambda$WlJa6OPA72p3gYtA3nVKC7Z1tGY;
-Landroid/view/accessibility/-$$Lambda$AccessibilityManager$1$o7fCplskH9NlBwJvkl6NoZ0L_BA;
-Landroid/view/accessibility/-$$Lambda$AccessibilityManager$yzw5NYY7_MfAQ9gLy3mVllchaXo;
-Landroid/view/accessibility/IAccessibilityInteractionConnection$Stub$Proxy;
-Landroid/view/accessibility/IAccessibilityManagerClient$Stub$Proxy;
-Landroid/view/accessibility/WeakSparseArray;
-Landroid/view/accessibility/WeakSparseArray$WeakReferenceWithId;
-Landroid/view/animation/AnticipateInterpolator;
-Landroid/view/animation/AnticipateOvershootInterpolator;
-Landroid/view/animation/BounceInterpolator;
-Landroid/view/animation/ClipRectAnimation;
-Landroid/view/animation/CycleInterpolator;
-Landroid/view/animation/GridLayoutAnimationController;
-Landroid/view/animation/RotateAnimation;
-[Landroid/view/AppTransitionAnimationSpec;
-Landroid/view/AppTransitionAnimationSpec;
-Landroid/view/autofill/IAutoFillManagerClient$Stub$Proxy;
-[Landroid/view/Choreographer$CallbackQueue;
-Landroid/view/contentcapture/ContentCaptureCondition;
-Landroid/view/contentcapture/ContentCaptureContext;
-Landroid/view/contentcapture/DataRemovalRequest;
-[Landroid/view/Display;
-Landroid/view/DragEvent;
-Landroid/view/GestureExclusionTracker$GestureExclusionViewInfo;
-[Landroid/view/HandlerActionQueue$HandlerAction;
-Landroid/view/IAppTransitionAnimationSpecsFuture$Stub;
-Landroid/view/IAppTransitionAnimationSpecsFuture$Stub$Proxy;
-Landroid/view/IDisplayFoldListener$Stub;
-Landroid/view/IDisplayFoldListener$Stub$Proxy;
-Landroid/view/IDockedStackListener$Stub$Proxy;
-Landroid/view/IGraphicsStatsCallback$Stub$Proxy;
-Landroid/view/inputmethod/-$$Lambda$InputMethodManager$dfnCauFoZCf-HfXs1QavrkwWDf0;
-Landroid/view/inputmethod/-$$Lambda$InputMethodManager$iDWn3IGSUFqIcs8Py42UhfrshxI;
-[Landroid/view/inputmethod/CompletionInfo;
-Landroid/view/inputmethod/CompletionInfo;
-Landroid/view/inputmethod/CorrectionInfo;
-Landroid/view/inputmethod/CursorAnchorInfo;
-Landroid/view/inputmethod/ExtractedTextRequest;
-Landroid/view/inputmethod/InputContentInfo;
-Landroid/view/inputmethod/InputMethod;
-Landroid/view/inputmethod/InputMethodSession;
-[Landroid/view/inputmethod/InputMethodSubtype;
-[Landroid/view/InsetsSourceControl;
-Landroid/view/InsetsSourceControl;
-Landroid/view/IOnKeyguardExitResult$Stub;
-Landroid/view/IOnKeyguardExitResult$Stub$Proxy;
-Landroid/view/IPinnedStackController$Stub$Proxy;
-Landroid/view/IPinnedStackListener$Stub$Proxy;
-Landroid/view/IRecentsAnimationRunner;
-Landroid/view/IRecentsAnimationRunner$Stub;
-Landroid/view/IRecentsAnimationRunner$Stub$Proxy;
-Landroid/view/IRemoteAnimationRunner$Stub;
-Landroid/view/IRemoteAnimationRunner$Stub$Proxy;
-Landroid/view/IRotationWatcher$Stub$Proxy;
-Landroid/view/ISystemGestureExclusionListener$Stub;
-Landroid/view/ISystemGestureExclusionListener$Stub$Proxy;
-Landroid/view/IWindow$Stub$Proxy;
-Landroid/view/IWindowSessionCallback$Stub$Proxy;
-Landroid/view/KeyCharacterMap$UnavailableException;
-Landroid/view/LayoutInflater$BlinkLayout;
-Landroid/view/LayoutInflater$BlinkLayout$1;
-Landroid/view/MenuInflater$InflatedOnMenuItemClickListener;
-[Landroid/view/MotionEvent$PointerCoords;
-[Landroid/view/MotionEvent$PointerProperties;
-Landroid/view/PointerIcon$2;
-Landroid/view/RemotableViewMethod;
-Landroid/view/RemoteAnimationDefinition;
-Landroid/view/RemoteAnimationDefinition$RemoteAnimationAdapterEntry;
-Landroid/view/RenderNodeAnimator$DelayedAnimationHelper;
-Landroid/view/RoundScrollbarRenderer;
-Landroid/view/SoundEffectConstants;
-Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0;
-Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$sY0w9od2zcl4YFel0lG4VB3vf7I;
-Landroid/view/textclassifier/-$$Lambda$ActionsSuggestionsHelper$YTQv8oPvlmJL4tITUFD4z4JWKRk;
-Landroid/view/textclassifier/-$$Lambda$OGSS2qx6njxlnp0dnKb4lA3jnw8;
-Landroid/view/textclassifier/-$$Lambda$TextClassificationManager$oweIEhDWxy3_0kZSXp3oRbSuNW4;
-Landroid/view/textclassifier/-$$Lambda$TextClassificationManager$SIydN2POphTO3AmPTLEMmXPLSKY;
-Landroid/view/textclassifier/-$$Lambda$TextClassifierImpl$ftq-sQqJYwUdrdbbr9jz3p4AWos;
-Landroid/view/textclassifier/-$$Lambda$TextClassifierImpl$iSt_Guet-O6Vtdk0MA4z-Z4lzaM;
-Landroid/view/textclassifier/ActionsModelParamsSupplier;
-Landroid/view/textclassifier/ActionsModelParamsSupplier$ActionsModelParams;
-Landroid/view/textclassifier/ActionsSuggestionsHelper;
-Landroid/view/textclassifier/ActionsSuggestionsHelper$PersonEncoder;
-Landroid/view/textclassifier/ConversationAction;
-Landroid/view/textclassifier/ConversationAction$Builder;
-Landroid/view/textclassifier/ConversationActions$Message;
-Landroid/view/textclassifier/ConversationActions$Request;
-Landroid/view/textclassifier/ExtrasUtils;
-Landroid/view/textclassifier/intent/LabeledIntent;
-Landroid/view/textclassifier/intent/LabeledIntent$Result;
-Landroid/view/textclassifier/Log;
-Landroid/view/textclassifier/ModelFileManager$ModelFile;
-Landroid/view/textclassifier/SelectionEvent;
-Landroid/view/textclassifier/SelectionSessionLogger$SignatureParser;
-Landroid/view/textclassifier/SystemTextClassifier$BlockingCallback;
-Landroid/view/textclassifier/SystemTextClassifier$ResponseReceiver;
-Landroid/view/textclassifier/TextClassification$Request;
-Landroid/view/textclassifier/TextClassificationContext;
-Landroid/view/textclassifier/TextClassificationContext$Builder;
-Landroid/view/textclassifier/TextClassificationSessionId;
-Landroid/view/textclassifier/TextClassifier$EntityConfig;
-Landroid/view/textclassifier/TextClassifier$EntityConfig$Builder;
-Landroid/view/textclassifier/TextClassifier$Utils;
-Landroid/view/textclassifier/TextClassifierEvent;
-Landroid/view/textclassifier/TextClassifierEvent$ConversationActionsEvent;
-Landroid/view/textclassifier/TextClassifierEvent$LanguageDetectionEvent;
-Landroid/view/textclassifier/TextClassifierEvent$TextLinkifyEvent;
-Landroid/view/textclassifier/TextClassifierEvent$TextSelectionEvent;
-Landroid/view/textclassifier/TextLanguage;
-Landroid/view/textclassifier/TextLanguage$Builder;
-Landroid/view/textclassifier/TextLanguage$Request;
-Landroid/view/textclassifier/TextLanguage$Request$Builder;
-Landroid/view/textclassifier/TextLinks$Request;
-Landroid/view/textclassifier/TextSelection$Request;
-[Landroid/view/View;
-[Landroid/view/View$AttachInfo$InvalidateInfo;
-Landroid/view/View$AttachInfo$InvalidateInfo;
-Landroid/view/View$CheckForLongPress;
-Landroid/view/View$DeclaredOnClickListener;
-Landroid/view/ViewGroup$ChildListForAccessibility;
-Landroid/view/ViewGroup$ChildListForAutoFillOrContentCapture;
-Landroid/view/ViewPropertyAnimator$2;
-Landroid/view/ViewPropertyAnimator$3;
-Landroid/view/ViewRootImpl$2;
-Landroid/view/ViewRootImpl$3;
-Landroid/view/ViewRootImpl$CalledFromWrongThreadException;
-Landroid/view/ViewRootImpl$TakenSurfaceHolder;
-Landroid/view/ViewStructure$HtmlInfo;
-Landroid/view/ViewStub$ViewReplaceRunnable;
-Landroid/view/ViewTreeObserver$OnEnterAnimationCompleteListener;
-Landroid/view/ViewTreeObserver$OnWindowAttachListener;
-Landroid/view/ViewTreeObserver$OnWindowFocusChangeListener;
-Landroid/view/ViewTreeObserver$OnWindowShownListener;
-Landroid/view/WindowInsets$Builder;
-Landroid/view/WindowManager$InvalidDisplayException;
-Landroid/widget/-$$Lambda$RemoteViews$SetOnClickResponse$9rKnU2QqCzJhBC39ZrKYXob0-MA;
-Landroid/widget/AbsListView$1;
-Landroid/widget/AbsListView$2;
-Landroid/widget/AbsListView$4;
-Landroid/widget/AbsListView$CheckForTap;
-Landroid/widget/AbsListView$ListItemAccessibilityDelegate;
-Landroid/widget/AbsListView$SelectionBoundsAdjuster;
-Landroid/widget/ActionMenuPresenter$ActionMenuPopupCallback;
-Landroid/widget/ActionMenuView$ActionMenuPresenterCallback;
-Landroid/widget/Chronometer;
-Landroid/widget/Chronometer$1;
-Landroid/widget/Editor$EasyEditPopupWindow;
-Landroid/widget/Editor$SpanController$1;
-Landroid/widget/Editor$SpanController$2;
-[Landroid/widget/Editor$TextRenderNode;
-[Landroid/widget/Editor$TextViewPositionListener;
-Landroid/widget/GridLayout;
-Landroid/widget/GridLayout$7$1;
-[[Landroid/widget/GridLayout$Arc;
-[Landroid/widget/GridLayout$Arc;
-Landroid/widget/GridLayout$Axis;
-Landroid/widget/GridLayout$Axis$1;
-[Landroid/widget/GridLayout$Bounds;
-[Landroid/widget/GridLayout$Interval;
-Landroid/widget/GridLayout$LayoutParams;
-[Landroid/widget/GridLayout$MutableInt;
-[Landroid/widget/GridLayout$Spec;
-Landroid/widget/GridLayout$Spec;
-Landroid/widget/ImageView$ImageDrawableCallback;
-Landroid/widget/ListView$FocusSelector;
-Landroid/widget/PopupMenu$1;
-Landroid/widget/PopupMenu$2;
-Landroid/widget/PopupWindow$3;
-Landroid/widget/ProgressBar$ProgressTintInfo;
-Landroid/widget/ProgressBar$RefreshData;
-Landroid/widget/ProgressBar$RefreshProgressRunnable;
-Landroid/widget/RemoteViews$ActionException;
-Landroid/widget/RemoteViews$AsyncApplyTask;
-Landroid/widget/RemoteViews$MethodArgs;
-Landroid/widget/RemoteViews$OverrideTextColorsAction;
-Landroid/widget/RemoteViews$RemoteViewsContextWrapper;
-Landroid/widget/RemoteViews$RunnableAction;
-Landroid/widget/RemoteViews$SetEmptyView;
-Landroid/widget/RemoteViews$SetIntTagAction;
-Landroid/widget/RemoteViews$SetPendingIntentTemplate;
-Landroid/widget/RemoteViews$SetRemoteInputsAction;
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterIntent;
-Landroid/widget/RemoteViews$SetRemoteViewsAdapterList;
-Landroid/widget/RemoteViews$SetRippleDrawableColor;
-Landroid/widget/RemoteViews$TextViewDrawableAction;
-Landroid/widget/RemoteViews$TextViewSizeAction;
-Landroid/widget/RemoteViews$ViewContentNavigation;
-Landroid/widget/RemoteViews$ViewGroupActionAdd;
-Landroid/widget/RemoteViews$ViewGroupActionRemove;
-[Landroid/widget/SpellChecker$SpellParser;
-Landroid/widget/Switch;
-Landroid/widget/TextView$1;
-[Landroid/widget/TextView$ChangeWatcher;
-Landroid/widget/TextView$Marquee;
-Landroid/widget/Toast$TN;
-Landroid/widget/Toast$TN$1;
-Landroid/widget/Toolbar$SavedState;
-Lcom/android/framework/protobuf/nano/CodedInputByteBufferNano;
-Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano;
-Lcom/android/framework/protobuf/nano/CodedOutputByteBufferNano$OutOfSpaceException;
-Lcom/android/framework/protobuf/nano/WireFormatNano;
-Lcom/android/i18n/phonenumbers/geocoding/PhoneNumberOfflineGeocoder;
-Lcom/android/i18n/phonenumbers/NumberParseException$ErrorType;
-Lcom/android/i18n/phonenumbers/Phonemetadata$NumberFormat$Builder;
-Lcom/android/i18n/phonenumbers/ShortNumberInfo;
-Lcom/android/ims/-$$Lambda$ImsManager$_6YCQyhjHBSdrm4ZBEMUQ2AAqOY;
-Lcom/android/ims/ImsCall;
-Lcom/android/ims/ImsManager$2;
-Lcom/android/ims/internal/uce/common/UceLong;
-Lcom/android/ims/internal/uce/options/IOptionsListener$Stub;
-Lcom/android/ims/internal/uce/options/IOptionsListener$Stub$Proxy;
-Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub;
-Lcom/android/ims/internal/uce/presence/IPresenceListener$Stub$Proxy;
-Lcom/android/ims/internal/uce/UceServiceBase$UceServiceBinder;
-Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub;
-Lcom/android/ims/internal/uce/uceservice/IUceListener$Stub$Proxy;
-Lcom/android/internal/accessibility/AccessibilityShortcutController$ToggleableFrameworkFeatureInfo;
-Lcom/android/internal/app/AlertController$1;
-Lcom/android/internal/app/AlertController$ButtonHandler;
-Lcom/android/internal/app/AlertController$RecycleListView;
-Lcom/android/internal/app/IAppOpsActiveCallback$Stub$Proxy;
-Lcom/android/internal/app/IAppOpsNotedCallback$Stub$Proxy;
-Lcom/android/internal/app/IVoiceActionCheckCallback$Stub;
-Lcom/android/internal/app/IVoiceActionCheckCallback$Stub$Proxy;
-Lcom/android/internal/app/IVoiceInteractionSessionListener$Stub$Proxy;
-Lcom/android/internal/app/IVoiceInteractionSessionShowCallback$Stub;
-Lcom/android/internal/app/IVoiceInteractor$Stub$Proxy;
-Lcom/android/internal/app/MicroAlertController;
-Lcom/android/internal/app/procstats/DumpUtils;
-Lcom/android/internal/app/procstats/IProcessStats$Stub$Proxy;
-Lcom/android/internal/app/procstats/ProcessState$PssAggr;
-Lcom/android/internal/app/procstats/ProcessStats$TotalMemoryUseCollection;
-Lcom/android/internal/app/ResolverActivity$ActionTitle;
-Lcom/android/internal/app/ToolbarActionBar;
-Lcom/android/internal/appwidget/IAppWidgetHost$Stub;
-Lcom/android/internal/appwidget/IAppWidgetHost$Stub$Proxy;
-Lcom/android/internal/app/WindowDecorActionBar;
-Lcom/android/internal/backup/IBackupTransport$Stub$Proxy;
-Lcom/android/internal/content/PackageHelper$1;
-Lcom/android/internal/graphics/ColorUtils;
-Lcom/android/internal/infra/-$$Lambda$7-CJJfrUZBVuXZyYFEWBNh8Mky8;
-Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcCU8EMuMNAy4;
-Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o;
-Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$ocrHd68Md9x6FfAzVQ6w8MAjFqY;
-Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$PendingRequest$IBoaBGXZQEXJr69u3aJF-LCJ42Y;
-Lcom/android/internal/infra/-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck;
-Lcom/android/internal/infra/-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A;
-Lcom/android/internal/infra/AbstractRemoteService$MyAsyncPendingRequest;
-Lcom/android/internal/inputmethod/IInputMethodPrivilegedOperations$Stub$Proxy;
-Lcom/android/internal/inputmethod/InputMethodDebug;
-Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations;
-Lcom/android/internal/inputmethod/InputMethodPrivilegedOperations$OpsHolder;
-Lcom/android/internal/inputmethod/InputMethodPrivilegedOperationsRegistry;
-Lcom/android/internal/inputmethod/SubtypeLocaleUtils;
-Lcom/android/internal/location/ILocationProvider;
-Lcom/android/internal/location/ILocationProvider$Stub;
-Lcom/android/internal/location/ILocationProvider$Stub$Proxy;
-Lcom/android/internal/location/ILocationProviderManager$Stub$Proxy;
-Lcom/android/internal/location/nano/GnssLogsProto$GnssLog;
-Lcom/android/internal/location/nano/GnssLogsProto$PowerMetrics;
-Lcom/android/internal/net/INetworkWatchlistManager$Stub$Proxy;
-Lcom/android/internal/net/VpnConfig;
-[Lcom/android/internal/net/VpnInfo;
-Lcom/android/internal/net/VpnProfile;
-Lcom/android/internal/os/-$$Lambda$BinderCallsStats$sqXweH5BoxhmZvI188ctqYiACRk;
-Lcom/android/internal/os/-$$Lambda$sHtqZgGVjxOf9IJdAdZO6gwD_Do;
-Lcom/android/internal/os/BatteryStatsHelper$1;
-Lcom/android/internal/os/BatteryStatsImpl$3;
-Lcom/android/internal/os/BatteryStatsImpl$4;
-[Lcom/android/internal/os/BatteryStatsImpl$Counter;
-[[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounter;
-[Lcom/android/internal/os/BatteryStatsImpl$LongSamplingCounterArray;
-[Lcom/android/internal/os/BatteryStatsImpl$StopwatchTimer;
-Lcom/android/internal/os/BatteryStatsImpl$UidToRemove;
-Lcom/android/internal/os/BinderCallsStats$CallStatKey;
-Lcom/android/internal/os/BinderCallsStats$ExportedCallStat;
-Lcom/android/internal/os/BinderDeathDispatcher$RecipientsInfo;
-Lcom/android/internal/os/BinderInternal$CallSession;
-Lcom/android/internal/os/IShellCallback$Stub;
-Lcom/android/internal/os/IShellCallback$Stub$Proxy;
-[Lcom/android/internal/os/KernelCpuSpeedReader;
-Lcom/android/internal/os/KernelCpuThreadReader$ProcessCpuUsage;
-Lcom/android/internal/os/KernelCpuThreadReader$ThreadCpuUsage;
-Lcom/android/internal/os/LooperStats$ExportedEntry;
-[Lcom/android/internal/os/PowerProfile$CpuClusterKey;
-Lcom/android/internal/os/StatsdHiddenApiUsageLogger;
-Lcom/android/internal/os/TransferPipe;
-Lcom/android/internal/os/WifiPowerEstimator;
-Lcom/android/internal/os/WrapperInit;
-Lcom/android/internal/os/ZygoteSecurityException;
-Lcom/android/internal/os/ZygoteServer$UsapPoolRefillAction;
-Lcom/android/internal/policy/DecorView$2;
-Lcom/android/internal/policy/DecorView$3;
-Lcom/android/internal/policy/IKeyguardDismissCallback$Stub;
-Lcom/android/internal/policy/IKeyguardDismissCallback$Stub$Proxy;
-Lcom/android/internal/policy/IKeyguardDrawnCallback$Stub$Proxy;
-Lcom/android/internal/policy/IKeyguardExitCallback$Stub;
-Lcom/android/internal/policy/IKeyguardExitCallback$Stub$Proxy;
-Lcom/android/internal/policy/IKeyguardService$Stub$Proxy;
-Lcom/android/internal/policy/IKeyguardStateCallback$Stub$Proxy;
-Lcom/android/internal/policy/IShortcutService$Stub$Proxy;
-[Lcom/android/internal/policy/PhoneWindow$PanelFeatureState;
-Lcom/android/internal/policy/PhoneWindow$PanelFeatureState$SavedState;
-Lcom/android/internal/statusbar/IStatusBar$Stub$Proxy;
-Lcom/android/internal/statusbar/IStatusBarService$Stub$Proxy;
-[Lcom/android/internal/statusbar/NotificationVisibility;
-Lcom/android/internal/statusbar/NotificationVisibility;
-[Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;
-Lcom/android/internal/statusbar/NotificationVisibility$NotificationLocation;
-Lcom/android/internal/telecom/IConnectionService;
-Lcom/android/internal/telecom/IConnectionService$Stub;
-Lcom/android/internal/telecom/IConnectionService$Stub$Proxy;
-Lcom/android/internal/telecom/IInCallService;
-Lcom/android/internal/telecom/IInCallService$Stub;
-Lcom/android/internal/telecom/IInCallService$Stub$Proxy;
-Lcom/android/internal/telecom/IVideoProvider$Stub$Proxy;
-Lcom/android/internal/telecom/RemoteServiceCallback$Stub;
-Lcom/android/internal/telecom/RemoteServiceCallback$Stub$Proxy;
-Lcom/android/internal/telephony/-$$Lambda$MultiSimSettingController$55347QtGjuukX-px3jYZkJd_z3U;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$1TnOMFYcM13ZTJNoLjxguPwVcxw;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$2xgrYNleR8FFzFT8hEQx3mDtZ8g;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$EYZUPU0CYhRoptGCGJ9y78u-jQM;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$Ja9yTBcEYPqTRBIP-hL0otixVeE;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$PONge0j2mBi_ILbtJD_7euF0uoM;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$rpyQeO7zACcc5v4krwU9_qRMHL8;
-Lcom/android/internal/telephony/-$$Lambda$PhoneSubInfoController$ZOtVAnuhxrXl2L906I6eTOentP0;
-Lcom/android/internal/telephony/-$$Lambda$RadioIndication$GND6XxOOm1d_Ro76zEUFjA9OrEA;
-Lcom/android/internal/telephony/-$$Lambda$RIL$803u4JiCud_JSoDndvAhT13ZZqU;
-Lcom/android/internal/telephony/-$$Lambda$RIL$Ir4pOMTf7R0Jtw4O3F7JgMVtXO4;
-Lcom/android/internal/telephony/-$$Lambda$RIL$ZGWeCQ9boMO1_J1_yQ82l_jK-Nc;
-Lcom/android/internal/telephony/-$$Lambda$RIL$zYsQZAc3z9bM5fCaq_J0dn5kjjo;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionController$0y_j8vef67bMEiPQdeWyjuFpPQ8;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$DY4i_CG7hrAeejGLeh3hMUZySnw;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$ecTEeMEIjOEa2z5W3wjqiicibbY;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$qyDxq2AWyReUxdc6HttVGQeDD3Y;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$tLUuQ7lYu8EjRd038qzQlDm-CtA;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$UFyB0ValfLD0rdGDibCjTnGFkeo;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$Y5woGfEDKrozRViLH7WF93qPEno;
-Lcom/android/internal/telephony/-$$Lambda$SubscriptionInfoUpdater$ZTY4uxKw17CHcHQzbBUF7m-dN-E;
-Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$09rMKC8001jAR0zFrzzlPx26Xjs;
-Lcom/android/internal/telephony/-$$Lambda$TelephonyComponentFactory$InjectedComponents$UYUq9z2WZwxqOLXquU0tTNN9wAs;
-Lcom/android/internal/telephony/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;
-Lcom/android/internal/telephony/-$$Lambda$WWHOcG5P4-jgjzPPgLwm-wN15OM;
-Lcom/android/internal/telephony/BlockChecker;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$1;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$CallerInfoAsyncQueryHandler$CallerInfoWorkerHandler;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$CookieWrapper;
-Lcom/android/internal/telephony/CallerInfoAsyncQuery$QueryPoolException;
-[Lcom/android/internal/telephony/CallForwardInfo;
-[Lcom/android/internal/telephony/CarrierServiceBindHelper$AppBinding;
-Lcom/android/internal/telephony/CarrierServiceBindHelper$CarrierServiceConnection;
-Lcom/android/internal/telephony/CarrierServicesSmsFilter;
-Lcom/android/internal/telephony/CarrierServicesSmsFilter$CallbackTimeoutHandler;
-Lcom/android/internal/telephony/CarrierSmsUtils;
-Lcom/android/internal/telephony/cat/AppInterface$CommandType;
-Lcom/android/internal/telephony/cat/BerTlv;
-Lcom/android/internal/telephony/cat/BIPClientParams;
-Lcom/android/internal/telephony/cat/CallSetupParams;
-Lcom/android/internal/telephony/cat/CatCmdMessage;
-Lcom/android/internal/telephony/cat/CatResponseMessage;
-[Lcom/android/internal/telephony/cat/CatService;
-Lcom/android/internal/telephony/cat/CatService$1;
-Lcom/android/internal/telephony/cat/CommandParams;
-Lcom/android/internal/telephony/cat/CommandParamsFactory$1;
-Lcom/android/internal/telephony/cat/ComprehensionTlv;
-Lcom/android/internal/telephony/cat/ComprehensionTlvTag;
-Lcom/android/internal/telephony/cat/DisplayTextParams;
-Lcom/android/internal/telephony/cat/DTTZResponseData;
-Lcom/android/internal/telephony/cat/LanguageParams;
-Lcom/android/internal/telephony/cat/LanguageResponseData;
-Lcom/android/internal/telephony/cat/LaunchBrowserParams;
-Lcom/android/internal/telephony/cat/ResultCode;
-Lcom/android/internal/telephony/cat/RilMessage;
-[Lcom/android/internal/telephony/cat/RilMessageDecoder;
-Lcom/android/internal/telephony/cat/ValueParser;
-Lcom/android/internal/telephony/cdma/CdmaCallWaitingNotification;
-[Lcom/android/internal/telephony/cdma/CdmaSmsBroadcastConfigInfo;
-Lcom/android/internal/telephony/cdma/SmsMessage;
-Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData;
-Lcom/android/internal/telephony/cdnr/CarrierDisplayNameData$Builder;
-Lcom/android/internal/telephony/cdnr/CarrierDisplayNameResolver;
-Lcom/android/internal/telephony/Connection$Listener;
-Lcom/android/internal/telephony/Connection$PostDialState;
-Lcom/android/internal/telephony/dataconnection/-$$Lambda$DataConnection$-tFSpFGzTv_UdpzJlTMOvg8VO98;
-Lcom/android/internal/telephony/dataconnection/-$$Lambda$XZAGhHrbkIDyusER4MAM6luKcT0;
-Lcom/android/internal/telephony/dataconnection/DataConnection$DisconnectParams;
-Lcom/android/internal/telephony/dataconnection/DataConnection$UpdateLinkPropertyResult;
-Lcom/android/internal/telephony/dataconnection/DataEnabledOverride;
-Lcom/android/internal/telephony/dataconnection/DataEnabledSettings$1;
-Lcom/android/internal/telephony/dataconnection/DataEnabledSettings$2;
-Lcom/android/internal/telephony/dataconnection/DcNetworkAgent;
-Lcom/android/internal/telephony/dataconnection/DcTracker$4;
-Lcom/android/internal/telephony/dataconnection/DcTracker$ProvisionNotificationBroadcastReceiver;
-Lcom/android/internal/telephony/dataconnection/KeepaliveStatus;
-[Lcom/android/internal/telephony/dataconnection/TelephonyNetworkFactory;
-Lcom/android/internal/telephony/dataconnection/TransportManager$HandoverParams;
-Lcom/android/internal/telephony/DriverCall;
-Lcom/android/internal/telephony/DriverCall$State;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$1;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$10;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$11;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$12;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$13;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$2;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$3;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$5;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$6;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$7;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$8;
-Lcom/android/internal/telephony/euicc/EuiccConnector$ConnectedState$9;
-Lcom/android/internal/telephony/euicc/EuiccConnector$DeleteRequest;
-Lcom/android/internal/telephony/euicc/EuiccConnector$DownloadRequest;
-Lcom/android/internal/telephony/euicc/EuiccConnector$GetDefaultListRequest;
-Lcom/android/internal/telephony/euicc/EuiccConnector$GetMetadataRequest;
-Lcom/android/internal/telephony/euicc/EuiccConnector$SwitchRequest;
-Lcom/android/internal/telephony/euicc/EuiccConnector$UpdateNicknameRequest;
-Lcom/android/internal/telephony/euicc/IEuiccController$Stub$Proxy;
-Lcom/android/internal/telephony/GsmCdmaCallTracker$2;
-Lcom/android/internal/telephony/GsmCdmaCallTracker$3;
-[Lcom/android/internal/telephony/GsmCdmaConnection;
-Lcom/android/internal/telephony/GsmCdmaPhone$Cfu;
-Lcom/android/internal/telephony/gsm/GsmMmiCode;
-[Lcom/android/internal/telephony/gsm/SmsBroadcastConfigInfo;
-Lcom/android/internal/telephony/gsm/SmsMessage;
-Lcom/android/internal/telephony/gsm/SuppServiceNotification;
-Lcom/android/internal/telephony/gsm/UsimPhoneBookManager$File;
-Lcom/android/internal/telephony/gsm/UsimPhoneBookManager$PbrRecord;
-Lcom/android/internal/telephony/HbpcdUtils;
-Lcom/android/internal/telephony/IccPhoneBookInterfaceManager$Request;
-Lcom/android/internal/telephony/IIccPhoneBook$Stub$Proxy;
-Lcom/android/internal/telephony/IIntegerConsumer$Stub;
-Lcom/android/internal/telephony/IIntegerConsumer$Stub$Proxy;
-Lcom/android/internal/telephony/IMms$Stub$Proxy;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$-jFhgP_NotuFSwzjQBXWuvls4x4;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$kF808g2NWzNL8H1SwzDc1FxiQdQ;
-Lcom/android/internal/telephony/ims/-$$Lambda$ImsResolver$rPjfocpARQ2sab24iic4o3kTTgw;
-Lcom/android/internal/telephony/ims/ImsResolver$8;
-Lcom/android/internal/telephony/ims/ImsServiceFeatureQueryManager$ImsServiceFeatureQuery;
-Lcom/android/internal/telephony/imsphone/ImsExternalConnection;
-Lcom/android/internal/telephony/imsphone/ImsPhone$Cf;
-Lcom/android/internal/telephony/imsphone/ImsPhoneConnection;
-Lcom/android/internal/telephony/imsphone/ImsPhoneMmiCode;
-Lcom/android/internal/telephony/ims/RcsMessageController;
-Lcom/android/internal/telephony/InboundSmsHandler$CarrierServicesSmsFilterCallback;
-Lcom/android/internal/telephony/InboundSmsHandler$SmsBroadcastReceiver;
-Lcom/android/internal/telephony/InboundSmsTracker;
-Lcom/android/internal/telephony/INumberVerificationCallback$Stub;
-Lcom/android/internal/telephony/INumberVerificationCallback$Stub$Proxy;
-Lcom/android/internal/telephony/IPhoneStateListener$Stub$Proxy;
-Lcom/android/internal/telephony/ISetOpportunisticDataCallback$Stub$Proxy;
-Lcom/android/internal/telephony/ISms$Stub$Proxy;
-Lcom/android/internal/telephony/IWapPushManager;
-Lcom/android/internal/telephony/LastCallFailCause;
-Lcom/android/internal/telephony/LinkCapacityEstimate;
-Lcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$fLmZDbNadlr6LF7zSJ6jCR1AAsk;
-Lcom/android/internal/telephony/metrics/-$$Lambda$TelephonyMetrics$x2dJi76S2YQdpSTfY8RZ8qC_K6g;
-Lcom/android/internal/telephony/metrics/ModemPowerMetrics;
-Lcom/android/internal/telephony/metrics/TelephonyMetrics$1;
-Lcom/android/internal/telephony/MultiSimSettingController$1;
-[Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierAttribute;
-[Lcom/android/internal/telephony/nano/CarrierIdProto$CarrierId;
-[Lcom/android/internal/telephony/nano/TelephonyProto$ActiveSubscriptionInfo;
-Lcom/android/internal/telephony/nano/TelephonyProto$EmergencyNumberInfo;
-Lcom/android/internal/telephony/nano/TelephonyProto$ModemPowerStats;
-[Lcom/android/internal/telephony/nano/TelephonyProto$RilDataCall;
-[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession;
-Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession;
-[Lcom/android/internal/telephony/nano/TelephonyProto$SmsSession$Event;
-[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;
-Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession;
-[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event;
-[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyCallSession$Event$RilCall;
-[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent;
-Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$OnDemandDataSwitch;
-Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyEvent$RilDeactivateDataCall;
-[Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;
-Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyHistogram;
-Lcom/android/internal/telephony/nano/TelephonyProto$TelephonyLog;
-Lcom/android/internal/telephony/nano/TelephonyProto$Time;
-Lcom/android/internal/telephony/NitzStateMachineImpl;
-Lcom/android/internal/telephony/OperatorInfo$State;
-[Lcom/android/internal/telephony/Phone;
-Lcom/android/internal/telephony/PhoneInternalInterface$DialArgs;
-Lcom/android/internal/telephony/PhoneInternalInterface$DialArgs$Builder;
-Lcom/android/internal/telephony/PhoneInternalInterface$SuppService;
-Lcom/android/internal/telephony/PhoneSwitcher$2;
-Lcom/android/internal/telephony/PhoneSwitcher$DefaultNetworkCallback;
-Lcom/android/internal/telephony/PhoneSwitcher$EmergencyOverrideRequest;
-[Lcom/android/internal/telephony/PhoneSwitcher$PhoneState;
-Lcom/android/internal/telephony/protobuf/nano/CodedOutputByteBufferNano$OutOfSpaceException;
-Lcom/android/internal/telephony/protobuf/nano/MessageNanoPrinter;
-Lcom/android/internal/telephony/RadioBugDetector;
-[Lcom/android/internal/telephony/RIL;
-Lcom/android/internal/telephony/sip/SipPhone;
-Lcom/android/internal/telephony/SmsBroadcastUndelivered$SmsReferenceKey;
-Lcom/android/internal/telephony/SmsConstants$MessageClass;
-Lcom/android/internal/telephony/SmsController;
-Lcom/android/internal/telephony/SMSDispatcher$DataSmsSender;
-Lcom/android/internal/telephony/SMSDispatcher$SmsSenderCallback;
-[Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
-Lcom/android/internal/telephony/SMSDispatcher$SmsTracker;
-Lcom/android/internal/telephony/SMSDispatcher$TextSmsSender;
-Lcom/android/internal/telephony/SmsNumberUtils;
-Lcom/android/internal/telephony/SmsPermissions;
-Lcom/android/internal/telephony/SmsResponse;
-Lcom/android/internal/telephony/TimeServiceHelper;
-Lcom/android/internal/telephony/uicc/CsimFileHandler;
-[Lcom/android/internal/telephony/uicc/IccCardApplicationStatus;
-Lcom/android/internal/telephony/uicc/IccException;
-Lcom/android/internal/telephony/uicc/IccFileNotFound;
-Lcom/android/internal/telephony/uicc/IccFileTypeMismatch;
-Lcom/android/internal/telephony/uicc/IccRefreshResponse;
-Lcom/android/internal/telephony/uicc/IccVmNotSupportedException;
-Lcom/android/internal/telephony/uicc/InstallCarrierAppTrampolineActivity;
-Lcom/android/internal/telephony/uicc/IsimFileHandler;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimDomainLoaded;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpiLoaded;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimImpuLoaded;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimIstLoaded;
-Lcom/android/internal/telephony/uicc/IsimUiccRecords$EfIsimPcscfLoaded;
-[Lcom/android/internal/telephony/uicc/PlmnActRecord;
-Lcom/android/internal/telephony/uicc/RuimFileHandler;
-Lcom/android/internal/telephony/uicc/RuimRecords;
-Lcom/android/internal/telephony/uicc/SIMFileHandler;
-[Lcom/android/internal/telephony/uicc/UiccCardApplication;
-Lcom/android/internal/telephony/uicc/UiccCarrierPrivilegeRules$TLV;
-Lcom/android/internal/telephony/uicc/UiccPkcs15$FileHandler;
-Lcom/android/internal/telephony/uicc/UiccProfile$5;
-[Lcom/android/internal/telephony/uicc/UiccSlot;
-Lcom/android/internal/telephony/util/SMSDispatcherUtil;
-Lcom/android/internal/telephony/UUSInfo;
-Lcom/android/internal/telephony/VisualVoicemailSmsFilter;
-Lcom/android/internal/textservice/ISpellCheckerService;
-Lcom/android/internal/textservice/ISpellCheckerService$Stub;
-Lcom/android/internal/textservice/ISpellCheckerService$Stub$Proxy;
-Lcom/android/internal/textservice/ISpellCheckerSession$Stub;
-Lcom/android/internal/textservice/ISpellCheckerSessionListener$Stub$Proxy;
-Lcom/android/internal/textservice/ITextServicesSessionListener$Stub$Proxy;
-Lcom/android/internal/util/-$$Lambda$DumpUtils$D1OlZP6xIpu72ypnJd0fzx0wd6I;
-Lcom/android/internal/util/-$$Lambda$DumpUtils$vCLO_0ezRxkpSERUWCFrJ0ph5jg;
-Lcom/android/internal/util/-$$Lambda$DumpUtils$X8irOs5hfloCKy89_l1HRA1QeG0;
-Lcom/android/internal/util/-$$Lambda$eRa1rlfDk6Og2yFeXGHqUGPzRF0;
-Lcom/android/internal/util/-$$Lambda$FunctionalUtils$koCSI8D7Nu5vOJTVTEj0m3leo_U;
-Lcom/android/internal/util/-$$Lambda$grRTg3idX3yJe9Zyx-tmLBiD1DM;
-Lcom/android/internal/util/-$$Lambda$JwOUSWW2-Jzu15y4Kn4JuPh8tWM;
-Lcom/android/internal/util/-$$Lambda$kVylv1rl9MOSbHFZoVyK5dl1kfY;
-Lcom/android/internal/util/-$$Lambda$TCbPpgWlKJUHZgFKCczglAvxLfw;
-Lcom/android/internal/util/ContrastColorUtil;
-Lcom/android/internal/util/ContrastColorUtil$ColorUtilsFromCompat;
-Lcom/android/internal/util/function/HeptPredicate;
-Lcom/android/internal/util/function/HexPredicate;
-Lcom/android/internal/util/function/NonaPredicate;
-Lcom/android/internal/util/function/OctPredicate;
-Lcom/android/internal/util/function/QuadPredicate;
-Lcom/android/internal/util/function/QuintPredicate;
-Lcom/android/internal/util/MessageUtils$DuplicateConstantError;
-Lcom/android/internal/util/ProcFileReader;
-[Lcom/android/internal/util/StateMachine$SmHandler$StateInfo;
-Lcom/android/internal/util/SyncResultReceiver$TimeoutException;
-Lcom/android/internal/util/UserIcons;
-Lcom/android/internal/view/IInputMethod$Stub$Proxy;
-Lcom/android/internal/view/IInputMethodClient$Stub$Proxy;
-Lcom/android/internal/view/IInputSessionCallback$Stub$Proxy;
-Lcom/android/internal/view/InputConnectionWrapper;
-Lcom/android/internal/view/InputConnectionWrapper$InputContextCallback;
-Lcom/android/internal/view/menu/ActionMenuItemView;
-Lcom/android/internal/view/menu/ActionMenuItemView$ActionMenuItemForwardingListener;
-Lcom/android/internal/view/menu/MenuPopupHelper$1;
-Lcom/android/internal/view/menu/MenuView$ItemView;
-Lcom/android/internal/view/OneShotPreDrawListener;
-Lcom/android/internal/view/RotationPolicy$1;
-Lcom/android/internal/widget/ActionBarOverlayLayout;
-Lcom/android/internal/widget/DecorCaptionView;
-Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub;
-Lcom/android/internal/widget/ICheckCredentialProgressCallback$Stub$Proxy;
-Lcom/android/internal/widget/SwipeDismissLayout;
-Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory;
-Lcom/android/okhttp/internalandroidapi/HttpURLConnectionFactory$DnsAdapter;
-Lcom/android/org/conscrypt/OpenSSLSocketImpl;
-Lcom/android/org/conscrypt/TrustedCertificateStore;
-Lcom/android/org/conscrypt/TrustedCertificateStore$PreloadHolder;
-Lcom/android/org/conscrypt/TrustManagerImpl;
-[Lcom/android/ph
-[Lcom/android/phone/ecc/nano/ProtobufEccData$CountryInfo;
-[Lcom/android/phone/ecc/nano/ProtobufEccData$EccInfo;
-Lcom/android/server/backup/AccountManagerBackupHelper;
-Lcom/android/server/backup/AccountSyncSettingsBackupHelper;
-Lcom/android/server/backup/NotificationBackupHelper;
-Lcom/android/server/backup/PermissionBackupHelper;
-Lcom/android/server/backup/PreferredActivityBackupHelper;
-Lcom/android/server/backup/ShortcutBackupHelper;
-Lcom/android/server/backup/SliceBackupHelper;
-Lcom/android/server/backup/UsageStatsBackupHelper;
-Lcom/android/server/BootReceiver;
-Lcom/android/server/BootReceiver$1;
-Lcom/android/server/BootReceiver$2;
-[Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
-[Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;
-Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;
-Lcom/android/server/sip/SipService$ConnectivityReceiver;
-Lcom/android/server/sip/SipService$MyExecutor;
-Lcom/android/server/sip/SipWakeLock;
-Lcom/android/server/sip/SipWakeupTimer$MyEventComparator;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$AlertReasonCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectionEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$ConnectToNetworkNotificationAndActionCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$DeviceMobilityStatePnoScanStats;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$GroupEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$HistogramBucketInt32;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;
-Lcom/android/server/wifi/nano/WifiMetricsProto$Int32Count;
-Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats$ExperimentProbeCounts;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats$LinkProbeFailureReasonCount;
-Lcom/android/server/wifi/nano/WifiMetricsProto$LinkProbeStats$LinkProbeFailureReasonCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$LinkSpeedCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$NetworkSelectionExperimentDecisions;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$NumConnectableNetworksBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$P2pConnectionEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$PasspointProfileTypeCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$RssiPollCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApConnectedClientsEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApDurationBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$SoftApReturnCodeCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$StaEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$HistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$NanStatusHistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiAwareLog$NanStatusHistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiConfigStoreIO$DurationBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppConfiguratorSuccessStatusHistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiDppLog$DppFailureStatusHistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiIsUnusableEvent;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$ScanReturnEntry;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiLog$WifiSystemStateEntry;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$HistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$HistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttIndividualStatusHistogramBucket;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttIndividualStatusHistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiRttLog$RttOverallStatusHistogramBucket;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiScoreCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityScoreCount;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStats;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;
-Lcom/android/server/wifi/nano/WifiMetricsProto$WifiUsabilityStatsEntry;
-[Lcom/android/server/wifi/nano/WifiMetricsProto$WifiWakeStats$Session;
-Lcom/android/server/wm/nano/WindowManagerProtos$TaskSnapshotProto;
-Lcom/google/android/rappor/Encoder;
-Lcom/google/android/rappor/HmacDrbg;
-Lcom/google/android/textclassifier/ActionsSuggestionsModel;
-Lcom/google/android/textclassifier/ActionsSuggestionsModel$Conversation;
-[Lcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;
-Lcom/google/android/textclassifier/ActionsSuggestionsModel$ConversationMessage;
-Lcom/google/android/textclassifier/AnnotatorModel;
-Lcom/google/android/textclassifier/LangIdModel;
-[Ljava/lang/Double;
-[Ljava/lang/Runnable;
-[Ljava/lang/Void;
-[Ljava/net/InetAddress;
-Ljava/nio/file/Files$AcceptAllFilter;
-[Ljava/nio/file/OpenOption;
-[[Ljava/security/cert/Certificate;
-[Ljava/security/cert/Certificate;
-[[Ljava/security/cert/X509Certificate;
-[Ljava/security/cert/X509Certificate;
-[Ljava/security/MessageDigest;
-Ljava/security/spec/PSSParameterSpec;
-Ljava/time/-$$Lambda$up1HpCqucM_DXyY-rpDOyCcdmIA;
-[Ljava/util/concurrent/RunnableScheduledFuture;
-[Ljava/util/HashMap;
-Ljava/util/logging/Logger$SystemLoggerHelper;
-Ljava/util/PropertyPermission;
-Ljava/util/stream/-$$Lambda$MatchOps$emK14UX33I4-nqH2o5l7hLEVAy8;
-[Ljavax/net/ssl/TrustManager;
-Llibcore/icu/RelativeDateTimeFormatter;
-Lsun/security/util/SecurityConstants;
-Lsun/util/locale/LocaleMatcher;
diff --git a/config/preloaded-classes b/config/preloaded-classes
index e53c74b..64fd65f 100644
--- a/config/preloaded-classes
+++ b/config/preloaded-classes
@@ -24,14 +24,20 @@
 android.R$styleable
 android.accessibilityservice.AccessibilityServiceInfo$1
 android.accessibilityservice.AccessibilityServiceInfo
+android.accessibilityservice.IAccessibilityServiceClient$Stub$Proxy
+android.accessibilityservice.IAccessibilityServiceClient$Stub
+android.accessibilityservice.IAccessibilityServiceClient
 android.accounts.Account$1
 android.accounts.Account
+android.accounts.AccountAndUser
 android.accounts.AccountManager$10
 android.accounts.AccountManager$11
+android.accounts.AccountManager$17
 android.accounts.AccountManager$18
 android.accounts.AccountManager$1
 android.accounts.AccountManager$20
 android.accounts.AccountManager$2
+android.accounts.AccountManager$3
 android.accounts.AccountManager$AmsTask$1
 android.accounts.AccountManager$AmsTask$Response
 android.accounts.AccountManager$AmsTask
@@ -43,18 +49,25 @@
 android.accounts.AccountManager
 android.accounts.AccountManagerCallback
 android.accounts.AccountManagerFuture
+android.accounts.AccountManagerInternal$OnAppPermissionChangeListener
+android.accounts.AccountManagerInternal
 android.accounts.AccountsException
 android.accounts.AuthenticatorDescription$1
 android.accounts.AuthenticatorDescription
 android.accounts.AuthenticatorException
+android.accounts.IAccountAuthenticator$Stub$Proxy
+android.accounts.IAccountAuthenticator$Stub
+android.accounts.IAccountAuthenticator
 android.accounts.IAccountManager$Stub$Proxy
 android.accounts.IAccountManager$Stub
 android.accounts.IAccountManager
+android.accounts.IAccountManagerResponse$Stub$Proxy
 android.accounts.IAccountManagerResponse$Stub
 android.accounts.IAccountManagerResponse
 android.accounts.OnAccountsUpdateListener
 android.accounts.OperationCanceledException
 android.animation.AnimationHandler$1
+android.animation.AnimationHandler$2
 android.animation.AnimationHandler$AnimationFrameCallback
 android.animation.AnimationHandler$AnimationFrameCallbackProvider
 android.animation.AnimationHandler$MyFrameCallbackProvider
@@ -75,6 +88,7 @@
 android.animation.AnimatorSet$SeekState
 android.animation.AnimatorSet
 android.animation.ArgbEvaluator
+android.animation.BidirectionalTypeConverter
 android.animation.FloatEvaluator
 android.animation.FloatKeyframeSet
 android.animation.IntEvaluator
@@ -89,6 +103,7 @@
 android.animation.Keyframes
 android.animation.LayoutTransition$1
 android.animation.LayoutTransition$2
+android.animation.LayoutTransition$3
 android.animation.LayoutTransition$4
 android.animation.LayoutTransition$5
 android.animation.LayoutTransition$CleanupCallback
@@ -97,12 +112,16 @@
 android.animation.ObjectAnimator
 android.animation.PathKeyframes$1
 android.animation.PathKeyframes$2
+android.animation.PathKeyframes$3
+android.animation.PathKeyframes$4
 android.animation.PathKeyframes$FloatKeyframesBase
 android.animation.PathKeyframes$IntKeyframesBase
 android.animation.PathKeyframes$SimpleKeyframes
 android.animation.PathKeyframes
+android.animation.PropertyValuesHolder$1
 android.animation.PropertyValuesHolder$FloatPropertyValuesHolder
 android.animation.PropertyValuesHolder$IntPropertyValuesHolder
+android.animation.PropertyValuesHolder$PropertyValues$DataSource
 android.animation.PropertyValuesHolder$PropertyValues
 android.animation.PropertyValuesHolder
 android.animation.RectEvaluator
@@ -113,21 +132,42 @@
 android.animation.TimeAnimator$TimeListener
 android.animation.TimeAnimator
 android.animation.TimeInterpolator
+android.animation.TypeConverter
 android.animation.TypeEvaluator
 android.animation.ValueAnimator$AnimatorUpdateListener
 android.animation.ValueAnimator
+android.apex.ApexInfo$1
+android.apex.ApexInfo
+android.apex.IApexService$Stub$Proxy
+android.apex.IApexService$Stub
+android.apex.IApexService
+android.app.-$$Lambda$ActivityThread$A4ykhsPb8qV3ffTqpQDklHSMDJ0
 android.app.-$$Lambda$ActivityThread$ActivityClientRecord$HOrG1qglSjSUHSjKBn2rXtX0gGg
+android.app.-$$Lambda$ActivityThread$ApplicationThread$nBC_BR7B9W6ftKAxur3BC53SJYc
 android.app.-$$Lambda$ActivityThread$ApplicationThread$tUGFX7CUhzB4Pg5wFd5yeqOnu38
-android.app.-$$Lambda$ActivityThread$ZXDWm3IBeFmLnFVblhB-IOZCr9o
+android.app.-$$Lambda$ActivityThread$ApplicationThread$uR_ee-5oPoxu4U_by7wU55jwtdU
+android.app.-$$Lambda$ActivityThread$FmvGY8exyv0L0oqZrnunpl8OFI8
+android.app.-$$Lambda$ActivityThread$Wg40iAoNYFxps_KmrqtgptTB054
+android.app.-$$Lambda$ActivityTransitionState$yioLR6wQWjZ9DcWK5bibElIbsXc
+android.app.-$$Lambda$AppOpsManager$HistoricalOp$DkVcBvqB32SMHlxw0sWQPh3GL1A
+android.app.-$$Lambda$AppOpsManager$HistoricalOp$HUOLFYs8TiaQIOXcrq6JzjxA6gs
+android.app.-$$Lambda$AppOpsManager$HistoricalOp$Vs6pDL0wjOBTquwNnreWVbPQrn4
 android.app.-$$Lambda$Dialog$zXRzrq3I7H1_zmZ8d_W7t2CQN0I
+android.app.-$$Lambda$FragmentTransition$jurn0WXuKw3bRQ_2d5zCWdeZWuI
 android.app.-$$Lambda$LoadedApk$ReceiverDispatcher$Args$_BumDX2UKsnxLVrE6UJsJZkotuA
 android.app.-$$Lambda$Notification$hOCsSZH8tWalFSbIzQ9x9IcPa9M
 android.app.-$$Lambda$ResourcesManager$QJ7UiVk_XS90KuXAsIjIEym1DnM
 android.app.-$$Lambda$SharedPreferencesImpl$EditorImpl$3CAjkhzA131V3V-sLfP2uy0FWZ0
+android.app.-$$Lambda$WallpaperManager$Globals$1AcnQUORvPlCjJoNqdxfQT4o4Nw
+android.app.-$$Lambda$WallpaperManager$Globals$2yG7V1sbMECCnlFTLyjKWKqNoYI
+android.app.-$$Lambda$ZsFzoG2loyqNOR2cNbo-thrNK5c
 android.app.-$$Lambda$oslF4K8Uk6v-6nTRoaEpCmfAptE
 android.app.ActionBar$LayoutParams
 android.app.ActionBar
+android.app.Activity$1
 android.app.Activity$HostCallbacks
+android.app.Activity$ManagedCursor
+android.app.Activity$ManagedDialog
 android.app.Activity$NonConfigurationInstances
 android.app.Activity
 android.app.ActivityManager$1
@@ -143,10 +183,15 @@
 android.app.ActivityManager$RunningServiceInfo
 android.app.ActivityManager$RunningTaskInfo$1
 android.app.ActivityManager$RunningTaskInfo
+android.app.ActivityManager$StackInfo$1
+android.app.ActivityManager$StackInfo
 android.app.ActivityManager$TaskDescription$1
 android.app.ActivityManager$TaskDescription
+android.app.ActivityManager$TaskSnapshot$1
+android.app.ActivityManager$TaskSnapshot
 android.app.ActivityManager$UidObserver
 android.app.ActivityManager
+android.app.ActivityManagerInternal
 android.app.ActivityOptions
 android.app.ActivityTaskManager$1
 android.app.ActivityTaskManager
@@ -172,28 +217,63 @@
 android.app.ActivityThread$PurgeIdler
 android.app.ActivityThread$ReceiverData
 android.app.ActivityThread$RequestAssistContextExtras
+android.app.ActivityThread$SafeCancellationTransport
 android.app.ActivityThread$ServiceArgsData
 android.app.ActivityThread$UpdateCompatibilityData
 android.app.ActivityThread
+android.app.ActivityTransitionCoordinator
+android.app.ActivityTransitionState$1
 android.app.ActivityTransitionState
+android.app.AlarmManager$AlarmClockInfo$1
+android.app.AlarmManager$AlarmClockInfo
 android.app.AlarmManager$ListenerWrapper
+android.app.AlarmManager$OnAlarmListener
 android.app.AlarmManager
 android.app.AlertDialog$Builder
 android.app.AlertDialog
+android.app.AppCompatCallbacks
 android.app.AppComponentFactory
 android.app.AppDetailsActivity
 android.app.AppGlobals
+android.app.AppOpsManager$1
+android.app.AppOpsManager$2
+android.app.AppOpsManager$3
+android.app.AppOpsManager$HistoricalOp$1
+android.app.AppOpsManager$HistoricalOp
+android.app.AppOpsManager$HistoricalOps$1
+android.app.AppOpsManager$HistoricalOps
+android.app.AppOpsManager$HistoricalPackageOps$1
+android.app.AppOpsManager$HistoricalPackageOps
+android.app.AppOpsManager$HistoricalUidOps$1
+android.app.AppOpsManager$HistoricalUidOps
+android.app.AppOpsManager$OnOpChangedInternalListener
 android.app.AppOpsManager$OnOpChangedListener
+android.app.AppOpsManager$OpEntry$1
+android.app.AppOpsManager$OpEntry
+android.app.AppOpsManager$PackageOps$1
+android.app.AppOpsManager$PackageOps
 android.app.AppOpsManager
+android.app.AppOpsManagerInternal
 android.app.Application$ActivityLifecycleCallbacks
 android.app.Application
+android.app.ApplicationErrorReport$1
 android.app.ApplicationErrorReport$CrashInfo
+android.app.ApplicationErrorReport$ParcelableCrashInfo$1
+android.app.ApplicationErrorReport$ParcelableCrashInfo
+android.app.ApplicationErrorReport
+android.app.ApplicationLoaders$CachedClassLoader
 android.app.ApplicationLoaders
+android.app.ApplicationPackageManager$MoveCallbackDelegate
 android.app.ApplicationPackageManager$OnPermissionsChangeListenerDelegate
 android.app.ApplicationPackageManager$ResourceName
 android.app.ApplicationPackageManager
+android.app.AutomaticZenRule$1
+android.app.AutomaticZenRule
 android.app.BackStackRecord$Op
 android.app.BackStackRecord
+android.app.BackStackState$1
+android.app.BackStackState
+android.app.BroadcastOptions
 android.app.ClientTransactionHandler
 android.app.ContentProviderHolder$1
 android.app.ContentProviderHolder
@@ -204,33 +284,54 @@
 android.app.Dialog$ListenersHandler
 android.app.Dialog
 android.app.DialogFragment
+android.app.DirectAction
+android.app.DownloadManager$CursorTranslator
+android.app.DownloadManager$Query
+android.app.DownloadManager$Request
 android.app.DownloadManager
+android.app.EnterTransitionCoordinator
+android.app.ExitTransitionCoordinator
 android.app.Fragment$1
 android.app.Fragment$AnimationInfo
+android.app.Fragment$InstantiationException
 android.app.Fragment$OnStartEnterTransitionListener
 android.app.Fragment
 android.app.FragmentContainer
 android.app.FragmentController
 android.app.FragmentHostCallback
 android.app.FragmentManager$BackStackEntry
+android.app.FragmentManager$FragmentLifecycleCallbacks
+android.app.FragmentManager$OnBackStackChangedListener
 android.app.FragmentManager
 android.app.FragmentManagerImpl$1
+android.app.FragmentManagerImpl$2
+android.app.FragmentManagerImpl$AnimateOnHWLayerIfNeededListener
 android.app.FragmentManagerImpl$OpGenerator
+android.app.FragmentManagerImpl$StartEnterTransitionListener
 android.app.FragmentManagerImpl
+android.app.FragmentManagerNonConfig
 android.app.FragmentManagerState$1
 android.app.FragmentManagerState
 android.app.FragmentState$1
 android.app.FragmentState
 android.app.FragmentTransaction
+android.app.FragmentTransition$2
+android.app.FragmentTransition$5
 android.app.FragmentTransition$FragmentContainerTransition
 android.app.FragmentTransition
+android.app.IActivityController$Stub$Proxy
+android.app.IActivityController$Stub
+android.app.IActivityController
 android.app.IActivityManager$Stub$Proxy
 android.app.IActivityManager$Stub
 android.app.IActivityManager
 android.app.IActivityTaskManager$Stub$Proxy
 android.app.IActivityTaskManager$Stub
 android.app.IActivityTaskManager
+android.app.IAlarmCompleteListener$Stub$Proxy
+android.app.IAlarmCompleteListener$Stub
 android.app.IAlarmCompleteListener
+android.app.IAlarmListener$Stub$Proxy
 android.app.IAlarmListener$Stub
 android.app.IAlarmListener
 android.app.IAlarmManager$Stub$Proxy
@@ -239,37 +340,68 @@
 android.app.IAppTask$Stub$Proxy
 android.app.IAppTask$Stub
 android.app.IAppTask
+android.app.IApplicationThread$Stub$Proxy
 android.app.IApplicationThread$Stub
 android.app.IApplicationThread
+android.app.IAssistDataReceiver$Stub$Proxy
+android.app.IAssistDataReceiver$Stub
+android.app.IAssistDataReceiver
+android.app.IBackupAgent$Stub$Proxy
 android.app.IBackupAgent$Stub
 android.app.IBackupAgent
+android.app.IInstantAppResolver$Stub$Proxy
+android.app.IInstantAppResolver$Stub
+android.app.IInstantAppResolver
+android.app.IInstrumentationWatcher$Stub$Proxy
 android.app.IInstrumentationWatcher$Stub
 android.app.IInstrumentationWatcher
 android.app.INotificationManager$Stub$Proxy
 android.app.INotificationManager$Stub
 android.app.INotificationManager
+android.app.IProcessObserver$Stub$Proxy
 android.app.IProcessObserver$Stub
 android.app.IProcessObserver
+android.app.IRequestFinishCallback$Stub$Proxy
+android.app.IRequestFinishCallback$Stub
+android.app.IRequestFinishCallback
 android.app.ISearchManager$Stub
 android.app.ISearchManager
+android.app.IServiceConnection$Stub$Proxy
 android.app.IServiceConnection$Stub
 android.app.IServiceConnection
+android.app.IStopUserCallback$Stub$Proxy
+android.app.IStopUserCallback$Stub
+android.app.IStopUserCallback
+android.app.ITaskStackListener$Stub$Proxy
+android.app.ITaskStackListener$Stub
+android.app.ITaskStackListener
+android.app.ITransientNotification$Stub$Proxy
 android.app.ITransientNotification$Stub
 android.app.ITransientNotification
+android.app.IUiAutomationConnection$Stub$Proxy
 android.app.IUiAutomationConnection$Stub
 android.app.IUiAutomationConnection
 android.app.IUiModeManager$Stub$Proxy
 android.app.IUiModeManager$Stub
 android.app.IUiModeManager
+android.app.IUidObserver$Stub$Proxy
 android.app.IUidObserver$Stub
 android.app.IUidObserver
+android.app.IUriGrantsManager$Stub$Proxy
+android.app.IUriGrantsManager$Stub
+android.app.IUriGrantsManager
+android.app.IUserSwitchObserver$Stub$Proxy
 android.app.IUserSwitchObserver$Stub
 android.app.IUserSwitchObserver
 android.app.IWallpaperManager$Stub$Proxy
 android.app.IWallpaperManager$Stub
 android.app.IWallpaperManager
+android.app.IWallpaperManagerCallback$Stub$Proxy
 android.app.IWallpaperManagerCallback$Stub
 android.app.IWallpaperManagerCallback
+android.app.Instrumentation$ActivityGoing
+android.app.Instrumentation$ActivityMonitor
+android.app.Instrumentation$ActivityWaiter
 android.app.Instrumentation
 android.app.IntentReceiverLeaked
 android.app.IntentService$ServiceHandler
@@ -285,6 +417,7 @@
 android.app.LoadedApk$ServiceDispatcher$InnerConnection
 android.app.LoadedApk$ServiceDispatcher$RunConnection
 android.app.LoadedApk$ServiceDispatcher
+android.app.LoadedApk$SplitDependencyLoaderImpl
 android.app.LoadedApk$WarningContextClassLoader
 android.app.LoadedApk
 android.app.LoaderManager$LoaderCallbacks
@@ -298,6 +431,8 @@
 android.app.Notification$Action
 android.app.Notification$BigPictureStyle
 android.app.Notification$BigTextStyle
+android.app.Notification$BubbleMetadata$1
+android.app.Notification$BubbleMetadata
 android.app.Notification$Builder
 android.app.Notification$BuilderRemoteViews
 android.app.Notification$DecoratedCustomViewStyle
@@ -317,22 +452,29 @@
 android.app.NotificationManager$Policy
 android.app.NotificationManager
 android.app.OnActivityPausedListener
+android.app.PackageInstallObserver$1
 android.app.PendingIntent$1
 android.app.PendingIntent$2
 android.app.PendingIntent$CanceledException
+android.app.PendingIntent$FinishedDispatcher
+android.app.PendingIntent$OnFinished
 android.app.PendingIntent$OnMarshaledListener
 android.app.PendingIntent
 android.app.Person$1
 android.app.Person$Builder
 android.app.Person
+android.app.PictureInPictureParams$1
+android.app.PictureInPictureParams
 android.app.ProfilerInfo$1
 android.app.ProfilerInfo
 android.app.QueuedWork$QueuedWorkHandler
 android.app.QueuedWork
 android.app.ReceiverRestrictedContext
 android.app.RemoteAction$1
+android.app.RemoteAction
 android.app.RemoteInput$1
 android.app.RemoteInput
+android.app.RemoteServiceException
 android.app.ResourcesManager$1
 android.app.ResourcesManager$ActivityResources
 android.app.ResourcesManager$ApkKey
@@ -340,6 +482,9 @@
 android.app.ResultInfo$1
 android.app.ResultInfo
 android.app.SearchManager
+android.app.SearchableInfo$1
+android.app.SearchableInfo$ActionKeyInfo
+android.app.SearchableInfo
 android.app.Service
 android.app.ServiceConnectionLeaked
 android.app.ServiceStartArgs$1
@@ -353,9 +498,8 @@
 android.app.SharedPreferencesImpl$EditorImpl
 android.app.SharedPreferencesImpl$MemoryCommitResult
 android.app.SharedPreferencesImpl
-android.app.StatsManager$StatsUnavailableException
-android.app.StatsManager
 android.app.StatusBarManager
+android.app.SynchronousUserSwitchObserver
 android.app.SystemServiceRegistry$100
 android.app.SystemServiceRegistry$101
 android.app.SystemServiceRegistry$102
@@ -373,7 +517,6 @@
 android.app.SystemServiceRegistry$113
 android.app.SystemServiceRegistry$114
 android.app.SystemServiceRegistry$115
-android.app.SystemServiceRegistry$116
 android.app.SystemServiceRegistry$11
 android.app.SystemServiceRegistry$12
 android.app.SystemServiceRegistry$13
@@ -473,33 +616,52 @@
 android.app.SystemServiceRegistry$99
 android.app.SystemServiceRegistry$9
 android.app.SystemServiceRegistry$CachedServiceFetcher
+android.app.SystemServiceRegistry$ContextAwareServiceProducerWithBinder
+android.app.SystemServiceRegistry$ContextAwareServiceProducerWithoutBinder
 android.app.SystemServiceRegistry$ServiceFetcher
 android.app.SystemServiceRegistry$StaticApplicationContextServiceFetcher
 android.app.SystemServiceRegistry$StaticServiceFetcher
+android.app.SystemServiceRegistry$StaticServiceProducerWithBinder
+android.app.SystemServiceRegistry$StaticServiceProducerWithoutBinder
 android.app.SystemServiceRegistry
 android.app.TaskInfo
+android.app.TaskStackListener
 android.app.UiModeManager
 android.app.UriGrantsManager$1
 android.app.UriGrantsManager
 android.app.UserSwitchObserver
+android.app.VoiceInteractor$Request
+android.app.VoiceInteractor
+android.app.Vr2dDisplayProperties$1
+android.app.Vr2dDisplayProperties
 android.app.VrManager
 android.app.WallpaperColors$1
 android.app.WallpaperColors
 android.app.WallpaperInfo$1
+android.app.WallpaperInfo
 android.app.WallpaperManager$Globals
+android.app.WallpaperManager$OnColorsChangedListener
 android.app.WallpaperManager
 android.app.WindowConfiguration$1
 android.app.WindowConfiguration
 android.app.admin.-$$Lambda$DevicePolicyManager$aBAov4sAc4DWENs1-hCXh31NAg0
 android.app.admin.-$$Lambda$DevicePolicyManager$w2TynM9H41ejac4JVpNbnemNVWk
+android.app.admin.-$$Lambda$pWaRScwKTZTgGW4Wa_v5R_pKBDU
 android.app.admin.DeviceAdminInfo$1
 android.app.admin.DeviceAdminInfo$PolicyInfo
 android.app.admin.DeviceAdminInfo
+android.app.admin.DevicePolicyCache$EmptyDevicePolicyCache
+android.app.admin.DevicePolicyCache
+android.app.admin.DevicePolicyEventLogger
 android.app.admin.DevicePolicyManager$1
 android.app.admin.DevicePolicyManager$2
 android.app.admin.DevicePolicyManager$InstallSystemUpdateCallback
 android.app.admin.DevicePolicyManager$OnClearApplicationUserDataListener
 android.app.admin.DevicePolicyManager
+android.app.admin.DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener
+android.app.admin.DevicePolicyManagerInternal
+android.app.admin.IDeviceAdminService$Stub$Proxy
+android.app.admin.IDeviceAdminService
 android.app.admin.IDevicePolicyManager$Stub$Proxy
 android.app.admin.IDevicePolicyManager$Stub
 android.app.admin.IDevicePolicyManager
@@ -508,13 +670,13 @@
 android.app.admin.SecurityLog$SecurityEvent$1
 android.app.admin.SecurityLog$SecurityEvent
 android.app.admin.SecurityLog
+android.app.admin.StartInstallingUpdateCallback$Stub$Proxy
 android.app.admin.StartInstallingUpdateCallback$Stub
 android.app.admin.StartInstallingUpdateCallback
 android.app.admin.SystemUpdateInfo$1
 android.app.admin.SystemUpdateInfo
 android.app.admin.SystemUpdatePolicy$1
 android.app.admin.SystemUpdatePolicy
-android.app.appsearch.AppSearchManagerFrameworkInitializer
 android.app.assist.AssistContent$1
 android.app.assist.AssistContent
 android.app.assist.AssistStructure$1
@@ -540,21 +702,45 @@
 android.app.backup.BackupManager
 android.app.backup.BackupTransport$TransportImpl
 android.app.backup.BackupTransport
+android.app.backup.BlobBackupHelper
 android.app.backup.FileBackupHelperBase
 android.app.backup.FullBackup
 android.app.backup.FullBackupDataOutput
+android.app.backup.IBackupCallback$Stub$Proxy
+android.app.backup.IBackupCallback$Stub
+android.app.backup.IBackupCallback
 android.app.backup.IBackupManager$Stub$Proxy
 android.app.backup.IBackupManager$Stub
 android.app.backup.IBackupManager
+android.app.backup.IBackupManagerMonitor$Stub$Proxy
+android.app.backup.IBackupManagerMonitor$Stub
+android.app.backup.IBackupManagerMonitor
+android.app.backup.IBackupObserver$Stub$Proxy
+android.app.backup.IBackupObserver$Stub
+android.app.backup.IBackupObserver
+android.app.backup.IFullBackupRestoreObserver$Stub$Proxy
+android.app.backup.IFullBackupRestoreObserver$Stub
+android.app.backup.IFullBackupRestoreObserver
+android.app.backup.ISelectBackupTransportCallback$Stub$Proxy
+android.app.backup.ISelectBackupTransportCallback$Stub
+android.app.backup.ISelectBackupTransportCallback
 android.app.backup.SharedPreferencesBackupHelper
+android.app.blob.-$$Lambda$BlobStoreManagerFrameworkInitializer$WjSRSHMmxWPF4Fq-7TpX23MBh2U
+android.app.blob.BlobStoreManager
 android.app.blob.BlobStoreManagerFrameworkInitializer
 android.app.contentsuggestions.ContentSuggestionsManager
+android.app.contentsuggestions.IContentSuggestionsManager$Stub
+android.app.contentsuggestions.IContentSuggestionsManager
+android.app.job.-$$Lambda$FpGlzN9oJcl8o5soW-gU-DyTvXM
+android.app.job.-$$Lambda$JobSchedulerFrameworkInitializer$PtYe8PQc1PVJQXRnpm3iSxcWTR0
+android.app.job.-$$Lambda$JobSchedulerFrameworkInitializer$RHUxgww0pZFMmfQWKgaRAx0YFqA
 android.app.job.IJobCallback$Stub$Proxy
 android.app.job.IJobCallback$Stub
 android.app.job.IJobCallback
 android.app.job.IJobScheduler$Stub$Proxy
 android.app.job.IJobScheduler$Stub
 android.app.job.IJobScheduler
+android.app.job.IJobService$Stub$Proxy
 android.app.job.IJobService$Stub
 android.app.job.IJobService
 android.app.job.JobInfo$1
@@ -573,12 +759,40 @@
 android.app.job.JobServiceEngine
 android.app.job.JobWorkItem$1
 android.app.job.JobWorkItem
+android.app.prediction.AppPredictionContext$1
+android.app.prediction.AppPredictionContext
 android.app.prediction.AppPredictionManager
+android.app.prediction.AppPredictionSessionId$1
+android.app.prediction.AppPredictionSessionId
+android.app.prediction.AppPredictor
+android.app.prediction.AppTarget$1
+android.app.prediction.AppTarget
+android.app.prediction.AppTargetEvent$1
+android.app.prediction.AppTargetEvent
+android.app.prediction.AppTargetId$1
+android.app.prediction.AppTargetId
+android.app.prediction.IPredictionCallback$Stub$Proxy
+android.app.prediction.IPredictionCallback$Stub
+android.app.prediction.IPredictionCallback
+android.app.prediction.IPredictionManager$Stub$Proxy
+android.app.prediction.IPredictionManager$Stub
+android.app.prediction.IPredictionManager
+android.app.role.-$$Lambda$RoleControllerManager$Jsb4ev7pHUqel8_lglNSRLiUzpg
+android.app.role.-$$Lambda$o94o2jK_ei-IVw-3oY_QJ49zpAA
+android.app.role.IOnRoleHoldersChangedListener$Stub$Proxy
+android.app.role.IOnRoleHoldersChangedListener$Stub
+android.app.role.IOnRoleHoldersChangedListener
+android.app.role.IRoleController$Stub
+android.app.role.IRoleController
 android.app.role.IRoleManager$Stub$Proxy
 android.app.role.IRoleManager$Stub
 android.app.role.IRoleManager
+android.app.role.OnRoleHoldersChangedListener
 android.app.role.RoleControllerManager
+android.app.role.RoleManager$OnRoleHoldersChangedListenerDelegate
 android.app.role.RoleManager
+android.app.servertransaction.ActivityConfigurationChangeItem$1
+android.app.servertransaction.ActivityConfigurationChangeItem
 android.app.servertransaction.ActivityLifecycleItem
 android.app.servertransaction.ActivityRelaunchItem$1
 android.app.servertransaction.ActivityRelaunchItem
@@ -596,6 +810,7 @@
 android.app.servertransaction.LaunchActivityItem
 android.app.servertransaction.NewIntentItem$1
 android.app.servertransaction.NewIntentItem
+android.app.servertransaction.ObjectPool
 android.app.servertransaction.ObjectPoolItem
 android.app.servertransaction.PauseActivityItem$1
 android.app.servertransaction.PauseActivityItem
@@ -609,8 +824,6 @@
 android.app.servertransaction.TopResumedActivityChangeItem
 android.app.servertransaction.TransactionExecutor
 android.app.servertransaction.TransactionExecutorHelper
-android.app.servertransaction.WindowVisibilityItem$1
-android.app.servertransaction.WindowVisibilityItem
 android.app.slice.-$$Lambda$SliceProvider$bIgM5f4PsMvz_YYWEeFTjvTqevw
 android.app.slice.ISliceManager$Stub$Proxy
 android.app.slice.ISliceManager$Stub
@@ -629,9 +842,19 @@
 android.app.timedetector.ITimeDetectorService
 android.app.timedetector.TimeDetector
 android.app.timezone.RulesManager
+android.app.timezonedetector.TimeZoneDetector
+android.app.trust.IStrongAuthTracker$Stub$Proxy
+android.app.trust.IStrongAuthTracker$Stub
+android.app.trust.IStrongAuthTracker
+android.app.trust.ITrustListener$Stub$Proxy
+android.app.trust.ITrustListener$Stub
+android.app.trust.ITrustListener
 android.app.trust.ITrustManager$Stub$Proxy
 android.app.trust.ITrustManager$Stub
 android.app.trust.ITrustManager
+android.app.trust.TrustManager$1
+android.app.trust.TrustManager$2
+android.app.trust.TrustManager$TrustListener
 android.app.trust.TrustManager
 android.app.usage.AppStandbyInfo$1
 android.app.usage.AppStandbyInfo
@@ -641,6 +864,10 @@
 android.app.usage.CacheQuotaService$CacheQuotaServiceWrapper
 android.app.usage.CacheQuotaService$ServiceHandler
 android.app.usage.CacheQuotaService
+android.app.usage.ConfigurationStats$1
+android.app.usage.ConfigurationStats
+android.app.usage.EventList
+android.app.usage.ICacheQuotaService$Stub$Proxy
 android.app.usage.ICacheQuotaService$Stub
 android.app.usage.ICacheQuotaService
 android.app.usage.IStorageStatsManager$Stub$Proxy
@@ -649,10 +876,13 @@
 android.app.usage.IUsageStatsManager$Stub$Proxy
 android.app.usage.IUsageStatsManager$Stub
 android.app.usage.IUsageStatsManager
+android.app.usage.NetworkStatsManager$CallbackHandler
+android.app.usage.NetworkStatsManager$UsageCallback
 android.app.usage.NetworkStatsManager
 android.app.usage.StorageStats$1
 android.app.usage.StorageStats
 android.app.usage.StorageStatsManager
+android.app.usage.TimeSparseArray
 android.app.usage.UsageEvents$1
 android.app.usage.UsageEvents$Event
 android.app.usage.UsageEvents
@@ -660,37 +890,66 @@
 android.app.usage.UsageStats
 android.app.usage.UsageStatsManager
 android.appwidget.AppWidgetManager
+android.appwidget.AppWidgetManagerInternal
 android.appwidget.AppWidgetProvider
+android.appwidget.AppWidgetProviderInfo$1
+android.appwidget.AppWidgetProviderInfo
+android.attention.AttentionManagerInternal$AttentionCallbackInternal
+android.attention.AttentionManagerInternal
+android.bluetooth.-$$Lambda$BluetoothAdapter$2$INSd_aND-SGWhhPZUtIqya_Uxw4
 android.bluetooth.BluetoothA2dp$1
-android.bluetooth.BluetoothA2dp$2
 android.bluetooth.BluetoothA2dp
+android.bluetooth.BluetoothA2dpSink
 android.bluetooth.BluetoothActivityEnergyInfo$1
 android.bluetooth.BluetoothActivityEnergyInfo
 android.bluetooth.BluetoothAdapter$1
 android.bluetooth.BluetoothAdapter$2
 android.bluetooth.BluetoothAdapter
+android.bluetooth.BluetoothAvrcpController
 android.bluetooth.BluetoothClass$1
 android.bluetooth.BluetoothClass
 android.bluetooth.BluetoothCodecConfig$1
 android.bluetooth.BluetoothCodecConfig
+android.bluetooth.BluetoothCodecStatus$1
+android.bluetooth.BluetoothCodecStatus
 android.bluetooth.BluetoothDevice$1
 android.bluetooth.BluetoothDevice$2
 android.bluetooth.BluetoothDevice
+android.bluetooth.BluetoothGattService$1
+android.bluetooth.BluetoothGattService
 android.bluetooth.BluetoothHeadset$1
 android.bluetooth.BluetoothHeadset$2
 android.bluetooth.BluetoothHeadset$3
 android.bluetooth.BluetoothHeadset
+android.bluetooth.BluetoothHeadsetClient
+android.bluetooth.BluetoothHearingAid$1
 android.bluetooth.BluetoothHearingAid
+android.bluetooth.BluetoothHidDevice$1
 android.bluetooth.BluetoothHidDevice
+android.bluetooth.BluetoothHidDeviceAppQosSettings$1
+android.bluetooth.BluetoothHidDeviceAppQosSettings
+android.bluetooth.BluetoothHidDeviceAppSdpSettings$1
+android.bluetooth.BluetoothHidDeviceAppSdpSettings
+android.bluetooth.BluetoothHidHost$1
 android.bluetooth.BluetoothHidHost
 android.bluetooth.BluetoothInputStream
 android.bluetooth.BluetoothManager
+android.bluetooth.BluetoothMap$1
 android.bluetooth.BluetoothMap
+android.bluetooth.BluetoothMapClient
 android.bluetooth.BluetoothOutputStream
+android.bluetooth.BluetoothPan$1
 android.bluetooth.BluetoothPan
+android.bluetooth.BluetoothPbap$1
+android.bluetooth.BluetoothPbap$2
 android.bluetooth.BluetoothPbap
+android.bluetooth.BluetoothPbapClient
 android.bluetooth.BluetoothProfile$ServiceListener
 android.bluetooth.BluetoothProfile
+android.bluetooth.BluetoothProfileConnector$1
+android.bluetooth.BluetoothProfileConnector$2
+android.bluetooth.BluetoothProfileConnector
+android.bluetooth.BluetoothSap$1
 android.bluetooth.BluetoothSap
 android.bluetooth.BluetoothServerSocket
 android.bluetooth.BluetoothSocket$SocketState
@@ -710,6 +969,12 @@
 android.bluetooth.IBluetoothGatt$Stub$Proxy
 android.bluetooth.IBluetoothGatt$Stub
 android.bluetooth.IBluetoothGatt
+android.bluetooth.IBluetoothGattCallback$Stub$Proxy
+android.bluetooth.IBluetoothGattCallback$Stub
+android.bluetooth.IBluetoothGattCallback
+android.bluetooth.IBluetoothGattServerCallback$Stub$Proxy
+android.bluetooth.IBluetoothGattServerCallback$Stub
+android.bluetooth.IBluetoothGattServerCallback
 android.bluetooth.IBluetoothHeadset$Stub$Proxy
 android.bluetooth.IBluetoothHeadset$Stub
 android.bluetooth.IBluetoothHeadset
@@ -718,36 +983,65 @@
 android.bluetooth.IBluetoothHeadsetPhone
 android.bluetooth.IBluetoothHearingAid$Stub
 android.bluetooth.IBluetoothHearingAid
+android.bluetooth.IBluetoothHidDevice$Stub$Proxy
 android.bluetooth.IBluetoothHidDevice$Stub
 android.bluetooth.IBluetoothHidDevice
+android.bluetooth.IBluetoothHidDeviceCallback$Stub$Proxy
+android.bluetooth.IBluetoothHidDeviceCallback$Stub
+android.bluetooth.IBluetoothHidDeviceCallback
+android.bluetooth.IBluetoothHidHost$Stub$Proxy
 android.bluetooth.IBluetoothHidHost$Stub
 android.bluetooth.IBluetoothHidHost
 android.bluetooth.IBluetoothManager$Stub$Proxy
 android.bluetooth.IBluetoothManager$Stub
 android.bluetooth.IBluetoothManager
+android.bluetooth.IBluetoothManagerCallback$Stub$Proxy
 android.bluetooth.IBluetoothManagerCallback$Stub
 android.bluetooth.IBluetoothManagerCallback
+android.bluetooth.IBluetoothMap$Stub$Proxy
 android.bluetooth.IBluetoothMap$Stub
 android.bluetooth.IBluetoothMap
+android.bluetooth.IBluetoothMetadataListener$Stub$Proxy
 android.bluetooth.IBluetoothMetadataListener$Stub
 android.bluetooth.IBluetoothMetadataListener
+android.bluetooth.IBluetoothPan$Stub$Proxy
 android.bluetooth.IBluetoothPan$Stub
 android.bluetooth.IBluetoothPan
+android.bluetooth.IBluetoothPbap$Stub$Proxy
 android.bluetooth.IBluetoothPbap$Stub
 android.bluetooth.IBluetoothPbap
+android.bluetooth.IBluetoothProfileServiceConnection$Stub$Proxy
 android.bluetooth.IBluetoothProfileServiceConnection$Stub
 android.bluetooth.IBluetoothProfileServiceConnection
+android.bluetooth.IBluetoothSap$Stub$Proxy
 android.bluetooth.IBluetoothSap$Stub
 android.bluetooth.IBluetoothSap
 android.bluetooth.IBluetoothSocketManager$Stub$Proxy
 android.bluetooth.IBluetoothSocketManager$Stub
 android.bluetooth.IBluetoothSocketManager
+android.bluetooth.IBluetoothStateChangeCallback$Stub$Proxy
 android.bluetooth.IBluetoothStateChangeCallback$Stub
 android.bluetooth.IBluetoothStateChangeCallback
+android.bluetooth.OobData$1
+android.bluetooth.OobData
 android.bluetooth.UidTraffic$1
 android.bluetooth.UidTraffic
+android.bluetooth.le.AdvertiseData$1
+android.bluetooth.le.AdvertiseData
+android.bluetooth.le.AdvertisingSetParameters$1
+android.bluetooth.le.AdvertisingSetParameters
+android.bluetooth.le.BluetoothLeScanner
+android.bluetooth.le.IAdvertisingSetCallback$Stub$Proxy
+android.bluetooth.le.IAdvertisingSetCallback$Stub
+android.bluetooth.le.IAdvertisingSetCallback
+android.bluetooth.le.IPeriodicAdvertisingCallback$Stub$Proxy
+android.bluetooth.le.IPeriodicAdvertisingCallback$Stub
+android.bluetooth.le.IPeriodicAdvertisingCallback
 android.bluetooth.le.IScannerCallback$Stub$Proxy
+android.bluetooth.le.IScannerCallback$Stub
 android.bluetooth.le.IScannerCallback
+android.bluetooth.le.PeriodicAdvertisingParameters$1
+android.bluetooth.le.PeriodicAdvertisingParameters
 android.bluetooth.le.ScanFilter$1
 android.bluetooth.le.ScanFilter$Builder
 android.bluetooth.le.ScanFilter
@@ -757,7 +1051,17 @@
 android.bluetooth.le.ScanSettings$1
 android.bluetooth.le.ScanSettings$Builder
 android.bluetooth.le.ScanSettings
+android.companion.AssociationRequest$1
+android.companion.AssociationRequest
 android.companion.CompanionDeviceManager
+android.companion.ICompanionDeviceManager$Stub$Proxy
+android.companion.ICompanionDeviceManager$Stub
+android.companion.ICompanionDeviceManager
+android.companion.IFindDeviceCallback$Stub$Proxy
+android.companion.IFindDeviceCallback$Stub
+android.companion.IFindDeviceCallback
+android.compat.Compatibility$Callbacks
+android.compat.Compatibility
 android.content.-$$Lambda$AbstractThreadedSyncAdapter$ISyncAdapterImpl$L6ZtOCe8gjKwJj0908ytPlrD8Rc
 android.content.AbstractThreadedSyncAdapter$ISyncAdapterImpl
 android.content.AbstractThreadedSyncAdapter$SyncThread
@@ -772,18 +1076,27 @@
 android.content.BroadcastReceiver$PendingResult$1
 android.content.BroadcastReceiver$PendingResult
 android.content.BroadcastReceiver
+android.content.ClipData$1
+android.content.ClipData$Item
+android.content.ClipData
+android.content.ClipDescription$1
+android.content.ClipDescription
 android.content.ClipboardManager$1
+android.content.ClipboardManager$OnPrimaryClipChangedListener
 android.content.ClipboardManager
 android.content.ComponentCallbacks2
 android.content.ComponentCallbacks
 android.content.ComponentName$1
+android.content.ComponentName$WithComponentName
 android.content.ComponentName
+android.content.ContentCaptureOptions$1
 android.content.ContentCaptureOptions
 android.content.ContentInterface
 android.content.ContentProvider$PipeDataWriter
 android.content.ContentProvider$Transport
 android.content.ContentProvider
 android.content.ContentProviderClient$CursorWrapperInner
+android.content.ContentProviderClient$NotRespondingRunnable
 android.content.ContentProviderClient
 android.content.ContentProviderNative
 android.content.ContentProviderOperation$1
@@ -815,15 +1128,19 @@
 android.content.IContentService$Stub$Proxy
 android.content.IContentService$Stub
 android.content.IContentService
+android.content.IIntentReceiver$Stub$Proxy
 android.content.IIntentReceiver$Stub
 android.content.IIntentReceiver
 android.content.IIntentSender$Stub$Proxy
 android.content.IIntentSender$Stub
 android.content.IIntentSender
+android.content.IOnPrimaryClipChangedListener$Stub$Proxy
 android.content.IOnPrimaryClipChangedListener$Stub
 android.content.IOnPrimaryClipChangedListener
+android.content.IRestrictionsManager$Stub$Proxy
 android.content.IRestrictionsManager$Stub
 android.content.IRestrictionsManager
+android.content.ISyncAdapter$Stub$Proxy
 android.content.ISyncAdapter$Stub
 android.content.ISyncAdapter
 android.content.ISyncAdapterUnsyncableAccountCallback$Stub$Proxy
@@ -832,21 +1149,26 @@
 android.content.ISyncContext$Stub$Proxy
 android.content.ISyncContext$Stub
 android.content.ISyncContext
+android.content.ISyncStatusObserver$Stub$Proxy
 android.content.ISyncStatusObserver$Stub
 android.content.ISyncStatusObserver
 android.content.Intent$1
+android.content.Intent$FilterComparison
 android.content.Intent
 android.content.IntentFilter$1
 android.content.IntentFilter$AuthorityEntry
 android.content.IntentFilter$MalformedMimeTypeException
 android.content.IntentFilter
 android.content.IntentSender$1
+android.content.IntentSender$FinishedDispatcher
 android.content.IntentSender$SendIntentException
 android.content.IntentSender
 android.content.Loader$ForceLoadContentObserver
 android.content.Loader$OnLoadCanceledListener
 android.content.Loader$OnLoadCompleteListener
 android.content.Loader
+android.content.LocusId$1
+android.content.LocusId
 android.content.OperationApplicationException
 android.content.PeriodicSync$1
 android.content.ReceiverCallNotAllowedException
@@ -859,6 +1181,8 @@
 android.content.SharedPreferences
 android.content.SyncAdapterType$1
 android.content.SyncAdapterType
+android.content.SyncAdaptersCache$MySerializer
+android.content.SyncAdaptersCache
 android.content.SyncContext
 android.content.SyncRequest$1
 android.content.SyncRequest$Builder
@@ -867,43 +1191,75 @@
 android.content.SyncResult
 android.content.SyncStats$1
 android.content.SyncStats
+android.content.SyncStatusInfo$1
+android.content.SyncStatusInfo$Stats
+android.content.SyncStatusInfo
 android.content.SyncStatusObserver
 android.content.UndoManager$UndoState
 android.content.UndoManager
 android.content.UndoOperation
 android.content.UndoOwner
 android.content.UriMatcher
+android.content.integrity.AppIntegrityManager
+android.content.om.IOverlayManager$Stub$Proxy
+android.content.om.IOverlayManager$Stub
+android.content.om.IOverlayManager
+android.content.om.OverlayInfo$1
+android.content.om.OverlayInfo
 android.content.om.OverlayManager
-android.content.pm.-$$Lambda$jpya2qgMDDEok2GAoKRDqPM5lIE
+android.content.om.OverlayableInfo
+android.content.pm.-$$Lambda$PackageParser$0DZRgzfgaIMpCOhJqjw6PUiU5vw
+android.content.pm.-$$Lambda$PackageParser$0aobsT7Zf7WVZCqMZ5z2clAuQf4
+android.content.pm.-$$Lambda$PackageParser$M-9fHqS_eEp1oYkuKJhRHOGUxf8
+android.content.pm.-$$Lambda$T1UQAuePWRRmVQ1KzTyMAktZUPM
+android.content.pm.-$$Lambda$ciir_QAmv6RwJro4I58t77dPnxU
+android.content.pm.-$$Lambda$n3uXeb1v-YRmq_BWTfosEqUUr9g
+android.content.pm.-$$Lambda$zO9HBUVgPeroyDQPLJE-MNMvSqc
 android.content.pm.ActivityInfo$1
 android.content.pm.ActivityInfo$WindowLayout
 android.content.pm.ActivityInfo
-android.content.pm.parsing.library.AndroidHidlUpdater
 android.content.pm.ApplicationInfo$1
 android.content.pm.ApplicationInfo
+android.content.pm.BaseParceledListSlice$1
 android.content.pm.BaseParceledListSlice
 android.content.pm.ComponentInfo
 android.content.pm.ConfigurationInfo$1
 android.content.pm.ConfigurationInfo
 android.content.pm.CrossProfileApps
+android.content.pm.DataLoaderManager
 android.content.pm.FallbackCategoryProvider
 android.content.pm.FeatureGroupInfo$1
 android.content.pm.FeatureGroupInfo
 android.content.pm.FeatureInfo$1
 android.content.pm.FeatureInfo
+android.content.pm.ICrossProfileApps$Stub
+android.content.pm.ICrossProfileApps
+android.content.pm.IDexModuleRegisterCallback$Stub$Proxy
+android.content.pm.IDexModuleRegisterCallback$Stub
+android.content.pm.IDexModuleRegisterCallback
 android.content.pm.ILauncherApps$Stub$Proxy
 android.content.pm.ILauncherApps$Stub
 android.content.pm.ILauncherApps
+android.content.pm.IOnAppsChangedListener$Stub$Proxy
 android.content.pm.IOnAppsChangedListener$Stub
 android.content.pm.IOnAppsChangedListener
-android.content.pm.IOnPermissionsChangeListener$Stub
-android.content.pm.IOnPermissionsChangeListener
+android.content.pm.IOtaDexopt$Stub
+android.content.pm.IOtaDexopt
+android.content.pm.IPackageDataObserver$Stub$Proxy
 android.content.pm.IPackageDataObserver$Stub
 android.content.pm.IPackageDataObserver
+android.content.pm.IPackageDeleteObserver$Stub$Proxy
+android.content.pm.IPackageDeleteObserver$Stub
+android.content.pm.IPackageDeleteObserver2$Stub$Proxy
+android.content.pm.IPackageDeleteObserver2$Stub
+android.content.pm.IPackageDeleteObserver2
 android.content.pm.IPackageDeleteObserver
+android.content.pm.IPackageInstallObserver2$Stub
+android.content.pm.IPackageInstallObserver2
 android.content.pm.IPackageInstaller$Stub$Proxy
 android.content.pm.IPackageInstaller$Stub
 android.content.pm.IPackageInstaller
+android.content.pm.IPackageInstallerCallback$Stub$Proxy
 android.content.pm.IPackageInstallerCallback$Stub
 android.content.pm.IPackageInstallerCallback
 android.content.pm.IPackageInstallerSession$Stub$Proxy
@@ -911,25 +1267,39 @@
 android.content.pm.IPackageManager$Stub$Proxy
 android.content.pm.IPackageManager$Stub
 android.content.pm.IPackageManager
+android.content.pm.IPackageManagerNative$Stub
+android.content.pm.IPackageManagerNative
+android.content.pm.IPackageMoveObserver$Stub$Proxy
+android.content.pm.IPackageMoveObserver$Stub
+android.content.pm.IPackageMoveObserver
+android.content.pm.IPackageStatsObserver$Stub$Proxy
 android.content.pm.IPackageStatsObserver$Stub
 android.content.pm.IPackageStatsObserver
 android.content.pm.IShortcutService$Stub$Proxy
 android.content.pm.IShortcutService$Stub
 android.content.pm.IShortcutService
+android.content.pm.InstantAppIntentFilter$1
+android.content.pm.InstantAppIntentFilter
+android.content.pm.InstantAppResolveInfo$1
+android.content.pm.InstantAppResolveInfo$InstantAppDigest
+android.content.pm.InstantAppResolveInfo
 android.content.pm.InstrumentationInfo$1
 android.content.pm.InstrumentationInfo
+android.content.pm.IntentFilterVerificationInfo$1
+android.content.pm.IntentFilterVerificationInfo
+android.content.pm.KeySet$1
+android.content.pm.KeySet
+android.content.pm.LauncherActivityInfo
 android.content.pm.LauncherApps$1
+android.content.pm.LauncherApps$CallbackMessageHandler
 android.content.pm.LauncherApps
 android.content.pm.ModuleInfo$1
 android.content.pm.ModuleInfo
-android.content.pm.parsing.library.OrgApacheHttpLegacyUpdater
-android.content.pm.parsing.library.PackageBackwardCompatibility$AndroidTestRunnerSplitUpdater
-android.content.pm.parsing.library.PackageBackwardCompatibility$RemoveUnnecessaryAndroidTestBaseLibrary
-android.content.pm.parsing.library.PackageBackwardCompatibility
 android.content.pm.PackageInfo$1
 android.content.pm.PackageInfo
 android.content.pm.PackageInstaller$Session
 android.content.pm.PackageInstaller$SessionCallback
+android.content.pm.PackageInstaller$SessionCallbackDelegate
 android.content.pm.PackageInstaller$SessionInfo$1
 android.content.pm.PackageInstaller$SessionInfo
 android.content.pm.PackageInstaller$SessionParams$1
@@ -948,6 +1318,8 @@
 android.content.pm.PackageParser$Callback
 android.content.pm.PackageParser$CallbackImpl
 android.content.pm.PackageParser$Component
+android.content.pm.PackageParser$Instrumentation$1
+android.content.pm.PackageParser$Instrumentation
 android.content.pm.PackageParser$IntentInfo
 android.content.pm.PackageParser$NewPermissionInfo
 android.content.pm.PackageParser$Package$1
@@ -956,11 +1328,23 @@
 android.content.pm.PackageParser$PackageParserException
 android.content.pm.PackageParser$ParseComponentArgs
 android.content.pm.PackageParser$ParsePackageItemArgs
+android.content.pm.PackageParser$Permission$1
+android.content.pm.PackageParser$Permission
+android.content.pm.PackageParser$PermissionGroup$1
+android.content.pm.PackageParser$PermissionGroup
+android.content.pm.PackageParser$Provider$1
+android.content.pm.PackageParser$Provider
+android.content.pm.PackageParser$ProviderIntentInfo
+android.content.pm.PackageParser$Service$1
+android.content.pm.PackageParser$Service
+android.content.pm.PackageParser$ServiceIntentInfo
 android.content.pm.PackageParser$SigningDetails$1
+android.content.pm.PackageParser$SigningDetails$Builder
 android.content.pm.PackageParser$SigningDetails
 android.content.pm.PackageParser$SplitNameComparator
 android.content.pm.PackageParser
-android.content.pm.parsing.library.PackageSharedLibraryUpdater
+android.content.pm.PackageParserCacheHelper$ReadHelper
+android.content.pm.PackageParserCacheHelper$WriteHelper
 android.content.pm.PackageStats$1
 android.content.pm.PackageStats
 android.content.pm.PackageUserState
@@ -974,6 +1358,13 @@
 android.content.pm.PermissionInfo
 android.content.pm.ProviderInfo$1
 android.content.pm.ProviderInfo
+android.content.pm.RegisteredServicesCache$1
+android.content.pm.RegisteredServicesCache$2
+android.content.pm.RegisteredServicesCache$3
+android.content.pm.RegisteredServicesCache$ServiceInfo
+android.content.pm.RegisteredServicesCache$UserServices
+android.content.pm.RegisteredServicesCache
+android.content.pm.RegisteredServicesCacheListener
 android.content.pm.ResolveInfo$1
 android.content.pm.ResolveInfo
 android.content.pm.SELinuxUtil
@@ -985,27 +1376,42 @@
 android.content.pm.ShortcutInfo$Builder
 android.content.pm.ShortcutInfo
 android.content.pm.ShortcutManager
+android.content.pm.ShortcutServiceInternal$ShortcutChangeListener
+android.content.pm.ShortcutServiceInternal
 android.content.pm.Signature$1
 android.content.pm.Signature
 android.content.pm.SigningInfo$1
+android.content.pm.SigningInfo
 android.content.pm.StringParceledListSlice$1
 android.content.pm.StringParceledListSlice
+android.content.pm.SuspendDialogInfo$1
+android.content.pm.SuspendDialogInfo
 android.content.pm.UserInfo$1
 android.content.pm.UserInfo
 android.content.pm.VerifierInfo$1
 android.content.pm.VerifierInfo
 android.content.pm.VersionedPackage$1
 android.content.pm.VersionedPackage
+android.content.pm.XmlSerializerAndParser
 android.content.pm.dex.ArtManager
+android.content.pm.dex.ArtManagerInternal
+android.content.pm.dex.DexMetadataHelper
+android.content.pm.dex.IArtManager$Stub
 android.content.pm.dex.IArtManager
+android.content.pm.dex.ISnapshotRuntimeProfileCallback$Stub$Proxy
+android.content.pm.dex.ISnapshotRuntimeProfileCallback$Stub
+android.content.pm.dex.ISnapshotRuntimeProfileCallback
 android.content.pm.split.DefaultSplitAssetLoader
+android.content.pm.split.SplitAssetDependencyLoader
 android.content.pm.split.SplitAssetLoader
 android.content.pm.split.SplitDependencyLoader$IllegalDependencyException
+android.content.pm.split.SplitDependencyLoader
 android.content.res.-$$Lambda$Resources$4msWUw7LKsgLexLZjIfWa4oguq4
 android.content.res.-$$Lambda$ResourcesImpl$99dm2ENnzo9b0SIUjUj2Kl3pi90
 android.content.res.-$$Lambda$ResourcesImpl$h3PTRX185BeQl8SVC2_w9arp5Og
 android.content.res.ApkAssets
 android.content.res.AssetFileDescriptor$1
+android.content.res.AssetFileDescriptor$AutoCloseInputStream
 android.content.res.AssetFileDescriptor
 android.content.res.AssetManager$AssetInputStream
 android.content.res.AssetManager$Builder
@@ -1016,6 +1422,7 @@
 android.content.res.CompatResources
 android.content.res.CompatibilityInfo$1
 android.content.res.CompatibilityInfo$2
+android.content.res.CompatibilityInfo$Translator
 android.content.res.CompatibilityInfo
 android.content.res.ComplexColor
 android.content.res.Configuration$1
@@ -1023,7 +1430,12 @@
 android.content.res.ConfigurationBoundResourceCache
 android.content.res.ConstantState
 android.content.res.DrawableCache
+android.content.res.FontResourcesParser$FamilyResourceEntry
+android.content.res.FontResourcesParser$FontFamilyFilesResourceEntry
+android.content.res.FontResourcesParser$FontFileResourceEntry
+android.content.res.FontResourcesParser$ProviderResourceEntry
 android.content.res.FontResourcesParser
+android.content.res.GradientColor$GradientColorFactory
 android.content.res.GradientColor
 android.content.res.ObbInfo$1
 android.content.res.ObbInfo
@@ -1037,6 +1449,7 @@
 android.content.res.ResourcesImpl$ThemeImpl
 android.content.res.ResourcesImpl
 android.content.res.ResourcesKey
+android.content.res.StringBlock$Height
 android.content.res.StringBlock$StyleIDs
 android.content.res.StringBlock
 android.content.res.ThemedResourceCache
@@ -1044,6 +1457,9 @@
 android.content.res.XmlBlock$Parser
 android.content.res.XmlBlock
 android.content.res.XmlResourceParser
+android.content.rollback.IRollbackManager$Stub$Proxy
+android.content.rollback.IRollbackManager$Stub
+android.content.rollback.IRollbackManager
 android.content.rollback.RollbackManager
 android.database.AbstractCursor$SelfContentObserver
 android.database.AbstractCursor
@@ -1082,8 +1498,10 @@
 android.database.MergeCursor
 android.database.Observable
 android.database.SQLException
+android.database.StaleDataException
 android.database.sqlite.-$$Lambda$RBWjWVyGrOTsQrLCYzJ_G8Uk25Q
 android.database.sqlite.DatabaseObjectNotClosedException
+android.database.sqlite.SQLiteBindOrColumnIndexOutOfRangeException
 android.database.sqlite.SQLiteCantOpenDatabaseException
 android.database.sqlite.SQLiteClosable
 android.database.sqlite.SQLiteCompatibilityWalFlags
@@ -1092,6 +1510,7 @@
 android.database.sqlite.SQLiteConnection$PreparedStatement
 android.database.sqlite.SQLiteConnection$PreparedStatementCache
 android.database.sqlite.SQLiteConnection
+android.database.sqlite.SQLiteConnectionPool$1
 android.database.sqlite.SQLiteConnectionPool$AcquiredConnectionStatus
 android.database.sqlite.SQLiteConnectionPool$ConnectionWaiter
 android.database.sqlite.SQLiteConnectionPool$IdleConnectionHandler
@@ -1125,6 +1544,8 @@
 android.database.sqlite.SQLiteStatement
 android.database.sqlite.SQLiteStatementInfo
 android.database.sqlite.SQLiteTransactionListener
+android.database.sqlite.SqliteWrapper
+android.ddm.DdmHandleAppName$Names
 android.ddm.DdmHandleAppName
 android.ddm.DdmHandleExit
 android.ddm.DdmHandleHeap
@@ -1135,13 +1556,21 @@
 android.ddm.DdmHandleViewDebug
 android.ddm.DdmRegister
 android.debug.AdbManager
+android.debug.AdbManagerInternal
+android.debug.IAdbManager$Stub
+android.debug.IAdbManager
+android.debug.IAdbTransport$Stub
+android.debug.IAdbTransport
 android.graphics.-$$Lambda$ColorSpace$BNp-1CyCzsQzfE-Ads9uc4rJDfw
 android.graphics.-$$Lambda$ColorSpace$Rgb$8EkhO2jIf14tuA3BvrmYJMa7YXM
 android.graphics.-$$Lambda$ColorSpace$Rgb$CqKld6797g7__JnuY0NeFz5q4_E
+android.graphics.-$$Lambda$ColorSpace$Rgb$V_0lmM2WEpxGBDV_1G1wvvidn7Y
 android.graphics.-$$Lambda$ColorSpace$Rgb$ZvS77aTfobOSa2o9MTqYMph4Rcg
 android.graphics.-$$Lambda$ColorSpace$Rgb$b9VGKuNnse0bbguR9jbOM_wK2Ac
 android.graphics.-$$Lambda$ColorSpace$Rgb$bWzafC8vMHNuVmRuTUPEFUMlfuY
+android.graphics.-$$Lambda$ColorSpace$Rgb$iMkODTKa3_8kPZUnZZerD2Lv-yo
 android.graphics.-$$Lambda$ColorSpace$S2rlqJvkXGTpUF6mZhvkElds8JE
+android.graphics.BLASTBufferQueue
 android.graphics.BaseCanvas
 android.graphics.BaseRecordingCanvas
 android.graphics.Bitmap$1
@@ -1153,6 +1582,7 @@
 android.graphics.BitmapFactory
 android.graphics.BitmapRegionDecoder
 android.graphics.BitmapShader
+android.graphics.BlendMode$1
 android.graphics.BlendMode
 android.graphics.BlendModeColorFilter
 android.graphics.BlurMaskFilter$Blur
@@ -1171,6 +1601,7 @@
 android.graphics.ColorSpace$Lab
 android.graphics.ColorSpace$Model
 android.graphics.ColorSpace$Named
+android.graphics.ColorSpace$RenderIntent
 android.graphics.ColorSpace$Rgb$NoImagePreloadHolder
 android.graphics.ColorSpace$Rgb$TransferParameters
 android.graphics.ColorSpace$Rgb
@@ -1191,9 +1622,12 @@
 android.graphics.HardwareRenderer$DestroyContextRunnable
 android.graphics.HardwareRenderer$FrameCompleteCallback
 android.graphics.HardwareRenderer$FrameDrawingCallback
+android.graphics.HardwareRenderer$FrameRenderRequest
 android.graphics.HardwareRenderer$ProcessInitializer$1
 android.graphics.HardwareRenderer$ProcessInitializer
 android.graphics.HardwareRenderer
+android.graphics.HardwareRendererObserver$OnFrameMetricsAvailableListener
+android.graphics.HardwareRendererObserver
 android.graphics.ImageDecoder$AssetInputStreamSource
 android.graphics.ImageDecoder$DecodeException
 android.graphics.ImageDecoder$ImageInfo
@@ -1205,6 +1639,7 @@
 android.graphics.Insets
 android.graphics.Interpolator$Result
 android.graphics.Interpolator
+android.graphics.LeakyTypefaceStorage
 android.graphics.LightingColorFilter
 android.graphics.LinearGradient
 android.graphics.MaskFilter
@@ -1244,6 +1679,7 @@
 android.graphics.RadialGradient
 android.graphics.RecordingCanvas
 android.graphics.Rect$1
+android.graphics.Rect$UnflattenHelper
 android.graphics.Rect
 android.graphics.RectF$1
 android.graphics.RectF
@@ -1252,9 +1688,11 @@
 android.graphics.Region
 android.graphics.RegionIterator
 android.graphics.RenderNode$AnimationHost
+android.graphics.RenderNode$CompositePositionUpdateListener
 android.graphics.RenderNode$NoImagePreloadHolder
 android.graphics.RenderNode$PositionUpdateListener
 android.graphics.RenderNode
+android.graphics.RuntimeShader
 android.graphics.Shader$NoImagePreloadHolder
 android.graphics.Shader$TileMode
 android.graphics.Shader
@@ -1270,25 +1708,33 @@
 android.graphics.Typeface
 android.graphics.Xfermode
 android.graphics.YuvImage
+android.graphics.drawable.-$$Lambda$AnimatedVectorDrawable$VectorDrawableAnimatorRT$PzjgSeyQweoFjbEZJP80UteZqm8
 android.graphics.drawable.-$$Lambda$BitmapDrawable$LMqt8JvxZ4giSOIRAtlCKDg39Jw
+android.graphics.drawable.-$$Lambda$Drawable$bbJz2VgQAwkXlE27mR8nPMYacEw
 android.graphics.drawable.-$$Lambda$NinePatchDrawable$yQvfm7FAkslD5wdGFysjgwt8cLE
 android.graphics.drawable.AdaptiveIconDrawable$ChildDrawable
 android.graphics.drawable.AdaptiveIconDrawable$LayerState
 android.graphics.drawable.AdaptiveIconDrawable
 android.graphics.drawable.Animatable2
 android.graphics.drawable.Animatable
+android.graphics.drawable.AnimatedImageDrawable$State
 android.graphics.drawable.AnimatedImageDrawable
+android.graphics.drawable.AnimatedRotateDrawable$1
 android.graphics.drawable.AnimatedRotateDrawable$AnimatedRotateState
 android.graphics.drawable.AnimatedRotateDrawable
+android.graphics.drawable.AnimatedStateListDrawable$AnimatableTransition
 android.graphics.drawable.AnimatedStateListDrawable$AnimatedStateListState
 android.graphics.drawable.AnimatedStateListDrawable$AnimatedVectorDrawableTransition
+android.graphics.drawable.AnimatedStateListDrawable$AnimationDrawableTransition
 android.graphics.drawable.AnimatedStateListDrawable$Transition
 android.graphics.drawable.AnimatedStateListDrawable
 android.graphics.drawable.AnimatedVectorDrawable$1
+android.graphics.drawable.AnimatedVectorDrawable$2
 android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState$PendingAnimator
 android.graphics.drawable.AnimatedVectorDrawable$AnimatedVectorDrawableState
 android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimator
 android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorRT
+android.graphics.drawable.AnimatedVectorDrawable$VectorDrawableAnimatorUI
 android.graphics.drawable.AnimatedVectorDrawable
 android.graphics.drawable.AnimationDrawable$AnimationState
 android.graphics.drawable.AnimationDrawable
@@ -1298,9 +1744,12 @@
 android.graphics.drawable.ClipDrawable
 android.graphics.drawable.ColorDrawable$ColorState
 android.graphics.drawable.ColorDrawable
+android.graphics.drawable.ColorStateListDrawable$ColorStateListDrawableState
+android.graphics.drawable.ColorStateListDrawable
 android.graphics.drawable.Drawable$Callback
 android.graphics.drawable.Drawable$ConstantState
 android.graphics.drawable.Drawable
+android.graphics.drawable.DrawableContainer$1
 android.graphics.drawable.DrawableContainer$BlockInvalidateCallback
 android.graphics.drawable.DrawableContainer$DrawableContainerState
 android.graphics.drawable.DrawableContainer
@@ -1319,6 +1768,8 @@
 android.graphics.drawable.LayerDrawable$ChildDrawable
 android.graphics.drawable.LayerDrawable$LayerState
 android.graphics.drawable.LayerDrawable
+android.graphics.drawable.LevelListDrawable$LevelListState
+android.graphics.drawable.LevelListDrawable
 android.graphics.drawable.NinePatchDrawable$NinePatchState
 android.graphics.drawable.NinePatchDrawable
 android.graphics.drawable.PaintDrawable
@@ -1381,6 +1832,7 @@
 android.graphics.fonts.FontCustomizationParser
 android.graphics.fonts.FontFamily$Builder
 android.graphics.fonts.FontFamily
+android.graphics.fonts.FontFileUtil
 android.graphics.fonts.FontStyle
 android.graphics.fonts.FontVariationAxis
 android.graphics.fonts.SystemFonts
@@ -1393,10 +1845,14 @@
 android.graphics.text.LineBreaker
 android.graphics.text.MeasuredText$Builder
 android.graphics.text.MeasuredText
+android.gsi.IGsiService$Stub$Proxy
+android.gsi.IGsiService$Stub
+android.gsi.IGsiService
 android.hardware.Camera$CameraInfo
 android.hardware.Camera$Face
 android.hardware.Camera
 android.hardware.CameraStatus$1
+android.hardware.CameraStatus
 android.hardware.ConsumerIrManager
 android.hardware.GeomagneticField$LegendreTable
 android.hardware.GeomagneticField
@@ -1407,32 +1863,69 @@
 android.hardware.ICameraService
 android.hardware.ICameraServiceListener$Stub
 android.hardware.ICameraServiceListener
+android.hardware.ICameraServiceProxy$Stub
+android.hardware.ICameraServiceProxy
+android.hardware.IConsumerIrService$Stub
+android.hardware.IConsumerIrService
+android.hardware.ISensorPrivacyListener$Stub$Proxy
+android.hardware.ISensorPrivacyListener$Stub
+android.hardware.ISensorPrivacyListener
+android.hardware.ISensorPrivacyManager$Stub$Proxy
+android.hardware.ISensorPrivacyManager$Stub
+android.hardware.ISensorPrivacyManager
+android.hardware.ISerialManager$Stub
+android.hardware.ISerialManager
 android.hardware.Sensor
+android.hardware.SensorAdditionalInfo
 android.hardware.SensorEvent
 android.hardware.SensorEventListener
 android.hardware.SensorManager
+android.hardware.SensorPrivacyManager$1
 android.hardware.SensorPrivacyManager
 android.hardware.SerialManager
 android.hardware.SerialPort
 android.hardware.SystemSensorManager$BaseEventQueue
 android.hardware.SystemSensorManager$SensorEventQueue
+android.hardware.SystemSensorManager$TriggerEventQueue
 android.hardware.SystemSensorManager
+android.hardware.TriggerEvent
 android.hardware.TriggerEventListener
+android.hardware.biometrics.BiometricAuthenticator$Identifier
 android.hardware.biometrics.BiometricAuthenticator
 android.hardware.biometrics.BiometricFaceConstants
 android.hardware.biometrics.BiometricFingerprintConstants
 android.hardware.biometrics.BiometricManager
+android.hardware.biometrics.BiometricSourceType$1
+android.hardware.biometrics.BiometricSourceType
+android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback$Stub$Proxy
+android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback$Stub
+android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback
+android.hardware.biometrics.IBiometricService$Stub$Proxy
+android.hardware.biometrics.IBiometricService$Stub
+android.hardware.biometrics.IBiometricService
+android.hardware.biometrics.IBiometricServiceLockoutResetCallback$Stub$Proxy
 android.hardware.biometrics.IBiometricServiceLockoutResetCallback$Stub
 android.hardware.biometrics.IBiometricServiceLockoutResetCallback
+android.hardware.biometrics.IBiometricServiceReceiver$Stub$Proxy
+android.hardware.biometrics.IBiometricServiceReceiver$Stub
+android.hardware.biometrics.IBiometricServiceReceiver
+android.hardware.biometrics.IBiometricServiceReceiverInternal$Stub$Proxy
+android.hardware.biometrics.IBiometricServiceReceiverInternal$Stub
+android.hardware.biometrics.IBiometricServiceReceiverInternal
 android.hardware.camera2.CameraAccessException
 android.hardware.camera2.CameraCharacteristics$1
 android.hardware.camera2.CameraCharacteristics$2
 android.hardware.camera2.CameraCharacteristics$3
 android.hardware.camera2.CameraCharacteristics$4
 android.hardware.camera2.CameraCharacteristics$5
+android.hardware.camera2.CameraCharacteristics$6
 android.hardware.camera2.CameraCharacteristics$Key
 android.hardware.camera2.CameraCharacteristics
+android.hardware.camera2.CameraDevice
+android.hardware.camera2.CameraManager$AvailabilityCallback
 android.hardware.camera2.CameraManager$CameraManagerGlobal$1
+android.hardware.camera2.CameraManager$CameraManagerGlobal
+android.hardware.camera2.CameraManager$TorchCallback
 android.hardware.camera2.CameraManager
 android.hardware.camera2.CameraMetadata
 android.hardware.camera2.CaptureRequest$1
@@ -1445,6 +1938,8 @@
 android.hardware.camera2.CaptureResult$Key
 android.hardware.camera2.CaptureResult
 android.hardware.camera2.DngCreator
+android.hardware.camera2.impl.CameraDeviceImpl$CameraHandlerExecutor
+android.hardware.camera2.impl.CameraDeviceImpl
 android.hardware.camera2.impl.CameraMetadataNative$10
 android.hardware.camera2.impl.CameraMetadataNative$11
 android.hardware.camera2.impl.CameraMetadataNative$12
@@ -1458,6 +1953,7 @@
 android.hardware.camera2.impl.CameraMetadataNative$1
 android.hardware.camera2.impl.CameraMetadataNative$20
 android.hardware.camera2.impl.CameraMetadataNative$21
+android.hardware.camera2.impl.CameraMetadataNative$22
 android.hardware.camera2.impl.CameraMetadataNative$2
 android.hardware.camera2.impl.CameraMetadataNative$3
 android.hardware.camera2.impl.CameraMetadataNative$4
@@ -1472,6 +1968,7 @@
 android.hardware.camera2.impl.SetCommand
 android.hardware.camera2.legacy.LegacyCameraDevice
 android.hardware.camera2.legacy.LegacyExceptionUtils$BufferQueueAbandonedException
+android.hardware.camera2.legacy.LegacyMetadataMapper
 android.hardware.camera2.legacy.PerfMeasurement
 android.hardware.camera2.marshal.MarshalHelpers
 android.hardware.camera2.marshal.MarshalQueryable
@@ -1480,6 +1977,7 @@
 android.hardware.camera2.marshal.Marshaler
 android.hardware.camera2.marshal.impl.MarshalQueryableArray
 android.hardware.camera2.marshal.impl.MarshalQueryableBlackLevelPattern
+android.hardware.camera2.marshal.impl.MarshalQueryableBoolean$MarshalerBoolean
 android.hardware.camera2.marshal.impl.MarshalQueryableBoolean
 android.hardware.camera2.marshal.impl.MarshalQueryableColorSpaceTransform
 android.hardware.camera2.marshal.impl.MarshalQueryableEnum
@@ -1501,6 +1999,7 @@
 android.hardware.camera2.marshal.impl.MarshalQueryableStreamConfigurationDuration
 android.hardware.camera2.marshal.impl.MarshalQueryableString
 android.hardware.camera2.params.BlackLevelPattern
+android.hardware.camera2.params.Capability
 android.hardware.camera2.params.ColorSpaceTransform
 android.hardware.camera2.params.Face
 android.hardware.camera2.params.HighSpeedVideoConfiguration
@@ -1519,31 +2018,63 @@
 android.hardware.camera2.params.StreamConfigurationDuration
 android.hardware.camera2.params.StreamConfigurationMap
 android.hardware.camera2.params.TonemapCurve
+android.hardware.camera2.utils.ArrayUtils
 android.hardware.camera2.utils.TypeReference$SpecializedTypeReference
 android.hardware.camera2.utils.TypeReference
+android.hardware.contexthub.V1_0.ContextHub
+android.hardware.contexthub.V1_0.ContextHubMsg
+android.hardware.contexthub.V1_0.HubAppInfo
+android.hardware.contexthub.V1_0.IContexthub$Proxy
+android.hardware.contexthub.V1_0.IContexthub
+android.hardware.contexthub.V1_0.IContexthubCallback$Stub
+android.hardware.contexthub.V1_0.IContexthubCallback
+android.hardware.contexthub.V1_0.MemRange
+android.hardware.contexthub.V1_0.PhysicalSensor
+android.hardware.display.-$$Lambda$NightDisplayListener$sOK1HmSbMnFLzc4SdDD1WpVWJiI
 android.hardware.display.AmbientBrightnessDayStats$1
 android.hardware.display.AmbientBrightnessDayStats
+android.hardware.display.AmbientDisplayConfiguration
 android.hardware.display.BrightnessChangeEvent$1
 android.hardware.display.BrightnessChangeEvent
 android.hardware.display.BrightnessConfiguration$1
 android.hardware.display.BrightnessConfiguration$Builder
 android.hardware.display.BrightnessConfiguration
+android.hardware.display.BrightnessCorrection$1
+android.hardware.display.BrightnessCorrection$BrightnessCorrectionImplementation
+android.hardware.display.BrightnessCorrection$ScaleAndTranslateLog
+android.hardware.display.BrightnessCorrection
 android.hardware.display.ColorDisplayManager$ColorDisplayManagerInternal
 android.hardware.display.ColorDisplayManager
+android.hardware.display.Curve$1
+android.hardware.display.Curve
 android.hardware.display.DisplayManager$DisplayListener
 android.hardware.display.DisplayManager
 android.hardware.display.DisplayManagerGlobal$DisplayListenerDelegate
 android.hardware.display.DisplayManagerGlobal$DisplayManagerCallback
 android.hardware.display.DisplayManagerGlobal
+android.hardware.display.DisplayManagerInternal$DisplayPowerCallbacks
+android.hardware.display.DisplayManagerInternal$DisplayPowerRequest
+android.hardware.display.DisplayManagerInternal
+android.hardware.display.DisplayViewport
 android.hardware.display.DisplayedContentSample
 android.hardware.display.DisplayedContentSamplingAttributes
 android.hardware.display.IColorDisplayManager$Stub$Proxy
+android.hardware.display.IColorDisplayManager$Stub
 android.hardware.display.IColorDisplayManager
 android.hardware.display.IDisplayManager$Stub$Proxy
 android.hardware.display.IDisplayManager$Stub
 android.hardware.display.IDisplayManager
+android.hardware.display.IDisplayManagerCallback$Stub$Proxy
 android.hardware.display.IDisplayManagerCallback$Stub
 android.hardware.display.IDisplayManagerCallback
+android.hardware.display.IVirtualDisplayCallback$Stub$Proxy
+android.hardware.display.IVirtualDisplayCallback$Stub
+android.hardware.display.IVirtualDisplayCallback
+android.hardware.display.NightDisplayListener$1
+android.hardware.display.NightDisplayListener$Callback
+android.hardware.display.NightDisplayListener
+android.hardware.display.Time$1
+android.hardware.display.Time
 android.hardware.display.WifiDisplay$1
 android.hardware.display.WifiDisplay
 android.hardware.display.WifiDisplaySessionInfo$1
@@ -1552,77 +2083,252 @@
 android.hardware.display.WifiDisplayStatus
 android.hardware.face.FaceManager
 android.hardware.fingerprint.Fingerprint$1
+android.hardware.fingerprint.Fingerprint
 android.hardware.fingerprint.FingerprintManager$1
+android.hardware.fingerprint.FingerprintManager$2
 android.hardware.fingerprint.FingerprintManager$MyHandler
 android.hardware.fingerprint.FingerprintManager
+android.hardware.fingerprint.IFingerprintClientActiveCallback$Stub$Proxy
+android.hardware.fingerprint.IFingerprintClientActiveCallback$Stub
+android.hardware.fingerprint.IFingerprintClientActiveCallback
 android.hardware.fingerprint.IFingerprintService$Stub$Proxy
 android.hardware.fingerprint.IFingerprintService$Stub
 android.hardware.fingerprint.IFingerprintService
+android.hardware.fingerprint.IFingerprintServiceReceiver$Stub$Proxy
 android.hardware.fingerprint.IFingerprintServiceReceiver$Stub
 android.hardware.fingerprint.IFingerprintServiceReceiver
 android.hardware.hdmi.HdmiControlManager
+android.hardware.hdmi.HdmiPlaybackClient$DisplayStatusCallback
+android.hardware.input.IInputDevicesChangedListener$Stub$Proxy
 android.hardware.input.IInputDevicesChangedListener$Stub
 android.hardware.input.IInputDevicesChangedListener
 android.hardware.input.IInputManager$Stub$Proxy
 android.hardware.input.IInputManager$Stub
 android.hardware.input.IInputManager
+android.hardware.input.ITabletModeChangedListener$Stub$Proxy
+android.hardware.input.ITabletModeChangedListener$Stub
+android.hardware.input.ITabletModeChangedListener
 android.hardware.input.InputDeviceIdentifier$1
 android.hardware.input.InputDeviceIdentifier
 android.hardware.input.InputManager$InputDeviceListener
 android.hardware.input.InputManager$InputDeviceListenerDelegate
 android.hardware.input.InputManager$InputDevicesChangedListener
 android.hardware.input.InputManager
+android.hardware.input.InputManagerInternal
+android.hardware.input.KeyboardLayout$1
+android.hardware.input.KeyboardLayout
+android.hardware.input.TouchCalibration$1
+android.hardware.input.TouchCalibration
 android.hardware.iris.IrisManager
 android.hardware.location.ActivityRecognitionHardware
+android.hardware.location.ContextHubClient
+android.hardware.location.ContextHubInfo$1
+android.hardware.location.ContextHubInfo
+android.hardware.location.ContextHubManager$2
+android.hardware.location.ContextHubManager$3
+android.hardware.location.ContextHubManager$4
 android.hardware.location.ContextHubManager
+android.hardware.location.ContextHubMessage$1
+android.hardware.location.ContextHubMessage
+android.hardware.location.ContextHubTransaction
+android.hardware.location.GeofenceHardwareImpl$1
+android.hardware.location.GeofenceHardwareImpl$2
+android.hardware.location.GeofenceHardwareImpl$3
+android.hardware.location.GeofenceHardwareImpl$GeofenceTransition
+android.hardware.location.GeofenceHardwareImpl$Reaper
+android.hardware.location.GeofenceHardwareImpl
+android.hardware.location.GeofenceHardwareMonitorEvent$1
+android.hardware.location.GeofenceHardwareMonitorEvent
+android.hardware.location.GeofenceHardwareRequest
+android.hardware.location.GeofenceHardwareRequestParcelable$1
+android.hardware.location.GeofenceHardwareRequestParcelable
+android.hardware.location.GeofenceHardwareService$1
+android.hardware.location.GeofenceHardwareService
+android.hardware.location.IActivityRecognitionHardware$Stub$Proxy
 android.hardware.location.IActivityRecognitionHardware$Stub
 android.hardware.location.IActivityRecognitionHardware
+android.hardware.location.IActivityRecognitionHardwareClient$Stub$Proxy
+android.hardware.location.IActivityRecognitionHardwareClient$Stub
+android.hardware.location.IActivityRecognitionHardwareClient
+android.hardware.location.IContextHubCallback$Stub$Proxy
+android.hardware.location.IContextHubCallback$Stub
+android.hardware.location.IContextHubCallback
+android.hardware.location.IContextHubClient$Stub$Proxy
+android.hardware.location.IContextHubClient$Stub
+android.hardware.location.IContextHubClient
+android.hardware.location.IContextHubClientCallback$Stub$Proxy
+android.hardware.location.IContextHubClientCallback$Stub
+android.hardware.location.IContextHubClientCallback
+android.hardware.location.IContextHubService$Stub$Proxy
+android.hardware.location.IContextHubService$Stub
+android.hardware.location.IContextHubService
+android.hardware.location.IContextHubTransactionCallback$Stub$Proxy
+android.hardware.location.IContextHubTransactionCallback$Stub
+android.hardware.location.IContextHubTransactionCallback
+android.hardware.location.IGeofenceHardware$Stub$Proxy
+android.hardware.location.IGeofenceHardware$Stub
+android.hardware.location.IGeofenceHardware
+android.hardware.location.IGeofenceHardwareCallback$Stub$Proxy
+android.hardware.location.IGeofenceHardwareCallback$Stub
+android.hardware.location.IGeofenceHardwareCallback
+android.hardware.location.IGeofenceHardwareMonitorCallback$Stub$Proxy
+android.hardware.location.IGeofenceHardwareMonitorCallback$Stub
+android.hardware.location.IGeofenceHardwareMonitorCallback
+android.hardware.location.MemoryRegion$1
+android.hardware.location.MemoryRegion
+android.hardware.location.NanoApp$1
+android.hardware.location.NanoApp
+android.hardware.location.NanoAppBinary$1
+android.hardware.location.NanoAppBinary
+android.hardware.location.NanoAppFilter$1
+android.hardware.location.NanoAppFilter
+android.hardware.location.NanoAppInstanceInfo$1
+android.hardware.location.NanoAppInstanceInfo
+android.hardware.location.NanoAppMessage$1
+android.hardware.location.NanoAppMessage
+android.hardware.location.NanoAppState$1
+android.hardware.location.NanoAppState
+android.hardware.radio.ITuner$Stub
+android.hardware.radio.ITuner
+android.hardware.radio.ITunerCallback
+android.hardware.radio.ProgramSelector$1
+android.hardware.radio.ProgramSelector$Identifier$1
+android.hardware.radio.ProgramSelector$Identifier
+android.hardware.radio.ProgramSelector
+android.hardware.radio.RadioManager$AmBandConfig$1
+android.hardware.radio.RadioManager$AmBandConfig
+android.hardware.radio.RadioManager$AmBandDescriptor$1
+android.hardware.radio.RadioManager$AmBandDescriptor
+android.hardware.radio.RadioManager$BandConfig$1
+android.hardware.radio.RadioManager$BandConfig
+android.hardware.radio.RadioManager$BandDescriptor$1
+android.hardware.radio.RadioManager$BandDescriptor
+android.hardware.radio.RadioManager$FmBandConfig$1
+android.hardware.radio.RadioManager$FmBandConfig
+android.hardware.radio.RadioManager$FmBandDescriptor$1
+android.hardware.radio.RadioManager$FmBandDescriptor
+android.hardware.radio.RadioManager$ModuleProperties$1
+android.hardware.radio.RadioManager$ModuleProperties
+android.hardware.radio.RadioManager$ProgramInfo$1
+android.hardware.radio.RadioManager$ProgramInfo
 android.hardware.radio.RadioManager
+android.hardware.radio.RadioMetadata$1
+android.hardware.radio.RadioMetadata
 android.hardware.radio.V1_0.ActivityStatsInfo
+android.hardware.radio.V1_0.AppStatus
+android.hardware.radio.V1_0.Call
+android.hardware.radio.V1_0.CallForwardInfo
 android.hardware.radio.V1_0.CardStatus
+android.hardware.radio.V1_0.CarrierRestrictions
 android.hardware.radio.V1_0.CdmaBroadcastSmsConfigInfo
+android.hardware.radio.V1_0.CdmaCallWaiting
+android.hardware.radio.V1_0.CdmaInformationRecords
+android.hardware.radio.V1_0.CdmaSignalInfoRecord
 android.hardware.radio.V1_0.CdmaSignalStrength
+android.hardware.radio.V1_0.CdmaSmsAddress
+android.hardware.radio.V1_0.CdmaSmsMessage
+android.hardware.radio.V1_0.CdmaSmsSubaddress
+android.hardware.radio.V1_0.CellIdentity
+android.hardware.radio.V1_0.CellIdentityCdma
+android.hardware.radio.V1_0.CellIdentityGsm
+android.hardware.radio.V1_0.CellIdentityLte
+android.hardware.radio.V1_0.CellIdentityTdscdma
+android.hardware.radio.V1_0.CellIdentityWcdma
+android.hardware.radio.V1_0.CellInfo
+android.hardware.radio.V1_0.CellInfoGsm
+android.hardware.radio.V1_0.CellInfoLte
+android.hardware.radio.V1_0.CellInfoTdscdma
 android.hardware.radio.V1_0.CellInfoType
+android.hardware.radio.V1_0.CellInfoWcdma
+android.hardware.radio.V1_0.DataCallFailCause
+android.hardware.radio.V1_0.DataProfileInfo
 android.hardware.radio.V1_0.DataRegStateResult
 android.hardware.radio.V1_0.EvdoSignalStrength
 android.hardware.radio.V1_0.GsmBroadcastSmsConfigInfo
 android.hardware.radio.V1_0.GsmSignalStrength
+android.hardware.radio.V1_0.GsmSmsMessage
 android.hardware.radio.V1_0.HardwareConfig
+android.hardware.radio.V1_0.HardwareConfigModem
+android.hardware.radio.V1_0.HardwareConfigSim
 android.hardware.radio.V1_0.IRadio
 android.hardware.radio.V1_0.IRadioIndication
 android.hardware.radio.V1_0.IRadioResponse
+android.hardware.radio.V1_0.IccIo
 android.hardware.radio.V1_0.IccIoResult
+android.hardware.radio.V1_0.ImsSmsMessage
+android.hardware.radio.V1_0.LastCallFailCauseInfo
+android.hardware.radio.V1_0.LceDataInfo
+android.hardware.radio.V1_0.LceStatusInfo
 android.hardware.radio.V1_0.LteSignalStrength
+android.hardware.radio.V1_0.NeighboringCell
+android.hardware.radio.V1_0.OperatorInfo
+android.hardware.radio.V1_0.PcoDataInfo
 android.hardware.radio.V1_0.RadioCapability
 android.hardware.radio.V1_0.RadioResponseInfo
 android.hardware.radio.V1_0.RegState
+android.hardware.radio.V1_0.SendSmsResult
+android.hardware.radio.V1_0.SetupDataCallResult
+android.hardware.radio.V1_0.SignalStrength
+android.hardware.radio.V1_0.SimApdu
+android.hardware.radio.V1_0.SimRefreshResult
+android.hardware.radio.V1_0.StkCcUnsolSsResult
+android.hardware.radio.V1_0.SuppSvcNotification
 android.hardware.radio.V1_0.TdScdmaSignalStrength
+android.hardware.radio.V1_0.UusInfo
 android.hardware.radio.V1_0.VoiceRegStateResult
 android.hardware.radio.V1_0.WcdmaSignalStrength
+android.hardware.radio.V1_1.IRadio$Proxy
 android.hardware.radio.V1_1.IRadio
 android.hardware.radio.V1_1.IRadioIndication
 android.hardware.radio.V1_1.IRadioResponse
+android.hardware.radio.V1_1.KeepaliveStatus
+android.hardware.radio.V1_1.NetworkScanResult
 android.hardware.radio.V1_2.Call
 android.hardware.radio.V1_2.CardStatus
 android.hardware.radio.V1_2.CellIdentity
+android.hardware.radio.V1_2.CellIdentityCdma
+android.hardware.radio.V1_2.CellIdentityGsm
+android.hardware.radio.V1_2.CellIdentityLte
 android.hardware.radio.V1_2.CellIdentityOperatorNames
+android.hardware.radio.V1_2.CellIdentityTdscdma
+android.hardware.radio.V1_2.CellIdentityWcdma
 android.hardware.radio.V1_2.CellInfo
+android.hardware.radio.V1_2.CellInfoCdma
+android.hardware.radio.V1_2.CellInfoGsm
+android.hardware.radio.V1_2.CellInfoLte
+android.hardware.radio.V1_2.CellInfoTdscdma
+android.hardware.radio.V1_2.CellInfoWcdma
 android.hardware.radio.V1_2.DataRegStateResult
 android.hardware.radio.V1_2.IRadio
 android.hardware.radio.V1_2.IRadioIndication
 android.hardware.radio.V1_2.IRadioResponse
+android.hardware.radio.V1_2.LinkCapacityEstimate
+android.hardware.radio.V1_2.NetworkScanResult
+android.hardware.radio.V1_2.PhysicalChannelConfig
 android.hardware.radio.V1_2.SignalStrength
+android.hardware.radio.V1_2.TdscdmaSignalStrength
 android.hardware.radio.V1_2.VoiceRegStateResult
 android.hardware.radio.V1_2.WcdmaSignalStrength
 android.hardware.radio.V1_3.IRadio$Proxy
 android.hardware.radio.V1_3.IRadio
 android.hardware.radio.V1_3.IRadioIndication
 android.hardware.radio.V1_3.IRadioResponse
+android.hardware.radio.V1_4.CardStatus
+android.hardware.radio.V1_4.CarrierRestrictionsWithPriority
+android.hardware.radio.V1_4.CellInfo
+android.hardware.radio.V1_4.DataRegStateResult$VopsInfo
+android.hardware.radio.V1_4.DataRegStateResult
+android.hardware.radio.V1_4.EmergencyNumber
 android.hardware.radio.V1_4.IRadio
 android.hardware.radio.V1_4.IRadioIndication$Stub
 android.hardware.radio.V1_4.IRadioIndication
 android.hardware.radio.V1_4.IRadioResponse$Stub
 android.hardware.radio.V1_4.IRadioResponse
+android.hardware.radio.V1_4.NetworkScanResult
+android.hardware.radio.V1_4.NrIndicators
+android.hardware.radio.V1_4.PhysicalChannelConfig
+android.hardware.radio.V1_4.SetupDataCallResult
+android.hardware.radio.V1_4.SignalStrength
 android.hardware.radio.config.V1_0.IRadioConfig
 android.hardware.radio.config.V1_0.IRadioConfigIndication
 android.hardware.radio.config.V1_0.IRadioConfigResponse
@@ -1631,15 +2337,24 @@
 android.hardware.radio.config.V1_1.IRadioConfig
 android.hardware.radio.config.V1_1.IRadioConfigIndication
 android.hardware.radio.config.V1_1.IRadioConfigResponse
+android.hardware.radio.config.V1_1.ModemInfo
+android.hardware.radio.config.V1_1.ModemsConfig
+android.hardware.radio.config.V1_1.PhoneCapability
 android.hardware.radio.config.V1_2.IRadioConfigIndication$Stub
 android.hardware.radio.config.V1_2.IRadioConfigIndication
 android.hardware.radio.config.V1_2.IRadioConfigResponse$Stub
 android.hardware.radio.config.V1_2.IRadioConfigResponse
+android.hardware.radio.config.V1_2.SimSlotStatus
+android.hardware.radio.deprecated.V1_0.IOemHook$Proxy
 android.hardware.radio.deprecated.V1_0.IOemHook
 android.hardware.radio.deprecated.V1_0.IOemHookIndication$Stub
 android.hardware.radio.deprecated.V1_0.IOemHookIndication
 android.hardware.radio.deprecated.V1_0.IOemHookResponse$Stub
 android.hardware.radio.deprecated.V1_0.IOemHookResponse
+android.hardware.sidekick.SidekickInternal
+android.hardware.soundtrigger.IRecognitionStatusCallback$Stub$Proxy
+android.hardware.soundtrigger.IRecognitionStatusCallback$Stub
+android.hardware.soundtrigger.IRecognitionStatusCallback
 android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel$1
 android.hardware.soundtrigger.SoundTrigger$ConfidenceLevel
 android.hardware.soundtrigger.SoundTrigger$GenericRecognitionEvent$1
@@ -1663,12 +2378,24 @@
 android.hardware.soundtrigger.SoundTrigger$SoundModel
 android.hardware.soundtrigger.SoundTrigger$SoundModelEvent$1
 android.hardware.soundtrigger.SoundTrigger$SoundModelEvent
+android.hardware.soundtrigger.SoundTrigger$StatusListener
 android.hardware.soundtrigger.SoundTrigger
 android.hardware.soundtrigger.SoundTriggerModule
+android.hardware.thermal.V1_0.IThermal
+android.hardware.thermal.V1_0.ThermalStatus
+android.hardware.thermal.V2_0.IThermal$Proxy
+android.hardware.thermal.V2_0.IThermal$getCurrentTemperaturesCallback
+android.hardware.thermal.V2_0.IThermal
+android.hardware.thermal.V2_0.IThermalChangedCallback$Stub
+android.hardware.thermal.V2_0.IThermalChangedCallback
+android.hardware.thermal.V2_0.Temperature
 android.hardware.usb.IUsbManager$Stub$Proxy
 android.hardware.usb.IUsbManager$Stub
 android.hardware.usb.IUsbManager
 android.hardware.usb.ParcelableUsbPort$1
+android.hardware.usb.ParcelableUsbPort
+android.hardware.usb.UsbAccessory$2
+android.hardware.usb.UsbAccessory
 android.hardware.usb.UsbDevice$1
 android.hardware.usb.UsbDevice
 android.hardware.usb.UsbDeviceConnection
@@ -1677,20 +2404,15 @@
 android.hardware.usb.UsbPortStatus$1
 android.hardware.usb.UsbPortStatus
 android.hardware.usb.UsbRequest
+android.hardware.usb.gadget.V1_0.IUsbGadget$Proxy
+android.hardware.usb.gadget.V1_0.IUsbGadget
+android.hardware.usb.gadget.V1_0.IUsbGadgetCallback$Stub
+android.hardware.usb.gadget.V1_0.IUsbGadgetCallback
 android.icu.impl.BMPSet
 android.icu.impl.CacheBase
 android.icu.impl.CacheValue$NullValue
-android.icu.impl.CacheValue$SoftValue
 android.icu.impl.CacheValue$Strength
 android.icu.impl.CacheValue
-android.icu.impl.CalType
-android.icu.impl.CalendarUtil$CalendarPreferences
-android.icu.impl.CalendarUtil
-android.icu.impl.CaseMapImpl$StringContextIterator
-android.icu.impl.CaseMapImpl
-android.icu.impl.CharTrie
-android.icu.impl.CharacterIteration
-android.icu.impl.CharacterPropertiesImpl
 android.icu.impl.ClassLoaderUtil
 android.icu.impl.CurrencyData$CurrencyDisplayInfo
 android.icu.impl.CurrencyData$CurrencyDisplayInfoProvider
@@ -1698,8 +2420,6 @@
 android.icu.impl.CurrencyData$CurrencySpacingInfo$SpacingType
 android.icu.impl.CurrencyData$CurrencySpacingInfo
 android.icu.impl.CurrencyData
-android.icu.impl.DateNumberFormat
-android.icu.impl.Grego
 android.icu.impl.ICUBinary$Authenticate
 android.icu.impl.ICUBinary$DatPackageReader$IsAcceptable
 android.icu.impl.ICUBinary$DatPackageReader
@@ -1721,26 +2441,20 @@
 android.icu.impl.ICUData
 android.icu.impl.ICUDebug
 android.icu.impl.ICULocaleService$ICUResourceBundleFactory
-android.icu.impl.ICULocaleService$LocaleKey
 android.icu.impl.ICULocaleService$LocaleKeyFactory
 android.icu.impl.ICULocaleService
 android.icu.impl.ICUNotifier
 android.icu.impl.ICURWLock
 android.icu.impl.ICUResourceBundle$1
-android.icu.impl.ICUResourceBundle$2$1
-android.icu.impl.ICUResourceBundle$2
 android.icu.impl.ICUResourceBundle$3
 android.icu.impl.ICUResourceBundle$4
-android.icu.impl.ICUResourceBundle$AvailEntry
 android.icu.impl.ICUResourceBundle$Loader
 android.icu.impl.ICUResourceBundle$OpenType
 android.icu.impl.ICUResourceBundle$WholeBundle
 android.icu.impl.ICUResourceBundle
 android.icu.impl.ICUResourceBundleImpl$ResourceArray
-android.icu.impl.ICUResourceBundleImpl$ResourceBinary
 android.icu.impl.ICUResourceBundleImpl$ResourceContainer
 android.icu.impl.ICUResourceBundleImpl$ResourceInt
-android.icu.impl.ICUResourceBundleImpl$ResourceIntVector
 android.icu.impl.ICUResourceBundleImpl$ResourceString
 android.icu.impl.ICUResourceBundleImpl$ResourceTable
 android.icu.impl.ICUResourceBundleImpl
@@ -1758,72 +2472,25 @@
 android.icu.impl.ICUResourceBundleReader$Table16
 android.icu.impl.ICUResourceBundleReader$Table
 android.icu.impl.ICUResourceBundleReader
-android.icu.impl.ICUService$CacheEntry
 android.icu.impl.ICUService$Factory
-android.icu.impl.ICUService$Key
 android.icu.impl.ICUService
-android.icu.impl.IDNA2003
-android.icu.impl.JavaTimeZone
 android.icu.impl.LocaleIDParser
-android.icu.impl.LocaleIDs
-android.icu.impl.Norm2AllModes$1
-android.icu.impl.Norm2AllModes$ComposeNormalizer2
-android.icu.impl.Norm2AllModes$DecomposeNormalizer2
-android.icu.impl.Norm2AllModes$FCDNormalizer2
-android.icu.impl.Norm2AllModes$NFCSingleton
-android.icu.impl.Norm2AllModes$NFKCSingleton
-android.icu.impl.Norm2AllModes$NoopNormalizer2
-android.icu.impl.Norm2AllModes$Norm2AllModesSingleton
-android.icu.impl.Norm2AllModes$Normalizer2WithImpl
-android.icu.impl.Norm2AllModes
-android.icu.impl.Normalizer2Impl$1
-android.icu.impl.Normalizer2Impl$IsAcceptable
-android.icu.impl.Normalizer2Impl$UTF16Plus
-android.icu.impl.Normalizer2Impl
-android.icu.impl.OlsonTimeZone
 android.icu.impl.Pair
-android.icu.impl.PatternProps
-android.icu.impl.PatternTokenizer
-android.icu.impl.PluralRulesLoader
 android.icu.impl.RBBIDataWrapper$IsAcceptable
+android.icu.impl.RBBIDataWrapper$RBBIDataHeader
 android.icu.impl.RBBIDataWrapper$RBBIStateTable
 android.icu.impl.RBBIDataWrapper
-android.icu.impl.ReplaceableUCharacterIterator
-android.icu.impl.RuleCharacterIterator
 android.icu.impl.SimpleCache
-android.icu.impl.SimpleFormatterImpl
 android.icu.impl.SoftCache
-android.icu.impl.StandardPlural
-android.icu.impl.StringPrepDataReader
-android.icu.impl.TextTrieMap$Node
-android.icu.impl.TextTrieMap
-android.icu.impl.TimeZoneNamesFactoryImpl
-android.icu.impl.TimeZoneNamesImpl$1
-android.icu.impl.TimeZoneNamesImpl$MZ2TZsCache
-android.icu.impl.TimeZoneNamesImpl$MZMapEntry
-android.icu.impl.TimeZoneNamesImpl$TZ2MZsCache
-android.icu.impl.TimeZoneNamesImpl$ZNames$NameTypeIndex
-android.icu.impl.TimeZoneNamesImpl$ZNames
-android.icu.impl.TimeZoneNamesImpl$ZNamesLoader
-android.icu.impl.TimeZoneNamesImpl
-android.icu.impl.Trie$DataManipulate
-android.icu.impl.Trie$DefaultGetFoldingOffset
 android.icu.impl.Trie2$1
 android.icu.impl.Trie2$2
-android.icu.impl.Trie2$Range
-android.icu.impl.Trie2$Trie2Iterator
 android.icu.impl.Trie2$UTrie2Header
 android.icu.impl.Trie2$ValueMapper
 android.icu.impl.Trie2$ValueWidth
 android.icu.impl.Trie2
 android.icu.impl.Trie2_16
-android.icu.impl.Trie2_32
-android.icu.impl.Trie
 android.icu.impl.UBiDiProps$IsAcceptable
 android.icu.impl.UBiDiProps
-android.icu.impl.UCaseProps$ContextIterator
-android.icu.impl.UCaseProps$IsAcceptable
-android.icu.impl.UCaseProps
 android.icu.impl.UCharacterProperty$10
 android.icu.impl.UCharacterProperty$11
 android.icu.impl.UCharacterProperty$12
@@ -1860,32 +2527,17 @@
 android.icu.impl.UCharacterProperty$NormInertBinaryProperty
 android.icu.impl.UCharacterProperty$NormQuickCheckIntProperty
 android.icu.impl.UCharacterProperty
-android.icu.impl.UPropertyAliases$IsAcceptable
-android.icu.impl.UPropertyAliases
-android.icu.impl.URLHandler$URLVisitor
 android.icu.impl.UResource$Array
 android.icu.impl.UResource$Key
 android.icu.impl.UResource$Sink
 android.icu.impl.UResource$Table
 android.icu.impl.UResource$Value
 android.icu.impl.UResource
-android.icu.impl.USerializedSet
 android.icu.impl.Utility
 android.icu.impl.ZoneMeta$1
 android.icu.impl.ZoneMeta$CustomTimeZoneCache
 android.icu.impl.ZoneMeta$SystemTimeZoneCache
 android.icu.impl.ZoneMeta
-android.icu.impl.coll.CollationData
-android.icu.impl.coll.CollationDataReader$IsAcceptable
-android.icu.impl.coll.CollationDataReader
-android.icu.impl.coll.CollationFastLatin
-android.icu.impl.coll.CollationIterator$CEBuffer
-android.icu.impl.coll.CollationLoader
-android.icu.impl.coll.CollationRoot
-android.icu.impl.coll.CollationSettings
-android.icu.impl.coll.CollationTailoring
-android.icu.impl.coll.SharedObject$Reference
-android.icu.impl.coll.SharedObject
 android.icu.impl.locale.AsciiUtil
 android.icu.impl.locale.BaseLocale$Cache
 android.icu.impl.locale.BaseLocale$Key
@@ -1894,48 +2546,41 @@
 android.icu.impl.locale.LocaleObjectCache
 android.icu.impl.locale.LocaleSyntaxException
 android.icu.impl.number.AffixPatternProvider
-android.icu.impl.number.AffixUtils$SymbolProvider
-android.icu.impl.number.ConstantMultiFieldModifier
+android.icu.impl.number.AffixUtils
 android.icu.impl.number.CustomSymbolCurrency
-android.icu.impl.number.DecimalQuantity
+android.icu.impl.number.DecimalFormatProperties$ParseMode
+android.icu.impl.number.DecimalFormatProperties
+android.icu.impl.number.Grouper
 android.icu.impl.number.MacroProps
-android.icu.impl.number.MicroProps
-android.icu.impl.number.MicroPropsGenerator
-android.icu.impl.number.Modifier
-android.icu.impl.number.MutablePatternModifier$ImmutablePatternModifier
+android.icu.impl.number.Padder$PadPosition
 android.icu.impl.number.PatternStringParser$ParsedPatternInfo
 android.icu.impl.number.PatternStringParser$ParsedSubpatternInfo
 android.icu.impl.number.PatternStringParser$ParserState
+android.icu.impl.number.PatternStringParser
+android.icu.impl.number.PropertiesAffixPatternProvider
 android.icu.impl.number.RoundingUtils
 android.icu.lang.UCharacter
 android.icu.lang.UCharacterEnums$ECharacterCategory
 android.icu.lang.UCharacterEnums$ECharacterDirection
-android.icu.lang.UScript$ScriptUsage
-android.icu.lang.UScript
-android.icu.math.BigDecimal
-android.icu.math.MathContext
 android.icu.number.CurrencyPrecision
-android.icu.number.CurrencyRounder
-android.icu.number.FormattedNumber
 android.icu.number.FractionPrecision
-android.icu.number.FractionRounder
+android.icu.number.IntegerWidth
+android.icu.number.LocalizedNumberFormatter
+android.icu.number.NumberFormatter$DecimalSeparatorDisplay
+android.icu.number.NumberFormatter$SignDisplay
+android.icu.number.NumberFormatter
 android.icu.number.NumberFormatterSettings
+android.icu.number.NumberPropertyMapper
 android.icu.number.Precision$CurrencyRounderImpl
 android.icu.number.Precision$FracSigRounderImpl
 android.icu.number.Precision$FractionRounderImpl
+android.icu.number.Precision$IncrementFiveRounderImpl
 android.icu.number.Precision$IncrementRounderImpl
 android.icu.number.Precision$InfiniteRounderImpl
 android.icu.number.Precision$PassThroughRounderImpl
 android.icu.number.Precision$SignificantRounderImpl
 android.icu.number.Precision
-android.icu.number.Rounder
 android.icu.number.UnlocalizedNumberFormatter
-android.icu.text.AlphabeticIndex$1
-android.icu.text.AlphabeticIndex$Bucket
-android.icu.text.AlphabeticIndex$BucketList
-android.icu.text.AlphabeticIndex$ImmutableIndex
-android.icu.text.Bidi$ImpTabPair
-android.icu.text.Bidi
 android.icu.text.BidiClassifier
 android.icu.text.BreakIterator$BreakIteratorCache
 android.icu.text.BreakIterator$BreakIteratorServiceShim
@@ -1943,186 +2588,63 @@
 android.icu.text.BreakIteratorFactory$BFService$1RBBreakIteratorFactory
 android.icu.text.BreakIteratorFactory$BFService
 android.icu.text.BreakIteratorFactory
-android.icu.text.CaseMap$Title
-android.icu.text.CaseMap$Upper
-android.icu.text.CaseMap
-android.icu.text.Collator$ServiceShim
-android.icu.text.Collator
-android.icu.text.CollatorServiceShim$CService$1CollatorFactory
-android.icu.text.CollatorServiceShim$CService
-android.icu.text.CollatorServiceShim
 android.icu.text.CurrencyDisplayNames
 android.icu.text.CurrencyMetaInfo$CurrencyDigits
 android.icu.text.CurrencyMetaInfo$CurrencyFilter
 android.icu.text.CurrencyMetaInfo
-android.icu.text.DateFormat$BooleanAttribute
-android.icu.text.DateFormat$Field
-android.icu.text.DateFormat
-android.icu.text.DateFormatSymbols$1
-android.icu.text.DateFormatSymbols$CalendarDataSink$AliasType
-android.icu.text.DateFormatSymbols$CalendarDataSink
-android.icu.text.DateFormatSymbols$CapitalizationContextUsage
-android.icu.text.DateFormatSymbols
-android.icu.text.DateIntervalFormat$BestMatchInfo
-android.icu.text.DateIntervalFormat
-android.icu.text.DateIntervalInfo$DateIntervalSink
-android.icu.text.DateIntervalInfo$PatternInfo
-android.icu.text.DateIntervalInfo
-android.icu.text.DateTimePatternGenerator$AppendItemFormatsSink
-android.icu.text.DateTimePatternGenerator$AppendItemNamesSink
-android.icu.text.DateTimePatternGenerator$AvailableFormatsSink
-android.icu.text.DateTimePatternGenerator$DTPGflags
-android.icu.text.DateTimePatternGenerator$DateTimeMatcher
-android.icu.text.DateTimePatternGenerator$DayPeriodAllowedHoursSink
-android.icu.text.DateTimePatternGenerator$DisplayWidth
-android.icu.text.DateTimePatternGenerator$DistanceInfo
-android.icu.text.DateTimePatternGenerator$FormatParser
-android.icu.text.DateTimePatternGenerator$PatternInfo
-android.icu.text.DateTimePatternGenerator$PatternWithMatcher
-android.icu.text.DateTimePatternGenerator$PatternWithSkeletonFlag
-android.icu.text.DateTimePatternGenerator$SkeletonFields
-android.icu.text.DateTimePatternGenerator$VariableField
-android.icu.text.DateTimePatternGenerator
 android.icu.text.DecimalFormat
 android.icu.text.DecimalFormatSymbols$1
 android.icu.text.DecimalFormatSymbols$CacheData
 android.icu.text.DecimalFormatSymbols$DecFmtDataSink
 android.icu.text.DecimalFormatSymbols
-android.icu.text.DecimalFormat_ICU58_Android$Unit
-android.icu.text.DecimalFormat_ICU58_Android
 android.icu.text.DictionaryBreakEngine$DequeI
 android.icu.text.DictionaryBreakEngine
-android.icu.text.DigitList_Android
 android.icu.text.DisplayContext$Type
 android.icu.text.DisplayContext
-android.icu.text.Edits
-android.icu.text.IDNA
 android.icu.text.LanguageBreakEngine
 android.icu.text.Normalizer$FCDMode
 android.icu.text.Normalizer$Mode
-android.icu.text.Normalizer$ModeImpl
 android.icu.text.Normalizer$NFCMode
 android.icu.text.Normalizer$NFDMode
 android.icu.text.Normalizer$NFKCMode
 android.icu.text.Normalizer$NFKDMode
-android.icu.text.Normalizer$NFKDModeImpl
 android.icu.text.Normalizer$NONEMode
 android.icu.text.Normalizer$QuickCheckResult
-android.icu.text.Normalizer2
 android.icu.text.Normalizer
-android.icu.text.NumberFormat$Field
-android.icu.text.NumberFormat$NumberFormatShim
 android.icu.text.NumberFormat
-android.icu.text.NumberFormatServiceShim$NFService$1RBNumberFormatFactory
-android.icu.text.NumberFormatServiceShim$NFService
 android.icu.text.NumberingSystem$1
 android.icu.text.NumberingSystem$2
 android.icu.text.NumberingSystem$LocaleLookupData
 android.icu.text.NumberingSystem
-android.icu.text.PluralRanges$Matrix
-android.icu.text.PluralRanges
-android.icu.text.PluralRules$1
-android.icu.text.PluralRules$2
-android.icu.text.PluralRules$AndConstraint
-android.icu.text.PluralRules$BinaryConstraint
-android.icu.text.PluralRules$Constraint
-android.icu.text.PluralRules$Factory
-android.icu.text.PluralRules$FixedDecimal
-android.icu.text.PluralRules$FixedDecimalRange
-android.icu.text.PluralRules$FixedDecimalSamples
-android.icu.text.PluralRules$IFixedDecimal
-android.icu.text.PluralRules$Operand
-android.icu.text.PluralRules$PluralType
-android.icu.text.PluralRules$RangeConstraint
-android.icu.text.PluralRules$Rule
-android.icu.text.PluralRules$RuleList
-android.icu.text.PluralRules$SampleType
-android.icu.text.PluralRules$SimpleTokenizer
-android.icu.text.PluralRules
-android.icu.text.RelativeDateTimeFormatter$Cache$1
-android.icu.text.RelativeDateTimeFormatter$Cache
-android.icu.text.RelativeDateTimeFormatter$Loader
-android.icu.text.RelativeDateTimeFormatter$RelDateTimeDataSink
-android.icu.text.Replaceable
-android.icu.text.ReplaceableString
 android.icu.text.RuleBasedBreakIterator$BreakCache
 android.icu.text.RuleBasedBreakIterator$DictionaryCache
 android.icu.text.RuleBasedBreakIterator$LookAheadResults
 android.icu.text.RuleBasedBreakIterator
-android.icu.text.RuleBasedCollator$CollationBuffer
-android.icu.text.RuleBasedCollator$FCDUTF16NFDIterator
-android.icu.text.RuleBasedCollator$NFDIterator
-android.icu.text.RuleBasedCollator$UTF16NFDIterator
-android.icu.text.RuleBasedCollator
-android.icu.text.SimpleDateFormat$PatternItem
-android.icu.text.SimpleDateFormat
-android.icu.text.StringPrep
 android.icu.text.StringPrepParseException
-android.icu.text.TimeZoneNames$Cache
-android.icu.text.TimeZoneNames$Factory
+android.icu.text.StringTransform
 android.icu.text.TimeZoneNames$NameType
-android.icu.text.TimeZoneNames
-android.icu.text.UCharacterIterator
-android.icu.text.UFieldPosition
+android.icu.text.Transform
+android.icu.text.Transliterator
 android.icu.text.UFormat
-android.icu.text.UForwardCharacterIterator
-android.icu.text.UTF16$StringComparator
 android.icu.text.UTF16
 android.icu.text.UnhandledBreakEngine
 android.icu.text.UnicodeFilter
 android.icu.text.UnicodeMatcher
-android.icu.text.UnicodeSet$Filter
-android.icu.text.UnicodeSet$GeneralCategoryMaskFilter
-android.icu.text.UnicodeSet$IntPropertyFilter
-android.icu.text.UnicodeSet$UnicodeSetIterator2
 android.icu.text.UnicodeSet
-android.icu.util.AnnualTimeZoneRule
-android.icu.util.BasicTimeZone
-android.icu.util.BytesTrie$Result
-android.icu.util.BytesTrie
-android.icu.util.Calendar$1
-android.icu.util.Calendar$FormatConfiguration
-android.icu.util.Calendar$PatternData
-android.icu.util.Calendar$WeekData
-android.icu.util.Calendar$WeekDataCache
-android.icu.util.Calendar
-android.icu.util.CharsTrie$Entry
-android.icu.util.CharsTrie$Iterator
-android.icu.util.CodePointMap$Range
-android.icu.util.CodePointMap$RangeOption
-android.icu.util.CodePointMap$ValueFilter
-android.icu.util.CodePointMap
-android.icu.util.CodePointTrie$1
-android.icu.util.CodePointTrie$Data16
-android.icu.util.CodePointTrie$Data
-android.icu.util.CodePointTrie$Fast16
-android.icu.util.CodePointTrie$Fast
-android.icu.util.CodePointTrie$Type
-android.icu.util.CodePointTrie$ValueWidth
-android.icu.util.CodePointTrie
 android.icu.util.Currency$1
 android.icu.util.Currency$CurrencyUsage
 android.icu.util.Currency
-android.icu.util.DateTimeRule
 android.icu.util.Freezable
-android.icu.util.GregorianCalendar
-android.icu.util.InitialTimeZoneRule
 android.icu.util.MeasureUnit$1
 android.icu.util.MeasureUnit$2
 android.icu.util.MeasureUnit$3
 android.icu.util.MeasureUnit$4
 android.icu.util.MeasureUnit$Factory
 android.icu.util.MeasureUnit
-android.icu.util.Output
-android.icu.util.STZInfo
-android.icu.util.SimpleTimeZone
-android.icu.util.TimeArrayTimeZoneRule
 android.icu.util.TimeUnit
 android.icu.util.TimeZone$ConstantZone
 android.icu.util.TimeZone$SystemTimeZoneType
 android.icu.util.TimeZone
-android.icu.util.TimeZoneRule
-android.icu.util.TimeZoneTransition
 android.icu.util.ULocale$1
 android.icu.util.ULocale$2
 android.icu.util.ULocale$3
@@ -2133,65 +2655,106 @@
 android.icu.util.UResourceBundle$1
 android.icu.util.UResourceBundle$RootType
 android.icu.util.UResourceBundle
-android.icu.util.UResourceBundleIterator
 android.icu.util.UResourceTypeMismatchException
 android.icu.util.VersionInfo
+android.inputmethodservice.-$$Lambda$InputMethodService$8T9TmAUIN7vW9eU6kTg8309_d4E
+android.inputmethodservice.-$$Lambda$InputMethodService$wp8DeVGx_WDOPw4F6an7QbwVxf0
+android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodImpl
+android.inputmethodservice.AbstractInputMethodService$AbstractInputMethodSessionImpl
+android.inputmethodservice.AbstractInputMethodService
+android.inputmethodservice.IInputMethodSessionWrapper$ImeInputEventReceiver
+android.inputmethodservice.IInputMethodSessionWrapper
+android.inputmethodservice.IInputMethodWrapper$InputMethodSessionCallbackWrapper
+android.inputmethodservice.IInputMethodWrapper
+android.inputmethodservice.InputMethodService$InputMethodSessionImpl
+android.inputmethodservice.InputMethodService$Insets
+android.inputmethodservice.InputMethodService$SettingsObserver
+android.inputmethodservice.InputMethodService
 android.inputmethodservice.SoftInputWindow
+android.internal.hidl.base.V1_0.DebugInfo
 android.internal.hidl.base.V1_0.IBase
 android.location.Address$1
 android.location.Address
-android.location.BatchedLocationCallbackTransport$CallbackTransport
-android.location.BatchedLocationCallbackTransport
 android.location.Country$1
+android.location.Country
+android.location.CountryDetector$ListenerTransport
 android.location.CountryDetector
+android.location.CountryListener
 android.location.Criteria$1
+android.location.Criteria
 android.location.Geocoder
 android.location.GeocoderParams$1
 android.location.GeocoderParams
-android.location.GnssMeasurementCallbackTransport$ListenerTransport
-android.location.GnssMeasurementCallbackTransport
-android.location.GnssNavigationMessageCallbackTransport$ListenerTransport
-android.location.GnssNavigationMessageCallbackTransport
+android.location.Geofence$1
+android.location.Geofence
+android.location.GnssClock$1
+android.location.GnssClock
+android.location.GnssMeasurement$1
+android.location.GnssMeasurement
+android.location.GnssMeasurementCorrections$1
+android.location.GnssMeasurementCorrections
 android.location.GpsStatus$Listener
+android.location.IBatchedLocationCallback$Stub$Proxy
 android.location.IBatchedLocationCallback$Stub
 android.location.IBatchedLocationCallback
 android.location.ICountryDetector$Stub$Proxy
 android.location.ICountryDetector$Stub
 android.location.ICountryDetector
+android.location.ICountryListener$Stub$Proxy
+android.location.ICountryListener$Stub
+android.location.ICountryListener
+android.location.IFusedGeofenceHardware$Stub$Proxy
+android.location.IFusedGeofenceHardware$Stub
+android.location.IFusedGeofenceHardware
+android.location.IGeocodeProvider$Stub$Proxy
+android.location.IGeocodeProvider$Stub
+android.location.IGeocodeProvider
+android.location.IGeofenceProvider$Stub$Proxy
+android.location.IGeofenceProvider$Stub
+android.location.IGeofenceProvider
+android.location.IGnssMeasurementsListener$Stub$Proxy
 android.location.IGnssMeasurementsListener$Stub
 android.location.IGnssMeasurementsListener
+android.location.IGnssNavigationMessageListener$Stub$Proxy
 android.location.IGnssNavigationMessageListener$Stub
 android.location.IGnssNavigationMessageListener
+android.location.IGnssStatusListener$Stub$Proxy
 android.location.IGnssStatusListener$Stub
 android.location.IGnssStatusListener
+android.location.IGpsGeofenceHardware$Stub$Proxy
+android.location.IGpsGeofenceHardware$Stub
+android.location.IGpsGeofenceHardware
+android.location.ILocationListener$Stub$Proxy
 android.location.ILocationListener$Stub
 android.location.ILocationListener
 android.location.ILocationManager$Stub$Proxy
 android.location.ILocationManager$Stub
 android.location.ILocationManager
-android.location.LocalListenerHelper
+android.location.INetInitiatedListener$Stub
+android.location.INetInitiatedListener
 android.location.Location$1
 android.location.Location$2
 android.location.Location$BearingDistanceCache
 android.location.Location
 android.location.LocationListener
-android.location.LocationManager$GnssStatusListenerTransport$GnssHandler
-android.location.LocationManager$GnssStatusListenerTransport
-android.location.LocationManager$ListenerTransport$1
-android.location.LocationManager$ListenerTransport$2
-android.location.LocationManager$ListenerTransport
 android.location.LocationManager
 android.location.LocationProvider
 android.location.LocationRequest$1
 android.location.LocationRequest
+android.media.-$$Lambda$MediaCodecInfo$VideoCapabilities$DpgwEn-gVFZT9EtP3qcxpiA2G0M
 android.media.AudioAttributes$1
 android.media.AudioAttributes$Builder
 android.media.AudioAttributes
+android.media.AudioDeviceAddress$1
+android.media.AudioDeviceAddress
 android.media.AudioDeviceCallback
 android.media.AudioDeviceInfo
 android.media.AudioDevicePort
 android.media.AudioDevicePortConfig
+android.media.AudioFocusInfo$1
+android.media.AudioFocusInfo
 android.media.AudioFocusRequest$Builder
+android.media.AudioFocusRequest
 android.media.AudioFormat$1
 android.media.AudioFormat$Builder
 android.media.AudioFormat
@@ -2204,19 +2767,25 @@
 android.media.AudioManager$4
 android.media.AudioManager$AudioPlaybackCallback
 android.media.AudioManager$AudioPlaybackCallbackInfo
+android.media.AudioManager$BlockingFocusResultReceiver
 android.media.AudioManager$FocusRequestInfo
 android.media.AudioManager$NativeEventHandlerDelegate$1
 android.media.AudioManager$NativeEventHandlerDelegate
 android.media.AudioManager$OnAmPortUpdateListener
 android.media.AudioManager$OnAudioFocusChangeListener
 android.media.AudioManager$OnAudioPortUpdateListener
+android.media.AudioManager$SafeWaitObject
 android.media.AudioManager$ServiceEventHandlerDelegate$1
 android.media.AudioManager$ServiceEventHandlerDelegate
 android.media.AudioManager
+android.media.AudioManagerInternal$RingerModeDelegate
+android.media.AudioManagerInternal
 android.media.AudioMixPort
 android.media.AudioMixPortConfig
 android.media.AudioPatch
 android.media.AudioPlaybackConfiguration$1
+android.media.AudioPlaybackConfiguration$IPlayerShell
+android.media.AudioPlaybackConfiguration$PlayerDeathMonitor
 android.media.AudioPlaybackConfiguration
 android.media.AudioPort
 android.media.AudioPortConfig
@@ -2227,9 +2796,14 @@
 android.media.AudioRecordRoutingProxy
 android.media.AudioRecordingMonitor
 android.media.AudioRecordingMonitorClient
+android.media.AudioRecordingMonitorImpl$1
+android.media.AudioRecordingMonitorImpl
 android.media.AudioRoutesInfo$1
 android.media.AudioRoutesInfo
 android.media.AudioRouting
+android.media.AudioSystem$AudioRecordingCallback
+android.media.AudioSystem$DynamicPolicyCallback
+android.media.AudioSystem$ErrorCallback
 android.media.AudioSystem
 android.media.AudioTimestamp
 android.media.AudioTrack
@@ -2241,11 +2815,16 @@
 android.media.ExifInterface$ByteOrderedDataInputStream
 android.media.ExifInterface$ExifAttribute
 android.media.ExifInterface$ExifTag
+android.media.ExifInterface$Rational
 android.media.ExifInterface
+android.media.ExternalRingtonesCursorWrapper
+android.media.IAudioFocusDispatcher$Stub$Proxy
 android.media.IAudioFocusDispatcher$Stub
 android.media.IAudioFocusDispatcher
+android.media.IAudioRoutesObserver$Stub$Proxy
 android.media.IAudioRoutesObserver$Stub
 android.media.IAudioRoutesObserver
+android.media.IAudioServerStateDispatcher$Stub$Proxy
 android.media.IAudioServerStateDispatcher$Stub
 android.media.IAudioServerStateDispatcher
 android.media.IAudioService$Stub$Proxy
@@ -2253,17 +2832,32 @@
 android.media.IAudioService
 android.media.IMediaHTTPConnection$Stub
 android.media.IMediaHTTPConnection
+android.media.IMediaHTTPService$Stub
+android.media.IMediaHTTPService
+android.media.IMediaResourceMonitor$Stub
+android.media.IMediaResourceMonitor
+android.media.IMediaRouter2Client$Stub$Proxy
+android.media.IMediaRouter2Client$Stub
+android.media.IMediaRouter2Client
+android.media.IMediaRouter2Manager$Stub$Proxy
+android.media.IMediaRouter2Manager$Stub
+android.media.IMediaRouter2Manager
+android.media.IMediaRouterClient$Stub$Proxy
 android.media.IMediaRouterClient$Stub
 android.media.IMediaRouterClient
 android.media.IMediaRouterService$Stub$Proxy
 android.media.IMediaRouterService$Stub
 android.media.IMediaRouterService
+android.media.IPlaybackConfigDispatcher$Stub$Proxy
 android.media.IPlaybackConfigDispatcher$Stub
 android.media.IPlaybackConfigDispatcher
+android.media.IPlayer$Stub$Proxy
 android.media.IPlayer$Stub
 android.media.IPlayer
+android.media.IRecordingConfigDispatcher$Stub$Proxy
 android.media.IRecordingConfigDispatcher$Stub
 android.media.IRecordingConfigDispatcher
+android.media.IRemoteVolumeController$Stub$Proxy
 android.media.IRemoteVolumeController$Stub
 android.media.IRemoteVolumeController
 android.media.IRemoteVolumeObserver$Stub
@@ -2271,6 +2865,9 @@
 android.media.IRingtonePlayer$Stub$Proxy
 android.media.IRingtonePlayer$Stub
 android.media.IRingtonePlayer
+android.media.IVolumeController$Stub$Proxy
+android.media.IVolumeController$Stub
+android.media.IVolumeController
 android.media.Image$Plane
 android.media.Image
 android.media.ImageReader$SurfaceImage$SurfacePlane
@@ -2281,6 +2878,7 @@
 android.media.ImageWriter
 android.media.JetPlayer
 android.media.MediaCodec$BufferInfo
+android.media.MediaCodec$BufferMap$CodecBuffer
 android.media.MediaCodec$BufferMap
 android.media.MediaCodec$CodecException
 android.media.MediaCodec$CryptoException
@@ -2294,6 +2892,7 @@
 android.media.MediaCodecInfo$CodecProfileLevel
 android.media.MediaCodecInfo$EncoderCapabilities
 android.media.MediaCodecInfo$Feature
+android.media.MediaCodecInfo$VideoCapabilities$PerformancePoint
 android.media.MediaCodecInfo$VideoCapabilities
 android.media.MediaCodecInfo
 android.media.MediaCodecList
@@ -2303,6 +2902,7 @@
 android.media.MediaDescription
 android.media.MediaDrm$Certificate
 android.media.MediaDrm$KeyRequest
+android.media.MediaDrm$KeyStatus
 android.media.MediaDrm$MediaDrmStateException
 android.media.MediaDrm$ProvisionRequest
 android.media.MediaDrm$SessionException
@@ -2311,17 +2911,23 @@
 android.media.MediaExtractor
 android.media.MediaFormat
 android.media.MediaHTTPConnection
+android.media.MediaHTTPService
 android.media.MediaMetadata$1
 android.media.MediaMetadata$Builder
 android.media.MediaMetadata
 android.media.MediaMetadataRetriever$BitmapParams
 android.media.MediaMetadataRetriever
+android.media.MediaMetrics
 android.media.MediaMuxer
 android.media.MediaPlayer$1
 android.media.MediaPlayer$2$1
 android.media.MediaPlayer$2
 android.media.MediaPlayer$3
+android.media.MediaPlayer$6
 android.media.MediaPlayer$7
+android.media.MediaPlayer$DrmInfo
+android.media.MediaPlayer$EventHandler$1
+android.media.MediaPlayer$EventHandler$2
 android.media.MediaPlayer$EventHandler
 android.media.MediaPlayer$OnCompletionListener
 android.media.MediaPlayer$OnErrorListener
@@ -2331,13 +2937,18 @@
 android.media.MediaPlayer$TimeProvider$EventHandler
 android.media.MediaPlayer$TimeProvider
 android.media.MediaPlayer$TrackInfo$1
+android.media.MediaPlayer$TrackInfo
 android.media.MediaPlayer
 android.media.MediaRecorder
+android.media.MediaRoute2Info$1
+android.media.MediaRoute2Info
 android.media.MediaRouter$Callback
 android.media.MediaRouter$CallbackInfo
 android.media.MediaRouter$RouteCategory
+android.media.MediaRouter$RouteGroup
 android.media.MediaRouter$RouteInfo$1
 android.media.MediaRouter$RouteInfo
+android.media.MediaRouter$SimpleCallback
 android.media.MediaRouter$Static$1$1
 android.media.MediaRouter$Static$1
 android.media.MediaRouter$Static$Client$1
@@ -2350,6 +2961,9 @@
 android.media.MediaRouter$WifiDisplayStatusChangedReceiver
 android.media.MediaRouter
 android.media.MediaRouterClientState$1
+android.media.MediaRouterClientState$RouteInfo$1
+android.media.MediaRouterClientState$RouteInfo
+android.media.MediaRouterClientState
 android.media.MediaScanner
 android.media.MediaScannerConnection$MediaScannerConnectionClient
 android.media.MediaScannerConnection$OnScanCompletedListener
@@ -2360,6 +2974,7 @@
 android.media.MicrophoneDirection
 android.media.MicrophoneInfo$Coordinate3F
 android.media.MicrophoneInfo
+android.media.NativeRoutingEventHandlerDelegate
 android.media.NotProvisionedException
 android.media.PlaybackParams$1
 android.media.PlaybackParams
@@ -2369,20 +2984,33 @@
 android.media.PlayerBase$PlayerIdCard
 android.media.PlayerBase
 android.media.Rating$1
+android.media.Rating
 android.media.RemoteDisplay
 android.media.ResampleInputStream
 android.media.Ringtone$MyOnCompletionListener
+android.media.Ringtone
 android.media.RingtoneManager
+android.media.SoundPool$Builder
+android.media.SoundPool$EventHandler
+android.media.SoundPool$OnLoadCompleteListener
 android.media.SoundPool
 android.media.SubtitleController$1
+android.media.SubtitleController$2
 android.media.SubtitleController$Anchor
 android.media.SubtitleController$Listener
+android.media.SubtitleController
+android.media.SubtitleData
+android.media.SubtitleTrack
 android.media.SyncParams
+android.media.TimedMetaData
+android.media.TimedText
 android.media.ToneGenerator
 android.media.Utils$1
 android.media.Utils$2
 android.media.Utils
 android.media.VolumeAutomation
+android.media.VolumePolicy$1
+android.media.VolumePolicy
 android.media.VolumeShaper$Configuration$1
 android.media.VolumeShaper$Configuration$Builder
 android.media.VolumeShaper$Configuration
@@ -2395,7 +3023,8 @@
 android.media.audiopolicy.AudioMix
 android.media.audiopolicy.AudioMixingRule$AudioMixMatchCriterion
 android.media.audiopolicy.AudioMixingRule
-android.media.audiopolicy.AudioProductStrategies
+android.media.audiopolicy.AudioPolicyConfig$1
+android.media.audiopolicy.AudioPolicyConfig
 android.media.audiopolicy.AudioProductStrategy$1
 android.media.audiopolicy.AudioProductStrategy$AudioAttributesGroup$1
 android.media.audiopolicy.AudioProductStrategy$AudioAttributesGroup
@@ -2403,7 +3032,9 @@
 android.media.audiopolicy.AudioVolumeGroup$1
 android.media.audiopolicy.AudioVolumeGroup
 android.media.audiopolicy.AudioVolumeGroupChangeHandler
-android.media.audiopolicy.AudioVolumeGroups
+android.media.audiopolicy.IAudioPolicyCallback$Stub$Proxy
+android.media.audiopolicy.IAudioPolicyCallback$Stub
+android.media.audiopolicy.IAudioPolicyCallback
 android.media.browse.MediaBrowser$1
 android.media.browse.MediaBrowser$2
 android.media.browse.MediaBrowser$6
@@ -2419,17 +3050,35 @@
 android.media.browse.MediaBrowser$SubscriptionCallback
 android.media.browse.MediaBrowser
 android.media.browse.MediaBrowserUtils
+android.media.midi.IMidiManager$Stub
+android.media.midi.IMidiManager
 android.media.midi.MidiDevice
 android.media.midi.MidiDeviceInfo$1
 android.media.midi.MidiDeviceInfo
 android.media.midi.MidiManager
+android.media.projection.IMediaProjection$Stub$Proxy
+android.media.projection.IMediaProjection$Stub
+android.media.projection.IMediaProjection
+android.media.projection.IMediaProjectionManager$Stub$Proxy
+android.media.projection.IMediaProjectionManager$Stub
+android.media.projection.IMediaProjectionManager
+android.media.projection.IMediaProjectionWatcherCallback$Stub$Proxy
+android.media.projection.IMediaProjectionWatcherCallback$Stub
+android.media.projection.IMediaProjectionWatcherCallback
+android.media.projection.MediaProjectionManager$CallbackDelegate
 android.media.projection.MediaProjectionManager
+android.media.session.-$$Lambda$MediaSessionManager$IEuWPZ528guBgmyKPMUWhBwnMCE
+android.media.session.IActiveSessionsListener$Stub$Proxy
 android.media.session.IActiveSessionsListener$Stub
 android.media.session.IActiveSessionsListener
-android.media.session.ICallback$Stub
-android.media.session.ICallback
+android.media.session.IOnMediaKeyEventDispatchedListener$Stub
+android.media.session.IOnMediaKeyEventDispatchedListener
+android.media.session.IOnMediaKeyEventSessionChangedListener$Stub
+android.media.session.IOnMediaKeyEventSessionChangedListener
+android.media.session.IOnMediaKeyListener$Stub$Proxy
 android.media.session.IOnMediaKeyListener$Stub
 android.media.session.IOnMediaKeyListener
+android.media.session.IOnVolumeKeyLongPressListener$Stub$Proxy
 android.media.session.IOnVolumeKeyLongPressListener$Stub
 android.media.session.IOnVolumeKeyLongPressListener
 android.media.session.ISession$Stub$Proxy
@@ -2438,11 +3087,13 @@
 android.media.session.ISession2TokensListener$Stub
 android.media.session.ISession2TokensListener
 android.media.session.ISession
+android.media.session.ISessionCallback$Stub$Proxy
 android.media.session.ISessionCallback$Stub
 android.media.session.ISessionCallback
 android.media.session.ISessionController$Stub$Proxy
 android.media.session.ISessionController$Stub
 android.media.session.ISessionController
+android.media.session.ISessionControllerCallback$Stub$Proxy
 android.media.session.ISessionControllerCallback$Stub
 android.media.session.ISessionControllerCallback
 android.media.session.ISessionManager$Stub$Proxy
@@ -2451,19 +3102,24 @@
 android.media.session.MediaController$Callback
 android.media.session.MediaController$CallbackStub
 android.media.session.MediaController$MessageHandler
+android.media.session.MediaController$PlaybackInfo$1
+android.media.session.MediaController$PlaybackInfo
 android.media.session.MediaController$TransportControls
 android.media.session.MediaController
 android.media.session.MediaSession$Callback
+android.media.session.MediaSession$CallbackMessageHandler
 android.media.session.MediaSession$CallbackStub
 android.media.session.MediaSession$QueueItem$1
 android.media.session.MediaSession$QueueItem
 android.media.session.MediaSession$Token$1
 android.media.session.MediaSession$Token
 android.media.session.MediaSession
-android.media.session.MediaSessionManager$Callback
-android.media.session.MediaSessionManager$CallbackImpl$4
-android.media.session.MediaSessionManager$CallbackImpl
+android.media.session.MediaSessionManager$1
 android.media.session.MediaSessionManager$OnActiveSessionsChangedListener
+android.media.session.MediaSessionManager$OnMediaKeyEventDispatchedListener
+android.media.session.MediaSessionManager$OnMediaKeyEventDispatchedListenerStub
+android.media.session.MediaSessionManager$OnMediaKeyEventSessionChangedListener
+android.media.session.MediaSessionManager$OnMediaKeyEventSessionChangedListenerStub
 android.media.session.MediaSessionManager$OnMediaKeyListener
 android.media.session.MediaSessionManager$OnMediaKeyListenerImpl
 android.media.session.MediaSessionManager$OnSession2TokensChangedListener
@@ -2481,8 +3137,14 @@
 android.media.session.PlaybackState$CustomAction
 android.media.session.PlaybackState
 android.media.soundtrigger.SoundTriggerManager
+android.media.tv.TvInputHardwareInfo$Builder
 android.media.tv.TvInputManager
+android.media.tv.TvStreamConfig$1
+android.media.tv.TvStreamConfig$Builder
+android.media.tv.TvStreamConfig
 android.metrics.LogMaker
+android.mtp.MtpDatabase$1
+android.mtp.MtpDatabase$2
 android.mtp.MtpDatabase
 android.mtp.MtpDevice
 android.mtp.MtpDeviceInfo
@@ -2493,23 +3155,67 @@
 android.mtp.MtpServer
 android.mtp.MtpStorage
 android.mtp.MtpStorageInfo
+android.mtp.MtpStorageManager$MtpNotifier
+android.mtp.MtpStorageManager$MtpObject
+android.mtp.MtpStorageManager
 android.net.-$$Lambda$FpGXkd3pLxeXY58eJ_84mi1PLWQ
+android.net.-$$Lambda$Network$KD6DxaMRJIcajhj36TU1K7lJnHQ
+android.net.-$$Lambda$NetworkStats$xvFSsVoR0k5s7Fhw1yPDPVIpx8A
 android.net.-$$Lambda$p1_56lwnt1xBuY1muPblbN1Dtkw
+android.net.ConnectionInfo$1
+android.net.ConnectionInfo
+android.net.ConnectivityManager$1
+android.net.ConnectivityManager$2
+android.net.ConnectivityManager$3
 android.net.ConnectivityManager$CallbackHandler
+android.net.ConnectivityManager$LegacyRequest
 android.net.ConnectivityManager$NetworkCallback
+android.net.ConnectivityManager$OnNetworkActiveListener
+android.net.ConnectivityManager$OnStartTetheringCallback
+android.net.ConnectivityManager$OnTetheringEntitlementResultListener
+android.net.ConnectivityManager$OnTetheringEventCallback
+android.net.ConnectivityManager$PacketKeepalive
+android.net.ConnectivityManager$PacketKeepaliveCallback
+android.net.ConnectivityManager$TooManyRequestsException
 android.net.ConnectivityManager
+android.net.ConnectivityMetricsEvent$1
+android.net.ConnectivityMetricsEvent
 android.net.ConnectivityThread
 android.net.Credentials
+android.net.DataUsageRequest$1
+android.net.DataUsageRequest
 android.net.DhcpInfo$1
+android.net.DhcpInfo
+android.net.DhcpResults$1
+android.net.DhcpResults
 android.net.EthernetManager
+android.net.EventLogTags
 android.net.IConnectivityManager$Stub$Proxy
 android.net.IConnectivityManager$Stub
 android.net.IConnectivityManager
+android.net.IEthernetManager$Stub
+android.net.IEthernetManager
+android.net.IIpConnectivityMetrics$Stub$Proxy
+android.net.IIpConnectivityMetrics$Stub
+android.net.IIpConnectivityMetrics
+android.net.IIpSecService$Stub
+android.net.IIpSecService
+android.net.INetdEventCallback$Stub$Proxy
+android.net.INetdEventCallback$Stub
+android.net.INetdEventCallback
+android.net.INetworkManagementEventObserver$Stub$Proxy
+android.net.INetworkManagementEventObserver$Stub
+android.net.INetworkManagementEventObserver
+android.net.INetworkPolicyListener$Stub$Proxy
 android.net.INetworkPolicyListener$Stub
 android.net.INetworkPolicyListener
 android.net.INetworkPolicyManager$Stub$Proxy
 android.net.INetworkPolicyManager$Stub
 android.net.INetworkPolicyManager
+android.net.INetworkRecommendationProvider$Stub$Proxy
+android.net.INetworkRecommendationProvider$Stub
+android.net.INetworkRecommendationProvider
+android.net.INetworkScoreCache$Stub$Proxy
 android.net.INetworkScoreCache$Stub
 android.net.INetworkScoreCache
 android.net.INetworkScoreService$Stub$Proxy
@@ -2518,6 +3224,16 @@
 android.net.INetworkStatsService$Stub$Proxy
 android.net.INetworkStatsService$Stub
 android.net.INetworkStatsService
+android.net.ISocketKeepaliveCallback$Stub$Proxy
+android.net.ISocketKeepaliveCallback$Stub
+android.net.ISocketKeepaliveCallback
+android.net.ITestNetworkManager$Stub
+android.net.ITestNetworkManager
+android.net.ITetheringStatsProvider$Stub$Proxy
+android.net.ITetheringStatsProvider$Stub
+android.net.ITetheringStatsProvider
+android.net.InterfaceConfiguration$1
+android.net.InterfaceConfiguration
 android.net.IpConfiguration$1
 android.net.IpConfiguration$IpAssignment
 android.net.IpConfiguration$ProxySettings
@@ -2526,7 +3242,9 @@
 android.net.IpPrefix$2
 android.net.IpPrefix
 android.net.IpSecManager$SpiUnavailableException
+android.net.IpSecManager$UdpEncapsulationSocket
 android.net.IpSecManager
+android.net.KeepalivePacketData
 android.net.LinkAddress$1
 android.net.LinkAddress
 android.net.LinkProperties$1
@@ -2542,33 +3260,51 @@
 android.net.MacAddress
 android.net.MatchAllNetworkSpecifier$1
 android.net.MatchAllNetworkSpecifier
+android.net.NattSocketKeepalive
 android.net.Network$1
 android.net.Network$NetworkBoundSocketFactory
 android.net.Network
+android.net.NetworkAgent
 android.net.NetworkCapabilities$1
 android.net.NetworkCapabilities$NameOf
 android.net.NetworkCapabilities
 android.net.NetworkConfig
-android.net.NetworkFactory$NetworkRequestInfo
-android.net.NetworkFactory
+android.net.NetworkIdentity
 android.net.NetworkInfo$1
 android.net.NetworkInfo$DetailedState
 android.net.NetworkInfo$State
 android.net.NetworkInfo
 android.net.NetworkKey$1
 android.net.NetworkKey
+android.net.NetworkPolicy$1
+android.net.NetworkPolicy
+android.net.NetworkPolicyManager$1
 android.net.NetworkPolicyManager$Listener
 android.net.NetworkPolicyManager
+android.net.NetworkProvider
+android.net.NetworkQuotaInfo
 android.net.NetworkRequest$1
 android.net.NetworkRequest$Builder
 android.net.NetworkRequest$Type
 android.net.NetworkRequest
 android.net.NetworkScoreManager
 android.net.NetworkSpecifier
+android.net.NetworkState$1
+android.net.NetworkState
 android.net.NetworkStats$1
+android.net.NetworkStats$Entry
+android.net.NetworkStats$NonMonotonicObserver
 android.net.NetworkStats
+android.net.NetworkStatsHistory$1
+android.net.NetworkStatsHistory$DataStreamUtils
+android.net.NetworkStatsHistory$Entry
+android.net.NetworkStatsHistory$ParcelUtils
+android.net.NetworkStatsHistory
+android.net.NetworkTemplate$1
+android.net.NetworkTemplate
 android.net.NetworkUtils
 android.net.NetworkWatchlistManager
+android.net.PacProxySelector
 android.net.ParseException
 android.net.PrivateDnsConnectivityChecker
 android.net.Proxy
@@ -2576,15 +3312,24 @@
 android.net.ProxyInfo
 android.net.RouteInfo$1
 android.net.RouteInfo
+android.net.RssiCurve$1
+android.net.RssiCurve
 android.net.SSLCertificateSocketFactory$1
 android.net.SSLCertificateSocketFactory
 android.net.SSLSessionCache
 android.net.ScoredNetwork$1
 android.net.ScoredNetwork
+android.net.SntpClient$InvalidServerReplyException
+android.net.SntpClient
+android.net.SocketKeepalive$Callback
+android.net.SocketKeepalive$ErrorCodeException
+android.net.SocketKeepalive
 android.net.StaticIpConfiguration$1
+android.net.StaticIpConfiguration$Builder
 android.net.StaticIpConfiguration
 android.net.StringNetworkSpecifier$1
 android.net.StringNetworkSpecifier
+android.net.TcpSocketKeepalive
 android.net.TestNetworkManager
 android.net.TrafficStats
 android.net.TransportInfo
@@ -2607,44 +3352,64 @@
 android.net.WebAddress
 android.net.WifiKey$1
 android.net.WifiKey
+android.net.apf.ApfCapabilities$1
+android.net.apf.ApfCapabilities
 android.net.http.HttpResponseCache
 android.net.http.X509TrustManagerExtensions
 android.net.lowpan.LowpanManager
+android.net.metrics.ApfProgramEvent$1
+android.net.metrics.ApfProgramEvent
+android.net.metrics.ApfStats$1
+android.net.metrics.ApfStats
+android.net.metrics.ConnectStats
+android.net.metrics.DefaultNetworkEvent
+android.net.metrics.DhcpClientEvent$1
+android.net.metrics.DhcpClientEvent
+android.net.metrics.DnsEvent
+android.net.metrics.IpConnectivityLog$Event
+android.net.metrics.IpConnectivityLog
+android.net.metrics.IpManagerEvent$1
+android.net.metrics.IpManagerEvent
+android.net.metrics.IpReachabilityEvent$1
+android.net.metrics.IpReachabilityEvent
+android.net.metrics.NetworkEvent$1
+android.net.metrics.NetworkEvent
+android.net.metrics.NetworkMetrics$Metrics
+android.net.metrics.NetworkMetrics$Summary
+android.net.metrics.RaEvent$1
+android.net.metrics.RaEvent
+android.net.metrics.ValidationProbeEvent$1
+android.net.metrics.ValidationProbeEvent
+android.net.metrics.WakeupEvent
+android.net.metrics.WakeupStats
+android.net.nsd.INsdManager$Stub$Proxy
+android.net.nsd.INsdManager$Stub
+android.net.nsd.INsdManager
+android.net.nsd.NsdManager$ServiceHandler
 android.net.nsd.NsdManager
+android.net.shared.Inet4AddressUtils
+android.net.shared.InetAddressUtils
+android.net.sip.ISipService$Stub$Proxy
 android.net.sip.ISipService$Stub
 android.net.sip.ISipService
+android.net.sip.ISipSession$Stub
+android.net.sip.ISipSession
+android.net.sip.ISipSessionListener$Stub
+android.net.sip.ISipSessionListener
+android.net.sip.SipException
 android.net.sip.SipManager
-android.net.wifi.IWifiManager$Stub$Proxy
-android.net.wifi.IWifiManager$Stub
-android.net.wifi.IWifiManager
-android.net.wifi.ParcelUtil
-android.net.wifi.RttManager
-android.net.wifi.ScanResult$1
-android.net.wifi.ScanResult$InformationElement
-android.net.wifi.ScanResult$RadioChainInfo
-android.net.wifi.ScanResult
-android.net.wifi.SupplicantState$1
-android.net.wifi.SupplicantState
-android.net.wifi.WifiConfiguration$1
-android.net.wifi.WifiConfiguration$NetworkSelectionStatus
-android.net.wifi.WifiConfiguration$RecentFailure
-android.net.wifi.WifiConfiguration
-android.net.wifi.WifiEnterpriseConfig$1
-android.net.wifi.WifiEnterpriseConfig
-android.net.wifi.WifiInfo$1
-android.net.wifi.WifiInfo
-android.net.wifi.WifiManager$WifiLock
-android.net.wifi.WifiManager
+android.net.sip.SipProfile
+android.net.sip.SipSessionAdapter
+android.net.util.MultinetworkPolicyTracker$1
+android.net.util.MultinetworkPolicyTracker$SettingObserver
+android.net.util.MultinetworkPolicyTracker
+android.net.wifi.WifiNetworkScoreCache$CacheListener$1
 android.net.wifi.WifiNetworkScoreCache$CacheListener
 android.net.wifi.WifiNetworkScoreCache
-android.net.wifi.WifiScanner
-android.net.wifi.WifiSsid$1
-android.net.wifi.WifiSsid
-android.net.wifi.aware.WifiAwareManager
-android.net.wifi.p2p.IWifiP2pManager$Stub
-android.net.wifi.p2p.IWifiP2pManager
-android.net.wifi.p2p.WifiP2pManager
-android.net.wifi.rtt.WifiRttManager
+android.net.wifi.wificond.WifiCondManager
+android.nfc.BeamShareData$1
+android.nfc.BeamShareData
+android.nfc.IAppCallback$Stub$Proxy
 android.nfc.IAppCallback$Stub
 android.nfc.IAppCallback
 android.nfc.INfcAdapter$Stub$Proxy
@@ -2659,6 +3424,12 @@
 android.nfc.INfcTag$Stub$Proxy
 android.nfc.INfcTag$Stub
 android.nfc.INfcTag
+android.nfc.INfcUnlockHandler$Stub$Proxy
+android.nfc.INfcUnlockHandler$Stub
+android.nfc.INfcUnlockHandler
+android.nfc.ITagRemovedCallback$Stub$Proxy
+android.nfc.ITagRemovedCallback$Stub
+android.nfc.ITagRemovedCallback
 android.nfc.NfcActivityManager$NfcActivityState
 android.nfc.NfcActivityManager$NfcApplicationState
 android.nfc.NfcActivityManager
@@ -2666,6 +3437,10 @@
 android.nfc.NfcAdapter$CreateNdefMessageCallback
 android.nfc.NfcAdapter
 android.nfc.NfcManager
+android.nfc.Tag$1
+android.nfc.Tag
+android.nfc.TechListParcel$1
+android.nfc.TechListParcel
 android.opengl.EGL14
 android.opengl.EGL15
 android.opengl.EGLConfig
@@ -2691,50 +3466,72 @@
 android.opengl.Matrix
 android.opengl.Visibility
 android.os.-$$Lambda$Binder$IYUHVkWouPK_9CG2s8VwyWBt5_I
+android.os.-$$Lambda$Build$WrC6eL7oW2Zm9UDTcXXKr0DnOMw
+android.os.-$$Lambda$HidlSupport$CwwfmHPEvZaybUxpLzKdwrpQRfA
+android.os.-$$Lambda$HidlSupport$GHxmwrIWiKN83tl6aMQt_nV5hiw
 android.os.-$$Lambda$IyvVQC-0mKtsfXbnO0kDL64hrk0
+android.os.-$$Lambda$PowerManager$WakeLock$VvFzmRZ4ZGlXx7u3lSAJ_T-YUjw
 android.os.-$$Lambda$StrictMode$1yH8AK0bTwVwZOb9x8HoiSBdzr0
+android.os.-$$Lambda$StrictMode$AndroidBlockGuardPolicy$9nBulCQKaMajrWr41SB7f7YRT1I
+android.os.-$$Lambda$StrictMode$AndroidBlockGuardPolicy$FxZGA9KtfTewqdcxlUwvIe5Nx9I
+android.os.-$$Lambda$StrictMode$UFC_nI1x6u8ZwMQmA7bmj9NHZz4
 android.os.-$$Lambda$StrictMode$lu9ekkHJ2HMz0jd3F8K8MnhenxQ
 android.os.-$$Lambda$StrictMode$yZJXPvy2veRNA-xL_SWdXzX_OLg
 android.os.-$$Lambda$ThreadLocalWorkSource$IP9vRFCDG5YwbWbXAEGHH52B9IE
-android.os.-$$Lambda$Trace$2zLZ-Lc2kAXsVjw_nLYeNhqmGq0
 android.os.-$$Lambda$q1UvBdLgHRZVzc68BxdksTmbuCw
 android.os.AsyncResult
-android.os.AsyncTask
 android.os.AsyncTask$1
 android.os.AsyncTask$2
 android.os.AsyncTask$3
 android.os.AsyncTask$4
+android.os.AsyncTask$5
 android.os.AsyncTask$AsyncTaskResult
 android.os.AsyncTask$InternalHandler
 android.os.AsyncTask$SerialExecutor$1
 android.os.AsyncTask$SerialExecutor
 android.os.AsyncTask$Status
 android.os.AsyncTask$WorkerRunnable
+android.os.AsyncTask
 android.os.BadParcelableException
 android.os.BaseBundle$NoImagePreloadHolder
 android.os.BaseBundle
+android.os.BasicShellCommandHandler
 android.os.BatteryManager
+android.os.BatteryManagerInternal
 android.os.BatteryProperty$1
+android.os.BatteryProperty
+android.os.BatterySaverPolicyConfig$1
+android.os.BatterySaverPolicyConfig
+android.os.BatteryStats$2
 android.os.BatteryStats$BitDescription
 android.os.BatteryStats$ControllerActivityCounter
 android.os.BatteryStats$Counter
+android.os.BatteryStats$DailyItem
 android.os.BatteryStats$HistoryEventTracker
 android.os.BatteryStats$HistoryItem
+android.os.BatteryStats$HistoryPrinter
 android.os.BatteryStats$HistoryStepDetails
 android.os.BatteryStats$HistoryTag
 android.os.BatteryStats$IntToString
 android.os.BatteryStats$LevelStepTracker
 android.os.BatteryStats$LongCounter
 android.os.BatteryStats$LongCounterArray
+android.os.BatteryStats$PackageChange
 android.os.BatteryStats$Timer
+android.os.BatteryStats$Uid$Pid
 android.os.BatteryStats$Uid$Pkg$Serv
 android.os.BatteryStats$Uid$Pkg
+android.os.BatteryStats$Uid$Proc$ExcessivePower
 android.os.BatteryStats$Uid$Proc
 android.os.BatteryStats$Uid$Sensor
 android.os.BatteryStats$Uid$Wakelock
 android.os.BatteryStats$Uid
 android.os.BatteryStats
+android.os.BatteryStatsManager
+android.os.BestClock
 android.os.Binder$NoImagePreloadHolder
+android.os.Binder$PropagateWorkSourceTransactListener
+android.os.Binder$ProxyTransactListener
 android.os.Binder
 android.os.BinderProxy$NoImagePreloadHolder
 android.os.BinderProxy$ProxyMap
@@ -2747,7 +3544,10 @@
 android.os.CancellationSignal$OnCancelListener
 android.os.CancellationSignal$Transport
 android.os.CancellationSignal
+android.os.ChildZygoteProcess
 android.os.ConditionVariable
+android.os.CpuUsageInfo$1
+android.os.CpuUsageInfo
 android.os.DeadObjectException
 android.os.DeadSystemException
 android.os.Debug$MemoryInfo$1
@@ -2763,15 +3563,20 @@
 android.os.FactoryTest
 android.os.FileBridge$FileBridgeOutputStream
 android.os.FileObserver$ObserverThread
+android.os.FileUtils$1
 android.os.FileUtils
+android.os.GraphicsEnvironment$1
 android.os.GraphicsEnvironment$OpenGlDriverChoice
 android.os.GraphicsEnvironment
+android.os.Handler$BlockingRunnable
 android.os.Handler$Callback
 android.os.Handler$MessengerImpl
 android.os.Handler
 android.os.HandlerExecutor
 android.os.HandlerThread
 android.os.HardwarePropertiesManager
+android.os.HidlMemory
+android.os.HidlSupport$Mutable
 android.os.HidlSupport
 android.os.HwBinder
 android.os.HwBlob
@@ -2785,54 +3590,110 @@
 android.os.ICancellationSignal$Stub$Proxy
 android.os.ICancellationSignal$Stub
 android.os.ICancellationSignal
+android.os.IDeviceIdentifiersPolicyService$Stub$Proxy
 android.os.IDeviceIdentifiersPolicyService$Stub
 android.os.IDeviceIdentifiersPolicyService
 android.os.IDeviceIdleController$Stub$Proxy
 android.os.IDeviceIdleController$Stub
 android.os.IDeviceIdleController
+android.os.IDumpstate$Stub
+android.os.IDumpstate
+android.os.IExternalVibratorService$Stub
+android.os.IExternalVibratorService
 android.os.IHardwarePropertiesManager$Stub
 android.os.IHardwarePropertiesManager
 android.os.IHwBinder$DeathRecipient
 android.os.IHwBinder
 android.os.IHwInterface
+android.os.IIncidentCompanion$Stub
+android.os.IIncidentCompanion
+android.os.IIncidentManager$Stub$Proxy
+android.os.IIncidentManager$Stub
+android.os.IIncidentManager
+android.os.IInstalld$Stub$Proxy
+android.os.IInstalld$Stub
+android.os.IInstalld
 android.os.IInterface
 android.os.IMessenger$Stub$Proxy
 android.os.IMessenger$Stub
 android.os.IMessenger
+android.os.INetworkActivityListener$Stub$Proxy
+android.os.INetworkActivityListener$Stub
+android.os.INetworkActivityListener
 android.os.INetworkManagementService$Stub$Proxy
 android.os.INetworkManagementService$Stub
 android.os.INetworkManagementService
+android.os.IPermissionController$Stub
+android.os.IPermissionController
 android.os.IPowerManager$Stub$Proxy
 android.os.IPowerManager$Stub
 android.os.IPowerManager
+android.os.IProcessInfoService$Stub
+android.os.IProcessInfoService
+android.os.IProgressListener$Stub$Proxy
+android.os.IProgressListener$Stub
+android.os.IProgressListener
+android.os.IRecoverySystem$Stub
+android.os.IRecoverySystem
+android.os.IRemoteCallback$Stub$Proxy
 android.os.IRemoteCallback$Stub
 android.os.IRemoteCallback
+android.os.ISchedulingPolicyService$Stub
+android.os.ISchedulingPolicyService
+android.os.IServiceManager$Stub$Proxy
+android.os.IServiceManager$Stub
 android.os.IServiceManager
-android.os.IStatsManager$Stub$Proxy
-android.os.IStatsManager$Stub
-android.os.IStatsManager
+android.os.IStatsCompanionService$Stub
+android.os.IStatsCompanionService
+android.os.IStatsd$Stub
+android.os.IStatsd
+android.os.IStoraged$Stub$Proxy
+android.os.IStoraged$Stub
+android.os.IStoraged
 android.os.ISystemUpdateManager$Stub$Proxy
 android.os.ISystemUpdateManager$Stub
 android.os.ISystemUpdateManager
+android.os.IThermalEventListener$Stub$Proxy
+android.os.IThermalEventListener$Stub
+android.os.IThermalEventListener
+android.os.IThermalService$Stub$Proxy
+android.os.IThermalService$Stub
+android.os.IThermalService
+android.os.IThermalStatusListener$Stub$Proxy
+android.os.IThermalStatusListener$Stub
+android.os.IThermalStatusListener
+android.os.IUpdateLock$Stub
+android.os.IUpdateLock
 android.os.IUserManager$Stub$Proxy
 android.os.IUserManager$Stub
 android.os.IUserManager
 android.os.IVibratorService$Stub$Proxy
 android.os.IVibratorService$Stub
 android.os.IVibratorService
+android.os.IVold$Stub$Proxy
+android.os.IVold$Stub
+android.os.IVold
+android.os.IVoldListener$Stub
+android.os.IVoldListener
+android.os.IVoldTaskListener$Stub$Proxy
+android.os.IVoldTaskListener$Stub
+android.os.IVoldTaskListener
 android.os.IncidentManager
 android.os.LocaleList$1
 android.os.LocaleList
+android.os.Looper$Observer
 android.os.Looper
 android.os.MemoryFile
 android.os.Message$1
 android.os.Message
+android.os.MessageQueue$FileDescriptorRecord
 android.os.MessageQueue$IdleHandler
 android.os.MessageQueue$OnFileDescriptorEventListener
 android.os.MessageQueue
 android.os.Messenger$1
 android.os.Messenger
 android.os.NativeHandle
+android.os.NetworkOnMainThreadException
 android.os.OperationCanceledException
 android.os.Parcel$1
 android.os.Parcel$2
@@ -2843,6 +3704,7 @@
 android.os.ParcelFileDescriptor$AutoCloseInputStream
 android.os.ParcelFileDescriptor$AutoCloseOutputStream
 android.os.ParcelFileDescriptor
+android.os.ParcelFormatException
 android.os.ParcelUuid$1
 android.os.ParcelUuid
 android.os.Parcelable$ClassLoaderCreator
@@ -2855,16 +3717,28 @@
 android.os.PatternMatcher$1
 android.os.PatternMatcher
 android.os.PersistableBundle$1
+android.os.PersistableBundle$MyReadMapCallback
 android.os.PersistableBundle
 android.os.PooledStringReader
 android.os.PooledStringWriter
 android.os.PowerManager$WakeLock$1
 android.os.PowerManager$WakeLock
 android.os.PowerManager
+android.os.PowerManagerInternal$1
+android.os.PowerManagerInternal$LowPowerModeListener
+android.os.PowerManagerInternal
+android.os.PowerSaveState$1
+android.os.PowerSaveState$Builder
+android.os.PowerSaveState
+android.os.PowerWhitelistManager
+android.os.Process$ProcessStartResult
 android.os.Process
+android.os.ProxyFileDescriptorCallback
 android.os.RecoverySystem
 android.os.Registrant
 android.os.RegistrantList
+android.os.RemoteCallback$1
+android.os.RemoteCallback$2
 android.os.RemoteCallback$3
 android.os.RemoteCallback$OnResultListener
 android.os.RemoteCallback
@@ -2882,9 +3756,14 @@
 android.os.ServiceManagerProxy
 android.os.ServiceSpecificException
 android.os.SharedMemory$1
+android.os.SharedMemory$Closer
+android.os.SharedMemory$MemoryRegistration
+android.os.SharedMemory$Unmapper
 android.os.SharedMemory
 android.os.ShellCallback$1
 android.os.ShellCallback
+android.os.ShellCommand
+android.os.SimpleClock
 android.os.StatFs
 android.os.StrictMode$1
 android.os.StrictMode$2
@@ -2909,23 +3788,43 @@
 android.os.StrictMode$VmPolicy$Builder
 android.os.StrictMode$VmPolicy
 android.os.StrictMode
+android.os.SynchronousResultReceiver$Result
+android.os.SynchronousResultReceiver
+android.os.SystemClock$1
+android.os.SystemClock$2
+android.os.SystemClock$3
 android.os.SystemClock
 android.os.SystemProperties
+android.os.SystemService$State
+android.os.SystemService
 android.os.SystemUpdateManager
 android.os.SystemVibrator
+android.os.TelephonyServiceManager
+android.os.Temperature$1
+android.os.Temperature
 android.os.ThreadLocalWorkSource
+android.os.TokenWatcher$1
+android.os.TokenWatcher
 android.os.Trace
+android.os.TraceNameSupplier
+android.os.TransactionTooLargeException
 android.os.TransactionTracker
+android.os.UEventObserver$UEventThread
 android.os.UEventObserver
 android.os.UpdateLock
 android.os.UserHandle$1
 android.os.UserHandle
 android.os.UserManager$EnforcingUser$1
+android.os.UserManager$EnforcingUser
 android.os.UserManager$UserOperationException
 android.os.UserManager
 android.os.VibrationEffect$1
 android.os.VibrationEffect$OneShot$1
 android.os.VibrationEffect$OneShot
+android.os.VibrationEffect$Prebaked$1
+android.os.VibrationEffect$Prebaked
+android.os.VibrationEffect$Waveform$1
+android.os.VibrationEffect$Waveform
 android.os.VibrationEffect
 android.os.Vibrator
 android.os.VintfObject
@@ -2934,56 +3833,131 @@
 android.os.WorkSource$WorkChain$1
 android.os.WorkSource$WorkChain
 android.os.WorkSource
+android.os.ZygoteProcess$ZygoteState
 android.os.ZygoteProcess
 android.os.ZygoteStartFailedEx
+android.os.connectivity.CellularBatteryStats$1
+android.os.connectivity.CellularBatteryStats
+android.os.connectivity.GpsBatteryStats$1
+android.os.connectivity.GpsBatteryStats
+android.os.connectivity.WifiActivityEnergyInfo
+android.os.connectivity.WifiBatteryStats$1
+android.os.connectivity.WifiBatteryStats
+android.os.health.HealthKeys$Constant
+android.os.health.HealthKeys$SortedIntArray
 android.os.health.HealthStats
 android.os.health.HealthStatsParceler$1
 android.os.health.HealthStatsParceler
+android.os.health.HealthStatsWriter
 android.os.health.SystemHealthManager
 android.os.health.TimerStat$1
 android.os.health.TimerStat
 android.os.image.DynamicSystemClient
 android.os.image.DynamicSystemManager
+android.os.image.IDynamicSystemService$Stub
+android.os.image.IDynamicSystemService
+android.os.incremental.IncrementalManager
+android.os.storage.DiskInfo$1
+android.os.storage.DiskInfo
+android.os.storage.IObbActionListener$Stub$Proxy
 android.os.storage.IObbActionListener$Stub
 android.os.storage.IObbActionListener
+android.os.storage.IStorageEventListener$Stub$Proxy
+android.os.storage.IStorageEventListener$Stub
+android.os.storage.IStorageEventListener
 android.os.storage.IStorageManager$Stub$Proxy
 android.os.storage.IStorageManager$Stub
 android.os.storage.IStorageManager
+android.os.storage.IStorageShutdownObserver$Stub$Proxy
+android.os.storage.IStorageShutdownObserver$Stub
+android.os.storage.IStorageShutdownObserver
+android.os.storage.OnObbStateChangeListener
+android.os.storage.StorageEventListener
+android.os.storage.StorageManager$1
 android.os.storage.StorageManager$ObbActionListener
+android.os.storage.StorageManager$StorageEventListenerDelegate
+android.os.storage.StorageManager$StorageVolumeCallback
 android.os.storage.StorageManager
+android.os.storage.StorageManagerInternal$ExternalStorageMountPolicy
+android.os.storage.StorageManagerInternal
 android.os.storage.StorageVolume$1
 android.os.storage.StorageVolume
 android.os.storage.VolumeInfo$1
 android.os.storage.VolumeInfo$2
 android.os.storage.VolumeInfo
+android.os.storage.VolumeRecord$1
+android.os.storage.VolumeRecord
+android.os.strictmode.ContentUriWithoutPermissionViolation
+android.os.strictmode.CredentialProtectedWhileLockedViolation
+android.os.strictmode.CustomViolation
 android.os.strictmode.DiskReadViolation
+android.os.strictmode.DiskWriteViolation
+android.os.strictmode.ExplicitGcViolation
+android.os.strictmode.ImplicitDirectBootViolation
 android.os.strictmode.InstanceCountViolation
+android.os.strictmode.IntentReceiverLeakedViolation
+android.os.strictmode.LeakedClosableViolation
+android.os.strictmode.NetworkViolation
+android.os.strictmode.ResourceMismatchViolation
+android.os.strictmode.ServiceConnectionLeakedViolation
+android.os.strictmode.SqliteObjectLeakedViolation
+android.os.strictmode.UnbufferedIoViolation
+android.os.strictmode.UntaggedSocketViolation
 android.os.strictmode.Violation
-android.permission.-$$Lambda$PermissionControllerManager$RemoteService$L8N-TbqIPWKu7tyiOxbu_00YKss
+android.permission.-$$Lambda$PermissionControllerManager$Iy-7wiKMCV-MFSPGyIJxP_DSf8E
+android.permission.IOnPermissionsChangeListener$Stub
+android.permission.IOnPermissionsChangeListener
 android.permission.IPermissionController$Stub$Proxy
+android.permission.IPermissionController$Stub
 android.permission.IPermissionController
-android.permission.PermissionControllerManager$RemoteService
+android.permission.IPermissionManager$Stub$Proxy
+android.permission.IPermissionManager$Stub
+android.permission.IPermissionManager
 android.permission.PermissionControllerManager
 android.permission.PermissionManager$SplitPermissionInfo
+android.permission.PermissionManagerInternal
+android.preference.GenericInflater$Parent
+android.preference.GenericInflater
 android.preference.Preference$OnPreferenceChangeListener
 android.preference.Preference
 android.preference.PreferenceActivity
 android.preference.PreferenceFragment$OnPreferenceStartFragmentCallback
 android.preference.PreferenceFragment
+android.preference.PreferenceGroup
+android.preference.PreferenceInflater
 android.preference.PreferenceManager$OnPreferenceTreeClickListener
 android.preference.PreferenceManager
+android.preference.PreferenceScreen
+android.print.IPrintManager$Stub
+android.print.IPrintManager
+android.print.IPrintSpooler$Stub$Proxy
+android.print.IPrintSpooler$Stub
+android.print.IPrintSpooler
 android.print.PrintDocumentAdapter
+android.print.PrintJobInfo$1
+android.print.PrintJobInfo
 android.print.PrintManager
+android.printservice.PrintServiceInfo$1
+android.printservice.PrintServiceInfo
+android.privacy.DifferentialPrivacyConfig
+android.privacy.DifferentialPrivacyEncoder
+android.privacy.internal.longitudinalreporting.LongitudinalReportingEncoder
+android.privacy.internal.rappor.RapporConfig
+android.privacy.internal.rappor.RapporEncoder
 android.provider.-$$Lambda$FontsContract$3FDNQd-WsglsyDhif-aHVbzkfrA
 android.provider.-$$Lambda$FontsContract$rqfIZKvP1frnI9vP1hVA8jQN_RE
 android.provider.-$$Lambda$Settings$NameValueCache$qSyMM6rUAHCa-5rsP-atfAqR3sA
 android.provider.BaseColumns
+android.provider.BlockedNumberContract$SystemContract
+android.provider.BlockedNumberContract
 android.provider.CalendarContract$CalendarColumns
 android.provider.CalendarContract$CalendarSyncColumns
+android.provider.CalendarContract$Calendars
 android.provider.CalendarContract$Events
 android.provider.CalendarContract$EventsColumns
 android.provider.CalendarContract$Instances
 android.provider.CalendarContract$SyncColumns
+android.provider.CallLog$Calls
 android.provider.ContactsContract$CommonDataKinds$BaseTypes
 android.provider.ContactsContract$CommonDataKinds$Callable
 android.provider.ContactsContract$CommonDataKinds$CommonColumns
@@ -2999,27 +3973,21 @@
 android.provider.ContactsContract$DataColumns
 android.provider.ContactsContract$DataColumnsWithJoins
 android.provider.ContactsContract$DataUsageStatColumns
+android.provider.ContactsContract$PhoneLookup
+android.provider.ContactsContract$PhoneLookupColumns
 android.provider.ContactsContract$RawContactsColumns
 android.provider.ContactsContract$StatusColumns
 android.provider.ContactsContract
 android.provider.DeviceConfig$1
-android.provider.DeviceConfig$OnPropertyChangedListener
+android.provider.DeviceConfig$OnPropertiesChangedListener
 android.provider.DeviceConfig
 android.provider.Downloads$Impl
+android.provider.Downloads
 android.provider.FontRequest
 android.provider.FontsContract$1
 android.provider.FontsContract$FontFamilyResult
 android.provider.FontsContract$FontInfo
 android.provider.FontsContract
-android.provider.MediaStore$Audio$AudioColumns
-android.provider.MediaStore$Audio$Media
-android.provider.MediaStore$Files
-android.provider.MediaStore$Images$ImageColumns
-android.provider.MediaStore$Images$Media
-android.provider.MediaStore$MediaColumns
-android.provider.MediaStore$Video$Media
-android.provider.MediaStore$Video$VideoColumns
-android.provider.MediaStore
 android.provider.SearchIndexableData
 android.provider.SearchIndexableResource
 android.provider.SearchIndexablesProvider
@@ -3027,52 +3995,32 @@
 android.provider.Settings$Config
 android.provider.Settings$ContentProviderHolder
 android.provider.Settings$GenerationTracker
-android.provider.Settings$Global$1
-android.provider.Settings$Global$2
-android.provider.Settings$Global$3
 android.provider.Settings$Global
 android.provider.Settings$NameValueCache
 android.provider.Settings$NameValueTable
-android.provider.Settings$Secure$1
-android.provider.Settings$Secure$2
-android.provider.Settings$Secure$3
-android.provider.Settings$Secure$4
 android.provider.Settings$Secure
 android.provider.Settings$SettingNotFoundException
-android.provider.Settings$System$1
-android.provider.Settings$System$2
-android.provider.Settings$System$3
-android.provider.Settings$System$4
-android.provider.Settings$System$5
-android.provider.Settings$System$6
 android.provider.Settings$System
 android.provider.Settings
-android.provider.SettingsValidators$1
-android.provider.SettingsValidators$2
-android.provider.SettingsValidators$3
-android.provider.SettingsValidators$4
-android.provider.SettingsValidators$5
-android.provider.SettingsValidators$6
-android.provider.SettingsValidators$7
-android.provider.SettingsValidators$8
-android.provider.SettingsValidators$9
-android.provider.SettingsValidators$ComponentNameListValidator
-android.provider.SettingsValidators$DiscreteValueValidator
-android.provider.SettingsValidators$InclusiveFloatRangeValidator
-android.provider.SettingsValidators$InclusiveIntegerRangeValidator
-android.provider.SettingsValidators$PackageNameListValidator
-android.provider.SettingsValidators$Validator
-android.provider.SettingsValidators
+android.provider.Telephony$BaseMmsColumns
+android.provider.Telephony$CarrierColumns
 android.provider.Telephony$CarrierId$All
+android.provider.Telephony$CarrierId
 android.provider.Telephony$Carriers
+android.provider.Telephony$Mms
 android.provider.Telephony$ServiceStateTable
+android.provider.Telephony$SimInfo
 android.provider.Telephony$Sms
 android.provider.Telephony$TextBasedSmsColumns
+android.provider.UserDictionary$Words
 android.renderscript.RenderScriptCacheDir
 android.security.AttestedKeyPair
 android.security.Credentials
+android.security.FileIntegrityManager
 android.security.IKeyChainAliasCallback$Stub
 android.security.IKeyChainAliasCallback
+android.security.IKeyChainService$Stub$Proxy
+android.security.IKeyChainService$Stub
 android.security.IKeyChainService
 android.security.KeyChain$1
 android.security.KeyChain$AliasResponse
@@ -3080,10 +4028,17 @@
 android.security.KeyChain
 android.security.KeyChainAliasCallback
 android.security.KeyChainException
+android.security.KeyStore$KeyCharacteristicsCallbackResult
+android.security.KeyStore$KeyCharacteristicsPromise
+android.security.KeyStore$KeystoreResultPromise
+android.security.KeyStore$OperationPromise
+android.security.KeyStore$State
 android.security.KeyStore
 android.security.KeyStoreException
 android.security.NetworkSecurityPolicy
 android.security.Scrypt
+android.security.keymaster.IKeyAttestationApplicationIdProvider$Stub
+android.security.keymaster.IKeyAttestationApplicationIdProvider
 android.security.keymaster.KeyCharacteristics$1
 android.security.keymaster.KeyCharacteristics
 android.security.keymaster.KeymasterArgument$1
@@ -3093,9 +4048,13 @@
 android.security.keymaster.KeymasterBlob$1
 android.security.keymaster.KeymasterBlob
 android.security.keymaster.KeymasterBlobArgument
+android.security.keymaster.KeymasterBooleanArgument
 android.security.keymaster.KeymasterCertificateChain$1
 android.security.keymaster.KeymasterCertificateChain
+android.security.keymaster.KeymasterDateArgument
+android.security.keymaster.KeymasterDefs
 android.security.keymaster.KeymasterIntArgument
+android.security.keymaster.KeymasterLongArgument
 android.security.keymaster.OperationResult$1
 android.security.keymaster.OperationResult
 android.security.keystore.AndroidKeyStoreAuthenticatedAESCipherSpi$AdditionalAuthenticationDataStream
@@ -3107,27 +4066,54 @@
 android.security.keystore.AndroidKeyStoreCipherSpiBase
 android.security.keystore.AndroidKeyStoreKey
 android.security.keystore.AndroidKeyStoreKeyFactorySpi
+android.security.keystore.AndroidKeyStoreLoadStoreParameter
+android.security.keystore.AndroidKeyStorePrivateKey
 android.security.keystore.AndroidKeyStoreProvider
+android.security.keystore.AndroidKeyStoreSecretKey
 android.security.keystore.AndroidKeyStoreSpi
+android.security.keystore.ArrayUtils
 android.security.keystore.AttestationUtils
+android.security.keystore.IKeystoreKeyCharacteristicsCallback$Stub
+android.security.keystore.IKeystoreKeyCharacteristicsCallback
+android.security.keystore.IKeystoreOperationResultCallback$Stub
+android.security.keystore.IKeystoreOperationResultCallback
+android.security.keystore.IKeystoreResponseCallback$Stub
+android.security.keystore.IKeystoreResponseCallback
 android.security.keystore.IKeystoreService$Stub$Proxy
 android.security.keystore.IKeystoreService$Stub
 android.security.keystore.IKeystoreService
 android.security.keystore.KeyAttestationException
 android.security.keystore.KeyGenParameterSpec
 android.security.keystore.KeyPermanentlyInvalidatedException
+android.security.keystore.KeyProperties$Digest
 android.security.keystore.KeyProperties$KeyAlgorithm
+android.security.keystore.KeyStoreConnectException
 android.security.keystore.KeyStoreCryptoOperation
 android.security.keystore.KeyStoreCryptoOperationChunkedStreamer$MainDataStream
 android.security.keystore.KeyStoreCryptoOperationChunkedStreamer$Stream
 android.security.keystore.KeyStoreCryptoOperationChunkedStreamer
 android.security.keystore.KeyStoreCryptoOperationStreamer
 android.security.keystore.KeyStoreCryptoOperationUtils
+android.security.keystore.KeystoreResponse$1
+android.security.keystore.KeystoreResponse
 android.security.keystore.ParcelableKeyGenParameterSpec$1
 android.security.keystore.ParcelableKeyGenParameterSpec
 android.security.keystore.StrongBoxUnavailableException
 android.security.keystore.UserAuthArgs
+android.security.keystore.UserNotAuthenticatedException
+android.security.keystore.Utils
+android.security.keystore.recovery.KeyChainProtectionParams$1
+android.security.keystore.recovery.KeyChainProtectionParams
+android.security.keystore.recovery.KeyChainSnapshot$1
+android.security.keystore.recovery.KeyChainSnapshot
+android.security.keystore.recovery.KeyDerivationParams$1
+android.security.keystore.recovery.KeyDerivationParams
+android.security.keystore.recovery.RecoveryCertPath$1
+android.security.keystore.recovery.RecoveryCertPath
 android.security.keystore.recovery.RecoveryController
+android.security.keystore.recovery.WrappedApplicationKey$1
+android.security.keystore.recovery.WrappedApplicationKey
+android.security.keystore.recovery.X509CertificateParsingUtils
 android.security.net.config.ApplicationConfig
 android.security.net.config.CertificateSource
 android.security.net.config.CertificatesEntryRef
@@ -3137,6 +4123,7 @@
 android.security.net.config.DirectoryCertificateSource$3
 android.security.net.config.DirectoryCertificateSource$CertSelector
 android.security.net.config.DirectoryCertificateSource
+android.security.net.config.Domain
 android.security.net.config.KeyStoreCertificateSource
 android.security.net.config.KeyStoreConfigSource
 android.security.net.config.ManifestConfigSource$DefaultConfigSource
@@ -3148,19 +4135,88 @@
 android.security.net.config.NetworkSecurityTrustManager
 android.security.net.config.Pin
 android.security.net.config.PinSet
+android.security.net.config.ResourceCertificateSource
 android.security.net.config.RootTrustManager
 android.security.net.config.RootTrustManagerFactorySpi
 android.security.net.config.SystemCertificateSource
 android.security.net.config.TrustAnchor
 android.security.net.config.TrustedCertificateStoreAdapter
 android.security.net.config.UserCertificateSource
+android.security.net.config.WfaCertificateSource
 android.security.net.config.XmlConfigSource$ParserException
 android.security.net.config.XmlConfigSource
+android.service.appprediction.IPredictionService$Stub$Proxy
+android.service.appprediction.IPredictionService$Stub
+android.service.appprediction.IPredictionService
+android.service.autofill.AutofillServiceInfo
+android.service.autofill.FieldClassificationUserData
+android.service.autofill.FillResponse$1
+android.service.autofill.FillResponse
+android.service.autofill.IAutoFillService$Stub$Proxy
+android.service.autofill.IAutoFillService$Stub
+android.service.autofill.IAutoFillService
+android.service.autofill.UserData$1
+android.service.autofill.UserData
+android.service.autofill.augmented.IAugmentedAutofillService$Stub$Proxy
+android.service.autofill.augmented.IAugmentedAutofillService$Stub
+android.service.autofill.augmented.IAugmentedAutofillService
 android.service.carrier.CarrierIdentifier$1
 android.service.carrier.CarrierIdentifier
+android.service.carrier.CarrierMessagingServiceWrapper$CarrierMessagingCallbackWrapper
+android.service.carrier.CarrierMessagingServiceWrapper
+android.service.carrier.ICarrierService$Stub$Proxy
+android.service.carrier.ICarrierService$Stub
+android.service.carrier.ICarrierService
+android.service.contentcapture.ContentCaptureServiceInfo
+android.service.contentcapture.FlushMetrics$1
+android.service.contentcapture.FlushMetrics
+android.service.contentcapture.IContentCaptureService$Stub$Proxy
+android.service.contentcapture.IContentCaptureService$Stub
+android.service.contentcapture.IContentCaptureService
+android.service.dataloader.DataLoaderService
+android.service.dreams.DreamManagerInternal
 android.service.dreams.IDreamManager$Stub$Proxy
 android.service.dreams.IDreamManager$Stub
 android.service.dreams.IDreamManager
+android.service.dreams.IDreamService$Stub$Proxy
+android.service.dreams.IDreamService$Stub
+android.service.dreams.IDreamService
+android.service.euicc.EuiccProfileInfo$1
+android.service.euicc.EuiccProfileInfo
+android.service.euicc.GetEuiccProfileInfoListResult$1
+android.service.euicc.GetEuiccProfileInfoListResult
+android.service.euicc.IDeleteSubscriptionCallback$Stub
+android.service.euicc.IDeleteSubscriptionCallback
+android.service.euicc.IDownloadSubscriptionCallback$Stub
+android.service.euicc.IDownloadSubscriptionCallback
+android.service.euicc.IEraseSubscriptionsCallback$Stub
+android.service.euicc.IEraseSubscriptionsCallback
+android.service.euicc.IEuiccService$Stub$Proxy
+android.service.euicc.IEuiccService$Stub
+android.service.euicc.IEuiccService
+android.service.euicc.IGetDefaultDownloadableSubscriptionListCallback$Stub
+android.service.euicc.IGetDefaultDownloadableSubscriptionListCallback
+android.service.euicc.IGetDownloadableSubscriptionMetadataCallback$Stub
+android.service.euicc.IGetDownloadableSubscriptionMetadataCallback
+android.service.euicc.IGetEidCallback$Stub
+android.service.euicc.IGetEidCallback
+android.service.euicc.IGetEuiccInfoCallback$Stub
+android.service.euicc.IGetEuiccInfoCallback
+android.service.euicc.IGetEuiccProfileInfoListCallback$Stub
+android.service.euicc.IGetEuiccProfileInfoListCallback
+android.service.euicc.IGetOtaStatusCallback$Stub
+android.service.euicc.IGetOtaStatusCallback
+android.service.euicc.IRetainSubscriptionsForFactoryResetCallback$Stub
+android.service.euicc.IRetainSubscriptionsForFactoryResetCallback
+android.service.euicc.ISwitchToSubscriptionCallback$Stub
+android.service.euicc.ISwitchToSubscriptionCallback
+android.service.euicc.IUpdateSubscriptionNicknameCallback$Stub
+android.service.euicc.IUpdateSubscriptionNicknameCallback
+android.service.gatekeeper.GateKeeperResponse$1
+android.service.gatekeeper.GateKeeperResponse
+android.service.gatekeeper.IGateKeeperService$Stub$Proxy
+android.service.gatekeeper.IGateKeeperService$Stub
+android.service.gatekeeper.IGateKeeperService
 android.service.media.IMediaBrowserService$Stub$Proxy
 android.service.media.IMediaBrowserService$Stub
 android.service.media.IMediaBrowserService
@@ -3181,6 +4237,14 @@
 android.service.notification.Adjustment$1
 android.service.notification.Adjustment
 android.service.notification.Condition$1
+android.service.notification.Condition
+android.service.notification.ConditionProviderService$H
+android.service.notification.ConditionProviderService$Provider
+android.service.notification.ConditionProviderService
+android.service.notification.IConditionProvider$Stub$Proxy
+android.service.notification.IConditionProvider$Stub
+android.service.notification.IConditionProvider
+android.service.notification.INotificationListener$Stub$Proxy
 android.service.notification.INotificationListener$Stub
 android.service.notification.INotificationListener
 android.service.notification.IStatusBarNotificationHolder$Stub$Proxy
@@ -3199,26 +4263,66 @@
 android.service.notification.NotificationRankingUpdate
 android.service.notification.NotificationStats$1
 android.service.notification.NotificationStats
+android.service.notification.ScheduleCalendar
+android.service.notification.SnoozeCriterion$1
+android.service.notification.SnoozeCriterion
 android.service.notification.StatusBarNotification$1
 android.service.notification.StatusBarNotification
+android.service.notification.ZenModeConfig$1
+android.service.notification.ZenModeConfig$Diff
+android.service.notification.ZenModeConfig$EventInfo
+android.service.notification.ZenModeConfig$ScheduleInfo
 android.service.notification.ZenModeConfig$ZenRule$1
+android.service.notification.ZenModeConfig$ZenRule
+android.service.notification.ZenModeConfig
+android.service.notification.ZenPolicy$1
+android.service.notification.ZenPolicy$Builder
+android.service.notification.ZenPolicy
+android.service.oemlock.IOemLockService$Stub
+android.service.oemlock.IOemLockService
 android.service.oemlock.OemLockManager
+android.service.persistentdata.IPersistentDataBlockService$Stub$Proxy
 android.service.persistentdata.IPersistentDataBlockService$Stub
 android.service.persistentdata.IPersistentDataBlockService
 android.service.persistentdata.PersistentDataBlockManager
+android.service.textclassifier.ITextClassifierCallback$Stub$Proxy
+android.service.textclassifier.ITextClassifierCallback$Stub
+android.service.textclassifier.ITextClassifierCallback
 android.service.textclassifier.ITextClassifierService$Stub$Proxy
 android.service.textclassifier.ITextClassifierService$Stub
 android.service.textclassifier.ITextClassifierService
 android.service.textclassifier.TextClassifierService
+android.service.trust.ITrustAgentService$Stub$Proxy
+android.service.trust.ITrustAgentService$Stub
+android.service.trust.ITrustAgentService
+android.service.voice.IVoiceInteractionService$Stub$Proxy
 android.service.voice.IVoiceInteractionService$Stub
 android.service.voice.IVoiceInteractionService
+android.service.voice.IVoiceInteractionSession$Stub$Proxy
+android.service.voice.IVoiceInteractionSession$Stub
 android.service.voice.IVoiceInteractionSession
+android.service.voice.IVoiceInteractionSessionService$Stub$Proxy
 android.service.voice.IVoiceInteractionSessionService$Stub
 android.service.voice.IVoiceInteractionSessionService
+android.service.voice.VoiceInteractionManagerInternal
+android.service.voice.VoiceInteractionServiceInfo
+android.service.vr.IPersistentVrStateCallbacks$Stub$Proxy
+android.service.vr.IPersistentVrStateCallbacks$Stub
+android.service.vr.IPersistentVrStateCallbacks
+android.service.vr.IVrManager$Stub$Proxy
 android.service.vr.IVrManager$Stub
 android.service.vr.IVrManager
+android.service.vr.IVrStateCallbacks$Stub$Proxy
 android.service.vr.IVrStateCallbacks$Stub
 android.service.vr.IVrStateCallbacks
+android.service.wallpaper.IWallpaperConnection$Stub
+android.service.wallpaper.IWallpaperConnection
+android.service.wallpaper.IWallpaperEngine$Stub$Proxy
+android.service.wallpaper.IWallpaperEngine$Stub
+android.service.wallpaper.IWallpaperEngine
+android.service.wallpaper.IWallpaperService$Stub$Proxy
+android.service.wallpaper.IWallpaperService$Stub
+android.service.wallpaper.IWallpaperService
 android.speech.tts.ITextToSpeechCallback$Stub
 android.speech.tts.ITextToSpeechCallback
 android.speech.tts.ITextToSpeechService$Stub$Proxy
@@ -3228,10 +4332,15 @@
 android.speech.tts.TextToSpeech$OnInitListener
 android.speech.tts.TextToSpeech
 android.speech.tts.TtsEngines
+android.stats.devicepolicy.nano.StringList
+android.sysprop.-$$Lambda$TelephonyProperties$H4jN0VIBNpZQBeWYt6qS3DCe_M8
+android.sysprop.-$$Lambda$TelephonyProperties$kemQbl44ndTqXdQVvnYppJuQboQ
+android.sysprop.AdbProperties
 android.sysprop.CryptoProperties$state_values
 android.sysprop.CryptoProperties$type_values
 android.sysprop.CryptoProperties
 android.sysprop.DisplayProperties
+android.sysprop.TelephonyProperties
 android.sysprop.VoldProperties
 android.system.ErrnoException
 android.system.GaiException
@@ -3244,12 +4353,12 @@
 android.system.StructAddrinfo
 android.system.StructCapUserData
 android.system.StructCapUserHeader
-android.system.StructFlock
 android.system.StructGroupReq
 android.system.StructIfaddrs
 android.system.StructLinger
 android.system.StructPasswd
 android.system.StructPollfd
+android.system.StructRlimit
 android.system.StructStat
 android.system.StructStatVfs
 android.system.StructTimespec
@@ -3257,33 +4366,134 @@
 android.system.StructUcred
 android.system.StructUtsname
 android.system.UnixSocketAddress
+android.system.suspend.WakeLockInfo$1
+android.system.suspend.WakeLockInfo
+android.telecom.-$$Lambda$cyYWqCYT05eM23eLVm4oQ5DrYjw
+android.telecom.-$$Lambda$qa4s1Fm2YuohEunaJUJcmJXDXG0
+android.telecom.AudioState$1
+android.telecom.AudioState
 android.telecom.CallAudioState$1
+android.telecom.CallAudioState
+android.telecom.Conference$Listener
+android.telecom.Conference
+android.telecom.Conferenceable
+android.telecom.Connection$FailureSignalingConnection
+android.telecom.Connection$Listener
+android.telecom.Connection
+android.telecom.ConnectionRequest$1
+android.telecom.ConnectionRequest
+android.telecom.ConnectionService$1
+android.telecom.ConnectionService$2
+android.telecom.ConnectionService$3
+android.telecom.ConnectionService$4
+android.telecom.ConnectionService$5
+android.telecom.ConnectionService
+android.telecom.ConnectionServiceAdapter
 android.telecom.DefaultDialerManager
 android.telecom.DisconnectCause$1
+android.telecom.DisconnectCause
 android.telecom.Log
+android.telecom.Logging.-$$Lambda$L5F_SL2jOCUETYvgdB36aGwY50E
+android.telecom.Logging.-$$Lambda$SessionManager$VyH2gT1EjIvzDy_C9JfTT60CISM
+android.telecom.Logging.-$$Lambda$SessionManager$hhtZwTEbvO-fLNlAvB6Do9_2gW4
+android.telecom.Logging.EventManager$Event
+android.telecom.Logging.EventManager$EventListener
+android.telecom.Logging.EventManager$EventRecord
+android.telecom.Logging.EventManager
+android.telecom.Logging.Runnable$1
+android.telecom.Logging.Runnable
+android.telecom.Logging.Session$Info$1
+android.telecom.Logging.Session$Info
+android.telecom.Logging.Session
+android.telecom.Logging.SessionManager$ICurrentThreadId
+android.telecom.Logging.SessionManager$ISessionCleanupTimeoutMs
+android.telecom.Logging.SessionManager$ISessionIdQueryHandler
+android.telecom.Logging.SessionManager$ISessionListener
+android.telecom.Logging.SessionManager
+android.telecom.ParcelableConference$1
+android.telecom.ParcelableConference
+android.telecom.ParcelableConnection$1
+android.telecom.ParcelableConnection
 android.telecom.PhoneAccount$1
 android.telecom.PhoneAccount$Builder
 android.telecom.PhoneAccount
 android.telecom.PhoneAccountHandle$1
 android.telecom.PhoneAccountHandle
+android.telecom.RemoteConnectionManager
+android.telecom.StatusHints$1
+android.telecom.StatusHints
 android.telecom.TelecomManager
 android.telecom.VideoProfile$1
+android.telecom.VideoProfile
+android.telephony.-$$Lambda$DataFailCause$djkZSxdG-s-w2L5rQKiGu6OudyY
+android.telephony.-$$Lambda$MLKtmRGKP3e0WU7x_KyS5-Vg8q4
+android.telephony.-$$Lambda$NetworkRegistrationInfo$1JuZmO5PoYGZY8bHhZYwvmqwOB0
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$1M3m0i6211i2YjWyTDT7l0bJm3I
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$2cMrwdqnKBpixpApeIX38rmRLak
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$4NHt5Shg_DHV-T1IxfcQLHP5-j0
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$6czWSGzxct0CXPVO54T0aq05qls
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Hbn6-eZxY2p3rjOfStodI04A8E8
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$Q2A8FgYlU8_D6PD78tThGut_rTc
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$TqrkuLPlaG_ucU7VbLS4tnf8hG8
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$WYWtWHdkZDxBd9anjoxyZozPWHc
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$YY3srkIkMm8vTSFJZHoiKzUUrGs
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$bELzxgwsPigyVKYkAXBO2BjcSm8
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$jlNX9JiqGSNg9W49vDcKucKdeCI
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$nrGqSRBJrc3_EwotCDNwfKeizIo
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$oDAZqs8paeefe_3k_uRKV5plQW4
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$okPCYOx4UxYuvUHlM2iS425QGIg
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$uC5syhzl229gIpaK7Jfs__OCJxQ
+android.telephony.-$$Lambda$PhoneStateListener$IPhoneStateListenerStub$yvQnAlFGg5EWDG2vcA9X-4xnalA
+android.telephony.-$$Lambda$SubscriptionManager$R_uORt9bKcmEo6JnjiGP2KgjIOQ
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$3Kis6wL1IbLustWe9A2o4-2YpGo
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$MLDtRnX1dj1RKFdjgIsOvcQxhA0
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$b_92_3ZijRrdEa9yLyFA5xu19OM
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$mpe0Kh92VEQmEtmo60oqykdvnBE
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$o3geRfUaRT9tnqKKZbu1EbUxw4Q
+android.telephony.-$$Lambda$TelephonyFrameworkInitializer$sQClc4rjc9ydh0nXpY79gr33av4
+android.telephony.AccessNetworkConstants$AccessNetworkType
 android.telephony.AccessNetworkConstants$TransportType
+android.telephony.AccessNetworkConstants
+android.telephony.AccessNetworkUtils
+android.telephony.AnomalyReporter
+android.telephony.CallAttributes$1
+android.telephony.CallAttributes
+android.telephony.CallQuality$1
+android.telephony.CallQuality
 android.telephony.CarrierConfigManager$Gps
 android.telephony.CarrierConfigManager
+android.telephony.CarrierRestrictionRules$1
+android.telephony.CarrierRestrictionRules
+android.telephony.CellConfigLte$1
+android.telephony.CellConfigLte
 android.telephony.CellIdentity$1
 android.telephony.CellIdentity
+android.telephony.CellIdentityCdma$1
+android.telephony.CellIdentityCdma
 android.telephony.CellIdentityGsm$1
+android.telephony.CellIdentityGsm
 android.telephony.CellIdentityLte$1
 android.telephony.CellIdentityLte
+android.telephony.CellIdentityNr$1
+android.telephony.CellIdentityNr
+android.telephony.CellIdentityTdscdma$1
+android.telephony.CellIdentityTdscdma
 android.telephony.CellIdentityWcdma$1
 android.telephony.CellIdentityWcdma
 android.telephony.CellInfo$1
 android.telephony.CellInfo
+android.telephony.CellInfoCdma$1
+android.telephony.CellInfoCdma
 android.telephony.CellInfoGsm$1
+android.telephony.CellInfoGsm
 android.telephony.CellInfoLte$1
 android.telephony.CellInfoLte
+android.telephony.CellInfoNr$1
+android.telephony.CellInfoNr
+android.telephony.CellInfoTdscdma$1
+android.telephony.CellInfoTdscdma
 android.telephony.CellInfoWcdma$1
+android.telephony.CellInfoWcdma
 android.telephony.CellLocation
 android.telephony.CellSignalStrength
 android.telephony.CellSignalStrengthCdma$1
@@ -3300,31 +4510,61 @@
 android.telephony.CellSignalStrengthWcdma
 android.telephony.ClientRequestStats$1
 android.telephony.ClientRequestStats
+android.telephony.DataConnectionRealTimeInfo$1
+android.telephony.DataConnectionRealTimeInfo
+android.telephony.DataFailCause$1
+android.telephony.DataFailCause
 android.telephony.DataSpecificRegistrationInfo$1
 android.telephony.DataSpecificRegistrationInfo
+android.telephony.ICellInfoCallback$Stub$Proxy
+android.telephony.ICellInfoCallback$Stub
+android.telephony.ICellInfoCallback
+android.telephony.INetworkService$Stub$Proxy
 android.telephony.INetworkService$Stub
 android.telephony.INetworkService
 android.telephony.INetworkServiceCallback$Stub
 android.telephony.INetworkServiceCallback
+android.telephony.IccOpenLogicalChannelResponse$1
+android.telephony.IccOpenLogicalChannelResponse
+android.telephony.ImsiEncryptionInfo$1
+android.telephony.ImsiEncryptionInfo
+android.telephony.JapanesePhoneNumberFormatter
+android.telephony.LocationAccessPolicy$LocationPermissionQuery$Builder
+android.telephony.LocationAccessPolicy$LocationPermissionQuery
+android.telephony.LocationAccessPolicy$LocationPermissionResult
 android.telephony.LocationAccessPolicy
 android.telephony.LteVopsSupportInfo$1
 android.telephony.LteVopsSupportInfo
 android.telephony.ModemActivityInfo$1
+android.telephony.ModemActivityInfo$TransmitPower
 android.telephony.ModemActivityInfo
-android.telephony.ModemInfo$1
-android.telephony.ModemInfo
+android.telephony.NeighboringCellInfo$1
+android.telephony.NeighboringCellInfo
 android.telephony.NetworkRegistrationInfo$1
+android.telephony.NetworkRegistrationInfo$Builder
 android.telephony.NetworkRegistrationInfo
+android.telephony.NetworkScanRequest$1
+android.telephony.NetworkScanRequest
 android.telephony.NetworkService$INetworkServiceWrapper
 android.telephony.NetworkService$NetworkServiceHandler
 android.telephony.NetworkService$NetworkServiceProvider
 android.telephony.NetworkService
 android.telephony.NetworkServiceCallback
+android.telephony.PackageChangeReceiver
 android.telephony.PhoneCapability$1
 android.telephony.PhoneCapability
+android.telephony.PhoneNumberRange$1
+android.telephony.PhoneNumberRange
 android.telephony.PhoneNumberUtils
 android.telephony.PhoneStateListener$IPhoneStateListenerStub
 android.telephony.PhoneStateListener
+android.telephony.PhysicalChannelConfig$1
+android.telephony.PhysicalChannelConfig$Builder
+android.telephony.PhysicalChannelConfig
+android.telephony.PreciseCallState$1
+android.telephony.PreciseCallState
+android.telephony.PreciseDataConnectionState$1
+android.telephony.PreciseDataConnectionState
 android.telephony.RadioAccessFamily$1
 android.telephony.RadioAccessFamily
 android.telephony.Rlog
@@ -3333,29 +4573,54 @@
 android.telephony.SignalStrength$1
 android.telephony.SignalStrength
 android.telephony.SmsManager
+android.telephony.SmsMessage
 android.telephony.SubscriptionInfo$1
 android.telephony.SubscriptionInfo
-android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$1
+android.telephony.SubscriptionManager$OnOpportunisticSubscriptionsChangedListener
 android.telephony.SubscriptionManager$OnSubscriptionsChangedListener$OnSubscriptionsChangedListenerHandler
 android.telephony.SubscriptionManager$OnSubscriptionsChangedListener
 android.telephony.SubscriptionManager
+android.telephony.SubscriptionPlan$1
+android.telephony.SubscriptionPlan
+android.telephony.TelephonyFrameworkInitializer
 android.telephony.TelephonyHistogram$1
 android.telephony.TelephonyHistogram
 android.telephony.TelephonyManager$5
 android.telephony.TelephonyManager$7
 android.telephony.TelephonyManager$MultiSimVariants
 android.telephony.TelephonyManager
+android.telephony.TelephonyRegistryManager
 android.telephony.UiccAccessRule$1
+android.telephony.UiccAccessRule
+android.telephony.UiccCardInfo$1
+android.telephony.UiccCardInfo
 android.telephony.UiccSlotInfo$1
 android.telephony.UiccSlotInfo
+android.telephony.VisualVoicemailSmsFilterSettings$1
+android.telephony.VisualVoicemailSmsFilterSettings$Builder
+android.telephony.VisualVoicemailSmsFilterSettings
 android.telephony.VoiceSpecificRegistrationInfo$1
 android.telephony.VoiceSpecificRegistrationInfo
+android.telephony.cdma.CdmaCellLocation
 android.telephony.data.ApnSetting$1
+android.telephony.data.ApnSetting$Builder
 android.telephony.data.ApnSetting
+android.telephony.data.DataCallResponse$1
+android.telephony.data.DataCallResponse
+android.telephony.data.DataProfile$1
+android.telephony.data.DataProfile$Builder
+android.telephony.data.DataProfile
+android.telephony.data.DataService$DataCallListChangedIndication
 android.telephony.data.DataService$DataServiceHandler
 android.telephony.data.DataService$DataServiceProvider
+android.telephony.data.DataService$DeactivateDataCallRequest
 android.telephony.data.DataService$IDataServiceWrapper
+android.telephony.data.DataService$SetDataProfileRequest
+android.telephony.data.DataService$SetInitialAttachApnRequest
+android.telephony.data.DataService$SetupDataCallRequest
 android.telephony.data.DataService
+android.telephony.data.DataServiceCallback
+android.telephony.data.IDataService$Stub$Proxy
 android.telephony.data.IDataService$Stub
 android.telephony.data.IDataService
 android.telephony.data.IDataServiceCallback$Stub
@@ -3366,56 +4631,85 @@
 android.telephony.euicc.EuiccManager
 android.telephony.gsm.GsmCellLocation
 android.telephony.ims.-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$4YNlUy9HsD02E7Sbv2VeVtbao08
-android.telephony.ims.-$$Lambda$ImsMmTelManager$CapabilityCallback$CapabilityBinder$gK2iK9ZQ3GDeuMTfhRd7yjiYlO8
 android.telephony.ims.-$$Lambda$ProvisioningManager$Callback$CallbackBinder$R_8jXQuOM7aV7dIwYBzcWwV-YpM
-android.telephony.ims.-$$Lambda$ProvisioningManager$Callback$CallbackBinder$rMBayJlNIko46WAqcRq_ggxbfrY
+android.telephony.ims.ImsCallForwardInfo$1
+android.telephony.ims.ImsCallForwardInfo
+android.telephony.ims.ImsCallProfile$1
+android.telephony.ims.ImsCallProfile
+android.telephony.ims.ImsException
+android.telephony.ims.ImsExternalCallState$1
+android.telephony.ims.ImsExternalCallState
+android.telephony.ims.ImsManager
 android.telephony.ims.ImsMmTelManager$CapabilityCallback$CapabilityBinder
 android.telephony.ims.ImsMmTelManager$CapabilityCallback
-android.telephony.ims.ImsMmTelManager$RegistrationCallback$RegistrationBinder$1
-android.telephony.ims.ImsMmTelManager$RegistrationCallback$RegistrationBinder
 android.telephony.ims.ImsMmTelManager$RegistrationCallback
+android.telephony.ims.ImsMmTelManager
 android.telephony.ims.ImsReasonInfo$1
 android.telephony.ims.ImsReasonInfo
 android.telephony.ims.ImsService$1
 android.telephony.ims.ImsService$Listener
 android.telephony.ims.ImsService
+android.telephony.ims.ImsSsInfo$1
+android.telephony.ims.ImsSsInfo
 android.telephony.ims.ImsUtListener
 android.telephony.ims.ProvisioningManager$Callback$CallbackBinder
 android.telephony.ims.ProvisioningManager$Callback
-android.telephony.ims.RcsManager
-android.telephony.ims.RcsMessageStore
+android.telephony.ims.RegistrationManager$1
+android.telephony.ims.RegistrationManager$RegistrationCallback
+android.telephony.ims.RegistrationManager
+android.telephony.ims.aidl.IImsCapabilityCallback$Stub$Proxy
 android.telephony.ims.aidl.IImsCapabilityCallback$Stub
 android.telephony.ims.aidl.IImsCapabilityCallback
+android.telephony.ims.aidl.IImsConfig$Stub$Proxy
 android.telephony.ims.aidl.IImsConfig$Stub
 android.telephony.ims.aidl.IImsConfig
+android.telephony.ims.aidl.IImsConfigCallback$Stub$Proxy
 android.telephony.ims.aidl.IImsConfigCallback$Stub
 android.telephony.ims.aidl.IImsConfigCallback
+android.telephony.ims.aidl.IImsMmTelFeature$Stub$Proxy
 android.telephony.ims.aidl.IImsMmTelFeature$Stub
 android.telephony.ims.aidl.IImsMmTelFeature
+android.telephony.ims.aidl.IImsMmTelListener$Stub$Proxy
 android.telephony.ims.aidl.IImsMmTelListener$Stub
 android.telephony.ims.aidl.IImsMmTelListener
+android.telephony.ims.aidl.IImsRcsFeature
 android.telephony.ims.aidl.IImsRegistration$Stub
 android.telephony.ims.aidl.IImsRegistration
+android.telephony.ims.aidl.IImsRegistrationCallback$Stub$Proxy
 android.telephony.ims.aidl.IImsRegistrationCallback$Stub
 android.telephony.ims.aidl.IImsRegistrationCallback
+android.telephony.ims.aidl.IImsServiceController$Stub$Proxy
 android.telephony.ims.aidl.IImsServiceController$Stub
 android.telephony.ims.aidl.IImsServiceController
 android.telephony.ims.aidl.IImsServiceControllerListener$Stub
 android.telephony.ims.aidl.IImsServiceControllerListener
+android.telephony.ims.aidl.IImsSmsListener$Stub$Proxy
 android.telephony.ims.aidl.IImsSmsListener$Stub
 android.telephony.ims.aidl.IImsSmsListener
+android.telephony.ims.feature.CapabilityChangeRequest$1
+android.telephony.ims.feature.CapabilityChangeRequest$CapabilityPair
+android.telephony.ims.feature.CapabilityChangeRequest
+android.telephony.ims.feature.ImsFeature$1
+android.telephony.ims.feature.ImsFeature$2
 android.telephony.ims.feature.ImsFeature$Capabilities
+android.telephony.ims.feature.ImsFeature$CapabilityCallbackProxy
 android.telephony.ims.feature.ImsFeature
 android.telephony.ims.feature.MmTelFeature$1
 android.telephony.ims.feature.MmTelFeature$Listener
 android.telephony.ims.feature.MmTelFeature$MmTelCapabilities
 android.telephony.ims.feature.MmTelFeature
 android.telephony.ims.stub.-$$Lambda$ImsConfigImplBase$yL4863k-FoQyqg_FX2mWsLMqbyA
+android.telephony.ims.stub.-$$Lambda$ImsRegistrationImplBase$cWwTXSDsk-bWPbsDJYI--DUBMnE
+android.telephony.ims.stub.-$$Lambda$ImsRegistrationImplBase$s7PspXVbCf1Q_WSzodP2glP9TjI
+android.telephony.ims.stub.-$$Lambda$ImsRegistrationImplBase$sbjuTvW-brOSWMR74UInSZEIQB0
+android.telephony.ims.stub.-$$Lambda$ImsRegistrationImplBase$wwtkoeOtGwMjG5I0-ZTfjNpGU-s
 android.telephony.ims.stub.ImsConfigImplBase$ImsConfigStub
 android.telephony.ims.stub.ImsConfigImplBase
 android.telephony.ims.stub.ImsEcbmImplBase$1
 android.telephony.ims.stub.ImsEcbmImplBase
+android.telephony.ims.stub.ImsFeatureConfiguration$1
 android.telephony.ims.stub.ImsFeatureConfiguration$FeatureSlotPair
+android.telephony.ims.stub.ImsFeatureConfiguration
 android.telephony.ims.stub.ImsMultiEndpointImplBase$1
 android.telephony.ims.stub.ImsMultiEndpointImplBase
 android.telephony.ims.stub.ImsRegistrationImplBase$1
@@ -3435,6 +4729,7 @@
 android.text.BidiFormatter
 android.text.BoringLayout$Metrics
 android.text.BoringLayout
+android.text.CharSequenceCharacterIterator
 android.text.ClipboardManager
 android.text.DynamicLayout$Builder
 android.text.DynamicLayout$ChangeWatcher
@@ -3451,16 +4746,31 @@
 android.text.Html$HtmlParser
 android.text.Html$TagHandler
 android.text.Html
+android.text.HtmlToSpannedConverter$Big
+android.text.HtmlToSpannedConverter$Blockquote
+android.text.HtmlToSpannedConverter$Bold
+android.text.HtmlToSpannedConverter$Bullet
+android.text.HtmlToSpannedConverter$Heading
 android.text.HtmlToSpannedConverter$Href
+android.text.HtmlToSpannedConverter$Italic
+android.text.HtmlToSpannedConverter$Monospace
+android.text.HtmlToSpannedConverter$Small
+android.text.HtmlToSpannedConverter$Strikethrough
+android.text.HtmlToSpannedConverter$Sub
+android.text.HtmlToSpannedConverter$Super
+android.text.HtmlToSpannedConverter$Underline
 android.text.HtmlToSpannedConverter
 android.text.Hyphenator
 android.text.InputFilter$LengthFilter
 android.text.InputFilter
 android.text.InputType
+android.text.Layout$1
 android.text.Layout$Alignment
 android.text.Layout$Directions
 android.text.Layout$Ellipsizer
+android.text.Layout$HorizontalMeasurementProvider
 android.text.Layout$SpannedEllipsizer
+android.text.Layout$TabStops
 android.text.Layout
 android.text.MeasuredParagraph
 android.text.NoCopySpan$Concrete
@@ -3469,6 +4779,7 @@
 android.text.PackedObjectVector
 android.text.ParcelableSpan
 android.text.PrecomputedText$ParagraphInfo
+android.text.PrecomputedText$Params$Builder
 android.text.PrecomputedText$Params
 android.text.PrecomputedText
 android.text.Selection$END
@@ -3504,11 +4815,13 @@
 android.text.TextUtils$EllipsizeCallback
 android.text.TextUtils$SimpleStringSplitter
 android.text.TextUtils$StringSplitter
+android.text.TextUtils$StringWithRemovedChars
 android.text.TextUtils$TruncateAt
 android.text.TextUtils
 android.text.TextWatcher
 android.text.format.DateFormat
 android.text.format.DateUtils
+android.text.format.Formatter$BytesResult
 android.text.format.Formatter
 android.text.format.Time$TimeCalculator
 android.text.format.Time
@@ -3517,6 +4830,10 @@
 android.text.method.ArrowKeyMovementMethod
 android.text.method.BaseKeyListener
 android.text.method.BaseMovementMethod
+android.text.method.DateKeyListener
+android.text.method.DateTimeKeyListener
+android.text.method.DialerKeyListener
+android.text.method.DigitsKeyListener
 android.text.method.KeyListener
 android.text.method.LinkMovementMethod
 android.text.method.MetaKeyKeyListener
@@ -3532,44 +4849,70 @@
 android.text.method.TextKeyListener$Capitalize
 android.text.method.TextKeyListener$SettingsObserver
 android.text.method.TextKeyListener
+android.text.method.TimeKeyListener
 android.text.method.Touch
 android.text.method.TransformationMethod2
 android.text.method.TransformationMethod
 android.text.method.WordIterator
 android.text.style.AbsoluteSizeSpan
+android.text.style.AccessibilityClickableSpan$1
+android.text.style.AccessibilityClickableSpan
+android.text.style.AccessibilityURLSpan
+android.text.style.AlignmentSpan$Standard
 android.text.style.AlignmentSpan
 android.text.style.BackgroundColorSpan
+android.text.style.BulletSpan
 android.text.style.CharacterStyle
 android.text.style.ClickableSpan
 android.text.style.DynamicDrawableSpan
 android.text.style.EasyEditSpan
 android.text.style.ForegroundColorSpan
 android.text.style.ImageSpan
+android.text.style.LeadingMarginSpan$LeadingMarginSpan2
+android.text.style.LeadingMarginSpan$Standard
 android.text.style.LeadingMarginSpan
+android.text.style.LineBackgroundSpan$Standard
 android.text.style.LineBackgroundSpan
+android.text.style.LineHeightSpan$Standard
+android.text.style.LineHeightSpan$WithDensity
 android.text.style.LineHeightSpan
+android.text.style.LocaleSpan
 android.text.style.MetricAffectingSpan
 android.text.style.ParagraphStyle
+android.text.style.QuoteSpan
 android.text.style.RelativeSizeSpan
 android.text.style.ReplacementSpan
+android.text.style.ScaleXSpan
 android.text.style.SpellCheckSpan
+android.text.style.StrikethroughSpan
 android.text.style.StyleSpan
+android.text.style.SubscriptSpan
+android.text.style.SuggestionRangeSpan
 android.text.style.SuggestionSpan$1
 android.text.style.SuggestionSpan
+android.text.style.SuperscriptSpan
 android.text.style.TabStopSpan
 android.text.style.TextAppearanceSpan
+android.text.style.TtsSpan$Builder
+android.text.style.TtsSpan$SemioticClassBuilder
+android.text.style.TtsSpan$TelephoneBuilder
+android.text.style.TtsSpan
+android.text.style.TypefaceSpan
 android.text.style.URLSpan
 android.text.style.UnderlineSpan
 android.text.style.UpdateAppearance
 android.text.style.UpdateLayout
 android.text.style.WrapTogetherSpan
+android.text.util.-$$Lambda$Linkify$7J_-cMhIF2bcttjkxA2jDFP8sKw
 android.text.util.Linkify$1
 android.text.util.Linkify$2
 android.text.util.Linkify$3
 android.text.util.Linkify$MatchFilter
 android.text.util.Linkify$TransformFilter
+android.text.util.Linkify
 android.text.util.Rfc822Token
 android.text.util.Rfc822Tokenizer
+android.transition.ArcMotion
 android.transition.AutoTransition
 android.transition.ChangeBounds$1
 android.transition.ChangeBounds$2
@@ -3582,18 +4925,34 @@
 android.transition.ChangeImageTransform$1
 android.transition.ChangeImageTransform$2
 android.transition.ChangeImageTransform
+android.transition.ChangeScroll
 android.transition.ChangeTransform$1
 android.transition.ChangeTransform$2
 android.transition.ChangeTransform
+android.transition.CircularPropagation
+android.transition.Explode
 android.transition.Fade$1
 android.transition.Fade$FadeAnimatorListener
 android.transition.Fade
 android.transition.PathMotion
+android.transition.PatternPathMotion
+android.transition.Recolor
 android.transition.Scene
+android.transition.Slide$1
+android.transition.Slide$2
+android.transition.Slide$3
+android.transition.Slide$4
+android.transition.Slide$5
+android.transition.Slide$6
+android.transition.Slide$CalculateSlide
+android.transition.Slide$CalculateSlideHorizontal
+android.transition.Slide$CalculateSlideVertical
+android.transition.Slide
 android.transition.Transition$1
 android.transition.Transition$2
 android.transition.Transition$3
 android.transition.Transition$AnimationInfo
+android.transition.Transition$EpicenterCallback
 android.transition.Transition$TransitionListener
 android.transition.Transition
 android.transition.TransitionInflater
@@ -3601,12 +4960,14 @@
 android.transition.TransitionManager$MultiListener$1
 android.transition.TransitionManager$MultiListener
 android.transition.TransitionManager
+android.transition.TransitionPropagation
 android.transition.TransitionSet$TransitionSetListener
 android.transition.TransitionSet
 android.transition.TransitionUtils
 android.transition.TransitionValues
 android.transition.TransitionValuesMaps
 android.transition.Visibility
+android.transition.VisibilityPropagation
 android.util.AndroidException
 android.util.AndroidRuntimeException
 android.util.ArrayMap$1
@@ -3615,6 +4976,7 @@
 android.util.ArraySet
 android.util.AtomicFile
 android.util.AttributeSet
+android.util.BackupUtils
 android.util.Base64$Coder
 android.util.Base64$Decoder
 android.util.Base64$Encoder
@@ -3632,8 +4994,11 @@
 android.util.EventLog$Event
 android.util.EventLog
 android.util.ExceptionUtils
+android.util.FastImmutableArraySet$FastIterator
+android.util.FastImmutableArraySet
 android.util.FeatureFlagUtils
 android.util.FloatProperty
+android.util.Half
 android.util.IconDrawableFactory
 android.util.IntArray
 android.util.IntProperty
@@ -3641,8 +5006,13 @@
 android.util.JsonReader
 android.util.JsonScope
 android.util.JsonToken
+android.util.JsonWriter$1
 android.util.JsonWriter
+android.util.KeyValueListParser$IntValue
 android.util.KeyValueListParser
+android.util.KeyValueSettingObserver$SettingObserver
+android.util.KeyValueSettingObserver
+android.util.LauncherIcons
 android.util.LocalLog
 android.util.Log$1
 android.util.Log$ImmediateLogWriter
@@ -3651,7 +5021,9 @@
 android.util.Log$TerribleFailureHandler
 android.util.Log
 android.util.LogPrinter
+android.util.LogWriter
 android.util.LongArray
+android.util.LongArrayQueue
 android.util.LongSparseArray
 android.util.LongSparseLongArray
 android.util.LruCache
@@ -3666,11 +5038,15 @@
 android.util.MemoryIntArray
 android.util.MergedConfiguration$1
 android.util.MergedConfiguration
+android.util.MutableBoolean
 android.util.MutableInt
 android.util.MutableLong
+android.util.NtpTrustedTime
+android.util.PackageUtils
 android.util.Pair
 android.util.PathParser$PathData
 android.util.PathParser
+android.util.Patterns
 android.util.Pools$Pool
 android.util.Pools$SimplePool
 android.util.Pools$SynchronizedPool
@@ -3679,6 +5055,9 @@
 android.util.Property
 android.util.Range
 android.util.Rational
+android.util.RecurrenceRule$NonrecurringIterator
+android.util.RecurrenceRule$RecurringIterator
+android.util.RecurrenceRule
 android.util.Singleton
 android.util.Size
 android.util.SizeF
@@ -3687,31 +5066,80 @@
 android.util.SparseBooleanArray
 android.util.SparseIntArray
 android.util.SparseLongArray
+android.util.SparseSetArray
+android.util.Spline$LinearSpline
+android.util.Spline$MonotoneCubicSpline
+android.util.Spline
 android.util.StateSet
 android.util.StatsLog
 android.util.StatsLogInternal
 android.util.SuperNotCalledException
 android.util.TimeUtils
+android.util.TimedRemoteCaller
 android.util.TimingLogger
 android.util.TimingsTraceLog
+android.util.TrustedTime
 android.util.TypedValue
+android.util.UtilConfig
 android.util.Xml
 android.util.XmlPullAttributes
+android.util.apk.ApkSignatureSchemeV2Verifier$VerifiedSigner
+android.util.apk.ApkSignatureSchemeV2Verifier
+android.util.apk.ApkSignatureSchemeV3Verifier$PlatformNotSupportedException
+android.util.apk.ApkSignatureSchemeV3Verifier$VerifiedSigner
+android.util.apk.ApkSignatureSchemeV3Verifier
+android.util.apk.ApkSignatureVerifier
+android.util.apk.ApkSigningBlockUtils$1
+android.util.apk.ApkSigningBlockUtils$MultipleDigestDataDigester
+android.util.apk.ApkSigningBlockUtils
+android.util.apk.ByteBufferDataSource
+android.util.apk.ByteBufferFactory
+android.util.apk.DataDigester
+android.util.apk.DataSource
+android.util.apk.MemoryMappedFileDataSource
+android.util.apk.SignatureInfo
+android.util.apk.SignatureNotFoundException
+android.util.apk.VerbatimX509Certificate
+android.util.apk.VerityBuilder$BufferedDigester
+android.util.apk.VerityBuilder$VerityResult
+android.util.apk.VerityBuilder
+android.util.apk.WrappedX509Certificate
+android.util.apk.ZipUtils
+android.util.jar.StrictJarFile$EntryIterator
+android.util.jar.StrictJarFile$FDStream
+android.util.jar.StrictJarFile$JarFileInputStream
+android.util.jar.StrictJarFile$ZipInflaterInputStream
 android.util.jar.StrictJarFile
+android.util.jar.StrictJarManifest$Chunk
+android.util.jar.StrictJarManifest
+android.util.jar.StrictJarManifestReader
+android.util.jar.StrictJarVerifier$VerifierEntry
+android.util.jar.StrictJarVerifier
+android.util.proto.EncodedBuffer
+android.util.proto.ProtoInputStream
 android.util.proto.ProtoOutputStream
 android.util.proto.ProtoParseException
 android.util.proto.ProtoStream
 android.util.proto.WireTypeMismatchException
+android.view.-$$Lambda$1kvF4JuyM42-wmyDVPAIYdPz1jE
 android.view.-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc
 android.view.-$$Lambda$FocusFinder$FocusSorter$h0f2ZYL6peSaaEeCCkAoYs_YZvU
 android.view.-$$Lambda$FocusFinder$FocusSorter$kW7K1t9q7Y62V38r-7g6xRzqqq8
 android.view.-$$Lambda$FocusFinder$P8rLvOJhymJH5ALAgUjGaM5gxKA
 android.view.-$$Lambda$FocusFinder$Pgx6IETuqCkrhJYdiBes48tolG4
 android.view.-$$Lambda$InsetsController$Cj7UJrCkdHvJAZ_cYKrXuTMsjz8
+android.view.-$$Lambda$PYGleuqIeCxjTD1pJqqx1opFv1g
 android.view.-$$Lambda$QI1s392qW8l6mC24bcy9050SkuY
-android.view.-$$Lambda$SurfaceView$Cs7TGTdA1lXf9qW8VOJAfEsMjdk
 android.view.-$$Lambda$SurfaceView$SyyzxOgxKwZMRgiiTGcRYbOU5JY
+android.view.-$$Lambda$SurfaceView$w68OV7dB_zKVNsA-r0IrAUtyWas
+android.view.-$$Lambda$ThreadedRenderer$ydBD-R1iP5u-97XYakm-jKvC1b4
 android.view.-$$Lambda$View$llq76MkPXP4bNcb9oJt_msw0fnQ
+android.view.-$$Lambda$ViewRootImpl$IReiNMSbDakZSGbIZuL_ifaFWn8
+android.view.-$$Lambda$ViewRootImpl$dznxCZGM2R1fsBljsJKomLjBRoM
+android.view.-$$Lambda$WindowManagerGlobal$2bR3FsEm4EdRwuXfttH0wA2xOW4
+android.view.-$$Lambda$WlJa6OPA72p3gYtA3nVKC7Z1tGY
+android.view.-$$Lambda$cZhmLzK8aetUdx4VlP9w5jR7En0
+android.view.-$$Lambda$dj1hfDQd0iEp_uBDBPEUMMYJJwk
 android.view.AbsSavedState$1
 android.view.AbsSavedState$2
 android.view.AbsSavedState
@@ -3722,6 +5150,8 @@
 android.view.ActionMode
 android.view.ActionProvider$SubUiVisibilityListener
 android.view.ActionProvider
+android.view.AppTransitionAnimationSpec$1
+android.view.AppTransitionAnimationSpec
 android.view.Choreographer$1
 android.view.Choreographer$2
 android.view.Choreographer$3
@@ -3740,6 +5170,8 @@
 android.view.Display$Mode$1
 android.view.Display$Mode
 android.view.Display
+android.view.DisplayAddress$Physical$1
+android.view.DisplayAddress$Physical
 android.view.DisplayAddress
 android.view.DisplayAdjustments
 android.view.DisplayCutout$Bounds
@@ -3750,6 +5182,8 @@
 android.view.DisplayInfo$1
 android.view.DisplayInfo
 android.view.DisplayListCanvas
+android.view.DragEvent$1
+android.view.DragEvent
 android.view.FallbackEventHandler
 android.view.FocusFinder$1
 android.view.FocusFinder$FocusSorter
@@ -3765,16 +5199,51 @@
 android.view.GestureDetector$OnGestureListener
 android.view.GestureDetector$SimpleOnGestureListener
 android.view.GestureDetector
+android.view.GestureExclusionTracker$GestureExclusionViewInfo
+android.view.GestureExclusionTracker
 android.view.Gravity
 android.view.HandlerActionQueue$HandlerAction
 android.view.HandlerActionQueue
+android.view.IAppTransitionAnimationSpecsFuture$Stub$Proxy
+android.view.IAppTransitionAnimationSpecsFuture$Stub
+android.view.IAppTransitionAnimationSpecsFuture
+android.view.IDisplayFoldListener$Stub$Proxy
+android.view.IDisplayFoldListener$Stub
+android.view.IDisplayFoldListener
+android.view.IDockedStackListener$Stub$Proxy
+android.view.IDockedStackListener$Stub
+android.view.IDockedStackListener
 android.view.IGraphicsStats$Stub$Proxy
 android.view.IGraphicsStats$Stub
 android.view.IGraphicsStats
+android.view.IGraphicsStatsCallback$Stub$Proxy
 android.view.IGraphicsStatsCallback$Stub
 android.view.IGraphicsStatsCallback
+android.view.IOnKeyguardExitResult$Stub$Proxy
+android.view.IOnKeyguardExitResult$Stub
+android.view.IOnKeyguardExitResult
+android.view.IPinnedStackController$Stub$Proxy
+android.view.IPinnedStackController$Stub
+android.view.IPinnedStackController
+android.view.IPinnedStackListener$Stub$Proxy
+android.view.IPinnedStackListener$Stub
+android.view.IPinnedStackListener
+android.view.IRecentsAnimationRunner$Stub$Proxy
+android.view.IRecentsAnimationRunner$Stub
+android.view.IRecentsAnimationRunner
+android.view.IRemoteAnimationRunner$Stub$Proxy
+android.view.IRemoteAnimationRunner$Stub
+android.view.IRemoteAnimationRunner
+android.view.IRotationWatcher$Stub$Proxy
 android.view.IRotationWatcher$Stub
 android.view.IRotationWatcher
+android.view.ISystemGestureExclusionListener$Stub$Proxy
+android.view.ISystemGestureExclusionListener$Stub
+android.view.ISystemGestureExclusionListener
+android.view.IWallpaperVisibilityListener$Stub$Proxy
+android.view.IWallpaperVisibilityListener$Stub
+android.view.IWallpaperVisibilityListener
+android.view.IWindow$Stub$Proxy
 android.view.IWindow$Stub
 android.view.IWindow
 android.view.IWindowId
@@ -3784,6 +5253,7 @@
 android.view.IWindowSession$Stub$Proxy
 android.view.IWindowSession$Stub
 android.view.IWindowSession
+android.view.IWindowSessionCallback$Stub$Proxy
 android.view.IWindowSessionCallback$Stub
 android.view.IWindowSessionCallback
 android.view.ImeInsetsSourceConsumer
@@ -3804,25 +5274,32 @@
 android.view.InputQueue$FinishedInputEventCallback
 android.view.InputQueue
 android.view.InputWindowHandle
+android.view.InsetsAnimationControlCallbacks
 android.view.InsetsController
 android.view.InsetsSource$1
 android.view.InsetsSource
 android.view.InsetsSourceConsumer
+android.view.InsetsSourceControl$1
+android.view.InsetsSourceControl
 android.view.InsetsState$1
 android.view.InsetsState
 android.view.KeyCharacterMap$1
 android.view.KeyCharacterMap$FallbackAction
+android.view.KeyCharacterMap$UnavailableException
 android.view.KeyCharacterMap
 android.view.KeyEvent$1
 android.view.KeyEvent$Callback
 android.view.KeyEvent$DispatcherState
 android.view.KeyEvent
+android.view.LayoutInflater$BlinkLayout$1
+android.view.LayoutInflater$BlinkLayout
 android.view.LayoutInflater$Factory2
 android.view.LayoutInflater$Factory
 android.view.LayoutInflater$FactoryMerger
 android.view.LayoutInflater$Filter
 android.view.LayoutInflater
 android.view.Menu
+android.view.MenuInflater$InflatedOnMenuItemClickListener
 android.view.MenuInflater$MenuState
 android.view.MenuInflater
 android.view.MenuItem$OnActionExpandListener
@@ -3836,15 +5313,26 @@
 android.view.OrientationEventListener$SensorEventListenerImpl
 android.view.OrientationEventListener
 android.view.PointerIcon$1
+android.view.PointerIcon$2
 android.view.PointerIcon
+android.view.RemotableViewMethod
+android.view.RemoteAnimationAdapter$1
+android.view.RemoteAnimationAdapter
+android.view.RemoteAnimationDefinition$1
+android.view.RemoteAnimationDefinition$RemoteAnimationAdapterEntry$1
+android.view.RemoteAnimationDefinition$RemoteAnimationAdapterEntry
+android.view.RemoteAnimationDefinition
 android.view.RenderNodeAnimator$1
+android.view.RenderNodeAnimator$DelayedAnimationHelper
 android.view.RenderNodeAnimator
 android.view.RenderNodeAnimatorSetHelper
+android.view.RoundScrollbarRenderer
 android.view.ScaleGestureDetector$1
 android.view.ScaleGestureDetector$OnScaleGestureListener
 android.view.ScaleGestureDetector$SimpleOnScaleGestureListener
 android.view.ScaleGestureDetector
 android.view.SearchEvent
+android.view.SoundEffectConstants
 android.view.SubMenu
 android.view.Surface$1
 android.view.Surface$CompatibleCanvas
@@ -3853,9 +5341,10 @@
 android.view.SurfaceControl$1
 android.view.SurfaceControl$Builder
 android.view.SurfaceControl$CieXyz
+android.view.SurfaceControl$DesiredDisplayConfigSpecs
 android.view.SurfaceControl$DisplayPrimaries
-android.view.SurfaceControl$PhysicalDisplayInfo
 android.view.SurfaceControl$ScreenshotGraphicBuffer
+android.view.SurfaceControl$Transaction$1
 android.view.SurfaceControl$Transaction
 android.view.SurfaceControl
 android.view.SurfaceHolder$Callback2
@@ -3864,10 +5353,8 @@
 android.view.SurfaceSession
 android.view.SurfaceView$1
 android.view.SurfaceView$2
-android.view.SurfaceView$3
 android.view.SurfaceView
 android.view.TextureLayer
-android.view.TextureView$1
 android.view.TextureView$SurfaceTextureListener
 android.view.TextureView
 android.view.ThreadedRenderer$DrawCallbacks
@@ -3891,10 +5378,13 @@
 android.view.View$9
 android.view.View$AccessibilityDelegate
 android.view.View$AttachInfo$Callbacks
+android.view.View$AttachInfo$InvalidateInfo
 android.view.View$AttachInfo
 android.view.View$BaseSavedState$1
 android.view.View$BaseSavedState
+android.view.View$CheckForLongPress
 android.view.View$CheckForTap
+android.view.View$DeclaredOnClickListener
 android.view.View$ForegroundInfo
 android.view.View$ListenerInfo
 android.view.View$MatchIdPredicate
@@ -3928,6 +5418,8 @@
 android.view.ViewGroup$1
 android.view.ViewGroup$2
 android.view.ViewGroup$4
+android.view.ViewGroup$ChildListForAccessibility
+android.view.ViewGroup$ChildListForAutoFillOrContentCapture
 android.view.ViewGroup$LayoutParams
 android.view.ViewGroup$MarginLayoutParams
 android.view.ViewGroup$OnHierarchyChangeListener
@@ -3943,16 +5435,21 @@
 android.view.ViewOverlay
 android.view.ViewParent
 android.view.ViewPropertyAnimator$1
+android.view.ViewPropertyAnimator$2
+android.view.ViewPropertyAnimator$3
 android.view.ViewPropertyAnimator$AnimatorEventListener
 android.view.ViewPropertyAnimator$NameValuesHolder
 android.view.ViewPropertyAnimator$PropertyBundle
 android.view.ViewPropertyAnimator
 android.view.ViewRootImpl$1
+android.view.ViewRootImpl$2
+android.view.ViewRootImpl$3
 android.view.ViewRootImpl$4
 android.view.ViewRootImpl$AccessibilityInteractionConnection
 android.view.ViewRootImpl$AccessibilityInteractionConnectionManager
 android.view.ViewRootImpl$ActivityConfigCallback
 android.view.ViewRootImpl$AsyncInputStage
+android.view.ViewRootImpl$CalledFromWrongThreadException
 android.view.ViewRootImpl$ConfigChangedCallback
 android.view.ViewRootImpl$ConsumeBatchedInputImmediatelyRunnable
 android.view.ViewRootImpl$ConsumeBatchedInputRunnable
@@ -3965,6 +5462,7 @@
 android.view.ViewRootImpl$NativePreImeInputStage
 android.view.ViewRootImpl$QueuedInputEvent
 android.view.ViewRootImpl$SendWindowContentChangedAccessibilityEvent
+android.view.ViewRootImpl$SurfaceChangedCallback
 android.view.ViewRootImpl$SyntheticInputStage
 android.view.ViewRootImpl$SyntheticJoystickHandler$JoystickAxesState
 android.view.ViewRootImpl$SyntheticJoystickHandler
@@ -3973,6 +5471,7 @@
 android.view.ViewRootImpl$SyntheticTouchNavigationHandler
 android.view.ViewRootImpl$SyntheticTrackballHandler
 android.view.ViewRootImpl$SystemUiVisibilityInfo
+android.view.ViewRootImpl$TakenSurfaceHolder
 android.view.ViewRootImpl$TrackballAxis
 android.view.ViewRootImpl$TraversalRunnable
 android.view.ViewRootImpl$UnhandledKeyManager
@@ -3981,21 +5480,26 @@
 android.view.ViewRootImpl$ViewRootHandler
 android.view.ViewRootImpl$W
 android.view.ViewRootImpl$WindowInputEventReceiver
-android.view.ViewRootImpl$WindowStoppedCallback
 android.view.ViewRootImpl
+android.view.ViewStructure$HtmlInfo
 android.view.ViewStructure
 android.view.ViewStub$OnInflateListener
+android.view.ViewStub$ViewReplaceRunnable
 android.view.ViewStub
 android.view.ViewTreeObserver$CopyOnWriteArray$Access
 android.view.ViewTreeObserver$CopyOnWriteArray
 android.view.ViewTreeObserver$InternalInsetsInfo
 android.view.ViewTreeObserver$OnComputeInternalInsetsListener
 android.view.ViewTreeObserver$OnDrawListener
+android.view.ViewTreeObserver$OnEnterAnimationCompleteListener
 android.view.ViewTreeObserver$OnGlobalFocusChangeListener
 android.view.ViewTreeObserver$OnGlobalLayoutListener
 android.view.ViewTreeObserver$OnPreDrawListener
 android.view.ViewTreeObserver$OnScrollChangedListener
 android.view.ViewTreeObserver$OnTouchModeChangeListener
+android.view.ViewTreeObserver$OnWindowAttachListener
+android.view.ViewTreeObserver$OnWindowFocusChangeListener
+android.view.ViewTreeObserver$OnWindowShownListener
 android.view.ViewTreeObserver
 android.view.Window$Callback
 android.view.Window$OnFrameMetricsAvailableListener
@@ -4009,11 +5513,13 @@
 android.view.WindowContentFrameStats$1
 android.view.WindowContentFrameStats
 android.view.WindowId$1
+android.view.WindowInsets$Builder
 android.view.WindowInsets$Type
 android.view.WindowInsets
 android.view.WindowInsetsController
 android.view.WindowLeaked
 android.view.WindowManager$BadTokenException
+android.view.WindowManager$InvalidDisplayException
 android.view.WindowManager$LayoutParams$1
 android.view.WindowManager$LayoutParams
 android.view.WindowManager
@@ -4021,10 +5527,15 @@
 android.view.WindowManagerGlobal$2
 android.view.WindowManagerGlobal
 android.view.WindowManagerImpl
+android.view.WindowManagerPolicyConstants$PointerEventListener
+android.view.WindowManagerPolicyConstants
+android.view.accessibility.-$$Lambda$AccessibilityManager$1$o7fCplskH9NlBwJvkl6NoZ0L_BA
+android.view.accessibility.-$$Lambda$AccessibilityManager$yzw5NYY7_MfAQ9gLy3mVllchaXo
 android.view.accessibility.AccessibilityEvent$1
 android.view.accessibility.AccessibilityEvent
 android.view.accessibility.AccessibilityEventSource
 android.view.accessibility.AccessibilityManager$1
+android.view.accessibility.AccessibilityManager$AccessibilityServicesStateChangeListener
 android.view.accessibility.AccessibilityManager$AccessibilityStateChangeListener
 android.view.accessibility.AccessibilityManager$HighTextContrastChangeListener
 android.view.accessibility.AccessibilityManager$MyCallback
@@ -4032,6 +5543,7 @@
 android.view.accessibility.AccessibilityManager
 android.view.accessibility.AccessibilityNodeIdManager
 android.view.accessibility.AccessibilityNodeInfo$1
+android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction$1
 android.view.accessibility.AccessibilityNodeInfo$AccessibilityAction
 android.view.accessibility.AccessibilityNodeInfo
 android.view.accessibility.AccessibilityNodeProvider
@@ -4041,6 +5553,7 @@
 android.view.accessibility.CaptioningManager$CaptioningChangeListener
 android.view.accessibility.CaptioningManager$MyContentObserver
 android.view.accessibility.CaptioningManager
+android.view.accessibility.IAccessibilityInteractionConnection$Stub$Proxy
 android.view.accessibility.IAccessibilityInteractionConnection$Stub
 android.view.accessibility.IAccessibilityInteractionConnection
 android.view.accessibility.IAccessibilityInteractionConnectionCallback$Stub$Proxy
@@ -4049,8 +5562,11 @@
 android.view.accessibility.IAccessibilityManager$Stub$Proxy
 android.view.accessibility.IAccessibilityManager$Stub
 android.view.accessibility.IAccessibilityManager
+android.view.accessibility.IAccessibilityManagerClient$Stub$Proxy
 android.view.accessibility.IAccessibilityManagerClient$Stub
 android.view.accessibility.IAccessibilityManagerClient
+android.view.accessibility.WeakSparseArray$WeakReferenceWithId
+android.view.accessibility.WeakSparseArray
 android.view.animation.AccelerateDecelerateInterpolator
 android.view.animation.AccelerateInterpolator
 android.view.animation.AlphaAnimation
@@ -4065,13 +5581,20 @@
 android.view.animation.AnimationUtils$1
 android.view.animation.AnimationUtils$AnimationState
 android.view.animation.AnimationUtils
+android.view.animation.AnticipateInterpolator
+android.view.animation.AnticipateOvershootInterpolator
 android.view.animation.BaseInterpolator
+android.view.animation.BounceInterpolator
+android.view.animation.ClipRectAnimation
+android.view.animation.CycleInterpolator
 android.view.animation.DecelerateInterpolator
+android.view.animation.GridLayoutAnimationController
 android.view.animation.Interpolator
 android.view.animation.LayoutAnimationController
 android.view.animation.LinearInterpolator
 android.view.animation.OvershootInterpolator
 android.view.animation.PathInterpolator
+android.view.animation.RotateAnimation
 android.view.animation.ScaleAnimation
 android.view.animation.Transformation
 android.view.animation.TranslateAnimation
@@ -4083,27 +5606,54 @@
 android.view.autofill.AutofillManager$AutofillClient
 android.view.autofill.AutofillManager$AutofillManagerClient
 android.view.autofill.AutofillManager
+android.view.autofill.AutofillManagerInternal
 android.view.autofill.AutofillValue$1
 android.view.autofill.AutofillValue
 android.view.autofill.Helper
 android.view.autofill.IAutoFillManager$Stub$Proxy
 android.view.autofill.IAutoFillManager$Stub
 android.view.autofill.IAutoFillManager
+android.view.autofill.IAutoFillManagerClient$Stub$Proxy
 android.view.autofill.IAutoFillManagerClient$Stub
 android.view.autofill.IAutoFillManagerClient
 android.view.autofill.IAutofillWindowPresenter
+android.view.contentcapture.ContentCaptureCondition$1
+android.view.contentcapture.ContentCaptureCondition
+android.view.contentcapture.ContentCaptureContext$1
+android.view.contentcapture.ContentCaptureContext
+android.view.contentcapture.ContentCaptureHelper
 android.view.contentcapture.ContentCaptureManager$ContentCaptureClient
 android.view.contentcapture.ContentCaptureManager
+android.view.contentcapture.DataRemovalRequest$1
+android.view.contentcapture.DataRemovalRequest
+android.view.contentcapture.IContentCaptureManager$Stub
+android.view.contentcapture.IContentCaptureManager
+android.view.inputmethod.-$$Lambda$InputMethodManager$dfnCauFoZCf-HfXs1QavrkwWDf0
+android.view.inputmethod.-$$Lambda$InputMethodManager$iDWn3IGSUFqIcs8Py42UhfrshxI
 android.view.inputmethod.BaseInputConnection
+android.view.inputmethod.CompletionInfo$1
+android.view.inputmethod.CompletionInfo
 android.view.inputmethod.ComposingText
+android.view.inputmethod.CorrectionInfo$1
+android.view.inputmethod.CorrectionInfo
+android.view.inputmethod.CursorAnchorInfo$1
 android.view.inputmethod.CursorAnchorInfo$Builder
+android.view.inputmethod.CursorAnchorInfo
 android.view.inputmethod.EditorInfo$1
 android.view.inputmethod.EditorInfo
 android.view.inputmethod.ExtractedText$1
 android.view.inputmethod.ExtractedText
+android.view.inputmethod.ExtractedTextRequest$1
+android.view.inputmethod.ExtractedTextRequest
+android.view.inputmethod.InputBinding$1
+android.view.inputmethod.InputBinding
 android.view.inputmethod.InputConnection
 android.view.inputmethod.InputConnectionInspector
 android.view.inputmethod.InputConnectionWrapper
+android.view.inputmethod.InputContentInfo$1
+android.view.inputmethod.InputContentInfo
+android.view.inputmethod.InputMethod$SessionCallback
+android.view.inputmethod.InputMethod
 android.view.inputmethod.InputMethodInfo$1
 android.view.inputmethod.InputMethodInfo
 android.view.inputmethod.InputMethodManager$1
@@ -4113,39 +5663,106 @@
 android.view.inputmethod.InputMethodManager$ImeInputEventSender
 android.view.inputmethod.InputMethodManager$PendingEvent
 android.view.inputmethod.InputMethodManager
+android.view.inputmethod.InputMethodSession$EventCallback
+android.view.inputmethod.InputMethodSession
 android.view.inputmethod.InputMethodSubtype$1
+android.view.inputmethod.InputMethodSubtype$InputMethodSubtypeBuilder
 android.view.inputmethod.InputMethodSubtype
 android.view.inputmethod.InputMethodSubtypeArray
-android.view.inputmethod.InputMethodSystemProperty
 android.view.textclassifier.-$$Lambda$0biFK4yZBmWN1EO2wtnXskzuEcE
 android.view.textclassifier.-$$Lambda$9N8WImc0VBjy2oxI_Gk5_Pbye_A
+android.view.textclassifier.-$$Lambda$ActionsSuggestionsHelper$6oTtcn9bDE-u-8FbiyGdntqoQG0
+android.view.textclassifier.-$$Lambda$ActionsSuggestionsHelper$YTQv8oPvlmJL4tITUFD4z4JWKRk
+android.view.textclassifier.-$$Lambda$ActionsSuggestionsHelper$sY0w9od2zcl4YFel0lG4VB3vf7I
 android.view.textclassifier.-$$Lambda$EntityConfidence$YPh8hwgSYYK8OyQ1kFlQngc71Q0
 android.view.textclassifier.-$$Lambda$L_UQMPjXwBN0ch4zL2dD82nf9RI
 android.view.textclassifier.-$$Lambda$NxwbyZSxofZ4Z5SQhfXmtLQ1nxk
-android.view.textclassifier.-$$Lambda$TextClassificationManager$JIaezIJbMig_-kVzN6oArzkTsJE
+android.view.textclassifier.-$$Lambda$OGSS2qx6njxlnp0dnKb4lA3jnw8
 android.view.textclassifier.-$$Lambda$TextClassifierImpl$RRbXefHgcUymI9-P95ArUyMvfbw
+android.view.textclassifier.-$$Lambda$TextClassifierImpl$ftq-sQqJYwUdrdbbr9jz3p4AWos
+android.view.textclassifier.-$$Lambda$TextClassifierImpl$iSt_Guet-O6Vtdk0MA4z-Z4lzaM
 android.view.textclassifier.-$$Lambda$XeE_KI7QgMKzF9vYRSoFWAolyuA
 android.view.textclassifier.-$$Lambda$jJq8RXuVdjYF3lPq-77PEw1NJLM
+android.view.textclassifier.ActionsModelParamsSupplier$ActionsModelParams
+android.view.textclassifier.ActionsModelParamsSupplier
+android.view.textclassifier.ActionsSuggestionsHelper$PersonEncoder
+android.view.textclassifier.ActionsSuggestionsHelper
+android.view.textclassifier.ConversationAction$1
+android.view.textclassifier.ConversationAction$Builder
+android.view.textclassifier.ConversationAction
+android.view.textclassifier.ConversationActions$1
+android.view.textclassifier.ConversationActions$Message$1
+android.view.textclassifier.ConversationActions$Message
+android.view.textclassifier.ConversationActions$Request$1
+android.view.textclassifier.ConversationActions$Request
+android.view.textclassifier.ConversationActions
 android.view.textclassifier.EntityConfidence$1
 android.view.textclassifier.EntityConfidence
+android.view.textclassifier.ExtrasUtils
 android.view.textclassifier.GenerateLinksLogger
+android.view.textclassifier.Log
+android.view.textclassifier.ModelFileManager$ModelFile
 android.view.textclassifier.ModelFileManager$ModelFileSupplierImpl
 android.view.textclassifier.ModelFileManager
+android.view.textclassifier.SelectionEvent$1
+android.view.textclassifier.SelectionEvent
+android.view.textclassifier.SelectionSessionLogger$SignatureParser
 android.view.textclassifier.SelectionSessionLogger
+android.view.textclassifier.SystemTextClassifier$BlockingCallback
+android.view.textclassifier.SystemTextClassifier$ResponseReceiver
 android.view.textclassifier.SystemTextClassifier
 android.view.textclassifier.TextClassification$1
 android.view.textclassifier.TextClassification$Builder
+android.view.textclassifier.TextClassification$Request$1
+android.view.textclassifier.TextClassification$Request
 android.view.textclassifier.TextClassification
 android.view.textclassifier.TextClassificationConstants
+android.view.textclassifier.TextClassificationContext$1
+android.view.textclassifier.TextClassificationContext$Builder
+android.view.textclassifier.TextClassificationContext
 android.view.textclassifier.TextClassificationManager$SettingsObserver
 android.view.textclassifier.TextClassificationManager
 android.view.textclassifier.TextClassificationSessionFactory
+android.view.textclassifier.TextClassificationSessionId$1
+android.view.textclassifier.TextClassificationSessionId
 android.view.textclassifier.TextClassifier$1
+android.view.textclassifier.TextClassifier$EntityConfig$1
+android.view.textclassifier.TextClassifier$EntityConfig$Builder
+android.view.textclassifier.TextClassifier$EntityConfig
+android.view.textclassifier.TextClassifier$Utils
 android.view.textclassifier.TextClassifier
+android.view.textclassifier.TextClassifierEvent$1
+android.view.textclassifier.TextClassifierEvent$ConversationActionsEvent$1
+android.view.textclassifier.TextClassifierEvent$ConversationActionsEvent
+android.view.textclassifier.TextClassifierEvent$LanguageDetectionEvent$1
+android.view.textclassifier.TextClassifierEvent$LanguageDetectionEvent
+android.view.textclassifier.TextClassifierEvent$TextLinkifyEvent$1
+android.view.textclassifier.TextClassifierEvent$TextLinkifyEvent
+android.view.textclassifier.TextClassifierEvent$TextSelectionEvent$1
+android.view.textclassifier.TextClassifierEvent$TextSelectionEvent
+android.view.textclassifier.TextClassifierEvent
 android.view.textclassifier.TextClassifierEventTronLogger
 android.view.textclassifier.TextClassifierImpl
+android.view.textclassifier.TextLanguage$1
+android.view.textclassifier.TextLanguage$Builder
+android.view.textclassifier.TextLanguage$Request$1
+android.view.textclassifier.TextLanguage$Request$Builder
+android.view.textclassifier.TextLanguage$Request
+android.view.textclassifier.TextLanguage
+android.view.textclassifier.TextLinks$Request$1
+android.view.textclassifier.TextLinks$Request
 android.view.textclassifier.TextSelection$1
+android.view.textclassifier.TextSelection$Request$1
+android.view.textclassifier.TextSelection$Request
 android.view.textclassifier.TextSelection
+android.view.textclassifier.intent.-$$Lambda$LabeledIntent$LaL7EfxShgNu4lrdo3mv85g49Jg
+android.view.textclassifier.intent.ClassificationIntentFactory
+android.view.textclassifier.intent.LabeledIntent$Result
+android.view.textclassifier.intent.LabeledIntent$TitleChooser
+android.view.textclassifier.intent.LabeledIntent
+android.view.textclassifier.intent.LegacyClassificationIntentFactory
+android.view.textclassifier.intent.TemplateClassificationIntentFactory
+android.view.textclassifier.intent.TemplateIntentFactory
 android.view.textclassifier.logging.SmartSelectionEventTracker$SelectionEvent
 android.view.textclassifier.logging.SmartSelectionEventTracker
 android.view.textservice.SpellCheckerInfo$1
@@ -4174,6 +5791,7 @@
 android.webkit.TokenBindingService
 android.webkit.TracingController
 android.webkit.URLUtil
+android.webkit.UserPackage
 android.webkit.ValueCallback
 android.webkit.WebBackForwardList
 android.webkit.WebChromeClient$CustomViewCallback
@@ -4200,31 +5818,44 @@
 android.webkit.WebViewFactory
 android.webkit.WebViewFactoryProvider$Statics
 android.webkit.WebViewFactoryProvider
+android.webkit.WebViewLibraryLoader$1
+android.webkit.WebViewLibraryLoader$RelroFileCreator
 android.webkit.WebViewLibraryLoader
 android.webkit.WebViewProvider$ScrollDelegate
 android.webkit.WebViewProvider$ViewDelegate
 android.webkit.WebViewProvider
+android.webkit.WebViewProviderInfo$1
+android.webkit.WebViewProviderInfo
 android.webkit.WebViewProviderResponse$1
 android.webkit.WebViewProviderResponse
+android.webkit.WebViewZygote
 android.widget.-$$Lambda$Editor$MagnifierMotionAnimator$E-RaelOMgCHAzvKgSSZE-hDYeIg
 android.widget.-$$Lambda$IfzAW5fP9thoftErKAjo9SLZufw
 android.widget.-$$Lambda$PopupWindow$8Gc2stI5cSJZbuKX7X4Qr_vU2nI
 android.widget.-$$Lambda$PopupWindow$nV1HS3Nc6Ck5JRIbIHe3mkyHWzc
-android.widget.-$$Lambda$RemoteViews$xYCMzfQwRCAW2azHo-bWqQ9R0Wk
+android.widget.-$$Lambda$RemoteViews$FAOkoZgPKPkiYdtkDxAhkeoykww
+android.widget.-$$Lambda$RemoteViews$Ld8XNSMwygf42608Zln-rjTyHy0
+android.widget.-$$Lambda$RemoteViews$SetOnClickResponse$9rKnU2QqCzJhBC39ZrKYXob0-MA
 android.widget.-$$Lambda$SmartSelectSprite$c8eqlh2kO_X0luLU2BexwK921WA
 android.widget.-$$Lambda$SmartSelectSprite$mdkXIT1_UNlJQMaziE_E815aIKE
 android.widget.-$$Lambda$yIdmBO6ZxaY03PGN08RySVVQXuE
+android.widget.AbsListView$1
+android.widget.AbsListView$2
 android.widget.AbsListView$3
+android.widget.AbsListView$4
 android.widget.AbsListView$AdapterDataSetObserver
+android.widget.AbsListView$CheckForTap
 android.widget.AbsListView$FlingRunnable$1
 android.widget.AbsListView$FlingRunnable
 android.widget.AbsListView$LayoutParams
+android.widget.AbsListView$ListItemAccessibilityDelegate
 android.widget.AbsListView$OnScrollListener
 android.widget.AbsListView$PerformClick
 android.widget.AbsListView$RecycleBin
 android.widget.AbsListView$RecyclerListener
 android.widget.AbsListView$SavedState$1
 android.widget.AbsListView$SavedState
+android.widget.AbsListView$SelectionBoundsAdjuster
 android.widget.AbsListView$WindowRunnnable
 android.widget.AbsListView
 android.widget.AbsSeekBar
@@ -4234,11 +5865,13 @@
 android.widget.AbsoluteLayout
 android.widget.ActionMenuPresenter$1
 android.widget.ActionMenuPresenter$2
+android.widget.ActionMenuPresenter$ActionMenuPopupCallback
 android.widget.ActionMenuPresenter$OverflowMenuButton$1
 android.widget.ActionMenuPresenter$OverflowMenuButton
 android.widget.ActionMenuPresenter$PopupPresenterCallback
 android.widget.ActionMenuPresenter
 android.widget.ActionMenuView$ActionMenuChildView
+android.widget.ActionMenuView$ActionMenuPresenterCallback
 android.widget.ActionMenuView$LayoutParams
 android.widget.ActionMenuView$MenuBuilderCallback
 android.widget.ActionMenuView$OnMenuItemClickListener
@@ -4258,6 +5891,8 @@
 android.widget.CheckBox
 android.widget.Checkable
 android.widget.CheckedTextView
+android.widget.Chronometer$1
+android.widget.Chronometer
 android.widget.CompoundButton$OnCheckedChangeListener
 android.widget.CompoundButton
 android.widget.EdgeEffect
@@ -4269,15 +5904,20 @@
 android.widget.Editor$Blink
 android.widget.Editor$CursorAnchorInfoNotifier
 android.widget.Editor$CursorController
+android.widget.Editor$EasyEditDeleteListener
+android.widget.Editor$EasyEditPopupWindow
 android.widget.Editor$EditOperation$1
 android.widget.Editor$EditOperation
 android.widget.Editor$InputContentType
 android.widget.Editor$InputMethodState
 android.widget.Editor$InsertionPointCursorController
 android.widget.Editor$MagnifierMotionAnimator
+android.widget.Editor$PinnedPopupWindow
 android.widget.Editor$PositionListener
 android.widget.Editor$ProcessTextIntentActionsHandler
 android.widget.Editor$SelectionModifierCursorController
+android.widget.Editor$SpanController$1
+android.widget.Editor$SpanController$2
 android.widget.Editor$SpanController
 android.widget.Editor$SuggestionHelper$SuggestionSpanComparator
 android.widget.Editor$SuggestionHelper
@@ -4303,20 +5943,27 @@
 android.widget.GridLayout$4
 android.widget.GridLayout$5
 android.widget.GridLayout$6
+android.widget.GridLayout$7$1
 android.widget.GridLayout$7
 android.widget.GridLayout$8
 android.widget.GridLayout$Alignment
 android.widget.GridLayout$Arc
 android.widget.GridLayout$Assoc
+android.widget.GridLayout$Axis$1
+android.widget.GridLayout$Axis
 android.widget.GridLayout$Bounds
 android.widget.GridLayout$Interval
+android.widget.GridLayout$LayoutParams
 android.widget.GridLayout$MutableInt
 android.widget.GridLayout$PackedMap
+android.widget.GridLayout$Spec
+android.widget.GridLayout
 android.widget.HeaderViewListAdapter
 android.widget.HorizontalScrollView$SavedState$1
 android.widget.HorizontalScrollView$SavedState
 android.widget.HorizontalScrollView
 android.widget.ImageButton
+android.widget.ImageView$ImageDrawableCallback
 android.widget.ImageView$ScaleType
 android.widget.ImageView
 android.widget.LinearLayout$LayoutParams
@@ -4330,6 +5977,7 @@
 android.widget.ListPopupWindow
 android.widget.ListView$ArrowScrollFocusResult
 android.widget.ListView$FixedViewInfo
+android.widget.ListView$FocusSelector
 android.widget.ListView
 android.widget.Magnifier$Builder
 android.widget.MediaController$MediaPlayerControl
@@ -4337,15 +5985,20 @@
 android.widget.MultiAutoCompleteTextView
 android.widget.OverScroller$SplineOverScroller
 android.widget.OverScroller
+android.widget.PopupMenu$1
+android.widget.PopupMenu$2
 android.widget.PopupMenu$OnMenuItemClickListener
 android.widget.PopupMenu
 android.widget.PopupWindow$1
 android.widget.PopupWindow$2
+android.widget.PopupWindow$3
 android.widget.PopupWindow$OnDismissListener
 android.widget.PopupWindow$PopupDecorView
 android.widget.PopupWindow
 android.widget.ProgressBar$1
-android.widget.ProgressBar$AccessibilityEventSender
+android.widget.ProgressBar$ProgressTintInfo
+android.widget.ProgressBar$RefreshData
+android.widget.ProgressBar$RefreshProgressRunnable
 android.widget.ProgressBar$SavedState$1
 android.widget.ProgressBar$SavedState
 android.widget.ProgressBar
@@ -4360,17 +6013,35 @@
 android.widget.RemoteViews$1
 android.widget.RemoteViews$2
 android.widget.RemoteViews$Action
+android.widget.RemoteViews$ActionException
+android.widget.RemoteViews$AsyncApplyTask
 android.widget.RemoteViews$BitmapCache
 android.widget.RemoteViews$BitmapReflectionAction
 android.widget.RemoteViews$LayoutParamAction
+android.widget.RemoteViews$MethodArgs
 android.widget.RemoteViews$MethodKey
 android.widget.RemoteViews$OnClickHandler
+android.widget.RemoteViews$OverrideTextColorsAction
 android.widget.RemoteViews$ReflectionAction
 android.widget.RemoteViews$RemoteResponse
 android.widget.RemoteViews$RemoteView
+android.widget.RemoteViews$RemoteViewsContextWrapper
+android.widget.RemoteViews$RunnableAction
 android.widget.RemoteViews$RuntimeAction
 android.widget.RemoteViews$SetDrawableTint
+android.widget.RemoteViews$SetEmptyView
+android.widget.RemoteViews$SetIntTagAction
 android.widget.RemoteViews$SetOnClickResponse
+android.widget.RemoteViews$SetPendingIntentTemplate
+android.widget.RemoteViews$SetRemoteInputsAction
+android.widget.RemoteViews$SetRemoteViewsAdapterIntent
+android.widget.RemoteViews$SetRemoteViewsAdapterList
+android.widget.RemoteViews$SetRippleDrawableColor
+android.widget.RemoteViews$TextViewDrawableAction
+android.widget.RemoteViews$TextViewSizeAction
+android.widget.RemoteViews$ViewContentNavigation
+android.widget.RemoteViews$ViewGroupActionAdd
+android.widget.RemoteViews$ViewGroupActionRemove
 android.widget.RemoteViews$ViewPaddingAction
 android.widget.RemoteViews
 android.widget.RemoteViewsAdapter$RemoteAdapterConnectionCallback
@@ -4402,10 +6073,12 @@
 android.widget.Spinner
 android.widget.SpinnerAdapter
 android.widget.Switch$1
+android.widget.Switch
 android.widget.TableLayout$PassThroughHierarchyChangeListener
 android.widget.TableLayout
 android.widget.TableRow$ChildrenTracker
 android.widget.TableRow
+android.widget.TextView$1
 android.widget.TextView$2
 android.widget.TextView$3
 android.widget.TextView$4
@@ -4413,12 +6086,15 @@
 android.widget.TextView$ChangeWatcher
 android.widget.TextView$CharWrapper
 android.widget.TextView$Drawables
+android.widget.TextView$Marquee
 android.widget.TextView$OnEditorActionListener
 android.widget.TextView$SavedState$1
 android.widget.TextView$SavedState
 android.widget.TextView$TextAppearanceAttributes
 android.widget.TextView
 android.widget.ThemedSpinnerAdapter
+android.widget.Toast$TN$1
+android.widget.Toast$TN
 android.widget.Toast
 android.widget.ToggleButton
 android.widget.Toolbar$1
@@ -4427,10 +6103,18 @@
 android.widget.Toolbar$LayoutParams
 android.widget.Toolbar$OnMenuItemClickListener
 android.widget.Toolbar$SavedState$1
+android.widget.Toolbar$SavedState
 android.widget.Toolbar
 android.widget.ViewAnimator
 android.widget.ViewSwitcher
 android.widget.WrapperListAdapter
+com.android.framework.protobuf.nano.CodedInputByteBufferNano
+com.android.framework.protobuf.nano.CodedOutputByteBufferNano$OutOfSpaceException
+com.android.framework.protobuf.nano.CodedOutputByteBufferNano
+com.android.framework.protobuf.nano.InternalNano
+com.android.framework.protobuf.nano.InvalidProtocolBufferNanoException
+com.android.framework.protobuf.nano.MessageNano
+com.android.framework.protobuf.nano.WireFormatNano
 com.android.i18n.phonenumbers.AlternateFormatsCountryCodeSet
 com.android.i18n.phonenumbers.CountryCodeToRegionCodeMap
 com.android.i18n.phonenumbers.MetadataLoader
@@ -4438,8 +6122,10 @@
 com.android.i18n.phonenumbers.MetadataManager
 com.android.i18n.phonenumbers.MetadataSource
 com.android.i18n.phonenumbers.MultiFileMetadataSourceImpl
+com.android.i18n.phonenumbers.NumberParseException$ErrorType
 com.android.i18n.phonenumbers.NumberParseException
 com.android.i18n.phonenumbers.PhoneNumberUtil$1
+com.android.i18n.phonenumbers.PhoneNumberUtil$2
 com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$1
 com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$2
 com.android.i18n.phonenumbers.PhoneNumberUtil$Leniency$3
@@ -4449,23 +6135,41 @@
 com.android.i18n.phonenumbers.PhoneNumberUtil$PhoneNumberType
 com.android.i18n.phonenumbers.PhoneNumberUtil$ValidationResult
 com.android.i18n.phonenumbers.PhoneNumberUtil
+com.android.i18n.phonenumbers.Phonemetadata$NumberFormat$Builder
 com.android.i18n.phonenumbers.Phonemetadata$NumberFormat
 com.android.i18n.phonenumbers.Phonemetadata$PhoneMetadata
 com.android.i18n.phonenumbers.Phonemetadata$PhoneMetadataCollection
 com.android.i18n.phonenumbers.Phonemetadata$PhoneNumberDesc
 com.android.i18n.phonenumbers.Phonenumber$PhoneNumber$CountryCodeSource
 com.android.i18n.phonenumbers.Phonenumber$PhoneNumber
+com.android.i18n.phonenumbers.ShortNumberInfo
 com.android.i18n.phonenumbers.ShortNumbersRegionCodeSet
+com.android.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder
 com.android.i18n.phonenumbers.internal.MatcherApi
 com.android.i18n.phonenumbers.internal.RegexBasedMatcher
 com.android.i18n.phonenumbers.internal.RegexCache$LRUCache$1
 com.android.i18n.phonenumbers.internal.RegexCache$LRUCache
 com.android.i18n.phonenumbers.internal.RegexCache
-com.android.ims.-$$Lambda$ImsManager$Connector$N5r1SvOgM0jfHDwKkcQbyw_uTP0
-com.android.ims.-$$Lambda$ImsManager$Connector$yM9scWJWjDp_h0yrkCgrjFZH5oI
-com.android.ims.-$$Lambda$ImsManager$Flxe43OUFnnU0pgnksvwPE6o3Mk
-com.android.ims.-$$Lambda$MmTelFeatureConnection$ij8S4RNRiQPHfppwkejp36BG78I
+com.android.icu.charset.CharsetDecoderICU
+com.android.icu.charset.CharsetEncoderICU
+com.android.icu.charset.CharsetICU
+com.android.icu.charset.NativeConverter
+com.android.icu.util.CaseMapperNative
+com.android.icu.util.Icu4cMetadata
+com.android.icu.util.LocaleNative
+com.android.icu.util.regex.MatcherNative
+com.android.icu.util.regex.PatternNative
+com.android.ims.-$$Lambda$ImsManager$D1JuJ3ba2jMHWDKlSpm03meBR1c
+com.android.ims.-$$Lambda$ImsManager$LiW49wt0wLMYHjgtAwL8NLIATfs
+com.android.ims.-$$Lambda$ImsManager$YhRaDrc3t9_7beNiU5gQcqZilOw
+com.android.ims.-$$Lambda$szO0o3matefQqo-6NB-dzsr9eCw
+com.android.ims.FeatureConnection$IFeatureUpdate
+com.android.ims.FeatureConnection
+com.android.ims.FeatureConnector$Listener
+com.android.ims.IFeatureConnector
 com.android.ims.ImsCall$Listener
+com.android.ims.ImsCall
+com.android.ims.ImsCallbackAdapterManager
 com.android.ims.ImsConfig
 com.android.ims.ImsConfigListener$Stub
 com.android.ims.ImsConfigListener
@@ -4474,11 +6178,8 @@
 com.android.ims.ImsEcbmStateListener
 com.android.ims.ImsException
 com.android.ims.ImsExternalCallStateListener
+com.android.ims.ImsManager$2
 com.android.ims.ImsManager$3
-com.android.ims.ImsManager$Connector$1
-com.android.ims.ImsManager$Connector$Listener
-com.android.ims.ImsManager$Connector$RetryTimeout
-com.android.ims.ImsManager$Connector
 com.android.ims.ImsManager$ExecutorFactory
 com.android.ims.ImsManager
 com.android.ims.ImsMultiEndpoint$ImsExternalCallStateListenerProxy
@@ -4486,14 +6187,11 @@
 com.android.ims.ImsUt$IImsUtListenerProxy
 com.android.ims.ImsUt
 com.android.ims.ImsUtInterface
-com.android.ims.MmTelFeatureConnection$1
-com.android.ims.MmTelFeatureConnection$CallbackAdapterManager$1
-com.android.ims.MmTelFeatureConnection$CallbackAdapterManager
 com.android.ims.MmTelFeatureConnection$CapabilityCallbackManager
-com.android.ims.MmTelFeatureConnection$IFeatureUpdate
 com.android.ims.MmTelFeatureConnection$ImsRegistrationCallbackAdapter
 com.android.ims.MmTelFeatureConnection$ProvisioningCallbackManager
 com.android.ims.MmTelFeatureConnection
+com.android.ims.internal.ICall
 com.android.ims.internal.IImsEcbm$Stub
 com.android.ims.internal.IImsEcbm
 com.android.ims.internal.IImsEcbmListener$Stub
@@ -4511,63 +6209,206 @@
 com.android.ims.internal.IImsUt
 com.android.ims.internal.IImsUtListener$Stub
 com.android.ims.internal.IImsUtListener
+com.android.ims.internal.ImsVideoCallProviderWrapper$ImsVideoProviderWrapperCallback
+com.android.ims.internal.uce.UceServiceBase$UceServiceBinder
+com.android.ims.internal.uce.UceServiceBase
+com.android.ims.internal.uce.common.UceLong$1
+com.android.ims.internal.uce.common.UceLong
+com.android.ims.internal.uce.options.IOptionsListener$Stub$Proxy
+com.android.ims.internal.uce.options.IOptionsListener$Stub
+com.android.ims.internal.uce.options.IOptionsListener
+com.android.ims.internal.uce.presence.IPresenceListener$Stub$Proxy
+com.android.ims.internal.uce.presence.IPresenceListener$Stub
+com.android.ims.internal.uce.presence.IPresenceListener
+com.android.ims.internal.uce.uceservice.IUceListener$Stub$Proxy
+com.android.ims.internal.uce.uceservice.IUceListener$Stub
+com.android.ims.internal.uce.uceservice.IUceListener
+com.android.ims.internal.uce.uceservice.IUceService$Stub
+com.android.ims.internal.uce.uceservice.IUceService
 com.android.internal.R$styleable
+com.android.internal.accessibility.AccessibilityShortcutController$1
+com.android.internal.accessibility.AccessibilityShortcutController$FrameworkObjectProvider
+com.android.internal.accessibility.AccessibilityShortcutController$ToggleableFrameworkFeatureInfo
+com.android.internal.accessibility.AccessibilityShortcutController
+com.android.internal.alsa.AlsaCardsParser
+com.android.internal.alsa.LineTokenizer
+com.android.internal.app.AlertController$1
 com.android.internal.app.AlertController$AlertParams
+com.android.internal.app.AlertController$ButtonHandler
+com.android.internal.app.AlertController$RecycleListView
 com.android.internal.app.AlertController
 com.android.internal.app.AssistUtils
+com.android.internal.app.IAppOpsActiveCallback$Stub$Proxy
+com.android.internal.app.IAppOpsActiveCallback$Stub
+com.android.internal.app.IAppOpsActiveCallback
+com.android.internal.app.IAppOpsCallback$Stub$Proxy
 com.android.internal.app.IAppOpsCallback$Stub
 com.android.internal.app.IAppOpsCallback
+com.android.internal.app.IAppOpsNotedCallback$Stub$Proxy
+com.android.internal.app.IAppOpsNotedCallback$Stub
+com.android.internal.app.IAppOpsNotedCallback
 com.android.internal.app.IAppOpsService$Stub$Proxy
 com.android.internal.app.IAppOpsService$Stub
 com.android.internal.app.IAppOpsService
 com.android.internal.app.IBatteryStats$Stub$Proxy
 com.android.internal.app.IBatteryStats$Stub
 com.android.internal.app.IBatteryStats
+com.android.internal.app.ISoundTriggerService$Stub
+com.android.internal.app.ISoundTriggerService
+com.android.internal.app.IVoiceActionCheckCallback$Stub$Proxy
+com.android.internal.app.IVoiceActionCheckCallback$Stub
+com.android.internal.app.IVoiceActionCheckCallback
 com.android.internal.app.IVoiceInteractionManagerService$Stub$Proxy
 com.android.internal.app.IVoiceInteractionManagerService$Stub
 com.android.internal.app.IVoiceInteractionManagerService
+com.android.internal.app.IVoiceInteractionSessionListener$Stub$Proxy
+com.android.internal.app.IVoiceInteractionSessionListener$Stub
+com.android.internal.app.IVoiceInteractionSessionListener
 com.android.internal.app.IVoiceInteractionSessionShowCallback$Stub$Proxy
+com.android.internal.app.IVoiceInteractionSessionShowCallback$Stub
 com.android.internal.app.IVoiceInteractionSessionShowCallback
+com.android.internal.app.IVoiceInteractor$Stub$Proxy
 com.android.internal.app.IVoiceInteractor$Stub
 com.android.internal.app.IVoiceInteractor
+com.android.internal.app.MicroAlertController
+com.android.internal.app.ProcessMap
+com.android.internal.app.ResolverActivity$ActionTitle
+com.android.internal.app.ResolverActivity
+com.android.internal.app.ResolverListAdapter$ResolverListCommunicator
+com.android.internal.app.ToolbarActionBar
+com.android.internal.app.WindowDecorActionBar
+com.android.internal.app.procstats.-$$Lambda$AssociationState$kgfxYpOOyQWCFPwGaRqRz0N4-zg
+com.android.internal.app.procstats.AssociationState$SourceKey
+com.android.internal.app.procstats.AssociationState$SourceState
+com.android.internal.app.procstats.AssociationState
+com.android.internal.app.procstats.DumpUtils
+com.android.internal.app.procstats.DurationsTable
+com.android.internal.app.procstats.IProcessStats$Stub$Proxy
+com.android.internal.app.procstats.IProcessStats$Stub
+com.android.internal.app.procstats.IProcessStats
+com.android.internal.app.procstats.ProcessState$1
+com.android.internal.app.procstats.ProcessState$PssAggr
+com.android.internal.app.procstats.ProcessState
+com.android.internal.app.procstats.ProcessStats$1
+com.android.internal.app.procstats.ProcessStats$PackageState
+com.android.internal.app.procstats.ProcessStats$ProcessStateHolder
+com.android.internal.app.procstats.ProcessStats$TotalMemoryUseCollection
+com.android.internal.app.procstats.ProcessStats
+com.android.internal.app.procstats.PssTable
+com.android.internal.app.procstats.ServiceState
+com.android.internal.app.procstats.SparseMappingTable$Table
+com.android.internal.app.procstats.SparseMappingTable
+com.android.internal.app.procstats.SysMemUsageTable
+com.android.internal.appwidget.IAppWidgetHost$Stub$Proxy
+com.android.internal.appwidget.IAppWidgetHost$Stub
+com.android.internal.appwidget.IAppWidgetHost
 com.android.internal.appwidget.IAppWidgetService$Stub$Proxy
 com.android.internal.appwidget.IAppWidgetService$Stub
 com.android.internal.appwidget.IAppWidgetService
+com.android.internal.backup.IBackupTransport$Stub$Proxy
 com.android.internal.backup.IBackupTransport$Stub
 com.android.internal.backup.IBackupTransport
+com.android.internal.compat.ChangeReporter
+com.android.internal.content.NativeLibraryHelper$Handle
 com.android.internal.content.NativeLibraryHelper
+com.android.internal.content.PackageHelper$1
+com.android.internal.content.PackageHelper$TestableInterface
+com.android.internal.content.PackageHelper
 com.android.internal.content.PackageMonitor
 com.android.internal.content.ReferrerIntent$1
 com.android.internal.content.ReferrerIntent
+com.android.internal.database.SortCursor
+com.android.internal.graphics.ColorUtils
+com.android.internal.graphics.SfVsyncFrameCallbackProvider
 com.android.internal.graphics.drawable.AnimationScaleListDrawable$AnimationScaleListState
 com.android.internal.graphics.drawable.AnimationScaleListDrawable
+com.android.internal.infra.-$$Lambda$7-CJJfrUZBVuXZyYFEWBNh8Mky8
+com.android.internal.infra.-$$Lambda$AbstractRemoteService$6FcEKfZ-7TXLg6dcCU8EMuMNAy4
+com.android.internal.infra.-$$Lambda$AbstractRemoteService$9IBVTCLLZgndvH7fu1P14PW1_1o
 com.android.internal.infra.-$$Lambda$AbstractRemoteService$MDW40b8CzodE5xRowI9wDEyXEnw
+com.android.internal.infra.-$$Lambda$AbstractRemoteService$PendingRequest$IBoaBGXZQEXJr69u3aJF-LCJ42Y
+com.android.internal.infra.-$$Lambda$AbstractRemoteService$YSUzqqi1Pbrg2dlwMGMtKWbGXck
+com.android.internal.infra.-$$Lambda$AbstractRemoteService$ocrHd68Md9x6FfAzVQ6w8MAjFqY
+com.android.internal.infra.-$$Lambda$EbzSql2RHkXox5Myj8A-7kLC4_A
 com.android.internal.infra.AbstractMultiplePendingRequestsRemoteService
 com.android.internal.infra.AbstractRemoteService$BasePendingRequest
+com.android.internal.infra.AbstractRemoteService$MyAsyncPendingRequest
 com.android.internal.infra.AbstractRemoteService$PendingRequest
 com.android.internal.infra.AbstractRemoteService$RemoteServiceConnection
 com.android.internal.infra.AbstractRemoteService$VultureCallback
 com.android.internal.infra.AbstractRemoteService
+com.android.internal.infra.AbstractSinglePendingRequestRemoteService
+com.android.internal.infra.ServiceConnector$Job
+com.android.internal.infra.WhitelistHelper
+com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub$Proxy
+com.android.internal.inputmethod.IInputMethodPrivilegedOperations$Stub
+com.android.internal.inputmethod.IInputMethodPrivilegedOperations
+com.android.internal.inputmethod.InputMethodDebug
+com.android.internal.inputmethod.InputMethodPrivilegedOperations$OpsHolder
+com.android.internal.inputmethod.InputMethodPrivilegedOperations
+com.android.internal.inputmethod.InputMethodPrivilegedOperationsRegistry
+com.android.internal.inputmethod.SubtypeLocaleUtils
+com.android.internal.location.GpsNetInitiatedHandler$1
+com.android.internal.location.GpsNetInitiatedHandler$2
+com.android.internal.location.GpsNetInitiatedHandler
+com.android.internal.location.ILocationProvider$Stub$Proxy
+com.android.internal.location.ILocationProvider$Stub
+com.android.internal.location.ILocationProvider
+com.android.internal.location.ILocationProviderManager$Stub$Proxy
+com.android.internal.location.ILocationProviderManager$Stub
+com.android.internal.location.ILocationProviderManager
+com.android.internal.location.ProviderProperties$1
+com.android.internal.location.ProviderProperties
+com.android.internal.location.ProviderRequest$1
+com.android.internal.location.ProviderRequest
+com.android.internal.location.gnssmetrics.GnssMetrics$GnssPowerMetrics
+com.android.internal.location.gnssmetrics.GnssMetrics$Statistics
+com.android.internal.location.gnssmetrics.GnssMetrics
+com.android.internal.location.nano.GnssLogsProto$GnssLog
+com.android.internal.location.nano.GnssLogsProto$PowerMetrics
 com.android.internal.logging.AndroidConfig
 com.android.internal.logging.AndroidHandler$1
 com.android.internal.logging.AndroidHandler
 com.android.internal.logging.EventLogTags
 com.android.internal.logging.MetricsLogger
-com.android.internal.net.NetworkStatsFactory
+com.android.internal.net.INetworkWatchlistManager$Stub$Proxy
+com.android.internal.net.INetworkWatchlistManager$Stub
+com.android.internal.net.INetworkWatchlistManager
+com.android.internal.net.VpnConfig$1
+com.android.internal.net.VpnConfig
+com.android.internal.net.VpnInfo$1
+com.android.internal.net.VpnInfo
+com.android.internal.net.VpnProfile$1
+com.android.internal.net.VpnProfile
+com.android.internal.notification.SystemNotificationChannels
+com.android.internal.os.-$$Lambda$6-ytl6NLMGWt_iQr4_PfakNWUKQ
+com.android.internal.os.-$$Lambda$BatteryStatsImpl$7bfIWpn8X2h-hSzLD6dcuK4Ljuw
+com.android.internal.os.-$$Lambda$BatteryStatsImpl$B-TmZhQb712ePnuJTxvMe7P-YwQ
+com.android.internal.os.-$$Lambda$BatteryStatsImpl$Xvt9xdVPtevMWGIjcbxXf0_mr_c
+com.android.internal.os.-$$Lambda$BatteryStatsImpl$_l2oiaRDRhjCXI_PwXPsAhrgegI
+com.android.internal.os.-$$Lambda$BinderCallsStats$sqXweH5BoxhmZvI188ctqYiACRk
 com.android.internal.os.-$$Lambda$RuntimeInit$ep4ioD9YINkHI5Q1wZ0N_7VFAOg
 com.android.internal.os.-$$Lambda$ZygoteConnection$KxVsZ-s4KsanePOHCU5JcuypPik
 com.android.internal.os.-$$Lambda$ZygoteConnection$xjqM7qW7vAjTqh2tR5XRF5Vn5mk
+com.android.internal.os.-$$Lambda$sHtqZgGVjxOf9IJdAdZO6gwD_Do
 com.android.internal.os.AndroidPrintStream
+com.android.internal.os.AppFuseMount
 com.android.internal.os.AtomicDirectory
 com.android.internal.os.BackgroundThread
 com.android.internal.os.BatterySipper$DrainType
 com.android.internal.os.BatterySipper
+com.android.internal.os.BatteryStatsHelper$1
 com.android.internal.os.BatteryStatsHelper
+com.android.internal.os.BatteryStatsHistory$1
 com.android.internal.os.BatteryStatsHistory
 com.android.internal.os.BatteryStatsImpl$1
+com.android.internal.os.BatteryStatsImpl$2
+com.android.internal.os.BatteryStatsImpl$3
+com.android.internal.os.BatteryStatsImpl$4
 com.android.internal.os.BatteryStatsImpl$5
 com.android.internal.os.BatteryStatsImpl$6
 com.android.internal.os.BatteryStatsImpl$BatchTimer
+com.android.internal.os.BatteryStatsImpl$BatteryCallback
 com.android.internal.os.BatteryStatsImpl$BluetoothActivityInfoCache
 com.android.internal.os.BatteryStatsImpl$Clocks
 com.android.internal.os.BatteryStatsImpl$Constants
@@ -4575,9 +6416,13 @@
 com.android.internal.os.BatteryStatsImpl$Counter
 com.android.internal.os.BatteryStatsImpl$DualTimer
 com.android.internal.os.BatteryStatsImpl$DurationTimer
+com.android.internal.os.BatteryStatsImpl$ExternalStatsSync
 com.android.internal.os.BatteryStatsImpl$LongSamplingCounter
 com.android.internal.os.BatteryStatsImpl$LongSamplingCounterArray
+com.android.internal.os.BatteryStatsImpl$MyHandler
 com.android.internal.os.BatteryStatsImpl$OverflowArrayMap
+com.android.internal.os.BatteryStatsImpl$PlatformIdleStateCallback
+com.android.internal.os.BatteryStatsImpl$RailEnergyDataCallback
 com.android.internal.os.BatteryStatsImpl$SamplingTimer
 com.android.internal.os.BatteryStatsImpl$StopwatchTimer
 com.android.internal.os.BatteryStatsImpl$SystemClocks
@@ -4593,17 +6438,28 @@
 com.android.internal.os.BatteryStatsImpl$Uid$Sensor
 com.android.internal.os.BatteryStatsImpl$Uid$Wakelock
 com.android.internal.os.BatteryStatsImpl$Uid
+com.android.internal.os.BatteryStatsImpl$UidToRemove
+com.android.internal.os.BatteryStatsImpl$UserInfoProvider
 com.android.internal.os.BatteryStatsImpl
 com.android.internal.os.BinderCallsStats$CallStat
+com.android.internal.os.BinderCallsStats$CallStatKey
+com.android.internal.os.BinderCallsStats$ExportedCallStat
+com.android.internal.os.BinderCallsStats$Injector
 com.android.internal.os.BinderCallsStats$OverflowBinder
 com.android.internal.os.BinderCallsStats$UidEntry
 com.android.internal.os.BinderCallsStats
+com.android.internal.os.BinderDeathDispatcher$RecipientsInfo
+com.android.internal.os.BinderInternal$BinderProxyLimitListener
 com.android.internal.os.BinderInternal$BinderProxyLimitListenerDelegate
+com.android.internal.os.BinderInternal$CallSession
 com.android.internal.os.BinderInternal$GcWatcher
 com.android.internal.os.BinderInternal$Observer
 com.android.internal.os.BinderInternal$WorkSourceProvider
 com.android.internal.os.BinderInternal
 com.android.internal.os.BluetoothPowerCalculator
+com.android.internal.os.CachedDeviceState$Readonly
+com.android.internal.os.CachedDeviceState$TimeInStateStopwatch
+com.android.internal.os.CachedDeviceState
 com.android.internal.os.CameraPowerCalculator
 com.android.internal.os.ClassLoaderFactory
 com.android.internal.os.CpuPowerCalculator
@@ -4620,24 +6476,52 @@
 com.android.internal.os.IResultReceiver$Stub$Proxy
 com.android.internal.os.IResultReceiver$Stub
 com.android.internal.os.IResultReceiver
+com.android.internal.os.IShellCallback$Stub$Proxy
+com.android.internal.os.IShellCallback$Stub
+com.android.internal.os.IShellCallback
+com.android.internal.os.KernelCpuProcStringReader$ProcFileIterator
 com.android.internal.os.KernelCpuProcStringReader
+com.android.internal.os.KernelCpuSpeedReader
+com.android.internal.os.KernelCpuThreadReader$FrequencyBucketCreator
+com.android.internal.os.KernelCpuThreadReader$Injector
+com.android.internal.os.KernelCpuThreadReader$ProcessCpuUsage
+com.android.internal.os.KernelCpuThreadReader$ThreadCpuUsage
+com.android.internal.os.KernelCpuThreadReader
+com.android.internal.os.KernelCpuThreadReaderSettingsObserver$UidPredicate
+com.android.internal.os.KernelCpuThreadReaderSettingsObserver
+com.android.internal.os.KernelCpuUidTimeReader$Callback
 com.android.internal.os.KernelCpuUidTimeReader$KernelCpuUidActiveTimeReader
 com.android.internal.os.KernelCpuUidTimeReader$KernelCpuUidClusterTimeReader
 com.android.internal.os.KernelCpuUidTimeReader$KernelCpuUidFreqTimeReader
 com.android.internal.os.KernelCpuUidTimeReader$KernelCpuUidUserSysTimeReader
 com.android.internal.os.KernelCpuUidTimeReader
 com.android.internal.os.KernelMemoryBandwidthStats
+com.android.internal.os.KernelSingleUidTimeReader
 com.android.internal.os.KernelWakelockReader
+com.android.internal.os.KernelWakelockStats$Entry
 com.android.internal.os.KernelWakelockStats
 com.android.internal.os.LoggingPrintStream$1
 com.android.internal.os.LoggingPrintStream
+com.android.internal.os.LooperStats$DispatchSession
+com.android.internal.os.LooperStats$Entry
+com.android.internal.os.LooperStats$ExportedEntry
+com.android.internal.os.LooperStats
 com.android.internal.os.MediaPowerCalculator
 com.android.internal.os.MemoryPowerCalculator
 com.android.internal.os.MobileRadioPowerCalculator
 com.android.internal.os.PowerCalculator
 com.android.internal.os.PowerProfile$CpuClusterKey
 com.android.internal.os.PowerProfile
+com.android.internal.os.ProcStatsUtil
+com.android.internal.os.ProcTimeInStateReader
+com.android.internal.os.ProcessCpuTracker$1
+com.android.internal.os.ProcessCpuTracker$Stats
+com.android.internal.os.ProcessCpuTracker
+com.android.internal.os.RailStats
 com.android.internal.os.RoSystemProperties
+com.android.internal.os.RpmStats$PowerStateElement
+com.android.internal.os.RpmStats$PowerStatePlatformSleepState
+com.android.internal.os.RpmStats$PowerStateSubsystem
 com.android.internal.os.RpmStats
 com.android.internal.os.RuntimeInit$1
 com.android.internal.os.RuntimeInit$Arguments
@@ -4647,59 +6531,137 @@
 com.android.internal.os.RuntimeInit
 com.android.internal.os.SensorPowerCalculator
 com.android.internal.os.SomeArgs
+com.android.internal.os.StatsdHiddenApiUsageLogger
+com.android.internal.os.StoragedUidIoStatsReader
+com.android.internal.os.TransferPipe
 com.android.internal.os.WakelockPowerCalculator
 com.android.internal.os.WifiPowerCalculator
+com.android.internal.os.WifiPowerEstimator
+com.android.internal.os.WrapperInit
 com.android.internal.os.Zygote
 com.android.internal.os.ZygoteArguments
-com.android.internal.os.ZygoteConnection$HiddenApiUsageLogger
 com.android.internal.os.ZygoteConnection
 com.android.internal.os.ZygoteInit
+com.android.internal.os.ZygoteSecurityException
+com.android.internal.os.ZygoteServer$UsapPoolRefillAction
 com.android.internal.os.ZygoteServer
 com.android.internal.policy.DecorContext
 com.android.internal.policy.DecorView$1
+com.android.internal.policy.DecorView$2
+com.android.internal.policy.DecorView$3
 com.android.internal.policy.DecorView$ColorViewAttributes
 com.android.internal.policy.DecorView$ColorViewState
 com.android.internal.policy.DecorView
+com.android.internal.policy.DividerSnapAlgorithm$SnapTarget
+com.android.internal.policy.DividerSnapAlgorithm
+com.android.internal.policy.DockedDividerUtils
+com.android.internal.policy.IKeyguardDismissCallback$Stub$Proxy
+com.android.internal.policy.IKeyguardDismissCallback$Stub
+com.android.internal.policy.IKeyguardDismissCallback
+com.android.internal.policy.IKeyguardDrawnCallback$Stub$Proxy
+com.android.internal.policy.IKeyguardDrawnCallback$Stub
+com.android.internal.policy.IKeyguardDrawnCallback
+com.android.internal.policy.IKeyguardExitCallback$Stub$Proxy
+com.android.internal.policy.IKeyguardExitCallback$Stub
+com.android.internal.policy.IKeyguardExitCallback
+com.android.internal.policy.IKeyguardService$Stub$Proxy
+com.android.internal.policy.IKeyguardService$Stub
+com.android.internal.policy.IKeyguardService
+com.android.internal.policy.IKeyguardStateCallback$Stub$Proxy
+com.android.internal.policy.IKeyguardStateCallback$Stub
+com.android.internal.policy.IKeyguardStateCallback
+com.android.internal.policy.IShortcutService$Stub$Proxy
+com.android.internal.policy.IShortcutService$Stub
+com.android.internal.policy.IShortcutService
 com.android.internal.policy.PhoneFallbackEventHandler
 com.android.internal.policy.PhoneLayoutInflater
 com.android.internal.policy.PhoneWindow$1
 com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState$1
+com.android.internal.policy.PhoneWindow$PanelFeatureState$SavedState
 com.android.internal.policy.PhoneWindow$PanelFeatureState
 com.android.internal.policy.PhoneWindow$PhoneWindowMenuCallback
 com.android.internal.policy.PhoneWindow$RotationWatcher$1
 com.android.internal.policy.PhoneWindow$RotationWatcher
 com.android.internal.policy.PhoneWindow
+com.android.internal.policy.ScreenDecorationsUtils
+com.android.internal.statusbar.IStatusBar$Stub$Proxy
+com.android.internal.statusbar.IStatusBar$Stub
+com.android.internal.statusbar.IStatusBar
+com.android.internal.statusbar.IStatusBarService$Stub$Proxy
+com.android.internal.statusbar.IStatusBarService$Stub
+com.android.internal.statusbar.IStatusBarService
+com.android.internal.statusbar.NotificationVisibility$1
+com.android.internal.statusbar.NotificationVisibility$NotificationLocation
+com.android.internal.statusbar.NotificationVisibility
+com.android.internal.statusbar.StatusBarIcon$1
+com.android.internal.statusbar.StatusBarIcon
+com.android.internal.telecom.IConnectionService$Stub$Proxy
+com.android.internal.telecom.IConnectionService$Stub
+com.android.internal.telecom.IConnectionService
+com.android.internal.telecom.IInCallService$Stub$Proxy
+com.android.internal.telecom.IInCallService$Stub
+com.android.internal.telecom.IInCallService
 com.android.internal.telecom.ITelecomService$Stub$Proxy
 com.android.internal.telecom.ITelecomService$Stub
 com.android.internal.telecom.ITelecomService
 com.android.internal.telecom.IVideoCallback
+com.android.internal.telecom.IVideoProvider$Stub$Proxy
 com.android.internal.telecom.IVideoProvider$Stub
 com.android.internal.telecom.IVideoProvider
+com.android.internal.telecom.RemoteServiceCallback$Stub$Proxy
+com.android.internal.telecom.RemoteServiceCallback$Stub
+com.android.internal.telecom.RemoteServiceCallback
+com.android.internal.telephony.-$$Lambda$MultiSimSettingController$55347QtGjuukX-px3jYZkJd_z3U
+com.android.internal.telephony.-$$Lambda$MultiSimSettingController$DcLtrTEtdlCd4WOev4Zk79vrSko
+com.android.internal.telephony.-$$Lambda$MultiSimSettingController$WtGtOenjqxSBoW5BUjT-VlNoSTM
 com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$1zkPy06BwndFkKrGCUI1ORIPJcI
 com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$2WGP2Bp11k7_Xwi1N4YefElOUuM
-com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$8HFbCDJDN1mrLJG980qYH5MGqMk
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$2xgrYNleR8FFzFT8hEQx3mDtZ8g
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$AjZFvwh3Ujx5W3fleFNksc6bLf0
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$Ja9yTBcEYPqTRBIP-hL0otixVeE
 com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$P0j9hvO3e-UE9_1i1QM_ujl8Bpo
-com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$U28a_EGx2cvmQhDfRRgonMt5Zrc
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$ZOtVAnuhxrXl2L906I6eTOentP0
 com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$bWluhZvk2X-dQ0UidKfdpd0kwuw
-com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$qSXnUMuIwAZ0TQjtyVEfznh1w8o
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$hh4N6_N4-PPm_vWjCdCRvS8--Cw
+com.android.internal.telephony.-$$Lambda$PhoneSubInfoController$rpyQeO7zACcc5v4krwU9_qRMHL8
 com.android.internal.telephony.-$$Lambda$PhoneSwitcher$WfAxZbJDpCUxBytiUchQ87aGijQ
+com.android.internal.telephony.-$$Lambda$RIL$803u4JiCud_JSoDndvAhT13ZZqU
+com.android.internal.telephony.-$$Lambda$RIL$Ir4pOMTf7R0Jtw4O3F7JgMVtXO4
+com.android.internal.telephony.-$$Lambda$RIL$ZGWeCQ9boMO1_J1_yQ82l_jK-Nc
+com.android.internal.telephony.-$$Lambda$RIL$zYsQZAc3z9bM5fCaq_J0dn5kjjo
+com.android.internal.telephony.-$$Lambda$RILConstants$ODSbRKyUeaOFMcez-ZudOmaKCBw
+com.android.internal.telephony.-$$Lambda$RILConstants$zIAjDPNpW8a5C22QbMmMwM64vD8
 com.android.internal.telephony.-$$Lambda$RILRequest$VaC9ddQXT8qxCl7rcNKtUadFQoI
+com.android.internal.telephony.-$$Lambda$RadioIndication$GND6XxOOm1d_Ro76zEUFjA9OrEA
 com.android.internal.telephony.-$$Lambda$SubscriptionController$Nt_ojdeqo4C2mbuwymYLvwgOLGo
+com.android.internal.telephony.-$$Lambda$SubscriptionController$VCQsMNqRHpN3RyoXYzh2YUwA2yc
 com.android.internal.telephony.-$$Lambda$SubscriptionController$u5xE-urXR6ElZ50305_6guo20Fc
-com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$-zZXM9oMRZ3vZz7dJOG19J00Bmw
-com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$D5yF1HbS4cvCyoAj3FESkPtA_0g
-com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$MMx9iQX0JVqqMPLTUZhdBubFSzU
-com.android.internal.telephony.-$$Lambda$TelephonyPermissions$LxEEC4irBSbjD1lSC4EeVLgFY9I
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$DY4i_CG7hrAeejGLeh3hMUZySnw
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$UFyB0ValfLD0rdGDibCjTnGFkeo
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$Y5woGfEDKrozRViLH7WF93qPEno
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$ZTY4uxKw17CHcHQzbBUF7m-dN-E
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$ecTEeMEIjOEa2z5W3wjqiicibbY
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$qyDxq2AWyReUxdc6HttVGQeDD3Y
+com.android.internal.telephony.-$$Lambda$SubscriptionInfoUpdater$tLUuQ7lYu8EjRd038qzQlDm-CtA
+com.android.internal.telephony.-$$Lambda$TelephonyComponentFactory$InjectedComponents$09rMKC8001jAR0zFrzzlPx26Xjs
+com.android.internal.telephony.-$$Lambda$TelephonyComponentFactory$InjectedComponents$DKjB_mCxFOHomOyKLPFU9-9Dywc
+com.android.internal.telephony.-$$Lambda$TelephonyComponentFactory$InjectedComponents$UYUq9z2WZwxqOLXquU0tTNN9wAs
+com.android.internal.telephony.-$$Lambda$TelephonyComponentFactory$InjectedComponents$eUdIxJOKoyVP5UmFJtWXBUO93Qk
+com.android.internal.telephony.-$$Lambda$TelephonyComponentFactory$InjectedComponents$nLdppNQT1Bv7QyIU3LwAwVD2K60
+com.android.internal.telephony.-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw
+com.android.internal.telephony.-$$Lambda$WWHOcG5P4-jgjzPPgLwm-wN15OM
+com.android.internal.telephony.ATParseEx
 com.android.internal.telephony.AppSmsManager
 com.android.internal.telephony.BaseCommands
+com.android.internal.telephony.BlockChecker
 com.android.internal.telephony.Call$SrvccState
 com.android.internal.telephony.Call$State
 com.android.internal.telephony.Call
+com.android.internal.telephony.CallForwardInfo
 com.android.internal.telephony.CallManager$CallManagerHandler
 com.android.internal.telephony.CallManager
 com.android.internal.telephony.CallStateException
 com.android.internal.telephony.CallTracker
-android.telephony.CallerInfoAsyncQuery$OnQueryCompleteListener
 com.android.internal.telephony.CarrierActionAgent$1
 com.android.internal.telephony.CarrierActionAgent
 com.android.internal.telephony.CarrierAppUtils
@@ -4707,10 +6669,13 @@
 com.android.internal.telephony.CarrierKeyDownloadManager$1
 com.android.internal.telephony.CarrierKeyDownloadManager
 com.android.internal.telephony.CarrierResolver$1
+com.android.internal.telephony.CarrierResolver$2
+com.android.internal.telephony.CarrierResolver$CarrierMatchingRule
 com.android.internal.telephony.CarrierResolver
 com.android.internal.telephony.CarrierServiceBindHelper$1
 com.android.internal.telephony.CarrierServiceBindHelper$2
 com.android.internal.telephony.CarrierServiceBindHelper$AppBinding
+com.android.internal.telephony.CarrierServiceBindHelper$CarrierServiceConnection
 com.android.internal.telephony.CarrierServiceBindHelper$CarrierServicePackageMonitor
 com.android.internal.telephony.CarrierServiceBindHelper
 com.android.internal.telephony.CarrierServiceStateTracker$1
@@ -4720,9 +6685,14 @@
 com.android.internal.telephony.CarrierServiceStateTracker$NotificationType
 com.android.internal.telephony.CarrierServiceStateTracker$PrefNetworkNotification
 com.android.internal.telephony.CarrierServiceStateTracker
+com.android.internal.telephony.CarrierServicesSmsFilter$CallbackTimeoutHandler
+com.android.internal.telephony.CarrierServicesSmsFilter$CarrierServicesSmsFilterCallbackInterface
+com.android.internal.telephony.CarrierServicesSmsFilter
 com.android.internal.telephony.CarrierSignalAgent$1
 com.android.internal.telephony.CarrierSignalAgent
-com.android.internal.telephony.CellBroadcastHandler
+com.android.internal.telephony.CarrierSmsUtils
+com.android.internal.telephony.CellNetworkScanResult$1
+com.android.internal.telephony.CellNetworkScanResult
 com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider$1
 com.android.internal.telephony.CellularNetworkService$CellularNetworkServiceProvider
 com.android.internal.telephony.CellularNetworkService
@@ -4733,6 +6703,8 @@
 com.android.internal.telephony.CommandException$Error
 com.android.internal.telephony.CommandException
 com.android.internal.telephony.CommandsInterface
+com.android.internal.telephony.Connection$Listener
+com.android.internal.telephony.Connection$PostDialState
 com.android.internal.telephony.Connection
 com.android.internal.telephony.DctConstants$Activity
 com.android.internal.telephony.DctConstants$State
@@ -4744,36 +6716,60 @@
 com.android.internal.telephony.DeviceStateMonitor$3
 com.android.internal.telephony.DeviceStateMonitor$AccessNetworkThresholds
 com.android.internal.telephony.DeviceStateMonitor
+com.android.internal.telephony.DriverCall$State
+com.android.internal.telephony.DriverCall
+com.android.internal.telephony.EncodeException
 com.android.internal.telephony.ExponentialBackoff$1
 com.android.internal.telephony.ExponentialBackoff$HandlerAdapter
 com.android.internal.telephony.ExponentialBackoff
+com.android.internal.telephony.GlobalSettingsHelper
+com.android.internal.telephony.GsmAlphabet
 com.android.internal.telephony.GsmCdmaCall
 com.android.internal.telephony.GsmCdmaCallTracker$1
+com.android.internal.telephony.GsmCdmaCallTracker$2
+com.android.internal.telephony.GsmCdmaCallTracker$3
 com.android.internal.telephony.GsmCdmaCallTracker
 com.android.internal.telephony.GsmCdmaConnection
 com.android.internal.telephony.GsmCdmaPhone$1
 com.android.internal.telephony.GsmCdmaPhone$2
 com.android.internal.telephony.GsmCdmaPhone$3
+com.android.internal.telephony.GsmCdmaPhone$Cfu
 com.android.internal.telephony.GsmCdmaPhone
 com.android.internal.telephony.HalVersion
 com.android.internal.telephony.HardwareConfig
+com.android.internal.telephony.HbpcdUtils
 com.android.internal.telephony.ICarrierConfigLoader$Stub$Proxy
 com.android.internal.telephony.ICarrierConfigLoader$Stub
 com.android.internal.telephony.ICarrierConfigLoader
+com.android.internal.telephony.IIccPhoneBook$Stub$Proxy
 com.android.internal.telephony.IIccPhoneBook$Stub
 com.android.internal.telephony.IIccPhoneBook
+com.android.internal.telephony.IIntegerConsumer$Stub$Proxy
+com.android.internal.telephony.IIntegerConsumer$Stub
+com.android.internal.telephony.IIntegerConsumer
+com.android.internal.telephony.IMms$Stub$Proxy
+com.android.internal.telephony.IMms$Stub
+com.android.internal.telephony.IMms
+com.android.internal.telephony.INumberVerificationCallback$Stub$Proxy
+com.android.internal.telephony.INumberVerificationCallback$Stub
+com.android.internal.telephony.INumberVerificationCallback
+com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub$Proxy
 com.android.internal.telephony.IOnSubscriptionsChangedListener$Stub
 com.android.internal.telephony.IOnSubscriptionsChangedListener
+com.android.internal.telephony.IPhoneStateListener$Stub$Proxy
 com.android.internal.telephony.IPhoneStateListener$Stub
 com.android.internal.telephony.IPhoneStateListener
 com.android.internal.telephony.IPhoneSubInfo$Stub$Proxy
 com.android.internal.telephony.IPhoneSubInfo$Stub
 com.android.internal.telephony.IPhoneSubInfo
+com.android.internal.telephony.ISetOpportunisticDataCallback$Stub$Proxy
 com.android.internal.telephony.ISetOpportunisticDataCallback$Stub
 com.android.internal.telephony.ISetOpportunisticDataCallback
+com.android.internal.telephony.ISms$Stub$Proxy
 com.android.internal.telephony.ISms$Stub
 com.android.internal.telephony.ISms
 com.android.internal.telephony.ISmsImplBase
+com.android.internal.telephony.IState
 com.android.internal.telephony.ISub$Stub$Proxy
 com.android.internal.telephony.ISub$Stub
 com.android.internal.telephony.ISub
@@ -4783,9 +6779,11 @@
 com.android.internal.telephony.ITelephonyRegistry$Stub$Proxy
 com.android.internal.telephony.ITelephonyRegistry$Stub
 com.android.internal.telephony.ITelephonyRegistry
+com.android.internal.telephony.IWapPushManager
 com.android.internal.telephony.IccCard
 com.android.internal.telephony.IccCardConstants$State
 com.android.internal.telephony.IccPhoneBookInterfaceManager$1
+com.android.internal.telephony.IccPhoneBookInterfaceManager$Request
 com.android.internal.telephony.IccPhoneBookInterfaceManager
 com.android.internal.telephony.IccProvider
 com.android.internal.telephony.IccSmsInterfaceManager$1
@@ -4799,20 +6797,33 @@
 com.android.internal.telephony.ImsSmsDispatcher
 com.android.internal.telephony.InboundSmsHandler$1
 com.android.internal.telephony.InboundSmsHandler$2
+com.android.internal.telephony.InboundSmsHandler$CarrierServicesSmsFilterCallback
 com.android.internal.telephony.InboundSmsHandler$DefaultState
 com.android.internal.telephony.InboundSmsHandler$DeliveringState
 com.android.internal.telephony.InboundSmsHandler$IdleState
 com.android.internal.telephony.InboundSmsHandler$NewMessageNotificationActionReceiver
+com.android.internal.telephony.InboundSmsHandler$SmsBroadcastReceiver
 com.android.internal.telephony.InboundSmsHandler$StartupState
 com.android.internal.telephony.InboundSmsHandler$WaitingState
 com.android.internal.telephony.InboundSmsHandler
+com.android.internal.telephony.InboundSmsTracker
+com.android.internal.telephony.IntRangeManager$ClientRange
+com.android.internal.telephony.IntRangeManager$IntRange
 com.android.internal.telephony.IntRangeManager
 com.android.internal.telephony.IntentBroadcaster$1
 com.android.internal.telephony.IntentBroadcaster
+com.android.internal.telephony.LastCallFailCause
+com.android.internal.telephony.LinkCapacityEstimate
+com.android.internal.telephony.LocalLog
 com.android.internal.telephony.LocaleTracker$1
 com.android.internal.telephony.LocaleTracker
 com.android.internal.telephony.MccTable$MccEntry
 com.android.internal.telephony.MccTable
+com.android.internal.telephony.MmiCode
+com.android.internal.telephony.MultiSimSettingController$1
+com.android.internal.telephony.MultiSimSettingController$UpdateDefaultAction
+com.android.internal.telephony.MultiSimSettingController
+com.android.internal.telephony.NetworkRegistrationManager$1
 com.android.internal.telephony.NetworkRegistrationManager$NetworkRegStateCallback
 com.android.internal.telephony.NetworkRegistrationManager$NetworkServiceConnection
 com.android.internal.telephony.NetworkRegistrationManager$RegManagerDeathRecipient
@@ -4820,32 +6831,35 @@
 com.android.internal.telephony.NetworkScanRequestTracker$1
 com.android.internal.telephony.NetworkScanRequestTracker$NetworkScanRequestScheduler
 com.android.internal.telephony.NetworkScanRequestTracker
-com.android.internal.telephony.NewNitzStateMachine$1
-com.android.internal.telephony.NewNitzStateMachine
-com.android.internal.telephony.NewTimeServiceHelper$1
-com.android.internal.telephony.NewTimeServiceHelper$Listener
-com.android.internal.telephony.NewTimeServiceHelper
+com.android.internal.telephony.NitzData
 com.android.internal.telephony.NitzStateMachine$DeviceState
 com.android.internal.telephony.NitzStateMachine
+com.android.internal.telephony.NitzStateMachineImpl
 com.android.internal.telephony.OemHookIndication
 com.android.internal.telephony.OemHookResponse
-com.android.internal.telephony.Phone$1
+com.android.internal.telephony.OperatorInfo$1
+com.android.internal.telephony.OperatorInfo$State
+com.android.internal.telephony.OperatorInfo
 com.android.internal.telephony.Phone
-com.android.internal.telephony.PhoneConfigurationManager$MainThreadHandler
 com.android.internal.telephony.PhoneConfigurationManager
-com.android.internal.telephony.PhoneConfigurationModels
 com.android.internal.telephony.PhoneConstantConversions$1
 com.android.internal.telephony.PhoneConstantConversions
 com.android.internal.telephony.PhoneConstants$DataState
 com.android.internal.telephony.PhoneConstants$State
 com.android.internal.telephony.PhoneFactory
+com.android.internal.telephony.PhoneInternalInterface$DataActivityState
+com.android.internal.telephony.PhoneInternalInterface$DialArgs$Builder
+com.android.internal.telephony.PhoneInternalInterface$DialArgs
+com.android.internal.telephony.PhoneInternalInterface$SuppService
 com.android.internal.telephony.PhoneInternalInterface
 com.android.internal.telephony.PhoneNotifier
 com.android.internal.telephony.PhoneSubInfoController$CallPhoneMethodHelper
 com.android.internal.telephony.PhoneSubInfoController$PermissionCheckHelper
 com.android.internal.telephony.PhoneSubInfoController
-com.android.internal.telephony.PhoneSwitcher$3
-com.android.internal.telephony.PhoneSwitcher$4
+com.android.internal.telephony.PhoneSwitcher$1
+com.android.internal.telephony.PhoneSwitcher$2
+com.android.internal.telephony.PhoneSwitcher$DefaultNetworkCallback
+com.android.internal.telephony.PhoneSwitcher$EmergencyOverrideRequest
 com.android.internal.telephony.PhoneSwitcher$PhoneState
 com.android.internal.telephony.PhoneSwitcher$PhoneSwitcherNetworkRequestListener
 com.android.internal.telephony.PhoneSwitcher
@@ -4856,6 +6870,7 @@
 com.android.internal.telephony.RIL
 com.android.internal.telephony.RILConstants
 com.android.internal.telephony.RILRequest
+com.android.internal.telephony.RadioBugDetector
 com.android.internal.telephony.RadioCapability
 com.android.internal.telephony.RadioConfig$ServiceDeathRecipient
 com.android.internal.telephony.RadioConfig
@@ -4865,10 +6880,17 @@
 com.android.internal.telephony.RadioResponse
 com.android.internal.telephony.RatRatcheter$1
 com.android.internal.telephony.RatRatcheter
+com.android.internal.telephony.RegistrantList
 com.android.internal.telephony.RestrictedState
+com.android.internal.telephony.RetryManager$RetryRec
 com.android.internal.telephony.RetryManager
 com.android.internal.telephony.RilWakelockInfo
+com.android.internal.telephony.SMSDispatcher$DataSmsSender
 com.android.internal.telephony.SMSDispatcher$SettingsObserver
+com.android.internal.telephony.SMSDispatcher$SmsSender
+com.android.internal.telephony.SMSDispatcher$SmsSenderCallback
+com.android.internal.telephony.SMSDispatcher$SmsTracker
+com.android.internal.telephony.SMSDispatcher$TextSmsSender
 com.android.internal.telephony.SMSDispatcher
 com.android.internal.telephony.ServiceStateTracker$1
 com.android.internal.telephony.ServiceStateTracker$SstSubscriptionsChangedListener
@@ -4881,21 +6903,27 @@
 com.android.internal.telephony.SmsApplication
 com.android.internal.telephony.SmsBroadcastUndelivered$1
 com.android.internal.telephony.SmsBroadcastUndelivered$ScanRawTableThread
+com.android.internal.telephony.SmsBroadcastUndelivered$SmsReferenceKey
 com.android.internal.telephony.SmsBroadcastUndelivered
+com.android.internal.telephony.SmsConstants$MessageClass
+com.android.internal.telephony.SmsController
 com.android.internal.telephony.SmsDispatchersController$1
 com.android.internal.telephony.SmsDispatchersController
+com.android.internal.telephony.SmsMessageBase
+com.android.internal.telephony.SmsNumberUtils
+com.android.internal.telephony.SmsPermissions
+com.android.internal.telephony.SmsResponse
 com.android.internal.telephony.SmsStorageMonitor$1
 com.android.internal.telephony.SmsStorageMonitor
 com.android.internal.telephony.SmsUsageMonitor$SettingsObserver
 com.android.internal.telephony.SmsUsageMonitor$SettingsObserverHandler
 com.android.internal.telephony.SmsUsageMonitor
-com.android.internal.telephony.SubscriptionController$ScLocalLog
+com.android.internal.telephony.State
+com.android.internal.telephony.StateMachine
 com.android.internal.telephony.SubscriptionController
 com.android.internal.telephony.SubscriptionInfoUpdater$1
+com.android.internal.telephony.SubscriptionInfoUpdater$UpdateEmbeddedSubsCallback
 com.android.internal.telephony.SubscriptionInfoUpdater
-com.android.internal.telephony.SubscriptionMonitor$1
-com.android.internal.telephony.SubscriptionMonitor$2
-com.android.internal.telephony.SubscriptionMonitor
 com.android.internal.telephony.TelephonyCapabilities
 com.android.internal.telephony.TelephonyComponentFactory$InjectedComponents
 com.android.internal.telephony.TelephonyComponentFactory
@@ -4903,49 +6931,106 @@
 com.android.internal.telephony.TelephonyPermissions
 com.android.internal.telephony.TelephonyTester$1
 com.android.internal.telephony.TelephonyTester
+com.android.internal.telephony.TimeServiceHelper
 com.android.internal.telephony.TimeZoneLookupHelper$CountryResult
 com.android.internal.telephony.TimeZoneLookupHelper
+com.android.internal.telephony.UUSInfo
 com.android.internal.telephony.UiccPhoneBookController
-com.android.internal.telephony.UiccSmsController
+com.android.internal.telephony.VisualVoicemailSmsFilter$1
+com.android.internal.telephony.VisualVoicemailSmsFilter$PhoneAccountHandleConverter
+com.android.internal.telephony.VisualVoicemailSmsFilter
 com.android.internal.telephony.WakeLockStateMachine$1
 com.android.internal.telephony.WakeLockStateMachine$DefaultState
 com.android.internal.telephony.WakeLockStateMachine$IdleState
 com.android.internal.telephony.WakeLockStateMachine$WaitingState
 com.android.internal.telephony.WakeLockStateMachine
 com.android.internal.telephony.WapPushOverSms$1
-com.android.internal.telephony.WapPushOverSms$BindServiceThread
 com.android.internal.telephony.WapPushOverSms
+com.android.internal.telephony.cat.AppInterface$CommandType
 com.android.internal.telephony.cat.AppInterface
+com.android.internal.telephony.cat.BIPClientParams
+com.android.internal.telephony.cat.BerTlv
+com.android.internal.telephony.cat.CallSetupParams
+com.android.internal.telephony.cat.CatCmdMessage$1
+com.android.internal.telephony.cat.CatCmdMessage
+com.android.internal.telephony.cat.CatException
 com.android.internal.telephony.cat.CatLog
+com.android.internal.telephony.cat.CatResponseMessage
+com.android.internal.telephony.cat.CatService$1
 com.android.internal.telephony.cat.CatService
+com.android.internal.telephony.cat.CommandParams
+com.android.internal.telephony.cat.CommandParamsFactory$1
+com.android.internal.telephony.cat.CommandParamsFactory
+com.android.internal.telephony.cat.ComprehensionTlv
+com.android.internal.telephony.cat.ComprehensionTlvTag
+com.android.internal.telephony.cat.DTTZResponseData
+com.android.internal.telephony.cat.DisplayTextParams
+com.android.internal.telephony.cat.IconLoader
+com.android.internal.telephony.cat.LanguageParams
+com.android.internal.telephony.cat.LanguageResponseData
+com.android.internal.telephony.cat.LaunchBrowserParams
+com.android.internal.telephony.cat.ResponseData
+com.android.internal.telephony.cat.ResultCode
+com.android.internal.telephony.cat.ResultException
+com.android.internal.telephony.cat.RilMessage
+com.android.internal.telephony.cat.RilMessageDecoder$StateCmdParamsReady
+com.android.internal.telephony.cat.RilMessageDecoder$StateStart
+com.android.internal.telephony.cat.RilMessageDecoder
+com.android.internal.telephony.cat.ValueParser
+com.android.internal.telephony.cdma.CdmaCallWaitingNotification
 com.android.internal.telephony.cdma.CdmaInboundSmsHandler
 com.android.internal.telephony.cdma.CdmaSMSDispatcher
-com.android.internal.telephony.cdma.CdmaServiceCategoryProgramHandler$1
-com.android.internal.telephony.cdma.CdmaServiceCategoryProgramHandler
 com.android.internal.telephony.cdma.CdmaSmsBroadcastConfigInfo
 com.android.internal.telephony.cdma.CdmaSubscriptionSourceManager
+com.android.internal.telephony.cdma.EriInfo
 com.android.internal.telephony.cdma.EriManager$EriFile
 com.android.internal.telephony.cdma.EriManager
+com.android.internal.telephony.cdma.SmsMessage
+com.android.internal.telephony.cdnr.CarrierDisplayNameData$1
+com.android.internal.telephony.cdnr.CarrierDisplayNameData$Builder
+com.android.internal.telephony.cdnr.CarrierDisplayNameData
+com.android.internal.telephony.cdnr.CarrierDisplayNameResolver$CarrierDisplayNameConditionRule
+com.android.internal.telephony.cdnr.CarrierDisplayNameResolver
+com.android.internal.telephony.dataconnection.-$$Lambda$DataConnection$-tFSpFGzTv_UdpzJlTMOvg8VO98
+com.android.internal.telephony.dataconnection.-$$Lambda$XZAGhHrbkIDyusER4MAM6luKcT0
 com.android.internal.telephony.dataconnection.AccessNetworksManager$1
 com.android.internal.telephony.dataconnection.AccessNetworksManager
 com.android.internal.telephony.dataconnection.ApnContext
+com.android.internal.telephony.dataconnection.ApnSettingUtils
 com.android.internal.telephony.dataconnection.CellularDataService$CellularDataServiceProvider$1
 com.android.internal.telephony.dataconnection.CellularDataService$CellularDataServiceProvider
 com.android.internal.telephony.dataconnection.CellularDataService
+com.android.internal.telephony.dataconnection.DataConnection$2
+com.android.internal.telephony.dataconnection.DataConnection$ConnectionParams
+com.android.internal.telephony.dataconnection.DataConnection$DcActivatingState
+com.android.internal.telephony.dataconnection.DataConnection$DcActiveState
+com.android.internal.telephony.dataconnection.DataConnection$DcDefaultState
+com.android.internal.telephony.dataconnection.DataConnection$DcDisconnectingState
+com.android.internal.telephony.dataconnection.DataConnection$DcDisconnectionErrorCreatingConnection
+com.android.internal.telephony.dataconnection.DataConnection$DcInactiveState
+com.android.internal.telephony.dataconnection.DataConnection$DisconnectParams
+com.android.internal.telephony.dataconnection.DataConnection$SetupResult
+com.android.internal.telephony.dataconnection.DataConnection$UpdateLinkPropertyResult
 com.android.internal.telephony.dataconnection.DataConnection
 com.android.internal.telephony.dataconnection.DataConnectionReasons$DataAllowedReasonType
 com.android.internal.telephony.dataconnection.DataConnectionReasons$DataDisallowedReasonType
 com.android.internal.telephony.dataconnection.DataConnectionReasons
+com.android.internal.telephony.dataconnection.DataEnabledOverride$OverrideConditions
+com.android.internal.telephony.dataconnection.DataEnabledOverride$OverrideRule
+com.android.internal.telephony.dataconnection.DataEnabledOverride
+com.android.internal.telephony.dataconnection.DataEnabledSettings$1
+com.android.internal.telephony.dataconnection.DataEnabledSettings$2
 com.android.internal.telephony.dataconnection.DataEnabledSettings
+com.android.internal.telephony.dataconnection.DataServiceManager$1
 com.android.internal.telephony.dataconnection.DataServiceManager$CellularDataServiceCallback
 com.android.internal.telephony.dataconnection.DataServiceManager$CellularDataServiceConnection
 com.android.internal.telephony.dataconnection.DataServiceManager$DataServiceManagerDeathRecipient
 com.android.internal.telephony.dataconnection.DataServiceManager
 com.android.internal.telephony.dataconnection.DcController$1
-com.android.internal.telephony.dataconnection.DcController$2
 com.android.internal.telephony.dataconnection.DcController$DccDefaultState
 com.android.internal.telephony.dataconnection.DcController
 com.android.internal.telephony.dataconnection.DcFailBringUp
+com.android.internal.telephony.dataconnection.DcNetworkAgent
 com.android.internal.telephony.dataconnection.DcRequest
 com.android.internal.telephony.dataconnection.DcTesterDeactivateAll$1
 com.android.internal.telephony.dataconnection.DcTesterDeactivateAll
@@ -4954,42 +7039,74 @@
 com.android.internal.telephony.dataconnection.DcTracker$1
 com.android.internal.telephony.dataconnection.DcTracker$2
 com.android.internal.telephony.dataconnection.DcTracker$3
+com.android.internal.telephony.dataconnection.DcTracker$4
+com.android.internal.telephony.dataconnection.DcTracker$5
 com.android.internal.telephony.dataconnection.DcTracker$ApnChangeObserver
 com.android.internal.telephony.dataconnection.DcTracker$DataStallRecoveryHandler
 com.android.internal.telephony.dataconnection.DcTracker$DctOnSubscriptionsChangedListener
+com.android.internal.telephony.dataconnection.DcTracker$ProvisionNotificationBroadcastReceiver
 com.android.internal.telephony.dataconnection.DcTracker$RetryFailures
 com.android.internal.telephony.dataconnection.DcTracker$TxRxSum
 com.android.internal.telephony.dataconnection.DcTracker
+com.android.internal.telephony.dataconnection.KeepaliveStatus$1
+com.android.internal.telephony.dataconnection.KeepaliveStatus
 com.android.internal.telephony.dataconnection.TelephonyNetworkFactory$InternalHandler
 com.android.internal.telephony.dataconnection.TelephonyNetworkFactory
+com.android.internal.telephony.dataconnection.TransportManager$HandoverParams
 com.android.internal.telephony.dataconnection.TransportManager
+com.android.internal.telephony.emergency.EmergencyNumberTracker$1
 com.android.internal.telephony.emergency.EmergencyNumberTracker
+com.android.internal.telephony.euicc.-$$Lambda$EuiccConnector$ConnectedState$4$S52i3hpE3-FGho807KZ1LR5rXQM
 com.android.internal.telephony.euicc.EuiccCardController$SimSlotStatusChangedBroadcastReceiver
 com.android.internal.telephony.euicc.EuiccCardController
 com.android.internal.telephony.euicc.EuiccConnector$1
 com.android.internal.telephony.euicc.EuiccConnector$AvailableState
+com.android.internal.telephony.euicc.EuiccConnector$BaseEuiccCommandCallback
 com.android.internal.telephony.euicc.EuiccConnector$BindingState
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$10
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$11
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$12
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$13
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$1
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$2
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$3
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$4
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$5
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$6
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$7
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$8
+com.android.internal.telephony.euicc.EuiccConnector$ConnectedState$9
 com.android.internal.telephony.euicc.EuiccConnector$ConnectedState
+com.android.internal.telephony.euicc.EuiccConnector$DeleteRequest
 com.android.internal.telephony.euicc.EuiccConnector$DisconnectedState
+com.android.internal.telephony.euicc.EuiccConnector$DownloadRequest
 com.android.internal.telephony.euicc.EuiccConnector$EuiccPackageMonitor
+com.android.internal.telephony.euicc.EuiccConnector$GetDefaultListRequest
+com.android.internal.telephony.euicc.EuiccConnector$GetEuiccProfileInfoListCommandCallback
+com.android.internal.telephony.euicc.EuiccConnector$GetMetadataRequest
+com.android.internal.telephony.euicc.EuiccConnector$SwitchRequest
 com.android.internal.telephony.euicc.EuiccConnector$UnavailableState
+com.android.internal.telephony.euicc.EuiccConnector$UpdateNicknameRequest
 com.android.internal.telephony.euicc.EuiccConnector
+com.android.internal.telephony.euicc.EuiccController$3
 com.android.internal.telephony.euicc.EuiccController
 com.android.internal.telephony.euicc.IEuiccCardController$Stub
 com.android.internal.telephony.euicc.IEuiccCardController
+com.android.internal.telephony.euicc.IEuiccController$Stub$Proxy
 com.android.internal.telephony.euicc.IEuiccController$Stub
 com.android.internal.telephony.euicc.IEuiccController
-com.android.internal.telephony.gsm.GsmCellBroadcastHandler
 com.android.internal.telephony.gsm.GsmInboundSmsHandler
+com.android.internal.telephony.gsm.GsmMmiCode
 com.android.internal.telephony.gsm.GsmSMSDispatcher
+com.android.internal.telephony.gsm.SimTlv
 com.android.internal.telephony.gsm.SmsBroadcastConfigInfo
+com.android.internal.telephony.gsm.SmsMessage
+com.android.internal.telephony.gsm.SuppServiceNotification
 com.android.internal.telephony.gsm.UsimDataDownloadHandler
-com.android.internal.telephony.ims.-$$Lambda$ImsResolver$SIkPixr-qGLIK-usUJIKu6S5BBs
-com.android.internal.telephony.ims.-$$Lambda$ImsResolver$VfY5To_kbbTJevLzywTg-_S1JhA
-com.android.internal.telephony.ims.-$$Lambda$ImsResolver$aWLlEvfonhYSfDR8cVsM6A5pmqI
+com.android.internal.telephony.gsm.UsimPhoneBookManager$File
+com.android.internal.telephony.gsm.UsimPhoneBookManager$PbrRecord
+com.android.internal.telephony.gsm.UsimPhoneBookManager
 com.android.internal.telephony.ims.-$$Lambda$ImsResolver$pNx4XUM9FmR6cV_MCAGiEt8F4pg
-com.android.internal.telephony.ims.-$$Lambda$ImsServiceController$w3xbtqEhKr7IY81qFuw0e94p84Y
-com.android.internal.telephony.ims.-$$Lambda$WVd6ghNMbVDukmkxia3ZwNeZzEY
 com.android.internal.telephony.ims.-$$Lambda$WamP7BPq0j01TgYE3GvUqU3b-rs
 com.android.internal.telephony.ims.ImsResolver$1
 com.android.internal.telephony.ims.ImsResolver$2
@@ -4998,10 +7115,12 @@
 com.android.internal.telephony.ims.ImsResolver$5
 com.android.internal.telephony.ims.ImsResolver$6
 com.android.internal.telephony.ims.ImsResolver$7
+com.android.internal.telephony.ims.ImsResolver$8
 com.android.internal.telephony.ims.ImsResolver$ImsDynamicQueryManagerFactory
 com.android.internal.telephony.ims.ImsResolver$ImsServiceControllerFactory
 com.android.internal.telephony.ims.ImsResolver$ImsServiceInfo
 com.android.internal.telephony.ims.ImsResolver$SubscriptionManagerProxy
+com.android.internal.telephony.ims.ImsResolver$TelephonyManagerProxy
 com.android.internal.telephony.ims.ImsResolver
 com.android.internal.telephony.ims.ImsServiceController$1
 com.android.internal.telephony.ims.ImsServiceController$2
@@ -5013,6 +7132,7 @@
 com.android.internal.telephony.ims.ImsServiceController$ImsServiceControllerCallbacks
 com.android.internal.telephony.ims.ImsServiceController$RebindRetry
 com.android.internal.telephony.ims.ImsServiceController
+com.android.internal.telephony.ims.ImsServiceFeatureQueryManager$ImsServiceFeatureQuery
 com.android.internal.telephony.ims.ImsServiceFeatureQueryManager$Listener
 com.android.internal.telephony.ims.ImsServiceFeatureQueryManager
 com.android.internal.telephony.imsphone.-$$Lambda$ImsPhoneCallTracker$QlPVd_3u4_verjHUDnkn6zaSe54
@@ -5024,9 +7144,11 @@
 com.android.internal.telephony.imsphone.ImsExternalCallTracker$ImsCallNotify
 com.android.internal.telephony.imsphone.ImsExternalCallTracker
 com.android.internal.telephony.imsphone.ImsExternalConnection$Listener
+com.android.internal.telephony.imsphone.ImsExternalConnection
 com.android.internal.telephony.imsphone.ImsPhone$1
 com.android.internal.telephony.imsphone.ImsPhone$2
 com.android.internal.telephony.imsphone.ImsPhone$3
+com.android.internal.telephony.imsphone.ImsPhone$Cf
 com.android.internal.telephony.imsphone.ImsPhone
 com.android.internal.telephony.imsphone.ImsPhoneBase
 com.android.internal.telephony.imsphone.ImsPhoneCall
@@ -5046,92 +7168,224 @@
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker$SharedPreferenceProxy
 com.android.internal.telephony.imsphone.ImsPhoneCallTracker
 com.android.internal.telephony.imsphone.ImsPhoneCommandInterface
+com.android.internal.telephony.imsphone.ImsPhoneConnection
 com.android.internal.telephony.imsphone.ImsPhoneFactory
+com.android.internal.telephony.imsphone.ImsPhoneMmiCode
 com.android.internal.telephony.imsphone.ImsPullCall
+com.android.internal.telephony.metrics.-$$Lambda$TelephonyMetrics$fLmZDbNadlr6LF7zSJ6jCR1AAsk
+com.android.internal.telephony.metrics.-$$Lambda$TelephonyMetrics$tQOsX1lKb2eTuPp-1rpkeIAEOoY
+com.android.internal.telephony.metrics.-$$Lambda$TelephonyMetrics$x2dJi76S2YQdpSTfY8RZ8qC_K6g
 com.android.internal.telephony.metrics.CallSessionEventBuilder
 com.android.internal.telephony.metrics.InProgressCallSession
 com.android.internal.telephony.metrics.InProgressSmsSession
+com.android.internal.telephony.metrics.ModemPowerMetrics
 com.android.internal.telephony.metrics.SmsSessionEventBuilder
 com.android.internal.telephony.metrics.TelephonyEventBuilder
+com.android.internal.telephony.metrics.TelephonyMetrics$1
 com.android.internal.telephony.metrics.TelephonyMetrics
 com.android.internal.telephony.nano.CarrierIdProto$CarrierAttribute
 com.android.internal.telephony.nano.CarrierIdProto$CarrierId
 com.android.internal.telephony.nano.CarrierIdProto$CarrierList
 com.android.internal.telephony.nano.TelephonyProto$ActiveSubscriptionInfo
+com.android.internal.telephony.nano.TelephonyProto$EmergencyNumberInfo
 com.android.internal.telephony.nano.TelephonyProto$ImsCapabilities
 com.android.internal.telephony.nano.TelephonyProto$ImsConnectionState
 com.android.internal.telephony.nano.TelephonyProto$ImsReasonInfo
+com.android.internal.telephony.nano.TelephonyProto$ModemPowerStats
 com.android.internal.telephony.nano.TelephonyProto$RilDataCall
 com.android.internal.telephony.nano.TelephonyProto$SmsSession$Event
+com.android.internal.telephony.nano.TelephonyProto$SmsSession
 com.android.internal.telephony.nano.TelephonyProto$TelephonyCallSession$Event$RilCall
 com.android.internal.telephony.nano.TelephonyProto$TelephonyCallSession$Event
+com.android.internal.telephony.nano.TelephonyProto$TelephonyCallSession
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$CarrierIdMatching
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$CarrierIdMatchingResult
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$DataSwitch
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$OnDemandDataSwitch
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$RilDeactivateDataCall
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$RilSetupDataCall
+com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent$RilSetupDataCallResponse
 com.android.internal.telephony.nano.TelephonyProto$TelephonyEvent
+com.android.internal.telephony.nano.TelephonyProto$TelephonyHistogram
+com.android.internal.telephony.nano.TelephonyProto$TelephonyLog
 com.android.internal.telephony.nano.TelephonyProto$TelephonyServiceState$TelephonyOperator
 com.android.internal.telephony.nano.TelephonyProto$TelephonyServiceState
+com.android.internal.telephony.nano.TelephonyProto$TelephonySettings
+com.android.internal.telephony.nano.TelephonyProto$Time
 com.android.internal.telephony.protobuf.nano.CodedInputByteBufferNano
+com.android.internal.telephony.protobuf.nano.CodedOutputByteBufferNano$OutOfSpaceException
 com.android.internal.telephony.protobuf.nano.CodedOutputByteBufferNano
 com.android.internal.telephony.protobuf.nano.ExtendableMessageNano
 com.android.internal.telephony.protobuf.nano.InternalNano
 com.android.internal.telephony.protobuf.nano.InvalidProtocolBufferNanoException
 com.android.internal.telephony.protobuf.nano.MessageNano
+com.android.internal.telephony.protobuf.nano.MessageNanoPrinter
 com.android.internal.telephony.protobuf.nano.WireFormatNano
+com.android.internal.telephony.sip.SipPhone
+com.android.internal.telephony.sip.SipPhoneBase
 com.android.internal.telephony.test.SimulatedRadioControl
+com.android.internal.telephony.uicc.AdnRecord$1
+com.android.internal.telephony.uicc.AdnRecord
+com.android.internal.telephony.uicc.AdnRecordCache
+com.android.internal.telephony.uicc.AdnRecordLoader
 com.android.internal.telephony.uicc.AnswerToReset$HistoricalBytes
 com.android.internal.telephony.uicc.AnswerToReset$InterfaceByte
 com.android.internal.telephony.uicc.AnswerToReset
+com.android.internal.telephony.uicc.CarrierTestOverride
+com.android.internal.telephony.uicc.CsimFileHandler
 com.android.internal.telephony.uicc.IccCardApplicationStatus$AppState
 com.android.internal.telephony.uicc.IccCardApplicationStatus$AppType
+com.android.internal.telephony.uicc.IccCardApplicationStatus$PersoSubState
 com.android.internal.telephony.uicc.IccCardApplicationStatus
 com.android.internal.telephony.uicc.IccCardStatus$CardState
 com.android.internal.telephony.uicc.IccCardStatus$PinState
 com.android.internal.telephony.uicc.IccCardStatus
 com.android.internal.telephony.uicc.IccConstants
+com.android.internal.telephony.uicc.IccException
+com.android.internal.telephony.uicc.IccFileHandler$LoadLinearFixedContext
+com.android.internal.telephony.uicc.IccFileHandler
+com.android.internal.telephony.uicc.IccFileNotFound
+com.android.internal.telephony.uicc.IccFileTypeMismatch
 com.android.internal.telephony.uicc.IccIoResult
+com.android.internal.telephony.uicc.IccRecords$IccRecordLoaded
 com.android.internal.telephony.uicc.IccRecords
+com.android.internal.telephony.uicc.IccRefreshResponse
+com.android.internal.telephony.uicc.IccServiceTable
 com.android.internal.telephony.uicc.IccSlotStatus$SlotState
 com.android.internal.telephony.uicc.IccSlotStatus
 com.android.internal.telephony.uicc.IccUtils
+com.android.internal.telephony.uicc.IccVmNotSupportedException
+com.android.internal.telephony.uicc.InstallCarrierAppTrampolineActivity
 com.android.internal.telephony.uicc.InstallCarrierAppUtils
+com.android.internal.telephony.uicc.IsimFileHandler
+com.android.internal.telephony.uicc.IsimRecords
+com.android.internal.telephony.uicc.IsimUiccRecords$EfIsimDomainLoaded
+com.android.internal.telephony.uicc.IsimUiccRecords$EfIsimImpiLoaded
+com.android.internal.telephony.uicc.IsimUiccRecords$EfIsimImpuLoaded
+com.android.internal.telephony.uicc.IsimUiccRecords$EfIsimIstLoaded
+com.android.internal.telephony.uicc.IsimUiccRecords$EfIsimPcscfLoaded
+com.android.internal.telephony.uicc.IsimUiccRecords
+com.android.internal.telephony.uicc.PlmnActRecord$1
+com.android.internal.telephony.uicc.PlmnActRecord
+com.android.internal.telephony.uicc.RuimFileHandler
+com.android.internal.telephony.uicc.RuimRecords
+com.android.internal.telephony.uicc.SIMFileHandler
+com.android.internal.telephony.uicc.SIMRecords$1
+com.android.internal.telephony.uicc.SIMRecords$EfPlLoaded
+com.android.internal.telephony.uicc.SIMRecords$EfUsimLiLoaded
+com.android.internal.telephony.uicc.SIMRecords$GetSpnFsmState
+com.android.internal.telephony.uicc.SIMRecords
 com.android.internal.telephony.uicc.UiccCard
+com.android.internal.telephony.uicc.UiccCardApplication$1
+com.android.internal.telephony.uicc.UiccCardApplication$2
 com.android.internal.telephony.uicc.UiccCardApplication
+com.android.internal.telephony.uicc.UiccCarrierPrivilegeRules$1
+com.android.internal.telephony.uicc.UiccCarrierPrivilegeRules$TLV
 com.android.internal.telephony.uicc.UiccCarrierPrivilegeRules
 com.android.internal.telephony.uicc.UiccController$1
 com.android.internal.telephony.uicc.UiccController
+com.android.internal.telephony.uicc.UiccPkcs15$FileHandler
+com.android.internal.telephony.uicc.UiccPkcs15$Pkcs15Selector
+com.android.internal.telephony.uicc.UiccPkcs15
+com.android.internal.telephony.uicc.UiccProfile$1
 com.android.internal.telephony.uicc.UiccProfile$2
 com.android.internal.telephony.uicc.UiccProfile$3
+com.android.internal.telephony.uicc.UiccProfile$4
+com.android.internal.telephony.uicc.UiccProfile$5
 com.android.internal.telephony.uicc.UiccProfile
 com.android.internal.telephony.uicc.UiccSlot
 com.android.internal.telephony.uicc.UiccStateChangedLauncher
+com.android.internal.telephony.uicc.UsimFileHandler
+com.android.internal.telephony.uicc.UsimServiceTable$UsimService
+com.android.internal.telephony.uicc.UsimServiceTable
+com.android.internal.telephony.uicc.VoiceMailConstants
+com.android.internal.telephony.uicc.asn1.InvalidAsn1DataException
+com.android.internal.telephony.uicc.asn1.TagNotFoundException
+com.android.internal.telephony.uicc.euicc.EuiccCard
+com.android.internal.telephony.uicc.euicc.EuiccSpecVersion
 com.android.internal.telephony.util.NotificationChannelController$1
 com.android.internal.telephony.util.NotificationChannelController
+com.android.internal.telephony.util.SMSDispatcherUtil
+com.android.internal.telephony.util.TelephonyUtils
 com.android.internal.telephony.util.VoicemailNotificationSettingsUtil
+com.android.internal.textservice.ISpellCheckerService$Stub$Proxy
+com.android.internal.textservice.ISpellCheckerService$Stub
+com.android.internal.textservice.ISpellCheckerService
 com.android.internal.textservice.ISpellCheckerSession$Stub$Proxy
+com.android.internal.textservice.ISpellCheckerSession$Stub
 com.android.internal.textservice.ISpellCheckerSession
+com.android.internal.textservice.ISpellCheckerSessionListener$Stub$Proxy
 com.android.internal.textservice.ISpellCheckerSessionListener$Stub
 com.android.internal.textservice.ISpellCheckerSessionListener
 com.android.internal.textservice.ITextServicesManager$Stub$Proxy
 com.android.internal.textservice.ITextServicesManager$Stub
 com.android.internal.textservice.ITextServicesManager
+com.android.internal.textservice.ITextServicesSessionListener$Stub$Proxy
 com.android.internal.textservice.ITextServicesSessionListener$Stub
 com.android.internal.textservice.ITextServicesSessionListener
 com.android.internal.transition.EpicenterTranslateClipReveal
+com.android.internal.util.-$$Lambda$DumpUtils$D1OlZP6xIpu72ypnJd0fzx0wd6I
+com.android.internal.util.-$$Lambda$DumpUtils$X8irOs5hfloCKy89_l1HRA1QeG0
+com.android.internal.util.-$$Lambda$DumpUtils$vCLO_0ezRxkpSERUWCFrJ0ph5jg
+com.android.internal.util.-$$Lambda$FunctionalUtils$koCSI8D7Nu5vOJTVTEj0m3leo_U
+com.android.internal.util.-$$Lambda$JwOUSWW2-Jzu15y4Kn4JuPh8tWM
+com.android.internal.util.-$$Lambda$TCbPpgWlKJUHZgFKCczglAvxLfw
+com.android.internal.util.-$$Lambda$eRa1rlfDk6Og2yFeXGHqUGPzRF0
+com.android.internal.util.-$$Lambda$grRTg3idX3yJe9Zyx-tmLBiD1DM
+com.android.internal.util.-$$Lambda$kVylv1rl9MOSbHFZoVyK5dl1kfY
 com.android.internal.util.ArrayUtils
+com.android.internal.util.AsyncChannel$AsyncChannelConnection
+com.android.internal.util.AsyncChannel$DeathMonitor
+com.android.internal.util.AsyncChannel$SyncMessenger$SyncHandler
+com.android.internal.util.AsyncChannel$SyncMessenger
 com.android.internal.util.AsyncChannel
 com.android.internal.util.BitUtils
 com.android.internal.util.CollectionUtils
+com.android.internal.util.ConcurrentUtils$1$1
+com.android.internal.util.ConcurrentUtils$1
+com.android.internal.util.ConcurrentUtils$DirectExecutor
+com.android.internal.util.ConcurrentUtils
+com.android.internal.util.ContrastColorUtil$ColorUtilsFromCompat
+com.android.internal.util.ContrastColorUtil
+com.android.internal.util.DumpUtils$Dump
+com.android.internal.util.DumpUtils
 com.android.internal.util.ExponentiallyBucketedHistogram
 com.android.internal.util.FastMath
 com.android.internal.util.FastPrintWriter$DummyWriter
 com.android.internal.util.FastPrintWriter
 com.android.internal.util.FastXmlSerializer
+com.android.internal.util.FileRotator$FileInfo
+com.android.internal.util.FileRotator$Reader
+com.android.internal.util.FileRotator$Rewriter
+com.android.internal.util.FileRotator$Writer
+com.android.internal.util.FileRotator
+com.android.internal.util.FunctionalUtils$ThrowingConsumer
 com.android.internal.util.FunctionalUtils$ThrowingRunnable
 com.android.internal.util.FunctionalUtils$ThrowingSupplier
+com.android.internal.util.FunctionalUtils
 com.android.internal.util.GrowingArrayUtils
+com.android.internal.util.HexDump
 com.android.internal.util.IState
+com.android.internal.util.IndentingPrintWriter
 com.android.internal.util.IntPair
+com.android.internal.util.JournaledFile
+com.android.internal.util.LatencyTracker$1
+com.android.internal.util.LatencyTracker
 com.android.internal.util.LineBreakBufferedWriter
+com.android.internal.util.LocalLog
 com.android.internal.util.MemInfoReader
+com.android.internal.util.MessageUtils$DuplicateConstantError
+com.android.internal.util.MessageUtils
+com.android.internal.util.NotificationMessagingUtil$1
+com.android.internal.util.NotificationMessagingUtil
+com.android.internal.util.ObjectUtils
+com.android.internal.util.ParseUtils
 com.android.internal.util.Preconditions
+com.android.internal.util.ProcFileReader
+com.android.internal.util.ProgressReporter
+com.android.internal.util.RingBuffer
+com.android.internal.util.RingBufferIndices
+com.android.internal.util.ScreenshotHelper
 com.android.internal.util.StatLogger
 com.android.internal.util.State
 com.android.internal.util.StateMachine$LogRec
@@ -5141,24 +7395,41 @@
 com.android.internal.util.StateMachine$SmHandler$StateInfo
 com.android.internal.util.StateMachine$SmHandler
 com.android.internal.util.StateMachine
+com.android.internal.util.SyncResultReceiver$TimeoutException
 com.android.internal.util.SyncResultReceiver
+com.android.internal.util.ToBooleanFunction
+com.android.internal.util.TokenBucket
+com.android.internal.util.UserIcons
 com.android.internal.util.VirtualRefBasePtr
+com.android.internal.util.WakeupMessage
+com.android.internal.util.XmlUtils$ReadMapCallback
 com.android.internal.util.XmlUtils$WriteMapCallback
 com.android.internal.util.XmlUtils
+com.android.internal.util.function.DecConsumer
+com.android.internal.util.function.DecFunction
 com.android.internal.util.function.HeptConsumer
 com.android.internal.util.function.HeptFunction
+com.android.internal.util.function.HeptPredicate
 com.android.internal.util.function.HexConsumer
 com.android.internal.util.function.HexFunction
+com.android.internal.util.function.HexPredicate
 com.android.internal.util.function.NonaConsumer
 com.android.internal.util.function.NonaFunction
+com.android.internal.util.function.NonaPredicate
 com.android.internal.util.function.OctConsumer
 com.android.internal.util.function.OctFunction
+com.android.internal.util.function.OctPredicate
 com.android.internal.util.function.QuadConsumer
 com.android.internal.util.function.QuadFunction
+com.android.internal.util.function.QuadPredicate
 com.android.internal.util.function.QuintConsumer
 com.android.internal.util.function.QuintFunction
+com.android.internal.util.function.QuintPredicate
 com.android.internal.util.function.TriConsumer
 com.android.internal.util.function.TriFunction
+com.android.internal.util.function.TriPredicate
+com.android.internal.util.function.UndecConsumer
+com.android.internal.util.function.UndecFunction
 com.android.internal.util.function.pooled.ArgumentPlaceholder
 com.android.internal.util.function.pooled.OmniFunction
 com.android.internal.util.function.pooled.PooledConsumer
@@ -5174,13 +7445,19 @@
 com.android.internal.util.function.pooled.PooledSupplier$OfLong
 com.android.internal.util.function.pooled.PooledSupplier
 com.android.internal.view.ActionBarPolicy
+com.android.internal.view.BaseSurfaceHolder
 com.android.internal.view.IInputConnectionWrapper$MyHandler
 com.android.internal.view.IInputConnectionWrapper
+com.android.internal.view.IInputContext$Stub$Proxy
 com.android.internal.view.IInputContext$Stub
 com.android.internal.view.IInputContext
 com.android.internal.view.IInputContextCallback$Stub$Proxy
 com.android.internal.view.IInputContextCallback$Stub
 com.android.internal.view.IInputContextCallback
+com.android.internal.view.IInputMethod$Stub$Proxy
+com.android.internal.view.IInputMethod$Stub
+com.android.internal.view.IInputMethod
+com.android.internal.view.IInputMethodClient$Stub$Proxy
 com.android.internal.view.IInputMethodClient$Stub
 com.android.internal.view.IInputMethodClient
 com.android.internal.view.IInputMethodManager$Stub$Proxy
@@ -5189,26 +7466,39 @@
 com.android.internal.view.IInputMethodSession$Stub$Proxy
 com.android.internal.view.IInputMethodSession$Stub
 com.android.internal.view.IInputMethodSession
+com.android.internal.view.IInputSessionCallback$Stub$Proxy
+com.android.internal.view.IInputSessionCallback$Stub
+com.android.internal.view.IInputSessionCallback
 com.android.internal.view.InputBindResult$1
 com.android.internal.view.InputBindResult
+com.android.internal.view.InputConnectionWrapper$InputContextCallback
+com.android.internal.view.InputConnectionWrapper
+com.android.internal.view.OneShotPreDrawListener
 com.android.internal.view.RootViewSurfaceTaker
+com.android.internal.view.RotationPolicy$1
 com.android.internal.view.RotationPolicy
 com.android.internal.view.SurfaceCallbackHelper$1
 com.android.internal.view.SurfaceCallbackHelper
+com.android.internal.view.WindowManagerPolicyThread
 com.android.internal.view.animation.FallbackLUTInterpolator
 com.android.internal.view.animation.HasNativeInterpolator
 com.android.internal.view.animation.NativeInterpolatorFactory
 com.android.internal.view.animation.NativeInterpolatorFactoryHelper
 com.android.internal.view.menu.ActionMenuItem
+com.android.internal.view.menu.ActionMenuItemView$ActionMenuItemForwardingListener
+com.android.internal.view.menu.ActionMenuItemView$PopupCallback
+com.android.internal.view.menu.ActionMenuItemView
 com.android.internal.view.menu.BaseMenuPresenter
 com.android.internal.view.menu.MenuBuilder$Callback
 com.android.internal.view.menu.MenuBuilder$ItemInvoker
 com.android.internal.view.menu.MenuBuilder
 com.android.internal.view.menu.MenuHelper
 com.android.internal.view.menu.MenuItemImpl
+com.android.internal.view.menu.MenuPopupHelper$1
 com.android.internal.view.menu.MenuPopupHelper
 com.android.internal.view.menu.MenuPresenter$Callback
 com.android.internal.view.menu.MenuPresenter
+com.android.internal.view.menu.MenuView$ItemView
 com.android.internal.view.menu.MenuView
 com.android.internal.view.menu.ShowableListMenu
 com.android.internal.widget.AbsActionBarView$VisibilityAnimListener
@@ -5223,15 +7513,24 @@
 com.android.internal.widget.ActionBarOverlayLayout$5
 com.android.internal.widget.ActionBarOverlayLayout$ActionBarVisibilityCallback
 com.android.internal.widget.ActionBarOverlayLayout$LayoutParams
+com.android.internal.widget.ActionBarOverlayLayout
 com.android.internal.widget.BackgroundFallback
+com.android.internal.widget.DecorCaptionView
 com.android.internal.widget.DecorContentParent
 com.android.internal.widget.DecorToolbar
 com.android.internal.widget.DialogTitle
 com.android.internal.widget.EditableInputConnection
+com.android.internal.widget.ICheckCredentialProgressCallback$Stub$Proxy
+com.android.internal.widget.ICheckCredentialProgressCallback$Stub
+com.android.internal.widget.ICheckCredentialProgressCallback
 com.android.internal.widget.ILockSettings$Stub$Proxy
 com.android.internal.widget.ILockSettings$Stub
 com.android.internal.widget.ILockSettings
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker$1
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker$H
+com.android.internal.widget.LockPatternUtils$StrongAuthTracker
 com.android.internal.widget.LockPatternUtils
+com.android.internal.widget.LockSettingsInternal
 com.android.internal.widget.ScrollBarUtils
 com.android.internal.widget.ToolbarWidgetWrapper$1
 com.android.internal.widget.ToolbarWidgetWrapper
@@ -5334,7 +7633,10 @@
 com.android.okhttp.internal.tls.OkHostnameVerifier
 com.android.okhttp.internal.tls.RealTrustRootIndex
 com.android.okhttp.internal.tls.TrustRootIndex
+com.android.okhttp.internalandroidapi.Dns
 com.android.okhttp.internalandroidapi.HasCacheHolder
+com.android.okhttp.internalandroidapi.HttpURLConnectionFactory$DnsAdapter
+com.android.okhttp.internalandroidapi.HttpURLConnectionFactory
 com.android.okhttp.okio.AsyncTimeout$1
 com.android.okhttp.okio.AsyncTimeout$2
 com.android.okhttp.okio.AsyncTimeout$Watchdog
@@ -5399,6 +7701,7 @@
 com.android.org.bouncycastle.asn1.oiw.OIWObjectIdentifiers
 com.android.org.bouncycastle.asn1.pkcs.PKCSObjectIdentifiers
 com.android.org.bouncycastle.asn1.x509.AlgorithmIdentifier
+com.android.org.bouncycastle.asn1.x509.DSAParameter
 com.android.org.bouncycastle.asn1.x509.SubjectPublicKeyInfo
 com.android.org.bouncycastle.asn1.x509.X509ObjectIdentifiers
 com.android.org.bouncycastle.asn1.x9.X9ECParameters
@@ -5456,8 +7759,10 @@
 com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi$NoPadding
 com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.CipherSpi
 com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.KeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.rsa.RSAUtil
 com.android.org.bouncycastle.jcajce.provider.asymmetric.util.BaseCipherSpi
 com.android.org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi
+com.android.org.bouncycastle.jcajce.provider.asymmetric.util.KeyUtil
 com.android.org.bouncycastle.jcajce.provider.config.ConfigurableProvider
 com.android.org.bouncycastle.jcajce.provider.config.ProviderConfiguration
 com.android.org.bouncycastle.jcajce.provider.config.ProviderConfigurationPermission
@@ -5527,11 +7832,15 @@
 com.android.org.bouncycastle.jce.provider.BouncyCastleProvider
 com.android.org.bouncycastle.jce.provider.BouncyCastleProviderConfiguration
 com.android.org.bouncycastle.jce.provider.CertStoreCollectionSpi
+com.android.org.bouncycastle.jce.spec.ECKeySpec
+com.android.org.bouncycastle.jce.spec.ECPublicKeySpec
 com.android.org.bouncycastle.util.Arrays
 com.android.org.bouncycastle.util.Encodable
 com.android.org.bouncycastle.util.Integers
 com.android.org.bouncycastle.util.Iterable
 com.android.org.bouncycastle.util.Pack
+com.android.org.bouncycastle.util.Properties$1
+com.android.org.bouncycastle.util.Properties
 com.android.org.bouncycastle.util.Strings$1
 com.android.org.bouncycastle.util.Strings
 com.android.org.bouncycastle.util.encoders.Encoder
@@ -5550,14 +7859,41 @@
 com.android.phone.ecc.nano.ProtobufEccData$CountryInfo
 com.android.phone.ecc.nano.ProtobufEccData$EccInfo
 com.android.phone.ecc.nano.WireFormatNano
+com.android.server.AppWidgetBackupBridge
+com.android.server.BootReceiver$1
+com.android.server.BootReceiver
+com.android.server.LocalServices
 com.android.server.NetworkManagementSocketTagger$1
 com.android.server.NetworkManagementSocketTagger$SocketTags
 com.android.server.NetworkManagementSocketTagger
 com.android.server.SystemConfig$PermissionEntry
 com.android.server.SystemConfig$SharedLibraryEntry
 com.android.server.SystemConfig
+com.android.server.WidgetBackupProvider
+com.android.server.backup.AccountManagerBackupHelper
+com.android.server.backup.AccountSyncSettingsBackupHelper
+com.android.server.backup.NotificationBackupHelper
+com.android.server.backup.PermissionBackupHelper
+com.android.server.backup.PreferredActivityBackupHelper
+com.android.server.backup.ShortcutBackupHelper
+com.android.server.backup.SliceBackupHelper
+com.android.server.connectivity.metrics.nano.IpConnectivityLogClass$IpConnectivityEvent
+com.android.server.connectivity.metrics.nano.IpConnectivityLogClass$Pair
+com.android.server.net.BaseNetdEventCallback
+com.android.server.net.BaseNetworkObserver
+com.android.server.sip.SipService$1
+com.android.server.sip.SipService$ConnectivityReceiver
+com.android.server.sip.SipService$MyExecutor
+com.android.server.sip.SipService$SipKeepAliveProcessCallback
+com.android.server.sip.SipService$SipSessionGroupExt
 com.android.server.sip.SipService
+com.android.server.sip.SipSessionGroup$KeepAliveProcessCallback
+com.android.server.sip.SipSessionGroup$SipSessionImpl
+com.android.server.sip.SipWakeLock
+com.android.server.sip.SipWakeupTimer$MyEventComparator
 com.android.server.sip.SipWakeupTimer
+com.android.server.wm.nano.WindowManagerProtos$TaskSnapshotProto
+com.android.telephony.Rlog
 com.google.android.collect.Lists
 com.google.android.collect.Maps
 com.google.android.collect.Sets
@@ -5568,6 +7904,13 @@
 com.google.android.gles_jni.EGLSurfaceImpl
 com.google.android.gles_jni.GLImpl
 com.google.android.mms.MmsException
+com.google.android.rappor.Encoder
+com.google.android.rappor.HmacDrbg
+com.google.android.textclassifier.ActionsSuggestionsModel$Conversation
+com.google.android.textclassifier.ActionsSuggestionsModel$ConversationMessage
+com.google.android.textclassifier.ActionsSuggestionsModel
+com.google.android.textclassifier.AnnotatorModel
+com.google.android.textclassifier.LangIdModel
 com.sun.security.cert.internal.x509.X509V1CertImpl
 dalvik.annotation.optimization.CriticalNative
 dalvik.annotation.optimization.FastNative
@@ -5609,6 +7952,7 @@
 dalvik.system.VMRuntime
 dalvik.system.VMStack
 dalvik.system.ZygoteHooks
+java.io.-$$Lambda$ObjectStreamClass$GVMp_c-BEBrBo_ZKh_HiLSO-fGo
 java.io.Bits
 java.io.BufferedInputStream
 java.io.BufferedOutputStream
@@ -5616,6 +7960,7 @@
 java.io.BufferedWriter
 java.io.ByteArrayInputStream
 java.io.ByteArrayOutputStream
+java.io.CharArrayReader
 java.io.CharArrayWriter
 java.io.Closeable
 java.io.Console
@@ -5673,6 +8018,7 @@
 java.io.ObjectStreamClass$5
 java.io.ObjectStreamClass$Caches
 java.io.ObjectStreamClass$ClassDataSlot
+java.io.ObjectStreamClass$DefaultSUIDCompatibilityListener
 java.io.ObjectStreamClass$EntryFuture
 java.io.ObjectStreamClass$ExceptionInfo
 java.io.ObjectStreamClass$FieldReflector
@@ -6003,6 +8349,7 @@
 java.net.JarURLConnection
 java.net.MalformedURLException
 java.net.MulticastSocket
+java.net.NetPermission
 java.net.NetworkInterface$1checkedAddresses
 java.net.NetworkInterface
 java.net.NoRouteToHostException
@@ -6027,6 +8374,7 @@
 java.net.SocketInputStream
 java.net.SocketOptions
 java.net.SocketOutputStream
+java.net.SocketPermission
 java.net.SocketTimeoutException
 java.net.SocksConsts
 java.net.SocksSocketImpl
@@ -6106,10 +8454,7 @@
 java.nio.charset.CharacterCodingException
 java.nio.charset.Charset
 java.nio.charset.CharsetDecoder
-java.nio.charset.CharsetDecoderICU
 java.nio.charset.CharsetEncoder
-java.nio.charset.CharsetEncoderICU
-java.nio.charset.CharsetICU
 java.nio.charset.CoderResult$1
 java.nio.charset.CoderResult$2
 java.nio.charset.CoderResult$Cache
@@ -6120,12 +8465,15 @@
 java.nio.charset.UnsupportedCharsetException
 java.nio.file.AccessMode
 java.nio.file.CopyOption
+java.nio.file.DirectoryStream$Filter
+java.nio.file.DirectoryStream
 java.nio.file.FileAlreadyExistsException
 java.nio.file.FileSystem
 java.nio.file.FileSystemException
 java.nio.file.FileSystems$DefaultFileSystemHolder$1
 java.nio.file.FileSystems$DefaultFileSystemHolder
 java.nio.file.FileSystems
+java.nio.file.Files$AcceptAllFilter
 java.nio.file.Files
 java.nio.file.LinkOption
 java.nio.file.NoSuchFileException
@@ -6148,6 +8496,7 @@
 java.security.AlgorithmConstraints
 java.security.AlgorithmParameters
 java.security.AlgorithmParametersSpi
+java.security.AllPermission
 java.security.BasicPermission
 java.security.CodeSigner
 java.security.CryptoPrimitive
@@ -6199,6 +8548,7 @@
 java.security.SecureRandom
 java.security.SecureRandomSpi
 java.security.Security
+java.security.SecurityPermission
 java.security.Signature$Delegate
 java.security.Signature
 java.security.SignatureException
@@ -6256,6 +8606,7 @@
 java.security.interfaces.RSAPublicKey
 java.security.spec.AlgorithmParameterSpec
 java.security.spec.DSAParameterSpec
+java.security.spec.DSAPublicKeySpec
 java.security.spec.ECField
 java.security.spec.ECFieldFp
 java.security.spec.ECParameterSpec
@@ -6269,6 +8620,7 @@
 java.security.spec.KeySpec
 java.security.spec.MGF1ParameterSpec
 java.security.spec.PKCS8EncodedKeySpec
+java.security.spec.PSSParameterSpec
 java.security.spec.RSAPrivateCrtKeySpec
 java.security.spec.RSAPrivateKeySpec
 java.security.spec.RSAPublicKeySpec
@@ -6307,6 +8659,7 @@
 java.text.SimpleDateFormat
 java.text.StringCharacterIterator
 java.time.-$$Lambda$Bq8PKq1YWr8nyVk9SSfRYKrOu4A
+java.time.-$$Lambda$up1HpCqucM_DXyY-rpDOyCcdmIA
 java.time.Clock$SystemClock
 java.time.Clock
 java.time.DateTimeException
@@ -6385,6 +8738,7 @@
 java.time.temporal.TemporalAdjusters
 java.time.temporal.TemporalAmount
 java.time.temporal.TemporalField
+java.time.temporal.TemporalQueries
 java.time.temporal.TemporalQuery
 java.time.temporal.TemporalUnit
 java.time.temporal.UnsupportedTemporalTypeException
@@ -6615,11 +8969,11 @@
 java.util.PriorityQueue
 java.util.Properties$LineReader
 java.util.Properties
+java.util.PropertyPermission
 java.util.PropertyResourceBundle
 java.util.Queue
 java.util.Random
 java.util.RandomAccess
-java.util.RandomAccessSubList
 java.util.RegularEnumSet$EnumSetIterator
 java.util.RegularEnumSet
 java.util.ResourceBundle$1
@@ -6657,8 +9011,6 @@
 java.util.Stack
 java.util.StringJoiner
 java.util.StringTokenizer
-java.util.SubList$1
-java.util.SubList
 java.util.TaskQueue
 java.util.TimSort
 java.util.TimeZone
@@ -6883,6 +9235,8 @@
 java.util.function.-$$Lambda$Consumer$fZIgy_f2Fa5seBa8ztxXTExq2p4
 java.util.function.-$$Lambda$DoubleUnaryOperator$EzzlhUGRoL66wVBCG-_euZgC-CA
 java.util.function.-$$Lambda$DoubleUnaryOperator$i7wtM_8Ous-CB32HCfZ4usZ4zaQ
+java.util.function.-$$Lambda$Function$1mm3dZ9IMG2T6zAULCCEh3eoHSY
+java.util.function.-$$Lambda$Predicate$17UUIF1CH_K9duk0ChtjSwOycuM
 java.util.function.BiConsumer
 java.util.function.BiFunction
 java.util.function.BiPredicate
@@ -6895,6 +9249,7 @@
 java.util.function.IntBinaryOperator
 java.util.function.IntConsumer
 java.util.function.IntFunction
+java.util.function.IntPredicate
 java.util.function.IntSupplier
 java.util.function.IntToDoubleFunction
 java.util.function.IntToLongFunction
@@ -6944,6 +9299,7 @@
 java.util.logging.LogRecord
 java.util.logging.Logger$1
 java.util.logging.Logger$LoggerBundle
+java.util.logging.Logger$SystemLoggerHelper
 java.util.logging.Logger
 java.util.logging.LoggingPermission
 java.util.logging.LoggingProxyImpl
@@ -6961,24 +9317,35 @@
 java.util.regex.PatternSyntaxException
 java.util.stream.-$$Lambda$Collectors$0y_EMl863H_U7B4kxyGscB4vAag
 java.util.stream.-$$Lambda$Collectors$F7-we3W7I2plNaGHqh_d2lzmvho
+java.util.stream.-$$Lambda$Collectors$SMVdf7W0ks2OOmS3zJw7DHc-Nhc
 java.util.stream.-$$Lambda$Collectors$TzSZZBK0laNSWMge_uuxANwkkMo
 java.util.stream.-$$Lambda$Collectors$f0IPpRuyw9HZC8FIP30mNjUUUhw
 java.util.stream.-$$Lambda$Collectors$f68RHYk8qNU7alEHPPrPoFuCJO4
 java.util.stream.-$$Lambda$Collectors$iab6bVO3ydceISRiUEq_MRHYzoU
+java.util.stream.-$$Lambda$Collectors$kXZFmh6iM6xf9lJWimhd2Ef6NEs
+java.util.stream.-$$Lambda$Collectors$nKlT6uFghrTzWO44dlFAJFeRr34
 java.util.stream.-$$Lambda$Collectors$pzPeDl3rCgtNVSeZPHZk5f2se60
 java.util.stream.-$$Lambda$Drw47GGUtPrz9CklhlT0v26u-5c
+java.util.stream.-$$Lambda$IntPipeline$R-E7oGjPWog3HR9X-8MdhU1ZGRE
+java.util.stream.-$$Lambda$IntPipeline$ozedusDMANE_B8aDthWCd1L-na4
 java.util.stream.-$$Lambda$MatchOps$_LtFSpSMfVwoPv-8p_1cMGGcaHA
+java.util.stream.-$$Lambda$MatchOps$emK14UX33I4-nqH2o5l7hLEVAy8
 java.util.stream.-$$Lambda$ReferencePipeline$mk6xSsLZAKvG89IyN8pzBoM6otw
 java.util.stream.-$$Lambda$bjSXRjZ5UYwAzkW-XPKwqbJ9BRQ
 java.util.stream.-$$Lambda$dplkPhACWDPIy18ogwdupEQaN40
 java.util.stream.-$$Lambda$i0Jl5dMkfWphZviqg6QdkkWPWRI
 java.util.stream.-$$Lambda$ihOtgw0eLCrsEBOphyN7SwoAlDg
 java.util.stream.-$$Lambda$okJigbB9kSn__oCZ5Do9uFNyF6A
+java.util.stream.-$$Lambda$ono9Bp0lMrKbIRfAAYdycY0_qag
 java.util.stream.-$$Lambda$opQ7JxjVCJzqzgTxGU3LVtqC7is
+java.util.stream.-$$Lambda$r-8H_R_mZJjp9wd0XTLoEAHMNQ0
 java.util.stream.-$$Lambda$ry7iWszBr7beYy31SdRxibDyciQ
 java.util.stream.-$$Lambda$sKPaOkcQePGTRevrwmKVVhCTmTo
+java.util.stream.-$$Lambda$uJ6CkL42Bk73jN5EzP0Fx7o1eVA
+java.util.stream.-$$Lambda$wFoiz-RiPqYBPe0X4aSzbj2iL3g
 java.util.stream.-$$Lambda$yTqQxkqu88ZhKI6fWaTTLwOLF60
 java.util.stream.AbstractPipeline
+java.util.stream.AbstractSpinedBuffer
 java.util.stream.BaseStream
 java.util.stream.Collector$Characteristics
 java.util.stream.Collector
@@ -6986,6 +9353,7 @@
 java.util.stream.Collectors
 java.util.stream.DistinctOps$1$2
 java.util.stream.DistinctOps$1
+java.util.stream.DistinctOps
 java.util.stream.DoubleStream
 java.util.stream.FindOps$FindOp
 java.util.stream.FindOps$FindSink$OfRef
@@ -6996,6 +9364,7 @@
 java.util.stream.ForEachOps
 java.util.stream.IntPipeline$4$1
 java.util.stream.IntPipeline$4
+java.util.stream.IntPipeline$Head
 java.util.stream.IntPipeline$StatelessOp
 java.util.stream.IntPipeline
 java.util.stream.IntStream
@@ -7007,23 +9376,31 @@
 java.util.stream.MatchOps$MatchKind
 java.util.stream.MatchOps$MatchOp
 java.util.stream.MatchOps
+java.util.stream.Node$Builder$OfInt
 java.util.stream.Node$Builder
 java.util.stream.Node$OfDouble
 java.util.stream.Node$OfInt
 java.util.stream.Node$OfLong
 java.util.stream.Node$OfPrimitive
 java.util.stream.Node
+java.util.stream.Nodes$ArrayNode
 java.util.stream.Nodes$EmptyNode$OfDouble
 java.util.stream.Nodes$EmptyNode$OfInt
 java.util.stream.Nodes$EmptyNode$OfLong
 java.util.stream.Nodes$EmptyNode$OfRef
 java.util.stream.Nodes$EmptyNode
+java.util.stream.Nodes$FixedNodeBuilder
+java.util.stream.Nodes$IntArrayNode
+java.util.stream.Nodes$IntFixedNodeBuilder
+java.util.stream.Nodes$IntSpinedNodeBuilder
 java.util.stream.Nodes
 java.util.stream.PipelineHelper
 java.util.stream.ReduceOps$1
 java.util.stream.ReduceOps$1ReducingSink
 java.util.stream.ReduceOps$3
 java.util.stream.ReduceOps$3ReducingSink
+java.util.stream.ReduceOps$5
+java.util.stream.ReduceOps$5ReducingSink
 java.util.stream.ReduceOps$8
 java.util.stream.ReduceOps$8ReducingSink
 java.util.stream.ReduceOps$AccumulatingSink
@@ -7050,6 +9427,8 @@
 java.util.stream.SliceOps$1$1
 java.util.stream.SliceOps$1
 java.util.stream.SliceOps
+java.util.stream.SpinedBuffer$OfInt
+java.util.stream.SpinedBuffer$OfPrimitive
 java.util.stream.Stream
 java.util.stream.StreamOpFlag$MaskBuilder
 java.util.stream.StreamOpFlag$Type
@@ -7058,6 +9437,10 @@
 java.util.stream.StreamSpliterators$InfiniteSupplyingSpliterator$OfRef
 java.util.stream.StreamSpliterators$InfiniteSupplyingSpliterator
 java.util.stream.StreamSupport
+java.util.stream.Streams$2
+java.util.stream.Streams$ConcatSpliterator$OfRef
+java.util.stream.Streams$ConcatSpliterator
+java.util.stream.Streams
 java.util.stream.TerminalOp
 java.util.stream.TerminalSink
 java.util.zip.Adler32
@@ -7180,12 +9563,15 @@
 javax.xml.parsers.ParserConfigurationException
 javax.xml.parsers.SAXParser
 javax.xml.parsers.SAXParserFactory
+libcore.content.type.-$$Lambda$MimeMap$xJ95jeANwfbnj45hvSUmlPtZWWg
+libcore.content.type.MimeMap$MemoizingSupplier
+libcore.content.type.MimeMap
 libcore.icu.DateIntervalFormat
 libcore.icu.DateUtilsBridge
 libcore.icu.ICU
 libcore.icu.LocaleData
-libcore.icu.NativeConverter
 libcore.icu.RelativeDateTimeFormatter$FormatterCache
+libcore.icu.RelativeDateTimeFormatter
 libcore.icu.TimeZoneNames$1
 libcore.icu.TimeZoneNames$ZoneStringsCache
 libcore.icu.TimeZoneNames
@@ -7208,6 +9594,7 @@
 libcore.io.MemoryMappedFile
 libcore.io.NioBufferIterator
 libcore.io.Os
+libcore.io.Streams
 libcore.math.MathUtils
 libcore.net.InetAddressUtils
 libcore.net.NetworkSecurityPolicy$DefaultNetworkSecurityPolicy
@@ -7228,22 +9615,19 @@
 libcore.reflect.TypeVariableImpl
 libcore.reflect.Types
 libcore.reflect.WildcardTypeImpl
-libcore.timezone.-$$Lambda$TimeZoneFinder$ReaderSupplier$gDAfECMWS_ohJ_Rfk1HN7JyDSJA
+libcore.timezone.CountryTimeZones$OffsetResult
 libcore.timezone.CountryTimeZones$TimeZoneMapping
 libcore.timezone.CountryTimeZones
 libcore.timezone.TimeZoneDataFiles
-libcore.timezone.TimeZoneFinder$ReaderSupplier
 libcore.timezone.TimeZoneFinder$SelectiveCountryTimeZonesExtractor
 libcore.timezone.TimeZoneFinder$TimeZonesProcessor
 libcore.timezone.TimeZoneFinder
-libcore.timezone.ZoneInfoDB$TzData$1
-libcore.timezone.ZoneInfoDB$TzData
-libcore.timezone.ZoneInfoDB
 libcore.util.ArrayUtils
 libcore.util.BasicLruCache
 libcore.util.CharsetUtils
 libcore.util.CollectionUtils
 libcore.util.EmptyArray
+libcore.util.HexEncoding
 libcore.util.NativeAllocationRegistry$CleanerRunner
 libcore.util.NativeAllocationRegistry$CleanerThunk
 libcore.util.NativeAllocationRegistry
@@ -7538,6 +9922,7 @@
 sun.security.util.MemoryCache$SoftCacheEntry
 sun.security.util.MemoryCache
 sun.security.util.ObjectIdentifier
+sun.security.util.SecurityConstants
 sun.security.util.SignatureFileVerifier
 sun.security.x509.AVA
 sun.security.x509.AVAKeyword
@@ -7614,6 +9999,7 @@
 sun.util.locale.InternalLocaleBuilder$CaseInsensitiveChar
 sun.util.locale.InternalLocaleBuilder
 sun.util.locale.LanguageTag
+sun.util.locale.LocaleMatcher
 sun.util.locale.LocaleObjectCache$CacheEntry
 sun.util.locale.LocaleObjectCache
 sun.util.locale.LocaleSyntaxException
diff --git a/core/java/android/accessibilityservice/AccessibilityGestureEvent.java b/core/java/android/accessibilityservice/AccessibilityGestureEvent.java
index 47fc7e1..ace13513 100644
--- a/core/java/android/accessibilityservice/AccessibilityGestureEvent.java
+++ b/core/java/android/accessibilityservice/AccessibilityGestureEvent.java
@@ -19,10 +19,25 @@
 
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_UP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_TRIPLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_UP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_UP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_TRIPLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP_AND_HOLD;
 import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN;
@@ -89,7 +104,22 @@
             GESTURE_SWIPE_RIGHT,
             GESTURE_SWIPE_RIGHT_AND_UP,
             GESTURE_SWIPE_RIGHT_AND_LEFT,
-            GESTURE_SWIPE_RIGHT_AND_DOWN
+            GESTURE_SWIPE_RIGHT_AND_DOWN,
+            GESTURE_2_FINGER_SWIPE_DOWN,
+            GESTURE_2_FINGER_SWIPE_LEFT,
+            GESTURE_2_FINGER_SWIPE_RIGHT,
+            GESTURE_2_FINGER_SWIPE_UP,
+            GESTURE_3_FINGER_SWIPE_DOWN,
+            GESTURE_3_FINGER_SWIPE_LEFT,
+            GESTURE_3_FINGER_SWIPE_RIGHT,
+            GESTURE_3_FINGER_SWIPE_UP,
+            GESTURE_4_FINGER_DOUBLE_TAP,
+            GESTURE_4_FINGER_SINGLE_TAP,
+            GESTURE_4_FINGER_SWIPE_DOWN,
+            GESTURE_4_FINGER_SWIPE_LEFT,
+            GESTURE_4_FINGER_SWIPE_RIGHT,
+            GESTURE_4_FINGER_SWIPE_UP,
+            GESTURE_4_FINGER_TRIPLE_TAP
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface GestureId {}
@@ -149,6 +179,9 @@
             case GESTURE_3_FINGER_SINGLE_TAP: return "GESTURE_3_FINGER_SINGLE_TAP";
             case GESTURE_3_FINGER_DOUBLE_TAP: return "GESTURE_3_FINGER_DOUBLE_TAP";
             case GESTURE_3_FINGER_TRIPLE_TAP: return "GESTURE_3_FINGER_TRIPLE_TAP";
+            case GESTURE_4_FINGER_SINGLE_TAP: return "GESTURE_4_FINGER_SINGLE_TAP";
+            case GESTURE_4_FINGER_DOUBLE_TAP: return "GESTURE_4_FINGER_DOUBLE_TAP";
+            case GESTURE_4_FINGER_TRIPLE_TAP: return "GESTURE_4_FINGER_TRIPLE_TAP";
             case GESTURE_DOUBLE_TAP: return "GESTURE_DOUBLE_TAP";
             case GESTURE_DOUBLE_TAP_AND_HOLD: return "GESTURE_DOUBLE_TAP_AND_HOLD";
             case GESTURE_SWIPE_DOWN: return "GESTURE_SWIPE_DOWN";
@@ -167,6 +200,18 @@
             case GESTURE_SWIPE_UP_AND_LEFT: return "GESTURE_SWIPE_UP_AND_LEFT";
             case GESTURE_SWIPE_UP_AND_DOWN: return "GESTURE_SWIPE_UP_AND_DOWN";
             case GESTURE_SWIPE_UP_AND_RIGHT: return "GESTURE_SWIPE_UP_AND_RIGHT";
+            case GESTURE_2_FINGER_SWIPE_DOWN: return "GESTURE_2_FINGER_SWIPE_DOWN";
+            case GESTURE_2_FINGER_SWIPE_LEFT: return "GESTURE_2_FINGER_SWIPE_LEFT";
+            case GESTURE_2_FINGER_SWIPE_RIGHT: return "GESTURE_2_FINGER_SWIPE_RIGHT";
+            case GESTURE_2_FINGER_SWIPE_UP: return "GESTURE_2_FINGER_SWIPE_UP";
+            case GESTURE_3_FINGER_SWIPE_DOWN: return "GESTURE_3_FINGER_SWIPE_DOWN";
+            case GESTURE_3_FINGER_SWIPE_LEFT: return "GESTURE_3_FINGER_SWIPE_LEFT";
+            case GESTURE_3_FINGER_SWIPE_RIGHT: return "GESTURE_3_FINGER_SWIPE_RIGHT";
+            case GESTURE_3_FINGER_SWIPE_UP: return "GESTURE_3_FINGER_SWIPE_UP";
+            case GESTURE_4_FINGER_SWIPE_DOWN: return "GESTURE_4_FINGER_SWIPE_DOWN";
+            case GESTURE_4_FINGER_SWIPE_LEFT: return "GESTURE_4_FINGER_SWIPE_LEFT";
+            case GESTURE_4_FINGER_SWIPE_RIGHT: return "GESTURE_4_FINGER_SWIPE_RIGHT";
+            case GESTURE_4_FINGER_SWIPE_UP: return "GESTURE_4_FINGER_SWIPE_UP";
             default: return Integer.toHexString(eventType);
         }
     }
diff --git a/core/java/android/accessibilityservice/AccessibilityService.java b/core/java/android/accessibilityservice/AccessibilityService.java
index 27cd285..b65f68e 100644
--- a/core/java/android/accessibilityservice/AccessibilityService.java
+++ b/core/java/android/accessibilityservice/AccessibilityService.java
@@ -28,7 +28,9 @@
 import android.content.Intent;
 import android.content.pm.ParceledListSlice;
 import android.graphics.Bitmap;
+import android.graphics.ColorSpace;
 import android.graphics.Region;
+import android.hardware.HardwareBuffer;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Handler;
@@ -349,6 +351,67 @@
     public static final int GESTURE_3_FINGER_TRIPLE_TAP = 24;
 
     /**
+     * The user has performed a two-finger swipe up gesture on the touch screen.
+     */
+    public static final int GESTURE_2_FINGER_SWIPE_UP = 25;
+
+    /**
+     * The user has performed a two-finger swipe down gesture on the touch screen.
+     */
+    public static final int GESTURE_2_FINGER_SWIPE_DOWN = 26;
+
+    /**
+     * The user has performed a two-finger swipe left gesture on the touch screen.
+     */
+    public static final int GESTURE_2_FINGER_SWIPE_LEFT = 27;
+
+    /**
+     * The user has performed a two-finger swipe right gesture on the touch screen.
+     */
+    public static final int GESTURE_2_FINGER_SWIPE_RIGHT = 28;
+
+    /**
+     * The user has performed a three-finger swipe up gesture on the touch screen.
+     */
+    public static final int GESTURE_3_FINGER_SWIPE_UP = 29;
+
+    /**
+     * The user has performed a three-finger swipe down gesture on the touch screen.
+     */
+    public static final int GESTURE_3_FINGER_SWIPE_DOWN = 30;
+
+    /**
+     * The user has performed a three-finger swipe left gesture on the touch screen.
+     */
+    public static final int GESTURE_3_FINGER_SWIPE_LEFT = 31;
+
+    /**
+     * The user has performed a three-finger swipe right gesture on the touch screen.
+     */
+    public static final int GESTURE_3_FINGER_SWIPE_RIGHT = 32;
+
+    /** The user has performed a four-finger swipe up gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_SWIPE_UP = 33;
+
+    /** The user has performed a four-finger swipe down gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_SWIPE_DOWN = 34;
+
+    /** The user has performed a four-finger swipe left gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_SWIPE_LEFT = 35;
+
+    /** The user has performed a four-finger swipe right gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_SWIPE_RIGHT = 36;
+
+    /** The user has performed a four-finger single tap gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_SINGLE_TAP = 37;
+
+    /** The user has performed a four-finger double tap gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_DOUBLE_TAP = 38;
+
+    /** The user has performed a four-finger triple tap gesture on the touch screen. */
+    public static final int GESTURE_4_FINGER_TRIPLE_TAP = 39;
+
+    /**
      * The {@link Intent} that must be declared as handled by the service.
      */
     public static final String SERVICE_INTERFACE =
@@ -524,7 +587,12 @@
     private FingerprintGestureController mFingerprintGestureController;
 
     /** @hide */
-    public static final String KEY_ACCESSIBILITY_SCREENSHOT = "screenshot";
+    public static final String KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER =
+            "screenshot_hardwareBuffer";
+
+    /** @hide */
+    public static final String KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE_ID =
+            "screenshot_colorSpaceId";
 
     /**
      * Callback for {@link android.view.accessibility.AccessibilityEvent}s.
@@ -1827,8 +1895,9 @@
     }
 
     /**
-     * Takes a screenshot of the specified display and returns it by {@link Bitmap.Config#HARDWARE}
-     * format.
+     * Takes a screenshot of the specified display and returns it via an
+     * {@link AccessibilityService.ScreenshotResult}. You can use {@link Bitmap#wrapHardwareBuffer}
+     * to construct the bitmap from the ScreenshotResult's payload.
      * <p>
      * <strong>Note:</strong> In order to take screenshot your service has
      * to declare the capability to take screenshot by setting the
@@ -1846,7 +1915,7 @@
      * @return {@code true} if the taking screenshot accepted, {@code false} if not.
      */
     public boolean takeScreenshot(int displayId, @NonNull @CallbackExecutor Executor executor,
-            @NonNull Consumer<Bitmap> callback) {
+            @NonNull Consumer<ScreenshotResult> callback) {
         Preconditions.checkNotNull(executor, "executor cannot be null");
         Preconditions.checkNotNull(callback, "callback cannot be null");
         final IAccessibilityServiceConnection connection =
@@ -1856,14 +1925,22 @@
             return false;
         }
         try {
-            connection.takeScreenshotWithCallback(displayId, new RemoteCallback((result) -> {
-                final Bitmap screenshot = result.getParcelable(KEY_ACCESSIBILITY_SCREENSHOT);
-                final long identity = Binder.clearCallingIdentity();
-                try {
-                    executor.execute(() -> callback.accept(screenshot));
-                } finally {
-                    Binder.restoreCallingIdentity(identity);
+            connection.takeScreenshot(displayId, new RemoteCallback((result) -> {
+                if (result == null) {
+                    sendScreenshotResult(executor, callback, null);
+                    return;
                 }
+                final HardwareBuffer hardwareBuffer =
+                        result.getParcelable(KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER);
+                final int colorSpaceId =
+                        result.getInt(KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE_ID);
+                ColorSpace colorSpace = null;
+                if (colorSpaceId >= 0 && colorSpaceId < ColorSpace.Named.values().length) {
+                    colorSpace = ColorSpace.get(ColorSpace.Named.values()[colorSpaceId]);
+                }
+                ScreenshotResult screenshot = new ScreenshotResult(hardwareBuffer,
+                        colorSpace, System.currentTimeMillis());
+                sendScreenshotResult(executor, callback, screenshot);
             }));
         } catch (RemoteException re) {
             throw new RuntimeException(re);
@@ -2262,4 +2339,67 @@
             this.handler = handler;
         }
     }
+
+    private void sendScreenshotResult(Executor executor, Consumer<ScreenshotResult> callback,
+            ScreenshotResult screenshot) {
+        final ScreenshotResult result = screenshot;
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            executor.execute(() -> callback.accept(result));
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
+     * Class including hardwareBuffer, colorSpace, and timestamp to be the result for
+     * {@link AccessibilityService#takeScreenshot} API.
+     * <p>
+     * <strong>Note:</strong> colorSpace would be null if the name of this colorSpace isn't at
+     * {@link ColorSpace.Named}.
+     * </p>
+     */
+    public static final class ScreenshotResult {
+        private final @NonNull HardwareBuffer mHardwareBuffer;
+        private final @Nullable ColorSpace mColorSpace;
+        private final long mTimestamp;
+
+        private ScreenshotResult(@NonNull HardwareBuffer hardwareBuffer,
+                @Nullable ColorSpace colorSpace, long timestamp) {
+            Preconditions.checkNotNull(hardwareBuffer, "hardwareBuffer cannot be null");
+            mHardwareBuffer = hardwareBuffer;
+            mColorSpace = colorSpace;
+            mTimestamp = timestamp;
+        }
+
+        /**
+         * Gets the colorSpace identifying a specific organization of colors of the screenshot.
+         *
+         * @return the colorSpace or {@code null} if the name of colorSpace isn't at
+         * {@link ColorSpace.Named}
+         */
+        @Nullable
+        public ColorSpace getColorSpace() {
+            return mColorSpace;
+        }
+
+        /**
+         * Gets the hardwareBuffer representing a memory buffer of the screenshot.
+         *
+         * @return the hardwareBuffer
+         */
+        @NonNull
+        public HardwareBuffer getHardwareBuffer() {
+            return mHardwareBuffer;
+        }
+
+        /**
+         * Gets the timestamp of taking the screenshot.
+         *
+         * @return the timestamp from {@link System#currentTimeMillis()}
+         */
+        public long getTimestamp() {
+            return mTimestamp;
+        };
+    }
 }
diff --git a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
index d79740b..9912d2b 100644
--- a/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
+++ b/core/java/android/accessibilityservice/AccessibilityShortcutInfo.java
@@ -76,6 +76,16 @@
     private final int mDescriptionResId;
 
     /**
+     * Resource id of the animated image of the accessibility shortcut target.
+     */
+    private final int mAnimatedImageRes;
+
+    /**
+     * Resource id of the html description of the accessibility shortcut target.
+     */
+    private final int mHtmlDescriptionRes;
+
+    /**
      * Creates a new instance.
      *
      * @param context Context for accessing resources.
@@ -119,6 +129,14 @@
             // Gets summary
             mSummaryResId = asAttributes.getResourceId(
                     com.android.internal.R.styleable.AccessibilityShortcutTarget_summary, 0);
+            // Gets animated image
+            mAnimatedImageRes = asAttributes.getResourceId(
+                    com.android.internal.R.styleable
+                            .AccessibilityShortcutTarget_animatedImageDrawable, 0);
+            // Gets html description
+            mHtmlDescriptionRes = asAttributes.getResourceId(
+                    com.android.internal.R.styleable.AccessibilityShortcutTarget_htmlDescription,
+                    0);
             asAttributes.recycle();
 
             if (mDescriptionResId == 0 || mSummaryResId == 0) {
@@ -172,6 +190,25 @@
     }
 
     /**
+     * The animated image resource id of the accessibility shortcut target.
+     *
+     * @return The animated image resource id.
+     */
+    public int getAnimatedImageRes() {
+        return mAnimatedImageRes;
+    }
+
+    /**
+     * The localized html description of the accessibility shortcut target.
+     *
+     * @return The localized html description.
+     */
+    @Nullable
+    public String loadHtmlDescription(@NonNull PackageManager packageManager) {
+        return loadResourceString(packageManager, mActivityInfo, mHtmlDescriptionRes);
+    }
+
+    /**
      * Gets string resource by the given activity and resource id.
      */
     @Nullable
diff --git a/core/java/android/accessibilityservice/GestureDescription.java b/core/java/android/accessibilityservice/GestureDescription.java
index 3b79d21..a821dad 100644
--- a/core/java/android/accessibilityservice/GestureDescription.java
+++ b/core/java/android/accessibilityservice/GestureDescription.java
@@ -40,7 +40,7 @@
  */
 public final class GestureDescription {
     /** Gestures may contain no more than this many strokes */
-    private static final int MAX_STROKE_COUNT = 10;
+    private static final int MAX_STROKE_COUNT = 20;
 
     /**
      * Upper bound on total gesture duration. Nearly all gestures will be much shorter.
@@ -194,7 +194,10 @@
         public Builder addStroke(@NonNull StrokeDescription strokeDescription) {
             if (mStrokes.size() >= MAX_STROKE_COUNT) {
                 throw new IllegalStateException(
-                        "Attempting to add too many strokes to a gesture");
+                        "Attempting to add too many strokes to a gesture. Maximum is "
+                                + MAX_STROKE_COUNT
+                                + ", got "
+                                + mStrokes.size());
             }
 
             mStrokes.add(strokeDescription);
diff --git a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
index 5db4dd7..9177d4d 100644
--- a/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
+++ b/core/java/android/accessibilityservice/IAccessibilityServiceConnection.aidl
@@ -110,7 +110,5 @@
 
     int getWindowIdForLeashToken(IBinder token);
 
-    Bitmap takeScreenshot(int displayId);
-
-    void takeScreenshotWithCallback(int displayId, in RemoteCallback callback);
+    void takeScreenshot(int displayId, in RemoteCallback callback);
 }
diff --git a/core/java/android/annotation/NonNull.java b/core/java/android/annotation/NonNull.java
index 927f997..a95bf3b 100644
--- a/core/java/android/annotation/NonNull.java
+++ b/core/java/android/annotation/NonNull.java
@@ -15,14 +15,16 @@
  */
 package android.annotation;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
+import android.annotation.SystemApi.Client;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
 /**
  * Denotes that a parameter, field or method return value can never be null.
  * <p>
@@ -34,5 +36,6 @@
  */
 @Retention(SOURCE)
 @Target({METHOD, PARAMETER, FIELD})
+@SystemApi(client = Client.MODULE_LIBRARIES)
 public @interface NonNull {
 }
diff --git a/core/java/android/annotation/Nullable.java b/core/java/android/annotation/Nullable.java
index b60170b..2fcddfa 100644
--- a/core/java/android/annotation/Nullable.java
+++ b/core/java/android/annotation/Nullable.java
@@ -15,14 +15,16 @@
  */
 package android.annotation;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
 import static java.lang.annotation.ElementType.FIELD;
 import static java.lang.annotation.ElementType.METHOD;
 import static java.lang.annotation.ElementType.PARAMETER;
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
+import android.annotation.SystemApi.Client;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
 /**
  * Denotes that a parameter, field or method return value can be null.
  * <p>
@@ -41,5 +43,6 @@
  */
 @Retention(SOURCE)
 @Target({METHOD, PARAMETER, FIELD})
+@SystemApi(client = Client.MODULE_LIBRARIES)
 public @interface Nullable {
 }
diff --git a/core/java/android/annotation/SystemApi.java b/core/java/android/annotation/SystemApi.java
index ecbfed9..4ac0098 100644
--- a/core/java/android/annotation/SystemApi.java
+++ b/core/java/android/annotation/SystemApi.java
@@ -47,22 +47,14 @@
         /**
          * Specifies that the intended clients of a SystemApi are privileged apps.
          * This is the default value for {@link #client}.
-         * TODO Update the javadoc according to the final spec
          */
         PRIVILEGED_APPS,
 
         /**
-         * DO NOT USE. Use PRIVILEGED_APPS instead.
-         * (This would provide no further protection over PRIVILEGED_APPS; do not rely on it)
-         * @deprecated Use #PRIVILEGED_APPS instead
-         */
-        @Deprecated
-        MODULE_APPS,
-
-        /**
-         * Specifies that the intended clients of a SystemApi are modules implemented
-         * as libraries, like the conscrypt.jar in the conscrypt APEX.
-         * TODO Update the javadoc according to the final spec
+         * Specifies that the intended clients of a SystemApi are used by classes in
+         * <pre>BOOTCLASSPATH</pre> in mainline modules. Mainline modules can also expose
+         * this type of system APIs too when they're used only by the non-updatable
+         * platform code.
          */
         MODULE_LIBRARIES,
 
@@ -70,19 +62,6 @@
          * Specifies that the system API is available only in the system server process.
          * Use this to expose APIs from code loaded by the system server process <em>but</em>
          * not in <pre>BOOTCLASSPATH</pre>.
-         * TODO(b/148177503) Update "services-stubs" and actually use it.
-         */
-        SYSTEM_SERVER
-    }
-
-    /** @deprecated do not use */
-    @Deprecated
-    enum Process {
-        /** @deprecated do not use */
-        ALL,
-
-        /**
-         * @deprecated use Client#SYSTEM_SERVER instead
          */
         SYSTEM_SERVER
     }
@@ -93,13 +72,6 @@
     Client client() default android.annotation.SystemApi.Client.PRIVILEGED_APPS;
 
     /**
-     * @deprecated use Client#SYSTEM_SERVER instead for system_server APIs
-     */
-    @Deprecated
-    Process process() default android.annotation.SystemApi.Process.ALL;
-
-
-    /**
      * Container for {@link SystemApi} that allows it to be applied repeatedly to types.
      */
     @Retention(RetentionPolicy.RUNTIME)
diff --git a/core/java/android/annotation/UnsupportedAppUsage.java b/core/java/android/annotation/UnsupportedAppUsage.java
deleted file mode 100644
index 1af48cb..0000000
--- a/core/java/android/annotation/UnsupportedAppUsage.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * Copyright (C) 2018 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.annotation;
-
-import static java.lang.annotation.ElementType.CONSTRUCTOR;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.CLASS;
-
-import java.lang.annotation.Repeatable;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Indicates that this non-SDK interface is used by apps. A non-SDK interface is a
- * class member (field or method) that is not part of the public SDK. Since the
- * member is not part of the SDK, usage by apps is not supported.
- *
- * <h2>If you are an Android App developer</h2>
- *
- * This annotation indicates that you may be able to access the member, but that
- * this access is discouraged and not supported by Android. If there is a value
- * for {@link #maxTargetSdk()} on the annotation, access will be restricted based
- * on the {@code targetSdkVersion} value set in your manifest.
- *
- * <p>Fields and methods annotated with this are likely to be restricted, changed
- * or removed in future Android releases. If you rely on these members for
- * functionality that is not otherwise supported by Android, consider filing a
- * <a href="http://g.co/dev/appcompat">feature request</a>.
- *
- * <h2>If you are an Android OS developer</h2>
- *
- * This annotation acts as a heads up that changing a given method or field
- * may affect apps, potentially breaking them when the next Android version is
- * released. In some cases, for members that are heavily used, this annotation
- * may imply restrictions on changes to the member.
- *
- * <p>This annotation also results in access to the member being permitted by the
- * runtime, with a warning being generated in debug builds. Which apps can access
- * the member is determined by the value of {@link #maxTargetSdk()}.
- *
- * <p>For more details, see go/UnsupportedAppUsage.
- *
- * {@hide}
- */
-@Retention(CLASS)
-@Target({CONSTRUCTOR, METHOD, FIELD, TYPE})
-@Repeatable(UnsupportedAppUsage.Container.class)
-public @interface UnsupportedAppUsage {
-
-    /**
-     * Associates a bug tracking the work to add a public alternative to this API. Optional.
-     *
-     * @return ID of the associated tracking bug
-     */
-    long trackingBug() default 0;
-
-    /**
-     * Indicates that usage of this API is limited to apps based on their target SDK version.
-     *
-     * <p>Access to the API is allowed if the targetSdkVersion in the apps manifest is no greater
-     * than this value. Access checks are performed at runtime.
-     *
-     * <p>This is used to give app developers a grace period to migrate off a non-SDK interface.
-     * When making Android version N, existing APIs can have a maxTargetSdk of N-1 added to them.
-     * Developers must then migrate off the API when their app is updated in future, but it will
-     * continue working in the meantime.
-     *
-     * <p>Possible values are:
-     * <ul>
-     *     <li>
-     *         An API level like {@link android.os.Build.VERSION_CODES#O} - in which case the API is
-     *         available up to and including the specified release. Or, in other words, the API is
-     *         blacklisted (unavailable) from the next API level from the one specified.
-     *     </li>
-     *     <li>
-     *         absent (default value) - All apps can access this API, but doing so may result in
-     *         warnings in the log, UI warnings (on developer builds) and/or strictmode violations.
-     *         The API is likely to be further restricted in future.
-     *     </li>
-     *
-     * </ul>
-     *
-     * @return The maximum value for an apps targetSdkVersion in order to access this API.
-     */
-    int maxTargetSdk() default Integer.MAX_VALUE;
-
-    /**
-     * For debug use only. The expected dex signature to be generated for this API, used to verify
-     * parts of the build process.
-     *
-     * @return A dex API signature.
-     */
-    String expectedSignature() default "";
-
-    /**
-     * The signature of an implicit (not present in the source) member that forms part of the
-     * hiddenapi.
-     *
-     * <p>Allows access to non-SDK API elements that are not represented in the input source to be
-     * managed.
-     *
-     * <p>This must only be used when applying the annotation to a type, using it in any other
-     * situation is an error.
-     *
-     * @return A dex API signature.
-     */
-    String implicitMember() default "";
-
-    /**
-     * Public API alternatives to this API.
-     *
-     * <p>If non-empty, the string must be a description of the public API alternative(s) to this
-     * API. The explanation must contain at least one Javadoc link tag to public API methods or
-     * fields. e.g.:
-     * {@literal @UnsupportedAppUsage(publicAlternatives="Use {@link foo.bar.Baz#bat()} instead.")}
-     *
-     * <p>Any elements that can be deduced can be omitted, e.g.:
-     * <ul>
-     *      <li>
-     *          the class, if it's the same as for the annotated element.
-     *      </li>
-     *      <li>
-     *          the package name, if it's the same as for the annotated element.
-     *      </li>
-     *      <li>
-     *          the method parameters, if there is only one method with that name in the given
-     *          package and class.
-     *      </li>
-     * </ul>
-     * @return A Javadoc-formatted string.
-     */
-    @SuppressWarnings("JavadocReference")
-    String publicAlternatives() default "";
-
-    /**
-     * Override the default source position when generating an index of the annotations.
-     *
-     * <p>This is intended for use by tools that generate java source code, to point to the
-     * original source position of the annotation, rather than the position within the generated
-     * code. It should never be set manually.
-     *
-     * <p>The format of the value is "path/to/file:startline:startcol:endline:endcol" indicating
-     * the position of the annotation itself.
-     */
-    String overrideSourcePosition() default "";
-
-    /**
-     * Container for {@link UnsupportedAppUsage} that allows it to be applied repeatedly to types.
-     */
-    @Retention(CLASS)
-    @Target(TYPE)
-    @interface Container {
-        UnsupportedAppUsage[] value();
-    }
-}
diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java
index d8b5e7f..2319dd2 100644
--- a/core/java/android/app/Activity.java
+++ b/core/java/android/app/Activity.java
@@ -2873,14 +2873,21 @@
     }
 
     /**
-     * Called by the system when picture in picture mode should be entered if supported.
+     * This method is called by the system in various cases where picture in picture mode should be
+     * entered if supported.
+     *
+     * <p>It is up to the app developer to choose whether to call
+     * {@link #enterPictureInPictureMode(PictureInPictureParams)} at this time. For example, the
+     * system will call this method when the activity is being put into the background, so the app
+     * developer might want to switch an activity into PIP mode instead.</p>
+     *
+     * @return {@code true} if the activity received this callback regardless of if it acts on it
+     * or not. If {@code false}, the framework will assume the app hasn't been updated to leverage
+     * this callback and will in turn send a legacy callback of {@link #onUserLeaveHint()} for the
+     * app to enter picture-in-picture mode.
      */
-    public void onPictureInPictureRequested() {
-        // Previous recommendation was for apps to enter picture-in-picture in onUserLeaveHint()
-        // which is sent after onPause(). This new method allows the system to request the app to
-        // go into picture-in-picture decoupling it from life cycle events. For backwards
-        // compatibility we schedule the life cycle events if the app didn't override this method.
-        mMainThread.schedulePauseAndReturnToCurrentState(mToken);
+    public boolean onPictureInPictureRequested() {
+        return false;
     }
 
     void dispatchMovedToDisplay(int displayId, Configuration config) {
@@ -5803,9 +5810,9 @@
                 intent.prepareToLeaveProcess(this);
                 result = ActivityTaskManager.getService()
                     .startActivity(mMainThread.getApplicationThread(), getBasePackageName(),
-                            intent, intent.resolveTypeIfNeeded(getContentResolver()), mToken,
-                            mEmbeddedID, requestCode, ActivityManager.START_FLAG_ONLY_IF_NEEDED,
-                            null, options);
+                            getFeatureId(), intent,
+                            intent.resolveTypeIfNeeded(getContentResolver()), mToken, mEmbeddedID,
+                            requestCode, ActivityManager.START_FLAG_ONLY_IF_NEEDED, null, options);
             } catch (RemoteException e) {
                 // Empty
             }
@@ -6599,8 +6606,8 @@
         try {
             data.prepareToLeaveProcess(this);
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                        ActivityManager.INTENT_SENDER_ACTIVITY_RESULT, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                        ActivityManager.INTENT_SENDER_ACTIVITY_RESULT, packageName, getFeatureId(),
                         mParent == null ? mToken : mParent.mToken,
                         mEmbeddedID, requestCode, new Intent[] { data }, null, flags, null,
                         getUserId());
diff --git a/core/java/android/app/ActivityManager.java b/core/java/android/app/ActivityManager.java
index 206c771..2838ad8 100644
--- a/core/java/android/app/ActivityManager.java
+++ b/core/java/android/app/ActivityManager.java
@@ -94,6 +94,7 @@
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
 
@@ -1472,7 +1473,7 @@
                 dest.writeInt(1);
                 dest.writeString(mLabel);
             }
-            if (mIcon == null) {
+            if (mIcon == null || mIcon.isRecycled()) {
                 dest.writeInt(0);
             } else {
                 dest.writeInt(1);
@@ -3555,13 +3556,13 @@
      * @return a list of {@link ApplicationExitInfo} records matching the criteria, sorted in
      *         the order from most recent to least recent.
      */
-    @Nullable
+    @NonNull
     public List<ApplicationExitInfo> getHistoricalProcessExitReasons(@Nullable String packageName,
             @IntRange(from = 0) int pid, @IntRange(from = 0) int maxNum) {
         try {
             ParceledListSlice<ApplicationExitInfo> r = getService().getHistoricalProcessExitReasons(
                     packageName, pid, maxNum, mContext.getUserId());
-            return r == null ? null : r.getList();
+            return r == null ? Collections.emptyList() : r.getList();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -4315,8 +4316,8 @@
      */
     public static void broadcastStickyIntent(Intent intent, int appOp, int userId) {
         try {
-            getService().broadcastIntent(
-                    null, intent, null, null, Activity.RESULT_OK, null, null,
+            getService().broadcastIntentWithFeature(
+                    null, null, intent, null, null, Activity.RESULT_OK, null, null,
                     null /*permission*/, appOp, null, false, true, userId);
         } catch (RemoteException ex) {
         }
diff --git a/core/java/android/app/ActivityManagerInternal.java b/core/java/android/app/ActivityManagerInternal.java
index 4e47594..ec11043 100644
--- a/core/java/android/app/ActivityManagerInternal.java
+++ b/core/java/android/app/ActivityManagerInternal.java
@@ -269,16 +269,19 @@
 
     public abstract void tempWhitelistForPendingIntent(int callerPid, int callerUid, int targetUid,
             long duration, String tag);
-    public abstract int broadcastIntentInPackage(String packageName, int uid, int realCallingUid,
-            int realCallingPid, Intent intent, String resolvedType, IIntentReceiver resultTo,
-            int resultCode, String resultData, Bundle resultExtras, String requiredPermission,
-            Bundle bOptions, boolean serialized, boolean sticky, @UserIdInt int userId,
-            boolean allowBackgroundActivityStarts);
+
+    public abstract int broadcastIntentInPackage(String packageName, @Nullable String featureId,
+            int uid, int realCallingUid, int realCallingPid, Intent intent, String resolvedType,
+            IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras,
+            String requiredPermission, Bundle bOptions, boolean serialized, boolean sticky,
+            @UserIdInt int userId, boolean allowBackgroundActivityStarts);
+
     public abstract ComponentName startServiceInPackage(int uid, Intent service,
-            String resolvedType, boolean fgRequired, String callingPackage, @UserIdInt int userId,
+            String resolvedType, boolean fgRequired, String callingPackage,
+            @Nullable String callingFeatureId, @UserIdInt int userId,
             boolean allowBackgroundActivityStarts) throws TransactionTooLargeException;
 
-    public abstract void disconnectActivityFromServices(Object connectionHolder, Object conns);
+    public abstract void disconnectActivityFromServices(Object connectionHolder);
     public abstract void cleanUpServices(@UserIdInt int userId, ComponentName component,
             Intent baseIntent);
     public abstract ActivityInfo getActivityInfoForUser(ActivityInfo aInfo, @UserIdInt int userId);
diff --git a/core/java/android/app/ActivityTaskManager.java b/core/java/android/app/ActivityTaskManager.java
index dd9a2bc..9ba56cf 100644
--- a/core/java/android/app/ActivityTaskManager.java
+++ b/core/java/android/app/ActivityTaskManager.java
@@ -158,18 +158,37 @@
                 }
             };
 
+    /** @hide */
+    @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
+    public static ITaskOrganizerController getTaskOrganizerController() {
+        return ITaskOrganizerControllerSingleton.get();
+    }
+
+    private static final Singleton<ITaskOrganizerController> ITaskOrganizerControllerSingleton =
+            new Singleton<ITaskOrganizerController>() {
+                @Override
+                protected ITaskOrganizerController create() {
+                    try {
+                        return getService().getTaskOrganizerController();
+                    } catch (RemoteException e) {
+                        return null;
+                    }
+                }
+            };
+
     /**
      * Sets the windowing mode for a specific task. Only works on tasks of type
      * {@link WindowConfiguration#ACTIVITY_TYPE_STANDARD}
      * @param taskId The id of the task to set the windowing mode for.
      * @param windowingMode The windowing mode to set for the task.
      * @param toTop If the task should be moved to the top once the windowing mode changes.
+     * @return Whether the task was successfully put into the specified windowing mode.
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
-    public void setTaskWindowingMode(int taskId, int windowingMode, boolean toTop)
+    public boolean setTaskWindowingMode(int taskId, int windowingMode, boolean toTop)
             throws SecurityException {
         try {
-            getService().setTaskWindowingMode(taskId, windowingMode, toTop);
+            return getService().setTaskWindowingMode(taskId, windowingMode, toTop);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -190,13 +209,14 @@
      *                      docked stack. Pass {@code null} to use default bounds.
      * @param showRecents If the recents activity should be shown on the other side of the task
      *                    going into split-screen mode.
+     * @return Whether the task was successfully put into splitscreen.
      */
     @RequiresPermission(android.Manifest.permission.MANAGE_ACTIVITY_STACKS)
-    public void setTaskWindowingModeSplitScreenPrimary(int taskId, int createMode, boolean toTop,
+    public boolean setTaskWindowingModeSplitScreenPrimary(int taskId, int createMode, boolean toTop,
             boolean animate, Rect initialBounds, boolean showRecents) throws SecurityException {
         try {
-            getService().setTaskWindowingModeSplitScreenPrimary(taskId, createMode, toTop, animate,
-                    initialBounds, showRecents);
+            return getService().setTaskWindowingModeSplitScreenPrimary(taskId, createMode, toTop,
+                    animate, initialBounds, showRecents);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/ActivityThread.java b/core/java/android/app/ActivityThread.java
index c901d2a..1921567 100644
--- a/core/java/android/app/ActivityThread.java
+++ b/core/java/android/app/ActivityThread.java
@@ -3772,7 +3772,15 @@
             return;
         }
 
-        r.activity.onPictureInPictureRequested();
+        final boolean receivedByApp = r.activity.onPictureInPictureRequested();
+        if (!receivedByApp) {
+            // Previous recommendation was for apps to enter picture-in-picture in
+            // onUserLeavingHint() for cases such as the app being put into the background. For
+            // backwards compatibility with apps that are not using the newer
+            // onPictureInPictureRequested() callback, we schedule the life cycle events needed to
+            // trigger onUserLeavingHint(), then we return the activity to its previous state.
+            schedulePauseWithUserLeaveHintAndReturnToCurrentState(r);
+        }
     }
 
     /**
@@ -3780,18 +3788,7 @@
      * return to its previous state. This allows activities that rely on onUserLeaveHint instead of
      * onPictureInPictureRequested to enter picture-in-picture.
      */
-    public void schedulePauseAndReturnToCurrentState(IBinder token) {
-        final ActivityClientRecord r = mActivities.get(token);
-        if (r == null) {
-            Log.w(TAG, "Activity to request pause with user leaving hint to no longer exists");
-            return;
-        }
-
-        if (r.mIsUserLeaving) {
-            // The activity is about to perform user leaving, so there's no need to cycle ourselves.
-            return;
-        }
-
+    private void schedulePauseWithUserLeaveHintAndReturnToCurrentState(ActivityClientRecord r) {
         final int prevState = r.getLifecycleState();
         if (prevState != ON_RESUME && prevState != ON_PAUSE) {
             return;
@@ -4544,7 +4541,6 @@
         if (r != null) {
             if (userLeaving) {
                 performUserLeavingActivity(r);
-                r.mIsUserLeaving = false;
             }
 
             r.activity.mConfigChangeFlags |= configChanges;
@@ -4559,7 +4555,6 @@
     }
 
     final void performUserLeavingActivity(ActivityClientRecord r) {
-        r.mIsUserLeaving = true;
         mInstrumentation.callActivityOnPictureInPictureRequested(r.activity);
         mInstrumentation.callActivityOnUserLeaving(r.activity);
     }
diff --git a/core/java/android/app/AppCompatCallbacks.java b/core/java/android/app/AppCompatCallbacks.java
index 19d158d..28a21f7 100644
--- a/core/java/android/app/AppCompatCallbacks.java
+++ b/core/java/android/app/AppCompatCallbacks.java
@@ -18,7 +18,6 @@
 
 import android.compat.Compatibility;
 import android.os.Process;
-import android.util.StatsLog;
 
 import com.android.internal.compat.ChangeReporter;
 
@@ -46,20 +45,20 @@
         mDisabledChanges = Arrays.copyOf(disabledChanges, disabledChanges.length);
         Arrays.sort(mDisabledChanges);
         mChangeReporter = new ChangeReporter(
-                StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__APP_PROCESS);
+                ChangeReporter.SOURCE_APP_PROCESS);
     }
 
     protected void reportChange(long changeId) {
-        reportChange(changeId, StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__LOGGED);
+        reportChange(changeId, ChangeReporter.STATE_LOGGED);
     }
 
     protected boolean isChangeEnabled(long changeId) {
         if (Arrays.binarySearch(mDisabledChanges, changeId) < 0) {
             // Not present in the disabled array
-            reportChange(changeId, StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__ENABLED);
+            reportChange(changeId, ChangeReporter.STATE_ENABLED);
             return true;
         }
-        reportChange(changeId, StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__DISABLED);
+        reportChange(changeId, ChangeReporter.STATE_DISABLED);
         return false;
     }
 
diff --git a/core/java/android/app/AppOpsManager.java b/core/java/android/app/AppOpsManager.java
index 46f8669..367c2f2 100644
--- a/core/java/android/app/AppOpsManager.java
+++ b/core/java/android/app/AppOpsManager.java
@@ -27,6 +27,8 @@
 import android.annotation.SystemService;
 import android.annotation.TestApi;
 import android.app.usage.UsageStatsManager;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -88,14 +90,31 @@
 import java.util.function.Supplier;
 
 /**
- * API for interacting with "application operation" tracking.
+ * AppOps are mappings of [package/uid, op-name] -> [mode]. The list of existing appops is defined
+ * by the system and cannot be amended by apps. Only system apps can change appop-modes.
  *
- * <p>This API is not generally intended for third party application developers; most
- * features are only available to system applications.
+ * <p>Beside a mode the system tracks when an op was {@link #noteOp noted}. The tracked data can
+ * only be read by system components.
+ *
+ * <p>Installed apps can usually only listen to changes and events on their own ops. E.g.
+ * {@link AppOpsCollector} allows to get a callback each time an app called {@link #noteOp} or
+ * {@link #startOp} for an op belonging to the app.
  */
 @SystemService(Context.APP_OPS_SERVICE)
 public class AppOpsManager {
     /**
+     * This is a subtle behavior change to {@link #startWatchingMode}.
+     *
+     * Before this change the system called back for the switched op. After the change the system
+     * will call back for the actually requested op or all switched ops if no op is specified.
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    public static final long CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE = 148180766L;
+
+    /**
      * <p>App ops allows callers to:</p>
      *
      * <ul>
@@ -142,6 +161,38 @@
 
     static IBinder sClientId;
 
+    /**
+     * How many seconds we want for a drop in uid state from top to settle before applying it.
+     *
+     * <>Set a parameter to {@link android.provider.Settings.Global#APP_OPS_CONSTANTS}
+     *
+     * @hide
+     */
+    @TestApi
+    public static final String KEY_TOP_STATE_SETTLE_TIME = "top_state_settle_time";
+
+    /**
+     * How many second we want for a drop in uid state from foreground to settle before applying it.
+     *
+     * <>Set a parameter to {@link android.provider.Settings.Global#APP_OPS_CONSTANTS}
+     *
+     * @hide
+     */
+    @TestApi
+    public static final String KEY_FG_SERVICE_STATE_SETTLE_TIME =
+            "fg_service_state_settle_time";
+
+    /**
+     * How many seconds we want for a drop in uid state from background to settle before applying
+     * it.
+     *
+     * <>Set a parameter to {@link android.provider.Settings.Global#APP_OPS_CONSTANTS}
+     *
+     * @hide
+     */
+    @TestApi
+    public static final String KEY_BG_STATE_SETTLE_TIME = "bg_state_settle_time";
+
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(flag = true, prefix = { "HISTORICAL_MODE_" }, value = {
@@ -873,10 +924,12 @@
      * @hide
      */
     public static final int OP_ACTIVATE_PLATFORM_VPN = 94;
+    /** @hide */
+    public static final int OP_LOADER_USAGE_STATS = 95;
 
     /** @hide */
     @UnsupportedAppUsage
-    public static final int _NUM_OP = 95;
+    public static final int _NUM_OP = 96;
 
     /** Access to coarse location information. */
     public static final String OPSTR_COARSE_LOCATION = "android:coarse_location";
@@ -1173,6 +1226,9 @@
     public static final String OPSTR_INTERACT_ACROSS_PROFILES = "android:interact_across_profiles";
     /** @hide Start Platform VPN without user intervention */
     public static final String OPSTR_ACTIVATE_PLATFORM_VPN = "android:activate_platform_vpn";
+    /** @hide */
+    @SystemApi
+    public static final String OPSTR_LOADER_USAGE_STATS = "android:loader_usage_stats";
 
 
     /** {@link #sAppOpsToNote} not initialized yet for this op */
@@ -1251,7 +1307,8 @@
             OP_MANAGE_IPSEC_TUNNELS,
             OP_INSTANT_APP_START_FOREGROUND,
             OP_MANAGE_EXTERNAL_STORAGE,
-            OP_INTERACT_ACROSS_PROFILES
+            OP_INTERACT_ACROSS_PROFILES,
+            OP_LOADER_USAGE_STATS,
     };
 
     /**
@@ -1358,6 +1415,7 @@
             OP_MANAGE_EXTERNAL_STORAGE,         // MANAGE_EXTERNAL_STORAGE
             OP_INTERACT_ACROSS_PROFILES,        //INTERACT_ACROSS_PROFILES
             OP_ACTIVATE_PLATFORM_VPN,           // ACTIVATE_PLATFORM_VPN
+            OP_LOADER_USAGE_STATS,              // LOADER_USAGE_STATS
     };
 
     /**
@@ -1459,6 +1517,7 @@
             OPSTR_MANAGE_EXTERNAL_STORAGE,
             OPSTR_INTERACT_ACROSS_PROFILES,
             OPSTR_ACTIVATE_PLATFORM_VPN,
+            OPSTR_LOADER_USAGE_STATS,
     };
 
     /**
@@ -1561,6 +1620,7 @@
             "MANAGE_EXTERNAL_STORAGE",
             "INTERACT_ACROSS_PROFILES",
             "ACTIVATE_PLATFORM_VPN",
+            "LOADER_USAGE_STATS",
     };
 
     /**
@@ -1664,6 +1724,7 @@
             Manifest.permission.MANAGE_EXTERNAL_STORAGE,
             android.Manifest.permission.INTERACT_ACROSS_PROFILES,
             null, // no permission for OP_ACTIVATE_PLATFORM_VPN
+            android.Manifest.permission.LOADER_USAGE_STATS,
     };
 
     /**
@@ -1767,6 +1828,7 @@
             null, // MANAGE_EXTERNAL_STORAGE
             null, // INTERACT_ACROSS_PROFILES
             null, // ACTIVATE_PLATFORM_VPN
+            null, // LOADER_USAGE_STATS
     };
 
     /**
@@ -1869,6 +1931,7 @@
             false, // MANAGE_EXTERNAL_STORAGE
             false, // INTERACT_ACROSS_PROFILES
             false, // ACTIVATE_PLATFORM_VPN
+            false, // LOADER_USAGE_STATS
     };
 
     /**
@@ -1970,6 +2033,7 @@
             AppOpsManager.MODE_DEFAULT, // MANAGE_EXTERNAL_STORAGE
             AppOpsManager.MODE_DEFAULT, // INTERACT_ACROSS_PROFILES
             AppOpsManager.MODE_IGNORED, // ACTIVATE_PLATFORM_VPN
+            AppOpsManager.MODE_DEFAULT, // LOADER_USAGE_STATS
     };
 
     /**
@@ -2075,6 +2139,7 @@
             false, // MANAGE_EXTERNAL_STORAGE
             false, // INTERACT_ACROSS_PROFILES
             false, // ACTIVATE_PLATFORM_VPN
+            false, // LOADER_USAGE_STATS
     };
 
     /**
@@ -2803,7 +2868,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no access
          *
          * @see #getLastAccessForegroundTime(int)
          * @see #getLastAccessBackgroundTime(int)
@@ -2820,7 +2885,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no foreground access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessBackgroundTime(int)
@@ -2838,7 +2903,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no background access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessForegroundTime(int)
@@ -2855,7 +2920,7 @@
          *
          * @param flags The op flags
          *
-         * @return the last access event of {@code null}
+         * @return the last access event of {@code null} if there was no access
          */
         private @Nullable NoteOpEvent getLastAccessEvent(@UidState int fromUidState,
                 @UidState int toUidState, @OpFlags int flags) {
@@ -2870,7 +2935,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessForegroundTime(int)
@@ -2893,7 +2958,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no rejection
          *
          * @see #getLastRejectForegroundTime(int)
          * @see #getLastRejectBackgroundTime(int)
@@ -2910,7 +2975,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no foreground rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectBackgroundTime(int)
@@ -2928,7 +2993,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no background rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectForegroundTime(int)
@@ -2945,8 +3010,7 @@
          *
          * @param flags The op flags
          *
-         * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * @return the last rejection event of {@code null} if there was no rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectForegroundTime(int)
@@ -2965,7 +3029,8 @@
          * @param toUidState The highest UID state for which to query (inclusive)
          * @param flags The op flags
          *
-         * @return the last access time (in milliseconds since epoch) or {@code -1}
+         * @return the last access time (in milliseconds since epoch) or {@code -1} if there was no
+         * rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectForegroundTime(int)
@@ -2988,7 +3053,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no rejection
          *
          * @see #getLastForegroundDuration(int)
          * @see #getLastBackgroundDuration(int)
@@ -3004,7 +3069,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no foreground rejection
          *
          * @see #getLastDuration(int)
          * @see #getLastBackgroundDuration(int)
@@ -3021,7 +3086,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no background rejection
          *
          * @see #getLastDuration(int)
          * @see #getLastForegroundDuration(int)
@@ -3040,7 +3105,7 @@
          * @param toUidState The highest UID state for which to query (inclusive)
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no rejection
          *
          * @see #getLastDuration(int)
          * @see #getLastForegroundDuration(int)
@@ -3064,7 +3129,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy access
          *
          * @see #getLastForegroundProxyInfo(int)
          * @see #getLastBackgroundProxyInfo(int)
@@ -3081,7 +3146,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastBackgroundProxyInfo(int)
@@ -3099,7 +3164,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy background access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastForegroundProxyInfo(int)
@@ -3119,7 +3184,7 @@
          * @param toUidState The highest UID state for which to query (inclusive)
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy foreground access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastForegroundProxyInfo(int)
@@ -3375,7 +3440,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no access
          *
          * @see #getLastAccessForegroundTime(int)
          * @see #getLastAccessBackgroundTime(int)
@@ -3392,7 +3457,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no foreground access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessBackgroundTime(int)
@@ -3410,7 +3475,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no background access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessForegroundTime(int)
@@ -3427,7 +3492,7 @@
          *
          * @param flags The op flags
          *
-         * @return the last access event of {@code null}
+         * @return the last access event of {@code null} if there was no access
          */
         private @Nullable NoteOpEvent getLastAccessEvent(@UidState int fromUidState,
                 @UidState int toUidState, @OpFlags int flags) {
@@ -3453,7 +3518,7 @@
          * @param flags The op flags
          *
          * @return the last access time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no access
          *
          * @see #getLastAccessTime(int)
          * @see #getLastAccessForegroundTime(int)
@@ -3489,7 +3554,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no rejection
          *
          * @see #getLastRejectForegroundTime(int)
          * @see #getLastRejectBackgroundTime(int)
@@ -3506,7 +3571,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no foreground rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectBackgroundTime(int)
@@ -3524,7 +3589,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no background rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectForegroundTime(int)
@@ -3541,7 +3606,7 @@
          *
          * @param flags The op flags
          *
-         * @return the last reject event of {@code null}
+         * @return the last reject event of {@code null} if there was no rejection
          */
         private @Nullable NoteOpEvent getLastRejectEvent(@UidState int fromUidState,
                 @UidState int toUidState, @OpFlags int flags) {
@@ -3567,7 +3632,7 @@
          * @param flags The op flags
          *
          * @return the last rejection time (in milliseconds since epoch start (January 1, 1970
-         * 00:00:00.000 GMT - Gregorian)) or {@code -1}
+         * 00:00:00.000 GMT - Gregorian)) or {@code -1} if there was no rejection
          *
          * @see #getLastRejectTime(int)
          * @see #getLastRejectForegroundTime(int)
@@ -3611,7 +3676,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no access
          *
          * @see #getLastForegroundDuration(int)
          * @see #getLastBackgroundDuration(int)
@@ -3627,7 +3692,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no foreground access
          *
          * @see #getLastDuration(int)
          * @see #getLastBackgroundDuration(int)
@@ -3644,7 +3709,7 @@
          *
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no background access
          *
          * @see #getLastDuration(int)
          * @see #getLastForegroundDuration(int)
@@ -3663,7 +3728,7 @@
          * @param toUidState The highest UID state for which to query (inclusive)
          * @param flags The op flags
          *
-         * @return the duration in milliseconds or {@code -1}
+         * @return the duration in milliseconds or {@code -1} if there was no access
          *
          * @see #getLastDuration(int)
          * @see #getLastForegroundDuration(int)
@@ -3738,7 +3803,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy access
          *
          * @see #getLastForegroundProxyInfo(int)
          * @see #getLastBackgroundProxyInfo(int)
@@ -3755,7 +3820,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no foreground proxy access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastBackgroundProxyInfo(int)
@@ -3773,7 +3838,7 @@
          *
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no background proxy access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastForegroundProxyInfo(int)
@@ -3793,7 +3858,7 @@
          * @param toUidState The highest UID state for which to query (inclusive)
          * @param flags The op flags
          *
-         * @return The proxy name or {@code null}
+         * @return The proxy info or {@code null} if there was no proxy access
          *
          * @see #getLastProxyInfo(int)
          * @see #getLastForegroundProxyInfo(int)
@@ -3865,7 +3930,10 @@
         }
 
         /**
-         * The features that have been used when checking the op
+         * The features that have been used when checking the op keyed by id of the feature.
+         *
+         * @see Context#createFeatureContext(String)
+         * @see #noteOp(String, int, String, String, String)
          */
         @DataClass.Generated.Member
         public @NonNull Map<String,OpFeatureEntry> getFeatures() {
@@ -6774,6 +6842,9 @@
      * succeeds, the last execution time of the operation for this app will be updated to
      * the current time.
      *
+     * <p>If this is a check that is not preceding the protected operation, use
+     * {@link #unsafeCheckOp} instead.
+     *
      * @param op The operation to note.  One of the OPSTR_* constants.
      * @param uid The user id of the application attempting to perform the operation.
      * @param packageName The name of the application attempting to perform the operation.
@@ -6798,6 +6869,9 @@
      * succeeds, the last execution time of the operation for this app will be updated to
      * the current time.
      *
+     * <p>If this is a check that is not preceding the protected operation, use
+     * {@link #unsafeCheckOp} instead.
+     *
      * @param op The operation to note.  One of the OP_* constants.
      * @param uid The user id of the application attempting to perform the operation.
      * @param packageName The name of the application attempting to perform the operation.
@@ -7757,9 +7831,38 @@
 
     /**
      * Callback an app can choose to {@link #setNotedAppOpsCollector register} to monitor it's noted
-     * appops.
+     * appops. I.e. each time any app calls {@link #noteOp} or {@link #startOp} one of the callback
+     * methods of this object is called.
      *
      * <p><b>Only appops related to dangerous permissions are collected.</b>
+     *
+     * <pre>
+     * setNotedAppOpsCollector(new AppOpsCollector() {
+     *     ArraySet<Pair<String, String>> opsNotedForThisProcess = new ArraySet<>();
+     *
+     *     private synchronized void addAccess(String op, String accessLocation) {
+     *         // Ops are often noted when permission protected APIs were called.
+     *         // In this case permissionToOp() allows to resolve the permission<->op
+     *         opsNotedForThisProcess.add(new Pair(accessType, accessLocation));
+     *     }
+     *
+     *     public void onNoted(SyncNotedAppOp op) {
+     *         // Accesses is currently happening, hence stack trace describes location of access
+     *         addAccess(op.getOp(), Arrays.toString(Thread.currentThread().getStackTrace()));
+     *     }
+     *
+     *     public void onSelfNoted(SyncNotedAppOp op) {
+     *         onNoted(op);
+     *     }
+     *
+     *     public void onAsyncNoted(AsyncNotedAppOp asyncOp) {
+     *         // Stack trace is not useful for async ops as accessed happened on different thread
+     *         addAccess(asyncOp.getOp(), asyncOp.getMessage());
+     *     }
+     * });
+     * </pre>
+     *
+     * @see #setNotedAppOpsCollector
      */
     public abstract static class AppOpsCollector {
         /** Callback registered with the system. This will receive the async notes ops */
diff --git a/core/java/android/app/AppOpsManagerInternal.java b/core/java/android/app/AppOpsManagerInternal.java
index 9958c6a..c13c5a5 100644
--- a/core/java/android/app/AppOpsManagerInternal.java
+++ b/core/java/android/app/AppOpsManagerInternal.java
@@ -21,6 +21,7 @@
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 
+import com.android.internal.app.IAppOpsCallback;
 import com.android.internal.util.function.HexFunction;
 import com.android.internal.util.function.QuadFunction;
 
@@ -91,4 +92,16 @@
      */
     public abstract void updateAppWidgetVisibility(SparseArray<String> uidPackageNames,
             boolean visible);
+
+    /**
+     * Like {@link AppOpsManager#setUidMode}, but allows ignoring a certain callback.
+     */
+    public abstract void setUidModeIgnoringCallback(int code, int uid, int mode,
+            @Nullable IAppOpsCallback callbackToIgnore);
+
+    /**
+     * Like {@link AppOpsManager#setMode}, but allows ignoring a certain callback.
+     */
+    public abstract void setModeIgnoringCallback(int code, int uid, @NonNull String packageName,
+            int mode, @Nullable IAppOpsCallback callbackToIgnore);
 }
diff --git a/core/java/android/app/ApplicationExitInfo.java b/core/java/android/app/ApplicationExitInfo.java
index 4bf5f07..c55453e 100644
--- a/core/java/android/app/ApplicationExitInfo.java
+++ b/core/java/android/app/ApplicationExitInfo.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 import android.app.ActivityManager.RunningAppProcessInfo.Importance;
 import android.icu.text.SimpleDateFormat;
 import android.os.Parcel;
@@ -245,12 +244,12 @@
     /**
      * @see {@link #getPss}
      */
-    private int mPss;
+    private long mPss;
 
     /**
      * @see {@link #getRss}
      */
-    private int mRss;
+    private long mRss;
 
     /**
      * @see {@link #getTimestamp}
@@ -385,7 +384,7 @@
      * it's NOT the exact memory information prior to its death; and it'll be zero
      * if the process died before system had a chance to take the sample. </p>
      */
-    public int getPss() {
+    public long getPss() {
         return mPss;
     }
 
@@ -396,12 +395,13 @@
      * it's NOT the exact memory information prior to its death; and it'll be zero
      * if the process died before system had a chance to take the sample. </p>
      */
-    public int getRss() {
+    public long getRss() {
         return mRss;
     }
 
     /**
-     * The timestamp of the process's death, in milliseconds since the epoch.
+     * The timestamp of the process's death, in milliseconds since the epoch,
+     * as returned by {@link System#currentTimeMillis System.currentTimeMillis()}.
      */
     public long getTimestamp() {
         return mTimestamp;
@@ -409,6 +409,9 @@
 
     /**
      * The human readable description of the process's death, given by the system; could be null.
+     *
+     * <p class="note">Note: only intended to be human-readable and the system provides no
+     * guarantees that the format is stable across devices or Android releases.</p>
      */
     public @Nullable String getDescription() {
         return mDescription;
@@ -416,10 +419,7 @@
 
     /**
      * Return the user id of the record on a multi-user system.
-     *
-     * @hide
      */
-    @SystemApi
     public @NonNull UserHandle getUserHandle() {
         return UserHandle.of(UserHandle.getUserId(mRealUid));
     }
@@ -546,7 +546,7 @@
      *
      * @hide
      */
-    public void setPss(final int pss) {
+    public void setPss(final long pss) {
         mPss = pss;
     }
 
@@ -555,7 +555,7 @@
      *
      * @hide
      */
-    public void setRss(final int rss) {
+    public void setRss(final long rss) {
         mRss = rss;
     }
 
@@ -630,8 +630,8 @@
         dest.writeInt(mSubReason);
         dest.writeInt(mStatus);
         dest.writeInt(mImportance);
-        dest.writeInt(mPss);
-        dest.writeInt(mRss);
+        dest.writeLong(mPss);
+        dest.writeLong(mRss);
         dest.writeLong(mTimestamp);
         dest.writeString(mDescription);
     }
@@ -669,8 +669,8 @@
         mSubReason = in.readInt();
         mStatus = in.readInt();
         mImportance = in.readInt();
-        mPss = in.readInt();
-        mRss = in.readInt();
+        mPss = in.readLong();
+        mRss = in.readLong();
         mTimestamp = in.readLong();
         mDescription = in.readString();
     }
@@ -848,10 +848,10 @@
                     mImportance = proto.readInt(ApplicationExitInfoProto.IMPORTANCE);
                     break;
                 case (int) ApplicationExitInfoProto.PSS:
-                    mPss = proto.readInt(ApplicationExitInfoProto.PSS);
+                    mPss = proto.readLong(ApplicationExitInfoProto.PSS);
                     break;
                 case (int) ApplicationExitInfoProto.RSS:
-                    mRss = proto.readInt(ApplicationExitInfoProto.RSS);
+                    mRss = proto.readLong(ApplicationExitInfoProto.RSS);
                     break;
                 case (int) ApplicationExitInfoProto.TIMESTAMP:
                     mTimestamp = proto.readLong(ApplicationExitInfoProto.TIMESTAMP);
@@ -891,8 +891,8 @@
         result = 31 * result + mSubReason;
         result = 31 * result + mImportance;
         result = 31 * result + mStatus;
-        result = 31 * result + mPss;
-        result = 31 * result + mRss;
+        result = 31 * result + (int) mPss;
+        result = 31 * result + (int) mRss;
         result = 31 * result + Long.hashCode(mTimestamp);
         result = 31 * result + Objects.hashCode(mProcessName);
         result = 31 * result + Objects.hashCode(mDescription);
diff --git a/core/java/android/app/ApplicationPackageManager.java b/core/java/android/app/ApplicationPackageManager.java
index c09aa1f..cd05e2c 100644
--- a/core/java/android/app/ApplicationPackageManager.java
+++ b/core/java/android/app/ApplicationPackageManager.java
@@ -618,36 +618,22 @@
         return hasSystemFeature(name, 0);
     }
 
-    private boolean hasSystemFeatureUncached(String name, int version) {
-        try {
-            return mPM.hasSystemFeature(name, version);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    // Make this cache relatively large.  There are many system features and
-    // none are ever invalidated.  MPTS tests suggests that the cache should
-    // hold at least 150 entries.
-    private static final int SYS_FEATURE_CACHE_SIZE = 256;
-    private static final String CACHE_KEY_SYS_FEATURE_PROPERTY = "cache_key.has_system_feature";
-
-    private class SystemFeatureQuery {
+    private class HasSystemFeatureQuery {
         public final String name;
         public final int version;
-        public SystemFeatureQuery(String n, int v) {
+        public HasSystemFeatureQuery(String n, int v) {
             name = n;
             version = v;
         }
         @Override
         public String toString() {
-            return String.format("SystemFeatureQuery(name=\"%s\", version=%d)",
+            return String.format("HasSystemFeatureQuery(name=\"%s\", version=%d)",
                     name, version);
         }
         @Override
         public boolean equals(Object o) {
-            if (o instanceof SystemFeatureQuery) {
-                SystemFeatureQuery r = (SystemFeatureQuery) o;
+            if (o instanceof HasSystemFeatureQuery) {
+                HasSystemFeatureQuery r = (HasSystemFeatureQuery) o;
                 return Objects.equals(name, r.name) &&  version == r.version;
             } else {
                 return false;
@@ -655,33 +641,41 @@
         }
         @Override
         public int hashCode() {
-            return Objects.hashCode(name) + version;
+            return Objects.hashCode(name) * 13 + version;
         }
     }
 
-    private final PropertyInvalidatedCache<SystemFeatureQuery, Boolean> mSysFeatureCache =
-            new PropertyInvalidatedCache<SystemFeatureQuery, Boolean>(
-                SYS_FEATURE_CACHE_SIZE,
-                CACHE_KEY_SYS_FEATURE_PROPERTY) {
+    // Make this cache relatively large.  There are many system features and
+    // none are ever invalidated.  MPTS tests suggests that the cache should
+    // hold at least 150 entries.
+    private final static PropertyInvalidatedCache<HasSystemFeatureQuery, Boolean>
+            mHasSystemFeatureCache =
+            new PropertyInvalidatedCache<HasSystemFeatureQuery, Boolean>(
+                256, "cache_key.has_system_feature") {
                 @Override
-                protected Boolean recompute(SystemFeatureQuery query) {
-                    return hasSystemFeatureUncached(query.name, query.version);
+                protected Boolean recompute(HasSystemFeatureQuery query) {
+                    try {
+                        return ActivityThread.currentActivityThread().getPackageManager().
+                            hasSystemFeature(query.name, query.version);
+                    } catch (RemoteException e) {
+                        throw e.rethrowFromSystemServer();
+                    }
                 }
             };
 
     @Override
     public boolean hasSystemFeature(String name, int version) {
-        return mSysFeatureCache.query(new SystemFeatureQuery(name, version)).booleanValue();
+        return mHasSystemFeatureCache.query(new HasSystemFeatureQuery(name, version));
     }
 
     /** @hide */
-    public void disableSysFeatureCache() {
-        mSysFeatureCache.disableLocal();
+    public void disableHasSystemFeatureCache() {
+        mHasSystemFeatureCache.disableLocal();
     }
 
     /** @hide */
-    public static void invalidateSysFeatureCache() {
-        PropertyInvalidatedCache.invalidateCache(CACHE_KEY_SYS_FEATURE_PROPERTY);
+    public static void invalidateHasSystemFeatureCache() {
+        mHasSystemFeatureCache.invalidateCache();
     }
 
     @Override
@@ -3235,18 +3229,18 @@
     }
 
     @Override
-    public String getSystemTextClassifierPackageName() {
+    public String getDefaultTextClassifierPackageName() {
         try {
-            return mPM.getSystemTextClassifierPackageName();
+            return mPM.getDefaultTextClassifierPackageName();
         } catch (RemoteException e) {
             throw e.rethrowAsRuntimeException();
         }
     }
 
     @Override
-    public String[] getSystemTextClassifierPackages() {
+    public String getSystemTextClassifierPackageName() {
         try {
-            return mPM.getSystemTextClassifierPackages();
+            return mPM.getSystemTextClassifierPackageName();
         } catch (RemoteException e) {
             throw e.rethrowAsRuntimeException();
         }
diff --git a/core/java/android/app/AsyncNotedAppOp.java b/core/java/android/app/AsyncNotedAppOp.java
index 3febf71..130e2ec 100644
--- a/core/java/android/app/AsyncNotedAppOp.java
+++ b/core/java/android/app/AsyncNotedAppOp.java
@@ -256,10 +256,10 @@
     };
 
     @DataClass.Generated(
-            time = 1578516519372L,
+            time = 1580158740502L,
             codegenVersion = "1.0.14",
             sourceFile = "frameworks/base/core/java/android/app/AsyncNotedAppOp.java",
-            inputSignatures = "private final @android.annotation.IntRange(from=0L, to=94L) int mOpCode\nprivate final @android.annotation.IntRange(from=0L) int mNotingUid\nprivate final @android.annotation.Nullable java.lang.String mFeatureId\nprivate final @android.annotation.NonNull java.lang.String mMessage\nprivate final @android.annotation.IntRange(from=0L) long mTime\npublic @android.annotation.NonNull java.lang.String getOp()\nclass AsyncNotedAppOp extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genAidl=true, genHiddenConstructor=true)")
+            inputSignatures = "private final @android.annotation.IntRange(from=0L, to=95L) int mOpCode\nprivate final @android.annotation.IntRange(from=0L) int mNotingUid\nprivate final @android.annotation.Nullable java.lang.String mFeatureId\nprivate final @android.annotation.NonNull java.lang.String mMessage\nprivate final @android.annotation.IntRange(from=0L) long mTime\npublic @android.annotation.NonNull java.lang.String getOp()\nclass AsyncNotedAppOp extends java.lang.Object implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genEqualsHashCode=true, genAidl=true, genHiddenConstructor=true)")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java
index 136c84e..6b5bfda 100644
--- a/core/java/android/app/ContextImpl.java
+++ b/core/java/android/app/ContextImpl.java
@@ -750,7 +750,7 @@
             if (type != null) {
                 dirs = Environment.buildPaths(dirs, type);
             }
-            return ensureExternalDirsExistOrFilter(dirs);
+            return ensureExternalDirsExistOrFilter(dirs, true /* tryCreateInProcess */);
         }
     }
 
@@ -765,7 +765,7 @@
     public File[] getObbDirs() {
         synchronized (mSync) {
             File[] dirs = Environment.buildExternalStorageAppObbDirs(getPackageName());
-            return ensureExternalDirsExistOrFilter(dirs);
+            return ensureExternalDirsExistOrFilter(dirs, true /* tryCreateInProcess */);
         }
     }
 
@@ -809,7 +809,10 @@
     public File[] getExternalCacheDirs() {
         synchronized (mSync) {
             File[] dirs = Environment.buildExternalStorageAppCacheDirs(getPackageName());
-            return ensureExternalDirsExistOrFilter(dirs);
+            // We don't try to create cache directories in-process, because they need special
+            // setup for accurate quota tracking. This ensures the cache dirs are always
+            // created through StorageManagerService.
+            return ensureExternalDirsExistOrFilter(dirs, false /* tryCreateInProcess */);
         }
     }
 
@@ -817,7 +820,7 @@
     public File[] getExternalMediaDirs() {
         synchronized (mSync) {
             File[] dirs = Environment.buildExternalStorageAppMediaDirs(getPackageName());
-            return ensureExternalDirsExistOrFilter(dirs);
+            return ensureExternalDirsExistOrFilter(dirs, true /* tryCreateInProcess */);
         }
     }
 
@@ -1017,7 +1020,7 @@
     public void startActivityAsUser(Intent intent, Bundle options, UserHandle user) {
         try {
             ActivityTaskManager.getService().startActivityAsUser(
-                mMainThread.getApplicationThread(), getBasePackageName(), intent,
+                mMainThread.getApplicationThread(), getBasePackageName(), getFeatureId(), intent,
                 intent.resolveTypeIfNeeded(getContentResolver()),
                 null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null, options,
                 user.getIdentifier());
@@ -1099,8 +1102,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, false,
                     getUserId());
         } catch (RemoteException e) {
@@ -1116,8 +1119,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     null, false, false, getUserId());
         } catch (RemoteException e) {
@@ -1131,8 +1134,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     null, false, false, getUserId());
         } catch (RemoteException e) {
@@ -1146,8 +1149,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     null, false, false, user.getIdentifier());
         } catch (RemoteException e) {
@@ -1163,8 +1166,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     options, false, false, getUserId());
         } catch (RemoteException e) {
@@ -1180,8 +1183,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, appOp, null, false, false,
                     getUserId());
         } catch (RemoteException e) {
@@ -1197,8 +1200,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     null, true, false, getUserId());
         } catch (RemoteException e) {
@@ -1260,8 +1263,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, rd,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, receiverPermissions, appOp,
                     options, true, false, getUserId());
         } catch (RemoteException e) {
@@ -1274,9 +1277,10 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(mMainThread.getApplicationThread(),
-                    intent, resolvedType, null, Activity.RESULT_OK, null, null, null,
-                    AppOpsManager.OP_NONE, null, false, false, user.getIdentifier());
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
+                    Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, false,
+                    user.getIdentifier());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -1296,8 +1300,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, AppOpsManager.OP_NONE,
                     options, false, false, user.getIdentifier());
         } catch (RemoteException e) {
@@ -1313,8 +1317,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                    mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                    mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                     Activity.RESULT_OK, null, null, receiverPermissions, appOp, null, false, false,
                     user.getIdentifier());
         } catch (RemoteException e) {
@@ -1364,8 +1368,8 @@
                 : new String[] {receiverPermission};
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, rd,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, receiverPermissions,
                     appOp, options, true, false, user.getIdentifier());
         } catch (RemoteException e) {
@@ -1405,8 +1409,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                 Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, true,
                 getUserId());
         } catch (RemoteException e) {
@@ -1441,8 +1445,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, rd,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, null,
                     AppOpsManager.OP_NONE, null, true, true, getUserId());
         } catch (RemoteException e) {
@@ -1473,8 +1477,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                 Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, null, false, true,
                     user.getIdentifier());
         } catch (RemoteException e) {
@@ -1488,8 +1492,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, null,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, null,
                 Activity.RESULT_OK, null, null, null, AppOpsManager.OP_NONE, options, false, true,
                 user.getIdentifier());
         } catch (RemoteException e) {
@@ -1523,8 +1527,8 @@
         String resolvedType = intent.resolveTypeIfNeeded(getContentResolver());
         try {
             intent.prepareToLeaveProcess(this);
-            ActivityManager.getService().broadcastIntent(
-                mMainThread.getApplicationThread(), intent, resolvedType, rd,
+            ActivityManager.getService().broadcastIntentWithFeature(
+                mMainThread.getApplicationThread(), getFeatureId(), intent, resolvedType, rd,
                 initialCode, initialData, initialExtras, null,
                     AppOpsManager.OP_NONE, null, true, true, user.getIdentifier());
         } catch (RemoteException e) {
@@ -1609,9 +1613,9 @@
             }
         }
         try {
-            final Intent intent = ActivityManager.getService().registerReceiver(
-                    mMainThread.getApplicationThread(), mBasePackageName, rd, filter,
-                    broadcastPermission, userId, flags);
+            final Intent intent = ActivityManager.getService().registerReceiverWithFeature(
+                    mMainThread.getApplicationThread(), mBasePackageName, getFeatureId(), rd,
+                    filter, broadcastPermission, userId, flags);
             if (intent != null) {
                 intent.setExtrasClassLoader(getClassLoader());
                 intent.prepareToEnterProcess();
@@ -1684,9 +1688,9 @@
             validateServiceIntent(service);
             service.prepareToLeaveProcess(this);
             ComponentName cn = ActivityManager.getService().startService(
-                mMainThread.getApplicationThread(), service, service.resolveTypeIfNeeded(
-                            getContentResolver()), requireForeground,
-                            getOpPackageName(), user.getIdentifier());
+                    mMainThread.getApplicationThread(), service,
+                    service.resolveTypeIfNeeded(getContentResolver()), requireForeground,
+                    getOpPackageName(), getFeatureId(), user.getIdentifier());
             if (cn != null) {
                 if (cn.getPackageName().equals("!")) {
                     throw new SecurityException(
@@ -2373,13 +2377,13 @@
     }
 
     @Override
-    public @NonNull WindowContext createWindowContext(int type) {
+    public @NonNull WindowContext createWindowContext(int type, Bundle options) {
         if (getDisplay() == null) {
             throw new UnsupportedOperationException("WindowContext can only be created from "
                     + "other visual contexts, such as Activity or one created with "
                     + "Context#createDisplayContext(Display)");
         }
-        return new WindowContext(this, null /* token */, type);
+        return new WindowContext(this, null /* token */, type, options);
     }
 
     ContextImpl createBaseWindowContext(IBinder token) {
@@ -2647,7 +2651,8 @@
                 overrideConfiguration,
                 compatInfo,
                 classLoader,
-                packageInfo.getApplication().getResources().getLoaders()));
+                packageInfo.getApplication() == null ? null
+                        : packageInfo.getApplication().getResources().getLoaders()));
         context.mDisplay = resourcesManager.getAdjustedDisplay(displayId,
                 context.getResources());
         return context;
@@ -2803,24 +2808,24 @@
      * Ensure that given directories exist, trying to create them if missing. If
      * unable to create, they are filtered by replacing with {@code null}.
      */
-    private File[] ensureExternalDirsExistOrFilter(File[] dirs) {
+    private File[] ensureExternalDirsExistOrFilter(File[] dirs, boolean tryCreateInProcess) {
         final StorageManager sm = getSystemService(StorageManager.class);
         final File[] result = new File[dirs.length];
         for (int i = 0; i < dirs.length; i++) {
             File dir = dirs[i];
             if (!dir.exists()) {
-                if (!dir.mkdirs()) {
-                    // recheck existence in case of cross-process race
-                    if (!dir.exists()) {
-                        // Failing to mkdir() may be okay, since we might not have
-                        // enough permissions; ask vold to create on our behalf.
-                        try {
+                try {
+                    if (!tryCreateInProcess || !dir.mkdirs()) {
+                        // recheck existence in case of cross-process race
+                        if (!dir.exists()) {
+                            // Failing to mkdir() may be okay, since we might not have
+                            // enough permissions; ask vold to create on our behalf.
                             sm.mkdirs(dir);
-                        } catch (Exception e) {
-                            Log.w(TAG, "Failed to ensure " + dir + ": " + e);
-                            dir = null;
                         }
                     }
+                } catch (Exception e) {
+                    Log.w(TAG, "Failed to ensure " + dir + ": " + e);
+                    dir = null;
                 }
             }
             result[i] = dir;
diff --git a/core/java/android/app/IActivityManager.aidl b/core/java/android/app/IActivityManager.aidl
index 5f3bad6..83fa9d7 100644
--- a/core/java/android/app/IActivityManager.aidl
+++ b/core/java/android/app/IActivityManager.aidl
@@ -104,25 +104,38 @@
     // Special low-level communication with activity manager.
     void handleApplicationCrash(in IBinder app,
             in ApplicationErrorReport.ParcelableCrashInfo crashInfo);
-    @UnsupportedAppUsage
+    /** @deprecated Use {@link #startActivityWithFeature} instead */
+    @UnsupportedAppUsage(maxTargetSdk=29, publicAlternatives="Use {@link android.content.Context#startActivity(android.content.Intent)} instead")
     int startActivity(in IApplicationThread caller, in String callingPackage, in Intent intent,
             in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
             int flags, in ProfilerInfo profilerInfo, in Bundle options);
+    int startActivityWithFeature(in IApplicationThread caller, in String callingPackage,
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode, int flags,
+            in ProfilerInfo profilerInfo, in Bundle options);
     @UnsupportedAppUsage
     void unhandledBack();
     @UnsupportedAppUsage
     boolean finishActivity(in IBinder token, int code, in Intent data, int finishTask);
-    @UnsupportedAppUsage
+    @UnsupportedAppUsage(maxTargetSdk=29, publicAlternatives="Use {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver, android.content.IntentFilter)} instead")
     Intent registerReceiver(in IApplicationThread caller, in String callerPackage,
             in IIntentReceiver receiver, in IntentFilter filter,
             in String requiredPermission, int userId, int flags);
+    Intent registerReceiverWithFeature(in IApplicationThread caller, in String callerPackage,
+            in String callingFeatureId, in IIntentReceiver receiver, in IntentFilter filter,
+            in String requiredPermission, int userId, int flags);
     @UnsupportedAppUsage
     void unregisterReceiver(in IIntentReceiver receiver);
-    @UnsupportedAppUsage
+    /** @deprecated Use {@link #broadcastIntentWithFeature} instead */
+    @UnsupportedAppUsage(maxTargetSdk=29, publicAlternatives="Use {@link android.content.Context#sendBroadcast(android.content.Intent)} instead")
     int broadcastIntent(in IApplicationThread caller, in Intent intent,
             in String resolvedType, in IIntentReceiver resultTo, int resultCode,
             in String resultData, in Bundle map, in String[] requiredPermissions,
             int appOp, in Bundle options, boolean serialized, boolean sticky, int userId);
+    int broadcastIntentWithFeature(in IApplicationThread caller, in String callingFeatureId,
+            in Intent intent, in String resolvedType, in IIntentReceiver resultTo, int resultCode,
+            in String resultData, in Bundle map, in String[] requiredPermissions,
+            int appOp, in Bundle options, boolean serialized, boolean sticky, int userId);
     void unbroadcastIntent(in IApplicationThread caller, in Intent intent, int userId);
     @UnsupportedAppUsage
     oneway void finishReceiver(in IBinder who, int resultCode, in String resultData, in Bundle map,
@@ -145,7 +158,8 @@
     boolean refContentProvider(in IBinder connection, int stableDelta, int unstableDelta);
     PendingIntent getRunningServiceControlPanel(in ComponentName service);
     ComponentName startService(in IApplicationThread caller, in Intent service,
-            in String resolvedType, boolean requireForeground, in String callingPackage, int userId);
+            in String resolvedType, boolean requireForeground, in String callingPackage,
+            in String callingFeatureId, int userId);
     @UnsupportedAppUsage
     int stopService(in IApplicationThread caller, in Intent service,
             in String resolvedType, int userId);
@@ -226,10 +240,14 @@
     ParceledListSlice getRecentTasks(int maxNum, int flags, int userId);
     @UnsupportedAppUsage
     oneway void serviceDoneExecuting(in IBinder token, int type, int startId, int res);
-    @UnsupportedAppUsage
+    /** @deprecated  Use {@link #getIntentSenderWithFeature} instead */
+    @UnsupportedAppUsage(maxTargetSdk=29, publicAlternatives="Use {@link PendingIntent#getIntentSender()} instead")
     IIntentSender getIntentSender(int type, in String packageName, in IBinder token,
             in String resultWho, int requestCode, in Intent[] intents, in String[] resolvedTypes,
             int flags, in Bundle options, int userId);
+    IIntentSender getIntentSenderWithFeature(int type, in String packageName, in String featureId,
+            in IBinder token, in String resultWho, int requestCode, in Intent[] intents,
+            in String[] resolvedTypes, int flags, in Bundle options, int userId);
     void cancelIntentSender(in IIntentSender sender);
     String getPackageForIntentSender(in IIntentSender sender);
     void registerIntentSenderCancelListener(in IIntentSender sender, in IResultReceiver receiver);
@@ -287,7 +305,7 @@
     void killApplicationProcess(in String processName, int uid);
     // Special low-level communication with activity manager.
     boolean handleApplicationWtf(in IBinder app, in String tag, boolean system,
-            in ApplicationErrorReport.ParcelableCrashInfo crashInfo);
+            in ApplicationErrorReport.ParcelableCrashInfo crashInfo, int immediateCallerPid);
     @UnsupportedAppUsage
     void killBackgroundProcesses(in String packageName, int userId);
     boolean isUserAMonkey();
@@ -355,11 +373,16 @@
     boolean isIntentSenderAnActivity(in IIntentSender sender);
     boolean isIntentSenderAForegroundService(in IIntentSender sender);
     boolean isIntentSenderABroadcast(in IIntentSender sender);
-    @UnsupportedAppUsage
+    /** @deprecated Use {@link startActivityAsUserWithFeature} instead */
+    @UnsupportedAppUsage(maxTargetSdk=29, publicAlternatives="Use {@code android.content.Context#createContextAsUser(android.os.UserHandle, int)} and {@link android.content.Context#startActivity(android.content.Intent)} instead")
     int startActivityAsUser(in IApplicationThread caller, in String callingPackage,
             in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
             int requestCode, int flags, in ProfilerInfo profilerInfo,
             in Bundle options, int userId);
+    int startActivityAsUserWithFeature(in IApplicationThread caller, in String callingPackage,
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode, int flags,
+            in ProfilerInfo profilerInfo, in Bundle options, int userId);
     @UnsupportedAppUsage
     int stopUser(int userid, boolean force, in IStopUserCallback callback);
     /**
diff --git a/core/java/android/app/IActivityTaskManager.aidl b/core/java/android/app/IActivityTaskManager.aidl
index 85fa7c1..180507c 100644
--- a/core/java/android/app/IActivityTaskManager.aidl
+++ b/core/java/android/app/IActivityTaskManager.aidl
@@ -29,6 +29,7 @@
 import android.app.IRequestFinishCallback;
 import android.app.IServiceConnection;
 import android.app.IStopUserCallback;
+import android.app.ITaskOrganizerController;
 import android.app.ITaskStackListener;
 import android.app.IUiAutomationConnection;
 import android.app.IUidObserver;
@@ -71,7 +72,6 @@
 import android.view.ITaskOrganizer;
 import android.view.RemoteAnimationDefinition;
 import android.view.RemoteAnimationAdapter;
-import android.view.WindowContainerTransaction;
 import com.android.internal.app.IVoiceInteractor;
 import com.android.internal.os.IResultReceiver;
 import com.android.internal.policy.IKeyguardDismissCallback;
@@ -85,16 +85,17 @@
  * {@hide}
  */
 interface IActivityTaskManager {
-    int startActivity(in IApplicationThread caller, in String callingPackage, in Intent intent,
-            in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
+    int startActivity(in IApplicationThread caller, in String callingPackage,
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode,
             int flags, in ProfilerInfo profilerInfo, in Bundle options);
     int startActivities(in IApplicationThread caller, in String callingPackage,
-            in Intent[] intents, in String[] resolvedTypes, in IBinder resultTo,
-            in Bundle options, int userId);
+            in String callingFeatureId, in Intent[] intents, in String[] resolvedTypes,
+            in IBinder resultTo, in Bundle options, int userId);
     int startActivityAsUser(in IApplicationThread caller, in String callingPackage,
-            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
-            int requestCode, int flags, in ProfilerInfo profilerInfo,
-            in Bundle options, int userId);
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode, int flags,
+            in ProfilerInfo profilerInfo, in Bundle options, int userId);
     boolean startNextMatchingActivity(in IBinder callingActivity,
             in Intent intent, in Bundle options);
     int startActivityIntentSender(in IApplicationThread caller,
@@ -102,19 +103,19 @@
             in String resolvedType, in IBinder resultTo, in String resultWho, int requestCode,
             int flagsMask, int flagsValues, in Bundle options);
     WaitResult startActivityAndWait(in IApplicationThread caller, in String callingPackage,
-            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
-            int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options,
-            int userId);
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode, int flags,
+            in ProfilerInfo profilerInfo, in Bundle options, int userId);
     int startActivityWithConfig(in IApplicationThread caller, in String callingPackage,
-            in Intent intent, in String resolvedType, in IBinder resultTo, in String resultWho,
-            int requestCode, int startFlags, in Configuration newConfig,
-            in Bundle options, int userId);
-    int startVoiceActivity(in String callingPackage, int callingPid, int callingUid,
-            in Intent intent, in String resolvedType, in IVoiceInteractionSession session,
-            in IVoiceInteractor interactor, int flags, in ProfilerInfo profilerInfo,
-            in Bundle options, int userId);
-    int startAssistantActivity(in String callingPackage, int callingPid, int callingUid,
-            in Intent intent, in String resolvedType, in Bundle options, int userId);
+            in String callingFeatureId, in Intent intent, in String resolvedType,
+            in IBinder resultTo, in String resultWho, int requestCode, int startFlags,
+            in Configuration newConfig, in Bundle options, int userId);
+    int startVoiceActivity(in String callingPackage, in String callingFeatureId, int callingPid,
+            int callingUid, in Intent intent, in String resolvedType,
+            in IVoiceInteractionSession session, in IVoiceInteractor interactor, int flags,
+            in ProfilerInfo profilerInfo, in Bundle options, int userId);
+    int startAssistantActivity(in String callingPackage, in String callingFeatureId, int callingPid,
+            int callingUid, in Intent intent, in String resolvedType, in Bundle options, int userId);
     void startRecentsActivity(in Intent intent, in IAssistDataReceiver assistDataReceiver,
             in IRecentsAnimationRunner recentsAnimationRunner);
     int startActivityFromRecents(int taskId, in Bundle options);
@@ -123,8 +124,6 @@
             int requestCode, int flags, in ProfilerInfo profilerInfo, in Bundle options,
             IBinder permissionToken, boolean ignoreTargetSecurity, int userId);
 
-    void registerTaskOrganizer(in ITaskOrganizer organizer, int windowingMode);
-
     boolean isActivityStartAllowedOnDisplay(int displayId, in Intent intent, in String resolvedType,
             int userId);
 
@@ -224,7 +223,6 @@
     void setTaskResizeable(int taskId, int resizeableMode);
     void toggleFreeformWindowingMode(in IBinder token);
     void resizeTask(int taskId, in Rect bounds, int resizeMode);
-    void applyContainerTransaction(in WindowContainerTransaction t);
     void moveStackToDisplay(int stackId, int displayId);
     void removeStack(int stackId);
 
@@ -234,8 +232,9 @@
      * @param taskId The id of the task to set the windowing mode for.
      * @param windowingMode The windowing mode to set for the task.
      * @param toTop If the task should be moved to the top once the windowing mode changes.
+     * @return Whether the task was successfully put into the specified windowing mode.
      */
-    void setTaskWindowingMode(int taskId, int windowingMode, boolean toTop);
+    boolean setTaskWindowingMode(int taskId, int windowingMode, boolean toTop);
     void moveTaskToStack(int taskId, int stackId, boolean toTop);
     /**
      * Resizes the input pinned stack to the given bounds with animation.
@@ -364,6 +363,11 @@
             in Rect tempOtherTaskBounds, in Rect tempOtherTaskInsetBounds);
 
     /**
+     * Returns an interface enabling the management of task organizers.
+     */
+    ITaskOrganizerController getTaskOrganizerController();
+
+    /**
      * Sets whether we are currently in an interactive split screen resize operation where we
      * are changing the docked stack size.
      */
diff --git a/core/java/android/app/IAppTask.aidl b/core/java/android/app/IAppTask.aidl
index 3ce7190..f41d705 100644
--- a/core/java/android/app/IAppTask.aidl
+++ b/core/java/android/app/IAppTask.aidl
@@ -27,7 +27,7 @@
     @UnsupportedAppUsage
     ActivityManager.RecentTaskInfo getTaskInfo();
     void moveToFront(in IApplicationThread appThread, in String callingPackage);
-    int startActivity(IBinder whoThread, String callingPackage,
+    int startActivity(IBinder whoThread, String callingPackage, String callingFeatureId,
             in Intent intent, String resolvedType, in Bundle options);
     void setExcludeFromRecents(boolean exclude);
 }
diff --git a/core/java/android/app/INotificationManager.aidl b/core/java/android/app/INotificationManager.aidl
index 4b1ba02..9aa6b87 100644
--- a/core/java/android/app/INotificationManager.aidl
+++ b/core/java/android/app/INotificationManager.aidl
@@ -48,6 +48,8 @@
     void clearData(String pkg, int uid, boolean fromApp);
     void enqueueTextToast(String pkg, IBinder token, CharSequence text, int duration, int displayId, @nullable ITransientNotificationCallback callback);
     void enqueueToast(String pkg, IBinder token, ITransientNotification callback, int duration, int displayId);
+    // TODO(b/144152069): Remove this after assessing impact on dogfood.
+    void enqueueTextOrCustomToast(String pkg, IBinder token, ITransientNotification callback, int duration, int displayId, boolean isCustom);
     void cancelToast(String pkg, IBinder token);
     void finishToken(String pkg, IBinder token);
 
@@ -86,6 +88,7 @@
     void createNotificationChannelGroups(String pkg, in ParceledListSlice channelGroupList);
     void createNotificationChannels(String pkg, in ParceledListSlice channelsList);
     void createNotificationChannelsForPackage(String pkg, int uid, in ParceledListSlice channelsList);
+    ParceledListSlice getConversationsForPackage(String pkg, int uid);
     ParceledListSlice getNotificationChannelGroupsForPackage(String pkg, int uid, boolean includeDeleted);
     NotificationChannelGroup getNotificationChannelGroupForPackage(String groupId, String pkg, int uid);
     NotificationChannelGroup getPopulatedNotificationChannelGroupForPackage(String pkg, int uid, String groupId, boolean includeDeleted);
@@ -94,7 +97,7 @@
     NotificationChannel getNotificationChannel(String callingPkg, int userId, String pkg, String channelId);
     NotificationChannel getConversationNotificationChannel(String callingPkg, int userId, String pkg, String channelId, boolean returnParentIfNoConversationChannel, String conversationId);
     void createConversationNotificationChannelForPackage(String pkg, int uid, String triggeringKey, in NotificationChannel parentChannel, String conversationId);
-    NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, boolean includeDeleted);
+    NotificationChannel getNotificationChannelForPackage(String pkg, int uid, String channelId, String conversationId, boolean includeDeleted);
     void deleteNotificationChannel(String pkg, String channelId);
     void deleteConversationNotificationChannels(String pkg, int uid, String conversationId);
     ParceledListSlice getNotificationChannels(String callingPkg, String targetPkg, int userId);
@@ -111,6 +114,7 @@
     int getAppsBypassingDndCount(int uid);
     ParceledListSlice getNotificationChannelsBypassingDnd(String pkg, int userId);
     boolean isPackagePaused(String pkg);
+    void deleteNotificationHistoryItem(String pkg, int uid, long postedTime);
 
     void silenceNotificationSound();
 
@@ -119,7 +123,7 @@
     @UnsupportedAppUsage
     StatusBarNotification[] getActiveNotifications(String callingPkg);
     @UnsupportedAppUsage
-    StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count);
+    StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count, boolean includeSnoozed);
 
     NotificationHistory getNotificationHistory(String callingPkg);
 
diff --git a/core/java/android/app/ITaskOrganizerController.aidl b/core/java/android/app/ITaskOrganizerController.aidl
new file mode 100644
index 0000000..9d6c3d6
--- /dev/null
+++ b/core/java/android/app/ITaskOrganizerController.aidl
@@ -0,0 +1,69 @@
+/**
+ * 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 android.app;
+
+import android.app.ActivityManager;
+import android.view.ITaskOrganizer;
+import android.view.IWindowContainer;
+import android.view.WindowContainerTransaction;
+
+/** @hide */
+interface ITaskOrganizerController {
+
+    /**
+     * Register a TaskOrganizer to manage tasks as they enter the given windowing mode.
+     * If there was already a TaskOrganizer for this windowing mode it will be evicted
+     * and receive taskVanished callbacks in the process.
+     */
+    void registerTaskOrganizer(ITaskOrganizer organizer, int windowingMode);
+
+    /**
+     * Apply multiple WindowContainer operations at once.
+     * @param organizer If non-null this transaction will use the synchronization
+     *        scheme described in BLASTSyncEngine.java. The SurfaceControl transaction
+     *        containing the effects of this WindowContainer transaction will be passed
+     *        to the organizers Transaction ready callback. If null the transaction
+     *        will apply with non particular synchronization constraints (other than
+     *        it will all apply at once).
+     * @return If organizer was non-null returns an ID for the sync operation which will
+     *         later be passed to transactionReady. This lets TaskOrganizer implementations
+     *         differentiate overlapping sync operations.
+     */
+    int applyContainerTransaction(in WindowContainerTransaction t, ITaskOrganizer organizer);
+
+    /** Creates a persistent root task in WM for a particular windowing-mode. */
+    ActivityManager.RunningTaskInfo createRootTask(int displayId, int windowingMode);
+
+    /** Deletes a persistent root task in WM */
+    boolean deleteRootTask(IWindowContainer task);
+
+    /** Gets direct child tasks (ordered from top-to-bottom) */
+    List<ActivityManager.RunningTaskInfo> getChildTasks(in IWindowContainer parent,
+            in int[] activityTypes);
+
+    /** Gets all root tasks on a display (ordered from top-to-bottom) */
+    List<ActivityManager.RunningTaskInfo> getRootTasks(int displayId, in int[] activityTypes);
+
+    /** Get the root task which contains the current ime target */
+    IWindowContainer getImeTarget(int display);
+
+    /**
+     * Set's the root task to launch new tasks into on a display. {@code null} means no launch root
+     * and thus new tasks just end up directly on the display.
+     */
+    void setLaunchRoot(int displayId, in IWindowContainer root);
+}
diff --git a/core/java/android/app/IUiAutomationConnection.aidl b/core/java/android/app/IUiAutomationConnection.aidl
index 80ba464..8c3180b 100644
--- a/core/java/android/app/IUiAutomationConnection.aidl
+++ b/core/java/android/app/IUiAutomationConnection.aidl
@@ -39,6 +39,7 @@
     boolean injectInputEvent(in InputEvent event, boolean sync);
     void syncInputTransactions();
     boolean setRotation(int rotation);
+    Bitmap takeScreenshot(in Rect crop, int rotation);
     boolean clearWindowContentFrameStats(int windowId);
     WindowContentFrameStats getWindowContentFrameStats(int windowId);
     void clearWindowAnimationFrameStats();
diff --git a/core/java/android/app/Instrumentation.java b/core/java/android/app/Instrumentation.java
index 62c905d..18932c6 100644
--- a/core/java/android/app/Instrumentation.java
+++ b/core/java/android/app/Instrumentation.java
@@ -1721,7 +1721,7 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(who);
             int result = ActivityTaskManager.getService()
-                .startActivity(whoThread, who.getBasePackageName(), intent,
+                .startActivity(whoThread, who.getBasePackageName(), who.getFeatureId(), intent,
                         intent.resolveTypeIfNeeded(who.getContentResolver()),
                         token, target != null ? target.mEmbeddedID : null,
                         requestCode, 0, null, options);
@@ -1794,8 +1794,8 @@
                 resolvedTypes[i] = intents[i].resolveTypeIfNeeded(who.getContentResolver());
             }
             int result = ActivityTaskManager.getService()
-                .startActivities(whoThread, who.getBasePackageName(), intents, resolvedTypes,
-                        token, options, userId);
+                .startActivities(whoThread, who.getBasePackageName(), who.getFeatureId(), intents,
+                        resolvedTypes, token, options, userId);
             checkStartActivityResult(result, intents[0]);
             return result;
         } catch (RemoteException e) {
@@ -1861,7 +1861,7 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(who);
             int result = ActivityTaskManager.getService()
-                .startActivity(whoThread, who.getBasePackageName(), intent,
+                .startActivity(whoThread, who.getBasePackageName(), who.getFeatureId(), intent,
                         intent.resolveTypeIfNeeded(who.getContentResolver()),
                         token, target, requestCode, 0, null, options);
             checkStartActivityResult(result, intent);
@@ -1928,8 +1928,8 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(who);
             int result = ActivityTaskManager.getService()
-                .startActivityAsUser(whoThread, who.getBasePackageName(), intent,
-                        intent.resolveTypeIfNeeded(who.getContentResolver()),
+                .startActivityAsUser(whoThread, who.getBasePackageName(), who.getFeatureId(),
+                        intent, intent.resolveTypeIfNeeded(who.getContentResolver()),
                         token, resultWho,
                         requestCode, 0, null, options, user.getIdentifier());
             checkStartActivityResult(result, intent);
@@ -2022,7 +2022,8 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(who);
             int result = appTask.startActivity(whoThread.asBinder(), who.getBasePackageName(),
-                    intent, intent.resolveTypeIfNeeded(who.getContentResolver()), options);
+                    who.getFeatureId(), intent,
+                    intent.resolveTypeIfNeeded(who.getContentResolver()), options);
             checkStartActivityResult(result, intent);
         } catch (RemoteException e) {
             throw new RuntimeException("Failure from system", e);
diff --git a/core/java/android/app/Notification.java b/core/java/android/app/Notification.java
index 35d26ab..576b56f 100644
--- a/core/java/android/app/Notification.java
+++ b/core/java/android/app/Notification.java
@@ -2487,6 +2487,20 @@
             if (extras.containsKey(EXTRA_BACKGROUND_IMAGE_URI)) {
                 visitor.accept(Uri.parse(extras.getString(EXTRA_BACKGROUND_IMAGE_URI)));
             }
+
+            ArrayList<Person> people = extras.getParcelableArrayList(EXTRA_PEOPLE_LIST);
+            if (people != null && !people.isEmpty()) {
+                for (Person p : people) {
+                    if (p.getIconUri() != null) {
+                        visitor.accept(p.getIconUri());
+                    }
+                }
+            }
+
+            final Person person = extras.getParcelable(EXTRA_MESSAGING_PERSON);
+            if (person != null && person.getIconUri() != null) {
+                visitor.accept(person.getIconUri());
+            }
         }
 
         if (MessagingStyle.class.equals(getNotificationStyle()) && extras != null) {
@@ -2495,6 +2509,11 @@
                 for (MessagingStyle.Message message : MessagingStyle.Message
                         .getMessagesFromBundleArray(messages)) {
                     visitor.accept(message.getDataUri());
+
+                    Person senderPerson = message.getSenderPerson();
+                    if (senderPerson != null && senderPerson.getIconUri() != null) {
+                        visitor.accept(senderPerson.getIconUri());
+                    }
                 }
             }
 
@@ -2503,6 +2522,11 @@
                 for (MessagingStyle.Message message : MessagingStyle.Message
                         .getMessagesFromBundleArray(historic)) {
                     visitor.accept(message.getDataUri());
+
+                    Person senderPerson = message.getSenderPerson();
+                    if (senderPerson != null && senderPerson.getIconUri() != null) {
+                        visitor.accept(senderPerson.getIconUri());
+                    }
                 }
             }
         }
diff --git a/core/java/android/app/NotificationChannel.java b/core/java/android/app/NotificationChannel.java
index 5a4622e..7212be8 100644
--- a/core/java/android/app/NotificationChannel.java
+++ b/core/java/android/app/NotificationChannel.java
@@ -15,8 +15,6 @@
  */
 package android.app;
 
-import static android.annotation.SystemApi.Client.MODULE_APPS;
-
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
@@ -33,7 +31,6 @@
 import android.provider.Settings;
 import android.service.notification.NotificationListenerService;
 import android.text.TextUtils;
-import android.util.Log;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.util.Preconditions;
@@ -107,6 +104,7 @@
     private static final String ATT_ORIG_IMP = "orig_imp";
     private static final String ATT_PARENT_CHANNEL = "parent";
     private static final String ATT_CONVERSATION_ID = "conv_id";
+    private static final String ATT_IMP_CONVERSATION = "imp_conv";
     private static final String ATT_DEMOTE = "dem";
     private static final String DELIMITER = ",";
 
@@ -198,6 +196,7 @@
     private String mParentId = null;
     private String mConversationId = null;
     private boolean mDemoted = false;
+    private boolean mImportantConvo = false;
 
     /**
      * Creates a notification channel.
@@ -265,6 +264,7 @@
         mParentId = in.readString();
         mConversationId = in.readString();
         mDemoted = in.readBoolean();
+        mImportantConvo = in.readBoolean();
     }
 
     @Override
@@ -323,6 +323,7 @@
         dest.writeString(mParentId);
         dest.writeString(mConversationId);
         dest.writeBoolean(mDemoted);
+        dest.writeBoolean(mImportantConvo);
     }
 
     /**
@@ -356,13 +357,21 @@
     }
 
     /**
+     * @hide
+     */
+    @TestApi
+    public void setImportantConversation(boolean importantConvo) {
+        mImportantConvo = importantConvo;
+    }
+
+    /**
      * Allows users to block notifications sent through this channel, if this channel belongs to
      * a package that is signed with the system signature. If the channel does not belong to a
      * package that is signed with the system signature, this method does nothing.
      * @param blockableSystem if {@code true}, allows users to block notifications on this channel.
      * @hide
      */
-    @SystemApi(client = MODULE_APPS)
+    @SystemApi
     @TestApi
     public void setBlockableSystem(boolean blockableSystem) {
         mBlockableSystem = blockableSystem;
@@ -603,6 +612,18 @@
     }
 
     /**
+     * Whether or not notifications in this conversation are considered important.
+     *
+     * <p>Important conversations may get special visual treatment, and might be able to bypass DND.
+     *
+     * <p>This is only valid for channels that represent conversations, that is, those with a valid
+     * {@link #getConversationId() conversation id}.
+     */
+    public boolean isImportantConversation() {
+        return mImportantConvo;
+    }
+
+    /**
      * Returns the notification sound for this channel.
      */
     public Uri getSound() {
@@ -854,6 +875,7 @@
         setConversationId(parser.getAttributeValue(null, ATT_PARENT_CHANNEL),
                 parser.getAttributeValue(null, ATT_CONVERSATION_ID));
         setDemoted(safeBool(parser, ATT_DEMOTE, false));
+        setImportantConversation(safeBool(parser, ATT_IMP_CONVERSATION, false));
     }
 
     @Nullable
@@ -987,6 +1009,9 @@
         if (isDemoted()) {
             out.attribute(null, ATT_DEMOTE, Boolean.toString(isDemoted()));
         }
+        if (isImportantConversation()) {
+            out.attribute(null, ATT_IMP_CONVERSATION, Boolean.toString(isImportantConversation()));
+        }
 
         // mImportanceLockedDefaultApp and mImportanceLockedByOEM have a different source of
         // truth and so aren't written to this xml file
@@ -1147,7 +1172,8 @@
                 && mOriginalImportance == that.mOriginalImportance
                 && Objects.equals(getParentChannelId(), that.getParentChannelId())
                 && Objects.equals(getConversationId(), that.getConversationId())
-                && isDemoted() == that.isDemoted();
+                && isDemoted() == that.isDemoted()
+                && isImportantConversation() == that.isImportantConversation();
     }
 
     @Override
@@ -1158,7 +1184,7 @@
                 isFgServiceShown(), mVibrationEnabled, mShowBadge, isDeleted(), getGroup(),
                 getAudioAttributes(), isBlockableSystem(), mAllowBubbles,
                 mImportanceLockedByOEM, mImportanceLockedDefaultApp, mOriginalImportance,
-                mParentId, mConversationId, mDemoted);
+                mParentId, mConversationId, mDemoted, mImportantConvo);
         result = 31 * result + Arrays.hashCode(mVibration);
         return result;
     }
@@ -1206,7 +1232,8 @@
                 + ", mOriginalImp=" + mOriginalImportance
                 + ", mParent=" + mParentId
                 + ", mConversationId=" + mConversationId
-                + ", mDemoted=" + mDemoted;
+                + ", mDemoted=" + mDemoted
+                + ", mImportantConvo=" + mImportantConvo;
     }
 
     /** @hide */
diff --git a/core/java/android/app/NotificationHistory.java b/core/java/android/app/NotificationHistory.java
index 909a476..f26e628 100644
--- a/core/java/android/app/NotificationHistory.java
+++ b/core/java/android/app/NotificationHistory.java
@@ -346,6 +346,26 @@
     }
 
     /**
+     * Removes an individual historical notification and regenerates the string pool
+     */
+    public boolean removeNotificationFromWrite(String packageName, long postedTime) {
+        boolean removed = false;
+        for (int i = mNotificationsToWrite.size() - 1; i >= 0; i--) {
+            HistoricalNotification hn = mNotificationsToWrite.get(i);
+            if (packageName.equals(hn.getPackage())
+                    && postedTime == hn.getPostedTimeMs()) {
+                removed = true;
+                mNotificationsToWrite.remove(i);
+            }
+        }
+        if (removed) {
+            poolStringsFromNotifications();
+        }
+
+        return removed;
+    }
+
+    /**
      * Gets pooled strings in order to write them to disk
      */
     public @NonNull String[] getPooledStringsToWrite() {
diff --git a/core/java/android/app/NotificationManager.java b/core/java/android/app/NotificationManager.java
index 1a8e15c..528b508 100644
--- a/core/java/android/app/NotificationManager.java
+++ b/core/java/android/app/NotificationManager.java
@@ -46,6 +46,7 @@
 import android.service.notification.Condition;
 import android.service.notification.StatusBarNotification;
 import android.service.notification.ZenModeConfig;
+import android.service.notification.ZenPolicy;
 import android.util.Log;
 import android.util.proto.ProtoOutputStream;
 
@@ -1555,19 +1556,24 @@
         public static final int PRIORITY_CATEGORY_MEDIA = 1 << 6;
         /**System (catch-all for non-never suppressible sounds) are prioritized */
         public static final int PRIORITY_CATEGORY_SYSTEM = 1 << 7;
+        /**
+         * Conversations are allowed through DND.
+         */
+        public static final int PRIORITY_CATEGORY_CONVERSATIONS = 1 << 8;
 
         /**
          * @hide
          */
         public static final int[] ALL_PRIORITY_CATEGORIES = {
-            PRIORITY_CATEGORY_ALARMS,
-            PRIORITY_CATEGORY_MEDIA,
-            PRIORITY_CATEGORY_SYSTEM,
-            PRIORITY_CATEGORY_REMINDERS,
-            PRIORITY_CATEGORY_EVENTS,
-            PRIORITY_CATEGORY_MESSAGES,
-            PRIORITY_CATEGORY_CALLS,
-            PRIORITY_CATEGORY_REPEAT_CALLERS,
+                PRIORITY_CATEGORY_ALARMS,
+                PRIORITY_CATEGORY_MEDIA,
+                PRIORITY_CATEGORY_SYSTEM,
+                PRIORITY_CATEGORY_REMINDERS,
+                PRIORITY_CATEGORY_EVENTS,
+                PRIORITY_CATEGORY_MESSAGES,
+                PRIORITY_CATEGORY_CALLS,
+                PRIORITY_CATEGORY_REPEAT_CALLERS,
+                PRIORITY_CATEGORY_CONVERSATIONS,
         };
 
         /** Any sender is prioritized. */
@@ -1577,6 +1583,31 @@
         /** Only starred contacts are prioritized. */
         public static final int PRIORITY_SENDERS_STARRED = 2;
 
+
+        /** @hide */
+        @IntDef(prefix = { "CONVERSATION_SENDERS_" }, value = {
+                CONVERSATION_SENDERS_ANYONE,
+                CONVERSATION_SENDERS_IMPORTANT,
+                CONVERSATION_SENDERS_NONE,
+        })
+        @Retention(RetentionPolicy.SOURCE)
+        public @interface ConversationSenders {}
+        /**
+         * Used to indicate all conversations can bypass dnd.
+         */
+        public static final int CONVERSATION_SENDERS_ANYONE = ZenPolicy.CONVERSATION_SENDERS_ANYONE;
+
+        /**
+         * Used to indicate important conversations can bypass dnd.
+         */
+        public static final int CONVERSATION_SENDERS_IMPORTANT =
+                ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
+
+        /**
+         * Used to indicate no conversations can bypass dnd.
+         */
+        public static final int CONVERSATION_SENDERS_NONE = ZenPolicy.CONVERSATION_SENDERS_NONE;
+
         /** Notification categories to prioritize. Bitmask of PRIORITY_CATEGORY_* constants. */
         public final int priorityCategories;
 
@@ -1589,6 +1620,18 @@
         public final int priorityMessageSenders;
 
         /**
+         * Notification senders to prioritize for conversations. One of:
+         * {@link #CONVERSATION_SENDERS_NONE}, {@link #CONVERSATION_SENDERS_IMPORTANT},
+         * {@link #CONVERSATION_SENDERS_ANYONE}.
+         */
+        public final int priorityConversationSenders;
+
+        /**
+         * @hide
+         */
+        public static final int CONVERSATION_SENDERS_UNSET = -1;
+
+        /**
          * @hide
          */
         public static final int SUPPRESSED_EFFECTS_UNSET = -1;
@@ -1665,21 +1708,6 @@
                 SUPPRESSED_EFFECT_NOTIFICATION_LIST
         };
 
-        private static final int[] SCREEN_OFF_SUPPRESSED_EFFECTS = {
-                SUPPRESSED_EFFECT_SCREEN_OFF,
-                SUPPRESSED_EFFECT_FULL_SCREEN_INTENT,
-                SUPPRESSED_EFFECT_LIGHTS,
-                SUPPRESSED_EFFECT_AMBIENT,
-        };
-
-        private static final int[] SCREEN_ON_SUPPRESSED_EFFECTS = {
-                SUPPRESSED_EFFECT_SCREEN_ON,
-                SUPPRESSED_EFFECT_PEEK,
-                SUPPRESSED_EFFECT_STATUS_BAR,
-                SUPPRESSED_EFFECT_BADGE,
-                SUPPRESSED_EFFECT_NOTIFICATION_LIST
-        };
-
         /**
          * Visual effects to suppress for a notification that is filtered by Do Not Disturb mode.
          * Bitmask of SUPPRESSED_EFFECT_* constants.
@@ -1718,17 +1746,16 @@
          */
         public Policy(int priorityCategories, int priorityCallSenders, int priorityMessageSenders) {
             this(priorityCategories, priorityCallSenders, priorityMessageSenders,
-                    SUPPRESSED_EFFECTS_UNSET, STATE_UNSET);
+                    SUPPRESSED_EFFECTS_UNSET, STATE_UNSET, CONVERSATION_SENDERS_UNSET);
         }
 
         /**
          * Constructs a policy for Do Not Disturb priority mode behavior.
          *
          * <p>
-         *     Apps that target API levels below {@link Build.VERSION_CODES#P} cannot
+         *     Apps that target API levels below {@link Build.VERSION_CODES#R} cannot
          *     change user-designated values to allow or disallow
-         *     {@link Policy#PRIORITY_CATEGORY_ALARMS}, {@link Policy#PRIORITY_CATEGORY_SYSTEM}, and
-         *     {@link Policy#PRIORITY_CATEGORY_MEDIA} from bypassing dnd.
+         *     {@link Policy#PRIORITY_CATEGORY_CONVERSATIONS}, from bypassing dnd.
          * <p>
          *     Additionally, apps that target API levels below {@link Build.VERSION_CODES#P} can
          *     only modify the {@link #SUPPRESSED_EFFECT_SCREEN_ON} and
@@ -1752,27 +1779,68 @@
          */
         public Policy(int priorityCategories, int priorityCallSenders, int priorityMessageSenders,
                 int suppressedVisualEffects) {
-            this.priorityCategories = priorityCategories;
-            this.priorityCallSenders = priorityCallSenders;
-            this.priorityMessageSenders = priorityMessageSenders;
-            this.suppressedVisualEffects = suppressedVisualEffects;
-            this.state = STATE_UNSET;
+            this(priorityCategories, priorityCallSenders, priorityMessageSenders,
+                    suppressedVisualEffects, STATE_UNSET, CONVERSATION_SENDERS_UNSET);
+        }
+
+        /**
+         * Constructs a policy for Do Not Disturb priority mode behavior.
+         *
+         * <p>
+         *     Apps that target API levels below {@link Build.VERSION_CODES#P} cannot
+         *     change user-designated values to allow or disallow
+         *     {@link Policy#PRIORITY_CATEGORY_CONVERSATIONS} from bypassing dnd. If you do need
+         *     to change them, use a {@link ZenPolicy} associated with an {@link AutomaticZenRule}
+         *     instead of changing the global setting.
+         * <p>
+         *     Apps that target API levels below {@link Build.VERSION_CODES#P} cannot
+         *     change user-designated values to allow or disallow
+         *     {@link Policy#PRIORITY_CATEGORY_ALARMS},
+         *     {@link Policy#PRIORITY_CATEGORY_SYSTEM}, and
+         *     {@link Policy#PRIORITY_CATEGORY_MEDIA} from bypassing dnd.
+         * <p>
+         *     Additionally, apps that target API levels below {@link Build.VERSION_CODES#P} can
+         *     only modify the {@link #SUPPRESSED_EFFECT_SCREEN_ON} and
+         *     {@link #SUPPRESSED_EFFECT_SCREEN_OFF} bits of the suppressed visual effects field.
+         *     All other suppressed effects will be ignored and reconstituted from the screen on
+         *     and screen off values.
+         * <p>
+         *     Apps that target {@link Build.VERSION_CODES#P} or above can set any
+         *     suppressed visual effects. However, if any suppressed effects >
+         *     {@link #SUPPRESSED_EFFECT_SCREEN_ON} are set, {@link #SUPPRESSED_EFFECT_SCREEN_ON}
+         *     and {@link #SUPPRESSED_EFFECT_SCREEN_OFF} will be ignored and reconstituted from
+         *     the more specific suppressed visual effect bits. Apps should migrate to targeting
+         *     specific effects instead of the deprecated {@link #SUPPRESSED_EFFECT_SCREEN_ON} and
+         *     {@link #SUPPRESSED_EFFECT_SCREEN_OFF} effects.
+         *
+         * @param priorityCategories bitmask of categories of notifications that can bypass DND.
+         * @param priorityCallSenders which callers can bypass DND.
+         * @param priorityMessageSenders which message senders can bypass DND.
+         * @param suppressedVisualEffects which visual interruptions should be suppressed from
+         *                                notifications that are filtered by DND.
+         */
+        public Policy(int priorityCategories, int priorityCallSenders, int priorityMessageSenders,
+                int suppressedVisualEffects, int priorityConversationSenders) {
+            this(priorityCategories, priorityCallSenders, priorityMessageSenders,
+                    suppressedVisualEffects, STATE_UNSET, priorityConversationSenders);
         }
 
         /** @hide */
         public Policy(int priorityCategories, int priorityCallSenders, int priorityMessageSenders,
-                int suppressedVisualEffects, int state) {
+                int suppressedVisualEffects, int state, int priorityConversationSenders) {
             this.priorityCategories = priorityCategories;
             this.priorityCallSenders = priorityCallSenders;
             this.priorityMessageSenders = priorityMessageSenders;
             this.suppressedVisualEffects = suppressedVisualEffects;
             this.state = state;
+            this.priorityConversationSenders = priorityConversationSenders;
         }
 
+
         /** @hide */
         public Policy(Parcel source) {
             this(source.readInt(), source.readInt(), source.readInt(), source.readInt(),
-                    source.readInt());
+                    source.readInt(), source.readInt());
         }
 
         @Override
@@ -1782,6 +1850,7 @@
             dest.writeInt(priorityMessageSenders);
             dest.writeInt(suppressedVisualEffects);
             dest.writeInt(state);
+            dest.writeInt(priorityConversationSenders);
         }
 
         @Override
@@ -1792,7 +1861,7 @@
         @Override
         public int hashCode() {
             return Objects.hash(priorityCategories, priorityCallSenders, priorityMessageSenders,
-                    suppressedVisualEffects, state);
+                    suppressedVisualEffects, state, priorityConversationSenders);
         }
 
         @Override
@@ -1805,7 +1874,8 @@
                     && other.priorityMessageSenders == priorityMessageSenders
                     && suppressedVisualEffectsEqual(suppressedVisualEffects,
                     other.suppressedVisualEffects)
-                    && other.state == this.state;
+                    && other.state == this.state
+                    && other.priorityConversationSenders == this.priorityConversationSenders;
         }
 
         private boolean suppressedVisualEffectsEqual(int suppressedEffects,
@@ -1867,6 +1937,8 @@
                     + "priorityCategories=" + priorityCategoriesToString(priorityCategories)
                     + ",priorityCallSenders=" + prioritySendersToString(priorityCallSenders)
                     + ",priorityMessageSenders=" + prioritySendersToString(priorityMessageSenders)
+                    + ",priorityConvSenders="
+                    + conversationSendersToString(priorityConversationSenders)
                     + ",suppressedVisualEffects="
                     + suppressedEffectsToString(suppressedVisualEffects)
                     + ",areChannelsBypassingDnd=" + (((state & STATE_CHANNELS_BYPASSING_DND) != 0)
@@ -2003,6 +2075,7 @@
                 case PRIORITY_CATEGORY_ALARMS: return "PRIORITY_CATEGORY_ALARMS";
                 case PRIORITY_CATEGORY_MEDIA: return "PRIORITY_CATEGORY_MEDIA";
                 case PRIORITY_CATEGORY_SYSTEM: return "PRIORITY_CATEGORY_SYSTEM";
+                case PRIORITY_CATEGORY_CONVERSATIONS: return "PRIORITY_CATEGORY_CONVERSATIONS";
                 default: return "PRIORITY_CATEGORY_UNKNOWN_" + priorityCategory;
             }
         }
@@ -2016,7 +2089,25 @@
             }
         }
 
-        public static final @android.annotation.NonNull Parcelable.Creator<Policy> CREATOR = new Parcelable.Creator<Policy>() {
+        /**
+         * @hide
+         */
+        public static @NonNull String conversationSendersToString(int priorityConversationSenders) {
+            switch (priorityConversationSenders) {
+                case CONVERSATION_SENDERS_ANYONE:
+                    return "anyone";
+                case CONVERSATION_SENDERS_IMPORTANT:
+                    return "important";
+                case CONVERSATION_SENDERS_NONE:
+                    return "none";
+                case CONVERSATION_SENDERS_UNSET:
+                    return "unset";
+            }
+            return "invalidConversationType{" + priorityConversationSenders + "}";
+        }
+
+        public static final @android.annotation.NonNull Parcelable.Creator<Policy> CREATOR
+                = new Parcelable.Creator<Policy>() {
             @Override
             public Policy createFromParcel(Parcel in) {
                 return new Policy(in);
@@ -2054,6 +2145,11 @@
         }
 
         /** @hide **/
+        public boolean allowConversations() {
+            return (priorityCategories & PRIORITY_CATEGORY_CONVERSATIONS) != 0;
+        }
+
+        /** @hide **/
         public boolean allowMessages() {
             return (priorityCategories & PRIORITY_CATEGORY_MESSAGES) != 0;
         }
@@ -2079,6 +2175,11 @@
         }
 
         /** @hide **/
+        public int allowConversationsFrom() {
+            return priorityConversationSenders;
+        }
+
+        /** @hide **/
         public boolean showFullScreenIntents() {
             return (suppressedVisualEffects & SUPPRESSED_EFFECT_FULL_SCREEN_INTENT) == 0;
         }
diff --git a/core/java/android/app/PendingIntent.java b/core/java/android/app/PendingIntent.java
index b8348c7..f68c929 100644
--- a/core/java/android/app/PendingIntent.java
+++ b/core/java/android/app/PendingIntent.java
@@ -354,8 +354,8 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(context);
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName, context.getFeatureId(),
                     null, null, requestCode, new Intent[] { intent },
                     resolvedType != null ? new String[] { resolvedType } : null,
                     flags, options, context.getUserId());
@@ -380,8 +380,8 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(context);
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName, context.getFeatureId(),
                     null, null, requestCode, new Intent[] { intent },
                     resolvedType != null ? new String[] { resolvedType } : null,
                     flags, options, user.getIdentifier());
@@ -497,8 +497,8 @@
         }
         try {
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName, context.getFeatureId(),
                     null, null, requestCode, intents, resolvedTypes, flags, options,
                     context.getUserId());
             return target != null ? new PendingIntent(target) : null;
@@ -523,8 +523,8 @@
         }
         try {
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    ActivityManager.INTENT_SENDER_ACTIVITY, packageName, context.getFeatureId(),
                     null, null, requestCode, intents, resolvedTypes,
                     flags, options, user.getIdentifier());
             return target != null ? new PendingIntent(target) : null;
@@ -575,8 +575,8 @@
         try {
             intent.prepareToLeaveProcess(context);
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    ActivityManager.INTENT_SENDER_BROADCAST, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    ActivityManager.INTENT_SENDER_BROADCAST, packageName, context.getFeatureId(),
                     null, null, requestCode, new Intent[] { intent },
                     resolvedType != null ? new String[] { resolvedType } : null,
                     flags, null, userHandle.getIdentifier());
@@ -654,8 +654,8 @@
         try {
             intent.prepareToLeaveProcess(context);
             IIntentSender target =
-                ActivityManager.getService().getIntentSender(
-                    serviceKind, packageName,
+                ActivityManager.getService().getIntentSenderWithFeature(
+                    serviceKind, packageName, context.getFeatureId(),
                     null, null, requestCode, new Intent[] { intent },
                     resolvedType != null ? new String[] { resolvedType } : null,
                     flags, null, context.getUserId());
diff --git a/core/java/android/app/Person.java b/core/java/android/app/Person.java
index 14a5589..63ef248 100644
--- a/core/java/android/app/Person.java
+++ b/core/java/android/app/Person.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.graphics.drawable.Icon;
+import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -122,6 +123,20 @@
         return "";
     }
 
+    /**
+     * @return the URI associated with the {@link #getIcon()} for this person, iff the icon exists
+     * and is URI based.
+     * @hide
+     */
+    @Nullable
+    public Uri getIconUri() {
+        if (mIcon != null && (mIcon.getType() == Icon.TYPE_URI
+                || mIcon.getType() == Icon.TYPE_URI_ADAPTIVE_BITMAP)) {
+            return mIcon.getUri();
+        }
+        return null;
+    }
+
     @Override
     public boolean equals(Object obj) {
         if (obj instanceof Person) {
diff --git a/core/java/android/app/PictureInPictureParams.java b/core/java/android/app/PictureInPictureParams.java
index bfd966c5..67d94de 100644
--- a/core/java/android/app/PictureInPictureParams.java
+++ b/core/java/android/app/PictureInPictureParams.java
@@ -247,6 +247,14 @@
         return mSourceRectHint != null && !mSourceRectHint.isEmpty();
     }
 
+    /**
+     * @return True if no parameters are set
+     * @hide
+     */
+    public boolean empty() {
+        return !hasSourceBoundsHint() && !hasSetActions() && !hasSetAspectRatio();
+    }
+
     @Override
     public int describeContents() {
         return 0;
diff --git a/core/java/android/app/PropertyInvalidatedCache.java b/core/java/android/app/PropertyInvalidatedCache.java
index 736efb6..cbd2f1a 100644
--- a/core/java/android/app/PropertyInvalidatedCache.java
+++ b/core/java/android/app/PropertyInvalidatedCache.java
@@ -297,9 +297,10 @@
             if (currentNonce == NONCE_DISABLED || currentNonce == NONCE_UNSET) {
                 if (DEBUG) {
                     Log.d(TAG,
-                            String.format("cache %s for %s",
+                            String.format("cache %s %s for %s",
+                                cacheName(),
                                 currentNonce == NONCE_DISABLED ? "disabled" : "unset",
-                                query));
+                                queryToString(query)));
                 }
                 return recompute(query);
             }
@@ -310,7 +311,8 @@
                 } else {
                     if (DEBUG) {
                         Log.d(TAG,
-                                String.format("clearing cache because nonce changed [%s] -> [%s]",
+                                String.format("clearing cache %s because nonce changed [%s] -> [%s]",
+                                        cacheName(),
                                         mLastSeenNonce, currentNonce));
                     }
                     mCache.clear();
@@ -328,13 +330,15 @@
                 final Result refreshedResult = refresh(cachedResult, query);
                 if (refreshedResult != cachedResult) {
                     if (DEBUG) {
-                        Log.d(TAG, "cache refresh for " + query);
+                        Log.d(TAG, "cache refresh for " + cacheName() + " " + queryToString(query));
                     }
                     final long afterRefreshNonce = getCurrentNonce();
                     if (currentNonce != afterRefreshNonce) {
                         currentNonce = afterRefreshNonce;
                         if (DEBUG) {
-                            Log.d(TAG, "restarting query because nonce changed in refresh");
+                            Log.d(TAG, String.format("restarting %s %s because nonce changed in refresh",
+                                                     cacheName(),
+                                                     queryToString(query)));
                         }
                         continue;
                     }
@@ -352,13 +356,13 @@
                     return maybeCheckConsistency(query, refreshedResult);
                 }
                 if (DEBUG) {
-                    Log.d(TAG, "cache hit for " + query);
+                    Log.d(TAG, "cache hit for " + cacheName() + " " + queryToString(query));
                 }
                 return maybeCheckConsistency(query, cachedResult);
             }
             // Cache miss: make the value from scratch.
             if (DEBUG) {
-                Log.d(TAG, "cache miss for " + query);
+                Log.d(TAG, "cache miss for " + cacheName() + " " + queryToString(query));
             }
             final Result result = recompute(query);
             synchronized (mLock) {
@@ -451,4 +455,20 @@
         }
         return proposedResult;
     }
+
+    /**
+     * Return the name of the cache, to be used in debug messages.  The
+     * method is public so clients can use it.
+     */
+    public String cacheName() {
+        return mPropertyName;
+    }
+
+    /**
+     * Return the query as a string, to be used in debug messages.  The
+     * method is public so clients can use it in external debug messages.
+     */
+    public String queryToString(Query query) {
+        return Objects.toString(query);
+    }
 }
diff --git a/core/java/android/app/SystemServiceRegistry.java b/core/java/android/app/SystemServiceRegistry.java
index 59c17192..8b07418 100644
--- a/core/java/android/app/SystemServiceRegistry.java
+++ b/core/java/android/app/SystemServiceRegistry.java
@@ -109,6 +109,8 @@
 import android.media.soundtrigger.SoundTriggerManager;
 import android.media.tv.ITvInputManager;
 import android.media.tv.TvInputManager;
+import android.media.tv.tuner.ITunerResourceManager;
+import android.media.tv.tuner.TunerResourceManager;
 import android.net.ConnectivityDiagnosticsManager;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityThread;
@@ -163,7 +165,7 @@
 import android.os.health.SystemHealthManager;
 import android.os.image.DynamicSystemManager;
 import android.os.image.IDynamicSystemService;
-import android.os.incremental.IIncrementalManagerNative;
+import android.os.incremental.IIncrementalService;
 import android.os.incremental.IncrementalManager;
 import android.os.storage.StorageManager;
 import android.permission.PermissionControllerManager;
@@ -365,11 +367,9 @@
         registerService(Context.TETHERING_SERVICE, TetheringManager.class,
                 new CachedServiceFetcher<TetheringManager>() {
             @Override
-            public TetheringManager createService(ContextImpl ctx) throws ServiceNotFoundException {
-                IBinder b = ServiceManager.getService(Context.TETHERING_SERVICE);
-                if (b == null) return null;
-
-                return new TetheringManager(ctx, b);
+            public TetheringManager createService(ContextImpl ctx) {
+                return new TetheringManager(
+                        ctx, () -> ServiceManager.getService(Context.TETHERING_SERVICE));
             }});
 
 
@@ -939,6 +939,17 @@
                 return new TvInputManager(service, ctx.getUserId());
             }});
 
+        registerService(Context.TV_TUNER_RESOURCE_MGR_SERVICE, TunerResourceManager.class,
+                new CachedServiceFetcher<TunerResourceManager>() {
+            @Override
+            public TunerResourceManager createService(ContextImpl ctx)
+                    throws ServiceNotFoundException {
+                IBinder iBinder =
+                        ServiceManager.getServiceOrThrow(Context.TV_TUNER_RESOURCE_MGR_SERVICE);
+                ITunerResourceManager service = ITunerResourceManager.Stub.asInterface(iBinder);
+                return new TunerResourceManager(service, ctx.getUserId());
+            }});
+
         registerService(Context.NETWORK_SCORE_SERVICE, NetworkScoreManager.class,
                 new CachedServiceFetcher<NetworkScoreManager>() {
             @Override
@@ -1301,7 +1312,7 @@
                             return null;
                         }
                         return new IncrementalManager(
-                                IIncrementalManagerNative.Stub.asInterface(b));
+                                IIncrementalService.Stub.asInterface(b));
                     }});
 
         registerService(Context.FILE_INTEGRITY_SERVICE, FileIntegrityManager.class,
diff --git a/core/java/android/app/TaskEmbedder.java b/core/java/android/app/TaskEmbedder.java
index 93b1ea8..761b225 100644
--- a/core/java/android/app/TaskEmbedder.java
+++ b/core/java/android/app/TaskEmbedder.java
@@ -48,7 +48,6 @@
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
 import android.view.SurfaceControl;
-import android.view.WindowManager;
 import android.view.WindowManagerGlobal;
 import android.view.inputmethod.InputMethodManager;
 
@@ -131,6 +130,7 @@
     private TaskStackListener mTaskStackListener;
     private Listener mListener;
     private boolean mOpened; // Protected by mGuard.
+    private DisplayMetrics mTmpDisplayMetrics;
 
     private final CloseGuard mGuard = CloseGuard.get();
 
@@ -594,10 +594,11 @@
 
     /** Get density of the hosting display. */
     private int getBaseDisplayDensity() {
-        final WindowManager wm = mContext.getSystemService(WindowManager.class);
-        final DisplayMetrics metrics = new DisplayMetrics();
-        wm.getDefaultDisplay().getMetrics(metrics);
-        return metrics.densityDpi;
+        if (mTmpDisplayMetrics == null) {
+            mTmpDisplayMetrics = new DisplayMetrics();
+        }
+        mContext.getDisplay().getMetrics(mTmpDisplayMetrics);
+        return mTmpDisplayMetrics.densityDpi;
     }
 
     /**
diff --git a/core/java/android/app/TaskInfo.java b/core/java/android/app/TaskInfo.java
index fe9c640..f7d712d 100644
--- a/core/java/android/app/TaskInfo.java
+++ b/core/java/android/app/TaskInfo.java
@@ -16,6 +16,8 @@
 
 package android.app;
 
+import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -25,6 +27,7 @@
 import android.os.Parcel;
 import android.os.RemoteException;
 import android.util.Log;
+import android.view.IWindowContainer;
 
 /**
  * Stores information about a particular Task.
@@ -138,6 +141,26 @@
     @UnsupportedAppUsage
     public final Configuration configuration = new Configuration();
 
+    /**
+     * Used as an opaque identifier for this task.
+     * @hide
+     */
+    @NonNull
+    public IWindowContainer token;
+
+    /**
+     * The PictureInPictureParams for the Task, if set.
+     * @hide
+     */
+    @Nullable
+    public PictureInPictureParams pictureInPictureParams;
+
+    /**
+     * The activity type of the top activity in this task.
+     * @hide
+     */
+    public @WindowConfiguration.ActivityType int topActivityType;
+
     TaskInfo() {
         // Do nothing
     }
@@ -160,6 +183,11 @@
         }
     }
 
+    /** @hide */
+    public boolean isResizable() {
+        return resizeMode != RESIZE_MODE_UNRESIZEABLE;
+    }
+
     /**
      * Reads the TaskInfo from a parcel.
      */
@@ -186,6 +214,11 @@
         supportsSplitScreenMultiWindow = source.readBoolean();
         resizeMode = source.readInt();
         configuration.readFromParcel(source);
+        token = IWindowContainer.Stub.asInterface(source.readStrongBinder());
+        topActivityType = source.readInt();
+        pictureInPictureParams = source.readInt() != 0
+            ? PictureInPictureParams.CREATOR.createFromParcel(source)
+            : null;
     }
 
     /**
@@ -221,6 +254,14 @@
         dest.writeBoolean(supportsSplitScreenMultiWindow);
         dest.writeInt(resizeMode);
         configuration.writeToParcel(dest, flags);
+        dest.writeStrongInterface(token);
+        dest.writeInt(topActivityType);
+        if (pictureInPictureParams == null) {
+            dest.writeInt(0);
+        } else {
+            dest.writeInt(1);
+            pictureInPictureParams.writeToParcel(dest, flags);
+        }
     }
 
     @Override
@@ -234,6 +275,9 @@
                 + " numActivities=" + numActivities
                 + " lastActiveTime=" + lastActiveTime
                 + " supportsSplitScreenMultiWindow=" + supportsSplitScreenMultiWindow
-                + " resizeMode=" + resizeMode;
+                + " resizeMode=" + resizeMode
+                + " token=" + token
+                + " topActivityType=" + topActivityType
+                + " pictureInPictureParams=" + pictureInPictureParams;
     }
 }
diff --git a/core/java/android/app/UiAutomation.java b/core/java/android/app/UiAutomation.java
index 35cf687..a9a06da 100644
--- a/core/java/android/app/UiAutomation.java
+++ b/core/java/android/app/UiAutomation.java
@@ -27,7 +27,10 @@
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.graphics.Bitmap;
+import android.graphics.Point;
+import android.graphics.Rect;
 import android.graphics.Region;
+import android.hardware.display.DisplayManagerGlobal;
 import android.os.Build;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -828,20 +831,39 @@
     }
 
     /**
-     * Takes a screenshot of the default display and returns it by {@link Bitmap.Config#HARDWARE}
-     * format.
+     * Takes a screenshot.
      *
      * @return The screenshot bitmap on success, null otherwise.
      */
     public Bitmap takeScreenshot() {
-        final int connectionId;
         synchronized (mLock) {
             throwIfNotConnectedLocked();
-            connectionId = mConnectionId;
         }
-        // Calling out without a lock held.
-        return AccessibilityInteractionClient.getInstance()
-                .takeScreenshot(connectionId, Display.DEFAULT_DISPLAY);
+        Display display = DisplayManagerGlobal.getInstance()
+                .getRealDisplay(Display.DEFAULT_DISPLAY);
+        Point displaySize = new Point();
+        display.getRealSize(displaySize);
+
+        int rotation = display.getRotation();
+
+        // Take the screenshot
+        Bitmap screenShot = null;
+        try {
+            // Calling out without a lock held.
+            screenShot = mUiAutomationConnection.takeScreenshot(
+                    new Rect(0, 0, displaySize.x, displaySize.y), rotation);
+            if (screenShot == null) {
+                return null;
+            }
+        } catch (RemoteException re) {
+            Log.e(LOG_TAG, "Error while taking screnshot!", re);
+            return null;
+        }
+
+        // Optimization
+        screenShot.setHasAlpha(false);
+
+        return screenShot;
     }
 
     /**
diff --git a/core/java/android/app/UiAutomationConnection.java b/core/java/android/app/UiAutomationConnection.java
index 4fb9743..82e9881 100644
--- a/core/java/android/app/UiAutomationConnection.java
+++ b/core/java/android/app/UiAutomationConnection.java
@@ -21,6 +21,8 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
+import android.graphics.Bitmap;
+import android.graphics.Rect;
 import android.hardware.input.InputManager;
 import android.os.Binder;
 import android.os.IBinder;
@@ -178,6 +180,23 @@
     }
 
     @Override
+    public Bitmap takeScreenshot(Rect crop, int rotation) {
+        synchronized (mLock) {
+            throwIfCalledByNotTrustedUidLocked();
+            throwIfShutdownLocked();
+            throwIfNotConnectedLocked();
+        }
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            int width = crop.width();
+            int height = crop.height();
+            return SurfaceControl.screenshot(crop, width, height, rotation);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    @Override
     public boolean clearWindowContentFrameStats(int windowId) throws RemoteException {
         synchronized (mLock) {
             throwIfCalledByNotTrustedUidLocked();
@@ -430,8 +449,7 @@
         info.setCapabilities(AccessibilityServiceInfo.CAPABILITY_CAN_RETRIEVE_WINDOW_CONTENT
                 | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_TOUCH_EXPLORATION
                 | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_ENHANCED_WEB_ACCESSIBILITY
-                | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS
-                | AccessibilityServiceInfo.CAPABILITY_CAN_TAKE_SCREENSHOT);
+                | AccessibilityServiceInfo.CAPABILITY_CAN_REQUEST_FILTER_KEY_EVENTS);
         try {
             // Calling out with a lock held is fine since if the system
             // process is gone the client calling in will be killed.
diff --git a/core/java/android/app/WallpaperManager.java b/core/java/android/app/WallpaperManager.java
index 6f1effd..5f74d2e 100644
--- a/core/java/android/app/WallpaperManager.java
+++ b/core/java/android/app/WallpaperManager.java
@@ -598,7 +598,8 @@
      *     is not able to access the wallpaper.
      */
     public Drawable getDrawable() {
-        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM, cmProxy);
         if (bm != null) {
             Drawable dr = new BitmapDrawable(mContext.getResources(), bm);
             dr.setDither(false);
@@ -829,7 +830,8 @@
      * null pointer if these is none.
      */
     public Drawable peekDrawable() {
-        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, false, FLAG_SYSTEM, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, false, FLAG_SYSTEM, cmProxy);
         if (bm != null) {
             Drawable dr = new BitmapDrawable(mContext.getResources(), bm);
             dr.setDither(false);
@@ -853,7 +855,8 @@
      */
     @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
     public Drawable getFastDrawable() {
-        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM, cmProxy);
         if (bm != null) {
             return new FastBitmapDrawable(bm);
         }
@@ -869,7 +872,8 @@
      */
     @RequiresPermission(android.Manifest.permission.READ_EXTERNAL_STORAGE)
     public Drawable peekFastDrawable() {
-        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, false, FLAG_SYSTEM, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        Bitmap bm = sGlobals.peekWallpaperBitmap(mContext, false, FLAG_SYSTEM, cmProxy);
         if (bm != null) {
             return new FastBitmapDrawable(bm);
         }
@@ -892,10 +896,11 @@
         if (!shouldEnableWideColorGamut()) {
             return false;
         }
-        Bitmap bitmap = sGlobals.peekWallpaperBitmap(mContext, false, which, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        Bitmap bitmap = sGlobals.peekWallpaperBitmap(mContext, false, which, cmProxy);
         return bitmap != null && bitmap.getColorSpace() != null
                 && bitmap.getColorSpace() != ColorSpace.get(ColorSpace.Named.SRGB)
-                && mCmProxy.isSupportedColorSpace(bitmap.getColorSpace());
+                && cmProxy.isSupportedColorSpace(bitmap.getColorSpace());
     }
 
     /**
@@ -928,8 +933,8 @@
      * @hide
      */
     public Bitmap getBitmapAsUser(int userId, boolean hardware) {
-        return sGlobals.peekWallpaperBitmap(
-                mContext, true, FLAG_SYSTEM, userId, hardware, mCmProxy);
+        final ColorManagementProxy cmProxy = getColorManagementProxy();
+        return sGlobals.peekWallpaperBitmap(mContext, true, FLAG_SYSTEM, userId, hardware, cmProxy);
     }
 
     /**
@@ -2074,12 +2079,23 @@
     }
 
     /**
-     * A private class to help Globals#getCurrentWallpaperLocked handle color management.
+     * Get the instance of {@link ColorManagementProxy}.
+     *
+     * @return instance of {@link ColorManagementProxy}.
+     * @hide
      */
-    private static class ColorManagementProxy {
+    public ColorManagementProxy getColorManagementProxy() {
+        return mCmProxy;
+    }
+
+    /**
+     * A hidden class to help {@link Globals#getCurrentWallpaperLocked} handle color management.
+     * @hide
+     */
+    public static class ColorManagementProxy {
         private final Set<ColorSpace> mSupportedColorSpaces = new HashSet<>();
 
-        ColorManagementProxy(Context context) {
+        public ColorManagementProxy(@NonNull Context context) {
             // Get a list of supported wide gamut color spaces.
             Display display = context.getDisplay();
             if (display != null) {
@@ -2087,9 +2103,14 @@
             }
         }
 
+        @NonNull
+        public Set<ColorSpace> getSupportedColorSpaces() {
+            return mSupportedColorSpaces;
+        }
+
         boolean isSupportedColorSpace(ColorSpace colorSpace) {
             return colorSpace != null && (colorSpace == ColorSpace.get(ColorSpace.Named.SRGB)
-                    || mSupportedColorSpaces.contains(colorSpace));
+                    || getSupportedColorSpaces().contains(colorSpace));
         }
 
         void doColorManagement(ImageDecoder decoder, ImageDecoder.ImageInfo info) {
diff --git a/core/java/android/app/WindowContext.java b/core/java/android/app/WindowContext.java
index 22cc14b..d279983 100644
--- a/core/java/android/app/WindowContext.java
+++ b/core/java/android/app/WindowContext.java
@@ -32,7 +32,7 @@
  * windows. Its resources and configuration are adjusted to the area of the display that will be
  * used when a new window is added via {@link android.view.WindowManager.addView}.
  *
- * @see Context#createWindowContext(int)
+ * @see Context#createWindowContext(int, Bundle)
  * @hide
  */
 // TODO(b/128338354): Handle config/display changes from server side.
@@ -53,19 +53,19 @@
      * @param type Window type to be used with this context.
      * @hide
      */
-    public WindowContext(Context base, IBinder token, int type) {
+    public WindowContext(Context base, IBinder token, int type, Bundle options) {
         super(null /* base */);
 
         mWms = WindowManagerGlobal.getWindowManagerService();
         if (token != null && !isWindowToken(token)) {
             throw new IllegalArgumentException("Token must be registered to server.");
         }
+        mToken = token != null ? token : new Binder();
 
-        final ContextImpl contextImpl = createBaseWindowContext(base, token);
+        final ContextImpl contextImpl = createBaseWindowContext(base, mToken);
         attachBaseContext(contextImpl);
         contextImpl.setOuterContext(this);
 
-        mToken = token != null ? token : new Binder();
         mDisplayId = getDisplayId();
         mWindowManager = new WindowManagerImpl(this);
         mWindowManager.setDefaultToken(mToken);
@@ -76,7 +76,7 @@
             return;
         }
         try {
-            mWms.addWindowContextToken(mToken, type, mDisplayId, getPackageName());
+            mWms.addWindowTokenWithOptions(mToken, type, mDisplayId, options, getPackageName());
             // TODO(window-context): remove token with a DeathObserver
         }  catch (RemoteException e) {
             mOwnsToken = false;
diff --git a/core/java/android/app/admin/DevicePolicyEventLogger.java b/core/java/android/app/admin/DevicePolicyEventLogger.java
index 4c0e176..bbc0bdf 100644
--- a/core/java/android/app/admin/DevicePolicyEventLogger.java
+++ b/core/java/android/app/admin/DevicePolicyEventLogger.java
@@ -19,10 +19,9 @@
 import android.annotation.Nullable;
 import android.content.ComponentName;
 import android.stats.devicepolicy.nano.StringList;
-import android.util.StatsLog;
 
 import com.android.framework.protobuf.nano.MessageNano;
-import com.android.internal.util.Preconditions;
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.util.Arrays;
 import java.util.Objects;
@@ -197,8 +196,8 @@
      */
     public void write() {
         byte[] bytes = stringArrayValueToBytes(mStringArrayValue);
-        StatsLog.write(StatsLog.DEVICE_POLICY_EVENT, mEventId, mAdminPackageName, mIntValue,
-                mBooleanValue, mTimePeriodMs, bytes);
+        FrameworkStatsLog.write(FrameworkStatsLog.DEVICE_POLICY_EVENT, mEventId, mAdminPackageName,
+                mIntValue, mBooleanValue, mTimePeriodMs, bytes);
     }
 
     /**
diff --git a/core/java/android/app/admin/DevicePolicyKeyguardService.java b/core/java/android/app/admin/DevicePolicyKeyguardService.java
index c2a76c5..2ac5ebf 100644
--- a/core/java/android/app/admin/DevicePolicyKeyguardService.java
+++ b/core/java/android/app/admin/DevicePolicyKeyguardService.java
@@ -22,7 +22,7 @@
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
-import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
 
 /**
  * Client interface for providing the SystemUI with secondary lockscreen information.
@@ -43,14 +43,14 @@
         @Override
         public void onSurfaceReady(@Nullable IBinder hostInputToken, IKeyguardCallback callback) {
             mCallback = callback;
-            SurfaceControl surfaceControl =
+            SurfaceControlViewHost.SurfacePackage surfacePackage =
                     DevicePolicyKeyguardService.this.onSurfaceReady(hostInputToken);
 
             if (mCallback != null) {
                 try {
-                    mCallback.onSurfaceControlCreated(surfaceControl);
+                    mCallback.onRemoteContentReady(surfacePackage);
                 } catch (RemoteException e) {
-                    Log.e(TAG, "Failed to return created SurfaceControl", e);
+                    Log.e(TAG, "Failed to return created SurfacePackage", e);
                 }
             }
         }
@@ -65,11 +65,11 @@
     /**
      * Called by keyguard once the host surface for the secondary lockscreen is ready to display
      * remote content.
-     * @return the {@link SurfaceControl} for the Surface the secondary lockscreen content is
-     *      attached to.
+     * @return the {@link SurfaceControlViewHost.SurfacePackage} for the Surface the
+     *      secondary lockscreen content is attached to.
      */
     @Nullable
-    public SurfaceControl onSurfaceReady(@Nullable IBinder hostInputToken) {
+    public SurfaceControlViewHost.SurfacePackage onSurfaceReady(@Nullable IBinder hostInputToken) {
         return null;
     }
 
diff --git a/core/java/android/app/admin/DevicePolicyManager.java b/core/java/android/app/admin/DevicePolicyManager.java
index d1b5a83..4a5a23a 100644
--- a/core/java/android/app/admin/DevicePolicyManager.java
+++ b/core/java/android/app/admin/DevicePolicyManager.java
@@ -328,7 +328,7 @@
      * modified by the user and the only way of resetting the device is via factory reset.
      *
      * <p>From version {@link android.os.Build.VERSION_CODES#Q}, the admin app can choose
-     * whether to set up a fully managed device or a work profile. For the admin app to support
+     * whether to set up a fully managed device or a managed profile. For the admin app to support
      * this, it must have an activity with intent filter {@link #ACTION_GET_PROVISIONING_MODE} and
      * another one with intent filter {@link #ACTION_ADMIN_POLICY_COMPLIANCE}. For example:
      * <pre>
@@ -1781,12 +1781,13 @@
     /**
      * Grants access to selection of KeyChain certificates on behalf of requesting apps.
      * Once granted the app will start receiving
-     * DelegatedAdminReceiver.onChoosePrivateKeyAlias. The caller (PO/DO) will
+     * {@link DelegatedAdminReceiver#onChoosePrivateKeyAlias}. The caller (PO/DO) will
      * no longer receive {@link DeviceAdminReceiver#onChoosePrivateKeyAlias}.
      * There can be at most one app that has this delegation.
      * If another app already had delegated certificate selection access,
      * it will lose the delegation when a new app is delegated.
-     *
+     * <p> The delegaetd app can also call {@link #grantKeyPairToApp} and
+     * {@link #revokeKeyPairFromApp} to directly grant KeyCain keys to other apps.
      * <p> Can be granted by Device Owner or Profile Owner.
      */
     public static final String DELEGATION_CERT_SELECTION = "delegation-cert-selection";
@@ -2089,6 +2090,13 @@
     public static final int LOCK_TASK_FEATURE_KEYGUARD = 1 << 5;
 
     /**
+     * Enable blocking of non-whitelisted activities from being started into a locked task.
+     *
+     * @see #setLockTaskFeatures(ComponentName, int)
+     */
+    public static final int LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK = 1 << 6;
+
+    /**
      * Flags supplied to {@link #setLockTaskFeatures(ComponentName, int)}.
      *
      * @hide
@@ -2101,7 +2109,8 @@
             LOCK_TASK_FEATURE_HOME,
             LOCK_TASK_FEATURE_OVERVIEW,
             LOCK_TASK_FEATURE_GLOBAL_ACTIONS,
-            LOCK_TASK_FEATURE_KEYGUARD
+            LOCK_TASK_FEATURE_KEYGUARD,
+            LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK
     })
     public @interface LockTaskFeature {}
 
@@ -3721,6 +3730,11 @@
      * requires that you request both {@link DeviceAdminInfo#USES_POLICY_WATCH_LOGIN} and
      * {@link DeviceAdminInfo#USES_POLICY_WIPE_DATA}}.
      * <p>
+     * When this policy is set by a device owner, profile owner of an organization-owned device or
+     * an admin on the primary user, the device will be factory reset after too many incorrect
+     * password attempts. When set by a profile owner or an admin on a secondary user or a managed
+     * profile, only the corresponding user or profile will be wiped.
+     * <p>
      * To implement any other policy (e.g. wiping data for a particular application only, erasing or
      * revoking credentials, or reporting the failure to a server), you should implement
      * {@link DeviceAdminReceiver#onPasswordFailed(Context, android.content.Intent)} instead. Do not
@@ -3789,10 +3803,12 @@
     }
 
     /**
-     * Returns the profile with the smallest maximum failed passwords for wipe,
-     * for the given user. So for primary user, it might return the primary or
-     * a managed profile. For a secondary user, it would be the same as the
-     * user passed in.
+     * Returns the user that will be wiped first when too many failed attempts are made to unlock
+     * user {@code userHandle}. That user is either the same as {@code userHandle} or belongs to the
+     * same profile group. When there is no such policy, returns {@code UserHandle.USER_NULL}.
+     * E.g. managed profile user may be wiped as a result of failed primary profile password
+     * attempts when using unified challenge. Primary user may be wiped as a result of failed
+     * password attempts on the managed profile on an organization-owned device.
      * @hide Used only by Keyguard
      */
     @RequiresFeature(PackageManager.FEATURE_SECURE_LOCK_SCREEN)
@@ -4313,7 +4329,7 @@
      * additionally call this method on the parent instance.
      * Calling this method on the parent {@link DevicePolicyManager} instance would wipe the
      * entire device, while calling it on the current profile instance would relinquish the device
-     * for personal use, removing the work profile and all policies set by the profile owner.
+     * for personal use, removing the managed profile and all policies set by the profile owner.
      *
      * @param flags Bit mask of additional options: currently supported flags are
      *            {@link #WIPE_EXTERNAL_STORAGE}, {@link #WIPE_RESET_PROTECTION_DATA},
@@ -4339,7 +4355,7 @@
      * additionally call this method on the parent instance.
      * Calling this method on the parent {@link DevicePolicyManager} instance would wipe the
      * entire device, while calling it on the current profile instance would relinquish the device
-     * for personal use, removing the work profile and all policies set by the profile owner.
+     * for personal use, removing the managed profile and all policies set by the profile owner.
      *
      * @param flags Bit mask of additional options: currently supported flags are
      *            {@link #WIPE_EXTERNAL_STORAGE}, {@link #WIPE_RESET_PROTECTION_DATA} and
@@ -4702,15 +4718,40 @@
     public static final int KEYGUARD_DISABLE_FEATURES_ALL = 0x7fffffff;
 
     /**
-     * Keyguard features that when set on a managed profile that doesn't have its own challenge will
-     * affect the profile's parent user. These can also be set on the managed profile's parent
+     * Keyguard features that when set on a non-organization-owned managed profile that doesn't
+     * have its own challenge will affect the profile's parent user. These can also be set on the
+     * managed profile's parent {@link DevicePolicyManager} instance to explicitly control the
+     * parent user.
+     *
+     * <p>
+     * Organization-owned managed profile supports disabling additional keyguard features on the
+     * parent user as defined in {@link #ORG_OWNED_PROFILE_KEYGUARD_FEATURES_PARENT_ONLY}.
+     *
+     * @hide
+     */
+    public static final int NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER =
+            DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS
+            | DevicePolicyManager.KEYGUARD_DISABLE_BIOMETRICS;
+
+    /**
+     * Keyguard features that when set by the profile owner of an organization-owned managed
+     * profile will affect the profile's parent user if set on the managed profile's parent
      * {@link DevicePolicyManager} instance.
      *
      * @hide
      */
+    public static final int ORG_OWNED_PROFILE_KEYGUARD_FEATURES_PARENT_ONLY =
+            KEYGUARD_DISABLE_SECURE_CAMERA;
+
+    /**
+     * Keyguard features that when set on a normal or organization-owned managed profile, have
+     * the potential to affect the profile's parent user.
+     *
+     * @hide
+     */
     public static final int PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER =
-            DevicePolicyManager.KEYGUARD_DISABLE_TRUST_AGENTS
-            | DevicePolicyManager.KEYGUARD_DISABLE_BIOMETRICS;
+            DevicePolicyManager.NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER
+                    | DevicePolicyManager.ORG_OWNED_PROFILE_KEYGUARD_FEATURES_PARENT_ONLY;
 
     /**
      * @deprecated This method does not actually modify the storage encryption of the device.
@@ -5844,21 +5885,27 @@
      * a secure video output. See {@link android.view.Display#FLAG_SECURE} for more details about
      * secure surfaces and secure displays.
      * <p>
-     * The calling device admin must be a device or profile owner. If it is not, a security
+     * This method can be called on the {@link DevicePolicyManager} instance, returned by
+     * {@link #getParentProfileInstance(ComponentName)}, where the calling device admin must be
+     * the profile owner of an organization-owned managed profile. If it is not, a security
      * exception will be thrown.
      * <p>
+     * If the caller is device owner or called on the parent instance by a profile owner of an
+     * organization-owned managed profile, then the restriction will be applied to all users.
+     * <p>
      * From version {@link android.os.Build.VERSION_CODES#M} disabling screen capture also blocks
      * assist requests for all activities of the relevant user.
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
      * @param disabled Whether screen capture is disabled or not.
-     * @throws SecurityException if {@code admin} is not a device or profile owner.
+     * @throws SecurityException if {@code admin} is not a device or profile owner or if
+     *                           called on the parent profile and the {@code admin} is not a
+     *                           profile owner of an organization-owned managed profile.
      */
     public void setScreenCaptureDisabled(@NonNull ComponentName admin, boolean disabled) {
-        throwIfParentInstance("setScreenCaptureDisabled");
         if (mService != null) {
             try {
-                mService.setScreenCaptureDisabled(admin, disabled);
+                mService.setScreenCaptureDisabled(admin, disabled, mParentInstance);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -5868,11 +5915,16 @@
     /**
      * Determine whether or not screen capture has been disabled by the calling
      * admin, if specified, or all admins.
-     * @param admin The name of the admin component to check, or {@code null} to check whether any admins
-     * have disabled screen capture.
+     * <p>
+     * This method can be called on the {@link DevicePolicyManager} instance,
+     * returned by {@link #getParentProfileInstance(ComponentName)}, where the caller must be
+     * the profile owner of an organization-owned managed profile (the calling admin must be
+     * specified).
+     *
+     * @param admin The name of the admin component to check, or {@code null} to check whether any
+     *              admins have disabled screen capture.
      */
     public boolean getScreenCaptureDisabled(@Nullable ComponentName admin) {
-        throwIfParentInstance("getScreenCaptureDisabled");
         return getScreenCaptureDisabled(admin, myUserId());
     }
 
@@ -5880,7 +5932,7 @@
     public boolean getScreenCaptureDisabled(@Nullable ComponentName admin, int userHandle) {
         if (mService != null) {
             try {
-                return mService.getScreenCaptureDisabled(admin, userHandle);
+                return mService.getScreenCaptureDisabled(admin, userHandle, mParentInstance);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -6088,11 +6140,20 @@
      * <li>{@link #KEYGUARD_DISABLE_UNREDACTED_NOTIFICATIONS} which affects notifications generated
      * by applications in the managed profile.
      * </ul>
+     * <p>
+     * From version {@link android.os.Build.VERSION_CODES#R} the profile owner of an
+     * organization-owned managed profile can set:
+     * <ul>
+     * <li>{@link #KEYGUARD_DISABLE_SECURE_CAMERA} which affects the parent user when called on the
+     * parent profile.
+     * </ul>
      * {@link #KEYGUARD_DISABLE_TRUST_AGENTS}, {@link #KEYGUARD_DISABLE_FINGERPRINT},
-     * {@link #KEYGUARD_DISABLE_FACE} and {@link #KEYGUARD_DISABLE_IRIS} can also be
-     * set on the {@link DevicePolicyManager} instance returned by
-     * {@link #getParentProfileInstance(ComponentName)} in order to set restrictions on the parent
-     * profile.
+     * {@link #KEYGUARD_DISABLE_FACE}, {@link #KEYGUARD_DISABLE_IRIS} and
+     * {@link #KEYGUARD_DISABLE_SECURE_CAMERA} can also be set on the {@link DevicePolicyManager}
+     * instance returned by {@link #getParentProfileInstance(ComponentName)} in order to set
+     * restrictions on the parent profile. {@link #KEYGUARD_DISABLE_SECURE_CAMERA} can only be set
+     * on the parent profile instance if the calling device admin is the profile owner of an
+     * organization-owned managed profile.
      * <p>
      * Requests to disable other features on a managed profile will be ignored.
      * <p>
@@ -7028,21 +7089,28 @@
     }
 
     /**
-     * Called by a device owner to set the default SMS application.
+     * Must be called by a device owner or a profile owner of an organization-owned managed profile
+     * to set the default SMS application.
      * <p>
-     * The calling device admin must be a device owner. If it is not, a security exception will be
-     * thrown.
+     * This method can be called on the {@link DevicePolicyManager} instance, returned by
+     * {@link #getParentProfileInstance(ComponentName)}, where the caller must be the profile owner
+     * of an organization-owned managed profile and the package must be a pre-installed system
+     * package. If called on the parent instance, then the default SMS application is set on the
+     * personal profile.
      *
-     * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
+     * @param admin       Which {@link DeviceAdminReceiver} this request is associated with.
      * @param packageName The name of the package to set as the default SMS application.
-     * @throws SecurityException if {@code admin} is not a device owner.
+     * @throws SecurityException        if {@code admin} is not a device or profile owner or if
+     *                                  called on the parent profile and the {@code admin} is not a
+     *                                  profile owner of an organization-owned managed profile.
+     * @throws IllegalArgumentException if called on the parent profile and the package
+     *                                  provided is not a pre-installed system package.
      */
     public void setDefaultSmsApplication(@NonNull ComponentName admin,
             @NonNull String packageName) {
-        throwIfParentInstance("setDefaultSmsApplication");
         if (mService != null) {
             try {
-                mService.setDefaultSmsApplication(admin, packageName);
+                mService.setDefaultSmsApplication(admin, packageName, mParentInstance);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -8700,6 +8768,7 @@
     @StringDef({
             Settings.System.SCREEN_BRIGHTNESS_MODE,
             Settings.System.SCREEN_BRIGHTNESS,
+            Settings.System.SCREEN_BRIGHTNESS_FLOAT,
             Settings.System.SCREEN_OFF_TIMEOUT
     })
     @Retention(RetentionPolicy.SOURCE)
@@ -8754,11 +8823,11 @@
      * @throws SecurityException if caller is not a device owner or a profile owner of an
      *                           organization-owned managed profile.
      */
-    public void setLockdownAdminConfiguredNetworks(@NonNull ComponentName admin, boolean lockdown) {
-        throwIfParentInstance("setLockdownAdminConfiguredNetworks");
+    public void setConfiguredNetworksLockdownState(@NonNull ComponentName admin, boolean lockdown) {
+        throwIfParentInstance("setConfiguredNetworksLockdownState");
         if (mService != null) {
             try {
-                mService.setLockdownAdminConfiguredNetworks(admin, lockdown);
+                mService.setConfiguredNetworksLockdownState(admin, lockdown);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -8774,11 +8843,11 @@
      * @throws SecurityException if caller is not a device owner or a profile owner of an
      *                           organization-owned managed profile.
      */
-    public boolean isLockdownAdminConfiguredNetworks(@NonNull ComponentName admin) {
-        throwIfParentInstance("setLockdownAdminConfiguredNetworks");
+    public boolean hasLockdownAdminConfiguredNetworks(@NonNull ComponentName admin) {
+        throwIfParentInstance("hasLockdownAdminConfiguredNetworks");
         if (mService != null) {
             try {
-                return mService.isLockdownAdminConfiguredNetworks(admin);
+                return mService.hasLockdownAdminConfiguredNetworks(admin);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -8928,7 +8997,8 @@
      *
      * <strong>Note: Starting from Android R, apps should no longer call this method with the
      * setting {@link android.provider.Settings.Secure#LOCATION_MODE}, which is deprecated. Instead,
-     * device owners should call {@link #setLocationEnabled(ComponentName, boolean)}.
+     * device owners should call {@link #setLocationEnabled(ComponentName, boolean)}. This will be
+     * enforced for all apps targeting Android R or above.
      * </strong>
      *
      * @param admin Which {@link DeviceAdminReceiver} this request is associated with.
@@ -8938,6 +9008,7 @@
      */
     public void setSecureSetting(@NonNull ComponentName admin, String setting, String value) {
         throwIfParentInstance("setSecureSetting");
+
         if (mService != null) {
             try {
                 mService.setSecureSetting(admin, setting, value);
@@ -9439,16 +9510,6 @@
      * {@link android.os.Build.VERSION_CODES#M} the app-op matching the permission is set to
      * {@link android.app.AppOpsManager#MODE_IGNORED}, but the permission stays granted.
      *
-     * NOTE: Starting from Android R, location-related permissions cannot be granted by the
-     * admin: Calling this method with {@link #PERMISSION_GRANT_STATE_GRANTED} for any of the
-     * following permissions will return false:
-     *
-     * <ul>
-     * <li>{@code ACCESS_FINE_LOCATION}</li>
-     * <li>{@code ACCESS_BACKGROUND_LOCATION}</li>
-     * <li>{@code ACCESS_COARSE_LOCATION}</li>
-     * </ul>
-     *
      * @param admin Which profile or device owner this request is associated with.
      * @param packageName The application to grant or revoke a permission to.
      * @param permission The permission to grant or revoke.
@@ -11577,12 +11638,14 @@
      * #setCrossProfilePackages(ComponentName, Set)}.</li>
      * <li>The default package names set by the OEM that are allowed to request user consent for
      * cross-profile communication without being explicitly enabled by the admin, via
-     * {@link com.android.internal.R.array#cross_profile_apps}</li>
+     * {@link com.android.internal.R.array#cross_profile_apps} and
+     * {@link com.android.internal.R.array#vendor_cross_profile_apps}.</li>
      * </ul>
      *
      * @return the combined set of whitelisted package names set via
-     * {@link #setCrossProfilePackages(ComponentName, Set)} and
-     * {@link com.android.internal.R.array#cross_profile_apps}
+     * {@link #setCrossProfilePackages(ComponentName, Set)},
+     * {@link com.android.internal.R.array#cross_profile_apps},
+     * and {@link com.android.internal.R.array#vendor_cross_profile_apps}.
      *
      * @hide
      */
@@ -11592,7 +11655,7 @@
             permission.INTERACT_ACROSS_PROFILES
     })
     public @NonNull Set<String> getAllCrossProfilePackages() {
-        throwIfParentInstance("getDefaultCrossProfilePackages");
+        throwIfParentInstance("getAllCrossProfilePackages");
         if (mService != null) {
             try {
                 return new ArraySet<>(mService.getAllCrossProfilePackages());
@@ -11604,6 +11667,26 @@
     }
 
     /**
+     * Returns the default package names set by the OEM that are allowed to request user consent for
+     * cross-profile communication without being explicitly enabled by the admin, via
+     * {@link com.android.internal.R.array#cross_profile_apps} and
+     * {@link com.android.internal.R.array#vendor_cross_profile_apps}.
+     *
+     * @hide
+     */
+    public @NonNull Set<String> getDefaultCrossProfilePackages() {
+        throwIfParentInstance("getDefaultCrossProfilePackages");
+        if (mService != null) {
+            try {
+                return new ArraySet<>(mService.getDefaultCrossProfilePackages());
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+        return Collections.emptySet();
+    }
+
+    /**
      * Returns whether the device is being used as a managed kiosk. These requirements are as
      * follows:
      * <ul>
diff --git a/core/java/android/app/admin/DevicePolicyManagerInternal.java b/core/java/android/app/admin/DevicePolicyManagerInternal.java
index e6c89d9..80fa871 100644
--- a/core/java/android/app/admin/DevicePolicyManagerInternal.java
+++ b/core/java/android/app/admin/DevicePolicyManagerInternal.java
@@ -187,4 +187,22 @@
      * @hide
      */
     public abstract List<String> getAllCrossProfilePackages();
+
+    /**
+     * Sends the {@code intent} to the packages with cross profile capabilities.
+     *
+     * <p>This means the application must have the {@code crossProfile} property and the
+     * corresponding permissions, defined by
+     * {@link
+     * android.content.pm.CrossProfileAppsInternal#verifyPackageHasInteractAcrossProfilePermission}.
+     *
+     * <p>Note: This method doesn't modify {@code intent} but copies it before use.
+     *
+     * @param intent Template for the intent sent to the package.
+     * @param parentHandle Handle of the user that will receive the intents.
+     * @param requiresPermission If false, all packages with the {@code crossProfile} property
+     *                           will receive the intent.
+     */
+    public abstract void broadcastIntentToCrossProfileManifestReceiversAsUser(Intent intent,
+            UserHandle parentHandle, boolean requiresPermission);
 }
diff --git a/core/java/android/app/admin/IDevicePolicyManager.aidl b/core/java/android/app/admin/IDevicePolicyManager.aidl
index e3dba31..0aed39c 100644
--- a/core/java/android/app/admin/IDevicePolicyManager.aidl
+++ b/core/java/android/app/admin/IDevicePolicyManager.aidl
@@ -121,8 +121,8 @@
     void setCameraDisabled(in ComponentName who, boolean disabled, boolean parent);
     boolean getCameraDisabled(in ComponentName who, int userHandle, boolean parent);
 
-    void setScreenCaptureDisabled(in ComponentName who, boolean disabled);
-    boolean getScreenCaptureDisabled(in ComponentName who, int userHandle);
+    void setScreenCaptureDisabled(in ComponentName who, boolean disabled, boolean parent);
+    boolean getScreenCaptureDisabled(in ComponentName who, int userHandle, boolean parent);
 
     void setKeyguardDisabledFeatures(in ComponentName who, int which, boolean parent);
     int getKeyguardDisabledFeatures(in ComponentName who, int userHandle, boolean parent);
@@ -202,7 +202,7 @@
     void addPersistentPreferredActivity(in ComponentName admin, in IntentFilter filter, in ComponentName activity);
     void clearPackagePersistentPreferredActivities(in ComponentName admin, String packageName);
 
-    void setDefaultSmsApplication(in ComponentName admin, String packageName);
+    void setDefaultSmsApplication(in ComponentName admin, String packageName, boolean parent);
 
     void setApplicationRestrictions(in ComponentName who, in String callerPackage, in String packageName, in Bundle settings);
     Bundle getApplicationRestrictions(in ComponentName who, in String callerPackage, in String packageName);
@@ -266,8 +266,8 @@
     void setSystemSetting(in ComponentName who, in String setting, in String value);
     void setSecureSetting(in ComponentName who, in String setting, in String value);
 
-    void setLockdownAdminConfiguredNetworks(in ComponentName who, boolean lockdown);
-    boolean isLockdownAdminConfiguredNetworks(in ComponentName who);
+    void setConfiguredNetworksLockdownState(in ComponentName who, boolean lockdown);
+    boolean hasLockdownAdminConfiguredNetworks(in ComponentName who);
 
     void setLocationEnabled(in ComponentName who, boolean locationEnabled);
     void requestSetLocationProviderAllowed(in ComponentName who, in String provider, boolean providerAllowed);
@@ -457,6 +457,7 @@
     List<String> getCrossProfilePackages(in ComponentName admin);
 
     List<String> getAllCrossProfilePackages();
+    List<String> getDefaultCrossProfilePackages();
 
     boolean isManagedKiosk();
     boolean isUnattendedManagedKiosk();
diff --git a/core/java/android/app/admin/IKeyguardCallback.aidl b/core/java/android/app/admin/IKeyguardCallback.aidl
index 81e7d4d..856033d 100644
--- a/core/java/android/app/admin/IKeyguardCallback.aidl
+++ b/core/java/android/app/admin/IKeyguardCallback.aidl
@@ -15,13 +15,13 @@
  */
 package android.app.admin;
 
-import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
 
 /**
  * Internal IPC interface for informing the keyguard of events on the secondary lockscreen.
  * @hide
  */
 interface IKeyguardCallback {
-    oneway void onSurfaceControlCreated(in SurfaceControl remoteSurfaceControl);
+    oneway void onRemoteContentReady(in SurfaceControlViewHost.SurfacePackage surfacePackage);
     oneway void onDismiss();
 }
diff --git a/core/java/android/app/compat/CompatChanges.java b/core/java/android/app/compat/CompatChanges.java
new file mode 100644
index 0000000..e289a27
--- /dev/null
+++ b/core/java/android/app/compat/CompatChanges.java
@@ -0,0 +1,115 @@
+/*
+ * 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 android.app.compat;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.compat.Compatibility;
+import android.content.Context;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.os.UserHandle;
+
+import com.android.internal.compat.IPlatformCompat;
+
+/**
+ * CompatChanges APIs - to be used by platform code only (including mainline
+ * modules).
+ *
+ * @hide
+ */
+@SystemApi
+public final class CompatChanges {
+    private CompatChanges() {}
+
+    /**
+     * Query if a given compatibility change is enabled for the current process. This method is
+     * intended to be called by code running inside a process of the affected app only.
+     *
+     * <p>If this method returns {@code true}, the calling code should implement the compatibility
+     * change, resulting in differing behaviour compared to earlier releases. If this method returns
+     * {@code false}, the calling code should behave as it did in earlier releases.
+     *
+     * @param changeId The ID of the compatibility change in question.
+     * @return {@code true} if the change is enabled for the current app.
+     */
+    public static boolean isChangeEnabled(long changeId) {
+        return Compatibility.isChangeEnabled(changeId);
+    }
+
+    /**
+     * Same as {@code #isChangeEnabled(long)}, except this version should be called on behalf of an
+     * app from a different process that's performing work for the app.
+     *
+     * <p> Note that this involves a binder call to the system server (unless running in the system
+     * server). If the binder call fails, a {@code RuntimeException} will be thrown.
+     *
+     * <p> Caller must have android.permission.READ_COMPAT_CHANGE_CONFIG permission. If it
+     * doesn't, a {@code RuntimeException} will be thrown.
+     *
+     * @param changeId    The ID of the compatibility change in question.
+     * @param packageName The package name of the app in question.
+     * @param user        The user that the operation is done for.
+     * @return {@code true} if the change is enabled for the current app.
+     */
+    public static boolean isChangeEnabled(long changeId, @NonNull String packageName,
+            @NonNull UserHandle user) {
+        IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface(
+                ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return platformCompat.isChangeEnabledByPackageName(changeId, packageName,
+                    user.getIdentifier());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+
+    /**
+     * Same as {@code #isChangeEnabled(long)}, except this version should be called on behalf of an
+     * app from a different process that's performing work for the app.
+     *
+     * <p> Note that this involves a binder call to the system server (unless running in the system
+     * server). If the binder call fails, {@code RuntimeException}  will be thrown.
+     *
+     * <p> Caller must have android.permission.READ_COMPAT_CHANGE_CONFIG permission. If it
+     * doesn't, a {@code RuntimeException} will be thrown.
+     *
+     * <p> Returns {@code true} if there are no installed packages for the required UID, or if the
+     * change is enabled for ALL of the installed packages associated with the provided UID. Please
+     * use a more specific API if you want a different behaviour for multi-package UIDs.
+     *
+     * @param changeId The ID of the compatibility change in question.
+     * @param uid      The UID of the app in question.
+     * @return {@code true} if the change is enabled for the current app.
+     */
+    public static boolean isChangeEnabled(long changeId, int uid) {
+        IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface(
+                ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
+        final long token = Binder.clearCallingIdentity();
+        try {
+            return platformCompat.isChangeEnabledByUid(changeId, uid);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        } finally {
+            Binder.restoreCallingIdentity(token);
+        }
+    }
+}
diff --git a/core/java/android/app/compat/TEST_MAPPING b/core/java/android/app/compat/TEST_MAPPING
new file mode 100644
index 0000000..c047df5
--- /dev/null
+++ b/core/java/android/app/compat/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+    "imports": [
+        {
+            "path": "frameworks/base/services/core/java/com/android/services/compat"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/core/java/android/app/prediction/AppPredictionSessionId.java b/core/java/android/app/prediction/AppPredictionSessionId.java
index e5e06f8..876bafd 100644
--- a/core/java/android/app/prediction/AppPredictionSessionId.java
+++ b/core/java/android/app/prediction/AppPredictionSessionId.java
@@ -22,6 +22,8 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.util.Objects;
+
 /**
  * The id for an app prediction session. See {@link AppPredictor}.
  *
@@ -32,18 +34,28 @@
 public final class AppPredictionSessionId implements Parcelable {
 
     private final String mId;
+    private final int mUserId;
 
     /**
      * Creates a new id for a prediction session.
      *
      * @hide
      */
-    public AppPredictionSessionId(@NonNull String id) {
+    public AppPredictionSessionId(@NonNull final String id, final int userId) {
         mId = id;
+        mUserId = userId;
     }
 
     private AppPredictionSessionId(Parcel p) {
         mId = p.readString();
+        mUserId = p.readInt();
+    }
+
+    /**
+     * @hide
+     */
+    public int getUserId() {
+        return mUserId;
     }
 
     @Override
@@ -51,17 +63,17 @@
         if (!getClass().equals(o != null ? o.getClass() : null)) return false;
 
         AppPredictionSessionId other = (AppPredictionSessionId) o;
-        return mId.equals(other.mId);
+        return mId.equals(other.mId) && mUserId == other.mUserId;
     }
 
     @Override
     public @NonNull String toString() {
-        return mId;
+        return mId + "," + mUserId;
     }
 
     @Override
     public int hashCode() {
-        return mId.hashCode();
+        return Objects.hash(mId, mUserId);
     }
 
     @Override
@@ -72,6 +84,7 @@
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeString(mId);
+        dest.writeInt(mUserId);
     }
 
     public static final @android.annotation.NonNull Parcelable.Creator<AppPredictionSessionId> CREATOR =
diff --git a/core/java/android/app/prediction/AppPredictor.java b/core/java/android/app/prediction/AppPredictor.java
index cd635d6..f0eedf3 100644
--- a/core/java/android/app/prediction/AppPredictor.java
+++ b/core/java/android/app/prediction/AppPredictor.java
@@ -96,7 +96,7 @@
         IBinder b = ServiceManager.getService(Context.APP_PREDICTION_SERVICE);
         mPredictionManager = IPredictionManager.Stub.asInterface(b);
         mSessionId = new AppPredictionSessionId(
-                context.getPackageName() + ":" + UUID.randomUUID().toString());
+                context.getPackageName() + ":" + UUID.randomUUID().toString(), context.getUserId());
         try {
             mPredictionManager.createPredictionSession(predictionContext, mSessionId);
         } catch (RemoteException e) {
diff --git a/core/java/android/app/role/RoleManager.java b/core/java/android/app/role/RoleManager.java
index ea66fd47..db4f1de 100644
--- a/core/java/android/app/role/RoleManager.java
+++ b/core/java/android/app/role/RoleManager.java
@@ -90,6 +90,7 @@
      * The name of the dialer role.
      *
      * @see Intent#ACTION_DIAL
+     * @see android.telecom.InCallService
      */
     public static final String ROLE_DIALER = "android.app.role.DIALER";
 
diff --git a/core/java/android/app/timedetector/ITimeDetectorService.aidl b/core/java/android/app/timedetector/ITimeDetectorService.aidl
index de8f470..5ead0c9 100644
--- a/core/java/android/app/timedetector/ITimeDetectorService.aidl
+++ b/core/java/android/app/timedetector/ITimeDetectorService.aidl
@@ -18,7 +18,7 @@
 
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 
 /**
  * System private API to communicate with time detector service.
@@ -34,7 +34,7 @@
  * {@hide}
  */
 interface ITimeDetectorService {
-  void suggestPhoneTime(in PhoneTimeSuggestion timeSuggestion);
   void suggestManualTime(in ManualTimeSuggestion timeSuggestion);
   void suggestNetworkTime(in NetworkTimeSuggestion timeSuggestion);
+  void suggestTelephonyTime(in TelephonyTimeSuggestion timeSuggestion);
 }
diff --git a/core/java/android/app/timedetector/ManualTimeSuggestion.java b/core/java/android/app/timedetector/ManualTimeSuggestion.java
index 50de7385..da51ce2 100644
--- a/core/java/android/app/timedetector/ManualTimeSuggestion.java
+++ b/core/java/android/app/timedetector/ManualTimeSuggestion.java
@@ -29,10 +29,18 @@
 import java.util.Objects;
 
 /**
- * A time signal from a manual (user provided) source. The value consists of the number of
- * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime
- * clock when that number was established. The elapsed realtime clock is considered accurate but
- * volatile, so time signals must not be persisted across device resets.
+ * A time signal from a manual (user provided) source.
+ *
+ * <p>{@code utcTime} is the suggested time. The {@code utcTime.value} is the number of milliseconds
+ * elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the value of the
+ * elapsed realtime clock when the {@code utcTime.value} was established.
+ * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
+ * suggestions cannot be persisted across device resets.
+ *
+ * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
+ * record why the suggestion exists and how it was entered. This information exists only to aid in
+ * debugging and therefore is used by {@link #toString()}, but it is not for use in detection
+ * logic and is not considered in {@link #hashCode()} or {@link #equals(Object)}.
  *
  * @hide
  */
@@ -49,10 +57,8 @@
                 }
             };
 
-    @NonNull
-    private final TimestampedValue<Long> mUtcTime;
-    @Nullable
-    private ArrayList<String> mDebugInfo;
+    @NonNull private final TimestampedValue<Long> mUtcTime;
+    @Nullable private ArrayList<String> mDebugInfo;
 
     public ManualTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
         mUtcTime = Objects.requireNonNull(utcTime);
diff --git a/core/java/android/app/timedetector/NetworkTimeSuggestion.java b/core/java/android/app/timedetector/NetworkTimeSuggestion.java
index 17e9c5a..89fd6f31 100644
--- a/core/java/android/app/timedetector/NetworkTimeSuggestion.java
+++ b/core/java/android/app/timedetector/NetworkTimeSuggestion.java
@@ -29,10 +29,18 @@
 import java.util.Objects;
 
 /**
- * A time signal from a network time source like NTP. The value consists of the number of
- * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime
- * clock when that number was established. The elapsed realtime clock is considered accurate but
- * volatile, so time signals must not be persisted across device resets.
+ * A time signal from a network time source like NTP.
+ *
+ * <p>{@code utcTime} contains the suggested time. The {@code utcTime.value} is the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the
+ * value of the elapsed realtime clock when the {@code utcTime.value} was established.
+ * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
+ * suggestions cannot be persisted across device resets.
+ *
+ * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
+ * record why the suggestion exists and how it was determined. This information exists only to aid
+ * in debugging and therefore is used by {@link #toString()}, but it is not for use in detection
+ * logic and is not considered in {@link #hashCode()} or {@link #equals(Object)}.
  *
  * @hide
  */
@@ -49,10 +57,8 @@
                 }
             };
 
-    @NonNull
-    private final TimestampedValue<Long> mUtcTime;
-    @Nullable
-    private ArrayList<String> mDebugInfo;
+    @NonNull private final TimestampedValue<Long> mUtcTime;
+    @Nullable private ArrayList<String> mDebugInfo;
 
     public NetworkTimeSuggestion(@NonNull TimestampedValue<Long> utcTime) {
         mUtcTime = Objects.requireNonNull(utcTime);
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.java b/core/java/android/app/timedetector/PhoneTimeSuggestion.java
deleted file mode 100644
index bd649f8..0000000
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- * Copyright (C) 2019 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.timedetector;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.os.Parcel;
-import android.os.Parcelable;
-import android.os.TimestampedValue;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Objects;
-
-/**
- * A time suggestion from an identified telephony source. e.g. from NITZ information from a specific
- * radio.
- *
- * <p>The time value can be {@code null} to indicate that the telephony source has entered an
- * "un-opinionated" state and any previous suggestions from the source are being withdrawn. When not
- * {@code null}, the value consists of the number of milliseconds elapsed since 1/1/1970 00:00:00
- * UTC and the time according to the elapsed realtime clock when that number was established. The
- * elapsed realtime clock is considered accurate but volatile, so time suggestions must not be
- * persisted across device resets.
- *
- * @hide
- */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-public final class PhoneTimeSuggestion implements Parcelable {
-
-    /** @hide */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-    public static final @NonNull Parcelable.Creator<PhoneTimeSuggestion> CREATOR =
-            new Parcelable.Creator<PhoneTimeSuggestion>() {
-                public PhoneTimeSuggestion createFromParcel(Parcel in) {
-                    return PhoneTimeSuggestion.createFromParcel(in);
-                }
-
-                public PhoneTimeSuggestion[] newArray(int size) {
-                    return new PhoneTimeSuggestion[size];
-                }
-            };
-
-    private final int mPhoneId;
-    @Nullable private final TimestampedValue<Long> mUtcTime;
-    @Nullable private ArrayList<String> mDebugInfo;
-
-    private PhoneTimeSuggestion(Builder builder) {
-        mPhoneId = builder.mPhoneId;
-        mUtcTime = builder.mUtcTime;
-        mDebugInfo = builder.mDebugInfo != null ? new ArrayList<>(builder.mDebugInfo) : null;
-    }
-
-    private static PhoneTimeSuggestion createFromParcel(Parcel in) {
-        int phoneId = in.readInt();
-        PhoneTimeSuggestion suggestion = new PhoneTimeSuggestion.Builder(phoneId)
-                .setUtcTime(in.readParcelable(null /* classLoader */))
-                .build();
-        @SuppressWarnings("unchecked")
-        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */);
-        if (debugInfo != null) {
-            suggestion.addDebugInfo(debugInfo);
-        }
-        return suggestion;
-    }
-
-    @Override
-    public int describeContents() {
-        return 0;
-    }
-
-    @Override
-    public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeInt(mPhoneId);
-        dest.writeParcelable(mUtcTime, 0);
-        dest.writeList(mDebugInfo);
-    }
-
-    /**
-     * Returns an identifier for the source of this suggestion. When a device has several "phones",
-     * i.e. sim slots or equivalent, it is used to identify which one.
-     */
-    public int getPhoneId() {
-        return mPhoneId;
-    }
-
-    /**
-     * Returns the suggestion. {@code null} means that the caller is no longer sure what time it
-     * is.
-     */
-    @Nullable
-    public TimestampedValue<Long> getUtcTime() {
-        return mUtcTime;
-    }
-
-    /**
-     * Returns debug metadata for the suggestion. The information is present in {@link #toString()}
-     * but is not considered for {@link #equals(Object)} and {@link #hashCode()}.
-     */
-    @NonNull
-    public List<String> getDebugInfo() {
-        return mDebugInfo == null
-                ? Collections.emptyList() : Collections.unmodifiableList(mDebugInfo);
-    }
-
-    /**
-     * Associates information with the instance that can be useful for debugging / logging. The
-     * information is present in {@link #toString()} but is not considered for
-     * {@link #equals(Object)} and {@link #hashCode()}.
-     */
-    public void addDebugInfo(@NonNull String debugInfo) {
-        if (mDebugInfo == null) {
-            mDebugInfo = new ArrayList<>();
-        }
-        mDebugInfo.add(debugInfo);
-    }
-
-    /**
-     * Associates information with the instance that can be useful for debugging / logging. The
-     * information is present in {@link #toString()} but is not considered for
-     * {@link #equals(Object)} and {@link #hashCode()}.
-     */
-    public void addDebugInfo(@NonNull List<String> debugInfo) {
-        if (mDebugInfo == null) {
-            mDebugInfo = new ArrayList<>(debugInfo.size());
-        }
-        mDebugInfo.addAll(debugInfo);
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) {
-            return true;
-        }
-        if (o == null || getClass() != o.getClass()) {
-            return false;
-        }
-        PhoneTimeSuggestion that = (PhoneTimeSuggestion) o;
-        return mPhoneId == that.mPhoneId
-                && Objects.equals(mUtcTime, that.mUtcTime);
-    }
-
-    @Override
-    public int hashCode() {
-        return Objects.hash(mPhoneId, mUtcTime);
-    }
-
-    @Override
-    public String toString() {
-        return "PhoneTimeSuggestion{"
-                + "mPhoneId='" + mPhoneId + '\''
-                + ", mUtcTime=" + mUtcTime
-                + ", mDebugInfo=" + mDebugInfo
-                + '}';
-    }
-
-    /**
-     * Builds {@link PhoneTimeSuggestion} instances.
-     *
-     * @hide
-     */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-    public static final class Builder {
-        private final int mPhoneId;
-        @Nullable private TimestampedValue<Long> mUtcTime;
-        @Nullable private List<String> mDebugInfo;
-
-        /** Creates a builder with the specified {@code phoneId}. */
-        public Builder(int phoneId) {
-            mPhoneId = phoneId;
-        }
-
-        /** Returns the builder for call chaining. */
-        @NonNull
-        public Builder setUtcTime(@Nullable TimestampedValue<Long> utcTime) {
-            if (utcTime != null) {
-                // utcTime can be null, but the value it holds cannot.
-                Objects.requireNonNull(utcTime.getValue());
-            }
-
-            mUtcTime = utcTime;
-            return this;
-        }
-
-        /** Returns the builder for call chaining. */
-        @NonNull
-        public Builder addDebugInfo(@NonNull String debugInfo) {
-            if (mDebugInfo == null) {
-                mDebugInfo = new ArrayList<>();
-            }
-            mDebugInfo.add(debugInfo);
-            return this;
-        }
-
-        /** Returns the {@link PhoneTimeSuggestion}. */
-        @NonNull
-        public PhoneTimeSuggestion build() {
-            return new PhoneTimeSuggestion(this);
-        }
-    }
-}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/java/android/app/timedetector/TelephonyTimeSuggestion.aidl
similarity index 94%
rename from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
rename to core/java/android/app/timedetector/TelephonyTimeSuggestion.aidl
index f5e2405..d9b0386 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/java/android/app/timedetector/TelephonyTimeSuggestion.aidl
@@ -16,4 +16,4 @@
 
 package android.app.timedetector;
 
-parcelable PhoneTimeSuggestion;
+parcelable TelephonyTimeSuggestion;
diff --git a/core/java/android/app/timedetector/TelephonyTimeSuggestion.java b/core/java/android/app/timedetector/TelephonyTimeSuggestion.java
new file mode 100644
index 0000000..c0e8957
--- /dev/null
+++ b/core/java/android/app/timedetector/TelephonyTimeSuggestion.java
@@ -0,0 +1,238 @@
+/*
+ * Copyright (C) 2019 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.timedetector;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.os.TimestampedValue;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
+import java.util.Objects;
+
+/**
+ * A time suggestion from an identified telephony source. e.g. from NITZ information from a specific
+ * radio.
+ *
+ * <p>{@code slotIndex} identifies the suggestion source. This enables detection logic to identify
+ * suggestions from the same source when there are several in use.
+ *
+ * <p>{@code utcTime}. When not {@code null}, the {@code utcTime.value} is the number of
+ * milliseconds elapsed since 1/1/1970 00:00:00 UTC. The {@code utcTime.referenceTimeMillis} is the
+ * value of the elapsed realtime clock when the {@code utcTime.value} was established.
+ * Note that the elapsed realtime clock is considered accurate but it is volatile, so time
+ * suggestions cannot be persisted across device resets. {@code utcTime} can be {@code null} to
+ * indicate that the telephony source has entered an "un-opinionated" state and any previous
+ * suggestion from the source is being withdrawn.
+ *
+ * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
+ * record why the suggestion exists, e.g. what triggered it to be made and what heuristic was used
+ * to determine the time or its absence. This information exists only to aid in debugging and
+ * therefore is used by {@link #toString()}, but it is not for use in detection logic and is not
+ * considered in {@link #hashCode()} or {@link #equals(Object)}.
+ *
+ * @hide
+ */
+public final class TelephonyTimeSuggestion implements Parcelable {
+
+    /** @hide */
+    public static final @NonNull Parcelable.Creator<TelephonyTimeSuggestion> CREATOR =
+            new Parcelable.Creator<TelephonyTimeSuggestion>() {
+                public TelephonyTimeSuggestion createFromParcel(Parcel in) {
+                    return TelephonyTimeSuggestion.createFromParcel(in);
+                }
+
+                public TelephonyTimeSuggestion[] newArray(int size) {
+                    return new TelephonyTimeSuggestion[size];
+                }
+            };
+
+    private final int mSlotIndex;
+    @Nullable private final TimestampedValue<Long> mUtcTime;
+    @Nullable private ArrayList<String> mDebugInfo;
+
+    private TelephonyTimeSuggestion(Builder builder) {
+        mSlotIndex = builder.mSlotIndex;
+        mUtcTime = builder.mUtcTime;
+        mDebugInfo = builder.mDebugInfo != null ? new ArrayList<>(builder.mDebugInfo) : null;
+    }
+
+    private static TelephonyTimeSuggestion createFromParcel(Parcel in) {
+        int slotIndex = in.readInt();
+        TelephonyTimeSuggestion suggestion = new TelephonyTimeSuggestion.Builder(slotIndex)
+                .setUtcTime(in.readParcelable(null /* classLoader */))
+                .build();
+        @SuppressWarnings("unchecked")
+        ArrayList<String> debugInfo = (ArrayList<String>) in.readArrayList(null /* classLoader */);
+        if (debugInfo != null) {
+            suggestion.addDebugInfo(debugInfo);
+        }
+        return suggestion;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mSlotIndex);
+        dest.writeParcelable(mUtcTime, 0);
+        dest.writeList(mDebugInfo);
+    }
+
+    /**
+     * Returns an identifier for the source of this suggestion.
+     *
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code slotIndex}.
+     */
+    public int getSlotIndex() {
+        return mSlotIndex;
+    }
+
+    /**
+     * Returns the suggested time or {@code null} if there isn't one.
+     *
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code utcTime}.
+     */
+    @Nullable
+    public TimestampedValue<Long> getUtcTime() {
+        return mUtcTime;
+    }
+
+    /**
+     * Returns debug metadata for the suggestion.
+     *
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code debugInfo}.
+     */
+    @NonNull
+    public List<String> getDebugInfo() {
+        return mDebugInfo == null
+                ? Collections.emptyList() : Collections.unmodifiableList(mDebugInfo);
+    }
+
+    /**
+     * Associates information with the instance that can be useful for debugging / logging.
+     *
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code debugInfo}.
+     */
+    public void addDebugInfo(@NonNull String debugInfo) {
+        if (mDebugInfo == null) {
+            mDebugInfo = new ArrayList<>();
+        }
+        mDebugInfo.add(debugInfo);
+    }
+
+    /**
+     * Associates information with the instance that can be useful for debugging / logging.
+     *
+     * <p>See {@link TelephonyTimeSuggestion} for more information about {@code debugInfo}.
+     */
+    public void addDebugInfo(@NonNull List<String> debugInfo) {
+        if (mDebugInfo == null) {
+            mDebugInfo = new ArrayList<>(debugInfo.size());
+        }
+        mDebugInfo.addAll(debugInfo);
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
+            return false;
+        }
+        TelephonyTimeSuggestion that = (TelephonyTimeSuggestion) o;
+        return mSlotIndex == that.mSlotIndex
+                && Objects.equals(mUtcTime, that.mUtcTime);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mSlotIndex, mUtcTime);
+    }
+
+    @Override
+    public String toString() {
+        return "TelephonyTimeSuggestion{"
+                + "mSlotIndex='" + mSlotIndex + '\''
+                + ", mUtcTime=" + mUtcTime
+                + ", mDebugInfo=" + mDebugInfo
+                + '}';
+    }
+
+    /**
+     * Builds {@link TelephonyTimeSuggestion} instances.
+     *
+     * @hide
+     */
+    public static final class Builder {
+        private final int mSlotIndex;
+        @Nullable private TimestampedValue<Long> mUtcTime;
+        @Nullable private List<String> mDebugInfo;
+
+        /**
+         * Creates a builder with the specified {@code slotIndex}.
+         *
+         * <p>See {@link TelephonyTimeSuggestion} for more information about {@code slotIndex}.
+         */
+        public Builder(int slotIndex) {
+            mSlotIndex = slotIndex;
+        }
+
+        /**
+         * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeSuggestion} for more information about {@code utcTime}.
+         */
+        @NonNull
+        public Builder setUtcTime(@Nullable TimestampedValue<Long> utcTime) {
+            if (utcTime != null) {
+                // utcTime can be null, but the value it holds cannot.
+                Objects.requireNonNull(utcTime.getValue());
+            }
+
+            mUtcTime = utcTime;
+            return this;
+        }
+
+        /**
+         * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeSuggestion} for more information about {@code debugInfo}.
+         */
+        @NonNull
+        public Builder addDebugInfo(@NonNull String debugInfo) {
+            if (mDebugInfo == null) {
+                mDebugInfo = new ArrayList<>();
+            }
+            mDebugInfo.add(debugInfo);
+            return this;
+        }
+
+        /** Returns the {@link TelephonyTimeSuggestion}. */
+        @NonNull
+        public TelephonyTimeSuggestion build() {
+            return new TelephonyTimeSuggestion(this);
+        }
+    }
+}
diff --git a/core/java/android/app/timedetector/TimeDetector.java b/core/java/android/app/timedetector/TimeDetector.java
index 2412fb3..84ad495 100644
--- a/core/java/android/app/timedetector/TimeDetector.java
+++ b/core/java/android/app/timedetector/TimeDetector.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
-import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.content.Context;
 import android.os.SystemClock;
@@ -29,7 +28,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 @SystemService(Context.TIME_DETECTOR_SERVICE)
 public interface TimeDetector {
 
@@ -47,12 +45,12 @@
     }
 
     /**
-     * Suggests the current phone-signal derived time to the detector. The detector may ignore the
-     * signal if better signals are available such as those that come from more reliable sources or
-     * were determined more recently.
+     * Suggests a telephony-signal derived time to the detector. The detector may ignore the signal
+     * if better signals are available such as those that come from more reliable sources or were
+     * determined more recently.
      */
-    @RequiresPermission(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE)
-    void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion);
+    @RequiresPermission(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE)
+    void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion);
 
     /**
      * Suggests the user's manually entered current time to the detector.
diff --git a/core/java/android/app/timedetector/TimeDetectorImpl.java b/core/java/android/app/timedetector/TimeDetectorImpl.java
index 1683817..c1d6667 100644
--- a/core/java/android/app/timedetector/TimeDetectorImpl.java
+++ b/core/java/android/app/timedetector/TimeDetectorImpl.java
@@ -40,12 +40,12 @@
     }
 
     @Override
-    public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) {
+    public void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion) {
         if (DEBUG) {
-            Log.d(TAG, "suggestPhoneTime called: " + timeSuggestion);
+            Log.d(TAG, "suggestTelephonyTime called: " + timeSuggestion);
         }
         try {
-            mITimeDetectorService.suggestPhoneTime(timeSuggestion);
+            mITimeDetectorService.suggestTelephonyTime(timeSuggestion);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
index df643831..b06f4b8 100644
--- a/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
+++ b/core/java/android/app/timezonedetector/ITimeZoneDetectorService.aidl
@@ -17,7 +17,7 @@
 package android.app.timezonedetector;
 
 import android.app.timezonedetector.ManualTimeZoneSuggestion;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
 
 /**
  * System private API to communicate with time zone detector service.
@@ -34,5 +34,5 @@
  */
 interface ITimeZoneDetectorService {
   void suggestManualTimeZone(in ManualTimeZoneSuggestion timeZoneSuggestion);
-  void suggestPhoneTimeZone(in PhoneTimeZoneSuggestion timeZoneSuggestion);
+  void suggestTelephonyTimeZone(in TelephonyTimeZoneSuggestion timeZoneSuggestion);
 }
diff --git a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java
index a6b953b..3a9adc7 100644
--- a/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java
+++ b/core/java/android/app/timezonedetector/ManualTimeZoneSuggestion.java
@@ -28,10 +28,14 @@
 import java.util.Objects;
 
 /**
- * A time signal from a manual (user provided) source. The value consists of the number of
- * milliseconds elapsed since 1/1/1970 00:00:00 UTC and the time according to the elapsed realtime
- * clock when that number was established. The elapsed realtime clock is considered accurate but
- * volatile, so time signals must not be persisted across device resets.
+ * A time signal from a manual (user provided) source.
+ *
+ * <p>{@code zoneId} contains the suggested time zone ID, e.g. "America/Los_Angeles".
+ *
+ * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
+ * record why the suggestion exists and how it was entered. This information exists only to aid in
+ * debugging and therefore is used by {@link #toString()}, but it is not for use in detection logic
+ * and is not considered in {@link #hashCode()} or {@link #equals(Object)}.
  *
  * @hide
  */
@@ -48,10 +52,8 @@
                 }
             };
 
-    @NonNull
-    private final String mZoneId;
-    @Nullable
-    private ArrayList<String> mDebugInfo;
+    @NonNull private final String mZoneId;
+    @Nullable private ArrayList<String> mDebugInfo;
 
     public ManualTimeZoneSuggestion(@NonNull String zoneId) {
         mZoneId = Objects.requireNonNull(zoneId);
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl b/core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.aidl
similarity index 94%
rename from core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
rename to core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.aidl
index 3ad903b..b57ad20 100644
--- a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
+++ b/core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.aidl
@@ -16,4 +16,4 @@
 
 package android.app.timezonedetector;
 
-parcelable PhoneTimeZoneSuggestion;
+parcelable TelephonyTimeZoneSuggestion;
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java b/core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.java
similarity index 66%
rename from core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java
rename to core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.java
index d71ffcb..150c01d 100644
--- a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.java
+++ b/core/java/android/app/timezonedetector/TelephonyTimeZoneSuggestion.java
@@ -19,7 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -34,10 +33,14 @@
  * A time zone suggestion from an identified telephony source, e.g. from MCC and NITZ information
  * associated with a specific radio.
  *
- * <p>The time zone ID can be {@code null} to indicate that the telephony source has entered an
- * "un-opinionated" state and any previous suggestions from that source are being withdrawn.
- * When not {@code null}, the value consists of a suggested time zone ID and metadata that can be
- * used to judge quality / certainty of the suggestion.
+ * <p>{@code slotIndex} identifies the suggestion source. This enables detection logic to identify
+ * suggestions from the same source when there are several in use.
+ *
+ * <p>{@code zoneId}. When not {@code null}, {@code zoneId} contains the suggested time zone ID,
+ * e.g. "America/Los_Angeles". Suggestion metadata like {@code matchType} and {@code quality} can be
+ * used to judge quality / certainty of the suggestion. {@code zoneId} can be {@code null} to
+ * indicate that the telephony source has entered an "un-opinionated" state and any previous
+ * suggestion from the same source is being withdrawn.
  *
  * <p>{@code matchType} must be set to {@link #MATCH_TYPE_NA} when {@code zoneId} is {@code null},
  * and one of the other {@code MATCH_TYPE_} values when it is not {@code null}.
@@ -45,33 +48,37 @@
  * <p>{@code quality} must be set to {@link #QUALITY_NA} when {@code zoneId} is {@code null},
  * and one of the other {@code QUALITY_} values when it is not {@code null}.
  *
+ * <p>{@code debugInfo} contains debugging metadata associated with the suggestion. This is used to
+ * record why the suggestion exists, e.g. what triggered it to be made and what heuristic was used
+ * to determine the time zone or its absence. This information exists only to aid in debugging and
+ * therefore is used by {@link #toString()}, but it is not for use in detection logic and is not
+ * considered in {@link #hashCode()} or {@link #equals(Object)}.
+ *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-public final class PhoneTimeZoneSuggestion implements Parcelable {
+public final class TelephonyTimeZoneSuggestion implements Parcelable {
 
     /** @hide */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     @NonNull
-    public static final Creator<PhoneTimeZoneSuggestion> CREATOR =
-            new Creator<PhoneTimeZoneSuggestion>() {
-                public PhoneTimeZoneSuggestion createFromParcel(Parcel in) {
-                    return PhoneTimeZoneSuggestion.createFromParcel(in);
+    public static final Creator<TelephonyTimeZoneSuggestion> CREATOR =
+            new Creator<TelephonyTimeZoneSuggestion>() {
+                public TelephonyTimeZoneSuggestion createFromParcel(Parcel in) {
+                    return TelephonyTimeZoneSuggestion.createFromParcel(in);
                 }
 
-                public PhoneTimeZoneSuggestion[] newArray(int size) {
-                    return new PhoneTimeZoneSuggestion[size];
+                public TelephonyTimeZoneSuggestion[] newArray(int size) {
+                    return new TelephonyTimeZoneSuggestion[size];
                 }
             };
 
     /**
      * Creates an empty time zone suggestion, i.e. one that will cancel previous suggestions with
-     * the same {@code phoneId}.
+     * the same {@code slotIndex}.
      */
     @NonNull
-    public static PhoneTimeZoneSuggestion createEmptySuggestion(
-            int phoneId, @NonNull String debugInfo) {
-        return new Builder(phoneId).addDebugInfo(debugInfo).build();
+    public static TelephonyTimeZoneSuggestion createEmptySuggestion(
+            int slotIndex, @NonNull String debugInfo) {
+        return new Builder(slotIndex).addDebugInfo(debugInfo).build();
     }
 
     /** @hide */
@@ -131,41 +138,14 @@
      */
     public static final int QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS = 3;
 
-    /**
-     * The ID of the phone this suggestion is associated with. For multiple-sim devices this
-     * helps to establish source so filtering / stickiness can be implemented.
-     */
-    private final int mPhoneId;
+    private final int mSlotIndex;
+    @Nullable private final String mZoneId;
+    @MatchType private final int mMatchType;
+    @Quality private final int mQuality;
+    @Nullable private List<String> mDebugInfo;
 
-    /**
-     * The suggestion. {@code null} means there is no current suggestion and any previous suggestion
-     * should be forgotten.
-     */
-    @Nullable
-    private final String mZoneId;
-
-    /**
-     * The type of "match" used to establish the time zone.
-     */
-    @MatchType
-    private final int mMatchType;
-
-    /**
-     * A measure of the quality of the time zone suggestion, i.e. how confident one could be in
-     * it.
-     */
-    @Quality
-    private final int mQuality;
-
-    /**
-     * Free-form debug information about how the suggestion was derived. Used for debug only,
-     * intentionally not used in equals(), etc.
-     */
-    @Nullable
-    private List<String> mDebugInfo;
-
-    private PhoneTimeZoneSuggestion(Builder builder) {
-        mPhoneId = builder.mPhoneId;
+    private TelephonyTimeZoneSuggestion(Builder builder) {
+        mSlotIndex = builder.mSlotIndex;
         mZoneId = builder.mZoneId;
         mMatchType = builder.mMatchType;
         mQuality = builder.mQuality;
@@ -173,15 +153,16 @@
     }
 
     @SuppressWarnings("unchecked")
-    private static PhoneTimeZoneSuggestion createFromParcel(Parcel in) {
+    private static TelephonyTimeZoneSuggestion createFromParcel(Parcel in) {
         // Use the Builder so we get validation during build().
-        int phoneId = in.readInt();
-        PhoneTimeZoneSuggestion suggestion = new Builder(phoneId)
+        int slotIndex = in.readInt();
+        TelephonyTimeZoneSuggestion suggestion = new Builder(slotIndex)
                 .setZoneId(in.readString())
                 .setMatchType(in.readInt())
                 .setQuality(in.readInt())
                 .build();
-        List<String> debugInfo = in.readArrayList(PhoneTimeZoneSuggestion.class.getClassLoader());
+        List<String> debugInfo =
+                in.readArrayList(TelephonyTimeZoneSuggestion.class.getClassLoader());
         if (debugInfo != null) {
             suggestion.addDebugInfo(debugInfo);
         }
@@ -190,7 +171,7 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeInt(mPhoneId);
+        dest.writeInt(mSlotIndex);
         dest.writeString(mZoneId);
         dest.writeInt(mMatchType);
         dest.writeInt(mQuality);
@@ -203,17 +184,19 @@
     }
 
     /**
-     * Returns an identifier for the source of this suggestion. When a device has several "phones",
-     * i.e. sim slots or equivalent, it is used to identify which one.
+     * Returns an identifier for the source of this suggestion.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code slotIndex}.
      */
-    public int getPhoneId() {
-        return mPhoneId;
+    public int getSlotIndex() {
+        return mSlotIndex;
     }
 
     /**
      * Returns the suggested time zone Olson ID, e.g. "America/Los_Angeles". {@code null} means that
-     * the caller is no longer sure what the current time zone is. See
-     * {@link PhoneTimeZoneSuggestion} for the associated {@code matchType} / {@code quality} rules.
+     * the caller is no longer sure what the current time zone is.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code zoneId}.
      */
     @Nullable
     public String getZoneId() {
@@ -222,8 +205,9 @@
 
     /**
      * Returns information about how the suggestion was determined which could be used to rank
-     * suggestions when several are available from different sources. See
-     * {@link PhoneTimeZoneSuggestion} for the associated rules.
+     * suggestions when several are available from different sources.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code matchType}.
      */
     @MatchType
     public int getMatchType() {
@@ -231,8 +215,9 @@
     }
 
     /**
-     * Returns information about the likelihood of the suggested zone being correct.  See
-     * {@link PhoneTimeZoneSuggestion} for the associated rules.
+     * Returns information about the likelihood of the suggested zone being correct.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code quality}.
      */
     @Quality
     public int getQuality() {
@@ -240,8 +225,9 @@
     }
 
     /**
-     * Returns debug metadata for the suggestion. The information is present in {@link #toString()}
-     * but is not considered for {@link #equals(Object)} and {@link #hashCode()}.
+     * Returns debug metadata for the suggestion.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code debugInfo}.
      */
     @NonNull
     public List<String> getDebugInfo() {
@@ -250,9 +236,9 @@
     }
 
     /**
-     * Associates information with the instance that can be useful for debugging / logging. The
-     * information is present in {@link #toString()} but is not considered for
-     * {@link #equals(Object)} and {@link #hashCode()}.
+     * Associates information with the instance that can be useful for debugging / logging.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code debugInfo}.
      */
     public void addDebugInfo(@NonNull String debugInfo) {
         if (mDebugInfo == null) {
@@ -262,9 +248,9 @@
     }
 
     /**
-     * Associates information with the instance that can be useful for debugging / logging. The
-     * information is present in {@link #toString()} but is not considered for
-     * {@link #equals(Object)} and {@link #hashCode()}.
+     * Associates information with the instance that can be useful for debugging / logging.
+     *
+     * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code debugInfo}.
      */
     public void addDebugInfo(@NonNull List<String> debugInfo) {
         if (mDebugInfo == null) {
@@ -281,8 +267,8 @@
         if (o == null || getClass() != o.getClass()) {
             return false;
         }
-        PhoneTimeZoneSuggestion that = (PhoneTimeZoneSuggestion) o;
-        return mPhoneId == that.mPhoneId
+        TelephonyTimeZoneSuggestion that = (TelephonyTimeZoneSuggestion) o;
+        return mSlotIndex == that.mSlotIndex
                 && mMatchType == that.mMatchType
                 && mQuality == that.mQuality
                 && Objects.equals(mZoneId, that.mZoneId);
@@ -290,13 +276,13 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(mPhoneId, mZoneId, mMatchType, mQuality);
+        return Objects.hash(mSlotIndex, mZoneId, mMatchType, mQuality);
     }
 
     @Override
     public String toString() {
-        return "PhoneTimeZoneSuggestion{"
-                + "mPhoneId=" + mPhoneId
+        return "TelephonyTimeZoneSuggestion{"
+                + "mSlotIndex=" + mSlotIndex
                 + ", mZoneId='" + mZoneId + '\''
                 + ", mMatchType=" + mMatchType
                 + ", mQuality=" + mQuality
@@ -305,24 +291,30 @@
     }
 
     /**
-     * Builds {@link PhoneTimeZoneSuggestion} instances.
+     * Builds {@link TelephonyTimeZoneSuggestion} instances.
      *
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static final class Builder {
-        private final int mPhoneId;
+        private final int mSlotIndex;
         @Nullable private String mZoneId;
         @MatchType private int mMatchType;
         @Quality private int mQuality;
         @Nullable private List<String> mDebugInfo;
 
-        public Builder(int phoneId) {
-            mPhoneId = phoneId;
+        /**
+         * Creates a builder with the specified {@code slotIndex}.
+         *
+         * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code slotIndex}.
+         */
+        public Builder(int slotIndex) {
+            mSlotIndex = slotIndex;
         }
 
         /**
          * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code zoneId}.
          */
         @NonNull
         public Builder setZoneId(@Nullable String zoneId) {
@@ -330,21 +322,33 @@
             return this;
         }
 
-        /** Returns the builder for call chaining. */
+        /**
+         * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code matchType}.
+         */
         @NonNull
         public Builder setMatchType(@MatchType int matchType) {
             mMatchType = matchType;
             return this;
         }
 
-        /** Returns the builder for call chaining. */
+        /**
+         * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code quality}.
+         */
         @NonNull
         public Builder setQuality(@Quality int quality) {
             mQuality = quality;
             return this;
         }
 
-        /** Returns the builder for call chaining. */
+        /**
+         * Returns the builder for call chaining.
+         *
+         * <p>See {@link TelephonyTimeZoneSuggestion} for more information about {@code debugInfo}.
+         */
         @NonNull
         public Builder addDebugInfo(@NonNull String debugInfo) {
             if (mDebugInfo == null) {
@@ -381,11 +385,11 @@
             }
         }
 
-        /** Returns the {@link PhoneTimeZoneSuggestion}. */
+        /** Returns the {@link TelephonyTimeZoneSuggestion}. */
         @NonNull
-        public PhoneTimeZoneSuggestion build() {
+        public TelephonyTimeZoneSuggestion build() {
             validate();
-            return new PhoneTimeZoneSuggestion(this);
+            return new TelephonyTimeZoneSuggestion(this);
         }
     }
 }
diff --git a/core/java/android/app/timezonedetector/TimeZoneDetector.java b/core/java/android/app/timezonedetector/TimeZoneDetector.java
index b4f6087..20761ad 100644
--- a/core/java/android/app/timezonedetector/TimeZoneDetector.java
+++ b/core/java/android/app/timezonedetector/TimeZoneDetector.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
-import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.content.Context;
 
@@ -27,7 +26,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 @SystemService(Context.TIME_ZONE_DETECTOR_SERVICE)
 public interface TimeZoneDetector {
 
@@ -49,9 +47,8 @@
      *
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
-    @RequiresPermission(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE)
-    void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion);
+    @RequiresPermission(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE)
+    void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion);
 
     /**
      * Suggests the current time zone, determined for the user's manually information, to the
diff --git a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
index 27b8374..0ada885 100644
--- a/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
+++ b/core/java/android/app/timezonedetector/TimeZoneDetectorImpl.java
@@ -40,12 +40,12 @@
     }
 
     @Override
-    public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) {
+    public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) {
         if (DEBUG) {
-            Log.d(TAG, "suggestPhoneTimeZone called: " + timeZoneSuggestion);
+            Log.d(TAG, "suggestTelephonyTimeZone called: " + timeZoneSuggestion);
         }
         try {
-            mITimeZoneDetectorService.suggestPhoneTimeZone(timeZoneSuggestion);
+            mITimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/app/usage/UsageStatsManager.java b/core/java/android/app/usage/UsageStatsManager.java
index 5668944..2c701b4 100644
--- a/core/java/android/app/usage/UsageStatsManager.java
+++ b/core/java/android/app/usage/UsageStatsManager.java
@@ -599,7 +599,8 @@
     /**
      * Returns whether the specified app is currently considered inactive. This will be true if the
      * app hasn't been used directly or indirectly for a period of time defined by the system. This
-     * could be of the order of several hours or days.
+     * could be of the order of several hours or days. Apps are not considered inactive when the
+     * device is charging.
      * @param packageName The package name of the app to query
      * @return whether the app is currently considered inactive
      */
diff --git a/core/java/android/bluetooth/BluetoothA2dpSink.java b/core/java/android/bluetooth/BluetoothA2dpSink.java
index ee2cc6d..ab49230 100755
--- a/core/java/android/bluetooth/BluetoothA2dpSink.java
+++ b/core/java/android/bluetooth/BluetoothA2dpSink.java
@@ -66,7 +66,7 @@
      */
     @SystemApi
     @SuppressLint("ActionValue")
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public static final String ACTION_CONNECTION_STATE_CHANGED =
             "android.bluetooth.a2dp-sink.profile.action.CONNECTION_STATE_CHANGED";
 
@@ -296,7 +296,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean setConnectionPolicy(@Nullable BluetoothDevice device,
             @ConnectionPolicy int connectionPolicy) {
         if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
@@ -345,7 +345,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public @ConnectionPolicy int getConnectionPolicy(@Nullable BluetoothDevice device) {
         if (VDBG) log("getConnectionPolicy(" + device + ")");
         final IBluetoothA2dpSink service = getService();
@@ -370,7 +370,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean isAudioPlaying(@Nullable BluetoothDevice device) {
         final IBluetoothA2dpSink service = getService();
         if (service != null && isEnabled() && isValidDevice(device)) {
diff --git a/core/java/android/bluetooth/BluetoothAdapter.java b/core/java/android/bluetooth/BluetoothAdapter.java
index e24b040..66bfcbd 100644
--- a/core/java/android/bluetooth/BluetoothAdapter.java
+++ b/core/java/android/bluetooth/BluetoothAdapter.java
@@ -26,6 +26,7 @@
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
 import android.app.ActivityThread;
+import android.app.PropertyInvalidatedCache;
 import android.bluetooth.BluetoothProfile.ConnectionPolicy;
 import android.bluetooth.le.BluetoothLeAdvertiser;
 import android.bluetooth.le.BluetoothLeScanner;
@@ -994,6 +995,37 @@
         return false;
     }
 
+    private static final String BLUETOOTH_GET_STATE_CACHE_PROPERTY = "cache_key.bluetooth.get_state";
+
+    private final PropertyInvalidatedCache<Void, Integer> mBluetoothGetStateCache =
+            new PropertyInvalidatedCache<Void, Integer>(
+                8, BLUETOOTH_GET_STATE_CACHE_PROPERTY) {
+                @Override
+                protected Integer recompute(Void query) {
+                    try {
+                        mServiceLock.readLock().lock();
+                        if (mService != null) {
+                            return mService.getState();
+                        }
+                    } catch (RemoteException e) {
+                        Log.e(TAG, "", e);
+                    } finally {
+                        mServiceLock.readLock().unlock();
+                    }
+                    return BluetoothAdapter.STATE_OFF;
+                }
+            };
+
+    /** @hide */
+    public void disableBluetoothGetStateCache() {
+        mBluetoothGetStateCache.disableLocal();
+    }
+
+    /** @hide */
+    public static void invalidateBluetoothGetStateCache() {
+        PropertyInvalidatedCache.invalidateCache(BLUETOOTH_GET_STATE_CACHE_PROPERTY);
+    }
+
     /**
      * Get the current state of the local Bluetooth adapter.
      * <p>Possible return values are
@@ -1007,18 +1039,7 @@
     @RequiresPermission(Manifest.permission.BLUETOOTH)
     @AdapterState
     public int getState() {
-        int state = BluetoothAdapter.STATE_OFF;
-
-        try {
-            mServiceLock.readLock().lock();
-            if (mService != null) {
-                state = mService.getState();
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "", e);
-        } finally {
-            mServiceLock.readLock().unlock();
-        }
+        int state = mBluetoothGetStateCache.query(null);
 
         // Consider all internal states as OFF
         if (state == BluetoothAdapter.STATE_BLE_ON || state == BluetoothAdapter.STATE_BLE_TURNING_ON
@@ -1056,18 +1077,7 @@
     @UnsupportedAppUsage(publicAlternatives = "Use {@link #getState()} instead to determine "
             + "whether you can use BLE & BT classic.")
     public int getLeState() {
-        int state = BluetoothAdapter.STATE_OFF;
-
-        try {
-            mServiceLock.readLock().lock();
-            if (mService != null) {
-                state = mService.getState();
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "", e);
-        } finally {
-            mServiceLock.readLock().unlock();
-        }
+        int state = mBluetoothGetStateCache.query(null);
 
         if (VDBG) {
             Log.d(TAG, "getLeState() returning " + BluetoothAdapter.nameForState(state));
@@ -1485,9 +1495,8 @@
      * <p>The Bluetooth scan mode determines if the local adapter is
      * connectable and/or discoverable from remote Bluetooth devices.
      * <p>For privacy reasons, discoverable mode is automatically turned off
-     * after <code>duration</code> seconds. For example, 120 seconds should be
-     * enough for a remote device to initiate and complete its discovery
-     * process.
+     * after <code>durationMillis</code> milliseconds. For example, 120000 milliseconds should be
+     * enough for a remote device to initiate and complete its discovery process.
      * <p>Valid scan mode values are:
      * {@link #SCAN_MODE_NONE},
      * {@link #SCAN_MODE_CONNECTABLE},
@@ -1502,24 +1511,29 @@
      * </code>instead.
      *
      * @param mode valid scan mode
-     * @param duration time in seconds to apply scan mode, only used for {@link
+     * @param durationMillis time in milliseconds to apply scan mode, only used for {@link
      * #SCAN_MODE_CONNECTABLE_DISCOVERABLE}
      * @return true if the scan mode was set, false otherwise
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
-    public boolean setScanMode(@ScanMode int mode, int duration) {
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean setScanMode(@ScanMode int mode, long durationMillis) {
         if (getState() != STATE_ON) {
             return false;
         }
         try {
             mServiceLock.readLock().lock();
             if (mService != null) {
-                return mService.setScanMode(mode, duration);
+                int durationSeconds = Math.toIntExact(durationMillis / 1000);
+                return mService.setScanMode(mode, durationSeconds);
             }
         } catch (RemoteException e) {
             Log.e(TAG, "", e);
+        } catch (ArithmeticException ex) {
+            Log.e(TAG, "setScanMode: Duration in seconds outside of the bounds of an int");
+            throw new IllegalArgumentException("Duration not in bounds. In seconds, the "
+                    + "durationMillis must be in the range of an int");
         } finally {
             mServiceLock.readLock().unlock();
         }
@@ -1552,13 +1566,22 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean setScanMode(@ScanMode int mode) {
         if (getState() != STATE_ON) {
             return false;
         }
-        /* getDiscoverableTimeout() to use the latest from NV than use 0 */
-        return setScanMode(mode, getDiscoverableTimeout());
+        try {
+            mServiceLock.readLock().lock();
+            if (mService != null) {
+                return mService.setScanMode(mode, getDiscoverableTimeout());
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "", e);
+        } finally {
+            mServiceLock.readLock().unlock();
+        }
+        return false;
     }
 
     /** @hide */
@@ -1766,6 +1789,45 @@
     }
 
     /**
+     * Removes the active device for the grouping of @ActiveDeviceUse specified
+     *
+     * @param profiles represents the purpose for which we are setting this as the active device.
+     *                 Possible values are:
+     *                 {@link BluetoothAdapter#ACTIVE_DEVICE_AUDIO},
+     *                 {@link BluetoothAdapter#ACTIVE_DEVICE_PHONE_CALL},
+     *                 {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
+     * @return false on immediate error, true otherwise
+     * @throws IllegalArgumentException if device is null or profiles is not one of
+     * {@link ActiveDeviceUse}
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean removeActiveDevice(@ActiveDeviceUse int profiles) {
+        if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
+                && profiles != ACTIVE_DEVICE_ALL) {
+            Log.e(TAG, "Invalid profiles param value in removeActiveDevice");
+            throw new IllegalArgumentException("Profiles must be one of "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_AUDIO, "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_PHONE_CALL, or "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_ALL");
+        }
+        try {
+            mServiceLock.readLock().lock();
+            if (mService != null) {
+                return mService.removeActiveDevice(profiles);
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "", e);
+        } finally {
+            mServiceLock.readLock().unlock();
+        }
+
+        return false;
+    }
+
+    /**
+     * Sets device as the active devices for the profiles passed into the function
      *
      * @param device is the remote bluetooth device
      * @param profiles represents the purpose for which we are setting this as the active device.
@@ -1774,18 +1836,26 @@
      *                 {@link BluetoothAdapter#ACTIVE_DEVICE_PHONE_CALL},
      *                 {@link BluetoothAdapter#ACTIVE_DEVICE_ALL}
      * @return false on immediate error, true otherwise
+     * @throws IllegalArgumentException if device is null or profiles is not one of
+     * {@link ActiveDeviceUse}
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
-    public boolean setActiveDevice(@Nullable BluetoothDevice device,
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public boolean setActiveDevice(@NonNull BluetoothDevice device,
             @ActiveDeviceUse int profiles) {
+        if (device == null) {
+            Log.e(TAG, "setActiveDevice: Null device passed as parameter");
+            throw new IllegalArgumentException("device cannot be null");
+        }
         if (profiles != ACTIVE_DEVICE_AUDIO && profiles != ACTIVE_DEVICE_PHONE_CALL
                 && profiles != ACTIVE_DEVICE_ALL) {
             Log.e(TAG, "Invalid profiles param value in setActiveDevice");
-            return false;
+            throw new IllegalArgumentException("Profiles must be one of "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_AUDIO, "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_PHONE_CALL, or "
+                    + "BluetoothAdapter.ACTIVE_DEVICE_ALL");
         }
-
         try {
             mServiceLock.readLock().lock();
             if (mService != null) {
@@ -1801,15 +1871,19 @@
     }
 
     /**
-     * Connects all enabled and supported bluetooth profiles between the local and remote device
+     * Connects all enabled and supported bluetooth profiles between the local and remote device.
+     * Connection is asynchronous and you should listen to each profile's broadcast intent
+     * ACTION_CONNECTION_STATE_CHANGED to verify whether connection was successful. For example,
+     * to verify a2dp is connected, you would listen for
+     * {@link BluetoothA2dp#ACTION_CONNECTION_STATE_CHANGED}
      *
      * @param device is the remote device with which to connect these profiles
-     * @return true if all profiles successfully connected, false if an error occurred
+     * @return true if message sent to try to connect all profiles, false if an error occurred
      *
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean connectAllEnabledProfiles(@NonNull BluetoothDevice device) {
         try {
             mServiceLock.readLock().lock();
@@ -1826,15 +1900,19 @@
     }
 
     /**
-     * Disconnects all enabled and supported bluetooth profiles between the local and remote device
+     * Disconnects all enabled and supported bluetooth profiles between the local and remote device.
+     * Disconnection is asynchronous and you should listen to each profile's broadcast intent
+     * ACTION_CONNECTION_STATE_CHANGED to verify whether disconnection was successful. For example,
+     * to verify a2dp is disconnected, you would listen for
+     * {@link BluetoothA2dp#ACTION_CONNECTION_STATE_CHANGED}
      *
      * @param device is the remote device with which to disconnect these profiles
-     * @return true if all profiles successfully disconnected, false if an error occurred
+     * @return true if message sent to try to disconnect all profiles, false if an error occurred
      *
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean disconnectAllEnabledProfiles(@NonNull BluetoothDevice device) {
         try {
             mServiceLock.readLock().lock();
@@ -1892,6 +1970,38 @@
         }
     }
 
+    private static final String BLUETOOTH_FILTERING_CACHE_PROPERTY =
+            "cache_key.bluetooth.is_offloaded_filtering_supported";
+    private final PropertyInvalidatedCache<Void, Boolean> mBluetoothFilteringCache =
+            new PropertyInvalidatedCache<Void, Boolean>(
+                8, BLUETOOTH_FILTERING_CACHE_PROPERTY) {
+                @Override
+                protected Boolean recompute(Void query) {
+                    try {
+                        mServiceLock.readLock().lock();
+                        if (mService != null) {
+                            return mService.isOffloadedFilteringSupported();
+                        }
+                    } catch (RemoteException e) {
+                        Log.e(TAG, "failed to get isOffloadedFilteringSupported, error: ", e);
+                    } finally {
+                        mServiceLock.readLock().unlock();
+                    }
+                    return false;
+
+                }
+            };
+
+    /** @hide */
+    public void disableIsOffloadedFilteringSupportedCache() {
+        mBluetoothFilteringCache.disableLocal();
+    }
+
+    /** @hide */
+    public static void invalidateIsOffloadedFilteringSupportedCache() {
+        PropertyInvalidatedCache.invalidateCache(BLUETOOTH_FILTERING_CACHE_PROPERTY);
+    }
+
     /**
      * Return true if offloaded filters are supported
      *
@@ -1901,17 +2011,7 @@
         if (!getLeAccess()) {
             return false;
         }
-        try {
-            mServiceLock.readLock().lock();
-            if (mService != null) {
-                return mService.isOffloadedFilteringSupported();
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "failed to get isOffloadedFilteringSupported, error: ", e);
-        } finally {
-            mServiceLock.readLock().unlock();
-        }
-        return false;
+        return mBluetoothFilteringCache.query(null);
     }
 
     /**
@@ -2162,6 +2262,33 @@
     }
 
     /**
+     * Fetches a list of the most recently connected bluetooth devices ordered by how recently they
+     * were connected with most recently first and least recently last
+     *
+     * @return {@link List} of bonded {@link BluetoothDevice} ordered by how recently they were
+     * connected
+     *
+     * @hide
+     */
+    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    public @NonNull List<BluetoothDevice> getMostRecentlyConnectedDevices() {
+        if (getState() != STATE_ON) {
+            return new ArrayList<>();
+        }
+        try {
+            mServiceLock.readLock().lock();
+            if (mService != null) {
+                return mService.getMostRecentlyConnectedDevices();
+            }
+        } catch (RemoteException e) {
+            Log.e(TAG, "", e);
+        } finally {
+            mServiceLock.readLock().unlock();
+        }
+        return new ArrayList<>();
+    }
+
+    /**
      * Return the set of {@link BluetoothDevice} objects that are bonded
      * (paired) to the local adapter.
      * <p>If Bluetooth state is not {@link #STATE_ON}, this API
@@ -2256,6 +2383,43 @@
         return BluetoothAdapter.STATE_DISCONNECTED;
     }
 
+    private static final String BLUETOOTH_PROFILE_CACHE_PROPERTY =
+            "cache_key.bluetooth.get_profile_connection_state";
+    private final PropertyInvalidatedCache<Integer, Integer>
+            mGetProfileConnectionStateCache =
+            new PropertyInvalidatedCache<Integer, Integer>(
+                8, BLUETOOTH_PROFILE_CACHE_PROPERTY) {
+                @Override
+                protected Integer recompute(Integer query) {
+                    try {
+                        mServiceLock.readLock().lock();
+                        if (mService != null) {
+                            return mService.getProfileConnectionState(query);
+                        }
+                    } catch (RemoteException e) {
+                        Log.e(TAG, "getProfileConnectionState:", e);
+                    } finally {
+                        mServiceLock.readLock().unlock();
+                    }
+                    return BluetoothProfile.STATE_DISCONNECTED;
+                }
+                @Override
+                public String queryToString(Integer query) {
+                    return String.format("getProfileConnectionState(profile=\"%d\")",
+                                         query);
+                }
+            };
+
+    /** @hide */
+    public void disableGetProfileConnectionStateCache() {
+        mGetProfileConnectionStateCache.disableLocal();
+    }
+
+    /** @hide */
+    public static void invalidateGetProfileConnectionStateCache() {
+        PropertyInvalidatedCache.invalidateCache(BLUETOOTH_PROFILE_CACHE_PROPERTY);
+    }
+
     /**
      * Get the current connection state of a profile.
      * This function can be used to check whether the local Bluetooth adapter
@@ -2273,17 +2437,7 @@
         if (getState() != STATE_ON) {
             return BluetoothProfile.STATE_DISCONNECTED;
         }
-        try {
-            mServiceLock.readLock().lock();
-            if (mService != null) {
-                return mService.getProfileConnectionState(profile);
-            }
-        } catch (RemoteException e) {
-            Log.e(TAG, "getProfileConnectionState:", e);
-        } finally {
-            mServiceLock.readLock().unlock();
-        }
-        return BluetoothProfile.STATE_DISCONNECTED;
+        return mGetProfileConnectionStateCache.query(new Integer(profile));
     }
 
     /**
diff --git a/core/java/android/bluetooth/BluetoothDevice.java b/core/java/android/bluetooth/BluetoothDevice.java
index 12dc814c..5b60b85 100644
--- a/core/java/android/bluetooth/BluetoothDevice.java
+++ b/core/java/android/bluetooth/BluetoothDevice.java
@@ -23,6 +23,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -179,9 +180,10 @@
      * <p>Always contains the extra field {@link #EXTRA_DEVICE}.
      * <p>Requires {@link android.Manifest.permission#BLUETOOTH} to receive.
      */
+    @SuppressLint("ActionValue")
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_ALIAS_CHANGED =
-            "android.bluetooth.action.ALIAS_CHANGED";
+            "android.bluetooth.device.action.ALIAS_CHANGED";
 
     /**
      * Broadcast Action: Indicates a change in the bond state of a remote
@@ -1091,7 +1093,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean setAlias(@NonNull String alias) {
         final IBluetooth service = sService;
         if (service == null) {
diff --git a/core/java/android/bluetooth/BluetoothHidDevice.java b/core/java/android/bluetooth/BluetoothHidDevice.java
index a923be6..b5959c0 100644
--- a/core/java/android/bluetooth/BluetoothHidDevice.java
+++ b/core/java/android/bluetooth/BluetoothHidDevice.java
@@ -706,7 +706,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
             @ConnectionPolicy int connectionPolicy) {
         log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
diff --git a/core/java/android/bluetooth/BluetoothPbap.java b/core/java/android/bluetooth/BluetoothPbap.java
index e07ca52..1f89ddf 100644
--- a/core/java/android/bluetooth/BluetoothPbap.java
+++ b/core/java/android/bluetooth/BluetoothPbap.java
@@ -38,9 +38,6 @@
 import java.util.List;
 
 /**
- * The Android Bluetooth API is not finalized, and *will* change. Use at your
- * own risk.
- *
  * Public API for controlling the Bluetooth Pbap Service. This includes
  * Bluetooth Phone book Access profile.
  * BluetoothPbap is a proxy object for controlling the Bluetooth Pbap
@@ -56,6 +53,11 @@
  * notification when it is bound, this is especially important if you wish to
  * immediately call methods on BluetoothPbap after construction.
  *
+ * To get an instance of the BluetoothPbap class, you can call
+ * {@link BluetoothAdapter#getProfileProxy(Context, ServiceListener, int)} with the final param
+ * being {@link BluetoothProfile#PBAP}. The ServiceListener should be able to get the instance of
+ * BluetoothPbap in {@link android.bluetooth.BluetoothProfile.ServiceListener#onServiceConnected}.
+ *
  * Android only supports one connected Bluetooth Pce at a time.
  *
  * @hide
@@ -87,6 +89,7 @@
      */
     @SuppressLint("ActionValue")
     @SystemApi
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     @SdkConstant(SdkConstant.SdkConstantType.BROADCAST_INTENT_ACTION)
     public static final String ACTION_CONNECTION_STATE_CHANGED =
             "android.bluetooth.pbap.profile.action.CONNECTION_STATE_CHANGED";
@@ -235,7 +238,8 @@
      */
     @SystemApi
     @Override
-    public int getConnectionState(@Nullable BluetoothDevice device) {
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
+    public @BtProfileState int getConnectionState(@Nullable BluetoothDevice device) {
         log("getConnectionState: device=" + device);
         try {
             final IBluetoothPbap service = mService;
@@ -287,7 +291,7 @@
      * @hide
      */
     @SystemApi
-    @RequiresPermission(Manifest.permission.BLUETOOTH_ADMIN)
+    @RequiresPermission(Manifest.permission.BLUETOOTH_PRIVILEGED)
     public boolean setConnectionPolicy(@NonNull BluetoothDevice device,
             @ConnectionPolicy int connectionPolicy) {
         if (DBG) log("setConnectionPolicy(" + device + ", " + connectionPolicy + ")");
diff --git a/core/java/android/content/Context.java b/core/java/android/content/Context.java
index a0d5c10..49f62f4 100644
--- a/core/java/android/content/Context.java
+++ b/core/java/android/content/Context.java
@@ -3457,6 +3457,7 @@
             CONSUMER_IR_SERVICE,
             //@hide: TRUST_SERVICE,
             TV_INPUT_SERVICE,
+            //@hide: TV_TUNER_RESOURCE_MGR_SERVICE,
             //@hide: NETWORK_SCORE_SERVICE,
             USAGE_STATS_SERVICE,
             MEDIA_SESSION_SERVICE,
@@ -4757,6 +4758,17 @@
     public static final String TV_INPUT_SERVICE = "tv_input";
 
     /**
+     * Use with {@link #getSystemService(String)} to retrieve a
+     * {@link android.media.tv.TunerResourceManager} for interacting with TV
+     * tuner resources on the device.
+     *
+     * @see #getSystemService(String)
+     * @see android.media.tv.TunerResourceManager
+     * @hide
+     */
+    public static final String TV_TUNER_RESOURCE_MGR_SERVICE = "tv_tuner_resource_mgr";
+
+    /**
      * {@link android.net.NetworkScoreManager} for managing network scoring.
      * @see #getSystemService(String)
      * @see android.net.NetworkScoreManager
@@ -5064,11 +5076,7 @@
      *
      * @see #getSystemService(String)
      * @see android.app.blob.BlobStoreManager
-     *
-     * TODO: make this public once BlobStoreManager is ready.
-     * @hide
      */
-    @TestApi
     public static final String BLOB_STORE_SERVICE = "blob_store";
 
     /**
@@ -5103,6 +5111,7 @@
      * @hide
      */
     @SystemApi
+    @TestApi
     public static final String APP_INTEGRITY_SERVICE = "app_integrity";
 
     /**
@@ -5732,14 +5741,13 @@
      * shared, however common state (ClassLoader, other Resources for the
      * same configuration) may be so the Context itself can be fairly lightweight.
      *
-     * The returned display Context provides a {@link WindowManager}
-     * (see {@link #getSystemService(String)}) that is configured to show windows
-     * on the given display.  The WindowManager's {@link WindowManager#getDefaultDisplay}
-     * method can be used to retrieve the Display from the returned Context.
+     * To obtain an instance of a {@link WindowManager} (see {@link #getSystemService(String)}) that
+     * is configured to show windows on the given display call
+     * {@link #createWindowContext(int, Bundle)} on the returned display Context or use an
+     * {@link android.app.Activity}.
      *
-     * @param display A {@link Display} object specifying the display
-     * for whose metrics the Context's resources should be tailored and upon which
-     * new windows should be shown.
+     * @param display A {@link Display} object specifying the display for whose metrics the
+     * Context's resources should be tailored.
      *
      * @return A {@link Context} for the display.
      */
@@ -5767,7 +5775,7 @@
      * final DisplayManager dm = anyContext.getSystemService(DisplayManager.class);
      * final Display primaryDisplay = dm.getDisplay(DEFAULT_DISPLAY);
      * final Context windowContext = anyContext.createDisplayContext(primaryDisplay)
-     *         .createWindowContext(TYPE_APPLICATION_OVERLAY);
+     *         .createWindowContext(TYPE_APPLICATION_OVERLAY, null);
      * final View overlayView = Inflater.from(windowContext).inflate(someLayoutXml, null);
      *
      * // WindowManager.LayoutParams initialization
@@ -5787,6 +5795,7 @@
      * </p>
      *
      * @param type Window type in {@link WindowManager.LayoutParams}
+     * @param options Bundle used to pass window-related options.
      * @return A {@link Context} that can be used to create windows.
      * @throws UnsupportedOperationException if this is called on a non-UI context, such as
      *         {@link android.app.Application Application} or {@link android.app.Service Service}.
@@ -5798,7 +5807,7 @@
      * @see #WALLPAPER_SERVICE
      * @throws IllegalArgumentException if token is invalid
      */
-    public @NonNull Context createWindowContext(int type)  {
+    public @NonNull Context createWindowContext(int type, @Nullable Bundle options)  {
         throw new RuntimeException("Not implemented. Must override in a subclass.");
     }
 
diff --git a/core/java/android/content/ContextWrapper.java b/core/java/android/content/ContextWrapper.java
index b2b7988..f6515e8 100644
--- a/core/java/android/content/ContextWrapper.java
+++ b/core/java/android/content/ContextWrapper.java
@@ -978,8 +978,8 @@
 
     @Override
     @NonNull
-    public Context createWindowContext(int type) {
-        return mBase.createWindowContext(type);
+    public Context createWindowContext(int type, @Nullable Bundle options) {
+        return mBase.createWindowContext(type, options);
     }
 
     @Override
diff --git a/core/java/android/content/Intent.java b/core/java/android/content/Intent.java
index acffec9..0f88c90 100644
--- a/core/java/android/content/Intent.java
+++ b/core/java/android/content/Intent.java
@@ -4284,7 +4284,17 @@
     public static final String ACTION_SERVICE_STATE = "android.intent.action.SERVICE_STATE";
 
     /**
-     * Used for looking up a Data Loader Service provider.
+     * Used by {@link services.core.java.com.android.server.pm.DataLoaderManagerService}
+     * for querying Data Loader Service providers. Data loader service providers register this
+     * intent filter in their manifests, so that they can be looked up and bound to by
+     * {@code DataLoaderManagerService}.
+     *
+     * <p class="note">This is a protected intent that can only be sent by the system.
+     *
+     * Data loader service providers must be privileged apps.
+     * See {@link com.android.server.pm.PackageManagerShellCommandDataLoader} as an example of such
+     * data loader service provider.
+     *
      * @hide
      */
     @SystemApi
@@ -4962,11 +4972,14 @@
      * <pre>
      * &lt;accessibility-shortcut-target
      *     android:description="@string/shortcut_target_description"
-     *     android:summary="@string/shortcut_target_summary" /&gt;
+     *     android:summary="@string/shortcut_target_summary"
+     *     android:animatedImageDrawable="@drawable/shortcut_target_animated_image"
+     *     android:htmlDescription="@string/shortcut_target_html_description" /&gt;
      * </pre>
      * <p>
      * Both description and summary are necessary. The system will ignore the accessibility
-     * shortcut target if they are missing.
+     * shortcut target if they are missing. The animated image and html description are supported
+     * to help users understand how to use the shortcut target.
      * </p>
      */
     @SdkConstant(SdkConstantType.INTENT_CATEGORY)
diff --git a/core/java/android/content/integrity/AppInstallMetadata.java b/core/java/android/content/integrity/AppInstallMetadata.java
index 351edc9..4be7e6d 100644
--- a/core/java/android/content/integrity/AppInstallMetadata.java
+++ b/core/java/android/content/integrity/AppInstallMetadata.java
@@ -18,6 +18,9 @@
 
 import android.annotation.NonNull;
 
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 
 /**
@@ -33,20 +36,22 @@
 public final class AppInstallMetadata {
     private final String mPackageName;
     // Raw string encoding for the SHA-256 hash of the certificate of the app.
-    private final String mAppCertificate;
+    private final List<String> mAppCertificates;
     private final String mInstallerName;
     // Raw string encoding for the SHA-256 hash of the certificate of the installer.
-    private final String mInstallerCertificate;
+    private final List<String> mInstallerCertificates;
     private final long mVersionCode;
     private final boolean mIsPreInstalled;
+    private final Map<String, String> mAllowedInstallersAndCertificates;
 
     private AppInstallMetadata(Builder builder) {
         this.mPackageName = builder.mPackageName;
-        this.mAppCertificate = builder.mAppCertificate;
+        this.mAppCertificates = builder.mAppCertificates;
         this.mInstallerName = builder.mInstallerName;
-        this.mInstallerCertificate = builder.mInstallerCertificate;
+        this.mInstallerCertificates = builder.mInstallerCertificates;
         this.mVersionCode = builder.mVersionCode;
         this.mIsPreInstalled = builder.mIsPreInstalled;
+        this.mAllowedInstallersAndCertificates = builder.mAllowedInstallersAndCertificates;
     }
 
     @NonNull
@@ -55,8 +60,8 @@
     }
 
     @NonNull
-    public String getAppCertificate() {
-        return mAppCertificate;
+    public List<String> getAppCertificates() {
+        return mAppCertificates;
     }
 
     @NonNull
@@ -65,8 +70,8 @@
     }
 
     @NonNull
-    public String getInstallerCertificate() {
-        return mInstallerCertificate;
+    public List<String> getInstallerCertificates() {
+        return mInstallerCertificates;
     }
 
     /** @see AppInstallMetadata.Builder#setVersionCode(long) */
@@ -79,15 +84,22 @@
         return mIsPreInstalled;
     }
 
+    /**
+     * Get the allowed installers and their corresponding cert.
+     */
+    public Map<String, String> getAllowedInstallersAndCertificates() {
+        return mAllowedInstallersAndCertificates;
+    }
+
     @Override
     public String toString() {
         return String.format(
-                "AppInstallMetadata { PackageName = %s, AppCert = %s, InstallerName = %s,"
-                    + " InstallerCert = %s, VersionCode = %d, PreInstalled = %b }",
+                "AppInstallMetadata { PackageName = %s, AppCerts = %s, InstallerName = %s,"
+                    + " InstallerCerts = %s, VersionCode = %d, PreInstalled = %b }",
                 mPackageName,
-                mAppCertificate,
+                mAppCertificates,
                 mInstallerName == null ? "null" : mInstallerName,
-                mInstallerCertificate == null ? "null" : mInstallerCertificate,
+                mInstallerCertificates == null ? "null" : mInstallerCertificates,
                 mVersionCode,
                 mIsPreInstalled);
     }
@@ -95,11 +107,28 @@
     /** Builder class for constructing {@link AppInstallMetadata} objects. */
     public static final class Builder {
         private String mPackageName;
-        private String mAppCertificate;
+        private List<String> mAppCertificates;
         private String mInstallerName;
-        private String mInstallerCertificate;
+        private List<String> mInstallerCertificates;
         private long mVersionCode;
         private boolean mIsPreInstalled;
+        private Map<String, String> mAllowedInstallersAndCertificates;
+
+        public Builder() {
+            mAllowedInstallersAndCertificates = new HashMap<>();
+        }
+
+        /**
+         * Add allowed installers and cert.
+         *
+         * @see AppInstallMetadata#getAllowedInstallersAndCertificates()
+         */
+        @NonNull
+        public Builder setAllowedInstallersAndCert(
+                @NonNull Map<String, String> allowedInstallersAndCertificates) {
+            this.mAllowedInstallersAndCertificates = allowedInstallersAndCertificates;
+            return this;
+        }
 
         /**
          * Set package name of the app to be installed.
@@ -118,11 +147,11 @@
          * <p>It is represented as the raw string encoding for the SHA-256 hash of the certificate
          * of the app.
          *
-         * @see AppInstallMetadata#getAppCertificate()
+         * @see AppInstallMetadata#getAppCertificates()
          */
         @NonNull
-        public Builder setAppCertificate(@NonNull String appCertificate) {
-            this.mAppCertificate = Objects.requireNonNull(appCertificate);
+        public Builder setAppCertificates(@NonNull List<String> appCertificates) {
+            this.mAppCertificates = Objects.requireNonNull(appCertificates);
             return this;
         }
 
@@ -143,11 +172,11 @@
          * <p>It is represented as the raw string encoding for the SHA-256 hash of the certificate
          * of the installer.
          *
-         * @see AppInstallMetadata#getInstallerCertificate()
+         * @see AppInstallMetadata#getInstallerCertificates()
          */
         @NonNull
-        public Builder setInstallerCertificate(@NonNull String installerCertificate) {
-            this.mInstallerCertificate = Objects.requireNonNull(installerCertificate);
+        public Builder setInstallerCertificates(@NonNull List<String> installerCertificates) {
+            this.mInstallerCertificates = Objects.requireNonNull(installerCertificates);
             return this;
         }
 
@@ -181,7 +210,7 @@
         @NonNull
         public AppInstallMetadata build() {
             Objects.requireNonNull(mPackageName);
-            Objects.requireNonNull(mAppCertificate);
+            Objects.requireNonNull(mAppCertificates);
             return new AppInstallMetadata(this);
         }
     }
diff --git a/core/java/android/content/integrity/AppIntegrityManager.java b/core/java/android/content/integrity/AppIntegrityManager.java
index e53ef66..9f95d4d 100644
--- a/core/java/android/content/integrity/AppIntegrityManager.java
+++ b/core/java/android/content/integrity/AppIntegrityManager.java
@@ -19,6 +19,7 @@
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.TestApi;
 import android.content.Context;
 import android.content.IntentSender;
 import android.content.pm.ParceledListSlice;
@@ -33,6 +34,7 @@
  *
  * @hide
  */
+@TestApi
 @SystemApi
 @SystemService(Context.APP_INTEGRITY_SERVICE)
 public class AppIntegrityManager {
@@ -100,4 +102,23 @@
             throw e.rethrowAsRuntimeException();
         }
     }
+
+    /**
+     * Get current RuleSet on device.
+     *
+     * <p>Warning: this method is only used for tests.
+     *
+     * @hide
+     */
+    @TestApi
+    @NonNull
+    public RuleSet getCurrentRuleSet() {
+        try {
+            ParceledListSlice<Rule> rules = mManager.getCurrentRules();
+            String version = mManager.getCurrentRuleSetVersion();
+            return new RuleSet.Builder().setVersion(version).addRules(rules.getList()).build();
+        } catch (RemoteException e) {
+            throw e.rethrowAsRuntimeException();
+        }
+    }
 }
diff --git a/core/java/android/content/integrity/AtomicFormula.java b/core/java/android/content/integrity/AtomicFormula.java
index 76007e6..d911eab 100644
--- a/core/java/android/content/integrity/AtomicFormula.java
+++ b/core/java/android/content/integrity/AtomicFormula.java
@@ -30,6 +30,8 @@
 import java.nio.charset.StandardCharsets;
 import java.security.MessageDigest;
 import java.security.NoSuchAlgorithmException;
+import java.util.Collections;
+import java.util.List;
 import java.util.Objects;
 
 /**
@@ -53,14 +55,12 @@
                     PRE_INSTALLED,
             })
     @Retention(RetentionPolicy.SOURCE)
-    public @interface Key {
-    }
+    public @interface Key {}
 
     /** @hide */
     @IntDef(value = {EQ, GT, GTE})
     @Retention(RetentionPolicy.SOURCE)
-    public @interface Operator {
-    }
+    public @interface Operator {}
 
     /**
      * Package name of the app.
@@ -332,9 +332,12 @@
          * Constructs a new {@link StringAtomicFormula} together with handling the necessary
          * hashing for the given key.
          *
-         * <p> The value will be hashed with SHA256 and the hex digest will be computed; for
-         * all cases except when the key is PACKAGE_NAME or INSTALLER_NAME and the value
-         * is less than 33 characters.
+         * <p> The value will be automatically hashed with SHA256 and the hex digest will be
+         * computed when the key is PACKAGE_NAME or INSTALLER_NAME and the value is more than 32
+         * characters.
+         *
+         * <p> The APP_CERTIFICATES and INSTALLER_CERTIFICATES are always delivered in hashed
+         * form. So the isHashedValue is set to true by default.
          *
          * @throws IllegalArgumentException if {@code key} cannot be used with string value.
          */
@@ -348,7 +351,11 @@
                     String.format(
                             "Key %s cannot be used with StringAtomicFormula", keyToString(key)));
             mValue = hashValue(key, value);
-            mIsHashedValue = !mValue.equals(value);
+            mIsHashedValue =
+                    key == APP_CERTIFICATE
+                            || key == INSTALLER_CERTIFICATE
+                            ? true
+                            : !mValue.equals(value);
         }
 
         StringAtomicFormula(Parcel in) {
@@ -381,7 +388,7 @@
             if (mValue == null || mIsHashedValue == null) {
                 return false;
             }
-            return getStringMetadataValue(appInstallMetadata, getKey()).equals(mValue);
+            return getMetadataValue(appInstallMetadata, getKey()).contains(mValue);
         }
 
         @Override
@@ -442,17 +449,17 @@
             return mIsHashedValue;
         }
 
-        private static String getStringMetadataValue(
+        private static List<String> getMetadataValue(
                 AppInstallMetadata appInstallMetadata, int key) {
             switch (key) {
                 case AtomicFormula.PACKAGE_NAME:
-                    return appInstallMetadata.getPackageName();
+                    return Collections.singletonList(appInstallMetadata.getPackageName());
                 case AtomicFormula.APP_CERTIFICATE:
-                    return appInstallMetadata.getAppCertificate();
+                    return appInstallMetadata.getAppCertificates();
                 case AtomicFormula.INSTALLER_CERTIFICATE:
-                    return appInstallMetadata.getInstallerCertificate();
+                    return appInstallMetadata.getInstallerCertificates();
                 case AtomicFormula.INSTALLER_NAME:
-                    return appInstallMetadata.getInstallerName();
+                    return Collections.singletonList(appInstallMetadata.getInstallerName());
                 default:
                     throw new IllegalStateException(
                             "Unexpected key in StringAtomicFormula: " + key);
@@ -460,14 +467,14 @@
         }
 
         private static String hashValue(@Key int key, String value) {
-            // Hash the string value unless it is a PACKAGE_NAME or INSTALLER_NAME and the value is
-            // less than 33 characters.
-            if (value.length() <= 32) {
+            // Hash the string value if it is a PACKAGE_NAME or INSTALLER_NAME and the value is
+            // greater than 32 characters.
+            if (value.length() > 32) {
                 if (key == PACKAGE_NAME || key == INSTALLER_NAME) {
-                    return value;
+                    return hash(value);
                 }
             }
-            return hash(value);
+            return value;
         }
 
         private static String hash(String value) {
diff --git a/core/java/android/content/integrity/IAppIntegrityManager.aidl b/core/java/android/content/integrity/IAppIntegrityManager.aidl
index 6b73fd7..4714ad7 100644
--- a/core/java/android/content/integrity/IAppIntegrityManager.aidl
+++ b/core/java/android/content/integrity/IAppIntegrityManager.aidl
@@ -25,4 +25,5 @@
     void updateRuleSet(String version, in ParceledListSlice<Rule> rules, in IntentSender statusReceiver);
     String getCurrentRuleSetVersion();
     String getCurrentRuleSetProvider();
+    ParceledListSlice<Rule> getCurrentRules();
 }
diff --git a/core/java/android/content/integrity/InstallerAllowedByManifestFormula.java b/core/java/android/content/integrity/InstallerAllowedByManifestFormula.java
new file mode 100644
index 0000000..9d37299
--- /dev/null
+++ b/core/java/android/content/integrity/InstallerAllowedByManifestFormula.java
@@ -0,0 +1,109 @@
+/*
+ * 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 android.content.integrity;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Map;
+
+/**
+ * An atomic formula that evaluates to true if the installer of the current install is specified in
+ * the "allowed installer" field in the android manifest. Note that an empty "allowed installer" by
+ * default means containing all possible installers.
+ *
+ * @hide
+ */
+public class InstallerAllowedByManifestFormula extends IntegrityFormula implements Parcelable {
+
+    public static final String INSTALLER_CERTIFICATE_NOT_EVALUATED = "";
+
+    public InstallerAllowedByManifestFormula() {
+    }
+
+    private InstallerAllowedByManifestFormula(Parcel in) {
+    }
+
+    @NonNull
+    public static final Creator<InstallerAllowedByManifestFormula> CREATOR =
+            new Creator<InstallerAllowedByManifestFormula>() {
+                @Override
+                public InstallerAllowedByManifestFormula createFromParcel(Parcel in) {
+                    return new InstallerAllowedByManifestFormula(in);
+                }
+
+                @Override
+                public InstallerAllowedByManifestFormula[] newArray(int size) {
+                    return new InstallerAllowedByManifestFormula[size];
+                }
+            };
+
+    @Override
+    public int getTag() {
+        return IntegrityFormula.INSTALLER_ALLOWED_BY_MANIFEST_FORMULA_TAG;
+    }
+
+    @Override
+    public boolean matches(AppInstallMetadata appInstallMetadata) {
+        Map<String, String> allowedInstallersAndCertificates =
+                appInstallMetadata.getAllowedInstallersAndCertificates();
+        return allowedInstallersAndCertificates.isEmpty()
+                || installerInAllowedInstallersFromManifest(
+                appInstallMetadata, allowedInstallersAndCertificates);
+    }
+
+    @Override
+    public boolean isAppCertificateFormula() {
+        return false;
+    }
+
+    @Override
+    public boolean isInstallerFormula() {
+        return true;
+    }
+
+    private static boolean installerInAllowedInstallersFromManifest(
+            AppInstallMetadata appInstallMetadata,
+            Map<String, String> allowedInstallersAndCertificates) {
+        String installerPackage = appInstallMetadata.getInstallerName();
+
+        if (!allowedInstallersAndCertificates.containsKey(installerPackage)) {
+            return false;
+        }
+
+        // If certificate is not specified in the manifest, we do not check it.
+        if (!allowedInstallersAndCertificates.get(installerPackage)
+                .equals(INSTALLER_CERTIFICATE_NOT_EVALUATED)) {
+            return appInstallMetadata.getInstallerCertificates()
+                    .contains(
+                            allowedInstallersAndCertificates
+                                    .get(appInstallMetadata.getInstallerName()));
+        }
+
+        return true;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+    }
+}
diff --git a/core/java/android/content/integrity/IntegrityFormula.java b/core/java/android/content/integrity/IntegrityFormula.java
index 8505d32..c5e5c8a 100644
--- a/core/java/android/content/integrity/IntegrityFormula.java
+++ b/core/java/android/content/integrity/IntegrityFormula.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.content.integrity.AtomicFormula.BooleanAtomicFormula;
 import android.content.integrity.AtomicFormula.LongAtomicFormula;
 import android.content.integrity.AtomicFormula.StringAtomicFormula;
@@ -37,69 +38,92 @@
  * @hide
  */
 @SystemApi
+@TestApi
 @VisibleForTesting
 public abstract class IntegrityFormula {
 
-    /**
-     * A static formula base for package name formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals} formulation.
-     * Evaluates to false when used directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula PACKAGE_NAME =
-            new StringAtomicFormula(AtomicFormula.PACKAGE_NAME);
+    /** Factory class for creating integrity formulas based on the app being installed. */
+    public static final class Application {
+        /** Returns an integrity formula that checks the equality to a package name. */
+        @NonNull
+        public static IntegrityFormula packageNameEquals(@NonNull String packageName) {
+            return new StringAtomicFormula(AtomicFormula.PACKAGE_NAME, packageName);
+        }
 
-    /**
-     * A static formula base for app certificate formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals} formulation.
-     * Evaluates to false when used directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula APP_CERTIFICATE =
-            new StringAtomicFormula(AtomicFormula.APP_CERTIFICATE);
+        /**
+         * Returns an integrity formula that checks if the app certificates contain {@code
+         * appCertificate}.
+         */
+        @NonNull
+        public static IntegrityFormula certificatesContain(@NonNull String appCertificate) {
+            return new StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, appCertificate);
+        }
 
-    /**
-     * A static formula base for installer name formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals} formulation.
-     * Evaluates to false when used directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula INSTALLER_NAME =
-            new StringAtomicFormula(AtomicFormula.INSTALLER_NAME);
+        /** Returns an integrity formula that checks the equality to a version code. */
+        @NonNull
+        public static IntegrityFormula versionCodeEquals(@NonNull long versionCode) {
+            return new LongAtomicFormula(AtomicFormula.VERSION_CODE, AtomicFormula.EQ, versionCode);
+        }
 
-    /**
-     * A static formula base for installer certificate formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals} formulation.
-     * Evaluates to false when used directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula INSTALLER_CERTIFICATE =
-            new StringAtomicFormula(AtomicFormula.INSTALLER_CERTIFICATE);
+        /**
+         * Returns an integrity formula that checks the app's version code is greater than the
+         * provided value.
+         */
+        @NonNull
+        public static IntegrityFormula versionCodeGreaterThan(@NonNull long versionCode) {
+            return new LongAtomicFormula(AtomicFormula.VERSION_CODE, AtomicFormula.GT, versionCode);
+        }
 
-    /**
-     * A static formula base for version code name formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals},
-     * {@code greaterThan} and {@code greaterThanEquals} formulation. Evaluates to false when used
-     * directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula VERSION_CODE =
-            new LongAtomicFormula(AtomicFormula.VERSION_CODE);
+        /**
+         * Returns an integrity formula that checks the app's version code is greater than or equal
+         * to the provided value.
+         */
+        @NonNull
+        public static IntegrityFormula versionCodeGreaterThanOrEqualTo(@NonNull long versionCode) {
+            return new LongAtomicFormula(
+                    AtomicFormula.VERSION_CODE, AtomicFormula.GTE, versionCode);
+        }
 
-    /**
-     * A static formula base for pre-installed status formulas.
-     *
-     * This formulation is incomplete and should always be used with {@code equals} formulation.
-     * Evaluates to false when used directly and cannot be written as a parcel.
-     */
-    @NonNull
-    public static final IntegrityFormula PRE_INSTALLED =
-            new BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED);
+        /** Returns an integrity formula that is valid when app is pre-installed. */
+        @NonNull
+        public static IntegrityFormula isPreInstalled() {
+            return new BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true);
+        }
+
+        private Application() {
+        }
+    }
+
+    /** Factory class for creating integrity formulas based on installer. */
+    public static final class Installer {
+        /** Returns an integrity formula that checks the equality to an installer name. */
+        @NonNull
+        public static IntegrityFormula packageNameEquals(@NonNull String installerName) {
+            return new StringAtomicFormula(AtomicFormula.INSTALLER_NAME, installerName);
+        }
+
+        /**
+         * An static formula that evaluates to true if the installer is NOT allowed according to the
+         * "allowed installer" field in the android manifest.
+         */
+        @NonNull
+        public static IntegrityFormula notAllowedByManifest() {
+            return not(new InstallerAllowedByManifestFormula());
+        }
+
+        /**
+         * Returns an integrity formula that checks if the installer certificates contain {@code
+         * installerCertificate}.
+         */
+        @NonNull
+        public static IntegrityFormula certificatesContain(@NonNull String installerCertificate) {
+            return new StringAtomicFormula(AtomicFormula.INSTALLER_CERTIFICATE,
+                    installerCertificate);
+        }
+
+        private Installer() {
+        }
+    }
 
     /** @hide */
     @IntDef(
@@ -107,10 +131,12 @@
                     COMPOUND_FORMULA_TAG,
                     STRING_ATOMIC_FORMULA_TAG,
                     LONG_ATOMIC_FORMULA_TAG,
-                    BOOLEAN_ATOMIC_FORMULA_TAG
+                    BOOLEAN_ATOMIC_FORMULA_TAG,
+                    INSTALLER_ALLOWED_BY_MANIFEST_FORMULA_TAG
             })
     @Retention(RetentionPolicy.SOURCE)
-    @interface Tag {}
+    @interface Tag {
+    }
 
     /** @hide */
     public static final int COMPOUND_FORMULA_TAG = 0;
@@ -120,6 +146,8 @@
     public static final int LONG_ATOMIC_FORMULA_TAG = 2;
     /** @hide */
     public static final int BOOLEAN_ATOMIC_FORMULA_TAG = 3;
+    /** @hide */
+    public static final int INSTALLER_ALLOWED_BY_MANIFEST_FORMULA_TAG = 4;
 
     /**
      * Returns the tag that identifies the current class.
@@ -133,14 +161,14 @@
      *
      * @hide
      */
-    public abstract @Tag boolean matches(AppInstallMetadata appInstallMetadata);
+    public abstract boolean matches(AppInstallMetadata appInstallMetadata);
 
     /**
      * Returns true when the formula (or one of its atomic formulas) has app certificate as key.
      *
      * @hide
      */
-    public abstract @Tag boolean isAppCertificateFormula();
+    public abstract boolean isAppCertificateFormula();
 
     /**
      * Returns true when the formula (or one of its atomic formulas) has installer package name
@@ -148,7 +176,7 @@
      *
      * @hide
      */
-    public abstract @Tag boolean isInstallerFormula();
+    public abstract boolean isInstallerFormula();
 
     /**
      * Write an {@link IntegrityFormula} to {@link android.os.Parcel}.
@@ -157,7 +185,6 @@
      * {@link Parcelable}.
      *
      * @throws IllegalArgumentException if {@link IntegrityFormula} is not a recognized subclass
-     *
      * @hide
      */
     public static void writeToParcel(
@@ -187,76 +214,14 @@
                 return LongAtomicFormula.CREATOR.createFromParcel(in);
             case BOOLEAN_ATOMIC_FORMULA_TAG:
                 return BooleanAtomicFormula.CREATOR.createFromParcel(in);
+            case INSTALLER_ALLOWED_BY_MANIFEST_FORMULA_TAG:
+                return InstallerAllowedByManifestFormula.CREATOR.createFromParcel(in);
             default:
                 throw new IllegalArgumentException("Unknown formula tag " + tag);
         }
     }
 
     /**
-     * Returns an integrity formula that evaluates to true when value of the key matches to the
-     * provided string value.
-     *
-     * <p>The value will be hashed with SHA256 and the hex digest will be computed; for
-     * all cases except when the key is PACKAGE_NAME or INSTALLER_NAME and the value is less than
-     * 32 characters.
-     *
-     * <p>Throws an {@link IllegalArgumentException} if the key is not string typed.
-     */
-    @NonNull
-    public IntegrityFormula equalTo(@NonNull String value) {
-        AtomicFormula baseFormula = (AtomicFormula) this;
-        return new AtomicFormula.StringAtomicFormula(baseFormula.getKey(), value);
-    }
-
-    /**
-     * Returns an integrity formula that evaluates to true when the boolean value of the key matches
-     * the provided boolean value. It can only be used with the boolean comparison keys.
-     *
-     * <p>Throws an {@link IllegalArgumentException} if the key is not boolean typed.
-     */
-    @NonNull
-    public IntegrityFormula equalTo(boolean value) {
-        AtomicFormula baseFormula = (AtomicFormula) this;
-        return new AtomicFormula.BooleanAtomicFormula(baseFormula.getKey(), value);
-    }
-
-    /**
-     * Returns a formula that evaluates to true when the value of the key in the package being
-     * installed is equal to {@code value}.
-     *
-     * <p>Throws an {@link IllegalArgumentException} if the key is not long typed.
-     */
-    @NonNull
-    public IntegrityFormula equalTo(long value) {
-        AtomicFormula baseFormula = (AtomicFormula) this;
-        return new AtomicFormula.LongAtomicFormula(baseFormula.getKey(), AtomicFormula.EQ, value);
-    }
-
-    /**
-     * Returns a formula that evaluates to true when the value of the key in the package being
-     * installed is greater than {@code value}.
-     *
-     * <p>Throws an {@link IllegalArgumentException} if the key is not long typed.
-     */
-    @NonNull
-    public IntegrityFormula greaterThan(long value) {
-        AtomicFormula baseFormula = (AtomicFormula) this;
-        return new AtomicFormula.LongAtomicFormula(baseFormula.getKey(), AtomicFormula.GT, value);
-    }
-
-    /**
-     * Returns a formula that evaluates to true when the value of the key in the package being
-     * installed is greater than or equals to the {@code value}.
-     *
-     * <p>Throws an {@link IllegalArgumentException} if the key is not long typed.
-     */
-    @NonNull
-    public IntegrityFormula greaterThanOrEquals(long value) {
-        AtomicFormula baseFormula = (AtomicFormula) this;
-        return new AtomicFormula.LongAtomicFormula(baseFormula.getKey(), AtomicFormula.GTE, value);
-    }
-
-    /**
      * Returns a formula that evaluates to true when any formula in {@code formulae} evaluates to
      * true.
      *
diff --git a/core/java/android/content/integrity/Rule.java b/core/java/android/content/integrity/Rule.java
index c421c40..d29e6df 100644
--- a/core/java/android/content/integrity/Rule.java
+++ b/core/java/android/content/integrity/Rule.java
@@ -21,6 +21,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -37,6 +38,7 @@
  *
  * @hide
  */
+@TestApi
 @SystemApi
 @VisibleForTesting
 public final class Rule implements Parcelable {
diff --git a/core/java/android/content/integrity/RuleSet.java b/core/java/android/content/integrity/RuleSet.java
index b423b54..e121ff8 100644
--- a/core/java/android/content/integrity/RuleSet.java
+++ b/core/java/android/content/integrity/RuleSet.java
@@ -18,6 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -29,6 +30,7 @@
  *
  * @hide
  */
+@TestApi
 @SystemApi
 public class RuleSet {
     private final String mVersion;
diff --git a/core/java/android/content/om/OverlayManager.java b/core/java/android/content/om/OverlayManager.java
index 33d1776..dbe3954 100644
--- a/core/java/android/content/om/OverlayManager.java
+++ b/core/java/android/content/om/OverlayManager.java
@@ -44,6 +44,16 @@
     private final IOverlayManager mService;
     private final Context mContext;
 
+    /**
+     * Pre R a {@link java.lang.SecurityException} would only be thrown by setEnabled APIs (e
+     * .g. {@link #setEnabled(String, boolean, UserHandle)}) for a permission error.
+     * Since R this no longer holds true, and {@link java.lang.SecurityException} can be
+     * thrown for any number of reasons, none of which are exposed to the caller.
+     *
+     * <p>To maintain existing API behavior, if a legacy permission failure or actor enforcement
+     * failure occurs for an app not yet targeting R, coerce it into an {@link
+     * java.lang.IllegalStateException}, which existed in the source prior to R.
+     */
     @ChangeId
     @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
     private static final long THROW_SECURITY_EXCEPTIONS = 147340954;
diff --git a/core/java/android/content/pm/ApplicationInfo.java b/core/java/android/content/pm/ApplicationInfo.java
index b998539..d251ba9 100644
--- a/core/java/android/content/pm/ApplicationInfo.java
+++ b/core/java/android/content/pm/ApplicationInfo.java
@@ -1389,7 +1389,7 @@
                 pw.println(prefix + "fullBackupContent="
                         + (fullBackupContent < 0 ? "false" : "true"));
             }
-            pw.println("crossProfile=" + (crossProfile ? "true" : "false"));
+            pw.println(prefix + "crossProfile=" + (crossProfile ? "true" : "false"));
             if (networkSecurityConfigRes != 0) {
                 pw.println(prefix + "networkSecurityConfigRes=0x"
                         + Integer.toHexString(networkSecurityConfigRes));
diff --git a/core/java/android/content/pm/CrossProfileApps.java b/core/java/android/content/pm/CrossProfileApps.java
index de153d0..50841c3 100644
--- a/core/java/android/content/pm/CrossProfileApps.java
+++ b/core/java/android/content/pm/CrossProfileApps.java
@@ -87,6 +87,7 @@
             mService.startActivityAsUser(
                     mContext.getIApplicationThread(),
                     mContext.getPackageName(),
+                    mContext.getFeatureId(),
                     component,
                     targetUser.getIdentifier(),
                     true);
@@ -114,6 +115,7 @@
             mService.startActivityAsUserByIntent(
                     mContext.getIApplicationThread(),
                     mContext.getPackageName(),
+                    mContext.getFeatureId(),
                     intent,
                     targetUser.getIdentifier());
         } catch (RemoteException ex) {
@@ -139,7 +141,8 @@
     public void startActivity(@NonNull ComponentName component, @NonNull UserHandle targetUser) {
         try {
             mService.startActivityAsUser(mContext.getIApplicationThread(),
-                    mContext.getPackageName(), component, targetUser.getIdentifier(), false);
+                    mContext.getPackageName(), mContext.getFeatureId(), component,
+                    targetUser.getIdentifier(), false);
         } catch (RemoteException ex) {
             throw ex.rethrowFromSystemServer();
         }
@@ -316,13 +319,21 @@
      *
      * <p>If other changes could have affected the app's ability to interact across profiles, as
      * defined by the return value of {@link #canInteractAcrossProfiles()}, such as changes to the
-     * admin or OEM consent whitelists, then {@link
-     * #resetInteractAcrossProfilesAppOpsIfInvalid(List)} should be used.
+     * admin or OEM consent whitelists, then {@link #resetInteractAcrossProfilesAppOps(Collection,
+     * Set)} should be used.
+     *
+     * <p>If the caller does not have the {@link android.Manifest.permission
+     * #CONFIGURE_INTERACT_ACROSS_PROFILES} permission, then they must have the permissions that
+     * would have been required to call {@link android.app.AppOpsManager#setMode(int, int, String,
+     * int)}, which includes {@link android.Manifest.permission#MANAGE_APP_OPS_MODES}.
+     *
+     * <p>Also requires either {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or {@link
+     * android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}.
      *
      * @hide
      */
     @RequiresPermission(
-            allOf={android.Manifest.permission.MANAGE_APP_OPS_MODES,
+            allOf={android.Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES,
                     android.Manifest.permission.INTERACT_ACROSS_USERS})
     public void setInteractAcrossProfilesAppOp(@NonNull String packageName, @Mode int newMode) {
         try {
@@ -359,10 +370,18 @@
      * have changed as a result of non-user actions, such as changes to admin or OEM consent
      * whitelists.
      *
+     * <p>If the caller does not have the {@link android.Manifest.permission
+     * #CONFIGURE_INTERACT_ACROSS_PROFILES} permission, then they must have the permissions that
+     * would have been required to call {@link android.app.AppOpsManager#setMode(int, int, String,
+     * int)}, which includes {@link android.Manifest.permission#MANAGE_APP_OPS_MODES}.
+     *
+     * <p>Also requires either {@link android.Manifest.permission#INTERACT_ACROSS_USERS} or {@link
+     * android.Manifest.permission#INTERACT_ACROSS_USERS_FULL}.
+     *
      * @hide
      */
     @RequiresPermission(
-            allOf={android.Manifest.permission.MANAGE_APP_OPS_MODES,
+            allOf={android.Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES,
                     android.Manifest.permission.INTERACT_ACROSS_USERS})
     public void resetInteractAcrossProfilesAppOps(
             @NonNull Collection<String> previousCrossProfilePackages,
diff --git a/core/java/android/content/pm/CrossProfileAppsInternal.java b/core/java/android/content/pm/CrossProfileAppsInternal.java
new file mode 100644
index 0000000..9ff4417
--- /dev/null
+++ b/core/java/android/content/pm/CrossProfileAppsInternal.java
@@ -0,0 +1,55 @@
+/*
+ * 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 android.content.pm;
+
+import android.annotation.UserIdInt;
+
+/**
+ * Exposes internal methods from {@link com.android.server.pm.CrossProfileAppsServiceImpl} to other
+ * system server classes.
+ *
+ * @hide Only for use within the system server.
+ */
+public abstract class CrossProfileAppsInternal {
+    /**
+     * Returns whether the package has the necessary permissions to communicate cross-profile.
+     *
+     * <p>This means having at least one of these conditions:
+     * <ul>
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS_FULL} granted.
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS} granted.
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_PROFILES} granted, or the corresponding
+     *     AppOps {@code android:interact_across_profiles} is set to "allow".
+     * </ul>
+     */
+    public abstract boolean verifyPackageHasInteractAcrossProfilePermission(String packageName,
+            @UserIdInt int userId) throws PackageManager.NameNotFoundException;
+
+    /**
+     * Returns whether the package has the necessary permissions to communicate cross-profile.
+     *
+     * <p>This means having at least one of these conditions:
+     * <ul>
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS_FULL} granted.
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS} granted.
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_PROFILES} granted, or the corresponding
+     *     AppOps {@code android:interact_across_profiles} is set to "allow".
+     * </ul>
+     */
+    public abstract boolean verifyUidHasInteractAcrossProfilePermission(String packageName,
+            int uid);
+}
diff --git a/core/java/android/content/pm/ICrossProfileApps.aidl b/core/java/android/content/pm/ICrossProfileApps.aidl
index a69b988..98bf2dd 100644
--- a/core/java/android/content/pm/ICrossProfileApps.aidl
+++ b/core/java/android/content/pm/ICrossProfileApps.aidl
@@ -28,13 +28,14 @@
  */
 interface ICrossProfileApps {
     void startActivityAsUser(in IApplicationThread caller, in String callingPackage,
-            in ComponentName component, int userId, boolean launchMainActivity);
+            in String callingFeatureId, in ComponentName component, int userId,
+            boolean launchMainActivity);
     void startActivityAsUserByIntent(in IApplicationThread caller, in String callingPackage,
-                        in Intent intent, int userId);
+            in String callingFeatureId, in Intent intent, int userId);
     List<UserHandle> getTargetUserProfiles(in String callingPackage);
     boolean canInteractAcrossProfiles(in String callingPackage);
     boolean canRequestInteractAcrossProfiles(in String callingPackage);
     void setInteractAcrossProfilesAppOp(in String packageName, int newMode);
     boolean canConfigureInteractAcrossProfiles(in String packageName);
     void resetInteractAcrossProfilesAppOps(in List<String> packageNames);
-}
\ No newline at end of file
+}
diff --git a/core/java/android/content/pm/ILauncherApps.aidl b/core/java/android/content/pm/ILauncherApps.aidl
index 50bb3c7..b5f4f80 100644
--- a/core/java/android/content/pm/ILauncherApps.aidl
+++ b/core/java/android/content/pm/ILauncherApps.aidl
@@ -20,11 +20,13 @@
 import android.content.ComponentName;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.LocusId;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IOnAppsChangedListener;
 import android.content.pm.LauncherApps;
 import android.content.pm.IPackageInstallerCallback;
+import android.content.pm.IShortcutChangeCallback;
 import android.content.pm.PackageInstaller;
 import android.content.pm.ParceledListSlice;
 import android.content.pm.ResolveInfo;
@@ -47,13 +49,13 @@
     ActivityInfo resolveActivity(
             String callingPackage, in ComponentName component, in UserHandle user);
     void startSessionDetailsActivityAsUser(in IApplicationThread caller, String callingPackage,
-                in PackageInstaller.SessionInfo sessionInfo, in Rect sourceBounds, in Bundle opts,
-                in UserHandle user);
+                String callingFeatureId, in PackageInstaller.SessionInfo sessionInfo,
+                in Rect sourceBounds, in Bundle opts, in UserHandle user);
     void startActivityAsUser(in IApplicationThread caller, String callingPackage,
-            in ComponentName component, in Rect sourceBounds,
+            String callingFeatureId, in ComponentName component, in Rect sourceBounds,
             in Bundle opts, in UserHandle user);
-    void showAppDetailsAsUser(in IApplicationThread caller,
-            String callingPackage, in ComponentName component, in Rect sourceBounds,
+    void showAppDetailsAsUser(in IApplicationThread caller, String callingPackage,
+            String callingFeatureId, in ComponentName component, in Rect sourceBounds,
             in Bundle opts, in UserHandle user);
     boolean isPackageEnabled(String callingPackage, String packageName, in UserHandle user);
     Bundle getSuspendedPackageLauncherExtras(String packageName, in UserHandle user);
@@ -66,10 +68,11 @@
             in UserHandle user);
 
     ParceledListSlice getShortcuts(String callingPackage, long changedSince, String packageName,
-            in List shortcutIds, in ComponentName componentName, int flags, in UserHandle user);
+            in List shortcutIds, in List<LocusId> locusIds, in ComponentName componentName,
+            int flags, in UserHandle user);
     void pinShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
             in UserHandle user);
-    boolean startShortcut(String callingPackage, String packageName, String id,
+    boolean startShortcut(String callingPackage, String packageName, String featureId, String id,
             in Rect sourceBounds, in Bundle startActivityOptions, int userId);
 
     int getShortcutIconResId(String callingPackage, String packageName, String id,
@@ -89,4 +92,15 @@
     void registerPackageInstallerCallback(String callingPackage,
             in IPackageInstallerCallback callback);
     ParceledListSlice getAllSessions(String callingPackage);
+
+    void registerShortcutChangeCallback(String callingPackage, long changedSince,
+            String packageName, in List shortcutIds, in List<LocusId> locusIds,
+            in ComponentName componentName, int flags, in IShortcutChangeCallback callback,
+            int callbackId);
+    void unregisterShortcutChangeCallback(String callingPackage, int callbackId);
+
+    void cacheShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
+            in UserHandle user);
+    void uncacheShortcuts(String callingPackage, String packageName, in List<String> shortcutIds,
+            in UserHandle user);
 }
diff --git a/core/java/android/content/pm/IPackageManager.aidl b/core/java/android/content/pm/IPackageManager.aidl
index 93126b8..6552d1b 100644
--- a/core/java/android/content/pm/IPackageManager.aidl
+++ b/core/java/android/content/pm/IPackageManager.aidl
@@ -679,9 +679,9 @@
 
     boolean hasUidSigningCertificate(int uid, in byte[] signingCertificate, int flags);
 
-    String getSystemTextClassifierPackageName();
+    String getDefaultTextClassifierPackageName();
 
-    String[] getSystemTextClassifierPackages();
+    String getSystemTextClassifierPackageName();
 
     String getAttentionServicePackageName();
 
diff --git a/core/java/android/content/pm/IShortcutChangeCallback.aidl b/core/java/android/content/pm/IShortcutChangeCallback.aidl
new file mode 100644
index 0000000..fed4e4a
--- /dev/null
+++ b/core/java/android/content/pm/IShortcutChangeCallback.aidl
@@ -0,0 +1,37 @@
+/**
+ * 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 android.content.pm;
+
+import android.content.pm.ParceledListSlice;
+import android.content.pm.ShortcutInfo;
+import android.os.UserHandle;
+
+import java.util.List;
+
+/**
+ * Interface for LauncherApps#ShortcutChangeCallbackProxy.
+ *
+ * @hide
+ */
+oneway interface IShortcutChangeCallback
+{
+    void onShortcutsAddedOrUpdated(String packageName, in List<ShortcutInfo> shortcuts,
+            in UserHandle user);
+
+    void onShortcutsRemoved(String packageName, in List<ShortcutInfo> shortcuts,
+            in UserHandle user);
+}
\ No newline at end of file
diff --git a/core/java/android/content/pm/IShortcutService.aidl b/core/java/android/content/pm/IShortcutService.aidl
index 276853d..9e85fc3 100644
--- a/core/java/android/content/pm/IShortcutService.aidl
+++ b/core/java/android/content/pm/IShortcutService.aidl
@@ -29,10 +29,6 @@
     boolean setDynamicShortcuts(String packageName, in ParceledListSlice shortcutInfoList,
             int userId);
 
-    ParceledListSlice getDynamicShortcuts(String packageName, int userId);
-
-    ParceledListSlice getManifestShortcuts(String packageName, int userId);
-
     boolean addDynamicShortcuts(String packageName, in ParceledListSlice shortcutInfoList,
             int userId);
 
@@ -40,8 +36,6 @@
 
     void removeAllDynamicShortcuts(String packageName, int userId);
 
-    ParceledListSlice getPinnedShortcuts(String packageName, int userId);
-
     boolean updateShortcuts(String packageName, in ParceledListSlice shortcuts, int userId);
 
     boolean requestPinShortcut(String packageName, in ShortcutInfo shortcut,
@@ -78,4 +72,8 @@
     ParceledListSlice getShareTargets(String packageName, in IntentFilter filter, int userId);
 
     boolean hasShareTargets(String packageName, String packageToCheck, int userId);
+
+    void removeLongLivedShortcuts(String packageName, in List shortcutIds, int userId);
+
+    ParceledListSlice getShortcuts(String packageName, int matchFlags, int userId);
 }
\ No newline at end of file
diff --git a/core/java/android/content/pm/InstallationFile.java b/core/java/android/content/pm/InstallationFile.java
index 111ad32..b449945 100644
--- a/core/java/android/content/pm/InstallationFile.java
+++ b/core/java/android/content/pm/InstallationFile.java
@@ -16,82 +16,59 @@
 
 package android.content.pm;
 
-import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
 /**
  * Defines the properties of a file in an installation session.
- * TODO(b/136132412): update with new APIs.
- *
  * @hide
  */
 @SystemApi
 public final class InstallationFile implements Parcelable {
-    public static final int FILE_TYPE_UNKNOWN = -1;
-    public static final int FILE_TYPE_APK = 0;
-    public static final int FILE_TYPE_LIB = 1;
-    public static final int FILE_TYPE_OBB = 2;
+    private final @PackageInstaller.FileLocation int mLocation;
+    private final @NonNull String mName;
+    private final long mLengthBytes;
+    private final @Nullable byte[] mMetadata;
+    private final @Nullable byte[] mSignature;
 
-    /** @hide */
-    @Retention(RetentionPolicy.SOURCE)
-    @IntDef(prefix = {"FILE_TYPE_"}, value = {
-            FILE_TYPE_APK,
-            FILE_TYPE_LIB,
-            FILE_TYPE_OBB,
-    })
-    public @interface FileType {
-    }
-
-    private String mFileName;
-    private @FileType int mFileType;
-    private long mFileSize;
-    private byte[] mMetadata;
-
-    public InstallationFile(@NonNull String fileName, long fileSize,
-            @Nullable byte[] metadata) {
-        mFileName = fileName;
-        mFileSize = fileSize;
+    public InstallationFile(@PackageInstaller.FileLocation int location, @NonNull String name,
+            long lengthBytes, @Nullable byte[] metadata, @Nullable byte[] signature) {
+        mLocation = location;
+        mName = name;
+        mLengthBytes = lengthBytes;
         mMetadata = metadata;
-        if (fileName.toLowerCase().endsWith(".apk")) {
-            mFileType = FILE_TYPE_APK;
-        } else if (fileName.toLowerCase().endsWith(".obb")) {
-            mFileType = FILE_TYPE_OBB;
-        } else if (fileName.toLowerCase().endsWith(".so") && fileName.toLowerCase().startsWith(
-                "lib/")) {
-            mFileType = FILE_TYPE_LIB;
-        } else {
-            mFileType = FILE_TYPE_UNKNOWN;
-        }
+        mSignature = signature;
     }
 
-    public @FileType int getFileType() {
-        return mFileType;
+    public @PackageInstaller.FileLocation int getLocation() {
+        return mLocation;
     }
 
     public @NonNull String getName() {
-        return mFileName;
+        return mName;
     }
 
-    public long getSize() {
-        return mFileSize;
+    public long getLengthBytes() {
+        return mLengthBytes;
     }
 
     public @Nullable byte[] getMetadata() {
         return mMetadata;
     }
 
+    public @Nullable byte[] getSignature() {
+        return mSignature;
+    }
+
     private InstallationFile(Parcel source) {
-        mFileName = source.readString();
-        mFileType = source.readInt();
-        mFileSize = source.readLong();
+        mLocation = source.readInt();
+        mName = source.readString();
+        mLengthBytes = source.readLong();
         mMetadata = source.createByteArray();
+        mSignature = source.createByteArray();
     }
 
     @Override
@@ -101,10 +78,11 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeString(mFileName);
-        dest.writeInt(mFileType);
-        dest.writeLong(mFileSize);
+        dest.writeInt(mLocation);
+        dest.writeString(mName);
+        dest.writeLong(mLengthBytes);
         dest.writeByteArray(mMetadata);
+        dest.writeByteArray(mSignature);
     }
 
     public static final @NonNull Creator<InstallationFile> CREATOR =
diff --git a/core/java/android/content/pm/InstantAppRequest.java b/core/java/android/content/pm/InstantAppRequest.java
index f692db1..84f5021 100644
--- a/core/java/android/content/pm/InstantAppRequest.java
+++ b/core/java/android/content/pm/InstantAppRequest.java
@@ -35,6 +35,8 @@
     public final String resolvedType;
     /** The name of the package requesting the instant application */
     public final String callingPackage;
+    /** The feature in the package requesting the instant application */
+    public final String callingFeatureId;
     /** Whether or not the requesting package was an instant app */
     public final boolean isRequesterInstantApp;
     /** ID of the user requesting the instant application */
@@ -57,13 +59,15 @@
     public final String token;
 
     public InstantAppRequest(AuxiliaryResolveInfo responseObj, Intent origIntent,
-            String resolvedType, String callingPackage, boolean isRequesterInstantApp,
-            int userId, Bundle verificationBundle, boolean resolveForStart,
-            @Nullable int[] hostDigestPrefixSecure, @NonNull String token) {
+            String resolvedType, String callingPackage, @Nullable String callingFeatureId,
+            boolean isRequesterInstantApp, int userId, Bundle verificationBundle,
+            boolean resolveForStart, @Nullable int[] hostDigestPrefixSecure,
+            @NonNull String token) {
         this.responseObj = responseObj;
         this.origIntent = origIntent;
         this.resolvedType = resolvedType;
         this.callingPackage = callingPackage;
+        this.callingFeatureId = callingFeatureId;
         this.isRequesterInstantApp = isRequesterInstantApp;
         this.userId = userId;
         this.verificationBundle = verificationBundle;
diff --git a/core/java/android/content/pm/LauncherApps.java b/core/java/android/content/pm/LauncherApps.java
index ed958b1..5aa0208 100644
--- a/core/java/android/content/pm/LauncherApps.java
+++ b/core/java/android/content/pm/LauncherApps.java
@@ -16,10 +16,12 @@
 
 package android.content.pm;
 
+import static android.Manifest.permission;
 import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
@@ -34,6 +36,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.LocusId;
 import android.content.pm.PackageInstaller.SessionCallback;
 import android.content.pm.PackageInstaller.SessionCallbackDelegate;
 import android.content.pm.PackageInstaller.SessionInfo;
@@ -61,15 +64,21 @@
 import android.os.UserManager;
 import android.util.DisplayMetrics;
 import android.util.Log;
+import android.util.Pair;
+
+import com.android.internal.util.function.pooled.PooledLambda;
 
 import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
+import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.Executor;
 
@@ -152,6 +161,9 @@
     private final List<CallbackMessageHandler> mCallbacks = new ArrayList<>();
     private final List<SessionCallbackDelegate> mDelegates = new ArrayList<>();
 
+    private final Map<Integer, Pair<Executor, ShortcutChangeCallback>>
+            mShortcutChangeCallbacks = new HashMap<>();
+
     /**
      * Callbacks for package changes to this and related managed profiles.
      */
@@ -324,6 +336,11 @@
          */
         public static final int FLAG_MATCH_MANIFEST = 1 << 3;
 
+        /**
+         * Include cached shortcuts in the result.
+         */
+        public static final int FLAG_MATCH_CACHED = 1 << 4;
+
         /** @hide kept for unit tests */
         @Deprecated
         public static final int FLAG_GET_MANIFEST = FLAG_MATCH_MANIFEST;
@@ -345,11 +362,11 @@
         public static final int FLAG_MATCH_PINNED_BY_ANY_LAUNCHER = 1 << 10;
 
         /**
-         * FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST
+         * FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST | FLAG_MATCH_CACHED
          * @hide
          */
         public static final int FLAG_MATCH_ALL_KINDS =
-                FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST;
+                FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST | FLAG_MATCH_CACHED;
 
         /**
          * FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED | FLAG_MATCH_MANIFEST | FLAG_MATCH_ALL_PINNED
@@ -386,8 +403,8 @@
                 FLAG_MATCH_DYNAMIC,
                 FLAG_MATCH_PINNED,
                 FLAG_MATCH_MANIFEST,
+                FLAG_MATCH_CACHED,
                 FLAG_GET_KEY_FIELDS_ONLY,
-                FLAG_MATCH_MANIFEST,
         })
         @Retention(RetentionPolicy.SOURCE)
         public @interface QueryFlags {}
@@ -401,6 +418,9 @@
         List<String> mShortcutIds;
 
         @Nullable
+        List<LocusId> mLocusIds;
+
+        @Nullable
         ComponentName mActivity;
 
         @QueryFlags
@@ -437,6 +457,19 @@
         }
 
         /**
+         * If non-null, return only the specified shortcuts by locus ID.  When setting this field,
+         * a package name must also be set with {@link #setPackage}.
+         *
+         * @hide
+         */
+        @SystemApi
+        @NonNull
+        public ShortcutQuery setLocusIds(@Nullable List<LocusId> locusIds) {
+            mLocusIds = locusIds;
+            return this;
+        }
+
+        /**
          * If non-null, returns only shortcuts associated with the activity; i.e.
          * {@link ShortcutInfo}s whose {@link ShortcutInfo#getActivity()} are equal
          * to {@code activity}.
@@ -454,6 +487,7 @@
          *     <li>{@link #FLAG_MATCH_DYNAMIC}
          *     <li>{@link #FLAG_MATCH_PINNED}
          *     <li>{@link #FLAG_MATCH_MANIFEST}
+         *     <li>{@link #FLAG_MATCH_CACHED}
          *     <li>{@link #FLAG_GET_KEY_FIELDS_ONLY}
          * </ul>
          */
@@ -463,6 +497,95 @@
         }
     }
 
+    /**
+     * Callbacks for shortcut changes to this and related managed profiles.
+     *
+     * @hide
+     */
+    public interface ShortcutChangeCallback {
+        /**
+         * Indicates that one or more shortcuts, that match the {@link ShortcutQuery} used to
+         * register this callback, have been added or updated.
+         * @see LauncherApps#registerShortcutChangeCallback(ShortcutChangeCallback, ShortcutQuery)
+         *
+         * <p>Only the applications that are allowed to access the shortcut information,
+         * as defined in {@link #hasShortcutHostPermission()}, will receive it.
+         *
+         * @param packageName The name of the package that has the shortcuts.
+         * @param shortcuts Shortcuts from the package that have updated or added. Only "key"
+         *    information will be provided, as defined in {@link ShortcutInfo#hasKeyFieldsOnly()}.
+         * @param user The UserHandle of the profile that generated the change.
+         *
+         * @see ShortcutManager
+         */
+        default void onShortcutsAddedOrUpdated(@NonNull String packageName,
+                @NonNull List<ShortcutInfo> shortcuts, @NonNull UserHandle user) {}
+
+        /**
+         * Indicates that one or more shortcuts, that match the {@link ShortcutQuery} used to
+         * register this callback, have been removed.
+         * @see LauncherApps#registerShortcutChangeCallback(ShortcutChangeCallback, ShortcutQuery)
+         *
+         * <p>Only the applications that are allowed to access the shortcut information,
+         * as defined in {@link #hasShortcutHostPermission()}, will receive it.
+         *
+         * @param packageName The name of the package that has the shortcuts.
+         * @param shortcuts Shortcuts from the package that have been removed. Only "key"
+         *    information will be provided, as defined in {@link ShortcutInfo#hasKeyFieldsOnly()}.
+         * @param user The UserHandle of the profile that generated the change.
+         *
+         * @see ShortcutManager
+         */
+        default void onShortcutsRemoved(@NonNull String packageName,
+                @NonNull List<ShortcutInfo> shortcuts, @NonNull UserHandle user) {}
+    }
+
+    /**
+     * Callback proxy class for {@link ShortcutChangeCallback}
+     *
+     * @hide
+     */
+    private static class ShortcutChangeCallbackProxy extends
+            android.content.pm.IShortcutChangeCallback.Stub {
+        private final WeakReference<Pair<Executor, ShortcutChangeCallback>> mRemoteReferences;
+
+        ShortcutChangeCallbackProxy(Pair<Executor, ShortcutChangeCallback> remoteReferences) {
+            mRemoteReferences = new WeakReference<>(remoteReferences);
+        }
+
+        @Override
+        public void onShortcutsAddedOrUpdated(@NonNull String packageName,
+                @NonNull List<ShortcutInfo> shortcuts, @NonNull UserHandle user) {
+            Pair<Executor, ShortcutChangeCallback> remoteReferences = mRemoteReferences.get();
+            if (remoteReferences == null) {
+                // Binder is dead.
+                return;
+            }
+
+            final Executor executor = remoteReferences.first;
+            final ShortcutChangeCallback callback = remoteReferences.second;
+            executor.execute(
+                    PooledLambda.obtainRunnable(ShortcutChangeCallback::onShortcutsAddedOrUpdated,
+                            callback, packageName, shortcuts, user).recycleOnUse());
+        }
+
+        @Override
+        public void onShortcutsRemoved(@NonNull String packageName,
+                @NonNull List<ShortcutInfo> shortcuts, @NonNull UserHandle user) {
+            Pair<Executor, ShortcutChangeCallback> remoteReferences = mRemoteReferences.get();
+            if (remoteReferences == null) {
+                // Binder is dead.
+                return;
+            }
+
+            final Executor executor = remoteReferences.first;
+            final ShortcutChangeCallback callback = remoteReferences.second;
+            executor.execute(
+                    PooledLambda.obtainRunnable(ShortcutChangeCallback::onShortcutsRemoved,
+                            callback, packageName, shortcuts, user).recycleOnUse());
+        }
+    }
+
     /** @hide */
     public LauncherApps(Context context, ILauncherApps service) {
         mContext = context;
@@ -479,11 +602,15 @@
     }
 
     /**
-     * Show an error log on logcat, when the calling user is a managed profile, and the target
-     * user is different from the calling user, in order to help developers to detect it.
+     * Show an error log on logcat, when the calling user is a managed profile, the target
+     * user is different from the calling user, and it is not called from a package that has the
+     * {@link permission.INTERACT_ACROSS_USERS_FULL} permission, in order to help
+     * developers to detect it.
      */
     private void logErrorForInvalidProfileAccess(@NonNull UserHandle target) {
-        if (UserHandle.myUserId() != target.getIdentifier() && mUserManager.isManagedProfile()) {
+        if (UserHandle.myUserId() != target.getIdentifier() && mUserManager.isManagedProfile()
+                    && mContext.checkSelfPermission(permission.INTERACT_ACROSS_USERS_FULL)
+                            != PackageManager.PERMISSION_GRANTED) {
             Log.w(TAG, "Accessing other profiles/users from managed profile is no longer allowed.");
         }
     }
@@ -593,7 +720,7 @@
         }
         try {
             mService.startActivityAsUser(mContext.getIApplicationThread(),
-                    mContext.getPackageName(),
+                    mContext.getPackageName(), mContext.getFeatureId(),
                     component, sourceBounds, opts, user);
         } catch (RemoteException re) {
             throw re.rethrowFromSystemServer();
@@ -611,8 +738,8 @@
             @Nullable Rect sourceBounds, @Nullable Bundle opts) {
         try {
             mService.startSessionDetailsActivityAsUser(mContext.getIApplicationThread(),
-                    mContext.getPackageName(), sessionInfo, sourceBounds, opts,
-                    sessionInfo.getUser());
+                    mContext.getPackageName(), mContext.getFeatureId(), sessionInfo, sourceBounds,
+                    opts, sessionInfo.getUser());
         } catch (RemoteException re) {
             throw re.rethrowFromSystemServer();
         }
@@ -632,7 +759,7 @@
         logErrorForInvalidProfileAccess(user);
         try {
             mService.showAppDetailsAsUser(mContext.getIApplicationThread(),
-                    mContext.getPackageName(),
+                    mContext.getPackageName(), mContext.getFeatureId(),
                     component, sourceBounds, opts, user);
         } catch (RemoteException re) {
             throw re.rethrowFromSystemServer();
@@ -918,8 +1045,8 @@
             // changed callback, but that only returns shortcuts with the "key" information, so
             // that won't return disabled message.
             return maybeUpdateDisabledMessage(mService.getShortcuts(mContext.getPackageName(),
-                    query.mChangedSince, query.mPackage, query.mShortcutIds, query.mActivity,
-                    query.mQueryFlags, user)
+                    query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
+                    query.mActivity, query.mQueryFlags, user)
                     .getList());
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -968,6 +1095,61 @@
     }
 
     /**
+     * Mark shortcuts as cached for a package.
+     *
+     * <p>Only dynamic long lived shortcuts can be cached. None dynamic or non long lived shortcuts
+     * in the list will be ignored.
+     *
+     * <p>Unlike pinned shortcuts, where different callers can have different sets of pinned
+     * shortcuts, cached state is per shortcut only, and even if multiple callers cache the same
+     * shortcut, it can be uncached by any valid caller.
+     *
+     * @param packageName The target package name.
+     * @param shortcutIds The IDs of the shortcut to be cached.
+     * @param user The UserHandle of the profile.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
+     *
+     * @see ShortcutManager
+     *
+     * @hide
+     */
+    @RequiresPermission(android.Manifest.permission.ACCESS_SHORTCUTS)
+    public void cacheShortcuts(@NonNull String packageName, @NonNull List<String> shortcutIds,
+            @NonNull UserHandle user) {
+        logErrorForInvalidProfileAccess(user);
+        try {
+            mService.cacheShortcuts(mContext.getPackageName(), packageName, shortcutIds, user);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Remove cached flag from shortcuts for a package.
+     *
+     * @param packageName The target package name.
+     * @param shortcutIds The IDs of the shortcut to be uncached.
+     * @param user The UserHandle of the profile.
+     * @throws IllegalStateException when the user is locked, or when the {@code user} user
+     * is locked or not running.
+     *
+     * @see ShortcutManager
+     *
+     * @hide
+     */
+    @RequiresPermission(android.Manifest.permission.ACCESS_SHORTCUTS)
+    public void uncacheShortcuts(@NonNull String packageName, @NonNull List<String> shortcutIds,
+            @NonNull UserHandle user) {
+        logErrorForInvalidProfileAccess(user);
+        try {
+            mService.uncacheShortcuts(mContext.getPackageName(), packageName, shortcutIds, user);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * @hide kept for testing.
      */
     @Deprecated
@@ -1169,9 +1351,9 @@
             @Nullable Rect sourceBounds, @Nullable Bundle startActivityOptions,
             int userId) {
         try {
-            final boolean success =
-                    mService.startShortcut(mContext.getPackageName(), packageName, shortcutId,
-                    sourceBounds, startActivityOptions, userId);
+            final boolean success = mService.startShortcut(mContext.getPackageName(), packageName,
+                    null /* default featureId */, shortcutId, sourceBounds, startActivityOptions,
+                    userId);
             if (!success) {
                 throw new ActivityNotFoundException("Shortcut could not be started");
             }
@@ -1554,6 +1736,63 @@
     }
 
     /**
+     * Register a callback to watch for shortcut change events in this user and managed profiles.
+     *
+     * @param callback The callback to register.
+     * @param query {@link ShortcutQuery} to match and filter the shortcut events. Only matching
+     * shortcuts will be returned by the callback.
+     * @param executor {@link Executor} to handle the callbacks. To dispatch callbacks to the main
+     * thread of your application, you can use {@link android.content.Context#getMainExecutor()}.
+     *
+     * @hide
+     */
+    public void registerShortcutChangeCallback(@NonNull ShortcutChangeCallback callback,
+            @NonNull ShortcutQuery query, @NonNull @CallbackExecutor Executor executor) {
+        Objects.requireNonNull(callback, "Callback cannot be null");
+        Objects.requireNonNull(query, "Query cannot be null");
+        Objects.requireNonNull(executor, "Executor cannot be null");
+
+        synchronized (mShortcutChangeCallbacks) {
+            final int callbackId = callback.hashCode();
+            final Pair<Executor, ShortcutChangeCallback> state = new Pair<>(executor, callback);
+            mShortcutChangeCallbacks.put(callbackId, state);
+            try {
+                mService.registerShortcutChangeCallback(mContext.getPackageName(),
+                        query.mChangedSince, query.mPackage, query.mShortcutIds, query.mLocusIds,
+                        query.mActivity, query.mQueryFlags, new ShortcutChangeCallbackProxy(state),
+                        callbackId);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
+     * Unregisters a callback that was previously registered.
+     * @see #registerShortcutChangeCallback(ShortcutChangeCallback, ShortcutQuery, Executor)
+     *
+     * @param callback Callback to be unregistered.
+     *
+     * @hide
+     */
+    public void unregisterShortcutChangeCallback(@NonNull ShortcutChangeCallback callback) {
+        Objects.requireNonNull(callback, "Callback cannot be null");
+
+        synchronized (mShortcutChangeCallbacks) {
+            final int callbackId = callback.hashCode();
+            if (mShortcutChangeCallbacks.containsKey(callbackId)) {
+                mShortcutChangeCallbacks.remove(callbackId);
+                try {
+                    mService.unregisterShortcutChangeCallback(mContext.getPackageName(),
+                            callbackId);
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
+                }
+            }
+        }
+    }
+
+    /**
      * A helper method to extract a {@link PinItemRequest} set to
      * the {@link #EXTRA_PIN_ITEM_REQUEST} extra.
      */
diff --git a/core/java/android/content/pm/PackageInfoLite.java b/core/java/android/content/pm/PackageInfoLite.java
index 6743a3f..9735f81 100644
--- a/core/java/android/content/pm/PackageInfoLite.java
+++ b/core/java/android/content/pm/PackageInfoLite.java
@@ -74,6 +74,11 @@
     public boolean multiArch;
 
     /**
+     * The android:debuggable flag from the package manifest.
+     */
+    public boolean debuggable;
+
+    /**
      * Specifies the recommended install location. Can be one of
      * {@link PackageHelper#RECOMMEND_INSTALL_INTERNAL} to install on internal storage,
      * {@link PackageHelper#RECOMMEND_INSTALL_EXTERNAL} to install on external media,
@@ -108,6 +113,7 @@
         dest.writeInt(recommendedInstallLocation);
         dest.writeInt(installLocation);
         dest.writeInt(multiArch ? 1 : 0);
+        dest.writeInt(debuggable ? 1 : 0);
 
         if (verifiers == null || verifiers.length == 0) {
             dest.writeInt(0);
@@ -139,6 +145,7 @@
         recommendedInstallLocation = source.readInt();
         installLocation = source.readInt();
         multiArch = (source.readInt() != 0);
+        debuggable = (source.readInt() != 0);
 
         final int verifiersLength = source.readInt();
         if (verifiersLength == 0) {
diff --git a/core/java/android/content/pm/PackageInstaller.java b/core/java/android/content/pm/PackageInstaller.java
index b1b9454..2acbb97 100644
--- a/core/java/android/content/pm/PackageInstaller.java
+++ b/core/java/android/content/pm/PackageInstaller.java
@@ -1467,6 +1467,8 @@
         public DataLoaderParams dataLoaderParams;
         /** {@hide} */
         public int rollbackDataPolicy = PackageManager.RollbackDataPolicy.RESTORE;
+        /** {@hide} */
+        public boolean forceQueryableOverride;
 
         /**
          * Construct parameters for a new package install session.
@@ -1499,6 +1501,7 @@
             installerPackageName = source.readString();
             isMultiPackage = source.readBoolean();
             isStaged = source.readBoolean();
+            forceQueryableOverride = source.readBoolean();
             requiredInstalledVersionCode = source.readLong();
             DataLoaderParamsParcel dataLoaderParamsParcel = source.readParcelable(
                     DataLoaderParamsParcel.class.getClassLoader());
@@ -1528,6 +1531,7 @@
             ret.installerPackageName = installerPackageName;
             ret.isMultiPackage = isMultiPackage;
             ret.isStaged = isStaged;
+            ret.forceQueryableOverride = forceQueryableOverride;
             ret.requiredInstalledVersionCode = requiredInstalledVersionCode;
             ret.dataLoaderParams = dataLoaderParams;
             ret.rollbackDataPolicy = rollbackDataPolicy;
@@ -1904,6 +1908,14 @@
             this.dataLoaderParams = dataLoaderParams;
         }
 
+        /**
+         *
+         * {@hide}
+         */
+        public void setForceQueryable() {
+            this.forceQueryableOverride = true;
+        }
+
         /** {@hide} */
         public void dump(IndentingPrintWriter pw) {
             pw.printPair("mode", mode);
@@ -1923,6 +1935,7 @@
             pw.printPair("installerPackageName", installerPackageName);
             pw.printPair("isMultiPackage", isMultiPackage);
             pw.printPair("isStaged", isStaged);
+            pw.printPair("forceQueryable", forceQueryableOverride);
             pw.printPair("requiredInstalledVersionCode", requiredInstalledVersionCode);
             pw.printPair("dataLoaderParams", dataLoaderParams);
             pw.printPair("rollbackDataPolicy", rollbackDataPolicy);
@@ -1954,6 +1967,7 @@
             dest.writeString(installerPackageName);
             dest.writeBoolean(isMultiPackage);
             dest.writeBoolean(isStaged);
+            dest.writeBoolean(forceQueryableOverride);
             dest.writeLong(requiredInstalledVersionCode);
             if (dataLoaderParams != null) {
                 dest.writeParcelable(dataLoaderParams.getData(), flags);
@@ -2078,6 +2092,8 @@
         /** {@hide} */
         public boolean isStaged;
         /** {@hide} */
+        public boolean forceQueryable;
+        /** {@hide} */
         public int parentSessionId = INVALID_ID;
         /** {@hide} */
         public int[] childSessionIds = NO_SESSIONS;
@@ -2135,6 +2151,7 @@
             installFlags = source.readInt();
             isMultiPackage = source.readBoolean();
             isStaged = source.readBoolean();
+            forceQueryable = source.readBoolean();
             parentSessionId = source.readInt();
             childSessionIds = source.createIntArray();
             if (childSessionIds == null) {
@@ -2476,6 +2493,14 @@
         }
 
         /**
+         * Returns true if this session is marked as forceQueryable
+         * {@hide}
+         */
+        public boolean isForceQueryable() {
+            return forceQueryable;
+        }
+
+        /**
          * Returns {@code true} if this session is an active staged session.
          *
          * We consider a session active if it has been committed and it is either pending
@@ -2636,6 +2661,7 @@
             dest.writeInt(installFlags);
             dest.writeBoolean(isMultiPackage);
             dest.writeBoolean(isStaged);
+            dest.writeBoolean(forceQueryable);
             dest.writeInt(parentSessionId);
             dest.writeIntArray(childSessionIds);
             dest.writeBoolean(isStagedSessionApplied);
diff --git a/core/java/android/content/pm/PackageManager.java b/core/java/android/content/pm/PackageManager.java
index b64c001..c78d30d 100644
--- a/core/java/android/content/pm/PackageManager.java
+++ b/core/java/android/content/pm/PackageManager.java
@@ -60,6 +60,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.incremental.IncrementalManager;
 import android.os.storage.StorageManager;
 import android.os.storage.VolumeInfo;
 import android.util.AndroidException;
@@ -596,6 +597,7 @@
      * @hide
      */
     @SystemApi
+    @TestApi
     public static final int MODULE_APEX_NAME = 0x00000001;
 
     /** @hide */
@@ -1506,6 +1508,15 @@
      */
     public static final int INSTALL_FAILED_WRONG_INSTALLED_VERSION = -121;
 
+    /**
+     * Installation return code: this is passed in the {@link PackageInstaller#EXTRA_LEGACY_STATUS}
+     * if the new package failed because it contains a request to use a process that was not
+     * explicitly defined as part of its &lt;processes&gt; tag.
+     *
+     * @hide
+     */
+    public static final int INSTALL_FAILED_PROCESS_NOT_DEFINED = -122;
+
     /** @hide */
     @IntDef(flag = true, prefix = { "DELETE_" }, value = {
             DELETE_KEEP_DATA,
@@ -2988,6 +2999,18 @@
     public static final String FEATURE_REBOOT_ESCROW = "android.hardware.reboot_escrow";
 
     /**
+     * Feature for {@link #getSystemAvailableFeatures} and {@link #hasSystemFeature}: The device has
+     * the requisite kernel support to support incremental delivery aka Incremental FileSystem.
+     *
+     * @see IncrementalManager#isEnabled
+     * @hide
+     */
+    @SystemApi
+    @SdkConstant(SdkConstantType.FEATURE)
+    public static final String FEATURE_INCREMENTAL_DELIVERY =
+            "android.software.incremental_delivery";
+
+    /**
      * Extra field name for the URI to a verification file. Passed to a package
      * verifier.
      *
@@ -3345,6 +3368,23 @@
     public static final int FLAG_PERMISSION_ONE_TIME = 1 << 16;
 
     /**
+     * Permission flag: The permission is whitelisted to not be auto-revoked when app goes unused.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED = 1 << 17;
+
+    /**
+     * Permission flag: Whether {@link #FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED} state was set by
+     * user.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int FLAG_PERMISSION_AUTO_REVOKE_USER_SET = 1 << 18;
+
+    /**
      * Permission flags: Reserved for use by the permission controller.
      *
      * @hide
@@ -3395,7 +3435,9 @@
             | FLAG_PERMISSION_APPLY_RESTRICTION
             | FLAG_PERMISSION_GRANTED_BY_ROLE
             | FLAG_PERMISSION_REVOKED_COMPAT
-            | FLAG_PERMISSION_ONE_TIME;
+            | FLAG_PERMISSION_ONE_TIME
+            | FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED
+            | FLAG_PERMISSION_AUTO_REVOKE_USER_SET;
 
     /**
      * Injected activity in app that forwards user to setting activity of that app.
@@ -4218,7 +4260,9 @@
             FLAG_PERMISSION_APPLY_RESTRICTION,
             FLAG_PERMISSION_GRANTED_BY_ROLE,
             FLAG_PERMISSION_REVOKED_COMPAT,
-            FLAG_PERMISSION_ONE_TIME
+            FLAG_PERMISSION_ONE_TIME,
+            FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED,
+            FLAG_PERMISSION_AUTO_REVOKE_USER_SET
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface PermissionFlags {}
@@ -7237,6 +7281,7 @@
             case INSTALL_FAILED_MISSING_SPLIT: return "INSTALL_FAILED_MISSING_SPLIT";
             case INSTALL_FAILED_BAD_SIGNATURE: return "INSTALL_FAILED_BAD_SIGNATURE";
             case INSTALL_FAILED_WRONG_INSTALLED_VERSION: return "INSTALL_FAILED_WRONG_INSTALLED_VERSION";
+            case INSTALL_FAILED_PROCESS_NOT_DEFINED: return "INSTALL_FAILED_PROCESS_NOT_DEFINED";
             default: return Integer.toString(status);
         }
     }
@@ -7354,6 +7399,8 @@
             case FLAG_PERMISSION_GRANTED_BY_ROLE: return "GRANTED_BY_ROLE";
             case FLAG_PERMISSION_REVOKED_COMPAT: return "REVOKED_COMPAT";
             case FLAG_PERMISSION_ONE_TIME: return "ONE_TIME";
+            case FLAG_PERMISSION_AUTO_REVOKE_IF_UNUSED: return "AUTO_REVOKE_IF_UNUSED";
+            case FLAG_PERMISSION_AUTO_REVOKE_USER_SET: return "AUTO_REVOKE_USER_SET";
             default: return Integer.toString(flag);
         }
     }
@@ -7592,14 +7639,15 @@
     }
 
     /**
-     * @return the system defined text classifier package name, or null if there's none.
+     * @return the default text classifier package name, or null if there's none.
      *
      * @hide
      */
     @Nullable
-    public String getSystemTextClassifierPackageName() {
+    @TestApi
+    public String getDefaultTextClassifierPackageName() {
         throw new UnsupportedOperationException(
-                "getSystemTextClassifierPackageName not implemented in subclass");
+                "getDefaultTextClassifierPackageName not implemented in subclass");
     }
 
     /**
@@ -7607,10 +7655,11 @@
      *
      * @hide
      */
-    @NonNull
-    public String[] getSystemTextClassifierPackages() {
+    @Nullable
+    @TestApi
+    public String getSystemTextClassifierPackageName() {
         throw new UnsupportedOperationException(
-                "getSystemTextClassifierPackages not implemented in subclass");
+                "getSystemTextClassifierPackageName not implemented in subclass");
     }
 
     /**
diff --git a/core/java/android/content/pm/PackageParser.java b/core/java/android/content/pm/PackageParser.java
index 430241a..637e64d 100644
--- a/core/java/android/content/pm/PackageParser.java
+++ b/core/java/android/content/pm/PackageParser.java
@@ -61,7 +61,6 @@
 import android.content.pm.parsing.AndroidPackage;
 import android.content.pm.parsing.ApkParseUtils;
 import android.content.pm.parsing.PackageImpl;
-import android.content.pm.parsing.PackageInfoUtils;
 import android.content.pm.parsing.ParsedPackage;
 import android.content.pm.permission.SplitPermissionInfoParcelable;
 import android.content.pm.split.DefaultSplitAssetLoader;
@@ -954,6 +953,10 @@
             throw new PackageParserException(INSTALL_PARSE_FAILED_NOT_APK,
                     "No packages found in split");
         }
+        // Apk directory is directly nested under the current directory
+        if (files.length == 1 && files[0].isDirectory()) {
+            return parseClusterPackageLite(files[0], flags);
+        }
 
         String packageName = null;
         int versionCode = 0;
@@ -1052,10 +1055,8 @@
      * has changed since the last parse, it's up to callers to do so.
      *
      * @see #parsePackageLite(File, int)
-     * @deprecated use {@link #parseParsedPackage(File, int, boolean)}
      */
     @UnsupportedAppUsage
-    @Deprecated
     public Package parsePackage(File packageFile, int flags, boolean useCaches)
             throws PackageParserException {
         if (packageFile.isDirectory()) {
@@ -1067,10 +1068,8 @@
 
     /**
      * Equivalent to {@link #parsePackage(File, int, boolean)} with {@code useCaches == false}.
-     * @deprecated use {@link #parseParsedPackage(File, int, boolean)}
      */
     @UnsupportedAppUsage
-    @Deprecated
     public Package parsePackage(File packageFile, int flags) throws PackageParserException {
         return parsePackage(packageFile, flags, false /* useCaches */);
     }
@@ -1327,12 +1326,9 @@
                 }
             }
 
-            pkg.setCodePath(packageDir.getCanonicalPath());
+            pkg.setCodePath(lite.codePath);
             pkg.setUse32bitAbi(lite.use32bitAbi);
             return pkg;
-        } catch (IOException e) {
-            throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
-                    "Failed to get path: " + lite.baseCodePath, e);
         } finally {
             IoUtils.closeQuietly(assetLoader);
         }
@@ -1344,12 +1340,7 @@
      * Note that this <em>does not</em> perform signature verification; that
      * must be done separately in
      * {@link ApkParseUtils#collectCertificates(AndroidPackage, boolean)}.
-     *
-     * @deprecated external callers should move to
-     *             {@link #parseParsedPackage(File, int, boolean)}. Eventually this method will
-     *             be marked private.
      */
-    @Deprecated
     @UnsupportedAppUsage
     public Package parseMonolithicPackage(File apkFile, int flags) throws PackageParserException {
         final PackageLite lite = parseMonolithicPackageLite(apkFile, flags);
@@ -1546,11 +1537,8 @@
      * Collect certificates from all the APKs described in the given package,
      * populating {@link Package#mSigningDetails}. Also asserts that all APK
      * contents are signed correctly and consistently.
-     *
-     * @deprecated use {@link ApkParseUtils#collectCertificates(AndroidPackage, boolean)}
      */
     @UnsupportedAppUsage
-    @Deprecated
     public static void collectCertificates(Package pkg, boolean skipVerify)
             throws PackageParserException {
         collectCertificatesInternal(pkg, skipVerify);
@@ -1584,7 +1572,8 @@
             throws PackageParserException {
         final String apkPath = apkFile.getAbsolutePath();
 
-        int minSignatureScheme = SigningDetails.SignatureSchemeVersion.JAR;
+        int minSignatureScheme = ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
+                pkg.applicationInfo.targetSdkVersion);
         if (pkg.applicationInfo.isStaticSharedLibrary()) {
             // must use v2 signing scheme
             minSignatureScheme = SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V2;
@@ -5977,12 +5966,14 @@
         @IntDef({SigningDetails.SignatureSchemeVersion.UNKNOWN,
                 SigningDetails.SignatureSchemeVersion.JAR,
                 SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V2,
-                SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V3})
+                SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V3,
+                SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V4})
         public @interface SignatureSchemeVersion {
             int UNKNOWN = 0;
             int JAR = 1;
             int SIGNING_BLOCK_V2 = 2;
             int SIGNING_BLOCK_V3 = 3;
+            int SIGNING_BLOCK_V4 = 4;
         }
 
         @Nullable
@@ -6470,9 +6461,8 @@
      * Representation of a full package parsed from APK files on disk. A package
      * consists of a single base APK, and zero or more split APKs.
      *
-     * @deprecated use an {@link AndroidPackage}
+     * Deprecated internally. Use AndroidPackage instead.
      */
-    @Deprecated
     public final static class Package implements Parcelable {
 
         @UnsupportedAppUsage
@@ -7386,10 +7376,6 @@
         };
     }
 
-    /**
-     * @deprecated use a {@link ComponentParseUtils.ParsedComponent}
-     */
-    @Deprecated
     public static abstract class Component<II extends IntentInfo> {
         @UnsupportedAppUsage
         public final ArrayList<II> intents;
@@ -7570,10 +7556,6 @@
         }
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedPermission}
-     */
-    @Deprecated
     public final static class Permission extends Component<IntentInfo> implements Parcelable {
         @UnsupportedAppUsage
         public final PermissionInfo info;
@@ -7648,10 +7630,6 @@
         };
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedPermissionGroup}
-     */
-    @Deprecated
     public final static class PermissionGroup extends Component<IntentInfo> implements Parcelable {
         @UnsupportedAppUsage
         public final PermissionGroupInfo info;
@@ -7751,12 +7729,7 @@
         return false;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateApplicationInfo(
-     *      AndroidPackage, int, PackageUserState, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static ApplicationInfo generateApplicationInfo(Package p, int flags,
             PackageUserState state) {
         return generateApplicationInfo(p, flags, state, UserHandle.getCallingUserId());
@@ -7813,12 +7786,7 @@
         ai.icon = (sUseRoundIcon && ai.roundIconRes != 0) ? ai.roundIconRes : ai.iconRes;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateApplicationInfo(
-     *      AndroidPackage, int, PackageUserState, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static ApplicationInfo generateApplicationInfo(Package p, int flags,
             PackageUserState state, int userId) {
         if (p == null) return null;
@@ -7858,11 +7826,6 @@
         return ai;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateApplicationInfo(
-     *      AndroidPackage, int, PackageUserState, int)}
-     */
-    @Deprecated
     public static ApplicationInfo generateApplicationInfo(ApplicationInfo ai, int flags,
             PackageUserState state, int userId) {
         if (ai == null) return null;
@@ -7882,12 +7845,7 @@
         return ai;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generatePermissionInfo(
-     *      ComponentParseUtils.ParsedPermission, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final PermissionInfo generatePermissionInfo(
             Permission p, int flags) {
         if (p == null) return null;
@@ -7899,12 +7857,7 @@
         return pi;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generatePermissionGroupInfo(
-     *      ComponentParseUtils.ParsedPermissionGroup, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final PermissionGroupInfo generatePermissionGroupInfo(
             PermissionGroup pg, int flags) {
         if (pg == null) return null;
@@ -7916,10 +7869,6 @@
         return pgi;
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedActivity}
-     */
-    @Deprecated
     public final static class Activity extends Component<ActivityIntentInfo> implements Parcelable {
         @UnsupportedAppUsage
         public final ActivityInfo info;
@@ -8035,12 +7984,7 @@
         };
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateActivityInfo(
-     *      AndroidPackage, ComponentParseUtils.ParsedActivity, int, PackageUserState, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final ActivityInfo generateActivityInfo(Activity a, int flags,
             PackageUserState state, int userId) {
         if (a == null) return null;
@@ -8058,11 +8002,6 @@
         return ai;
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateActivityInfo(
-     *      AndroidPackage, ComponentParseUtils.ParsedActivity, int, PackageUserState, int)}
-     */
-    @Deprecated
     public static final ActivityInfo generateActivityInfo(ActivityInfo ai, int flags,
             PackageUserState state, int userId) {
         if (ai == null) return null;
@@ -8076,10 +8015,6 @@
         return ai;
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedService}
-     */
-    @Deprecated
     public final static class Service extends Component<ServiceIntentInfo> implements Parcelable {
         @UnsupportedAppUsage
         public final ServiceInfo info;
@@ -8141,12 +8076,7 @@
         };
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateServiceInfo(
-     * AndroidPackage, ComponentParseUtils.ParsedService, int, PackageUserState, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final ServiceInfo generateServiceInfo(Service s, int flags,
             PackageUserState state, int userId) {
         if (s == null) return null;
@@ -8164,10 +8094,6 @@
         return si;
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedProvider}
-     */
-    @Deprecated
     public final static class Provider extends Component<ProviderIntentInfo> implements Parcelable {
         @UnsupportedAppUsage
         public final ProviderInfo info;
@@ -8248,12 +8174,7 @@
         };
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateProviderInfo(
-     *      AndroidPackage, ComponentParseUtils.ParsedProvider, int, PackageUserState, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final ProviderInfo generateProviderInfo(Provider p, int flags,
             PackageUserState state, int userId) {
         if (p == null) return null;
@@ -8276,10 +8197,6 @@
         return pi;
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedInstrumentation}
-     */
-    @Deprecated
     public final static class Instrumentation extends Component<IntentInfo> implements
             Parcelable {
         @UnsupportedAppUsage
@@ -8340,12 +8257,7 @@
         };
     }
 
-    /**
-     * @deprecated use {@link PackageInfoUtils#generateInstrumentationInfo(
-     *      ComponentParseUtils.ParsedInstrumentation, int)}
-     */
     @UnsupportedAppUsage
-    @Deprecated
     public static final InstrumentationInfo generateInstrumentationInfo(
             Instrumentation i, int flags) {
         if (i == null) return null;
@@ -8357,10 +8269,6 @@
         return ii;
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedIntentInfo}
-     */
-    @Deprecated
     public static abstract class IntentInfo extends IntentFilter {
         @UnsupportedAppUsage
         public boolean hasDefault;
@@ -8404,10 +8312,6 @@
         }
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedActivityIntentInfo}
-     */
-    @Deprecated
     public final static class ActivityIntentInfo extends IntentInfo {
         @UnsupportedAppUsage
         public Activity activity;
@@ -8431,10 +8335,6 @@
         }
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedServiceIntentInfo}
-     */
-    @Deprecated
     public final static class ServiceIntentInfo extends IntentInfo {
         @UnsupportedAppUsage
         public Service service;
@@ -8458,10 +8358,6 @@
         }
     }
 
-    /**
-     * @deprecated use {@link ComponentParseUtils.ParsedProviderIntentInfo}
-     */
-    @Deprecated
     public static final class ProviderIntentInfo extends IntentInfo {
         @UnsupportedAppUsage
         public Provider provider;
diff --git a/core/java/android/content/pm/PermissionInfo.java b/core/java/android/content/pm/PermissionInfo.java
index a0f089b..3aa1a6d 100644
--- a/core/java/android/content/pm/PermissionInfo.java
+++ b/core/java/android/content/pm/PermissionInfo.java
@@ -259,6 +259,17 @@
     @TestApi
     public static final int PROTECTION_FLAG_COMPANION = 0x800000;
 
+    /**
+     * Additional flag for {@link #protectionLevel}, corresponding
+     * to the <code>retailDemo</code> value of
+     * {@link android.R.attr#protectionLevel}.
+     *
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    public static final int PROTECTION_FLAG_RETAIL_DEMO = 0x1000000;
+
     /** @hide */
     @IntDef(flag = true, prefix = { "PROTECTION_FLAG_" }, value = {
             PROTECTION_FLAG_PRIVILEGED,
@@ -282,6 +293,7 @@
             PROTECTION_FLAG_APP_PREDICTOR,
             PROTECTION_FLAG_TELEPHONY,
             PROTECTION_FLAG_COMPANION,
+            PROTECTION_FLAG_RETAIL_DEMO,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface ProtectionFlags {}
@@ -528,6 +540,9 @@
         if ((level & PermissionInfo.PROTECTION_FLAG_TELEPHONY) != 0) {
             protLevel += "|telephony";
         }
+        if ((level & PermissionInfo.PROTECTION_FLAG_RETAIL_DEMO) != 0) {
+            protLevel += "|retailDemo";
+        }
         return protLevel;
     }
 
diff --git a/core/java/android/content/pm/ShortcutInfo.java b/core/java/android/content/pm/ShortcutInfo.java
index d5fb848..bde4f61 100644
--- a/core/java/android/content/pm/ShortcutInfo.java
+++ b/core/java/android/content/pm/ShortcutInfo.java
@@ -120,6 +120,9 @@
     public static final int FLAG_LONG_LIVED = 1 << 13;
 
     /** @hide */
+    public static final int FLAG_CACHED = 1 << 14;
+
+    /** @hide */
     @IntDef(flag = true, prefix = { "FLAG_" }, value = {
             FLAG_DYNAMIC,
             FLAG_PINNED,
@@ -135,6 +138,7 @@
             FLAG_ICON_FILE_PENDING_SAVE,
             FLAG_SHADOW,
             FLAG_LONG_LIVED,
+            FLAG_CACHED,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface ShortcutFlags {}
@@ -1681,6 +1685,16 @@
         addFlags(FLAG_LONG_LIVED);
     }
 
+    /** @hide */
+    public void setCached() {
+        addFlags(FLAG_CACHED);
+    }
+
+    /** Return whether a shortcut is cached. */
+    public boolean isCached() {
+        return hasFlags(FLAG_CACHED);
+    }
+
     /** Return whether a shortcut is dynamic. */
     public boolean isDynamic() {
         return hasFlags(FLAG_DYNAMIC);
@@ -1765,7 +1779,8 @@
 
     /** @hide */
     public boolean isAlive() {
-        return hasFlags(FLAG_PINNED) || hasFlags(FLAG_DYNAMIC) || hasFlags(FLAG_MANIFEST);
+        return hasFlags(FLAG_PINNED) || hasFlags(FLAG_DYNAMIC) || hasFlags(FLAG_MANIFEST)
+                || hasFlags(FLAG_CACHED);
     }
 
     /** @hide */
diff --git a/core/java/android/content/pm/ShortcutManager.java b/core/java/android/content/pm/ShortcutManager.java
index dde8865..3eea3f6 100644
--- a/core/java/android/content/pm/ShortcutManager.java
+++ b/core/java/android/content/pm/ShortcutManager.java
@@ -16,6 +16,7 @@
 package android.content.pm;
 
 import android.Manifest;
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
@@ -40,6 +41,8 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.List;
 
 /**
@@ -62,6 +65,44 @@
 public class ShortcutManager {
     private static final String TAG = "ShortcutManager";
 
+    /**
+     * Include manifest shortcuts in the result.
+     *
+     * @see #getShortcuts(int)
+     */
+    public static final int FLAG_MATCH_MANIFEST = 1 << 0;
+
+    /**
+     * Include dynamic shortcuts in the result.
+     *
+     * @see #getShortcuts(int)
+     */
+    public static final int FLAG_MATCH_DYNAMIC = 1 << 1;
+
+    /**
+     * Include pinned shortcuts in the result.
+     *
+     * @see #getShortcuts(int)
+     */
+    public static final int FLAG_MATCH_PINNED = 1 << 2;
+
+    /**
+     * Include cached shortcuts in the result.
+     *
+     * @see #getShortcuts(int)
+     */
+    public static final int FLAG_MATCH_CACHED = 1 << 3;
+
+    /** @hide */
+    @IntDef(flag = true, prefix = { "FLAG_MATCH_" }, value = {
+            FLAG_MATCH_MANIFEST,
+            FLAG_MATCH_DYNAMIC,
+            FLAG_MATCH_PINNED,
+            FLAG_MATCH_CACHED,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ShortcutMatchFlags {}
+
     private final Context mContext;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final IShortcutService mService;
@@ -118,8 +159,8 @@
     @NonNull
     public List<ShortcutInfo> getDynamicShortcuts() {
         try {
-            return mService.getDynamicShortcuts(mContext.getPackageName(), injectMyUserId())
-                    .getList();
+            return mService.getShortcuts(mContext.getPackageName(), FLAG_MATCH_DYNAMIC,
+                    injectMyUserId()).getList();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -137,7 +178,35 @@
     @NonNull
     public List<ShortcutInfo> getManifestShortcuts() {
         try {
-            return mService.getManifestShortcuts(mContext.getPackageName(), injectMyUserId())
+            return mService.getShortcuts(mContext.getPackageName(), FLAG_MATCH_MANIFEST,
+                    injectMyUserId()).getList();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Returns {@link ShortcutInfo}s that match {@code matchFlags}.
+     *
+     * @param matchFlags result includes shortcuts matching this flags. Any combination of:
+     * <ul>
+     *     <li>{@link #FLAG_MATCH_MANIFEST}
+     *     <li>{@link #FLAG_MATCH_DYNAMIC}
+     *     <li>{@link #FLAG_MATCH_PINNED}
+     *     <li>{@link #FLAG_MATCH_CACHED}
+     * </ul>
+
+     * @return list of {@link ShortcutInfo}s that match the flag.
+     *
+     * <p>At least one of the {@code MATCH} flags should be set. Otherwise no shortcuts will be
+     * returned.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    @NonNull
+    public List<ShortcutInfo> getShortcuts(@ShortcutMatchFlags int matchFlags) {
+        try {
+            return mService.getShortcuts(mContext.getPackageName(), matchFlags, injectMyUserId())
                     .getList();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -194,6 +263,20 @@
     }
 
     /**
+     * Delete long lived shortcuts by ID.
+     *
+     * @throws IllegalStateException when the user is locked.
+     */
+    public void removeLongLivedShortcuts(@NonNull List<String> shortcutIds) {
+        try {
+            mService.removeLongLivedShortcuts(mContext.getPackageName(), shortcutIds,
+                    injectMyUserId());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Return all pinned shortcuts from the caller app.
      *
      * <p>This API is intended to be used for examining what shortcuts are currently published.
@@ -205,8 +288,8 @@
     @NonNull
     public List<ShortcutInfo> getPinnedShortcuts() {
         try {
-            return mService.getPinnedShortcuts(mContext.getPackageName(), injectMyUserId())
-                    .getList();
+            return mService.getShortcuts(mContext.getPackageName(), FLAG_MATCH_PINNED,
+                    injectMyUserId()).getList();
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
diff --git a/core/java/android/content/pm/ShortcutServiceInternal.java b/core/java/android/content/pm/ShortcutServiceInternal.java
index e6f682d..a69905e 100644
--- a/core/java/android/content/pm/ShortcutServiceInternal.java
+++ b/core/java/android/content/pm/ShortcutServiceInternal.java
@@ -23,6 +23,7 @@
 import android.content.ComponentName;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.LocusId;
 import android.content.pm.LauncherApps.ShortcutQuery;
 import android.os.Bundle;
 import android.os.ParcelFileDescriptor;
@@ -45,8 +46,8 @@
             getShortcuts(int launcherUserId,
             @NonNull String callingPackage, long changedSince,
             @Nullable String packageName, @Nullable List<String> shortcutIds,
-            @Nullable ComponentName componentName, @ShortcutQuery.QueryFlags int flags,
-            int userId, int callingPid, int callingUid);
+            @Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
+            @ShortcutQuery.QueryFlags int flags, int userId, int callingPid, int callingUid);
 
     public abstract boolean
             isPinnedByCaller(int launcherUserId, @NonNull String callingPackage,
@@ -84,4 +85,11 @@
 
     public abstract boolean isForegroundDefaultLauncher(@NonNull String callingPackage,
             int callingUid);
+
+    public abstract void cacheShortcuts(int launcherUserId,
+            @NonNull String callingPackage, @NonNull String packageName,
+            @NonNull List<String> shortcutIds, int userId);
+    public abstract void uncacheShortcuts(int launcherUserId,
+            @NonNull String callingPackage, @NonNull String packageName,
+            @NonNull List<String> shortcutIds, int userId);
 }
diff --git a/core/java/android/content/pm/TEST_MAPPING b/core/java/android/content/pm/TEST_MAPPING
index 0549c34..6f30ecd 100644
--- a/core/java/android/content/pm/TEST_MAPPING
+++ b/core/java/android/content/pm/TEST_MAPPING
@@ -15,5 +15,15 @@
       "name": "FrameworksInstantAppResolverTests",
       "file_patterns": ["(/|^)InstantApp[^/]*"]
     }
+  ],
+  "postsubmit": [
+    {
+      "name": "CtsAppSecurityHostTestCases",
+      "options": [
+        {
+          "include-filter": "android.appsecurity.cts.AppSecurityTests#testPermissionDiffCert"
+        }
+      ]
+    }
   ]
 }
diff --git a/core/java/android/content/pm/parsing/AndroidPackage.java b/core/java/android/content/pm/parsing/AndroidPackage.java
index fbe5a48..da17ff3 100644
--- a/core/java/android/content/pm/parsing/AndroidPackage.java
+++ b/core/java/android/content/pm/parsing/AndroidPackage.java
@@ -286,6 +286,8 @@
 
     List<String> getQueriesPackages();
 
+    Set<String> getQueriesProviders();
+
     String getRealPackage();
 
     // TODO(b/135203078): Rename to getRequiredFeatures? Somewhat ambiguous whether "Req" is
diff --git a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
index 6639b3d..5be9c91 100644
--- a/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkLiteParseUtils.java
@@ -97,6 +97,10 @@
             throw new PackageParser.PackageParserException(
                     PackageManager.INSTALL_PARSE_FAILED_NOT_APK, "No packages found in split");
         }
+        // Apk directory is directly nested under the current directory
+        if (files.length == 1 && files[0].isDirectory()) {
+            return parseClusterPackageLite(files[0], flags);
+        }
 
         String packageName = null;
         int versionCode = 0;
@@ -231,9 +235,9 @@
                 final boolean skipVerify = (flags & PackageParser.PARSE_IS_SYSTEM_DIR) != 0;
                 Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "collectCertificates");
                 try {
-                    signingDetails =
-                            ApkParseUtils.collectCertificates(apkFile.getAbsolutePath(), skipVerify,
-                                    false, PackageParser.SigningDetails.UNKNOWN);
+                    signingDetails = ApkParseUtils.collectCertificates(apkFile.getAbsolutePath(),
+                            skipVerify, false, PackageParser.SigningDetails.UNKNOWN,
+                            DEFAULT_TARGET_SDK_VERSION);
                 } finally {
                     Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
                 }
diff --git a/core/java/android/content/pm/parsing/ApkParseUtils.java b/core/java/android/content/pm/parsing/ApkParseUtils.java
index 3018230..548d82a 100644
--- a/core/java/android/content/pm/parsing/ApkParseUtils.java
+++ b/core/java/android/content/pm/parsing/ApkParseUtils.java
@@ -96,6 +96,7 @@
 import java.util.List;
 import java.util.Map;
 import java.util.Set;
+import java.util.StringTokenizer;
 
 /** @hide */
 public class ApkParseUtils {
@@ -205,11 +206,8 @@
                 }
             }
 
-            return parsingPackage.setCodePath(packageDir.getCanonicalPath())
+            return parsingPackage.setCodePath(lite.codePath)
                     .setUse32BitAbi(lite.use32bitAbi);
-        } catch (IOException e) {
-            throw new PackageParserException(INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION,
-                    "Failed to get path: " + lite.baseCodePath, e);
         } finally {
             IoUtils.closeQuietly(assetLoader);
         }
@@ -1820,6 +1818,25 @@
                     );
                 }
                 parsingPackage.addQueriesPackage(packageName.intern());
+            } else if (parser.getName().equals("provider")) {
+                final TypedArray sa = res.obtainAttributes(parser,
+                        R.styleable.AndroidManifestQueriesProvider);
+                try {
+                    final String authorities =
+                            sa.getString(R.styleable.AndroidManifestQueriesProvider_authorities);
+                    if (TextUtils.isEmpty(authorities)) {
+                        return parseInput.error(
+                                PackageManager.INSTALL_PARSE_FAILED_MANIFEST_MALFORMED,
+                                "Authority missing from provider tag."
+                        );
+                    }
+                    StringTokenizer authoritiesTokenizer = new StringTokenizer(authorities, ";");
+                    while (authoritiesTokenizer.hasMoreElements()) {
+                        parsingPackage.addQueriesProvider(authoritiesTokenizer.nextToken());
+                    }
+                } finally {
+                    sa.recycle();
+                }
             }
         }
         return parseInput.success(parsingPackage);
@@ -3176,7 +3193,8 @@
                     pkg.getBaseCodePath(),
                     skipVerify,
                     pkg.isStaticSharedLibrary(),
-                    pkg.getSigningDetails()
+                    pkg.getSigningDetails(),
+                    pkg.getTargetSdkVersion()
             ));
 
             String[] splitCodePaths = pkg.getSplitCodePaths();
@@ -3186,7 +3204,8 @@
                             splitCodePaths[i],
                             skipVerify,
                             pkg.isStaticSharedLibrary(),
-                            pkg.getSigningDetails()
+                            pkg.getSigningDetails(),
+                            pkg.getTargetSdkVersion()
                     ));
                 }
             }
@@ -3199,9 +3218,11 @@
             String baseCodePath,
             boolean skipVerify,
             boolean isStaticSharedLibrary,
-            @NonNull SigningDetails existingSigningDetails
+            @NonNull SigningDetails existingSigningDetails,
+            int targetSdk
     ) throws PackageParserException {
-        int minSignatureScheme = SigningDetails.SignatureSchemeVersion.JAR;
+        int minSignatureScheme = ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
+                targetSdk);
         if (isStaticSharedLibrary) {
             // must use v2 signing scheme
             minSignatureScheme = SigningDetails.SignatureSchemeVersion.SIGNING_BLOCK_V2;
diff --git a/core/java/android/content/pm/parsing/ComponentParseUtils.java b/core/java/android/content/pm/parsing/ComponentParseUtils.java
index 9a0a6d5..a0f5812 100644
--- a/core/java/android/content/pm/parsing/ComponentParseUtils.java
+++ b/core/java/android/content/pm/parsing/ComponentParseUtils.java
@@ -3414,16 +3414,12 @@
             proc.name = sa.getNonConfigurationString(
                     R.styleable.AndroidManifestProcess_process,0);
             proc.name = PackageParser.buildProcessName(parsingPackage.getPackageName(),
-                    null, proc.name, flags, separateProcesses, outError);
-
-            if (proc.name == null || proc.name.length() <= 0) {
-                outError[0] = "<process> does not specify android:process";
+                    parsingPackage.getPackageName(), proc.name, flags, separateProcesses, outError);
+            if (outError[0] != null) {
                 return null;
             }
-            proc.name = PackageParser.buildProcessName(parsingPackage.getPackageName(),
-                    parsingPackage.getPackageName(), proc.name,
-                    flags, separateProcesses, outError);
-            if (outError[0] != null) {
+            if (proc.name == null || proc.name.length() <= 0) {
+                outError[0] = "<process> does not specify android:process";
                 return null;
             }
         } finally {
diff --git a/core/java/android/content/pm/parsing/PackageImpl.java b/core/java/android/content/pm/parsing/PackageImpl.java
index fe8307c..0df9500 100644
--- a/core/java/android/content/pm/parsing/PackageImpl.java
+++ b/core/java/android/content/pm/parsing/PackageImpl.java
@@ -216,6 +216,9 @@
     private ArrayList<String> queriesPackages;
 
     @Nullable
+    private ArraySet<String> queriesProviders;
+
+    @Nullable
     private ArrayMap<String, ComponentParseUtils.ParsedProcess> processes;
 
     private String[] splitClassLoaderNames;
@@ -957,6 +960,12 @@
     }
 
     @Override
+    public ParsingPackage addQueriesProvider(String authority) {
+        this.queriesProviders = ArrayUtils.add(this.queriesProviders, authority);
+        return this;
+    }
+
+    @Override
     public PackageImpl setProcesses(ArrayMap<String, ComponentParseUtils.ParsedProcess> processes) {
         this.processes = processes;
         return this;
@@ -2975,6 +2984,11 @@
         return queriesPackages;
     }
 
+    @Override
+    public Set<String> getQueriesProviders() {
+        return queriesProviders;
+    }
+
     private static void internStringArrayList(List<String> list) {
         if (list != null) {
             final int N = list.size();
diff --git a/core/java/android/content/pm/parsing/ParsingPackage.java b/core/java/android/content/pm/parsing/ParsingPackage.java
index 9ddcc09..a2fe064 100644
--- a/core/java/android/content/pm/parsing/ParsingPackage.java
+++ b/core/java/android/content/pm/parsing/ParsingPackage.java
@@ -100,6 +100,8 @@
 
     ParsingPackage addQueriesPackage(String packageName);
 
+    ParsingPackage addQueriesProvider(String authority);
+
     ParsingPackage setProcesses(ArrayMap<String, ComponentParseUtils.ParsedProcess> processes);
 
     ParsingPackage asSplit(
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java
index 8c358cc..6a9e0aa 100644
--- a/core/java/android/content/res/Configuration.java
+++ b/core/java/android/content/res/Configuration.java
@@ -45,6 +45,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.TestApi;
+import android.app.UiModeManager;
 import android.app.WindowConfiguration;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.LocaleProto;
@@ -1975,6 +1976,15 @@
         readFromParcel(source);
     }
 
+
+    /**
+     * Retuns whether the configuration is in night mode
+     * @return true if night mode is active and false otherwise
+     */
+    public boolean isNightModeActive() {
+        return (uiMode & UI_MODE_NIGHT_MASK) == UI_MODE_NIGHT_YES;
+    }
+
     public int compareTo(Configuration that) {
         int n;
         float a = this.fontScale;
diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java
index 471e83c..cb809da 100644
--- a/core/java/android/content/res/Resources.java
+++ b/core/java/android/content/res/Resources.java
@@ -62,6 +62,7 @@
 import android.view.ViewDebug;
 import android.view.ViewHierarchyEncoder;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.GrowingArrayUtils;
@@ -112,7 +113,7 @@
     static final String TAG = "Resources";
 
     private static final Object sSync = new Object();
-    private final Object mLock = new Object();
+    private final Object mUpdateLock = new Object();
 
     // Used by BridgeResources in layoutlib
     @UnsupportedAppUsage
@@ -139,6 +140,7 @@
     @UnsupportedAppUsage
     final ClassLoader mClassLoader;
 
+    @GuardedBy("mUpdateLock")
     private UpdateCallbacks mCallbacks = null;
 
     /**
@@ -2375,6 +2377,7 @@
      *
      * <p>Loaders are listed in increasing precedence order. A loader will override the resources
      * and assets of loaders listed before itself.
+     * @hide
      */
     @NonNull
     public List<ResourcesLoader> getLoaders() {
@@ -2382,87 +2385,81 @@
     }
 
     /**
-     * Appends a loader to the end of the loader list. If the loader is already present in the
-     * loader list, the list will not be modified.
-     *
-     * @param loader the loader to add
-     */
-    public void addLoader(@NonNull ResourcesLoader loader) {
-        synchronized (mLock) {
-            checkCallbacksRegistered();
-
-            final List<ResourcesLoader> loaders = new ArrayList<>(
-                    mResourcesImpl.getAssets().getLoaders());
-            if (loaders.contains(loader)) {
-                return;
-            }
-
-            loaders.add(loader);
-            mCallbacks.onLoadersChanged(this, loaders);
-            loader.registerOnProvidersChangedCallback(this, mCallbacks);
-        }
-    }
-
-    /**
-     * Removes a loader from the loaders. If the loader is not present in the loader list, the list
+     * Adds a loader to the list of loaders. If the loader is already present in the list, the list
      * will not be modified.
      *
-     * @param loader the loader to remove
+     * @param loaders the loaders to add
      */
-    public void removeLoader(@NonNull ResourcesLoader loader) {
-        synchronized (mLock) {
+    public void addLoaders(@NonNull ResourcesLoader... loaders) {
+        synchronized (mUpdateLock) {
             checkCallbacksRegistered();
+            final List<ResourcesLoader> newLoaders =
+                    new ArrayList<>(mResourcesImpl.getAssets().getLoaders());
+            final ArraySet<ResourcesLoader> loaderSet = new ArraySet<>(newLoaders);
 
-            final List<ResourcesLoader> loaders = new ArrayList<>(
-                    mResourcesImpl.getAssets().getLoaders());
-            if (!loaders.remove(loader)) {
+            for (int i = 0; i < loaders.length; i++) {
+                final ResourcesLoader loader = loaders[i];
+                if (!loaderSet.contains(loader)) {
+                    newLoaders.add(loader);
+                }
+            }
+
+            if (loaderSet.size() == newLoaders.size()) {
                 return;
             }
 
-            mCallbacks.onLoadersChanged(this, loaders);
-            loader.unregisterOnProvidersChangedCallback(this);
+            mCallbacks.onLoadersChanged(this, newLoaders);
+            for (int i = loaderSet.size(), n = newLoaders.size(); i < n; i++) {
+                newLoaders.get(i).registerOnProvidersChangedCallback(this, mCallbacks);
+            }
         }
     }
 
     /**
-     * Sets the list of loaders.
+     * Removes loaders from the list of loaders. If the loader is not present in the list, the list
+     * will not be modified.
      *
-     * @param loaders the new loaders
+     * @param loaders the loaders to remove
      */
-    public void setLoaders(@NonNull List<ResourcesLoader> loaders) {
-        synchronized (mLock) {
+    public void removeLoaders(@NonNull ResourcesLoader... loaders) {
+        synchronized (mUpdateLock) {
             checkCallbacksRegistered();
-
+            final ArraySet<ResourcesLoader> removedLoaders = new ArraySet<>(loaders);
+            final List<ResourcesLoader> newLoaders = new ArrayList<>();
             final List<ResourcesLoader> oldLoaders = mResourcesImpl.getAssets().getLoaders();
-            int index = 0;
-            boolean modified = loaders.size() != oldLoaders.size();
-            final ArraySet<ResourcesLoader> seenLoaders = new ArraySet<>();
-            for (final ResourcesLoader loader : loaders) {
-                if (!seenLoaders.add(loader)) {
-                    throw new IllegalArgumentException("Loader " + loader + " present twice");
-                }
 
-                if (!modified && oldLoaders.get(index++) != loader) {
-                    modified = true;
+            for (int i = 0, n = oldLoaders.size(); i < n; i++) {
+                final ResourcesLoader loader = oldLoaders.get(i);
+                if (!removedLoaders.contains(loader)) {
+                    newLoaders.add(loader);
                 }
             }
 
-            if (!modified) {
+            if (oldLoaders.size() == newLoaders.size()) {
                 return;
             }
 
-            mCallbacks.onLoadersChanged(this, loaders);
-            for (int i = 0, n = oldLoaders.size(); i < n; i++) {
-                oldLoaders.get(i).unregisterOnProvidersChangedCallback(this);
-            }
-            for (ResourcesLoader newLoader : loaders) {
-                newLoader.registerOnProvidersChangedCallback(this, mCallbacks);
+            mCallbacks.onLoadersChanged(this, newLoaders);
+            for (int i = 0; i < loaders.length; i++) {
+                loaders[i].unregisterOnProvidersChangedCallback(this);
             }
         }
     }
 
-    /** Removes all {@link ResourcesLoader ResourcesLoader(s)}. */
+    /**
+     * Removes all {@link ResourcesLoader ResourcesLoader(s)}.
+     * @hide
+     */
+    @VisibleForTesting
     public void clearLoaders() {
-        setLoaders(Collections.emptyList());
+        synchronized (mUpdateLock) {
+            checkCallbacksRegistered();
+            final List<ResourcesLoader> newLoaders = Collections.emptyList();
+            final List<ResourcesLoader> oldLoaders = mResourcesImpl.getAssets().getLoaders();
+            mCallbacks.onLoadersChanged(this, newLoaders);
+            for (ResourcesLoader loader : oldLoaders) {
+                loader.unregisterOnProvidersChangedCallback(this);
+            }
+        }
     }
 }
diff --git a/core/java/android/content/res/loader/ResourcesLoader.java b/core/java/android/content/res/loader/ResourcesLoader.java
index 69dacee..58fec60 100644
--- a/core/java/android/content/res/loader/ResourcesLoader.java
+++ b/core/java/android/content/res/loader/ResourcesLoader.java
@@ -40,8 +40,8 @@
  * of {@link ResourcesProvider ResourcesProvider(s)} a loader contains propagates to all Resources
  * objects that use the loader.
  *
- * <p>Loaders retrieved with {@link Resources#getLoaders()} are listed in increasing precedence
- * order. A loader will override the resources and assets of loaders listed before itself.
+ * <p>Loaders must be added to Resources objects in increasing precedence order. A loader will
+ * override the resources and assets of loaders added before itself.
  *
  * <p>Providers retrieved with {@link #getProviders()} are listed in increasing precedence order. A
  * provider will override the resources and assets of providers listed before itself.
diff --git a/core/java/android/content/rollback/RollbackManager.java b/core/java/android/content/rollback/RollbackManager.java
index 73b8a48..7ebeb21 100644
--- a/core/java/android/content/rollback/RollbackManager.java
+++ b/core/java/android/content/rollback/RollbackManager.java
@@ -216,6 +216,10 @@
      * across device reboot, by simulating what happens on reboot without
      * actually rebooting the device.
      *
+     * Note rollbacks in the process of enabling will be lost after calling
+     * this method since they are not persisted yet. Don't call this method
+     * in the middle of the install process.
+     *
      * @throws SecurityException if the caller does not have appropriate permissions.
      *
      * @hide
diff --git a/core/java/android/hardware/biometrics/BiometricConstants.java b/core/java/android/hardware/biometrics/BiometricConstants.java
index 5a13651..add67aa 100644
--- a/core/java/android/hardware/biometrics/BiometricConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricConstants.java
@@ -132,6 +132,14 @@
     int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
 
     /**
+     * A security vulnerability has been discovered and the sensor is unavailable until a
+     * security update has addressed this issue. This error can be received if for example,
+     * authentication was requested with {@link Authenticators#BIOMETRIC_STRONG}, but the
+     * sensor's strength can currently only meet {@link Authenticators#BIOMETRIC_WEAK}.
+     */
+    int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15;
+
+    /**
      * This constant is only used by SystemUI. It notifies SystemUI that authentication was paused
      * because the authentication attempt was unsuccessful.
      * @hide
diff --git a/core/java/android/hardware/biometrics/BiometricFaceConstants.java b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
index bae0fd3..eafcf52 100644
--- a/core/java/android/hardware/biometrics/BiometricFaceConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFaceConstants.java
@@ -17,6 +17,7 @@
 package android.hardware.biometrics;
 
 import android.app.KeyguardManager;
+import android.hardware.biometrics.BiometricManager.Authenticators;
 import android.hardware.face.FaceManager;
 
 /**
@@ -36,12 +37,12 @@
      * authentication. Note this is to accommodate people who have limited
      * vision.
      */
-    public static final int FEATURE_REQUIRE_ATTENTION = 1;
+    int FEATURE_REQUIRE_ATTENTION = 1;
     /**
      * Require a diverse set of poses during enrollment. Note this is to
      * accommodate people with limited mobility.
      */
-    public static final int FEATURE_REQUIRE_REQUIRE_DIVERSITY = 2;
+    int FEATURE_REQUIRE_REQUIRE_DIVERSITY = 2;
 
     //
     // Error messages from face authentication hardware during initialization, enrollment,
@@ -50,32 +51,32 @@
     /**
      * The hardware is unavailable. Try again later.
      */
-    public static final int FACE_ERROR_HW_UNAVAILABLE = 1;
+    int FACE_ERROR_HW_UNAVAILABLE = 1;
 
     /**
      * Error state returned when the sensor was unable to process the current image.
      */
-    public static final int FACE_ERROR_UNABLE_TO_PROCESS = 2;
+    int FACE_ERROR_UNABLE_TO_PROCESS = 2;
 
     /**
      * Error state returned when the current request has been running too long. This is intended to
      * prevent programs from waiting for the face authentication sensor indefinitely. The timeout is
      * platform and sensor-specific, but is generally on the order of 30 seconds.
      */
-    public static final int FACE_ERROR_TIMEOUT = 3;
+    int FACE_ERROR_TIMEOUT = 3;
 
     /**
      * Error state returned for operations like enrollment; the operation cannot be completed
      * because there's not enough storage remaining to complete the operation.
      */
-    public static final int FACE_ERROR_NO_SPACE = 4;
+    int FACE_ERROR_NO_SPACE = 4;
 
     /**
      * The operation was canceled because the face authentication sensor is unavailable. For
      * example, this may happen when the user is switched, the device is locked or another pending
      * operation prevents or disables it.
      */
-    public static final int FACE_ERROR_CANCELED = 5;
+    int FACE_ERROR_CANCELED = 5;
 
     /**
      * The {@link FaceManager#remove} call failed. Typically this will happen when the
@@ -83,13 +84,13 @@
      *
      * @hide
      */
-    public static final int FACE_ERROR_UNABLE_TO_REMOVE = 6;
+    int FACE_ERROR_UNABLE_TO_REMOVE = 6;
 
     /**
      * The operation was canceled because the API is locked out due to too many attempts.
      * This occurs after 5 failed attempts, and lasts for 30 seconds.
      */
-    public static final int FACE_ERROR_LOCKOUT = 7;
+    int FACE_ERROR_LOCKOUT = 7;
 
     /**
      * Hardware vendors may extend this list if there are conditions that do not fall under one of
@@ -99,52 +100,62 @@
      * expected to show the error message string if they happen, but are advised not to rely on the
      * message id since they will be device and vendor-specific
      */
-    public static final int FACE_ERROR_VENDOR = 8;
+    int FACE_ERROR_VENDOR = 8;
 
     /**
      * The operation was canceled because FACE_ERROR_LOCKOUT occurred too many times.
      * Face authentication is disabled until the user unlocks with strong authentication
      * (PIN/Pattern/Password)
      */
-    public static final int FACE_ERROR_LOCKOUT_PERMANENT = 9;
+    int FACE_ERROR_LOCKOUT_PERMANENT = 9;
 
     /**
      * The user canceled the operation. Upon receiving this, applications should use alternate
      * authentication (e.g. a password). The application should also provide the means to return
      * to face authentication, such as a "use face authentication" button.
      */
-    public static final int FACE_ERROR_USER_CANCELED = 10;
+    int FACE_ERROR_USER_CANCELED = 10;
 
     /**
      * The user does not have a face enrolled.
      */
-    public static final int FACE_ERROR_NOT_ENROLLED = 11;
+    int FACE_ERROR_NOT_ENROLLED = 11;
 
     /**
      * The device does not have a face sensor. This message will propagate if the calling app
      * ignores the result from PackageManager.hasFeature(FEATURE_FACE) and calls
      * this API anyway. Apps should always check for the feature before calling this API.
      */
-    public static final int FACE_ERROR_HW_NOT_PRESENT = 12;
+    int FACE_ERROR_HW_NOT_PRESENT = 12;
 
     /**
      * The user pressed the negative button. This is a placeholder that is currently only used
      * by the support library.
+     *
      * @hide
      */
-    public static final int FACE_ERROR_NEGATIVE_BUTTON = 13;
+    int FACE_ERROR_NEGATIVE_BUTTON = 13;
 
     /**
      * The device does not have pin, pattern, or password set up. See
      * {@link BiometricPrompt.Builder#setDeviceCredentialAllowed(boolean)} and
      * {@link KeyguardManager#isDeviceSecure()}
      */
-    public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+    int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+
+    /**
+     * A security vulnerability has been discovered and the sensor is unavailable until a
+     * security update has addressed this issue. This error can be received if for example,
+     * authentication was requested with {@link Authenticators#BIOMETRIC_STRONG}, but the
+     * sensor's strength can currently only meet {@link Authenticators#BIOMETRIC_WEAK}.
+     * @hide
+     */
+    int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15;
 
     /**
      * @hide
      */
-    public static final int FACE_ERROR_VENDOR_BASE = 1000;
+    int FACE_ERROR_VENDOR_BASE = 1000;
 
     //
     // Image acquisition messages. These will not be sent to the user, since they conflict with
@@ -154,13 +165,13 @@
     /**
      * The image acquired was good.
      */
-    public static final int FACE_ACQUIRED_GOOD = 0;
+    int FACE_ACQUIRED_GOOD = 0;
 
     /**
      * The face image was not good enough to process due to a detected condition.
      * (See {@link #FACE_ACQUIRED_TOO_BRIGHT or @link #FACE_ACQUIRED_TOO_DARK}).
      */
-    public static final int FACE_ACQUIRED_INSUFFICIENT = 1;
+    int FACE_ACQUIRED_INSUFFICIENT = 1;
 
     /**
      * The face image was too bright due to too much ambient light.
@@ -169,7 +180,7 @@
      * The user is expected to take action to retry in better lighting conditions
      * when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_BRIGHT = 2;
+    int FACE_ACQUIRED_TOO_BRIGHT = 2;
 
     /**
      * The face image was too dark due to illumination light obscured.
@@ -178,65 +189,65 @@
      * The user is expected to take action to retry in better lighting conditions
      * when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_DARK = 3;
+    int FACE_ACQUIRED_TOO_DARK = 3;
 
     /**
      * The detected face is too close to the sensor, and the image can't be processed.
      * The user should be informed to move farther from the sensor when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_CLOSE = 4;
+    int FACE_ACQUIRED_TOO_CLOSE = 4;
 
     /**
      * The detected face is too small, as the user might be too far from the sensor.
      * The user should be informed to move closer to the sensor when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_FAR = 5;
+    int FACE_ACQUIRED_TOO_FAR = 5;
 
     /**
      * Only the upper part of the face was detected. The sensor field of view is too high.
      * The user should be informed to move up with respect to the sensor when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_HIGH = 6;
+    int FACE_ACQUIRED_TOO_HIGH = 6;
 
     /**
      * Only the lower part of the face was detected. The sensor field of view is too low.
      * The user should be informed to move down with respect to the sensor when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_LOW = 7;
+    int FACE_ACQUIRED_TOO_LOW = 7;
 
     /**
      * Only the right part of the face was detected. The sensor field of view is too far right.
      * The user should be informed to move to the right with respect to the sensor
      * when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_RIGHT = 8;
+    int FACE_ACQUIRED_TOO_RIGHT = 8;
 
     /**
      * Only the left part of the face was detected. The sensor field of view is too far left.
      * The user should be informed to move to the left with respect to the sensor
      * when this is returned.
      */
-    public static final int FACE_ACQUIRED_TOO_LEFT = 9;
+    int FACE_ACQUIRED_TOO_LEFT = 9;
 
     /**
      * The user's eyes have strayed away from the sensor. If this message is sent, the user should
      * be informed to look at the device. If the user can't be found in the frame, one of the other
      * acquisition messages should be sent, e.g. FACE_ACQUIRED_NOT_DETECTED.
      */
-    public static final int FACE_ACQUIRED_POOR_GAZE = 10;
+    int FACE_ACQUIRED_POOR_GAZE = 10;
 
     /**
      * No face was detected in front of the sensor.
      * The user should be informed to point the sensor to a face when this is returned.
      */
-    public static final int FACE_ACQUIRED_NOT_DETECTED = 11;
+    int FACE_ACQUIRED_NOT_DETECTED = 11;
 
     /**
      * Too much motion was detected.
      * The user should be informed to keep their face steady relative to the
      * sensor.
      */
-    public static final int FACE_ACQUIRED_TOO_MUCH_MOTION = 12;
+    int FACE_ACQUIRED_TOO_MUCH_MOTION = 12;
 
     /**
      * The sensor needs to be re-calibrated. This is an unexpected condition, and should only be
@@ -244,20 +255,20 @@
      * requires user intervention, e.g. re-enrolling. The expected response to this message is to
      * direct the user to re-enroll.
      */
-    public static final int FACE_ACQUIRED_RECALIBRATE = 13;
+    int FACE_ACQUIRED_RECALIBRATE = 13;
 
     /**
      * The face is too different from a previous acquisition. This condition
      * only applies to enrollment. This can happen if the user passes the
      * device to someone else in the middle of enrollment.
      */
-    public static final int FACE_ACQUIRED_TOO_DIFFERENT = 14;
+    int FACE_ACQUIRED_TOO_DIFFERENT = 14;
 
     /**
      * The face is too similar to a previous acquisition. This condition only
      * applies to enrollment. The user should change their pose.
      */
-    public static final int FACE_ACQUIRED_TOO_SIMILAR = 15;
+    int FACE_ACQUIRED_TOO_SIMILAR = 15;
 
     /**
      * The magnitude of the pan angle of the user’s face with respect to the sensor’s
@@ -269,7 +280,7 @@
      *
      * The user should be informed to look more directly at the camera.
      */
-    public static final int FACE_ACQUIRED_PAN_TOO_EXTREME = 16;
+    int FACE_ACQUIRED_PAN_TOO_EXTREME = 16;
 
     /**
      * The magnitude of the tilt angle of the user’s face with respect to the sensor’s
@@ -280,7 +291,7 @@
      *
      * The user should be informed to look more directly at the camera.
      */
-    public static final int FACE_ACQUIRED_TILT_TOO_EXTREME = 17;
+    int FACE_ACQUIRED_TILT_TOO_EXTREME = 17;
 
     /**
      * The magnitude of the roll angle of the user’s face with respect to the sensor’s
@@ -292,7 +303,7 @@
      *
      * The user should be informed to look more directly at the camera.
      */
-    public static final int FACE_ACQUIRED_ROLL_TOO_EXTREME = 18;
+    int FACE_ACQUIRED_ROLL_TOO_EXTREME = 18;
 
     /**
      * The user’s face has been obscured by some object.
@@ -300,7 +311,7 @@
      * The user should be informed to remove any objects from the line of sight from
      * the sensor to the user’s face.
      */
-    public static final int FACE_ACQUIRED_FACE_OBSCURED = 19;
+    int FACE_ACQUIRED_FACE_OBSCURED = 19;
 
     /**
      * This message represents the earliest message sent at the beginning of the authentication
@@ -310,12 +321,12 @@
      * The framework will measure latency based on the time between the last START message and the
      * onAuthenticated callback.
      */
-    public static final int FACE_ACQUIRED_START = 20;
+    int FACE_ACQUIRED_START = 20;
 
     /**
      * The sensor is dirty. The user should be informed to clean the sensor.
      */
-    public static final int FACE_ACQUIRED_SENSOR_DIRTY = 21;
+    int FACE_ACQUIRED_SENSOR_DIRTY = 21;
 
     /**
      * Hardware vendors may extend this list if there are conditions that do not fall under one of
@@ -323,10 +334,10 @@
      *
      * @hide
      */
-    public static final int FACE_ACQUIRED_VENDOR = 22;
+    int FACE_ACQUIRED_VENDOR = 22;
 
     /**
      * @hide
      */
-    public static final int FACE_ACQUIRED_VENDOR_BASE = 1000;
+    int FACE_ACQUIRED_VENDOR_BASE = 1000;
 }
diff --git a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
index 5c74456..46e8cc0 100644
--- a/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
+++ b/core/java/android/hardware/biometrics/BiometricFingerprintConstants.java
@@ -18,6 +18,7 @@
 
 import android.app.KeyguardManager;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.hardware.biometrics.BiometricManager.Authenticators;
 import android.hardware.fingerprint.FingerprintManager;
 
 /**
@@ -37,32 +38,32 @@
     /**
      * The hardware is unavailable. Try again later.
      */
-    public static final int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1;
+    int FINGERPRINT_ERROR_HW_UNAVAILABLE = 1;
 
     /**
      * Error state returned when the sensor was unable to process the current image.
      */
-    public static final int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2;
+    int FINGERPRINT_ERROR_UNABLE_TO_PROCESS = 2;
 
     /**
      * Error state returned when the current request has been running too long. This is intended to
      * prevent programs from waiting for the fingerprint sensor indefinitely. The timeout is
      * platform and sensor-specific, but is generally on the order of 30 seconds.
      */
-    public static final int FINGERPRINT_ERROR_TIMEOUT = 3;
+    int FINGERPRINT_ERROR_TIMEOUT = 3;
 
     /**
      * Error state returned for operations like enrollment; the operation cannot be completed
      * because there's not enough storage remaining to complete the operation.
      */
-    public static final int FINGERPRINT_ERROR_NO_SPACE = 4;
+    int FINGERPRINT_ERROR_NO_SPACE = 4;
 
     /**
      * The operation was canceled because the fingerprint sensor is unavailable. For example,
      * this may happen when the user is switched, the device is locked or another pending operation
      * prevents or disables it.
      */
-    public static final int FINGERPRINT_ERROR_CANCELED = 5;
+    int FINGERPRINT_ERROR_CANCELED = 5;
 
     /**
      * The {@link FingerprintManager#remove} call failed. Typically this will happen when the
@@ -70,13 +71,13 @@
      *
      * @hide
      */
-    public static final int FINGERPRINT_ERROR_UNABLE_TO_REMOVE = 6;
+    int FINGERPRINT_ERROR_UNABLE_TO_REMOVE = 6;
 
     /**
      * The operation was canceled because the API is locked out due to too many attempts.
      * This occurs after 5 failed attempts, and lasts for 30 seconds.
      */
-    public static final int FINGERPRINT_ERROR_LOCKOUT = 7;
+    int FINGERPRINT_ERROR_LOCKOUT = 7;
 
     /**
      * Hardware vendors may extend this list if there are conditions that do not fall under one of
@@ -86,52 +87,63 @@
      * expected to show the error message string if they happen, but are advised not to rely on the
      * message id since they will be device and vendor-specific
      */
-    public static final int FINGERPRINT_ERROR_VENDOR = 8;
+    int FINGERPRINT_ERROR_VENDOR = 8;
 
     /**
      * The operation was canceled because FINGERPRINT_ERROR_LOCKOUT occurred too many times.
      * Fingerprint authentication is disabled until the user unlocks with strong authentication
      * (PIN/Pattern/Password)
      */
-    public static final int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9;
+    int FINGERPRINT_ERROR_LOCKOUT_PERMANENT = 9;
 
     /**
      * The user canceled the operation. Upon receiving this, applications should use alternate
      * authentication (e.g. a password). The application should also provide the means to return
      * to fingerprint authentication, such as a "use fingerprint" button.
      */
-    public static final int FINGERPRINT_ERROR_USER_CANCELED = 10;
+    int FINGERPRINT_ERROR_USER_CANCELED = 10;
 
     /**
      * The user does not have any fingerprints enrolled.
      */
-    public static final int FINGERPRINT_ERROR_NO_FINGERPRINTS = 11;
+    int FINGERPRINT_ERROR_NO_FINGERPRINTS = 11;
 
     /**
      * The device does not have a fingerprint sensor.
      */
-    public static final int FINGERPRINT_ERROR_HW_NOT_PRESENT = 12;
+    int FINGERPRINT_ERROR_HW_NOT_PRESENT = 12;
 
     /**
      * The user pressed the negative button. This is a placeholder that is currently only used
      * by the support library.
+     *
      * @hide
      */
-    public static final int FINGERPRINT_ERROR_NEGATIVE_BUTTON = 13;
+    int FINGERPRINT_ERROR_NEGATIVE_BUTTON = 13;
 
     /**
      * The device does not have pin, pattern, or password set up. See
      * {@link BiometricPrompt.Builder#setDeviceCredentialAllowed(boolean)} and
      * {@link KeyguardManager#isDeviceSecure()}
+     *
      * @hide
      */
-    public static final int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+    int BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL = 14;
+
+    /**
+     * A security vulnerability has been discovered and the sensor is unavailable until a
+     * security update has addressed this issue. This error can be received if for example,
+     * authentication was requested with {@link Authenticators#BIOMETRIC_STRONG}, but the
+     * sensor's strength can currently only meet {@link Authenticators#BIOMETRIC_WEAK}.
+     * @hide
+     */
+    public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED = 15;
 
     /**
      * @hide
      */
     @UnsupportedAppUsage
-    public static final int FINGERPRINT_ERROR_VENDOR_BASE = 1000;
+    int FINGERPRINT_ERROR_VENDOR_BASE = 1000;
 
     //
     // Image acquisition messages. Must agree with those in fingerprint.h
@@ -140,19 +152,19 @@
     /**
      * The image acquired was good.
      */
-    public static final int FINGERPRINT_ACQUIRED_GOOD = 0;
+    int FINGERPRINT_ACQUIRED_GOOD = 0;
 
     /**
      * Only a partial fingerprint image was detected. During enrollment, the user should be
      * informed on what needs to happen to resolve this problem, e.g. "press firmly on sensor."
      */
-    public static final int FINGERPRINT_ACQUIRED_PARTIAL = 1;
+    int FINGERPRINT_ACQUIRED_PARTIAL = 1;
 
     /**
      * The fingerprint image was too noisy to process due to a detected condition (i.e. dry skin) or
      * a possibly dirty sensor (See {@link #FINGERPRINT_ACQUIRED_IMAGER_DIRTY}).
      */
-    public static final int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2;
+    int FINGERPRINT_ACQUIRED_INSUFFICIENT = 2;
 
     /**
      * The fingerprint image was too noisy due to suspected or detected dirt on the sensor.
@@ -161,13 +173,13 @@
      * (stuck pixels, swaths, etc.). The user is expected to take action to clean the sensor
      * when this is returned.
      */
-    public static final int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3;
+    int FINGERPRINT_ACQUIRED_IMAGER_DIRTY = 3;
 
     /**
      * The fingerprint image was unreadable due to lack of motion. This is most appropriate for
      * linear array sensors that require a swipe motion.
      */
-    public static final int FINGERPRINT_ACQUIRED_TOO_SLOW = 4;
+    int FINGERPRINT_ACQUIRED_TOO_SLOW = 4;
 
     /**
      * The fingerprint image was incomplete due to quick motion. While mostly appropriate for
@@ -175,16 +187,29 @@
      * The user should be asked to move the finger slower (linear) or leave the finger on the sensor
      * longer.
      */
-    public static final int FINGERPRINT_ACQUIRED_TOO_FAST = 5;
+    int FINGERPRINT_ACQUIRED_TOO_FAST = 5;
 
     /**
      * Hardware vendors may extend this list if there are conditions that do not fall under one of
      * the above categories. Vendors are responsible for providing error strings for these errors.
+     *
      * @hide
      */
-    public static final int FINGERPRINT_ACQUIRED_VENDOR = 6;
+    int FINGERPRINT_ACQUIRED_VENDOR = 6;
+
+    /**
+     * This message represents the earliest message sent at the beginning of the authentication
+     * pipeline. It is expected to be used to measure latency. Note this should be sent whenever
+     * authentication is restarted.
+     * The framework will measure latency based on the time between the last START message and the
+     * onAuthenticated callback.
+     *
+     * @hide
+     */
+    int FINGERPRINT_ACQUIRED_START = 7;
+
     /**
      * @hide
      */
-    public static final int FINGERPRINT_ACQUIRED_VENDOR_BASE = 1000;
+    int FINGERPRINT_ACQUIRED_VENDOR_BASE = 1000;
 }
diff --git a/core/java/android/hardware/biometrics/BiometricManager.java b/core/java/android/hardware/biometrics/BiometricManager.java
index 4c114fd..7d66cae 100644
--- a/core/java/android/hardware/biometrics/BiometricManager.java
+++ b/core/java/android/hardware/biometrics/BiometricManager.java
@@ -18,6 +18,7 @@
 
 import static android.Manifest.permission.USE_BIOMETRIC;
 import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
+import static android.Manifest.permission.WRITE_DEVICE_CONFIG;
 
 import android.annotation.IntDef;
 import android.annotation.RequiresPermission;
@@ -60,10 +61,20 @@
     public static final int BIOMETRIC_ERROR_NO_HARDWARE =
             BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT;
 
+    /**
+     * A security vulnerability has been discovered and the sensor is unavailable until a
+     * security update has addressed this issue. This error can be received if for example,
+     * authentication was requested with {@link Authenticators#BIOMETRIC_STRONG}, but the
+     * sensor's strength can currently only meet {@link Authenticators#BIOMETRIC_WEAK}.
+     */
+    public static final int BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED =
+            BiometricConstants.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED;
+
     @IntDef({BIOMETRIC_SUCCESS,
             BIOMETRIC_ERROR_HW_UNAVAILABLE,
             BIOMETRIC_ERROR_NONE_ENROLLED,
-            BIOMETRIC_ERROR_NO_HARDWARE})
+            BIOMETRIC_ERROR_NO_HARDWARE,
+            BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED})
     @interface BiometricError {}
 
     /**
@@ -87,9 +98,15 @@
 
         /**
          * Empty set with no authenticators specified.
+         *
+         * <p>This constant is intended for use by {@link android.provider.DeviceConfig} to adjust
+         * the reported strength of a biometric sensor. It is not a valid parameter for any of the
+         * public {@link android.hardware.biometrics} APIs.
+         *
          * @hide
          */
         @SystemApi
+        @RequiresPermission(WRITE_DEVICE_CONFIG)
         int EMPTY_SET = 0x0000;
 
         /**
@@ -115,12 +132,16 @@
 
         /**
          * Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the
-         * requirements for <strong>Convenience</strong>, as defined by the Android CDD. This
-         * is not a valid parameter to any of the {@link android.hardware.biometrics} APIs, since
-         * the CDD allows only {@link #BIOMETRIC_WEAK} and stronger authenticators to participate.
+         * requirements for <strong>Convenience</strong>, as defined by the Android CDD.
+         *
+         * <p>This constant is intended for use by {@link android.provider.DeviceConfig} to adjust
+         * the reported strength of a biometric sensor. It is not a valid parameter for any of the
+         * public {@link android.hardware.biometrics} APIs.
+         *
          * @hide
          */
         @SystemApi
+        @RequiresPermission(WRITE_DEVICE_CONFIG)
         int BIOMETRIC_CONVENIENCE = 0x0FFF;
 
         /**
diff --git a/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java b/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java
new file mode 100644
index 0000000..5544eae
--- /dev/null
+++ b/core/java/android/hardware/biometrics/BiometricNativeHandleUtils.java
@@ -0,0 +1,79 @@
+/*
+ * 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 android.hardware.biometrics;
+
+import android.os.NativeHandle;
+import android.os.ParcelFileDescriptor;
+
+import java.io.IOException;
+
+/**
+ * A class that contains utilities for IBiometricNativeHandle.
+ *
+ * @hide
+ */
+public final class BiometricNativeHandleUtils {
+
+    private BiometricNativeHandleUtils() {
+    }
+
+    /**
+     * Converts a {@link NativeHandle} into an {@link IBiometricNativeHandle} by duplicating the
+     * underlying file descriptors.
+     *
+     * Both the original and new handle must be closed after use.
+     *
+     * @param h {@link NativeHandle}. Usually used to identify a WindowManager window. Can be null.
+     * @return A {@link IBiometricNativeHandle} representation of {@code h}. Will be null if
+     * {@code h} or its raw file descriptors are null.
+     */
+    public static IBiometricNativeHandle dup(NativeHandle h) {
+        IBiometricNativeHandle handle = null;
+        if (h != null && h.getFileDescriptors() != null && h.getInts() != null) {
+            handle = new IBiometricNativeHandle();
+            handle.ints = h.getInts().clone();
+            handle.fds = new ParcelFileDescriptor[h.getFileDescriptors().length];
+            for (int i = 0; i < h.getFileDescriptors().length; ++i) {
+                try {
+                    handle.fds[i] = ParcelFileDescriptor.dup(h.getFileDescriptors()[i]);
+                } catch (IOException e) {
+                    return null;
+                }
+            }
+        }
+        return handle;
+    }
+
+    /**
+     * Closes the handle's file descriptors.
+     *
+     * @param h {@link IBiometricNativeHandle} handle.
+     */
+    public static void close(IBiometricNativeHandle h) {
+        if (h != null) {
+            for (ParcelFileDescriptor fd : h.fds) {
+                if (fd != null) {
+                    try {
+                        fd.close();
+                    } catch (IOException e) {
+                        // do nothing.
+                    }
+                }
+            }
+        }
+    }
+}
diff --git a/core/java/android/hardware/biometrics/BiometricPrompt.java b/core/java/android/hardware/biometrics/BiometricPrompt.java
index c686624..ef28e6c 100644
--- a/core/java/android/hardware/biometrics/BiometricPrompt.java
+++ b/core/java/android/hardware/biometrics/BiometricPrompt.java
@@ -25,7 +25,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
-import android.app.KeyguardManager;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.hardware.face.FaceManager;
@@ -280,12 +279,12 @@
         }
 
         /**
-         * Optional: If enabled, the user will first be prompted to authenticate with biometrics,
-         * but also given the option to authenticate with their device PIN, pattern, or password.
-         * Developers should first check {@link KeyguardManager#isDeviceSecure()} before enabling.
-         * If the device is not secure, {@link BiometricPrompt#BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL}
-         * will be given to {@link AuthenticationCallback#onAuthenticationError(int, CharSequence)}.
-         * Defaults to false.
+         * Optional: If enabled, the user will be given the option to authenticate with their device
+         * PIN, pattern, or password. Developers should first check {@link
+         * BiometricManager#canAuthenticate(int)} for {@link Authenticators#DEVICE_CREDENTIAL}
+         * before enabling. If the device is not secured with a credential,
+         * {@link AuthenticationCallback#onAuthenticationError(int, CharSequence)} will be invoked
+         * with {@link BiometricPrompt#BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL}. Defaults to false.
          *
          * <p>Note that enabling this option replaces the negative button on the prompt with one
          * that allows the user to authenticate with their device credential, making it an error to
@@ -388,7 +387,7 @@
 
     private final IBinder mToken = new Binder();
     private final Context mContext;
-    private final IBiometricService mService;
+    private final IAuthService mService;
     private final Bundle mBundle;
     private final ButtonInfo mPositiveButtonInfo;
     private final ButtonInfo mNegativeButtonInfo;
@@ -466,8 +465,8 @@
         mBundle = bundle;
         mPositiveButtonInfo = positiveButtonInfo;
         mNegativeButtonInfo = negativeButtonInfo;
-        mService = IBiometricService.Stub.asInterface(
-                ServiceManager.getService(Context.BIOMETRIC_SERVICE));
+        mService = IAuthService.Stub.asInterface(
+                ServiceManager.getService(Context.AUTH_SERVICE));
     }
 
     /**
@@ -751,13 +750,13 @@
      * <p>Per the Android CDD, only biometric authenticators that meet or exceed the requirements
      * for <strong>Strong</strong> are permitted to integrate with Keystore to perform related
      * cryptographic operations. Therefore, it is an error to call this method after explicitly
-     * calling {@link Builder#setAllowedAuthenticators(int)} with any value other than
+     * calling {@link Builder#setAllowedAuthenticators(int)} with any biometric strength other than
      * {@link Authenticators#BIOMETRIC_STRONG}.
      *
-     * @throws IllegalArgumentException If any of the arguments are null, if
-     * {@link Builder#setDeviceCredentialAllowed(boolean)} was explicitly set to true, or if
-     * {@link Builder#setAllowedAuthenticators(int)} was explicitly called with any value other than
-     * {@link Authenticators#BIOMETRIC_STRONG}.
+     * @throws IllegalArgumentException If any argument is null, or if the allowed biometric
+     * authenticator strength is explicitly set to {@link Authenticators#BIOMETRIC_WEAK}. Prior to
+     * {@link android.os.Build.VERSION_CODES#R}, this exception is also thrown if
+     * {@link Builder#setDeviceCredentialAllowed(boolean)} was explicitly set to true.
      *
      * @param crypto A cryptographic operation to be unlocked after successful authentication.
      * @param cancel An object that can be used to cancel authentication.
@@ -782,16 +781,11 @@
             throw new IllegalArgumentException("Must supply a callback");
         }
 
-        @Authenticators.Types int authenticators = mBundle.getInt(
+        // Disallow explicitly setting any non-Strong biometric authenticator types.
+        final @Authenticators.Types int authenticators = mBundle.getInt(
                 KEY_AUTHENTICATORS_ALLOWED, Authenticators.BIOMETRIC_STRONG);
-
-        if (mBundle.getBoolean(KEY_ALLOW_DEVICE_CREDENTIAL)
-                || (authenticators & Authenticators.DEVICE_CREDENTIAL) != 0) {
-            throw new IllegalArgumentException("Device credential not supported with crypto");
-        }
-
-        // Disallow any non-Strong biometric authenticator types.
-        if ((authenticators & ~Authenticators.BIOMETRIC_STRONG) != 0) {
+        final int biometricStrength = authenticators & Authenticators.BIOMETRIC_WEAK;
+        if ((biometricStrength & ~Authenticators.BIOMETRIC_STRONG) != 0) {
             throw new IllegalArgumentException("Only Strong biometrics supported with crypto");
         }
 
diff --git a/core/java/android/hardware/biometrics/IAuthService.aidl b/core/java/android/hardware/biometrics/IAuthService.aidl
index d482198..2bf681f 100644
--- a/core/java/android/hardware/biometrics/IAuthService.aidl
+++ b/core/java/android/hardware/biometrics/IAuthService.aidl
@@ -33,6 +33,9 @@
     void authenticate(IBinder token, long sessionId, int userId,
             IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle);
 
+    // Cancel authentication for the given sessionId
+    void cancelAuthentication(IBinder token, String opPackageName);
+
     // TODO(b/141025588): Make userId the first arg to be consistent with hasEnrolledBiometrics.
     // Checks if biometrics can be used.
     int canAuthenticate(String opPackageName, int userId, int authenticators);
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl
similarity index 64%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl
index f5e2405..6dcdc1b 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricNativeHandle.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -13,7 +13,14 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package android.hardware.biometrics;
 
-package android.app.timedetector;
-
-parcelable PhoneTimeSuggestion;
+/**
+ * Representation of a native handle.
+ * Copied from /common/aidl/android/hardware/common/NativeHandle.aidl
+ * @hide
+ */
+parcelable IBiometricNativeHandle {
+    ParcelFileDescriptor[] fds;
+    int[] ints;
+}
diff --git a/core/java/android/hardware/biometrics/IBiometricService.aidl b/core/java/android/hardware/biometrics/IBiometricService.aidl
index 8a6be18..02e0a95 100644
--- a/core/java/android/hardware/biometrics/IBiometricService.aidl
+++ b/core/java/android/hardware/biometrics/IBiometricService.aidl
@@ -29,13 +29,15 @@
     // Requests authentication. The service choose the appropriate biometric to use, and show
     // the corresponding BiometricDialog.
     void authenticate(IBinder token, long sessionId, int userId,
-            IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle);
+            IBiometricServiceReceiver receiver, String opPackageName, in Bundle bundle,
+            int callingUid, int callingPid, int callingUserId);
 
-    // Cancel authentication for the given sessionId
-    void cancelAuthentication(IBinder token, String opPackageName);
+    // Cancel authentication for the given session.
+    void cancelAuthentication(IBinder token, String opPackageName, int callingUid, int callingPid,
+            int callingUserId);
 
     // Checks if biometrics can be used.
-    int canAuthenticate(String opPackageName, int userId, int authenticators);
+    int canAuthenticate(String opPackageName, int userId, int callingUserId, int authenticators);
 
     // Checks if any biometrics are enrolled.
     boolean hasEnrolledBiometrics(int userId, String opPackageName);
@@ -47,7 +49,8 @@
             IBiometricAuthenticator authenticator);
 
     // Register callback for when keyguard biometric eligibility changes.
-    void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback);
+    void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback,
+            int callingUserId);
 
     // Explicitly set the active user.
     void setActiveUser(int userId);
diff --git a/core/java/android/hardware/camera2/CameraManager.java b/core/java/android/hardware/camera2/CameraManager.java
index 9ee56a9..17c83f3 100644
--- a/core/java/android/hardware/camera2/CameraManager.java
+++ b/core/java/android/hardware/camera2/CameraManager.java
@@ -316,6 +316,7 @@
         CameraManagerGlobal.get().unregisterTorchCallback(callback);
     }
 
+    // TODO(b/147726300): Investigate how to support foldables/multi-display devices.
     private Size getDisplaySize() {
         Size ret = new Size(0, 0);
 
@@ -399,7 +400,8 @@
                     try {
                         info.setCameraId(Integer.parseInt(cameraId));
                     } catch (NumberFormatException e) {
-                        Log.e(TAG, "Failed to parse camera Id " + cameraId + " to integer");
+                        // For external camera, reaching here is expected.
+                        Log.v(TAG, "Failed to parse camera Id " + cameraId + " to integer");
                     }
                     boolean hasConcurrentStreams =
                             CameraManagerGlobal.get().cameraIdHasConcurrentStreamsLocked(cameraId);
diff --git a/core/java/android/hardware/camera2/CameraMetadata.java b/core/java/android/hardware/camera2/CameraMetadata.java
index 9bef2e1..8f3cb93 100644
--- a/core/java/android/hardware/camera2/CameraMetadata.java
+++ b/core/java/android/hardware/camera2/CameraMetadata.java
@@ -95,7 +95,7 @@
     }
 
     /**
-     * Retrieves the native CameraMetadata* as a Java long.
+     * Retrieves the native std::shared_ptr<CameraMetadata*>* as a Java long.
      * Returns 0 if mNativeInstance is null.
      *
      * @hide
diff --git a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
index a385771..7615b87c 100644
--- a/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraDeviceImpl.java
@@ -91,7 +91,7 @@
     private boolean mIdle = true;
 
     /** map request IDs to callback/request data */
-    private final SparseArray<CaptureCallbackHolder> mCaptureCallbackMap =
+    private SparseArray<CaptureCallbackHolder> mCaptureCallbackMap =
             new SparseArray<CaptureCallbackHolder>();
 
     private int mRepeatingRequestId = REQUEST_ID_NONE;
@@ -123,7 +123,7 @@
      * An object tracking received frame numbers.
      * Updated when receiving callbacks from ICameraDeviceCallbacks.
      */
-    private final FrameNumberTracker mFrameNumberTracker = new FrameNumberTracker();
+    private FrameNumberTracker mFrameNumberTracker = new FrameNumberTracker();
 
     private CameraCaptureSessionCore mCurrentSession;
     private int mNextSessionId = 0;
@@ -892,6 +892,7 @@
         HashSet<Integer> offlineStreamIds = new HashSet<Integer>();
         SparseArray<OutputConfiguration> offlineConfiguredOutputs =
                 new SparseArray<OutputConfiguration>();
+        CameraOfflineSession ret;
 
         synchronized(mInterfaceLock) {
             if (mOfflineSessionImpl != null) {
@@ -919,15 +920,20 @@
 
                 offlineStreamIds.add(streamId);
             }
+            stopRepeating();
 
             mOfflineSessionImpl = new CameraOfflineSessionImpl(mCameraId,
                     mCharacteristics, executor, listener, offlineConfiguredOutputs,
-                    mConfiguredInput, mFrameNumberTracker, mCaptureCallbackMap,
+                    mConfiguredInput, mConfiguredOutputs, mFrameNumberTracker, mCaptureCallbackMap,
                     mRequestLastFrameNumbersList);
+            ret = mOfflineSessionImpl;
 
             mOfflineSwitchService = Executors.newSingleThreadExecutor();
             mConfiguredOutputs.clear();
             mConfiguredInput = new SimpleEntry<Integer, InputConfiguration>(REQUEST_ID_NONE, null);
+            mIdle = true;
+            mCaptureCallbackMap = new SparseArray<CaptureCallbackHolder>();
+            mFrameNumberTracker = new FrameNumberTracker();
 
             mCurrentSession.closeWithoutDraining();
             mCurrentSession = null;
@@ -949,11 +955,13 @@
                     mOfflineSessionImpl.setRemoteSession(remoteOfflineSession);
                 } catch (CameraAccessException e) {
                     mOfflineSessionImpl.notifyFailedSwitch();
+                } finally {
+                    mOfflineSessionImpl = null;
                 }
             }
         });
 
-        return mOfflineSessionImpl;
+        return ret;
     }
 
     public boolean supportsOfflineProcessing(Surface surface) {
diff --git a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
index aefe66f..df77f52 100644
--- a/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
+++ b/core/java/android/hardware/camera2/impl/CameraMetadataNative.java
@@ -1680,7 +1680,7 @@
     }
 
     @UnsupportedAppUsage
-    private long mMetadataPtr; // native CameraMetadata*
+    private long mMetadataPtr; // native std::shared_ptr<CameraMetadata>*
 
     private native long nativeAllocate();
     private native long nativeAllocateCopy(CameraMetadataNative other)
diff --git a/core/java/android/hardware/camera2/impl/CameraOfflineSessionImpl.java b/core/java/android/hardware/camera2/impl/CameraOfflineSessionImpl.java
index 1db377a..1d9d644 100644
--- a/core/java/android/hardware/camera2/impl/CameraOfflineSessionImpl.java
+++ b/core/java/android/hardware/camera2/impl/CameraOfflineSessionImpl.java
@@ -63,6 +63,7 @@
     private SimpleEntry<Integer, InputConfiguration> mOfflineInput =
             new SimpleEntry<>(REQUEST_ID_NONE, null);
     private SparseArray<OutputConfiguration> mOfflineOutputs = new SparseArray<>();
+    private SparseArray<OutputConfiguration> mConfiguredOutputs = new SparseArray<>();
 
     final Object mInterfaceLock = new Object(); // access from this class and Session only!
 
@@ -96,6 +97,7 @@
             Executor offlineExecutor, CameraOfflineSessionCallback offlineCallback,
             SparseArray<OutputConfiguration> offlineOutputs,
             SimpleEntry<Integer, InputConfiguration> offlineInput,
+            SparseArray<OutputConfiguration> configuredOutputs,
             FrameNumberTracker frameNumberTracker, SparseArray<CaptureCallbackHolder> callbackMap,
             List<RequestLastFrameNumbersHolder> frameNumberList) {
         if ((cameraId == null) || (characteristics == null)) {
@@ -117,6 +119,7 @@
         mOfflineRequestLastFrameNumbersList.addAll(frameNumberList);
         mFrameNumberTracker = frameNumberTracker;
         mCaptureCallbackMap = callbackMap;
+        mConfiguredOutputs = configuredOutputs;
         mOfflineOutputs = offlineOutputs;
         mOfflineInput = offlineInput;
         mOfflineExecutor = checkNotNull(offlineExecutor, "offline executor must not be null");
@@ -137,9 +140,6 @@
         @Override
         public void onDeviceError(final int errorCode, CaptureResultExtras resultExtras) {
             synchronized(mInterfaceLock) {
-                if (mRemoteSession == null) {
-                    return; // Camera already closed
-                }
 
                 switch (errorCode) {
                     case CameraDeviceCallbacks.ERROR_CAMERA_REQUEST:
@@ -177,6 +177,11 @@
         @Override
         public void onDeviceIdle() {
             synchronized(mInterfaceLock) {
+                if (mRemoteSession == null) {
+                    Log.v(TAG, "Ignoring idle state notifications during offline switches");
+                    return;
+                }
+
                 Runnable idleDispatch = new Runnable() {
                     @Override
                     public void run() {
@@ -203,8 +208,6 @@
             final CaptureCallbackHolder holder;
 
             synchronized(mInterfaceLock) {
-                if (mRemoteSession == null) return; // Camera already closed
-
                 // Get the callback for this frame ID, if there is one
                 holder = CameraOfflineSessionImpl.this.mCaptureCallbackMap.get(requestId);
 
@@ -269,8 +272,6 @@
             long frameNumber = resultExtras.getFrameNumber();
 
             synchronized(mInterfaceLock) {
-                if (mRemoteSession == null) return; // Camera already closed
-
                 // TODO: Handle CameraCharacteristics access from CaptureResult correctly.
                 result.set(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE,
                         mCharacteristics.get(CameraCharacteristics.LENS_INFO_SHADING_MAP_SIZE));
@@ -445,8 +446,12 @@
             if (errorCode == ERROR_CAMERA_BUFFER) {
                 // Because 1 stream id could map to multiple surfaces, we need to specify both
                 // streamId and surfaceId.
-                OutputConfiguration config = mOfflineOutputs.get(
-                        resultExtras.getErrorStreamId());
+                OutputConfiguration config;
+                if ((mRemoteSession == null) && !isClosed()) {
+                    config = mConfiguredOutputs.get(resultExtras.getErrorStreamId());
+                } else {
+                    config = mOfflineOutputs.get(resultExtras.getErrorStreamId());
+                }
                 if (config == null) {
                     Log.v(TAG, String.format(
                             "Stream %d has been removed. Skipping buffer lost callback",
@@ -538,11 +543,6 @@
             final Executor executor;
             final CameraCaptureSession.CaptureCallback callback;
             synchronized(mInterfaceLock) {
-                if (mRemoteSession == null) {
-                    Log.w(TAG, "Camera closed while checking sequences");
-                    return;
-                }
-
                 int index = mCaptureCallbackMap.indexOfKey(requestId);
                 holder = (index >= 0) ?
                         mCaptureCallbackMap.valueAt(index) : null;
@@ -575,7 +575,7 @@
             }
 
             // Call onCaptureSequenceCompleted
-            if ((sequenceCompleted) && (callback != null) && (executor == null)) {
+            if ((sequenceCompleted) && (callback != null) && (executor != null)) {
                 Runnable resultDispatch = new Runnable() {
                     @Override
                     public void run() {
@@ -592,7 +592,12 @@
                 } finally {
                     Binder.restoreCallingIdentity(ident);
                 }
+
+                if (mCaptureCallbackMap.size() == 0) {
+                    getCallbacks().onDeviceIdle();
+                }
             }
+
         }
     }
 
@@ -686,9 +691,7 @@
             Runnable closeDispatch = new Runnable() {
                 @Override
                 public void run() {
-                    if (!isClosed()) {
-                        mOfflineCallback.onClosed(CameraOfflineSessionImpl.this);
-                    }
+                    mOfflineCallback.onClosed(CameraOfflineSessionImpl.this);
                 }
             };
 
diff --git a/core/java/android/hardware/display/AmbientDisplayConfiguration.java b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
index 3e995b6..ece5c28 100644
--- a/core/java/android/hardware/display/AmbientDisplayConfiguration.java
+++ b/core/java/android/hardware/display/AmbientDisplayConfiguration.java
@@ -194,6 +194,11 @@
         return !TextUtils.isEmpty(ambientDisplayComponent());
     }
 
+    /** {@hide} */
+    public boolean dozeSuppressed(int user) {
+        return boolSettingDefaultOff(Settings.Secure.SUPPRESS_DOZE, user);
+    }
+
     private boolean alwaysOnDisplayAvailable() {
         return mContext.getResources().getBoolean(R.bool.config_dozeAlwaysOnDisplayAvailable);
     }
diff --git a/core/java/android/hardware/display/DisplayManager.java b/core/java/android/hardware/display/DisplayManager.java
index d67de09..25b84c5 100644
--- a/core/java/android/hardware/display/DisplayManager.java
+++ b/core/java/android/hardware/display/DisplayManager.java
@@ -766,11 +766,11 @@
      * Requires the {@link android.Manifest.permission#CONTROL_DISPLAY_BRIGHTNESS} permission.
      * </p>
      *
-     * @param brightness The brightness value from 0 to 255.
+     * @param brightness The brightness value from 0.0f to 1.0f.
      *
      * @hide Requires signature permission.
      */
-    public void setTemporaryBrightness(int brightness) {
+    public void setTemporaryBrightness(float brightness) {
         mGlobal.setTemporaryBrightness(brightness);
     }
 
diff --git a/core/java/android/hardware/display/DisplayManagerGlobal.java b/core/java/android/hardware/display/DisplayManagerGlobal.java
index fd539e8..9d92c89 100644
--- a/core/java/android/hardware/display/DisplayManagerGlobal.java
+++ b/core/java/android/hardware/display/DisplayManagerGlobal.java
@@ -616,7 +616,7 @@
      *
      * @hide Requires signature permission.
      */
-    public void setTemporaryBrightness(int brightness) {
+    public void setTemporaryBrightness(float brightness) {
         try {
             mDm.setTemporaryBrightness(brightness);
         } catch (RemoteException ex) {
diff --git a/core/java/android/hardware/display/DisplayManagerInternal.java b/core/java/android/hardware/display/DisplayManagerInternal.java
index 79a339f..ea2b9e7 100644
--- a/core/java/android/hardware/display/DisplayManagerInternal.java
+++ b/core/java/android/hardware/display/DisplayManagerInternal.java
@@ -268,8 +268,9 @@
         // nearby, turning it off temporarily until the object is moved away.
         public boolean useProximitySensor;
 
-        // An override of the screen brightness. Set to -1 is used if there's no override.
-        public int screenBrightnessOverride;
+        // An override of the screen brightness.
+        // Set to PowerManager.BRIGHTNESS_INVALID if there's no override.
+        public float screenBrightnessOverride;
 
         // An override of the screen auto-brightness adjustment factor in the range -1 (dimmer) to
         // 1 (brighter). Set to Float.NaN if there's no override.
@@ -300,18 +301,18 @@
         public boolean blockScreenOn;
 
         // Overrides the policy for adjusting screen brightness and state while dozing.
-        public int dozeScreenBrightness;
         public int dozeScreenState;
+        public float dozeScreenBrightness;
 
         public DisplayPowerRequest() {
             policy = POLICY_BRIGHT;
             useProximitySensor = false;
-            screenBrightnessOverride = -1;
+            screenBrightnessOverride = PowerManager.BRIGHTNESS_INVALID_FLOAT;
             useAutoBrightness = false;
             screenAutoBrightnessAdjustmentOverride = Float.NaN;
             screenLowPowerBrightnessFactor = 0.5f;
             blockScreenOn = false;
-            dozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
+            dozeScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
             dozeScreenState = Display.STATE_UNKNOWN;
         }
 
@@ -351,7 +352,8 @@
             return other != null
                     && policy == other.policy
                     && useProximitySensor == other.useProximitySensor
-                    && screenBrightnessOverride == other.screenBrightnessOverride
+                    && floatEquals(screenBrightnessOverride,
+                            other.screenBrightnessOverride)
                     && useAutoBrightness == other.useAutoBrightness
                     && floatEquals(screenAutoBrightnessAdjustmentOverride,
                             other.screenAutoBrightnessAdjustmentOverride)
@@ -360,7 +362,7 @@
                     && blockScreenOn == other.blockScreenOn
                     && lowPowerMode == other.lowPowerMode
                     && boostScreenBrightness == other.boostScreenBrightness
-                    && dozeScreenBrightness == other.dozeScreenBrightness
+                    && floatEquals(dozeScreenBrightness, other.dozeScreenBrightness)
                     && dozeScreenState == other.dozeScreenState;
         }
 
diff --git a/core/java/android/hardware/display/IDisplayManager.aidl b/core/java/android/hardware/display/IDisplayManager.aidl
index ccf221b..d22188e 100644
--- a/core/java/android/hardware/display/IDisplayManager.aidl
+++ b/core/java/android/hardware/display/IDisplayManager.aidl
@@ -115,7 +115,7 @@
     boolean isMinimalPostProcessingRequested(int displayId);
 
     // Temporarily sets the display brightness.
-    void setTemporaryBrightness(int brightness);
+    void setTemporaryBrightness(float brightness);
 
     // Temporarily sets the auto brightness adjustment factor.
     void setTemporaryAutoBrightnessAdjustment(float adjustment);
diff --git a/core/java/android/hardware/face/FaceManager.java b/core/java/android/hardware/face/FaceManager.java
index 55ebe28..3a0660d 100644
--- a/core/java/android/hardware/face/FaceManager.java
+++ b/core/java/android/hardware/face/FaceManager.java
@@ -29,7 +29,9 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricFaceConstants;
+import android.hardware.biometrics.BiometricNativeHandleUtils;
 import android.hardware.biometrics.CryptoObject;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.os.Binder;
 import android.os.CancellationSignal;
@@ -38,6 +40,7 @@
 import android.os.IBinder;
 import android.os.IRemoteCallback;
 import android.os.Looper;
+import android.os.NativeHandle;
 import android.os.PowerManager;
 import android.os.RemoteException;
 import android.os.Trace;
@@ -245,6 +248,19 @@
     }
 
     /**
+     * Defaults to {@link FaceManager#enroll(int, byte[], CancellationSignal, EnrollmentCallback,
+     * int[], NativeHandle)} with {@code windowId} set to null.
+     *
+     * @see FaceManager#enroll(int, byte[], CancellationSignal, EnrollmentCallback, int[],
+     * NativeHandle)
+     */
+    @RequiresPermission(MANAGE_BIOMETRIC)
+    public void enroll(int userId, byte[] token, CancellationSignal cancel,
+            EnrollmentCallback callback, int[] disabledFeatures) {
+        enroll(userId, token, cancel, callback, disabledFeatures, null /* windowId */);
+    }
+
+    /**
      * Request face authentication enrollment. This call operates the face authentication hardware
      * and starts capturing images. Progress will be indicated by callbacks to the
      * {@link EnrollmentCallback} object. It terminates when
@@ -259,11 +275,13 @@
      * @param flags    optional flags
      * @param userId   the user to whom this face will belong to
      * @param callback an object to receive enrollment events
+     * @param windowId optional ID of a camera preview window for a single-camera device. Must be
+     *                 null if not used.
      * @hide
      */
     @RequiresPermission(MANAGE_BIOMETRIC)
     public void enroll(int userId, byte[] token, CancellationSignal cancel,
-            EnrollmentCallback callback, int[] disabledFeatures) {
+            EnrollmentCallback callback, int[] disabledFeatures, @Nullable NativeHandle windowId) {
         if (callback == null) {
             throw new IllegalArgumentException("Must supply an enrollment callback");
         }
@@ -278,20 +296,72 @@
         }
 
         if (mService != null) {
+            IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
             try {
                 mEnrollmentCallback = callback;
                 Trace.beginSection("FaceManager#enroll");
                 mService.enroll(userId, mToken, token, mServiceReceiver,
-                        mContext.getOpPackageName(), disabledFeatures);
+                        mContext.getOpPackageName(), disabledFeatures, handle);
             } catch (RemoteException e) {
                 Log.w(TAG, "Remote exception in enroll: ", e);
-                if (callback != null) {
-                    // Though this may not be a hardware issue, it will cause apps to give up or
-                    // try again later.
-                    callback.onEnrollmentError(FACE_ERROR_HW_UNAVAILABLE,
-                            getErrorString(mContext, FACE_ERROR_HW_UNAVAILABLE,
+                // Though this may not be a hardware issue, it will cause apps to give up or
+                // try again later.
+                callback.onEnrollmentError(FACE_ERROR_HW_UNAVAILABLE,
+                        getErrorString(mContext, FACE_ERROR_HW_UNAVAILABLE,
                                 0 /* vendorCode */));
-                }
+            } finally {
+                Trace.endSection();
+                BiometricNativeHandleUtils.close(handle);
+            }
+        }
+    }
+
+    /**
+     * Request face authentication enrollment for a remote client, for example Android Auto.
+     * This call operates the face authentication hardware and starts capturing images.
+     * Progress will be indicated by callbacks to the
+     * {@link EnrollmentCallback} object. It terminates when
+     * {@link EnrollmentCallback#onEnrollmentError(int, CharSequence)} or
+     * {@link EnrollmentCallback#onEnrollmentProgress(int) is called with remaining == 0, at
+     * which point the object is no longer valid. The operation can be canceled by using the
+     * provided cancel object.
+     *
+     * @param token    a unique token provided by a recent creation or verification of device
+     *                 credentials (e.g. pin, pattern or password).
+     * @param cancel   an object that can be used to cancel enrollment
+     * @param userId   the user to whom this face will belong to
+     * @param callback an object to receive enrollment events
+     * @hide
+     */
+    @RequiresPermission(MANAGE_BIOMETRIC)
+    public void enrollRemotely(int userId, byte[] token, CancellationSignal cancel,
+            EnrollmentCallback callback, int[] disabledFeatures) {
+        if (callback == null) {
+            throw new IllegalArgumentException("Must supply an enrollment callback");
+        }
+
+        if (cancel != null) {
+            if (cancel.isCanceled()) {
+                Log.w(TAG, "enrollRemotely is already canceled.");
+                return;
+            } else {
+                cancel.setOnCancelListener(new OnEnrollCancelListener());
+            }
+        }
+
+        if (mService != null) {
+            try {
+                mEnrollmentCallback = callback;
+                Trace.beginSection("FaceManager#enrollRemotely");
+                mService.enrollRemotely(userId, mToken, token, mServiceReceiver,
+                        mContext.getOpPackageName(), disabledFeatures);
+            } catch (RemoteException e) {
+                Log.w(TAG, "Remote exception in enrollRemotely: ", e);
+                // Though this may not be a hardware issue, it will cause apps to give up or
+                // try again later.
+                callback.onEnrollmentError(FACE_ERROR_HW_UNAVAILABLE,
+                        getErrorString(mContext, FACE_ERROR_HW_UNAVAILABLE,
+                                0 /* vendorCode */));
             } finally {
                 Trace.endSection();
             }
@@ -629,6 +699,9 @@
                 return context.getString(com.android.internal.R.string.face_error_not_enrolled);
             case FACE_ERROR_HW_NOT_PRESENT:
                 return context.getString(com.android.internal.R.string.face_error_hw_not_present);
+            case BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED:
+                return context.getString(
+                        com.android.internal.R.string.face_error_security_update_required);
             case FACE_ERROR_VENDOR: {
                 String[] msgArray = context.getResources().getStringArray(
                         com.android.internal.R.array.face_error_vendor);
diff --git a/core/java/android/hardware/face/IFaceService.aidl b/core/java/android/hardware/face/IFaceService.aidl
index 68a4aef..8ba2473 100644
--- a/core/java/android/hardware/face/IFaceService.aidl
+++ b/core/java/android/hardware/face/IFaceService.aidl
@@ -15,6 +15,7 @@
  */
 package android.hardware.face;
 
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceReceiverInternal;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.hardware.face.IFaceServiceReceiver;
@@ -51,6 +52,10 @@
 
     // Start face enrollment
     void enroll(int userId, IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
+            String opPackageName, in int [] disabledFeatures, in IBiometricNativeHandle windowId);
+
+    // Start remote face enrollment
+    void enrollRemotely(int userId, IBinder token, in byte [] cryptoToken, IFaceServiceReceiver receiver,
             String opPackageName, in int [] disabledFeatures);
 
     // Cancel enrollment in progress
diff --git a/core/java/android/hardware/fingerprint/FingerprintManager.java b/core/java/android/hardware/fingerprint/FingerprintManager.java
index ff9d145..f301a5c 100644
--- a/core/java/android/hardware/fingerprint/FingerprintManager.java
+++ b/core/java/android/hardware/fingerprint/FingerprintManager.java
@@ -32,7 +32,9 @@
 import android.content.pm.PackageManager;
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricFingerprintConstants;
+import android.hardware.biometrics.BiometricNativeHandleUtils;
 import android.hardware.biometrics.BiometricPrompt;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.os.Binder;
 import android.os.CancellationSignal;
@@ -41,6 +43,7 @@
 import android.os.IBinder;
 import android.os.IRemoteCallback;
 import android.os.Looper;
+import android.os.NativeHandle;
 import android.os.PowerManager;
 import android.os.RemoteException;
 import android.os.UserHandle;
@@ -403,15 +406,33 @@
     }
 
     /**
-     * Per-user version, see {@link FingerprintManager#authenticate(CryptoObject,
-     * CancellationSignal, int, AuthenticationCallback, Handler)}. This version does not
-     * display the BiometricPrompt.
-     * @param userId the user ID that the fingerprint hardware will authenticate for.
+     * Defaults to {@link FingerprintManager#authenticate(CryptoObject, CancellationSignal, int,
+     * AuthenticationCallback, Handler, int, NativeHandle)} with {@code windowId} set to null.
+     *
+     * @see FingerprintManager#authenticate(CryptoObject, CancellationSignal, int,
+     * AuthenticationCallback, Handler, int, NativeHandle)
+     *
      * @hide
      */
     @RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
     public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
             int flags, @NonNull AuthenticationCallback callback, Handler handler, int userId) {
+        authenticate(crypto, cancel, flags, callback, handler, userId, null /* windowId */);
+    }
+
+    /**
+     * Per-user version, see {@link FingerprintManager#authenticate(CryptoObject,
+     * CancellationSignal, int, AuthenticationCallback, Handler)}. This version does not
+     * display the BiometricPrompt.
+     * @param userId the user ID that the fingerprint hardware will authenticate for.
+     * @param windowId for optical fingerprint sensors that require active illumination by the OLED
+     *        display. Should be null for devices that don't require illumination.
+     * @hide
+     */
+    @RequiresPermission(anyOf = {USE_BIOMETRIC, USE_FINGERPRINT})
+    public void authenticate(@Nullable CryptoObject crypto, @Nullable CancellationSignal cancel,
+            int flags, @NonNull AuthenticationCallback callback, Handler handler, int userId,
+            @Nullable NativeHandle windowId) {
         if (callback == null) {
             throw new IllegalArgumentException("Must supply an authentication callback");
         }
@@ -425,26 +446,44 @@
             }
         }
 
-        if (mService != null) try {
-            useHandler(handler);
-            mAuthenticationCallback = callback;
-            mCryptoObject = crypto;
-            long sessionId = crypto != null ? crypto.getOpId() : 0;
-            mService.authenticate(mToken, sessionId, userId, mServiceReceiver, flags,
-                    mContext.getOpPackageName());
-        } catch (RemoteException e) {
-            Slog.w(TAG, "Remote exception while authenticating: ", e);
-            if (callback != null) {
+        if (mService != null) {
+            IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
+            try {
+                useHandler(handler);
+                mAuthenticationCallback = callback;
+                mCryptoObject = crypto;
+                long sessionId = crypto != null ? crypto.getOpId() : 0;
+                mService.authenticate(mToken, sessionId, userId, mServiceReceiver, flags,
+                        mContext.getOpPackageName(), handle);
+            } catch (RemoteException e) {
+                Slog.w(TAG, "Remote exception while authenticating: ", e);
                 // Though this may not be a hardware issue, it will cause apps to give up or try
                 // again later.
                 callback.onAuthenticationError(FINGERPRINT_ERROR_HW_UNAVAILABLE,
                         getErrorString(mContext, FINGERPRINT_ERROR_HW_UNAVAILABLE,
-                            0 /* vendorCode */));
+                                0 /* vendorCode */));
+            } finally {
+                BiometricNativeHandleUtils.close(handle);
             }
         }
     }
 
     /**
+     * Defaults to {@link FingerprintManager#enroll(byte[], CancellationSignal, int, int,
+     * EnrollmentCallback, NativeHandle)} with {@code windowId} set to null.
+     *
+     * @see FingerprintManager#enroll(byte[], CancellationSignal, int, int, EnrollmentCallback,
+     * NativeHandle)
+     *
+     * @hide
+     */
+    @RequiresPermission(MANAGE_FINGERPRINT)
+    public void enroll(byte [] token, CancellationSignal cancel, int flags,
+            int userId, EnrollmentCallback callback) {
+        enroll(token, cancel, flags, userId, callback, null /* windowId */);
+    }
+
+    /**
      * Request fingerprint enrollment. This call warms up the fingerprint hardware
      * and starts scanning for fingerprints. Progress will be indicated by callbacks to the
      * {@link EnrollmentCallback} object. It terminates when
@@ -462,7 +501,7 @@
      */
     @RequiresPermission(MANAGE_FINGERPRINT)
     public void enroll(byte [] token, CancellationSignal cancel, int flags,
-            int userId, EnrollmentCallback callback) {
+            int userId, EnrollmentCallback callback, @Nullable NativeHandle windowId) {
         if (userId == UserHandle.USER_CURRENT) {
             userId = getCurrentUserId();
         }
@@ -479,18 +518,21 @@
             }
         }
 
-        if (mService != null) try {
-            mEnrollmentCallback = callback;
-            mService.enroll(mToken, token, userId, mServiceReceiver, flags,
-                    mContext.getOpPackageName());
-        } catch (RemoteException e) {
-            Slog.w(TAG, "Remote exception in enroll: ", e);
-            if (callback != null) {
+        if (mService != null) {
+            IBiometricNativeHandle handle = BiometricNativeHandleUtils.dup(windowId);
+            try {
+                mEnrollmentCallback = callback;
+                mService.enroll(mToken, token, userId, mServiceReceiver, flags,
+                        mContext.getOpPackageName(), handle);
+            } catch (RemoteException e) {
+                Slog.w(TAG, "Remote exception in enroll: ", e);
                 // Though this may not be a hardware issue, it will cause apps to give up or try
                 // again later.
                 callback.onEnrollmentError(FINGERPRINT_ERROR_HW_UNAVAILABLE,
                         getErrorString(mContext, FINGERPRINT_ERROR_HW_UNAVAILABLE,
-                            0 /* vendorCode */));
+                                0 /* vendorCode */));
+            } finally {
+                BiometricNativeHandleUtils.close(handle);
             }
         }
     }
@@ -876,7 +918,9 @@
         if (mEnrollmentCallback != null) {
             mEnrollmentCallback.onEnrollmentHelp(clientInfo, msg);
         } else if (mAuthenticationCallback != null) {
-            mAuthenticationCallback.onAuthenticationHelp(clientInfo, msg);
+            if (acquireInfo != BiometricFingerprintConstants.FINGERPRINT_ACQUIRED_START) {
+                mAuthenticationCallback.onAuthenticationHelp(clientInfo, msg);
+            }
         }
     }
 
@@ -967,6 +1011,9 @@
             case FINGERPRINT_ERROR_HW_NOT_PRESENT:
                 return context.getString(
                         com.android.internal.R.string.fingerprint_error_hw_not_present);
+            case BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED:
+                return context.getString(
+                        com.android.internal.R.string.fingerprint_error_security_update_required);
             case FINGERPRINT_ERROR_VENDOR: {
                     String[] msgArray = context.getResources().getStringArray(
                             com.android.internal.R.array.fingerprint_error_vendor);
@@ -1008,6 +1055,9 @@
                         return msgArray[vendorCode];
                     }
                 }
+                break;
+            case FINGERPRINT_ACQUIRED_START:
+                return null;
         }
         Slog.w(TAG, "Invalid acquired message: " + acquireInfo + ", " + vendorCode);
         return null;
diff --git a/core/java/android/hardware/fingerprint/IFingerprintService.aidl b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
index 1a7e128..f2ffd08d 100644
--- a/core/java/android/hardware/fingerprint/IFingerprintService.aidl
+++ b/core/java/android/hardware/fingerprint/IFingerprintService.aidl
@@ -15,6 +15,7 @@
  */
 package android.hardware.fingerprint;
 
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceReceiverInternal;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.hardware.fingerprint.IFingerprintClientActiveCallback;
@@ -31,7 +32,8 @@
     // USE_FINGERPRINT/USE_BIOMETRIC permission. This is effectively deprecated, since it only comes
     // through FingerprintManager now.
     void authenticate(IBinder token, long sessionId, int userId,
-            IFingerprintServiceReceiver receiver, int flags, String opPackageName);
+            IFingerprintServiceReceiver receiver, int flags, String opPackageName,
+            in IBiometricNativeHandle windowId);
 
     // This method prepares the service to start authenticating, but doesn't start authentication.
     // This is protected by the MANAGE_BIOMETRIC signatuer permission. This method should only be
@@ -40,7 +42,7 @@
     // startPreparedClient().
     void prepareForAuthentication(IBinder token, long sessionId, int userId,
             IBiometricServiceReceiverInternal wrapperReceiver, String opPackageName, int cookie,
-            int callingUid, int callingPid, int callingUserId);
+            int callingUid, int callingPid, int callingUserId, in IBiometricNativeHandle windowId);
 
     // Starts authentication with the previously prepared client.
     void startPreparedClient(int cookie);
@@ -55,7 +57,7 @@
 
     // Start fingerprint enrollment
     void enroll(IBinder token, in byte [] cryptoToken, int groupId, IFingerprintServiceReceiver receiver,
-            int flags, String opPackageName);
+            int flags, String opPackageName, in IBiometricNativeHandle windowId);
 
     // Cancel enrollment in progress
     void cancelEnrollment(IBinder token);
diff --git a/core/java/android/hardware/input/IInputManager.aidl b/core/java/android/hardware/input/IInputManager.aidl
index 6e1987c..fb44b0b 100644
--- a/core/java/android/hardware/input/IInputManager.aidl
+++ b/core/java/android/hardware/input/IInputManager.aidl
@@ -27,6 +27,7 @@
 import android.view.InputEvent;
 import android.view.InputMonitor;
 import android.view.PointerIcon;
+import android.view.VerifiedInputEvent;
 
 /** @hide */
 interface IInputManager {
@@ -50,6 +51,8 @@
     @UnsupportedAppUsage
     boolean injectInputEvent(in InputEvent ev, int mode);
 
+    VerifiedInputEvent verifyInputEvent(in InputEvent ev);
+
     // Calibrate input device position
     TouchCalibration getTouchCalibrationForInputDevice(String inputDeviceDescriptor, int rotation);
     void setTouchCalibrationForInputDevice(String inputDeviceDescriptor, int rotation,
diff --git a/core/java/android/hardware/input/InputManager.java b/core/java/android/hardware/input/InputManager.java
index 83f01a5..72217a1 100644
--- a/core/java/android/hardware/input/InputManager.java
+++ b/core/java/android/hardware/input/InputManager.java
@@ -16,8 +16,10 @@
 
 package android.hardware.input;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemService;
@@ -45,12 +47,14 @@
 import android.view.InputMonitor;
 import android.view.MotionEvent;
 import android.view.PointerIcon;
+import android.view.VerifiedInputEvent;
 
 import com.android.internal.os.SomeArgs;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
+import java.util.concurrent.Executor;
 import java.util.List;
 
 /**
@@ -907,6 +911,27 @@
     }
 
     /**
+     * Verify the details of an {@link android.view.InputEvent} that came from the system.
+     * If the event did not come from the system, or its details could not be verified, then this
+     * will return {@code null}. Receiving {@code null} does not mean that the event did not
+     * originate from the system, just that we were unable to verify it. This can
+     * happen for a number of reasons during normal operation.
+     *
+     * @param event The {@link android.view.InputEvent} to check
+     *
+     * @return {@link android.view.VerifiedInputEvent}, which is a subset of the provided
+     * {@link android.view.InputEvent}
+     *         {@code null} if the event could not be verified.
+     */
+    public @Nullable VerifiedInputEvent verifyInputEvent(@NonNull InputEvent event) {
+        try {
+            return mIm.verifyInputEvent(event);
+        } catch (RemoteException ex) {
+            throw ex.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Changes the mouse pointer's icon shape into the specified id.
      *
      * @param iconId The id of the pointer graphic, as a value between
@@ -1236,6 +1261,32 @@
         }
 
         @Override
+        public boolean isVibrating() {
+            throw new UnsupportedOperationException(
+                "isVibrating not supported in InputDeviceVibrator");
+        }
+
+        @Override
+        public void addVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+            throw new UnsupportedOperationException(
+                "addVibratorStateListener not supported in InputDeviceVibrator");
+        }
+
+        @Override
+        public void addVibratorStateListener(
+                @NonNull @CallbackExecutor Executor executor,
+                @NonNull OnVibratorStateChangedListener listener) {
+            throw new UnsupportedOperationException(
+                "addVibratorStateListener not supported in InputDeviceVibrator");
+        }
+
+        @Override
+        public void removeVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+            throw new UnsupportedOperationException(
+                "removeVibratorStateListener not supported in InputDeviceVibrator");
+        }
+
+        @Override
         public boolean hasAmplitudeControl() {
             return false;
         }
diff --git a/core/java/android/hardware/soundtrigger/ConversionUtil.java b/core/java/android/hardware/soundtrigger/ConversionUtil.java
index a30fd6b..dbf33ca 100644
--- a/core/java/android/hardware/soundtrigger/ConversionUtil.java
+++ b/core/java/android/hardware/soundtrigger/ConversionUtil.java
@@ -17,7 +17,6 @@
 package android.hardware.soundtrigger;
 
 import android.annotation.Nullable;
-import android.hardware.soundtrigger.ModelParams;
 import android.media.AudioFormat;
 import android.media.audio.common.AudioConfig;
 import android.media.soundtrigger_middleware.AudioCapabilities;
@@ -333,20 +332,22 @@
     public static int aidl2apiAudioCapabilities(int aidlCapabilities) {
         int result = 0;
         if ((aidlCapabilities & AudioCapabilities.ECHO_CANCELLATION) != 0) {
-            result |= SoundTrigger.ModuleProperties.CAPABILITY_ECHO_CANCELLATION;
+            result |= SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_ECHO_CANCELLATION;
         }
         if ((aidlCapabilities & AudioCapabilities.NOISE_SUPPRESSION) != 0) {
-            result |= SoundTrigger.ModuleProperties.CAPABILITY_NOISE_SUPPRESSION;
+            result |= SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_NOISE_SUPPRESSION;
         }
         return result;
     }
 
     public static int api2aidlAudioCapabilities(int apiCapabilities) {
         int result = 0;
-        if ((apiCapabilities & SoundTrigger.ModuleProperties.CAPABILITY_ECHO_CANCELLATION) != 0) {
+        if ((apiCapabilities & SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_ECHO_CANCELLATION)
+                != 0) {
             result |= AudioCapabilities.ECHO_CANCELLATION;
         }
-        if ((apiCapabilities & SoundTrigger.ModuleProperties.CAPABILITY_NOISE_SUPPRESSION) != 0) {
+        if ((apiCapabilities & SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_NOISE_SUPPRESSION)
+                != 0) {
             result |= AudioCapabilities.NOISE_SUPPRESSION;
         }
         return result;
diff --git a/core/java/android/hardware/soundtrigger/SoundTrigger.java b/core/java/android/hardware/soundtrigger/SoundTrigger.java
index d505ae5..a74871d2 100644
--- a/core/java/android/hardware/soundtrigger/SoundTrigger.java
+++ b/core/java/android/hardware/soundtrigger/SoundTrigger.java
@@ -97,8 +97,8 @@
          */
         @Retention(RetentionPolicy.SOURCE)
         @IntDef(flag = true, prefix = { "AUDIO_CAPABILITY_" }, value = {
-                CAPABILITY_ECHO_CANCELLATION,
-                CAPABILITY_NOISE_SUPPRESSION
+                AUDIO_CAPABILITY_ECHO_CANCELLATION,
+                AUDIO_CAPABILITY_NOISE_SUPPRESSION
         })
         public @interface AudioCapabilities {}
 
@@ -106,12 +106,12 @@
          * If set the underlying module supports AEC.
          * Describes bit field {@link ModuleProperties#audioCapabilities}
          */
-        public static final int CAPABILITY_ECHO_CANCELLATION = 0x1;
+        public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION = 0x1;
         /**
          * If set, the underlying module supports noise suppression.
          * Describes bit field {@link ModuleProperties#audioCapabilities}
          */
-        public static final int CAPABILITY_NOISE_SUPPRESSION = 0x2;
+        public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION = 0x2;
 
         /** Unique module ID provided by the native service */
         public final int id;
@@ -735,22 +735,40 @@
         /**
          * The inclusive start of supported range.
          */
-        public final int start;
+        private final int mStart;
 
         /**
          * The inclusive end of supported range.
          */
-        public final int end;
+        private final int mEnd;
 
         ModelParamRange(int start, int end) {
-            this.start = start;
-            this.end = end;
+            this.mStart = start;
+            this.mEnd = end;
         }
 
         /** @hide */
         private ModelParamRange(@NonNull Parcel in) {
-            this.start = in.readInt();
-            this.end = in.readInt();
+            this.mStart = in.readInt();
+            this.mEnd = in.readInt();
+        }
+
+        /**
+         * Get the beginning of the param range
+         *
+         * @return The inclusive start of the supported range.
+         */
+        public int getStart() {
+            return mStart;
+        }
+
+        /**
+         * Get the end of the param range
+         *
+         * @return The inclusive end of the supported range.
+         */
+        public int getEnd() {
+            return mEnd;
         }
 
         @NonNull
@@ -780,8 +798,8 @@
         public int hashCode() {
             final int prime = 31;
             int result = 1;
-            result = prime * result + (start);
-            result = prime * result + (end);
+            result = prime * result + (mStart);
+            result = prime * result + (mEnd);
             return result;
         }
 
@@ -797,10 +815,10 @@
                 return false;
             }
             ModelParamRange other = (ModelParamRange) obj;
-            if (start != other.start) {
+            if (mStart != other.mStart) {
                 return false;
             }
-            if (end != other.end) {
+            if (mEnd != other.mEnd) {
                 return false;
             }
             return true;
@@ -808,14 +826,14 @@
 
         @Override
         public void writeToParcel(@NonNull Parcel dest, int flags) {
-            dest.writeInt(start);
-            dest.writeInt(end);
+            dest.writeInt(mStart);
+            dest.writeInt(mEnd);
         }
 
         @Override
         @NonNull
         public String toString() {
-            return "ModelParamRange [start=" + start + ", end=" + end + "]";
+            return "ModelParamRange [start=" + mStart + ", end=" + mEnd + "]";
         }
     }
 
diff --git a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
index 9bd3992..c1df5b6 100644
--- a/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
+++ b/core/java/android/hardware/soundtrigger/SoundTriggerModule.java
@@ -221,10 +221,8 @@
     /**
      * Set a model specific {@link ModelParams} with the given value. This
      * parameter will keep its value for the duration the model is loaded regardless of starting
-     * and
-     * stopping recognition. Once the model is unloaded, the value will be lost.
-     * {@link SoundTriggerModule#queryParameter(int, int)} should be checked first before calling
-     * this method.
+     * and stopping recognition. Once the model is unloaded, the value will be lost.
+     * {@link #queryParameter} should be checked first before calling this method.
      *
      * @param soundModelHandle handle of model to apply parameter
      * @param modelParam       {@link ModelParams}
@@ -251,22 +249,14 @@
      * for the duration the model is loaded regardless of starting and stopping recognition.
      * Once the model is unloaded, the value will be lost. If the value is not set, a default
      * value is returned. See {@link ModelParams} for parameter default values.
-     * {@link SoundTriggerModule#queryParameter(int, int)} should be checked first before
+     * {@link #queryParameter} should be checked first before
      * calling this method. Otherwise, an exception can be thrown.
      *
      * @param soundModelHandle handle of model to get parameter
      * @param modelParam       {@link ModelParams}
      * @return value of parameter
-     * @throws UnsupportedOperationException if hal or model do not support this API.
-     *                                       {@link SoundTriggerModule#queryParameter(int, int)}
-     *                                       should
-     *                                       be checked first.
-     * @throws IllegalArgumentException      if invalid model handle or parameter is passed.
-     *                                       {@link SoundTriggerModule#queryParameter(int, int)}
-     *                                       should be checked first.
      */
-    public synchronized int getParameter(int soundModelHandle, @ModelParams int modelParam)
-            throws UnsupportedOperationException, IllegalArgumentException {
+    public synchronized int getParameter(int soundModelHandle, @ModelParams int modelParam) {
         try {
             return mService.getModelParameter(soundModelHandle,
                     ConversionUtil.api2aidlModelParameter(modelParam));
@@ -276,9 +266,8 @@
     }
 
     /**
-     * Determine if parameter control is supported for the given model handle.
-     * This method should be checked prior to calling {@link SoundTriggerModule#setParameter} or
-     * {@link SoundTriggerModule#getParameter}.
+     * Query the parameter support and range for a given {@link ModelParams}.
+     * This method should be check prior to calling {@link #setParameter} or {@link #getParameter}.
      *
      * @param soundModelHandle handle of model to get parameter
      * @param modelParam       {@link ModelParams}
diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java
index 92047dc..49e1d5e 100644
--- a/core/java/android/inputmethodservice/InputMethodService.java
+++ b/core/java/android/inputmethodservice/InputMethodService.java
@@ -16,7 +16,6 @@
 
 package android.inputmethodservice;
 
-import static android.view.Display.DEFAULT_DISPLAY;
 import static android.view.ViewGroup.LayoutParams.MATCH_PARENT;
 import static android.view.ViewGroup.LayoutParams.WRAP_CONTENT;
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
@@ -39,6 +38,7 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.content.res.TypedArray;
@@ -52,7 +52,6 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.SystemClock;
@@ -64,6 +63,7 @@
 import android.util.Log;
 import android.util.PrintWriterPrinter;
 import android.util.Printer;
+import android.util.Size;
 import android.view.Gravity;
 import android.view.KeyCharacterMap;
 import android.view.KeyEvent;
@@ -452,6 +452,9 @@
     @Nullable
     private InlineSuggestionsRequestInfo mInlineSuggestionsRequestInfo = null;
 
+    private boolean mAutomotiveHideNavBarForKeyboard;
+    private boolean mIsAutomotive;
+
     /**
      * An opaque {@link Binder} token of window requesting {@link InputMethodImpl#showSoftInput}
      * The original app window token is passed from client app window.
@@ -560,12 +563,10 @@
         @Override
         public void updateInputMethodDisplay(int displayId) {
             // Update display for adding IME window to the right display.
-            if (displayId != DEFAULT_DISPLAY) {
-                // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
-                // for update resources & configuration correctly when show soft input
-                // in non-default display.
-                updateDisplay(displayId);
-            }
+            // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
+            // for update resources & configuration correctly when show soft input
+            // in non-default display.
+            updateDisplay(displayId);
         }
 
         /**
@@ -1233,6 +1234,11 @@
         super.onCreate();
         mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
         mSettingsObserver = SettingsObserver.createAndRegister(this);
+
+        mIsAutomotive = isAutomotive();
+        mAutomotiveHideNavBarForKeyboard = getApplicationContext().getResources().getBoolean(
+                com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard);
+
         // TODO(b/111364446) Need to address context lifecycle issue if need to re-create
         // for update resources & configuration correctly when show soft input
         // in non-default display.
@@ -1242,12 +1248,16 @@
                 WindowManager.LayoutParams.TYPE_INPUT_METHOD, Gravity.BOTTOM, false);
         mWindow.getWindow().getAttributes().setFitInsetsTypes(WindowInsets.Type.statusBars());
 
-        // IME layout should always be inset by navigation bar, no matter it's current visibility.
+        // IME layout should always be inset by navigation bar, no matter its current visibility,
+        // unless automotive requests it, since automotive may hide the navigation bar.
         mWindow.getWindow().getDecorView().setOnApplyWindowInsetsListener(
                 (v, insets) -> v.onApplyWindowInsets(
                         new WindowInsets.Builder(insets).setInsets(
                                 navigationBars(),
-                                insets.getInsetsIgnoringVisibility(navigationBars()))
+                                mIsAutomotive && mAutomotiveHideNavBarForKeyboard
+                                        ? android.graphics.Insets.NONE
+                                        : insets.getInsetsIgnoringVisibility(navigationBars())
+                                )
                                 .build()));
 
         // For ColorView in DecorView to work, FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS needs to be set
@@ -1466,8 +1476,9 @@
      * screen orientation changes.
      */
     public int getMaxWidth() {
-        WindowManager wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
-        return wm.getDefaultDisplay().getWidth();
+        final WindowManager windowManager = getSystemService(WindowManager.class);
+        final Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
+        return windowSize.getWidth();
     }
     
     /**
@@ -3286,6 +3297,11 @@
                         : IME_VISIBLE) : 0);
     }
 
+    private boolean isAutomotive() {
+        return getApplicationContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_AUTOMOTIVE);
+    }
+
     /**
      * Performs a dump of the InputMethodService's internal state.  Override
      * to add your own information to the dump.
diff --git a/core/java/android/inputmethodservice/SoftInputWindow.java b/core/java/android/inputmethodservice/SoftInputWindow.java
index 356b344..0513fee 100644
--- a/core/java/android/inputmethodservice/SoftInputWindow.java
+++ b/core/java/android/inputmethodservice/SoftInputWindow.java
@@ -21,7 +21,6 @@
 import android.annotation.IntDef;
 import android.app.Dialog;
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.graphics.Rect;
 import android.os.Debug;
 import android.os.IBinder;
@@ -51,7 +50,6 @@
     final int mWindowType;
     final int mGravity;
     final boolean mTakesFocus;
-    final boolean mAutomotiveHideNavBarForKeyboard;
     private final Rect mBounds = new Rect();
 
     @Retention(SOURCE)
@@ -136,8 +134,6 @@
         mWindowType = windowType;
         mGravity = gravity;
         mTakesFocus = takesFocus;
-        mAutomotiveHideNavBarForKeyboard = context.getResources().getBoolean(
-                com.android.internal.R.bool.config_automotiveHideNavBarForKeyboard);
         initDockWindow();
     }
 
@@ -251,11 +247,6 @@
             windowModFlags |= WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
         }
 
-        if (isAutomotive() && mAutomotiveHideNavBarForKeyboard) {
-            windowSetFlags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
-            windowModFlags |= WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS;
-        }
-
         getWindow().setFlags(windowSetFlags, windowModFlags);
     }
 
@@ -347,10 +338,6 @@
         mWindowState = newState;
     }
 
-    private boolean isAutomotive() {
-        return getContext().getPackageManager().hasSystemFeature(PackageManager.FEATURE_AUTOMOTIVE);
-    }
-
     private static String stateToString(@SoftInputWindowState int state) {
         switch (state) {
             case SoftInputWindowState.TOKEN_PENDING:
diff --git a/core/java/android/net/CaptivePortal.java b/core/java/android/net/CaptivePortal.java
index fb35b4b..8afeb30 100644
--- a/core/java/android/net/CaptivePortal.java
+++ b/core/java/android/net/CaptivePortal.java
@@ -15,7 +15,9 @@
  */
 package android.net;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.os.IBinder;
@@ -23,6 +25,8 @@
 import android.os.Parcelable;
 import android.os.RemoteException;
 
+import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+
 /**
  * A class allowing apps handling the {@link ConnectivityManager#ACTION_CAPTIVE_PORTAL_SIGN_IN}
  * activity to indicate to the system different outcomes of captive portal sign in.  This class is
@@ -76,6 +80,17 @@
     private final IBinder mBinder;
 
     /** @hide */
+    @IntDef(value = {
+        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_ACTIVITY,
+        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_DISMISSED,
+        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_UNWANTED,
+        MetricsEvent.ACTION_CAPTIVE_PORTAL_LOGIN_RESULT_WANTED_AS_IS,
+        MetricsEvent.CAPTIVE_PORTAL_LOGIN_ACTIVITY_SSL_ERROR,
+    })
+    public @interface EventId {
+    }
+
+    /** @hide */
     public CaptivePortal(@NonNull IBinder binder) {
         mBinder = binder;
     }
@@ -153,6 +168,7 @@
      */
     @SystemApi
     @TestApi
+    @RequiresPermission(android.Manifest.permission.NETWORK_STACK)
     public void reevaluateNetwork() {
         try {
             ICaptivePortal.Stub.asInterface(mBinder).appRequest(APP_REQUEST_REEVALUATION_REQUIRED);
@@ -168,7 +184,7 @@
      */
     @SystemApi
     @TestApi
-    public void logEvent(int eventId, @NonNull String packageName) {
+    public void logEvent(@EventId int eventId, @NonNull String packageName) {
         try {
             ICaptivePortal.Stub.asInterface(mBinder).logEvent(eventId, packageName);
         } catch (RemoteException e) {
diff --git a/core/java/android/net/ConnectivityDiagnosticsManager.java b/core/java/android/net/ConnectivityDiagnosticsManager.java
index b13e4b7..d0091440 100644
--- a/core/java/android/net/ConnectivityDiagnosticsManager.java
+++ b/core/java/android/net/ConnectivityDiagnosticsManager.java
@@ -25,13 +25,16 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
+import android.os.RemoteException;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.Preconditions;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.Map;
 import java.util.Objects;
+import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executor;
 
 /**
@@ -57,6 +60,11 @@
  * </ul>
  */
 public class ConnectivityDiagnosticsManager {
+    /** @hide */
+    @VisibleForTesting
+    public static final Map<ConnectivityDiagnosticsCallback, ConnectivityDiagnosticsBinder>
+            sCallbacks = new ConcurrentHashMap<>();
+
     private final Context mContext;
     private final IConnectivityManager mService;
 
@@ -194,7 +202,7 @@
          */
         @NetworkProbe
         public static final String KEY_NETWORK_PROBES_ATTEMPTED_BITMASK =
-                "networkProbesAttemped";
+                "networkProbesAttempted";
 
         /** @hide */
         @StringDef(prefix = {"KEY_"}, value = {
@@ -244,8 +252,8 @@
                 @NonNull PersistableBundle additionalInfo) {
             mNetwork = network;
             mReportTimestamp = reportTimestamp;
-            mLinkProperties = linkProperties;
-            mNetworkCapabilities = networkCapabilities;
+            mLinkProperties = new LinkProperties(linkProperties);
+            mNetworkCapabilities = new NetworkCapabilities(networkCapabilities);
             mAdditionalInfo = additionalInfo;
         }
 
@@ -425,6 +433,12 @@
         /** The detection method used to identify the suspected data stall */
         @DetectionMethod private final int mDetectionMethod;
 
+        /** LinkProperties available on the Network at the reported timestamp */
+        @NonNull private final LinkProperties mLinkProperties;
+
+        /** NetworkCapabilities available on the Network at the reported timestamp */
+        @NonNull private final NetworkCapabilities mNetworkCapabilities;
+
         /** PersistableBundle that may contain additional information on the suspected data stall */
         @NonNull private final PersistableBundle mStallDetails;
 
@@ -438,16 +452,23 @@
          * @param network The Network for which this DataStallReport applies
          * @param reportTimestamp The timestamp for the report
          * @param detectionMethod The detection method used to identify this data stall
+         * @param linkProperties The LinkProperties available on network at reportTimestamp
+         * @param networkCapabilities The NetworkCapabilities available on network at
+         *     reportTimestamp
          * @param stallDetails A PersistableBundle that may contain additional info about the report
          */
         public DataStallReport(
                 @NonNull Network network,
                 long reportTimestamp,
                 @DetectionMethod int detectionMethod,
+                @NonNull LinkProperties linkProperties,
+                @NonNull NetworkCapabilities networkCapabilities,
                 @NonNull PersistableBundle stallDetails) {
             mNetwork = network;
             mReportTimestamp = reportTimestamp;
             mDetectionMethod = detectionMethod;
+            mLinkProperties = new LinkProperties(linkProperties);
+            mNetworkCapabilities = new NetworkCapabilities(networkCapabilities);
             mStallDetails = stallDetails;
         }
 
@@ -480,6 +501,26 @@
         }
 
         /**
+         * Returns the LinkProperties available when this report was taken.
+         *
+         * @return LinkProperties available on the Network at the reported timestamp
+         */
+        @NonNull
+        public LinkProperties getLinkProperties() {
+            return new LinkProperties(mLinkProperties);
+        }
+
+        /**
+         * Returns the NetworkCapabilities when this report was taken.
+         *
+         * @return NetworkCapabilities available on the Network at the reported timestamp
+         */
+        @NonNull
+        public NetworkCapabilities getNetworkCapabilities() {
+            return new NetworkCapabilities(mNetworkCapabilities);
+        }
+
+        /**
          * Returns a PersistableBundle with additional info for this report.
          *
          * <p>Gets a bundle with details about the suspected data stall including information
@@ -505,12 +546,20 @@
             return mReportTimestamp == that.mReportTimestamp
                     && mDetectionMethod == that.mDetectionMethod
                     && mNetwork.equals(that.mNetwork)
+                    && mLinkProperties.equals(that.mLinkProperties)
+                    && mNetworkCapabilities.equals(that.mNetworkCapabilities)
                     && persistableBundleEquals(mStallDetails, that.mStallDetails);
         }
 
         @Override
         public int hashCode() {
-            return Objects.hash(mNetwork, mReportTimestamp, mDetectionMethod, mStallDetails);
+            return Objects.hash(
+                    mNetwork,
+                    mReportTimestamp,
+                    mDetectionMethod,
+                    mLinkProperties,
+                    mNetworkCapabilities,
+                    mStallDetails);
         }
 
         /** {@inheritDoc} */
@@ -525,6 +574,8 @@
             dest.writeParcelable(mNetwork, flags);
             dest.writeLong(mReportTimestamp);
             dest.writeInt(mDetectionMethod);
+            dest.writeParcelable(mLinkProperties, flags);
+            dest.writeParcelable(mNetworkCapabilities, flags);
             dest.writeParcelable(mStallDetails, flags);
         }
 
@@ -536,6 +587,8 @@
                                 in.readParcelable(null),
                                 in.readLong(),
                                 in.readInt(),
+                                in.readParcelable(null),
+                                in.readParcelable(null),
                                 in.readParcelable(null));
                     }
 
@@ -631,8 +684,9 @@
     /**
      * Registers a ConnectivityDiagnosticsCallback with the System.
      *
-     * <p>Only apps that offer network connectivity to the user are allowed to register callbacks.
-     * This includes:
+     * <p>Only apps that offer network connectivity to the user should be registering callbacks.
+     * These are the only apps whose callbacks will be invoked by the system. Apps considered to
+     * meet these conditions include:
      *
      * <ul>
      *   <li>Carrier apps with active subscriptions
@@ -640,15 +694,14 @@
      *   <li>WiFi Suggesters
      * </ul>
      *
-     * <p>Callbacks will be limited to receiving notifications for networks over which apps provide
-     * connectivity.
+     * <p>Callbacks registered by apps not meeting the above criteria will not be invoked.
      *
      * <p>If a registering app loses its relevant permissions, any callbacks it registered will
      * silently stop receiving callbacks.
      *
-     * <p>Each register() call <b>MUST</b> use a unique ConnectivityDiagnosticsCallback instance. If
-     * a single instance is registered with multiple NetworkRequests, an IllegalArgumentException
-     * will be thrown.
+     * <p>Each register() call <b>MUST</b> use a ConnectivityDiagnosticsCallback instance that is
+     * not currently registered. If a ConnectivityDiagnosticsCallback instance is registered with
+     * multiple NetworkRequests, an IllegalArgumentException will be thrown.
      *
      * @param request The NetworkRequest that will be used to match with Networks for which
      *     callbacks will be fired
@@ -657,15 +710,22 @@
      *     System
      * @throws IllegalArgumentException if the same callback instance is registered with multiple
      *     NetworkRequests
-     * @throws SecurityException if the caller does not have appropriate permissions to register a
-     *     callback
      */
     public void registerConnectivityDiagnosticsCallback(
             @NonNull NetworkRequest request,
             @NonNull Executor e,
             @NonNull ConnectivityDiagnosticsCallback callback) {
-        // TODO(b/143187964): implement ConnectivityDiagnostics functionality
-        throw new UnsupportedOperationException("registerCallback() not supported yet");
+        final ConnectivityDiagnosticsBinder binder = new ConnectivityDiagnosticsBinder(callback, e);
+        if (sCallbacks.putIfAbsent(callback, binder) != null) {
+            throw new IllegalArgumentException("Callback is currently registered");
+        }
+
+        try {
+            mService.registerConnectivityDiagnosticsCallback(
+                    binder, request, mContext.getOpPackageName());
+        } catch (RemoteException exception) {
+            exception.rethrowFromSystemServer();
+        }
     }
 
     /**
@@ -678,7 +738,15 @@
      */
     public void unregisterConnectivityDiagnosticsCallback(
             @NonNull ConnectivityDiagnosticsCallback callback) {
-        // TODO(b/143187964): implement ConnectivityDiagnostics functionality
-        throw new UnsupportedOperationException("registerCallback() not supported yet");
+        // unconditionally removing from sCallbacks prevents race conditions here, since remove() is
+        // atomic.
+        final ConnectivityDiagnosticsBinder binder = sCallbacks.remove(callback);
+        if (binder == null) return;
+
+        try {
+            mService.unregisterConnectivityDiagnosticsCallback(binder);
+        } catch (RemoteException exception) {
+            exception.rethrowFromSystemServer();
+        }
     }
 }
diff --git a/core/java/android/net/ConnectivityManager.java b/core/java/android/net/ConnectivityManager.java
index ce9693d..a305948 100644
--- a/core/java/android/net/ConnectivityManager.java
+++ b/core/java/android/net/ConnectivityManager.java
@@ -2423,14 +2423,14 @@
     /**
      * Get the set of tethered dhcp ranges.
      *
-     * @return an array of 0 or more {@code String} of tethered dhcp ranges.
-     * @deprecated This API just return the default value which is not used in DhcpServer.
+     * @deprecated This method is not supported.
+     * TODO: remove this function when all of clients are removed.
      * {@hide}
      */
     @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
     @Deprecated
     public String[] getTetheredDhcpRanges() {
-        return getTetheringManager().getTetheredDhcpRanges();
+        throw new UnsupportedOperationException("getTetheredDhcpRanges is not supported");
     }
 
     /**
@@ -3322,15 +3322,19 @@
     // of dependent changes that would conflict throughout the automerger graph. Having this
     // temporarily helps with the process of going through with all these dependent changes across
     // the entire tree.
+    // STOPSHIP (b/148055573) : remove this before R is released.
     /**
      * @hide
      * Register a NetworkAgent with ConnectivityService.
      * @return Network corresponding to NetworkAgent.
+     * @deprecated use the version that takes a NetworkScore and a provider ID.
      */
     @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
+    @Deprecated
     public Network registerNetworkAgent(Messenger messenger, NetworkInfo ni, LinkProperties lp,
             NetworkCapabilities nc, int score, NetworkAgentConfig config) {
-        return registerNetworkAgent(messenger, ni, lp, nc, score, config, NetworkProvider.ID_NONE);
+        final NetworkScore ns = new NetworkScore.Builder().setLegacyScore(score).build();
+        return registerNetworkAgent(messenger, ni, lp, nc, ns, config, NetworkProvider.ID_NONE);
     }
 
     /**
@@ -3340,7 +3344,7 @@
      */
     @RequiresPermission(android.Manifest.permission.NETWORK_FACTORY)
     public Network registerNetworkAgent(Messenger messenger, NetworkInfo ni, LinkProperties lp,
-            NetworkCapabilities nc, int score, NetworkAgentConfig config, int providerId) {
+            NetworkCapabilities nc, NetworkScore score, NetworkAgentConfig config, int providerId) {
         try {
             return mService.registerNetworkAgent(messenger, ni, lp, nc, score, config, providerId);
         } catch (RemoteException e) {
@@ -3746,6 +3750,7 @@
         checkCallbackNotNull(callback);
         Preconditions.checkArgument(action == REQUEST || need != null, "null NetworkCapabilities");
         final NetworkRequest request;
+        final String callingPackageName = mContext.getOpPackageName();
         try {
             synchronized(sCallbacks) {
                 if (callback.networkRequest != null
@@ -3757,10 +3762,11 @@
                 Messenger messenger = new Messenger(handler);
                 Binder binder = new Binder();
                 if (action == LISTEN) {
-                    request = mService.listenForNetwork(need, messenger, binder);
+                    request = mService.listenForNetwork(
+                            need, messenger, binder, callingPackageName);
                 } else {
                     request = mService.requestNetwork(
-                            need, messenger, timeoutMs, binder, legacyType);
+                            need, messenger, timeoutMs, binder, legacyType, callingPackageName);
                 }
                 if (request != null) {
                     sCallbacks.put(request, callback);
@@ -4033,8 +4039,10 @@
             @NonNull PendingIntent operation) {
         printStackTrace();
         checkPendingIntentNotNull(operation);
+        final String callingPackageName = mContext.getOpPackageName();
         try {
-            mService.pendingRequestForNetwork(request.networkCapabilities, operation);
+            mService.pendingRequestForNetwork(
+                    request.networkCapabilities, operation, callingPackageName);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         } catch (ServiceSpecificException e) {
@@ -4146,8 +4154,10 @@
             @NonNull PendingIntent operation) {
         printStackTrace();
         checkPendingIntentNotNull(operation);
+        final String callingPackageName = mContext.getOpPackageName();
         try {
-            mService.pendingListenForNetwork(request.networkCapabilities, operation);
+            mService.pendingListenForNetwork(
+                    request.networkCapabilities, operation, callingPackageName);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         } catch (ServiceSpecificException e) {
diff --git a/core/java/android/net/IConnectivityManager.aidl b/core/java/android/net/IConnectivityManager.aidl
index 3e9e7fa..1c7628f 100644
--- a/core/java/android/net/IConnectivityManager.aidl
+++ b/core/java/android/net/IConnectivityManager.aidl
@@ -26,6 +26,7 @@
 import android.net.NetworkInfo;
 import android.net.NetworkQuotaInfo;
 import android.net.NetworkRequest;
+import android.net.NetworkScore;
 import android.net.NetworkState;
 import android.net.ISocketKeepaliveCallback;
 import android.net.ProxyInfo;
@@ -116,10 +117,18 @@
 
     boolean prepareVpn(String oldPackage, String newPackage, int userId);
 
-    void setVpnPackageAuthorization(String packageName, int userId, boolean authorized);
+    void setVpnPackageAuthorization(String packageName, int userId, int vpnType);
 
     ParcelFileDescriptor establishVpn(in VpnConfig config);
 
+    boolean provisionVpnProfile(in VpnProfile profile, String packageName);
+
+    void deleteVpnProfile(String packageName);
+
+    void startVpnProfile(String packageName);
+
+    void stopVpnProfile(String packageName);
+
     VpnConfig getVpnConfig(int userId);
 
     @UnsupportedAppUsage
@@ -154,22 +163,23 @@
     void declareNetworkRequestUnfulfillable(in NetworkRequest request);
 
     Network registerNetworkAgent(in Messenger messenger, in NetworkInfo ni, in LinkProperties lp,
-            in NetworkCapabilities nc, int score, in NetworkAgentConfig config,
+            in NetworkCapabilities nc, in NetworkScore score, in NetworkAgentConfig config,
             in int factorySerialNumber);
 
     NetworkRequest requestNetwork(in NetworkCapabilities networkCapabilities,
-            in Messenger messenger, int timeoutSec, in IBinder binder, int legacy);
+            in Messenger messenger, int timeoutSec, in IBinder binder, int legacy,
+            String callingPackageName);
 
     NetworkRequest pendingRequestForNetwork(in NetworkCapabilities networkCapabilities,
-            in PendingIntent operation);
+            in PendingIntent operation, String callingPackageName);
 
     void releasePendingNetworkRequest(in PendingIntent operation);
 
     NetworkRequest listenForNetwork(in NetworkCapabilities networkCapabilities,
-            in Messenger messenger, in IBinder binder);
+            in Messenger messenger, in IBinder binder, String callingPackageName);
 
     void pendingListenForNetwork(in NetworkCapabilities networkCapabilities,
-            in PendingIntent operation);
+            in PendingIntent operation, String callingPackageName);
 
     void releaseNetworkRequest(in NetworkRequest networkRequest);
 
@@ -213,7 +223,7 @@
     boolean isCallerCurrentAlwaysOnVpnLockdownApp();
 
     void registerConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback,
-            in NetworkRequest request);
+            in NetworkRequest request, String callingPackageName);
     void unregisterConnectivityDiagnosticsCallback(in IConnectivityDiagnosticsCallback callback);
 
     IBinder startOrGetTestNetworkService();
diff --git a/core/java/android/net/IpSecManager.java b/core/java/android/net/IpSecManager.java
index 09ec6c3..d83715c 100644
--- a/core/java/android/net/IpSecManager.java
+++ b/core/java/android/net/IpSecManager.java
@@ -51,7 +51,7 @@
  *
  * <p>Note that not all aspects of IPsec are permitted by this API. Applications may create
  * transport mode security associations and apply them to individual sockets. Applications looking
- * to create a VPN should use {@link VpnService}.
+ * to create an IPsec VPN should use {@link VpnManager} and {@link Ikev2VpnProfile}.
  *
  * @see <a href="https://tools.ietf.org/html/rfc4301">RFC 4301, Security Architecture for the
  *     Internet Protocol</a>
diff --git a/core/java/android/net/NetworkAgent.java b/core/java/android/net/NetworkAgent.java
index 7cc569a..ddf8dbb 100644
--- a/core/java/android/net/NetworkAgent.java
+++ b/core/java/android/net/NetworkAgent.java
@@ -117,13 +117,6 @@
     public static final int EVENT_NETWORK_PROPERTIES_CHANGED = BASE + 3;
 
     /**
-     * Centralize the place where base network score, and network score scaling, will be
-     * stored, so as we can consistently compare apple and oranges, or wifi, ethernet and LTE
-     * @hide
-     */
-    public static final int WIFI_BASE_SCORE = 60;
-
-    /**
      * Sent by the NetworkAgent to ConnectivityService to pass the current
      * network score.
      * obj = network score Integer
@@ -272,7 +265,13 @@
      */
     public static final int CMD_REMOVE_KEEPALIVE_PACKET_FILTER = BASE + 17;
 
+    // STOPSHIP (b/148055573) : remove this before R is released.
+    private static NetworkScore makeNetworkScore(int score) {
+        return new NetworkScore.Builder().setLegacyScore(score).build();
+    }
+
     /** @hide TODO: remove and replace usage with the public constructor. */
+    // STOPSHIP (b/148055573) : remove this before R is released.
     public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
             NetworkCapabilities nc, LinkProperties lp, int score) {
         this(looper, context, logTag, ni, nc, lp, score, null, NetworkProvider.ID_NONE);
@@ -280,6 +279,7 @@
     }
 
     /** @hide TODO: remove and replace usage with the public constructor. */
+    // STOPSHIP (b/148055573) : remove this before R is released.
     public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
             NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config) {
         this(looper, context, logTag, ni, nc, lp, score, config, NetworkProvider.ID_NONE);
@@ -287,6 +287,7 @@
     }
 
     /** @hide TODO: remove and replace usage with the public constructor. */
+    // STOPSHIP (b/148055573) : remove this before R is released.
     public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
             NetworkCapabilities nc, LinkProperties lp, int score, int providerId) {
         this(looper, context, logTag, ni, nc, lp, score, null, providerId);
@@ -294,10 +295,12 @@
     }
 
     /** @hide TODO: remove and replace usage with the public constructor. */
+    // STOPSHIP (b/148055573) : remove this before R is released.
     public NetworkAgent(Looper looper, Context context, String logTag, NetworkInfo ni,
             NetworkCapabilities nc, LinkProperties lp, int score, NetworkAgentConfig config,
             int providerId) {
-        this(looper, context, logTag, nc, lp, score, config, providerId, ni, true /* legacy */);
+        this(looper, context, logTag, nc, lp, makeNetworkScore(score), config, providerId, ni,
+                true /* legacy */);
         register();
     }
 
@@ -323,8 +326,9 @@
      * @param provider the {@link NetworkProvider} managing this agent.
      */
     public NetworkAgent(@NonNull Context context, @NonNull Looper looper, @NonNull String logTag,
-            @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, int score,
-            @NonNull NetworkAgentConfig config, @Nullable NetworkProvider provider) {
+            @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp,
+            @NonNull NetworkScore score, @NonNull NetworkAgentConfig config,
+            @Nullable NetworkProvider provider) {
         this(looper, context, logTag, nc, lp, score, config,
                 provider == null ? NetworkProvider.ID_NONE : provider.getProviderId(),
                 getLegacyNetworkInfo(config), false /* legacy */);
@@ -334,12 +338,12 @@
         public final Context context;
         public final NetworkCapabilities capabilities;
         public final LinkProperties properties;
-        public final int score;
+        public final NetworkScore score;
         public final NetworkAgentConfig config;
         public final NetworkInfo info;
         InitialConfiguration(@NonNull Context context, @NonNull NetworkCapabilities capabilities,
-                @NonNull LinkProperties properties, int score, @NonNull NetworkAgentConfig config,
-                @NonNull NetworkInfo info) {
+                @NonNull LinkProperties properties, @NonNull NetworkScore score,
+                @NonNull NetworkAgentConfig config, @NonNull NetworkInfo info) {
             this.context = context;
             this.capabilities = capabilities;
             this.properties = properties;
@@ -351,7 +355,7 @@
     private volatile InitialConfiguration mInitialConfiguration;
 
     private NetworkAgent(@NonNull Looper looper, @NonNull Context context, @NonNull String logTag,
-            @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, int score,
+            @NonNull NetworkCapabilities nc, @NonNull LinkProperties lp, NetworkScore score,
             @NonNull NetworkAgentConfig config, int providerId, @NonNull NetworkInfo ni,
             boolean legacy) {
         mHandler = new NetworkAgentHandler(looper);
@@ -646,22 +650,8 @@
      * Must be called by the agent to update the score of this network.
      * @param score the new score.
      */
-    public void sendNetworkScore(int score) {
-        if (score < 0) {
-            throw new IllegalArgumentException("Score must be >= 0");
-        }
-        final NetworkScore ns = new NetworkScore();
-        ns.putIntExtension(NetworkScore.LEGACY_SCORE, score);
-        updateScore(ns);
-    }
-
-    /**
-     * Must be called by the agent when it has a new {@link NetworkScore} for this network.
-     * @param ns the new score.
-     * @hide TODO: unhide the NetworkScore class, and rename to sendNetworkScore.
-     */
-    public void updateScore(@NonNull NetworkScore ns) {
-        queueOrSendMessage(EVENT_NETWORK_SCORE_CHANGED, new NetworkScore(ns));
+    public void sendNetworkScore(@NonNull final NetworkScore score) {
+        queueOrSendMessage(EVENT_NETWORK_SCORE_CHANGED, score);
     }
 
     /**
diff --git a/core/java/android/net/NetworkCapabilities.java b/core/java/android/net/NetworkCapabilities.java
index 4f4e27b..f8b51dd 100644
--- a/core/java/android/net/NetworkCapabilities.java
+++ b/core/java/android/net/NetworkCapabilities.java
@@ -27,6 +27,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.Process;
+import android.text.TextUtils;
 import android.util.ArraySet;
 import android.util.proto.ProtoOutputStream;
 
@@ -63,6 +64,16 @@
     // Set to true when private DNS is broken.
     private boolean mPrivateDnsBroken;
 
+    /**
+     * Uid of the app making the request.
+     */
+    private int mRequestorUid;
+
+    /**
+     * Package name of the app making the request.
+     */
+    private String mRequestorPackageName;
+
     public NetworkCapabilities() {
         clearAll();
         mNetworkCapabilities = DEFAULT_CAPABILITIES;
@@ -89,6 +100,8 @@
         mOwnerUid = Process.INVALID_UID;
         mSSID = null;
         mPrivateDnsBroken = false;
+        mRequestorUid = Process.INVALID_UID;
+        mRequestorPackageName = null;
     }
 
     /**
@@ -109,6 +122,8 @@
         mUnwantedNetworkCapabilities = nc.mUnwantedNetworkCapabilities;
         mSSID = nc.mSSID;
         mPrivateDnsBroken = nc.mPrivateDnsBroken;
+        mRequestorUid = nc.mRequestorUid;
+        mRequestorPackageName = nc.mRequestorPackageName;
     }
 
     /**
@@ -810,7 +825,7 @@
     }
 
     /**
-     * UID of the app that owns this network, or INVALID_UID if none/unknown.
+     * UID of the app that owns this network, or Process#INVALID_UID if none/unknown.
      *
      * <p>This field keeps track of the UID of the app that created this network and is in charge of
      * its lifecycle. This could be the UID of apps such as the Wifi network suggestor, the running
@@ -821,8 +836,9 @@
     /**
      * Set the UID of the owner app.
      */
-    public void setOwnerUid(final int uid) {
+    public @NonNull NetworkCapabilities setOwnerUid(final int uid) {
         mOwnerUid = uid;
+        return this;
     }
 
     /**
@@ -858,16 +874,18 @@
      *
      * <p>In general, user-supplied networks (such as WiFi networks) do not have an administrator.
      *
-     * <p>An app is granted owner privileges over Networks that it supplies. Owner privileges
-     * implicitly include administrator privileges.
+     * <p>An app is granted owner privileges over Networks that it supplies. The owner UID MUST
+     * always be included in administratorUids.
      *
      * @param administratorUids the UIDs to be set as administrators of this Network.
      * @hide
      */
     @SystemApi
-    public void setAdministratorUids(@NonNull final List<Integer> administratorUids) {
+    public @NonNull NetworkCapabilities setAdministratorUids(
+            @NonNull final List<Integer> administratorUids) {
         mAdministratorUids.clear();
         mAdministratorUids.addAll(administratorUids);
+        return this;
     }
 
     /**
@@ -1385,6 +1403,7 @@
         combineSignalStrength(nc);
         combineUids(nc);
         combineSSIDs(nc);
+        combineRequestor(nc);
     }
 
     /**
@@ -1404,7 +1423,8 @@
                 && satisfiedBySpecifier(nc)
                 && (onlyImmutable || satisfiedBySignalStrength(nc))
                 && (onlyImmutable || satisfiedByUids(nc))
-                && (onlyImmutable || satisfiedBySSID(nc)));
+                && (onlyImmutable || satisfiedBySSID(nc)))
+                && (onlyImmutable || satisfiedByRequestor(nc));
     }
 
     /**
@@ -1488,7 +1508,7 @@
     public boolean equals(@Nullable Object obj) {
         if (obj == null || (obj instanceof NetworkCapabilities == false)) return false;
         NetworkCapabilities that = (NetworkCapabilities) obj;
-        return (equalsNetCapabilities(that)
+        return equalsNetCapabilities(that)
                 && equalsTransportTypes(that)
                 && equalsLinkBandwidths(that)
                 && equalsSignalStrength(that)
@@ -1496,7 +1516,8 @@
                 && equalsTransportInfo(that)
                 && equalsUids(that)
                 && equalsSSID(that)
-                && equalsPrivateDnsBroken(that));
+                && equalsPrivateDnsBroken(that)
+                && equalsRequestor(that);
     }
 
     @Override
@@ -1514,7 +1535,9 @@
                 + Objects.hashCode(mUids) * 31
                 + Objects.hashCode(mSSID) * 37
                 + Objects.hashCode(mTransportInfo) * 41
-                + Objects.hashCode(mPrivateDnsBroken) * 43;
+                + Objects.hashCode(mPrivateDnsBroken) * 43
+                + Objects.hashCode(mRequestorUid) * 47
+                + Objects.hashCode(mRequestorPackageName) * 53;
     }
 
     @Override
@@ -1537,6 +1560,8 @@
         dest.writeBoolean(mPrivateDnsBroken);
         dest.writeList(mAdministratorUids);
         dest.writeInt(mOwnerUid);
+        dest.writeInt(mRequestorUid);
+        dest.writeString(mRequestorPackageName);
     }
 
     public static final @android.annotation.NonNull Creator<NetworkCapabilities> CREATOR =
@@ -1559,6 +1584,8 @@
                 netCap.mPrivateDnsBroken = in.readBoolean();
                 netCap.setAdministratorUids(in.readArrayList(null));
                 netCap.mOwnerUid = in.readInt();
+                netCap.mRequestorUid = in.readInt();
+                netCap.mRequestorPackageName = in.readString();
                 return netCap;
             }
             @Override
@@ -1624,6 +1651,9 @@
             sb.append(" Private DNS is broken");
         }
 
+        sb.append(" RequestorUid: ").append(mRequestorUid);
+        sb.append(" RequestorPackageName: ").append(mRequestorPackageName);
+
         sb.append("]");
         return sb.toString();
     }
@@ -1632,6 +1662,7 @@
     private interface NameOf {
         String nameOf(int value);
     }
+
     /**
      * @hide
      */
@@ -1799,4 +1830,120 @@
     private boolean equalsPrivateDnsBroken(NetworkCapabilities nc) {
         return mPrivateDnsBroken == nc.mPrivateDnsBroken;
     }
+
+    /**
+     * Set the uid of the app making the request.
+     *
+     * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in
+     * via the public {@link ConnectivityManager} API's will have this field overwritten.
+     *
+     * @param uid UID of the app.
+     * @hide
+     */
+    @SystemApi
+    public @NonNull NetworkCapabilities setRequestorUid(int uid) {
+        mRequestorUid = uid;
+        return this;
+    }
+
+    /**
+     * @return the uid of the app making the request.
+     *
+     * Note: This could return {@link Process#INVALID_UID} if the {@link NetworkRequest}
+     * object was not obtained from {@link ConnectivityManager}.
+     * @hide
+     */
+    public int getRequestorUid() {
+        return mRequestorUid;
+    }
+
+    /**
+     * Set the package name of the app making the request.
+     *
+     * Note: This works only for {@link NetworkAgent} instances. Any capabilities passed in
+     * via the public {@link ConnectivityManager} API's will have this field overwritten.
+     *
+     * @param packageName package name of the app.
+     * @hide
+     */
+    @SystemApi
+    public @NonNull NetworkCapabilities setRequestorPackageName(@NonNull String packageName) {
+        mRequestorPackageName = packageName;
+        return this;
+    }
+
+    /**
+     * @return the package name of the app making the request.
+     *
+     * Note: This could return {@code null} if the {@link NetworkRequest} object was not obtained
+     * from {@link ConnectivityManager}.
+     * @hide
+     */
+    @Nullable
+    public String getRequestorPackageName() {
+        return mRequestorPackageName;
+    }
+
+    /**
+     * Set the uid and package name of the app making the request.
+     *
+     * Note: This is intended to be only invoked from within connectivitiy service.
+     *
+     * @param uid UID of the app.
+     * @param packageName package name of the app.
+     * @hide
+     */
+    public @NonNull NetworkCapabilities setRequestorUidAndPackageName(
+            int uid, @NonNull String packageName) {
+        return setRequestorUid(uid).setRequestorPackageName(packageName);
+    }
+
+    /**
+     * Test whether the passed NetworkCapabilities satisfies the requestor restrictions of this
+     * capabilities.
+     *
+     * This method is called on the NetworkCapabilities embedded in a request with the
+     * capabilities of an available network. If the available network, sets a specific
+     * requestor (by uid and optionally package name), then this will only match a request from the
+     * same app. If either of the capabilities have an unset uid or package name, then it matches
+     * everything.
+     * <p>
+     * nc is assumed nonnull. Else, NPE.
+     */
+    private boolean satisfiedByRequestor(NetworkCapabilities nc) {
+        // No uid set, matches everything.
+        if (mRequestorUid == Process.INVALID_UID || nc.mRequestorUid == Process.INVALID_UID) {
+            return true;
+        }
+        // uids don't match.
+        if (mRequestorUid != nc.mRequestorUid) return false;
+        // No package names set, matches everything
+        if (null == nc.mRequestorPackageName || null == mRequestorPackageName) return true;
+        // check for package name match.
+        return TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName);
+    }
+
+    /**
+     * Combine requestor info of the capabilities.
+     * <p>
+     * This is only legal if either the requestor info of this object is reset, or both info are
+     * equal.
+     * nc is assumed nonnull.
+     */
+    private void combineRequestor(@NonNull NetworkCapabilities nc) {
+        if (mRequestorUid != Process.INVALID_UID && mRequestorUid != nc.mOwnerUid) {
+            throw new IllegalStateException("Can't combine two uids");
+        }
+        if (mRequestorPackageName != null
+                && !mRequestorPackageName.equals(nc.mRequestorPackageName)) {
+            throw new IllegalStateException("Can't combine two package names");
+        }
+        setRequestorUid(nc.mRequestorUid);
+        setRequestorPackageName(nc.mRequestorPackageName);
+    }
+
+    private boolean equalsRequestor(NetworkCapabilities nc) {
+        return mRequestorUid == nc.mRequestorUid
+                && TextUtils.equals(mRequestorPackageName, nc.mRequestorPackageName);
+    }
 }
diff --git a/core/java/android/net/NetworkPolicyManager.java b/core/java/android/net/NetworkPolicyManager.java
index 01800c6..14442a2 100644
--- a/core/java/android/net/NetworkPolicyManager.java
+++ b/core/java/android/net/NetworkPolicyManager.java
@@ -539,13 +539,13 @@
 
     /** @hide */
     public static String resolveNetworkId(WifiConfiguration config) {
-        return WifiInfo.removeDoubleQuotes(config.isPasspoint()
+        return WifiInfo.sanitizeSsid(config.isPasspoint()
                 ? config.providerFriendlyName : config.SSID);
     }
 
     /** @hide */
     public static String resolveNetworkId(String ssid) {
-        return WifiInfo.removeDoubleQuotes(ssid);
+        return WifiInfo.sanitizeSsid(ssid);
     }
 
     /** @hide */
diff --git a/core/java/android/net/NetworkRequest.java b/core/java/android/net/NetworkRequest.java
index 301d203..964f13f 100644
--- a/core/java/android/net/NetworkRequest.java
+++ b/core/java/android/net/NetworkRequest.java
@@ -380,6 +380,7 @@
         dest.writeInt(requestId);
         dest.writeString(type.name());
     }
+
     public static final @android.annotation.NonNull Creator<NetworkRequest> CREATOR =
         new Creator<NetworkRequest>() {
             public NetworkRequest createFromParcel(Parcel in) {
@@ -494,6 +495,31 @@
         return networkCapabilities.getNetworkSpecifier();
     }
 
+    /**
+     * @return the uid of the app making the request.
+     *
+     * Note: This could return {@link Process#INVALID_UID} if the {@link NetworkRequest} object was
+     * not obtained from {@link ConnectivityManager}.
+     * @hide
+     */
+    @SystemApi
+    public int getRequestorUid() {
+        return networkCapabilities.getRequestorUid();
+    }
+
+    /**
+     * @return the package name of the app making the request.
+     *
+     * Note: This could return {@code null} if the {@link NetworkRequest} object was not obtained
+     * from {@link ConnectivityManager}.
+     * @hide
+     */
+    @SystemApi
+    @Nullable
+    public String getRequestorPackageName() {
+        return networkCapabilities.getRequestorPackageName();
+    }
+
     public String toString() {
         return "NetworkRequest [ " + type + " id=" + requestId +
                 (legacyType != ConnectivityManager.TYPE_NONE ? ", legacyType=" + legacyType : "") +
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/core/java/android/net/NetworkScore.aidl
similarity index 76%
rename from core/java/android/os/StatsDimensionsValue.aidl
rename to core/java/android/net/NetworkScore.aidl
index 81a14a4..be9a98b 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/core/java/android/net/NetworkScore.aidl
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2018, The Android Open Source Project
+ * 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.
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.net;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+parcelable NetworkScore;
diff --git a/core/java/android/net/NetworkScore.java b/core/java/android/net/NetworkScore.java
index 13f2994..ae17378 100644
--- a/core/java/android/net/NetworkScore.java
+++ b/core/java/android/net/NetworkScore.java
@@ -15,12 +15,18 @@
  */
 package android.net;
 
+import android.annotation.IntDef;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
+import android.annotation.TestApi;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
 
 /**
@@ -28,57 +34,392 @@
  *
  * A NetworkScore object represents the characteristics of a network that affects how good the
  * network is considered for a particular use.
+ *
+ * This class is not thread-safe.
  * @hide
  */
+@TestApi
+@SystemApi
 public final class NetworkScore implements Parcelable {
+    /** An object containing scoring-relevant metrics for a network. */
+    public static class Metrics {
+        /** Value meaning the latency is unknown. */
+        public static final int LATENCY_UNKNOWN = -1;
 
-    // The key of bundle which is used to get the legacy network score of NetworkAgentInfo.
-    // TODO: Remove this when the transition to NetworkScore is over.
-    public static final String LEGACY_SCORE = "LEGACY_SCORE";
+        /** Value meaning the bandwidth is unknown. */
+        public static final int BANDWIDTH_UNKNOWN = -1;
+
+        /**
+         * Round-trip delay in milliseconds to the relevant destination for this Metrics object.
+         *
+         * LATENCY_UNKNOWN if unknown.
+         */
+        @IntRange(from = LATENCY_UNKNOWN)
+        public final int latencyMs;
+
+        /**
+         * Downlink in kB/s with the relevant destination for this Metrics object.
+         *
+         * BANDWIDTH_UNKNOWN if unknown. If directional bandwidth is unknown, up and downlink
+         * bandwidth can have the same value.
+         */
+        @IntRange(from = BANDWIDTH_UNKNOWN)
+        public final int downlinkBandwidthKBps;
+
+        /**
+         * Uplink in kB/s with the relevant destination for this Metrics object.
+         *
+         * BANDWIDTH_UNKNOWN if unknown. If directional bandwidth is unknown, up and downlink
+         * bandwidth can have the same value.
+         */
+        @IntRange(from = BANDWIDTH_UNKNOWN)
+        public final int uplinkBandwidthKBps;
+
+        /** Constructor */
+        public Metrics(@IntRange(from = LATENCY_UNKNOWN) final int latency,
+                @IntRange(from = BANDWIDTH_UNKNOWN) final int downlinkBandwidth,
+                @IntRange(from = BANDWIDTH_UNKNOWN) final int uplinkBandwidth) {
+            latencyMs = latency;
+            downlinkBandwidthKBps = downlinkBandwidth;
+            uplinkBandwidthKBps = uplinkBandwidth;
+        }
+
+        /** toString */
+        public String toString() {
+            return "latency = " + latencyMs + " downlinkBandwidth = " + downlinkBandwidthKBps
+                    + "uplinkBandwidth = " + uplinkBandwidthKBps;
+        }
+
+        @NonNull
+        public static final Metrics EMPTY =
+                new Metrics(LATENCY_UNKNOWN, BANDWIDTH_UNKNOWN, BANDWIDTH_UNKNOWN);
+    }
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = "POLICY_", value = {
+            POLICY_LOCKDOWN_VPN,
+            POLICY_VPN,
+            POLICY_IGNORE_ON_WIFI,
+            POLICY_DEFAULT_SUBSCRIPTION
+    })
+    public @interface Policy {
+    }
+
+    /**
+     * This network is a VPN with lockdown enabled.
+     *
+     * If a network with this bit is present in the list of candidates and not connected,
+     * no network can satisfy the request.
+     */
+    public static final int POLICY_LOCKDOWN_VPN = 1 << 0;
+
+    /**
+     * This network is a VPN.
+     *
+     * If a network with this bit is present and the request UID is included in the UID ranges
+     * of this network, it outscores all other networks without this bit.
+     */
+    public static final int POLICY_VPN = 1 << 1;
+
+    /**
+     * This network should not be used if a previously validated WiFi network is available.
+     *
+     * If a network with this bit is present and a previously validated WiFi is present too, the
+     * network with this bit is outscored by it. This stays true if the WiFi network
+     * becomes unvalidated : this network will not be considered.
+     */
+    public static final int POLICY_IGNORE_ON_WIFI = 1 << 2;
+
+    /**
+     * This network is the default subscription for this transport.
+     *
+     * If a network with this bit is present, other networks of the same transport without this
+     * bit are outscored by it. A device with two active subscriptions and a setting
+     * to decide the default one would have this policy bit on the network for the default
+     * subscription so that when both are active at the same time, the device chooses the
+     * network associated with the default subscription rather than the one with the best link
+     * quality (which will happen if policy doesn't dictate otherwise).
+     */
+    public static final int POLICY_DEFAULT_SUBSCRIPTION = 1 << 3;
+
+    /**
+     * Policy bits for this network. Filled in by the NetworkAgent.
+     */
+    private final int mPolicy;
+
+    /**
+     * Predicted metrics to the gateway (it contains latency and bandwidth to the gateway).
+     * This is filled by the NetworkAgent with the theoretical values of the link if available,
+     * although they may fill it with predictions from historical data if available.
+     * Note that while this member cannot be null, any and all of its members can be unknown.
+     */
     @NonNull
-    private final Bundle mExtensions;
+    private final Metrics mLinkLayerMetrics;
 
-    public NetworkScore() {
-        mExtensions = new Bundle();
-    }
+    /**
+     * Predicted metrics to representative servers.
+     * This is filled by connectivity with (if available) a best-effort estimate of the performance
+     * information to servers the user connects to in similar circumstances, and predicted from
+     * actual measurements if possible.
+     * Note that while this member cannot be null, any and all of its members can be unknown.
+     */
+    @NonNull
+    private final Metrics mEndToEndMetrics;
 
-    public NetworkScore(@NonNull NetworkScore source) {
-        mExtensions = new Bundle(source.mExtensions);
+    /** Value meaning the signal strength is unknown. */
+    public static final int UNKNOWN_SIGNAL_STRENGTH = -1;
+
+    /** The smallest meaningful signal strength. */
+    public static final int MIN_SIGNAL_STRENGTH = 0;
+
+    /** The largest meaningful signal strength. */
+    public static final int MAX_SIGNAL_STRENGTH = 1000;
+
+    /**
+     * User-visible measure of the strength of the signal normalized 1~1000.
+     * This represents a measure of the signal strength for this network.
+     * If unknown, this has value UNKNOWN_SIGNAL_STRENGTH.
+     */
+    // A good way to populate this value is to fill it with the number of bars displayed in
+    // the system UI, scaled 0 to 1000. This is what the user sees and it makes sense to them.
+    // Cellular for example could quantize the ASU value (see SignalStrength#getAsuValue) into
+    // this, while WiFi could scale the RSSI (see WifiManager#calculateSignalLevel).
+    @IntRange(from = UNKNOWN_SIGNAL_STRENGTH, to = MAX_SIGNAL_STRENGTH)
+    private final int mSignalStrength;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = "RANGE_", value = {
+            RANGE_UNKNOWN, RANGE_CLOSE, RANGE_SHORT, RANGE_MEDIUM, RANGE_LONG
+    })
+    public @interface Range {
     }
 
     /**
-     * Put the value of parcelable inside the bundle by key.
+     * The range of this network is not known.
+     * This can be used by VPN the range of which depends on the range of the underlying network.
      */
-    public void putExtension(@Nullable String key, @Nullable Parcelable value) {
-        mExtensions.putParcelable(key, value);
+    public static final int RANGE_UNKNOWN = 0;
+
+    /**
+     * This network typically only operates at close range, like an NFC beacon.
+     */
+    public static final int RANGE_CLOSE = 1;
+
+    /**
+     * This network typically operates at a range of a few meters to a few dozen meters, like WiFi.
+     */
+    public static final int RANGE_SHORT = 2;
+
+    /**
+     * This network typically operates at a range of a few dozen to a few hundred meters, like CBRS.
+     */
+    public static final int RANGE_MEDIUM = 3;
+
+    /**
+     * This network typically offers continuous connectivity up to many kilometers away, like LTE.
+     */
+    public static final int RANGE_LONG = 4;
+
+    /**
+     * The typical range of this networking technology.
+     *
+     * This is one of the RANGE_* constants and is filled by the NetworkAgent.
+     * This may be useful when evaluating how desirable a network is, because for two networks that
+     * have equivalent performance and cost, the one that won't lose IP continuity when the user
+     * moves is probably preferable.
+     * Agents should fill this with the largest typical range this technology provides. See the
+     * descriptions of the individual constants for guidance.
+     *
+     * If unknown, this is set to RANGE_UNKNOWN.
+     */
+    @Range private final int mRange;
+
+    /**
+     * A prediction of whether this network is likely to be unusable in a few seconds.
+     *
+     * NetworkAgents set this to true to mean they are aware that usability is limited due to
+     * low signal strength, congestion, or other reasons, and indicates that the system should
+     * only use this network as a last resort. An example would be a WiFi network when the device
+     * is about to move outside of range.
+     *
+     * This is filled by the NetworkAgent. Agents that don't know whether this network is likely
+     * to be unusable soon should set this to false.
+     */
+    private final boolean mExiting;
+
+    /**
+     * The legacy score, as a migration strategy from Q to R.
+     * STOPSHIP : remove this before R ships.
+     */
+    private final int mLegacyScore;
+
+    /**
+     * Create a new NetworkScore object.
+     */
+    private NetworkScore(@Policy final int policy, @Nullable final Metrics l2Perf,
+            @Nullable final Metrics e2ePerf,
+            @IntRange(from = UNKNOWN_SIGNAL_STRENGTH, to = MAX_SIGNAL_STRENGTH)
+            final int signalStrength,
+            @Range final int range, final boolean exiting, final int legacyScore) {
+        mPolicy = policy;
+        mLinkLayerMetrics = null != l2Perf ? l2Perf : Metrics.EMPTY;
+        mEndToEndMetrics = null != e2ePerf ? e2ePerf : Metrics.EMPTY;
+        mSignalStrength = signalStrength;
+        mRange = range;
+        mExiting = exiting;
+        mLegacyScore = legacyScore;
     }
 
     /**
-     * Put the value of int inside the bundle by key.
+     * Utility function to return a copy of this with a different exiting value.
      */
-    public void putIntExtension(@Nullable String key, int value) {
-        mExtensions.putInt(key, value);
+    @NonNull public NetworkScore withExiting(final boolean exiting) {
+        return new NetworkScore(mPolicy, mLinkLayerMetrics, mEndToEndMetrics,
+                mSignalStrength, mRange, exiting, mLegacyScore);
     }
 
     /**
-     * Get the value of non primitive type by key.
+     * Utility function to return a copy of this with a different signal strength.
      */
-    public <T extends Parcelable> T getExtension(@Nullable String key) {
-        return mExtensions.getParcelable(key);
+    @NonNull public NetworkScore withSignalStrength(
+            @IntRange(from = UNKNOWN_SIGNAL_STRENGTH) final int signalStrength) {
+        return new NetworkScore(mPolicy, mLinkLayerMetrics, mEndToEndMetrics,
+                signalStrength, mRange, mExiting, mLegacyScore);
     }
 
     /**
-     * Get the value of int by key.
+     * Returns whether this network has a particular policy flag.
+     * @param policy the policy, as one of the POLICY_* constants.
      */
-    public int getIntExtension(@Nullable String key) {
-        return mExtensions.getInt(key);
+    public boolean hasPolicy(@Policy final int policy) {
+        return 0 != (mPolicy & policy);
     }
 
     /**
-     * Remove the entry by given key.
+     * Returns the Metrics representing the performance of the link layer.
+     *
+     * This contains the theoretical performance of the link, if available.
+     * Note that while this function cannot return null, any and/or all of the members of the
+     * returned object can be null if unknown.
      */
-    public void removeExtension(@Nullable String key) {
-        mExtensions.remove(key);
+    @NonNull public Metrics getLinkLayerMetrics() {
+        return mLinkLayerMetrics;
+    }
+
+    /**
+     * Returns the Metrics representing the end-to-end performance of the network.
+     *
+     * This contains the end-to-end performance of the link, if available.
+     * Note that while this function cannot return null, any and/or all of the members of the
+     * returned object can be null if unknown.
+     */
+    @NonNull public Metrics getEndToEndMetrics() {
+        return mEndToEndMetrics;
+    }
+
+    /**
+     * Returns the signal strength of this network normalized 0~1000, or UNKNOWN_SIGNAL_STRENGTH.
+     */
+    @IntRange(from = UNKNOWN_SIGNAL_STRENGTH, to = MAX_SIGNAL_STRENGTH)
+    public int getSignalStrength() {
+        return mSignalStrength;
+    }
+
+    /**
+     * Returns the typical range of this network technology as one of the RANGE_* constants.
+     */
+    @Range public int getRange() {
+        return mRange;
+    }
+
+    /** Returns a prediction of whether this network is likely to be unusable in a few seconds. */
+    public boolean isExiting() {
+        return mExiting;
+    }
+
+    /**
+     * Get the legacy score.
+     * @hide
+     */
+    public int getLegacyScore() {
+        return mLegacyScore;
+    }
+
+    /** Builder for NetworkScore. */
+    public static class Builder {
+        private int mPolicy = 0;
+        @NonNull
+        private Metrics mLinkLayerMetrics = new Metrics(Metrics.LATENCY_UNKNOWN,
+                Metrics.BANDWIDTH_UNKNOWN, Metrics.BANDWIDTH_UNKNOWN);
+        @NonNull
+        private Metrics mEndToMetrics = new Metrics(Metrics.LATENCY_UNKNOWN,
+                Metrics.BANDWIDTH_UNKNOWN, Metrics.BANDWIDTH_UNKNOWN);
+        private int mSignalStrength = UNKNOWN_SIGNAL_STRENGTH;
+        private int mRange = RANGE_UNKNOWN;
+        private boolean mExiting = false;
+        private int mLegacyScore = 0;
+        @NonNull private Bundle mExtensions = new Bundle();
+
+        /** Create a new builder. */
+        public Builder() { }
+
+        /** Add a policy flag. */
+        @NonNull public Builder addPolicy(@Policy final int policy) {
+            mPolicy |= policy;
+            return this;
+        }
+
+        /** Clear a policy flag */
+        @NonNull public Builder clearPolicy(@Policy final int policy) {
+            mPolicy &= ~policy;
+            return this;
+        }
+
+        /** Set the link layer metrics. */
+        @NonNull public Builder setLinkLayerMetrics(@NonNull final Metrics linkLayerMetrics) {
+            mLinkLayerMetrics = linkLayerMetrics;
+            return this;
+        }
+
+        /** Set the end-to-end metrics. */
+        @NonNull public Builder setEndToEndMetrics(@NonNull final Metrics endToEndMetrics) {
+            mEndToMetrics = endToEndMetrics;
+            return this;
+        }
+
+        /** Set the signal strength. */
+        @NonNull public Builder setSignalStrength(
+                @IntRange(from = UNKNOWN_SIGNAL_STRENGTH, to = MAX_SIGNAL_STRENGTH)
+                        final int signalStrength) {
+            mSignalStrength = signalStrength;
+            return this;
+        }
+
+        /** Set the range. */
+        @NonNull public Builder setRange(@Range final int range) {
+            mRange = range;
+            return this;
+        }
+
+        /** Set whether this network is exiting. */
+        @NonNull public Builder setExiting(final boolean exiting) {
+            mExiting = exiting;
+            return this;
+        }
+
+        /** Add a parcelable extension. */
+        @NonNull public Builder setLegacyScore(final int legacyScore) {
+            mLegacyScore = legacyScore;
+            return this;
+        }
+
+        /** Build the NetworkScore object represented by this builder. */
+        @NonNull public NetworkScore build() {
+            return new NetworkScore(mPolicy, mLinkLayerMetrics, mEndToMetrics,
+                    mSignalStrength, mRange, mExiting, mLegacyScore);
+        }
     }
 
     @Override
@@ -88,9 +429,17 @@
 
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        synchronized (this) {
-            dest.writeBundle(mExtensions);
-        }
+        dest.writeInt(mPolicy);
+        dest.writeInt(mLinkLayerMetrics.latencyMs);
+        dest.writeInt(mLinkLayerMetrics.downlinkBandwidthKBps);
+        dest.writeInt(mLinkLayerMetrics.uplinkBandwidthKBps);
+        dest.writeInt(mEndToEndMetrics.latencyMs);
+        dest.writeInt(mEndToEndMetrics.downlinkBandwidthKBps);
+        dest.writeInt(mEndToEndMetrics.uplinkBandwidthKBps);
+        dest.writeInt(mSignalStrength);
+        dest.writeInt(mRange);
+        dest.writeBoolean(mExiting);
+        dest.writeInt(mLegacyScore);
     }
 
     public static final @NonNull Creator<NetworkScore> CREATOR = new Creator<NetworkScore>() {
@@ -106,57 +455,52 @@
     };
 
     private NetworkScore(@NonNull Parcel in) {
-        mExtensions = in.readBundle();
+        mPolicy = in.readInt();
+        mLinkLayerMetrics = new Metrics(in.readInt(), in.readInt(), in.readInt());
+        mEndToEndMetrics = new Metrics(in.readInt(), in.readInt(), in.readInt());
+        mSignalStrength = in.readInt();
+        mRange = in.readInt();
+        mExiting = in.readBoolean();
+        mLegacyScore = in.readInt();
     }
 
-    // TODO: Modify this method once new fields are added into this class.
     @Override
     public boolean equals(@Nullable Object obj) {
         if (!(obj instanceof NetworkScore)) {
             return false;
         }
         final NetworkScore other = (NetworkScore) obj;
-        return bundlesEqual(mExtensions, other.mExtensions);
+        return mPolicy == other.mPolicy
+                && mLinkLayerMetrics.latencyMs == other.mLinkLayerMetrics.latencyMs
+                && mLinkLayerMetrics.uplinkBandwidthKBps
+                == other.mLinkLayerMetrics.uplinkBandwidthKBps
+                && mEndToEndMetrics.latencyMs == other.mEndToEndMetrics.latencyMs
+                && mEndToEndMetrics.uplinkBandwidthKBps
+                == other.mEndToEndMetrics.uplinkBandwidthKBps
+                && mSignalStrength == other.mSignalStrength
+                && mRange == other.mRange
+                && mExiting == other.mExiting
+                && mLegacyScore == other.mLegacyScore;
     }
 
     @Override
     public int hashCode() {
-        int result = 29;
-        for (String key : mExtensions.keySet()) {
-            final Object value = mExtensions.get(key);
-            // The key may be null, so call Objects.hash() is safer.
-            result += 31 * value.hashCode() + 37 * Objects.hash(key);
-        }
-        return result;
-    }
-
-    // mExtensions won't be null since the constructor will create it.
-    private boolean bundlesEqual(@NonNull Bundle bundle1, @NonNull Bundle bundle2) {
-        if (bundle1 == bundle2) {
-            return true;
-        }
-
-        // This is unlikely but it's fine to add this clause here.
-        if (null == bundle1 || null == bundle2) {
-            return false;
-        }
-
-        if (bundle1.size() != bundle2.size()) {
-            return false;
-        }
-
-        for (String key : bundle1.keySet()) {
-            final Object value1 = bundle1.get(key);
-            final Object value2 = bundle2.get(key);
-            if (!Objects.equals(value1, value2)) {
-                return false;
-            }
-        }
-        return true;
+        return Objects.hash(mPolicy,
+                mLinkLayerMetrics.latencyMs, mLinkLayerMetrics.uplinkBandwidthKBps,
+                mEndToEndMetrics.latencyMs, mEndToEndMetrics.uplinkBandwidthKBps,
+                mSignalStrength, mRange, mExiting, mLegacyScore);
     }
 
     /** Convert to a string */
     public String toString() {
-        return "NetworkScore[" + mExtensions.toString() + "]";
+        return "NetworkScore ["
+                + "Policy = " + mPolicy
+                + " LinkLayerMetrics = " + mLinkLayerMetrics
+                + " EndToEndMetrics = " + mEndToEndMetrics
+                + " SignalStrength = " + mSignalStrength
+                + " Range = " + mRange
+                + " Exiting = " + mExiting
+                + " LegacyScore = " + mLegacyScore
+                + "]";
     }
 }
diff --git a/core/java/android/net/NetworkSpecifier.java b/core/java/android/net/NetworkSpecifier.java
index cf31d21..2dd0c4e 100644
--- a/core/java/android/net/NetworkSpecifier.java
+++ b/core/java/android/net/NetworkSpecifier.java
@@ -39,23 +39,6 @@
 
     /**
      * Optional method which can be overridden by concrete implementations of NetworkSpecifier to
-     * check a self-reported UID. A concrete implementation may contain a UID which would be self-
-     * reported by the caller (since NetworkSpecifier implementations should be non-mutable). This
-     * function is called by ConnectivityService and is passed the actual UID of the caller -
-     * allowing the verification of the self-reported UID. In cases of mismatch the implementation
-     * should throw a SecurityException.
-     *
-     * @param requestorUid The UID of the requestor as obtained from its binder.
-     *
-     * @hide
-     */
-    @SystemApi
-    public void assertValidFromUid(int requestorUid) {
-        // empty
-    }
-
-    /**
-     * Optional method which can be overridden by concrete implementations of NetworkSpecifier to
      * perform any redaction of information from the NetworkSpecifier, e.g. if it contains
      * sensitive information. The default implementation simply returns the object itself - i.e.
      * no information is redacted. A concrete implementation may return a modified (copy) of the
diff --git a/core/java/android/net/NetworkStats.java b/core/java/android/net/NetworkStats.java
index 96d7a80..2f536ff 100644
--- a/core/java/android/net/NetworkStats.java
+++ b/core/java/android/net/NetworkStats.java
@@ -18,6 +18,7 @@
 
 import static android.os.Process.CLAT_UID;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
@@ -35,6 +36,8 @@
 
 import java.io.CharArrayWriter;
 import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Map;
@@ -100,6 +103,19 @@
      */
     public static final int SET_DBG_VPN_OUT = 1002;
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "SET_" }, value = {
+            SET_ALL,
+            SET_DEFAULT,
+            SET_FOREGROUND,
+            SET_DEBUG_START,
+            SET_DBG_VPN_IN,
+            SET_DBG_VPN_OUT
+    })
+    public @interface State {
+    }
+
     /**
      * Include all interfaces when filtering
      * @hide
@@ -120,6 +136,17 @@
     /** {@link #metered} value where metered data is accounted. */
     public static final int METERED_YES = 1;
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "METERED_" }, value = {
+            METERED_ALL,
+            METERED_NO,
+            METERED_YES
+    })
+    public @interface Meteredness {
+    }
+
+
     /**
      * {@link #roaming} value to account for all roaming states.
      * @hide
@@ -130,6 +157,16 @@
     /** {@link #roaming} value where roaming data is accounted. */
     public static final int ROAMING_YES = 1;
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "ROAMING_" }, value = {
+            ROAMING_ALL,
+            ROAMING_NO,
+            ROAMING_YES
+    })
+    public @interface Roaming {
+    }
+
     /**
      * {@link #onDefaultNetwork} value to account for all default network states.
      * @hide
@@ -140,6 +177,16 @@
     /** {@link #onDefaultNetwork} value to account for usage while the default network. */
     public static final int DEFAULT_NETWORK_YES = 1;
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "DEFAULT_NETWORK_" }, value = {
+            DEFAULT_NETWORK_ALL,
+            DEFAULT_NETWORK_NO,
+            DEFAULT_NETWORK_YES
+    })
+    public @interface DefaultNetwork {
+    }
+
     /**
      * Denotes a request for stats at the interface level.
      * @hide
@@ -151,6 +198,15 @@
      */
     public static final int STATS_PER_UID = 1;
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "STATS_PER_" }, value = {
+            STATS_PER_IFACE,
+            STATS_PER_UID
+    })
+    public @interface StatsType {
+    }
+
     private static final String CLATD_INTERFACE_PREFIX = "v4-";
     // Delta between IPv4 header (20b) and IPv6 header (40b).
     // Used for correct stats accounting on clatd interfaces.
@@ -263,9 +319,9 @@
                     rxBytes, rxPackets, txBytes, txPackets, operations);
         }
 
-        public Entry(@Nullable String iface, int uid, int set, int tag, int metered, int roaming,
-                 int defaultNetwork, long rxBytes, long rxPackets, long txBytes, long txPackets,
-                 long operations) {
+        public Entry(@Nullable String iface, int uid, @State int set, int tag,
+                @Meteredness int metered, @Roaming int roaming, @DefaultNetwork int defaultNetwork,
+                long rxBytes, long rxPackets, long txBytes, long txPackets, long operations) {
             this.iface = iface;
             this.uid = uid;
             this.set = set;
diff --git a/core/java/android/net/NetworkStatsHistory.java b/core/java/android/net/NetworkStatsHistory.java
index 6d46c20..3c1b86b 100644
--- a/core/java/android/net/NetworkStatsHistory.java
+++ b/core/java/android/net/NetworkStatsHistory.java
@@ -548,32 +548,32 @@
         final int startIndex = getIndexAfter(end);
         for (int i = startIndex; i >= 0; i--) {
             final long curStart = bucketStart[i];
-            final long curEnd = curStart + bucketDuration;
+            long curEnd = curStart + bucketDuration;
 
             // bucket is older than request; we're finished
             if (curEnd <= start) break;
             // bucket is newer than request; keep looking
             if (curStart >= end) continue;
 
-            // include full value for active buckets, otherwise only fractional
-            final boolean activeBucket = curStart < now && curEnd > now;
-            final long overlap;
-            if (activeBucket) {
-                overlap = bucketDuration;
-            } else {
-                final long overlapEnd = curEnd < end ? curEnd : end;
-                final long overlapStart = curStart > start ? curStart : start;
-                overlap = overlapEnd - overlapStart;
-            }
+            // the active bucket is shorter then a normal completed bucket
+            if (curEnd > now) curEnd = now;
+            // usually this is simply bucketDuration
+            final long bucketSpan = curEnd - curStart;
+            // prevent division by zero
+            if (bucketSpan <= 0) continue;
+
+            final long overlapEnd = curEnd < end ? curEnd : end;
+            final long overlapStart = curStart > start ? curStart : start;
+            final long overlap = overlapEnd - overlapStart;
             if (overlap <= 0) continue;
 
             // integer math each time is faster than floating point
-            if (activeTime != null) entry.activeTime += activeTime[i] * overlap / bucketDuration;
-            if (rxBytes != null) entry.rxBytes += rxBytes[i] * overlap / bucketDuration;
-            if (rxPackets != null) entry.rxPackets += rxPackets[i] * overlap / bucketDuration;
-            if (txBytes != null) entry.txBytes += txBytes[i] * overlap / bucketDuration;
-            if (txPackets != null) entry.txPackets += txPackets[i] * overlap / bucketDuration;
-            if (operations != null) entry.operations += operations[i] * overlap / bucketDuration;
+            if (activeTime != null) entry.activeTime += activeTime[i] * overlap / bucketSpan;
+            if (rxBytes != null) entry.rxBytes += rxBytes[i] * overlap / bucketSpan;
+            if (rxPackets != null) entry.rxPackets += rxPackets[i] * overlap / bucketSpan;
+            if (txBytes != null) entry.txBytes += txBytes[i] * overlap / bucketSpan;
+            if (txPackets != null) entry.txPackets += txPackets[i] * overlap / bucketSpan;
+            if (operations != null) entry.operations += operations[i] * overlap / bucketSpan;
         }
         return entry;
     }
diff --git a/core/java/android/net/NetworkTemplate.java b/core/java/android/net/NetworkTemplate.java
index 5e6c47a..5498f74 100644
--- a/core/java/android/net/NetworkTemplate.java
+++ b/core/java/android/net/NetworkTemplate.java
@@ -32,7 +32,7 @@
 import static android.net.NetworkStats.ROAMING_ALL;
 import static android.net.NetworkStats.ROAMING_NO;
 import static android.net.NetworkStats.ROAMING_YES;
-import static android.net.wifi.WifiInfo.removeDoubleQuotes;
+import static android.net.wifi.WifiInfo.sanitizeSsid;
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
@@ -401,7 +401,7 @@
         switch (ident.mType) {
             case TYPE_WIFI:
                 return Objects.equals(
-                        removeDoubleQuotes(mNetworkId), removeDoubleQuotes(ident.mNetworkId));
+                        sanitizeSsid(mNetworkId), sanitizeSsid(ident.mNetworkId));
             default:
                 return false;
         }
diff --git a/core/java/android/net/VpnManager.java b/core/java/android/net/VpnManager.java
index f95807a..f19ba0f 100644
--- a/core/java/android/net/VpnManager.java
+++ b/core/java/android/net/VpnManager.java
@@ -18,10 +18,22 @@
 
 import static com.android.internal.util.Preconditions.checkNotNull;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.Activity;
+import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
+import android.os.RemoteException;
+
+import com.android.internal.net.VpnProfile;
+
+import java.io.IOException;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.security.GeneralSecurityException;
 
 /**
  * This class provides an interface for apps to manage platform VPN profiles
@@ -38,9 +50,30 @@
  * @see Ikev2VpnProfile
  */
 public class VpnManager {
+    /** Type representing a lack of VPN @hide */
+    public static final int TYPE_VPN_NONE = -1;
+    /** VPN service type code @hide */
+    public static final int TYPE_VPN_SERVICE = 1;
+    /** Platform VPN type code @hide */
+    public static final int TYPE_VPN_PLATFORM = 2;
+
+    /** @hide */
+    @IntDef(value = {TYPE_VPN_NONE, TYPE_VPN_SERVICE, TYPE_VPN_PLATFORM})
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface VpnType {}
+
     @NonNull private final Context mContext;
     @NonNull private final IConnectivityManager mService;
 
+    private static Intent getIntentForConfirmation() {
+        final Intent intent = new Intent();
+        final ComponentName componentName = ComponentName.unflattenFromString(
+                Resources.getSystem().getString(
+                        com.android.internal.R.string.config_platformVpnConfirmDialogComponent));
+        intent.setComponent(componentName);
+        return intent;
+    }
+
     /**
      * Create an instance of the VpnManger with the given context.
      *
@@ -57,18 +90,49 @@
     /**
      * Install a VpnProfile configuration keyed on the calling app's package name.
      *
-     * @param profile the PlatformVpnProfile provided by this package. Will override any previous
-     *     PlatformVpnProfile stored for this package.
-     * @return an intent to request user consent if needed (null otherwise).
+     * <p>This method returns {@code null} if user consent has already been granted, or an {@link
+     * Intent} to a system activity. If an intent is returned, the application should launch the
+     * activity using {@link Activity#startActivityForResult} to request user consent. The activity
+     * may pop up a dialog to require user action, and the result will come back via its {@link
+     * Activity#onActivityResult}. If the result is {@link Activity#RESULT_OK}, the user has
+     * consented, and the VPN profile can be started.
+     *
+     * @param profile the VpnProfile provided by this package. Will override any previous VpnProfile
+     *     stored for this package.
+     * @return an Intent requesting user consent to start the VPN, or null if consent is not
+     *     required based on privileges or previous user consent.
      */
     @Nullable
     public Intent provisionVpnProfile(@NonNull PlatformVpnProfile profile) {
-        throw new UnsupportedOperationException("Not yet implemented");
+        final VpnProfile internalProfile;
+
+        try {
+            internalProfile = profile.toVpnProfile();
+        } catch (GeneralSecurityException | IOException e) {
+            // Conversion to VpnProfile failed; this is an invalid profile. Both of these exceptions
+            // indicate a failure to convert a PrivateKey or X509Certificate to a Base64 encoded
+            // string as required by the VpnProfile.
+            throw new IllegalArgumentException("Failed to serialize PlatformVpnProfile", e);
+        }
+
+        try {
+            // Profile can never be null; it either gets set, or an exception is thrown.
+            if (mService.provisionVpnProfile(internalProfile, mContext.getOpPackageName())) {
+                return null;
+            }
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return getIntentForConfirmation();
     }
 
     /** Delete the VPN profile configuration that was provisioned by the calling app */
     public void deleteProvisionedVpnProfile() {
-        throw new UnsupportedOperationException("Not yet implemented");
+        try {
+            mService.deleteVpnProfile(mContext.getOpPackageName());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
     }
 
     /**
@@ -78,11 +142,19 @@
      *     setup, or if user consent has not been granted
      */
     public void startProvisionedVpnProfile() {
-        throw new UnsupportedOperationException("Not yet implemented");
+        try {
+            mService.startVpnProfile(mContext.getOpPackageName());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
     }
 
     /** Tear down the VPN provided by the calling app (if any) */
     public void stopProvisionedVpnProfile() {
-        throw new UnsupportedOperationException("Not yet implemented");
+        try {
+            mService.stopVpnProfile(mContext.getOpPackageName());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
     }
 }
diff --git a/core/java/android/net/VpnService.java b/core/java/android/net/VpnService.java
index 4b804b0..63e5107 100644
--- a/core/java/android/net/VpnService.java
+++ b/core/java/android/net/VpnService.java
@@ -234,7 +234,7 @@
             if (!cm.prepareVpn(packageName, null, userId)) {
                 cm.prepareVpn(null, packageName, userId);
             }
-            cm.setVpnPackageAuthorization(packageName, userId, true);
+            cm.setVpnPackageAuthorization(packageName, userId, VpnManager.TYPE_VPN_SERVICE);
         } catch (RemoteException e) {
             // ignore
         }
diff --git a/core/java/android/os/Binder.java b/core/java/android/os/Binder.java
index a90ab85..fe7c7c9 100644
--- a/core/java/android/os/Binder.java
+++ b/core/java/android/os/Binder.java
@@ -996,6 +996,18 @@
         return 0;
     }
 
+    /** @hide */
+    @Override
+    public final native @Nullable IBinder getExtension();
+
+    /**
+     * Set the binder extension.
+     * This should be called immediately when the object is created.
+     *
+     * @hide
+     */
+    public final native void setExtension(@Nullable IBinder extension);
+
     /**
      * Default implementation rewinds the parcels and calls onTransact.  On
      * the remote side, transact calls into the binder to do the IPC.
diff --git a/core/java/android/os/BinderProxy.java b/core/java/android/os/BinderProxy.java
index ac70b52..be307ab 100644
--- a/core/java/android/os/BinderProxy.java
+++ b/core/java/android/os/BinderProxy.java
@@ -455,6 +455,10 @@
         return null;
     }
 
+    /** @hide */
+    @Override
+    public native @Nullable IBinder getExtension() throws RemoteException;
+
     /**
      * Perform a binder transaction on a proxy.
      *
diff --git a/core/java/android/os/Build.java b/core/java/android/os/Build.java
index a291734..70b2db7 100755
--- a/core/java/android/os/Build.java
+++ b/core/java/android/os/Build.java
@@ -240,6 +240,13 @@
         public static final String RELEASE = getString("ro.build.version.release");
 
         /**
+         * The version string we show to the user; may be {@link #RELEASE} or
+         * {@link #CODENAME} if not a final release build.
+         */
+        @NonNull public static final String RELEASE_OR_CODENAME = getString(
+                "ro.build.version.release_or_codename");
+
+        /**
          * The base OS build the product is based on.
          */
         public static final String BASE_OS = SystemProperties.get("ro.build.version.base_os", "");
diff --git a/core/java/android/os/Environment.java b/core/java/android/os/Environment.java
index 44f12a6..21a1e0f 100644
--- a/core/java/android/os/Environment.java
+++ b/core/java/android/os/Environment.java
@@ -34,9 +34,11 @@
 import android.util.Log;
 
 import java.io.File;
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.LinkedList;
+import java.util.List;
 
 /**
  * Provides access to environment variables.
@@ -539,12 +541,21 @@
     @SystemApi
     public static @NonNull Collection<File> getInternalMediaDirectories() {
         final ArrayList<File> res = new ArrayList<>();
-        res.add(new File(Environment.getRootDirectory(), "media"));
-        res.add(new File(Environment.getOemDirectory(), "media"));
-        res.add(new File(Environment.getProductDirectory(), "media"));
+        addCanonicalFile(res, new File(Environment.getRootDirectory(), "media"));
+        addCanonicalFile(res, new File(Environment.getOemDirectory(), "media"));
+        addCanonicalFile(res, new File(Environment.getProductDirectory(), "media"));
         return res;
     }
 
+    private static void addCanonicalFile(List<File> list, File file) {
+        try {
+            list.add(file.getCanonicalFile());
+        } catch (IOException e) {
+            Log.w(TAG, "Failed to resolve " + file + ": " + e);
+            list.add(file);
+        }
+    }
+
     /**
      * Return the primary shared/external storage directory. This directory may
      * not currently be accessible if it has been mounted by the user on their
diff --git a/core/java/android/os/IBinder.java b/core/java/android/os/IBinder.java
index f5fe9c3..486ec2a 100644
--- a/core/java/android/os/IBinder.java
+++ b/core/java/android/os/IBinder.java
@@ -257,6 +257,18 @@
             @NonNull ResultReceiver resultReceiver) throws RemoteException;
 
     /**
+     * Get the binder extension of this binder interface.
+     * This allows one to customize an interface without having to modify the original interface.
+     *
+     * @return null if don't have binder extension
+     * @throws RemoteException
+     * @hide
+     */
+    public default @Nullable IBinder getExtension() throws RemoteException {
+        throw new IllegalStateException("Method is not implemented");
+    }
+
+    /**
      * Perform a generic operation with the object.
      * 
      * @param code The action to perform.  This should
diff --git a/core/java/android/os/IPowerManager.aidl b/core/java/android/os/IPowerManager.aidl
index 3ae5700..1cefbd9 100644
--- a/core/java/android/os/IPowerManager.aidl
+++ b/core/java/android/os/IPowerManager.aidl
@@ -49,6 +49,7 @@
     void goToSleep(long time, int reason, int flags);
     @UnsupportedAppUsage(maxTargetSdk = 28)
     void nap(long time);
+    float getBrightnessConstraint(int constraint);
     @UnsupportedAppUsage
     boolean isInteractive();
     boolean isPowerSaveMode();
diff --git a/core/java/android/os/IVibratorService.aidl b/core/java/android/os/IVibratorService.aidl
index e201e43..84013e7 100644
--- a/core/java/android/os/IVibratorService.aidl
+++ b/core/java/android/os/IVibratorService.aidl
@@ -18,11 +18,15 @@
 
 import android.os.VibrationEffect;
 import android.os.VibrationAttributes;
+import android.os.IVibratorStateListener;
 
 /** {@hide} */
 interface IVibratorService
 {
     boolean hasVibrator();
+    boolean isVibrating();
+    boolean registerVibratorStateListener(in IVibratorStateListener listener);
+    boolean unregisterVibratorStateListener(in IVibratorStateListener listener);
     boolean hasAmplitudeControl();
     boolean[] areEffectsSupported(in int[] effectIds);
     boolean[] arePrimitivesSupported(in int[] primitiveIds);
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/core/java/android/os/IVibratorStateListener.aidl
similarity index 63%
copy from media/java/android/media/AudioDeviceAddress.aidl
copy to core/java/android/os/IVibratorStateListener.aidl
index 6a1a7f7..5ff18a3 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/core/java/android/os/IVibratorStateListener.aidl
@@ -1,4 +1,5 @@
-/* Copyright 2019, The Android Open Source Project
+/*
+** Copyright 2020, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -13,6 +14,16 @@
 ** limitations under the License.
 */
 
-package android.media;
+package android.os;
 
-parcelable AudioDeviceAddress;
+/**
+ * Listener for vibrator state.
+ * {@hide}
+ */
+oneway interface IVibratorStateListener {
+    /**
+     * Called when a vibrator start/stop vibrating.
+     * @param state the vibrator state.
+     */
+    void onVibrating(in boolean vibrating);
+}
\ No newline at end of file
diff --git a/core/java/android/os/NullVibrator.java b/core/java/android/os/NullVibrator.java
index 1d0f9d3..6d8ab6d 100644
--- a/core/java/android/os/NullVibrator.java
+++ b/core/java/android/os/NullVibrator.java
@@ -39,6 +39,11 @@
     }
 
     @Override
+    public boolean isVibrating() {
+        return false;
+    }
+
+    @Override
     public boolean hasAmplitudeControl() {
         return false;
     }
diff --git a/core/java/android/os/PowerManager.java b/core/java/android/os/PowerManager.java
index f3d3837..267613f 100644
--- a/core/java/android/os/PowerManager.java
+++ b/core/java/android/os/PowerManager.java
@@ -248,8 +248,27 @@
     public static final int BRIGHTNESS_DEFAULT = -1;
 
     /**
+     * Brightness value for an invalid value having been stored.
+     * @hide
+     */
+    public static final int BRIGHTNESS_INVALID = -1;
+
+    //Brightness values for new float implementation:
+    /**
+     * Brightness value for fully on as float.
+     * @hide
+     */
+    public static final float BRIGHTNESS_MAX = 1.0f;
+
+    /**
+     * Brightness value for minimum valid brightness as float.
+     * @hide
+     */
+    public static final float BRIGHTNESS_MIN = 0.0f;
+
+    /**
      * Brightness value for fully off in float.
-     * TODO: rename this to BRIGHTNES_OFF and remove the integer-based constant.
+     * TODO(brightnessfloat): rename this to BRIGHTNES_OFF and remove the integer-based constant.
      * @hide
      */
     public static final float BRIGHTNESS_OFF_FLOAT = -1.0f;
@@ -424,6 +443,69 @@
     /**
      * @hide
      */
+    @IntDef(prefix = { "BRIGHTNESS_CONSTRAINT_TYPE" }, value = {
+            BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM,
+            BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM,
+            BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT,
+            BRIGHTNESS_CONSTRAINT_TYPE_DIM,
+            BRIGHTNESS_CONSTRAINT_TYPE_DOZE,
+            BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR,
+            BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR,
+            BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface BrightnessConstraint{}
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM = 0;
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM = 1;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT = 2;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_DIM = 3;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_DOZE = 4;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR = 5;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR = 6;
+
+    /**
+     * Brightness constraint type: minimum allowed value.
+     * @hide
+     */
+    public static final int BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR = 7;
+
+    /**
+     * @hide
+     */
     @IntDef(prefix = { "WAKE_REASON_" }, value = {
             WAKE_REASON_UNKNOWN,
             WAKE_REASON_POWER_BUTTON,
@@ -889,6 +971,19 @@
     }
 
     /**
+     * Gets a float screen brightness setting.
+     * @hide
+     */
+    @UnsupportedAppUsage
+    public float getBrightnessConstraint(int constraint) {
+        try {
+            return mService.getBrightnessConstraint(constraint);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Creates a new wake lock with the specified level and flags.
      * <p>
      * The {@code levelAndFlags} parameter specifies a wake lock level and optional flags
diff --git a/core/java/android/os/Process.java b/core/java/android/os/Process.java
index 8daf6e8..dbe3b7b 100644
--- a/core/java/android/os/Process.java
+++ b/core/java/android/os/Process.java
@@ -113,6 +113,12 @@
     public static final int KEYSTORE_UID = 1017;
 
     /**
+     * Defines the UID/GID for credstore.
+     * @hide
+     */
+    public static final int CREDSTORE_UID = 1076;
+
+    /**
      * Defines the UID/GID for the NFC service process.
      * @hide
      */
@@ -208,6 +214,20 @@
      */
     public static final int FSVERITY_CERT_UID = 1075;
 
+    /**
+     * GID that gives write access to app-private data directories on external
+     * storage (used on devices without sdcardfs only).
+     * @hide
+     */
+    public static final int EXT_DATA_RW_GID = 1078;
+
+    /**
+     * GID that gives write access to app-private OBB directories on external
+     * storage (used on devices without sdcardfs only).
+     * @hide
+     */
+    public static final int EXT_OBB_RW_GID = 1079;
+
     /** {@hide} */
     public static final int NOBODY_UID = 9999;
 
diff --git a/core/java/android/os/RecoverySystem.java b/core/java/android/os/RecoverySystem.java
index cdcb3ff..be22458 100644
--- a/core/java/android/os/RecoverySystem.java
+++ b/core/java/android/os/RecoverySystem.java
@@ -41,7 +41,6 @@
 import android.text.format.DateFormat;
 import android.util.Log;
 import android.view.Display;
-import android.view.WindowManager;
 
 import libcore.io.Streams;
 
@@ -615,8 +614,7 @@
 
             // On TV, reboot quiescently if the screen is off
             if (context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
-                WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
-                if (wm.getDefaultDisplay().getState() != Display.STATE_ON) {
+                if (context.getDisplay().getState() != Display.STATE_ON) {
                     reason += ",quiescent";
                 }
             }
diff --git a/core/java/android/os/SharedMemory.java b/core/java/android/os/SharedMemory.java
index 26d9c7d..7512352 100644
--- a/core/java/android/os/SharedMemory.java
+++ b/core/java/android/os/SharedMemory.java
@@ -27,6 +27,7 @@
 
 import java.io.Closeable;
 import java.io.FileDescriptor;
+import java.io.IOException;
 import java.nio.ByteBuffer;
 import java.nio.DirectByteBuffer;
 import java.nio.NioUtils;
@@ -272,6 +273,20 @@
         dest.writeFileDescriptor(mFileDescriptor);
     }
 
+    /**
+     * Returns a dup'd ParcelFileDescriptor from the SharedMemory FileDescriptor.
+     * This obeys standard POSIX semantics, where the
+     * new file descriptor shared state such as file position with the
+     * original file descriptor.
+     * TODO: propose this method as a public or system API for next release to achieve parity with
+     *  NDK ASharedMemory_dupFromJava.
+     *
+     * @hide
+     */
+    public ParcelFileDescriptor getFdDup() throws IOException {
+        return ParcelFileDescriptor.dup(mFileDescriptor);
+    }
+
     public static final @android.annotation.NonNull Parcelable.Creator<SharedMemory> CREATOR =
             new Parcelable.Creator<SharedMemory>() {
         @Override
diff --git a/core/java/android/os/StatsServiceManager.java b/core/java/android/os/StatsServiceManager.java
index d032e98..de07e92 100644
--- a/core/java/android/os/StatsServiceManager.java
+++ b/core/java/android/os/StatsServiceManager.java
@@ -18,17 +18,16 @@
 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 stats
  * service.
  *
  * <p> Only the statsd mainline module will be able to access an instance of this class.
- *
- * TODO(b/148225705) Change to @SystemApi(client=MODULE_LIBRARIES) when the build system is ready.
  * @hide
  */
-@SystemApi
+@SystemApi(client = Client.MODULE_LIBRARIES)
 public class StatsServiceManager {
     /**
      * @hide
diff --git a/core/java/android/os/SystemVibrator.java b/core/java/android/os/SystemVibrator.java
index faf4a36..da20c7f 100644
--- a/core/java/android/os/SystemVibrator.java
+++ b/core/java/android/os/SystemVibrator.java
@@ -16,11 +16,17 @@
 
 package android.os;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.media.AudioAttributes;
+import android.os.IVibratorStateListener;
+import android.util.ArrayMap;
 import android.util.Log;
+import com.android.internal.annotations.GuardedBy;
+import java.util.concurrent.Executor;
+import java.util.Objects;
 
 /**
  * Vibrator implementation that controls the main system vibrator.
@@ -32,15 +38,22 @@
 
     private final IVibratorService mService;
     private final Binder mToken = new Binder();
+    private final Context mContext;
+
+    @GuardedBy("mDelegates")
+    private final ArrayMap<OnVibratorStateChangedListener,
+            OnVibratorStateChangedListenerDelegate> mDelegates = new ArrayMap<>();
 
     @UnsupportedAppUsage
     public SystemVibrator() {
+        mContext = null;
         mService = IVibratorService.Stub.asInterface(ServiceManager.getService("vibrator"));
     }
 
     @UnsupportedAppUsage
     public SystemVibrator(Context context) {
         super(context);
+        mContext = context;
         mService = IVibratorService.Stub.asInterface(ServiceManager.getService("vibrator"));
     }
 
@@ -57,6 +70,126 @@
         return false;
     }
 
+    /**
+     * Check whether the vibrator is vibrating.
+     *
+     * @return True if the hardware is vibrating, otherwise false.
+     */
+    @Override
+    public boolean isVibrating() {
+        if (mService == null) {
+            Log.w(TAG, "Failed to vibrate; no vibrator service.");
+            return false;
+        }
+        try {
+            return mService.isVibrating();
+        } catch (RemoteException e) {
+            e.rethrowFromSystemServer();
+        }
+        return false;
+    }
+
+    private class OnVibratorStateChangedListenerDelegate extends
+            IVibratorStateListener.Stub {
+        private final Executor mExecutor;
+        private final OnVibratorStateChangedListener mListener;
+
+        OnVibratorStateChangedListenerDelegate(@NonNull OnVibratorStateChangedListener listener,
+                @NonNull Executor executor) {
+            mExecutor = executor;
+            mListener = listener;
+        }
+
+        @Override
+        public void onVibrating(boolean isVibrating) {
+            mExecutor.execute(() -> mListener.onVibratorStateChanged(isVibrating));
+        }
+    }
+
+    /**
+     * Adds a listener for vibrator state change. If the listener was previously added and not
+     * removed, this call will be ignored.
+     *
+     * @param listener Listener to be added.
+     * @param executor The {@link Executor} on which the listener's callbacks will be executed on.
+     */
+    @Override
+    public void addVibratorStateListener(
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull OnVibratorStateChangedListener listener) {
+        Objects.requireNonNull(listener);
+        Objects.requireNonNull(executor);
+        if (mService == null) {
+            Log.w(TAG, "Failed to add vibrate state listener; no vibrator service.");
+            return;
+        }
+
+        synchronized (mDelegates) {
+            // If listener is already registered, reject and return.
+            if (mDelegates.containsKey(listener)) {
+                Log.w(TAG, "Listener already registered.");
+                return;
+            }
+            try {
+                final OnVibratorStateChangedListenerDelegate delegate =
+                        new OnVibratorStateChangedListenerDelegate(listener, executor);
+                if (!mService.registerVibratorStateListener(delegate)) {
+                    Log.w(TAG, "Failed to register vibrate state listener");
+                    return;
+                }
+                mDelegates.put(listener, delegate);
+            } catch (RemoteException e) {
+                throw e.rethrowFromSystemServer();
+            }
+        }
+    }
+
+    /**
+     * Adds a listener for vibrator state changes. Callbacks will be executed on the main thread.
+     * If the listener was previously added and not removed, this call will be ignored.
+     *
+     * @param listener listener to be added
+     */
+    @Override
+    public void addVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+        Objects.requireNonNull(listener);
+        if (mContext == null) {
+            Log.w(TAG, "Failed to add vibrate state listener; no vibrator context.");
+            return;
+        }
+        addVibratorStateListener(mContext.getMainExecutor(), listener);
+    }
+
+    /**
+     * Removes the listener for vibrator state changes. If the listener was not previously
+     * registered, this call will do nothing.
+     *
+     * @param listener Listener to be removed.
+     */
+    @Override
+    public void removeVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+        Objects.requireNonNull(listener);
+        if (mService == null) {
+            Log.w(TAG, "Failed to remove vibrate state listener; no vibrator service.");
+            return;
+        }
+        synchronized (mDelegates) {
+            // Check if the listener is registered, otherwise will return.
+            if (mDelegates.containsKey(listener)) {
+                final OnVibratorStateChangedListenerDelegate delegate = mDelegates.get(listener);
+                try {
+                    if (!mService.unregisterVibratorStateListener(delegate)) {
+                        Log.w(TAG, "Failed to unregister vibrate state listener");
+                        return;
+                    }
+                    mDelegates.remove(listener);
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
+                }
+            }
+        }
+    }
+
     @Override
     public boolean hasAmplitudeControl() {
         if (mService == null) {
diff --git a/core/java/android/os/TimestampedValue.java b/core/java/android/os/TimestampedValue.java
index f4c87ac..4c4335b 100644
--- a/core/java/android/os/TimestampedValue.java
+++ b/core/java/android/os/TimestampedValue.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 
 import java.util.Objects;
 
@@ -36,7 +35,6 @@
  * @param <T> the type of the value with an associated timestamp
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TimestampedValue<T> implements Parcelable {
     private final long mReferenceTimeMillis;
     @Nullable
@@ -96,7 +94,6 @@
     }
 
     /** @hide */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static final @NonNull Parcelable.Creator<TimestampedValue<?>> CREATOR =
             new Parcelable.ClassLoaderCreator<TimestampedValue<?>>() {
 
diff --git a/core/java/android/os/Trace.java b/core/java/android/os/Trace.java
index 25584f1..50cc764 100644
--- a/core/java/android/os/Trace.java
+++ b/core/java/android/os/Trace.java
@@ -101,6 +101,8 @@
     public static final long TRACE_TAG_NNAPI = 1L << 25;
     /** @hide */
     public static final long TRACE_TAG_RRO = 1L << 26;
+    /** @hide */
+    public static final long TRACE_TAG_APEX_MANAGER = 1L << 18;
 
     private static final long TRACE_TAG_NOT_READY = 1L << 63;
     private static final int MAX_SECTION_NAME_LEN = 127;
@@ -175,11 +177,7 @@
     }
 
     /**
-     * Set whether tracing is enabled in this process.  Tracing is disabled shortly after Zygote
-     * initializes and re-enabled after processes fork from Zygote.  This is done because Zygote
-     * has no way to be notified about changes to the tracing tags, and if Zygote ever reads and
-     * caches the tracing tags, forked processes will inherit those stale tags.
-     *
+     * Set whether tracing is enabled in this process.
      * @hide
      */
     public static void setTracingEnabled(boolean enabled, int debugFlags) {
diff --git a/core/java/android/os/UpdateEngine.java b/core/java/android/os/UpdateEngine.java
index 73e1adf..223f920 100644
--- a/core/java/android/os/UpdateEngine.java
+++ b/core/java/android/os/UpdateEngine.java
@@ -19,6 +19,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.WorkerThread;
 import android.content.res.AssetFileDescriptor;
 import android.os.IUpdateEngine;
 import android.os.IUpdateEngineCallback;
@@ -478,7 +479,7 @@
          * </ul>
          */
         @ErrorCode
-        public int errorCode() {
+        public int getErrorCode() {
             return mErrorCode;
         }
 
@@ -492,14 +493,15 @@
          *
          * @return The following values:
          * <ul>
-         * <li>zero if {@link #errorCode} returns {@link ErrorCodeConstants#SUCCESS}</li>
-         * <li>non-zero if {@link #errorCode} returns {@link ErrorCodeConstants#NOT_ENOUGH_SPACE}.
+         * <li>zero if {@link #getErrorCode} returns {@link ErrorCodeConstants#SUCCESS}</li>
+         * <li>non-zero if {@link #getErrorCode} returns
+         * {@link ErrorCodeConstants#NOT_ENOUGH_SPACE}.
          * Value is the estimated total space required on userdata partition.</li>
          * </ul>
-         * @throws IllegalStateException if {@link #errorCode} is not one of the above.
+         * @throws IllegalStateException if {@link #getErrorCode} is not one of the above.
          *
          */
-        public long freeSpaceRequired() {
+        public long getFreeSpaceRequired() {
             if (mErrorCode == ErrorCodeConstants.SUCCESS) {
                 return 0;
             }
@@ -507,7 +509,7 @@
                 return mFreeSpaceRequired;
             }
             throw new IllegalStateException(String.format(
-                    "freeSpaceRequired() is not available when error code is %d", mErrorCode));
+                    "getFreeSpaceRequired() is not available when error code is %d", mErrorCode));
         }
     }
 
@@ -531,8 +533,10 @@
      *
      * @param payloadMetadataFilename See {@link #verifyPayloadMetadata}.
      * @param headerKeyValuePairs See {@link #applyPayload}.
-     * @return See {@link AllocateSpaceResult}.
+     * @return See {@link AllocateSpaceResult#getErrorCode} and
+     *             {@link AllocateSpaceResult#getFreeSpaceRequired}.
      */
+    @WorkerThread
     @NonNull
     public AllocateSpaceResult allocateSpace(
                 @NonNull String payloadMetadataFilename,
@@ -583,6 +587,7 @@
      * @throws ServiceSpecificException if other transient errors has occurred.
      * A reboot may or may not help resolving the issue.
      */
+    @WorkerThread
     @ErrorCode
     public int cleanupAppliedPayload() {
         try {
diff --git a/core/java/android/os/UserManager.java b/core/java/android/os/UserManager.java
index 3564589..6d1f646 100644
--- a/core/java/android/os/UserManager.java
+++ b/core/java/android/os/UserManager.java
@@ -34,6 +34,7 @@
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.admin.DevicePolicyManager;
+import android.app.PropertyInvalidatedCache;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.ComponentName;
 import android.content.Context;
@@ -1775,9 +1776,10 @@
     }
 
     /**
-     * Returns whether the context user's user is of the given user type, such as
-     * {@link UserManager#USER_TYPE_FULL_GUEST}.
+     * Returns whether the context user is of the given user type.
      *
+     * @param userType the name of the user's user type, e.g.
+     *                 {@link UserManager#USER_TYPE_PROFILE_MANAGED}.
      * @return true if the user is of the given user type.
      * @hide
      */
@@ -1793,26 +1795,6 @@
     }
 
     /**
-     * Returns whether the given user is of the given user type, such as
-     * {@link UserManager#USER_TYPE_FULL_GUEST}.
-     *
-     * @param userHandle the user handle of the user whose type is being requested.
-     * @param userType the name of the user's user type, e.g.
-     *                 {@link UserManager#USER_TYPE_PROFILE_MANAGED}.
-     * @return true if the userHandle user is of type userType
-     * @hide
-     */
-    @SystemApi
-    @RequiresPermission(android.Manifest.permission.MANAGE_USERS)
-    public boolean isUserOfType(@NonNull UserHandle userHandle, @NonNull String userType) {
-        try {
-            return mService.isUserOfType(userHandle.getIdentifier(), userType);
-        } catch (RemoteException re) {
-            throw re.rethrowFromSystemServer();
-        }
-    }
-
-    /**
      * Returns whether the user type is a
      * {@link UserManager#USER_TYPE_PROFILE_MANAGED managed profile}.
      * @hide
@@ -2169,16 +2151,38 @@
         return isUserUnlocked(user.getIdentifier());
     }
 
+    private static final String CACHE_KEY_IS_USER_UNLOCKED_PROPERTY =
+            "cache_key.is_user_unlocked";
+
+    private final PropertyInvalidatedCache<Integer, Boolean> mIsUserUnlockedCache =
+            new PropertyInvalidatedCache<Integer, Boolean>(
+                32, CACHE_KEY_IS_USER_UNLOCKED_PROPERTY) {
+                @Override
+                protected Boolean recompute(Integer query) {
+                    try {
+                        return mService.isUserUnlocked(query);
+                    } catch (RemoteException re) {
+                        throw re.rethrowFromSystemServer();
+                    }
+                }
+            };
+
     /** {@hide} */
     @UnsupportedAppUsage
     @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS,
             Manifest.permission.INTERACT_ACROSS_USERS}, conditional = true)
     public boolean isUserUnlocked(@UserIdInt int userId) {
-        try {
-            return mService.isUserUnlocked(userId);
-        } catch (RemoteException re) {
-            throw re.rethrowFromSystemServer();
-        }
+        return mIsUserUnlockedCache.query(userId);
+    }
+
+    /** {@hide} */
+    public void disableIsUserUnlockedCache() {
+        mIsUserUnlockedCache.disableLocal();
+    }
+
+    /** {@hide} */
+    public static final void invalidateIsUserUnlockedCache() {
+        PropertyInvalidatedCache.invalidateCache(CACHE_KEY_IS_USER_UNLOCKED_PROPERTY);
     }
 
     /**
@@ -2344,10 +2348,12 @@
      * @param restrictionKey the string key representing the restriction
      * @param userHandle the UserHandle of the user for whom to retrieve the restrictions.
      */
+    @TestApi
     @UnsupportedAppUsage
-    @RequiresPermission(Manifest.permission.MANAGE_USERS)
-    public boolean hasBaseUserRestriction(@UserRestrictionKey String restrictionKey,
-            UserHandle userHandle) {
+    @RequiresPermission(anyOf = {Manifest.permission.MANAGE_USERS,
+            Manifest.permission.CREATE_USERS})
+    public boolean hasBaseUserRestriction(@UserRestrictionKey @NonNull String restrictionKey,
+            @NonNull UserHandle userHandle) {
         try {
             return mService.hasBaseUserRestriction(restrictionKey, userHandle.getIdentifier());
         } catch (RemoteException re) {
diff --git a/core/java/android/os/VibrationAttributes.java b/core/java/android/os/VibrationAttributes.java
index 3e16640..27782fa 100644
--- a/core/java/android/os/VibrationAttributes.java
+++ b/core/java/android/os/VibrationAttributes.java
@@ -391,11 +391,23 @@
          * Replaces flags
          * @param flags any combination of flags.
          * @return the same Builder instance.
+         * @hide
          */
         public @NonNull Builder replaceFlags(int flags) {
             mFlags = flags;
             return this;
         }
+
+        /**
+         * Set flags
+         * @param flags combination of flags to be set.
+         * @param mask Bit range that should be changed.
+         * @return the same Builder instance.
+         */
+        public @NonNull Builder setFlags(int flags, int mask) {
+            mFlags = (mFlags & ~mask) | (flags & mask);
+            return this;
+        }
     }
 }
 
diff --git a/core/java/android/os/Vibrator.java b/core/java/android/os/Vibrator.java
index f055c60..d4da7a8 100644
--- a/core/java/android/os/Vibrator.java
+++ b/core/java/android/os/Vibrator.java
@@ -16,11 +16,14 @@
 
 package android.os;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
+import android.annotation.SystemApi;
 import android.annotation.SystemService;
+import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -29,6 +32,7 @@
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.concurrent.Executor;
 
 /**
  * Class that operates the vibrator on the device.
@@ -395,4 +399,78 @@
      */
     @RequiresPermission(android.Manifest.permission.VIBRATE)
     public abstract void cancel();
+
+    /**
+     * Check whether the vibrator is vibrating.
+     *
+     * @return True if the hardware is vibrating, otherwise false.
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
+    public boolean isVibrating() {
+        return false;
+    }
+
+    /**
+    * Listener for when the vibrator state has changed.
+    *
+    * @see #addVibratorStateListener
+    * @see #removeVibratorStateListener
+    * @hide
+    */
+    @SystemApi
+    @TestApi
+    public interface OnVibratorStateChangedListener  {
+        /**
+         * Called when the vibrator state has changed.
+         *
+         * @param isVibrating If true, the vibrator has started vibrating. If false,
+         *                    it's stopped vibrating.
+         */
+        void onVibratorStateChanged(boolean isVibrating);
+    }
+
+    /**
+     * Adds a listener for vibrator state changes. Callbacks will be executed on the main thread.
+     * If the listener was previously added and not removed, this call will be ignored.
+     *
+     * @param listener listener to be added
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
+    public void addVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+    }
+
+    /**
+     * Adds a listener for vibrator state change. If the listener was previously added and not
+     * removed, this call will be ignored.
+     *
+     * @param listener listener to be added
+     * @param executor executor of listener
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
+    public void addVibratorStateListener(
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull OnVibratorStateChangedListener listener) {
+    }
+
+    /**
+     * Removes the listener for vibrator state changes. If the listener was not previously
+     * registered, this call will do nothing.
+     *
+     * @param listener listener to be removed
+     * @hide
+     */
+    @SystemApi
+    @TestApi
+    @RequiresPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)
+    public void removeVibratorStateListener(@NonNull OnVibratorStateChangedListener listener) {
+    }
 }
diff --git a/core/java/android/os/WorkSource.java b/core/java/android/os/WorkSource.java
index 7161b07..6adba63 100644
--- a/core/java/android/os/WorkSource.java
+++ b/core/java/android/os/WorkSource.java
@@ -149,7 +149,7 @@
     }
 
     /**
-     * Returns the size of this work source.
+     * Returns the number of uids in this work source.
      * @hide
      */
     @TestApi
diff --git a/core/java/android/os/incremental/IIncrementalManager.aidl b/core/java/android/os/incremental/IIncrementalManager.aidl
index b415bc0..be83aae 100644
--- a/core/java/android/os/incremental/IIncrementalManager.aidl
+++ b/core/java/android/os/incremental/IIncrementalManager.aidl
@@ -33,7 +33,4 @@
     boolean startDataLoader(int mountId);
     void showHealthBlockedUI(int mountId);
     void destroyDataLoader(int mountId);
-
-    // fileId is a 16 byte long identifier.
-    void newFileForDataLoader(int mountId, in byte[] fileId, in byte[] metadata);
 }
diff --git a/core/java/android/os/incremental/IIncrementalManagerNative.aidl b/core/java/android/os/incremental/IIncrementalService.aidl
similarity index 90%
rename from core/java/android/os/incremental/IIncrementalManagerNative.aidl
rename to core/java/android/os/incremental/IIncrementalService.aidl
index 2b6cd14..2dbaea8 100644
--- a/core/java/android/os/incremental/IIncrementalManagerNative.aidl
+++ b/core/java/android/os/incremental/IIncrementalService.aidl
@@ -17,10 +17,11 @@
 package android.os.incremental;
 
 import android.content.pm.DataLoaderParamsParcel;
+import android.content.pm.IDataLoaderStatusListener;
 import android.os.incremental.IncrementalNewFileParams;
 
 /** @hide */
-interface IIncrementalManagerNative {
+interface IIncrementalService {
     /**
      * A set of flags for the |createMode| parameters when creating a new Incremental storage.
      */
@@ -33,7 +34,7 @@
      * Opens or creates a storage given a target path and data loader params. Returns the storage ID.
      */
     int openStorage(in @utf8InCpp String path);
-    int createStorage(in @utf8InCpp String path, in DataLoaderParamsParcel params, int createMode);
+    int createStorage(in @utf8InCpp String path, in DataLoaderParamsParcel params, in IDataLoaderStatusListener listener, int createMode);
     int createLinkedStorage(in @utf8InCpp String path, int otherStorageId, int createMode);
 
     /**
@@ -103,4 +104,9 @@
      * Deletes a storage given its ID. Deletes its bind mounts and unmount it. Stop its data loader.
      */
     void deleteStorage(int storageId);
+
+    /**
+     * Setting up native library directories and extract native libs onto a storage.
+     */
+    boolean configureNativeBinaries(int storageId, in @utf8InCpp String apkFullPath, in @utf8InCpp String libDirRelativePath, in @utf8InCpp String abi);
 }
diff --git a/core/java/android/os/incremental/IncrementalFileStorages.java b/core/java/android/os/incremental/IncrementalFileStorages.java
index a0bfc1b..3f8c0fe 100644
--- a/core/java/android/os/incremental/IncrementalFileStorages.java
+++ b/core/java/android/os/incremental/IncrementalFileStorages.java
@@ -17,31 +17,27 @@
 package android.os.incremental;
 
 /**
- * Set up files and directories used in an installation session.
- * Currently only used by Incremental Installation.
- * For Incremental installation, the expected outcome of this function is:
- * 0) All the files are in defaultStorage
- * 1) All APK files are in the same directory, bound to mApkStorage, and bound to the
- * InstallerSession's stage dir. The files are linked from mApkStorage to defaultStorage.
- * 2) All lib files are in the sub directories as their names suggest, and in the same parent
- * directory as the APK files. The files are linked from mApkStorage to defaultStorage.
- * 3) OBB files are in another directory that is different from APK files and lib files, bound
- * to mObbStorage. The files are linked from mObbStorage to defaultStorage.
+ * Set up files and directories used in an installation session. Currently only used by Incremental
+ * Installation. For Incremental installation, the expected outcome of this function is: 0) All the
+ * files are in defaultStorage 1) All APK files are in the same directory, bound to mApkStorage, and
+ * bound to the InstallerSession's stage dir. The files are linked from mApkStorage to
+ * defaultStorage. 2) All lib files are in the sub directories as their names suggest, and in the
+ * same parent directory as the APK files. The files are linked from mApkStorage to defaultStorage.
+ * 3) OBB files are in another directory that is different from APK files and lib files, bound to
+ * mObbStorage. The files are linked from mObbStorage to defaultStorage.
  *
  * @throws IllegalStateException the session is not an Incremental installation session.
  */
 
-import static dalvik.system.VMRuntime.getInstructionSet;
+import static android.content.pm.PackageInstaller.LOCATION_DATA_APP;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.content.Context;
 import android.content.pm.DataLoaderParams;
+import android.content.pm.IDataLoaderStatusListener;
 import android.content.pm.InstallationFile;
-import android.os.IVold;
-import android.os.Process;
-import android.os.RemoteException;
-import android.os.ServiceManager;
-import android.util.ArraySet;
+import android.text.TextUtils;
 import android.util.Slog;
 
 import java.io.File;
@@ -49,6 +45,8 @@
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.List;
+import java.util.Objects;
 import java.util.Random;
 
 /**
@@ -57,185 +55,111 @@
  */
 public final class IncrementalFileStorages {
     private static final String TAG = "IncrementalFileStorages";
+
+    private static final String TMP_DIR_ROOT = "/data/incremental/tmp";
+    private static final Random TMP_DIR_RANDOM = new Random();
+
     private @Nullable IncrementalStorage mDefaultStorage;
-    private @Nullable IncrementalStorage mApkStorage;
-    private @Nullable IncrementalStorage mObbStorage;
     private @Nullable String mDefaultDir;
-    private @Nullable String mObbDir;
     private @NonNull IncrementalManager mIncrementalManager;
-    private @Nullable ArraySet<String> mLibDirs;
-    private @NonNull String mPackageName;
     private @NonNull File mStageDir;
 
     /**
-     * Set up files and directories used in an installation session.
-     * Currently only used by Incremental Installation.
-     * For Incremental installation, the expected outcome of this function is:
-     * 0) All the files are in defaultStorage
-     * 1) All APK files are in the same directory, bound to mApkStorage, and bound to the
-     * InstallerSession's stage dir. The files are linked from mApkStorage to defaultStorage.
-     * 2) All lib files are in the sub directories as their names suggest, and in the same parent
-     * directory as the APK files. The files are linked from mApkStorage to defaultStorage.
-     * 3) OBB files are in another directory that is different from APK files and lib files, bound
-     * to mObbStorage. The files are linked from mObbStorage to defaultStorage.
+     * Set up files and directories used in an installation session. Only used by Incremental.
+     * All the files will be created in defaultStorage.
+     * TODO(b/133435829): code clean up
      *
      * @throws IllegalStateException the session is not an Incremental installation session.
+     * @throws IOException if fails to setup files or directories.
      */
-    public IncrementalFileStorages(@NonNull String packageName,
+    public static IncrementalFileStorages initialize(Context context,
             @NonNull File stageDir,
+            @NonNull DataLoaderParams dataLoaderParams,
+            @Nullable IDataLoaderStatusListener dataLoaderStatusListener,
+            List<InstallationFile> addedFiles) throws IOException {
+        // TODO(b/136132412): sanity check if session should not be incremental
+        IncrementalManager incrementalManager = (IncrementalManager) context.getSystemService(
+                Context.INCREMENTAL_SERVICE);
+        if (incrementalManager == null) {
+            // TODO(b/146080380): add incremental-specific error code
+            throw new IOException("Failed to obtain incrementalManager.");
+        }
+
+        IncrementalFileStorages result = null;
+        try {
+            result = new IncrementalFileStorages(stageDir, incrementalManager, dataLoaderParams,
+                    dataLoaderStatusListener);
+
+            if (!addedFiles.isEmpty()) {
+                result.mDefaultStorage.bind(stageDir.getAbsolutePath());
+            }
+
+            for (InstallationFile file : addedFiles) {
+                if (file.getLocation() == LOCATION_DATA_APP) {
+                    try {
+                        result.addApkFile(file);
+                    } catch (IOException e) {
+                        // TODO(b/146080380): add incremental-specific error code
+                        throw new IOException(
+                                "Failed to add file to IncFS: " + file.getName() + ", reason: "
+                                        + e.getMessage(), e.getCause());
+                    }
+                } else {
+                    throw new IOException("Unknown file location: " + file.getLocation());
+                }
+            }
+
+            // TODO(b/146080380): remove 5 secs wait in startLoading
+            if (!result.mDefaultStorage.startLoading()) {
+                // TODO(b/146080380): add incremental-specific error code
+                throw new IOException("Failed to start loading data for Incremental installation.");
+            }
+
+            return result;
+        } catch (IOException e) {
+            if (result != null) {
+                result.cleanUp();
+            }
+            throw e;
+        }
+    }
+
+    private IncrementalFileStorages(@NonNull File stageDir,
             @NonNull IncrementalManager incrementalManager,
-            @NonNull DataLoaderParams dataLoaderParams) {
-        mPackageName = packageName;
+            @NonNull DataLoaderParams dataLoaderParams,
+            @Nullable IDataLoaderStatusListener dataLoaderStatusListener) throws IOException {
         mStageDir = stageDir;
         mIncrementalManager = incrementalManager;
         if (dataLoaderParams.getComponentName().getPackageName().equals("local")) {
             final String incrementalPath = dataLoaderParams.getArguments();
-            mDefaultStorage = mIncrementalManager.openStorage(incrementalPath);
             mDefaultDir = incrementalPath;
-            return;
-        }
-        mDefaultDir = getTempDir();
-        if (mDefaultDir == null) {
-            return;
-        }
-        mDefaultStorage = mIncrementalManager.createStorage(mDefaultDir,
-                dataLoaderParams,
-                IncrementalManager.CREATE_MODE_CREATE
-                        | IncrementalManager.CREATE_MODE_TEMPORARY_BIND, false);
-    }
-
-    /**
-     * Adds a file into the installation session. Makes sure it will be placed inside
-     * a proper storage instance, based on its file type.
-     */
-    public void addFile(@NonNull InstallationFile file) throws IOException {
-        if (mDefaultStorage == null) {
-            throw new IOException("Cannot add file because default storage does not exist");
-        }
-        if (file.getFileType() == InstallationFile.FILE_TYPE_APK) {
-            addApkFile(file);
-        } else if (file.getFileType() == InstallationFile.FILE_TYPE_OBB) {
-            addObbFile(file);
-        } else if (file.getFileType() == InstallationFile.FILE_TYPE_LIB) {
-            addLibFile(file);
+            if (TextUtils.isEmpty(mDefaultDir)) {
+                throw new IOException("Failed to create storage: incrementalPath is empty");
+            }
+            mDefaultStorage = mIncrementalManager.openStorage(incrementalPath);
         } else {
-            throw new IOException("Unknown file type: " + file.getFileType());
+            mDefaultDir = getTempDir();
+            if (mDefaultDir == null) {
+                throw new IOException("Failed to create storage: tempDir is empty");
+            }
+            mDefaultStorage = mIncrementalManager.createStorage(mDefaultDir,
+                    dataLoaderParams,
+                    dataLoaderStatusListener,
+                    IncrementalManager.CREATE_MODE_CREATE
+                            | IncrementalManager.CREATE_MODE_TEMPORARY_BIND, false);
+        }
+
+        if (mDefaultStorage == null) {
+            throw new IOException("Failed to create storage");
         }
     }
 
     private void addApkFile(@NonNull InstallationFile apk) throws IOException {
-        // Create a storage for APK files and lib files
-        final String stageDirPath = mStageDir.getAbsolutePath();
-        if (mApkStorage == null) {
-            mApkStorage = mIncrementalManager.createStorage(stageDirPath, mDefaultStorage,
-                    IncrementalManager.CREATE_MODE_CREATE
-                            | IncrementalManager.CREATE_MODE_TEMPORARY_BIND);
-            mApkStorage.bind(stageDirPath);
-        }
-
-        if (!new File(mDefaultDir, apk.getName()).exists()) {
-            mDefaultStorage.makeFile(apk.getName(), apk.getSize(), null,
-                    apk.getMetadata(), 0, null, null, null);
-        }
-        // Assuming APK files are already named properly, e.g., "base.apk"
-        mDefaultStorage.makeLink(apk.getName(), mApkStorage, apk.getName());
-    }
-
-    private void addLibFile(@NonNull InstallationFile lib) throws IOException {
-        // TODO(b/136132412): remove this after we have incfs support for lib file mapping
-        if (mApkStorage == null) {
-            throw new IOException("Cannot add lib file without adding an apk file first");
-        }
-        if (mLibDirs == null) {
-            mLibDirs = new ArraySet<>();
-        }
-        String current = "";
-        final Path libDirPath = Paths.get(lib.getName()).getParent();
-        final int numDirComponents = libDirPath.getNameCount();
-        for (int i = 0; i < numDirComponents; i++) {
-            String dirName = libDirPath.getName(i).toString();
-            try {
-                dirName = getInstructionSet(dirName);
-            } catch (IllegalArgumentException ignored) {
-            }
-            current += dirName;
-            if (!mLibDirs.contains(current)) {
-                mDefaultStorage.makeDirectory(current);
-                mApkStorage.makeDirectory(current);
-                mLibDirs.add(current);
-            }
-            current += '/';
-        }
-        String libFilePath = current + Paths.get(lib.getName()).getFileName();
-        mDefaultStorage.makeFile(libFilePath, lib.getSize(), null, lib.getMetadata(), 0, null, null,
-                                 null);
-        mDefaultStorage.makeLink(libFilePath, mApkStorage, libFilePath);
-    }
-
-    private void addObbFile(@NonNull InstallationFile obb) throws IOException {
-        if (mObbStorage == null) {
-            // Create a storage for OBB files
-            mObbDir = getTempDir();
-            if (mObbDir == null) {
-                throw new IOException("Failed to create obb storage directory.");
-            }
-            mObbStorage = mIncrementalManager.createStorage(
-                    mObbDir, mDefaultStorage,
-                    IncrementalManager.CREATE_MODE_CREATE
-                            | IncrementalManager.CREATE_MODE_TEMPORARY_BIND);
-        }
-        mDefaultStorage.makeFile(obb.getName(), obb.getSize(), null, obb.getMetadata(), 0, null,
-                                 null, null);
-        mDefaultStorage.makeLink(obb.getName(), mObbStorage, obb.getName());
-    }
-
-    private boolean hasObb() {
-        return (mObbStorage != null && mObbDir != null);
-    }
-
-    /**
-     * Starts loading data for default storage.
-     * TODO(b/136132412): update the implementation with latest API design.
-     */
-    public boolean startLoading() {
-        if (mDefaultStorage == null) {
-            return false;
-        }
-        return mDefaultStorage.startLoading();
-    }
-
-    /**
-     * Sets up obb storage directory and create bindings.
-     */
-    public void finishSetUp() {
-        if (!hasObb()) {
-            return;
-        }
-        final String obbDir = "/storage/emulated/0/Android/obb";
-        final String packageObbDir = String.format("%s/%s", obbDir, mPackageName);
-        final String packageObbDirRoot =
-                String.format("/mnt/runtime/%s/emulated/0/Android/obb/", mPackageName);
-        final String[] obbDirs = {
-                packageObbDirRoot + "read",
-                packageObbDirRoot + "write",
-                packageObbDirRoot + "full",
-                packageObbDirRoot + "default",
-                String.format("/data/media/0/Android/obb/%s", mPackageName),
-                packageObbDir,
-        };
-        try {
-            Slog.i(TAG, "Creating obb directory '" + packageObbDir + "'");
-            final IVold vold = IVold.Stub.asInterface(ServiceManager.getServiceOrThrow("vold"));
-            vold.setupAppDir(packageObbDir, obbDir, Process.ROOT_UID);
-            for (String d : obbDirs) {
-                mObbStorage.bindPermanent(d);
-            }
-        } catch (ServiceManager.ServiceNotFoundException ex) {
-            Slog.e(TAG, "vold service is not found.");
-            cleanUp();
-        } catch (IOException | RemoteException ex) {
-            Slog.e(TAG, "Failed to create obb dir at: " + packageObbDir, ex);
-            cleanUp();
+        final String apkName = apk.getName();
+        final File targetFile = new File(mStageDir, apkName);
+        if (!targetFile.exists()) {
+            mDefaultStorage.makeFile(apkName, apk.getLengthBytes(), null, apk.getMetadata(),
+                    apk.getSignature());
         }
     }
 
@@ -244,36 +168,21 @@
      * TODO(b/136132412): make sure unnecessary binds are removed but useful storages are kept
      */
     public void cleanUp() {
-        if (mDefaultStorage != null && mDefaultDir != null) {
-            try {
-                mDefaultStorage.unBind(mDefaultDir);
-            } catch (IOException ignored) {
-            }
-            mDefaultDir = null;
-            mDefaultStorage = null;
+        Objects.requireNonNull(mDefaultStorage);
+
+        try {
+            mDefaultStorage.unBind(mDefaultDir);
+            mDefaultStorage.unBind(mStageDir.getAbsolutePath());
+        } catch (IOException ignored) {
         }
-        if (mApkStorage != null && mStageDir != null) {
-            try {
-                mApkStorage.unBind(mStageDir.getAbsolutePath());
-            } catch (IOException ignored) {
-            }
-            mApkStorage = null;
-        }
-        if (mObbStorage != null && mObbDir != null) {
-            try {
-                mObbStorage.unBind(mObbDir);
-            } catch (IOException ignored) {
-            }
-            mObbDir = null;
-            mObbStorage = null;
-        }
+
+        mDefaultDir = null;
+        mDefaultStorage = null;
     }
 
-    private String getTempDir() {
-        final String tmpDirRoot = "/data/incremental/tmp";
-        final Random random = new Random();
-        final Path tmpDir =
-                Paths.get(tmpDirRoot, String.valueOf(random.nextInt(Integer.MAX_VALUE - 1)));
+    private static String getTempDir() {
+        final Path tmpDir = Paths.get(TMP_DIR_ROOT,
+                String.valueOf(TMP_DIR_RANDOM.nextInt(Integer.MAX_VALUE - 1)));
         try {
             Files.createDirectories(tmpDir);
         } catch (Exception ex) {
diff --git a/core/java/android/os/incremental/IncrementalManager.java b/core/java/android/os/incremental/IncrementalManager.java
index 9c6672d..35518db 100644
--- a/core/java/android/os/incremental/IncrementalManager.java
+++ b/core/java/android/os/incremental/IncrementalManager.java
@@ -22,9 +22,8 @@
 import android.annotation.SystemService;
 import android.content.Context;
 import android.content.pm.DataLoaderParams;
+import android.content.pm.IDataLoaderStatusListener;
 import android.os.RemoteException;
-import android.system.ErrnoException;
-import android.system.Os;
 import android.util.SparseArray;
 
 import com.android.internal.annotations.GuardedBy;
@@ -37,7 +36,7 @@
 import java.nio.file.Paths;
 
 /**
- * Provides operations to open or create an IncrementalStorage, using IIncrementalManagerNative
+ * Provides operations to open or create an IncrementalStorage, using IIncrementalService
  * service. Example Usage:
  *
  * <blockquote><pre>
@@ -51,14 +50,16 @@
 public final class IncrementalManager {
     private static final String TAG = "IncrementalManager";
 
+    private static final String ALLOWED_PROPERTY = "incremental.allowed";
+
     public static final int CREATE_MODE_TEMPORARY_BIND =
-            IIncrementalManagerNative.CREATE_MODE_TEMPORARY_BIND;
+            IIncrementalService.CREATE_MODE_TEMPORARY_BIND;
     public static final int CREATE_MODE_PERMANENT_BIND =
-            IIncrementalManagerNative.CREATE_MODE_PERMANENT_BIND;
+            IIncrementalService.CREATE_MODE_PERMANENT_BIND;
     public static final int CREATE_MODE_CREATE =
-            IIncrementalManagerNative.CREATE_MODE_CREATE;
+            IIncrementalService.CREATE_MODE_CREATE;
     public static final int CREATE_MODE_OPEN_EXISTING =
-            IIncrementalManagerNative.CREATE_MODE_OPEN_EXISTING;
+            IIncrementalService.CREATE_MODE_OPEN_EXISTING;
 
     @Retention(RetentionPolicy.SOURCE)
     @IntDef(prefix = {"CREATE_MODE_"}, value = {
@@ -70,12 +71,12 @@
     public @interface CreateMode {
     }
 
-    private final @Nullable IIncrementalManagerNative mNativeService;
+    private final @Nullable IIncrementalService mService;
     @GuardedBy("mStorages")
     private final SparseArray<IncrementalStorage> mStorages = new SparseArray<>();
 
-    public IncrementalManager(IIncrementalManagerNative nativeService) {
-        mNativeService = nativeService;
+    public IncrementalManager(IIncrementalService service) {
+        mService = service;
     }
 
     /**
@@ -105,14 +106,15 @@
      */
     @Nullable
     public IncrementalStorage createStorage(@NonNull String path,
-            @NonNull DataLoaderParams params, @CreateMode int createMode,
+            @NonNull DataLoaderParams params, @Nullable IDataLoaderStatusListener listener,
+            @CreateMode int createMode,
             boolean autoStartDataLoader) {
         try {
-            final int id = mNativeService.createStorage(path, params.getData(), createMode);
+            final int id = mService.createStorage(path, params.getData(), listener, createMode);
             if (id < 0) {
                 return null;
             }
-            final IncrementalStorage storage = new IncrementalStorage(mNativeService, id);
+            final IncrementalStorage storage = new IncrementalStorage(mService, id);
             synchronized (mStorages) {
                 mStorages.put(id, storage);
             }
@@ -135,11 +137,11 @@
     @Nullable
     public IncrementalStorage openStorage(@NonNull String path) {
         try {
-            final int id = mNativeService.openStorage(path);
+            final int id = mService.openStorage(path);
             if (id < 0) {
                 return null;
             }
-            final IncrementalStorage storage = new IncrementalStorage(mNativeService, id);
+            final IncrementalStorage storage = new IncrementalStorage(mService, id);
             synchronized (mStorages) {
                 mStorages.put(id, storage);
             }
@@ -158,12 +160,12 @@
     public IncrementalStorage createStorage(@NonNull String path,
             @NonNull IncrementalStorage linkedStorage, @CreateMode int createMode) {
         try {
-            final int id = mNativeService.createLinkedStorage(
+            final int id = mService.createLinkedStorage(
                     path, linkedStorage.getId(), createMode);
             if (id < 0) {
                 return null;
             }
-            final IncrementalStorage storage = new IncrementalStorage(mNativeService, id);
+            final IncrementalStorage storage = new IncrementalStorage(mService, id);
             synchronized (mStorages) {
                 mStorages.put(id, storage);
             }
@@ -193,116 +195,79 @@
     }
 
     /**
-     * Renames an Incremental path to a new path. If source path is a file, make a link from the old
-     * Incremental file to the new one. If source path is a dir, unbind old dir from Incremental
-     * Storage and bind the new one.
-     * <ol>
-     *     <li> For renaming a dir, dest dir will be created if not exists, and does not need to
-     *          be on the same Incremental storage as the source. </li>
-     *     <li> For renaming a file, dest file must be on the same Incremental storage as source.
-     *     </li>
-     * </ol>
+     * Set up an app's code path. The expected outcome of this method is:
+     * 1) The actual apk directory under /data/incremental is bind-mounted to the parent directory
+     * of {@code afterCodeFile}.
+     * 2) All the files under {@code beforeCodeFile} will show up under {@code afterCodeFile}.
      *
-     * @param sourcePath Absolute path to the source. Should be the same type as the destPath (file
-     *                   or dir). Expected to already exist and is an Incremental path.
-     * @param destPath   Absolute path to the destination.
-     * @throws IllegalArgumentException when 1) source does not exist, or 2) source and dest type
-     *                                  mismatch (one is file and the other is dir), or 3) source
-     *                                  path is not on Incremental File System,
-     * @throws IOException              when 1) cannot find the root path of the Incremental storage
-     *                                  of source, or 2) cannot retrieve the Incremental storage
-     *                                  instance of the source, or 3) renaming a file, but dest is
-     *                                  not on the same Incremental Storage, or 4) renaming a dir,
-     *                                  dest dir does not exist but fails to be created.
-     *                                  <p>
-     *                                  TODO(b/136132412): add unit tests
+     * @param beforeCodeFile Path that is currently bind-mounted and have APKs under it.
+     *                       Should no longer have any APKs after this method is called.
+     *                       Example: /data/app/vmdl*tmp
+     * @param afterCodeFile Path that should will have APKs after this method is called. Its parent
+     *                      directory should be bind-mounted to a directory under /data/incremental.
+     *                      Example: /data/app/~~[randomStringA]/[packageName]-[randomStringB]
+     * @throws IllegalArgumentException
+     * @throws IOException
+     * TODO(b/147371381): add unit tests
      */
-    public void rename(@NonNull String sourcePath, @NonNull String destPath) throws IOException {
-        final File source = new File(sourcePath);
-        final File dest = new File(destPath);
-        if (!source.exists()) {
-            throw new IllegalArgumentException("Path not exist: " + sourcePath);
+    public void renameCodePath(File beforeCodeFile, File afterCodeFile)
+            throws IllegalArgumentException, IOException {
+        final String beforeCodePath = beforeCodeFile.getAbsolutePath();
+        final String afterCodePathParent = afterCodeFile.getParentFile().getAbsolutePath();
+        if (!isIncrementalPath(beforeCodePath)) {
+            throw new IllegalArgumentException("Not an Incremental path: " + beforeCodePath);
         }
-        if (dest.exists()) {
-            throw new IllegalArgumentException("Target path already exists: " + destPath);
+        final String afterCodePathName = afterCodeFile.getName();
+        final Path apkStoragePath = Paths.get(beforeCodePath);
+        if (apkStoragePath == null || apkStoragePath.toAbsolutePath() == null) {
+            throw new IOException("Invalid source storage path for: " + beforeCodePath);
         }
-        if (source.isDirectory() && dest.exists() && dest.isFile()) {
-            throw new IllegalArgumentException(
-                    "Trying to rename a dir but destination is a file: " + destPath);
-        }
-        if (source.isFile() && dest.exists() && dest.isDirectory()) {
-            throw new IllegalArgumentException(
-                    "Trying to rename a file but destination is a dir: " + destPath);
-        }
-        if (!isIncrementalPath(sourcePath)) {
-            throw new IllegalArgumentException("Not an Incremental path: " + sourcePath);
-        }
-
-        Path storagePath = Paths.get(sourcePath);
-        if (source.isFile()) {
-            storagePath = getStoragePathForFile(source);
-        }
-        if (storagePath == null || storagePath.toAbsolutePath() == null) {
-            throw new IOException("Invalid source storage path for: " + sourcePath);
-        }
-        final IncrementalStorage storage = openStorage(storagePath.toAbsolutePath().toString());
-        if (storage == null) {
+        final IncrementalStorage apkStorage =
+                openStorage(apkStoragePath.toAbsolutePath().toString());
+        if (apkStorage == null) {
             throw new IOException("Failed to retrieve storage from Incremental Service.");
         }
-
-        if (source.isFile()) {
-            renameFile(storage, storagePath, source, dest);
-        } else {
-            renameDir(storage, storagePath, source, dest);
+        final IncrementalStorage linkedApkStorage = createStorage(afterCodePathParent, apkStorage,
+                IncrementalManager.CREATE_MODE_CREATE
+                        | IncrementalManager.CREATE_MODE_PERMANENT_BIND);
+        if (linkedApkStorage == null) {
+            throw new IOException("Failed to create linked storage at dir: " + afterCodePathParent);
         }
+        linkFiles(apkStorage, beforeCodeFile, "", linkedApkStorage, afterCodePathName);
+        apkStorage.unBind(beforeCodePath);
     }
 
-    private void renameFile(IncrementalStorage storage, Path storagePath,
-            File source, File dest) throws IOException {
-        Path sourcePath = source.toPath();
-        Path destPath = dest.toPath();
-        if (!sourcePath.startsWith(storagePath)) {
-            throw new IOException("Path: " + source.getAbsolutePath() + " is not on storage at: "
-                    + storagePath.toString());
-        }
-        if (!destPath.startsWith(storagePath)) {
-            throw new IOException("Path: " + dest.getAbsolutePath() + " is not on storage at: "
-                    + storagePath.toString());
-        }
-        final Path sourceRelativePath = storagePath.relativize(sourcePath);
-        final Path destRelativePath = storagePath.relativize(destPath);
-        storage.moveFile(sourceRelativePath.toString(), destRelativePath.toString());
-
-    }
-
-    private void renameDir(IncrementalStorage storage, Path storagePath,
-            File source, File dest) throws IOException {
-        Path destPath = dest.toPath();
-        boolean usedMkdir = false;
-        try {
-            Os.mkdir(dest.getAbsolutePath(), 0755);
-            usedMkdir = true;
-        } catch (ErrnoException e) {
-            // Traditional mkdir fails but maybe we can create it on Incremental File System if
-            // the dest path is on the same Incremental storage as the source.
-            if (destPath.startsWith(storagePath)) {
-                storage.makeDirectories(storagePath.relativize(destPath).toString());
-            } else {
-                throw new IOException("Failed to create directory: " + dest.getAbsolutePath(), e);
+    /**
+     * Recursively set up directories and link all the files from source storage to target storage.
+     *
+     * @param sourceStorage The storage that has all the files and directories underneath.
+     * @param sourceAbsolutePath The absolute path of the directory that holds all files and dirs.
+     * @param sourceRelativePath The relative path on the source directory, e.g., "" or "lib".
+     * @param targetStorage The target storage that will have the same files and directories.
+     * @param targetRelativePath The relative path to the directory on the target storage that
+     *                           should have all the files and dirs underneath,
+     *                           e.g., "packageName-random".
+     * @throws IOException When makeDirectory or makeLink fails on the Incremental File System.
+     */
+    private void linkFiles(IncrementalStorage sourceStorage, File sourceAbsolutePath,
+            String sourceRelativePath, IncrementalStorage targetStorage,
+            String targetRelativePath) throws IOException {
+        targetStorage.makeDirectory(targetRelativePath);
+        final File[] entryList = sourceAbsolutePath.listFiles();
+        for (int i = 0; i < entryList.length; i++) {
+            final File entry = entryList[i];
+            final String entryName = entryList[i].getName();
+            final String sourceEntryRelativePath =
+                    sourceRelativePath.isEmpty() ? entryName : sourceRelativePath + "/" + entryName;
+            final String targetEntryRelativePath = targetRelativePath + "/" + entryName;
+            if (entry.isFile()) {
+                sourceStorage.makeLink(
+                        sourceEntryRelativePath, targetStorage, targetEntryRelativePath);
+            } else if (entry.isDirectory()) {
+                linkFiles(sourceStorage, entry, sourceEntryRelativePath, targetStorage,
+                        targetEntryRelativePath);
             }
         }
-        try {
-            storage.moveDir(source.getAbsolutePath(), dest.getAbsolutePath());
-        } catch (Exception ex) {
-            if (usedMkdir) {
-                try {
-                    Os.remove(dest.getAbsolutePath());
-                } catch (ErrnoException ignored) {
-                }
-            }
-            throw new IOException(
-                    "Failed to move " + source.getAbsolutePath() + " to " + dest.getAbsolutePath());
-        }
     }
 
     /**
@@ -311,11 +276,11 @@
      */
     public void closeStorage(@NonNull String path) {
         try {
-            final int id = mNativeService.openStorage(path);
+            final int id = mService.openStorage(path);
             if (id < 0) {
                 return;
             }
-            mNativeService.deleteStorage(id);
+            mService.deleteStorage(id);
             synchronized (mStorages) {
                 mStorages.remove(id);
             }
@@ -325,12 +290,37 @@
     }
 
     /**
+     * Checks if Incremental feature is enabled on this device.
+     */
+    public static boolean isFeatureEnabled() {
+        return nativeIsEnabled();
+    }
+
+    /**
+     * Checks if Incremental installations are allowed.
+     * A developer can disable Incremental installations by setting the property.
+     */
+    public static boolean isAllowed() {
+        return isFeatureEnabled() && android.os.SystemProperties.getBoolean(ALLOWED_PROPERTY, true);
+    }
+
+    /**
      * Checks if path is mounted on Incremental File System.
      */
     public static boolean isIncrementalPath(@NonNull String path) {
         return nativeIsIncrementalPath(path);
     }
 
+    /**
+     * Returns raw signature for file if it's on Incremental File System.
+     * Unsafe, use only if you are sure what you are doing.
+     */
+    public static @Nullable byte[] unsafeGetFileSignature(@NonNull String path) {
+        return nativeUnsafeGetFileSignature(path);
+    }
+
     /* Native methods */
+    private static native boolean nativeIsEnabled();
     private static native boolean nativeIsIncrementalPath(@NonNull String path);
+    private static native byte[] nativeUnsafeGetFileSignature(@NonNull String path);
 }
diff --git a/core/java/android/os/incremental/IncrementalStorage.java b/core/java/android/os/incremental/IncrementalStorage.java
index 91dda08..f4e1f96 100644
--- a/core/java/android/os/incremental/IncrementalStorage.java
+++ b/core/java/android/os/incremental/IncrementalStorage.java
@@ -20,6 +20,8 @@
 import android.annotation.Nullable;
 import android.os.RemoteException;
 
+import java.io.ByteArrayInputStream;
+import java.io.DataInputStream;
 import java.io.File;
 import java.io.IOException;
 import java.nio.ByteBuffer;
@@ -40,10 +42,10 @@
 public final class IncrementalStorage {
     private static final String TAG = "IncrementalStorage";
     private final int mId;
-    private final IIncrementalManagerNative mService;
+    private final IIncrementalService mService;
 
 
-    public IncrementalStorage(@NonNull IIncrementalManagerNative is, int id) {
+    public IncrementalStorage(@NonNull IIncrementalService is, int id) {
         mService = is;
         mId = id;
     }
@@ -74,7 +76,7 @@
             throws IOException {
         try {
             int res = mService.makeBindMount(mId, sourcePath, targetPath,
-                    IIncrementalManagerNative.BIND_TEMPORARY);
+                    IIncrementalService.BIND_TEMPORARY);
             if (res < 0) {
                 throw new IOException("bind() failed with errno " + -res);
             }
@@ -105,7 +107,7 @@
             throws IOException {
         try {
             int res = mService.makeBindMount(mId, sourcePath, targetPath,
-                    IIncrementalManagerNative.BIND_PERMANENT);
+                    IIncrementalService.BIND_PERMANENT);
             if (res < 0) {
                 throw new IOException("bind() permanent failed with errno " + -res);
             }
@@ -169,22 +171,20 @@
      * @param path             Relative path of the new file.
      * @param size             Size of the new file in bytes.
      * @param metadata         Metadata bytes.
+     * @param v4signatureBytes Serialized V4SignatureProto.
      */
     public void makeFile(@NonNull String path, long size, @Nullable UUID id,
-            @Nullable byte[] metadata, int hashAlgorithm, @Nullable byte[] rootHash,
-            @Nullable byte[] additionalData, @Nullable byte[] signature) throws IOException {
+            @Nullable byte[] metadata, @Nullable byte[] v4signatureBytes)
+            throws IOException {
         try {
+            if (id == null && metadata == null) {
+                throw new IOException("File ID and metadata cannot both be null");
+            }
             final IncrementalNewFileParams params = new IncrementalNewFileParams();
             params.size = size;
-            params.metadata = metadata;
+            params.metadata = (metadata == null ? new byte[0] : metadata);
             params.fileId = idToBytes(id);
-            if (hashAlgorithm != 0 || signature != null) {
-                params.signature = new IncrementalSignature();
-                params.signature.hashAlgorithm = hashAlgorithm;
-                params.signature.rootHash = rootHash;
-                params.signature.additionalData = additionalData;
-                params.signature.signature = signature;
-            }
+            params.signature = parseV4Signature(v4signatureBytes);
             int res = mService.makeFile(mId, path, params);
             if (res != 0) {
                 throw new IOException("makeFile() failed with errno " + -res);
@@ -194,6 +194,7 @@
         }
     }
 
+
     /**
      * Creates a file in Incremental storage. The content of the file is mapped from a range inside
      * a source file in the same storage.
@@ -290,7 +291,7 @@
         }
         try {
             int res = mService.makeBindMount(mId, sourcePath, destPath,
-                    IIncrementalManagerNative.BIND_PERMANENT);
+                    IIncrementalService.BIND_PERMANENT);
             if (res < 0) {
                 throw new IOException("moveDir() failed at making bind mount, errno " + -res);
             }
@@ -346,41 +347,6 @@
         }
     }
 
-    private static final int UUID_BYTE_SIZE = 16;
-
-    /**
-     * Converts UUID to a byte array usable for Incremental API calls
-     *
-     * @param id The id to convert
-     * @return Byte array that contains the same ID.
-     */
-    public static byte[] idToBytes(UUID id) {
-        if (id == null) {
-            return null;
-        }
-        final ByteBuffer buf = ByteBuffer.wrap(new byte[UUID_BYTE_SIZE]);
-        buf.putLong(id.getMostSignificantBits());
-        buf.putLong(id.getLeastSignificantBits());
-        return buf.array();
-    }
-
-    /**
-     * Converts UUID from a byte array usable for Incremental API calls
-     *
-     * @param bytes The id in byte array format, 16 bytes long
-     * @return UUID constructed from the byte array.
-     */
-    public static UUID bytesToId(byte[] bytes) {
-        if (bytes.length != UUID_BYTE_SIZE) {
-            throw new IllegalArgumentException("Expected array of size " + UUID_BYTE_SIZE
-                                               + ", got " + bytes.length);
-        }
-        final ByteBuffer buf = ByteBuffer.wrap(bytes);
-        long msb = buf.getLong();
-        long lsb = buf.getLong();
-        return new UUID(msb, lsb);
-    }
-
     /**
      * Returns the metadata object of an IncFs File.
      *
@@ -411,4 +377,101 @@
             return false;
         }
     }
+
+    private static final int UUID_BYTE_SIZE = 16;
+
+    /**
+     * Converts UUID to a byte array usable for Incremental API calls
+     *
+     * @param id The id to convert
+     * @return Byte array that contains the same ID.
+     */
+    @NonNull
+    public static byte[] idToBytes(@Nullable UUID id) {
+        if (id == null) {
+            return new byte[0];
+        }
+        final ByteBuffer buf = ByteBuffer.wrap(new byte[UUID_BYTE_SIZE]);
+        buf.putLong(id.getMostSignificantBits());
+        buf.putLong(id.getLeastSignificantBits());
+        return buf.array();
+    }
+
+    /**
+     * Converts UUID from a byte array usable for Incremental API calls
+     *
+     * @param bytes The id in byte array format, 16 bytes long
+     * @return UUID constructed from the byte array.
+     */
+    @NonNull
+    public static UUID bytesToId(byte[] bytes) throws IllegalArgumentException {
+        if (bytes.length != UUID_BYTE_SIZE) {
+            throw new IllegalArgumentException("Expected array of size " + UUID_BYTE_SIZE
+                                               + ", got " + bytes.length);
+        }
+        final ByteBuffer buf = ByteBuffer.wrap(bytes);
+        long msb = buf.getLong();
+        long lsb = buf.getLong();
+        return new UUID(msb, lsb);
+    }
+
+    private static final int INCFS_HASH_SHA256 = 1;
+    private static final int INCFS_MAX_HASH_SIZE = 32; // SHA256
+    private static final int INCFS_MAX_ADD_DATA_SIZE = 128;
+
+    /**
+     * Deserialize and validate v4 signature bytes.
+     */
+    private static IncrementalSignature parseV4Signature(@Nullable byte[] v4signatureBytes)
+            throws IOException {
+        if (v4signatureBytes == null) {
+            return null;
+        }
+
+        final V4Signature signature;
+        try (DataInputStream input = new DataInputStream(
+                new ByteArrayInputStream(v4signatureBytes))) {
+            signature = V4Signature.readFrom(input);
+        }
+
+        final byte[] rootHash = signature.verityRootHash;
+        final byte[] additionalData = signature.v3Digest;
+        final byte[] pkcs7Signature = signature.pkcs7SignatureBlock;
+
+        if (rootHash.length != INCFS_MAX_HASH_SIZE) {
+            throw new IOException("rootHash has to be " + INCFS_MAX_HASH_SIZE + " bytes");
+        }
+        if (additionalData.length > INCFS_MAX_ADD_DATA_SIZE) {
+            throw new IOException(
+                    "additionalData has to be at most " + INCFS_MAX_ADD_DATA_SIZE + " bytes");
+        }
+
+        IncrementalSignature result = new IncrementalSignature();
+        result.hashAlgorithm = INCFS_HASH_SHA256;
+        result.rootHash = rootHash;
+        result.additionalData = additionalData;
+        result.signature = pkcs7Signature;
+
+        return result;
+    }
+
+    /**
+     * Configure all the lib files inside Incremental Service, e.g., create lib dirs, create new lib
+     * files, extract original lib file data from zip and then write data to the lib files on the
+     * Incremental File System.
+     *
+     * @param apkFullPath Source APK to extract native libs from.
+     * @param libDirRelativePath Target dir to put lib files, e.g., "lib" or "lib/arm".
+     * @param abi Target ABI of the native lib files. Only extract native libs of this ABI.
+     * @return Success of not.
+     */
+    public boolean configureNativeBinaries(String apkFullPath, String libDirRelativePath,
+            String abi) {
+        try {
+            return mService.configureNativeBinaries(mId, apkFullPath, libDirRelativePath, abi);
+        } catch (RemoteException e) {
+            e.rethrowFromSystemServer();
+            return false;
+        }
+    }
 }
diff --git a/core/java/android/os/incremental/V4Signature.java b/core/java/android/os/incremental/V4Signature.java
new file mode 100644
index 0000000..6450a67
--- /dev/null
+++ b/core/java/android/os/incremental/V4Signature.java
@@ -0,0 +1,93 @@
+/*
+ * 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 android.os.incremental;
+
+import java.io.ByteArrayOutputStream;
+import java.io.DataInputStream;
+import java.io.DataOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+
+/**
+ * V4 signature fields.
+ * Keep in sync with APKSig master copy.
+ * @hide
+ */
+public class V4Signature {
+    public static final String EXT = ".idsig";
+
+    public final byte[] verityRootHash;
+    public final byte[] v3Digest;
+    public final byte[] pkcs7SignatureBlock;
+
+    /**
+     * Construct a V4Signature from .idsig file.
+     */
+    public static V4Signature readFrom(File file) {
+        try (DataInputStream stream = new DataInputStream(new FileInputStream(file))) {
+            return readFrom(stream);
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    /**
+     * Store the V4Signature to a byte-array.
+     */
+    public byte[] toByteArray() {
+        try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) {
+            try (DataOutputStream steam = new DataOutputStream(byteArrayOutputStream)) {
+                this.writeTo(steam);
+                steam.flush();
+            }
+            return byteArrayOutputStream.toByteArray();
+        } catch (IOException e) {
+            return null;
+        }
+    }
+
+    static V4Signature readFrom(DataInputStream stream) throws IOException {
+        byte[] verityRootHash = readBytes(stream);
+        byte[] v3Digest = readBytes(stream);
+        byte[] pkcs7SignatureBlock = readBytes(stream);
+        return new V4Signature(verityRootHash, v3Digest, pkcs7SignatureBlock);
+    }
+
+    V4Signature(byte[] verityRootHash, byte[] v3Digest, byte[] pkcs7SignatureBlock) {
+        this.verityRootHash = verityRootHash;
+        this.v3Digest = v3Digest;
+        this.pkcs7SignatureBlock = pkcs7SignatureBlock;
+    }
+
+    void writeTo(DataOutputStream stream) throws IOException {
+        writeBytes(stream, this.verityRootHash);
+        writeBytes(stream, this.v3Digest);
+        writeBytes(stream, this.pkcs7SignatureBlock);
+    }
+
+    private static byte[] readBytes(DataInputStream stream) throws IOException {
+        byte[] result = new byte[stream.readInt()];
+        stream.read(result);
+        return result;
+    }
+
+    private static void writeBytes(DataOutputStream stream, byte[] bytes) throws IOException {
+        stream.writeInt(bytes.length);
+        stream.write(bytes);
+    }
+}
diff --git a/core/java/android/os/storage/StorageManager.java b/core/java/android/os/storage/StorageManager.java
index 3ea64f1..bb1dafc 100644
--- a/core/java/android/os/storage/StorageManager.java
+++ b/core/java/android/os/storage/StorageManager.java
@@ -2309,6 +2309,121 @@
     private static final String XATTR_CACHE_GROUP = "user.cache_group";
     private static final String XATTR_CACHE_TOMBSTONE = "user.cache_tombstone";
 
+
+   // Matches AID_MEDIA_RW in android_filesystem_config.h
+    private static final int QUOTA_PROJECT_ID_MEDIA_NONE = 1023;
+
+    // Matches AID_MEDIA_IMAGE in android_filesystem_config.h
+    private static final int QUOTA_PROJECT_ID_MEDIA_IMAGE = 1057;
+
+    // Matches AID_MEDIA_AUDIO in android_filesystem_config.h
+    private static final int QUOTA_PROJECT_ID_MEDIA_AUDIO = 1055;
+
+    // Matches AID_MEDIA_VIDEO in android_filesystem_config.h
+    private static final int QUOTA_PROJECT_ID_MEDIA_VIDEO = 1056;
+
+    /**
+     * Constant for use with
+     * {@link #updateExternalStorageFileQuotaType(String, int)} (String, int)}, to indicate the file
+     * is not a media file.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int QUOTA_TYPE_MEDIA_NONE = 0;
+
+    /**
+     * Constant for use with
+     * {@link #updateExternalStorageFileQuotaType(String, int)} (String, int)}, to indicate the file
+     * is an image file.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int QUOTA_TYPE_MEDIA_IMAGE = 1;
+
+    /**
+     * Constant for use with
+     * {@link #updateExternalStorageFileQuotaType(String, int)} (String, int)}, to indicate the file
+     * is an audio file.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int QUOTA_TYPE_MEDIA_AUDIO = 2;
+
+    /**
+     * Constant for use with
+     * {@link #updateExternalStorageFileQuotaType(String, int)} (String, int)}, to indicate the file
+     * is a video file.
+     *
+     * @hide
+     */
+    @SystemApi
+    public static final int QUOTA_TYPE_MEDIA_VIDEO = 3;
+
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = { "QUOTA_TYPE_" }, value = {
+            QUOTA_TYPE_MEDIA_NONE,
+            QUOTA_TYPE_MEDIA_AUDIO,
+            QUOTA_TYPE_MEDIA_VIDEO,
+            QUOTA_TYPE_MEDIA_IMAGE,
+    })
+    public @interface QuotaType {}
+
+    private static native boolean setQuotaProjectId(String path, long projectId);
+
+    /**
+     * Let StorageManager know that the quota type for a file on external storage should
+     * be updated. Android tracks quotas for various media types. Consequently, this should be
+     * called on first creation of a new file on external storage, and whenever the
+     * media type of the file is updated later.
+     *
+     * This API doesn't require any special permissions, though typical implementations
+     * will require being called from an SELinux domain that allows setting file attributes
+     * related to quota (eg the GID or project ID).
+     *
+     * The default platform user of this API is the MediaProvider process, which is
+     * responsible for managing all of external storage.
+     *
+     * @param path the path to the file for which we should update the quota type
+     * @param quotaType the quota type of the file; this is based on the
+     *                  {@code QuotaType} constants, eg
+     *                  {@code StorageManager.QUOTA_TYPE_MEDIA_AUDIO}
+     *
+     * @throws IllegalArgumentException if {@code quotaType} does not correspond to a valid
+     *                                  quota type.
+     * @throws IOException              if the quota type could not be updated.
+     *
+     * @hide
+     */
+    @SystemApi
+    public void updateExternalStorageFileQuotaType(@NonNull File path,
+            @QuotaType int quotaType) throws IOException {
+        long projectId;
+        final String filePath = path.getCanonicalPath();
+        switch (quotaType) {
+            case QUOTA_TYPE_MEDIA_NONE:
+                projectId = QUOTA_PROJECT_ID_MEDIA_NONE;
+                break;
+            case QUOTA_TYPE_MEDIA_AUDIO:
+                projectId = QUOTA_PROJECT_ID_MEDIA_AUDIO;
+                break;
+            case QUOTA_TYPE_MEDIA_VIDEO:
+                projectId = QUOTA_PROJECT_ID_MEDIA_VIDEO;
+                break;
+            case QUOTA_TYPE_MEDIA_IMAGE:
+                projectId = QUOTA_PROJECT_ID_MEDIA_IMAGE;
+                break;
+            default:
+                throw new IllegalArgumentException("Invalid quota type: " + quotaType);
+        }
+        if (!setQuotaProjectId(filePath, projectId)) {
+            throw new IOException("Failed to update quota type for " + filePath);
+        }
+    }
+
     /** {@hide} */
     private static void setCacheBehavior(File path, String name, boolean enabled)
             throws IOException {
diff --git a/core/java/android/permission/PermissionManager.java b/core/java/android/permission/PermissionManager.java
index 4812ea9..d945b65 100644
--- a/core/java/android/permission/PermissionManager.java
+++ b/core/java/android/permission/PermissionManager.java
@@ -93,7 +93,10 @@
      */
     @TestApi
     @SystemApi
-    @RequiresPermission(Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY)
+    @RequiresPermission(anyOf = {
+            Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
+            Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS
+    })
     public @IntRange(from = 0) int getRuntimePermissionsVersion() {
         try {
             return mPackageManager.getRuntimePermissionsVersion(mContext.getUserId());
@@ -111,7 +114,10 @@
      */
     @TestApi
     @SystemApi
-    @RequiresPermission(Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY)
+    @RequiresPermission(anyOf = {
+            Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
+            Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS
+    })
     public void setRuntimePermissionsVersion(@IntRange(from = 0) int version) {
         try {
             mPackageManager.setRuntimePermissionsVersion(version, mContext.getUserId());
diff --git a/core/java/android/provider/ContactsContract.java b/core/java/android/provider/ContactsContract.java
index e383a37..146387e 100644
--- a/core/java/android/provider/ContactsContract.java
+++ b/core/java/android/provider/ContactsContract.java
@@ -2381,11 +2381,7 @@
          * This id is provided by its own data source, and can be used to backup metadata
          * to the server.
          * This should be unique within each set of account_name/account_type/data_set
-         *
-         * @deprecated This column is no longer supported as of Android version
-         * {@link android.os.Build.VERSION_CODES#R}.
          */
-        @Deprecated
         public static final String BACKUP_ID = "backup_id";
 
         /**
@@ -2450,8 +2446,8 @@
          * needs to be synchronized by the server.
          * <P>Type: INTEGER (boolean)</P>
          *
-         * @deprecated This column is no longer supported as of Android version
-         * {@link android.os.Build.VERSION_CODES#R}.
+         * @deprecated This column never actually worked since added. It will not supported as
+         * of Android version {@link android.os.Build.VERSION_CODES#R}.
          */
         @Deprecated
         public static final String METADATA_DIRTY = "metadata_dirty";
@@ -4196,8 +4192,8 @@
          * Hash id on the data fields, used for backup and restore.
          *
          * @hide
-         * @deprecated This column is no longer supported as of Android version
-         * {@link android.os.Build.VERSION_CODES#R}.
+         * @deprecated This column was never public since added. It will not be supported
+         * as of Android version {@link android.os.Build.VERSION_CODES#R}.
          */
         @Deprecated
         public static final String HASH_ID = "hash_id";
@@ -9506,8 +9502,8 @@
 
     /**
      * @hide
-     * @deprecated These columns are no longer supported as of Android version
-     * {@link android.os.Build.VERSION_CODES#R}.
+     * @deprecated These columns were never public since added. They will not be supported
+     * as of Android version {@link android.os.Build.VERSION_CODES#R}.
      */
     @Deprecated
     @SystemApi
@@ -9616,8 +9612,8 @@
      * from server before it is merged into other CP2 tables.
      *
      * @hide
-     * @deprecated These columns are no longer supported as of Android version
-     * {@link android.os.Build.VERSION_CODES#R}.
+     * @deprecated These columns were never public since added. They will not be supported
+     * as of Android version {@link android.os.Build.VERSION_CODES#R}.
      */
     @Deprecated
     @SystemApi
diff --git a/core/java/android/provider/DeviceConfig.java b/core/java/android/provider/DeviceConfig.java
index 091d78e..505d4ca 100644
--- a/core/java/android/provider/DeviceConfig.java
+++ b/core/java/android/provider/DeviceConfig.java
@@ -383,6 +383,14 @@
      */
     public static final String NAMESPACE_WIDGET = "widget";
 
+    /**
+     * Namespace for connectivity thermal power manager features.
+     *
+     * @hide
+     */
+    public static final String NAMESPACE_CONNECTIVITY_THERMAL_POWER_MANAGER =
+            "connectivity_thermal_power_manager";
+
     private static final Object sLock = new Object();
     @GuardedBy("sLock")
     private static ArrayMap<OnPropertiesChangedListener, Pair<String, Executor>> sListeners =
diff --git a/core/java/android/provider/DocumentsContract.java b/core/java/android/provider/DocumentsContract.java
index bb1c8ed..47f2461 100644
--- a/core/java/android/provider/DocumentsContract.java
+++ b/core/java/android/provider/DocumentsContract.java
@@ -16,8 +16,6 @@
 
 package android.provider;
 
-import static android.annotation.SystemApi.Client.MODULE_APPS;
-
 import static com.android.internal.util.Preconditions.checkCollectionElementsNotNull;
 import static com.android.internal.util.Preconditions.checkCollectionNotEmpty;
 
@@ -955,7 +953,7 @@
      *
      * @hide
      */
-    @SystemApi(client = MODULE_APPS)
+    @SystemApi
     @NonNull
     public static Uri buildDocumentUriAsUser(
             @NonNull String authority, @NonNull String documentId, @NonNull UserHandle user) {
diff --git a/core/java/android/provider/Settings.java b/core/java/android/provider/Settings.java
index 3e0b46b..37efec3 100644
--- a/core/java/android/provider/Settings.java
+++ b/core/java/android/provider/Settings.java
@@ -997,8 +997,9 @@
      * <p>
      * In some cases, a matching Activity may not exist, so ensure you safeguard against this.
      * <p>
-     * Input: Optionally, in versions of Android prior to 11, the Intent's data URI can specify the
-     * application package name to directly invoke the management GUI specific to the package name.
+     * Input: Optionally, in versions of Android prior to {@link android.os.Build.VERSION_CODES#R},
+     * the Intent's data URI can specify the application package name to directly invoke the
+     * management GUI specific to the package name.
      * For example "package:com.my.app".
      * <p>
      * Output: Nothing.
@@ -1011,9 +1012,10 @@
      * Activity Action: Show screen for controlling if the app specified in the data URI of the
      * intent can draw on top of other apps.
      * <p>
-     * Unlike {@link #ACTION_MANAGE_OVERLAY_PERMISSION}, which in Android 11 can't be used to show
-     * a GUI for a specific package, permission {@code android.permission.INTERNAL_SYSTEM_WINDOW} is
-     * needed to start an activity with this intent.
+     * Unlike {@link #ACTION_MANAGE_OVERLAY_PERMISSION}, which in Android {@link
+     * android.os.Build.VERSION_CODES#R} can't be used to show a GUI for a specific package,
+     * permission {@code android.permission.INTERNAL_SYSTEM_WINDOW} is needed to start an activity
+     * with this intent.
      * <p>
      * In some cases, a matching Activity may not exist, so ensure you
      * safeguard against this.
@@ -1771,6 +1773,15 @@
             = "android.settings.NOTIFICATION_SETTINGS";
 
     /**
+     * Activity Action: Show notification history screen.
+     *
+     * @hide
+     */
+    @SdkConstant(SdkConstantType.ACTIVITY_INTENT_ACTION)
+    public static final String ACTION_NOTIFICATION_HISTORY
+            = "android.settings.NOTIFICATION_HISTORY";
+
+    /**
      * Activity Action: Show app listing settings, filtered by those that send notifications.
      *
      * @hide
@@ -1830,6 +1841,17 @@
     public static final String EXTRA_CHANNEL_ID = "android.provider.extra.CHANNEL_ID";
 
     /**
+     * Activity Extra: The {@link NotificationChannel#getConversationId()} of the notification
+     * conversation settings to display.
+     * <p>
+     * This is an optional extra field to the {@link #ACTION_CHANNEL_NOTIFICATION_SETTINGS}. If
+     * included the system will first look up notification settings by channel and conversation id,
+     * and will fall back to channel id if a specialized channel for this conversation doesn't
+     * exist, similar to {@link NotificationManager#getNotificationChannel(String, String)}.
+     */
+    public static final String EXTRA_CONVERSATION_ID = "android.provider.extra.CONVERSATION_ID";
+
+    /**
      * Activity Action: Show notification redaction settings.
      *
      * @hide
@@ -2417,6 +2439,10 @@
     public static class NameValueTable implements BaseColumns {
         public static final String NAME = "name";
         public static final String VALUE = "value";
+        // A flag indicating whether the current value of a setting should be preserved during
+        // restore.
+        /** @hide */
+        public static final String IS_PRESERVED_IN_RESTORE = "is_preserved_in_restore";
 
         protected static boolean putString(ContentResolver resolver, Uri uri,
                 String name, String value) {
@@ -2982,6 +3008,7 @@
         private static final HashSet<String> MOVED_TO_SECURE;
         static {
             MOVED_TO_SECURE = new HashSet<>(30);
+            MOVED_TO_SECURE.add(Secure.ADAPTIVE_SLEEP);
             MOVED_TO_SECURE.add(Secure.ANDROID_ID);
             MOVED_TO_SECURE.add(Secure.HTTP_PROXY);
             MOVED_TO_SECURE.add(Secure.LOCATION_PROVIDERS_ALLOWED);
@@ -3900,6 +3927,19 @@
         public static final String SCREEN_BRIGHTNESS_FOR_VR = "screen_brightness_for_vr";
 
         /**
+         * The screen backlight brightness between 0.0f and 1.0f.
+         * @hide
+         */
+        public static final String SCREEN_BRIGHTNESS_FOR_VR_FLOAT =
+                "screen_brightness_for_vr_float";
+
+        /**
+         * The screen backlight brightness between 0.0f and 1.0f.
+         * @hide
+         */
+        public static final String SCREEN_BRIGHTNESS_FLOAT = "screen_brightness_float";
+
+        /**
          * Control whether to enable automatic brightness mode.
          */
         public static final String SCREEN_BRIGHTNESS_MODE = "screen_brightness_mode";
@@ -3924,6 +3964,7 @@
 
         /**
          * Control whether to enable adaptive sleep mode.
+         * @deprecated Use {@link android.provider.Settings.Secure#ADAPTIVE_SLEEP} instead.
          * @hide
          */
         public static final String ADAPTIVE_SLEEP = "adaptive_sleep";
@@ -4712,9 +4753,10 @@
             PUBLIC_SETTINGS.add(DIM_SCREEN);
             PUBLIC_SETTINGS.add(SCREEN_OFF_TIMEOUT);
             PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS);
+            PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_FLOAT);
             PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_FOR_VR);
+            PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_FOR_VR_FLOAT);
             PUBLIC_SETTINGS.add(SCREEN_BRIGHTNESS_MODE);
-            PUBLIC_SETTINGS.add(ADAPTIVE_SLEEP);
             PUBLIC_SETTINGS.add(MODE_RINGER_STREAMS_AFFECTED);
             PUBLIC_SETTINGS.add(MUTE_STREAMS_AFFECTED);
             PUBLIC_SETTINGS.add(VIBRATE_ON);
@@ -5215,7 +5257,6 @@
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_NUM_OPEN_NETWORKS_KEPT);
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ON);
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_P2P_DEVICE_NAME);
-            MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SAVED_STATE);
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS);
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_VERBOSE_LOGGING_ENABLED);
             MOVED_TO_GLOBAL.add(Settings.Global.WIFI_ENHANCED_AUTO_JOIN);
@@ -5769,6 +5810,12 @@
         }
 
         /**
+         * Control whether to enable adaptive sleep mode.
+         * @hide
+         */
+        public static final String ADAPTIVE_SLEEP = "adaptive_sleep";
+
+        /**
          * @deprecated Use {@link android.provider.Settings.Global#DEVELOPMENT_SETTINGS_ENABLED}
          * instead
          */
@@ -6228,16 +6275,19 @@
          * @hide
          */
         public static final String LOCATION_CHANGER = "location_changer";
+
         /**
          * The location changer is unknown or unable to detect.
          * @hide
          */
         public static final int LOCATION_CHANGER_UNKNOWN = 0;
+
         /**
          * Location settings in system settings.
          * @hide
          */
         public static final int LOCATION_CHANGER_SYSTEM_SETTINGS = 1;
+
         /**
          * The location icon in drop down notification drawer.
          * @hide
@@ -6285,6 +6335,14 @@
         public static final int LOCATION_MODE_ON = LOCATION_MODE_HIGH_ACCURACY;
 
         /**
+         * The accuracy in meters used for coarsening location for clients with only the coarse
+         * location permission.
+         *
+         * @hide
+         */
+        public static final String LOCATION_COARSE_ACCURACY_M = "locationCoarseAccuracy";
+
+        /**
          * A flag containing settings used for biometric weak
          * @hide
          */
@@ -8712,6 +8770,14 @@
                 "back_gesture_inset_scale_right";
 
         /**
+         * Current provider of proximity-based sharing services.
+         * Default value in @string/config_defaultNearbySharingComponent.
+         * No VALIDATOR as this setting will not be backed up.
+         * @hide
+         */
+        public static final String NEARBY_SHARING_COMPONENT = "nearby_sharing_component";
+
+        /**
          * Controls whether aware is enabled.
          * @hide
          */
@@ -10185,7 +10251,9 @@
          *
          * Type: int (0 for false, 1 for true)
          * @hide
+         * @deprecated Use {@link WifiManager#isAutoWakeupEnabled()} instead.
          */
+        @Deprecated
         @SystemApi
         public static final String WIFI_WAKEUP_ENABLED = "wifi_wakeup_enabled";
 
@@ -10221,7 +10289,6 @@
          * enabled state.
          * @hide
          */
-        @SystemApi
         public static final String NETWORK_RECOMMENDATIONS_ENABLED =
                 "network_recommendations_enabled";
 
@@ -10323,16 +10390,6 @@
         public static final String BLE_SCAN_BACKGROUND_MODE = "ble_scan_background_mode";
 
        /**
-        * Used to save the Wifi_ON state prior to tethering.
-        * This state will be checked to restore Wifi after
-        * the user turns off tethering.
-        *
-        * @hide
-        */
-       @UnsupportedAppUsage
-       public static final String WIFI_SAVED_STATE = "wifi_saved_state";
-
-       /**
         * The interval in milliseconds to scan as used by the wifi supplicant
         * @hide
         */
@@ -14054,7 +14111,7 @@
          * means Common Criteria mode is enabled.
          * @hide
          */
-        @SystemApi(client = SystemApi.Client.MODULE_APPS)
+        @SystemApi
         public static final String COMMON_CRITERIA_MODE = "common_criteria_mode";
     }
 
diff --git a/core/java/android/provider/Telephony.java b/core/java/android/provider/Telephony.java
index b6f5138..adfa885 100644
--- a/core/java/android/provider/Telephony.java
+++ b/core/java/android/provider/Telephony.java
@@ -5205,6 +5205,7 @@
         /**
          * TelephonyProvider column name for allowed network types. Indicate which network types
          * are allowed. Default is -1.
+         * <P>Type: BIGINT (long) </P>
          */
         public static final String ALLOWED_NETWORK_TYPES = "allowed_network_types";
     }
diff --git a/core/java/android/service/autofill/Dataset.java b/core/java/android/service/autofill/Dataset.java
index 262d989..886b433 100644
--- a/core/java/android/service/autofill/Dataset.java
+++ b/core/java/android/service/autofill/Dataset.java
@@ -322,6 +322,9 @@
          * platform needs to fill in the authentication arguments.
          *
          * @param authentication Intent to an activity with your authentication flow.
+         *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          *
          * @see android.app.PendingIntent
@@ -349,6 +352,8 @@
          *
          * @param id id for this dataset or {@code null} to unset.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          */
         public @NonNull Builder setId(@Nullable String id) {
@@ -378,6 +383,9 @@
          * @param value value to be autofilled. Pass {@code null} if you do not have the value
          *        but the target view is a logical part of the dataset. For example, if
          *        the dataset needs authentication and you have no access to the value.
+         *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value) {
@@ -403,8 +411,10 @@
          *        but the target view is a logical part of the dataset. For example, if
          *        the dataset needs authentication and you have no access to the value.
          * @param presentation the presentation used to visualize this field.
-         * @return this builder.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
+         * @return this builder.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value,
                 @NonNull RemoteViews presentation) {
@@ -439,7 +449,7 @@
          *
          * @return this builder.
          * @throws IllegalStateException if the builder was constructed without a
-         *         {@link RemoteViews presentation}.
+         *         {@link RemoteViews presentation} or {@link #build()} was already called.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value,
                 @Nullable Pattern filter) {
@@ -475,6 +485,8 @@
          *        such as passwords).
          * @param presentation the presentation used to visualize this field.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value,
@@ -504,6 +516,8 @@
          *        as inline suggestions. If the dataset supports inline suggestions,
          *        this should not be null.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value,
@@ -544,6 +558,8 @@
          *        as inline suggestions. If the dataset supports inline suggestions, this
          *        should not be null.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          */
         public @NonNull Builder setValue(@NonNull AutofillId id, @Nullable AutofillValue value,
@@ -576,6 +592,8 @@
          *        as inline suggestions. If the dataset supports inline suggestions, this
          *        should not be null.
          *
+         * @throws IllegalStateException if {@link #build()} was already called.
+         *
          * @return this builder.
          *
          * @hide
@@ -628,7 +646,8 @@
          * @throws IllegalStateException if no field was set (through
          * {@link #setValue(AutofillId, AutofillValue)} or
          * {@link #setValue(AutofillId, AutofillValue, RemoteViews)} or
-         * {@link #setValue(AutofillId, AutofillValue, RemoteViews, InlinePresentation)}).
+         * {@link #setValue(AutofillId, AutofillValue, RemoteViews, InlinePresentation)}),
+         * or if {@link #build()} was already called.
          *
          * @return The built dataset.
          */
diff --git a/core/java/android/service/autofill/FillResponse.java b/core/java/android/service/autofill/FillResponse.java
index 36f3a78..7032825 100644
--- a/core/java/android/service/autofill/FillResponse.java
+++ b/core/java/android/service/autofill/FillResponse.java
@@ -87,7 +87,8 @@
     private final @Nullable UserData mUserData;
     private final @Nullable int[] mCancelIds;
     private final boolean mSupportsInlineSuggestions;
-    private final @Nullable ParceledListSlice<InlinePresentation> mInlineActions;
+    // TODO(b/149240554): revert back to use ParceledListSlice after the bug is resolved.
+    private final @Nullable ArrayList<InlinePresentation> mInlineActions;
 
     private FillResponse(@NonNull Builder builder) {
         mDatasets = (builder.mDatasets != null) ? new ParceledListSlice<>(builder.mDatasets) : null;
@@ -106,8 +107,7 @@
         mUserData = builder.mUserData;
         mCancelIds = builder.mCancelIds;
         mSupportsInlineSuggestions = builder.mSupportsInlineSuggestions;
-        mInlineActions = (builder.mInlineActions != null) ? new ParceledListSlice<>(
-                builder.mInlineActions) : null;
+        mInlineActions = builder.mInlineActions;
     }
 
     /** @hide */
@@ -207,7 +207,7 @@
 
     /** @hide */
     public @Nullable List<InlinePresentation> getInlineActions() {
-        return (mInlineActions != null) ? mInlineActions.getList() : null;
+        return mInlineActions;
     }
 
     /**
@@ -718,7 +718,7 @@
         }
         builder.append(", mSupportInlinePresentations=").append(mSupportsInlineSuggestions);
         if (mInlineActions != null) {
-            builder.append(", mInlineActions=" + mInlineActions.getList());
+            builder.append(", mInlineActions=" + mInlineActions);
         }
         return builder.append("]").toString();
     }
@@ -748,7 +748,7 @@
         parcel.writeParcelableArray(mFieldClassificationIds, flags);
         parcel.writeInt(mFlags);
         parcel.writeIntArray(mCancelIds);
-        parcel.writeParcelable(mInlineActions, flags);
+        parcel.writeTypedList(mInlineActions, flags);
         parcel.writeInt(mRequestId);
     }
 
@@ -804,13 +804,12 @@
             final int[] cancelIds = parcel.createIntArray();
             builder.setPresentationCancelIds(cancelIds);
 
-            final ParceledListSlice<InlinePresentation> inlineActionsSlice = parcel.readParcelable(
-                    null);
-            final List<InlinePresentation> inlineActions =
-                    (inlineActionsSlice != null) ? inlineActionsSlice.getList() : null;
-            final int inlineActionsCount = (inlineActions != null) ? inlineActions.size() : 0;
-            for (int i = 0; i < inlineActionsCount; i++) {
-                builder.addInlineAction(inlineActions.get(i));
+            final List<InlinePresentation> inlineActions = parcel.createTypedArrayList(
+                    InlinePresentation.CREATOR);
+            if (inlineActions != null) {
+                for (InlinePresentation inlineAction : inlineActions) {
+                    builder.addInlineAction(inlineAction);
+                }
             }
 
             final FillResponse response = builder.build();
diff --git a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
index 6334d9d..79852d3 100644
--- a/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
+++ b/core/java/android/service/autofill/augmented/AugmentedAutofillService.java
@@ -39,6 +39,7 @@
 import android.os.RemoteException;
 import android.os.SystemClock;
 import android.service.autofill.Dataset;
+import android.service.autofill.FillEventHistory;
 import android.service.autofill.augmented.PresentationParams.SystemPopupPresentationParams;
 import android.util.Log;
 import android.util.Pair;
@@ -91,7 +92,7 @@
     // Used for metrics / debug only
     private ComponentName mServiceComponentName;
 
-    private final IAugmentedAutofillService mInterface = new IAugmentedAutofillService.Stub() {
+    private final class AugmentedAutofillServiceImpl extends IAugmentedAutofillService.Stub {
 
         @Override
         public void onConnected(boolean debug, boolean verbose) {
@@ -135,7 +136,7 @@
     public final IBinder onBind(Intent intent) {
         mServiceComponentName = intent.getComponent();
         if (SERVICE_INTERFACE.equals(intent.getAction())) {
-            return mInterface.asBinder();
+            return new AugmentedAutofillServiceImpl();
         }
         Log.w(TAG, "Tried to bind to wrong intent (should be " + SERVICE_INTERFACE + ": " + intent);
         return null;
@@ -319,17 +320,44 @@
         pw.print(getClass().getName()); pw.println(": nothing to dump");
     }
 
+    /**
+     * Gets the inline augmented autofill events that happened after the last
+     * {@link #onFillRequest(FillRequest, CancellationSignal, FillController, FillCallback)} call.
+     *
+     * <p>The history is not persisted over reboots, and it's cleared every time the service
+     * replies to a
+     * {@link #onFillRequest(FillRequest, CancellationSignal, FillController, FillCallback)}
+     * by calling {@link FillCallback#onSuccess(FillResponse)}. Hence, the service should call
+     * {@link #getFillEventHistory() before finishing the {@link FillCallback}.
+     *
+     * <p>Also note that the events from the dropdown suggestion UI is not stored in the history
+     * since the service owns the UI.
+     *
+     * @return The history or {@code null} if there are no events.
+     */
+    @Nullable public final FillEventHistory getFillEventHistory() {
+        final AutofillManager afm = getSystemService(AutofillManager.class);
+
+        if (afm == null) {
+            return null;
+        } else {
+            return afm.getFillEventHistory();
+        }
+    }
+
     /** @hide */
     static final class AutofillProxy {
 
         static final int REPORT_EVENT_NO_RESPONSE = 1;
         static final int REPORT_EVENT_UI_SHOWN = 2;
         static final int REPORT_EVENT_UI_DESTROYED = 3;
+        static final int REPORT_EVENT_INLINE_RESPONSE = 4;
 
         @IntDef(prefix = { "REPORT_EVENT_" }, value = {
                 REPORT_EVENT_NO_RESPONSE,
                 REPORT_EVENT_UI_SHOWN,
-                REPORT_EVENT_UI_DESTROYED
+                REPORT_EVENT_UI_DESTROYED,
+                REPORT_EVENT_INLINE_RESPONSE
         })
         @Retention(RetentionPolicy.SOURCE)
         @interface ReportEvent{}
@@ -338,8 +366,8 @@
         private final Object mLock = new Object();
         private final IAugmentedAutofillManagerClient mClient;
         private final int mSessionId;
-        public final int taskId;
-        public final ComponentName componentName;
+        public final int mTaskId;
+        public final ComponentName mComponentName;
         // Used for metrics / debug only
         private String mServicePackageName;
         @GuardedBy("mLock")
@@ -379,8 +407,8 @@
             mSessionId = sessionId;
             mClient = IAugmentedAutofillManagerClient.Stub.asInterface(client);
             mCallback = callback;
-            this.taskId = taskId;
-            this.componentName = componentName;
+            mTaskId = taskId;
+            mComponentName = componentName;
             mServicePackageName = serviceComponentName.getPackageName();
             mFocusedId = focusedId;
             mFocusedValue = focusedValue;
@@ -487,21 +515,24 @@
             }
         }
 
-        public void onInlineSuggestionsDataReady(@NonNull List<Dataset> inlineSuggestionsData) {
+        void reportResult(@Nullable List<Dataset> inlineSuggestionsData) {
             try {
-                mCallback.onSuccess(inlineSuggestionsData.toArray(new Dataset[]{}));
+                final Dataset[] inlineSuggestions = (inlineSuggestionsData != null)
+                        ? inlineSuggestionsData.toArray(new Dataset[inlineSuggestionsData.size()])
+                        : null;
+                mCallback.onSuccess(inlineSuggestions);
             } catch (RemoteException e) {
                 Log.e(TAG, "Error calling back with the inline suggestions data: " + e);
             }
         }
 
-        // Used (mostly) for metrics.
-        public void report(@ReportEvent int event) {
-            if (sVerbose) Log.v(TAG, "report(): " + event);
+        void logEvent(@ReportEvent int event) {
+            if (sVerbose) Log.v(TAG, "returnAndLogResult(): " + event);
             long duration = -1;
             int type = MetricsEvent.TYPE_UNKNOWN;
+
             switch (event) {
-                case REPORT_EVENT_NO_RESPONSE:
+                case REPORT_EVENT_NO_RESPONSE: {
                     type = MetricsEvent.TYPE_SUCCESS;
                     if (mFirstOnSuccessTime == 0) {
                         mFirstOnSuccessTime = SystemClock.elapsedRealtime();
@@ -510,39 +541,49 @@
                             Log.d(TAG, "Service responded nothing in " + formatDuration(duration));
                         }
                     }
-                    try {
-                        mCallback.onSuccess(/* mInlineSuggestionsData= */null);
-                    } catch (RemoteException e) {
-                        Log.e(TAG, "Error reporting success: " + e);
+                } break;
+
+                case REPORT_EVENT_INLINE_RESPONSE: {
+                    // TODO: Define a constant and log this event
+                    // type = MetricsEvent.TYPE_SUCCESS_INLINE;
+                    if (mFirstOnSuccessTime == 0) {
+                        mFirstOnSuccessTime = SystemClock.elapsedRealtime();
+                        duration = mFirstOnSuccessTime - mFirstRequestTime;
+                        if (sDebug) {
+                            Log.d(TAG, "Service responded nothing in " + formatDuration(duration));
+                        }
                     }
-                    break;
-                case REPORT_EVENT_UI_SHOWN:
+                } break;
+
+                case REPORT_EVENT_UI_SHOWN: {
                     type = MetricsEvent.TYPE_OPEN;
                     if (mUiFirstShownTime == 0) {
                         mUiFirstShownTime = SystemClock.elapsedRealtime();
                         duration = mUiFirstShownTime - mFirstRequestTime;
                         if (sDebug) Log.d(TAG, "UI shown in " + formatDuration(duration));
                     }
-                    break;
-                case REPORT_EVENT_UI_DESTROYED:
+                } break;
+
+                case REPORT_EVENT_UI_DESTROYED: {
                     type = MetricsEvent.TYPE_CLOSE;
                     if (mUiFirstDestroyedTime == 0) {
                         mUiFirstDestroyedTime = SystemClock.elapsedRealtime();
-                        duration =  mUiFirstDestroyedTime - mFirstRequestTime;
+                        duration = mUiFirstDestroyedTime - mFirstRequestTime;
                         if (sDebug) Log.d(TAG, "UI destroyed in " + formatDuration(duration));
                     }
-                    break;
+                } break;
+
                 default:
                     Log.w(TAG, "invalid event reported: " + event);
             }
-            logResponse(type, mServicePackageName, componentName, mSessionId, duration);
+            logResponse(type, mServicePackageName, mComponentName, mSessionId, duration);
         }
 
         public void dump(@NonNull String prefix, @NonNull PrintWriter pw) {
             pw.print(prefix); pw.print("sessionId: "); pw.println(mSessionId);
-            pw.print(prefix); pw.print("taskId: "); pw.println(taskId);
+            pw.print(prefix); pw.print("taskId: "); pw.println(mTaskId);
             pw.print(prefix); pw.print("component: ");
-            pw.println(componentName.flattenToShortString());
+            pw.println(mComponentName.flattenToShortString());
             pw.print(prefix); pw.print("focusedId: "); pw.println(mFocusedId);
             if (mFocusedValue != null) {
                 pw.print(prefix); pw.print("focusedValue: "); pw.println(mFocusedValue);
diff --git a/core/java/android/service/autofill/augmented/FillCallback.java b/core/java/android/service/autofill/augmented/FillCallback.java
index b767799..19eff57 100644
--- a/core/java/android/service/autofill/augmented/FillCallback.java
+++ b/core/java/android/service/autofill/augmented/FillCallback.java
@@ -54,13 +54,15 @@
         if (sDebug) Log.d(TAG, "onSuccess(): " + response);
 
         if (response == null) {
-            mProxy.report(AutofillProxy.REPORT_EVENT_NO_RESPONSE);
+            mProxy.logEvent(AutofillProxy.REPORT_EVENT_NO_RESPONSE);
+            mProxy.reportResult(null /*inlineSuggestions*/);
             return;
         }
 
         List<Dataset> inlineSuggestions = response.getInlineSuggestions();
         if (inlineSuggestions != null && !inlineSuggestions.isEmpty()) {
-            mProxy.onInlineSuggestionsDataReady(inlineSuggestions);
+            mProxy.logEvent(AutofillProxy.REPORT_EVENT_INLINE_RESPONSE);
+            mProxy.reportResult(inlineSuggestions);
             return;
         }
 
diff --git a/core/java/android/service/autofill/augmented/FillController.java b/core/java/android/service/autofill/augmented/FillController.java
index 63ec2d8..7d552d6 100644
--- a/core/java/android/service/autofill/augmented/FillController.java
+++ b/core/java/android/service/autofill/augmented/FillController.java
@@ -62,12 +62,13 @@
 
         try {
             mProxy.autofill(values);
-            final FillWindow fillWindow = mProxy.getFillWindow();
-            if (fillWindow != null) {
-                fillWindow.destroy();
-            }
         } catch (RemoteException e) {
             e.rethrowAsRuntimeException();
         }
+
+        final FillWindow fillWindow = mProxy.getFillWindow();
+        if (fillWindow != null) {
+            fillWindow.destroy();
+        }
     }
 }
diff --git a/core/java/android/service/autofill/augmented/FillRequest.java b/core/java/android/service/autofill/augmented/FillRequest.java
index ca49e7d..6927cf6 100644
--- a/core/java/android/service/autofill/augmented/FillRequest.java
+++ b/core/java/android/service/autofill/augmented/FillRequest.java
@@ -53,7 +53,7 @@
      * Gets the task of the activity associated with this request.
      */
     public int getTaskId() {
-        return mProxy.taskId;
+        return mProxy.mTaskId;
     }
 
     /**
@@ -61,7 +61,7 @@
      */
     @NonNull
     public ComponentName getActivityComponent() {
-        return mProxy.componentName;
+        return mProxy.mComponentName;
     }
 
     /**
diff --git a/core/java/android/service/autofill/augmented/FillResponse.java b/core/java/android/service/autofill/augmented/FillResponse.java
index e8e6ff0..68ba63a 100644
--- a/core/java/android/service/autofill/augmented/FillResponse.java
+++ b/core/java/android/service/autofill/augmented/FillResponse.java
@@ -19,6 +19,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
+import android.os.Bundle;
 import android.service.autofill.Dataset;
 
 import com.android.internal.util.DataClass;
@@ -50,6 +51,13 @@
     @DataClass.PluralOf("inlineSuggestion")
     private @Nullable List<Dataset> mInlineSuggestions;
 
+    /**
+     * The client state that {@link AugmentedAutofillService} implementation can put anything in to
+     * identify the request and the response when calling
+     * {@link AugmentedAutofillService#getFillEventHistory()}.
+     */
+    private @Nullable Bundle mClientState;
+
     private static FillWindow defaultFillWindow() {
         return null;
     }
@@ -58,6 +66,10 @@
         return null;
     }
 
+    private static Bundle defaultClientState() {
+        return null;
+    }
+
 
     /** @hide */
     abstract static class BaseBuilder {
@@ -82,9 +94,11 @@
     @DataClass.Generated.Member
     /* package-private */ FillResponse(
             @Nullable FillWindow fillWindow,
-            @Nullable List<Dataset> inlineSuggestions) {
+            @Nullable List<Dataset> inlineSuggestions,
+            @Nullable Bundle clientState) {
         this.mFillWindow = fillWindow;
         this.mInlineSuggestions = inlineSuggestions;
+        this.mClientState = clientState;
 
         // onConstructed(); // You can define this method to get a callback
     }
@@ -111,6 +125,18 @@
     }
 
     /**
+     * The client state that {@link AugmentedAutofillService} implementation can put anything in to
+     * identify the request and the response when calling
+     * {@link AugmentedAutofillService#getFillEventHistory()}.
+     *
+     * @hide
+     */
+    @DataClass.Generated.Member
+    public @Nullable Bundle getClientState() {
+        return mClientState;
+    }
+
+    /**
      * A builder for {@link FillResponse}
      */
     @SuppressWarnings("WeakerAccess")
@@ -119,6 +145,7 @@
 
         private @Nullable FillWindow mFillWindow;
         private @Nullable List<Dataset> mInlineSuggestions;
+        private @Nullable Bundle mClientState;
 
         private long mBuilderFieldsSet = 0L;
 
@@ -157,10 +184,23 @@
             return this;
         }
 
+        /**
+         * The client state that {@link AugmentedAutofillService} implementation can put anything in to
+         * identify the request and the response when calling
+         * {@link AugmentedAutofillService#getFillEventHistory()}.
+         */
+        @DataClass.Generated.Member
+        public @NonNull Builder setClientState(@Nullable Bundle value) {
+            checkNotUsed();
+            mBuilderFieldsSet |= 0x4;
+            mClientState = value;
+            return this;
+        }
+
         /** Builds the instance. This builder should not be touched after calling this! */
         public @NonNull FillResponse build() {
             checkNotUsed();
-            mBuilderFieldsSet |= 0x4; // Mark builder used
+            mBuilderFieldsSet |= 0x8; // Mark builder used
 
             if ((mBuilderFieldsSet & 0x1) == 0) {
                 mFillWindow = defaultFillWindow();
@@ -168,14 +208,18 @@
             if ((mBuilderFieldsSet & 0x2) == 0) {
                 mInlineSuggestions = defaultInlineSuggestions();
             }
+            if ((mBuilderFieldsSet & 0x4) == 0) {
+                mClientState = defaultClientState();
+            }
             FillResponse o = new FillResponse(
                     mFillWindow,
-                    mInlineSuggestions);
+                    mInlineSuggestions,
+                    mClientState);
             return o;
         }
 
         private void checkNotUsed() {
-            if ((mBuilderFieldsSet & 0x4) != 0) {
+            if ((mBuilderFieldsSet & 0x8) != 0) {
                 throw new IllegalStateException(
                         "This Builder should not be reused. Use a new Builder instance instead");
             }
@@ -183,10 +227,10 @@
     }
 
     @DataClass.Generated(
-            time = 1577476012370L,
+            time = 1580335256422L,
             codegenVersion = "1.0.14",
             sourceFile = "frameworks/base/core/java/android/service/autofill/augmented/FillResponse.java",
-            inputSignatures = "private @android.annotation.Nullable android.service.autofill.augmented.FillWindow mFillWindow\nprivate @com.android.internal.util.DataClass.PluralOf(\"inlineSuggestion\") @android.annotation.Nullable java.util.List<android.service.autofill.Dataset> mInlineSuggestions\nprivate static  android.service.autofill.augmented.FillWindow defaultFillWindow()\nprivate static  java.util.List<android.service.autofill.Dataset> defaultInlineSuggestions()\nclass FillResponse extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true, genHiddenGetters=true)\nabstract  android.service.autofill.augmented.FillResponse.Builder addInlineSuggestion(android.service.autofill.Dataset)\nclass BaseBuilder extends java.lang.Object implements []")
+            inputSignatures = "private @android.annotation.Nullable android.service.autofill.augmented.FillWindow mFillWindow\nprivate @com.android.internal.util.DataClass.PluralOf(\"inlineSuggestion\") @android.annotation.Nullable java.util.List<android.service.autofill.Dataset> mInlineSuggestions\nprivate @android.annotation.Nullable android.os.Bundle mClientState\nprivate static  android.service.autofill.augmented.FillWindow defaultFillWindow()\nprivate static  java.util.List<android.service.autofill.Dataset> defaultInlineSuggestions()\nprivate static  android.os.Bundle defaultClientState()\nclass FillResponse extends java.lang.Object implements []\n@com.android.internal.util.DataClass(genBuilder=true, genHiddenGetters=true)\nabstract  android.service.autofill.augmented.FillResponse.Builder addInlineSuggestion(android.service.autofill.Dataset)\nclass BaseBuilder extends java.lang.Object implements []")
     @Deprecated
     private void __metadata() {}
 
diff --git a/core/java/android/service/autofill/augmented/FillWindow.java b/core/java/android/service/autofill/augmented/FillWindow.java
index 5d00370..077df6c 100644
--- a/core/java/android/service/autofill/augmented/FillWindow.java
+++ b/core/java/android/service/autofill/augmented/FillWindow.java
@@ -21,6 +21,7 @@
 import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.graphics.Rect;
@@ -41,6 +42,7 @@
 import dalvik.system.CloseGuard;
 
 import java.io.PrintWriter;
+import java.lang.ref.WeakReference;
 
 /**
  * Handle to a window used to display the augmented autofill UI.
@@ -70,23 +72,22 @@
     private final CloseGuard mCloseGuard = CloseGuard.get();
 
     private final @NonNull Handler mUiThreadHandler = new Handler(Looper.getMainLooper());
-    private final @NonNull FillWindowPresenter mFillWindowPresenter = new FillWindowPresenter();
 
     @GuardedBy("mLock")
-    private WindowManager mWm;
+    private @NonNull WindowManager mWm;
     @GuardedBy("mLock")
     private View mFillView;
     @GuardedBy("mLock")
     private boolean mShowing;
     @GuardedBy("mLock")
-    private Rect mBounds;
+    private @Nullable Rect mBounds;
 
     @GuardedBy("mLock")
     private boolean mUpdateCalled;
     @GuardedBy("mLock")
     private boolean mDestroyed;
 
-    private AutofillProxy mProxy;
+    private @NonNull AutofillProxy mProxy;
 
     /**
      * Updates the content of the window.
@@ -172,11 +173,11 @@
                 try {
                     mProxy.requestShowFillUi(mBounds.right - mBounds.left,
                             mBounds.bottom - mBounds.top,
-                            /*anchorBounds=*/ null, mFillWindowPresenter);
+                            /*anchorBounds=*/ null, new FillWindowPresenter(this));
                 } catch (RemoteException e) {
                     Log.w(TAG, "Error requesting to show fill window", e);
                 }
-                mProxy.report(AutofillProxy.REPORT_EVENT_UI_SHOWN);
+                mProxy.logEvent(AutofillProxy.REPORT_EVENT_UI_SHOWN);
             }
         }
     }
@@ -244,7 +245,7 @@
             if (mUpdateCalled) {
                 mFillView.setOnClickListener(null);
                 hide();
-                mProxy.report(AutofillProxy.REPORT_EVENT_UI_DESTROYED);
+                mProxy.logEvent(AutofillProxy.REPORT_EVENT_UI_DESTROYED);
             }
             mDestroyed = true;
             mCloseGuard.close();
@@ -254,9 +255,7 @@
     @Override
     protected void finalize() throws Throwable {
         try {
-            if (mCloseGuard != null) {
-                mCloseGuard.warnIfOpen();
-            }
+            mCloseGuard.warnIfOpen();
             destroy();
         } finally {
             super.finalize();
@@ -289,22 +288,36 @@
 
     /** @hide */
     @Override
-    public void close() throws Exception {
+    public void close() {
         destroy();
     }
 
-    private final class FillWindowPresenter extends IAutofillWindowPresenter.Stub {
+    private static final class FillWindowPresenter extends IAutofillWindowPresenter.Stub {
+        private final @NonNull WeakReference<FillWindow> mFillWindowReference;
+
+        FillWindowPresenter(@NonNull FillWindow fillWindow) {
+            mFillWindowReference = new WeakReference<>(fillWindow);
+        }
+
         @Override
         public void show(WindowManager.LayoutParams p, Rect transitionEpicenter,
                 boolean fitsSystemWindows, int layoutDirection) {
             if (sDebug) Log.d(TAG, "FillWindowPresenter.show()");
-            mUiThreadHandler.sendMessage(obtainMessage(FillWindow::handleShow, FillWindow.this, p));
+            final FillWindow fillWindow = mFillWindowReference.get();
+            if (fillWindow != null) {
+                fillWindow.mUiThreadHandler.sendMessage(
+                        obtainMessage(FillWindow::handleShow, fillWindow, p));
+            }
         }
 
         @Override
         public void hide(Rect transitionEpicenter) {
             if (sDebug) Log.d(TAG, "FillWindowPresenter.hide()");
-            mUiThreadHandler.sendMessage(obtainMessage(FillWindow::handleHide, FillWindow.this));
+            final FillWindow fillWindow = mFillWindowReference.get();
+            if (fillWindow != null) {
+                fillWindow.mUiThreadHandler.sendMessage(
+                        obtainMessage(FillWindow::handleHide, fillWindow));
+            }
         }
     }
 }
diff --git a/core/java/android/service/autofill/augmented/IFillCallback.aidl b/core/java/android/service/autofill/augmented/IFillCallback.aidl
index 3ccb311..d983721 100644
--- a/core/java/android/service/autofill/augmented/IFillCallback.aidl
+++ b/core/java/android/service/autofill/augmented/IFillCallback.aidl
@@ -16,6 +16,7 @@
 
 package android.service.autofill.augmented;
 
+import android.os.Bundle;
 import android.os.ICancellationSignal;
 
 import android.service.autofill.Dataset;
@@ -27,7 +28,7 @@
  */
 interface IFillCallback {
     void onCancellable(in ICancellationSignal cancellation);
-    void onSuccess(in @nullable Dataset[] mInlineSuggestionsData);
+    void onSuccess(in @nullable Dataset[] inlineSuggestionsData);
     boolean isCompleted();
     void cancel();
 }
diff --git a/core/java/android/service/chooser/ChooserTarget.java b/core/java/android/service/chooser/ChooserTarget.java
index 5d2d667..ec3dfe1 100644
--- a/core/java/android/service/chooser/ChooserTarget.java
+++ b/core/java/android/service/chooser/ChooserTarget.java
@@ -39,7 +39,12 @@
  * <p>Creators of chooser targets should consult the relevant design guidelines for the type
  * of target they are presenting. For example, targets involving people should be presented
  * with a circular icon.</p>
+ *
+ * @deprecated For publishing direct share targets, please follow the instructions in
+ * https://developer.android.com/training/sharing/receive.html#providing-direct-share-targets
+ * instead.
  */
+@Deprecated
 public final class ChooserTarget implements Parcelable {
     private static final String TAG = "ChooserTarget";
 
diff --git a/core/java/android/service/chooser/ChooserTargetService.java b/core/java/android/service/chooser/ChooserTargetService.java
index a1afa60..ec56064 100644
--- a/core/java/android/service/chooser/ChooserTargetService.java
+++ b/core/java/android/service/chooser/ChooserTargetService.java
@@ -72,7 +72,13 @@
  *                 android:value=".MyChooserTargetService" />
  *     &lt;/activity>
  * </pre>
+ *
+ * @deprecated For publishing direct share targets, please follow the instructions in
+ * https://developer.android.com/training/sharing/receive.html#providing-direct-share-targets
+ * instead.
  */
+
+@Deprecated
 public abstract class ChooserTargetService extends Service {
     // TAG = "ChooserTargetService[MySubclass]";
     private final String TAG = ChooserTargetService.class.getSimpleName()
diff --git a/core/java/android/service/contentcapture/ContentCaptureService.java b/core/java/android/service/contentcapture/ContentCaptureService.java
index ac2532d..cecfe24 100644
--- a/core/java/android/service/contentcapture/ContentCaptureService.java
+++ b/core/java/android/service/contentcapture/ContentCaptureService.java
@@ -34,17 +34,14 @@
 import android.content.pm.ParceledListSlice;
 import android.os.Binder;
 import android.os.Bundle;
-import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IBinder;
-import android.os.ICancellationSignal;
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.view.contentcapture.ContentCaptureCondition;
 import android.view.contentcapture.ContentCaptureContext;
 import android.view.contentcapture.ContentCaptureEvent;
@@ -57,6 +54,7 @@
 import android.view.contentcapture.MainContentCaptureSession;
 
 import com.android.internal.os.IResultReceiver;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.Preconditions;
 
 import java.io.FileDescriptor;
@@ -341,15 +339,18 @@
      * @hide
      */
     @SystemApi
+    @TestApi
     public void onDataShareRequest(@NonNull DataShareRequest request,
             @NonNull DataShareCallback callback) {
         if (sVerbose) Log.v(TAG, "onDataShareRequest()");
     }
 
     /**
-     * Notifies the service of {@link SnapshotData snapshot data} associated with a session.
+     * Notifies the service of {@link SnapshotData snapshot data} associated with an activity.
      *
-     * @param sessionId the session's Id
+     * @param sessionId the session's Id. This may also be
+     *                  {@link ContentCaptureSession#NO_SESSION_ID} if no content capture session
+     *                  exists for the activity being snapshotted
      * @param snapshotData the data
      */
     public void onActivitySnapshot(@NonNull ContentCaptureSessionId sessionId,
@@ -544,14 +545,11 @@
                 Preconditions.checkNotNull(adapter);
                 Preconditions.checkNotNull(executor);
 
-                ICancellationSignal cancellationSignalTransport =
-                        CancellationSignal.createTransport();
-
-                DataShareReadAdapterDelegate delegate = new DataShareReadAdapterDelegate(
-                        executor, cancellationSignalTransport, adapter);
+                DataShareReadAdapterDelegate delegate =
+                        new DataShareReadAdapterDelegate(executor, adapter);
 
                 try {
-                    callback.accept(cancellationSignalTransport, delegate);
+                    callback.accept(delegate);
                 } catch (RemoteException e) {
                     Slog.e(TAG, "Failed to accept data sharing", e);
                 }
@@ -599,7 +597,7 @@
                     + rightUid);
             long now = System.currentTimeMillis();
             if (now - mLastCallerMismatchLog > mCallerMismatchTimeout) {
-                StatsLog.write(StatsLog.CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED,
+                FrameworkStatsLog.write(FrameworkStatsLog.CONTENT_CAPTURE_CALLER_MISMATCH_REPORTED,
                         getPackageManager().getNameForUid(rightUid),
                         getPackageManager().getNameForUid(uid));
                 mLastCallerMismatchLog = now;
@@ -658,38 +656,20 @@
         private final Object mLock = new Object();
         private final WeakReference<DataShareReadAdapter> mAdapterReference;
         private final WeakReference<Executor> mExecutorReference;
-        private final WeakReference<ICancellationSignal> mCancellationSignalReference;
 
-        DataShareReadAdapterDelegate(Executor executor,
-                ICancellationSignal cancellationSignalTransport, DataShareReadAdapter adapter) {
+        DataShareReadAdapterDelegate(Executor executor, DataShareReadAdapter adapter) {
             Preconditions.checkNotNull(executor);
-            Preconditions.checkNotNull(cancellationSignalTransport);
             Preconditions.checkNotNull(adapter);
 
             mExecutorReference = new WeakReference<>(executor);
-            mCancellationSignalReference = new WeakReference<>(cancellationSignalTransport);
             mAdapterReference = new WeakReference<>(adapter);
         }
 
         @Override
-        public void start(ParcelFileDescriptor fd, ICancellationSignal remoteCancellationSignal)
+        public void start(ParcelFileDescriptor fd)
                 throws RemoteException {
             synchronized (mLock) {
-                ICancellationSignal serverControlledCancellationSignal =
-                        mCancellationSignalReference.get();
-
-                if (serverControlledCancellationSignal == null) {
-                    Slog.w(TAG, "Can't execute onStart(), reference to cancellation signal has "
-                            + "been GC'ed");
-                    return;
-                }
-
-                CancellationSignal cancellationSignal =
-                        CancellationSignal.fromTransport(serverControlledCancellationSignal);
-                cancellationSignal.setRemote(remoteCancellationSignal);
-
-                executeAdapterMethodLocked(
-                        adapter -> adapter.onStart(fd, cancellationSignal), "onStart");
+                executeAdapterMethodLocked(adapter -> adapter.onStart(fd), "onStart");
             }
         }
 
diff --git a/core/java/android/service/contentcapture/DataShareCallback.java b/core/java/android/service/contentcapture/DataShareCallback.java
index e3c7bb3..5df8a4b 100644
--- a/core/java/android/service/contentcapture/DataShareCallback.java
+++ b/core/java/android/service/contentcapture/DataShareCallback.java
@@ -19,6 +19,7 @@
 import android.annotation.CallbackExecutor;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
+import android.annotation.TestApi;
 
 import java.util.concurrent.Executor;
 
@@ -32,6 +33,7 @@
  * @hide
  **/
 @SystemApi
+@TestApi
 public interface DataShareCallback {
 
     /** Accept the data share.
diff --git a/core/java/android/service/contentcapture/DataShareReadAdapter.java b/core/java/android/service/contentcapture/DataShareReadAdapter.java
index ca68201..a481ec8 100644
--- a/core/java/android/service/contentcapture/DataShareReadAdapter.java
+++ b/core/java/android/service/contentcapture/DataShareReadAdapter.java
@@ -18,7 +18,7 @@
 
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
-import android.os.CancellationSignal;
+import android.annotation.TestApi;
 import android.os.ParcelFileDescriptor;
 
 /**
@@ -28,19 +28,23 @@
  * @hide
  **/
 @SystemApi
+@TestApi
 public interface DataShareReadAdapter {
 
     /**
      * Signals the start of the data sharing session.
      *
      * @param fd file descriptor to use for reading data, that's being shared
-     * @param cancellationSignal cancellation signal to use if data is no longer needed and the
-     *                           session needs to be terminated.
      **/
-    void onStart(@NonNull ParcelFileDescriptor fd, @NonNull CancellationSignal cancellationSignal);
+    void onStart(@NonNull ParcelFileDescriptor fd);
 
     /**
      * Signals that the session failed to start or terminated unsuccessfully.
+     *
+     * <p>Important: together with the error, file sharing stream might be closed, and therefore
+     * reading from {@code fd} from {@link #onStart} will result in the end of stream. The order of
+     * these 2 events is not defined, and it's important that the service treats end of stream
+     * correctly in this situation.
      **/
     void onError(int errorCode);
 }
diff --git a/core/java/android/service/contentcapture/IDataShareCallback.aidl b/core/java/android/service/contentcapture/IDataShareCallback.aidl
index d972ada..84d3725 100644
--- a/core/java/android/service/contentcapture/IDataShareCallback.aidl
+++ b/core/java/android/service/contentcapture/IDataShareCallback.aidl
@@ -21,6 +21,6 @@
 
 /** @hide */
 oneway interface IDataShareCallback {
-    void accept(in ICancellationSignal cancellationSignal, in IDataShareReadAdapter adapter);
+    void accept(in IDataShareReadAdapter adapter);
     void reject();
 }
diff --git a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
index 73da5d5..91c8ff1 100644
--- a/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
+++ b/core/java/android/service/contentcapture/IDataShareReadAdapter.aidl
@@ -20,6 +20,6 @@
 
 /** @hide */
 oneway interface IDataShareReadAdapter {
-    void start(in ParcelFileDescriptor fd, in ICancellationSignal cancellationSignal);
+    void start(in ParcelFileDescriptor fd);
     void error(int errorCode);
 }
diff --git a/core/java/android/service/controls/ControlsProviderService.java b/core/java/android/service/controls/ControlsProviderService.java
index bc65818..de4c056 100644
--- a/core/java/android/service/controls/ControlsProviderService.java
+++ b/core/java/android/service/controls/ControlsProviderService.java
@@ -35,6 +35,7 @@
 import com.android.internal.util.Preconditions;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Flow.Publisher;
 import java.util.concurrent.Flow.Subscriber;
@@ -73,6 +74,18 @@
     public abstract void loadAvailableControls(@NonNull Consumer<List<Control>> consumer);
 
     /**
+     * (Optional) The service may be asked to provide a small number of recommended controls, in
+     * order to suggest some controls to the user for favoriting. The controls shall be built using
+     * the stateless builder {@link Control.StatelessBuilder}, followed by an invocation to the
+     * provided consumer to callback to the call originator. If the number of controls
+     * is greater than maxNumber, the list will be truncated.
+     */
+    public void loadSuggestedControls(int maxNumber, @NonNull Consumer<List<Control>> consumer) {
+        // Override to change the default behavior
+        consumer.accept(Collections.emptyList());
+    }
+
+    /**
      * Return a valid Publisher for the given controlIds. This publisher will be asked
      * to provide updates for the given list of controlIds as long as the Subscription
      * is valid.
@@ -104,6 +117,11 @@
                 mHandler.obtainMessage(RequestHandler.MSG_LOAD, cb).sendToTarget();
             }
 
+            public void loadSuggested(int maxNumber, IControlsLoadCallback cb) {
+                LoadMessage msg = new LoadMessage(maxNumber, cb);
+                mHandler.obtainMessage(RequestHandler.MSG_LOAD_SUGGESTED, msg).sendToTarget();
+            }
+
             public void subscribe(List<String> controlIds,
                     IControlsSubscriber subscriber) {
                 SubscribeMessage msg = new SubscribeMessage(controlIds, subscriber);
@@ -128,6 +146,14 @@
         private static final int MSG_LOAD = 1;
         private static final int MSG_SUBSCRIBE = 2;
         private static final int MSG_ACTION = 3;
+        private static final int MSG_LOAD_SUGGESTED = 4;
+
+        /**
+         * This the maximum number of controls that can be loaded via
+         * {@link ControlsProviderService#loadAvailablecontrols}. Anything over this number
+         * will be truncated.
+         */
+        private static final int MAX_NUMBER_OF_CONTROLS_ALLOWED = 1000;
 
         RequestHandler(Looper looper) {
             super(looper);
@@ -137,7 +163,14 @@
             switch(msg.what) {
                 case MSG_LOAD:
                     final IControlsLoadCallback cb = (IControlsLoadCallback) msg.obj;
-                    ControlsProviderService.this.loadAvailableControls(consumerFor(cb));
+                    ControlsProviderService.this.loadAvailableControls(consumerFor(
+                            MAX_NUMBER_OF_CONTROLS_ALLOWED, cb));
+                    break;
+
+                case MSG_LOAD_SUGGESTED:
+                    final LoadMessage lMsg = (LoadMessage) msg.obj;
+                    ControlsProviderService.this.loadSuggestedControls(lMsg.mMaxNumber,
+                            consumerFor(lMsg.mMaxNumber, lMsg.mCb));
                     break;
 
                 case MSG_SUBSCRIBE:
@@ -201,9 +234,15 @@
             };
         }
 
-        private Consumer<List<Control>> consumerFor(IControlsLoadCallback cb) {
+        private Consumer<List<Control>> consumerFor(int maxNumber, IControlsLoadCallback cb) {
             return (@NonNull List<Control> controls) -> {
                 Preconditions.checkNotNull(controls);
+                if (controls.size() > maxNumber) {
+                    Log.w(TAG, "Too many controls. Provided: " + controls.size() + ", Max allowed: "
+                            + maxNumber + ". Truncating the list.");
+                    controls = controls.subList(0, maxNumber);
+                }
+
                 List<Control> list = new ArrayList<>();
                 for (Control control: controls) {
                     if (control == null) {
@@ -268,4 +307,14 @@
             this.mSubscriber = subscriber;
         }
     }
+
+    private static class LoadMessage {
+        final int mMaxNumber;
+        final IControlsLoadCallback mCb;
+
+        LoadMessage(int maxNumber, IControlsLoadCallback cb) {
+            this.mMaxNumber = maxNumber;
+            this.mCb = cb;
+        }
+    }
 }
diff --git a/core/java/android/service/controls/IControlsProvider.aidl b/core/java/android/service/controls/IControlsProvider.aidl
index 4ce658e..4375fbb 100644
--- a/core/java/android/service/controls/IControlsProvider.aidl
+++ b/core/java/android/service/controls/IControlsProvider.aidl
@@ -27,6 +27,8 @@
 oneway interface IControlsProvider {
     void load(IControlsLoadCallback cb);
 
+    void loadSuggested(int maxNumber, IControlsLoadCallback cb);
+
     void subscribe(in List<String> controlIds,
              IControlsSubscriber subscriber);
 
diff --git a/core/java/android/service/dataloader/DataLoaderService.java b/core/java/android/service/dataloader/DataLoaderService.java
index c215778..4190001 100644
--- a/core/java/android/service/dataloader/DataLoaderService.java
+++ b/core/java/android/service/dataloader/DataLoaderService.java
@@ -90,7 +90,7 @@
      * @hide
      */
     @SystemApi
-    public @Nullable DataLoader onCreateDataLoader() {
+    public @Nullable DataLoader onCreateDataLoader(@NonNull DataLoaderParams dataLoaderParams) {
         return null;
     }
 
@@ -240,7 +240,7 @@
     private native boolean nativeDestroyDataLoader(int storageId);
 
     private native boolean nativePrepareImage(int storageId,
-            Collection<InstallationFile> addedFiles, Collection<String> removedFiles);
+            List<InstallationFile> addedFiles, List<String> removedFiles);
 
     private static native void nativeWriteData(long nativeInstance, String name, long offsetBytes,
             long lengthBytes, ParcelFileDescriptor incomingFd);
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/core/java/android/service/notification/ConversationChannelWrapper.aidl
similarity index 76%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to core/java/android/service/notification/ConversationChannelWrapper.aidl
index 81a14a4..f324158 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/core/java/android/service/notification/ConversationChannelWrapper.aidl
@@ -1,5 +1,5 @@
-/**
- * Copyright (c) 2018, The Android Open Source Project
+/*
+ * 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.
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.service.notification;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+parcelable ConversationChannelWrapper;
\ No newline at end of file
diff --git a/core/java/android/service/notification/ConversationChannelWrapper.java b/core/java/android/service/notification/ConversationChannelWrapper.java
new file mode 100644
index 0000000..9847695
--- /dev/null
+++ b/core/java/android/service/notification/ConversationChannelWrapper.java
@@ -0,0 +1,122 @@
+/**
+ * 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 android.service.notification;
+
+import android.app.NotificationChannel;
+import android.content.pm.ShortcutInfo;
+import android.graphics.drawable.Drawable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.util.Objects;
+
+/**
+ * @hide
+ */
+public final class ConversationChannelWrapper implements Parcelable {
+
+    private NotificationChannel mNotificationChannel;
+    private CharSequence mGroupLabel;
+    private CharSequence mParentChannelLabel;
+    private ShortcutInfo mShortcutInfo;
+
+    public ConversationChannelWrapper() {}
+
+    protected ConversationChannelWrapper(Parcel in) {
+        mNotificationChannel = in.readParcelable(NotificationChannel.class.getClassLoader());
+        mGroupLabel = in.readCharSequence();
+        mParentChannelLabel = in.readCharSequence();
+        mShortcutInfo = in.readParcelable(ShortcutInfo.class.getClassLoader());
+    }
+
+    @Override
+    public void writeToParcel(Parcel dest, int flags) {
+        dest.writeParcelable(mNotificationChannel, flags);
+        dest.writeCharSequence(mGroupLabel);
+        dest.writeCharSequence(mParentChannelLabel);
+        dest.writeParcelable(mShortcutInfo, flags);
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    public static final Creator<ConversationChannelWrapper> CREATOR =
+            new Creator<ConversationChannelWrapper>() {
+                @Override
+                public ConversationChannelWrapper createFromParcel(Parcel in) {
+                    return new ConversationChannelWrapper(in);
+                }
+
+                @Override
+                public ConversationChannelWrapper[] newArray(int size) {
+                    return new ConversationChannelWrapper[size];
+                }
+            };
+
+
+    public NotificationChannel getNotificationChannel() {
+        return mNotificationChannel;
+    }
+
+    public void setNotificationChannel(
+            NotificationChannel notificationChannel) {
+        mNotificationChannel = notificationChannel;
+    }
+
+    public CharSequence getGroupLabel() {
+        return mGroupLabel;
+    }
+
+    public void setGroupLabel(CharSequence groupLabel) {
+        mGroupLabel = groupLabel;
+    }
+
+    public CharSequence getParentChannelLabel() {
+        return mParentChannelLabel;
+    }
+
+    public void setParentChannelLabel(CharSequence parentChannelLabel) {
+        mParentChannelLabel = parentChannelLabel;
+    }
+
+    public ShortcutInfo getShortcutInfo() {
+        return mShortcutInfo;
+    }
+
+    public void setShortcutInfo(ShortcutInfo shortcutInfo) {
+        mShortcutInfo = shortcutInfo;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        ConversationChannelWrapper that = (ConversationChannelWrapper) o;
+        return Objects.equals(getNotificationChannel(), that.getNotificationChannel()) &&
+                Objects.equals(getGroupLabel(), that.getGroupLabel()) &&
+                Objects.equals(getParentChannelLabel(), that.getParentChannelLabel()) &&
+                Objects.equals(getShortcutInfo(), that.getShortcutInfo());
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(getNotificationChannel(), getGroupLabel(), getParentChannelLabel(),
+                getShortcutInfo());
+    }
+}
diff --git a/core/java/android/service/notification/NotificationListenerService.java b/core/java/android/service/notification/NotificationListenerService.java
index e053ed5..0ff2e03 100644
--- a/core/java/android/service/notification/NotificationListenerService.java
+++ b/core/java/android/service/notification/NotificationListenerService.java
@@ -214,6 +214,32 @@
     public static final int REASON_TIMEOUT = 19;
 
     /**
+     * @hide
+     */
+    @IntDef(prefix = "REASON_", value = {
+            REASON_CLICK,
+            REASON_CANCEL,
+            REASON_CANCEL_ALL,
+            REASON_ERROR,
+            REASON_PACKAGE_CHANGED,
+            REASON_USER_STOPPED,
+            REASON_PACKAGE_BANNED,
+            REASON_APP_CANCEL,
+            REASON_APP_CANCEL_ALL,
+            REASON_LISTENER_CANCEL,
+            REASON_LISTENER_CANCEL_ALL,
+            REASON_GROUP_SUMMARY_CANCELED,
+            REASON_GROUP_OPTIMIZATION,
+            REASON_PACKAGE_SUSPENDED,
+            REASON_PROFILE_TURNED_OFF,
+            REASON_UNAUTOBUNDLED,
+            REASON_CHANNEL_BANNED,
+            REASON_SNOOZED,
+            REASON_TIMEOUT
+    })
+    public @interface NotificationCancelReason{};
+
+    /**
      * The full trim of the StatusBarNotification including all its features.
      *
      * @hide
diff --git a/core/java/android/service/notification/StatusBarNotification.java b/core/java/android/service/notification/StatusBarNotification.java
index c5d97b7..74b9136 100644
--- a/core/java/android/service/notification/StatusBarNotification.java
+++ b/core/java/android/service/notification/StatusBarNotification.java
@@ -35,6 +35,7 @@
 import android.os.UserHandle;
 import android.text.TextUtils;
 
+import com.android.internal.logging.InstanceId;
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 
@@ -68,6 +69,8 @@
     private final UserHandle user;
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
     private final long postTime;
+    // A small per-notification ID, used for statsd logging.
+    private InstanceId mInstanceId;  // Not final, see setInstanceId()
 
     private Context mContext; // used for inflation & icon expansion
 
@@ -131,8 +134,9 @@
         this.postTime = in.readLong();
         if (in.readInt() != 0) {
             this.overrideGroupKey = in.readString();
-        } else {
-            this.overrideGroupKey = null;
+        }
+        if (in.readInt() != 0) {
+            this.mInstanceId = InstanceId.CREATOR.createFromParcel(in);
         }
         this.key = key();
         this.groupKey = groupKey();
@@ -196,7 +200,6 @@
         out.writeInt(this.initialPid);
         this.notification.writeToParcel(out, flags);
         user.writeToParcel(out, flags);
-
         out.writeLong(this.postTime);
         if (this.overrideGroupKey != null) {
             out.writeInt(1);
@@ -204,6 +207,12 @@
         } else {
             out.writeInt(0);
         }
+        if (this.mInstanceId != null) {
+            out.writeInt(1);
+            mInstanceId.writeToParcel(out, flags);
+        } else {
+            out.writeInt(0);
+        }
     }
 
     public int describeContents() {
@@ -390,6 +399,20 @@
     /**
      * @hide
      */
+    public InstanceId getInstanceId() {
+        return mInstanceId;
+    }
+
+    /**
+     * @hide
+     */
+    public void setInstanceId(InstanceId instanceId) {
+        mInstanceId = instanceId;
+    }
+
+    /**
+     * @hide
+     */
     @UnsupportedAppUsage
     public Context getPackageContext(Context context) {
         if (mContext == null) {
diff --git a/core/java/android/service/notification/ZenModeConfig.java b/core/java/android/service/notification/ZenModeConfig.java
index 3f9462c..af91596 100644
--- a/core/java/android/service/notification/ZenModeConfig.java
+++ b/core/java/android/service/notification/ZenModeConfig.java
@@ -16,6 +16,9 @@
 
 package android.service.notification;
 
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_ANYONE;
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT;
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_NONE;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_LIGHTS;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
@@ -99,6 +102,8 @@
     private static final boolean DEFAULT_ALLOW_REMINDERS = false;
     private static final boolean DEFAULT_ALLOW_EVENTS = false;
     private static final boolean DEFAULT_ALLOW_REPEAT_CALLERS = true;
+    private static final boolean DEFAULT_ALLOW_CONV = true;
+    private static final int DEFAULT_ALLOW_CONV_FROM = ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
     private static final boolean DEFAULT_CHANNELS_BYPASSING_DND = false;
     private static final int DEFAULT_SUPPRESSED_VISUAL_EFFECTS = 0;
 
@@ -120,6 +125,8 @@
     private static final String ALLOW_ATT_EVENTS = "events";
     private static final String ALLOW_ATT_SCREEN_OFF = "visualScreenOff";
     private static final String ALLOW_ATT_SCREEN_ON = "visualScreenOn";
+    private static final String ALLOW_ATT_CONV = "conv";
+    private static final String ALLOW_ATT_CONV_FROM = "convFrom";
     private static final String DISALLOW_TAG = "disallow";
     private static final String DISALLOW_ATT_VISUAL_EFFECTS = "visualEffects";
     private static final String STATE_TAG = "state";
@@ -170,6 +177,8 @@
     public boolean allowEvents = DEFAULT_ALLOW_EVENTS;
     public int allowCallsFrom = DEFAULT_CALLS_SOURCE;
     public int allowMessagesFrom = DEFAULT_SOURCE;
+    public boolean allowConversations = DEFAULT_ALLOW_CONV;
+    public int allowConversationsFrom = DEFAULT_ALLOW_CONV_FROM;
     public int user = UserHandle.USER_SYSTEM;
     public int suppressedVisualEffects = DEFAULT_SUPPRESSED_VISUAL_EFFECTS;
     public boolean areChannelsBypassingDnd = DEFAULT_CHANNELS_BYPASSING_DND;
@@ -207,6 +216,8 @@
         allowSystem = source.readInt() == 1;
         suppressedVisualEffects = source.readInt();
         areChannelsBypassingDnd = source.readInt() == 1;
+        allowConversations = source.readBoolean();
+        allowConversationsFrom = source.readInt();
     }
 
     @Override
@@ -239,6 +250,8 @@
         dest.writeInt(allowSystem ? 1 : 0);
         dest.writeInt(suppressedVisualEffects);
         dest.writeInt(areChannelsBypassingDnd ? 1 : 0);
+        dest.writeBoolean(allowConversations);
+        dest.writeInt(allowConversationsFrom);
     }
 
     @Override
@@ -253,8 +266,11 @@
                 .append(",allowCalls=").append(allowCalls)
                 .append(",allowRepeatCallers=").append(allowRepeatCallers)
                 .append(",allowMessages=").append(allowMessages)
+                .append(",allowConversations=").append(allowConversations)
                 .append(",allowCallsFrom=").append(sourceToString(allowCallsFrom))
                 .append(",allowMessagesFrom=").append(sourceToString(allowMessagesFrom))
+                .append(",allowConvFrom=").append(ZenPolicy.conversationTypeToString
+                        (allowConversationsFrom))
                 .append(",suppressedVisualEffects=").append(suppressedVisualEffects)
                 .append(",areChannelsBypassingDnd=").append(areChannelsBypassingDnd)
                 .append(",\nautomaticRules=").append(rulesToString())
@@ -431,7 +447,9 @@
                 && Objects.equals(other.automaticRules, automaticRules)
                 && Objects.equals(other.manualRule, manualRule)
                 && other.suppressedVisualEffects == suppressedVisualEffects
-                && other.areChannelsBypassingDnd == areChannelsBypassingDnd;
+                && other.areChannelsBypassingDnd == areChannelsBypassingDnd
+                && other.allowConversations == allowConversations
+                && other.allowConversationsFrom == allowConversationsFrom;
     }
 
     @Override
@@ -440,7 +458,8 @@
                 allowRepeatCallers, allowMessages,
                 allowCallsFrom, allowMessagesFrom, allowReminders, allowEvents,
                 user, automaticRules, manualRule,
-                suppressedVisualEffects, areChannelsBypassingDnd);
+                suppressedVisualEffects, areChannelsBypassingDnd, allowConversations,
+                allowConversationsFrom);
     }
 
     private static String toDayList(int[] days) {
@@ -518,10 +537,13 @@
                             DEFAULT_ALLOW_MESSAGES);
                     rt.allowReminders = safeBoolean(parser, ALLOW_ATT_REMINDERS,
                             DEFAULT_ALLOW_REMINDERS);
+                    rt.allowConversations = safeBoolean(parser, ALLOW_ATT_CONV, DEFAULT_ALLOW_CONV);
                     rt.allowEvents = safeBoolean(parser, ALLOW_ATT_EVENTS, DEFAULT_ALLOW_EVENTS);
                     final int from = safeInt(parser, ALLOW_ATT_FROM, -1);
                     final int callsFrom = safeInt(parser, ALLOW_ATT_CALLS_FROM, -1);
                     final int messagesFrom = safeInt(parser, ALLOW_ATT_MESSAGES_FROM, -1);
+                    rt.allowConversationsFrom = safeInt(parser, ALLOW_ATT_CONV_FROM,
+                            DEFAULT_ALLOW_CONV_FROM);
                     if (isValidSource(callsFrom) && isValidSource(messagesFrom)) {
                         rt.allowCallsFrom = callsFrom;
                         rt.allowMessagesFrom = messagesFrom;
@@ -602,6 +624,8 @@
         out.attribute(null, ALLOW_ATT_ALARMS, Boolean.toString(allowAlarms));
         out.attribute(null, ALLOW_ATT_MEDIA, Boolean.toString(allowMedia));
         out.attribute(null, ALLOW_ATT_SYSTEM, Boolean.toString(allowSystem));
+        out.attribute(null, ALLOW_ATT_CONV, Boolean.toString(allowConversations));
+        out.attribute(null, ALLOW_ATT_CONV_FROM, Integer.toString(allowConversationsFrom));
         out.endTag(null, ALLOW_TAG);
 
         out.startTag(null, DISALLOW_TAG);
@@ -944,6 +968,7 @@
         int suppressedVisualEffects = 0;
         int callSenders = defaultPolicy.priorityCallSenders;
         int messageSenders = defaultPolicy.priorityMessageSenders;
+        int conversationSenders = defaultPolicy.priorityConversationSenders;
 
         if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_REMINDERS,
                 isPriorityCategoryEnabled(Policy.PRIORITY_CATEGORY_REMINDERS, defaultPolicy))) {
@@ -962,6 +987,14 @@
                     messageSenders);
         }
 
+        if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CONVERSATIONS,
+                isPriorityCategoryEnabled(Policy.PRIORITY_CATEGORY_CONVERSATIONS, defaultPolicy))) {
+            priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS;
+            conversationSenders = getNotificationPolicySenders(
+                    zenPolicy.getPriorityConversationSenders(),
+                    conversationSenders);
+        }
+
         if (zenPolicy.isCategoryAllowed(ZenPolicy.PRIORITY_CATEGORY_CALLS,
                 isPriorityCategoryEnabled(Policy.PRIORITY_CATEGORY_CALLS, defaultPolicy))) {
             priorityCategories |= Policy.PRIORITY_CATEGORY_CALLS;
@@ -1047,7 +1080,7 @@
         }
 
         return new NotificationManager.Policy(priorityCategories, callSenders,
-                messageSenders, suppressedVisualEffects, defaultPolicy.state);
+                messageSenders, suppressedVisualEffects, defaultPolicy.state, conversationSenders);
     }
 
     private boolean isPriorityCategoryEnabled(int categoryType, Policy policy) {
@@ -1088,11 +1121,14 @@
         }
     }
 
-
     public Policy toNotificationPolicy() {
         int priorityCategories = 0;
         int priorityCallSenders = Policy.PRIORITY_SENDERS_CONTACTS;
         int priorityMessageSenders = Policy.PRIORITY_SENDERS_CONTACTS;
+        int priorityConversationSenders = Policy.CONVERSATION_SENDERS_IMPORTANT;
+        if (allowConversations) {
+            priorityCategories |= Policy.PRIORITY_CATEGORY_CONVERSATIONS;
+        }
         if (allowCalls) {
             priorityCategories |= Policy.PRIORITY_CATEGORY_CALLS;
         }
@@ -1119,10 +1155,12 @@
         }
         priorityCallSenders = sourceToPrioritySenders(allowCallsFrom, priorityCallSenders);
         priorityMessageSenders = sourceToPrioritySenders(allowMessagesFrom, priorityMessageSenders);
+        priorityConversationSenders = allowConversationsFrom;
 
         return new Policy(priorityCategories, priorityCallSenders, priorityMessageSenders,
                 suppressedVisualEffects, areChannelsBypassingDnd
-                ? Policy.STATE_CHANNELS_BYPASSING_DND : 0);
+                ? Policy.STATE_CHANNELS_BYPASSING_DND : 0,
+                priorityConversationSenders);
     }
 
     /**
@@ -1157,6 +1195,27 @@
         }
     }
 
+    private static int normalizePrioritySenders(int prioritySenders, int def) {
+        if (!(prioritySenders == Policy.PRIORITY_SENDERS_CONTACTS
+                || prioritySenders == Policy.PRIORITY_SENDERS_STARRED
+                || prioritySenders == Policy.PRIORITY_SENDERS_ANY)) {
+            return def;
+        }
+        return prioritySenders;
+    }
+
+    private static int normalizeConversationSenders(boolean allowed, int senders, int def) {
+        if (!allowed) {
+            return CONVERSATION_SENDERS_NONE;
+        }
+        if (!(senders == CONVERSATION_SENDERS_ANYONE
+                || senders == CONVERSATION_SENDERS_IMPORTANT
+                || senders == CONVERSATION_SENDERS_NONE)) {
+            return def;
+        }
+        return senders;
+    }
+
     public void applyNotificationPolicy(Policy policy) {
         if (policy == null) return;
         allowAlarms = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_ALARMS) != 0;
@@ -1168,12 +1227,17 @@
         allowMessages = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_MESSAGES) != 0;
         allowRepeatCallers = (policy.priorityCategories & Policy.PRIORITY_CATEGORY_REPEAT_CALLERS)
                 != 0;
-        allowCallsFrom = prioritySendersToSource(policy.priorityCallSenders, allowCallsFrom);
-        allowMessagesFrom = prioritySendersToSource(policy.priorityMessageSenders,
+        allowCallsFrom = normalizePrioritySenders(policy.priorityCallSenders, allowCallsFrom);
+        allowMessagesFrom = normalizePrioritySenders(policy.priorityMessageSenders,
                 allowMessagesFrom);
         if (policy.suppressedVisualEffects != Policy.SUPPRESSED_EFFECTS_UNSET) {
             suppressedVisualEffects = policy.suppressedVisualEffects;
         }
+        allowConversations = (policy.priorityCategories
+                & Policy.PRIORITY_CATEGORY_CONVERSATIONS) != 0;
+        allowConversationsFrom = normalizeConversationSenders(allowConversations,
+                policy.priorityConversationSenders,
+                allowConversationsFrom);
         if (policy.state != Policy.STATE_UNSET) {
             areChannelsBypassingDnd = (policy.state & Policy.STATE_CHANNELS_BYPASSING_DND) != 0;
         }
@@ -1919,10 +1983,13 @@
                 & NotificationManager.Policy.PRIORITY_CATEGORY_EVENTS) != 0;
         boolean allowRepeatCallers = (policy.priorityCategories
                 & NotificationManager.Policy.PRIORITY_CATEGORY_REPEAT_CALLERS) != 0;
+        boolean allowConversations = (policy.priorityConversationSenders
+                & Policy.PRIORITY_CATEGORY_CONVERSATIONS) != 0;
         boolean areChannelsBypassingDnd = (policy.state & Policy.STATE_CHANNELS_BYPASSING_DND) != 0;
         boolean allowSystem =  (policy.priorityCategories & Policy.PRIORITY_CATEGORY_SYSTEM) != 0;
         return !allowReminders && !allowCalls && !allowMessages && !allowEvents
-                && !allowRepeatCallers && !areChannelsBypassingDnd && !allowSystem;
+                && !allowRepeatCallers && !areChannelsBypassingDnd && !allowSystem
+                && !allowConversations;
     }
 
     /**
diff --git a/core/java/android/service/notification/ZenPolicy.java b/core/java/android/service/notification/ZenPolicy.java
index 6e2faa9..87295e1 100644
--- a/core/java/android/service/notification/ZenPolicy.java
+++ b/core/java/android/service/notification/ZenPolicy.java
@@ -41,6 +41,7 @@
     private ArrayList<Integer> mVisualEffects;
     private @PeopleType int mPriorityMessages = PEOPLE_TYPE_UNSET;
     private @PeopleType int mPriorityCalls = PEOPLE_TYPE_UNSET;
+    private @ConversationSenders int mConversationSenders = CONVERSATION_SENDERS_UNSET;
 
     /** @hide */
     @IntDef(prefix = { "PRIORITY_CATEGORY_" }, value = {
@@ -52,6 +53,7 @@
             PRIORITY_CATEGORY_ALARMS,
             PRIORITY_CATEGORY_MEDIA,
             PRIORITY_CATEGORY_SYSTEM,
+            PRIORITY_CATEGORY_CONVERSATIONS,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface PriorityCategory {}
@@ -72,6 +74,8 @@
     public static final int PRIORITY_CATEGORY_MEDIA = 6;
     /** @hide */
     public static final int PRIORITY_CATEGORY_SYSTEM = 7;
+    /** @hide */
+    public static final int PRIORITY_CATEGORY_CONVERSATIONS = 8;
 
     /** @hide */
     @IntDef(prefix = { "VISUAL_EFFECT_" }, value = {
@@ -138,6 +142,37 @@
      */
     public static final int PEOPLE_TYPE_NONE = 4;
 
+
+    /** @hide */
+    @IntDef(prefix = { "CONVERSATION_SENDERS_" }, value = {
+            CONVERSATION_SENDERS_UNSET,
+            CONVERSATION_SENDERS_ANYONE,
+            CONVERSATION_SENDERS_IMPORTANT,
+            CONVERSATION_SENDERS_NONE,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ConversationSenders {}
+
+    /**
+     * Used to indicate no preference for the type of conversations that can bypass dnd.
+     */
+    public static final int CONVERSATION_SENDERS_UNSET = 0;
+
+    /**
+     * Used to indicate all conversations can bypass dnd.
+     */
+    public static final int CONVERSATION_SENDERS_ANYONE = 1;
+
+    /**
+     * Used to indicate important conversations can bypass dnd.
+     */
+    public static final int CONVERSATION_SENDERS_IMPORTANT = 2;
+
+    /**
+     * Used to indicate no conversations can bypass dnd.
+     */
+    public static final int CONVERSATION_SENDERS_NONE = 3;
+
     /** @hide */
     @IntDef(prefix = { "STATE_" }, value = {
             STATE_UNSET,
@@ -165,11 +200,20 @@
 
     /** @hide */
     public ZenPolicy() {
-        mPriorityCategories = new ArrayList<>(Collections.nCopies(8, 0));
+        mPriorityCategories = new ArrayList<>(Collections.nCopies(9, 0));
         mVisualEffects = new ArrayList<>(Collections.nCopies(7, 0));
     }
 
     /**
+     * Conversation type that can bypass DND.
+     * @return {@link #CONVERSATION_SENDERS_UNSET}, {@link #CONVERSATION_SENDERS_ANYONE},
+     * {@link #CONVERSATION_SENDERS_IMPORTANT}, {@link #CONVERSATION_SENDERS_NONE}.
+     */
+    public @PeopleType int getPriorityConversationSenders() {
+        return mConversationSenders;
+    }
+
+    /**
      * Message senders that can bypass DND.
      * @return {@link #PEOPLE_TYPE_UNSET}, {@link #PEOPLE_TYPE_ANYONE},
      * {@link #PEOPLE_TYPE_CONTACTS}, {@link #PEOPLE_TYPE_STARRED} or {@link #PEOPLE_TYPE_NONE}
@@ -188,6 +232,16 @@
     }
 
     /**
+     * Whether this policy wants to allow conversation notifications
+     * (see {@link NotificationChannel#getConversationId()}) to play sounds and visually appear
+     * or to intercept them when DND is active.
+     * @return {@link #STATE_UNSET}, {@link #STATE_ALLOW} or {@link #STATE_DISALLOW}
+     */
+    public @State int getPriorityCategoryConversations() {
+        return mPriorityCategories.get(PRIORITY_CATEGORY_CONVERSATIONS);
+    }
+
+    /**
      * Whether this policy wants to allow notifications with category
      * {@link Notification#CATEGORY_REMINDER} to play sounds and visually appear
      * or to intercept them when DND is active.
@@ -392,6 +446,7 @@
             }
             mZenPolicy.mPriorityMessages = PEOPLE_TYPE_ANYONE;
             mZenPolicy.mPriorityCalls = PEOPLE_TYPE_ANYONE;
+            mZenPolicy.mConversationSenders = CONVERSATION_SENDERS_ANYONE;
             return this;
         }
 
@@ -408,6 +463,7 @@
             }
             mZenPolicy.mPriorityMessages = PEOPLE_TYPE_NONE;
             mZenPolicy.mPriorityCalls = PEOPLE_TYPE_NONE;
+            mZenPolicy.mConversationSenders = CONVERSATION_SENDERS_NONE;
             return this;
         }
 
@@ -443,6 +499,8 @@
                 mZenPolicy.mPriorityMessages = STATE_UNSET;
             } else if (category == PRIORITY_CATEGORY_CALLS) {
                 mZenPolicy.mPriorityCalls = STATE_UNSET;
+            } else if (category == PRIORITY_CATEGORY_CONVERSATIONS) {
+                mZenPolicy.mConversationSenders = STATE_UNSET;
             }
 
             return this;
@@ -479,6 +537,31 @@
         }
 
         /**
+         * Whether to allow conversation notifications
+         * (see {@link NotificationChannel#setConversationId(String, String)})
+         * that match audienceType to play sounds and visually appear or to intercept
+         * them when DND is active.
+         * @param audienceType callers that are allowed to bypass DND
+         */
+        public @NonNull  Builder allowConversations(@ConversationSenders int audienceType) {
+            if (audienceType == STATE_UNSET) {
+                return unsetPriorityCategory(PRIORITY_CATEGORY_CONVERSATIONS);
+            }
+
+            if (audienceType == CONVERSATION_SENDERS_NONE) {
+                mZenPolicy.mPriorityCategories.set(PRIORITY_CATEGORY_CONVERSATIONS, STATE_DISALLOW);
+            } else if (audienceType == CONVERSATION_SENDERS_ANYONE
+                    || audienceType == CONVERSATION_SENDERS_IMPORTANT) {
+                mZenPolicy.mPriorityCategories.set(PRIORITY_CATEGORY_CONVERSATIONS, STATE_ALLOW);
+            } else {
+                return this;
+            }
+
+            mZenPolicy.mConversationSenders = audienceType;
+            return this;
+        }
+
+        /**
          * Whether to allow notifications with category {@link Notification#CATEGORY_MESSAGE}
          * that match audienceType to play sounds and visually appear or to intercept
          * them when DND is active.
@@ -537,7 +620,6 @@
             return this;
         }
 
-
         /**
          * Whether to allow notifications with category {@link Notification#CATEGORY_ALARM}
          * to play sounds and visually appear or to intercept them when DND is active.
@@ -712,6 +794,7 @@
         dest.writeList(mVisualEffects);
         dest.writeInt(mPriorityCalls);
         dest.writeInt(mPriorityMessages);
+        dest.writeInt(mConversationSenders);
     }
 
     public static final @android.annotation.NonNull Parcelable.Creator<ZenPolicy> CREATOR =
@@ -723,6 +806,7 @@
             policy.mVisualEffects = source.readArrayList(Integer.class.getClassLoader());
             policy.mPriorityCalls = source.readInt();
             policy.mPriorityMessages = source.readInt();
+            policy.mConversationSenders = source.readInt();
             return policy;
         }
 
@@ -738,8 +822,10 @@
                 .append('{')
                 .append("priorityCategories=[").append(priorityCategoriesToString())
                 .append("], visualEffects=[").append(visualEffectsToString())
-                .append("], priorityCalls=").append(peopleTypeToString(mPriorityCalls))
-                .append(", priorityMessages=").append(peopleTypeToString(mPriorityMessages))
+                .append("], priorityCallsSenders=").append(peopleTypeToString(mPriorityCalls))
+                .append(", priorityMessagesSenders=").append(peopleTypeToString(mPriorityMessages))
+                .append(", priorityConversationSenders=").append(
+                        conversationTypeToString(mConversationSenders))
                 .append('}')
                 .toString();
     }
@@ -811,6 +897,8 @@
                 return "media";
             case PRIORITY_CATEGORY_SYSTEM:
                 return "system";
+            case PRIORITY_CATEGORY_CONVERSATIONS:
+                return "convs";
         }
         return null;
     }
@@ -843,6 +931,23 @@
         return "invalidPeopleType{" + peopleType + "}";
     }
 
+    /**
+     * @hide
+     */
+    public static String conversationTypeToString(@ConversationSenders int conversationType) {
+        switch (conversationType) {
+            case CONVERSATION_SENDERS_ANYONE:
+                return "anyone";
+            case CONVERSATION_SENDERS_IMPORTANT:
+                return "important";
+            case CONVERSATION_SENDERS_NONE:
+                return "none";
+            case CONVERSATION_SENDERS_UNSET:
+                return "unset";
+        }
+        return "invalidConversationType{" + conversationType + "}";
+    }
+
     @Override
     public boolean equals(Object o) {
         if (!(o instanceof ZenPolicy)) return false;
@@ -852,12 +957,14 @@
         return Objects.equals(other.mPriorityCategories, mPriorityCategories)
                 && Objects.equals(other.mVisualEffects, mVisualEffects)
                 && other.mPriorityCalls == mPriorityCalls
-                && other.mPriorityMessages == mPriorityMessages;
+                && other.mPriorityMessages == mPriorityMessages
+                && other.mConversationSenders == mConversationSenders;
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mPriorityCategories, mVisualEffects, mPriorityCalls, mPriorityMessages);
+        return Objects.hash(mPriorityCategories, mVisualEffects, mPriorityCalls, mPriorityMessages,
+                mConversationSenders);
     }
 
     private @ZenPolicy.State int getZenPolicyPriorityCategoryState(@PriorityCategory int
@@ -879,6 +986,8 @@
                 return getPriorityCategoryMedia();
             case PRIORITY_CATEGORY_SYSTEM:
                 return getPriorityCategorySystem();
+            case PRIORITY_CATEGORY_CONVERSATIONS:
+                return getPriorityCategoryConversations();
         }
         return -1;
     }
@@ -953,6 +1062,9 @@
                 } else if (category == PRIORITY_CATEGORY_CALLS
                         && mPriorityCalls < policyToApply.mPriorityCalls) {
                     mPriorityCalls = policyToApply.mPriorityCalls;
+                } else if (category == PRIORITY_CATEGORY_CONVERSATIONS
+                        && mConversationSenders < policyToApply.mConversationSenders) {
+                    mConversationSenders = policyToApply.mConversationSenders;
                 }
             }
         }
diff --git a/core/java/android/service/quickaccesswallet/TEST_MAPPING b/core/java/android/service/quickaccesswallet/TEST_MAPPING
new file mode 100644
index 0000000..4d97ab6
--- /dev/null
+++ b/core/java/android/service/quickaccesswallet/TEST_MAPPING
@@ -0,0 +1,7 @@
+{
+  "presubmit": [
+    {
+      "name": "CtsQuickAccessWalletTestCases"
+    }
+  ]
+}
diff --git a/core/java/android/service/quicksettings/TileService.java b/core/java/android/service/quicksettings/TileService.java
index d0675ed..b4b5819 100644
--- a/core/java/android/service/quicksettings/TileService.java
+++ b/core/java/android/service/quicksettings/TileService.java
@@ -126,22 +126,22 @@
             = "android.service.quicksettings.ACTIVE_TILE";
 
     /**
-     * Meta-data for a tile to support {@code BooleanState}.
+     * Meta-data for a tile to mark is toggleable.
      * <p>
-     * BooleanState is for tiles that should support switch tile behavior in accessibility. This is
+     * Toggleable tiles support switch tile behavior in accessibility. This is
      * the behavior of most of the framework tiles.
      *
-     * To make a TileService support BooleanState, set this meta-data to true on the TileService's
-     * manifest declaration.
+     * To indicate that a TileService is toggleable, set this meta-data to true on the
+     * TileService's manifest declaration.
      * <pre class="prettyprint">
      * {@literal
-     * <meta-data android:name="android.service.quicksettings.BOOLEAN_TILE"
+     * <meta-data android:name="android.service.quicksettings.TOGGLEABLE_TILE"
      *      android:value="true" />
      * }
      * </pre>
      */
-    public static final String META_DATA_BOOLEAN_TILE =
-            "android.service.quicksettings.BOOLEAN_TILE";
+    public static final String META_DATA_TOGGLEABLE_TILE =
+            "android.service.quicksettings.TOGGLEABLE_TILE";
 
     /**
      * Used to notify SysUI that Listening has be requested.
diff --git a/core/java/android/service/textclassifier/TextClassifierService.java b/core/java/android/service/textclassifier/TextClassifierService.java
index 8dca69f..3ff6f54 100644
--- a/core/java/android/service/textclassifier/TextClassifierService.java
+++ b/core/java/android/service/textclassifier/TextClassifierService.java
@@ -27,7 +27,6 @@
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.pm.ServiceInfo;
 import android.os.Bundle;
@@ -394,21 +393,39 @@
      */
     @Deprecated
     public final TextClassifier getLocalTextClassifier() {
-        // Deprecated: In the future, we may not guarantee that this runs in the service's process.
-        return getDefaultTextClassifierImplementation(this);
+        return TextClassifier.NO_OP;
     }
 
     /**
      * Returns the platform's default TextClassifier implementation.
+     *
+     * @throws RuntimeException if the TextClassifier from
+     *                          PackageManager#getDefaultTextClassifierPackageName() calls
+     *                          this method.
      */
     @NonNull
     public static TextClassifier getDefaultTextClassifierImplementation(@NonNull Context context) {
         final TextClassificationManager tcm =
                 context.getSystemService(TextClassificationManager.class);
-        if (tcm != null) {
+        if (tcm == null) {
+            return TextClassifier.NO_OP;
+        }
+        TextClassificationConstants settings = new TextClassificationConstants();
+        if (settings.getUseDefaultTextClassifierAsDefaultImplementation()) {
+            final String defaultTextClassifierPackageName =
+                    context.getPackageManager().getDefaultTextClassifierPackageName();
+            if (TextUtils.isEmpty(defaultTextClassifierPackageName)) {
+                return TextClassifier.NO_OP;
+            }
+            if (defaultTextClassifierPackageName.equals(context.getPackageName())) {
+                throw new RuntimeException(
+                        "The default text classifier itself should not call the"
+                                + "getDefaultTextClassifierImplementation() method.");
+            }
+            return tcm.getTextClassifier(TextClassifier.DEFAULT_SERVICE);
+        } else {
             return tcm.getTextClassifier(TextClassifier.LOCAL);
         }
-        return TextClassifier.NO_OP;
     }
 
     /** @hide **/
@@ -434,46 +451,20 @@
     }
 
     /**
-     * Returns the component name of the system default textclassifier service if it can be found
-     * on the system. Otherwise, returns null.
+     * Returns the component name of the textclassifier service from the given package.
+     * Otherwise, returns null.
      *
-     * @param context the text classification context
+     * @param context
+     * @param packageName  the package to look for.
+     * @param resolveFlags the flags that are used by PackageManager to resolve the component name.
      * @hide
      */
     @Nullable
-    public static ComponentName getServiceComponentName(@NonNull Context context) {
-        final TextClassificationConstants settings = TextClassificationManager.getSettings(context);
-        // get override TextClassifierService package name
-        String packageName = settings.getTextClassifierServicePackageOverride();
-
-        ComponentName serviceComponent = null;
-        final boolean isOverrideService = !TextUtils.isEmpty(packageName);
-        if (isOverrideService) {
-            serviceComponent = getServiceComponentNameByPackage(context, packageName,
-                    isOverrideService);
-        }
-        if (serviceComponent != null) {
-            return serviceComponent;
-        }
-        // If no TextClassifierService override or invalid override package name, read the first
-        // package defined in the config
-        final String[] packages = context.getPackageManager().getSystemTextClassifierPackages();
-        if (packages.length == 0 || TextUtils.isEmpty(packages[0])) {
-            Slog.d(LOG_TAG, "No configured system TextClassifierService");
-            return null;
-        }
-        packageName = packages[0];
-        serviceComponent = getServiceComponentNameByPackage(context, packageName,
-                isOverrideService);
-        return serviceComponent;
-    }
-
-    private static ComponentName getServiceComponentNameByPackage(Context context,
-            String packageName, boolean isOverrideService) {
+    public static ComponentName getServiceComponentName(
+            Context context, String packageName, int resolveFlags) {
         final Intent intent = new Intent(SERVICE_INTERFACE).setPackage(packageName);
 
-        final int flags = isOverrideService ? 0 : PackageManager.MATCH_SYSTEM_ONLY;
-        final ResolveInfo ri = context.getPackageManager().resolveService(intent, flags);
+        final ResolveInfo ri = context.getPackageManager().resolveService(intent, resolveFlags);
 
         if ((ri == null) || (ri.serviceInfo == null)) {
             Slog.w(LOG_TAG, String.format("Package or service not found in package %s for user %d",
diff --git a/core/java/android/service/voice/AlwaysOnHotwordDetector.java b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
index 1966f17..a88d389 100644
--- a/core/java/android/service/voice/AlwaysOnHotwordDetector.java
+++ b/core/java/android/service/voice/AlwaysOnHotwordDetector.java
@@ -181,14 +181,14 @@
      * Returned by {@link #getSupportedAudioCapabilities()}
      */
     public static final int AUDIO_CAPABILITY_ECHO_CANCELLATION =
-            SoundTrigger.ModuleProperties.CAPABILITY_ECHO_CANCELLATION;
+            SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_ECHO_CANCELLATION;
 
     /**
      * If set, the underlying module supports noise suppression.
      * Returned by {@link #getSupportedAudioCapabilities()}
      */
     public static final int AUDIO_CAPABILITY_NOISE_SUPPRESSION =
-            SoundTrigger.ModuleProperties.CAPABILITY_NOISE_SUPPRESSION;
+            SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_NOISE_SUPPRESSION;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
@@ -249,21 +249,21 @@
         }
 
         /**
-         * The inclusive start of supported range.
+         * Get the beginning of the param range
          *
-         * @return start of range
+         * @return The inclusive start of the supported range.
          */
-        public int start() {
-            return mModelParamRange.start;
+        public int getStart() {
+            return mModelParamRange.getStart();
         }
 
         /**
-         * The inclusive end of supported range.
+         * Get the end of the param range
          *
-         * @return end of range
+         * @return The inclusive end of the supported range.
          */
-        public int end() {
-            return mModelParamRange.end;
+        public int getEnd() {
+            return mModelParamRange.getEnd();
         }
 
         @Override
diff --git a/core/java/android/service/voice/VoiceInteractionSession.java b/core/java/android/service/voice/VoiceInteractionSession.java
index 36f2c62..8e6f77b 100644
--- a/core/java/android/service/voice/VoiceInteractionSession.java
+++ b/core/java/android/service/voice/VoiceInteractionSession.java
@@ -1314,7 +1314,7 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(mContext);
             int res = mSystemService.startVoiceActivity(mToken, intent,
-                    intent.resolveType(mContext.getContentResolver()));
+                    intent.resolveType(mContext.getContentResolver()), mContext.getFeatureId());
             Instrumentation.checkStartActivityResult(res, intent);
         } catch (RemoteException e) {
         }
@@ -1342,7 +1342,7 @@
             intent.migrateExtraStreamToClipData();
             intent.prepareToLeaveProcess(mContext);
             int res = mSystemService.startAssistantActivity(mToken, intent,
-                    intent.resolveType(mContext.getContentResolver()));
+                    intent.resolveType(mContext.getContentResolver()), mContext.getFeatureId());
             Instrumentation.checkStartActivityResult(res, intent);
         } catch (RemoteException e) {
         }
diff --git a/core/java/android/telephony/CellBroadcastIntents.java b/core/java/android/telephony/CellBroadcastIntents.java
index 2e08108..921ad3c 100644
--- a/core/java/android/telephony/CellBroadcastIntents.java
+++ b/core/java/android/telephony/CellBroadcastIntents.java
@@ -19,6 +19,8 @@
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SdkConstant;
+import android.annotation.SdkConstant.SdkConstantType;
 import android.annotation.SystemApi;
 import android.app.AppOpsManager;
 import android.content.BroadcastReceiver;
@@ -43,6 +45,14 @@
     private static final String EXTRA_MESSAGE = "message";
 
     /**
+     * Broadcast intent action for notifying area information has been updated. The information
+     * can be retrieved by {@link CellBroadcastService#getCellBroadcastAreaInfo(int)}
+     */
+    @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
+    public static final String ACTION_AREA_INFO_UPDATED =
+            "android.telephony.action.AREA_INFO_UPDATED";
+
+    /**
      * @hide
      */
     private CellBroadcastIntents() {
@@ -71,7 +81,6 @@
             int initialCode, int slotIndex) {
         Intent backgroundIntent = new Intent(Telephony.Sms.Intents.SMS_CB_RECEIVED_ACTION);
         backgroundIntent.putExtra(EXTRA_MESSAGE, smsCbMessage);
-        backgroundIntent.setFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
         putPhoneIdAndSubIdExtra(context, backgroundIntent, slotIndex);
 
         String receiverPermission = Manifest.permission.RECEIVE_SMS;
diff --git a/core/java/android/telephony/PhoneStateListener.java b/core/java/android/telephony/PhoneStateListener.java
index 67cac0e..d273500 100644
--- a/core/java/android/telephony/PhoneStateListener.java
+++ b/core/java/android/telephony/PhoneStateListener.java
@@ -168,9 +168,11 @@
     public static final int LISTEN_SIGNAL_STRENGTHS                         = 0x00000100;
 
     /**
-     * Listen for always reported changes of the network signal strengths (cellular),
+     * Listen for changes of the network signal strengths (cellular) always reported from modem,
      * even in some situations such as the screen of the device is off.
      *
+     * @see #onSignalStrengthsChanged
+     *
      * @hide
      */
     @RequiresPermission(android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
@@ -225,6 +227,9 @@
 
     /**
      * Listen for changes to the SRVCC state of the active call.
+     *
+     * <p>Requires permission {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE}
+     *
      * @see #onServiceStateChanged(ServiceState)
      * @hide
      */
@@ -253,6 +258,9 @@
 
     /**
      * Listen for changes to the sim voice activation state
+     *
+     * <p>Requires permission {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE}
+     *
      * @see TelephonyManager#SIM_ACTIVATION_STATE_ACTIVATING
      * @see TelephonyManager#SIM_ACTIVATION_STATE_ACTIVATED
      * @see TelephonyManager#SIM_ACTIVATION_STATE_DEACTIVATED
@@ -266,6 +274,7 @@
      * @hide
      */
     @SystemApi
+    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public static final int LISTEN_VOICE_ACTIVATION_STATE                   = 0x00020000;
 
     /**
@@ -292,6 +301,13 @@
     public static final int LISTEN_USER_MOBILE_DATA_STATE                  = 0x00080000;
 
     /**
+     *  Listen for display info changed event.
+     *
+     *  @see #onDisplayInfoChanged
+     */
+    public static final int LISTEN_DISPLAY_INFO_CHANGED = 0x00100000;
+
+    /**
      *  Listen for changes to the phone capability.
      *
      *  @see #onPhoneCapabilityChanged
@@ -312,10 +328,13 @@
     /**
      *  Listen for changes to the radio power state.
      *
+     * <p>Requires permission {@link android.Manifest.permission#READ_PRIVILEGED_PHONE_STATE}
+     *
      *  @see #onRadioPowerStateChanged
      *  @hide
      */
     @SystemApi
+    @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public static final int LISTEN_RADIO_POWER_STATE_CHANGED               = 0x00800000;
 
     /**
@@ -400,23 +419,23 @@
      * domain. This indication does not necessarily indicate a change of service state, which should
      * be tracked via {@link #LISTEN_SERVICE_STATE}.
      *
-     * <p>Requires permission {@link android.Manifest.permission#READ_PHONE_STATE} or the calling
-     * app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}).
+     * <p>Requires permission {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE} or
+     * the calling app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}).
      *
      * @see #onRegistrationFailed()
      */
-    @RequiresPermission(Manifest.permission.READ_PHONE_STATE)
+    @RequiresPermission(Manifest.permission.READ_PRECISE_PHONE_STATE)
     public static final int LISTEN_REGISTRATION_FAILURE = 0x40000000;
 
     /**
      * Listen for Barring Information for the current registered / camped cell.
      *
-     * <p>Requires permission {@link android.Manifest.permission#READ_PHONE_STATE} or the calling
-     * app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}).
+     * <p>Requires permission {@link android.Manifest.permission#READ_PRECISE_PHONE_STATE} or
+     * the calling app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}).
      *
      * @see #onBarringInfoChanged()
      */
-    @RequiresPermission(Manifest.permission.READ_PHONE_STATE)
+    @RequiresPermission(Manifest.permission.READ_PRECISE_PHONE_STATE)
     public static final int LISTEN_BARRING_INFO = 0x80000000;
 
     /*
@@ -836,6 +855,21 @@
     }
 
     /**
+     * Callback invoked when the display info has changed on the registered subscription.
+     * <p> The {@link DisplayInfo} contains status information shown to the user based on
+     * carrier policy.
+     *
+     * Requires Permission: {@link android.Manifest.permission#READ_PHONE_STATE} or that the calling
+     * app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}).
+     *
+     * @param displayInfo The display information.
+     */
+    @RequiresPermission((android.Manifest.permission.READ_PHONE_STATE))
+    public void onDisplayInfoChanged(@NonNull DisplayInfo displayInfo) {
+        // default implementation empty
+    }
+
+    /**
      * Callback invoked when the current emergency number list has changed on the registered
      * subscription.
      * Note, the registration subId comes from {@link TelephonyManager} object which registers
@@ -904,7 +938,6 @@
      * Callback invoked when phone capability changes.
      * Note, this callback triggers regardless of registered subscription.
      *
-     * Requires the READ_PRIVILEGED_PHONE_STATE permission.
      * @param capability the new phone capability
      * @hide
      */
@@ -934,7 +967,7 @@
      * subId. Otherwise, this callback applies to
      * {@link SubscriptionManager#getDefaultSubscriptionId()}.
      *
-     * Requires the READ_PRIVILEGED_PHONE_STATE permission.
+     * Requires the READ_PRECISE_PHONE_STATE permission.
      * @param callAttributes the call attributes
      * @hide
      */
@@ -1215,6 +1248,15 @@
                             () -> psl.onUserMobileDataStateChanged(enabled)));
         }
 
+        public void onDisplayInfoChanged(DisplayInfo displayInfo) {
+            PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
+            if (psl == null) return;
+
+            Binder.withCleanCallingIdentity(
+                    () -> mExecutor.execute(
+                            () -> psl.onDisplayInfoChanged(displayInfo)));
+        }
+
         public void onOemHookRawEvent(byte[] rawData) {
             PhoneStateListener psl = mPhoneStateListenerWeakRef.get();
             if (psl == null) return;
diff --git a/core/java/android/telephony/TelephonyRegistryManager.java b/core/java/android/telephony/TelephonyRegistryManager.java
index 4024db1..2c077bb 100644
--- a/core/java/android/telephony/TelephonyRegistryManager.java
+++ b/core/java/android/telephony/TelephonyRegistryManager.java
@@ -589,6 +589,24 @@
     }
 
     /**
+     * Notify display info changed.
+     *
+     * @param slotIndex The SIM slot index for which display info has changed. Can be
+     * derived from {@code subscriptionId} except when {@code subscriptionId} is invalid, such as
+     * when the device is in emergency-only mode.
+     * @param subscriptionId Subscription id for which display network info has changed.
+     * @param displayInfo The display info.
+     */
+    public void notifyDisplayInfoChanged(int slotIndex, int subscriptionId,
+                                         @NonNull DisplayInfo displayInfo) {
+        try {
+            sRegistry.notifyDisplayInfoChanged(slotIndex, subscriptionId, displayInfo);
+        } catch (RemoteException ex) {
+            // system process is dead
+        }
+    }
+
+    /**
      * Notify IMS call disconnect causes which contains {@link android.telephony.ims.ImsReasonInfo}.
      *
      * @param subId for which ims call disconnect.
diff --git a/core/java/android/telephony/WapPushManagerConnector.java b/core/java/android/telephony/WapPushManagerConnector.java
deleted file mode 100644
index a9df506..0000000
--- a/core/java/android/telephony/WapPushManagerConnector.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- * Copyright (C) 2019 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.telephony;
-
-import android.annotation.IntDef;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.annotation.SdkConstant;
-import android.annotation.SystemApi;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.content.ServiceConnection;
-import android.os.IBinder;
-import android.os.RemoteException;
-
-import com.android.internal.telephony.IWapPushManager;
-import com.android.internal.util.Preconditions;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * APIs for platform to connect to the WAP push manager service.
- *
- * <p>To start connection, {@link #bindToWapPushManagerService} should be called.
- *
- * <p>Upon completion {@link #unbindWapPushManagerService} should be called to unbind the service.
- *
- * @hide
- */
-@SystemApi
-public final class WapPushManagerConnector {
-    private final Context mContext;
-
-    private volatile WapPushManagerConnection mConnection;
-    private volatile IWapPushManager mWapPushManager;
-    private String mWapPushManagerPackage;
-
-    /**
-     * The {@link android.content.Intent} that must be declared as handled by the
-     * WAP push manager service.
-     * @hide
-     */
-    @SdkConstant(SdkConstant.SdkConstantType.SERVICE_ACTION)
-    public static final String SERVICE_INTERFACE =
-            "com.android.internal.telephony.IWapPushManager";
-
-    /** @hide */
-    @IntDef(flag = true, prefix = {"RESULT_"}, value = {
-            RESULT_MESSAGE_HANDLED,
-            RESULT_APP_QUERY_FAILED,
-            RESULT_SIGNATURE_NO_MATCH,
-            RESULT_INVALID_RECEIVER_NAME,
-            RESULT_EXCEPTION_CAUGHT,
-            RESULT_FURTHER_PROCESSING,
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface ProcessMessageResult{}
-
-    /** {@link #processMessage} return value: Message is handled. */
-    public static final int RESULT_MESSAGE_HANDLED = 0x1;
-    /** {@link #processMessage} return value: Application ID or content type was not found. */
-    public static final int RESULT_APP_QUERY_FAILED = 0x2;
-    /** {@link #processMessage} return value: Receiver application signature check failed. */
-    public static final int RESULT_SIGNATURE_NO_MATCH = 0x4;
-    /** {@link #processMessage} return value: Receiver application was not found. */
-    public static final int RESULT_INVALID_RECEIVER_NAME = 0x8;
-    /** {@link #processMessage} return value: Unknown exception. */
-    public static final int RESULT_EXCEPTION_CAUGHT = 0x10;
-    /** {@link #processMessage} return value: further processing needed. */
-    public static final int RESULT_FURTHER_PROCESSING = 0x8000;
-
-    /** The application package name of the WAP push manager service. */
-    private static final String SERVICE_PACKAGE = "com.android.smspush";
-
-    public WapPushManagerConnector(@NonNull Context context) {
-        mContext = context;
-    }
-
-    /**
-     * Binds to the WAP push manager service. This method should be called exactly once.
-     *
-     * @return {@code true} upon successfully binding to a service, {@code false} otherwise
-     */
-    public boolean bindToWapPushManagerService() {
-        Preconditions.checkState(mConnection == null);
-
-        Intent intent = new Intent(SERVICE_INTERFACE);
-        ComponentName component = intent.resolveSystemService(mContext.getPackageManager(), 0);
-        intent.setComponent(component);
-        mConnection = new WapPushManagerConnection();
-        if (component != null
-                && mContext.bindService(intent, mConnection, Context.BIND_AUTO_CREATE)) {
-            mWapPushManagerPackage = component.getPackageName();
-            return true;
-        }
-        return false;
-    }
-
-    /**
-     * Returns the package name of WAP push manager service application connected to,
-     * or {@code null} if not connected.
-     */
-    @Nullable
-    public String getConnectedWapPushManagerServicePackage() {
-        return mWapPushManagerPackage;
-    }
-
-    /**
-     * Processes WAP push message and triggers the {@code intent}.
-     *
-     * @see RESULT_MESSAGE_HANDLED
-     * @see RESULT_APP_QUERY_FAILED
-     * @see RESULT_SIGNATURE_NO_MATCH
-     * @see RESULT_INVALID_RECEIVER_NAME
-     * @see RESULT_EXCEPTION_CAUGHT
-     * @see RESULT_FURTHER_PROCESSING
-     */
-    @ProcessMessageResult
-    public int processMessage(
-            @NonNull String applicationId, @NonNull String contentType, @NonNull Intent intent) {
-        try {
-            return mWapPushManager.processMessage(applicationId, contentType, intent);
-        } catch (NullPointerException | RemoteException e) {
-            return RESULT_EXCEPTION_CAUGHT;
-        }
-    }
-
-    /**
-     * Unbinds the WAP push manager service. This method should be called exactly once.
-     */
-    public void unbindWapPushManagerService() {
-        Preconditions.checkNotNull(mConnection);
-
-        mContext.unbindService(mConnection);
-        mConnection = null;
-    }
-
-    private class WapPushManagerConnection implements ServiceConnection {
-        @Override
-        public void onServiceConnected(ComponentName name, IBinder service) {
-            // Because we have bound to an explicit
-            // service that is running in our own process, we can
-            // cast its IBinder to a concrete class and directly access it.
-            mWapPushManager = IWapPushManager.Stub.asInterface(service);
-        }
-
-        @Override
-        public void onServiceDisconnected(ComponentName name) {
-            mWapPushManager = null;
-        }
-
-        @Override
-        public void onNullBinding(ComponentName name) {
-            onServiceDisconnected(name);
-        }
-
-        @Override
-        public void onBindingDied(ComponentName name) {
-            onServiceDisconnected(name);
-        }
-    }
-}
diff --git a/core/java/android/timezone/CountryTimeZones.java b/core/java/android/timezone/CountryTimeZones.java
index e5bbdf4..ee3a8a7 100644
--- a/core/java/android/timezone/CountryTimeZones.java
+++ b/core/java/android/timezone/CountryTimeZones.java
@@ -18,8 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SuppressLint;
-import android.annotation.SystemApi;
 import android.icu.util.TimeZone;
 
 import java.util.ArrayList;
@@ -32,7 +30,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class CountryTimeZones {
 
     /**
@@ -40,7 +37,6 @@
      *
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static final class TimeZoneMapping {
 
         @NonNull
@@ -51,19 +47,20 @@
         }
 
         /**
-         * Returns the ID for this mapping. See also {@link #getTimeZone()} which handles when the
-         * ID is unrecognized.
+         * Returns the ID for this mapping. The ID is a tzdb time zone identifier like
+         * "America/Los_Angeles" that can be used with methods such as {@link
+         * TimeZone#getFrozenTimeZone(String)}. See {@link #getTimeZone()} which returns a frozen
+         * {@link TimeZone} object.
          */
         @NonNull
         public String getTimeZoneId() {
-            return mDelegate.timeZoneId;
+            return mDelegate.getTimeZoneId();
         }
 
         /**
-         * Returns a {@link TimeZone} object for this mapping, or {@code null} if the ID is
-         * unrecognized.
+         * Returns a frozen {@link TimeZone} object for this mapping.
          */
-        @Nullable
+        @NonNull
         public TimeZone getTimeZone() {
             return mDelegate.getTimeZone();
         }
@@ -96,7 +93,6 @@
      *
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static final class OffsetResult {
 
         private final TimeZone mTimeZone;
@@ -158,9 +154,10 @@
     }
 
     /**
-     * Returns true if the ISO code for the country is a match for the one specified.
+     * Returns true if the ISO code for the country is a case-insensitive match for the one
+     * supplied.
      */
-    public boolean isForCountryCode(@NonNull String countryIso) {
+    public boolean matchesCountryCode(@NonNull String countryIso) {
         return mDelegate.isForCountryCode(countryIso);
     }
 
@@ -183,44 +180,75 @@
     }
 
     /**
-     * Qualifier for a country's default time zone. {@code true} indicates whether the default
-     * would be a good choice <em>generally</em> when there's no other information available.
+     * Qualifier for a country's default time zone. {@code true} indicates that the country's
+     * default time zone would be a good choice <em>generally</em> when there's no UTC offset
+     * information available. This will only be {@code true} in countries with multiple zones where
+     * a large majority of the population is covered by only one of them.
      */
     public boolean isDefaultTimeZoneBoosted() {
-        return mDelegate.getDefaultTimeZoneBoost();
+        return mDelegate.isDefaultTimeZoneBoosted();
     }
 
     /**
-     * Returns true if the country has at least one zone that is the same as UTC at the given time.
+     * Returns {@code true} if the country has at least one time zone that uses UTC at the given
+     * time. This is an efficient check when trying to validate received UTC offset information.
+     * For example, there are situations when a detected zero UTC offset cannot be distinguished
+     * from "no information available" or a corrupted signal. This method is useful because checking
+     * offset information for large countries is relatively expensive but it is generally only the
+     * countries close to the prime meridian that use UTC at <em>any</em> time of the year.
+     *
+     * @param whenMillis the time the offset information is for in milliseconds since the beginning
+     *     of the Unix epoch
      */
     public boolean hasUtcZone(long whenMillis) {
         return mDelegate.hasUtcZone(whenMillis);
     }
 
     /**
-     * Returns a time zone for the country, if there is one, that matches the desired properties. If
-     * there are multiple matches and the {@code bias} is one of them then it is returned, otherwise
-     * an arbitrary match is returned based on the {@link #getEffectiveTimeZoneMappingsAt(long)}
-     * ordering.
+     * Returns a time zone for the country, if there is one, that matches the supplied properties.
+     * If there are multiple matches and the {@code bias} is one of them then it is returned,
+     * otherwise an arbitrary match is returned based on the {@link
+     * #getEffectiveTimeZoneMappingsAt(long)} ordering.
      *
+     * @param whenMillis the UTC time to match against
+     * @param bias the time zone to prefer, can be {@code null} to indicate there is no preference
      * @param totalOffsetMillis the offset from UTC at {@code whenMillis}
      * @param isDst the Daylight Savings Time state at {@code whenMillis}. {@code true} means DST,
-     *     {@code false} means not DST, {@code null} means unknown
-     * @param dstOffsetMillis the part of {@code totalOffsetMillis} contributed by DST, only used if
-     *     {@code isDst} is {@code true}. The value can be {@code null} if the DST offset is
-     *     unknown
-     * @param whenMillis the UTC time to match against
-     * @param bias the time zone to prefer, can be {@code null}
+     *     {@code false} means not DST
+     * @return an {@link OffsetResult} with information about a matching zone, or {@code null} if
+     *     there is no match
      */
     @Nullable
-    public OffsetResult lookupByOffsetWithBias(int totalOffsetMillis, @Nullable Boolean isDst,
-            @SuppressLint("AutoBoxing") @Nullable Integer dstOffsetMillis, long whenMillis,
-            @Nullable TimeZone bias) {
+    public OffsetResult lookupByOffsetWithBias(long whenMillis, @Nullable TimeZone bias,
+            int totalOffsetMillis, boolean isDst) {
         libcore.timezone.CountryTimeZones.OffsetResult delegateOffsetResult =
                 mDelegate.lookupByOffsetWithBias(
-                        totalOffsetMillis, isDst, dstOffsetMillis, whenMillis, bias);
+                        whenMillis, bias, totalOffsetMillis, isDst);
         return delegateOffsetResult == null ? null :
-                new OffsetResult(delegateOffsetResult.mTimeZone, delegateOffsetResult.mOneMatch);
+                new OffsetResult(
+                        delegateOffsetResult.getTimeZone(), delegateOffsetResult.isOnlyMatch());
+    }
+
+    /**
+     * Returns a time zone for the country, if there is one, that matches the supplied properties.
+     * If there are multiple matches and the {@code bias} is one of them then it is returned,
+     * otherwise an arbitrary match is returned based on the {@link
+     * #getEffectiveTimeZoneMappingsAt(long)} ordering.
+     *
+     * @param whenMillis the UTC time to match against
+     * @param bias the time zone to prefer, can be {@code null} to indicate there is no preference
+     * @param totalOffsetMillis the offset from UTC at {@code whenMillis}
+     * @return an {@link OffsetResult} with information about a matching zone, or {@code null} if
+     *     there is no match
+     */
+    @Nullable
+    public OffsetResult lookupByOffsetWithBias(long whenMillis, @Nullable TimeZone bias,
+            int totalOffsetMillis) {
+        libcore.timezone.CountryTimeZones.OffsetResult delegateOffsetResult =
+                mDelegate.lookupByOffsetWithBias(whenMillis, bias, totalOffsetMillis);
+        return delegateOffsetResult == null ? null :
+                new OffsetResult(
+                        delegateOffsetResult.getTimeZone(), delegateOffsetResult.isOnlyMatch());
     }
 
     /**
diff --git a/core/java/android/timezone/TelephonyLookup.java b/core/java/android/timezone/TelephonyLookup.java
index 8a5864e..a4c3fbd 100644
--- a/core/java/android/timezone/TelephonyLookup.java
+++ b/core/java/android/timezone/TelephonyLookup.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -29,7 +28,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TelephonyLookup {
 
     private static final Object sLock = new Object();
diff --git a/core/java/android/timezone/TelephonyNetwork.java b/core/java/android/timezone/TelephonyNetwork.java
index 487b3f2..823cd25 100644
--- a/core/java/android/timezone/TelephonyNetwork.java
+++ b/core/java/android/timezone/TelephonyNetwork.java
@@ -17,7 +17,6 @@
 package android.timezone;
 
 import android.annotation.NonNull;
-import android.annotation.SystemApi;
 
 import java.util.Objects;
 
@@ -26,7 +25,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TelephonyNetwork {
 
     @NonNull
diff --git a/core/java/android/timezone/TelephonyNetworkFinder.java b/core/java/android/timezone/TelephonyNetworkFinder.java
index 2ddd3d9..4bfeff8 100644
--- a/core/java/android/timezone/TelephonyNetworkFinder.java
+++ b/core/java/android/timezone/TelephonyNetworkFinder.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 
 import java.util.Objects;
 
@@ -27,7 +26,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TelephonyNetworkFinder {
 
     @NonNull
diff --git a/core/java/android/timezone/TimeZoneFinder.java b/core/java/android/timezone/TimeZoneFinder.java
index c76bb1d..03f5013 100644
--- a/core/java/android/timezone/TimeZoneFinder.java
+++ b/core/java/android/timezone/TimeZoneFinder.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -29,7 +28,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TimeZoneFinder {
 
     private static final Object sLock = new Object();
diff --git a/core/java/android/timezone/TzDataSetVersion.java b/core/java/android/timezone/TzDataSetVersion.java
index 605155e..f993012 100644
--- a/core/java/android/timezone/TzDataSetVersion.java
+++ b/core/java/android/timezone/TzDataSetVersion.java
@@ -17,7 +17,6 @@
 package android.timezone;
 
 import android.annotation.NonNull;
-import android.annotation.SystemApi;
 
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -45,7 +44,6 @@
  * @hide
  */
 @VisibleForTesting
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class TzDataSetVersion {
 
     /**
@@ -88,7 +86,6 @@
      * A checked exception used in connection with time zone data sets.
      * @hide
      */
-    @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
     public static final class TzDataSetException extends Exception {
 
         /** Creates an instance with a message. */
@@ -111,23 +108,23 @@
 
     /** Returns the major version number. See {@link TzDataSetVersion}. */
     public int getFormatMajorVersion() {
-        return mDelegate.formatMajorVersion;
+        return mDelegate.getFormatMajorVersion();
     }
 
     /** Returns the minor version number. See {@link TzDataSetVersion}. */
     public int getFormatMinorVersion() {
-        return mDelegate.formatMinorVersion;
+        return mDelegate.getFormatMinorVersion();
     }
 
     /** Returns the tzdb version string. See {@link TzDataSetVersion}. */
     @NonNull
     public String getRulesVersion() {
-        return mDelegate.rulesVersion;
+        return mDelegate.getRulesVersion();
     }
 
     /** Returns the Android revision. See {@link TzDataSetVersion}. */
     public int getRevision() {
-        return mDelegate.revision;
+        return mDelegate.getRevision();
     }
 
     @Override
diff --git a/core/java/android/timezone/ZoneInfoDb.java b/core/java/android/timezone/ZoneInfoDb.java
index 4612a56..9354a69 100644
--- a/core/java/android/timezone/ZoneInfoDb.java
+++ b/core/java/android/timezone/ZoneInfoDb.java
@@ -17,7 +17,6 @@
 package android.timezone;
 
 import android.annotation.NonNull;
-import android.annotation.SystemApi;
 
 import com.android.internal.annotations.GuardedBy;
 
@@ -29,7 +28,6 @@
  *
  * @hide
  */
-@SystemApi(client = SystemApi.Client.MODULE_LIBRARIES)
 public final class ZoneInfoDb {
 
     private static final Object sLock = new Object();
diff --git a/core/java/android/util/FeatureFlagUtils.java b/core/java/android/util/FeatureFlagUtils.java
index 06fccaf8..afeb6c3 100644
--- a/core/java/android/util/FeatureFlagUtils.java
+++ b/core/java/android/util/FeatureFlagUtils.java
@@ -47,6 +47,11 @@
     /** @hide */
     public static final String BACKUP_NO_KV_DATA_CHANGE_CALLS =
             "backup_enable_no_data_notification_calls";
+    /** @hide */
+    public static final String SETTINGS_DO_NOT_RESTORE_PRESERVED =
+            "settings_do_not_restore_preserved";
+    /** @hide */
+    public static final String SETTINGS_SCHEDULES_FLAG = "settings_schedules";
 
     private static final Map<String, String> DEFAULT_FLAGS;
 
@@ -68,6 +73,12 @@
 
         // Disabled until backup transports support it.
         DEFAULT_FLAGS.put(BACKUP_NO_KV_DATA_CHANGE_CALLS, "false");
+        // Disabled by default until b/148278926 is resolved. This flags guards a feature
+        // introduced in R and will be removed in the next release (b/148367230).
+        DEFAULT_FLAGS.put(SETTINGS_DO_NOT_RESTORE_PRESERVED, "false");
+
+        DEFAULT_FLAGS.put("settings_tether_all_in_one", "false");
+        DEFAULT_FLAGS.put(SETTINGS_SCHEDULES_FLAG, "false");
     }
 
     /**
diff --git a/core/java/android/util/RotationUtils.java b/core/java/android/util/RotationUtils.java
new file mode 100644
index 0000000..a44ed59
--- /dev/null
+++ b/core/java/android/util/RotationUtils.java
@@ -0,0 +1,72 @@
+/*
+ * 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 android.util;
+
+import static android.view.Surface.ROTATION_0;
+import static android.view.Surface.ROTATION_180;
+import static android.view.Surface.ROTATION_270;
+import static android.view.Surface.ROTATION_90;
+
+import android.graphics.Insets;
+import android.view.Surface.Rotation;
+
+/**
+ * A class containing utility methods related to rotation.
+ *
+ * @hide
+ */
+public class RotationUtils {
+
+    /**
+     * Rotates an Insets according to the given rotation.
+     */
+    public static Insets rotateInsets(Insets insets, @Rotation int rotation) {
+        if (insets == null || insets == Insets.NONE) {
+            return insets;
+        }
+        Insets rotated;
+        switch (rotation) {
+            case ROTATION_0:
+                rotated = insets;
+                break;
+            case ROTATION_90:
+                rotated = Insets.of(
+                        insets.top,
+                        insets.right,
+                        insets.bottom,
+                        insets.left);
+                break;
+            case ROTATION_180:
+                rotated = Insets.of(
+                        insets.right,
+                        insets.bottom,
+                        insets.left,
+                        insets.top);
+                break;
+            case ROTATION_270:
+                rotated = Insets.of(
+                        insets.bottom,
+                        insets.left,
+                        insets.top,
+                        insets.right);
+                break;
+            default:
+                throw new IllegalArgumentException("unknown rotation: " + rotation);
+        }
+        return rotated;
+    }
+}
diff --git a/core/java/android/util/TimeUtils.java b/core/java/android/util/TimeUtils.java
index c325874..4b3afba 100644
--- a/core/java/android/util/TimeUtils.java
+++ b/core/java/android/util/TimeUtils.java
@@ -80,8 +80,8 @@
             return null;
         }
         CountryTimeZones.OffsetResult offsetResult = countryTimeZones.lookupByOffsetWithBias(
-                offsetMillis, isDst, null /* dstOffsetMillis */, whenMillis, bias);
-        return offsetResult != null ? offsetResult.mTimeZone : null;
+                whenMillis, bias, offsetMillis, isDst);
+        return offsetResult != null ? offsetResult.getTimeZone() : null;
     }
 
     /**
@@ -109,8 +109,8 @@
 
         List<String> timeZoneIds = new ArrayList<>();
         for (TimeZoneMapping timeZoneMapping : countryTimeZones.getTimeZoneMappings()) {
-            if (timeZoneMapping.showInPicker) {
-                timeZoneIds.add(timeZoneMapping.timeZoneId);
+            if (timeZoneMapping.isShownInPicker()) {
+                timeZoneIds.add(timeZoneMapping.getTimeZoneId());
             }
         }
         return Collections.unmodifiableList(timeZoneIds);
diff --git a/core/java/android/util/apk/ApkSignatureSchemeV4Verifier.java b/core/java/android/util/apk/ApkSignatureSchemeV4Verifier.java
new file mode 100644
index 0000000..b6b8089
--- /dev/null
+++ b/core/java/android/util/apk/ApkSignatureSchemeV4Verifier.java
@@ -0,0 +1,53 @@
+/*
+ * 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 android.util.apk;
+
+import android.os.incremental.IncrementalManager;
+
+import java.io.File;
+import java.security.cert.Certificate;
+
+import sun.security.pkcs.PKCS7;
+import sun.security.pkcs.ParsingException;
+
+/**
+ * APK Signature Scheme v4 verifier.
+ *
+ * @hide for internal use only.
+ */
+public class ApkSignatureSchemeV4Verifier {
+
+    /**
+     * Extracts APK Signature Scheme v4 signatures of the provided APK and returns the certificates
+     * associated with each signer.
+     */
+    public static Certificate[] extractCertificates(String apkFile)
+            throws SignatureNotFoundException, SecurityException {
+        final byte[] rawSignature = IncrementalManager.unsafeGetFileSignature(
+                new File(apkFile).getAbsolutePath());
+        if (rawSignature == null || rawSignature.length == 0) {
+            throw new SignatureNotFoundException("Failed to obtain raw signature from IncFS.");
+        }
+
+        try {
+            PKCS7 pkcs7 = new PKCS7(rawSignature);
+            return pkcs7.getCertificates();
+        } catch (ParsingException e) {
+            throw new SecurityException("Failed to parse signature and extract certificates", e);
+        }
+    }
+}
diff --git a/core/java/android/util/apk/ApkSignatureVerifier.java b/core/java/android/util/apk/ApkSignatureVerifier.java
index 71c8e98..f325c21 100644
--- a/core/java/android/util/apk/ApkSignatureVerifier.java
+++ b/core/java/android/util/apk/ApkSignatureVerifier.java
@@ -27,6 +27,7 @@
 import android.content.pm.PackageParser.PackageParserException;
 import android.content.pm.PackageParser.SigningDetails.SignatureSchemeVersion;
 import android.content.pm.Signature;
+import android.os.Build;
 import android.os.Trace;
 import android.util.jar.StrictJarFile;
 
@@ -65,46 +66,72 @@
     public static PackageParser.SigningDetails verify(String apkPath,
             @SignatureSchemeVersion int minSignatureSchemeVersion)
             throws PackageParserException {
+        return verifySignatures(apkPath, minSignatureSchemeVersion, true);
+    }
+
+    /**
+     * Returns the certificates associated with each signer for the given APK without verification.
+     * This method is dangerous and should not be used, unless the caller is absolutely certain the
+     * APK is trusted.
+     *
+     * @throws PackageParserException if there was a problem collecting certificates.
+     */
+    public static PackageParser.SigningDetails unsafeGetCertsWithoutVerification(
+            String apkPath, int minSignatureSchemeVersion)
+            throws PackageParserException {
+        return verifySignatures(apkPath, minSignatureSchemeVersion, false);
+    }
+
+    /**
+     * Verifies the provided APK using all allowed signing schemas.
+     * @return the certificates associated with each signer.
+     * @param verifyFull whether to verify all contents of this APK or just collect certificates.
+     * @throws PackageParserException if there was a problem collecting certificates
+     */
+    private static PackageParser.SigningDetails verifySignatures(String apkPath,
+            @SignatureSchemeVersion int minSignatureSchemeVersion, boolean verifyFull)
+            throws PackageParserException {
+
+        if (minSignatureSchemeVersion > SignatureSchemeVersion.SIGNING_BLOCK_V4) {
+            // V3 and before are older than the requested minimum signing version
+            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                    "No signature found in package of version " + minSignatureSchemeVersion
+                            + " or newer for package " + apkPath);
+        }
+
+        // first try v4
+        try {
+            return verifyV4Signature(apkPath, minSignatureSchemeVersion, verifyFull);
+        } catch (SignatureNotFoundException e) {
+            // not signed with v4, try older if allowed
+            if (minSignatureSchemeVersion >= SignatureSchemeVersion.SIGNING_BLOCK_V4) {
+                throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                        "No APK Signature Scheme v4 signature in package " + apkPath, e);
+            }
+        }
 
         if (minSignatureSchemeVersion > SignatureSchemeVersion.SIGNING_BLOCK_V3) {
             // V3 and before are older than the requested minimum signing version
             throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
                     "No signature found in package of version " + minSignatureSchemeVersion
-            + " or newer for package " + apkPath);
+                            + " or newer for package " + apkPath);
         }
 
-        // first try v3
-        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyV3");
+        return verifyV3AndBelowSignatures(apkPath, minSignatureSchemeVersion, verifyFull);
+    }
+
+    private static PackageParser.SigningDetails verifyV3AndBelowSignatures(String apkPath,
+            @SignatureSchemeVersion int minSignatureSchemeVersion, boolean verifyFull)
+            throws PackageParserException {
+        // try v3
         try {
-            ApkSignatureSchemeV3Verifier.VerifiedSigner vSigner =
-                    ApkSignatureSchemeV3Verifier.verify(apkPath);
-            Certificate[][] signerCerts = new Certificate[][] { vSigner.certs };
-            Signature[] signerSigs = convertToSignatures(signerCerts);
-            Signature[] pastSignerSigs = null;
-            if (vSigner.por != null) {
-                // populate proof-of-rotation information
-                pastSignerSigs = new Signature[vSigner.por.certs.size()];
-                for (int i = 0; i < pastSignerSigs.length; i++) {
-                    pastSignerSigs[i] = new Signature(vSigner.por.certs.get(i).getEncoded());
-                    pastSignerSigs[i].setFlags(vSigner.por.flagsList.get(i));
-                }
-            }
-            return new PackageParser.SigningDetails(
-                    signerSigs, SignatureSchemeVersion.SIGNING_BLOCK_V3,
-                    pastSignerSigs);
+            return verifyV3Signature(apkPath, verifyFull);
         } catch (SignatureNotFoundException e) {
             // not signed with v3, try older if allowed
             if (minSignatureSchemeVersion >= SignatureSchemeVersion.SIGNING_BLOCK_V3) {
                 throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
                         "No APK Signature Scheme v3 signature in package " + apkPath, e);
             }
-        } catch (Exception e) {
-            // APK Signature Scheme v2 signature found but did not verify
-            throw new  PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "Failed to collect certificates from " + apkPath
-                            + " using APK Signature Scheme v3", e);
-        } finally {
-            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
         }
 
         // redundant, protective version check
@@ -116,26 +143,14 @@
         }
 
         // try v2
-        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "verifyV2");
         try {
-            Certificate[][] signerCerts = ApkSignatureSchemeV2Verifier.verify(apkPath);
-            Signature[] signerSigs = convertToSignatures(signerCerts);
-
-            return new PackageParser.SigningDetails(
-                    signerSigs, SignatureSchemeVersion.SIGNING_BLOCK_V2);
+            return verifyV2Signature(apkPath, verifyFull);
         } catch (SignatureNotFoundException e) {
             // not signed with v2, try older if allowed
             if (minSignatureSchemeVersion >= SignatureSchemeVersion.SIGNING_BLOCK_V2) {
                 throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
                         "No APK Signature Scheme v2 signature in package " + apkPath, e);
             }
-        } catch (Exception e) {
-            // APK Signature Scheme v2 signature found but did not verify
-            throw new  PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "Failed to collect certificates from " + apkPath
-                            + " using APK Signature Scheme v2", e);
-        } finally {
-            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
         }
 
         // redundant, protective version check
@@ -147,14 +162,136 @@
         }
 
         // v2 didn't work, try jarsigner
-        return verifyV1Signature(apkPath, true);
+        return verifyV1Signature(apkPath, verifyFull);
     }
 
     /**
-     * Verifies the provided APK and returns the certificates associated with each signer.
+     * Verifies the provided APK using V4 schema.
      *
      * @param verifyFull whether to verify all contents of this APK or just collect certificates.
+     * @return the certificates associated with each signer.
+     * @throws SignatureNotFoundException if there are no V4 signatures in the APK
+     * @throws PackageParserException     if there was a problem collecting certificates
+     */
+    private static PackageParser.SigningDetails verifyV4Signature(String apkPath,
+            @SignatureSchemeVersion int minSignatureSchemeVersion, boolean verifyFull)
+            throws SignatureNotFoundException, PackageParserException {
+        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, verifyFull ? "verifyV4" : "certsOnlyV4");
+        try {
+            Certificate[] certs = ApkSignatureSchemeV4Verifier.extractCertificates(apkPath);
+            Certificate[][] signerCerts = new Certificate[][]{certs};
+            Signature[] signerSigs = convertToSignatures(signerCerts);
+
+            if (verifyFull) {
+                // v4 is an add-on and requires v2/v3 signature to validate against its certificates
+                final PackageParser.SigningDetails nonstreaming = verifyV3AndBelowSignatures(
+                        apkPath, minSignatureSchemeVersion, false);
+                if (nonstreaming.signatureSchemeVersion <= SignatureSchemeVersion.JAR) {
+                    throw new SecurityException(
+                            "V4 signing block can only be verified along with V2 and above.");
+                }
+                if (nonstreaming.signatures.length == 0
+                        || nonstreaming.signatures.length != signerSigs.length) {
+                    throw new SecurityException("Invalid number of signatures in "
+                            + nonstreaming.signatureSchemeVersion);
+                }
+
+                for (int i = 0, size = signerSigs.length; i < size; ++i) {
+                    if (!nonstreaming.signatures[i].equals(signerSigs[i])) {
+                        throw new SecurityException("V4 signature certificate does not match "
+                                + nonstreaming.signatureSchemeVersion);
+                    }
+                }
+            }
+
+            return new PackageParser.SigningDetails(signerSigs,
+                    SignatureSchemeVersion.SIGNING_BLOCK_V4);
+        } catch (SignatureNotFoundException e) {
+            throw e;
+        } catch (Exception e) {
+            // APK Signature Scheme v4 signature found but did not verify
+            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                    "Failed to collect certificates from " + apkPath
+                            + " using APK Signature Scheme v4", e);
+        } finally {
+            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+        }
+    }
+
+    /**
+     * Verifies the provided APK using V3 schema.
      *
+     * @param verifyFull whether to verify all contents of this APK or just collect certificates.
+     * @return the certificates associated with each signer.
+     * @throws SignatureNotFoundException if there are no V3 signatures in the APK
+     * @throws PackageParserException     if there was a problem collecting certificates
+     */
+    private static PackageParser.SigningDetails verifyV3Signature(String apkPath,
+            boolean verifyFull) throws SignatureNotFoundException, PackageParserException {
+        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, verifyFull ? "verifyV3" : "certsOnlyV3");
+        try {
+            ApkSignatureSchemeV3Verifier.VerifiedSigner vSigner =
+                    verifyFull ? ApkSignatureSchemeV3Verifier.verify(apkPath)
+                            : ApkSignatureSchemeV3Verifier.unsafeGetCertsWithoutVerification(
+                                    apkPath);
+            Certificate[][] signerCerts = new Certificate[][]{vSigner.certs};
+            Signature[] signerSigs = convertToSignatures(signerCerts);
+            Signature[] pastSignerSigs = null;
+            if (vSigner.por != null) {
+                // populate proof-of-rotation information
+                pastSignerSigs = new Signature[vSigner.por.certs.size()];
+                for (int i = 0; i < pastSignerSigs.length; i++) {
+                    pastSignerSigs[i] = new Signature(vSigner.por.certs.get(i).getEncoded());
+                    pastSignerSigs[i].setFlags(vSigner.por.flagsList.get(i));
+                }
+            }
+            return new PackageParser.SigningDetails(signerSigs,
+                    SignatureSchemeVersion.SIGNING_BLOCK_V3, pastSignerSigs);
+        } catch (SignatureNotFoundException e) {
+            throw e;
+        } catch (Exception e) {
+            // APK Signature Scheme v3 signature found but did not verify
+            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                    "Failed to collect certificates from " + apkPath
+                            + " using APK Signature Scheme v3", e);
+        } finally {
+            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+        }
+    }
+
+    /**
+     * Verifies the provided APK using V2 schema.
+     *
+     * @param verifyFull whether to verify all contents of this APK or just collect certificates.
+     * @return the certificates associated with each signer.
+     * @throws SignatureNotFoundException if there are no V2 signatures in the APK
+     * @throws PackageParserException     if there was a problem collecting certificates
+     */
+    private static PackageParser.SigningDetails verifyV2Signature(String apkPath,
+            boolean verifyFull) throws SignatureNotFoundException, PackageParserException {
+        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, verifyFull ? "verifyV2" : "certsOnlyV2");
+        try {
+            Certificate[][] signerCerts = verifyFull ? ApkSignatureSchemeV2Verifier.verify(apkPath)
+                    : ApkSignatureSchemeV2Verifier.unsafeGetCertsWithoutVerification(apkPath);
+            Signature[] signerSigs = convertToSignatures(signerCerts);
+            return new PackageParser.SigningDetails(signerSigs,
+                    SignatureSchemeVersion.SIGNING_BLOCK_V2);
+        } catch (SignatureNotFoundException e) {
+            throw e;
+        } catch (Exception e) {
+            // APK Signature Scheme v2 signature found but did not verify
+            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                    "Failed to collect certificates from " + apkPath
+                            + " using APK Signature Scheme v2", e);
+        } finally {
+            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+        }
+    }
+
+    /**
+     * Verifies the provided APK using JAR schema.
+     * @return the certificates associated with each signer.
+     * @param verifyFull whether to verify all contents of this APK or just collect certificates.
      * @throws PackageParserException if there was a problem collecting certificates
      */
     private static PackageParser.SigningDetails verifyV1Signature(
@@ -276,7 +413,7 @@
      *
      * @throws CertificateEncodingException if it is unable to create a Signature object.
      */
-    public static Signature[] convertToSignatures(Certificate[][] certs)
+    private static Signature[] convertToSignatures(Certificate[][] certs)
             throws CertificateEncodingException {
         final Signature[] res = new Signature[certs.length];
         for (int i = 0; i < certs.length; i++) {
@@ -295,99 +432,29 @@
     }
 
     /**
-     * Returns the certificates associated with each signer for the given APK without verification.
-     * This method is dangerous and should not be used, unless the caller is absolutely certain the
-     * APK is trusted.
-     *
-     * @throws PackageParserException if the APK's signature failed to verify.
-     * or greater is not found, except in the case of no JAR signature.
+     * Returns the minimum signature scheme version required for an app targeting the specified
+     * {@code targetSdk}.
      */
-    public static PackageParser.SigningDetails unsafeGetCertsWithoutVerification(
-            String apkPath, int minSignatureSchemeVersion)
-            throws PackageParserException {
-
-        if (minSignatureSchemeVersion > SignatureSchemeVersion.SIGNING_BLOCK_V3) {
-            // V3 and before are older than the requested minimum signing version
-            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "No signature found in package of version " + minSignatureSchemeVersion
-                            + " or newer for package " + apkPath);
+    public static int getMinimumSignatureSchemeVersionForTargetSdk(int targetSdk) {
+        if (targetSdk >= Build.VERSION_CODES.R) {
+            return SignatureSchemeVersion.SIGNING_BLOCK_V2;
         }
+        return SignatureSchemeVersion.JAR;
+    }
 
-        // first try v3
-        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "certsOnlyV3");
-        try {
-            ApkSignatureSchemeV3Verifier.VerifiedSigner vSigner =
-                    ApkSignatureSchemeV3Verifier.unsafeGetCertsWithoutVerification(apkPath);
-            Certificate[][] signerCerts = new Certificate[][] { vSigner.certs };
-            Signature[] signerSigs = convertToSignatures(signerCerts);
-            Signature[] pastSignerSigs = null;
-            if (vSigner.por != null) {
-                // populate proof-of-rotation information
-                pastSignerSigs = new Signature[vSigner.por.certs.size()];
-                for (int i = 0; i < pastSignerSigs.length; i++) {
-                    pastSignerSigs[i] = new Signature(vSigner.por.certs.get(i).getEncoded());
-                    pastSignerSigs[i].setFlags(vSigner.por.flagsList.get(i));
-                }
-            }
-            return new PackageParser.SigningDetails(
-                    signerSigs, SignatureSchemeVersion.SIGNING_BLOCK_V3,
-                    pastSignerSigs);
-        } catch (SignatureNotFoundException e) {
-            // not signed with v3, try older if allowed
-            if (minSignatureSchemeVersion >= SignatureSchemeVersion.SIGNING_BLOCK_V3) {
-                throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                        "No APK Signature Scheme v3 signature in package " + apkPath, e);
-            }
-        } catch (Exception e) {
-            // APK Signature Scheme v3 signature found but did not verify
-            throw new  PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "Failed to collect certificates from " + apkPath
-                            + " using APK Signature Scheme v3", e);
-        } finally {
-            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
+    /**
+     * Result of a successful APK verification operation.
+     */
+    public static class Result {
+        public final Certificate[][] certs;
+        public final Signature[] sigs;
+        public final int signatureSchemeVersion;
+
+        public Result(Certificate[][] certs, Signature[] sigs, int signingVersion) {
+            this.certs = certs;
+            this.sigs = sigs;
+            this.signatureSchemeVersion = signingVersion;
         }
-
-        // redundant, protective version check
-        if (minSignatureSchemeVersion > SignatureSchemeVersion.SIGNING_BLOCK_V2) {
-            // V2 and before are older than the requested minimum signing version
-            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "No signature found in package of version " + minSignatureSchemeVersion
-                            + " or newer for package " + apkPath);
-        }
-
-        // first try v2
-        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "certsOnlyV2");
-        try {
-            Certificate[][] signerCerts =
-                    ApkSignatureSchemeV2Verifier.unsafeGetCertsWithoutVerification(apkPath);
-            Signature[] signerSigs = convertToSignatures(signerCerts);
-            return new PackageParser.SigningDetails(signerSigs,
-                    SignatureSchemeVersion.SIGNING_BLOCK_V2);
-        } catch (SignatureNotFoundException e) {
-            // not signed with v2, try older if allowed
-            if (minSignatureSchemeVersion >= SignatureSchemeVersion.SIGNING_BLOCK_V2) {
-                throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                        "No APK Signature Scheme v2 signature in package " + apkPath, e);
-            }
-        } catch (Exception e) {
-            // APK Signature Scheme v2 signature found but did not verify
-            throw new  PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "Failed to collect certificates from " + apkPath
-                            + " using APK Signature Scheme v2", e);
-        } finally {
-            Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
-        }
-
-        // redundant, protective version check
-        if (minSignatureSchemeVersion > SignatureSchemeVersion.JAR) {
-            // V1 and is older than the requested minimum signing version
-            throw new PackageParserException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
-                    "No signature found in package of version " + minSignatureSchemeVersion
-                            + " or newer for package " + apkPath);
-        }
-
-        // v2 didn't work, try jarsigner
-        return verifyV1Signature(apkPath, false);
     }
 
     /**
@@ -415,7 +482,7 @@
      */
     public static byte[] generateApkVerity(String apkPath, ByteBufferFactory bufferFactory)
             throws IOException, SignatureNotFoundException, SecurityException, DigestException,
-                   NoSuchAlgorithmException {
+            NoSuchAlgorithmException {
         // first try v3
         try {
             return ApkSignatureSchemeV3Verifier.generateApkVerity(apkPath, bufferFactory);
@@ -445,19 +512,4 @@
             return null;
         }
     }
-
-    /**
-     * Result of a successful APK verification operation.
-     */
-    public static class Result {
-        public final Certificate[][] certs;
-        public final Signature[] sigs;
-        public final int signatureSchemeVersion;
-
-        public Result(Certificate[][] certs, Signature[] sigs, int signingVersion) {
-            this.certs = certs;
-            this.sigs = sigs;
-            this.signatureSchemeVersion = signingVersion;
-        }
-    }
 }
diff --git a/core/java/android/view/AccessibilityEmbeddedConnection.java b/core/java/android/view/AccessibilityEmbeddedConnection.java
new file mode 100644
index 0000000..cc1e501
--- /dev/null
+++ b/core/java/android/view/AccessibilityEmbeddedConnection.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 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.annotation.NonNull;
+import android.annotation.Nullable;
+import android.graphics.Matrix;
+import android.os.IBinder;
+import android.view.accessibility.AccessibilityManager;
+import android.view.accessibility.IAccessibilityEmbeddedConnection;
+
+import java.lang.ref.WeakReference;
+
+/**
+ * This class is an interface this ViewRootImpl provides to the host view to the latter
+ * can interact with the view hierarchy in SurfaceControlViewHost.
+ *
+ * @hide
+ */
+final class AccessibilityEmbeddedConnection extends IAccessibilityEmbeddedConnection.Stub {
+    private final WeakReference<ViewRootImpl> mViewRootImpl;
+
+    AccessibilityEmbeddedConnection(ViewRootImpl viewRootImpl) {
+        mViewRootImpl = new WeakReference<>(viewRootImpl);
+    }
+
+    @Override
+    public @Nullable IBinder associateEmbeddedHierarchy(@NonNull IBinder host, int hostViewId) {
+        final ViewRootImpl viewRootImpl = mViewRootImpl.get();
+        if (viewRootImpl != null) {
+            final AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(
+                    viewRootImpl.mContext);
+            viewRootImpl.mAttachInfo.mLeashedParentToken = host;
+            viewRootImpl.mAttachInfo.mLeashedParentAccessibilityViewId = hostViewId;
+            if (accessibilityManager.isEnabled()) {
+                accessibilityManager.associateEmbeddedHierarchy(host, viewRootImpl.mLeashToken);
+            }
+            return viewRootImpl.mLeashToken;
+        }
+        return null;
+    }
+
+    @Override
+    public void disassociateEmbeddedHierarchy() {
+        final ViewRootImpl viewRootImpl = mViewRootImpl.get();
+        if (viewRootImpl != null) {
+            final AccessibilityManager accessibilityManager = AccessibilityManager.getInstance(
+                    viewRootImpl.mContext);
+            viewRootImpl.mAttachInfo.mLeashedParentToken = null;
+            viewRootImpl.mAttachInfo.mLeashedParentAccessibilityViewId = View.NO_ID;
+            viewRootImpl.mAttachInfo.mLocationInParentDisplay.set(0, 0);
+            if (accessibilityManager.isEnabled()) {
+                accessibilityManager.disassociateEmbeddedHierarchy(viewRootImpl.mLeashToken);
+            }
+        }
+    }
+
+    @Override
+    public void setScreenMatrix(float[] matrixValues) {
+        final ViewRootImpl viewRootImpl = mViewRootImpl.get();
+        if (viewRootImpl != null) {
+            // TODO(b/148821260): Implement the rest of matrix values.
+            viewRootImpl.mAttachInfo.mLocationInParentDisplay.set(
+                    (int) matrixValues[Matrix.MTRANS_X], (int) matrixValues[Matrix.MTRANS_Y]);
+        }
+    }
+}
diff --git a/core/java/android/view/AccessibilityInteractionController.java b/core/java/android/view/AccessibilityInteractionController.java
index 203b087..3ca84c1 100644
--- a/core/java/android/view/AccessibilityInteractionController.java
+++ b/core/java/android/view/AccessibilityInteractionController.java
@@ -855,6 +855,36 @@
         return mViewRootImpl.mAttachInfo.mLocationInParentDisplay.equals(0, 0);
     }
 
+    private void associateLeashedParentIfNeeded(List<AccessibilityNodeInfo> infos) {
+        if (infos == null || shouldBypassAssociateLeashedParent()) {
+            return;
+        }
+        final int infoCount = infos.size();
+        for (int i = 0; i < infoCount; i++) {
+            final AccessibilityNodeInfo info = infos.get(i);
+            associateLeashedParentIfNeeded(info);
+        }
+    }
+
+    private void associateLeashedParentIfNeeded(AccessibilityNodeInfo info) {
+        if (info == null || shouldBypassAssociateLeashedParent()) {
+            return;
+        }
+        // The node id of root node in embedded maybe not be ROOT_NODE_ID so we compare the id
+        // with root view.
+        if (mViewRootImpl.mView.getAccessibilityViewId()
+                != AccessibilityNodeInfo.getAccessibilityViewId(info.getSourceNodeId())) {
+            return;
+        }
+        info.setLeashedParent(mViewRootImpl.mAttachInfo.mLeashedParentToken,
+                mViewRootImpl.mAttachInfo.mLeashedParentAccessibilityViewId);
+    }
+
+    private boolean shouldBypassAssociateLeashedParent() {
+        return (mViewRootImpl.mAttachInfo.mLeashedParentToken == null
+                && mViewRootImpl.mAttachInfo.mLeashedParentAccessibilityViewId == View.NO_ID);
+    }
+
     private void applyAppScaleAndMagnificationSpecIfNeeded(AccessibilityNodeInfo info,
             MagnificationSpec spec) {
         if (info == null) {
@@ -914,6 +944,7 @@
             MagnificationSpec spec, Region interactiveRegion) {
         try {
             mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+            associateLeashedParentIfNeeded(infos);
             adjustBoundsInScreenIfNeeded(infos);
             // To avoid applyAppScaleAndMagnificationSpecIfNeeded changing the bounds of node,
             // then impact the visibility result, we need to adjust visibility before apply scale.
@@ -935,6 +966,7 @@
             MagnificationSpec spec, Region interactiveRegion) {
         try {
             mViewRootImpl.mAttachInfo.mAccessibilityFetchFlags = 0;
+            associateLeashedParentIfNeeded(info);
             adjustBoundsInScreenIfNeeded(info);
             // To avoid applyAppScaleAndMagnificationSpecIfNeeded changing the bounds of node,
             // then impact the visibility result, we need to adjust visibility before apply scale.
diff --git a/core/java/android/view/CutoutSpecification.java b/core/java/android/view/CutoutSpecification.java
new file mode 100644
index 0000000..d21a952
--- /dev/null
+++ b/core/java/android/view/CutoutSpecification.java
@@ -0,0 +1,486 @@
+/*
+ * 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 android.view;
+
+import static android.view.Gravity.BOTTOM;
+import static android.view.Gravity.LEFT;
+import static android.view.Gravity.RIGHT;
+import static android.view.Gravity.TOP;
+
+import static com.android.internal.annotations.VisibleForTesting.Visibility.PACKAGE;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.graphics.Insets;
+import android.graphics.Matrix;
+import android.graphics.Path;
+import android.graphics.Rect;
+import android.graphics.RectF;
+import android.graphics.Region;
+import android.text.TextUtils;
+import android.util.Log;
+import android.util.PathParser;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.Locale;
+import java.util.Objects;
+
+/**
+ * In order to accept the cutout specification for all of edges in devices, the specification
+ * parsing method is extracted from
+ * {@link android.view.DisplayCutout#fromResourcesRectApproximation(Resources, int, int)} to be
+ * the specified class for parsing the specification.
+ * BNF definition:
+ * <ul>
+ *      <li>Cutouts Specification = ([Cutout Delimiter],Cutout Specification) {...}, [Dp] ; </li>
+ *      <li>Cutout Specification  = [Vertical Position], (SVG Path Element), [Horizontal Position]
+ *                                  [Bind Cutout] ;</li>
+ *      <li>Vertical Position     = "@bottom" | "@center_vertical" ;</li>
+ *      <li>Horizontal Position   = "@left" | "@right" ;</li>
+ *      <li>Bind Cutout           = "@bind_left_cutout" | "@bind_right_cutout" ;</li>
+ *      <li>Cutout Delimiter      = "@cutout" ;</li>
+ *      <li>Dp                    = "@dp"</li>
+ * </ul>
+ *
+ * <ul>
+ *     <li>Vertical position is top by default if there is neither "@bottom" nor "@center_vertical"
+ *     </li>
+ *     <li>Horizontal position is center horizontal by default if there is neither "@left" nor
+ *     "@right".</li>
+ *     <li>@bottom make the cutout piece bind to bottom edge.</li>
+ *     <li>both of @bind_left_cutout and @bind_right_cutout are use to claim the cutout belong to
+ *     left or right edge cutout.</li>
+ * </ul>
+ *
+ * @hide
+ */
+@VisibleForTesting(visibility = PACKAGE)
+public class CutoutSpecification {
+    private static final String TAG = "CutoutSpecification";
+    private static final boolean DEBUG = false;
+
+    private static final int MINIMAL_ACCEPTABLE_PATH_LENGTH = "H1V1Z".length();
+
+    private static final char MARKER_START_CHAR = '@';
+    private static final String DP_MARKER = MARKER_START_CHAR + "dp";
+
+    private static final String BOTTOM_MARKER = MARKER_START_CHAR + "bottom";
+    private static final String RIGHT_MARKER = MARKER_START_CHAR + "right";
+    private static final String LEFT_MARKER = MARKER_START_CHAR + "left";
+    private static final String CUTOUT_MARKER = MARKER_START_CHAR + "cutout";
+    private static final String CENTER_VERTICAL_MARKER = MARKER_START_CHAR + "center_vertical";
+
+    /* By default, it's top bound cutout. That's why TOP_BOUND_CUTOUT_MARKER is not defined */
+    private static final String BIND_RIGHT_CUTOUT_MARKER = MARKER_START_CHAR + "bind_right_cutout";
+    private static final String BIND_LEFT_CUTOUT_MARKER = MARKER_START_CHAR + "bind_left_cutout";
+
+    private final Path mPath;
+    private final Rect mLeftBound;
+    private final Rect mTopBound;
+    private final Rect mRightBound;
+    private final Rect mBottomBound;
+    private final Insets mInsets;
+
+    private CutoutSpecification(@NonNull Parser parser) {
+        mPath = parser.mPath;
+        mLeftBound = parser.mLeftBound;
+        mTopBound = parser.mTopBound;
+        mRightBound = parser.mRightBound;
+        mBottomBound = parser.mBottomBound;
+        mInsets = parser.mInsets;
+
+        if (DEBUG) {
+            Log.d(TAG, String.format(Locale.ENGLISH,
+                    "left cutout = %s, top cutout = %s, right cutout = %s, bottom cutout = %s",
+                    mLeftBound != null ? mLeftBound.toString() : "",
+                    mTopBound != null ? mTopBound.toString() : "",
+                    mRightBound != null ? mRightBound.toString() : "",
+                    mBottomBound != null ? mBottomBound.toString() : ""));
+        }
+    }
+
+    @VisibleForTesting(visibility = PACKAGE)
+    @Nullable
+    public Path getPath() {
+        return mPath;
+    }
+
+    @VisibleForTesting(visibility = PACKAGE)
+    @Nullable
+    public Rect getLeftBound() {
+        return mLeftBound;
+    }
+
+    @VisibleForTesting(visibility = PACKAGE)
+    @Nullable
+    public Rect getTopBound() {
+        return mTopBound;
+    }
+
+    @VisibleForTesting(visibility = PACKAGE)
+    @Nullable
+    public Rect getRightBound() {
+        return mRightBound;
+    }
+
+    @VisibleForTesting(visibility = PACKAGE)
+    @Nullable
+    public Rect getBottomBound() {
+        return mBottomBound;
+    }
+
+    /**
+     * To count the safe inset according to the cutout bounds and waterfall inset.
+     *
+     * @return the safe inset.
+     */
+    @VisibleForTesting(visibility = PACKAGE)
+    @NonNull
+    public Rect getSafeInset() {
+        return mInsets.toRect();
+    }
+
+    private static int decideWhichEdge(boolean isTopEdgeShortEdge,
+            boolean isShortEdge, boolean isStart) {
+        return (isTopEdgeShortEdge)
+                ? ((isShortEdge) ? (isStart ? TOP : BOTTOM) : (isStart ? LEFT : RIGHT))
+                : ((isShortEdge) ? (isStart ? LEFT : RIGHT) : (isStart ? TOP : BOTTOM));
+    }
+
+    /**
+     * The CutoutSpecification Parser.
+     */
+    @VisibleForTesting(visibility = PACKAGE)
+    public static class Parser {
+        private final boolean mIsShortEdgeOnTop;
+        private final float mDensity;
+        private final int mDisplayWidth;
+        private final int mDisplayHeight;
+        private final Matrix mMatrix;
+        private Insets mInsets;
+        private int mSafeInsetLeft;
+        private int mSafeInsetTop;
+        private int mSafeInsetRight;
+        private int mSafeInsetBottom;
+
+        private final Rect mTmpRect = new Rect();
+        private final RectF mTmpRectF = new RectF();
+
+        private boolean mInDp;
+
+        private Path mPath;
+        private Rect mLeftBound;
+        private Rect mTopBound;
+        private Rect mRightBound;
+        private Rect mBottomBound;
+
+        private boolean mPositionFromLeft = false;
+        private boolean mPositionFromRight = false;
+        private boolean mPositionFromBottom = false;
+        private boolean mPositionFromCenterVertical = false;
+
+        private boolean mBindLeftCutout = false;
+        private boolean mBindRightCutout = false;
+        private boolean mBindBottomCutout = false;
+
+        private boolean mIsTouchShortEdgeStart;
+        private boolean mIsTouchShortEdgeEnd;
+        private boolean mIsCloserToStartSide;
+
+        /**
+         * The constructor of the CutoutSpecification parser to parse the specification of cutout.
+         * @param density the display density.
+         * @param displayWidth the display width.
+         * @param displayHeight the display height.
+         */
+        @VisibleForTesting(visibility = PACKAGE)
+        public Parser(float density, int displayWidth, int displayHeight) {
+            mDensity = density;
+            mDisplayWidth = displayWidth;
+            mDisplayHeight = displayHeight;
+            mMatrix = new Matrix();
+            mIsShortEdgeOnTop = mDisplayWidth < mDisplayHeight;
+        }
+
+        private void computeBoundsRectAndAddToRegion(Path p, Region inoutRegion, Rect inoutRect) {
+            mTmpRectF.setEmpty();
+            p.computeBounds(mTmpRectF, false /* unused */);
+            mTmpRectF.round(inoutRect);
+            inoutRegion.op(inoutRect, Region.Op.UNION);
+        }
+
+        private void resetStatus(StringBuilder sb) {
+            sb.setLength(0);
+            mPositionFromBottom = false;
+            mPositionFromLeft = false;
+            mPositionFromRight = false;
+            mPositionFromCenterVertical = false;
+
+            mBindLeftCutout = false;
+            mBindRightCutout = false;
+            mBindBottomCutout = false;
+        }
+
+        private void translateMatrix() {
+            final float offsetX;
+            if (mPositionFromRight) {
+                offsetX = mDisplayWidth;
+            } else if (mPositionFromLeft) {
+                offsetX = 0;
+            } else {
+                offsetX = mDisplayWidth / 2f;
+            }
+
+            final float offsetY;
+            if (mPositionFromBottom) {
+                offsetY = mDisplayHeight;
+            } else if (mPositionFromCenterVertical) {
+                offsetY = mDisplayHeight / 2f;
+            } else {
+                offsetY = 0;
+            }
+
+            mMatrix.reset();
+            if (mInDp) {
+                mMatrix.postScale(mDensity, mDensity);
+            }
+            mMatrix.postTranslate(offsetX, offsetY);
+        }
+
+        private int computeSafeInsets(int gravity, Rect rect) {
+            if (gravity == LEFT && rect.right > 0 && rect.right < mDisplayWidth) {
+                return rect.right;
+            } else if (gravity == TOP && rect.bottom > 0 && rect.bottom < mDisplayHeight) {
+                return rect.bottom;
+            } else if (gravity == RIGHT && rect.left > 0 && rect.left < mDisplayWidth) {
+                return mDisplayWidth - rect.left;
+            } else if (gravity == BOTTOM && rect.top > 0 && rect.top < mDisplayHeight) {
+                return mDisplayHeight - rect.top;
+            }
+            return 0;
+        }
+
+        private void setSafeInset(int gravity, int inset) {
+            if (gravity == LEFT) {
+                mSafeInsetLeft = inset;
+            } else if (gravity == TOP) {
+                mSafeInsetTop = inset;
+            } else if (gravity == RIGHT) {
+                mSafeInsetRight = inset;
+            } else if (gravity == BOTTOM) {
+                mSafeInsetBottom = inset;
+            }
+        }
+
+        private int getSafeInset(int gravity) {
+            if (gravity == LEFT) {
+                return mSafeInsetLeft;
+            } else if (gravity == TOP) {
+                return mSafeInsetTop;
+            } else if (gravity == RIGHT) {
+                return mSafeInsetRight;
+            } else if (gravity == BOTTOM) {
+                return mSafeInsetBottom;
+            }
+            return 0;
+        }
+
+        @NonNull
+        private Rect onSetEdgeCutout(boolean isStart, boolean isShortEdge, @NonNull Rect rect) {
+            final int gravity;
+            if (isShortEdge) {
+                gravity = decideWhichEdge(mIsShortEdgeOnTop, true, isStart);
+            } else {
+                if (mIsTouchShortEdgeStart && mIsTouchShortEdgeEnd) {
+                    gravity = decideWhichEdge(mIsShortEdgeOnTop, false, isStart);
+                } else if (mIsTouchShortEdgeStart || mIsTouchShortEdgeEnd) {
+                    gravity = decideWhichEdge(mIsShortEdgeOnTop, true,
+                            mIsCloserToStartSide);
+                } else {
+                    gravity = decideWhichEdge(mIsShortEdgeOnTop, isShortEdge, isStart);
+                }
+            }
+
+            int oldSafeInset = getSafeInset(gravity);
+            int newSafeInset = computeSafeInsets(gravity, rect);
+            if (oldSafeInset < newSafeInset) {
+                setSafeInset(gravity, newSafeInset);
+            }
+
+            return new Rect(rect);
+        }
+
+        private void setEdgeCutout(@NonNull Path newPath) {
+            if (mBindRightCutout && mRightBound == null) {
+                mRightBound = onSetEdgeCutout(false, !mIsShortEdgeOnTop, mTmpRect);
+            } else if (mBindLeftCutout && mLeftBound == null) {
+                mLeftBound = onSetEdgeCutout(true, !mIsShortEdgeOnTop, mTmpRect);
+            } else if (mBindBottomCutout && mBottomBound == null) {
+                mBottomBound = onSetEdgeCutout(false, mIsShortEdgeOnTop, mTmpRect);
+            } else if (!(mBindBottomCutout || mBindLeftCutout || mBindRightCutout)
+                    && mTopBound == null) {
+                mTopBound = onSetEdgeCutout(true, mIsShortEdgeOnTop, mTmpRect);
+            } else {
+                return;
+            }
+
+            if (mPath != null) {
+                mPath.addPath(newPath);
+            } else {
+                mPath = newPath;
+            }
+        }
+
+        private void parseSvgPathSpec(Region region, String spec) {
+            if (TextUtils.length(spec) < MINIMAL_ACCEPTABLE_PATH_LENGTH) {
+                Log.e(TAG, "According to SVG definition, it shouldn't happen");
+                return;
+            }
+            spec.trim();
+            translateMatrix();
+
+            final Path newPath = PathParser.createPathFromPathData(spec);
+            newPath.transform(mMatrix);
+            computeBoundsRectAndAddToRegion(newPath, region, mTmpRect);
+
+            if (DEBUG) {
+                Log.d(TAG, String.format(Locale.ENGLISH,
+                        "hasLeft = %b, hasRight = %b, hasBottom = %b, hasCenterVertical = %b",
+                        mPositionFromLeft, mPositionFromRight, mPositionFromBottom,
+                        mPositionFromCenterVertical));
+                Log.d(TAG, "region = " + region);
+                Log.d(TAG, "spec = \"" + spec + "\" rect = " + mTmpRect + " newPath = " + newPath);
+            }
+
+            if (mTmpRect.isEmpty()) {
+                return;
+            }
+
+            if (mIsShortEdgeOnTop) {
+                mIsTouchShortEdgeStart = mTmpRect.top <= 0;
+                mIsTouchShortEdgeEnd = mTmpRect.bottom >= mDisplayHeight;
+                mIsCloserToStartSide = mTmpRect.centerY() < mDisplayHeight / 2;
+            } else {
+                mIsTouchShortEdgeStart = mTmpRect.left <= 0;
+                mIsTouchShortEdgeEnd = mTmpRect.right >= mDisplayWidth;
+                mIsCloserToStartSide = mTmpRect.centerX() < mDisplayWidth / 2;
+            }
+
+            setEdgeCutout(newPath);
+        }
+
+        private void parseSpecWithoutDp(@NonNull String specWithoutDp) {
+            Region region = Region.obtain();
+            StringBuilder sb = null;
+            int currentIndex = 0;
+            int lastIndex = 0;
+            while ((currentIndex = specWithoutDp.indexOf(MARKER_START_CHAR, lastIndex)) != -1) {
+                if (sb == null) {
+                    sb = new StringBuilder(specWithoutDp.length());
+                }
+                sb.append(specWithoutDp, lastIndex, currentIndex);
+
+                if (specWithoutDp.startsWith(LEFT_MARKER, currentIndex)) {
+                    if (!mPositionFromRight) {
+                        mPositionFromLeft = true;
+                    }
+                    currentIndex += LEFT_MARKER.length();
+                } else if (specWithoutDp.startsWith(RIGHT_MARKER, currentIndex)) {
+                    if (!mPositionFromLeft) {
+                        mPositionFromRight = true;
+                    }
+                    currentIndex += RIGHT_MARKER.length();
+                } else if (specWithoutDp.startsWith(BOTTOM_MARKER, currentIndex)) {
+                    if (!mPositionFromCenterVertical) {
+                        parseSvgPathSpec(region, sb.toString());
+                    }
+                    currentIndex += BOTTOM_MARKER.length();
+
+                    /* prepare to parse the rest path */
+                    resetStatus(sb);
+                    mBindBottomCutout = true;
+                    mPositionFromBottom = true;
+                } else if (specWithoutDp.startsWith(CENTER_VERTICAL_MARKER, currentIndex)) {
+                    if (!mPositionFromBottom) {
+                        parseSvgPathSpec(region, sb.toString());
+                    }
+                    currentIndex += CENTER_VERTICAL_MARKER.length();
+
+                    /* prepare to parse the rest path */
+                    resetStatus(sb);
+                    mPositionFromCenterVertical = true;
+                } else if (specWithoutDp.startsWith(CUTOUT_MARKER, currentIndex)) {
+                    parseSvgPathSpec(region, sb.toString());
+                    currentIndex += CUTOUT_MARKER.length();
+
+                    /* prepare to parse the rest path */
+                    resetStatus(sb);
+                } else if (specWithoutDp.startsWith(BIND_LEFT_CUTOUT_MARKER, currentIndex)) {
+                    if (!mBindBottomCutout && !mBindRightCutout) {
+                        mBindLeftCutout = true;
+                    }
+                    currentIndex += BIND_LEFT_CUTOUT_MARKER.length();
+                } else if (specWithoutDp.startsWith(BIND_RIGHT_CUTOUT_MARKER, currentIndex)) {
+                    if (!mBindBottomCutout && !mBindLeftCutout) {
+                        mBindRightCutout = true;
+                    }
+                    currentIndex += BIND_RIGHT_CUTOUT_MARKER.length();
+                } else {
+                    currentIndex += 1;
+                }
+
+                lastIndex = currentIndex;
+            }
+
+            if (sb == null) {
+                parseSvgPathSpec(region, specWithoutDp);
+            } else {
+                sb.append(specWithoutDp, lastIndex, specWithoutDp.length());
+                parseSvgPathSpec(region, sb.toString());
+            }
+
+            region.recycle();
+        }
+
+        /**
+         * To parse specification string as the CutoutSpecification.
+         *
+         * @param originalSpec the specification string
+         * @return the CutoutSpecification instance
+         */
+        @VisibleForTesting(visibility = PACKAGE)
+        public CutoutSpecification parse(@NonNull String originalSpec) {
+            Objects.requireNonNull(originalSpec);
+
+            int dpIndex = originalSpec.lastIndexOf(DP_MARKER);
+            mInDp = (dpIndex != -1);
+            final String spec;
+            if (dpIndex != -1) {
+                spec = originalSpec.substring(0, dpIndex)
+                        + originalSpec.substring(dpIndex + DP_MARKER.length());
+            } else {
+                spec = originalSpec;
+            }
+
+            parseSpecWithoutDp(spec);
+
+            mInsets = Insets.of(mSafeInsetLeft, mSafeInsetTop, mSafeInsetRight, mSafeInsetBottom);
+            return new CutoutSpecification(this);
+        }
+    }
+}
diff --git a/core/java/android/view/Display.java b/core/java/android/view/Display.java
index 0304328..f61217d 100644
--- a/core/java/android/view/Display.java
+++ b/core/java/android/view/Display.java
@@ -57,8 +57,8 @@
  * <li>The application display area specifies the part of the display that may contain
  * an application window, excluding the system decorations.  The application display area may
  * be smaller than the real display area because the system subtracts the space needed
- * for decor elements such as the status bar.  Use the following methods to query the
- * application display area: {@link #getSize}, {@link #getRectSize} and {@link #getMetrics}.</li>
+ * for decor elements such as the status bar.  Use {@link WindowMetrics#getSize()} to query the
+ * application window size.</li>
  * <li>The real display area specifies the part of the display that contains content
  * including the system decorations.  Even so, the real display area may be smaller than the
  * physical size of the display if the window manager is emulating a smaller display
@@ -97,7 +97,7 @@
     // We cache the app width and height properties briefly between calls
     // to getHeight() and getWidth() to ensure that applications perceive
     // consistent results when the size changes (most of the time).
-    // Applications should now be using getSize() instead.
+    // Applications should now be using WindowMetrics instead.
     private static final int CACHED_APP_SIZE_DURATION_MILLIS = 20;
     private long mLastCachedAppSizeUpdate;
     private int mCachedAppWidthCompat;
@@ -674,7 +674,10 @@
      * </p>
      *
      * @param outSize A {@link Point} object to receive the size information.
+     * @deprecated Use {@link WindowManager#getCurrentWindowMetrics()} to obtain an instance of
+     * {@link WindowMetrics} and use {@link WindowMetrics#getSize()} instead.
      */
+    @Deprecated
     public void getSize(Point outSize) {
         synchronized (this) {
             updateDisplayInfoLocked();
@@ -688,8 +691,10 @@
      * Gets the size of the display as a rectangle, in pixels.
      *
      * @param outSize A {@link Rect} object to receive the size information.
-     * @see #getSize(Point)
+     * @deprecated Use {@link WindowMetrics#getSize()} to get the dimensions of the application
+     * window area.
      */
+    @Deprecated
     public void getRectSize(Rect outSize) {
         synchronized (this) {
             updateDisplayInfoLocked();
@@ -752,7 +757,7 @@
     }
 
     /**
-     * @deprecated Use {@link #getSize(Point)} instead.
+     * @deprecated Use {@link WindowMetrics#getSize()} instead.
      */
     @Deprecated
     public int getWidth() {
@@ -763,7 +768,7 @@
     }
 
     /**
-     * @deprecated Use {@link #getSize(Point)} instead.
+     * @deprecated Use {@link WindowMetrics#getSize()} instead.
      */
     @Deprecated
     public int getHeight() {
@@ -1102,7 +1107,10 @@
      * </p>
      *
      * @param outMetrics A {@link DisplayMetrics} object to receive the metrics.
+     * @deprecated Use {@link WindowMetrics#getSize()} to get the dimensions of the application
+     * window area, and {@link Configuration#densityDpi} to get the current density.
      */
+    @Deprecated
     public void getMetrics(DisplayMetrics outMetrics) {
         synchronized (this) {
             updateDisplayInfoLocked();
@@ -1506,6 +1514,7 @@
         public HdrCapabilities(int[] supportedHdrTypes, float maxLuminance,
                 float maxAverageLuminance, float minLuminance) {
             mSupportedHdrTypes = supportedHdrTypes;
+            Arrays.sort(mSupportedHdrTypes);
             mMaxLuminance = maxLuminance;
             mMaxAverageLuminance = maxAverageLuminance;
             mMinLuminance = minLuminance;
diff --git a/core/java/android/view/DisplayCutout.java b/core/java/android/view/DisplayCutout.java
index d433591..31fc161 100644
--- a/core/java/android/view/DisplayCutout.java
+++ b/core/java/android/view/DisplayCutout.java
@@ -31,18 +31,12 @@
 import android.annotation.Nullable;
 import android.content.res.Resources;
 import android.graphics.Insets;
-import android.graphics.Matrix;
 import android.graphics.Path;
 import android.graphics.Rect;
-import android.graphics.RectF;
-import android.graphics.Region;
-import android.graphics.Region.Op;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.text.TextUtils;
-import android.util.Log;
 import android.util.Pair;
-import android.util.PathParser;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.R;
@@ -63,10 +57,6 @@
 public final class DisplayCutout {
 
     private static final String TAG = "DisplayCutout";
-    private static final String BOTTOM_MARKER = "@bottom";
-    private static final String DP_MARKER = "@dp";
-    private static final String RIGHT_MARKER = "@right";
-    private static final String LEFT_MARKER = "@left";
 
     /**
      * Category for overlays that allow emulating a display cutout on devices that don't have
@@ -703,77 +693,16 @@
             }
         }
 
-        Path p = null;
-        Rect boundTop = null;
-        Rect boundBottom = null;
-        Rect safeInset = new Rect();
-        String bottomSpec = null;
-        if (!TextUtils.isEmpty(spec)) {
-            spec = spec.trim();
-            final float offsetX;
-            if (spec.endsWith(RIGHT_MARKER)) {
-                offsetX = displayWidth;
-                spec = spec.substring(0, spec.length() - RIGHT_MARKER.length()).trim();
-            } else if (spec.endsWith(LEFT_MARKER)) {
-                offsetX = 0;
-                spec = spec.substring(0, spec.length() - LEFT_MARKER.length()).trim();
-            } else {
-                offsetX = displayWidth / 2f;
-            }
-            final boolean inDp = spec.endsWith(DP_MARKER);
-            if (inDp) {
-                spec = spec.substring(0, spec.length() - DP_MARKER.length());
-            }
+        spec = spec.trim();
 
-            if (spec.contains(BOTTOM_MARKER)) {
-                String[] splits = spec.split(BOTTOM_MARKER, 2);
-                spec = splits[0].trim();
-                bottomSpec = splits[1].trim();
-            }
+        CutoutSpecification cutoutSpec = new CutoutSpecification.Parser(density,
+                displayWidth, displayHeight).parse(spec);
+        Rect safeInset = cutoutSpec.getSafeInset();
+        final Rect boundLeft = cutoutSpec.getLeftBound();
+        final Rect boundTop = cutoutSpec.getTopBound();
+        final Rect boundRight = cutoutSpec.getRightBound();
+        final Rect boundBottom = cutoutSpec.getBottomBound();
 
-            final Matrix m = new Matrix();
-            final Region r = Region.obtain();
-            if (!spec.isEmpty()) {
-                try {
-                    p = PathParser.createPathFromPathData(spec);
-                } catch (Throwable e) {
-                    Log.wtf(TAG, "Could not inflate cutout: ", e);
-                }
-
-                if (p != null) {
-                    if (inDp) {
-                        m.postScale(density, density);
-                    }
-                    m.postTranslate(offsetX, 0);
-                    p.transform(m);
-
-                    boundTop = new Rect();
-                    toRectAndAddToRegion(p, r, boundTop);
-                    safeInset.top = boundTop.bottom;
-                }
-            }
-
-            if (bottomSpec != null) {
-                int bottomInset = 0;
-                Path bottomPath = null;
-                try {
-                    bottomPath = PathParser.createPathFromPathData(bottomSpec);
-                } catch (Throwable e) {
-                    Log.wtf(TAG, "Could not inflate bottom cutout: ", e);
-                }
-
-                if (bottomPath != null) {
-                    // Keep top transform
-                    m.postTranslate(0, displayHeight);
-                    bottomPath.transform(m);
-                    p.addPath(bottomPath);
-                    boundBottom = new Rect();
-                    toRectAndAddToRegion(bottomPath, r, boundBottom);
-                    bottomInset = displayHeight - boundBottom.top;
-                }
-                safeInset.bottom = bottomInset;
-            }
-        }
 
         if (!waterfallInsets.equals(Insets.NONE)) {
             safeInset.set(
@@ -784,9 +713,9 @@
         }
 
         final DisplayCutout cutout = new DisplayCutout(
-                safeInset, waterfallInsets, null /* boundLeft */, boundTop,
-                null /* boundRight */, boundBottom, false /* copyArguments */);
-        final Pair<Path, DisplayCutout> result = new Pair<>(p, cutout);
+                safeInset, waterfallInsets, boundLeft, boundTop,
+                boundRight, boundBottom, false /* copyArguments */);
+        final Pair<Path, DisplayCutout> result = new Pair<>(cutoutSpec.getPath(), cutout);
         synchronized (CACHE_LOCK) {
             sCachedSpec = spec;
             sCachedDisplayWidth = displayWidth;
@@ -798,14 +727,6 @@
         return result;
     }
 
-    private static void toRectAndAddToRegion(Path p, Region inoutRegion, Rect inoutRect) {
-        final RectF rectF = new RectF();
-        p.computeBounds(rectF, false /* unused */);
-        rectF.round(inoutRect);
-        inoutRegion.op(inoutRect, Op.UNION);
-    }
-
-
     private static Insets loadWaterfallInset(Resources res) {
         return Insets.of(
                 res.getDimensionPixelSize(R.dimen.waterfall_display_left_edge_size),
diff --git a/core/java/android/view/GestureDetector.java b/core/java/android/view/GestureDetector.java
index 4d71136..f6c72c4 100644
--- a/core/java/android/view/GestureDetector.java
+++ b/core/java/android/view/GestureDetector.java
@@ -16,12 +16,12 @@
 
 package android.view;
 
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DEEP_PRESS;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DOUBLE_TAP;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SCROLL;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SINGLE_TAP;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__UNKNOWN_CLASSIFICATION;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DEEP_PRESS;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DOUBLE_TAP;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SCROLL;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SINGLE_TAP;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__UNKNOWN_CLASSIFICATION;
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -29,7 +29,8 @@
 import android.os.Handler;
 import android.os.Message;
 import android.os.SystemClock;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Detects various gestures and events using the supplied {@link MotionEvent}s.
@@ -231,6 +232,7 @@
     private int mTouchSlopSquare;
     private int mDoubleTapTouchSlopSquare;
     private int mDoubleTapSlopSquare;
+    private float mAmbiguousGestureMultiplier;
     @UnsupportedAppUsage
     private int mMinimumFlingVelocity;
     private int mMaximumFlingVelocity;
@@ -452,6 +454,7 @@
             //noinspection deprecation
             mMinimumFlingVelocity = ViewConfiguration.getMinimumFlingVelocity();
             mMaximumFlingVelocity = ViewConfiguration.getMaximumFlingVelocity();
+            mAmbiguousGestureMultiplier = ViewConfiguration.getAmbiguousGestureMultiplier();
         } else {
             final ViewConfiguration configuration = ViewConfiguration.get(context);
             touchSlop = configuration.getScaledTouchSlop();
@@ -459,6 +462,7 @@
             doubleTapSlop = configuration.getScaledDoubleTapSlop();
             mMinimumFlingVelocity = configuration.getScaledMinimumFlingVelocity();
             mMaximumFlingVelocity = configuration.getScaledMaximumFlingVelocity();
+            mAmbiguousGestureMultiplier = configuration.getScaledAmbiguousGestureMultiplier();
         }
         mTouchSlopSquare = touchSlop * touchSlop;
         mDoubleTapTouchSlopSquare = doubleTapTouchSlop * doubleTapTouchSlop;
@@ -661,7 +665,6 @@
                             hasPendingLongPress && ambiguousGesture;
                     if (shouldInhibitDefaultAction) {
                         // Inhibit default long press
-                        final float multiplier = ViewConfiguration.getAmbiguousGestureMultiplier();
                         if (distance > slopSquare) {
                             // The default action here is to remove long press. But if the touch
                             // slop below gets increased, and we never exceed the modified touch
@@ -675,13 +678,14 @@
                                             LONG_PRESS,
                                             TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS,
                                             0 /* arg2 */),
-                                    ev.getDownTime() + (long) (longPressTimeout * multiplier));
+                                    ev.getDownTime()
+                                        + (long) (longPressTimeout * mAmbiguousGestureMultiplier));
                         }
                         // Inhibit default scroll. If a gesture is ambiguous, we prevent scroll
                         // until the gesture is resolved.
                         // However, for safety, simply increase the touch slop in case the
                         // classification is erroneous. Since the value is squared, multiply twice.
-                        slopSquare *= multiplier * multiplier;
+                        slopSquare *= mAmbiguousGestureMultiplier * mAmbiguousGestureMultiplier;
                     }
 
                     if (distance > slopSquare) {
@@ -884,8 +888,8 @@
             mHasRecordedClassification = true;
             return;
         }
-        StatsLog.write(
-                StatsLog.TOUCH_GESTURE_CLASSIFIED,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED,
                 getClass().getName(),
                 classification,
                 (int) (SystemClock.uptimeMillis() - mCurrentMotionEvent.getDownTime()),
diff --git a/core/java/android/view/ITaskOrganizer.aidl b/core/java/android/view/ITaskOrganizer.aidl
index e92aafe..5ccdd30 100644
--- a/core/java/android/view/ITaskOrganizer.aidl
+++ b/core/java/android/view/ITaskOrganizer.aidl
@@ -26,8 +26,7 @@
  * {@hide}
  */
 oneway interface ITaskOrganizer {
-    void taskAppeared(in IWindowContainer container,
-        in ActivityManager.RunningTaskInfo taskInfo);
+    void taskAppeared(in ActivityManager.RunningTaskInfo taskInfo);
     void taskVanished(in IWindowContainer container);
 
     /**
@@ -35,4 +34,19 @@
      * ActivityTaskManagerService#applyTaskOrganizerTransaction
      */
     void transactionReady(int id, in SurfaceControl.Transaction t);
+
+    /**
+     * Will fire when core attributes of a Task's info change. Relevant properties include the
+     * {@link WindowConfiguration.ActivityType} and whether it is resizable.
+     *
+     * This is used, for example, during split-screen. The flow for starting is: Something sends an
+     * Intent with windowingmode. Then WM finds a matching root task and launches the new task into
+     * it. This causes the root task's info to change because now it has a task when it didn't
+     * before. The default Divider implementation interprets this as a request to enter
+     * split-screen mode and will move all other Tasks into the secondary root task. When WM
+     * applies this change, it triggers an info change in the secondary root task because it now
+     * has children. The Divider impl looks at the info and can see that the secondary root task
+     * has adopted an ActivityType of HOME and proceeds to show the minimized dock UX.
+     */
+    void onTaskInfoChanged(in ActivityManager.RunningTaskInfo info);
 }
\ No newline at end of file
diff --git a/core/java/android/view/IWindowManager.aidl b/core/java/android/view/IWindowManager.aidl
index e1f1581..1730347 100644
--- a/core/java/android/view/IWindowManager.aidl
+++ b/core/java/android/view/IWindowManager.aidl
@@ -97,6 +97,8 @@
 
     IWindowSession openSession(in IWindowSessionCallback callback);
 
+    boolean useBLAST();
+
     @UnsupportedAppUsage
     void getInitialDisplaySize(int displayId, out Point size);
     @UnsupportedAppUsage
@@ -120,12 +122,14 @@
      *
      * @param token Token to be registered.
      * @param type Window type to be used with this token.
+     * @param options A bundle used to pass window-related options.
      * @param displayId The ID of the display where this token should be added.
      * @param packageName The name of package to request to add window token.
      * @return {@link WindowManagerGlobal#ADD_OKAY} if the addition was successful, an error code
      *         otherwise.
      */
-    int addWindowContextToken(IBinder token, int type, int displayId, String packageName);
+    int addWindowTokenWithOptions(IBinder token, int type, int displayId, in Bundle options,
+            String packageName);
     void addWindowToken(IBinder token, int type, int displayId);
     void removeWindowToken(IBinder token, int displayId);
     void prepareAppTransition(int transit, boolean alwaysKeepCurrent);
diff --git a/core/java/android/view/IWindowSession.aidl b/core/java/android/view/IWindowSession.aidl
index 1677357d..91000a9 100644
--- a/core/java/android/view/IWindowSession.aidl
+++ b/core/java/android/view/IWindowSession.aidl
@@ -318,5 +318,11 @@
     * an input channel where the client can receive input.
     */
     void grantInputChannel(int displayId, in SurfaceControl surface, in IWindow window,
-            in IBinder hostInputToken, out InputChannel outInputChannel);
+            in IBinder hostInputToken, int flags, out InputChannel outInputChannel);
+
+    /**
+     * Update the flags on an input channel associated with a particular surface.
+     */
+    void updateInputChannel(in IBinder channelToken, int displayId, in SurfaceControl surface,
+            int flags);
 }
diff --git a/core/java/android/view/ImeFocusController.java b/core/java/android/view/ImeFocusController.java
index 8d58ee8..67e88a5 100644
--- a/core/java/android/view/ImeFocusController.java
+++ b/core/java/android/view/ImeFocusController.java
@@ -253,4 +253,12 @@
     public void setNextServedView(View view) {
         mNextServedView = view;
     }
+
+    /**
+     * Indicates whether the view's window has IME focused.
+     */
+    @UiThread
+    boolean hasImeFocus() {
+        return mHasImeFocus;
+    }
 }
diff --git a/core/java/android/view/ImeInsetsSourceConsumer.java b/core/java/android/view/ImeInsetsSourceConsumer.java
index 2e37751..f226369 100644
--- a/core/java/android/view/ImeInsetsSourceConsumer.java
+++ b/core/java/android/view/ImeInsetsSourceConsumer.java
@@ -17,7 +17,9 @@
 package android.view;
 
 import static android.view.InsetsState.ITYPE_IME;
+import static android.view.InsetsState.toPublicType;
 
+import android.annotation.Nullable;
 import android.inputmethodservice.InputMethodService;
 import android.os.Parcel;
 import android.text.TextUtils;
@@ -43,6 +45,12 @@
      */
     private boolean mShowOnNextImeRender;
 
+    /**
+     * Tracks whether we have an outstanding request from the IME to show, but weren't able to
+     * execute it because we didn't have control yet.
+     */
+    private boolean mImeRequestedShow;
+
     public ImeInsetsSourceConsumer(
             InsetsState state, Supplier<Transaction> transactionSupplier,
             InsetsController controller) {
@@ -80,6 +88,15 @@
     public void onWindowFocusLost() {
         super.onWindowFocusLost();
         getImm().unregisterImeConsumer(this);
+        mImeRequestedShow = false;
+    }
+
+    @Override
+    public void show(boolean fromIme) {
+        super.show(fromIme);
+        if (fromIme) {
+            mImeRequestedShow = true;
+        }
     }
 
     /**
@@ -90,7 +107,11 @@
     public @ShowResult int requestShow(boolean fromIme) {
         // TODO: ResultReceiver for IME.
         // TODO: Set mShowOnNextImeRender to automatically show IME and guard it with a flag.
-        if (fromIme) {
+
+        // If we had a request before to show from IME (tracked with mImeRequestedShow), reaching
+        // this code here means that we now got control, so we can start the animation immediately.
+        if (fromIme || mImeRequestedShow) {
+            mImeRequestedShow = false;
             return ShowResult.SHOW_IMMEDIATELY;
         }
 
@@ -106,6 +127,15 @@
         getImm().notifyImeHidden();
     }
 
+    @Override
+    public void setControl(@Nullable InsetsSourceControl control, int[] showTypes,
+            int[] hideTypes) {
+        super.setControl(control, showTypes, hideTypes);
+        if (control == null) {
+            hide();
+        }
+    }
+
     private boolean isDummyOrEmptyEditor(EditorInfo info) {
         // TODO(b/123044812): Handle dummy input gracefully in IME Insets API
         return info == null || (info.fieldId <= 0 && info.inputType <= 0);
diff --git a/core/java/android/view/InsetsAnimationControlImpl.java b/core/java/android/view/InsetsAnimationControlImpl.java
index e863aa0..0653b06 100644
--- a/core/java/android/view/InsetsAnimationControlImpl.java
+++ b/core/java/android/view/InsetsAnimationControlImpl.java
@@ -16,8 +16,6 @@
 
 package android.view;
 
-import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_HIDDEN;
-import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_SHOWN;
 import static android.view.InsetsState.ISIDE_BOTTOM;
 import static android.view.InsetsState.ISIDE_FLOATING;
 import static android.view.InsetsState.ISIDE_LEFT;
@@ -188,7 +186,7 @@
 
     @Override
     public void finish(boolean shown) {
-        if (mCancelled) {
+        if (mCancelled || mFinished) {
             return;
         }
         setInsetsAndAlpha(shown ? mShownInsets : mHiddenInsets, 1f /* alpha */, 1f /* fraction */);
@@ -210,6 +208,10 @@
         mListener.onCancelled();
     }
 
+    public boolean isCancelled() {
+        return mCancelled;
+    }
+
     InsetsAnimation getAnimation() {
         return mAnimation;
     }
@@ -272,8 +274,8 @@
             if (leash != null) {
                 // TODO: use a better interpolation for fade.
                 alpha = mFade ? ((float) maxInset / inset * 0.3f + 0.7f) : alpha;
-                surfaceParams.add(new SurfaceParams(leash, alpha, mTmpMatrix,
-                        null /* windowCrop */, 0 /* layer */, 0f /* cornerRadius*/,
+                surfaceParams.add(new SurfaceParams(leash, side == ISIDE_FLOATING ? 1 : alpha,
+                        mTmpMatrix, null /* windowCrop */, 0 /* layer */, 0f /* cornerRadius*/,
                         side == ISIDE_FLOATING ? state.getSource(source.getType()).isVisible()
                                 : inset != 0 /* visible */));
             }
diff --git a/core/java/android/view/InsetsController.java b/core/java/android/view/InsetsController.java
index 6f76497..9cd6050e 100644
--- a/core/java/android/view/InsetsController.java
+++ b/core/java/android/view/InsetsController.java
@@ -32,6 +32,7 @@
 import android.annotation.Nullable;
 import android.graphics.Insets;
 import android.graphics.Rect;
+import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.RemoteException;
 import android.util.ArraySet;
@@ -69,7 +70,7 @@
     private static final int ANIMATION_DURATION_HIDE_MS = 340;
     private static final int PENDING_CONTROL_TIMEOUT_MS = 2000;
 
-    static final Interpolator INTERPOLATOR = new PathInterpolator(0.4f, 0f, 0.2f, 1f);
+    public static final Interpolator INTERPOLATOR = new PathInterpolator(0.4f, 0f, 0.2f, 1f);
 
     /**
      * Layout mode during insets animation: The views should be laid out as if the changing inset
@@ -77,7 +78,7 @@
      * be called as if the changing insets types are shown, which will result in the views being
      * laid out as if the insets are fully shown.
      */
-    static final int LAYOUT_INSETS_DURING_ANIMATION_SHOWN = 0;
+    public static final int LAYOUT_INSETS_DURING_ANIMATION_SHOWN = 0;
 
     /**
      * Layout mode during insets animation: The views should be laid out as if the changing inset
@@ -85,7 +86,7 @@
      * be called as if the changing insets types are hidden, which will result in the views being
      * laid out as if the insets are fully hidden.
      */
-    static final int LAYOUT_INSETS_DURING_ANIMATION_HIDDEN = 1;
+    public static final int LAYOUT_INSETS_DURING_ANIMATION_HIDDEN = 1;
 
     /**
      * Determines the behavior of how the views should be laid out during an insets animation that
@@ -148,7 +149,7 @@
         @Override
         public void set(WindowInsetsAnimationController controller, Insets value) {
             controller.setInsetsAndAlpha(
-                    value, 1f /* alpha */, (((DefaultAnimationControlListener)
+                    value, 1f /* alpha */, (((InternalAnimationControlListener)
                             ((InsetsAnimationControlImpl) controller).getListener())
                                     .getRawFraction()));
         }
@@ -165,7 +166,7 @@
         private ObjectAnimator mAnimator;
         protected boolean mShow;
 
-        InternalAnimationControlListener(boolean show) {
+        public InternalAnimationControlListener(boolean show) {
             mShow = show;
         }
 
@@ -189,9 +190,7 @@
                     onAnimationFinish();
                 }
             });
-            setStartingAnimation(true);
             mAnimator.start();
-            setStartingAnimation(false);
         }
 
         @Override
@@ -202,9 +201,6 @@
             }
         }
 
-        protected void setStartingAnimation(boolean startingAnimation) {
-        }
-
         protected void onAnimationFinish() {
             mController.finish(mShow);
         }
@@ -213,7 +209,10 @@
             return (float) mAnimator.getCurrentPlayTime() / mAnimator.getDuration();
         }
 
-        protected long getDurationMs() {
+        /**
+         * To get the animation duration in MS.
+         */
+        public long getDurationMs() {
             if (mAnimator != null) {
                 return mAnimator.getDuration();
             }
@@ -235,16 +234,6 @@
         final @AnimationType int type;
     }
 
-    private class DefaultAnimationControlListener extends InternalAnimationControlListener {
-        DefaultAnimationControlListener(boolean show) {
-            super(show);
-        }
-        
-        @Override
-        protected void setStartingAnimation(boolean startingAnimation) {
-            mStartingAnimation = startingAnimation;
-        }
-    }
     /**
      * Represents a control request that we had to defer because we are waiting for the IME to
      * process our show request.
@@ -253,13 +242,15 @@
 
         PendingControlRequest(@InsetsType int types, WindowInsetsAnimationControlListener listener,
                 long durationMs, Interpolator interpolator, @AnimationType int animationType,
-                @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation) {
+                @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation,
+                CancellationSignal cancellationSignal) {
             this.types = types;
             this.listener = listener;
             this.durationMs = durationMs;
             this.interpolator = interpolator;
             this.animationType = animationType;
             this.layoutInsetsDuringAnimation = layoutInsetsDuringAnimation;
+            this.cancellationSignal = cancellationSignal;
         }
 
         final @InsetsType int types;
@@ -268,12 +259,13 @@
         final Interpolator interpolator;
         final @AnimationType int animationType;
         final @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation;
+        final CancellationSignal cancellationSignal;
     }
 
     private final String TAG = "InsetsControllerImpl";
 
     private final InsetsState mState = new InsetsState();
-    private final InsetsState mTmpState = new InsetsState();
+    private final InsetsState mLastDispachedState = new InsetsState();
 
     private final Rect mFrame = new Rect();
     private final BiFunction<InsetsController, Integer, InsetsSourceConsumer> mConsumerCreator;
@@ -367,15 +359,20 @@
         return mState;
     }
 
-    boolean onStateChanged(InsetsState state) {
-        if (mState.equals(state)) {
+    public InsetsState getLastDispatchedState() {
+        return mLastDispachedState;
+    }
+
+    @VisibleForTesting
+    public boolean onStateChanged(InsetsState state) {
+        if (mState.equals(state) && mLastDispachedState.equals(state)) {
             return false;
         }
         mState.set(state);
-        mTmpState.set(state, true /* copySources */);
+        mLastDispachedState.set(state, true /* copySources */);
         applyLocalVisibilityOverride();
         mViewRoot.notifyInsetsChanged();
-        if (!mState.equals(mTmpState)) {
+        if (!mState.equals(mLastDispachedState)) {
             sendStateToWindowManager();
         }
         return true;
@@ -419,6 +416,9 @@
             }
         }
 
+        int[] showTypes = new int[1];
+        int[] hideTypes = new int[1];
+
         // Ensure to update all existing source consumers
         for (int i = mSourceConsumers.size() - 1; i >= 0; i--) {
             final InsetsSourceConsumer consumer = mSourceConsumers.valueAt(i);
@@ -426,15 +426,23 @@
 
             // control may be null, but we still need to update the control to null if it got
             // revoked.
-            consumer.setControl(control);
+            consumer.setControl(control, showTypes, hideTypes);
         }
 
         // Ensure to create source consumers if not available yet.
         for (int i = mTmpControlArray.size() - 1; i >= 0; i--) {
             final InsetsSourceControl control = mTmpControlArray.valueAt(i);
-            getSourceConsumer(control.getType()).setControl(control);
+            InsetsSourceConsumer consumer = getSourceConsumer(control.getType());
+            consumer.setControl(control, showTypes, hideTypes);
+
         }
         mTmpControlArray.clear();
+        if (showTypes[0] != 0) {
+            applyAnimation(showTypes[0], true /* show */, false /* fromIme */);
+        }
+        if (hideTypes[0] != 0) {
+            applyAnimation(hideTypes[0], false /* show */, false /* fromIme */);
+        }
     }
 
     @Override
@@ -450,10 +458,13 @@
             PendingControlRequest pendingRequest = mPendingImeControlRequest;
             mPendingImeControlRequest = null;
             mHandler.removeCallbacks(mPendingControlTimeout);
-            controlAnimationUnchecked(pendingRequest.types, pendingRequest.listener, mFrame,
+            CancellationSignal cancellationSignal = controlAnimationUnchecked(
+                    pendingRequest.types,
+                    pendingRequest.listener, mFrame,
                     true /* fromIme */, pendingRequest.durationMs, pendingRequest.interpolator,
                     false /* fade */, pendingRequest.animationType,
                     pendingRequest.layoutInsetsDuringAnimation);
+            pendingRequest.cancellationSignal.setOnCancelListener(cancellationSignal::cancel);
             return;
         }
 
@@ -465,7 +476,7 @@
             @InternalInsetsType int internalType = internalTypes.valueAt(i);
             @AnimationType int animationType = getAnimationType(internalType);
             InsetsSourceConsumer consumer = getSourceConsumer(internalType);
-            if (mState.getSource(internalType).isVisible() && animationType == ANIMATION_TYPE_NONE
+            if (consumer.isRequestedVisible() && animationType == ANIMATION_TYPE_NONE
                     || animationType == ANIMATION_TYPE_SHOW) {
                 // no-op: already shown or animating in (because window visibility is
                 // applied before starting animation).
@@ -488,7 +499,7 @@
             @InternalInsetsType int internalType = internalTypes.valueAt(i);
             @AnimationType int animationType = getAnimationType(internalType);
             InsetsSourceConsumer consumer = getSourceConsumer(internalType);
-            if (!mState.getSource(internalType).isVisible() && animationType == ANIMATION_TYPE_NONE
+            if (!consumer.isRequestedVisible() && animationType == ANIMATION_TYPE_NONE
                     || animationType == ANIMATION_TYPE_HIDE) {
                 // no-op: already hidden or animating out.
                 continue;
@@ -499,35 +510,39 @@
     }
 
     @Override
-    public void controlWindowInsetsAnimation(@InsetsType int types, long durationMs,
+    public CancellationSignal controlWindowInsetsAnimation(@InsetsType int types, long durationMs,
             @Nullable Interpolator interpolator,
             @NonNull WindowInsetsAnimationControlListener listener) {
-        controlWindowInsetsAnimation(types, listener, false /* fromIme */, durationMs, interpolator,
-                ANIMATION_TYPE_USER);
+        return controlWindowInsetsAnimation(types, listener, false /* fromIme */, durationMs,
+                interpolator, ANIMATION_TYPE_USER);
     }
 
-    private void controlWindowInsetsAnimation(@InsetsType int types,
+    private CancellationSignal controlWindowInsetsAnimation(@InsetsType int types,
             WindowInsetsAnimationControlListener listener, boolean fromIme, long durationMs,
             @Nullable Interpolator interpolator, @AnimationType int animationType) {
         // If the frame of our window doesn't span the entire display, the control API makes very
         // little sense, as we don't deal with negative insets. So just cancel immediately.
         if (!mState.getDisplayFrame().equals(mFrame)) {
             listener.onCancelled();
-            return;
+            CancellationSignal cancellationSignal = new CancellationSignal();
+            cancellationSignal.cancel();
+            return cancellationSignal;
         }
-        controlAnimationUnchecked(types, listener, mFrame, fromIme, durationMs, interpolator,
+        return controlAnimationUnchecked(types, listener, mFrame, fromIme, durationMs, interpolator,
                 false /* fade */, animationType, getLayoutInsetsDuringAnimationMode(types));
     }
 
-    private void controlAnimationUnchecked(@InsetsType int types,
+    private CancellationSignal controlAnimationUnchecked(@InsetsType int types,
             WindowInsetsAnimationControlListener listener, Rect frame, boolean fromIme,
             long durationMs, Interpolator interpolator, boolean fade,
             @AnimationType int animationType,
             @LayoutInsetsDuringAnimation int layoutInsetsDuringAnimation) {
+        CancellationSignal cancellationSignal = new CancellationSignal();
         if (types == 0) {
             // nothing to animate.
             listener.onCancelled();
-            return;
+            cancellationSignal.cancel();
+            return cancellationSignal;
         }
         cancelExistingControllers(types);
 
@@ -535,44 +550,57 @@
         final SparseArray<InsetsSourceControl> controls = new SparseArray<>();
 
         Pair<Integer, Boolean> typesReadyPair = collectSourceControls(
-                fromIme, internalTypes, controls);
+                fromIme, internalTypes, controls, animationType);
         int typesReady = typesReadyPair.first;
         boolean imeReady = typesReadyPair.second;
         if (!imeReady) {
             // IME isn't ready, all requested types will be animated once IME is ready
             abortPendingImeControlRequest();
-            mPendingImeControlRequest = new PendingControlRequest(types, listener, durationMs,
-                    interpolator, animationType, layoutInsetsDuringAnimation);
+            final PendingControlRequest request = new PendingControlRequest(types,
+                    listener, durationMs,
+                    interpolator, animationType, layoutInsetsDuringAnimation, cancellationSignal);
+            mPendingImeControlRequest = request;
             mHandler.postDelayed(mPendingControlTimeout, PENDING_CONTROL_TIMEOUT_MS);
-            return;
+            cancellationSignal.setOnCancelListener(() -> {
+                if (mPendingImeControlRequest == request) {
+                    abortPendingImeControlRequest();
+                }
+            });
+            return cancellationSignal;
         }
 
         if (typesReady == 0) {
             listener.onCancelled();
-            return;
+            cancellationSignal.cancel();
+            return cancellationSignal;
         }
 
         final InsetsAnimationControlImpl controller = new InsetsAnimationControlImpl(controls,
                 frame, mState, listener, typesReady, this, durationMs, interpolator, fade,
                 layoutInsetsDuringAnimation);
         mRunningAnimations.add(new RunningAnimation(controller, animationType));
+        cancellationSignal.setOnCancelListener(controller::onCancelled);
+        return cancellationSignal;
     }
 
     /**
      * @return Pair of (types ready to animate, IME ready to animate).
      */
     private Pair<Integer, Boolean> collectSourceControls(boolean fromIme,
-            ArraySet<Integer> internalTypes, SparseArray<InsetsSourceControl> controls) {
+            ArraySet<Integer> internalTypes, SparseArray<InsetsSourceControl> controls,
+            @AnimationType int animationType) {
         int typesReady = 0;
         boolean imeReady = true;
         for (int i = internalTypes.size() - 1; i >= 0; i--) {
             InsetsSourceConsumer consumer = getSourceConsumer(internalTypes.valueAt(i));
-            boolean setVisible = !consumer.isRequestedVisible();
-            if (setVisible) {
+            boolean show = animationType == ANIMATION_TYPE_SHOW
+                    || animationType == ANIMATION_TYPE_USER;
+            boolean canRun = false;
+            if (show) {
                 // Show request
                 switch(consumer.requestShow(fromIme)) {
                     case ShowResult.SHOW_IMMEDIATELY:
-                        typesReady |= InsetsState.toPublicType(consumer.getType());
+                        canRun = true;
                         break;
                     case ShowResult.IME_SHOW_DELAYED:
                         imeReady = false;
@@ -589,11 +617,22 @@
                 if (!fromIme) {
                     consumer.notifyHidden();
                 }
-                typesReady |= InsetsState.toPublicType(consumer.getType());
+                canRun = true;
+            }
+            if (!canRun) {
+                continue;
             }
             final InsetsSourceControl control = consumer.getControl();
             if (control != null) {
                 controls.put(consumer.getType(), control);
+                typesReady |= toPublicType(consumer.getType());
+            } else if (animationType == ANIMATION_TYPE_SHOW) {
+
+                // We don't have a control at the moment. However, we still want to update requested
+                // visibility state such that in case we get control, we can apply show animation.
+                consumer.show(fromIme);
+            } else if (animationType == ANIMATION_TYPE_HIDE) {
+                consumer.hide();
             }
         }
         return new Pair<>(typesReady, imeReady);
@@ -661,7 +700,14 @@
             }
             mApplier = new SyncRtSurfaceTransactionApplier(mViewRoot.mView);
         }
-        mApplier.scheduleApply(params);
+        if (mViewRoot.mView.isHardwareAccelerated()) {
+            mApplier.scheduleApply(params);
+        } else {
+            // Window doesn't support hardware acceleration, no synchronization for now.
+            // TODO(b/149342281): use mViewRoot.mSurface.getNextFrameNumber() to sync on every
+            //  frame instead.
+            mApplier.applyParams(new Transaction(), -1 /* frame */, params);
+        }
     }
 
     void notifyControlRevoked(InsetsSourceConsumer consumer) {
@@ -788,7 +834,8 @@
             return;
         }
 
-        final DefaultAnimationControlListener listener = new DefaultAnimationControlListener(show);
+        final InternalAnimationControlListener listener =
+                new InternalAnimationControlListener(show);
         // Show/hide animations always need to be relative to the display frame, in order that shown
         // and hidden state insets are correct.
         controlAnimationUnchecked(
@@ -808,7 +855,7 @@
     private void showDirectly(@InsetsType int types) {
         final ArraySet<Integer> internalTypes = InsetsState.toInternalType(types);
         for (int i = internalTypes.size() - 1; i >= 0; i--) {
-            getSourceConsumer(internalTypes.valueAt(i)).show();
+            getSourceConsumer(internalTypes.valueAt(i)).show(false /* fromIme */);
         }
     }
 
@@ -835,13 +882,21 @@
         } else {
             hideDirectly(types);
         }
+        if (mViewRoot.mView == null) {
+            return;
+        }
         mViewRoot.mView.dispatchWindowInsetsAnimationPrepare(animation);
         mViewRoot.mView.getViewTreeObserver().addOnPreDrawListener(new OnPreDrawListener() {
             @Override
             public boolean onPreDraw() {
                 mViewRoot.mView.getViewTreeObserver().removeOnPreDrawListener(this);
+                if (controller.isCancelled()) {
+                    return true;
+                }
                 mViewRoot.mView.dispatchWindowInsetsAnimationStart(animation, bounds);
+                mStartingAnimation = true;
                 listener.onReady(controller, types);
+                mStartingAnimation = false;
                 return true;
             }
         });
diff --git a/core/java/android/view/InsetsSource.java b/core/java/android/view/InsetsSource.java
index 67ccfd6..6caa4fe 100644
--- a/core/java/android/view/InsetsSource.java
+++ b/core/java/android/view/InsetsSource.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import static android.view.InsetsState.ITYPE_IME;
+
 import android.annotation.Nullable;
 import android.graphics.Insets;
 import android.graphics.Rect;
@@ -51,6 +53,9 @@
         mType = other.mType;
         mFrame = new Rect(other.mFrame);
         mVisible = other.mVisible;
+        mVisibleFrame = other.mVisibleFrame != null
+                ? new Rect(other.mVisibleFrame)
+                : null;
     }
 
     public void setFrame(Rect frame) {
@@ -109,6 +114,12 @@
             return Insets.NONE;
         }
 
+        // TODO: Currently, non-floating IME always intersects at bottom due to issues with cutout.
+        // However, we should let the policy decide from the server.
+        if (getType() == ITYPE_IME) {
+            return Insets.of(0, 0, 0, mTmpFrame.height());
+        }
+
         // Intersecting at top/bottom
         if (mTmpFrame.width() == relativeFrame.width()) {
             if (mTmpFrame.top == relativeFrame.top) {
@@ -157,6 +168,7 @@
     public int hashCode() {
         int result = mType;
         result = 31 * result + mFrame.hashCode();
+        result = 31 * result + (mVisibleFrame != null ? mVisibleFrame.hashCode() : 0);
         result = 31 * result + (mVisible ? 1 : 0);
         return result;
     }
@@ -181,6 +193,15 @@
         dest.writeBoolean(mVisible);
     }
 
+    @Override
+    public String toString() {
+        return "InsetsSource: {"
+                + "mType=" + InsetsState.typeToString(mType)
+                + ", mFrame=" + mFrame.toShortString()
+                + ", mVisible=" + mVisible
+                + "}";
+    }
+
     public static final @android.annotation.NonNull Creator<InsetsSource> CREATOR = new Creator<InsetsSource>() {
 
         public InsetsSource createFromParcel(Parcel in) {
diff --git a/core/java/android/view/InsetsSourceConsumer.java b/core/java/android/view/InsetsSourceConsumer.java
index ddfd38c..e6497c0 100644
--- a/core/java/android/view/InsetsSourceConsumer.java
+++ b/core/java/android/view/InsetsSourceConsumer.java
@@ -17,11 +17,14 @@
 package android.view;
 
 import static android.view.InsetsController.ANIMATION_TYPE_NONE;
+import static android.view.InsetsState.toPublicType;
 
 import android.annotation.IntDef;
 import android.annotation.Nullable;
+import android.util.MutableShort;
 import android.view.InsetsState.InternalInsetsType;
 import android.view.SurfaceControl.Transaction;
+import android.view.WindowInsets.Type.InsetsType;
 
 import com.android.internal.annotations.VisibleForTesting;
 
@@ -71,18 +74,48 @@
         mRequestedVisible = InsetsState.getDefaultVisibility(type);
     }
 
-    public void setControl(@Nullable InsetsSourceControl control) {
+    /**
+     * Updates the control delivered from the server.
+
+     * @param showTypes An integer array with a single entry that determines which types a show
+     *                  animation should be run after setting the control.
+     * @param hideTypes An integer array with a single entry that determines which types a hide
+     *                  animation should be run after setting the control.
+     */
+    public void setControl(@Nullable InsetsSourceControl control,
+            @InsetsType int[] showTypes, @InsetsType int[] hideTypes) {
         if (mSourceControl == control) {
             return;
         }
         mSourceControl = control;
-        applyHiddenToControl();
+
+        // We are loosing control
+        if (mSourceControl == null) {
+            mController.notifyControlRevoked(this);
+
+            // Restore server visibility.
+            mState.getSource(getType()).setVisible(
+                    mController.getLastDispatchedState().getSource(getType()).isVisible());
+            applyLocalVisibilityOverride();
+            return;
+        }
+
+        // We are gaining control, and need to run an animation since previous state didn't match
+        if (mRequestedVisible != mState.getSource(mType).isVisible()) {
+            if (mRequestedVisible) {
+                showTypes[0] |= toPublicType(getType());
+            } else {
+                hideTypes[0] |= toPublicType(getType());
+            }
+            return;
+        }
+
+        // We are gaining control, but don't need to run an animation. However make sure that the
+        // leash visibility is still up to date.
         if (applyLocalVisibilityOverride()) {
             mController.notifyVisibilityChanged();
         }
-        if (mSourceControl == null) {
-            mController.notifyControlRevoked(this);
-        }
+        applyHiddenToControl();
     }
 
     @VisibleForTesting
@@ -95,7 +128,7 @@
     }
 
     @VisibleForTesting
-    public void show() {
+    public void show(boolean fromIme) {
         setRequestedVisible(true);
     }
 
@@ -172,17 +205,14 @@
      * the moment.
      */
     private void setRequestedVisible(boolean requestedVisible) {
-        if (mRequestedVisible == requestedVisible) {
-            return;
-        }
         mRequestedVisible = requestedVisible;
-        applyLocalVisibilityOverride();
-        mController.notifyVisibilityChanged();
+        if (applyLocalVisibilityOverride()) {
+            mController.notifyVisibilityChanged();
+        }
     }
 
     private void applyHiddenToControl() {
-        if (mSourceControl == null || mSourceControl.getLeash() == null
-                || mController.getAnimationType(mType) != ANIMATION_TYPE_NONE) {
+        if (mSourceControl == null || mSourceControl.getLeash() == null) {
             return;
         }
 
diff --git a/core/java/android/view/InsetsState.java b/core/java/android/view/InsetsState.java
index bd19799..8648682 100644
--- a/core/java/android/view/InsetsState.java
+++ b/core/java/android/view/InsetsState.java
@@ -21,7 +21,6 @@
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_IME;
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
 import static android.view.ViewRootImpl.sNewInsetsMode;
-import static android.view.WindowInsets.Type.IME;
 import static android.view.WindowInsets.Type.MANDATORY_SYSTEM_GESTURES;
 import static android.view.WindowInsets.Type.SIZE;
 import static android.view.WindowInsets.Type.SYSTEM_GESTURES;
@@ -43,7 +42,6 @@
 import android.util.SparseIntArray;
 import android.view.WindowInsets.Type;
 import android.view.WindowInsets.Type.InsetsType;
-import android.view.WindowManager.LayoutParams;
 import android.view.WindowManager.LayoutParams.SoftInputModeFlags;
 
 import java.io.PrintWriter;
@@ -366,7 +364,12 @@
         return result;
     }
 
-    static @Type.InsetsType int toPublicType(@InternalInsetsType int type) {
+    /**
+     * Converting a internal type to the public type.
+     * @param type internal insets type, {@code InternalInsetsType}.
+     * @return public insets type, {@code Type.InsetsType}.
+     */
+    public static @Type.InsetsType int toPublicType(@InternalInsetsType int type) {
         switch (type) {
             case ITYPE_STATUS_BAR:
                 return Type.STATUS_BARS;
@@ -510,5 +513,13 @@
             mSources.put(source.getType(), source);
         }
     }
+
+    @Override
+    public String toString() {
+        return "InsetsState: {"
+                + "mDisplayFrame=" + mDisplayFrame
+                + ", mSources=" + mSources
+                + "}";
+    }
 }
 
diff --git a/core/java/android/view/Surface.java b/core/java/android/view/Surface.java
index 78a080d..4ac6a66 100644
--- a/core/java/android/view/Surface.java
+++ b/core/java/android/view/Surface.java
@@ -258,14 +258,14 @@
      */
     public void release() {
         synchronized (mLock) {
-            if (mNativeObject != 0) {
-                nativeRelease(mNativeObject);
-                setNativeObjectLocked(0);
-            }
             if (mHwuiContext != null) {
                 mHwuiContext.destroy();
                 mHwuiContext = null;
             }
+            if (mNativeObject != 0) {
+                nativeRelease(mNativeObject);
+                setNativeObjectLocked(0);
+            }
         }
     }
 
diff --git a/core/java/android/view/SurfaceControl.java b/core/java/android/view/SurfaceControl.java
index bee05a9..fe9e36e 100644
--- a/core/java/android/view/SurfaceControl.java
+++ b/core/java/android/view/SurfaceControl.java
@@ -152,7 +152,8 @@
             int L, int T, int R, int B);
     private static native void nativeSetDisplaySize(long transactionObj, IBinder displayToken,
             int width, int height);
-    private static native SurfaceControl.PhysicalDisplayInfo[] nativeGetDisplayConfigs(
+    private static native SurfaceControl.DisplayInfo nativeGetDisplayInfo(IBinder displayToken);
+    private static native SurfaceControl.DisplayConfig[] nativeGetDisplayConfigs(
             IBinder displayToken);
     private static native DisplayedContentSamplingAttributes
             nativeGetDisplayedContentSamplingAttributes(IBinder displayToken);
@@ -1278,140 +1279,45 @@
                 Integer.toHexString(System.identityHashCode(this));
     }
 
-    /*
-     * set display parameters.
-     * needs to be inside open/closeTransaction block
-     */
-
     /**
-     * Describes the properties of a physical display known to surface flinger.
+     * Immutable information about physical display.
+     *
      * @hide
      */
-    public static final class PhysicalDisplayInfo {
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public int width;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public int height;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public float refreshRate;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
+    public static final class DisplayInfo {
         public float density;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public float xDpi;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public float yDpi;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
         public boolean secure;
 
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public long appVsyncOffsetNanos;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public long presentationDeadlineNanos;
-
-        /**
-         * @hide
-         */
-        @UnsupportedAppUsage
-        public PhysicalDisplayInfo() {
-        }
-
-        /**
-         * @hide
-         */
-        public PhysicalDisplayInfo(PhysicalDisplayInfo other) {
-            copyFrom(other);
-        }
-
-        /**
-         * @hide
-         */
-        @Override
-        public boolean equals(Object o) {
-            return o instanceof PhysicalDisplayInfo && equals((PhysicalDisplayInfo)o);
-        }
-
-        /**
-         * @hide
-         */
-        public boolean equals(PhysicalDisplayInfo other) {
-            return other != null
-                    && width == other.width
-                    && height == other.height
-                    && refreshRate == other.refreshRate
-                    && density == other.density
-                    && xDpi == other.xDpi
-                    && yDpi == other.yDpi
-                    && secure == other.secure
-                    && appVsyncOffsetNanos == other.appVsyncOffsetNanos
-                    && presentationDeadlineNanos == other.presentationDeadlineNanos;
-        }
-
-        /**
-         * @hide
-         */
-        @Override
-        public int hashCode() {
-            return 0; // don't care
-        }
-
-        /**
-         * @hide
-         */
-        public void copyFrom(PhysicalDisplayInfo other) {
-            width = other.width;
-            height = other.height;
-            refreshRate = other.refreshRate;
-            density = other.density;
-            xDpi = other.xDpi;
-            yDpi = other.yDpi;
-            secure = other.secure;
-            appVsyncOffsetNanos = other.appVsyncOffsetNanos;
-            presentationDeadlineNanos = other.presentationDeadlineNanos;
-        }
-
-        /**
-         * @hide
-         */
         @Override
         public String toString() {
-            return "PhysicalDisplayInfo{" + width + " x " + height + ", " + refreshRate + " fps, "
-                    + "density " + density + ", " + xDpi + " x " + yDpi + " dpi, secure " + secure
-                    + ", appVsyncOffset " + appVsyncOffsetNanos
-                    + ", bufferDeadline " + presentationDeadlineNanos + "}";
+            return "DisplayInfo{density=" + density + ", secure=" + secure + "}";
+        }
+    }
+
+    /**
+     * Configuration supported by physical display.
+     *
+     * @hide
+     */
+    public static final class DisplayConfig {
+        public int width;
+        public int height;
+        public float xDpi;
+        public float yDpi;
+
+        public float refreshRate;
+        public long appVsyncOffsetNanos;
+        public long presentationDeadlineNanos;
+
+        @Override
+        public String toString() {
+            return "DisplayConfig{width=" + width
+                    + ", height=" + height
+                    + ", xDpi=" + xDpi
+                    + ", yDpi=" + yDpi
+                    + ", refreshRate=" + refreshRate
+                    + ", appVsyncOffsetNanos=" + appVsyncOffsetNanos
+                    + ", presentationDeadlineNanos=" + presentationDeadlineNanos + "}";
         }
     }
 
@@ -1428,8 +1334,17 @@
     /**
      * @hide
      */
-    @UnsupportedAppUsage
-    public static SurfaceControl.PhysicalDisplayInfo[] getDisplayConfigs(IBinder displayToken) {
+    public static SurfaceControl.DisplayInfo getDisplayInfo(IBinder displayToken) {
+        if (displayToken == null) {
+            throw new IllegalArgumentException("displayToken must not be null");
+        }
+        return nativeGetDisplayInfo(displayToken);
+    }
+
+    /**
+     * @hide
+     */
+    public static SurfaceControl.DisplayConfig[] getDisplayConfigs(IBinder displayToken) {
         if (displayToken == null) {
             throw new IllegalArgumentException("displayToken must not be null");
         }
@@ -1825,7 +1740,7 @@
     }
 
     /**
-     * TODO(116025192): Remove this stopgap once framework is display-agnostic.
+     * TODO(b/116025192): Remove this stopgap once framework is display-agnostic.
      *
      * @hide
      */
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/core/java/android/view/SurfaceControlViewHost.aidl
similarity index 76%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to core/java/android/view/SurfaceControlViewHost.aidl
index 81a14a4..3b31ab8 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/core/java/android/view/SurfaceControlViewHost.aidl
@@ -1,5 +1,5 @@
 /**
- * Copyright (c) 2018, The Android Open Source Project
+ * 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.
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.view;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+parcelable SurfaceControlViewHost.SurfacePackage;
\ No newline at end of file
diff --git a/core/java/android/view/SurfaceControlViewHost.java b/core/java/android/view/SurfaceControlViewHost.java
index 71cf051..bf84819 100644
--- a/core/java/android/view/SurfaceControlViewHost.java
+++ b/core/java/android/view/SurfaceControlViewHost.java
@@ -138,6 +138,7 @@
     /**
      * @hide
      */
+    @TestApi
     public void addView(@NonNull View view, WindowManager.LayoutParams attrs) {
         mViewRoot.setView(view, attrs, null);
     }
@@ -161,6 +162,7 @@
     /**
      * @hide
      */
+    @TestApi
     public void relayout(WindowManager.LayoutParams attrs) {
         mViewRoot.setLayoutParams(attrs, false);
         mViewRoot.setReportNextDraw();
diff --git a/core/java/android/view/SurfaceView.java b/core/java/android/view/SurfaceView.java
index 75d5538..d5ed36b 100644
--- a/core/java/android/view/SurfaceView.java
+++ b/core/java/android/view/SurfaceView.java
@@ -22,7 +22,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.CompatibilityInfo.Translator;
@@ -43,8 +42,8 @@
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.SurfaceControl.Transaction;
-import android.view.accessibility.AccessibilityNodeInfo;
 import android.view.SurfaceControlViewHost;
+import android.view.accessibility.AccessibilityNodeInfo;
 
 import com.android.internal.view.SurfaceCallbackHelper;
 
@@ -386,7 +385,7 @@
                  * This gets called on a RenderThread worker thread, so members accessed here must
                  * be protected by a lock.
                  */
-                final boolean useBLAST = WindowManagerGlobal.USE_BLAST_ADAPTER;
+                final boolean useBLAST = WindowManagerGlobal.useBLAST();
                 viewRoot.registerRtFrameCallback(frame -> {
                     try {
                         final SurfaceControl.Transaction t = useBLAST ?
@@ -1120,7 +1119,7 @@
 
     private void applySurfaceTransforms(SurfaceControl surface, SurfaceControl.Transaction t,
             Rect position, long frameNumber) {
-        if (frameNumber > 0 && !WindowManagerGlobal.USE_BLAST_ADAPTER) {
+        if (frameNumber > 0 && !WindowManagerGlobal.useBLAST()) {
             final ViewRootImpl viewRoot = getViewRootImpl();
 
             t.deferTransactionUntil(surface, viewRoot.getRenderSurfaceControl(),
@@ -1138,7 +1137,7 @@
     }
 
     private void setParentSpaceRectangle(Rect position, long frameNumber) {
-        final boolean useBLAST = WindowManagerGlobal.USE_BLAST_ADAPTER;
+        final boolean useBLAST = WindowManagerGlobal.useBLAST();
         final ViewRootImpl viewRoot = getViewRootImpl();
         final SurfaceControl.Transaction t = useBLAST ? viewRoot.getBLASTSyncTransaction() :
             mRtTransaction;
@@ -1199,7 +1198,7 @@
 
         @Override
         public void positionLost(long frameNumber) {
-            boolean useBLAST = WindowManagerGlobal.USE_BLAST_ADAPTER;
+            boolean useBLAST = WindowManagerGlobal.useBLAST();
             if (DEBUG) {
                 Log.d(TAG, String.format("%d windowPositionLost, frameNr = %d",
                         System.identityHashCode(this), frameNumber));
@@ -1538,7 +1537,7 @@
     @Override
     public void invalidate(boolean invalidateCache) {
         super.invalidate(invalidateCache);
-        if (!WindowManagerGlobal.USE_BLAST_ADAPTER) {
+        if (!WindowManagerGlobal.useBLAST()) {
             return;
         }
         final ViewRootImpl viewRoot = getViewRootImpl();
@@ -1570,7 +1569,8 @@
     private void reparentSurfacePackage(SurfaceControl.Transaction t,
             SurfaceControlViewHost.SurfacePackage p) {
         // TODO: Link accessibility IDs here.
-        t.reparent(p.getSurfaceControl(), mSurfaceControl);
+        final SurfaceControl sc = p.getSurfaceControl();
+        t.reparent(sc, mSurfaceControl).show(sc);
     }
 
     /**
diff --git a/core/java/android/view/SyncRtSurfaceTransactionApplier.java b/core/java/android/view/SyncRtSurfaceTransactionApplier.java
index abe44f4..15252b1 100644
--- a/core/java/android/view/SyncRtSurfaceTransactionApplier.java
+++ b/core/java/android/view/SyncRtSurfaceTransactionApplier.java
@@ -65,20 +65,33 @@
                 return;
             }
             Transaction t = new Transaction();
-            for (int i = params.length - 1; i >= 0; i--) {
-                SurfaceParams surfaceParams = params[i];
-                SurfaceControl surface = surfaceParams.surface;
-                t.deferTransactionUntil(surface, mTargetSc, frame);
-                applyParams(t, surfaceParams, mTmpFloat9);
-            }
-            t.setEarlyWakeup();
-            t.apply();
+            applyParams(t, frame, params);
         });
 
         // Make sure a frame gets scheduled.
         mTargetViewRootImpl.getView().invalidate();
     }
 
+    /**
+     * Applies surface parameters on the next frame.
+     * @param t transaction to apply all parameters in.
+     * @param frame frame to synchronize to. Set -1 when sync is not required.
+     * @param params The surface parameters to apply. DO NOT MODIFY the list after passing into
+     *               this method to avoid synchronization issues.
+     */
+    void applyParams(Transaction t, long frame, final SurfaceParams... params) {
+        for (int i = params.length - 1; i >= 0; i--) {
+            SurfaceParams surfaceParams = params[i];
+            SurfaceControl surface = surfaceParams.surface;
+            if (frame > 0) {
+                t.deferTransactionUntil(surface, mTargetSc, frame);
+            }
+            applyParams(t, surfaceParams, mTmpFloat9);
+        }
+        t.setEarlyWakeup();
+        t.apply();
+    }
+
     public static void applyParams(Transaction t, SurfaceParams params, float[] tmpFloat9) {
         if ((params.flags & FLAG_MATRIX) != 0) {
             t.setMatrix(params.surface, params.matrix, tmpFloat9);
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/java/android/view/VerifiedInputEvent.aidl
similarity index 81%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to core/java/android/view/VerifiedInputEvent.aidl
index f5e2405..41608d8 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/java/android/view/VerifiedInputEvent.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.view;
 
-parcelable PhoneTimeSuggestion;
+parcelable VerifiedInputEvent;
diff --git a/core/java/android/view/VerifiedInputEvent.java b/core/java/android/view/VerifiedInputEvent.java
new file mode 100644
index 0000000..531b3ed
--- /dev/null
+++ b/core/java/android/view/VerifiedInputEvent.java
@@ -0,0 +1,162 @@
+/*
+ * 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 android.view;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import java.lang.annotation.Retention;
+
+
+/**
+ * Base class for verified events.
+ * Verified events contain the subset of an InputEvent that the system can verify.
+ * Data contained inside VerifiedInputEvent's should be considered trusted and contain only
+ * the original event data that first came from the system.
+ *
+ * @see android.hardware.input.InputManager#verifyInputEvent(InputEvent)
+ */
+@SuppressLint("ParcelNotFinal")
+public abstract class VerifiedInputEvent implements Parcelable {
+    private static final String TAG = "VerifiedInputEvent";
+
+    /** @hide */
+    protected static final int VERIFIED_KEY = 1;
+    /** @hide */
+    protected static final int VERIFIED_MOTION = 2;
+
+    /** @hide */
+    @Retention(SOURCE)
+    @IntDef(prefix = "VERIFIED", value = {VERIFIED_KEY, VERIFIED_MOTION})
+    public @interface VerifiedInputEventType {};
+
+    @VerifiedInputEventType
+    private int mType;
+
+    private int mDeviceId;
+    private long mEventTimeNanos;
+    private int mSource;
+    private int mDisplayId;
+
+    /** @hide */
+    protected VerifiedInputEvent(int type, int deviceId, long eventTimeNanos, int source,
+            int displayId) {
+        mType = type;
+        mDeviceId = deviceId;
+        mEventTimeNanos = eventTimeNanos;
+        mSource = source;
+        mDisplayId = displayId;
+    }
+    /** @hide */
+    protected VerifiedInputEvent(@NonNull Parcel in, int expectedType) {
+        mType = in.readInt();
+        if (mType != expectedType) {
+            throw new IllegalArgumentException("Unexpected input event type token in parcel.");
+        }
+        mDeviceId = in.readInt();
+        mEventTimeNanos = in.readLong();
+        mSource = in.readInt();
+        mDisplayId = in.readInt();
+    }
+
+    /**
+     * Get the id of the device that generated this event.
+     *
+     * @see InputEvent#getDeviceId()
+     */
+    public int getDeviceId() {
+        return mDeviceId;
+    }
+
+    /**
+     * Get the time this event occurred, in the {@link android.os.SystemClock#uptimeMillis()}
+     * time base.
+     *
+     * @see InputEvent#getEventTime()
+     * @see KeyEvent#getEventTimeNano()
+     * @see MotionEvent#getEventTimeNano()
+     */
+    @SuppressLint("MethodNameUnits")
+    public long getEventTimeNanos() {
+        return mEventTimeNanos;
+    }
+
+    /**
+     * Get the source of the event.
+     *
+     * @see InputEvent#getSource()
+     */
+    public int getSource() {
+        return mSource;
+    }
+
+    /**
+     * Get the display id that is associated with this event.
+     *
+     * @see Display#getDisplayId()
+     */
+    public int getDisplayId() {
+        return mDisplayId;
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mType);
+        dest.writeInt(mDeviceId);
+        dest.writeLong(mEventTimeNanos);
+        dest.writeInt(mSource);
+        dest.writeInt(mDisplayId);
+    }
+
+    /** {@inheritDoc} */
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    private static int peekInt(@NonNull Parcel parcel) {
+        final int initialDataPosition = parcel.dataPosition();
+        int data = parcel.readInt();
+        parcel.setDataPosition(initialDataPosition);
+        return data;
+    }
+
+    public static final @NonNull Parcelable.Creator<VerifiedInputEvent> CREATOR =
+            new Parcelable.Creator<VerifiedInputEvent>() {
+        @Override
+        public VerifiedInputEvent[] newArray(int size) {
+            return new VerifiedInputEvent[size];
+        }
+
+        @Override
+        public VerifiedInputEvent createFromParcel(@NonNull Parcel in) {
+            final int type = peekInt(in);
+            if (type == VERIFIED_KEY) {
+                return VerifiedKeyEvent.CREATOR.createFromParcel(in);
+            } else if (type == VERIFIED_MOTION) {
+                return VerifiedMotionEvent.CREATOR.createFromParcel(in);
+            }
+            throw new IllegalArgumentException("Unexpected input event type in parcel.");
+        }
+    };
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/java/android/view/VerifiedKeyEvent.aidl
similarity index 81%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to core/java/android/view/VerifiedKeyEvent.aidl
index f5e2405..2d6c3a4 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/java/android/view/VerifiedKeyEvent.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.view;
 
-parcelable PhoneTimeSuggestion;
+parcelable VerifiedKeyEvent;
diff --git a/core/java/android/view/VerifiedKeyEvent.java b/core/java/android/view/VerifiedKeyEvent.java
new file mode 100644
index 0000000..dc5b7cc
--- /dev/null
+++ b/core/java/android/view/VerifiedKeyEvent.java
@@ -0,0 +1,414 @@
+/*
+ * 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 android.view;
+
+import static android.view.KeyEvent.FLAG_CANCELED;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.annotation.IntDef;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.DataClass;
+
+import java.lang.annotation.Retention;
+
+/**
+ * KeyEvent that has been verified by the system.
+ * The data contained in this class is always a subset of a {@link KeyEvent}. Use this class to
+ * check which data has been confirmed by the system to be authentic.
+ *
+ * Most applications do not need to use this class.
+ *
+ * {@see android.hardware.input.InputManager#verifyInputEvent}
+ */
+@DataClass(genHiddenConstructor = true, genEqualsHashCode = true)
+public final class VerifiedKeyEvent extends VerifiedInputEvent implements Parcelable {
+    private static final String TAG = "VerifiedKeyEvent";
+
+    /** @hide */
+    @Retention(SOURCE)
+    @IntDef({KeyEvent.ACTION_DOWN, KeyEvent.ACTION_UP})
+    public @interface KeyEventAction {};
+
+    /**
+     * The action of this key event.  May be either {@link KeyEvent#ACTION_DOWN} or
+     * {@link KeyEvent#ACTION_UP}.
+     *
+     * @see KeyEvent#getAction()
+     */
+    @KeyEventAction
+    private int mAction;
+
+    /**
+     * Retrieve the time of the most recent key down event, in the
+     * {@link android.os.SystemClock#uptimeMillis} time base, but in nanoseconds. If this
+     * is a down event, this will be the same as {@link VerifiedInputEvent#getEventTimeNanos()}.
+     *
+     * @see KeyEvent#getDownTime()
+     */
+    @SuppressLint({"MethodNameUnits"})
+    private long mDownTimeNanos;
+
+    /**
+     * Returns the flags for this key event.
+     *
+     * @see KeyEvent#getFlags()
+     * @see KeyEvent#FLAG_CANCELED
+     *
+     * @hide
+     */
+    private int mFlags;
+
+    /**
+     * Retrieve the key code of the key event.
+     *
+     * @see KeyEvent#getKeyCode()
+     */
+    private int mKeyCode;
+
+    /**
+     * Retrieve the hardware key id of this key event. These values are not reliable
+     * and vary from device to device.
+     *
+     * @see KeyEvent#getScanCode()
+     */
+    private int mScanCode;
+
+    /**
+     * <p>Returns the state of the meta keys.</p>
+     *
+     * @return an integer in which each bit set to 1 represents a pressed meta key
+     * @see KeyEvent#getMetaState()
+     */
+    private int mMetaState;
+
+    /**
+     * Retrieve the repeat count of the event.  For key down events, this is the number of times
+     * the key has repeated with the first down starting at 0 and counting up from there.
+     * For key up events, this is always equal to zero. For multiple key events,
+     * this is the number of down/up pairs that have occurred.
+     */
+    private int mRepeatCount;
+
+    /**
+     * Get a specific flag of this key event, if possible. Return null if the flag value could
+     * not be checked.
+     *
+     * @param flag the flag of interest
+     * @return Boolean(true) if the key event has the requested flag
+     *         Boolean(false) if the key event does not have the requested flag
+     *         null if the flag value could not be checked
+     *
+     * @see KeyEvent#getFlags()
+     * @see KeyEvent#FLAG_CANCELED
+     */
+    public @Nullable Boolean getFlag(int flag) {
+        switch(flag) {
+            // InputDispatcher only verifies a subset of the KeyEvent flags.
+            // These values must be kept in sync with Input.cpp
+            case FLAG_CANCELED:
+                return (mFlags & flag) != 0;
+        }
+        return null;
+    }
+
+    // The codegen tool doesn't fully support subclasses, since it works on a per-file basis.
+    // To modify this file:
+    // 1. run codegen on this file
+    // 2. edit the constructor signature
+    // 3. add the "super" call for constructor that receives a Parcel
+    // 4. add the "super" call to the writeToParcel method
+    // 5. Update "equals" and "hashcode" methods to include VerifiedInputEvent fields
+    // 6. Edit "inputSignatures" to ensure KeyEventAction is properly qualified
+
+
+
+    // Code below generated by codegen v1.0.14.
+    //
+    // DO NOT MODIFY!
+    // CHECKSTYLE:OFF Generated code
+    //
+    // To regenerate run:
+    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/VerifiedKeyEvent.java
+    //
+    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+    //   Settings > Editor > Code Style > Formatter Control
+    //@formatter:off
+
+
+    /**
+     * Creates a new VerifiedKeyEvent.
+     *
+     * @param action
+     *   The action of this key event.  May be either {@link KeyEvent#ACTION_DOWN} or
+     *   {@link KeyEvent#ACTION_UP}.
+     * @param downTimeNanos
+     *   Retrieve the time of the most recent key down event, in the
+     *   {@link android.os.SystemClock#uptimeMillis} time base, but in nanoseconds. If this
+     *   is a down event, this will be the same as {@link VerifiedInputEvent#getEventTimeNanos()}.
+     * @param flags
+     *   Returns the flags for this key event.
+     * @param keyCode
+     *   Retrieve the key code of the key event.
+     * @param scanCode
+     *   Retrieve the hardware key id of this key event. These values are not reliable
+     *   and vary from device to device.
+     * @param metaState
+     *   <p>Returns the state of the meta keys.</p>
+     * @param repeatCount
+     *   Retrieve the repeat count of the event.  For key down events, this is the number of times
+     *   the key has repeated with the first down starting at 0 and counting up from there.
+     *   For key up events, this is always equal to zero. For multiple key events,
+     *   this is the number of down/up pairs that have occurred.
+     * @hide
+     */
+    @DataClass.Generated.Member
+    public VerifiedKeyEvent(
+            int deviceId,
+            long eventTimeNanos,
+            int source,
+            int displayId,
+            @KeyEventAction int action,
+            @SuppressLint({"MethodNameUnits"}) long downTimeNanos,
+            int flags,
+            int keyCode,
+            int scanCode,
+            int metaState,
+            int repeatCount) {
+        super(VERIFIED_KEY, deviceId, eventTimeNanos, source, displayId);
+        this.mAction = action;
+        com.android.internal.util.AnnotationValidations.validate(
+                KeyEventAction.class, null, mAction);
+        this.mDownTimeNanos = downTimeNanos;
+        com.android.internal.util.AnnotationValidations.validate(
+                SuppressLint.class, null, mDownTimeNanos,
+                "value", "MethodNameUnits");
+        this.mFlags = flags;
+        this.mKeyCode = keyCode;
+        this.mScanCode = scanCode;
+        this.mMetaState = metaState;
+        this.mRepeatCount = repeatCount;
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    /**
+     * The action of this key event.  May be either {@link KeyEvent#ACTION_DOWN} or
+     * {@link KeyEvent#ACTION_UP}.
+     *
+     * @see KeyEvent#getAction()
+     */
+    @DataClass.Generated.Member
+    public @KeyEventAction int getAction() {
+        return mAction;
+    }
+
+    /**
+     * Retrieve the time of the most recent key down event, in the
+     * {@link android.os.SystemClock#uptimeMillis} time base, but in nanoseconds. If this
+     * is a down event, this will be the same as {@link VerifiedInputEvent#getEventTimeNanos()}.
+     *
+     * @see KeyEvent#getDownTime()
+     */
+    @DataClass.Generated.Member
+    public @SuppressLint({"MethodNameUnits"}) long getDownTimeNanos() {
+        return mDownTimeNanos;
+    }
+
+    /**
+     * Returns the flags for this key event.
+     *
+     * @see KeyEvent#getFlags()
+     * @see KeyEvent#FLAG_CANCELED
+     * @hide
+     */
+    @DataClass.Generated.Member
+    public int getFlags() {
+        return mFlags;
+    }
+
+    /**
+     * Retrieve the key code of the key event.
+     *
+     * @see KeyEvent#getKeyCode()
+     */
+    @DataClass.Generated.Member
+    public int getKeyCode() {
+        return mKeyCode;
+    }
+
+    /**
+     * Retrieve the hardware key id of this key event. These values are not reliable
+     * and vary from device to device.
+     *
+     * @see KeyEvent#getScanCode()
+     */
+    @DataClass.Generated.Member
+    public int getScanCode() {
+        return mScanCode;
+    }
+
+    /**
+     * <p>Returns the state of the meta keys.</p>
+     *
+     * @return an integer in which each bit set to 1 represents a pressed meta key
+     * @see KeyEvent#getMetaState()
+     */
+    @DataClass.Generated.Member
+    public int getMetaState() {
+        return mMetaState;
+    }
+
+    /**
+     * Retrieve the repeat count of the event.  For key down events, this is the number of times
+     * the key has repeated with the first down starting at 0 and counting up from there.
+     * For key up events, this is always equal to zero. For multiple key events,
+     * this is the number of down/up pairs that have occurred.
+     */
+    @DataClass.Generated.Member
+    public int getRepeatCount() {
+        return mRepeatCount;
+    }
+
+    @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(VerifiedKeyEvent other) { ... }
+        // boolean fieldNameEquals(FieldType otherValue) { ... }
+
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        @SuppressWarnings("unchecked")
+        VerifiedKeyEvent that = (VerifiedKeyEvent) o;
+        //noinspection PointlessBooleanExpression
+        return true
+                && getDeviceId() == that.getDeviceId()
+                && getEventTimeNanos() == that.getEventTimeNanos()
+                && getSource() == that.getSource()
+                && getDisplayId() == that.getDisplayId()
+                && mAction == that.mAction
+                && mDownTimeNanos == that.mDownTimeNanos
+                && mFlags == that.mFlags
+                && mKeyCode == that.mKeyCode
+                && mScanCode == that.mScanCode
+                && mMetaState == that.mMetaState
+                && mRepeatCount == that.mRepeatCount;
+    }
+
+    @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 + getDeviceId();
+        _hash = 31 * _hash + Long.hashCode(getEventTimeNanos());
+        _hash = 31 * _hash + getSource();
+        _hash = 31 * _hash + getDisplayId();
+        _hash = 31 * _hash + mAction;
+        _hash = 31 * _hash + Long.hashCode(mDownTimeNanos);
+        _hash = 31 * _hash + mFlags;
+        _hash = 31 * _hash + mKeyCode;
+        _hash = 31 * _hash + mScanCode;
+        _hash = 31 * _hash + mMetaState;
+        _hash = 31 * _hash + mRepeatCount;
+        return _hash;
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public void writeToParcel(@android.annotation.NonNull Parcel dest, int flags) {
+        // You can override field parcelling by defining methods like:
+        // void parcelFieldName(Parcel dest, int flags) { ... }
+        super.writeToParcel(dest, flags);
+        dest.writeInt(mAction);
+        dest.writeLong(mDownTimeNanos);
+        dest.writeInt(mFlags);
+        dest.writeInt(mKeyCode);
+        dest.writeInt(mScanCode);
+        dest.writeInt(mMetaState);
+        dest.writeInt(mRepeatCount);
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public int describeContents() { return 0; }
+
+    /** @hide */
+    @SuppressWarnings({"unchecked", "RedundantCast"})
+    @DataClass.Generated.Member
+    /* package-private */ VerifiedKeyEvent(@android.annotation.NonNull Parcel in) {
+        // You can override field unparcelling by defining methods like:
+        // static FieldType unparcelFieldName(Parcel in) { ... }
+        super(in, VERIFIED_KEY);
+        int action = in.readInt();
+        long downTimeNanos = in.readLong();
+        int flags = in.readInt();
+        int keyCode = in.readInt();
+        int scanCode = in.readInt();
+        int metaState = in.readInt();
+        int repeatCount = in.readInt();
+
+        this.mAction = action;
+        com.android.internal.util.AnnotationValidations.validate(
+                KeyEventAction.class, null, mAction);
+        this.mDownTimeNanos = downTimeNanos;
+        com.android.internal.util.AnnotationValidations.validate(
+                SuppressLint.class, null, mDownTimeNanos,
+                "value", "MethodNameUnits");
+        this.mFlags = flags;
+        this.mKeyCode = keyCode;
+        this.mScanCode = scanCode;
+        this.mMetaState = metaState;
+        this.mRepeatCount = repeatCount;
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    @DataClass.Generated.Member
+    public static final @android.annotation.NonNull Parcelable.Creator<VerifiedKeyEvent> CREATOR
+            = new Parcelable.Creator<VerifiedKeyEvent>() {
+        @Override
+        public VerifiedKeyEvent[] newArray(int size) {
+            return new VerifiedKeyEvent[size];
+        }
+
+        @Override
+        public VerifiedKeyEvent createFromParcel(@android.annotation.NonNull Parcel in) {
+            return new VerifiedKeyEvent(in);
+        }
+    };
+
+    @DataClass.Generated(
+            time = 1581107066890L,
+            codegenVersion = "1.0.14",
+            sourceFile = "frameworks/base/core/java/android/view/VerifiedKeyEvent.java",
+            inputSignatures = "private static final  java.lang.String TAG\nprivate @android.view.VerifiedKeyEvent.KeyEventAction int mAction\nprivate @android.annotation.SuppressLint({\"MethodNameUnits\"}) long mDownTimeNanos\nprivate  int mFlags\nprivate  int mKeyCode\nprivate  int mScanCode\nprivate  int mMetaState\nprivate  int mRepeatCount\npublic @android.annotation.Nullable java.lang.Boolean getFlag(int)\nclass VerifiedKeyEvent extends android.view.VerifiedInputEvent implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genHiddenConstructor=true, genEqualsHashCode=true)")
+    @Deprecated
+    private void __metadata() {}
+
+
+    //@formatter:on
+    // End of generated code
+
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/java/android/view/VerifiedMotionEvent.aidl
similarity index 81%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to core/java/android/view/VerifiedMotionEvent.aidl
index f5e2405..3546c63 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/java/android/view/VerifiedMotionEvent.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,6 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.view;
 
-parcelable PhoneTimeSuggestion;
+parcelable VerifiedMotionEvent;
diff --git a/core/java/android/view/VerifiedMotionEvent.java b/core/java/android/view/VerifiedMotionEvent.java
new file mode 100644
index 0000000..b4c5d24
--- /dev/null
+++ b/core/java/android/view/VerifiedMotionEvent.java
@@ -0,0 +1,393 @@
+/*
+ * 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 android.view;
+
+import static android.view.MotionEvent.FLAG_WINDOW_IS_OBSCURED;
+import static android.view.MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED;
+
+import static java.lang.annotation.RetentionPolicy.SOURCE;
+
+import android.annotation.IntDef;
+import android.annotation.Nullable;
+import android.annotation.SuppressLint;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.util.DataClass;
+
+import java.lang.annotation.Retention;
+
+/**
+ * MotionEvent that has been verified by the system.
+ * The data contained in this class is always a subset of a {@link MotionEvent}. Use this class to
+ * check which data has been confirmed by the system to be authentic.
+ *
+ * Most applications do not need to use this class.
+ *
+ * {@see android.hardware.input.InputManager#verifyInputEvent}
+ */
+@DataClass(genHiddenConstructor = true, genEqualsHashCode = true)
+public final class VerifiedMotionEvent extends VerifiedInputEvent implements Parcelable {
+    private static final String TAG = "VerifiedMotionEvent";
+
+    /**
+     * The raw X coordinate of the primary pointer.
+     * @see MotionEvent#getRawX()
+     */
+    private float mRawX;
+
+    /**
+     * The raw Y coordinate of the primary pointer.
+     * @see MotionEvent#getRawY()
+     */
+    private float mRawY;
+
+    /** @hide */
+    @Retention(SOURCE)
+    @IntDef({MotionEvent.ACTION_DOWN, MotionEvent.ACTION_POINTER_DOWN, MotionEvent.ACTION_CANCEL,
+            MotionEvent.ACTION_POINTER_UP, MotionEvent.ACTION_UP})
+    public @interface MotionEventAction {};
+
+    /**
+     * The masked action being performed, without pointer index information.
+     *
+     * @see MotionEvent#getActionMasked()
+     */
+    @MotionEventAction
+    private int mActionMasked;
+
+    /**
+     * The time that the gesture started, in nanoseconds.
+     * Uses the same time base as {@link android.os.SystemClock#uptimeMillis()}
+     *
+     * @see MotionEvent#getDownTime()
+     */
+    @SuppressLint({"MethodNameUnits"})
+    private long mDownTimeNanos;
+
+    /**
+     * Returns the flags for this motion event.
+     *
+     * @see MotionEvent#getFlags()
+     * @hide
+     */
+    private int mFlags;
+
+    /**
+     * The state of any meta / modifier keys that were in effect when the event was generated.
+     *
+     * @see MotionEvent#getMetaState()
+     */
+    private int mMetaState;
+
+    /**
+     *  The state of all buttons that are pressed such as a mouse or stylus button.
+     *
+     * @see MotionEvent#getButtonState()
+     */
+    private int mButtonState;
+
+    /**
+     * Get a specific flag of this motion event, if possible. Return null if the flag value could
+     * not be checked.
+     *
+     * @param flag the flag of interest
+     * @return Boolean(true) if the motion event has the requested flag
+     *         Boolean(false) if the motion event does not have the requested flag
+     *         null if the flag value could not be checked
+     *
+     * @see MotionEvent#FLAG_WINDOW_IS_OBSCURED
+     * @see MotionEvent#FLAG_WINDOW_IS_PARTIALLY_OBSCURED
+     */
+    public @Nullable Boolean getFlag(int flag) {
+        switch(flag) {
+            // InputDispatcher only verifies a subset of the MotionEvent flags.
+            // These values must be kept in sync with Input.cpp
+            case FLAG_WINDOW_IS_OBSCURED:
+            case FLAG_WINDOW_IS_PARTIALLY_OBSCURED:
+                return (mFlags & flag) != 0;
+        }
+        return null;
+    }
+
+    // The codegen tool doesn't fully support subclasses, since it works on a per-file basis.
+    // To modify this file:
+    // 1. run codegen on this file
+    // 2. edit the constructor signature
+    // 3. add the "super" call for constructor that receives a Parcel
+    // 4. add the "super" call to the writeToParcel method
+    // 5. Update "equals" and "hashcode" methods to include VerifiedInputEvent fields
+    // 6. Edit "inputSignatures" to ensure MotionEventAction is properly qualified
+
+
+
+    // Code below generated by codegen v1.0.14.
+    //
+    // DO NOT MODIFY!
+    // CHECKSTYLE:OFF Generated code
+    //
+    // To regenerate run:
+    // $ codegen $ANDROID_BUILD_TOP/frameworks/base/core/java/android/view/VerifiedMotionEvent.java
+    //
+    // To exclude the generated code from IntelliJ auto-formatting enable (one-time):
+    //   Settings > Editor > Code Style > Formatter Control
+    //@formatter:off
+
+
+    /**
+     * Creates a new VerifiedMotionEvent.
+     *
+     * @param rawX
+     *   The raw X coordinate of the primary pointer.
+     * @param rawY
+     *   The raw Y coordinate of the primary pointer.
+     * @param actionMasked
+     *   The masked action being performed, without pointer index information.
+     * @param downTimeNanos
+     *   The time that the gesture started, in nanoseconds.
+     *   Uses the same time base as {@link android.os.SystemClock#uptimeMillis()}
+     * @param flags
+     *   Returns the flags for this motion event.
+     * @param metaState
+     *   The state of any meta / modifier keys that were in effect when the event was generated.
+     * @param buttonState
+     *    The state of all buttons that are pressed such as a mouse or stylus button.
+     * @hide
+     */
+    @DataClass.Generated.Member
+    public VerifiedMotionEvent(
+            int deviceId, long eventTimeNanos, int source, int displayId,
+            float rawX,
+            float rawY,
+            @MotionEventAction int actionMasked,
+            @SuppressLint({"MethodNameUnits"}) long downTimeNanos,
+            int flags,
+            int metaState,
+            int buttonState) {
+        super(VERIFIED_MOTION, deviceId, eventTimeNanos, source, displayId);
+        this.mRawX = rawX;
+        this.mRawY = rawY;
+        this.mActionMasked = actionMasked;
+        com.android.internal.util.AnnotationValidations.validate(
+                MotionEventAction.class, null, mActionMasked);
+        this.mDownTimeNanos = downTimeNanos;
+        com.android.internal.util.AnnotationValidations.validate(
+                SuppressLint.class, null, mDownTimeNanos,
+                "value", "MethodNameUnits");
+        this.mFlags = flags;
+        this.mMetaState = metaState;
+        this.mButtonState = buttonState;
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    /**
+     * The raw X coordinate of the primary pointer.
+     *
+     * @see MotionEvent#getRawX()
+     */
+    @DataClass.Generated.Member
+    public float getRawX() {
+        return mRawX;
+    }
+
+    /**
+     * The raw Y coordinate of the primary pointer.
+     *
+     * @see MotionEvent#getRawY()
+     */
+    @DataClass.Generated.Member
+    public float getRawY() {
+        return mRawY;
+    }
+
+    /**
+     * The masked action being performed, without pointer index information.
+     *
+     * @see MotionEvent#getActionMasked()
+     */
+    @DataClass.Generated.Member
+    public @MotionEventAction int getActionMasked() {
+        return mActionMasked;
+    }
+
+    /**
+     * The time that the gesture started, in nanoseconds.
+     * Uses the same time base as {@link android.os.SystemClock#uptimeMillis()}
+     *
+     * @see MotionEvent#getDownTime()
+     */
+    @DataClass.Generated.Member
+    public @SuppressLint({"MethodNameUnits"}) long getDownTimeNanos() {
+        return mDownTimeNanos;
+    }
+
+    /**
+     * Returns the flags for this motion event.
+     *
+     * @see MotionEvent#getFlags()
+     * @hide
+     */
+    @DataClass.Generated.Member
+    public int getFlags() {
+        return mFlags;
+    }
+
+    /**
+     * The state of any meta / modifier keys that were in effect when the event was generated.
+     *
+     * @see MotionEvent#getMetaState()
+     */
+    @DataClass.Generated.Member
+    public int getMetaState() {
+        return mMetaState;
+    }
+
+    /**
+     *  The state of all buttons that are pressed such as a mouse or stylus button.
+     *
+     * @see MotionEvent#getButtonState()
+     */
+    @DataClass.Generated.Member
+    public int getButtonState() {
+        return mButtonState;
+    }
+
+    @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(VerifiedMotionEvent other) { ... }
+        // boolean fieldNameEquals(FieldType otherValue) { ... }
+
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        @SuppressWarnings("unchecked")
+        VerifiedMotionEvent that = (VerifiedMotionEvent) o;
+        //noinspection PointlessBooleanExpression
+        return true
+                && getDeviceId() == that.getDeviceId()
+                && getEventTimeNanos() == that.getEventTimeNanos()
+                && getSource() == that.getSource()
+                && getDisplayId() == that.getDisplayId()
+                && mRawX == that.mRawX
+                && mRawY == that.mRawY
+                && mActionMasked == that.mActionMasked
+                && mDownTimeNanos == that.mDownTimeNanos
+                && mFlags == that.mFlags
+                && mMetaState == that.mMetaState
+                && mButtonState == that.mButtonState;
+    }
+
+    @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 + getDeviceId();
+        _hash = 31 * _hash + Long.hashCode(getEventTimeNanos());
+        _hash = 31 * _hash + getSource();
+        _hash = 31 * _hash + getDisplayId();
+        _hash = 31 * _hash + Float.hashCode(mRawX);
+        _hash = 31 * _hash + Float.hashCode(mRawY);
+        _hash = 31 * _hash + mActionMasked;
+        _hash = 31 * _hash + Long.hashCode(mDownTimeNanos);
+        _hash = 31 * _hash + mFlags;
+        _hash = 31 * _hash + mMetaState;
+        _hash = 31 * _hash + mButtonState;
+        return _hash;
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public void writeToParcel(@android.annotation.NonNull Parcel dest, int flags) {
+        // You can override field parcelling by defining methods like:
+        // void parcelFieldName(Parcel dest, int flags) { ... }
+        super.writeToParcel(dest, flags);
+        dest.writeFloat(mRawX);
+        dest.writeFloat(mRawY);
+        dest.writeInt(mActionMasked);
+        dest.writeLong(mDownTimeNanos);
+        dest.writeInt(mFlags);
+        dest.writeInt(mMetaState);
+        dest.writeInt(mButtonState);
+    }
+
+    @Override
+    @DataClass.Generated.Member
+    public int describeContents() { return 0; }
+
+    /** @hide */
+    @SuppressWarnings({"unchecked", "RedundantCast"})
+    @DataClass.Generated.Member
+    /* package-private */ VerifiedMotionEvent(@android.annotation.NonNull Parcel in) {
+        // You can override field unparcelling by defining methods like:
+        // static FieldType unparcelFieldName(Parcel in) { ... }
+        super(in, VERIFIED_MOTION);
+        float rawX = in.readFloat();
+        float rawY = in.readFloat();
+        int actionMasked = in.readInt();
+        long downTimeNanos = in.readLong();
+        int flags = in.readInt();
+        int metaState = in.readInt();
+        int buttonState = in.readInt();
+
+        this.mRawX = rawX;
+        this.mRawY = rawY;
+        this.mActionMasked = actionMasked;
+        com.android.internal.util.AnnotationValidations.validate(
+                MotionEventAction.class, null, mActionMasked);
+        this.mDownTimeNanos = downTimeNanos;
+        com.android.internal.util.AnnotationValidations.validate(
+                SuppressLint.class, null, mDownTimeNanos,
+                "value", "MethodNameUnits");
+        this.mFlags = flags;
+        this.mMetaState = metaState;
+        this.mButtonState = buttonState;
+
+        // onConstructed(); // You can define this method to get a callback
+    }
+
+    @DataClass.Generated.Member
+    public static final @android.annotation.NonNull Parcelable.Creator<VerifiedMotionEvent> CREATOR
+            = new Parcelable.Creator<VerifiedMotionEvent>() {
+        @Override
+        public VerifiedMotionEvent[] newArray(int size) {
+            return new VerifiedMotionEvent[size];
+        }
+
+        @Override
+        public VerifiedMotionEvent createFromParcel(@android.annotation.NonNull Parcel in) {
+            return new VerifiedMotionEvent(in);
+        }
+    };
+
+    @DataClass.Generated(
+            time = 1581107073238L,
+            codegenVersion = "1.0.14",
+            sourceFile = "frameworks/base/core/java/android/view/VerifiedMotionEvent.java",
+            inputSignatures = "private static final  java.lang.String TAG\nprivate  float mRawX\nprivate  float mRawY\nprivate @android.view.VerifiedMotionEvent.MotionEventAction int mActionMasked\nprivate @android.annotation.SuppressLint({\"MethodNameUnits\"}) long mDownTimeNanos\nprivate  int mFlags\nprivate  int mMetaState\nprivate  int mButtonState\npublic @android.annotation.Nullable java.lang.Boolean getFlag(int)\nclass VerifiedMotionEvent extends android.view.VerifiedInputEvent implements [android.os.Parcelable]\n@com.android.internal.util.DataClass(genHiddenConstructor=true, genEqualsHashCode=true)")
+    @Deprecated
+    private void __metadata() {}
+
+
+    //@formatter:on
+    // End of generated code
+
+}
diff --git a/core/java/android/view/View.java b/core/java/android/view/View.java
index 5e59143..f99c965 100644
--- a/core/java/android/view/View.java
+++ b/core/java/android/view/View.java
@@ -17,13 +17,14 @@
 package android.view;
 
 import static android.content.res.Resources.ID_NULL;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DEEP_PRESS;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SINGLE_TAP;
-import static android.util.StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__UNKNOWN_CLASSIFICATION;
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
 import static android.view.accessibility.AccessibilityEvent.CONTENT_CHANGE_TYPE_UNDEFINED;
 
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__DEEP_PRESS;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__SINGLE_TAP;
+import static com.android.internal.util.FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__UNKNOWN_CLASSIFICATION;
+
 import static java.lang.Math.max;
 
 import android.animation.AnimatorInflater;
@@ -102,7 +103,6 @@
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.util.StateSet;
-import android.util.StatsLog;
 import android.util.SuperNotCalledException;
 import android.util.TypedValue;
 import android.view.AccessibilityIterators.CharacterTextSegmentIterator;
@@ -142,6 +142,7 @@
 import android.widget.ScrollBarDrawable;
 
 import com.android.internal.R;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.view.TooltipPopup;
 import com.android.internal.view.menu.MenuBuilder;
 import com.android.internal.widget.ScrollBarUtils;
@@ -3654,8 +3655,7 @@
      *
      * @deprecated For floating windows, use {@link LayoutParams#setFitInsetsTypes(int)} with
      * {@link Type#navigationBars()}. For non-floating windows that fill the screen, call
-     * {@link Window#setOnContentApplyWindowInsetsListener} with {@code null} or a listener that
-     * doesn't fit the navigation bar on the window content level.
+     * {@link Window#setDecorFitsSystemWindows(boolean)} with {@code false}.
      */
     public static final int SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION = 0x00000200;
 
@@ -3683,8 +3683,7 @@
      *
      * @deprecated For floating windows, use {@link LayoutParams#setFitInsetsTypes(int)} with
      * {@link Type#statusBars()} ()}. For non-floating windows that fill the screen, call
-     * {@link Window#setOnContentApplyWindowInsetsListener} with {@code null} or a listener that
-     * doesn't fit the status bar on the window content level.
+     * {@link Window#setDecorFitsSystemWindows(boolean)} with {@code false}.
      */
     @Deprecated
     public static final int SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN = 0x00000400;
@@ -4673,7 +4672,7 @@
 
         private ArrayList<OnUnhandledKeyEventListener> mUnhandledKeyListeners;
 
-        private WindowInsetsAnimationCallback mWindowInsetsAnimationCallback;
+        WindowInsetsAnimationCallback mWindowInsetsAnimationCallback;
 
         /**
          * This lives here since it's only valid for interactive views.
@@ -4906,6 +4905,11 @@
     private int mTouchSlop;
 
     /**
+     * Cache the ambiguous gesture multiplier from the context that created the view.
+     */
+    private float mAmbiguousGestureMultiplier;
+
+    /**
      * Object that handles automatic animation of view properties.
      */
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
@@ -5219,7 +5223,11 @@
                 (TEXT_ALIGNMENT_DEFAULT << PFLAG2_TEXT_ALIGNMENT_MASK_SHIFT) |
                 (PFLAG2_TEXT_ALIGNMENT_RESOLVED_DEFAULT) |
                 (IMPORTANT_FOR_ACCESSIBILITY_DEFAULT << PFLAG2_IMPORTANT_FOR_ACCESSIBILITY_SHIFT);
-        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+
+        final ViewConfiguration configuration = ViewConfiguration.get(context);
+        mTouchSlop = configuration.getScaledTouchSlop();
+        mAmbiguousGestureMultiplier = configuration.getScaledAmbiguousGestureMultiplier();
+
         setOverScrollMode(OVER_SCROLL_IF_CONTENT_SCROLLS);
         mUserPaddingStart = UNDEFINED_PADDING;
         mUserPaddingEnd = UNDEFINED_PADDING;
@@ -11528,7 +11536,7 @@
     }
 
     /**
-     * @see #PFLAG4_OPTIONAL_FITS_SYSTEM_WINDOWS
+     * @see #PFLAG4_FRAMEWORK_OPTIONAL_FITS_SYSTEM_WINDOWS
      * @hide
      */
     public void makeFrameworkOptionalFitsSystemWindows() {
@@ -11536,6 +11544,13 @@
     }
 
     /**
+     * @hide
+     */
+    public boolean isFrameworkOptionalFitsSystemWindows() {
+        return (mPrivateFlags4 & PFLAG4_FRAMEWORK_OPTIONAL_FITS_SYSTEM_WINDOWS) != 0;
+    }
+
+    /**
      * Returns the visibility status for this view.
      *
      * @return One of {@link #VISIBLE}, {@link #INVISIBLE}, or {@link #GONE}.
@@ -12714,12 +12729,14 @@
                 return findViewInsideOutShouldExist(root, mNextFocusForwardId);
             case FOCUS_BACKWARD: {
                 if (mID == View.NO_ID) return null;
-                return root.findViewByPredicateInsideOut(this, new Predicate<View>() {
-                    @Override
-                    public boolean test(View t) {
-                        return t.findViewById(t.mNextFocusForwardId) == View.this;
-                    }
-                });
+                final View rootView = root;
+                final View startView = this;
+                // Since we have forward links but no backward links, we need to find the view that
+                // forward links to this view. We can't just find the view with the specified ID
+                // because view IDs need not be unique throughout the tree.
+                return root.findViewByPredicateInsideOut(startView,
+                    t -> findViewInsideOutShouldExist(rootView, t, t.mNextFocusForwardId)
+                            == startView);
             }
         }
         return null;
@@ -12749,11 +12766,15 @@
     }
 
     private View findViewInsideOutShouldExist(View root, int id) {
+        return findViewInsideOutShouldExist(root, this, id);
+    }
+
+    private View findViewInsideOutShouldExist(View root, View start, int id) {
         if (mMatchIdPredicate == null) {
             mMatchIdPredicate = new MatchIdPredicate();
         }
         mMatchIdPredicate.mId = id;
-        View result = root.findViewByPredicateInsideOut(this, mMatchIdPredicate);
+        View result = root.findViewByPredicateInsideOut(start, mMatchIdPredicate);
         if (result == null) {
             Log.w(VIEW_LOG_TAG, "couldn't find view with id " + id);
         }
@@ -14455,7 +14476,7 @@
      * @hide
      */
     public boolean hasImeFocus() {
-        return mAttachInfo != null && mAttachInfo.mHasImeFocus;
+        return getViewRootImpl() != null && getViewRootImpl().getImeFocusController().hasImeFocus();
     }
 
     /**
@@ -15637,15 +15658,13 @@
                             motionClassification == MotionEvent.CLASSIFICATION_AMBIGUOUS_GESTURE;
                     int touchSlop = mTouchSlop;
                     if (ambiguousGesture && hasPendingLongPressCallback()) {
-                        final float ambiguousMultiplier =
-                                ViewConfiguration.getAmbiguousGestureMultiplier();
                         if (!pointInView(x, y, touchSlop)) {
                             // The default action here is to cancel long press. But instead, we
                             // just extend the timeout here, in case the classification
                             // stays ambiguous.
                             removeLongPressCallback();
                             long delay = (long) (ViewConfiguration.getLongPressTimeout()
-                                    * ambiguousMultiplier);
+                                    * mAmbiguousGestureMultiplier);
                             // Subtract the time already spent
                             delay -= event.getEventTime() - event.getDownTime();
                             checkForLongClick(
@@ -15654,7 +15673,7 @@
                                     y,
                                     TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__LONG_PRESS);
                         }
-                        touchSlop *= ambiguousMultiplier;
+                        touchSlop *= mAmbiguousGestureMultiplier;
                     }
 
                     // Be lenient about moving outside of buttons
@@ -28047,7 +28066,7 @@
         private boolean mOriginalPressedState;
         /**
          * The classification of the long click being checked: one of the
-         * StatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__* constants.
+         * FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED__CLASSIFICATION__* constants.
          */
         private int mClassification;
 
@@ -28113,7 +28132,8 @@
         }
         // To avoid negatively impacting View performance, the latency and displacement metrics
         // are omitted.
-        StatsLog.write(StatsLog.TOUCH_GESTURE_CLASSIFIED, getClass().getName(), classification);
+        FrameworkStatsLog.write(FrameworkStatsLog.TOUCH_GESTURE_CLASSIFIED, getClass().getName(),
+                classification);
     }
 
     /**
@@ -28711,11 +28731,6 @@
         boolean mHasWindowFocus;
 
         /**
-         * Indicates whether the view's window has IME focused.
-         */
-        boolean mHasImeFocus;
-
-        /**
          * The current visibility of the window.
          */
         int mWindowVisibility;
@@ -28974,6 +28989,18 @@
         OnContentApplyWindowInsetsListener mContentOnApplyWindowInsetsListener;
 
         /**
+         * The leash token of this view's parent when it's in an embedded hierarchy that is
+         * re-parented to another window.
+         */
+        IBinder mLeashedParentToken;
+
+        /**
+         * The accessibility view id of this view's parent when it's in an embedded
+         * hierarchy that is re-parented to another window.
+         */
+        int mLeashedParentAccessibilityViewId;
+
+        /**
          * Creates a new set of attachment information with the specified
          * events handler and thread.
          *
diff --git a/core/java/android/view/ViewConfiguration.java b/core/java/android/view/ViewConfiguration.java
index 774a2de..47a79bd 100644
--- a/core/java/android/view/ViewConfiguration.java
+++ b/core/java/android/view/ViewConfiguration.java
@@ -28,7 +28,9 @@
 import android.os.RemoteException;
 import android.provider.Settings;
 import android.util.DisplayMetrics;
+import android.util.Size;
 import android.util.SparseArray;
+import android.util.TypedValue;
 
 /**
  * Contains methods to standard constants used in the UI for timeouts, sizes, and distances.
@@ -313,6 +315,7 @@
     private final int mPagingTouchSlop;
     private final int mDoubleTapSlop;
     private final int mWindowTouchSlop;
+    private final float mAmbiguousGestureMultiplier;
     private final int mMaximumDrawingCacheSize;
     private final int mOverscrollDistance;
     private final int mOverflingDistance;
@@ -351,6 +354,7 @@
         mPagingTouchSlop = PAGING_TOUCH_SLOP;
         mDoubleTapSlop = DOUBLE_TAP_SLOP;
         mWindowTouchSlop = WINDOW_TOUCH_SLOP;
+        mAmbiguousGestureMultiplier = AMBIGUOUS_GESTURE_MULTIPLIER;
         //noinspection deprecation
         mMaximumDrawingCacheSize = MAXIMUM_DRAWING_CACHE_SIZE;
         mOverscrollDistance = OVERSCROLL_DISTANCE;
@@ -397,12 +401,17 @@
         mDoubleTapSlop = (int) (sizeAndDensity * DOUBLE_TAP_SLOP + 0.5f);
         mWindowTouchSlop = (int) (sizeAndDensity * WINDOW_TOUCH_SLOP + 0.5f);
 
+        final TypedValue multiplierValue = new TypedValue();
+        res.getValue(
+                com.android.internal.R.dimen.config_ambiguousGestureMultiplier,
+                multiplierValue,
+                true /*resolveRefs*/);
+        mAmbiguousGestureMultiplier = multiplierValue.getFloat();
+
         // Size of the screen in bytes, in ARGB_8888 format
-        final WindowManager win = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
-        final Display display = win.getDefaultDisplay();
-        final Point size = new Point();
-        display.getRealSize(size);
-        mMaximumDrawingCacheSize = 4 * size.x * size.y;
+        final WindowManager windowManager = context.getSystemService(WindowManager.class);
+        final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
+        mMaximumDrawingCacheSize = 4 * maxWindowSize.getWidth() * maxWindowSize.getHeight();
 
         mOverscrollDistance = (int) (sizeAndDensity * OVERSCROLL_DISTANCE + 0.5f);
         mOverflingDistance = (int) (sizeAndDensity * OVERFLING_DISTANCE + 0.5f);
@@ -951,22 +960,35 @@
     }
 
     /**
-     * If a MotionEvent has {@link android.view.MotionEvent#CLASSIFICATION_AMBIGUOUS_GESTURE} set,
-     * then certain actions, such as scrolling, will be inhibited.
-     * However, to account for the possibility of incorrect classification,
-     * the default scrolling will only be inhibited if the pointer travels less than
-     * (getScaledTouchSlop() * this factor).
-     * Likewise, the default long press timeout will be increased by this factor for some situations
-     * where the default behaviour is to cancel it.
+     * The multiplication factor for inhibiting default gestures.
      *
-     * @return The multiplication factor for inhibiting default gestures.
+     * If a MotionEvent has {@link android.view.MotionEvent#CLASSIFICATION_AMBIGUOUS_GESTURE} set,
+     * then certain actions, such as scrolling, will be inhibited. However, to account for the
+     * possibility of an incorrect classification, existing gesture thresholds (e.g. scrolling
+     * touch slop and the long-press timeout) should be scaled by this factor and remain in effect.
+     *
+     * @deprecated Use {@link #getScaledAmbiguousGestureMultiplier()}.
      */
+    @Deprecated
     @FloatRange(from = 1.0)
     public static float getAmbiguousGestureMultiplier() {
         return AMBIGUOUS_GESTURE_MULTIPLIER;
     }
 
     /**
+     * The multiplication factor for inhibiting default gestures.
+     *
+     * If a MotionEvent has {@link android.view.MotionEvent#CLASSIFICATION_AMBIGUOUS_GESTURE} set,
+     * then certain actions, such as scrolling, will be inhibited. However, to account for the
+     * possibility of an incorrect classification, existing gesture thresholds (e.g. scrolling
+     * touch slop and the long-press timeout) should be scaled by this factor and remain in effect.
+     */
+    @FloatRange(from = 1.0)
+    public float getScaledAmbiguousGestureMultiplier() {
+        return mAmbiguousGestureMultiplier;
+    }
+
+    /**
      * Report if the device has a permanent menu key available to the user.
      *
      * <p>As of Android 3.0, devices may not have a permanent menu key available.
diff --git a/core/java/android/view/ViewGroup.java b/core/java/android/view/ViewGroup.java
index 4f03ca1..d416d42 100644
--- a/core/java/android/view/ViewGroup.java
+++ b/core/java/android/view/ViewGroup.java
@@ -7239,6 +7239,18 @@
     public void dispatchWindowInsetsAnimationPrepare(
             @NonNull InsetsAnimation animation) {
         super.dispatchWindowInsetsAnimationPrepare(animation);
+
+        // If we are root-level content view that fits insets, set dispatch mode to stop to imitate
+        // consume behavior.
+        boolean isOptionalFitSystemWindows = (mViewFlags & OPTIONAL_FITS_SYSTEM_WINDOWS) != 0
+                || isFrameworkOptionalFitsSystemWindows();
+        if (isOptionalFitSystemWindows && mAttachInfo != null
+                && getListenerInfo().mWindowInsetsAnimationCallback == null
+                && mAttachInfo.mContentOnApplyWindowInsetsListener != null) {
+            mInsetsAnimationDispatchMode = DISPATCH_MODE_STOP;
+            return;
+        }
+
         if (mInsetsAnimationDispatchMode == DISPATCH_MODE_STOP) {
             return;
         }
diff --git a/core/java/android/view/ViewRootImpl.java b/core/java/android/view/ViewRootImpl.java
index 841c43f..857bc50 100644
--- a/core/java/android/view/ViewRootImpl.java
+++ b/core/java/android/view/ViewRootImpl.java
@@ -135,6 +135,7 @@
 import android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction;
 import android.view.accessibility.AccessibilityNodeProvider;
 import android.view.accessibility.AccessibilityWindowInfo;
+import android.view.accessibility.IAccessibilityEmbeddedConnection;
 import android.view.accessibility.IAccessibilityInteractionConnection;
 import android.view.accessibility.IAccessibilityInteractionConnectionCallback;
 import android.view.animation.AccelerateDecelerateInterpolator;
@@ -216,7 +217,7 @@
      * If set to 1, this will switch to a mode where we only use the new approach for IME, but not
      * for the status/navigation bar.
      */
-    private static final String USE_NEW_INSETS_PROPERTY = "persist.wm.new_insets";
+    private static final String USE_NEW_INSETS_PROPERTY = "persist.debug.new_insets";
 
     /**
      * @see #USE_NEW_INSETS_PROPERTY
@@ -315,6 +316,8 @@
      */
     private boolean mForceNextConfigUpdate;
 
+    private final boolean mUseBLASTAdapter;
+
     /**
      * Signals that compatibility booleans have been initialized according to
      * target SDK versions.
@@ -353,6 +356,8 @@
 
     final W mWindow;
 
+    final IBinder mLeashToken;
+
     final int mTargetSdkVersion;
 
     int mSeq;
@@ -650,6 +655,8 @@
 
     private final GestureExclusionTracker mGestureExclusionTracker = new GestureExclusionTracker();
 
+    private IAccessibilityEmbeddedConnection mEmbeddedConnection;
+
     static final class SystemUiVisibilityInfo {
         int seq;
         int globalVisibility;
@@ -683,6 +690,7 @@
         mVisRect = new Rect();
         mWinFrame = new Rect();
         mWindow = new W(this);
+        mLeashToken = new Binder();
         mTargetSdkVersion = context.getApplicationInfo().targetSdkVersion;
         mViewVisibility = View.GONE;
         mTransparentRegion = new Region();
@@ -734,6 +742,7 @@
 
         loadSystemProperties();
         mImeFocusController = new ImeFocusController(this);
+        mUseBLASTAdapter = WindowManagerGlobal.useBLAST();
     }
 
     public static void addFirstDrawHandler(Runnable callback) {
@@ -861,7 +870,7 @@
                 if (mWindowAttributes.packageName == null) {
                     mWindowAttributes.packageName = mBasePackageName;
                 }
-                if (WindowManagerGlobal.USE_BLAST_ADAPTER) {
+                if (mUseBLASTAdapter) {
                     mWindowAttributes.privateFlags |=
                         WindowManager.LayoutParams.PRIVATE_FLAG_USE_BLAST;
                 }
@@ -1341,7 +1350,7 @@
             }
             mWindowAttributes.privateFlags |= compatibleWindowFlag;
 
-            if (WindowManagerGlobal.USE_BLAST_ADAPTER) {
+            if (mUseBLASTAdapter) {
                 mWindowAttributes.privateFlags |=
                     WindowManager.LayoutParams.PRIVATE_FLAG_USE_BLAST;
             }
@@ -1691,7 +1700,7 @@
                     .build();
             setBoundsLayerCrop();
             mTransaction.show(mBoundsLayer).apply();
-        } 
+        }
        return mBoundsLayer;
     }
 
@@ -1699,7 +1708,9 @@
         if (mSurfaceControl == null || !mSurfaceControl.isValid()) {
             return null;
         }
-        if ((mBlastBufferQueue != null) && mBlastSurfaceControl.isValid()) {
+        if ((mBlastSurfaceControl != null)
+                && (mBlastBufferQueue == null)
+                && mBlastSurfaceControl.isValid()) {
             mBlastBufferQueue = new BLASTBufferQueue(
                 mBlastSurfaceControl, width, height);
         }
@@ -1742,12 +1753,9 @@
         mSurface.release();
         mSurfaceControl.release();
 
-        if (mBlastBufferQueue != null) {
-            mTransaction.remove(mBlastSurfaceControl).apply();
-            mBlastSurfaceControl = null;
-            // We should probably add an explicit dispose.
-            mBlastBufferQueue = null;
-        }
+        mBlastSurfaceControl.release();
+        // We should probably add an explicit dispose.
+        mBlastBufferQueue = null;
     }
 
     /**
@@ -3143,8 +3151,7 @@
             }
 
             mAttachInfo.mHasWindowFocus = hasWindowFocus;
-            mAttachInfo.mHasImeFocus = mImeFocusController.updateImeFocusable(
-                    mWindowAttributes, true /* force */);
+            mImeFocusController.updateImeFocusable(mWindowAttributes, true /* force */);
             mImeFocusController.onPreWindowFocus(hasWindowFocus, mWindowAttributes);
 
             if (mView != null) {
@@ -3348,7 +3355,6 @@
 
     private void performLayout(WindowManager.LayoutParams lp, int desiredWindowWidth,
             int desiredWindowHeight) {
-        mLayoutRequested = false;
         mScrollMayChange = true;
         mInLayout = true;
 
@@ -4887,8 +4893,14 @@
                     break;
                 case MSG_INSETS_CONTROL_CHANGED: {
                     SomeArgs args = (SomeArgs) msg.obj;
-                    mInsetsController.onControlsChanged((InsetsSourceControl[]) args.arg2);
+
+                    // Deliver state change before control change, such that:
+                    // a) When gaining control, controller can compare with server state to evaluate
+                    // whether it needs to run animation.
+                    // b) When loosing control, controller can restore server state by taking last
+                    // dispatched state as truth.
                     mInsetsController.onStateChanged((InsetsState) args.arg1);
+                    mInsetsController.onControlsChanged((InsetsSourceControl[]) args.arg2);
                     break;
                 }
                 case MSG_SHOW_INSETS: {
@@ -7339,7 +7351,7 @@
                 mPendingMergedConfiguration, mSurfaceControl, mTempInsets, mSurfaceSize,
                 mBlastSurfaceControl);
         if (mSurfaceControl.isValid()) {
-            if (!WindowManagerGlobal.USE_BLAST_ADAPTER) {
+            if (!mUseBLASTAdapter) {
                 mSurface.copyFrom(mSurfaceControl);
             } else {
                 mSurface.transferFrom(getOrCreateBLASTSurface(mSurfaceSize.x,
@@ -9151,6 +9163,10 @@
                         focusedView.sendAccessibilityEvent(AccessibilityEvent.TYPE_VIEW_FOCUSED);
                     }
                 }
+                if (mAttachInfo.mLeashedParentToken != null) {
+                    mAccessibilityManager.associateEmbeddedHierarchy(
+                            mAttachInfo.mLeashedParentToken, mLeashToken);
+                }
             } else {
                 ensureNoConnection();
                 mHandler.obtainMessage(MSG_CLEAR_ACCESSIBILITY_FOCUS_HOST).sendToTarget();
@@ -9163,6 +9179,7 @@
             if (!registered) {
                 mAttachInfo.mAccessibilityWindowId =
                         mAccessibilityManager.addAccessibilityInteractionConnection(mWindow,
+                                mLeashToken,
                                 mContext.getPackageName(),
                                 new AccessibilityInteractionConnection(ViewRootImpl.this));
             }
@@ -9349,6 +9366,17 @@
         }
     }
 
+    /**
+     * Gets an accessibility embedded connection interface for this ViewRootImpl.
+     * @hide
+     */
+    public IAccessibilityEmbeddedConnection getEmbeddedConnection() {
+        if (mEmbeddedConnection == null) {
+            mEmbeddedConnection = new AccessibilityEmbeddedConnection(ViewRootImpl.this);
+        }
+        return mEmbeddedConnection;
+    }
+
     private class SendWindowContentChangedAccessibilityEvent implements Runnable {
         private int mChangeTypes = 0;
 
@@ -9534,7 +9562,7 @@
     }
 
     SurfaceControl getRenderSurfaceControl() {
-        if (WindowManagerGlobal.USE_BLAST_ADAPTER) {
+        if (mUseBLASTAdapter) {
             return mBlastSurfaceControl;
         } else {
             return mSurfaceControl;
diff --git a/core/java/android/view/Window.java b/core/java/android/view/Window.java
index 0ef4e33..4b284db 100644
--- a/core/java/android/view/Window.java
+++ b/core/java/android/view/Window.java
@@ -697,12 +697,10 @@
     }
 
     /**
-     * Listener for applying window insets on the content of a window in a custom way.
+     * Listener for applying window insets on the content of a window. Used only by the framework to
+     * fit content according to legacy SystemUI flags.
      *
-     * <p>Apps may choose to implement this interface if they want to apply custom policy
-     * to the way that window insets are treated for fitting root-level content views.
-     *
-     * @see Window#setOnContentApplyWindowInsetsListener(OnContentApplyWindowInsetsListener)
+     * @hide
      */
     public interface OnContentApplyWindowInsetsListener {
 
@@ -716,13 +714,15 @@
          *
          * @param insets The root level insets that are about to be dispatched
          * @return A pair, with the first element containing the insets to apply as margin to the
-         *         root-level content views, and the second element determining what should be
-         *         dispatched to the content view.
+         * root-level content views, and the second element determining what should be
+         * dispatched to the content view.
          */
-        @NonNull Pair<Insets, WindowInsets> onContentApplyWindowInsets(
+        @NonNull
+        Pair<Insets, WindowInsets> onContentApplyWindowInsets(
                 @NonNull WindowInsets insets);
     }
 
+
     public Window(Context context) {
         mContext = context;
         mFeatures = mLocalFeatures = getDefaultFeatures(context);
@@ -1311,33 +1311,21 @@
     }
 
     /**
-     * Sets the listener to be invoked when fitting root-level content views.
+     * Sets whether the decor view should fit root-level content views for {@link WindowInsets}.
      * <p>
-     * By default, a listener that inspects the now deprecated {@link View#SYSTEM_UI_LAYOUT_FLAGS}
-     * as well the {@link WindowManager.LayoutParams#SOFT_INPUT_ADJUST_RESIZE} flag is installed and
-     * fits content according to these flags.
+     * If set to {@code true}, the framework will inspect the now deprecated
+     * {@link View#SYSTEM_UI_LAYOUT_FLAGS} as well the
+     * {@link WindowManager.LayoutParams#SOFT_INPUT_ADJUST_RESIZE} flag and fits content according
+     * to these flags.
      * </p>
-     * @param contentOnApplyWindowInsetsListener The listener to use for fitting root-level content
-     *                                           views, or {@code null} to disable any kind of
-     *                                           content fitting on the window level and letting the
-     *                                           {@link WindowInsets} pass through to the content
-     *                                           view.
-     * @see OnContentApplyWindowInsetsListener
-     */
-    public void setOnContentApplyWindowInsetsListener(
-            @Nullable OnContentApplyWindowInsetsListener contentOnApplyWindowInsetsListener) {
-    }
-
-    /**
-     * Resets the listener set via {@link #setOnContentApplyWindowInsetsListener} to the default
-     * state.
      * <p>
-     * By default, a listener that inspects the now deprecated {@link View#SYSTEM_UI_LAYOUT_FLAGS}
-     * as well the {@link WindowManager.LayoutParams#SOFT_INPUT_ADJUST_RESIZE} flag is installed and
-     * fits content according to these flags.
+     * If set to {@code false}, the framework will not fit the content view to the insets and will
+     * just pass through the {@link WindowInsets} to the content view.
      * </p>
+     * @param decorFitsSystemWindows Whether the decor view should fit root-level content views for
+     *                               insets.
      */
-    public void resetOnContentApplyWindowInsetsListener() {
+    public void setDecorFitsSystemWindows(boolean decorFitsSystemWindows) {
     }
 
     /**
diff --git a/core/java/android/view/WindowContainerTransaction.java b/core/java/android/view/WindowContainerTransaction.java
index c55caa3..cf34b0b 100644
--- a/core/java/android/view/WindowContainerTransaction.java
+++ b/core/java/android/view/WindowContainerTransaction.java
@@ -16,6 +16,8 @@
 
 package android.view;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.WindowConfiguration;
 import android.content.pm.ActivityInfo;
 import android.content.res.Configuration;
@@ -25,6 +27,8 @@
 import android.os.Parcelable;
 import android.util.ArrayMap;
 
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 
 /**
@@ -36,10 +40,14 @@
 public class WindowContainerTransaction implements Parcelable {
     private final ArrayMap<IBinder, Change> mChanges = new ArrayMap<>();
 
+    // Flat list because re-order operations are order-dependent
+    private final ArrayList<HierarchyOp> mHierarchyOps = new ArrayList<>();
+
     public WindowContainerTransaction() {}
 
     protected WindowContainerTransaction(Parcel in) {
         in.readMap(mChanges, null /* loader */);
+        in.readList(mHierarchyOps, null /* loader */);
     }
 
     private Change getOrCreateChange(IBinder token) {
@@ -86,10 +94,50 @@
         return this;
     }
 
+    /**
+     * Set the smallestScreenWidth of a container.
+     */
+    public WindowContainerTransaction setSmallestScreenWidthDp(IWindowContainer container,
+            int widthDp) {
+        Change cfg = getOrCreateChange(container.asBinder());
+        cfg.mConfiguration.smallestScreenWidthDp = widthDp;
+        cfg.mConfigSetMask |= ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
+        return this;
+    }
+
+    /**
+     * Reparents a container into another one. The effect of a {@code null} parent can vary. For
+     * example, reparenting a stack to {@code null} will reparent it to its display.
+     *
+     * @param onTop When {@code true}, the child goes to the top of parent; otherwise it goes to
+     *              the bottom.
+     */
+    public WindowContainerTransaction reparent(@NonNull IWindowContainer child,
+            @Nullable IWindowContainer parent, boolean onTop) {
+        mHierarchyOps.add(new HierarchyOp(child.asBinder(),
+                parent == null ? null : parent.asBinder(), onTop));
+        return this;
+    }
+
+    /**
+     * Reorders a container within its parent.
+     *
+     * @param onTop When {@code true}, the child goes to the top of parent; otherwise it goes to
+     *              the bottom.
+     */
+    public WindowContainerTransaction reorder(@NonNull IWindowContainer child, boolean onTop) {
+        mHierarchyOps.add(new HierarchyOp(child.asBinder(), onTop));
+        return this;
+    }
+
     public Map<IBinder, Change> getChanges() {
         return mChanges;
     }
 
+    public List<HierarchyOp> getHierarchyOps() {
+        return mHierarchyOps;
+    }
+
     @Override
     public String toString() {
         return "WindowContainerTransaction { changes = " + mChanges + " }";
@@ -98,6 +146,7 @@
     @Override
     public void writeToParcel(Parcel dest, int flags) {
         dest.writeMap(mChanges);
+        dest.writeList(mHierarchyOps);
     }
 
     @Override
@@ -238,4 +287,88 @@
             }
         };
     }
+
+    /**
+     * Holds information about a reparent/reorder operation in the hierarchy. This is separate from
+     * Changes because they must be executed in the same order that they are added.
+     */
+    public static class HierarchyOp implements Parcelable {
+        private final IBinder mContainer;
+
+        // If this is same as mContainer, then only change position, don't reparent.
+        private final IBinder mReparent;
+
+        // Moves/reparents to top of parent when {@code true}, otherwise moves/reparents to bottom.
+        private final boolean mToTop;
+
+        public HierarchyOp(@NonNull IBinder container, @Nullable IBinder reparent, boolean toTop) {
+            mContainer = container;
+            mReparent = reparent;
+            mToTop = toTop;
+        }
+
+        public HierarchyOp(@NonNull IBinder container, boolean toTop) {
+            mContainer = container;
+            mReparent = container;
+            mToTop = toTop;
+        }
+
+        protected HierarchyOp(Parcel in) {
+            mContainer = in.readStrongBinder();
+            mReparent = in.readStrongBinder();
+            mToTop = in.readBoolean();
+        }
+
+        public boolean isReparent() {
+            return mContainer != mReparent;
+        }
+
+        @Nullable
+        public IBinder getNewParent() {
+            return mReparent;
+        }
+
+        @NonNull
+        public IBinder getContainer() {
+            return mContainer;
+        }
+
+        public boolean getToTop() {
+            return mToTop;
+        }
+
+        @Override
+        public String toString() {
+            if (isReparent()) {
+                return "{reparent: " + mContainer + " to " + (mToTop ? "top of " : "bottom of ")
+                        + mReparent + "}";
+            } else {
+                return "{reorder: " + mContainer + " to " + (mToTop ? "top" : "bottom") + "}";
+            }
+        }
+
+        @Override
+        public void writeToParcel(Parcel dest, int flags) {
+            dest.writeStrongBinder(mContainer);
+            dest.writeStrongBinder(mReparent);
+            dest.writeBoolean(mToTop);
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        public static final Creator<HierarchyOp> CREATOR = new Creator<HierarchyOp>() {
+            @Override
+            public HierarchyOp createFromParcel(Parcel in) {
+                return new HierarchyOp(in);
+            }
+
+            @Override
+            public HierarchyOp[] newArray(int size) {
+                return new HierarchyOp[size];
+            }
+        };
+    }
 }
diff --git a/core/java/android/view/WindowInsetsAnimationCallback.java b/core/java/android/view/WindowInsetsAnimationCallback.java
index 1e04d02..4c8463b3 100644
--- a/core/java/android/view/WindowInsetsAnimationCallback.java
+++ b/core/java/android/view/WindowInsetsAnimationCallback.java
@@ -86,9 +86,9 @@
      * following:
      * <p>
      * <ul>
-     *     <li>Application calls {@link WindowInsetsController#hideInputMethod()},
-     *     {@link WindowInsetsController#showInputMethod()},
-     *     {@link WindowInsetsController#controlInputMethodAnimation}</li>
+     *     <li>Application calls {@link WindowInsetsController#hide(int)},
+     *     {@link WindowInsetsController#show(int)},
+     *     {@link WindowInsetsController#controlWindowInsetsAnimation}</li>
      *     <li>onPrepare is called on the view hierarchy listeners</li>
      *     <li>{@link View#onApplyWindowInsets} will be called with the end state of the
      *     animation</li>
@@ -106,12 +106,12 @@
      * related methods.
      * <p>
      * Note: If the animation is application controlled by using
-     * {@link WindowInsetsController#controlInputMethodAnimation}, the end state of the animation
+     * {@link WindowInsetsController#controlWindowInsetsAnimation}, the end state of the animation
      * is undefined as the application may decide on the end state only by passing in the
      * {@code shown} parameter when calling {@link WindowInsetsAnimationController#finish}. In this
      * situation, the system will dispatch the insets in the opposite visibility state before the
      * animation starts. Example: When controlling the input method with
-     * {@link WindowInsetsController#controlInputMethodAnimation} and the input method is currently
+     * {@link WindowInsetsController#controlWindowInsetsAnimation} and the input method is currently
      * showing, {@link View#onApplyWindowInsets} will receive a {@link WindowInsets} instance for
      * which {@link WindowInsets#isVisible} will return {@code false} for {@link Type#ime}.
      *
@@ -246,7 +246,7 @@
          * be the same as the application passed into
          * {@link WindowInsetsAnimationController#setInsetsAndAlpha(Insets, float, float)},
          * interpolated with the interpolator passed into
-         * {@link WindowInsetsController#controlInputMethodAnimation}.
+         * {@link WindowInsetsController#controlWindowInsetsAnimation}.
          * </p>
          * <p>
          * Note: For system-initiated animations, this will always return a valid value between 0
diff --git a/core/java/android/view/WindowInsetsAnimationControlListener.java b/core/java/android/view/WindowInsetsAnimationControlListener.java
index f91254d..701bd31 100644
--- a/core/java/android/view/WindowInsetsAnimationControlListener.java
+++ b/core/java/android/view/WindowInsetsAnimationControlListener.java
@@ -39,7 +39,7 @@
      * @param controller The controller to control the inset animation.
      * @param types The {@link InsetsType}s it was able to gain control over. Note that this may be
      *              different than the types passed into
-     *              {@link WindowInsetsController#controlInputMethodAnimation} in case the window
+     *              {@link WindowInsetsController#controlWindowInsetsAnimation} in case the window
      *              wasn't able to gain the controls because it wasn't the IME target or not
      *              currently the window that's controlling the system bars.
      */
diff --git a/core/java/android/view/WindowInsetsAnimationController.java b/core/java/android/view/WindowInsetsAnimationController.java
index 2bf0d27..4a864be 100644
--- a/core/java/android/view/WindowInsetsAnimationController.java
+++ b/core/java/android/view/WindowInsetsAnimationController.java
@@ -23,6 +23,7 @@
 import android.graphics.Insets;
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.WindowInsetsAnimationCallback.AnimationBounds;
+import android.view.animation.Interpolator;
 
 /**
  * Controller for app-driven animation of system windows.
@@ -32,7 +33,7 @@
  *  synchronized, such that changes the system windows and the app's current frame
  *  are rendered at the same time.
  *  <p>
- *  Control is obtained through {@link WindowInsetsController#controlInputMethodAnimation}.
+ *  Control is obtained through {@link WindowInsetsController#controlWindowInsetsAnimation}.
  */
 @SuppressLint("NotClosable")
 public interface WindowInsetsAnimationController {
diff --git a/core/java/android/view/WindowInsetsController.java b/core/java/android/view/WindowInsetsController.java
index 02323cf..27e92e5 100644
--- a/core/java/android/view/WindowInsetsController.java
+++ b/core/java/android/view/WindowInsetsController.java
@@ -16,12 +16,11 @@
 
 package android.view;
 
-import static android.view.WindowInsets.Type.ime;
-
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.graphics.Insets;
+import android.os.CancellationSignal;
 import android.view.WindowInsets.Type.InsetsType;
 import android.view.WindowInsetsAnimationCallback.InsetsAnimation;
 import android.view.animation.Interpolator;
@@ -148,30 +147,6 @@
      * @param types The {@link InsetsType}s the application has requested to control.
      * @param durationMillis Duration of animation in
      *                       {@link java.util.concurrent.TimeUnit#MILLISECONDS}, or -1 if the
-     *                       animation doesn't have a predetermined duration.T his value will be
-     *                       passed to {@link InsetsAnimation#getDurationMillis()}
-     * @param interpolator The interpolator used for this animation, or {@code null} if this
-     *                     animation doesn't follow an interpolation curve. This value will be
-     *                     passed to {@link InsetsAnimation#getInterpolator()} and used to calculate
-     *                     {@link InsetsAnimation#getInterpolatedFraction()}.
-     * @param listener The {@link WindowInsetsAnimationControlListener} that gets called when the
-     *                 windows are ready to be controlled, among other callbacks.
-     *
-     * @see InsetsAnimation#getFraction()
-     * @see InsetsAnimation#getInterpolatedFraction()
-     * @see InsetsAnimation#getInterpolator()
-     * @see InsetsAnimation#getDurationMillis()
-     */
-    void controlWindowInsetsAnimation(@InsetsType int types, long durationMillis,
-            @Nullable Interpolator interpolator,
-            @NonNull WindowInsetsAnimationControlListener listener);
-
-    /**
-     * Lets the application control the animation for showing the IME in a frame-by-frame manner by
-     * modifying the position of the IME when it's causing insets.
-     *
-     * @param durationMillis Duration of the animation in
-     *                       {@link java.util.concurrent.TimeUnit#MILLISECONDS}, or -1 if the
      *                       animation doesn't have a predetermined duration. This value will be
      *                       passed to {@link InsetsAnimation#getDurationMillis()}
      * @param interpolator The interpolator used for this animation, or {@code null} if this
@@ -179,48 +154,18 @@
      *                     passed to {@link InsetsAnimation#getInterpolator()} and used to calculate
      *                     {@link InsetsAnimation#getInterpolatedFraction()}.
      * @param listener The {@link WindowInsetsAnimationControlListener} that gets called when the
-     *                 IME are ready to be controlled, among other callbacks.
-     *
+     *                 windows are ready to be controlled, among other callbacks.
+     * @return A cancellation signal that the caller can use to cancel the request to obtain
+     *         control, or once they have control, to cancel the control.
      * @see InsetsAnimation#getFraction()
      * @see InsetsAnimation#getInterpolatedFraction()
      * @see InsetsAnimation#getInterpolator()
      * @see InsetsAnimation#getDurationMillis()
      */
-    default void controlInputMethodAnimation(long durationMillis,
+    @NonNull
+    CancellationSignal controlWindowInsetsAnimation(@InsetsType int types, long durationMillis,
             @Nullable Interpolator interpolator,
-            @NonNull WindowInsetsAnimationControlListener listener) {
-        controlWindowInsetsAnimation(ime(), durationMillis, interpolator, listener);
-    }
-
-    /**
-     * Makes the IME appear on screen.
-     * <p>
-     * Note that if the window currently doesn't have control over the IME, because it doesn't have
-     * focus, it will apply the change as soon as the window gains control. The app can listen to
-     * the event by observing {@link View#onApplyWindowInsets} and checking visibility with
-     * {@link WindowInsets#isVisible}.
-     *
-     * @see #controlInputMethodAnimation
-     * @see #hideInputMethod()
-     */
-    default void showInputMethod() {
-        show(ime());
-    }
-
-    /**
-     * Makes the IME disappear on screen.
-     * <p>
-     * Note that if the window currently doesn't have control over IME, because it doesn't have
-     * focus, it will apply the change as soon as the window gains control. The app can listen to
-     * the event by observing {@link View#onApplyWindowInsets} and checking visibility with
-     * {@link WindowInsets#isVisible}.
-     *
-     * @see #controlInputMethodAnimation
-     * @see #showInputMethod()
-     */
-    default void hideInputMethod() {
-        hide(ime());
-    }
+            @NonNull WindowInsetsAnimationControlListener listener);
 
     /**
      * Controls the appearance of system bars.
diff --git a/core/java/android/view/WindowManager.java b/core/java/android/view/WindowManager.java
index a6450a1..e731323 100644
--- a/core/java/android/view/WindowManager.java
+++ b/core/java/android/view/WindowManager.java
@@ -80,6 +80,7 @@
 import android.text.TextUtils;
 import android.util.Log;
 import android.util.proto.ProtoOutputStream;
+import android.view.View.OnApplyWindowInsetsListener;
 import android.view.WindowInsets.Side;
 import android.view.WindowInsets.Side.InsetsSide;
 import android.view.WindowInsets.Type;
@@ -2193,8 +2194,9 @@
          * value for {@link #softInputMode} will be ignored; the window will
          * not resize, but will stay fullscreen.
          *
-         * @deprecated Use {@link Window#setOnContentApplyWindowInsetsListener} instead with a
-         * listener that fits {@link Type#ime()} instead.
+         * @deprecated Call {@link Window#setDecorFitsSystemWindows(boolean)} with {@code false} and
+         * install an {@link OnApplyWindowInsetsListener} on your root content view that fits insets
+         * of type {@link Type#ime()}.
          */
         @Deprecated
         public static final int SOFT_INPUT_ADJUST_RESIZE = 0x10;
@@ -3685,6 +3687,8 @@
                     return "always";
                 case LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER:
                     return "never";
+                case LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES:
+                    return "shortEdges";
                 default:
                     return "unknown(" + mode + ")";
             }
diff --git a/core/java/android/view/WindowManagerGlobal.java b/core/java/android/view/WindowManagerGlobal.java
index f03c4e7..01a1c77 100644
--- a/core/java/android/view/WindowManagerGlobal.java
+++ b/core/java/android/view/WindowManagerGlobal.java
@@ -56,13 +56,7 @@
 public final class WindowManagerGlobal {
     private static final String TAG = "WindowManager";
 
-    private static final String WM_USE_BLAST_ADAPTER_FLAG = "wm_use_blast_adapter";
-
-    /**
-     * This flag controls whether ViewRootImpl will utilize the Blast Adapter
-     * to send buffer updates to SurfaceFlinger
-     */
-    public static final boolean USE_BLAST_ADAPTER = false;
+    private static boolean sUseBLASTAdapter = false;
 
     /**
      * The user is navigating with keys (not the touch screen), so
@@ -192,6 +186,7 @@
                     if (sWindowManagerService != null) {
                         ValueAnimator.setDurationScale(
                                 sWindowManagerService.getCurrentAnimatorScale());
+                        sUseBLASTAdapter = sWindowManagerService.useBLAST();
                     }
                 } catch (RemoteException e) {
                     throw e.rethrowFromSystemServer();
@@ -233,6 +228,13 @@
         }
     }
 
+    /**
+     * Whether or not to use BLAST for ViewRootImpl
+     */
+    public static boolean useBLAST() {
+        return sUseBLASTAdapter;
+    }
+
     @UnsupportedAppUsage
     public String[] getViewRootNames() {
         synchronized (mLock) {
diff --git a/core/java/android/view/WindowManagerImpl.java b/core/java/android/view/WindowManagerImpl.java
index 4365d1f..56683dd 100644
--- a/core/java/android/view/WindowManagerImpl.java
+++ b/core/java/android/view/WindowManagerImpl.java
@@ -277,7 +277,7 @@
                     .setStableInsets(Insets.of(stableInsets))
                     .setDisplayCutout(displayCutout.get()).build();
         } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
-        return null;
     }
 }
diff --git a/core/java/android/view/WindowlessWindowManager.java b/core/java/android/view/WindowlessWindowManager.java
index 91778aa..62f3fa4 100644
--- a/core/java/android/view/WindowlessWindowManager.java
+++ b/core/java/android/view/WindowlessWindowManager.java
@@ -41,9 +41,14 @@
     private class State {
         SurfaceControl mSurfaceControl;
         WindowManager.LayoutParams mParams = new WindowManager.LayoutParams();
-        State(SurfaceControl sc, WindowManager.LayoutParams p) {
+        int mDisplayId;
+        IBinder mInputChannelToken;
+        State(SurfaceControl sc, WindowManager.LayoutParams p, int displayId,
+                IBinder inputChannelToken) {
             mSurfaceControl = sc;
             mParams.copyFrom(p);
+            mDisplayId = displayId;
+            mInputChannelToken = inputChannelToken;
         }
     };
 
@@ -105,19 +110,23 @@
                 .setFormat(attrs.format)
                 .setName(attrs.getTitle().toString());
         final SurfaceControl sc = b.build();
-        synchronized (this) {
-            mStateForWindow.put(window.asBinder(), new State(sc, attrs));
-        }
 
         if (((attrs.inputFeatures &
                 WindowManager.LayoutParams.INPUT_FEATURE_NO_INPUT_CHANNEL) == 0)) {
             try {
-                mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, outInputChannel);
+                mRealWm.grantInputChannel(displayId, sc, window, mHostInputToken, attrs.flags,
+                        outInputChannel);
             } catch (RemoteException e) {
-                Log.e(TAG, "Failed to bless surface: " + e);
+                Log.e(TAG, "Failed to grant input to surface: ", e);
             }
         }
 
+        final State state = new State(sc, attrs, displayId,
+                outInputChannel != null ? outInputChannel.getToken() : null);
+        synchronized (this) {
+            mStateForWindow.put(window.asBinder(), state);
+        }
+
         return WindowManagerGlobal.ADD_OKAY | WindowManagerGlobal.ADD_FLAG_APP_VISIBLE;
     }
 
@@ -162,7 +171,7 @@
             DisplayCutout.ParcelableWrapper cutout, MergedConfiguration mergedConfiguration,
             SurfaceControl outSurfaceControl, InsetsState outInsetsState,
             Point outSurfaceSize, SurfaceControl outBLASTSurfaceControl) {
-        State state = null;
+        final State state;
         synchronized (this) {
             state = mStateForWindow.get(window.asBinder());
         }
@@ -173,8 +182,9 @@
         SurfaceControl sc = state.mSurfaceControl;
         SurfaceControl.Transaction t = new SurfaceControl.Transaction();
 
+        int attrChanges = 0;
         if (inAttrs != null) {
-            state.mParams.copyFrom(inAttrs);
+            attrChanges = state.mParams.copyFrom(inAttrs);
         }
         WindowManager.LayoutParams attrs = state.mParams;
 
@@ -197,6 +207,16 @@
 
         mergedConfiguration.setConfiguration(mConfiguration, mConfiguration);
 
+        if ((attrChanges & WindowManager.LayoutParams.FLAGS_CHANGED) != 0
+                && state.mInputChannelToken != null) {
+            try {
+                mRealWm.updateInputChannel(state.mInputChannelToken, state.mDisplayId, sc,
+                        attrs.flags);
+            } catch (RemoteException e) {
+                Log.e(TAG, "Failed to update surface input channel: ", e);
+            }
+        }
+
         return 0;
     }
 
@@ -353,7 +373,12 @@
 
     @Override
     public void grantInputChannel(int displayId, SurfaceControl surface, IWindow window,
-            IBinder hostInputToken, InputChannel outInputChannel) {
+            IBinder hostInputToken, int flags, InputChannel outInputChannel) {
+    }
+
+    @Override
+    public void updateInputChannel(IBinder channelToken, int displayId, SurfaceControl surface,
+            int flags) {
     }
 
     @Override
diff --git a/core/java/android/view/accessibility/AccessibilityInteractionClient.java b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
index b9f08ad..b4c8795 100644
--- a/core/java/android/view/accessibility/AccessibilityInteractionClient.java
+++ b/core/java/android/view/accessibility/AccessibilityInteractionClient.java
@@ -20,7 +20,6 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
-import android.graphics.Bitmap;
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
@@ -829,31 +828,6 @@
     }
 
     /**
-     * Takes the screenshot of the specified display and returns it by bitmap format.
-     *
-     * @param connectionId The id of a connection for interacting with the system.
-     * @param displayId The logic display id, use {@link Display#DEFAULT_DISPLAY} for
-     *                  default display.
-     * @return The screenshot bitmap on success, null otherwise.
-     */
-    public Bitmap takeScreenshot(int connectionId, int displayId) {
-        Bitmap screenShot = null;
-        try {
-            IAccessibilityServiceConnection connection = getConnection(connectionId);
-            if (connection != null) {
-                screenShot = connection.takeScreenshot(displayId);
-            } else {
-                if (DEBUG) {
-                    Log.w(LOG_TAG, "No connection for connection id: " + connectionId);
-                }
-            }
-        } catch (RemoteException re) {
-            Log.w(LOG_TAG, "Error while calling remote takeScreenshot", re);
-        }
-        return screenShot;
-    }
-
-    /**
      * Clears the result state.
      */
     private void clearResultLocked() {
diff --git a/core/java/android/view/accessibility/AccessibilityManager.java b/core/java/android/view/accessibility/AccessibilityManager.java
index 02b098b..dc87453 100644
--- a/core/java/android/view/accessibility/AccessibilityManager.java
+++ b/core/java/android/view/accessibility/AccessibilityManager.java
@@ -1086,6 +1086,50 @@
     }
 
     /**
+     * Associate the connection between the host View and the embedded SurfaceControlViewHost.
+     *
+     * @hide
+     */
+    public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) {
+        final IAccessibilityManager service;
+        synchronized (mLock) {
+            service = getServiceLocked();
+            if (service == null) {
+                return;
+            }
+        }
+        try {
+            service.associateEmbeddedHierarchy(host, embedded);
+        } catch (RemoteException e) {
+            return;
+        }
+    }
+
+    /**
+     * Disassociate the connection between the host View and the embedded SurfaceControlViewHost.
+     * The given token could be either from host side or embedded side.
+     *
+     * @hide
+     */
+    public void disassociateEmbeddedHierarchy(@NonNull IBinder token) {
+        if (token == null) {
+            return;
+        }
+        final IAccessibilityManager service;
+        synchronized (mLock) {
+            service = getServiceLocked();
+            if (service == null) {
+                return;
+            }
+        }
+        try {
+            service.disassociateEmbeddedHierarchy(token);
+        } catch (RemoteException e) {
+            return;
+        }
+    }
+
+    /**
      * Sets the current state and notifies listeners, if necessary.
      *
      * @param stateFlags The state flags.
@@ -1147,11 +1191,12 @@
     /**
      * Adds an accessibility interaction connection interface for a given window.
      * @param windowToken The window token to which a connection is added.
+     * @param leashToken The leash token to which a connection is added.
      * @param connection The connection.
      *
      * @hide
      */
-    public int addAccessibilityInteractionConnection(IWindow windowToken,
+    public int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken,
             String packageName, IAccessibilityInteractionConnection connection) {
         final IAccessibilityManager service;
         final int userId;
@@ -1163,8 +1208,8 @@
             userId = mUserId;
         }
         try {
-            return service.addAccessibilityInteractionConnection(windowToken, connection,
-                    packageName, userId);
+            return service.addAccessibilityInteractionConnection(windowToken, leashToken,
+                    connection, packageName, userId);
         } catch (RemoteException re) {
             Log.e(LOG_TAG, "Error while adding an accessibility interaction connection. ", re);
         }
diff --git a/core/java/android/view/accessibility/AccessibilityNodeInfo.java b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
index 184f3302..bf2de14 100644
--- a/core/java/android/view/accessibility/AccessibilityNodeInfo.java
+++ b/core/java/android/view/accessibility/AccessibilityNodeInfo.java
@@ -551,6 +551,14 @@
     public static final String ACTION_ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT =
             "android.view.accessibility.action.ARGUMENT_PRESS_HOLD_DURATION_MILLIS_INT";
 
+    /**
+     * Argument to represent the IME action Id to press the returning key on a node.
+     * For use with R.id.accessibilityActionImeEnter
+     * @hide
+     */
+    public static final String ACTION_ARGUMENT_IME_ACTION_ID_INT =
+            "android.view.accessibility.action.ARGUMENT_IME_ACTION_ID_INT";
+
     // Focus types
 
     /**
@@ -1644,8 +1652,12 @@
             return false;
         }
         AccessibilityInteractionClient client = AccessibilityInteractionClient.getInstance();
+        Bundle arguments = null;
+        if (mExtras != null) {
+            arguments = mExtras;
+        }
         return client.performAccessibilityAction(mConnectionId, mWindowId, mSourceNodeId,
-                action, null);
+                action, arguments);
     }
 
     /**
@@ -4210,6 +4222,8 @@
                 return "ACTION_HIDE_TOOLTIP";
             case R.id.accessibilityActionPressAndHold:
                 return "ACTION_PRESS_AND_HOLD";
+            case R.id.accessibilityActionImeEnter:
+                return "ACTION_IME_ENTER";
             default:
                 return "ACTION_UNKNOWN";
         }
@@ -4839,6 +4853,16 @@
         @NonNull public static final AccessibilityAction ACTION_PRESS_AND_HOLD =
                 new AccessibilityAction(R.id.accessibilityActionPressAndHold);
 
+        /**
+         * Action to send an ime action which is from
+         * {@link android.view.inputmethod.EditorInfo#actionId}. This action would be
+         * {@link android.view.inputmethod.EditorInfo#IME_ACTION_UNSPECIFIED} if no specific
+         * actionId defined. A node should expose this action only for views that are currently
+         * with input focus and editable.
+         */
+        @NonNull public static final AccessibilityAction ACTION_IME_ENTER =
+                new AccessibilityAction(R.id.accessibilityActionImeEnter);
+
         private final int mActionId;
         private final CharSequence mLabel;
 
diff --git a/core/java/android/view/accessibility/IAccessibilityEmbeddedConnection.aidl b/core/java/android/view/accessibility/IAccessibilityEmbeddedConnection.aidl
new file mode 100644
index 0000000..707099e
--- /dev/null
+++ b/core/java/android/view/accessibility/IAccessibilityEmbeddedConnection.aidl
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2019 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.accessibility;
+
+/**
+ * Interface used by host View to talk to the view root of the embedded SurfaceControlViewHost
+ * that actually implements the functionality.
+ *
+ * @hide
+ */
+interface IAccessibilityEmbeddedConnection {
+
+    IBinder associateEmbeddedHierarchy(IBinder hostToken, int sourceId);
+
+    void disassociateEmbeddedHierarchy();
+
+    oneway void setScreenMatrix(in float[] matrixValues);
+}
diff --git a/core/java/android/view/accessibility/IAccessibilityManager.aidl b/core/java/android/view/accessibility/IAccessibilityManager.aidl
index 7f8fdf8..97036f3 100644
--- a/core/java/android/view/accessibility/IAccessibilityManager.aidl
+++ b/core/java/android/view/accessibility/IAccessibilityManager.aidl
@@ -47,7 +47,7 @@
     @UnsupportedAppUsage
     List<AccessibilityServiceInfo> getEnabledAccessibilityServiceList(int feedbackType, int userId);
 
-    int addAccessibilityInteractionConnection(IWindow windowToken,
+    int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken,
             in IAccessibilityInteractionConnection connection,
             String packageName, int userId);
 
@@ -88,4 +88,8 @@
     oneway void registerSystemAction(in RemoteAction action, int actionId);
     oneway void unregisterSystemAction(int actionId);
     oneway void setWindowMagnificationConnection(in IWindowMagnificationConnection connection);
+
+    void associateEmbeddedHierarchy(IBinder host, IBinder embedded);
+
+    void disassociateEmbeddedHierarchy(IBinder token);
 }
diff --git a/core/java/android/view/autofill/AutofillPopupWindow.java b/core/java/android/view/autofill/AutofillPopupWindow.java
index 8266207..8d3dc83 100644
--- a/core/java/android/view/autofill/AutofillPopupWindow.java
+++ b/core/java/android/view/autofill/AutofillPopupWindow.java
@@ -19,13 +19,13 @@
 import static android.view.autofill.Helper.sVerbose;
 
 import android.annotation.NonNull;
-import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.transition.Transition;
 import android.util.Log;
+import android.util.Size;
 import android.view.View;
 import android.view.View.OnTouchListener;
 import android.view.ViewTreeObserver;
@@ -127,11 +127,12 @@
             // If it is not fullscreen height, put window at bottom. Computes absolute position.
             // Note that we cannot easily change default gravity from Gravity.TOP to
             // Gravity.BOTTOM because PopupWindow base class does not expose computeGravity().
-            final Point outPoint = new Point();
-            anchor.getContext().getDisplay().getSize(outPoint);
-            width = outPoint.x;
+            final WindowManager windowManager = anchor.getContext()
+                    .getSystemService(WindowManager.class);
+            final Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
+            width = windowSize.getWidth();
             if (height != LayoutParams.MATCH_PARENT) {
-                offsetY = outPoint.y - height;
+                offsetY = windowSize.getHeight() - height;
             }
             actualAnchor = anchor;
         } else if (virtualBounds != null) {
diff --git a/core/java/android/view/contentcapture/ContentCaptureManager.java b/core/java/android/view/contentcapture/ContentCaptureManager.java
index cede3b5..b7b54c8 100644
--- a/core/java/android/view/contentcapture/ContentCaptureManager.java
+++ b/core/java/android/view/contentcapture/ContentCaptureManager.java
@@ -32,10 +32,8 @@
 import android.content.Context;
 import android.graphics.Canvas;
 import android.os.Binder;
-import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IBinder;
-import android.os.ICancellationSignal;
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
@@ -209,6 +207,15 @@
 
     private static final String TAG = ContentCaptureManager.class.getSimpleName();
 
+    /** Error happened during the data sharing session. */
+    public static final int DATA_SHARE_ERROR_UNKNOWN = 1;
+
+    /** Request has been rejected, because a concurrent data share sessions is in progress. */
+    public static final int DATA_SHARE_ERROR_CONCURRENT_REQUEST = 2;
+
+    /** Request has been interrupted because of data share session timeout. */
+    public static final int DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED = 3;
+
     /** @hide */
     public static final int RESULT_CODE_OK = 0;
     /** @hide */
@@ -656,12 +663,9 @@
         Preconditions.checkNotNull(dataShareWriteAdapter);
         Preconditions.checkNotNull(executor);
 
-        ICancellationSignal cancellationSignalTransport = CancellationSignal.createTransport();
-
         try {
-            mService.shareData(request, cancellationSignalTransport,
-                    new DataShareAdapterDelegate(executor,
-                            cancellationSignalTransport, dataShareWriteAdapter));
+            mService.shareData(request,
+                    new DataShareAdapterDelegate(executor, dataShareWriteAdapter));
         } catch (RemoteException e) {
             e.rethrowFromSystemServer();
         }
@@ -719,32 +723,19 @@
 
         private final WeakReference<DataShareWriteAdapter> mAdapterReference;
         private final WeakReference<Executor> mExecutorReference;
-        private final WeakReference<ICancellationSignal> mCancellationSignal;
 
-        private DataShareAdapterDelegate(Executor executor,
-                ICancellationSignal cancellationSignalTransport, DataShareWriteAdapter adapter) {
+        private DataShareAdapterDelegate(Executor executor, DataShareWriteAdapter adapter) {
             Preconditions.checkNotNull(executor);
-            Preconditions.checkNotNull(cancellationSignalTransport);
             Preconditions.checkNotNull(adapter);
 
             mExecutorReference = new WeakReference<>(executor);
             mAdapterReference = new WeakReference<>(adapter);
-            mCancellationSignal = new WeakReference<>(cancellationSignalTransport);
         }
 
         @Override
         public void write(ParcelFileDescriptor destination)
                 throws RemoteException {
-            ICancellationSignal cancellationSignalTransport = mCancellationSignal.get();
-            if (cancellationSignalTransport == null) {
-                Slog.w(TAG, "Can't execute write(), reference to cancellation signal has been "
-                        + "GC'ed");
-            }
-            CancellationSignal cancellationSignal =
-                    CancellationSignal.fromTransport(cancellationSignalTransport);
-
-            executeAdapterMethodLocked(adapter -> adapter.onWrite(destination, cancellationSignal),
-                    "onWrite");
+            executeAdapterMethodLocked(adapter -> adapter.onWrite(destination), "onWrite");
         }
 
         @Override
diff --git a/core/java/android/view/contentcapture/ContentCaptureSession.java b/core/java/android/view/contentcapture/ContentCaptureSession.java
index 232d96b..2134dab 100644
--- a/core/java/android/view/contentcapture/ContentCaptureSession.java
+++ b/core/java/android/view/contentcapture/ContentCaptureSession.java
@@ -22,6 +22,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.SystemApi;
 import android.util.DebugUtils;
 import android.util.Log;
 import android.view.View;
@@ -50,7 +51,11 @@
 
     private static final Random sIdGenerator = new Random();
 
-    /** @hide */
+    /**
+    *  ID used to indicate that a session does not exist
+    *  @hide
+    */
+    @SystemApi
     public static final int NO_SESSION_ID = 0;
 
     /**
diff --git a/core/java/android/view/contentcapture/DataShareWriteAdapter.java b/core/java/android/view/contentcapture/DataShareWriteAdapter.java
index f791fea..2beaede 100644
--- a/core/java/android/view/contentcapture/DataShareWriteAdapter.java
+++ b/core/java/android/view/contentcapture/DataShareWriteAdapter.java
@@ -17,18 +17,11 @@
 package android.view.contentcapture;
 
 import android.annotation.NonNull;
-import android.os.CancellationSignal;
 import android.os.ParcelFileDescriptor;
 
 /** Adapter class used by apps to share data with the Content Capture service. */
 public interface DataShareWriteAdapter {
 
-    /** Request has been rejected, because a concurrent data share sessions is in progress. */
-    int ERROR_CONCURRENT_REQUEST = 1;
-
-    /** Data share session timed out. */
-    int ERROR_UNKNOWN = 2;
-
     /**
      * Method invoked when the data share session has been started and the app needs to start
      * writing into the file used for sharing.
@@ -36,12 +29,9 @@
      * <p>App needs to handle explicitly cases when the file descriptor is closed and handle
      * gracefully if IOExceptions happen.
      *
-     * @param destination file descriptor used to write data into
-     * @param cancellationSignal cancellation signal that the app can use to subscribe to cancel
-     *                           operations.
+     * @param destination file descriptor used to write data into.
      */
-    void onWrite(@NonNull ParcelFileDescriptor destination,
-            @NonNull CancellationSignal cancellationSignal);
+    void onWrite(@NonNull ParcelFileDescriptor destination);
 
     /** Data share sessions has been rejected by the Content Capture service. */
     void onRejected();
diff --git a/core/java/android/view/contentcapture/IContentCaptureManager.aidl b/core/java/android/view/contentcapture/IContentCaptureManager.aidl
index 5217e68..01ead46 100644
--- a/core/java/android/view/contentcapture/IContentCaptureManager.aidl
+++ b/core/java/android/view/contentcapture/IContentCaptureManager.aidl
@@ -69,8 +69,7 @@
     /**
     * Requests sharing of a binary data with the content capture service.
     */
-    void shareData(in DataShareRequest request, in ICancellationSignal cancellationSignal,
-                   in IDataShareWriteAdapter adapter);
+    void shareData(in DataShareRequest request, in IDataShareWriteAdapter adapter);
 
     /**
      * Returns whether the content capture feature is enabled for the calling user.
diff --git a/core/java/android/view/inputmethod/EditorInfo.java b/core/java/android/view/inputmethod/EditorInfo.java
index c80a1ae..7f90d57 100644
--- a/core/java/android/view/inputmethod/EditorInfo.java
+++ b/core/java/android/view/inputmethod/EditorInfo.java
@@ -33,11 +33,11 @@
 import android.view.View;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Preconditions;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
+import java.util.Objects;
 
 /**
  * An EditorInfo describes several attributes of a text editing object
@@ -558,7 +558,7 @@
      *                      editor wants to trim out the first 10 chars, subTextStart should be 10.
      */
     public void setInitialSurroundingSubText(@NonNull CharSequence subText, int subTextStart) {
-        Preconditions.checkNotNull(subText);
+        Objects.requireNonNull(subText);
 
         // Swap selection start and end if necessary.
         final int subTextSelStart = initialSelStart > initialSelEnd
@@ -585,25 +585,35 @@
             return;
         }
 
-        // The input text is too long. Let's try to trim it reasonably. Fundamental rules are:
-        // 1. Text before the cursor is the most important information to IMEs.
-        // 2. Text after the cursor is the second important information to IMEs.
-        // 3. Selected text is the least important information but it shall NEVER be truncated.
-        //    When it is too long, just drop it.
-        //
-        // Source: <TextBeforeCursor><Selection><TextAfterCursor>
-        // Possible results:
-        // 1. <(maybeTrimmedAtHead)TextBeforeCursor><Selection><TextAfterCursor(maybeTrimmedAtTail)>
-        // 2. <(maybeTrimmedAtHead)TextBeforeCursor><TextAfterCursor(maybeTrimmedAtTail)>
-        //
-        final int sourceSelLength = subTextSelEnd - subTextSelStart;
+        trimLongSurroundingText(subText, subTextSelStart, subTextSelEnd);
+    }
+
+    /**
+     * Trims the initial surrounding text when it is over sized. Fundamental trimming rules are:
+     * - The text before the cursor is the most important information to IMEs.
+     * - The text after the cursor is the second important information to IMEs.
+     * - The selected text is the least important information but it shall NEVER be truncated. When
+     *    it is too long, just drop it.
+     *<p><pre>
+     * For example, the subText can be viewed as
+     *     TextBeforeCursor + Selection + TextAfterCursor
+     * The result could be
+     *     1. (maybeTrimmedAtHead)TextBeforeCursor + Selection + TextAfterCursor(maybeTrimmedAtTail)
+     *     2. (maybeTrimmedAtHead)TextBeforeCursor + TextAfterCursor(maybeTrimmedAtTail)</pre>
+     *
+     * @param subText The long text that needs to be trimmed.
+     * @param selStart The text offset of the start of the selection.
+     * @param selEnd The text offset of the end of the selection
+     */
+    private void trimLongSurroundingText(CharSequence subText, int selStart, int selEnd) {
+        final int sourceSelLength = selEnd - selStart;
         // When the selected text is too long, drop it.
         final int newSelLength = (sourceSelLength > MAX_INITIAL_SELECTION_LENGTH)
                 ? 0 : sourceSelLength;
 
         // Distribute rest of length quota to TextBeforeCursor and TextAfterCursor in 4:1 ratio.
-        final int subTextBeforeCursorLength = subTextSelStart;
-        final int subTextAfterCursorLength = subTextLength - subTextSelEnd;
+        final int subTextBeforeCursorLength = selStart;
+        final int subTextAfterCursorLength = subText.length() - selEnd;
         final int maxLengthMinusSelection = MEMORY_EFFICIENT_TEXT_LENGTH - newSelLength;
         final int possibleMaxBeforeCursorLength =
                 Math.min(subTextBeforeCursorLength, (int) (0.8 * maxLengthMinusSelection));
@@ -617,24 +627,23 @@
 
         // We don't want to cut surrogate pairs in the middle. Exam that at the new head and tail.
         if (isCutOnSurrogate(subText,
-                subTextSelStart - newBeforeCursorLength, TrimPolicy.HEAD)) {
+                selStart - newBeforeCursorLength, TrimPolicy.HEAD)) {
             newBeforeCursorHead = newBeforeCursorHead + 1;
             newBeforeCursorLength = newBeforeCursorLength - 1;
         }
         if (isCutOnSurrogate(subText,
-                subTextSelEnd + newAfterCursorLength - 1, TrimPolicy.TAIL)) {
+                selEnd + newAfterCursorLength - 1, TrimPolicy.TAIL)) {
             newAfterCursorLength = newAfterCursorLength - 1;
         }
 
         // Now we know where to trim, compose the initialSurroundingText.
         final int newTextLength = newBeforeCursorLength + newSelLength + newAfterCursorLength;
-        CharSequence newInitialSurroundingText;
+        final CharSequence newInitialSurroundingText;
         if (newSelLength != sourceSelLength) {
             final CharSequence beforeCursor = subText.subSequence(newBeforeCursorHead,
                     newBeforeCursorHead + newBeforeCursorLength);
-
-            final CharSequence afterCursor = subText.subSequence(subTextSelEnd,
-                    subTextSelEnd + newAfterCursorLength);
+            final CharSequence afterCursor = subText.subSequence(selEnd,
+                    selEnd + newAfterCursorLength);
 
             newInitialSurroundingText = TextUtils.concat(beforeCursor, afterCursor);
         } else {
@@ -651,15 +660,16 @@
     }
 
     /**
-     * Get <var>n</var> characters of text before the current cursor position. May be {@code null}
-     * when the protocol is not supported.
+     * Get <var>length</var> characters of text before the current cursor position. May be
+     * {@code null} when the protocol is not supported.
      *
      * @param length The expected length of the text.
      * @param flags Supplies additional options controlling how the text is returned. May be
      * either 0 or {@link InputConnection#GET_TEXT_WITH_STYLES}.
      * @return the text before the cursor position; the length of the returned text might be less
-     * than <var>n</var>. When there is no text before the cursor, an empty string will be returned.
-     * It could also be {@code null} when the editor or system could not support this protocol.
+     * than <var>length</var>. When there is no text before the cursor, an empty string will be
+     * returned. It could also be {@code null} when the editor or system could not support this
+     * protocol.
      */
     @Nullable
     public CharSequence getInitialTextBeforeCursor(int length, int flags) {
@@ -667,8 +677,8 @@
     }
 
     /**
-     * Gets the selected text, if any. May be {@code null} when no text is selected or the selected
-     * text is way too long.
+     * Gets the selected text, if any. May be {@code null} when the protocol is not supported or the
+     * selected text is way too long.
      *
      * @param flags Supplies additional options controlling how the text is returned. May be
      * either 0 or {@link InputConnection#GET_TEXT_WITH_STYLES}.
@@ -693,15 +703,16 @@
     }
 
     /**
-     * Get <var>n</var> characters of text after the current cursor position. May be {@code null}
-     * when the protocol is not supported.
+     * Get <var>length</var> characters of text after the current cursor position. May be
+     * {@code null} when the protocol is not supported.
      *
      * @param length The expected length of the text.
      * @param flags Supplies additional options controlling how the text is returned. May be
      * either 0 or {@link InputConnection#GET_TEXT_WITH_STYLES}.
      * @return the text after the cursor position; the length of the returned text might be less
-     * than <var>n</var>. When there is no text after the cursor, an empty string will be returned.
-     * It could also be {@code null} when the editor or system could not support this protocol.
+     * than <var>length</var>. When there is no text after the cursor, an empty string will be
+     * returned. It could also be {@code null} when the editor or system could not support this
+     * protocol.
      */
     @Nullable
     public CharSequence getInitialTextAfterCursor(int length, int flags) {
@@ -863,7 +874,6 @@
         return 0;
     }
 
-    // TODO(b/148035211): Unit tests for this class
     static final class InitialSurroundingText implements Parcelable {
         @Nullable final CharSequence mSurroundingText;
         final int mSelectionHead;
diff --git a/core/java/android/view/inputmethod/InlineSuggestionInfo.java b/core/java/android/view/inputmethod/InlineSuggestionInfo.java
index 703b64f..024de4d 100644
--- a/core/java/android/view/inputmethod/InlineSuggestionInfo.java
+++ b/core/java/android/view/inputmethod/InlineSuggestionInfo.java
@@ -80,7 +80,6 @@
             @NonNull InlinePresentationSpec presentationSpec,
             @NonNull @Source String source,
             @Nullable String[] autofillHints) {
-        // TODO(b/147394280): Add CTS test for the type field.
         return new InlineSuggestionInfo(presentationSpec, source, autofillHints, TYPE_SUGGESTION);
     }
 
diff --git a/core/java/android/view/inputmethod/InputMethodManager.java b/core/java/android/view/inputmethod/InputMethodManager.java
index 307abd2..dbab81b1 100644
--- a/core/java/android/view/inputmethod/InputMethodManager.java
+++ b/core/java/android/view/inputmethod/InputMethodManager.java
@@ -664,13 +664,16 @@
          */
         @Override
         public void setCurrentRootView(ViewRootImpl rootView) {
-            // If the mCurRootView is losing window focus, release the strong reference to it
-            // so as not to prevent it from being garbage-collected.
             if (mWindowFocusGainFuture != null) {
                 mWindowFocusGainFuture.cancel(false /* mayInterruptIfRunning */);
                 mWindowFocusGainFuture = null;
             }
             synchronized (mH) {
+                if (mCurRootView != null) {
+                    // Reset the last served view and restart window focus state of the root view.
+                    mCurRootView.getImeFocusController().setServedView(null);
+                    mRestartOnNextWindowFocus = true;
+                }
                 mCurRootView = rootView;
             }
         }
diff --git a/core/java/android/view/textclassifier/ConversationActions.java b/core/java/android/view/textclassifier/ConversationActions.java
index 80027b1e..6246b50 100644
--- a/core/java/android/view/textclassifier/ConversationActions.java
+++ b/core/java/android/view/textclassifier/ConversationActions.java
@@ -323,6 +323,7 @@
         private int mUserId = UserHandle.USER_NULL;
         @NonNull
         private Bundle mExtras;
+        private boolean mUseDefaultTextClassifier;
 
         private Request(
                 @NonNull List<Message> conversation,
@@ -347,6 +348,8 @@
             String callingPackageName = in.readString();
             int userId = in.readInt();
             Bundle extras = in.readBundle();
+            boolean useDefaultTextClassifier = in.readBoolean();
+
             Request request = new Request(
                     conversation,
                     typeConfig,
@@ -355,6 +358,7 @@
                     extras);
             request.setCallingPackageName(callingPackageName);
             request.setUserId(userId);
+            request.setUseDefaultTextClassifier(useDefaultTextClassifier);
             return request;
         }
 
@@ -367,6 +371,7 @@
             parcel.writeString(mCallingPackageName);
             parcel.writeInt(mUserId);
             parcel.writeBundle(mExtras);
+            parcel.writeBoolean(mUseDefaultTextClassifier);
         }
 
         @Override
@@ -455,6 +460,26 @@
         }
 
         /**
+         * Sets whether to use the default text classifier to handle this request.
+         * This will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+            mUseDefaultTextClassifier = useDefaultTextClassifier;
+        }
+
+        /**
+         * Returns whether to use the default text classifier to handle this request. This
+         * will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        public boolean getUseDefaultTextClassifier() {
+            return mUseDefaultTextClassifier;
+        }
+
+        /**
          * Returns the extended data related to this request.
          *
          * <p><b>NOTE: </b>Do not modify this bundle.
diff --git a/core/java/android/view/textclassifier/SelectionEvent.java b/core/java/android/view/textclassifier/SelectionEvent.java
index 09cb7a0..e0f29a9 100644
--- a/core/java/android/view/textclassifier/SelectionEvent.java
+++ b/core/java/android/view/textclassifier/SelectionEvent.java
@@ -140,6 +140,7 @@
     private int mEnd;
     private int mSmartStart;
     private int mSmartEnd;
+    private boolean mUseDefaultTextClassifier;
 
     SelectionEvent(
             int start, int end,
@@ -175,6 +176,7 @@
         mSmartStart = in.readInt();
         mSmartEnd = in.readInt();
         mUserId = in.readInt();
+        mUseDefaultTextClassifier = in.readBoolean();
     }
 
     @Override
@@ -204,6 +206,7 @@
         dest.writeInt(mSmartStart);
         dest.writeInt(mSmartEnd);
         dest.writeInt(mUserId);
+        dest.writeBoolean(mUseDefaultTextClassifier);
     }
 
     @Override
@@ -428,6 +431,26 @@
     }
 
     /**
+     * Sets whether to use the default text classifier to handle this request.
+     * This will be ignored if it is not the system text classifier to handle this request.
+     *
+     * @hide
+     */
+    void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+        mUseDefaultTextClassifier = useDefaultTextClassifier;
+    }
+
+    /**
+     * Returns whether to use the default text classifier to handle this request. This
+     * will be ignored if it is not the system text classifier to handle this request.
+     *
+     * @hide
+     */
+    public boolean getUseDefaultTextClassifier() {
+        return mUseDefaultTextClassifier;
+    }
+
+    /**
      * Returns the type of widget that was involved in triggering this event.
      */
     @WidgetType
@@ -642,7 +665,8 @@
         return Objects.hash(mAbsoluteStart, mAbsoluteEnd, mEventType, mEntityType,
                 mWidgetVersion, mPackageName, mUserId, mWidgetType, mInvocationMethod, mResultId,
                 mEventTime, mDurationSinceSessionStart, mDurationSincePreviousEvent,
-                mEventIndex, mSessionId, mStart, mEnd, mSmartStart, mSmartEnd);
+                mEventIndex, mSessionId, mStart, mEnd, mSmartStart, mSmartEnd,
+                mUseDefaultTextClassifier);
     }
 
     @Override
@@ -673,7 +697,8 @@
                 && mStart == other.mStart
                 && mEnd == other.mEnd
                 && mSmartStart == other.mSmartStart
-                && mSmartEnd == other.mSmartEnd;
+                && mSmartEnd == other.mSmartEnd
+                && mUseDefaultTextClassifier == other.mUseDefaultTextClassifier;
     }
 
     @Override
@@ -683,12 +708,13 @@
                         + "widgetVersion=%s, packageName=%s, widgetType=%s, invocationMethod=%s, "
                         + "userId=%d, resultId=%s, eventTime=%d, durationSinceSessionStart=%d, "
                         + "durationSincePreviousEvent=%d, eventIndex=%d,"
-                        + "sessionId=%s, start=%d, end=%d, smartStart=%d, smartEnd=%d}",
+                        + "sessionId=%s, start=%d, end=%d, smartStart=%d, smartEnd=%d, "
+                        + "mUseDefaultTextClassifier=%b}",
                 mAbsoluteStart, mAbsoluteEnd, mEventType, mEntityType,
                 mWidgetVersion, mPackageName, mWidgetType, mInvocationMethod,
                 mUserId, mResultId, mEventTime, mDurationSinceSessionStart,
                 mDurationSincePreviousEvent, mEventIndex,
-                mSessionId, mStart, mEnd, mSmartStart, mSmartEnd);
+                mSessionId, mStart, mEnd, mSmartStart, mSmartEnd, mUseDefaultTextClassifier);
     }
 
     public static final @android.annotation.NonNull Creator<SelectionEvent> CREATOR = new Creator<SelectionEvent>() {
diff --git a/core/java/android/view/textclassifier/SystemTextClassifier.java b/core/java/android/view/textclassifier/SystemTextClassifier.java
index 138d25d..fe5e8d6 100644
--- a/core/java/android/view/textclassifier/SystemTextClassifier.java
+++ b/core/java/android/view/textclassifier/SystemTextClassifier.java
@@ -55,17 +55,20 @@
     // service will throw a remote exception.
     @UserIdInt
     private final int mUserId;
+    private final boolean mUseDefault;
     private TextClassificationSessionId mSessionId;
 
-    public SystemTextClassifier(Context context, TextClassificationConstants settings)
-                throws ServiceManager.ServiceNotFoundException {
+    public SystemTextClassifier(
+            Context context,
+            TextClassificationConstants settings,
+            boolean useDefault) throws ServiceManager.ServiceNotFoundException {
         mManagerService = ITextClassifierService.Stub.asInterface(
                 ServiceManager.getServiceOrThrow(Context.TEXT_CLASSIFICATION_SERVICE));
         mSettings = Objects.requireNonNull(settings);
-        mFallback = context.getSystemService(TextClassificationManager.class)
-                .getTextClassifier(TextClassifier.LOCAL);
+        mFallback = TextClassifier.NO_OP;
         mPackageName = Objects.requireNonNull(context.getOpPackageName());
         mUserId = context.getUserId();
+        mUseDefault = useDefault;
     }
 
     /**
@@ -79,6 +82,7 @@
         try {
             request.setCallingPackageName(mPackageName);
             request.setUserId(mUserId);
+            request.setUseDefaultTextClassifier(mUseDefault);
             final BlockingCallback<TextSelection> callback =
                     new BlockingCallback<>("textselection");
             mManagerService.onSuggestSelection(mSessionId, request, callback);
@@ -103,6 +107,7 @@
         try {
             request.setCallingPackageName(mPackageName);
             request.setUserId(mUserId);
+            request.setUseDefaultTextClassifier(mUseDefault);
             final BlockingCallback<TextClassification> callback =
                     new BlockingCallback<>("textclassification");
             mManagerService.onClassifyText(mSessionId, request, callback);
@@ -124,7 +129,9 @@
     public TextLinks generateLinks(@NonNull TextLinks.Request request) {
         Objects.requireNonNull(request);
         Utils.checkMainThread();
-
+        if (!Utils.checkTextLength(request.getText(), getMaxGenerateLinksTextLength())) {
+            return mFallback.generateLinks(request);
+        }
         if (!mSettings.isSmartLinkifyEnabled() && request.isLegacyFallback()) {
             return Utils.generateLegacyLinks(request);
         }
@@ -132,6 +139,7 @@
         try {
             request.setCallingPackageName(mPackageName);
             request.setUserId(mUserId);
+            request.setUseDefaultTextClassifier(mUseDefault);
             final BlockingCallback<TextLinks> callback =
                     new BlockingCallback<>("textlinks");
             mManagerService.onGenerateLinks(mSessionId, request, callback);
@@ -152,6 +160,7 @@
 
         try {
             event.setUserId(mUserId);
+            event.setUseDefaultTextClassifier(mUseDefault);
             mManagerService.onSelectionEvent(mSessionId, event);
         } catch (RemoteException e) {
             Log.e(LOG_TAG, "Error reporting selection event.", e);
@@ -169,6 +178,7 @@
                             .build()
                     : event.getEventContext();
             tcContext.setUserId(mUserId);
+            tcContext.setUseDefaultTextClassifier(mUseDefault);
             event.setEventContext(tcContext);
             mManagerService.onTextClassifierEvent(mSessionId, event);
         } catch (RemoteException e) {
@@ -184,6 +194,7 @@
         try {
             request.setCallingPackageName(mPackageName);
             request.setUserId(mUserId);
+            request.setUseDefaultTextClassifier(mUseDefault);
             final BlockingCallback<TextLanguage> callback =
                     new BlockingCallback<>("textlanguage");
             mManagerService.onDetectLanguage(mSessionId, request, callback);
@@ -205,6 +216,7 @@
         try {
             request.setCallingPackageName(mPackageName);
             request.setUserId(mUserId);
+            request.setUseDefaultTextClassifier(mUseDefault);
             final BlockingCallback<ConversationActions> callback =
                     new BlockingCallback<>("conversation-actions");
             mManagerService.onSuggestConversationActions(mSessionId, request, callback);
@@ -225,7 +237,7 @@
     @WorkerThread
     public int getMaxGenerateLinksTextLength() {
         // TODO: retrieve this from the bound service.
-        return mFallback.getMaxGenerateLinksTextLength();
+        return mSettings.getGenerateLinksMaxTextLength();
     }
 
     @Override
@@ -247,6 +259,7 @@
         printWriter.printPair("mPackageName", mPackageName);
         printWriter.printPair("mSessionId", mSessionId);
         printWriter.printPair("mUserId", mUserId);
+        printWriter.printPair("mUseDefault",  mUseDefault);
         printWriter.decreaseIndent();
         printWriter.println();
     }
diff --git a/core/java/android/view/textclassifier/TextClassification.java b/core/java/android/view/textclassifier/TextClassification.java
index 3628d2d4..00f762b 100644
--- a/core/java/android/view/textclassifier/TextClassification.java
+++ b/core/java/android/view/textclassifier/TextClassification.java
@@ -555,6 +555,7 @@
         @Nullable private String mCallingPackageName;
         @UserIdInt
         private int mUserId = UserHandle.USER_NULL;
+        private boolean mUseDefaultTextClassifier;
 
         private Request(
                 CharSequence text,
@@ -654,6 +655,26 @@
         }
 
         /**
+         * Sets whether to use the default text classifier to handle this request.
+         * This will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+            mUseDefaultTextClassifier = useDefaultTextClassifier;
+        }
+
+        /**
+         * Returns whether to use the default text classifier to handle this request. This
+         * will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        public boolean getUseDefaultTextClassifier() {
+            return mUseDefaultTextClassifier;
+        }
+
+        /**
          * Returns the extended data.
          *
          * <p><b>NOTE: </b>Do not modify this bundle.
@@ -755,6 +776,7 @@
             dest.writeString(mCallingPackageName);
             dest.writeInt(mUserId);
             dest.writeBundle(mExtras);
+            dest.writeBoolean(mUseDefaultTextClassifier);
         }
 
         private static Request readFromParcel(Parcel in) {
@@ -768,11 +790,13 @@
             final String callingPackageName = in.readString();
             final int userId = in.readInt();
             final Bundle extras = in.readBundle();
+            final boolean useDefaultTextClassifier = in.readBoolean();
 
             final Request request = new Request(text, startIndex, endIndex,
                     defaultLocales, referenceTime, extras);
             request.setCallingPackageName(callingPackageName);
             request.setUserId(userId);
+            request.setUseDefaultTextClassifier(useDefaultTextClassifier);
             return request;
         }
 
diff --git a/core/java/android/view/textclassifier/TextClassificationConstants.java b/core/java/android/view/textclassifier/TextClassificationConstants.java
index ed69513..3d5ac58 100644
--- a/core/java/android/view/textclassifier/TextClassificationConstants.java
+++ b/core/java/android/view/textclassifier/TextClassificationConstants.java
@@ -17,6 +17,7 @@
 package android.view.textclassifier;
 
 import android.annotation.Nullable;
+import android.content.Context;
 import android.provider.DeviceConfig;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -167,6 +168,16 @@
     static final String TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE =
             "textclassifier_service_package_override";
 
+    /**
+     * Whether to use the default system text classifier as the default text classifier
+     * implementation. The local text classifier is used if it is {@code false}.
+     *
+     * @see android.service.textclassifier.TextClassifierService#getDefaultTextClassifierImplementation(Context)
+     */
+    // TODO: Once the system health experiment is done, remove this together with local TC.
+    private static final String USE_DEFAULT_SYSTEM_TEXT_CLASSIFIER_AS_DEFAULT_IMPL =
+            "use_default_system_text_classifier_as_default_impl";
+
     private static final String DEFAULT_TEXT_CLASSIFIER_SERVICE_PACKAGE_OVERRIDE = null;
     private static final boolean LOCAL_TEXT_CLASSIFIER_ENABLED_DEFAULT = true;
     private static final boolean SYSTEM_TEXT_CLASSIFIER_ENABLED_DEFAULT = true;
@@ -209,7 +220,8 @@
     private static final boolean TEMPLATE_INTENT_FACTORY_ENABLED_DEFAULT = true;
     private static final boolean TRANSLATE_IN_CLASSIFICATION_ENABLED_DEFAULT = true;
     private static final boolean DETECT_LANGUAGES_FROM_TEXT_ENABLED_DEFAULT = true;
-    private static final float[] LANG_ID_CONTEXT_SETTINGS_DEFAULT = new float[] {20f, 1.0f, 0.4f};
+    private static final float[] LANG_ID_CONTEXT_SETTINGS_DEFAULT = new float[]{20f, 1.0f, 0.4f};
+    private static final boolean USE_DEFAULT_SYSTEM_TEXT_CLASSIFIER_AS_DEFAULT_IMPL_DEFAULT = true;
 
     @Nullable
     public String getTextClassifierServicePackageOverride() {
@@ -331,6 +343,13 @@
                 LANG_ID_CONTEXT_SETTINGS, LANG_ID_CONTEXT_SETTINGS_DEFAULT);
     }
 
+    public boolean getUseDefaultTextClassifierAsDefaultImplementation() {
+        return DeviceConfig.getBoolean(
+                DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
+                USE_DEFAULT_SYSTEM_TEXT_CLASSIFIER_AS_DEFAULT_IMPL,
+                USE_DEFAULT_SYSTEM_TEXT_CLASSIFIER_AS_DEFAULT_IMPL_DEFAULT);
+    }
+
     void dump(IndentingPrintWriter pw) {
         pw.println("TextClassificationConstants:");
         pw.increaseIndent();
@@ -378,6 +397,8 @@
                 .println();
         pw.printPair("textclassifier_service_package_override",
                 getTextClassifierServicePackageOverride()).println();
+        pw.printPair("use_default_system_text_classifier_as_default_impl",
+                getUseDefaultTextClassifierAsDefaultImplementation()).println();
         pw.decreaseIndent();
     }
 
diff --git a/core/java/android/view/textclassifier/TextClassificationContext.java b/core/java/android/view/textclassifier/TextClassificationContext.java
index 930765b..d58d175 100644
--- a/core/java/android/view/textclassifier/TextClassificationContext.java
+++ b/core/java/android/view/textclassifier/TextClassificationContext.java
@@ -38,6 +38,7 @@
     @Nullable private final String mWidgetVersion;
     @UserIdInt
     private int mUserId = UserHandle.USER_NULL;
+    private boolean mUseDefaultTextClassifier;
 
     private TextClassificationContext(
             String packageName,
@@ -76,6 +77,26 @@
     }
 
     /**
+     * Sets whether to use the default text classifier to handle this request.
+     * This will be ignored if it is not the system text classifier to handle this request.
+     *
+     * @hide
+     */
+    void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+        mUseDefaultTextClassifier = useDefaultTextClassifier;
+    }
+
+    /**
+     * Returns whether to use the default text classifier to handle this request. This
+     * will be ignored if it is not the system text classifier to handle this request.
+     *
+     * @hide
+     */
+    public boolean getUseDefaultTextClassifier() {
+        return mUseDefaultTextClassifier;
+    }
+
+    /**
      * Returns the widget type for this classification context.
      */
     @NonNull
@@ -156,6 +177,7 @@
         parcel.writeString(mWidgetType);
         parcel.writeString(mWidgetVersion);
         parcel.writeInt(mUserId);
+        parcel.writeBoolean(mUseDefaultTextClassifier);
     }
 
     private TextClassificationContext(Parcel in) {
@@ -163,6 +185,7 @@
         mWidgetType = in.readString();
         mWidgetVersion = in.readString();
         mUserId = in.readInt();
+        mUseDefaultTextClassifier = in.readBoolean();
     }
 
     public static final @android.annotation.NonNull Parcelable.Creator<TextClassificationContext> CREATOR =
diff --git a/core/java/android/view/textclassifier/TextClassificationManager.java b/core/java/android/view/textclassifier/TextClassificationManager.java
index bb96d55..dfbec9b 100644
--- a/core/java/android/view/textclassifier/TextClassificationManager.java
+++ b/core/java/android/view/textclassifier/TextClassificationManager.java
@@ -25,7 +25,6 @@
 import android.os.ServiceManager;
 import android.provider.DeviceConfig;
 import android.provider.DeviceConfig.Properties;
-import android.service.textclassifier.TextClassifierService;
 import android.view.textclassifier.TextClassifier.TextClassifierType;
 
 import com.android.internal.annotations.GuardedBy;
@@ -62,9 +61,6 @@
     @Nullable
     private TextClassifier mLocalTextClassifier;
     @GuardedBy("mLock")
-    @Nullable
-    private TextClassifier mSystemTextClassifier;
-    @GuardedBy("mLock")
     private TextClassificationSessionFactory mSessionFactory;
     @GuardedBy("mLock")
     private TextClassificationConstants mSettings;
@@ -91,8 +87,8 @@
         synchronized (mLock) {
             if (mCustomTextClassifier != null) {
                 return mCustomTextClassifier;
-            } else if (isSystemTextClassifierEnabled()) {
-                return getSystemTextClassifier();
+            } else if (getSettings().isSystemTextClassifierEnabled()) {
+                return getSystemTextClassifier(SystemTextClassifier.SYSTEM);
             } else {
                 return getLocalTextClassifier();
             }
@@ -116,6 +112,7 @@
      *
      * @see TextClassifier#LOCAL
      * @see TextClassifier#SYSTEM
+     * @see TextClassifier#DEFAULT_SERVICE
      * @hide
      */
     @UnsupportedAppUsage
@@ -124,7 +121,7 @@
             case TextClassifier.LOCAL:
                 return getLocalTextClassifier();
             default:
-                return getSystemTextClassifier();
+                return getSystemTextClassifier(type);
         }
     }
 
@@ -204,21 +201,22 @@
         }
     }
 
-    private TextClassifier getSystemTextClassifier() {
+    /** @hide */
+    private TextClassifier getSystemTextClassifier(@TextClassifierType int type) {
         synchronized (mLock) {
-            if (mSystemTextClassifier == null && isSystemTextClassifierEnabled()) {
+            if (getSettings().isSystemTextClassifierEnabled()) {
                 try {
-                    mSystemTextClassifier = new SystemTextClassifier(mContext, getSettings());
-                    Log.d(LOG_TAG, "Initialized SystemTextClassifier");
+                    Log.d(LOG_TAG, "Initializing SystemTextClassifier, type = " + type);
+                    return new SystemTextClassifier(
+                            mContext,
+                            getSettings(),
+                            /* useDefault= */ type == TextClassifier.DEFAULT_SERVICE);
                 } catch (ServiceManager.ServiceNotFoundException e) {
                     Log.e(LOG_TAG, "Could not initialize SystemTextClassifier", e);
                 }
             }
+            return TextClassifier.NO_OP;
         }
-        if (mSystemTextClassifier != null) {
-            return mSystemTextClassifier;
-        }
-        return TextClassifier.NO_OP;
     }
 
     /**
@@ -240,11 +238,6 @@
         }
     }
 
-    private boolean isSystemTextClassifierEnabled() {
-        return getSettings().isSystemTextClassifierEnabled()
-                && TextClassifierService.getServiceComponentName(mContext) != null;
-    }
-
     /** @hide */
     @VisibleForTesting
     public void invalidateForTesting() {
@@ -261,7 +254,6 @@
     private void invalidateTextClassifiers() {
         synchronized (mLock) {
             mLocalTextClassifier = null;
-            mSystemTextClassifier = null;
         }
     }
 
@@ -274,7 +266,8 @@
     /** @hide **/
     public void dump(IndentingPrintWriter pw) {
         getLocalTextClassifier().dump(pw);
-        getSystemTextClassifier().dump(pw);
+        getSystemTextClassifier(TextClassifier.DEFAULT_SERVICE).dump(pw);
+        getSystemTextClassifier(TextClassifier.SYSTEM).dump(pw);
         getSettings().dump(pw);
     }
 
diff --git a/core/java/android/view/textclassifier/TextClassificationSession.java b/core/java/android/view/textclassifier/TextClassificationSession.java
index 4329a20..fed3dbf 100644
--- a/core/java/android/view/textclassifier/TextClassificationSession.java
+++ b/core/java/android/view/textclassifier/TextClassificationSession.java
@@ -16,6 +16,7 @@
 
 package android.view.textclassifier;
 
+import android.annotation.NonNull;
 import android.annotation.WorkerThread;
 import android.view.textclassifier.SelectionEvent.InvocationMethod;
 
@@ -23,6 +24,8 @@
 
 import java.util.Objects;
 
+import sun.misc.Cleaner;
+
 /**
  * Session-aware TextClassifier.
  */
@@ -35,6 +38,7 @@
     private final SelectionEventHelper mEventHelper;
     private final TextClassificationSessionId mSessionId;
     private final TextClassificationContext mClassificationContext;
+    private final Cleaner mCleaner;
 
     private boolean mDestroyed;
 
@@ -44,6 +48,8 @@
         mSessionId = new TextClassificationSessionId();
         mEventHelper = new SelectionEventHelper(mSessionId, mClassificationContext);
         initializeRemoteSession();
+        // This ensures destroy() is called if the client forgot to do so.
+        mCleaner = Cleaner.create(this, new CleanerRunnable(mEventHelper, mDelegate));
     }
 
     @Override
@@ -114,8 +120,7 @@
 
     @Override
     public void destroy() {
-        mEventHelper.endSession();
-        mDelegate.destroy();
+        mCleaner.clean();
         mDestroyed = true;
     }
 
@@ -258,4 +263,25 @@
             }
         }
     }
+
+    // We use a static nested class here to avoid retaining the object reference of the outer
+    // class. Otherwise. the Cleaner would never be triggered.
+    private static class CleanerRunnable implements Runnable {
+        @NonNull
+        private final SelectionEventHelper mEventHelper;
+        @NonNull
+        private final TextClassifier mDelegate;
+
+        CleanerRunnable(
+                @NonNull SelectionEventHelper eventHelper, @NonNull TextClassifier delegate) {
+            mEventHelper = Objects.requireNonNull(eventHelper);
+            mDelegate = Objects.requireNonNull(delegate);
+        }
+
+        @Override
+        public void run() {
+            mEventHelper.endSession();
+            mDelegate.destroy();
+        }
+    }
 }
diff --git a/core/java/android/view/textclassifier/TextClassificationSessionId.java b/core/java/android/view/textclassifier/TextClassificationSessionId.java
index f90e6b2..0b6fba2 100644
--- a/core/java/android/view/textclassifier/TextClassificationSessionId.java
+++ b/core/java/android/view/textclassifier/TextClassificationSessionId.java
@@ -17,6 +17,8 @@
 package android.view.textclassifier;
 
 import android.annotation.NonNull;
+import android.os.Binder;
+import android.os.IBinder;
 import android.os.Parcel;
 import android.os.Parcelable;
 
@@ -28,7 +30,10 @@
  * This class represents the id of a text classification session.
  */
 public final class TextClassificationSessionId implements Parcelable {
-    private final @NonNull String mValue;
+    @NonNull
+    private final String mValue;
+    @NonNull
+    private final IBinder mToken;
 
     /**
      * Creates a new instance.
@@ -36,7 +41,7 @@
      * @hide
      */
     public TextClassificationSessionId() {
-        this(UUID.randomUUID().toString());
+        this(UUID.randomUUID().toString(), new Binder());
     }
 
     /**
@@ -46,34 +51,28 @@
      *
      * @hide
      */
-    public TextClassificationSessionId(@NonNull String value) {
-        mValue = value;
+    public TextClassificationSessionId(@NonNull String value, @NonNull IBinder token) {
+        mValue = Objects.requireNonNull(value);
+        mToken = Objects.requireNonNull(token);
+    }
+
+    /** @hide */
+    @NonNull
+    public IBinder getToken() {
+        return mToken;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        TextClassificationSessionId that = (TextClassificationSessionId) o;
+        return Objects.equals(mValue, that.mValue) && Objects.equals(mToken, that.mToken);
     }
 
     @Override
     public int hashCode() {
-        final int prime = 31;
-        int result = 1;
-        result = prime * result + mValue.hashCode();
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        if (this == obj) {
-            return true;
-        }
-        if (obj == null) {
-            return false;
-        }
-        if (getClass() != obj.getClass()) {
-            return false;
-        }
-        TextClassificationSessionId other = (TextClassificationSessionId) obj;
-        if (!mValue.equals(other.mValue)) {
-            return false;
-        }
-        return true;
+        return Objects.hash(mValue, mToken);
     }
 
     @Override
@@ -84,6 +83,7 @@
     @Override
     public void writeToParcel(Parcel parcel, int flags) {
         parcel.writeString(mValue);
+        parcel.writeStrongBinder(mToken);
     }
 
     @Override
@@ -96,28 +96,18 @@
      *
      * @return The flattened id.
      */
-    public @NonNull String flattenToString() {
+    @NonNull
+    public String flattenToString() {
         return mValue;
     }
 
-    /**
-     * Unflattens a print job id from a string.
-     *
-     * @param string The string.
-     * @return The unflattened id, or null if the string is malformed.
-     *
-     * @hide
-     */
-    public static @NonNull TextClassificationSessionId unflattenFromString(@NonNull String string) {
-        return new TextClassificationSessionId(string);
-    }
-
-    public static final @android.annotation.NonNull Parcelable.Creator<TextClassificationSessionId> CREATOR =
+    @NonNull
+    public static final Parcelable.Creator<TextClassificationSessionId> CREATOR =
             new Parcelable.Creator<TextClassificationSessionId>() {
                 @Override
                 public TextClassificationSessionId createFromParcel(Parcel parcel) {
                     return new TextClassificationSessionId(
-                            Objects.requireNonNull(parcel.readString()));
+                            parcel.readString(), parcel.readStrongBinder());
                 }
 
                 @Override
diff --git a/core/java/android/view/textclassifier/TextClassifier.java b/core/java/android/view/textclassifier/TextClassifier.java
index 9b33693..2cc226d 100644
--- a/core/java/android/view/textclassifier/TextClassifier.java
+++ b/core/java/android/view/textclassifier/TextClassifier.java
@@ -66,12 +66,14 @@
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
-    @IntDef(value = {LOCAL, SYSTEM})
+    @IntDef(value = {LOCAL, SYSTEM, DEFAULT_SERVICE})
     @interface TextClassifierType {}  // TODO: Expose as system APIs.
     /** Specifies a TextClassifier that runs locally in the app's process. @hide */
     int LOCAL = 0;
     /** Specifies a TextClassifier that runs in the system process and serves all apps. @hide */
     int SYSTEM = 1;
+    /** Specifies the default TextClassifier that runs in the system process. @hide */
+    int DEFAULT_SERVICE = 2;
 
     /** The TextClassifier failed to run. */
     String TYPE_UNKNOWN = "";
@@ -667,8 +669,10 @@
             Preconditions.checkArgument(endIndex > startIndex);
         }
 
-        static void checkTextLength(CharSequence text, int maxLength) {
-            Preconditions.checkArgumentInRange(text.length(), 0, maxLength, "text.length()");
+        /** Returns if the length of the text is within the range. */
+        static boolean checkTextLength(CharSequence text, int maxLength) {
+            int textLength = text.length();
+            return textLength >= 0 && textLength <= maxLength;
         }
 
         /**
diff --git a/core/java/android/view/textclassifier/TextClassifierImpl.java b/core/java/android/view/textclassifier/TextClassifierImpl.java
index 61bd7c7..d7149ee 100644
--- a/core/java/android/view/textclassifier/TextClassifierImpl.java
+++ b/core/java/android/view/textclassifier/TextClassifierImpl.java
@@ -286,8 +286,10 @@
     @WorkerThread
     public TextLinks generateLinks(@NonNull TextLinks.Request request) {
         Objects.requireNonNull(request);
-        Utils.checkTextLength(request.getText(), getMaxGenerateLinksTextLength());
         Utils.checkMainThread();
+        if (!Utils.checkTextLength(request.getText(), getMaxGenerateLinksTextLength())) {
+            return mFallback.generateLinks(request);
+        }
 
         if (!mSettings.isSmartLinkifyEnabled() && request.isLegacyFallback()) {
             return Utils.generateLegacyLinks(request);
diff --git a/core/java/android/view/textclassifier/TextLanguage.java b/core/java/android/view/textclassifier/TextLanguage.java
index cc9109e..58024dc 100644
--- a/core/java/android/view/textclassifier/TextLanguage.java
+++ b/core/java/android/view/textclassifier/TextLanguage.java
@@ -230,6 +230,7 @@
         @Nullable private String mCallingPackageName;
         @UserIdInt
         private int mUserId = UserHandle.USER_NULL;
+        private boolean mUseDefaultTextClassifier;
 
         private Request(CharSequence text, Bundle bundle) {
             mText = text;
@@ -283,6 +284,26 @@
         }
 
         /**
+         * Sets whether to use the default text classifier to handle this request.
+         * This will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+            mUseDefaultTextClassifier = useDefaultTextClassifier;
+        }
+
+        /**
+         * Returns whether to use the default text classifier to handle this request. This
+         * will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        public boolean getUseDefaultTextClassifier() {
+            return mUseDefaultTextClassifier;
+        }
+
+        /**
          * Returns a bundle containing non-structured extra information about this request.
          *
          * <p><b>NOTE: </b>Do not modify this bundle.
@@ -303,6 +324,7 @@
             dest.writeString(mCallingPackageName);
             dest.writeInt(mUserId);
             dest.writeBundle(mExtra);
+            dest.writeBoolean(mUseDefaultTextClassifier);
         }
 
         private static Request readFromParcel(Parcel in) {
@@ -310,10 +332,12 @@
             final String callingPackageName = in.readString();
             final int userId = in.readInt();
             final Bundle extra = in.readBundle();
+            final boolean useDefaultTextClassifier = in.readBoolean();
 
             final Request request = new Request(text, extra);
             request.setCallingPackageName(callingPackageName);
             request.setUserId(userId);
+            request.setUseDefaultTextClassifier(useDefaultTextClassifier);
             return request;
         }
 
diff --git a/core/java/android/view/textclassifier/TextLinks.java b/core/java/android/view/textclassifier/TextLinks.java
index bda12b0..7430cb3 100644
--- a/core/java/android/view/textclassifier/TextLinks.java
+++ b/core/java/android/view/textclassifier/TextLinks.java
@@ -345,6 +345,7 @@
         @Nullable private final ZonedDateTime mReferenceTime;
         @UserIdInt
         private int mUserId = UserHandle.USER_NULL;
+        private boolean mUseDefaultTextClassifier;
 
         private Request(
                 CharSequence text,
@@ -447,6 +448,26 @@
         }
 
         /**
+         * Sets whether to use the default text classifier to handle this request.
+         * This will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+            mUseDefaultTextClassifier = useDefaultTextClassifier;
+        }
+
+        /**
+         * Returns whether to use the default text classifier to handle this request. This
+         * will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        public boolean getUseDefaultTextClassifier() {
+            return mUseDefaultTextClassifier;
+        }
+
+        /**
          * Returns the extended data.
          *
          * <p><b>NOTE: </b>Do not modify this bundle.
@@ -568,6 +589,7 @@
             dest.writeInt(mUserId);
             dest.writeBundle(mExtras);
             dest.writeString(mReferenceTime == null ? null : mReferenceTime.toString());
+            dest.writeBoolean(mUseDefaultTextClassifier);
         }
 
         private static Request readFromParcel(Parcel in) {
@@ -580,11 +602,13 @@
             final String referenceTimeString = in.readString();
             final ZonedDateTime referenceTime = referenceTimeString == null
                     ? null : ZonedDateTime.parse(referenceTimeString);
+            final boolean useDefaultTextClassifier = in.readBoolean();
 
             final Request request = new Request(text, defaultLocales, entityConfig,
                     /* legacyFallback= */ true, referenceTime, extras);
             request.setCallingPackageName(callingPackageName);
             request.setUserId(userId);
+            request.setUseDefaultTextClassifier(useDefaultTextClassifier);
             return request;
         }
 
diff --git a/core/java/android/view/textclassifier/TextSelection.java b/core/java/android/view/textclassifier/TextSelection.java
index 4a36cbf..575a072 100644
--- a/core/java/android/view/textclassifier/TextSelection.java
+++ b/core/java/android/view/textclassifier/TextSelection.java
@@ -216,6 +216,7 @@
         @Nullable private String mCallingPackageName;
         @UserIdInt
         private int mUserId = UserHandle.USER_NULL;
+        private boolean mUseDefaultTextClassifier;
 
         private Request(
                 CharSequence text,
@@ -316,6 +317,26 @@
         }
 
         /**
+         * Sets whether to use the default text classifier to handle this request.
+         * This will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        void setUseDefaultTextClassifier(boolean useDefaultTextClassifier) {
+            mUseDefaultTextClassifier = useDefaultTextClassifier;
+        }
+
+        /**
+         * Returns whether to use the default text classifier to handle this request. This
+         * will be ignored if it is not the system text classifier to handle this request.
+         *
+         * @hide
+         */
+        public boolean getUseDefaultTextClassifier() {
+            return mUseDefaultTextClassifier;
+        }
+
+        /**
          * Returns the extended data.
          *
          * <p><b>NOTE: </b>Do not modify this bundle.
@@ -420,6 +441,7 @@
             dest.writeString(mCallingPackageName);
             dest.writeInt(mUserId);
             dest.writeBundle(mExtras);
+            dest.writeBoolean(mUseDefaultTextClassifier);
         }
 
         private static Request readFromParcel(Parcel in) {
@@ -430,11 +452,13 @@
             final String callingPackageName = in.readString();
             final int userId = in.readInt();
             final Bundle extras = in.readBundle();
+            final boolean systemTextClassifierType = in.readBoolean();
 
             final Request request = new Request(text, startIndex, endIndex, defaultLocales,
                     /* darkLaunchAllowed= */ false, extras);
             request.setCallingPackageName(callingPackageName);
             request.setUserId(userId);
+            request.setUseDefaultTextClassifier(systemTextClassifierType);
             return request;
         }
 
diff --git a/core/java/android/webkit/WebResourceRequest.java b/core/java/android/webkit/WebResourceRequest.java
index 964b6f8..0b307e6 100644
--- a/core/java/android/webkit/WebResourceRequest.java
+++ b/core/java/android/webkit/WebResourceRequest.java
@@ -32,10 +32,10 @@
     Uri getUrl();
 
     /**
-     * Gets whether the request was made for the main frame.
+     * Gets whether the request was made in order to fetch the main frame's document.
      *
-     * @return whether the request was made for the main frame. Will be {@code false} for iframes,
-     *         for example.
+     * @return whether the request was made for the main frame document. Will be
+     *         {@code false} for subresources or iframes, for example.
      */
     boolean isForMainFrame();
 
diff --git a/core/java/android/webkit/WebViewProviderResponse.java b/core/java/android/webkit/WebViewProviderResponse.java
index b58cc4bb..02e48dd 100644
--- a/core/java/android/webkit/WebViewProviderResponse.java
+++ b/core/java/android/webkit/WebViewProviderResponse.java
@@ -16,6 +16,8 @@
 
 package android.webkit;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.pm.PackageInfo;
 import android.os.Parcel;
@@ -30,7 +32,7 @@
     }
 
     // aidl stuff
-    public static final @android.annotation.NonNull Parcelable.Creator<WebViewProviderResponse> CREATOR =
+    public static final @NonNull Parcelable.Creator<WebViewProviderResponse> CREATOR =
         new Parcelable.Creator<WebViewProviderResponse>() {
             public WebViewProviderResponse createFromParcel(Parcel in) {
                 return new WebViewProviderResponse(in);
@@ -58,6 +60,7 @@
     }
 
     @UnsupportedAppUsage
+    @Nullable
     public final PackageInfo packageInfo;
     public final int status;
 }
diff --git a/core/java/android/widget/AbsListView.java b/core/java/android/widget/AbsListView.java
index 4752ead..9f03d95 100644
--- a/core/java/android/widget/AbsListView.java
+++ b/core/java/android/widget/AbsListView.java
@@ -756,9 +756,6 @@
      */
     private ListItemAccessibilityDelegate mAccessibilityDelegate;
 
-    private int mLastAccessibilityScrollEventFromIndex;
-    private int mLastAccessibilityScrollEventToIndex;
-
     /**
      * Track the item count from the last time we handled a data change.
      */
@@ -1520,25 +1517,10 @@
         onScrollChanged(0, 0, 0, 0); // dummy values, View's implementation does not use these.
     }
 
-    /** @hide */
-    @Override
-    public void sendAccessibilityEventUnchecked(AccessibilityEvent event) {
-        // Since this class calls onScrollChanged even if the mFirstPosition and the
-        // child count have not changed we will avoid sending duplicate accessibility
-        // events.
-        if (event.getEventType() == AccessibilityEvent.TYPE_VIEW_SCROLLED) {
-            final int firstVisiblePosition = getFirstVisiblePosition();
-            final int lastVisiblePosition = getLastVisiblePosition();
-            if (mLastAccessibilityScrollEventFromIndex == firstVisiblePosition
-                    && mLastAccessibilityScrollEventToIndex == lastVisiblePosition) {
-                return;
-            } else {
-                mLastAccessibilityScrollEventFromIndex = firstVisiblePosition;
-                mLastAccessibilityScrollEventToIndex = lastVisiblePosition;
-            }
-        }
-        super.sendAccessibilityEventUnchecked(event);
-    }
+    /**
+     * A TYPE_VIEW_SCROLLED event should be sent whenever a scroll happens, even if the
+     * mFirstPosition and the child count have not changed.
+     */
 
     @Override
     public CharSequence getAccessibilityClassName() {
diff --git a/core/java/android/widget/Editor.java b/core/java/android/widget/Editor.java
index 7fd4150..46b8b77 100644
--- a/core/java/android/widget/Editor.java
+++ b/core/java/android/widget/Editor.java
@@ -454,15 +454,17 @@
             aspectRatio = 5.5f;
         }
 
-        final Paint.FontMetrics fontMetrics = mTextView.getPaint().getFontMetrics();
-        final float sourceHeight = fontMetrics.descent - fontMetrics.ascent;
+        final Layout layout = mTextView.getLayout();
+        final int line = layout.getLineForOffset(mTextView.getSelectionStart());
+        final int sourceHeight =
+            layout.getLineBottomWithoutSpacing(line) - layout.getLineTop(line);
         // Slightly increase the height to avoid tooLargeTextForMagnifier() returns true.
         int height = (int)(sourceHeight * zoom) + 2;
         int width = (int)(aspectRatio * height);
 
         params.setFishEyeStyle()
                 .setSize(width, height)
-                .setSourceSize(width, Math.round(sourceHeight))
+                .setSourceSize(width, sourceHeight)
                 .setElevation(0)
                 .setInitialZoom(zoom)
                 .setClippingEnabled(false);
@@ -5041,7 +5043,7 @@
 
             // Vertically snap to middle of current line.
             showPosInView.y = ((mTextView.getLayout().getLineTop(lineNumber)
-                    + mTextView.getLayout().getLineBottom(lineNumber)) / 2.0f
+                    + mTextView.getLayout().getLineBottomWithoutSpacing(lineNumber)) / 2.0f
                     + mTextView.getTotalPaddingTop() - mTextView.getScrollY()) * mTextViewScaleY;
             return true;
         }
@@ -5109,8 +5111,10 @@
                     int lineRight = (int) layout.getLineRight(line);
                     lineRight += mTextView.getTotalPaddingLeft() - mTextView.getScrollX();
                     mMagnifierAnimator.mMagnifier.setSourceHorizontalBounds(lineLeft, lineRight);
+                    mMagnifierAnimator.mMagnifier.show(showPosInView.x, showPosInView.y);
+                } else {
+                  mMagnifierAnimator.show(showPosInView.x, showPosInView.y);
                 }
-                mMagnifierAnimator.show(showPosInView.x, showPosInView.y);
                 updateHandlesVisibility();
             } else {
                 dismissMagnifier();
@@ -5246,9 +5250,6 @@
         private boolean mIsInActionMode;
         // The timestamp for the last up event, which is used for double tap detection.
         private long mLastUpTime;
-        // The text height of the font of the text view, which is used to calculate the Y coordinate
-        // of the touch through events.
-        private float mTextHeight;
 
         // The delta height applied to the insertion handle view.
         private final int mDeltaHeight;
@@ -5401,8 +5402,6 @@
                     if (ev.getEventTime() - mLastUpTime < ViewConfiguration.getDoubleTapTimeout()) {
                         stopTextActionMode();  // Avoid crash when double tap and drag backwards.
                     }
-                    final Paint.FontMetrics fontMetrics = mTextView.getPaint().getFontMetrics();
-                    mTextHeight = fontMetrics.descent - fontMetrics.ascent;
                     mTouchState.setIsOnHandle(true);
                     break;
                 case MotionEvent.ACTION_UP:
@@ -5441,6 +5440,10 @@
         }
 
         private MotionEvent transformEventForTouchThrough(MotionEvent ev) {
+            final Layout layout = mTextView.getLayout();
+            final int line = layout.getLineForOffset(getCurrentCursorOffset());
+            final int textHeight =
+                    layout.getLineBottomWithoutSpacing(line) - layout.getLineTop(line);
             // Transforms the touch events to screen coordinates.
             // And also shift up to make the hit point is on the text.
             // Note:
@@ -5448,7 +5451,7 @@
             //  - The revised Y should be at the top of the text.
             Matrix m = new Matrix();
             m.setTranslate(ev.getRawX() - ev.getX() + (getMeasuredWidth() >> 1) - mTouchDownX,
-                    ev.getRawY() - ev.getY() - mTouchDownY - mTextHeight);
+                    ev.getRawY() - ev.getY() - (textHeight >> 1) - mTouchDownY);
             ev.transform(m);
             // Transforms the touch events to text view coordinates.
             mTextView.toLocalMotionEvent(ev);
diff --git a/core/java/android/widget/ListView.java b/core/java/android/widget/ListView.java
index 79ec680..3c3daa3 100644
--- a/core/java/android/widget/ListView.java
+++ b/core/java/android/widget/ListView.java
@@ -3255,6 +3255,9 @@
      */
     @UnsupportedAppUsage
     private void scrollListItemsBy(int amount) {
+        int oldX = mScrollX;
+        int oldY = mScrollY;
+
         offsetChildrenTopAndBottom(amount);
 
         final int listBottom = getHeight() - mListPadding.bottom;
@@ -3327,6 +3330,7 @@
         recycleBin.fullyDetachScrapViews();
         removeUnusedFixedViews(mHeaderViewInfos);
         removeUnusedFixedViews(mFooterViewInfos);
+        onScrollChanged(mScrollX, mScrollY, oldX, oldY);
     }
 
     private View addViewAbove(View theView, int position) {
diff --git a/core/java/android/widget/Magnifier.java b/core/java/android/widget/Magnifier.java
index 57b63a7..a6a5ec5 100644
--- a/core/java/android/widget/Magnifier.java
+++ b/core/java/android/widget/Magnifier.java
@@ -45,6 +45,7 @@
 import android.os.HandlerThread;
 import android.os.Message;
 import android.util.Log;
+import android.util.TypedValue;
 import android.view.ContextThemeWrapper;
 import android.view.Display;
 import android.view.PixelCopy;
@@ -76,6 +77,8 @@
     // the Handler of this Thread when the copy is finished.
     private static final HandlerThread sPixelCopyHandlerThread =
             new HandlerThread("magnifier pixel copy result handler");
+    // The width of the ramp region in DP on the left & right sides of the fish-eye effect.
+    private static final float FISHEYE_RAMP_WIDTH = 12f;
 
     // The view to which this magnifier is attached.
     private final View mView;
@@ -151,6 +154,8 @@
     // The horizontal bounds of the content source in pixels, relative to the view.
     private int mLeftBound = Integer.MIN_VALUE;
     private int mRightBound = Integer.MAX_VALUE;
+    // The width of the ramp region in pixels on the left & right sides of the fish-eye effect.
+    private final int mRamp;
 
     /**
      * Initializes a magnifier.
@@ -232,6 +237,8 @@
         mBottomContentBound = params.mBottomContentBound;
         // The view's surface coordinates will not be updated until the magnifier is first shown.
         mViewCoordinatesInSurface = new int[2];
+        mRamp = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, FISHEYE_RAMP_WIDTH,
+                mView.getContext().getResources().getDisplayMetrics());
     }
 
     static {
@@ -303,16 +310,54 @@
             // The magnifier center is the same as source center in new style.
             magnifierCenterX = mClampedCenterZoomCoords.x - mViewCoordinatesInSurface[0];
             magnifierCenterY = mClampedCenterZoomCoords.y - mViewCoordinatesInSurface[1];
+
+            // mLeftBound & mRightBound (typically the text line left/right) is for magnified
+            // content. However the PixelCopy requires the pre-magnified bounds.
+            // The below logic calculates the leftBound & rightBound for the pre-magnified bounds.
+            final float rampPre =
+                    (mSourceWidth - (mSourceWidth - 2 * mRamp) / mZoom) / 2;
+
+            // Calculates the pre-zoomed left edge.
+            // The leftEdge moves from the left of view towards to sourceCenterX, considering the
+            // fisheye-like zooming.
+            final float x0 = sourceCenterX - mSourceWidth / 2;
+            final float rampX0 = x0 + mRamp;
+            float leftEdge = 0;
+            if (leftEdge > rampX0) {
+                // leftEdge is in the zoom range, the distance from leftEdge to sourceCenterX
+                // should reduce per mZoom.
+                leftEdge = sourceCenterX - (sourceCenterX - leftEdge) / mZoom;
+            } else if (leftEdge > x0) {
+                // leftEdge is in the ramp range, the distance from leftEdge to rampX0 should
+                // increase per ramp zoom (ramp / rampPre).
+                leftEdge = x0 + rampPre - (rampX0 - leftEdge) * rampPre / mRamp;
+            }
+            int leftBound = Math.min(Math.max((int) leftEdge, mLeftBound), mRightBound);
+
+            // Calculates the pre-zoomed right edge.
+            // The rightEdge moves from the right of view towards to sourceCenterX, considering the
+            // fisheye-like zooming.
+            final float x1 = sourceCenterX + mSourceWidth / 2;
+            final float rampX1 = x1 - mRamp;
+            float rightEdge = mView.getWidth();
+            if (rightEdge < rampX1) {
+                // rightEdge is in the zoom range, the distance from rightEdge to sourceCenterX
+                // should reduce per mZoom.
+                rightEdge = sourceCenterX + (rightEdge - sourceCenterX) / mZoom;
+            } else if (rightEdge < x1) {
+                // rightEdge is in the ramp range, the distance from rightEdge to rampX1 should
+                // increase per ramp zoom (ramp / rampPre).
+                rightEdge = x1 - rampPre + (rightEdge - rampX1) * rampPre / mRamp;
+            }
+            int rightBound = Math.max(leftBound, Math.min((int) rightEdge, mRightBound));
+
             // Gets the startX for new style, which should be bounded by the horizontal bounds.
             // Also calculates the left/right cut width for pixel copy.
-            final int left = startX;
-            final int right = startX + mSourceWidth;
-            final int leftBound = mViewCoordinatesInSurface[0] + Math.max(0, mLeftBound);
-            final int rightBound =
-                    mViewCoordinatesInSurface[0] + Math.min(mView.getWidth(), mRightBound);
-            startX = Math.max(left, leftBound);
-            mLeftCutWidth = Math.max(0, leftBound - left);
-            mRightCutWidth = Math.max(0, right - rightBound);
+            leftBound += mViewCoordinatesInSurface[0];
+            rightBound += mViewCoordinatesInSurface[0];
+            mLeftCutWidth = Math.max(0, leftBound - startX);
+            mRightCutWidth = Math.max(0, startX + mSourceWidth - rightBound);
+            startX = Math.max(startX, leftBound);
         }
         obtainWindowCoordinates(magnifierCenterX, magnifierCenterY);
 
@@ -322,7 +367,7 @@
                 synchronized (mLock) {
                     mWindow = new InternalPopupWindow(mView.getContext(), mView.getDisplay(),
                             mParentSurface.mSurfaceControl, mWindowWidth, mWindowHeight, mZoom,
-                            mWindowElevation, mWindowCornerRadius,
+                            mRamp, mWindowElevation, mWindowCornerRadius,
                             mOverlay != null ? mOverlay : new ColorDrawable(Color.TRANSPARENT),
                             Handler.getMain() /* draw the magnifier on the UI thread */, mLock,
                             mCallback, mIsFishEyeStyle);
@@ -903,16 +948,19 @@
         private Bitmap mCurrentContent;
 
         private final float mZoom;
+        // The width of the ramp region in pixels on the left & right sides of the fish-eye effect.
+        private final int mRamp;
         // Whether is in the new magnifier style.
         private boolean mIsFishEyeStyle;
         // The mesh matrix for the fish-eye effect.
-        private float[] mMesh;
+        private float[] mMeshLeft;
+        private float[] mMeshRight;
         private int mMeshWidth;
         private int mMeshHeight;
 
         InternalPopupWindow(final Context context, final Display display,
                 final SurfaceControl parentSurfaceControl, final int width, final int height,
-                final float zoom, final float elevation, final float cornerRadius,
+                final float zoom, final int ramp, final float elevation, final float cornerRadius,
                 final Drawable overlay, final Handler handler, final Object lock,
                 final Callback callback, final boolean isFishEyeStyle) {
             mDisplay = display;
@@ -923,6 +971,7 @@
             mContentWidth = width;
             mContentHeight = height;
             mZoom = zoom;
+            mRamp = ramp;
             mOffsetX = (int) (1.05f * elevation);
             mOffsetY = (int) (1.05f * elevation);
             // Setup the surface we will use for drawing the content and shadow.
@@ -986,29 +1035,28 @@
         }
 
         private void createMeshMatrixForFishEyeEffect() {
-            mMeshWidth = mZoom < 1.5f ? 5 : 4;
+            mMeshWidth = 1;
             mMeshHeight = 6;
             final float w = mContentWidth;
             final float h = mContentHeight;
-            final float dx = (w - mZoom * w * (mMeshWidth - 2) / mMeshWidth) / 2;
-            mMesh = new float[2 * (mMeshWidth + 1) * (mMeshHeight + 1)];
+            final float h0 = h / mZoom;
+            final float dh = h - h0;
+            mMeshLeft = new float[2 * (mMeshWidth + 1) * (mMeshHeight + 1)];
+            mMeshRight = new float[2 * (mMeshWidth + 1) * (mMeshHeight + 1)];
             for (int i = 0; i < 2 * (mMeshWidth + 1) * (mMeshHeight + 1); i += 2) {
                 // Calculates X value.
                 final int colIndex = i % (2 * (mMeshWidth + 1)) / 2;
-                if (colIndex == 0) {
-                    mMesh[i] = 0;
-                } else if (colIndex == mMeshWidth) {
-                    mMesh[i] = w;
-                } else {
-                    mMesh[i] = (colIndex - 1) * (w - 2 * dx) / (mMeshWidth - 2) + dx;
-                }
+                mMeshLeft[i] = (float) colIndex * mRamp / mMeshWidth;
+                mMeshRight[i] = w - mRamp + colIndex * mRamp / mMeshWidth;
+
                 // Calculates Y value.
                 final int rowIndex = i / 2 / (mMeshWidth + 1);
-                final float y0 = colIndex == 0 || colIndex == mMeshWidth
-                        ? (h - h / mZoom) / 2 : 0;
-                final float dy = colIndex == 0 || colIndex == mMeshWidth
-                        ? h / mZoom / mMeshHeight : h / mMeshHeight;
-                mMesh[i + 1] = y0 + rowIndex * dy;
+                final float hl = h0 + dh * colIndex / mMeshWidth;
+                final float yl = (h - hl) / 2;
+                mMeshLeft[i + 1] = yl + hl * rowIndex / mMeshHeight;
+                final float hr = h - dh * colIndex / mMeshWidth;
+                final float yr = (h - hr) / 2;
+                mMeshRight[i + 1] = yr + hr * rowIndex / mMeshHeight;
             }
         }
 
@@ -1166,14 +1214,30 @@
                 final RecordingCanvas canvas =
                         mBitmapRenderNode.beginRecording(mContentWidth, mContentHeight);
                 try {
+                    final int w = mBitmap.getWidth();
+                    final int h = mBitmap.getHeight();
+                    final Paint paint = new Paint();
+                    paint.setFilterBitmap(true);
                     if (mIsFishEyeStyle) {
+                        final int margin =
+                            (int)((mContentWidth - (mContentWidth - 2 * mRamp) / mZoom) / 2);
+
+                        // Draws the middle part.
+                        final Rect srcRect = new Rect(margin, 0, w - margin, h);
+                        final Rect dstRect = new Rect(
+                            mRamp, 0, mContentWidth - mRamp, mContentHeight);
+                        canvas.drawBitmap(mBitmap, srcRect, dstRect, paint);
+
+                        // Draws the left/right parts with mesh matrixes.
                         canvas.drawBitmapMesh(
-                                mBitmap, mMeshWidth, mMeshHeight, mMesh, 0, null, 0, null);
+                                Bitmap.createBitmap(mBitmap, 0, 0, margin, h),
+                                mMeshWidth, mMeshHeight, mMeshLeft, 0, null, 0, paint);
+                        canvas.drawBitmapMesh(
+                                Bitmap.createBitmap(mBitmap, w - margin, 0, margin, h),
+                                mMeshWidth, mMeshHeight, mMeshRight, 0, null, 0, paint);
                     } else {
-                        final Rect srcRect = new Rect(0, 0, mBitmap.getWidth(), mBitmap.getHeight());
+                        final Rect srcRect = new Rect(0, 0, w, h);
                         final Rect dstRect = new Rect(0, 0, mContentWidth, mContentHeight);
-                        final Paint paint = new Paint();
-                        paint.setFilterBitmap(true);
                         canvas.drawBitmap(mBitmap, srcRect, dstRect, paint);
                     }
                 } finally {
diff --git a/core/java/android/widget/TextView.java b/core/java/android/widget/TextView.java
index 8ce6ee5..469ab2e 100644
--- a/core/java/android/widget/TextView.java
+++ b/core/java/android/widget/TextView.java
@@ -11741,6 +11741,23 @@
                 info.setContentInvalid(true);
                 info.setError(mEditor.mError);
             }
+            // TextView will expose this action if it is editable and has focus.
+            if (isTextEditable() && isFocused()) {
+                CharSequence imeActionLabel = mContext.getResources().getString(
+                        com.android.internal.R.string.keyboardview_keycode_enter);
+                if (getImeActionId() != 0 && getImeActionLabel() != null) {
+                    imeActionLabel = getImeActionLabel();
+                    final int imeActionId = getImeActionId();
+                    // put ime action id into the extra data with ACTION_ARGUMENT_IME_ACTION_ID_INT.
+                    final Bundle argument = info.getExtras();
+                    argument.putInt(AccessibilityNodeInfo.ACTION_ARGUMENT_IME_ACTION_ID_INT,
+                            imeActionId);
+                }
+                AccessibilityNodeInfo.AccessibilityAction action =
+                        new AccessibilityNodeInfo.AccessibilityAction(
+                                R.id.accessibilityActionImeEnter, imeActionLabel);
+                info.addAction(action);
+            }
         }
 
         if (!TextUtils.isEmpty(mText)) {
@@ -12052,6 +12069,17 @@
                     }
                 }
             } return true;
+            case R.id.accessibilityActionImeEnter: {
+                if (isFocused() && isTextEditable()) {
+                    final int imeActionId = (arguments != null) ? arguments.getInt(
+                            AccessibilityNodeInfo.ACTION_ARGUMENT_IME_ACTION_ID_INT,
+                            EditorInfo.IME_ACTION_UNSPECIFIED)
+                            : EditorInfo.IME_ACTION_UNSPECIFIED;
+                    if (imeActionId == getImeActionId()) {
+                        onEditorAction(imeActionId);
+                    }
+                }
+            } return true;
             default: {
                 return super.performAccessibilityActionInternal(action, arguments);
             }
diff --git a/core/java/android/widget/Toast.java b/core/java/android/widget/Toast.java
index c8a7c07..9e4ebfe 100644
--- a/core/java/android/widget/Toast.java
+++ b/core/java/android/widget/Toast.java
@@ -28,6 +28,7 @@
 import android.app.ITransientNotificationCallback;
 import android.compat.Compatibility;
 import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.res.Configuration;
@@ -112,11 +113,9 @@
     /**
      * Text toasts will be rendered by SystemUI instead of in-app, so apps can't circumvent
      * background custom toast restrictions.
-     *
-     * TODO(b/144152069): Add @EnabledAfter(Q) to target R+ after assessing impact on dogfood
      */
     @ChangeId
-    // @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
     private static final long CHANGE_TEXT_TOASTS_IN_THE_SYSTEM = 147798919L;
 
 
@@ -149,6 +148,9 @@
     @Nullable
     private CharSequence mText;
 
+    // TODO(b/144152069): Remove this after assessing impact on dogfood.
+    private boolean mIsCustomToast;
+
     /**
      * Construct an empty Toast object.  You must call {@link #setView} before you
      * can call {@link #show}.
@@ -215,7 +217,8 @@
                     service.enqueueTextToast(pkg, mToken, mText, mDuration, displayId, callback);
                 }
             } else {
-                service.enqueueToast(pkg, mToken, tn, mDuration, displayId);
+                service.enqueueTextOrCustomToast(pkg, mToken, tn, mDuration, displayId,
+                        mIsCustomToast);
             }
         } catch (RemoteException e) {
             // Empty
@@ -253,12 +256,22 @@
      */
     @Deprecated
     public void setView(View view) {
+        mIsCustomToast = true;
         mNextView = view;
     }
 
     /**
      * Return the view.
      *
+     * <p>Toasts constructed with {@link #Toast(Context)} that haven't called {@link #setView(View)}
+     * with a non-{@code null} view will return {@code null} here.
+     *
+     * <p>Starting from Android {@link Build.VERSION_CODES#R}, in apps targeting API level {@link
+     * Build.VERSION_CODES#R} or higher, toasts constructed with {@link #makeText(Context,
+     * CharSequence, int)} or its variants will also return {@code null} here unless they had called
+     * {@link #setView(View)} with a non-{@code null} view. If you want to be notified when the
+     * toast is shown or hidden, use {@link #addCallback(Callback)}.
+     *
      * @see #setView
      * @deprecated Custom toast views are deprecated. Apps can create a standard text toast with the
      *      {@link #makeText(Context, CharSequence, int)} method, or use a
@@ -267,7 +280,8 @@
      *      targeting API level {@link Build.VERSION_CODES#R} or higher that are in the background
      *      will not have custom toast views displayed.
      */
-    public View getView() {
+    @Deprecated
+    @Nullable public View getView() {
         return mNextView;
     }
 
@@ -293,6 +307,10 @@
     /**
      * Set the margins of the view.
      *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method is a no-op when
+     * called on text toasts.
+     *
      * @param horizontalMargin The horizontal margin, in percentage of the
      *        container width, between the container's edges and the
      *        notification
@@ -301,30 +319,59 @@
      *        notification
      */
     public void setMargin(float horizontalMargin, float verticalMargin) {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "setMargin() shouldn't be called on text toasts, the values won't be used");
+        }
         mTN.mHorizontalMargin = horizontalMargin;
         mTN.mVerticalMargin = verticalMargin;
     }
 
     /**
      * Return the horizontal margin.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method shouldn't be called
+     * on text toasts as its return value may not reflect actual value since text toasts are not
+     * rendered by the app anymore.
      */
     public float getHorizontalMargin() {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "getHorizontalMargin() shouldn't be called on text toasts, the result may "
+                    + "not reflect actual values.");
+        }
         return mTN.mHorizontalMargin;
     }
 
     /**
      * Return the vertical margin.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method shouldn't be called
+     * on text toasts as its return value may not reflect actual value since text toasts are not
+     * rendered by the app anymore.
      */
     public float getVerticalMargin() {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "getVerticalMargin() shouldn't be called on text toasts, the result may not"
+                    + " reflect actual values.");
+        }
         return mTN.mVerticalMargin;
     }
 
     /**
      * Set the location at which the notification should appear on the screen.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method is a no-op when
+     * called on text toasts.
+     *
      * @see android.view.Gravity
      * @see #getGravity
      */
     public void setGravity(int gravity, int xOffset, int yOffset) {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "setGravity() shouldn't be called on text toasts, the values won't be used");
+        }
         mTN.mGravity = gravity;
         mTN.mX = xOffset;
         mTN.mY = yOffset;
@@ -332,27 +379,59 @@
 
      /**
      * Get the location at which the notification should appear on the screen.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method shouldn't be called
+     * on text toasts as its return value may not reflect actual value since text toasts are not
+     * rendered by the app anymore.
+     *
      * @see android.view.Gravity
      * @see #getGravity
      */
     public int getGravity() {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "getGravity() shouldn't be called on text toasts, the result may not reflect"
+                    + " actual values.");
+        }
         return mTN.mGravity;
     }
 
     /**
      * Return the X offset in pixels to apply to the gravity's location.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method shouldn't be called
+     * on text toasts as its return value may not reflect actual value since text toasts are not
+     * rendered by the app anymore.
      */
     public int getXOffset() {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "getXOffset() shouldn't be called on text toasts, the result may not reflect"
+                    + " actual values.");
+        }
         return mTN.mX;
     }
 
     /**
      * Return the Y offset in pixels to apply to the gravity's location.
+     *
+     * <p><strong>Warning:</strong> Starting from Android {@link Build.VERSION_CODES#R}, for apps
+     * targeting API level {@link Build.VERSION_CODES#R} or higher, this method shouldn't be called
+     * on text toasts as its return value may not reflect actual value since text toasts are not
+     * rendered by the app anymore.
      */
     public int getYOffset() {
+        if (isSystemRenderedTextToast()) {
+            Log.e(TAG, "getYOffset() shouldn't be called on text toasts, the result may not reflect"
+                    + " actual values.");
+        }
         return mTN.mY;
     }
 
+    private boolean isSystemRenderedTextToast() {
+        return Compatibility.isChangeEnabled(CHANGE_TEXT_TOASTS_IN_THE_SYSTEM) && mNextView == null;
+    }
+
     /**
      * Adds a callback to be notified when the toast is shown or hidden.
      *
@@ -381,12 +460,23 @@
      * @hide
      */
     @UnsupportedAppUsage
-    public WindowManager.LayoutParams getWindowParams() {
-        return mTN.mParams;
+    @Nullable public WindowManager.LayoutParams getWindowParams() {
+        if (Compatibility.isChangeEnabled(CHANGE_TEXT_TOASTS_IN_THE_SYSTEM)) {
+            if (mNextView != null) {
+                // Custom toasts
+                return mTN.mParams;
+            } else {
+                // Text toasts
+                return null;
+            }
+        } else {
+            // Text and custom toasts are app-rendered
+            return mTN.mParams;
+        }
     }
 
     /**
-     * Make a standard toast that just contains a text view.
+     * Make a standard toast that just contains text.
      *
      * @param context  The context to use.  Usually your {@link android.app.Application}
      *                 or {@link android.app.Activity} object.
@@ -429,7 +519,7 @@
     }
 
     /**
-     * Make a standard toast that just contains a text view with the text from a resource.
+     * Make a standard toast that just contains text from a resource.
      *
      * @param context  The context to use.  Usually your {@link android.app.Application}
      *                 or {@link android.app.Activity} object.
diff --git a/core/java/com/android/ims/internal/uce/common/CapInfo.java b/core/java/com/android/ims/internal/uce/common/CapInfo.java
index 2bb3f1f..a7a90f6 100644
--- a/core/java/com/android/ims/internal/uce/common/CapInfo.java
+++ b/core/java/com/android/ims/internal/uce/common/CapInfo.java
@@ -78,6 +78,10 @@
     private boolean mChatbotSupported = false;
     /** Chatbot role support. */
     private boolean mChatbotRoleSupported = false;
+    /** Standalone Chatbot communication support. */
+    private boolean mSmChatbotSupported = false;
+    /** MMtel based call composer support. */
+    private boolean mMmtelCallComposerSupported = false;
     /** List of supported extensions. */
     private String[] mExts = new String[10];
     /** Time used to compute when to query again. */
@@ -498,6 +502,34 @@
         this.mChatbotRoleSupported = chatbotRoleSupported;
     }
 
+    /**
+     * Checks whether standalone chatbot communication is supported.
+     */
+    public boolean isSmChatbotSupported() {
+        return mSmChatbotSupported;
+    }
+
+    /**
+     * Sets standalone chatbot communication as supported or not supported.
+     */
+    public void setSmChatbotSupported(boolean smChatbotSupported) {
+        this.mSmChatbotSupported = smChatbotSupported;
+    }
+
+    /**
+     * Checks whether Mmtel based call composer is supported.
+     */
+    public boolean isMmtelCallComposerSupported() {
+        return mMmtelCallComposerSupported;
+    }
+
+    /**
+     * Sets Mmtel based call composer as supported or not supported.
+     */
+    public void setMmtelCallComposerSupported(boolean mmtelCallComposerSupported) {
+        this.mMmtelCallComposerSupported = mmtelCallComposerSupported;
+    }
+
     /** Gets the list of supported extensions. */
     public String[] getExts() {
         return mExts;
@@ -553,6 +585,8 @@
         dest.writeInt(mSharedSketchSupported ? 1 : 0);
         dest.writeInt(mChatbotSupported ? 1 : 0);
         dest.writeInt(mChatbotRoleSupported ? 1 : 0);
+        dest.writeInt(mSmChatbotSupported ? 1 : 0);
+        dest.writeInt(mMmtelCallComposerSupported ? 1 : 0);
 
         dest.writeInt(mRcsIpVoiceCallSupported ? 1 : 0);
         dest.writeInt(mRcsIpVideoCallSupported ? 1 : 0);
@@ -602,6 +636,8 @@
         mSharedSketchSupported = (source.readInt() == 0) ? false : true;
         mChatbotSupported = (source.readInt() == 0) ? false : true;
         mChatbotRoleSupported = (source.readInt() == 0) ? false : true;
+        mSmChatbotSupported = (source.readInt() == 0) ? false : true;
+        mMmtelCallComposerSupported = (source.readInt() == 0) ? false : true;
 
         mRcsIpVoiceCallSupported = (source.readInt() == 0) ? false : true;
         mRcsIpVideoCallSupported = (source.readInt() == 0) ? false : true;
diff --git a/core/java/com/android/internal/BrightnessSynchronizer.java b/core/java/com/android/internal/BrightnessSynchronizer.java
new file mode 100644
index 0000000..aa23251
--- /dev/null
+++ b/core/java/com/android/internal/BrightnessSynchronizer.java
@@ -0,0 +1,273 @@
+/*
+ * Copyright (C) 2019 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;
+
+
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.Message;
+import android.os.PowerManager;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.MathUtils;
+
+import java.util.LinkedList;
+import java.util.Queue;
+
+/**
+ * BrightnessSynchronizer helps convert between the int (old) system and float
+ * (new) system for storing the brightness. It has methods to convert between the two and also
+ * observes for when one of the settings is changed and syncs this with the other.
+ */
+public class BrightnessSynchronizer{
+
+    private static final int MSG_UPDATE_FLOAT = 1;
+    private static final int MSG_UPDATE_INT = 2;
+
+    private static final String TAG = "BrightnessSynchronizer";
+    private static final Uri BRIGHTNESS_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
+    private static final Uri BRIGHTNESS_FLOAT_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
+
+    // The tolerance within which we consider brightness values approximately equal to eachother.
+    // This value is approximately 1/3 of the smallest possible brightness value.
+    public static final float EPSILON = 0.001f;
+
+    private final Context mContext;
+
+    private final Queue<Object> mWriteHistory = new LinkedList<>();
+
+    private final Handler mHandler = new Handler() {
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case MSG_UPDATE_FLOAT:
+                    updateBrightnessFloatFromInt(msg.arg1);
+                    break;
+                case MSG_UPDATE_INT:
+                    updateBrightnessIntFromFloat(Float.intBitsToFloat(msg.arg1));
+                    break;
+                default:
+                    super.handleMessage(msg);
+            }
+
+        }
+    };
+
+
+    public BrightnessSynchronizer(Context context) {
+        final BrightnessSyncObserver mBrightnessSyncObserver;
+        mContext = context;
+        mBrightnessSyncObserver = new BrightnessSyncObserver(mHandler);
+        mBrightnessSyncObserver.startObserving();
+    }
+
+    /**
+     * Converts between the int brightness system and the float brightness system.
+     */
+    public static float brightnessIntToFloat(Context context, int brightnessInt) {
+        PowerManager pm = context.getSystemService(PowerManager.class);
+        float pmMinBrightness = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
+        float pmMaxBrightness = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);
+        int minBrightnessInt = brightnessFloatToInt(pmMinBrightness, PowerManager.BRIGHTNESS_MIN,
+                PowerManager.BRIGHTNESS_MAX, PowerManager.BRIGHTNESS_OFF + 1,
+                PowerManager.BRIGHTNESS_ON);
+        int maxBrightnessInt = brightnessFloatToInt(pmMaxBrightness, PowerManager.BRIGHTNESS_MIN,
+                PowerManager.BRIGHTNESS_MAX, PowerManager.BRIGHTNESS_OFF + 1,
+                PowerManager.BRIGHTNESS_ON);
+
+        return brightnessIntToFloat(brightnessInt, minBrightnessInt, maxBrightnessInt,
+                pmMinBrightness, pmMaxBrightness);
+    }
+
+    /**
+     * Converts between the int brightness system and the float brightness system.
+     */
+    public static float brightnessIntToFloat(int brightnessInt, int minInt, int maxInt,
+            float minFloat, float maxFloat) {
+        if (brightnessInt == PowerManager.BRIGHTNESS_OFF) {
+            return PowerManager.BRIGHTNESS_OFF_FLOAT;
+        } else if (brightnessInt == PowerManager.BRIGHTNESS_INVALID) {
+            return PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        } else {
+            return MathUtils.constrainedMap(minFloat, maxFloat, (float) minInt, (float) maxInt,
+                    brightnessInt);
+        }
+    }
+
+    /**
+     * Converts between the float brightness system and the int brightness system.
+     */
+    public static int brightnessFloatToInt(Context context, float brightnessFloat) {
+        PowerManager pm = context.getSystemService(PowerManager.class);
+        float pmMinBrightness = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
+        float pmMaxBrightness = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);
+        int minBrightnessInt = brightnessFloatToInt(pmMinBrightness, PowerManager.BRIGHTNESS_MIN,
+                PowerManager.BRIGHTNESS_MAX, PowerManager.BRIGHTNESS_OFF + 1,
+                PowerManager.BRIGHTNESS_ON);
+        int maxBrightnessInt = brightnessFloatToInt(pmMaxBrightness, PowerManager.BRIGHTNESS_MIN,
+                PowerManager.BRIGHTNESS_MAX, PowerManager.BRIGHTNESS_OFF + 1,
+                PowerManager.BRIGHTNESS_ON);
+
+        return brightnessFloatToInt(brightnessFloat, pmMinBrightness, pmMaxBrightness,
+                minBrightnessInt, maxBrightnessInt);
+    }
+
+    /**
+     * Converts between the float brightness system and the int brightness system.
+     */
+    public static int brightnessFloatToInt(float brightnessFloat, float minFloat, float maxFloat,
+            int minInt, int maxInt) {
+        if (floatEquals(brightnessFloat, PowerManager.BRIGHTNESS_OFF_FLOAT)) {
+            return PowerManager.BRIGHTNESS_OFF;
+        } else if (Float.isNaN(brightnessFloat)) {
+            return PowerManager.BRIGHTNESS_INVALID;
+        } else {
+            return Math.round(MathUtils.constrainedMap((float) minInt, (float) maxInt, minFloat,
+                    maxFloat, brightnessFloat));
+        }
+    }
+
+    private static float getScreenBrightnessFloat(Context context) {
+        return Settings.System.getFloatForUser(context.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_FLOAT, Float.NaN, UserHandle.USER_CURRENT);
+    }
+
+    private static int getScreenBrightnessInt(Context context) {
+        return Settings.System.getIntForUser(context.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS, 0, UserHandle.USER_CURRENT);
+    }
+
+    private float mPreferredSettingValue;
+
+    /**
+     * Updates the float setting based on a passed in int value. This is called whenever the int
+     * setting changes. mWriteHistory keeps a record of the values that been written to the settings
+     * from either this method or updateBrightnessIntFromFloat. This is to ensure that the value
+     * being set is due to an external value being set, rather than the updateBrightness* methods.
+     * The intention of this is to avoid race conditions when the setting is being changed
+     * frequently and to ensure we are not reacting to settings changes from this file.
+     * @param value Brightness value as int to store in the float setting.
+     */
+    private void updateBrightnessFloatFromInt(int value) {
+        Object topOfQueue = mWriteHistory.peek();
+        if (topOfQueue != null && topOfQueue.equals(value)) {
+            mWriteHistory.poll();
+        } else {
+            if (brightnessFloatToInt(mContext, mPreferredSettingValue) == value) {
+                return;
+            }
+            float newBrightnessFloat = brightnessIntToFloat(mContext, value);
+            mWriteHistory.offer(newBrightnessFloat);
+            mPreferredSettingValue = newBrightnessFloat;
+            Settings.System.putFloatForUser(mContext.getContentResolver(),
+                    Settings.System.SCREEN_BRIGHTNESS_FLOAT, newBrightnessFloat,
+                    UserHandle.USER_CURRENT);
+        }
+    }
+
+    /**
+     * Updates the int setting based on a passed in float value. This is called whenever the float
+     * setting changes. mWriteHistory keeps a record of the values that been written to the settings
+     * from either this method or updateBrightnessFloatFromInt. This is to ensure that the value
+     * being set is due to an external value being set, rather than the updateBrightness* methods.
+     * The intention of this is to avoid race conditions when the setting is being changed
+     * frequently and to ensure we are not reacting to settings changes from this file.
+     * @param value Brightness setting as float to store in int setting.
+     */
+    private void updateBrightnessIntFromFloat(float value) {
+        int newBrightnessInt = brightnessFloatToInt(mContext, value);
+        Object topOfQueue = mWriteHistory.peek();
+        if (topOfQueue != null && topOfQueue.equals(value)) {
+            mWriteHistory.poll();
+        } else {
+            mWriteHistory.offer(newBrightnessInt);
+            mPreferredSettingValue = value;
+            Settings.System.putIntForUser(mContext.getContentResolver(),
+                    Settings.System.SCREEN_BRIGHTNESS, newBrightnessInt, UserHandle.USER_CURRENT);
+        }
+    }
+
+    /**
+     * Tests whether two brightness float values are within a small enough tolerance
+     * of each other.
+     * @param a first float to compare
+     * @param b second float to compare
+     * @return whether the two values are within a small enough tolerance value
+     */
+    public static boolean floatEquals(float a, float b) {
+        if (a == b) {
+            return true;
+        } else if (Float.isNaN(a) && Float.isNaN(b)) {
+            return true;
+        } else if (Math.abs(a - b) < EPSILON) {
+            return true;
+        } else {
+            return false;
+        }
+    }
+
+    private class BrightnessSyncObserver extends ContentObserver {
+        /**
+         * Creates a content observer.
+         * @param handler The handler to run {@link #onChange} on, or null if none.
+         */
+        BrightnessSyncObserver(Handler handler) {
+            super(handler);
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            onChange(selfChange, null);
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri) {
+            if (selfChange) {
+                return;
+            }
+            if (BRIGHTNESS_URI.equals(uri)) {
+                int currentBrightness = getScreenBrightnessInt(mContext);
+                mHandler.obtainMessage(MSG_UPDATE_FLOAT, currentBrightness, 0).sendToTarget();
+            } else if (BRIGHTNESS_FLOAT_URI.equals(uri)) {
+                float currentFloat = getScreenBrightnessFloat(mContext);
+                int toSend = Float.floatToIntBits(currentFloat);
+                mHandler.obtainMessage(MSG_UPDATE_INT, toSend, 0).sendToTarget();
+            }
+        }
+
+        public void startObserving() {
+            final ContentResolver cr = mContext.getContentResolver();
+            cr.unregisterContentObserver(this);
+            cr.registerContentObserver(BRIGHTNESS_URI, false, this, UserHandle.USER_ALL);
+            cr.registerContentObserver(BRIGHTNESS_FLOAT_URI, false, this, UserHandle.USER_ALL);
+        }
+
+        public void stopObserving() {
+            final ContentResolver cr = mContext.getContentResolver();
+            cr.unregisterContentObserver(this);
+        }
+    }
+}
diff --git a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
index 93659a4..a1c22e9 100644
--- a/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
+++ b/core/java/com/android/internal/accessibility/AccessibilityShortcutController.java
@@ -22,6 +22,7 @@
 import static com.android.internal.util.ArrayUtils.convertToLongArray;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
+import android.annotation.IntDef;
 import android.app.ActivityManager;
 import android.app.ActivityThread;
 import android.app.AlertDialog;
@@ -53,6 +54,8 @@
 import com.android.internal.R;
 import com.android.internal.util.function.pooled.PooledLambda;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.Collections;
 import java.util.List;
 import java.util.Locale;
@@ -85,6 +88,17 @@
     private boolean mEnabledOnLockScreen;
     private int mUserId;
 
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({
+            DialogStaus.NOT_SHOWN,
+            DialogStaus.SHOWN,
+    })
+    /** Denotes the user shortcut type. */
+    private @interface DialogStaus {
+        int NOT_SHOWN = 0;
+        int SHOWN  = 1;
+    }
+
     // Visible for testing
     public FrameworkObjectProvider mFrameworkObjectProvider = new FrameworkObjectProvider();
 
@@ -163,7 +177,8 @@
                 cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_ENABLED, 1, mUserId) == 1;
         // Enable the shortcut from the lockscreen by default if the dialog has been shown
         final int dialogAlreadyShown = Settings.Secure.getIntForUser(
-                cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, mUserId);
+                cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, DialogStaus.NOT_SHOWN,
+                mUserId);
         mEnabledOnLockScreen = Settings.Secure.getIntForUser(
                 cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_ON_LOCK_SCREEN,
                 dialogAlreadyShown, mUserId) == 1;
@@ -178,7 +193,8 @@
         final ContentResolver cr = mContext.getContentResolver();
         final int userId = ActivityManager.getCurrentUser();
         final int dialogAlreadyShown = Settings.Secure.getIntForUser(
-                cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, userId);
+                cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, DialogStaus.NOT_SHOWN,
+                userId);
         // Play a notification vibration
         Vibrator vibrator = (Vibrator) mContext.getSystemService(Context.VIBRATOR_SERVICE);
         if ((vibrator != null) && vibrator.hasVibrator()) {
@@ -205,7 +221,8 @@
             w.setAttributes(attr);
             mAlertDialog.show();
             Settings.Secure.putIntForUser(
-                    cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 1, userId);
+                    cr, Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, DialogStaus.SHOWN,
+                    userId);
         } else {
             playNotificationTone();
             if (mAlertDialog != null) {
@@ -251,15 +268,8 @@
     }
 
     private AlertDialog createShortcutWarningDialog(int userId) {
-        final String serviceDescription = getShortcutFeatureDescription(true /* Include summary */);
-
-        if (serviceDescription == null) {
-            return null;
-        }
-
-        final String warningMessage = String.format(
-                mContext.getString(R.string.accessibility_shortcut_toogle_warning),
-                serviceDescription);
+        final String warningMessage = mContext.getString(
+                R.string.accessibility_shortcut_toogle_warning);
         final AlertDialog alertDialog = mFrameworkObjectProvider.getAlertDialogBuilder(
                 // Use SystemUI context so we pick up any theme set in a vendor overlay
                 mFrameworkObjectProvider.getSystemUiContext())
@@ -272,11 +282,17 @@
                             Settings.Secure.putStringForUser(mContext.getContentResolver(),
                                     Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_SERVICE, "",
                                     userId);
+
+                            // If canceled, treat as if the dialog has never been shown
+                            Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                                    Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN,
+                                    DialogStaus.NOT_SHOWN, userId);
                         })
                 .setOnCancelListener((DialogInterface d) -> {
                     // If canceled, treat as if the dialog has never been shown
                     Settings.Secure.putIntForUser(mContext.getContentResolver(),
-                        Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN, 0, userId);
+                            Settings.Secure.ACCESSIBILITY_SHORTCUT_DIALOG_SHOWN,
+                            DialogStaus.NOT_SHOWN, userId);
                 })
                 .create();
         return alertDialog;
diff --git a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
index 77d8e02..78e8518 100644
--- a/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/AbstractMultiProfilePagerAdapter.java
@@ -15,18 +15,31 @@
  */
 package com.android.internal.app;
 
+import android.annotation.DrawableRes;
 import android.annotation.IntDef;
 import android.annotation.Nullable;
+import android.annotation.StringRes;
+import android.app.AppGlobals;
+import android.content.ContentResolver;
 import android.content.Context;
+import android.content.Intent;
+import android.content.pm.IPackageManager;
+import android.content.pm.ResolveInfo;
 import android.os.UserHandle;
+import android.os.UserManager;
 import android.view.View;
 import android.view.ViewGroup;
+import android.widget.Button;
+import android.widget.ImageView;
+import android.widget.TextView;
 
+import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.widget.PagerAdapter;
 import com.android.internal.widget.ViewPager;
 
 import java.util.HashSet;
+import java.util.List;
 import java.util.Objects;
 import java.util.Set;
 
@@ -46,11 +59,17 @@
     private int mCurrentPage;
     private OnProfileSelectedListener mOnProfileSelectedListener;
     private Set<Integer> mLoadedPages;
+    private final UserHandle mPersonalProfileUserHandle;
+    private final UserHandle mWorkProfileUserHandle;
 
-    AbstractMultiProfilePagerAdapter(Context context, int currentPage) {
+    AbstractMultiProfilePagerAdapter(Context context, int currentPage,
+            UserHandle personalProfileUserHandle,
+            UserHandle workProfileUserHandle) {
         mContext = Objects.requireNonNull(context);
         mCurrentPage = currentPage;
         mLoadedPages = new HashSet<>();
+        mPersonalProfileUserHandle = personalProfileUserHandle;
+        mWorkProfileUserHandle = workProfileUserHandle;
     }
 
     void setOnProfileSelectedListener(OnProfileSelectedListener listener) {
@@ -72,7 +91,7 @@
             public void onPageSelected(int position) {
                 mCurrentPage = position;
                 if (!mLoadedPages.contains(position)) {
-                    getActiveListAdapter().rebuildList();
+                    rebuildActiveTab(true);
                     mLoadedPages.add(position);
                 }
                 if (mOnProfileSelectedListener != null) {
@@ -85,6 +104,13 @@
         mLoadedPages.add(mCurrentPage);
     }
 
+    void clearInactiveProfileCache() {
+        if (mLoadedPages.size() == 1) {
+            return;
+        }
+        mLoadedPages.remove(1 - mCurrentPage);
+    }
+
     @Override
     public ViewGroup instantiateItem(ViewGroup container, int position) {
         final ProfileDescriptor profileDescriptor = getItem(position);
@@ -187,12 +213,142 @@
     @VisibleForTesting
     public abstract @Nullable ResolverListAdapter getInactiveListAdapter();
 
+    public abstract ResolverListAdapter getPersonalListAdapter();
+
+    public abstract @Nullable ResolverListAdapter getWorkListAdapter();
+
     abstract Object getCurrentRootAdapter();
 
     abstract ViewGroup getActiveAdapterView();
 
     abstract @Nullable ViewGroup getInactiveAdapterView();
 
+    /**
+     * Rebuilds the tab that is currently visible to the user.
+     * <p>Returns {@code true} if rebuild has completed.
+     */
+    boolean rebuildActiveTab(boolean doPostProcessing) {
+        return rebuildTab(getActiveListAdapter(), doPostProcessing);
+    }
+
+    /**
+     * Rebuilds the tab that is not currently visible to the user, if such one exists.
+     * <p>Returns {@code true} if rebuild has completed.
+     */
+    boolean rebuildInactiveTab(boolean doPostProcessing) {
+        if (getItemCount() == 1) {
+            return false;
+        }
+        return rebuildTab(getInactiveListAdapter(), doPostProcessing);
+    }
+
+    private int userHandleToPageIndex(UserHandle userHandle) {
+        if (userHandle == getPersonalListAdapter().mResolverListController.getUserHandle()) {
+            return PROFILE_PERSONAL;
+        } else {
+            return PROFILE_WORK;
+        }
+    }
+
+    private boolean rebuildTab(ResolverListAdapter activeListAdapter, boolean doPostProcessing) {
+        UserHandle listUserHandle = activeListAdapter.getUserHandle();
+        UserManager userManager = mContext.getSystemService(UserManager.class);
+        if (listUserHandle == mWorkProfileUserHandle
+                && userManager.isQuietModeEnabled(mWorkProfileUserHandle)) {
+            showEmptyState(activeListAdapter,
+                    R.drawable.ic_work_apps_off,
+                    R.string.resolver_turn_on_work_apps,
+                    R.string.resolver_turn_on_work_apps_explanation,
+                    (View.OnClickListener) v ->
+                            userManager.requestQuietModeEnabled(false, mWorkProfileUserHandle));
+            return false;
+        }
+        if (UserHandle.myUserId() != listUserHandle.getIdentifier()) {
+            if (!hasCrossProfileIntents(activeListAdapter.getIntents(),
+                    UserHandle.myUserId(), listUserHandle.getIdentifier())) {
+                if (listUserHandle == mPersonalProfileUserHandle) {
+                    showEmptyState(activeListAdapter,
+                            R.drawable.ic_sharing_disabled,
+                            R.string.resolver_cant_share_with_personal_apps,
+                            R.string.resolver_cant_share_cross_profile_explanation);
+                } else {
+                    showEmptyState(activeListAdapter,
+                            R.drawable.ic_sharing_disabled,
+                            R.string.resolver_cant_share_with_work_apps,
+                            R.string.resolver_cant_share_cross_profile_explanation);
+                }
+                return false;
+            }
+        }
+        return activeListAdapter.rebuildList(doPostProcessing);
+    }
+
+    void showEmptyState(ResolverListAdapter listAdapter) {
+        UserHandle listUserHandle = listAdapter.getUserHandle();
+        if (UserHandle.myUserId() == listUserHandle.getIdentifier()
+                || !hasAppsInOtherProfile(listAdapter)) {
+            showEmptyState(listAdapter,
+                    R.drawable.ic_no_apps,
+                    R.string.resolver_no_apps_available,
+                    R.string.resolver_no_apps_available_explanation);
+        }
+    }
+
+    private void showEmptyState(ResolverListAdapter activeListAdapter,
+            @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes) {
+        showEmptyState(activeListAdapter, iconRes, titleRes, subtitleRes, /* buttonOnClick */ null);
+    }
+
+    private void showEmptyState(ResolverListAdapter activeListAdapter,
+            @DrawableRes int iconRes, @StringRes int titleRes, @StringRes int subtitleRes,
+            View.OnClickListener buttonOnClick) {
+        ProfileDescriptor descriptor = getItem(
+                userHandleToPageIndex(activeListAdapter.getUserHandle()));
+        descriptor.rootView.findViewById(R.id.resolver_list).setVisibility(View.GONE);
+        View emptyStateView = descriptor.rootView.findViewById(R.id.resolver_empty_state);
+        emptyStateView.setVisibility(View.VISIBLE);
+
+        ImageView icon = emptyStateView.findViewById(R.id.resolver_empty_state_icon);
+        icon.setImageResource(iconRes);
+
+        TextView title = emptyStateView.findViewById(R.id.resolver_empty_state_title);
+        title.setText(titleRes);
+
+        TextView subtitle = emptyStateView.findViewById(R.id.resolver_empty_state_subtitle);
+        subtitle.setText(subtitleRes);
+
+        Button button = emptyStateView.findViewById(R.id.resolver_empty_state_button);
+        button.setVisibility(buttonOnClick != null ? View.VISIBLE : View.GONE);
+        button.setOnClickListener(buttonOnClick);
+    }
+
+    private boolean hasCrossProfileIntents(List<Intent> intents, int source, int target) {
+        IPackageManager packageManager = AppGlobals.getPackageManager();
+        ContentResolver contentResolver = mContext.getContentResolver();
+        for (Intent intent : intents) {
+            if (IntentForwarderActivity.canForward(intent, source, target, packageManager,
+                    contentResolver) != null) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    private boolean hasAppsInOtherProfile(ResolverListAdapter adapter) {
+        if (mWorkProfileUserHandle == null) {
+            return false;
+        }
+        List<ResolverActivity.ResolvedComponentInfo> resolversForIntent =
+                adapter.getResolversForUser(UserHandle.of(UserHandle.myUserId()));
+        for (ResolverActivity.ResolvedComponentInfo info : resolversForIntent) {
+            ResolveInfo resolveInfo = info.getResolveInfoAt(0);
+            if (resolveInfo.targetUserId != UserHandle.USER_CURRENT) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     protected class ProfileDescriptor {
         final ViewGroup rootView;
         ProfileDescriptor(ViewGroup rootView) {
diff --git a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java
index 384275f..86d2ed6 100644
--- a/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java
+++ b/core/java/com/android/internal/app/AccessibilityButtonChooserActivity.java
@@ -30,15 +30,19 @@
 import static com.android.internal.util.Preconditions.checkArgument;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
+import android.accessibilityservice.AccessibilityShortcutInfo;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.Activity;
+import android.app.ActivityManager;
 import android.app.AlertDialog;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.content.res.TypedArray;
+import android.graphics.ColorMatrix;
+import android.graphics.ColorMatrixColorFilter;
 import android.graphics.drawable.Drawable;
 import android.os.Build;
 import android.os.Bundle;
@@ -74,6 +78,8 @@
  */
 public class AccessibilityButtonChooserActivity extends Activity {
     private static final char SERVICES_SEPARATOR = ':';
+    private static final float DISABLED_ALPHA = 0.5f;
+    private static final float ENABLED_ALPHA = 1.0f;
     private static final TextUtils.SimpleStringSplitter sStringColonSplitter =
             new TextUtils.SimpleStringSplitter(SERVICES_SEPARATOR);
     @ShortcutType
@@ -261,10 +267,10 @@
             @ShortcutType int shortcutType) {
         final List<AccessibilityButtonTarget> targets = new ArrayList<>();
         targets.addAll(getAccessibilityServiceTargets(context));
+        targets.addAll(getAccessibilityActivityTargets(context));
         targets.addAll(getWhiteListingServiceTargets(context));
 
-        final AccessibilityManager ams = (AccessibilityManager) context.getSystemService(
-                Context.ACCESSIBILITY_SERVICE);
+        final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class);
         final List<String> requiredTargets = ams.getAccessibilityShortcutTargets(shortcutType);
         targets.removeIf(target -> !requiredTargets.contains(target.getId()));
 
@@ -273,8 +279,7 @@
 
     private static List<AccessibilityButtonTarget> getAccessibilityServiceTargets(
             @NonNull Context context) {
-        final AccessibilityManager ams = (AccessibilityManager) context.getSystemService(
-                Context.ACCESSIBILITY_SERVICE);
+        final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class);
         final List<AccessibilityServiceInfo> installedServices =
                 ams.getInstalledAccessibilityServiceList();
         if (installedServices == null) {
@@ -289,6 +294,24 @@
         return targets;
     }
 
+    private static List<AccessibilityButtonTarget> getAccessibilityActivityTargets(
+            @NonNull Context context) {
+        final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class);
+        final List<AccessibilityShortcutInfo> installedServices =
+                ams.getInstalledAccessibilityShortcutListAsUser(context,
+                        ActivityManager.getCurrentUser());
+        if (installedServices == null) {
+            return Collections.emptyList();
+        }
+
+        final List<AccessibilityButtonTarget> targets = new ArrayList<>(installedServices.size());
+        for (AccessibilityShortcutInfo info : installedServices) {
+            targets.add(new AccessibilityButtonTarget(context, info));
+        }
+
+        return targets;
+    }
+
     private static List<AccessibilityButtonTarget> getWhiteListingServiceTargets(
             @NonNull Context context) {
         final List<AccessibilityButtonTarget> targets = new ArrayList<>();
@@ -350,10 +373,11 @@
     }
 
     private static class ViewHolder {
+        View mItemView;
         ImageView mIconView;
         TextView mLabelView;
         FrameLayout mItemContainer;
-        ImageView mViewItem;
+        ImageView mActionViewItem;
         Switch mSwitchItem;
     }
 
@@ -403,12 +427,13 @@
                         R.layout.accessibility_button_chooser_item, parent, /* attachToRoot= */
                         false);
                 holder = new ViewHolder();
+                holder.mItemView = convertView;
                 holder.mIconView = convertView.findViewById(R.id.accessibility_button_target_icon);
                 holder.mLabelView = convertView.findViewById(
                         R.id.accessibility_button_target_label);
                 holder.mItemContainer = convertView.findViewById(
                         R.id.accessibility_button_target_item_container);
-                holder.mViewItem = convertView.findViewById(
+                holder.mActionViewItem = convertView.findViewById(
                         R.id.accessibility_button_target_view_item);
                 holder.mSwitchItem = convertView.findViewById(
                         R.id.accessibility_button_target_switch_item);
@@ -452,23 +477,37 @@
             final boolean isLaunchMenuMode = (mShortcutMenuMode == ShortcutMenuMode.LAUNCH);
             final boolean isHardwareButtonTriggered =
                     (mShortcutButtonType == ACCESSIBILITY_SHORTCUT_KEY);
+            final boolean enabledState = (isLaunchMenuMode || isHardwareButtonTriggered);
+            final ColorMatrix grayScaleMatrix = new ColorMatrix();
+            grayScaleMatrix.setSaturation(/* grayScale */0);
 
-            holder.mLabelView.setEnabled(isLaunchMenuMode || isHardwareButtonTriggered);
-            holder.mViewItem.setEnabled(isLaunchMenuMode || isHardwareButtonTriggered);
-            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
-            holder.mViewItem.setVisibility(View.VISIBLE);
+            holder.mIconView.setColorFilter(enabledState
+                    ? null : new ColorMatrixColorFilter(grayScaleMatrix));
+            holder.mIconView.setAlpha(enabledState
+                    ? ENABLED_ALPHA : DISABLED_ALPHA);
+            holder.mLabelView.setEnabled(enabledState);
+            holder.mActionViewItem.setEnabled(enabledState);
+            holder.mActionViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
+            holder.mActionViewItem.setVisibility(View.VISIBLE);
             holder.mSwitchItem.setVisibility(View.GONE);
             holder.mItemContainer.setVisibility(isLaunchMenuMode ? View.GONE : View.VISIBLE);
+            holder.mItemView.setEnabled(enabledState);
+            holder.mItemView.setClickable(!enabledState);
         }
 
         private void updateInvisibleActionItemVisibility(@NonNull Context context,
                 @NonNull ViewHolder holder) {
-            final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT);
-
-            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
-            holder.mViewItem.setVisibility(View.VISIBLE);
+            holder.mIconView.setColorFilter(null);
+            holder.mIconView.setAlpha(ENABLED_ALPHA);
+            holder.mLabelView.setEnabled(true);
+            holder.mActionViewItem.setEnabled(true);
+            holder.mActionViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
+            holder.mActionViewItem.setVisibility(View.VISIBLE);
             holder.mSwitchItem.setVisibility(View.GONE);
-            holder.mItemContainer.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
+            holder.mItemContainer.setVisibility((mShortcutMenuMode == ShortcutMenuMode.EDIT)
+                    ? View.VISIBLE : View.GONE);
+            holder.mItemView.setEnabled(true);
+            holder.mItemView.setClickable(false);
         }
 
         private void updateIntuitiveActionItemVisibility(@NonNull Context context,
@@ -478,23 +517,32 @@
                     ? isWhiteListingServiceEnabled(context, target)
                     : isAccessibilityServiceEnabled(context, target);
 
-            holder.mViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
-            holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
+            holder.mIconView.setColorFilter(null);
+            holder.mIconView.setAlpha(ENABLED_ALPHA);
+            holder.mLabelView.setEnabled(true);
+            holder.mActionViewItem.setEnabled(true);
+            holder.mActionViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
+            holder.mActionViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
             holder.mSwitchItem.setVisibility(isEditMenuMode ? View.GONE : View.VISIBLE);
             holder.mSwitchItem.setChecked(!isEditMenuMode && isServiceEnabled);
             holder.mItemContainer.setVisibility(View.VISIBLE);
+            holder.mItemView.setEnabled(true);
+            holder.mItemView.setClickable(false);
         }
 
         private void updateBounceActionItemVisibility(@NonNull Context context,
                 @NonNull ViewHolder holder) {
-            final boolean isEditMenuMode = (mShortcutMenuMode == ShortcutMenuMode.EDIT);
-
-            holder.mViewItem.setImageDrawable(
-                    isEditMenuMode ? context.getDrawable(R.drawable.ic_delete_item)
-                            : context.getDrawable(R.drawable.ic_open_in_new));
-            holder.mViewItem.setVisibility(isEditMenuMode ? View.VISIBLE : View.GONE);
+            holder.mIconView.setColorFilter(null);
+            holder.mIconView.setAlpha(ENABLED_ALPHA);
+            holder.mLabelView.setEnabled(true);
+            holder.mActionViewItem.setEnabled(true);
+            holder.mActionViewItem.setImageDrawable(context.getDrawable(R.drawable.ic_delete_item));
+            holder.mActionViewItem.setVisibility((mShortcutMenuMode == ShortcutMenuMode.EDIT)
+                    ? View.VISIBLE : View.GONE);
             holder.mSwitchItem.setVisibility(View.GONE);
             holder.mItemContainer.setVisibility(View.VISIBLE);
+            holder.mItemView.setEnabled(true);
+            holder.mItemView.setClickable(false);
         }
     }
 
@@ -513,6 +561,14 @@
             this.mFragmentType = getAccessibilityServiceFragmentType(serviceInfo);
         }
 
+        AccessibilityButtonTarget(@NonNull Context context,
+                @NonNull AccessibilityShortcutInfo shortcutInfo) {
+            this.mId = shortcutInfo.getComponentName().flattenToString();
+            this.mLabel = shortcutInfo.getActivityInfo().loadLabel(context.getPackageManager());
+            this.mDrawable = shortcutInfo.getActivityInfo().loadIcon(context.getPackageManager());
+            this.mFragmentType = AccessibilityServiceFragmentType.BOUNCE;
+        }
+
         AccessibilityButtonTarget(Context context, @NonNull String id, int labelResId,
                 int iconRes, @AccessibilityServiceFragmentType int fragmentType) {
             this.mId = id;
@@ -540,8 +596,7 @@
 
     private static boolean isAccessibilityServiceEnabled(@NonNull Context context,
             AccessibilityButtonTarget target) {
-        final AccessibilityManager ams = (AccessibilityManager) context.getSystemService(
-                Context.ACCESSIBILITY_SERVICE);
+        final AccessibilityManager ams = context.getSystemService(AccessibilityManager.class);
         final List<AccessibilityServiceInfo> enabledServices =
                 ams.getEnabledAccessibilityServiceList(AccessibilityServiceInfo.FEEDBACK_ALL_MASK);
 
@@ -568,7 +623,7 @@
                 onIntuitiveTargetSelected(target);
                 break;
             case AccessibilityServiceFragmentType.BOUNCE:
-                // Do nothing
+                onBounceTargetSelected(target);
                 break;
             default:
                 throw new IllegalStateException("Unexpected fragment type");
@@ -579,8 +634,7 @@
 
     private void onLegacyTargetSelected(AccessibilityButtonTarget target) {
         if (mShortcutType == ACCESSIBILITY_BUTTON) {
-            final AccessibilityManager ams = (AccessibilityManager) getSystemService(
-                    Context.ACCESSIBILITY_SERVICE);
+            final AccessibilityManager ams = getSystemService(AccessibilityManager.class);
             ams.notifyAccessibilityButtonClicked(getDisplayId(), target.getId());
         } else if (mShortcutType == ACCESSIBILITY_SHORTCUT_KEY) {
             switchServiceState(target);
@@ -588,15 +642,27 @@
     }
 
     private void onInvisibleTargetSelected(AccessibilityButtonTarget target) {
-        final AccessibilityManager ams = (AccessibilityManager) getSystemService(
-                Context.ACCESSIBILITY_SERVICE);
-        ams.notifyAccessibilityButtonClicked(getDisplayId(), target.getId());
+        final AccessibilityManager ams = getSystemService(AccessibilityManager.class);
+        if (mShortcutType == ACCESSIBILITY_BUTTON) {
+            ams.notifyAccessibilityButtonClicked(getDisplayId(), target.getId());
+        } else if (mShortcutType == ACCESSIBILITY_SHORTCUT_KEY) {
+            ams.performAccessibilityShortcut(target.getId());
+        }
     }
 
     private void onIntuitiveTargetSelected(AccessibilityButtonTarget target) {
         switchServiceState(target);
     }
 
+    private void onBounceTargetSelected(AccessibilityButtonTarget target) {
+        final AccessibilityManager ams = getSystemService(AccessibilityManager.class);
+        if (mShortcutType == ACCESSIBILITY_BUTTON) {
+            ams.notifyAccessibilityButtonClicked(getDisplayId(), target.getId());
+        } else if (mShortcutType == ACCESSIBILITY_SHORTCUT_KEY) {
+            ams.performAccessibilityShortcut(target.getId());
+        }
+    }
+
     private void switchServiceState(AccessibilityButtonTarget target) {
         final ComponentName componentName =
                 ComponentName.unflattenFromString(target.getId());
@@ -628,7 +694,7 @@
                 onIntuitiveTargetDeleted(position, componentId);
                 break;
             case AccessibilityServiceFragmentType.BOUNCE:
-                // Do nothing
+                onBounceTargetDeleted(position, componentId);
                 break;
             default:
                 throw new IllegalStateException("Unexpected fragment type");
@@ -666,6 +732,12 @@
         mTargetAdapter.notifyDataSetChanged();
     }
 
+    private void onBounceTargetDeleted(int position, String componentId) {
+        optOutValueFromSettings(this, mShortcutUserType, componentId);
+        mTargets.remove(position);
+        mTargetAdapter.notifyDataSetChanged();
+    }
+
     private void onCancelButtonClicked() {
         mTargetAdapter.setShortcutMenuMode(ShortcutMenuMode.LAUNCH);
         mTargetAdapter.notifyDataSetChanged();
diff --git a/core/java/com/android/internal/app/BlockedAppActivity.java b/core/java/com/android/internal/app/BlockedAppActivity.java
new file mode 100644
index 0000000..fbdbbfb
--- /dev/null
+++ b/core/java/com/android/internal/app/BlockedAppActivity.java
@@ -0,0 +1,86 @@
+/*
+ * 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.internal.app;
+
+import android.content.Intent;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.os.Bundle;
+import android.text.TextUtils;
+import android.util.Slog;
+
+import com.android.internal.R;
+
+/**
+ * A dialog shown to the user when they try to launch an app that is not allowed in lock task
+ * mode. The intent to start this activity must be created with the static factory method provided
+ * below.
+ */
+public class BlockedAppActivity extends AlertActivity {
+
+    private static final String TAG = "BlockedAppActivity";
+    private static final String PACKAGE_NAME = "com.android.internal.app";
+    private static final String EXTRA_BLOCKED_PACKAGE = PACKAGE_NAME + ".extra.BLOCKED_PACKAGE";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        Intent intent = getIntent();
+        int userId = intent.getIntExtra(Intent.EXTRA_USER_ID, /* defaultValue= */ -1);
+        if (userId < 0) {
+            Slog.wtf(TAG, "Invalid user: " + userId);
+            finish();
+            return;
+        }
+
+        String packageName = intent.getStringExtra(EXTRA_BLOCKED_PACKAGE);
+        if (TextUtils.isEmpty(packageName)) {
+            Slog.wtf(TAG, "Invalid package: " + packageName);
+            finish();
+            return;
+        }
+
+        CharSequence appLabel = getAppLabel(userId, packageName);
+
+        mAlertParams.mTitle = getString(R.string.app_blocked_title);
+        mAlertParams.mMessage = getString(R.string.app_blocked_message, appLabel);
+        mAlertParams.mPositiveButtonText = getString(android.R.string.ok);
+        setupAlert();
+    }
+
+    private CharSequence getAppLabel(int userId, String packageName) {
+        PackageManager pm = getPackageManager();
+        try {
+            ApplicationInfo aInfo =
+                    pm.getApplicationInfoAsUser(packageName, /* flags= */ 0, userId);
+            return aInfo.loadLabel(pm);
+        } catch (PackageManager.NameNotFoundException ne) {
+            Slog.e(TAG, "Package " + packageName + " not found", ne);
+        }
+        return packageName;
+    }
+
+
+    /** Creates an intent that launches {@link BlockedAppActivity}. */
+    public static Intent createIntent(int userId, String packageName) {
+        return new Intent()
+                .setClassName("android", BlockedAppActivity.class.getName())
+                .putExtra(Intent.EXTRA_USER_ID, userId)
+                .putExtra(EXTRA_BLOCKED_PACKAGE, packageName);
+    }
+}
diff --git a/core/java/com/android/internal/app/ChooserActivity.java b/core/java/com/android/internal/app/ChooserActivity.java
index 65128e4..07ca79a 100644
--- a/core/java/com/android/internal/app/ChooserActivity.java
+++ b/core/java/com/android/internal/app/ChooserActivity.java
@@ -53,6 +53,7 @@
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
 import android.content.res.Configuration;
+import android.content.res.Resources;
 import android.database.Cursor;
 import android.database.DataSetObserver;
 import android.graphics.Bitmap;
@@ -81,6 +82,7 @@
 import android.provider.DocumentsContract;
 import android.provider.Downloads;
 import android.provider.OpenableColumns;
+import android.provider.Settings;
 import android.service.chooser.ChooserTarget;
 import android.service.chooser.ChooserTargetService;
 import android.service.chooser.IChooserTargetResult;
@@ -101,6 +103,7 @@
 import android.view.ViewGroup.LayoutParams;
 import android.view.animation.AccelerateInterpolator;
 import android.view.animation.DecelerateInterpolator;
+import android.widget.Button;
 import android.widget.ImageView;
 import android.widget.Space;
 import android.widget.TextView;
@@ -131,6 +134,7 @@
 import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.net.URISyntaxException;
 import java.text.Collator;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -166,6 +170,9 @@
 
     private static final String PREF_NUM_SHEET_EXPANSIONS = "pref_num_sheet_expansions";
 
+    private static final String CHIP_LABEL_METADATA_KEY = "android.service.chooser.chip_label";
+    private static final String CHIP_ICON_METADATA_KEY = "android.service.chooser.chip_icon";
+
     private static final boolean DEBUG = true;
 
     private static final boolean USE_PREDICTION_MANAGER_FOR_SHARE_ACTIVITIES = true;
@@ -366,7 +373,11 @@
                 Log.i(TAG, "Hiding image preview area. Timed out waiting for preview to load"
                         + " within " + mImageLoadTimeoutMillis + "ms.");
                 collapseParentView();
-                hideContentPreview();
+                if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+                    hideStickyContentPreview();
+                } else if (mChooserMultiProfilePagerAdapter.getCurrentRootAdapter() != null) {
+                    mChooserMultiProfilePagerAdapter.getCurrentRootAdapter().hideContentPreview();
+                }
                 mHideParentOnFail = false;
             }
         }
@@ -527,6 +538,15 @@
         mIsSuccessfullySelected = false;
         Intent intent = getIntent();
         Parcelable targetParcelable = intent.getParcelableExtra(Intent.EXTRA_INTENT);
+        if (targetParcelable instanceof Uri) {
+            try {
+                targetParcelable = Intent.parseUri(targetParcelable.toString(),
+                        Intent.URI_INTENT_SCHEME);
+            } catch (URISyntaxException ex) {
+                // doesn't parse as an intent; let the next test fail and error out
+            }
+        }
+
         if (!(targetParcelable instanceof Intent)) {
             Log.w("ChooserActivity", "Target is not an intent: " + targetParcelable);
             finish();
@@ -777,7 +797,9 @@
                 /* userHandle */ UserHandle.of(UserHandle.myUserId()));
         return new ChooserMultiProfilePagerAdapter(
                 /* context */ this,
-                adapter);
+                adapter,
+                getPersonalProfileUserHandle(),
+                /* workProfileUserHandle= */ null);
     }
 
     private ChooserMultiProfilePagerAdapter createChooserMultiProfilePagerAdapterForTwoProfiles(
@@ -804,12 +826,19 @@
                 /* context */ this,
                 personalAdapter,
                 workAdapter,
-                /* defaultProfile */ getCurrentProfile());
+                /* defaultProfile */ getCurrentProfile(),
+                getPersonalProfileUserHandle(),
+                getWorkProfileUserHandle());
     }
 
     @Override
     protected boolean postRebuildList(boolean rebuildCompleted) {
-        updateContentPreview();
+        updateStickyContentPreview();
+        if (shouldShowStickyContentPreview()
+                || mChooserMultiProfilePagerAdapter
+                        .getCurrentRootAdapter().getContentPreviewRowCount() != 0) {
+            logActionShareWithPreview();
+        }
         return postRebuildListInternal(rebuildCompleted);
     }
 
@@ -856,11 +885,11 @@
     }
 
     @Override
-    protected PackageMonitor createPackageMonitor() {
+    protected PackageMonitor createPackageMonitor(ResolverListAdapter listAdapter) {
         return new PackageMonitor() {
             @Override
             public void onSomePackagesChanged() {
-                handlePackagesChanged();
+                handlePackagesChanged(listAdapter);
             }
         };
     }
@@ -869,9 +898,19 @@
      * Update UI to reflect changes in data.
      */
     public void handlePackagesChanged() {
-        // TODO(arangelov): Dispatch this to all adapters when we have the helper methods
-        // in a follow-up CL
-        mChooserMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
+        handlePackagesChanged(/* listAdapter */ null);
+    }
+
+    /**
+     * Update UI to reflect changes in data.
+     * <p>If {@code listAdapter} is {@code null}, both profile list adapters are updated.
+     */
+    private void handlePackagesChanged(@Nullable ResolverListAdapter listAdapter) {
+        if (listAdapter == null) {
+            mChooserMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
+        } else {
+            listAdapter.handlePackagesChanged();
+        }
         updateProfileViewButton();
     }
 
@@ -948,6 +987,8 @@
         updateLayoutWidth(R.id.content_preview_text_layout, width, parent);
         updateLayoutWidth(R.id.content_preview_title_layout, width, parent);
         updateLayoutWidth(R.id.content_preview_file_layout, width, parent);
+        findViewById(R.id.content_preview_container)
+                .setVisibility(shouldShowStickyContentPreview() ? View.VISIBLE : View.GONE);
     }
 
     private void updateLayoutWidth(int layoutResourceId, int width, View parent) {
@@ -965,6 +1006,108 @@
         return displayContentPreview(previewType, targetIntent, getLayoutInflater(), parent);
     }
 
+    private ComponentName getNearbySharingComponent() {
+        String nearbyComponent = Settings.Secure.getString(
+                getContentResolver(),
+                Settings.Secure.NEARBY_SHARING_COMPONENT);
+        if (TextUtils.isEmpty(nearbyComponent)) {
+            nearbyComponent = getString(R.string.config_defaultNearbySharingComponent);
+        }
+        if (TextUtils.isEmpty(nearbyComponent)) {
+            return null;
+        }
+        return ComponentName.unflattenFromString(nearbyComponent);
+    }
+
+    private TargetInfo getNearbySharingTarget(Intent originalIntent) {
+        final ComponentName cn = getNearbySharingComponent();
+        if (cn == null) return null;
+
+        final Intent resolveIntent = new Intent();
+        resolveIntent.setComponent(cn);
+        final ResolveInfo ri = getPackageManager().resolveActivity(
+                resolveIntent, PackageManager.GET_META_DATA);
+        if (ri == null || ri.activityInfo == null) {
+            Log.e(TAG, "Device-specified nearby sharing component (" + cn
+                    + ") not available");
+            return null;
+        }
+
+        // Allow the nearby sharing component to provide a more appropriate icon and label
+        // for the chip.
+        CharSequence name = null;
+        Drawable icon = null;
+        final Bundle metaData = ri.activityInfo.metaData;
+        if (metaData != null) {
+            try {
+                final Resources pkgRes = getPackageManager().getResourcesForActivity(cn);
+                final int nameResId = metaData.getInt(CHIP_LABEL_METADATA_KEY);
+                name = pkgRes.getString(nameResId);
+                final int resId = metaData.getInt(CHIP_ICON_METADATA_KEY);
+                icon = pkgRes.getDrawable(resId);
+            } catch (Resources.NotFoundException ex) {
+            } catch (NameNotFoundException ex) {
+            }
+        }
+        if (TextUtils.isEmpty(name)) {
+            name = ri.loadLabel(getPackageManager());
+        }
+        if (icon == null) {
+            icon = ri.loadIcon(getPackageManager());
+        }
+
+        final DisplayResolveInfo dri = new DisplayResolveInfo(
+                originalIntent, ri, name, "", resolveIntent, null);
+        dri.setDisplayIcon(icon);
+        return dri;
+    }
+
+    private Button createActionButton(Drawable icon, CharSequence title, View.OnClickListener r) {
+        Button b = (Button) LayoutInflater.from(this).inflate(R.layout.chooser_action_button, null);
+        if (icon != null) {
+            final int size = getResources()
+                    .getDimensionPixelSize(R.dimen.chooser_action_button_icon_size);
+            icon.setBounds(0, 0, size, size);
+            b.setCompoundDrawablesRelative(icon, null, null, null);
+        }
+        b.setText(title);
+        b.setOnClickListener(r);
+        return b;
+    }
+
+    private Button createCopyButton() {
+        final Button b = createActionButton(
+                getDrawable(R.drawable.ic_menu_copy_material),
+                getString(R.string.copy), this::onCopyButtonClicked);
+        b.setId(R.id.chooser_copy_button);
+        return b;
+    }
+
+    private @Nullable Button createNearbyButton(Intent originalIntent) {
+        final TargetInfo ti = getNearbySharingTarget(originalIntent);
+        if (ti == null) return null;
+
+        return createActionButton(
+                ti.getDisplayIcon(this),
+                ti.getDisplayLabel(),
+                (View unused) -> {
+                    safelyStartActivity(ti);
+                    finish();
+                }
+        );
+    }
+
+    private void addActionButton(ViewGroup parent, Button b) {
+        if (b == null) return;
+        final ViewGroup.MarginLayoutParams lp = new ViewGroup.MarginLayoutParams(
+                        LayoutParams.WRAP_CONTENT,
+                        LayoutParams.WRAP_CONTENT
+                );
+        final int gap = getResources().getDimensionPixelSize(R.dimen.resolver_icon_margin) / 2;
+        lp.setMarginsRelative(gap, 0, gap, 0);
+        parent.addView(b, lp);
+    }
+
     private ViewGroup displayContentPreview(@ContentPreviewType int previewType,
             Intent targetIntent, LayoutInflater layoutInflater, ViewGroup parent) {
         ViewGroup layout = null;
@@ -995,8 +1138,10 @@
         ViewGroup contentPreviewLayout = (ViewGroup) layoutInflater.inflate(
                 R.layout.chooser_grid_preview_text, parent, false);
 
-        contentPreviewLayout.findViewById(R.id.copy_button).setOnClickListener(
-                this::onCopyButtonClicked);
+        final ViewGroup actionRow =
+                (ViewGroup) contentPreviewLayout.findViewById(R.id.chooser_action_row);
+        addActionButton(actionRow, createCopyButton());
+        addActionButton(actionRow, createNearbyButton(targetIntent));
 
         CharSequence sharingText = targetIntent.getCharSequenceExtra(Intent.EXTRA_TEXT);
         if (sharingText == null) {
@@ -1154,7 +1299,8 @@
 
         // TODO(b/120417119): Disable file copy until after moving to sysui,
         // due to permissions issues
-        contentPreviewLayout.findViewById(R.id.file_copy_button).setVisibility(View.GONE);
+        //((ViewGroup) contentPreviewLayout.findViewById(R.id.chooser_action_row))
+        //        .addView(createCopyButton());
 
         String action = targetIntent.getAction();
         if (Intent.ACTION_SEND.equals(action)) {
@@ -1680,7 +1826,7 @@
             }
             return intentFilter;
         } catch (Exception e) {
-            Log.e(TAG, "failed to get target intent filter " + e);
+            Log.e(TAG, "failed to get target intent filter", e);
             return null;
         }
     }
@@ -2278,17 +2424,21 @@
 
                 // still zero? then use a default height and leave, which
                 // can happen when there are no targets to show
-                if (rowsToShow == 0 && !shouldShowContentPreview()) {
+                if (rowsToShow == 0 && !shouldShowStickyContentPreview()) {
                     offset += getResources().getDimensionPixelSize(
                             R.dimen.chooser_max_collapsed_height);
                     mResolverDrawerLayout.setCollapsibleHeightReserved(offset);
                     return;
                 }
 
-                if (shouldShowContentPreview()) {
+                if (shouldShowStickyContentPreview()) {
                     offset += findViewById(R.id.content_preview_container).getHeight();
                 }
 
+                if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+                    offset += findViewById(R.id.tabs).getHeight();
+                }
+
                 int directShareHeight = 0;
                 rowsToShow = Math.min(4, rowsToShow);
                 for (int i = 0, childCount = recyclerView.getChildCount();
@@ -2337,10 +2487,10 @@
     }
 
     @Override // ResolverListCommunicator
-    public void onHandlePackagesChanged() {
+    public void onHandlePackagesChanged(ResolverListAdapter listAdapter) {
         mServicesRequested.clear();
         mChooserMultiProfilePagerAdapter.getActiveListAdapter().notifyDataSetChanged();
-        super.onHandlePackagesChanged();
+        super.onHandlePackagesChanged(listAdapter);
     }
 
     @Override // SelectableTargetInfoCommunicator
@@ -2413,7 +2563,7 @@
     }
 
     private void setupScrollListener() {
-        if (mResolverDrawerLayout == null) {
+        if (mResolverDrawerLayout == null || (hasWorkProfile() && ENABLE_TABBED_VIEW)) {
             return;
         }
         final View chooserHeader = mResolverDrawerLayout.findViewById(R.id.chooser_header);
@@ -2458,28 +2608,36 @@
         return false;
     }
 
-    private boolean shouldShowContentPreview() {
-        return mMultiProfilePagerAdapter.getActiveListAdapter().getCount() > 0
-                && isSendAction(getTargetIntent());
+    /**
+     * The sticky content preview is shown only when we have a tabbed view. It's shown above
+     * the tabs so it is not part of the scrollable list. If we are not in tabbed view,
+     * we instead show the content preview as a regular list item.
+     */
+    private boolean shouldShowStickyContentPreview() {
+        return hasWorkProfile()
+                && ENABLE_TABBED_VIEW
+                && mMultiProfilePagerAdapter.getListAdapterForUserHandle(
+                        UserHandle.of(UserHandle.myUserId())).getCount() > 0
+                && isSendAction(getTargetIntent())
+                && getResources().getBoolean(R.bool.sharesheet_show_content_preview);
     }
 
-    private void updateContentPreview() {
-        if (shouldShowContentPreview()) {
-            showContentPreview();
+    private void updateStickyContentPreview() {
+        if (shouldShowStickyContentPreview()) {
+            showStickyContentPreview();
         } else {
-            hideContentPreview();
+            hideStickyContentPreview();
         }
     }
 
-    private void showContentPreview() {
+    private void showStickyContentPreview() {
         ViewGroup contentPreviewContainer = findViewById(R.id.content_preview_container);
         contentPreviewContainer.setVisibility(View.VISIBLE);
         ViewGroup contentPreviewView = createContentPreviewView(contentPreviewContainer);
         contentPreviewContainer.addView(contentPreviewView);
-        logActionShareWithPreview();
     }
 
-    private void hideContentPreview() {
+    private void hideStickyContentPreview() {
         ViewGroup contentPreviewContainer = findViewById(R.id.content_preview_container);
         contentPreviewContainer.removeAllViews();
         contentPreviewContainer.setVisibility(View.GONE);
@@ -2495,6 +2653,7 @@
     /**
      * Used to bind types of individual item including
      * {@link ChooserGridAdapter#VIEW_TYPE_NORMAL},
+     * {@link ChooserGridAdapter#VIEW_TYPE_CONTENT_PREVIEW},
      * {@link ChooserGridAdapter#VIEW_TYPE_PROFILE},
      * and {@link ChooserGridAdapter#VIEW_TYPE_AZ_LABEL}.
      */
@@ -2556,16 +2715,18 @@
         private int mChooserTargetWidth = 0;
         private boolean mShowAzLabelIfPoss;
 
+        private boolean mHideContentPreview = false;
         private boolean mLayoutRequested = false;
 
         private int mFooterHeight = 0;
 
         private static final int VIEW_TYPE_DIRECT_SHARE = 0;
         private static final int VIEW_TYPE_NORMAL = 1;
-        private static final int VIEW_TYPE_PROFILE = 2;
-        private static final int VIEW_TYPE_AZ_LABEL = 3;
-        private static final int VIEW_TYPE_CALLER_AND_RANK = 4;
-        private static final int VIEW_TYPE_FOOTER = 5;
+        private static final int VIEW_TYPE_CONTENT_PREVIEW = 2;
+        private static final int VIEW_TYPE_PROFILE = 3;
+        private static final int VIEW_TYPE_AZ_LABEL = 4;
+        private static final int VIEW_TYPE_CALLER_AND_RANK = 5;
+        private static final int VIEW_TYPE_FOOTER = 6;
 
         private static final int MAX_TARGETS_PER_ROW_PORTRAIT = 4;
         private static final int MAX_TARGETS_PER_ROW_LANDSCAPE = 8;
@@ -2626,6 +2787,17 @@
             return maxTargets;
         }
 
+        /**
+         * Hides the list item content preview.
+         * <p>Not to be confused with the sticky content preview which is above the
+         * personal and work tabs.
+         */
+        public void hideContentPreview() {
+            mHideContentPreview = true;
+            mLayoutRequested = true;
+            notifyDataSetChanged();
+        }
+
         public boolean consumeLayoutRequest() {
             boolean oldValue = mLayoutRequested;
             mLayoutRequested = false;
@@ -2634,7 +2806,8 @@
 
         public int getRowCount() {
             return (int) (
-                    getProfileRowCount()
+                    getContentPreviewRowCount()
+                            + getProfileRowCount()
                             + getServiceTargetRowCount()
                             + getCallerAndRankedTargetRowCount()
                             + getAzLabelRowCount()
@@ -2644,7 +2817,33 @@
             );
         }
 
+        /**
+         * Returns either {@code 0} or {@code 1} depending on whether we want to show the list item
+         * content preview. Not to be confused with the sticky content preview which is above the
+         * personal and work tabs.
+         */
+        public int getContentPreviewRowCount() {
+            // For the tabbed case we show the sticky content preview above the tabs,
+            // please refer to shouldShowStickyContentPreview
+            if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+                return 0;
+            }
+            if (!isSendAction(getTargetIntent())) {
+                return 0;
+            }
+
+            if (mHideContentPreview || mChooserListAdapter == null
+                    || mChooserListAdapter.getCount() == 0) {
+                return 0;
+            }
+
+            return 1;
+        }
+
         public int getProfileRowCount() {
+            if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+                return 0;
+            }
             return mChooserListAdapter.getOtherProfile() == null ? 0 : 1;
         }
 
@@ -2676,7 +2875,8 @@
         @Override
         public int getItemCount() {
             return (int) (
-                    getProfileRowCount()
+                    getContentPreviewRowCount()
+                            + getProfileRowCount()
                             + getServiceTargetRowCount()
                             + getCallerAndRankedTargetRowCount()
                             + getAzLabelRowCount()
@@ -2688,6 +2888,8 @@
         @Override
         public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
             switch (viewType) {
+                case VIEW_TYPE_CONTENT_PREVIEW:
+                    return new ItemViewHolder(createContentPreviewView(parent), false);
                 case VIEW_TYPE_PROFILE:
                     return new ItemViewHolder(createProfileView(parent), false);
                 case VIEW_TYPE_AZ_LABEL:
@@ -2727,7 +2929,10 @@
         public int getItemViewType(int position) {
             int count;
 
-            int countSum = (count = getProfileRowCount());
+            int countSum = (count = getContentPreviewRowCount());
+            if (count > 0 && position < countSum) return VIEW_TYPE_CONTENT_PREVIEW;
+
+            countSum += (count = getProfileRowCount());
             if (count > 0 && position < countSum) return VIEW_TYPE_PROFILE;
 
             countSum += (count = getServiceTargetRowCount());
@@ -2943,7 +3148,7 @@
         }
 
         int getListPosition(int position) {
-            position -= getProfileRowCount();
+            position -= getContentPreviewRowCount() + getProfileRowCount();
 
             final int serviceCount = mChooserListAdapter.getServiceTargetCount();
             final int serviceRows = (int) Math.ceil((float) serviceCount
diff --git a/core/java/com/android/internal/app/ChooserListAdapter.java b/core/java/com/android/internal/app/ChooserListAdapter.java
index ca3b7e7..74ae291 100644
--- a/core/java/com/android/internal/app/ChooserListAdapter.java
+++ b/core/java/com/android/internal/app/ChooserListAdapter.java
@@ -19,7 +19,6 @@
 import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_PREDICTION_SERVICE;
 import static com.android.internal.app.ChooserActivity.TARGET_TYPE_SHORTCUTS_FROM_SHORTCUT_MANAGER;
 
-import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.prediction.AppPredictor;
 import android.content.ComponentName;
@@ -176,7 +175,7 @@
             Log.d(TAG, "clearing queryTargets on package change");
         }
         createPlaceHolders();
-        mChooserListCommunicator.onHandlePackagesChanged();
+        mChooserListCommunicator.onHandlePackagesChanged(this);
 
     }
 
@@ -541,7 +540,7 @@
     @Override
     AsyncTask<List<ResolvedComponentInfo>,
                 Void,
-                List<ResolvedComponentInfo>> createSortingTask() {
+                List<ResolvedComponentInfo>> createSortingTask(boolean doPostProcessing) {
         return new AsyncTask<List<ResolvedComponentInfo>,
                 Void,
                 List<ResolvedComponentInfo>>() {
@@ -554,9 +553,11 @@
             }
             @Override
             protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) {
-                processSortedList(sortedComponents);
-                mChooserListCommunicator.updateProfileViewButton();
-                notifyDataSetChanged();
+                processSortedList(sortedComponents, doPostProcessing);
+                if (doPostProcessing) {
+                    mChooserListCommunicator.updateProfileViewButton();
+                    notifyDataSetChanged();
+                }
             }
         };
     }
diff --git a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java
index 663e025..e350142 100644
--- a/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/ChooserMultiProfilePagerAdapter.java
@@ -38,8 +38,10 @@
     private final ChooserProfileDescriptor[] mItems;
 
     ChooserMultiProfilePagerAdapter(Context context,
-            ChooserActivity.ChooserGridAdapter adapter) {
-        super(context, /* currentPage */ 0);
+            ChooserActivity.ChooserGridAdapter adapter,
+            UserHandle personalProfileUserHandle,
+            UserHandle workProfileUserHandle) {
+        super(context, /* currentPage */ 0, personalProfileUserHandle, workProfileUserHandle);
         mItems = new ChooserProfileDescriptor[] {
                 createProfileDescriptor(adapter)
         };
@@ -48,8 +50,11 @@
     ChooserMultiProfilePagerAdapter(Context context,
             ChooserActivity.ChooserGridAdapter personalAdapter,
             ChooserActivity.ChooserGridAdapter workAdapter,
-            @Profile int defaultProfile) {
-        super(context, /* currentPage */ defaultProfile);
+            @Profile int defaultProfile,
+            UserHandle personalProfileUserHandle,
+            UserHandle workProfileUserHandle) {
+        super(context, /* currentPage */ defaultProfile, personalProfileUserHandle,
+                workProfileUserHandle);
         mItems = new ChooserProfileDescriptor[] {
                 createProfileDescriptor(personalAdapter),
                 createProfileDescriptor(workAdapter)
@@ -131,6 +136,17 @@
     }
 
     @Override
+    public ResolverListAdapter getPersonalListAdapter() {
+        return getAdapterForIndex(PROFILE_PERSONAL).getListAdapter();
+    }
+
+    @Override
+    @Nullable
+    public ResolverListAdapter getWorkListAdapter() {
+        return getAdapterForIndex(PROFILE_WORK).getListAdapter();
+    }
+
+    @Override
     ChooserActivity.ChooserGridAdapter getCurrentRootAdapter() {
         return getAdapterForIndex(getCurrentPage());
     }
diff --git a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
index f3b6d29..417e23f 100644
--- a/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
+++ b/core/java/com/android/internal/app/IVoiceInteractionManagerService.aidl
@@ -38,8 +38,10 @@
             IVoiceInteractor interactor);
     boolean showSessionFromSession(IBinder token, in Bundle sessionArgs, int flags);
     boolean hideSessionFromSession(IBinder token);
-    int startVoiceActivity(IBinder token, in Intent intent, String resolvedType);
-    int startAssistantActivity(IBinder token, in Intent intent, String resolvedType);
+    int startVoiceActivity(IBinder token, in Intent intent, String resolvedType,
+            String callingFeatureId);
+    int startAssistantActivity(IBinder token, in Intent intent, String resolvedType,
+            String callingFeatureId);
     void setKeepAwake(IBinder token, boolean keepAwake);
     void closeSystemDialogs(IBinder token);
     void finish(IBinder token);
diff --git a/core/java/com/android/internal/app/IntentForwarderActivity.java b/core/java/com/android/internal/app/IntentForwarderActivity.java
index 9488e4f..7a0afa2 100644
--- a/core/java/com/android/internal/app/IntentForwarderActivity.java
+++ b/core/java/com/android/internal/app/IntentForwarderActivity.java
@@ -26,6 +26,7 @@
 import android.app.AppGlobals;
 import android.app.admin.DevicePolicyManager;
 import android.compat.annotation.UnsupportedAppUsage;
+import android.content.ContentResolver;
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.IPackageManager;
@@ -108,7 +109,8 @@
         }
 
         final int callingUserId = getUserId();
-        final Intent newIntent = canForward(intentReceived, targetUserId);
+        final Intent newIntent = canForward(intentReceived, getUserId(), targetUserId,
+                mInjector.getIPackageManager(), getContentResolver());
         if (newIntent != null) {
             if (Intent.ACTION_CHOOSER.equals(newIntent.getAction())) {
                 Intent innerIntent = newIntent.getParcelableExtra(Intent.EXTRA_INTENT);
@@ -191,7 +193,8 @@
      * Check whether the intent can be forwarded to target user. Return the intent used for
      * forwarding if it can be forwarded, {@code null} otherwise.
      */
-    Intent canForward(Intent incomingIntent, int targetUserId)  {
+    static Intent canForward(Intent incomingIntent, int sourceUserId, int targetUserId,
+            IPackageManager packageManager, ContentResolver contentResolver)  {
         Intent forwardIntent = new Intent(incomingIntent);
         forwardIntent.addFlags(
                 Intent.FLAG_ACTIVITY_FORWARD_RESULT | Intent.FLAG_ACTIVITY_PREVIOUS_IS_TOP);
@@ -220,11 +223,11 @@
         if (forwardIntent.getSelector() != null) {
             intentToCheck = forwardIntent.getSelector();
         }
-        String resolvedType = intentToCheck.resolveTypeIfNeeded(getContentResolver());
+        String resolvedType = intentToCheck.resolveTypeIfNeeded(contentResolver);
         sanitizeIntent(intentToCheck);
         try {
-            if (mInjector.getIPackageManager().
-                    canForwardTo(intentToCheck, resolvedType, getUserId(), targetUserId)) {
+            if (packageManager.canForwardTo(
+                    intentToCheck, resolvedType, sourceUserId, targetUserId)) {
                 return forwardIntent;
             }
         } catch (RemoteException e) {
@@ -267,7 +270,7 @@
     /**
      * Sanitize the intent in place.
      */
-    private void sanitizeIntent(Intent intent) {
+    private static void sanitizeIntent(Intent intent) {
         // Apps should not be allowed to target a specific package/ component in the target user.
         intent.setPackage(null);
         intent.setComponent(null);
diff --git a/core/java/com/android/internal/app/NetInitiatedActivity.java b/core/java/com/android/internal/app/NetInitiatedActivity.java
index 89aa770..92e9fe4 100644
--- a/core/java/com/android/internal/app/NetInitiatedActivity.java
+++ b/core/java/com/android/internal/app/NetInitiatedActivity.java
@@ -23,7 +23,7 @@
 import android.content.DialogInterface;
 import android.content.Intent;
 import android.content.IntentFilter;
-import android.location.LocationManager;
+import android.location.LocationManagerInternal;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
@@ -32,6 +32,7 @@
 
 import com.android.internal.R;
 import com.android.internal.location.GpsNetInitiatedHandler;
+import com.android.server.LocalServices;
 
 /**
  * This activity is shown to the user for him/her to accept or deny network-initiated
@@ -68,14 +69,14 @@
     private final Handler mHandler = new Handler() {
         public void handleMessage(Message msg) {
             switch (msg.what) {
-            case GPS_NO_RESPONSE_TIME_OUT: {
-                if (notificationId != -1) {
-                    sendUserResponse(default_response);
+                case GPS_NO_RESPONSE_TIME_OUT: {
+                    if (notificationId != -1) {
+                        sendUserResponse(default_response);
+                    }
+                    finish();
                 }
-                finish();
-            }
-            break;
-            default:
+                break;
+                default:
             }
         }
     };
@@ -137,9 +138,8 @@
     // Respond to NI Handler under GnssLocationProvider, 1 = accept, 2 = deny
     private void sendUserResponse(int response) {
         if (DEBUG) Log.d(TAG, "sendUserResponse, response: " + response);
-        LocationManager locationManager = (LocationManager)
-            this.getSystemService(Context.LOCATION_SERVICE);
-        locationManager.sendNiResponse(notificationId, response);
+        LocationManagerInternal lm = LocalServices.getService(LocationManagerInternal.class);
+        lm.sendNiResponse(notificationId, response);
     }
 
     @UnsupportedAppUsage
diff --git a/core/java/com/android/internal/app/ResolverActivity.java b/core/java/com/android/internal/app/ResolverActivity.java
index 30a41d3..c2c9fff 100644
--- a/core/java/com/android/internal/app/ResolverActivity.java
+++ b/core/java/com/android/internal/app/ResolverActivity.java
@@ -16,7 +16,9 @@
 
 package com.android.internal.app;
 
+import static android.Manifest.permission.INTERACT_ACROSS_PROFILES;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_TASK;
+import static android.content.PermissionChecker.PID_UNKNOWN;
 
 import static com.android.internal.app.AbstractMultiProfilePagerAdapter.PROFILE_PERSONAL;
 import static com.android.internal.app.AbstractMultiProfilePagerAdapter.PROFILE_WORK;
@@ -36,6 +38,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.content.PermissionChecker;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
@@ -157,7 +160,8 @@
     private static final String TAB_TAG_PERSONAL = "personal";
     private static final String TAB_TAG_WORK = "work";
 
-    private final PackageMonitor mPackageMonitor = createPackageMonitor();
+    private PackageMonitor mPersonalPackageMonitor;
+    private PackageMonitor mWorkPackageMonitor;
 
     @VisibleForTesting
     protected AbstractMultiProfilePagerAdapter mMultiProfilePagerAdapter;
@@ -243,11 +247,11 @@
         }
     }
 
-    protected PackageMonitor createPackageMonitor() {
+    protected PackageMonitor createPackageMonitor(ResolverListAdapter listAdapter) {
         return new PackageMonitor() {
             @Override
             public void onSomePackagesChanged() {
-                mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
+                listAdapter.handlePackagesChanged();
                 updateProfileViewButton();
             }
 
@@ -327,8 +331,6 @@
 
         mPm = getPackageManager();
 
-        mPackageMonitor.register(this, getMainLooper(), false);
-        mRegistered = true;
         mReferrerPackage = getReferrerPackageName();
 
         // Add our initial intent as the first item, regardless of what else has already been added.
@@ -353,6 +355,18 @@
             return;
         }
 
+        mPersonalPackageMonitor = createPackageMonitor(
+                mMultiProfilePagerAdapter.getPersonalListAdapter());
+        mPersonalPackageMonitor.register(
+                this, getMainLooper(), getPersonalProfileUserHandle(), false);
+        if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+            mWorkPackageMonitor = createPackageMonitor(
+                    mMultiProfilePagerAdapter.getWorkListAdapter());
+            mWorkPackageMonitor.register(this, getMainLooper(), getWorkProfileUserHandle(), false);
+        }
+
+        mRegistered = true;
+
         final ResolverDrawerLayout rdl = findViewById(R.id.contentPanel);
         if (rdl != null) {
             rdl.setOnDismissedListener(new ResolverDrawerLayout.OnDismissedListener() {
@@ -373,6 +387,11 @@
                     | View.SYSTEM_UI_FLAG_LAYOUT_STABLE);
             rdl.setOnApplyWindowInsetsListener(this::onApplyWindowInsets);
 
+            rdl.setMaxCollapsedHeight(hasWorkProfile() && ENABLE_TABBED_VIEW
+                    ? getResources().getDimensionPixelSize(
+                            R.dimen.resolver_empty_state_height_with_tabs)
+                    : getResources().getDimensionPixelSize(R.dimen.resolver_empty_state_height));
+
             mResolverDrawerLayout = rdl;
         }
 
@@ -419,7 +438,9 @@
                 /* userHandle */ UserHandle.of(UserHandle.myUserId()));
         return new ResolverMultiProfilePagerAdapter(
                 /* context */ this,
-                adapter);
+                adapter,
+                getPersonalProfileUserHandle(),
+                /* workProfileUserHandle= */ null);
     }
 
     private ResolverMultiProfilePagerAdapter createResolverMultiProfilePagerAdapterForTwoProfiles(
@@ -438,20 +459,23 @@
                         == getPersonalProfileUserHandle().getIdentifier()),
                 mUseLayoutForBrowsables,
                 /* userHandle */ getPersonalProfileUserHandle());
+        UserHandle workProfileUserHandle = getWorkProfileUserHandle();
         ResolverListAdapter workAdapter = createResolverListAdapter(
                 /* context */ this,
                 /* payloadIntents */ mIntents,
                 initialIntents,
                 rList,
                 (filterLastUsed && UserHandle.myUserId()
-                        == getWorkProfileUserHandle().getIdentifier()),
+                        == workProfileUserHandle.getIdentifier()),
                 mUseLayoutForBrowsables,
-                /* userHandle */ getWorkProfileUserHandle());
+                /* userHandle */ workProfileUserHandle);
         return new ResolverMultiProfilePagerAdapter(
                 /* context */ this,
                 personalAdapter,
                 workAdapter,
-                /* defaultProfile */ getCurrentProfile());
+                /* defaultProfile */ getCurrentProfile(),
+                getPersonalProfileUserHandle(),
+                getWorkProfileUserHandle());
     }
 
     protected @Profile int getCurrentProfile() {
@@ -529,13 +553,6 @@
             applyFooterView(mSystemWindowInsets.bottom);
         }
 
-        View emptyView = findViewById(R.id.empty);
-        if (emptyView != null) {
-            emptyView.setPadding(0, 0, 0, mSystemWindowInsets.bottom
-                                 + getResources().getDimensionPixelSize(
-                                         R.dimen.chooser_edge_margin_normal) * 2);
-        }
-
         return insets.consumeSystemWindowInsets();
     }
 
@@ -543,9 +560,6 @@
     public void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
         mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
-        if (mMultiProfilePagerAdapter.getInactiveListAdapter() != null) {
-            mMultiProfilePagerAdapter.getInactiveListAdapter().handlePackagesChanged();
-        }
 
         if (mSystemWindowInsets != null) {
             mResolverDrawerLayout.setPadding(mSystemWindowInsets.left, mSystemWindowInsets.top,
@@ -707,7 +721,16 @@
     protected void onRestart() {
         super.onRestart();
         if (!mRegistered) {
-            mPackageMonitor.register(this, getMainLooper(), false);
+            mPersonalPackageMonitor.register(this, getMainLooper(),
+                    getPersonalProfileUserHandle(), false);
+            if (hasWorkProfile() && ENABLE_TABBED_VIEW) {
+                if (mWorkPackageMonitor == null) {
+                    mWorkPackageMonitor = createPackageMonitor(
+                            mMultiProfilePagerAdapter.getWorkListAdapter());
+                }
+                mWorkPackageMonitor.register(this, getMainLooper(),
+                        getWorkProfileUserHandle(), false);
+            }
             mRegistered = true;
         }
         mMultiProfilePagerAdapter.getActiveListAdapter().handlePackagesChanged();
@@ -718,7 +741,10 @@
     protected void onStop() {
         super.onStop();
         if (mRegistered) {
-            mPackageMonitor.unregister();
+            mPersonalPackageMonitor.unregister();
+            if (mWorkPackageMonitor != null) {
+                mWorkPackageMonitor.unregister();
+            }
             mRegistered = false;
         }
         final Intent intent = getIntent();
@@ -913,26 +939,24 @@
     }
 
     @Override // ResolverListCommunicator
-    public void onPostListReady(ResolverListAdapter listAdapter) {
-        if (mMultiProfilePagerAdapter.getCurrentUserHandle().getIdentifier()
-                == UserHandle.myUserId()) {
-            setHeader();
+    public final void onPostListReady(ResolverListAdapter listAdapter, boolean doPostProcessing) {
+        if (isAutolaunching() || maybeAutolaunchActivity()) {
+            return;
         }
-        resetButtonBar();
-        onListRebuilt(listAdapter);
+        if (shouldShowEmptyState(listAdapter)) {
+            mMultiProfilePagerAdapter.showEmptyState(listAdapter);
+        }
+        if (doPostProcessing) {
+            if (mMultiProfilePagerAdapter.getCurrentUserHandle().getIdentifier()
+                    == UserHandle.myUserId()) {
+                setHeader();
+            }
+            resetButtonBar();
+            onListRebuilt(listAdapter);
+        }
     }
 
     protected void onListRebuilt(ResolverListAdapter listAdapter) {
-        int count = listAdapter.getUnfilteredCount();
-        if (count == 1 && listAdapter.getOtherProfile() == null) {
-            // Only one target, so we're a candidate to auto-launch!
-            final TargetInfo target = listAdapter.targetInfoForPosition(0, false);
-            if (shouldAutoLaunchSingleChoice(target)) {
-                safelyStartActivity(target);
-                finish();
-            }
-        }
-
         final ItemClickListener listener = new ItemClickListener();
         setupAdapterListView((ListView) mMultiProfilePagerAdapter.getActiveAdapterView(), listener);
     }
@@ -1132,6 +1156,13 @@
     }
 
     private void safelyStartActivityInternal(TargetInfo cti) {
+        if (mPersonalPackageMonitor != null) {
+            mPersonalPackageMonitor.unregister();
+        }
+        if (mWorkPackageMonitor != null) {
+            mWorkPackageMonitor.unregister();
+        }
+        mRegistered = false;
         // If needed, show that intent is forwarded
         // from managed profile to owner or other way around.
         if (mProfileSwitchMessageId != -1) {
@@ -1247,7 +1278,10 @@
             throw new IllegalStateException("mMultiProfilePagerAdapter.getCurrentListAdapter() "
                     + "cannot be null.");
         }
-        boolean rebuildCompleted = mMultiProfilePagerAdapter.getActiveListAdapter().rebuildList();
+        // We partially rebuild the inactive adapter to determine if we should auto launch
+        boolean rebuildActiveCompleted = mMultiProfilePagerAdapter.rebuildActiveTab(true);
+        boolean rebuildInactiveCompleted = mMultiProfilePagerAdapter.rebuildInactiveTab(false);
+
         if (useLayoutWithDefault()) {
             mLayoutId = R.layout.resolver_list_with_default;
         } else {
@@ -1255,7 +1289,7 @@
         }
         setContentView(mLayoutId);
         mMultiProfilePagerAdapter.setupViewPager(findViewById(R.id.profile_pager));
-        return postRebuildList(rebuildCompleted);
+        return postRebuildList(rebuildActiveCompleted && rebuildInactiveCompleted);
     }
 
     /**
@@ -1274,25 +1308,12 @@
      * @return <code>true</code> if the activity is finishing and creation should halt.
      */
     final boolean postRebuildListInternal(boolean rebuildCompleted) {
-
         int count = mMultiProfilePagerAdapter.getActiveListAdapter().getUnfilteredCount();
 
         // We only rebuild asynchronously when we have multiple elements to sort. In the case where
         // we're already done, we can check if we should auto-launch immediately.
-        if (rebuildCompleted) {
-            if (count == 1
-                    && mMultiProfilePagerAdapter.getActiveListAdapter().getOtherProfile() == null) {
-                // Only one target, so we're a candidate to auto-launch!
-                final TargetInfo target = mMultiProfilePagerAdapter.getActiveListAdapter()
-                        .targetInfoForPosition(0, false);
-                if (shouldAutoLaunchSingleChoice(target)) {
-                    safelyStartActivity(target);
-                    mPackageMonitor.unregister();
-                    mRegistered = false;
-                    finish();
-                    return true;
-                }
-            }
+        if (rebuildCompleted && maybeAutolaunchActivity()) {
+            return true;
         }
 
         setupViewVisibilities();
@@ -1304,6 +1325,147 @@
         return false;
     }
 
+    private int isPermissionGranted(String permission, int uid) {
+        return ActivityManager.checkComponentPermission(permission, uid,
+                /* owningUid= */-1, /* exported= */ true);
+    }
+
+    /**
+     * @return {@code true} if a resolved target is autolaunched, otherwise {@code false}
+     */
+    private boolean maybeAutolaunchActivity() {
+        int numberOfProfiles = mMultiProfilePagerAdapter.getItemCount();
+        if (numberOfProfiles == 1 && maybeAutolaunchIfSingleTarget()) {
+            return true;
+        } else if (numberOfProfiles == 2
+                && mMultiProfilePagerAdapter.getActiveListAdapter().isListLoaded()
+                && mMultiProfilePagerAdapter.getInactiveListAdapter().isListLoaded()
+                && (maybeAutolaunchIfNoAppsOnInactiveTab()
+                        || maybeAutolaunchIfCrossProfileSupported())) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean maybeAutolaunchIfSingleTarget() {
+        int count = mMultiProfilePagerAdapter.getActiveListAdapter().getUnfilteredCount();
+        if (count != 1) {
+            return false;
+        }
+
+        // Only one target, so we're a candidate to auto-launch!
+        final TargetInfo target = mMultiProfilePagerAdapter.getActiveListAdapter()
+                .targetInfoForPosition(0, false);
+        if (shouldAutoLaunchSingleChoice(target)) {
+            safelyStartActivity(target);
+            finish();
+            return true;
+        }
+        return false;
+    }
+
+    private boolean maybeAutolaunchIfNoAppsOnInactiveTab() {
+        int count = mMultiProfilePagerAdapter.getActiveListAdapter().getUnfilteredCount();
+        if (count != 1) {
+            return false;
+        }
+        ResolverListAdapter inactiveListAdapter =
+                mMultiProfilePagerAdapter.getInactiveListAdapter();
+        if (inactiveListAdapter.getUnfilteredCount() != 0) {
+            return false;
+        }
+        TargetInfo target = mMultiProfilePagerAdapter.getActiveListAdapter()
+                .targetInfoForPosition(0, false);
+        safelyStartActivity(target);
+        finish();
+        return true;
+    }
+
+    /**
+     * When we have a personal and a work profile, we auto launch in the following scenario:
+     * - There is 1 resolved target on each profile
+     * - That target is the same app on both profiles
+     * - The target app has permission to communicate cross profiles
+     * - The target app has declared it supports cross-profile communication via manifest metadata
+     */
+    private boolean maybeAutolaunchIfCrossProfileSupported() {
+        int count = mMultiProfilePagerAdapter.getActiveListAdapter().getUnfilteredCount();
+        if (count != 1) {
+            return false;
+        }
+        ResolverListAdapter inactiveListAdapter =
+                mMultiProfilePagerAdapter.getInactiveListAdapter();
+        if (inactiveListAdapter.getUnfilteredCount() != 1) {
+            return false;
+        }
+        TargetInfo activeProfileTarget = mMultiProfilePagerAdapter.getActiveListAdapter()
+                .targetInfoForPosition(0, false);
+        TargetInfo inactiveProfileTarget = inactiveListAdapter.targetInfoForPosition(0, false);
+        if (!Objects.equals(activeProfileTarget.getResolvedComponentName(),
+                inactiveProfileTarget.getResolvedComponentName())) {
+            return false;
+        }
+        if (!shouldAutoLaunchSingleChoice(activeProfileTarget)) {
+            return false;
+        }
+        String packageName = activeProfileTarget.getResolvedComponentName().getPackageName();
+        if (!canAppInteractCrossProfiles(packageName)) {
+            return false;
+        }
+
+        safelyStartActivity(activeProfileTarget);
+        finish();
+        return true;
+    }
+
+    /**
+     * Returns whether the package has the necessary permissions to interact across profiles on
+     * behalf of a given user.
+     *
+     * <p>This means meeting the following condition:
+     * <ul>
+     *     <li>The app's {@link ApplicationInfo#crossProfile} flag must be true, and at least
+     *     one of the following conditions must be fulfilled</li>
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS_FULL} granted.</li>
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_USERS} granted.</li>
+     *     <li>{@code Manifest.permission.INTERACT_ACROSS_PROFILES} granted, or the corresponding
+     *     AppOps {@code android:interact_across_profiles} is set to "allow".</li>
+     * </ul>
+     *
+     */
+    private boolean canAppInteractCrossProfiles(String packageName) {
+        ApplicationInfo applicationInfo;
+        try {
+            applicationInfo = getPackageManager().getApplicationInfo(packageName, 0);
+        } catch (NameNotFoundException e) {
+            Log.e(TAG, "Package " + packageName + " does not exist on current user.");
+            return false;
+        }
+        if (!applicationInfo.crossProfile) {
+            return false;
+        }
+
+        int packageUid = applicationInfo.uid;
+
+        if (isPermissionGranted(android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
+                packageUid) == PackageManager.PERMISSION_GRANTED) {
+            return true;
+        }
+        if (isPermissionGranted(android.Manifest.permission.INTERACT_ACROSS_USERS, packageUid)
+                == PackageManager.PERMISSION_GRANTED) {
+            return true;
+        }
+        if (PermissionChecker.checkPermissionForPreflight(this, INTERACT_ACROSS_PROFILES,
+                PID_UNKNOWN, packageUid, packageName) == PackageManager.PERMISSION_GRANTED) {
+            return true;
+        }
+        return false;
+    }
+
+    private boolean isAutolaunching() {
+        return !mRegistered && isFinishing();
+    }
+
     private void setupProfileTabs() {
         TabHost tabHost = findViewById(R.id.profile_tabhost);
         tabHost.setup();
@@ -1343,7 +1505,6 @@
         for (int i = 0; i < tabWidget.getChildCount(); i++) {
             TextView title = tabWidget.getChildAt(i).findViewById(android.R.id.title);
             title.setTextColor(getColor(R.color.resolver_tabs_inactive_color));
-            title.setAllCaps(false);
         }
     }
 
@@ -1354,15 +1515,17 @@
     }
 
     private void setupViewVisibilities() {
-        int count = mMultiProfilePagerAdapter.getActiveListAdapter().getUnfilteredCount();
-        boolean shouldShowEmptyState = count == 0
-                && mMultiProfilePagerAdapter.getActiveListAdapter().getPlaceholderCount() == 0;
-        //TODO(arangelov): Handle empty state
-        if (!shouldShowEmptyState) {
-            addUseDifferentAppLabelIfNecessary(mMultiProfilePagerAdapter.getActiveListAdapter());
+        ResolverListAdapter activeListAdapter = mMultiProfilePagerAdapter.getActiveListAdapter();
+        if (!shouldShowEmptyState(activeListAdapter)) {
+            addUseDifferentAppLabelIfNecessary(activeListAdapter);
         }
     }
 
+    private boolean shouldShowEmptyState(ResolverListAdapter listAdapter) {
+        int count = listAdapter.getUnfilteredCount();
+        return count == 0 && listAdapter.getPlaceholderCount() == 0;
+    }
+
     /**
      * Add a label to signify that the user can pick a different app.
      * @param adapter The adapter used to provide data to item views.
@@ -1499,12 +1662,20 @@
     }
 
     @Override // ResolverListCommunicator
-    public void onHandlePackagesChanged() {
-        ResolverListAdapter activeListAdapter = mMultiProfilePagerAdapter.getActiveListAdapter();
-        activeListAdapter.rebuildList();
-        if (activeListAdapter.getCount() == 0) {
-            // We no longer have any items...  just finish the activity.
-            finish();
+    public void onHandlePackagesChanged(ResolverListAdapter listAdapter) {
+        if (listAdapter == mMultiProfilePagerAdapter.getActiveListAdapter()) {
+            boolean listRebuilt = mMultiProfilePagerAdapter.rebuildActiveTab(true);
+            if (listRebuilt) {
+                ResolverListAdapter activeListAdapter =
+                        mMultiProfilePagerAdapter.getActiveListAdapter();
+                activeListAdapter.notifyDataSetChanged();
+                if (activeListAdapter.getCount() == 0) {
+                    // We no longer have any items...  just finish the activity.
+                    finish();
+                }
+            }
+        } else {
+            mMultiProfilePagerAdapter.clearInactiveProfileCache();
         }
     }
 
diff --git a/core/java/com/android/internal/app/ResolverListAdapter.java b/core/java/com/android/internal/app/ResolverListAdapter.java
index 405112d..54453d0 100644
--- a/core/java/com/android/internal/app/ResolverListAdapter.java
+++ b/core/java/com/android/internal/app/ResolverListAdapter.java
@@ -87,6 +87,7 @@
     private final ResolverListCommunicator mResolverListCommunicator;
     private Runnable mPostListReadyRunnable;
     private final boolean mIsAudioCaptureDevice;
+    private boolean mIsListLoaded;
 
     public ResolverListAdapter(Context context, List<Intent> payloadIntents,
             Intent[] initialIntents, List<ResolveInfo> rList,
@@ -113,7 +114,7 @@
     }
 
     public void handlePackagesChanged() {
-        mResolverListCommunicator.onHandlePackagesChanged();
+        mResolverListCommunicator.onHandlePackagesChanged(this);
     }
 
     public void setPlaceholderCount(int count) {
@@ -176,9 +177,14 @@
      * Rebuild the list of resolvers. In some cases some parts will need some asynchronous work
      * to complete.
      *
+     * The {@code doPostProcessing } parameter is used to specify whether to update the UI and
+     * load additional targets (e.g. direct share) after the list has been rebuilt. This is used
+     * in the case where we want to load the inactive profile's resolved apps to know the
+     * number of targets.
+     *
      * @return Whether or not the list building is completed.
      */
-    protected boolean rebuildList() {
+    protected boolean rebuildList(boolean doPostProcessing) {
         List<ResolvedComponentInfo> currentResolveList = null;
         // Clear the value of mOtherProfile from previous call.
         mOtherProfile = null;
@@ -186,6 +192,8 @@
         mLastChosenPosition = -1;
         mAllTargetsAreBrowsers = false;
         mDisplayList.clear();
+        mIsListLoaded = false;
+
         if (mBaseResolveList != null) {
             currentResolveList = mUnfilteredResolveList = new ArrayList<>();
             mResolverListController.addResolveListDedupe(currentResolveList,
@@ -198,7 +206,7 @@
                             mResolverListCommunicator.shouldGetActivityMetadata(),
                             mIntents);
             if (currentResolveList == null) {
-                processSortedList(currentResolveList);
+                processSortedList(currentResolveList, doPostProcessing);
                 return true;
             }
             List<ResolvedComponentInfo> originalList =
@@ -256,22 +264,22 @@
                     --placeholderCount;
                 }
                 setPlaceholderCount(placeholderCount);
-                createSortingTask().execute(currentResolveList);
-                postListReadyRunnable();
+                createSortingTask(doPostProcessing).execute(currentResolveList);
+                postListReadyRunnable(doPostProcessing);
                 return false;
             } else {
-                processSortedList(currentResolveList);
+                processSortedList(currentResolveList, doPostProcessing);
                 return true;
             }
         } else {
-            processSortedList(currentResolveList);
+            processSortedList(currentResolveList, doPostProcessing);
             return true;
         }
     }
 
     AsyncTask<List<ResolvedComponentInfo>,
             Void,
-            List<ResolvedComponentInfo>> createSortingTask() {
+            List<ResolvedComponentInfo>> createSortingTask(boolean doPostProcessing) {
         return new AsyncTask<List<ResolvedComponentInfo>,
                 Void,
                 List<ResolvedComponentInfo>>() {
@@ -283,15 +291,17 @@
             }
             @Override
             protected void onPostExecute(List<ResolvedComponentInfo> sortedComponents) {
-                processSortedList(sortedComponents);
-                mResolverListCommunicator.updateProfileViewButton();
+                processSortedList(sortedComponents, doPostProcessing);
                 notifyDataSetChanged();
+                if (doPostProcessing) {
+                    mResolverListCommunicator.updateProfileViewButton();
+                }
             }
         };
     }
 
-
-    protected void processSortedList(List<ResolvedComponentInfo> sortedComponents) {
+    protected void processSortedList(List<ResolvedComponentInfo> sortedComponents,
+            boolean doPostProcessing) {
         int n;
         if (sortedComponents != null && (n = sortedComponents.size()) != 0) {
             mAllTargetsAreBrowsers = mUseLayoutForBrowsables;
@@ -343,20 +353,24 @@
         }
 
         mResolverListCommunicator.sendVoiceChoicesIfNeeded();
-        postListReadyRunnable();
+        postListReadyRunnable(doPostProcessing);
+        mIsListLoaded = true;
     }
 
     /**
      * Some necessary methods for creating the list are initiated in onCreate and will also
      * determine the layout known. We therefore can't update the UI inline and post to the
      * handler thread to update after the current task is finished.
+     * @param doPostProcessing Whether to update the UI and load additional direct share targets
+     *                         after the list has been rebuilt
      */
-    void postListReadyRunnable() {
+    void postListReadyRunnable(boolean doPostProcessing) {
         if (mPostListReadyRunnable == null) {
             mPostListReadyRunnable = new Runnable() {
                 @Override
                 public void run() {
-                    mResolverListCommunicator.onPostListReady(ResolverListAdapter.this);
+                    mResolverListCommunicator.onPostListReady(ResolverListAdapter.this,
+                            doPostProcessing);
                     mPostListReadyRunnable = null;
                 }
             };
@@ -590,6 +604,20 @@
         return mResolverListController.getUserHandle();
     }
 
+    protected List<ResolvedComponentInfo> getResolversForUser(UserHandle userHandle) {
+        return mResolverListController.getResolversForIntentAsUser(true,
+                mResolverListCommunicator.shouldGetActivityMetadata(),
+                mIntents, userHandle);
+    }
+
+    protected List<Intent> getIntents() {
+        return mIntents;
+    }
+
+    protected boolean isListLoaded() {
+        return mIsListLoaded;
+    }
+
     /**
      * Necessary methods to communicate between {@link ResolverListAdapter}
      * and {@link ResolverActivity}.
@@ -600,7 +628,7 @@
 
         Intent getReplacementIntent(ActivityInfo activityInfo, Intent defIntent);
 
-        void onPostListReady(ResolverListAdapter listAdapter);
+        void onPostListReady(ResolverListAdapter listAdapter, boolean updateUi);
 
         void sendVoiceChoicesIfNeeded();
 
@@ -612,7 +640,7 @@
 
         Intent getTargetIntent();
 
-        void onHandlePackagesChanged();
+        void onHandlePackagesChanged(ResolverListAdapter listAdapter);
     }
 
     static class ViewHolder {
diff --git a/core/java/com/android/internal/app/ResolverListController.java b/core/java/com/android/internal/app/ResolverListController.java
index 0bfe9eb..022aded 100644
--- a/core/java/com/android/internal/app/ResolverListController.java
+++ b/core/java/com/android/internal/app/ResolverListController.java
@@ -111,6 +111,15 @@
             boolean shouldGetResolvedFilter,
             boolean shouldGetActivityMetadata,
             List<Intent> intents) {
+        return getResolversForIntentAsUser(shouldGetResolvedFilter, shouldGetActivityMetadata,
+                intents, mUserHandle);
+    }
+
+    public List<ResolverActivity.ResolvedComponentInfo> getResolversForIntentAsUser(
+            boolean shouldGetResolvedFilter,
+            boolean shouldGetActivityMetadata,
+            List<Intent> intents,
+            UserHandle userHandle) {
         List<ResolverActivity.ResolvedComponentInfo> resolvedComponents = null;
         for (int i = 0, N = intents.size(); i < N; i++) {
             final Intent intent = intents.get(i);
@@ -122,7 +131,7 @@
                 flags |= PackageManager.MATCH_INSTANT;
             }
             final List<ResolveInfo> infos = mpm.queryIntentActivitiesAsUser(intent, flags,
-                    mUserHandle);
+                    userHandle);
             if (infos != null) {
                 if (resolvedComponents == null) {
                     resolvedComponents = new ArrayList<>();
diff --git a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
index 9d3c6c9..96dc83a 100644
--- a/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
+++ b/core/java/com/android/internal/app/ResolverMultiProfilePagerAdapter.java
@@ -36,8 +36,10 @@
     private final ResolverProfileDescriptor[] mItems;
 
     ResolverMultiProfilePagerAdapter(Context context,
-            ResolverListAdapter adapter) {
-        super(context, /* currentPage */ 0);
+            ResolverListAdapter adapter,
+            UserHandle personalProfileUserHandle,
+            UserHandle workProfileUserHandle) {
+        super(context, /* currentPage */ 0, personalProfileUserHandle, workProfileUserHandle);
         mItems = new ResolverProfileDescriptor[] {
                 createProfileDescriptor(adapter)
         };
@@ -46,8 +48,11 @@
     ResolverMultiProfilePagerAdapter(Context context,
             ResolverListAdapter personalAdapter,
             ResolverListAdapter workAdapter,
-            @Profile int defaultProfile) {
-        super(context, /* currentPage */ defaultProfile);
+            @Profile int defaultProfile,
+            UserHandle personalProfileUserHandle,
+            UserHandle workProfileUserHandle) {
+        super(context, /* currentPage */ defaultProfile, personalProfileUserHandle,
+                workProfileUserHandle);
         mItems = new ResolverProfileDescriptor[] {
                 createProfileDescriptor(personalAdapter),
                 createProfileDescriptor(workAdapter)
@@ -116,6 +121,17 @@
     }
 
     @Override
+    public ResolverListAdapter getPersonalListAdapter() {
+        return getAdapterForIndex(PROFILE_PERSONAL);
+    }
+
+    @Override
+    @Nullable
+    public ResolverListAdapter getWorkListAdapter() {
+        return getAdapterForIndex(PROFILE_WORK);
+    }
+
+    @Override
     ResolverListAdapter getCurrentRootAdapter() {
         return getActiveListAdapter();
     }
diff --git a/core/java/com/android/internal/app/ResolverViewPager.java b/core/java/com/android/internal/app/ResolverViewPager.java
index 8ec94f1..84fed9c 100644
--- a/core/java/com/android/internal/app/ResolverViewPager.java
+++ b/core/java/com/android/internal/app/ResolverViewPager.java
@@ -57,10 +57,15 @@
         widthMeasureSpec = MeasureSpec.makeMeasureSpec(getMeasuredWidth(), MeasureSpec.EXACTLY);
         int height = getMeasuredHeight();
         if (getChildCount() > 0) {
-            View firstChild = getChildAt(0);
-            firstChild.measure(widthMeasureSpec,
+            View child = getChildAt(0);
+            child.measure(widthMeasureSpec,
                     MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST));
-            height = firstChild.getMeasuredHeight();
+            if (height > child.getMeasuredHeight()) {
+                height = child.getMeasuredHeight();
+            }
+        }
+        if (height < getMinimumHeight()) {
+            height = getMinimumHeight();
         }
         heightMeasureSpec = MeasureSpec.makeMeasureSpec(height, MeasureSpec.EXACTLY);
         super.onMeasure(widthMeasureSpec, heightMeasureSpec);
diff --git a/core/java/com/android/internal/compat/ChangeReporter.java b/core/java/com/android/internal/compat/ChangeReporter.java
index e0eb9af..5e886a6 100644
--- a/core/java/com/android/internal/compat/ChangeReporter.java
+++ b/core/java/com/android/internal/compat/ChangeReporter.java
@@ -16,13 +16,16 @@
 
 package com.android.internal.compat;
 
+import android.annotation.IntDef;
 import android.util.Log;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -42,7 +45,7 @@
         long mChangeId;
         int mState;
 
-        ChangeReport(long changeId, int state) {
+        ChangeReport(long changeId, @State int state) {
             mChangeId = changeId;
             mState = state;
         }
@@ -69,7 +72,7 @@
     // When true will of every time to debug (logcat).
     private boolean mDebugLogAll;
 
-    public ChangeReporter(int source) {
+    public ChangeReporter(@Source int source) {
         mSource = source;
         mReportedChanges =  new HashMap<>();
         mDebugLogAll = false;
@@ -85,8 +88,8 @@
      */
     public void reportChange(int uid, long changeId, int state) {
         if (shouldWriteToStatsLog(uid, changeId, state)) {
-            StatsLog.write(StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED, uid, changeId,
-                    state, mSource);
+            FrameworkStatsLog.write(FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED, uid,
+                    changeId, state, mSource);
         }
         if (shouldWriteToDebug(uid, changeId, state)) {
             debugLog(uid, changeId, state);
@@ -110,7 +113,7 @@
 
 
     /**
-     * Returns whether the next report should be logged to statsLog.
+     * Returns whether the next report should be logged to FrameworkStatsLog.
      *
      * @param uid      affected by the change
      * @param changeId the reported change id
@@ -174,7 +177,7 @@
     private void debugLog(int uid, long changeId, int state) {
         String message = String.format("Compat change id reported: %d; UID %d; state: %s", changeId,
                 uid, stateToString(state));
-        if (mSource == StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__SYSTEM_SERVER) {
+        if (mSource == SOURCE_SYSTEM_SERVER) {
             Slog.d(TAG, message);
         } else {
             Log.d(TAG, message);
@@ -183,21 +186,56 @@
     }
 
     /**
-     * Transforms StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE enum to a string.
+     * Transforms {@link #ChangeReporter.State} enum to a string.
      *
      * @param state to transform
      * @return a string representing the state
      */
-    private static String stateToString(int state) {
+    private static String stateToString(@State int state) {
         switch (state) {
-            case StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__LOGGED:
+            case STATE_LOGGED:
                 return "LOGGED";
-            case StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__ENABLED:
+            case STATE_ENABLED:
                 return "ENABLED";
-            case StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__DISABLED:
+            case STATE_DISABLED:
                 return "DISABLED";
             default:
                 return "UNKNOWN";
         }
     }
+
+    /** These values should be kept in sync with those in atoms.proto */
+    public static final int STATE_UNKNOWN_STATE =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__UNKNOWN_STATE;
+    public static final int STATE_ENABLED =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__ENABLED;
+    public static final int STATE_DISABLED =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__DISABLED;
+    public static final int STATE_LOGGED =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__LOGGED;
+    public static final int SOURCE_UNKNOWN_SOURCE =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__UNKNOWN_SOURCE;
+    public static final int SOURCE_APP_PROCESS =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__APP_PROCESS;
+    public static final int SOURCE_SYSTEM_SERVER =
+                    FrameworkStatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__SYSTEM_SERVER;
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = { "STATE_" }, value = {
+            STATE_UNKNOWN_STATE,
+            STATE_ENABLED,
+            STATE_DISABLED,
+            STATE_LOGGED
+    })
+    public @interface State {
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = { "SOURCE_" }, value = {
+            SOURCE_UNKNOWN_SOURCE,
+            SOURCE_APP_PROCESS,
+            SOURCE_SYSTEM_SERVER
+    })
+    public @interface Source {
+    }
 }
diff --git a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
index b232efc..086b9d8 100644
--- a/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
+++ b/core/java/com/android/internal/config/sysui/SystemUiDeviceConfigFlags.java
@@ -253,6 +253,13 @@
     public static final String NOTIFICATIONS_USE_PEOPLE_FILTERING =
             "notifications_use_people_filtering";
 
+    /**
+     * (boolean) Whether or not to enable user dismissing of foreground service notifications
+     * into a new section at the bottom of the notification shade.
+     */
+    public static final String NOTIFICATIONS_ALLOW_FGS_DISMISSAL =
+            "notifications_allow_fgs_dismissal";
+
     // Flags related to brightline falsing
 
     /**
@@ -370,6 +377,11 @@
     public static final String NAV_BAR_HANDLE_SHOW_OVER_LOCKSCREEN =
             "nav_bar_handle_show_over_lockscreen";
 
+    /**
+     * (boolean) Whether to enable user-drag resizing for PIP.
+     */
+    public static final String PIP_USER_RESIZE = "pip_user_resize";
+
     private SystemUiDeviceConfigFlags() {
     }
 }
diff --git a/core/java/com/android/internal/content/NativeLibraryHelper.java b/core/java/com/android/internal/content/NativeLibraryHelper.java
index 22fe31e..0ccc45e 100644
--- a/core/java/com/android/internal/content/NativeLibraryHelper.java
+++ b/core/java/com/android/internal/content/NativeLibraryHelper.java
@@ -25,6 +25,7 @@
 import static android.system.OsConstants.S_IXGRP;
 import static android.system.OsConstants.S_IXOTH;
 
+import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageParser;
@@ -32,7 +33,12 @@
 import android.content.pm.PackageParser.PackageParserException;
 import android.content.pm.parsing.AndroidPackage;
 import android.os.Build;
+import android.os.IBinder;
 import android.os.SELinux;
+import android.os.ServiceManager;
+import android.os.incremental.IIncrementalService;
+import android.os.incremental.IncrementalManager;
+import android.os.incremental.IncrementalStorage;
 import android.system.ErrnoException;
 import android.system.Os;
 import android.util.Slog;
@@ -44,6 +50,7 @@
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.IOException;
+import java.nio.file.Path;
 import java.util.List;
 
 /**
@@ -73,6 +80,7 @@
         private final CloseGuard mGuard = CloseGuard.get();
         private volatile boolean mClosed;
 
+        final String[] apkPaths;
         final long[] apkHandles;
         final boolean multiArch;
         final boolean extractNativeLibs;
@@ -103,9 +111,11 @@
         private static Handle create(List<String> codePaths, boolean multiArch,
                 boolean extractNativeLibs, boolean debuggable) throws IOException {
             final int size = codePaths.size();
+            final String[] apkPaths = new String[size];
             final long[] apkHandles = new long[size];
             for (int i = 0; i < size; i++) {
                 final String path = codePaths.get(i);
+                apkPaths[i] = path;
                 apkHandles[i] = nativeOpenApk(path);
                 if (apkHandles[i] == 0) {
                     // Unwind everything we've opened so far
@@ -116,7 +126,7 @@
                 }
             }
 
-            return new Handle(apkHandles, multiArch, extractNativeLibs, debuggable);
+            return new Handle(apkPaths, apkHandles, multiArch, extractNativeLibs, debuggable);
         }
 
         public static Handle createFd(PackageLite lite, FileDescriptor fd) throws IOException {
@@ -127,11 +137,13 @@
                 throw new IOException("Unable to open APK " + path + " from fd " + fd);
             }
 
-            return new Handle(apkHandles, lite.multiArch, lite.extractNativeLibs, lite.debuggable);
+            return new Handle(new String[]{path}, apkHandles, lite.multiArch,
+                    lite.extractNativeLibs, lite.debuggable);
         }
 
-        Handle(long[] apkHandles, boolean multiArch, boolean extractNativeLibs,
-                boolean debuggable) {
+        Handle(String[] apkPaths, long[] apkHandles, boolean multiArch,
+                boolean extractNativeLibs, boolean debuggable) {
+            this.apkPaths = apkPaths;
             this.apkHandles = apkHandles;
             this.multiArch = multiArch;
             this.extractNativeLibs = extractNativeLibs;
@@ -313,40 +325,58 @@
     }
 
     public static int copyNativeBinariesForSupportedAbi(Handle handle, File libraryRoot,
-            String[] abiList, boolean useIsaSubdir) throws IOException {
-        createNativeLibrarySubdir(libraryRoot);
-
+            String[] abiList, boolean useIsaSubdir, boolean isIncremental) throws IOException {
         /*
          * If this is an internal application or our nativeLibraryPath points to
          * the app-lib directory, unpack the libraries if necessary.
          */
         int abi = findSupportedAbi(handle, abiList);
-        if (abi >= 0) {
-            /*
-             * If we have a matching instruction set, construct a subdir under the native
-             * library root that corresponds to this instruction set.
-             */
-            final String instructionSet = VMRuntime.getInstructionSet(abiList[abi]);
-            final File subDir;
-            if (useIsaSubdir) {
-                final File isaSubdir = new File(libraryRoot, instructionSet);
-                createNativeLibrarySubdir(isaSubdir);
-                subDir = isaSubdir;
-            } else {
-                subDir = libraryRoot;
-            }
+        if (abi < 0) {
+            return abi;
+        }
 
-            int copyRet = copyNativeBinaries(handle, subDir, abiList[abi]);
-            if (copyRet != PackageManager.INSTALL_SUCCEEDED) {
-                return copyRet;
+        /*
+         * If we have a matching instruction set, construct a subdir under the native
+         * library root that corresponds to this instruction set.
+         */
+        final String supportedAbi = abiList[abi];
+        final String instructionSet = VMRuntime.getInstructionSet(supportedAbi);
+        final File subDir;
+        if (useIsaSubdir) {
+            subDir = new File(libraryRoot, instructionSet);
+        } else {
+            subDir = libraryRoot;
+        }
+
+        if (isIncremental) {
+            int res =
+                    incrementalConfigureNativeBinariesForSupportedAbi(handle, subDir, supportedAbi);
+            if (res != PackageManager.INSTALL_SUCCEEDED) {
+                // TODO(b/133435829): the caller of this function expects that we return the index
+                // to the supported ABI. However, any non-negative integer can be a valid index.
+                // We should fix this function and make sure it doesn't accidentally return an error
+                // code that can also be a valid index.
+                return res;
             }
+            return abi;
+        }
+
+        // For non-incremental, use regular extraction and copy
+        createNativeLibrarySubdir(libraryRoot);
+        if (subDir != libraryRoot) {
+            createNativeLibrarySubdir(subDir);
+        }
+
+        int copyRet = copyNativeBinaries(handle, subDir, supportedAbi);
+        if (copyRet != PackageManager.INSTALL_SUCCEEDED) {
+            return copyRet;
         }
 
         return abi;
     }
 
     public static int copyNativeBinariesWithOverride(Handle handle, File libraryRoot,
-            String abiOverride) {
+            String abiOverride, boolean isIncremental) {
         try {
             if (handle.multiArch) {
                 // Warn if we've set an abiOverride for multi-lib packages..
@@ -359,7 +389,8 @@
                 int copyRet = PackageManager.NO_NATIVE_LIBRARIES;
                 if (Build.SUPPORTED_32_BIT_ABIS.length > 0) {
                     copyRet = copyNativeBinariesForSupportedAbi(handle, libraryRoot,
-                            Build.SUPPORTED_32_BIT_ABIS, true /* use isa specific subdirs */);
+                            Build.SUPPORTED_32_BIT_ABIS, true /* use isa specific subdirs */,
+                            isIncremental);
                     if (copyRet < 0 && copyRet != PackageManager.NO_NATIVE_LIBRARIES &&
                             copyRet != PackageManager.INSTALL_FAILED_NO_MATCHING_ABIS) {
                         Slog.w(TAG, "Failure copying 32 bit native libraries; copyRet=" +copyRet);
@@ -369,7 +400,8 @@
 
                 if (Build.SUPPORTED_64_BIT_ABIS.length > 0) {
                     copyRet = copyNativeBinariesForSupportedAbi(handle, libraryRoot,
-                            Build.SUPPORTED_64_BIT_ABIS, true /* use isa specific subdirs */);
+                            Build.SUPPORTED_64_BIT_ABIS, true /* use isa specific subdirs */,
+                            isIncremental);
                     if (copyRet < 0 && copyRet != PackageManager.NO_NATIVE_LIBRARIES &&
                             copyRet != PackageManager.INSTALL_FAILED_NO_MATCHING_ABIS) {
                         Slog.w(TAG, "Failure copying 64 bit native libraries; copyRet=" +copyRet);
@@ -392,7 +424,7 @@
                 }
 
                 int copyRet = copyNativeBinariesForSupportedAbi(handle, libraryRoot, abiList,
-                        true /* use isa specific subdirs */);
+                        true /* use isa specific subdirs */, isIncremental);
                 if (copyRet < 0 && copyRet != PackageManager.NO_NATIVE_LIBRARIES) {
                     Slog.w(TAG, "Failure copying native libraries [errorCode=" + copyRet + "]");
                     return copyRet;
@@ -449,29 +481,61 @@
      * Service will create native library directories and set up native library binary files in the
      * same structure as they are in non-incremental installations.
      *
-     * @param pkg The package to be installed, including all the APK files.
-     * @param handle The pointer to an zip archive.
-     * @param libraryRoot The root directory of the native library files, e.g., lib/
-     * @param abiList The list of ABIs that are supported by the current device.
-     * @param useIsaSubdir Whether or not to set up a sub dir for the ISA.
-     * @return ABI code if installation succeeds or error code if installation fails.
+     * @param handle The Handle object that contains all apk paths.
+     * @param libSubDir The target directory to put the native library files, e.g., lib/ or lib/arm
+     * @param abi The abi that is supported by the current device.
+     * @return Integer code if installation succeeds or fails.
      */
-    public static int configureNativeBinariesForSupportedAbi(AndroidPackage pkg, Handle handle,
-            File libraryRoot, String[] abiList, boolean useIsaSubdir) {
-        int abi = findSupportedAbi(handle, abiList);
-        if (abi < 0) {
-            Slog.e(TAG, "Failed to find find matching ABI.");
-            return abi;
+    private static int incrementalConfigureNativeBinariesForSupportedAbi(Handle handle,
+            File libSubDir, String abi) {
+        final String[] apkPaths = handle.apkPaths;
+        if (apkPaths == null || apkPaths.length == 0) {
+            Slog.e(TAG, "No apks to extract native libraries from.");
+            return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
         }
 
-        // Currently only support installations that have pre-configured native library files
-        // TODO(b/136132412): implement this after incfs supports file mapping
-        if (!libraryRoot.exists()) {
-            Slog.e(TAG, "Incremental installation currently does not configure native libs");
-            return INSTALL_FAILED_NO_MATCHING_ABIS;
+        final IBinder incrementalService = ServiceManager.getService(Context.INCREMENTAL_SERVICE);
+        if (incrementalService == null) {
+            //TODO(b/133435829): add incremental specific error codes
+            return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+        }
+        final IncrementalManager incrementalManager = new IncrementalManager(
+                IIncrementalService.Stub.asInterface(incrementalService));
+        final File apkParent = new File(apkPaths[0]).getParentFile();
+        IncrementalStorage incrementalStorage =
+                incrementalManager.openStorage(apkParent.getAbsolutePath());
+        if (incrementalStorage == null) {
+            Slog.e(TAG, "Failed to find incremental storage");
+            return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
         }
 
-        return abi;
+        String libRelativeDir = getRelativePath(apkParent, libSubDir);
+        if (libRelativeDir == null) {
+            return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+        }
+
+        for (int i = 0; i < apkPaths.length; i++) {
+            if (!incrementalStorage.configureNativeBinaries(apkPaths[i], libRelativeDir, abi)) {
+                return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
+            }
+        }
+        return PackageManager.INSTALL_SUCCEEDED;
+    }
+
+    private static String getRelativePath(File base, File target) {
+        try {
+            final Path basePath = base.toPath();
+            final Path targetPath = target.toPath();
+            final Path relativePath = basePath.relativize(targetPath);
+            if (relativePath.toString().isEmpty()) {
+                return "";
+            }
+            return relativePath.toString();
+        } catch (IllegalArgumentException ex) {
+            Slog.e(TAG, "Failed to find relative path between: " + base.getAbsolutePath()
+                    + " and: " + target.getAbsolutePath());
+            return null;
+        }
     }
 
     // We don't care about the other return values for now.
diff --git a/core/java/com/android/internal/logging/InstanceId.java b/core/java/com/android/internal/logging/InstanceId.java
index 85dbac3..85643fc 100644
--- a/core/java/com/android/internal/logging/InstanceId.java
+++ b/core/java/com/android/internal/logging/InstanceId.java
@@ -16,20 +16,33 @@
 
 package com.android.internal.logging;
 
+import static java.lang.Math.max;
+import static java.lang.Math.min;
+
 import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
 
 import com.android.internal.annotations.VisibleForTesting;
 
 /**
  * An opaque identifier used to disambiguate which logs refer to a particular instance of some
  * UI element. Useful when there might be multiple instances simultaneously active.
- * Obtain from InstanceIdSequence.
+ * Obtain from InstanceIdSequence.  Clipped to range [0, INSTANCE_ID_MAX].
  */
-public class InstanceId {
-    private int mId;
-    protected InstanceId(int id) {
-        mId = id;
+public final class InstanceId implements Parcelable {
+    // At most 20 bits: ~1m possibilities, ~0.5% probability of collision in 100 values
+    static final int INSTANCE_ID_MAX = 1 << 20;
+
+    private final int mId;
+    InstanceId(int id) {
+        mId = min(max(0, id), INSTANCE_ID_MAX);
     }
+
+    private InstanceId(Parcel in) {
+        this(in.readInt());
+    }
+
     @VisibleForTesting
     public int getId() {
         return mId;
@@ -47,4 +60,28 @@
         }
         return mId == ((InstanceId) obj).mId;
     }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(Parcel out, int flags) {
+        out.writeInt(mId);
+    }
+
+    public static final Parcelable.Creator<InstanceId> CREATOR =
+            new Parcelable.Creator<InstanceId>() {
+        @Override
+        public InstanceId createFromParcel(Parcel in) {
+            return new InstanceId(in);
+        }
+
+        @Override
+        public InstanceId[] newArray(int size) {
+            return new InstanceId[size];
+        }
+    };
+
 }
diff --git a/core/java/com/android/internal/logging/InstanceIdSequence.java b/core/java/com/android/internal/logging/InstanceIdSequence.java
index 2e78ed8..aa507e5 100644
--- a/core/java/com/android/internal/logging/InstanceIdSequence.java
+++ b/core/java/com/android/internal/logging/InstanceIdSequence.java
@@ -19,6 +19,8 @@
 import static java.lang.Math.max;
 import static java.lang.Math.min;
 
+import com.android.internal.annotations.VisibleForTesting;
+
 import java.security.SecureRandom;
 import java.util.Random;
 
@@ -28,8 +30,6 @@
  * first use; try to give it a long lifetime. Safe for concurrent use.
  */
 public class InstanceIdSequence {
-    // At most 20 bits: ~1m possibilities, ~0.5% probability of collision in 100 values
-    private static final int INSTANCE_ID_MAX = 1 << 20;
     protected final int mInstanceIdMax;
     private final Random mRandom = new SecureRandom();
 
@@ -39,7 +39,7 @@
      *                      an all-zero sequence.
      */
     public InstanceIdSequence(int instanceIdMax) {
-        mInstanceIdMax = min(max(0, instanceIdMax), INSTANCE_ID_MAX);
+        mInstanceIdMax = min(max(0, instanceIdMax), InstanceId.INSTANCE_ID_MAX);
     }
 
     /**
@@ -47,6 +47,16 @@
      * @return new InstanceId
      */
     public InstanceId newInstanceId() {
-        return new InstanceId(mRandom.nextInt(mInstanceIdMax));
+        return newInstanceIdInternal(mRandom.nextInt(mInstanceIdMax));
+    }
+
+    /**
+     * Factory function for instance IDs, used for testing.
+     * @param id
+     * @return new InstanceId(id)
+     */
+    @VisibleForTesting
+    protected InstanceId newInstanceIdInternal(int id) {
+        return new InstanceId(id);
     }
 }
diff --git a/core/java/com/android/internal/logging/MetricsLogger.java b/core/java/com/android/internal/logging/MetricsLogger.java
index ed04fd8..140c410 100644
--- a/core/java/com/android/internal/logging/MetricsLogger.java
+++ b/core/java/com/android/internal/logging/MetricsLogger.java
@@ -19,10 +19,10 @@
 import android.content.Context;
 import android.metrics.LogMaker;
 import android.os.Build;
-import android.util.StatsLog;
 import android.view.View;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Writes sysui_multi_event records to the system event log.
@@ -55,8 +55,8 @@
     protected void saveLog(LogMaker log) {
         // TODO(b/116684537): Flag guard logging to event log and statsd socket.
         EventLogTags.writeSysuiMultiAction(log.serialize());
-        StatsLog.write(StatsLog.KEY_VALUE_PAIRS_ATOM, /* UID is retrieved from statsd side */ 0,
-                log.getEntries());
+        FrameworkStatsLog.write(FrameworkStatsLog.KEY_VALUE_PAIRS_ATOM,
+                /* UID is retrieved from statsd side */ 0, log.getEntries());
     }
 
     public static final int VIEW_UNKNOWN = MetricsEvent.VIEW_UNKNOWN;
diff --git a/core/java/com/android/internal/logging/UiEventLogger.java b/core/java/com/android/internal/logging/UiEventLogger.java
index 48d2bc2..67ffd4d 100644
--- a/core/java/com/android/internal/logging/UiEventLogger.java
+++ b/core/java/com/android/internal/logging/UiEventLogger.java
@@ -56,8 +56,8 @@
      * @param event an enum implementing UiEventEnum interface.
      * @param uid the uid of the relevant app, if known (0 otherwise).
      * @param packageName the package name of the relevant app, if known (null otherwise).
-     * @param instance An identifier obtained from an InstanceIdSequence.
+     * @param instance An identifier obtained from an InstanceIdSequence. If null, reduces to log().
      */
     void logWithInstanceId(@NonNull UiEventEnum event, int uid, @Nullable String packageName,
-            @NonNull InstanceId instance);
+            @Nullable InstanceId instance);
 }
diff --git a/core/java/com/android/internal/logging/UiEventLoggerImpl.java b/core/java/com/android/internal/logging/UiEventLoggerImpl.java
index fe758a8..4d171ec 100644
--- a/core/java/com/android/internal/logging/UiEventLoggerImpl.java
+++ b/core/java/com/android/internal/logging/UiEventLoggerImpl.java
@@ -16,10 +16,10 @@
 
 package com.android.internal.logging;
 
-import android.util.StatsLog;
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
- * Standard implementation of UiEventLogger, writing to StatsLog.
+ * Standard implementation of UiEventLogger, writing to FrameworkStatsLog.
  *
  * See UiEventReported atom in atoms.proto for more context.
  */
@@ -33,7 +33,7 @@
     public void log(UiEventEnum event, int uid, String packageName) {
         final int eventID = event.getId();
         if (eventID > 0) {
-            StatsLog.write(StatsLog.UI_EVENT_REPORTED, eventID, uid, packageName);
+            FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, eventID, uid, packageName);
         }
     }
 
@@ -41,9 +41,11 @@
     public void logWithInstanceId(UiEventEnum event, int uid, String packageName,
             InstanceId instance) {
         final int eventID = event.getId();
-        if (eventID > 0) {
-            StatsLog.write(StatsLog.UI_EVENT_REPORTED, eventID, uid, packageName,
+        if ((eventID > 0)  && (instance != null)) {
+            FrameworkStatsLog.write(FrameworkStatsLog.UI_EVENT_REPORTED, eventID, uid, packageName,
                     instance.getId());
+        } else {
+            log(event, uid, packageName);
         }
     }
 }
diff --git a/core/java/com/android/internal/net/VpnConfig.java b/core/java/com/android/internal/net/VpnConfig.java
index f5a19fe..6d2d735 100644
--- a/core/java/com/android/internal/net/VpnConfig.java
+++ b/core/java/com/android/internal/net/VpnConfig.java
@@ -52,6 +52,7 @@
 
     public static final String DIALOGS_PACKAGE = "com.android.vpndialogs";
 
+    // TODO: Rename this to something that encompasses Settings-based Platform VPNs as well.
     public static final String LEGACY_VPN = "[Legacy VPN]";
 
     public static Intent getIntentForConfirmation() {
diff --git a/core/java/com/android/internal/os/BatteryStatsImpl.java b/core/java/com/android/internal/os/BatteryStatsImpl.java
index 580c1f0..18066dc 100644
--- a/core/java/com/android/internal/os/BatteryStatsImpl.java
+++ b/core/java/com/android/internal/os/BatteryStatsImpl.java
@@ -85,7 +85,6 @@
 import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.util.SparseLongArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.Xml;
 import android.view.Display;
@@ -100,6 +99,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.FastPrintWriter;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.XmlUtils;
 
 import libcore.util.EmptyArray;
@@ -4263,13 +4263,13 @@
             getUidStatsLocked(uid).noteStartWakeLocked(pid, name, type, elapsedRealtime);
 
             if (wc != null) {
-                StatsLog.write(StatsLog.WAKELOCK_STATE_CHANGED, wc.getUids(), wc.getTags(),
-                        getPowerManagerWakeLockLevel(type), name,
-                        StatsLog.WAKELOCK_STATE_CHANGED__STATE__ACQUIRE);
+                FrameworkStatsLog.write(FrameworkStatsLog.WAKELOCK_STATE_CHANGED, wc.getUids(),
+                        wc.getTags(), getPowerManagerWakeLockLevel(type), name,
+                        FrameworkStatsLog.WAKELOCK_STATE_CHANGED__STATE__ACQUIRE);
             } else {
-                StatsLog.write_non_chained(StatsLog.WAKELOCK_STATE_CHANGED, uid, null,
-                        getPowerManagerWakeLockLevel(type), name,
-                        StatsLog.WAKELOCK_STATE_CHANGED__STATE__ACQUIRE);
+                FrameworkStatsLog.write_non_chained(FrameworkStatsLog.WAKELOCK_STATE_CHANGED, uid,
+                        null, getPowerManagerWakeLockLevel(type), name,
+                        FrameworkStatsLog.WAKELOCK_STATE_CHANGED__STATE__ACQUIRE);
             }
         }
     }
@@ -4308,13 +4308,13 @@
 
             getUidStatsLocked(uid).noteStopWakeLocked(pid, name, type, elapsedRealtime);
             if (wc != null) {
-                StatsLog.write(StatsLog.WAKELOCK_STATE_CHANGED, wc.getUids(), wc.getTags(),
-                        getPowerManagerWakeLockLevel(type), name,
-                        StatsLog.WAKELOCK_STATE_CHANGED__STATE__RELEASE);
+                FrameworkStatsLog.write(FrameworkStatsLog.WAKELOCK_STATE_CHANGED, wc.getUids(),
+                        wc.getTags(), getPowerManagerWakeLockLevel(type), name,
+                        FrameworkStatsLog.WAKELOCK_STATE_CHANGED__STATE__RELEASE);
             } else {
-                StatsLog.write_non_chained(StatsLog.WAKELOCK_STATE_CHANGED, uid, null,
-                        getPowerManagerWakeLockLevel(type), name,
-                        StatsLog.WAKELOCK_STATE_CHANGED__STATE__RELEASE);
+                FrameworkStatsLog.write_non_chained(FrameworkStatsLog.WAKELOCK_STATE_CHANGED, uid,
+                        null, getPowerManagerWakeLockLevel(type), name,
+                        FrameworkStatsLog.WAKELOCK_STATE_CHANGED__STATE__RELEASE);
             }
         }
     }
@@ -4323,7 +4323,8 @@
      * Converts BatteryStats wakelock types back into PowerManager wakelock levels.
      * This is the inverse map of Notifier.getBatteryStatsWakeLockMonitorType().
      * These are estimations, since batterystats loses some of the original data.
-     * TODO: Delete this. Instead, StatsLog.write should be called from PowerManager's Notifier.
+     * TODO: Delete this. Instead, FrameworkStatsLog.write should be called from
+     * PowerManager's Notifier.
      */
     private int getPowerManagerWakeLockLevel(int battertStatsWakelockType) {
         switch (battertStatsWakelockType) {
@@ -4516,7 +4517,7 @@
             long deltaUptime = uptimeMs - mLastWakeupUptimeMs;
             SamplingTimer timer = getWakeupReasonTimerLocked(mLastWakeupReason);
             timer.add(deltaUptime * 1000, 1); // time in in microseconds
-            StatsLog.write(StatsLog.KERNEL_WAKEUP_REPORTED, mLastWakeupReason,
+            FrameworkStatsLog.write(FrameworkStatsLog.KERNEL_WAKEUP_REPORTED, mLastWakeupReason,
                     /* duration_usec */ deltaUptime * 1000);
             mLastWakeupReason = null;
         }
@@ -4658,12 +4659,12 @@
         mGpsNesting++;
 
         if (workChain == null) {
-            StatsLog.write_non_chained(StatsLog.GPS_SCAN_STATE_CHANGED, uid, null,
-                    StatsLog.GPS_SCAN_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.GPS_SCAN_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.GPS_SCAN_STATE_CHANGED__STATE__ON);
         } else {
-            StatsLog.write(StatsLog.GPS_SCAN_STATE_CHANGED,
+            FrameworkStatsLog.write(FrameworkStatsLog.GPS_SCAN_STATE_CHANGED,
                     workChain.getUids(), workChain.getTags(),
-                    StatsLog.GPS_SCAN_STATE_CHANGED__STATE__ON);
+                    FrameworkStatsLog.GPS_SCAN_STATE_CHANGED__STATE__ON);
         }
 
         getUidStatsLocked(uid).noteStartGps(elapsedRealtime);
@@ -4684,11 +4685,11 @@
         }
 
         if (workChain == null) {
-            StatsLog.write_non_chained(StatsLog.GPS_SCAN_STATE_CHANGED, uid, null,
-                    StatsLog.GPS_SCAN_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.GPS_SCAN_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.GPS_SCAN_STATE_CHANGED__STATE__OFF);
         } else {
-            StatsLog.write(StatsLog.GPS_SCAN_STATE_CHANGED, workChain.getUids(),
-                    workChain.getTags(), StatsLog.GPS_SCAN_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write(FrameworkStatsLog.GPS_SCAN_STATE_CHANGED, workChain.getUids(),
+                    workChain.getTags(), FrameworkStatsLog.GPS_SCAN_STATE_CHANGED__STATE__OFF);
         }
 
         getUidStatsLocked(uid).noteStopGps(elapsedRealtime);
@@ -4947,9 +4948,10 @@
                 mPowerSaveModeEnabledTimer.stopRunningLocked(elapsedRealtime);
             }
             addHistoryRecordLocked(elapsedRealtime, uptime);
-            StatsLog.write(StatsLog.BATTERY_SAVER_MODE_STATE_CHANGED, enabled ?
-                    StatsLog.BATTERY_SAVER_MODE_STATE_CHANGED__STATE__ON :
-                    StatsLog.BATTERY_SAVER_MODE_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write(FrameworkStatsLog.BATTERY_SAVER_MODE_STATE_CHANGED,
+                    enabled
+                        ? FrameworkStatsLog.BATTERY_SAVER_MODE_STATE_CHANGED__STATE__ON
+                        : FrameworkStatsLog.BATTERY_SAVER_MODE_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -4977,7 +4979,7 @@
             if (nowIdling)           statsmode = DEVICE_IDLE_MODE_DEEP;
             else if (nowLightIdling) statsmode = DEVICE_IDLE_MODE_LIGHT;
             else                     statsmode = DEVICE_IDLE_MODE_OFF;
-            StatsLog.write(StatsLog.DEVICE_IDLING_MODE_STATE_CHANGED, statsmode);
+            FrameworkStatsLog.write(FrameworkStatsLog.DEVICE_IDLING_MODE_STATE_CHANGED, statsmode);
         }
         if (mDeviceIdling != nowIdling) {
             mDeviceIdling = nowIdling;
@@ -5023,7 +5025,7 @@
                 mDeviceIdleModeFullTimer.startRunningLocked(elapsedRealtime);
             }
             mDeviceIdleMode = mode;
-            StatsLog.write(StatsLog.DEVICE_IDLE_MODE_STATE_CHANGED, mode);
+            FrameworkStatsLog.write(FrameworkStatsLog.DEVICE_IDLE_MODE_STATE_CHANGED, mode);
         }
     }
 
@@ -5197,7 +5199,8 @@
                 if (DEBUG_HISTORY) Slog.v(TAG, "Phone started scanning to: "
                         + Integer.toHexString(mHistoryCur.states));
                 mPhoneSignalScanningTimer.startRunningLocked(elapsedRealtime);
-                StatsLog.write(StatsLog.PHONE_SERVICE_STATE_CHANGED, state, simState, strengthBin);
+                FrameworkStatsLog.write(FrameworkStatsLog.PHONE_SERVICE_STATE_CHANGED, state,
+                        simState, strengthBin);
             }
         }
 
@@ -5209,7 +5212,8 @@
                         + Integer.toHexString(mHistoryCur.states));
                 newHistory = true;
                 mPhoneSignalScanningTimer.stopRunningLocked(elapsedRealtime);
-                StatsLog.write(StatsLog.PHONE_SERVICE_STATE_CHANGED, state, simState, strengthBin);
+                FrameworkStatsLog.write(FrameworkStatsLog.PHONE_SERVICE_STATE_CHANGED, state,
+                        simState, strengthBin);
             }
         }
 
@@ -5236,7 +5240,8 @@
                 if (DEBUG_HISTORY) Slog.v(TAG, "Signal strength " + strengthBin + " to: "
                         + Integer.toHexString(mHistoryCur.states));
                 newHistory = true;
-                StatsLog.write(StatsLog.PHONE_SIGNAL_STRENGTH_CHANGED, strengthBin);
+                FrameworkStatsLog.write(
+                        FrameworkStatsLog.PHONE_SIGNAL_STRENGTH_CHANGED, strengthBin);
             } else {
                 stopAllPhoneSignalStrengthTimersLocked(-1);
             }
@@ -12436,13 +12441,13 @@
             final int status, final int plugType, final int level) {
 
         if (recentPast == null || recentPast.batteryStatus != status) {
-            StatsLog.write(StatsLog.CHARGING_STATE_CHANGED, status);
+            FrameworkStatsLog.write(FrameworkStatsLog.CHARGING_STATE_CHANGED, status);
         }
         if (recentPast == null || recentPast.batteryPlugType != plugType) {
-            StatsLog.write(StatsLog.PLUGGED_STATE_CHANGED, plugType);
+            FrameworkStatsLog.write(FrameworkStatsLog.PLUGGED_STATE_CHANGED, plugType);
         }
         if (recentPast == null || recentPast.batteryLevel != level) {
-            StatsLog.write(StatsLog.BATTERY_LEVEL_CHANGED, level);
+            FrameworkStatsLog.write(FrameworkStatsLog.BATTERY_LEVEL_CHANGED, level);
         }
     }
 
diff --git a/core/java/com/android/internal/os/RuntimeInit.java b/core/java/com/android/internal/os/RuntimeInit.java
index 7adb27c..518911e 100644
--- a/core/java/com/android/internal/os/RuntimeInit.java
+++ b/core/java/com/android/internal/os/RuntimeInit.java
@@ -67,9 +67,10 @@
 
     private static volatile boolean mCrashing = false;
 
-    /*
+    /**
      * Native heap allocations will now have a non-zero tag in the most significant byte.
-     * See {@linktourl https://source.android.com/devices/tech/debug/tagged-pointers}.
+     * See
+     * <a href="https://source.android.com/devices/tech/debug/tagged-pointers">https://source.android.com/devices/tech/debug/tagged-pointers</a>.
      */
     @ChangeId
     @EnabledAfter(targetSdkVersion = VersionCodes.Q)
@@ -322,7 +323,7 @@
         result.append(System.getProperty("java.vm.version")); // such as 1.1.0
         result.append(" (Linux; U; Android ");
 
-        String version = Build.VERSION.RELEASE; // "1.0" or "3.4b5"
+        String version = Build.VERSION.RELEASE_OR_CODENAME; // "1.0" or "3.4b5"
         result.append(version.length() > 0 ? version : "1.0");
 
         // add the model for the release build
@@ -468,7 +469,8 @@
         try {
             if (ActivityManager.getService().handleApplicationWtf(
                     mApplicationObject, tag, system,
-                    new ApplicationErrorReport.ParcelableCrashInfo(t))) {
+                    new ApplicationErrorReport.ParcelableCrashInfo(t),
+                    Process.myPid())) {
                 // The Activity Manager has already written us off -- now exit.
                 Process.killProcess(Process.myPid());
                 System.exit(10);
diff --git a/core/java/com/android/internal/os/StatsdHiddenApiUsageLogger.java b/core/java/com/android/internal/os/StatsdHiddenApiUsageLogger.java
index c169b22..89773b3 100644
--- a/core/java/com/android/internal/os/StatsdHiddenApiUsageLogger.java
+++ b/core/java/com/android/internal/os/StatsdHiddenApiUsageLogger.java
@@ -18,10 +18,10 @@
 
 import android.metrics.LogMaker;
 import android.os.Process;
-import android.util.StatsLog;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.FrameworkStatsLog;
 
 import dalvik.system.VMRuntime.HiddenApiUsageLogger;
 
@@ -84,23 +84,24 @@
     }
 
     private void newLogUsage(String signature, int accessMethod, boolean accessDenied) {
-        int accessMethodProto = StatsLog.HIDDEN_API_USED__ACCESS_METHOD__NONE;
+        int accessMethodProto = FrameworkStatsLog.HIDDEN_API_USED__ACCESS_METHOD__NONE;
         switch(accessMethod) {
             case HiddenApiUsageLogger.ACCESS_METHOD_NONE:
-                accessMethodProto = StatsLog.HIDDEN_API_USED__ACCESS_METHOD__NONE;
+                accessMethodProto = FrameworkStatsLog.HIDDEN_API_USED__ACCESS_METHOD__NONE;
                 break;
             case HiddenApiUsageLogger.ACCESS_METHOD_REFLECTION:
-                accessMethodProto = StatsLog.HIDDEN_API_USED__ACCESS_METHOD__REFLECTION;
+                accessMethodProto = FrameworkStatsLog.HIDDEN_API_USED__ACCESS_METHOD__REFLECTION;
                 break;
             case HiddenApiUsageLogger.ACCESS_METHOD_JNI:
-                accessMethodProto = StatsLog.HIDDEN_API_USED__ACCESS_METHOD__JNI;
+                accessMethodProto = FrameworkStatsLog.HIDDEN_API_USED__ACCESS_METHOD__JNI;
                 break;
             case HiddenApiUsageLogger.ACCESS_METHOD_LINKING:
-                accessMethodProto = StatsLog.HIDDEN_API_USED__ACCESS_METHOD__LINKING;
+                accessMethodProto = FrameworkStatsLog.HIDDEN_API_USED__ACCESS_METHOD__LINKING;
                 break;
         }
 
         int uid = Process.myUid();
-        StatsLog.write(StatsLog.HIDDEN_API_USED, uid, signature, accessMethodProto, accessDenied);
+        FrameworkStatsLog.write(FrameworkStatsLog.HIDDEN_API_USED, uid, signature,
+                accessMethodProto, accessDenied);
     }
 }
diff --git a/core/java/com/android/internal/os/Zygote.java b/core/java/com/android/internal/os/Zygote.java
index e2985566..dfd700f 100644
--- a/core/java/com/android/internal/os/Zygote.java
+++ b/core/java/com/android/internal/os/Zygote.java
@@ -279,10 +279,8 @@
                 uid, gid, gids, runtimeFlags, rlimits, mountExternal, seInfo, niceName, fdsToClose,
                 fdsToIgnore, startChildZygote, instructionSet, appDataDir, isTopApp,
                 pkgDataInfoList);
-        // Enable tracing as soon as possible for the child process.
         if (pid == 0) {
             Zygote.disableExecuteOnly(targetSdkVersion);
-            Trace.setTracingEnabled(true, runtimeFlags);
 
             // Note that this event ends at the end of handleChildProc,
             Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "PostFork");
@@ -334,9 +332,6 @@
                 niceName, startChildZygote, instructionSet, appDataDir, isTopApp,
                 pkgDataInfoList);
 
-        // Enable tracing as soon as possible for the child process.
-        Trace.setTracingEnabled(true, runtimeFlags);
-
         // Note that this event ends at the end of handleChildProc.
         Trace.traceBegin(Trace.TRACE_TAG_ACTIVITY_MANAGER, "PostFork");
 
@@ -393,11 +388,6 @@
                 uid, gid, gids, runtimeFlags, rlimits,
                 permittedCapabilities, effectiveCapabilities);
 
-        // Enable tracing as soon as we enter the system_server.
-        if (pid == 0) {
-            Trace.setTracingEnabled(true, runtimeFlags);
-        }
-
         // Set the Java Language thread priority to the default value for new apps.
         Thread.currentThread().setPriority(Thread.NORM_PRIORITY);
 
diff --git a/core/java/com/android/internal/os/ZygoteInit.java b/core/java/com/android/internal/os/ZygoteInit.java
index 7b6262b..ae54eb2 100644
--- a/core/java/com/android/internal/os/ZygoteInit.java
+++ b/core/java/com/android/internal/os/ZygoteInit.java
@@ -914,10 +914,6 @@
             bootTimingsTraceLog.traceEnd(); // PostZygoteInitGC
 
             bootTimingsTraceLog.traceEnd(); // ZygoteInit
-            // Disable tracing so that forked processes do not inherit stale tracing tags from
-            // Zygote.
-            Trace.setTracingEnabled(false, 0);
-
 
             Zygote.initNativeState(isPrimaryZygote);
 
diff --git a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
index 8bb1e48..ba60fa5 100644
--- a/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
+++ b/core/java/com/android/internal/os/logging/MetricsLoggerWrapper.java
@@ -20,11 +20,11 @@
 import android.content.Context;
 import android.content.pm.PackageManager.NameNotFoundException;
 import android.util.Pair;
-import android.util.StatsLog;
 import android.view.WindowManager.LayoutParams;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Used to wrap different logging calls in one, so that client side code base is clean and more
@@ -39,10 +39,10 @@
             Pair<ComponentName, Integer> topActivityInfo) {
         MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_DISMISSED,
                 METRIC_VALUE_DISMISSED_BY_TAP);
-        StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
                 getUid(context, topActivityInfo.first, topActivityInfo.second),
                 topActivityInfo.first.flattenToString(),
-                StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
+                FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
     }
 
     public static void logPictureInPictureDismissByDrag(Context context,
@@ -50,20 +50,20 @@
         MetricsLogger.action(context,
                 MetricsEvent.ACTION_PICTURE_IN_PICTURE_DISMISSED,
                 METRIC_VALUE_DISMISSED_BY_DRAG);
-        StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
                 getUid(context, topActivityInfo.first, topActivityInfo.second),
                 topActivityInfo.first.flattenToString(),
-                StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
+                FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__DISMISSED);
     }
 
     public static void logPictureInPictureMinimize(Context context, boolean isMinimized,
             Pair<ComponentName, Integer> topActivityInfo) {
         MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_MINIMIZED,
                 isMinimized);
-        StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
                 getUid(context, topActivityInfo.first, topActivityInfo.second),
                 topActivityInfo.first.flattenToString(),
-                StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED);
+                FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__MINIMIZED);
     }
 
     /**
@@ -92,29 +92,29 @@
             int uid, String shortComponentName, boolean supportsEnterPipOnTaskSwitch) {
         MetricsLogger.action(context, MetricsEvent.ACTION_PICTURE_IN_PICTURE_ENTERED,
                 supportsEnterPipOnTaskSwitch);
-        StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED, uid,
+        FrameworkStatsLog.write(FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED, uid,
                 shortComponentName,
-                StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED);
+                FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__ENTERED);
     }
 
     public static void logPictureInPictureFullScreen(Context context, int uid,
             String shortComponentName) {
         MetricsLogger.action(context,
                 MetricsEvent.ACTION_PICTURE_IN_PICTURE_EXPANDED_TO_FULLSCREEN);
-        StatsLog.write(StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED,
                 uid,
                 shortComponentName,
-                StatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN);
+                FrameworkStatsLog.PICTURE_IN_PICTURE_STATE_CHANGED__STATE__EXPANDED_TO_FULL_SCREEN);
     }
 
     public static void logAppOverlayEnter(int uid, String packageName, boolean changed, int type, boolean usingAlertWindow) {
         if (changed) {
             if (type != LayoutParams.TYPE_APPLICATION_OVERLAY) {
-                StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, true,
-                        StatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED);
+                FrameworkStatsLog.write(FrameworkStatsLog.OVERLAY_STATE_CHANGED, uid, packageName,
+                        true, FrameworkStatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED);
             } else if (!usingAlertWindow){
-                StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, false,
-                        StatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED);
+                FrameworkStatsLog.write(FrameworkStatsLog.OVERLAY_STATE_CHANGED, uid, packageName,
+                        false, FrameworkStatsLog.OVERLAY_STATE_CHANGED__STATE__ENTERED);
             }
         }
     }
@@ -122,11 +122,11 @@
     public static void logAppOverlayExit(int uid, String packageName, boolean changed, int type, boolean usingAlertWindow) {
         if (changed) {
             if (type != LayoutParams.TYPE_APPLICATION_OVERLAY) {
-                StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, true,
-                        StatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED);
+                FrameworkStatsLog.write(FrameworkStatsLog.OVERLAY_STATE_CHANGED, uid, packageName,
+                        true, FrameworkStatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED);
             } else if (!usingAlertWindow){
-                StatsLog.write(StatsLog.OVERLAY_STATE_CHANGED, uid, packageName, false,
-                        StatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED);
+                FrameworkStatsLog.write(FrameworkStatsLog.OVERLAY_STATE_CHANGED, uid, packageName,
+                        false, FrameworkStatsLog.OVERLAY_STATE_CHANGED__STATE__EXITED);
             }
         }
     }
diff --git a/core/java/com/android/internal/policy/PhoneWindow.java b/core/java/com/android/internal/policy/PhoneWindow.java
index f13a638..775368b 100644
--- a/core/java/com/android/internal/policy/PhoneWindow.java
+++ b/core/java/com/android/internal/policy/PhoneWindow.java
@@ -320,7 +320,8 @@
     /** @see ViewRootImpl#mActivityConfigCallback */
     private ActivityConfigCallback mActivityConfigCallback;
 
-    private OnContentApplyWindowInsetsListener mPendingOnContentApplyWindowInsetsListener;
+    private OnContentApplyWindowInsetsListener mPendingOnContentApplyWindowInsetsListener
+            = createDefaultContentWindowInsetsListener();
 
     static class WindowManagerHolder {
         static final IWindowManager sWindowManager = IWindowManager.Stub.asInterface(
@@ -1820,15 +1821,20 @@
     }
 
     private ViewRootImpl getViewRootImpl() {
-        if (mDecor != null) {
-            ViewRootImpl viewRootImpl = mDecor.getViewRootImpl();
-            if (viewRootImpl != null) {
-                return viewRootImpl;
-            }
+        ViewRootImpl viewRootImpl = getViewRootImplOrNull();
+        if (viewRootImpl != null) {
+            return viewRootImpl;
         }
         throw new IllegalStateException("view not added");
     }
 
+    private ViewRootImpl getViewRootImplOrNull() {
+        if (mDecor == null) {
+            return null;
+        }
+        return mDecor.getViewRootImpl();
+    }
+
     /**
      * Request that key events come to this activity. Use this if your activity
      * has no views with focus, but the activity still wants a chance to process
@@ -2109,14 +2115,9 @@
     /** Notify when decor view is attached to window and {@link ViewRootImpl} is available. */
     void onViewRootImplSet(ViewRootImpl viewRoot) {
         viewRoot.setActivityConfigCallback(mActivityConfigCallback);
-        if (mPendingOnContentApplyWindowInsetsListener != null) {
-            viewRoot.setOnContentApplyWindowInsetsListener(
-                    mPendingOnContentApplyWindowInsetsListener);
-            mPendingOnContentApplyWindowInsetsListener = null;
-        } else {
-            viewRoot.setOnContentApplyWindowInsetsListener(
-                    createDefaultContentWindowInsetsListener());
-        }
+        viewRoot.setOnContentApplyWindowInsetsListener(
+                mPendingOnContentApplyWindowInsetsListener);
+        mPendingOnContentApplyWindowInsetsListener = null;
     }
 
     private OnContentApplyWindowInsetsListener createDefaultContentWindowInsetsListener() {
@@ -2125,8 +2126,9 @@
                 return new Pair<>(Insets.NONE, insets);
             }
 
-            boolean includeIme = (getAttributes().softInputMode & SOFT_INPUT_MASK_ADJUST)
-                    == SOFT_INPUT_ADJUST_RESIZE;
+            boolean includeIme =
+                    (getViewRootImpl().mWindowAttributes.softInputMode & SOFT_INPUT_MASK_ADJUST)
+                            == SOFT_INPUT_ADJUST_RESIZE;
             Insets insetsToApply;
             if (ViewRootImpl.sNewInsetsMode == 0) {
                 insetsToApply = insets.getSystemWindowInsets();
@@ -3902,17 +3904,15 @@
     }
 
     @Override
-    public void setOnContentApplyWindowInsetsListener(OnContentApplyWindowInsetsListener listener) {
-        ViewRootImpl impl = getViewRootImpl();
+    public void setDecorFitsSystemWindows(boolean decorFitsSystemWindows) {
+        ViewRootImpl impl = getViewRootImplOrNull();
+        OnContentApplyWindowInsetsListener listener = decorFitsSystemWindows
+                ? createDefaultContentWindowInsetsListener()
+                : null;
         if (impl != null) {
             impl.setOnContentApplyWindowInsetsListener(listener);
         } else {
             mPendingOnContentApplyWindowInsetsListener = listener;
         }
     }
-
-    @Override
-    public void resetOnContentApplyWindowInsetsListener() {
-        setOnContentApplyWindowInsetsListener(createDefaultContentWindowInsetsListener());
-    }
 }
diff --git a/core/java/com/android/internal/policy/TaskResizingAlgorithm.java b/core/java/com/android/internal/policy/TaskResizingAlgorithm.java
new file mode 100644
index 0000000..1fce098
--- /dev/null
+++ b/core/java/com/android/internal/policy/TaskResizingAlgorithm.java
@@ -0,0 +1,179 @@
+/*
+ * 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.internal.policy;
+
+import android.annotation.IntDef;
+import android.graphics.Point;
+import android.graphics.Rect;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Given a move coordinate (x, y), the original taks bounds and relevant details, calculate the new
+ * bounds.
+ *
+ * @hide
+ */
+public class TaskResizingAlgorithm {
+
+    @IntDef(flag = true,
+            value = {
+                    CTRL_NONE,
+                    CTRL_LEFT,
+                    CTRL_RIGHT,
+                    CTRL_TOP,
+                    CTRL_BOTTOM
+            })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface CtrlType {}
+
+    public static final int CTRL_NONE   = 0x0;
+    public static final int CTRL_LEFT   = 0x1;
+    public static final int CTRL_RIGHT  = 0x2;
+    public static final int CTRL_TOP    = 0x4;
+    public static final int CTRL_BOTTOM = 0x8;
+
+    // The minimal aspect ratio which needs to be met to count as landscape (or 1/.. for portrait).
+    // Note: We do not use the 1.33 from the CDD here since the user is allowed to use what ever
+    // aspect he desires.
+    @VisibleForTesting
+    public static final float MIN_ASPECT = 1.2f;
+
+    /**
+     * Given a (x, y) point and its original starting down point and its original bounds, calculate
+     * and return a new resized bound.
+     * @param x the new moved X point.
+     * @param y the new moved Y point.
+     * @param startDragX the original starting X point.
+     * @param startDragY the original starting Y point.
+     * @param originalBounds the original bound before resize.
+     * @param ctrlType The type of resize operation.
+     * @param minVisibleWidth The minimal width required for the new size.
+     * @param minVisibleHeight The minimal height required for the new size.
+     * @param maxVisibleSize The maximum size allowed.
+     * @param preserveOrientation
+     * @param startOrientationWasLandscape
+     * @return
+     */
+    public static Rect resizeDrag(float x, float y, float startDragX, float startDragY,
+            Rect originalBounds, int ctrlType, int minVisibleWidth, int minVisibleHeight,
+            Point maxVisibleSize, boolean preserveOrientation,
+            boolean startOrientationWasLandscape) {
+        // This is a resizing operation.
+        // We need to keep various constraints:
+        // 1. mMinVisible[Width/Height] <= [width/height] <= mMaxVisibleSize.[x/y]
+        // 2. The orientation is kept - if required.
+        final int deltaX = Math.round(x - startDragX);
+        final int deltaY = Math.round(y - startDragY);
+        int left = originalBounds.left;
+        int top = originalBounds.top;
+        int right = originalBounds.right;
+        int bottom = originalBounds.bottom;
+
+        // Calculate the resulting width and height of the drag operation.
+        int width = right - left;
+        int height = bottom - top;
+        if ((ctrlType & CTRL_LEFT) != 0) {
+            width = Math.max(minVisibleWidth, width - deltaX);
+        } else if ((ctrlType & CTRL_RIGHT) != 0) {
+            width = Math.max(minVisibleWidth, width + deltaX);
+        }
+        if ((ctrlType & CTRL_TOP) != 0) {
+            height = Math.max(minVisibleHeight, height - deltaY);
+        } else if ((ctrlType & CTRL_BOTTOM) != 0) {
+            height = Math.max(minVisibleHeight, height + deltaY);
+        }
+
+        // If we have to preserve the orientation - check that we are doing so.
+        final float aspect = (float) width / (float) height;
+        if (preserveOrientation && ((startOrientationWasLandscape && aspect < MIN_ASPECT)
+                || (!startOrientationWasLandscape && aspect > (1.0 / MIN_ASPECT)))) {
+            // Calculate 2 rectangles fulfilling all requirements for either X or Y being the major
+            // drag axis. What ever is producing the bigger rectangle will be chosen.
+            int width1;
+            int width2;
+            int height1;
+            int height2;
+            if (startOrientationWasLandscape) {
+                // Assuming that the width is our target we calculate the height.
+                width1 = Math.max(minVisibleWidth, Math.min(maxVisibleSize.x, width));
+                height1 = Math.min(height, Math.round((float) width1 / MIN_ASPECT));
+                if (height1 < minVisibleHeight) {
+                    // If the resulting height is too small we adjust to the minimal size.
+                    height1 = minVisibleHeight;
+                    width1 = Math.max(minVisibleWidth,
+                            Math.min(maxVisibleSize.x, Math.round((float) height1 * MIN_ASPECT)));
+                }
+                // Assuming that the height is our target we calculate the width.
+                height2 = Math.max(minVisibleHeight, Math.min(maxVisibleSize.y, height));
+                width2 = Math.max(width, Math.round((float) height2 * MIN_ASPECT));
+                if (width2 < minVisibleWidth) {
+                    // If the resulting width is too small we adjust to the minimal size.
+                    width2 = minVisibleWidth;
+                    height2 = Math.max(minVisibleHeight,
+                            Math.min(maxVisibleSize.y, Math.round((float) width2 / MIN_ASPECT)));
+                }
+            } else {
+                // Assuming that the width is our target we calculate the height.
+                width1 = Math.max(minVisibleWidth, Math.min(maxVisibleSize.x, width));
+                height1 = Math.max(height, Math.round((float) width1 * MIN_ASPECT));
+                if (height1 < minVisibleHeight) {
+                    // If the resulting height is too small we adjust to the minimal size.
+                    height1 = minVisibleHeight;
+                    width1 = Math.max(minVisibleWidth,
+                            Math.min(maxVisibleSize.x, Math.round((float) height1 / MIN_ASPECT)));
+                }
+                // Assuming that the height is our target we calculate the width.
+                height2 = Math.max(minVisibleHeight, Math.min(maxVisibleSize.y, height));
+                width2 = Math.min(width, Math.round((float) height2 / MIN_ASPECT));
+                if (width2 < minVisibleWidth) {
+                    // If the resulting width is too small we adjust to the minimal size.
+                    width2 = minVisibleWidth;
+                    height2 = Math.max(minVisibleHeight,
+                            Math.min(maxVisibleSize.y, Math.round((float) width2 * MIN_ASPECT)));
+                }
+            }
+
+            // Use the bigger of the two rectangles if the major change was positive, otherwise
+            // do the opposite.
+            final boolean grows = width > (right - left) || height > (bottom - top);
+            if (grows == (width1 * height1 > width2 * height2)) {
+                width = width1;
+                height = height1;
+            } else {
+                width = width2;
+                height = height2;
+            }
+        }
+
+        // Generate the final bounds by keeping the opposite drag edge constant.
+        if ((ctrlType & CTRL_LEFT) != 0) {
+            left = right - width;
+        } else { // Note: The right might have changed - if we pulled at the right or not.
+            right = left + width;
+        }
+        if ((ctrlType & CTRL_TOP) != 0) {
+            top = bottom - height;
+        } else { // Note: The height might have changed - if we pulled at the bottom or not.
+            bottom = top + height;
+        }
+        return new Rect(left, top, right, bottom);
+    }
+}
diff --git a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
index 0f50596f..3d5dfbb 100644
--- a/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
+++ b/core/java/com/android/internal/telephony/IPhoneStateListener.aidl
@@ -21,6 +21,7 @@
 import android.telephony.CellIdentity;
 import android.telephony.CellInfo;
 import android.telephony.DataConnectionRealTimeInfo;
+import android.telephony.DisplayInfo;
 import android.telephony.PhoneCapability;
 import android.telephony.PreciseCallState;
 import android.telephony.PreciseDataConnectionState;
@@ -54,6 +55,7 @@
     void onOemHookRawEvent(in byte[] rawData);
     void onCarrierNetworkChange(in boolean active);
     void onUserMobileDataStateChanged(in boolean enabled);
+    void onDisplayInfoChanged(in DisplayInfo displayInfo);
     void onPhoneCapabilityChanged(in PhoneCapability capability);
     void onActiveDataSubIdChanged(in int subId);
     void onRadioPowerStateChanged(in int state);
diff --git a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
index 47752c5..520ffc9 100644
--- a/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
+++ b/core/java/com/android/internal/telephony/ITelephonyRegistry.aidl
@@ -23,6 +23,7 @@
 import android.telephony.CallQuality;
 import android.telephony.CellIdentity;
 import android.telephony.CellInfo;
+import android.telephony.DisplayInfo;
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.PhoneCapability;
 import android.telephony.PhysicalChannelConfig;
@@ -87,6 +88,7 @@
     void notifyOpportunisticSubscriptionInfoChanged();
     void notifyCarrierNetworkChange(in boolean active);
     void notifyUserMobileDataStateChangedForPhoneId(in int phoneId, in int subId, in boolean state);
+    void notifyDisplayInfoChanged(int slotIndex, int subId, in DisplayInfo displayInfo);
     void notifyPhoneCapabilityChanged(in PhoneCapability capability);
     void notifyActiveDataSubIdChanged(int activeDataSubId);
     void notifyRadioPowerStateChanged(in int phoneId, in int subId, in int state);
diff --git a/core/java/com/android/internal/telephony/WapPushManagerParams.java b/core/java/com/android/internal/telephony/WapPushManagerParams.java
deleted file mode 100644
index eafb8f1..0000000
--- a/core/java/com/android/internal/telephony/WapPushManagerParams.java
+++ /dev/null
@@ -1,72 +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.internal.telephony;
-
-import android.telephony.WapPushManagerConnector;
-
-/**
- * WapPushManager constant value definitions.
- * @hide
- */
-public class WapPushManagerParams {
-    /**
-     * Application type activity
-     */
-    public static final int APP_TYPE_ACTIVITY = 0;
-
-    /**
-     * Application type service
-     */
-    public static final int APP_TYPE_SERVICE = 1;
-
-    /**
-     * Process Message return value
-     * Message is handled
-     */
-    public static final int MESSAGE_HANDLED = WapPushManagerConnector.RESULT_MESSAGE_HANDLED;
-
-    /**
-     * Process Message return value
-     * Application ID or content type was not found in the application ID table
-     */
-    public static final int APP_QUERY_FAILED = WapPushManagerConnector.RESULT_APP_QUERY_FAILED;
-
-    /**
-     * Process Message return value
-     * Receiver application signature check failed
-     */
-    public static final int SIGNATURE_NO_MATCH = WapPushManagerConnector.RESULT_SIGNATURE_NO_MATCH;
-
-    /**
-     * Process Message return value
-     * Receiver application was not found
-     */
-    public static final int INVALID_RECEIVER_NAME =
-            WapPushManagerConnector.RESULT_INVALID_RECEIVER_NAME;
-
-    /**
-     * Process Message return value
-     * Unknown exception
-     */
-    public static final int EXCEPTION_CAUGHT = WapPushManagerConnector.RESULT_EXCEPTION_CAUGHT;
-
-    /**
-     * Process Message return value
-     * Need further processing after WapPushManager message processing
-     */
-    public static final int FURTHER_PROCESSING = WapPushManagerConnector.RESULT_FURTHER_PROCESSING;
-}
diff --git a/core/java/com/android/internal/util/LocationPermissionChecker.java b/core/java/com/android/internal/util/LocationPermissionChecker.java
index 2db0e99..cd8fc35 100644
--- a/core/java/com/android/internal/util/LocationPermissionChecker.java
+++ b/core/java/com/android/internal/util/LocationPermissionChecker.java
@@ -17,6 +17,7 @@
 package com.android.internal.util;
 
 import android.Manifest;
+import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.AppOpsManager;
@@ -26,11 +27,13 @@
 import android.os.Binder;
 import android.os.Build;
 import android.os.UserHandle;
-import android.os.UserManager;
 import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
 
 /**
  * The methods used for location permission and location mode checking.
@@ -41,17 +44,27 @@
 
     private static final String TAG = "LocationPermissionChecker";
 
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = {"LOCATION_PERMISSION_CHECK_STATUS_"}, value = {
+        SUCCEEDED,
+        ERROR_LOCATION_MODE_OFF,
+        ERROR_LOCATION_PERMISSION_MISSING,
+    })
+    public @interface LocationPermissionCheckStatus{}
+
+    // The location permission check succeeded.
+    public static final int SUCCEEDED = 0;
+    // The location mode turns off for the caller.
+    public static final int ERROR_LOCATION_MODE_OFF = 1;
+    // The location permission isn't granted for the caller.
+    public static final int ERROR_LOCATION_PERMISSION_MISSING = 2;
+
     private final Context mContext;
     private final AppOpsManager mAppOpsManager;
-    private final UserManager mUserManager;
-    private final LocationManager mLocationManager;
 
     public LocationPermissionChecker(Context context) {
         mContext = context;
         mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
-        mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
-        mLocationManager =
-            (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
     }
 
     /**
@@ -71,12 +84,38 @@
      */
     public boolean checkLocationPermission(String pkgName, @Nullable String featureId,
             int uid, @Nullable String message) {
-        try {
-            enforceLocationPermission(pkgName, featureId, uid, message);
-            return true;
-        } catch (SecurityException e) {
-            return false;
+        return checkLocationPermissionInternal(pkgName, featureId, uid, message) == SUCCEEDED;
+    }
+
+    /**
+     * Check location permission granted by the caller.
+     *
+     * This API check if the location mode enabled for the caller and the caller has
+     * ACCESS_COARSE_LOCATION permission is targetSDK<29, otherwise, has ACCESS_FINE_LOCATION.
+     * Compared with {@link #checkLocationPermission(String, String, int, String)}, this API returns
+     * the detail information about the checking result, including the reason why it's failed and
+     * logs the error for the caller.
+     *
+     * @param pkgName package name of the application requesting access
+     * @param featureId The feature in the package
+     * @param uid The uid of the package
+     * @param message A message describing why the permission was checked. Only needed if this is
+     *                not inside of a two-way binder call from the data receiver
+     *
+     * @return {@link LocationPermissionCheckStatus} the result of the location permission check.
+     */
+    public @LocationPermissionCheckStatus int checkLocationPermissionWithDetailInfo(
+            String pkgName, @Nullable String featureId, int uid, @Nullable String message) {
+        final int result = checkLocationPermissionInternal(pkgName, featureId, uid, message);
+        switch (result) {
+            case ERROR_LOCATION_MODE_OFF:
+                Log.e(TAG, "Location mode is disabled for the device");
+                break;
+            case ERROR_LOCATION_PERMISSION_MISSING:
+                Log.e(TAG, "UID " + uid + " has no location permission");
+                break;
         }
+        return result;
     }
 
     /**
@@ -94,20 +133,32 @@
      */
     public void enforceLocationPermission(String pkgName, @Nullable String featureId, int uid,
             @Nullable String message) throws SecurityException {
+        final int result = checkLocationPermissionInternal(pkgName, featureId, uid, message);
 
+        switch (result) {
+            case ERROR_LOCATION_MODE_OFF:
+                throw new SecurityException("Location mode is disabled for the device");
+            case ERROR_LOCATION_PERMISSION_MISSING:
+                throw new SecurityException("UID " + uid + " has no location permission");
+        }
+    }
+
+    private int checkLocationPermissionInternal(String pkgName, @Nullable String featureId,
+            int uid, @Nullable String message) {
         checkPackage(uid, pkgName);
 
         // Location mode must be enabled
         if (!isLocationModeEnabled()) {
-            throw new SecurityException("Location mode is disabled for the device");
+            return ERROR_LOCATION_MODE_OFF;
         }
 
         // LocationAccess by App: caller must have Coarse/Fine Location permission to have access to
         // location information.
-        if (!checkCallersLocationPermission(pkgName, featureId,
-                uid, /* coarseForTargetSdkLessThanQ */ true, message)) {
-            throw new SecurityException("UID " + uid + " has no location permission");
+        if (!checkCallersLocationPermission(pkgName, featureId, uid,
+                true /* coarseForTargetSdkLessThanQ */, message)) {
+            return ERROR_LOCATION_PERMISSION_MISSING;
         }
+        return SUCCEEDED;
     }
 
     /**
@@ -155,8 +206,10 @@
      * Retrieves a handle to LocationManager (if not already done) and check if location is enabled.
      */
     public boolean isLocationModeEnabled() {
+        final LocationManager LocationManager =
+                (LocationManager) mContext.getSystemService(Context.LOCATION_SERVICE);
         try {
-            return mLocationManager.isLocationEnabledForUser(UserHandle.of(
+            return LocationManager.isLocationEnabledForUser(UserHandle.of(
                     getCurrentUser()));
         } catch (Exception e) {
             Log.e(TAG, "Failure to get location mode via API, falling back to settings", e);
diff --git a/core/java/com/android/internal/util/ObjectUtils.java b/core/java/com/android/internal/util/ObjectUtils.java
index 5568d91..0e7b93d 100644
--- a/core/java/com/android/internal/util/ObjectUtils.java
+++ b/core/java/com/android/internal/util/ObjectUtils.java
@@ -46,4 +46,12 @@
             return (b != null) ? -1 : 0;
         }
     }
+
+    /**
+     * Returns its first argument if non-null, and the second otherwise.
+     */
+    @Nullable
+    public static <T> T getOrElse(@Nullable final T object, @Nullable final T otherwise) {
+        return null != object ? object : otherwise;
+    }
 }
diff --git a/core/java/com/android/internal/util/Preconditions.java b/core/java/com/android/internal/util/Preconditions.java
index 408a7a8..a87e080f 100644
--- a/core/java/com/android/internal/util/Preconditions.java
+++ b/core/java/com/android/internal/util/Preconditions.java
@@ -21,7 +21,9 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.text.TextUtils;
 
+import java.util.Arrays;
 import java.util.Collection;
+import java.util.Objects;
 
 /**
  * Simple static methods to be called at the start of your own methods to verify
@@ -497,6 +499,64 @@
     }
 
     /**
+     * Ensures that the given byte array is not {@code null}, and contains at least one element.
+     *
+     * @param value an array of elements.
+     * @param valueName the name of the argument to use if the check fails.
+
+     * @return the validated array
+     *
+     * @throws NullPointerException if the {@code value} was {@code null}
+     * @throws IllegalArgumentException if the {@code value} was empty
+     */
+    @NonNull
+    public static byte[] checkByteArrayNotEmpty(final byte[] value, final String valueName) {
+        if (value == null) {
+            throw new NullPointerException(valueName + " must not be null");
+        }
+        if (value.length == 0) {
+            throw new IllegalArgumentException(valueName + " is empty");
+        }
+        return value;
+    }
+
+    /**
+     * Ensures that argument {@code value} is one of {@code supportedValues}.
+     *
+     * @param supportedValues an array of string values
+     * @param value a string value
+     *
+     * @return the validated value
+     *
+     * @throws NullPointerException if either {@code value} or {@code supportedValues} is null
+     * @throws IllegalArgumentException if the {@code value} is not in {@code supportedValues}
+     */
+    @NonNull
+    public static String checkArgumentIsSupported(final String[] supportedValues,
+            final String value) {
+        checkNotNull(value);
+        checkNotNull(supportedValues);
+
+        if (!contains(supportedValues, value)) {
+            throw new IllegalArgumentException(value + "is not supported "
+                    + Arrays.toString(supportedValues));
+        }
+        return value;
+    }
+
+    private static boolean contains(String[] values, String value) {
+        if (values == null) {
+            return false;
+        }
+        for (int i = 0; i < values.length; ++i) {
+            if (Objects.equals(value, values[i])) {
+                return true;
+            }
+        }
+        return false;
+    }
+
+    /**
      * Ensures that all elements in the argument floating point array are within the inclusive range
      *
      * <p>While this can be used to range check against +/- infinity, note that all NaN numbers
diff --git a/core/java/com/android/internal/view/FloatingActionMode.java b/core/java/com/android/internal/view/FloatingActionMode.java
index f9e98e7..69b1609 100644
--- a/core/java/com/android/internal/view/FloatingActionMode.java
+++ b/core/java/com/android/internal/view/FloatingActionMode.java
@@ -29,7 +29,6 @@
 import android.view.ViewConfiguration;
 import android.view.ViewGroup;
 import android.view.ViewParent;
-import android.view.WindowManager;
 
 import android.widget.PopupWindow;
 import com.android.internal.R;
@@ -211,8 +210,7 @@
     }
 
     private boolean isContentRectWithinBounds() {
-        mContext.getSystemService(WindowManager.class)
-            .getDefaultDisplay().getRealSize(mDisplaySize);
+        mContext.getDisplay().getRealSize(mDisplaySize);
         mScreenRect.set(0, 0, mDisplaySize.x, mDisplaySize.y);
 
         return intersectsClosed(mContentRectOnScreen, mScreenRect)
diff --git a/core/java/com/android/internal/view/menu/MenuPopupHelper.java b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
index bac6025..0aeaa47 100644
--- a/core/java/com/android/internal/view/menu/MenuPopupHelper.java
+++ b/core/java/com/android/internal/view/menu/MenuPopupHelper.java
@@ -24,10 +24,12 @@
 import android.content.Context;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.util.Size;
 import android.view.Display;
 import android.view.Gravity;
 import android.view.View;
 import android.view.WindowManager;
+import android.view.WindowMetrics;
 import android.widget.PopupWindow.OnDismissListener;
 
 import com.android.internal.view.menu.MenuPresenter.Callback;
@@ -224,13 +226,10 @@
      */
     @NonNull
     private MenuPopup createPopup() {
-        final WindowManager windowManager = (WindowManager) mContext.getSystemService(
-            Context.WINDOW_SERVICE);
-        final Display display = windowManager.getDefaultDisplay();
-        final Point displaySize = new Point();
-        display.getRealSize(displaySize);
+        final WindowManager windowManager = mContext.getSystemService(WindowManager.class);
+        final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
 
-        final int smallestWidth = Math.min(displaySize.x, displaySize.y);
+        final int smallestWidth = Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight());
         final int minSmallestWidthCascading = mContext.getResources().getDimensionPixelSize(
             com.android.internal.R.dimen.cascading_menus_min_smallest_width);
         final boolean enableCascadingSubmenus = smallestWidth >= minSmallestWidthCascading;
diff --git a/core/java/com/android/internal/widget/ILockSettings.aidl b/core/java/com/android/internal/widget/ILockSettings.aidl
index de02eb0..e24e982 100644
--- a/core/java/com/android/internal/widget/ILockSettings.aidl
+++ b/core/java/com/android/internal/widget/ILockSettings.aidl
@@ -89,4 +89,6 @@
             in List<WrappedApplicationKey> applicationKeys);
     void closeSession(in String sessionId);
     boolean hasSecureLockScreen();
+    boolean tryUnlockWithCachedUnifiedChallenge(int userId);
+    void removeCachedUnifiedChallenge(int userId);
 }
diff --git a/core/java/com/android/internal/widget/LockPatternUtils.java b/core/java/com/android/internal/widget/LockPatternUtils.java
index f37a468..864429c 100644
--- a/core/java/com/android/internal/widget/LockPatternUtils.java
+++ b/core/java/com/android/internal/widget/LockPatternUtils.java
@@ -55,10 +55,10 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.server.LocalServices;
 
-import libcore.util.HexEncoding;
-
 import com.google.android.collect.Lists;
 
+import libcore.util.HexEncoding;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.security.MessageDigest;
@@ -1755,4 +1755,33 @@
         return FRP_CREDENTIAL_ENABLED && context.getResources().getBoolean(
                 com.android.internal.R.bool.config_enableCredentialFactoryResetProtection);
     }
+
+    /**
+     * Attempt to rederive the unified work challenge for the specified profile user and unlock the
+     * user. If successful, this would allow the user to leave quiet mode automatically without
+     * additional user authentication.
+     *
+     * This is made possible by the framework storing an encrypted copy of the unified challenge
+     * auth-bound to the primary user's lockscreen. As long as the primery user has unlocked
+     * recently (7 days), the framework will be able to decrypt it and plug the secret into the
+     * unlock flow.
+     *
+     * @return {@code true} if automatic unlocking is successful, {@code false} otherwise.
+     */
+    public boolean tryUnlockWithCachedUnifiedChallenge(int userId) {
+        try {
+            return getLockSettings().tryUnlockWithCachedUnifiedChallenge(userId);
+        } catch (RemoteException re) {
+            return false;
+        }
+    }
+
+    /** Remove cached unified profile challenge, for testing and CTS usage. */
+    public void removeCachedUnifiedChallenge(int userId) {
+        try {
+            getLockSettings().removeCachedUnifiedChallenge(userId);
+        } catch (RemoteException re) {
+            re.rethrowFromSystemServer();
+        }
+    }
 }
diff --git a/core/java/com/android/internal/widget/ResolverDrawerLayout.java b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
index e0c3823..b117e40 100644
--- a/core/java/com/android/internal/widget/ResolverDrawerLayout.java
+++ b/core/java/com/android/internal/widget/ResolverDrawerLayout.java
@@ -66,6 +66,12 @@
      */
     private int mMaxCollapsedHeightSmall;
 
+    /**
+     * Whether {@code mMaxCollapsedHeightSmall} was set explicitly as a layout attribute or
+     * inferred by {@code mMaxCollapsedHeight}.
+     */
+    private final boolean mIsMaxCollapsedHeightSmallExplicit;
+
     private boolean mSmallCollapsed;
 
     /**
@@ -146,6 +152,8 @@
         mMaxCollapsedHeightSmall = a.getDimensionPixelSize(
                 R.styleable.ResolverDrawerLayout_maxCollapsedHeightSmall,
                 mMaxCollapsedHeight);
+        mIsMaxCollapsedHeightSmallExplicit =
+                a.hasValue(R.styleable.ResolverDrawerLayout_maxCollapsedHeightSmall);
         mShowAtTop = a.getBoolean(R.styleable.ResolverDrawerLayout_showAtTop, false);
         a.recycle();
 
@@ -162,6 +170,21 @@
         setImportantForAccessibility(View.IMPORTANT_FOR_ACCESSIBILITY_YES);
     }
 
+    /**
+     * Dynamically set the max collapsed height. Note this also updates the small collapsed
+     * height if it wasn't specified explicitly.
+     */
+    public void setMaxCollapsedHeight(int heightInPixels) {
+        if (heightInPixels == mMaxCollapsedHeight) {
+            return;
+        }
+        mMaxCollapsedHeight = heightInPixels;
+        if (!mIsMaxCollapsedHeightSmallExplicit) {
+            mMaxCollapsedHeightSmall = mMaxCollapsedHeight;
+        }
+        requestLayout();
+    }
+
     public void setSmallCollapsed(boolean smallCollapsed) {
         mSmallCollapsed = smallCollapsed;
         requestLayout();
diff --git a/core/java/com/android/server/BootReceiver.java b/core/java/com/android/server/BootReceiver.java
index 31b5e49..ac2361d 100644
--- a/core/java/com/android/server/BootReceiver.java
+++ b/core/java/com/android/server/BootReceiver.java
@@ -35,14 +35,13 @@
 import android.util.AtomicFile;
 import android.util.EventLog;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.Xml;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.XmlUtils;
-import com.android.server.DropboxLogTags;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -330,7 +329,7 @@
             addTextToDropBox(db, "system_server_native_crash", text, filename, maxSize);
         }
         if (tag.equals(TAG_TOMBSTONE)) {
-            StatsLog.write(StatsLog.TOMB_STONE_OCCURRED);
+            FrameworkStatsLog.write(FrameworkStatsLog.TOMB_STONE_OCCURRED);
         }
         addTextToDropBox(db, tag, text, filename, maxSize);
     }
@@ -427,20 +426,25 @@
                 int eventType;
                 switch (propPostfix) {
                     case "early":
-                        eventType = StatsLog.BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_EARLY_DURATION;
+                        eventType =
+                                FrameworkStatsLog
+                                        .BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_EARLY_DURATION;
                         break;
                     case "default":
                         eventType =
-                                StatsLog.BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_DEFAULT_DURATION;
+                                FrameworkStatsLog
+                                        .BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_DEFAULT_DURATION;
                         break;
                     case "late":
-                        eventType = StatsLog.BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_LATE_DURATION;
+                        eventType =
+                                FrameworkStatsLog
+                                        .BOOT_TIME_EVENT_DURATION__EVENT__MOUNT_LATE_DURATION;
                         break;
                     default:
                         continue;
                 }
-                StatsLog.write(StatsLog.BOOT_TIME_EVENT_DURATION_REPORTED, eventType,
-                        duration);
+                FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED,
+                        eventType, duration);
             }
         }
     }
@@ -544,7 +548,8 @@
             Slog.e(TAG, "No value received for shutdown duration");
         }
 
-        StatsLog.write(StatsLog.SHUTDOWN_SEQUENCE_REPORTED, reboot, reason, start, duration);
+        FrameworkStatsLog.write(FrameworkStatsLog.SHUTDOWN_SEQUENCE_REPORTED, reboot, reason, start,
+                duration);
     }
 
     private static void logFsShutdownTime() {
@@ -571,19 +576,19 @@
         Pattern pattern = Pattern.compile(LAST_SHUTDOWN_TIME_PATTERN, Pattern.MULTILINE);
         Matcher matcher = pattern.matcher(lines);
         if (matcher.find()) {
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_DURATION_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_DURATION__EVENT__SHUTDOWN_DURATION,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_DURATION_REPORTED,
+                    FrameworkStatsLog.BOOT_TIME_EVENT_DURATION__EVENT__SHUTDOWN_DURATION,
                     Integer.parseInt(matcher.group(1)));
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ERROR_CODE__EVENT__SHUTDOWN_UMOUNT_STAT,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
+                    FrameworkStatsLog.BOOT_TIME_EVENT_ERROR_CODE__EVENT__SHUTDOWN_UMOUNT_STAT,
                     Integer.parseInt(matcher.group(2)));
             Slog.i(TAG, "boot_fs_shutdown," + matcher.group(1) + "," + matcher.group(2));
         } else { // not found
             // This can happen when a device has too much kernel log after file system unmount
             // ,exceeding maxReadSize. And having that much kernel logging can affect overall
             // performance as well. So it is better to fix the kernel to reduce the amount of log.
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ERROR_CODE__EVENT__SHUTDOWN_UMOUNT_STAT,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
+                    FrameworkStatsLog.BOOT_TIME_EVENT_ERROR_CODE__EVENT__SHUTDOWN_UMOUNT_STAT,
                     UMOUNT_STATUS_NOT_AVAILABLE);
             Slog.w(TAG, "boot_fs_shutdown, string not found");
         }
@@ -694,8 +699,9 @@
         }
         stat = fixFsckFsStat(partition, stat, lines, startLineNumber, endLineNumber);
         if ("userdata".equals(partition) || "data".equals(partition)) {
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ERROR_CODE__EVENT__FS_MGR_FS_STAT_DATA_PARTITION,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ERROR_CODE_REPORTED,
+                    FrameworkStatsLog
+                            .BOOT_TIME_EVENT_ERROR_CODE__EVENT__FS_MGR_FS_STAT_DATA_PARTITION,
                     stat);
         }
         Slog.i(TAG, "fs_stat, partition:" + partition + " stat:0x" + Integer.toHexString(stat));
diff --git a/core/java/com/android/server/SystemConfig.java b/core/java/com/android/server/SystemConfig.java
index 74b481c..578c0cc 100644
--- a/core/java/com/android/server/SystemConfig.java
+++ b/core/java/com/android/server/SystemConfig.java
@@ -29,6 +29,7 @@
 import android.os.Process;
 import android.os.SystemProperties;
 import android.os.Trace;
+import android.os.incremental.IncrementalManager;
 import android.os.storage.StorageManager;
 import android.permission.PermissionManager.SplitPermissionInfo;
 import android.text.TextUtils;
@@ -902,7 +903,6 @@
                     } break;
                     case "component-override": {
                         readComponentOverrides(parser, permFile);
-                        XmlUtils.skipCurrentTag(parser);
                     } break;
                     case "backup-transport-whitelisted-service": {
                         if (allowFeatures) {
@@ -1156,6 +1156,10 @@
             addFeature(PackageManager.FEATURE_RAM_NORMAL, 0);
         }
 
+        if (IncrementalManager.isFeatureEnabled()) {
+            addFeature(PackageManager.FEATURE_INCREMENTAL_DELIVERY, 0);
+        }
+
         for (String featureName : mUnavailableFeatures) {
             removeFeature(featureName);
         }
@@ -1398,8 +1402,7 @@
 
         final int depth = parser.getDepth();
         while (XmlUtils.nextElementWithin(parser, depth)) {
-            String name = parser.getName();
-            if ("component".equals(name)) {
+            if ("component".equals(parser.getName())) {
                 String clsname = parser.getAttributeValue(null, "class");
                 String enabled = parser.getAttributeValue(null, "enabled");
                 if (clsname == null) {
@@ -1427,8 +1430,6 @@
                 }
 
                 componentEnabledStates.put(clsname, !"false".equals(enabled));
-            } else {
-                XmlUtils.skipCurrentTag(parser);
             }
         }
     }
diff --git a/core/jni/Android.bp b/core/jni/Android.bp
index a2f514a..30d0d1d 100644
--- a/core/jni/Android.bp
+++ b/core/jni/Android.bp
@@ -35,8 +35,14 @@
         "android_animation_PropertyValuesHolder.cpp",
         "android_os_SystemClock.cpp",
         "android_os_SystemProperties.cpp",
+        "android_os_Trace.cpp",
+        "android_text_AndroidCharacter.cpp",
         "android_util_EventLog.cpp",
         "android_util_Log.cpp",
+        "android_util_StringBlock.cpp",
+        "android_util_XmlBlock.cpp",
+        "android_util_jar_StrictJarFile.cpp",
+        "android_view_RenderNodeAnimator.cpp",
         "com_android_internal_util_VirtualRefBasePtr.cpp",
         "com_android_internal_view_animation_NativeInterpolatorFactoryHelper.cpp",
     ],
@@ -114,14 +120,14 @@
                 "android_view_KeyEvent.cpp",
                 "android_view_MotionEvent.cpp",
                 "android_view_PointerIcon.cpp",
-                "android_view_RenderNodeAnimator.cpp",
                 "android_view_Surface.cpp",
                 "android_view_SurfaceControl.cpp",
                 "android_graphics_BLASTBufferQueue.cpp",
                 "android_view_SurfaceSession.cpp",
                 "android_view_TextureView.cpp",
                 "android_view_VelocityTracker.cpp",
-                "android_text_AndroidCharacter.cpp",
+                "android_view_VerifiedKeyEvent.cpp",
+                "android_view_VerifiedMotionEvent.cpp",
                 "android_text_Hyphenator.cpp",
                 "android_os_Debug.cpp",
                 "android_os_GraphicsEnvironment.cpp",
@@ -137,7 +143,7 @@
                 "android_os_Parcel.cpp",
                 "android_os_SELinux.cpp",
                 "android_os_SharedMemory.cpp",
-                "android_os_Trace.cpp",
+                "android_os_storage_StorageManager.cpp",
                 "android_os_UEventObserver.cpp",
                 "android_os_VintfObject.cpp",
                 "android_os_VintfRuntimeInfo.cpp",
@@ -147,13 +153,9 @@
                 "android_service_DataLoaderService.cpp",
                 "android_util_AssetManager.cpp",
                 "android_util_Binder.cpp",
-                "android_util_StatsLog.cpp",
                 "android_util_MemoryIntArray.cpp",
                 "android_util_Process.cpp",
-                "android_util_StringBlock.cpp",
-                "android_util_XmlBlock.cpp",
-                "android_util_jar_StrictJarFile.cpp",
-                "android_media_AudioDeviceAddress.cpp",
+                "android_media_AudioDevice.cpp",
                 "android_media_AudioEffectDescriptor.cpp",
                 "android_media_AudioRecord.cpp",
                 "android_media_AudioSystem.cpp",
@@ -182,6 +184,7 @@
                 "android_hardware_UsbRequest.cpp",
                 "android_hardware_location_ActivityRecognitionHardware.cpp",
                 "android_util_FileObserver.cpp",
+                "android/graphics/GraphicsStatsService.cpp",
                 "android/graphics/SurfaceTexture.cpp",
                 "android/opengl/poly_clip.cpp", // TODO: .arm
                 "android/opengl/util.cpp",
@@ -208,6 +211,7 @@
 
             static_libs: [
                 "libasync_safe",
+                "libbinderthreadstateutils",
                 "libdmabufinfo",
                 "libgif",
                 "libseccomp_policy",
@@ -269,8 +273,10 @@
                 "libnativewindow",
                 "libdl",
                 "libdl_android",
+                "libstats_jni",
                 "libstatslog",
                 "server_configurable_flags",
+                "libstatspull",
             ],
             export_shared_lib_headers: [
                 // AndroidRuntime.h depends on nativehelper/jni.h
@@ -310,11 +316,8 @@
             srcs: [
                 "android_content_res_ApkAssets.cpp",
                 "android_os_MessageQueue.cpp",
-                "android_os_Trace.cpp",
                 "android_util_AssetManager.cpp",
                 "android_util_FileObserver.cpp",
-                "android_util_StringBlock.cpp",
-                "android_util_XmlBlock.cpp",
             ],
         },
     },
@@ -359,7 +362,6 @@
         "android_view_RenderNode.cpp",
         "android_util_PathParser.cpp",
 
-        "android/graphics/AnimatedImageDrawable.cpp",
         "android/graphics/Bitmap.cpp",
         "android/graphics/BitmapFactory.cpp",
         "android/graphics/ByteBufferStreamAdaptor.cpp",
@@ -435,6 +437,7 @@
 
                 "android_view_TextureLayer.cpp",
                 "android_view_ThreadedRenderer.cpp",
+                "android/graphics/AnimatedImageDrawable.cpp",
                 "android/graphics/BitmapRegionDecoder.cpp",
                 "android/graphics/GIFMovie.cpp",
                 "android/graphics/Movie.cpp",
diff --git a/core/jni/AndroidRuntime.cpp b/core/jni/AndroidRuntime.cpp
index 9783b65..0b1c8b7 100644
--- a/core/jni/AndroidRuntime.cpp
+++ b/core/jni/AndroidRuntime.cpp
@@ -86,7 +86,7 @@
 extern int register_android_hardware_UsbRequest(JNIEnv *env);
 extern int register_android_hardware_location_ActivityRecognitionHardware(JNIEnv* env);
 
-extern int register_android_media_AudioDeviceAddress(JNIEnv *env);
+extern int register_android_media_AudioDevice(JNIEnv* env);
 extern int register_android_media_AudioEffectDescriptor(JNIEnv *env);
 extern int register_android_media_AudioRecord(JNIEnv *env);
 extern int register_android_media_AudioSystem(JNIEnv *env);
@@ -144,6 +144,7 @@
 extern int register_android_os_SELinux(JNIEnv* env);
 extern int register_android_os_VintfObject(JNIEnv *env);
 extern int register_android_os_VintfRuntimeInfo(JNIEnv *env);
+extern int register_android_os_storage_StorageManager(JNIEnv* env);
 extern int register_android_os_SystemProperties(JNIEnv *env);
 extern int register_android_os_SystemClock(JNIEnv* env);
 extern int register_android_os_Trace(JNIEnv* env);
@@ -181,6 +182,8 @@
 extern int register_android_view_MotionEvent(JNIEnv* env);
 extern int register_android_view_PointerIcon(JNIEnv* env);
 extern int register_android_view_VelocityTracker(JNIEnv* env);
+extern int register_android_view_VerifiedKeyEvent(JNIEnv* env);
+extern int register_android_view_VerifiedMotionEvent(JNIEnv* env);
 extern int register_android_content_res_ObbScanner(JNIEnv* env);
 extern int register_android_content_res_Configuration(JNIEnv* env);
 extern int register_android_animation_PropertyValuesHolder(JNIEnv *env);
@@ -208,9 +211,11 @@
 static const char* PROFILE_BOOT_CLASS_PATH = "profilebootclasspath";
 
 // Feature flag name for running the JIT in Zygote experiment, b/119800099.
-static const char* ENABLE_APEX_IMAGE = "enable_apex_image";
-// Flag to pass to the runtime when using the apex image.
-static const char* kApexImageOption = "-Ximage:/system/framework/apex.art";
+// TODO: Rename the server-level flag or remove.
+static const char* ENABLE_JITZYGOTE_IMAGE = "enable_apex_image";
+// Flag to pass to the runtime when using the JIT Zygote image.
+static const char* kJitZygoteImageOption =
+        "-Ximage:boot.art:/nonx/boot-framework.art!/system/etc/boot-image.prof";
 
 // Feature flag name for disabling lock profiling.
 static const char* DISABLE_LOCK_PROFILING = "disable_lock_profiling";
@@ -622,17 +627,19 @@
     char jitprithreadweightOptBuf[sizeof("-Xjitprithreadweight:")-1 + PROPERTY_VALUE_MAX];
     char jittransitionweightOptBuf[sizeof("-Xjittransitionweight:")-1 + PROPERTY_VALUE_MAX];
     char hotstartupsamplesOptsBuf[sizeof("-Xps-hot-startup-method-samples:")-1 + PROPERTY_VALUE_MAX];
+    char saveResolvedClassesDelayMsOptsBuf[
+            sizeof("-Xps-save-resolved-classes-delay-ms:")-1 + PROPERTY_VALUE_MAX];
     char madviseRandomOptsBuf[sizeof("-XX:MadviseRandomAccess:")-1 + PROPERTY_VALUE_MAX];
     char gctypeOptsBuf[sizeof("-Xgc:")-1 + PROPERTY_VALUE_MAX];
     char backgroundgcOptsBuf[sizeof("-XX:BackgroundGC=")-1 + PROPERTY_VALUE_MAX];
     char heaptargetutilizationOptsBuf[sizeof("-XX:HeapTargetUtilization=")-1 + PROPERTY_VALUE_MAX];
     char foregroundHeapGrowthMultiplierOptsBuf[
             sizeof("-XX:ForegroundHeapGrowthMultiplier=")-1 + PROPERTY_VALUE_MAX];
+    char finalizerTimeoutMsOptsBuf[sizeof("-XX:FinalizerTimeoutMs=")-1 + PROPERTY_VALUE_MAX];
+    char threadSuspendTimeoutOptsBuf[sizeof("-XX:ThreadSuspendTimeout=")-1 + PROPERTY_VALUE_MAX];
     char cachePruneBuf[sizeof("-Xzygote-max-boot-retry=")-1 + PROPERTY_VALUE_MAX];
     char dex2oatXmsImageFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX];
     char dex2oatXmxImageFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX];
-    char dex2oatXmsFlagsBuf[sizeof("-Xms")-1 + PROPERTY_VALUE_MAX];
-    char dex2oatXmxFlagsBuf[sizeof("-Xmx")-1 + PROPERTY_VALUE_MAX];
     char dex2oatCompilerFilterBuf[sizeof("--compiler-filter=")-1 + PROPERTY_VALUE_MAX];
     char dex2oatImageCompilerFilterBuf[sizeof("--compiler-filter=")-1 + PROPERTY_VALUE_MAX];
     char dex2oatThreadsBuf[sizeof("-j")-1 + PROPERTY_VALUE_MAX];
@@ -686,16 +693,16 @@
         addOption("-Xjitsaveprofilinginfo");
     }
 
-    std::string use_apex_image_flag =
-        server_configurable_flags::GetServerConfigurableFlag(RUNTIME_NATIVE_BOOT_NAMESPACE,
-                                                             ENABLE_APEX_IMAGE,
-                                                             /*default_value=*/ "");
+    std::string use_jitzygote_image_flag =
+            server_configurable_flags::GetServerConfigurableFlag(RUNTIME_NATIVE_BOOT_NAMESPACE,
+                                                                 ENABLE_JITZYGOTE_IMAGE,
+                                                                 /*default_value=*/"");
     // Use the APEX boot image for boot class path profiling to get JIT samples on BCP methods.
     // Also use the APEX boot image if it's explicitly enabled via configuration flag.
-    const bool use_apex_image = profile_boot_class_path || (use_apex_image_flag == "true");
+    const bool use_apex_image = profile_boot_class_path || (use_jitzygote_image_flag == "true");
     if (use_apex_image) {
-        addOption(kApexImageOption);
-        ALOGI("Using Apex boot image: '%s'\n", kApexImageOption);
+        ALOGI("Using JIT Zygote image: '%s'\n", kJitZygoteImageOption);
+        addOption(kJitZygoteImageOption);
     } else if (parseRuntimeOption("dalvik.vm.boot-image", bootImageBuf, "-Ximage:")) {
         ALOGI("Using dalvik.vm.boot-image: '%s'\n", bootImageBuf);
     } else {
@@ -783,7 +790,15 @@
     parseRuntimeOption("dalvik.vm.foreground-heap-growth-multiplier",
                        foregroundHeapGrowthMultiplierOptsBuf,
                        "-XX:ForegroundHeapGrowthMultiplier=");
-
+    /*
+     * Finalizer and thread suspend timeouts.
+     */
+    parseRuntimeOption("dalvik.vm.finalizer-timeout-ms",
+                       finalizerTimeoutMsOptsBuf,
+                       "-XX:FinalizerTimeoutMs=");
+    parseRuntimeOption("dalvik.vm.thread-suspend-timeout-ms",
+                       threadSuspendTimeoutOptsBuf,
+                       "-XX:ThreadSuspendTimeout=");
     /*
      * JIT related options.
      */
@@ -817,6 +832,9 @@
     parseRuntimeOption("dalvik.vm.hot-startup-method-samples", hotstartupsamplesOptsBuf,
             "-Xps-hot-startup-method-samples:");
 
+    parseRuntimeOption("dalvik.vm.ps-resolved-classes-delay-ms", saveResolvedClassesDelayMsOptsBuf,
+            "-Xps-save-resolved-classes-delay-ms:");
+
     property_get("ro.config.low_ram", propBuf, "");
     if (strcmp(propBuf, "true") == 0) {
       addOption("-XX:LowMemoryMode");
@@ -879,88 +897,45 @@
     bool skip_compilation = ((strcmp(voldDecryptBuf, "trigger_restart_min_framework") == 0) ||
                              (strcmp(voldDecryptBuf, "1") == 0));
 
-    // Extra options for boot.art/boot.oat image generation.
-    parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xms", dex2oatXmsImageFlagsBuf,
-                               "-Xms", "-Ximage-compiler-option");
-    parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xmx", dex2oatXmxImageFlagsBuf,
-                               "-Xmx", "-Ximage-compiler-option");
-    if (skip_compilation) {
-        addOption("-Ximage-compiler-option");
-        addOption("--compiler-filter=assume-verified");
-    } else {
-        parseCompilerOption("dalvik.vm.image-dex2oat-filter", dex2oatImageCompilerFilterBuf,
-                            "--compiler-filter=", "-Ximage-compiler-option");
-    }
-
-    // If there is a boot profile, it takes precedence over the image and preloaded classes.
-    if (hasFile("/system/etc/boot-image.prof")) {
-        addOption("-Ximage-compiler-option");
-        addOption("--profile-file=/system/etc/boot-image.prof");
-        addOption("-Ximage-compiler-option");
-        addOption("--compiler-filter=speed-profile");
-    } else {
-        ALOGE("Missing boot-image.prof file, /system/etc/boot-image.prof not found: %s\n",
-              strerror(errno));
-        return -1;
-    }
-
-
-    // If there is a dirty-image-objects file, push it.
-    if (hasFile("/system/etc/dirty-image-objects")) {
-        addOption("-Ximage-compiler-option");
-        addOption("--dirty-image-objects=/system/etc/dirty-image-objects");
-    }
-
-    property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, "");
-    parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option");
-
-    // Extra options for DexClassLoader.
-    parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xms", dex2oatXmsFlagsBuf,
-                               "-Xms", "-Xcompiler-option");
-    parseCompilerRuntimeOption("dalvik.vm.dex2oat-Xmx", dex2oatXmxFlagsBuf,
-                               "-Xmx", "-Xcompiler-option");
+    // Extra options for JIT.
     if (skip_compilation) {
         addOption("-Xcompiler-option");
         addOption("--compiler-filter=assume-verified");
-
-        // We skip compilation when a minimal runtime is brought up for decryption. In that case
-        // /data is temporarily backed by a tmpfs, which is usually small.
-        // If the system image contains prebuilts, they will be relocated into the tmpfs. In this
-        // specific situation it is acceptable to *not* relocate and run out of the prebuilts
-        // directly instead.
-        addOption("--runtime-arg");
-        addOption("-Xnorelocate");
     } else {
         parseCompilerOption("dalvik.vm.dex2oat-filter", dex2oatCompilerFilterBuf,
                             "--compiler-filter=", "-Xcompiler-option");
     }
     parseCompilerOption("dalvik.vm.dex2oat-threads", dex2oatThreadsBuf, "-j", "-Xcompiler-option");
-    parseCompilerOption("dalvik.vm.image-dex2oat-threads", dex2oatThreadsImageBuf, "-j",
-                        "-Ximage-compiler-option");
     parseCompilerOption("dalvik.vm.dex2oat-cpu-set", dex2oatCpuSetBuf, "--cpu-set=",
                         "-Xcompiler-option");
-    parseCompilerOption("dalvik.vm.image-dex2oat-cpu-set", dex2oatCpuSetImageBuf, "--cpu-set=",
-                        "-Ximage-compiler-option");
-
-    // The runtime will compile a boot image, when necessary, not using installd. Thus, we need to
-    // pass the instruction-set-features/variant as an image-compiler-option.
-    // Note: it is OK to reuse the buffer, as the values are exactly the same between
-    //       * compiler-option, used for runtime compilation (DexClassLoader)
-    //       * image-compiler-option, used for boot-image compilation on device
 
     // Copy the variant.
     sprintf(dex2oat_isa_variant_key, "dalvik.vm.isa.%s.variant", ABI_STRING);
     parseCompilerOption(dex2oat_isa_variant_key, dex2oat_isa_variant,
-                        "--instruction-set-variant=", "-Ximage-compiler-option");
-    parseCompilerOption(dex2oat_isa_variant_key, dex2oat_isa_variant,
                         "--instruction-set-variant=", "-Xcompiler-option");
     // Copy the features.
     sprintf(dex2oat_isa_features_key, "dalvik.vm.isa.%s.features", ABI_STRING);
     parseCompilerOption(dex2oat_isa_features_key, dex2oat_isa_features,
-                        "--instruction-set-features=", "-Ximage-compiler-option");
-    parseCompilerOption(dex2oat_isa_features_key, dex2oat_isa_features,
                         "--instruction-set-features=", "-Xcompiler-option");
 
+    /*
+     * When running with debug.generate-debug-info, add --generate-debug-info to
+     * the compiler options so that both JITted code and the boot image extension,
+     * if it is compiled on device, will include native debugging information.
+     */
+    property_get("debug.generate-debug-info", propBuf, "");
+    bool generate_debug_info = (strcmp(propBuf, "true") == 0);
+    if (generate_debug_info) {
+        addOption("-Xcompiler-option");
+        addOption("--generate-debug-info");
+    }
+
+    // The mini-debug-info makes it possible to backtrace through compiled code.
+    bool generate_mini_debug_info = property_get_bool("dalvik.vm.minidebuginfo", 0);
+    if (generate_mini_debug_info) {
+        addOption("-Xcompiler-option");
+        addOption("--generate-mini-debug-info");
+    }
 
     property_get("dalvik.vm.dex2oat-flags", dex2oatFlagsBuf, "");
     parseExtraOpts(dex2oatFlagsBuf, "-Xcompiler-option");
@@ -969,6 +944,53 @@
     property_get("dalvik.vm.extra-opts", extraOptsBuf, "");
     parseExtraOpts(extraOptsBuf, NULL);
 
+    // Extra options for boot image extension generation.
+    if (skip_compilation) {
+        addOption("-Xnoimage-dex2oat");
+    } else {
+        parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xms", dex2oatXmsImageFlagsBuf,
+                                   "-Xms", "-Ximage-compiler-option");
+        parseCompilerRuntimeOption("dalvik.vm.image-dex2oat-Xmx", dex2oatXmxImageFlagsBuf,
+                                   "-Xmx", "-Ximage-compiler-option");
+
+        parseCompilerOption("dalvik.vm.image-dex2oat-filter", dex2oatImageCompilerFilterBuf,
+                            "--compiler-filter=", "-Ximage-compiler-option");
+
+        // If there is a dirty-image-objects file, push it.
+        if (hasFile("/system/etc/dirty-image-objects")) {
+            addOption("-Ximage-compiler-option");
+            addOption("--dirty-image-objects=/system/etc/dirty-image-objects");
+        }
+
+        parseCompilerOption("dalvik.vm.image-dex2oat-threads", dex2oatThreadsImageBuf, "-j",
+                            "-Ximage-compiler-option");
+        parseCompilerOption("dalvik.vm.image-dex2oat-cpu-set", dex2oatCpuSetImageBuf, "--cpu-set=",
+                            "-Ximage-compiler-option");
+
+        // The runtime may compile a boot image extension, when necessary, not using installd.
+        // Thus, we need to pass the instruction-set-features/variant as an image-compiler-option.
+        // Note: it is OK to reuse the buffer, as the values are exactly the same between
+        //       * compiler-option, used for runtime compilation (DexClassLoader)
+        //       * image-compiler-option, used for boot-image compilation on device
+        parseCompilerOption(dex2oat_isa_variant_key, dex2oat_isa_variant,
+                            "--instruction-set-variant=", "-Ximage-compiler-option");
+        parseCompilerOption(dex2oat_isa_features_key, dex2oat_isa_features,
+                            "--instruction-set-features=", "-Ximage-compiler-option");
+
+        if (generate_debug_info) {
+            addOption("-Ximage-compiler-option");
+            addOption("--generate-debug-info");
+        }
+
+        if (generate_mini_debug_info) {
+            addOption("-Ximage-compiler-option");
+            addOption("--generate-mini-debug-info");
+        }
+
+        property_get("dalvik.vm.image-dex2oat-flags", dex2oatImageFlagsBuf, "");
+        parseExtraOpts(dex2oatImageFlagsBuf, "-Ximage-compiler-option");
+    }
+
     /* Set the properties for locale */
     {
         strcpy(localeOption, "-Duser.locale=");
@@ -1026,25 +1048,6 @@
     parseRuntimeOption("dalvik.vm.zygote.max-boot-retry", cachePruneBuf,
                        "-Xzygote-max-boot-retry=");
 
-    /*
-     * When running with debug.generate-debug-info, add --generate-debug-info to
-     * the compiler options so that the boot image, if it is compiled on device,
-     * will include native debugging information.
-     */
-    property_get("debug.generate-debug-info", propBuf, "");
-    if (strcmp(propBuf, "true") == 0) {
-        addOption("-Xcompiler-option");
-        addOption("--generate-debug-info");
-        addOption("-Ximage-compiler-option");
-        addOption("--generate-debug-info");
-    }
-
-    // The mini-debug-info makes it possible to backtrace through JIT code.
-    if (property_get_bool("dalvik.vm.minidebuginfo", 0)) {
-        addOption("-Xcompiler-option");
-        addOption("--generate-mini-debug-info");
-    }
-
     // If set, the property below can be used to enable core platform API violation reporting.
     property_get("persist.debug.dalvik.vm.core_platform_api_policy", propBuf, "");
     if (propBuf[0] != '\0') {
@@ -1435,139 +1438,142 @@
 }
 
 static const RegJNIRec gRegJNI[] = {
-    REG_JNI(register_com_android_internal_os_RuntimeInit),
-    REG_JNI(register_com_android_internal_os_ZygoteInit_nativeZygoteInit),
-    REG_JNI(register_android_os_SystemClock),
-    REG_JNI(register_android_util_EventLog),
-    REG_JNI(register_android_util_Log),
-    REG_JNI(register_android_util_MemoryIntArray),
-    REG_JNI(register_android_util_StatsLog),
-    REG_JNI(register_android_util_StatsLogInternal),
-    REG_JNI(register_android_app_admin_SecurityLog),
-    REG_JNI(register_android_content_AssetManager),
-    REG_JNI(register_android_content_StringBlock),
-    REG_JNI(register_android_content_XmlBlock),
-    REG_JNI(register_android_content_res_ApkAssets),
-    REG_JNI(register_android_text_AndroidCharacter),
-    REG_JNI(register_android_text_Hyphenator),
-    REG_JNI(register_android_view_InputDevice),
-    REG_JNI(register_android_view_KeyCharacterMap),
-    REG_JNI(register_android_os_Process),
-    REG_JNI(register_android_os_SystemProperties),
-    REG_JNI(register_android_os_Binder),
-    REG_JNI(register_android_os_Parcel),
-    REG_JNI(register_android_os_HidlMemory),
-    REG_JNI(register_android_os_HidlSupport),
-    REG_JNI(register_android_os_HwBinder),
-    REG_JNI(register_android_os_HwBlob),
-    REG_JNI(register_android_os_HwParcel),
-    REG_JNI(register_android_os_HwRemoteBinder),
-    REG_JNI(register_android_os_NativeHandle),
-    REG_JNI(register_android_os_VintfObject),
-    REG_JNI(register_android_os_VintfRuntimeInfo),
-    REG_JNI(register_android_service_DataLoaderService),
-    REG_JNI(register_android_view_DisplayEventReceiver),
-    REG_JNI(register_android_view_RenderNodeAnimator),
-    REG_JNI(register_android_view_InputApplicationHandle),
-    REG_JNI(register_android_view_InputWindowHandle),
-    REG_JNI(register_android_view_Surface),
-    REG_JNI(register_android_view_SurfaceControl),
-    REG_JNI(register_android_view_SurfaceSession),
-    REG_JNI(register_android_view_CompositionSamplingListener),
-    REG_JNI(register_android_view_TextureView),
-    REG_JNI(register_com_android_internal_view_animation_NativeInterpolatorFactoryHelper),
-    REG_JNI(register_com_google_android_gles_jni_EGLImpl),
-    REG_JNI(register_com_google_android_gles_jni_GLImpl),
-    REG_JNI(register_android_opengl_jni_EGL14),
-    REG_JNI(register_android_opengl_jni_EGL15),
-    REG_JNI(register_android_opengl_jni_EGLExt),
-    REG_JNI(register_android_opengl_jni_GLES10),
-    REG_JNI(register_android_opengl_jni_GLES10Ext),
-    REG_JNI(register_android_opengl_jni_GLES11),
-    REG_JNI(register_android_opengl_jni_GLES11Ext),
-    REG_JNI(register_android_opengl_jni_GLES20),
-    REG_JNI(register_android_opengl_jni_GLES30),
-    REG_JNI(register_android_opengl_jni_GLES31),
-    REG_JNI(register_android_opengl_jni_GLES31Ext),
-    REG_JNI(register_android_opengl_jni_GLES32),
-    REG_JNI(register_android_graphics_classes),
-    REG_JNI(register_android_graphics_BLASTBufferQueue),
-    REG_JNI(register_android_graphics_GraphicBuffer),
-    REG_JNI(register_android_database_CursorWindow),
-    REG_JNI(register_android_database_SQLiteConnection),
-    REG_JNI(register_android_database_SQLiteGlobal),
-    REG_JNI(register_android_database_SQLiteDebug),
-    REG_JNI(register_android_os_Debug),
-    REG_JNI(register_android_os_FileObserver),
-    REG_JNI(register_android_os_GraphicsEnvironment),
-    REG_JNI(register_android_os_MessageQueue),
-    REG_JNI(register_android_os_SELinux),
-    REG_JNI(register_android_os_Trace),
-    REG_JNI(register_android_os_UEventObserver),
-    REG_JNI(register_android_net_LocalSocketImpl),
-    REG_JNI(register_android_net_NetworkUtils),
-    REG_JNI(register_android_os_MemoryFile),
-    REG_JNI(register_android_os_SharedMemory),
-    REG_JNI(register_android_os_incremental_IncrementalManager),
-    REG_JNI(register_com_android_internal_os_ClassLoaderFactory),
-    REG_JNI(register_com_android_internal_os_Zygote),
-    REG_JNI(register_com_android_internal_os_ZygoteInit),
-    REG_JNI(register_com_android_internal_util_VirtualRefBasePtr),
-    REG_JNI(register_android_hardware_Camera),
-    REG_JNI(register_android_hardware_camera2_CameraMetadata),
-    REG_JNI(register_android_hardware_camera2_legacy_LegacyCameraDevice),
-    REG_JNI(register_android_hardware_camera2_legacy_PerfMeasurement),
-    REG_JNI(register_android_hardware_camera2_DngCreator),
-    REG_JNI(register_android_hardware_HardwareBuffer),
-    REG_JNI(register_android_hardware_SensorManager),
-    REG_JNI(register_android_hardware_SerialPort),
-    REG_JNI(register_android_hardware_UsbDevice),
-    REG_JNI(register_android_hardware_UsbDeviceConnection),
-    REG_JNI(register_android_hardware_UsbRequest),
-    REG_JNI(register_android_hardware_location_ActivityRecognitionHardware),
-    REG_JNI(register_android_media_AudioDeviceAddress),
-    REG_JNI(register_android_media_AudioEffectDescriptor),
-    REG_JNI(register_android_media_AudioSystem),
-    REG_JNI(register_android_media_AudioRecord),
-    REG_JNI(register_android_media_AudioTrack),
-    REG_JNI(register_android_media_AudioAttributes),
-    REG_JNI(register_android_media_AudioProductStrategies),
-    REG_JNI(register_android_media_AudioVolumeGroups),
-    REG_JNI(register_android_media_AudioVolumeGroupChangeHandler),
-    REG_JNI(register_android_media_MediaMetrics),
-    REG_JNI(register_android_media_MicrophoneInfo),
-    REG_JNI(register_android_media_RemoteDisplay),
-    REG_JNI(register_android_media_ToneGenerator),
-    REG_JNI(register_android_media_midi),
+        REG_JNI(register_com_android_internal_os_RuntimeInit),
+        REG_JNI(register_com_android_internal_os_ZygoteInit_nativeZygoteInit),
+        REG_JNI(register_android_os_SystemClock),
+        REG_JNI(register_android_util_EventLog),
+        REG_JNI(register_android_util_Log),
+        REG_JNI(register_android_util_MemoryIntArray),
+        REG_JNI(register_android_util_StatsLog),
+        REG_JNI(register_android_util_StatsLogInternal),
+        REG_JNI(register_android_app_admin_SecurityLog),
+        REG_JNI(register_android_content_AssetManager),
+        REG_JNI(register_android_content_StringBlock),
+        REG_JNI(register_android_content_XmlBlock),
+        REG_JNI(register_android_content_res_ApkAssets),
+        REG_JNI(register_android_text_AndroidCharacter),
+        REG_JNI(register_android_text_Hyphenator),
+        REG_JNI(register_android_view_InputDevice),
+        REG_JNI(register_android_view_KeyCharacterMap),
+        REG_JNI(register_android_os_Process),
+        REG_JNI(register_android_os_SystemProperties),
+        REG_JNI(register_android_os_Binder),
+        REG_JNI(register_android_os_Parcel),
+        REG_JNI(register_android_os_HidlMemory),
+        REG_JNI(register_android_os_HidlSupport),
+        REG_JNI(register_android_os_HwBinder),
+        REG_JNI(register_android_os_HwBlob),
+        REG_JNI(register_android_os_HwParcel),
+        REG_JNI(register_android_os_HwRemoteBinder),
+        REG_JNI(register_android_os_NativeHandle),
+        REG_JNI(register_android_os_storage_StorageManager),
+        REG_JNI(register_android_os_VintfObject),
+        REG_JNI(register_android_os_VintfRuntimeInfo),
+        REG_JNI(register_android_service_DataLoaderService),
+        REG_JNI(register_android_view_DisplayEventReceiver),
+        REG_JNI(register_android_view_RenderNodeAnimator),
+        REG_JNI(register_android_view_InputApplicationHandle),
+        REG_JNI(register_android_view_InputWindowHandle),
+        REG_JNI(register_android_view_Surface),
+        REG_JNI(register_android_view_SurfaceControl),
+        REG_JNI(register_android_view_SurfaceSession),
+        REG_JNI(register_android_view_CompositionSamplingListener),
+        REG_JNI(register_android_view_TextureView),
+        REG_JNI(register_com_android_internal_view_animation_NativeInterpolatorFactoryHelper),
+        REG_JNI(register_com_google_android_gles_jni_EGLImpl),
+        REG_JNI(register_com_google_android_gles_jni_GLImpl),
+        REG_JNI(register_android_opengl_jni_EGL14),
+        REG_JNI(register_android_opengl_jni_EGL15),
+        REG_JNI(register_android_opengl_jni_EGLExt),
+        REG_JNI(register_android_opengl_jni_GLES10),
+        REG_JNI(register_android_opengl_jni_GLES10Ext),
+        REG_JNI(register_android_opengl_jni_GLES11),
+        REG_JNI(register_android_opengl_jni_GLES11Ext),
+        REG_JNI(register_android_opengl_jni_GLES20),
+        REG_JNI(register_android_opengl_jni_GLES30),
+        REG_JNI(register_android_opengl_jni_GLES31),
+        REG_JNI(register_android_opengl_jni_GLES31Ext),
+        REG_JNI(register_android_opengl_jni_GLES32),
+        REG_JNI(register_android_graphics_classes),
+        REG_JNI(register_android_graphics_BLASTBufferQueue),
+        REG_JNI(register_android_graphics_GraphicBuffer),
+        REG_JNI(register_android_database_CursorWindow),
+        REG_JNI(register_android_database_SQLiteConnection),
+        REG_JNI(register_android_database_SQLiteGlobal),
+        REG_JNI(register_android_database_SQLiteDebug),
+        REG_JNI(register_android_os_Debug),
+        REG_JNI(register_android_os_FileObserver),
+        REG_JNI(register_android_os_GraphicsEnvironment),
+        REG_JNI(register_android_os_MessageQueue),
+        REG_JNI(register_android_os_SELinux),
+        REG_JNI(register_android_os_Trace),
+        REG_JNI(register_android_os_UEventObserver),
+        REG_JNI(register_android_net_LocalSocketImpl),
+        REG_JNI(register_android_net_NetworkUtils),
+        REG_JNI(register_android_os_MemoryFile),
+        REG_JNI(register_android_os_SharedMemory),
+        REG_JNI(register_android_os_incremental_IncrementalManager),
+        REG_JNI(register_com_android_internal_os_ClassLoaderFactory),
+        REG_JNI(register_com_android_internal_os_Zygote),
+        REG_JNI(register_com_android_internal_os_ZygoteInit),
+        REG_JNI(register_com_android_internal_util_VirtualRefBasePtr),
+        REG_JNI(register_android_hardware_Camera),
+        REG_JNI(register_android_hardware_camera2_CameraMetadata),
+        REG_JNI(register_android_hardware_camera2_legacy_LegacyCameraDevice),
+        REG_JNI(register_android_hardware_camera2_legacy_PerfMeasurement),
+        REG_JNI(register_android_hardware_camera2_DngCreator),
+        REG_JNI(register_android_hardware_HardwareBuffer),
+        REG_JNI(register_android_hardware_SensorManager),
+        REG_JNI(register_android_hardware_SerialPort),
+        REG_JNI(register_android_hardware_UsbDevice),
+        REG_JNI(register_android_hardware_UsbDeviceConnection),
+        REG_JNI(register_android_hardware_UsbRequest),
+        REG_JNI(register_android_hardware_location_ActivityRecognitionHardware),
+        REG_JNI(register_android_media_AudioDevice),
+        REG_JNI(register_android_media_AudioEffectDescriptor),
+        REG_JNI(register_android_media_AudioSystem),
+        REG_JNI(register_android_media_AudioRecord),
+        REG_JNI(register_android_media_AudioTrack),
+        REG_JNI(register_android_media_AudioAttributes),
+        REG_JNI(register_android_media_AudioProductStrategies),
+        REG_JNI(register_android_media_AudioVolumeGroups),
+        REG_JNI(register_android_media_AudioVolumeGroupChangeHandler),
+        REG_JNI(register_android_media_MediaMetrics),
+        REG_JNI(register_android_media_MicrophoneInfo),
+        REG_JNI(register_android_media_RemoteDisplay),
+        REG_JNI(register_android_media_ToneGenerator),
+        REG_JNI(register_android_media_midi),
 
-    REG_JNI(register_android_opengl_classes),
-    REG_JNI(register_android_server_NetworkManagementSocketTagger),
-    REG_JNI(register_android_ddm_DdmHandleNativeHeap),
-    REG_JNI(register_android_backup_BackupDataInput),
-    REG_JNI(register_android_backup_BackupDataOutput),
-    REG_JNI(register_android_backup_FileBackupHelperBase),
-    REG_JNI(register_android_backup_BackupHelperDispatcher),
-    REG_JNI(register_android_app_backup_FullBackup),
-    REG_JNI(register_android_app_Activity),
-    REG_JNI(register_android_app_ActivityThread),
-    REG_JNI(register_android_app_NativeActivity),
-    REG_JNI(register_android_util_jar_StrictJarFile),
-    REG_JNI(register_android_view_InputChannel),
-    REG_JNI(register_android_view_InputEventReceiver),
-    REG_JNI(register_android_view_InputEventSender),
-    REG_JNI(register_android_view_InputQueue),
-    REG_JNI(register_android_view_KeyEvent),
-    REG_JNI(register_android_view_MotionEvent),
-    REG_JNI(register_android_view_PointerIcon),
-    REG_JNI(register_android_view_VelocityTracker),
+        REG_JNI(register_android_opengl_classes),
+        REG_JNI(register_android_server_NetworkManagementSocketTagger),
+        REG_JNI(register_android_ddm_DdmHandleNativeHeap),
+        REG_JNI(register_android_backup_BackupDataInput),
+        REG_JNI(register_android_backup_BackupDataOutput),
+        REG_JNI(register_android_backup_FileBackupHelperBase),
+        REG_JNI(register_android_backup_BackupHelperDispatcher),
+        REG_JNI(register_android_app_backup_FullBackup),
+        REG_JNI(register_android_app_Activity),
+        REG_JNI(register_android_app_ActivityThread),
+        REG_JNI(register_android_app_NativeActivity),
+        REG_JNI(register_android_util_jar_StrictJarFile),
+        REG_JNI(register_android_view_InputChannel),
+        REG_JNI(register_android_view_InputEventReceiver),
+        REG_JNI(register_android_view_InputEventSender),
+        REG_JNI(register_android_view_InputQueue),
+        REG_JNI(register_android_view_KeyEvent),
+        REG_JNI(register_android_view_MotionEvent),
+        REG_JNI(register_android_view_PointerIcon),
+        REG_JNI(register_android_view_VelocityTracker),
+        REG_JNI(register_android_view_VerifiedKeyEvent),
+        REG_JNI(register_android_view_VerifiedMotionEvent),
 
-    REG_JNI(register_android_content_res_ObbScanner),
-    REG_JNI(register_android_content_res_Configuration),
+        REG_JNI(register_android_content_res_ObbScanner),
+        REG_JNI(register_android_content_res_Configuration),
 
-    REG_JNI(register_android_animation_PropertyValuesHolder),
-    REG_JNI(register_android_security_Scrypt),
-    REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
-    REG_JNI(register_com_android_internal_os_FuseAppLoop),
+        REG_JNI(register_android_animation_PropertyValuesHolder),
+        REG_JNI(register_android_security_Scrypt),
+        REG_JNI(register_com_android_internal_content_NativeLibraryHelper),
+        REG_JNI(register_com_android_internal_os_FuseAppLoop),
 };
 
 /*
diff --git a/core/jni/LayoutlibLoader.cpp b/core/jni/LayoutlibLoader.cpp
index 6c0680f..7ceef98 100644
--- a/core/jni/LayoutlibLoader.cpp
+++ b/core/jni/LayoutlibLoader.cpp
@@ -40,6 +40,7 @@
 extern int register_android_graphics_CreateJavaOutputStreamAdaptor(JNIEnv* env);
 extern int register_android_graphics_Graphics(JNIEnv* env);
 extern int register_android_graphics_ImageDecoder(JNIEnv*);
+extern int register_android_graphics_Interpolator(JNIEnv* env);
 extern int register_android_graphics_MaskFilter(JNIEnv* env);
 extern int register_android_graphics_NinePatch(JNIEnv*);
 extern int register_android_graphics_PathEffect(JNIEnv* env);
@@ -75,10 +76,13 @@
 extern int register_android_os_SystemClock(JNIEnv* env);
 extern int register_android_os_SystemProperties(JNIEnv* env);
 extern int register_android_os_Trace(JNIEnv* env);
+extern int register_android_text_AndroidCharacter(JNIEnv* env);
 extern int register_android_util_EventLog(JNIEnv* env);
 extern int register_android_util_Log(JNIEnv* env);
 extern int register_android_util_PathParser(JNIEnv* env);
+extern int register_android_util_jar_StrictJarFile(JNIEnv* env);
 extern int register_android_view_RenderNode(JNIEnv* env);
+extern int register_android_view_RenderNodeAnimator(JNIEnv* env);
 extern int register_android_view_DisplayListCanvas(JNIEnv* env);
 extern int register_com_android_internal_util_VirtualRefBasePtr(JNIEnv *env);
 extern int register_com_android_internal_view_animation_NativeInterpolatorFactoryHelper(JNIEnv *env);
@@ -90,58 +94,68 @@
 
 // Map of all possible class names to register to their corresponding JNI registration function pointer
 // The actual list of registered classes will be determined at runtime via the 'native_classes' System property
-static const std::unordered_map<std::string, RegJNIRec>  gRegJNIMap = {
-    {"android.animation.PropertyValuesHolder", REG_JNI(register_android_animation_PropertyValuesHolder)},
+static const std::unordered_map<std::string, RegJNIRec> gRegJNIMap = {
+        {"android.animation.PropertyValuesHolder",
+         REG_JNI(register_android_animation_PropertyValuesHolder)},
 #ifdef __linux__
-    {"android.content.AssetManager", REG_JNI(register_android_content_AssetManager)},
-    {"android.content.StringBlock", REG_JNI(register_android_content_StringBlock)},
-    {"android.content.XmlBlock", REG_JNI(register_android_content_XmlBlock)},
-    {"android.content.res.ApkAssets", REG_JNI(register_android_content_res_ApkAssets)},
+        {"android.content.res.ApkAssets", REG_JNI(register_android_content_res_ApkAssets)},
+        {"android.content.res.AssetManager", REG_JNI(register_android_content_AssetManager)},
 #endif
-    {"android.graphics.Bitmap", REG_JNI(register_android_graphics_Bitmap)},
-    {"android.graphics.BitmapFactory", REG_JNI(register_android_graphics_BitmapFactory)},
-    {"android.graphics.ByteBufferStreamAdaptor", REG_JNI(register_android_graphics_ByteBufferStreamAdaptor)},
-    {"android.graphics.Canvas", REG_JNI(register_android_graphics_Canvas)},
-    {"android.graphics.RenderNode", REG_JNI(register_android_view_RenderNode)},
-    {"android.graphics.ColorFilter", REG_JNI(register_android_graphics_ColorFilter)},
-    {"android.graphics.ColorSpace", REG_JNI(register_android_graphics_ColorSpace)},
-    {"android.graphics.CreateJavaOutputStreamAdaptor", REG_JNI(register_android_graphics_CreateJavaOutputStreamAdaptor)},
-    {"android.graphics.DrawFilter", REG_JNI(register_android_graphics_DrawFilter)},
-    {"android.graphics.FontFamily", REG_JNI(register_android_graphics_FontFamily)},
-    {"android.graphics.Graphics", REG_JNI(register_android_graphics_Graphics)},
-    {"android.graphics.ImageDecoder", REG_JNI(register_android_graphics_ImageDecoder)},
-    {"android.graphics.MaskFilter", REG_JNI(register_android_graphics_MaskFilter)},
-    {"android.graphics.Matrix", REG_JNI(register_android_graphics_Matrix)},
-    {"android.graphics.NinePatch", REG_JNI(register_android_graphics_NinePatch)},
-    {"android.graphics.Paint", REG_JNI(register_android_graphics_Paint)},
-    {"android.graphics.Path", REG_JNI(register_android_graphics_Path)},
-    {"android.graphics.PathEffect", REG_JNI(register_android_graphics_PathEffect)},
-    {"android.graphics.PathMeasure", REG_JNI(register_android_graphics_PathMeasure)},
-    {"android.graphics.Picture", REG_JNI(register_android_graphics_Picture)},
-    {"android.graphics.RecordingCanvas", REG_JNI(register_android_view_DisplayListCanvas)},
-    {"android.graphics.Region", REG_JNI(register_android_graphics_Region)},
-    {"android.graphics.Shader", REG_JNI(register_android_graphics_Shader)},
-    {"android.graphics.Typeface", REG_JNI(register_android_graphics_Typeface)},
-    {"android.graphics.drawable.AnimatedVectorDrawable", REG_JNI(register_android_graphics_drawable_AnimatedVectorDrawable)},
-    {"android.graphics.drawable.VectorDrawable", REG_JNI(register_android_graphics_drawable_VectorDrawable)},
-    {"android.graphics.fonts.Font", REG_JNI(register_android_graphics_fonts_Font)},
-    {"android.graphics.fonts.FontFamily", REG_JNI(register_android_graphics_fonts_FontFamily)},
-    {"android.graphics.text.LineBreaker", REG_JNI(register_android_graphics_text_LineBreaker)},
-    {"android.graphics.text.MeasuredText", REG_JNI(register_android_graphics_text_MeasuredText)},
+        {"android.content.res.StringBlock", REG_JNI(register_android_content_StringBlock)},
+        {"android.content.res.XmlBlock", REG_JNI(register_android_content_XmlBlock)},
+        {"android.graphics.Bitmap", REG_JNI(register_android_graphics_Bitmap)},
+        {"android.graphics.BitmapFactory", REG_JNI(register_android_graphics_BitmapFactory)},
+        {"android.graphics.ByteBufferStreamAdaptor",
+         REG_JNI(register_android_graphics_ByteBufferStreamAdaptor)},
+        {"android.graphics.Canvas", REG_JNI(register_android_graphics_Canvas)},
+        {"android.graphics.RenderNode", REG_JNI(register_android_view_RenderNode)},
+        {"android.graphics.ColorFilter", REG_JNI(register_android_graphics_ColorFilter)},
+        {"android.graphics.ColorSpace", REG_JNI(register_android_graphics_ColorSpace)},
+        {"android.graphics.CreateJavaOutputStreamAdaptor",
+         REG_JNI(register_android_graphics_CreateJavaOutputStreamAdaptor)},
+        {"android.graphics.DrawFilter", REG_JNI(register_android_graphics_DrawFilter)},
+        {"android.graphics.FontFamily", REG_JNI(register_android_graphics_FontFamily)},
+        {"android.graphics.Graphics", REG_JNI(register_android_graphics_Graphics)},
+        {"android.graphics.ImageDecoder", REG_JNI(register_android_graphics_ImageDecoder)},
+        {"android.graphics.Interpolator", REG_JNI(register_android_graphics_Interpolator)},
+        {"android.graphics.MaskFilter", REG_JNI(register_android_graphics_MaskFilter)},
+        {"android.graphics.Matrix", REG_JNI(register_android_graphics_Matrix)},
+        {"android.graphics.NinePatch", REG_JNI(register_android_graphics_NinePatch)},
+        {"android.graphics.Paint", REG_JNI(register_android_graphics_Paint)},
+        {"android.graphics.Path", REG_JNI(register_android_graphics_Path)},
+        {"android.graphics.PathEffect", REG_JNI(register_android_graphics_PathEffect)},
+        {"android.graphics.PathMeasure", REG_JNI(register_android_graphics_PathMeasure)},
+        {"android.graphics.Picture", REG_JNI(register_android_graphics_Picture)},
+        {"android.graphics.RecordingCanvas", REG_JNI(register_android_view_DisplayListCanvas)},
+        {"android.graphics.Region", REG_JNI(register_android_graphics_Region)},
+        {"android.graphics.Shader", REG_JNI(register_android_graphics_Shader)},
+        {"android.graphics.Typeface", REG_JNI(register_android_graphics_Typeface)},
+        {"android.graphics.drawable.AnimatedVectorDrawable",
+         REG_JNI(register_android_graphics_drawable_AnimatedVectorDrawable)},
+        {"android.graphics.drawable.VectorDrawable",
+         REG_JNI(register_android_graphics_drawable_VectorDrawable)},
+        {"android.graphics.fonts.Font", REG_JNI(register_android_graphics_fonts_Font)},
+        {"android.graphics.fonts.FontFamily", REG_JNI(register_android_graphics_fonts_FontFamily)},
+        {"android.graphics.text.LineBreaker", REG_JNI(register_android_graphics_text_LineBreaker)},
+        {"android.graphics.text.MeasuredText",
+         REG_JNI(register_android_graphics_text_MeasuredText)},
 #ifdef __linux__
-    {"android.os.FileObserver", REG_JNI(register_android_os_FileObserver)},
-    {"android.os.MessageQueue", REG_JNI(register_android_os_MessageQueue)},
+        {"android.os.FileObserver", REG_JNI(register_android_os_FileObserver)},
+        {"android.os.MessageQueue", REG_JNI(register_android_os_MessageQueue)},
 #endif
-    {"android.os.SystemClock", REG_JNI(register_android_os_SystemClock)},
-    {"android.os.SystemProperties", REG_JNI(register_android_os_SystemProperties)},
-#ifdef __linux__
-    {"android.os.Trace", REG_JNI(register_android_os_Trace)},
-#endif
-    {"android.util.EventLog", REG_JNI(register_android_util_EventLog)},
-    {"android.util.Log", REG_JNI(register_android_util_Log)},
-    {"android.util.PathParser", REG_JNI(register_android_util_PathParser)},
-    {"com.android.internal.util.VirtualRefBasePtr", REG_JNI(register_com_android_internal_util_VirtualRefBasePtr)},
-    {"com.android.internal.view.animation.NativeInterpolatorFactoryHelper", REG_JNI(register_com_android_internal_view_animation_NativeInterpolatorFactoryHelper)},
+        {"android.os.SystemClock", REG_JNI(register_android_os_SystemClock)},
+        {"android.os.SystemProperties", REG_JNI(register_android_os_SystemProperties)},
+        {"android.os.Trace", REG_JNI(register_android_os_Trace)},
+        {"android.text.AndroidCharacter", REG_JNI(register_android_text_AndroidCharacter)},
+        {"android.util.EventLog", REG_JNI(register_android_util_EventLog)},
+        {"android.util.Log", REG_JNI(register_android_util_Log)},
+        {"android.util.PathParser", REG_JNI(register_android_util_PathParser)},
+        {"android.util.jar.StrictJarFile", REG_JNI(register_android_util_jar_StrictJarFile)},
+        {"android.view.RenderNodeAnimator", REG_JNI(register_android_view_RenderNodeAnimator)},
+        {"com.android.internal.util.VirtualRefBasePtr",
+         REG_JNI(register_com_android_internal_util_VirtualRefBasePtr)},
+        {"com.android.internal.view.animation.NativeInterpolatorFactoryHelper",
+         REG_JNI(register_com_android_internal_view_animation_NativeInterpolatorFactoryHelper)},
 };
 // Vector to store the names of classes that need delegates of their native methods
 static vector<string> classesToDelegate;
@@ -159,7 +173,6 @@
 
 int AndroidRuntime::registerNativeMethods(JNIEnv* env,
         const char* className, const JNINativeMethod* gMethods, int numMethods) {
-
     string classNameString = string(className);
     if (find(classesToDelegate.begin(), classesToDelegate.end(), classNameString)
             != classesToDelegate.end()) {
diff --git a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
index 4de6c86..39483b5 100644
--- a/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
+++ b/core/jni/android/graphics/CreateJavaOutputStreamAdaptor.cpp
@@ -277,13 +277,6 @@
 
 SkWStream* CreateJavaOutputStreamAdaptor(JNIEnv* env, jobject stream,
                                          jbyteArray storage) {
-    static bool gInited;
-
-    if (!gInited) {
-
-        gInited = true;
-    }
-
     return new SkJavaOutputStream(env, stream, storage);
 }
 
diff --git a/core/jni/android/graphics/FontFamily.cpp b/core/jni/android/graphics/FontFamily.cpp
index 8fc6afa..0fd9cc7 100644
--- a/core/jni/android/graphics/FontFamily.cpp
+++ b/core/jni/android/graphics/FontFamily.cpp
@@ -27,16 +27,14 @@
 #include <nativehelper/ScopedPrimitiveArray.h>
 #include <nativehelper/ScopedUtfChars.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <android_runtime/android_util_AssetManager.h>
-#include <androidfw/AssetManager2.h>
 #include "Utils.h"
 #include "FontUtils.h"
 
 #include <hwui/MinikinSkia.h>
 #include <hwui/Typeface.h>
-#include <utils/FatVector.h>
 #include <minikin/FontFamily.h>
 #include <minikin/LocaleList.h>
+#include <ui/FatVector.h>
 
 #include <memory>
 
@@ -109,7 +107,7 @@
 
 static bool addSkTypeface(NativeFamilyBuilder* builder, sk_sp<SkData>&& data, int ttcIndex,
         jint weight, jint italic) {
-    uirenderer::FatVector<SkFontArguments::Axis, 2> skiaAxes;
+    FatVector<SkFontArguments::Axis, 2> skiaAxes;
     for (const auto& axis : builder->axes) {
         skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value});
     }
@@ -212,63 +210,6 @@
     return addSkTypeface(builder, std::move(data), ttcIndex, weight, isItalic);
 }
 
-static void releaseAsset(const void* ptr, void* context) {
-    delete static_cast<Asset*>(context);
-}
-
-static jboolean FontFamily_addFontFromAssetManager(JNIEnv* env, jobject, jlong builderPtr,
-        jobject jassetMgr, jstring jpath, jint cookie, jboolean isAsset, jint ttcIndex,
-        jint weight, jint isItalic) {
-#ifdef __ANDROID__ // Layoutlib does not support native AssetManager
-    NPE_CHECK_RETURN_ZERO(env, jassetMgr);
-    NPE_CHECK_RETURN_ZERO(env, jpath);
-
-    NativeFamilyBuilder* builder = toNativeBuilder(builderPtr);
-    Guarded<AssetManager2>* mgr = AssetManagerForJavaObject(env, jassetMgr);
-    if (NULL == mgr) {
-        builder->axes.clear();
-        return false;
-    }
-
-    ScopedUtfChars str(env, jpath);
-    if (str.c_str() == nullptr) {
-        builder->axes.clear();
-        return false;
-    }
-
-    std::unique_ptr<Asset> asset;
-    {
-      ScopedLock<AssetManager2> locked_mgr(*mgr);
-      if (isAsset) {
-          asset = locked_mgr->Open(str.c_str(), Asset::ACCESS_BUFFER);
-      } else if (cookie > 0) {
-          // Valid java cookies are 1-based, but AssetManager cookies are 0-based.
-          asset = locked_mgr->OpenNonAsset(str.c_str(), static_cast<ApkAssetsCookie>(cookie - 1),
-                  Asset::ACCESS_BUFFER);
-      } else {
-          asset = locked_mgr->OpenNonAsset(str.c_str(), Asset::ACCESS_BUFFER);
-      }
-    }
-
-    if (nullptr == asset) {
-        builder->axes.clear();
-        return false;
-    }
-
-    const void* buf = asset->getBuffer(false);
-    if (NULL == buf) {
-        builder->axes.clear();
-        return false;
-    }
-
-    sk_sp<SkData> data(SkData::MakeWithProc(buf, asset->getLength(), releaseAsset,
-            asset.release()));
-    return addSkTypeface(builder, std::move(data), ttcIndex, weight, isItalic);
-#else
-    return false;
-#endif
-}
-
 static void FontFamily_addAxisValue(CRITICAL_JNI_PARAMS_COMMA jlong builderPtr, jint tag, jfloat value) {
     NativeFamilyBuilder* builder = toNativeBuilder(builderPtr);
     builder->axes.push_back({static_cast<minikin::AxisTag>(tag), value});
@@ -284,8 +225,6 @@
     { "nAddFont",               "(JLjava/nio/ByteBuffer;III)Z", (void*)FontFamily_addFont },
     { "nAddFontWeightStyle",    "(JLjava/nio/ByteBuffer;III)Z",
             (void*)FontFamily_addFontWeightStyle },
-    { "nAddFontFromAssetManager",    "(JLandroid/content/res/AssetManager;Ljava/lang/String;IZIII)Z",
-            (void*)FontFamily_addFontFromAssetManager },
     { "nAddAxisValue",         "(JIF)V", (void*)FontFamily_addAxisValue },
 };
 
diff --git a/core/jni/android/graphics/Graphics.cpp b/core/jni/android/graphics/Graphics.cpp
index aa209cb..38fb8bd 100644
--- a/core/jni/android/graphics/Graphics.cpp
+++ b/core/jni/android/graphics/Graphics.cpp
@@ -569,8 +569,8 @@
     // mRecycledBitmap specifies the width and height of the bitmap that we
     // want to reuse.  Neither can be changed.  We will try to find a way
     // to reuse the memory.
-    const int maxWidth = SkTMax(bitmap->width(), mRecycledBitmap->info().width());
-    const int maxHeight = SkTMax(bitmap->height(), mRecycledBitmap->info().height());
+    const int maxWidth = std::max(bitmap->width(), mRecycledBitmap->info().width());
+    const int maxHeight = std::max(bitmap->height(), mRecycledBitmap->info().height());
     const SkImageInfo maxInfo = bitmap->info().makeWH(maxWidth, maxHeight);
     const size_t rowBytes = maxInfo.minRowBytes();
     const size_t bytesNeeded = maxInfo.computeByteSize(rowBytes);
diff --git a/core/jni/android/graphics/GraphicsStatsService.cpp b/core/jni/android/graphics/GraphicsStatsService.cpp
new file mode 100644
index 0000000..ef0aacc
--- /dev/null
+++ b/core/jni/android/graphics/GraphicsStatsService.cpp
@@ -0,0 +1,195 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define LOG_TAG "GraphicsStatsService"
+
+#include <JankTracker.h>
+#include <jni.h>
+#include <log/log.h>
+#include <nativehelper/JNIHelp.h>
+#include <nativehelper/ScopedPrimitiveArray.h>
+#include <nativehelper/ScopedUtfChars.h>
+#include <service/GraphicsStatsService.h>
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
+#include <statslog.h>
+#include "core_jni_helpers.h"
+
+namespace android {
+
+using namespace android::uirenderer;
+
+static jint getAshmemSize(JNIEnv*, jobject) {
+    return sizeof(ProfileData);
+}
+
+static jlong createDump(JNIEnv*, jobject, jint fd, jboolean isProto) {
+    GraphicsStatsService::Dump* dump =
+            GraphicsStatsService::createDump(fd,
+                                             isProto ? GraphicsStatsService::DumpType::Protobuf
+                                                     : GraphicsStatsService::DumpType::Text);
+    return reinterpret_cast<jlong>(dump);
+}
+
+static void addToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath, jstring jpackage,
+                      jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
+    std::string path;
+    const ProfileData* data = nullptr;
+    LOG_ALWAYS_FATAL_IF(jdata == nullptr && jpath == nullptr, "Path and data can't both be null");
+    ScopedByteArrayRO buffer{env};
+    if (jdata != nullptr) {
+        buffer.reset(jdata);
+        LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
+                            "Buffer size %zu doesn't match expected %zu!", buffer.size(),
+                            sizeof(ProfileData));
+        data = reinterpret_cast<const ProfileData*>(buffer.get());
+    }
+    if (jpath != nullptr) {
+        ScopedUtfChars pathChars(env, jpath);
+        LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(),
+                            "Failed to get path chars");
+        path.assign(pathChars.c_str(), pathChars.size());
+    }
+    ScopedUtfChars packageChars(env, jpackage);
+    LOG_ALWAYS_FATAL_IF(packageChars.size() <= 0 || !packageChars.c_str(),
+                        "Failed to get path chars");
+    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
+    LOG_ALWAYS_FATAL_IF(!dump, "null passed for dump pointer");
+
+    const std::string package(packageChars.c_str(), packageChars.size());
+    GraphicsStatsService::addToDump(dump, path, package, versionCode, startTime, endTime, data);
+}
+
+static void addFileToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath) {
+    ScopedUtfChars pathChars(env, jpath);
+    LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(), "Failed to get path chars");
+    const std::string path(pathChars.c_str(), pathChars.size());
+    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
+    GraphicsStatsService::addToDump(dump, path);
+}
+
+static void finishDump(JNIEnv*, jobject, jlong dumpPtr) {
+    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
+    GraphicsStatsService::finishDump(dump);
+}
+
+static void finishDumpInMemory(JNIEnv* env, jobject, jlong dumpPtr, jlong pulledData,
+                               jboolean lastFullDay) {
+    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
+    AStatsEventList* data = reinterpret_cast<AStatsEventList*>(pulledData);
+    GraphicsStatsService::finishDumpInMemory(dump, data, lastFullDay == JNI_TRUE);
+}
+
+static void saveBuffer(JNIEnv* env, jobject clazz, jstring jpath, jstring jpackage,
+                       jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
+    ScopedByteArrayRO buffer(env, jdata);
+    LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
+                        "Buffer size %zu doesn't match expected %zu!", buffer.size(),
+                        sizeof(ProfileData));
+    ScopedUtfChars pathChars(env, jpath);
+    LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(), "Failed to get path chars");
+    ScopedUtfChars packageChars(env, jpackage);
+    LOG_ALWAYS_FATAL_IF(packageChars.size() <= 0 || !packageChars.c_str(),
+                        "Failed to get path chars");
+
+    const std::string path(pathChars.c_str(), pathChars.size());
+    const std::string package(packageChars.c_str(), packageChars.size());
+    const ProfileData* data = reinterpret_cast<const ProfileData*>(buffer.get());
+    GraphicsStatsService::saveBuffer(path, package, versionCode, startTime, endTime, data);
+}
+
+static jobject gGraphicsStatsServiceObject = nullptr;
+static jmethodID gGraphicsStatsService_pullGraphicsStatsMethodID;
+
+static JNIEnv* getJNIEnv() {
+    JavaVM* vm = AndroidRuntime::getJavaVM();
+    JNIEnv* env = nullptr;
+    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+        if (vm->AttachCurrentThreadAsDaemon(&env, nullptr) != JNI_OK) {
+            LOG_ALWAYS_FATAL("Failed to AttachCurrentThread!");
+        }
+    }
+    return env;
+}
+
+// graphicsStatsPullCallback is invoked by statsd service to pull GRAPHICS_STATS atom.
+static AStatsManager_PullAtomCallbackReturn graphicsStatsPullCallback(int32_t atom_tag,
+                                                                      AStatsEventList* data,
+                                                                      void* cookie) {
+    JNIEnv* env = getJNIEnv();
+    if (!env) {
+        return false;
+    }
+    if (gGraphicsStatsServiceObject == nullptr) {
+        ALOGE("Failed to get graphicsstats service");
+        return AStatsManager_PULL_SKIP;
+    }
+
+    for (bool lastFullDay : {true, false}) {
+        env->CallVoidMethod(gGraphicsStatsServiceObject,
+                            gGraphicsStatsService_pullGraphicsStatsMethodID,
+                            (jboolean)(lastFullDay ? JNI_TRUE : JNI_FALSE),
+                            reinterpret_cast<jlong>(data));
+        if (env->ExceptionCheck()) {
+            env->ExceptionDescribe();
+            env->ExceptionClear();
+            ALOGE("Failed to invoke graphicsstats service");
+            return AStatsManager_PULL_SKIP;
+        }
+    }
+    return AStatsManager_PULL_SUCCESS;
+}
+
+// Register a puller for GRAPHICS_STATS atom with the statsd service.
+static void nativeInit(JNIEnv* env, jobject javaObject) {
+    gGraphicsStatsServiceObject = env->NewGlobalRef(javaObject);
+    AStatsManager_PullAtomMetadata* metadata = AStatsManager_PullAtomMetadata_obtain();
+    AStatsManager_PullAtomMetadata_setCoolDownNs(metadata, 10 * 1000000);  // 10 milliseconds
+    AStatsManager_PullAtomMetadata_setTimeoutNs(metadata, 2 * NS_PER_SEC); // 2 seconds
+
+    AStatsManager_registerPullAtomCallback(android::util::GRAPHICS_STATS,
+                                           &graphicsStatsPullCallback, metadata, nullptr);
+
+    AStatsManager_PullAtomMetadata_release(metadata);
+}
+
+static void nativeDestructor(JNIEnv* env, jobject javaObject) {
+    AStatsManager_unregisterPullAtomCallback(android::util::GRAPHICS_STATS);
+    env->DeleteGlobalRef(gGraphicsStatsServiceObject);
+    gGraphicsStatsServiceObject = nullptr;
+}
+
+static const JNINativeMethod sMethods[] =
+        {{"nGetAshmemSize", "()I", (void*)getAshmemSize},
+         {"nCreateDump", "(IZ)J", (void*)createDump},
+         {"nAddToDump", "(JLjava/lang/String;Ljava/lang/String;JJJ[B)V", (void*)addToDump},
+         {"nAddToDump", "(JLjava/lang/String;)V", (void*)addFileToDump},
+         {"nFinishDump", "(J)V", (void*)finishDump},
+         {"nFinishDumpInMemory", "(JJZ)V", (void*)finishDumpInMemory},
+         {"nSaveBuffer", "(Ljava/lang/String;Ljava/lang/String;JJJ[B)V", (void*)saveBuffer},
+         {"nativeInit", "()V", (void*)nativeInit},
+         {"nativeDestructor", "()V", (void*)nativeDestructor}};
+
+int register_android_graphics_GraphicsStatsService(JNIEnv* env) {
+    jclass graphicsStatsService_class =
+            FindClassOrDie(env, "android/graphics/GraphicsStatsService");
+    gGraphicsStatsService_pullGraphicsStatsMethodID =
+            GetMethodIDOrDie(env, graphicsStatsService_class, "pullGraphicsStats", "(ZJ)V");
+    return jniRegisterNativeMethods(env, "android/graphics/GraphicsStatsService", sMethods,
+                                    NELEM(sMethods));
+}
+
+} // namespace android
diff --git a/core/jni/android/graphics/fonts/Font.cpp b/core/jni/android/graphics/fonts/Font.cpp
index bb0654d..bfb9bae 100644
--- a/core/jni/android/graphics/fonts/Font.cpp
+++ b/core/jni/android/graphics/fonts/Font.cpp
@@ -26,15 +26,13 @@
 #include "GraphicsJNI.h"
 #include <nativehelper/ScopedUtfChars.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <android_runtime/android_util_AssetManager.h>
-#include <androidfw/AssetManager2.h>
 #include "Utils.h"
 #include "FontUtils.h"
 
 #include <hwui/MinikinSkia.h>
 #include <hwui/Typeface.h>
-#include <utils/FatVector.h>
 #include <minikin/FontFamily.h>
+#include <ui/FatVector.h>
 
 #include <memory>
 
@@ -48,14 +46,6 @@
     return reinterpret_cast<NativeFontBuilder*>(ptr);
 }
 
-static inline Asset* toAsset(jlong ptr) {
-    return reinterpret_cast<Asset*>(ptr);
-}
-
-static void releaseAsset(jlong asset) {
-    delete toAsset(asset);
-}
-
 static void releaseFont(jlong font) {
     delete reinterpret_cast<FontWrapper*>(font);
 }
@@ -79,54 +69,6 @@
 }
 
 // Regular JNI
-static jlong Font_Builder_getNativeAsset(
-    JNIEnv* env, jobject clazz, jobject assetMgr, jstring path, jboolean isAsset, jint cookie) {
-#ifdef __ANDROID__ // Layoutlib does not support native AssetManager
-    NPE_CHECK_RETURN_ZERO(env, assetMgr);
-    NPE_CHECK_RETURN_ZERO(env, path);
-
-    Guarded<AssetManager2>* mgr = AssetManagerForJavaObject(env, assetMgr);
-    if (mgr == nullptr) {
-        return 0;
-    }
-
-    ScopedUtfChars str(env, path);
-    if (str.c_str() == nullptr) {
-        return 0;
-    }
-
-    std::unique_ptr<Asset> asset;
-    {
-      ScopedLock<AssetManager2> locked_mgr(*mgr);
-      if (isAsset) {
-          asset = locked_mgr->Open(str.c_str(), Asset::ACCESS_BUFFER);
-      } else if (cookie > 0) {
-          // Valid java cookies are 1-based, but AssetManager cookies are 0-based.
-          asset = locked_mgr->OpenNonAsset(str.c_str(), static_cast<ApkAssetsCookie>(cookie - 1),
-                  Asset::ACCESS_BUFFER);
-      } else {
-          asset = locked_mgr->OpenNonAsset(str.c_str(), Asset::ACCESS_BUFFER);
-      }
-    }
-
-    return reinterpret_cast<jlong>(asset.release());
-#else
-    return 0;
-#endif
-}
-
-// Regular JNI
-static jobject Font_Builder_getAssetBuffer(JNIEnv* env, jobject clazz, jlong nativeAsset) {
-    Asset* asset = toAsset(nativeAsset);
-    return env->NewDirectByteBuffer(const_cast<void*>(asset->getBuffer(false)), asset->getLength());
-}
-
-// CriticalNative
-static jlong Font_Builder_getReleaseNativeAssetFunc(CRITICAL_JNI_PARAMS) {
-    return reinterpret_cast<jlong>(&releaseAsset);
-}
-
-// Regular JNI
 static jlong Font_Builder_initBuilder(JNIEnv*, jobject) {
     return reinterpret_cast<jlong>(new NativeFontBuilder());
 }
@@ -157,7 +99,7 @@
     sk_sp<SkData> data(SkData::MakeWithProc(fontPtr, fontSize,
             release_global_ref, reinterpret_cast<void*>(fontRef)));
 
-    uirenderer::FatVector<SkFontArguments::Axis, 2> skiaAxes;
+    FatVector<SkFontArguments::Axis, 2> skiaAxes;
     for (const auto& axis : builder->axes) {
         skiaAxes.emplace_back(SkFontArguments::Axis{axis.axisTag, axis.value});
     }
@@ -196,11 +138,6 @@
     { "nAddAxis", "(JIF)V", (void*) Font_Builder_addAxis },
     { "nBuild", "(JLjava/nio/ByteBuffer;Ljava/lang/String;IZI)J", (void*) Font_Builder_build },
     { "nGetReleaseNativeFont", "()J", (void*) Font_Builder_getReleaseNativeFont },
-
-    { "nGetNativeAsset", "(Landroid/content/res/AssetManager;Ljava/lang/String;ZI)J",
-      (void*) Font_Builder_getNativeAsset },
-    { "nGetAssetBuffer", "(J)Ljava/nio/ByteBuffer;", (void*) Font_Builder_getAssetBuffer },
-    { "nGetReleaseNativeAssetFunc", "()J", (void*) Font_Builder_getReleaseNativeAssetFunc },
 };
 
 int register_android_graphics_fonts_Font(JNIEnv* env) {
diff --git a/core/jni/android_hardware_camera2_CameraMetadata.cpp b/core/jni/android_hardware_camera2_CameraMetadata.cpp
index fad5b0e..c523e2d 100644
--- a/core/jni/android_hardware_camera2_CameraMetadata.cpp
+++ b/core/jni/android_hardware_camera2_CameraMetadata.cpp
@@ -89,13 +89,13 @@
         ALOGE("%s: Invalid output metadata object.", __FUNCTION__);
         return BAD_VALUE;
     }
-    CameraMetadata* nativePtr = reinterpret_cast<CameraMetadata*>(env->GetLongField(thiz,
-            fields.metadata_ptr));
+    auto nativePtr = reinterpret_cast<std::shared_ptr<CameraMetadata> *>(
+            env->GetLongField(thiz, fields.metadata_ptr));
     if (nativePtr == NULL) {
         ALOGE("%s: Invalid native pointer in java metadata object.", __FUNCTION__);
         return BAD_VALUE;
     }
-    *metadata = *nativePtr;
+    *metadata = *(nativePtr->get());
     return OK;
 }
 
@@ -171,12 +171,15 @@
 
 // Less safe access to native pointer. Does NOT throw any Java exceptions if NULL.
 static CameraMetadata* CameraMetadata_getPointerNoThrow(JNIEnv *env, jobject thiz) {
-
-    if (thiz == NULL) {
-        return NULL;
+    if (thiz == nullptr) {
+        return nullptr;
     }
-
-    return reinterpret_cast<CameraMetadata*>(env->GetLongField(thiz, fields.metadata_ptr));
+    auto metadata = reinterpret_cast<std::shared_ptr<CameraMetadata> *>(
+            env->GetLongField(thiz, fields.metadata_ptr));
+    if (metadata == nullptr) {
+        return nullptr;
+    }
+    return metadata->get();
 }
 
 // Safe access to native pointer from object. Throws if not possible to access.
@@ -205,7 +208,7 @@
 static jlong CameraMetadata_allocate(JNIEnv *env, jobject thiz) {
     ALOGV("%s", __FUNCTION__);
 
-    return reinterpret_cast<jlong>(new CameraMetadata());
+    return reinterpret_cast<jlong>(new std::shared_ptr<CameraMetadata>(new CameraMetadata()));
 }
 
 static jlong CameraMetadata_allocateCopy(JNIEnv *env, jobject thiz,
@@ -214,12 +217,12 @@
 
     CameraMetadata* otherMetadata =
             CameraMetadata_getPointerThrow(env, other, "other");
-
     // In case of exception, return
     if (otherMetadata == NULL) return NULL;
 
-    // Clone native metadata and return new pointer
-    return reinterpret_cast<jlong>(new CameraMetadata(*otherMetadata));
+    // Clone native metadata and return new pointer.
+    auto clonedMetadata = new CameraMetadata(*otherMetadata);
+    return reinterpret_cast<jlong>(new std::shared_ptr<CameraMetadata>(clonedMetadata));
 }
 
 
@@ -256,14 +259,16 @@
 static void CameraMetadata_close(JNIEnv *env, jobject thiz) {
     ALOGV("%s", __FUNCTION__);
 
-    CameraMetadata* metadata = CameraMetadata_getPointerNoThrow(env, thiz);
-
-    if (metadata != NULL) {
-        delete metadata;
-        env->SetLongField(thiz, fields.metadata_ptr, 0);
+    if (thiz != nullptr) {
+        auto metadata = reinterpret_cast<std::shared_ptr<CameraMetadata> *>(
+                env->GetLongField(thiz, fields.metadata_ptr));
+        if (metadata != nullptr) {
+            delete metadata;
+            env->SetLongField(thiz, fields.metadata_ptr, 0);
+        }
     }
 
-    LOG_ALWAYS_FATAL_IF(CameraMetadata_getPointerNoThrow(env, thiz) != NULL,
+    LOG_ALWAYS_FATAL_IF(CameraMetadata_getPointerNoThrow(env, thiz) != nullptr,
                         "Expected the native ptr to be 0 after #close");
 }
 
diff --git a/core/jni/android_media_AudioDevice.cpp b/core/jni/android_media_AudioDevice.cpp
new file mode 100644
index 0000000..f6a0e4b
--- /dev/null
+++ b/core/jni/android_media_AudioDevice.cpp
@@ -0,0 +1,51 @@
+/*
+ * Copyright (C) 2019 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 "android_media_AudioDevice.h"
+#include "android_media_AudioErrors.h"
+#include "core_jni_helpers.h"
+
+#include <media/AudioDeviceTypeAddr.h>
+
+using namespace android;
+
+static jclass gAudioDeviceClass;
+static jmethodID gAudioDeviceCstor;
+
+namespace android {
+
+jint createAudioDeviceFromNative(JNIEnv *env, jobject *jAudioDevice,
+                                 const AudioDeviceTypeAddr *devTypeAddr) {
+    jint jStatus = (jint)AUDIO_JAVA_SUCCESS;
+    jint jNativeType = (jint)devTypeAddr->mType;
+    ScopedLocalRef<jstring> jAddress(env, env->NewStringUTF(devTypeAddr->mAddress.data()));
+
+    *jAudioDevice =
+            env->NewObject(gAudioDeviceClass, gAudioDeviceCstor, jNativeType, jAddress.get());
+
+    return jStatus;
+}
+
+} // namespace android
+
+int register_android_media_AudioDevice(JNIEnv *env) {
+    jclass audioDeviceTypeAddressClass = FindClassOrDie(env, "android/media/AudioDevice");
+    gAudioDeviceClass = MakeGlobalRefOrDie(env, audioDeviceTypeAddressClass);
+    gAudioDeviceCstor =
+            GetMethodIDOrDie(env, audioDeviceTypeAddressClass, "<init>", "(ILjava/lang/String;)V");
+
+    return 0;
+}
diff --git a/core/jni/android_media_AudioDeviceAddress.h b/core/jni/android_media_AudioDevice.h
similarity index 71%
rename from core/jni/android_media_AudioDeviceAddress.h
rename to core/jni/android_media_AudioDevice.h
index c66b179..fc92334 100644
--- a/core/jni/android_media_AudioDeviceAddress.h
+++ b/core/jni/android_media_AudioDevice.h
@@ -14,20 +14,20 @@
  * limitations under the License.
  */
 
-#ifndef ANDROID_MEDIA_AUDIODEVICEADDRESS_H
-#define ANDROID_MEDIA_AUDIODEVICEADDRESS_H
+#ifndef ANDROID_MEDIA_AUDIODEVICE_H
+#define ANDROID_MEDIA_AUDIODEVICE_H
 
-#include <system/audio.h>
 #include <media/AudioDeviceTypeAddr.h>
+#include <system/audio.h>
 
 #include "jni.h"
 
 namespace android {
 
-// Create a Java AudioDeviceAddress instance from a C++ AudioDeviceTypeAddress
+// Create a Java AudioDevice instance from a C++ AudioDeviceTypeAddress
 
-extern jint createAudioDeviceAddressFromNative(JNIEnv *env, jobject *jAudioDeviceAddress,
-        const AudioDeviceTypeAddr *devTypeAddr);
+extern jint createAudioDeviceFromNative(JNIEnv *env, jobject *jAudioDevice,
+                                        const AudioDeviceTypeAddr *devTypeAddr);
 } // namespace android
 
 #endif
\ No newline at end of file
diff --git a/core/jni/android_media_AudioDeviceAddress.cpp b/core/jni/android_media_AudioDeviceAddress.cpp
deleted file mode 100644
index 5f39f7e..0000000
--- a/core/jni/android_media_AudioDeviceAddress.cpp
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2019 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 "core_jni_helpers.h"
-#include "android_media_AudioDeviceAddress.h"
-#include "android_media_AudioErrors.h"
-
-#include <media/AudioDeviceTypeAddr.h>
-
-using namespace android;
-
-static jclass gAudioDeviceAddressClass;
-static jmethodID gAudioDeviceAddressCstor;
-
-namespace android {
-
-jint createAudioDeviceAddressFromNative(
-        JNIEnv *env, jobject *jAudioDeviceAddress,
-        const AudioDeviceTypeAddr *devTypeAddr) {
-    jint jStatus = (jint)AUDIO_JAVA_SUCCESS;
-    jint jNativeType = (jint)devTypeAddr->mType;
-    ScopedLocalRef<jstring> jAddress(env, env->NewStringUTF(devTypeAddr->mAddress.data()));
-
-    *jAudioDeviceAddress = env->NewObject(gAudioDeviceAddressClass, gAudioDeviceAddressCstor,
-            jNativeType, jAddress.get());
-
-    return jStatus;
-}
-
-}
-
-int register_android_media_AudioDeviceAddress(JNIEnv *env)
-{
-    jclass audioDeviceTypeAddressClass = FindClassOrDie(env, "android/media/AudioDeviceAddress");
-    gAudioDeviceAddressClass = MakeGlobalRefOrDie(env, audioDeviceTypeAddressClass);
-    gAudioDeviceAddressCstor = GetMethodIDOrDie(env, audioDeviceTypeAddressClass, "<init>",
-                                                "(ILjava/lang/String;)V");
-
-    return 0;
-}
diff --git a/core/jni/android_media_AudioSystem.cpp b/core/jni/android_media_AudioSystem.cpp
index 0156e23..87be5f6 100644
--- a/core/jni/android_media_AudioSystem.cpp
+++ b/core/jni/android_media_AudioSystem.cpp
@@ -26,12 +26,6 @@
 #include <nativehelper/JNIHelp.h>
 #include "core_jni_helpers.h"
 
-#include "android_media_AudioAttributes.h"
-#include "android_media_AudioDeviceAddress.h"
-#include "android_media_AudioEffectDescriptor.h"
-#include "android_media_AudioErrors.h"
-#include "android_media_AudioFormat.h"
-#include "android_media_MicrophoneInfo.h"
 #include <audiomanager/AudioManager.h>
 #include <media/AudioPolicy.h>
 #include <media/AudioSystem.h>
@@ -39,6 +33,12 @@
 #include <nativehelper/ScopedLocalRef.h>
 #include <system/audio.h>
 #include <system/audio_policy.h>
+#include "android_media_AudioAttributes.h"
+#include "android_media_AudioDevice.h"
+#include "android_media_AudioEffectDescriptor.h"
+#include "android_media_AudioErrors.h"
+#include "android_media_AudioFormat.h"
+#include "android_media_MicrophoneInfo.h"
 
 // ----------------------------------------------------------------------------
 
@@ -147,6 +147,7 @@
 static struct {
     jfieldID    mCriteria;
     jfieldID    mAllowPrivilegedPlaybackCapture;
+    jfieldID    mVoiceCommunicationCaptureAllowed;
     // other fields unused by JNI
 } gAudioMixingRuleFields;
 
@@ -1919,6 +1920,8 @@
     jobject jRuleCriteria = env->GetObjectField(jRule, gAudioMixingRuleFields.mCriteria);
     nAudioMix->mAllowPrivilegedPlaybackCapture =
             env->GetBooleanField(jRule, gAudioMixingRuleFields.mAllowPrivilegedPlaybackCapture);
+    nAudioMix->mVoiceCommunicationCaptureAllowed =
+            env->GetBooleanField(jRule, gAudioMixingRuleFields.mVoiceCommunicationCaptureAllowed);
     env->DeleteLocalRef(jRule);
     jobjectArray jCriteria = (jobjectArray)env->CallObjectMethod(jRuleCriteria,
                                                                  gArrayListMethods.toArray);
@@ -2349,7 +2352,7 @@
         jint strategy, jobjectArray jDeviceArray)
 {
     if (jDeviceArray == nullptr || env->GetArrayLength(jDeviceArray) != 1) {
-        ALOGE("%s invalid array to store AudioDeviceAddress", __FUNCTION__);
+        ALOGE("%s invalid array to store AudioDevice", __FUNCTION__);
         return (jint)AUDIO_JAVA_BAD_VALUE;
     }
 
@@ -2359,10 +2362,10 @@
     if (status != NO_ERROR) {
         return (jint) status;
     }
-    jobject jAudioDeviceAddress = NULL;
-    jint jStatus = createAudioDeviceAddressFromNative(env, &jAudioDeviceAddress, &elDevice);
+    jobject jAudioDevice = NULL;
+    jint jStatus = createAudioDeviceFromNative(env, &jAudioDevice, &elDevice);
     if (jStatus == AUDIO_JAVA_SUCCESS) {
-        env->SetObjectArrayElement(jDeviceArray, 0, jAudioDeviceAddress);
+        env->SetObjectArrayElement(jDeviceArray, 0, jAudioDevice);
     }
     return jStatus;
 }
@@ -2377,7 +2380,7 @@
     // with reverse JNI to make the array grow as need as this would be less efficient, and some
     // components call this method often
     if (jDeviceArray == nullptr || maxResultSize == 0) {
-        ALOGE("%s invalid array to store AudioDeviceAddress", __FUNCTION__);
+        ALOGE("%s invalid array to store AudioDevice", __FUNCTION__);
         return (jint)AUDIO_JAVA_BAD_VALUE;
     }
 
@@ -2398,105 +2401,133 @@
         return AUDIO_JAVA_INVALID_OPERATION;
     }
     size_t index = 0;
-    jobject jAudioDeviceAddress = NULL;
+    jobject jAudioDevice = NULL;
     for (const auto& device : devices) {
-        jStatus = createAudioDeviceAddressFromNative(env, &jAudioDeviceAddress, &device);
+        jStatus = createAudioDeviceFromNative(env, &jAudioDevice, &device);
         if (jStatus != AUDIO_JAVA_SUCCESS) {
             return jStatus;
         }
-        env->SetObjectArrayElement(jDeviceArray, index++, jAudioDeviceAddress);
+        env->SetObjectArrayElement(jDeviceArray, index++, jAudioDevice);
     }
     return jStatus;
 }
 
 // ----------------------------------------------------------------------------
 
-static const JNINativeMethod gMethods[] = {
-    {"setParameters",        "(Ljava/lang/String;)I", (void *)android_media_AudioSystem_setParameters},
-    {"getParameters",        "(Ljava/lang/String;)Ljava/lang/String;", (void *)android_media_AudioSystem_getParameters},
-    {"muteMicrophone",      "(Z)I",     (void *)android_media_AudioSystem_muteMicrophone},
-    {"isMicrophoneMuted",   "()Z",      (void *)android_media_AudioSystem_isMicrophoneMuted},
-    {"isStreamActive",      "(II)Z",    (void *)android_media_AudioSystem_isStreamActive},
-    {"isStreamActiveRemotely","(II)Z",  (void *)android_media_AudioSystem_isStreamActiveRemotely},
-    {"isSourceActive",      "(I)Z",     (void *)android_media_AudioSystem_isSourceActive},
-    {"newAudioSessionId",   "()I",      (void *)android_media_AudioSystem_newAudioSessionId},
-    {"newAudioPlayerId",    "()I",      (void *)android_media_AudioSystem_newAudioPlayerId},
-    {"newAudioRecorderId",  "()I",      (void *)android_media_AudioSystem_newAudioRecorderId},
-    {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_setDeviceConnectionState},
-    {"getDeviceConnectionState", "(ILjava/lang/String;)I",  (void *)android_media_AudioSystem_getDeviceConnectionState},
-    {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;I)I", (void *)android_media_AudioSystem_handleDeviceConfigChange},
-    {"setPhoneState",       "(I)I",     (void *)android_media_AudioSystem_setPhoneState},
-    {"setForceUse",         "(II)I",    (void *)android_media_AudioSystem_setForceUse},
-    {"getForceUse",         "(I)I",     (void *)android_media_AudioSystem_getForceUse},
-    {"initStreamVolume",    "(III)I",   (void *)android_media_AudioSystem_initStreamVolume},
-    {"setStreamVolumeIndex","(III)I",   (void *)android_media_AudioSystem_setStreamVolumeIndex},
-    {"getStreamVolumeIndex","(II)I",    (void *)android_media_AudioSystem_getStreamVolumeIndex},
-    {"setVolumeIndexForAttributes","(Landroid/media/AudioAttributes;II)I",   (void *)android_media_AudioSystem_setVolumeIndexForAttributes},
-    {"getVolumeIndexForAttributes","(Landroid/media/AudioAttributes;I)I",    (void *)android_media_AudioSystem_getVolumeIndexForAttributes},
-    {"getMinVolumeIndexForAttributes","(Landroid/media/AudioAttributes;)I",    (void *)android_media_AudioSystem_getMinVolumeIndexForAttributes},
-    {"getMaxVolumeIndexForAttributes","(Landroid/media/AudioAttributes;)I",    (void *)android_media_AudioSystem_getMaxVolumeIndexForAttributes},
-    {"setMasterVolume",     "(F)I",     (void *)android_media_AudioSystem_setMasterVolume},
-    {"getMasterVolume",     "()F",      (void *)android_media_AudioSystem_getMasterVolume},
-    {"setMasterMute",       "(Z)I",     (void *)android_media_AudioSystem_setMasterMute},
-    {"getMasterMute",       "()Z",      (void *)android_media_AudioSystem_getMasterMute},
-    {"setMasterMono",       "(Z)I",     (void *)android_media_AudioSystem_setMasterMono},
-    {"getMasterMono",       "()Z",      (void *)android_media_AudioSystem_getMasterMono},
-    {"setMasterBalance",    "(F)I",     (void *)android_media_AudioSystem_setMasterBalance},
-    {"getMasterBalance",    "()F",      (void *)android_media_AudioSystem_getMasterBalance},
-    {"getDevicesForStream", "(I)I",     (void *)android_media_AudioSystem_getDevicesForStream},
-    {"getPrimaryOutputSamplingRate", "()I", (void *)android_media_AudioSystem_getPrimaryOutputSamplingRate},
-    {"getPrimaryOutputFrameCount",   "()I", (void *)android_media_AudioSystem_getPrimaryOutputFrameCount},
-    {"getOutputLatency",    "(I)I",     (void *)android_media_AudioSystem_getOutputLatency},
-    {"setLowRamDevice",     "(ZJ)I",    (void *)android_media_AudioSystem_setLowRamDevice},
-    {"checkAudioFlinger",    "()I",     (void *)android_media_AudioSystem_checkAudioFlinger},
-    {"listAudioPorts",      "(Ljava/util/ArrayList;[I)I",
-                                                (void *)android_media_AudioSystem_listAudioPorts},
-    {"createAudioPatch",    "([Landroid/media/AudioPatch;[Landroid/media/AudioPortConfig;[Landroid/media/AudioPortConfig;)I",
-                                            (void *)android_media_AudioSystem_createAudioPatch},
-    {"releaseAudioPatch",   "(Landroid/media/AudioPatch;)I",
-                                            (void *)android_media_AudioSystem_releaseAudioPatch},
-    {"listAudioPatches",    "(Ljava/util/ArrayList;[I)I",
-                                                (void *)android_media_AudioSystem_listAudioPatches},
-    {"setAudioPortConfig",   "(Landroid/media/AudioPortConfig;)I",
-                                            (void *)android_media_AudioSystem_setAudioPortConfig},
-    {"startAudioSource",    "(Landroid/media/AudioPortConfig;Landroid/media/AudioAttributes;)I",
-                                            (void *)android_media_AudioSystem_startAudioSource},
-    {"stopAudioSource",     "(I)I", (void *)android_media_AudioSystem_stopAudioSource},
-    {"getAudioHwSyncForSession", "(I)I",
-                                    (void *)android_media_AudioSystem_getAudioHwSyncForSession},
-    {"registerPolicyMixes",    "(Ljava/util/ArrayList;Z)I",
-                                            (void *)android_media_AudioSystem_registerPolicyMixes},
-    {"setUidDeviceAffinities", "(I[I[Ljava/lang/String;)I",
-                                        (void *)android_media_AudioSystem_setUidDeviceAffinities},
-    {"removeUidDeviceAffinities", "(I)I",
-                                        (void *)android_media_AudioSystem_removeUidDeviceAffinities},
-    {"native_register_dynamic_policy_callback", "()V",
-                                    (void *)android_media_AudioSystem_registerDynPolicyCallback},
-    {"native_register_recording_callback", "()V",
-                                    (void *)android_media_AudioSystem_registerRecordingCallback},
-    {"systemReady", "()I", (void *)android_media_AudioSystem_systemReady},
-    {"getStreamVolumeDB", "(III)F", (void *)android_media_AudioSystem_getStreamVolumeDB},
-    {"native_is_offload_supported", "(IIIII)Z", (void *)android_media_AudioSystem_isOffloadSupported},
-    {"getMicrophones", "(Ljava/util/ArrayList;)I", (void *)android_media_AudioSystem_getMicrophones},
-    {"getSurroundFormats", "(Ljava/util/Map;Z)I", (void *)android_media_AudioSystem_getSurroundFormats},
-    {"setSurroundFormatEnabled", "(IZ)I", (void *)android_media_AudioSystem_setSurroundFormatEnabled},
-    {"setAssistantUid", "(I)I", (void *)android_media_AudioSystem_setAssistantUid},
-    {"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
-    {"isHapticPlaybackSupported", "()Z", (void *)android_media_AudioSystem_isHapticPlaybackSupported},
-    {"getHwOffloadEncodingFormatsSupportedForA2DP", "(Ljava/util/ArrayList;)I",
-                    (void*)android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP},
-    {"setSupportedSystemUsages", "([I)I", (void *)android_media_AudioSystem_setSupportedSystemUsages},
-    {"setAllowedCapturePolicy", "(II)I", (void *)android_media_AudioSystem_setAllowedCapturePolicy},
-    {"setRttEnabled",       "(Z)I",     (void *)android_media_AudioSystem_setRttEnabled},
-    {"setAudioHalPids",  "([I)I", (void *)android_media_AudioSystem_setAudioHalPids},
-    {"isCallScreeningModeSupported", "()Z", (void *)android_media_AudioSystem_isCallScreeningModeSupported},
-    {"setPreferredDeviceForStrategy", "(IILjava/lang/String;)I", (void *)android_media_AudioSystem_setPreferredDeviceForStrategy},
-    {"removePreferredDeviceForStrategy", "(I)I", (void *)android_media_AudioSystem_removePreferredDeviceForStrategy},
-    {"getPreferredDeviceForStrategy", "(I[Landroid/media/AudioDeviceAddress;)I", (void *)android_media_AudioSystem_getPreferredDeviceForStrategy},
-    {"getDevicesForAttributes", "(Landroid/media/AudioAttributes;[Landroid/media/AudioDeviceAddress;)I", (void *)android_media_AudioSystem_getDevicesForAttributes},
-    {"setUserIdDeviceAffinities", "(I[I[Ljava/lang/String;)I", (void *)android_media_AudioSystem_setUserIdDeviceAffinities},
-    {"removeUserIdDeviceAffinities", "(I)I", (void *)android_media_AudioSystem_removeUserIdDeviceAffinities}
-};
+static const JNINativeMethod gMethods[] =
+        {{"setParameters", "(Ljava/lang/String;)I",
+          (void *)android_media_AudioSystem_setParameters},
+         {"getParameters", "(Ljava/lang/String;)Ljava/lang/String;",
+          (void *)android_media_AudioSystem_getParameters},
+         {"muteMicrophone", "(Z)I", (void *)android_media_AudioSystem_muteMicrophone},
+         {"isMicrophoneMuted", "()Z", (void *)android_media_AudioSystem_isMicrophoneMuted},
+         {"isStreamActive", "(II)Z", (void *)android_media_AudioSystem_isStreamActive},
+         {"isStreamActiveRemotely", "(II)Z",
+          (void *)android_media_AudioSystem_isStreamActiveRemotely},
+         {"isSourceActive", "(I)Z", (void *)android_media_AudioSystem_isSourceActive},
+         {"newAudioSessionId", "()I", (void *)android_media_AudioSystem_newAudioSessionId},
+         {"newAudioPlayerId", "()I", (void *)android_media_AudioSystem_newAudioPlayerId},
+         {"newAudioRecorderId", "()I", (void *)android_media_AudioSystem_newAudioRecorderId},
+         {"setDeviceConnectionState", "(IILjava/lang/String;Ljava/lang/String;I)I",
+          (void *)android_media_AudioSystem_setDeviceConnectionState},
+         {"getDeviceConnectionState", "(ILjava/lang/String;)I",
+          (void *)android_media_AudioSystem_getDeviceConnectionState},
+         {"handleDeviceConfigChange", "(ILjava/lang/String;Ljava/lang/String;I)I",
+          (void *)android_media_AudioSystem_handleDeviceConfigChange},
+         {"setPhoneState", "(I)I", (void *)android_media_AudioSystem_setPhoneState},
+         {"setForceUse", "(II)I", (void *)android_media_AudioSystem_setForceUse},
+         {"getForceUse", "(I)I", (void *)android_media_AudioSystem_getForceUse},
+         {"initStreamVolume", "(III)I", (void *)android_media_AudioSystem_initStreamVolume},
+         {"setStreamVolumeIndex", "(III)I", (void *)android_media_AudioSystem_setStreamVolumeIndex},
+         {"getStreamVolumeIndex", "(II)I", (void *)android_media_AudioSystem_getStreamVolumeIndex},
+         {"setVolumeIndexForAttributes", "(Landroid/media/AudioAttributes;II)I",
+          (void *)android_media_AudioSystem_setVolumeIndexForAttributes},
+         {"getVolumeIndexForAttributes", "(Landroid/media/AudioAttributes;I)I",
+          (void *)android_media_AudioSystem_getVolumeIndexForAttributes},
+         {"getMinVolumeIndexForAttributes", "(Landroid/media/AudioAttributes;)I",
+          (void *)android_media_AudioSystem_getMinVolumeIndexForAttributes},
+         {"getMaxVolumeIndexForAttributes", "(Landroid/media/AudioAttributes;)I",
+          (void *)android_media_AudioSystem_getMaxVolumeIndexForAttributes},
+         {"setMasterVolume", "(F)I", (void *)android_media_AudioSystem_setMasterVolume},
+         {"getMasterVolume", "()F", (void *)android_media_AudioSystem_getMasterVolume},
+         {"setMasterMute", "(Z)I", (void *)android_media_AudioSystem_setMasterMute},
+         {"getMasterMute", "()Z", (void *)android_media_AudioSystem_getMasterMute},
+         {"setMasterMono", "(Z)I", (void *)android_media_AudioSystem_setMasterMono},
+         {"getMasterMono", "()Z", (void *)android_media_AudioSystem_getMasterMono},
+         {"setMasterBalance", "(F)I", (void *)android_media_AudioSystem_setMasterBalance},
+         {"getMasterBalance", "()F", (void *)android_media_AudioSystem_getMasterBalance},
+         {"getDevicesForStream", "(I)I", (void *)android_media_AudioSystem_getDevicesForStream},
+         {"getPrimaryOutputSamplingRate", "()I",
+          (void *)android_media_AudioSystem_getPrimaryOutputSamplingRate},
+         {"getPrimaryOutputFrameCount", "()I",
+          (void *)android_media_AudioSystem_getPrimaryOutputFrameCount},
+         {"getOutputLatency", "(I)I", (void *)android_media_AudioSystem_getOutputLatency},
+         {"setLowRamDevice", "(ZJ)I", (void *)android_media_AudioSystem_setLowRamDevice},
+         {"checkAudioFlinger", "()I", (void *)android_media_AudioSystem_checkAudioFlinger},
+         {"listAudioPorts", "(Ljava/util/ArrayList;[I)I",
+          (void *)android_media_AudioSystem_listAudioPorts},
+         {"createAudioPatch",
+          "([Landroid/media/AudioPatch;[Landroid/media/AudioPortConfig;[Landroid/media/"
+          "AudioPortConfig;)I",
+          (void *)android_media_AudioSystem_createAudioPatch},
+         {"releaseAudioPatch", "(Landroid/media/AudioPatch;)I",
+          (void *)android_media_AudioSystem_releaseAudioPatch},
+         {"listAudioPatches", "(Ljava/util/ArrayList;[I)I",
+          (void *)android_media_AudioSystem_listAudioPatches},
+         {"setAudioPortConfig", "(Landroid/media/AudioPortConfig;)I",
+          (void *)android_media_AudioSystem_setAudioPortConfig},
+         {"startAudioSource", "(Landroid/media/AudioPortConfig;Landroid/media/AudioAttributes;)I",
+          (void *)android_media_AudioSystem_startAudioSource},
+         {"stopAudioSource", "(I)I", (void *)android_media_AudioSystem_stopAudioSource},
+         {"getAudioHwSyncForSession", "(I)I",
+          (void *)android_media_AudioSystem_getAudioHwSyncForSession},
+         {"registerPolicyMixes", "(Ljava/util/ArrayList;Z)I",
+          (void *)android_media_AudioSystem_registerPolicyMixes},
+         {"setUidDeviceAffinities", "(I[I[Ljava/lang/String;)I",
+          (void *)android_media_AudioSystem_setUidDeviceAffinities},
+         {"removeUidDeviceAffinities", "(I)I",
+          (void *)android_media_AudioSystem_removeUidDeviceAffinities},
+         {"native_register_dynamic_policy_callback", "()V",
+          (void *)android_media_AudioSystem_registerDynPolicyCallback},
+         {"native_register_recording_callback", "()V",
+          (void *)android_media_AudioSystem_registerRecordingCallback},
+         {"systemReady", "()I", (void *)android_media_AudioSystem_systemReady},
+         {"getStreamVolumeDB", "(III)F", (void *)android_media_AudioSystem_getStreamVolumeDB},
+         {"native_is_offload_supported", "(IIIII)Z",
+          (void *)android_media_AudioSystem_isOffloadSupported},
+         {"getMicrophones", "(Ljava/util/ArrayList;)I",
+          (void *)android_media_AudioSystem_getMicrophones},
+         {"getSurroundFormats", "(Ljava/util/Map;Z)I",
+          (void *)android_media_AudioSystem_getSurroundFormats},
+         {"setSurroundFormatEnabled", "(IZ)I",
+          (void *)android_media_AudioSystem_setSurroundFormatEnabled},
+         {"setAssistantUid", "(I)I", (void *)android_media_AudioSystem_setAssistantUid},
+         {"setA11yServicesUids", "([I)I", (void *)android_media_AudioSystem_setA11yServicesUids},
+         {"isHapticPlaybackSupported", "()Z",
+          (void *)android_media_AudioSystem_isHapticPlaybackSupported},
+         {"getHwOffloadEncodingFormatsSupportedForA2DP", "(Ljava/util/ArrayList;)I",
+          (void *)android_media_AudioSystem_getHwOffloadEncodingFormatsSupportedForA2DP},
+         {"setSupportedSystemUsages", "([I)I",
+          (void *)android_media_AudioSystem_setSupportedSystemUsages},
+         {"setAllowedCapturePolicy", "(II)I",
+          (void *)android_media_AudioSystem_setAllowedCapturePolicy},
+         {"setRttEnabled", "(Z)I", (void *)android_media_AudioSystem_setRttEnabled},
+         {"setAudioHalPids", "([I)I", (void *)android_media_AudioSystem_setAudioHalPids},
+         {"isCallScreeningModeSupported", "()Z",
+          (void *)android_media_AudioSystem_isCallScreeningModeSupported},
+         {"setPreferredDeviceForStrategy", "(IILjava/lang/String;)I",
+          (void *)android_media_AudioSystem_setPreferredDeviceForStrategy},
+         {"removePreferredDeviceForStrategy", "(I)I",
+          (void *)android_media_AudioSystem_removePreferredDeviceForStrategy},
+         {"getPreferredDeviceForStrategy", "(I[Landroid/media/AudioDevice;)I",
+          (void *)android_media_AudioSystem_getPreferredDeviceForStrategy},
+         {"getDevicesForAttributes",
+          "(Landroid/media/AudioAttributes;[Landroid/media/AudioDevice;)I",
+          (void *)android_media_AudioSystem_getDevicesForAttributes},
+         {"setUserIdDeviceAffinities", "(I[I[Ljava/lang/String;)I",
+          (void *)android_media_AudioSystem_setUserIdDeviceAffinities},
+         {"removeUserIdDeviceAffinities", "(I)I",
+          (void *)android_media_AudioSystem_removeUserIdDeviceAffinities}};
 
 static const JNINativeMethod gEventHandlerMethods[] = {
     {"native_setup",
@@ -2654,6 +2685,9 @@
     gAudioMixingRuleFields.mAllowPrivilegedPlaybackCapture =
             GetFieldIDOrDie(env, audioMixingRuleClass, "mAllowPrivilegedPlaybackCapture", "Z");
 
+    gAudioMixingRuleFields.mVoiceCommunicationCaptureAllowed =
+            GetFieldIDOrDie(env, audioMixingRuleClass, "mVoiceCommunicationCaptureAllowed", "Z");
+
     jclass audioMixMatchCriterionClass =
                 FindClassOrDie(env, "android/media/audiopolicy/AudioMixingRule$AudioMixMatchCriterion");
     gAudioMixMatchCriterionClass = MakeGlobalRefOrDie(env,audioMixMatchCriterionClass);
diff --git a/core/jni/android_os_Debug.cpp b/core/jni/android_os_Debug.cpp
index b523811..0d0dc3e 100644
--- a/core/jni/android_os_Debug.cpp
+++ b/core/jni/android_os_Debug.cpp
@@ -263,6 +263,8 @@
             which_heap = HEAP_NATIVE;
         } else if (base::StartsWith(name, "[anon:scudo:")) {
             which_heap = HEAP_NATIVE;
+        } else if (base::StartsWith(name, "[anon:GWP-ASan")) {
+            which_heap = HEAP_NATIVE;
         } else if (base::StartsWith(name, "[stack")) {
             which_heap = HEAP_STACK;
         } else if (base::StartsWith(name, "[anon:stack_and_tls:")) {
diff --git a/core/jni/android_os_incremental_IncrementalManager.cpp b/core/jni/android_os_incremental_IncrementalManager.cpp
index 698062a..44bff01 100644
--- a/core/jni/android_os_incremental_IncrementalManager.cpp
+++ b/core/jni/android_os_incremental_IncrementalManager.cpp
@@ -26,6 +26,10 @@
 
 namespace android {
 
+static jboolean nativeIsEnabled(JNIEnv* env, jobject clazz) {
+    return IncFs_IsEnabled();
+}
+
 static jboolean nativeIsIncrementalPath(JNIEnv* env,
                                     jobject clazz,
                                     jstring javaPath) {
@@ -33,10 +37,28 @@
     return (jboolean)IncFs_IsIncFsPath(path.c_str());
 }
 
-static const JNINativeMethod method_table[] = {
-        {"nativeIsIncrementalPath", "(Ljava/lang/String;)Z",
-         (void*)nativeIsIncrementalPath},
-};
+static jbyteArray nativeUnsafeGetFileSignature(JNIEnv* env, jobject clazz, jstring javaPath) {
+    ScopedUtfChars path(env, javaPath);
+
+    char signature[INCFS_MAX_SIGNATURE_SIZE];
+    size_t size = sizeof(signature);
+    if (IncFs_UnsafeGetSignatureByPath(path.c_str(), signature, &size) < 0) {
+        return nullptr;
+    }
+
+    jbyteArray result = env->NewByteArray(size);
+    if (result != nullptr) {
+        env->SetByteArrayRegion(result, 0, size, (const jbyte*)signature);
+    }
+    return result;
+}
+
+static const JNINativeMethod method_table[] = {{"nativeIsEnabled", "()Z", (void*)nativeIsEnabled},
+                                               {"nativeIsIncrementalPath", "(Ljava/lang/String;)Z",
+                                                (void*)nativeIsIncrementalPath},
+                                               {"nativeUnsafeGetFileSignature",
+                                                "(Ljava/lang/String;)[B",
+                                                (void*)nativeUnsafeGetFileSignature}};
 
 int register_android_os_incremental_IncrementalManager(JNIEnv* env) {
     return jniRegisterNativeMethods(env, "android/os/incremental/IncrementalManager",
diff --git a/core/jni/android_os_storage_StorageManager.cpp b/core/jni/android_os_storage_StorageManager.cpp
new file mode 100644
index 0000000..aee6733
--- /dev/null
+++ b/core/jni/android_os_storage_StorageManager.cpp
@@ -0,0 +1,77 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "StorageManager"
+#include <android-base/logging.h>
+#include <android-base/unique_fd.h>
+#include <fcntl.h>
+#include <linux/fs.h>
+
+#include <nativehelper/JNIHelp.h>
+#include "core_jni_helpers.h"
+
+namespace android {
+
+jboolean android_os_storage_StorageManager_setQuotaProjectId(JNIEnv* env, jobject self,
+                                                             jstring path, jlong projectId) {
+    struct fsxattr fsx;
+    ScopedUtfChars utf_chars_path(env, path);
+
+    if (projectId > UINT32_MAX) {
+        LOG(ERROR) << "Invalid project id: " << projectId;
+        return JNI_FALSE;
+    }
+
+    android::base::unique_fd fd(
+            TEMP_FAILURE_RETRY(open(utf_chars_path.c_str(), O_RDONLY | O_CLOEXEC)));
+    if (fd == -1) {
+        PLOG(ERROR) << "Failed to open " << utf_chars_path.c_str() << " to set project id.";
+        return JNI_FALSE;
+    }
+
+    int ret = ioctl(fd, FS_IOC_FSGETXATTR, &fsx);
+    if (ret == -1) {
+        PLOG(ERROR) << "Failed to get extended attributes for " << utf_chars_path.c_str()
+                    << " to get project id.";
+        return JNI_FALSE;
+    }
+
+    fsx.fsx_projid = projectId;
+    ret = ioctl(fd, FS_IOC_FSSETXATTR, &fsx);
+    if (ret == -1) {
+        PLOG(ERROR) << "Failed to set extended attributes for " << utf_chars_path.c_str()
+                    << " to set project id.";
+        return JNI_FALSE;
+    }
+
+    return JNI_TRUE;
+}
+
+// ----------------------------------------------------------------------------
+
+static const JNINativeMethod gStorageManagerMethods[] = {
+        {"setQuotaProjectId", "(Ljava/lang/String;J)Z",
+         (void*)android_os_storage_StorageManager_setQuotaProjectId},
+};
+
+const char* const kStorageManagerPathName = "android/os/storage/StorageManager";
+
+int register_android_os_storage_StorageManager(JNIEnv* env) {
+    return RegisterMethodsOrDie(env, kStorageManagerPathName, gStorageManagerMethods,
+                                NELEM(gStorageManagerMethods));
+}
+
+}; // namespace android
diff --git a/core/jni/android_service_DataLoaderService.cpp b/core/jni/android_service_DataLoaderService.cpp
index b307a73..ed0d381 100644
--- a/core/jni/android_service_DataLoaderService.cpp
+++ b/core/jni/android_service_DataLoaderService.cpp
@@ -75,8 +75,9 @@
         {"nativeStartDataLoader", "(I)Z", (void*)nativeStartDataLoader},
         {"nativeStopDataLoader", "(I)Z", (void*)nativeStopDataLoader},
         {"nativeDestroyDataLoader", "(I)Z", (void*)nativeDestroyDataLoader},
-        {"nativePrepareImage", "(ILjava/util/Collection;Ljava/util/Collection;)Z", (void*)nativePrepareImage},
-        {"nativeWriteData", "(JLjava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V", (void*)nativeWriteData},
+        {"nativePrepareImage", "(ILjava/util/List;Ljava/util/List;)Z", (void*)nativePrepareImage},
+        {"nativeWriteData", "(JLjava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V",
+         (void*)nativeWriteData},
 };
 
 }  // namespace
diff --git a/core/jni/android_util_Binder.cpp b/core/jni/android_util_Binder.cpp
index e77c25e..14d7487 100644
--- a/core/jni/android_util_Binder.cpp
+++ b/core/jni/android_util_Binder.cpp
@@ -37,6 +37,7 @@
 #include <binder/Parcel.h>
 #include <binder/ProcessState.h>
 #include <binder/Stability.h>
+#include <binderthreadstate/CallerUtils.h>
 #include <cutils/atomic.h>
 #include <log/log.h>
 #include <utils/KeyedVector.h>
@@ -463,6 +464,9 @@
             if (mVintf) {
                 ::android::internal::Stability::markVintf(b.get());
             }
+            if (mExtension != nullptr) {
+                b.get()->setExtension(mExtension);
+            }
             mBinder = b;
             ALOGV("Creating JavaBinder %p (refs %p) for Object %p, weakCount=%" PRId32 "\n",
                  b.get(), b->getWeakRefs(), obj, b->getWeakRefs()->getWeakCount());
@@ -481,6 +485,24 @@
         mVintf = true;
     }
 
+    sp<IBinder> getExtension() {
+        AutoMutex _l(mLock);
+        sp<JavaBBinder> b = mBinder.promote();
+        if (b != nullptr) {
+            return b.get()->getExtension();
+        }
+        return mExtension;
+    }
+
+    void setExtension(const sp<IBinder>& extension) {
+        AutoMutex _l(mLock);
+        mExtension = extension;
+        sp<JavaBBinder> b = mBinder.promote();
+        if (b != nullptr) {
+            b.get()->setExtension(mExtension);
+        }
+    }
+
 private:
     Mutex           mLock;
     wp<JavaBBinder> mBinder;
@@ -489,6 +511,8 @@
     // is too much binder state here, we can think about making JavaBBinder an
     // sp here (avoid recreating it)
     bool            mVintf = false;
+
+    sp<IBinder>     mExtension;
 };
 
 // ----------------------------------------------------------------------------
@@ -927,7 +951,7 @@
 
 static jboolean android_os_Binder_isHandlingTransaction()
 {
-    return IPCThreadState::self()->isServingCall();
+    return getCurrentServingCall() == BinderCallType::BINDER;
 }
 
 static jlong android_os_Binder_clearCallingIdentity()
@@ -1037,6 +1061,17 @@
     return javaObjectForIBinder(env, service);
 }
 
+static jobject android_os_Binder_getExtension(JNIEnv* env, jobject obj) {
+    JavaBBinderHolder* jbh = (JavaBBinderHolder*) env->GetLongField(obj, gBinderOffsets.mObject);
+    return javaObjectForIBinder(env, jbh->getExtension());
+}
+
+static void android_os_Binder_setExtension(JNIEnv* env, jobject obj, jobject extensionObject) {
+    JavaBBinderHolder* jbh = (JavaBBinderHolder*) env->GetLongField(obj, gBinderOffsets.mObject);
+    sp<IBinder> extension = ibinderForJavaObject(env, extensionObject);
+    jbh->setExtension(extension);
+}
+
 // ----------------------------------------------------------------------------
 
 static const JNINativeMethod gBinderMethods[] = {
@@ -1066,7 +1101,9 @@
     { "getNativeBBinderHolder", "()J", (void*)android_os_Binder_getNativeBBinderHolder },
     { "getNativeFinalizer", "()J", (void*)android_os_Binder_getNativeFinalizer },
     { "blockUntilThreadAvailable", "()V", (void*)android_os_Binder_blockUntilThreadAvailable },
-    { "waitForService", "(Ljava/lang/String;)Landroid/os/IBinder;", (void*)android_os_Binder_waitForService }
+    { "waitForService", "(Ljava/lang/String;)Landroid/os/IBinder;", (void*)android_os_Binder_waitForService },
+    { "getExtension", "()Landroid/os/IBinder;", (void*)android_os_Binder_getExtension },
+    { "setExtension", "(Landroid/os/IBinder;)V", (void*)android_os_Binder_setExtension },
 };
 
 const char* const kBinderPathName = "android/os/Binder";
@@ -1506,6 +1543,21 @@
     return (jlong) BinderProxy_destroy;
 }
 
+static jobject android_os_BinderProxy_getExtension(JNIEnv* env, jobject obj) {
+    IBinder* binder = getBPNativeData(env, obj)->mObject.get();
+    if (binder == nullptr) {
+        jniThrowException(env, "java/lang/IllegalStateException", "Native IBinder is null");
+        return nullptr;
+    }
+    sp<IBinder> extension;
+    status_t err = binder->getExtension(&extension);
+    if (err != OK) {
+        signalExceptionForError(env, obj, err, true /* canThrowRemoteException */);
+        return nullptr;
+    }
+    return javaObjectForIBinder(env, extension);
+}
+
 // ----------------------------------------------------------------------------
 
 static const JNINativeMethod gBinderProxyMethods[] = {
@@ -1517,6 +1569,7 @@
     {"linkToDeath",         "(Landroid/os/IBinder$DeathRecipient;I)V", (void*)android_os_BinderProxy_linkToDeath},
     {"unlinkToDeath",       "(Landroid/os/IBinder$DeathRecipient;I)Z", (void*)android_os_BinderProxy_unlinkToDeath},
     {"getNativeFinalizer",  "()J", (void*)android_os_BinderProxy_getNativeFinalizer},
+    {"getExtension",        "()Landroid/os/IBinder;", (void*)android_os_BinderProxy_getExtension},
 };
 
 const char* const kBinderProxyPathName = "android/os/BinderProxy";
diff --git a/core/jni/android_view_KeyEvent.cpp b/core/jni/android_view_KeyEvent.cpp
index 57979bd..bbe563e 100644
--- a/core/jni/android_view_KeyEvent.cpp
+++ b/core/jni/android_view_KeyEvent.cpp
@@ -102,7 +102,7 @@
                                         event->getRepeatCount(), event->getMetaState(),
                                         event->getDeviceId(), event->getScanCode(),
                                         event->getFlags(), event->getSource(),
-                                        event->getDisplayId(), hmac.get(), NULL);
+                                        event->getDisplayId(), hmac.get(), nullptr);
     if (env->ExceptionCheck()) {
         ALOGE("An exception occurred while obtaining a key event.");
         LOGE_EX(env);
diff --git a/core/jni/android_view_RenderNode.cpp b/core/jni/android_view_RenderNode.cpp
index 538861e..a8246c7 100644
--- a/core/jni/android_view_RenderNode.cpp
+++ b/core/jni/android_view_RenderNode.cpp
@@ -151,11 +151,11 @@
     return true;
 }
 
-static jboolean android_view_RenderNode_setOutlineConvexPath(CRITICAL_JNI_PARAMS_COMMA jlong renderNodePtr,
+static jboolean android_view_RenderNode_setOutlinePath(CRITICAL_JNI_PARAMS_COMMA jlong renderNodePtr,
         jlong outlinePathPtr, jfloat alpha) {
     RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr);
     SkPath* outlinePath = reinterpret_cast<SkPath*>(outlinePathPtr);
-    renderNode->mutateStagingProperties().mutableOutline().setConvexPath(outlinePath, alpha);
+    renderNode->mutateStagingProperties().mutableOutline().setPath(outlinePath, alpha);
     renderNode->setPropertyFieldsDirty(RenderNode::GENERIC);
     return true;
 }
@@ -684,7 +684,7 @@
     { "nSetProjectionReceiver","(JZ)Z",  (void*) android_view_RenderNode_setProjectionReceiver },
 
     { "nSetOutlineRoundRect",  "(JIIIIFF)Z", (void*) android_view_RenderNode_setOutlineRoundRect },
-    { "nSetOutlineConvexPath", "(JJF)Z", (void*) android_view_RenderNode_setOutlineConvexPath },
+    { "nSetOutlinePath",       "(JJF)Z", (void*) android_view_RenderNode_setOutlinePath },
     { "nSetOutlineEmpty",      "(J)Z",   (void*) android_view_RenderNode_setOutlineEmpty },
     { "nSetOutlineNone",       "(J)Z",   (void*) android_view_RenderNode_setOutlineNone },
     { "nHasShadow",            "(J)Z",   (void*) android_view_RenderNode_hasShadow },
diff --git a/core/jni/android_view_SurfaceControl.cpp b/core/jni/android_view_SurfaceControl.cpp
index 2b9d454..f564d75 100644
--- a/core/jni/android_view_SurfaceControl.cpp
+++ b/core/jni/android_view_SurfaceControl.cpp
@@ -22,20 +22,22 @@
 #include "android_hardware_input_InputWindowHandle.h"
 #include "core_jni_helpers.h"
 
+#include <memory>
+
+#include <android-base/chrono_utils.h>
 #include <android/graphics/region.h>
 #include <android_runtime/AndroidRuntime.h>
-#include <android-base/chrono_utils.h>
-#include <nativehelper/JNIHelp.h>
-#include <nativehelper/ScopedUtfChars.h>
 #include <android_runtime/android_view_Surface.h>
 #include <android_runtime/android_view_SurfaceSession.h>
 #include <gui/Surface.h>
 #include <gui/SurfaceComposerClient.h>
 #include <jni.h>
-#include <memory>
+#include <nativehelper/JNIHelp.h>
+#include <nativehelper/ScopedUtfChars.h>
 #include <stdio.h>
 #include <system/graphics.h>
 #include <ui/ConfigStoreTypes.h>
+#include <ui/DisplayConfig.h>
 #include <ui/DisplayInfo.h>
 #include <ui/DisplayedFrameStats.h>
 #include <ui/FrameStats.h>
@@ -63,16 +65,21 @@
 static struct {
     jclass clazz;
     jmethodID ctor;
+    jfieldID density;
+    jfieldID secure;
+} gDisplayInfoClassInfo;
+
+static struct {
+    jclass clazz;
+    jmethodID ctor;
     jfieldID width;
     jfieldID height;
-    jfieldID refreshRate;
-    jfieldID density;
     jfieldID xDpi;
     jfieldID yDpi;
-    jfieldID secure;
+    jfieldID refreshRate;
     jfieldID appVsyncOffsetNanos;
     jfieldID presentationDeadlineNanos;
-} gPhysicalDisplayInfoClassInfo;
+} gDisplayConfigClassInfo;
 
 static struct {
     jfieldID bottom;
@@ -766,37 +773,46 @@
     }
 }
 
-static jobjectArray nativeGetDisplayConfigs(JNIEnv* env, jclass clazz,
-        jobject tokenObj) {
-    sp<IBinder> token(ibinderForJavaObject(env, tokenObj));
-    if (token == NULL) return NULL;
-
-    Vector<DisplayInfo> configs;
-    if (SurfaceComposerClient::getDisplayConfigs(token, &configs) != NO_ERROR ||
-            configs.size() == 0) {
-        return NULL;
+static jobject nativeGetDisplayInfo(JNIEnv* env, jclass clazz, jobject tokenObj) {
+    DisplayInfo info;
+    if (const auto token = ibinderForJavaObject(env, tokenObj);
+        !token || SurfaceComposerClient::getDisplayInfo(token, &info) != NO_ERROR) {
+        return nullptr;
     }
 
-    jobjectArray configArray = env->NewObjectArray(configs.size(),
-            gPhysicalDisplayInfoClassInfo.clazz, NULL);
+    jobject object = env->NewObject(gDisplayInfoClassInfo.clazz, gDisplayInfoClassInfo.ctor);
+    env->SetFloatField(object, gDisplayInfoClassInfo.density, info.density);
+    env->SetBooleanField(object, gDisplayInfoClassInfo.secure, info.secure);
+    return object;
+}
+
+static jobjectArray nativeGetDisplayConfigs(JNIEnv* env, jclass clazz, jobject tokenObj) {
+    Vector<DisplayConfig> configs;
+    if (const auto token = ibinderForJavaObject(env, tokenObj); !token ||
+        SurfaceComposerClient::getDisplayConfigs(token, &configs) != NO_ERROR ||
+        configs.isEmpty()) {
+        return nullptr;
+    }
+
+    jobjectArray configArray =
+            env->NewObjectArray(configs.size(), gDisplayConfigClassInfo.clazz, nullptr);
 
     for (size_t c = 0; c < configs.size(); ++c) {
-        const DisplayInfo& info = configs[c];
-        jobject infoObj = env->NewObject(gPhysicalDisplayInfoClassInfo.clazz,
-                gPhysicalDisplayInfoClassInfo.ctor);
-        env->SetIntField(infoObj, gPhysicalDisplayInfoClassInfo.width, info.w);
-        env->SetIntField(infoObj, gPhysicalDisplayInfoClassInfo.height, info.h);
-        env->SetFloatField(infoObj, gPhysicalDisplayInfoClassInfo.refreshRate, info.fps);
-        env->SetFloatField(infoObj, gPhysicalDisplayInfoClassInfo.density, info.density);
-        env->SetFloatField(infoObj, gPhysicalDisplayInfoClassInfo.xDpi, info.xdpi);
-        env->SetFloatField(infoObj, gPhysicalDisplayInfoClassInfo.yDpi, info.ydpi);
-        env->SetBooleanField(infoObj, gPhysicalDisplayInfoClassInfo.secure, info.secure);
-        env->SetLongField(infoObj, gPhysicalDisplayInfoClassInfo.appVsyncOffsetNanos,
-                info.appVsyncOffset);
-        env->SetLongField(infoObj, gPhysicalDisplayInfoClassInfo.presentationDeadlineNanos,
-                info.presentationDeadline);
-        env->SetObjectArrayElement(configArray, static_cast<jsize>(c), infoObj);
-        env->DeleteLocalRef(infoObj);
+        const DisplayConfig& config = configs[c];
+        jobject object =
+                env->NewObject(gDisplayConfigClassInfo.clazz, gDisplayConfigClassInfo.ctor);
+        env->SetIntField(object, gDisplayConfigClassInfo.width, config.resolution.getWidth());
+        env->SetIntField(object, gDisplayConfigClassInfo.height, config.resolution.getHeight());
+        env->SetFloatField(object, gDisplayConfigClassInfo.xDpi, config.xDpi);
+        env->SetFloatField(object, gDisplayConfigClassInfo.yDpi, config.yDpi);
+
+        env->SetFloatField(object, gDisplayConfigClassInfo.refreshRate, config.refreshRate);
+        env->SetLongField(object, gDisplayConfigClassInfo.appVsyncOffsetNanos,
+                          config.appVsyncOffset);
+        env->SetLongField(object, gDisplayConfigClassInfo.presentationDeadlineNanos,
+                          config.presentationDeadline);
+        env->SetObjectArrayElement(configArray, static_cast<jsize>(c), object);
+        env->DeleteLocalRef(object);
     }
 
     return configArray;
@@ -1409,7 +1425,9 @@
             (void*)nativeSetDisplayProjection },
     {"nativeSetDisplaySize", "(JLandroid/os/IBinder;II)V",
             (void*)nativeSetDisplaySize },
-    {"nativeGetDisplayConfigs", "(Landroid/os/IBinder;)[Landroid/view/SurfaceControl$PhysicalDisplayInfo;",
+    {"nativeGetDisplayInfo", "(Landroid/os/IBinder;)Landroid/view/SurfaceControl$DisplayInfo;",
+            (void*)nativeGetDisplayInfo },
+    {"nativeGetDisplayConfigs", "(Landroid/os/IBinder;)[Landroid/view/SurfaceControl$DisplayConfig;",
             (void*)nativeGetDisplayConfigs },
     {"nativeGetActiveConfig", "(Landroid/os/IBinder;)I",
             (void*)nativeGetActiveConfig },
@@ -1507,21 +1525,24 @@
     int err = RegisterMethodsOrDie(env, "android/view/SurfaceControl",
             sSurfaceControlMethods, NELEM(sSurfaceControlMethods));
 
-    jclass clazz = FindClassOrDie(env, "android/view/SurfaceControl$PhysicalDisplayInfo");
-    gPhysicalDisplayInfoClassInfo.clazz = MakeGlobalRefOrDie(env, clazz);
-    gPhysicalDisplayInfoClassInfo.ctor = GetMethodIDOrDie(env,
-            gPhysicalDisplayInfoClassInfo.clazz, "<init>", "()V");
-    gPhysicalDisplayInfoClassInfo.width =       GetFieldIDOrDie(env, clazz, "width", "I");
-    gPhysicalDisplayInfoClassInfo.height =      GetFieldIDOrDie(env, clazz, "height", "I");
-    gPhysicalDisplayInfoClassInfo.refreshRate = GetFieldIDOrDie(env, clazz, "refreshRate", "F");
-    gPhysicalDisplayInfoClassInfo.density =     GetFieldIDOrDie(env, clazz, "density", "F");
-    gPhysicalDisplayInfoClassInfo.xDpi =        GetFieldIDOrDie(env, clazz, "xDpi", "F");
-    gPhysicalDisplayInfoClassInfo.yDpi =        GetFieldIDOrDie(env, clazz, "yDpi", "F");
-    gPhysicalDisplayInfoClassInfo.secure =      GetFieldIDOrDie(env, clazz, "secure", "Z");
-    gPhysicalDisplayInfoClassInfo.appVsyncOffsetNanos = GetFieldIDOrDie(env,
-            clazz, "appVsyncOffsetNanos", "J");
-    gPhysicalDisplayInfoClassInfo.presentationDeadlineNanos = GetFieldIDOrDie(env,
-            clazz, "presentationDeadlineNanos", "J");
+    jclass infoClazz = FindClassOrDie(env, "android/view/SurfaceControl$DisplayInfo");
+    gDisplayInfoClassInfo.clazz = MakeGlobalRefOrDie(env, infoClazz);
+    gDisplayInfoClassInfo.ctor = GetMethodIDOrDie(env, infoClazz, "<init>", "()V");
+    gDisplayInfoClassInfo.density = GetFieldIDOrDie(env, infoClazz, "density", "F");
+    gDisplayInfoClassInfo.secure = GetFieldIDOrDie(env, infoClazz, "secure", "Z");
+
+    jclass configClazz = FindClassOrDie(env, "android/view/SurfaceControl$DisplayConfig");
+    gDisplayConfigClassInfo.clazz = MakeGlobalRefOrDie(env, configClazz);
+    gDisplayConfigClassInfo.ctor = GetMethodIDOrDie(env, configClazz, "<init>", "()V");
+    gDisplayConfigClassInfo.width = GetFieldIDOrDie(env, configClazz, "width", "I");
+    gDisplayConfigClassInfo.height = GetFieldIDOrDie(env, configClazz, "height", "I");
+    gDisplayConfigClassInfo.xDpi = GetFieldIDOrDie(env, configClazz, "xDpi", "F");
+    gDisplayConfigClassInfo.yDpi = GetFieldIDOrDie(env, configClazz, "yDpi", "F");
+    gDisplayConfigClassInfo.refreshRate = GetFieldIDOrDie(env, configClazz, "refreshRate", "F");
+    gDisplayConfigClassInfo.appVsyncOffsetNanos =
+            GetFieldIDOrDie(env, configClazz, "appVsyncOffsetNanos", "J");
+    gDisplayConfigClassInfo.presentationDeadlineNanos =
+            GetFieldIDOrDie(env, configClazz, "presentationDeadlineNanos", "J");
 
     jclass rectClazz = FindClassOrDie(env, "android/graphics/Rect");
     gRectClassInfo.bottom = GetFieldIDOrDie(env, rectClazz, "bottom", "I");
diff --git a/core/jni/android_view_ThreadedRenderer.cpp b/core/jni/android_view_ThreadedRenderer.cpp
index 69ca17c..5a8225c 100644
--- a/core/jni/android_view_ThreadedRenderer.cpp
+++ b/core/jni/android_view_ThreadedRenderer.cpp
@@ -147,10 +147,12 @@
 }
 
 static jlong android_view_ThreadedRenderer_createProxy(JNIEnv* env, jobject clazz,
-        jboolean translucent, jlong rootRenderNodePtr) {
+        jboolean translucent, jboolean isWideGamut, jlong rootRenderNodePtr) {
     RootRenderNode* rootRenderNode = reinterpret_cast<RootRenderNode*>(rootRenderNodePtr);
     ContextFactoryImpl factory(rootRenderNode);
-    return (jlong) new RenderProxy(translucent, rootRenderNode, &factory);
+    RenderProxy* proxy = new RenderProxy(translucent, rootRenderNode, &factory);
+    proxy->setWideGamut(isWideGamut);
+    return (jlong) proxy;
 }
 
 static void android_view_ThreadedRenderer_deleteProxy(JNIEnv* env, jobject clazz,
@@ -627,7 +629,7 @@
     { "nSetProcessStatsBuffer", "(I)V", (void*) android_view_ThreadedRenderer_setProcessStatsBuffer },
     { "nGetRenderThreadTid", "(J)I", (void*) android_view_ThreadedRenderer_getRenderThreadTid },
     { "nCreateRootRenderNode", "()J", (void*) android_view_ThreadedRenderer_createRootRenderNode },
-    { "nCreateProxy", "(ZJ)J", (void*) android_view_ThreadedRenderer_createProxy },
+    { "nCreateProxy", "(ZZJ)J", (void*) android_view_ThreadedRenderer_createProxy },
     { "nDeleteProxy", "(J)V", (void*) android_view_ThreadedRenderer_deleteProxy },
     { "nLoadSystemProperties", "(J)Z", (void*) android_view_ThreadedRenderer_loadSystemProperties },
     { "nSetName", "(JLjava/lang/String;)V", (void*) android_view_ThreadedRenderer_setName },
diff --git a/core/jni/android_view_VerifiedKeyEvent.cpp b/core/jni/android_view_VerifiedKeyEvent.cpp
new file mode 100644
index 0000000..bba10aa
--- /dev/null
+++ b/core/jni/android_view_VerifiedKeyEvent.cpp
@@ -0,0 +1,50 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "VerifiedKey-JNI"
+
+#include "android_view_VerifiedKeyEvent.h"
+#include <input/Input.h>
+#include "core_jni_helpers.h"
+
+namespace android {
+
+static struct {
+    jclass clazz;
+
+    jmethodID constructor;
+} gVerifiedKeyEventClassInfo;
+
+// ----------------------------------------------------------------------------
+
+jobject android_view_VerifiedKeyEvent(JNIEnv* env, const VerifiedKeyEvent& event) {
+    return env->NewObject(gVerifiedKeyEventClassInfo.clazz, gVerifiedKeyEventClassInfo.constructor,
+                          event.deviceId, event.eventTimeNanos, event.source, event.displayId,
+                          event.action, event.downTimeNanos, event.flags, event.keyCode,
+                          event.scanCode, event.metaState, event.repeatCount);
+}
+
+int register_android_view_VerifiedKeyEvent(JNIEnv* env) {
+    jclass clazz = FindClassOrDie(env, "android/view/VerifiedKeyEvent");
+    gVerifiedKeyEventClassInfo.clazz = MakeGlobalRefOrDie(env, clazz);
+
+    gVerifiedKeyEventClassInfo.constructor =
+            GetMethodIDOrDie(env, clazz, "<init>", "(IJIIIJIIIII)V");
+
+    return OK;
+}
+
+} // namespace android
diff --git a/core/jni/android_view_VerifiedKeyEvent.h b/core/jni/android_view_VerifiedKeyEvent.h
new file mode 100644
index 0000000..032291b
--- /dev/null
+++ b/core/jni/android_view_VerifiedKeyEvent.h
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+#ifndef _ANDROID_VIEW_VERIFIEDKEYEVENT_H
+#define _ANDROID_VIEW_VERIFIEDKEYEVENT_H
+
+#include "jni.h"
+
+namespace android {
+
+class VerifiedKeyEvent;
+
+/* Create an instance of a DVM VerifiedMotionEvent object
+ * Return nullptr on error. */
+extern jobject android_view_VerifiedKeyEvent(JNIEnv* env, const VerifiedKeyEvent& event);
+
+} // namespace android
+
+#endif // _ANDROID_VIEW_VERIFIEDKEYEVENT_H
diff --git a/core/jni/android_view_VerifiedMotionEvent.cpp b/core/jni/android_view_VerifiedMotionEvent.cpp
new file mode 100644
index 0000000..c281197
--- /dev/null
+++ b/core/jni/android_view_VerifiedMotionEvent.cpp
@@ -0,0 +1,51 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "VerifiedMotion-JNI"
+
+#include "android_view_VerifiedMotionEvent.h"
+#include <input/Input.h>
+#include "core_jni_helpers.h"
+
+namespace android {
+
+static struct {
+    jclass clazz;
+
+    jmethodID constructor;
+} gVerifiedMotionEventClassInfo;
+
+// ----------------------------------------------------------------------------
+
+jobject android_view_VerifiedMotionEvent(JNIEnv* env, const VerifiedMotionEvent& event) {
+    return env->NewObject(gVerifiedMotionEventClassInfo.clazz,
+                          gVerifiedMotionEventClassInfo.constructor, event.deviceId,
+                          event.eventTimeNanos, event.source, event.displayId, event.rawX,
+                          event.rawY, event.actionMasked, event.downTimeNanos, event.flags,
+                          event.metaState, event.buttonState);
+}
+
+int register_android_view_VerifiedMotionEvent(JNIEnv* env) {
+    jclass clazz = FindClassOrDie(env, "android/view/VerifiedMotionEvent");
+    gVerifiedMotionEventClassInfo.clazz = MakeGlobalRefOrDie(env, clazz);
+
+    gVerifiedMotionEventClassInfo.constructor =
+            GetMethodIDOrDie(env, clazz, "<init>", "(IJIIFFIJIII)V");
+
+    return OK;
+}
+
+} // namespace android
diff --git a/core/jni/android_view_VerifiedMotionEvent.h b/core/jni/android_view_VerifiedMotionEvent.h
new file mode 100644
index 0000000..deda1b7
--- /dev/null
+++ b/core/jni/android_view_VerifiedMotionEvent.h
@@ -0,0 +1,32 @@
+/*
+ * 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.
+ */
+
+#ifndef _ANDROID_VIEW_VERIFIEDMOTIONEVENT_H
+#define _ANDROID_VIEW_VERIFIEDMOTIONEVENT_H
+
+#include "jni.h"
+
+namespace android {
+
+class VerifiedMotionEvent;
+
+/* Create an instance of a DVM VerifiedMotionEvent object
+ * Return nullptr on error. */
+extern jobject android_view_VerifiedMotionEvent(JNIEnv* env, const VerifiedMotionEvent& event);
+
+} // namespace android
+
+#endif // _ANDROID_VIEW_VERIFIEDMOTIONEVENT_H
diff --git a/core/jni/com_android_internal_os_Zygote.cpp b/core/jni/com_android_internal_os_Zygote.cpp
index 4b969ec..7a9a3f8 100644
--- a/core/jni/com_android_internal_os_Zygote.cpp
+++ b/core/jni/com_android_internal_os_Zygote.cpp
@@ -611,6 +611,12 @@
 
   // Set the jemalloc decay time to 1.
   mallopt(M_DECAY_TIME, 1);
+
+  // Maybe initialize GWP-ASan here. Must be called after
+  // mallopt(M_SET_ZYGOTE_CHILD).
+  bool ForceEnableGwpAsan = false;
+  android_mallopt(M_INITIALIZE_GWP_ASAN, &ForceEnableGwpAsan,
+                  sizeof(ForceEnableGwpAsan));
 }
 
 static void SetUpSeccompFilter(uid_t uid, bool is_child_zygote) {
@@ -820,6 +826,7 @@
   if (isFuse) {
     if (mount_mode == MOUNT_EXTERNAL_PASS_THROUGH) {
       const std::string pass_through_source = StringPrintf("/mnt/pass_through/%d", user_id);
+      PrepareDir(pass_through_source, 0710, AID_ROOT, AID_MEDIA_RW, fail_fn);
       BindMount(pass_through_source, "/storage", fail_fn);
     } else if (mount_mode == MOUNT_EXTERNAL_INSTALLER) {
       const std::string installer_source = StringPrintf("/mnt/installer/%d", user_id);
@@ -1084,6 +1091,13 @@
 
   android_fdsan_error_level fdsan_error_level = android_fdsan_get_error_level();
 
+  // Purge unused native memory in an attempt to reduce the amount of false
+  // sharing with the child process.  By reducing the size of the libc_malloc
+  // region shared with the child process we reduce the number of pages that
+  // transition to the private-dirty state when malloc adjusts the meta-data
+  // on each of the pages it is managing after the fork.
+  mallopt(M_PURGE, 0);
+
   pid_t pid = fork();
 
   if (pid == 0) {
@@ -1482,6 +1496,11 @@
     std::string mirrorCurPackageProfile = StringPrintf("/data_mirror/cur_profiles/%d/%s",
         user_id, packageName.c_str());
 
+    if (access(mirrorCurPackageProfile.c_str(), F_OK) != 0) {
+      ALOGW("Can't access app profile directory: %s", mirrorCurPackageProfile.c_str());
+      continue;
+    }
+
     PrepareDir(actualCurPackageProfile, DEFAULT_DATA_DIR_PERMISSION, uid, uid, fail_fn);
     BindMount(mirrorCurPackageProfile, actualCurPackageProfile, fail_fn);
   }
diff --git a/core/jni/fd_utils.cpp b/core/jni/fd_utils.cpp
index 1fcc8ac..cfd3c09 100644
--- a/core/jni/fd_utils.cpp
+++ b/core/jni/fd_utils.cpp
@@ -51,6 +51,7 @@
         "/dev/socket/webview_zygote",
         "/dev/socket/heapprofd",
         "/sys/kernel/debug/tracing/trace_marker",
+        "/sys/kernel/tracing/trace_marker",
         "/system/framework/framework-res.apk",
         "/dev/urandom",
         "/dev/ion",
diff --git a/core/proto/android/app/appexitinfo.proto b/core/proto/android/app/appexitinfo.proto
index e23f150..6a49220 100644
--- a/core/proto/android/app/appexitinfo.proto
+++ b/core/proto/android/app/appexitinfo.proto
@@ -178,8 +178,8 @@
     }
 
     optional Importance importance = 10;
-    optional int32 pss = 11;
-    optional int32 rss = 12;
+    optional int64 pss = 11;
+    optional int64 rss = 12;
     optional int64 timestamp = 13;
     optional string description = 14;
 }
diff --git a/core/proto/android/app/settings_enums.proto b/core/proto/android/app/settings_enums.proto
index ce03727..53aa2bb 100644
--- a/core/proto/android/app/settings_enums.proto
+++ b/core/proto/android/app/settings_enums.proto
@@ -708,6 +708,22 @@
 
     // ACTION: Deny "Access all files" for an app
     APP_SPECIAL_PERMISSION_MANAGE_EXT_STRG_DENY = 1731;
+
+    // ACTION: Battery feature usage
+    ACTION_BATTERY_OPTION_FEATURE_USAGE = 1732;
+
+    // ACTION: Battery feature runtime event
+    ACTION_BATTERY_OPTION_RUNTIME_EVENT = 1733;
+
+    // ACTION: Settings > Developer Options > Toggle on Wireless debugging
+    // CATEGORY: SETTINGS
+    // OS: R
+    ACTION_ADB_WIRELESS_ON = 1734;
+
+    // ACTION: Settings > Developer Options > Toggle off Wireless debugging
+    // CATEGORY: SETTINGS
+    // OS: R
+    ACTION_ADB_WIRELESS_OFF = 1735;
 }
 
 /**
@@ -2562,10 +2578,43 @@
     // CATEGORY: SETTINGS
     // OS: R
     OPEN_SUPPORTED_LINKS = 1824;
-    
+
     // OPEN: Settings > Display > Dark theme > Set start time dialog
     DIALOG_DARK_THEME_SET_START_TIME = 1825;
 
     // OPEN: Settings > Display > Dark theme > Set end time dialog
     DIALOG_DARK_THEME_SET_END_TIME = 1826;
+
+    // OPEN: Settings -> Sound -> Vibrate for calls
+    // CATEGORY: SETTINGS
+    // OS: R
+    VIBRATE_FOR_CALLS = 1827;
+
+    // OPEN: Settings > Connected devices > Connection preferences > NFC
+    // CATEGORY: SETTINGS
+    // OS: R
+    CONNECTION_DEVICE_ADVANCED_NFC = 1828;
+
+    // OPEN: Settings -> Apps & Notifications -> Special App Access
+    INTERACT_ACROSS_PROFILES = 1829;
+
+    // OPEN: Settings > Notifications > (app or conversations) > conversation
+    NOTIFICATION_CONVERSATION_SETTINGS = 1830;
+
+    // OPEN: Settings > Developer Options > Wireless debugging
+    // CATEGORY: SETTINGS
+    // OS: R
+    SETTINGS_ADB_WIRELESS = 1831;
+
+    // OPEN: Settings > Developer Options > Wireless debugging
+    //   > Pair device with pairing code > Pairing code dialog
+    // CATEGORY: SETTINGS
+    // OS: R
+    ADB_WIRELESS_DEVICE_PAIRING_DIALOG = 1832;
+
+    // OPEN: Settings > Developer Options > Wireless debugging
+    //   > Pair device with QR code > Scan QR code > Pairing device dialog
+    // CATEGORY: SETTINGS
+    // OS: R
+    ADB_WIRELESS_DEVICE_QR_PAIRING_DIALOG = 1833;
 }
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/core/proto/android/content/locusid.proto
similarity index 63%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to core/proto/android/content/locusid.proto
index f5e2405..4f0ce6b 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/core/proto/android/content/locusid.proto
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,14 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+syntax = "proto2";
 
-parcelable PhoneTimeSuggestion;
+package android.content;
+
+option java_multiple_files = true;
+
+// On disk representation of android.content.LocusId. Currently used by
+// com.android.server.people.ConversationInfoProto.
+message LocusIdProto {
+  optional string locus_id = 1;
+}
diff --git a/core/proto/android/os/incident.proto b/core/proto/android/os/incident.proto
index 8adcc9e..03676dd 100644
--- a/core/proto/android/os/incident.proto
+++ b/core/proto/android/os/incident.proto
@@ -52,6 +52,7 @@
 import "frameworks/base/core/proto/android/service/print.proto";
 import "frameworks/base/core/proto/android/service/procstats.proto";
 import "frameworks/base/core/proto/android/service/restricted_image.proto";
+import "frameworks/base/core/proto/android/service/sensor_service.proto";
 import "frameworks/base/core/proto/android/service/usb.proto";
 import "frameworks/base/core/proto/android/util/event_log_tags.proto";
 import "frameworks/base/core/proto/android/util/log.proto";
@@ -427,7 +428,7 @@
         (section).args = "dropbox --proto system_app_wtf"
     ];
 
-    optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_crashes = 3037 [
+    optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_crash = 3037 [
         (section).type = SECTION_DUMPSYS,
         (section).args = "dropbox --proto system_server_crash"
     ];
@@ -492,6 +493,11 @@
         (section).args = "contexthub --proto"
     ];
 
+    optional android.service.SensorServiceProto sensor_service = 3053 [
+        (section).type = SECTION_DUMPSYS,
+        (section).args = "sensorservice --proto"
+    ];
+
     // Reserved for OEMs.
     extensions 50000 to 100000;
 }
diff --git a/core/proto/android/providers/settings/secure.proto b/core/proto/android/providers/settings/secure.proto
index 77d4e87..6d9e8ab 100644
--- a/core/proto/android/providers/settings/secure.proto
+++ b/core/proto/android/providers/settings/secure.proto
@@ -80,6 +80,11 @@
     }
     optional Accessibility accessibility = 2;
 
+    message AdaptiveSleep {
+        optional SettingProto enabled = 1 [ (android.privacy).dest = DEST_AUTOMATIC ];
+    }
+    optional AdaptiveSleep adaptive_sleep = 78;
+
     // Origins for which browsers should allow geolocation by default.
     // The value is a space-separated list of origins.
     optional SettingProto allowed_geolocation_origins = 3;
@@ -574,5 +579,5 @@
 
     // Please insert fields in alphabetical order and group them into messages
     // if possible (to avoid reaching the method limit).
-    // Next tag = 78;
+    // Next tag = 79;
 }
diff --git a/core/proto/android/providers/settings/system.proto b/core/proto/android/providers/settings/system.proto
index f8143de8..b723b53 100644
--- a/core/proto/android/providers/settings/system.proto
+++ b/core/proto/android/providers/settings/system.proto
@@ -161,6 +161,8 @@
         optional SettingProto brightness_for_vr = 3 [ (android.privacy).dest = DEST_AUTOMATIC ];
         optional SettingProto brightness_mode = 4 [ (android.privacy).dest = DEST_AUTOMATIC ];
         optional SettingProto auto_brightness_adj = 5 [ (android.privacy).dest = DEST_AUTOMATIC ];
+        optional SettingProto brightness_float = 6 [ (android.privacy).dest = DEST_AUTOMATIC ];
+        optional SettingProto brightness_for_vr_float = 7 [ (android.privacy).dest = DEST_AUTOMATIC ];
     }
     optional Screen screen = 22;
 
diff --git a/core/proto/android/server/activitymanagerservice.proto b/core/proto/android/server/activitymanagerservice.proto
index 1426932..2d2ead4 100644
--- a/core/proto/android/server/activitymanagerservice.proto
+++ b/core/proto/android/server/activitymanagerservice.proto
@@ -27,7 +27,6 @@
 import "frameworks/base/core/proto/android/content/configuration.proto";
 import "frameworks/base/core/proto/android/content/intent.proto";
 import "frameworks/base/core/proto/android/content/package_item_info.proto";
-import "frameworks/base/core/proto/android/graphics/rect.proto";
 import "frameworks/base/core/proto/android/internal/processstats.proto";
 import "frameworks/base/core/proto/android/os/bundle.proto";
 import "frameworks/base/core/proto/android/os/looper.proto";
@@ -55,87 +54,8 @@
 message ActivityManagerServiceDumpActivitiesProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
 
-    optional ActivityStackSupervisorProto activity_stack_supervisor = 1;
-}
-
-message ActivityStackSupervisorProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    repeated ActivityDisplayProto displays = 2;
-    optional KeyguardControllerProto keyguard_controller = 3;
-    // TODO(b/111541062): Focused stack and resumed activity are now per-display. Topmost instances
-    // can be obtained from top display and these fields can be removed.
-    optional int32 focused_stack_id = 4;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 5;
-    // Whether or not the home activity is the recents activity. This is needed for the CTS tests to
-    // know what activity types to check for when invoking splitscreen multi-window.
-    optional bool is_home_recents_component = 6;
-    repeated .com.android.server.wm.IdentifierProto pending_activities = 7;
-    optional .com.android.server.wm.RootWindowContainerProto root_window_container = 8;
-}
-
-/* represents ActivityStackSupervisor.ActivityDisplay */
-message ActivityDisplayProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated ActivityStackProto stacks = 3;
-    optional int32 focused_stack_id = 4;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 5;
-    optional bool single_task_instance = 6;
-    optional .com.android.server.wm.DisplayContentProto display = 7;
-}
-
-message ActivityStackProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated TaskRecordProto tasks = 3;
-    optional .com.android.server.wm.IdentifierProto resumed_activity = 4;
-    optional int32 display_id = 5;
-    optional bool fullscreen = 6;
-    optional .android.graphics.RectProto bounds = 7;
-    optional .com.android.server.wm.StackProto stack = 8;
-}
-
-message TaskRecordProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 1 [deprecated=true];
-    optional int32 id = 2;
-    repeated .com.android.server.wm.ActivityRecordProto activities = 3;
-    optional int32 stack_id = 4;
-    optional .android.graphics.RectProto last_non_fullscreen_bounds = 5;
-    optional string real_activity = 6;
-    optional string orig_activity = 7;
-    optional int32 activity_type = 8;
-    optional int32 resize_mode = 9;
-    optional bool fullscreen = 10;
-    optional .android.graphics.RectProto bounds = 11;
-    optional int32 min_width = 12;
-    optional int32 min_height = 13;
-    optional .com.android.server.wm.TaskProto task = 14;
-}
-
-message KeyguardControllerProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional bool keyguard_showing = 1;
-    repeated KeyguardOccludedProto keyguard_occluded_states= 2;
-    optional bool aod_showing = 3;
-}
-
-message KeyguardOccludedProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional int32 display_id = 1;
-    optional bool keyguard_occluded = 2;
+    reserved 1; // activity_stack_supervisor
+    optional .com.android.server.wm.RootWindowContainerProto root_window_container = 2;
 }
 
 // "dumpsys activity --proto broadcasts"
@@ -669,8 +589,6 @@
     optional int64 previous_proc_visible_time_ms = 17;
     optional ProcessRecordProto heavy_weight_proc = 18;
     optional .android.content.ConfigurationProto global_configuration = 19;
-    // ActivityStackSupervisorProto dumps these values as well, still here?
-    // repeated ActivityDisplayProto displays = 20;
 
     optional bool config_will_change = 21;
 
diff --git a/core/proto/android/server/connectivity/data_stall_event.proto b/core/proto/android/server/connectivity/data_stall_event.proto
index a82326f..23fcf6e 100644
--- a/core/proto/android/server/connectivity/data_stall_event.proto
+++ b/core/proto/android/server/connectivity/data_stall_event.proto
@@ -34,7 +34,7 @@
     AP_BAND_5GHZ = 2;
 }
 
-// Refer to definition in ServiceState.java.
+// Refer to definition in TelephonyManager.java.
 enum RadioTech {
   RADIO_TECHNOLOGY_UNKNOWN = 0;
   RADIO_TECHNOLOGY_GPRS = 1;
@@ -49,8 +49,8 @@
   RADIO_TECHNOLOGY_HSUPA = 10;
   RADIO_TECHNOLOGY_HSPA = 11;
   RADIO_TECHNOLOGY_EVDO_B = 12;
-  RADIO_TECHNOLOGY_EHRPD = 13;
-  RADIO_TECHNOLOGY_LTE = 14;
+  RADIO_TECHNOLOGY_LTE = 13;
+  RADIO_TECHNOLOGY_EHRPD = 14;
   RADIO_TECHNOLOGY_HSPAP = 15;
   RADIO_TECHNOLOGY_GSM = 16;
   RADIO_TECHNOLOGY_TD_SCDMA = 17;
diff --git a/core/proto/android/server/jobscheduler.proto b/core/proto/android/server/jobscheduler.proto
index 303d62d..4bef2e3 100644
--- a/core/proto/android/server/jobscheduler.proto
+++ b/core/proto/android/server/jobscheduler.proto
@@ -170,30 +170,13 @@
 message ConstantsProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
 
-    // Minimum # of idle jobs that must be ready in order to force the JMS to
-    // schedule things early.
-    optional int32 min_idle_count = 1;
-    // Minimum # of charging jobs that must be ready in order to force the JMS
-    // to schedule things early.
-    optional int32 min_charging_count = 2;
-    // Minimum # of "battery not low" jobs that must be ready in order to force
-    // the JMS to schedule things early.
-    optional int32 min_battery_not_low_count = 3;
-    // Minimum # of "storage not low" jobs that must be ready in order to force
-    // the JMS to schedule things early.
-    optional int32 min_storage_not_low_count = 4;
-    // Minimum # of connectivity jobs that must be ready in order to force the
-    // JMS to schedule things early. 1 == Run connectivity jobs as soon as
-    // ready.
-    optional int32 min_connectivity_count = 5;
-    // Minimum # of content trigger jobs that must be ready in order to force
-    // the JMS to schedule things early.
-    optional int32 min_content_count = 6;
-    // Minimum # of jobs (with no particular constraints) for which the JMS will
-    // be happy running some work early. This (and thus the other min counts)
-    // is now set to 1, to prevent any batching at this level. Since we now do
-    // batching through doze, that is a much better mechanism.
-    optional int32 min_ready_jobs_count = 7;
+    reserved 1; // min_idle_count
+    reserved 2; // min_charging_count
+    reserved 3; // min_battery_not_low_count
+    reserved 4; // min_storage_not_low_count
+    reserved 5; // min_connectivity_count
+    reserved 6; // min_content_count
+    reserved 7; // min_ready_jobs_count
     // Minimum # of non-ACTIVE jobs for which the JMS will be happy running some work early.
     optional int32 min_ready_non_active_jobs_count = 29;
     // Don't batch a non-ACTIVE job if it's been delayed due to force batching attempts for
@@ -219,12 +202,8 @@
     // The maximum number of background jobs we allow when the system is in a
     // critical memory state.
     optional int32 bg_critical_job_count = 14;
-    // The maximum number of times we allow a job to have itself rescheduled
-    // before giving up on it, for standard jobs.
-    optional int32 max_standard_reschedule_count = 15;
-    // The maximum number of times we allow a job to have itself rescheduled
-    // before giving up on it, for jobs that are executing work.
-    optional int32 max_work_reschedule_count = 16;
+    reserved 15; // max_standard_reschedule_count
+    reserved 16; // max_work_reschedule_count
     // The minimum backoff time to allow for linear backoff.
     optional int64 min_linear_backoff_time_ms = 17;
     // The minimum backoff time to allow for exponential backoff.
diff --git a/core/proto/android/server/notificationhistory.proto b/core/proto/android/server/notificationhistory.proto
index 1e6ee3f..6749719 100644
--- a/core/proto/android/server/notificationhistory.proto
+++ b/core/proto/android/server/notificationhistory.proto
@@ -17,8 +17,6 @@
 syntax = "proto2";
 package com.android.server.notification;
 
-import "frameworks/base/core/proto/android/server/enums.proto";
-
 option java_multiple_files = true;
 
 // On disk data store for historical notifications
diff --git a/core/proto/android/server/peopleservice.proto b/core/proto/android/server/peopleservice.proto
new file mode 100644
index 0000000..294b6ef
--- /dev/null
+++ b/core/proto/android/server/peopleservice.proto
@@ -0,0 +1,75 @@
+/*
+ * 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.
+ */
+
+syntax = "proto2";
+
+package com.android.server.people;
+
+option java_multiple_files = true;
+
+import "frameworks/base/core/proto/android/content/locusid.proto";
+
+// On disk data of conversation infos for a user and app package.
+message ConversationInfosProto {
+
+  // The series of conversation infos for a user and app package.
+  repeated ConversationInfoProto conversation_infos = 1;
+}
+
+// Individual conversation info (com.android.server.people.data.ConversationInfo) for a user
+// and app package.
+message ConversationInfoProto {
+
+  // The conversation's shortcut id.
+  optional string shortcut_id = 1;
+
+  // The conversation's locus id.
+  optional .android.content.LocusIdProto locus_id_proto = 2;
+
+  // The URI of the contact in the conversation.
+  optional string contact_uri = 3;
+
+  // The notification channel id of the conversation.
+  optional string notification_channel_id = 4;
+
+  // Integer representation of shortcut bit flags.
+  optional int32 shortcut_flags = 5;
+
+  // Integer representation of conversation bit flags.
+  optional int32 conversation_flags = 6;
+}
+
+// Individual event (com.android.server.people.data.Event).
+message PeopleEventProto {
+
+  // For valid values, refer to java class documentation.
+  optional int32 event_type = 1;
+
+  optional int64 time = 2;
+
+  // The duration of the event. Should only be set for some event_types. Refer to java class
+  // documentation for details.
+  optional int32 duration = 3;
+}
+
+// Index of events' time distributions (com.android.server.people.data.EventIndex).
+message PeopleEventIndexProto {
+    // Each long value in event_bitmaps represents a time slot, there should be 4 values. Further
+    // details can be found in class documentation.
+    repeated int64 event_bitmaps = 1;
+
+    optional int64 last_updated_time = 2;
+}
diff --git a/core/proto/android/server/vibratorservice.proto b/core/proto/android/server/vibratorservice.proto
new file mode 100644
index 0000000..281a25e
--- /dev/null
+++ b/core/proto/android/server/vibratorservice.proto
@@ -0,0 +1,66 @@
+/*
+ * 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.
+ */
+
+syntax = "proto2";
+package com.android.server;
+
+option java_multiple_files = true;
+
+import "frameworks/base/core/proto/android/privacy.proto";
+
+message WaveformProto {
+   option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+   repeated int32 timings = 1;
+   repeated int32 amplitudes = 2;
+   required bool repeat = 3;
+}
+
+message PrebakedProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+    optional int32 effect_id = 1;
+    optional int32 effect_strength = 2;
+    optional int32 fallback = 3;
+}
+
+// A com.android.os.VibrationEffect object.
+message VibrationEffectProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+    optional WaveformProto waveform = 1;
+    optional PrebakedProto prebaked = 2;
+}
+
+message VibrationProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+    optional int64 start_time = 1;
+    optional VibrationEffectProto effect = 2;
+    optional VibrationEffectProto origin_effect = 3;
+}
+
+message VibratorServiceDumpProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+    optional VibrationProto current_vibration = 1;
+    optional bool is_vibrating = 2;
+    optional VibrationProto current_external_vibration = 3;
+    optional bool vibrator_under_external_control = 4;
+    optional bool low_power_mode = 5;
+    optional int32 haptic_feedback_intensity = 6;
+    optional int32 notification_intensity = 7;
+    optional int32 ring_intensity = 8;
+    repeated VibrationProto previous_ring_vibrations = 9;
+    repeated VibrationProto previous_notification_vibrations = 10;
+    repeated VibrationProto previous_alarm_vibrations = 11;
+    repeated VibrationProto previous_vibrations = 12;
+}
\ No newline at end of file
diff --git a/core/proto/android/server/windowmanagerservice.proto b/core/proto/android/server/windowmanagerservice.proto
index c0743e5..b0b9ce6f 100644
--- a/core/proto/android/server/windowmanagerservice.proto
+++ b/core/proto/android/server/windowmanagerservice.proto
@@ -54,8 +54,14 @@
 
     optional WindowContainerProto window_container = 1;
     repeated DisplayContentProto displays = 2;
+    reserved 3; // IdentifierProto windows
     /* window references in top down z order */
-    repeated IdentifierProto windows = 3;
+    repeated WindowStateProto windows = 4;
+    optional KeyguardControllerProto keyguard_controller = 5;
+    // Whether or not the home activity is the recents activity. This is needed for the CTS tests to
+    // know what activity types to check for when invoking splitscreen multi-window.
+    optional bool is_home_recents_component = 6;
+    repeated IdentifierProto pending_activities = 7;
 }
 
 message BarControllerProto {
@@ -94,6 +100,21 @@
     optional InteractiveState interactive_state = 5;
 }
 
+message KeyguardControllerProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional bool keyguard_showing = 1;
+    repeated KeyguardOccludedProto keyguard_occluded_states = 2;
+    optional bool aod_showing = 3;
+}
+
+message KeyguardOccludedProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional int32 display_id = 1;
+    optional bool keyguard_occluded = 2;
+}
+
 /* represents PhoneWindowManager */
 message WindowManagerPolicyProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
@@ -145,14 +166,14 @@
 
     optional WindowContainerProto window_container = 1;
     optional int32 id = 2;
-    repeated StackProto stacks = 3;
+    reserved 3; // stacks
     optional DockedStackDividerControllerProto docked_stack_divider_controller = 4;
     // Will be removed soon.
     optional PinnedStackControllerProto pinned_stack_controller = 5 [deprecated=true];
     /* non app windows */
-    repeated WindowTokenProto above_app_windows = 6;
-    repeated WindowTokenProto below_app_windows = 7;
-    repeated WindowTokenProto ime_windows = 8;
+    repeated WindowTokenProto above_app_windows = 6 [deprecated=true];
+    repeated WindowTokenProto below_app_windows = 7 [deprecated=true];
+    repeated WindowTokenProto ime_windows = 8 [deprecated=true];
     optional int32 dpi = 9;
     optional .android.view.DisplayInfoProto display_info = 10;
     optional int32 rotation = 11;
@@ -165,6 +186,36 @@
     repeated IdentifierProto closing_apps = 18;
     repeated IdentifierProto changing_apps = 19;
     repeated WindowTokenProto overlay_windows = 20;
+    optional DisplayAreaProto root_display_area = 21;
+
+
+    optional bool single_task_instance = 22;
+    optional int32 focused_root_task_id = 23;
+    optional .com.android.server.wm.IdentifierProto resumed_activity = 24;
+    repeated TaskProto tasks = 25;
+}
+
+/* represents DisplayArea object */
+message DisplayAreaProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional WindowContainerProto window_container = 1;
+    optional string name = 2 [ (.android.privacy).dest = DEST_EXPLICIT ];
+    repeated DisplayAreaChildProto children = 3;
+}
+
+/* represents a generic child of a DisplayArea */
+message DisplayAreaChildProto {
+    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    /* At most one of the following should be present: */
+
+    /* represents a DisplayArea child */
+    optional DisplayAreaProto display_area = 1;
+    /* represents a WindowToken child */
+    optional WindowTokenProto window = 2;
+    /* represents an unknown child - the class name is recorded */
+    repeated string unknown = 3;
 }
 
 /* represents DisplayFrames */
@@ -189,39 +240,41 @@
     optional .android.graphics.RectProto movement_bounds = 2 [deprecated=true];
 }
 
-/* represents TaskStack */
-message StackProto {
-    option (.android.msg_privacy).dest = DEST_AUTOMATIC;
-
-    optional WindowContainerProto window_container = 1;
-    optional int32 id = 2;
-    repeated TaskProto tasks = 3;
-    optional bool fills_parent = 4;
-    optional .android.graphics.RectProto bounds = 5;
-    optional bool animation_background_surface_is_dimming = 6 [deprecated=true];
-    optional bool defer_removal = 7;
-    optional float minimize_amount = 8;
-    optional bool adjusted_for_ime = 9;
-    optional float adjust_ime_amount = 10;
-    optional float adjust_divider_amount = 11;
-    optional .android.graphics.RectProto adjusted_bounds = 12;
-    optional bool animating_bounds = 13;
-}
-
 /* represents Task */
 message TaskProto {
     option (.android.msg_privacy).dest = DEST_AUTOMATIC;
 
     optional WindowContainerProto window_container = 1;
     optional int32 id = 2;
-    repeated ActivityRecordProto activity = 3;
+    reserved 3; // activity
     optional bool fills_parent = 4;
     optional .android.graphics.RectProto bounds = 5;
     optional .android.graphics.RectProto displayed_bounds = 6;
-    // Will be removed soon.
-    optional bool defer_removal = 7 [deprecated=true];
+    optional bool defer_removal = 7;
     optional int32 surface_width = 8;
     optional int32 surface_height = 9;
+
+    repeated TaskProto tasks = 10;
+    repeated ActivityRecordProto activities = 11;
+
+    optional .com.android.server.wm.IdentifierProto resumed_activity = 12;
+    optional string real_activity = 13;
+    optional string orig_activity = 14;
+
+    optional int32 display_id = 15;
+    optional int32 root_task_id = 16;
+    optional int32 activity_type = 17;
+    optional int32 resize_mode = 18;
+    optional int32 min_width = 19;
+    optional int32 min_height = 20;
+
+    optional .android.graphics.RectProto adjusted_bounds = 21;
+    optional .android.graphics.RectProto last_non_fullscreen_bounds = 22;
+    optional bool adjusted_for_ime = 23;
+    optional float adjust_ime_amount = 24;
+    optional float adjust_divider_amount = 25;
+    optional bool animating_bounds = 26;
+    optional float minimize_amount = 27;
 }
 
 /* represents ActivityRecordProto */
@@ -246,17 +299,15 @@
     optional int32 num_drawn_windows = 15;
     optional bool all_drawn = 16;
     optional bool last_all_drawn = 17;
-    // Will be removed soon
-    optional bool removed = 18 [deprecated=true];
+    reserved 18; // removed
     optional IdentifierProto starting_window = 19;
     optional bool starting_displayed = 20;
-    optional bool starting_moved = 21;
+    optional bool starting_moved = 201;
     optional bool visible_set_from_transferred_starting_window = 22;
     repeated .android.graphics.RectProto frozen_bounds = 23;
     optional bool visible = 24;
-    // To be removed soon.
-    optional .com.android.server.wm.ConfigurationContainerProto configuration_container = 25 [deprecated=true];
-    optional .com.android.server.wm.IdentifierProto identifier = 26;
+    reserved 25; // configuration_container
+    optional IdentifierProto identifier = 26;
     optional string state = 27;
     optional bool front_of_task = 28;
     optional int32 proc_id = 29;
diff --git a/core/proto/android/service/OWNERS b/core/proto/android/service/OWNERS
new file mode 100644
index 0000000..70cb50f
--- /dev/null
+++ b/core/proto/android/service/OWNERS
@@ -0,0 +1 @@
+per-file sensor_service.proto = arthuri@google.com, bduddie@google.com, stange@google.com
diff --git a/core/proto/android/service/sensor_service.proto b/core/proto/android/service/sensor_service.proto
new file mode 100644
index 0000000..48f6670
--- /dev/null
+++ b/core/proto/android/service/sensor_service.proto
@@ -0,0 +1,248 @@
+/*
+ * 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.
+ */
+
+syntax = "proto2";
+package android.service;
+
+import "frameworks/base/core/proto/android/privacy.proto";
+
+option java_multiple_files = true;
+
+/*
+ * Notes:
+ * 1. When using ProtoOutputStream to write this proto message, must call
+ *    token = ProtoOutputStream#start(fieldId) before and ProtoOutputStream#end(token) after
+ *    writing a nested message.
+ * 2. Never reuse a proto field number. When removing a field, mark it as reserved.
+ */
+
+// Proto dump of android::SensorService. dumpsys sensorservice --proto
+message SensorServiceProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    enum OperatingModeEnum {
+        OP_MODE_UNKNOWN = 0;
+        OP_MODE_NORMAL = 1;
+        OP_MODE_RESTRICTED = 2;
+        OP_MODE_DATA_INJECTION = 3;
+    }
+    optional sint32 init_status = 16;
+    optional int64 current_time_ms = 1;
+    optional SensorDeviceProto sensor_device = 2;
+    optional SensorListProto sensors = 3;
+    optional SensorFusionProto fusion_state = 4;
+    optional SensorEventsProto sensor_events = 5;
+    repeated ActiveSensorProto active_sensors = 6;
+    optional int32 socket_buffer_size = 7;
+    optional int32 socket_buffer_size_in_events = 8;
+    optional bool wake_lock_acquired = 9;
+    optional OperatingModeEnum operating_mode = 10;
+    // Non-empty only if operating_mode is RESTRICTED or DATA_INJECTION.
+    optional string whitelisted_package = 11;
+    optional bool sensor_privacy = 12;
+    repeated SensorEventConnectionProto active_connections = 13;
+    repeated SensorDirectConnectionProto direct_connections = 14;
+    repeated SensorRegistrationInfoProto previous_registrations = 15;
+
+    // Next tag: 17
+}
+
+// Proto dump of android::SensorDevice
+message SensorDeviceProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional bool initialized = 1;
+    optional int32 total_sensors = 2;
+    optional int32 active_sensors = 3;
+
+    message SensorProto {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional int32 handle = 1;
+        optional int32 active_count = 2;
+        repeated float sampling_period_ms = 3;
+        optional float sampling_period_selected = 4;
+        repeated float batching_period_ms = 5;
+        optional float batching_period_selected = 6;
+    }
+    repeated SensorProto sensors = 4;
+}
+
+// Proto dump of android::SensorServiceUtil::SensorList
+message SensorListProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    enum ReportingModeEnum {
+        RM_UNKNOWN = 0;
+        RM_CONTINUOUS = 1;
+        RM_ON_CHANGE = 2;
+        RM_ONE_SHOT = 3;
+        RM_SPECIAL_TRIGGER = 4;
+    }
+
+    message SensorProto {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional int32 handle = 1;
+        optional string name = 2;
+        optional string vendor = 3;
+        optional int32 version = 4;
+        optional string string_type = 5;
+        optional int32 type = 6;
+        optional string required_permission = 7;
+        optional int32 flags = 8;
+        optional ReportingModeEnum reporting_mode = 9;
+        optional int32 max_delay_us = 10;
+        optional int32 min_delay_us = 11;
+        optional int32 fifo_max_event_count = 12;
+        optional int32 fifo_reserved_event_count = 13;
+        optional bool is_wakeup = 14;
+        optional bool data_injection_supported = 15;
+        optional bool is_dynamic = 16;
+        optional bool has_additional_info = 17;
+        optional int32 highest_rate_level = 18;
+        optional bool ashmem = 19;
+        optional bool gralloc = 20;
+        optional float min_value = 21;
+        optional float max_value = 22;
+        optional float resolution = 23;
+        optional float power_usage = 24;
+    }
+    repeated SensorProto sensors = 1;
+}
+
+
+// Proto dump of android::SensorFusion
+message SensorFusionProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    message FusionProto {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional bool enabled = 1;
+        optional int32 num_clients = 2;
+        optional float estimated_gyro_rate = 3;
+        optional float attitude_x = 4;
+        optional float attitude_y = 5;
+        optional float attitude_z = 6;
+        optional float attitude_w = 7;
+        optional float attitude_length = 8;
+        optional float bias_x = 9;
+        optional float bias_y = 10;
+        optional float bias_z = 11;
+    }
+    optional FusionProto fusion_9axis = 1;
+    optional FusionProto fusion_nomag = 2;
+    optional FusionProto fusion_nogyro = 3;
+}
+
+// Proto dump of android::SensorServiceUtil::RecentEventLogger
+message SensorEventsProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    message Event {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional float timestamp_sec = 1;
+        optional int64 wall_timestamp_ms = 2;
+        optional bool masked = 3;
+        optional int64 int64_data = 4;
+        repeated float float_array = 5;
+    }
+
+    message RecentEventsLog {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional string name = 1;
+        optional int32 recent_events_count = 2;
+        repeated Event events = 3;
+    }
+    repeated RecentEventsLog recent_events_logs = 1;
+}
+
+message ActiveSensorProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional string name = 1;
+    optional int32 handle = 2;
+    optional int32 num_connections = 3;
+}
+
+// Proto dump of android::SensorService::SensorDirectConnection
+message SensorDirectConnectionProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    message SensorProto {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional int32 sensor = 1;
+        optional int32 rate = 2;
+    }
+
+    optional string package_name = 1;
+    optional int32 hal_channel_handle = 2;
+    optional int32 num_sensor_activated = 3;
+    repeated SensorProto sensors = 4;
+}
+
+// Proto dump of android::SensorService::SensorEventConnection
+message SensorEventConnectionProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    message FlushInfoProto {
+        option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+        optional string sensor_name = 1;
+        optional int32 sensor_handle = 2;
+        optional bool first_flush_pending = 3;
+        optional int32 pending_flush_events_to_send = 4;
+    }
+
+    enum OperatingModeEnum {
+        OP_MODE_UNKNOWN = 0;
+        OP_MODE_NORMAL = 1;
+        OP_MODE_RESTRICTED = 2;
+        OP_MODE_DATA_INJECTION = 3;
+    }
+
+    optional OperatingModeEnum operating_mode = 1;
+    optional string package_name = 2;
+    optional int32 wake_lock_ref_count = 3;
+    optional int32 uid = 4;
+    optional int32 cache_size = 5;
+    optional int32 max_cache_size = 6;
+    repeated FlushInfoProto flush_infos = 7;
+    optional int32 events_received = 8;
+    optional int32 events_sent = 9;
+    optional int32 events_cache = 10;
+    optional int32 events_dropped = 11;
+    optional int32 total_acks_needed = 12;
+    optional int32 total_acks_received = 13;
+}
+
+// Proto dump of android::SensorService::SensorRegistrationInfo
+message SensorRegistrationInfoProto {
+    option (android.msg_privacy).dest = DEST_AUTOMATIC;
+
+    optional int64 timestamp_sec = 1;
+    optional int32 sensor_handle = 2;
+    optional string package_name = 3;
+    optional int32 pid = 4;
+    optional int32 uid = 5;
+    optional int64 sampling_rate_us = 6;
+    optional int64 max_report_latency_us = 7;
+    optional bool activated = 8;
+}
diff --git a/core/proto/android/stats/devicepolicy/device_policy_enums.proto b/core/proto/android/stats/devicepolicy/device_policy_enums.proto
index 0f03e69..a648831 100644
--- a/core/proto/android/stats/devicepolicy/device_policy_enums.proto
+++ b/core/proto/android/stats/devicepolicy/device_policy_enums.proto
@@ -157,4 +157,9 @@
   SET_FACTORY_RESET_PROTECTION = 130;
   SET_COMMON_CRITERIA_MODE = 131;
   ALLOW_MODIFICATION_OF_ADMIN_CONFIGURED_NETWORKS = 132;
+  SET_TIME = 133;
+  SET_TIME_ZONE = 134;
+  SET_PERSONAL_APPS_SUSPENDED = 135;
+  SET_MANAGED_PROFILE_MAXIMUM_TIME_OFF = 136;
+  COMP_TO_ORG_OWNED_PO_MIGRATED = 137;
 }
diff --git a/core/proto/android/stats/mediametrics/mediametrics.proto b/core/proto/android/stats/mediametrics/mediametrics.proto
index 34ed90a..e1af962 100644
--- a/core/proto/android/stats/mediametrics/mediametrics.proto
+++ b/core/proto/android/stats/mediametrics/mediametrics.proto
@@ -154,6 +154,8 @@
     optional int64 latency_avg = 18;
     optional int64 latency_count = 19;
     optional int64 latency_unknown = 20;
+    optional int32 queue_input_buffer_error = 21;
+    optional int32 queue_secure_input_buffer_error = 22;
 }
 
 /**
diff --git a/core/res/AndroidManifest.xml b/core/res/AndroidManifest.xml
index 4d319df..60b3a19 100644
--- a/core/res/AndroidManifest.xml
+++ b/core/res/AndroidManifest.xml
@@ -96,6 +96,7 @@
     <protected-broadcast android:name="android.intent.action.OVERLAY_PRIORITY_CHANGED" />
     <protected-broadcast android:name="android.intent.action.MY_PACKAGE_SUSPENDED" />
     <protected-broadcast android:name="android.intent.action.MY_PACKAGE_UNSUSPENDED" />
+    <protected-broadcast android:name="android.intent.action.LOAD_DATA" />
 
     <protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGED" />
     <protected-broadcast android:name="android.os.action.POWER_SAVE_MODE_CHANGING" />
@@ -350,6 +351,8 @@
     <protected-broadcast android:name="com.android.server.wifi.action.NetworkSuggestion.USER_ALLOWED_APP" />
     <protected-broadcast android:name="com.android.server.wifi.action.NetworkSuggestion.USER_DISALLOWED_APP" />
     <protected-broadcast android:name="com.android.server.wifi.action.NetworkSuggestion.USER_DISMISSED" />
+    <protected-broadcast android:name="com.android.server.wifi.action.NetworkSuggestion.USER_ALLOWED_CARRIER" />
+    <protected-broadcast android:name="com.android.server.wifi.action.NetworkSuggestion.USER_DISALLOWED_CARRIER" />
     <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.USER_DISMISSED_NOTIFICATION" />
     <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.CONNECT_TO_NETWORK" />
     <protected-broadcast android:name="com.android.server.wifi.ConnectToNetworkNotification.PICK_WIFI_NETWORK" />
@@ -375,7 +378,7 @@
     <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_SUBSCRIPTION_REMEDIATION" />
     <protected-broadcast android:name="android.net.wifi.action.PASSPOINT_LAUNCH_OSU_VIEW" />
     <protected-broadcast android:name="android.net.wifi.action.WIFI_NETWORK_SUGGESTION_POST_CONNECTION" />
-    <protected-broadcast android:name="android.net.wifi.action.WIFI_SCAN_AVAILABLE" />
+    <protected-broadcast android:name="android.net.wifi.action.WIFI_SCAN_AVAILABILITY_CHANGED" />
     <protected-broadcast android:name="android.net.wifi.supplicant.CONNECTION_CHANGE" />
     <protected-broadcast android:name="android.net.wifi.supplicant.STATE_CHANGE" />
     <protected-broadcast android:name="android.net.wifi.p2p.STATE_CHANGED" />
@@ -1533,7 +1536,7 @@
          @hide
     -->
     <permission android:name="android.permission.ACCESS_CONTEXT_HUB"
-        android:protectionLevel="signature" />
+        android:protectionLevel="signature|privileged" />
     <uses-permission android:name="android.permission.ACCESS_CONTEXT_HUB"/>
 
     <!-- @SystemApi Allows an application to create mock location providers for testing.
@@ -1637,7 +1640,7 @@
 
     <!-- Allows network stack services (Connectivity and Wifi) to coordinate
          <p>Not for use by third-party or privileged applications.
-         @SystemApi
+         @SystemApi @TestApi
          @hide This should only be used by Connectivity and Wifi Services.
     -->
     <permission android:name="android.permission.NETWORK_STACK"
@@ -1909,6 +1912,15 @@
     <permission android:name="android.permission.VIBRATE_ALWAYS_ON"
         android:protectionLevel="signature" />
 
+    <!-- @SystemApi Allows access to the vibrator state.
+         <p>Protection level: signature
+         @hide
+    -->
+    <permission android:name="android.permission.ACCESS_VIBRATOR_STATE"
+        android:label="@string/permdesc_vibrator_state"
+        android:description="@string/permdesc_vibrator_state"
+        android:protectionLevel="signature|privileged" />
+
     <!-- Allows using PowerManager WakeLocks to keep processor from sleeping or screen
          from dimming.
          <p>Protection level: normal
@@ -1996,17 +2008,17 @@
     <permission android:name="android.permission.REMOTE_AUDIO_PLAYBACK"
         android:protectionLevel="signature" />
 
-    <!-- @SystemApi Allows TvInputService to access underlying TV input hardware such as
+    <!-- Allows TvInputService to access underlying TV input hardware such as
          built-in tuners and HDMI-in's.
-         @hide This should only be used by OEM's TvInputService's.
-    -->
+         <p>This should only be used by OEM's TvInputService's.
+         @hide @SystemApi -->
     <permission android:name="android.permission.TV_INPUT_HARDWARE"
         android:protectionLevel="signature|privileged|vendorPrivileged" />
 
-    <!-- @SystemApi Allows to capture a frame of TV input hardware such as
+    <!-- Allows to capture a frame of TV input hardware such as
          built-in tuners and HDMI-in's.
-         @hide <p>Not for use by third-party applications.
-    -->
+         <p>Not for use by third-party applications.
+         @hide @SystemApi -->
     <permission android:name="android.permission.CAPTURE_TV_INPUT"
         android:protectionLevel="signature|privileged" />
 
@@ -2086,7 +2098,6 @@
          Allows reading of detailed information about phone state for special-use applications
          such as dialers, carrier applications, or ims applications. -->
     <permission android:name="android.permission.READ_PRECISE_PHONE_STATE"
-        android:permissionGroup="android.permission-group.UNDEFINED"
         android:protectionLevel="signature|privileged" />
 
     <!-- @SystemApi Allows read access to privileged phone state.
@@ -2375,11 +2386,18 @@
          @hide -->
     <permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL"
         android:protectionLevel="signature|installer|telephony" />
+    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
 
     <!-- Allows interaction across profiles in the same profile group. -->
     <permission android:name="android.permission.INTERACT_ACROSS_PROFILES"
         android:protectionLevel="signature|appop|documenter|wellbeing" />
 
+    <!-- Allows configuring apps to have the INTERACT_ACROSS_PROFILES permission so that they can
+         interact across profiles in the same profile group.
+         @hide -->
+    <permission android:name="android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES"
+        android:protectionLevel="signature" />
+
     <!-- @SystemApi @hide Allows an application to call APIs that allow it to query and manage
          users on the device. This permission is not available to
          third party applications. -->
@@ -2602,9 +2620,9 @@
 
     <!-- Allows telephony to suggest the time / time zone.
          <p>Not for use by third-party applications.
-         @SystemApi(client = SystemApi.Client.MODULE_LIBRARIES) @hide
+         @hide
      -->
-    <permission android:name="android.permission.SUGGEST_PHONE_TIME_AND_ZONE"
+    <permission android:name="android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE"
         android:protectionLevel="signature|telephony" />
 
     <!-- Allows applications like settings to suggest the user's manually chosen time / time zone.
@@ -3432,21 +3450,29 @@
     <permission android:name="android.permission.READ_CONTENT_RATING_SYSTEMS"
         android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to notify TV inputs by sending broadcasts.
+    <!-- Allows an application to notify TV inputs by sending broadcasts.
          <p>Protection level: signature|privileged
          <p>Not for use by third-party applications.
-         @hide -->
+         @hide @SystemApi -->
     <permission android:name="android.permission.NOTIFY_TV_INPUTS"
          android:protectionLevel="signature|privileged" />
 
-    <!-- @SystemApi Allows an application to interact with tuner resources through
-         Tuner Resource Manager.
+    <!-- This permission is required among systems services when accessing
+         tuner resource management related APIs or information.
          <p>Protection level: signature|privileged
          <p>Not for use by third-party applications.
          @hide -->
     <permission android:name="android.permission.TUNER_RESOURCE_ACCESS"
          android:protectionLevel="signature|privileged" />
 
+    <!-- This permission is required by Media Resource Manager Service when
+         accessing its overridePid Api.
+         <p>Protection level: signature
+         <p>Not for use by third-party applications.
+         @hide -->
+    <permission android:name="android.permission.MEDIA_RESOURCE_OVERRIDE_PID"
+         android:protectionLevel="signature" />
+
     <!-- Must be required by a {@link android.media.routing.MediaRouteService}
          to ensure that only the system can interact with it.
          @hide -->
@@ -3670,6 +3696,10 @@
     <permission android:name="android.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY"
                 android:protectionLevel="signature|installer" />
 
+    <!-- @hide Allows an application to upgrade runtime permissions. -->
+    <permission android:name="android.permission.UPGRADE_RUNTIME_PERMISSIONS"
+                android:protectionLevel="signature" />
+
     <!-- @SystemApi Allows an application to whitelist restricted permissions
          on any of the whitelists.
     @hide -->
@@ -4012,11 +4042,20 @@
          statistics
          <p>Declaring the permission implies intention to use the API and the user of the
          device can grant permission through the Settings application.
-         <p>Protection level: signature|privileged|development|appop -->
+         <p>Protection level: signature|privileged|development|appop|retailDemo -->
     <permission android:name="android.permission.PACKAGE_USAGE_STATS"
-        android:protectionLevel="signature|privileged|development|appop" />
+        android:protectionLevel="signature|privileged|development|appop|retailDemo" />
     <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
 
+    <!-- Allows a data loader to read a package's access logs. The access logs contain the
+         set of pages referenced over time.
+         <p>Declaring the permission implies intention to use the API and the user of the
+         device can grant permission through the Settings application.
+         <p>Protection level: signature|privileged|appop -->
+    <permission android:name="android.permission.LOADER_USAGE_STATS"
+        android:protectionLevel="signature|privileged|appop" />
+    <uses-permission android:name="android.permission.LOADER_USAGE_STATS" />
+
     <!-- @hide @SystemApi Allows an application to observe usage time of apps. The app can register
          for callbacks when apps reach a certain usage time limit, etc. -->
     <permission android:name="android.permission.OBSERVE_APP_USAGE"
@@ -4052,6 +4091,11 @@
     <permission android:name="android.permission.STATSCOMPANION"
         android:protectionLevel="signature" />
 
+    <!--@SystemApi @hide Allows an application to register stats pull atom callbacks.
+    <p>Not for use by third-party applications.-->
+    <permission android:name="android.permission.REGISTER_STATS_PULL_ATOM"
+                android:protectionLevel="signature|privileged" />
+
     <!-- @SystemApi Allows an application to control the backup and restore process.
     <p>Not for use by third-party applications.
          @hide pending API council -->
@@ -4232,7 +4276,7 @@
 
     <!-- @SystemApi @TestApi @hide Allows managing apk level rollbacks. -->
     <permission android:name="android.permission.MANAGE_ROLLBACKS"
-        android:protectionLevel="signature|verifier" />
+        android:protectionLevel="signature|privileged" />
 
     <!-- @TestApi @hide Allows testing apk level rollbacks. -->
     <permission android:name="android.permission.TEST_MANAGE_ROLLBACKS"
@@ -4401,6 +4445,10 @@
          android.service.chooser.ChooserTargetService}, to ensure that
          only the system can bind to it.
          <p>Protection level: signature
+
+         @deprecated For publishing direct share targets, please follow the instructions in
+         https://developer.android.com/training/sharing/receive.html#providing-direct-share-targets
+         instead.
     -->
     <permission android:name="android.permission.BIND_CHOOSER_TARGET_SERVICE"
         android:protectionLevel="signature" />
@@ -4859,15 +4907,15 @@
     <!-- Allows an app to log compat change usage.
          @hide  <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.LOG_COMPAT_CHANGE"
-                android:protectionLevel="signature" />
+                android:protectionLevel="signature|privileged" />
     <!-- Allows an app to read compat change config.
          @hide  <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"
-                android:protectionLevel="signature" />
+                android:protectionLevel="signature|privileged" />
     <!-- Allows an app to override compat change config.
          @hide  <p>Not for use by third-party applications.</p> -->
     <permission android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG"
-                android:protectionLevel="signature" />
+                android:protectionLevel="signature|privileged" />
 
     <!-- Allows input events to be monitored. Very dangerous!  @hide -->
     <permission android:name="android.permission.MONITOR_INPUT"
@@ -4895,6 +4943,10 @@
     <permission android:name="android.permission.ACCESS_TV_TUNER"
         android:protectionLevel="signature|privileged" />
 
+    <!-- @hide @SystemApi Allows an application to access locusId events in the usage stats. -->
+    <permission android:name="android.permission.ACCESS_LOCUS_ID_USAGE_STATS"
+                android:protectionLevel="signature|appPredictor" />
+
     <application android:process="system"
                  android:persistent="true"
                  android:hasCode="false"
@@ -5079,6 +5131,12 @@
                 android:process=":ui">
         </activity>
 
+        <activity android:name="com.android.internal.app.BlockedAppActivity"
+                android:theme="@style/Theme.Dialog.Confirmation"
+                android:excludeFromRecents="true"
+                android:process=":ui">
+        </activity>
+
         <activity android:name="com.android.settings.notification.NotificationAccessConfirmationActivity"
                   android:theme="@style/Theme.Dialog.Confirmation"
                   android:excludeFromRecents="true">
@@ -5300,6 +5358,10 @@
                  android:permission="android.permission.BIND_JOB_SERVICE" >
         </service>
 
+        <service android:name="com.android.server.blob.BlobStoreIdleJobService"
+                 android:permission="android.permission.BIND_JOB_SERVICE">
+        </service>
+
         <service android:name="com.android.server.pm.PackageManagerShellCommandDataLoader">
             <intent-filter>
                 <action android:name="android.intent.action.LOAD_DATA" />
diff --git a/core/res/res/drawable-hdpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/drawable-hdpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index d915d41..0000000
--- a/core/res/res/drawable-hdpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-ldpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/drawable-ldpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index d88250a..0000000
--- a/core/res/res/drawable-ldpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-mdpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/drawable-mdpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index 47306683f..0000000
--- a/core/res/res/drawable-mdpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable-nodpi/platlogo.xml b/core/res/res/drawable-nodpi/platlogo.xml
index 46e8f64..b01eb39 100644
--- a/core/res/res/drawable-nodpi/platlogo.xml
+++ b/core/res/res/drawable-nodpi/platlogo.xml
@@ -1,31 +1,50 @@
-<!--
-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.
--->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-    android:width="240dp"
-    android:height="240dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
+    android:width="512dp"
+    android:height="512dp"
+    android:viewportWidth="512"
+    android:viewportHeight="512">
     <path
-        android:fillColor="#000"
-        android:pathData="M16 4c-2.2 0-4 1.8-4 4v4H4V8c0-2.2 1.8-4 4-4h8z"/>
+        android:fillColor="#F86734"
+        android:pathData="M416.23 236.62h-10.67c-1.46 0-2.65-1.19-2.65-2.65v-9.85c0-1.47 1.19-2.65 2.65-2.65h23.37c1.47 0 2.66 1.19 2.66 2.65v66.9c0 1.46-1.2 2.65-2.66 2.65H418.9c-1.47 0-2.66-1.19-2.66-2.65v-54.4z"/>
     <path
-        android:fillColor="#000"
-        android:pathData="M8 20c2.2 0 4-1.8 4-4v-4H4v8h4z"/>
+        android:fillColor="#F86734"
+        android:pathData="M455.51 236.62h-10.67c-1.47 0-2.65-1.19-2.65-2.65v-9.85c0-1.47 1.18-2.65 2.65-2.65h23.37c1.47 0 2.66 1.19 2.66 2.65v66.9c0 1.46-1.2 2.65-2.66 2.65h-10.05c-1.46 0-2.65-1.19-2.65-2.65v-54.4z"/>
     <path
-        android:fillColor="#80000000"
-        android:pathData="M16 12c2.2 0 4-1.8 4-4V4h-8v8h4z"/>
+        android:fillColor="#D6F0FF"
+        android:pathData="M364.12 400.25a4.34 4.34 0 1 0 0 8.68a4.34 4.34 0 1 0 0-8.68z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M275.46 433.53a4.84 4.84 0 1 0 0 9.68a4.84 4.84 0 1 0 0-9.68z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M184.52 418.83a5.36 5.36 0 1 0 0 10.72a5.36 5.36 0 1 0 0-10.72z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M110.42 359.19a5.89 5.89 0 1 0 0 11.78a5.89 5.89 0 1 0 0-11.78z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M75.94 270.17a6.43 6.43 0 1 0 0 12.86a6.43 6.43 0 1 0 0-12.86z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M89.48 178.57a6.98 6.98 0 1 0 0 13.96a6.98 6.98 0 1 0 0-13.96z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M147.97 103.54a7.54 7.54 0 1 0 0 15.08a7.54 7.54 0 1 0 0-15.08z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M236.63 66.7a8.1 8.1 0 1 0 0 16.2a8.1 8.1 0 1 0 0-16.2z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M327.09 78.3a8.66 8.66 0 1 0 0 17.32a8.66 8.66 0 1 0 0-17.32z"/>
+    <path
+        android:fillColor="#D6F0FF"
+        android:pathData="M401.05 136.97a9.22 9.22 0 1 0 0 18.44a9.22 9.22 0 1 0 0-18.44z"/>
+    <group>
+        <path
+            android:fillColor="#3DDB85"
+            android:pathData="M255.45 129.46a128.11 128.11 0 1 0 0 256.22a128.11 128.11 0 1 0 0-256.22z"/>
+        <path
+            android:fillColor="#FFF"
+            android:pathData="M339.23 236.09a21.48 21.48 0 1 0 0 42.96a21.48 21.48 0 1 0 0-42.96z"/>
+    </group>
 </vector>
-
diff --git a/core/res/res/drawable-nodpi/stat_sys_adb.xml b/core/res/res/drawable-nodpi/stat_sys_adb.xml
index 0e9aab2..700781b 100644
--- a/core/res/res/drawable-nodpi/stat_sys_adb.xml
+++ b/core/res/res/drawable-nodpi/stat_sys_adb.xml
@@ -1,17 +1,17 @@
-<!--
-Copyright (C) 2020 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright 2020 The Android Open Source Project
 
-   Licensed under the Apache License, Version 2.0 (the "License");
-    you may not use this file except in compliance with the License.
-    You may obtain a copy of the License at
+     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.
 -->
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
     android:width="24dp"
@@ -19,12 +19,22 @@
     android:viewportWidth="24"
     android:viewportHeight="24">
     <path
-        android:fillColor="#000"
-        android:pathData="M16 4c-2.2 0-4 1.8-4 4v4H4V8c0-2.2 1.8-4 4-4h8z"/>
-    <path
-        android:fillColor="#000"
-        android:pathData="M8 20c2.2 0 4-1.8 4-4v-4H4v8h4z"/>
-    <path
-        android:fillColor="#80000000"
-        android:pathData="M16 12c2.2 0 4-1.8 4-4V4h-8v8h4z"/>
+        android:fillColor="#FFFFFF"
+        android:pathData="
+M 12,1
+A 11 11 0 0 0 1,12
+A 11 11 0 1 0 12,1
+Z
+
+M 12.5,8
+a 3,3 0 0 1 6,0
+a 3,3 0 0 1 -6,0
+Z
+
+M 5.5,8
+a 3,3 0 0 1 6,0
+l 0,8
+a 3,3 0 0 1 -6,0
+Z
+"/>
 </vector>
diff --git a/core/res/res/drawable-xhdpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/drawable-xhdpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index e4e6a5a..0000000
--- a/core/res/res/drawable-xhdpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/drawable/chooser_action_button_bg.xml b/core/res/res/drawable/chooser_action_button_bg.xml
new file mode 100644
index 0000000..a434c0b
--- /dev/null
+++ b/core/res/res/drawable/chooser_action_button_bg.xml
@@ -0,0 +1,33 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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
+  -->
+<ripple xmlns:android="http://schemas.android.com/apk/res/android"
+        android:color="@color/lighter_gray">
+    <item>
+        <inset
+            android:insetLeft="0dp"
+            android:insetTop="8dp"
+            android:insetRight="0dp"
+            android:insetBottom="8dp">
+            <shape android:shape="rectangle">
+              <corners android:radius="16dp"></corners>
+                <stroke android:width="1dp"
+                        android:color="?attr/textColorSecondary" />
+                <solid android:color="?attr/colorBackground" />
+            </shape>
+        </inset>
+    </item>
+</ripple>
diff --git a/core/res/res/drawable/ic_content_copy_gm2.xml b/core/res/res/drawable/ic_content_copy_gm2.xml
deleted file mode 100644
index ee58738..0000000
--- a/core/res/res/drawable/ic_content_copy_gm2.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2019 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="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24">
-  <path
-      android:fillColor="?android:attr/textColorSecondary"
-      android:pathData="M18,21L4,21L4,7L2,7v14c0,1.1 0.9,2 2,2h14v-2zM21,17L21,3c0,-1.1 -0.9,-2 -2,-2L8,1c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2zM19,17L8,17L8,3h11v14z"/>
-</vector>
diff --git a/core/res/res/drawable/ic_menu_copy_material.xml b/core/res/res/drawable/ic_menu_copy_material.xml
index c03723b..8c9f1c5 100644
--- a/core/res/res/drawable/ic_menu_copy_material.xml
+++ b/core/res/res/drawable/ic_menu_copy_material.xml
@@ -1,26 +1,27 @@
-<!--
-Copyright (C) 2014 The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2019 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.
 -->
+
 <vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0"
-        android:autoMirrored="true"
-        android:tint="?attr/colorControlNormal">
-    <path
-        android:pathData="M16,1L4,1C2.9,1 2,1.9 2,3l0,14l2,0L4,3l12,0L16,1zM19,5L8,5C6.9,5 6,5.9 6,7l0,14c0,1.1 0.9,2 2,2l11,0c1.1,0 2,-0.9 2,-2L21,7C21,5.9 20.1,5 19,5zM19,21L8,21L8,7l11,0L19,21z"
-        android:fillColor="@color/white"/>
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24"
+    android:autoMirrored="true"
+    android:tint="?attr/colorControlNormal">
+  <path
+      android:fillColor="@color/white"
+      android:pathData="M18,21L4,21L4,7L2,7v14c0,1.1 0.9,2 2,2h14v-2zM21,17L21,3c0,-1.1 -0.9,-2 -2,-2L8,1c-1.1,0 -2,0.9 -2,2v14c0,1.1 0.9,2 2,2h11c1.1,0 2,-0.9 2,-2zM19,17L8,17L8,3h11v14z"/>
 </vector>
diff --git a/core/res/res/drawable/ic_no_apps.xml b/core/res/res/drawable/ic_no_apps.xml
new file mode 100644
index 0000000..4d296bd
--- /dev/null
+++ b/core/res/res/drawable/ic_no_apps.xml
@@ -0,0 +1,4 @@
+<vector android:height="32dp" android:viewportHeight="24"
+    android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@color/resolver_empty_state_icon" android:fillType="evenOdd" android:pathData="M18.8123,20.0145L21.3999,22.6021L22.602,21.4L2.602,1.4L1.3999,2.6021L3.9873,5.1895C3.6248,5.552 3.3998,6.052 3.3998,6.602C3.3998,7.702 4.2998,8.602 5.3998,8.602C5.9498,8.602 6.4498,8.377 6.8123,8.0145L9.9873,11.1895C9.6248,11.552 9.3998,12.052 9.3998,12.602C9.3998,13.702 10.2998,14.602 11.3998,14.602C11.9498,14.602 12.4498,14.377 12.8123,14.0145L15.9873,17.1895C15.6248,17.552 15.3998,18.052 15.3998,18.602C15.3998,19.702 16.2998,20.602 17.3998,20.602C17.9498,20.602 18.4498,20.377 18.8123,20.0145ZM17.3998,8.602C16.2998,8.602 15.3998,7.7021 15.3998,6.602C15.3998,5.502 16.2998,4.602 17.3998,4.602C18.4998,4.602 19.3998,5.502 19.3998,6.602C19.3998,7.7021 18.4998,8.602 17.3998,8.602ZM5.3998,14.6021C6.4998,14.6021 7.3998,13.7021 7.3998,12.6021C7.3998,11.5021 6.4998,10.6021 5.3998,10.6021C4.2998,10.6021 3.3998,11.5021 3.3998,12.6021C3.3998,13.7021 4.2998,14.6021 5.3998,14.6021ZM7.3998,18.6021C7.3998,19.7021 6.4998,20.6021 5.3998,20.6021C4.2998,20.6021 3.3998,19.7021 3.3998,18.6021C3.3998,17.5021 4.2998,16.6021 5.3998,16.6021C6.4998,16.6021 7.3998,17.5021 7.3998,18.6021ZM13.3998,18.6021C13.3998,19.7021 12.4998,20.6021 11.3998,20.6021C10.2998,20.6021 9.3998,19.7021 9.3998,18.6021C9.3998,17.5021 10.2998,16.6021 11.3998,16.6021C12.4998,16.6021 13.3998,17.5021 13.3998,18.6021ZM13.3999,6.602C13.3999,7.547 12.7357,8.3444 11.8511,8.5504L9.4516,6.1509C9.6576,5.2663 10.4549,4.602 11.3999,4.602C12.4999,4.602 13.3999,5.502 13.3999,6.602ZM17.8511,14.5504C18.7357,14.3444 19.3999,13.547 19.3999,12.6021C19.3999,11.5021 18.4999,10.6021 17.3999,10.6021C16.4549,10.6021 15.6576,11.2663 15.4516,12.1509L17.8511,14.5504Z"/>
+</vector>
diff --git a/core/res/res/drawable/ic_sharing_disabled.xml b/core/res/res/drawable/ic_sharing_disabled.xml
new file mode 100644
index 0000000..d488cdb
--- /dev/null
+++ b/core/res/res/drawable/ic_sharing_disabled.xml
@@ -0,0 +1,4 @@
+<vector android:height="32dp" android:viewportHeight="24"
+    android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@color/resolver_empty_state_icon" android:fillType="evenOdd" android:pathData="M19.7225,20.9245L21.2011,22.4031L22.4032,21.201L2.8022,1.6L1.6001,2.8021L8.1265,9.3284L7.64,9.612C7.1,9.112 6.39,8.802 5.6,8.802C3.94,8.802 2.6,10.142 2.6,11.802C2.6,13.462 3.94,14.802 5.6,14.802C6.39,14.802 7.1,14.492 7.64,13.992L14.69,18.112C14.64,18.332 14.6,18.562 14.6,18.802C14.6,20.462 15.94,21.802 17.6,21.802C18.43,21.802 19.18,21.467 19.7225,20.9245ZM16.8938,18.0958L18.3063,19.5083C18.125,19.6895 17.875,19.802 17.6,19.802C17.05,19.802 16.6,19.352 16.6,18.802C16.6,18.527 16.7125,18.277 16.8938,18.0958ZM15.1871,16.3891L9.3881,10.5901L8.51,11.102C8.56,11.332 8.6,11.562 8.6,11.802C8.6,12.042 8.56,12.272 8.51,12.502L15.1871,16.3891ZM15.56,6.992L12.4382,8.8119L11.1766,7.5503L14.69,5.502C14.64,5.282 14.6,5.042 14.6,4.802C14.6,3.142 15.94,1.802 17.6,1.802C19.26,1.802 20.6,3.142 20.6,4.802C20.6,6.462 19.26,7.802 17.6,7.802C16.81,7.802 16.09,7.492 15.56,6.992ZM18.6,4.802C18.6,4.252 18.15,3.802 17.6,3.802C17.05,3.802 16.6,4.252 16.6,4.802C16.6,5.352 17.05,5.802 17.6,5.802C18.15,5.802 18.6,5.352 18.6,4.802ZM5.6,12.802C5.05,12.802 4.6,12.352 4.6,11.802C4.6,11.252 5.05,10.802 5.6,10.802C6.15,10.802 6.6,11.252 6.6,11.802C6.6,12.352 6.15,12.802 5.6,12.802Z"/>
+</vector>
diff --git a/core/res/res/drawable/ic_work_apps_off.xml b/core/res/res/drawable/ic_work_apps_off.xml
new file mode 100644
index 0000000..e91806f
--- /dev/null
+++ b/core/res/res/drawable/ic_work_apps_off.xml
@@ -0,0 +1,4 @@
+<vector android:height="32dp" android:viewportHeight="24"
+    android:viewportWidth="24" android:width="32dp" xmlns:android="http://schemas.android.com/apk/res/android">
+    <path android:fillColor="@color/resolver_empty_state_icon" android:pathData="M22,7.95c0.05,-1.11 -0.84,-2 -1.95,-1.95L16,6L16,3.95c0,-1.11 -0.84,-2 -1.95,-1.95h-4C8.94,1.95 8,2.84 8,3.95v0.32l14,14L22,7.95zM14,6h-4L10,4h4v2zM21.54,20.28l-7.56,-7.56v0.01l-1.7,-1.7h0.01L7.21,5.95 3.25,1.99 1.99,3.27 4.69,6h-0.64c-1.11,0 -1.99,0.86 -1.99,1.97l-0.01,11.02c0,1.11 0.89,2.01 2,2.01h15.64l2.05,2.02L23,21.75l-1.46,-1.47z"/>
+</vector>
diff --git a/core/res/res/drawable/media_seamless_background.xml b/core/res/res/drawable/media_seamless_background.xml
index aec89e0..9b470cb 100644
--- a/core/res/res/drawable/media_seamless_background.xml
+++ b/core/res/res/drawable/media_seamless_background.xml
@@ -20,7 +20,7 @@
     <item android:id="@android:id/background">
         <shape android:shape="rectangle">
             <stroke android:width="1dp" android:color="#1f000000"/>
-            <corners android:radius="20dp"/>
+            <corners android:radius="24dp"/>
         </shape>
     </item>
 </ripple>
diff --git a/core/res/res/drawable/sym_app_on_sd_unavailable_icon.xml b/core/res/res/drawable/sym_app_on_sd_unavailable_icon.xml
new file mode 100644
index 0000000..50f15cab
--- /dev/null
+++ b/core/res/res/drawable/sym_app_on_sd_unavailable_icon.xml
@@ -0,0 +1,47 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+    <background android:drawable="@drawable/sym_def_app_icon_background" />
+    <foreground >
+        <vector
+            android:height="108dp"
+            android:width="108dp"
+            android:viewportHeight="108.0"
+            android:viewportWidth="108.0">
+            <path android:fillColor="#202124" android:pathData="
+M68,54h-7.25L54,60.75V76c0,2.2,1.8,4,4,4h10c2.2,0,4-1.8,4-4V58C72,55.8,70.2,54,68,54z"/>
+
+            <path android:fillColor="#FFFFFF" android:pathData="
+M64.59,34.48l3.9-3.9c0.6-0.6,0.6-1.53,0-2.13c-0.6-0.6-1.53-0.6-2.13,0l-4.44,4.44
+C59.55,31.69,56.85,31,54,31c-2.88,0-5.58,0.69-7.98,1.89l-4.47-4.44c-0.6-0.6-1.53-0.6-2.13,0c-0.6,0.6-0.6,1.53,0,2.13l3.93,3.93
+C38.91,37.78,36,43.03,36,49h36C72,43.03,69.09,37.75,64.59,34.48z M48,43h-3v-3h3V43z M63,43h-3v-3h3V43z
+
+M52,76.01C52,76,52,76,52,76.01l0-15.26v-0.83l0,0v-0.01h0.01l0.58-0.58l6.75-6.75L59.92,52v0H40
+c-2.21,0-4,1.79-4,4v20c0,2.21,1.79,4,4,4h12V76.01z
+
+M66.84,68.75h-2.81v6.75h2.81c0.93,0,1.69-0.75,1.69-1.69v-3.38C68.52,69.5,67.77,68.75,66.84,68.75z
+M66.84,73.81h-1.12v-3.38h1.12V73.81z
+
+M63.02,70.16h-3.09v1.27h1.97c0.62,0,1.12,0.64,1.12,1.26v1.69c0,0.62-0.51,1.12-1.12,1.12h-3.38v-1.41
+h3.09v-1.27h-1.96c-0.62,0-1.12-0.64-1.12-1.26v-1.69c0-0.62,0.51-1.12,1.12-1.12h3.36V70.16z"/>
+
+            <path android:fillColor="#FFE082" android:pathData="
+M 59   58.5 h 2.5 v 4.5 h -2.5z
+M 62.5 58.5 h 2.5 v 4.5 h -2.5z
+M 66   58.5 h 2.5 v 4.5 h -2.5z"/>
+        </vector>
+    </foreground>
+</adaptive-icon>
diff --git a/core/res/res/drawable/tab_indicator_resolver.xml b/core/res/res/drawable/tab_indicator_resolver.xml
new file mode 100644
index 0000000..ff16d81a
--- /dev/null
+++ b/core/res/res/drawable/tab_indicator_resolver.xml
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<layer-list xmlns:android="http://schemas.android.com/apk/res/android"
+            android:paddingMode="nest">
+    <item>
+        <ripple android:color="@color/tab_highlight_material">
+            <item android:id="@id/mask">
+                <color android:color="@color/white" />
+            </item>
+        </ripple>
+    </item>
+    <item android:gravity="bottom">
+        <shape android:shape="rectangle"
+               android:tint="@color/resolver_tabs_active_color">
+            <size android:height="2dp" />
+            <solid android:color="@color/tab_indicator_material" />
+        </shape>
+    </item>
+    <item android:bottom="2dp"
+          android:drawable="@color/transparent" />
+</layer-list>
diff --git a/core/res/res/layout/car_user_switching_dialog.xml b/core/res/res/layout/car_user_switching_dialog.xml
index 7ce35df..d727434 100644
--- a/core/res/res/layout/car_user_switching_dialog.xml
+++ b/core/res/res/layout/car_user_switching_dialog.xml
@@ -16,25 +16,22 @@
 -->
 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
     android:fitsSystemWindows="true"
-    android:layout_width="match_parent"
-    android:layout_height="match_parent"
-    >
+    android:layout_width="wrap_content"
+    android:layout_height="wrap_content">
 
   <ImageView
       android:id="@+id/user_loading_avatar"
       android:layout_width="@dimen/car_fullscreen_user_pod_image_avatar_width"
       android:layout_height="@dimen/car_fullscreen_user_pod_image_avatar_height"
-      android:layout_centerHorizontal="true"
-  />
+      android:layout_centerHorizontal="true"/>
 
   <TextView android:id="@+id/user_loading"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:layout_marginTop="@dimen/car_padding_4"
       android:textSize="@dimen/car_body1_size"
-      android:textColor="@color/car_body1_light"
+      android:textColor="@color/car_body1"
       android:layout_below="@id/user_loading_avatar"
-      android:gravity="center"
-  />
+      android:gravity="center"/>
 
 </RelativeLayout>
\ No newline at end of file
diff --git a/core/res/res/layout/chooser_action_button.xml b/core/res/res/layout/chooser_action_button.xml
new file mode 100644
index 0000000..119b2e9
--- /dev/null
+++ b/core/res/res/layout/chooser_action_button.xml
@@ -0,0 +1,30 @@
+<!--
+  ~ Copyright (C) 2019 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
+  -->
+
+<Button xmlns:android="http://schemas.android.com/apk/res/android"
+    android:gravity="center_vertical|start"
+    android:paddingStart="12dp"
+    android:paddingEnd="12dp"
+    android:drawablePadding="8dp"
+    android:textColor="?android:textColorSecondary"
+    android:textSize="12sp"
+    android:maxWidth="192dp"
+    android:singleLine="true"
+    android:clickable="true"
+    android:background="@drawable/chooser_action_button_bg"
+    android:drawableTint="?android:attr/colorControlNormal"
+    android:drawableTintMode="src_in"
+    />
diff --git a/core/res/res/layout/chooser_action_row.xml b/core/res/res/layout/chooser_action_row.xml
new file mode 100644
index 0000000..ea75611
--- /dev/null
+++ b/core/res/res/layout/chooser_action_row.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ Copyright (C) 2019 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
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingLeft="@dimen/chooser_edge_margin_normal"
+    android:paddingRight="@dimen/chooser_edge_margin_normal"
+    android:gravity="center"
+    >
+
+</LinearLayout>
diff --git a/core/res/res/layout/chooser_grid.xml b/core/res/res/layout/chooser_grid.xml
index 4e8a41f..24a21eb 100644
--- a/core/res/res/layout/chooser_grid.xml
+++ b/core/res/res/layout/chooser_grid.xml
@@ -75,7 +75,8 @@
             <TabWidget
                 android:id="@android:id/tabs"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+                android:layout_height="wrap_content"
+                android:visibility="gone">
             </TabWidget>
             <FrameLayout
                 android:id="@android:id/tabcontent"
@@ -89,15 +90,4 @@
         </LinearLayout>
     </TabHost>
 
-    <TextView android:id="@+id/empty"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:layout_alwaysShow="true"
-              android:background="?attr/colorBackgroundFloating"
-              android:text="@string/noApplications"
-              android:padding="@dimen/chooser_edge_margin_normal"
-              android:gravity="center"
-              android:elevation="1dp"
-              android:visibility="gone"/>
-
 </com.android.internal.widget.ResolverDrawerLayout>
diff --git a/core/res/res/layout/chooser_grid_preview_file.xml b/core/res/res/layout/chooser_grid_preview_file.xml
index f7d60c9..2a39215 100644
--- a/core/res/res/layout/chooser_grid_preview_file.xml
+++ b/core/res/res/layout/chooser_grid_preview_file.xml
@@ -65,13 +65,15 @@
         android:gravity="start|top"
         android:paddingRight="24dp"
         android:singleLine="true"/>
-    <Button
-        android:id="@+id/file_copy_button"
-        android:layout_width="24dp"
-        android:layout_height="24dp"
-        android:gravity="center"
-        android:layout_gravity="center_vertical"
-        android:background="@drawable/ic_content_copy_gm2"/>
   </LinearLayout>
+
+  <include
+      android:id="@+id/chooser_action_row"
+      layout="@layout/chooser_action_row"
+      android:layout_width="@dimen/chooser_preview_width"
+      android:layout_height="wrap_content"
+      android:layout_marginBottom="@dimen/chooser_view_spacing"
+      android:layout_gravity="center"
+  />
 </LinearLayout>
 
diff --git a/core/res/res/layout/chooser_grid_preview_image.xml b/core/res/res/layout/chooser_grid_preview_image.xml
index 79a0de4..62df165 100644
--- a/core/res/res/layout/chooser_grid_preview_image.xml
+++ b/core/res/res/layout/chooser_grid_preview_image.xml
@@ -78,5 +78,15 @@
           android:scaleType="centerCrop"/>
 
   </RelativeLayout>
+
+  <include
+      android:id="@+id/chooser_action_row"
+      layout="@layout/chooser_action_row"
+      android:layout_width="@dimen/chooser_preview_width"
+      android:layout_height="wrap_content"
+      android:layout_marginBottom="@dimen/chooser_view_spacing"
+      android:layout_gravity="center"
+  />
+
 </LinearLayout>
 
diff --git a/core/res/res/layout/chooser_grid_preview_text.xml b/core/res/res/layout/chooser_grid_preview_text.xml
index 4d7846d..0029174 100644
--- a/core/res/res/layout/chooser_grid_preview_text.xml
+++ b/core/res/res/layout/chooser_grid_preview_text.xml
@@ -37,10 +37,9 @@
 
     <TextView
         android:id="@+id/content_preview_text"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:layout_alignParentStart="true"
-        android:layout_toStartOf="@id/copy_button"
         android:layout_centerVertical="true"
         android:ellipsize="end"
         android:fontFamily="@android:string/config_headlineFontFamily"
@@ -48,40 +47,17 @@
         android:maxLines="2"
         android:focusable="true"/>
 
-    <LinearLayout
-        android:id="@+id/copy_button"
-        android:orientation="vertical"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_centerVertical="true"
-        android:layout_alignParentEnd="true"
-        android:layout_marginStart="@dimen/chooser_view_spacing"
-        android:gravity="center"
-        android:minWidth="48dp"
-        android:minHeight="48dp"
-        android:clickable="true"
-        style="?attr/borderlessButtonStyle">
-
-      <ImageView
-          android:layout_width="24dp"
-          android:layout_height="24dp"
-          android:gravity="top|center_horizontal"
-          android:src="@drawable/ic_content_copy_gm2" />
-
-      <TextView
-          android:layout_width="wrap_content"
-          android:layout_height="wrap_content"
-          android:layout_marginTop="4dp"
-          android:gravity="center_horizontal"
-          android:text="@string/copy"
-          android:textColor="?android:textColorSecondary"
-          android:textSize="12sp"
-          android:maxWidth="72dp"
-          android:maxLines="2"
-          android:ellipsize="end" />
-    </LinearLayout>
   </RelativeLayout>
 
+  <include
+      android:id="@+id/chooser_action_row"
+      layout="@layout/chooser_action_row"
+      android:layout_width="@dimen/chooser_preview_width"
+      android:layout_height="wrap_content"
+      android:layout_marginBottom="@dimen/chooser_view_spacing"
+      android:layout_gravity="center"
+      />
+
   <!-- Required sub-layout so we can get the nice rounded corners-->
   <!-- around this section -->
   <LinearLayout
diff --git a/core/res/res/layout/chooser_list_per_profile.xml b/core/res/res/layout/chooser_list_per_profile.xml
index 212813f..38b1b52 100644
--- a/core/res/res/layout/chooser_list_per_profile.xml
+++ b/core/res/res/layout/chooser_list_per_profile.xml
@@ -13,15 +13,21 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-
-<com.android.internal.widget.RecyclerView
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
     android:layout_height="match_parent"
-    android:layoutManager="com.android.internal.widget.GridLayoutManager"
-    android:id="@+id/resolver_list"
-    android:clipToPadding="false"
-    android:background="?attr/colorBackgroundFloating"
-    android:scrollbars="none"
-    android:elevation="1dp"
-    android:nestedScrollingEnabled="true"/>
\ No newline at end of file
+    android:layout_marginTop="8dp">
+    <com.android.internal.widget.RecyclerView
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layoutManager="com.android.internal.widget.GridLayoutManager"
+        android:id="@+id/resolver_list"
+        android:clipToPadding="false"
+        android:background="?attr/colorBackgroundFloating"
+        android:scrollbars="none"
+        android:elevation="1dp"
+        android:nestedScrollingEnabled="true" />
+
+    <include layout="@layout/resolver_empty_states" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/core/res/res/layout/resolver_empty_states.xml b/core/res/res/layout/resolver_empty_states.xml
new file mode 100644
index 0000000..6959e9c
--- /dev/null
+++ b/core/res/res/layout/resolver_empty_states.xml
@@ -0,0 +1,58 @@
+<!--
+  ~ 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.
+  -->
+
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/resolver_empty_state"
+    android:layout_width="match_parent"
+    android:layout_height="@dimen/resolver_empty_state_height"
+    android:orientation="vertical"
+    android:layout_centerInParent="true"
+    android:gravity="center"
+    android:visibility="gone"
+    android:paddingStart="24dp"
+    android:paddingEnd="24dp">
+    <ImageView
+        android:id="@+id/resolver_empty_state_icon"
+        android:layout_width="32dp"
+        android:layout_height="32dp"/>
+    <TextView
+        android:id="@+id/resolver_empty_state_title"
+        android:layout_marginTop="16dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?attr/textAppearanceMedium"
+        android:textColor="@color/resolver_empty_state_text"
+        android:textSize="18sp"/>
+    <TextView
+        android:id="@+id/resolver_empty_state_subtitle"
+        android:layout_marginTop="8dp"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textColor="@color/resolver_empty_state_text"
+        android:textSize="14sp"
+        android:gravity="center_horizontal" />
+    <Button
+        android:id="@+id/resolver_empty_state_button"
+        android:layout_marginTop="24dp"
+        android:text="@string/resolver_switch_on_work"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:background="@null"
+        android:textAppearance="?attr/textAppearanceMedium"
+        android:textSize="14sp"
+        android:textColor="@color/resolver_tabs_active_color"/>
+</LinearLayout>
\ No newline at end of file
diff --git a/core/res/res/layout/resolver_list.xml b/core/res/res/layout/resolver_list.xml
index 757cd53..6dfe24b 100644
--- a/core/res/res/layout/resolver_list.xml
+++ b/core/res/res/layout/resolver_list.xml
@@ -21,7 +21,7 @@
     android:layout_width="match_parent"
     android:layout_height="match_parent"
     android:maxWidth="@dimen/resolver_max_width"
-    android:maxCollapsedHeight="192dp"
+    android:maxCollapsedHeight="@dimen/resolver_empty_state_height"
     android:maxCollapsedHeightSmall="56dp"
     android:id="@id/contentPanel">
 
@@ -91,7 +91,8 @@
             <TabWidget
                 android:id="@android:id/tabs"
                 android:layout_width="match_parent"
-                android:layout_height="wrap_content">
+                android:layout_height="wrap_content"
+                android:visibility="gone">
             </TabWidget>
             <FrameLayout
                 android:id="@android:id/tabcontent"
@@ -101,6 +102,7 @@
                     android:id="@+id/profile_pager"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:minHeight="@dimen/resolver_empty_state_height"
                     android:divider="?attr/dividerVertical"
                     android:footerDividersEnabled="false"
                     android:headerDividersEnabled="false"
@@ -116,17 +118,6 @@
         android:background="?attr/colorBackgroundFloating"
         android:foreground="?attr/dividerVertical" />
 
-    <TextView android:id="@+id/empty"
-              android:layout_width="match_parent"
-              android:layout_height="wrap_content"
-              android:background="?attr/colorBackgroundFloating"
-              android:elevation="@dimen/resolver_elevation"
-              android:layout_alwaysShow="true"
-              android:text="@string/noApplications"
-              android:padding="32dp"
-              android:gravity="center"
-              android:visibility="gone" />
-
     <LinearLayout
         android:id="@+id/button_bar"
         android:visibility="gone"
diff --git a/core/res/res/layout/resolver_list_per_profile.xml b/core/res/res/layout/resolver_list_per_profile.xml
index 6d8d348..d481eff 100644
--- a/core/res/res/layout/resolver_list_per_profile.xml
+++ b/core/res/res/layout/resolver_list_per_profile.xml
@@ -14,18 +14,26 @@
   ~ See the License for the specific language governing permissions and
   ~ limitations under the License.
   -->
-<ListView
+<RelativeLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:id="@+id/resolver_list"
-    android:clipToPadding="false"
-    android:background="?attr/colorBackgroundFloating"
-    android:elevation="@dimen/resolver_elevation"
-    android:nestedScrollingEnabled="true"
-    android:scrollbarStyle="outsideOverlay"
-    android:scrollIndicators="top|bottom"
-    android:divider="@null"
-    android:footerDividersEnabled="false"
-    android:headerDividersEnabled="false"
-    android:dividerHeight="0dp" />
\ No newline at end of file
+    android:layout_height="match_parent"
+    android:layout_marginTop="8dp">
+    <ListView
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:id="@+id/resolver_list"
+        android:clipToPadding="false"
+        android:background="?attr/colorBackgroundFloating"
+        android:elevation="@dimen/resolver_elevation"
+        android:nestedScrollingEnabled="true"
+        android:scrollbarStyle="outsideOverlay"
+        android:scrollIndicators="top|bottom"
+        android:divider="@null"
+        android:footerDividersEnabled="false"
+        android:headerDividersEnabled="false"
+        android:dividerHeight="0dp" />
+
+    <include layout="@layout/resolver_empty_states" />
+</RelativeLayout>
\ No newline at end of file
diff --git a/core/res/res/layout/resolver_list_with_default.xml b/core/res/res/layout/resolver_list_with_default.xml
index b546738..4f88017 100644
--- a/core/res/res/layout/resolver_list_with_default.xml
+++ b/core/res/res/layout/resolver_list_with_default.xml
@@ -183,6 +183,7 @@
                     android:id="@+id/profile_pager"
                     android:layout_width="match_parent"
                     android:layout_height="wrap_content"
+                    android:minHeight="@dimen/resolver_empty_state_height"
                     android:dividerHeight="1dp"
                     android:divider="?attr/dividerVertical"
                     android:footerDividersEnabled="false"
diff --git a/core/res/res/layout/tab_indicator_resolver.xml b/core/res/res/layout/tab_indicator_resolver.xml
new file mode 100644
index 0000000..2038da6
--- /dev/null
+++ b/core/res/res/layout/tab_indicator_resolver.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_height="?android:attr/actionBarSize"
+    android:orientation="horizontal"
+    style="@android:style/Widget.Material.Resolver.Tab">
+
+    <ImageView
+        android:id="@android:id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:visibility="gone" />
+
+    <TextView
+        android:id="@android:id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center_vertical"
+        android:textAllCaps="false"
+        style="@android:style/Widget.Material.TabText" />
+
+</LinearLayout>
diff --git a/core/res/res/mipmap-hdpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/mipmap-hdpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index d915d41..0000000
--- a/core/res/res/mipmap-hdpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/mipmap-ldpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/mipmap-ldpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index d88250a..0000000
--- a/core/res/res/mipmap-ldpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/mipmap-mdpi/sym_app_on_sd_unavailable_icon.png b/core/res/res/mipmap-mdpi/sym_app_on_sd_unavailable_icon.png
deleted file mode 100644
index 47306683f..0000000
--- a/core/res/res/mipmap-mdpi/sym_app_on_sd_unavailable_icon.png
+++ /dev/null
Binary files differ
diff --git a/core/res/res/values-af/strings.xml b/core/res/res/values-af/strings.xml
index c34a485..5e89533 100644
--- a/core/res/res/values-af/strings.xml
+++ b/core/res/res/values-af/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Jou toestel sal uitgevee word"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Die administrasieprogram kan nie gebruik word nie. Jou toestel sal nou uitgevee word.\n\nKontak jou organisasie se administrateur as jy vrae het."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Druk is gedeaktiveer deur <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Persoonlike programme is deur \'n administrateur opgeskort"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tik hier om voldoening aan beleid te kontroleer."</string>
     <string name="me" msgid="6207584824693813140">"Ek"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-opsies"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-opsies"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Jy het jou ontsluitpatroon <xliff:g id="NUMBER_0">%1$d</xliff:g> keer verkeerdelik geteken. Na nog <xliff:g id="NUMBER_1">%2$d</xliff:g> onsuksesvolle pogings, sal jy gevra word om jou foon te ontsluit deur middel van \'n e-posrekening.\n\n Probeer weer oor <xliff:g id="NUMBER_2">%3$d</xliff:g> sekondes."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Verwyder"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Die voorgronddiens wat in die agtergrond begin het vanaf <xliff:g id="PACKAGENAME">%1$s</xliff:g> sal nie ingebruik-toestemming hê in toekomstige R-bouweergawes nie. Raadpleeg asseblief go/r-bg-fgs-restriction en dien \'n foutverslag in."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Verhoog volume bo aanbevole vlak?\n\nOm lang tydperke teen hoë volume te luister, kan jou gehoor beskadig."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gebruik toeganklikheidkortpad?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Wanneer die kortpad aan is, sal \'n toeganklikheidkenmerk begin word as albei volumeknoppies 3 sekondes lank gedruk word.\n\n Bestaande toeganklikheidkenmerk:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Jy kan die kenmerk in Instellings &gt; Toeganklikheid verander."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Program is nie beskikbaar nie"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nie nou onmiddellik beskikbaar nie. Dit word bestuur deur <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Kom meer te wete"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Hervat program"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Skakel werkprofiel aan?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Jou werkprogramme, kennisgewings, data en ander werkprofielkenmerke sal aangeskakel word"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Skakel aan"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Program is nie beskikbaar nie"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is nie op die oomblik beskikbaar nie."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Hierdie program is vir \'n ouer weergawe van Android gebou en sal dalk nie behoorlik werk nie. Probeer kyk vir opdaterings, of kontak die ontwikkelaar."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Kyk vir opdatering"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Jy het nuwe boodskappe"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Wissel verdeelde skerm"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Sluitskerm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skermkiekie"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toeganklikheid-kieslys"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> se onderskrifbalk."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in die BEPERK-groep geplaas"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Persoonlik"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Werk"</string>
 </resources>
diff --git a/core/res/res/values-am/strings.xml b/core/res/res/values-am/strings.xml
index 23e6ccd..b637a63 100644
--- a/core/res/res/values-am/strings.xml
+++ b/core/res/res/values-am/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"የእርስዎ መሣሪያ ይደመሰሳል"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"የአስተዳዳሪ መተግበሪያ ስራ ላይ ሊውል አይችልም። የእርስዎን መሣሪያ አሁን ይደመሰሳል።\n\nጥያቄዎች ካለዎት የድርጅትዎን አስተዳዳሪ ያነጋግሩ።"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ማተም በ<xliff:g id="OWNER_APP">%s</xliff:g> ተሰናክሏል።"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"የግል መተግበሪያዎች በአስተዳዳሪ ታግዷል"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"የመመሪያ ተገዥነትን ለመፈተሽ እዚህ ላይ መለያ ያድርጉ።"</string>
     <string name="me" msgid="6207584824693813140">"እኔ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"የጡባዊ አማራጮች"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV አማራጮች"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"የመክፈቻ ስርዓተ ጥለቱን <xliff:g id="NUMBER_0">%1$d</xliff:g> ጊዜ በትክክል አልሳሉትም። ከ<xliff:g id="NUMBER_1">%2$d</xliff:g> ተጨማሪ ያልተሳኩ ሙከራዎች በኋላ የኢሜይል መለያ ተጠቅመው ስልክዎን እንዲከፍቱ ይጠየቃሉ።\n\nእባክዎ ከ<xliff:g id="NUMBER_2">%3$d</xliff:g> ሰከንዶች በኋላ እንደገና ይሞክሩ።"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"አስወግድ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"ዳራው ከ<xliff:g id="PACKAGENAME">%1$s</xliff:g> የጀመረው የፊት አገልግሎት ወደፊት በሚኖሩት R ግንቦች ላይ ጥቅም ላይ እየዋለ ፈቃድ አይኖረውም። እባክዎ go/r-bg-fgs-restriction እና ፋይል ሳንካ ሪፖርትን ይመልከቱ።"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ድምጹ ከሚመከረው መጠን በላይ ከፍ ይበል?\n\nበከፍተኛ ድምጽ ለረጅም ጊዜ ማዳመጥ ጆሮዎን ሊጎዳው ይችላል።"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"የተደራሽነት አቋራጭ ጥቅም ላይ ይዋል?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"አቋራጩ ሲበራ ሁለቱንም የድምፅ አዝራሮች ለ3 ሰከንዶች ተጭኖ መቆየት የተደራሽነት ባህሪን ያስጀምረዋል።\n\n አሁን ያለ የተደራሽነት ባህሪ፦\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ባህሪውን በቅንብሮች &gt; ተደራሽነት ውስጥ ሊለውጡት ይችላሉ።"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"መተግበሪያ አይገኝም"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> አሁን ላይ አይገኝም። በ<xliff:g id="APP_NAME_1">%2$s</xliff:g> የሚተዳደር ነው።"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"የበለጠ ለመረዳት"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"መተግበሪያን ላፍታ እንዳይቆም አድርግ"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"የስራ መገለጫ ይብራ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"የእርስዎ የስራ መተግበሪያዎች፣ ማሳወቂያዎች፣ ውሂብ እና ሌሎች የስራ መገለጫ ባህሪያት ይበራሉ"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"አብራ"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"መተግበሪያ አይገኝም"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> አሁን አይገኝም።"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ይህ መተግበሪያ ለቆየ የAndroid ስሪት ነው የተገነባው፣ እና በአግባቡ ላይሰራ ይችላል። ዝማኔዎች ካሉ ለመመልከት ይሞክሩ፣ ወይም ደግሞ ገንቢውን ያነጋግሩ።"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ዝማኔ ካለ አረጋግጥ"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"አዲስ መልዕክቶች አለዎት"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"የተከፈለ ማያን ቀያይር"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"የማያ ገጽ ቁልፍ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ቅጽበታዊ ገጽ እይታ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"የተደራሽነት ምናሌ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"የ<xliff:g id="APP_NAME">%1$s</xliff:g> የሥዕል ገላጭ ጽሑፍ አሞሌ።"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ወደ የRESTRICTED ባልዲ ተከትቷል"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"የግል"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ሥራ"</string>
 </resources>
diff --git a/core/res/res/values-ar/strings.xml b/core/res/res/values-ar/strings.xml
index 80c04eb..002d61e 100644
--- a/core/res/res/values-ar/strings.xml
+++ b/core/res/res/values-ar/strings.xml
@@ -202,10 +202,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"سيتم محو بيانات جهازك."</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"تعذّر استخدام تطبيق المشرف. سيتم محو بيانات جهازك الآن.\n\nإذا كانت لديك أسئلة، اتصل بمشرف مؤسستك."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"تم إيقاف الطباعة بواسطة <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"علّق المشرف عمل التطبيقات الشخصية"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"انقر هنا للتحقّق من الالتزام بالسياسات."</string>
     <string name="me" msgid="6207584824693813140">"أنا"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"خيارات الجهاز اللوحي"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"‏خيارات Android TV"</string>
@@ -917,7 +915,7 @@
     <string name="factorytest_no_action" msgid="339252838115675515">"‏لم يتم العثور على أي حزمة توفر إجراء FACTORY_TEST."</string>
     <string name="factorytest_reboot" msgid="2050147445567257365">"إعادة تشغيل"</string>
     <string name="js_dialog_title" msgid="7464775045615023241">"تعرض الصفحة في \"<xliff:g id="TITLE">%s</xliff:g>\":"</string>
-    <string name="js_dialog_title_default" msgid="3769524569903332476">"جافا سكريبت"</string>
+    <string name="js_dialog_title_default" msgid="3769524569903332476">"JavaScript"</string>
     <string name="js_dialog_before_unload_title" msgid="7012587995876771246">"تأكيد الانتقال"</string>
     <string name="js_dialog_before_unload_positive_button" msgid="4274257182303565509">"مغادرة هذه الصفحة"</string>
     <string name="js_dialog_before_unload_negative_button" msgid="3873765747622415310">"البقاء في هذه الصفحة"</string>
@@ -1397,7 +1395,7 @@
     <string name="test_harness_mode_notification_message" msgid="3039123743127958420">"يمكنك إجراء إعادة ضبط على الإعدادات الأصلية لإيقاف وضع \"مفعِّل اختبار\"."</string>
     <string name="console_running_notification_title" msgid="6087888939261635904">"وحدة التحكّم التسلسلية مفعّلة"</string>
     <string name="console_running_notification_message" msgid="7892751888125174039">"الأداء متأثر. لإيقاف وحدة التحكّم، تحقّق من برنامج الإقلاع."</string>
-    <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"‏السوائل والشوائب في منفذ USB"</string>
+    <string name="usb_contaminant_detected_title" msgid="4359048603069159678">"‏السوائل أو الشوائب في منفذ USB"</string>
     <string name="usb_contaminant_detected_message" msgid="7346100585390795743">"‏تمّ إيقاف منفذ USB تلقائيًا. انقُر لمعرفة المزيد من المعلومات."</string>
     <string name="usb_contaminant_not_detected_title" msgid="2651167729563264053">"‏مسموح باستخدام منفذ USB"</string>
     <string name="usb_contaminant_not_detected_message" msgid="892863190942660462">"لم يَعُد الهاتف يكتشف سوائل أو شوائب."</string>
@@ -1701,8 +1699,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"لقد رسمت نقش فتح القفل بشكل غير صحيح <xliff:g id="NUMBER_0">%1$d</xliff:g> مرة. بعد إجراء <xliff:g id="NUMBER_1">%2$d</xliff:g> من المحاولات غير الناجحة الأخرى، ستُطالب بإلغاء تأمين الهاتف باستخدام حساب بريد إلكتروني لإلغاء تأمين الهاتف.\n\n أعد المحاولة خلال <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانية."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"إزالة"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"‏لن يتم منح إذن الوصول إلى الموقع الجغرافي أثناء الاستخدام للخدمات التي تعمل في المقدّمة من <xliff:g id="PACKAGENAME">%1$s</xliff:g> والتي تبدأ من الخلفية في إصدارات R القادمة. يُرجى مراجعة go/r-bg-fgs-restriction وتقديم تقرير خطأ."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"هل تريد رفع مستوى الصوت فوق المستوى الموصى به؟\n\nقد يضر سماع صوت عالٍ لفترات طويلة بسمعك."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"هل تريد استخدام اختصار \"سهولة الاستخدام\"؟"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"عند تشغيل الاختصار، يؤدي الضغط على زرّي مستوى الصوت لمدة 3 ثوانٍ إلى تفعيل ميزة \"سهولة الاستخدام\".\n\n ميزة \"سهولة الاستخدام\" الحالية:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n يمكنك تغيير الميزة من \"الإعدادات\" &gt; \"سهولة الاستخدام\"."</string>
@@ -1980,11 +1977,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"التطبيق غير متاح"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"التطبيق <xliff:g id="APP_NAME_0">%1$s</xliff:g> غير متاح الآن، وهو مُدار بواسطة <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"مزيد من المعلومات"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"استئناف تشغيل التطبيق"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"تفعيل الملف الشخصي للعمل؟"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"سيتم تفعيل تطبيقات العمل التي تستخدمها والإشعارات والبيانات وغيرها من ميزات الملف الشخصي للعمل"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"تشغيل"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"التطبيق غير متاح"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"تطبيق <xliff:g id="APP_NAME">%1$s</xliff:g> غير متاح الآن."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"‏تمّ إنشاء هذا التطبيق لإصدار قديم من Android وقد لا يعمل بشكل صحيح. جرِّب البحث عن تحديثات أو الاتصال بمطوّر البرامج."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"البحث عن تحديث"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"لديك رسائل جديدة"</string>
@@ -2121,7 +2119,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"جدول بيانات: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"عرض تقديمي"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"عرض تقديمي: <xliff:g id="EXTENSION">%1$s</xliff:g>"</string>
-    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء تفعيل \"وضع الطائرة\"."</string>
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"سيظل البلوتوث مفعَّلاً أثناء استخدام \"وضع الطائرة\"."</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"جارٍ التحميل"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="zero"><xliff:g id="FILE_NAME_2">%s</xliff:g> و<xliff:g id="COUNT_3">%d</xliff:g> ملف</item>
@@ -2143,12 +2141,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تبديل \"تقسيم الشاشة\""</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"شاشة القفل"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"لقطة شاشة"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"قائمة \"سهولة الاستخدام\""</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"شريط الشرح لتطبيق <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"تم وضع <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> في الحزمة \"محظورة\"."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"شخصي"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"عمل"</string>
 </resources>
diff --git a/core/res/res/values-as/strings.xml b/core/res/res/values-as/strings.xml
index 73e32b8..bdf8fcf 100644
--- a/core/res/res/values-as/strings.xml
+++ b/core/res/res/values-as/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"আপোনাৰ ডিভাইচৰ ডেটা মচা হ\'ব"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"এই প্ৰশাসক এপটো ব্যৱহাৰ কৰিব নোৱাৰি। এতিয়া আপোনাৰ ডিভাইচটোৰ ডেটা মচা হ\'ব।\n\nআপোনাৰ কিবা প্ৰশ্ন থাকিলে আপোনাৰ প্ৰতিষ্ঠানৰ প্ৰশাসকৰ সৈতে যোগাযোগ কৰক।"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"প্ৰিণ্ট কৰা কাৰ্য <xliff:g id="OWNER_APP">%s</xliff:g>এ অক্ষম কৰি ৰাখিছে।"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ব্যক্তিগত এপ্‌সমূহ এগৰাকী প্ৰশাসকে নিলম্বিত কৰিছে"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"নীতি মানি চলেনে নাই পৰীক্ষা কৰিবলৈ ইয়াত টিপক।"</string>
     <string name="me" msgid="6207584824693813140">"মই"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"টে\'বলেটৰ বিকল্পসমূহ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TVৰ বিকল্পসমূহ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"আপুনি আপোনাৰ ল\'ক খোলাৰ আৰ্হিটো <xliff:g id="NUMBER_0">%1$d</xliff:g>বাৰ ভুলকৈ আঁকিছে। <xliff:g id="NUMBER_1">%2$d</xliff:g>তকৈ বেছি বাৰ ভুল আৰ্হি আঁকিলে আপোনাৰ ফ\'নটো কোনো একাউণ্টৰ জৰিয়তে আনলক কৰিবলৈ কোৱা হ\'ব।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> ছেকেণ্ডৰ পিছত আকৌ চেষ্টা কৰক।"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"আঁতৰাওক"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"নেপথ্যই <xliff:g id="PACKAGENAME">%1$s</xliff:g>ৰ পৰা আৰম্ভ কৰা অগ্ৰভূমিৰ সেৱাটোৰ ভৱিষ্যতৰ R বিল্ডসমূহত ব্যৱহাৰ হৈ থকা সম্পৰ্কীয় অনুমতি নাথাকিব। অনুগ্ৰহ কৰি go/r-bg-fgs-restriction চাওক আৰু এটা বাগৰিপ\'ৰ্ট ফাইল কৰক।"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"অনুমোদিত স্তৰতকৈ ওপৰলৈ ভলিউম বঢ়াব নেকি?\n\nদীৰ্ঘ সময়ৰ বাবে উচ্চ ভলিউমত শুনাৰ ফলত শ্ৰৱণ ক্ষমতাৰ ক্ষতি হ\'ব পাৰে।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"দিব্যাংগসকলৰ সুবিধাৰ শ্বৰ্টকাট ব্যৱহাৰ কৰেনে?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"শ্বৰ্টকাট অন হৈ থকাৰ সময়ত দুয়োটা ভলিউম বুটামত ৩ ছেকেণ্ডৰ বাবে ছাপ দি থাকিলে দিব্যাংগসকলৰ বাবে থকা সুবিধা এটা আৰম্ভ হ\'ব। \n\n চলিত দিব্যাংগসকলৰ সুবিধা:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n আপুনি এই সুবিধাটো ছেটিংসমূহ &gt; দিব্যাংগসকলৰ বাবে সুবিধা-লৈ গৈ সলনি কৰিব পাৰে।"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"এপটো নাই"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"এই মুহূৰ্তত <xliff:g id="APP_NAME_0">%1$s</xliff:g> উপলব্ধ নহয়। ইয়াক <xliff:g id="APP_NAME_1">%2$s</xliff:g>এ পৰিচালনা কৰে।"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"অধিক জানক"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"এপ্‌ আনপজ কৰক"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"কৰ্মস্থানৰ প্ৰ\'ফাইল অন কৰিবনে?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"আপোনাৰ কৰ্মস্থানৰ এপসমূহ, জাননীসমূহ, ডেটা আৰু কৰ্মস্থানৰ প্ৰ\'ফাইলৰ অইন সুবিধাসমূহ অন কৰা হ\'ব"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"অন কৰক"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"এপ্‌টো উপলব্ধ নহয়"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূৰ্তত <xliff:g id="APP_NAME">%1$s</xliff:g> উপলব্ধ নহয়।"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"এই এপটো Androidৰ এটা পুৰণা সংস্কৰণৰ বাবে প্ৰস্তুত কৰা হৈছিল, আৰু ই বিচৰাধৰণে কাম নকৰিবও পাৰে। ইয়াৰ আপডে’ট আছে নেকি চাওক, বা বিকাশকৰ্তাৰ সৈতে যোগাযোগ কৰক।"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"আপডে’ট আছে নেকি চাওক"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"আপুনি নতুন বার্তা লাভ কৰিছে"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"বিভাজিত স্ক্ৰীন ট’গল কৰক"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্ৰীন"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্ৰীণশ্বট"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"সাধ্য সুবিধাৰ মেনু"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ৰ কেপশ্বন বাৰ।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ক সীমাবদ্ধ বাকেটটোত ৰখা হৈছে"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ব্যক্তিগত"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"কৰ্মস্থান"</string>
 </resources>
diff --git a/core/res/res/values-az/strings.xml b/core/res/res/values-az/strings.xml
index c894c29..6f13024 100644
--- a/core/res/res/values-az/strings.xml
+++ b/core/res/res/values-az/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız təmizlənəcəkdir"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Admin tətbiqini istifadə etmək mümkün deyil. Cihaz indi təmizlənəcək.\n\nSualınız varsa, təşkilatın admini ilə əlaqə saxlayın."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Çap <xliff:g id="OWNER_APP">%s</xliff:g> tərəfindən deaktiv edildi."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Şəxsi tətbiqlər admin tərəfindən dayandırılıb"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Siyasətə uyğunluğu yoxlamaq üçün bura toxunun."</string>
     <string name="me" msgid="6207584824693813140">"Mən"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planşet seçimləri"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV seçimləri"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Siz artıq modeli <xliff:g id="NUMBER_0">%1$d</xliff:g> dəfə yanlış daxil etmisiniz.<xliff:g id="NUMBER_1">%2$d</xliff:g> dəfə də yanlış daxil etsəniz, telefonun kilidinin açılması üçün elektron poçt ünvanınız tələb olunacaq.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> saniyə ərzində yenidən cəhd edin."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Yığışdır"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Arxa fonda başladılan <xliff:g id="PACKAGENAME">%1$s</xliff:g> üzrə ön plan xidmətinin gələcək R versiyalarında \"istifadə zamanı\" icazəsi olmayacaq. go/r-bg-fgs-restriction bölməsinə keçin və baq hesabatı göndərin."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Səsin həcmi tövsiyə olunan səviyyədən artıq olsun?\n\nYüksək səsi uzun zaman dinləmək eşitmə qabiliyyətinizə zərər vura bilər."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Əlçatımlılıq Qısayolu istifadə edilsin?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Qısayol aktiv olduqda hər iki səs düyməsinə 3 saniyə basıb saxlamaqla əlçatımlılıq funksiyası işə başlayacaq.\n\n Cari əlçatımlılıq funksiyası:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Funksiyanı Ayarlar və Əçatımlılıq bölməsində dəyişə bilərsiniz."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Tətbiq əlçatmazdır"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hazırda əlçatan deyil. Bunu <xliff:g id="APP_NAME_1">%2$s</xliff:g> idarə edir."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Ətraflı məlumat"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Tətbiqi davam etdirin"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili aktiv edilsin?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"İş tətbiqləri, bildirişləri, data və digər iş profili funksiyaları aktiv ediləcək"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivləşdirin"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Tətbiq əlçatan deyil"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hazırda əlçatan deyil."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Bu tətbiq köhnə Android versiyası üçün hazırlanıb və düzgün işləməyə bilər. Güncəlləməni yoxlayın və ya developer ilə əlaqə saxlayın."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Güncəlləməni yoxlayın"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Yeni mesajlarınız var"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekrana keçid"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilid Ekranı"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran şəkli"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Əlçatımlılıq Menyusu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> başlıq paneli."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> MƏHDUDLAŞDIRILMIŞ səbətinə yerləşdirilib"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Şəxsi"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"İş"</string>
 </resources>
diff --git a/core/res/res/values-b+sr+Latn/strings.xml b/core/res/res/values-b+sr+Latn/strings.xml
index 909c315..862495a 100644
--- a/core/res/res/values-b+sr+Latn/strings.xml
+++ b/core/res/res/values-b+sr+Latn/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti obrisan"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Ne možete da koristite ovu aplikaciju za administratore. Uređaj će sada biti obrisan.\n\nAko imate pitanja, kontaktirajte administratora organizacije."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administrator je suspendovao lične aplikacije"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Dodirnite ovde da biste proverili usklađenost sa smernicama."</string>
     <string name="me" msgid="6207584824693813140">"Ja"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije za tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV-a"</string>
@@ -1635,8 +1633,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Nacrtali ste šablon za otključavanje netačno <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Posle još <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešna(ih) pokušaja, od vas će biti zatraženo da otključate telefon pomoću naloga e-pošte.\n\nProbajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunde/i."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluga u prvom planu sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> koja je pokrenuta u pozadini neće imati dozvolu tokom korišćenja u budućim R verzijama. Posetite go/r-bg-fgs-restriction i pošaljite izveštaj o grešci."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite da pojačate zvuk iznad preporučenog nivoa?\n\nSlušanje glasne muzike duže vreme može da vam ošteti sluh."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li da koristite prečicu za pristupačnost?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kada je prečica uključena, pritisnite oba dugmeta za jačinu zvuka da biste pokrenuli funkciju pristupačnosti.\n\n Aktuelna funkcija pristupačnosti:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Možete da promenite funkciju u odeljku Podešavanja &gt; Pristupačnost."</string>
@@ -1884,11 +1881,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacija nije dostupna"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. <xliff:g id="APP_NAME_1">%2$s</xliff:g> upravlja dostupnošću."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opozovi pauziranje aplikacije"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Da uključimo profil za Work?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Uključiće se poslovne aplikacije, obaveštenja, podaci i druge funkcije profila za Work"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ova aplikacija je napravljena za stariju verziju Android-a, pa možda neće raditi ispravno. Potražite ažuriranja ili kontaktirajte programera."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Potraži ažuriranje"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Imate nove poruke"</string>
@@ -2041,12 +2039,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključite/isključite podeljeni ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključani ekran"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimak ekrana"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni Pristupačnost"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka sa naslovima aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je dodat u segment OGRANIČENO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Lični"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Poslovni"</string>
 </resources>
diff --git a/core/res/res/values-be/strings.xml b/core/res/res/values-be/strings.xml
index 19dcf92..8a02da2 100644
--- a/core/res/res/values-be/strings.xml
+++ b/core/res/res/values-be/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Даныя вашай прылады будуць сцерты"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Немагчыма выкарыстоўваць праграму адміністравання. Звесткі на вашай прыладзе будуць выдалены.\n\nКалі ў вас ёсць пытанні, звярніцеся да адміністратара арганізацыі."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Друк адключаны ўладальнікам праграмы <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Асабістыя праграмы заблакіраваны адміністратарам"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Націсніце тут, каб упэўніцца ў адпаведнасці правілам."</string>
     <string name="me" msgid="6207584824693813140">"Я"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Параметры планшэта"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Параметры Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Вы няправільна ўвялі графічны ключ разблакiроўкi пэўную колькасць разоў: <xliff:g id="NUMBER_0">%1$d</xliff:g>. Пасля яшчэ некалькiх няўдалых спроб (<xliff:g id="NUMBER_1">%2$d</xliff:g>) вам будзе прапанавана разблакiраваць тэлефон, увайшоўшы ў Google.\n\n Паўтарыце спробу праз <xliff:g id="NUMBER_2">%3$d</xliff:g> с."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Выдалiць"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Запушчаны ў фонавым рэжыме асноўны сэрвіс з пакета \"<xliff:g id="PACKAGENAME">%1$s</xliff:g>\" не будзе мець дазволу while-in-use у будучых зборках на мове R. Наведайце сайт go/r-bg-fgs-restriction і адпраўце справаздачу пра памылку."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Павялiчыць гук вышэй рэкамендаванага ўзроўню?\n\nДоўгае праслухоўванне музыкi на вялiкай гучнасцi можа пашкодзiць ваш слых."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Выкарыстоўваць камбінацыю хуткага доступу для спецыяльных магчымасцей?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Калі камбінацыя хуткага доступу ўключана, вы можаце націснуць абедзве кнопкі гучнасці і ўтрымліваць іх 3 секунды, каб уключыць функцыю спецыяльных магчымасцей.\n\n Бягучая функцыя спецыяльных магчымасцей:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Вы можаце змяніць гэту функцыю ў меню \"Налады &gt; Спецыяльныя магчымасці\"."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Праграма недаступная"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Праграма \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" цяпер недаступная. Яна кіруецца праграмай \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Даведацца больш"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Скасаваць прыпыненне для праграмы"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Уключыць працоўны профіль?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Будуць уключаны вашы рабочыя праграмы, апавяшчэнні, даныя і іншыя функцыі працоўнага профілю"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Уключыць"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Праграма недаступная"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Праграма \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" цяпер недаступная."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Гэта праграма была створана для больш старой версіі Android і можа не працаваць належным чынам. Праверце наяўнасць абнаўленняў або звярніцеся да распрацоўшчыка."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Праверыць на наяўнасць абнаўленняў"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"У вас ёсць новыя паведамленні"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Пераключальнік падзеленага экрана"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Экран блакіроўкі"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Здымак экрана"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спецыяльных магчымасцей"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Панэль субцітраў праграмы \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" дададзены ў АБМЕЖАВАНУЮ групу"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Асабістыя"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Працоўныя"</string>
 </resources>
diff --git a/core/res/res/values-bg/strings.xml b/core/res/res/values-bg/strings.xml
index 8a68766..f7830c7 100644
--- a/core/res/res/values-bg/strings.xml
+++ b/core/res/res/values-bg/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Данните на устройството ви ще бъдат изтрити"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Приложението за администриране не може да се използва. Сега данните на устройството ви ще бъдат изтрити.\n\nАко имате въпроси, свържете се с администратора на организацията си."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Отпечатването е деактивиранo от <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Личните приложения може да са спрени от администратора"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Докоснете тук, за да проверите дали правилата ст спазват."</string>
     <string name="me" msgid="6207584824693813140">"Аз"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опции за таблета"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опции за Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Начертахте неправилно фигурата си за отключване <xliff:g id="NUMBER_0">%1$d</xliff:g> пъти. След още <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни опита ще бъдете помолени да отключите телефона посредством имейл адрес.\n\n Опитайте отново след <xliff:g id="NUMBER_2">%3$d</xliff:g> секунди."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Премахване"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Задният план, който е стартирал услуга на преден план от <xliff:g id="PACKAGENAME">%1$s</xliff:g>, няма да има разрешение при използване в бъдещите компилации R. Моля, вижте go/r-bg-fgs-restriction и подайте сигнал за програмна грешка."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да се увеличи ли силата на звука над препоръчителното ниво?\n\nПродължителното слушане при висока сила на звука може да увреди слуха ви."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Искате ли да използвате пряк път към функцията за достъпност?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Когато прекият път е включен, можете да стартирате дадена функция за достъпност, като натиснете двата бутона за промяна на силата на звука и ги задържите 3 секунди.\n\n Текущата функция за достъпност е:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Можете да промените функцията от „Настройки“ &gt; „Достъпност“."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Няма достъп до приложението"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"В момента няма достъп до <xliff:g id="APP_NAME_0">%1$s</xliff:g>. Това се управлява от <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Научете повече"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Отмяна на паузата за приложението"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Вкл. на служ. потр. профил?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Служебните ви приложения, известия и данни, както и другите функции на служебния потребителски профил ще бъдат включени"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Включване"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Приложението не е достъпно"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"В момента няма достъп до <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Това приложение бе създадено за по-стара версия на Android и може да не работи правилно. Опитайте да проверите за актуализации или се свържете с програмиста."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Проверка за актуализация"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Имате нови съобщения"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Превключване на разделения екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заключен екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Екранна снимка"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню за достъпност"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Лента за надписи на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакетът <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е поставен в ОГРАНИЧЕНИЯ контейнер"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Служебни"</string>
 </resources>
diff --git a/core/res/res/values-bn/strings.xml b/core/res/res/values-bn/strings.xml
index 9ca383d..af50b33 100644
--- a/core/res/res/values-bn/strings.xml
+++ b/core/res/res/values-bn/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"আপনার ডিভাইসটি মুছে ফেলা হবে"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"অ্যাডমিন অ্যাপটি ব্যবহার করা যাবে না। আপনার ডিভাইসে থাকা সবকিছু এখন মুছে ফেলা হবে।\n\nকোনও প্রশ্ন থাকলে আপনার প্রতিষ্ঠানের অ্যাডমিনের সাথে যোগাযোগ করুন।"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> প্রিন্টিং বন্ধ রেখেছে।"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"অ্যাডমিন ব্যক্তিগত অ্যাপ সাসপেন্ড করেছেন"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"নীতি মেনে চলা হচ্ছে কিনা তা যাচাই করতে এখানে ট্যাপ করুন।"</string>
     <string name="me" msgid="6207584824693813140">"আমাকে"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ট্যাবলেট বিকল্পগুলি"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-র বিকল্প"</string>
@@ -1299,7 +1297,7 @@
     <string name="no_permissions" msgid="5729199278862516390">"কোনো অনুমতির প্রয়োজন নেই"</string>
     <string name="perm_costs_money" msgid="749054595022779685">"এর জন্য অর্থপ্রদান করতে হতে পারে"</string>
     <string name="dlg_ok" msgid="5103447663504839312">"ঠিক আছে"</string>
-    <string name="usb_charging_notification_title" msgid="1674124518282666955">"এই ডিভাইসটি USB এর মাধ্যমে চার্জ করুন"</string>
+    <string name="usb_charging_notification_title" msgid="1674124518282666955">"এই ডিভাইসটি USB দিয়ে চার্জ করা হচ্ছে"</string>
     <string name="usb_supplying_notification_title" msgid="5378546632408101811">"সংযুক্ত ডিভাইসটি USB এর মাধ্যমে চার্জ করা হচ্ছে"</string>
     <string name="usb_mtp_notification_title" msgid="1065989144124499810">"USB ফাইল ট্রান্সফার চালু করা হয়েছে"</string>
     <string name="usb_ptp_notification_title" msgid="5043437571863443281">"USB এর মাধ্যমে PTP চালু করা হয়েছে"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"আপনি আপনার আনলকের প্যাটার্ন আঁকার ক্ষেত্রে <xliff:g id="NUMBER_0">%1$d</xliff:g> বার ভুল করেছেন৷ আর <xliff:g id="NUMBER_1">%2$d</xliff:g> বার অসফল প্রচেষ্টা করা হলে আপনাকে একটি ইমেল অ্যাকাউন্ট মারফত আপনার ফোন আনলক করতে বলা হবে৷\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> সেকেন্ডের মধ্যে আবার চেষ্টা করুন৷"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"সরান"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> থেকে শুরু হওয়া ফোরগ্রাউন্ড পরিষেবাটির ভবিষ্যতে আর বিল্ডগুলিতে ব্যবহারের অনুমতি নেই। go/r-bg-fgs-restriction দেখুন এবং বাগরিপোর্ট জমা দিন।"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"প্রস্তাবিত স্তরের চেয়ে বেশি উঁচুতে ভলিউম বাড়াবেন?\n\nউঁচু ভলিউমে বেশি সময় ধরে কিছু শুনলে আপনার শ্রবনশক্তির ক্ষতি হতে পারে।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"অ্যাক্সেসযোগ্যতা শর্টকাট ব্যবহার করবেন?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"শর্টকাটটি চালু থাকলে দুটি ভলিউম বোতাম একসাথে ৩ সেকেন্ড টিপে ধরে রাখলে একটি অ্যাকসেসিবিলিটি বৈশিষ্ট্য চালু হবে।\n\n বর্তমান অ্যাকসেসিবিলিটি বৈশিষ্ট্য:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n আপনি এই বৈশিষ্ট্যটি সেটিংস &gt; অ্যাকসেসিবিলিটিতে গিয়ে পরিবর্তন করতে পারবেন।"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"অ্যাপটি উপলভ্য নয়"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> এখন উপলভ্য নয়। এই অ্যাপটিকে <xliff:g id="APP_NAME_1">%2$s</xliff:g> অ্যাপ ম্যানেজ করে।"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"আরও জানুন"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"অ্যাপ আবার চালু করুন"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"কাজের প্রোফাইল চালু করবেন?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"আপনার কাজের অ্যাপ, বিজ্ঞপ্তি, ডেটা এবং কাজের প্রোফাইলের অন্যান্য বৈশিষ্ট্য চালু করা হবে"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"চালু করুন"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"অ্যাপ পাওয়া যাচ্ছে না"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"এই মুহূর্তে <xliff:g id="APP_NAME">%1$s</xliff:g> অ্যাপ পাওয়া যাচ্ছে না।"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"এই অ্যাপটি Android এর একটি পুরনো ভার্সনের জন্য তৈরি করা হয়েছিল, তাই এখানে সেটি ঠিকমতো কাজ নাও করতে পারে। আপডেট পাওয়া যাচ্ছে কিনা দেখুন বা ডেভেলপারের সাথে যোগাযোগ করুন।"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"আপডেট পাওয়া যাচ্ছে কিনা দেখুন"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"আপনার নতুন মেসেজ আছে"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"স্প্লিট স্ক্রিন টগল করুন"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"লক স্ক্রিন"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"স্ক্রিনশট"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"অ্যাক্সেসিবিলিটি মেনু"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-এর ক্যাপশন বার।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> সীমাবদ্ধ গ্রুপে অন্তর্ভুক্ত করা হয়েছে"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ব্যক্তিগত"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"অফিস"</string>
 </resources>
diff --git a/core/res/res/values-bs/strings.xml b/core/res/res/values-bs/strings.xml
index 5f83aa4..d436c5f 100644
--- a/core/res/res/values-bs/strings.xml
+++ b/core/res/res/values-bs/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će biti izbrisan"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Nije moguće koristiti aplikaciju administratora. Potpuno će se izbrisati podaci na vašem uređaju.\n\nAko imate pitanja, obratite se administratoru svoje organizacije."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Štampanje je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Lične aplikacije je obustavio administrator"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Dodirnite ovdje da provjerite usklađenost s pravilima."</string>
     <string name="me" msgid="6207584824693813140">"Ja"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije tableta"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV uređaja"</string>
@@ -1637,8 +1635,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Pogrešno ste nacrtali uzorak za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Ako napravite još <xliff:g id="NUMBER_1">%2$d</xliff:g> pokušaja bez uspjeha, od vas će se tražiti da otključate telefon pomoću e-pošte. \n\n Pokušajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluge iz prvog plana započete u pozadini s web lokacije <xliff:g id="PACKAGENAME">%1$s</xliff:g> neće imati odobrenje za funkciju \"za vrijeme korištenja\" u budućim R verzijama. Pogledajte go/r-bg-fgs-restriction i podnesite izvještaj o greškama."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučenog nivoa?\n\nDužim slušanjem glasnog zvuka možete oštetiti sluh."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li koristiti Prečicu za pristupačnost?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kada je prečica uključena, pritiskom na oba dugmeta za podešavanje jačine zvuka u trajanju od 3 sekunde pokrenut će se funkcija za pristupačnost.\n\n Trenutna funkcija za pristupačnost je:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Funkciju možete promijeniti ako odete u Postavke &gt; Pristupačnost."</string>
@@ -1886,11 +1883,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacija nije dostupna"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno nije dostupna. Ovim upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ponovo aktiviraj aplikaciju"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Uključiti radni profil?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se poslovne aplikacije, obavještenja, podaci i druge funkcije radnog profila"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno nije dostupna."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ova aplikacija je pravljena za stariju verziju Androida i možda neće ispravno raditi. Provjerite jesu li dostupna ažuriranja ili kontaktirajte programera."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Provjeri je li dostupno ažuriranje"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Imate nove poruke"</string>
@@ -2024,7 +2022,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> tabela"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"Prezentacija"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> prezentacija"</string>
-    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth će ostati uključen i u načinu rada u avionu"</string>
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"Bluetooth će ostati uključen tokom načina rada u avionu"</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"Učitavanje"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> fajl</item>
@@ -2043,12 +2041,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključi/isključi podijeljeni ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključavanje ekrana"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimak ekrana"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni za pristupačnost"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka za natpis aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je stavljen u odjeljak OGRANIČENO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Lično"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Posao"</string>
 </resources>
diff --git a/core/res/res/values-ca/strings.xml b/core/res/res/values-ca/strings.xml
index 930065b..f3b416c 100644
--- a/core/res/res/values-ca/strings.xml
+++ b/core/res/res/values-ca/strings.xml
@@ -182,11 +182,11 @@
       <item quantity="one">Autoritat de certificació instal·lada</item>
     </plurals>
     <string name="ssl_ca_cert_noti_by_unknown" msgid="4961102218216815242">"Per un tercer desconegut"</string>
-    <string name="ssl_ca_cert_noti_by_administrator" msgid="4564941950768783879">"Per l\'administrador del teu perfil professional"</string>
+    <string name="ssl_ca_cert_noti_by_administrator" msgid="4564941950768783879">"Per l\'administrador del teu perfil de treball"</string>
     <string name="ssl_ca_cert_noti_managed" msgid="217337232273211674">"Per <xliff:g id="MANAGING_DOMAIN">%s</xliff:g>"</string>
-    <string name="work_profile_deleted" msgid="5891181538182009328">"S\'ha suprimit el perfil professional"</string>
-    <string name="work_profile_deleted_details" msgid="3773706828364418016">"Falta l\'aplicació d\'administració del perfil professional o està malmesa. Com a conseqüència, s\'han suprimit el teu perfil professional i les dades relacionades. Contacta amb l\'administrador per obtenir ajuda."</string>
-    <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"El teu perfil professional ja no està disponible en aquest dispositiu"</string>
+    <string name="work_profile_deleted" msgid="5891181538182009328">"S\'ha suprimit el perfil de treball"</string>
+    <string name="work_profile_deleted_details" msgid="3773706828364418016">"Falta l\'aplicació d\'administració del perfil de treball o està malmesa. Com a conseqüència, s\'han suprimit el teu perfil de treball i les dades relacionades. Contacta amb l\'administrador per obtenir ajuda."</string>
+    <string name="work_profile_deleted_description_dpm_wipe" msgid="2477244968924647232">"El teu perfil de treball ja no està disponible en aquest dispositiu"</string>
     <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Has intentat introduir la contrasenya massa vegades"</string>
     <string name="device_ownership_relinquished" msgid="4080886992183195724">"L\'administrador ha cedit el dispositiu per a ús personal"</string>
     <string name="network_logging_notification_title" msgid="554983187553845004">"El dispositiu està gestionat"</string>
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"El contingut del dispositiu s\'esborrarà"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"No es pot utilitzar l\'aplicació d\'administració. S\'esborraran les dades del dispositiu.\n\nSi tens cap dubte, contacta amb l\'administrador de la teva organització."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha desactivat la impressió."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Un administrador ha suspès les aplicacions personals"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toca per comprovar si es compleix la política."</string>
     <string name="me" msgid="6207584824693813140">"Mi"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcions de la tauleta"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcions d\'Android TV"</string>
@@ -282,7 +280,7 @@
     <string name="safeMode" msgid="8974401416068943888">"Mode segur"</string>
     <string name="android_system_label" msgid="5974767339591067210">"Sistema Android"</string>
     <string name="user_owner_label" msgid="8628726904184471211">"Canvia al perfil personal"</string>
-    <string name="managed_profile_label" msgid="7316778766973512382">"Canvia al perfil professional"</string>
+    <string name="managed_profile_label" msgid="7316778766973512382">"Canvia al perfil de treball"</string>
     <string name="permgrouplab_contacts" msgid="4254143639307316920">"Contactes"</string>
     <string name="permgroupdesc_contacts" msgid="9163927941244182567">"accedir als contactes"</string>
     <string name="permgrouplab_location" msgid="1858277002233964394">"Ubicació"</string>
@@ -1408,8 +1406,8 @@
     <string name="deny" msgid="6632259981847676572">"Denega"</string>
     <string name="permission_request_notification_title" msgid="1810025922441048273">"Permís sol·licitat"</string>
     <string name="permission_request_notification_with_subtitle" msgid="3743417870360129298">"S\'ha sol·licitat permís\nper al compte <xliff:g id="ACCOUNT">%s</xliff:g>."</string>
-    <string name="forward_intent_to_owner" msgid="4620359037192871015">"Estàs utilitzant aquesta aplicació fora del perfil professional."</string>
-    <string name="forward_intent_to_work" msgid="3620262405636021151">"Estàs utilitzant l\'aplicació al perfil professional."</string>
+    <string name="forward_intent_to_owner" msgid="4620359037192871015">"Estàs utilitzant aquesta aplicació fora del perfil de treball."</string>
+    <string name="forward_intent_to_work" msgid="3620262405636021151">"Estàs utilitzant l\'aplicació al perfil de treball."</string>
     <string name="input_method_binding_label" msgid="1166731601721983656">"Mètode d\'introducció de text"</string>
     <string name="sync_binding_label" msgid="469249309424662147">"Sincronització"</string>
     <string name="accessibility_binding_label" msgid="1974602776545801715">"Accessibilitat"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Has dibuixat el patró de desbloqueig <xliff:g id="NUMBER_0">%1$d</xliff:g> vegades de manera incorrecta. Si falles <xliff:g id="NUMBER_1">%2$d</xliff:g> vegades més, se\'t demanarà que desbloquegis el telèfon amb un compte de correu electrònic.\n\n Torna-ho a provar d\'aquí a <xliff:g id="NUMBER_2">%3$d</xliff:g> segons."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Elimina"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servei en primer pla (<xliff:g id="PACKAGENAME">%1$s</xliff:g>) iniciat en segon pla no tindrà permís durant l\'ús en compilacions R posteriors. Consulta la pàgina go/r-bg-fgs-restriction i presenta un informe d\'errors."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vols apujar el volum per sobre del nivell recomanat?\n\nSi escoltes música a un volum alt durant períodes llargs, pots danyar-te l\'oïda."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vols fer servir la drecera d\'accessibilitat?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Si la drecera està activada, prem els dos botons de volum durant 3 segons, per iniciar una funció d\'accessibilitat.\n\n Funció d\'accessibilitat actual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Pots canviar la funció a Configuració &gt; Accessibilitat."</string>
@@ -1820,7 +1817,7 @@
     <string name="stk_cc_ss_to_dial_video" msgid="1324194624384312664">"La sol·licitud SS s\'ha canviat per una videotrucada"</string>
     <string name="stk_cc_ss_to_ussd" msgid="8417905193112944760">"La sol·licitud SS s\'ha canviat per una sol·licitud USSD"</string>
     <string name="stk_cc_ss_to_ss" msgid="132040645206514450">"S\'ha canviat a una nova sol·licitud SS"</string>
-    <string name="notification_work_profile_content_description" msgid="5296477955677725799">"Perfil professional"</string>
+    <string name="notification_work_profile_content_description" msgid="5296477955677725799">"Perfil de treball"</string>
     <string name="notification_alerted_content_description" msgid="6139691253611265992">"S\'ha enviat una alerta"</string>
     <string name="expand_button_content_description_collapsed" msgid="3873368935659010279">"Desplega"</string>
     <string name="expand_button_content_description_expanded" msgid="7484217944948667489">"Replega"</string>
@@ -1852,17 +1849,18 @@
     <string name="app_suspended_title" msgid="888873445010322650">"L\'aplicació no està disponible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no està disponible en aquests moments. Aquesta opció es gestiona a <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Més informació"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
-    <string name="work_mode_off_title" msgid="5503291976647976560">"Activar el perfil professional?"</string>
-    <string name="work_mode_off_message" msgid="8417484421098563803">"S\'activaran les teves aplicacions per a la feina, les notificacions, les dades i altres funcions del perfil professional"</string>
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reactiva l\'aplicació"</string>
+    <string name="work_mode_off_title" msgid="5503291976647976560">"Activar el perfil de treball?"</string>
+    <string name="work_mode_off_message" msgid="8417484421098563803">"S\'activaran les teves aplicacions de treball, les notificacions, les dades i altres funcions del perfil de treball"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activa"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"L\'aplicació no està disponible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Ara mateix, <xliff:g id="APP_NAME">%1$s</xliff:g> no està disponible."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Aquesta aplicació es va crear per a una versió antiga d\'Android i pot ser que no funcioni correctament. Prova de cercar actualitzacions o contacta amb el desenvolupador."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Cerca actualitzacions"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Tens missatges nous"</string>
     <string name="new_sms_notification_content" msgid="3197949934153460639">"Obre l\'aplicació d\'SMS per veure\'ls"</string>
     <string name="profile_encrypted_title" msgid="9001208667521266472">"Algunes funcions poden ser limitades"</string>
-    <string name="profile_encrypted_detail" msgid="5279730442756849055">"Perfil professional bloquejat"</string>
+    <string name="profile_encrypted_detail" msgid="5279730442756849055">"Perfil de treball bloquejat"</string>
     <string name="profile_encrypted_message" msgid="1128512616293157802">"Toca per desbloquejar el perfil"</string>
     <string name="usb_mtp_launch_notification_title" msgid="774319638256707227">"S\'ha connectat a <xliff:g id="PRODUCT_NAME">%1$s</xliff:g>"</string>
     <string name="usb_mtp_launch_notification_description" msgid="6942535713629852684">"Toca per veure els fitxers"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Commuta Pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueig"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú d\'accessibilitat"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de títol de l\'aplicació <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> s\'ha transferit al segment RESTRINGIT"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Feina"</string>
 </resources>
diff --git a/core/res/res/values-cs/strings.xml b/core/res/res/values-cs/strings.xml
index 2c017dd..754a020 100644
--- a/core/res/res/values-cs/strings.xml
+++ b/core/res/res/values-cs/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Zařízení bude vymazáno"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Aplikaci pro správu nelze použít. Zařízení teď bude vymazáno.\n\nV případě dotazů vám pomůže administrátor organizace."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Aplikace <xliff:g id="OWNER_APP">%s</xliff:g> tisk zakazuje."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Osobní aplikace byly pozastaveny administrátorem"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Klepnutím sem zkontrolujete soulad se zásadami."</string>
     <string name="me" msgid="6207584824693813140">"Já"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabletu"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti zařízení Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Již <xliff:g id="NUMBER_0">%1$d</xliff:g>krát jste nesprávně nakreslili své heslo odemknutí. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> dalších neúspěšných pokusech budete požádáni o odemčení telefonu pomocí e-mailového účtu.\n\n Zkuste to znovu za <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odebrat"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Služba v popředí z balíčku <xliff:g id="PACKAGENAME">%1$s</xliff:g>, která byla spuštěna na pozadí, v budoucích sestavenách typu R nebude mít oprávnění ke spuštění při používání. Přejděte na adresu go/r-bg-fgs-restriction a vyplňte zprávu o chybě."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšit hlasitost nad doporučenou úroveň?\n\nDlouhodobý poslech hlasitého zvuku může poškodit sluch."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použít zkratku přístupnosti?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Když je tato zkratka zapnutá, můžete funkci přístupnosti spustit tím, že na tři sekundy podržíte obě tlačítka hlasitosti.\n\n Aktuální funkce přístupnosti:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Funkci můžete změnit v Nastavení &gt; Přístupnost."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikace není k dispozici"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikace <xliff:g id="APP_NAME_0">%1$s</xliff:g> momentálně není dostupná. Tato předvolba se spravuje v aplikaci <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Další informace"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Zrušit pozastavení aplikace"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnout pracovní profil?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Vaše pracovní aplikace, oznámení, data a ostatní funkce pracovního účtu budou zapnuty"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnout"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikace není k dispozici"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikace <xliff:g id="APP_NAME">%1$s</xliff:g> v tuto chvíli není k dispozici."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Tato aplikace byla vytvořena pro starší verzi systému Android a nemusí fungovat správně. Zkuste vyhledat aktualizace, případně kontaktujte vývojáře."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Zkontrolovat aktualizace"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Máte nové zprávy"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Přepnout rozdělenou obrazovku"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Obrazovka uzamčení"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snímek obrazovky"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Nabídka usnadnění přístupu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popisek aplikace <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balíček <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> byl vložen do sekce OMEZENO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Osobní"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Pracovní"</string>
 </resources>
diff --git a/core/res/res/values-da/strings.xml b/core/res/res/values-da/strings.xml
index 4ebea89..733c7f0 100644
--- a/core/res/res/values-da/strings.xml
+++ b/core/res/res/values-da/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Enheden slettes"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administrationsappen kan ikke bruges. Enheden vil nu blive ryddet. \n\nKontakt din organisations administrator, hvis du har spørgsmål."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Udskrivning er deaktiveret af <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"En administrator har suspenderet personlige apps."</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tryk her for at tjekke overholdelsen af politikker."</string>
     <string name="me" msgid="6207584824693813140">"Mig"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Valgmuligheder for tabletcomputeren"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Valgmuligheder for Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Du har tegnet dit oplåsningsmønster forkert <xliff:g id="NUMBER_0">%1$d</xliff:g> gange. Efter <xliff:g id="NUMBER_1">%2$d</xliff:g> yderligere mislykkede forsøg til vil du blive bedt om at låse din telefon op ved hjælp af en mailkonto.\n\n Prøv igen om <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunder."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjern"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Tjenesten i forgrunden fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, der starter i baggrunden, vil i fremtidige R-builds ikke have tilladelse, mens den er i brug. Se go/r-bg-fgs-restriction, og indsend en fejlrapport."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du skrue højere op end det anbefalede lydstyrkeniveau?\n\nDu kan skade hørelsen ved at lytte til meget høj musik over længere tid."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruge genvejen til Hjælpefunktioner?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Når genvejen er slået til, kan du starte en hjælpefunktion ved at trykke på begge lydstyrkeknapper i tre sekunder.\n\n Nuværende hjælpefunktion:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Du kan skifte funktion i Indstillinger &gt; Hjælpefunktioner."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Appen er ikke tilgængelig"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgængelig lige nu. Dette administreres af <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Få flere oplysninger"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Afslut pause for app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Skal arbejdsprofilen slås til?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Dine arbejdsapps, notifikationer, data og andre funktioner til din arbejdsprofil deaktiveres"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå til"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgængelig"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgængelig lige nu."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Denne app er lavet til en ældre version af Android og fungerer muligvis ikke korrekt. Prøv at søge efter opdateringer, eller kontakt udvikleren."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Søg efter opdatering"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Du har nye beskeder"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Slå Opdelt skærm til eller fra"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låseskærm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menuen Hjælpefunktioner"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Titellinje for <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blevet placeret i samlingen BEGRÆNSET"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personlig"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Arbejde"</string>
 </resources>
diff --git a/core/res/res/values-de/strings.xml b/core/res/res/values-de/strings.xml
index 6fa0ac1..9a4c606 100644
--- a/core/res/res/values-de/strings.xml
+++ b/core/res/res/values-de/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Die Daten auf deinem Gerät werden gelöscht."</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Die Admin-App kann nicht verwendet werden. Die Daten auf deinem Gerät werden nun gelöscht.\n\nBitte wende dich bei Fragen an den Administrator deiner Organisation."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Drucken wurde von <xliff:g id="OWNER_APP">%s</xliff:g> deaktiviert."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Private Apps wurden von einem Administrator gesperrt"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tippe hier, um die Einhaltung der Richtlinie zu prüfen."</string>
     <string name="me" msgid="6207584824693813140">"Eigene"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-Optionen"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-Optionen"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Du hast dein Entsperrungsmuster <xliff:g id="NUMBER_0">%1$d</xliff:g>-mal falsch gezeichnet. Nach <xliff:g id="NUMBER_1">%2$d</xliff:g> weiteren erfolglosen Versuchen wirst du aufgefordert, dein Telefon mithilfe eines E-Mail-Kontos zu entsperren.\n\n Versuche es in <xliff:g id="NUMBER_2">%3$d</xliff:g> Sekunden erneut."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Entfernen"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Der Dienst im Vordergrund von <xliff:g id="PACKAGENAME">%1$s</xliff:g>, der im Hintergrund gestartet wurde, hat in zukünftigen R-Builds keine Zugriffsberechtigung mehr während der Nutzung. Siehe dazu go/r-bg-fgs-restriction und reiche einen Fehlerbericht ein."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lautstärke über den Schwellenwert anheben?\n\nWenn du über einen längeren Zeitraum Musik in hoher Lautstärke hörst, kann dies dein Gehör schädigen."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Verknüpfung für Bedienungshilfen verwenden?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Wenn die Verknüpfung aktiviert ist, kannst du die beiden Lautstärketasten drei Sekunden lang gedrückt halten, um eine Bedienungshilfe zu starten.\n\n Aktuelle Bedienungshilfe:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Du kannst die Bedienungshilfe unter \"Einstellungen\" &gt; \"Bedienungshilfen\" ändern."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App nicht verfügbar"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ist momentan nicht verfügbar. Dies wird über die App \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\" verwaltet."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Weitere Informationen"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App-Pausierung aufheben"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Arbeitsprofil aktivieren?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Deine geschäftlichen Apps, Benachrichtigungen, Daten und andere Funktionen des Arbeitsprofils werden aktiviert"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivieren"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App ist nicht verfügbar"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ist derzeit nicht verfügbar."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Diese App wurde für eine ältere Android-Version entwickelt und funktioniert möglicherweise nicht mehr richtig. Prüfe, ob Updates verfügbar sind oder kontaktiere den Entwickler."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Auf Updates prüfen"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Du hast neue Nachrichten"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"\"Bildschirm teilen\" ein-/ausschalten"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Sperrbildschirm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menü \"Bedienungshilfen\""</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Untertitelleiste von <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> wurde in den BESCHRÄNKT-Bucket gelegt"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Privat"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Geschäftlich"</string>
 </resources>
diff --git a/core/res/res/values-el/strings.xml b/core/res/res/values-el/strings.xml
index 81a16f2..30a8d61 100644
--- a/core/res/res/values-el/strings.xml
+++ b/core/res/res/values-el/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Η συσκευή σας θα διαγραφεί"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Δεν είναι δυνατή η χρήση της εφαρμογής διαχειριστή. Η συσκευή σας θα διαγραφεί.\n\nΕάν έχετε ερωτήσεις, επικοινωνήστε με τον διαχειριστή του οργανισμού σας."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Η εκτύπωση απενεργοποιήθηκε από τον χρήστη <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Οι προσωπικές εφαρμογές έχουν τεθεί σε αναστολή από έναν διαχειριστή"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Πατήστε εδώ για να ελέγξετε τη συμμόρφωση πολιτικής."</string>
     <string name="me" msgid="6207584824693813140">"Για εμένα"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Επιλογές tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Επιλογές Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Σχεδιάσατε το μοτίβο ξεκλειδώματος εσφαλμένα <xliff:g id="NUMBER_0">%1$d</xliff:g> φορές. Μετά από <xliff:g id="NUMBER_1">%2$d</xliff:g> ανεπιτυχείς προσπάθειες ακόμη, θα σας ζητηθεί να ξεκλειδώσετε το τηλέφωνό σας με τη χρήση ενός λογαριασμού ηλεκτρονικού ταχυδρομείου.\n\n Δοκιμάστε ξανά σε <xliff:g id="NUMBER_2">%3$d</xliff:g> δευτερόλεπτα."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Κατάργηση"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Η υπηρεσία στο προσκήνιο που ξεκίνησε από το παρασκήνιο από το πακέτο <xliff:g id="PACKAGENAME">%1$s</xliff:g> δεν θα έχει άδεια πρόσβασης μόνο κατά τη χρήση σε μελλοντικές εκδόσεις R. Ανατρέξτε στο go/r-bg-fgs-restriction και υποβάλετε αναφορά σφάλματος."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Αυξάνετε την ένταση ήχου πάνω από το επίπεδο ασφαλείας;\n\nΑν ακούτε μουσική σε υψηλή ένταση για μεγάλο χρονικό διάστημα ενδέχεται να προκληθεί βλάβη στην ακοή σας."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Να χρησιμοποιείται η συντόμευση προσβασιμότητας;"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Όταν η συντόμευση είναι ενεργοποιημένη, το πάτημα και των δύο κουμπιών έντασης ήχου για 3 δευτερόλεπτα θα ξεκινήσει μια λειτουργία προσβασιμότητας.\n\n Τρέχουσα λειτουργία προσβασιμότητας:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Μπορείτε να αλλάξετε τη λειτουργία από τις Ρυθμίσεις &gt; Προσβασιμότητα."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Η εφαρμογή δεν είναι διαθέσιμη"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Η εφαρμογή <xliff:g id="APP_NAME_0">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή. Η διαχείριση πραγματοποιείται από την εφαρμογή <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Μάθετε περισσότερα"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Κατάργηση παύσης εφαρμογής"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ενεργοποίηση προφίλ εργασίας;"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Οι εφαρμογές, οι ειδοποιήσεις και τα δεδομένα εργασίας σας, καθώς και άλλες λειτουργίες του προφίλ εργασίας, θα ενεργοποιηθούν"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ενεργοποίηση"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Η εφαρμογή δεν είναι διαθέσιμη"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Η εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g> δεν είναι διαθέσιμη αυτήν τη στιγμή."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Αυτή η εφαρμογή δημιουργήθηκε για παλαιότερη έκδοση του Android και μπορεί να μην λειτουργεί σωστά. Δοκιμάστε να ελέγξετε εάν υπάρχουν ενημερώσεις ή επικοινωνήστε με τον προγραμματιστή."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Έλεγχος για ενημέρωση"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Έχετε νέα μηνύματα"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Εναλλαγή διαχωρισμού οθόνης"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Οθόνη κλειδώματος"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Στιγμιότυπο οθόνης"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Μενού προσβασιμότητας"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Γραμμή υποτίτλων για την εφαρμογή <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Το πακέτο <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> τοποθετήθηκε στον κάδο ΠΕΡΙΟΡΙΣΜΕΝΗΣ ΠΡΟΣΒΑΣΗΣ."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Προσωπικό"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Εργασία"</string>
 </resources>
diff --git a/core/res/res/values-en-rAU/strings.xml b/core/res/res/values-en-rAU/strings.xml
index 87e0c90..d15fc5a 100644
--- a/core/res/res/values-en-rAU/strings.xml
+++ b/core/res/res/values-en-rAU/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Personal apps have been suspended by an admin"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tap here to check policy compliance."</string>
     <string name="me" msgid="6207584824693813140">"Me"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%1$d</xliff:g> times. After <xliff:g id="NUMBER_1">%2$d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%3$d</xliff:g> seconds."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"The background started foreground service from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will not have while-in-use permission in future R builds. Please see go/r-bg-fgs-restriction and file a bug report."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature.\n\n Current accessibility feature:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n You can change the feature in Settings &gt; Accessibility."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App isn’t available"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"This app was built for an older version of Android and may not work properly. Try checking for updates or contact the developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Check for update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"You have new messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
 </resources>
diff --git a/core/res/res/values-en-rCA/strings.xml b/core/res/res/values-en-rCA/strings.xml
index 008ad8a..bec2e34 100644
--- a/core/res/res/values-en-rCA/strings.xml
+++ b/core/res/res/values-en-rCA/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Personal apps have been suspended by an admin"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tap here to check policy compliance."</string>
     <string name="me" msgid="6207584824693813140">"Me"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%1$d</xliff:g> times. After <xliff:g id="NUMBER_1">%2$d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%3$d</xliff:g> seconds."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"The background started foreground service from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will not have while-in-use permission in future R builds. Please see go/r-bg-fgs-restriction and file a bug report."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature.\n\n Current accessibility feature:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n You can change the feature in Settings &gt; Accessibility."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App isn’t available"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"This app was built for an older version of Android and may not work properly. Try checking for updates or contact the developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Check for update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"You have new messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
 </resources>
diff --git a/core/res/res/values-en-rGB/strings.xml b/core/res/res/values-en-rGB/strings.xml
index 87e0c90..d15fc5a 100644
--- a/core/res/res/values-en-rGB/strings.xml
+++ b/core/res/res/values-en-rGB/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Personal apps have been suspended by an admin"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tap here to check policy compliance."</string>
     <string name="me" msgid="6207584824693813140">"Me"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%1$d</xliff:g> times. After <xliff:g id="NUMBER_1">%2$d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%3$d</xliff:g> seconds."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"The background started foreground service from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will not have while-in-use permission in future R builds. Please see go/r-bg-fgs-restriction and file a bug report."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature.\n\n Current accessibility feature:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n You can change the feature in Settings &gt; Accessibility."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App isn’t available"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"This app was built for an older version of Android and may not work properly. Try checking for updates or contact the developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Check for update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"You have new messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
 </resources>
diff --git a/core/res/res/values-en-rIN/strings.xml b/core/res/res/values-en-rIN/strings.xml
index 87e0c90..d15fc5a 100644
--- a/core/res/res/values-en-rIN/strings.xml
+++ b/core/res/res/values-en-rIN/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Your device will be erased"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"The admin app can\'t be used. Your device will now be erased.\n\nIf you have questions, contact your organisation\'s admin."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printing disabled by <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Personal apps have been suspended by an admin"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tap here to check policy compliance."</string>
     <string name="me" msgid="6207584824693813140">"Me"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet options"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV options"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"You have incorrectly drawn your unlock pattern <xliff:g id="NUMBER_0">%1$d</xliff:g> times. After <xliff:g id="NUMBER_1">%2$d</xliff:g> more unsuccessful attempts, you will be asked to unlock your phone using an email account.\n\n Try again in <xliff:g id="NUMBER_2">%3$d</xliff:g> seconds."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remove"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"The background started foreground service from <xliff:g id="PACKAGENAME">%1$s</xliff:g> will not have while-in-use permission in future R builds. Please see go/r-bg-fgs-restriction and file a bug report."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Raise volume above recommended level?\n\nListening at high volume for long periods may damage your hearing."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Use Accessibility Shortcut?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature.\n\n Current accessibility feature:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n You can change the feature in Settings &gt; Accessibility."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App isn’t available"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> isn’t available at the moment. This is managed by <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Learn more"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Unpause app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Turn on work profile?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Your work apps, notifications, data and other work profile features will be turned on"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Turn on"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App is not available"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is not available right now."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"This app was built for an older version of Android and may not work properly. Try checking for updates or contact the developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Check for update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"You have new messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Toggle Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Accessibility menu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar of <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> has been put into the RESTRICTED bucket"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Work"</string>
 </resources>
diff --git a/core/res/res/values-en-rXC/strings.xml b/core/res/res/values-en-rXC/strings.xml
index 777107a..42ec932 100644
--- a/core/res/res/values-en-rXC/strings.xml
+++ b/core/res/res/values-en-rXC/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‎‏‎‏‏‎‏‏‎‏‎‎‏‎‎‏‎‎‏‎‎‎‏‎‎‎‎‎‏‎Your device will be erased‎‏‎‎‏‎"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‎‏‏‎‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‎‎‎‏‏‏‎‏‏‏‎‏‎‏‏‎‏‏‏‏‏‏‏‏‎‎‏‎‏‎‎‎‎‏‎‏‎‏‎The admin app can\'t be used. Your device will now be erased.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎If you have questions, contact your organization\'s admin.‎‏‎‎‏‎"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎‏‏‎‏‎‎‎‎‏‎‏‎‏‎‏‏‎‏‏‏‎‎‎‎‎‎‎‎‎‎‎‏‏‎‏‎‏‎‎‎‏‎‎‎‎‎‎‏‎‏‏‏‏‎‎‏‎Printing disabled by ‎‏‎‎‏‏‎<xliff:g id="OWNER_APP">%s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‏‏‎‏‎‏‏‏‏‏‎‎‎‏‎‎‎‏‎‎‎‏‎‎‏‏‎‎‎‏‏‎‎‎‎‎‎‎‎‎‎‎‎‎‏‎‎‏‎‏‏‎‏‏‎‎Personal apps have been suspended by an admin‎‏‎‎‏‎"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‎‎‎‏‎‎‎‏‏‏‏‎‎‏‎‎‏‎Tap here to check policy compliance.‎‏‎‎‏‎"</string>
     <string name="me" msgid="6207584824693813140">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‎‏‎‏‏‏‎‎‎‏‎‏‏‎‎‎‎‎‏‎‎‏‎‎‎‏‎‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‏‏‏‎‎‏‎‏‎‎‎Me‎‏‎‎‏‎"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‏‎‎‏‎‏‏‎‎‎‎‎‎‎‎‏‎‎‏‏‏‏‏‏‎‎‏‎‎‎‎‏‎‏‏‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‏‏‎‏‎Tablet options‎‏‎‎‏‎"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‏‎‎‏‎‎‏‏‏‎‎‏‏‏‎‏‎‏‎‎‏‎‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‏‏‎Android TV options‎‏‎‎‏‎"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‏‎‎‏‎‏‏‏‎‏‏‏‎‎‏‏‏‏‎‎‏‎‏‏‏‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‏‎‎‎You have incorrectly drawn your unlock pattern ‎‏‎‎‏‏‎<xliff:g id="NUMBER_0">%1$d</xliff:g>‎‏‎‎‏‏‏‎ times. After ‎‏‎‎‏‏‎<xliff:g id="NUMBER_1">%2$d</xliff:g>‎‏‎‎‏‏‏‎ more unsuccessful attempts, you will be asked to unlock your phone using an email account.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ Try again in ‎‏‎‎‏‏‎<xliff:g id="NUMBER_2">%3$d</xliff:g>‎‏‎‎‏‏‏‎ seconds.‎‏‎‎‏‎"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" ‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‎‏‏‎‎‎‏‏‎‏‎‏‏‏‏‏‏‎‏‎‏‏‎‎‎‏‎‏‎‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‎‎‏‎‎ — ‎‏‎‎‏‎ "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‎‏‏‏‎‏‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‎‎‏‏‏‎‎‎‎‏‏‎‏‏‏‎‏‏‎‎‎‎‎‎‎‎‎‏‎‎Remove‎‏‎‎‏‎"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‏‎‎‎‏‏‏‎‏‎‏‎‏‏‏‎‎‎‏‎‏‎‏‏‎‏‎‎‏‏‎‎‏‎‎‏‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‎The background started foreground service from ‎‏‎‎‏‏‎<xliff:g id="PACKAGENAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ will not have while-in-use permission in future R builds. Please see go/r-bg-fgs-restriction and file a bugreport.‎‏‎‎‏‎"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‎‎‏‎‎‎‎‏‎‏‎‎‎‏‎‎‎‏‏‎‎‎‏‏‏‎‎‏‏‏‏‏‏‎‎‏‏‎‏‎‎‏‎‏‎‏‏‎‎‎‎‏‎‏‎‎Raise volume above recommended level?‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎Listening at high volume for long periods may damage your hearing.‎‏‎‎‏‎"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‎‎‎‎‏‎‏‏‎‎‏‎‎‏‏‏‏‎‏‏‎‏‎‎‎‏‎‏‏‎‏‎‏‎‏‎‏‎‏‎‏‏‏‎‎‎‎‏‎‏‎‏‎‏‎Use Accessibility Shortcut?‎‏‎‎‏‎"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‏‎‏‏‎‎‎‎‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‎‎‏‏‏‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎When the shortcut is on, pressing both volume buttons for 3 seconds will start an accessibility feature.‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ Current accessibility feature:‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ ‎‏‎‎‏‏‎<xliff:g id="SERVICE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎‎‏‎‎‏‏‎\n‎‏‎‎‏‏‏‎ You can change the feature in Settings &gt; Accessibility.‎‏‎‎‏‎"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‎‏‎‏‏‏‏‎‏‎‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‏‏‎‏‎‎App isn’t available‎‏‎‎‏‎"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‎‏‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‎‏‏‏‎‏‎‏‏‎‎‏‎‎‏‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME_0">%1$s</xliff:g>‎‏‎‎‏‏‏‎ isn’t available right now. This is managed by ‎‏‎‎‏‏‎<xliff:g id="APP_NAME_1">%2$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‏‎‏‎‏‎‏‎‎‏‏‎‎‎‏‏‎‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎‎‎‏‏‎‎Learn more‎‏‎‎‏‎"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‏‎‎‏‏‏‎‎‏‎‎‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‏‎‏‏‎‎‏‎‎‎‎‎‏‎‎‎‎‏‏‎Unpause app‎‏‎‎‏‎"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‏‎‏‏‏‏‏‏‎‎‏‏‏‏‎‏‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‏‎‏‏‏‎‎‎‎‏‎‎‏‏‎‎‏‏‏‎‎‎‎‎Turn on work profile?‎‏‎‎‏‎"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‎‏‏‏‏‏‎‏‏‎‏‏‏‎‏‎‎‎‏‏‎‏‏‎‏‏‎Your work apps, notifications, data, and other work profile features will be turned on‎‏‎‎‏‎"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‏‎‏‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‎‎‎‏‏‏‏‎‏‎‏‏‎‏‎Turn on‎‏‎‎‏‎"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‎‎‎‎‎‏‎‎‎‏‏‏‏‏‎‎‏‏‏‎‎‎‏‏‎‎‎‏‏‏‏‏‎‎‏‎‎‏‏‎‏‏‏‎‎‎‎‎‎‎App is not available‎‏‎‎‏‎"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‏‎‎‎‏‎‎‏‎‎‎‎‎‏‏‎‏‏‏‏‏‏‏‎‏‎‏‏‎‏‎‎‎‎‎‏‏‎‎‏‎‏‎‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ is not available right now.‎‏‎‎‏‎"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‎‎‎‎‎‏‏‎‏‎‏‏‎‎‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‏‎‏‏‎‏‏‏‏‎‏‏‎‏‏‎‎‎‏‎This app was built for an older version of Android and may not work properly. Try checking for updates, or contact the developer.‎‏‎‎‏‎"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‏‎‏‏‏‎‎‏‎‎‎‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‏‎‎‏‎‎‎‏‎‎‏‏‎‎‏‏‏‏‏‎‏‎‎‏‏‎‏‎Check for update‎‏‎‎‏‎"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‎‏‎‎‏‏‎‏‎‏‏‎‎‏‏‏‏‎‎‎‎‎‎‏‎‏‏‏‎‏‏‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‎‏‎‏‎‎‎‎‏‏‎You have new messages‎‏‎‎‏‎"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‎‏‎‎‏‏‏‎‏‎‎‏‎‎‎‎‎‏‏‎‎‎‎‎‎‏‏‎‎‎‎‎‏‏‎‎‎‏‎‎‏‏‏‎‏‏‏‎‎‏‎‎‎Toggle Split Screen‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‏‏‎‎‎‎‎‏‏‎‏‏‏‏‎‎‎‎‏‎‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‏‏‎‏‎‏‏‎‏‎‎‎‏‏‎‏‎‏‏‏‏‏‎‎Lock Screen‎‏‎‎‏‎"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‏‎‎‎‏‏‎‏‏‎‏‎‎‎‏‎‎‎‏‏‏‏‏‎‎‎‏‎‎‏‏‏‏‏‏‎‏‏‎‏‏‏‏‏‏‏‎‎‏‏‎‏‎‏‎‏‎‏‏‎‎‎Screenshot‎‏‎‎‏‎"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‏‎‎‎‏‎‏‎‎‎‏‏‎‏‎‏‎‎‎‎‏‎‏‏‏‎‏‎‏‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‏‏‎‎‏‏‎‎‎‎‎‎‎Accessibility Menu‎‏‎‎‏‎"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‎‏‎‎‎‎‏‎‏‏‏‎‏‏‎‏‎‏‏‏‎‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‎‏‎‏‏‏‎‏‎‎‏‎‏‎‎Caption bar of ‎‏‎‎‏‏‎<xliff:g id="APP_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎.‎‏‎‎‏‎"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‎‏‎‎‏‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‎‎‎‏‎‎‎‎‎‎‏‏‏‎‏‎‎‎‎‎‏‎‏‏‏‏‎‏‎‏‎‎‎‎‏‎‎‏‏‎<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎ has been put into the RESTRICTED bucket‎‏‎‎‏‎"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‎‏‏‏‏‎‎‎‏‏‏‎‏‏‏‏‎‎‎‏‎‏‎‏‎‎‎‏‏‏‏‎‏‏‏‎‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎‏‏‏‎‎‏‎‏‏‎‎‏‎Personal‎‏‎‎‏‎"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎‎‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‎‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‏‏‏‎‏‎‎‎‎‏‏‏‎‏‏‎Work‎‏‎‎‏‎"</string>
 </resources>
diff --git a/core/res/res/values-es-rUS/strings.xml b/core/res/res/values-es-rUS/strings.xml
index 4335c2b..ac555d5 100644
--- a/core/res/res/values-es-rUS/strings.xml
+++ b/core/res/res/values-es-rUS/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Se borrarán los datos del dispositivo"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"No se puede usar la app de administrador. Ahora se borrará tu dispositivo.\n\nSi tienes preguntas, comunícate con el administrador de tu organización."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> inhabilitó la impresión."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Un administrador suspendió las apps personales"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Presiona aquí para consultar el cumplimiento de políticas."</string>
     <string name="me" msgid="6207584824693813140">"Yo"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opciones de tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opciones de Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Dibujaste incorrectamente tu patrón de desbloqueo <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Luego de <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos más, se te solicitará que desbloquees tu dispositivo mediante el uso de una cuenta de correo.\n\n Vuelve a intentarlo en <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eliminar"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servicio que pasó del segundo al primer plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g> no tendrá permiso durante el uso en las próximas compilaciones de R. Ve a go/r-bg-fgs-restriction y envía un informe de errores."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar a un alto volumen durante largos períodos puede dañar tu audición."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Usar acceso directo de accesibilidad?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Cuando el acceso directo está activado, puedes presionar los botones de volumen durante 3 segundos para iniciar una función de accesibilidad.\n\n Función de accesibilidad actual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Puedes cambiar la función en Configuración &gt; Accesibilidad."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"La app no está disponible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Reanudar app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar el perfil de trabajo?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Se activaran las apps de trabajo, los datos, las notificaciones y otras funciones del perfil de trabajo"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"La app no está disponible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible en este momento."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Esta app se creó para una versión anterior de Android y es posible que no funcione correctamente. Busca actualizaciones o comunícate con el programador."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Buscar actualización"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Tienes mensajes nuevos"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar o desactivar pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear pantalla"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Se colocó <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> en el depósito RESTRICTED"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabajo"</string>
 </resources>
diff --git a/core/res/res/values-es/strings.xml b/core/res/res/values-es/strings.xml
index 8d750ca..190664b 100644
--- a/core/res/res/values-es/strings.xml
+++ b/core/res/res/values-es/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Tu dispositivo se borrará"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"No se puede utilizar la aplicación de administración. Se borrarán todos los datos del dispositivo.\n\nSi tienes alguna pregunta, ponte en contacto con el administrador de tu organización."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ha inhabilitado la impresión."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Un administrador ha suspendido las aplicaciones personales"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toca aquí para comprobar el cumplimiento de las políticas."</string>
     <string name="me" msgid="6207584824693813140">"Yo"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opciones del tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opciones de Android TV"</string>
@@ -804,7 +802,7 @@
     <string name="keyguard_password_enter_pin_password_code" msgid="7792964196473964340">"Introduce el código PIN para desbloquear."</string>
     <string name="keyguard_password_wrong_pin_code" msgid="8583732939138432793">"Código PIN incorrecto"</string>
     <string name="keyguard_label_text" msgid="3841953694564168384">"Para desbloquear el teléfono, pulsa la tecla de menú y, a continuación, pulsa 0."</string>
-    <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Número de emergencia"</string>
+    <string name="emergency_call_dialog_number_for_display" msgid="2978165477085612673">"Llamada de emergencia"</string>
     <string name="lockscreen_carrier_default" msgid="6192313772955399160">"Sin servicio"</string>
     <string name="lockscreen_screen_locked" msgid="7364905540516041817">"Pantalla bloqueada"</string>
     <string name="lockscreen_instructions_when_pattern_enabled" msgid="7982445492532123308">"Pulsa la tecla de menú para desbloquear el teléfono o realizar una llamada de emergencia."</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Has fallado <xliff:g id="NUMBER_0">%1$d</xliff:g> veces al dibujar el patrón de desbloqueo. Si fallas otras <xliff:g id="NUMBER_1">%2$d</xliff:g> veces, deberás usar una cuenta de correo electrónico para desbloquear el teléfono.\n\n Inténtalo de nuevo en <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Quitar"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"El servicio en primer plano que se inició en segundo plano en <xliff:g id="PACKAGENAME">%1$s</xliff:g> no tendrá permisos en compilaciones R futuras mientras se estén usando. Ve a go/r-bg-fgs-restriction y envía un informe de errores."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"¿Quieres subir el volumen por encima del nivel recomendado?\n\nEscuchar sonidos fuertes durante mucho tiempo puede dañar los oídos."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"¿Utilizar acceso directo de accesibilidad?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Si el acceso directo está activado, pulsa los dos botones de volumen durante tres segundos para iniciar una función de accesibilidad.\n\n Función de accesibilidad actual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Puedes cambiar la función en Ajustes &gt; Accesibilidad."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"La aplicación no está disponible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> no está disponible en este momento. Esta opción se administra en <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Más información"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anular pausa de aplicación"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"¿Activar el perfil de trabajo?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Tus aplicaciones, notificaciones, datos y otras funciones del perfil de trabajo se activarán"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"La aplicación no está disponible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"En estos momentos, <xliff:g id="APP_NAME">%1$s</xliff:g> no está disponible."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Esta aplicación se ha diseñado para una versión anterior de Android y es posible que no funcione correctamente. Busca actualizaciones o ponte en contacto con el desarrollador."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Buscar actualizaciones"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Tienes mensajes nuevos"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar o desactivar la pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueo"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidad"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> se ha incluido en el grupo de restringidos"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabajo"</string>
 </resources>
diff --git a/core/res/res/values-et/strings.xml b/core/res/res/values-et/strings.xml
index 7f423e9..0c302ee 100644
--- a/core/res/res/values-et/strings.xml
+++ b/core/res/res/values-et/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Seade kustutatakse"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administraatori rakendust ei saa kasutada. Teie seade tühjendatakse nüüd.\n\nKui teil on küsimusi, võtke ühendust organisatsiooni administraatoriga."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Rakendus <xliff:g id="OWNER_APP">%s</xliff:g> on printimise keelanud."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administraator on isiklikud rakendused peatanud"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Eeskirjade järgimise kontrollimiseks puudutage siin."</string>
     <string name="me" msgid="6207584824693813140">"Mina"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tahvelarvuti valikud"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV valikud"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Joonistasite oma avamismustri <xliff:g id="NUMBER_0">%1$d</xliff:g> korda valesti. Pärast veel <xliff:g id="NUMBER_1">%2$d</xliff:g> ebaõnnestunud katset palutakse teil telefon avada meilikontoga.\n\n Proovige uuesti <xliff:g id="NUMBER_2">%3$d</xliff:g> sekundi pärast."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eemalda"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Taustal käitatud esiplaanil oleval teenusel paketist <xliff:g id="PACKAGENAME">%1$s</xliff:g> ei ole tulevastes R-järkudes luba „kui kasutuses”. Vaadake saiti go/r-bg-fgs-restriction ja esitage veaaruanne."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Kas suurendada helitugevuse taset üle soovitatud taseme?\n\nPikaajaline valju helitugevusega kuulamine võib kuulmist kahjustada."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Kas kasutada juurdepääsetavuse otseteed?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kui otsetee on sisse lülitatud, käivitab mõlema helitugevuse nupu kolm sekundit all hoidmine juurdepääsetavuse funktsiooni.\n\n Praegune juurdepääsetavuse funktsioon:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Saate seda funktsiooni muuta valikutega Seaded &gt; Juurdepääsetavus."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Rakendus pole saadaval"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pole praegu saadaval. Seda haldab rakendus <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Lisateave"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Jätka rakendust"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Kas lülitada tööprofiil sisse?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Teie töörakendused, märguanded, andmed ja muud tööprofiili funktsioonid lülitatakse sisse"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Lülita sisse"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Rakendus ei ole saadaval"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole praegu saadaval."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"See rakendus on loodud Androidi vanema versiooni jaoks ega pruugi õigesti töötada. Otsige värskendusi või võtke ühendust arendajaga."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Otsi värskendust"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Teile on uusi sõnumeid"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Vaheta jagatud ekraanikuva"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lukustuskuva"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekraanipilt"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Juurdepääsetavuse menüü"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Rakenduse <xliff:g id="APP_NAME">%1$s</xliff:g> pealkirjariba."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on lisatud salve PIIRANGUTEGA"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Isiklik"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Töö"</string>
 </resources>
diff --git a/core/res/res/values-eu/strings.xml b/core/res/res/values-eu/strings.xml
index 9d014a3..e7aedd5 100644
--- a/core/res/res/values-eu/strings.xml
+++ b/core/res/res/values-eu/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Gailuko datuak ezabatu egingo dira"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Ezin da erabili administratzeko aplikazioa. Ezabatu egingo da gailuko eduki guztia.\n\nZalantzarik baduzu, jarri erakundeko administratzailearekin harremanetan."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> aplikazioak desgaitu egin du inprimatzeko aukera."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Aplikazio pertsonalak desgaitu egin ditu administratzaile batek"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Sakatu hau gidalerroa gordetzen den egiaztatzeko."</string>
     <string name="me" msgid="6207584824693813140">"Ni"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletaren aukerak"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV gailuaren aukerak"</string>
@@ -519,7 +517,7 @@
     <string name="permdesc_imagesWrite" msgid="5195054463269193317">"Argazki-bilduma aldatzeko baimena ematen die aplikazioei."</string>
     <string name="permlab_mediaLocation" msgid="7368098373378598066">"multimedia-edukien bildumako kokapena irakurri"</string>
     <string name="permdesc_mediaLocation" msgid="597912899423578138">"Multimedia-edukien bildumako kokapena irakurtzeko baimena ematen die aplikazioei."</string>
-    <string name="biometric_dialog_default_title" msgid="5284880398508155088">"Egiaztatu zu zarela"</string>
+    <string name="biometric_dialog_default_title" msgid="5284880398508155088">"Egiaztatu zeu zarela"</string>
     <string name="biometric_error_hw_unavailable" msgid="2494077380540615216">"Hardware biometrikoa ez dago erabilgarri"</string>
     <string name="biometric_error_user_canceled" msgid="6732303949695293730">"Utzi da autentifikazioa"</string>
     <string name="biometric_not_recognized" msgid="5106687642694635888">"Ez da ezagutu"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Desblokeatzeko eredua oker marraztu duzu <xliff:g id="NUMBER_0">%1$d</xliff:g> aldiz. Beste <xliff:g id="NUMBER_1">%2$d</xliff:g> aldiz oker marrazten baduzu, telefonoa posta-kontu baten bidez desblokeatzeko eskatuko dizugu.\n\n Saiatu berriro <xliff:g id="NUMBER_2">%3$d</xliff:g> segundo barru."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Kendu"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> webgunearen atzeko planoak hasitako aurreko planoko zerbitzuak ez du izango erabili bitarteko baimenik etorkizuneko R konpilazioetan. Joan go/r-bg-fgs-restriction atalera eta egin akatsaren txostena."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bolumena gomendatutako mailatik gora igo nahi duzu?\n\nMusika bolumen handian eta denbora luzez entzuteak entzumena kalte diezazuke."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erabilerraztasun-lasterbidea erabili nahi duzu?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Lasterbidea aktibatuta dagoenean, bi bolumen-botoiak hiru segundoz sakatuta abiaraziko da erabilerraztasun-eginbidea.\n\n Uneko erabilerraztasun-eginbidea:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Eginbidea aldatzeko, joan Ezarpenak &gt; Erabilerraztasuna atalera."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikazioa ez dago erabilgarri"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ez dago erabilgarri une honetan. Haren erabilgarritasuna <xliff:g id="APP_NAME_1">%2$s</xliff:g> aplikazioak kudeatzen du."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Lortu informazio gehiago"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Kendu pausaldia"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Laneko profila aktibatu?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Laneko aplikazioak, jakinarazpenak, datuak eta laneko profileko bestelako eginbideak aktibatuko dira"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktibatu"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikazioa ez dago erabilgarri"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ez dago erabilgarri une honetan."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Aplikazioa Android-en bertsio zaharrago baterako sortu zenez, baliteke behar bezala ez funtzionatzea. Bilatu eguneratzerik baden, edo jarri garatzailearekin harremanetan."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Bilatu eguneratzeak"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Mezu berriak dituzu"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktibatu/Desaktibatu pantaila zatitua"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantaila blokeatua"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Pantaila-argazkia"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erabilerraztasun-menua"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> aplikazioko azpitituluen barra."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Murriztuen edukiontzian ezarri da <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Pertsonala"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Lanekoa"</string>
 </resources>
diff --git a/core/res/res/values-fa/strings.xml b/core/res/res/values-fa/strings.xml
index 58ce7a7..9d9a13c 100644
--- a/core/res/res/values-fa/strings.xml
+++ b/core/res/res/values-fa/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"دستگاهتان پاک خواهد شد"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"برنامه سرپرست سیستم را نمی‌توان استفاده کرد. دستگاه شما در این لحظه پاک می‌شود.\n\nاگر سؤالی دارید، با سرپرست سیستم سازمانتان تماس بگیرید."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> چاپ کردن را غیرفعال کرده است."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"سرپرستْ برنامه‌های شخصی را به حالت تعلیق درآورد"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"برای بررسی مطابقت با خط‌مشی، اینجا ضربه بزنید."</string>
     <string name="me" msgid="6207584824693813140">"من"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"گزینه‌های رایانهٔ لوحی"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"‏گزینه‌های Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"‏شما الگوی بازگشایی قفل خود را <xliff:g id="NUMBER_0">%1$d</xliff:g> بار اشتباه کشیده‌اید. پس از <xliff:g id="NUMBER_1">%2$d</xliff:g> تلاش ناموفق، از شما خواسته می‎شود که با استفاده از یک حساب ایمیل قفل تلفن خود را باز کنید.\n\n لطفاً پس از <xliff:g id="NUMBER_2">%3$d</xliff:g> ثانیه دوباره امتحان کنید."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"حذف"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"‏سرویس پیش‌نمای <xliff:g id="PACKAGENAME">%1$s</xliff:g>، که در پس‌زمینه شروع شده، در ساخت‌های آتی R اجازهٔ حین استفاده نخواهد داشت. لطفاً به go/r-bg-fgs-restriction بروید و گزارش اشکال ارسال کنید."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"میزان صدا را به بالاتر از حد توصیه شده افزایش می‌دهید؟\n\nگوش دادن به صداهای بلند برای مدت طولانی می‌تواند به شنوایی‌تان آسیب وارد کند."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"از میان‌بر دسترس‌پذیری استفاده شود؟"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"وقتی میان‌بر روشن است،‌ اگر هر دو دکمه صدا را ۳ ثانیه فشار دهید یکی از قابلیت‌های دسترس‌پذیری شروع می‌شود.\n\n قابلیت دسترس‌پذیری کنونی:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n می‌توانید در «تنظیمات &gt; دسترس‌پذیری»، قابلیت را تغییر دهید."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"برنامه در دسترس نیست"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> درحال‌حاضر در دسترس نیست. <xliff:g id="APP_NAME_1">%2$s</xliff:g> آن را مدیریت می‌کند."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"بیشتر بدانید"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"لغو توقف موقت برنامه"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"نمایه کاری روشن شود؟"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"برنامه‌ها، اعلان‌ها، داده‌ها و سایر قابلیت‌های نمایه کاری شما روشن خواهد شد"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"روشن کردن"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"برنامه در دسترس نیست"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> درحال‌حاضر در دسترس نیست."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"‏این برنامه برای نسخه قدیمی‌تری از Android ساخته شده است و ممکن است درست کار نکند. وجود به‌روزرسانی را بررسی کنید یا با برنامه‌نویس تماس بگیرید."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"بررسی وجود به‌روزرسانی"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"پیام‌های جدیدی دارید"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"تغییر وضعیت صفحهٔ دونیمه"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"صفحه قفل"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"عکس صفحه‌نمایش"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"منوی دسترس‌پذیری"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"نوار شرح <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> در سطل «محدودشده» قرار گرفت"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"شخصی"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"کاری"</string>
 </resources>
diff --git a/core/res/res/values-fi/strings.xml b/core/res/res/values-fi/strings.xml
index e0f4ed4..35cc8b9 100644
--- a/core/res/res/values-fi/strings.xml
+++ b/core/res/res/values-fi/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Laitteen tiedot poistetaan"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Hallintasovellusta ei voi käyttää. Laitteen tiedot pyyhitään.\n\nPyydä ohjeita järjestelmänvalvojaltasi."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> on poistanut tulostuksen käytöstä."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Järjestelmänvalvoja on estänyt henkilökohtaisten sovellusten käytön"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Katso käytäntöjen noudattaminen napauttamalla tätä."</string>
     <string name="me" msgid="6207584824693813140">"Minä"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet-laitteen asetukset"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ‑vaihtoehdot"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Piirsit lukituksenpoistokuvion väärin <xliff:g id="NUMBER_0">%1$d</xliff:g> kertaa. Jos piirrät kuvion väärin vielä <xliff:g id="NUMBER_1">%2$d</xliff:g> kertaa, sinua pyydetään poistamaan puhelimesi lukitus sähköpostitilin avulla.\n\n Yritä uudelleen <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunnin kuluttua."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Poista"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Taustalla aloitettu etualan palvelu (<xliff:g id="PACKAGENAME">%1$s</xliff:g>) ei ole käytön aikana sallittu R:n tulevissa versioissa. Lue go/r-bg-fgs-restriction ja lähetä virheraportti."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Nostetaanko äänenvoimakkuus suositellun tason yläpuolelle?\n\nPitkäkestoinen kova äänenvoimakkuus saattaa heikentää kuuloa."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Käytetäänkö esteettömyyden pikanäppäintä?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kun pikanäppäin on käytössä, voit käynnistää esteettömyystoiminnon pitämällä molempia äänenvoimakkuuspainikkeita painettuna kolmen sekunnin ajan.\n\n Tällä hetkellä valittu esteettömyystoiminto:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Voit vaihtaa toimintoa valitsemalla Asetukset &gt; Esteettömyys."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Sovellus ei käytettävissä"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ei ole juuri nyt saatavilla. Tästä vastaa <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Lue lisää"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Peru keskeytys"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Otetaanko työprofiili käyttöön?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Työsovellukset, ‑ilmoitukset, ‑tiedot ja muut työprofiiliominaisuudet otetaan käyttöön"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ota käyttöön"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Sovellus ei ole käytettävissä"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ei ole nyt käytettävissä."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Tämä sovellus on suunniteltu vanhemmalle Android-versiolle eikä välttämättä toimi oikein. Kokeile tarkistaa päivitykset tai ottaa yhteyttä kehittäjään."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Tarkista päivitykset"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Sinulle on uusia viestejä"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Jaettu näyttö päälle/pois"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lukitusnäyttö"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Kuvakaappaus"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Esteettömyysvalikko"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstityspalkki: <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> on nyt rajoitettujen ryhmässä"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Henkilökohtainen"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Työ"</string>
 </resources>
diff --git a/core/res/res/values-fr-rCA/strings.xml b/core/res/res/values-fr-rCA/strings.xml
index 5d99db1..caec9fa 100644
--- a/core/res/res/values-fr-rCA/strings.xml
+++ b/core/res/res/values-fr-rCA/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Le contenu de votre appareil sera effacé"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, communiquez avec l\'administrateur de votre organisation."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Les applications personnelles ont été suspendues par un administrateur"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Touchez ici pour vérifier la conformité aux politiques."</string>
     <string name="me" msgid="6207584824693813140">"Moi"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Options de la tablette"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Options d\'Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%2$d</xliff:g> fois, vous devrez déverrouiller votre téléphone à l\'aide d\'un compte de messagerie électronique.\n\n Veuillez réessayer dans <xliff:g id="NUMBER_2">%3$d</xliff:g> secondes."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Supprimer"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Le service de premier plan qui a démarré en arrière-plan provenant de <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne disposera pas de l\'autorisation pendant l\'utilisation dans les futures versions R. Veuillez accéder à go/r-bg-fgs-restriction et envoyer un rapport de bogue."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au-dessus du niveau recommandé?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour lancer une fonctionnalité d\'accessibilité.\n\n Fonctionnalité d\'accessibilité utilisée actuellement :\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Vous pouvez changer de fonctionnalité sous Paramètres &gt; Accessibilité."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"L\'application n\'est pas accessible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas accessible pour le moment. Ceci est géré par <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Réactiver l\'application"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Activer le profil professionnel?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, vos notifications, vos données et les autres fonctionnalités de profil professionnel seront activées"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"L\'application n\'est pas accessible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas accessible pour le moment."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Cette application a été conçue pour une ancienne version d\'Android et pourrait ne pas fonctionner correctement. Essayez de vérifier les mises à jour ou communiquez avec son concepteur."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Vérifier la présence de mises à jour"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Vous avez de nouveaux messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Basculer l\'écran partagé"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Écran de verrouillage"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capture d\'écran"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le compartiment RESTREINT"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personnel"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Bureau"</string>
 </resources>
diff --git a/core/res/res/values-fr/strings.xml b/core/res/res/values-fr/strings.xml
index 3f4f3e6..601fe43 100644
--- a/core/res/res/values-fr/strings.xml
+++ b/core/res/res/values-fr/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Les données de votre appareil vont être effacées"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Impossible d\'utiliser l\'application d\'administration. Les données de votre appareil vont maintenant être effacées.\n\nSi vous avez des questions, contactez l\'administrateur de votre organisation."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Impression désactivée par <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Les applications personnelles ont été suspendues par un administrateur"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Appuyez ici pour vérifier que les règles sont respectées."</string>
     <string name="me" msgid="6207584824693813140">"Moi"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Options de la tablette"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Options Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Vous avez dessiné un schéma de déverrouillage incorrect à <xliff:g id="NUMBER_0">%1$d</xliff:g> reprises. Si vous échouez encore <xliff:g id="NUMBER_1">%2$d</xliff:g> fois, vous devrez déverrouiller votre téléphone à l\'aide d\'un compte de messagerie électronique.\n\n Veuillez réessayer dans <xliff:g id="NUMBER_2">%3$d</xliff:g> secondes."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Supprimer"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Le service de premier plan qui a démarré en arrière-plan et provenant de <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne disposera pas de l\'autorisation \"pendant l\'utilisation\" dans les futurs builds R. Veuillez accéder à go/r-bg-fgs-restriction et envoyer un rapport de bug."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Augmenter le volume au dessus du niveau recommandé ?\n\nL\'écoute prolongée à un volume élevé peut endommager vos facultés auditives."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utiliser le raccourci d\'accessibilité ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quand le raccourci est activé, appuyez sur les deux boutons de volume pendant trois secondes pour lancer une fonctionnalité d\'accessibilité.\n\n Fonctionnalité d\'accessibilité utilisée actuellement :\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Vous pouvez changer de fonctionnalité dans Paramètres &gt; Accessibilité."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Application indisponible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"L\'application <xliff:g id="APP_NAME_0">%1$s</xliff:g> n\'est pas disponible pour le moment. Cette suspension est gérée par l\'application <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"En savoir plus"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Débloquer l\'application"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Activer profil professionnel ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Vos applications professionnelles, notifications, données et d\'autres fonctionnalités de votre profil professionnel seront activées"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activer"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Application non disponible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> n\'est pas disponible pour le moment."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Cette application a été conçue pour une ancienne version d\'Android et risque de ne pas fonctionner correctement. Recherchez des mises à jour ou contactez le développeur."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Rechercher une mise à jour"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Vous avez de nouveaux messages"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activer/Désactiver l\'écran partagé"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Verrouiller l\'écran"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capture d\'écran"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu d\'accessibilité"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barre de légende de l\'application <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a été placé dans le bucket RESTRICTED"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personnel"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Professionnel"</string>
 </resources>
diff --git a/core/res/res/values-gl/strings.xml b/core/res/res/values-gl/strings.xml
index 2e5052c..0aa6277 100644
--- a/core/res/res/values-gl/strings.xml
+++ b/core/res/res/values-gl/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Borrarase o teu dispositivo"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Non se pode utilizar a aplicación de administración. Borrarase o teu dispositivo.\n\nSe tes preguntas, contacta co administrador da organización."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> desactivou a impresión."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Un administrador suspendeu as aplicacións persoais"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toca aquí para comprobar o cumprimento da política."</string>
     <string name="me" msgid="6207584824693813140">"Eu"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcións da tableta"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcións de Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Debuxaches o padrón de desbloqueo incorrectamente <xliff:g id="NUMBER_0">%1$d</xliff:g> veces. Se realizas <xliff:g id="NUMBER_1">%2$d</xliff:g> intentos incorrectos máis, terás que desbloquear o teléfono a través dunha conta de correo electrónico.\n\n Téntao de novo dentro de <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eliminar"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Nas futuras compilacións R, o servizo en primeiro plano iniciado en segundo plano desde <xliff:g id="PACKAGENAME">%1$s</xliff:g> non terá permiso mentres estea en uso. Consulta go/r-bg-fgs-restriction e presenta un informe de erros."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Queres subir o volume máis do nivel recomendado?\n\nA reprodución de son a un volume elevado durante moito tempo pode provocar danos nos oídos."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Queres utilizar o atallo de accesibilidade?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Cando o atallo está activado, podes premer os dous botóns de volume durante 3 segundos para iniciar unha función de accesibilidade.\n\n Función de accesibilidade actual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Podes cambiar a función en Configuración &gt; Accesibilidade."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"A aplicación non está dispoñible"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"A aplicación <xliff:g id="APP_NAME_0">%1$s</xliff:g> non está dispoñible neste momento. A dispoñibilidade está xestionada por <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Máis información"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Volver activar aplicación"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Activar o perfil de traballo?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Activaranse as túas aplicacións de traballo, as notificacións, os datos e outras funcións do perfil de traballo"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"A aplicación non está dispoñible"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"A aplicación <xliff:g id="APP_NAME">%1$s</xliff:g> non está dispoñible neste momento."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Esta aplicación deseñouse para unha versión anterior de Android e quizais non funcione correctamente. Proba a buscar actualizacións ou contacta co programador."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Buscar actualización"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Tes mensaxes novas"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activar/desactivar pantalla dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Pantalla de bloqueo"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de pantalla"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menú de accesibilidade"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de subtítulos de <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> incluíuse no grupo RESTRINXIDO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Persoal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Traballo"</string>
 </resources>
diff --git a/core/res/res/values-gu/strings.xml b/core/res/res/values-gu/strings.xml
index 8081ef2..85bf30e 100644
--- a/core/res/res/values-gu/strings.xml
+++ b/core/res/res/values-gu/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"તમારું ઉપકરણ કાઢી નાખવામાં આવશે"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"વ્યવસ્થાપક ઍપનો ઉપયોગ કરી શકાશે નહીં. તમારું ઉપકરણ હવે કાઢી નાખવામાં આવશે.\n\nજો તમને પ્રશ્નો હોય, તો તમારી સંસ્થાના વ્યવસ્થાપકનો સંપર્ક કરો."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> દ્વારા પ્રિન્ટ કરવાનું બંધ કરાયું છે."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"વ્યવસ્થાપક દ્વારા વ્યક્તિગત ઍપ સ્થગિત કરવામાં આવી છે"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"નીતિનું પાલન થાય છે કે કેમ તે તપાસવા માટે અહીં ટૅપ કરો."</string>
     <string name="me" msgid="6207584824693813140">"હું"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ટેબ્લેટ વિકલ્પો"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TVના વિકલ્પો"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"તમે તમારી અનલૉક પૅટર્ન <xliff:g id="NUMBER_0">%1$d</xliff:g> વખત ખોટી રીતે દોરી. હજી <xliff:g id="NUMBER_1">%2$d</xliff:g> અસફળ પ્રયાસ પછી, તમને ઇમેઇલ એકાઉન્ટનો ઉપયોગ કરીને ફોનને અનલૉક કરવાનું કહેવામાં આવશે.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> સેકન્ડમાં ફરીથી પ્રયાસ કરો."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"દૂર કરો"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"બૅકગ્રાઉન્ડમાં શરૂ થયેલી <xliff:g id="PACKAGENAME">%1$s</xliff:g>ની ફોરગ્રાઉન્ડ સેવા પાસે ભવિષ્યની R બિલ્ડમાં ઉપયોગમાં હોય તે સમયની પરવાનગી હશે નહીં. કૃપા કરીને go/r-bg-fgs-restriction જુઓ અને ભૂલનો અહેવાલ દાખલ કરો."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ભલામણ કરેલ સ્તરની ઉપર વૉલ્યૂમ વધાર્યો?\n\nલાંબા સમય સુધી ઊંચા અવાજે સાંભળવું તમારી શ્રવણક્ષમતાને નુકસાન પહોંચાડી શકે છે."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ઍક્સેસિબિલિટી શૉર્ટકટનો ઉપયોગ કરીએ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"જ્યારે શૉર્ટકટ ચાલુ હોય, ત્યારે બન્ને વૉલ્યૂમ બટનને 3 સેકન્ડ સુધી દબાવી રાખવાથી ઍક્સેસિબિલિટી સુવિધા શરૂ થઈ જશે.\n\n વર્તમાન ઍક્સેસિબિલિટી સુવિધા:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n તમે સેટિંગ્સ &gt; ઍક્સેસિબિલિટીમાં જઈને આ સુવિધા બદલી શકો છો."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ઍપ ઉપલબ્ધ નથી"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> હમણાં ઉપલબ્ધ નથી. આને <xliff:g id="APP_NAME_1">%2$s</xliff:g> દ્વારા મેનેજ કરવામાં આવે છે."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"વધુ જાણો"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ઍપ ફરી શરૂ કરો"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"કાર્યાલયની પ્રોફાઇલ ચાલુ કરીએ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"તમારી કાર્યાલયની ઍપ, નોટિફિકેશન, ડેટા અને અન્ય કાર્યાલયની પ્રોફાઇલ સુવિધાઓ ચાલુ કરવામાં આવશે"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ચાલુ કરો"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ઍપ ઉપલબ્ધ નથી"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> હાલમાં ઉપલબ્ધ નથી."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"આ ઍપ Androidના જૂના વર્ઝન માટે બનાવવામાં આવ્યું હતું અને તે કદાચ તે યોગ્ય રીતે કાર્ય કરી શકશે નહીં. અપડેટ માટે તપાસવાનો પ્રયાસ કરો અથવા ડેવલપરનો સંપર્ક કરો."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"અપડેટ માટે તપાસો"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"તમારી પાસે નવા સંદેશા છે"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"સ્ક્રીનને વિભાજિત કરવાની ક્રિયા ટૉગલ કરો"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"લૉક સ્ક્રીન"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"સ્ક્રીનશૉટ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ઍક્સેસિબિલિટી મેનૂ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>નું કૅપ્શન બાર."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>ને પ્રતિબંધિત સમૂહમાં મૂકવામાં આવ્યું છે"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"વ્યક્તિગત"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"કાર્યાલય"</string>
 </resources>
diff --git a/core/res/res/values-h480dp/bools.xml b/core/res/res/values-h480dp/bools.xml
new file mode 100644
index 0000000..65e3ae6
--- /dev/null
+++ b/core/res/res/values-h480dp/bools.xml
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<resources>
+    <bool name="sharesheet_show_content_preview">true</bool>
+</resources>
\ No newline at end of file
diff --git a/core/res/res/values-hi/strings.xml b/core/res/res/values-hi/strings.xml
index 05efcd8..19e154e 100644
--- a/core/res/res/values-hi/strings.xml
+++ b/core/res/res/values-hi/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"आपके डिवाइस को मिटा दिया जाएगा"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"एडमिन ऐप्लिकेशन का इस्तेमाल नहीं किया जा सकता. आपके डिवाइस पर मौजूद डेटा अब मिटा दिया जाएगा.\n\nअगर आप कुछ पूछना चाहते हैं तो, अपने संगठन के एडमिन से संपर्क करें."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ने प्रिंटिंग सुविधा बंद कर दी है."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"किसी एडमिन ने निजी ऐप्लिकेशन निलंबित कर दिए हैं"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"नीति का पालन किया जा रहा है या नहीं, इसकी जांच करने के लिए यहां टैप करें."</string>
     <string name="me" msgid="6207584824693813140">"मैं"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"टैबलेट विकल्‍प"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV डिवाइस में फ़ोन से जुड़े विकल्प"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"आपने अपने अनलॉक आकार को <xliff:g id="NUMBER_0">%1$d</xliff:g> बार गलत तरीके से आरेखित किया है. <xliff:g id="NUMBER_1">%2$d</xliff:g> और असफल प्रयासों के बाद, आपसे अपने फ़ोन को किसी ईमेल खाते का उपयोग करके अनलॉक करने के लिए कहा जाएगा.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकंड में फिर से प्रयास करें."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"निकालें"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>से बैकग्राउंड में शुरू की गई फ़ॉरग्राउंड सेवा के लिए, भविष्य के R बिल्ड में \'इस्तेमाल के समय अनुमति दें\' की सुविधा नहीं होगी. कृपया go/r-bg-fgs-restriction देखें और गड़बड़ी की शिकायत करें."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"वॉल्यूम को सुझाए गए स्तर से ऊपर बढ़ाएं?\n\nअत्यधिक वॉल्यूम पर ज़्यादा समय तक सुनने से आपकी सुनने की क्षमता को नुकसान हो सकता है."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"सुलभता शॉर्टकट का इस्तेमाल करना चाहते हैं?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"इस शॉर्टकट के चालू होने पर, दोनों वॉल्यूम बटनों को 3 सेकंड तक दबाने से सुलभता सुविधा शुरू हो जाएगी.\n\n मौजूदा सुलभता सुविधा:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n आप इस सुविधा को सेटिंग &gt; सुलभता पर जाकर बदल सकते हैं."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"यह ऐप्लिकेशन उपलब्ध नहीं है"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"फ़िलहाल <xliff:g id="APP_NAME_0">%1$s</xliff:g> उपलब्ध नहीं है. इसे <xliff:g id="APP_NAME_1">%2$s</xliff:g> के ज़रिए प्रबंधित किया जाता है."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ज़्यादा जानें"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ऐप्लिकेशन पर लगी रोक हटाएं"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"वर्क प्रोफ़ाइल चालू करें?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"आपके काम से जुड़े ऐप्लिकेशन, सूचनाएं, डेटा और वर्क प्रोफ़ाइल से जुड़ी दूसरी सुविधाएं चालू हो जाएंगी"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"चालू करें"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ऐप्लिकेशन उपलब्ध नहीं है"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> इस समय उपलब्ध नहीं है."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"यह ऐप्लिकेशन Android के पुराने वर्शन के लिए बनाया गया था, इसलिए हो सकता है कि यह सही से काम न करे. देखें कि अपडेट मौजूद हैं या नहीं, या फिर डेवलपर से संपर्क करें."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"देखें कि अपडेट मौजूद है या नहीं"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"आपके पास नए संदेश हैं"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"स्प्लिट स्क्रीन पर टॉगल करें"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्क्रीन लॉक करें"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट लें"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"सुलभता मेन्यू"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> का कैप्शन बार."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> को प्रतिबंधित बकेट में रखा गया है"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"निजी प्रोफ़ाइल"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"वर्क प्रोफ़ाइल"</string>
 </resources>
diff --git a/core/res/res/values-hr/strings.xml b/core/res/res/values-hr/strings.xml
index e4cefe8..9a9357f 100644
--- a/core/res/res/values-hr/strings.xml
+++ b/core/res/res/values-hr/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Uređaj će se izbrisati"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administratorska aplikacija ne može se upotrebljavati. Uređaj će se izbrisati.\n\nAko imate pitanja, obratite se administratoru organizacije."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Ispis je onemogućila aplikacija <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administrator je obustavio osobne aplikacije"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Dodirnite ovdje da biste provjerili usklađenost s pravilima."</string>
     <string name="me" msgid="6207584824693813140">"Ja"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcije tabletnog uređaja"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcije Android TV-a"</string>
@@ -1635,8 +1633,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Netočno ste iscrtali obrazac za otključavanje <xliff:g id="NUMBER_0">%1$d</xliff:g> puta. Nakon još ovoliko neuspješnih pokušaja: <xliff:g id="NUMBER_1">%2$d</xliff:g> morat ćete otključati telefon pomoću računa e-pošte.\n\n Pokušajte ponovo za <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ukloni"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Usluga u prednjem planu s <xliff:g id="PACKAGENAME">%1$s</xliff:g> pokrenuta u pozadini neće imati dopuštenje tijekom upotrebe u budućim R kompilacijama. Pogledajte go/r-bg-fgs-restriction i pošaljite izvješće o programskoj pogrešci."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Želite li pojačati zvuk iznad preporučene razine?\n\nDugotrajno slušanje glasne glazbe može vam oštetiti sluh."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite li upotrebljavati prečac za pristupačnost?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kada je taj prečac uključen, pritiskom na obje tipke za glasnoću na 3 sekunde pokrenut će se značajka pristupačnosti.\n\n Trenutačna značajka pristupačnosti:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Značajku možete promijeniti u Postavkama &gt; Pristupačnost."</string>
@@ -1884,11 +1881,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacija nije dostupna"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutačno nije dostupna. Ovime upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saznajte više"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekini pauzu aplikacije"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Želite uključiti radni profil?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Uključit će se vaše radne aplikacije, obavijesti, podaci i druge značajke radnog profila"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Uključi"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija nije dostupna"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutačno nije dostupna."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ova je aplikacija razvijena za stariju verziju Androida i možda neće funkcionirati pravilno. Potražite ažuriranja ili se obratite razvojnom programeru."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Provjeri ažuriranja"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Imate nove poruke"</string>
@@ -2041,12 +2039,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Uključite ili isključite podijeljeni zaslon"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaključajte zaslon"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snimka zaslona"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Izbornik pristupačnosti"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Traka naslova aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> premješten je u spremnik OGRANIČENO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Osobno"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Posao"</string>
 </resources>
diff --git a/core/res/res/values-hu/strings.xml b/core/res/res/values-hu/strings.xml
index 08cb1c7..d4ac7e2 100644
--- a/core/res/res/values-hu/strings.xml
+++ b/core/res/res/values-hu/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"A rendszer törölni fogja eszközét"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"A rendszergazdai alkalmazás nem használható. A rendszer most törli az eszközt.\n\nKérdéseivel forduljon szervezete rendszergazdájához."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"A(z) <xliff:g id="OWNER_APP">%s</xliff:g> letiltotta a nyomtatást."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"A személyes alkalmazások adminisztrátori felfüggesztés alá kerültek"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Koppintson ide az irányelvek betartásának ellenőrzéséhez."</string>
     <string name="me" msgid="6207584824693813140">"Saját"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Táblagép beállításai"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV beállításai"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"<xliff:g id="NUMBER_0">%1$d</xliff:g> alkalommal helytelenül rajzolta le a feloldási mintát. További <xliff:g id="NUMBER_1">%2$d</xliff:g> sikertelen kísérlet után egy e-mail fiók használatával kell feloldania a telefonját.\n\n Kérjük, próbálja újra <xliff:g id="NUMBER_2">%3$d</xliff:g> másodperc múlva."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eltávolítás"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"A háttér által indított előtérben futó szolgáltatás (innen: <xliff:g id="PACKAGENAME">%1$s</xliff:g>) nem tartalmaz majd használat közbeni engedélyt a jövőbeli R buildekben. Kérjük, keresse fel a go/r-bg-fgs-restriction webhelyet, és jelentse a hibát."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Az ajánlott szint fölé szeretné emelni a hangerőt?\n\nHa hosszú időn át teszi ki magát nagy hangerőnek, azzal károsíthatja a hallását."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Szeretné használni a Kisegítő lehetőségek billentyűparancsot?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Ha be van kapcsolva a billentyűparancs, a két hangerőgomb 3 másodpercig tartó lenyomásával elindíthatja a kisegítő lehetőségek egyik funkcióját.\n\n A kisegítő lehetőségek jelenleg beállított funkciója:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n A funkciót a Beállítások &gt; Kisegítő lehetőségek menüpontban módosíthatja."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Az alkalmazás nem áll rendelkezésre"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"A(z) <xliff:g id="APP_NAME_0">%1$s</xliff:g> alkalmazás jelenleg nem áll rendelkezésre. Ezt a(z) <xliff:g id="APP_NAME_1">%2$s</xliff:g> kezeli."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"További információ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Alkalmazás szüneteltetésének feloldása"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Bekapcsolja a munkaprofilt?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"A munkahelyi alkalmazások, értesítések, adatok és a munkaprofilhoz tartozó egyéb funkciók be lesznek kapcsolva"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Bekapcsolás"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Az alkalmazás nem hozzáférhető"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> jelenleg nem hozzáférhető."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ez az alkalmazás az Android egyik korábbi verziójához készült, így elképzelhető, hogy nem működik majd megfelelően ezen a rendszeren. Keressen frissítéseket, vagy vegye fel a kapcsolatot a fejlesztővel."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Frissítés keresése"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Új üzenetei érkeztek"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Osztott képernyő be- vagy kikapcsolása"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lezárási képernyő"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Képernyőkép"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Kisegítő lehetőségek menü"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"A(z) <xliff:g id="APP_NAME">%1$s</xliff:g> alkalmazás címsora."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"A következő csomag a KORLÁTOZOTT csoportba került: <xliff:g id="PACKAGE_NAME">%1$s</xliff:g>"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Személyes"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Munka"</string>
 </resources>
diff --git a/core/res/res/values-hy/strings.xml b/core/res/res/values-hy/strings.xml
index 9d33f6b..5cd8e8e 100644
--- a/core/res/res/values-hy/strings.xml
+++ b/core/res/res/values-hy/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Ձեր սարքը ջնջվելու է"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Հնարավոր չէ օգտագործել ադմինիստրատորի հավելվածը։ Ձեր սարքից բոլոր տվյալները կջնջվեն։\n\nՀարցեր ունենալու դեպքում դիմեք ձեր կազմակերպության ադմինիստրատորին։"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Տպումն անջատված է <xliff:g id="OWNER_APP">%s</xliff:g> հավելվածի կողմից։"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Անձնական հավելվածները կասեցվել են ադմինիստրատորի կողմից"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Հպեք այստեղ, որպեսզի ստուգեք՝ արդյոք որևէ կանոն չի խախտվել։"</string>
     <string name="me" msgid="6207584824693813140">"Իմ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Պլանշետի ընտրանքները"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-ի կարգավորումներ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Դուք <xliff:g id="NUMBER_0">%1$d</xliff:g> անգամ սխալ եք հավաքել ձեր ապակողպման նմուշը: <xliff:g id="NUMBER_1">%2$d</xliff:g> անգամից ավել անհաջող փորձերից հետո ձեզ կառաջարկվի ապակողպել ձեր հեռախոսը` օգտագործելով էլփոստի հաշիվ:\n\n Փորձեք կրկին <xliff:g id="NUMBER_2">%3$d</xliff:g> վայրկյանից:"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Հեռացնել"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ֆոնային ռեժիմում <xliff:g id="PACKAGENAME">%1$s</xliff:g>-ից գործարկված առաջին պլանի ծառայությունը հետագա R կառուցումներում թույլտվություն չի ունենա օգտագործման ընթացքում։ Անցեք go/r-bg-fgs-restriction էջ և հաղորդեք վրիպակի մասին։"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ձայնը բարձրացնե՞լ խորհուրդ տրվող մակարդակից ավել:\n\nԵրկարատև բարձրաձայն լսելը կարող է վնասել ձեր լսողությունը:"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Օգտագործե՞լ Մատչելիության դյուրանցումը։"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Հատուկ գործառույթն օգտագործելու համար սեղմեք և 3 վայրկյան սեղմած պահեք ձայնի ուժգնության երկու կոճակները, երբ գործառույթը միացված է։\n\n Մատչելիության ակտիվ գործառույթը՝\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Գործառույթը կարող եք փոփոխել՝ անցնելով Կարգավորումներ &gt; Հատուկ գործառույթներ։"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Հավելվածը հասանելի չէ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> հավելվածը հասանելի չէ։ Դրա աշխատանքը սահմանափակում է <xliff:g id="APP_NAME_1">%2$s</xliff:g> հավելվածը։"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Մանրամասն"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Չեղարկել դադարեցումը"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Միացնե՞լ աշխատանքային պրոֆիլը"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Ձեր աշխատանքային հավելվածները, ծանուցումները, տվյալները և աշխատանքային պրոֆիլի մյուս գործառույթները կմիանան"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Միացնել"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Հավելվածը հասանելի չէ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածն այս պահին հասանելի չէ։"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Այս հավելվածը ստեղծվել է Android-ի ավելի հին տարբերակի համար և կարող է պատշաճ չաշխատել: Ստուգեք թարմացումների առկայությունը կամ դիմեք մշակողին:"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Ստուգել նոր տարբերակի առկայությունը"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Դուք ունեք նոր հաղորդագրություններ"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Միացնել/անջատել էկրանի տրոհումը"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Կողպէկրան"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Սքրինշոթ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Հատուկ գործառույթների ընտրացանկ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> հավելվածի ենթագրերի գոտին։"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> փաթեթը գցվեց ՍԱՀՄԱՆԱՓԱԿՎԱԾ զամբյուղի մեջ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Անձնական"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Աշխատանքային"</string>
 </resources>
diff --git a/core/res/res/values-in/strings.xml b/core/res/res/values-in/strings.xml
index 4813610..3a1571d 100644
--- a/core/res/res/values-in/strings.xml
+++ b/core/res/res/values-in/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Perangkat akan dihapus"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Aplikasi admin tidak dapat digunakan. Perangkat Anda kini akan dihapus.\n\nJika ada pertanyaan, hubungi admin organisasi."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Fitur pencetakan dinonaktifkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Aplikasi pribadi telah ditangguhkan oleh admin"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Ketuk di sini untuk memeriksa kepatuhan kebijakan."</string>
     <string name="me" msgid="6207584824693813140">"Saya"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opsi tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opsi Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Anda telah <xliff:g id="NUMBER_0">%1$d</xliff:g> kali salah menggambar pola pembuka kunci. Setelah <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi upaya gagal, Anda akan diminta membuka kunci ponsel menggunakan akun email.\n\nCoba lagi dalam <xliff:g id="NUMBER_2">%3$d</xliff:g> detik."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Hapus"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Layanan latar depan yang dimulai oleh latar belakang dari <xliff:g id="PACKAGENAME">%1$s</xliff:g> tidak akan memiliki izin saat-sedang-digunakan pada build R masa mendatang Lihat go/r-bg-fgs-restriction dan kirim laporan bug."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Mengeraskan volume di atas tingkat yang disarankan?\n\nMendengarkan dengan volume keras dalam waktu yang lama dapat merusak pendengaran Anda."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Aksesibilitas?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Saat pintasan aktif, menekan kedua tombol volume selama 3 detik akan memulai fitur aksesibilitas.\n\n Fitur aksesibilitas saat ini:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Anda dapat mengubah fitur di Setelan &gt; Aksesibilitas."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikasi tidak tersedia"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> saat ini tidak tersedia. Aplikasi ini dikelola oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Pelajari lebih lanjut"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Batalkan jeda aplikasi"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Aktifkan profil kerja?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikasi kerja, notifikasi, data, dan fitur profil kerja lainnya akan diaktifkan"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktifkan"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikasi tidak tersedia"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia saat ini."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Aplikasi ini dibuat untuk Android versi lama dan mungkin tidak berfungsi sebagaimana mestinya. Coba periksa apakah ada update, atau hubungi developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Periksa apakah ada update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Ada pesan baru"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktifkan/Nonaktifkan Layar Terpisah"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Layar Kunci"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Aksesibilitas"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Kolom teks <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah dimasukkan ke dalam bucket DIBATASI"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Pribadi"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string>
 </resources>
diff --git a/core/res/res/values-is/strings.xml b/core/res/res/values-is/strings.xml
index bf3fe87..eddb214 100644
--- a/core/res/res/values-is/strings.xml
+++ b/core/res/res/values-is/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Tækið verður hreinsað"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Ekki er hægt að nota stjórnunarforritið. Tækinu verður eytt.\n\nEf spurningar vakna skaltu hafa samband við kerfisstjóra fyrirtækisins."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> lokaði á prentun."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Stjórnandi hefur lokað á persónuleg forrit"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Ýttu hér til að sjá reglufylgni."</string>
     <string name="me" msgid="6207584824693813140">"Ég"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Valkostir spjaldtölvu"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Valkostir Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Þú hefur teiknað rangt opnunarmynstur <xliff:g id="NUMBER_0">%1$d</xliff:g> sinnum. Eftir <xliff:g id="NUMBER_1">%2$d</xliff:g> árangurslausar tilraunir í viðbót verður þú beðin(n) um að opna símann með tölvupóstreikningi.\n\n Reyndu aftur eftir <xliff:g id="NUMBER_2">%3$d</xliff:g> sekúndur."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjarlægja"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Forgrunnsþjónusta frá <xliff:g id="PACKAGENAME">%1$s</xliff:g> sem er ræst úr bakgrunni mun ekki hafa heimild við notkun í framtíðarútgáfum R. Farðu á go/r-bg-fgs-restriction og gefðu villuskýrslu."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Hækka hljóðstyrk umfram ráðlagðan styrk?\n\nEf hlustað er á háum hljóðstyrk í langan tíma kann það að skaða heyrnina."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Viltu nota aðgengisflýtileið?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Þegar flýtileiðin er virk er kveikt á aðgengiseiginleikanum með því að halda báðum hljóðstyrkshnöppunum inni í þrjár sekúndur.\n\n Virkur aðgengiseiginleiki:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Hægt er að skipta um eiginleika í Stillingar &gt; Aðgengi."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Forritið er ekki í boði"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ekki í boði eins og er. Þessu er stjórnað með <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Nánari upplýsingar"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Halda áfram að nota"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Kveikja á vinnusniði?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Kveikt verður á vinnuforritum, tilkynningum, gögnum og öðrum eiginleikum vinnusniðsins"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Kveikja"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Forrit er ekki tiltækt"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ekki tiltækt núna."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Þetta forrit var hannað fyrir eldri útgáfu af Android og ekki er víst að það virki eðlilega. Athugaðu hvort uppfærslur séu í boði eða hafðu samband við þróunaraðilann."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Leita að uppfærslu"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Þú ert með ný skilaboð"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Breyta skjáskiptingu"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lásskjár"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjámynd"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Aðgengisvalmynd"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Skjátextastika <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> var sett í flokkinn TAKMARKAÐ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Persónulegt"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Vinna"</string>
 </resources>
diff --git a/core/res/res/values-it/strings.xml b/core/res/res/values-it/strings.xml
index 72ca138..135a226 100644
--- a/core/res/res/values-it/strings.xml
+++ b/core/res/res/values-it/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Il dispositivo verrà resettato"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Impossibile usare l\'app di amministrazione. Il dispositivo verrà resettato.\n\nPer eventuali domande, contatta l\'amministratore della tua organizzazione."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Stampa disattivata da <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Le app personali sono state sospese da un amministratore"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tocca qui per controllare il rispetto delle norme."</string>
     <string name="me" msgid="6207584824693813140">"Io"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opzioni tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opzioni Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"<xliff:g id="NUMBER_0">%1$d</xliff:g> tentativi errati di inserimento della sequenza di sblocco. Dopo altri <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativi falliti, ti verrà chiesto di sbloccare il telefono con un account email.\n\n Riprova tra <xliff:g id="NUMBER_2">%3$d</xliff:g> secondi."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Rimuovi"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Il servizio in primo piano avviato in background da <xliff:g id="PACKAGENAME">%1$s</xliff:g> non avrà l\'autorizzazione \"durante l\'uso\" nelle future build R. Visita la pagina go/r-bg-fgs-restriction e invia una segnalazione di bug."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vuoi aumentare il volume oltre il livello consigliato?\n\nL\'ascolto ad alto volume per lunghi periodi di tempo potrebbe danneggiare l\'udito."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usare la scorciatoia Accessibilità?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quando la scorciatoia è attiva, puoi premere entrambi i pulsanti del volume per tre secondi per avviare una funzione di accessibilità.\n\n Funzione di accessibilità corrente:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Puoi cambiare la funzione in Impostazioni &gt; Accessibilità."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App non disponibile"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> non è al momento disponibile. Viene gestita tramite <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Ulteriori informazioni"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Riattiva app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Attivare il profilo di lavoro?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Le tue app di lavoro, le notifiche, i dati e altri elementi del profilo di lavoro saranno attivati."</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Attiva"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"L\'app non è disponibile"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"L\'app <xliff:g id="APP_NAME">%1$s</xliff:g> non è al momento disponibile."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Questa app è stata realizzata per una versione precedente di Android e potrebbe non funzionare correttamente. Prova a verificare la disponibilità di aggiornamenti o contatta lo sviluppatore."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Verifica la presenza di aggiornamenti"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Hai nuovi messaggi"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Attiva/disattiva schermo diviso"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Schermata di blocco"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Accessibilità"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra del titolo di <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> è stato inserito nel bucket RESTRICTED"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personale"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Lavoro"</string>
 </resources>
diff --git a/core/res/res/values-iw/strings.xml b/core/res/res/values-iw/strings.xml
index 9c8d0a3..65b7384 100644
--- a/core/res/res/values-iw/strings.xml
+++ b/core/res/res/values-iw/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"תתבצע מחיקה של המכשיר"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"לא ניתן להשתמש באפליקציה של מנהל המערכת.\n\nאם יש לך שאלות, יש ליצור קשר עם מנהל המערכת של הארגון."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ההדפסה הושבתה על ידי <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"אפליקציות אישיות הושעו על ידי מנהל מערכת"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"יש להקיש כאן כדי לבדוק תאימות למדיניות."</string>
     <string name="me" msgid="6207584824693813140">"אני"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"אפשרויות טאבלט"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"‏אפשרויות Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"שרטטת את קו ביטול הנעילה באופן שגוי <xliff:g id="NUMBER_0">%1$d</xliff:g> פעמים. לאחר <xliff:g id="NUMBER_1">%2$d</xliff:g> ניסיונות כושלים נוספים, תתבקש לבטל את נעילת הטלפון באמצעות חשבון אימייל‏.\n\nנסה שוב בעוד <xliff:g id="NUMBER_2">%3$d</xliff:g> שניות."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"הסר"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"‏לשירות שפועל בחזית מ-<xliff:g id="PACKAGENAME">%1$s</xliff:g> שהחל ברקע לא תהיה הרשאת while-in-use בגרסאות R build בעתיד. יש לעיין בכתובת go/r-bg-fgs-restriction ולהגיש דוח על באג."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"האם להעלות את עוצמת הקול מעל לרמה המומלצת?\n\nהאזנה בעוצמת קול גבוהה למשכי זמן ממושכים עלולה לפגוע בשמיעה."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"להשתמש בקיצור הדרך לתכונת הנגישות?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"כשקיצור הדרך מופעל, לחיצה על שני לחצני עוצמת השמע למשך שלוש שניות מפעילה את תכונת הנגישות.\n\n תכונת הנגישות המוגדרת כרגע:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n אפשר לשנות את התכונה בקטע \'הגדרות ונגישות\'."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"האפליקציה אינה זמינה"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"האפליקציה <xliff:g id="APP_NAME_0">%1$s</xliff:g> לא זמינה כרגע. את הזמינות שלה אפשר לנהל באפליקציה <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"מידע נוסף"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ביטול ההשהיה של האפליקציה"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"להפעיל את פרופיל העבודה?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"אפליקציות העבודה, התראות, נתונים ותכונות נוספות של פרופיל העבודה יופעלו"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"הפעל"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"האפליקציה לא זמינה"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"האפליקציה <xliff:g id="APP_NAME">%1$s</xliff:g> לא זמינה בשלב זה."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"‏האפליקציה הזו עוצבה לגרסה ישנה יותר של Android וייתכן שלא תפעל כראוי. ניתן לבדוק אם יש עדכונים או ליצור קשר עם המפתח."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"האם יש עדכון חדש?"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"יש לך הודעות חדשות"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"החלפת מצב של מסך מפוצל"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"מסך הנעילה"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"צילום מסך"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"תפריט נגישות"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"סרגל כיתוב של <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> התווספה לקטגוריה \'מוגבל\'"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"אישי"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"עבודה"</string>
 </resources>
diff --git a/core/res/res/values-ja/strings.xml b/core/res/res/values-ja/strings.xml
index 529d011..bda2064 100644
--- a/core/res/res/values-ja/strings.xml
+++ b/core/res/res/values-ja/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"デバイスのデータが消去されます"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"管理アプリを使用できません。デバイスのデータはこれから消去されます。\n\nご不明な点がある場合は、組織の管理者にお問い合わせください。"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」により印刷は無効にされています。"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"個人用アプリは管理者によって停止されています"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ポリシー コンプライアンスを確認するにはここをタップしてください。"</string>
     <string name="me" msgid="6207584824693813140">"自分"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"タブレットオプション"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV のオプション"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ロック解除パターンの入力を<xliff:g id="NUMBER_0">%1$d</xliff:g>回間違えました。あと<xliff:g id="NUMBER_1">%2$d</xliff:g>回間違えると、モバイルデバイスのロック解除にメールアカウントが必要になります。\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g>秒後にもう一度お試しください。"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"削除"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"今後の R ビルドでは、<xliff:g id="PACKAGENAME">%1$s</xliff:g> からバックグラウンドで開始されるフォアグラウンド サービスに「使用中のみ許可」の権限がありません。go/r-bg-fgs-restriction を確認し、バグレポートを提出してください。"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"推奨レベルを超えるまで音量を上げますか?\n\n大音量で長時間聞き続けると、聴力を損なう恐れがあります。"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ユーザー補助機能のショートカットの使用"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ショートカットが ON の場合、両方の音量ボタンを 3 秒間押し続けるとユーザー補助機能が起動します。\n\n現在のユーザー補助機能:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\nユーザー補助機能は [設定] &gt; [ユーザー補助] で変更できます。"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"このアプリは使用できません"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"現在、<xliff:g id="APP_NAME_0">%1$s</xliff:g> は使用できません。このアプリの使用は [<xliff:g id="APP_NAME_1">%2$s</xliff:g>] で管理されています。"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"詳細"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"アプリの一時停止を解除"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"仕事用プロファイルの有効化"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"仕事用のアプリ、通知、データなど、仕事用プロファイルの機能が ON になります"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ON にする"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"アプリの利用不可"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"現在 <xliff:g id="APP_NAME">%1$s</xliff:g> はご利用になれません。"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"このアプリは以前のバージョンの Android 用に作成されており、正常に動作しない可能性があります。アップデートを確認するか、デベロッパーにお問い合わせください。"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"アップデートを確認"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"新着メッセージがあります"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"分割画面の切り替え"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ロック画面"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"スクリーンショット"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ユーザー補助機能メニュー"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> のキャプション バーです。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> は RESTRICTED バケットに移動しました。"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"個人用"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"仕事用"</string>
 </resources>
diff --git a/core/res/res/values-ka/strings.xml b/core/res/res/values-ka/strings.xml
index 3f97338..c47b710 100644
--- a/core/res/res/values-ka/strings.xml
+++ b/core/res/res/values-ka/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"თქვენი მოწყობილობა წაიშლება"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ადმინისტრატორის აპის გამოყენება ვერ მოხერხდება. თქვენი მოწყობილობა ახლა ამოიშლება.\n\nთუ შეკითხვები გაქვთ, დაუკავშირდით თქვენი ორგანიზაციის ადმინისტრატორს."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ბეჭდვა გათიშულია <xliff:g id="OWNER_APP">%s</xliff:g>-ის მიერ."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"პირადი აპები შეჩერებულია ადმინისტრატორის მიერ"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"შეეხეთ აქ წესებთან შესაბამისობის შესამოწმებლად."</string>
     <string name="me" msgid="6207584824693813140">"მე"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ტაბლეტის პარამეტრები"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ვარიანტები"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"თქვენ არასწორად დახატეთ თქვენი განბლოკვის ნიმუში <xliff:g id="NUMBER_0">%1$d</xliff:g>-ჯერ. კიდევ <xliff:g id="NUMBER_1">%2$d</xliff:g> წარუმატებელი ცდის შემდეგ, დაგჭირდებათ თქვენი ტელეფონის განბლოკვა ელფოსტის ანგარიშის გამოყენებით.\n\n ხელახლა სცადეთ <xliff:g id="NUMBER_2">%3$d</xliff:g> წამში."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ამოშლა"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-ის ფონურად დაწყებულ წინა პლანის სერვისს მომავალ R build-ებში გამოყენების პროცესში წვდომის ნებართვა არ ექნება. გთხოვთ, იხილოთ go/r-bg-fgs-restriction და გამოგზავნოთ ხარვეზის ანგარიში."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"გსურთ ხმის რეკომენდებულ დონეზე მაღლა აწევა?\n\nხანგრძლივად ხმამაღლა მოსმენით შესაძლოა სმენადობა დაიზიანოთ."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"გსურთ მარტივი წვდომის მალსახმობის გამოყენება?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"მალსახმობის ჩართვის შემთხვევაში, ხმის ორივე ღილაკზე 3 წამის განმავლობაში დაჭერით მარტივი წვდომის ფუნქცია ჩაირთვება.\n\n მარტივი წვდომის ამჟამინდელი ფუნქციაა:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ამ ფუნქციის შეცვლა შეგიძლიათ აქ: პარამეტრები &gt; მარტივი წვდომა."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"აპი მიუწვდომელია"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ამჟამად მიუწვდომელია. ის იმართება <xliff:g id="APP_NAME_1">%2$s</xliff:g>-ის მიერ."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"შეიტყვეთ მეტი"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"აპის დაპაუზების გაუქმება"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ჩაირთოს სამსახურის პროფილი?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"თქვენი სამსახურის აპები, შეტყობინებები, მონაცემები და სამსახურის პროფილის ყველა სხვა ფუნქცია ჩაირთვება"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ჩართვა"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"აპი მიუწვდომელია"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ამჟამად მიუწვდომელია."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ეს აპი Android-ის ძველი ვერსიისთვის შეიქმნა და შესაძლოა სათანადოდ არ მუშაობდეს. გადაამოწმეთ განახლებები ან დაუკავშირდით დეველოპერს."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"განახლების შემოწმება"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"თქვენ ახალი შეტყობინებები გაქვთ"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"გაყოფილი ეკრანის გადართვა"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ჩაკეტილი ეკრანი"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ეკრანის ანაბეჭდი"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"მარტივი წვდომის მენიუ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-ის სუბტიტრების ზოლი."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> მოთავსდა კალათაში „შეზღუდული“"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"პირადი"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"სამსახური"</string>
 </resources>
diff --git a/core/res/res/values-kk/strings.xml b/core/res/res/values-kk/strings.xml
index bccd3f4b..241cf08 100644
--- a/core/res/res/values-kk/strings.xml
+++ b/core/res/res/values-kk/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Құрылғыңыздағы деректер өшіріледі"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Әкімші қолданбасын пайдалану мүмкін емес. Қазір құрылғыдағы деректер өшіріледі\n\nСұрақтарыңыз болса, ұйым әкімшісіне хабарласыңыз."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Басып шығаруды <xliff:g id="OWNER_APP">%s</xliff:g> өшірді."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Әкімші жеке қолданбаларды уақытша тоқтатты"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Саясат талаптарының сай келуін тексеру үшін осы жерді түртіңіз."</string>
     <string name="me" msgid="6207584824693813140">"Мен"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Планшет опциялары"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV опциялары"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Бекітпені ашу кескінін <xliff:g id="NUMBER_0">%1$d</xliff:g> рет қате сыздыңыз. <xliff:g id="NUMBER_1">%2$d</xliff:g> сәтсіз әрекеттен кейін телефоныңызды есептік жазба арқылы ашу өтінішін аласыз. \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секундтан кейін қайта әрекеттеніңіз."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Алып тастау"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Фондық режимде іске қосылған <xliff:g id="PACKAGENAME">%1$s</xliff:g> белсенді пакетінің алдағы R құрамаларында \"Пайдаланғанда ғана рұқсат ету\" рұқсаты болмайды. go/r-bg-fgs-restriction бетіне өтіп, қате туралы есеп жіберіңіз."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дыбыс деңгейін ұсынылған деңгейден көтеру керек пе?\n\nЖоғары дыбыс деңгейінде ұзақ кезеңдер бойы тыңдау есту қабілетіңізге зиян тигізуі мүмкін."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Арнайы мүмкіндік төте жолын пайдалану керек пе?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Бұл төте жол қосулы кезде дыбыс деңгейі түймелерінің екеуін де 3 секунд бойы басқанда арнайы мүмкіндік іске қосылады.\n\n Ағымдағы арнайы мүмкіндік:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Бұл мүмкіндікті \"Параметрлер\" &gt; \"Арнайы мүмкіндіктер\" тармағында өзгертуге болады."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Қолданба қолжетімді емес"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> дәл қазір қолжетімді емес. Ол <xliff:g id="APP_NAME_1">%2$s</xliff:g> арқылы басқарылады."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Толығырақ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Қолданбаны қайта қосу"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Жұмыс профилі қосылсын ба?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Жұмыс қолданбалары, хабарландырулар, деректер және басқа да жұмыс профильдерінің мүмкіндіктері қосылады"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Қосу"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Қолданба қолжетімді емес"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> қазір қолжетімді емес."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Қолданба Android жүйесінің ескі нұсқасына арналған және дұрыс жұмыс істемеуі мүмкін. Жаңартылған нұсқаны тексеріңіз немесе әзірлеушіге хабарласыңыз."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Жаңартылған нұсқаны тексеру"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Сізде жаңа хабарлар бар"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлу мүмкіндігін қосу/өшіру"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Құлып экраны"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Арнайы мүмкіндіктер мәзірі"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> қолданбасының жазу жолағы."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ШЕКТЕЛГЕН себетке салынды."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Жұмыс"</string>
 </resources>
diff --git a/core/res/res/values-km/strings.xml b/core/res/res/values-km/strings.xml
index ee451e9..483e236 100644
--- a/core/res/res/values-km/strings.xml
+++ b/core/res/res/values-km/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ឧបករណ៍របស់អ្នកនឹងត្រូវបានលុប"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"មិនអាច​ប្រើ​កម្មវិធី​អ្នកគ្រប់គ្រង​បានទេ។ ឧបករណ៍​របស់អ្នក​នឹងលុប​ឥឡូវនេះ។\n\nប្រសិនបើ​អ្នកមាន​សំណួរផ្សេងៗ​ សូមទាក់ទង​ទៅអ្នក​គ្រប់គ្រង​ស្ថាប័ន​របស់​អ្នក។"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ការបោះពុម្ព​ត្រូវបាន​បិទ​ដោយ <xliff:g id="OWNER_APP">%s</xliff:g> ។"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"អ្នកគ្រប់គ្រង​បានផ្អាក​កម្មវិធី​ផ្ទាល់ខ្លួន"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ចុច​ត្រង់នេះ ដើម្បី​ពិនិត្យមើល​ការអនុលោម​តាម​គោលការណ៍​។"</string>
     <string name="me" msgid="6207584824693813140">"ខ្ញុំ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ជម្រើស​កុំព្យូទ័រ​បន្ទះ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"ជម្រើស Android TV"</string>
@@ -1615,8 +1613,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"អ្នក​បាន​គូរ​លំនាំ​ដោះ​​សោ​របស់​អ្នក​មិន​ត្រឹមត្រូវ​ចំនួន <xliff:g id="NUMBER_0">%1$d</xliff:g> ដង។ បន្ទាប់​ពី​ការ​ព្យាយាម​មិន​ជោគជ័យ​​ច្រើនជាង <xliff:g id="NUMBER_1">%2$d</xliff:g> ដង អ្នក​នឹង​ត្រូវ​បាន​​ស្នើ​ឲ្យ​ដោះ​សោ​ទូរស័ព្ទ​របស់​អ្នក​ដោយ​ប្រើ​គណនី​អ៊ីមែល។\n\n ព្យាយាម​ម្ដង​ទៀត​ក្នុង​រយៈ​ពេល <xliff:g id="NUMBER_2">%3$d</xliff:g> វិនាទី។"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"លុប​ចេញ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"សេវាកម្ម​ផ្ទៃខាងមុខ​ដែលចាប់ផ្ដើមដោយ​ផ្ទៃខាងក្រោយ​ពី <xliff:g id="PACKAGENAME">%1$s</xliff:g> នឹង​មិនមាន​ការអនុញ្ញាត​ខណៈពេល​កំពុង​ប្រើប្រាស់​ទេ នៅក្នុង​កំណែបង្កើត R នៅពេល​អនាគត​។ សូម​មើល go/r-bg-fgs-restriction និង​ផ្ញើ​របាយការណ៍​អំពី​បញ្ហា​។"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"បង្កើន​កម្រិត​សំឡេង​លើស​ពី​កម្រិត​បាន​ផ្ដល់​យោបល់?\n\nការ​ស្ដាប់​នៅ​កម្រិត​សំឡេង​ខ្លាំង​យូរ​អាច​ធ្វើឲ្យ​ខូច​ត្រចៀក។"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ប្រើប្រាស់​ផ្លូវកាត់​ភាព​ងាយស្រួល?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"នៅពេល​ផ្លូវកាត់​នេះបើក ការ​ចុច​ប៊ូតុង​កម្រិត​សំឡេង​ទាំង​ពីរ​ឲ្យ​ជាប់​រយៈពេល​ 3 វិនាទីនឹង​ចាប់ផ្តើម​មុខងារ​ភាពងាយស្រួល។\n\n មុខងារ​ភាពងាយស្រួល​បច្ចុប្បន្ន៖\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n អ្នក​អាច​ផ្លាស់​ប្តូរ​មុខងារ​នេះ​បាន​នៅក្នុង​ការ កំណត់ &gt; ភាព​ងាយស្រួល។"</string>
@@ -1854,11 +1851,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"​កម្មវិធី​មិន​អាច​ប្រើ​បានទេ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> មិន​អាច​ប្រើ​បាន​ទេនៅពេលនេះ។ វា​ស្ថិត​ក្រោម​ការគ្រប់គ្រងរបស់ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ។"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ស្វែងយល់បន្ថែម"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ឈប់ផ្អាក​កម្មវិធី"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"បើក​កម្រង​ព័ត៌មាន​ការ​ងារ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"កម្មវិធី​ការងារ ការ​ជូនដំណឹង ទិន្នន័យ និង​មុខងារ​កម្រង​ព័ត៌មាន​ការងារ​ផ្សេង​ទៀត​របស់អ្នក​នឹង​ត្រូវ​បាន​បើក"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"បើក"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"មិនអាច​ប្រើ​កម្មវិធី​នេះបានទេ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"មិនអាច​ប្រើ <xliff:g id="APP_NAME">%1$s</xliff:g> នៅពេល​នេះ​បានទេ​។"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"កម្មវិធី​នេះ​ត្រូវបាន​បង្កើត​ឡើង​សម្រាប់​កំណែ​ប្រព័ន្ធ​ប្រតិបត្តិការ Android ចាស់ ហើយ​វាអាច​ដំណើរការ​ខុសប្រក្រតី។ សូម​សាកល្បង​ពិនិត្យមើល​កំណែ​ថ្មី ឬ​ទាក់ទង​ទៅអ្នក​អភិវឌ្ឍន៍។"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"រក​មើល​កំណែ​ថ្មី"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"អ្នកមានសារថ្មី"</string>
@@ -2009,12 +2007,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"បិទ/បើក​មុខងារ​បំបែកអេក្រង់"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"អេក្រង់ចាក់សោ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"រូបថតអេក្រង់"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ម៉ឺនុយ​ភាពងាយស្រួល"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"របារពណ៌នា​អំពី <xliff:g id="APP_NAME">%1$s</xliff:g>។"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ត្រូវបានដាក់​ទៅក្នុងធុង​ដែលបានដាក់កំហិត"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ផ្ទាល់ខ្លួន"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ការងារ"</string>
 </resources>
diff --git a/core/res/res/values-kn/strings.xml b/core/res/res/values-kn/strings.xml
index 7528284..7133e89 100644
--- a/core/res/res/values-kn/strings.xml
+++ b/core/res/res/values-kn/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ನಿಮ್ಮ ಸಾಧನವನ್ನು ಅಳಿಸಲಾಗುತ್ತದೆ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ನಿರ್ವಹಣೆ ಅಪ್ಲಿಕೇಶನ್ ಬಳಸಲು ಸಾಧ್ಯವಿಲ್ಲ. ನಿಮ್ಮ ಸಾಧನವನ್ನು ಇದೀಗ ಅಳಿಸಲಾಗುತ್ತದೆ.\n\nನಿಮ್ಮಲ್ಲಿ ಪ್ರಶ್ನೆಗಳಿದ್ದರೆ, ನಿಮ್ಮ ಸಂಸ್ಥೆಯ ನಿರ್ವಾಹಕರನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ಮೂಲಕ ಪ್ರಿಂಟಿಂಗ್ ಅನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ವೈಯಕ್ತಿಕ ಆ್ಯಪ್‌ಗಳನ್ನು ನಿರ್ವಾಹಕರು ಅಮಾನತುಗೊಳಿಸಿದ್ದಾರೆ"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ಕಾರ್ಯನೀತಿ ಅನುಸರಣೆಯನ್ನು ಪರಿಶೀಲಿಸಲು ಇಲ್ಲಿ ಟ್ಯಾಪ್ ಮಾಡಿ."</string>
     <string name="me" msgid="6207584824693813140">"ನಾನು"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ಟ್ಯಾಬ್ಲೆಟ್ ಆಯ್ಕೆಗಳು"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ಆಯ್ಕೆಗಳು"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ನಿಮ್ಮ ಅನ್‍‍ಲಾಕ್ ಪ್ಯಾಟರ್ನ್ ಅನ್ನು ನೀವು <xliff:g id="NUMBER_0">%1$d</xliff:g> ಬಾರಿ ತಪ್ಪಾಗಿ ಡ್ರಾ ಮಾಡಿರುವಿರಿ. <xliff:g id="NUMBER_1">%2$d</xliff:g> ಹೆಚ್ಚಿನ ವಿಫಲ ಪ್ರಯತ್ನಗಳ ಬಳಿಕ, ನಿಮ್ಮ ಇಮೇಲ್ ಖಾತೆಯನ್ನು ಬಳಸಿಕೊಂಡು ನಿಮ್ಮ ಫೋನ್ ಅನ್‌ಲಾಕ್ ಮಾಡುವಂತೆ ನಿಮ್ಮಲ್ಲಿ ಕೇಳಿಕೊಳ್ಳಲಾಗುತ್ತದೆ.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> ಸೆಕೆಂಡುಗಳಲ್ಲಿ ಮತ್ತೆ ಪ್ರಯತ್ನಿಸಿ."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ತೆಗೆದುಹಾಕು"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ನಿಂದ ಹಿನ್ನೆಲೆಯಲ್ಲಿ ಪ್ರಾರಂಭಿಸಲಾದ ಮುನ್ನೆಲೆ ಸೇವೆ ಭವಿಷ್ಯದ R ಬಿಲ್ಡ್‌ಗಳಿಂದ ಬಳಕೆಯಲ್ಲಿರುವಾಗ ಅನುಮತಿಯನ್ನು ಪಡೆಯುವುದಿಲ್ಲ. go/r-bg-fgs-restriction ಅನ್ನು ನೋಡಿ ಮತ್ತು ದೋಷವರದಿಯನ್ನು ಫೈಲ್‌ ಮಾಡಿ."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ವಾಲ್ಯೂಮ್‌ ಅನ್ನು ಶಿಫಾರಸು ಮಾಡಲಾದ ಮಟ್ಟಕ್ಕಿಂತಲೂ ಹೆಚ್ಚು ಮಾಡುವುದೇ?\n\nದೀರ್ಘ ಅವಧಿಯವರೆಗೆ ಹೆಚ್ಚಿನ ವಾಲ್ಯೂಮ್‌ನಲ್ಲಿ ಆಲಿಸುವುದರಿಂದ ನಿಮ್ಮ ಆಲಿಸುವಿಕೆ ಸಾಮರ್ಥ್ಯಕ್ಕೆ ಹಾನಿಯುಂಟು ಮಾಡಬಹುದು."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ಪ್ರವೇಶಿಸುವಿಕೆ ಶಾರ್ಟ್‌ಕಟ್ ಬಳಸುವುದೇ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ಶಾರ್ಟ್‌ಕಟ್ ಆನ್ ಆಗಿರುವಾಗ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯ ಆನ್ ಮಾಡಲು, ಎರಡೂ ವಾಲ್ಯೂಮ್ ಬಟನ್‌ಗಳನ್ನು ನೀವು 3 ಸೆಕೆಂಡುಗಳ ಕಾಲ ಒತ್ತಬೇಕು.\n\nಪ್ರಸ್ತುತ ಪ್ರವೇಶಿಸುವಿಕೆ ವೈಶಿಷ್ಟ್ಯ: \n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ಸೆಟ್ಟಿಂಗ್‌ಗಳು ಮತ್ತು ಪ್ರವೇಶಿಸುವಿಕೆಯಲ್ಲಿ ನೀವು ವೈಶಿಷ್ಟ್ಯವನ್ನು ಬದಲಾಯಿಸಬಹುದು."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ಅಪ್ಲಿಕೇಶನ್ ಲಭ್ಯವಿಲ್ಲ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ಅಪ್ಲಿಕೇಶನ್‌ ಸದ್ಯಕ್ಕೆ ಲಭ್ಯವಿಲ್ಲ. ಇದನ್ನು <xliff:g id="APP_NAME_1">%2$s</xliff:g> ನಲ್ಲಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತಿದೆ."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ಇನ್ನಷ್ಟು ತಿಳಿಯಿರಿ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ಆ್ಯಪ್ ವಿರಾಮ ನಿಲ್ಲಿಸಿ"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ ಆನ್ ಮಾಡುವುದೇ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ನಿಮ್ಮ ಕೆಲಸದ ಅಪ್ಲಿಕೇಶನ್‌ಗಳು, ಅಧಿಸೂಚನೆಗಳು, ಡೇಟಾ ಮತ್ತು ಉದ್ಯೋಗ ಪ್ರೊಫೈಲ್‌ನ ಇತರ ವೈಶಿಷ್ಟ್ಯಗಳನ್ನು ಆನ್ ಮಾಡಲಾಗುತ್ತದೆ"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ಆನ್‌ ಮಾಡಿ"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ಆ್ಯಪ್ ಲಭ್ಯವಿಲ್ಲ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಇದೀಗ ಲಭ್ಯವಿಲ್ಲ."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ಈ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು Android ನ ಹಳೆಯ ಆವೃತ್ತಿಗೆ ರಚಿಸಲಾಗಿದೆ ಮತ್ತು ಸರಿಯಾಗಿ ಕೆಲಸ ಮಾಡದಿರಬಹುದು. ಅಪ್‌ಡೇಟ್‌ಗಳನ್ನು ಪರಿಶೀಲಿಸಲು ಪ್ರಯತ್ನಿಸಿ ಅಥವಾ ಡೆವಲಪರ್ ಅನ್ನು ಸಂಪರ್ಕಿಸಿ."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ಅಪ್‌ಡೇಟ್‌ಗಾಗಿ ಪರಿಶೀಲಿಸಿ"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"ನೀವು ಹೊಸ ಸಂದೇಶಗಳನ್ನು ಹೊಂದಿರುವಿರಿ"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ಸ್ಪ್ಲಿಟ್-ಸ್ಕ್ರೀನ್ ಟಾಗಲ್ ಮಾಡಿ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ಲಾಕ್ ಸ್ಕ್ರೀನ್"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ಸ್ಕ್ರೀನ್‌ಶಾಟ್"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ಪ್ರವೇಶಿಸುವಿಕೆ ಮೆನು"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ಆ್ಯಪ್‌ನ ಶೀರ್ಷಿಕೆಯ ಪಟ್ಟಿ."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ಅನ್ನು ನಿರ್ಬಂಧಿತ ಬಕೆಟ್‌ಗೆ ಹಾಕಲಾಗಿದೆ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ವೈಯಕ್ತಿಕ"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ಕೆಲಸ"</string>
 </resources>
diff --git a/core/res/res/values-ko/strings.xml b/core/res/res/values-ko/strings.xml
index d5b4507..12c05ba 100644
--- a/core/res/res/values-ko/strings.xml
+++ b/core/res/res/values-ko/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"기기가 삭제됩니다."</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"관리자 앱을 사용할 수 없습니다. 곧 기기가 삭제됩니다.\n\n궁금한 점이 있으면 조직의 관리자에게 문의하세요."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g>에 의해 사용 중지되었습니다."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"관리자가 개인 앱을 정지함"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"정책 준수를 확인하려면 여기를 탭하세요."</string>
     <string name="me" msgid="6207584824693813140">"나"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"태블릿 옵션"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 옵션"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"잠금해제 패턴을 <xliff:g id="NUMBER_0">%1$d</xliff:g>회 잘못 그렸습니다. <xliff:g id="NUMBER_1">%2$d</xliff:g>회 더 실패하면 이메일 계정을 사용하여 휴대전화를 잠금해제해야 합니다.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g>초 후에 다시 시도해 주세요."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"삭제"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"향후 R 빌드에서는 백그라운드에서 시작된 <xliff:g id="PACKAGENAME">%1$s</xliff:g>의 포그라운드 서비스에 더 이상 사용 중인 상태에서 필요한 권한이 부여되지 않습니다. go/r-bg-fgs-restriction 페이지에서 버그 신고를 제출하세요."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"권장 수준 이상으로 볼륨을 높이시겠습니까?\n\n높은 볼륨으로 장시간 청취하면 청력에 손상이 올 수 있습니다."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"접근성 단축키를 사용하시겠습니까?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"단축키가 사용 설정된 경우 두 개의 볼륨 버튼을 3초간 누르면 접근성 기능이 시작됩니다.\n\n 현재 접근성 기능:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n \'설정 &gt; 접근성\'에서 기능을 변경할 수 있습니다."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"앱을 사용할 수 없음"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>은(는) 현재 사용할 수 없습니다. <xliff:g id="APP_NAME_1">%2$s</xliff:g>에서 관리하는 앱입니다."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"자세히 알아보기"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"앱 일시중지 해제"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"직장 프로필을 사용 설정하시겠어요?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"업무용 앱, 알림, 데이터 및 기타 직장 프로필 기능이 사용 설정됩니다."</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"사용 설정"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"앱을 사용할 수 없습니다"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"현재 <xliff:g id="APP_NAME">%1$s</xliff:g> 앱을 사용할 수 없습니다."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"이 앱은 Android 이전 버전에 맞게 개발되었기 때문에 제대로 작동하지 않을 수 있습니다. 업데이트를 확인하거나 개발자에게 문의하세요."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"업데이트 확인"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"새 메시지 있음"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"화면 분할 모드 전환"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"잠금 화면"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"스크린샷"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"접근성 메뉴"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>의 자막 표시줄입니다."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 항목이 RESTRICTED 버킷으로 이동함"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"개인"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"직장"</string>
 </resources>
diff --git a/core/res/res/values-ky/strings.xml b/core/res/res/values-ky/strings.xml
index 533e0b8..ccbf845 100644
--- a/core/res/res/values-ky/strings.xml
+++ b/core/res/res/values-ky/strings.xml
@@ -190,14 +190,12 @@
     <string name="work_profile_deleted_reason_maximum_password_failure" msgid="1080323158315663167">"Өтө көп жолу сырсөздү киргизүү аракети жасалды"</string>
     <string name="device_ownership_relinquished" msgid="4080886992183195724">"Админ түзмөктөн жеке колдонуу үчүн баш тартты"</string>
     <string name="network_logging_notification_title" msgid="554983187553845004">"Түзмөктү ишкана башкарат"</string>
-    <string name="network_logging_notification_text" msgid="1327373071132562512">"Ишканаңыз бул түзмөктү башкарат жана тармак трафигин көзөмөлдөшү мүмкүн. Чоо-жайын көрүү үчүн таптап коюңуз."</string>
+    <string name="network_logging_notification_text" msgid="1327373071132562512">"Ишканаңыз бул түзмөктү башкарат жана тармак трафигин көзөмөлдөшү мүмкүн. Чоо-жайын билгиңиз келсе, таптап коюңуз."</string>
     <string name="factory_reset_warning" msgid="6858705527798047809">"Түзмөгүңүз тазаланат"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Түзмөктү башкаруучу колдонмо жараксыз. Түзмөгүңүз азыр тазаланат.\n\nСуроолоруңуз болсо, ишканаңыздын администраторуна кайрылыңыз."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Басып чыгаруу <xliff:g id="OWNER_APP">%s</xliff:g> тарабынан өчүрүлдү."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Жеке колдонмолорду администратор убактылуу токтотту"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Саясатка ылайыктуулугун текшерүү үчүн бул жерди таптап коюңуз"</string>
     <string name="me" msgid="6207584824693813140">"Мен"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Планшет мүмкүнчүлүктөрү"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV параметрлери"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Графикалык ачкычты <xliff:g id="NUMBER_0">%1$d</xliff:g> жолу туура эмес көрсөттүңүз. <xliff:g id="NUMBER_1">%2$d</xliff:g> жолу туура эмес көрсөтүлгөндөн кийин, телефондун кулпусун ачуу үчүн Google аккаунтуңузга кирүүгө туура келет.\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> секундадан кийин кайталап көрсөңүз болот."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Алып салуу"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Фондогу <xliff:g id="PACKAGENAME">%1$s</xliff:g> кызматы активдүү режимде иштеп баштап, кийинки R курамаларында колдонуу учурунда уруксаты болбойт. Төмөнкү бөлүмгө өтүп, мүчүлүштүк тууралуу кабарды тапшырыңыз: go/r-bg-fgs-restriction."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Сунушталган деңгээлден да катуулатып уккуңуз келеби?\n\nМузыканы узакка чейин катуу уксаңыз, угууңуз начарлап кетиши мүмкүн."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ыкчам иштетесизби?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Атайын мүмкүнчүлүктөр функциясын пайдалануу үчүн, ал күйгүзүлгөндө, үндү катуулатып/акырындаткан эки баскычты тең үч секунддай кое бербей басып туруңуз.\n\n Учурдагы атайын мүмкүнчүлүктөрдүн жөндөөлөрү:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\nЖөндөөлөр &gt; Атайын мүмкүнчүлүктөр бөлүмүнөн өзгөртө аласыз."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Колдонмо жеткиликсиз"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> колдонмосу учурда жеткиликсиз. Анын жеткиликтүүлүгү <xliff:g id="APP_NAME_1">%2$s</xliff:g> тарабынан башкарылат."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Кеңири маалымат"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Колдонмону иштетүү"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Жумуш профили күйгүзүлсүнбү?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Жумуш колдонмолоруңуз, эскертмелериңиз, дайын-даректериңиз жана жумуш профилинин башка функциялары күйгүзүлөт."</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Күйгүзүү"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Колдонмо учурда жеткиликсиз"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> учурда жеткиликсиз"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Бул колдонмо Android\'дин эски версиясы үчүн иштеп чыгарылган, андыктан туура эмес иштеши мүмкүн. Жаңыртууларды издеп көрүңүз же иштеп чыгуучуга кайрылыңыз."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Жаңыртууну издөө"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Сизге жаңы билдирүүлөр келди"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Экранды бөлүүнү күйгүзүү же өчүрүү"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Кулпуланган экран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Атайын мүмкүнчүлүктөр менюсу"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> колдонмосунун маалымат тилкеси."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ЧЕКТЕЛГЕН чакага коюлган"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Жеке"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Жумуш"</string>
 </resources>
diff --git a/core/res/res/values-lo/strings.xml b/core/res/res/values-lo/strings.xml
index 7a3e85e..e8bda53 100644
--- a/core/res/res/values-lo/strings.xml
+++ b/core/res/res/values-lo/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ອຸ​ປະ​ກອນ​ຂອງ​ທ່ານ​ຈະ​ຖືກ​ລຶບ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ບໍ່ສາມາດໃຊ້ແອັບຜູ້ເບິ່ງແຍງລະບົບໄດ້. ອຸປະກອນຂອງທ່ານຈະຖືກລຶບຂໍ້ມູນໃນຕອນນີ້.\n\nຫາກທ່ານມີຄຳຖາມ, ໃຫ້ຕິດຕໍ່ຜູ້ເບິ່ງແຍງລະບົບອົງກອນຂອງທ່ານ."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ການພິມຖືກປິດໄວ້ໂດຍ <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ແອັບສ່ວນຕົວຖືກລະງັບໄວ້ໂດຍຜູ້ເບິ່ງແຍງ"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ແຕະບ່ອນນີ້ເພື່ອກວດສອບການປະຕິບັດຕາມນະໂຍບາຍ."</string>
     <string name="me" msgid="6207584824693813140">"ຂ້າພະເຈົ້າ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ໂຕເລືອກແທັບເລັດ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"ຕົວເລືອກ Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ທ່ານແຕ້ມຮູບແບບປົດລັອກຂອງທ່ານຜິດ <xliff:g id="NUMBER_0">%1$d</xliff:g> ເທື່ອແລ້ວ. ຫຼັງຈາກຄວາມພະຍາຍາມອີກ <xliff:g id="NUMBER_1">%2$d</xliff:g> ເທື່ອ ທ່ານຈະຖືກຖາມໃຫ້ປົດລັອກໂທລະສັບຂອງທ່ານດ້ວຍບັນຊີອີເມວ.\n\n ລອງໃໝ່ອີກຄັ້ງໃນ <xliff:g id="NUMBER_2">%3$d</xliff:g> ວິນາທີ."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ລຶບອອກ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"ບໍລິການພື້ນໜ້າທີ່ເລີ່ມຕົ້ນຈາກພື້ນຫຼັງຈາກ <xliff:g id="PACKAGENAME">%1$s</xliff:g> ຈະບໍ່ມີສິດອະນຸຍາດໃນຂະນະທີ່ໃຊ້ໃນ R builds ໃນອະນາຄົດ. ກະລຸນາອ່ານ go/r-bg-fgs-restriction ແລະ ລາຍງານຂໍ້ຜິດພາດ."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ເພີ່ມ​ລະ​ດັບ​ສຽງ​ໃຫ້​ເກີນກວ່າ​ລະ​ດັບ​ທີ່​ແນະ​ນຳ​ບໍ?\n\n​ການ​ຮັບ​ຟັງ​ສຽງ​ໃນ​ລະ​ດັບ​ທີ່​ສູງ​ເປັນ​ໄລ​ຍະ​ເວ​ລາ​ດົນ​​ອາດ​ເຮັດ​ໃຫ້​ການ​ຟັງ​ຂອງ​ທ່ານ​ມີ​ບັນ​ຫາ​ໄດ້."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ໃຊ້ປຸ່ມລັດການຊ່ວຍເຂົ້າເຖິງບໍ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ເມື່ອເປີດໃຊ້ປຸ່ມລັດແລ້ວ, ໃຫ້ກົດປຸ່ມສຽງທັງສອງຄ້າງໄວ້ 3 ວິນາທີເພື່ອເລີ່ມຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງ.\n\n ຄຸນສົມບັດການຊ່ວຍເຂົ້າເຖິງປັດຈຸບັນ:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ທ່ານສາມາດປ່ຽນຄຸນສົມບັດໄດ້ໃນການຕັ້ງຄ່າ &gt; ການຊ່ວຍເຂົ້າເຖິງ."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ບໍ່ສາມາດໃຊ້ແອັບໄດ້"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້. ມັນຖືກຈັດການໂດຍ <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ສຶກສາເພີ່ມເຕີມ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ຍົກເລີກການຢຸດແອັບຊົ່ວຄາວ"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ເປີດໃຊ້ໂປຣໄຟລ໌ບ່ອນເຮັດວຽກບໍ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ແອັບວຽກຂອງທ່ານ, ການແຈ້ງເຕືອນ, ຂໍ້ມູນ ແລະ ຄຸນສົມບັດໂປຣໄຟລ໌ວຽກຈະຖືກເປີດໃຊ້"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ເປີດ​"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ແອັບບໍ່ສາມາດໃຊ້ໄດ້"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ບໍ່ສາມາດໃຊ້ໄດ້ໃນຕອນນີ້."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ແອັບນີ້ຖືກສ້າງຂຶ້ນສຳລັບ Android ເວີຊັນທີ່ເກົ່າກວ່າ ແລະ ອາດເຮັດວຽກໄດ້ບໍ່ປົກກະຕິ. ໃຫ້ລອງກວດສອບເບິ່ງອັບເດດ ຫຼື ຕິດຕໍ່ຜູ້ພັດທະນາ."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ກວດເບິ່ງອັບເດດ"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"ທ່ານມີຂໍ້ຄວາມໃໝ່"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ເປີດ/ປິດການແບ່ງໜ້າຈໍ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ໜ້າຈໍລັອກ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ຮູບໜ້າຈໍ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"​ເມ​ນູ​ການ​ຊ່ວຍ​ເຂົ້າ​ເຖິງ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"ແຖບຄຳບັນຍາຍຂອງ <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ຖືກວາງໄວ້ໃນກະຕ່າ \"ຈຳກັດ\" ແລ້ວ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ສ່ວນຕົວ"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ວຽກ"</string>
 </resources>
diff --git a/core/res/res/values-lt/strings.xml b/core/res/res/values-lt/strings.xml
index 265c97e..ad90ab3 100644
--- a/core/res/res/values-lt/strings.xml
+++ b/core/res/res/values-lt/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Įrenginys bus ištrintas"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administratoriaus programos negalima naudoti. Dabar įrenginio duomenys bus ištrinti.\n\nJei turite klausimų, susisiekite su organizacijos administratoriumi."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Neleidžiama spausdinti (<xliff:g id="OWNER_APP">%s</xliff:g>)."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administratorius laikinai sustabdė asmenines programas"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Palieskite čia, kad patikrintumėte, ar laikomasi politikos."</string>
     <string name="me" msgid="6207584824693813140">"Aš"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planšetinio kompiuterio parinktys"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"„Android TV“ parinktys"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Netinkamai nupiešėte atrakinimo piešinį <xliff:g id="NUMBER_0">%1$d</xliff:g> k. Po dar <xliff:g id="NUMBER_1">%2$d</xliff:g> nesėkm. band. būsite paprašyti atrakinti telefoną naudodami „Google“ prisijungimo duomenis.\n\n Bandykite dar kartą po <xliff:g id="NUMBER_2">%3$d</xliff:g> sek."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Pašalinti"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fone pradėtai priekinio plano paslaugai iš „<xliff:g id="PACKAGENAME">%1$s</xliff:g>“ nebus suteiktas leidimas naudojimo metu būsimose R versijose. Apsilankykite go/r-bg-fgs-restriction ir pateikite pranešimą apie riktą."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Padidinti garsą daugiau nei rekomenduojamas lygis?\n\nIlgai klausydami dideliu garsu galite pažeisti klausą."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Naudoti spartųjį pritaikymo neįgaliesiems klavišą?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kai spartusis klavišas įjungtas, spaudžiant abu garsumo mygtukus 3 sekundes bus paleista pritaikymo neįgaliesiems funkcija.\n\n Dabartinė pritaikymo neįgaliesiems funkcija:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>„\n“\n Funkciją galite pakeisti skiltyje „Nustatymai“ &gt; „Pritaikymas neįgaliesiems“."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Programa nepasiekiama"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Programa „<xliff:g id="APP_NAME_0">%1$s</xliff:g>“ šiuo metu nepasiekiama. Tai tvarkoma naudojant programą „<xliff:g id="APP_NAME_1">%2$s</xliff:g>“."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Sužinoti daugiau"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atšaukti programos pristabdymą"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Įjungti darbo profilį?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Darbo programos, pranešimai, duomenys ir kitos darbo profilio funkcijos bus išjungtos"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Įjungti"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Programa nepasiekiama."</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Programa „<xliff:g id="APP_NAME">%1$s</xliff:g>“ šiuo metu nepasiekiama."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ši programa sukurta naudoti senesnės versijos sistemoje „Android“ ir gali tinkamai neveikti. Pabandykite patikrinti, ar yra naujinių, arba susisiekite su kūrėju."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Tikrinti, ar yra naujinių"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Turite naujų pranešimų"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Perjungti išskaidyto ekrano režimą"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Užrakinimo ekranas"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekrano kopija"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pritaikomumo meniu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Programos „<xliff:g id="APP_NAME">%1$s</xliff:g>“ antraštės juosta."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"„<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>“ įkeltas į grupę APRIBOTA"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Asmeninė"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Darbo"</string>
 </resources>
diff --git a/core/res/res/values-lv/strings.xml b/core/res/res/values-lv/strings.xml
index a535f6d..6ffe39a 100644
--- a/core/res/res/values-lv/strings.xml
+++ b/core/res/res/values-lv/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Jūsu ierīces dati tiks dzēsti"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administratora lietotni nevar izmantot. Ierīcē saglabātie dati tiks dzēsti.\n\nJa jums ir kādi jautājumi, sazinieties ar savas organizācijas administratoru."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Drukāšanu atspējoja <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administrators apturēja privāto lietotņu darbību"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Pieskarieties šeit, lai noskaidrotu atbilstību politikai."</string>
     <string name="me" msgid="6207584824693813140">"Man"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planšetdatora opcijas"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV opcijas"</string>
@@ -1635,8 +1633,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Jūs nepareizi norādījāt atbloķēšanas kombināciju <xliff:g id="NUMBER_0">%1$d</xliff:g> reizes. Pēc vēl <xliff:g id="NUMBER_1">%2$d</xliff:g> neveiksmīgiem mēģinājumiem tālrunis būs jāatbloķē, izmantojot e-pasta kontu.\n\nMēģiniet vēlreiz pēc <xliff:g id="NUMBER_2">%3$d</xliff:g> sekundēm."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">"  — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Noņemt"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fonā sāktam priekšplāna pakalpojumam no pakotnes <xliff:g id="PACKAGENAME">%1$s</xliff:g> nebūs atļaujas “while-in-use” turpmākajās R versijās. Lūdzu, skatiet vietni go/r-bg-fgs-restriction un iesniedziet kļūdas pārskatu."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vai palielināt skaļumu virs ieteicamā līmeņa?\n\nIlgstoši klausoties skaņu lielā skaļumā, var tikt bojāta dzirde."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vai izmantot pieejamības saīsni?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Ja saīsne ir iespējota, vienlaikus nospiežot abas skaļuma regulēšanas pogas un trīs sekundes turot tās, tiks palaista pieejamības funkcija.\n\n Pašreiz iestatītā pieejamības funkcija:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Šo funkciju var mainīt sadaļā Iestatījumi &gt; Pieejamība."</string>
@@ -1884,11 +1881,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Lietotne nav pieejama"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> pašlaik nav pieejama. Šo darbību pārvalda <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Uzzināt vairāk"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Atsākt lietotnes darbību"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Vai ieslēgt darba profilu?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Tiks ieslēgtas jūsu darba lietotnes, paziņojumi, dati un citas darba profila funkcijas."</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ieslēgt"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Lietotne nav pieejama"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Lietotne <xliff:g id="APP_NAME">%1$s</xliff:g> pašlaik nav pieejama."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Šī lietotne tika izstrādāta vecākai Android versijai un var nedarboties pareizi. Meklējiet atjauninājumus vai sazinieties ar izstrādātāju."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Meklēt atjauninājumu"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Jums ir jaunas īsziņas."</string>
@@ -2041,12 +2039,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Pārslēgt ekrāna sadalīšanu"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloķēt ekrānu"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekrānuzņēmums"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Pieejamības izvēlne"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Lietotnes <xliff:g id="APP_NAME">%1$s</xliff:g> subtitru josla."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Pakotne “<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>” ir ievietota ierobežotā kopā."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Privātais profils"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Darba profils"</string>
 </resources>
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/core/res/res/values-mcc334/config.xml
similarity index 60%
copy from media/java/android/media/AudioDeviceAddress.aidl
copy to core/res/res/values-mcc334/config.xml
index 6a1a7f7..e99c9a0 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/core/res/res/values-mcc334/config.xml
@@ -1,4 +1,7 @@
-/* Copyright 2019, The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2020, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -12,7 +15,9 @@
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
 */
+-->
 
-package android.media;
-
-parcelable AudioDeviceAddress;
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Show area update info settings in CellBroadcastReceiver and information in SIM status in Settings app -->
+    <bool name="config_showAreaUpdateInfoSettings">true</bool>
+</resources>
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/core/res/res/values-mcc732/config.xml
similarity index 60%
copy from media/java/android/media/AudioDeviceAddress.aidl
copy to core/res/res/values-mcc732/config.xml
index 6a1a7f7..e99c9a0 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/core/res/res/values-mcc732/config.xml
@@ -1,4 +1,7 @@
-/* Copyright 2019, The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2020, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -12,7 +15,9 @@
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
 */
+-->
 
-package android.media;
-
-parcelable AudioDeviceAddress;
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Show area update info settings in CellBroadcastReceiver and information in SIM status in Settings app -->
+    <bool name="config_showAreaUpdateInfoSettings">true</bool>
+</resources>
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/core/res/res/values-mcc740/config.xml
similarity index 60%
copy from media/java/android/media/AudioDeviceAddress.aidl
copy to core/res/res/values-mcc740/config.xml
index 6a1a7f7..e99c9a0 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/core/res/res/values-mcc740/config.xml
@@ -1,4 +1,7 @@
-/* Copyright 2019, The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2020, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -12,7 +15,9 @@
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
 */
+-->
 
-package android.media;
-
-parcelable AudioDeviceAddress;
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Show area update info settings in CellBroadcastReceiver and information in SIM status in Settings app -->
+    <bool name="config_showAreaUpdateInfoSettings">true</bool>
+</resources>
diff --git a/core/res/res/values-mk/strings.xml b/core/res/res/values-mk/strings.xml
index 2f75269..bb1d9c6 100644
--- a/core/res/res/values-mk/strings.xml
+++ b/core/res/res/values-mk/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Уредот ќе се избрише"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Апликацијата на администраторот не може да се користи. Уредот ќе се избрише сега.\n\nАко имате прашања, контактирајте со администраторот на организацијата."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Печатењето е оневозможено од <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Администраторот ги суспендирал личните апликации"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Допрете тука за да ја проверите усогласеноста со правилата."</string>
     <string name="me" msgid="6207584824693813140">"Јас"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опции на таблет"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опции на Android TV"</string>
@@ -1615,8 +1613,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Погрешно сте ја употребиле вашата шема на отклучување <xliff:g id="NUMBER_0">%1$d</xliff:g> пати. По <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешни обиди, ќе побараат од вас да го отклучите телефонот со користење сметка на е-пошта.\n\n Обидете се повторно за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунди."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Отстрани"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Услугата од преден план започната во заднина од <xliff:g id="PACKAGENAME">%1$s</xliff:g> нема да има дозола за „додека се користи“ во идните R-верзии. Погледнете на go/r-bg-fgs-restriction и испратете извештај за грешка."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Да го зголемиме звукот над препорачаното ниво?\n\nСлушањето звуци со голема јачина подолги периоди може да ви го оштети сетилото за слух."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Да се користи кратенка за „Пристапност“?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Кога е вклучена кратенката, ако ги притиснете двете копчиња за јачина на звук во времетраење од 3 секунди, ќе се стартува функција на пристапност.\n\n Тековна функција на пристапност:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Функцијата може да ја промените во „Поставки“ &gt; „Пристапност“."</string>
@@ -1854,11 +1851,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Апликацијата не е достапна"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликацијата <xliff:g id="APP_NAME_0">%1$s</xliff:g> не е достапна во моментов. Со ова управува <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Дознај повеќе"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Прекини ја паузата"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Да се вклучи работниот профил?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Вашите работни апликации, известувања, податоци и други функции на работниот профил ќе бидат вклучени"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Вклучи"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Апликацијата не е достапна"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> не е достапна во моментов."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Апликацијава е создадена за постара верзија на Android и може да не функционира правилно. Проверете за ажурирања или контактирајте со програмерот."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Проверка за ажурирање"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Имате нови пораки"</string>
@@ -2009,12 +2007,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Вклучи/исклучи поделен екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заклучен екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Слика од екранот"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени за пристапност"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Насловна лента на <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> е ставен во корпата ОГРАНИЧЕНИ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Службени"</string>
 </resources>
diff --git a/core/res/res/values-ml/strings.xml b/core/res/res/values-ml/strings.xml
index 25d7212..31edd8c 100644
--- a/core/res/res/values-ml/strings.xml
+++ b/core/res/res/values-ml/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"നിങ്ങളുടെ ഉപകരണം മായ്‌ക്കും"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"അഡ്‌മിൻ ആപ്പ് ഉപയോഗിക്കാനാകില്ല. നിങ്ങളുടെ ഉപകരണം ഇപ്പോൾ മായ്ക്കപ്പെടും.\n\nനിങ്ങൾക്ക് ചോദ്യങ്ങൾ ഉണ്ടെങ്കിൽ, നിങ്ങളുടെ സ്ഥാപനത്തിന്റെ അഡ്‌മിനെ ബന്ധപ്പെടുക."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> പ്രിന്റിംഗ് പ്രവർത്തനരഹിതമാക്കി."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"വ്യക്തഗത ആപ്പുകൾ ഒരു അഡ്‌മിൻ താൽക്കാലികമായി റദ്ദാക്കിയിരിക്കുന്നു"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"നയത്തിന് അനുസൃതമാണോ എന്ന് പരിശോധിക്കാൻ ഇവിടെ ടാപ്പ് ചെയ്യുക."</string>
     <string name="me" msgid="6207584824693813140">"ഞാന്‍"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ടാബ്‌ലെറ്റ് ഓപ്‌ഷനുകൾ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ടിവി ഓപ്‌ഷനുകൾ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"നിങ്ങളുടെ അൺലോക്ക് പാറ്റേൺ <xliff:g id="NUMBER_0">%1$d</xliff:g> തവണ തെറ്റായി വരച്ചു. <xliff:g id="NUMBER_1">%2$d</xliff:g> ശ്രമങ്ങൾ കൂടി വിജയിച്ചില്ലെങ്കിൽ, ഒരു ഇമെയിൽ അക്കൗണ്ട് ഉപയോഗിച്ച് ഫോൺ അൺലോക്ക് ചെയ്യാൻ നിങ്ങളോട് ആവശ്യപ്പെടും.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> സെക്കൻഡിനുള്ള വീണ്ടും ശ്രമിക്കുക."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"നീക്കംചെയ്യുക"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> എന്നതിൽ നിന്നുള്ള പശ്ചാത്തലത്തിൽ ആരംഭിച്ച് ഫോർഗ്രൗണ്ടിൽ വരുന്ന സേവനത്തിന് ഭാവി R ബിൽഡുകളിൽ, \'ഉപയോഗിക്കുമ്പോൾ മാത്രമുള്ള അനുമതി\' ഉണ്ടായിരിക്കില്ല. go/r-bg-fgs-restriction കണ്ട് ബഗ് റിപ്പോർട്ട് ഫയൽ ചെയ്യുക."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"മുകളിൽക്കൊടുത്തിരിക്കുന്ന ശുപാർശചെയ്‌ത ലെവലിലേക്ക് വോളിയം വർദ്ധിപ്പിക്കണോ?\n\nഉയർന്ന വോളിയത്തിൽ ദീർഘനേരം കേൾക്കുന്നത് നിങ്ങളുടെ ശ്രവണ ശേഷിയെ ദോഷകരമായി ബാധിക്കാം."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ഉപയോഗസഹായി കുറുക്കുവഴി ഉപയോഗിക്കണോ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"കുറുക്കുവഴി ഓണാണെങ്കിൽ, രണ്ട് വോളിയം ബട്ടണുകളും 3 സെക്കൻഡ് നേരത്തേക്ക് അമർത്തുന്നത് ഉപയോഗസഹായി ഫീച്ചർ ആരംഭിക്കും.\n\n നിലവിലെ  ഉപയോഗസഹായി ഫീച്ചർ:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ക്രമീകരണം &gt; ഉപയോഗസഹായി എന്നതിൽ ഏത് സമയത്തും നിങ്ങൾക്ക് ഫീച്ചർ മാറ്റാവുന്നതാണ്."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ആപ്പ് ലഭ്യമല്ല"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല. <xliff:g id="APP_NAME_1">%2$s</xliff:g> ആണ് ഇത് മാനേജ് ചെയ്യുന്നത്."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"കൂടുതലറിയുക"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ആപ്പ് പുനഃരാംഭിക്കുക"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ഔദ്യോഗിക പ്രൊഫൈൽ ഓണാക്കണോ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"നിങ്ങളുടെ ഔദ്യോഗിക ആപ്പുകൾ, അറിയിപ്പുകൾ, ഡാറ്റ, മറ്റ് ഔദ്യോഗിക പ്രൊഫൈൽ ഫീച്ചറുകൾ എന്നിവ ഓണാക്കും"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ഓണാക്കുക"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ആപ്പ് ലഭ്യമല്ല"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ഇപ്പോൾ ലഭ്യമല്ല."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ഈ ആപ്പ് Android-ന്റെ പഴയ പതിപ്പിനായി നിർമ്മിച്ചിരിക്കുന്നതിനാൽ ശരിയായി പ്രവർത്തിച്ചേക്കില്ല. അപ്‌ഡേറ്റിനായി പരിശോധിക്കുക, അല്ലെങ്കിൽ ഡെവലപ്പറുമായി ബന്ധപ്പെടുക."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"അപ്‌ഡേറ്റിനായി പരിശോധിക്കുക"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"നിങ്ങൾക്ക് പുതിയ സന്ദേശങ്ങൾ ഉണ്ട്"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"സ്‌ക്രീൻ വിഭജന മോഡ് മാറ്റുക"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ലോക്ക് സ്‌ക്രീൻ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"സ്ക്രീൻഷോട്ട്"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ഉപയോഗസഹായി മെനു"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> എന്നതിന്റെ അടിക്കുറിപ്പ് ബാർ."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> നിയന്ത്രിത ബക്കറ്റിലേക്ക് നീക്കി"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"വ്യക്തിപരമായത്"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ജോലിസ്ഥലം"</string>
 </resources>
diff --git a/core/res/res/values-mn/strings.xml b/core/res/res/values-mn/strings.xml
index 3acdb72..eb61a46 100644
--- a/core/res/res/values-mn/strings.xml
+++ b/core/res/res/values-mn/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Таны төхөөрөмж устах болно."</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Админ аппыг ашиглах боломжгүй. Таны төхөөрөмжийг одоо устгана.\n\nХэрэв танд асуулт байгаа бол байгууллагынхаа админтай холбогдоно уу."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> хэвлэх үйлдлийг идэвхгүй болгосон."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Хувийн аппуудыг админ түр хаасан байна"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Удирдамжийн нийцлийг шалгахын тулд энд товшино уу."</string>
     <string name="me" msgid="6207584824693813140">"Би"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Таблетын сонголтууд"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ТВ-н сонголт"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Та тайлах хээг <xliff:g id="NUMBER_0">%1$d</xliff:g> удаа буруу зурлаа. <xliff:g id="NUMBER_1">%2$d</xliff:g> удаа дахин буруу оруулбал, та утсаа тайлахын тулд имэйл бүртгэлээ ашиглах шаардлагатай болно.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> секундын дараа дахин оролдоно уу."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Устгах"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g>-н дэлгэц дээрх үйлчилгээг эхлүүлдэг дэвсгэр нь цаашид R хийцийн ашиглах үеийн зөвшөөрөлгүй болно. go/r-bg-fgs-restriction-г үзэж, алдааны мэдээ илгээнэ үү."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Дууг санал болгосноос чанга болгож өсгөх үү?\n\nУрт хугацаанд чанга хөгжим сонсох нь таны сонсголыг муутгаж болно."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Хүртээмжийн товчлолыг ашиглах уу?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Товчлолыг асаасан үед дуун товчлуурыг 3 секунд дарснаар хүртээмжийн онцлогийг эхлүүлнэ.\n\n Одоогийн хүртээмжийн онцлог:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Онцлогийг Тохиргоо &gt; Хүртээмж хэсэгт өөрчлөх боломжтой."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Апп боломжгүй байна"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> одоогоор боломжгүй байна. Үүнийг <xliff:g id="APP_NAME_1">%2$s</xliff:g>-р удирддаг."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Дэлгэрэнгүй үзэх"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Аппыг түр зогсоохоо болих"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ажлын профайлыг асаах уу?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Таны ажлын апп, мэдэгдэл, өгөгдөл болон бусад ажлын профайлын онцлогийг асаана"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Асаах"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Апп боломжгүй байна"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> яг одоо боломжгүй байна."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Энэ аппыг Андройдын хуучин хувилбарт зориулсан бөгөөд буруу ажиллаж болзошгүй. Шинэчлэлтийг шалгаж эсвэл хөгжүүлэгчтэй холбогдоно уу."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Шинэчлэлтийг шалгах"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Танд шинэ зурвасууд байна"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Дэлгэц хуваахыг унтраах/асаах"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Дэлгэцийг түгжих"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Дэлгэцийн зураг дарах"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Хандалтын цэс"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>-н гарчгийн талбар."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>-г ХЯЗГААРЛАСАН сагс руу орууллаа"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Хувийн"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Ажил"</string>
 </resources>
diff --git a/core/res/res/values-mr/strings.xml b/core/res/res/values-mr/strings.xml
index ff9f3e7..0a8f4af 100644
--- a/core/res/res/values-mr/strings.xml
+++ b/core/res/res/values-mr/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"तुमचे डिव्हाइस मिटविले जाईल"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"प्रशासक अ‍ॅप वापरता येणार नाही. तुमचे डिव्हाइस आता साफ केले जाईल.\n\nतुम्हाला कुठलेही प्रश्न असल्यास, तुमच्या संस्थेच्या प्रशासकाशी संपर्क साधा."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> नी प्रिंट करणे बंद केले आहे."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ॲडमिनद्वारे वैयक्तिक ॲप निलंबित केले गेले आहेत"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"धोरणाचे पालन तपासण्यासाठी येथे टॅप करा."</string>
     <string name="me" msgid="6207584824693813140">"मी"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"टॅबलेट पर्याय"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV पर्याय"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"तुम्ही तुमचा अनलॉक पॅटर्न <xliff:g id="NUMBER_0">%1$d</xliff:g> वेळा अयोग्यपणे काढला आहे. आणखी <xliff:g id="NUMBER_1">%2$d</xliff:g> अयशस्वी प्रयत्नांनंतर, तुम्हाला ईमेल खाते वापरून तुमचा फोन अनलॉक करण्यास सांगितले जाईल.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकंदांमध्ये पुन्हा प्रयत्न करा."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"काढा"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> कडून बॅकग्राउंडने फोरग्राउंडमध्ये सुरू केलेल्या सेवेला भविष्यातील आर बिल्डमध्ये वापर करते वेळची परवानगी नसेल. कृपया go/r-bg-fgs-restriction पहा आणि बगची तक्रार नोंदवा."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"शिफारस केलेल्‍या पातळीच्या वर आवाज वाढवायचा?\n\nउच्च आवाजात दीर्घ काळ ऐकण्‍याने आपल्‍या श्रवणशक्तीची हानी होऊ शकते."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"प्रवेशयोग्यता शॉर्टकट वापरायचा?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"शॉर्टकट चालू असताना, दोन्ही आवाज बटणे 3 सेकंद दाबल्याने प्रवेशयोग्यता वैशिष्ट्य सुरू होईल.\n\n वर्तमान प्रवेशयोग्यता वैशिष्ट्य:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n तुम्ही सेटिंग्ज &gt; प्रवेशयोग्यता मध्ये वैशिष्ट्य बदलू शकता."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"अ‍ॅप उपलब्ध नाही"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> आत्ता उपलब्ध नाही. हे <xliff:g id="APP_NAME_1">%2$s</xliff:g> कडून व्यवस्थापित केले जाते."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"अधिक जाणून घ्या"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"अ‍ॅप उघडा"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल चालू ठेवायची?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"तुमची कार्य अ‍ॅप्स, सूचना, डेटा आणि अन्य कार्य प्रोफाइल वैशिष्ट्ये चालू केली जातील"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"चालू करा"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ॲप उपलब्ध नाही"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> आता उपलब्ध नाही."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"हे अ‍ॅप Android च्या जुन्या आवृत्ती साठी तयार करण्यात आले होते आणि योग्यरितीने कार्य करू शकणार नाही. अपडेट आहेत का ते तपासून पाहा, किंवा डेव्हलपरशी संपर्क साधण्याचा प्रयत्न करा."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"अपडेट आहे का ते तपासा"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"आपल्याकडे नवीन मेसेज आहेत"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रीन टॉगल करा"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"स्‍क्रीन लॉक करा"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रीनशॉट"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"अ‍ॅक्सेसिबिलिटी मेनू"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> चा शीर्षक बार."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> हे प्रतिबंधित बादलीमध्ये ठेवण्यात आले आहे"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"वैयक्तिक"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ऑफिस"</string>
 </resources>
diff --git a/core/res/res/values-ms/strings.xml b/core/res/res/values-ms/strings.xml
index e436408..59c7d65 100644
--- a/core/res/res/values-ms/strings.xml
+++ b/core/res/res/values-ms/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Peranti anda akan dipadam"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Apl pentadbir tidak dapat digunakan. Peranti anda akan dipadamkan sekarang.\n\nJika anda ingin mengemukakan soalan, hubungi pentadbir organisasi anda."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Pencetakan dilumpuhkan oleh <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Apl peribadi telah digantung oleh pentadbir"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Ketik di sini untuk menyemak pematuhan dasar."</string>
     <string name="me" msgid="6207584824693813140">"Saya"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Pilihan tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Pilihan Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Anda telah tersilap lukis corak buka kunci sebanyak <xliff:g id="NUMBER_0">%1$d</xliff:g> kali. Selepas <xliff:g id="NUMBER_1">%2$d</xliff:g> lagi percubaan yang tidak berjaya, anda akan diminta membuka kunci telefon anda menggunakan log masuk Google anda.\n\n Cuba lagi dalam <xliff:g id="NUMBER_2">%3$d</xliff:g> saat."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Alih keluar"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Perkhidmatan latar depan dimulakan latar belakang daripada <xliff:g id="PACKAGENAME">%1$s</xliff:g> tidak akan mempunyai kebenaran semasa-dalam-penggunaan dalam binaan R akan datang. Sila lihat go/r-bg-fgs-restriction dan failkan laporan pepijat."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Naikkan kelantangan melebihi paras yang disyokorkan?\n\nMendengar pada kelantangan yang tinggi untuk tempoh yang lama boleh merosakkan pendengaran anda."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gunakan Pintasan Kebolehaksesan?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Apabila pintasan dihidupkan, tindakan menekan kedua-dua butang kelantangan selama 3 saat akan memulakan ciri kebolehaksesan.\n\n Ciri kebolehaksesan semasa:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Anda boleh menukar ciri itu dalam Tetapan &gt; Kebolehaksesan."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Apl tidak tersedia"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> tidak tersedia sekarang. Ini diurus oleh <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Ketahui lebih lanjut"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Nyahjeda apl"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Hidupkan profil kerja?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Apl kerja, pemberitahuan, data dan ciri profil kerja anda yang lain akan dihidupkan"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Hidupkan"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Apl tidak tersedia"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> tidak tersedia sekarang."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Apl ini dibina untuk versi Android yang lebih lama dan mungkin tidak berfungsi dengan betul. Cuba semak kemas kini atau hubungi pembangun."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Semak kemas kini"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Anda mempunyai mesej baharu"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Togol Skrin Pisah"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrin Kunci"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Tangkapan skrin"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Kebolehaksesan"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bar kapsyen <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> telah diletakkan dalam baldi TERHAD"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Peribadi"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Kerja"</string>
 </resources>
diff --git a/core/res/res/values-my/strings.xml b/core/res/res/values-my/strings.xml
index 56f49c2..b3efcb1 100644
--- a/core/res/res/values-my/strings.xml
+++ b/core/res/res/values-my/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"သင့်ကိရိယာအား ပယ်ဖျက်လိမ့်မည်"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"စီမံခန့်ခွဲမှု အက်ပ်ကို သုံး၍မရပါ။ သင်၏ စက်ပစ္စည်းအတွင်းရှိ အရာများကို ဖျက်လိုက်ပါမည်\n\nမေးစရာများရှိပါက သင့်အဖွဲ့အစည်း၏ စီမံခန့်ခွဲသူကို ဆက်သွယ်ပါ။"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> က ပုံနှိပ်ထုတ်ယူခြင်းကို ပိတ်ထားသည်။"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ကိုယ်ပိုင်အက်ပ်များကို စီမံခန့်ခွဲသူက ဆိုင်းငံ့ထားသည်"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"မူဝါဒလိုက်နာမှုကို စစ်ဆေးရန် ဤနေရာကို တို့ပါ။"</string>
     <string name="me" msgid="6207584824693813140">"ကျွန်ုပ်"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletဆိုင်ရာရွေးချယ်မှုများ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ရွေးချယ်စရာများ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"သင် ပုံဖော်၍သော့ဖွင့်ခြင်းကို <xliff:g id="NUMBER_0">%1$d</xliff:g> အကြိမ် မှန်ကန်စွာ မပြုလုပ်နိုင်ပါ။ နောက်ထပ် <xliff:g id="NUMBER_1">%2$d</xliff:g> အကြိမ် မမှန်ကန်ပါက သင့်ဖုန်းအား အီးမေးလ်အသုံးပြု၍ သော့ဖွင့်ရန် တောင်းဆိုပါလိမ့်မည်။ \n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> စက္ကန့်အကြာတွင် ပြန်လည် ကြိုးစားပါ"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ဖယ်ရှားရန်"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> တွင် မှ စတင်သည့် foreground ဝန်ဆောင်မှုသည် နောက်ထွက်ရှိမည့် R စုပေါင်းစပ်ပေါင်း ပရိုဂရမ်များတွင် အသုံးပြုစဉ်အတွင်း ခွင့်ပြုချက် ရရှိမည်မဟုတ်ပါ။ go/r-bg-fgs-ကန့်သတ်ချက်များကို ကြည့်ပြီး အမှားသတင်းပို့ချက်တစ်ခု တင်သွင်းပါ။"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"အသံကို အကြံပြုထားသည့် ပမာဏထက် မြှင့်ပေးရမလား?\n\nအသံကို မြင့်သည့် အဆင့်မှာ ကြာရှည်စွာ နားထောင်ခြင်းက သင်၏ နားကို ထိခိုက်စေနိုင်သည်။"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"အများသုံးစွဲနိုင်မှု ဖြတ်လမ်းလင့်ခ်ကို အသုံးပြုလိုပါသလား။"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ဖြတ်လမ်းလင့်ခ်ကို ဖွင့်ထားစဉ် အသံအတိုးအလျှော့ခလုတ် နှစ်ခုစလုံးကို ၃ စက္ကန့်ခန့် ဖိထားခြင်းဖြင့် အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှုကို ဖွင့်နိုင်သည်။\n\n လက်ရှိ အများသုံးစွဲနိုင်မှုဆိုင်ရာ ဝန်ဆောင်မှု−\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ဝန်ဆောင်မှုကို ဆက်တင်များ &gt; အများသုံးစွဲနိုင်မှုတွင် ပြောင်းလဲနိုင်ပါသည်။"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"အက်ပ်ကို မရရှိနိုင်ပါ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ကို လောလောဆယ် မရနိုင်ပါ။ ၎င်းကို <xliff:g id="APP_NAME_1">%2$s</xliff:g> က စီမံထားပါသည်။"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ပိုမိုလေ့လာရန်"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"အက်ပ်ကို ခဏမရပ်တော့ရန်"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"အလုပ်ပရိုဖိုင် ဖွင့်လိုသလား။"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"သင်၏ အလုပ်အက်ပ်၊ အကြောင်းကြားချက်၊ ဒေတာနှင့် အခြားအလုပ်ပရိုဖိုင် ဝန်ဆောင်မှုများကို ဖွင့်လိုက်ပါမည်"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ဖွင့်ပါ"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"အက်ပ်ကို မရနိုင်ပါ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ကို ယခု မရနိုင်ပါ။"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ဤအက်ပ်ကို Android ဗားရှင်းဟောင်းအတွက် ပြုလုပ်ထားခြင်းဖြစ်ပြီး ပုံမှန်အလုပ်မလုပ်နိုင်ပါ။ အပ်ဒိတ်များအတွက် ရှာကြည့်ပါ သို့မဟုတ် ဆော့ဖ်ဝဲအင်ဂျင်နီယာကို ဆက်သွယ်ပါ။"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"အပ်ဒိတ်စစ်ရန်"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"သင့်ထံတွင် စာအသစ်များရောက်နေသည်"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"မျက်နှာပြင် ခွဲ၍ပြသခြင်းကို နှိပ်ပါ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"လော့ခ်မျက်နှာပြင်"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ဖန်သားပြင်ဓာတ်ပုံ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"အများသုံးစွဲနိုင်မှု မီနူး"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>၏ ခေါင်းစီး ဘား။"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ကို တားမြစ်ထားသော သိမ်းဆည်းမှုအတွင်းသို့ ထည့်ပြီးပါပြီ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ကိုယ်ပိုင်"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"အလုပ်"</string>
 </resources>
diff --git a/core/res/res/values-nb/strings.xml b/core/res/res/values-nb/strings.xml
index bb3d52f..5a3a588 100644
--- a/core/res/res/values-nb/strings.xml
+++ b/core/res/res/values-nb/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Enheten blir slettet"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administratorappen kan ikke brukes. Enheten din blir nå tømt.\n\nTa kontakt med administratoren for organisasjonen din hvis du har spørsmål."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> har slått av utskrift."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Personlige apper er sperret midlertidig av en administrator"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Trykk her for å sjekke overholdelse av retningslinjer."</string>
     <string name="me" msgid="6207584824693813140">"Meg"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Innstillinger for nettbrettet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV-alternativer"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Du har tegnet opplåsningsmønsteret feil <xliff:g id="NUMBER_0">%1$d</xliff:g> ganger. Etter ytterligere <xliff:g id="NUMBER_1">%2$d</xliff:g> gale forsøk, blir du bedt om å låse opp telefonen via en e-postkonto.\n\n Prøv på nytt om <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunder."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Fjern"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Forgrunnstjenesten fra <xliff:g id="PACKAGENAME">%1$s</xliff:g>, som ble startet i bakgrunnen, kommer ikke til å ha tillatelser mens den er i bruk i fremtidige R-delversjoner. Les go/r-bg-fgs-restriction og send inn en feilrapport."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vil du øke volumet til over anbefalt nivå?\n\nHvis du hører på et høyt volum over lengre perioder, kan det skade hørselen din."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vil du bruke tilgjengelighetssnarveien?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Når snarveien er på, starter en tilgjengelighetsfunksjon når du trykker inn begge volumknappene i tre sekunder.\n\n Nåværende tilgjengelighetsfunksjon:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Du kan endre funksjonen i Innstillinger &gt; Tilgjengelighet."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Appen er ikke tilgjengelig"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> er ikke tilgjengelig akkurat nå. Dette administreres av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Finn ut mer"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Opphev pause for appen"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Vil du slå på jobbprofilen?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappene dine samt varsler, data og andre funksjoner i jobbprofilen din blir slått på"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Slå på"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Appen er ikke tilgjengelig"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> er ikke tilgjengelig for øyeblikket."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Denne appen er utviklet for en eldre versjon av Android og fungerer kanskje ikke som den skal. Prøv å se etter oppdateringer, eller kontakt utvikleren."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Se etter oppdateringer"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Du har nye meldinger"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Slå delt skjerm av/på"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låseskjerm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skjermdump"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tilgjengelighet-meny"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Tekstingsfelt i <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> er blitt plassert i TILGANGSBEGRENSET-toppmappen"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personlig"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Jobb"</string>
 </resources>
diff --git a/core/res/res/values-ne/strings.xml b/core/res/res/values-ne/strings.xml
index b3d6cde..e95866b 100644
--- a/core/res/res/values-ne/strings.xml
+++ b/core/res/res/values-ne/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"तपाईंको यन्त्र मेटिनेछ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"प्रशासकको अनुप्रयोग प्रयोग गर्न मिल्दैन। तपाईंको यन्त्रको डेटा अब मेटाइने छ।\n\nतपाईंसँग प्रश्नहरू भएका खण्डमा आफ्नो संगठनका प्रशासकसँग सम्पर्क गर्नुहोस्।"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ले छाप्ने कार्यलाई असक्षम पार्यो।"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"व्यक्तिगत एपहरू एकजना प्रशासकले निलम्बन गरिरहनुभएको छ"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"नीति पालनाबारे जाँच गर्न यहाँ ट्याप गर्नुहोस्।"</string>
     <string name="me" msgid="6207584824693813140">"मलाई"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ट्याब्लेट विकल्पहरू"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV सम्बन्धी विकल्पहरू"</string>
@@ -1619,8 +1617,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"तपाईँले आफ्नो अनलक ढाँचा गलत रूपमा <xliff:g id="NUMBER_0">%1$d</xliff:g> पटक तान्नु भएको छ। <xliff:g id="NUMBER_1">%2$d</xliff:g> धेरै असफल प्रयासहरूपछि, तपाईँलाई एउटा इमेल खाताको प्रयोग गरेर तपाईँको फोन अनलक गर्न सोधिने छ।\n\n फेरि <xliff:g id="NUMBER_2">%3$d</xliff:g> सेकेन्डमा प्रयास गर्नुहोस्।"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"हटाउनुहोस्"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> को पृष्ठभूमिबाट सुरु गरिने अग्रभूमि सेवाका भविष्यमा आउने R बिल्डहरूमा चलाउँदै गर्दा प्रयोग गर्ने अनुमतिको दिइने छैन। कृपया go/r-bg-fgs-restriction हेर्नुहोस् र कुनै बगसम्बन्धी रिपोर्ट फाइल गर्नुहोस्।"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"सिफारिस तहभन्दा आवाज ठुलो गर्नुहुन्छ?\n\nलामो समय सम्म उच्च आवाजमा सुन्दा तपाईँको सुन्ने शक्तिलाई हानी गर्न सक्छ।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"पहुँच सम्बन्धी सर्टकट प्रयोग गर्ने हो?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"सर्टकट सक्रिय हुँदा, भोल्युमका दुवै बटनहरूलाई ३ सेकेन्डसम्म थिची राख्नाले पहुँच सम्बन्धी कुनै सुविधा सुरु हुनेछ।\n\n हाल व्यवहारमा रहेको पहुँच सम्बन्धी सुविधा:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n तपाईं सेटिङहरू अन्तर्गतको पहुँच सम्बन्धी विकल्पमा गई उक्त सुविधालाई बदल्न सक्नुहुन्छ।"</string>
@@ -1858,11 +1855,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"अनुप्रयोग उपलब्ध छैन"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> अहिले उपलब्ध छैन। यो <xliff:g id="APP_NAME_1">%2$s</xliff:g> द्वारा व्यवस्थित छ।"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"थप जान्नुहोस्"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"एपको पज हटाउनुहोस्"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"कार्य प्रोफाइल सक्रिय गर्ने?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"तपाईंका कार्यसम्बन्धी अनुप्रयोग, सूचना, डेटा र कार्य प्रोफाइलका अन्य सुविधाहरू सक्रिय गरिने छन्‌"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"सक्रिय गर्नुहोस्"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"अनुप्रयोग उपलब्ध छैन"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> अहिले उपलब्ध छैन।"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"यो अनुप्रयोग Android को पुरानो संस्करणका लागि बनाइएको हुनाले यसले सही ढङ्गले काम नगर्न सक्छ। अद्यावधिकहरू उपलब्ध छन् वा छैनन् भनी जाँच गरी हेर्नुहोस् वा यसको विकासकर्तालाई सम्पर्क गर्नुहोस्।"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"अद्यावधिक उपलब्ध छ वा छैन भनी जाँच गर्नुहोस्"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"तपाईंलाई नयाँ सन्देश आएको छ"</string>
@@ -2013,12 +2011,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"विभाजित स्क्रिन टगल गर्नुहोस्"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"लक स्क्रिन"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"स्क्रिनसट"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"पहुँचसम्बन्धी मेनु"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> को क्याप्सन बार।"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> लाई प्रतिबन्धित बाल्टीमा राखियो"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"व्यक्तिगत"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"काम"</string>
 </resources>
diff --git a/core/res/res/values-night/colors.xml b/core/res/res/values-night/colors.xml
index c5e72f0..7f77e6c 100644
--- a/core/res/res/values-night/colors.xml
+++ b/core/res/res/values-night/colors.xml
@@ -32,4 +32,8 @@
     <color name="chooser_row_divider">@color/list_divider_color_dark</color>
     <color name="chooser_gradient_background">@color/loading_gradient_background_color_dark</color>
     <color name="chooser_gradient_highlight">@color/loading_gradient_highlight_color_dark</color>
+
+    <color name="resolver_tabs_active_color">#FF8AB4F8</color>
+    <color name="resolver_empty_state_text">#FFFFFF</color>
+    <color name="resolver_empty_state_icon">#FFFFFF</color>
 </resources>
diff --git a/core/res/res/values-nl/strings.xml b/core/res/res/values-nl/strings.xml
index 47de950..e524c1b 100644
--- a/core/res/res/values-nl/strings.xml
+++ b/core/res/res/values-nl/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Je apparaat wordt gewist"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"De beheer-app kan niet worden gebruikt. Je apparaat wordt nu gewist.\n\nNeem contact op met de beheerder van je organisatie als je vragen hebt."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Afdrukken uitgeschakeld door <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Persoonlijke apps zijn opgeschort door een beheerder"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tik hier om beleidsnaleving te controleren."</string>
     <string name="me" msgid="6207584824693813140">"Ik"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tabletopties"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opties voor Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Je hebt je ontgrendelingspatroon <xliff:g id="NUMBER_0">%1$d</xliff:g> keer onjuist getekend. Na nog eens <xliff:g id="NUMBER_1">%2$d</xliff:g> mislukte pogingen wordt u gevraagd je telefoon te ontgrendelen via een e-mailaccount.\n\n Probeer het over <xliff:g id="NUMBER_2">%3$d</xliff:g> seconden opnieuw."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Verwijderen"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"De op de achtergrond gestarte voorgrondservice van <xliff:g id="PACKAGENAME">%1$s</xliff:g> heeft geen rechten tijdens gebruik in toekomstige R-builds. Ga naar go/r-bg-fgs-restriction en dien een bugrapport in."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Volume verhogen tot boven het aanbevolen niveau?\n\nAls je langere tijd op hoog volume naar muziek luistert, raakt je gehoor mogelijk beschadigd."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Snelkoppeling toegankelijkheid gebruiken?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Wanneer de snelkoppeling is ingeschakeld, kun je drie seconden op beide volumeknoppen drukken om een toegankelijkheidsfunctie te starten.\n\n Huidige toegankelijkheidsfunctie:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Je kunt de functie wijzigen in Instellingen &gt; Toegankelijkheid."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"App is niet beschikbaar"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> is nu niet beschikbaar. Dit wordt beheerd door <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Meer info"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"App niet meer onderbreken"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Werkprofiel inschakelen?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Je werk-apps, meldingen, gegevens en andere functies van je werkprofiel worden uitgeschakeld"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Inschakelen"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"App is niet beschikbaar"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> is momenteel niet beschikbaar."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Deze app is ontwikkeld voor een oudere versie van Android en werkt mogelijk niet op de juiste manier. Controleer op updates of neem contact op met de ontwikkelaar."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Controleren op update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Je hebt nieuwe berichten"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Gesplitst scherm schakelen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Scherm vergrendelen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Toegankelijkheidsmenu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ondertitelingsbalk van <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> is in de bucket RESTRICTED geplaatst"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Persoonlijk"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Werk"</string>
 </resources>
diff --git a/core/res/res/values-or/strings.xml b/core/res/res/values-or/strings.xml
index 1242188..246b4d9 100644
--- a/core/res/res/values-or/strings.xml
+++ b/core/res/res/values-or/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ଆପଣଙ୍କ ଡିଭାଇସ୍‍ ବର୍ତ୍ତମାନ ଲିଭାଯିବ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ଆଡମିନ୍‍ ଆପ୍‍‍ ବ୍ୟବହାର କରାଯାଇପାରିବ ନାହିଁ। ଆପଣଙ୍କ ଡିଭାଇସ୍‍‌ର ସମସ୍ତ ଡାଟାକୁ ବର୍ତ୍ତମାନ ଲିଭାଇଦିଆଯିବ। \n\nଯଦି ଆପଣଙ୍କର କୌଣସି ପ୍ରଶ୍ନ ରହିଥାଏ, ଆପଣଙ୍କ ସଂସ୍ଥାର ଆଡମିନ୍‌ଙ୍କ ସହ ଯୋଗାଯୋଗ କରନ୍ତୁ।"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ଦ୍ଵାରା ପ୍ରିଣ୍ଟିଙ୍ଗ ଅକ୍ଷମ କରାଯାଇଛି"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ବ୍ୟକ୍ତିଗତ ଆପଗୁଡ଼ିକୁ ଆଡମିନଙ୍କ ଦ୍ୱାରା ସାମୟିକ ଭାବରେ ବନ୍ଦ କରାଯାଇଛି"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ନୀତି ଅନୁପାଳନର ଯାଞ୍ଚ କରିବା ପାଇଁ ଏଠାରେ ଟାପ୍ କରନ୍ତୁ।"</string>
     <string name="me" msgid="6207584824693813140">"ମୁଁ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ଟାବଲେଟ୍‌ର ବିକଳ୍ପ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android ଟିଭିର ବିକଳ୍ପଗୁଡ଼ିକ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ଆପଣଙ୍କ ଅନଲକ୍‍ ପାଟର୍ନକୁ ଆପଣ <xliff:g id="NUMBER_0">%1$d</xliff:g> ଥର ଭୁଲ ଭାବେ ଅଙ୍କନ କରିଛନ୍ତି। ଆଉ <xliff:g id="NUMBER_1">%2$d</xliff:g>ଟି ଭୁଲ ପ୍ରୟାସ ପରେ ଏକ ଇମେଲ୍‍ ଆକାଉଣ୍ଟ ବ୍ୟବହାର କରି ନିଜ ଫୋନ୍‌କୁ ଅନଲକ୍‌ କରିବା ପାଇଁ କୁହାଯିବ।\n\n<xliff:g id="NUMBER_2">%3$d</xliff:g> ସେକେଣ୍ଡ ପରେ ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ବାହାର କରନ୍ତୁ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"ପୃଷ୍ଠଭୂମିରେ <xliff:g id="PACKAGENAME">%1$s</xliff:g>ରୁ ଆରମ୍ଭ ହୋଇଥିବା ସମ୍ମୁଖଭାଗ ସେବା ପାଇଁ ଭବିଷ୍ୟତର R ବିଲ୍ଡଗୁଡ଼ିକରେ ବ୍ୟବହାର କରାଯିବା ସମୟରେ ଅନୁମତି ସୁବିଧା ରହିବ ନାହିଁ। ଦୟାକରି go/r-bg-fgs-restriction ଦେଖନ୍ତୁ ଏବଂ ଏକ ବଗରିପୋର୍ଟ ଫାଇଲ୍ କରନ୍ତୁ।"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ମାତ୍ରା ବଢ଼ାଇ ସୁପାରିଶ ସ୍ତର ବଢ଼ାଉଛନ୍ତି? \n\n ଲମ୍ବା ସମୟ ପର୍ଯ୍ୟନ୍ତ ଉଚ୍ଚ ଶବ୍ଦରେ ଶୁଣିଲେ ଆପଣଙ୍କ ଶ୍ରବଣ ଶକ୍ତି ଖରାପ ହୋଇପାରେ।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ଆକ୍ସେସବିଲିଟି ଶର୍ଟକଟ୍‍ ବ୍ୟବହାର କରିବେ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ସର୍ଟକଟ୍‌ ଅନ୍‌ ଥିବା ବେଳେ, ଉଭୟ ଭଲ୍ୟୁମ୍‍ ବଟନ୍‍ 3 ସେକେଣ୍ଡ ପାଇଁ ଦବାଇବା ଦ୍ୱାରା ଆକ୍ସେସବିଲିଟି ବୈଶିଷ୍ଟ ଆରମ୍ଭ ହେବ।\n\n ସମ୍ପ୍ରତି ଆକ୍ସେସବିଲିଟି ବୈଶିଷ୍ଟ୍ୟ:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ସେଟିଙ୍ଗ ଓ ଆକ୍ସେସବିଲିଟିରେ ଆପଣ ବୈଶିଷ୍ଟ୍ୟ ବଦଳାଇ ପାରିବେ।"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ଆପ୍‌ ଉପଲବ୍ଧ ନାହିଁ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"ବର୍ତ୍ତମାନ <xliff:g id="APP_NAME_0">%1$s</xliff:g> ଉପଲବ୍ଧ ନାହିଁ। ଏହା <xliff:g id="APP_NAME_1">%2$s</xliff:g> ଦ୍ଵାରା ପରିଚାଳିତ ହେଉଛି।"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ଅଧିକ ଜାଣନ୍ତୁ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ଆପ୍ ଅନପଜ୍ କରନ୍ତୁ"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ୱର୍କ ପ୍ରୋଫାଇଲ୍‌କୁ ଚାଲୁ କରିବେ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ଆପଣଙ୍କର କାର୍ଯ୍ୟକାରୀ ଆପ୍‌, ବିଜ୍ଞପ୍ତି, ଡାଟା ଓ ଅନ୍ୟ ୱର୍କ ପ୍ରୋଫାଇଲ୍‌ଗୁଡ଼ିକ ଚାଲୁ ହୋଇଯିବ"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ଅନ୍ କରନ୍ତୁ"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ଆପ୍ ଉପଲବ୍ଧ ନାହିଁ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ବର୍ତ୍ତମାନ ଉପଲବ୍ଧ ନାହିଁ।"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ଏହି ଆପ୍‌କୁ Androidର ପୁରୁଣା ଭର୍ସନ୍ ପାଇଁ ନିର୍ମାଣ କରାଯାଇଥିଲା ଏବଂ ଠିକ୍ ଭାବେ କାମ କରିନପାରେ। ଏହାପାଇଁ ଅପଡେଟ୍‌ ଅଛି କି ନାହିଁ ଯାଞ୍ଚ କରନ୍ତୁ କିମ୍ବା ଡେଭେଲପର୍‌ଙ୍କ ସହିତ ସମ୍ପର୍କ କରନ୍ତୁ।"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ଅପଡେଟ୍‌ ପାଇଁ ଯାଞ୍ଚ କରନ୍ତୁ"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"ଆପଣଙ୍କ ପାଖରେ ନୂଆ ମେସେଜ୍‍ ରହିଛି"</string>
@@ -1989,8 +1987,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> ସ୍ପ୍ରେଡ୍‌ସିଟ୍"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"ଉପସ୍ଥାପନା"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> ଉପସ୍ଥାପନା"</string>
-    <!-- no translation found for bluetooth_airplane_mode_toast (2066399056595768554) -->
-    <skip />
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"ଏୟାରପ୍ଲେନ୍ ମୋଡରେ ବ୍ଲୁଟୁଥ୍ ଚାଲୁ ରହିବ"</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"ଲୋଡ୍ ହେଉଛି"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="other"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g>ଟି ଫାଇଲ୍</item>
@@ -2008,13 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ଦୁଇଟି ସ୍କ୍ରିନ୍ ମଧ୍ୟରେ ଟୋଗଲ୍ କରନ୍ତୁ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ସ୍କ୍ରିନ୍ ଲକ୍ କରନ୍ତୁ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ସ୍କ୍ରି‍ନ୍‍ସଟ୍ ନିଅନ୍ତୁ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ଆକ୍ସେସିବିଲିଟୀ ମେନୁ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>ର କ୍ୟାପ୍ସନ୍ ବାର୍।"</string>
-    <!-- no translation found for as_app_forced_to_restricted_bucket (8233871289353898964) -->
-    <skip />
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>କୁ ପ୍ରତିବନ୍ଧିତ ବକେଟରେ ରଖାଯାଇଛି"</string>
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ବ୍ୟକ୍ତିଗତ"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"କାର୍ଯ୍ୟ"</string>
 </resources>
diff --git a/core/res/res/values-pa/strings.xml b/core/res/res/values-pa/strings.xml
index b6513c3..3d68832 100644
--- a/core/res/res/values-pa/strings.xml
+++ b/core/res/res/values-pa/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ਤੁਹਾਡਾ ਡੀਵਾਈਸ ਮਿਟਾਇਆ ਜਾਏਗਾ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ਪ੍ਰਸ਼ਾਸਕ ਐਪ ਵਰਤੀ ਨਹੀਂ ਜਾ ਸਕਦੀ। ਹੁਣ ਤੁਹਾਡੇ ਡੀਵਾਈਸ ਦਾ ਡਾਟਾ ਮਿਟਾਇਆ ਜਾਵੇਗਾ।\n\nਜੇਕਰ ਤੁਹਾਡੇ ਕੋਲ ਕੋਈ ਸਵਾਲ ਹਨ, ਤਾਂ ਆਪਣੀ ਸੰਸਥਾ ਦੇ ਪ੍ਰਸ਼ਾਸਕ ਨੂੰ ਸੰਪਰਕ ਕਰੋ।"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ਵੱਲੋਂ ਪ੍ਰਿੰਟ ਕਰਨਾ ਬੰਦ ਕੀਤਾ ਗਿਆ।"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ਨਿੱਜੀ ਐਪਾਂ ਨੂੰ ਪ੍ਰਸ਼ਾਸਕ ਵੱਲੋਂ ਮੁਅੱਤਲ ਕਰ ਦਿੱਤਾ ਗਿਆ ਹੈ"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ਨੀਤੀ ਦੀ ਪਾਲਣਾ ਨੂੰ ਦੇਖਣ ਲਈ ਇੱਥੇ ਟੈਪ ਕਰੋ।"</string>
     <string name="me" msgid="6207584824693813140">"ਮੈਂ"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ਟੈਬਲੈੱਟ ਵਿਕਲਪ"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ਦੇ ਵਿਕਲਪ"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ਤੁਸੀਂ <xliff:g id="NUMBER_0">%1$d</xliff:g> ਵਾਰ ਆਪਣਾ ਅਣਲਾਕ ਪੈਟਰਨ ਗਲਤ ਢੰਗ ਨਾਲ ਡ੍ਰਾ ਕੀਤਾ ਹੈ। <xliff:g id="NUMBER_1">%2$d</xliff:g> ਹੋਰ ਅਸਫਲ ਕੋਸ਼ਿਸ਼ਾਂ ਤੋਂ ਬਾਅਦ, ਤੁਹਾਨੂੰ ਇੱਕ ਈਮੇਲ ਖਾਤਾ ਵਰਤਦੇ ਹੋਏ ਆਪਣਾ ਫ਼ੋਨ ਅਣਲਾਕ ਕਰਨ ਲਈ ਕਿਹਾ ਜਾਏਗਾ।\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> ਸਕਿੰਟਾਂ ਵਿੱਚ ਦੁਬਾਰਾ ਕੋਸ਼ਿਸ਼ ਕਰੋ।"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ਹਟਾਓ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> ਤੋਂ ਬੈਕਗ੍ਰਾਊਂਡ ਵਿੱਚ ਸ਼ੁਰੂ ਕੀਤੀ ਗਈ ਫੋਰਗ੍ਰਾਊਂਡ ਸੇਵਾ ਲਈ ਭਵਿੱਖੀ R ਬਿਲਡ ਵਿੱਚ \'ਵਰਤੋਂ ਵਿੱਚ ਹੋਣ \'ਤੇ ਇਜਾਜ਼ਤ\' ਵਿਸ਼ੇਸ਼ਤਾ ਨਹੀਂ ਹੋਵੇਗੀ। ਕਿਰਪਾ ਕਰਕੇ go/r-bg-fgs-restriction ਦੇਖੋ ਅਤੇ ਬੱਗ ਰਿਪੋਰਟ ਫ਼ਾਈਲ ਕਰੋ।"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"ਕੀ ਵੌਲਿਊਮ  ਸਿਫ਼ਾਰਸ਼  ਕੀਤੇ ਪੱਧਰ ਤੋਂ ਵਧਾਉਣੀ ਹੈ?\n\nਲੰਮੇ ਸਮੇਂ ਤੱਕ ਉੱਚ ਵੌਲਿਊਮ ਤੇ ਸੁਣਨ ਨਾਲ ਤੁਹਾਡੀ ਸੁਣਨ ਸ਼ਕਤੀ ਨੂੰ ਨੁਕਸਾਨ ਪਹੁੰਚ ਸਕਦਾ ਹੈ।"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ਕੀ ਪਹੁੰਚਯੋਗਤਾ ਸ਼ਾਰਟਕੱਟ ਵਰਤਣਾ ਹੈ?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ਸ਼ਾਰਟਕੱਟ ਚਾਲੂ ਹੋਣ \'ਤੇ, ਕਿਸੇ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਸ਼ੁਰੂ ਕਰਨ ਲਈ ਅਵਾਜ਼ ਬਟਨਾਂ ਨੂੰ 3 ਸਕਿੰਟ ਲਈ ਦਬਾ ਕੇ ਰੱਖੋ।\n\n ਵਰਤਮਾਨ ਪਹੁੰਚਯੋਗਤਾ ਵਿਸ਼ੇਸ਼ਤਾ:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n ਤੁਸੀਂ ਸੈਟਿੰਗਾਂ &gt; ਪਹੁੰਚਯੋਗਤਾ ਵਿੱਚ ਵਿਸ਼ੇਸ਼ਤਾ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ।"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ਐਪ ਫਿਲਹਾਲ ਉਪਲਬਧ ਨਹੀਂ ਹੈ। ਇਸਦਾ ਪ੍ਰਬੰਧਨ <xliff:g id="APP_NAME_1">%2$s</xliff:g> ਵੱਲੋਂ ਕੀਤਾ ਜਾਂਦਾ ਹੈ।"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ਹੋਰ ਜਾਣੋ"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ਐਪ ਤੋਂ ਰੋਕ ਹਟਾਓ"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"ਕੀ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਚਾਲੂ ਕਰਨੀ ਹੈ?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ਤੁਹਾਡੀਆਂ ਕਾਰਜ-ਸਥਾਨ ਐਪਾਂ, ਸੂਚਨਾਵਾਂ, ਡਾਟਾ ਅਤੇ ਹੋਰ ਕਾਰਜ ਪ੍ਰੋਫਾਈਲ ਵਿਸ਼ੇਸ਼ਤਾਵਾਂ ਚਾਲੂ ਕੀਤੀਆਂ ਜਾਣਗੀਆਂ"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ਚਾਲੂ ਕਰੋ"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ਐਪ ਉਪਲਬਧ ਨਹੀਂ ਹੈ"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਐਪ ਇਸ ਵੇਲੇ ਉਪਲਬਧ ਨਹੀਂ ਹੈ।"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ਇਹ ਐਪ Android ਦੇ ਕਿਸੇ ਵਧੇਰੇ ਪੁਰਾਣੇ ਵਰਜਨ ਲਈ ਬਣਾਈ ਗਈ ਸੀ ਅਤੇ ਸ਼ਾਇਦ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਨਾ ਕਰੇ। ਅੱਪਡੇਟਾਂ ਲਈ ਜਾਂਚ ਕਰੋ ਜਾਂ ਵਿਕਾਸਕਾਰ ਨਾਲ ਸੰਪਰਕ ਕਰੋ।"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ਅੱਪਡੇਟ ਦੀ ਜਾਂਚ ਕਰੋ"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"ਤੁਹਾਨੂੰ ਨਵੇਂ ਸੁਨੇਹੇ ਪ੍ਰਾਪਤ ਹੋਏ ਹਨ"</string>
@@ -1989,8 +1987,7 @@
     <string name="mime_type_spreadsheet_ext" msgid="8720173181137254414">"<xliff:g id="EXTENSION">%1$s</xliff:g> ਸਪਰੈੱਡਸ਼ੀਟ"</string>
     <string name="mime_type_presentation" msgid="1145384236788242075">"ਪੇਸ਼ਕਾਰੀ"</string>
     <string name="mime_type_presentation_ext" msgid="8761049335564371468">"<xliff:g id="EXTENSION">%1$s</xliff:g> ਪੇਸ਼ਕਾਰੀ"</string>
-    <!-- no translation found for bluetooth_airplane_mode_toast (2066399056595768554) -->
-    <skip />
+    <string name="bluetooth_airplane_mode_toast" msgid="2066399056595768554">"ਹਵਾਈ-ਜਹਾਜ਼ ਮੋਡ ਵੇਲੇ ਬਲੂਟੁੱਥ ਹਾਲੇ ਵੀ ਚਾਲੂ ਹੋ ਜਾਵੇਗਾ"</string>
     <string name="car_loading_profile" msgid="8219978381196748070">"ਲੋਡ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
     <plurals name="file_count" formatted="false" msgid="7063513834724389247">
       <item quantity="one"><xliff:g id="FILE_NAME_2">%s</xliff:g> + <xliff:g id="COUNT_3">%d</xliff:g> ਫ਼ਾਈਲ</item>
@@ -2008,13 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"ਸਪਲਿਟ ਸਕ੍ਰੀਨ ਨੂੰ ਟੌਗਲ ਕਰੋ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"ਲਾਕ ਸਕ੍ਰੀਨ"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ਸਕ੍ਰੀਨਸ਼ਾਟ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ਪਹੁੰਚਯੋਗਤਾ ਮੀਨੂ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ਦੀ ਸੁਰਖੀ ਪੱਟੀ।"</string>
-    <!-- no translation found for as_app_forced_to_restricted_bucket (8233871289353898964) -->
-    <skip />
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ਨੂੰ ਪ੍ਰਤਿਬੰਧਿਤ ਖਾਨੇ ਵਿੱਚ ਪਾਇਆ ਗਿਆ ਹੈ"</string>
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ਨਿੱਜੀ"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"ਕੰਮ"</string>
 </resources>
diff --git a/core/res/res/values-pl/strings.xml b/core/res/res/values-pl/strings.xml
index 964c973..2fb9ac2 100644
--- a/core/res/res/values-pl/strings.xml
+++ b/core/res/res/values-pl/strings.xml
@@ -95,7 +95,7 @@
     <string name="notification_channel_mobile_data_status" msgid="1941911162076442474">"Stan mobilnej transmisji danych"</string>
     <string name="notification_channel_sms" msgid="1243384981025535724">"SMS-y"</string>
     <string name="notification_channel_voice_mail" msgid="8457433203106654172">"Wiadomości poczty głosowej"</string>
-    <string name="notification_channel_wfc" msgid="9048240466765169038">"Połączenia przez Wi-Fi"</string>
+    <string name="notification_channel_wfc" msgid="9048240466765169038">"Połączenie przez Wi-Fi"</string>
     <string name="notification_channel_sim" msgid="5098802350325677490">"Stan karty SIM"</string>
     <string name="notification_channel_sim_high_prio" msgid="642361929452850928">"Stan karty SIM – wysoki priorytet"</string>
     <string name="peerTtyModeFull" msgid="337553730440832160">"Drugie urządzenie zażądało trybu „TTY pełny”"</string>
@@ -133,14 +133,14 @@
   </string-array>
     <!-- no translation found for wfcSpnFormat_spn (2982505428519096311) -->
     <skip />
-    <string name="wfcSpnFormat_spn_wifi_calling" msgid="3165949348000906194">"<xliff:g id="SPN">%s</xliff:g>, połączenia przez Wi-Fi"</string>
+    <string name="wfcSpnFormat_spn_wifi_calling" msgid="3165949348000906194">"<xliff:g id="SPN">%s</xliff:g>, połączenie przez Wi-Fi"</string>
     <string name="wfcSpnFormat_spn_wifi_calling_vo_hyphen" msgid="3836827895369365298">"<xliff:g id="SPN">%s</xliff:g>, połączenia przez Wi-Fi"</string>
     <string name="wfcSpnFormat_wlan_call" msgid="4895315549916165700">"Połączenie przez WLAN"</string>
     <string name="wfcSpnFormat_spn_wlan_call" msgid="255919245825481510">"<xliff:g id="SPN">%s</xliff:g>, połączenie przez WLAN"</string>
     <string name="wfcSpnFormat_spn_wifi" msgid="7232899594327126970">"<xliff:g id="SPN">%s</xliff:g>, Wi-Fi"</string>
     <string name="wfcSpnFormat_wifi_calling_bar_spn" msgid="8383917598312067365">"Połączenia przez Wi-Fi | <xliff:g id="SPN">%s</xliff:g>"</string>
     <string name="wfcSpnFormat_spn_vowifi" msgid="6865214948822061486">"<xliff:g id="SPN">%s</xliff:g>, VoWifi"</string>
-    <string name="wfcSpnFormat_wifi_calling" msgid="6178935388378661755">"Połączenia przez Wi-Fi"</string>
+    <string name="wfcSpnFormat_wifi_calling" msgid="6178935388378661755">"Połączenie przez Wi-Fi"</string>
     <string name="wfcSpnFormat_wifi" msgid="1376356951297043426">"Wi-Fi"</string>
     <string name="wfcSpnFormat_wifi_calling_wo_hyphen" msgid="7178561009225028264">"Połączenia przez Wi-Fi"</string>
     <string name="wfcSpnFormat_vowifi" msgid="8371335230890725606">"VoWifi"</string>
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Twoje urządzenie zostanie wyczyszczone"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Nie można użyć aplikacji administratora. Dane z urządzenia zostaną wykasowane.\n\nJeśli masz pytania, skontaktuj się z administratorem organizacji."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Drukowanie wyłączone przez: <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Aplikacje osobiste zostały zawieszone przez administratora"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Kliknij tutaj, by sprawdzić zgodność z zasadami."</string>
     <string name="me" msgid="6207584824693813140">"Ja"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opcje tabletu"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opcje Androida TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Po raz <xliff:g id="NUMBER_0">%1$d</xliff:g> nieprawidłowo narysowałeś wzór odblokowania. Po kolejnych <xliff:g id="NUMBER_1">%2$d</xliff:g> nieudanych próbach konieczne będzie odblokowanie telefonu przy użyciu danych logowania na konto Google.\n\n Spróbuj ponownie za <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Usuń"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Uruchomiona w tle usługa działająca w pierwszym planie z pakietu <xliff:g id="PACKAGENAME">%1$s</xliff:g> nie będzie miała uprawnień obowiązujących podczas używania w przyszłych kompilacjach R. Zapoznaj się z ograniczeniem go/r-bg-fgs-restriction i zgłoś błąd."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zwiększyć głośność ponad zalecany poziom?\n\nSłuchanie głośno przez długi czas może uszkodzić Twój słuch."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Użyć skrótu do ułatwień dostępu?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Gdy skrót jest włączony, jednoczesne naciśnięcie przez trzy sekundy obu klawiszy sterowania głośnością uruchomi funkcję ułatwień dostępu.\n\nBieżąca funkcja ułatwień dostępu:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\nFunkcję możesz zmienić, wybierając Ustawienia &gt; Ułatwienia dostępu."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacja niedostępna"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacja <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie jest teraz dostępna. Zarządza tym aplikacja <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Więcej informacji"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Wznów działanie aplikacji"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Włączyć profil służbowy?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacje do pracy, powiadomienia, dane i inne funkcje profilu do pracy zostaną włączone"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Włącz"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacja jest niedostępna"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikacja <xliff:g id="APP_NAME">%1$s</xliff:g> jest obecnie niedostępna."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ta aplikacja jest na starszą wersję Androida i może nie działać prawidłowo. Sprawdź dostępność aktualizacji lub skontaktuj się z programistą."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Sprawdź dostępność aktualizacji"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Masz nowe wiadomości"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Przełącz podzielony ekran"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekran blokady"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Zrzut ekranu"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ułatwień dostępu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Pasek napisów w aplikacji <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Umieszczono pakiet <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> w zasobniku danych RESTRICTED"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Osobiste"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Do pracy"</string>
 </resources>
diff --git a/core/res/res/values-pt-rBR/strings.xml b/core/res/res/values-pt-rBR/strings.xml
index a6fd0fe..1ae0c36 100644
--- a/core/res/res/values-pt-rBR/strings.xml
+++ b/core/res/res/values-pt-rBR/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Os apps pessoais foram suspensos por um administrador"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toque aqui para ver a conformidade com a política."</string>
     <string name="me" msgid="6207584824693813140">"Eu"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string>
@@ -511,8 +509,8 @@
     <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string>
     <string name="permlab_useFingerprint" msgid="1001421069766751922">"usar hardware de impressão digital"</string>
     <string name="permdesc_useFingerprint" msgid="412463055059323742">"Permite que o app use hardware de impressão digital para autenticação."</string>
-    <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar sua coleção de músicas"</string>
-    <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permite que o app modifique sua coleção de músicas."</string>
+    <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar sua biblioteca de música"</string>
+    <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permite que o app modifique sua biblioteca de música."</string>
     <string name="permlab_videoWrite" msgid="5940738769586451318">"modificar sua coleção de vídeos"</string>
     <string name="permdesc_videoWrite" msgid="6124731210613317051">"Permite que o app modifique sua coleção de vídeos."</string>
     <string name="permlab_imagesWrite" msgid="1774555086984985578">"modificar sua coleção de fotos"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear.\n\n Tente novamente em <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano por <xliff:g id="PACKAGENAME">%1$s</xliff:g> não receberá uma permissão durante o uso em futuras versões R. Consulte go/r-bg-fgs-restriction e crie um relatório de bug."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quando o atalho está ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade.\n\n Recurso de acessibilidade atual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n É possível alterar o recurso em Configurações &gt; Acessibilidade."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"O app não está disponível"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Este app foi criado para uma versão mais antiga do Android e pode não funcionar corretamente. Tente verificar se há atualizações ou entre em contato com o desenvolvedor."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Procurar atualizações"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Você tem mensagens novas"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar tela dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear tela"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capturar tela"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
-    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo RESTRITO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
 </resources>
diff --git a/core/res/res/values-pt-rPT/strings.xml b/core/res/res/values-pt-rPT/strings.xml
index 81f5ced..c381709 100644
--- a/core/res/res/values-pt-rPT/strings.xml
+++ b/core/res/res/values-pt-rPT/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"O seu dispositivo será apagado"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível utilizar a aplicação de administrador. O seu dispositivo será agora apagado.\n\nSe tiver questões, contacte o administrador da entidade."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"As apps pessoais foram suspensas por um administrador"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toque aqui para verificar a conformidade da política."</string>
     <string name="me" msgid="6207584824693813140">"Eu"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Desenhou o padrão de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Depois de mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas sem sucesso, ser-lhe-á pedido para desbloquear o telemóvel através de uma conta de email.\n\n Tente novamente dentro de <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano de <xliff:g id="PACKAGENAME">%1$s</xliff:g> não terá a autorização durante a utilização em compilações R futuras. Aceda a go/r-bg-fgs-restriction e envie um relatório de erros."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir com um volume elevado durante longos períodos poderá ser prejudicial para a sua audição."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Pretende utilizar o atalho de acessibilidade?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quando o atalho está ativado, premir ambos os botões de volume durante 3 segundos inicia uma funcionalidade de acessibilidade.\n\n Funcionalidade de acessibilidade atual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Pode alterar a funcionalidade em Definições &gt; Acessibilidade."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"A aplicação não está disponível"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"A aplicação <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível neste momento. A aplicação <xliff:g id="APP_NAME_1">%2$s</xliff:g> gere esta definição."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"As aplicações de trabalho, as notificações, os dados e outras funcionalidades do perfil de trabalho serão desativados"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"A app não está disponível"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"De momento, a app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Esta aplicação foi concebida para uma versão mais antiga do Android e pode não funcionar corretamente. Experimente verificar se existem atualizações ou contacte o programador."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Verificar se existem atualizações"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Tem mensagens novas"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar/desativar o ecrã dividido"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ecrã de bloqueio"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captura de ecrã"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu Acessibilidade"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas da aplicação <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no contentor RESTRITO."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
 </resources>
diff --git a/core/res/res/values-pt/strings.xml b/core/res/res/values-pt/strings.xml
index a6fd0fe..1ae0c36 100644
--- a/core/res/res/values-pt/strings.xml
+++ b/core/res/res/values-pt/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Seu dispositivo será limpo"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Não é possível usar o aplicativo para administrador. Seu dispositivo passará por uma limpeza agora.\n\nEm caso de dúvidas, entre em contato com o administrador da sua organização."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Impressão desativada por <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Os apps pessoais foram suspensos por um administrador"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Toque aqui para ver a conformidade com a política."</string>
     <string name="me" msgid="6207584824693813140">"Eu"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opções do tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opções do Android TV"</string>
@@ -511,8 +509,8 @@
     <string name="permdesc_manageFingerprint" msgid="2025616816437339865">"Permite que o app execute métodos para adicionar e excluir modelos de impressão digital para uso."</string>
     <string name="permlab_useFingerprint" msgid="1001421069766751922">"usar hardware de impressão digital"</string>
     <string name="permdesc_useFingerprint" msgid="412463055059323742">"Permite que o app use hardware de impressão digital para autenticação."</string>
-    <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar sua coleção de músicas"</string>
-    <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permite que o app modifique sua coleção de músicas."</string>
+    <string name="permlab_audioWrite" msgid="8501705294265669405">"modificar sua biblioteca de música"</string>
+    <string name="permdesc_audioWrite" msgid="8057399517013412431">"Permite que o app modifique sua biblioteca de música."</string>
     <string name="permlab_videoWrite" msgid="5940738769586451318">"modificar sua coleção de vídeos"</string>
     <string name="permdesc_videoWrite" msgid="6124731210613317051">"Permite que o app modifique sua coleção de vídeos."</string>
     <string name="permlab_imagesWrite" msgid="1774555086984985578">"modificar sua coleção de fotos"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Você desenhou sua sequência de desbloqueio incorretamente <xliff:g id="NUMBER_0">%1$d</xliff:g> vezes. Se fizer mais <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativas incorretas, será solicitado que você use o login do Google para desbloquear.\n\n Tente novamente em <xliff:g id="NUMBER_2">%3$d</xliff:g> segundos."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Remover"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"O serviço em primeiro plano iniciado em segundo plano por <xliff:g id="PACKAGENAME">%1$s</xliff:g> não receberá uma permissão durante o uso em futuras versões R. Consulte go/r-bg-fgs-restriction e crie um relatório de bug."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Aumentar o volume acima do nível recomendado?\n\nOuvir em volume alto por longos períodos pode danificar sua audição."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Usar atalho de Acessibilidade?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Quando o atalho está ativado, pressione os dois botões de volume por três segundos para iniciar um recurso de acessibilidade.\n\n Recurso de acessibilidade atual:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n É possível alterar o recurso em Configurações &gt; Acessibilidade."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"O app não está disponível"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"O app <xliff:g id="APP_NAME_0">%1$s</xliff:g> não está disponível no momento. Isso é gerenciado pelo app <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Saiba mais"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Retomar app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ativar o perfil de trabalho?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Seus apps, notificações, dados e outros recursos do perfil de trabalho serão ativados"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Ativar"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"O app não está disponível"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"O app <xliff:g id="APP_NAME">%1$s</xliff:g> não está disponível no momento."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Este app foi criado para uma versão mais antiga do Android e pode não funcionar corretamente. Tente verificar se há atualizações ou entre em contato com o desenvolvedor."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Procurar atualizações"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Você tem mensagens novas"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ativar tela dividida"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Bloquear tela"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Capturar tela"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu de acessibilidade"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Barra de legendas do app <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
-    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo RESTRITO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> foi colocado no intervalo \"RESTRITO\""</string>
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Pessoal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabalho"</string>
 </resources>
diff --git a/core/res/res/values-ro/strings.xml b/core/res/res/values-ro/strings.xml
index cb8d3fe..7c5b63e 100644
--- a/core/res/res/values-ro/strings.xml
+++ b/core/res/res/values-ro/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Datele de pe dispozitiv vor fi șterse"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Aplicația de administrare nu poate fi utilizată. Dispozitivul va fi șters.\n\nDacă aveți întrebări, contactați administratorul organizației dvs."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printare dezactivată de <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Aplicațiile personale au fost suspendate de un administrator"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Atingeți aici ca să verificați conformitatea cu politicile."</string>
     <string name="me" msgid="6207584824693813140">"Eu"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opțiuni tablet PC"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opțiuni pentru Android TV"</string>
@@ -1635,8 +1633,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Ați desenat incorect modelul pentru deblocare de <xliff:g id="NUMBER_0">%1$d</xliff:g> ori. După încă <xliff:g id="NUMBER_1">%2$d</xliff:g> încercări nereușite, vi se va solicita să deblocați telefonul cu ajutorul unui cont de e-mail.\n\n Încercați din nou peste <xliff:g id="NUMBER_2">%3$d</xliff:g>   secunde."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Eliminați"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Serviciul în prim-plan inițializat în fundal din <xliff:g id="PACKAGENAME">%1$s</xliff:g> nu va avea permisiunea în timpul utilizării în versiunile R viitoare. Consultați go/r-bg-fgs-restriction și trimiteți un raport de eroare."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ridicați volumul mai sus de nivelul recomandat?\n\nAscultarea la volum ridicat pe perioade lungi de timp vă poate afecta auzul."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Utilizați comanda rapidă pentru accesibilitate?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Când comanda rapidă este activată, dacă apăsați ambele butoane de volum timp de 3 secunde, veți lansa o funcție de accesibilitate.\n\n Funcția actuală de accesibilitate:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Puteți schimba funcția în Setări &gt; Accesibilitate."</string>
@@ -1884,11 +1881,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplicația nu este disponibilă"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Momentan, aplicația <xliff:g id="APP_NAME_0">%1$s</xliff:g> nu este disponibilă. Aceasta este gestionată de <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Aflați mai multe"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulați întreruperea aplicației"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Activați profilul de serviciu?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Se vor activa aplicațiile dvs. de serviciu, notificările, datele și alte funcții ale profilului de serviciu"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Activați"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplicația nu este disponibilă"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nu este disponibilă momentan."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Această aplicație a fost creată pentru o versiune Android mai veche și este posibil să nu funcționeze corect. Încercați să căutați actualizări sau contactați dezvoltatorul."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Căutați actualizări"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Aveți mesaje noi"</string>
@@ -2041,12 +2039,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Activați ecranul împărțit"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ecran de blocare"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Captură de ecran"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meniul Accesibilitate"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Bară cu legenda pentru <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> a fost adăugat la grupul RESTRICȚIONATE"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Serviciu"</string>
 </resources>
diff --git a/core/res/res/values-ru/strings.xml b/core/res/res/values-ru/strings.xml
index 4821c7f..fa2c9f5 100644
--- a/core/res/res/values-ru/strings.xml
+++ b/core/res/res/values-ru/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Все данные с устройства будут удалены"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Невозможно использовать приложение для администрирования. С устройства будут удалены все данные.\n\nЕсли у вас возникли вопросы, обратитесь к администратору."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Функция печати отключена приложением \"<xliff:g id="OWNER_APP">%s</xliff:g>\""</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Личные приложения временно заблокированы администратором"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Нажмите здесь, чтобы проверить их на соответствие правилам."</string>
     <string name="me" msgid="6207584824693813140">"Я"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Настройки планшетного ПК"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Настройки Android TV"</string>
@@ -1179,7 +1177,7 @@
     <string name="whichEditApplication" msgid="6191568491456092812">"Редактировать с помощью приложения:"</string>
     <string name="whichEditApplicationNamed" msgid="8096494987978521514">"Редактировать с помощью приложения \"%1$s\""</string>
     <string name="whichEditApplicationLabel" msgid="1463288652070140285">"Изменить"</string>
-    <string name="whichSendApplication" msgid="4143847974460792029">"Отправка данных"</string>
+    <string name="whichSendApplication" msgid="4143847974460792029">"Поделиться"</string>
     <string name="whichSendApplicationNamed" msgid="4470386782693183461">"Поделиться через %1$s"</string>
     <string name="whichSendApplicationLabel" msgid="7467813004769188515">"Поделиться"</string>
     <string name="whichSendToApplication" msgid="77101541959464018">"Выберите приложение"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Вы <xliff:g id="NUMBER_0">%1$d</xliff:g> раз неверно указали графический ключ. После <xliff:g id="NUMBER_1">%2$d</xliff:g> неверных попыток для разблокировки телефона потребуется войти в аккаунт Google.\n\nПовтор через <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Удалить"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Службы из пакета <xliff:g id="PACKAGENAME">%1$s</xliff:g>, переведенные из фонового режима в активный, не будут получать разрешение while-in-use в будущих сборках на языке R. Перейдите на страницу go/r-bg-fgs-restriction и отправьте отчет об ошибке."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Установить громкость выше рекомендуемого уровня?\n\nВоздействие громкого звука в течение долгого времени может привести к повреждению слуха."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Использовать быстрое включение?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Чтобы использовать функцию специальных возможностей, когда она включена, нажмите и удерживайте три секунды обе кнопки регулировки громкости.\n\nТекущая функция специальных возможностей:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\nВы можете изменить ее в разделе \"Настройки &gt; Специальные возможности\"."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Приложение недоступно"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Приложение \"<xliff:g id="APP_NAME_0">%1$s</xliff:g>\" недоступно. Его работу ограничивает приложение \"<xliff:g id="APP_NAME_1">%2$s</xliff:g>\"."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Подробнее"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Возобновить работу приложения"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Включить рабочий профиль?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Будут включены корпоративные приложения, уведомления, данные и другие функции рабочего профиля."</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Включить"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Приложение недоступно"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Приложение \"<xliff:g id="APP_NAME">%1$s</xliff:g>\" сейчас недоступно."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Это приложение было создано для более ранней версии Android и может работать со сбоями. Проверьте наличие обновлений или свяжитесь с разработчиком."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Проверить обновления"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Новые сообщения"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Включить или выключить разделение экрана"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокированный экран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Скриншот"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню специальных возможностей"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Строка субтитров в приложении \"<xliff:g id="APP_NAME">%1$s</xliff:g>\"."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Приложение \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" помещено в категорию с ограниченным доступом."</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Личный"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Рабочий"</string>
 </resources>
diff --git a/core/res/res/values-si/strings.xml b/core/res/res/values-si/strings.xml
index df14036..dbe1f22 100644
--- a/core/res/res/values-si/strings.xml
+++ b/core/res/res/values-si/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ඔබගේ උපාංගය මකා දැමෙනු ඇත"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"පරිපාලක යෙදුම භාවිතා කළ නොහැකිය. ඔබේ උපාංගය දැන් මකා දමනු ඇත.\n\nඔබට ප්‍රශ්න තිබේ නම්, ඔබේ සංවිධානයේ පරිපාලකට අමතන්න."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> විසින් මුද්‍රණය කිරීම අබල කර ඇත."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"පුද්ගලික යෙදුම් පරිපාලකයෙකු විසින් අත්හිටුවා ඇත"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"ප්‍රතිපත්ති අනුකූලතාව පරීක්ෂා කිරීමට මෙහි තට්ටු කරන්න."</string>
     <string name="me" msgid="6207584824693813140">"මම"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ටැබ්ලට විකල්ප"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV විකල්ප"</string>
@@ -1615,8 +1613,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"ඔබ වැරදියට <xliff:g id="NUMBER_0">%1$d</xliff:g> වතාවක් ඔබගේ අගුළු හැරීමේ රටාව ඇඳ ඇත. අසාර්ථක උත්සහ කිරීම් <xliff:g id="NUMBER_1">%2$d</xliff:g> න් පසුව, ඔබගේ ඊ-තැපැල් ලිපිනය භාවිතයෙන් ඔබගේ දුරකථනය අගුළු හැරීමට ඔබගෙන් අසයි.\n\n තත්පර <xliff:g id="NUMBER_2">%3$d</xliff:g> න් පසුව නැවත උත්සහ කරන්න."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ඉවත් කරන්න"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> වෙතින් පසුබිම ආරම්භ කරන ලද පෙරබිම් සේවාව අනාගත R තැනුම්වලදී භාවිතයේ අවසරය නැත. කරුණාකර go/r-bg-fgs-අවහිරතාව බලා දෝෂ වාර්තාවක් ගොනු කරන්න."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"නිර්දේශිතයි මට්ටමට වඩා ශබ්දය වැඩිද?\n\nදිගු කාලයක් සඳහා ඉහළ ශබ්දයක් ඇසීමෙන් ඇතැම් විට ඔබගේ ඇසීමට හානි විය හැක."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ප්‍රවේශ්‍යතා කෙටිමඟ භාවිතා කරන්නද?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"කෙටිමඟ සක්‍රිය විට, හඬ බොත්තම් දෙකම තත්පර 3ක් අල්ලාගෙන සිටීමෙන් ප්‍රවේශ්‍යත අංගයක් ඇරඹේ.\n\n වත්මන් ප්‍රවේශ්‍යතා අංගය:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n සැකසීම් &gt; ප්‍රවේශ්‍යතාව තුළ ඔබට අංගය වෙනස් කළ හැක."</string>
@@ -1854,11 +1851,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"යෙදුම නොතිබේ"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> මේ අවස්ථාවේදී ලබා ගත නොහැකිය. මෙය <xliff:g id="APP_NAME_1">%2$s</xliff:g> මගින් කළමනාකරණය කෙරේ."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"තව දැන ගන්න"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"යෙදුම විරාම කිරීම ඉවත් කරන්න"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"කාර්යාල පැතිකඩ ක්‍රියාත්මක කරන්නද?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ඔබගේ වැඩ යෙදුම්, දැනුම්දීම්, දත්ත සහ වෙනත් කාර්යාල පැතිකඩ විශේෂාංග ක්‍රියාත්මක කරනු ඇත"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ක්‍රියාත්මක කරන්න"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"යෙදුම ලබා ගත නොහැකිය"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> මේ දැන් ලබා ගත නොහැකිය."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"මෙම යෙදුම Android හි පැරණි අනුවාදයක් සඳහා තනා ඇති අතර නිසියාකාරව ක්‍රියා නොකරනු ඇත. යාවත්කාලීන සඳහා පරික්ෂා කිරීම උත්සාහ කරන්න, නැතහොත් සංවර්ධක අමතන්න."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"යාවත්කාලීන සඳහා පරික්ෂා කරන්න"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"ඔබට නව පණිවිඩ තිබේ"</string>
@@ -2009,12 +2007,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"බෙදුම් තිරය ටොගල කරන්න"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"අගුලු තිරය"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"තිර රුව"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ප්‍රවේශ්‍යතා මෙනුව"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> හි සිරස්තල තීරුව."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> අවහිර කළ බාල්දියට දමා ඇත"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"පුද්ගලික"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"කාර්යාල"</string>
 </resources>
diff --git a/core/res/res/values-sk/strings.xml b/core/res/res/values-sk/strings.xml
index b0dc5f3..5483efd 100644
--- a/core/res/res/values-sk/strings.xml
+++ b/core/res/res/values-sk/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Vaše zariadenie bude vymazané"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Daná aplikácia na správu sa nedá použiť. Vaše zariadenie bude vymazané.\n\nV prípade otázok kontaktujte správcu organizácie."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Tlač zakázala aplikácia <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Osobné aplikácie boli pozastavené správcom"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Klepnutím tu skontrolujte súlad s pravidlami."</string>
     <string name="me" msgid="6207584824693813140">"Ja"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabletu"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti zariadenia Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"<xliff:g id="NUMBER_0">%1$d</xliff:g>-krát ste nesprávne nakreslili svoj bezpečnostný vzor. Po <xliff:g id="NUMBER_1">%2$d</xliff:g> ďalších neúspešných pokusoch sa zobrazí výzva na odomknutie telefónu pomocou e-mailového účtu.\n\n Skúste to znova o <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odstrániť"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Služba na popredí spustená na pozadí z balíka <xliff:g id="PACKAGENAME">%1$s</xliff:g> nebude mať v budúcich zostavách R povolenie Počas používania. Prejdite na go/r-bg-fgs-restriction a odošlite hlásenie chyby."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Zvýšiť hlasitosť nad odporúčanú úroveň?\n\nDlhodobé počúvanie pri vysokej hlasitosti môže poškodiť váš sluch."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Použiť skratku dostupnosti?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Keď je skratka zapnutá, stlačením obidvoch tlačidiel hlasitosti na tri sekundy spustíte funkciu dostupnosti.\n\n Aktuálna funkcia dostupnosti:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Funkciu môžete zmeniť v časti Nastavenia &gt; Dostupnosť."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikácia nie je k dispozícii"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikácia <xliff:g id="APP_NAME_0">%1$s</xliff:g> nie je momentálne k dispozícii. Spravuje to aplikácia <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Ďalšie informácie"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Znova spustiť aplikáciu"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Zapnúť pracovný profil?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Pracovné aplikácie, upozornenia, dáta a ďalšie funkcie pracovného profilu sa zapnú"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Zapnúť"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikácia nie je dostupná"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikácia <xliff:g id="APP_NAME">%1$s</xliff:g> nie je teraz dostupná."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Táto aplikácia bola zostavená pre staršiu verziu Androidu a nemusí správne fungovať. Skúste skontrolovať dostupnosť aktualizácií alebo kontaktovať vývojára."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Skontrolovať dostupnosť aktualizácie"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Máte nové správy."</string>
@@ -1948,7 +1946,7 @@
     <string name="app_category_social" msgid="2278269325488344054">"Sociálne siete a komunikácia"</string>
     <string name="app_category_news" msgid="1172762719574964544">"Noviny a časopisy"</string>
     <string name="app_category_maps" msgid="6395725487922533156">"Mapy a navigácia"</string>
-    <string name="app_category_productivity" msgid="1844422703029557883">"Produktivita"</string>
+    <string name="app_category_productivity" msgid="1844422703029557883">"Kancelárske"</string>
     <string name="device_storage_monitor_notification_channel" msgid="5164244565844470758">"Úložisko zariadenia"</string>
     <string name="adb_debugging_notification_channel_tv" msgid="4764046459631031496">"Ladenie cez USB"</string>
     <string name="time_picker_hour_label" msgid="4208590187662336864">"hodina"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Prepnúť rozdelenú obrazovku"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Uzamknúť obrazovku"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Snímka obrazovky"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Ponuka Dostupnosť"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Popis aplikácie <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Balík <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> bol vložený do kontajnera OBMEDZENÉ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Osobné"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Práca"</string>
 </resources>
diff --git a/core/res/res/values-sl/strings.xml b/core/res/res/values-sl/strings.xml
index bdd5925..fed39e8 100644
--- a/core/res/res/values-sl/strings.xml
+++ b/core/res/res/values-sl/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Podatki v napravi bodo izbrisani"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Skrbniške aplikacije ni mogoče uporabljati. Podatki v napravi bodo izbrisani.\n\nČe imate vprašanja, se obrnite na skrbnika organizacije."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Tiskanje je onemogočil pravilnik <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Osebne aplikacije je onemogočil skrbnik"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Dotaknite se tukaj, da preverite skladnost s pravilniki."</string>
     <string name="me" msgid="6207584824693813140">"Jaz"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Možnosti tabličnega računalnika"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Možnosti naprave Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Vzorec za odklepanje ste <xliff:g id="NUMBER_0">%1$d</xliff:g>-krat napačno vnesli. Po nadaljnjih <xliff:g id="NUMBER_1">%2$d</xliff:g> neuspešnih poskusih boste pozvani, da odklenete telefon z Googlovimi podatki za prijavo.\n\nPoskusite znova čez <xliff:g id="NUMBER_2">%3$d</xliff:g> s."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Odstrani"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"V prihodnjih različicah R storitev v ospredju z zagonom iz ozadja iz paketa <xliff:g id="PACKAGENAME">%1$s</xliff:g> ne bo imela dovoljenja med uporabo aplikacije. Oglejte si go/r-bg-fgs-restriction in pošljite poročilo o napakah."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ali želite povečati glasnost nad priporočeno raven?\n\nDolgotrajno poslušanje pri veliki glasnosti lahko poškoduje sluh."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Želite uporabljati bližnjico funkcij za ljudi s posebnimi potrebami?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Ko je bližnjica vklopljena, pritisnite gumba za glasnost in ju pridržite tri sekunde, če želite zagnati funkcijo za ljudi s posebnimi potrebami.\n\n Trenutna funkcija za ljudi s posebnimi potrebami:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Funkcijo lahko spremenite v »Nastavitve &gt; Funkcije za ljudi s posebnimi potrebami«."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacija ni na voljo"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Aplikacija <xliff:g id="APP_NAME_0">%1$s</xliff:g> trenutno ni na voljo. To upravlja aplikacija <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Več o tem"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Prekliči začasno zaustavitev aplikacije"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Želite vklopiti delovni profil?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Vklopili boste svoje delovne aplikacije, obvestila, podatke in druge funkcije delovnega profila"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Vklop"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacija ni na voljo"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Aplikacija <xliff:g id="APP_NAME">%1$s</xliff:g> trenutno ni na voljo."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ta aplikacija je bila zasnovana za starejšo različico Androida in morda ne bo delovala pravilno. Preverite, ali so na voljo posodobitve, ali pa se obrnite na razvijalca."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Preveri, ali je na voljo posodobitev"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Imate nova sporočila."</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Preklop razdeljenega zaslona"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Zaklenjen zaslon"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Posnetek zaslona"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Meni s funkcijami za ljudi s posebnimi potrebami"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Vrstica s podnapisi aplikacije <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Paket <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> je bil dodan v segment OMEJENO"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Osebno"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Služba"</string>
 </resources>
diff --git a/core/res/res/values-sq/strings.xml b/core/res/res/values-sq/strings.xml
index fd8dda0..ec61fb9 100644
--- a/core/res/res/values-sq/strings.xml
+++ b/core/res/res/values-sq/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Pajisja do të spastrohet"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Aplikacioni i administratorit nuk mund të përdoret. Pajisja jote tani do të fshihet.\n\nNëse ke pyetje, kontakto me administratorin e organizatës."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Printimi është çaktivizuar nga <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Aplikacionet personale janë pezulluar nga një administrator"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Trokit këtu për të kontrolluar përputhshmërinë me politikën."</string>
     <string name="me" msgid="6207584824693813140">"Unë"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Opsionet e tabletit"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Opsionet e Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Ke vizatuar <xliff:g id="NUMBER_0">%1$d</xliff:g> herë pa sukses motivin tënd. Pas <xliff:g id="NUMBER_1">%2$d</xliff:g> tentativave të tjera të pasuksesshme, do të të duhet ta shkyçësh telefonin duke përdorur një llogari mail-i.\n\n Provo sërish për <xliff:g id="NUMBER_2">%3$d</xliff:g> sekonda."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" - "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Hiq"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Shërbimi në plan të parë i nisur në sfond nga <xliff:g id="PACKAGENAME">%1$s</xliff:g> nuk do të ketë lejen e nevojshme gjatë përdorimit në ndërtimet e ardhshme R. Shiko go/r-bg-fgs-restriction dhe dërgo një raport të defekteve në kod."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Të ngrihet volumi mbi nivelin e rekomanduar?\n\nDëgjimi me volum të lartë për periudha të gjata mund të dëmtojë dëgjimin."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Të përdoret shkurtorja e qasshmërisë?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kur shkurtorja është e aktivizuar, shtypja e të dy butonave për 3 sekonda do të nisë një funksion qasshmërie.\n\n Funksioni aktual i qasshmërisë:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Mund ta ndryshosh funksionin te Cilësimet &gt; Qasshmëria."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Aplikacioni nuk ofrohet"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> nuk ofrohet në këtë moment. Kjo menaxhohet nga <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Mëso më shumë"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Anulo pauzën për aplikacionin"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Të aktivizohet profili i punës?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Aplikacionet e punës, njoftimet, të dhënat e tua dhe funksionet e tjera të profilit të punës do të aktivizohen"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivizo"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Aplikacioni nuk ofrohet"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> nuk ofrohet për momentin."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ky aplikacion është ndërtuar për një version më të vjetër të Android dhe mund të mos funksionojë mirë. Provo të kontrollosh për përditësime ose kontakto me zhvilluesin."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Kontrollo për përditësim"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Ke mesazhe të reja"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Kalo tek ekrani i ndarë"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekrani i kyçjes"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Pamja e ekranit"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyja e qasshmërisë"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Shiriti i nëntitullit të <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> është vendosur në grupin E KUFIZUAR"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Puna"</string>
 </resources>
diff --git a/core/res/res/values-sr/strings.xml b/core/res/res/values-sr/strings.xml
index d82faa6..e1c4e18 100644
--- a/core/res/res/values-sr/strings.xml
+++ b/core/res/res/values-sr/strings.xml
@@ -196,10 +196,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Уређај ће бити обрисан"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Не можете да користите ову апликацију за администраторе. Уређај ће сада бити обрисан.\n\nАко имате питања, контактирајте администратора организације."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Штампање је онемогућила апликација <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Администратор је суспендовао личне апликације"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Додирните овде да бисте проверили усклађеност са смерницама."</string>
     <string name="me" msgid="6207584824693813140">"Ја"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Опције за таблет"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опције Android TV-а"</string>
@@ -1635,8 +1633,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Нацртали сте шаблон за откључавање нетачно <xliff:g id="NUMBER_0">%1$d</xliff:g> пута. После још <xliff:g id="NUMBER_1">%2$d</xliff:g> неуспешна(их) покушаја, од вас ће бити затражено да откључате телефон помоћу налога е-поште.\n\nПробајте поново за <xliff:g id="NUMBER_2">%3$d</xliff:g> секунде/и."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Уклони"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Услуга у првом плану са <xliff:g id="PACKAGENAME">%1$s</xliff:g> која је покренута у позадини неће имати дозволу током коришћења у будућим R верзијама. Посетите go/r-bg-fgs-restriction и пошаљите извештај о грешци."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Желите да појачате звук изнад препорученог нивоа?\n\nСлушање гласне музике дуже време може да вам оштети слух."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Желите ли да користите пречицу за приступачност?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Када је пречица укључена, притисните оба дугмета за јачину звука да бисте покренули функцију приступачности.\n\n Актуелна функција приступачности:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Можете да промените функцију у одељку Подешавања &gt; Приступачност."</string>
@@ -1884,11 +1881,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Апликација није доступна"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Апликација <xliff:g id="APP_NAME_0">%1$s</xliff:g> тренутно није доступна. <xliff:g id="APP_NAME_1">%2$s</xliff:g> управља доступношћу."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Сазнајте више"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Опозови паузирање апликације"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Да укључимо профил за Work?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Укључиће се пословне апликације, обавештења, подаци и друге функције профила за Work"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Укључи"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Апликација није доступна"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Апликација <xliff:g id="APP_NAME">%1$s</xliff:g> тренутно није доступна."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ова апликација је направљена за старију верзију Android-а, па можда неће радити исправно. Потражите ажурирања или контактирајте програмера."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Потражи ажурирање"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Имате нове поруке"</string>
@@ -2041,12 +2039,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Укључите/искључите подељени екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Закључани екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Снимак екрана"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Мени Приступачност"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Трака са насловима апликације <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> је додат у сегмент ОГРАНИЧЕНО"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Лични"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Пословни"</string>
 </resources>
diff --git a/core/res/res/values-sv/strings.xml b/core/res/res/values-sv/strings.xml
index 9c7e1e5..0737b22 100644
--- a/core/res/res/values-sv/strings.xml
+++ b/core/res/res/values-sv/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Enheten kommer att rensas"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Det går inte att använda administratörsappen. Enheten rensas.\n\nKontakta organisationens administratör om du har några frågor."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Utskrift har inaktiverats av <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Administratören har stängt av privata appar"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Tryck här för att kontrollera att policyn följs."</string>
     <string name="me" msgid="6207584824693813140">"Jag"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Alternativ för surfplattan"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Alternativ för Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Du har ritat ditt grafiska lösenord fel <xliff:g id="NUMBER_0">%1$d</xliff:g> gånger. Efter ytterligare <xliff:g id="NUMBER_1">%2$d</xliff:g> försök ombeds du låsa upp mobilen med hjälp av ett e-postkonto.\n\n Försök igen om <xliff:g id="NUMBER_2">%3$d</xliff:g> sekunder."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ta bort"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Förgrundstjänsten från <xliff:g id="PACKAGENAME">%1$s</xliff:g> som startades i bakgrunden får inte behörighet som gäller vid användning i framtida R-versioner. Besök go/r-bg-fgs-restriction och skicka en felrapport."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Vill du höja volymen över den rekommenderade nivån?\n\nAtt lyssna med stark volym långa stunder åt gången kan skada hörseln."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Vill du använda Aktivera tillgänglighet snabbt?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"När kortkommandot har aktiverats startar du en tillgänglighetsfunktion genom att trycka ned båda volymknapparna i tre sekunder.\n\n Aktuell tillgänglighetsfunktion:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Du kan ändra funktionen i Inställningar &gt; Tillgänglighet."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Appen är inte tillgänglig"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> är inte tillgänglig just nu. Detta hanteras av <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Läs mer"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Återuppta app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Vill du aktivera jobbprofilen?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Jobbappar, aviseringar, data och andra funktioner i jobbprofilen aktiveras"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aktivera"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Appen är inte tillgänglig"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> är inte tillgängligt just nu."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Appen har utvecklats för en äldre version av Android och kanske inte fungerar som den ska. Testa att söka efter uppdateringar eller kontakta utvecklaren."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Sök efter uppdateringar"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Du har nya meddelanden"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Aktivera och inaktivera delad skärm"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Låsskärm"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skärmdump"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Tillgänglighetsmenyn"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Textningsfält för <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> har placerats i hinken RESTRICTED"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Privat"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Jobb"</string>
 </resources>
diff --git a/core/res/res/values-sw/strings.xml b/core/res/res/values-sw/strings.xml
index f53efe0..3c6b0fa 100644
--- a/core/res/res/values-sw/strings.xml
+++ b/core/res/res/values-sw/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Data iliyomo kwenye kifaa chako itafutwa"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Huwezi kutumia programu ya msimamizi. Sasa data iliyo kwenye kifaa chako itafutwa.\n\nIkiwa una maswali yoyote, wasiliana na msimamizi wa shirika lako."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Kipengele cha kuchapisha kimezimwa na <xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Programu za binafsi zimesimamishwa na msimamizi"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Gusa hapa ili uangalie utii wa sera."</string>
     <string name="me" msgid="6207584824693813140">"Mimi"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Chaguo za kompyuta ndogo"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Chaguo za Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Umekosea kuchora mchoro wako wa kufungua mara <xliff:g id="NUMBER_0">%1$d</xliff:g>. Baada ya majaribio <xliff:g id="NUMBER_1">%2$d</xliff:g> yasiyofaulu, utaombwa kufungua simu yako kwa kutumia akaunti ya barua pepe.\n\n Jaribu tena baada ya sekunde <xliff:g id="NUMBER_2">%3$d</xliff:g>."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Ondoa"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Huduma ya programu inayotumika iliyoanzishwa chinichini kwenye <xliff:g id="PACKAGENAME">%1$s</xliff:g> haitakuwa na ruhusa inapotumika katika miundo ijayo ya R. Tafadhali angalia go/r-bg-fgs-restriction na uwasilishe ripoti ya hitilafu."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ungependa kupandisha sauti zaidi ya kiwango kinachopendekezwa?\n\nKusikiliza kwa sauti ya juu kwa muda mrefu kunaweza kuharibu uwezo wako wa kusikia."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Ungependa kutumia njia ya mkato ya ufikivu?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Unapowasha kipengele cha njia ya mkato, hatua ya kubonyeza vitufe vyote viwili vya sauti kwa dakika 3 itafungua kipengele cha ufikivu.\n\n Kipengele cha ufikivu kilichopo kwa sasa:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Unaweza kubadilisha kipengele hiki katika Mipangilio &gt; Zana za ufikivu."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Programu haipatikani"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> haipatikani kwa sasa. Inasimamiwa na <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Pata maelezo zaidi"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Acha kusimamisha programu"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ungependa kuwasha wasifu wa kazini?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Hatua hii itawasha data, arifa, programu za kazini, arifa na vipengele vingine vya wasifu wa kazini"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Washa"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Programu haipatikani"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> haipatikani hivi sasa."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Programu hii iliundwa kwa ajili ya toleo la zamani la Android na huenda isifanye kazi vizuri. Jaribu kuangalia masasisho au uwasiliane na msanidi programu."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Angalia masasisho"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Una ujumbe mpya"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Geuza Skrini Iliyogawanywa"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Skrini Iliyofungwa"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Picha ya skrini"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menyu ya Ufikivu"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Upau wa manukuu wa <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> kimewekwa katika kikundi KILICHODHIBITIWA"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Binafsi"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Kazini"</string>
 </resources>
diff --git a/core/res/res/values-ta/strings.xml b/core/res/res/values-ta/strings.xml
index c7c4ea3..e80f37b 100644
--- a/core/res/res/values-ta/strings.xml
+++ b/core/res/res/values-ta/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"சாதனத் தரவு அழிக்கப்படும்"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"நிர்வாகி ஆப்ஸை உபயோகிக்க முடியாது. இப்போது, உங்கள் சாதனம் ஆரம்ப நிலைக்கு மீட்டமைக்கப்படும்.\n\nஏதேனும் கேள்விகள் இருப்பின், உங்கள் நிறுவனத்தின் நிர்வாகியைத் தொடர்புகொள்ளவும்."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"பிரிண்ட் செய்வதை <xliff:g id="OWNER_APP">%s</xliff:g> தடுத்துள்ளது."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"தனிப்பட்ட ஆப்ஸை நிர்வாகி ஒருவர் இடைநிறுத்தியுள்ளார்"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"கொள்கை இணக்கத்தைச் சரிபார்ப்பதற்கு இங்கே தட்டவும்."</string>
     <string name="me" msgid="6207584824693813140">"நான்"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"டேப்லெட் விருப்பங்கள்"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV விருப்பத்தேர்வுகள்"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"திறப்பதற்கான வடிவத்தை <xliff:g id="NUMBER_0">%1$d</xliff:g> முறை தவறாக வரைந்துள்ளீர்கள். மேலும் <xliff:g id="NUMBER_1">%2$d</xliff:g> தோல்வி முயற்சிகளுக்குப் பிறகு, மின்னஞ்சல் கணக்கைப் பயன்படுத்தி உங்கள் மொபைலைத் திறக்கக் கேட்கப்படுவீர்கள்.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> வினாடிகள் கழித்து முயற்சிக்கவும்."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"அகற்று"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> இல் இருந்து பின்னணியில் தொடங்கப்பட்ட முன்புலச் சேவைக்கு, வரவுள்ள R பதிப்புகளில் உபயோகத்தின்போது மட்டுமான அனுமதி இருக்காது. go/r-bg-fgs-restriction என்பதைப் பார்த்து பிழை அறிக்கை ஒன்றைச் சமர்ப்பிக்கவும்."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"பரிந்துரைத்த அளவை விட ஒலியை அதிகரிக்கவா?\n\nநீண்ட நேரத்திற்கு அதிகளவில் ஒலி கேட்பது கேட்கும் திறனைப் பாதிக்கலாம்."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"அணுகல்தன்மை ஷார்ட்கட்டைப் பயன்படுத்தவா?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"ஷார்ட்கட் இயக்கத்தில் இருந்தால், இரண்டு ஒலியளவு பொத்தான்களையும் 3 வினாடிகள் அழுத்தி, அணுகல்தன்மை அம்சத்தை இயக்கலாம்.\n\n தற்போதைய அணுகல்தன்மை அம்சம்:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n அமைப்புகள் &gt; அணுகல்தன்மை என்பதற்குச் சென்று, அம்சத்தை மாற்றலாம்."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ஆப்ஸை உபயோகிக்க இயலாது"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"இப்போது <xliff:g id="APP_NAME_0">%1$s</xliff:g> ஆப்ஸை உபயோகிக்க இயலாது. இதை <xliff:g id="APP_NAME_1">%2$s</xliff:g> நிர்வகிக்கிறது."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"மேலும் அறிக"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ஆப்ஸ் இயக்கு"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"பணிச் சுயவிவரத்தை ஆன் செய்யவா?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"பணி ஆப்ஸ், அறிவிப்புகள், தரவு மற்றும் பிற பணிச் சுயவிவர அம்சங்கள் ஆன் செய்யப்படும்"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"இயக்கு"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"இந்த ஆப்ஸ் இப்போது கிடைப்பதில்லை"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸ் இப்போது கிடைப்பதில்லை."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"இந்த ஆப்ஸ் Android இன் பழைய பதிப்புக்காக உருவாக்கப்பட்டதால், சரியாக வேலை செய்யாமல் போகலாம். புதுப்பிப்புகள் ஏதேனும் உள்ளதா எனப் பார்க்கவும் அல்லது டெவெலப்பரைத் தொடர்புகொள்ளவும்."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"புதுப்பிப்பு உள்ளதா எனப் பார்"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"புதிய செய்திகள் வந்துள்ளன"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"திரைப் பிரிப்பை நிலைமாற்று"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"பூட்டுத் திரை"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ஸ்கிரீன்ஷாட்"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"அணுகல்தன்மை மெனு"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> ஆப்ஸின் தலைப்புப் பட்டி."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> என்பதை வரம்பிடப்பட்ட பக்கெட்திற்குள் சேர்க்கப்பட்டது"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"தனிப்பட்ட சுயவிவரம்"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"பணிச் சுயவிவரம்"</string>
 </resources>
diff --git a/core/res/res/values-te/strings.xml b/core/res/res/values-te/strings.xml
index 9c77ccd..81d4b4f 100644
--- a/core/res/res/values-te/strings.xml
+++ b/core/res/res/values-te/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"మీ పరికరంలోని డేటా తొలగించబడుతుంది"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"నిర్వాహక యాప్‌ ఉపయోగించడం సాధ్యపడదు. మీ పరికరంలోని డేటా ఇప్పుడు తొలగించబడుతుంది.\n\nమీకు ప్రశ్నలు ఉంటే, మీ సంస్థ యొక్క నిర్వాహకులను సంప్రదించండి."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"ముద్రణ <xliff:g id="OWNER_APP">%s</xliff:g> ద్వారా నిలిపివేయబడింది."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"అడ్మిన్ ద్వారా వ్యక్తిగత యాప్‌లు సస్పెండ్ చేయబడ్డాయి"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"పాలసీ పాటించబడుతోందో లేదో తనిఖీ చేయడానికి ఇక్కడ ట్యాప్ చేయండి."</string>
     <string name="me" msgid="6207584824693813140">"నేను"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"టాబ్లెట్ ఎంపికలు"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV ఎంపికలు"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"మీరు మీ అన్‌లాక్ నమూనాను <xliff:g id="NUMBER_0">%1$d</xliff:g> సార్లు తప్పుగా గీసారు. మరో <xliff:g id="NUMBER_1">%2$d</xliff:g> విఫల ప్రయత్నాల తర్వాత, ఇమెయిల్ ఖాతాను ఉపయోగించి మీ ఫోన్‌ను అన్‌లాక్ చేయాల్సిందిగా మిమ్మల్ని అడుగుతారు.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> సెకన్లలో మళ్లీ ప్రయత్నించండి."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"తీసివేయి"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> నుండి, బ్యాక్‌గ్రౌండ్‌లో ప్రారంభమైన ఫోర్ గ్రౌండ్ సేవకు భవిష్యత్తు R బిల్డ్స్‌లో \'ఉపయోగంలో వున్నప్పుడు\' అనుమతి ఉండదు. దయచేసి go/r-bg-fgs-restrictionను చూసి బగ్ నివేదికను ఫైల్ చేయండి."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"వాల్యూమ్‌ను సిఫార్సు చేయబడిన స్థాయి కంటే ఎక్కువగా పెంచాలా?\n\nసుదీర్ఘ వ్యవధుల పాటు అధిక వాల్యూమ్‌లో వినడం వలన మీ వినికిడి శక్తి దెబ్బ తినవచ్చు."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"యాక్సెస్ సామర్థ్యం షార్ట్‌కట్‌ను ఉపయోగించాలా?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"షార్ట్‌కట్ ఆన్‌లో ఉన్నప్పుడు, రెండు వాల్యూమ్ బటన్‌లను 3 సెకన్ల పాటు నొక్కితే యాక్సెస్ సామర్థ్య ఫీచర్ ప్రారంభం అవుతుంది.\n\n ప్రస్తుత యాక్సెస్ సామర్థ్య ఫీచర్:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n సెట్టింగ్‌లు &gt; యాక్సెస్ సామర్థ్యంలో మీరు ఫీచర్‌ను మార్చవచ్చు."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"యాప్ అందుబాటులో లేదు"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు. ఇది <xliff:g id="APP_NAME_1">%2$s</xliff:g> ద్వారా నిర్వహించబడుతుంది."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"మరింత తెలుసుకోండి"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"యాప్‌పై వున్న పాజ్‌ను తొలగించండి"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"కార్యాలయ ప్రొఫైల్‌ని ఆన్ చేయాలా?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"మీ కార్యాలయ యాప్‌లు, నోటిఫికేషన్‌లు, డేటా మరియు ఇతర కార్యాలయ ప్రొఫైల్ ఫీచర్‌లు ఆన్ చేయబడతాయి"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"ఆన్ చేయి"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"యాప్ అందుబాటులో లేదు"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ప్రస్తుతం అందుబాటులో లేదు."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"ఈ యాప్ పాత వెర్షన్ Android కోసం రూపొందించబడింది మరియు అది సరిగ్గా పని చేయకపోవచ్చు. అప్‌డేట్‌ల కోసం తనిఖీ చేయడానికి ప్రయత్నించండి లేదా డెవలపర్‌ని సంప్రదించండి."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"అప్‌డేట్ కోసం తనిఖీ చేయండి"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"మీకు కొత్త సందేశాలు ఉన్నాయి"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"స్క్రీన్ విభజనను టోగుల్ చేయి"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"స్క్రీన్‌ను లాక్ చేయి"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"స్క్రీన్‌షాట్"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"యాక్సెసిబిలిటీ మెను"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> క్యాప్షన్ బార్."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> పరిమితం చేయబడిన బకెట్‌లో ఉంచబడింది"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"వ్యక్తిగతం"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"కార్యాలయం"</string>
 </resources>
diff --git a/core/res/res/values-th/strings.xml b/core/res/res/values-th/strings.xml
index efff25b..46530ca 100644
--- a/core/res/res/values-th/strings.xml
+++ b/core/res/res/values-th/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"ระบบจะลบข้อมูลในอุปกรณ์ของคุณ"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"ใช้แอปผู้ดูแลระบบนี้ไม่ได้ ขณะนี้ระบบจะลบข้อมูลในอุปกรณ์ของคุณ\n\nโปรดติดต่อผู้ดูแลระบบขององค์กรหากมีคำถาม"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> ปิดใช้การพิมพ์แล้ว"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ผู้ดูแลระบบได้ระงับแอปส่วนตัวไว้"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"แตะที่นี่เพื่อตรวจสอบการปฏิบัติตามข้อกำหนดของนโยบาย"</string>
     <string name="me" msgid="6207584824693813140">"ฉัน"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ตัวเลือกของแท็บเล็ต"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"ตัวเลือกของ Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"คุณวาดรูปแบบการปลดล็อกไม่ถูกต้อง <xliff:g id="NUMBER_0">%1$d</xliff:g> ครั้งแล้ว หากทำไม่สำเร็จอีก <xliff:g id="NUMBER_1">%2$d</xliff:g> ครั้ง ระบบจะขอให้คุณปลดล็อกโทรศัพท์โดยใช้ับัญชีอีเมล\n\n โปรดลองอีกครั้งในอีก <xliff:g id="NUMBER_2">%3$d</xliff:g> วินาที"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ลบ"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"บริการที่ทำงานอยู่เบื้องหน้าซึ่งเริ่มขึ้นในเบื้องหลังจาก <xliff:g id="PACKAGENAME">%1$s</xliff:g> จะไม่มีสิทธิ์ขณะใช้งานใน R บิลด์ต่อๆ ไป โปรดดู go/r-bg-fgs-restriction และส่งรายงานข้อบกพร่อง"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"นี่เป็นการเพิ่มระดับเสียงเกินระดับที่แนะนำ\n\nการฟังเสียงดังเป็นเวลานานอาจทำให้การได้ยินของคุณบกพร่องได้"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ใช้ทางลัดการช่วยเหลือพิเศษไหม"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"เมื่อทางลัดเปิดอยู่ การกดปุ่มปรับระดับเสียงทั้ง 2 ปุ่มเป็นเวลา 3 วินาทีจะเริ่มฟีเจอร์การช่วยเหลือพิเศษ\n\n ฟีเจอร์การช่วยเหลือพิเศษปัจจุบัน:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n คุณสามารถเปลี่ยนฟีเจอร์ในการตั้งค่า &gt; การช่วยเหลือพิเศษ"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"แอปไม่พร้อมใช้งาน"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"เปิด <xliff:g id="APP_NAME_0">%1$s</xliff:g> ไม่ได้ในขณะนี้ แอปนี้จัดการโดย <xliff:g id="APP_NAME_1">%2$s</xliff:g>"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"ดูข้อมูลเพิ่มเติม"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ยกเลิกการหยุดแอปชั่วคราว"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"เปิดโปรไฟล์งานไหม"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"ระบบจะเปิดแอปงาน การแจ้งเตือน ข้อมูล และฟีเจอร์อื่นๆ ในโปรไฟล์งาน"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"เปิด"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"แอปไม่พร้อมใช้งาน"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ไม่พร้อมใช้งานในขณะนี้"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"แอปนี้สร้างขึ้นเพื่อ Android เวอร์ชันเก่าและอาจทำงานผิดปกติ โปรดลองตรวจหาการอัปเดตหรือติดต่อนักพัฒนาซอฟต์แวร์"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"ตรวจสอบอัปเดต"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"คุณมีข้อความใหม่"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"เปิด/ปิดการแบ่งหน้าจอ"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"หน้าจอล็อก"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"ภาพหน้าจอ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"เมนูการช่วยเหลือพิเศษ"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"แถบคำบรรยาย <xliff:g id="APP_NAME">%1$s</xliff:g>"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"ใส่ <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ในที่เก็บข้อมูลที่ถูกจำกัดแล้ว"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ส่วนตัว"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"งาน"</string>
 </resources>
diff --git a/core/res/res/values-tl/strings.xml b/core/res/res/values-tl/strings.xml
index 7cfa7b0..b9f1f29 100644
--- a/core/res/res/values-tl/strings.xml
+++ b/core/res/res/values-tl/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Buburahin ang iyong device"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Hindi magamit ang admin app. Mabubura na ang iyong device.\n\nKung mayroon kang mga tanong, makipag-ugnayan sa admin ng iyong organisasyon."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Na-disable ng <xliff:g id="OWNER_APP">%s</xliff:g> ang pag-print."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Sinuspinde ng isang admin ang mga personal na app"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Mag-tap dito para matingnan ang pagsunod sa patakaran."</string>
     <string name="me" msgid="6207584824693813140">"Ako"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Mga pagpipilian sa tablet"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Mga opsyon sa Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Naguhit mo nang hindi tama ang iyong pattern sa pag-unlock nang <xliff:g id="NUMBER_0">%1$d</xliff:g> (na) beses. Pagkatapos ng <xliff:g id="NUMBER_1">%2$d</xliff:g> pang hindi matagumpay na pagtatangka, hihilingin sa iyong i-unlock ang telepono mo gamit ang isang email account.\n\n Subukang muli sa loob ng <xliff:g id="NUMBER_2">%3$d</xliff:g> (na) segundo."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Alisin"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ang sinimulan sa background na serbisyo sa foreground mula sa <xliff:g id="PACKAGENAME">%1$s</xliff:g> ay hindi magkakaroon ng pahintulot habang ginagamit sa mga R build sa hinaharap. Pakipuntahan ang go/r-bg-fgs-restriction at maghain ng bugreport."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Lakasan ang volume nang lagpas sa inirerekomendang antas?\n\nMaaaring mapinsala ng pakikinig sa malakas na volume sa loob ng mahahabang panahon ang iyong pandinig."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Gagamitin ang Shortcut sa Pagiging Accessible?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kapag naka-on ang shortcut, magsisimula ang isang feature ng pagiging naa-access kapag pinindot ang parehong button ng volume sa loob ng 3 segundo.\n\n Kasalukuyang feature ng pagiging naa-access:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Maaari mong baguhin ang feature sa Mga Setting &gt; Pagiging Accessible."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Hindi available ang app"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Hindi available ang <xliff:g id="APP_NAME_0">%1$s</xliff:g> sa ngayon. Pinamamahalaan ito ng <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Matuto pa"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"I-unpause ang app"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"I-on ang profile sa trabaho?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Mao-on ang iyong mga app sa trabaho, notification, data, at iba pang feature sa profile sa trabaho"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"I-on"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Hindi available ang app"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Hindi available sa ngayon ang <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ang app na ito ay ginawa para sa mas lumang bersyon ng Android at maaaring hindi gumana nang maayos. Subukang tingnan kung may mga update, o makipag-ugnayan sa developer."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Tingnan kung may update"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Mayroon kang mga bagong mensahe"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"I-toggle ang Split Screen"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Lock Screen"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Screenshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Menu ng Accessibility"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Caption bar ng <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Inilagay ang <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> sa PINAGHIHIGPITANG bucket"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Personal"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Trabaho"</string>
 </resources>
diff --git a/core/res/res/values-tr/strings.xml b/core/res/res/values-tr/strings.xml
index b47eb4b..81fb079 100644
--- a/core/res/res/values-tr/strings.xml
+++ b/core/res/res/values-tr/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Cihazınız silinecek"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Yönetim uygulaması kullanılamıyor. Cihazınız şimdi silinecek.\n\nSorularınız varsa kuruluşunuzun yöneticisine başvurun."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Yazdırma işlemi <xliff:g id="OWNER_APP">%s</xliff:g> tarafından devre dışı bırakıldı."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Kişisel uygulamalar bir yönetici tarafından askıya alındı"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Politika uyumluluğunu kontrol etmek için buraya dokunun."</string>
     <string name="me" msgid="6207584824693813140">"Ben"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tablet seçenekleri"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV seçenekleri"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Kilit açma deseninizi <xliff:g id="NUMBER_0">%1$d</xliff:g> kez yanlış çizdiniz. <xliff:g id="NUMBER_1">%2$d</xliff:g> başarısız denemeden sonra telefonunuzu bir e-posta hesabı kullanarak açmanız istenir.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> saniye içinde tekrar deneyin."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Kaldır"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"<xliff:g id="PACKAGENAME">%1$s</xliff:g> paketinden ön plan hizmetini başlatan arka plan, sonraki R derlemelerinde kullanım sırasında iznine sahip olmayacak. Lütfen go/r-bg-fgs-restriction sayfasına bakıp hata raporu girin."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Ses seviyesi önerilen düzeyin üzerine yükseltilsin mi?\n\nUzun süre yüksek ses seviyesinde dinlemek işitme duyunuza zarar verebilir."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Erişilebilirlik Kısayolu Kullanılsın mı?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Kısayol açık olduğunda, ses düğmelerinin ikisini birden 3 saniyeliğine basılı tutmanız bir erişilebilirlik özelliğini başlatır.\n\n Geçerli erişilebilirlik özelliği:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Özelliği, Ayarlar &gt; Erişilebilirlik seçeneğinden değiştirebilirsiniz."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Uygulama kullanılamıyor"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> uygulaması şu anda kullanılamıyor. Uygulamanın kullanım durumu <xliff:g id="APP_NAME_1">%2$s</xliff:g> tarafından yönetiliyor."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Daha fazla bilgi"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Uygulamanın duraklatmasını kaldır"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"İş profili açılsın mı?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"İş uygulamalarınız, bildirimleriniz, verileriniz ve diğer iş profili özellikleriniz açılacak"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Aç"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Uygulama kullanılamıyor"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulaması şu anda kullanılamıyor."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Bu uygulama Android\'in daha eski bir sürümü için oluşturuldu ve düzgün çalışmayabilir. Güncellemeleri kontrol etmeyi deneyin veya geliştiriciyle iletişime geçin."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Güncellemeleri denetle"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Yeni mesajlarınız var"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bölünmüş Ekranı aç/kapat"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Kilit Ekranı"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Ekran görüntüsü"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Erişilebilirlik Menüsü"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> uygulamasının başlık çubuğu."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> KISITLANMIŞ gruba yerleştirildi"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Kişisel"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"İş"</string>
 </resources>
diff --git a/core/res/res/values-uk/strings.xml b/core/res/res/values-uk/strings.xml
index 22aa199..c71ea74 100644
--- a/core/res/res/values-uk/strings.xml
+++ b/core/res/res/values-uk/strings.xml
@@ -198,10 +198,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"З вашого пристрою буде стерто всі дані"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Не можна запускати додаток для адміністраторів. Буде відновлено заводські налаштування пристрою.\n\nЯкщо у вас є запитання, зв’яжіться з адміністратором своєї організації."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Додаток <xliff:g id="OWNER_APP">%s</xliff:g> вимкнув друк."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Особисті додатки заблоковано адміністратором"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Натисніть тут, щоб перевірити відповідність правилам."</string>
     <string name="me" msgid="6207584824693813140">"Я"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Парам. пристрою"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Опції Android TV"</string>
@@ -1657,8 +1655,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Ключ розблокування неправильно намальовано стільки разів: <xliff:g id="NUMBER_0">%1$d</xliff:g>. У вас є ще стільки спроб: <xliff:g id="NUMBER_1">%2$d</xliff:g>. У разі невдачі з’явиться запит розблокувати телефон за допомогою облікового запису електронної пошти.\n\n Повторіть спробу через <xliff:g id="NUMBER_2">%3$d</xliff:g> сек."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" – "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Вилучити"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Активний сервіс пакета <xliff:g id="PACKAGENAME">%1$s</xliff:g>, запущений у фоновому режимі, не матиме дозволу \"Коли додаток використовується\" в майбутніх складаннях R. Перегляньте go/r-bg-fgs-restriction і надішліть звіт про помилки."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Збільшити гучність понад рекомендований рівень?\n\nЯкщо слухати надто гучну музику тривалий час, можна пошкодити слух."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Використовувати швидке ввімкнення?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Коли ярлик увімкнено, після натискання обох клавіш гучності й утримування їх протягом 3 секунд увімкнеться функція спеціальних можливостей.\n\n Поточна функція спеціальних можливостей:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Цю функцію можна змінити в меню \"Налаштування\" &gt; \"Спеціальні можливості\"."</string>
@@ -1916,11 +1913,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Додаток недоступний"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"Додаток <xliff:g id="APP_NAME_0">%1$s</xliff:g> зараз недоступний. Керує додаток <xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Докладніше"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Відновити доступ до додатка"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Увімкнути робочий профіль?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Додатки, сповіщення, дані й інші функції робочого профілю буде ввімкнено"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Увімкнути"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Додаток недоступний"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Додаток <xliff:g id="APP_NAME">%1$s</xliff:g> зараз недоступний."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Цей додаток створений для старішої версії Android і може працювати неналежним чином. Спробуйте знайти оновлення або зв’яжіться з розробником."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Шукати оновлення"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"У вас є нові повідомлення"</string>
@@ -2075,12 +2073,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Розділити екран"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Заблокувати екран"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Знімок екрана"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Меню спеціальних можливостей"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Смуга із субтитрами для додатка <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Пакет \"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>\" додано в сегмент з обмеженнями"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Особисте"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Робоче"</string>
 </resources>
diff --git a/core/res/res/values-ur/strings.xml b/core/res/res/values-ur/strings.xml
index a88d6c5..8a0425b 100644
--- a/core/res/res/values-ur/strings.xml
+++ b/core/res/res/values-ur/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"آپ کا آلہ صاف کر دیا جائے گا"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"منتظم کی ایپ استعمال نہیں کی جا سکتی۔ آپ کا آلہ اب مٹا دیا جائے گا۔\n\nاگر آپ کے سوالات ہیں تو اپنی تنظیم کے منتظم سے رابطہ کریں۔"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> نے پرنٹنگ کو غیر فعال کر دیا ہے۔"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"ایک منتظم کے ذریعہ ذاتی ایپس معطل کر دی گئی ہیں"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"پالیسی کی تعمیل کو چیک کرنے کے ليے یہاں تھپتھپائیں۔"</string>
     <string name="me" msgid="6207584824693813140">"میں"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"ٹیبلیٹ کے اختیارات"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"‏Android TV اختیارات"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"آپ نے اپنا غیر مقفل کرنے کا پیٹرن <xliff:g id="NUMBER_0">%1$d</xliff:g> بار غلط طریقے سے ڈرا کیا ہے۔ <xliff:g id="NUMBER_1">%2$d</xliff:g> مزید ناکام کوششوں کے بعد، آپ سے ایک ای میل اکاؤنٹ استعمال کرکے اپنا فون غیر مقفل کرنے کو کہا جائے گا۔\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> سیکنڈ میں دوبارہ کوشش کریں۔"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"ہٹائیں"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"‏پس منظر <xliff:g id="PACKAGENAME">%1$s</xliff:g> سے شروع کی گئی پیش منظر کی سروس کو مستقبل کے R بلڈز میں استعمال کے دوران اجازت نہیں ہوگی۔ براہ کرم go/r-bg-fgs-restriction دیکھیں اور بگ رپورٹ دائر کریں۔"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"والیوم کو تجویز کردہ سطح سے زیادہ کریں؟\n\nزیادہ وقت تک اونچی آواز میں سننے سے آپ کی سماعت کو نقصان پہنچ سکتا ہے۔"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"ایکسیسبیلٹی شارٹ کٹ استعمال کریں؟"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"شارٹ کٹ آن ہونے پر، 3 سیکنڈ تک دونوں والیوم بٹنز کو دبانے سے ایک ایکسیسبیلٹی خصوصیت شروع ہو جائے گی۔\n\n موجودہ ایکسیسبیلٹی خصوصیت:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n آپ خصوصیت کو ترتیبات &gt; ایکسیسبیلٹی میں جا کر تبدیل کر سکتے ہیں۔"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"ایپ دستیاب نہیں ہے"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔ یہ <xliff:g id="APP_NAME_1">%2$s</xliff:g> کے زیر انتظام ہے۔"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"مزید جانیں"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"ایپ کو غیر موقوف کریں"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"دفتری پروفائل آن کریں؟"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"آپ کی دفتری ایپس، اطلاعات، ڈیٹا اور دفتری پروفائل کی دیگر خصوصیات آن کر دی جائیں گی"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"آن کریں"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"ایپ دستیاب نہیں ہے"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> ابھی دستیاب نہیں ہے۔"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"‏یہ ایپ Android کے پرانے ورژن کے لئے بنائی گئی ہے اور ہو سکتا ہے صحیح طور پر کام نہ کرے۔ اپ ڈیٹس چیک کر کے آزمائیں یا ڈیولپر سے رابطہ کریں۔"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"اپ ڈیٹ چیک کریں"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"آپ کے پاس نئے پیغامات ہیں"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"اسپلٹ اسکرین ٹوگل کریں"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"مقفل اسکرین"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"اسکرین شاٹ"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"ایکسیسبیلٹی مینو"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> کی کیپشن بار۔"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> کو پابند کردہ بکٹ میں رکھ دیا گیا ہے"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"ذاتی"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"دفتر"</string>
 </resources>
diff --git a/core/res/res/values-uz/strings.xml b/core/res/res/values-uz/strings.xml
index a08b178..b5c31c2 100644
--- a/core/res/res/values-uz/strings.xml
+++ b/core/res/res/values-uz/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Qurilmangizdagi ma’lumotlar o‘chirib tashlanadi"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Administrator ilovasini ishlatib bo‘lmaydi. Qurilmada barcha ma’lumotlar o‘chirib tashlanadi.\n\nSavollaringiz bo‘lsa, administrator bilan bog‘laning."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Chop etish funksiyasi <xliff:g id="OWNER_APP">%s</xliff:g> tomonidan faolsizlantirilgan."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Shaxsiy ilovalar administrator tomonidan faolsizlantirildi"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Siyosatga muvofiqligini tekshirish uchun shu yerga bosing."</string>
     <string name="me" msgid="6207584824693813140">"Men"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Planshet sozlamalari"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV parametrlari"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Siz grafik kalitni <xliff:g id="NUMBER_0">%1$d</xliff:g> marta noto‘g‘ri chizdingiz. <xliff:g id="NUMBER_1">%2$d</xliff:g> marta muvaffaqiyatsiz urinishdan so‘ng, sizdan e-pochtangizdan foydalanib, telefon qulfini ochishingiz so‘raladi.\n\n <xliff:g id="NUMBER_2">%3$d</xliff:g> soniyadan so‘ng yana urinib ko‘ring."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Olib tashlash"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Fonda faol <xliff:g id="PACKAGENAME">%1$s</xliff:g> xizmatini ishga tushirish uchun kelgusi R nashrlarida ishlatilayotganda ruxsat berish imkoniyati boʻlmaydi. go/r-bg-fgs-restriction sahifasiga kiring va xatolik hisobotini yuboring."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Tovush balandligi tavsiya etilgan darajadan ham yuqori qilinsinmi?\n\nUzoq vaqt davomida baland ovozda tinglash eshitish qobiliyatingizga salbiy ta’sir ko‘rsatishi mumkin."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Tezkor ishga tushirishdan foydalanilsinmi?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Maxsus imkoniyatlar funksiyasidan foydalanish uchun u yoniqligida ikkala ovoz balandligini boshqarish tugmasini 3 soniya bosib turing.\n\n Joriy maxsus imkoniyatlar funksiyasi:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Bu funksiyani Sozlamalar &gt; Maxsus imkoniyatlar orqali o‘zgartirish mumkin."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Ilova ishlamayapti"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> ishlamayapti. Uning ishlashini <xliff:g id="APP_NAME_1">%2$s</xliff:g> cheklamoqda."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Batafsil"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Ilovani ishga tushirish"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Ishchi profil yoqilsinmi?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Ishchi ilovalar, bildirishnomalar, ma’lumotlar va boshqa ishchi profil imkoniyatlari yoqiladi"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Yoqish"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Ilova ishlamayapti"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"Ayni vaqtda <xliff:g id="APP_NAME">%1$s</xliff:g> ilovasi ishlamayapti."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Bu ilova eskiroq Android versiyalariga chiqarilgan va xato ishlashi mumkin. Yangilanishlarini tekshiring yoki dasturchi bilan bog‘laning."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Yangilanish borligini tekshirish"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Sizga yangi SMS keldi"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Ekranni ikkiga ajratish tugmasi"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Ekran qulfi"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Skrinshot"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Maxsus imkoniyatlar menyusi"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g> taglavhalar paneli."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> cheklangan turkumga joylandi"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Shaxsiy"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Ish"</string>
 </resources>
diff --git a/core/res/res/values-vi/strings.xml b/core/res/res/values-vi/strings.xml
index db55613..970d41f 100644
--- a/core/res/res/values-vi/strings.xml
+++ b/core/res/res/values-vi/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Thiết bị của bạn sẽ bị xóa"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Không thể sử dụng ứng dụng quản trị. Thiết bị của bạn sẽ bị xóa ngay bây giờ.\n\nHãy liên hệ với quản trị viên của tổ chức nếu bạn có thắc mắc."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"<xliff:g id="OWNER_APP">%s</xliff:g> đã tắt tính năng in."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Các ứng dụng cá nhân đã bị một quản trị viên tạm ngưng"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Nhấn vào đây để kiểm tra tính tuân thủ đối với chính sách."</string>
     <string name="me" msgid="6207584824693813140">"Tôi"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Tùy chọn máy tính bảng"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Tùy chọn dành cho Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Bạn đã <xliff:g id="NUMBER_0">%1$d</xliff:g> lần vẽ không chính xác hình mở khóa của mình. Sau <xliff:g id="NUMBER_1">%2$d</xliff:g> lần thử không thành công nữa, bạn sẽ được yêu cầu mở khóa điện thoại bằng tài khoản email.\n\n Vui lòng thử lại sau <xliff:g id="NUMBER_2">%3$d</xliff:g> giây."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Xóa"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Dịch vụ trên nền trước đã bắt đầu ở nền từ <xliff:g id="PACKAGENAME">%1$s</xliff:g> sẽ không có quyền khi đang sử dụng trong các bản dựng R trong tương lai. Vui lòng xem go/r-bg-fgs-restriction và gửi báo cáo lỗi."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Bạn tăng âm lượng lên quá mức khuyên dùng?\n\nViệc nghe ở mức âm lượng cao trong thời gian dài có thể gây tổn thương thính giác của bạn."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sử dụng phím tắt Hỗ trợ tiếp cận?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Khi phím tắt được bật, nhấn cả hai nút âm lượng trong 3 giây sẽ bắt đầu một tính năng trợ năng.\n\n Tính năng trợ năng hiện tại:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Bạn có thể thay đổi tính năng trong Cài đặt &gt; Trợ năng."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Ứng dụng không sử dụng được"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g> hiện không sử dụng được. Chính sách này do <xliff:g id="APP_NAME_1">%2$s</xliff:g> quản lý."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Tìm hiểu thêm"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Mở lại ứng dụng"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Bạn muốn bật hồ sơ công việc?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Ứng dụng công việc, thông báo, dữ liệu và các tính năng khác của hồ sơ công việc sẽ được bật"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Bật"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Ứng dụng này không dùng được"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g> hiện không dùng được."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Ứng dụng này được xây dựng cho một phiên bản Android cũ hơn và có thể hoạt động không bình thường. Hãy thử kiểm tra các bản cập nhật hoặc liên hệ với nhà phát triển."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Kiểm tra bản cập nhật"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Bạn có tin nhắn mới"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Bật/tắt chế độ chia đôi màn hình"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Khóa màn hình"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Chụp ảnh màn hình"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Trình đơn Hỗ trợ tiếp cận"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Thanh phụ đề của <xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"Đã đưa <xliff:g id="PACKAGE_NAME">%1$s</xliff:g> vào bộ chứa BỊ HẠN CHẾ"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Cá nhân"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Cơ quan"</string>
 </resources>
diff --git a/core/res/res/values-zh-rCN/strings.xml b/core/res/res/values-zh-rCN/strings.xml
index 08d2326..c9bba59 100644
--- a/core/res/res/values-zh-rCN/strings.xml
+++ b/core/res/res/values-zh-rCN/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"系统将清空您的设备"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"无法使用管理应用,系统现在将清空您的设备。\n\n如有疑问,请与您所在单位的管理员联系。"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"“<xliff:g id="OWNER_APP">%s</xliff:g>”已停用打印功能。"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"管理员已暂停个人应用"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"点按此处即可检查政策合规性。"</string>
     <string name="me" msgid="6207584824693813140">"我"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板电脑选项"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 选项"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"您已连续 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次画错解锁图案。如果再尝试 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次后仍不成功,系统就会要求您使用自己的电子邮件帐号解锁手机。\n\n请在 <xliff:g id="NUMBER_2">%3$d</xliff:g> 秒后重试。"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"删除"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"在未来的 R 版本中,在后台启动的 <xliff:g id="PACKAGENAME">%1$s</xliff:g> 中的前台服务将不具有仅在使用时授予的权限。请访问 go/r-bg-fgs-restriction 并提交错误报告。"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要将音量调高到建议的音量以上吗?\n\n长时间保持高音量可能会损伤听力。"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用无障碍快捷方式吗?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"开启快捷方式后,同时按下两个音量按钮 3 秒钟即可启动所设定的无障碍功能。\n\n当前设定的无障碍功能:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n如需更改设定的功能,请依次转到“设置”&gt;“无障碍”。"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"应用无法使用"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"<xliff:g id="APP_NAME_0">%1$s</xliff:g>目前无法使用。该应用是由<xliff:g id="APP_NAME_1">%2$s</xliff:g>所管理。"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"了解详情"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暂停应用"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"要开启工作资料吗?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"您的工作应用、通知、数据及其他工作资料功能将会开启"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"开启"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"应用无法使用"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"<xliff:g id="APP_NAME">%1$s</xliff:g>目前无法使用。"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"此应用专为旧版 Android 打造,因此可能无法正常运行。请尝试检查更新或与开发者联系。"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"检查更新"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"您有新消息"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"开启/关闭分屏"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"锁定屏幕"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"屏幕截图"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"无障碍功能菜单"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"<xliff:g id="APP_NAME">%1$s</xliff:g>的标题栏。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已被放入受限存储分区"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"个人"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"工作"</string>
 </resources>
diff --git a/core/res/res/values-zh-rHK/strings.xml b/core/res/res/values-zh-rHK/strings.xml
index ea106c6c..fc652e3 100644
--- a/core/res/res/values-zh-rHK/strings.xml
+++ b/core/res/res/values-zh-rHK/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"您的裝置將被清除"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理員應用程式。系統會現在清除您的裝置。\n\n如有任何疑問,請聯絡您的機構管理員。"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」暫停了列印。"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"管理員已停用個人應用程式"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"輕按這裡查看應用程式是否符合政策要求。"</string>
     <string name="me" msgid="6207584824693813140">"我本人"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板電腦選項"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 選項"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"您已畫錯解鎖圖案 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次仍未成功,系統會要求您透過電郵帳戶解開上鎖的手機。\n\n請在 <xliff:g id="NUMBER_2">%3$d</xliff:g> 秒後再試一次。"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"移除"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"從「<xliff:g id="PACKAGENAME">%1$s</xliff:g>」啟動前景服務的背景將不會在未來的 R 版本中提供「僅在使用此應用程式時允許」權限。請參閱 go/r-bg-fgs-restriction,提交錯誤報告。"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量 (比建議的音量更大聲) 嗎?\n\n長時間聆聽高分貝音量可能會導致您的聽力受損。"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙功能快速鍵嗎?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"快速鍵開啟後,同時按住音量按鈕 3 秒,無障礙功能便會啟用。\n\n目前的無障礙功能:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n如要變更功能,請前往「設定」&gt;「無障礙功能」。"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"目前無法使用此應用程式"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用 <xliff:g id="APP_NAME_0">%1$s</xliff:g>。此應用程式是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作設定檔嗎?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟您的工作應用程式、通知、資料和其他工作設定檔功能"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"無法使用應用程式"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"目前無法使用「<xliff:g id="APP_NAME">%1$s</xliff:g>」。"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"此應用程式專為舊版 Android 打造,因此可能無法正常運作。請嘗試檢查更新,或與開發人員聯絡。"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"檢查更新"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"您有新的訊息"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割螢幕"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"將畫面上鎖"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"螢幕截圖"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙功能選單"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明列。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> 已納入受限制的儲存區"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"個人"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"公司"</string>
 </resources>
diff --git a/core/res/res/values-zh-rTW/strings.xml b/core/res/res/values-zh-rTW/strings.xml
index 7065181..75d05a2 100644
--- a/core/res/res/values-zh-rTW/strings.xml
+++ b/core/res/res/values-zh-rTW/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"你的裝置資料將遭到清除"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"無法使用管理應用程式,系統現在將清除你裝置中的資料。\n\n如有任何問題,請與貴機構的管理員聯絡。"</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"「<xliff:g id="OWNER_APP">%s</xliff:g>」已停用列印功能。"</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"管理員已將個人應用程式設為暫停使用"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"輕觸這裡即可查看政策違規問題。"</string>
     <string name="me" msgid="6207584824693813140">"我"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"平板電腦選項"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Android TV 選項"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"你的解鎖圖案已畫錯 <xliff:g id="NUMBER_0">%1$d</xliff:g> 次,如果再嘗試 <xliff:g id="NUMBER_1">%2$d</xliff:g> 次仍未成功,系統就會要求你透過電子郵件帳戶解除手機的鎖定狀態。\n\n請在 <xliff:g id="NUMBER_2">%3$d</xliff:g> 秒後再試一次。"</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"移除"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"來自「<xliff:g id="PACKAGENAME">%1$s</xliff:g>」的背景啟動前景服務不會具備未來 R 版本的使用狀態權限。請前往 go/r-bg-fgs-restriction 並提交錯誤報告。"</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"要調高音量,比建議的音量更大聲嗎?\n\n長時間聆聽高分貝音量可能會使你的聽力受損。"</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"要使用無障礙捷徑嗎?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"啟用捷徑功能後,只要同時按下兩個音量鍵 3 秒,就能啟動無障礙功能。\n\n 目前設定的無障礙功能為:\n<xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n 如要變更設定的功能,請依序輕觸 [設定] &gt; [無障礙設定]。"</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"應用程式目前無法使用"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"目前無法使用「<xliff:g id="APP_NAME_0">%1$s</xliff:g>」。這項設定是由「<xliff:g id="APP_NAME_1">%2$s</xliff:g>」管理。"</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"瞭解詳情"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"取消暫停應用程式"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"要開啟工作資料夾嗎?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"系統將開啟你的辦公應用程式、通知、資料和其他工作資料夾功能"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"開啟"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"應用程式無法使用"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」目前無法使用。"</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"這個應用程式是專為舊版 Android 所打造,因此可能無法正常運作。請嘗試檢查更新,或是與開發人員聯絡。"</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"檢查更新"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"你有新訊息"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"切換分割畫面模式"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"螢幕鎖定"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"擷取螢幕畫面"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"無障礙選單"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"「<xliff:g id="APP_NAME">%1$s</xliff:g>」的說明文字列。"</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"已將「<xliff:g id="PACKAGE_NAME">%1$s</xliff:g>」移入受限制的值區"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"個人"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"工作"</string>
 </resources>
diff --git a/core/res/res/values-zu/strings.xml b/core/res/res/values-zu/strings.xml
index 1cb67e1..0d2abc0 100644
--- a/core/res/res/values-zu/strings.xml
+++ b/core/res/res/values-zu/strings.xml
@@ -194,10 +194,8 @@
     <string name="factory_reset_warning" msgid="6858705527798047809">"Idivayisi yakho izosulwa"</string>
     <string name="factory_reset_message" msgid="2657049595153992213">"Uhlelo lokusebenza lomlawuli alikwazi ukusetshenziswa. Idivayisi yakho manje izosuswa.\n\nUma unemibuzo, xhumana nomlawuli wezinhlangano zakho."</string>
     <string name="printing_disabled_by" msgid="3517499806528864633">"Ukuphrinta kukhutshazwe nge-<xliff:g id="OWNER_APP">%s</xliff:g>."</string>
-    <!-- no translation found for personal_apps_suspended_notification_title (6551578720258229430) -->
-    <skip />
-    <!-- no translation found for personal_apps_suspended_notification_text (8321053338614244297) -->
-    <skip />
+    <string name="personal_apps_suspended_notification_title" msgid="6551578720258229430">"Izinhlelo zokusebenza zimiswe okwesikhashana ngumlawuli"</string>
+    <string name="personal_apps_suspended_notification_text" msgid="8321053338614244297">"Thepha lapha ukuze uhlole ukuthobelana kwenqubomgomo."</string>
     <string name="me" msgid="6207584824693813140">"Mina"</string>
     <string name="power_dialog" product="tablet" msgid="8333207765671417261">"Okukhethwa kukho kwethebhulethi"</string>
     <string name="power_dialog" product="tv" msgid="7792839006640933763">"Izinketho ze-Android TV"</string>
@@ -1613,8 +1611,7 @@
     <string name="kg_failed_attempts_almost_at_login" product="default" msgid="5270861875006378092">"Ukulayisha ungenisa iphathini yakho yokuvula ngendlela engalungile izikhathi ezi-<xliff:g id="NUMBER_0">%1$d</xliff:g> Emva kweminye imizamo engu-<xliff:g id="NUMBER_1">%2$d</xliff:g>, uzocelwa ukuvula ifoni yakho usebenzisa ukungena ngemvume ku-Google\n\n Zame futhi emumva kwengu- <xliff:g id="NUMBER_2">%3$d</xliff:g> amasekhondi."</string>
     <string name="kg_text_message_separator" product="default" msgid="4503708889934976866">" — "</string>
     <string name="kg_reordering_delete_drop_target_text" msgid="2034358143731750914">"Susa"</string>
-    <!-- no translation found for allow_while_in_use_permission_in_fgs (4101339676785053656) -->
-    <skip />
+    <string name="allow_while_in_use_permission_in_fgs" msgid="4101339676785053656">"Ingemuva eqalise isevisi yasemuva kusuka ku-<xliff:g id="PACKAGENAME">%1$s</xliff:g> ngeke ithole imvume yokusebenzisa yesikhathi ekwakheni kwe-R ezayo. Sicela ubone i-go/r-bg-fgs-restriction bese ufayele umbiko wesiphazamiso."</string>
     <string name="safe_media_volume_warning" product="default" msgid="3751676824423049994">"Khuphukisa ivolumu ngaphezu kweleveli enconyiwe?\n\nUkulalela ngevolumu ephezulu izikhathi ezide kungahle kulimaze ukuzwa kwakho."</string>
     <string name="accessibility_shortcut_warning_dialog_title" msgid="4017995837692622933">"Sebenzisa isinqamuleli sokufinyelela?"</string>
     <string name="accessibility_shortcut_toogle_warning" msgid="8306239551412868396">"Uma kuvulwe isinqamuleli, ukucindezela zombili izinkinobho zevolumu amasekhondi angu-3 kuzoqala isici sokufinyelela.\n\n Isici samanje sokufinyelela:\n <xliff:g id="SERVICE_NAME">%1$s</xliff:g>\n\n Ungashintsha isici kuzilungiselelo &gt; Ukufinyelela."</string>
@@ -1852,11 +1849,12 @@
     <string name="app_suspended_title" msgid="888873445010322650">"Uhlelo lokusebenza alutholakali"</string>
     <string name="app_suspended_default_message" msgid="6451215678552004172">"I-<xliff:g id="APP_NAME_0">%1$s</xliff:g> ayitholakali okwamanje. Lokhu kuphethwe i-<xliff:g id="APP_NAME_1">%2$s</xliff:g>."</string>
     <string name="app_suspended_more_details" msgid="211260942831587014">"Funda kabanzi"</string>
-    <!-- no translation found for app_suspended_unsuspend_message (1665438589450555459) -->
-    <skip />
+    <string name="app_suspended_unsuspend_message" msgid="1665438589450555459">"Susa ukuphumuza uhlelo lokusebenza"</string>
     <string name="work_mode_off_title" msgid="5503291976647976560">"Vula iphrofayela yomsebenzi?"</string>
     <string name="work_mode_off_message" msgid="8417484421098563803">"Izinhlelo zakho zokusebenza zomsebenzi, izaziso, idatha, nezinye izici zephrofayela yomsebenzi kuzovulwa"</string>
     <string name="work_mode_turn_on" msgid="3662561662475962285">"Vula"</string>
+    <string name="app_blocked_title" msgid="7353262160455028160">"Uhlelo lokusebenza alutholakali"</string>
+    <string name="app_blocked_message" msgid="542972921087873023">"I-<xliff:g id="APP_NAME">%1$s</xliff:g> ayitholakali khona manje."</string>
     <string name="deprecated_target_sdk_message" msgid="5203207875657579953">"Lolu hlelo lokusebenza belakhelwe inguqulo endala ye-Android futhi kungenzeka lungasebenzi kahle. Zama ukuhlolela izibuyekezo, noma uxhumane nonjiniyela."</string>
     <string name="deprecated_target_sdk_app_store" msgid="8456784048558808909">"Hlola izibuyekezo"</string>
     <string name="new_sms_notification_title" msgid="6528758221319927107">"Unemilayezo emisha"</string>
@@ -2007,12 +2005,9 @@
     <string name="accessibility_system_action_toggle_split_screen_label" msgid="6626177163849387748">"Guqula ukuhlukanisa isikrini"</string>
     <string name="accessibility_system_action_lock_screen_label" msgid="5484190691945563838">"Khiya isikrini"</string>
     <string name="accessibility_system_action_screenshot_label" msgid="3581566515062741676">"Isithombe-skrini"</string>
-    <!-- no translation found for accessibility_system_action_accessibility_menu_label (8436484650391125184) -->
-    <skip />
+    <string name="accessibility_system_action_accessibility_menu_label" msgid="8436484650391125184">"Imenyu yokufinyeleleka"</string>
     <string name="accessibility_freeform_caption" msgid="8377519323496290122">"Ibha yamazwibela we-<xliff:g id="APP_NAME">%1$s</xliff:g>."</string>
     <string name="as_app_forced_to_restricted_bucket" msgid="8233871289353898964">"I-<xliff:g id="PACKAGE_NAME">%1$s</xliff:g> ifakwe kubhakede LOKUKHAWULELWE"</string>
-    <!-- no translation found for resolver_personal_tab (2051260504014442073) -->
-    <skip />
-    <!-- no translation found for resolver_work_tab (2690019516263167035) -->
-    <skip />
+    <string name="resolver_personal_tab" msgid="2051260504014442073">"Okomuntu siqu"</string>
+    <string name="resolver_work_tab" msgid="2690019516263167035">"Umsebenzi"</string>
 </resources>
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index 20901e0..7d8b8db 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -3790,6 +3790,12 @@
         <attr name="description" />
         <!-- Brief summary of the target of accessibility shortcut purpose or behavior. -->
         <attr name="summary" />
+        <!-- Animated image of the target of accessibility shortcut purpose or behavior, to help
+             users understand how the target of accessibility shortcut can help them.-->
+        <attr name="animatedImageDrawable" format="reference"/>
+        <!-- Html description of the target of accessibility shortcut purpose or behavior, to help
+             users understand how the target of accessibility shortcut can help them. -->
+        <attr name="htmlDescription" format="string"/>
     </declare-styleable>
 
     <!-- Use <code>print-service</code> as the root tag of the XML resource that
diff --git a/core/res/res/values/attrs_manifest.xml b/core/res/res/values/attrs_manifest.xml
index cfed805..c66261b 100644
--- a/core/res/res/values/attrs_manifest.xml
+++ b/core/res/res/values/attrs_manifest.xml
@@ -301,6 +301,9 @@
         <!-- Additional flag from base permission type: this permission can be automatically
             granted to the system companion device manager service -->
         <flag name="companion" value="0x800000" />
+        <!-- Additional flag from base permission type: this permission will be granted to the
+             retail demo app, as defined by the OEM. -->
+        <flag name="retailDemo" value="0x1000000" />
     </attr>
 
     <!-- Flags indicating more context for a permission group. -->
@@ -1781,8 +1784,11 @@
         <attr name="crossProfile" format="boolean" />
     </declare-styleable>
 
-    <!-- The <code>feature</code> tag declares a feature. A feature is a part of an app. E.g.
-    photo sharing app might include a direct messaging component.
+    <!-- The <code>feature</code> tag declares a feature. A feature is a logical part of an app.
+    E.g. photo sharing app might include a direct messaging component. To tag certain code as
+    belonging to a feature, use a context created via
+    {@link android.content.Context#createFeatureContext(String)} for any interaction with the
+    system.
 
     <p>This appears as a child tag of the root {@link #AndroidManifest manifest} tag.
 
@@ -2050,6 +2056,9 @@
         <attr name="name" />
     </declare-styleable>
     <declare-styleable name="AndroidManifestQueriesIntent" parent="AndroidManifestQueries" />
+    <declare-styleable name="AndroidManifestQueriesProvider" parent="AndroidManifestQueries" >
+        <attr name="authorities" />
+    </declare-styleable>
 
 
     <!-- The <code>static-library</code> tag declares that this apk is providing itself
diff --git a/core/res/res/values/bools.xml b/core/res/res/values/bools.xml
index 29f9f6c..c5127dc 100644
--- a/core/res/res/values/bools.xml
+++ b/core/res/res/values/bools.xml
@@ -29,4 +29,5 @@
          <p>The main purpose is for OEMs to customize the rendering of the
          lockscreen, setting this to true should come with customized drawables. -->
     <bool name="use_lock_pattern_drawable">false</bool>
+    <bool name="sharesheet_show_content_preview">false</bool>
 </resources>
diff --git a/core/res/res/values/colors.xml b/core/res/res/values/colors.xml
index 731e2ec..bdec096 100644
--- a/core/res/res/values/colors.xml
+++ b/core/res/res/values/colors.xml
@@ -226,4 +226,6 @@
     <color name="resolver_text_color_secondary_dark">#ffC4C6C6</color>
     <color name="resolver_tabs_active_color">#FF1A73E8</color>
     <color name="resolver_tabs_inactive_color">#FF80868B</color>
+    <color name="resolver_empty_state_text">#FF202124</color>
+    <color name="resolver_empty_state_icon">#FF5F6368</color>
 </resources>
diff --git a/core/res/res/values/config.xml b/core/res/res/values/config.xml
index dadb9241..9282925 100644
--- a/core/res/res/values/config.xml
+++ b/core/res/res/values/config.xml
@@ -244,7 +244,7 @@
          correctly use them when installed on your device.  Otherwise, keep this disabled
          so that applications can still use their own mechanisms. -->
     <bool name="config_enableAutoPowerModes">false</bool>
-
+ 
     <!-- Whether (if true) this is a kind of device that can be moved around (eg. phone/laptop),
          or (if false) something for which movement is either not measurable or should not count
          toward power states (eg. tv/soundbar). -->
@@ -269,6 +269,11 @@
          when there's no network connection. If the scan doesn't timeout, use zero -->
     <integer name="config_radioScanningTimeout">0</integer>
 
+    <!-- When true, Android uses the PAC implementation included in WebView to handle
+         networks with PAC scripts.
+         When false, Android's own implementation of libpac is used.-->
+    <bool name ="config_useWebViewPacProcessor">false</bool>
+
     <!-- XXXXX NOTE THE FOLLOWING RESOURCES USE THE WRONG NAMING CONVENTION.
          Please don't copy them, copy anything else. -->
 
@@ -1258,32 +1263,63 @@
     -->
     <integer name="config_doubleTapOnHomeBehavior">0</integer>
 
-    <!-- Minimum screen brightness setting allowed by the power manager.
-         The user is forbidden from setting the brightness below this level. -->
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingMinimumFloat instead -->
     <integer name="config_screenBrightnessSettingMinimum">10</integer>
 
-    <!-- Maximum screen brightness allowed by the power manager.
-         The user is forbidden from setting the brightness above this level. -->
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingMaximumFloat instead -->
     <integer name="config_screenBrightnessSettingMaximum">255</integer>
 
-    <!-- Default screen brightness setting.
-         Must be in the range specified by minimum and maximum. -->
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingDefaultFloat instead -->
     <integer name="config_screenBrightnessSettingDefault">102</integer>
 
-    <!-- Default screen brightness for VR setting. -->
+    <!-- Minimum screen brightness setting allowed by power manager.
+        The user is forbidden from setting the brightness below this level.
+        Equivalent to 10/255. -->
+    <item name="config_screenBrightnessSettingMinimumFloat" format="float" type="dimen">0.035433073</item>
+
+    <!-- Maximum screen brightness allowed by the power manager.
+         The user is forbidden from setting the brightness above this level.
+         This value is a fraction between 3.5% and 100%. -->
+    <item name="config_screenBrightnessSettingMaximumFloat" format="float" type="dimen">1.0</item>
+
+    <!-- Default screen brightness setting.
+         Must be in the range specified by minimum and maximum.
+         This value is a fraction between 3.5% and 100%.
+         Equivalent to 102/255 (default for this device)    -->
+    <item name="config_screenBrightnessSettingDefaultFloat" format="float" type="dimen">0.397637795276</item>
+
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingForVrDefaultFloat instead -->
     <integer name="config_screenBrightnessForVrSettingDefault">86</integer>
 
-    <!-- Minimum screen brightness setting allowed for VR. Device panels start increasing pulse
-         width as brightness decreases below this theshold. -->
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingForVrMinimumFloat instead -->
     <integer name="config_screenBrightnessForVrSettingMinimum">79</integer>
 
-    <!-- Maximum screen brightness setting allowed for VR. -->
+    <!-- Note: This setting is deprecated, please use
+    config_screenBrightnessSettingForVrMaximumFloat instead -->
     <integer name="config_screenBrightnessForVrSettingMaximum">255</integer>
 
+    <!-- Default screen brightness for VR setting as a float.
+    Equivalent to 86/255-->
+    <item name="config_screenBrightnessSettingForVrDefaultFloat" format="float" type="dimen">0.33464</item>
+
+    <!-- Minimum screen brightness setting allowed for VR. Device panels start increasing pulse
+     width as brightness decreases below this threshold as float.
+     Equivalent to 79/255 -->
+    <item name="config_screenBrightnessSettingForVrMinimumFloat" format="float" type="dimen">0.307087</item>
+
+    <!-- Maximum screen brightness setting allowed for VR as float. -->
+    <item name="config_screenBrightnessSettingForVrMaximumFloat" format="float" type="dimen">1.0</item>
+
     <!-- Screen brightness used to dim the screen while dozing in a very low power state.
          May be less than the minimum allowed brightness setting
          that can be set by the user. -->
     <integer name="config_screenBrightnessDoze">1</integer>
+    <item name="config_screenBrightnessDozeFloat" format="float" type="dimen">0.0</item>
 
     <!-- Delay that allows some content to arrive at the display before switching
          from DOZE to ON. -->
@@ -1339,6 +1375,7 @@
          timeout expires.  May be less than the minimum allowed brightness setting
          that can be set by the user. -->
     <integer name="config_screenBrightnessDim">10</integer>
+    <item name="config_screenBrightnessDimFloat" format="float" type="dimen">0.05</item>
 
     <!-- Minimum allowable screen brightness to use in a very dark room.
          This value sets the floor for the darkest possible auto-brightness
@@ -2281,6 +2318,9 @@
          movement threshold under which hover is considered "stationary". -->
     <dimen name="config_viewConfigurationHoverSlop">4dp</dimen>
 
+    <!-- Multiplier for gesture thresholds when a MotionEvent classification is ambiguous. -->
+    <item name="config_ambiguousGestureMultiplier" format="float" type="dimen">2.0</item>
+
     <!-- Minimum velocity to initiate a fling, as measured in dips per second. -->
     <dimen name="config_viewMinFlingVelocity">50dp</dimen>
 
@@ -2348,7 +2388,7 @@
          type. These are flags and can be freely combined.
          0  - disable whitelist (install all system packages; no logging)
          1  - enforce (only install system packages if they are whitelisted)
-         2  - log (log when a non-whitelisted package is run)
+         2  - log (log non-whitelisted packages)
          4  - any package not mentioned in the whitelist file is implicitly whitelisted on all users
          8  - same as 4, but just for the SYSTEM user
          16 - ignore OTAs (don't install system packages during OTAs)
@@ -2562,7 +2602,11 @@
     <string name="config_usbResolverActivity" translatable="false"
             >com.android.systemui/com.android.systemui.usb.UsbResolverActivity</string>
 
-    <!-- Name of the dialog that is used to request the user's consent to VPN connection -->
+    <!-- Name of the dialog that is used to request the user's consent for a Platform VPN -->
+    <string name="config_platformVpnConfirmDialogComponent" translatable="false"
+            >com.android.vpndialogs/com.android.vpndialogs.PlatformVpnConfirmDialog</string>
+
+    <!-- Name of the dialog that is used to request the user's consent for a VpnService VPN -->
     <string name="config_customVpnConfirmDialogComponent" translatable="false"
             >com.android.vpndialogs/com.android.vpndialogs.ConfirmDialog</string>
 
@@ -3395,8 +3439,8 @@
     <!-- True if assistant app should be pinned via Pinner Service -->
     <bool name="config_pinnerAssistantApp">false</bool>
 
-    <!-- List of files pinned by the Pinner Service with the apex boot image b/119800099 -->
-    <string-array translatable="false" name="config_apexBootImagePinnerServiceFiles">
+    <!-- List of files pinned by the Pinner Service with the JIT Zygote boot image b/119800099 -->
+    <string-array translatable="false" name="config_jitzygoteBootImagePinnerServiceFiles">
     </string-array>
 
     <!-- Number of days preloaded file cache should be preserved on a device before it can be
@@ -3553,25 +3597,16 @@
     -->
     <string name="config_defaultAutofillService" translatable="false"></string>
 
-    <!-- The package name for the default system textclassifier service.
+    <!-- The package name for the OEM custom system textclassifier service.
          This service must be trusted, as it can be activated without explicit consent of the user.
          Example: "com.android.textclassifier"
-         If no textclassifier service with the specified name exists on the device (or if this is
-         set to empty string), a default textclassifier will be loaded in the calling app's process.
+         If this is empty, the default textclassifier service (i.e. config_servicesExtensionPackage)
+         will be used.
+
          See android.view.textclassifier.TextClassificationManager.
     -->
-    <!-- TODO(b/144896755) remove the config -->
     <string name="config_defaultTextClassifierPackage" translatable="false"></string>
 
-    <!-- A list of supported system textClassifier service package names. Only one of the packages
-         will be activated. The first package in the list is the default system textClassifier
-         service. OS only tries to bind and grant permissions to the first trusted service and the
-         others can be selected via device config. These services must be trusted, as they can be
-         activated without explicit consent of the user. Example: "com.android.textclassifier"
-    -->
-    <string-array name="config_defaultTextClassifierPackages" translatable="false">
-        <item>android.ext.services</item>
-    </string-array>
 
     <!-- The package name for the system companion device manager service.
          This service must be trusted, as it can be activated without explicit consent of the user.
@@ -3587,7 +3622,6 @@
      -->
     <string name="config_defaultWellbeingPackage" translatable="false"></string>
 
-
     <!-- The package name for the system telephony apps.
          This package must be trusted, as it will be granted with permissions with special telephony
          protection level. Note, framework by default support multiple telephony apps, each package
@@ -3655,6 +3689,19 @@
     -->
     <string name="config_defaultContentSuggestionsService" translatable="false"></string>
 
+    <!-- The package name for the default retail demo app.
+         This package must be trusted, as it has the permissions to query the usage stats on the
+         device.
+         Example: "com.google.android.retaildemo"
+     -->
+    <string name="config_retailDemoPackage" translatable="false"></string>
+
+    <!-- The package signature hash for the default retail demo app.
+         This package must be trusted, as it has the permissions to query the usage stats on the
+         device.
+     -->
+    <string name="config_retailDemoPackageSignature" translatable="false"></string>
+
     <!-- Whether the device uses the default focus highlight when focus state isn't specified. -->
     <bool name="config_useDefaultFocusHighlight">true</bool>
 
@@ -3782,6 +3829,10 @@
          or empty if the default should be used. -->
     <string translatable="false" name="config_deviceSpecificAudioService"></string>
 
+    <!-- Class name of the device specific implementation of DisplayAreaPolicy.Provider
+         or empty if the default should be used. -->
+    <string translatable="false" name="config_deviceSpecificDisplayAreaPolicyProvider"></string>
+
     <!-- Component name of media projection permission dialog -->
     <string name="config_mediaProjectionPermissionDialogComponent" translatable="false">com.android.systemui/com.android.systemui.media.MediaProjectionPermissionActivity</string>
 
@@ -4320,4 +4371,20 @@
       <item>4</item> <!-- PROCESS_STATE_FOREGROUND_SERVICE -->
       <item>12</item> <!-- PROCESS_STATE_TOP_SLEEPING -->
     </integer-array>
+
+    <!-- Component name that accepts ACTION_SEND intents for nearby (proximity-based) sharing.
+         Used by ChooserActivity. -->
+    <string translatable="false" name="config_defaultNearbySharingComponent"></string>
+
+    <!-- Boolean indicating whether frameworks needs to reset cell broadcast geo-fencing
+         check after reboot or airplane mode toggling -->
+    <bool translatable="false" name="reset_geo_fencing_check_after_boot_or_apm">false</bool>
+
+    <!-- Screen Wake Keys
+         Determines whether the specified key groups can be used to wake up the device. -->
+    <bool name="config_wakeOnDpadKeyPress">true</bool>
+    <bool name="config_wakeOnAssistKeyPress">true</bool>
+
+    <!-- Whether to default to an expanded list of users on the lock screen user switcher. -->
+    <bool name="config_expandLockScreenUserSwitcher">false</bool>
 </resources>
diff --git a/core/res/res/values/dimens.xml b/core/res/res/values/dimens.xml
index d437aa1..c44a0be 100644
--- a/core/res/res/values/dimens.xml
+++ b/core/res/res/values/dimens.xml
@@ -33,9 +33,11 @@
     <dimen name="toast_y_offset">24dp</dimen>
     <!-- Height of the status bar -->
     <dimen name="status_bar_height">@dimen/status_bar_height_portrait</dimen>
-    <!-- Height of the status bar in portrait -->
+    <!-- Height of the status bar in portrait. The height should be
+         Max((status bar content height + waterfall top size), top cutout size) -->
     <dimen name="status_bar_height_portrait">24dp</dimen>
-    <!-- Height of the status bar in landscape -->
+    <!-- Height of the status bar in landscape. The height should be
+         Max((status bar content height + waterfall top size), top cutout size) -->
     <dimen name="status_bar_height_landscape">@dimen/status_bar_height_portrait</dimen>
     <!-- Height of area above QQS where battery/time go -->
     <dimen name="quick_qs_offset_height">48dp</dimen>
@@ -773,6 +775,10 @@
     <dimen name="resolver_small_margin">18dp</dimen>
     <dimen name="resolver_edge_margin">24dp</dimen>
     <dimen name="resolver_elevation">1dp</dimen>
+    <dimen name="resolver_empty_state_height">212dp</dimen>
+    <dimen name="resolver_empty_state_height_with_tabs">268dp</dimen>
+
+    <dimen name="chooser_action_button_icon_size">18dp</dimen>
 
     <!-- Assistant handles -->
     <dimen name="assist_handle_shadow_radius">2dp</dimen>
diff --git a/core/res/res/values/ids.xml b/core/res/res/values/ids.xml
index ddd9ba4..bddda1b 100644
--- a/core/res/res/values/ids.xml
+++ b/core/res/res/values/ids.xml
@@ -194,6 +194,9 @@
   <!-- A tag used to save the index where the custom view is stored -->
   <item type="id" name="notification_custom_view_index_tag" />
 
+  <!-- Marks the "copy to clipboard" button in the ChooserActivity -->
+  <item type="id" name="chooser_copy_button" />
+
   <!-- Accessibility action identifier for {@link android.accessibilityservice.AccessibilityService#GLOBAL_ACTION_BACK}. -->
   <item type="id" name="accessibilitySystemActionBack" />
 
@@ -223,4 +226,7 @@
 
   <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_PRESS_AND_HOLD}. -->
   <item type="id" name="accessibilityActionPressAndHold" />
+
+  <!-- Accessibility action identifier for {@link android.view.accessibility.AccessibilityNodeInfo.AccessibilityAction#ACTION_IME_ENTER}. -->
+  <item type="id" name="accessibilityActionImeEnter" />
 </resources>
diff --git a/core/res/res/values/public.xml b/core/res/res/values/public.xml
index 4f61730a..4172044 100644
--- a/core/res/res/values/public.xml
+++ b/core/res/res/values/public.xml
@@ -3066,6 +3066,7 @@
       <public name="accessibilitySystemActionToggleSplitScreen" />
       <public name="accessibilitySystemActionLockScreen" />
       <public name="accessibilitySystemActionTakeScreenshot" />
+      <public name="accessibilityActionImeEnter" />
     </public-group>
 
     <public-group type="array" first-id="0x01070006">
diff --git a/core/res/res/values/strings.xml b/core/res/res/values/strings.xml
index 11cc365..e6a93e5 100644
--- a/core/res/res/values/strings.xml
+++ b/core/res/res/values/strings.xml
@@ -414,6 +414,14 @@
          logging. [CHAR LIMIT=NONE]-->
     <string name="network_logging_notification_text">Your organization manages this device and may monitor network traffic. Tap for details.</string>
 
+    <!-- Content title for a notification. This notification indicates that the device owner has
+         changed the location settings. [CHAR LIMIT=NONE] -->
+    <string name="location_changed_notification_title">Location settings changed by your admin</string>
+    <!-- Content text for a notification. Tapping opens device location settings.
+         [CHAR LIMIT=NONE] -->
+    <string name="location_changed_notification_text">Tap to see your location settings.</string>
+
+
     <!-- Factory reset warning dialog strings--> <skip />
     <!-- Shows up in the dialog's title to warn about an impeding factory reset. [CHAR LIMIT=NONE] -->
     <string name="factory_reset_warning">Your device will be erased</string>
@@ -1148,6 +1156,8 @@
     <string name="permlab_vibrate">control vibration</string>
     <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permdesc_vibrate">Allows the app to control the vibrator.</string>
+    <!-- Description of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
+    <string name="permdesc_vibrator_state">Allows the app to access the vibrator state.</string>
 
     <!-- Title of an application permission, listed so the user can choose whether they want to allow the application to do this. -->
     <string name="permlab_callPhone">directly call phone numbers</string>
@@ -1473,6 +1483,8 @@
     <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>
+    <!-- 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>
 
     <!-- Template to be used to name enrolled fingerprints by default. -->
     <string name="fingerprint_name_template">Finger <xliff:g id="fingerId" example="1">%d</xliff:g></string>
@@ -1564,6 +1576,8 @@
     <string name="face_error_not_enrolled">You haven\u2019t set up face unlock.</string>
     <!-- Generic error message shown when the app requests face unlock on a device without a sensor. [CHAR LIMIT=61] -->
     <string name="face_error_hw_not_present">Face unlock is not supported on this device.</string>
+    <!-- Generic error message shown when face unlock is not available due to a security vulnerability. [CHAR LIMIT=50] -->
+    <string name="face_error_security_update_required">Sensor temporarily disabled.</string>
 
     <!-- Template to be used to name enrolled faces by default. [CHAR LIMIT=10] -->
     <string name="face_name_template">Face <xliff:g id="faceId" example="1">%d</xliff:g></string>
@@ -4362,10 +4376,7 @@
     service via the volume buttons shortcut for the first time. [CHAR LIMIT=none] -->
     <string name="accessibility_shortcut_toogle_warning">
         When the shortcut is on, pressing both volume buttons for 3 seconds will start an
-        accessibility feature.\n\n
-        Current accessibility feature:\n
-        <xliff:g id="service_name" example="TalkBack">%1$s</xliff:g>\n\n
-        You can change the feature in Settings > Accessibility.
+        accessibility feature.
     </string>
 
     <!-- Text in button that edit the accessibility shortcut menu, user can delete
@@ -4936,6 +4947,13 @@
     <!-- Title for button to turn on work profile. [CHAR LIMIT=NONE] -->
     <string name="work_mode_turn_on">Turn on</string>
 
+    <!-- Title of the dialog that is shown when the user tries to launch a blocked application [CHAR LIMIT=50] -->
+    <string name="app_blocked_title">App is not available</string>
+    <!-- Default message shown in the dialog that is shown when the user tries to launch a blocked application [CHAR LIMIT=NONE] -->
+    <string name="app_blocked_message">
+        <xliff:g id="app_name" example="Gmail">%1$s</xliff:g> is not available right now.
+    </string>
+
     <!-- Message displayed in dialog when app is too old to run on this verison of android. [CHAR LIMIT=NONE] -->
     <string name="deprecated_target_sdk_message">This app was built for an older version of Android and may not work properly. Try checking for updates, or contact the developer.</string>
     <!-- Title for button to see application detail in app store which it came from - it may allow user to update to newer version. [CHAR LIMIT=50] -->
@@ -5326,6 +5344,24 @@
         <xliff:g id="package_name" example="com.android.example">%1$s</xliff:g> has been put into the RESTRICTED bucket</string>
 
     <!-- ResolverActivity - profile tabs -->
+    <!-- Label for the perosnal tab of the share sheet and intent resolver [CHAR LIMIT=NONE] -->
     <string name="resolver_personal_tab">Personal</string>
+    <!-- Label for the work tab of the share sheet and intent resolver [CHAR LIMIT=NONE] -->
     <string name="resolver_work_tab">Work</string>
+    <!-- Label to indicate that the user cannot share with work apps [CHAR LIMIT=NONE] -->
+    <string name="resolver_cant_share_with_work_apps">Can\u2019t share with work apps</string>
+    <!-- Label to indicate that the user cannot share with personal apps [CHAR LIMIT=NONE] -->
+    <string name="resolver_cant_share_with_personal_apps">Can\u2019t share with personal apps</string>
+    <!-- Label to explain to the user that sharing between personal and work apps is not enabled by the IT admin [CHAR LIMIT=NONE] -->
+    <string name="resolver_cant_share_cross_profile_explanation">Your IT admin blocked sharing between personal and work apps</string>
+    <!-- Label to indicate that the user has to turn on work apps in order to access work data [CHAR LIMIT=NONE] -->
+    <string name="resolver_turn_on_work_apps">Turn on work apps</string>
+    <!-- Label to explain that the user has to turn on work apps in order to access work data [CHAR LIMIT=NONE] -->
+    <string name="resolver_turn_on_work_apps_explanation">Turn on work apps to access work apps &amp; contacts</string>
+    <!-- Label to indicate that no apps are resolved [CHAR LIMIT=NONE] -->
+    <string name="resolver_no_apps_available">No apps available</string>
+    <!-- Label to explain that no apps are resolved [CHAR LIMIT=NONE] -->
+    <string name="resolver_no_apps_available_explanation">We couldn\u2019t find any apps</string>
+    <!-- Button which switches on the disabled work profile [CHAR LIMIT=NONE] -->
+    <string name="resolver_switch_on_work">Switch on work</string>
 </resources>
diff --git a/core/res/res/values/styles_device_defaults.xml b/core/res/res/values/styles_device_defaults.xml
index c63be7b..64768cf 100644
--- a/core/res/res/values/styles_device_defaults.xml
+++ b/core/res/res/values/styles_device_defaults.xml
@@ -285,7 +285,7 @@
         <item name="fontFamily">@string/config_bodyFontFamily</item>
     </style>
     <style name="TextAppearance.DeviceDefault.Notification" parent="TextAppearance.Material.Notification">
-        <item name="fontFamily">@string/config_headlineFontFamily</item>
+        <item name="fontFamily">@string/config_bodyFontFamily</item>
     </style>
     <style name="TextAppearance.DeviceDefault.Notification.Title" parent="TextAppearance.Material.Notification.Title">
         <item name="fontFamily">@string/config_headlineFontFamilyMedium</item>
diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml
index d238485..5aefe11 100644
--- a/core/res/res/values/symbols.xml
+++ b/core/res/res/values/symbols.xml
@@ -66,8 +66,7 @@
   <java-symbol type="id" name="content_preview_text_layout" />
   <java-symbol type="id" name="content_preview_title" />
   <java-symbol type="id" name="content_preview_title_layout" />
-  <java-symbol type="id" name="copy_button" />
-  <java-symbol type="id" name="file_copy_button" />
+  <java-symbol type="id" name="chooser_action_row" />
   <java-symbol type="id" name="current_scene" />
   <java-symbol type="id" name="scene_layoutid_cache" />
   <java-symbol type="id" name="customPanel" />
@@ -287,6 +286,7 @@
   <java-symbol type="bool" name="config_duplicate_port_omadm_wappush" />
   <java-symbol type="bool" name="config_disableTransitionAnimation" />
   <java-symbol type="bool" name="config_enableAutoPowerModes" />
+  <java-symbol type="bool" name="config_useWebViewPacProcessor" />
   <java-symbol type="integer" name="config_autoPowerModeThresholdAngle" />
   <java-symbol type="integer" name="config_autoPowerModeAnyMotionSensor" />
   <java-symbol type="bool" name="config_autoPowerModePreferWristTilt" />
@@ -482,6 +482,7 @@
   <java-symbol type="dimen" name="config_prefDialogWidth" />
   <java-symbol type="dimen" name="config_viewConfigurationTouchSlop" />
   <java-symbol type="dimen" name="config_viewConfigurationHoverSlop" />
+  <java-symbol type="dimen" name="config_ambiguousGestureMultiplier" />
   <java-symbol type="dimen" name="config_viewMinFlingVelocity" />
   <java-symbol type="dimen" name="config_viewMaxFlingVelocity" />
   <java-symbol type="dimen" name="config_scrollbarSize" />
@@ -1213,6 +1214,8 @@
   <java-symbol type="string" name="device_ownership_relinquished" />
   <java-symbol type="string" name="network_logging_notification_title" />
   <java-symbol type="string" name="network_logging_notification_text" />
+  <java-symbol type="string" name="location_changed_notification_title" />
+  <java-symbol type="string" name="location_changed_notification_text" />
   <java-symbol type="string" name="personal_apps_suspended_notification_title" />
   <java-symbol type="string" name="personal_apps_suspended_notification_text" />
   <java-symbol type="string" name="factory_reset_warning" />
@@ -1266,6 +1269,7 @@
   <java-symbol type="array" name="vendor_disallowed_apps_managed_profile" />
   <java-symbol type="array" name="vendor_disallowed_apps_managed_device" />
   <java-symbol type="array" name="cross_profile_apps" />
+  <java-symbol type="array" name="vendor_cross_profile_apps" />
 
   <java-symbol type="drawable" name="default_wallpaper" />
   <java-symbol type="drawable" name="default_lock_wallpaper" />
@@ -1557,6 +1561,7 @@
   <java-symbol type="layout" name="notification_material_media_seekbar" />
   <java-symbol type="layout" name="resolver_list_per_profile" />
   <java-symbol type="layout" name="chooser_list_per_profile" />
+  <java-symbol type="layout" name="resolver_empty_states" />
 
   <java-symbol type="anim" name="slide_in_child_bottom" />
   <java-symbol type="anim" name="slide_in_right" />
@@ -1977,6 +1982,14 @@
   <java-symbol type="integer" name="config_screenBrightnessForVrSettingDefault" />
   <java-symbol type="integer" name="config_screenBrightnessForVrSettingMaximum" />
   <java-symbol type="integer" name="config_screenBrightnessForVrSettingMinimum" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingForVrMinimumFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingForVrMaximumFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingForVrDefaultFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingMinimumFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingMaximumFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessSettingDefaultFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessDozeFloat" />
+  <java-symbol type="dimen" name="config_screenBrightnessDimFloat" />
   <java-symbol type="integer" name="config_screenBrightnessDark" />
   <java-symbol type="integer" name="config_screenBrightnessDim" />
   <java-symbol type="integer" name="config_screenBrightnessDoze" />
@@ -2142,6 +2155,7 @@
   <java-symbol type="string" name="config_customAdbPublicKeyConfirmationSecondaryUserComponent" />
   <java-symbol type="string" name="config_customVpnConfirmDialogComponent" />
   <java-symbol type="string" name="config_customVpnAlwaysOnDisconnectedDialogComponent" />
+  <java-symbol type="string" name="config_platformVpnConfirmDialogComponent" />
   <java-symbol type="string" name="config_carrierAppInstallDialogComponent" />
   <java-symbol type="string" name="config_defaultNetworkScorerPackageName" />
   <java-symbol type="string" name="config_persistentDataPackageName" />
@@ -2444,6 +2458,7 @@
   <java-symbol type="string" name="fingerprint_authenticated" />
   <java-symbol type="string" name="fingerprint_error_no_fingerprints" />
   <java-symbol type="string" name="fingerprint_error_hw_not_present" />
+  <java-symbol type="string" name="fingerprint_error_security_update_required" />
 
   <!-- Fingerprint config -->
   <java-symbol type="integer" name="config_fingerprintMaxTemplatesPerUser"/>
@@ -2488,6 +2503,7 @@
   <java-symbol type="string" name="face_name_template" />
   <java-symbol type="string" name="face_authenticated_no_confirmation_required" />
   <java-symbol type="string" name="face_authenticated_confirmation_required" />
+  <java-symbol type="string" name="face_error_security_update_required" />
 
   <java-symbol type="array" name="config_biometric_sensors" />
 
@@ -3026,12 +3042,16 @@
   <java-symbol type="id" name="notification_action_list_margin_target" />
   <java-symbol type="dimen" name="notification_action_disabled_alpha" />
 
+  <!-- Override Wake Key Behavior When Screen is Off -->
+  <java-symbol type="bool" name="config_wakeOnDpadKeyPress" />
+  <java-symbol type="bool" name="config_wakeOnAssistKeyPress" />
+
   <!-- Pinner Service -->
   <java-symbol type="array" name="config_defaultPinnerServiceFiles" />
   <java-symbol type="bool" name="config_pinnerCameraApp" />
   <java-symbol type="bool" name="config_pinnerHomeApp" />
   <java-symbol type="bool" name="config_pinnerAssistantApp" />
-  <java-symbol type="array" name="config_apexBootImagePinnerServiceFiles" />
+  <java-symbol type="array" name="config_jitzygoteBootImagePinnerServiceFiles" />
 
   <java-symbol type="string" name="config_doubleTouchGestureEnableFile" />
 
@@ -3042,6 +3062,9 @@
   <java-symbol type="string" name="app_suspended_unsuspend_message" />
   <java-symbol type="string" name="app_suspended_default_message" />
 
+  <java-symbol type="string" name="app_blocked_title" />
+  <java-symbol type="string" name="app_blocked_message" />
+
   <!-- Used internally for assistant to launch activity transitions -->
   <java-symbol type="id" name="cross_task_transition" />
 
@@ -3225,7 +3248,6 @@
   <java-symbol type="drawable" name="ic_accessibility_magnification" />
 
   <java-symbol type="drawable" name="ic_delete_item" />
-  <java-symbol type="drawable" name="ic_open_in_new" />
 
   <!-- com.android.internal.widget.RecyclerView -->
   <java-symbol type="id" name="item_touch_helper_previous_elevation"/>
@@ -3385,7 +3407,6 @@
   <java-symbol type="string" name="notification_channel_do_not_disturb" />
   <java-symbol type="string" name="config_defaultAutofillService" />
   <java-symbol type="string" name="config_defaultTextClassifierPackage" />
-  <java-symbol type="array" name="config_defaultTextClassifierPackages" />
   <java-symbol type="string" name="config_defaultWellbeingPackage" />
   <java-symbol type="string" name="config_telephonyPackages" />
   <java-symbol type="string" name="config_defaultContentCaptureService" />
@@ -3395,6 +3416,8 @@
   <java-symbol type="string" name="config_defaultAttentionService" />
   <java-symbol type="string" name="config_defaultSystemCaptionsService" />
   <java-symbol type="string" name="config_defaultSystemCaptionsManagerService" />
+  <java-symbol type="string" name="config_retailDemoPackage" />
+  <java-symbol type="string" name="config_retailDemoPackageSignature" />
 
   <java-symbol type="string" name="notification_channel_foreground_service" />
   <java-symbol type="string" name="foreground_service_app_in_background" />
@@ -3782,6 +3805,11 @@
   <java-symbol type="string" name="config_factoryResetPackage" />
   <java-symbol type="array" name="config_highRefreshRateBlacklist" />
 
+  <java-symbol type="id" name="chooser_copy_button" />
+  <java-symbol type="layout" name="chooser_action_button" />
+  <java-symbol type="dimen" name="chooser_action_button_icon_size" />
+  <java-symbol type="string" name="config_defaultNearbySharingComponent" />
+
   <java-symbol type="bool" name="config_automotiveHideNavBarForKeyboard" />
 
   <java-symbol type="bool" name="config_showBuiltinWirelessChargingAnim" />
@@ -3846,7 +3874,32 @@
   <java-symbol type="string" name="resolver_personal_tab" />
   <java-symbol type="string" name="resolver_work_tab" />
   <java-symbol type="id" name="stub" />
+  <java-symbol type="id" name="resolver_empty_state" />
+  <java-symbol type="id" name="resolver_empty_state_icon" />
+  <java-symbol type="id" name="resolver_empty_state_title" />
+  <java-symbol type="id" name="resolver_empty_state_subtitle" />
+  <java-symbol type="id" name="resolver_empty_state_button" />
+  <java-symbol type="string" name="resolver_cant_share_with_work_apps" />
+  <java-symbol type="string" name="resolver_cant_share_with_personal_apps" />
+  <java-symbol type="string" name="resolver_cant_share_cross_profile_explanation" />
+  <java-symbol type="string" name="resolver_turn_on_work_apps" />
+  <java-symbol type="string" name="resolver_turn_on_work_apps_explanation" />
+  <java-symbol type="string" name="resolver_no_apps_available" />
+  <java-symbol type="string" name="resolver_no_apps_available_explanation" />
+  <java-symbol type="string" name="resolver_no_apps_available_explanation" />
+  <java-symbol type="string" name="resolver_switch_on_work" />
+  <java-symbol type="drawable" name="ic_work_apps_off" />
+  <java-symbol type="drawable" name="ic_sharing_disabled" />
+  <java-symbol type="drawable" name="ic_no_apps" />
+  <java-symbol type="dimen" name="resolver_empty_state_height" />
+  <java-symbol type="dimen" name="resolver_empty_state_height_with_tabs" />
+  <java-symbol type="bool" name="sharesheet_show_content_preview" />
 
   <!-- Toast message for background started foreground service while-in-use permission restriction feature -->
   <java-symbol type="string" name="allow_while_in_use_permission_in_fgs" />
+
+  <java-symbol type="string" name="config_deviceSpecificDisplayAreaPolicyProvider" />
+
+  <!-- Whether to expand the lock screen user switcher by default -->
+  <java-symbol type="bool" name="config_expandLockScreenUserSwitcher" />
 </resources>
diff --git a/core/res/res/values/themes_device_defaults.xml b/core/res/res/values/themes_device_defaults.xml
index cef21db..81ec278 100644
--- a/core/res/res/values/themes_device_defaults.xml
+++ b/core/res/res/values/themes_device_defaults.xml
@@ -1679,6 +1679,15 @@
         <item name="listPreferredItemPaddingStart">?attr/dialogPreferredPadding</item>
         <item name="listPreferredItemPaddingEnd">?attr/dialogPreferredPadding</item>
         <item name="navigationBarColor">@android:color/transparent</item>
+        <item name="tabWidgetStyle">@style/Widget.DeviceDefault.Resolver.TabWidget</item>
+    </style>
+
+    <style name="Widget.DeviceDefault.Resolver.TabWidget" parent="Widget.DeviceDefault.TabWidget">
+        <item name="tabLayout">@layout/tab_indicator_resolver</item>
+    </style>
+
+    <style name="Widget.Material.Resolver.Tab" parent="Widget.Material.Tab">
+        <item name="background">@drawable/tab_indicator_resolver</item>
     </style>
 
     <style name="Theme.DeviceDefault.Resolver" parent="Theme.DeviceDefault.ResolverCommon">
diff --git a/core/res/res/values/vendor_cross_profile_apps.xml b/core/res/res/values/vendor_cross_profile_apps.xml
new file mode 100644
index 0000000..32839cd
--- /dev/null
+++ b/core/res/res/values/vendor_cross_profile_apps.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<resources>
+    <!--
+    A collection of apps that have been pre-approved for cross-profile communication.
+    These will not require admin consent, but will still require user consent during provisioning.
+    -->
+    <string-array translatable="false" name="vendor_cross_profile_apps">
+    </string-array>
+</resources>
diff --git a/core/res/res/xml/default_zen_mode_config.xml b/core/res/res/xml/default_zen_mode_config.xml
index 6cf6a82..9110661 100644
--- a/core/res/res/xml/default_zen_mode_config.xml
+++ b/core/res/res/xml/default_zen_mode_config.xml
@@ -18,9 +18,10 @@
 -->
 
 <!-- Default configuration for zen mode.  See android.service.notification.ZenModeConfig. -->
-<zen version="8">
+<zen version="9">
     <allow alarms="true" media="true" system="false" calls="true" callsFrom="2" messages="false"
-           reminders="false" events="false" repeatCallers="true" />
+            reminders="false" events="false" repeatCallers="true" conversations="true"
+            conversationsFrom="2"/>
     <automatic ruleId="EVENTS_DEFAULT_RULE" enabled="false" snoozing="false" name="Event" zen="1"
                component="android/com.android.server.notification.EventConditionProvider"
                conditionId="condition://android/event?userId=-10000&amp;calendar=&amp;reply=1"/>
diff --git a/core/res/res/xml/sms_short_codes.xml b/core/res/res/xml/sms_short_codes.xml
index 2d1c61c..70917e7 100644
--- a/core/res/res/xml/sms_short_codes.xml
+++ b/core/res/res/xml/sms_short_codes.xml
@@ -34,11 +34,14 @@
          http://smscoin.net/software/engine/WordPress/Paid+SMS-registration/ -->
 
     <!-- Arab Emirates -->
-    <shortcode country="ae" pattern="\\d{1,5}" free="3214|1017" />
+    <shortcode country="ae" pattern="\\d{1,5}" free="1017|1355|3214" />
 
     <!-- Albania: 5 digits, known short codes listed -->
     <shortcode country="al" pattern="\\d{5}" premium="15191|55[56]00" />
 
+    <!-- Argentia: 5 digits, known short codes listed -->
+    <shortcode country="ar" pattern="\\d{5}" free="11711|28291" />
+
     <!-- Armenia: 3-4 digits, emergency numbers 10[123] -->
     <shortcode country="am" pattern="\\d{3,4}" premium="11[2456]1|3024" free="10[123]" />
 
@@ -80,7 +83,7 @@
     <shortcode country="cn" premium="1066.*" free="1065.*" />
 
     <!-- Colombia: 1-6 digits (not confirmed) -->
-    <shortcode country="co" pattern="\\d{1,6}" free="890350|908160" />
+    <shortcode country="co" pattern="\\d{1,6}" free="890350|908160|892255|898002|898880|899960" />
 
     <!-- Cyprus: 4-6 digits (not confirmed), known premium codes listed, plus EU -->
     <shortcode country="cy" pattern="\\d{4,6}" premium="7510" free="116\\d{3}" />
@@ -181,7 +184,7 @@
     <shortcode country="mk" pattern="\\d{1,6}" free="129005|122" />
 
     <!-- Mexico: 4-5 digits (not confirmed), known premium codes listed -->
-    <shortcode country="mx" pattern="\\d{4,5}" premium="53035|7766" free="46645|5050|26259|50025|50052|9963|76551" />
+    <shortcode country="mx" pattern="\\d{4,5}" premium="53035|7766" free="26259|46645|50025|50052|5050|76551|88778|9963" />
 
     <!-- Malaysia: 5 digits: http://www.skmm.gov.my/attachment/Consumer_Regulation/Mobile_Content_Services_FAQs.pdf -->
     <shortcode country="my" pattern="\\d{5}" premium="32298|33776" free="22099|28288" />
@@ -196,7 +199,7 @@
     <shortcode country="no" pattern="\\d{4,5}" premium="2201|222[67]" free="2171" />
 
     <!-- New Zealand: 3-4 digits, known premium codes listed -->
-    <shortcode country="nz" pattern="\\d{3,4}" premium="3903|8995|4679" free="1737|2141|3067|3068|3110|4006|4053|4061|4062|4202|4300|4334|4412|4575|5626|8006|8681" />
+    <shortcode country="nz" pattern="\\d{3,4}" premium="3903|8995|4679" free="1737|176|2141|3067|3068|3110|4006|4053|4061|4062|4202|4300|4334|4412|4575|5626|8006|8681" />
 
     <!-- Peru: 4-5 digits (not confirmed), known premium codes listed -->
     <shortcode country="pe" pattern="\\d{4,5}" free="9963" />
@@ -264,4 +267,7 @@
     <!-- Mayotte (French Territory): 1-5 digits (not confirmed) -->
     <shortcode country="yt" pattern="\\d{1,5}" free="38600,36300,36303,959" />
 
+    <!-- South Africa -->
+    <shortcode country="za" pattern="\d{1,5}" free="44136" />
+
 </shortcodes>
diff --git a/core/tests/PlatformCompatFramework/src/com/android/internal/compat/ChangeReporterTest.java b/core/tests/PlatformCompatFramework/src/com/android/internal/compat/ChangeReporterTest.java
index 09bbe37..a052543 100644
--- a/core/tests/PlatformCompatFramework/src/com/android/internal/compat/ChangeReporterTest.java
+++ b/core/tests/PlatformCompatFramework/src/com/android/internal/compat/ChangeReporterTest.java
@@ -24,10 +24,10 @@
 public class ChangeReporterTest {
     @Test
     public void testStatsLogOnce() {
-        ChangeReporter reporter = new ChangeReporter(0);
+        ChangeReporter reporter = new ChangeReporter(ChangeReporter.SOURCE_UNKNOWN_SOURCE);
         int myUid = 1022, otherUid = 1023;
         long myChangeId = 500L, otherChangeId = 600L;
-        int myState = 1, otherState = 2;
+        int myState = ChangeReporter.STATE_ENABLED, otherState = ChangeReporter.STATE_DISABLED;
 
         assertTrue(reporter.shouldWriteToStatsLog(myUid, myChangeId, myState));
         reporter.reportChange(myUid, myChangeId, myState);
@@ -42,10 +42,10 @@
 
     @Test
     public void testStatsLogAfterReset() {
-        ChangeReporter reporter = new ChangeReporter(0);
+        ChangeReporter reporter = new ChangeReporter(ChangeReporter.SOURCE_UNKNOWN_SOURCE);
         int myUid = 1022;
         long myChangeId = 500L;
-        int myState = 1;
+        int myState = ChangeReporter.STATE_ENABLED;
 
         assertTrue(reporter.shouldWriteToStatsLog(myUid, myChangeId, myState));
         reporter.reportChange(myUid, myChangeId, myState);
@@ -60,10 +60,10 @@
 
     @Test
     public void testDebugLogOnce() {
-        ChangeReporter reporter = new ChangeReporter(0);
+        ChangeReporter reporter = new ChangeReporter(ChangeReporter.SOURCE_UNKNOWN_SOURCE);
         int myUid = 1022, otherUid = 1023;
         long myChangeId = 500L, otherChangeId = 600L;
-        int myState = 1, otherState = 2;
+        int myState = ChangeReporter.STATE_ENABLED, otherState = ChangeReporter.STATE_DISABLED;
 
         assertTrue(reporter.shouldWriteToDebug(myUid, myChangeId, myState));
         reporter.reportChange(myUid, myChangeId, myState);
@@ -78,10 +78,10 @@
 
     @Test
     public void testDebugLogAfterReset() {
-        ChangeReporter reporter = new ChangeReporter(0);
+        ChangeReporter reporter = new ChangeReporter(ChangeReporter.SOURCE_UNKNOWN_SOURCE);
         int myUid = 1022;
         long myChangeId = 500L;
-        int myState = 1;
+        int myState = ChangeReporter.STATE_ENABLED;
 
         assertTrue(reporter.shouldWriteToDebug(myUid, myChangeId, myState));
         reporter.reportChange(myUid, myChangeId, myState);
@@ -96,10 +96,10 @@
 
     @Test
     public void testDebugLogWithLogAll() {
-        ChangeReporter reporter = new ChangeReporter(0);
+        ChangeReporter reporter = new ChangeReporter(ChangeReporter.SOURCE_UNKNOWN_SOURCE);
         int myUid = 1022;
         long myChangeId = 500L;
-        int myState = 1;
+        int myState = ChangeReporter.STATE_ENABLED;
 
         assertTrue(reporter.shouldWriteToDebug(myUid, myChangeId, myState));
         reporter.reportChange(myUid, myChangeId, myState);
diff --git a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/DirectoryAssetsProviderTest.kt b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/DirectoryAssetsProviderTest.kt
index 9e94bdc..afe9d7f 100644
--- a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/DirectoryAssetsProviderTest.kt
+++ b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/DirectoryAssetsProviderTest.kt
@@ -44,7 +44,7 @@
         testDir = context.filesDir.resolve("DirectoryAssetsProvider_${testName.methodName}")
         assetsProvider = DirectoryAssetsProvider(testDir)
         loader = ResourcesLoader()
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
     }
 
     @After
diff --git a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderAssetsTest.kt b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderAssetsTest.kt
index e3ba93d..da5092d 100644
--- a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderAssetsTest.kt
+++ b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderAssetsTest.kt
@@ -119,7 +119,7 @@
 
         val loader = ResourcesLoader()
         loader.providers = listOf(one, two)
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
 
         assertOpenedAsset()
         inOrder(two.assetsProvider, one.assetsProvider).apply {
@@ -149,7 +149,7 @@
         val loader2 = ResourcesLoader()
         loader2.addProvider(two)
 
-        resources.loaders = listOf(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
 
         assertOpenedAsset()
         inOrder(two.assetsProvider, one.assetsProvider).apply {
@@ -170,7 +170,7 @@
         val loader = ResourcesLoader()
         val one = ResourcesProvider.empty(assetsProvider1)
         val two = ResourcesProvider.empty(assetsProvider2)
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.providers = listOf(one, two)
 
         assertOpenedAsset()
@@ -186,7 +186,7 @@
         val loader = ResourcesLoader()
         val one = ResourcesProvider.empty(assetsProvider1)
         val two = ResourcesProvider.empty(assetsProvider2)
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.providers = listOf(one, two)
 
         assertOpenedAsset()
@@ -202,7 +202,7 @@
         val loader = ResourcesLoader()
         val one = ResourcesProvider.empty(assetsProvider1)
         val two = ResourcesProvider.empty(assetsProvider2)
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.providers = listOf(one, two)
 
         assertOpenedAsset()
diff --git a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderValuesTest.kt b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderValuesTest.kt
index 0cc56d7..16eafcd 100644
--- a/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderValuesTest.kt
+++ b/core/tests/ResourceLoaderTests/src/android/content/res/loader/test/ResourceLoaderValuesTest.kt
@@ -192,13 +192,13 @@
     }
 
     @Test
-    fun addMultipleProviders() {
+    fun addProvidersRepeatedly() {
         val originalValue = getValue()
         val testOne = openOne()
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.addProvider(testOne)
         assertEquals(valueOne, getValue())
 
@@ -213,25 +213,25 @@
     }
 
     @Test
-    fun addMultipleLoaders() {
+    fun addLoadersRepeatedly() {
         val originalValue = getValue()
         val testOne = openOne()
         val testTwo = openTwo()
         val loader1 = ResourcesLoader()
         val loader2 = ResourcesLoader()
 
-        resources.addLoader(loader1)
+        resources.addLoaders(loader1)
         loader1.addProvider(testOne)
         assertEquals(valueOne, getValue())
 
-        resources.addLoader(loader2)
+        resources.addLoaders(loader2)
         loader2.addProvider(testTwo)
         assertEquals(valueTwo, getValue())
 
-        resources.removeLoader(loader1)
+        resources.removeLoaders(loader1)
         assertEquals(valueTwo, getValue())
 
-        resources.removeLoader(loader2)
+        resources.removeLoaders(loader2)
         assertEquals(originalValue, getValue())
     }
 
@@ -242,7 +242,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.providers = listOf(testOne, testTwo)
         assertEquals(valueTwo, getValue())
 
@@ -254,20 +254,20 @@
     }
 
     @Test
-    fun setMultipleLoaders() {
+    fun addMultipleLoaders() {
         val originalValue = getValue()
         val loader1 = ResourcesLoader()
         loader1.addProvider(openOne())
         val loader2 = ResourcesLoader()
         loader2.addProvider(openTwo())
 
-        resources.loaders = listOf(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
         assertEquals(valueTwo, getValue())
 
-        resources.removeLoader(loader2)
+        resources.removeLoaders(loader2)
         assertEquals(valueOne, getValue())
 
-        resources.loaders = Collections.emptyList()
+        resources.removeLoaders(loader1)
         assertEquals(originalValue, getValue())
     }
 
@@ -291,7 +291,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.addProvider(testOne)
         loader.addProvider(testTwo)
         loader.addProvider(testOne)
@@ -308,9 +308,9 @@
         val loader2 = ResourcesLoader()
         loader2.addProvider(openTwo())
 
-        resources.addLoader(loader1)
-        resources.addLoader(loader2)
-        resources.addLoader(loader1)
+        resources.addLoaders(loader1)
+        resources.addLoaders(loader2)
+        resources.addLoaders(loader1)
 
         assertEquals(2, resources.loaders.size)
         assertEquals(resources.loaders[0], loader1)
@@ -323,7 +323,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.addProvider(testOne)
         loader.addProvider(testTwo)
 
@@ -341,12 +341,16 @@
         val loader2 = ResourcesLoader()
         loader2.addProvider(openTwo())
 
-        resources.loaders = listOf(loader1, loader2)
-        resources.removeLoader(loader1)
-        resources.removeLoader(loader1)
+        resources.addLoaders(loader1, loader2)
+        resources.removeLoaders(loader1)
+        resources.removeLoaders(loader1)
 
         assertEquals(1, resources.loaders.size)
         assertEquals(resources.loaders[0], loader2)
+
+        resources.removeLoaders(loader2, loader2)
+
+        assertEquals(0, resources.loaders.size)
     }
 
     @Test
@@ -355,7 +359,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.providers = listOf(testOne, testTwo)
         loader.providers = listOf(testOne, testTwo)
 
@@ -365,14 +369,14 @@
     }
 
     @Test
-    fun repeatedSetLoaders() {
+    fun repeatedAddMultipleLoaders() {
         val loader1 = ResourcesLoader()
         loader1.addProvider(openOne())
         val loader2 = ResourcesLoader()
         loader2.addProvider(openTwo())
 
-        resources.loaders = listOf(loader1, loader2)
-        resources.loaders = listOf(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
 
         assertEquals(2, resources.loaders.size)
         assertEquals(resources.loaders[0], loader1)
@@ -386,7 +390,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.addProvider(testOne)
         loader.addProvider(testTwo)
         assertEquals(valueTwo, getValue())
@@ -414,20 +418,20 @@
         val loader2 = ResourcesLoader()
         loader2.addProvider(testTwo)
 
-        resources.addLoader(loader1)
-        resources.addLoader(loader2)
+        resources.addLoaders(loader1)
+        resources.addLoaders(loader2)
         assertEquals(valueTwo, getValue())
 
-        resources.removeLoader(loader1)
+        resources.removeLoaders(loader1)
         assertEquals(valueTwo, getValue())
 
-        resources.addLoader(loader1)
+        resources.addLoaders(loader1)
         assertEquals(valueOne, getValue())
 
-        resources.removeLoader(loader2)
+        resources.removeLoaders(loader2)
         assertEquals(valueOne, getValue())
 
-        resources.removeLoader(loader1)
+        resources.removeLoaders(loader1)
         assertEquals(originalValue, getValue())
     }
 
@@ -444,10 +448,11 @@
         val loader2 = ResourcesLoader()
         loader2.providers = listOf(testThree, testFour)
 
-        resources.loaders = listOf(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
         assertEquals(valueFour, getValue())
 
-        resources.loaders = listOf(loader2, loader1)
+        resources.removeLoaders(loader1)
+        resources.addLoaders(loader1)
         assertEquals(valueTwo, getValue())
 
         loader1.removeProvider(testTwo)
@@ -471,7 +476,7 @@
         val loader2 = ResourcesLoader()
         loader2.addProvider(openTwo())
 
-        resources.loaders = listOf(loader1)
+        resources.addLoaders(loader1)
         assertEquals(valueOne, getValue())
 
         // The child context should include the loaders of the original context.
@@ -479,12 +484,12 @@
         assertEquals(valueOne, getValue(childContext))
 
         // Changing the loaders of the child context should not affect the original context.
-        childContext.resources.loaders = listOf(loader1, loader2)
+        childContext.resources.addLoaders(loader2)
         assertEquals(valueOne, getValue())
         assertEquals(valueTwo, getValue(childContext))
 
         // Changing the loaders of the original context should not affect the child context.
-        resources.removeLoader(loader1)
+        resources.removeLoaders(loader1)
         assertEquals(originalValue, getValue())
         assertEquals(valueTwo, getValue(childContext))
 
@@ -506,7 +511,7 @@
         val testTwo = openTwo()
         val loader = ResourcesLoader()
 
-        resources.addLoader(loader)
+        resources.addLoaders(loader)
         loader.addProvider(testOne)
         assertEquals(valueOne, getValue())
 
@@ -527,7 +532,7 @@
         assertEquals(originalValue, getValue())
         assertEquals(originalValue, getValue(childContext2))
 
-        childContext2.resources.addLoader(loader)
+        childContext2.resources.addLoaders(loader)
         assertEquals(originalValue, getValue())
         assertEquals(valueTwo, getValue(childContext))
         assertEquals(valueTwo, getValue(childContext2))
@@ -539,7 +544,7 @@
         loader.addProvider(openOne())
 
         val applicationContext = context.applicationContext
-        applicationContext.resources.addLoader(loader)
+        applicationContext.resources.addLoaders(loader)
         assertEquals(valueOne, getValue(applicationContext))
 
         val activity = mTestActivityRule.launchActivity(Intent())
@@ -556,7 +561,7 @@
         loader2.addProvider(openTwo())
 
         val applicationContext = context.applicationContext
-        applicationContext.resources.addLoader(loader1)
+        applicationContext.resources.addLoaders(loader1)
         assertEquals(valueOne, getValue(applicationContext))
 
         var token: IBinder? = null
@@ -569,7 +574,7 @@
             assertEquals(valueOne, getValue(applicationContext))
             assertEquals(valueOne, getValue(activity))
 
-            activity.resources.addLoader(loader2)
+            activity.resources.addLoaders(loader2)
             assertEquals(valueOne, getValue(applicationContext))
             assertEquals(valueTwo, getValue(activity))
 
@@ -598,10 +603,11 @@
         loader2.addProvider(provider1)
         loader2.addProvider(openTwo())
 
-        resources.loaders = listOf(loader1, loader2)
+        resources.addLoaders(loader1, loader2)
         assertEquals(valueTwo, getValue())
 
-        resources.loaders = listOf(loader2, loader1)
+        resources.removeLoaders(loader1)
+        resources.addLoaders(loader1)
         assertEquals(valueOne, getValue())
 
         assertEquals(2, resources.assets.apkAssets.count { apkAssets -> apkAssets.isForLoader })
diff --git a/core/tests/coretests/Android.bp b/core/tests/coretests/Android.bp
index 38454ec..18778b9 100644
--- a/core/tests/coretests/Android.bp
+++ b/core/tests/coretests/Android.bp
@@ -3,6 +3,7 @@
 
     srcs: [
         "src/**/*.java",
+        "src/**/*.kt",
         "src/**/I*.aidl",
         "DisabledTestApp/src/**/*.java",
         "EnabledTestApp/src/**/*.java",
@@ -38,6 +39,7 @@
         "mockito-target-minus-junit4",
         "ub-uiautomator",
         "platform-test-annotations",
+        "platform-compat-test-rules",
         "truth-prebuilt",
         "print-test-util-lib",
         "testng",
@@ -51,9 +53,14 @@
         "android.test.base",
         "android.test.mock",
         "framework-atb-backward-compatibility",
+        "framework-all",
+        "icing-java-proto-lite",
+        "ext",
+        "framework-res",
     ],
 
     platform_apis: true,
+    sdk_version: "core_platform",
     test_suites: ["device-tests"],
 
     certificate: "platform",
diff --git a/core/tests/coretests/AndroidManifest.xml b/core/tests/coretests/AndroidManifest.xml
index 23f9f90..59335a5 100644
--- a/core/tests/coretests/AndroidManifest.xml
+++ b/core/tests/coretests/AndroidManifest.xml
@@ -111,6 +111,10 @@
     <uses-permission android:name="android.permission.MOVE_PACKAGE" />
     <uses-permission android:name="android.permission.PACKAGE_VERIFICATION_AGENT" />
 
+    <!-- gating and logging permissions -->
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE" />
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
+
     <!-- os storage test permissions -->
     <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
     <uses-permission android:name="android.permission.ASEC_ACCESS" />
@@ -1341,6 +1345,10 @@
         <service android:name="android.os.BinderWorkSourceNestedService"
                 android:process=":BinderWorkSourceNestedService" />
 
+        <!-- Used by BinderProxyTest -->
+        <service android:name="android.os.BinderProxyService"
+                android:process=":BinderProxyService" />
+
         <!-- Application components used for search manager tests -->
 
         <activity android:name="android.app.activity.SearchableActivity"
diff --git a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
index 8a22aca..a027f9e 100644
--- a/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
+++ b/core/tests/coretests/BstatsTestApp/src/com/android/coretests/apps/bstatstestapp/TestService.java
@@ -22,12 +22,12 @@
 import android.app.Service;
 import android.content.Intent;
 import android.graphics.Color;
-import android.graphics.Point;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Process;
 import android.os.RemoteException;
 import android.util.Log;
+import android.util.Size;
 import android.view.Gravity;
 import android.view.View;
 import android.view.ViewGroup;
@@ -108,16 +108,15 @@
         @Override
         public void showApplicationOverlay() throws RemoteException {
             final WindowManager wm = TestService.this.getSystemService(WindowManager.class);
-            final Point size = new Point();
-            wm.getDefaultDisplay().getSize(size);
+            final Size size = wm.getCurrentWindowMetrics().getSize();
 
             final WindowManager.LayoutParams wmlp = new WindowManager.LayoutParams(
                     WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                     WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                             | WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
                             | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE);
-            wmlp.width = size.x / 2;
-            wmlp.height = size.y / 2;
+            wmlp.width = size.getWidth() / 2;
+            wmlp.height = size.getHeight() / 2;
             wmlp.gravity = Gravity.CENTER | Gravity.LEFT;
             wmlp.setTitle(TAG);
 
diff --git a/core/tests/coretests/res/values/strings.xml b/core/tests/coretests/res/values/strings.xml
index f630188..21613a8 100644
--- a/core/tests/coretests/res/values/strings.xml
+++ b/core/tests/coretests/res/values/strings.xml
@@ -148,4 +148,7 @@
 
     <!-- Summary of the accessibility shortcut [CHAR LIMIT=NONE] -->
     <string name="accessibility_shortcut_summary">Accessibility shortcut summary</string>
+
+    <!-- Html description of the accessibility shortcut [CHAR LIMIT=NONE] -->
+    <string name="accessibility_shortcut_html_description">Accessibility shortcut html description</string>
 </resources>
diff --git a/core/tests/coretests/res/xml/accessibility_shortcut_test_activity.xml b/core/tests/coretests/res/xml/accessibility_shortcut_test_activity.xml
index 60e2998..a597b71 100644
--- a/core/tests/coretests/res/xml/accessibility_shortcut_test_activity.xml
+++ b/core/tests/coretests/res/xml/accessibility_shortcut_test_activity.xml
@@ -19,4 +19,6 @@
 <accessibility-shortcut-target xmlns:android="http://schemas.android.com/apk/res/android"
                         android:description="@string/accessibility_shortcut_description"
                         android:summary="@string/accessibility_shortcut_summary"
+                        android:animatedImageDrawable="@drawable/bitmap_drawable"
+                        android:htmlDescription="@string/accessibility_shortcut_html_description"
 />
\ No newline at end of file
diff --git a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
index ae6d8df..82a7b2c 100644
--- a/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
+++ b/core/tests/coretests/src/android/accessibilityservice/AccessibilityShortcutInfoTest.java
@@ -84,6 +84,22 @@
     }
 
     @Test
+    public void testAnimatedImageRes() {
+        assertThat("Animated image resource id is not correct",
+                mShortcutInfo.getAnimatedImageRes(), is(R.drawable.bitmap_drawable));
+    }
+
+    @Test
+    public void testHtmlDescription() {
+        final String htmlDescription = mTargetContext.getResources()
+                .getString(R.string.accessibility_shortcut_html_description);
+
+        assertNotNull("Can't find html description string", htmlDescription);
+        assertThat("Html description is not correct",
+                mShortcutInfo.loadHtmlDescription(mPackageManager), is(htmlDescription));
+    }
+
+    @Test
     public void testEquals() {
         assertTrue(mShortcutInfo.equals(mShortcutInfo));
         assertFalse(mShortcutInfo.equals(null));
diff --git a/core/tests/coretests/src/android/app/NotificationHistoryTest.java b/core/tests/coretests/src/android/app/NotificationHistoryTest.java
index 0a21875..d1608d0 100644
--- a/core/tests/coretests/src/android/app/NotificationHistoryTest.java
+++ b/core/tests/coretests/src/android/app/NotificationHistoryTest.java
@@ -234,6 +234,40 @@
     }
 
     @Test
+    public void testRemoveNotificationFromWrite() {
+        NotificationHistory history = new NotificationHistory();
+
+        List<HistoricalNotification> postRemoveExpectedEntries = new ArrayList<>();
+        List<String> postRemoveExpectedStrings = new ArrayList<>();
+        for (int i = 1; i <= 10; i++) {
+            HistoricalNotification n = getHistoricalNotification("pkg", i);
+
+            if (987654323 != n.getPostedTimeMs()) {
+                postRemoveExpectedStrings.add(n.getPackage());
+                postRemoveExpectedStrings.add(n.getChannelName());
+                postRemoveExpectedStrings.add(n.getChannelId());
+                postRemoveExpectedEntries.add(n);
+            }
+
+            history.addNotificationToWrite(n);
+        }
+
+        history.poolStringsFromNotifications();
+
+        assertThat(history.getNotificationsToWrite().size()).isEqualTo(10);
+        // 1 package name and 10 unique channel names and ids
+        assertThat(history.getPooledStringsToWrite().length).isEqualTo(21);
+
+        history.removeNotificationFromWrite("pkg", 987654323);
+
+
+        // 1 package names and 9 * 2 unique channel names and ids
+        assertThat(history.getPooledStringsToWrite().length).isEqualTo(19);
+        assertThat(history.getNotificationsToWrite())
+                .containsExactlyElementsIn(postRemoveExpectedEntries);
+    }
+
+    @Test
     public void testParceling() {
         NotificationHistory history = new NotificationHistory();
 
diff --git a/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java b/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
index 6c5d548..02be557 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityManagerTest.java
@@ -24,6 +24,9 @@
 import android.content.Context;
 import android.content.pm.ConfigurationInfo;
 import android.content.res.Configuration;
+import android.graphics.Bitmap;
+import android.os.Parcel;
+import android.os.Parcelable;
 import android.test.AndroidTestCase;
 
 import androidx.test.filters.SmallTest;
@@ -137,21 +140,7 @@
         // Must overwrite all the fields
         td2.copyFrom(td1);
 
-        assertEquals(td1.getLabel(), td2.getLabel());
-        assertEquals(td1.getInMemoryIcon(), td2.getInMemoryIcon());
-        assertEquals(td1.getIconFilename(), td2.getIconFilename());
-        assertEquals(td1.getIconResource(), td2.getIconResource());
-        assertEquals(td1.getPrimaryColor(), td2.getPrimaryColor());
-        assertEquals(td1.getBackgroundColor(), td2.getBackgroundColor());
-        assertEquals(td1.getStatusBarColor(), td2.getStatusBarColor());
-        assertEquals(td1.getNavigationBarColor(), td2.getNavigationBarColor());
-        assertEquals(td1.getEnsureStatusBarContrastWhenTransparent(),
-                td2.getEnsureStatusBarContrastWhenTransparent());
-        assertEquals(td1.getEnsureNavigationBarContrastWhenTransparent(),
-                td2.getEnsureNavigationBarContrastWhenTransparent());
-        assertEquals(td1.getResizeMode(), td2.getResizeMode());
-        assertEquals(td1.getMinWidth(), td2.getMinWidth());
-        assertEquals(td1.getMinHeight(), td2.getMinHeight());
+        assertTaskDescriptionEqual(td1, td2, true, true);
     }
 
     @SmallTest
@@ -191,44 +180,101 @@
         // Must overwrite all public and hidden fields, since other has all fields set.
         td2.copyFromPreserveHiddenFields(td1);
 
-        assertEquals(td1.getLabel(), td2.getLabel());
-        assertEquals(td1.getInMemoryIcon(), td2.getInMemoryIcon());
-        assertEquals(td1.getIconFilename(), td2.getIconFilename());
-        assertEquals(td1.getIconResource(), td2.getIconResource());
-        assertEquals(td1.getPrimaryColor(), td2.getPrimaryColor());
-        assertEquals(td1.getBackgroundColor(), td2.getBackgroundColor());
-        assertEquals(td1.getStatusBarColor(), td2.getStatusBarColor());
-        assertEquals(td1.getNavigationBarColor(), td2.getNavigationBarColor());
-        assertEquals(td1.getEnsureStatusBarContrastWhenTransparent(),
-                td2.getEnsureStatusBarContrastWhenTransparent());
-        assertEquals(td1.getEnsureNavigationBarContrastWhenTransparent(),
-                td2.getEnsureNavigationBarContrastWhenTransparent());
-        assertEquals(td1.getResizeMode(), td2.getResizeMode());
-        assertEquals(td1.getMinWidth(), td2.getMinWidth());
-        assertEquals(td1.getMinHeight(), td2.getMinHeight());
+        assertTaskDescriptionEqual(td1, td2, true, true);
 
         TaskDescription td3 = new TaskDescription();
         // Must overwrite only public fields, and preserve hidden fields.
         td2.copyFromPreserveHiddenFields(td3);
 
-        // Overwritten fields
-        assertEquals(td3.getLabel(), td2.getLabel());
-        assertEquals(td3.getInMemoryIcon(), td2.getInMemoryIcon());
-        assertEquals(td3.getIconFilename(), td2.getIconFilename());
-        assertEquals(td3.getIconResource(), td2.getIconResource());
-        assertEquals(td3.getPrimaryColor(), td2.getPrimaryColor());
-        assertEquals(td3.getEnsureStatusBarContrastWhenTransparent(),
-                td2.getEnsureStatusBarContrastWhenTransparent());
-        assertEquals(td3.getEnsureNavigationBarContrastWhenTransparent(),
-                td2.getEnsureNavigationBarContrastWhenTransparent());
+        assertTaskDescriptionEqual(td3, td2, true, false);
+        assertTaskDescriptionEqual(td1, td2, false, true);
+    }
 
-        // Preserved fields
-        assertEquals(td1.getBackgroundColor(), td2.getBackgroundColor());
-        assertEquals(td1.getStatusBarColor(), td2.getStatusBarColor());
-        assertEquals(td1.getNavigationBarColor(), td2.getNavigationBarColor());
-        assertEquals(td1.getResizeMode(), td2.getResizeMode());
-        assertEquals(td1.getMinWidth(), td2.getMinWidth());
-        assertEquals(td1.getMinHeight(), td2.getMinHeight());
+    @SmallTest
+    public void testTaskDescriptionParceling() throws Exception {
+        TaskDescription tdBitmapNull = new TaskDescription(
+                "test label",              // label
+                null,                      // bitmap
+                21,                        // iconRes
+                "dummy file",              // iconFilename
+                0x111111,                  // colorPrimary
+                0x222222,                  // colorBackground
+                0x333333,                  // statusBarColor
+                0x444444,                  // navigationBarColor
+                false,                     // ensureStatusBarContrastWhenTransparent
+                false,                     // ensureNavigationBarContrastWhenTransparent
+                RESIZE_MODE_UNRESIZEABLE,  // resizeMode
+                10,                        // minWidth
+                20                         // minHeight
+        );
+
+        // Normal parceling should keep everything the same.
+        TaskDescription tdParcelled = new TaskDescription(parcelingRoundTrip(tdBitmapNull));
+        assertTaskDescriptionEqual(tdBitmapNull, tdParcelled, true, true);
+
+        Bitmap recycledBitmap = Bitmap.createBitmap(100, 200, Bitmap.Config.ARGB_8888);
+        recycledBitmap.recycle();
+        assertTrue(recycledBitmap.isRecycled());
+        TaskDescription tdBitmapRecycled = new TaskDescription(
+                "test label",              // label
+                recycledBitmap,                      // bitmap
+                21,                        // iconRes
+                "dummy file",              // iconFilename
+                0x111111,                  // colorPrimary
+                0x222222,                  // colorBackground
+                0x333333,                  // statusBarColor
+                0x444444,                  // navigationBarColor
+                false,                     // ensureStatusBarContrastWhenTransparent
+                false,                     // ensureNavigationBarContrastWhenTransparent
+                RESIZE_MODE_UNRESIZEABLE,  // resizeMode
+                10,                        // minWidth
+                20                         // minHeight
+        );
+        // Recycled bitmap will be ignored while parceling.
+        tdParcelled = new TaskDescription(parcelingRoundTrip(tdBitmapRecycled));
+        assertTaskDescriptionEqual(tdBitmapNull, tdParcelled, true, true);
+
+    }
+
+    private void assertTaskDescriptionEqual(TaskDescription td1, TaskDescription td2,
+            boolean checkOverwrittenFields, boolean checkPreservedFields) {
+        if (checkOverwrittenFields) {
+            assertEquals(td1.getLabel(), td2.getLabel());
+            assertEquals(td1.getInMemoryIcon(), td2.getInMemoryIcon());
+            assertEquals(td1.getIconFilename(), td2.getIconFilename());
+            assertEquals(td1.getIconResource(), td2.getIconResource());
+            assertEquals(td1.getPrimaryColor(), td2.getPrimaryColor());
+            assertEquals(td1.getEnsureStatusBarContrastWhenTransparent(),
+                    td2.getEnsureStatusBarContrastWhenTransparent());
+            assertEquals(td1.getEnsureNavigationBarContrastWhenTransparent(),
+                    td2.getEnsureNavigationBarContrastWhenTransparent());
+        }
+        if (checkPreservedFields) {
+            assertEquals(td1.getBackgroundColor(), td2.getBackgroundColor());
+            assertEquals(td1.getStatusBarColor(), td2.getStatusBarColor());
+            assertEquals(td1.getNavigationBarColor(), td2.getNavigationBarColor());
+            assertEquals(td1.getResizeMode(), td2.getResizeMode());
+            assertEquals(td1.getMinWidth(), td2.getMinWidth());
+            assertEquals(td1.getMinHeight(), td2.getMinHeight());
+        }
+    }
+
+    private <T extends Parcelable> T parcelingRoundTrip(final T in) throws Exception {
+        final Parcel p = Parcel.obtain();
+        in.writeToParcel(p, /* flags */ 0);
+        p.setDataPosition(0);
+        final byte[] marshalledData = p.marshall();
+        p.recycle();
+
+        final Parcel q = Parcel.obtain();
+        q.unmarshall(marshalledData, 0, marshalledData.length);
+        q.setDataPosition(0);
+
+        final Parcelable.Creator<T> creator = (Parcelable.Creator<T>)
+                in.getClass().getField("CREATOR").get(null); // static object, so null receiver
+        final T unmarshalled = (T) creator.createFromParcel(q);
+        q.recycle();
+        return unmarshalled;
     }
 
     // If any entries in appear in the list, sanity check them against all running applications
diff --git a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
index c986db8..c328d72 100644
--- a/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
+++ b/core/tests/coretests/src/android/app/activity/ActivityThreadTest.java
@@ -504,15 +504,17 @@
         }
 
         @Override
-        public void onPictureInPictureRequested() {
+        public boolean onPictureInPictureRequested() {
             mPipRequested = true;
             if (getIntent().getBooleanExtra(PIP_REQUESTED_OVERRIDE_ENTER, false)) {
                 enterPictureInPictureMode(new PictureInPictureParams.Builder().build());
                 mPipEntered = true;
+                return true;
             } else if (getIntent().getBooleanExtra(PIP_REQUESTED_OVERRIDE_SKIP, false)) {
                 mPipEnterSkipped = true;
+                return false;
             }
-            super.onPictureInPictureRequested();
+            return super.onPictureInPictureRequested();
         }
 
         boolean pipRequested() {
diff --git a/core/tests/coretests/src/android/app/compat/CompatChangesTest.java b/core/tests/coretests/src/android/app/compat/CompatChangesTest.java
new file mode 100644
index 0000000..fbd02ed
--- /dev/null
+++ b/core/tests/coretests/src/android/app/compat/CompatChangesTest.java
@@ -0,0 +1,81 @@
+/*
+ * Copyright (C) 2019 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.compat;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.Instrumentation;
+import android.compat.testing.PlatformCompatChangeRule;
+import android.os.Process;
+import android.os.UserHandle;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import libcore.junit.util.compat.CoreCompatChangeRule.DisableCompatChanges;
+import libcore.junit.util.compat.CoreCompatChangeRule.EnableCompatChanges;
+
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.TestRule;
+import org.junit.runner.RunWith;
+
+/**
+ * {@link CompatChanges} tests.
+ */
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class CompatChangesTest {
+    static final long CHANGE_ID = 1L;
+
+    private Instrumentation mInstrumentation;
+
+    @Rule
+    public TestRule compatChangeRule = new PlatformCompatChangeRule();
+
+    @Before
+    public void setup() {
+        mInstrumentation = InstrumentationRegistry.getInstrumentation();
+    }
+
+
+    private String getPackageName() {
+        return mInstrumentation.getTargetContext().getPackageName();
+    }
+
+    @Test
+    @EnableCompatChanges(CHANGE_ID)
+    public void testEnabledChange() {
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID)).isTrue();
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID, Process.myUid())).isTrue();
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID, getPackageName(),
+                UserHandle.of(UserHandle.myUserId()))).isTrue();
+    }
+
+    @Test
+    @DisableCompatChanges(CHANGE_ID)
+    public void testDisabledChange() {
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID)).isFalse();
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID, Process.myUid())).isFalse();
+        assertThat(CompatChanges.isChangeEnabled(CHANGE_ID, getPackageName(),
+                UserHandle.of(UserHandle.myUserId()))).isFalse();
+    }
+}
diff --git a/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java b/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
similarity index 64%
rename from core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java
rename to core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
index ba29a97..4b64dfc 100644
--- a/core/tests/coretests/src/android/app/timedetector/PhoneTimeSuggestionTest.java
+++ b/core/tests/coretests/src/android/app/timedetector/TelephonyTimeSuggestionTest.java
@@ -26,44 +26,45 @@
 
 import org.junit.Test;
 
-public class PhoneTimeSuggestionTest {
-    private static final int PHONE_ID = 99999;
+public class TelephonyTimeSuggestionTest {
+    private static final int SLOT_INDEX = 99999;
 
     @Test
     public void testEquals() {
-        PhoneTimeSuggestion.Builder builder1 = new PhoneTimeSuggestion.Builder(PHONE_ID);
+        TelephonyTimeSuggestion.Builder builder1 = new TelephonyTimeSuggestion.Builder(SLOT_INDEX);
         {
-            PhoneTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion one = builder1.build();
             assertEquals(one, one);
         }
 
-        PhoneTimeSuggestion.Builder builder2 = new PhoneTimeSuggestion.Builder(PHONE_ID);
+        TelephonyTimeSuggestion.Builder builder2 = new TelephonyTimeSuggestion.Builder(SLOT_INDEX);
         {
-            PhoneTimeSuggestion one = builder1.build();
-            PhoneTimeSuggestion two = builder2.build();
+            TelephonyTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion two = builder2.build();
             assertEquals(one, two);
             assertEquals(two, one);
         }
 
         builder1.setUtcTime(new TimestampedValue<>(1111L, 2222L));
         {
-            PhoneTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion one = builder1.build();
             assertEquals(one, one);
         }
 
         builder2.setUtcTime(new TimestampedValue<>(1111L, 2222L));
         {
-            PhoneTimeSuggestion one = builder1.build();
-            PhoneTimeSuggestion two = builder2.build();
+            TelephonyTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion two = builder2.build();
             assertEquals(one, two);
             assertEquals(two, one);
         }
 
-        PhoneTimeSuggestion.Builder builder3 = new PhoneTimeSuggestion.Builder(PHONE_ID + 1);
+        TelephonyTimeSuggestion.Builder builder3 =
+                new TelephonyTimeSuggestion.Builder(SLOT_INDEX + 1);
         builder3.setUtcTime(new TimestampedValue<>(1111L, 2222L));
         {
-            PhoneTimeSuggestion one = builder1.build();
-            PhoneTimeSuggestion three = builder3.build();
+            TelephonyTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion three = builder3.build();
             assertNotEquals(one, three);
             assertNotEquals(three, one);
         }
@@ -72,15 +73,15 @@
         builder1.addDebugInfo("Debug info 1");
         builder2.addDebugInfo("Debug info 2");
         {
-            PhoneTimeSuggestion one = builder1.build();
-            PhoneTimeSuggestion two = builder2.build();
+            TelephonyTimeSuggestion one = builder1.build();
+            TelephonyTimeSuggestion two = builder2.build();
             assertEquals(one, two);
         }
     }
 
     @Test
     public void testParcelable() {
-        PhoneTimeSuggestion.Builder builder = new PhoneTimeSuggestion.Builder(PHONE_ID);
+        TelephonyTimeSuggestion.Builder builder = new TelephonyTimeSuggestion.Builder(SLOT_INDEX);
         assertRoundTripParcelable(builder.build());
 
         builder.setUtcTime(new TimestampedValue<>(1111L, 2222L));
@@ -88,9 +89,9 @@
 
         // DebugInfo should also be stored (but is not checked by equals()
         {
-            PhoneTimeSuggestion suggestion1 = builder.build();
+            TelephonyTimeSuggestion suggestion1 = builder.build();
             builder.addDebugInfo("This is debug info");
-            PhoneTimeSuggestion rtSuggestion1 = roundTripParcelable(suggestion1);
+            TelephonyTimeSuggestion rtSuggestion1 = roundTripParcelable(suggestion1);
             assertEquals(suggestion1.getDebugInfo(), rtSuggestion1.getDebugInfo());
         }
     }
diff --git a/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java b/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java
deleted file mode 100644
index 0108a0b..0000000
--- a/core/tests/coretests/src/android/app/timezonedetector/PhoneTimeZoneSuggestionTest.java
+++ /dev/null
@@ -1,155 +0,0 @@
-/*
- * Copyright 2019 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.timezonedetector;
-
-import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable;
-import static android.app.timezonedetector.ParcelableTestSupport.roundTripParcelable;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertTrue;
-
-import org.junit.Test;
-
-public class PhoneTimeZoneSuggestionTest {
-    private static final int PHONE_ID = 99999;
-
-    @Test
-    public void testEquals() {
-        PhoneTimeZoneSuggestion.Builder builder1 = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            assertEquals(one, one);
-        }
-
-        PhoneTimeZoneSuggestion.Builder builder2 = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertEquals(one, two);
-            assertEquals(two, one);
-        }
-
-        PhoneTimeZoneSuggestion.Builder builder3 =
-                new PhoneTimeZoneSuggestion.Builder(PHONE_ID + 1);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion three = builder3.build();
-            assertNotEquals(one, three);
-            assertNotEquals(three, one);
-        }
-
-        builder1.setZoneId("Europe/London");
-        builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
-        builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertNotEquals(one, two);
-        }
-
-        builder2.setZoneId("Europe/Paris");
-        builder2.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
-        builder2.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertNotEquals(one, two);
-        }
-
-        builder1.setZoneId("Europe/Paris");
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertEquals(one, two);
-        }
-
-        builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
-        builder2.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertNotEquals(one, two);
-        }
-
-        builder1.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertEquals(one, two);
-        }
-
-        builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
-        builder2.setQuality(PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertNotEquals(one, two);
-        }
-
-        builder1.setQuality(PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            assertEquals(one, two);
-        }
-
-        // DebugInfo must not be considered in equals().
-        {
-            PhoneTimeZoneSuggestion one = builder1.build();
-            PhoneTimeZoneSuggestion two = builder2.build();
-            one.addDebugInfo("Debug info 1");
-            two.addDebugInfo("Debug info 2");
-            assertEquals(one, two);
-        }
-    }
-
-    @Test(expected = RuntimeException.class)
-    public void testBuilderValidates_emptyZone_badMatchType() {
-        PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
-        // No zone ID, so match type should be left unset.
-        builder.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET);
-        builder.build();
-    }
-
-    @Test(expected = RuntimeException.class)
-    public void testBuilderValidates_zoneSet_badMatchType() {
-        PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
-        builder.setZoneId("Europe/London");
-        builder.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
-        builder.build();
-    }
-
-    @Test
-    public void testParcelable() {
-        PhoneTimeZoneSuggestion.Builder builder = new PhoneTimeZoneSuggestion.Builder(PHONE_ID);
-        assertRoundTripParcelable(builder.build());
-
-        builder.setZoneId("Europe/London");
-        builder.setMatchType(PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
-        builder.setQuality(PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
-        PhoneTimeZoneSuggestion suggestion1 = builder.build();
-        assertRoundTripParcelable(suggestion1);
-
-        // DebugInfo should also be stored (but is not checked by equals()
-        String debugString = "This is debug info";
-        suggestion1.addDebugInfo(debugString);
-        PhoneTimeZoneSuggestion suggestion1_2 = roundTripParcelable(suggestion1);
-        assertEquals(suggestion1, suggestion1_2);
-        assertTrue(suggestion1_2.getDebugInfo().contains(debugString));
-    }
-}
diff --git a/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java b/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java
new file mode 100644
index 0000000..59d55b7
--- /dev/null
+++ b/core/tests/coretests/src/android/app/timezonedetector/TelephonyTimeZoneSuggestionTest.java
@@ -0,0 +1,162 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import static android.app.timezonedetector.ParcelableTestSupport.assertRoundTripParcelable;
+import static android.app.timezonedetector.ParcelableTestSupport.roundTripParcelable;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+
+public class TelephonyTimeZoneSuggestionTest {
+    private static final int SLOT_INDEX = 99999;
+
+    @Test
+    public void testEquals() {
+        TelephonyTimeZoneSuggestion.Builder builder1 =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            assertEquals(one, one);
+        }
+
+        TelephonyTimeZoneSuggestion.Builder builder2 =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertEquals(one, two);
+            assertEquals(two, one);
+        }
+
+        TelephonyTimeZoneSuggestion.Builder builder3 =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX + 1);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion three = builder3.build();
+            assertNotEquals(one, three);
+            assertNotEquals(three, one);
+        }
+
+        builder1.setZoneId("Europe/London");
+        builder1.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+        builder1.setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertNotEquals(one, two);
+        }
+
+        builder2.setZoneId("Europe/Paris");
+        builder2.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+        builder2.setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertNotEquals(one, two);
+        }
+
+        builder1.setZoneId("Europe/Paris");
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertEquals(one, two);
+        }
+
+        builder1.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
+        builder2.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertNotEquals(one, two);
+        }
+
+        builder1.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertEquals(one, two);
+        }
+
+        builder1.setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+        builder2.setQuality(
+                TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertNotEquals(one, two);
+        }
+
+        builder1.setQuality(
+                TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS);
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            assertEquals(one, two);
+        }
+
+        // DebugInfo must not be considered in equals().
+        {
+            TelephonyTimeZoneSuggestion one = builder1.build();
+            TelephonyTimeZoneSuggestion two = builder2.build();
+            one.addDebugInfo("Debug info 1");
+            two.addDebugInfo("Debug info 2");
+            assertEquals(one, two);
+        }
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void testBuilderValidates_emptyZone_badMatchType() {
+        TelephonyTimeZoneSuggestion.Builder builder =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
+        // No zone ID, so match type should be left unset.
+        builder.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET);
+        builder.build();
+    }
+
+    @Test(expected = RuntimeException.class)
+    public void testBuilderValidates_zoneSet_badMatchType() {
+        TelephonyTimeZoneSuggestion.Builder builder =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
+        builder.setZoneId("Europe/London");
+        builder.setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+        builder.build();
+    }
+
+    @Test
+    public void testParcelable() {
+        TelephonyTimeZoneSuggestion.Builder builder =
+                new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX);
+        assertRoundTripParcelable(builder.build());
+
+        builder.setZoneId("Europe/London");
+        builder.setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID);
+        builder.setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE);
+        TelephonyTimeZoneSuggestion suggestion1 = builder.build();
+        assertRoundTripParcelable(suggestion1);
+
+        // DebugInfo should also be stored (but is not checked by equals()
+        String debugString = "This is debug info";
+        suggestion1.addDebugInfo(debugString);
+        TelephonyTimeZoneSuggestion suggestion1_2 = roundTripParcelable(suggestion1);
+        assertEquals(suggestion1, suggestion1_2);
+        assertTrue(suggestion1_2.getDebugInfo().contains(debugString));
+    }
+}
diff --git a/core/tests/coretests/src/android/content/ContextTest.java b/core/tests/coretests/src/android/content/ContextTest.java
index b1a54dc..f074233 100644
--- a/core/tests/coretests/src/android/content/ContextTest.java
+++ b/core/tests/coretests/src/android/content/ContextTest.java
@@ -48,6 +48,7 @@
         assertEquals(testContext.getDisplay().getDisplayId(), testContext.getDisplayId());
     }
 
+    // TODO(b/128338354): Re-visit this test after introducing WindowContext
     @Test
     public void testDisplayIdForDefaultDisplayContext() {
         final Context testContext =
diff --git a/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java b/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
index bf78203..ea69176 100644
--- a/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/AtomicFormulaTest.java
@@ -29,6 +29,9 @@
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.util.Arrays;
+import java.util.Collections;
+
 @RunWith(JUnit4.class)
 public class AtomicFormulaTest {
 
@@ -90,18 +93,18 @@
     }
 
     @Test
-    public void testValidAtomicFormula_stringValue_appCertificateAutoHashed() {
+    public void testValidAtomicFormula_stringValue_appCertificateIsNotAutoHashed() {
         String appCert = "cert";
         StringAtomicFormula stringAtomicFormula =
                 new StringAtomicFormula(AtomicFormula.APP_CERTIFICATE, appCert);
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(AtomicFormula.APP_CERTIFICATE);
-        assertThat(stringAtomicFormula.getValue()).doesNotMatch(appCert);
+        assertThat(stringAtomicFormula.getValue()).matches(appCert);
         assertThat(stringAtomicFormula.getIsHashedValue()).isTrue();
     }
 
     @Test
-    public void testValidAtomicFormula_stringValue_installerCertificateAutoHashed() {
+    public void testValidAtomicFormula_stringValue_installerCertificateIsNotAutoHashed() {
         String installerCert = "cert";
         StringAtomicFormula stringAtomicFormula =
                 new StringAtomicFormula(AtomicFormula.INSTALLER_CERTIFICATE,
@@ -109,7 +112,7 @@
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(
                 AtomicFormula.INSTALLER_CERTIFICATE);
-        assertThat(stringAtomicFormula.getValue()).doesNotMatch(installerCert);
+        assertThat(stringAtomicFormula.getValue()).matches(installerCert);
         assertThat(stringAtomicFormula.getIsHashedValue()).isTrue();
     }
 
@@ -230,7 +233,7 @@
     }
 
     @Test
-    public void testFormulaMatches_string_true() {
+    public void testFormulaMatches_string_packageNameFormula_true() {
         StringAtomicFormula stringAtomicFormula =
                 new StringAtomicFormula(
                         AtomicFormula.PACKAGE_NAME, "com.test.app", /* isHashedValue= */
@@ -242,7 +245,7 @@
     }
 
     @Test
-    public void testFormulaMatches_string_false() {
+    public void testFormulaMatches_string_packageNameFormula_false() {
         StringAtomicFormula stringAtomicFormula =
                 new StringAtomicFormula(
                         AtomicFormula.PACKAGE_NAME, "com.test.app", /* isHashedValue= */
@@ -253,6 +256,63 @@
         assertThat(stringAtomicFormula.matches(appInstallMetadata)).isFalse();
     }
 
+    @Test
+    public void testFormulaMatches_string_multipleAppCertificates_true() {
+        StringAtomicFormula stringAtomicFormula =
+                new StringAtomicFormula(
+                        AtomicFormula.APP_CERTIFICATE, "cert", /* isHashedValue= */ true);
+        AppInstallMetadata appInstallMetadata =
+                getAppInstallMetadataBuilder()
+                        .setPackageName("com.test.app")
+                        .setAppCertificates(Arrays.asList("test-cert", "cert"))
+                        .build();
+
+        assertThat(stringAtomicFormula.matches(appInstallMetadata)).isTrue();
+    }
+
+    @Test
+    public void testFormulaMatches_string_multipleAppCertificates_false() {
+        StringAtomicFormula stringAtomicFormula =
+                new StringAtomicFormula(
+                        AtomicFormula.APP_CERTIFICATE, "cert", /* isHashedValue= */ true);
+        AppInstallMetadata appInstallMetadata =
+                getAppInstallMetadataBuilder()
+                        .setPackageName("com.test.app")
+                        .setAppCertificates(Arrays.asList("test-cert", "another-cert"))
+                        .build();
+
+        assertThat(stringAtomicFormula.matches(appInstallMetadata)).isFalse();
+    }
+
+    @Test
+    public void testFormulaMatches_string_multipleInstallerCertificates_true() {
+        StringAtomicFormula stringAtomicFormula =
+                new StringAtomicFormula(
+                        AtomicFormula.INSTALLER_CERTIFICATE, "cert", /* isHashedValue= */ true);
+        AppInstallMetadata appInstallMetadata =
+                getAppInstallMetadataBuilder()
+                        .setPackageName("com.test.app")
+                        .setAppCertificates(Collections.singletonList("abc"))
+                        .setInstallerCertificates(Arrays.asList("test-cert", "cert"))
+                        .build();
+
+        assertThat(stringAtomicFormula.matches(appInstallMetadata)).isTrue();
+    }
+
+    @Test
+    public void testFormulaMatches_string_multipleInstallerCertificates_false() {
+        StringAtomicFormula stringAtomicFormula =
+                new StringAtomicFormula(
+                        AtomicFormula.INSTALLER_CERTIFICATE, "cert", /* isHashedValue= */ true);
+        AppInstallMetadata appInstallMetadata =
+                getAppInstallMetadataBuilder()
+                        .setPackageName("com.test.app")
+                        .setAppCertificates(Collections.singletonList("abc"))
+                        .setInstallerCertificates(Arrays.asList("test-cert", "another-cert"))
+                        .build();
+
+        assertThat(stringAtomicFormula.matches(appInstallMetadata)).isFalse();
+    }
 
     @Test
     public void testIsAppCertificateFormula_string_true() {
@@ -430,8 +490,8 @@
     private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
         return new AppInstallMetadata.Builder()
                 .setPackageName("abc")
-                .setAppCertificate("abc")
-                .setInstallerCertificate("abc")
+                .setAppCertificates(Collections.singletonList("abc"))
+                .setInstallerCertificates(Collections.singletonList("abc"))
                 .setInstallerName("abc")
                 .setVersionCode(-1)
                 .setIsPreInstalled(true);
diff --git a/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
index f47dfdd..abc5fed 100644
--- a/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/CompoundFormulaTest.java
@@ -286,8 +286,8 @@
     private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
         return new AppInstallMetadata.Builder()
                 .setPackageName("abc")
-                .setAppCertificate("abc")
-                .setInstallerCertificate("abc")
+                .setAppCertificates(Collections.singletonList("abc"))
+                .setInstallerCertificates(Collections.singletonList("abc"))
                 .setInstallerName("abc")
                 .setVersionCode(-1)
                 .setIsPreInstalled(true);
diff --git a/core/tests/coretests/src/android/content/integrity/InstallerAllowedByManifestFormulaTest.java b/core/tests/coretests/src/android/content/integrity/InstallerAllowedByManifestFormulaTest.java
new file mode 100644
index 0000000..693d4ca
--- /dev/null
+++ b/core/tests/coretests/src/android/content/integrity/InstallerAllowedByManifestFormulaTest.java
@@ -0,0 +1,123 @@
+/*
+ * 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 android.content.integrity;
+
+import static android.content.integrity.InstallerAllowedByManifestFormula.INSTALLER_CERTIFICATE_NOT_EVALUATED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import com.google.common.collect.ImmutableMap;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+@RunWith(JUnit4.class)
+public class InstallerAllowedByManifestFormulaTest {
+
+    private static final InstallerAllowedByManifestFormula
+            FORMULA = new InstallerAllowedByManifestFormula();
+
+    @Test
+    public void testFormulaMatches_installerAndCertBothInManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer1")
+                .setInstallerCertificates(Arrays.asList("installer_cert1", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of(
+                        "installer1", "installer_cert1",
+                        "installer2", "installer_cert2"
+                )).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isTrue();
+    }
+
+    @Test
+    public void testFormulaMatches_installerAndCertDoesNotMatchInManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer1")
+                .setInstallerCertificates(Arrays.asList("installer_cert1", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of(
+                        "installer1", "installer_cert2",
+                        "installer2", "installer_cert1"
+                )).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isFalse();
+    }
+
+    @Test
+    public void testFormulaMatches_installerNotInManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer3")
+                .setInstallerCertificates(Arrays.asList("installer_cert1", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of(
+                        "installer1", "installer_cert2",
+                        "installer2", "installer_cert1"
+                )).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isFalse();
+    }
+
+    @Test
+    public void testFormulaMatches_certificateDoesNotMatchManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer1")
+                .setInstallerCertificates(Arrays.asList("installer_cert3", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of(
+                        "installer1", "installer_cert2",
+                        "installer2", "installer_cert1"
+                )).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isFalse();
+    }
+
+    @Test
+    public void testFormulaMatches_emptyManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer1")
+                .setInstallerCertificates(Arrays.asList("installer_cert3", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of()).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isTrue();
+    }
+
+    @Test
+    public void testFormulaMatches_certificateNotSpecifiedInManifest() {
+        AppInstallMetadata appInstallMetadata = getAppInstallMetadataBuilder()
+                .setInstallerName("installer1")
+                .setInstallerCertificates(Arrays.asList("installer_cert3", "random_cert"))
+                .setAllowedInstallersAndCert(ImmutableMap.of(
+                        "installer1", INSTALLER_CERTIFICATE_NOT_EVALUATED,
+                        "installer2", "installer_cert1"
+                )).build();
+
+        assertThat(FORMULA.matches(appInstallMetadata)).isTrue();
+    }
+
+    /** Returns a builder with all fields filled with some dummy data. */
+    private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
+        return new AppInstallMetadata.Builder()
+                .setPackageName("abc")
+                .setAppCertificates(Collections.emptyList())
+                .setInstallerCertificates(Collections.emptyList())
+                .setInstallerName("abc")
+                .setVersionCode(-1)
+                .setIsPreInstalled(true);
+    }
+}
diff --git a/core/tests/coretests/src/android/content/integrity/IntegrityFormulaTest.java b/core/tests/coretests/src/android/content/integrity/IntegrityFormulaTest.java
index c180602..62c9c98 100644
--- a/core/tests/coretests/src/android/content/integrity/IntegrityFormulaTest.java
+++ b/core/tests/coretests/src/android/content/integrity/IntegrityFormulaTest.java
@@ -20,8 +20,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.testng.Assert.assertThrows;
-
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
@@ -32,64 +30,60 @@
     @Test
     public void createEqualsFormula_packageName() {
         String packageName = "com.test.app";
-        IntegrityFormula formula =
-                IntegrityFormula.PACKAGE_NAME.equalTo(packageName);
+        IntegrityFormula formula = IntegrityFormula.Application.packageNameEquals(packageName);
 
         AtomicFormula.StringAtomicFormula stringAtomicFormula =
                 (AtomicFormula.StringAtomicFormula) formula;
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(AtomicFormula.PACKAGE_NAME);
         assertThat(stringAtomicFormula.getValue()).isEqualTo(packageName);
-        assertThat(stringAtomicFormula.getIsHashedValue()).isEqualTo(false);
+        assertThat(stringAtomicFormula.getIsHashedValue()).isFalse();
     }
 
     @Test
     public void createEqualsFormula_appCertificate() {
         String appCertificate = "com.test.app";
-        IntegrityFormula formula =
-                IntegrityFormula.APP_CERTIFICATE.equalTo(appCertificate);
+        IntegrityFormula formula = IntegrityFormula.Application.certificatesContain(appCertificate);
 
         AtomicFormula.StringAtomicFormula stringAtomicFormula =
                 (AtomicFormula.StringAtomicFormula) formula;
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(AtomicFormula.APP_CERTIFICATE);
-        assertThat(stringAtomicFormula.getValue()).doesNotMatch(appCertificate);
-        assertThat(stringAtomicFormula.getIsHashedValue()).isEqualTo(true);
+        assertThat(stringAtomicFormula.getValue()).matches(appCertificate);
+        assertThat(stringAtomicFormula.getIsHashedValue()).isTrue();
     }
 
     @Test
     public void createEqualsFormula_installerName() {
         String installerName = "com.test.app";
-        IntegrityFormula formula =
-                IntegrityFormula.INSTALLER_NAME.equalTo(installerName);
+        IntegrityFormula formula = IntegrityFormula.Installer.packageNameEquals(installerName);
 
         AtomicFormula.StringAtomicFormula stringAtomicFormula =
                 (AtomicFormula.StringAtomicFormula) formula;
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(AtomicFormula.INSTALLER_NAME);
         assertThat(stringAtomicFormula.getValue()).isEqualTo(installerName);
-        assertThat(stringAtomicFormula.getIsHashedValue()).isEqualTo(false);
+        assertThat(stringAtomicFormula.getIsHashedValue()).isFalse();
     }
 
     @Test
     public void createEqualsFormula_installerCertificate() {
         String installerCertificate = "com.test.app";
         IntegrityFormula formula =
-                IntegrityFormula.INSTALLER_CERTIFICATE.equalTo(installerCertificate);
+                IntegrityFormula.Installer.certificatesContain(installerCertificate);
 
         AtomicFormula.StringAtomicFormula stringAtomicFormula =
                 (AtomicFormula.StringAtomicFormula) formula;
 
         assertThat(stringAtomicFormula.getKey()).isEqualTo(AtomicFormula.INSTALLER_CERTIFICATE);
-        assertThat(stringAtomicFormula.getValue()).doesNotMatch(installerCertificate);
-        assertThat(stringAtomicFormula.getIsHashedValue()).isEqualTo(true);
+        assertThat(stringAtomicFormula.getValue()).matches(installerCertificate);
+        assertThat(stringAtomicFormula.getIsHashedValue()).isTrue();
     }
 
     @Test
     public void createEqualsFormula_versionCode() {
         int versionCode = 12;
-        IntegrityFormula formula =
-                IntegrityFormula.VERSION_CODE.equalTo(versionCode);
+        IntegrityFormula formula = IntegrityFormula.Application.versionCodeEquals(versionCode);
 
         AtomicFormula.LongAtomicFormula stringAtomicFormula =
                 (AtomicFormula.LongAtomicFormula) formula;
@@ -100,24 +94,9 @@
     }
 
     @Test
-    public void createEqualsFormula_invalidKeyTypeForStringParameter() {
-        assertThrows(
-                IllegalArgumentException.class,
-                () -> IntegrityFormula.PRE_INSTALLED.equalTo("wrongString"));
-    }
-
-    @Test
-    public void createEqualsFormula_invalidKeyTypeForLongParameter() {
-        assertThrows(
-                IllegalArgumentException.class,
-                () -> IntegrityFormula.PACKAGE_NAME.equalTo(12));
-    }
-
-    @Test
     public void createGreaterThanFormula_versionCode() {
         int versionCode = 12;
-        IntegrityFormula formula =
-                IntegrityFormula.VERSION_CODE.greaterThan(versionCode);
+        IntegrityFormula formula = IntegrityFormula.Application.versionCodeGreaterThan(versionCode);
 
         AtomicFormula.LongAtomicFormula stringAtomicFormula =
                 (AtomicFormula.LongAtomicFormula) formula;
@@ -128,17 +107,10 @@
     }
 
     @Test
-    public void createGreaterThanFormula_invalidKeyTypeForLongParameter() {
-        assertThrows(
-                IllegalArgumentException.class,
-                () -> IntegrityFormula.PACKAGE_NAME.greaterThan(12));
-    }
-
-    @Test
     public void createGreaterThanOrEqualsToFormula_versionCode() {
         int versionCode = 12;
-        IntegrityFormula formula =
-                IntegrityFormula.VERSION_CODE.greaterThanOrEquals(versionCode);
+        IntegrityFormula formula = IntegrityFormula.Application.versionCodeGreaterThanOrEqualTo(
+                versionCode);
 
         AtomicFormula.LongAtomicFormula stringAtomicFormula =
                 (AtomicFormula.LongAtomicFormula) formula;
@@ -149,15 +121,8 @@
     }
 
     @Test
-    public void createGreaterThanOrEqualsToFormula_invalidKeyTypeForLongParameter() {
-        assertThrows(
-                IllegalArgumentException.class,
-                () -> IntegrityFormula.PACKAGE_NAME.greaterThanOrEquals(12));
-    }
-
-    @Test
     public void createIsTrueFormula_preInstalled() {
-        IntegrityFormula formula = IntegrityFormula.PRE_INSTALLED.equalTo(true);
+        IntegrityFormula formula = IntegrityFormula.Application.isPreInstalled();
 
         AtomicFormula.BooleanAtomicFormula stringAtomicFormula =
                 (AtomicFormula.BooleanAtomicFormula) formula;
@@ -167,20 +132,12 @@
     }
 
     @Test
-    public void createIsTrueFormula_invalidKeyTypeForBoolParameter() {
-        assertThrows(
-                IllegalArgumentException.class,
-                () -> IntegrityFormula.PACKAGE_NAME.equalTo(true));
-    }
-
-    @Test
     public void createAllFormula() {
         String packageName = "com.test.package";
         String certificateName = "certificate";
-        IntegrityFormula formula1 =
-                IntegrityFormula.PACKAGE_NAME.equalTo(packageName);
-        IntegrityFormula formula2 =
-                IntegrityFormula.APP_CERTIFICATE.equalTo(certificateName);
+        IntegrityFormula formula1 = IntegrityFormula.Application.packageNameEquals(packageName);
+        IntegrityFormula formula2 = IntegrityFormula.Application.certificatesContain(
+                certificateName);
 
         IntegrityFormula compoundFormula = IntegrityFormula.all(formula1, formula2);
 
@@ -191,10 +148,9 @@
     public void createAnyFormula() {
         String packageName = "com.test.package";
         String certificateName = "certificate";
-        IntegrityFormula formula1 =
-                IntegrityFormula.PACKAGE_NAME.equalTo(packageName);
-        IntegrityFormula formula2 =
-                IntegrityFormula.APP_CERTIFICATE.equalTo(certificateName);
+        IntegrityFormula formula1 = IntegrityFormula.Application.packageNameEquals(packageName);
+        IntegrityFormula formula2 = IntegrityFormula.Application.certificatesContain(
+                certificateName);
 
         IntegrityFormula compoundFormula = IntegrityFormula.any(formula1, formula2);
 
@@ -206,8 +162,7 @@
         String packageName = "com.test.package";
 
         IntegrityFormula compoundFormula =
-                IntegrityFormula.not(
-                        IntegrityFormula.PACKAGE_NAME.equalTo(packageName));
+                IntegrityFormula.not(IntegrityFormula.Application.packageNameEquals(packageName));
 
         assertThat(compoundFormula.getTag()).isEqualTo(COMPOUND_FORMULA_TAG);
     }
diff --git a/core/tests/coretests/src/android/content/res/ConfigurationTest.java b/core/tests/coretests/src/android/content/res/ConfigurationTest.java
index 2c956c9..669138c 100644
--- a/core/tests/coretests/src/android/content/res/ConfigurationTest.java
+++ b/core/tests/coretests/src/android/content/res/ConfigurationTest.java
@@ -148,6 +148,15 @@
         assertEquals(SMALLEST_SCREEN_WIDTH_DP_UNDEFINED, config.smallestScreenWidthDp);
     }
 
+    @Test
+    public void testNightModeHelper() {
+        Configuration config = new Configuration();
+        config.uiMode = Configuration.UI_MODE_NIGHT_YES;
+        assertTrue(config.isNightModeActive());
+        config.uiMode = Configuration.UI_MODE_NIGHT_NO;
+        assertFalse(config.isNightModeActive());
+    }
+
     private void dumpDebug(File f, Configuration config) throws Exception {
         final AtomicFile af = new AtomicFile(f);
         FileOutputStream fos = af.startWrite();
diff --git a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
index 49fb75b..b8dbfd3 100644
--- a/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
+++ b/core/tests/coretests/src/android/database/DatabaseGeneralTest.java
@@ -466,179 +466,7 @@
             // expected
         }
     }
-    
-    @MediumTest
-    public void testTokenize() throws Exception {
-        Cursor c;
-        mDatabase.execSQL("CREATE TABLE tokens (" +
-                "token TEXT COLLATE unicode," +
-                "source INTEGER," +
-                "token_index INTEGER," +
-                "tag TEXT" +
-                ");");
-        mDatabase.execSQL("CREATE TABLE tokens_no_index (" +
-                "token TEXT COLLATE unicode," +
-                "source INTEGER" +
-                ");");
-        
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE(NULL, NULL, NULL, NULL)", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT _TOKENIZE('tokens', NULL, NULL, NULL)", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE('tokens', 10, NULL, NULL)", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE('tokens', 10, 'some string', NULL)", null));
-     
-        Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE('tokens', 11, 'some string ok', ' ', 1, 'foo')", null));
-        Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT _TOKENIZE('tokens', 11, 'second field', ' ', 1, 'bar')", null));
 
-        Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT _TOKENIZE('tokens_no_index', 20, 'some string ok', ' ')", null));
-        Assert.assertEquals(3, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT _TOKENIZE('tokens_no_index', 21, 'foo bar baz', ' ', 0)", null));
-
-        // test Chinese
-        String chinese = new String("\u4eac\u4ec5 \u5c3d\u5f84\u60ca"); 
-        Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE('tokens', 12,'" + chinese + "', ' ', 1)", null));
-        
-        String icustr = new String("Fr\u00e9d\u00e9ric Hj\u00f8nnev\u00e5g");
-        
-        Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT _TOKENIZE('tokens', 13, '" + icustr + "', ' ', 1)", null));
-        
-        Assert.assertEquals(9, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens;", null));      
-
-        String key = DatabaseUtils.getHexCollationKey("Frederic Hjonneva");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));      
-        Assert.assertEquals(13, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        key = DatabaseUtils.getHexCollationKey("Hjonneva");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(13, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        
-        key = DatabaseUtils.getHexCollationKey("some string ok");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
-                "SELECT tag from tokens where token GLOB '" + key + "*'", null));
-        key = DatabaseUtils.getHexCollationKey("string");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
-                "SELECT tag from tokens where token GLOB '" + key + "*'", null));
-        key = DatabaseUtils.getHexCollationKey("ok");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(2, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals("foo", DatabaseUtils.stringForQuery(mDatabase,
-                "SELECT tag from tokens where token GLOB '" + key + "*'", null));
-
-        key = DatabaseUtils.getHexCollationKey("second field");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals("bar", DatabaseUtils.stringForQuery(mDatabase,
-                "SELECT tag from tokens where token GLOB '" + key + "*'", null));
-        key = DatabaseUtils.getHexCollationKey("field");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(11, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals("bar", DatabaseUtils.stringForQuery(mDatabase,
-                "SELECT tag from tokens where token GLOB '" + key + "*'", null));
-
-        key = DatabaseUtils.getHexCollationKey(chinese);
-        String[] a = new String[1];
-        a[0] = key;
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token= ?", a));
-        Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token= ?", a));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token= ?", a));
-        a[0] += "*";
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-             "SELECT count(*) from tokens where token GLOB ?", a));        
-        Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB ?", a));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB ?", a));
-
-       Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token= '" + key + "'", null));
-       Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-               "SELECT source from tokens where token= '" + key + "'", null));
-       Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-               "SELECT token_index from tokens where token= '" + key + "'", null));
-        
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));        
-        Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        
-        key = DatabaseUtils.getHexCollationKey("\u4eac\u4ec5");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        
-        key = DatabaseUtils.getHexCollationKey("\u5c3d\u5f84\u60ca");
-        Log.d("DatabaseGeneralTest", "key = " + key);
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(12, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT token_index from tokens where token GLOB '" + key + "*'", null));
-        
-        Assert.assertEquals(0, DatabaseUtils.longForQuery(mDatabase, 
-                "SELECT count(*) from tokens where token GLOB 'ab*'", null));        
-
-        key = DatabaseUtils.getHexCollationKey("some string ok");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens_no_index where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(20, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens_no_index where token GLOB '" + key + "*'", null));
-
-        key = DatabaseUtils.getHexCollationKey("bar");
-        Assert.assertEquals(1, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT count(*) from tokens_no_index where token GLOB '" + key + "*'", null));
-        Assert.assertEquals(21, DatabaseUtils.longForQuery(mDatabase,
-                "SELECT source from tokens_no_index where token GLOB '" + key + "*'", null));
-    }
-    
     @MediumTest
     public void testTransactions() throws Exception {
         mDatabase.execSQL("CREATE TABLE test (num INTEGER);");
diff --git a/core/tests/coretests/src/android/os/BinderProxyService.java b/core/tests/coretests/src/android/os/BinderProxyService.java
new file mode 100644
index 0000000..bf1fbc5
--- /dev/null
+++ b/core/tests/coretests/src/android/os/BinderProxyService.java
@@ -0,0 +1,35 @@
+/*
+ * 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 android.os;
+
+import android.app.Service;
+import android.content.Intent;
+
+public class BinderProxyService extends Service {
+    private final Binder mBinder = new Binder();
+
+    @Override
+    public void onCreate() {
+        super.onCreate();
+        mBinder.setExtension(new Binder());
+    }
+
+    @Override
+    public IBinder onBind(Intent intent) {
+        return mBinder;
+    }
+}
diff --git a/core/tests/coretests/src/android/os/BinderProxyTest.java b/core/tests/coretests/src/android/os/BinderProxyTest.java
index aceda2d..3567d17 100644
--- a/core/tests/coretests/src/android/os/BinderProxyTest.java
+++ b/core/tests/coretests/src/android/os/BinderProxyTest.java
@@ -17,11 +17,17 @@
 package android.os;
 
 import android.annotation.Nullable;
+import android.content.ComponentName;
 import android.content.Context;
+import android.content.Intent;
+import android.content.ServiceConnection;
 import android.test.AndroidTestCase;
 
 import androidx.test.filters.MediumTest;
 
+import java.util.concurrent.CountDownLatch;
+import java.util.concurrent.TimeUnit;
+
 public class BinderProxyTest extends AndroidTestCase {
     private static class CountingListener implements Binder.ProxyTransactListener {
         int mStartedCount;
@@ -86,4 +92,41 @@
         // Check it does not throw..
         mPowerManager.isInteractive();
     }
+
+    private IBinder mRemoteBinder = null;
+
+    @MediumTest
+    public void testGetExtension() throws Exception {
+        final CountDownLatch bindLatch = new CountDownLatch(1);
+        ServiceConnection connection =
+                new ServiceConnection() {
+                    @Override
+                    public void onServiceConnected(ComponentName name, IBinder service) {
+                        mRemoteBinder = service;
+                        bindLatch.countDown();
+                    }
+
+                    @Override
+                    public void onServiceDisconnected(ComponentName name) {}
+                };
+        try {
+            mContext.bindService(
+                    new Intent(mContext, BinderProxyService.class),
+                    connection,
+                    Context.BIND_AUTO_CREATE);
+            if (!bindLatch.await(500, TimeUnit.MILLISECONDS)) {
+                fail(
+                        "Timed out while binding service: "
+                                + BinderProxyService.class.getSimpleName());
+            }
+            assertTrue(mRemoteBinder instanceof BinderProxy);
+            assertNotNull(mRemoteBinder);
+
+            IBinder extension = mRemoteBinder.getExtension();
+            assertNotNull(extension);
+            assertTrue(extension.pingBinder());
+        } finally {
+            mContext.unbindService(connection);
+        }
+    }
 }
diff --git a/core/tests/coretests/src/android/os/BinderTest.java b/core/tests/coretests/src/android/os/BinderTest.java
index a354195..99dbe64 100644
--- a/core/tests/coretests/src/android/os/BinderTest.java
+++ b/core/tests/coretests/src/android/os/BinderTest.java
@@ -52,4 +52,18 @@
         } catch (IllegalStateException expected) {
         }
     }
+
+    @SmallTest
+    public void testGetExtension() throws Exception {
+        Binder binder = new Binder();
+        assertNull(binder.getExtension());
+
+        IBinder extension = new Binder();
+        binder.setExtension(extension);
+        assertNotNull(binder.getExtension());
+        assertSame(binder.getExtension(), extension);
+
+        binder.setExtension(null);
+        assertNull(binder.getExtension());
+    }
 }
diff --git a/core/tests/coretests/src/android/os/BrightnessLimit.java b/core/tests/coretests/src/android/os/BrightnessLimit.java
index 5a3724f..be79355 100644
--- a/core/tests/coretests/src/android/os/BrightnessLimit.java
+++ b/core/tests/coretests/src/android/os/BrightnessLimit.java
@@ -42,7 +42,7 @@
 
     public void onClick(View v) {
         DisplayManager dm = getSystemService(DisplayManager.class);
-        dm.setTemporaryBrightness(0);
+        dm.setTemporaryBrightness(0.0f);
         Settings.System.putInt(getContentResolver(), Settings.System.SCREEN_BRIGHTNESS, 0);
     }
 }
diff --git a/core/tests/coretests/src/android/os/BuildTest.java b/core/tests/coretests/src/android/os/BuildTest.java
index decc768..2295eb9 100644
--- a/core/tests/coretests/src/android/os/BuildTest.java
+++ b/core/tests/coretests/src/android/os/BuildTest.java
@@ -60,7 +60,7 @@
         assertNotEmpty("BRAND", Build.BRAND);
         assertNotEmpty("MODEL", Build.MODEL);
         assertNotEmpty("VERSION.INCREMENTAL", Build.VERSION.INCREMENTAL);
-        assertNotEmpty("VERSION.RELEASE", Build.VERSION.RELEASE);
+        assertNotEmpty("VERSION.RELEASE", Build.VERSION.RELEASE_OR_CODENAME);
         assertNotEmpty("TYPE", Build.TYPE);
         Assert.assertNotNull("TAGS", Build.TAGS); // TAGS is allowed to be empty.
         assertNotEmpty("FINGERPRINT", Build.FINGERPRINT);
diff --git a/core/tests/coretests/src/android/os/PowerManagerTest.java b/core/tests/coretests/src/android/os/PowerManagerTest.java
index 5cb7852..ea0a0fd 100644
--- a/core/tests/coretests/src/android/os/PowerManagerTest.java
+++ b/core/tests/coretests/src/android/os/PowerManagerTest.java
@@ -214,6 +214,9 @@
         }
         // Add listener2 on main thread.
         mPm.addThermalStatusListener(mListener2);
+        verify(mListener2, timeout(CALLBACK_TIMEOUT_MILLI_SEC)
+            .times(1)).onThermalStatusChanged(status);
+        reset(mListener2);
         status = PowerManager.THERMAL_STATUS_MODERATE;
         mUiDevice.executeShellCommand("cmd thermalservice override-status "
                 + Integer.toString(status));
diff --git a/core/tests/coretests/src/android/provider/DeviceConfigTest.java b/core/tests/coretests/src/android/provider/DeviceConfigTest.java
index 84c42db..d649b94 100644
--- a/core/tests/coretests/src/android/provider/DeviceConfigTest.java
+++ b/core/tests/coretests/src/android/provider/DeviceConfigTest.java
@@ -376,6 +376,24 @@
     }
 
     @Test
+    public void resetToDefault_makeDefault() {
+        DeviceConfig.setProperty(NAMESPACE, KEY, VALUE, true);
+        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);
+
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS, NAMESPACE);
+        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);
+    }
+
+    @Test
+    public void resetToDefault_doNotMakeDefault() {
+        DeviceConfig.setProperty(NAMESPACE, KEY, VALUE, false);
+        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isEqualTo(VALUE);
+
+        DeviceConfig.resetToDefaults(Settings.RESET_MODE_PACKAGE_DEFAULTS, NAMESPACE);
+        assertThat(DeviceConfig.getProperty(NAMESPACE, KEY)).isNull();
+    }
+
+    @Test
     public void getProperties_fullNamespace() {
         Properties properties = DeviceConfig.getProperties(NAMESPACE);
         assertThat(properties.getKeyset()).isEmpty();
diff --git a/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java b/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java
index 2648a06..a24b4e0 100644
--- a/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java
+++ b/core/tests/coretests/src/android/service/controls/ControlProviderServiceTest.java
@@ -147,6 +147,34 @@
     }
 
     @Test
+    public void testLoadSuggested_withMaxNumber() throws RemoteException {
+        Control control1 = new Control.StatelessBuilder("TEST_ID", mPendingIntent).build();
+        Control control2 = new Control.StatelessBuilder("TEST_ID_2", mPendingIntent)
+                .setDeviceType(DeviceTypes.TYPE_AIR_FRESHENER).build();
+
+        @SuppressWarnings("unchecked")
+        ArgumentCaptor<List<Control>> captor = ArgumentCaptor.forClass(List.class);
+
+        ArrayList<Control> list = new ArrayList<>();
+        list.add(control1);
+        list.add(control2);
+
+        final int maxSuggested = 1;
+
+        mControlsProviderService.setControls(list);
+        mControlsProvider.loadSuggested(maxSuggested, mLoadCallback);
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+
+        verify(mLoadCallback).accept(eq(mToken), captor.capture());
+        List<Control> l = captor.getValue();
+        assertEquals(maxSuggested, l.size());
+
+        for (int i = 0; i < maxSuggested; ++i) {
+            assertTrue(equals(list.get(i), l.get(i)));
+        }
+    }
+
+    @Test
     public void testSubscribe() throws RemoteException {
         Control control = new Control.StatefulBuilder("TEST_ID", mPendingIntent)
                 .setTitle("TEST_TITLE")
@@ -216,6 +244,11 @@
         }
 
         @Override
+        public void loadSuggestedControls(int maxNumber, Consumer<List<Control>> cb) {
+            cb.accept(mControls);
+        }
+
+        @Override
         public Publisher<Control> publisherFor(List<String> ids) {
             return new Publisher<Control>() {
                 public void subscribe(final Subscriber s) {
diff --git a/core/tests/coretests/src/android/util/GridScenario.java b/core/tests/coretests/src/android/util/GridScenario.java
index 0f1730e..4809a21 100644
--- a/core/tests/coretests/src/android/util/GridScenario.java
+++ b/core/tests/coretests/src/android/util/GridScenario.java
@@ -233,7 +233,7 @@
         // turn off title bar
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 
-        mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
+        mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
 
         final Params params = new Params();
         init(params);
diff --git a/core/tests/coretests/src/android/util/ListScenario.java b/core/tests/coretests/src/android/util/ListScenario.java
index 129484a..d4e5a43 100644
--- a/core/tests/coretests/src/android/util/ListScenario.java
+++ b/core/tests/coretests/src/android/util/ListScenario.java
@@ -306,7 +306,7 @@
         requestWindowFeature(Window.FEATURE_NO_TITLE);
 
 
-        mScreenHeight = getWindowManager().getDefaultDisplay().getHeight();
+        mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
 
         final Params params = createParams();
         init(params);
diff --git a/core/tests/coretests/src/android/util/ScrollViewScenario.java b/core/tests/coretests/src/android/util/ScrollViewScenario.java
index e9eb978..2c0aa73 100644
--- a/core/tests/coretests/src/android/util/ScrollViewScenario.java
+++ b/core/tests/coretests/src/android/util/ScrollViewScenario.java
@@ -239,7 +239,7 @@
 
         // for test stability, turn off title bar
         requestWindowFeature(Window.FEATURE_NO_TITLE);
-        int screenHeight = getWindowManager().getDefaultDisplay().getHeight()
+        int screenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight()
                 - 25;
         mLinearLayout = new LinearLayout(this);
         mLinearLayout.setOrientation(LinearLayout.VERTICAL);
diff --git a/core/tests/coretests/src/android/view/BigCache.java b/core/tests/coretests/src/android/view/BigCache.java
index 6a1bcaa..e465a85 100644
--- a/core/tests/coretests/src/android/view/BigCache.java
+++ b/core/tests/coretests/src/android/view/BigCache.java
@@ -18,6 +18,7 @@
 
 import android.app.Activity;
 import android.os.Bundle;
+import android.util.Size;
 import android.widget.LinearLayout;
 import android.widget.ScrollView;
 
@@ -38,9 +39,9 @@
                 ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
 
         final int cacheSize = ViewConfiguration.getMaximumDrawingCacheSize();
-        final Display display = getWindowManager().getDefaultDisplay();
-        final int screenWidth = display.getWidth();
-        final int screenHeight = display.getHeight();
+        final Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize();
+        final int screenWidth = windowSize.getWidth();
+        final int screenHeight = windowSize.getHeight();
 
         final View tiny = new View(this);
         tiny.setId(R.id.a);
diff --git a/core/tests/coretests/src/android/view/CutoutSpecificationTest.java b/core/tests/coretests/src/android/view/CutoutSpecificationTest.java
new file mode 100644
index 0000000..1f831bb
--- /dev/null
+++ b/core/tests/coretests/src/android/view/CutoutSpecificationTest.java
@@ -0,0 +1,262 @@
+/*
+ * 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 android.view;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.testng.Assert.assertThrows;
+
+import android.graphics.Rect;
+
+import org.junit.Before;
+import org.junit.Test;
+
+public class CutoutSpecificationTest {
+    private static final String WITHOUT_BIND_CUTOUT_SPECIFICATION = "M 0,0\n"
+            + "h 48\n"
+            + "v 48\n"
+            + "h -48\n"
+            + "z\n"
+            + "@left\n"
+            + "@center_vertical\n"
+            + "M 0,0\n"
+            + "h 48\n"
+            + "v 48\n"
+            + "h -48\n"
+            + "z\n"
+            + "@left\n"
+            + "@center_vertical\n"
+            + "M 0,0\n"
+            + "h -48\n"
+            + "v 48\n"
+            + "h 48\n"
+            + "z\n"
+            + "@right\n"
+            + "@dp";
+    private static final String WITH_BIND_CUTOUT_SPECIFICATION = "M 0,0\n"
+            + "h 48\n"
+            + "v 48\n"
+            + "h -48\n"
+            + "z\n"
+            + "@left\n"
+            + "@center_vertical\n"
+            + "M 0,0\n"
+            + "h 48\n"
+            + "v 48\n"
+            + "h -48\n"
+            + "z\n"
+            + "@left\n"
+            + "@bind_left_cutout\n"
+            + "@center_vertical\n"
+            + "M 0,0\n"
+            + "h -48\n"
+            + "v 48\n"
+            + "h 48\n"
+            + "z\n"
+            + "@right\n"
+            + "@bind_right_cutout\n"
+            + "@dp";
+    private static final String CORNER_CUTOUT_SPECIFICATION = "M 0,0\n"
+            + "h 1\n"
+            + "v 1\n"
+            + "h -1\n"
+            + "z\n"
+            + "@left\n"
+            + "@cutout\n"
+            + "M 0, 0\n"
+            + "h -2\n"
+            + "v 2\n"
+            + "h 2\n"
+            + "z\n"
+            + "@right\n"
+            + "@bind_right_cutout\n"
+            + "@cutout\n"
+            + "M 0, 200\n"
+            + "h 3\n"
+            + "v -3\n"
+            + "h -3\n"
+            + "z\n"
+            + "@left\n"
+            + "@bind_left_cutout\n"
+            + "@bottom\n"
+            + "M 0, 0\n"
+            + "h -4\n"
+            + "v -4\n"
+            + "h 4\n"
+            + "z\n"
+            + "@right\n"
+            + "@dp";
+
+    private CutoutSpecification.Parser mParser;
+
+    /**
+     * Setup the necessary member field used by test methods.
+     */
+    @Before
+    public void setUp() {
+        mParser = new CutoutSpecification.Parser(3.5f, 1080, 1920);
+    }
+
+    @Test
+    public void parse_nullString_shouldTriggerException() {
+        assertThrows(NullPointerException.class, () -> mParser.parse(null));
+    }
+
+    @Test
+    public void parse_emptyString_pathShouldBeNull() {
+        CutoutSpecification cutoutSpecification = mParser.parse("");
+        assertThat(cutoutSpecification.getPath()).isNull();
+    }
+
+    @Test
+    public void parse_withoutBindMarker_shouldHaveNoLeftBound() {
+        CutoutSpecification cutoutSpecification = mParser.parse(WITHOUT_BIND_CUTOUT_SPECIFICATION);
+        assertThat(cutoutSpecification.getLeftBound()).isNull();
+    }
+
+    @Test
+    public void parse_withoutBindMarker_shouldHaveNoRightBound() {
+        CutoutSpecification cutoutSpecification = mParser.parse(WITHOUT_BIND_CUTOUT_SPECIFICATION);
+        assertThat(cutoutSpecification.getRightBound()).isNull();
+    }
+
+    @Test
+    public void parse_withBindMarker_shouldHaveLeftBound() {
+        CutoutSpecification cutoutSpecification = mParser.parse(WITH_BIND_CUTOUT_SPECIFICATION);
+        assertThat(cutoutSpecification.getLeftBound()).isEqualTo(new Rect(0, 960, 168, 1128));
+    }
+
+    @Test
+    public void parse_withBindMarker_shouldHaveRightBound() {
+        CutoutSpecification cutoutSpecification = mParser.parse(WITH_BIND_CUTOUT_SPECIFICATION);
+        assertThat(cutoutSpecification.getRightBound()).isEqualTo(new Rect(912, 960, 1080, 1128));
+    }
+
+    @Test
+    public void parse_tallCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 0,0\n"
+                + "L -48, 0\n"
+                + "L -44.3940446283, 36.0595537175\n"
+                + "C -43.5582133885, 44.4178661152 -39.6, 48.0 -31.2, 48.0\n"
+                + "L 31.2, 48.0\n"
+                + "C 39.6, 48.0 43.5582133885, 44.4178661152 44.3940446283, 36.0595537175\n"
+                + "L 48, 0\n"
+                + "Z\n"
+                + "@dp");
+
+        assertThat(cutoutSpecification.getTopBound().height()).isEqualTo(168);
+    }
+
+    @Test
+    public void parse_wideCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 0,0\n"
+                + "L -72, 0\n"
+                + "L -69.9940446283, 20.0595537175\n"
+                + "C -69.1582133885, 28.4178661152 -65.2, 32.0 -56.8, 32.0\n"
+                + "L 56.8, 32.0\n"
+                + "C 65.2, 32.0 69.1582133885, 28.4178661152 69.9940446283, 20.0595537175\n"
+                + "L 72, 0\n"
+                + "Z\n"
+                + "@dp");
+
+        assertThat(cutoutSpecification.getTopBound().width()).isEqualTo(504);
+    }
+
+    @Test
+    public void parse_narrowCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 0,0\n"
+                + "L -24, 0\n"
+                + "L -21.9940446283, 20.0595537175\n"
+                + "C -21.1582133885, 28.4178661152 -17.2, 32.0 -8.8, 32.0\n"
+                + "L 8.8, 32.0\n"
+                + "C 17.2, 32.0 21.1582133885, 28.4178661152 21.9940446283, 20.0595537175\n"
+                + "L 24, 0\n"
+                + "Z\n"
+                + "@dp");
+
+        assertThat(cutoutSpecification.getTopBound().width()).isEqualTo(168);
+    }
+
+    @Test
+    public void parse_doubleCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 0,0\n"
+                + "L -72, 0\n"
+                + "L -69.9940446283, 20.0595537175\n"
+                + "C -69.1582133885, 28.4178661152 -65.2, 32.0 -56.8, 32.0\n"
+                + "L 56.8, 32.0\n"
+                + "C 65.2, 32.0 69.1582133885, 28.4178661152 69.9940446283, 20.0595537175\n"
+                + "L 72, 0\n"
+                + "Z\n"
+                + "@bottom\n"
+                + "M 0,0\n"
+                + "L -72, 0\n"
+                + "L -69.9940446283, -20.0595537175\n"
+                + "C -69.1582133885, -28.4178661152 -65.2, -32.0 -56.8, -32.0\n"
+                + "L 56.8, -32.0\n"
+                + "C 65.2, -32.0 69.1582133885, -28.4178661152 69.9940446283, -20"
+                + ".0595537175\n"
+                + "L 72, 0\n"
+                + "Z\n"
+                + "@dp");
+
+        assertThat(cutoutSpecification.getTopBound().height()).isEqualTo(112);
+    }
+
+    @Test
+    public void parse_cornerCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 0,0\n"
+                + "L -48, 0\n"
+                + "C -48,48 -48,48 0,48\n"
+                + "Z\n"
+                + "@dp\n"
+                + "@right");
+
+        assertThat(cutoutSpecification.getTopBound().height()).isEqualTo(168);
+    }
+
+    @Test
+    public void parse_holeCutout_shouldBeDone() {
+        CutoutSpecification cutoutSpecification = mParser.parse("M 20.0,20.0\n"
+                + "h 136\n"
+                + "v 136\n"
+                + "h -136\n"
+                + "Z\n"
+                + "@left");
+
+        assertThat(cutoutSpecification.getSafeInset()).isEqualTo(new Rect(0, 156, 0, 0));
+    }
+
+    @Test
+    public void getSafeInset_shortEdgeIsTopBottom_shouldMatchExpectedInset() {
+        CutoutSpecification cutoutSpecification =
+                new CutoutSpecification.Parser(2f, 200, 400)
+                        .parse(CORNER_CUTOUT_SPECIFICATION);
+
+        assertThat(cutoutSpecification.getSafeInset())
+                .isEqualTo(new Rect(0, 4, 0, 8));
+    }
+
+    @Test
+    public void getSafeInset_shortEdgeIsLeftRight_shouldMatchExpectedInset() {
+        CutoutSpecification cutoutSpecification =
+                new CutoutSpecification.Parser(2f, 400, 200)
+                        .parse(CORNER_CUTOUT_SPECIFICATION);
+
+        assertThat(cutoutSpecification.getSafeInset())
+                .isEqualTo(new Rect(6, 0, 8, 0));
+    }
+}
diff --git a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
index 169716f..bdb8021 100644
--- a/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
+++ b/core/tests/coretests/src/android/view/InsetsAnimationControlImplTest.java
@@ -109,13 +109,14 @@
         InsetsSourceConsumer topConsumer = new InsetsSourceConsumer(ITYPE_STATUS_BAR, mInsetsState,
                 () -> mMockTransaction, mMockController);
         topConsumer.setControl(
-                new InsetsSourceControl(ITYPE_STATUS_BAR, mTopLeash, new Point(0, 0)));
+                new InsetsSourceControl(ITYPE_STATUS_BAR, mTopLeash, new Point(0, 0)),
+                new int[1], new int[1]);
 
         InsetsSourceConsumer navConsumer = new InsetsSourceConsumer(ITYPE_NAVIGATION_BAR,
                 mInsetsState, () -> mMockTransaction, mMockController);
-        navConsumer.hide();
         navConsumer.setControl(new InsetsSourceControl(ITYPE_NAVIGATION_BAR, mNavLeash,
-                new Point(400, 0)));
+                new Point(400, 0)), new int[1], new int[1]);
+        navConsumer.hide();
 
         SparseArray<InsetsSourceControl> controls = new SparseArray<>();
         controls.put(ITYPE_STATUS_BAR, topConsumer.getControl());
diff --git a/core/tests/coretests/src/android/view/InsetsControllerTest.java b/core/tests/coretests/src/android/view/InsetsControllerTest.java
index e68c4b8..24fe2a0 100644
--- a/core/tests/coretests/src/android/view/InsetsControllerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsControllerTest.java
@@ -45,6 +45,7 @@
 import android.graphics.Insets;
 import android.graphics.Point;
 import android.graphics.Rect;
+import android.os.CancellationSignal;
 import android.platform.test.annotations.Presubmit;
 import android.view.SurfaceControl.Transaction;
 import android.view.WindowInsets.Type;
@@ -121,9 +122,20 @@
                 if (type == ITYPE_IME) {
                     return new InsetsSourceConsumer(type, controller.getState(),
                             Transaction::new, controller) {
+
+                        private boolean mImeRequestedShow;
+
+                        @Override
+                        public void show(boolean fromIme) {
+                            super.show(fromIme);
+                            if (fromIme) {
+                                mImeRequestedShow = true;
+                            }
+                        }
+
                         @Override
                         public int requestShow(boolean fromController) {
-                            if (fromController) {
+                            if (fromController || mImeRequestedShow) {
                                 return SHOW_IMMEDIATELY;
                             } else {
                                 return IME_SHOW_DELAYED;
@@ -399,6 +411,84 @@
     }
 
     @Test
+    public void testRestoreStartsAnimation() {
+        InsetsSourceControl control =
+                new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point());
+        mController.onControlsChanged(new InsetsSourceControl[]{control});
+
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            mController.hide(Type.statusBars());
+            mController.cancelExistingAnimation();
+            assertFalse(mController.getSourceConsumer(ITYPE_STATUS_BAR).isRequestedVisible());
+            assertFalse(mController.getState().getSource(ITYPE_STATUS_BAR).isVisible());
+
+            // Loosing control
+            InsetsState state = new InsetsState(mController.getState());
+            state.setSourceVisible(ITYPE_STATUS_BAR, true);
+            mController.onStateChanged(state);
+            mController.onControlsChanged(new InsetsSourceControl[0]);
+            assertFalse(mController.getSourceConsumer(ITYPE_STATUS_BAR).isRequestedVisible());
+            assertTrue(mController.getState().getSource(ITYPE_STATUS_BAR).isVisible());
+
+            // Gaining control
+            mController.onControlsChanged(new InsetsSourceControl[]{control});
+            assertEquals(ANIMATION_TYPE_HIDE, mController.getAnimationType(ITYPE_STATUS_BAR));
+            mController.cancelExistingAnimation();
+            assertFalse(mController.getSourceConsumer(ITYPE_STATUS_BAR).isRequestedVisible());
+            assertFalse(mController.getState().getSource(ITYPE_STATUS_BAR).isVisible());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    @Test
+    public void testStartImeAnimationAfterGettingControl() {
+        InsetsSourceControl control =
+                new InsetsSourceControl(ITYPE_IME, mLeash, new Point());
+
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+
+            mController.show(ime());
+            assertFalse(mController.getState().getSource(ITYPE_IME).isVisible());
+
+            // Pretend IME is calling
+            mController.show(ime(), true /* fromIme */);
+
+            // Gaining control shortly after
+            mController.onControlsChanged(new InsetsSourceControl[]{control});
+
+            assertEquals(ANIMATION_TYPE_SHOW, mController.getAnimationType(ITYPE_IME));
+            mController.cancelExistingAnimation();
+            assertTrue(mController.getSourceConsumer(ITYPE_IME).isRequestedVisible());
+            assertTrue(mController.getState().getSource(ITYPE_IME).isVisible());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    @Test
+    public void testStartImeAnimationAfterGettingControl_imeLater() {
+        InsetsSourceControl control =
+                new InsetsSourceControl(ITYPE_IME, mLeash, new Point());
+
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+
+            mController.show(ime());
+            assertFalse(mController.getState().getSource(ITYPE_IME).isVisible());
+
+            // Gaining control shortly after
+            mController.onControlsChanged(new InsetsSourceControl[]{control});
+
+            // Pretend IME is calling
+            mController.show(ime(), true /* fromIme */);
+
+            assertEquals(ANIMATION_TYPE_SHOW, mController.getAnimationType(ITYPE_IME));
+            mController.cancelExistingAnimation();
+            assertTrue(mController.getSourceConsumer(ITYPE_IME).isRequestedVisible());
+            assertTrue(mController.getState().getSource(ITYPE_IME).isVisible());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    @Test
     public void testAnimationEndState_controller() throws Exception {
         InsetsSourceControl control =
                 new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point());
@@ -427,12 +517,40 @@
     }
 
     @Test
+    public void testCancellation_afterGainingControl() throws Exception {
+        InsetsSourceControl control =
+                new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point());
+        mController.onControlsChanged(new InsetsSourceControl[] { control });
+
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            WindowInsetsAnimationControlListener mockListener =
+                    mock(WindowInsetsAnimationControlListener.class);
+            CancellationSignal cancellationSignal = mController.controlWindowInsetsAnimation(
+                    statusBars(), 0 /* durationMs */,
+                    new LinearInterpolator(), mockListener);
+
+            // Ready gets deferred until next predraw
+            mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
+
+            verify(mockListener).onReady(any(), anyInt());
+
+            cancellationSignal.cancel();
+            verify(mockListener).onCancelled();
+        });
+        waitUntilNextFrame();
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            assertFalse(mController.getSourceConsumer(ITYPE_STATUS_BAR).isRequestedVisible());
+        });
+        InstrumentationRegistry.getInstrumentation().waitForIdleSync();
+    }
+
+    @Test
     public void testControlImeNotReady() {
         prepareControls();
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
             WindowInsetsAnimationControlListener listener =
                     mock(WindowInsetsAnimationControlListener.class);
-            mController.controlInputMethodAnimation(0, new LinearInterpolator(), listener);
+            mController.controlWindowInsetsAnimation(ime(), 0, new LinearInterpolator(), listener);
 
             // Ready gets deferred until next predraw
             mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
@@ -456,7 +574,7 @@
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
             WindowInsetsAnimationControlListener listener =
                     mock(WindowInsetsAnimationControlListener.class);
-            mController.controlInputMethodAnimation(0, new LinearInterpolator(), listener);
+            mController.controlWindowInsetsAnimation(ime(), 0, new LinearInterpolator(), listener);
 
             // Ready gets deferred until next predraw
             mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
@@ -476,7 +594,7 @@
         InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
             WindowInsetsAnimationControlListener listener =
                     mock(WindowInsetsAnimationControlListener.class);
-            mController.controlInputMethodAnimation(0, new LinearInterpolator(), listener);
+            mController.controlWindowInsetsAnimation(ime(), 0, new LinearInterpolator(), listener);
 
             // Ready gets deferred until next predraw
             mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
@@ -491,6 +609,28 @@
         });
     }
 
+    @Test
+    public void testControlImeNotReady_cancel() {
+        prepareControls();
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            WindowInsetsAnimationControlListener listener =
+                    mock(WindowInsetsAnimationControlListener.class);
+            mController.controlWindowInsetsAnimation(ime(), 0, new LinearInterpolator(), listener)
+                    .cancel();
+
+            verify(listener).onCancelled();
+
+            // Ready gets deferred until next predraw
+            mViewRoot.getView().getViewTreeObserver().dispatchOnPreDraw();
+
+            verify(listener, never()).onReady(any(), anyInt());
+
+            // Pretend that timeout is happening
+            mTestClock.fastForward(2500);
+            mTestHandler.timeAdvance();
+        });
+    }
+
     private void waitUntilNextFrame() throws Exception {
         final CountDownLatch latch = new CountDownLatch(1);
         Choreographer.getMainThreadInstance().postCallback(Choreographer.CALLBACK_COMMIT,
diff --git a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
index 492c036..5e9e2f0 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceConsumerTest.java
@@ -18,6 +18,8 @@
 
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
 
+import static android.view.WindowInsets.Type.statusBars;
+import static junit.framework.Assert.assertEquals;
 import static junit.framework.TestCase.assertFalse;
 import static junit.framework.TestCase.assertTrue;
 
@@ -90,34 +92,44 @@
         });
         instrumentation.waitForIdleSync();
 
-        mConsumer.setControl(new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point()));
+        mConsumer.setControl(new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point()),
+                new int[1], new int[1]);
     }
 
     @Test
     public void testHide() {
-        mConsumer.hide();
-        assertFalse("Consumer should not be visible", mConsumer.isRequestedVisible());
-        verify(mSpyInsetsSource).setVisible(eq(false));
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            mConsumer.hide();
+            assertFalse("Consumer should not be visible", mConsumer.isRequestedVisible());
+            verify(mSpyInsetsSource).setVisible(eq(false));
+        });
+
     }
 
     @Test
     public void testShow() {
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            // Insets source starts out visible
+            mConsumer.hide();
+            mConsumer.show(false /* fromIme */);
+            assertTrue("Consumer should be visible", mConsumer.isRequestedVisible());
+            verify(mSpyInsetsSource).setVisible(eq(false));
+            verify(mSpyInsetsSource).setVisible(eq(true));
+        });
 
-        // Insets source starts out visible
-        mConsumer.hide();
-        mConsumer.show();
-        assertTrue("Consumer should be visible", mConsumer.isRequestedVisible());
-        verify(mSpyInsetsSource).setVisible(eq(false));
-        verify(mSpyInsetsSource).setVisible(eq(true));
     }
 
     @Test
     public void testRestore() {
-        mConsumer.setControl(null);
-        reset(mMockTransaction);
-        mConsumer.hide();
-        verifyZeroInteractions(mMockTransaction);
-        mConsumer.setControl(new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point()));
-        verify(mMockTransaction).hide(eq(mLeash));
+        InstrumentationRegistry.getInstrumentation().runOnMainSync(() -> {
+            mConsumer.setControl(null, new int[1], new int[1]);
+            reset(mMockTransaction);
+            mConsumer.hide();
+            verifyZeroInteractions(mMockTransaction);
+            int[] hideTypes = new int[1];
+            mConsumer.setControl(new InsetsSourceControl(ITYPE_STATUS_BAR, mLeash, new Point()),
+                    new int[1], hideTypes);
+            assertEquals(statusBars(), hideTypes[0]);
+        });
     }
 }
diff --git a/core/tests/coretests/src/android/view/InsetsSourceTest.java b/core/tests/coretests/src/android/view/InsetsSourceTest.java
index e3b08bb..756d63d 100644
--- a/core/tests/coretests/src/android/view/InsetsSourceTest.java
+++ b/core/tests/coretests/src/android/view/InsetsSourceTest.java
@@ -16,6 +16,7 @@
 
 package android.view;
 
+import static android.view.InsetsState.ITYPE_IME;
 import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
 
 import static org.junit.Assert.assertEquals;
@@ -44,10 +45,12 @@
 public class InsetsSourceTest {
 
     private InsetsSource mSource = new InsetsSource(ITYPE_NAVIGATION_BAR);
+    private InsetsSource mImeSource = new InsetsSource(ITYPE_IME);
 
     @Before
     public void setUp() {
         mSource.setVisible(true);
+        mImeSource.setVisible(true);
     }
 
     @Test
@@ -91,6 +94,14 @@
     }
 
     @Test
+    public void testCalculateInsets_ime_leftCutout() {
+        mImeSource.setFrame(new Rect(100, 400, 500, 500));
+        Insets insets = mImeSource.calculateInsets(new Rect(0, 0, 500, 500),
+                false /* ignoreVisibility */);
+        assertEquals(Insets.of(0, 0, 0, 100), insets);
+    }
+
+    @Test
     public void testCalculateInsets_invisible() {
         mSource.setFrame(new Rect(0, 0, 500, 100));
         mSource.setVisible(false);
diff --git a/core/tests/coretests/src/android/view/InsetsStateTest.java b/core/tests/coretests/src/android/view/InsetsStateTest.java
index 20be8c2..79ac2b7 100644
--- a/core/tests/coretests/src/android/view/InsetsStateTest.java
+++ b/core/tests/coretests/src/android/view/InsetsStateTest.java
@@ -213,6 +213,7 @@
     @Test
     public void testParcelUnparcel() {
         mState.getSource(ITYPE_IME).setFrame(new Rect(0, 0, 100, 100));
+        mState.getSource(ITYPE_IME).setVisibleFrame(new Rect(0, 0, 50, 10));
         mState.getSource(ITYPE_IME).setVisible(true);
         mState.getSource(ITYPE_STATUS_BAR).setFrame(new Rect(0, 0, 100, 100));
         Parcel p = Parcel.obtain();
@@ -224,6 +225,16 @@
     }
 
     @Test
+    public void testCopy() {
+        mState.getSource(ITYPE_IME).setFrame(new Rect(0, 0, 100, 100));
+        mState.getSource(ITYPE_IME).setVisibleFrame(new Rect(0, 0, 50, 10));
+        mState.getSource(ITYPE_IME).setVisible(true);
+        mState.getSource(ITYPE_STATUS_BAR).setFrame(new Rect(0, 0, 100, 100));
+        mState2.set(mState, true);
+        assertEquals(mState, mState2);
+    }
+
+    @Test
     public void testGetDefaultVisibility() {
         assertTrue(InsetsState.getDefaultVisibility(ITYPE_STATUS_BAR));
         assertTrue(InsetsState.getDefaultVisibility(ITYPE_NAVIGATION_BAR));
diff --git a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
index f63a454..039387c 100644
--- a/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
+++ b/core/tests/coretests/src/android/view/ScaleGestureDetectorTest.java
@@ -22,8 +22,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
-import android.content.Context;
-import android.util.DisplayMetrics;
+import android.util.Size;
 import android.widget.TextView;
 
 import androidx.test.filters.LargeTest;
@@ -54,25 +53,23 @@
         final float initialScaleFactor = 1.0f;
         assertEquals(initialScaleFactor, mScaleGestureActivity.getScaleFactor(), 0f);
 
-        // Specify start and end coordinates, irrespective of device display size.
-        final DisplayMetrics dm = new DisplayMetrics();
-        final WindowManager wm = (WindowManager) (mScaleGestureActivity.getApplicationContext())
-                .getSystemService(Context.WINDOW_SERVICE);
-        wm.getDefaultDisplay().getMetrics(dm);
-        final int displayWidth = dm.widthPixels;
-        final int displayHeight = dm.heightPixels;
+        // Specify start and end coordinates with respect to the window size.
+        final WindowManager wm = mScaleGestureActivity.getSystemService(WindowManager.class);
+        final Size windowSize = wm.getCurrentWindowMetrics().getSize();
+        final int windowWidth = windowSize.getWidth();
+        final int windowHeight = windowSize.getHeight();
 
         // Obtain coordinates to perform pinch and zoom from the center, to 75% of the display.
-        final int centerX = displayWidth / 2;
-        final int centerY = displayHeight / 2;
+        final int centerX = windowWidth / 2;
+        final int centerY = windowHeight / 2;
 
         // Offset center coordinates by one, so that the two starting points are different.
         final float[] firstFingerStartCoords = new float[] {centerX + 1.0f, centerY - 1.0f};
         final float[] firstFingerEndCoords =
-        new float[] {0.75f * displayWidth, 0.25f * displayHeight};
+        new float[] {0.75f * windowWidth, 0.25f * windowHeight};
         final float[] secondFingerStartCoords = new float[] {centerX - 1.0f, centerY + 1.0f};
         final float[] secondFingerEndCoords =
-        new float[] {0.25f * displayWidth, 0.75f * displayHeight};
+        new float[] {0.25f * windowWidth, 0.75f * windowHeight};
 
         onView(withId(R.id.article)).perform(new PinchZoomAction(firstFingerStartCoords,
                 firstFingerEndCoords, secondFingerStartCoords, secondFingerEndCoords,
diff --git a/core/tests/coretests/src/android/view/VerifiedKeyEventTest.kt b/core/tests/coretests/src/android/view/VerifiedKeyEventTest.kt
new file mode 100644
index 0000000..531d55d
--- /dev/null
+++ b/core/tests/coretests/src/android/view/VerifiedKeyEventTest.kt
@@ -0,0 +1,165 @@
+/*
+ * 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 android.view
+
+import android.view.InputDevice.SOURCE_KEYBOARD
+import android.view.KeyEvent.ACTION_DOWN
+import android.os.Parcel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertTrue
+import org.junit.runner.RunWith
+import org.junit.Test
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class VerifiedKeyEventTest {
+
+    @Test
+    fun testConstructor() {
+        val event = createVerifiedKeyEvent()
+
+        assertEquals(DEVICE_ID, event.deviceId)
+        assertEquals(EVENT_TIME_NANOS, event.eventTimeNanos)
+        assertEquals(SOURCE, event.source)
+        assertEquals(DISPLAY_ID, event.displayId)
+
+        assertEquals(ACTION, event.action)
+        assertEquals(DOWN_TIME_NANOS, event.downTimeNanos)
+        assertEquals(FLAGS, event.flags)
+        assertEquals(KEY_CODE, event.keyCode)
+        assertEquals(SCAN_CODE, event.scanCode)
+        assertEquals(META_STATE, event.metaState)
+        assertEquals(REPEAT_COUNT, event.repeatCount)
+    }
+
+    /**
+     * Write to parcel as a KeyEvent, read back as a KeyEvent
+     */
+    @Test
+    fun testParcelUnparcel() {
+        val keyEvent = createVerifiedKeyEvent()
+        val parcel = Parcel.obtain()
+        keyEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledKeyEvent = VerifiedKeyEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        compareVerifiedKeyEvents(keyEvent, unparceledKeyEvent)
+    }
+
+    /**
+     * Write to parcel as an InputEvent, read back as an InputEvent
+     */
+    @Test
+    fun testParcelInputEvent() {
+        val keyEvent = createVerifiedKeyEvent()
+        val inputEvent: VerifiedInputEvent = keyEvent
+        val parcel = Parcel.obtain()
+        inputEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedInputEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        assertTrue(unparceledEvent is VerifiedKeyEvent)
+        compareVerifiedKeyEvents(keyEvent, unparceledEvent as VerifiedKeyEvent)
+    }
+
+    /**
+     * Write to parcel as a KeyEvent, read back as an InputEvent
+     */
+    @Test
+    fun testParcelKeyEvent() {
+        val keyEvent = createVerifiedKeyEvent()
+        val parcel = Parcel.obtain()
+        keyEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedInputEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        assertTrue(unparceledEvent is VerifiedKeyEvent)
+        compareVerifiedKeyEvents(keyEvent, unparceledEvent as VerifiedKeyEvent)
+    }
+
+    /**
+     * Write to parcel as an InputEvent, read back as a KeyEvent
+     */
+    @Test
+    fun testParcelInputToKeyEvent() {
+        val keyEvent = createVerifiedKeyEvent()
+        val inputEvent: VerifiedInputEvent = keyEvent
+        val parcel = Parcel.obtain()
+        inputEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedKeyEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        compareVerifiedKeyEvents(keyEvent, unparceledEvent)
+    }
+
+    @Test
+    fun testEqualsHashcode() {
+        val keyEvent1 = createVerifiedKeyEvent()
+        val keyEvent2 = createVerifiedKeyEvent()
+        compareVerifiedKeyEvents(keyEvent1, keyEvent2)
+    }
+
+    companion object {
+        private const val DEVICE_ID = 0
+        private const val EVENT_TIME_NANOS: Long = 2000
+        private const val SOURCE = SOURCE_KEYBOARD
+        private const val DISPLAY_ID = 2
+
+        private const val ACTION = ACTION_DOWN
+        private const val DOWN_TIME_NANOS: Long = 1000
+        private const val FLAGS = 3
+        private const val KEY_CODE = 4
+        private const val SCAN_CODE = 5
+        private const val META_STATE = 11
+        private const val REPEAT_COUNT = 22
+
+        private fun createVerifiedKeyEvent(): VerifiedKeyEvent {
+            return VerifiedKeyEvent(DEVICE_ID, EVENT_TIME_NANOS, SOURCE, DISPLAY_ID, ACTION,
+                    DOWN_TIME_NANOS, FLAGS, KEY_CODE, SCAN_CODE, META_STATE, REPEAT_COUNT)
+        }
+
+        private fun compareVerifiedKeyEvents(event1: VerifiedKeyEvent, event2: VerifiedKeyEvent) {
+            assertEquals(event1, event2)
+            assertEquals(event1.hashCode(), event2.hashCode())
+
+            assertEquals(event1.deviceId, event2.deviceId)
+            assertEquals(event1.eventTimeNanos, event2.eventTimeNanos)
+            assertEquals(event1.source, event2.source)
+            assertEquals(event1.displayId, event2.displayId)
+
+            assertEquals(event1.action, event2.action)
+            assertEquals(event1.downTimeNanos, event2.downTimeNanos)
+            assertEquals(event1.flags, event2.flags)
+            assertEquals(event1.keyCode, event2.keyCode)
+            assertEquals(event1.scanCode, event2.scanCode)
+            assertEquals(event1.metaState, event2.metaState)
+            assertEquals(event1.repeatCount, event2.repeatCount)
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/view/VerifiedMotionEventTest.kt b/core/tests/coretests/src/android/view/VerifiedMotionEventTest.kt
new file mode 100644
index 0000000..2c4851f
--- /dev/null
+++ b/core/tests/coretests/src/android/view/VerifiedMotionEventTest.kt
@@ -0,0 +1,185 @@
+/*
+ * 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 android.view
+
+import android.view.InputDevice.SOURCE_TOUCHSCREEN
+import android.view.MotionEvent.ACTION_MOVE
+import android.view.MotionEvent.FLAG_WINDOW_IS_OBSCURED
+import android.view.MotionEvent.FLAG_WINDOW_IS_PARTIALLY_OBSCURED
+import android.view.MotionEvent.FLAG_TAINTED
+import android.os.Parcel
+
+import androidx.test.ext.junit.runners.AndroidJUnit4
+import androidx.test.filters.SmallTest
+
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertNull
+import org.junit.Assert.assertTrue
+import org.junit.runner.RunWith
+import org.junit.Test
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class VerifiedMotionEventTest {
+
+    @Test
+    fun testConstructor() {
+        val event = createVerifiedMotionEvent()
+
+        assertEquals(DEVICE_ID, event.deviceId)
+        assertEquals(EVENT_TIME_NANOS, event.eventTimeNanos)
+        assertEquals(SOURCE, event.source)
+        assertEquals(DISPLAY_ID, event.displayId)
+
+        assertEquals(RAW_X, event.rawX, 0f)
+        assertEquals(RAW_Y, event.rawY, 0f)
+        assertEquals(ACTION_MASKED, event.actionMasked)
+        assertEquals(DOWN_TIME_NANOS, event.downTimeNanos)
+        assertEquals(META_STATE, event.metaState)
+        assertEquals(BUTTON_STATE, event.buttonState)
+    }
+
+    /**
+     * Write to parcel as a MotionEvent, read back as a MotionEvent
+     */
+    @Test
+    fun testParcelUnparcel() {
+        val motionEvent = createVerifiedMotionEvent()
+        val parcel = Parcel.obtain()
+        motionEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledMotionEvent = VerifiedMotionEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        compareVerifiedMotionEvents(motionEvent, unparceledMotionEvent)
+    }
+
+    /**
+     * Write to parcel as an InputEvent, read back as an InputEvent
+     */
+    @Test
+    fun testParcelInputEvent() {
+        val motionEvent = createVerifiedMotionEvent()
+        val inputEvent: VerifiedInputEvent = motionEvent
+        val parcel = Parcel.obtain()
+        inputEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedInputEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        assertTrue(unparceledEvent is VerifiedMotionEvent)
+        compareVerifiedMotionEvents(motionEvent, unparceledEvent as VerifiedMotionEvent)
+    }
+
+    /**
+     * Write to parcel as a MotionEvent, read back as an InputEvent
+     */
+    @Test
+    fun testParcelMotionEvent() {
+        val motionEvent = createVerifiedMotionEvent()
+        val parcel = Parcel.obtain()
+        motionEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedInputEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        assertTrue(unparceledEvent is VerifiedMotionEvent)
+        compareVerifiedMotionEvents(motionEvent, unparceledEvent as VerifiedMotionEvent)
+    }
+
+    /**
+     * Write to parcel as an InputEvent, read back as a MotionEvent
+     */
+    @Test
+    fun testParcelInputToMotionEvent() {
+        val motionEvent = createVerifiedMotionEvent()
+        val inputEvent: VerifiedInputEvent = motionEvent
+        val parcel = Parcel.obtain()
+        inputEvent.writeToParcel(parcel, 0 /*flags*/)
+        parcel.setDataPosition(0)
+
+        val unparceledEvent = VerifiedMotionEvent.CREATOR.createFromParcel(parcel)
+        parcel.recycle()
+
+        compareVerifiedMotionEvents(motionEvent, unparceledEvent)
+    }
+
+    @Test
+    fun testGetFlag() {
+        val motionEvent = createVerifiedMotionEvent()
+        // Invalid value of a flag
+        assertNull(motionEvent.getFlag(0))
+        // Flag that was not set
+        assertEquals(false, motionEvent.getFlag(FLAG_WINDOW_IS_PARTIALLY_OBSCURED))
+        // Flag that was set
+        assertEquals(true, motionEvent.getFlag(FLAG_WINDOW_IS_OBSCURED))
+        // Only 1 flag at a time is accepted
+        assertNull(motionEvent.getFlag(
+                FLAG_WINDOW_IS_PARTIALLY_OBSCURED or FLAG_WINDOW_IS_OBSCURED))
+        // Flag that is not verified returns null
+        assertNull(motionEvent.getFlag(FLAG_TAINTED))
+    }
+
+    @Test
+    fun testEqualsHashcode() {
+        val motionEvent1 = createVerifiedMotionEvent()
+        val motionEvent2 = createVerifiedMotionEvent()
+        compareVerifiedMotionEvents(motionEvent1, motionEvent2)
+    }
+
+    companion object {
+        private const val DEVICE_ID = 0
+        private const val EVENT_TIME_NANOS: Long = 2000
+        private const val SOURCE = SOURCE_TOUCHSCREEN
+        private const val DISPLAY_ID = 2
+        private const val RAW_X = 100f
+        private const val RAW_Y = 200f
+        private const val ACTION_MASKED = ACTION_MOVE
+        private const val DOWN_TIME_NANOS: Long = 1000
+        private const val FLAGS = FLAG_WINDOW_IS_OBSCURED
+        private const val META_STATE = 11
+        private const val BUTTON_STATE = 22
+
+        private fun createVerifiedMotionEvent(): VerifiedMotionEvent {
+            return VerifiedMotionEvent(DEVICE_ID, EVENT_TIME_NANOS, SOURCE, DISPLAY_ID,
+                    RAW_X, RAW_Y, ACTION_MASKED, DOWN_TIME_NANOS, FLAGS, META_STATE, BUTTON_STATE)
+        }
+
+        private fun compareVerifiedMotionEvents(
+            event1: VerifiedMotionEvent,
+            event2: VerifiedMotionEvent
+        ) {
+            assertEquals(event1, event2)
+            assertEquals(event1.hashCode(), event2.hashCode())
+
+            assertEquals(event1.deviceId, event2.deviceId)
+            assertEquals(event1.eventTimeNanos, event2.eventTimeNanos)
+            assertEquals(event1.source, event2.source)
+            assertEquals(event1.displayId, event2.displayId)
+
+            assertEquals(event1.rawX, event2.rawX, 0f)
+            assertEquals(event1.rawY, event2.rawY, 0f)
+            assertEquals(event1.actionMasked, event2.actionMasked)
+            assertEquals(event1.downTimeNanos, event2.downTimeNanos)
+            assertEquals(event1.metaState, event2.metaState)
+            assertEquals(event1.buttonState, event2.buttonState)
+        }
+    }
+}
diff --git a/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java b/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
index 8b8e9ea..b71c580 100644
--- a/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
+++ b/core/tests/coretests/src/android/view/accessibility/AccessibilityServiceConnectionImpl.java
@@ -19,7 +19,6 @@
 import android.accessibilityservice.AccessibilityServiceInfo;
 import android.accessibilityservice.IAccessibilityServiceConnection;
 import android.content.pm.ParceledListSlice;
-import android.graphics.Bitmap;
 import android.graphics.Region;
 import android.os.Bundle;
 import android.os.IBinder;
@@ -157,9 +156,5 @@
         return -1;
     }
 
-    public Bitmap takeScreenshot(int displayId) {
-        return null;
-    }
-
-    public void takeScreenshotWithCallback(int displayId, RemoteCallback callback) {}
+    public void takeScreenshot(int displayId, RemoteCallback callback) {}
 }
diff --git a/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java b/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java
index 12c057f..02ffc00 100644
--- a/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/EditorInfoTest.java
@@ -20,11 +20,11 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyInt;
 
 import android.annotation.Nullable;
 import android.os.Parcel;
 import android.os.UserHandle;
-import android.text.Spannable;
 import android.text.SpannableStringBuilder;
 import android.text.TextUtils;
 
@@ -41,6 +41,7 @@
 @RunWith(AndroidJUnit4.class)
 public class EditorInfoTest {
     private static final int TEST_USER_ID = 42;
+    private static final int LONG_EXP_TEXT_LENGTH = EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH * 2;
 
     /**
      * Makes sure that {@code null} {@link EditorInfo#targetInputMethodUser} can be copied via
@@ -79,8 +80,8 @@
     }
 
     @Test
-    public void testNullTextInputComposeInitialSurroundingText() {
-        final Spannable testText = null;
+    public void setInitialText_nullInputText_throwsException() {
+        final CharSequence testText = null;
         final EditorInfo editorInfo = new EditorInfo();
 
         try {
@@ -92,56 +93,75 @@
     }
 
     @Test
-    public void testNonNullTextInputComposeInitialSurroundingText() {
-        final Spannable testText = createTestText(/* prependLength= */ 0,
-                EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
-        final EditorInfo editorInfo = new EditorInfo();
+    public void setInitialText_cursorAtHead_dividesByCursorPosition() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
 
-        // Cursor at position 0.
-        int selectionLength = 0;
+        final EditorInfo editorInfo = new EditorInfo();
+        final int selectionLength = 0;
         editorInfo.initialSelStart = 0;
         editorInfo.initialSelEnd = editorInfo.initialSelStart + selectionLength;
-        int expectedTextBeforeCursorLength = 0;
-        int expectedTextAfterCursorLength = testText.length();
+        final int expectedTextBeforeCursorLength = 0;
+        final int expectedTextAfterCursorLength = testText.length();
 
         editorInfo.setInitialSurroundingText(testText);
 
         assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
                 expectedTextAfterCursorLength);
+    }
 
-        // Cursor at the end.
+    @Test
+    public void setInitialText_cursorAtTail_dividesByCursorPosition() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final EditorInfo editorInfo = new EditorInfo();
+        final int selectionLength = 0;
         editorInfo.initialSelStart = testText.length() - selectionLength;
         editorInfo.initialSelEnd = testText.length();
-        expectedTextBeforeCursorLength = testText.length();
-        expectedTextAfterCursorLength = 0;
+        final int expectedTextBeforeCursorLength = testText.length();
+        final int expectedTextAfterCursorLength = 0;
 
         editorInfo.setInitialSurroundingText(testText);
 
         assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
                 expectedTextAfterCursorLength);
+    }
 
-        // Cursor at the middle.
-        selectionLength = 2;
+    @Test
+    public void setInitialText_cursorAtMiddle_dividesByCursorPosition() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final EditorInfo editorInfo = new EditorInfo();
+        final int selectionLength = 2;
         editorInfo.initialSelStart = testText.length() / 2;
         editorInfo.initialSelEnd = editorInfo.initialSelStart + selectionLength;
-        expectedTextBeforeCursorLength = editorInfo.initialSelStart;
-        expectedTextAfterCursorLength = testText.length() - editorInfo.initialSelEnd;
+        final int expectedTextBeforeCursorLength = editorInfo.initialSelStart;
+        final int expectedTextAfterCursorLength = testText.length() - editorInfo.initialSelEnd;
 
         editorInfo.setInitialSurroundingText(testText);
 
         assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
                 expectedTextAfterCursorLength);
+    }
 
-        // Accidentally swap selection start and end.
+    @Test
+    public void setInitialText_incorrectCursorOrder_correctsThenDivide() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final EditorInfo editorInfo = new EditorInfo();
+        final int selectionLength = 2;
         editorInfo.initialSelEnd = testText.length() / 2;
         editorInfo.initialSelStart = editorInfo.initialSelEnd + selectionLength;
+        final int expectedTextBeforeCursorLength = testText.length() / 2;
+        final int expectedTextAfterCursorLength = testText.length() - testText.length() / 2
+                - selectionLength;
 
         editorInfo.setInitialSurroundingText(testText);
 
         assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
                 expectedTextAfterCursorLength);
+    }
 
-        // Invalid cursor position.
+    @Test
+    public void setInitialText_invalidCursorPosition_returnsNull() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final EditorInfo editorInfo = new EditorInfo();
         editorInfo.initialSelStart = -1;
 
         editorInfo.setInitialSurroundingText(testText);
@@ -153,64 +173,33 @@
     }
 
     @Test
-    public void testTooLongTextInputComposeInitialSurroundingText() {
-        final Spannable testText = createTestText(/* prependLength= */ 0,
-                EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH + 2);
+    public void setOverSizeInitialText_cursorAtMiddle_dividesProportionately() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH + 2);
         final EditorInfo editorInfo = new EditorInfo();
-
-        // Cursor at position 0.
-        int selectionLength = 0;
-        editorInfo.initialSelStart = 0;
-        editorInfo.initialSelEnd = 0 + selectionLength;
-        int expectedTextBeforeCursorLength = 0;
-        int expectedTextAfterCursorLength = editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH;
-
-        editorInfo.setInitialSurroundingText(testText);
-
-        assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
-                expectedTextAfterCursorLength);
-
-        // Cursor at the end.
-        editorInfo.initialSelStart = testText.length() - selectionLength;
-        editorInfo.initialSelEnd = testText.length();
-        expectedTextBeforeCursorLength = editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH;
-        expectedTextAfterCursorLength = 0;
-
-        editorInfo.setInitialSurroundingText(testText);
-
-        assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
-                expectedTextAfterCursorLength);
-
-        // Cursor at the middle.
-        selectionLength = 2;
+        final int selectionLength = 2;
         editorInfo.initialSelStart = testText.length() / 2;
         editorInfo.initialSelEnd = editorInfo.initialSelStart + selectionLength;
-        expectedTextBeforeCursorLength = Math.min(editorInfo.initialSelStart,
+        final int expectedTextBeforeCursorLength = Math.min(editorInfo.initialSelStart,
                 (int) (0.8 * (EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH - selectionLength)));
-        expectedTextAfterCursorLength = EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH
+        final int expectedTextAfterCursorLength = EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH
                 - expectedTextBeforeCursorLength - selectionLength;
 
         editorInfo.setInitialSurroundingText(testText);
 
         assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
                 expectedTextAfterCursorLength);
+    }
 
-        // Accidentally swap selection start and end.
-        editorInfo.initialSelEnd = testText.length() / 2;
-        editorInfo.initialSelStart = editorInfo.initialSelEnd + selectionLength;
-
-        editorInfo.setInitialSurroundingText(testText);
-
-        assertExpectedTextLength(editorInfo, expectedTextBeforeCursorLength, selectionLength,
-                expectedTextAfterCursorLength);
-
-        // Selection too long, selected text should be dropped.
-        selectionLength = EditorInfo.MAX_INITIAL_SELECTION_LENGTH + 1;
+    @Test
+    public void setOverSizeInitialText_overSizeSelection_dropsSelection() {
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH + 2);
+        final EditorInfo editorInfo = new EditorInfo();
+        final int selectionLength = EditorInfo.MAX_INITIAL_SELECTION_LENGTH + 1;
         editorInfo.initialSelStart = testText.length() / 2;
         editorInfo.initialSelEnd = editorInfo.initialSelStart + selectionLength;
-        expectedTextBeforeCursorLength = Math.min(editorInfo.initialSelStart,
+        final int expectedTextBeforeCursorLength = Math.min(editorInfo.initialSelStart,
                 (int) (0.8 * EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH));
-        expectedTextAfterCursorLength = testText.length() - editorInfo.initialSelEnd;
+        final int expectedTextAfterCursorLength = testText.length() - editorInfo.initialSelEnd;
 
         editorInfo.setInitialSurroundingText(testText);
 
@@ -219,34 +208,59 @@
     }
 
     @Test
-    public void testTooLongSubTextInputComposeInitialSurroundingText() {
-        final int prependLength = 5;
-        final int subTextLength = EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH;
-        final Spannable fullText = createTestText(prependLength, subTextLength);
+    public void setInitialSubText_trimmedSubText_dividesByOriginalCursorPosition() {
+        final String prefixString = "prefix";
+        final CharSequence subText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final CharSequence originalText = TextUtils.concat(prefixString, subText);
         final EditorInfo editorInfo = new EditorInfo();
-        // Cursor at the middle.
-        final int selectionLength = 2;
-        editorInfo.initialSelStart = fullText.length() / 2;
-        editorInfo.initialSelEnd = editorInfo.initialSelStart + selectionLength;
-        // #prependLength characters will be trimmed out.
-        final Spannable expectedTextBeforeCursor = createExpectedText(/* startNumber= */0,
-                editorInfo.initialSelStart - prependLength);
-        final Spannable expectedSelectedText = createExpectedText(
-                editorInfo.initialSelStart - prependLength, selectionLength);
-        final Spannable expectedTextAfterCursor = createExpectedText(
-                editorInfo.initialSelEnd - prependLength,
-                fullText.length() - editorInfo.initialSelEnd);
+        final int selLength = 2;
+        editorInfo.initialSelStart = originalText.length() / 2;
+        editorInfo.initialSelEnd = editorInfo.initialSelStart + selLength;
+        final CharSequence expectedTextBeforeCursor = createExpectedText(/* startNumber= */0,
+                editorInfo.initialSelStart - prefixString.length());
+        final CharSequence expectedSelectedText = createExpectedText(
+                editorInfo.initialSelStart - prefixString.length(), selLength);
+        final CharSequence expectedTextAfterCursor = createExpectedText(
+                editorInfo.initialSelEnd - prefixString.length(),
+                originalText.length() - editorInfo.initialSelEnd);
 
-        editorInfo.setInitialSurroundingSubText(fullText.subSequence(prependLength,
-                fullText.length()), prependLength);
+        editorInfo.setInitialSurroundingSubText(subText, prefixString.length());
 
         assertTrue(TextUtils.equals(expectedTextBeforeCursor,
-                editorInfo.getInitialTextBeforeCursor(editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH,
-                        InputConnection.GET_TEXT_WITH_STYLES)));
+                editorInfo.getInitialTextBeforeCursor(LONG_EXP_TEXT_LENGTH, anyInt())));
         assertTrue(TextUtils.equals(expectedSelectedText,
-                editorInfo.getInitialSelectedText(InputConnection.GET_TEXT_WITH_STYLES)));
+                editorInfo.getInitialSelectedText(anyInt())));
         assertTrue(TextUtils.equals(expectedTextAfterCursor,
-                editorInfo.getInitialTextAfterCursor(editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH,
+                editorInfo.getInitialTextAfterCursor(LONG_EXP_TEXT_LENGTH, anyInt())));
+    }
+
+    @Test
+    public void initialSurroundingText_wrapIntoParcel_staysIntact() {
+        // EditorInfo.InitialSurroundingText is not visible to test class. But all its key elements
+        // must stay intact for its getter methods to return correct value and it will be wrapped
+        // into its outer class for parcel transfer, therefore we can verify its parcel
+        // wrapping/unwrapping logic through its outer class.
+        final CharSequence testText = createTestText(EditorInfo.MEMORY_EFFICIENT_TEXT_LENGTH);
+        final EditorInfo sourceEditorInfo = new EditorInfo();
+        final int selectionLength = 2;
+        sourceEditorInfo.initialSelStart = testText.length() / 2;
+        sourceEditorInfo.initialSelEnd = sourceEditorInfo.initialSelStart + selectionLength;
+        sourceEditorInfo.setInitialSurroundingText(testText);
+
+        final EditorInfo targetEditorInfo = cloneViaParcel(sourceEditorInfo);
+
+        assertTrue(TextUtils.equals(
+                sourceEditorInfo.getInitialTextBeforeCursor(LONG_EXP_TEXT_LENGTH,
+                        InputConnection.GET_TEXT_WITH_STYLES),
+                targetEditorInfo.getInitialTextBeforeCursor(LONG_EXP_TEXT_LENGTH,
+                        InputConnection.GET_TEXT_WITH_STYLES)));
+        assertTrue(TextUtils.equals(
+                sourceEditorInfo.getInitialSelectedText(InputConnection.GET_TEXT_WITH_STYLES),
+                targetEditorInfo.getInitialSelectedText(InputConnection.GET_TEXT_WITH_STYLES)));
+        assertTrue(TextUtils.equals(
+                sourceEditorInfo.getInitialTextAfterCursor(LONG_EXP_TEXT_LENGTH,
+                        InputConnection.GET_TEXT_WITH_STYLES),
+                targetEditorInfo.getInitialTextAfterCursor(LONG_EXP_TEXT_LENGTH,
                         InputConnection.GET_TEXT_WITH_STYLES)));
     }
 
@@ -254,12 +268,12 @@
             @Nullable Integer expectBeforeCursorLength, @Nullable Integer expectSelectionLength,
             @Nullable Integer expectAfterCursorLength) {
         final CharSequence textBeforeCursor =
-                editorInfo.getInitialTextBeforeCursor(editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH,
+                editorInfo.getInitialTextBeforeCursor(LONG_EXP_TEXT_LENGTH,
                         InputConnection.GET_TEXT_WITH_STYLES);
         final CharSequence selectedText =
                 editorInfo.getInitialSelectedText(InputConnection.GET_TEXT_WITH_STYLES);
         final CharSequence textAfterCursor =
-                editorInfo.getInitialTextAfterCursor(editorInfo.MEMORY_EFFICIENT_TEXT_LENGTH,
+                editorInfo.getInitialTextAfterCursor(LONG_EXP_TEXT_LENGTH,
                         InputConnection.GET_TEXT_WITH_STYLES);
 
         if (expectBeforeCursorLength == null) {
@@ -281,19 +295,15 @@
         }
     }
 
-    private static Spannable createTestText(int prependLength, int surroundingLength) {
+    private static CharSequence createTestText(int surroundingLength) {
         final SpannableStringBuilder builder = new SpannableStringBuilder();
-        for (int i = 0; i < prependLength; i++) {
-            builder.append("a");
-        }
-
         for (int i = 0; i < surroundingLength; i++) {
             builder.append(Integer.toString(i % 10));
         }
         return builder;
     }
 
-    private static Spannable createExpectedText(int startNumber, int length) {
+    private static CharSequence createExpectedText(int startNumber, int length) {
         final SpannableStringBuilder builder = new SpannableStringBuilder();
         for (int i = startNumber; i < startNumber + length; i++) {
             builder.append(Integer.toString(i % 10));
diff --git a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
index 9f259a8..d705724 100644
--- a/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
+++ b/core/tests/coretests/src/android/view/inputmethod/InputMethodManagerTest.java
@@ -16,11 +16,13 @@
 
 package android.view.inputmethod;
 
+import static android.view.Display.DEFAULT_DISPLAY;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
 import android.content.Context;
-import android.view.WindowManager;
+import android.hardware.display.DisplayManager;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
@@ -43,9 +45,9 @@
         final Context testContext = InstrumentationRegistry.getInstrumentation()
                 .getTargetContext();
 
-        final WindowManager wm = testContext.getSystemService(WindowManager.class);
+        final DisplayManager dm = testContext.getSystemService(DisplayManager.class);
         final Context defaultDisplayContext =
-                testContext.createDisplayContext(wm.getDefaultDisplay());
+                testContext.createDisplayContext(dm.getDisplay(DEFAULT_DISPLAY));
         final InputMethodManager imm =
                 defaultDisplayContext.getSystemService(InputMethodManager.class);
         assertEquals("InputMethodManager.getInstance() always returns the instance for the default"
diff --git a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
index ba85d76..d5825e2 100644
--- a/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
+++ b/core/tests/coretests/src/android/view/menu/ContextMenuTest.java
@@ -16,11 +16,9 @@
 
 package android.view.menu;
 
-import android.content.Context;
-import android.graphics.Point;
 import android.test.ActivityInstrumentationTestCase;
 import android.util.PollingCheck;
-import android.view.Display;
+import android.util.Size;
 import android.view.View;
 import android.view.WindowManager;
 import android.widget.espresso.ContextMenuUtils;
@@ -82,12 +80,9 @@
      * Returns the minimum of the default display's width and height.
      */
     private int getMinScreenDimension() {
-        final WindowManager windowManager = (WindowManager) getActivity().getSystemService(
-                Context.WINDOW_SERVICE);
-        final Display display = windowManager.getDefaultDisplay();
-        final Point displaySize = new Point();
-        display.getRealSize(displaySize);
-        return Math.min(displaySize.x, displaySize.y);
+        final WindowManager windowManager = getActivity().getSystemService(WindowManager.class);
+        final Size maxWindowSize = windowManager.getMaximumWindowMetrics().getSize();
+        return Math.min(maxWindowSize.getWidth(), maxWindowSize.getHeight());
     }
 
     /**
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
index 8faf790..1ca4649 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassificationManagerTest.java
@@ -25,7 +25,6 @@
 import android.content.Context;
 import android.content.Intent;
 import android.os.LocaleList;
-import android.service.textclassifier.TextClassifierService;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
@@ -64,9 +63,7 @@
 
     @Test
     public void testGetSystemTextClassifier() {
-        assertTrue(
-                TextClassifierService.getServiceComponentName(mContext) == null
-                || mTcm.getTextClassifier(TextClassifier.SYSTEM) instanceof SystemTextClassifier);
+        assertTrue(mTcm.getTextClassifier(TextClassifier.SYSTEM) instanceof SystemTextClassifier);
     }
 
     @Test
diff --git a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
index 2304ba6..372a478 100644
--- a/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
+++ b/core/tests/coretests/src/android/view/textclassifier/TextClassifierTest.java
@@ -27,6 +27,7 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.LocaleList;
+import android.service.textclassifier.TextClassifierService;
 import android.text.Spannable;
 import android.text.SpannableString;
 
@@ -58,11 +59,12 @@
 public class TextClassifierTest {
     private static final String LOCAL = "local";
     private static final String SESSION = "session";
+    private static final String DEFAULT = "default";
 
     // TODO: Add SYSTEM, which tests TextClassifier.SYSTEM.
     @Parameterized.Parameters(name = "{0}")
     public static Iterable<Object> textClassifierTypes() {
-        return Arrays.asList(LOCAL, SESSION);
+        return Arrays.asList(LOCAL, SESSION, DEFAULT);
     }
 
     @Parameterized.Parameter
@@ -84,13 +86,15 @@
 
         if (mTextClassifierType.equals(LOCAL)) {
             mClassifier = mTcm.getTextClassifier(TextClassifier.LOCAL);
-        } else {
+        } else if (mTextClassifierType.equals(SESSION)) {
             mClassifier = mTcm.createTextClassificationSession(
                     new TextClassificationContext.Builder(
                             "android",
                             TextClassifier.WIDGET_TYPE_NOTIFICATION)
                             .build(),
                     mTcm.getTextClassifier(TextClassifier.LOCAL));
+        } else {
+            mClassifier = TextClassifierService.getDefaultTextClassifierImplementation(mContext);
         }
     }
 
@@ -369,16 +373,14 @@
                 mClassifier.generateLinks(request).apply(url, 0, null));
     }
 
-
-    @Test(expected = IllegalArgumentException.class)
+    @Test
     public void testGenerateLinks_tooLong() {
-        if (isTextClassifierDisabled()) {
-            throw new IllegalArgumentException("pass if disabled");
-        }
+        if (isTextClassifierDisabled()) return;
         char[] manySpaces = new char[mClassifier.getMaxGenerateLinksTextLength() + 1];
         Arrays.fill(manySpaces, ' ');
         TextLinks.Request request = new TextLinks.Request.Builder(new String(manySpaces)).build();
-        mClassifier.generateLinks(request);
+        TextLinks links = mClassifier.generateLinks(request);
+        assertTrue(links.getLinks().isEmpty());
     }
 
     @Test
diff --git a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
index 73e4ea8..8e90a82 100644
--- a/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
+++ b/core/tests/coretests/src/android/widget/focus/ListOfInternalSelectionViews.java
@@ -17,7 +17,6 @@
 package android.widget.focus;
 
 import android.app.Activity;
-import android.graphics.Point;
 import android.os.Bundle;
 import android.util.InternalSelectionView;
 import android.view.View;
@@ -112,9 +111,7 @@
     protected void onCreate(Bundle icicle) {
         super.onCreate(icicle);
 
-        Point size = new Point();
-        getWindowManager().getDefaultDisplay().getSize(size);
-        mScreenHeight = size.y;
+        mScreenHeight = getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
 
         Bundle extras = getIntent().getExtras();
         if (extras != null) {
diff --git a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
index 0d3092c..fd1dbfc 100644
--- a/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
+++ b/core/tests/coretests/src/android/widget/gridview/touch/GridTouchVerticalSpacingStackFromBottomTest.java
@@ -106,9 +106,10 @@
 
         int firstTop = firstChild.getTop();
 
+        int windowHeight = mActivity.getWindowManager().getCurrentWindowMetrics().getSize()
+                .getHeight();
         int distance = TouchUtils.dragViewBy(this, firstChild, 
-                Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, 
-                (int) (mActivity.getWindowManager().getDefaultDisplay().getHeight() * 0.75f));
+                Gravity.BOTTOM | Gravity.CENTER_HORIZONTAL, 0, (int) (windowHeight * 0.75f));
         
         assertEquals("View scrolled to wrong position", firstTop
                 + (distance - mViewConfig.getScaledTouchSlop() - 1), firstChild.getTop());
diff --git a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
index 9e49719..e6195b1 100644
--- a/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
+++ b/core/tests/coretests/src/android/widget/listview/AdjacentListsWithAdjacentISVsInside.java
@@ -65,7 +65,8 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
 
-        final int desiredHeight = (int) (0.8 * getWindowManager().getDefaultDisplay().getHeight());
+        final int desiredHeight =
+                (int) (0.8 * getWindowManager().getCurrentWindowMetrics().getSize().getHeight());
 
         mLeftListView = new ListView(this);
         mLeftListView.setAdapter(new AdjacentISVAdapter(desiredHeight));
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
index d4c3621..ce71beb 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserActivityTest.java
@@ -38,6 +38,7 @@
 import static org.hamcrest.CoreMatchers.notNullValue;
 import static org.hamcrest.MatcherAssert.assertThat;
 import static org.junit.Assert.assertEquals;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
@@ -64,7 +65,6 @@
 import android.graphics.drawable.Icon;
 import android.metrics.LogMaker;
 import android.net.Uri;
-import android.os.Bundle;
 import android.os.UserHandle;
 import android.service.chooser.ChooserTarget;
 
@@ -77,9 +77,6 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 
-import org.hamcrest.BaseMatcher;
-import org.hamcrest.Description;
-import org.hamcrest.Matcher;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Rule;
@@ -359,6 +356,7 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
 
+        markWorkProfileUserAvailable();
         Intent sendIntent = createSendTextIntent();
         List<ResolvedComponentInfo> resolvedComponentInfos =
                 createResolvedComponentsForTestWithOtherProfile(2);
@@ -482,8 +480,8 @@
                 .launchActivity(Intent.createChooser(sendIntent, null));
         waitForIdle();
 
-        onView(withId(R.id.copy_button)).check(matches(isDisplayed()));
-        onView(withId(R.id.copy_button)).perform(click());
+        onView(withId(R.id.chooser_copy_button)).check(matches(isDisplayed()));
+        onView(withId(R.id.chooser_copy_button)).perform(click());
         ClipboardManager clipboard = (ClipboardManager) activity.getSystemService(
                 Context.CLIPBOARD_SERVICE);
         ClipData clipData = clipboard.getPrimaryClip();
@@ -510,8 +508,8 @@
                 .launchActivity(Intent.createChooser(sendIntent, null));
         waitForIdle();
 
-        onView(withId(R.id.copy_button)).check(matches(isDisplayed()));
-        onView(withId(R.id.copy_button)).perform(click());
+        onView(withId(R.id.chooser_copy_button)).check(matches(isDisplayed()));
+        onView(withId(R.id.chooser_copy_button)).perform(click());
 
         verify(mockLogger, atLeastOnce()).write(logMakerCaptor.capture());
         // First is  Activity shown, Second is "with preview"
@@ -1213,17 +1211,24 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         int personalProfileTargets = 3;
+        int otherProfileTargets = 1;
         List<ResolvedComponentInfo> personalResolvedComponentInfos =
-                createResolvedComponentsForTest(personalProfileTargets);
+                createResolvedComponentsForTestWithOtherProfile(
+                        personalProfileTargets + otherProfileTargets, /* userID */ 10);
         int workProfileTargets = 4;
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(
                 workProfileTargets);
         when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+                Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         Intent sendIntent = createSendTextIntent();
         sendIntent.setType("TestType");
         markWorkProfileUserAvailable();
@@ -1233,8 +1238,6 @@
         waitForIdle();
 
         assertThat(activity.getCurrentUserHandle().getIdentifier(), is(0));
-        // The work list adapter must only be filled when we open the work tab
-        assertThat(activity.getWorkListAdapter().getCount(), is(0));
         onView(withText(R.string.resolver_work_tab)).perform(click());
         assertThat(activity.getCurrentUserHandle().getIdentifier(), is(10));
         assertThat(activity.getPersonalListAdapter().getCount(), is(personalProfileTargets));
@@ -1247,11 +1250,22 @@
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         markWorkProfileUserAvailable();
         int workProfileTargets = 4;
+        List<ResolvedComponentInfo> personalResolvedComponentInfos =
+                createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
         List<ResolvedComponentInfo> workResolvedComponentInfos =
                 createResolvedComponentsForTest(workProfileTargets);
+        when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
                 Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         Intent sendIntent = createSendTextIntent();
         sendIntent.setType("TestType");
 
@@ -1361,6 +1375,20 @@
         return infoList;
     }
 
+    private List<ResolvedComponentInfo> createResolvedComponentsForTestWithOtherProfile(
+            int numberOfResults, int userId) {
+        List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
+        for (int i = 0; i < numberOfResults; i++) {
+            if (i == 0) {
+                infoList.add(
+                        ResolverDataProvider.createResolvedComponentInfoWithOtherId(i, userId));
+            } else {
+                infoList.add(ResolverDataProvider.createResolvedComponentInfo(i));
+            }
+        }
+        return infoList;
+    }
+
     private List<ResolvedComponentInfo> createResolvedComponentsForTestWithUserId(
             int numberOfResults, int userId) {
         List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
diff --git a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
index eee62bb..a68b5908 100644
--- a/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
+++ b/core/tests/coretests/src/com/android/internal/app/ChooserWrapperActivity.java
@@ -16,10 +16,15 @@
 
 package com.android.internal.app;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
 import android.annotation.Nullable;
+import android.app.prediction.AppPredictionContext;
+import android.app.prediction.AppPredictionManager;
+import android.app.prediction.AppPredictor;
 import android.app.usage.UsageStatsManager;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -40,6 +45,8 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 
+import org.mockito.Mockito;
+
 import java.util.function.Function;
 
 public class ChooserWrapperActivity extends ChooserActivity {
@@ -173,6 +180,12 @@
         return mMultiProfilePagerAdapter.getCurrentUserHandle();
     }
 
+    @Override
+    public Context createContextAsUser(UserHandle user, int flags) {
+        // return the current context as a work profile doesn't really exist in these tests
+        return getApplicationContext();
+    }
+
     /**
      * We cannot directly mock the activity created since instrumentation creates it.
      * <p>
diff --git a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
index 42f7736..5f4194a 100644
--- a/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
+++ b/core/tests/coretests/src/com/android/internal/app/ResolverActivityTest.java
@@ -27,12 +27,14 @@
 
 import static com.android.internal.app.MatcherUtils.first;
 import static com.android.internal.app.ResolverDataProvider.createPackageManagerMockedInfo;
+import static com.android.internal.app.ResolverDataProvider.createResolvedComponentInfoWithOtherId;
 import static com.android.internal.app.ResolverWrapperActivity.sOverrides;
 
 import static org.hamcrest.CoreMatchers.allOf;
 import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.CoreMatchers.not;
 import static org.hamcrest.MatcherAssert.assertThat;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
 import android.content.Intent;
@@ -223,6 +225,7 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
 
+        markWorkProfileUserAvailable();
         Intent sendIntent = createSendImageIntent();
         List<ResolvedComponentInfo> resolvedComponentInfos =
                 createResolvedComponentsForTestWithOtherProfile(2);
@@ -244,7 +247,6 @@
             chosen[0] = targetInfo.getResolveInfo();
             return true;
         };
-
         // Make a stable copy of the components as the original list may be modified
         List<ResolvedComponentInfo> stableCopy =
                 createResolvedComponentsForTestWithOtherProfile(2);
@@ -441,7 +443,7 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         List<ResolvedComponentInfo> personalResolvedComponentInfos =
-                createResolvedComponentsForTest(3);
+                createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
         when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
@@ -449,6 +451,11 @@
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
                 Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         Intent sendIntent = createSendImageIntent();
         markWorkProfileUserAvailable();
 
@@ -465,14 +472,36 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         List<ResolvedComponentInfo> personalResolvedComponentInfos =
-                createResolvedComponentsForTest(3);
+                createResolvedComponentsForTestWithOtherProfile(3);
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
-        when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+        when(sOverrides.resolverListController.getResolversForIntentAsUser(
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+        when(sOverrides.resolverListController.getResolversForIntentAsUser(
+                Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(sOverrides.workProfileUserHandle)))
+                .thenReturn(new ArrayList<>(workResolvedComponentInfos));
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(sOverrides.workProfileUserHandle)))
+                .thenReturn(new ArrayList<>(workResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+                Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
+        when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+
         Intent sendIntent = createSendImageIntent();
         markWorkProfileUserAvailable();
 
@@ -481,7 +510,7 @@
         onView(withText(R.string.resolver_work_tab)).perform(click());
 
         assertThat(activity.getCurrentUserHandle().getIdentifier(), is(10));
-        assertThat(activity.getPersonalListAdapter().getCount(), is(3));
+        assertThat(activity.getPersonalListAdapter().getCount(), is(2));
     }
 
     @Test
@@ -490,21 +519,27 @@
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         markWorkProfileUserAvailable();
         List<ResolvedComponentInfo> personalResolvedComponentInfos =
-                createResolvedComponentsForTest(3);
+                createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
         when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
                 Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         Intent sendIntent = createSendImageIntent();
 
         final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
         waitForIdle();
+
         onView(withText(R.string.resolver_work_tab))
                 .perform(click());
-
         waitForIdle();
         assertThat(activity.getWorkListAdapter().getCount(), is(4));
     }
@@ -515,14 +550,20 @@
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         markWorkProfileUserAvailable();
         List<ResolvedComponentInfo> personalResolvedComponentInfos =
-                createResolvedComponentsForTest(3);
+                createResolvedComponentsForTestWithOtherProfile(3, /* userId */ 10);
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
         when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(personalResolvedComponentInfos);
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
                 Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
         Intent sendIntent = createSendImageIntent();
         ResolveInfo[] chosen = new ResolveInfo[1];
         sOverrides.onSafelyStartCallback = targetInfo -> {
@@ -553,10 +594,38 @@
         // enable the work tab feature flag
         ResolverActivity.ENABLE_TABBED_VIEW = true;
         markWorkProfileUserAvailable();
+        List<ResolvedComponentInfo> personalResolvedComponentInfos =
+                createResolvedComponentsForTestWithOtherProfile(1);
         List<ResolvedComponentInfo> workResolvedComponentInfos = createResolvedComponentsForTest(4);
+
+        when(sOverrides.resolverListController.getResolversForIntentAsUser(
+                Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+        when(sOverrides.resolverListController.getResolversForIntentAsUser(
+                Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(sOverrides.workProfileUserHandle)))
+                .thenReturn(new ArrayList<>(workResolvedComponentInfos));
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(sOverrides.workProfileUserHandle)))
+                .thenReturn(new ArrayList<>(workResolvedComponentInfos));
         when(sOverrides.workResolverListController.getResolversForIntent(Mockito.anyBoolean(),
                 Mockito.anyBoolean(),
-                Mockito.isA(List.class))).thenReturn(workResolvedComponentInfos);
+                Mockito.isA(List.class))).thenReturn(new ArrayList<>(workResolvedComponentInfos));
+        when(sOverrides.resolverListController.getResolversForIntent(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class)))
+                .thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+        when(sOverrides.workResolverListController.getResolversForIntentAsUser(Mockito.anyBoolean(),
+                Mockito.anyBoolean(),
+                Mockito.isA(List.class),
+                eq(UserHandle.SYSTEM))).thenReturn(new ArrayList<>(personalResolvedComponentInfos));
+
         Intent sendIntent = createSendImageIntent();
 
         final ResolverWrapperActivity activity = mActivityRule.launchActivity(sendIntent);
@@ -632,6 +701,20 @@
         return infoList;
     }
 
+    private List<ResolvedComponentInfo> createResolvedComponentsForTestWithOtherProfile(
+            int numberOfResults, int userId) {
+        List<ResolvedComponentInfo> infoList = new ArrayList<>(numberOfResults);
+        for (int i = 0; i < numberOfResults; i++) {
+            if (i == 0) {
+                infoList.add(
+                        ResolverDataProvider.createResolvedComponentInfoWithOtherId(i, userId));
+            } else {
+                infoList.add(ResolverDataProvider.createResolvedComponentInfo(i));
+            }
+        }
+        return infoList;
+    }
+
     private void waitForIdle() {
         InstrumentationRegistry.getInstrumentation().waitForIdleSync();
     }
diff --git a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
index 355601c..fbe16f2 100644
--- a/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
+++ b/core/tests/coretests/src/com/android/internal/os/BatteryStatsHelperTest.java
@@ -37,12 +37,13 @@
 import android.os.BatteryStats;
 import android.os.Process;
 import android.text.format.DateUtils;
-import android.util.StatsLog;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.util.FrameworkStatsLog;
+
 import junit.framework.TestCase;
 
 import org.junit.Before;
@@ -262,31 +263,31 @@
     @Test
     public void testDrainTypesSyncedWithProto() {
         assertEquals(BatterySipper.DrainType.AMBIENT_DISPLAY.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__AMBIENT_DISPLAY);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__AMBIENT_DISPLAY);
         // AtomsProto has no "APP"
         assertEquals(BatterySipper.DrainType.BLUETOOTH.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__BLUETOOTH);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__BLUETOOTH);
         assertEquals(BatterySipper.DrainType.CAMERA.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__CAMERA);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__CAMERA);
         assertEquals(BatterySipper.DrainType.CELL.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__CELL);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__CELL);
         assertEquals(BatterySipper.DrainType.FLASHLIGHT.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__FLASHLIGHT);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__FLASHLIGHT);
         assertEquals(BatterySipper.DrainType.IDLE.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__IDLE);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__IDLE);
         assertEquals(BatterySipper.DrainType.MEMORY.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__MEMORY);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__MEMORY);
         assertEquals(BatterySipper.DrainType.OVERCOUNTED.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__OVERCOUNTED);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__OVERCOUNTED);
         assertEquals(BatterySipper.DrainType.PHONE.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__PHONE);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__PHONE);
         assertEquals(BatterySipper.DrainType.SCREEN.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__SCREEN);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__SCREEN);
         assertEquals(BatterySipper.DrainType.UNACCOUNTED.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__UNACCOUNTED);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__UNACCOUNTED);
         // AtomsProto has no "USER"
         assertEquals(BatterySipper.DrainType.WIFI.ordinal(),
-                StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__WIFI);
+                FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER__DRAIN_TYPE__WIFI);
     }
 
     private BatterySipper createTestSmearBatterySipper(long activityTime, double totalPowerMah,
diff --git a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
index cd70608..cdcf23f 100644
--- a/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
+++ b/core/tests/coretests/src/com/android/internal/policy/DecorContextTest.java
@@ -26,7 +26,6 @@
 import android.view.Display;
 import android.view.DisplayAdjustments;
 import android.view.DisplayInfo;
-import android.view.WindowManager;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
@@ -71,8 +70,7 @@
 
     private static void assertDecorContextDisplay(int expectedDisplayId,
             DecorContext decorContext) {
-        WindowManager wm = (WindowManager) decorContext.getSystemService(Context.WINDOW_SERVICE);
-        Display associatedDisplay = wm.getDefaultDisplay();
+        Display associatedDisplay = decorContext.getDisplay();
         assertEquals(expectedDisplayId, associatedDisplay.getDisplayId());
     }
 }
diff --git a/core/tests/utiltests/src/com/android/internal/util/LocationPermissionCheckerTest.java b/core/tests/utiltests/src/com/android/internal/util/LocationPermissionCheckerTest.java
index 6010f39..4c3eaeb 100644
--- a/core/tests/utiltests/src/com/android/internal/util/LocationPermissionCheckerTest.java
+++ b/core/tests/utiltests/src/com/android/internal/util/LocationPermissionCheckerTest.java
@@ -15,6 +15,7 @@
  */
 package com.android.internal.util;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -121,6 +122,7 @@
     private void setupTestCase() throws Exception {
         setupMocks();
         setupMockInterface();
+        mChecker = new LocationPermissionChecker(mMockContext);
     }
 
     private void initTestVars() {
@@ -136,7 +138,6 @@
         mFineLocationPermission = PackageManager.PERMISSION_DENIED;
         mAllowCoarseLocationApps = AppOpsManager.MODE_ERRORED;
         mAllowFineLocationApps = AppOpsManager.MODE_ERRORED;
-        mChecker = new LocationPermissionChecker(mMockContext);
     }
 
     private void setupMockInterface() {
@@ -180,7 +181,11 @@
         mWifiScanAllowApps = AppOpsManager.MODE_ALLOWED;
         mUid = mCurrentUser;
         setupTestCase();
-        mChecker.enforceLocationPermission(TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+
+        final int result =
+                mChecker.checkLocationPermissionWithDetailInfo(
+                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+        assertEquals(LocationPermissionChecker.SUCCEEDED, result);
     }
 
     @Test
@@ -193,7 +198,11 @@
         mAllowFineLocationApps = AppOpsManager.MODE_ALLOWED;
         mWifiScanAllowApps = AppOpsManager.MODE_ALLOWED;
         setupTestCase();
-        mChecker.enforceLocationPermission(TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+
+        final int result =
+                mChecker.checkLocationPermissionWithDetailInfo(
+                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+        assertEquals(LocationPermissionChecker.SUCCEEDED, result);
     }
 
     @Test
@@ -206,7 +215,7 @@
         setupTestCase();
 
         assertThrows(SecurityException.class,
-                () -> mChecker.enforceLocationPermission(
+                () -> mChecker.checkLocationPermissionWithDetailInfo(
                         TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null));
     }
 
@@ -215,9 +224,11 @@
         mThrowSecurityException = false;
         mIsLocationEnabled = true;
         setupTestCase();
-        assertThrows(SecurityException.class,
-                () -> mChecker.enforceLocationPermission(
-                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null));
+
+        final int result =
+                mChecker.checkLocationPermissionWithDetailInfo(
+                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+        assertEquals(LocationPermissionChecker.ERROR_LOCATION_PERMISSION_MISSING, result);
     }
 
     @Test
@@ -230,9 +241,10 @@
         mUid = MANAGED_PROFILE_UID;
         setupTestCase();
 
-        assertThrows(SecurityException.class,
-                () -> mChecker.enforceLocationPermission(
-                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null));
+        final int result =
+                mChecker.checkLocationPermissionWithDetailInfo(
+                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+        assertEquals(LocationPermissionChecker.ERROR_LOCATION_PERMISSION_MISSING, result);
         verify(mMockAppOps, never()).noteOp(anyInt(), anyInt(), anyString());
     }
 
@@ -246,9 +258,10 @@
 
         setupTestCase();
 
-        assertThrows(SecurityException.class,
-                () -> mChecker.enforceLocationPermission(
-                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null));
+        final int result =
+                mChecker.checkLocationPermissionWithDetailInfo(
+                        TEST_PKG_NAME, TEST_FEATURE_ID, mUid, null);
+        assertEquals(LocationPermissionChecker.ERROR_LOCATION_MODE_OFF, result);
     }
 
     private static void assertThrows(Class<? extends Exception> exceptionClass, Runnable r) {
diff --git a/data/etc/car/com.android.car.secondaryhome.xml b/data/etc/car/com.android.car.secondaryhome.xml
new file mode 100644
index 0000000..c74b86e
--- /dev/null
+++ b/data/etc/car/com.android.car.secondaryhome.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<permissions>
+    <privapp-permissions package="com.android.car.secondaryhome">
+        <!-- Required to launch app in ActivityView -->
+        <permission name="android.permission.ACTIVITY_EMBEDDING"/>
+        <!-- Required to send notification to current user-->
+        <permission name="android.permission.MANAGE_USERS"/>
+    </privapp-permissions>
+</permissions>
diff --git a/data/etc/com.android.settings.xml b/data/etc/com.android.settings.xml
index a200a51..fe1182e 100644
--- a/data/etc/com.android.settings.xml
+++ b/data/etc/com.android.settings.xml
@@ -26,6 +26,7 @@
         <permission name="android.permission.DELETE_PACKAGES"/>
         <permission name="android.permission.FORCE_STOP_PACKAGES"/>
         <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
+        <permission name="android.permission.LOG_COMPAT_CHANGE" />
         <permission name="android.permission.MANAGE_DEBUGGING"/>
         <permission name="android.permission.MANAGE_DEVICE_ADMINS"/>
         <permission name="android.permission.MANAGE_FINGERPRINT"/>
@@ -37,8 +38,10 @@
         <permission name="android.permission.MODIFY_PHONE_STATE"/>
         <permission name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
         <permission name="android.permission.MOVE_PACKAGE"/>
+        <permission name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG" />
         <permission name="android.permission.OVERRIDE_WIFI_CONFIG"/>
         <permission name="android.permission.PACKAGE_USAGE_STATS"/>
+        <permission name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
         <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE"/>
         <permission name="android.permission.READ_SEARCH_INDEXABLES"/>
         <permission name="android.permission.REBOOT"/>
diff --git a/data/etc/framework-sysconfig.xml b/data/etc/framework-sysconfig.xml
index 7296cfd..3d78eb9 100644
--- a/data/etc/framework-sysconfig.xml
+++ b/data/etc/framework-sysconfig.xml
@@ -19,11 +19,29 @@
 
     <!-- Broadcast actions that are currently exempted from O+ background
          delivery restrictions. -->
-    <allow-implicit-broadcast action="android.intent.action.SIM_STATE_CHANGED" />
-    <allow-implicit-broadcast action="android.intent.action.PACKAGE_CHANGED" />
+    <allow-implicit-broadcast action="android.intent.action.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED" />
+    <allow-implicit-broadcast action="android.intent.action.ACTION_DEFAULT_VOICE_SUBSCRIPTION_CHANGED" />
+    <allow-implicit-broadcast action="android.intent.action.DATA_SMS_RECEIVED" />
     <allow-implicit-broadcast action="android.intent.action.MEDIA_SCANNER_SCAN_FILE" />
-    <allow-implicit-broadcast action="android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION" />
+    <allow-implicit-broadcast action="android.intent.action.PACKAGE_CHANGED" />
+    <allow-implicit-broadcast action="android.intent.action.SIM_STATE_CHANGED" />
     <allow-implicit-broadcast action="android.media.action.CLOSE_AUDIO_EFFECT_CONTROL_SESSION" />
+    <allow-implicit-broadcast action="android.media.action.OPEN_AUDIO_EFFECT_CONTROL_SESSION" />
+    <allow-implicit-broadcast action="android.provider.Telephony.SECRET_CODE" />
+    <allow-implicit-broadcast action="android.provider.Telephony.SMS_CB_RECEIVED" />
+    <allow-implicit-broadcast action="android.provider.Telephony.SMS_DELIVER" />
+    <allow-implicit-broadcast action="android.provider.Telephony.SMS_RECEIVED" />
+    <allow-implicit-broadcast action="android.provider.Telephony.SMS_REJECTED" />
+    <allow-implicit-broadcast action="android.provider.Telephony.WAP_PUSH_DELIVER" />
+    <allow-implicit-broadcast action="android.provider.Telephony.WAP_PUSH_RECEIVED" />
+    <allow-implicit-broadcast action="android.telephony.action.CARRIER_CONFIG_CHANGED" />
+    <allow-implicit-broadcast action="android.telephony.action.DEFAULT_SMS_SUBSCRIPTION_CHANGED" />
+    <allow-implicit-broadcast action="android.telephony.action.DEFAULT_SUBSCRIPTION_CHANGED" />
+    <allow-implicit-broadcast action="android.telephony.action.SECRET_CODE" />
+    <allow-implicit-broadcast action="android.telephony.action.SIM_APPLICATION_STATE_CHANGED" />
+    <allow-implicit-broadcast action="android.telephony.action.SIM_CARD_STATE_CHANGED" />
+    <allow-implicit-broadcast action="android.telephony.action.SIM_SLOT_STATUS_CHANGED" />
+
 
     <!-- Whitelist of what components are permitted as backup data transports.  The
          'service' attribute here is a flattened ComponentName string. -->
diff --git a/data/etc/hiddenapi-package-whitelist.xml b/data/etc/hiddenapi-package-whitelist.xml
index 3997371..5c89da0 100644
--- a/data/etc/hiddenapi-package-whitelist.xml
+++ b/data/etc/hiddenapi-package-whitelist.xml
@@ -53,10 +53,6 @@
   <hidden-api-whitelisted-app package="com.android.providers.media" />
   <hidden-api-whitelisted-app package="com.android.providers.tv" />
   <hidden-api-whitelisted-app package="com.android.providers.userdictionary" />
-  <!-- TODO (b/141954427): Remove networkstack -->
-  <hidden-api-whitelisted-app package="com.android.networkstack" />
-  <!-- TODO (b/141954427): Remove wifistack -->
-  <hidden-api-whitelisted-app package="com.android.wifi" />
   <hidden-api-whitelisted-app package="com.android.smspush" />
   <hidden-api-whitelisted-app package="com.android.spare_parts" />
   <hidden-api-whitelisted-app package="com.android.statementservice" />
diff --git a/data/etc/platform.xml b/data/etc/platform.xml
index da50550..6929d0d 100644
--- a/data/etc/platform.xml
+++ b/data/etc/platform.xml
@@ -72,6 +72,11 @@
         <group gid="net_admin" />
     </permission>
 
+    <permission name="android.permission.MAINLINE_NETWORK_STACK" >
+        <group gid="net_admin" />
+        <group gid="net_raw" />
+    </permission>
+
     <!-- The group that /cache belongs to, linked to the permission
          set on the applications that can access /cache -->
     <permission name="android.permission.ACCESS_CACHE_FILESYSTEM" >
diff --git a/data/etc/privapp-permissions-platform.xml b/data/etc/privapp-permissions-platform.xml
index aabd412..af115b1 100644
--- a/data/etc/privapp-permissions-platform.xml
+++ b/data/etc/privapp-permissions-platform.xml
@@ -70,6 +70,7 @@
     <privapp-permissions package="com.android.managedprovisioning">
         <permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
         <permission name="android.permission.CHANGE_CONFIGURATION"/>
+        <permission name="android.permission.CONFIGURE_INTERACT_ACROSS_PROFILES"/>
         <permission name="android.permission.CRYPT_KEEPER"/>
         <permission name="android.permission.DELETE_PACKAGES"/>
         <permission name="android.permission.INSTALL_PACKAGES"/>
@@ -132,6 +133,7 @@
         <permission name="android.permission.APPROVE_INCIDENT_REPORTS"/>
         <permission name="android.permission.READ_PRIVILEGED_PHONE_STATE" />
         <permission name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
+        <permission name="android.permission.PACKAGE_USAGE_STATS" />
     </privapp-permissions>
 
     <privapp-permissions package="com.android.phone">
@@ -168,7 +170,7 @@
         <permission name="android.permission.START_ACTIVITIES_FROM_BACKGROUND"/>
         <permission name="android.permission.STATUS_BAR"/>
         <permission name="android.permission.STOP_APP_SWITCHES"/>
-        <permission name="android.permission.SUGGEST_PHONE_TIME_AND_ZONE"/>
+        <permission name="android.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE"/>
         <permission name="android.permission.UPDATE_APP_OPS_STATS"/>
         <permission name="android.permission.UPDATE_DEVICE_STATS"/>
         <permission name="android.permission.UPDATE_LOCK"/>
@@ -306,6 +308,7 @@
         <permission name="android.permission.LOCAL_MAC_ADDRESS"/>
         <permission name="android.permission.MANAGE_ACCESSIBILITY"/>
         <permission name="android.permission.MANAGE_DEVICE_ADMINS"/>
+        <permission name="android.permission.MANAGE_ROLLBACKS"/>
         <permission name="android.permission.MANAGE_USB"/>
         <permission name="android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS"/>
         <permission name="android.permission.MODIFY_PHONE_STATE"/>
@@ -364,11 +367,20 @@
         <permission name="android.permission.CONTROL_INCALL_EXPERIENCE"/>
         <!-- Permission required for Tethering CTS tests. -->
         <permission name="android.permission.TETHER_PRIVILEGED"/>
+        <!-- Permissions required for ganting and logging -->
+        <permission name="android.permission.LOG_COMPAT_CHANGE" />
+        <permission name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
+        <permission name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG" />
         <!-- Permissions required to test ambient display. -->
         <permission name="android.permission.READ_DREAM_STATE" />
         <permission name="android.permission.WRITE_DREAM_STATE" />
         <!-- Permission required to test lights control APIs. -->
         <permission name="android.permission.CONTROL_DEVICE_LIGHTS" />
+        <!-- Permission required for ShortcutManagerUsageTest CTS test. -->
+        <permission name="android.permission.ACCESS_SHORTCUTS"/>
+        <permission name="android.permission.REBOOT"/>
+        <!-- Permission required for access VIBRATOR_STATE. -->
+        <permission name="android.permission.ACCESS_VIBRATOR_STATE"/>
     </privapp-permissions>
 
     <privapp-permissions package="com.android.statementservice">
@@ -396,5 +408,6 @@
     </privapp-permissions>
     <privapp-permissions package="com.android.settings">
         <permission name="android.permission.INSTALL_DYNAMIC_SYSTEM"/>
+        <permission name="android.permission.BIND_CELL_BROADCAST_SERVICE"/>
     </privapp-permissions>
 </permissions>
diff --git a/data/etc/services.core.protolog.json b/data/etc/services.core.protolog.json
index 79589bf..9da185b 100644
--- a/data/etc/services.core.protolog.json
+++ b/data/etc/services.core.protolog.json
@@ -331,6 +331,12 @@
       "group": "WM_DEBUG_RECENTS_ANIMATIONS",
       "at": "com\/android\/server\/wm\/RecentsAnimation.java"
     },
+    "-1410260105": {
+      "message": "Schedule IME show for %s",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
     "-1391944764": {
       "message": "SURFACE DESTROY: %s. %s",
       "level": "INFO",
@@ -733,12 +739,6 @@
       "group": "WM_DEBUG_ORIENTATION",
       "at": "com\/android\/server\/wm\/DisplayRotation.java"
     },
-    "-554834595": {
-      "message": "Display id=%d is frozen, return %d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
     "-549028919": {
       "message": "enableScreenIfNeededLocked: mDisplayEnabled=%b mForceDisplayEnabled=%b mShowingBootMessages=%b mSystemBooted=%b. %s",
       "level": "INFO",
@@ -1063,6 +1063,12 @@
       "group": "WM_SHOW_TRANSACTIONS",
       "at": "com\/android\/server\/wm\/WindowSurfaceController.java"
     },
+    "140319294": {
+      "message": "IME target changed within ActivityRecord",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
     "146871307": {
       "message": "Tried to remove starting window but startingWindow was null: %s",
       "level": "VERBOSE",
@@ -1177,12 +1183,6 @@
       "group": "WM_DEBUG_APP_TRANSITIONS",
       "at": "com\/android\/server\/wm\/AppTransitionController.java"
     },
-    "292555239": {
-      "message": "ScreenRotation sill animating: mDisplayAnimator: %s\nmEnterBlackFrameAnimator: %s\nmRotateScreenAnimator: %s\nmScreenshotRotationAnimator: %s",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
-    },
     "292904800": {
       "message": "Deferring rotation, animation in progress.",
       "level": "VERBOSE",
@@ -1267,6 +1267,12 @@
       "group": "WM_ERROR",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
+    "438102669": {
+      "message": "call showInsets(ime) on %s",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
     "457951957": {
       "message": "\tNot visible=%s",
       "level": "DEBUG",
@@ -1387,6 +1393,12 @@
       "group": "WM_ERROR",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
+    "632168013": {
+      "message": "dcTarget: %s mImeTargetFromIme: %s",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
     "633654009": {
       "message": "SURFACE POS (setPositionInTransaction) @ (%f,%f): %s",
       "level": "INFO",
@@ -1555,12 +1567,6 @@
       "group": "WM_ERROR",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
-    "1004585481": {
-      "message": "%s forcing orientation to %d for display id=%d",
-      "level": "VERBOSE",
-      "group": "WM_DEBUG_ORIENTATION",
-      "at": "com\/android\/server\/wm\/DisplayContent.java"
-    },
     "1051545910": {
       "message": "Exit animation finished in %s: remove=%b",
       "level": "VERBOSE",
@@ -1681,6 +1687,12 @@
       "group": "WM_ERROR",
       "at": "com\/android\/server\/wm\/WindowManagerService.java"
     },
+    "1346895820": {
+      "message": "ScreenRotation still animating: type: %d\nmDisplayAnimator: %s\nmEnterBlackFrameAnimator: %s\nmRotateScreenAnimator: %s\nmScreenshotRotationAnimator: %s",
+      "level": "VERBOSE",
+      "group": "WM_DEBUG_ORIENTATION",
+      "at": "com\/android\/server\/wm\/ScreenRotationAnimation.java"
+    },
     "1358462645": {
       "message": "Looking for focus: %s, flags=%d, canReceive=%b",
       "level": "VERBOSE",
@@ -1693,6 +1705,18 @@
       "group": "WM_DEBUG_ADD_REMOVE",
       "at": "com\/android\/server\/wm\/ActivityRecord.java"
     },
+    "1373000889": {
+      "message": "abortShowImePostLayout",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
+    "1389009035": {
+      "message": "NonAppWindowContainer cannot set orientation: %s",
+      "level": "WARN",
+      "group": "WM_DEBUG_ORIENTATION",
+      "at": "com\/android\/server\/wm\/DisplayContent.java"
+    },
     "1401700824": {
       "message": "Window drawn win=%s",
       "level": "DEBUG",
@@ -1867,6 +1891,12 @@
       "group": "WM_DEBUG_STARTING_WINDOW",
       "at": "com\/android\/server\/wm\/ActivityRecord.java"
     },
+    "1674747211": {
+      "message": "%s forcing orientation to %d for display id=%d",
+      "level": "VERBOSE",
+      "group": "WM_DEBUG_ORIENTATION",
+      "at": "com\/android\/server\/wm\/DisplayArea.java"
+    },
     "1677260366": {
       "message": "Finish starting %s: first real window is shown, no animation",
       "level": "VERBOSE",
@@ -1987,6 +2017,12 @@
       "group": "WM_DEBUG_ADD_REMOVE",
       "at": "com\/android\/server\/wm\/WindowState.java"
     },
+    "1928325128": {
+      "message": "Run showImeRunner",
+      "level": "DEBUG",
+      "group": "WM_DEBUG_IME",
+      "at": "com\/android\/server\/wm\/ImeInsetsSourceProvider.java"
+    },
     "1947239194": {
       "message": "Deferring rotation, still finishing previous rotation",
       "level": "VERBOSE",
@@ -2139,6 +2175,9 @@
     "WM_DEBUG_FOCUS_LIGHT": {
       "tag": "WindowManager"
     },
+    "WM_DEBUG_IME": {
+      "tag": "WindowManager"
+    },
     "WM_DEBUG_KEEP_SCREEN_ON": {
       "tag": "WindowManager"
     },
diff --git a/graphics/java/android/graphics/FontFamily.java b/graphics/java/android/graphics/FontFamily.java
index 447f043..f50de16 100644
--- a/graphics/java/android/graphics/FontFamily.java
+++ b/graphics/java/android/graphics/FontFamily.java
@@ -19,6 +19,7 @@
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.AssetManager;
+import android.graphics.fonts.Font;
 import android.graphics.fonts.FontVariationAxis;
 import android.os.Build;
 import android.text.TextUtils;
@@ -195,18 +196,13 @@
         if (mBuilderPtr == 0) {
             throw new IllegalStateException("Unable to call addFontFromAsset after freezing.");
         }
-        if (axes != null) {
-            for (FontVariationAxis axis : axes) {
-                nAddAxisValue(mBuilderPtr, axis.getOpenTypeTagValue(), axis.getStyleValue());
-            }
-        }
-        return nAddFontFromAssetManager(mBuilderPtr, mgr, path, cookie, isAsset, ttcIndex, weight,
-                isItalic);
-    }
 
-    // TODO: Remove once internal user stop using private API.
-    private static boolean nAddFont(long builderPtr, ByteBuffer font, int ttcIndex) {
-        return nAddFont(builderPtr, font, ttcIndex, -1, -1);
+        try {
+            ByteBuffer buffer =  Font.Builder.createBuffer(mgr, path, isAsset, cookie);
+            return addFontFromBuffer(buffer, ttcIndex, axes, weight, isItalic);
+        } catch (IOException e) {
+            return false;
+        }
     }
 
     private static native long nInitBuilder(String langs, int variant);
@@ -225,8 +221,6 @@
             int weight, int isItalic);
     private static native boolean nAddFontWeightStyle(long builderPtr, ByteBuffer font,
             int ttcIndex, int weight, int isItalic);
-    private static native boolean nAddFontFromAssetManager(long builderPtr, AssetManager mgr,
-            String path, int cookie, boolean isAsset, int ttcIndex, int weight, int isItalic);
 
     // The added axis values are only valid for the next nAddFont* method call.
     @CriticalNative
diff --git a/services/core/java/com/android/server/GraphicsStatsService.java b/graphics/java/android/graphics/GraphicsStatsService.java
similarity index 85%
rename from services/core/java/com/android/server/GraphicsStatsService.java
rename to graphics/java/android/graphics/GraphicsStatsService.java
index 5179fa7..8dfd6ee 100644
--- a/services/core/java/com/android/server/GraphicsStatsService.java
+++ b/graphics/java/android/graphics/GraphicsStatsService.java
@@ -14,8 +14,9 @@
  * limitations under the License.
  */
 
-package com.android.server;
+package android.graphics;
 
+import android.annotation.SystemApi;
 import android.app.AlarmManager;
 import android.app.AppOpsManager;
 import android.content.Context;
@@ -26,13 +27,14 @@
 import android.os.Handler;
 import android.os.HandlerThread;
 import android.os.IBinder;
-import android.os.MemoryFile;
 import android.os.Message;
 import android.os.ParcelFileDescriptor;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.SharedMemory;
 import android.os.Trace;
 import android.os.UserHandle;
+import android.system.ErrnoException;
 import android.util.Log;
 import android.view.IGraphicsStats;
 import android.view.IGraphicsStatsCallback;
@@ -45,6 +47,7 @@
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.nio.ByteBuffer;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Calendar;
@@ -84,8 +87,8 @@
 
     // This isn't static because we need this to happen after registerNativeMethods, however
     // the class is loaded (and thus static ctor happens) before that occurs.
-    private final int ASHMEM_SIZE = nGetAshmemSize();
-    private final byte[] ZERO_DATA = new byte[ASHMEM_SIZE];
+    private final int mAshmemSize = nGetAshmemSize();
+    private final byte[] mZeroData = new byte[mAshmemSize];
 
     private final Context mContext;
     private final AppOpsManager mAppOps;
@@ -97,6 +100,7 @@
     private Handler mWriteOutHandler;
     private boolean mRotateIsScheduled = false;
 
+    @SystemApi
     public GraphicsStatsService(Context context) {
         mContext = context;
         mAppOps = context.getSystemService(AppOpsManager.class);
@@ -108,7 +112,8 @@
             throw new IllegalStateException("Graphics stats directory does not exist: "
                     + mGraphicsStatsDir.getAbsolutePath());
         }
-        HandlerThread bgthread = new HandlerThread("GraphicsStats-disk", Process.THREAD_PRIORITY_BACKGROUND);
+        HandlerThread bgthread = new HandlerThread("GraphicsStats-disk",
+                Process.THREAD_PRIORITY_BACKGROUND);
         bgthread.start();
 
         mWriteOutHandler = new Handler(bgthread.getLooper(), new Handler.Callback() {
@@ -159,7 +164,7 @@
                 active.mCallback.onRotateGraphicsStatsBuffer();
             } catch (RemoteException e) {
                 Log.w(TAG, String.format("Failed to notify '%s' (pid=%d) to rotate buffers",
-                        active.mInfo.packageName, active.mPid), e);
+                        active.mInfo.mPackageName, active.mPid), e);
             }
         }
         // Give a few seconds for everyone to rotate before doing the cleanup
@@ -167,8 +172,8 @@
     }
 
     @Override
-    public ParcelFileDescriptor requestBufferForProcess(String packageName, IGraphicsStatsCallback token)
-            throws RemoteException {
+    public ParcelFileDescriptor requestBufferForProcess(String packageName,
+            IGraphicsStatsCallback token) throws RemoteException {
         int uid = Binder.getCallingUid();
         int pid = Binder.getCallingPid();
         ParcelFileDescriptor pfd = null;
@@ -196,7 +201,7 @@
     // current day.
     // This method is invoked from native code only.
     @SuppressWarnings({"UnusedDeclaration"})
-    private long pullGraphicsStats(boolean lastFullDay) throws RemoteException {
+    private void pullGraphicsStats(boolean lastFullDay, long pulledData) throws RemoteException {
         int uid = Binder.getCallingUid();
 
         // DUMP and PACKAGE_USAGE_STATS permissions are required to invoke this method.
@@ -213,13 +218,13 @@
 
         long callingIdentity = Binder.clearCallingIdentity();
         try {
-            return pullGraphicsStatsImpl(lastFullDay);
+            pullGraphicsStatsImpl(lastFullDay, pulledData);
         } finally {
             Binder.restoreCallingIdentity(callingIdentity);
         }
     }
 
-    private long pullGraphicsStatsImpl(boolean lastFullDay) {
+    private void pullGraphicsStatsImpl(boolean lastFullDay, long pulledData) {
         long targetDay;
         if (lastFullDay) {
             // Get stats from yesterday. Stats stay constant, because the day is over.
@@ -235,7 +240,7 @@
             buffers = new ArrayList<>(mActive.size());
             for (int i = 0; i < mActive.size(); i++) {
                 ActiveBuffer buffer = mActive.get(i);
-                if (buffer.mInfo.startTime == targetDay) {
+                if (buffer.mInfo.mStartTime == targetDay) {
                     try {
                         buffers.add(new HistoricalBuffer(buffer));
                     } catch (IOException ex) {
@@ -267,18 +272,7 @@
                 }
             }
         } finally {
-            return nFinishDumpInMemory(dump);
-        }
-    }
-
-    private ParcelFileDescriptor getPfd(MemoryFile file) {
-        try {
-            if (!file.getFileDescriptor().valid()) {
-                throw new IllegalStateException("Invalid file descriptor");
-            }
-            return ParcelFileDescriptor.dup(file.getFileDescriptor());
-        } catch (IOException ex) {
-            throw new IllegalStateException("Failed to get PFD from memory file", ex);
+            nFinishDumpInMemory(dump, pulledData, lastFullDay);
         }
     }
 
@@ -286,7 +280,7 @@
             int uid, int pid, String packageName, long versionCode) throws RemoteException {
         ActiveBuffer buffer = fetchActiveBuffersLocked(token, uid, pid, packageName, versionCode);
         scheduleRotateLocked();
-        return getPfd(buffer.mProcessBuffer);
+        return buffer.getPfd();
     }
 
     private Calendar normalizeDate(long timestamp) {
@@ -301,13 +295,15 @@
 
     private File pathForApp(BufferInfo info) {
         String subPath = String.format("%d/%s/%d/total",
-                normalizeDate(info.startTime).getTimeInMillis(), info.packageName, info.versionCode);
+                normalizeDate(info.mStartTime).getTimeInMillis(), info.mPackageName,
+                info.mVersionCode);
         return new File(mGraphicsStatsDir, subPath);
     }
 
     private void saveBuffer(HistoricalBuffer buffer) {
         if (Trace.isTagEnabled(Trace.TRACE_TAG_SYSTEM_SERVER)) {
-            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "saving graphicsstats for " + buffer.mInfo.packageName);
+            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER,
+                    "saving graphicsstats for " + buffer.mInfo.mPackageName);
         }
         synchronized (mFileAccessLock) {
             File path = pathForApp(buffer.mInfo);
@@ -317,8 +313,9 @@
                 Log.w(TAG, "Unable to create path: '" + parent.getAbsolutePath() + "'");
                 return;
             }
-            nSaveBuffer(path.getAbsolutePath(), buffer.mInfo.packageName, buffer.mInfo.versionCode,
-                    buffer.mInfo.startTime, buffer.mInfo.endTime, buffer.mData);
+            nSaveBuffer(path.getAbsolutePath(), buffer.mInfo.mPackageName,
+                    buffer.mInfo.mVersionCode, buffer.mInfo.mStartTime, buffer.mInfo.mEndTime,
+                    buffer.mData);
         }
         Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
     }
@@ -365,7 +362,7 @@
             HistoricalBuffer data = new HistoricalBuffer(buffer);
             Message.obtain(mWriteOutHandler, SAVE_BUFFER, data).sendToTarget();
         } catch (IOException e) {
-            Log.w(TAG, "Failed to copy graphicsstats from " + buffer.mInfo.packageName, e);
+            Log.w(TAG, "Failed to copy graphicsstats from " + buffer.mInfo.mPackageName, e);
         }
         buffer.closeAllBuffers();
     }
@@ -386,7 +383,7 @@
             if (buffer.mPid == pid
                     && buffer.mUid == uid) {
                 // If the buffer is too old we remove it and return a new one
-                if (buffer.mInfo.startTime < today) {
+                if (buffer.mInfo.mStartTime < today) {
                     buffer.binderDied();
                     break;
                 } else {
@@ -410,8 +407,8 @@
             HistoricalBuffer buffer = buffers.get(i);
             File path = pathForApp(buffer.mInfo);
             skipFiles.add(path);
-            nAddToDump(dump, path.getAbsolutePath(), buffer.mInfo.packageName,
-                    buffer.mInfo.versionCode,  buffer.mInfo.startTime, buffer.mInfo.endTime,
+            nAddToDump(dump, path.getAbsolutePath(), buffer.mInfo.mPackageName,
+                    buffer.mInfo.mVersionCode,  buffer.mInfo.mStartTime, buffer.mInfo.mEndTime,
                     buffer.mData);
         }
         return skipFiles;
@@ -478,20 +475,20 @@
             long versionCode, long startTime, long endTime, byte[] data);
     private static native void nAddToDump(long dump, String path);
     private static native void nFinishDump(long dump);
-    private static native long nFinishDumpInMemory(long dump);
+    private static native void nFinishDumpInMemory(long dump, long pulledData, boolean lastFullDay);
     private static native void nSaveBuffer(String path, String packageName, long versionCode,
             long startTime, long endTime, byte[] data);
 
     private final class BufferInfo {
-        final String packageName;
-        final long versionCode;
-        long startTime;
-        long endTime;
+        final String mPackageName;
+        final long mVersionCode;
+        long mStartTime;
+        long mEndTime;
 
         BufferInfo(String packageName, long versionCode, long startTime) {
-            this.packageName = packageName;
-            this.versionCode = versionCode;
-            this.startTime = startTime;
+            this.mPackageName = packageName;
+            this.mVersionCode = versionCode;
+            this.mStartTime = startTime;
         }
     }
 
@@ -501,7 +498,8 @@
         final int mPid;
         final IGraphicsStatsCallback mCallback;
         final IBinder mToken;
-        MemoryFile mProcessBuffer;
+        SharedMemory mProcessBuffer;
+        ByteBuffer mMapping;
 
         ActiveBuffer(IGraphicsStatsCallback token, int uid, int pid, String packageName,
                 long versionCode)
@@ -512,8 +510,14 @@
             mCallback = token;
             mToken = mCallback.asBinder();
             mToken.linkToDeath(this, 0);
-            mProcessBuffer = new MemoryFile("GFXStats-" + pid, ASHMEM_SIZE);
-            mProcessBuffer.writeBytes(ZERO_DATA, 0, 0, ASHMEM_SIZE);
+            try {
+                mProcessBuffer = SharedMemory.create("GFXStats-" + pid, mAshmemSize);
+                mMapping = mProcessBuffer.mapReadWrite();
+            } catch (ErrnoException ex) {
+                ex.rethrowAsIOException();
+            }
+            mMapping.position(0);
+            mMapping.put(mZeroData, 0, mAshmemSize);
         }
 
         @Override
@@ -523,20 +527,40 @@
         }
 
         void closeAllBuffers() {
+            if (mMapping != null) {
+                SharedMemory.unmap(mMapping);
+                mMapping = null;
+            }
             if (mProcessBuffer != null) {
                 mProcessBuffer.close();
                 mProcessBuffer = null;
             }
         }
+
+        ParcelFileDescriptor getPfd() {
+            try {
+                return mProcessBuffer.getFdDup();
+            } catch (IOException ex) {
+                throw new IllegalStateException("Failed to get PFD from memory file", ex);
+            }
+        }
+
+        void readBytes(byte[] buffer, int count) throws IOException  {
+            if (mMapping == null) {
+                throw new IOException("SharedMemory has been deactivated");
+            }
+            mMapping.position(0);
+            mMapping.get(buffer, 0, count);
+        }
     }
 
     private final class HistoricalBuffer {
         final BufferInfo mInfo;
-        final byte[] mData = new byte[ASHMEM_SIZE];
+        final byte[] mData = new byte[mAshmemSize];
         HistoricalBuffer(ActiveBuffer active) throws IOException {
             mInfo = active.mInfo;
-            mInfo.endTime = System.currentTimeMillis();
-            active.mProcessBuffer.readBytes(mData, 0, 0, ASHMEM_SIZE);
+            mInfo.mEndTime = System.currentTimeMillis();
+            active.readBytes(mData, mAshmemSize);
         }
     }
 }
diff --git a/graphics/java/android/graphics/HardwareRenderer.java b/graphics/java/android/graphics/HardwareRenderer.java
index 3b86413..d08bfcf 100644
--- a/graphics/java/android/graphics/HardwareRenderer.java
+++ b/graphics/java/android/graphics/HardwareRenderer.java
@@ -157,7 +157,7 @@
     public HardwareRenderer() {
         mRootNode = RenderNode.adopt(nCreateRootRenderNode());
         mRootNode.setClipToBounds(false);
-        mNativeProxy = nCreateProxy(!mOpaque, mRootNode.mNativeRenderNode);
+        mNativeProxy = nCreateProxy(!mOpaque, mIsWideGamut, mRootNode.mNativeRenderNode);
         if (mNativeProxy == 0) {
             throw new OutOfMemoryError("Unable to create hardware renderer");
         }
@@ -1085,7 +1085,8 @@
 
     private static native long nCreateRootRenderNode();
 
-    private static native long nCreateProxy(boolean translucent, long rootRenderNode);
+    private static native long nCreateProxy(boolean translucent, boolean isWideGamut,
+            long rootRenderNode);
 
     private static native void nDeleteProxy(long nativeProxy);
 
diff --git a/graphics/java/android/graphics/Outline.java b/graphics/java/android/graphics/Outline.java
index 91a60c3..c12159c 100644
--- a/graphics/java/android/graphics/Outline.java
+++ b/graphics/java/android/graphics/Outline.java
@@ -43,7 +43,7 @@
     /** @hide */
     public static final int MODE_ROUND_RECT = 1;
     /** @hide */
-    public static final int MODE_CONVEX_PATH = 2;
+    public static final int MODE_PATH = 2;
 
     /** @hide */
     @Retention(RetentionPolicy.SOURCE)
@@ -51,7 +51,7 @@
             value = {
                     MODE_EMPTY,
                     MODE_ROUND_RECT,
-                    MODE_CONVEX_PATH,
+                    MODE_PATH,
             })
     public @interface Mode {}
 
@@ -60,7 +60,7 @@
     public int mMode = MODE_EMPTY;
 
     /**
-     * Only guaranteed to be non-null when mode == MODE_CONVEX_PATH
+     * Only guaranteed to be non-null when mode == MODE_PATH
      *
      * @hide
      */
@@ -124,7 +124,7 @@
      * @see android.view.View#setClipToOutline(boolean)
      */
     public boolean canClip() {
-        return mMode != MODE_CONVEX_PATH;
+        return mMode != MODE_PATH;
     }
 
     /**
@@ -157,7 +157,7 @@
      */
     public void set(@NonNull Outline src) {
         mMode = src.mMode;
-        if (src.mMode == MODE_CONVEX_PATH) {
+        if (src.mMode == MODE_PATH) {
             if (mPath == null) {
                 mPath = new Path();
             }
@@ -194,7 +194,7 @@
             return;
         }
 
-        if (mMode == MODE_CONVEX_PATH) {
+        if (mMode == MODE_PATH) {
             // rewind here to avoid thrashing the allocations, but could alternately clear ref
             mPath.rewind();
         }
@@ -213,7 +213,7 @@
     /**
      * Populates {@code outBounds} with the outline bounds, if set, and returns
      * {@code true}. If no outline bounds are set, or if a path has been set
-     * via {@link #setConvexPath(Path)}, returns {@code false}.
+     * via {@link #setPath(Path)}, returns {@code false}.
      *
      * @param outRect the rect to populate with the outline bounds, if set
      * @return {@code true} if {@code outBounds} was populated with outline
@@ -229,7 +229,7 @@
 
     /**
      * Returns the rounded rect radius, if set, or a value less than 0 if a path has
-     * been set via {@link #setConvexPath(Path)}. A return value of {@code 0}
+     * been set via {@link #setPath(Path)}. A return value of {@code 0}
      * indicates a non-rounded rect.
      *
      * @return the rounded rect radius, or value < 0
@@ -259,7 +259,7 @@
             mPath.rewind();
         }
 
-        mMode = MODE_CONVEX_PATH;
+        mMode = MODE_PATH;
         mPath.addOval(left, top, right, bottom, Path.Direction.CW);
         mRect.setEmpty();
         mRadius = RADIUS_UNDEFINED;
@@ -279,9 +279,21 @@
      * @param convexPath used to construct the Outline. As of
      * {@link android.os.Build.VERSION_CODES#Q}, it is no longer required to be
      * convex.
+     *
+     * @deprecated The path is no longer required to be convex. Use {@link #setPath} instead.
      */
+    @Deprecated
     public void setConvexPath(@NonNull Path convexPath) {
-        if (convexPath.isEmpty()) {
+        setPath(convexPath);
+    }
+
+    /**
+     * Sets the Outline to a {@link android.graphics.Path path}.
+     *
+     * @param path used to construct the Outline.
+     */
+    public void setPath(@NonNull Path path) {
+        if (path.isEmpty()) {
             setEmpty();
             return;
         }
@@ -290,8 +302,8 @@
             mPath = new Path();
         }
 
-        mMode = MODE_CONVEX_PATH;
-        mPath.set(convexPath);
+        mMode = MODE_PATH;
+        mPath.set(path);
         mRect.setEmpty();
         mRadius = RADIUS_UNDEFINED;
     }
@@ -302,7 +314,7 @@
     public void offset(int dx, int dy) {
         if (mMode == MODE_ROUND_RECT) {
             mRect.offset(dx, dy);
-        } else if (mMode == MODE_CONVEX_PATH) {
+        } else if (mMode == MODE_PATH) {
             mPath.offset(dx, dy);
         }
     }
diff --git a/graphics/java/android/graphics/RenderNode.java b/graphics/java/android/graphics/RenderNode.java
index 17e3b44..3835b2d 100644
--- a/graphics/java/android/graphics/RenderNode.java
+++ b/graphics/java/android/graphics/RenderNode.java
@@ -687,8 +687,8 @@
                         outline.mRect.left, outline.mRect.top,
                         outline.mRect.right, outline.mRect.bottom,
                         outline.mRadius, outline.mAlpha);
-            case Outline.MODE_CONVEX_PATH:
-                return nSetOutlineConvexPath(mNativeRenderNode, outline.mPath.mNativePath,
+            case Outline.MODE_PATH:
+                return nSetOutlinePath(mNativeRenderNode, outline.mPath.mNativePath,
                         outline.mAlpha);
         }
 
@@ -1620,7 +1620,7 @@
             int right, int bottom, float radius, float alpha);
 
     @CriticalNative
-    private static native boolean nSetOutlineConvexPath(long renderNode, long nativePath,
+    private static native boolean nSetOutlinePath(long renderNode, long nativePath,
             float alpha);
 
     @CriticalNative
diff --git a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
index 928e607..746378e 100644
--- a/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
+++ b/graphics/java/android/graphics/drawable/AdaptiveIconDrawable.java
@@ -387,7 +387,7 @@
 
     @Override
     public void getOutline(@NonNull Outline outline) {
-        outline.setConvexPath(mMask);
+        outline.setPath(mMask);
     }
 
     /** @hide */
diff --git a/graphics/java/android/graphics/drawable/GradientDrawable.java b/graphics/java/android/graphics/drawable/GradientDrawable.java
index 3881955..f053f39 100644
--- a/graphics/java/android/graphics/drawable/GradientDrawable.java
+++ b/graphics/java/android/graphics/drawable/GradientDrawable.java
@@ -1915,7 +1915,7 @@
             case RECTANGLE:
                 if (st.mRadiusArray != null) {
                     buildPathIfDirty();
-                    outline.setConvexPath(mPath);
+                    outline.setPath(mPath);
                     return;
                 }
 
diff --git a/graphics/java/android/graphics/drawable/shapes/RoundRectShape.java b/graphics/java/android/graphics/drawable/shapes/RoundRectShape.java
index 475e0bb..28ba605 100644
--- a/graphics/java/android/graphics/drawable/shapes/RoundRectShape.java
+++ b/graphics/java/android/graphics/drawable/shapes/RoundRectShape.java
@@ -94,7 +94,7 @@
             for (int i = 1; i < 8; i++) {
                 if (mOuterRadii[i] != radius) {
                     // can't call simple constructors, use path
-                    outline.setConvexPath(mPath);
+                    outline.setPath(mPath);
                     return;
                 }
             }
diff --git a/graphics/java/android/graphics/fonts/Font.java b/graphics/java/android/graphics/fonts/Font.java
index ba96a06..4899fbe 100644
--- a/graphics/java/android/graphics/fonts/Font.java
+++ b/graphics/java/android/graphics/fonts/Font.java
@@ -19,6 +19,7 @@
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.content.res.AssetFileDescriptor;
 import android.content.res.AssetManager;
 import android.content.res.Resources;
 import android.os.LocaleList;
@@ -35,7 +36,9 @@
 import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.IOException;
+import java.io.InputStream;
 import java.nio.ByteBuffer;
+import java.nio.ByteOrder;
 import java.nio.channels.FileChannel;
 import java.util.Arrays;
 import java.util.Objects;
@@ -54,10 +57,6 @@
      * A builder class for creating new Font.
      */
     public static final class Builder {
-        private static final NativeAllocationRegistry sAssetByteBufferRegistry =
-                NativeAllocationRegistry.createMalloced(ByteBuffer.class.getClassLoader(),
-                    nGetReleaseNativeAssetFunc());
-
         private static final NativeAllocationRegistry sFontRegistry =
                 NativeAllocationRegistry.createMalloced(Font.class.getClassLoader(),
                     nGetReleaseNativeFont());
@@ -151,7 +150,11 @@
          * @param path the file name of the font data in the asset directory
          */
         public Builder(@NonNull AssetManager am, @NonNull String path) {
-            this(am, path, true /* is asset */, 0 /* cookie */);
+            try {
+                mBuffer = createBuffer(am, path, true /* is asset */, 0 /* cookie */);
+            } catch (IOException e) {
+                mException = e;
+            }
         }
 
         /**
@@ -165,18 +168,11 @@
          */
         public Builder(@NonNull AssetManager am, @NonNull String path, boolean isAsset,
                 int cookie) {
-            final long nativeAsset = nGetNativeAsset(am, path, isAsset, cookie);
-            if (nativeAsset == 0) {
-                mException = new FileNotFoundException("Unable to open " + path);
-                return;
+            try {
+                mBuffer = createBuffer(am, path, isAsset, cookie);
+            } catch (IOException e) {
+                mException = e;
             }
-            final ByteBuffer b = nGetAssetBuffer(nativeAsset);
-            sAssetByteBufferRegistry.registerNativeAllocation(b, nativeAsset);
-            if (b == null) {
-                mException = new FileNotFoundException(path + " not found");
-                return;
-            }
-            mBuffer = b;
         }
 
         /**
@@ -199,19 +195,64 @@
                 mException = new FileNotFoundException(resId + " must be font file.");
                 return;
             }
-            final long nativeAsset = nGetNativeAsset(res.getAssets(), str, false /* is asset */,
-                    value.assetCookie);
-            if (nativeAsset == 0) {
-                mException = new FileNotFoundException("Unable to open " + str);
-                return;
+
+            try {
+                mBuffer = createBuffer(res.getAssets(), str, false, value.assetCookie);
+            } catch (IOException e) {
+                mException = e;
             }
-            final ByteBuffer b = nGetAssetBuffer(nativeAsset);
-            sAssetByteBufferRegistry.registerNativeAllocation(b, nativeAsset);
-            if (b == null) {
-                mException = new FileNotFoundException(str + " not found");
-                return;
+        }
+
+        /**
+         * Creates a buffer containing font data using the assetManager and other
+         * provided inputs.
+         *
+         * @param am the application's asset manager
+         * @param path the file name of the font data in the asset directory
+         * @param isAsset true if the undelying data is in asset
+         * @param cookie set asset cookie
+         * @return buffer containing the contents of the file
+         *
+         * @hide
+         */
+        public static ByteBuffer createBuffer(@NonNull AssetManager am, @NonNull String path,
+                                              boolean isAsset, int cookie) throws IOException {
+            Preconditions.checkNotNull(am, "assetManager can not be null");
+            Preconditions.checkNotNull(path, "path can not be null");
+
+            if (!isAsset) {
+                // Attempt to open as FD, which should work unless the asset is compressed
+                AssetFileDescriptor assetFD;
+                try {
+                    if (cookie > 0) {
+                        assetFD = am.openNonAssetFd(cookie, path);
+                    } else {
+                        assetFD = am.openNonAssetFd(path);
+                    }
+
+                    try (FileInputStream fis = assetFD.createInputStream()) {
+                        final FileChannel fc = fis.getChannel();
+                        return fc.map(FileChannel.MapMode.READ_ONLY, 0, fc.size());
+                    }
+                } catch (IOException e) {
+                    // failed to open as FD so now we will attempt to open as an input stream
+                }
             }
-            mBuffer = b;
+
+            try (InputStream assetStream = isAsset ? am.open(path, AssetManager.ACCESS_BUFFER)
+                    : am.openNonAsset(cookie, path, AssetManager.ACCESS_BUFFER)) {
+
+                int capacity = assetStream.available();
+                ByteBuffer buffer = ByteBuffer.allocateDirect(capacity);
+                buffer.order(ByteOrder.nativeOrder());
+                assetStream.read(buffer.array(), buffer.arrayOffset(), assetStream.available());
+
+                if (assetStream.read() != -1) {
+                    throw new IOException("Unable to access full contents of " + path);
+                }
+
+                return buffer;
+            }
         }
 
         /**
@@ -396,15 +437,6 @@
         }
 
         /**
-         * Native methods for accessing underlying buffer in Asset
-         */
-        private static native long nGetNativeAsset(
-                @NonNull AssetManager am, @NonNull String path, boolean isAsset, int cookie);
-        private static native ByteBuffer nGetAssetBuffer(long nativeAsset);
-        @CriticalNative
-        private static native long nGetReleaseNativeAssetFunc();
-
-        /**
          * Native methods for creating Font
          */
         private static native long nInitBuilder();
diff --git a/identity/java/android/security/identity/CredstoreIdentityCredentialStore.java b/identity/java/android/security/identity/CredstoreIdentityCredentialStore.java
index dcc6b95..1290633 100644
--- a/identity/java/android/security/identity/CredstoreIdentityCredentialStore.java
+++ b/identity/java/android/security/identity/CredstoreIdentityCredentialStore.java
@@ -38,6 +38,10 @@
         ICredentialStoreFactory storeFactory =
                 ICredentialStoreFactory.Stub.asInterface(
                     ServiceManager.getService("android.security.identity"));
+        if (storeFactory == null) {
+            // This can happen if credstore is not running or not installed.
+            return null;
+        }
 
         ICredentialStore credStore = null;
         try {
diff --git a/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java b/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
index a2d2355..8dbb5f5 100644
--- a/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
+++ b/keystore/java/android/security/keystore/AndroidKeyStoreSecretKeyFactorySpi.java
@@ -206,6 +206,7 @@
                 blockModes,
                 userAuthenticationRequired,
                 (int) userAuthenticationValidityDurationSeconds,
+                keymasterHwEnforcedUserAuthenticators,
                 userAuthenticationRequirementEnforcedBySecureHardware,
                 userAuthenticationValidWhileOnBody,
                 trustedUserPresenceRequred,
diff --git a/keystore/java/android/security/keystore/KeyGenParameterSpec.java b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
index 450dd33..d683041 100644
--- a/keystore/java/android/security/keystore/KeyGenParameterSpec.java
+++ b/keystore/java/android/security/keystore/KeyGenParameterSpec.java
@@ -263,6 +263,7 @@
     private final boolean mRandomizedEncryptionRequired;
     private final boolean mUserAuthenticationRequired;
     private final int mUserAuthenticationValidityDurationSeconds;
+    private final @KeyProperties.AuthEnum int mUserAuthenticationType;
     private final boolean mUserPresenceRequired;
     private final byte[] mAttestationChallenge;
     private final boolean mUniqueIdIncluded;
@@ -301,6 +302,7 @@
             boolean randomizedEncryptionRequired,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds,
+            @KeyProperties.AuthEnum int userAuthenticationType,
             boolean userPresenceRequired,
             byte[] attestationChallenge,
             boolean uniqueIdIncluded,
@@ -352,6 +354,7 @@
         mUserAuthenticationRequired = userAuthenticationRequired;
         mUserPresenceRequired = userPresenceRequired;
         mUserAuthenticationValidityDurationSeconds = userAuthenticationValidityDurationSeconds;
+        mUserAuthenticationType = userAuthenticationType;
         mAttestationChallenge = Utils.cloneIfNotNull(attestationChallenge);
         mUniqueIdIncluded = uniqueIdIncluded;
         mUserAuthenticationValidWhileOnBody = userAuthenticationValidWhileOnBody;
@@ -605,6 +608,22 @@
     }
 
     /**
+     * Gets the modes of authentication that can authorize use of this key. This has effect only if
+     * user authentication is required (see {@link #isUserAuthenticationRequired()}).
+     *
+     * <p>This authorization applies only to secret key and private key operations. Public key
+     * operations are not restricted.
+     *
+     * @return integer representing the bitwse OR of all acceptable authentication types for the
+     *         key.
+     *
+     * @see #isUserAuthenticationRequired()
+     * @see Builder#setUserAuthenticationParameters(int, int)
+     */
+    public @KeyProperties.AuthEnum int getUserAuthenticationType() {
+        return mUserAuthenticationType;
+    }
+    /**
      * Returns {@code true} if the key is authorized to be used only if a test of user presence has
      * been performed between the {@code Signature.initSign()} and {@code Signature.sign()} calls.
      * It requires that the KeyStore implementation have a direct way to validate the user presence
@@ -746,6 +765,7 @@
         private boolean mRandomizedEncryptionRequired = true;
         private boolean mUserAuthenticationRequired;
         private int mUserAuthenticationValidityDurationSeconds = -1;
+        private @KeyProperties.AuthEnum int mUserAuthenticationType;
         private boolean mUserPresenceRequired = false;
         private byte[] mAttestationChallenge = null;
         private boolean mUniqueIdIncluded = false;
@@ -810,6 +830,7 @@
             mUserAuthenticationRequired = sourceSpec.isUserAuthenticationRequired();
             mUserAuthenticationValidityDurationSeconds =
                 sourceSpec.getUserAuthenticationValidityDurationSeconds();
+            mUserAuthenticationType = sourceSpec.getUserAuthenticationType();
             mUserPresenceRequired = sourceSpec.isUserPresenceRequired();
             mAttestationChallenge = sourceSpec.getAttestationChallenge();
             mUniqueIdIncluded = sourceSpec.isUniqueIdIncluded();
@@ -1207,14 +1228,62 @@
          * @see BiometricPrompt
          * @see BiometricPrompt.CryptoObject
          * @see KeyguardManager
+         * @deprecated See {@link #setUserAuthenticationParameters(int, int)}
          */
+        @Deprecated
         @NonNull
         public Builder setUserAuthenticationValidityDurationSeconds(
                 @IntRange(from = -1) int seconds) {
             if (seconds < -1) {
                 throw new IllegalArgumentException("seconds must be -1 or larger");
             }
-            mUserAuthenticationValidityDurationSeconds = seconds;
+            if (seconds == -1) {
+                return setUserAuthenticationParameters(0, KeyProperties.AUTH_BIOMETRIC_STRONG);
+            }
+            return setUserAuthenticationParameters(seconds, KeyProperties.AUTH_BIOMETRIC_STRONG);
+        }
+
+        /**
+         * Sets the duration of time (seconds) and authorization type for which this key is
+         * authorized to be used after the user is successfully authenticated. This has effect if
+         * the key requires user authentication for its use (see
+         * {@link #setUserAuthenticationRequired(boolean)}).
+         *
+         * <p>By default, if user authentication is required, it must take place for every use of
+         * the key.
+         *
+         * <p>These cryptographic operations will throw {@link UserNotAuthenticatedException} during
+         * initialization if the user needs to be authenticated to proceed. This situation can be
+         * resolved by the user authenticating with the appropriate biometric or credential as
+         * required by the key. See {@link BiometricPrompt.Builder#setAllowedAuthenticators(int)}
+         * and {@link BiometricManager.Authenticators}.
+         *
+         * <p>Once resolved, initializing a new cryptographic operation using this key (or any other
+         * key which is authorized to be used for a fixed duration of time after user
+         * authentication) should succeed provided the user authentication flow completed
+         * successfully.
+         *
+         * @param timeout duration in seconds or {@code 0} if user authentication must take place
+         *        for every use of the key. {@code -1} is also accepted for legacy purposes. It is
+         *        functionally the same as {@code 0}.
+         * @param type set of authentication types which can authorize use of the key. See
+         *        {@link KeyProperties}.{@code AUTH} flags.
+         *
+         * @see #setUserAuthenticationRequired(boolean)
+         * @see BiometricPrompt
+         * @see BiometricPrompt.CryptoObject
+         * @see KeyguardManager
+         */
+        @NonNull
+        public Builder setUserAuthenticationParameters(@IntRange(from = -1) int timeout,
+                                                       @KeyProperties.AuthEnum int type) {
+            if (timeout < -1) {
+                throw new IllegalArgumentException("timeout must be -1 or larger");
+            } else if (timeout == -1) {
+                timeout = 0;
+            }
+            mUserAuthenticationValidityDurationSeconds = timeout;
+            mUserAuthenticationType = type;
             return this;
         }
 
@@ -1392,6 +1461,7 @@
                     mRandomizedEncryptionRequired,
                     mUserAuthenticationRequired,
                     mUserAuthenticationValidityDurationSeconds,
+                    mUserAuthenticationType,
                     mUserPresenceRequired,
                     mAttestationChallenge,
                     mUniqueIdIncluded,
diff --git a/keystore/java/android/security/keystore/KeyInfo.java b/keystore/java/android/security/keystore/KeyInfo.java
index 0a75cd5..d891a25 100644
--- a/keystore/java/android/security/keystore/KeyInfo.java
+++ b/keystore/java/android/security/keystore/KeyInfo.java
@@ -78,6 +78,7 @@
     private final @KeyProperties.BlockModeEnum String[] mBlockModes;
     private final boolean mUserAuthenticationRequired;
     private final int mUserAuthenticationValidityDurationSeconds;
+    private final @KeyProperties.AuthEnum int mUserAuthenticationType;
     private final boolean mUserAuthenticationRequirementEnforcedBySecureHardware;
     private final boolean mUserAuthenticationValidWhileOnBody;
     private final boolean mTrustedUserPresenceRequired;
@@ -101,6 +102,7 @@
             @KeyProperties.BlockModeEnum String[] blockModes,
             boolean userAuthenticationRequired,
             int userAuthenticationValidityDurationSeconds,
+            @KeyProperties.AuthEnum int userAuthenticationType,
             boolean userAuthenticationRequirementEnforcedBySecureHardware,
             boolean userAuthenticationValidWhileOnBody,
             boolean trustedUserPresenceRequired,
@@ -122,6 +124,7 @@
         mBlockModes = ArrayUtils.cloneIfNotEmpty(ArrayUtils.nullToEmpty(blockModes));
         mUserAuthenticationRequired = userAuthenticationRequired;
         mUserAuthenticationValidityDurationSeconds = userAuthenticationValidityDurationSeconds;
+        mUserAuthenticationType = userAuthenticationType;
         mUserAuthenticationRequirementEnforcedBySecureHardware =
                 userAuthenticationRequirementEnforcedBySecureHardware;
         mUserAuthenticationValidWhileOnBody = userAuthenticationValidWhileOnBody;
@@ -301,6 +304,22 @@
     }
 
     /**
+     * Gets the acceptable user authentication types for which this key can be authorized to be
+     * used. This has effect only if user authentication is required (see
+     * {@link #isUserAuthenticationRequired()}).
+     *
+     * <p>This authorization applies only to secret key and private key operations. Public key
+     * operations are not restricted.
+     *
+     * @return integer representing the accepted forms of user authentication for this key
+     *
+     * @see #isUserAuthenticationRequired()
+     */
+    public @KeyProperties.AuthEnum int getUserAuthenticationType() {
+        return mUserAuthenticationType;
+    }
+
+    /**
      * Returns {@code true} if the requirement that this key can only be used if the user has been
      * authenticated is enforced by secure hardware (e.g., Trusted Execution Environment (TEE) or
      * Secure Element (SE)).
diff --git a/keystore/java/android/security/keystore/KeyProperties.java b/keystore/java/android/security/keystore/KeyProperties.java
index f12a659..c58a123 100644
--- a/keystore/java/android/security/keystore/KeyProperties.java
+++ b/keystore/java/android/security/keystore/KeyProperties.java
@@ -39,6 +39,27 @@
      * @hide
      */
     @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = { "AUTH_" }, value = {
+            AUTH_BIOMETRIC_STRONG,
+            AUTH_DEVICE_CREDENTIAL,
+    })
+    public @interface AuthEnum {}
+
+    /**
+     * The non-biometric credential used to secure the device (i.e., PIN, pattern, or password)
+     */
+    public static final int AUTH_DEVICE_CREDENTIAL = 1 << 0;
+
+    /**
+     * Any biometric (e.g. fingerprint, iris, or face) on the device that meets or exceeds the
+     * requirements for <strong>Strong</strong>, as defined by the Android CDD.
+     */
+    public static final int AUTH_BIOMETRIC_STRONG = 1 << 1;
+
+    /**
+     * @hide
+     */
+    @Retention(RetentionPolicy.SOURCE)
     @IntDef(flag = true, prefix = { "PURPOSE_" }, value = {
             PURPOSE_ENCRYPT,
             PURPOSE_DECRYPT,
diff --git a/keystore/java/android/security/keystore/KeyProtection.java b/keystore/java/android/security/keystore/KeyProtection.java
index 26181a6..e230b7c 100644
--- a/keystore/java/android/security/keystore/KeyProtection.java
+++ b/keystore/java/android/security/keystore/KeyProtection.java
@@ -225,6 +225,7 @@
     private final @KeyProperties.BlockModeEnum String[] mBlockModes;
     private final boolean mRandomizedEncryptionRequired;
     private final boolean mUserAuthenticationRequired;
+    private final @KeyProperties.AuthEnum int mUserAuthenticationType;
     private final int mUserAuthenticationValidityDurationSeconds;
     private final boolean mUserPresenceRequred;
     private final boolean mUserAuthenticationValidWhileOnBody;
@@ -246,6 +247,7 @@
             @KeyProperties.BlockModeEnum String[] blockModes,
             boolean randomizedEncryptionRequired,
             boolean userAuthenticationRequired,
+            @KeyProperties.AuthEnum int userAuthenticationType,
             int userAuthenticationValidityDurationSeconds,
             boolean userPresenceRequred,
             boolean userAuthenticationValidWhileOnBody,
@@ -267,6 +269,7 @@
         mBlockModes = ArrayUtils.cloneIfNotEmpty(ArrayUtils.nullToEmpty(blockModes));
         mRandomizedEncryptionRequired = randomizedEncryptionRequired;
         mUserAuthenticationRequired = userAuthenticationRequired;
+        mUserAuthenticationType = userAuthenticationType;
         mUserAuthenticationValidityDurationSeconds = userAuthenticationValidityDurationSeconds;
         mUserPresenceRequred = userPresenceRequred;
         mUserAuthenticationValidWhileOnBody = userAuthenticationValidWhileOnBody;
@@ -429,6 +432,10 @@
         return mUserConfirmationRequired;
     }
 
+    public @KeyProperties.AuthEnum int getUserAuthenticationType() {
+        return mUserAuthenticationType;
+    }
+
     /**
      * Gets the duration of time (seconds) for which this key is authorized to be used after the
      * user is successfully authenticated. This has effect only if user authentication is required
@@ -555,6 +562,7 @@
         private @KeyProperties.BlockModeEnum String[] mBlockModes;
         private boolean mRandomizedEncryptionRequired = true;
         private boolean mUserAuthenticationRequired;
+        private @KeyProperties.AuthEnum int mUserAuthenticationType;
         private int mUserAuthenticationValidityDurationSeconds = -1;
         private boolean mUserPresenceRequired = false;
         private boolean mUserAuthenticationValidWhileOnBody;
@@ -850,14 +858,62 @@
          * @see BiometricPrompt
          * @see BiometricPrompt.CryptoObject
          * @see KeyguardManager
+         * @deprecated See {@link #setUserAuthenticationParameters(int, int)}
          */
+        @Deprecated
         @NonNull
         public Builder setUserAuthenticationValidityDurationSeconds(
                 @IntRange(from = -1) int seconds) {
             if (seconds < -1) {
                 throw new IllegalArgumentException("seconds must be -1 or larger");
             }
-            mUserAuthenticationValidityDurationSeconds = seconds;
+            if (seconds == -1) {
+                return setUserAuthenticationParameters(0, KeyProperties.AUTH_BIOMETRIC_STRONG);
+            }
+            return setUserAuthenticationParameters(seconds, KeyProperties.AUTH_BIOMETRIC_STRONG);
+        }
+
+        /**
+         * Sets the duration of time (seconds) and authorization type for which this key is
+         * authorized to be used after the user is successfully authenticated. This has effect if
+         * the key requires user authentication for its use (see
+         * {@link #setUserAuthenticationRequired(boolean)}).
+         *
+         * <p>By default, if user authentication is required, it must take place for every use of
+         * the key.
+         *
+         * <p>These cryptographic operations will throw {@link UserNotAuthenticatedException} during
+         * initialization if the user needs to be authenticated to proceed. This situation can be
+         * resolved by the user authenticating with the appropriate biometric or credential as
+         * required by the key. See {@link BiometricPrompt.Builder#setAllowedAuthenticators(int)}
+         * and {@link BiometricManager.Authenticators}.
+         *
+         * <p>Once resolved, initializing a new cryptographic operation using this key (or any other
+         * key which is authorized to be used for a fixed duration of time after user
+         * authentication) should succeed provided the user authentication flow completed
+         * successfully.
+         *
+         * @param timeout duration in seconds or {@code 0} if user authentication must take place
+         *        for every use of the key. {@code -1} is also accepted for legacy purposes. It is
+         *        functionally the same as {@code 0}.
+         * @param type set of authentication types which can authorize use of the key. See
+         *        {@link KeyProperties}.{@code AUTH} flags.
+         *
+         * @see #setUserAuthenticationRequired(boolean)
+         * @see BiometricPrompt
+         * @see BiometricPrompt.CryptoObject
+         * @see KeyguardManager
+         */
+        @NonNull
+        public Builder setUserAuthenticationParameters(@IntRange(from = -1) int timeout,
+                                                       @KeyProperties.AuthEnum int type) {
+            if (timeout < -1) {
+                throw new IllegalArgumentException("timeout must be -1 or larger");
+            } else if (timeout == -1) {
+                timeout = 0;
+            }
+            mUserAuthenticationValidityDurationSeconds = timeout;
+            mUserAuthenticationType = type;
             return this;
         }
 
@@ -1002,6 +1058,7 @@
                     mBlockModes,
                     mRandomizedEncryptionRequired,
                     mUserAuthenticationRequired,
+                    mUserAuthenticationType,
                     mUserAuthenticationValidityDurationSeconds,
                     mUserPresenceRequired,
                     mUserAuthenticationValidWhileOnBody,
diff --git a/keystore/java/android/security/keystore/KeymasterUtils.java b/keystore/java/android/security/keystore/KeymasterUtils.java
index 79e48cd..37b1f23 100644
--- a/keystore/java/android/security/keystore/KeymasterUtils.java
+++ b/keystore/java/android/security/keystore/KeymasterUtils.java
@@ -88,17 +88,9 @@
      * Adds keymaster arguments to express the key's authorization policy supported by user
      * authentication.
      *
-     * @param userAuthenticationRequired whether user authentication is required to authorize the
-     *        use of the key.
-     * @param userAuthenticationValidityDurationSeconds duration of time (seconds) for which user
-     *        authentication is valid as authorization for using the key or {@code -1} if every
-     *        use of the key needs authorization.
-     * @param boundToSpecificSecureUserId if non-zero, specify which SID the key will be bound to,
-     *        overriding the default logic in this method where the key is bound to either the root
-     *        SID of the current user, or the fingerprint SID if explicit fingerprint authorization
-     *        is requested.
-     * @param userConfirmationRequired whether user confirmation is required to authorize the use
-     *        of the key.
+     * @param args The arguments sent to keymaster that need to be populated from the spec
+     * @param spec The user authentication relevant portions of the spec passed in from the caller.
+     *        This spec will be translated into the relevant keymaster tags to be loaded into args.
      * @throws IllegalStateException if user authentication is required but the system is in a wrong
      *         state (e.g., secure lock screen not set up) for generating or importing keys that
      *         require user authentication.
@@ -122,7 +114,7 @@
             return;
         }
 
-        if (spec.getUserAuthenticationValidityDurationSeconds() == -1) {
+        if (spec.getUserAuthenticationValidityDurationSeconds() == 0) {
             PackageManager pm = KeyStore.getApplicationContext().getPackageManager();
             // Every use of this key needs to be authorized by the user. This currently means
             // fingerprint or face auth.
@@ -168,7 +160,8 @@
                 args.addUnsignedLong(KeymasterDefs.KM_TAG_USER_SECURE_ID,
                         KeymasterArguments.toUint64(sids.get(i)));
             }
-            args.addEnum(KeymasterDefs.KM_TAG_USER_AUTH_TYPE, KeymasterDefs.HW_AUTH_BIOMETRIC);
+
+            args.addEnum(KeymasterDefs.KM_TAG_USER_AUTH_TYPE, spec.getUserAuthenticationType());
 
             if (spec.isUserAuthenticationValidWhileOnBody()) {
                 throw new ProviderException("Key validity extension while device is on-body is not "
diff --git a/keystore/java/android/security/keystore/ParcelableKeyGenParameterSpec.java b/keystore/java/android/security/keystore/ParcelableKeyGenParameterSpec.java
index 98e4589..9c9773e 100644
--- a/keystore/java/android/security/keystore/ParcelableKeyGenParameterSpec.java
+++ b/keystore/java/android/security/keystore/ParcelableKeyGenParameterSpec.java
@@ -97,6 +97,7 @@
         out.writeBoolean(mSpec.isRandomizedEncryptionRequired());
         out.writeBoolean(mSpec.isUserAuthenticationRequired());
         out.writeInt(mSpec.getUserAuthenticationValidityDurationSeconds());
+        out.writeInt(mSpec.getUserAuthenticationType());
         out.writeBoolean(mSpec.isUserPresenceRequired());
         out.writeByteArray(mSpec.getAttestationChallenge());
         out.writeBoolean(mSpec.isUniqueIdIncluded());
@@ -153,6 +154,7 @@
         final boolean randomizedEncryptionRequired = in.readBoolean();
         final boolean userAuthenticationRequired = in.readBoolean();
         final int userAuthenticationValidityDurationSeconds = in.readInt();
+        final int userAuthenticationTypes = in.readInt();
         final boolean userPresenceRequired = in.readBoolean();
         final byte[] attestationChallenge = in.createByteArray();
         final boolean uniqueIdIncluded = in.readBoolean();
@@ -185,6 +187,7 @@
                 randomizedEncryptionRequired,
                 userAuthenticationRequired,
                 userAuthenticationValidityDurationSeconds,
+                userAuthenticationTypes,
                 userPresenceRequired,
                 attestationChallenge,
                 uniqueIdIncluded,
diff --git a/keystore/java/android/security/keystore/UserAuthArgs.java b/keystore/java/android/security/keystore/UserAuthArgs.java
index 6952060..c9e9bf0 100644
--- a/keystore/java/android/security/keystore/UserAuthArgs.java
+++ b/keystore/java/android/security/keystore/UserAuthArgs.java
@@ -28,6 +28,7 @@
 
     boolean isUserAuthenticationRequired();
     int getUserAuthenticationValidityDurationSeconds();
+    @KeyProperties.AuthEnum int getUserAuthenticationType();
     boolean isUserAuthenticationValidWhileOnBody();
     boolean isInvalidatedByBiometricEnrollment();
     boolean isUserConfirmationRequired();
diff --git a/libs/androidfw/AssetManager2.cpp b/libs/androidfw/AssetManager2.cpp
index 8cfd2d8..3208662 100644
--- a/libs/androidfw/AssetManager2.cpp
+++ b/libs/androidfw/AssetManager2.cpp
@@ -992,6 +992,11 @@
   return bag;
 }
 
+static bool compare_bag_entries(const ResolvedBag::Entry& entry1,
+    const ResolvedBag::Entry& entry2) {
+  return entry1.key < entry2.key;
+}
+
 const ResolvedBag* AssetManager2::GetBag(uint32_t resid, std::vector<uint32_t>& child_resids) {
   auto cached_iter = cached_bags_.find(resid);
   if (cached_iter != cached_bags_.end()) {
@@ -1027,13 +1032,15 @@
   child_resids.push_back(resid);
 
   uint32_t parent_resid = dtohl(map->parent.ident);
-  if (parent_resid == 0 || std::find(child_resids.begin(), child_resids.end(), parent_resid)
+  if (parent_resid == 0U || std::find(child_resids.begin(), child_resids.end(), parent_resid)
       != child_resids.end()) {
-    // There is no parent or that a circular dependency exist, meaning there is nothing to
-    // inherit and we can do a simple copy of the entries in the map.
+    // There is no parent or a circular dependency exist, meaning there is nothing to inherit and
+    // we can do a simple copy of the entries in the map.
     const size_t entry_count = map_entry_end - map_entry;
     util::unique_cptr<ResolvedBag> new_bag{reinterpret_cast<ResolvedBag*>(
         malloc(sizeof(ResolvedBag) + (entry_count * sizeof(ResolvedBag::Entry))))};
+
+    bool sort_entries = false;
     ResolvedBag::Entry* new_entry = new_bag->entries;
     for (; map_entry != map_entry_end; ++map_entry) {
       uint32_t new_key = dtohl(map_entry->name.ident);
@@ -1059,8 +1066,15 @@
             new_entry->value.data, new_key);
         return nullptr;
       }
+      sort_entries = sort_entries ||
+          (new_entry != new_bag->entries && (new_entry->key < (new_entry - 1U)->key));
       ++new_entry;
     }
+
+    if (sort_entries) {
+      std::sort(new_bag->entries, new_bag->entries + entry_count, compare_bag_entries);
+    }
+
     new_bag->type_spec_flags = entry.type_flags;
     new_bag->entry_count = static_cast<uint32_t>(entry_count);
     ResolvedBag* result = new_bag.get();
@@ -1091,6 +1105,7 @@
   const ResolvedBag::Entry* const parent_entry_end = parent_entry + parent_bag->entry_count;
 
   // The keys are expected to be in sorted order. Merge the two bags.
+  bool sort_entries = false;
   while (map_entry != map_entry_end && parent_entry != parent_entry_end) {
     uint32_t child_key = dtohl(map_entry->name.ident);
     if (!is_internal_resid(child_key)) {
@@ -1123,6 +1138,8 @@
       memcpy(new_entry, parent_entry, sizeof(*new_entry));
     }
 
+    sort_entries = sort_entries ||
+        (new_entry != new_bag->entries && (new_entry->key < (new_entry - 1U)->key));
     if (child_key >= parent_entry->key) {
       // Move to the next parent entry if we used it or it was overridden.
       ++parent_entry;
@@ -1153,6 +1170,8 @@
                                        new_entry->value.dataType, new_entry->value.data, new_key);
       return nullptr;
     }
+    sort_entries = sort_entries ||
+        (new_entry != new_bag->entries && (new_entry->key < (new_entry - 1U)->key));
     ++map_entry;
     ++new_entry;
   }
@@ -1172,6 +1191,10 @@
         new_bag.release(), sizeof(ResolvedBag) + (actual_count * sizeof(ResolvedBag::Entry)))));
   }
 
+  if (sort_entries) {
+    std::sort(new_bag->entries, new_bag->entries + actual_count, compare_bag_entries);
+  }
+
   // Combine flags from the parent and our own bag.
   new_bag->type_spec_flags = entry.type_flags | parent_bag->type_spec_flags;
   new_bag->entry_count = static_cast<uint32_t>(actual_count);
diff --git a/libs/androidfw/tests/AssetManager2_test.cpp b/libs/androidfw/tests/AssetManager2_test.cpp
index 2f6f3df..35fea7a 100644
--- a/libs/androidfw/tests/AssetManager2_test.cpp
+++ b/libs/androidfw/tests/AssetManager2_test.cpp
@@ -285,6 +285,27 @@
   EXPECT_EQ(0x03, get_package_id(bag->entries[1].key));
 }
 
+TEST_F(AssetManager2Test, FindsBagResourceFromMultipleSharedLibraries) {
+  AssetManager2 assetmanager;
+
+  // libclient is built with lib_one and then lib_two in order.
+  // Reverse the order to test that proper package ID re-assignment is happening.
+  assetmanager.SetApkAssets(
+      {lib_two_assets_.get(), lib_one_assets_.get(), libclient_assets_.get()});
+
+  const ResolvedBag* bag = assetmanager.GetBag(libclient::R::style::ThemeMultiLib);
+  ASSERT_NE(nullptr, bag);
+  ASSERT_EQ(bag->entry_count, 2u);
+
+  // First attribute comes from lib_two.
+  EXPECT_EQ(2, bag->entries[0].cookie);
+  EXPECT_EQ(0x02, get_package_id(bag->entries[0].key));
+
+  // The next two attributes come from lib_one.
+  EXPECT_EQ(2, bag->entries[1].cookie);
+  EXPECT_EQ(0x03, get_package_id(bag->entries[1].key));
+}
+
 TEST_F(AssetManager2Test, FindsStyleResourceWithParentFromSharedLibrary) {
   AssetManager2 assetmanager;
 
diff --git a/libs/androidfw/tests/CommonHelpers.h b/libs/androidfw/tests/CommonHelpers.h
index c160fbb..8af13f2 100644
--- a/libs/androidfw/tests/CommonHelpers.h
+++ b/libs/androidfw/tests/CommonHelpers.h
@@ -44,10 +44,6 @@
   return out << str.string();
 }
 
-static inline ::std::ostream& operator<<(::std::ostream& out, const String16& str) {
-  return out << String8(str).string();
-}
-
 static inline ::std::ostream& operator<<(::std::ostream& out, const ResTable_config& c) {
   return out << c.toString();
 }
diff --git a/libs/androidfw/tests/data/lib_two/R.h b/libs/androidfw/tests/data/lib_two/R.h
index 92b9cc1..fd5a910 100644
--- a/libs/androidfw/tests/data/lib_two/R.h
+++ b/libs/androidfw/tests/data/lib_two/R.h
@@ -30,16 +30,22 @@
     };
   };
 
+  struct integer {
+    enum : uint32_t {
+      bar = 0x02020000, // default
+    };
+  };
+
   struct string {
     enum : uint32_t {
-      LibraryString = 0x02020000,  // default
-      foo = 0x02020001, // default
+      LibraryString = 0x02030000,  // default
+      foo = 0x02030001, // default
     };
   };
 
   struct style {
     enum : uint32_t {
-      Theme = 0x02030000, // default
+      Theme = 0x02040000, // default
     };
   };
 };
diff --git a/libs/androidfw/tests/data/lib_two/lib_two.apk b/libs/androidfw/tests/data/lib_two/lib_two.apk
index 486c230..8193db6 100644
--- a/libs/androidfw/tests/data/lib_two/lib_two.apk
+++ b/libs/androidfw/tests/data/lib_two/lib_two.apk
Binary files differ
diff --git a/libs/androidfw/tests/data/lib_two/res/values/values.xml b/libs/androidfw/tests/data/lib_two/res/values/values.xml
index 340d14c..4e1d69a 100644
--- a/libs/androidfw/tests/data/lib_two/res/values/values.xml
+++ b/libs/androidfw/tests/data/lib_two/res/values/values.xml
@@ -18,14 +18,17 @@
     <public type="attr" name="attr3" id="0x00010000" />
     <attr name="attr3" format="integer" />
 
-    <public type="string" name="LibraryString" id="0x00020000" />
+    <public type="integer" name="bar" id="0x00020000" />
+    <integer name="bar">1337</integer>
+
+    <public type="string" name="LibraryString" id="0x00030000" />
     <string name="LibraryString">Hi from library two</string>
 
-    <public type="string" name="foo" id="0x00020001" />
+    <public type="string" name="foo" id="0x00030001" />
     <string name="foo">Foo from lib_two</string>
 
-    <public type="style" name="Theme" id="0x02030000" />
+    <public type="style" name="Theme" id="0x00040000" />
     <style name="Theme">
-        <item name="com.android.lib_two:attr3">800</item>
+        <item name="com.android.lib_two:attr3">@integer/bar</item>
     </style>
 </resources>
diff --git a/libs/androidfw/tests/data/libclient/R.h b/libs/androidfw/tests/data/libclient/R.h
index 43d1f9b..e21b3eb 100644
--- a/libs/androidfw/tests/data/libclient/R.h
+++ b/libs/androidfw/tests/data/libclient/R.h
@@ -34,6 +34,7 @@
   struct style {
     enum : uint32_t {
       Theme = 0x7f020000,  // default
+      ThemeMultiLib = 0x7f020001,  // default
     };
   };
 
diff --git a/libs/androidfw/tests/data/libclient/libclient.apk b/libs/androidfw/tests/data/libclient/libclient.apk
index 1799024..4b9a883 100644
--- a/libs/androidfw/tests/data/libclient/libclient.apk
+++ b/libs/androidfw/tests/data/libclient/libclient.apk
Binary files differ
diff --git a/libs/androidfw/tests/data/libclient/res/values/values.xml b/libs/androidfw/tests/data/libclient/res/values/values.xml
index fead7c3..a29f473 100644
--- a/libs/androidfw/tests/data/libclient/res/values/values.xml
+++ b/libs/androidfw/tests/data/libclient/res/values/values.xml
@@ -27,6 +27,12 @@
       <item name="bar">@com.android.lib_one:string/foo</item>
     </style>
 
+    <public type="style" name="ThemeMultiLib" id="0x7f020001" />
+    <style name="ThemeMultiLib" >
+      <item name="com.android.lib_one:attr1">@com.android.lib_one:string/foo</item>
+      <item name="com.android.lib_two:attr3">@com.android.lib_two:integer/bar</item>
+    </style>
+
     <public type="string" name="foo_one" id="0x7f030000" />
     <string name="foo_one">@com.android.lib_one:string/foo</string>
 
diff --git a/libs/hwui/Android.bp b/libs/hwui/Android.bp
index 51270f5..debb38b2 100644
--- a/libs/hwui/Android.bp
+++ b/libs/hwui/Android.bp
@@ -92,9 +92,12 @@
                 "libandroidfw",
                 "libcrypto",
                 "libsync",
+                "libstatspull",
+                "libstatssocket",
             ],
             static_libs: [
                 "libEGL_blobCache",
+                "libprotoutil",
             ],
         },
         host: {
@@ -168,7 +171,6 @@
         "renderthread/RenderTask.cpp",
         "renderthread/TimeLord.cpp",
         "hwui/AnimatedImageDrawable.cpp",
-        "hwui/AnimatedImageThread.cpp",
         "hwui/Bitmap.cpp",
         "hwui/Canvas.cpp",
         "hwui/ImageDecoder.cpp",
@@ -210,6 +212,7 @@
         android: {
 
             srcs: [
+                "hwui/AnimatedImageThread.cpp",
                 "pipeline/skia/ATraceMemoryDump.cpp",
                 "pipeline/skia/GLFunctorDrawable.cpp",
                 "pipeline/skia/LayerDrawable.cpp",
diff --git a/libs/hwui/HardwareBitmapUploader.cpp b/libs/hwui/HardwareBitmapUploader.cpp
index 3681c69..a3d552f 100644
--- a/libs/hwui/HardwareBitmapUploader.cpp
+++ b/libs/hwui/HardwareBitmapUploader.cpp
@@ -187,7 +187,9 @@
             EGLSyncKHR fence = mUploadThread->queue().runSync([&]() -> EGLSyncKHR {
                 AutoSkiaGlTexture glTexture;
                 glEGLImageTargetTexture2DOES(GL_TEXTURE_2D, autoImage.image);
-                GL_CHECKPOINT(MODERATE);
+                if (GLUtils::dumpGLErrors()) {
+                    return EGL_NO_SYNC_KHR;
+                }
 
                 // glTexSubImage2D is synchronous in sense that it memcpy() from pointer that we
                 // provide.
@@ -195,19 +197,26 @@
                 // when we first use it in drawing
                 glTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, bitmap.width(), bitmap.height(),
                                 format.format, format.type, bitmap.getPixels());
-                GL_CHECKPOINT(MODERATE);
+                if (GLUtils::dumpGLErrors()) {
+                    return EGL_NO_SYNC_KHR;
+                }
 
                 EGLSyncKHR uploadFence =
                         eglCreateSyncKHR(eglGetCurrentDisplay(), EGL_SYNC_FENCE_KHR, NULL);
-                LOG_ALWAYS_FATAL_IF(uploadFence == EGL_NO_SYNC_KHR,
-                                    "Could not create sync fence %#x", eglGetError());
+                if (uploadFence == EGL_NO_SYNC_KHR) {
+                    ALOGW("Could not create sync fence %#x", eglGetError());
+                };
                 glFlush();
+                GLUtils::dumpGLErrors();
                 return uploadFence;
             });
 
+            if (fence == EGL_NO_SYNC_KHR) {
+                return false;
+            }
             EGLint waitStatus = eglClientWaitSyncKHR(display, fence, 0, FENCE_TIMEOUT);
-            LOG_ALWAYS_FATAL_IF(waitStatus != EGL_CONDITION_SATISFIED_KHR,
-                                "Failed to wait for the fence %#x", eglGetError());
+            ALOGE_IF(waitStatus != EGL_CONDITION_SATISFIED_KHR,
+                    "Failed to wait for the fence %#x", eglGetError());
 
             eglDestroySyncKHR(display, fence);
         }
diff --git a/libs/hwui/Outline.h b/libs/hwui/Outline.h
index f1c3803..2eb2c7c 100644
--- a/libs/hwui/Outline.h
+++ b/libs/hwui/Outline.h
@@ -26,7 +26,7 @@
 
 class Outline {
 public:
-    enum class Type { None = 0, Empty = 1, ConvexPath = 2, RoundRect = 3 };
+    enum class Type { None = 0, Empty = 1, Path = 2, RoundRect = 3 };
 
     Outline() : mShouldClip(false), mType(Type::None), mRadius(0), mAlpha(0.0f) {}
 
@@ -57,12 +57,12 @@
         }
     }
 
-    void setConvexPath(const SkPath* outline, float alpha) {
+    void setPath(const SkPath* outline, float alpha) {
         if (!outline) {
             setEmpty();
             return;
         }
-        mType = Type::ConvexPath;
+        mType = Type::Path;
         mPath = *outline;
         mBounds.set(outline->getBounds());
         mAlpha = alpha;
diff --git a/libs/hwui/RenderNode.cpp b/libs/hwui/RenderNode.cpp
index 6761435..31e4555 100644
--- a/libs/hwui/RenderNode.cpp
+++ b/libs/hwui/RenderNode.cpp
@@ -27,7 +27,6 @@
 #include "DamageAccumulator.h"
 #include "pipeline/skia/SkiaDisplayList.h"
 #endif
-#include "utils/FatVector.h"
 #include "utils/MathUtils.h"
 #include "utils/StringUtils.h"
 #include "utils/TraceUtils.h"
@@ -37,6 +36,7 @@
 #include <atomic>
 #include <sstream>
 #include <string>
+#include <ui/FatVector.h>
 
 namespace android {
 namespace uirenderer {
diff --git a/libs/hwui/RenderNode.h b/libs/hwui/RenderNode.h
index d55e5b0..c0ec217 100644
--- a/libs/hwui/RenderNode.h
+++ b/libs/hwui/RenderNode.h
@@ -27,6 +27,8 @@
 
 #include <androidfw/ResourceTypes.h>
 
+#include <ui/FatVector.h>
+
 #include "AnimatorManager.h"
 #include "CanvasTransform.h"
 #include "Debug.h"
@@ -35,7 +37,6 @@
 #include "RenderProperties.h"
 #include "pipeline/skia/SkiaDisplayList.h"
 #include "pipeline/skia/SkiaLayer.h"
-#include "utils/FatVector.h"
 
 #include <vector>
 
diff --git a/libs/hwui/hwui/AnimatedImageDrawable.cpp b/libs/hwui/hwui/AnimatedImageDrawable.cpp
index 4544bea..638de85 100644
--- a/libs/hwui/hwui/AnimatedImageDrawable.cpp
+++ b/libs/hwui/hwui/AnimatedImageDrawable.cpp
@@ -15,7 +15,9 @@
  */
 
 #include "AnimatedImageDrawable.h"
+#ifdef __ANDROID__ // Layoutlib does not support AnimatedImageThread
 #include "AnimatedImageThread.h"
+#endif
 
 #include "utils/TraceUtils.h"
 
@@ -160,8 +162,10 @@
     } else if (starting) {
         // The image has animated, and now is being reset. Queue up the first
         // frame, but keep showing the current frame until the first is ready.
+#ifdef __ANDROID__ // Layoutlib does not support AnimatedImageThread
         auto& thread = uirenderer::AnimatedImageThread::getInstance();
         mNextSnapshot = thread.reset(sk_ref_sp(this));
+#endif
     }
 
     bool finalFrame = false;
@@ -187,8 +191,10 @@
     }
 
     if (mRunning && !mNextSnapshot.valid()) {
+#ifdef __ANDROID__ // Layoutlib does not support AnimatedImageThread
         auto& thread = uirenderer::AnimatedImageThread::getInstance();
         mNextSnapshot = thread.decodeNextFrame(sk_ref_sp(this));
+#endif
     }
 
     if (!drawDirectly) {
diff --git a/libs/hwui/hwui/Bitmap.cpp b/libs/hwui/hwui/Bitmap.cpp
index 7c0efe1..58cc08b 100644
--- a/libs/hwui/hwui/Bitmap.cpp
+++ b/libs/hwui/hwui/Bitmap.cpp
@@ -479,6 +479,14 @@
 
 bool Bitmap::compress(const SkBitmap& bitmap, JavaCompressFormat format,
                       int32_t quality, SkWStream* stream) {
+    if (bitmap.colorType() == kAlpha_8_SkColorType) {
+        // None of the JavaCompressFormats have a sensible way to compress an
+        // ALPHA_8 Bitmap. SkPngEncoder will compress one, but it uses a non-
+        // standard format that most decoders do not understand, so this is
+        // likely not useful.
+        return false;
+    }
+
     SkEncodedImageFormat fm;
     switch (format) {
         case JavaCompressFormat::Jpeg:
diff --git a/libs/hwui/hwui/ImageDecoder.cpp b/libs/hwui/hwui/ImageDecoder.cpp
index 4b2857f..afd82ac 100644
--- a/libs/hwui/hwui/ImageDecoder.cpp
+++ b/libs/hwui/hwui/ImageDecoder.cpp
@@ -24,6 +24,19 @@
 
 using namespace android;
 
+sk_sp<SkColorSpace> ImageDecoder::getDefaultColorSpace() const {
+    const skcms_ICCProfile* encodedProfile = mCodec->getICCProfile();
+    if (encodedProfile) {
+        // If the profile maps directly to an SkColorSpace, that SkColorSpace
+        // will be returned. Otherwise, nullptr will be returned. In either
+        // case, using this SkColorSpace results in doing no color correction.
+        return SkColorSpace::Make(*encodedProfile);
+    }
+
+    // The image has no embedded color profile, and should be treated as SRGB.
+    return SkColorSpace::MakeSRGB();
+}
+
 ImageDecoder::ImageDecoder(std::unique_ptr<SkAndroidCodec> codec, sk_sp<SkPngChunkReader> peeker)
     : mCodec(std::move(codec))
     , mPeeker(std::move(peeker))
@@ -31,7 +44,7 @@
     , mDecodeSize(mTargetSize)
     , mOutColorType(mCodec->computeOutputColorType(kN32_SkColorType))
     , mUnpremultipliedRequired(false)
-    , mOutColorSpace(mCodec->computeOutputColorSpace(mOutColorType, nullptr))
+    , mOutColorSpace(getDefaultColorSpace())
     , mSampleSize(1)
 {
 }
diff --git a/libs/hwui/hwui/ImageDecoder.h b/libs/hwui/hwui/ImageDecoder.h
index 0c99f84..a1b5157 100644
--- a/libs/hwui/hwui/ImageDecoder.h
+++ b/libs/hwui/hwui/ImageDecoder.h
@@ -43,6 +43,7 @@
 
     bool setUnpremultipliedRequired(bool unpremultipliedRequired);
 
+    sk_sp<SkColorSpace> getDefaultColorSpace() const;
     void setOutColorSpace(sk_sp<SkColorSpace> cs);
 
     // The size is the final size after scaling and cropping.
diff --git a/libs/hwui/pipeline/skia/ATraceMemoryDump.cpp b/libs/hwui/pipeline/skia/ATraceMemoryDump.cpp
index 551bdc6..234f42d 100644
--- a/libs/hwui/pipeline/skia/ATraceMemoryDump.cpp
+++ b/libs/hwui/pipeline/skia/ATraceMemoryDump.cpp
@@ -39,14 +39,13 @@
  * ATraceMemoryDump calculates memory category first by looking at the "type" string passed to
  * dumpStringValue and then by looking at "backingType" passed to setMemoryBacking.
  * Only GPU Texture memory is tracked separately and everything else is grouped as one
- * "GPU Memory" category.
+ * "Misc Memory" category.
  */
 static std::unordered_map<const char*, const char*> sResourceMap = {
         {"malloc", "HWUI CPU Memory"},          // taken from setMemoryBacking(backingType)
         {"gl_texture", "HWUI Texture Memory"},  // taken from setMemoryBacking(backingType)
-        {"Texture",
-         "HWUI Texture Memory"},  // taken from dumpStringValue(value, valueName="type")
-        // Uncomment categories below to split "GPU Memory" into more brackets for debugging.
+        {"Texture", "HWUI Texture Memory"},  // taken from dumpStringValue(value, valueName="type")
+        // Uncomment categories below to split "Misc Memory" into more brackets for debugging.
         /*{"vk_buffer", "vk_buffer"},
         {"gl_renderbuffer", "gl_renderbuffer"},
         {"gl_buffer", "gl_buffer"},
@@ -169,8 +168,8 @@
     mLastDumpValue = 0;
     mLastPurgeableDumpValue = INVALID_MEMORY_SIZE;
     mLastDumpName = dumpName;
-    // Categories not listed in sResourceMap are reported as "GPU memory"
-    mCategory = "HWUI GPU Memory";
+    // Categories not listed in sResourceMap are reported as "Misc Memory"
+    mCategory = "HWUI Misc Memory";
 }
 
 } /* namespace skiapipeline */
diff --git a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h
index cfc0f9b..d669f84 100644
--- a/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h
+++ b/libs/hwui/pipeline/skia/ReorderBarrierDrawables.h
@@ -21,7 +21,7 @@
 
 #include <SkCanvas.h>
 #include <SkDrawable.h>
-#include <utils/FatVector.h>
+#include <ui/FatVector.h>
 
 namespace android {
 namespace uirenderer {
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
index e7efe2f..8d5acc6 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.cpp
@@ -171,17 +171,15 @@
 }
 
 bool SkiaOpenGLPipeline::setSurface(ANativeWindow* surface, SwapBehavior swapBehavior,
-                                    ColorMode colorMode, uint32_t extraBuffers) {
+                                    uint32_t extraBuffers) {
     if (mEglSurface != EGL_NO_SURFACE) {
         mEglManager.destroySurface(mEglSurface);
         mEglSurface = EGL_NO_SURFACE;
     }
 
-    setSurfaceColorProperties(colorMode);
-
     if (surface) {
         mRenderThread.requireGlContext();
-        auto newSurface = mEglManager.createSurface(surface, colorMode, mSurfaceColorSpace);
+        auto newSurface = mEglManager.createSurface(surface, mColorMode, mSurfaceColorSpace);
         if (!newSurface) {
             return false;
         }
diff --git a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
index 3fe0f92..e482cad 100644
--- a/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaOpenGLPipeline.h
@@ -44,7 +44,7 @@
                      FrameInfo* currentFrameInfo, bool* requireSwap) override;
     DeferredLayerUpdater* createTextureLayer() override;
     bool setSurface(ANativeWindow* surface, renderthread::SwapBehavior swapBehavior,
-                    renderthread::ColorMode colorMode, uint32_t extraBuffers) override;
+                    uint32_t extraBuffers) override;
     void onStop() override;
     bool isSurfaceReady() override;
     bool isContextReady() override;
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.cpp b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
index b940cff..29b4dd7 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.cpp
@@ -24,6 +24,7 @@
 #include <SkOverdrawColorFilter.h>
 #include <SkPicture.h>
 #include <SkPictureRecorder.h>
+#include <SkTypeface.h>
 #include <SkSerialProcs.h>
 #include "LightingInfo.h"
 #include "VectorDrawable.h"
@@ -43,6 +44,7 @@
 namespace skiapipeline {
 
 SkiaPipeline::SkiaPipeline(RenderThread& thread) : mRenderThread(thread) {
+    setSurfaceColorProperties(mColorMode);
 }
 
 SkiaPipeline::~SkiaPipeline() {
@@ -264,6 +266,9 @@
         SkSerialProcs procs;
         procs.fImageProc = SkSharingSerialContext::serializeImage;
         procs.fImageCtx = mSerialContext.get();
+        procs.fTypefaceProc = [](SkTypeface* tf, void* ctx){
+            return tf->serialize(SkTypeface::SerializeBehavior::kDoIncludeData);
+        };
         // SkDocuments don't take owership of the streams they write.
         // we need to keep it until after mMultiPic.close()
         // procs is passed as a pointer, but just as a method of having an optional default.
@@ -405,6 +410,10 @@
                 std::invoke(mPictureCapturedCallback, std::move(picture));
             } else {
                 // single frame skp to file
+                SkSerialProcs procs;
+                procs.fTypefaceProc = [](SkTypeface* tf, void* ctx){
+                    return tf->serialize(SkTypeface::SerializeBehavior::kDoIncludeData);
+                };
                 auto data = picture->serialize();
                 savePictureAsync(data, mCapturedFile);
                 mCaptureSequence = 0;
@@ -576,6 +585,7 @@
 }
 
 void SkiaPipeline::setSurfaceColorProperties(ColorMode colorMode) {
+    mColorMode = colorMode;
     if (colorMode == ColorMode::SRGB) {
         mSurfaceColorType = SkColorType::kN32_SkColorType;
         mSurfaceColorSpace = SkColorSpace::MakeSRGB();
diff --git a/libs/hwui/pipeline/skia/SkiaPipeline.h b/libs/hwui/pipeline/skia/SkiaPipeline.h
index af8414d..8341164 100644
--- a/libs/hwui/pipeline/skia/SkiaPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaPipeline.h
@@ -50,6 +50,7 @@
     bool createOrUpdateLayer(RenderNode* node, const DamageAccumulator& damageAccumulator,
                              ErrorHandler* errorHandler) override;
 
+    void setSurfaceColorProperties(renderthread::ColorMode colorMode) override;
     SkColorType getSurfaceColorType() const override { return mSurfaceColorType; }
     sk_sp<SkColorSpace> getSurfaceColorSpace() override { return mSurfaceColorSpace; }
 
@@ -72,9 +73,10 @@
 
 protected:
     void dumpResourceCacheUsage() const;
-    void setSurfaceColorProperties(renderthread::ColorMode colorMode);
 
     renderthread::RenderThread& mRenderThread;
+
+    renderthread::ColorMode mColorMode = renderthread::ColorMode::SRGB;
     SkColorType mSurfaceColorType;
     sk_sp<SkColorSpace> mSurfaceColorSpace;
 
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
index ad7c706..535a199 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.cpp
@@ -117,17 +117,16 @@
 void SkiaVulkanPipeline::onStop() {}
 
 bool SkiaVulkanPipeline::setSurface(ANativeWindow* surface, SwapBehavior swapBehavior,
-                                    ColorMode colorMode, uint32_t extraBuffers) {
+                                    uint32_t extraBuffers) {
     if (mVkSurface) {
         mVkManager.destroySurface(mVkSurface);
         mVkSurface = nullptr;
     }
 
-    setSurfaceColorProperties(colorMode);
     if (surface) {
         mRenderThread.requireVkContext();
         mVkSurface =
-                mVkManager.createSurface(surface, colorMode, mSurfaceColorSpace, mSurfaceColorType,
+                mVkManager.createSurface(surface, mColorMode, mSurfaceColorSpace, mSurfaceColorType,
                                          mRenderThread.getGrContext(), extraBuffers);
     }
 
diff --git a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
index 3173478..c8bf233 100644
--- a/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
+++ b/libs/hwui/pipeline/skia/SkiaVulkanPipeline.h
@@ -43,7 +43,7 @@
                      FrameInfo* currentFrameInfo, bool* requireSwap) override;
     DeferredLayerUpdater* createTextureLayer() override;
     bool setSurface(ANativeWindow* surface, renderthread::SwapBehavior swapBehavior,
-                    renderthread::ColorMode colorMode, uint32_t extraBuffers) override;
+                    uint32_t extraBuffers) override;
     void onStop() override;
     bool isSurfaceReady() override;
     bool isContextReady() override;
diff --git a/libs/hwui/renderthread/CanvasContext.cpp b/libs/hwui/renderthread/CanvasContext.cpp
index 5993e17..91f9447 100644
--- a/libs/hwui/renderthread/CanvasContext.cpp
+++ b/libs/hwui/renderthread/CanvasContext.cpp
@@ -143,10 +143,11 @@
     ATRACE_CALL();
 
     if (surface) {
-        mNativeSurface = new ReliableSurface{std::move(surface)};
+        mNativeSurface = std::make_unique<ReliableSurface>(std::move(surface));
+        mNativeSurface->init();
         if (enableTimeout) {
             // TODO: Fix error handling & re-shorten timeout
-            ANativeWindow_setDequeueTimeout(mNativeSurface.get(), 4000_ms);
+            ANativeWindow_setDequeueTimeout(mNativeSurface->getNativeWindow(), 4000_ms);
         }
     } else {
         mNativeSurface = nullptr;
@@ -160,9 +161,9 @@
         mRenderAheadCapacity = mRenderAheadDepth;
     }
 
-    ColorMode colorMode = mWideColorGamut ? ColorMode::WideColorGamut : ColorMode::SRGB;
-    bool hasSurface = mRenderPipeline->setSurface(mNativeSurface.get(), mSwapBehavior, colorMode,
-                                                  mRenderAheadCapacity);
+    bool hasSurface = mRenderPipeline->setSurface(
+            mNativeSurface ? mNativeSurface->getNativeWindow() : nullptr, mSwapBehavior,
+            mRenderAheadCapacity);
 
     mFrameNumber = -1;
 
@@ -172,7 +173,7 @@
         // Enable frame stats after the surface has been bound to the appropriate graphics API.
         // Order is important when new and old surfaces are the same, because old surface has
         // its frame stats disabled automatically.
-        mNativeSurface->enableFrameTimestamps(true);
+        native_window_enable_frame_timestamps(mNativeSurface->getNativeWindow(), true);
     } else {
         mRenderThread.removeFrameCallback(this);
         mGenerationID++;
@@ -203,7 +204,8 @@
 
 void CanvasContext::allocateBuffers() {
     if (mNativeSurface) {
-        mNativeSurface->allocateBuffers();
+        ANativeWindow* anw = mNativeSurface->getNativeWindow();
+        ANativeWindow_allocateBuffers(anw);
     }
 }
 
@@ -222,7 +224,8 @@
 }
 
 void CanvasContext::setWideGamut(bool wideGamut) {
-    mWideColorGamut = wideGamut;
+    ColorMode colorMode = wideGamut ? ColorMode::WideColorGamut : ColorMode::SRGB;
+    mRenderPipeline->setSurfaceColorProperties(colorMode);
 }
 
 bool CanvasContext::makeCurrent() {
@@ -426,9 +429,10 @@
 
     if (renderAhead) {
         presentTime = mCurrentFrameInfo->get(FrameInfoIndex::Vsync) +
-                (frameIntervalNanos * (renderAhead + 1));
+                (frameIntervalNanos * (renderAhead + 1)) - DeviceInfo::get()->getAppOffset() +
+                (frameIntervalNanos / 2);
     }
-    native_window_set_buffers_timestamp(mNativeSurface.get(), presentTime);
+    native_window_set_buffers_timestamp(mNativeSurface->getNativeWindow(), presentTime);
 }
 
 void CanvasContext::draw() {
@@ -489,16 +493,18 @@
         swap.swapCompletedTime = systemTime(SYSTEM_TIME_MONOTONIC);
         swap.vsyncTime = mRenderThread.timeLord().latestVsync();
         if (didDraw) {
-            nsecs_t dequeueStart = ANativeWindow_getLastDequeueStartTime(mNativeSurface.get());
+            nsecs_t dequeueStart =
+                    ANativeWindow_getLastDequeueStartTime(mNativeSurface->getNativeWindow());
             if (dequeueStart < mCurrentFrameInfo->get(FrameInfoIndex::SyncStart)) {
                 // Ignoring dequeue duration as it happened prior to frame render start
                 // and thus is not part of the frame.
                 swap.dequeueDuration = 0;
             } else {
                 swap.dequeueDuration =
-                        ANativeWindow_getLastDequeueDuration(mNativeSurface.get());
+                        ANativeWindow_getLastDequeueDuration(mNativeSurface->getNativeWindow());
             }
-            swap.queueDuration = ANativeWindow_getLastQueueDuration(mNativeSurface.get());
+            swap.queueDuration =
+                    ANativeWindow_getLastQueueDuration(mNativeSurface->getNativeWindow());
         } else {
             swap.dequeueDuration = 0;
             swap.queueDuration = 0;
@@ -550,8 +556,9 @@
         FrameInfo* forthBehind = mLast4FrameInfos.front().first;
         int64_t composedFrameId = mLast4FrameInfos.front().second;
         nsecs_t acquireTime = -1;
-        mNativeSurface->getFrameTimestamps(composedFrameId, nullptr, &acquireTime, nullptr, nullptr,
-            nullptr, nullptr, nullptr, nullptr, nullptr);
+        native_window_get_frame_timestamps(mNativeSurface->getNativeWindow(), composedFrameId,
+                                           nullptr, &acquireTime, nullptr, nullptr, nullptr,
+                                           nullptr, nullptr, nullptr, nullptr);
         // Ignore default -1, NATIVE_WINDOW_TIMESTAMP_INVALID and NATIVE_WINDOW_TIMESTAMP_PENDING
         forthBehind->set(FrameInfoIndex::GpuCompleted) = acquireTime > 0 ? acquireTime : -1;
         mJankTracker.finishGpuDraw(*forthBehind);
@@ -567,14 +574,16 @@
 }
 
 SkISize CanvasContext::getNextFrameSize() const {
-    ReliableSurface* surface = mNativeSurface.get();
-    if (surface) {
-        SkISize size;
-        size.fWidth = ANativeWindow_getWidth(surface);
-        size.fHeight = ANativeWindow_getHeight(surface);
-        return size;
+    static constexpr SkISize defaultFrameSize = {INT32_MAX, INT32_MAX};
+    if (mNativeSurface == nullptr) {
+        return defaultFrameSize;
     }
-    return {INT32_MAX, INT32_MAX};
+    ANativeWindow* anw = mNativeSurface->getNativeWindow();
+
+    SkISize size;
+    size.fWidth = ANativeWindow_getWidth(anw);
+    size.fHeight = ANativeWindow_getHeight(anw);
+    return size;
 }
 
 void CanvasContext::prepareAndDraw(RenderNode* node) {
@@ -693,7 +702,7 @@
 int64_t CanvasContext::getFrameNumber() {
     // mFrameNumber is reset to -1 when the surface changes or we swap buffers
     if (mFrameNumber == -1 && mNativeSurface.get()) {
-        mFrameNumber = static_cast<int64_t>(mNativeSurface->getNextFrameNumber());
+        mFrameNumber = ANativeWindow_getNextFrameId(mNativeSurface->getNativeWindow());
     }
     return mFrameNumber;
 }
@@ -702,11 +711,9 @@
     if (!mNativeSurface) return false;
     if (mHaveNewSurface) return true;
 
-    int width = -1;
-    int height = -1;
-    ReliableSurface* surface = mNativeSurface.get();
-    surface->query(NATIVE_WINDOW_WIDTH, &width);
-    surface->query(NATIVE_WINDOW_HEIGHT, &height);
+    ANativeWindow* anw = mNativeSurface->getNativeWindow();
+    const int width = ANativeWindow_getWidth(anw);
+    const int height = ANativeWindow_getHeight(anw);
 
     return width != mLastFrameWidth || height != mLastFrameHeight;
 }
diff --git a/libs/hwui/renderthread/CanvasContext.h b/libs/hwui/renderthread/CanvasContext.h
index 4490f80..629c741 100644
--- a/libs/hwui/renderthread/CanvasContext.h
+++ b/libs/hwui/renderthread/CanvasContext.h
@@ -220,7 +220,7 @@
     int32_t mLastFrameHeight = 0;
 
     RenderThread& mRenderThread;
-    sp<ReliableSurface> mNativeSurface;
+    std::unique_ptr<ReliableSurface> mNativeSurface;
     // stopped indicates the CanvasContext will reject actual redraw operations,
     // and defer repaint until it is un-stopped
     bool mStopped = false;
@@ -251,7 +251,6 @@
     nsecs_t mLastDropVsync = 0;
 
     bool mOpaque;
-    bool mWideColorGamut = false;
     bool mUseForceDark = false;
     LightInfo mLightInfo;
     LightGeometry mLightGeometry = {{0, 0, 0}, 0};
diff --git a/libs/hwui/renderthread/IRenderPipeline.h b/libs/hwui/renderthread/IRenderPipeline.h
index ef0aa98..ba0d64c 100644
--- a/libs/hwui/renderthread/IRenderPipeline.h
+++ b/libs/hwui/renderthread/IRenderPipeline.h
@@ -66,7 +66,7 @@
     virtual bool swapBuffers(const Frame& frame, bool drew, const SkRect& screenDirty,
                              FrameInfo* currentFrameInfo, bool* requireSwap) = 0;
     virtual DeferredLayerUpdater* createTextureLayer() = 0;
-    virtual bool setSurface(ANativeWindow* window, SwapBehavior swapBehavior, ColorMode colorMode,
+    virtual bool setSurface(ANativeWindow* window, SwapBehavior swapBehavior,
                             uint32_t extraBuffers) = 0;
     virtual void onStop() = 0;
     virtual bool isSurfaceReady() = 0;
@@ -80,6 +80,8 @@
     virtual bool pinImages(std::vector<SkImage*>& mutableImages) = 0;
     virtual bool pinImages(LsaVector<sk_sp<Bitmap>>& images) = 0;
     virtual void unpinImages() = 0;
+
+    virtual void setSurfaceColorProperties(ColorMode colorMode) = 0;
     virtual SkColorType getSurfaceColorType() const = 0;
     virtual sk_sp<SkColorSpace> getSurfaceColorSpace() = 0;
     virtual GrSurfaceOrigin getSurfaceOrigin() = 0;
diff --git a/libs/hwui/renderthread/ReliableSurface.cpp b/libs/hwui/renderthread/ReliableSurface.cpp
index 864780f..e92500f 100644
--- a/libs/hwui/renderthread/ReliableSurface.cpp
+++ b/libs/hwui/renderthread/ReliableSurface.cpp
@@ -26,64 +26,38 @@
 // to propagate this error back to the caller
 constexpr bool DISABLE_BUFFER_PREFETCH = true;
 
-// TODO: Make surface less protected
-// This exists because perform is a varargs, and ANativeWindow has no va_list perform.
-// So wrapping/chaining that is hard. Telling the compiler to ignore protected is easy, so we do
-// that instead
-struct SurfaceExposer : Surface {
-    // Make warnings happy
-    SurfaceExposer() = delete;
-
-    using Surface::cancelBuffer;
-    using Surface::dequeueBuffer;
-    using Surface::lockBuffer_DEPRECATED;
-    using Surface::perform;
-    using Surface::queueBuffer;
-    using Surface::setBufferCount;
-    using Surface::setSwapInterval;
-};
-
-#define callProtected(surface, func, ...) ((*surface).*&SurfaceExposer::func)(__VA_ARGS__)
-
 ReliableSurface::ReliableSurface(sp<Surface>&& surface) : mSurface(std::move(surface)) {
     LOG_ALWAYS_FATAL_IF(!mSurface, "Error, unable to wrap a nullptr");
-
-    ANativeWindow::setSwapInterval = hook_setSwapInterval;
-    ANativeWindow::dequeueBuffer = hook_dequeueBuffer;
-    ANativeWindow::cancelBuffer = hook_cancelBuffer;
-    ANativeWindow::queueBuffer = hook_queueBuffer;
-    ANativeWindow::query = hook_query;
-    ANativeWindow::perform = hook_perform;
-
-    ANativeWindow::dequeueBuffer_DEPRECATED = hook_dequeueBuffer_DEPRECATED;
-    ANativeWindow::cancelBuffer_DEPRECATED = hook_cancelBuffer_DEPRECATED;
-    ANativeWindow::lockBuffer_DEPRECATED = hook_lockBuffer_DEPRECATED;
-    ANativeWindow::queueBuffer_DEPRECATED = hook_queueBuffer_DEPRECATED;
 }
 
 ReliableSurface::~ReliableSurface() {
     clearReservedBuffer();
+    // Clear out the interceptors for proper hygiene.
+    // As a concrete example, if the underlying ANativeWindow is associated with
+    // an EGLSurface that is still in use, then if we don't clear out the
+    // interceptors then we walk into undefined behavior.
+    ANativeWindow_setCancelBufferInterceptor(mSurface.get(), nullptr, nullptr);
+    ANativeWindow_setDequeueBufferInterceptor(mSurface.get(), nullptr, nullptr);
+    ANativeWindow_setQueueBufferInterceptor(mSurface.get(), nullptr, nullptr);
+    ANativeWindow_setPerformInterceptor(mSurface.get(), nullptr, nullptr);
 }
 
-void ReliableSurface::perform(int operation, va_list args) {
-    std::lock_guard _lock{mMutex};
+void ReliableSurface::init() {
+    int result = ANativeWindow_setCancelBufferInterceptor(mSurface.get(), hook_cancelBuffer, this);
+    LOG_ALWAYS_FATAL_IF(result != NO_ERROR, "Failed to set cancelBuffer interceptor: error = %d",
+                        result);
 
-    switch (operation) {
-        case NATIVE_WINDOW_SET_USAGE:
-            mUsage = va_arg(args, uint32_t);
-            break;
-        case NATIVE_WINDOW_SET_USAGE64:
-            mUsage = va_arg(args, uint64_t);
-            break;
-        case NATIVE_WINDOW_SET_BUFFERS_GEOMETRY:
-            /* width */ va_arg(args, uint32_t);
-            /* height */ va_arg(args, uint32_t);
-            mFormat = va_arg(args, PixelFormat);
-            break;
-        case NATIVE_WINDOW_SET_BUFFERS_FORMAT:
-            mFormat = va_arg(args, PixelFormat);
-            break;
-    }
+    result = ANativeWindow_setDequeueBufferInterceptor(mSurface.get(), hook_dequeueBuffer, this);
+    LOG_ALWAYS_FATAL_IF(result != NO_ERROR, "Failed to set dequeueBuffer interceptor: error = %d",
+                        result);
+
+    result = ANativeWindow_setQueueBufferInterceptor(mSurface.get(), hook_queueBuffer, this);
+    LOG_ALWAYS_FATAL_IF(result != NO_ERROR, "Failed to set queueBuffer interceptor: error = %d",
+                        result);
+
+    result = ANativeWindow_setPerformInterceptor(mSurface.get(), hook_perform, this);
+    LOG_ALWAYS_FATAL_IF(result != NO_ERROR, "Failed to set perform interceptor: error = %d",
+                        result);
 }
 
 int ReliableSurface::reserveNext() {
@@ -111,7 +85,9 @@
 
     int fenceFd = -1;
     ANativeWindowBuffer* buffer = nullptr;
-    int result = callProtected(mSurface, dequeueBuffer, &buffer, &fenceFd);
+
+    // Note that this calls back into our own hooked method.
+    int result = ANativeWindow_dequeueBuffer(mSurface.get(), &buffer, &fenceFd);
 
     {
         std::lock_guard _lock{mMutex};
@@ -138,61 +114,13 @@
         mHasDequeuedBuffer = false;
     }
     if (buffer) {
-        callProtected(mSurface, cancelBuffer, buffer, releaseFd);
+        // Note that clearReservedBuffer may be reentrant here, so
+        // mReservedBuffer must be cleared once we reach here to avoid recursing
+        // forever.
+        ANativeWindow_cancelBuffer(mSurface.get(), buffer, releaseFd);
     }
 }
 
-int ReliableSurface::cancelBuffer(ANativeWindowBuffer* buffer, int fenceFd) {
-    clearReservedBuffer();
-    if (isFallbackBuffer(buffer)) {
-        if (fenceFd > 0) {
-            close(fenceFd);
-        }
-        return OK;
-    }
-    int result = callProtected(mSurface, cancelBuffer, buffer, fenceFd);
-    return result;
-}
-
-int ReliableSurface::dequeueBuffer(ANativeWindowBuffer** buffer, int* fenceFd) {
-    {
-        std::lock_guard _lock{mMutex};
-        if (mReservedBuffer) {
-            *buffer = mReservedBuffer;
-            *fenceFd = mReservedFenceFd.release();
-            mReservedBuffer = nullptr;
-            return OK;
-        }
-    }
-
-
-    int result = callProtected(mSurface, dequeueBuffer, buffer, fenceFd);
-    if (result != OK) {
-        ALOGW("dequeueBuffer failed, error = %d; switching to fallback", result);
-        *buffer = acquireFallbackBuffer(result);
-        *fenceFd = -1;
-        return *buffer ? OK : INVALID_OPERATION;
-    } else {
-        std::lock_guard _lock{mMutex};
-        mHasDequeuedBuffer = true;
-    }
-    return OK;
-}
-
-int ReliableSurface::queueBuffer(ANativeWindowBuffer* buffer, int fenceFd) {
-    clearReservedBuffer();
-
-    if (isFallbackBuffer(buffer)) {
-        if (fenceFd > 0) {
-            close(fenceFd);
-        }
-        return OK;
-    }
-
-    int result = callProtected(mSurface, queueBuffer, buffer, fenceFd);
-    return result;
-}
-
 bool ReliableSurface::isFallbackBuffer(const ANativeWindowBuffer* windowBuffer) const {
     if (!mScratchBuffer || !windowBuffer) {
         return false;
@@ -229,82 +157,95 @@
     return AHardwareBuffer_to_ANativeWindowBuffer(newBuffer);
 }
 
-Surface* ReliableSurface::getWrapped(const ANativeWindow* window) {
-    return getSelf(window)->mSurface.get();
-}
+int ReliableSurface::hook_dequeueBuffer(ANativeWindow* window,
+                                        ANativeWindow_dequeueBufferFn dequeueBuffer, void* data,
+                                        ANativeWindowBuffer** buffer, int* fenceFd) {
+    ReliableSurface* rs = reinterpret_cast<ReliableSurface*>(data);
+    {
+        std::lock_guard _lock{rs->mMutex};
+        if (rs->mReservedBuffer) {
+            *buffer = rs->mReservedBuffer;
+            *fenceFd = rs->mReservedFenceFd.release();
+            rs->mReservedBuffer = nullptr;
+            return OK;
+        }
+    }
 
-int ReliableSurface::hook_setSwapInterval(ANativeWindow* window, int interval) {
-    return callProtected(getWrapped(window), setSwapInterval, interval);
-}
-
-int ReliableSurface::hook_dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer,
-                                        int* fenceFd) {
-    return getSelf(window)->dequeueBuffer(buffer, fenceFd);
-}
-
-int ReliableSurface::hook_cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer,
-                                       int fenceFd) {
-    return getSelf(window)->cancelBuffer(buffer, fenceFd);
-}
-
-int ReliableSurface::hook_queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer,
-                                      int fenceFd) {
-    return getSelf(window)->queueBuffer(buffer, fenceFd);
-}
-
-int ReliableSurface::hook_dequeueBuffer_DEPRECATED(ANativeWindow* window,
-                                                   ANativeWindowBuffer** buffer) {
-    ANativeWindowBuffer* buf;
-    int fenceFd = -1;
-    int result = window->dequeueBuffer(window, &buf, &fenceFd);
+    int result = dequeueBuffer(window, buffer, fenceFd);
     if (result != OK) {
-        return result;
+        ALOGW("dequeueBuffer failed, error = %d; switching to fallback", result);
+        *buffer = rs->acquireFallbackBuffer(result);
+        *fenceFd = -1;
+        return *buffer ? OK : INVALID_OPERATION;
+    } else {
+        std::lock_guard _lock{rs->mMutex};
+        rs->mHasDequeuedBuffer = true;
     }
-    sp<Fence> fence(new Fence(fenceFd));
-    int waitResult = fence->waitForever("dequeueBuffer_DEPRECATED");
-    if (waitResult != OK) {
-        ALOGE("dequeueBuffer_DEPRECATED: Fence::wait returned an error: %d", waitResult);
-        window->cancelBuffer(window, buf, -1);
-        return waitResult;
-    }
-    *buffer = buf;
-    return result;
-}
-
-int ReliableSurface::hook_cancelBuffer_DEPRECATED(ANativeWindow* window,
-                                                  ANativeWindowBuffer* buffer) {
-    return window->cancelBuffer(window, buffer, -1);
-}
-
-int ReliableSurface::hook_lockBuffer_DEPRECATED(ANativeWindow* window,
-                                                ANativeWindowBuffer* buffer) {
-    // This method is a no-op in Surface as well
     return OK;
 }
 
-int ReliableSurface::hook_queueBuffer_DEPRECATED(ANativeWindow* window,
-                                                 ANativeWindowBuffer* buffer) {
-    return window->queueBuffer(window, buffer, -1);
+int ReliableSurface::hook_cancelBuffer(ANativeWindow* window,
+                                       ANativeWindow_cancelBufferFn cancelBuffer, void* data,
+                                       ANativeWindowBuffer* buffer, int fenceFd) {
+    ReliableSurface* rs = reinterpret_cast<ReliableSurface*>(data);
+    rs->clearReservedBuffer();
+    if (rs->isFallbackBuffer(buffer)) {
+        if (fenceFd > 0) {
+            close(fenceFd);
+        }
+        return OK;
+    }
+    return cancelBuffer(window, buffer, fenceFd);
 }
 
-int ReliableSurface::hook_query(const ANativeWindow* window, int what, int* value) {
-    return getWrapped(window)->query(what, value);
+int ReliableSurface::hook_queueBuffer(ANativeWindow* window,
+                                      ANativeWindow_queueBufferFn queueBuffer, void* data,
+                                      ANativeWindowBuffer* buffer, int fenceFd) {
+    ReliableSurface* rs = reinterpret_cast<ReliableSurface*>(data);
+    rs->clearReservedBuffer();
+
+    if (rs->isFallbackBuffer(buffer)) {
+        if (fenceFd > 0) {
+            close(fenceFd);
+        }
+        return OK;
+    }
+
+    return queueBuffer(window, buffer, fenceFd);
 }
 
-int ReliableSurface::hook_perform(ANativeWindow* window, int operation, ...) {
+int ReliableSurface::hook_perform(ANativeWindow* window, ANativeWindow_performFn perform,
+                                  void* data, int operation, va_list args) {
     // Drop the reserved buffer if there is one since this (probably) mutated buffer dimensions
     // TODO: Filter to things that only affect the reserved buffer
     // TODO: Can we mutate the reserved buffer in some cases?
-    getSelf(window)->clearReservedBuffer();
-    va_list args;
-    va_start(args, operation);
-    int result = callProtected(getWrapped(window), perform, operation, args);
-    va_end(args);
+    ReliableSurface* rs = reinterpret_cast<ReliableSurface*>(data);
+    rs->clearReservedBuffer();
 
-    va_start(args, operation);
-    getSelf(window)->perform(operation, args);
-    va_end(args);
+    va_list argsCopy;
+    va_copy(argsCopy, args);
+    int result = perform(window, operation, argsCopy);
 
+    {
+        std::lock_guard _lock{rs->mMutex};
+
+        switch (operation) {
+            case ANATIVEWINDOW_PERFORM_SET_USAGE:
+                rs->mUsage = va_arg(args, uint32_t);
+                break;
+            case ANATIVEWINDOW_PERFORM_SET_USAGE64:
+                rs->mUsage = va_arg(args, uint64_t);
+                break;
+            case ANATIVEWINDOW_PERFORM_SET_BUFFERS_GEOMETRY:
+                /* width */ va_arg(args, uint32_t);
+                /* height */ va_arg(args, uint32_t);
+                rs->mFormat = va_arg(args, PixelFormat);
+                break;
+            case ANATIVEWINDOW_PERFORM_SET_BUFFERS_FORMAT:
+                rs->mFormat = va_arg(args, PixelFormat);
+                break;
+        }
+    }
     return result;
 }
 
diff --git a/libs/hwui/renderthread/ReliableSurface.h b/libs/hwui/renderthread/ReliableSurface.h
index f768df3..e3cd8c0 100644
--- a/libs/hwui/renderthread/ReliableSurface.h
+++ b/libs/hwui/renderthread/ReliableSurface.h
@@ -16,6 +16,7 @@
 
 #pragma once
 
+#include <apex/window.h>
 #include <gui/Surface.h>
 #include <utils/Macros.h>
 #include <utils/StrongPointer.h>
@@ -24,44 +25,32 @@
 
 namespace android::uirenderer::renderthread {
 
-class ReliableSurface : public ANativeObjectBase<ANativeWindow, ReliableSurface, RefBase> {
+class ReliableSurface {
     PREVENT_COPY_AND_ASSIGN(ReliableSurface);
 
 public:
     ReliableSurface(sp<Surface>&& surface);
     ~ReliableSurface();
 
+    // Performs initialization that is not safe to do in the constructor.
+    // For instance, registering ANativeWindow interceptors with ReliableSurface
+    // passed as the data pointer is not safe.
+    void init();
+
+    ANativeWindow* getNativeWindow() { return mSurface.get(); }
+
     int reserveNext();
 
-    void allocateBuffers() { mSurface->allocateBuffers(); }
-
     int query(int what, int* value) const { return mSurface->query(what, value); }
 
-    uint64_t getNextFrameNumber() const { return mSurface->getNextFrameNumber(); }
-
     int getAndClearError() {
         int ret = mBufferQueueState;
         mBufferQueueState = OK;
         return ret;
     }
 
-    status_t getFrameTimestamps(uint64_t frameNumber,
-            nsecs_t* outRequestedPresentTime, nsecs_t* outAcquireTime,
-            nsecs_t* outLatchTime, nsecs_t* outFirstRefreshStartTime,
-            nsecs_t* outLastRefreshStartTime, nsecs_t* outGlCompositionDoneTime,
-            nsecs_t* outDisplayPresentTime, nsecs_t* outDequeueReadyTime,
-            nsecs_t* outReleaseTime) {
-        return mSurface->getFrameTimestamps(frameNumber, outRequestedPresentTime, outAcquireTime,
-            outLatchTime, outFirstRefreshStartTime, outLastRefreshStartTime,
-            outGlCompositionDoneTime, outDisplayPresentTime, outDequeueReadyTime, outReleaseTime);
-    }
-
-    void enableFrameTimestamps(bool enable) {
-        return mSurface->enableFrameTimestamps(enable);
-    }
-
 private:
-    const sp<Surface> mSurface;
+    sp<Surface> mSurface;
 
     mutable std::mutex mMutex;
 
@@ -78,27 +67,20 @@
     ANativeWindowBuffer* acquireFallbackBuffer(int error);
     void clearReservedBuffer();
 
-    void perform(int operation, va_list args);
-    int cancelBuffer(ANativeWindowBuffer* buffer, int fenceFd);
-    int dequeueBuffer(ANativeWindowBuffer** buffer, int* fenceFd);
-    int queueBuffer(ANativeWindowBuffer* buffer, int fenceFd);
+    // ANativeWindow hooks. When an ANativeWindow_* method is called on the
+    // underlying ANativeWindow, these methods will intercept the original call.
+    // For example, an EGL driver would call into these hooks instead of the
+    // original methods.
+    static int hook_cancelBuffer(ANativeWindow* window, ANativeWindow_cancelBufferFn cancelBuffer,
+                                 void* data, ANativeWindowBuffer* buffer, int fenceFd);
+    static int hook_dequeueBuffer(ANativeWindow* window,
+                                  ANativeWindow_dequeueBufferFn dequeueBuffer, void* data,
+                                  ANativeWindowBuffer** buffer, int* fenceFd);
+    static int hook_queueBuffer(ANativeWindow* window, ANativeWindow_queueBufferFn queueBuffer,
+                                void* data, ANativeWindowBuffer* buffer, int fenceFd);
 
-    static Surface* getWrapped(const ANativeWindow*);
-
-    // ANativeWindow hooks
-    static int hook_cancelBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd);
-    static int hook_dequeueBuffer(ANativeWindow* window, ANativeWindowBuffer** buffer,
-                                  int* fenceFd);
-    static int hook_queueBuffer(ANativeWindow* window, ANativeWindowBuffer* buffer, int fenceFd);
-
-    static int hook_perform(ANativeWindow* window, int operation, ...);
-    static int hook_query(const ANativeWindow* window, int what, int* value);
-    static int hook_setSwapInterval(ANativeWindow* window, int interval);
-
-    static int hook_cancelBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer* buffer);
-    static int hook_dequeueBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer** buffer);
-    static int hook_lockBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer* buffer);
-    static int hook_queueBuffer_DEPRECATED(ANativeWindow* window, ANativeWindowBuffer* buffer);
+    static int hook_perform(ANativeWindow* window, ANativeWindow_performFn perform, void* data,
+                            int operation, va_list args);
 };
 
 };  // namespace android::uirenderer::renderthread
diff --git a/libs/hwui/renderthread/RenderThread.cpp b/libs/hwui/renderthread/RenderThread.cpp
index cae3e3b..206b58f 100644
--- a/libs/hwui/renderthread/RenderThread.cpp
+++ b/libs/hwui/renderthread/RenderThread.cpp
@@ -27,7 +27,6 @@
 #include "pipeline/skia/SkiaOpenGLPipeline.h"
 #include "pipeline/skia/SkiaVulkanPipeline.h"
 #include "renderstate/RenderState.h"
-#include "utils/FatVector.h"
 #include "utils/TimeUtils.h"
 #include "utils/TraceUtils.h"
 
@@ -40,6 +39,8 @@
 #include <utils/Mutex.h>
 #include <thread>
 
+#include <ui/FatVector.h>
+
 namespace android {
 namespace uirenderer {
 namespace renderthread {
diff --git a/libs/hwui/renderthread/VulkanManager.cpp b/libs/hwui/renderthread/VulkanManager.cpp
index a5355fc..ba70afc 100644
--- a/libs/hwui/renderthread/VulkanManager.cpp
+++ b/libs/hwui/renderthread/VulkanManager.cpp
@@ -23,13 +23,13 @@
 #include <GrContext.h>
 #include <GrTypes.h>
 #include <android/sync.h>
+#include <ui/FatVector.h>
 #include <vk/GrVkExtensions.h>
 #include <vk/GrVkTypes.h>
 
 #include "Properties.h"
 #include "RenderThread.h"
 #include "renderstate/RenderState.h"
-#include "utils/FatVector.h"
 #include "utils/TraceUtils.h"
 
 namespace android {
diff --git a/libs/hwui/service/GraphicsStatsService.cpp b/libs/hwui/service/GraphicsStatsService.cpp
index c418617..644d5fb 100644
--- a/libs/hwui/service/GraphicsStatsService.cpp
+++ b/libs/hwui/service/GraphicsStatsService.cpp
@@ -26,9 +26,9 @@
 #include <sys/types.h>
 #include <unistd.h>
 
-#include <algorithm>
-#include <map>
-#include <vector>
+#include <android/util/ProtoOutputStream.h>
+#include <stats_event.h>
+#include <statslog.h>
 
 #include "JankTracker.h"
 #include "protos/graphicsstats.pb.h"
@@ -61,7 +61,7 @@
         }
     }
     bool valid() { return mFd != -1; }
-    operator int() { return mFd; }  // NOLINT(google-explicit-constructor)
+    operator int() { return mFd; } // NOLINT(google-explicit-constructor)
 
 private:
     int mFd;
@@ -485,79 +485,82 @@
     delete dump;
 }
 
-class MemOutputStreamLite : public io::ZeroCopyOutputStream {
-public:
-    explicit MemOutputStreamLite() : mCopyAdapter(), mImpl(&mCopyAdapter) {}
-    virtual ~MemOutputStreamLite() {}
+using namespace google::protobuf;
 
-    virtual bool Next(void** data, int* size) override { return mImpl.Next(data, size); }
+// Field ids taken from FrameTimingHistogram message in atoms.proto
+#define TIME_MILLIS_BUCKETS_FIELD_NUMBER 1
+#define FRAME_COUNTS_FIELD_NUMBER 2
 
-    virtual void BackUp(int count) override { mImpl.BackUp(count); }
-
-    virtual int64 ByteCount() const override { return mImpl.ByteCount(); }
-
-    bool Flush() { return mImpl.Flush(); }
-
-    void copyData(const DumpMemoryFn& reader, void* param1, void* param2) {
-        int bufferOffset = 0;
-        int totalSize = mCopyAdapter.mBuffersSize - mCopyAdapter.mCurrentBufferUnusedSize;
-        int totalDataLeft = totalSize;
-        for (auto& it : mCopyAdapter.mBuffers) {
-            int bufferSize = std::min(totalDataLeft, (int)it.size());  // last buffer is not full
-            reader(it.data(), bufferOffset, bufferSize, totalSize, param1, param2);
-            bufferOffset += bufferSize;
-            totalDataLeft -= bufferSize;
-        }
+static void writeCpuHistogram(AStatsEvent* event,
+                              const uirenderer::protos::GraphicsStatsProto& stat) {
+    util::ProtoOutputStream proto;
+    for (int bucketIndex = 0; bucketIndex < stat.histogram_size(); bucketIndex++) {
+        auto& bucket = stat.histogram(bucketIndex);
+        proto.write(android::util::FIELD_TYPE_INT32 | android::util::FIELD_COUNT_REPEATED |
+                            TIME_MILLIS_BUCKETS_FIELD_NUMBER /* field id */,
+                    (int)bucket.render_millis());
     }
-
-private:
-    struct MemAdapter : public io::CopyingOutputStream {
-        // Data is stored in an array of buffers.
-        // JNI SetByteArrayRegion assembles data in one continuous Java byte[] buffer.
-        std::vector<std::vector<unsigned char>> mBuffers;
-        int mBuffersSize = 0;                     // total bytes allocated in mBuffers
-        int mCurrentBufferUnusedSize = 0;         // unused bytes in the last buffer mBuffers.back()
-        unsigned char* mCurrentBuffer = nullptr;  // pointer to next free byte in mBuffers.back()
-
-        explicit MemAdapter() {}
-        virtual ~MemAdapter() {}
-
-        virtual bool Write(const void* buffer, int size) override {
-            while (size > 0) {
-                if (0 == mCurrentBufferUnusedSize) {
-                    mCurrentBufferUnusedSize =
-                            std::max(size, mBuffersSize ? 2 * mBuffersSize : 10000);
-                    mBuffers.emplace_back();
-                    mBuffers.back().resize(mCurrentBufferUnusedSize);
-                    mCurrentBuffer = mBuffers.back().data();
-                    mBuffersSize += mCurrentBufferUnusedSize;
-                }
-                int dataMoved = std::min(mCurrentBufferUnusedSize, size);
-                memcpy(mCurrentBuffer, buffer, dataMoved);
-                mCurrentBufferUnusedSize -= dataMoved;
-                mCurrentBuffer += dataMoved;
-                buffer = reinterpret_cast<const unsigned char*>(buffer) + dataMoved;
-                size -= dataMoved;
-            }
-            return true;
-        }
-    };
-
-    MemOutputStreamLite::MemAdapter mCopyAdapter;
-    io::CopyingOutputStreamAdaptor mImpl;
-};
-
-void GraphicsStatsService::finishDumpInMemory(Dump* dump, const DumpMemoryFn& reader, void* param1,
-                                              void* param2) {
-    MemOutputStreamLite stream;
-    dump->updateProto();
-    bool success = dump->proto().SerializeToZeroCopyStream(&stream) && stream.Flush();
-    delete dump;
-    if (!success) {
-        return;
+    for (int bucketIndex = 0; bucketIndex < stat.histogram_size(); bucketIndex++) {
+        auto& bucket = stat.histogram(bucketIndex);
+        proto.write(android::util::FIELD_TYPE_INT64 | android::util::FIELD_COUNT_REPEATED |
+                            FRAME_COUNTS_FIELD_NUMBER /* field id */,
+                    (long long)bucket.frame_count());
     }
-    stream.copyData(reader, param1, param2);
+    std::vector<uint8_t> outVector;
+    proto.serializeToVector(&outVector);
+    AStatsEvent_writeByteArray(event, outVector.data(), outVector.size());
 }
 
+static void writeGpuHistogram(AStatsEvent* event,
+                              const uirenderer::protos::GraphicsStatsProto& stat) {
+    util::ProtoOutputStream proto;
+    for (int bucketIndex = 0; bucketIndex < stat.gpu_histogram_size(); bucketIndex++) {
+        auto& bucket = stat.gpu_histogram(bucketIndex);
+        proto.write(android::util::FIELD_TYPE_INT32 | android::util::FIELD_COUNT_REPEATED |
+                            TIME_MILLIS_BUCKETS_FIELD_NUMBER /* field id */,
+                    (int)bucket.render_millis());
+    }
+    for (int bucketIndex = 0; bucketIndex < stat.gpu_histogram_size(); bucketIndex++) {
+        auto& bucket = stat.gpu_histogram(bucketIndex);
+        proto.write(android::util::FIELD_TYPE_INT64 | android::util::FIELD_COUNT_REPEATED |
+                            FRAME_COUNTS_FIELD_NUMBER /* field id */,
+                    (long long)bucket.frame_count());
+    }
+    std::vector<uint8_t> outVector;
+    proto.serializeToVector(&outVector);
+    AStatsEvent_writeByteArray(event, outVector.data(), outVector.size());
+}
+
+
+void GraphicsStatsService::finishDumpInMemory(Dump* dump, AStatsEventList* data,
+                                              bool lastFullDay) {
+    dump->updateProto();
+    auto& serviceDump = dump->proto();
+    for (int stat_index = 0; stat_index < serviceDump.stats_size(); stat_index++) {
+        auto& stat = serviceDump.stats(stat_index);
+        AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+        AStatsEvent_setAtomId(event, android::util::GRAPHICS_STATS);
+        AStatsEvent_writeString(event, stat.package_name().c_str());
+        AStatsEvent_writeInt64(event, (int64_t)stat.version_code());
+        AStatsEvent_writeInt64(event, (int64_t)stat.stats_start());
+        AStatsEvent_writeInt64(event, (int64_t)stat.stats_end());
+        AStatsEvent_writeInt32(event, (int32_t)stat.pipeline());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().total_frames());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().missed_vsync_count());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().high_input_latency_count());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().slow_ui_thread_count());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().slow_bitmap_upload_count());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().slow_draw_count());
+        AStatsEvent_writeInt32(event, (int32_t)stat.summary().missed_deadline_count());
+        writeCpuHistogram(event, stat);
+        writeGpuHistogram(event, stat);
+        // TODO: fill in UI mainline module version, when the feature is available.
+        AStatsEvent_writeInt64(event, (int64_t)0);
+        AStatsEvent_writeBool(event, !lastFullDay);
+        AStatsEvent_build(event);
+    }
+}
+
+
 } /* namespace uirenderer */
 } /* namespace android */
diff --git a/libs/hwui/service/GraphicsStatsService.h b/libs/hwui/service/GraphicsStatsService.h
index 4bed9633..59e21d0 100644
--- a/libs/hwui/service/GraphicsStatsService.h
+++ b/libs/hwui/service/GraphicsStatsService.h
@@ -20,6 +20,7 @@
 
 #include "JankTracker.h"
 #include "utils/Macros.h"
+#include <stats_pull_atom_callback.h>
 
 namespace android {
 namespace uirenderer {
@@ -27,9 +28,6 @@
 class GraphicsStatsProto;
 }
 
-typedef void (*DumpMemoryFn)(void* buffer, int bufferOffset, int bufferSize, int totalSize,
-                             void* param1, void* param2);
-
 /*
  * The exported entry points used by GraphicsStatsService.java in f/b/services/core
  *
@@ -56,8 +54,8 @@
                                       int64_t startTime, int64_t endTime, const ProfileData* data);
     ANDROID_API static void addToDump(Dump* dump, const std::string& path);
     ANDROID_API static void finishDump(Dump* dump);
-    ANDROID_API static void finishDumpInMemory(Dump* dump, const DumpMemoryFn& reader, void* param1,
-                                               void* param2);
+    ANDROID_API static void finishDumpInMemory(Dump* dump, AStatsEventList* data,
+                                               bool lastFullDay);
 
     // Visible for testing
     static bool parseFromFile(const std::string& path, protos::GraphicsStatsProto* output);
diff --git a/libs/hwui/tests/common/TestContext.cpp b/libs/hwui/tests/common/TestContext.cpp
index e075d80..06f158f 100644
--- a/libs/hwui/tests/common/TestContext.cpp
+++ b/libs/hwui/tests/common/TestContext.cpp
@@ -22,43 +22,50 @@
 namespace uirenderer {
 namespace test {
 
-static const int IDENT_DISPLAYEVENT = 1;
-
-static android::DisplayInfo DUMMY_DISPLAY{
-        1080,           // w
-        1920,           // h
-        320.0,          // xdpi
-        320.0,          // ydpi
-        60.0,           // fps
-        2.0,            // density
-        ui::ROTATION_0, // orientation
-        false,          // secure?
-        0,              // appVsyncOffset
-        0,              // presentationDeadline
-};
-
-DisplayInfo getInternalDisplay() {
-#if !HWUI_NULL_GPU
-    DisplayInfo display;
-    const sp<IBinder> token = SurfaceComposerClient::getInternalDisplayToken();
-    LOG_ALWAYS_FATAL_IF(token == nullptr,
-                        "Failed to get display info because internal display is disconnected\n");
-    status_t status = SurfaceComposerClient::getDisplayInfo(token, &display);
-    LOG_ALWAYS_FATAL_IF(status, "Failed to get display info\n");
-    return display;
+const DisplayInfo& getDisplayInfo() {
+    static DisplayInfo info = [] {
+        DisplayInfo info;
+#if HWUI_NULL_GPU
+        info.density = 2.f;
 #else
-    return DUMMY_DISPLAY;
+        const sp<IBinder> token = SurfaceComposerClient::getInternalDisplayToken();
+        LOG_ALWAYS_FATAL_IF(!token, "%s: No internal display", __FUNCTION__);
+
+        const status_t status = SurfaceComposerClient::getDisplayInfo(token, &info);
+        LOG_ALWAYS_FATAL_IF(status, "%s: Failed to get display info", __FUNCTION__);
 #endif
+        return info;
+    }();
+
+    return info;
 }
 
-// Initialize to a dummy default
-android::DisplayInfo gDisplay = DUMMY_DISPLAY;
+const DisplayConfig& getActiveDisplayConfig() {
+    static DisplayConfig config = [] {
+        DisplayConfig config;
+#if HWUI_NULL_GPU
+        config.resolution = ui::Size(1080, 1920);
+        config.xDpi = config.yDpi = 320.f;
+        config.refreshRate = 60.f;
+#else
+        const sp<IBinder> token = SurfaceComposerClient::getInternalDisplayToken();
+        LOG_ALWAYS_FATAL_IF(!token, "%s: No internal display", __FUNCTION__);
+
+        const status_t status = SurfaceComposerClient::getActiveDisplayConfig(token, &config);
+        LOG_ALWAYS_FATAL_IF(status, "%s: Failed to get active display config", __FUNCTION__);
+#endif
+        return config;
+    }();
+
+    return config;
+}
 
 TestContext::TestContext() {
     mLooper = new Looper(true);
     mSurfaceComposerClient = new SurfaceComposerClient();
-    mLooper->addFd(mDisplayEventReceiver.getFd(), IDENT_DISPLAYEVENT, Looper::EVENT_INPUT, nullptr,
-                   nullptr);
+
+    constexpr int EVENT_ID = 1;
+    mLooper->addFd(mDisplayEventReceiver.getFd(), EVENT_ID, Looper::EVENT_INPUT, nullptr, nullptr);
 }
 
 TestContext::~TestContext() {}
@@ -79,8 +86,10 @@
 }
 
 void TestContext::createWindowSurface() {
-    mSurfaceControl = mSurfaceComposerClient->createSurface(String8("HwuiTest"), gDisplay.w,
-                                                            gDisplay.h, PIXEL_FORMAT_RGBX_8888);
+    const ui::Size& resolution = getActiveDisplayResolution();
+    mSurfaceControl =
+            mSurfaceComposerClient->createSurface(String8("HwuiTest"), resolution.getWidth(),
+                                                  resolution.getHeight(), PIXEL_FORMAT_RGBX_8888);
 
     SurfaceComposerClient::Transaction t;
     t.setLayer(mSurfaceControl, 0x7FFFFFF).show(mSurfaceControl).apply();
@@ -94,7 +103,8 @@
     producer->setMaxDequeuedBufferCount(3);
     producer->setAsyncMode(true);
     mConsumer = new BufferItemConsumer(consumer, GRALLOC_USAGE_HW_COMPOSER, 4);
-    mConsumer->setDefaultBufferSize(gDisplay.w, gDisplay.h);
+    const ui::Size& resolution = getActiveDisplayResolution();
+    mConsumer->setDefaultBufferSize(resolution.getWidth(), resolution.getHeight());
     mSurface = new Surface(producer);
 }
 
diff --git a/libs/hwui/tests/common/TestContext.h b/libs/hwui/tests/common/TestContext.h
index 116d4de..a012ecb 100644
--- a/libs/hwui/tests/common/TestContext.h
+++ b/libs/hwui/tests/common/TestContext.h
@@ -23,20 +23,25 @@
 #include <gui/Surface.h>
 #include <gui/SurfaceComposerClient.h>
 #include <gui/SurfaceControl.h>
+#include <ui/DisplayConfig.h>
 #include <ui/DisplayInfo.h>
 #include <utils/Looper.h>
 
 #include <atomic>
 #include <thread>
 
+#define dp(x) ((x) * android::uirenderer::test::getDisplayInfo().density)
+
 namespace android {
 namespace uirenderer {
 namespace test {
 
-extern DisplayInfo gDisplay;
-#define dp(x) ((x)*android::uirenderer::test::gDisplay.density)
+const DisplayInfo& getDisplayInfo();
+const DisplayConfig& getActiveDisplayConfig();
 
-DisplayInfo getInternalDisplay();
+inline const ui::Size& getActiveDisplayResolution() {
+    return getActiveDisplayConfig().resolution;
+}
 
 class TestContext {
 public:
diff --git a/libs/hwui/tests/macrobench/TestSceneRunner.cpp b/libs/hwui/tests/macrobench/TestSceneRunner.cpp
index 22d5abb..3b6baa7 100644
--- a/libs/hwui/tests/macrobench/TestSceneRunner.cpp
+++ b/libs/hwui/tests/macrobench/TestSceneRunner.cpp
@@ -109,16 +109,14 @@
 
 void run(const TestScene::Info& info, const TestScene::Options& opts,
          benchmark::BenchmarkReporter* reporter) {
-    // Switch to the real display
-    gDisplay = getInternalDisplay();
-
     Properties::forceDrawFrame = true;
     TestContext testContext;
     testContext.setRenderOffscreen(opts.renderOffscreen);
 
     // create the native surface
-    const int width = gDisplay.w;
-    const int height = gDisplay.h;
+    const ui::Size& resolution = getActiveDisplayResolution();
+    const int width = resolution.getWidth();
+    const int height = resolution.getHeight();
     sp<Surface> surface = testContext.surface();
 
     std::unique_ptr<TestScene> scene(info.createScene(opts));
diff --git a/libs/hwui/tests/unit/FatVectorTests.cpp b/libs/hwui/tests/unit/FatVectorTests.cpp
index 8523e6c..6585a62 100644
--- a/libs/hwui/tests/unit/FatVectorTests.cpp
+++ b/libs/hwui/tests/unit/FatVectorTests.cpp
@@ -15,7 +15,7 @@
  */
 
 #include <gtest/gtest.h>
-#include <utils/FatVector.h>
+#include <ui/FatVector.h>
 
 #include <tests/common/TestUtils.h>
 
diff --git a/libs/hwui/tests/unit/SkiaPipelineTests.cpp b/libs/hwui/tests/unit/SkiaPipelineTests.cpp
index 307d136..90bcd1c 100644
--- a/libs/hwui/tests/unit/SkiaPipelineTests.cpp
+++ b/libs/hwui/tests/unit/SkiaPipelineTests.cpp
@@ -398,7 +398,7 @@
     auto surface = context.surface();
     auto pipeline = std::make_unique<SkiaOpenGLPipeline>(renderThread);
     EXPECT_FALSE(pipeline->isSurfaceReady());
-    EXPECT_TRUE(pipeline->setSurface(surface.get(), SwapBehavior::kSwap_default, ColorMode::SRGB, 0));
+    EXPECT_TRUE(pipeline->setSurface(surface.get(), SwapBehavior::kSwap_default, 0));
     EXPECT_TRUE(pipeline->isSurfaceReady());
     renderThread.destroyRenderingContext();
     EXPECT_FALSE(pipeline->isSurfaceReady());
diff --git a/libs/hwui/utils/FatVector.h b/libs/hwui/utils/FatVector.h
deleted file mode 100644
index 8cc4d10..0000000
--- a/libs/hwui/utils/FatVector.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright 2015, The Android Open Source Project
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *  * Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *  * Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in the
- *    documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE COPYRIGHT OWNER OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#ifndef ANDROID_FAT_VECTOR_H
-#define ANDROID_FAT_VECTOR_H
-
-#include "utils/Macros.h"
-
-#include <stddef.h>
-#include <stdlib.h>
-#include <utils/Log.h>
-#include <type_traits>
-
-#include <vector>
-
-namespace android {
-namespace uirenderer {
-
-template <typename T, size_t SIZE>
-class InlineStdAllocator {
-public:
-    struct Allocation {
-        PREVENT_COPY_AND_ASSIGN(Allocation);
-
-    public:
-        Allocation(){};
-        // char array instead of T array, so memory is uninitialized, with no destructors run
-        char array[sizeof(T) * SIZE];
-        bool inUse = false;
-    };
-
-    typedef T value_type;  // needed to implement std::allocator
-    typedef T* pointer;    // needed to implement std::allocator
-
-    explicit InlineStdAllocator(Allocation& allocation) : mAllocation(allocation) {}
-    InlineStdAllocator(const InlineStdAllocator& other) : mAllocation(other.mAllocation) {}
-    ~InlineStdAllocator() {}
-
-    T* allocate(size_t num, const void* = 0) {
-        if (!mAllocation.inUse && num <= SIZE) {
-            mAllocation.inUse = true;
-            return (T*)mAllocation.array;
-        } else {
-            return (T*)malloc(num * sizeof(T));
-        }
-    }
-
-    void deallocate(pointer p, size_t num) {
-        if (p == (T*)mAllocation.array) {
-            mAllocation.inUse = false;
-        } else {
-            // 'free' instead of delete here - destruction handled separately
-            free(p);
-        }
-    }
-    Allocation& mAllocation;
-};
-
-/**
- * std::vector with SIZE elements preallocated into an internal buffer.
- *
- * Useful for avoiding the cost of malloc in cases where only SIZE or
- * fewer elements are needed in the common case.
- */
-template <typename T, size_t SIZE>
-class FatVector : public std::vector<T, InlineStdAllocator<T, SIZE>> {
-public:
-    FatVector()
-            : std::vector<T, InlineStdAllocator<T, SIZE>>(
-                      InlineStdAllocator<T, SIZE>(mAllocation)) {
-        this->reserve(SIZE);
-    }
-
-    explicit FatVector(size_t capacity) : FatVector() { this->resize(capacity); }
-
-private:
-    typename InlineStdAllocator<T, SIZE>::Allocation mAllocation;
-};
-
-}  // namespace uirenderer
-}  // namespace android
-
-#endif  // ANDROID_FAT_VECTOR_H
diff --git a/libs/incident/Android.bp b/libs/incident/Android.bp
index 150f6dc..512b8c4 100644
--- a/libs/incident/Android.bp
+++ b/libs/incident/Android.bp
@@ -12,8 +12,9 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-cc_library_shared {
-    name: "libincident",
+
+cc_defaults {
+    name: "libincidentpriv_defaults",
 
     cflags: [
         "-Wall",
@@ -50,6 +51,70 @@
         ":libincident_aidl",
         "src/IncidentReportArgs.cpp",
     ],
+}
+
+cc_library_shared {
+    name: "libincidentpriv",
+    defaults: ["libincidentpriv_defaults"],
+    export_include_dirs: ["include_priv"],
+}
+
+cc_library_shared {
+    name: "libincident",
+
+    cflags: [
+        "-Wall",
+        "-Werror",
+        "-Wno-missing-field-initializers",
+        "-Wno-unused-variable",
+        "-Wunused-parameter",
+    ],
+
+    shared_libs: [
+        "libbinder",
+        "liblog",
+        "libutils",
+        "libincidentpriv",
+    ],
+
+    srcs: [
+        "src/incident_report.cpp",
+    ],
 
     export_include_dirs: ["include"],
+
+    stubs: {
+        symbol_file: "libincident.map.txt",
+        versions: [
+            "30",
+        ],
+    },
 }
+
+cc_test {
+    name: "libincident_test",
+    defaults: ["libincidentpriv_defaults"],
+    test_suites: ["device-tests"],
+
+    include_dirs: [
+        "frameworks/base/libs/incident/include",
+        "frameworks/base/libs/incident/include_priv",
+    ],
+
+    srcs: [
+        "tests/IncidentReportArgs_test.cpp",
+        "tests/IncidentReportRequest_test.cpp",
+        "tests/c_api_compile_test.c",
+    ],
+
+    shared_libs: [
+        "libincident",
+    ],
+
+    static_libs: [
+        "libgmock",
+    ],
+}
+
+
+
diff --git a/libs/incident/include/incident/incident_report.h b/libs/incident/include/incident/incident_report.h
new file mode 100644
index 0000000..49fe5b9
--- /dev/null
+++ b/libs/incident/include/incident/incident_report.h
@@ -0,0 +1,192 @@
+/**
+ * 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.
+ */
+
+/**
+ * @file incident_report.h
+ */
+
+#ifndef ANDROID_INCIDENT_INCIDENT_REPORT_H
+#define ANDROID_INCIDENT_INCIDENT_REPORT_H
+
+#include <stdbool.h>
+
+#if __cplusplus
+#include <set>
+#include <string>
+#include <vector>
+
+extern "C" {
+#endif // __cplusplus
+
+struct AIncidentReportArgs;
+/**
+ * Opaque class to represent the arguments to an incident report request.
+ * Incident reports contain debugging data about the device at runtime.
+ * For more information see the android.os.IncidentManager java class.
+ */
+typedef struct AIncidentReportArgs AIncidentReportArgs;
+
+// Privacy policy enum value, sync with frameworks/base/core/proto/android/privacy.proto,
+// IncidentReportArgs.h and IncidentReportArgs.java.
+enum {
+    /**
+     * Flag marking fields and incident reports than can be taken
+     * off the device only via adb.
+     */
+    INCIDENT_REPORT_PRIVACY_POLICY_LOCAL = 0,
+
+    /**
+     * Flag marking fields and incident reports than can be taken
+     * off the device with contemporary consent.
+     */
+    INCIDENT_REPORT_PRIVACY_POLICY_EXPLICIT = 100,
+
+    /**
+     * Flag marking fields and incident reports than can be taken
+     * off the device with prior consent.
+     */
+    INCIDENT_REPORT_PRIVACY_POLICY_AUTOMATIC = 200,
+
+    /**
+     * Flag to indicate that a given field has not been marked
+     * with a privacy policy.
+     */
+    INCIDENT_REPORT_PRIVACY_POLICY_UNSET = 255
+};
+
+/**
+ * Allocate and initialize an AIncidentReportArgs object.
+ */
+AIncidentReportArgs* AIncidentReportArgs_init();
+
+/**
+ * Duplicate an existing AIncidentReportArgs object.
+ */
+AIncidentReportArgs* AIncidentReportArgs_clone(AIncidentReportArgs* that);
+
+/**
+ * Clean up and delete an AIncidentReportArgs object.
+ */
+void AIncidentReportArgs_delete(AIncidentReportArgs* args);
+
+/**
+ * Set this incident report to include all sections.
+ */
+void AIncidentReportArgs_setAll(AIncidentReportArgs* args, bool all);
+
+/**
+ * Set this incident report privacy policy spec.
+ */
+void AIncidentReportArgs_setPrivacyPolicy(AIncidentReportArgs* args, int privacyPolicy);
+
+/**
+ * Add this section to the incident report. The section IDs are the field numbers
+ * from the android.os.IncidentProto protobuf message.
+ */
+void AIncidentReportArgs_addSection(AIncidentReportArgs* args, int section);
+
+/**
+ * Set the apk package name that will be sent a broadcast when the incident
+ * report completes.  Must be called in conjunction with AIncidentReportArgs_setReceiverClass.
+ */
+void AIncidentReportArgs_setReceiverPackage(AIncidentReportArgs* args, char const* pkg);
+
+/**
+ * Set the fully qualified class name of the java BroadcastReceiver class that will be
+ * sent a broadcast when the report completes.  Must be called in conjunction with
+ * AIncidentReportArgs_setReceiverPackage.
+ */
+void AIncidentReportArgs_setReceiverClass(AIncidentReportArgs* args, char const* cls);
+
+/**
+ * Add protobuf data as a header to the incident report. The buffer should be a serialized
+ * android.os.IncidentHeaderProto object.
+ */
+void AIncidentReportArgs_addHeader(AIncidentReportArgs* args, uint8_t const* buf, size_t size);
+
+/**
+ * Initiate taking the report described in the args object.  Returns 0 on success,
+ * and non-zero otherwise.
+ */
+int AIncidentReportArgs_takeReport(AIncidentReportArgs* args);
+
+#if __cplusplus
+} // extern "C"
+
+namespace android {
+namespace os {
+
+class IncidentReportRequest {
+public:
+    inline IncidentReportRequest() {
+        mImpl = AIncidentReportArgs_init();
+    }
+
+    inline IncidentReportRequest(const IncidentReportRequest& that) {
+        mImpl = AIncidentReportArgs_clone(that.mImpl);
+    }
+
+    inline ~IncidentReportRequest() {
+        AIncidentReportArgs_delete(mImpl);
+    }
+
+    inline AIncidentReportArgs* getImpl() {
+        return mImpl;
+    }
+
+    inline void setAll(bool all) {
+        AIncidentReportArgs_setAll(mImpl, all);
+    }
+
+    inline void setPrivacyPolicy(int privacyPolicy) {
+        AIncidentReportArgs_setPrivacyPolicy(mImpl, privacyPolicy);
+    }
+
+    inline void addSection(int section) {
+        AIncidentReportArgs_addSection(mImpl, section);
+    }
+
+    inline void setReceiverPackage(const std::string& pkg) {
+        AIncidentReportArgs_setReceiverPackage(mImpl, pkg.c_str());
+    };
+
+    inline void setReceiverClass(const std::string& cls) {
+        AIncidentReportArgs_setReceiverClass(mImpl, cls.c_str());
+    };
+
+    inline void addHeader(const std::vector<uint8_t>& headerProto) {
+        AIncidentReportArgs_addHeader(mImpl, headerProto.data(), headerProto.size());
+    };
+
+    inline void addHeader(const uint8_t* buf, size_t size) {
+        AIncidentReportArgs_addHeader(mImpl, buf, size);
+    };
+
+    // returns a status_t
+    inline int takeReport() {
+        return AIncidentReportArgs_takeReport(mImpl);
+    }
+
+private:
+    AIncidentReportArgs* mImpl;
+};
+
+} // namespace os
+} // namespace android
+
+#endif // __cplusplus
+
+#endif // ANDROID_INCIDENT_INCIDENT_REPORT_H
diff --git a/libs/incident/include/android/os/IncidentReportArgs.h b/libs/incident/include_priv/android/os/IncidentReportArgs.h
similarity index 89%
rename from libs/incident/include/android/os/IncidentReportArgs.h
rename to libs/incident/include_priv/android/os/IncidentReportArgs.h
index 94b4ad6..0e61590 100644
--- a/libs/incident/include/android/os/IncidentReportArgs.h
+++ b/libs/incident/include_priv/android/os/IncidentReportArgs.h
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
-#ifndef ANDROID_OS_DUMPSTATE_ARGS_H_
-#define ANDROID_OS_DUMPSTATE_ARGS_H_
+#ifndef ANDROID_OS_INCIDENT_REPORT_ARGS_H
+#define ANDROID_OS_INCIDENT_REPORT_ARGS_H
 
+#include <binder/IServiceManager.h>
 #include <binder/Parcel.h>
 #include <binder/Parcelable.h>
 #include <utils/String16.h>
@@ -29,7 +30,8 @@
 
 using namespace std;
 
-// DESTINATION enum value, sync with frameworks/base/core/proto/android/privacy.proto
+// DESTINATION enum value, sync with frameworks/base/core/proto/android/privacy.proto,
+// incident/incident_report.h and IncidentReportArgs.java
 const uint8_t PRIVACY_POLICY_LOCAL = 0;
 const uint8_t PRIVACY_POLICY_EXPLICIT = 100;
 const uint8_t PRIVACY_POLICY_AUTOMATIC = 200;
@@ -74,4 +76,4 @@
 }
 }
 
-#endif // ANDROID_OS_DUMPSTATE_ARGS_H_
+#endif // ANDROID_OS_INCIDENT_REPORT_ARGS_H
diff --git a/libs/incident/libincident.map.txt b/libs/incident/libincident.map.txt
new file mode 100644
index 0000000..f157763
--- /dev/null
+++ b/libs/incident/libincident.map.txt
@@ -0,0 +1,15 @@
+LIBINCIDENT {
+    global:
+        AIncidentReportArgs_init; # apex # introduced=30
+        AIncidentReportArgs_clone; # apex # introduced=30
+        AIncidentReportArgs_delete; # apex # introduced=30
+        AIncidentReportArgs_setAll; # apex # introduced=30
+        AIncidentReportArgs_setPrivacyPolicy; # apex # introduced=30
+        AIncidentReportArgs_addSection; # apex # introduced=30
+        AIncidentReportArgs_setReceiverPackage; # apex # introduced=30
+        AIncidentReportArgs_setReceiverClass; # apex # introduced=30
+        AIncidentReportArgs_addHeader; # apex # introduced=30
+        AIncidentReportArgs_takeReport; # apex # introduced=30
+    local:
+        *;
+};
diff --git a/libs/incident/src/incident_report.cpp b/libs/incident/src/incident_report.cpp
new file mode 100644
index 0000000..7897ddf
--- /dev/null
+++ b/libs/incident/src/incident_report.cpp
@@ -0,0 +1,83 @@
+/**
+ * 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.
+ */
+
+#define LOG_TAG "libincident"
+
+#include <incident/incident_report.h>
+
+#include <android/os/IIncidentManager.h>
+#include <android/os/IncidentReportArgs.h>
+#include <binder/IServiceManager.h>
+#include <binder/Status.h>
+#include <log/log.h>
+
+using android::sp;
+using android::binder::Status;
+using android::os::IncidentReportArgs;
+using android::os::IIncidentManager;
+using std::string;
+using std::vector;
+
+AIncidentReportArgs* AIncidentReportArgs_init() {
+    return reinterpret_cast<AIncidentReportArgs*>(new IncidentReportArgs());
+}
+
+AIncidentReportArgs* AIncidentReportArgs_clone(AIncidentReportArgs* that) {
+    return reinterpret_cast<AIncidentReportArgs*>(
+            new IncidentReportArgs(*reinterpret_cast<IncidentReportArgs*>(that)));
+}
+
+void AIncidentReportArgs_delete(AIncidentReportArgs* args) {
+    delete reinterpret_cast<IncidentReportArgs*>(args);
+}
+
+void AIncidentReportArgs_setAll(AIncidentReportArgs* args, bool all) {
+    reinterpret_cast<IncidentReportArgs*>(args)->setAll(all);
+}
+
+void AIncidentReportArgs_setPrivacyPolicy(AIncidentReportArgs* args, int privacyPolicy) {
+    reinterpret_cast<IncidentReportArgs*>(args)->setPrivacyPolicy(privacyPolicy);
+}
+
+void AIncidentReportArgs_addSection(AIncidentReportArgs* args, int section) {
+    reinterpret_cast<IncidentReportArgs*>(args)->addSection(section);
+}
+
+void AIncidentReportArgs_setReceiverPackage(AIncidentReportArgs* args, char const* pkg) {
+    reinterpret_cast<IncidentReportArgs*>(args)->setReceiverPkg(string(pkg));
+}
+
+void AIncidentReportArgs_setReceiverClass(AIncidentReportArgs* args, char const* cls) {
+    reinterpret_cast<IncidentReportArgs*>(args)->setReceiverCls(string(cls));
+}
+
+void AIncidentReportArgs_addHeader(AIncidentReportArgs* args, uint8_t const* buf, size_t size) {
+    vector<uint8_t> vec(buf, buf+size);
+    reinterpret_cast<IncidentReportArgs*>(args)->addHeader(vec);
+}
+
+int AIncidentReportArgs_takeReport(AIncidentReportArgs* argp) {
+    IncidentReportArgs* args = reinterpret_cast<IncidentReportArgs*>(argp);
+
+    sp<IIncidentManager> service = android::interface_cast<IIncidentManager>(
+            android::defaultServiceManager()->getService(android::String16("incident")));
+    if (service == nullptr) {
+        ALOGW("Failed to fetch incident service.");
+        return false;
+    }
+    Status s = service->reportIncident(*args);
+    return s.transactionError();
+}
diff --git a/cmds/statsd/tests/external/IncidentReportArgs_test.cpp b/libs/incident/tests/IncidentReportArgs_test.cpp
similarity index 93%
rename from cmds/statsd/tests/external/IncidentReportArgs_test.cpp
rename to libs/incident/tests/IncidentReportArgs_test.cpp
index 38bc194..224b343 100644
--- a/cmds/statsd/tests/external/IncidentReportArgs_test.cpp
+++ b/libs/incident/tests/IncidentReportArgs_test.cpp
@@ -20,6 +20,8 @@
 namespace os {
 namespace statsd {
 
+// Checks that all of the inline methods on IncidentReportRequest and the real C functions
+// result in a working IncidentReportArgs.
 TEST(IncidentReportArgsTest, testSerialization) {
     IncidentReportArgs args;
     args.setAll(0);
diff --git a/libs/incident/tests/IncidentReportRequest_test.cpp b/libs/incident/tests/IncidentReportRequest_test.cpp
new file mode 100644
index 0000000..6d218b6
--- /dev/null
+++ b/libs/incident/tests/IncidentReportRequest_test.cpp
@@ -0,0 +1,65 @@
+// Copyright (C) 2018 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 <android/os/IncidentReportArgs.h>
+#include <incident/incident_report.h>
+
+#include <gtest/gtest.h>
+
+namespace android {
+namespace os {
+namespace statsd {
+
+TEST(IncidentReportRequestTest, testWrite) {
+    IncidentReportRequest request;
+    request.setAll(0);
+    request.addSection(1000);
+    request.addSection(1001);
+
+    vector<uint8_t> header1;
+    header1.push_back(0x1);
+    header1.push_back(0x2);
+    vector<uint8_t> header2;
+    header1.push_back(0x22);
+    header1.push_back(0x33);
+
+    request.addHeader(header1);
+    request.addHeader(header2);
+
+    request.setPrivacyPolicy(1);
+
+    request.setReceiverPackage("com.android.os");
+    request.setReceiverClass("com.android.os.Receiver");
+
+    IncidentReportArgs* args = reinterpret_cast<IncidentReportArgs*>(request.getImpl());
+
+    EXPECT_EQ(0, args->all());
+    set<int> sections;
+    sections.insert(1000);
+    sections.insert(1001);
+    EXPECT_EQ(sections, args->sections());
+    EXPECT_EQ(1, args->getPrivacyPolicy());
+
+    EXPECT_EQ(string("com.android.os"), args->receiverPkg());
+    EXPECT_EQ(string("com.android.os.Receiver"), args->receiverCls());
+
+    vector<vector<uint8_t>> headers;
+    headers.push_back(header1);
+    headers.push_back(header2);
+    EXPECT_EQ(headers, args->headers());
+}
+
+}  // namespace statsd
+}  // namespace os
+}  // namespace android
diff --git a/libs/incident/tests/c_api_compile_test.c b/libs/incident/tests/c_api_compile_test.c
new file mode 100644
index 0000000..e1620df
--- /dev/null
+++ b/libs/incident/tests/c_api_compile_test.c
@@ -0,0 +1,11 @@
+#include <stdio.h>
+#include <incident/incident_report.h>
+
+/*
+ * This file ensures that incident/incident_report.h actually compiles with C,
+ * since there is no other place in the tree that actually uses it from C.
+ */
+int not_called() {
+    return 0;
+}
+
diff --git a/libs/input/PointerController.cpp b/libs/input/PointerController.cpp
index e4348f2..3b494e9 100644
--- a/libs/input/PointerController.cpp
+++ b/libs/input/PointerController.cpp
@@ -251,19 +251,24 @@
 void PointerController::setPresentation(Presentation presentation) {
     AutoMutex _l(mLock);
 
-    if (presentation == PRESENTATION_POINTER && mLocked.additionalMouseResources.empty()) {
-        mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
-                &mLocked.animationResources, mLocked.viewport.displayId);
+    if (mLocked.presentation == presentation) {
+        return;
     }
 
-    if (mLocked.presentation != presentation) {
-        mLocked.presentation = presentation;
-        mLocked.presentationChanged = true;
+    mLocked.presentation = presentation;
+    mLocked.presentationChanged = true;
 
-        if (presentation != PRESENTATION_SPOT) {
-            fadeOutAndReleaseAllSpotsLocked();
+    if (!mLocked.viewport.isValid()) {
+        return;
+    }
+
+    if (presentation == PRESENTATION_POINTER) {
+        if (mLocked.additionalMouseResources.empty()) {
+            mPolicy->loadAdditionalMouseResources(&mLocked.additionalMouseResources,
+                                                  &mLocked.animationResources,
+                                                  mLocked.viewport.displayId);
         }
-
+        fadeOutAndReleaseAllSpotsLocked();
         updatePointerLocked();
     }
 }
@@ -285,6 +290,9 @@
 #endif
 
     AutoMutex _l(mLock);
+    if (!mLocked.viewport.isValid()) {
+        return;
+    }
 
     std::vector<Spot*> newSpots;
     std::map<int32_t, std::vector<Spot*>>::const_iterator iter =
@@ -331,6 +339,9 @@
 #endif
 
     AutoMutex _l(mLock);
+    if (!mLocked.viewport.isValid()) {
+        return;
+    }
 
     fadeOutAndReleaseAllSpotsLocked();
 }
@@ -752,6 +763,10 @@
 }
 
 void PointerController::loadResourcesLocked() REQUIRES(mLock) {
+    if (!mLocked.viewport.isValid()) {
+        return;
+    }
+
     mPolicy->loadPointerResources(&mResources, mLocked.viewport.displayId);
     mPolicy->loadPointerIcon(&mLocked.pointerIcon, mLocked.viewport.displayId);
 
diff --git a/libs/input/tests/PointerController_test.cpp b/libs/input/tests/PointerController_test.cpp
index b36406d..a157426 100644
--- a/libs/input/tests/PointerController_test.cpp
+++ b/libs/input/tests/PointerController_test.cpp
@@ -39,8 +39,8 @@
 
 using ::testing::AllOf;
 using ::testing::Field;
-using ::testing::NiceMock;
 using ::testing::Mock;
+using ::testing::NiceMock;
 using ::testing::Return;
 using ::testing::Test;
 
@@ -57,12 +57,20 @@
     virtual int32_t getDefaultPointerIconId() override;
     virtual int32_t getCustomPointerIconId() override;
 
+    bool allResourcesAreLoaded();
+    bool noResourcesAreLoaded();
+
 private:
     void loadPointerIconForType(SpriteIcon* icon, int32_t cursorType);
+
+    bool pointerIconLoaded{false};
+    bool pointerResourcesLoaded{false};
+    bool additionalMouseResourcesLoaded{false};
 };
 
 void MockPointerControllerPolicyInterface::loadPointerIcon(SpriteIcon* icon, int32_t) {
     loadPointerIconForType(icon, CURSOR_TYPE_DEFAULT);
+    pointerIconLoaded = true;
 }
 
 void MockPointerControllerPolicyInterface::loadPointerResources(PointerResources* outResources,
@@ -70,6 +78,7 @@
     loadPointerIconForType(&outResources->spotHover, CURSOR_TYPE_HOVER);
     loadPointerIconForType(&outResources->spotTouch, CURSOR_TYPE_TOUCH);
     loadPointerIconForType(&outResources->spotAnchor, CURSOR_TYPE_ANCHOR);
+    pointerResourcesLoaded = true;
 }
 
 void MockPointerControllerPolicyInterface::loadAdditionalMouseResources(
@@ -91,6 +100,8 @@
     anim.durationPerFrame = 10;
     (*outResources)[cursorType] = icon;
     (*outAnimationResources)[cursorType] = anim;
+
+    additionalMouseResourcesLoaded = true;
 }
 
 int32_t MockPointerControllerPolicyInterface::getDefaultPointerIconId() {
@@ -101,18 +112,27 @@
     return CURSOR_TYPE_CUSTOM;
 }
 
+bool MockPointerControllerPolicyInterface::allResourcesAreLoaded() {
+    return pointerIconLoaded && pointerResourcesLoaded && additionalMouseResourcesLoaded;
+}
+
+bool MockPointerControllerPolicyInterface::noResourcesAreLoaded() {
+    return !(pointerIconLoaded || pointerResourcesLoaded || additionalMouseResourcesLoaded);
+}
+
 void MockPointerControllerPolicyInterface::loadPointerIconForType(SpriteIcon* icon, int32_t type) {
     icon->style = type;
     std::pair<float, float> hotSpot = getHotSpotCoordinatesForType(type);
     icon->hotSpotX = hotSpot.first;
     icon->hotSpotY = hotSpot.second;
 }
-
 class PointerControllerTest : public Test {
 protected:
     PointerControllerTest();
     ~PointerControllerTest();
 
+    void ensureDisplayViewportIsSet();
+
     sp<MockSprite> mPointerSprite;
     sp<MockPointerControllerPolicyInterface> mPolicy;
     sp<MockSpriteController> mSpriteController;
@@ -141,7 +161,14 @@
             .WillOnce(Return(mPointerSprite));
 
     mPointerController = new PointerController(mPolicy, mLooper, mSpriteController);
+}
 
+PointerControllerTest::~PointerControllerTest() {
+    mRunning.store(false, std::memory_order_relaxed);
+    mThread.join();
+}
+
+void PointerControllerTest::ensureDisplayViewportIsSet() {
     DisplayViewport viewport;
     viewport.displayId = ADISPLAY_ID_DEFAULT;
     viewport.logicalRight = 1600;
@@ -151,11 +178,9 @@
     viewport.deviceWidth = 400;
     viewport.deviceHeight = 300;
     mPointerController->setDisplayViewport(viewport);
-}
 
-PointerControllerTest::~PointerControllerTest() {
-    mRunning.store(false, std::memory_order_relaxed);
-    mThread.join();
+    // The first call to setDisplayViewport should trigger the loading of the necessary resources.
+    EXPECT_TRUE(mPolicy->allResourcesAreLoaded());
 }
 
 void PointerControllerTest::loopThread() {
@@ -167,6 +192,7 @@
 }
 
 TEST_F(PointerControllerTest, useDefaultCursorTypeByDefault) {
+    ensureDisplayViewportIsSet();
     mPointerController->unfade(PointerController::TRANSITION_IMMEDIATE);
 
     std::pair<float, float> hotspot = getHotSpotCoordinatesForType(CURSOR_TYPE_DEFAULT);
@@ -181,6 +207,7 @@
 }
 
 TEST_F(PointerControllerTest, updatePointerIcon) {
+    ensureDisplayViewportIsSet();
     mPointerController->unfade(PointerController::TRANSITION_IMMEDIATE);
 
     int32_t type = CURSOR_TYPE_ADDITIONAL;
@@ -196,6 +223,7 @@
 }
 
 TEST_F(PointerControllerTest, setCustomPointerIcon) {
+    ensureDisplayViewportIsSet();
     mPointerController->unfade(PointerController::TRANSITION_IMMEDIATE);
 
     int32_t style = CURSOR_TYPE_CUSTOM;
@@ -217,4 +245,18 @@
     mPointerController->setCustomPointerIcon(icon);
 }
 
+TEST_F(PointerControllerTest, doesNotGetResourcesBeforeSettingViewport) {
+    mPointerController->setPresentation(PointerController::PRESENTATION_POINTER);
+    mPointerController->setSpots(nullptr, nullptr, BitSet32(), -1);
+    mPointerController->clearSpots();
+    mPointerController->setPosition(1.0f, 1.0f);
+    mPointerController->move(1.0f, 1.0f);
+    mPointerController->unfade(PointerController::TRANSITION_IMMEDIATE);
+    mPointerController->fade(PointerController::TRANSITION_IMMEDIATE);
+
+    EXPECT_TRUE(mPolicy->noResourcesAreLoaded());
+
+    ensureDisplayViewportIsSet();
+}
+
 }  // namespace android
diff --git a/libs/services/Android.bp b/libs/services/Android.bp
index 9b047ca..1e62107 100644
--- a/libs/services/Android.bp
+++ b/libs/services/Android.bp
@@ -20,7 +20,6 @@
         ":IDropBoxManagerService.aidl",
         "src/content/ComponentName.cpp",
         "src/os/DropBoxManager.cpp",
-        "src/os/StatsDimensionsValue.cpp",
     ],
 
     shared_libs: [
diff --git a/libs/services/include/android/os/StatsDimensionsValue.h b/libs/services/include/android/os/StatsDimensionsValue.h
deleted file mode 100644
index cc0b056..0000000
--- a/libs/services/include/android/os/StatsDimensionsValue.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-#ifndef STATS_DIMENSIONS_VALUE_H
-#define STATS_DIMENSIONS_VALUE_H
-
-#include <binder/Parcel.h>
-#include <binder/Parcelable.h>
-#include <binder/Status.h>
-#include <utils/String16.h>
-#include <vector>
-
-namespace android {
-namespace os {
-
-// Represents a parcelable object. Used to send data from statsd to StatsCompanionService.java.
-class StatsDimensionsValue : public android::Parcelable {
-public:
-    StatsDimensionsValue();
-
-    StatsDimensionsValue(int32_t field, String16 value);
-    StatsDimensionsValue(int32_t field, int32_t value);
-    StatsDimensionsValue(int32_t field, int64_t value);
-    StatsDimensionsValue(int32_t field, bool value);
-    StatsDimensionsValue(int32_t field, float value);
-    StatsDimensionsValue(int32_t field, std::vector<StatsDimensionsValue> value);
-
-    virtual ~StatsDimensionsValue();
-
-    virtual android::status_t writeToParcel(android::Parcel* out) const override;
-    virtual android::status_t readFromParcel(const android::Parcel* in) override;
-
-private:
-    // Keep constants in sync with android/os/StatsDimensionsValue.java
-    // and stats_log.proto's DimensionValue.
-    static const int kStrValueType = 2;
-    static const int kIntValueType = 3;
-    static const int kLongValueType = 4;
-    static const int kBoolValueType = 5;
-    static const int kFloatValueType = 6;
-    static const int kTupleValueType = 7;
-
-    int32_t mField;
-    int32_t mValueType;
-
-    // This isn't very clever, but it isn't used for long-term storage, so it'll do.
-    String16 mStrValue;
-    int32_t mIntValue;
-    int64_t mLongValue;
-    bool mBoolValue;
-    float mFloatValue;
-    std::vector<StatsDimensionsValue> mTupleValue;
-};
-
-}  // namespace os
-}  // namespace android
-
-#endif // STATS_DIMENSIONS_VALUE_H
diff --git a/libs/services/src/os/StatsDimensionsValue.cpp b/libs/services/src/os/StatsDimensionsValue.cpp
deleted file mode 100644
index 0052e0b..0000000
--- a/libs/services/src/os/StatsDimensionsValue.cpp
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Copyright (C) 2018 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.
- */
-
-#define LOG_TAG "StatsDimensionsValue"
-
-#include "android/os/StatsDimensionsValue.h"
-
-#include <cutils/log.h>
-
-using android::Parcel;
-using android::Parcelable;
-using android::status_t;
-using std::vector;
-
-namespace android {
-namespace os {
-
-StatsDimensionsValue::StatsDimensionsValue() {};
-
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, String16 value) :
-    mField(field),
-    mValueType(kStrValueType),
-    mStrValue(value) {
-}
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, int32_t value) :
-    mField(field),
-    mValueType(kIntValueType),
-    mIntValue(value) {
-}
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, int64_t value) :
-    mField(field),
-    mValueType(kLongValueType),
-    mLongValue(value) {
-}
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, bool value) :
-    mField(field),
-    mValueType(kBoolValueType),
-    mBoolValue(value) {
-}
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, float value) :
-    mField(field),
-    mValueType(kFloatValueType),
-    mFloatValue(value) {
-}
-StatsDimensionsValue::StatsDimensionsValue(int32_t field, vector<StatsDimensionsValue> value) :
-    mField(field),
-    mValueType(kTupleValueType),
-    mTupleValue(value) {
-}
-
-StatsDimensionsValue::~StatsDimensionsValue() {}
-
-status_t
-StatsDimensionsValue::writeToParcel(Parcel* out) const {
-    status_t err ;
-
-    err = out->writeInt32(mField);
-    if (err != NO_ERROR) {
-        return err;
-    }
-    err = out->writeInt32(mValueType);
-    if (err != NO_ERROR) {
-        return err;
-    }
-    switch (mValueType) {
-        case kStrValueType:
-            err = out->writeString16(mStrValue);
-            break;
-        case kIntValueType:
-            err = out->writeInt32(mIntValue);
-            break;
-        case kLongValueType:
-            err = out->writeInt64(mLongValue);
-            break;
-        case kBoolValueType:
-            err = out->writeBool(mBoolValue);
-            break;
-        case kFloatValueType:
-            err = out->writeFloat(mFloatValue);
-            break;
-        case kTupleValueType:
-            {
-                int sz = mTupleValue.size();
-                err = out->writeInt32(sz);
-                if (err != NO_ERROR) {
-                    return err;
-                }
-                for (int i = 0; i < sz; ++i) {
-                    err = mTupleValue[i].writeToParcel(out);
-                    if (err != NO_ERROR) {
-                        return err;
-                    }
-                }
-            }
-            break;
-        default:
-            err = UNKNOWN_ERROR;
-            break;
-    }
-    return err;
-}
-
-status_t
-StatsDimensionsValue::readFromParcel(const Parcel* in)
-{
-    // Implement me if desired. We don't currently use this.
-    ALOGE("Cannot do c++ StatsDimensionsValue.readFromParcel(); it is not implemented.");
-    (void)in; // To prevent compile error of unused parameter 'in'
-    return UNKNOWN_ERROR;
-}
-
-}  // namespace os
-}  // namespace android
diff --git a/location/java/android/location/AbstractListenerManager.java b/location/java/android/location/AbstractListenerManager.java
index 944ebf9..f075a53 100644
--- a/location/java/android/location/AbstractListenerManager.java
+++ b/location/java/android/location/AbstractListenerManager.java
@@ -27,6 +27,7 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.Preconditions;
 
+import java.util.Objects;
 import java.util.concurrent.Executor;
 import java.util.function.Consumer;
 
@@ -35,26 +36,34 @@
  *
  * @hide
  */
-abstract class AbstractListenerManager<T> {
+abstract class AbstractListenerManager<TRequest, TListener> {
 
-    private static class Registration<T> {
+    private static class Registration<TRequest, TListener> {
         private final Executor mExecutor;
-        @Nullable private volatile T mListener;
+        @Nullable private TRequest mRequest;
+        @Nullable private volatile TListener mListener;
 
-        private Registration(Executor executor, T listener) {
+        private Registration(@Nullable TRequest request, Executor executor, TListener listener) {
             Preconditions.checkArgument(listener != null, "invalid null listener/callback");
             Preconditions.checkArgument(executor != null, "invalid null executor");
             mExecutor = executor;
             mListener = listener;
+            mRequest = request;
+        }
+
+        @Nullable
+        public TRequest getRequest() {
+            return mRequest;
         }
 
         private void unregister() {
+            mRequest = null;
             mListener = null;
         }
 
-        private void execute(Consumer<T> operation) {
+        private void execute(Consumer<TListener> operation) {
             mExecutor.execute(() -> {
-                T listener = mListener;
+                TListener listener = mListener;
                 if (listener == null) {
                     return;
                 }
@@ -71,71 +80,135 @@
     }
 
     @GuardedBy("mListeners")
-    private final ArrayMap<Object, Registration<T>> mListeners = new ArrayMap<>();
+    private final ArrayMap<Object, Registration<TRequest, TListener>> mListeners =
+            new ArrayMap<>();
 
-    public boolean addListener(@NonNull T listener, @NonNull Handler handler)
+    @GuardedBy("mListeners")
+    @Nullable
+    private TRequest mMergedRequest;
+
+    public boolean addListener(@NonNull TListener listener, @NonNull Handler handler)
             throws RemoteException {
-        return addInternal(listener, handler);
+        return addInternal(/* request= */ null, listener, handler);
     }
 
-    public boolean addListener(@NonNull T listener, @NonNull Executor executor)
+    public boolean addListener(@NonNull TListener listener, @NonNull Executor executor)
             throws RemoteException {
-        return addInternal(listener, executor);
+        return addInternal(/* request= */ null, listener, executor);
     }
 
-    protected final boolean addInternal(@NonNull Object listener, @NonNull Handler handler)
-            throws RemoteException {
-        return addInternal(listener, new HandlerExecutor(handler));
+    public boolean addListener(@Nullable TRequest request, @NonNull TListener listener,
+            @NonNull Handler handler) throws RemoteException {
+        return addInternal(request, listener, handler);
     }
 
-    protected final boolean addInternal(@NonNull Object listener, @NonNull Executor executor)
+    public boolean addListener(@Nullable TRequest request, @NonNull TListener listener,
+            @NonNull Executor executor) throws RemoteException {
+        return addInternal(request, listener, executor);
+    }
+
+    protected final boolean addInternal(@Nullable TRequest request, @NonNull Object listener,
+            @NonNull Handler handler) throws RemoteException {
+        return addInternal(request, listener, new HandlerExecutor(handler));
+    }
+
+    protected final boolean addInternal(@Nullable TRequest request, @NonNull Object listener,
+            @NonNull Executor executor)
             throws RemoteException {
         Preconditions.checkArgument(listener != null, "invalid null listener/callback");
-        return addInternal(listener, new Registration<>(executor, convertKey(listener)));
+        return addInternal(listener, new Registration<>(request, executor, convertKey(listener)));
     }
 
-    private boolean addInternal(Object key, Registration<T> registration) throws RemoteException {
+    private boolean addInternal(Object key, Registration<TRequest, TListener> registration)
+            throws RemoteException {
         Preconditions.checkNotNull(registration);
 
         synchronized (mListeners) {
-            if (mListeners.isEmpty() && !registerService()) {
-                return false;
-            }
-            Registration<T> oldRegistration = mListeners.put(key, registration);
+            boolean initialRequest = mListeners.isEmpty();
+
+            Registration<TRequest, TListener> oldRegistration = mListeners.put(key, registration);
             if (oldRegistration != null) {
                 oldRegistration.unregister();
             }
+            TRequest merged = mergeRequests();
+
+            if (initialRequest || !Objects.equals(merged, mMergedRequest)) {
+                mMergedRequest = merged;
+                if (!initialRequest) {
+                    unregisterService();
+                }
+                registerService(mMergedRequest);
+            }
+
             return true;
         }
     }
 
     public void removeListener(Object listener) throws RemoteException {
         synchronized (mListeners) {
-            Registration<T> oldRegistration = mListeners.remove(listener);
+            Registration<TRequest, TListener> oldRegistration = mListeners.remove(listener);
             if (oldRegistration == null) {
                 return;
             }
             oldRegistration.unregister();
 
-            if (mListeners.isEmpty()) {
+            boolean lastRequest = mListeners.isEmpty();
+            TRequest merged = lastRequest ? null : mergeRequests();
+            boolean newRequest = !lastRequest && !Objects.equals(merged, mMergedRequest);
+
+            if (lastRequest || newRequest) {
                 unregisterService();
+                mMergedRequest = merged;
+                if (newRequest) {
+                    registerService(mMergedRequest);
+                }
             }
         }
     }
 
     @SuppressWarnings("unchecked")
-    protected T convertKey(@NonNull Object listener) {
-        return (T) listener;
+    protected TListener convertKey(@NonNull Object listener) {
+        return (TListener) listener;
     }
 
-    protected abstract boolean registerService() throws RemoteException;
+    protected abstract boolean registerService(TRequest request) throws RemoteException;
     protected abstract void unregisterService() throws RemoteException;
 
-    protected void execute(Consumer<T> operation) {
+    @Nullable
+    protected TRequest merge(@NonNull TRequest[] requests) {
+        for (TRequest request : requests) {
+            Preconditions.checkArgument(request == null,
+                    "merge() has to be overridden for non-null requests.");
+        }
+        return null;
+    }
+
+    protected void execute(Consumer<TListener> operation) {
         synchronized (mListeners) {
-            for (Registration<T> registration : mListeners.values()) {
+            for (Registration<TRequest, TListener> registration : mListeners.values()) {
                 registration.execute(operation);
             }
         }
     }
+
+    @GuardedBy("mListeners")
+    @SuppressWarnings("unchecked")
+    @Nullable
+    private TRequest mergeRequests() {
+        Preconditions.checkState(Thread.holdsLock(mListeners));
+
+        if (mListeners.isEmpty()) {
+            return null;
+        }
+
+        if (mListeners.size() == 1) {
+            return mListeners.valueAt(0).getRequest();
+        }
+
+        TRequest[] requests = (TRequest[]) new Object[mListeners.size()];
+        for (int index = 0; index < mListeners.size(); index++) {
+            requests[index] = mListeners.valueAt(index).getRequest();
+        }
+        return merge(requests);
+    }
 }
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/location/java/android/location/GnssAntennaInfo.aidl
similarity index 76%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to location/java/android/location/GnssAntennaInfo.aidl
index 81a14a4..2b956af 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/location/java/android/location/GnssAntennaInfo.aidl
@@ -1,5 +1,5 @@
-/**
- * Copyright (c) 2018, The Android Open Source Project
+/*
+ * 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.
@@ -14,7 +14,6 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.location;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+parcelable GnssAntennaInfo;
\ No newline at end of file
diff --git a/location/java/android/location/GnssAntennaInfo.java b/location/java/android/location/GnssAntennaInfo.java
new file mode 100644
index 0000000..dfcaf81
--- /dev/null
+++ b/location/java/android/location/GnssAntennaInfo.java
@@ -0,0 +1,654 @@
+/*
+ * 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 android.location;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+/**
+ * A class that contains information about a GNSS antenna. GNSS antenna characteristics can change
+ * with device configuration, such as when a device is folded open or closed. Antenna information is
+ * delivered to registered instances of {@link Callback}.
+ */
+public final class GnssAntennaInfo implements Parcelable {
+    private final double mCarrierFrequencyMHz;
+    private final PhaseCenterOffsetCoordinates mPhaseCenterOffsetCoordinates;
+    private final PhaseCenterVariationCorrections mPhaseCenterVariationCorrections;
+    private final SignalGainCorrections mSignalGainCorrections;
+
+    /**
+     * Used for receiving GNSS antenna info from the GNSS engine. You can implement this interface
+     * and call {@link LocationManager#registerAntennaInfoCallback};
+     */
+    public abstract static class Callback {
+        /**
+         * The status of GNSS antenna info.
+         *
+         * @hide
+         */
+        @Retention(RetentionPolicy.SOURCE)
+        @IntDef({STATUS_NOT_SUPPORTED, STATUS_READY, STATUS_LOCATION_DISABLED})
+        public @interface GnssAntennaInfoStatus {
+        }
+
+        /**
+         * The system does not support GNSS antenna info.
+         *
+         * This status will not change in the future.
+         */
+        public static final int STATUS_NOT_SUPPORTED = 0;
+
+        /**
+         * GNSS antenna info updates are being successfully tracked.
+         */
+        public static final int STATUS_READY = 1;
+
+        /**
+         * GNSS provider or Location is disabled, updated will not be received until they are
+         * enabled.
+         */
+        public static final int STATUS_LOCATION_DISABLED = 2;
+
+        /**
+         * Returns the latest GNSS antenna info. This event is triggered when a callback is
+         * registered, and whenever the antenna info changes (due to a device configuration change).
+         */
+        public void onGnssAntennaInfoReceived(@NonNull List<GnssAntennaInfo> gnssAntennaInfos) {}
+
+        /**
+         * Returns the latest status of the GNSS antenna info sub-system.
+         */
+        public void onStatusChanged(@GnssAntennaInfoStatus int status) {}
+    }
+
+    /**
+     * Class containing information about the antenna phase center offset (PCO). PCO is defined with
+     * respect to the origin of the Android sensor coordinate system, e.g., center of primary screen
+     * for mobiles - see sensor or form factor documents for details. Uncertainties are reported
+     *  to 1-sigma.
+     */
+    public static final class PhaseCenterOffsetCoordinates implements Parcelable {
+        private final double mPhaseCenterOffsetCoordinateXMillimeters;
+        private final double mPhaseCenterOffsetCoordinateXUncertaintyMillimeters;
+        private final double mPhaseCenterOffsetCoordinateYMillimeters;
+        private final double mPhaseCenterOffsetCoordinateYUncertaintyMillimeters;
+        private final double mPhaseCenterOffsetCoordinateZMillimeters;
+        private final double mPhaseCenterOffsetCoordinateZUncertaintyMillimeters;
+
+        @VisibleForTesting
+        public PhaseCenterOffsetCoordinates(double phaseCenterOffsetCoordinateXMillimeters,
+                double phaseCenterOffsetCoordinateXUncertaintyMillimeters,
+                double phaseCenterOffsetCoordinateYMillimeters,
+                double phaseCenterOffsetCoordinateYUncertaintyMillimeters,
+                double phaseCenterOffsetCoordinateZMillimeters,
+                double phaseCenterOffsetCoordinateZUncertaintyMillimeters) {
+            mPhaseCenterOffsetCoordinateXMillimeters = phaseCenterOffsetCoordinateXMillimeters;
+            mPhaseCenterOffsetCoordinateYMillimeters = phaseCenterOffsetCoordinateYMillimeters;
+            mPhaseCenterOffsetCoordinateZMillimeters = phaseCenterOffsetCoordinateZMillimeters;
+            mPhaseCenterOffsetCoordinateXUncertaintyMillimeters =
+                    phaseCenterOffsetCoordinateXUncertaintyMillimeters;
+            mPhaseCenterOffsetCoordinateYUncertaintyMillimeters =
+                    phaseCenterOffsetCoordinateYUncertaintyMillimeters;
+            mPhaseCenterOffsetCoordinateZUncertaintyMillimeters =
+                    phaseCenterOffsetCoordinateZUncertaintyMillimeters;
+        }
+
+        public static final @NonNull Creator<PhaseCenterOffsetCoordinates> CREATOR =
+                new Creator<PhaseCenterOffsetCoordinates>() {
+                    @Override
+                    public PhaseCenterOffsetCoordinates createFromParcel(Parcel in) {
+                        return new PhaseCenterOffsetCoordinates(
+                                in.readDouble(),
+                                in.readDouble(),
+                                in.readDouble(),
+                                in.readDouble(),
+                                in.readDouble(),
+                                in.readDouble()
+                        );
+                    }
+
+                    @Override
+                    public PhaseCenterOffsetCoordinates[] newArray(int size) {
+                        return new PhaseCenterOffsetCoordinates[size];
+                    }
+                };
+
+        public double getXCoordMillimeters() {
+            return mPhaseCenterOffsetCoordinateXMillimeters;
+        }
+
+        public double getXCoordUncertaintyMillimeters() {
+            return mPhaseCenterOffsetCoordinateXUncertaintyMillimeters;
+        }
+
+        public double getYCoordMillimeters() {
+            return mPhaseCenterOffsetCoordinateYMillimeters;
+        }
+
+        public double getYCoordUncertaintyMillimeters() {
+            return mPhaseCenterOffsetCoordinateYUncertaintyMillimeters;
+        }
+
+        public double getZCoordMillimeters() {
+            return mPhaseCenterOffsetCoordinateZMillimeters;
+        }
+
+        public double getZCoordUncertaintyMillimeters() {
+            return mPhaseCenterOffsetCoordinateZUncertaintyMillimeters;
+        }
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(@NonNull Parcel dest, int flags) {
+            dest.writeDouble(mPhaseCenterOffsetCoordinateXMillimeters);
+            dest.writeDouble(mPhaseCenterOffsetCoordinateXUncertaintyMillimeters);
+            dest.writeDouble(mPhaseCenterOffsetCoordinateYMillimeters);
+            dest.writeDouble(mPhaseCenterOffsetCoordinateYUncertaintyMillimeters);
+            dest.writeDouble(mPhaseCenterOffsetCoordinateZMillimeters);
+            dest.writeDouble(mPhaseCenterOffsetCoordinateZUncertaintyMillimeters);
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder("PhaseCenteroffset:\n");
+            builder.append("X: " + mPhaseCenterOffsetCoordinateXMillimeters + " +/- "
+                    + mPhaseCenterOffsetCoordinateXUncertaintyMillimeters + "\n");
+            builder.append("Y: " + mPhaseCenterOffsetCoordinateYMillimeters + " +/- "
+                    + mPhaseCenterOffsetCoordinateYUncertaintyMillimeters + "\n");
+            builder.append("Z: " + mPhaseCenterOffsetCoordinateZMillimeters + " +/- "
+                    + mPhaseCenterOffsetCoordinateZUncertaintyMillimeters + "\n");
+            return builder.toString();
+        }
+    }
+
+    /**
+     * Class containing information about the phase center variation (PCV) corrections. The PCV
+     * correction is added to the phase measurement to obtain the corrected value.
+     *
+     * The corrections and associated (1-sigma) uncertainties are represented by respect 2D arrays.
+     *
+     * Each row (major indices) represents a fixed theta. The first row corresponds to a
+     * theta angle of 0 degrees. The last row corresponds to a theta angle of (360 - deltaTheta)
+     * degrees, where deltaTheta is the regular spacing between azimuthal angles, i.e., deltaTheta
+     * = 360 / (number of rows).
+     *
+     * The columns (minor indices) represent fixed zenith angles, beginning at 0 degrees and ending
+     * at 180 degrees. They are separated by deltaPhi, the regular spacing between zenith angles,
+     * i.e., deltaPhi = 180 / (number of columns - 1).
+     */
+    public static final class PhaseCenterVariationCorrections extends SphericalCorrections {
+
+        @VisibleForTesting
+        public PhaseCenterVariationCorrections(
+                @NonNull double[][] phaseCenterVariationCorrectionsMillimeters,
+                @NonNull double[][] phaseCenterVariationCorrectionUncertaintiesMillimeters) {
+            super(phaseCenterVariationCorrectionsMillimeters,
+                    phaseCenterVariationCorrectionUncertaintiesMillimeters);
+        }
+
+        private PhaseCenterVariationCorrections(@NonNull Parcel in) {
+            super(in);
+        }
+
+        /**
+         * Get the phase center variation correction in millimeters at the specified row and column
+         * in the underlying 2D array.
+         * @param row zero-based major index in the array
+         * @param column zero-based minor index in the array
+         * @return phase center correction in millimeters
+         */
+        public double getPhaseCenterVariationCorrectionMillimetersAt(int row, int column) {
+            return super.getCorrectionAt(row, column);
+        }
+
+        /**
+         * Get the phase center variation correction uncertainty in millimeters at the specified row
+         * and column in the underlying 2D array.
+         * @param row zero-based major index in the array
+         * @param column zero-based minor index in the array
+         * @return 1-sigma phase center correction uncertainty in millimeters
+         */
+        public double getPhaseCenterVariationCorrectionUncertaintyMillimetersAt(
+                int row, int column) {
+            return super.getCorrectionUncertaintyAt(row, column);
+        }
+
+        public @NonNull double[][] getRawCorrectionsArray() {
+            return super.getRawCorrectionsArray().clone();
+        }
+
+        public @NonNull double[][] getRawCorrectionUncertaintiesArray() {
+            return super.getRawCorrectionUncertaintiesArray().clone();
+        }
+
+        public int getNumRows() {
+            return super.getNumRows();
+        }
+
+        public int getNumColumns() {
+            return super.getNumColumns();
+        }
+
+        /**
+         * The fixed theta angle separation between successive rows.
+         */
+        public double getDeltaTheta() {
+            return super.getDeltaTheta();
+        }
+
+        /**
+         * The fixed phi angle separation between successive columns.
+         */
+        public double getDeltaPhi() {
+            return super.getDeltaPhi();
+        }
+
+        public static final @NonNull Creator<PhaseCenterVariationCorrections> CREATOR =
+                new Creator<PhaseCenterVariationCorrections>() {
+                    @Override
+                    public PhaseCenterVariationCorrections createFromParcel(Parcel in) {
+                        return new PhaseCenterVariationCorrections(in);
+                    }
+
+                    @Override
+                    public PhaseCenterVariationCorrections[] newArray(int size) {
+                        return new PhaseCenterVariationCorrections[size];
+                    }
+                };
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(@NonNull Parcel dest, int flags) {
+            super.writeToParcel(dest, flags);
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder("PhaseCenterVariationCorrections:\n");
+            builder.append(super.toString());
+            return builder.toString();
+        }
+    }
+
+    /**
+     * Class containing information about the signal gain (SG) corrections. The SG
+     * correction is added to the signal gain to obtain the corrected value.
+     *
+     * The corrections and associated (1-sigma) uncertainties are represented by respect 2D arrays.
+     *
+     * Each row (major indices) represents a fixed theta. The first row corresponds to a
+     * theta angle of 0 degrees. The last row corresponds to a theta angle of (360 - deltaTheta)
+     * degrees, where deltaTheta is the regular spacing between azimuthal angles, i.e., deltaTheta
+     * = 360 / (number of rows).
+     *
+     * The columns (minor indices) represent fixed zenith angles, beginning at 0 degrees and ending
+     * at 180 degrees. They are separated by deltaPhi, the regular spacing between zenith angles,
+     * i.e., deltaPhi = 180 / (number of columns - 1).
+     */
+    public static final class SignalGainCorrections extends SphericalCorrections {
+
+        @VisibleForTesting
+        public SignalGainCorrections(
+                @NonNull double[][] signalGainCorrectionsDbi,
+                @NonNull double[][] signalGainCorrectionUncertaintiesDbi) {
+            super(signalGainCorrectionsDbi,
+                    signalGainCorrectionUncertaintiesDbi);
+        }
+
+        private SignalGainCorrections(@NonNull Parcel in) {
+            super(in);
+        }
+
+        /**
+         * Get the signal gain correction in dbi at the specified row and column
+         * in the underlying 2D array.
+         * @param row zero-based major index in the array
+         * @param column zero-based minor index in the array
+         * @return signal gain correction in dbi
+         */
+        public double getSignalGainCorrectionDbiAt(int row, int column) {
+            return super.getCorrectionAt(row, column);
+        }
+
+        /**
+         * Get the signal gain correction correction uncertainty in dbi at the specified row
+         * and column in the underlying 2D array.
+         * @param row zero-based major index in the array
+         * @param column zero-based minor index in the array
+         * @return 1-sigma signal gain correction uncertainty in dbi
+         */
+        public double getSignalGainCorrectionUncertaintyDbiAt(int row, int column) {
+            return super.getCorrectionUncertaintyAt(row, column);
+        }
+
+        public @NonNull double[][] getRawCorrectionsArray() {
+            return super.getRawCorrectionsArray().clone();
+        }
+
+        public @NonNull double[][] getRawCorrectionUncertaintiesArray() {
+            return super.getRawCorrectionUncertaintiesArray().clone();
+        }
+
+        public int getNumRows() {
+            return super.getNumRows();
+        }
+
+        public int getNumColumns() {
+            return super.getNumColumns();
+        }
+
+        /**
+         * The fixed theta angle separation between successive rows.
+         */
+        public double getDeltaTheta() {
+            return super.getDeltaTheta();
+        }
+
+        /**
+         * The fixed phi angle separation between successive columns.
+         */
+        public double getDeltaPhi() {
+            return super.getDeltaPhi();
+        }
+
+        public static final @NonNull Creator<SignalGainCorrections> CREATOR =
+                new Creator<SignalGainCorrections>() {
+                    @Override
+                    public SignalGainCorrections createFromParcel(Parcel in) {
+                        return new SignalGainCorrections(in);
+                    }
+
+                    @Override
+                    public SignalGainCorrections[] newArray(int size) {
+                        return new SignalGainCorrections[size];
+                    }
+                };
+
+        @Override
+        public int describeContents() {
+            return 0;
+        }
+
+        @Override
+        public void writeToParcel(@NonNull Parcel dest, int flags) {
+            super.writeToParcel(dest, flags);
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder("SignalGainCorrections:\n");
+            builder.append(super.toString());
+            return builder.toString();
+        }
+    }
+
+    /**
+     * Represents corrections on a spherical mapping.
+     *
+     * Each row (major indices) represents a fixed theta. The first row corresponds to a
+     * theta angle of 0 degrees. The last row corresponds to a theta angle of (360 - deltaTheta)
+     * degrees, where deltaTheta is the regular spacing between azimuthal angles, i.e., deltaTheta
+     * = 360 / (number of rows).
+     *
+     * The columns (minor indices) represent fixed zenith angles, beginning at 0 degrees and ending
+     * at 180 degrees. They are separated by deltaPhi, the regular spacing between zenith angles,
+     * i.e., deltaPhi = 180 / (number of columns - 1).
+     */
+    private abstract static class SphericalCorrections implements Parcelable {
+        private final double[][] mCorrections;
+        private final double[][] mCorrectionUncertainties;
+        private final double mDeltaTheta;
+        private final double mDeltaPhi;
+        private final int mNumRows;
+        private final int mNumColumns;
+
+        SphericalCorrections(@NonNull double[][] corrections,
+                @NonNull double[][] correctionUncertainties) {
+            if (corrections.length != correctionUncertainties.length
+                    || corrections[0].length != correctionUncertainties[0].length) {
+                throw new IllegalArgumentException("Correction and correction uncertainty arrays "
+                        + "must have the same dimensions.");
+            }
+
+            mNumRows = corrections.length;
+            if (mNumRows < 1) {
+                throw new IllegalArgumentException("Arrays must have at least one row.");
+            }
+
+            mNumColumns = corrections[0].length;
+            if (mNumColumns < 2) {
+                throw new IllegalArgumentException("Arrays must have at least two columns.");
+            }
+
+            mCorrections = corrections;
+            mCorrectionUncertainties = correctionUncertainties;
+            mDeltaTheta = 360.0d / mNumRows;
+            mDeltaPhi = 180.0d / (mNumColumns - 1);
+        }
+
+        SphericalCorrections(Parcel in) {
+            int numRows = in.readInt();
+            int numColumns = in.readInt();
+
+            double[][] corrections =
+                    new double[numRows][numColumns];
+            double[][] correctionUncertainties =
+                    new double[numRows][numColumns];
+
+            for (int row = 0; row < numRows; row++) {
+                in.readDoubleArray(corrections[row]);
+            }
+
+            for (int row = 0; row < numRows; row++) {
+                in.readDoubleArray(correctionUncertainties[row]);
+            }
+
+            mNumRows = corrections.length;
+            mNumColumns = corrections[0].length;
+            mCorrections = corrections;
+            mCorrectionUncertainties = correctionUncertainties;
+            mDeltaTheta = 360.0d / mNumRows;
+            mDeltaPhi = 180.0d / (mNumColumns - 1);
+        }
+
+        private double getCorrectionAt(int row, int column) {
+            return mCorrections[row][column];
+        }
+
+        private double getCorrectionUncertaintyAt(int row, int column) {
+            return mCorrectionUncertainties[row][column];
+        }
+
+        @NonNull
+        private double[][] getRawCorrectionsArray() {
+            return mCorrections;
+        }
+
+        @NonNull
+        private double[][] getRawCorrectionUncertaintiesArray() {
+            return mCorrectionUncertainties;
+        }
+
+        private int getNumRows() {
+            return mNumRows;
+        }
+
+        private int getNumColumns() {
+            return mNumColumns;
+        }
+
+        /**
+         * The fixed theta angle separation between successive rows.
+         */
+        private double getDeltaTheta() {
+            return mDeltaTheta;
+        }
+
+        /**
+         * The fixed phi angle separation between successive columns.
+         */
+        private double getDeltaPhi() {
+            return mDeltaPhi;
+        }
+
+        @Override
+        public void writeToParcel(@NonNull Parcel dest, int flags) {
+            dest.writeInt(mNumRows);
+            dest.writeInt(mNumColumns);
+            for (double[] row: mCorrections) {
+                dest.writeDoubleArray(row);
+            }
+            for (double[] row: mCorrectionUncertainties) {
+                dest.writeDoubleArray(row);
+            }
+        }
+
+        private String arrayToString(double[][] array) {
+            StringBuilder builder = new StringBuilder();
+            for (int row = 0; row < mNumRows; row++) {
+                builder.append("[ ");
+                for (int column = 0; column < mNumColumns - 1; column++) {
+                    builder.append(array[row][column] + ", ");
+                }
+                builder.append(array[row][mNumColumns - 1] + " ]\n");
+            }
+            return builder.toString();
+        }
+
+        @Override
+        public String toString() {
+            StringBuilder builder = new StringBuilder();
+            builder.append("DeltaTheta: " + mDeltaTheta + "\n");
+            builder.append("DeltaPhi: " + mDeltaPhi + "\n");
+            builder.append("CorrectionsArray:\n");
+            builder.append(arrayToString(mCorrections));
+            builder.append("CorrectionUncertaintiesArray:\n");
+            builder.append(arrayToString(mCorrectionUncertainties));
+            return builder.toString();
+        }
+    }
+
+    @VisibleForTesting
+    public GnssAntennaInfo(
+            double carrierFrequencyMHz,
+            @NonNull PhaseCenterOffsetCoordinates phaseCenterOffsetCoordinates,
+            @Nullable PhaseCenterVariationCorrections phaseCenterVariationCorrections,
+            @Nullable SignalGainCorrections signalGainCorrectionDbi) {
+        if (phaseCenterOffsetCoordinates == null) {
+            throw new IllegalArgumentException("Phase Center Offset Coordinates cannot be null.");
+        }
+        mCarrierFrequencyMHz = carrierFrequencyMHz;
+        mPhaseCenterOffsetCoordinates = phaseCenterOffsetCoordinates;
+        mPhaseCenterVariationCorrections = phaseCenterVariationCorrections;
+        mSignalGainCorrections = signalGainCorrectionDbi;
+    }
+
+    public double getCarrierFrequencyMHz() {
+        return mCarrierFrequencyMHz;
+    }
+
+    @NonNull
+    public PhaseCenterOffsetCoordinates getPhaseCenterOffsetCoordinates() {
+        return mPhaseCenterOffsetCoordinates;
+    }
+
+    @Nullable
+    public PhaseCenterVariationCorrections getPhaseCenterVariationCorrections() {
+        return mPhaseCenterVariationCorrections;
+    }
+
+    @Nullable
+    public SignalGainCorrections getSignalGainCorrections() {
+        return mSignalGainCorrections;
+    }
+
+    public static final @android.annotation.NonNull
+                    Creator<GnssAntennaInfo> CREATOR = new Creator<GnssAntennaInfo>() {
+                            @Override
+                            public GnssAntennaInfo createFromParcel(Parcel in) {
+                                double carrierFrequencyMHz = in.readDouble();
+
+                                ClassLoader classLoader = getClass().getClassLoader();
+                                PhaseCenterOffsetCoordinates phaseCenterOffsetCoordinates =
+                                        in.readParcelable(classLoader);
+                                PhaseCenterVariationCorrections phaseCenterVariationCorrections =
+                                        in.readParcelable(classLoader);
+                                SignalGainCorrections signalGainCorrections =
+                                        in.readParcelable(classLoader);
+
+                                return new GnssAntennaInfo(carrierFrequencyMHz,
+                                        phaseCenterOffsetCoordinates,
+                                        phaseCenterVariationCorrections, signalGainCorrections);
+                            }
+
+                            @Override
+                            public GnssAntennaInfo[] newArray(int size) {
+                                return new GnssAntennaInfo[size];
+                            }
+                    };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel parcel, int flags) {
+        parcel.writeDouble(mCarrierFrequencyMHz);
+
+        // Write Phase Center Offset
+        parcel.writeParcelable(mPhaseCenterOffsetCoordinates, flags);
+
+        // Write Phase Center Variation Corrections
+        parcel.writeParcelable(mPhaseCenterVariationCorrections, flags);
+
+        // Write Signal Gain Corrections
+        parcel.writeParcelable(mSignalGainCorrections, flags);
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder("[ GnssAntennaInfo:\n");
+        builder.append("CarrierFrequencyMHz: " + mCarrierFrequencyMHz + "\n");
+        builder.append(mPhaseCenterOffsetCoordinates.toString());
+        builder.append(mPhaseCenterVariationCorrections == null
+                ? "PhaseCenterVariationCorrections: null\n"
+                : mPhaseCenterVariationCorrections.toString());
+        builder.append(mSignalGainCorrections == null
+                ? "SignalGainCorrections: null\n"
+                : mSignalGainCorrections.toString());
+        builder.append("]");
+        return builder.toString();
+    }
+}
diff --git a/location/java/android/location/GnssCapabilities.java b/location/java/android/location/GnssCapabilities.java
index 2e2f984..930180c 100644
--- a/location/java/android/location/GnssCapabilities.java
+++ b/location/java/android/location/GnssCapabilities.java
@@ -82,6 +82,12 @@
      */
     public static final long MEASUREMENT_CORRECTIONS_REFLECTING_PLANE           = 1L << 8;
 
+    /**
+     * Bit mask indicating GNSS chipset supports GNSS antenna info.
+     * @hide
+     */
+    public static final long ANTENNA_INFO                                       = 1L << 9;
+
     /** @hide */
     public static final long INVALID_CAPABILITIES = -1;
 
@@ -165,6 +171,13 @@
         return hasCapability(MEASUREMENT_CORRECTIONS_REFLECTING_PLANE);
     }
 
+    /**
+     * Returns {@code true} if GNSS chipset supports antenna info, {@code false} otherwise.
+     */
+    public boolean hasGnssAntennaInfo() {
+        return hasCapability(ANTENNA_INFO);
+    }
+
     @NonNull
     @Override
     public String toString() {
@@ -172,6 +185,7 @@
         if (hasLowPowerMode()) sb.append("LOW_POWER_MODE ");
         if (hasSatelliteBlacklist()) sb.append("SATELLITE_BLACKLIST ");
         if (hasGeofencing()) sb.append("GEOFENCING ");
+        if (hasGnssAntennaInfo()) sb.append("ANTENNA_INFO ");
         if (hasMeasurements()) sb.append("MEASUREMENTS ");
         if (hasNavMessages()) sb.append("NAV_MESSAGES ");
         if (hasMeasurementCorrections()) sb.append("MEASUREMENT_CORRECTIONS ");
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/location/java/android/location/GnssRequest.aidl
similarity index 76%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to location/java/android/location/GnssRequest.aidl
index 81a14a4..581abcc 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/location/java/android/location/GnssRequest.aidl
@@ -1,5 +1,5 @@
-/**
- * Copyright (c) 2018, The Android Open Source Project
+/*
+ * 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.
@@ -14,7 +14,9 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.location;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+/**
+ * @hide
+ */
+parcelable GnssRequest;
diff --git a/location/java/android/location/GnssRequest.java b/location/java/android/location/GnssRequest.java
new file mode 100644
index 0000000..2afb265
--- /dev/null
+++ b/location/java/android/location/GnssRequest.java
@@ -0,0 +1,147 @@
+/*
+ * 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 android.location;
+
+import android.annotation.NonNull;
+import android.annotation.SystemApi;
+import android.os.Parcel;
+import android.os.Parcelable;
+
+/**
+ * This class contains extra parameters to pass to a GNSS provider implementation.
+ * @hide
+ */
+@SystemApi
+public final class GnssRequest implements Parcelable {
+    private final boolean mFullTracking;
+
+    /**
+     * Creates a {@link GnssRequest} with a full list of parameters.
+     */
+    private GnssRequest(boolean fullTracking) {
+        mFullTracking = fullTracking;
+    }
+
+    /**
+     * Represents whether to enable full GNSS tracking.
+     *
+     * <p>If true, GNSS chipset switches off duty cycling. In such a mode, no clock
+     * discontinuities are expected, and when supported, carrier phase should be continuous in
+     * good signal conditions. All non-blacklisted, healthy constellations, satellites and
+     * frequency bands that the chipset supports must be reported in this mode. The GNSS chipset
+     * is allowed to consume more power in this mode. If false, GNSS chipset optimizes power via
+     * duty cycling, constellations and frequency limits, etc.
+     */
+    public boolean isFullTracking() {
+        return mFullTracking;
+    }
+
+    @NonNull
+    public static final Creator<GnssRequest> CREATOR =
+            new Creator<GnssRequest>() {
+                @Override
+                @NonNull
+                public GnssRequest createFromParcel(@NonNull Parcel parcel) {
+                    return new GnssRequest(parcel.readBoolean());
+                }
+
+                @Override
+                public GnssRequest[] newArray(int i) {
+                    return new GnssRequest[i];
+                }
+            };
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder s = new StringBuilder();
+        s.append("GnssRequest[");
+        s.append("FullTracking=").append(mFullTracking);
+        s.append(']');
+        return s.toString();
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) return true;
+        if (obj == null) return false;
+        if (!(obj instanceof GnssRequest)) return false;
+
+        GnssRequest other = (GnssRequest) obj;
+        if (mFullTracking != other.mFullTracking) return false;
+
+        return true;
+    }
+
+    @Override
+    public int hashCode() {
+        return mFullTracking ? 1 : 0;
+    }
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel parcel, int flags) {
+        parcel.writeBoolean(mFullTracking);
+    }
+
+    /** Builder for {@link GnssRequest} */
+    public static final class Builder {
+        private boolean mFullTracking;
+
+        /**
+         * Constructs a {@link Builder} instance.
+         */
+        public Builder() {
+        }
+
+        /**
+         * Constructs a {@link Builder} instance by copying a {@link GnssRequest}.
+         */
+        public Builder(@NonNull GnssRequest request) {
+            mFullTracking = request.isFullTracking();
+        }
+
+        /**
+         * Set the value of whether to enable full GNSS tracking, which is false by default.
+         *
+         * <p>If true, GNSS chipset switches off duty cycling. In such a mode, no clock
+         * discontinuities are expected, and when supported, carrier phase should be continuous in
+         * good signal conditions. All non-blacklisted, healthy constellations, satellites and
+         * frequency bands that the chipset supports must be reported in this mode. The GNSS chipset
+         * is allowed to consume more power in this mode. If false, GNSS chipset optimizes power via
+         * duty cycling, constellations and frequency limits, etc.
+         *
+         * <p>Full tracking requests always override non-full tracking requests. If any full
+         * tracking request occurs, all listeners on the device will receive full tracking GNSS
+         * measurements.
+         */
+        @NonNull public Builder setFullTracking(boolean value) {
+            mFullTracking = value;
+            return this;
+        }
+
+        /** Builds a {@link GnssRequest} instance as specified by this builder. */
+        @NonNull
+        public GnssRequest build() {
+            return new GnssRequest(mFullTracking);
+        }
+    }
+}
diff --git a/location/java/android/location/GnssStatus.java b/location/java/android/location/GnssStatus.java
index f17fa39..4d01cdc 100644
--- a/location/java/android/location/GnssStatus.java
+++ b/location/java/android/location/GnssStatus.java
@@ -24,6 +24,8 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Objects;
 
 /**
  * This class represents the current state of the GNSS engine and is used in conjunction with
@@ -339,6 +341,33 @@
         }
     }
 
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) {
+            return true;
+        }
+        if (!(o instanceof GnssStatus)) {
+            return false;
+        }
+
+        GnssStatus that = (GnssStatus) o;
+        return mSvCount == that.mSvCount
+                && Arrays.equals(mSvidWithFlags, that.mSvidWithFlags)
+                && Arrays.equals(mCn0DbHzs, that.mCn0DbHzs)
+                && Arrays.equals(mElevations, that.mElevations)
+                && Arrays.equals(mAzimuths, that.mAzimuths)
+                && Arrays.equals(mCarrierFrequencies, that.mCarrierFrequencies)
+                && Arrays.equals(mBasebandCn0DbHzs, that.mBasebandCn0DbHzs);
+    }
+
+    @Override
+    public int hashCode() {
+        int result = Objects.hash(mSvCount);
+        result = 31 * result + Arrays.hashCode(mSvidWithFlags);
+        result = 31 * result + Arrays.hashCode(mCn0DbHzs);
+        return result;
+    }
+
     /**
      * Builder class to help create new GnssStatus instances.
      */
@@ -451,8 +480,8 @@
             mCn0DbHz = cn0DbHz;
             mElevation = elevation;
             mAzimuth = azimuth;
-            mCarrierFrequency = carrierFrequency;
-            mBasebandCn0DbHz = basebandCn0DbHz;
+            mCarrierFrequency = hasCarrierFrequency ? carrierFrequency : 0;
+            mBasebandCn0DbHz = hasBasebandCn0DbHz ? basebandCn0DbHz : 0;
         }
     }
 }
diff --git a/location/java/android/location/GpsClock.java b/location/java/android/location/GpsClock.java
index f123766..58af6ee 100644
--- a/location/java/android/location/GpsClock.java
+++ b/location/java/android/location/GpsClock.java
@@ -25,8 +25,11 @@
  * A class containing a GPS clock timestamp.
  * It represents a measurement of the GPS receiver's clock.
  *
+ * @deprecated use {@link GnssClock} instead.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public class GpsClock implements Parcelable {
 
diff --git a/location/java/android/location/GpsMeasurement.java b/location/java/android/location/GpsMeasurement.java
index 27a8189..c2ab4ab 100644
--- a/location/java/android/location/GpsMeasurement.java
+++ b/location/java/android/location/GpsMeasurement.java
@@ -24,8 +24,11 @@
 /**
  * A class representing a GPS satellite measurement, containing raw and computed information.
  *
+ * @deprecated use {@link GnssMeasurement} instead.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public class GpsMeasurement implements Parcelable {
     private int mFlags;
diff --git a/location/java/android/location/GpsMeasurementsEvent.java b/location/java/android/location/GpsMeasurementsEvent.java
index d69158d..f3feb7a 100644
--- a/location/java/android/location/GpsMeasurementsEvent.java
+++ b/location/java/android/location/GpsMeasurementsEvent.java
@@ -30,8 +30,11 @@
  * A class implementing a container for data associated with a measurement event.
  * Events are delivered to registered instances of {@link Listener}.
  *
+ * @deprecated use {@link GnssMeasurementsEvent} instead.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public class GpsMeasurementsEvent implements Parcelable {
 
diff --git a/location/java/android/location/GpsNavigationMessage.java b/location/java/android/location/GpsNavigationMessage.java
index 6eeea26..dc1e99f 100644
--- a/location/java/android/location/GpsNavigationMessage.java
+++ b/location/java/android/location/GpsNavigationMessage.java
@@ -26,8 +26,11 @@
 /**
  * A class containing a GPS satellite Navigation Message.
  *
+ * @deprecated use {@link GnssNavigationMessage} instead.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public class GpsNavigationMessage implements Parcelable {
 
diff --git a/location/java/android/location/GpsNavigationMessageEvent.java b/location/java/android/location/GpsNavigationMessageEvent.java
index f60e5c7..2d5d6eb 100644
--- a/location/java/android/location/GpsNavigationMessageEvent.java
+++ b/location/java/android/location/GpsNavigationMessageEvent.java
@@ -27,8 +27,11 @@
  * A class implementing a container for data associated with a navigation message event.
  * Events are delivered to registered instances of {@link Listener}.
  *
+ * @deprecated use {@link GnssNavigationMessage} instead.
+ *
  * @hide
  */
+@Deprecated
 @SystemApi
 public class GpsNavigationMessageEvent implements Parcelable {
 
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/location/java/android/location/IGnssAntennaInfoListener.aidl
similarity index 64%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to location/java/android/location/IGnssAntennaInfoListener.aidl
index 81a14a4..30bf5467 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/location/java/android/location/IGnssAntennaInfoListener.aidl
@@ -1,5 +1,5 @@
-/**
- * Copyright (c) 2018, The Android Open Source Project
+/*
+ * 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.
@@ -14,7 +14,14 @@
  * limitations under the License.
  */
 
-package android.os;
+package android.location;
 
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+import android.location.GnssAntennaInfo;
+
+/**
+ * {@hide}
+ */
+oneway interface IGnssAntennaInfoListener {
+    void onGnssAntennaInfoReceived(in List<GnssAntennaInfo> gnssAntennaInfo);
+    void onStatusChanged(in int status);
+}
\ No newline at end of file
diff --git a/location/java/android/location/ILocationManager.aidl b/location/java/android/location/ILocationManager.aidl
index 79bec92..8600dc4 100644
--- a/location/java/android/location/ILocationManager.aidl
+++ b/location/java/android/location/ILocationManager.aidl
@@ -22,7 +22,9 @@
 import android.location.GeocoderParams;
 import android.location.Geofence;
 import android.location.GnssMeasurementCorrections;
+import android.location.GnssRequest;
 import android.location.IBatchedLocationCallback;
+import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssStatusListener;
 import android.location.IGnssNavigationMessageListener;
@@ -69,15 +71,19 @@
         double upperRightLatitude, double upperRightLongitude, int maxResults,
         in GeocoderParams params, out List<Address> addrs);
 
-    boolean sendNiResponse(int notifId, int userResponse);
-
-    boolean addGnssMeasurementsListener(in IGnssMeasurementsListener listener,
-             String packageName, String featureId, String listenerIdentifier);
+    boolean addGnssMeasurementsListener(in GnssRequest request,
+            in IGnssMeasurementsListener listener,
+            String packageName, String featureId,
+            String listenerIdentifier);
     void injectGnssMeasurementCorrections(in GnssMeasurementCorrections corrections,
             in String packageName);
     long getGnssCapabilities(in String packageName);
     void removeGnssMeasurementsListener(in IGnssMeasurementsListener listener);
 
+    boolean addGnssAntennaInfoListener(in IGnssAntennaInfoListener listener,
+             String packageName, String featureId, String listenerIdentifier);
+    void removeGnssAntennaInfoListener(in IGnssAntennaInfoListener listener);
+
     boolean addGnssNavigationMessageListener(in IGnssNavigationMessageListener listener,
              String packageName, String featureId, String listenerIdentifier);
     void removeGnssNavigationMessageListener(in IGnssNavigationMessageListener listener);
@@ -92,7 +98,7 @@
     boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName);
     void flushGnssBatch(String packageName);
     boolean stopGnssBatch();
-    boolean injectLocation(in Location location);
+    void injectLocation(in Location location);
 
     @UnsupportedAppUsage
     List<String> getAllProviders();
@@ -109,6 +115,7 @@
 
     boolean isProviderEnabledForUser(String provider, int userId);
     boolean isLocationEnabledForUser(int userId);
+    void setLocationEnabledForUser(boolean enabled, int userId);
     void addTestProvider(String name, in ProviderProperties properties, String opPackageName);
     void removeTestProvider(String provider, String opPackageName);
     void setTestProviderLocation(String provider, in Location loc, String opPackageName);
diff --git a/location/java/android/location/Location.java b/location/java/android/location/Location.java
index 7a12cee..6724324 100644
--- a/location/java/android/location/Location.java
+++ b/location/java/android/location/Location.java
@@ -16,7 +16,6 @@
 
 package android.location;
 
-import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -65,23 +64,18 @@
     public static final int FORMAT_SECONDS = 2;
 
     /**
-     * Bundle key for a version of the location that has been fed through
-     * LocationFudger. Allows location providers to flag locations as being
-     * safe for use with ACCESS_COARSE_LOCATION permission.
-     *
-     * @hide
-     */
-    public static final String EXTRA_COARSE_LOCATION = "coarseLocation";
-
-    /**
      * Bundle key for a version of the location containing no GPS data.
      * Allows location providers to flag locations as being safe to
      * feed to LocationFudger.
      *
      * @hide
+     * @deprecated As of Android R, this extra is longer in use, since it is not necessary to keep
+     * gps locations separate from other locations for coarsening. Providers that do not need to
+     * support platforms below Android R should not use this constant.
      */
     @TestApi
     @SystemApi
+    @Deprecated
     public static final String EXTRA_NO_GPS_LOCATION = "noGPSLocation";
 
     /**
@@ -1214,23 +1208,6 @@
     }
 
     /**
-     * Attaches an extra {@link Location} to this Location. This is useful for location providers
-     * to set the {@link #EXTRA_NO_GPS_LOCATION} extra to provide coarse locations for clients.
-     *
-     * @param key the key associated with the Location extra
-     * @param value the Location to attach
-     * @hide
-     */
-    @TestApi
-    @SystemApi
-    public void setExtraLocation(@Nullable String key, @Nullable Location value) {
-        if (mExtras == null) {
-            mExtras = new Bundle();
-        }
-        mExtras.putParcelable(key, value);
-    }
-
-    /**
      * Returns true if the Location came from a mock provider.
      *
      * @return true if this Location came from a mock provider, false otherwise
diff --git a/location/java/android/location/LocationManager.java b/location/java/android/location/LocationManager.java
index 0c5fe78..3d0765b 100644
--- a/location/java/android/location/LocationManager.java
+++ b/location/java/android/location/LocationManager.java
@@ -33,6 +33,9 @@
 import android.annotation.TestApi;
 import android.app.AlarmManager;
 import android.app.PendingIntent;
+import android.compat.Compatibility;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
 import android.content.pm.PackageManager;
@@ -50,7 +53,6 @@
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.util.ArrayMap;
-import android.util.Log;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.location.ProviderProperties;
@@ -82,6 +84,36 @@
     private static final String TAG = "LocationManager";
 
     /**
+     * For apps targeting Android K and above, supplied {@link PendingIntent}s must be targeted to a
+     * specific package.
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
+    public static final long TARGETED_PENDING_INTENT = 148963590L;
+
+    /**
+     * For apps targeting Android K and above, incomplete locations may not be passed to
+     * {@link #setTestProviderLocation}.
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.JELLY_BEAN)
+    private static final long INCOMPLETE_LOCATION = 148964793L;
+
+    /**
+     * For apps targeting Android S and above, all {@link GpsStatus} API usage must be replaced with
+     * {@link GnssStatus} APIs.
+     *
+     * @hide
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.R)
+    private static final long GPS_STATUS_USAGE = 144027538L;
+
+    /**
      * Name of the network location provider.
      *
      * <p>This provider determines location based on nearby of cell tower and WiFi access points.
@@ -219,7 +251,7 @@
      * @hide
      */
     public static final String HIGH_POWER_REQUEST_CHANGE_ACTION =
-        "android.location.HIGH_POWER_REQUEST_CHANGE";
+            "android.location.HIGH_POWER_REQUEST_CHANGE";
 
     /**
      * Broadcast intent action for Settings app to inject a footer at the bottom of location
@@ -278,6 +310,8 @@
             new GnssMeasurementsListenerManager();
     private final GnssNavigationMessageListenerManager mGnssNavigationMessageListenerTransport =
             new GnssNavigationMessageListenerManager();
+    private final GnssAntennaInfoListenerManager mGnssAntennaInfoListenerManager =
+            new GnssAntennaInfoListenerManager();
 
     /**
      * @hide
@@ -446,13 +480,11 @@
     @TestApi
     @RequiresPermission(WRITE_SECURE_SETTINGS)
     public void setLocationEnabledForUser(boolean enabled, @NonNull UserHandle userHandle) {
-        Settings.Secure.putIntForUser(
-                mContext.getContentResolver(),
-                Settings.Secure.LOCATION_MODE,
-                enabled
-                        ? Settings.Secure.LOCATION_MODE_ON
-                        : Settings.Secure.LOCATION_MODE_OFF,
-                userHandle.getIdentifier());
+        try {
+            mService.setLocationEnabledForUser(enabled, userHandle.getIdentifier());
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
     }
 
     /**
@@ -771,7 +803,6 @@
     public void requestSingleUpdate(@NonNull String provider,
             @NonNull PendingIntent pendingIntent) {
         Preconditions.checkArgument(provider != null, "invalid null provider");
-        checkPendingIntent(pendingIntent);
 
         LocationRequest request = LocationRequest.createFromDeprecatedProvider(
                 provider, 0, 0, true);
@@ -800,7 +831,6 @@
     public void requestSingleUpdate(@NonNull Criteria criteria,
             @NonNull PendingIntent pendingIntent) {
         Preconditions.checkArgument(criteria != null, "invalid null criteria");
-        checkPendingIntent(pendingIntent);
 
         LocationRequest request = LocationRequest.createFromDeprecatedCriteria(
                 criteria, 0, 0, true);
@@ -1021,7 +1051,6 @@
     public void requestLocationUpdates(@NonNull String provider, long minTimeMs, float minDistanceM,
             @NonNull PendingIntent pendingIntent) {
         Preconditions.checkArgument(provider != null, "invalid null provider");
-        checkPendingIntent(pendingIntent);
 
         LocationRequest request = LocationRequest.createFromDeprecatedProvider(
                 provider, minTimeMs, minDistanceM, false);
@@ -1048,7 +1077,6 @@
     public void requestLocationUpdates(long minTimeMs, float minDistanceM,
             @NonNull Criteria criteria, @NonNull PendingIntent pendingIntent) {
         Preconditions.checkArgument(criteria != null, "invalid null criteria");
-        checkPendingIntent(pendingIntent);
 
         LocationRequest request = LocationRequest.createFromDeprecatedCriteria(
                 criteria, minTimeMs, minDistanceM, false);
@@ -1164,9 +1192,9 @@
             @NonNull PendingIntent pendingIntent) {
         Preconditions.checkArgument(locationRequest != null, "invalid null location request");
         Preconditions.checkArgument(pendingIntent != null, "invalid null pending intent");
-        if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN) {
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
             Preconditions.checkArgument(pendingIntent.isTargetedToPackage(),
-                    "pending intent must be targeted to package");
+                    "pending intent must be targeted to a package");
         }
 
         try {
@@ -1189,7 +1217,7 @@
      * the first fix.
      *
      * @param location newly available {@link Location} object
-     * @return true if the location was successfully injected, false otherwise
+     * @return true if the location was injected, false otherwise
      *
      * @throws IllegalArgumentException if location is null
      * @throws SecurityException if permissions are not present
@@ -1198,18 +1226,13 @@
      */
     @RequiresPermission(allOf = {LOCATION_HARDWARE, ACCESS_FINE_LOCATION})
     public boolean injectLocation(@NonNull Location location) {
-        if (location == null) {
-            IllegalArgumentException e = new IllegalArgumentException("invalid null location");
-            if (mContext.getApplicationInfo().targetSdkVersion >= Build.VERSION_CODES.R) {
-                throw e;
-            } else {
-                Log.w(TAG, e);
-                return false;
-            }
-        }
+        Preconditions.checkArgument(location != null, "invalid null location");
+        Preconditions.checkArgument(location.isComplete(),
+                "incomplete location object, missing timestamp or accuracy?");
 
         try {
-            return mService.injectLocation(location);
+            mService.injectLocation(location);
+            return true;
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -1487,15 +1510,11 @@
         Preconditions.checkArgument(provider != null, "invalid null provider");
         Preconditions.checkArgument(location != null, "invalid null location");
 
-        if (!location.isComplete()) {
-            IllegalArgumentException e = new IllegalArgumentException(
-                    "Incomplete location object, missing timestamp or accuracy? " + location);
-            if (mContext.getApplicationInfo().targetSdkVersion <= Build.VERSION_CODES.JELLY_BEAN) {
-                Log.w(TAG, e);
-                location.makeComplete();
-            } else {
-                throw e;
-            }
+        if (Compatibility.isChangeEnabled(INCOMPLETE_LOCATION)) {
+            Preconditions.checkArgument(location.isComplete(),
+                    "incomplete location object, missing timestamp or accuracy?");
+        } else {
+            location.makeComplete();
         }
 
         try {
@@ -1629,7 +1648,11 @@
     @RequiresPermission(anyOf = {ACCESS_COARSE_LOCATION, ACCESS_FINE_LOCATION})
     public void addProximityAlert(double latitude, double longitude, float radius, long expiration,
             @NonNull PendingIntent intent) {
-        checkPendingIntent(intent);
+        Preconditions.checkArgument(intent != null, "invalid null pending intent");
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
+            Preconditions.checkArgument(intent.isTargetedToPackage(),
+                    "pending intent must be targeted to a package");
+        }
         if (expiration < 0) expiration = Long.MAX_VALUE;
 
         Geofence fence = Geofence.createCircle(latitude, longitude, radius);
@@ -1659,7 +1682,11 @@
      * permission is not present
      */
     public void removeProximityAlert(@NonNull PendingIntent intent) {
-        checkPendingIntent(intent);
+        Preconditions.checkArgument(intent != null, "invalid null pending intent");
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
+            Preconditions.checkArgument(intent.isTargetedToPackage(),
+                    "pending intent must be targeted to a package");
+        }
 
         try {
             mService.removeGeofence(null, intent, mContext.getPackageName());
@@ -1709,8 +1736,13 @@
             @NonNull LocationRequest request,
             @NonNull Geofence fence,
             @NonNull PendingIntent intent) {
-        checkPendingIntent(intent);
+        Preconditions.checkArgument(request != null, "invalid null location request");
         Preconditions.checkArgument(fence != null, "invalid null geofence");
+        Preconditions.checkArgument(intent != null, "invalid null pending intent");
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
+            Preconditions.checkArgument(intent.isTargetedToPackage(),
+                    "pending intent must be targeted to a package");
+        }
 
         try {
             mService.requestGeofence(request, fence, intent, mContext.getPackageName(),
@@ -1737,8 +1769,12 @@
      * @hide
      */
     public void removeGeofence(@NonNull Geofence fence, @NonNull PendingIntent intent) {
-        checkPendingIntent(intent);
         Preconditions.checkArgument(fence != null, "invalid null geofence");
+        Preconditions.checkArgument(intent != null, "invalid null pending intent");
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
+            Preconditions.checkArgument(intent.isTargetedToPackage(),
+                    "pending intent must be targeted to a package");
+        }
 
         try {
             mService.removeGeofence(fence, intent, mContext.getPackageName());
@@ -1759,7 +1795,11 @@
      * @hide
      */
     public void removeAllGeofences(@NonNull PendingIntent intent) {
-        checkPendingIntent(intent);
+        Preconditions.checkArgument(intent != null, "invalid null pending intent");
+        if (Compatibility.isChangeEnabled(TARGETED_PENDING_INTENT)) {
+            Preconditions.checkArgument(intent.isTargetedToPackage(),
+                    "pending intent must be targeted to a package");
+        }
 
         try {
             mService.removeGeofence(null, intent, mContext.getPackageName());
@@ -1833,14 +1873,15 @@
      * @param status object containing GPS status details, or null.
      * @return status object containing updated GPS status.
      *
-     * @deprecated GpsStatus APIs are deprecated, use {@link GnssStatus} APIs instead.
+     * @deprecated GpsStatus APIs are deprecated, use {@link GnssStatus} APIs instead. No longer
+     * supported in apps targeting S and above.
      */
     @Deprecated
     @RequiresPermission(ACCESS_FINE_LOCATION)
     public @Nullable GpsStatus getGpsStatus(@Nullable GpsStatus status) {
-        if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.R) {
+        if (Compatibility.isChangeEnabled(GPS_STATUS_USAGE)) {
             throw new UnsupportedOperationException(
-                    "GpsStatus APIs not supported in S and above, use GnssStatus APIs instead");
+                    "GpsStatus APIs not supported, please use GnssStatus APIs instead");
         }
 
         GnssStatus gnssStatus = mGnssStatusListenerManager.getGnssStatus();
@@ -1863,17 +1904,14 @@
      * @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
      *
      * @deprecated use {@link #registerGnssStatusCallback(GnssStatus.Callback)} instead. No longer
-     * supported in apps targeting R and above.
+     * supported in apps targeting S and above.
      */
     @Deprecated
     @RequiresPermission(ACCESS_FINE_LOCATION)
     public boolean addGpsStatusListener(GpsStatus.Listener listener) {
-        UnsupportedOperationException ex = new UnsupportedOperationException(
-                "GpsStatus APIs not supported in S and above, use GnssStatus APIs instead");
-        if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.R) {
-            throw ex;
-        } else {
-            Log.w(TAG, ex);
+        if (Compatibility.isChangeEnabled(GPS_STATUS_USAGE)) {
+            throw new UnsupportedOperationException(
+                    "GpsStatus APIs not supported, please use GnssStatus APIs instead");
         }
 
         try {
@@ -1889,16 +1927,13 @@
      * @param listener GPS status listener object to remove
      *
      * @deprecated use {@link #unregisterGnssStatusCallback(GnssStatus.Callback)} instead. No longer
-     * supported in apps targeting R and above.
+     * supported in apps targeting S and above.
      */
     @Deprecated
     public void removeGpsStatusListener(GpsStatus.Listener listener) {
-        UnsupportedOperationException ex = new UnsupportedOperationException(
-                "GpsStatus APIs not supported in S and above, use GnssStatus APIs instead");
-        if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.R) {
-            throw ex;
-        } else {
-            Log.w(TAG, ex);
+        if (Compatibility.isChangeEnabled(GPS_STATUS_USAGE)) {
+            throw new UnsupportedOperationException(
+                    "GpsStatus APIs not supported, please use GnssStatus APIs instead");
         }
 
         try {
@@ -2162,6 +2197,35 @@
     }
 
     /**
+     * Registers a GNSS Measurement callback.
+     *
+     * @param request  extra parameters to pass to GNSS measurement provider. For example, if {@link
+     *                 GnssRequest#isFullTracking()} is true, GNSS chipset switches off duty
+     *                 cycling.
+     * @param executor the executor that the callback runs on.
+     * @param callback a {@link GnssMeasurementsEvent.Callback} object to register.
+     * @return {@code true} if the callback was added successfully, {@code false} otherwise.
+     * @throws IllegalArgumentException if request is null
+     * @throws IllegalArgumentException if executor is null
+     * @throws IllegalArgumentException if callback is null
+     * @throws SecurityException        if the ACCESS_FINE_LOCATION permission is not present
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(allOf = {ACCESS_FINE_LOCATION, LOCATION_HARDWARE})
+    public boolean registerGnssMeasurementsCallback(
+            @NonNull GnssRequest request,
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull GnssMeasurementsEvent.Callback callback) {
+        Preconditions.checkArgument(request != null, "invalid null request");
+        try {
+            return mGnssMeasurementsListenerManager.addListener(request, callback, executor);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * Injects GNSS measurement corrections into the GNSS chipset.
      *
      * @param measurementCorrections a {@link GnssMeasurementCorrections} object with the GNSS
@@ -2199,6 +2263,41 @@
     }
 
     /**
+     * Registers a Gnss Antenna Info callback.
+     *
+     * @param executor the executor that the callback runs on.
+     * @param callback a {@link GnssAntennaInfo.Callback} object to register.
+     * @return {@code true} if the callback was added successfully, {@code false} otherwise.
+     *
+     * @throws IllegalArgumentException if executor is null
+     * @throws IllegalArgumentException if callback is null
+     * @throws SecurityException if the ACCESS_FINE_LOCATION permission is not present
+     */
+    @RequiresPermission(ACCESS_FINE_LOCATION)
+    public boolean registerAntennaInfoCallback(
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull GnssAntennaInfo.Callback callback) {
+        try {
+            return mGnssAntennaInfoListenerManager.addListener(callback, executor);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Unregisters a GNSS Antenna Info callback.
+     *
+     * @param callback a {@link GnssAntennaInfo.Callback} object to remove.
+     */
+    public void unregisterAntennaInfoCallback(@NonNull GnssAntennaInfo.Callback callback) {
+        try {
+            mGnssAntennaInfoListenerManager.removeListener(callback);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
      * No-op method to keep backward-compatibility.
      *
      * @hide
@@ -2397,34 +2496,6 @@
         }
     }
 
-    /**
-     * Used by NetInitiatedActivity to report user response
-     * for network initiated GPS fix requests.
-     *
-     * @hide
-     */
-    @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P, trackingBug = 115609023)
-    public boolean sendNiResponse(int notifId, int userResponse) {
-        try {
-            return mService.sendNiResponse(notifId, userResponse);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    private void checkPendingIntent(PendingIntent pendingIntent) {
-        Preconditions.checkArgument(pendingIntent != null, "invalid null pending intent");
-        if (!pendingIntent.isTargetedToPackage()) {
-            IllegalArgumentException e = new IllegalArgumentException(
-                    "invalid pending intent - must be targeted to package");
-            if (mContext.getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN) {
-                throw e;
-            } else {
-                Log.w(TAG, e);
-            }
-        }
-    }
-
     private static class GetCurrentLocationTransport extends ILocationListener.Stub implements
             AlarmManager.OnAlarmListener {
 
@@ -2733,8 +2804,7 @@
     }
 
     private class GnssStatusListenerManager extends
-            AbstractListenerManager<GnssStatus.Callback> {
-
+            AbstractListenerManager<Void, GnssStatus.Callback> {
         @Nullable
         private IGnssStatusListener mListenerTransport;
 
@@ -2752,19 +2822,19 @@
 
         public boolean addListener(@NonNull GpsStatus.Listener listener, @NonNull Executor executor)
                 throws RemoteException {
-            return addInternal(listener, executor);
+            return addInternal(null, listener, executor);
         }
 
         public boolean addListener(@NonNull OnNmeaMessageListener listener,
                 @NonNull Handler handler)
                 throws RemoteException {
-            return addInternal(listener, handler);
+            return addInternal(null, listener, handler);
         }
 
         public boolean addListener(@NonNull OnNmeaMessageListener listener,
                 @NonNull Executor executor)
                 throws RemoteException {
-            return addInternal(listener, executor);
+            return addInternal(null, listener, executor);
         }
 
         @Override
@@ -2803,7 +2873,7 @@
         }
 
         @Override
-        protected boolean registerService() throws RemoteException {
+        protected boolean registerService(Void ignored) throws RemoteException {
             Preconditions.checkState(mListenerTransport == null);
 
             GnssStatusListener transport = new GnssStatusListener();
@@ -2863,17 +2933,17 @@
     }
 
     private class GnssMeasurementsListenerManager extends
-            AbstractListenerManager<GnssMeasurementsEvent.Callback> {
+            AbstractListenerManager<GnssRequest, GnssMeasurementsEvent.Callback> {
 
         @Nullable
         private IGnssMeasurementsListener mListenerTransport;
 
         @Override
-        protected boolean registerService() throws RemoteException {
+        protected boolean registerService(GnssRequest request) throws RemoteException {
             Preconditions.checkState(mListenerTransport == null);
 
             GnssMeasurementsListener transport = new GnssMeasurementsListener();
-            if (mService.addGnssMeasurementsListener(transport, mContext.getPackageName(),
+            if (mService.addGnssMeasurementsListener(request, transport, mContext.getPackageName(),
                     mContext.getFeatureId(), "gnss measurement callback")) {
                 mListenerTransport = transport;
                 return true;
@@ -2890,6 +2960,18 @@
             mListenerTransport = null;
         }
 
+        @Override
+        @Nullable
+        protected GnssRequest merge(@NonNull GnssRequest[] requests) {
+            Preconditions.checkArgument(requests.length > 0);
+            for (GnssRequest request : requests) {
+                if (request.isFullTracking()) {
+                    return request;
+                }
+            }
+            return requests[0];
+        }
+
         private class GnssMeasurementsListener extends IGnssMeasurementsListener.Stub {
             @Override
             public void onGnssMeasurementsReceived(final GnssMeasurementsEvent event) {
@@ -2904,13 +2986,13 @@
     }
 
     private class GnssNavigationMessageListenerManager extends
-            AbstractListenerManager<GnssNavigationMessage.Callback> {
+            AbstractListenerManager<Void, GnssNavigationMessage.Callback> {
 
         @Nullable
         private IGnssNavigationMessageListener mListenerTransport;
 
         @Override
-        protected boolean registerService() throws RemoteException {
+        protected boolean registerService(Void ignored) throws RemoteException {
             Preconditions.checkState(mListenerTransport == null);
 
             GnssNavigationMessageListener transport = new GnssNavigationMessageListener();
@@ -2944,19 +3026,61 @@
         }
     }
 
+    private class GnssAntennaInfoListenerManager extends
+            AbstractListenerManager<Void, GnssAntennaInfo.Callback> {
+
+        @Nullable
+        private IGnssAntennaInfoListener mListenerTransport;
+
+        @Override
+        protected boolean registerService(Void ignored) throws RemoteException {
+            Preconditions.checkState(mListenerTransport == null);
+
+            GnssAntennaInfoListener transport = new GnssAntennaInfoListener();
+            if (mService.addGnssAntennaInfoListener(transport, mContext.getPackageName(),
+                    mContext.getFeatureId(), "gnss antenna info callback")) {
+                mListenerTransport = transport;
+                return true;
+            } else {
+                return false;
+            }
+        }
+
+        @Override
+        protected void unregisterService() throws RemoteException {
+            Preconditions.checkState(mListenerTransport != null);
+
+            mService.removeGnssAntennaInfoListener(mListenerTransport);
+            mListenerTransport = null;
+        }
+
+        private class GnssAntennaInfoListener extends IGnssAntennaInfoListener.Stub {
+            @Override
+            public void onGnssAntennaInfoReceived(final List<GnssAntennaInfo> gnssAntennaInfos) {
+                execute((callback) -> callback.onGnssAntennaInfoReceived(gnssAntennaInfos));
+            }
+
+            @Override
+            public void onStatusChanged(int status) {
+                execute((listener) -> listener.onStatusChanged(status));
+            }
+        }
+
+    }
+
     private class BatchedLocationCallbackManager extends
-            AbstractListenerManager<BatchedLocationCallback> {
+            AbstractListenerManager<Void, BatchedLocationCallback> {
 
         @Nullable
         private IBatchedLocationCallback mListenerTransport;
 
         @Override
-        protected boolean registerService() throws RemoteException {
+        protected boolean registerService(Void ignored) throws RemoteException {
             Preconditions.checkState(mListenerTransport == null);
 
             BatchedLocationCallback transport = new BatchedLocationCallback();
             if (mService.addGnssBatchingCallback(transport, mContext.getPackageName(),
-                     mContext.getFeatureId(), "batched location callback")) {
+                    mContext.getFeatureId(), "batched location callback")) {
                 mListenerTransport = transport;
                 return true;
             } else {
diff --git a/location/java/android/location/LocationManagerInternal.java b/location/java/android/location/LocationManagerInternal.java
index 44d9d23..085602c 100644
--- a/location/java/android/location/LocationManagerInternal.java
+++ b/location/java/android/location/LocationManagerInternal.java
@@ -41,4 +41,28 @@
      * @throws IllegalArgumentException if provider is null
      */
     public abstract void requestSetProviderAllowed(@NonNull String provider, boolean allowed);
+
+    /**
+     * Returns true if the given provider is enabled for the given user.
+     *
+     * @param provider A location provider as listed by {@link LocationManager#getAllProviders()}
+     * @param userId   The user id to check
+     * @return True if the provider is enabled, false otherwise
+     */
+    public abstract boolean isProviderEnabledForUser(@NonNull String provider, int userId);
+
+    /**
+     * Returns true if the given package belongs to a location provider, and so should be afforded
+     * some special privileges.
+     *
+     * @param packageName The package name to check
+     * @return True is the given package belongs to a location provider, false otherwise
+     */
+    public abstract boolean isProviderPackage(@NonNull String packageName);
+
+    /**
+     * Should only be used by GNSS code.
+     */
+    // TODO: there is no reason for this to exist as part of any API. move all the logic into gnss
+    public abstract void sendNiResponse(int notifId, int userResponse);
 }
diff --git a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
index 127d00c..d571480 100644
--- a/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
+++ b/location/java/com/android/internal/location/gnssmetrics/GnssMetrics.java
@@ -24,12 +24,12 @@
 import android.text.format.DateUtils;
 import android.util.Base64;
 import android.util.Log;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.location.nano.GnssLogsProto.GnssLog;
 import com.android.internal.location.nano.GnssLogsProto.PowerMetrics;
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -540,7 +540,7 @@
             }
             int signalLevel = getSignalLevel(avgCn0);
             if (signalLevel != mLastSignalLevel) {
-                StatsLog.write(StatsLog.GPS_SIGNAL_QUALITY_CHANGED, signalLevel);
+                FrameworkStatsLog.write(FrameworkStatsLog.GPS_SIGNAL_QUALITY_CHANGED, signalLevel);
                 mLastSignalLevel = signalLevel;
             }
             try {
diff --git a/location/lib/java/com/android/location/provider/LocationProviderBase.java b/location/lib/java/com/android/location/provider/LocationProviderBase.java
index f67d08e..bd29d8a 100644
--- a/location/lib/java/com/android/location/provider/LocationProviderBase.java
+++ b/location/lib/java/com/android/location/provider/LocationProviderBase.java
@@ -224,6 +224,19 @@
     public void reportLocation(Location location) {
         ILocationProviderManager manager = mManager;
         if (manager != null) {
+            // remove deprecated extras to save on serialization
+            Bundle extras = location.getExtras();
+            if (extras != null && (extras.containsKey("noGPSLocation")
+                    || extras.containsKey("coarseLocation"))) {
+                location = new Location(location);
+                extras = location.getExtras();
+                extras.remove("noGPSLocation");
+                extras.remove("coarseLocation");
+                if (extras.isEmpty()) {
+                    location.setExtras(null);
+                }
+            }
+
             try {
                 manager.onReportLocation(location);
             } catch (RemoteException | RuntimeException e) {
diff --git a/media/TEST_MAPPING b/media/TEST_MAPPING
new file mode 100644
index 0000000..6dc0c6f
--- /dev/null
+++ b/media/TEST_MAPPING
@@ -0,0 +1,32 @@
+{
+  "presubmit": [
+    {
+      "name": "GtsMediaTestCases",
+      "options" : [
+        {
+	  "include-annotation": "android.platform.test.annotations.Presubmit"
+        },
+        {
+          "include-filter": "com.google.android.media.gts.WidevineGenericOpsTests"
+        }
+      ]
+    },
+    {
+      "name": "GtsExoPlayerTestCases",
+      "options" : [
+        {
+	  "include-annotation": "android.platform.test.annotations.SocPresubmit"
+        },
+        {
+          "include-filter": "com.google.android.exoplayer.gts.DashTest#testWidevine23FpsH264Fixed"
+        }
+      ]
+    }
+  ],
+  "imports": [
+    {
+      "path": "frameworks/av/drm/mediadrm/plugins"
+    }
+  ]
+}
+
diff --git a/media/java/android/media/AudioAttributes.java b/media/java/android/media/AudioAttributes.java
index 114c0f1..fe0c2d2 100644
--- a/media/java/android/media/AudioAttributes.java
+++ b/media/java/android/media/AudioAttributes.java
@@ -1427,7 +1427,10 @@
         }
     }
 
-    static int capturePolicyToFlags(@CapturePolicy int capturePolicy, int flags) {
+    /**
+     * @hide
+     */
+    public static int capturePolicyToFlags(@CapturePolicy int capturePolicy, int flags) {
         switch (capturePolicy) {
             case ALLOW_CAPTURE_BY_NONE:
                 flags |= FLAG_NO_MEDIA_PROJECTION | FLAG_NO_SYSTEM_CAPTURE;
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/media/java/android/media/AudioDevice.aidl
similarity index 94%
rename from media/java/android/media/AudioDeviceAddress.aidl
rename to media/java/android/media/AudioDevice.aidl
index 6a1a7f7..02071e5 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/media/java/android/media/AudioDevice.aidl
@@ -15,4 +15,4 @@
 
 package android.media;
 
-parcelable AudioDeviceAddress;
+parcelable AudioDevice;
diff --git a/media/java/android/media/AudioDeviceAddress.java b/media/java/android/media/AudioDevice.java
similarity index 84%
rename from media/java/android/media/AudioDeviceAddress.java
rename to media/java/android/media/AudioDevice.java
index 3d8fc37..31ecc7b 100644
--- a/media/java/android/media/AudioDeviceAddress.java
+++ b/media/java/android/media/AudioDevice.java
@@ -28,7 +28,7 @@
 
 /**
  * @hide
- * Class to represent device type (speaker, headset...), address and role (input, output)
+ * Class to represent device type (speaker, headset...), address (if known) and role (input, output)
  * of an audio device.
  * <p>Unlike {@link AudioDeviceInfo}, the device
  * doesn't need to be connected to be uniquely identified, it can
@@ -39,7 +39,7 @@
  * permission, APIs using one rely on MODIFY_AUDIO_ROUTING.
  */
 @SystemApi
-public final class AudioDeviceAddress implements Parcelable {
+public final class AudioDevice implements Parcelable {
 
     /**
      * A role identifying input devices, such as microphones.
@@ -78,7 +78,7 @@
      *                   type and address.
      */
     @SystemApi
-    public AudioDeviceAddress(@NonNull AudioDeviceInfo deviceInfo) {
+    public AudioDevice(@NonNull AudioDeviceInfo deviceInfo) {
         Objects.requireNonNull(deviceInfo);
         mRole = deviceInfo.isSink() ? ROLE_OUTPUT : ROLE_INPUT;
         mType = deviceInfo.getType();
@@ -93,7 +93,7 @@
      * @param address the address of the device, or an empty string for devices without one
      */
     @SystemApi
-    public AudioDeviceAddress(@Role int role, @AudioDeviceInfo.AudioDeviceType int type,
+    public AudioDevice(@Role int role, @AudioDeviceInfo.AudioDeviceType int type,
                               @NonNull String address) {
         Objects.requireNonNull(address);
         if (role != ROLE_OUTPUT && role != ROLE_INPUT) {
@@ -111,7 +111,7 @@
         mAddress = address;
     }
 
-    /*package*/ AudioDeviceAddress(int nativeType, @NonNull String address) {
+    /*package*/ AudioDevice(int nativeType, @NonNull String address) {
         mRole = (nativeType & AudioSystem.DEVICE_BIT_IN) != 0 ? ROLE_INPUT : ROLE_OUTPUT;
         mType = AudioDeviceInfo.convertInternalDeviceToDeviceType(nativeType);
         mAddress = address;
@@ -157,7 +157,7 @@
         if (this == o) return true;
         if (o == null || getClass() != o.getClass()) return false;
 
-        AudioDeviceAddress that = (AudioDeviceAddress) o;
+        AudioDevice that = (AudioDevice) o;
         return ((mRole == that.mRole)
                 && (mType == that.mType)
                 && mAddress.equals(that.mAddress));
@@ -170,7 +170,7 @@
 
     @Override
     public String toString() {
-        return new String("AudioDeviceAddress:"
+        return new String("AudioDevice:"
                 + " role:" + roleToString(mRole)
                 + " type:" + (mRole == ROLE_OUTPUT ? AudioSystem.getOutputDeviceName(
                         AudioDeviceInfo.convertDeviceTypeToInternalDevice(mType))
@@ -191,25 +191,25 @@
         dest.writeString(mAddress);
     }
 
-    private AudioDeviceAddress(@NonNull Parcel in) {
+    private AudioDevice(@NonNull Parcel in) {
         mRole = in.readInt();
         mType = in.readInt();
         mAddress = in.readString();
     }
 
-    public static final @NonNull Parcelable.Creator<AudioDeviceAddress> CREATOR =
-            new Parcelable.Creator<AudioDeviceAddress>() {
+    public static final @NonNull Parcelable.Creator<AudioDevice> CREATOR =
+            new Parcelable.Creator<AudioDevice>() {
         /**
-         * Rebuilds an AudioDeviceAddress previously stored with writeToParcel().
-         * @param p Parcel object to read the AudioDeviceAddress from
-         * @return a new AudioDeviceAddress created from the data in the parcel
+         * Rebuilds an AudioDevice previously stored with writeToParcel().
+         * @param p Parcel object to read the AudioDevice from
+         * @return a new AudioDevice created from the data in the parcel
          */
-        public AudioDeviceAddress createFromParcel(Parcel p) {
-            return new AudioDeviceAddress(p);
+        public AudioDevice createFromParcel(Parcel p) {
+            return new AudioDevice(p);
         }
 
-        public AudioDeviceAddress[] newArray(int size) {
-            return new AudioDeviceAddress[size];
+        public AudioDevice[] newArray(int size) {
+            return new AudioDevice[size];
         }
     };
 }
diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java
index 861b76d..112bb9c 100644
--- a/media/java/android/media/AudioManager.java
+++ b/media/java/android/media/AudioManager.java
@@ -17,6 +17,7 @@
 
 package android.media;
 
+import android.annotation.CallbackExecutor;
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.annotation.NonNull;
@@ -1547,23 +1548,22 @@
      *     {@link AudioAttributes#ALLOW_CAPTURE_BY_ALL},
      *     {@link AudioAttributes#ALLOW_CAPTURE_BY_SYSTEM},
      *     {@link AudioAttributes#ALLOW_CAPTURE_BY_NONE}.
-     * @throws IllegalArgumentException if the argument is not a valid value.
+     * @throws RuntimeException if the argument is not a valid value.
      */
     public void setAllowedCapturePolicy(@AudioAttributes.CapturePolicy int capturePolicy) {
-        int flags = AudioAttributes.capturePolicyToFlags(capturePolicy, 0x0);
-        // TODO: got trough AudioService and save a cache to restore in case of AP crash
         // TODO: also pass the package in case multiple packages have the same UID
-        int result = AudioSystem.setAllowedCapturePolicy(Process.myUid(), flags);
-        if (result != AudioSystem.AUDIO_STATUS_OK) {
-            Log.e(TAG, "Could not setAllowedCapturePolicy: " + result);
-            return;
+        final IAudioService service = getService();
+        try {
+            int result = service.setAllowedCapturePolicy(capturePolicy);
+            if (result != AudioSystem.AUDIO_STATUS_OK) {
+                Log.e(TAG, "Could not setAllowedCapturePolicy: " + result);
+                return;
+            }
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
         }
-        mCapturePolicy = capturePolicy;
     }
 
-    @AudioAttributes.CapturePolicy
-    private int mCapturePolicy = AudioAttributes.ALLOW_CAPTURE_BY_ALL;
-
     /**
      * Return the capture policy.
      * @return the capture policy set by {@link #setAllowedCapturePolicy(int)} or
@@ -1571,7 +1571,13 @@
      */
     @AudioAttributes.CapturePolicy
     public int getAllowedCapturePolicy() {
-        return mCapturePolicy;
+        int result = AudioAttributes.ALLOW_CAPTURE_BY_ALL;
+        try {
+            result = getService().getAllowedCapturePolicy();
+        } catch (RemoteException e) {
+            Log.e(TAG, "Failed to query allowed capture policy: " + e);
+        }
+        return result;
     }
 
     //====================================================================
@@ -1591,7 +1597,7 @@
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
     public boolean setPreferredDeviceForStrategy(@NonNull AudioProductStrategy strategy,
-            @NonNull AudioDeviceAddress device) {
+            @NonNull AudioDevice device) {
         Objects.requireNonNull(strategy);
         Objects.requireNonNull(device);
         try {
@@ -1606,7 +1612,7 @@
     /**
      * @hide
      * Removes the preferred audio device previously set with
-     * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceAddress)}.
+     * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice)}.
      * @param strategy the audio strategy whose routing will be affected
      * @return true if the operation was successful, false otherwise (invalid strategy, or no
      *     device set for example)
@@ -1627,14 +1633,14 @@
     /**
      * @hide
      * Return the preferred device for an audio strategy, previously set with
-     * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceAddress)}
+     * {@link #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice)}
      * @param strategy the strategy to query
      * @return the preferred device for that strategy, or null if none was ever set or if the
      *    strategy is invalid
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
-    public @Nullable AudioDeviceAddress getPreferredDeviceForStrategy(
+    public @Nullable AudioDevice getPreferredDeviceForStrategy(
             @NonNull AudioProductStrategy strategy) {
         Objects.requireNonNull(strategy);
         try {
@@ -1644,6 +1650,179 @@
         }
     }
 
+    /**
+     * @hide
+     * Interface to be notified of changes in the preferred audio device set for a given audio
+     * strategy.
+     * @see #setPreferredDeviceForStrategy(AudioProductStrategy, AudioDevice)
+     * @see #removePreferredDeviceForStrategy(AudioProductStrategy)
+     * @see #getPreferredDeviceForStrategy(AudioProductStrategy)
+     */
+    @SystemApi
+    public interface OnPreferredDeviceForStrategyChangedListener {
+        /**
+         * Called on the listener to indicate that the preferred audio device for the given
+         * strategy has changed.
+         * @param strategy the {@link AudioProductStrategy} whose preferred device changed
+         * @param device <code>null</code> if the preferred device was removed, or the newly set
+         *              preferred audio device
+         */
+        void onPreferredDeviceForStrategyChanged(@NonNull AudioProductStrategy strategy,
+                @Nullable AudioDevice device);
+    }
+
+    /**
+     * @hide
+     * Adds a listener for being notified of changes to the strategy-preferred audio device.
+     * @param executor
+     * @param listener
+     * @throws SecurityException if the caller doesn't hold the required permission
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
+    public void addOnPreferredDeviceForStrategyChangedListener(
+            @NonNull @CallbackExecutor Executor executor,
+            @NonNull OnPreferredDeviceForStrategyChangedListener listener)
+            throws SecurityException {
+        Objects.requireNonNull(executor);
+        Objects.requireNonNull(listener);
+        synchronized (mPrefDevListenerLock) {
+            if (hasPrefDevListener(listener)) {
+                throw new IllegalArgumentException(
+                        "attempt to call addOnPreferredDeviceForStrategyChangedListener() "
+                                + "on a previously registered listener");
+            }
+            // lazy initialization of the list of strategy-preferred device listener
+            if (mPrefDevListeners == null) {
+                mPrefDevListeners = new ArrayList<>();
+            }
+            final int oldCbCount = mPrefDevListeners.size();
+            mPrefDevListeners.add(new PrefDevListenerInfo(listener, executor));
+            if (oldCbCount == 0 && mPrefDevListeners.size() > 0) {
+                // register binder for callbacks
+                if (mPrefDevDispatcherStub == null) {
+                    mPrefDevDispatcherStub = new StrategyPreferredDeviceDispatcherStub();
+                }
+                try {
+                    getService().registerStrategyPreferredDeviceDispatcher(mPrefDevDispatcherStub);
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
+                }
+            }
+        }
+    }
+
+    /**
+     * @hide
+     * Removes a previously added listener of changes to the strategy-preferred audio device.
+     * @param listener
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
+    public void removeOnPreferredDeviceForStrategyChangedListener(
+            @NonNull OnPreferredDeviceForStrategyChangedListener listener) {
+        Objects.requireNonNull(listener);
+        synchronized (mPrefDevListenerLock) {
+            if (!removePrefDevListener(listener)) {
+                throw new IllegalArgumentException(
+                        "attempt to call removeOnPreferredDeviceForStrategyChangedListener() "
+                                + "on an unregistered listener");
+            }
+            if (mPrefDevListeners.size() == 0) {
+                // unregister binder for callbacks
+                try {
+                    getService().unregisterStrategyPreferredDeviceDispatcher(
+                            mPrefDevDispatcherStub);
+                } catch (RemoteException e) {
+                    throw e.rethrowFromSystemServer();
+                } finally {
+                    mPrefDevDispatcherStub = null;
+                    mPrefDevListeners = null;
+                }
+            }
+        }
+    }
+
+
+    private final Object mPrefDevListenerLock = new Object();
+    /**
+     * List of listeners for preferred device for strategy and their associated Executor.
+     * List is lazy-initialized on first registration
+     */
+    @GuardedBy("mPrefDevListenerLock")
+    private @Nullable ArrayList<PrefDevListenerInfo> mPrefDevListeners;
+
+    private static class PrefDevListenerInfo {
+        final @NonNull OnPreferredDeviceForStrategyChangedListener mListener;
+        final @NonNull Executor mExecutor;
+        PrefDevListenerInfo(OnPreferredDeviceForStrategyChangedListener listener, Executor exe) {
+            mListener = listener;
+            mExecutor = exe;
+        }
+    }
+
+    @GuardedBy("mPrefDevListenerLock")
+    private StrategyPreferredDeviceDispatcherStub mPrefDevDispatcherStub;
+
+    private final class StrategyPreferredDeviceDispatcherStub
+            extends IStrategyPreferredDeviceDispatcher.Stub {
+
+        @Override
+        public void dispatchPrefDeviceChanged(int strategyId, @Nullable AudioDevice device) {
+            // make a shallow copy of listeners so callback is not executed under lock
+            final ArrayList<PrefDevListenerInfo> prefDevListeners;
+            synchronized (mPrefDevListenerLock) {
+                if (mPrefDevListeners == null || mPrefDevListeners.size() == 0) {
+                    return;
+                }
+                prefDevListeners = (ArrayList<PrefDevListenerInfo>) mPrefDevListeners.clone();
+            }
+            final AudioProductStrategy strategy =
+                    AudioProductStrategy.getAudioProductStrategyWithId(strategyId);
+            final long ident = Binder.clearCallingIdentity();
+            try {
+                for (PrefDevListenerInfo info : prefDevListeners) {
+                    info.mExecutor.execute(() ->
+                            info.mListener.onPreferredDeviceForStrategyChanged(strategy, device));
+                }
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+            }
+        }
+    }
+
+    @GuardedBy("mPrefDevListenerLock")
+    private @Nullable PrefDevListenerInfo getPrefDevListenerInfo(
+            OnPreferredDeviceForStrategyChangedListener listener) {
+        if (mPrefDevListeners == null) {
+            return null;
+        }
+        for (PrefDevListenerInfo info : mPrefDevListeners) {
+            if (info.mListener == listener) {
+                return info;
+            }
+        }
+        return null;
+    }
+
+    @GuardedBy("mPrefDevListenerLock")
+    private boolean hasPrefDevListener(OnPreferredDeviceForStrategyChangedListener listener) {
+        return getPrefDevListenerInfo(listener) != null;
+    }
+
+    @GuardedBy("mPrefDevListenerLock")
+    /**
+     * @return true if the listener was removed from the list
+     */
+    private boolean removePrefDevListener(OnPreferredDeviceForStrategyChangedListener listener) {
+        final PrefDevListenerInfo infoToRemove = getPrefDevListenerInfo(listener);
+        if (infoToRemove != null) {
+            mPrefDevListeners.remove(infoToRemove);
+            return true;
+        }
+        return false;
+    }
+
     //====================================================================
     // Offload query
     /**
@@ -4374,7 +4553,7 @@
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
-    public @NonNull List<AudioDeviceAddress> getDevicesForAttributes(
+    public @NonNull List<AudioDevice> getDevicesForAttributes(
             @NonNull AudioAttributes attributes) {
         Objects.requireNonNull(attributes);
         final IAudioService service = getService();
diff --git a/media/java/android/media/AudioRecordingConfiguration.java b/media/java/android/media/AudioRecordingConfiguration.java
index f3613d3..42841d1 100644
--- a/media/java/android/media/AudioRecordingConfiguration.java
+++ b/media/java/android/media/AudioRecordingConfiguration.java
@@ -18,6 +18,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -229,13 +230,19 @@
      * <p>This information is only available if the caller has the
      * {@link android.Manifest.permission.MODIFY_AUDIO_ROUTING}
      * permission.
-     * <br>The result is -1 without the permission.
      * @return the user id
+     * @throws SecurityException Thrown if the caller is missing the MODIFY_AUDIO_ROUTING permission
      *
      * @hide
      */
     @SystemApi
-    public int getClientUid() { return mClientUid; }
+    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
+    public int getClientUid() {
+        if (mClientUid == -1) {
+            throw new SecurityException("MODIFY_AUDIO_ROUTING permission is missing");
+        }
+        return mClientUid;
+    }
 
     /**
      * Returns information about the audio input device used for this recording.
diff --git a/media/java/android/media/AudioSystem.java b/media/java/android/media/AudioSystem.java
index 02cb8aa..0a0f7f6 100644
--- a/media/java/android/media/AudioSystem.java
+++ b/media/java/android/media/AudioSystem.java
@@ -1085,18 +1085,18 @@
      * @return an empty list if there was an issue with the request, a list of audio devices
      *   otherwise (typically one device, except for duplicated paths).
      */
-    public static @NonNull ArrayList<AudioDeviceAddress> getDevicesForAttributes(
+    public static @NonNull ArrayList<AudioDevice> getDevicesForAttributes(
             @NonNull AudioAttributes attributes) {
         Objects.requireNonNull(attributes);
-        final AudioDeviceAddress[] devices = new AudioDeviceAddress[MAX_DEVICE_ROUTING];
+        final AudioDevice[] devices = new AudioDevice[MAX_DEVICE_ROUTING];
         final int res = getDevicesForAttributes(attributes, devices);
-        final ArrayList<AudioDeviceAddress> routeDevices = new ArrayList<>();
+        final ArrayList<AudioDevice> routeDevices = new ArrayList<>();
         if (res != SUCCESS) {
             Log.e(TAG, "error " + res + " in getDevicesForAttributes for " + attributes);
             return routeDevices;
         }
 
-        for (AudioDeviceAddress device : devices) {
+        for (AudioDevice device : devices) {
             if (device != null) {
                 routeDevices.add(device);
             }
@@ -1106,12 +1106,12 @@
 
     /**
      * Maximum number of audio devices a track is ever routed to, determines the size of the
-     * array passed to {@link #getDevicesForAttributes(AudioAttributes, AudioDeviceAddress[])}
+     * array passed to {@link #getDevicesForAttributes(AudioAttributes, AudioDevice[])}
      */
     private static final int MAX_DEVICE_ROUTING = 4;
 
     private static native int getDevicesForAttributes(@NonNull AudioAttributes aa,
-                                                      @NonNull AudioDeviceAddress[] devices);
+                                                      @NonNull AudioDevice[] devices);
 
     /** @hide returns true if master mono is enabled. */
     public static native boolean getMasterMono();
@@ -1246,7 +1246,7 @@
      * @return {@link #SUCCESS} if successfully set
      */
     public static int setPreferredDeviceForStrategy(
-            int strategy, @NonNull AudioDeviceAddress device) {
+            int strategy, @NonNull AudioDevice device) {
         return setPreferredDeviceForStrategy(strategy,
                 AudioDeviceInfo.convertDeviceTypeToInternalDevice(device.getType()),
                 device.getAddress());
@@ -1277,7 +1277,7 @@
      *     and written to the array
      */
     public static native int getPreferredDeviceForStrategy(int strategy,
-                                                           AudioDeviceAddress[] device);
+                                                           AudioDevice[] device);
 
     // Items shared with audio service
 
diff --git a/media/java/android/media/ExifInterface.java b/media/java/android/media/ExifInterface.java
index 767b67b..d237975 100644
--- a/media/java/android/media/ExifInterface.java
+++ b/media/java/android/media/ExifInterface.java
@@ -1457,6 +1457,9 @@
     private int mRw2JpgFromRawOffset;
     private boolean mIsSupportedFile;
     private boolean mModified;
+    // XMP data can be contained as either part of the EXIF data (tag number 700), or as a
+    // separate data marker (a separate MARKER_APP1).
+    private boolean mXmpIsFromSeparateMarker;
 
     // Pattern to check non zero timestamp
     private static final Pattern sNonZeroTimePattern = Pattern.compile(".*[1-9].*");
@@ -2837,10 +2840,12 @@
                         final long offset = start + IDENTIFIER_XMP_APP1.length;
                         final byte[] value = Arrays.copyOfRange(bytes,
                                 IDENTIFIER_XMP_APP1.length, bytes.length);
-
+                        // TODO: check if ignoring separate XMP data when tag 700 already exists is
+                        //  valid.
                         if (getAttribute(TAG_XMP) == null) {
                             mAttributes[IFD_TYPE_PRIMARY].put(TAG_XMP, new ExifAttribute(
                                     IFD_FORMAT_BYTE, value.length, offset, value));
+                            mXmpIsFromSeparateMarker = true;
                         }
                     }
                     break;
@@ -3445,11 +3450,24 @@
         }
         dataOutputStream.writeByte(MARKER_SOI);
 
+        // Remove XMP data if it is from a separate marker (IDENTIFIER_XMP_APP1, not
+        // IDENTIFIER_EXIF_APP1)
+        // Will re-add it later after the rest of the file is written
+        ExifAttribute xmpAttribute = null;
+        if (getAttribute(TAG_XMP) != null && mXmpIsFromSeparateMarker) {
+            xmpAttribute = (ExifAttribute) mAttributes[IFD_TYPE_PRIMARY].remove(TAG_XMP);
+        }
+
         // Write EXIF APP1 segment
         dataOutputStream.writeByte(MARKER);
         dataOutputStream.writeByte(MARKER_APP1);
         writeExifSegment(dataOutputStream);
 
+        // Re-add previously removed XMP data.
+        if (xmpAttribute != null) {
+            mAttributes[IFD_TYPE_PRIMARY].put(TAG_XMP, xmpAttribute);
+        }
+
         byte[] bytes = new byte[4096];
 
         while (true) {
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index 1f97be5..27bf3fe 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -18,7 +18,7 @@
 
 import android.bluetooth.BluetoothDevice;
 import android.media.AudioAttributes;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioFocusInfo;
 import android.media.AudioPlaybackConfiguration;
 import android.media.AudioRecordingConfiguration;
@@ -29,6 +29,7 @@
 import android.media.IPlaybackConfigDispatcher;
 import android.media.IRecordingConfigDispatcher;
 import android.media.IRingtonePlayer;
+import android.media.IStrategyPreferredDeviceDispatcher;
 import android.media.IVolumeController;
 import android.media.IVolumeController;
 import android.media.PlayerBase;
@@ -274,13 +275,22 @@
 
     boolean isCallScreeningModeSupported();
 
-    int setPreferredDeviceForStrategy(in int strategy, in AudioDeviceAddress device);
+    int setPreferredDeviceForStrategy(in int strategy, in AudioDevice device);
 
     int removePreferredDeviceForStrategy(in int strategy);
 
-    AudioDeviceAddress getPreferredDeviceForStrategy(in int strategy);
+    AudioDevice getPreferredDeviceForStrategy(in int strategy);
 
-    List<AudioDeviceAddress> getDevicesForAttributes(in AudioAttributes attributes);
+    List<AudioDevice> getDevicesForAttributes(in AudioAttributes attributes);
+
+    int setAllowedCapturePolicy(in int capturePolicy);
+
+    int getAllowedCapturePolicy();
+
+    void registerStrategyPreferredDeviceDispatcher(IStrategyPreferredDeviceDispatcher dispatcher);
+
+    oneway void unregisterStrategyPreferredDeviceDispatcher(
+            IStrategyPreferredDeviceDispatcher dispatcher);
 
     // WARNING: read warning at top of file, new methods that need to be used by native
     // code via IAudioManager.h need to be added to the top section.
diff --git a/media/java/android/media/IMediaRoute2Provider.aidl b/media/java/android/media/IMediaRoute2Provider.aidl
index a25aff6..0c64564 100644
--- a/media/java/android/media/IMediaRoute2Provider.aidl
+++ b/media/java/android/media/IMediaRoute2Provider.aidl
@@ -18,6 +18,7 @@
 
 import android.content.Intent;
 import android.media.IMediaRoute2ProviderClient;
+import android.media.RouteDiscoveryPreference;
 import android.os.Bundle;
 
 /**
@@ -28,12 +29,13 @@
     void requestCreateSession(String packageName, String routeId, long requestId,
             in @nullable Bundle sessionHints);
     void releaseSession(String sessionId);
+    void updateDiscoveryPreference(in RouteDiscoveryPreference discoveryPreference);
 
     void selectRoute(String sessionId, String routeId);
     void deselectRoute(String sessionId, String routeId);
     void transferToRoute(String sessionId, String routeId);
 
     void notifyControlRequestSent(String id, in Intent request);
-    void requestSetVolume(String id, int volume);
-    void requestUpdateVolume(String id, int delta);
+    void setRouteVolume(String routeId, int volume);
+    void setSessionVolume(String sessionId, int volume);
 }
diff --git a/media/java/android/media/IMediaRouterService.aidl b/media/java/android/media/IMediaRouterService.aidl
index dac0fba..f919dce 100644
--- a/media/java/android/media/IMediaRouterService.aidl
+++ b/media/java/android/media/IMediaRouterService.aidl
@@ -51,8 +51,8 @@
     void unregisterClient2(IMediaRouter2Client client);
     void sendControlRequest(IMediaRouter2Client client, in MediaRoute2Info route,
             in Intent request);
-    void requestSetVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume);
-    void requestUpdateVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int direction);
+    void setRouteVolume2(IMediaRouter2Client client, in MediaRoute2Info route, int volume);
+    void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume);
 
     void requestCreateSession(IMediaRouter2Client client, in MediaRoute2Info route, int requestId,
             in @nullable Bundle sessionHints);
@@ -68,10 +68,10 @@
     void requestCreateClientSession(IMediaRouter2Manager manager, String packageName,
         in @nullable MediaRoute2Info route, int requestId);
 
-    void requestSetVolume2Manager(IMediaRouter2Manager manager,
+    void setRouteVolume2Manager(IMediaRouter2Manager manager,
             in MediaRoute2Info route, int volume);
-    void requestUpdateVolume2Manager(IMediaRouter2Manager manager,
-            in MediaRoute2Info route, int direction);
+    void setSessionVolume2Manager(IMediaRouter2Manager manager,
+            String sessionId, int volume);
 
     List<RoutingSessionInfo> getActiveSessions(IMediaRouter2Manager manager);
     void selectClientRoute(IMediaRouter2Manager manager,
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl
similarity index 61%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl
index f5e2405..6db9e52 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/IStrategyPreferredDeviceDispatcher.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,17 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media;
 
-parcelable PhoneTimeSuggestion;
+import android.media.AudioDevice;
+
+/**
+ * AIDL for AudioService to signal audio strategy-preferred device updates.
+ *
+ * {@hide}
+ */
+oneway interface IStrategyPreferredDeviceDispatcher {
+
+    void dispatchPrefDeviceChanged(int strategyId, in AudioDevice device);
+
+}
diff --git a/media/java/android/media/MediaRoute2Info.java b/media/java/android/media/MediaRoute2Info.java
index dd01243..0e88c75 100644
--- a/media/java/android/media/MediaRoute2Info.java
+++ b/media/java/android/media/MediaRoute2Info.java
@@ -21,6 +21,7 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.Parcel;
@@ -197,6 +198,7 @@
     final List<String> mFeatures;
     @DeviceType
     final int mDeviceType;
+    final boolean mIsSystem;
     final Uri mIconUri;
     final CharSequence mDescription;
     @ConnectionState
@@ -213,6 +215,7 @@
         mName = builder.mName;
         mFeatures = builder.mFeatures;
         mDeviceType = builder.mDeviceType;
+        mIsSystem = builder.mIsSystem;
         mIconUri = builder.mIconUri;
         mDescription = builder.mDescription;
         mConnectionState = builder.mConnectionState;
@@ -229,6 +232,7 @@
         mName = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mFeatures = in.createStringArrayList();
         mDeviceType = in.readInt();
+        mIsSystem = in.readBoolean();
         mIconUri = in.readParcelable(null);
         mDescription = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(in);
         mConnectionState = in.readInt();
@@ -287,6 +291,17 @@
     }
 
     /**
+     * Returns whether the route is a system route or not.
+     * <p>
+     * System routes are media routes directly controlled by the system
+     * such as phone speaker, wired headset, and Bluetooth devices.
+     * </p>
+     */
+    public boolean isSystemRoute() {
+        return mIsSystem;
+    }
+
+    /**
      * Gets the URI of the icon representing this route.
      * <p>
      * This icon will be used in picker UIs if available.
@@ -360,6 +375,7 @@
      * @hide
      */
     @NonNull
+    @TestApi
     public String getOriginalId() {
         return mId;
     }
@@ -423,6 +439,7 @@
                 && Objects.equals(mName, other.mName)
                 && Objects.equals(mFeatures, other.mFeatures)
                 && (mDeviceType == other.mDeviceType)
+                && (mIsSystem == other.mIsSystem)
                 && Objects.equals(mIconUri, other.mIconUri)
                 && Objects.equals(mDescription, other.mDescription)
                 && (mConnectionState == other.mConnectionState)
@@ -436,7 +453,7 @@
     @Override
     public int hashCode() {
         // Note: mExtras is not included.
-        return Objects.hash(mId, mName, mFeatures, mDeviceType, mIconUri, mDescription,
+        return Objects.hash(mId, mName, mFeatures, mDeviceType, mIsSystem, mIconUri, mDescription,
                 mConnectionState, mClientPackageName, mVolumeHandling, mVolumeMax, mVolume,
                 mProviderId);
     }
@@ -473,6 +490,7 @@
         TextUtils.writeToParcel(mName, dest, flags);
         dest.writeStringList(mFeatures);
         dest.writeInt(mDeviceType);
+        dest.writeBoolean(mIsSystem);
         dest.writeParcelable(mIconUri, flags);
         TextUtils.writeToParcel(mDescription, dest, flags);
         dest.writeInt(mConnectionState);
@@ -494,6 +512,7 @@
 
         @DeviceType
         int mDeviceType = DEVICE_TYPE_UNKNOWN;
+        boolean mIsSystem;
         Uri mIconUri;
         CharSequence mDescription;
         @ConnectionState
@@ -540,6 +559,7 @@
             mName = routeInfo.mName;
             mFeatures = new ArrayList<>(routeInfo.mFeatures);
             mDeviceType = routeInfo.mDeviceType;
+            mIsSystem = routeInfo.mIsSystem;
             mIconUri = routeInfo.mIconUri;
             mDescription = routeInfo.mDescription;
             mConnectionState = routeInfo.mConnectionState;
@@ -608,6 +628,16 @@
         }
 
         /**
+         * Sets whether the route is a system route or not.
+         * @hide
+         */
+        @NonNull
+        public Builder setSystemRoute(boolean isSystem) {
+            mIsSystem = isSystem;
+            return this;
+        }
+
+        /**
          * Sets the URI of the icon representing this route.
          * <p>
          * This icon will be used in picker UIs if available.
diff --git a/media/java/android/media/MediaRoute2ProviderInfo.java b/media/java/android/media/MediaRoute2ProviderInfo.java
index c9a2ec7..afe002e 100644
--- a/media/java/android/media/MediaRoute2ProviderInfo.java
+++ b/media/java/android/media/MediaRoute2ProviderInfo.java
@@ -180,6 +180,23 @@
         }
 
         /**
+         * Sets whether the provider provides system routes or not
+         */
+        @NonNull
+        public Builder setSystemRouteProvider(boolean isSystem) {
+            int count = mRoutes.size();
+            for (int i = 0; i < count; i++) {
+                MediaRoute2Info route = mRoutes.valueAt(i);
+                if (route.isSystemRoute() != isSystem) {
+                    mRoutes.setValueAt(i, new MediaRoute2Info.Builder(route)
+                            .setSystemRoute(isSystem)
+                            .build());
+                }
+            }
+            return this;
+        }
+
+        /**
          * Adds a route to the provider
          */
         @NonNull
diff --git a/media/java/android/media/MediaRoute2ProviderService.java b/media/java/android/media/MediaRoute2ProviderService.java
index e39b7bc..aac195d 100644
--- a/media/java/android/media/MediaRoute2ProviderService.java
+++ b/media/java/android/media/MediaRoute2ProviderService.java
@@ -46,13 +46,20 @@
 /**
  * Base class for media route provider services.
  * <p>
+ * Media route provider services are used to publish {@link MediaRoute2Info media routes} such as
+ * speakers, TVs, etc. The routes are published by calling {@link #notifyRoutes(Collection)}.
+ * Media apps which use {@link MediaRouter2} can request to play their media on the routes.
+ * </p><p>
+ * When {@link MediaRouter2 media router} wants to play media on a route,
+ * {@link #onCreateSession(String, String, long, Bundle)} will be called to handle the request.
+ * A session can be considered as a group of currently selected routes for each connection.
+ * Create and manage the sessions by yourself, and notify the {@link RoutingSessionInfo
+ * session infos} when there are any changes.
+ * </p><p>
  * The system media router service will bind to media route provider services when a
  * {@link RouteDiscoveryPreference discovery preference} is registered via
- * a {@link MediaRouter2 media router} by an application.
- * </p><p>
- * To implement your own media route provider service, extend this class and
- * override {@link #onDiscoveryPreferenceChanged(RouteDiscoveryPreference)} to publish
- * {@link MediaRoute2Info routes}.
+ * a {@link MediaRouter2 media router} by an application. See
+ * {@link #onDiscoveryPreferenceChanged(RouteDiscoveryPreference)} for the details.
  * </p>
  */
 public abstract class MediaRoute2ProviderService extends Service {
@@ -115,23 +122,25 @@
      * @hide
      */
     //TODO: Discuss what to use for request (e.g., Intent? Request class?)
-    public abstract void onControlRequest(@NonNull String routeId, @NonNull Intent request);
+    public void onControlRequest(@NonNull String routeId, @NonNull Intent request) {}
 
     /**
-     * Called when requestSetVolume is called on a route of the provider
+     * Called when a volume setting is requested on a route of the provider
      *
      * @param routeId the id of the route
      * @param volume the target volume
+     * @see MediaRoute2Info#getVolumeMax()
      */
-    public abstract void onSetVolume(@NonNull String routeId, int volume);
+    public abstract void onSetRouteVolume(@NonNull String routeId, int volume);
 
     /**
-     * Called when requestUpdateVolume is called on a route of the provider
+     * Called when {@link MediaRouter2.RoutingController#setVolume(int)} is called on
+     * a routing session of the provider
      *
-     * @param routeId id of the route
-     * @param delta the delta to add to the current volume
+     * @param sessionId the id of the routing session
+     * @param volume the target volume
      */
-    public abstract void onUpdateVolume(@NonNull String routeId, int delta);
+    public abstract void onSetSessionVolume(@NonNull String sessionId, int volume);
 
     /**
      * Gets information of the session with the given id.
@@ -370,7 +379,6 @@
      *
      * @param preference the new discovery preference
      */
-    // TODO: This method needs tests.
     public void onDiscoveryPreferenceChanged(@NonNull RouteDiscoveryPreference preference) {}
 
     /**
@@ -456,6 +464,16 @@
         }
 
         @Override
+        public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
+            if (!checkCallerisSystem()) {
+                return;
+            }
+            mHandler.sendMessage(obtainMessage(
+                    MediaRoute2ProviderService::onDiscoveryPreferenceChanged,
+                    MediaRoute2ProviderService.this, discoveryPreference));
+        }
+
+        @Override
         public void selectRoute(@NonNull String sessionId, String routeId) {
             if (!checkCallerisSystem()) {
                 return;
@@ -504,21 +522,21 @@
         }
 
         @Override
-        public void requestSetVolume(String routeId, int volume) {
+        public void setRouteVolume(String routeId, int volume) {
             if (!checkCallerisSystem()) {
                 return;
             }
-            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetVolume,
+            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetRouteVolume,
                     MediaRoute2ProviderService.this, routeId, volume));
         }
 
         @Override
-        public void requestUpdateVolume(String routeId, int delta) {
+        public void setSessionVolume(String sessionId, int volume) {
             if (!checkCallerisSystem()) {
                 return;
             }
-            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onUpdateVolume,
-                    MediaRoute2ProviderService.this, routeId, delta));
+            mHandler.sendMessage(obtainMessage(MediaRoute2ProviderService::onSetSessionVolume,
+                    MediaRoute2ProviderService.this, sessionId, volume));
         }
     }
 }
diff --git a/media/java/android/media/MediaRouter2.java b/media/java/android/media/MediaRouter2.java
index 7b9a44f..0e6ade5 100644
--- a/media/java/android/media/MediaRouter2.java
+++ b/media/java/android/media/MediaRouter2.java
@@ -182,11 +182,16 @@
                 Client2 client = new Client2();
                 try {
                     mMediaRouterService.registerClient2(client, mPackageName);
-                    updateDiscoveryRequestLocked();
-                    mMediaRouterService.setDiscoveryRequest2(client, mDiscoveryPreference);
                     mClient = client;
                 } catch (RemoteException ex) {
-                    Log.e(TAG, "Unable to register media router.", ex);
+                    Log.e(TAG, "registerRouteCallback: Unable to register client.", ex);
+                }
+            }
+            if (mClient != null && updateDiscoveryPreferenceIfNeededLocked()) {
+                try {
+                    mMediaRouterService.setDiscoveryRequest2(mClient, mDiscoveryPreference);
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "registerRouteCallback: Unable to set discovery request.");
                 }
             }
         }
@@ -209,28 +214,47 @@
         }
 
         synchronized (sRouterLock) {
-            if (mRouteCallbackRecords.size() == 0 && mClient != null) {
-                try {
-                    mMediaRouterService.unregisterClient2(mClient);
-                } catch (RemoteException ex) {
-                    Log.e(TAG, "Unable to unregister media router.", ex);
+            if (mClient != null) {
+                if (updateDiscoveryPreferenceIfNeededLocked()) {
+                    try {
+                        mMediaRouterService.setDiscoveryRequest2(mClient, mDiscoveryPreference);
+                    } catch (RemoteException ex) {
+                        Log.e(TAG, "unregisterRouteCallback: Unable to set discovery request.");
+                    }
                 }
-                //TODO: Clean up mRoutes. (onHandler?)
+                if (mRouteCallbackRecords.size() == 0) {
+                    try {
+                        mMediaRouterService.unregisterClient2(mClient);
+                    } catch (RemoteException ex) {
+                        Log.e(TAG, "Unable to unregister media router.", ex);
+                    }
+                }
+                mShouldUpdateRoutes = true;
                 mClient = null;
             }
         }
     }
 
-    private void updateDiscoveryRequestLocked() {
-        mDiscoveryPreference = new RouteDiscoveryPreference.Builder(
+    private boolean updateDiscoveryPreferenceIfNeededLocked() {
+        RouteDiscoveryPreference newDiscoveryPreference = new RouteDiscoveryPreference.Builder(
                 mRouteCallbackRecords.stream().map(record -> record.mPreference).collect(
                         Collectors.toList())).build();
+        if (Objects.equals(mDiscoveryPreference, newDiscoveryPreference)) {
+            return false;
+        }
+        mDiscoveryPreference = newDiscoveryPreference;
+        mShouldUpdateRoutes = true;
+        return true;
     }
 
     /**
      * Gets the unmodifiable list of {@link MediaRoute2Info routes} currently
      * known to the media router.
+     * <p>
+     * {@link MediaRoute2Info#isSystemRoute() System routes} such as phone speaker,
+     * Bluetooth devices are always included in the list.
      * Please note that the list can be changed before callbacks are invoked.
+     * </p>
      *
      * @return the list of routes that contains at least one of the route features in discovery
      * preferences registered by the application
@@ -243,7 +267,8 @@
 
                 List<MediaRoute2Info> filteredRoutes = new ArrayList<>();
                 for (MediaRoute2Info route : mRoutes.values()) {
-                    if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
+                    if (route.isSystemRoute()
+                            || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                         filteredRoutes.add(route);
                     }
                 }
@@ -307,12 +332,18 @@
      * with the given route.
      *
      * @param route the route you want to create a controller with.
+     * @throws IllegalArgumentException if the given route is
+     * {@link MediaRoute2Info#isSystemRoute() system route}
      *
      * @see RoutingControllerCallback#onControllerCreated
      * @see RoutingControllerCallback#onControllerCreationFailed
      */
     public void requestCreateController(@NonNull MediaRoute2Info route) {
         Objects.requireNonNull(route, "route must not be null");
+        if (route.isSystemRoute()) {
+            throw new IllegalArgumentException("Can't create a route controller with "
+                    + "a system route. Use getSystemController().");
+        }
         // TODO: Check the given route exists
 
         final int requestId;
@@ -415,7 +446,7 @@
      * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}.
      * @hide
      */
-    public void requestSetVolume(@NonNull MediaRoute2Info route, int volume) {
+    public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) {
         Objects.requireNonNull(route, "route must not be null");
 
         Client2 client;
@@ -424,32 +455,7 @@
         }
         if (client != null) {
             try {
-                mMediaRouterService.requestSetVolume2(client, route, volume);
-            } catch (RemoteException ex) {
-                Log.e(TAG, "Unable to send control request.", ex);
-            }
-        }
-    }
-
-    /**
-     * Requests an incremental volume update  for the route asynchronously.
-     * <p>
-     * It may have no effect if the route is currently not selected.
-     * </p>
-     *
-     * @param delta The delta to add to the current volume.
-     * @hide
-     */
-    public void requestUpdateVolume(@NonNull MediaRoute2Info route, int delta) {
-        Objects.requireNonNull(route, "route must not be null");
-
-        Client2 client;
-        synchronized (sRouterLock) {
-            client = mClient;
-        }
-        if (client != null) {
-            try {
-                mMediaRouterService.requestUpdateVolume2(client, route, delta);
+                mMediaRouterService.setRouteVolume2(client, route, volume);
             } catch (RemoteException ex) {
                 Log.e(TAG, "Unable to send control request.", ex);
             }
@@ -465,7 +471,8 @@
         synchronized (sRouterLock) {
             for (MediaRoute2Info route : routes) {
                 mRoutes.put(route.getId(), route);
-                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
+                if (route.isSystemRoute()
+                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                     addedRoutes.add(route);
                 }
             }
@@ -481,7 +488,8 @@
         synchronized (sRouterLock) {
             for (MediaRoute2Info route : routes) {
                 mRoutes.remove(route.getId());
-                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
+                if (route.isSystemRoute()
+                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                     removedRoutes.add(route);
                 }
             }
@@ -497,7 +505,8 @@
         synchronized (sRouterLock) {
             for (MediaRoute2Info route : routes) {
                 mRoutes.put(route.getId(), route);
-                if (route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
+                if (route.isSystemRoute()
+                        || route.hasAnyFeatures(mDiscoveryPreference.getPreferredFeatures())) {
                     changedRoutes.add(route);
                 }
             }
@@ -637,8 +646,8 @@
     private List<MediaRoute2Info> filterRoutes(List<MediaRoute2Info> routes,
             RouteDiscoveryPreference discoveryRequest) {
         return routes.stream()
-                .filter(
-                        route -> route.hasAnyFeatures(discoveryRequest.getPreferredFeatures()))
+                .filter(route -> route.isSystemRoute()
+                        || route.hasAnyFeatures(discoveryRequest.getPreferredFeatures()))
                 .collect(Collectors.toList());
     }
 
@@ -876,6 +885,43 @@
         }
 
         /**
+         * Gets information about how volume is handled on the session.
+         *
+         * @return {@link MediaRoute2Info#PLAYBACK_VOLUME_FIXED} or
+         * {@link MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE}
+         */
+        @MediaRoute2Info.PlaybackVolume
+        public int getVolumeHandling() {
+            synchronized (mControllerLock) {
+                return mSessionInfo.getVolumeHandling();
+            }
+        }
+
+        /**
+         * Gets the maximum volume of the session.
+         */
+        public int getVolumeMax() {
+            synchronized (mControllerLock) {
+                return mSessionInfo.getVolumeMax();
+            }
+        }
+
+        /**
+         * Gets the current volume of the session.
+         * <p>
+         * When it's available, it represents the volume of routing session, which is a group
+         * of selected routes. To get the volume of a route,
+         * use {@link MediaRoute2Info#getVolume()}.
+         * </p>
+         * @see MediaRoute2Info#getVolume()
+         */
+        public int getVolume() {
+            synchronized (mControllerLock) {
+                return mSessionInfo.getVolume();
+            }
+        }
+
+        /**
          * Returns true if this controller is released, false otherwise.
          * If it is released, then all other getters from this instance may return invalid values.
          * Also, any operations to this instance will be ignored once released.
@@ -1031,6 +1077,42 @@
         }
 
         /**
+         * Requests a volume change for the remote session asynchronously.
+         *
+         * @param volume The new volume value between 0 and {@link RoutingController#getVolumeMax}
+         *               (inclusive).
+         * @see #getVolume()
+         */
+        public void setVolume(int volume) {
+            if (getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED) {
+                Log.w(TAG, "setVolume: the routing session has fixed volume. Ignoring.");
+                return;
+            }
+            if (volume < 0 || volume > getVolumeMax()) {
+                Log.w(TAG, "setVolume: the target volume is out of range. Ignoring");
+                return;
+            }
+
+            synchronized (mControllerLock) {
+                if (mIsReleased) {
+                    Log.w(TAG, "setVolume is called on released controller. Ignoring.");
+                    return;
+                }
+            }
+            Client2 client;
+            synchronized (sRouterLock) {
+                client = mClient;
+            }
+            if (client != null) {
+                try {
+                    mMediaRouterService.setSessionVolume2(client, getId(), volume);
+                } catch (RemoteException ex) {
+                    Log.e(TAG, "setVolume: Failed to deliver request.", ex);
+                }
+            }
+        }
+
+        /**
          * Release this controller and corresponding session.
          * Any operations on this controller after calling this method will be ignored.
          * The devices that are playing media will stop playing it.
diff --git a/media/java/android/media/MediaRouter2Manager.java b/media/java/android/media/MediaRouter2Manager.java
index 61e2f77..5ce291c 100644
--- a/media/java/android/media/MediaRouter2Manager.java
+++ b/media/java/android/media/MediaRouter2Manager.java
@@ -22,6 +22,8 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.Context;
+import android.media.session.MediaController;
+import android.media.session.MediaSessionManager;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -53,6 +55,8 @@
     @GuardedBy("sLock")
     private static MediaRouter2Manager sInstance;
 
+    private final MediaSessionManager mMediaSessionManager;
+
     final String mPackageName;
 
     private Context mContext;
@@ -89,6 +93,8 @@
         mContext = context.getApplicationContext();
         mMediaRouterService = IMediaRouterService.Stub.asInterface(
                 ServiceManager.getService(Context.MEDIA_ROUTER_SERVICE));
+        mMediaSessionManager = (MediaSessionManager) context
+                .getSystemService(Context.MEDIA_SESSION_SERVICE);
         mPackageName = mContext.getPackageName();
         mHandler = new Handler(context.getMainLooper());
     }
@@ -150,6 +156,23 @@
         }
     }
 
+    /**
+     * Gets a {@link android.media.session.MediaController} associated with the
+     * given routing session.
+     * If there is no matching media session, {@code null} is returned.
+     */
+    @Nullable
+    public MediaController getMediaControllerForRoutingSession(
+            @NonNull RoutingSessionInfo sessionInfo) {
+        for (MediaController controller : mMediaSessionManager.getActiveSessions(null)) {
+            String volumeControlId = controller.getPlaybackInfo().getVolumeControlId();
+            if (TextUtils.equals(sessionInfo.getId(), volumeControlId)) {
+                return controller;
+            }
+        }
+        return null;
+    }
+
     //TODO: Use cache not to create array. For now, it's unclear when to purge the cache.
     //Do this when we finalize how to set control categories.
     /**
@@ -161,14 +184,15 @@
     public List<MediaRoute2Info> getAvailableRoutes(@NonNull String packageName) {
         Objects.requireNonNull(packageName, "packageName must not be null");
 
+        List<MediaRoute2Info> routes = new ArrayList<>();
+
         List<String> preferredFeatures = mPreferredFeaturesMap.get(packageName);
         if (preferredFeatures == null) {
-            return Collections.emptyList();
+            preferredFeatures = Collections.emptyList();
         }
-        List<MediaRoute2Info> routes = new ArrayList<>();
         synchronized (mRoutesLock) {
             for (MediaRoute2Info route : mRoutes.values()) {
-                if (route.hasAnyFeatures(preferredFeatures)) {
+                if (route.isSystemRoute() || route.hasAnyFeatures(preferredFeatures)) {
                     routes.add(route);
                 }
             }
@@ -177,24 +201,24 @@
     }
 
     /**
-     * Gets routing controllers of an application with the given package name.
+     * Gets routing sessions of an application with the given package name.
      * The first element of the returned list is the system routing controller.
      *
      * @see MediaRouter2#getSystemController()
      */
     @NonNull
-    public List<RoutingController> getRoutingControllers(@NonNull String packageName) {
+    public List<RoutingSessionInfo> getRoutingSessions(@NonNull String packageName) {
         Objects.requireNonNull(packageName, "packageName must not be null");
 
-        List<RoutingController> controllers = new ArrayList<>();
+        List<RoutingSessionInfo> sessions = new ArrayList<>();
 
         for (RoutingSessionInfo sessionInfo : getActiveSessions()) {
             if (sessionInfo.isSystemSession()
                     || TextUtils.equals(sessionInfo.getClientPackageName(), packageName)) {
-                controllers.add(new RoutingController(sessionInfo));
+                sessions.add(sessionInfo);
             }
         }
-        return controllers;
+        return sessions;
     }
 
     /**
@@ -246,13 +270,22 @@
         Objects.requireNonNull(packageName, "packageName must not be null");
         Objects.requireNonNull(route, "route must not be null");
 
-        for (RoutingController controller : getRoutingControllers(packageName)) {
-            if (controller.getSessionInfo().getTransferrableRoutes().contains(route.getId())) {
-                controller.transferToRoute(route);
-                return;
+        boolean transferred = false;
+        //TODO: instead of release all controllers, add an API to specify controllers that
+        // should be released (or is the system controller).
+        for (RoutingSessionInfo sessionInfo : getRoutingSessions(packageName)) {
+            if (!transferred && sessionInfo.getTransferrableRoutes().contains(route.getId())) {
+                new RoutingController(sessionInfo).transferToRoute(route);
+                transferred = true;
+            } else if (!sessionInfo.isSystemSession()) {
+                new RoutingController(sessionInfo).release();
             }
         }
 
+        if (transferred) {
+            return;
+        }
+
         Client client;
         synchronized (sLock) {
             client = mClient;
@@ -271,22 +304,40 @@
 
     /**
      * Requests a volume change for a route asynchronously.
+     */
+    //TODO: remove this.
+    public void requestSetVolume(MediaRoute2Info route, int volume) {
+        setRouteVolume(route, volume);
+    }
+
+    /**
+     * Requests a volume change for a route asynchronously.
      * <p>
      * It may have no effect if the route is currently not selected.
      * </p>
      *
-     * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}.
+     * @param volume The new volume value between 0 and {@link MediaRoute2Info#getVolumeMax}
+     *               (inclusive).
      */
-    public void requestSetVolume(@NonNull MediaRoute2Info route, int volume) {
+    public void setRouteVolume(@NonNull MediaRoute2Info route, int volume) {
         Objects.requireNonNull(route, "route must not be null");
 
+        if (route.getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED) {
+            Log.w(TAG, "setRouteVolume: the route has fixed volume. Ignoring.");
+            return;
+        }
+        if (volume < 0 || volume > route.getVolumeMax()) {
+            Log.w(TAG, "setRouteVolume: the target volume is out of range. Ignoring");
+            return;
+        }
+
         Client client;
         synchronized (sLock) {
             client = mClient;
         }
         if (client != null) {
             try {
-                mMediaRouterService.requestSetVolume2Manager(client, route, volume);
+                mMediaRouterService.setRouteVolume2Manager(client, route, volume);
             } catch (RemoteException ex) {
                 Log.e(TAG, "Unable to send control request.", ex);
             }
@@ -294,15 +345,22 @@
     }
 
     /**
-     * Requests an incremental volume update  for the route asynchronously.
-     * <p>
-     * It may have no effect if the route is currently not selected.
-     * </p>
+     * Requests a volume change for a routing session asynchronously.
      *
-     * @param delta The delta to add to the current volume.
+     * @param volume The new volume value between 0 and {@link RoutingSessionInfo#getVolumeMax}
+     *               (inclusive).
      */
-    public void requestUpdateVolume(@NonNull MediaRoute2Info route, int delta) {
-        Objects.requireNonNull(route, "route must not be null");
+    public void setSessionVolume(@NonNull RoutingSessionInfo sessionInfo, int volume) {
+        Objects.requireNonNull(sessionInfo, "sessionInfo must not be null");
+
+        if (sessionInfo.getVolumeHandling() == MediaRoute2Info.PLAYBACK_VOLUME_FIXED) {
+            Log.w(TAG, "setSessionVolume: the route has fixed volume. Ignoring.");
+            return;
+        }
+        if (volume < 0 || volume > sessionInfo.getVolumeMax()) {
+            Log.w(TAG, "setSessionVolume: the target volume is out of range. Ignoring");
+            return;
+        }
 
         Client client;
         synchronized (sLock) {
@@ -310,7 +368,8 @@
         }
         if (client != null) {
             try {
-                mMediaRouterService.requestUpdateVolume2Manager(client, route, delta);
+                mMediaRouterService.setSessionVolume2Manager(
+                        client, sessionInfo.getId(), volume);
             } catch (RemoteException ex) {
                 Log.e(TAG, "Unable to send control request.", ex);
             }
diff --git a/media/java/android/media/RouteDiscoveryPreference.java b/media/java/android/media/RouteDiscoveryPreference.java
index 7ec1123..ebcb9ed 100644
--- a/media/java/android/media/RouteDiscoveryPreference.java
+++ b/media/java/android/media/RouteDiscoveryPreference.java
@@ -31,7 +31,7 @@
 import java.util.Set;
 
 /**
- * A media route discovery preference  describing the kinds of routes that media router
+ * A media route discovery preference describing the kinds of routes that media router
  * would like to discover and whether to perform active scanning.
  *
  * @see MediaRouter2#registerRouteCallback
@@ -58,6 +58,7 @@
     private final Bundle mExtras;
 
     /**
+     * An empty discovery preference.
      * @hide
      */
     public static final RouteDiscoveryPreference EMPTY =
diff --git a/media/java/android/media/RoutingSessionInfo.java b/media/java/android/media/RoutingSessionInfo.java
index 5383ea2..0d4e666 100644
--- a/media/java/android/media/RoutingSessionInfo.java
+++ b/media/java/android/media/RoutingSessionInfo.java
@@ -56,6 +56,11 @@
     final List<String> mSelectableRoutes;
     final List<String> mDeselectableRoutes;
     final List<String> mTransferrableRoutes;
+
+    final int mVolumeHandling;
+    final int mVolumeMax;
+    final int mVolume;
+
     @Nullable
     final Bundle mControlHints;
     final boolean mIsSystemSession;
@@ -77,6 +82,10 @@
         mTransferrableRoutes = Collections.unmodifiableList(
                 convertToUniqueRouteIds(builder.mTransferrableRoutes));
 
+        mVolumeHandling = builder.mVolumeHandling;
+        mVolumeMax = builder.mVolumeMax;
+        mVolume = builder.mVolume;
+
         mControlHints = builder.mControlHints;
         mIsSystemSession = builder.mIsSystemSession;
     }
@@ -93,6 +102,10 @@
         mDeselectableRoutes = ensureList(src.createStringArrayList());
         mTransferrableRoutes = ensureList(src.createStringArrayList());
 
+        mVolumeHandling = src.readInt();
+        mVolumeMax = src.readInt();
+        mVolume = src.readInt();
+
         mControlHints = src.readBundle();
         mIsSystemSession = src.readBoolean();
     }
@@ -188,6 +201,36 @@
     }
 
     /**
+     * Gets information about how volume is handled on the session.
+     *
+     * @return {@link MediaRoute2Info#PLAYBACK_VOLUME_FIXED} or
+     * {@link MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE}.
+     */
+    @MediaRoute2Info.PlaybackVolume
+    public int getVolumeHandling() {
+        return mVolumeHandling;
+    }
+
+    /**
+     * Gets the maximum volume of the session.
+     */
+    public int getVolumeMax() {
+        return mVolumeMax;
+    }
+
+    /**
+     * Gets the current volume of the session.
+     * <p>
+     * When it's available, it represents the volume of routing session, which is a group
+     * of selected routes. To get the volume of each route, use {@link MediaRoute2Info#getVolume()}.
+     * </p>
+     * @see MediaRoute2Info#getVolume()
+     */
+    public int getVolume() {
+        return mVolume;
+    }
+
+    /**
      * Gets the control hints
      */
     @Nullable
@@ -218,6 +261,9 @@
         dest.writeStringList(mSelectableRoutes);
         dest.writeStringList(mDeselectableRoutes);
         dest.writeStringList(mTransferrableRoutes);
+        dest.writeInt(mVolumeHandling);
+        dest.writeInt(mVolumeMax);
+        dest.writeInt(mVolume);
         dest.writeBundle(mControlHints);
         dest.writeBoolean(mIsSystemSession);
     }
@@ -238,13 +284,17 @@
                 && Objects.equals(mSelectedRoutes, other.mSelectedRoutes)
                 && Objects.equals(mSelectableRoutes, other.mSelectableRoutes)
                 && Objects.equals(mDeselectableRoutes, other.mDeselectableRoutes)
-                && Objects.equals(mTransferrableRoutes, other.mTransferrableRoutes);
+                && Objects.equals(mTransferrableRoutes, other.mTransferrableRoutes)
+                && (mVolumeHandling == other.mVolumeHandling)
+                && (mVolumeMax == other.mVolumeMax)
+                && (mVolume == other.mVolume);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(mId, mClientPackageName, mProviderId,
-                mSelectedRoutes, mSelectableRoutes, mDeselectableRoutes, mTransferrableRoutes);
+                mSelectedRoutes, mSelectableRoutes, mDeselectableRoutes, mTransferrableRoutes,
+                mVolumeMax, mVolumeHandling, mVolume);
     }
 
     @Override
@@ -264,6 +314,9 @@
                 .append(", transferrableRoutes={")
                 .append(String.join(",", mTransferrableRoutes))
                 .append("}")
+                .append(", volumeHandling=").append(getVolumeHandling())
+                .append(", volumeMax=").append(getVolumeMax())
+                .append(", volume=").append(getVolume())
                 .append(" }");
         return result.toString();
     }
@@ -298,6 +351,9 @@
         final List<String> mSelectableRoutes;
         final List<String> mDeselectableRoutes;
         final List<String> mTransferrableRoutes;
+        int mVolumeHandling = MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
+        int mVolumeMax;
+        int mVolume;
         Bundle mControlHints;
         boolean mIsSystemSession;
 
@@ -346,6 +402,10 @@
             mDeselectableRoutes = new ArrayList<>(sessionInfo.mDeselectableRoutes);
             mTransferrableRoutes = new ArrayList<>(sessionInfo.mTransferrableRoutes);
 
+            mVolumeHandling = sessionInfo.mVolumeHandling;
+            mVolumeMax = sessionInfo.mVolumeMax;
+            mVolume = sessionInfo.mVolume;
+
             mControlHints = sessionInfo.mControlHints;
             mIsSystemSession = sessionInfo.mIsSystemSession;
         }
@@ -497,6 +557,36 @@
         }
 
         /**
+         * Sets the session's volume handling.
+         * {@link MediaRoute2Info#PLAYBACK_VOLUME_FIXED} or
+         * {@link MediaRoute2Info#PLAYBACK_VOLUME_VARIABLE}.
+         */
+        @NonNull
+        public RoutingSessionInfo.Builder setVolumeHandling(
+                @MediaRoute2Info.PlaybackVolume int volumeHandling) {
+            mVolumeHandling = volumeHandling;
+            return this;
+        }
+
+        /**
+         * Sets the session's maximum volume, or 0 if unknown.
+         */
+        @NonNull
+        public RoutingSessionInfo.Builder setVolumeMax(int volumeMax) {
+            mVolumeMax = volumeMax;
+            return this;
+        }
+
+        /**
+         * Sets the session's current volume, or 0 if unknown.
+         */
+        @NonNull
+        public RoutingSessionInfo.Builder setVolume(int volume) {
+            mVolume = volume;
+            return this;
+        }
+
+        /**
          * Sets control hints.
          */
         @NonNull
diff --git a/media/java/android/media/audiofx/AudioEffect.java b/media/java/android/media/audiofx/AudioEffect.java
index c25a533..6157ef4 100644
--- a/media/java/android/media/audiofx/AudioEffect.java
+++ b/media/java/android/media/audiofx/AudioEffect.java
@@ -25,7 +25,7 @@
 import android.annotation.TestApi;
 import android.app.ActivityThread;
 import android.compat.annotation.UnsupportedAppUsage;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioDeviceInfo;
 import android.media.AudioSystem;
 import android.os.Build;
@@ -476,12 +476,12 @@
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.MODIFY_DEFAULT_AUDIO_EFFECTS)
-    public AudioEffect(@NonNull UUID uuid, @NonNull AudioDeviceAddress device) {
+    public AudioEffect(@NonNull UUID uuid, @NonNull AudioDevice device) {
         this(EFFECT_TYPE_NULL, Objects.requireNonNull(uuid), 0, -2, Objects.requireNonNull(device));
     }
 
     private AudioEffect(UUID type, UUID uuid, int priority,
-            int audioSession, @Nullable AudioDeviceAddress device)
+            int audioSession, @Nullable AudioDevice device)
             throws IllegalArgumentException, UnsupportedOperationException,
             RuntimeException {
         int[] id = new int[1];
diff --git a/media/java/android/media/audiopolicy/AudioMix.java b/media/java/android/media/audiopolicy/AudioMix.java
index dd9877a..61113bc 100644
--- a/media/java/android/media/audiopolicy/AudioMix.java
+++ b/media/java/android/media/audiopolicy/AudioMix.java
@@ -192,6 +192,16 @@
         return mRule.isAffectingUsage(usage);
     }
 
+    /**
+      * Returns {@code true} if the rule associated with this mix contains a
+      * RULE_MATCH_ATTRIBUTE_USAGE criterion for the given usage
+      *
+      * @hide
+      */
+    public boolean containsMatchAttributeRuleForUsage(int usage) {
+        return mRule.containsMatchAttributeRuleForUsage(usage);
+    }
+
     /** @hide */
     public boolean isRoutedToDevice(int deviceType, @NonNull String deviceAddress) {
         if ((mRouteFlags & ROUTE_FLAG_RENDER) != ROUTE_FLAG_RENDER) {
diff --git a/media/java/android/media/audiopolicy/AudioMixingRule.java b/media/java/android/media/audiopolicy/AudioMixingRule.java
index bca3fa7..68c9593 100644
--- a/media/java/android/media/audiopolicy/AudioMixingRule.java
+++ b/media/java/android/media/audiopolicy/AudioMixingRule.java
@@ -47,10 +47,12 @@
 public class AudioMixingRule {
 
     private AudioMixingRule(int mixType, ArrayList<AudioMixMatchCriterion> criteria,
-                            boolean allowPrivilegedPlaybackCapture) {
+                            boolean allowPrivilegedPlaybackCapture,
+                            boolean voiceCommunicationCaptureAllowed) {
         mCriteria = criteria;
         mTargetMixType = mixType;
         mAllowPrivilegedPlaybackCapture = allowPrivilegedPlaybackCapture;
+        mVoiceCommunicationCaptureAllowed = voiceCommunicationCaptureAllowed;
     }
 
     /**
@@ -171,6 +173,23 @@
         return false;
     }
 
+    /**
+      * Returns {@code true} if this rule contains a RULE_MATCH_ATTRIBUTE_USAGE criterion for
+      * the given usage
+      *
+      * @hide
+      */
+    boolean containsMatchAttributeRuleForUsage(int usage) {
+        for (AudioMixMatchCriterion criterion : mCriteria) {
+            if (criterion.mRule == RULE_MATCH_ATTRIBUTE_USAGE
+                    && criterion.mAttr != null
+                    && criterion.mAttr.getUsage() == usage) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     private static boolean areCriteriaEquivalent(ArrayList<AudioMixMatchCriterion> cr1,
             ArrayList<AudioMixMatchCriterion> cr2) {
         if (cr1 == null || cr2 == null) return false;
@@ -188,6 +207,8 @@
     public ArrayList<AudioMixMatchCriterion> getCriteria() { return mCriteria; }
     @UnsupportedAppUsage
     private boolean mAllowPrivilegedPlaybackCapture = false;
+    @UnsupportedAppUsage
+    private boolean mVoiceCommunicationCaptureAllowed = false;
 
     /** @hide */
     public boolean allowPrivilegedPlaybackCapture() {
@@ -195,6 +216,16 @@
     }
 
     /** @hide */
+    public boolean voiceCommunicationCaptureAllowed() {
+        return mVoiceCommunicationCaptureAllowed;
+    }
+
+    /** @hide */
+    public void setVoiceCommunicationCaptureAllowed(boolean allowed) {
+        mVoiceCommunicationCaptureAllowed = allowed;
+    }
+
+    /** @hide */
     @Override
     public boolean equals(Object o) {
         if (this == o) return true;
@@ -203,12 +234,18 @@
         final AudioMixingRule that = (AudioMixingRule) o;
         return (this.mTargetMixType == that.mTargetMixType)
                 && (areCriteriaEquivalent(this.mCriteria, that.mCriteria)
-                && this.mAllowPrivilegedPlaybackCapture == that.mAllowPrivilegedPlaybackCapture);
+                && this.mAllowPrivilegedPlaybackCapture == that.mAllowPrivilegedPlaybackCapture
+                && this.mVoiceCommunicationCaptureAllowed
+                    == that.mVoiceCommunicationCaptureAllowed);
     }
 
     @Override
     public int hashCode() {
-        return Objects.hash(mTargetMixType, mCriteria, mAllowPrivilegedPlaybackCapture);
+        return Objects.hash(
+            mTargetMixType,
+            mCriteria,
+            mAllowPrivilegedPlaybackCapture,
+            mVoiceCommunicationCaptureAllowed);
     }
 
     private static boolean isValidSystemApiRule(int rule) {
@@ -276,6 +313,8 @@
         private ArrayList<AudioMixMatchCriterion> mCriteria;
         private int mTargetMixType = AudioMix.MIX_TYPE_INVALID;
         private boolean mAllowPrivilegedPlaybackCapture = false;
+        // This value should be set internally according to a permission check
+        private boolean mVoiceCommunicationCaptureAllowed = false;
 
         /**
          * Constructs a new Builder with no rules.
@@ -401,6 +440,23 @@
         }
 
         /**
+         * Set if the caller of the rule is able to capture voice communication output.
+         * A system app can capture voice communication output only if it is granted with the.
+         * CAPTURE_VOICE_COMMUNICATION_OUTPUT permission.
+         *
+         * Note that this method is for internal use only and should not be called by the app that
+         * creates the rule.
+         *
+         * @return the same Builder instance.
+         *
+         * @hide
+         */
+        public @NonNull Builder voiceCommunicationCaptureAllowed(boolean allowed) {
+            mVoiceCommunicationCaptureAllowed = allowed;
+            return this;
+        }
+
+        /**
          * Add or exclude a rule for the selection of which streams are mixed together.
          * Does error checking on the parameters.
          * @param rule
@@ -583,7 +639,8 @@
          * @return a new {@link AudioMixingRule} object
          */
         public AudioMixingRule build() {
-            return new AudioMixingRule(mTargetMixType, mCriteria, mAllowPrivilegedPlaybackCapture);
+            return new AudioMixingRule(mTargetMixType, mCriteria,
+                mAllowPrivilegedPlaybackCapture, mVoiceCommunicationCaptureAllowed);
         }
     }
 }
diff --git a/media/java/android/media/audiopolicy/AudioPolicyConfig.java b/media/java/android/media/audiopolicy/AudioPolicyConfig.java
index b048158..91b9bb3 100644
--- a/media/java/android/media/audiopolicy/AudioPolicyConfig.java
+++ b/media/java/android/media/audiopolicy/AudioPolicyConfig.java
@@ -98,6 +98,8 @@
             dest.writeInt(mix.getFormat().getChannelMask());
             // write opt-out respect
             dest.writeBoolean(mix.getRule().allowPrivilegedPlaybackCapture());
+            // write voice communication capture allowed flag
+            dest.writeBoolean(mix.getRule().voiceCommunicationCaptureAllowed());
             // write mix rules
             final ArrayList<AudioMixMatchCriterion> criteria = mix.getRule().getCriteria();
             dest.writeInt(criteria.size());
@@ -128,8 +130,10 @@
             mixBuilder.setFormat(format);
 
             AudioMixingRule.Builder ruleBuilder = new AudioMixingRule.Builder();
-            // write opt-out respect
+            // read opt-out respect
             ruleBuilder.allowPrivilegedPlaybackCapture(in.readBoolean());
+            // read voice capture allowed flag
+            ruleBuilder.voiceCommunicationCaptureAllowed(in.readBoolean());
             // read mix rules
             int nbRules = in.readInt();
             for (int j = 0 ; j < nbRules ; j++) {
@@ -169,6 +173,8 @@
             textDump += Integer.toHexString(mix.getFormat().getChannelMask()).toUpperCase() + "\n";
             textDump += "  ignore playback capture opt out="
                     + mix.getRule().allowPrivilegedPlaybackCapture() + "\n";
+            textDump += "  allow voice communication capture="
+                    + mix.getRule().voiceCommunicationCaptureAllowed() + "\n";
             // write mix rules
             final ArrayList<AudioMixMatchCriterion> criteria = mix.getRule().getCriteria();
             for (AudioMixMatchCriterion criterion : criteria) {
diff --git a/media/java/android/media/audiopolicy/AudioProductStrategy.java b/media/java/android/media/audiopolicy/AudioProductStrategy.java
index 60b3fc6..f9dbc50 100644
--- a/media/java/android/media/audiopolicy/AudioProductStrategy.java
+++ b/media/java/android/media/audiopolicy/AudioProductStrategy.java
@@ -83,6 +83,27 @@
 
     /**
      * @hide
+     * Return the AudioProductStrategy object for the given strategy ID.
+     * @param id the ID of the strategy to find
+     * @return an AudioProductStrategy on which getId() would return id, null if no such strategy
+     *     exists.
+     */
+    public static @Nullable AudioProductStrategy getAudioProductStrategyWithId(int id) {
+        synchronized (sLock) {
+            if (sAudioProductStrategies == null) {
+                sAudioProductStrategies = initializeAudioProductStrategies();
+            }
+            for (AudioProductStrategy strategy : sAudioProductStrategies) {
+                if (strategy.getId() == id) {
+                    return strategy;
+                }
+            }
+        }
+        return null;
+    }
+
+    /**
+     * @hide
      * Create an invalid AudioProductStrategy instance for testing
      * @param id the ID for the invalid strategy, always use a different one than in use
      * @return an invalid instance that cannot successfully be used for volume groups or routing
diff --git a/media/java/android/media/audiopolicy/AudioVolumeGroupChangeHandler.java b/media/java/android/media/audiopolicy/AudioVolumeGroupChangeHandler.java
index 074188e..adf4d3d 100644
--- a/media/java/android/media/audiopolicy/AudioVolumeGroupChangeHandler.java
+++ b/media/java/android/media/audiopolicy/AudioVolumeGroupChangeHandler.java
@@ -157,9 +157,7 @@
             Handler handler = eventHandler.handler();
             if (handler != null) {
                 Message m = handler.obtainMessage(what, arg1, arg2, obj);
-                if (what != AUDIOVOLUMEGROUP_EVENT_NEW_LISTENER) {
-                    handler.removeMessages(what);
-                }
+                // Do not remove previous messages, as we would lose notification of group changes
                 handler.sendMessage(m);
             }
         }
diff --git a/media/java/android/media/session/MediaSession.java b/media/java/android/media/session/MediaSession.java
index 870c1b4..486c0c2 100644
--- a/media/java/android/media/session/MediaSession.java
+++ b/media/java/android/media/session/MediaSession.java
@@ -266,8 +266,12 @@
      * playback after the session has been stopped. If your app is started in
      * this way an {@link Intent#ACTION_MEDIA_BUTTON} intent will be sent via
      * the pending intent.
+     * <p>
+     * The pending intent is recommended to be explicit to follow the security recommendation of
+     * {@link PendingIntent#getActivity}.
      *
      * @param mbr The {@link PendingIntent} to send the media button event to.
+     * @see PendingIntent#getActivity
      */
     public void setMediaButtonReceiver(@Nullable PendingIntent mbr) {
         try {
diff --git a/media/java/android/media/session/MediaSessionManager.java b/media/java/android/media/session/MediaSessionManager.java
index aece39d..69be8b3 100644
--- a/media/java/android/media/session/MediaSessionManager.java
+++ b/media/java/android/media/session/MediaSessionManager.java
@@ -61,6 +61,7 @@
  * @see MediaSession
  * @see MediaController
  */
+// TODO: (jinpark) Add API for getting and setting session policies from MediaSessionService.
 @SystemService(Context.MEDIA_SESSION_SERVICE)
 public final class MediaSessionManager {
     private static final String TAG = "SessionManager";
@@ -932,7 +933,7 @@
     }
 
     /**
-     * Listener to receive when the media session service
+     * Listener to be called when the media session service dispatches a media key event.
      * @hide
      */
     @SystemApi
@@ -944,15 +945,15 @@
          * is released.
          *
          * @param event Dispatched media key event.
-         * @param packageName Package
+         * @param packageName The package name
          * @param sessionToken The media session's token. Can be {@code null}.
          */
-        default void onMediaKeyEventDispatched(@NonNull KeyEvent event, @NonNull String packageName,
-                @Nullable MediaSession.Token sessionToken) { }
+        void onMediaKeyEventDispatched(@NonNull KeyEvent event, @NonNull String packageName,
+                @Nullable MediaSession.Token sessionToken);
     }
 
     /**
-     * Listener to receive changes in the media key event session, which would receive the media key
+     * Listener to receive changes in the media key event session, which would receive a media key
      * event unless specified.
      * @hide
      */
@@ -964,13 +965,14 @@
          * has specified the target.
          * <p>
          * The session token can be {@link null} if the media button session is unset. In that case,
-         * framework would dispatch to the last sessions's media button receiver.
+         * framework would dispatch to the last sessions's media button receiver. If the media
+         * button receive isn't set as well, then it
          *
          * @param packageName The package name who would receive the media key event. Can be empty.
-         * @param sessionToken The media session's token. Can be {@code null.}
+         * @param sessionToken The media session's token. Can be {@code null}.
          */
-        default void onMediaKeyEventSessionChanged(@NonNull String packageName,
-                @Nullable MediaSession.Token sessionToken) { }
+        void onMediaKeyEventSessionChanged(@NonNull String packageName,
+                @Nullable MediaSession.Token sessionToken);
     }
 
     /**
diff --git a/media/java/android/media/soundtrigger/SoundTriggerDetector.java b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
index 118f65c..0895339 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerDetector.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerDetector.java
@@ -113,7 +113,7 @@
      * This capability may or may not be supported by the system, and support can be queried
      * by calling {@link SoundTriggerManager#getModuleProperties()} and checking
      * {@link ModuleProperties#audioCapabilities}. The corresponding capabilities field for
-     * this flag is {@link SoundTrigger.ModuleProperties#CAPABILITY_ECHO_CANCELLATION}.
+     * this flag is {@link SoundTrigger.ModuleProperties#AUDIO_CAPABILITY_ECHO_CANCELLATION}.
      * If this flag is passed without the audio capability supported, there will be no audio effect
      * applied.
      */
@@ -125,8 +125,9 @@
      * This capability may or may not be supported by the system, and support can be queried
      * by calling {@link SoundTriggerManager#getModuleProperties()} and checking
      * {@link ModuleProperties#audioCapabilities}. The corresponding capabilities field for
-     * this flag is {@link SoundTrigger.ModuleProperties#CAPABILITY_NOISE_SUPPRESSION}. If this flag
-     * is passed without the audio capability supported, there will be no audio effect applied.
+     * this flag is {@link SoundTrigger.ModuleProperties#AUDIO_CAPABILITY_NOISE_SUPPRESSION}.
+     * If this flag is passed without the audio capability supported, there will be no audio effect
+     * applied.
      */
     public static final int RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION = 0x8;
 
@@ -296,10 +297,10 @@
 
         int audioCapabilities = 0;
         if ((recognitionFlags & RECOGNITION_FLAG_ENABLE_AUDIO_ECHO_CANCELLATION) != 0) {
-            audioCapabilities |= SoundTrigger.ModuleProperties.CAPABILITY_ECHO_CANCELLATION;
+            audioCapabilities |= SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_ECHO_CANCELLATION;
         }
         if ((recognitionFlags & RECOGNITION_FLAG_ENABLE_AUDIO_NOISE_SUPPRESSION) != 0) {
-            audioCapabilities |= SoundTrigger.ModuleProperties.CAPABILITY_NOISE_SUPPRESSION;
+            audioCapabilities |= SoundTrigger.ModuleProperties.AUDIO_CAPABILITY_NOISE_SUPPRESSION;
         }
 
         int status;
diff --git a/media/java/android/media/soundtrigger/SoundTriggerManager.java b/media/java/android/media/soundtrigger/SoundTriggerManager.java
index dd4dac2..6a8483c 100644
--- a/media/java/android/media/soundtrigger/SoundTriggerManager.java
+++ b/media/java/android/media/soundtrigger/SoundTriggerManager.java
@@ -173,8 +173,13 @@
         }
 
         /**
-         * Factory constructor to create a SoundModel instance for use with methods in this
-         * class.
+         * Factory constructor to a voice model to be used with {@link SoundTriggerManager}
+         *
+         * @param modelUuid Unique identifier associated with the model.
+         * @param vendorUuid Unique identifier associated the calling vendor.
+         * @param data Model's data.
+         * @param version Version identifier for the model.
+         * @return Voice model
          */
         @NonNull
         public static Model create(@NonNull UUID modelUuid, @NonNull UUID vendorUuid,
@@ -186,8 +191,12 @@
         }
 
         /**
-         * Factory constructor to create a SoundModel instance for use with methods in this
-         * class.
+         * Factory constructor to a voice model to be used with {@link SoundTriggerManager}
+         *
+         * @param modelUuid Unique identifier associated with the model.
+         * @param vendorUuid Unique identifier associated the calling vendor.
+         * @param data Model's data.
+         * @return Voice model
          */
         @NonNull
         public static Model create(@NonNull UUID modelUuid, @NonNull UUID vendorUuid,
@@ -195,20 +204,40 @@
             return create(modelUuid, vendorUuid, data, -1);
         }
 
+        /**
+         * Get the model's unique identifier
+         *
+         * @return UUID associated with the model
+         */
         @NonNull
         public UUID getModelUuid() {
             return mGenericSoundModel.uuid;
         }
 
+        /**
+         * Get the model's vendor identifier
+         *
+         * @return UUID associated with the vendor of the model
+         */
         @NonNull
         public UUID getVendorUuid() {
             return mGenericSoundModel.vendorUuid;
         }
 
+        /**
+         * Get the model's version
+         *
+         * @return Version associated with the model
+         */
         public int getVersion() {
             return mGenericSoundModel.version;
         }
 
+        /**
+         * Get the underlying model data
+         *
+         * @return Backing data of the model
+         */
         @Nullable
         public byte[] getModelData() {
             return mGenericSoundModel.data;
diff --git a/media/java/android/media/tv/TvContract.java b/media/java/android/media/tv/TvContract.java
index 09b7559..433c622 100644
--- a/media/java/android/media/tv/TvContract.java
+++ b/media/java/android/media/tv/TvContract.java
@@ -1109,6 +1109,24 @@
          * <p>Type: TEXT
          */
         String COLUMN_SERIES_ID = "series_id";
+
+        /**
+         * The split ID of this TV program for multi-part content, as a URI.
+         *
+         * <p>A content may consist of multiple programs within the same channel or over several
+         * channels. For example, a film might be divided into two parts interrupted by a news in
+         * the middle or a longer sport event might be split into several parts over several
+         * channels. The split ID is used to identify all the programs in the same multi-part
+         * content. Suitable URIs include
+         * <ul>
+         * <li>{@code crid://<CRIDauthority>/<data>#<IMI>} from ETSI TS 102 323
+         * </ul>
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
+         */
+        String COLUMN_SPLIT_ID = "split_id";
     }
 
     /**
@@ -1677,6 +1695,7 @@
                 TYPE_ATSC_T,
                 TYPE_ATSC_C,
                 TYPE_ATSC_M_H,
+                TYPE_ATSC3_T,
                 TYPE_ISDB_T,
                 TYPE_ISDB_TB,
                 TYPE_ISDB_S,
@@ -1801,6 +1820,13 @@
         public static final String TYPE_ATSC_M_H = "TYPE_ATSC_M_H";
 
         /**
+         * The channel type for ATSC3.0 (terrestrial).
+         *
+         * @see #COLUMN_TYPE
+         */
+        public static final String TYPE_ATSC3_T = "TYPE_ATSC3_T";
+
+        /**
          * The channel type for ISDB-T (terrestrial).
          *
          * @see #COLUMN_TYPE
@@ -2022,6 +2048,7 @@
          * {@link #TYPE_ATSC_C},
          * {@link #TYPE_ATSC_M_H},
          * {@link #TYPE_ATSC_T},
+         * {@link #TYPE_ATSC3_T},
          * {@link #TYPE_CMMB},
          * {@link #TYPE_DTMB},
          * {@link #TYPE_DVB_C},
@@ -2407,6 +2434,22 @@
          */
         public static final String COLUMN_TRANSIENT = "transient";
 
+        /**
+         * The global content ID of this TV channel, as a URI.
+         *
+         * <p>A globally unique URI that identifies this TV channel, if applicable. Suitable URIs
+         * include
+         * <ul>
+         * <li>{@code globalServiceId} from ATSC A/331. ex {@code https://doi.org/10.5239/7E4E-B472}
+         * <li>Other broadcast ID provider. ex {@code http://example.com/tv_channel/1234}
+         * </ul>
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
+         */
+        public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
+
         private Channels() {}
 
         /**
@@ -2562,6 +2605,37 @@
          */
         public static final String COLUMN_RECORDING_PROHIBITED = "recording_prohibited";
 
+        /**
+         * The event ID of this TV program.
+         *
+         * <p>It is used to identify the current TV program in the same channel, if applicable.
+         * Use the same coding for {@code event_id} in the underlying broadcast standard if it
+         * is defined there (e.g. ATSC A/65, ETSI EN 300 468 and ARIB STD-B10).
+         *
+         * <p>This is a required field only if the underlying broadcast standard defines the same
+         * name field. Otherwise, leave empty.
+         *
+         * <p>Type: INTEGER
+         */
+        public static final String COLUMN_EVENT_ID = "event_id";
+
+        /**
+         * The global content ID of this TV program, as a URI.
+         *
+         * <p>A globally unique ID that identifies this TV program, if applicable. Suitable URIs
+         * include
+         * <ul>
+         * <li>{@code crid://<CRIDauthority>/<data>} from ETSI TS 102 323
+         * <li>{@code globalContentId} from ATSC A/332
+         * <li>Other broadcast ID provider. ex {@code http://example.com/tv_program/1234}
+         * </ul>
+         *
+         * <p>Can be empty.
+         *
+         * <p>Type: TEXT
+         */
+        public static final String COLUMN_GLOBAL_CONTENT_ID = "global_content_id";
+
         private Programs() {}
 
         /** Canonical genres for TV programs. */
diff --git a/media/java/android/media/tv/TvInputManager.java b/media/java/android/media/tv/TvInputManager.java
index 2589521..6bf9e19 100644
--- a/media/java/android/media/tv/TvInputManager.java
+++ b/media/java/android/media/tv/TvInputManager.java
@@ -358,7 +358,6 @@
      *
      * @hide
      */
-    @SystemApi
     public static final int UNKNOWN_CLIENT_PID = -1;
 
     /**
@@ -1588,7 +1587,6 @@
      *
      * @hide
      */
-    @SystemApi
     @RequiresPermission(android.Manifest.permission.TUNER_RESOURCE_ACCESS)
     public int getClientPid(@NonNull String sessionId) {
         return getClientPidInternal(sessionId);
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/tv/tuner/CasSessionRequest.aidl
similarity index 71%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/tv/tuner/CasSessionRequest.aidl
index f5e2405..3dbf3d8 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/tv/tuner/CasSessionRequest.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media.tv.tuner;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * A wrapper of a cas session requests that contains all the request info of the client.
+ *
+ * @hide
+ */
+parcelable CasSessionRequest;
\ No newline at end of file
diff --git a/media/java/android/media/tv/tuner/CasSessionRequest.java b/media/java/android/media/tv/tuner/CasSessionRequest.java
new file mode 100644
index 0000000..0f6a885
--- /dev/null
+++ b/media/java/android/media/tv/tuner/CasSessionRequest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * Information required to request a Cas Session.
+ *
+ * @hide
+ */
+public final class CasSessionRequest implements Parcelable {
+    static final String TAG = "CasSessionRequest";
+
+    public static final
+                @NonNull
+                Parcelable.Creator<CasSessionRequest> CREATOR =
+                new Parcelable.Creator<CasSessionRequest>() {
+                @Override
+                public CasSessionRequest createFromParcel(Parcel source) {
+                    try {
+                        return new CasSessionRequest(source);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Exception creating CasSessionRequest from parcel", e);
+                        return null;
+                    }
+                }
+
+                @Override
+                public CasSessionRequest[] newArray(int size) {
+                    return new CasSessionRequest[size];
+                }
+            };
+
+    /**
+     * Client id of the client that sends the request.
+     */
+    private final int mClientId;
+
+    /**
+     * System id of the requested cas.
+     */
+    private final int mCasSystemId;
+
+    private CasSessionRequest(@NonNull Parcel source) {
+        mClientId = source.readInt();
+        mCasSystemId = source.readInt();
+    }
+
+    /**
+     * Constructs a new {@link CasSessionRequest} with the given parameters.
+     *
+     * @param clientId id of the client.
+     * @param casSystemId the cas system id that the client is requesting.
+     */
+    public CasSessionRequest(int clientId,
+                             int casSystemId) {
+        mClientId = clientId;
+        mCasSystemId = casSystemId;
+    }
+
+    /**
+     * Returns the id of the client.
+     */
+    public int getClientId() {
+        return mClientId;
+    }
+
+    /**
+     * Returns the cas system id requested.
+     */
+    public int getCasSystemId() {
+        return mCasSystemId;
+    }
+
+    // Parcelable
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder(128);
+        b.append("CasSessionRequest {clientId=").append(mClientId);
+        b.append(", casSystemId=").append(mCasSystemId);
+        b.append("}");
+        return b.toString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mClientId);
+        dest.writeInt(mCasSystemId);
+    }
+}
diff --git a/media/java/android/media/tv/tuner/ITunerResourceManager.aidl b/media/java/android/media/tv/tuner/ITunerResourceManager.aidl
new file mode 100644
index 0000000..758c689
--- /dev/null
+++ b/media/java/android/media/tv/tuner/ITunerResourceManager.aidl
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.media.tv.tuner.CasSessionRequest;
+import android.media.tv.tuner.ITunerResourceManagerListener;
+import android.media.tv.tuner.ResourceClientProfile;
+import android.media.tv.tuner.TunerFrontendInfo;
+import android.media.tv.tuner.TunerFrontendRequest;
+import android.media.tv.tuner.TunerLnbRequest;
+
+/**
+ * Interface of the Tuner Resource Manager. It manages resources used by TV Tuners.
+ * <p>Resources include:
+ * <ul>
+ * <li>TunerFrontend {@link android.media.tv.tuner.frontend}.
+ * <li>TunerLnb {@link android.media.tv.tuner.Lnb}.
+ * <li>MediaCas {@link android.media.MediaCas}.
+ * <li>TvInputHardware {@link android.media.tv.TvInputHardwareInfo}.
+ * <ul>
+ *
+ * <p>Expected workflow is:
+ * <ul>
+ * <li>Tuner Java/MediaCas/TIF update resources of the current device with TRM.
+ * <li>Client registers its profile through {@link #registerClientProfile(ResourceClientProfile,
+ * ITunerResourceManagerListener, int[])}.
+ * <li>Client requests resources through request APIs.
+ * <li>If the resource needs to be handed to a higher priority client from a lower priority
+ * one, TRM calls ITunerResourceManagerListener registered by the lower priority client to release
+ * the resource.
+ * <ul>
+ *
+ * @hide
+ */
+interface ITunerResourceManager {
+    /*
+     * This API is used by the client to register their profile with the Tuner Resource manager.
+     *
+     * <p>The profile contains information that can show the base priority score of the client.
+     *
+     * @param profile {@link ResourceClientProfile} profile of the current client
+     * @param listener {@link ITunerResourceManagerListener} a callback to
+     *                 reclaim clients' resources when needed.
+     * @param clientId returns a clientId from the resource manager when the
+     *                 the client registers its profile.
+     */
+    void registerClientProfile(in ResourceClientProfile profile,
+        ITunerResourceManagerListener listener, out int[] clientId);
+
+    /*
+     * This API is used by the client to unregister their profile with the Tuner Resource manager.
+     *
+     * @param clientId the client id that needs to be unregistered.
+     */
+    void unregisterClientProfile(in int clientId);
+
+    /*
+     * Updates a registered client's priority and niceValue.
+     *
+     * @param clientId the id of the client that is updating its profile.
+     * @param priority the priority that the client would like to update to.
+     * @param niceValue the nice value that the client would like to update to.
+     *
+     * @return true if the update is successful.
+     */
+    boolean updateClientPriority(in int clientId, in int priority, in int niceValue);
+
+    /*
+     * Updates the available Frontend resources information on the current device.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestFrontend(TunerFrontendRequest,int[])} and {@link #releaseFrontend(int)} call.
+     *
+     * @param infos an array of the available {@link TunerFrontendInfo} information.
+     */
+    void setFrontendInfoList(in TunerFrontendInfo[] infos);
+
+    /*
+     * Updates the available Cas resource information on the current device.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestCasSession(CasSessionRequest, int[])} and {@link #releaseCasSession(int)} call.
+     *
+     * @param casSystemId id of the updating CAS system.
+     * @param maxSessionNum the max session number of the CAS system that is updated.
+     */
+    void updateCasInfo(in int casSystemId, in int maxSessionNum);
+
+    /*
+     * Updates the available Lnb resource information on the current device.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestLnb(TunerLnbRequest, int[])} and {@link #releaseLnb(int)} call.
+     *
+     * @param lnbIds ids of the updating lnbs.
+     */
+    void setLnbInfoList(in int[] lnbIds);
+
+    /*
+     * This API is used by the Tuner framework to request an available frontend from the TunerHAL.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is frontend available, the API would send the id back.
+     *
+     * <li>If no Frontend is available but the current request info can show higher priority than
+     * other uses of Frontend, the API will send
+     * {@link ITunerResourceManagerListener#onResourcesReclaim()} to the {@link Tuner}. Tuner would
+     * handle the resource reclaim on the holder of lower priority and notify the holder of its
+     * resource loss.
+     *
+     * <li>If no frontend can be granted, the API would return false.
+     * <ul>
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this request.
+     *
+     * @param request {@link TunerFrontendRequest} information of the current request.
+     * @param frontendId a one-element array to return the granted frontendId.
+     *
+     * @return true if there is frontend granted.
+     */
+    boolean requestFrontend(in TunerFrontendRequest request, out int[] frontendId);
+
+    /*
+     * Requests to share frontend with an existing client.
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this request.
+     *
+     * @param selfClientId the id of the client that sends the request.
+     * @param targetClientId the id of the client to share the frontend with.
+     */
+    void shareFrontend(in int selfClientId, in int targetClientId);
+
+    /*
+     * This API is used by the Tuner framework to request an available Cas session. This session
+     * needs to be under the CAS system with the id indicated in the {@code request}.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is Cas session available, the API would send the id back.
+     *
+     * <li>If no Cas session is available but the current request info can show higher priority than
+     * other uses of the sessions under the requested CAS system, the API will send
+     * {@link ITunerResourceManagerCallback#onResourcesReclaim()} to the {@link Tuner}. Tuner would
+     * handle the resource reclaim on the holder of lower priority and notify the holder of its
+     * resource loss.
+     *
+     * <li>If no Cas session can be granted, the API would return false.
+     * <ul>
+     *
+     * <p><strong>Note:</strong> {@link #updateCasInfo(int, int)} must be called before this request.
+     *
+     * @param request {@link CasSessionRequest} information of the current request.
+     * @param sessionResourceId a one-element array to return the granted cas session id.
+     *
+     * @return true if there is CAS session granted.
+     */
+    boolean requestCasSession(in CasSessionRequest request, out int[] sessionResourceId);
+
+    /*
+     * This API is used by the Tuner framework to request an available Lnb from the TunerHAL.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is Lnb available, the API would send the id back.
+     *
+     * <li>If no Lnb is available but the current request has a higher priority than other uses of
+     * lnbs, the API will send {@link ITunerResourceManagerCallback#onResourcesReclaim()} to the
+     * {@link Tuner}. Tuner would handle the resource reclaim on the holder of lower priority and
+     * notify the holder of its resource loss.
+     *
+     * <li>If no Lnb system can be granted, the API would return false.
+     * <ul>
+     *
+     * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this request.
+     *
+     * @param request {@link TunerLnbRequest} information of the current request.
+     * @param lnbId a one-element array to return the granted Lnb id.
+     *
+     * @return true if there is Lnb granted.
+     */
+    boolean requestLnb(in TunerLnbRequest request, out int[] lnbId);
+
+    /*
+     * Notifies the TRM that the given frontend has been released.
+     *
+     * <p>Client must call this whenever it releases a Tuner frontend.
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this release.
+     *
+     * @param frontendId the id of the released frontend.
+     */
+    void releaseFrontend(in int frontendId);
+
+    /*
+     * Notifies the TRM that the given Cas session has been released.
+     *
+     * <p>Client must call this whenever it releases a Cas session.
+     *
+     * <p><strong>Note:</strong> {@link #updateCasInfo(int, int)} must be called before this release.
+     *
+     * @param sessionResourceId the id of the released CAS session.
+     */
+    void releaseCasSession(in int sessionResourceId);
+
+    /*
+     * Notifies the TRM that the Lnb with the given id was released.
+     *
+     * <p>Client must call this whenever it releases an Lnb.
+     *
+     * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this release.
+     *
+     * @param lnbId the id of the released Tuner Lnb.
+     */
+    void releaseLnb(in int lnbId);
+
+    /*
+     * Compare two clients' priority.
+     *
+     * @param challengerProfile the {@link ResourceClientProfile} of the challenger.
+     * @param holderProfile the {@link ResourceClientProfile} of the holder of the resource.
+     *
+     * @return true if the challenger has higher priority than the holder.
+     */
+    boolean isHigherPriority(in ResourceClientProfile challengerProfile,
+            in ResourceClientProfile holderProfile);
+}
diff --git a/media/java/android/media/tv/tuner/ITunerResourceManagerListener.aidl b/media/java/android/media/tv/tuner/ITunerResourceManagerListener.aidl
new file mode 100644
index 0000000..557032c
--- /dev/null
+++ b/media/java/android/media/tv/tuner/ITunerResourceManagerListener.aidl
@@ -0,0 +1,33 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+/**
+ * Interface to receive callbacks from ITunerResourceManager.
+ *
+ * @hide
+ */
+oneway interface ITunerResourceManagerListener {
+    /*
+     * TRM invokes this method when the client's resources need to be reclaimed.
+     *
+     * <p>This method is implemented in Tuner Framework to take the reclaiming
+     * actions. It's a synchonized call. TRM would wait on the call to finish
+     * then grant the resource.
+     */
+    void onResourcesReclaim();
+}
\ No newline at end of file
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/tv/tuner/ResourceClientProfile.aidl
similarity index 68%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/tv/tuner/ResourceClientProfile.aidl
index f5e2405..da3c5c4 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/tv/tuner/ResourceClientProfile.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,12 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media.tv.tuner;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * A profile of a resource client. This profile is used to register the client info
+ * with the Tuner Resource Manager.
+ *
+ * @hide
+ */
+parcelable ResourceClientProfile;
\ No newline at end of file
diff --git a/media/java/android/media/tv/tuner/ResourceClientProfile.java b/media/java/android/media/tv/tuner/ResourceClientProfile.java
new file mode 100644
index 0000000..e203135
--- /dev/null
+++ b/media/java/android/media/tv/tuner/ResourceClientProfile.java
@@ -0,0 +1,129 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * A profile of a resource client. This profile is used to register the client info
+ * with the Tuner Resource Manager(TRM).
+ *
+ * @hide
+ */
+public final class ResourceClientProfile implements Parcelable {
+    static final String TAG = "ResourceClientProfile";
+
+    public static final
+                @NonNull
+                Parcelable.Creator<ResourceClientProfile> CREATOR =
+                new Parcelable.Creator<ResourceClientProfile>() {
+                @Override
+                public ResourceClientProfile createFromParcel(Parcel source) {
+                    try {
+                        return new ResourceClientProfile(source);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Exception creating ResourceClientProfile from parcel", e);
+                        return null;
+                    }
+                }
+
+                @Override
+                public ResourceClientProfile[] newArray(int size) {
+                    return new ResourceClientProfile[size];
+                }
+            };
+
+    /**
+     * This is used by TRM to get TV App’s processId from TIF.
+     * The processId will be used to identify foreground applications.
+     *
+     * <p>MediaCas, Tuner and TvInputHardwareManager get tvInputSessionId from TIS.
+     * If mTvInputSessionId is UNKNOWN, the client is always background.
+     */
+    private final String mTvInputSessionId;
+
+    /**
+     * Usage of the client.
+     */
+    private final int mUseCase;
+
+    private ResourceClientProfile(@NonNull Parcel source) {
+        mTvInputSessionId = source.readString();
+        mUseCase = source.readInt();
+    }
+
+    /**
+     * Constructs a new {@link ResourceClientProfile} with the given parameters.
+     *
+     * @param tvInputSessionId the unique id of the session owned by the client.
+     * @param useCase the usage of the client. Suggested priority hints are
+     *                {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_PLAYBACK}
+     *                {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_LIVE}
+     *                {@link android.media.tv.TvInputService.PRIORITY_HINT_USE_CASE_TYPE_RECORD}.
+     *                New [use case : priority value] pair can be defined in the manifest by the
+     *                OEM. Any undefined use case would cause IllegalArgumentException.
+     */
+    public ResourceClientProfile(@NonNull String tvInputSessionId,
+                                 int useCase) {
+        mTvInputSessionId = tvInputSessionId;
+        mUseCase = useCase;
+    }
+
+    /**
+     * Returns the tv input session id of the client.
+     *
+     * @return the value of the tv input session id.
+     */
+    @NonNull
+    public String getTvInputSessionId() {
+        return mTvInputSessionId;
+    }
+
+    /**
+     * Returns the user usage of the client.
+     *
+     * @return the value of use case.
+     */
+    public int getUseCase() {
+        return mUseCase;
+    }
+
+    // Parcelable
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder(128);
+        b.append("ResourceClientProfile {tvInputSessionId=").append(mTvInputSessionId);
+        b.append(", useCase=").append(mUseCase);
+        b.append("}");
+        return b.toString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeString(mTvInputSessionId);
+        dest.writeInt(mUseCase);
+    }
+}
diff --git a/media/java/android/media/tv/tuner/Tuner.java b/media/java/android/media/tv/tuner/Tuner.java
index 5e01244..9b183a3 100644
--- a/media/java/android/media/tv/tuner/Tuner.java
+++ b/media/java/android/media/tv/tuner/Tuner.java
@@ -74,6 +74,8 @@
     private List<Integer> mFrontendIds;
     private Frontend mFrontend;
     private EventHandler mHandler;
+    @Nullable
+    private FrontendInfo mFrontendInfo;
 
     private List<Integer> mLnbIds;
     private Lnb mLnb;
@@ -97,6 +99,7 @@
     public Tuner(@NonNull Context context, @NonNull String tvInputSessionId,
             @TvInputService.PriorityHintUseCaseType int useCase,
             @Nullable OnResourceLostListener listener) {
+        nativeSetup();
         mContext = context;
     }
 
@@ -185,7 +188,7 @@
     /**
      * Listener for resource lost.
      *
-     * <p>Resource is reclaimed and tuner instance is forced to close.
+     * <p>Insufficient resources are reclaimed by higher priority clients.
      */
     public interface OnResourceLostListener {
         /**
@@ -241,7 +244,7 @@
      *
      * <p>
      * Tuner events are started when {@link #tune(FrontendSettings)} is called and end when {@link
-     * #stopTune()} is called.
+     * #cancelTuning()} is called.
      *
      * @param eventListener receives tune events.
      * @throws SecurityException if the caller does not have appropriate permissions.
@@ -292,6 +295,7 @@
     @Result
     public int tune(@NonNull FrontendSettings settings) {
         TunerUtils.checkTunerPermission(mContext);
+        mFrontendInfo = null;
         return nativeTune(settings.getType(), settings);
     }
 
@@ -305,7 +309,7 @@
      */
     @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
     @Result
-    public int stopTune() {
+    public int cancelTuning() {
         TunerUtils.checkTunerPermission(mContext);
         return nativeStopTune();
     }
@@ -318,8 +322,8 @@
      * @param settings A {@link FrontendSettings} to configure the frontend.
      * @param scanType The scan type.
      * @throws SecurityException     if the caller does not have appropriate permissions.
-     * @throws IllegalStateException if {@code scan} is called again before {@link #stopScan()} is
-     *                               called.
+     * @throws IllegalStateException if {@code scan} is called again before
+     *                               {@link #cancelScanning()} is called.
      */
     @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
     @Result
@@ -333,6 +337,7 @@
         }
         mScanCallback = scanCallback;
         mScanCallbackExecutor = executor;
+        mFrontendInfo = null;
         return nativeScan(settings.getType(), settings, scanType);
     }
 
@@ -349,7 +354,7 @@
      */
     @RequiresPermission(android.Manifest.permission.ACCESS_TV_TUNER)
     @Result
-    public int stopScan() {
+    public int cancelScanning() {
         TunerUtils.checkTunerPermission(mContext);
         int retVal = nativeStopScan();
         mScanCallback = null;
@@ -468,7 +473,10 @@
         if (mFrontend == null) {
             throw new IllegalStateException("frontend is not initialized");
         }
-        return nativeGetFrontendInfo(mFrontend.mId);
+        if (mFrontendInfo == null) {
+            mFrontendInfo = nativeGetFrontendInfo(mFrontend.mId);
+        }
+        return mFrontendInfo;
     }
 
     /**
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/tv/tuner/TunerFrontendInfo.aidl
similarity index 71%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/tv/tuner/TunerFrontendInfo.aidl
index f5e2405..012e051 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/tv/tuner/TunerFrontendInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media.tv.tuner;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * Simple container of the FrontendInfo struct defined in the TunerHAL 1.0 interface.
+ *
+ * @hide
+ */
+parcelable TunerFrontendInfo;
\ No newline at end of file
diff --git a/media/java/android/media/tv/tuner/TunerFrontendInfo.java b/media/java/android/media/tv/tuner/TunerFrontendInfo.java
new file mode 100644
index 0000000..a62ecb3
--- /dev/null
+++ b/media/java/android/media/tv/tuner/TunerFrontendInfo.java
@@ -0,0 +1,141 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.NonNull;
+import android.media.tv.tuner.frontend.FrontendSettings.Type;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * Simple container of the FrontendInfo struct defined in the TunerHAL 1.0 interface.
+ *
+ * <p>Note that this object is defined to pass necessary frontend info between the
+ * Tuner Resource Manager and the client. It includes partial information in
+ * {@link FrontendInfo}.
+ *
+ * @hide
+ */
+public final class TunerFrontendInfo implements Parcelable {
+    static final String TAG = "TunerFrontendInfo";
+
+    public static final
+            @NonNull
+            Parcelable.Creator<TunerFrontendInfo> CREATOR =
+            new Parcelable.Creator<TunerFrontendInfo>() {
+                @Override
+                public TunerFrontendInfo createFromParcel(Parcel source) {
+                    try {
+                        return new TunerFrontendInfo(source);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Exception creating TunerFrontendInfo from parcel", e);
+                        return null;
+                    }
+                }
+
+                @Override
+                public TunerFrontendInfo[] newArray(int size) {
+                    return new TunerFrontendInfo[size];
+                }
+            };
+
+    private final int mId;
+
+    @Type
+    private final int mFrontendType;
+
+    /**
+     * Frontends are assigned with the same exclusiveGroupId if they can't
+     * function at same time. For instance, they share same hardware module.
+     */
+    private final int mExclusiveGroupId;
+
+    private TunerFrontendInfo(@NonNull Parcel source) {
+        mId = source.readInt();
+        mFrontendType = source.readInt();
+        mExclusiveGroupId = source.readInt();
+    }
+
+    /**
+     * Constructs a new {@link TunerFrontendInfo} with the given parameters.
+     *
+     * @param frontendType the type of the frontend.
+     * @param exclusiveGroupId the group id of the frontend. FE with the same
+                               group id can't function at the same time.
+     */
+    public TunerFrontendInfo(int id,
+                             @Type int frontendType,
+                             int exclusiveGroupId) {
+        mId = id;
+        mFrontendType = frontendType;
+        mExclusiveGroupId = exclusiveGroupId;
+    }
+
+    /**
+     * Returns the frontend id.
+     *
+     * @return the value of the frontend id.
+     */
+    public int getId() {
+        return mId;
+    }
+
+    /**
+     * Returns the application id that requests the tuner frontend resource.
+     *
+     * @return the value of the frontend type.
+     */
+    @Type
+    public int getFrontendType() {
+        return mFrontendType;
+    }
+
+    /**
+     * Returns the exclusiveGroupId. Frontends with the same exclusiveGroupId
+     * can't function at same time.
+     *
+     * @return the value of the exclusive group id.
+     */
+    public int getExclusiveGroupId() {
+        return mExclusiveGroupId;
+    }
+
+    // Parcelable
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder(128);
+        b.append("TunerFrontendInfo {id=").append(mId);
+        b.append(", frontendType=").append(mFrontendType);
+        b.append(", exclusiveGroupId=").append(mExclusiveGroupId);
+        b.append("}");
+        return b.toString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mId);
+        dest.writeInt(mFrontendType);
+        dest.writeInt(mExclusiveGroupId);
+    }
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/tv/tuner/TunerFrontendRequest.aidl
similarity index 74%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/tv/tuner/TunerFrontendRequest.aidl
index f5e2405..25c298f 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/tv/tuner/TunerFrontendRequest.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media.tv.tuner;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * Information required to request a Tuner Frontend.
+ *
+ * @hide
+ */
+parcelable TunerFrontendRequest;
\ No newline at end of file
diff --git a/media/java/android/media/tv/tuner/TunerFrontendRequest.java b/media/java/android/media/tv/tuner/TunerFrontendRequest.java
new file mode 100644
index 0000000..01a0a09
--- /dev/null
+++ b/media/java/android/media/tv/tuner/TunerFrontendRequest.java
@@ -0,0 +1,114 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.NonNull;
+import android.media.tv.tuner.frontend.FrontendSettings.Type;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * Information required to request a Tuner Frontend.
+ *
+ * @hide
+ */
+public final class TunerFrontendRequest implements Parcelable {
+    static final String TAG = "TunerFrontendRequest";
+
+    public static final
+            @NonNull
+            Parcelable.Creator<TunerFrontendRequest> CREATOR =
+            new Parcelable.Creator<TunerFrontendRequest>() {
+                @Override
+                public TunerFrontendRequest createFromParcel(Parcel source) {
+                    try {
+                        return new TunerFrontendRequest(source);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Exception creating TunerFrontendRequest from parcel", e);
+                        return null;
+                    }
+                }
+
+                @Override
+                public TunerFrontendRequest[] newArray(int size) {
+                    return new TunerFrontendRequest[size];
+                }
+            };
+
+    private final int mClientId;
+    @Type
+    private final int mFrontendType;
+
+    private TunerFrontendRequest(@NonNull Parcel source) {
+        mClientId = source.readInt();
+        mFrontendType = source.readInt();
+    }
+
+    /**
+     * Constructs a new {@link TunerFrontendRequest} with the given parameters.
+     *
+     * @param clientId the unique id of the client returned when registering profile.
+     * @param frontendType the type of the requested frontend.
+     */
+    public TunerFrontendRequest(int clientId,
+                                @Type int frontendType) {
+        mClientId = clientId;
+        mFrontendType = frontendType;
+    }
+
+    /**
+     * Returns the client id that requests the tuner frontend resource.
+     *
+     * @return the value of the client id.
+     */
+    public int getClientId() {
+        return mClientId;
+    }
+
+    /**
+     * Returns the frontend type that the client requests for.
+     *
+     * @return the value of the requested frontend type.
+     */
+    @Type
+    public int getFrontendType() {
+        return mFrontendType;
+    }
+
+    // Parcelable
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder(128);
+        b.append("TunerFrontendRequest {clientId=").append(mClientId);
+        b.append(", frontendType=").append(mFrontendType);
+        b.append("}");
+        return b.toString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mClientId);
+        dest.writeInt(mFrontendType);
+    }
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/media/java/android/media/tv/tuner/TunerLnbRequest.aidl
similarity index 75%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to media/java/android/media/tv/tuner/TunerLnbRequest.aidl
index f5e2405..b811e39 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/media/java/android/media/tv/tuner/TunerLnbRequest.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * Copyright 2020 The Android Open Source Project
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -14,6 +14,11 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package android.media.tv.tuner;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * Information required to request a Tuner Lnb.
+ *
+ * @hide
+ */
+parcelable TunerLnbRequest;
\ No newline at end of file
diff --git a/media/java/android/media/tv/tuner/TunerLnbRequest.java b/media/java/android/media/tv/tuner/TunerLnbRequest.java
new file mode 100644
index 0000000..60cd790
--- /dev/null
+++ b/media/java/android/media/tv/tuner/TunerLnbRequest.java
@@ -0,0 +1,96 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.util.Log;
+
+/**
+ * Information required to request a Tuner Lnb.
+ *
+ * @hide
+ */
+public final class TunerLnbRequest implements Parcelable {
+    static final String TAG = "TunerLnbRequest";
+
+    public static final
+            @NonNull
+                Parcelable.Creator<TunerLnbRequest> CREATOR =
+                new Parcelable.Creator<TunerLnbRequest>() {
+                @Override
+                public TunerLnbRequest createFromParcel(Parcel source) {
+                    try {
+                        return new TunerLnbRequest(source);
+                    } catch (Exception e) {
+                        Log.e(TAG, "Exception creating TunerLnbRequest from parcel", e);
+                        return null;
+                    }
+                }
+
+                @Override
+                public TunerLnbRequest[] newArray(int size) {
+                    return new TunerLnbRequest[size];
+                }
+            };
+
+    /**
+     * Client id of the client that sends the request.
+     */
+    private final int mClientId;
+
+    private TunerLnbRequest(@NonNull Parcel source) {
+        mClientId = source.readInt();
+    }
+
+    /**
+     * Constructs a new {@link TunerLnbRequest} with the given parameters.
+     *
+     * @param clientId the id of the client.
+     */
+    public TunerLnbRequest(int clientId) {
+        mClientId = clientId;
+    }
+
+    /**
+     * Returns the id of the client
+     */
+    public int getClientId() {
+        return mClientId;
+    }
+
+    // Parcelable
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @NonNull
+    @Override
+    public String toString() {
+        StringBuilder b = new StringBuilder(128);
+        b.append("TunerLnbRequest {clientId=").append(mClientId);
+        b.append("}");
+        return b.toString();
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mClientId);
+    }
+}
diff --git a/media/java/android/media/tv/tuner/TunerResourceManager.java b/media/java/android/media/tv/tuner/TunerResourceManager.java
new file mode 100644
index 0000000..68ca572
--- /dev/null
+++ b/media/java/android/media/tv/tuner/TunerResourceManager.java
@@ -0,0 +1,407 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.media.tv.tuner;
+
+import android.annotation.CallbackExecutor;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.RequiresFeature;
+import android.annotation.SystemService;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Binder;
+import android.os.RemoteException;
+import android.util.Log;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Interface of the Tuner Resource Manager(TRM). It manages resources used by TV Tuners.
+ * <p>Resources include:
+ * <ul>
+ * <li>TunerFrontend {@link android.media.tv.tuner.frontend}.
+ * <li>TunerLnb {@link android.media.tv.tuner.Lnb}.
+ * <li>MediaCas {@link android.media.MediaCas}.
+ * <ul>
+ *
+ * <p>Expected workflow is:
+ * <ul>
+ * <li>Tuner Java/MediaCas/TIF update resources of the current device with TRM.
+ * <li>Client registers its profile through {@link #registerClientProfile(ResourceClientProfile,
+ * Executor, ResourceListener, int[])}.
+ * <li>Client requests resources through request APIs.
+ * <li>If the resource needs to be handed to a higher priority client from a lower priority
+ * one, TRM calls ITunerResourceManagerListener registered by the lower priority client to release
+ * the resource.
+ * <ul>
+ *
+ * <p>TRM also exposes its priority comparison algorithm as a helping method to other services.
+ * {@see #isHigherPriority(ResourceClientProfile, ResourceClientProfile)}.
+ *
+ * @hide
+ */
+@RequiresFeature(PackageManager.FEATURE_LIVE_TV)
+@SystemService(Context.TV_TUNER_RESOURCE_MGR_SERVICE)
+public class TunerResourceManager {
+    private static final String TAG = "TunerResourceManager";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    public static final int INVALID_FRONTEND_ID = -1;
+    public static final int INVALID_CAS_SESSION_RESOURCE_ID = -1;
+    public static final int INVALID_LNB_ID = -1;
+    public static final int INVALID_TV_INPUT_DEVICE_ID = -1;
+    public static final int INVALID_TV_INPUT_PORT_ID = -1;
+
+    private final ITunerResourceManager mService;
+    private final int mUserId;
+
+    /**
+     * @hide
+     */
+    public TunerResourceManager(ITunerResourceManager service, int userId) {
+        mService = service;
+        mUserId = userId;
+    }
+
+    /**
+     * This API is used by the client to register their profile with the Tuner Resource manager.
+     *
+     * <p>The profile contains information that can show the base priority score of the client.
+     *
+     * @param profile {@link ResourceClientProfile} profile of the current client. Undefined use
+     *                case would cause IllegalArgumentException.
+     * @param executor the executor on which the listener would be invoked.
+     * @param listener {@link ResourceListener} callback to reclaim clients' resources when needed.
+     * @param clientId returned a clientId from the resource manager when the
+     *                 the client registeres.
+     * @throws IllegalArgumentException when {@code profile} contains undefined use case.
+     */
+    public void registerClientProfile(@NonNull ResourceClientProfile profile,
+                        @NonNull @CallbackExecutor Executor executor,
+                        @NonNull ResourceListener listener,
+                        @NonNull int[] clientId) {
+        // TODO: throw new IllegalArgumentException("Unknown client use case")
+        // when the use case is not defined.
+        try {
+            mService.registerClientProfile(profile,
+                    new ITunerResourceManagerListener.Stub() {
+                    @Override
+                public void onResourcesReclaim() {
+                        final long identity = Binder.clearCallingIdentity();
+                        try {
+                            executor.execute(() -> listener.onResourcesReclaim());
+                        } finally {
+                            Binder.restoreCallingIdentity(identity);
+                        }
+                    }
+                }, clientId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * This API is used by the client to unregister their profile with the
+     * Tuner Resource manager.
+     *
+     * @param clientId the client id that needs to be unregistered.
+     */
+    public void unregisterClientProfile(int clientId) {
+        try {
+            mService.unregisterClientProfile(clientId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * This API is used by client to update its registered {@link ResourceClientProfile}.
+     *
+     * <p>We recommend creating a new tuner instance for different use cases instead of using this
+     * API since different use cases may need different resources.
+     *
+     * <p>If TIS updates use case, it needs to ensure underneath resources are exchangeable between
+     * two different use cases.
+     *
+     * <p>Only the arbitrary priority and niceValue are allowed to be updated.
+     *
+     * @param clientId the id of the client that is updating its profile.
+     * @param priority the priority that the client would like to update to.
+     * @param niceValue the nice value that the client would like to update to.
+     *
+     * @return true if the update is successful.
+     */
+    public boolean updateClientPriority(int clientId, int priority, int niceValue) {
+        boolean result = false;
+        try {
+            result = mService.updateClientPriority(clientId, priority, niceValue);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return result;
+    }
+
+    /**
+     * Updates the current TRM of the TunerHAL Frontend information.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestFrontend(TunerFrontendRequest, int[])} and {@link #releaseFrontend(int)} call.
+     *
+     * @param infos an array of the available {@link TunerFrontendInfo} information.
+     */
+    public void setFrontendInfoList(@NonNull TunerFrontendInfo[] infos) {
+        try {
+            mService.setFrontendInfoList(infos);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Updates the TRM of the current CAS information.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestCasSession(CasSessionRequest, int[])} and {@link #releaseCasSession(int)}
+     * call.
+     *
+     * @param casSystemId id of the updating CAS system.
+     * @param maxSessionNum the max session number of the CAS system that is updated.
+     */
+    public void updateCasInfo(int casSystemId, int maxSessionNum) {
+        try {
+            mService.updateCasInfo(casSystemId, maxSessionNum);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Updates the TRM of the current Lnb information.
+     *
+     * <p><strong>Note:</strong> This update must happen before the first
+     * {@link #requestLnb(TunerLnbRequest, int[])} and {@link #releaseLnb(int)} call.
+     *
+     * @param lnbIds ids of the updating lnbs.
+     */
+    public void setLnbInfoList(int[] lnbIds) {
+        try {
+            mService.setLnbInfoList(lnbIds);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Requests a frontend resource.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is frontend available, the API would send the id back.
+     *
+     * <li>If no Frontend is available but the current request info can show higher priority than
+     * other uses of Frontend, the API will send
+     * {@link ITunerResourceManagerListener#onResourcesReclaim()} to the {@link Tuner}. Tuner would
+     * handle the resource reclaim on the holder of lower priority and notify the holder of its
+     * resource loss.
+     *
+     * <li>If no frontend can be granted, the API would return false.
+     * <ul>
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this request.
+     *
+     * @param request {@link TunerFrontendRequest} information of the current request.
+     * @param frontendId a one-element array to return the granted frontendId. If
+     *                   no frontend granted, this will return {@link #INVALID_FRONTEND_ID}.
+     *
+     * @return true if there is frontend granted.
+     */
+    public boolean requestFrontend(@NonNull TunerFrontendRequest request,
+                @Nullable int[] frontendId) {
+        boolean result = false;
+        try {
+            result = mService.requestFrontend(request, frontendId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return result;
+    }
+
+    /**
+     * Requests from the client to share frontend with an existing client.
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this request.
+     *
+     * @param selfClientId the id of the client that sends the request.
+     * @param targetClientId the id of the client to share the frontend with.
+     */
+    public void shareFrontend(int selfClientId, int targetClientId) {
+        try {
+            mService.shareFrontend(selfClientId, targetClientId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Requests a CAS session resource.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is Cas session available, the API would send the id back.
+     *
+     * <li>If no Cas system is available but the current request info can show higher priority than
+     * other uses of the cas sessions under the requested cas system, the API will send
+     * {@link ITunerResourceManagerListener#onResourcesReclaim()} to the {@link Tuner}. Tuner would
+     * handle the resource reclaim on the holder of lower priority and notify the holder of its
+     * resource loss.
+     *
+     * <p><strong>Note:</strong> {@link #updateCasInfo(int, int)} must be called before this
+     * request.
+     *
+     * @param request {@link CasSessionRequest} information of the current request.
+     * @param sessionResourceId a one-element array to return the granted cas session id.
+     *                          If no CAS granted, this will return
+     *                          {@link #INVALID_CAS_SESSION_RESOURCE_ID}.
+     *
+     * @return true if there is CAS session granted.
+     */
+    public boolean requestCasSession(@NonNull CasSessionRequest request,
+                @NonNull int[] sessionResourceId) {
+        boolean result = false;
+        try {
+            result = mService.requestCasSession(request, sessionResourceId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return result;
+    }
+
+    /**
+     * Requests a Tuner Lnb resource.
+     *
+     * <p>There are three possible scenarios:
+     * <ul>
+     * <li>If there is Lnb available, the API would send the id back.
+     *
+     * <li>If no Lnb is available but the current request has a higher priority than other uses of
+     * lnbs, the API will send {@link ITunerResourceManagerListener#onResourcesReclaim()} to the
+     * {@link Tuner}. Tuner would handle the resource reclaim on the holder of lower priority and
+     * notify the holder of its resource loss.
+     *
+     * <li>If no Lnb system can be granted, the API would return false.
+     * <ul>
+     *
+     * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this request.
+     *
+     * @param request {@link TunerLnbRequest} information of the current request.
+     * @param lnbId a one-element array to return the granted Lnb id.
+     *              If no Lnb granted, this will return {@link #INVALID_LNB_ID}.
+     *
+     * @return true if there is Lnb granted.
+     */
+    public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbId) {
+        boolean result = false;
+        try {
+            result = mService.requestLnb(request, lnbId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+        return result;
+    }
+
+    /**
+     * Notifies the TRM that the given frontend has been released.
+     *
+     * <p>Client must call this whenever it releases a Tuner frontend.
+     *
+     * <p><strong>Note:</strong> {@link #setFrontendInfoList(TunerFrontendInfo[])} must be called
+     * before this release.
+     *
+     * @param frontendId the id of the released frontend.
+     */
+    public void releaseFrontend(int frontendId) {
+        try {
+            mService.releaseFrontend(frontendId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Notifies the TRM that the given Cas session has been released.
+     *
+     * <p>Client must call this whenever it releases a Cas session.
+     *
+     * <p><strong>Note:</strong> {@link #updateCasInfo(int, int)} must be called before this
+     * release.
+     *
+     * @param sessionResourceId the id of the released CAS session.
+     */
+    public void releaseCasSession(int sessionResourceId) {
+        try {
+            mService.releaseCasSession(sessionResourceId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Notifies the TRM that the Lnb with the given id has been released.
+     *
+     * <p>Client must call this whenever it releases an Lnb.
+     *
+     * <p><strong>Note:</strong> {@link #setLnbInfos(int[])} must be called before this release.
+     *
+     * @param lnbId the id of the released Tuner Lnb.
+     */
+    public void releaseLnb(int lnbId) {
+        try {
+            mService.releaseLnb(lnbId);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Compare two clients' priority.
+     *
+     * @param challengerProfile the {@link ResourceClientProfile} of the challenger.
+     * @param holderProfile the {@link ResourceClientProfile} of the holder of the resource.
+     *
+     * @return true if the challenger has higher priority than the holder.
+     */
+    public boolean isHigherPriority(ResourceClientProfile challengerProfile,
+            ResourceClientProfile holderProfile) {
+        try {
+            return mService.isHigherPriority(challengerProfile, holderProfile);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Interface used to receive events from TunerResourceManager.
+     */
+    public abstract static class ResourceListener {
+        /*
+         * To reclaim all the resources of the callack owner.
+         */
+        public abstract void onResourcesReclaim();
+    }
+}
diff --git a/media/java/android/media/tv/tuner/filter/TsFilterConfiguration.java b/media/java/android/media/tv/tuner/filter/TsFilterConfiguration.java
index f186de6..6a8b6da 100644
--- a/media/java/android/media/tv/tuner/filter/TsFilterConfiguration.java
+++ b/media/java/android/media/tv/tuner/filter/TsFilterConfiguration.java
@@ -17,7 +17,6 @@
 package android.media.tv.tuner.filter;
 
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.content.Context;
@@ -43,13 +42,6 @@
     }
 
     /**
-     * Gets the {@link Settings} object of this filter configuration.
-     */
-    @Nullable
-    public Settings getSettings() {
-        return mSettings;
-    }
-    /**
      * Gets Tag Protocol ID.
      */
     public int getTpid() {
@@ -71,25 +63,13 @@
     /**
      * Builder for {@link TsFilterConfiguration}.
      */
-    public static class Builder {
-        private Settings mSettings;
+    public static class Builder extends FilterConfiguration.Builder<Builder> {
         private int mTpid;
 
         private Builder() {
         }
 
         /**
-         * Sets filter settings.
-         *
-         * @param settings the filter settings.
-         */
-        @NonNull
-        public Builder setSettings(@NonNull Settings settings) {
-            mSettings = settings;
-            return this;
-        }
-
-        /**
          * Sets Tag Protocol ID.
          *
          * @param tpid the Tag Protocol ID.
@@ -107,5 +87,10 @@
         public TsFilterConfiguration build() {
             return new TsFilterConfiguration(mSettings, mTpid);
         }
+
+        @Override
+        Builder self() {
+            return this;
+        }
     }
 }
diff --git a/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java b/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
index 85f3f72..b40ab00 100644
--- a/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/Atsc3FrontendSettings.java
@@ -327,7 +327,7 @@
      */
     public static class Builder extends FrontendSettings.Builder<Builder> {
         private int mBandwidth;
-        private byte mDemodOutputFormat;
+        private int mDemodOutputFormat;
         private Atsc3PlpSettings[] mPlpSettings;
 
         private Builder() {
@@ -345,7 +345,7 @@
          * Sets Demod Output Format.
          */
         @NonNull
-        public Builder setDemodOutputFormat(byte demodOutputFormat) {
+        public Builder setDemodOutputFormat(@DemodOutputFormat int demodOutputFormat) {
             mDemodOutputFormat = demodOutputFormat;
             return this;
         }
diff --git a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
index bfa4f3f..705d520 100644
--- a/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
+++ b/media/java/android/media/tv/tuner/frontend/DvbcFrontendSettings.java
@@ -147,11 +147,11 @@
     private final long mFec;
     private final int mSymbolRate;
     private final int mOuterFec;
-    private final byte mAnnex;
+    private final int mAnnex;
     private final int mSpectralInversion;
 
     private DvbcFrontendSettings(int frequency, int modulation, long fec, int symbolRate,
-            int outerFec, byte annex, int spectralInversion) {
+            int outerFec, int annex, int spectralInversion) {
         super(frequency);
         mModulation = modulation;
         mFec = fec;
@@ -192,7 +192,7 @@
      * Gets Annex.
      */
     @Annex
-    public byte getAnnex() {
+    public int getAnnex() {
         return mAnnex;
     }
     /**
@@ -223,7 +223,7 @@
         private long mFec;
         private int mSymbolRate;
         private int mOuterFec;
-        private byte mAnnex;
+        private int mAnnex;
         private int mSpectralInversion;
 
         private Builder() {
@@ -265,7 +265,7 @@
          * Sets Annex.
          */
         @NonNull
-        public Builder setAnnex(@Annex byte annex) {
+        public Builder setAnnex(@Annex int annex) {
             mAnnex = annex;
             return this;
         }
diff --git a/media/java/android/media/tv/tuner/frontend/FrontendStatus.java b/media/java/android/media/tv/tuner/frontend/FrontendStatus.java
index c1b17d3..63de0334 100644
--- a/media/java/android/media/tv/tuner/frontend/FrontendStatus.java
+++ b/media/java/android/media/tv/tuner/frontend/FrontendStatus.java
@@ -41,8 +41,7 @@
             FRONTEND_STATUS_TYPE_MODULATION, FRONTEND_STATUS_TYPE_SPECTRAL,
             FRONTEND_STATUS_TYPE_LNB_VOLTAGE, FRONTEND_STATUS_TYPE_PLP_ID,
             FRONTEND_STATUS_TYPE_EWBS, FRONTEND_STATUS_TYPE_AGC, FRONTEND_STATUS_TYPE_LNA,
-            FRONTEND_STATUS_TYPE_LAYER_ERROR, FRONTEND_STATUS_TYPE_VBER_CN,
-            FRONTEND_STATUS_TYPE_LBER_CN, FRONTEND_STATUS_TYPE_XER_CN, FRONTEND_STATUS_TYPE_MER,
+            FRONTEND_STATUS_TYPE_LAYER_ERROR, FRONTEND_STATUS_TYPE_MER,
             FRONTEND_STATUS_TYPE_FREQ_OFFSET, FRONTEND_STATUS_TYPE_HIERARCHY,
             FRONTEND_STATUS_TYPE_RF_LOCK, FRONTEND_STATUS_TYPE_ATSC3_PLP_INFO})
     @Retention(RetentionPolicy.SOURCE)
@@ -125,18 +124,6 @@
     public static final int FRONTEND_STATUS_TYPE_LAYER_ERROR =
             Constants.FrontendStatusType.LAYER_ERROR;
     /**
-     * CN value by VBER.
-     */
-    public static final int FRONTEND_STATUS_TYPE_VBER_CN = Constants.FrontendStatusType.VBER_CN;
-    /**
-     * CN value by LBER.
-     */
-    public static final int FRONTEND_STATUS_TYPE_LBER_CN = Constants.FrontendStatusType.LBER_CN;
-    /**
-     * CN value by XER.
-     */
-    public static final int FRONTEND_STATUS_TYPE_XER_CN = Constants.FrontendStatusType.XER_CN;
-    /**
      * Modulation Error Ratio.
      */
     public static final int FRONTEND_STATUS_TYPE_MER = Constants.FrontendStatusType.MER;
@@ -223,9 +210,6 @@
     private Integer mAgc;
     private Boolean mIsLnaOn;
     private boolean[] mIsLayerErrors;
-    private Integer mVberCn;
-    private Integer mLberCn;
-    private Integer mXerCn;
     private Integer mMer;
     private Integer mFreqOffset;
     private Integer mHierarchy;
@@ -403,33 +387,6 @@
         return mIsLayerErrors;
     }
     /**
-     * Gets CN value by VBER in thousandths of a deciBel (0.001dB).
-     */
-    public int getVberCn() {
-        if (mVberCn == null) {
-            throw new IllegalStateException();
-        }
-        return mVberCn;
-    }
-    /**
-     * Gets CN value by LBER in thousandths of a deciBel (0.001dB).
-     */
-    public int getLberCn() {
-        if (mLberCn == null) {
-            throw new IllegalStateException();
-        }
-        return mLberCn;
-    }
-    /**
-     * Gets CN value by XER in thousandths of a deciBel (0.001dB).
-     */
-    public int getXerCn() {
-        if (mXerCn == null) {
-            throw new IllegalStateException();
-        }
-        return mXerCn;
-    }
-    /**
      * Gets Modulation Error Ratio in thousandths of a deciBel (0.001dB).
      */
     public int getMer() {
diff --git a/media/java/android/media/tv/tuner/frontend/ScanCallback.java b/media/java/android/media/tv/tuner/frontend/ScanCallback.java
index f90144b..8105c74 100644
--- a/media/java/android/media/tv/tuner/frontend/ScanCallback.java
+++ b/media/java/android/media/tv/tuner/frontend/ScanCallback.java
@@ -67,7 +67,7 @@
     /** Frontend hierarchy. */
     void onHierarchy(@DvbtFrontendSettings.Hierarchy int hierarchy);
 
-    /** Frontend hierarchy. */
+    /** Frontend signal type. */
     void onSignalType(@AnalogFrontendSettings.SignalType int signalType);
 
 }
diff --git a/media/java/android/mtp/MtpDatabase.java b/media/java/android/mtp/MtpDatabase.java
index f3c071a0..e6962a1 100755
--- a/media/java/android/mtp/MtpDatabase.java
+++ b/media/java/android/mtp/MtpDatabase.java
@@ -27,7 +27,9 @@
 import android.content.SharedPreferences;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
+import android.graphics.Bitmap;
 import android.media.ExifInterface;
+import android.media.ThumbnailUtils;
 import android.net.Uri;
 import android.os.BatteryManager;
 import android.os.RemoteException;
@@ -49,6 +51,7 @@
 
 import com.google.android.collect.Sets;
 
+import java.io.ByteArrayOutputStream;
 import java.io.File;
 import java.io.IOException;
 import java.nio.file.Path;
@@ -71,6 +74,7 @@
  */
 public class MtpDatabase implements AutoCloseable {
     private static final String TAG = MtpDatabase.class.getSimpleName();
+    private static final int MAX_THUMB_SIZE = (200 * 1024);
 
     private final Context mContext;
     private final ContentProviderClient mMediaProvider;
@@ -722,6 +726,7 @@
                 return MtpConstants.RESPONSE_OK;
             case MtpConstants.DEVICE_PROPERTY_IMAGE_SIZE:
                 // use screen size as max image size
+                // TODO(b/147721765): Add support for foldables/multi-display devices.
                 Display display = ((WindowManager) mContext.getSystemService(
                         Context.WINDOW_SERVICE)).getDefaultDisplay();
                 int width = display.getMaximumSizeDimension();
@@ -802,6 +807,28 @@
         return obj.getFormat();
     }
 
+    private byte[] getThumbnailProcess(String path, Bitmap bitmap) {
+        try {
+            if (bitmap == null) {
+                Log.d(TAG, "getThumbnailProcess: Fail to generate thumbnail. Probably unsupported or corrupted image");
+                return null;
+            }
+
+            ByteArrayOutputStream byteStream = new ByteArrayOutputStream();
+            bitmap.compress(Bitmap.CompressFormat.JPEG, 100, byteStream);
+
+            if (byteStream.size() > MAX_THUMB_SIZE)
+                return null;
+
+            byte[] byteArray = byteStream.toByteArray();
+
+            return byteArray;
+        } catch (OutOfMemoryError oomEx) {
+            Log.w(TAG, "OutOfMemoryError:" + oomEx);
+        }
+        return null;
+    }
+
     @VisibleForNative
     private boolean getThumbnailInfo(int handle, long[] outLongs) {
         MtpStorageManager.MtpObject obj = mManager.getObject(handle);
@@ -824,6 +851,16 @@
                 } catch (IOException e) {
                     // ignore and fall through
                 }
+
+// Note: above formats will fall through and go on below thumbnail generation if Exif processing fails
+            case MtpConstants.FORMAT_PNG:
+            case MtpConstants.FORMAT_GIF:
+            case MtpConstants.FORMAT_BMP:
+                outLongs[0] = MAX_THUMB_SIZE;
+            // only non-zero Width & Height needed. Actual size will be retrieved upon getThumbnailData by Host
+                outLongs[1] = 320;
+                outLongs[2] = 240;
+                return true;
         }
         return false;
     }
@@ -846,6 +883,17 @@
                 } catch (IOException e) {
                     // ignore and fall through
                 }
+
+// Note: above formats will fall through and go on below thumbnail generation if Exif processing fails
+            case MtpConstants.FORMAT_PNG:
+            case MtpConstants.FORMAT_GIF:
+            case MtpConstants.FORMAT_BMP:
+                {
+                    Bitmap bitmap = ThumbnailUtils.createImageThumbnail(path, MediaStore.Images.Thumbnails.MINI_KIND);
+                    byte[] byteArray = getThumbnailProcess(path, bitmap);
+
+                    return byteArray;
+                }
         }
         return null;
     }
diff --git a/media/jni/android_media_MediaCodec.cpp b/media/jni/android_media_MediaCodec.cpp
index 9b37f95..71ba59c 100644
--- a/media/jni/android_media_MediaCodec.cpp
+++ b/media/jni/android_media_MediaCodec.cpp
@@ -724,18 +724,21 @@
     }
 
     if (buffer->size() > 0) {
-        // asC2Buffer clears internal reference, so set the reference again.
         std::shared_ptr<C2Buffer> c2Buffer = buffer->asC2Buffer();
-        buffer->copy(c2Buffer);
         if (c2Buffer) {
+            // asC2Buffer clears internal reference, so set the reference again.
+            buffer->copy(c2Buffer);
             switch (c2Buffer->data().type()) {
                 case C2BufferData::LINEAR: {
                     std::unique_ptr<JMediaCodecLinearBlock> context{new JMediaCodecLinearBlock};
                     context->mBuffer = c2Buffer;
                     ScopedLocalRef<jobject> linearBlock{env, env->NewObject(
                             gLinearBlockInfo.clazz, gLinearBlockInfo.ctorId)};
-                    env->SetLongField(
-                            linearBlock.get(), gLinearBlockInfo.contextId, (jlong)context.release());
+                    env->CallVoidMethod(
+                            linearBlock.get(),
+                            gLinearBlockInfo.setInternalStateId,
+                            (jlong)context.release(),
+                            true);
                     env->SetObjectField(frame, gFields.outputFrameLinearBlockID, linearBlock.get());
                     break;
                 }
@@ -744,8 +747,11 @@
                     context->mBuffer = c2Buffer;
                     ScopedLocalRef<jobject> graphicBlock{env, env->NewObject(
                             gGraphicBlockInfo.clazz, gGraphicBlockInfo.ctorId)};
-                    env->SetLongField(
-                            graphicBlock.get(), gGraphicBlockInfo.contextId, (jlong)context.release());
+                    env->CallVoidMethod(
+                            graphicBlock.get(),
+                            gGraphicBlockInfo.setInternalStateId,
+                            (jlong)context.release(),
+                            true);
                     env->SetObjectField(frame, gFields.outputFrameGraphicBlockID, graphicBlock.get());
                     break;
                 }
@@ -761,16 +767,22 @@
                 context->mLegacyBuffer = buffer;
                 ScopedLocalRef<jobject> linearBlock{env, env->NewObject(
                         gLinearBlockInfo.clazz, gLinearBlockInfo.ctorId)};
-                env->SetLongField(
-                        linearBlock.get(), gLinearBlockInfo.contextId, (jlong)context.release());
+                env->CallVoidMethod(
+                        linearBlock.get(),
+                        gLinearBlockInfo.setInternalStateId,
+                        (jlong)context.release(),
+                        true);
                 env->SetObjectField(frame, gFields.outputFrameLinearBlockID, linearBlock.get());
             } else {
                 std::unique_ptr<JMediaCodecGraphicBlock> context{new JMediaCodecGraphicBlock};
                 context->mLegacyBuffer = buffer;
                 ScopedLocalRef<jobject> graphicBlock{env, env->NewObject(
                         gGraphicBlockInfo.clazz, gGraphicBlockInfo.ctorId)};
-                env->SetLongField(
-                        graphicBlock.get(), gGraphicBlockInfo.contextId, (jlong)context.release());
+                env->CallVoidMethod(
+                        graphicBlock.get(),
+                        gGraphicBlockInfo.setInternalStateId,
+                        (jlong)context.release(),
+                        true);
                 env->SetObjectField(frame, gFields.outputFrameGraphicBlockID, graphicBlock.get());
             }
         }
diff --git a/media/jni/android_media_tv_Tuner.cpp b/media/jni/android_media_tv_Tuner.cpp
index 007d367..08c3f98 100644
--- a/media/jni/android_media_tv_Tuner.cpp
+++ b/media/jni/android_media_tv_Tuner.cpp
@@ -41,6 +41,54 @@
 using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSettings;
 using ::android::hardware::tv::tuner::V1_0::FrontendAnalogSifStandard;
 using ::android::hardware::tv::tuner::V1_0::FrontendAnalogType;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Bandwidth;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3CodeRate;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3DemodOutputFormat;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Fec;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Modulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3PlpSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3Settings;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtsc3TimeInterleaveMode;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtscSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendAtscModulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbcAnnex;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbcModulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbcOuterFec;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbcSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbcSpectralInversion;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsCodeRate;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsModulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsPilot;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsRolloff;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsStandard;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbsVcmMode;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtBandwidth;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtCoderate;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtConstellation;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtGuardInterval;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtHierarchy;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtPlpMode;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtStandard;
+using ::android::hardware::tv::tuner::V1_0::FrontendDvbtTransmissionMode;
+using ::android::hardware::tv::tuner::V1_0::FrontendInnerFec;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Coderate;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Modulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Rolloff;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbs3Settings;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsCoderate;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsModulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsRolloff;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbsStreamIdType;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtBandwidth;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtCoderate;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtGuardInterval;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtMode;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtModulation;
+using ::android::hardware::tv::tuner::V1_0::FrontendIsdbtSettings;
+using ::android::hardware::tv::tuner::V1_0::FrontendType;
 using ::android::hardware::tv::tuner::V1_0::ITuner;
 using ::android::hardware::tv::tuner::V1_0::PlaybackSettings;
 using ::android::hardware::tv::tuner::V1_0::RecordSettings;
@@ -274,6 +322,179 @@
             (jint) jId);
 }
 
+jobject JTuner::getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
+
+    jint typeCap = caps.analogCaps().typeCap;
+    jint sifStandardCap = caps.analogCaps().sifStandardCap;
+    return env->NewObject(clazz, capsInit, typeCap, sifStandardCap);
+}
+
+jobject JTuner::getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3FrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIII)V");
+
+    jint bandwidthCap = caps.atsc3Caps().bandwidthCap;
+    jint modulationCap = caps.atsc3Caps().modulationCap;
+    jint timeInterleaveModeCap = caps.atsc3Caps().timeInterleaveModeCap;
+    jint codeRateCap = caps.atsc3Caps().codeRateCap;
+    jint fecCap = caps.atsc3Caps().fecCap;
+    jint demodOutputFormatCap = caps.atsc3Caps().demodOutputFormatCap;
+
+    return env->NewObject(clazz, capsInit, bandwidthCap, modulationCap, timeInterleaveModeCap,
+            codeRateCap, fecCap, demodOutputFormatCap);
+}
+
+jobject JTuner::getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AtscFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(I)V");
+
+    jint modulationCap = caps.atscCaps().modulationCap;
+
+    return env->NewObject(clazz, capsInit, modulationCap);
+}
+
+jobject JTuner::getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbcFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(III)V");
+
+    jint modulationCap = caps.dvbcCaps().modulationCap;
+    jint fecCap = caps.dvbcCaps().fecCap;
+    jint annexCap = caps.dvbcCaps().annexCap;
+
+    return env->NewObject(clazz, capsInit, modulationCap, fecCap, annexCap);
+}
+
+jobject JTuner::getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbsFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IJI)V");
+
+    jint modulationCap = caps.dvbsCaps().modulationCap;
+    jlong innerfecCap = caps.dvbsCaps().innerfecCap;
+    jint standard = caps.dvbsCaps().standard;
+
+    return env->NewObject(clazz, capsInit, modulationCap, innerfecCap, standard);
+}
+
+jobject JTuner::getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbtFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIIIIZZ)V");
+
+    jint transmissionModeCap = caps.dvbtCaps().transmissionModeCap;
+    jint bandwidthCap = caps.dvbtCaps().bandwidthCap;
+    jint constellationCap = caps.dvbtCaps().constellationCap;
+    jint coderateCap = caps.dvbtCaps().coderateCap;
+    jint hierarchyCap = caps.dvbtCaps().hierarchyCap;
+    jint guardIntervalCap = caps.dvbtCaps().guardIntervalCap;
+    jboolean isT2Supported = caps.dvbtCaps().isT2Supported;
+    jboolean isMisoSupported = caps.dvbtCaps().isMisoSupported;
+
+    return env->NewObject(clazz, capsInit, transmissionModeCap, bandwidthCap, constellationCap,
+            coderateCap, hierarchyCap, guardIntervalCap, isT2Supported, isMisoSupported);
+}
+
+jobject JTuner::getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Isdbs3FrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
+
+    jint modulationCap = caps.isdbs3Caps().modulationCap;
+    jint coderateCap = caps.isdbs3Caps().coderateCap;
+
+    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
+}
+
+jobject JTuner::getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbsFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(II)V");
+
+    jint modulationCap = caps.isdbsCaps().modulationCap;
+    jint coderateCap = caps.isdbsCaps().coderateCap;
+
+    return env->NewObject(clazz, capsInit, modulationCap, coderateCap);
+}
+
+jobject JTuner::getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendCapabilities");
+    jmethodID capsInit = env->GetMethodID(clazz, "<init>", "(IIIII)V");
+
+    jint modeCap = caps.isdbtCaps().modeCap;
+    jint bandwidthCap = caps.isdbtCaps().bandwidthCap;
+    jint modulationCap = caps.isdbtCaps().modulationCap;
+    jint coderateCap = caps.isdbtCaps().coderateCap;
+    jint guardIntervalCap = caps.isdbtCaps().guardIntervalCap;
+
+    return env->NewObject(clazz, capsInit, modeCap, bandwidthCap, modulationCap, coderateCap,
+            guardIntervalCap);
+}
+
+jobject JTuner::getFrontendInfo(int id) {
+    FrontendInfo feInfo;
+    Result res;
+    mTuner->getFrontendInfo(id, [&](Result r, const FrontendInfo& info) {
+        feInfo = info;
+        res = r;
+    });
+    if (res != Result::SUCCESS) {
+        return NULL;
+    }
+
+    JNIEnv *env = AndroidRuntime::getJNIEnv();
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/FrontendInfo");
+    jmethodID infoInit = env->GetMethodID(clazz, "<init>",
+            "(IIIIIIII[ILandroid/media/tv/tuner/frontend/FrontendCapabilities;)V");
+
+    jint type = (jint) feInfo.type;
+    jint minFrequency = feInfo.minFrequency;
+    jint maxFrequency = feInfo.maxFrequency;
+    jint minSymbolRate = feInfo.minSymbolRate;
+    jint maxSymbolRate = feInfo.maxSymbolRate;
+    jint acquireRange = feInfo.acquireRange;
+    jint exclusiveGroupId = feInfo.exclusiveGroupId;
+    jintArray statusCaps = env->NewIntArray(feInfo.statusCaps.size());
+    env->SetIntArrayRegion(
+            statusCaps, 0, feInfo.statusCaps.size(),
+            reinterpret_cast<jint*>(&feInfo.statusCaps[0]));
+    FrontendInfo::FrontendCapabilities caps = feInfo.frontendCaps;
+
+    jobject jcaps = NULL;
+    switch(feInfo.type) {
+        case FrontendType::ANALOG:
+            jcaps = getAnalogFrontendCaps(env, caps);
+            break;
+        case FrontendType::ATSC3:
+            jcaps = getAtsc3FrontendCaps(env, caps);
+            break;
+        case FrontendType::ATSC:
+            jcaps = getAtscFrontendCaps(env, caps);
+            break;
+        case FrontendType::DVBC:
+            jcaps = getDvbcFrontendCaps(env, caps);
+            break;
+        case FrontendType::DVBS:
+            jcaps = getDvbsFrontendCaps(env, caps);
+            break;
+        case FrontendType::DVBT:
+            jcaps = getDvbtFrontendCaps(env, caps);
+            break;
+        case FrontendType::ISDBS:
+            jcaps = getIsdbsFrontendCaps(env, caps);
+            break;
+        case FrontendType::ISDBS3:
+            jcaps = getIsdbs3FrontendCaps(env, caps);
+            break;
+        case FrontendType::ISDBT:
+            jcaps = getIsdbtFrontendCaps(env, caps);
+            break;
+        default:
+            break;
+    }
+
+    return env->NewObject(
+            clazz, infoInit, (jint) id, type, minFrequency, maxFrequency, minSymbolRate,
+            maxSymbolRate, acquireRange, exclusiveGroupId, statusCaps, jcaps);
+}
+
 jobject JTuner::getLnbIds() {
     ALOGD("JTuner::getLnbIds()");
     mTuner->getLnbIds([&](Result, const hidl_vec<FrontendId>& lnbIds) {
@@ -329,6 +550,15 @@
     return (int)result;
 }
 
+int JTuner::stopTune() {
+    if (mFe == NULL) {
+        ALOGE("frontend is not initialized");
+        return (int)Result::INVALID_STATE;
+    }
+    Result result = mFe->stopTune();
+    return (int)result;
+}
+
 int JTuner::scan(const FrontendSettings& settings, FrontendScanType scanType) {
     if (mFe == NULL) {
         ALOGE("frontend is not initialized");
@@ -338,6 +568,33 @@
     return (int)result;
 }
 
+int JTuner::stopScan() {
+    if (mFe == NULL) {
+        ALOGE("frontend is not initialized");
+        return (int)Result::INVALID_STATE;
+    }
+    Result result = mFe->stopScan();
+    return (int)result;
+}
+
+int JTuner::setLnb(int id) {
+    if (mFe == NULL) {
+        ALOGE("frontend is not initialized");
+        return (int)Result::INVALID_STATE;
+    }
+    Result result = mFe->setLnb(id);
+    return (int)result;
+}
+
+int JTuner::setLna(bool enable) {
+    if (mFe == NULL) {
+        ALOGE("frontend is not initialized");
+        return (int)Result::INVALID_STATE;
+    }
+    Result result = mFe->setLna(enable);
+    return (int)result;
+}
+
 bool JTuner::openDemux() {
     if (mTuner == nullptr) {
         return false;
@@ -493,32 +750,437 @@
     return demuxPid;
 }
 
-static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject settings) {
-    FrontendSettings frontendSettings;
+static uint32_t getFrontendSettingsFreq(JNIEnv *env, const jobject& settings) {
     jclass clazz = env->FindClass("android/media/tv/tuner/frontend/FrontendSettings");
     jfieldID freqField = env->GetFieldID(clazz, "mFrequency", "I");
-    uint32_t freq = static_cast<uint32_t>(env->GetIntField(clazz, freqField));
+    uint32_t freq = static_cast<uint32_t>(env->GetIntField(settings, freqField));
+    return freq;
+}
 
-    // TODO: handle the other 8 types of settings
-    if (type == 1) {
-        // analog
-        clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendSettings");
-        FrontendAnalogType analogType =
-                static_cast<FrontendAnalogType>(
-                        env->GetIntField(settings, env->GetFieldID(clazz, "mAnalogType", "I")));
-        FrontendAnalogSifStandard sifStandard =
-                static_cast<FrontendAnalogSifStandard>(
-                        env->GetIntField(settings, env->GetFieldID(clazz, "mSifStandard", "I")));
-        FrontendAnalogSettings frontendAnalogSettings {
-                .frequency = freq,
-                .type = analogType,
-                .sifStandard = sifStandard,
-        };
-        frontendSettings.analog(frontendAnalogSettings);
-    }
+static FrontendSettings getAnalogFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AnalogFrontendSettings");
+    FrontendAnalogType analogType =
+            static_cast<FrontendAnalogType>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSignalType", "I")));
+    FrontendAnalogSifStandard sifStandard =
+            static_cast<FrontendAnalogSifStandard>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSifStandard", "I")));
+    FrontendAnalogSettings frontendAnalogSettings {
+            .frequency = freq,
+            .type = analogType,
+            .sifStandard = sifStandard,
+    };
+    frontendSettings.analog(frontendAnalogSettings);
     return frontendSettings;
 }
 
+static hidl_vec<FrontendAtsc3PlpSettings> getAtsc3PlpSettings(
+        JNIEnv *env, const jobject& settings) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3FrontendSettings");
+    jobjectArray plpSettings =
+            reinterpret_cast<jobjectArray>(
+                    env->GetObjectField(settings,
+                            env->GetFieldID(
+                                    clazz,
+                                    "mPlpSettings",
+                                    "[Landroid/media/tv/tuner/frontend/Atsc3PlpSettings;")));
+    int len = env->GetArrayLength(plpSettings);
+
+    jclass plpClazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3PlpSettings");
+    hidl_vec<FrontendAtsc3PlpSettings> plps = hidl_vec<FrontendAtsc3PlpSettings>(len);
+    // parse PLP settings
+    for (int i = 0; i < len; i++) {
+        jobject plp = env->GetObjectArrayElement(plpSettings, i);
+        uint8_t plpId =
+                static_cast<uint8_t>(
+                        env->GetIntField(plp, env->GetFieldID(plpClazz, "mPlpId", "I")));
+        FrontendAtsc3Modulation modulation =
+                static_cast<FrontendAtsc3Modulation>(
+                        env->GetIntField(plp, env->GetFieldID(plpClazz, "mModulation", "I")));
+        FrontendAtsc3TimeInterleaveMode interleaveMode =
+                static_cast<FrontendAtsc3TimeInterleaveMode>(
+                        env->GetIntField(
+                                plp, env->GetFieldID(plpClazz, "mInterleaveMode", "I")));
+        FrontendAtsc3CodeRate codeRate =
+                static_cast<FrontendAtsc3CodeRate>(
+                        env->GetIntField(plp, env->GetFieldID(plpClazz, "mCodeRate", "I")));
+        FrontendAtsc3Fec fec =
+                static_cast<FrontendAtsc3Fec>(
+                        env->GetIntField(plp, env->GetFieldID(plpClazz, "mFec", "I")));
+        FrontendAtsc3PlpSettings frontendAtsc3PlpSettings {
+                .plpId = plpId,
+                .modulation = modulation,
+                .interleaveMode = interleaveMode,
+                .codeRate = codeRate,
+                .fec = fec,
+        };
+        plps[i] = frontendAtsc3PlpSettings;
+    }
+    return plps;
+}
+
+static FrontendSettings getAtsc3FrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Atsc3FrontendSettings");
+
+    FrontendAtsc3Bandwidth bandwidth =
+            static_cast<FrontendAtsc3Bandwidth>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I")));
+    FrontendAtsc3DemodOutputFormat demod =
+            static_cast<FrontendAtsc3DemodOutputFormat>(
+                    env->GetIntField(
+                            settings, env->GetFieldID(clazz, "mDemodOutputFormat", "I")));
+    hidl_vec<FrontendAtsc3PlpSettings> plps = getAtsc3PlpSettings(env, settings);
+    FrontendAtsc3Settings frontendAtsc3Settings {
+            .frequency = freq,
+            .bandwidth = bandwidth,
+            .demodOutputFormat = demod,
+            .plpSettings = plps,
+    };
+    frontendSettings.atsc3(frontendAtsc3Settings);
+    return frontendSettings;
+}
+
+static FrontendSettings getAtscFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/AtscFrontendSettings");
+    FrontendAtscModulation modulation =
+            static_cast<FrontendAtscModulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    FrontendAtscSettings frontendAtscSettings {
+            .frequency = freq,
+            .modulation = modulation,
+    };
+    frontendSettings.atsc(frontendAtscSettings);
+    return frontendSettings;
+}
+
+static FrontendSettings getDvbcFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbcFrontendSettings");
+    FrontendDvbcModulation modulation =
+            static_cast<FrontendDvbcModulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    FrontendInnerFec innerFec =
+            static_cast<FrontendInnerFec>(
+                    env->GetLongField(settings, env->GetFieldID(clazz, "mFec", "J")));
+    uint32_t symbolRate =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSymbolRate", "I")));
+    FrontendDvbcOuterFec outerFec =
+            static_cast<FrontendDvbcOuterFec>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mOuterFec", "I")));
+    FrontendDvbcAnnex annex =
+            static_cast<FrontendDvbcAnnex>(
+                    env->GetByteField(settings, env->GetFieldID(clazz, "mAnnex", "B")));
+    FrontendDvbcSpectralInversion spectralInversion =
+            static_cast<FrontendDvbcSpectralInversion>(
+                    env->GetIntField(
+                            settings, env->GetFieldID(clazz, "mSpectralInversion", "I")));
+    FrontendDvbcSettings frontendDvbcSettings {
+            .frequency = freq,
+            .modulation = modulation,
+            .fec = innerFec,
+            .symbolRate = symbolRate,
+            .outerFec = outerFec,
+            .annex = annex,
+            .spectralInversion = spectralInversion,
+    };
+    frontendSettings.dvbc(frontendDvbcSettings);
+    return frontendSettings;
+}
+
+static FrontendDvbsCodeRate getDvbsCodeRate(JNIEnv *env, const jobject& settings) {
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbsFrontendSettings");
+    jobject jcodeRate =
+            env->GetObjectField(settings,
+                    env->GetFieldID(
+                            clazz,
+                            "mCodeRate",
+                            "Landroid/media/tv/tuner/frontend/DvbsCodeRate;"));
+
+    jclass codeRateClazz = env->FindClass("android/media/tv/tuner/frontend/DvbsCodeRate");
+    FrontendInnerFec innerFec =
+            static_cast<FrontendInnerFec>(
+                    env->GetLongField(
+                            jcodeRate, env->GetFieldID(codeRateClazz, "mInnerFec", "J")));
+    bool isLinear =
+            static_cast<bool>(
+                    env->GetBooleanField(
+                            jcodeRate, env->GetFieldID(codeRateClazz, "mIsLinear", "Z")));
+    bool isShortFrames =
+            static_cast<bool>(
+                    env->GetBooleanField(
+                            jcodeRate, env->GetFieldID(codeRateClazz, "mIsShortFrames", "Z")));
+    uint32_t bitsPer1000Symbol =
+            static_cast<uint32_t>(
+                    env->GetIntField(
+                            jcodeRate, env->GetFieldID(
+                                    codeRateClazz, "mBitsPer1000Symbol", "I")));
+    FrontendDvbsCodeRate coderate {
+            .fec = innerFec,
+            .isLinear = isLinear,
+            .isShortFrames = isShortFrames,
+            .bitsPer1000Symbol = bitsPer1000Symbol,
+    };
+    return coderate;
+}
+
+static FrontendSettings getDvbsFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbsFrontendSettings");
+
+
+    FrontendDvbsModulation modulation =
+            static_cast<FrontendDvbsModulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    uint32_t symbolRate =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSymbolRate", "I")));
+    FrontendDvbsRolloff rolloff =
+            static_cast<FrontendDvbsRolloff>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mRolloff", "I")));
+    FrontendDvbsPilot pilot =
+            static_cast<FrontendDvbsPilot>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mPilot", "I")));
+    uint32_t inputStreamId =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mInputStreamId", "I")));
+    FrontendDvbsStandard standard =
+            static_cast<FrontendDvbsStandard>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStandard", "I")));
+    FrontendDvbsVcmMode vcmMode =
+            static_cast<FrontendDvbsVcmMode>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mVcmMode", "I")));
+    FrontendDvbsCodeRate coderate = getDvbsCodeRate(env, settings);
+
+    FrontendDvbsSettings frontendDvbsSettings {
+            .frequency = freq,
+            .modulation = modulation,
+            .coderate = coderate,
+            .symbolRate = symbolRate,
+            .rolloff = rolloff,
+            .pilot = pilot,
+            .inputStreamId = inputStreamId,
+            .standard = standard,
+            .vcmMode = vcmMode,
+    };
+    frontendSettings.dvbs(frontendDvbsSettings);
+    return frontendSettings;
+}
+
+static FrontendSettings getDvbtFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/DvbtFrontendSettings");
+    FrontendDvbtTransmissionMode transmissionMode =
+            static_cast<FrontendDvbtTransmissionMode>(
+                    env->GetIntField(
+                            settings, env->GetFieldID(clazz, "mTransmissionMode", "I")));
+    FrontendDvbtBandwidth bandwidth =
+            static_cast<FrontendDvbtBandwidth>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I")));
+    FrontendDvbtConstellation constellation =
+            static_cast<FrontendDvbtConstellation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mConstellation", "I")));
+    FrontendDvbtHierarchy hierarchy =
+            static_cast<FrontendDvbtHierarchy>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mHierarchy", "I")));
+    FrontendDvbtCoderate hpCoderate =
+            static_cast<FrontendDvbtCoderate>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mHpCodeRate", "I")));
+    FrontendDvbtCoderate lpCoderate =
+            static_cast<FrontendDvbtCoderate>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mLpCodeRate", "I")));
+    FrontendDvbtGuardInterval guardInterval =
+            static_cast<FrontendDvbtGuardInterval>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mGuardInterval", "I")));
+    bool isHighPriority =
+            static_cast<bool>(
+                    env->GetBooleanField(
+                            settings, env->GetFieldID(clazz, "mIsHighPriority", "Z")));
+    FrontendDvbtStandard standard =
+            static_cast<FrontendDvbtStandard>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStandard", "I")));
+    bool isMiso =
+            static_cast<bool>(
+                    env->GetBooleanField(settings, env->GetFieldID(clazz, "mIsMiso", "Z")));
+    FrontendDvbtPlpMode plpMode =
+            static_cast<FrontendDvbtPlpMode>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mPlpMode", "I")));
+    uint8_t plpId =
+            static_cast<uint8_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mPlpId", "I")));
+    uint8_t plpGroupId =
+            static_cast<uint8_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mPlpGroupId", "I")));
+
+    FrontendDvbtSettings frontendDvbtSettings {
+            .frequency = freq,
+            .transmissionMode = transmissionMode,
+            .bandwidth = bandwidth,
+            .constellation = constellation,
+            .hierarchy = hierarchy,
+            .hpCoderate = hpCoderate,
+            .lpCoderate = lpCoderate,
+            .guardInterval = guardInterval,
+            .isHighPriority = isHighPriority,
+            .standard = standard,
+            .isMiso = isMiso,
+            .plpMode = plpMode,
+            .plpId = plpId,
+            .plpGroupId = plpGroupId,
+    };
+    frontendSettings.dvbt(frontendDvbtSettings);
+    return frontendSettings;
+}
+
+static FrontendSettings getIsdbsFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbsFrontendSettings");
+    uint16_t streamId =
+            static_cast<uint16_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStreamId", "I")));
+    FrontendIsdbsStreamIdType streamIdType =
+            static_cast<FrontendIsdbsStreamIdType>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStreamIdType", "I")));
+    FrontendIsdbsModulation modulation =
+            static_cast<FrontendIsdbsModulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    FrontendIsdbsCoderate coderate =
+            static_cast<FrontendIsdbsCoderate>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I")));
+    uint32_t symbolRate =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSymbolRate", "I")));
+    FrontendIsdbsRolloff rolloff =
+            static_cast<FrontendIsdbsRolloff>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mRolloff", "I")));
+
+    FrontendIsdbsSettings frontendIsdbsSettings {
+            .frequency = freq,
+            .streamId = streamId,
+            .streamIdType = streamIdType,
+            .modulation = modulation,
+            .coderate = coderate,
+            .symbolRate = symbolRate,
+            .rolloff = rolloff,
+    };
+    frontendSettings.isdbs(frontendIsdbsSettings);
+    return frontendSettings;
+}
+
+static FrontendSettings getIsdbs3FrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/Isdbs3FrontendSettings");
+    uint16_t streamId =
+            static_cast<uint16_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStreamId", "I")));
+    FrontendIsdbsStreamIdType streamIdType =
+            static_cast<FrontendIsdbsStreamIdType>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mStreamIdType", "I")));
+    FrontendIsdbs3Modulation modulation =
+            static_cast<FrontendIsdbs3Modulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    FrontendIsdbs3Coderate coderate =
+            static_cast<FrontendIsdbs3Coderate>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I")));
+    uint32_t symbolRate =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mSymbolRate", "I")));
+    FrontendIsdbs3Rolloff rolloff =
+            static_cast<FrontendIsdbs3Rolloff>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mRolloff", "I")));
+
+    FrontendIsdbs3Settings frontendIsdbs3Settings {
+            .frequency = freq,
+            .streamId = streamId,
+            .streamIdType = streamIdType,
+            .modulation = modulation,
+            .coderate = coderate,
+            .symbolRate = symbolRate,
+            .rolloff = rolloff,
+    };
+    frontendSettings.isdbs3(frontendIsdbs3Settings);
+    return frontendSettings;
+}
+
+static FrontendSettings getIsdbtFrontendSettings(JNIEnv *env, const jobject& settings) {
+    FrontendSettings frontendSettings;
+    uint32_t freq = getFrontendSettingsFreq(env, settings);
+    jclass clazz = env->FindClass("android/media/tv/tuner/frontend/IsdbtFrontendSettings");
+    FrontendIsdbtModulation modulation =
+            static_cast<FrontendIsdbtModulation>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mModulation", "I")));
+    FrontendIsdbtBandwidth bandwidth =
+            static_cast<FrontendIsdbtBandwidth>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mBandwidth", "I")));
+    FrontendIsdbtMode mode =
+            static_cast<FrontendIsdbtMode>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mMode", "I")));
+    FrontendIsdbtCoderate coderate =
+            static_cast<FrontendIsdbtCoderate>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mCodeRate", "I")));
+    FrontendIsdbtGuardInterval guardInterval =
+            static_cast<FrontendIsdbtGuardInterval>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mGuardInterval", "I")));
+    uint32_t serviceAreaId =
+            static_cast<uint32_t>(
+                    env->GetIntField(settings, env->GetFieldID(clazz, "mServiceAreaId", "I")));
+
+    FrontendIsdbtSettings frontendIsdbtSettings {
+            .frequency = freq,
+            .modulation = modulation,
+            .bandwidth = bandwidth,
+            .mode = mode,
+            .coderate = coderate,
+            .guardInterval = guardInterval,
+            .serviceAreaId = serviceAreaId,
+    };
+    frontendSettings.isdbt(frontendIsdbtSettings);
+    return frontendSettings;
+}
+
+static FrontendSettings getFrontendSettings(JNIEnv *env, int type, jobject settings) {
+    ALOGD("getFrontendSettings %d", type);
+
+    FrontendType feType = static_cast<FrontendType>(type);
+    switch(feType) {
+        case FrontendType::ANALOG:
+            return getAnalogFrontendSettings(env, settings);
+        case FrontendType::ATSC3:
+            return getAtsc3FrontendSettings(env, settings);
+        case FrontendType::ATSC:
+            return getAtscFrontendSettings(env, settings);
+        case FrontendType::DVBC:
+            return getDvbcFrontendSettings(env, settings);
+        case FrontendType::DVBS:
+            return getDvbsFrontendSettings(env, settings);
+        case FrontendType::DVBT:
+            return getDvbtFrontendSettings(env, settings);
+        case FrontendType::ISDBS:
+            return getIsdbsFrontendSettings(env, settings);
+        case FrontendType::ISDBS3:
+            return getIsdbs3FrontendSettings(env, settings);
+        case FrontendType::ISDBT:
+            return getIsdbtFrontendSettings(env, settings);
+        default:
+            // should never happen because a type is associated with a subclass of
+            // FrontendSettings and not set by users
+            jniThrowExceptionFmt(env, "java/lang/IllegalArgumentException",
+                "Unsupported frontend type %d", type);
+            return FrontendSettings();
+    }
+}
+
 static sp<Filter> getFilter(JNIEnv *env, jobject filter) {
     return (Filter *)env->GetLongField(filter, gFields.filterContext);
 }
@@ -587,23 +1249,23 @@
 
     jclass lnbClazz = env->FindClass("android/media/tv/tuner/Lnb");
     gFields.lnbInitID =
-            env->GetMethodID(lnbClazz, "<init>", "(Landroid/media/tv/tuner/Tuner;I)V");
+            env->GetMethodID(lnbClazz, "<init>", "(I)V");
 
     jclass filterClazz = env->FindClass("android/media/tv/tuner/filter/Filter");
     gFields.filterContext = env->GetFieldID(filterClazz, "mNativeContext", "J");
     gFields.filterInitID =
-            env->GetMethodID(filterClazz, "<init>", "(Landroid/media/tv/tuner/Tuner;I)V");
+            env->GetMethodID(filterClazz, "<init>", "(I)V");
     gFields.onFilterStatusID =
             env->GetMethodID(filterClazz, "onFilterStatus", "(I)V");
 
     jclass descramblerClazz = env->FindClass("android/media/tv/tuner/Descrambler");
     gFields.descramblerContext = env->GetFieldID(descramblerClazz, "mNativeContext", "J");
     gFields.descramblerInitID =
-            env->GetMethodID(descramblerClazz, "<init>", "(Landroid/media/tv/tuner/Tuner;)V");
+            env->GetMethodID(descramblerClazz, "<init>", "()V");
 
     jclass dvrClazz = env->FindClass("android/media/tv/tuner/dvr/Dvr");
     gFields.dvrContext = env->GetFieldID(dvrClazz, "mNativeContext", "J");
-    gFields.dvrInitID = env->GetMethodID(dvrClazz, "<init>", "(Landroid/media/tv/tuner/Tuner;)V");
+    gFields.dvrInitID = env->GetMethodID(dvrClazz, "<init>", "()V");
 }
 
 static void android_media_tv_Tuner_native_setup(JNIEnv *env, jobject thiz) {
@@ -626,8 +1288,9 @@
     return tuner->tune(getFrontendSettings(env, type, settings));
 }
 
-static int android_media_tv_Tuner_stop_tune(JNIEnv*, jobject) {
-    return 0;
+static int android_media_tv_Tuner_stop_tune(JNIEnv *env, jobject thiz) {
+    sp<JTuner> tuner = getTuner(env, thiz);
+    return tuner->stopTune();
 }
 
 static int android_media_tv_Tuner_scan(
@@ -637,16 +1300,19 @@
             env, settingsType, settings), static_cast<FrontendScanType>(scanType));
 }
 
-static int android_media_tv_Tuner_stop_scan(JNIEnv*, jobject) {
-    return 0;
+static int android_media_tv_Tuner_stop_scan(JNIEnv *env, jobject thiz) {
+    sp<JTuner> tuner = getTuner(env, thiz);
+    return tuner->stopScan();
 }
 
-static int android_media_tv_Tuner_set_lnb(JNIEnv*, jobject, jint) {
-    return 0;
+static int android_media_tv_Tuner_set_lnb(JNIEnv *env, jobject thiz, jint id) {
+    sp<JTuner> tuner = getTuner(env, thiz);
+    return tuner->setLnb(id);
 }
 
-static int android_media_tv_Tuner_set_lna(JNIEnv*, jobject, jint, jboolean) {
-    return 0;
+static int android_media_tv_Tuner_set_lna(JNIEnv *env, jobject thiz, jboolean enable) {
+    sp<JTuner> tuner = getTuner(env, thiz);
+    return tuner->setLna(enable);
 }
 
 static jobject android_media_tv_Tuner_get_frontend_status(JNIEnv, jobject, jintArray) {
@@ -669,8 +1335,9 @@
     return 0;
 }
 
-static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv*, jobject, jint) {
-    return NULL;
+static jobject android_media_tv_Tuner_get_frontend_info(JNIEnv *env, jobject thiz, jint id) {
+    sp<JTuner> tuner = getTuner(env, thiz);
+    return tuner->getFrontendInfo(id);
 }
 
 static jobject android_media_tv_Tuner_get_lnb_ids(JNIEnv *env, jobject thiz) {
@@ -1141,16 +1808,16 @@
     { "nativeSetLna", "(Z)I", (void *)android_media_tv_Tuner_set_lna },
     { "nativeGetFrontendStatus", "([I)Landroid/media/tv/tuner/frontend/FrontendStatus;",
             (void *)android_media_tv_Tuner_get_frontend_status },
-    { "nativeGetAvSyncHwId", "(Landroid/media/tv/tuner/Tuner/filter/Filter;)I",
+    { "nativeGetAvSyncHwId", "(Landroid/media/tv/tuner/filter/Filter;)I",
             (void *)android_media_tv_Tuner_gat_av_sync_hw_id },
     { "nativeGetAvSyncTime", "(I)J", (void *)android_media_tv_Tuner_gat_av_sync_time },
     { "nativeConnectCiCam", "(I)I", (void *)android_media_tv_Tuner_connect_cicam },
     { "nativeDisconnectCiCam", "()I", (void *)android_media_tv_Tuner_disconnect_cicam },
-    { "nativeGetFrontendInfo", "(I)Landroid/media/tv/tuner/FrontendInfo;",
+    { "nativeGetFrontendInfo", "(I)Landroid/media/tv/tuner/frontend/FrontendInfo;",
             (void *)android_media_tv_Tuner_get_frontend_info },
-    { "nativeOpenFilter", "(IIJ)Landroid/media/tv/tuner/Tuner/filter/Filter;",
+    { "nativeOpenFilter", "(IIJ)Landroid/media/tv/tuner/filter/Filter;",
             (void *)android_media_tv_Tuner_open_filter },
-    { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/Tuner/filter/TimeFilter;",
+    { "nativeOpenTimeFilter", "()Landroid/media/tv/tuner/filter/TimeFilter;",
             (void *)android_media_tv_Tuner_open_time_filter },
     { "nativeGetLnbIds", "()Ljava/util/List;",
             (void *)android_media_tv_Tuner_get_lnb_ids },
@@ -1180,9 +1847,9 @@
 };
 
 static const JNINativeMethod gTimeFilterMethods[] = {
-    { "nativeSetTimeStamp", "(J)I", (void *)android_media_tv_Tuner_time_filter_set_timestamp },
-    { "nativeClearTimeStamp", "()I", (void *)android_media_tv_Tuner_time_filter_clear_timestamp },
-    { "nativeGetTimeStamp", "()Ljava/lang/Long;",
+    { "nativeSetTimestamp", "(J)I", (void *)android_media_tv_Tuner_time_filter_set_timestamp },
+    { "nativeClearTimestamp", "()I", (void *)android_media_tv_Tuner_time_filter_clear_timestamp },
+    { "nativeGetTimestamp", "()Ljava/lang/Long;",
             (void *)android_media_tv_Tuner_time_filter_get_timestamp },
     { "nativeGetSourceTime", "()Ljava/lang/Long;",
             (void *)android_media_tv_Tuner_time_filter_get_source_time },
diff --git a/media/jni/android_media_tv_Tuner.h b/media/jni/android_media_tv_Tuner.h
index 5c012bb..cfe99b3 100644
--- a/media/jni/android_media_tv_Tuner.h
+++ b/media/jni/android_media_tv_Tuner.h
@@ -39,6 +39,7 @@
 using ::android::hardware::tv::tuner::V1_0::DvrType;
 using ::android::hardware::tv::tuner::V1_0::FrontendEventType;
 using ::android::hardware::tv::tuner::V1_0::FrontendId;
+using ::android::hardware::tv::tuner::V1_0::FrontendInfo;
 using ::android::hardware::tv::tuner::V1_0::FrontendScanMessage;
 using ::android::hardware::tv::tuner::V1_0::FrontendScanMessageType;
 using ::android::hardware::tv::tuner::V1_0::FrontendScanType;
@@ -132,8 +133,13 @@
     sp<ITuner> getTunerService();
     jobject getFrontendIds();
     jobject openFrontendById(int id);
+    jobject getFrontendInfo(int id);
     int tune(const FrontendSettings& settings);
+    int stopTune();
     int scan(const FrontendSettings& settings, FrontendScanType scanType);
+    int stopScan();
+    int setLnb(int id);
+    int setLna(bool enable);
     jobject getLnbIds();
     jobject openLnbById(int id);
     jobject openFilter(DemuxFilterType type, int bufferSize);
@@ -154,6 +160,15 @@
     sp<ILnb> mLnb;
     sp<IDemux> mDemux;
     int mDemuxId;
+    static jobject getAnalogFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getAtsc3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getAtscFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getDvbcFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getDvbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getDvbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getIsdbs3FrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getIsdbsFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
+    static jobject getIsdbtFrontendCaps(JNIEnv *env, FrontendInfo::FrontendCapabilities caps);
 };
 
 }  // namespace android
diff --git a/media/jni/android_mtp_MtpDatabase.cpp b/media/jni/android_mtp_MtpDatabase.cpp
index 0a3b47b..17189fd 100644
--- a/media/jni/android_mtp_MtpDatabase.cpp
+++ b/media/jni/android_mtp_MtpDatabase.cpp
@@ -820,7 +820,10 @@
     switch (info.mFormat) {
         case MTP_FORMAT_EXIF_JPEG:
         case MTP_FORMAT_HEIF:
-        case MTP_FORMAT_JFIF: {
+        case MTP_FORMAT_JFIF:
+        case MTP_FORMAT_PNG:
+        case MTP_FORMAT_BMP:
+        case MTP_FORMAT_GIF: {
             env = AndroidRuntime::getJNIEnv();
             if (env->CallBooleanMethod(
                     mDatabase, method_getThumbnailInfo, (jint)handle, mLongBuffer)) {
@@ -881,7 +884,10 @@
         switch (format) {
             case MTP_FORMAT_EXIF_JPEG:
             case MTP_FORMAT_HEIF:
-            case MTP_FORMAT_JFIF: {
+            case MTP_FORMAT_JFIF:
+            case MTP_FORMAT_PNG:
+            case MTP_FORMAT_BMP:
+            case MTP_FORMAT_GIF: {
                 JNIEnv* env = AndroidRuntime::getJNIEnv();
                 jbyteArray thumbData = (jbyteArray) env->CallObjectMethod(
                         mDatabase, method_getThumbnailData, (jint)handle);
diff --git a/media/tests/MediaFrameworkTest/AndroidManifest.xml b/media/tests/MediaFrameworkTest/AndroidManifest.xml
index fb2d630..070ed72 100644
--- a/media/tests/MediaFrameworkTest/AndroidManifest.xml
+++ b/media/tests/MediaFrameworkTest/AndroidManifest.xml
@@ -71,6 +71,11 @@
             android:label="MediaRecorder stress tests InstrumentationRunner">
     </instrumentation>
 
+    <instrumentation android:name=".AudioTestHarnessTemplateRunner"
+            android:targetPackage="com.android.mediaframeworktest"
+            android:label="Audio Test Harness tests InstrumentationRunner">
+    </instrumentation>
+
     <instrumentation android:name=".MediaFrameworkPowerTestRunner"
             android:targetPackage="com.android.mediaframeworktest"
             android:label="Media Power tests InstrumentationRunner">
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/AudioTestHarnessTemplateRunner.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/AudioTestHarnessTemplateRunner.java
new file mode 100644
index 0000000..a33ab4c
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/AudioTestHarnessTemplateRunner.java
@@ -0,0 +1,51 @@
+/*
+ * 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.mediaframeworktest;
+
+import android.os.Bundle;
+import android.test.InstrumentationTestRunner;
+import android.test.InstrumentationTestSuite;
+
+import com.android.mediaframeworktest.template.AudioTestHarnessTemplateAndroidTest;
+
+import junit.framework.TestSuite;
+
+/**
+ * Runner class for Audio Test Harness.
+ *
+ * This will add all test methods defined in AudioTestHarnessTemplateAndroidTest class to the test
+ * suite and execute them.
+ */
+public class AudioTestHarnessTemplateRunner extends InstrumentationTestRunner {
+
+    @Override
+    public TestSuite getAllTests() {
+        TestSuite suite = new InstrumentationTestSuite(this);
+        suite.addTestSuite(AudioTestHarnessTemplateAndroidTest.class);
+        return suite;
+    }
+
+    @Override
+    public ClassLoader getLoader() {
+        return AudioTestHarnessTemplateRunner.class.getClassLoader();
+    }
+
+    @Override
+    public void onCreate(Bundle icicle) {
+        super.onCreate(icicle);
+    }
+
+}
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
index 0ae640d..2522095 100644
--- a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/helpers/CameraTestUtils.java
@@ -58,7 +58,6 @@
 import android.util.Log;
 import android.util.Pair;
 import android.util.Size;
-import android.view.Display;
 import android.view.Surface;
 import android.view.WindowManager;
 
@@ -2211,14 +2210,14 @@
     }
 
     public static Size getPreviewSizeBound(WindowManager windowManager, Size bound) {
-        Display display = windowManager.getDefaultDisplay();
+        Size windowSize = windowManager.getCurrentWindowMetrics().getSize();
 
-        int width = display.getWidth();
-        int height = display.getHeight();
+        int width = windowSize.getWidth();
+        int height = windowSize.getHeight();
 
         if (height > width) {
             height = width;
-            width = display.getHeight();
+            width = windowSize.getHeight();
         }
 
         if (bound.getWidth() <= width &&
diff --git a/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/template/AudioTestHarnessTemplateAndroidTest.java b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/template/AudioTestHarnessTemplateAndroidTest.java
new file mode 100644
index 0000000..6c2a3f7
--- /dev/null
+++ b/media/tests/MediaFrameworkTest/src/com/android/mediaframeworktest/template/AudioTestHarnessTemplateAndroidTest.java
@@ -0,0 +1,127 @@
+/*
+ * 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.mediaframeworktest.template;
+
+import android.media.AudioAttributes;
+import android.media.MediaPlayer;
+import android.os.Bundle;
+import android.test.ActivityInstrumentationTestCase2;
+import android.test.suitebuilder.annotation.LargeTest;
+import android.util.Log;
+
+import com.android.mediaframeworktest.AudioTestHarnessTemplateRunner;
+import com.android.mediaframeworktest.MediaFrameworkTest;
+
+import java.io.IOException;
+
+/**
+ * Junit / Instrumentation test case for Audio Test Harness.
+ *
+ * This test class is the place where Android APIs are invoked. Any public method that starts with
+ * prefix test will be added to test suite and get executed.
+ */
+public class AudioTestHarnessTemplateAndroidTest extends
+        ActivityInstrumentationTestCase2<MediaFrameworkTest> {
+
+    private static final String TAG = "AudioTestHarnessTemplateAndroidTest";
+
+    private static final String AUDIO_FILE_KEY = "audioFile";
+    private static final String AUDIO_PLAY_DURATION_KEY = "audioPlayDuration";
+
+    private String mAudioFile = "";
+    private int mAudioPlayDuration;
+
+    public AudioTestHarnessTemplateAndroidTest() {
+        super("com.android.mediaframeworktest", MediaFrameworkTest.class);
+    }
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+        extractArguments();
+    }
+
+
+    // Extracts test params from passed in arguments.
+    private void extractArguments() {
+        AudioTestHarnessTemplateRunner runner =
+                (AudioTestHarnessTemplateRunner) getInstrumentation();
+        Bundle arguments = runner.getArguments();
+        mAudioFile = arguments.getString(AUDIO_FILE_KEY);
+        mAudioPlayDuration = Integer.parseInt(arguments.getString(AUDIO_PLAY_DURATION_KEY));
+        Log.i(TAG, String
+                .format("Extracted arguments from runner. Audio file: %s, play duration: %d",
+                        mAudioFile,
+                        mAudioPlayDuration));
+    }
+
+    @Override
+    protected void tearDown() throws Exception {
+        super.tearDown();
+        // Here is where you can put custom methods at tearDown method.
+    }
+
+    /**
+     * Plays audio file for given amount of time.
+     *
+     * Instantiates a MediaPlayer and plays the passed in audioFile for audioPlayDuration
+     * milliseconds. If the player fails to instantiate or any exception happened during the play,
+     * the test will fail.
+     */
+    private static void playAudioFile(String audioFile, int audioPlayDuration) {
+        Log.v(TAG, String.format("Playing audio file: %s", audioFile));
+        MediaPlayer mp = new MediaPlayer();
+        try {
+            mp.setAudioAttributes(
+                    new AudioAttributes.Builder()
+                            .setContentType(AudioAttributes.CONTENT_TYPE_MUSIC)
+                            .setUsage(AudioAttributes.USAGE_MEDIA)
+                            .build());
+            mp.setDataSource(audioFile);
+            mp.prepare();
+            int duration = mp.getDuration();
+            if (duration <= 0) {
+                Log.e(TAG, "Failed to grab duration from audio file.");
+                fail("AudioFileWithNegativeDuration");
+            }
+            mp.start();
+            // This test demonstrates how to play the audio file from device for certain amount of
+            // time, and the test actually runs on host machine so the listener is not adapted here.
+            Log.v(TAG,
+                    String.format("Wait for audio file to play for duration: %d",
+                            audioPlayDuration));
+            Thread.sleep(audioPlayDuration);
+        } catch (IOException | InterruptedException e) {
+            Log.e(TAG, String.format("Exception happened while playing audio file: %s", audioFile),
+                    e);
+            fail("FailedToPlayAudioFile");
+        } finally {
+            if (mp != null) {
+                Log.v(TAG, "Release media player.");
+                mp.release();
+            }
+        }
+    }
+
+    // This test method will play the audioFile for audioPlayDuration milliseconds as passed in from
+    // AudioTestHarnessTemplateTest class.
+    @LargeTest
+    public void testPlayAudioFile() throws Exception {
+        playAudioFile(mAudioFile, mAudioPlayDuration);
+    }
+
+}
diff --git a/media/tests/MediaRouteProvider/Android.bp b/media/tests/MediaRouteProvider/Android.bp
deleted file mode 100644
index da42824..0000000
--- a/media/tests/MediaRouteProvider/Android.bp
+++ /dev/null
@@ -1,18 +0,0 @@
-android_test {
-    name: "mediarouteprovider",
-
-    srcs: ["**/*.java"],
-
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-    ],
-
-    static_libs: [
-        "android-support-test",
-        "mockito-target-minus-junit4",
-    ],
-
-    platform_apis: true,
-    certificate: "platform",
-}
\ No newline at end of file
diff --git a/media/tests/MediaRouteProvider/res/values/strings.xml b/media/tests/MediaRouteProvider/res/values/strings.xml
deleted file mode 100644
index bb97064..0000000
--- a/media/tests/MediaRouteProvider/res/values/strings.xml
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <!-- name of the app [CHAR LIMIT=25]-->
-    <string name="app_name">SampleMediaRouteProvider</string>
-</resources>
\ No newline at end of file
diff --git a/media/tests/MediaRouter/AndroidManifest.xml b/media/tests/MediaRouter/AndroidManifest.xml
index a34a264..9546500 100644
--- a/media/tests/MediaRouter/AndroidManifest.xml
+++ b/media/tests/MediaRouter/AndroidManifest.xml
@@ -17,10 +17,14 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
           package="com.android.mediaroutertest">
 
-    <uses-permission android:name="android.permission.CONTROL_MEDIA_ROUTE" />
-
     <application android:label="@string/app_name">
         <uses-library android:name="android.test.runner" />
+        <service android:name=".SampleMediaRoute2ProviderService"
+                 android:exported="true">
+            <intent-filter>
+                <action android:name="android.media.MediaRoute2ProviderService" />
+            </intent-filter>
+        </service>
     </application>
 
     <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRoute2InfoTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRoute2InfoTest.java
deleted file mode 100644
index c46966f..0000000
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRoute2InfoTest.java
+++ /dev/null
@@ -1,363 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.mediaroutertest;
-
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.testng.Assert.assertThrows;
-
-import android.media.MediaRoute2Info;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests {@link MediaRoute2Info} and its {@link MediaRoute2Info.Builder builder}.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class MediaRoute2InfoTest {
-
-    public static final String TEST_ID = "test_id";
-    public static final String TEST_NAME = "test_name";
-    public static final String TEST_ROUTE_TYPE_0 = "test_route_type_0";
-    public static final String TEST_ROUTE_TYPE_1 = "test_route_type_1";
-    public static final int TEST_DEVICE_TYPE = MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER;
-    public static final Uri TEST_ICON_URI = Uri.parse("https://developer.android.com");
-    public static final String TEST_DESCRIPTION = "test_description";
-    public static final int TEST_CONNECTION_STATE = MediaRoute2Info.CONNECTION_STATE_CONNECTING;
-    public static final String TEST_CLIENT_PACKAGE_NAME = "com.test.client.package.name";
-    public static final int TEST_VOLUME_HANDLING = MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
-    public static final int TEST_VOLUME_MAX = 100;
-    public static final int TEST_VOLUME = 65;
-
-    public static final String TEST_KEY = "test_key";
-    public static final String TEST_VALUE = "test_value";
-
-    @Test
-    public void testBuilderConstructorWithInvalidValues() {
-        final String nullId = null;
-        final String nullName = null;
-        final String emptyId = "";
-        final String emptyName = "";
-        final String validId = "valid_id";
-        final String validName = "valid_name";
-
-        // ID is invalid
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(nullId, validName));
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(emptyId, validName));
-
-        // name is invalid
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(validId, nullName));
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(validId, emptyName));
-
-        // Both are invalid
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(nullId, nullName));
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(nullId, emptyName));
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(emptyId, nullName));
-        assertThrows(IllegalArgumentException.class,
-                () -> new MediaRoute2Info.Builder(emptyId, emptyName));
-
-
-        // Null RouteInfo (1-argument constructor)
-        final MediaRoute2Info nullRouteInfo = null;
-        assertThrows(NullPointerException.class,
-                () -> new MediaRoute2Info.Builder(nullRouteInfo));
-    }
-
-    @Test
-    public void testBuilderBuildWithEmptyRouteTypesShouldThrowIAE() {
-        MediaRoute2Info.Builder builder = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME);
-        assertThrows(IllegalArgumentException.class, () -> builder.build());
-    }
-
-    @Test
-    public void testBuilderAndGettersOfMediaRoute2Info() {
-        Bundle extras = new Bundle();
-        extras.putString(TEST_KEY, TEST_VALUE);
-
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        assertEquals(TEST_ID, routeInfo.getId());
-        assertEquals(TEST_NAME, routeInfo.getName());
-
-        assertEquals(2, routeInfo.getFeatures().size());
-        assertEquals(TEST_ROUTE_TYPE_0, routeInfo.getFeatures().get(0));
-        assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(1));
-
-        assertEquals(TEST_DEVICE_TYPE, routeInfo.getDeviceType());
-        assertEquals(TEST_ICON_URI, routeInfo.getIconUri());
-        assertEquals(TEST_DESCRIPTION, routeInfo.getDescription());
-        assertEquals(TEST_CONNECTION_STATE, routeInfo.getConnectionState());
-        assertEquals(TEST_CLIENT_PACKAGE_NAME, routeInfo.getClientPackageName());
-        assertEquals(TEST_VOLUME_HANDLING, routeInfo.getVolumeHandling());
-        assertEquals(TEST_VOLUME_MAX, routeInfo.getVolumeMax());
-        assertEquals(TEST_VOLUME, routeInfo.getVolume());
-
-        Bundle extrasOut = routeInfo.getExtras();
-        assertNotNull(extrasOut);
-        assertTrue(extrasOut.containsKey(TEST_KEY));
-        assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY));
-    }
-
-    @Test
-    public void testBuilderSetExtrasWithNull() {
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .setExtras(null)
-                .build();
-
-        assertNull(routeInfo.getExtras());
-    }
-
-    @Test
-    public void testBuilderaddFeatures() {
-        List<String> routeTypes = new ArrayList<>();
-        routeTypes.add(TEST_ROUTE_TYPE_0);
-        routeTypes.add(TEST_ROUTE_TYPE_1);
-
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeatures(routeTypes)
-                .build();
-
-        assertEquals(routeTypes, routeInfo.getFeatures());
-    }
-
-    @Test
-    public void testBuilderclearFeatures() {
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                // clearFeatures should clear the route types.
-                .clearFeatures()
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .build();
-
-        assertEquals(1, routeInfo.getFeatures().size());
-        assertEquals(TEST_ROUTE_TYPE_1, routeInfo.getFeatures().get(0));
-    }
-
-    @Test
-    public void testhasAnyFeaturesReturnsFalse() {
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .build();
-
-        List<String> testRouteTypes = new ArrayList<>();
-        testRouteTypes.add("non_matching_route_type_1");
-        testRouteTypes.add("non_matching_route_type_2");
-        testRouteTypes.add("non_matching_route_type_3");
-        testRouteTypes.add("non_matching_route_type_4");
-
-        assertFalse(routeInfo.hasAnyFeatures(testRouteTypes));
-    }
-
-    @Test
-    public void testhasAnyFeaturesReturnsTrue() {
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .build();
-
-        List<String> testRouteTypes = new ArrayList<>();
-        testRouteTypes.add("non_matching_route_type_1");
-        testRouteTypes.add("non_matching_route_type_2");
-        testRouteTypes.add("non_matching_route_type_3");
-        testRouteTypes.add(TEST_ROUTE_TYPE_1);
-
-        assertTrue(routeInfo.hasAnyFeatures(testRouteTypes));
-    }
-
-    @Test
-    public void testEqualsCreatedWithSameArguments() {
-        Bundle extras = new Bundle();
-        extras.putString(TEST_KEY, TEST_VALUE);
-
-        MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        assertEquals(routeInfo1, routeInfo2);
-        assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode());
-    }
-
-    @Test
-    public void testEqualsCreatedWithBuilderCopyConstructor() {
-        Bundle extras = new Bundle();
-        extras.putString(TEST_KEY, TEST_VALUE);
-
-        MediaRoute2Info routeInfo1 = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        MediaRoute2Info routeInfo2 = new MediaRoute2Info.Builder(routeInfo1).build();
-
-        assertEquals(routeInfo1, routeInfo2);
-        assertEquals(routeInfo1.hashCode(), routeInfo2.hashCode());
-    }
-
-    @Test
-    public void testEqualsReturnFalse() {
-        Bundle extras = new Bundle();
-        extras.putString(TEST_KEY, TEST_VALUE);
-
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        // Now, we will use copy constructor
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .addFeature("randomRouteType")
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setDeviceType(TEST_DEVICE_TYPE + 1)
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setIconUri(Uri.parse("randomUri"))
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setDescription("randomDescription")
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setConnectionState(TEST_CONNECTION_STATE + 1)
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setClientPackageName("randomPackageName")
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setVolumeHandling(TEST_VOLUME_HANDLING + 1)
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setVolumeMax(TEST_VOLUME_MAX + 100)
-                .build());
-        assertNotEquals(routeInfo, new MediaRoute2Info.Builder(routeInfo)
-                .setVolume(TEST_VOLUME + 10)
-                .build());
-        // Note: Extras will not affect the equals.
-    }
-
-    @Test
-    public void testParcelingAndUnParceling() {
-        Bundle extras = new Bundle();
-        extras.putString(TEST_KEY, TEST_VALUE);
-
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder(TEST_ID, TEST_NAME)
-                .addFeature(TEST_ROUTE_TYPE_0)
-                .addFeature(TEST_ROUTE_TYPE_1)
-                .setDeviceType(TEST_DEVICE_TYPE)
-                .setIconUri(TEST_ICON_URI)
-                .setDescription(TEST_DESCRIPTION)
-                .setConnectionState(TEST_CONNECTION_STATE)
-                .setClientPackageName(TEST_CLIENT_PACKAGE_NAME)
-                .setVolumeHandling(TEST_VOLUME_HANDLING)
-                .setVolumeMax(TEST_VOLUME_MAX)
-                .setVolume(TEST_VOLUME)
-                .setExtras(extras)
-                .build();
-
-        Parcel parcel = Parcel.obtain();
-        routeInfo.writeToParcel(parcel, 0);
-        parcel.setDataPosition(0);
-
-        MediaRoute2Info routeInfoFromParcel = MediaRoute2Info.CREATOR.createFromParcel(parcel);
-        assertEquals(routeInfo, routeInfoFromParcel);
-        assertEquals(routeInfo.hashCode(), routeInfoFromParcel.hashCode());
-
-        // Check extras
-        Bundle extrasOut = routeInfoFromParcel.getExtras();
-        assertNotNull(extrasOut);
-        assertTrue(extrasOut.containsKey(TEST_KEY));
-        assertEquals(TEST_VALUE, extrasOut.getString(TEST_KEY));
-    }
-}
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java
deleted file mode 100644
index e0b4545..0000000
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouter2Test.java
+++ /dev/null
@@ -1,780 +0,0 @@
-/*
- * Copyright 2019 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.mediaroutertest;
-
-import static android.media.MediaRoute2Info.CONNECTION_STATE_CONNECTING;
-import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER;
-import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
-
-import static com.android.mediaroutertest.MediaRouterManagerTest.FEATURES_ALL;
-import static com.android.mediaroutertest.MediaRouterManagerTest.FEATURES_SPECIAL;
-import static com.android.mediaroutertest.MediaRouterManagerTest.FEATURE_SAMPLE;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID1;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID2;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID3_SESSION_CREATION_FAILED;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID4_TO_SELECT_AND_DESELECT;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID5_TO_TRANSFER_TO;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID_SPECIAL_FEATURE;
-import static com.android.mediaroutertest.MediaRouterManagerTest.ROUTE_ID_VARIABLE_VOLUME;
-import static com.android.mediaroutertest.MediaRouterManagerTest.SYSTEM_PROVIDER_ID;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertSame;
-import static org.junit.Assert.assertTrue;
-import static org.testng.Assert.assertThrows;
-
-import android.annotation.NonNull;
-import android.content.Context;
-import android.media.MediaRoute2Info;
-import android.media.MediaRouter2;
-import android.media.MediaRouter2.OnGetControllerHintsListener;
-import android.media.MediaRouter2.RouteCallback;
-import android.media.MediaRouter2.RoutingController;
-import android.media.MediaRouter2.RoutingControllerCallback;
-import android.media.RouteDiscoveryPreference;
-import android.net.Uri;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-import android.text.TextUtils;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.Executor;
-import java.util.concurrent.Executors;
-import java.util.concurrent.TimeUnit;
-import java.util.function.Predicate;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class MediaRouter2Test {
-    private static final String TAG = "MediaRouter2Test";
-    Context mContext;
-    private MediaRouter2 mRouter2;
-    private Executor mExecutor;
-
-    private static final int TIMEOUT_MS = 5000;
-
-    private static final String TEST_KEY = "test_key";
-    private static final String TEST_VALUE = "test_value";
-
-    @Before
-    public void setUp() throws Exception {
-        mContext = InstrumentationRegistry.getTargetContext();
-        mRouter2 = MediaRouter2.getInstance(mContext);
-        mExecutor = Executors.newSingleThreadExecutor();
-    }
-
-    @After
-    public void tearDown() throws Exception {
-    }
-
-    /**
-     * Tests if we get proper routes for application that has special route type.
-     */
-    @Test
-    public void testGetRoutes() throws Exception {
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(FEATURES_SPECIAL);
-
-        assertEquals(1, routes.size());
-        assertNotNull(routes.get(ROUTE_ID_SPECIAL_FEATURE));
-    }
-
-    @Test
-    public void testRouteInfoEquality() {
-        MediaRoute2Info routeInfo = new MediaRoute2Info.Builder("id", "name")
-                .setDescription("description")
-                .setClientPackageName("com.android.mediaroutertest")
-                .setConnectionState(CONNECTION_STATE_CONNECTING)
-                .setIconUri(new Uri.Builder().path("icon").build())
-                .setVolume(5)
-                .setVolumeMax(20)
-                .addFeature(FEATURE_SAMPLE)
-                .setVolumeHandling(PLAYBACK_VOLUME_VARIABLE)
-                .setDeviceType(DEVICE_TYPE_REMOTE_SPEAKER)
-                .build();
-
-        MediaRoute2Info routeInfoRebuilt = new MediaRoute2Info.Builder(routeInfo).build();
-        assertEquals(routeInfo, routeInfoRebuilt);
-
-        Parcel parcel = Parcel.obtain();
-        parcel.writeParcelable(routeInfo, 0);
-        parcel.setDataPosition(0);
-        MediaRoute2Info routeInfoFromParcel = parcel.readParcelable(null);
-
-        assertEquals(routeInfo, routeInfoFromParcel);
-    }
-
-    @Test
-    public void testControlVolumeWithRouter() throws Exception {
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(FEATURES_ALL);
-
-        MediaRoute2Info volRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME);
-        assertNotNull(volRoute);
-
-        int originalVolume = volRoute.getVolume();
-        int deltaVolume = (originalVolume == volRoute.getVolumeMax() ? -1 : 1);
-
-        awaitOnRouteChanged(
-                () -> mRouter2.requestUpdateVolume(volRoute, deltaVolume),
-                ROUTE_ID_VARIABLE_VOLUME,
-                (route -> route.getVolume() == originalVolume + deltaVolume),
-                FEATURES_ALL);
-
-        awaitOnRouteChanged(
-                () -> mRouter2.requestSetVolume(volRoute, originalVolume),
-                ROUTE_ID_VARIABLE_VOLUME,
-                (route -> route.getVolume() == originalVolume),
-                FEATURES_ALL);
-    }
-
-    @Test
-    public void testRegisterControllerCallbackWithInvalidArguments() {
-        Executor executor = mExecutor;
-        RoutingControllerCallback callback = new RoutingControllerCallback();
-
-        // Tests null executor
-        assertThrows(NullPointerException.class,
-                () -> mRouter2.registerControllerCallback(null, callback));
-
-        // Tests null callback
-        assertThrows(NullPointerException.class,
-                () -> mRouter2.registerControllerCallback(executor, null));
-    }
-
-    @Test
-    public void testUnregisterControllerCallbackWithNullCallback() {
-        // Tests null callback
-        assertThrows(NullPointerException.class,
-                () -> mRouter2.unregisterControllerCallback(null));
-    }
-
-    @Test
-    public void testRequestCreateControllerWithNullRoute() {
-        assertThrows(NullPointerException.class,
-                () -> mRouter2.requestCreateController(null));
-    }
-
-    @Test
-    public void testRequestCreateControllerSuccess() throws Exception {
-        final List<String> sampleRouteFeature = new ArrayList<>();
-        sampleRouteFeature.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteFeature);
-        MediaRoute2Info route = routes.get(ROUTE_ID1);
-        assertNotNull(route);
-
-        final CountDownLatch successLatch = new CountDownLatch(1);
-        final CountDownLatch failureLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with this route
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                assertNotNull(controller);
-                assertTrue(createRouteMap(controller.getSelectedRoutes()).containsKey(ROUTE_ID1));
-                controllers.add(controller);
-                successLatch.countDown();
-            }
-
-            @Override
-            public void onControllerCreationFailed(MediaRoute2Info requestedRoute) {
-                failureLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(route);
-            assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // onSessionCreationFailed should not be called.
-            assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    @Test
-    public void testRequestCreateControllerFailure() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info route = routes.get(ROUTE_ID3_SESSION_CREATION_FAILED);
-        assertNotNull(route);
-
-        final CountDownLatch successLatch = new CountDownLatch(1);
-        final CountDownLatch failureLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with this route
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                controllers.add(controller);
-                successLatch.countDown();
-            }
-
-            @Override
-            public void onControllerCreationFailed(MediaRoute2Info requestedRoute) {
-                assertEquals(route, requestedRoute);
-                failureLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(route);
-            assertTrue(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // onSessionCreated should not be called.
-            assertFalse(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    @Test
-    public void testRequestCreateControllerMultipleSessions() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        final CountDownLatch successLatch = new CountDownLatch(2);
-        final CountDownLatch failureLatch = new CountDownLatch(1);
-        final List<RoutingController> createdControllers = new ArrayList<>();
-
-        // Create session with this route
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                createdControllers.add(controller);
-                successLatch.countDown();
-            }
-
-            @Override
-            public void onControllerCreationFailed(MediaRoute2Info requestedRoute) {
-                failureLatch.countDown();
-            }
-        };
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info route1 = routes.get(ROUTE_ID1);
-        MediaRoute2Info route2 = routes.get(ROUTE_ID2);
-        assertNotNull(route1);
-        assertNotNull(route2);
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(route1);
-            mRouter2.requestCreateController(route2);
-            assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // onSessionCreationFailed should not be called.
-            assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // Created controllers should have proper info
-            assertEquals(2, createdControllers.size());
-            RoutingController controller1 = createdControllers.get(0);
-            RoutingController controller2 = createdControllers.get(1);
-
-            assertNotEquals(controller1.getId(), controller2.getId());
-            assertTrue(createRouteMap(controller1.getSelectedRoutes()).containsKey(ROUTE_ID1));
-            assertTrue(createRouteMap(controller2.getSelectedRoutes()).containsKey(ROUTE_ID2));
-
-        } finally {
-            releaseControllers(createdControllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    @Test
-    public void testSetOnGetControllerHintsListener() throws Exception {
-        final List<String> sampleRouteFeature = new ArrayList<>();
-        sampleRouteFeature.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteFeature);
-        MediaRoute2Info route = routes.get(ROUTE_ID1);
-        assertNotNull(route);
-
-        final Bundle createSessionHints = new Bundle();
-        createSessionHints.putString(TEST_KEY, TEST_VALUE);
-        final OnGetControllerHintsListener listener = new OnGetControllerHintsListener() {
-            @Override
-            public Bundle onGetControllerHints(MediaRoute2Info route) {
-                return createSessionHints;
-            }
-        };
-
-        final CountDownLatch successLatch = new CountDownLatch(1);
-        final CountDownLatch failureLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with this route
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                assertNotNull(controller);
-                assertTrue(createRouteMap(controller.getSelectedRoutes()).containsKey(ROUTE_ID1));
-
-                // The SampleMediaRoute2ProviderService supposed to set control hints
-                // with the given creationSessionHints.
-                Bundle controlHints = controller.getControlHints();
-                assertNotNull(controlHints);
-                assertTrue(controlHints.containsKey(TEST_KEY));
-                assertEquals(TEST_VALUE, controlHints.getString(TEST_KEY));
-
-                controllers.add(controller);
-                successLatch.countDown();
-            }
-
-            @Override
-            public void onControllerCreationFailed(MediaRoute2Info requestedRoute) {
-                failureLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-
-            // The SampleMediaRoute2ProviderService supposed to set control hints
-            // with the given creationSessionHints.
-            mRouter2.setOnGetControllerHintsListener(listener);
-            mRouter2.requestCreateController(route);
-            assertTrue(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // onSessionCreationFailed should not be called.
-            assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    @Test
-    public void testRoutingControllerCallbackIsNotCalledAfterUnregistered() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info route = routes.get(ROUTE_ID1);
-        assertNotNull(route);
-
-        final CountDownLatch successLatch = new CountDownLatch(1);
-        final CountDownLatch failureLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with this route
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                controllers.add(controller);
-                successLatch.countDown();
-            }
-
-            @Override
-            public void onControllerCreationFailed(MediaRoute2Info requestedRoute) {
-                failureLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(route);
-
-            // Unregisters session callback
-            mRouter2.unregisterControllerCallback(controllerCallback);
-
-            // No session callback methods should be called.
-            assertFalse(successLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-            assertFalse(failureLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    // TODO: Add tests for illegal inputs if needed (e.g. selecting already selected route)
-    @Test
-    public void testRoutingControllerSelectAndDeselectRoute() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info routeToCreateSessionWith = routes.get(ROUTE_ID1);
-        assertNotNull(routeToCreateSessionWith);
-
-        final CountDownLatch onControllerCreatedLatch = new CountDownLatch(1);
-        final CountDownLatch onControllerUpdatedLatchForSelect = new CountDownLatch(1);
-        final CountDownLatch onControllerUpdatedLatchForDeselect = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with ROUTE_ID1
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                assertNotNull(controller);
-                assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
-                controllers.add(controller);
-                onControllerCreatedLatch.countDown();
-            }
-
-            @Override
-            public void onControllerUpdated(RoutingController controller) {
-                if (onControllerCreatedLatch.getCount() != 0
-                        || !TextUtils.equals(
-                                controllers.get(0).getId(), controller.getId())) {
-                    return;
-                }
-
-                if (onControllerUpdatedLatchForSelect.getCount() != 0) {
-                    assertEquals(2, controller.getSelectedRoutes().size());
-                    assertTrue(getRouteIds(controller.getSelectedRoutes())
-                            .contains(ROUTE_ID1));
-                    assertTrue(getRouteIds(controller.getSelectedRoutes())
-                            .contains(ROUTE_ID4_TO_SELECT_AND_DESELECT));
-                    assertFalse(getRouteIds(controller.getSelectableRoutes())
-                            .contains(ROUTE_ID4_TO_SELECT_AND_DESELECT));
-
-                    onControllerUpdatedLatchForSelect.countDown();
-                } else {
-                    assertEquals(1, controller.getSelectedRoutes().size());
-                    assertTrue(getRouteIds(controller.getSelectedRoutes())
-                            .contains(ROUTE_ID1));
-                    assertFalse(getRouteIds(controller.getSelectedRoutes())
-                            .contains(ROUTE_ID4_TO_SELECT_AND_DESELECT));
-                    assertTrue(getRouteIds(controller.getSelectableRoutes())
-                            .contains(ROUTE_ID4_TO_SELECT_AND_DESELECT));
-
-                    onControllerUpdatedLatchForDeselect.countDown();
-                }
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(routeToCreateSessionWith);
-            assertTrue(onControllerCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            assertEquals(1, controllers.size());
-            RoutingController controller = controllers.get(0);
-            assertTrue(getRouteIds(controller.getSelectableRoutes())
-                    .contains(ROUTE_ID4_TO_SELECT_AND_DESELECT));
-
-            // Select ROUTE_ID4_TO_SELECT_AND_DESELECT
-            MediaRoute2Info routeToSelectAndDeselect = routes.get(
-                    ROUTE_ID4_TO_SELECT_AND_DESELECT);
-            assertNotNull(routeToSelectAndDeselect);
-
-            controller.selectRoute(routeToSelectAndDeselect);
-            assertTrue(onControllerUpdatedLatchForSelect.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            controller.deselectRoute(routeToSelectAndDeselect);
-            assertTrue(onControllerUpdatedLatchForDeselect.await(
-                    TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    @Test
-    public void testRoutingControllerTransferToRoute() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info routeToCreateSessionWith = routes.get(ROUTE_ID1);
-        assertNotNull(routeToCreateSessionWith);
-
-        final CountDownLatch onControllerCreatedLatch = new CountDownLatch(1);
-        final CountDownLatch onControllerUpdatedLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with ROUTE_ID1
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                assertNotNull(controller);
-                assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
-                controllers.add(controller);
-                onControllerCreatedLatch.countDown();
-            }
-
-            @Override
-            public void onControllerUpdated(RoutingController controller) {
-                if (onControllerCreatedLatch.getCount() != 0
-                        || !TextUtils.equals(
-                                controllers.get(0).getId(), controller.getId())) {
-                    return;
-                }
-                assertEquals(1, controller.getSelectedRoutes().size());
-                assertFalse(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
-                assertTrue(getRouteIds(controller.getSelectedRoutes())
-                        .contains(ROUTE_ID5_TO_TRANSFER_TO));
-                assertFalse(getRouteIds(controller.getTransferrableRoutes())
-                        .contains(ROUTE_ID5_TO_TRANSFER_TO));
-
-                onControllerUpdatedLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(routeToCreateSessionWith);
-            assertTrue(onControllerCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            assertEquals(1, controllers.size());
-            RoutingController controller = controllers.get(0);
-            assertTrue(getRouteIds(controller.getTransferrableRoutes())
-                    .contains(ROUTE_ID5_TO_TRANSFER_TO));
-
-            // Transfer to ROUTE_ID5_TO_TRANSFER_TO
-            MediaRoute2Info routeToTransferTo = routes.get(ROUTE_ID5_TO_TRANSFER_TO);
-            assertNotNull(routeToTransferTo);
-
-            controller.transferToRoute(routeToTransferTo);
-            assertTrue(onControllerUpdatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    // TODO: Add tests for onSessionReleased() when provider releases the session.
-
-    @Test
-    public void testRoutingControllerRelease() throws Exception {
-        final List<String> sampleRouteType = new ArrayList<>();
-        sampleRouteType.add(FEATURE_SAMPLE);
-
-        Map<String, MediaRoute2Info> routes = waitAndGetRoutes(sampleRouteType);
-        MediaRoute2Info routeToCreateSessionWith = routes.get(ROUTE_ID1);
-        assertNotNull(routeToCreateSessionWith);
-
-        final CountDownLatch onControllerCreatedLatch = new CountDownLatch(1);
-        final CountDownLatch onControllerUpdatedLatch = new CountDownLatch(1);
-        final CountDownLatch onControllerReleasedLatch = new CountDownLatch(1);
-        final List<RoutingController> controllers = new ArrayList<>();
-
-        // Create session with ROUTE_ID1
-        RoutingControllerCallback controllerCallback = new RoutingControllerCallback() {
-            @Override
-            public void onControllerCreated(RoutingController controller) {
-                assertNotNull(controller);
-                assertTrue(getRouteIds(controller.getSelectedRoutes()).contains(ROUTE_ID1));
-                controllers.add(controller);
-                onControllerCreatedLatch.countDown();
-            }
-
-            @Override
-            public void onControllerUpdated(RoutingController controller) {
-                if (onControllerCreatedLatch.getCount() != 0
-                        || !TextUtils.equals(controllers.get(0).getId(), controller.getId())) {
-                    return;
-                }
-                onControllerUpdatedLatch.countDown();
-            }
-
-            @Override
-            public void onControllerReleased(RoutingController controller) {
-                if (onControllerCreatedLatch.getCount() != 0
-                        || !TextUtils.equals(controllers.get(0).getId(), controller.getId())) {
-                    return;
-                }
-                onControllerReleasedLatch.countDown();
-            }
-        };
-
-        // TODO: Remove this once the MediaRouter2 becomes always connected to the service.
-        RouteCallback routeCallback = new RouteCallback();
-        mRouter2.registerRouteCallback(mExecutor, routeCallback, RouteDiscoveryPreference.EMPTY);
-
-        try {
-            mRouter2.registerControllerCallback(mExecutor, controllerCallback);
-            mRouter2.requestCreateController(routeToCreateSessionWith);
-            assertTrue(onControllerCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            assertEquals(1, controllers.size());
-            RoutingController controller = controllers.get(0);
-            assertTrue(getRouteIds(controller.getTransferrableRoutes())
-                    .contains(ROUTE_ID5_TO_TRANSFER_TO));
-
-            // Release controller. Future calls should be ignored.
-            controller.release();
-
-            // Transfer to ROUTE_ID5_TO_TRANSFER_TO
-            MediaRoute2Info routeToTransferTo = routes.get(ROUTE_ID5_TO_TRANSFER_TO);
-            assertNotNull(routeToTransferTo);
-
-            // This call should be ignored.
-            // The onSessionInfoChanged() shouldn't be called.
-            controller.transferToRoute(routeToTransferTo);
-            assertFalse(onControllerUpdatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-
-            // onControllerReleased should be called.
-            assertTrue(onControllerReleasedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            releaseControllers(controllers);
-            mRouter2.unregisterRouteCallback(routeCallback);
-            mRouter2.unregisterControllerCallback(controllerCallback);
-        }
-    }
-
-    // TODO: Consider adding tests with bluetooth connection/disconnection.
-    @Test
-    public void testGetSystemController() {
-        final RoutingController systemController = mRouter2.getSystemController();
-        assertNotNull(systemController);
-        assertFalse(systemController.isReleased());
-    }
-
-    @Test
-    public void testControllers() {
-        List<RoutingController> controllers = mRouter2.getControllers();
-        assertNotNull(controllers);
-        assertFalse(controllers.isEmpty());
-        assertSame(mRouter2.getSystemController(), controllers.get(0));
-    }
-
-    // Helper for getting routes easily
-    static Map<String, MediaRoute2Info> createRouteMap(List<MediaRoute2Info> routes) {
-        Map<String, MediaRoute2Info> routeMap = new HashMap<>();
-        for (MediaRoute2Info route : routes) {
-            routeMap.put(route.getId(), route);
-        }
-        return routeMap;
-    }
-
-    Map<String, MediaRoute2Info> waitAndGetRoutes(List<String> routeTypes)
-            throws Exception {
-        CountDownLatch latch = new CountDownLatch(1);
-
-        // A dummy callback is required to send route type info.
-        RouteCallback routeCallback = new RouteCallback() {
-            @Override
-            public void onRoutesAdded(List<MediaRoute2Info> routes) {
-                for (int i = 0; i < routes.size(); i++) {
-                    //TODO: use isSystem() or similar method when it's ready
-                    if (!TextUtils.equals(routes.get(i).getProviderId(), SYSTEM_PROVIDER_ID)) {
-                        latch.countDown();
-                    }
-                }
-            }
-        };
-
-        mRouter2.registerRouteCallback(mExecutor, routeCallback,
-                new RouteDiscoveryPreference.Builder(routeTypes, true).build());
-        try {
-            latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
-            return createRouteMap(mRouter2.getRoutes());
-        } finally {
-            mRouter2.unregisterRouteCallback(routeCallback);
-        }
-    }
-
-    static void releaseControllers(@NonNull List<RoutingController> controllers) {
-        for (RoutingController controller : controllers) {
-            controller.release();
-        }
-    }
-
-    /**
-     * Returns a list of IDs of the given route list.
-     */
-    List<String> getRouteIds(@NonNull List<MediaRoute2Info> routes) {
-        List<String> result = new ArrayList<>();
-        for (MediaRoute2Info route : routes) {
-            result.add(route.getId());
-        }
-        return result;
-    }
-
-    void awaitOnRouteChanged(Runnable task, String routeId,
-            Predicate<MediaRoute2Info> predicate,
-            List<String> routeTypes) throws Exception {
-        CountDownLatch latch = new CountDownLatch(1);
-        RouteCallback routeCallback = new RouteCallback() {
-            @Override
-            public void onRoutesChanged(List<MediaRoute2Info> changed) {
-                MediaRoute2Info route = createRouteMap(changed).get(routeId);
-                if (route != null && predicate.test(route)) {
-                    latch.countDown();
-                }
-            }
-        };
-        mRouter2.registerRouteCallback(mExecutor, routeCallback,
-                new RouteDiscoveryPreference.Builder(routeTypes, true).build());
-        try {
-            task.run();
-            assertTrue(latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
-        } finally {
-            mRouter2.unregisterRouteCallback(routeCallback);
-        }
-    }
-}
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
index 4a2044a..3ffb951 100644
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/MediaRouterManagerTest.java
@@ -16,9 +16,23 @@
 
 package com.android.mediaroutertest;
 
+import static android.media.MediaRoute2Info.FEATURE_LIVE_AUDIO;
 import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_FIXED;
 import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
 
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ACTION_REMOVE_ROUTE;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SAMPLE;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.FEATURE_SPECIAL;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID1;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID2;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID5_TO_TRANSFER_TO;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_FIXED_VOLUME;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_SPECIAL_FEATURE;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_ID_VARIABLE_VOLUME;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME1;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.ROUTE_NAME2;
+import static com.android.mediaroutertest.SampleMediaRoute2ProviderService.VOLUME_MAX;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
@@ -30,6 +44,7 @@
 import android.media.MediaRouter2.RouteCallback;
 import android.media.MediaRouter2.RoutingControllerCallback;
 import android.media.MediaRouter2Manager;
+import android.media.MediaRouter2Utils;
 import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.support.test.InstrumentationRegistry;
@@ -43,6 +58,7 @@
 import org.junit.runner.RunWith;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -56,50 +72,6 @@
 @SmallTest
 public class MediaRouterManagerTest {
     private static final String TAG = "MediaRouterManagerTest";
-
-    public static final String SAMPLE_PROVIDER_ROUTES_ID_PREFIX =
-            "com.android.mediarouteprovider.example/.SampleMediaRoute2ProviderService:";
-
-    // Must be the same as SampleMediaRoute2ProviderService except the prefix of IDs.
-    public static final String ROUTE_ID1 = SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_id1";
-    public static final String ROUTE_NAME1 = "Sample Route 1";
-    public static final String ROUTE_ID2 = SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_id2";
-    public static final String ROUTE_NAME2 = "Sample Route 2";
-    public static final String ROUTE_ID3_SESSION_CREATION_FAILED =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_id3_session_creation_failed";
-    public static final String ROUTE_NAME3 = "Sample Route 3 - Session creation failed";
-    public static final String ROUTE_ID4_TO_SELECT_AND_DESELECT =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_id4_to_select_and_deselect";
-    public static final String ROUTE_NAME4 = "Sample Route 4 - Route to select and deselect";
-    public static final String ROUTE_ID5_TO_TRANSFER_TO =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_id5_to_transfer_to";
-    public static final String ROUTE_NAME5 = "Sample Route 5 - Route to transfer to";
-
-    public static final String ROUTE_ID_SPECIAL_FEATURE =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_special_feature";
-    public static final String ROUTE_NAME_SPECIAL_FEATURE = "Special Feature Route";
-
-    public static final String SYSTEM_PROVIDER_ID =
-            "com.android.server.media/.SystemMediaRoute2Provider";
-
-    public static final int VOLUME_MAX = 100;
-    public static final String ROUTE_ID_FIXED_VOLUME =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_fixed_volume";
-    public static final String ROUTE_NAME_FIXED_VOLUME = "Fixed Volume Route";
-    public static final String ROUTE_ID_VARIABLE_VOLUME =
-            SAMPLE_PROVIDER_ROUTES_ID_PREFIX + "route_variable_volume";
-    public static final String ROUTE_NAME_VARIABLE_VOLUME = "Variable Volume Route";
-
-    public static final String ACTION_REMOVE_ROUTE =
-            "com.android.mediarouteprovider.action_remove_route";
-
-    public static final String FEATURE_SAMPLE =
-            "com.android.mediarouteprovider.FEATURE_SAMPLE";
-    public static final String FEATURE_SPECIAL =
-            "com.android.mediarouteprovider.FEATURE_SPECIAL";
-
-    private static final String FEATURE_LIVE_AUDIO = "android.media.intent.route.LIVE_AUDIO";
-
     private static final int TIMEOUT_MS = 5000;
 
     private Context mContext;
@@ -155,7 +127,8 @@
             public void onRoutesAdded(List<MediaRoute2Info> routes) {
                 assertTrue(routes.size() > 0);
                 for (MediaRoute2Info route : routes) {
-                    if (route.getId().equals(ROUTE_ID1) && route.getName().equals(ROUTE_NAME1)) {
+                    if (route.getOriginalId().equals(ROUTE_ID1)
+                            && route.getName().equals(ROUTE_NAME1)) {
                         latch.countDown();
                     }
                 }
@@ -176,7 +149,8 @@
             public void onRoutesRemoved(List<MediaRoute2Info> routes) {
                 assertTrue(routes.size() > 0);
                 for (MediaRoute2Info route : routes) {
-                    if (route.getId().equals(ROUTE_ID2) && route.getName().equals(ROUTE_NAME2)) {
+                    if (route.getOriginalId().equals(ROUTE_ID2)
+                            && route.getName().equals(ROUTE_NAME2)) {
                         latch.countDown();
                     }
                 }
@@ -196,7 +170,14 @@
     public void testRouteFeatures() throws Exception {
         Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_SPECIAL);
 
-        assertEquals(1, routes.size());
+        int routeCount = 0;
+        for (MediaRoute2Info route : routes.values()) {
+            if (!route.isSystemRoute()) {
+                routeCount++;
+            }
+        }
+
+        assertEquals(1, routeCount);
         assertNotNull(routes.get(ROUTE_ID_SPECIAL_FEATURE));
     }
 
@@ -246,22 +227,22 @@
             }
         });
 
-        assertEquals(1, mManager.getRoutingControllers(mPackageName).size());
+        assertEquals(1, mManager.getRoutingSessions(mPackageName).size());
 
         mManager.selectRoute(mPackageName, routes.get(ROUTE_ID1));
         latch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS);
 
-        List<MediaRouter2Manager.RoutingController> controllers =
-                mManager.getRoutingControllers(mPackageName);
+        List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName);
 
-        assertEquals(2, controllers.size());
+        assertEquals(2, sessions.size());
 
-        MediaRouter2Manager.RoutingController routingController = controllers.get(1);
+        MediaRouter2Manager.RoutingController routingController =
+                mManager.getControllerForSession(sessions.get(1));
         awaitOnRouteChangedManager(
                 () -> routingController.release(),
                 ROUTE_ID1,
                 route -> TextUtils.equals(route.getClientPackageName(), null));
-        assertEquals(1, mManager.getRoutingControllers(mPackageName).size());
+        assertEquals(1, mManager.getRoutingSessions(mPackageName).size());
     }
 
     /**
@@ -287,11 +268,11 @@
                 route -> TextUtils.equals(route.getClientPackageName(), mPackageName));
         assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
 
-        List<MediaRouter2Manager.RoutingController> controllers =
-                mManager.getRoutingControllers(mPackageName);
+        List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName);
 
-        assertEquals(2, controllers.size());
-        MediaRouter2Manager.RoutingController routingController = controllers.get(1);
+        assertEquals(2, sessions.size());
+        MediaRouter2Manager.RoutingController routingController =
+                mManager.getControllerForSession(sessions.get(1));
 
         awaitOnRouteChangedManager(
                 () -> mManager.selectRoute(mPackageName, routes.get(ROUTE_ID5_TO_TRANSFER_TO)),
@@ -305,25 +286,116 @@
     }
 
     @Test
-    public void testControlVolumeWithManager() throws Exception {
+    public void testSetSystemRouteVolume() throws Exception {
+        // ensure client
+        addManagerCallback(new MediaRouter2Manager.Callback());
+        String selectedSystemRouteId =
+                MediaRouter2Utils.getOriginalId(
+                mManager.getActiveSessions().get(0).getSelectedRoutes().get(0));
+        Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(Collections.emptyList());
+        MediaRoute2Info volRoute = routes.get(selectedSystemRouteId);
+        assertNotNull(volRoute);
+
+        int originalVolume = volRoute.getVolume();
+        int targetVolume = originalVolume == volRoute.getVolumeMax()
+                ? originalVolume - 1 : originalVolume + 1;
+
+        awaitOnRouteChangedManager(
+                () -> mManager.setRouteVolume(volRoute, targetVolume),
+                selectedSystemRouteId,
+                (route -> route.getVolume() == targetVolume));
+
+        awaitOnRouteChangedManager(
+                () -> mManager.setRouteVolume(volRoute, originalVolume),
+                selectedSystemRouteId,
+                (route -> route.getVolume() == originalVolume));
+    }
+
+    @Test
+    public void testSetRouteVolume() throws Exception {
         Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);
         MediaRoute2Info volRoute = routes.get(ROUTE_ID_VARIABLE_VOLUME);
 
         int originalVolume = volRoute.getVolume();
-        int deltaVolume = (originalVolume == volRoute.getVolumeMax() ? -1 : 1);
+        int targetVolume = originalVolume == volRoute.getVolumeMax()
+                ? originalVolume - 1 : originalVolume + 1;
 
         awaitOnRouteChangedManager(
-                () -> mManager.requestUpdateVolume(volRoute, deltaVolume),
+                () -> mManager.setRouteVolume(volRoute, targetVolume),
                 ROUTE_ID_VARIABLE_VOLUME,
-                (route -> route.getVolume() == originalVolume + deltaVolume));
+                (route -> route.getVolume() == targetVolume));
 
         awaitOnRouteChangedManager(
-                () -> mManager.requestSetVolume(volRoute, originalVolume),
+                () -> mManager.setRouteVolume(volRoute, originalVolume),
                 ROUTE_ID_VARIABLE_VOLUME,
                 (route -> route.getVolume() == originalVolume));
     }
 
     @Test
+    public void testSetSessionVolume() throws Exception {
+        Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);
+        addRouterCallback(new RouteCallback());
+
+        CountDownLatch onSessionCreatedLatch = new CountDownLatch(1);
+        CountDownLatch volumeChangedLatch = new CountDownLatch(2);
+
+        // create a controller
+        addManagerCallback(new MediaRouter2Manager.Callback() {
+            @Override
+            public void onSessionCreated(MediaRouter2Manager.RoutingController controller) {
+                assertNotNull(controller);
+                onSessionCreatedLatch.countDown();
+            }
+        });
+
+        mManager.selectRoute(mPackageName, routes.get(ROUTE_ID1));
+        assertTrue(onSessionCreatedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+
+        List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName);
+        assertEquals(2, sessions.size());
+
+        // test setSessionVolume
+        RoutingSessionInfo sessionInfo = sessions.get(1);
+        int currentVolume = sessionInfo.getVolume();
+        int targetVolume = (currentVolume == 0) ? 1 : (currentVolume - 1);
+
+        RoutingControllerCallback routingControllerCallback = new RoutingControllerCallback() {
+            @Override
+            public void onControllerUpdated(MediaRouter2.RoutingController controller) {
+                if (!TextUtils.equals(sessionInfo.getId(), controller.getId())) {
+                    return;
+                }
+                if (controller.getVolume() == targetVolume) {
+                    volumeChangedLatch.countDown();
+                }
+            }
+        };
+        mRouter2.registerControllerCallback(mExecutor, routingControllerCallback);
+
+        addManagerCallback(new MediaRouter2Manager.Callback() {
+            @Override
+            public void onSessionsUpdated() {
+                List<RoutingSessionInfo> sessions = mManager.getRoutingSessions(mPackageName);
+                if (sessions.size() != 2) {
+                    return;
+                }
+
+                if (sessions.get(1).getVolume() == targetVolume) {
+                    volumeChangedLatch.countDown();
+                }
+            }
+        });
+
+        mManager.setSessionVolume(sessionInfo, targetVolume);
+
+        try {
+            assertTrue(volumeChangedLatch.await(TIMEOUT_MS, TimeUnit.MILLISECONDS));
+        } finally {
+            mRouter2.unregisterControllerCallback(routingControllerCallback);
+        }
+    }
+
+    @Test
     public void testVolumeHandling() throws Exception {
         Map<String, MediaRoute2Info> routes = waitAndGetRoutesWithManager(FEATURES_ALL);
 
@@ -345,8 +417,7 @@
             @Override
             public void onRoutesAdded(List<MediaRoute2Info> routes) {
                 for (int i = 0; i < routes.size(); i++) {
-                    //TODO: use isSystem() or similar method when it's ready
-                    if (!TextUtils.equals(routes.get(i).getProviderId(), SYSTEM_PROVIDER_ID)) {
+                    if (!routes.get(i).isSystemRoute()) {
                         latch.countDown();
                         break;
                     }
@@ -399,7 +470,7 @@
     static Map<String, MediaRoute2Info> createRouteMap(List<MediaRoute2Info> routes) {
         Map<String, MediaRoute2Info> routeMap = new HashMap<>();
         for (MediaRoute2Info route : routes) {
-            routeMap.put(route.getId(), route);
+            routeMap.put(route.getOriginalId(), route);
         }
         return routeMap;
     }
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/RouteDiscoveryPreferenceTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/RouteDiscoveryPreferenceTest.java
deleted file mode 100644
index fa12935..0000000
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/RouteDiscoveryPreferenceTest.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.mediaroutertest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-
-import android.media.RouteDiscoveryPreference;
-import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.After;
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-import java.util.ArrayList;
-import java.util.List;
-
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class RouteDiscoveryPreferenceTest {
-    @Before
-    public void setUp() throws Exception { }
-
-    @After
-    public void tearDown() throws Exception { }
-
-    @Test
-    public void testEquality() {
-        List<String> testTypes = new ArrayList<>();
-        testTypes.add("TEST_TYPE_1");
-        testTypes.add("TEST_TYPE_2");
-        RouteDiscoveryPreference request = new RouteDiscoveryPreference.Builder(testTypes, true)
-                .build();
-
-        RouteDiscoveryPreference requestRebuilt = new RouteDiscoveryPreference.Builder(request)
-                .build();
-
-        assertEquals(request, requestRebuilt);
-
-        Parcel parcel = Parcel.obtain();
-        parcel.writeParcelable(request, 0);
-        parcel.setDataPosition(0);
-        RouteDiscoveryPreference requestFromParcel = parcel.readParcelable(null);
-
-        assertEquals(request, requestFromParcel);
-    }
-
-    @Test
-    public void testInequality() {
-        List<String> testTypes = new ArrayList<>();
-        testTypes.add("TEST_TYPE_1");
-        testTypes.add("TEST_TYPE_2");
-
-        List<String> testTypes2 = new ArrayList<>();
-        testTypes.add("TEST_TYPE_3");
-
-        RouteDiscoveryPreference request = new RouteDiscoveryPreference.Builder(testTypes, true)
-                .build();
-
-        RouteDiscoveryPreference requestTypes = new RouteDiscoveryPreference.Builder(request)
-                .setPreferredFeatures(testTypes2)
-                .build();
-        assertNotEquals(request, requestTypes);
-
-        RouteDiscoveryPreference requestActiveScan = new RouteDiscoveryPreference.Builder(request)
-                .setActiveScan(false)
-                .build();
-        assertNotEquals(request, requestActiveScan);
-    }
-}
diff --git a/media/tests/MediaRouter/src/com/android/mediaroutertest/RoutingSessionInfoTest.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/RoutingSessionInfoTest.java
deleted file mode 100644
index 704dca0..0000000
--- a/media/tests/MediaRouter/src/com/android/mediaroutertest/RoutingSessionInfoTest.java
+++ /dev/null
@@ -1,526 +0,0 @@
-/*
- * Copyright 2020 The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package com.android.mediaroutertest;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.testng.Assert.assertThrows;
-
-import android.media.RoutingSessionInfo;
-import android.os.Bundle;
-import android.os.Parcel;
-import android.support.test.filters.SmallTest;
-import android.support.test.runner.AndroidJUnit4;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-/**
- * Tests {@link RoutingSessionInfo} and its {@link RoutingSessionInfo.Builder builder}.
- */
-@RunWith(AndroidJUnit4.class)
-@SmallTest
-public class RoutingSessionInfoTest {
-    public static final String TEST_ID = "test_id";
-    public static final String TEST_CLIENT_PACKAGE_NAME = "com.test.client.package.name";
-    public static final String TEST_ROUTE_FEATURE = "test_route_feature";
-
-    public static final String TEST_ROUTE_ID_0 = "test_route_type_0";
-    public static final String TEST_ROUTE_ID_1 = "test_route_type_1";
-    public static final String TEST_ROUTE_ID_2 = "test_route_type_2";
-    public static final String TEST_ROUTE_ID_3 = "test_route_type_3";
-    public static final String TEST_ROUTE_ID_4 = "test_route_type_4";
-    public static final String TEST_ROUTE_ID_5 = "test_route_type_5";
-    public static final String TEST_ROUTE_ID_6 = "test_route_type_6";
-    public static final String TEST_ROUTE_ID_7 = "test_route_type_7";
-
-    public static final String TEST_KEY = "test_key";
-    public static final String TEST_VALUE = "test_value";
-
-    @Test
-    public void testBuilderConstructorWithInvalidValues() {
-        final String nullId = null;
-        final String nullClientPackageName = null;
-
-        final String emptyId = "";
-        // Note: An empty string as client package name is valid.
-
-        final String validId = TEST_ID;
-        final String validClientPackageName = TEST_CLIENT_PACKAGE_NAME;
-
-        // ID is invalid
-        assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
-                nullId, validClientPackageName));
-        assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
-                emptyId, validClientPackageName));
-
-        // client package name is invalid (null)
-        assertThrows(NullPointerException.class, () -> new RoutingSessionInfo.Builder(
-                validId, nullClientPackageName));
-
-        // Both are invalid
-        assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
-                nullId, nullClientPackageName));
-        assertThrows(IllegalArgumentException.class, () -> new RoutingSessionInfo.Builder(
-                emptyId, nullClientPackageName));
-    }
-
-    @Test
-    public void testBuilderCopyConstructorWithNull() {
-        // Null RouteInfo (1-argument constructor)
-        final RoutingSessionInfo nullRoutingSessionInfo = null;
-        assertThrows(NullPointerException.class,
-                () -> new RoutingSessionInfo.Builder(nullRoutingSessionInfo));
-    }
-
-    @Test
-    public void testBuilderConstructorWithEmptyClientPackageName() {
-        // An empty string for client package name is valid. (for unknown cases)
-        // Creating builder with it should not throw any exception.
-        RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
-                TEST_ID, "" /* clientPackageName*/);
-    }
-
-    @Test
-    public void testBuilderBuildWithEmptySelectedRoutesThrowsIAE() {
-        RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME);
-        // Note: Calling build() without adding any selected routes.
-        assertThrows(IllegalArgumentException.class, () -> builder.build());
-    }
-
-    @Test
-    public void testBuilderAddRouteMethodsWithIllegalArgumentsThrowsIAE() {
-        RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME);
-
-        final String nullRouteId = null;
-        final String emptyRouteId = "";
-
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addSelectedRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addSelectableRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addDeselectableRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addTransferrableRoute(nullRouteId));
-
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addSelectedRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addSelectableRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addDeselectableRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.addTransferrableRoute(emptyRouteId));
-    }
-
-    @Test
-    public void testBuilderRemoveRouteMethodsWithIllegalArgumentsThrowsIAE() {
-        RoutingSessionInfo.Builder builder = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME);
-
-        final String nullRouteId = null;
-        final String emptyRouteId = "";
-
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeSelectedRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeSelectableRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeDeselectableRoute(nullRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeTransferrableRoute(nullRouteId));
-
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeSelectedRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeSelectableRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeDeselectableRoute(emptyRouteId));
-        assertThrows(IllegalArgumentException.class,
-                () -> builder.removeTransferrableRoute(emptyRouteId));
-    }
-
-    @Test
-    public void testBuilderAndGettersOfRoutingSessionInfo() {
-        Bundle controlHints = new Bundle();
-        controlHints.putString(TEST_KEY, TEST_VALUE);
-
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        assertEquals(TEST_ID, sessionInfo.getId());
-        assertEquals(TEST_CLIENT_PACKAGE_NAME, sessionInfo.getClientPackageName());
-
-        assertEquals(2, sessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, sessionInfo.getSelectedRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_1, sessionInfo.getSelectedRoutes().get(1));
-
-        assertEquals(2, sessionInfo.getSelectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_2, sessionInfo.getSelectableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_3, sessionInfo.getSelectableRoutes().get(1));
-
-        assertEquals(2, sessionInfo.getDeselectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_4, sessionInfo.getDeselectableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_5, sessionInfo.getDeselectableRoutes().get(1));
-
-        assertEquals(2, sessionInfo.getTransferrableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_6, sessionInfo.getTransferrableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_7, sessionInfo.getTransferrableRoutes().get(1));
-
-        Bundle controlHintsOut = sessionInfo.getControlHints();
-        assertNotNull(controlHintsOut);
-        assertTrue(controlHintsOut.containsKey(TEST_KEY));
-        assertEquals(TEST_VALUE, controlHintsOut.getString(TEST_KEY));
-    }
-
-    @Test
-    public void testBuilderAddRouteMethodsWithBuilderCopyConstructor() {
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .build();
-
-        RoutingSessionInfo newSessionInfo = new RoutingSessionInfo.Builder(sessionInfo)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .build();
-
-        assertEquals(2, newSessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, newSessionInfo.getSelectedRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_1, newSessionInfo.getSelectedRoutes().get(1));
-
-        assertEquals(2, newSessionInfo.getSelectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_2, newSessionInfo.getSelectableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_3, newSessionInfo.getSelectableRoutes().get(1));
-
-        assertEquals(2, newSessionInfo.getDeselectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_4, newSessionInfo.getDeselectableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_5, newSessionInfo.getDeselectableRoutes().get(1));
-
-        assertEquals(2, newSessionInfo.getTransferrableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_6, newSessionInfo.getTransferrableRoutes().get(0));
-        assertEquals(TEST_ROUTE_ID_7, newSessionInfo.getTransferrableRoutes().get(1));
-    }
-
-    @Test
-    public void testBuilderRemoveRouteMethods() {
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .removeSelectedRoute(TEST_ROUTE_ID_1)
-
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .removeSelectableRoute(TEST_ROUTE_ID_3)
-
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .removeDeselectableRoute(TEST_ROUTE_ID_5)
-
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .removeTransferrableRoute(TEST_ROUTE_ID_7)
-
-                .build();
-
-        assertEquals(1, sessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, sessionInfo.getSelectedRoutes().get(0));
-
-        assertEquals(1, sessionInfo.getSelectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_2, sessionInfo.getSelectableRoutes().get(0));
-
-        assertEquals(1, sessionInfo.getDeselectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_4, sessionInfo.getDeselectableRoutes().get(0));
-
-        assertEquals(1, sessionInfo.getTransferrableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_6, sessionInfo.getTransferrableRoutes().get(0));
-    }
-
-    @Test
-    public void testBuilderRemoveRouteMethodsWithBuilderCopyConstructor() {
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .build();
-
-        RoutingSessionInfo newSessionInfo = new RoutingSessionInfo.Builder(sessionInfo)
-                .removeSelectedRoute(TEST_ROUTE_ID_1)
-                .removeSelectableRoute(TEST_ROUTE_ID_3)
-                .removeDeselectableRoute(TEST_ROUTE_ID_5)
-                .removeTransferrableRoute(TEST_ROUTE_ID_7)
-                .build();
-
-        assertEquals(1, newSessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, newSessionInfo.getSelectedRoutes().get(0));
-
-        assertEquals(1, newSessionInfo.getSelectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_2, newSessionInfo.getSelectableRoutes().get(0));
-
-        assertEquals(1, newSessionInfo.getDeselectableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_4, newSessionInfo.getDeselectableRoutes().get(0));
-
-        assertEquals(1, newSessionInfo.getTransferrableRoutes().size());
-        assertEquals(TEST_ROUTE_ID_6, newSessionInfo.getTransferrableRoutes().get(0));
-    }
-
-    @Test
-    public void testBuilderClearRouteMethods() {
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .clearSelectedRoutes()
-
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .clearSelectableRoutes()
-
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .clearDeselectableRoutes()
-
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .clearTransferrableRoutes()
-
-                // SelectedRoutes must not be empty
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .build();
-
-        assertEquals(1, sessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, sessionInfo.getSelectedRoutes().get(0));
-
-        assertTrue(sessionInfo.getSelectableRoutes().isEmpty());
-        assertTrue(sessionInfo.getDeselectableRoutes().isEmpty());
-        assertTrue(sessionInfo.getTransferrableRoutes().isEmpty());
-    }
-
-    @Test
-    public void testBuilderClearRouteMethodsWithBuilderCopyConstructor() {
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .build();
-
-        RoutingSessionInfo newSessionInfo = new RoutingSessionInfo.Builder(sessionInfo)
-                .clearSelectedRoutes()
-                .clearSelectableRoutes()
-                .clearDeselectableRoutes()
-                .clearTransferrableRoutes()
-                // SelectedRoutes must not be empty
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .build();
-
-        assertEquals(1, newSessionInfo.getSelectedRoutes().size());
-        assertEquals(TEST_ROUTE_ID_0, newSessionInfo.getSelectedRoutes().get(0));
-
-        assertTrue(newSessionInfo.getSelectableRoutes().isEmpty());
-        assertTrue(newSessionInfo.getDeselectableRoutes().isEmpty());
-        assertTrue(newSessionInfo.getTransferrableRoutes().isEmpty());
-    }
-
-    @Test
-    public void testEqualsCreatedWithSameArguments() {
-        Bundle controlHints = new Bundle();
-        controlHints.putString(TEST_KEY, TEST_VALUE);
-
-        RoutingSessionInfo sessionInfo1 = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        RoutingSessionInfo sessionInfo2 = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        assertEquals(sessionInfo1, sessionInfo2);
-        assertEquals(sessionInfo1.hashCode(), sessionInfo2.hashCode());
-    }
-
-    @Test
-    public void testEqualsCreatedWithBuilderCopyConstructor() {
-        Bundle controlHints = new Bundle();
-        controlHints.putString(TEST_KEY, TEST_VALUE);
-
-        RoutingSessionInfo sessionInfo1 = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        RoutingSessionInfo sessionInfo2 = new RoutingSessionInfo.Builder(sessionInfo1).build();
-
-        assertEquals(sessionInfo1, sessionInfo2);
-        assertEquals(sessionInfo1.hashCode(), sessionInfo2.hashCode());
-    }
-
-    @Test
-    public void testEqualsReturnFalse() {
-        Bundle controlHints = new Bundle();
-        controlHints.putString(TEST_KEY, TEST_VALUE);
-
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        // Now, we will use copy constructor
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .addSelectedRoute("randomRoute")
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .addSelectableRoute("randomRoute")
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .addDeselectableRoute("randomRoute")
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .addTransferrableRoute("randomRoute")
-                .build());
-
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .removeSelectedRoute(TEST_ROUTE_ID_1)
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .removeSelectableRoute(TEST_ROUTE_ID_3)
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .removeDeselectableRoute(TEST_ROUTE_ID_5)
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .removeTransferrableRoute(TEST_ROUTE_ID_7)
-                .build());
-
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .clearSelectedRoutes()
-                // Note: Calling build() with empty selected routes will throw IAE.
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .clearSelectableRoutes()
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .clearDeselectableRoutes()
-                .build());
-        assertNotEquals(sessionInfo, new RoutingSessionInfo.Builder(sessionInfo)
-                .clearTransferrableRoutes()
-                .build());
-
-        // Note: ControlHints will not affect the equals.
-    }
-
-    @Test
-    public void testParcelingAndUnParceling() {
-        Bundle controlHints = new Bundle();
-        controlHints.putString(TEST_KEY, TEST_VALUE);
-
-        RoutingSessionInfo sessionInfo = new RoutingSessionInfo.Builder(
-                TEST_ID, TEST_CLIENT_PACKAGE_NAME)
-                .addSelectedRoute(TEST_ROUTE_ID_0)
-                .addSelectedRoute(TEST_ROUTE_ID_1)
-                .addSelectableRoute(TEST_ROUTE_ID_2)
-                .addSelectableRoute(TEST_ROUTE_ID_3)
-                .addDeselectableRoute(TEST_ROUTE_ID_4)
-                .addDeselectableRoute(TEST_ROUTE_ID_5)
-                .addTransferrableRoute(TEST_ROUTE_ID_6)
-                .addTransferrableRoute(TEST_ROUTE_ID_7)
-                .setControlHints(controlHints)
-                .build();
-
-        Parcel parcel = Parcel.obtain();
-        sessionInfo.writeToParcel(parcel, 0);
-        parcel.setDataPosition(0);
-
-        RoutingSessionInfo sessionInfoFromParcel =
-                RoutingSessionInfo.CREATOR.createFromParcel(parcel);
-        assertEquals(sessionInfo, sessionInfoFromParcel);
-        assertEquals(sessionInfo.hashCode(), sessionInfoFromParcel.hashCode());
-
-        // Check controlHints
-        Bundle controlHintsOut = sessionInfoFromParcel.getControlHints();
-        assertNotNull(controlHintsOut);
-        assertTrue(controlHintsOut.containsKey(TEST_KEY));
-        assertEquals(TEST_VALUE, controlHintsOut.getString(TEST_KEY));
-    }
-}
diff --git a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java
similarity index 92%
rename from media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
rename to media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java
index 6595cae..267927f 100644
--- a/media/tests/MediaRouteProvider/src/com/android/mediarouteprovider/example/SampleMediaRoute2ProviderService.java
+++ b/media/tests/MediaRouter/src/com/android/mediaroutertest/SampleMediaRoute2ProviderService.java
@@ -14,10 +14,11 @@
  * limitations under the License.
  */
 
-package com.android.mediarouteprovider.example;
+package com.android.mediaroutertest;
 
 import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_SPEAKER;
 import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_TV;
+import static android.media.MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE;
 
 import android.annotation.Nullable;
 import android.content.Intent;
@@ -51,6 +52,8 @@
     public static final String ROUTE_NAME_SPECIAL_FEATURE = "Special Feature Route";
 
     public static final int VOLUME_MAX = 100;
+    public static final int SESSION_VOLUME_MAX = 50;
+    public static final int SESSION_VOLUME_INITIAL = 20;
     public static final String ROUTE_ID_FIXED_VOLUME = "route_fixed_volume";
     public static final String ROUTE_NAME_FIXED_VOLUME = "Fixed Volume Route";
     public static final String ROUTE_ID_VARIABLE_VOLUME = "route_variable_volume";
@@ -141,12 +144,12 @@
     }
 
     @Override
-    public void onSetVolume(String routeId, int volume) {
+    public void onSetRouteVolume(String routeId, int volume) {
         MediaRoute2Info route = mRoutes.get(routeId);
         if (route == null) {
             return;
         }
-        volume = Math.min(volume, Math.max(0, route.getVolumeMax()));
+        volume = Math.max(0, Math.min(volume, route.getVolumeMax()));
         mRoutes.put(routeId, new MediaRoute2Info.Builder(route)
                 .setVolume(volume)
                 .build());
@@ -154,18 +157,16 @@
     }
 
     @Override
-    public void onUpdateVolume(String routeId, int delta) {
-        android.util.Log.d(TAG, "onUpdateVolume routeId= " + routeId + "delta=" + delta);
-        MediaRoute2Info route = mRoutes.get(routeId);
-        if (route == null) {
+    public void onSetSessionVolume(String sessionId, int volume) {
+        RoutingSessionInfo sessionInfo = getSessionInfo(sessionId);
+        if (sessionInfo == null) {
             return;
         }
-        int volume = route.getVolume() + delta;
-        volume = Math.min(volume, Math.max(0, route.getVolumeMax()));
-        mRoutes.put(routeId, new MediaRoute2Info.Builder(route)
+        volume = Math.max(0, Math.min(volume, sessionInfo.getVolumeMax()));
+        RoutingSessionInfo newSessionInfo = new RoutingSessionInfo.Builder(sessionInfo)
                 .setVolume(volume)
-                .build());
-        publishRoutes();
+                .build();
+        notifySessionUpdated(newSessionInfo);
     }
 
     @Override
@@ -191,6 +192,9 @@
                 .addSelectedRoute(routeId)
                 .addSelectableRoute(ROUTE_ID4_TO_SELECT_AND_DESELECT)
                 .addTransferrableRoute(ROUTE_ID5_TO_TRANSFER_TO)
+                .setVolumeHandling(PLAYBACK_VOLUME_VARIABLE)
+                .setVolumeMax(SESSION_VOLUME_MAX)
+                .setVolume(SESSION_VOLUME_INITIAL)
                 // Set control hints with given sessionHints
                 .setControlHints(sessionHints)
                 .build();
diff --git a/media/tests/TunerTest/OWNERS b/media/tests/TunerTest/OWNERS
new file mode 100644
index 0000000..73ea663
--- /dev/null
+++ b/media/tests/TunerTest/OWNERS
@@ -0,0 +1,4 @@
+amyjojo@google.com
+nchalko@google.com
+quxiangfang@google.com
+shubang@google.com
diff --git a/mms/java/android/telephony/MmsManager.java b/mms/java/android/telephony/MmsManager.java
index cf55eba..f07cd5e 100644
--- a/mms/java/android/telephony/MmsManager.java
+++ b/mms/java/android/telephony/MmsManager.java
@@ -55,10 +55,12 @@
      *                        sending the message.
      * @param sentIntent if not NULL this <code>PendingIntent</code> is broadcast when the message
      *                   is successfully sent, or failed
+     * @param messageId an id that uniquely identifies the message requested to be sent.
+     *                  Used for logging and diagnostics purposes. The id may be 0.
      */
     public void sendMultimediaMessage(int subId, @NonNull Uri contentUri,
             @Nullable String locationUrl, @Nullable Bundle configOverrides,
-            @Nullable PendingIntent sentIntent) {
+            @Nullable PendingIntent sentIntent, long messageId) {
         try {
             final IMms iMms = IMms.Stub.asInterface(ServiceManager.getService("imms"));
             if (iMms == null) {
@@ -66,7 +68,7 @@
             }
 
             iMms.sendMessage(subId, ActivityThread.currentPackageName(), contentUri,
-                    locationUrl, configOverrides, sentIntent);
+                    locationUrl, configOverrides, sentIntent, messageId);
         } catch (RemoteException e) {
             // Ignore it
         }
@@ -83,18 +85,22 @@
      *  downloading the message.
      * @param downloadedIntent if not NULL this <code>PendingIntent</code> is
      *  broadcast when the message is downloaded, or the download is failed
+     * @param messageId an id that uniquely identifies the message requested to be downloaded.
+     *                  Used for logging and diagnostics purposes. The id may be 0.
+     *  downloaded.
      * @throws IllegalArgumentException if locationUrl or contentUri is empty
      */
     public void downloadMultimediaMessage(int subId, @NonNull String locationUrl,
             @NonNull Uri contentUri, @Nullable Bundle configOverrides,
-            @Nullable PendingIntent downloadedIntent) {
+            @Nullable PendingIntent downloadedIntent, long messageId) {
         try {
             final IMms iMms = IMms.Stub.asInterface(ServiceManager.getService("imms"));
             if (iMms == null) {
                 return;
             }
             iMms.downloadMessage(subId, ActivityThread.currentPackageName(),
-                    locationUrl, contentUri, configOverrides, downloadedIntent);
+                    locationUrl, contentUri, configOverrides, downloadedIntent,
+                    messageId);
         } catch (RemoteException e) {
             // Ignore it
         }
diff --git a/mms/java/com/android/internal/telephony/IMms.aidl b/mms/java/com/android/internal/telephony/IMms.aidl
index 8be5111..e0e0a4a 100644
--- a/mms/java/com/android/internal/telephony/IMms.aidl
+++ b/mms/java/com/android/internal/telephony/IMms.aidl
@@ -37,9 +37,11 @@
      *  sending the message. See {@link android.telephony.SmsManager} for the value names and types.
      * @param sentIntent if not NULL this <code>PendingIntent</code> is
      *  broadcast when the message is successfully sent, or failed
+     * @param messageId An id that uniquely identifies the message requested to be sent.
      */
     void sendMessage(int subId, String callingPkg, in Uri contentUri,
-            String locationUrl, in Bundle configOverrides, in PendingIntent sentIntent);
+            String locationUrl, in Bundle configOverrides, in PendingIntent sentIntent,
+            in long messageId);
 
     /**
      * Download an MMS message using known location and transaction id
@@ -54,10 +56,11 @@
      *  types.
      * @param downloadedIntent if not NULL this <code>PendingIntent</code> is
      *  broadcast when the message is downloaded, or the download is failed
-     */
+     * @param messageId An id that uniquely identifies the message requested to be downloaded.
+    */
     void downloadMessage(int subId, String callingPkg, String locationUrl,
             in Uri contentUri, in Bundle configOverrides,
-            in PendingIntent downloadedIntent);
+            in PendingIntent downloadedIntent, in long messageId);
 
     /**
      * Import a text message into system's SMS store
diff --git a/native/android/Android.bp b/native/android/Android.bp
index 0c6f507..257ae73 100644
--- a/native/android/Android.bp
+++ b/native/android/Android.bp
@@ -25,6 +25,7 @@
     cflags: [
         "-Wall",
         "-Werror",
+        "-Wextra",
         "-Wunused",
         "-Wunreachable-code",
     ],
diff --git a/native/android/libandroid.map.txt b/native/android/libandroid.map.txt
index 97b861b..a8f1d2c 100644
--- a/native/android/libandroid.map.txt
+++ b/native/android/libandroid.map.txt
@@ -23,6 +23,8 @@
     AChoreographer_postFrameCallbackDelayed; # introduced=24
     AChoreographer_postFrameCallback64; # introduced=29
     AChoreographer_postFrameCallbackDelayed64; # introduced=29
+    AChoreographer_registerRefreshRateCallback; # introduced=30
+    AChoreographer_unregisterRefreshRateCallback; # introduced=30
     AConfiguration_copy;
     AConfiguration_delete;
     AConfiguration_diff;
diff --git a/native/android/surface_control.cpp b/native/android/surface_control.cpp
index 392c9f6..ba793e8 100644
--- a/native/android/surface_control.cpp
+++ b/native/android/surface_control.cpp
@@ -294,7 +294,7 @@
 
         auto& aSurfaceControlStats = aSurfaceTransactionStats.aSurfaceControlStats;
 
-        for (const auto& [surfaceControl, acquireTime, previousReleaseFence, transformHint] : surfaceControlStats) {
+        for (const auto& [surfaceControl, latchTime, acquireTime, presentFence, previousReleaseFence, transformHint, frameEvents] : surfaceControlStats) {
             ASurfaceControl* aSurfaceControl = reinterpret_cast<ASurfaceControl*>(surfaceControl.get());
             aSurfaceControlStats[aSurfaceControl].acquireTime = acquireTime;
             aSurfaceControlStats[aSurfaceControl].previousReleaseFence = previousReleaseFence;
diff --git a/native/graphics/jni/imagedecoder.cpp b/native/graphics/jni/imagedecoder.cpp
index c1143ce..d1946b0 100644
--- a/native/graphics/jni/imagedecoder.cpp
+++ b/native/graphics/jni/imagedecoder.cpp
@@ -28,6 +28,7 @@
 #include <utils/Color.h>
 
 #include <fcntl.h>
+#include <limits>
 #include <optional>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -70,6 +71,14 @@
         return ResultToErrorCode(result);
     }
 
+    // AImageDecoderHeaderInfo_getWidth/Height return an int32_t. Ensure that
+    // the conversion is safe.
+    const auto& info = androidCodec->getInfo();
+    if (info.width() > std::numeric_limits<int32_t>::max()
+        || info.height() > std::numeric_limits<int32_t>::max()) {
+        return ANDROID_IMAGE_DECODER_INVALID_INPUT;
+    }
+
     *outDecoder = reinterpret_cast<AImageDecoder*>(new ImageDecoder(std::move(androidCodec)));
     return ANDROID_IMAGE_DECODER_SUCCESS;
 }
@@ -213,12 +222,12 @@
         return ANDROID_IMAGE_DECODER_BAD_PARAMETER;
     }
 
-    // Note: This recomputes the data space because it's possible the client has
-    // changed the output color space, so we cannot rely on it. Alternatively,
+    // Note: This recomputes the color type because it's possible the client has
+    // changed the output color type, so we cannot rely on it. Alternatively,
     // we could store the ADataSpace in the ImageDecoder.
     const ImageDecoder* imageDecoder = toDecoder(info);
     SkColorType colorType = imageDecoder->mCodec->computeOutputColorType(kN32_SkColorType);
-    sk_sp<SkColorSpace> colorSpace = imageDecoder->mCodec->computeOutputColorSpace(colorType);
+    sk_sp<SkColorSpace> colorSpace = imageDecoder->getDefaultColorSpace();
     return uirenderer::ColorSpaceToADataSpace(colorSpace.get(), colorType);
 }
 
diff --git a/packages/CarSystemUI/res/values/config.xml b/packages/CarSystemUI/res/values/config.xml
index e2297e4..d2f514c 100644
--- a/packages/CarSystemUI/res/values/config.xml
+++ b/packages/CarSystemUI/res/values/config.xml
@@ -29,6 +29,9 @@
     <bool name="config_enableRightNavigationBar">false</bool>
     <bool name="config_enableBottomNavigationBar">true</bool>
 
+    <!-- Disable normal notification rendering; we handle that ourselves -->
+    <bool name="config_renderNotifications">false</bool>
+
     <!-- Whether heads-up notifications should be shown when shade is open. -->
     <bool name="config_enableHeadsUpNotificationWhenNotificationShadeOpen">true</bool>
 
diff --git a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
index cf4ee7d..585acfe 100644
--- a/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/CarSystemUIModule.java
@@ -22,7 +22,6 @@
 import android.content.Context;
 
 import com.android.systemui.car.CarDeviceProvisionedControllerImpl;
-import com.android.systemui.car.CarNotificationEntryManager;
 import com.android.systemui.car.CarNotificationInterruptionStateProvider;
 import com.android.systemui.dagger.SystemUIRootComponent;
 import com.android.systemui.dock.DockManager;
@@ -73,13 +72,6 @@
         return false;
     }
 
-    /**
-     * Use {@link CarNotificationEntryManager}, which does nothing when adding a notification.
-     */
-    @Binds
-    abstract NotificationEntryManager bindNotificationEntryManager(
-            CarNotificationEntryManager notificationEntryManager);
-
     @Singleton
     @Provides
     static HeadsUpManagerPhone provideHeadsUpManagerPhone(Context context,
diff --git a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java b/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java
deleted file mode 100644
index cfe1c70..0000000
--- a/packages/CarSystemUI/src/com/android/systemui/car/CarNotificationEntryManager.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright (C) 2019 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.car;
-
-import android.service.notification.NotificationListenerService;
-import android.service.notification.StatusBarNotification;
-
-import com.android.systemui.statusbar.FeatureFlags;
-import com.android.systemui.statusbar.NotificationRemoteInputManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
-import com.android.systemui.statusbar.notification.collection.NotificationRankingManager;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
-import com.android.systemui.statusbar.notification.logging.NotifLog;
-import com.android.systemui.statusbar.phone.NotificationGroupManager;
-import com.android.systemui.util.leak.LeakDetector;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-import dagger.Lazy;
-
-/**
- * Car specific notification entry manager that does nothing when adding a notification.
- *
- * <p> This is because system UI notifications are disabled and we have a different implementation.
- * Please see {@link com.android.car.notification}.
- */
-@Singleton
-public class CarNotificationEntryManager extends NotificationEntryManager {
-
-    @Inject
-    public CarNotificationEntryManager(
-            NotifLog notifLog,
-            NotificationGroupManager groupManager,
-            NotificationRankingManager rankingManager,
-            KeyguardEnvironment keyguardEnvironment,
-            FeatureFlags featureFlags,
-            Lazy<NotificationRowBinder> notificationRowBinderLazy,
-            Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy,
-            LeakDetector leakDetector) {
-        super(notifLog, groupManager, rankingManager, keyguardEnvironment, featureFlags,
-                notificationRowBinderLazy, notificationRemoteInputManagerLazy, leakDetector);
-    }
-
-    @Override
-    public void addNotification(
-            StatusBarNotification notification, NotificationListenerService.RankingMap ranking) {
-    }
-}
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
index 76e9ec6..210dd32 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBar.java
@@ -87,10 +87,8 @@
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.stackdivider.Divider;
 import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.FlingAnimationUtils;
 import com.android.systemui.statusbar.NavigationBarController;
-import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -103,12 +101,10 @@
 import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationAlertingManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
-import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.phone.AutoHideController;
@@ -124,7 +120,6 @@
 import com.android.systemui.statusbar.phone.LightsOutNotifController;
 import com.android.systemui.statusbar.phone.LockscreenLockIconController;
 import com.android.systemui.statusbar.phone.LockscreenWallpaper;
-import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
 import com.android.systemui.statusbar.phone.ScrimController;
@@ -141,7 +136,6 @@
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.volume.VolumeComponent;
@@ -257,7 +251,7 @@
 
     public CarStatusBar(
             Context context,
-            FeatureFlags featureFlags,
+            NotificationsController notificationsController,
             LightBarController lightBarController,
             AutoHideController autoHideController,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -269,13 +263,11 @@
             HeadsUpManagerPhone headsUpManagerPhone,
             DynamicPrivacyController dynamicPrivacyController,
             BypassHeadsUpNotifier bypassHeadsUpNotifier,
-            Lazy<NotifPipelineInitializer> notifPipelineInitializer,
             FalsingManager falsingManager,
             BroadcastDispatcher broadcastDispatcher,
             RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
             NotificationGutsManager notificationGutsManager,
             NotificationLogger notificationLogger,
-            NotificationEntryManager notificationEntryManager,
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             NotificationViewHierarchyManager notificationViewHierarchyManager,
             KeyguardViewMediator keyguardViewMediator,
@@ -296,12 +288,10 @@
             VibratorHelper vibratorHelper,
             BubbleController bubbleController,
             NotificationGroupManager groupManager,
-            NotificationGroupAlertTransferHelper groupAlertTransferHelper,
             VisualStabilityManager visualStabilityManager,
             DeviceProvisionedController deviceProvisionedController,
             NavigationBarController navigationBarController,
             Lazy<AssistManager> assistManagerLazy,
-            NotificationListener notificationListener,
             ConfigurationController configurationController,
             NotificationShadeWindowController notificationShadeWindowController,
             LockscreenLockIconController lockscreenLockIconController,
@@ -318,7 +308,6 @@
             Optional<Recents> recents,
             Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
             PluginManager pluginManager,
-            RemoteInputUriController remoteInputUriController,
             Optional<Divider> dividerOptional,
             SuperStatusBarViewFactory superStatusBarViewFactory,
             LightsOutNotifController lightsOutNotifController,
@@ -334,7 +323,6 @@
             KeyguardDismissUtil keyguardDismissUtil,
             ExtensionController extensionController,
             UserInfoControllerImpl userInfoControllerImpl,
-            NotificationRowBinderImpl notificationRowBinder,
             DismissCallbackRegistry dismissCallbackRegistry,
             /* Car Settings injected components. */
             CarServiceProvider carServiceProvider,
@@ -345,7 +333,7 @@
             FlingAnimationUtils.Builder flingAnimationUtilsBuilder) {
         super(
                 context,
-                featureFlags,
+                notificationsController,
                 lightBarController,
                 autoHideController,
                 keyguardUpdateMonitor,
@@ -357,13 +345,11 @@
                 headsUpManagerPhone,
                 dynamicPrivacyController,
                 bypassHeadsUpNotifier,
-                notifPipelineInitializer,
                 falsingManager,
                 broadcastDispatcher,
                 remoteInputQuickSettingsDisabler,
                 notificationGutsManager,
                 notificationLogger,
-                notificationEntryManager,
                 notificationInterruptionStateProvider,
                 notificationViewHierarchyManager,
                 keyguardViewMediator,
@@ -384,12 +370,10 @@
                 vibratorHelper,
                 bubbleController,
                 groupManager,
-                groupAlertTransferHelper,
                 visualStabilityManager,
                 deviceProvisionedController,
                 navigationBarController,
                 assistManagerLazy,
-                notificationListener,
                 configurationController,
                 notificationShadeWindowController,
                 lockscreenLockIconController,
@@ -407,7 +391,6 @@
                 recents,
                 statusBarComponentBuilder,
                 pluginManager,
-                remoteInputUriController,
                 dividerOptional,
                 lightsOutNotifController,
                 statusBarNotificationActivityStarterBuilder,
@@ -422,7 +405,6 @@
                 keyguardDismissUtil,
                 extensionController,
                 userInfoControllerImpl,
-                notificationRowBinder,
                 dismissCallbackRegistry);
         mUserSwitcherController = userSwitcherController;
         mScrimController = scrimController;
diff --git a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
index 45da822..498bd87 100644
--- a/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
+++ b/packages/CarSystemUI/src/com/android/systemui/statusbar/car/CarStatusBarModule.java
@@ -47,10 +47,8 @@
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.stackdivider.Divider;
 import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.FlingAnimationUtils;
 import com.android.systemui.statusbar.NavigationBarController;
-import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -63,12 +61,10 @@
 import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationAlertingManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
-import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.phone.AutoHideController;
@@ -83,7 +79,6 @@
 import com.android.systemui.statusbar.phone.LightsOutNotifController;
 import com.android.systemui.statusbar.phone.LockscreenLockIconController;
 import com.android.systemui.statusbar.phone.LockscreenWallpaper;
-import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
 import com.android.systemui.statusbar.phone.ScrimController;
@@ -99,7 +94,6 @@
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.volume.VolumeComponent;
@@ -127,7 +121,7 @@
     @Singleton
     static CarStatusBar provideStatusBar(
             Context context,
-            FeatureFlags featureFlags,
+            NotificationsController notificationsController,
             LightBarController lightBarController,
             AutoHideController autoHideController,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -139,13 +133,11 @@
             HeadsUpManagerPhone headsUpManagerPhone,
             DynamicPrivacyController dynamicPrivacyController,
             BypassHeadsUpNotifier bypassHeadsUpNotifier,
-            Lazy<NotifPipelineInitializer> notifPipelineInitializer,
             FalsingManager falsingManager,
             BroadcastDispatcher broadcastDispatcher,
             RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
             NotificationGutsManager notificationGutsManager,
             NotificationLogger notificationLogger,
-            NotificationEntryManager notificationEntryManager,
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             NotificationViewHierarchyManager notificationViewHierarchyManager,
             KeyguardViewMediator keyguardViewMediator,
@@ -166,12 +158,10 @@
             VibratorHelper vibratorHelper,
             BubbleController bubbleController,
             NotificationGroupManager groupManager,
-            NotificationGroupAlertTransferHelper groupAlertTransferHelper,
             VisualStabilityManager visualStabilityManager,
             DeviceProvisionedController deviceProvisionedController,
             NavigationBarController navigationBarController,
             Lazy<AssistManager> assistManagerLazy,
-            NotificationListener notificationListener,
             ConfigurationController configurationController,
             NotificationShadeWindowController notificationShadeWindowController,
             LockscreenLockIconController lockscreenLockIconController,
@@ -188,7 +178,6 @@
             Optional<Recents> recentsOptional,
             Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
             PluginManager pluginManager,
-            RemoteInputUriController remoteInputUriController,
             Optional<Divider> dividerOptional,
             SuperStatusBarViewFactory superStatusBarViewFactory,
             LightsOutNotifController lightsOutNotifController,
@@ -204,7 +193,6 @@
             KeyguardDismissUtil keyguardDismissUtil,
             ExtensionController extensionController,
             UserInfoControllerImpl userInfoControllerImpl,
-            NotificationRowBinderImpl notificationRowBinder,
             DismissCallbackRegistry dismissCallbackRegistry,
             CarServiceProvider carServiceProvider,
             Lazy<PowerManagerHelper> powerManagerHelperLazy,
@@ -214,7 +202,7 @@
             FlingAnimationUtils.Builder flingAnimationUtilsBuilder) {
         return new CarStatusBar(
                 context,
-                featureFlags,
+                notificationsController,
                 lightBarController,
                 autoHideController,
                 keyguardUpdateMonitor,
@@ -226,13 +214,11 @@
                 headsUpManagerPhone,
                 dynamicPrivacyController,
                 bypassHeadsUpNotifier,
-                notifPipelineInitializer,
                 falsingManager,
                 broadcastDispatcher,
                 remoteInputQuickSettingsDisabler,
                 notificationGutsManager,
                 notificationLogger,
-                notificationEntryManager,
                 notificationInterruptionStateProvider,
                 notificationViewHierarchyManager,
                 keyguardViewMediator,
@@ -253,12 +239,10 @@
                 vibratorHelper,
                 bubbleController,
                 groupManager,
-                groupAlertTransferHelper,
                 visualStabilityManager,
                 deviceProvisionedController,
                 navigationBarController,
                 assistManagerLazy,
-                notificationListener,
                 configurationController,
                 notificationShadeWindowController,
                 lockscreenLockIconController,
@@ -275,7 +259,6 @@
                 recentsOptional,
                 statusBarComponentBuilder,
                 pluginManager,
-                remoteInputUriController,
                 dividerOptional,
                 superStatusBarViewFactory,
                 lightsOutNotifController,
@@ -290,7 +273,6 @@
                 keyguardDismissUtil,
                 extensionController,
                 userInfoControllerImpl,
-                notificationRowBinder,
                 dismissCallbackRegistry,
                 carServiceProvider,
                 powerManagerHelperLazy,
diff --git a/packages/CarrierDefaultApp/res/values-ky/strings.xml b/packages/CarrierDefaultApp/res/values-ky/strings.xml
index 066e8f6..199476f 100644
--- a/packages/CarrierDefaultApp/res/values-ky/strings.xml
+++ b/packages/CarrierDefaultApp/res/values-ky/strings.xml
@@ -12,6 +12,6 @@
     <string name="mobile_data_status_notification_channel_name" msgid="833999690121305708">"Мобилдик Интернеттин абалы"</string>
     <string name="action_bar_label" msgid="4290345990334377177">"Мобилдик тармакка кирүү"</string>
     <string name="ssl_error_warning" msgid="3127935140338254180">"Кошулайын деген тармагыңызда коопсуздук көйгөйлөрү бар."</string>
-    <string name="ssl_error_example" msgid="6188711843183058764">"Мисалы, каттоо эсебине кирүү баракчасы көрсөтүлгөн уюмга таандык эмес болушу мүмкүн."</string>
+    <string name="ssl_error_example" msgid="6188711843183058764">"Мисалы, аккаунтка кирүү баракчасы көрсөтүлгөн уюмга таандык эмес болушу мүмкүн."</string>
     <string name="ssl_error_continue" msgid="1138548463994095584">"Баары бир серепчи аркылуу улантуу"</string>
 </resources>
diff --git a/packages/DynamicSystemInstallationService/res/values/strings.xml b/packages/DynamicSystemInstallationService/res/values/strings.xml
index 9bd5be7..7595d2b 100644
--- a/packages/DynamicSystemInstallationService/res/values/strings.xml
+++ b/packages/DynamicSystemInstallationService/res/values/strings.xml
@@ -35,4 +35,7 @@
     <!-- Toast when we fail to launch into Dynamic System [CHAR LIMIT=64] -->
     <string name="toast_failed_to_reboot_to_dynsystem">Can\u2019t restart or load dynamic system</string>
 
+    <!-- URL of Dynamic System Key Revocation List [DO NOT TRANSLATE] -->
+    <string name="key_revocation_list_url" translatable="false">https://dl.google.com/developers/android/gsi/gsi-keyblacklist.json</string>
+
 </resources>
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
index 9ccb837..9bae223 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/DynamicSystemInstallationService.java
@@ -46,6 +46,7 @@
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
+import android.net.http.HttpResponseCache;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
@@ -60,6 +61,8 @@
 import android.util.Log;
 import android.widget.Toast;
 
+import java.io.File;
+import java.io.IOException;
 import java.lang.ref.WeakReference;
 import java.util.ArrayList;
 
@@ -146,10 +149,26 @@
         prepareNotification();
 
         mDynSystem = (DynamicSystemManager) getSystemService(Context.DYNAMIC_SYSTEM_SERVICE);
+
+        // Install an HttpResponseCache in the application cache directory so we can cache
+        // gsi key revocation list. The http(s) protocol handler uses this cache transparently.
+        // The cache size is chosen heuristically. Since we don't have too much traffic right now,
+        // a moderate size of 1MiB should be enough.
+        try {
+            File httpCacheDir = new File(getCacheDir(), "httpCache");
+            long httpCacheSize = 1 * 1024 * 1024; // 1 MiB
+            HttpResponseCache.install(httpCacheDir, httpCacheSize);
+        } catch (IOException e) {
+            Log.d(TAG, "HttpResponseCache.install() failed: " + e);
+        }
     }
 
     @Override
     public void onDestroy() {
+        HttpResponseCache cache = HttpResponseCache.getInstalled();
+        if (cache != null) {
+            cache.flush();
+        }
         // Cancel the persistent notification.
         mNM.cancel(NOTIFICATION_ID);
     }
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
index 9aea0e7..438c435 100644
--- a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/InstallationAsyncTask.java
@@ -25,6 +25,8 @@
 import android.util.Log;
 import android.webkit.URLUtil;
 
+import org.json.JSONException;
+
 import java.io.BufferedInputStream;
 import java.io.File;
 import java.io.IOException;
@@ -100,7 +102,9 @@
     private final Context mContext;
     private final DynamicSystemManager mDynSystem;
     private final ProgressListener mListener;
+    private final boolean mIsNetworkUrl;
     private DynamicSystemManager.Session mInstallationSession;
+    private KeyRevocationList mKeyRevocationList;
 
     private boolean mIsZip;
     private boolean mIsCompleted;
@@ -123,6 +127,7 @@
         mContext = context;
         mDynSystem = dynSystem;
         mListener = listener;
+        mIsNetworkUrl = URLUtil.isNetworkUrl(mUrl);
     }
 
     @Override
@@ -152,9 +157,11 @@
                 return null;
             }
 
+            // TODO(yochiang): do post-install public key check (revocation list / boot-ramdisk)
+
             mDynSystem.finishInstallation();
         } catch (Exception e) {
-            e.printStackTrace();
+            Log.e(TAG, e.toString(), e);
             mDynSystem.remove();
             return e;
         } finally {
@@ -220,7 +227,7 @@
                 String.format(Locale.US, "Unsupported file format: %s", mUrl));
         }
 
-        if (URLUtil.isNetworkUrl(mUrl)) {
+        if (mIsNetworkUrl) {
             mStream = new URL(mUrl).openStream();
         } else if (URLUtil.isFileUrl(mUrl)) {
             if (mIsZip) {
@@ -234,6 +241,25 @@
             throw new UnsupportedUrlException(
                     String.format(Locale.US, "Unsupported URL: %s", mUrl));
         }
+
+        // TODO(yochiang): Bypass this check if device is unlocked
+        try {
+            String listUrl = mContext.getString(R.string.key_revocation_list_url);
+            mKeyRevocationList = KeyRevocationList.fromUrl(new URL(listUrl));
+        } catch (IOException | JSONException e) {
+            Log.d(TAG, "Failed to fetch Dynamic System Key Revocation List");
+            mKeyRevocationList = new KeyRevocationList();
+            keyRevocationThrowOrWarning(e);
+        }
+    }
+
+    private void keyRevocationThrowOrWarning(Exception e) throws Exception {
+        if (mIsNetworkUrl) {
+            throw e;
+        } else {
+            // If DSU is being installed from a local file URI, then be permissive
+            Log.w(TAG, e.toString());
+        }
     }
 
     private void installUserdata() throws Exception {
diff --git a/packages/DynamicSystemInstallationService/src/com/android/dynsystem/KeyRevocationList.java b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/KeyRevocationList.java
new file mode 100644
index 0000000..522bc54
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/src/com/android/dynsystem/KeyRevocationList.java
@@ -0,0 +1,148 @@
+/*
+ * Copyright (C) 2019 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.dynsystem;
+
+import android.text.TextUtils;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import org.json.JSONArray;
+import org.json.JSONException;
+import org.json.JSONObject;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.net.URL;
+import java.net.URLConnection;
+import java.util.HashMap;
+
+class KeyRevocationList {
+
+    private static final String TAG = "KeyRevocationList";
+
+    private static final String JSON_ENTRIES = "entries";
+    private static final String JSON_PUBLIC_KEY = "public_key";
+    private static final String JSON_STATUS = "status";
+    private static final String JSON_REASON = "reason";
+
+    private static final String STATUS_REVOKED = "REVOKED";
+
+    @VisibleForTesting
+    HashMap<String, RevocationStatus> mEntries;
+
+    static class RevocationStatus {
+        final String mStatus;
+        final String mReason;
+
+        RevocationStatus(String status, String reason) {
+            mStatus = status;
+            mReason = reason;
+        }
+    }
+
+    KeyRevocationList() {
+        mEntries = new HashMap<String, RevocationStatus>();
+    }
+
+    /**
+     * Returns the revocation status of a public key.
+     *
+     * @return a RevocationStatus for |publicKey|, null if |publicKey| doesn't exist.
+     */
+    RevocationStatus getRevocationStatusForKey(String publicKey) {
+        return mEntries.get(publicKey);
+    }
+
+    /** Test if a public key is revoked or not. */
+    boolean isRevoked(String publicKey) {
+        RevocationStatus entry = getRevocationStatusForKey(publicKey);
+        return entry != null && TextUtils.equals(entry.mStatus, STATUS_REVOKED);
+    }
+
+    @VisibleForTesting
+    void addEntry(String publicKey, String status, String reason) {
+        mEntries.put(publicKey, new RevocationStatus(status, reason));
+    }
+
+    /**
+     * Creates a KeyRevocationList from a JSON String.
+     *
+     * @param jsonString the revocation list, for example:
+     *     <pre>{@code
+     *      {
+     *        "entries": [
+     *          {
+     *            "public_key": "00fa2c6637c399afa893fe83d85f3569998707d5",
+     *            "status": "REVOKED",
+     *            "reason": "Revocation Reason"
+     *          }
+     *        ]
+     *      }
+     *     }</pre>
+     *
+     * @throws JSONException if |jsonString| is malformed.
+     */
+    static KeyRevocationList fromJsonString(String jsonString) throws JSONException {
+        JSONObject jsonObject = new JSONObject(jsonString);
+        KeyRevocationList list = new KeyRevocationList();
+        Log.d(TAG, "Begin of revocation list");
+        if (jsonObject.has(JSON_ENTRIES)) {
+            JSONArray entries = jsonObject.getJSONArray(JSON_ENTRIES);
+            for (int i = 0; i < entries.length(); ++i) {
+                JSONObject entry = entries.getJSONObject(i);
+                String publicKey = entry.getString(JSON_PUBLIC_KEY);
+                String status = entry.getString(JSON_STATUS);
+                String reason = entry.has(JSON_REASON) ? entry.getString(JSON_REASON) : "";
+                list.addEntry(publicKey, status, reason);
+                Log.d(TAG, "Revocation entry: " + entry.toString());
+            }
+        }
+        Log.d(TAG, "End of revocation list");
+        return list;
+    }
+
+    /**
+     * Creates a KeyRevocationList from a URL.
+     *
+     * @throws IOException if |url| is inaccessible.
+     * @throws JSONException if fetched content is malformed.
+     */
+    static KeyRevocationList fromUrl(URL url) throws IOException, JSONException {
+        Log.d(TAG, "Fetch from URL: " + url.toString());
+        // Force "conditional GET"
+        // Force validate the cached result with server each time, and use the cached result
+        // only if it is validated by server, else fetch new data from server.
+        // Ref: https://developer.android.com/reference/android/net/http/HttpResponseCache#force-a-network-response
+        URLConnection connection = url.openConnection();
+        connection.setUseCaches(true);
+        connection.addRequestProperty("Cache-Control", "max-age=0");
+        try (InputStream stream = connection.getInputStream()) {
+            return fromJsonString(readFully(stream));
+        }
+    }
+
+    private static String readFully(InputStream in) throws IOException {
+        int n;
+        byte[] buffer = new byte[4096];
+        StringBuilder builder = new StringBuilder();
+        while ((n = in.read(buffer, 0, 4096)) > -1) {
+            builder.append(new String(buffer, 0, n));
+        }
+        return builder.toString();
+    }
+}
diff --git a/packages/DynamicSystemInstallationService/tests/Android.bp b/packages/DynamicSystemInstallationService/tests/Android.bp
new file mode 100644
index 0000000..3bdf829
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/tests/Android.bp
@@ -0,0 +1,15 @@
+android_test {
+    name: "DynamicSystemInstallationServiceTests",
+
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        "androidx.test.runner",
+        "androidx.test.rules",
+        "mockito-target-minus-junit4",
+    ],
+
+    resource_dirs: ["res"],
+    platform_apis: true,
+    instrumentation_for: "DynamicSystemInstallationService",
+    certificate: "platform",
+}
diff --git a/packages/DynamicSystemInstallationService/tests/AndroidManifest.xml b/packages/DynamicSystemInstallationService/tests/AndroidManifest.xml
new file mode 100644
index 0000000..f5f0ae6
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/tests/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  Copyright (C) 2019 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.dynsystem.tests">
+
+    <application>
+        <uses-library android:name="android.test.runner" />
+    </application>
+
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.android.dynsystem"
+        android:label="Tests for DynamicSystemInstallationService" />
+
+</manifest>
diff --git a/packages/DynamicSystemInstallationService/tests/res/values/strings.xml b/packages/DynamicSystemInstallationService/tests/res/values/strings.xml
new file mode 100644
index 0000000..fdb620b
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/tests/res/values/strings.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+    <!-- testFromJsonString -->
+    <string name="blacklist_json_string" translatable="false">
+      {
+        \"entries\":[
+          {
+            \"public_key\":\"00fa2c6637c399afa893fe83d85f3569998707d5\",
+            \"status\":\"REVOKED\",
+            \"reason\":\"Key revocation test key\"
+          },
+          {
+            \"public_key\":\"key2\",
+            \"status\":\"REVOKED\"
+          }
+        ]
+      }
+    </string>
+</resources>
diff --git a/packages/DynamicSystemInstallationService/tests/src/com/android/dynsystem/KeyRevocationListTest.java b/packages/DynamicSystemInstallationService/tests/src/com/android/dynsystem/KeyRevocationListTest.java
new file mode 100644
index 0000000..82ce542
--- /dev/null
+++ b/packages/DynamicSystemInstallationService/tests/src/com/android/dynsystem/KeyRevocationListTest.java
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2019 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.dynsystem;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+
+import android.content.Context;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.json.JSONException;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.net.URLConnection;
+import java.net.URLStreamHandler;
+
+/**
+ * A test for KeyRevocationList.java
+ */
+@RunWith(AndroidJUnit4.class)
+public class KeyRevocationListTest {
+
+    private static final String TAG = "KeyRevocationListTest";
+
+    private static Context sContext;
+
+    private static String sBlacklistJsonString;
+
+    @BeforeClass
+    public static void setUpClass() throws Exception {
+        sContext = InstrumentationRegistry.getInstrumentation().getContext();
+        sBlacklistJsonString =
+                sContext.getString(com.android.dynsystem.tests.R.string.blacklist_json_string);
+    }
+
+    @Test
+    @SmallTest
+    public void testFromJsonString() throws JSONException {
+        KeyRevocationList blacklist;
+        blacklist = KeyRevocationList.fromJsonString(sBlacklistJsonString);
+        Assert.assertNotNull(blacklist);
+        Assert.assertFalse(blacklist.mEntries.isEmpty());
+        blacklist = KeyRevocationList.fromJsonString("{}");
+        Assert.assertNotNull(blacklist);
+        Assert.assertTrue(blacklist.mEntries.isEmpty());
+    }
+
+    @Test
+    @SmallTest
+    public void testFromUrl() throws IOException, JSONException {
+        URLConnection mockConnection = mock(URLConnection.class);
+        doReturn(new ByteArrayInputStream(sBlacklistJsonString.getBytes()))
+                .when(mockConnection).getInputStream();
+        URL mockUrl = new URL(
+                "http",     // protocol
+                "foo.bar",  // host
+                80,         // port
+                "baz",      // file
+                new URLStreamHandler() {
+                    @Override
+                    protected URLConnection openConnection(URL url) {
+                        return mockConnection;
+                    }
+                });
+        URL mockBadUrl = new URL(
+                "http",     // protocol
+                "foo.bar",  // host
+                80,         // port
+                "baz",      // file
+                new URLStreamHandler() {
+                    @Override
+                    protected URLConnection openConnection(URL url) throws IOException {
+                        throw new IOException();
+                    }
+                });
+
+        KeyRevocationList blacklist = KeyRevocationList.fromUrl(mockUrl);
+        Assert.assertNotNull(blacklist);
+        Assert.assertFalse(blacklist.mEntries.isEmpty());
+
+        blacklist = null;
+        try {
+            blacklist = KeyRevocationList.fromUrl(mockBadUrl);
+            // Up should throw, down should be unreachable
+            Assert.fail("Expected IOException not thrown");
+        } catch (IOException e) {
+            // This is expected, do nothing
+        }
+        Assert.assertNull(blacklist);
+    }
+
+    @Test
+    @SmallTest
+    public void testIsRevoked() {
+        KeyRevocationList blacklist = new KeyRevocationList();
+        blacklist.addEntry("key1", "REVOKED", "reason for key1");
+
+        KeyRevocationList.RevocationStatus revocationStatus =
+                blacklist.getRevocationStatusForKey("key1");
+        Assert.assertNotNull(revocationStatus);
+        Assert.assertEquals(revocationStatus.mReason, "reason for key1");
+
+        revocationStatus = blacklist.getRevocationStatusForKey("key2");
+        Assert.assertNull(revocationStatus);
+
+        Assert.assertTrue(blacklist.isRevoked("key1"));
+        Assert.assertFalse(blacklist.isRevoked("key2"));
+    }
+}
diff --git a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
index ec445d4..617305c 100644
--- a/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
+++ b/packages/ExternalStorageProvider/src/com/android/externalstorage/ExternalStorageProvider.java
@@ -38,7 +38,6 @@
 import android.provider.DocumentsContract.Document;
 import android.provider.DocumentsContract.Path;
 import android.provider.DocumentsContract.Root;
-import android.provider.MediaStore;
 import android.provider.Settings;
 import android.system.ErrnoException;
 import android.system.Os;
@@ -100,7 +99,6 @@
 
     private static final String ROOT_ID_PRIMARY_EMULATED =
             DocumentsContract.EXTERNAL_STORAGE_PRIMARY_EMULATED_ROOT_ID;
-    private static final String ROOT_ID_HOME = "home";
 
     private static final String GET_DOCUMENT_URI_CALL = "get_document_uri";
     private static final String GET_MEDIA_URI_CALL = "get_media_uri";
@@ -156,7 +154,6 @@
     private void updateVolumesLocked() {
         mRoots.clear();
 
-        VolumeInfo primaryVolume = null;
         final int userId = UserHandle.myUserId();
         final List<VolumeInfo> volumes = mStorageManager.getVolumes();
         for (VolumeInfo volume : volumes) {
@@ -234,8 +231,6 @@
             }
 
             if (volume.isPrimary()) {
-                // save off the primary volume for subsequent "Home" dir initialization.
-                primaryVolume = volume;
                 root.flags |= Root.FLAG_ADVANCED;
             }
             // Dunno when this would NOT be the case, but never hurts to be correct.
@@ -259,37 +254,6 @@
             }
         }
 
-        // Finally, if primary storage is available we add the "Documents" directory.
-        // If I recall correctly the actual directory is created on demand
-        // by calling either getPathForUser, or getInternalPathForUser.
-        if (primaryVolume != null && primaryVolume.isVisible()) {
-            final RootInfo root = new RootInfo();
-            root.rootId = ROOT_ID_HOME;
-            mRoots.put(root.rootId, root);
-            root.title = getContext().getString(R.string.root_documents);
-
-            // Only report bytes on *volumes*...as a matter of policy.
-            root.reportAvailableBytes = false;
-            root.flags = Root.FLAG_LOCAL_ONLY | Root.FLAG_SUPPORTS_SEARCH
-                    | Root.FLAG_SUPPORTS_IS_CHILD;
-
-            // Dunno when this would NOT be the case, but never hurts to be correct.
-            if (primaryVolume.isMountedWritable()) {
-                root.flags |= Root.FLAG_SUPPORTS_CREATE;
-            }
-
-            // Create the "Documents" directory on disk (don't use the localized title).
-            root.visiblePath = new File(
-                    primaryVolume.getPathForUser(userId), Environment.DIRECTORY_DOCUMENTS);
-            root.path = new File(
-                    primaryVolume.getInternalPathForUser(userId), Environment.DIRECTORY_DOCUMENTS);
-            try {
-                root.docId = getDocIdForFile(root.path);
-            } catch (FileNotFoundException e) {
-                throw new IllegalStateException(e);
-            }
-        }
-
         Log.d(TAG, "After updating volumes, found " + mRoots.size() + " active roots");
 
         // Note this affects content://com.android.externalstorage.documents/root/39BD-07C5
@@ -318,6 +282,16 @@
                 return false;
             }
 
+            // Allow all directories on USB, including the root.
+            try {
+                RootInfo rootInfo = getRootFromDocId(docId);
+                if ((rootInfo.flags & Root.FLAG_REMOVABLE_USB) == Root.FLAG_REMOVABLE_USB) {
+                    return false;
+                }
+            } catch (FileNotFoundException e) {
+                Log.e(TAG, "Failed to determine rootInfo for docId");
+            }
+
             final String path = getPathFromDocId(docId);
 
             // Block the root of the storage
diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
index c9e0d0a..d4eb2a9 100644
--- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
+++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeApp.java
@@ -16,6 +16,9 @@
 
 package com.android.fakeoemfeatures;
 
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
 import android.app.ActivityManager;
 import android.app.ActivityThread;
 import android.app.AlertDialog;
@@ -25,9 +28,11 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.hardware.display.DisplayManager;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.util.Size;
 import android.util.Slog;
 import android.view.Display;
 import android.view.ViewGroup;
@@ -94,8 +99,13 @@
             return;
         }
 
-        final WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
-        final Display display = wm.getDefaultDisplay();
+        // Construct an instance of WindowManager to add the window of TYPE_APPLICATION_OVERLAY to
+        // the default display.
+        final DisplayManager dm = getSystemService(DisplayManager.class);
+        final Display defaultDisplay = dm.getDisplay(DEFAULT_DISPLAY);
+        final Context windowContext = createDisplayContext(defaultDisplay)
+                .createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */);
+        final WindowManager wm = windowContext.getSystemService(WindowManager.class);
 
         // Check to make sure we are not running on a user build.  If this
         // is a user build, WARN!  Do not want!
@@ -108,14 +118,14 @@
             builder.setCancelable(false);
             builder.setPositiveButton("I understand", null);
             Dialog dialog = builder.create();
-            dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
+            dialog.getWindow().setType(TYPE_APPLICATION_OVERLAY);
             dialog.show();
         }
 
         // Make a fake window that is always around eating graphics resources.
         FakeView view = new FakeView(this);
         WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
-                WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
+                TYPE_APPLICATION_OVERLAY,
                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                 | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                 | WindowManager.LayoutParams.FLAG_LAYOUT_NO_LIMITS);
@@ -124,7 +134,8 @@
         }
         lp.width = ViewGroup.LayoutParams.MATCH_PARENT;
         lp.height = ViewGroup.LayoutParams.MATCH_PARENT;
-        int maxSize = display.getMaximumSizeDimension();
+        Size maxWindowSize = wm.getMaximumWindowMetrics().getSize();
+        int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight());
         maxSize *= 2;
         lp.x = maxSize;
         lp.y = maxSize;
diff --git a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
index ff09000..df00eee 100644
--- a/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
+++ b/packages/FakeOemFeatures/src/com/android/fakeoemfeatures/FakeBackgroundService.java
@@ -16,6 +16,9 @@
 
 package com.android.fakeoemfeatures;
 
+import static android.view.Display.DEFAULT_DISPLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+
 import java.util.ArrayList;
 import java.util.Random;
 
@@ -23,9 +26,11 @@
 import android.app.Service;
 import android.content.Context;
 import android.content.Intent;
+import android.hardware.display.DisplayManager;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Message;
+import android.util.Size;
 import android.view.Display;
 import android.view.ViewGroup;
 import android.view.WindowManager;
@@ -68,13 +73,15 @@
         super.onCreate();
         mHandler.sendEmptyMessageDelayed(MSG_TICK, TICK_DELAY);
 
-        final WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
-        final Display display = wm.getDefaultDisplay();
+        final DisplayManager dm = getSystemService(DisplayManager.class);
+        final Display display = dm.getDisplay(DEFAULT_DISPLAY);
+        final Context windowContext = createDisplayContext(display)
+                .createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */);
 
         // Make a fake window that is always around eating graphics resources.
-        FakeView view = new FakeView(this);
-        Dialog dialog = new Dialog(this, android.R.style.Theme_Holo_Dialog);
-        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY);
+        FakeView view = new FakeView(windowContext);
+        Dialog dialog = new Dialog(windowContext, android.R.style.Theme_Holo_Dialog);
+        dialog.getWindow().setType(TYPE_APPLICATION_OVERLAY);
         dialog.getWindow().setFlags(
                 WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
                 | WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
@@ -89,7 +96,11 @@
         dialog.getWindow().setLayout(ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT);
         WindowManager.LayoutParams lp = dialog.getWindow().getAttributes();
-        int maxSize = display.getMaximumSizeDimension();
+        // Create an instance of WindowManager that is adjusted to the area of the display dedicated
+        // for windows with type TYPE_APPLICATION_OVERLAY.
+        final WindowManager wm = windowContext.getSystemService(WindowManager.class);
+        Size maxWindowSize = wm.getMaximumWindowMetrics().getSize();
+        int maxSize = Math.max(maxWindowSize.getWidth(), maxWindowSize.getHeight());
         maxSize *= 2;
         lp.x = maxSize;
         lp.y = maxSize;
diff --git a/packages/Incremental/NativeAdbDataLoader/AndroidManifest.xml b/packages/Incremental/NativeAdbDataLoader/AndroidManifest.xml
index a06dc54..c4d8f35 100644
--- a/packages/Incremental/NativeAdbDataLoader/AndroidManifest.xml
+++ b/packages/Incremental/NativeAdbDataLoader/AndroidManifest.xml
@@ -29,7 +29,7 @@
         <service android:enabled="true"
                  android:name="com.android.incremental.nativeadb.NativeAdbDataLoaderService"
                  android:label="@string/app_name"
-                 android:exported="true">
+                 android:exported="false">
             <intent-filter>
                 <action android:name="android.intent.action.LOAD_DATA" />
            </intent-filter>
diff --git a/packages/Incremental/NativeAdbDataLoader/jni/com_android_incremental_nativeadb_DataLoaderService.cpp b/packages/Incremental/NativeAdbDataLoader/jni/com_android_incremental_nativeadb_DataLoaderService.cpp
index 01150b7..c0cd527 100644
--- a/packages/Incremental/NativeAdbDataLoader/jni/com_android_incremental_nativeadb_DataLoaderService.cpp
+++ b/packages/Incremental/NativeAdbDataLoader/jni/com_android_incremental_nativeadb_DataLoaderService.cpp
@@ -63,8 +63,8 @@
 using CompressionType = int16_t;
 using RequestType = int16_t;
 
-static constexpr int COMMAND_SIZE = 2 + 2 + 4;     // bytes
-static constexpr int HEADER_SIZE = 2 + 2 + 4 + 2;  // bytes
+static constexpr int COMMAND_SIZE = 2 + 2 + 4;    // bytes
+static constexpr int HEADER_SIZE = 2 + 2 + 4 + 2; // bytes
 static constexpr std::string_view OKAY = "OKAY"sv;
 
 static constexpr auto PollTimeoutMs = 5000;
@@ -95,10 +95,9 @@
 
 static bool sendRequest(int fd, RequestType requestType, FileId fileId = -1,
                         BlockIdx blockIdx = -1) {
-    const RequestCommand command{
-            .requestType = static_cast<int16_t>(be16toh(requestType)),
-            .fileId = static_cast<int16_t>(be16toh(fileId)),
-            .blockIdx = static_cast<int32_t>(be32toh(blockIdx))};
+    const RequestCommand command{.requestType = static_cast<int16_t>(be16toh(requestType)),
+                                 .fileId = static_cast<int16_t>(be16toh(fileId)),
+                                 .blockIdx = static_cast<int32_t>(be32toh(blockIdx))};
     return android::base::WriteFully(fd, &command, sizeof(command));
 }
 
@@ -139,14 +138,11 @@
         return header;
     }
 
-    header.fileId = static_cast<FileId>(
-            be16toh(*reinterpret_cast<uint16_t*>(&data[0])));
-    header.compressionType = static_cast<CompressionType>(
-            be16toh(*reinterpret_cast<uint16_t*>(&data[2])));
-    header.blockIdx = static_cast<BlockIdx>(
-            be32toh(*reinterpret_cast<uint32_t*>(&data[4])));
-    header.blockSize = static_cast<BlockSize>(
-            be16toh(*reinterpret_cast<uint16_t*>(&data[8])));
+    header.fileId = static_cast<FileId>(be16toh(*reinterpret_cast<uint16_t*>(&data[0])));
+    header.compressionType =
+            static_cast<CompressionType>(be16toh(*reinterpret_cast<uint16_t*>(&data[2])));
+    header.blockIdx = static_cast<BlockIdx>(be32toh(*reinterpret_cast<uint32_t*>(&data[4])));
+    header.blockSize = static_cast<BlockSize>(be16toh(*reinterpret_cast<uint16_t*>(&data[8])));
     data = data.subspan(sizeof(header));
 
     return header;
@@ -162,8 +158,8 @@
     }
     const auto endPos = staticArgs.find(kSuffix, startPos + kPrefix.size());
     return staticArgs.substr(startPos + kPrefix.size(),
-                            endPos == staticArgs.npos ? staticArgs.npos
-                                                     : (endPos - (startPos + kPrefix.size())));
+                             endPos == staticArgs.npos ? staticArgs.npos
+                                                       : (endPos - (startPos + kPrefix.size())));
 }
 
 class AdbDataLoader : public android::dataloader::DataLoader {
@@ -176,7 +172,9 @@
                   android::dataloader::ServiceParamsPtr) final {
         CHECK(ifs) << "ifs can't be null";
         CHECK(statusListener) << "statusListener can't be null";
-        ALOGE("[AdbDataLoader] onCreate: %d/%s/%s/%s/%d", params.type(), params.packageName().c_str(), params.className().c_str(), params.arguments().c_str(), (int)params.dynamicArgs().size());
+        ALOGE("[AdbDataLoader] onCreate: %d/%s/%s/%s/%d", params.type(),
+              params.packageName().c_str(), params.className().c_str(), params.arguments().c_str(),
+              (int)params.dynamicArgs().size());
 
         if (params.dynamicArgs().empty()) {
             ALOGE("[AdbDataLoader] Invalid DataLoaderParams. Need in/out FDs.");
@@ -210,8 +208,7 @@
         }
         if (!logFile.empty()) {
             int flags = O_WRONLY | O_CREAT | O_CLOEXEC;
-            mReadLogFd.reset(
-                    TEMP_FAILURE_RETRY(open(logFile.c_str(), flags, 0666)));
+            mReadLogFd.reset(TEMP_FAILURE_RETRY(open(logFile.c_str(), flags, 0666)));
         }
 
         mIfs = ifs;
@@ -227,8 +224,8 @@
             return false;
         }
         if (std::string_view(okay_buf, OKAY.size()) != OKAY) {
-            ALOGE("[AdbDataLoader] Received '%.*s', expecting '%.*s'",
-                  (int)OKAY.size(), okay_buf, (int)OKAY.size(), OKAY.data());
+            ALOGE("[AdbDataLoader] Received '%.*s', expecting '%.*s'", (int)OKAY.size(), okay_buf,
+                  (int)OKAY.size(), OKAY.data());
             return false;
         }
 
@@ -261,6 +258,11 @@
         mReadLogFd.reset();
     }
 
+    // Installation callback
+    bool onPrepareImage(const android::dataloader::DataLoaderInstallationFiles& addedFiles) final {
+        return true;
+    }
+
     // IFS callbacks.
     void onPendingReads(const android::dataloader::PendingReads& pendingReads) final {
         std::lock_guard lock{mMapsMutex};
@@ -348,8 +350,8 @@
             auto remainingData = std::span(data);
             while (!remainingData.empty()) {
                 auto header = readHeader(remainingData);
-                if (header.fileId == -1 && header.compressionType == 0 &&
-                    header.blockIdx == 0 && header.blockSize == 0) {
+                if (header.fileId == -1 && header.compressionType == 0 && header.blockIdx == 0 &&
+                    header.blockSize == 0) {
                     ALOGI("[AdbDataLoader] stop signal received. Sending "
                           "exit command (remaining bytes: %d).",
                           int(remainingData.size()));
@@ -358,8 +360,8 @@
                     mStopReceiving = true;
                     break;
                 }
-                if (header.fileId < 0 || header.blockSize <= 0 ||
-                    header.compressionType < 0 || header.blockIdx < 0) {
+                if (header.fileId < 0 || header.blockSize <= 0 || header.compressionType < 0 ||
+                    header.blockIdx < 0) {
                     ALOGE("[AdbDataLoader] invalid header received. Abort.");
                     mStopReceiving = true;
                     break;
@@ -374,7 +376,7 @@
 
                 auto& writeFd = writeFds[id];
                 if (writeFd < 0) {
-                    writeFd.reset(this->mIfs->openWrite(id));
+                    writeFd = this->mIfs->openWrite(id);
                     if (writeFd < 0) {
                         ALOGE("Failed to open file %d for writing (%d). Aboring.", header.fileId,
                               -writeFd);
@@ -417,8 +419,7 @@
     MetaPair* updateMapsForFile(android::dataloader::FileId id) {
         android::dataloader::RawMetadata meta = mIfs->getRawMetadata(id);
         FileId fileId;
-        auto res =
-                std::from_chars(meta.data(), meta.data() + meta.size(), fileId);
+        auto res = std::from_chars(meta.data(), meta.data() + meta.size(), fileId);
         if (res.ec != std::errc{} || fileId < 0) {
             ALOGE("[AdbDataLoader] Invalid metadata for fileid=%s (%s)",
                   android::incfs::toString(id).c_str(), meta.data());
@@ -465,11 +466,11 @@
         }
         if (trace) {
             auto* meta = getMeta(read.fileId);
-            auto str = android::base::StringPrintf(
-                    "page_read: index=%lld count=%lld meta=%.*s",
-                    static_cast<long long>(read.firstBlockIdx),
-                    static_cast<long long>(read.count),
-                    meta ? int(meta->size()) : 0, meta ? meta->data() : "");
+            auto str = android::base::StringPrintf("page_read: index=%lld count=%lld meta=%.*s",
+                                                   static_cast<long long>(read.firstBlockIdx),
+                                                   static_cast<long long>(read.count),
+                                                   meta ? int(meta->size()) : 0,
+                                                   meta ? meta->data() : "");
             ATRACE_BEGIN(str.c_str());
             ATRACE_END();
         }
@@ -477,12 +478,11 @@
             mReadLog.reserve(ReadLogBufferSize);
 
             auto fileId = getFileId(read.fileId);
-            android::base::StringAppendF(
-                    &mReadLog, "%lld:%lld:%lld:%lld\n",
-                    static_cast<long long>(read.timestampUs),
-                    static_cast<long long>(fileId ? *fileId : -1),
-                    static_cast<long long>(read.firstBlockIdx),
-                    static_cast<long long>(read.count));
+            android::base::StringAppendF(&mReadLog, "%lld:%lld:%lld:%lld\n",
+                                         static_cast<long long>(read.timestampUs),
+                                         static_cast<long long>(fileId ? *fileId : -1),
+                                         static_cast<long long>(read.firstBlockIdx),
+                                         static_cast<long long>(read.count));
 
             if (mReadLog.size() >= mReadLog.capacity() - ReadLogMaxEntrySize) {
                 flushReadLog();
@@ -516,10 +516,10 @@
     std::atomic<bool> mStopReceiving = false;
 };
 
-}  // namespace
+} // namespace
 
 int JNI_OnLoad(JavaVM* jvm, void* /* reserved */) {
-  android::dataloader::DataLoader::initialize(
-            [](auto) { return std::make_unique<AdbDataLoader>(); });
+    android::dataloader::DataLoader::initialize(
+            [](auto, auto) { return std::make_unique<AdbDataLoader>(); });
     return JNI_VERSION_1_6;
 }
diff --git a/packages/Incremental/NativeAdbDataLoader/src/com/android/incremental/nativeadb/NativeAdbDataLoaderService.java b/packages/Incremental/NativeAdbDataLoader/src/com/android/incremental/nativeadb/NativeAdbDataLoaderService.java
index bd5b7959..c4e41c8 100644
--- a/packages/Incremental/NativeAdbDataLoader/src/com/android/incremental/nativeadb/NativeAdbDataLoaderService.java
+++ b/packages/Incremental/NativeAdbDataLoader/src/com/android/incremental/nativeadb/NativeAdbDataLoaderService.java
@@ -16,6 +16,8 @@
 
 package com.android.incremental.nativeadb;
 
+import android.annotation.NonNull;
+import android.content.pm.DataLoaderParams;
 import android.service.dataloader.DataLoaderService;
 
 /** This code is used for testing only. */
@@ -26,7 +28,7 @@
     }
 
     @Override
-    public DataLoader onCreateDataLoader() {
+    public DataLoader onCreateDataLoader(@NonNull DataLoaderParams dataLoaderParams) {
         return null;
     }
 }
diff --git a/packages/PackageInstaller/AndroidManifest.xml b/packages/PackageInstaller/AndroidManifest.xml
index 7d07fda..f3b922e 100644
--- a/packages/PackageInstaller/AndroidManifest.xml
+++ b/packages/PackageInstaller/AndroidManifest.xml
@@ -16,6 +16,7 @@
     <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
     <uses-permission android:name="android.permission.SUBSTITUTE_NOTIFICATION_APP_NAME" />
     <uses-permission android:name="android.permission.PACKAGE_USAGE_STATS" />
+    <uses-permission android:name="android.permission.QUERY_ALL_PACKAGES" />
 
     <uses-permission android:name="com.google.android.permission.INSTALL_WEARABLE_PACKAGES" />
 
diff --git a/packages/PrintSpooler/res/values-ja/donottranslate.xml b/packages/PrintSpooler/res/values-ja/donottranslate.xml
index d334ddd..6a0f768 100644
--- a/packages/PrintSpooler/res/values-ja/donottranslate.xml
+++ b/packages/PrintSpooler/res/values-ja/donottranslate.xml
@@ -16,7 +16,7 @@
 
 <resources>
 
-    <string name="mediasize_default">JIS_B5</string>
+    <string name="mediasize_default">ISO_A4</string>
     <string name="mediasize_standard">@string/mediasize_standard_japan</string>
 
 </resources>
diff --git a/packages/SettingsLib/Android.bp b/packages/SettingsLib/Android.bp
index 9c8345da..6212493 100644
--- a/packages/SettingsLib/Android.bp
+++ b/packages/SettingsLib/Android.bp
@@ -10,6 +10,7 @@
         "androidx.appcompat_appcompat",
         "androidx.lifecycle_lifecycle-runtime",
         "androidx.mediarouter_mediarouter-nodeps",
+        "iconloader",
 
         "SettingsLibHelpUtils",
         "SettingsLibRestrictedLockUtils",
diff --git a/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_blue.xml b/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_blue.xml
new file mode 100644
index 0000000..04de174
--- /dev/null
+++ b/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_blue.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M6.99,11L3,15l3.99,4v-3H14v-2H6.99v-3zM21,9l-3.99,-4v3H10v2h7.01v3L21,9z"
+      android:fillColor="#4285F4"/>
+</vector>
diff --git a/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_grey.xml b/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_grey.xml
new file mode 100644
index 0000000..b4145f2
--- /dev/null
+++ b/packages/SettingsLib/LayoutPreference/res/drawable/ic_swap_horiz_grey.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ 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.
+  -->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:pathData="M6.99,11L3,15l3.99,4v-3H14v-2H6.99v-3zM21,9l-3.99,-4v3H10v2h7.01v3L21,9z"
+      android:fillColor="#757575"/>
+</vector>
diff --git a/packages/SettingsLib/LayoutPreference/res/layout/cross_profiles_settings_entity_header.xml b/packages/SettingsLib/LayoutPreference/res/layout/cross_profiles_settings_entity_header.xml
new file mode 100644
index 0000000..e6f8c01
--- /dev/null
+++ b/packages/SettingsLib/LayoutPreference/res/layout/cross_profiles_settings_entity_header.xml
@@ -0,0 +1,92 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+
+<RelativeLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/entity_header"
+    style="@style/EntityHeader"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+    android:orientation="horizontal">
+
+    <LinearLayout
+        android:id="@+id/entity_header_content"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_centerHorizontal="true"
+        android:gravity="center_horizontal"
+        android:orientation="horizontal">
+
+        <LinearLayout
+            android:id="@+id/entity_header_content"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:gravity="center_horizontal"
+            android:orientation="vertical">
+
+            <ImageView
+                android:id="@+id/entity_header_icon_personal"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:scaleType="fitCenter"
+                android:antialias="true"/>
+
+            <TextView
+                android:id="@+id/install_type"
+                style="@style/TextAppearance.EntityHeaderSummary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:text="Personal"/>
+        </LinearLayout>
+
+        <ImageView
+            android:id="@+id/entity_header_swap_horiz"
+            android:layout_width="24dp"
+            android:layout_height="24dp"
+            android:scaleType="fitCenter"
+            android:antialias="true"
+            android:src="@drawable/ic_swap_horiz_grey"/>
+
+        <LinearLayout
+            android:id="@+id/entity_header_content"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:layout_centerHorizontal="true"
+            android:gravity="center_horizontal"
+            android:orientation="vertical">
+
+            <ImageView
+                android:id="@+id/entity_header_icon_work"
+                android:layout_width="48dp"
+                android:layout_height="48dp"
+                android:scaleType="fitCenter"
+                android:antialias="true"/>
+            <TextView
+                android:id="@+id/install_type"
+                style="@style/TextAppearance.EntityHeaderSummary"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:layout_marginTop="2dp"
+                android:text="Work"/>
+        </LinearLayout>
+    </LinearLayout>
+
+</RelativeLayout>
diff --git a/packages/SettingsLib/res/values-af/strings.xml b/packages/SettingsLib/res/values-af/strings.xml
index 2b143e4..1a015a6 100644
--- a/packages/SettingsLib/res/values-af/strings.xml
+++ b/packages/SettingsLib/res/values-af/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Gekoppel via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Beskikbaar via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tik om aan te meld"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Gekoppel, geen internet nie"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Geen internet nie"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Daar kan nie by private DNS-bediener ingegaan word nie"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Beperkte verbinding"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Geen internet nie"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rooi-groen)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (blou-geel)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Kleurregstelling"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Kleurregstelling help mense met kleurblindheid om akkurater kleure te sien"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Geneutraliseer deur <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ongeveer <xliff:g id="TIME_REMAINING">%1$s</xliff:g> oor"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> tot battery gelaai is"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Onbekend"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Laai"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"laai tans"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Laai nie"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ingeprop; kan nie op die oomblik laai nie"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Vol"</string>
diff --git a/packages/SettingsLib/res/values-am/strings.xml b/packages/SettingsLib/res/values-am/strings.xml
index 2a93e017..05f0e1b 100644
--- a/packages/SettingsLib/res/values-am/strings.xml
+++ b/packages/SettingsLib/res/values-am/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"በ <xliff:g id="NAME">%1$s</xliff:g> በኩል ተገናኝተዋል"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"በ%1$s በኩል የሚገኝ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ለመመዝገብ መታ ያድርጉ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ተገናኝቷል፣ ምንም በይነመረብ የለም"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ምንም በይነመረብ የለም"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"የግል ዲኤንኤስ አገልጋይ ሊደረስበት አይችልም"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"የተገደበ ግንኙነት"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ምንም በይነመረብ የለም"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ፕሮታኖማሊ (ቀይ-አረንጓዴ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ትራይታኖማሊ (ሰማያዊ-ቢጫ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"የቀለም ማስተካከያ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ቀለም ማስተካከያ የቀለም ማየት የማይችሉ ሰዎች ተጨማሪ ትክክለኛ ቀለማትን እንዲመለከቱ ያስችላቸዋል"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"በ<xliff:g id="TITLE">%1$s</xliff:g> ተሽሯል"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ገደማ ቀርቷል"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ኃይል እስከሚሞላ ድረስ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ያልታወቀ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ኃይል በመሙላት ላይ"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ኃይል በመሙላት ላይ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ባትሪ እየሞላ አይደለም"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ተሰክቷል፣ አሁን ኃይል መሙላት አይቻልም"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ሙሉነው"</string>
diff --git a/packages/SettingsLib/res/values-ar/arrays.xml b/packages/SettingsLib/res/values-ar/arrays.xml
index 851a3d8..d65d821 100644
--- a/packages/SettingsLib/res/values-ar/arrays.xml
+++ b/packages/SettingsLib/res/values-ar/arrays.xml
@@ -252,7 +252,7 @@
     <item msgid="3474333938380896988">"عرض مناطق العجز في رؤية اللونين الأخضر والأحمر"</item>
   </string-array>
   <string-array name="app_process_limit_entries">
-    <item msgid="794656271086646068">"الحد القياسي"</item>
+    <item msgid="794656271086646068">"الحدّ العادي"</item>
     <item msgid="8628438298170567201">"ليست هناك عمليات بالخلفية"</item>
     <item msgid="915752993383950932">"عملية واحدة بحد أقصى"</item>
     <item msgid="8554877790859095133">"عمليتان بحد أقصى"</item>
diff --git a/packages/SettingsLib/res/values-ar/strings.xml b/packages/SettingsLib/res/values-ar/strings.xml
index 5485656..07befeb 100644
--- a/packages/SettingsLib/res/values-ar/strings.xml
+++ b/packages/SettingsLib/res/values-ar/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"تم الاتصال عبر <xliff:g id="NAME">%1$s</xliff:g>."</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"‏متوفرة عبر %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"انقر للاشتراك."</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"متصلة ولكن بلا إنترنت"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"لا يتوفر اتصال إنترنت."</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"لا يمكن الوصول إلى خادم أسماء نظام نطاقات خاص"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"اتصال محدود"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"لا يتوفر اتصال إنترنت."</string>
@@ -124,7 +124,7 @@
     <string name="bluetooth_talkback_headset" msgid="3406852564400882682">"سماعة رأس"</string>
     <string name="bluetooth_talkback_phone" msgid="868393783858123880">"هاتف"</string>
     <string name="bluetooth_talkback_imaging" msgid="8781682986822514331">"تصوير"</string>
-    <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"سماعة أذن"</string>
+    <string name="bluetooth_talkback_headphone" msgid="8613073829180337091">"السمّاعة"</string>
     <string name="bluetooth_talkback_input_peripheral" msgid="5133944817800149942">"جهاز إدخال طرفي"</string>
     <string name="bluetooth_talkback_bluetooth" msgid="1143241359781999989">"بلوتوث"</string>
     <string name="bluetooth_hearingaid_left_pairing_message" msgid="8561855779703533591">"جارٍ إقران سماعة الأذن الطبية اليسرى…"</string>
@@ -157,7 +157,7 @@
     <string name="tts_settings" msgid="8130616705989351312">"إعدادات تحويل النص إلى كلام"</string>
     <string name="tts_settings_title" msgid="7602210956640483039">"تحويل النص إلى كلام"</string>
     <string name="tts_default_rate_title" msgid="3964187817364304022">"معدل سرعة الكلام"</string>
-    <string name="tts_default_rate_summary" msgid="3781937042151716987">"سرعة نطق الكلام"</string>
+    <string name="tts_default_rate_summary" msgid="3781937042151716987">"سرعة قول الكلام"</string>
     <string name="tts_default_pitch_title" msgid="6988592215554485479">"درجة الصوت"</string>
     <string name="tts_default_pitch_summary" msgid="9132719475281551884">"للتأثير في نبرة الكلام المُرَكَّب"</string>
     <string name="tts_default_lang_title" msgid="4698933575028098940">"اللغة"</string>
@@ -181,7 +181,7 @@
     <string name="tts_engine_preference_section_title" msgid="3861562305498624904">"المحرّك المفضّل"</string>
     <string name="tts_general_section_title" msgid="8919671529502364567">"عامة"</string>
     <string name="tts_reset_speech_pitch_title" msgid="7149398585468413246">"إعادة ضبط طبقة صوت الكلام"</string>
-    <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"إعادة ضبط طبقة الصوت التي يتم نطق النص بها على الإعداد التلقائي."</string>
+    <string name="tts_reset_speech_pitch_summary" msgid="6822904157021406449">"إعادة ضبط طبقة الصوت التي يتم قول النص بها على الإعداد التلقائي."</string>
   <string-array name="tts_rate_entries">
     <item msgid="9004239613505400644">"بطيء جدًا"</item>
     <item msgid="1815382991399815061">"بطيء"</item>
@@ -353,7 +353,7 @@
   <string-array name="color_mode_names">
     <item msgid="3836559907767149216">"نابض بالحياة (تلقائي)"</item>
     <item msgid="9112200311983078311">"طبيعي"</item>
-    <item msgid="6564241960833766170">"قياسي"</item>
+    <item msgid="6564241960833766170">"عادي"</item>
   </string-array>
   <string-array name="color_mode_descriptions">
     <item msgid="6828141153199944847">"ألوان محسَّنة"</item>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"غطش الأحمر (الأحمر والأخضر)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"غمش الأزرق (الأزرق والأصفر)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"تصحيح الألوان"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"تساعد ميزة تصحيح الألوان المصابين بعمى الألوان على رؤية الألوان بدقة أكبر"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"تم الاستبدال بـ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"يتبقى <xliff:g id="TIME_REMAINING">%1$s</xliff:g> تقريبًا"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> إلى أن يتم شحن الجهاز بالكامل"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"غير معروف"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"جارٍ الشحن"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"جارٍ الشحن"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"لا يتم الشحن"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"تم التوصيل، ولكن يتعذّر الشحن الآن"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ممتلئة"</string>
diff --git a/packages/SettingsLib/res/values-as/strings.xml b/packages/SettingsLib/res/values-as/strings.xml
index fa26b9b..4d0d8cc 100644
--- a/packages/SettingsLib/res/values-as/strings.xml
+++ b/packages/SettingsLib/res/values-as/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g>ৰ জৰিয়তে সংযুক্ত"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$sৰ মাধ্যমেৰে উপলব্ধ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ছাইন আপ কৰিবলৈ টিপক"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"সংযোজিত, ইণ্টাৰনেট নাই"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ইণ্টাৰনেট সংযোগ নাই"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ব্যক্তিগত DNS ছাৰ্ভাৰ এক্সেছ কৰিব নোৱাৰি"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ইণ্টাৰনেট সংযোগ সীমিত"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ইণ্টাৰনেট সংযোগ নাই"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"প্ৰ’টানোমালি (ৰঙা-সেউজীয়া)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ট্ৰাইটান\'মেলী (নীলা-হালধীয়া)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ৰং শুধৰণী"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ৰং শুধৰণী কৰা কার্যই বর্ণান্ধলোকসকলক ৰংবোৰ অধিক সঠিককৈ দেখাত সহায় কৰে"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g>ৰ দ্বাৰা অগ্ৰাহ্য কৰা হৈছে"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"প্রায় <xliff:g id="TIME_REMAINING">%1$s</xliff:g> বাকী আছে"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> চাৰ্জ হ\'বলৈ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"অজ্ঞাত"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"চাৰ্জ কৰি থকা হৈছে"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"চ্চাৰ্জ হৈ আছে"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"চ্চাৰ্জ কৰা নাই"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"প্লাগ কৰি থোৱা হৈছে, এই মুহূৰ্তত চ্চাৰ্জ কৰিব নোৱাৰি"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"পূৰ্ণ"</string>
diff --git a/packages/SettingsLib/res/values-az/strings.xml b/packages/SettingsLib/res/values-az/strings.xml
index 2e80fdc..73eb48a 100644
--- a/packages/SettingsLib/res/values-az/strings.xml
+++ b/packages/SettingsLib/res/values-az/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ilə qoşulub"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s vasitəsilə əlçatandır"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Qeydiyyatdan keçmək üçün klikləyin"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Qoşuludur, internet yoxdur"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"İnternet yoxdur"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Özəl DNS serverinə giriş mümkün deyil"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Məhdud bağlantı"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"İnternet yoxdur"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaliya (qırmızı-yaşıl)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaliya (göy-sarı)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Rəng düzəlişi"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Rəng düzəlişi rəng korluğu olanların daha yaxşı görməsinə kömək edir"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> tərəfindən qəbul edilmir"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Təxminən <xliff:g id="TIME_REMAINING">%1$s</xliff:g> qalıb"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - Enerjinin dolmasına <xliff:g id="TIME">%2$s</xliff:g> qalıb"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Naməlum"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Enerji doldurma"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"enerji yığır"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Doldurulmur"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Cihaz hazırda batareya yığa bilmir"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Tam"</string>
diff --git a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
index ae5c936..dff657e 100644
--- a/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
+++ b/packages/SettingsLib/res/values-b+sr+Latn/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Povezano preko: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dostupna je preko pristupne tačke %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Dodirnite da biste se registrovali"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Veza je uspostavljena, nema interneta"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nema interneta"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Pristup privatnom DNS serveru nije uspeo"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ograničena veza"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nema interneta"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boja"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korekcija boja pomaže ljudima koji su daltonisti da preciznije vide boje"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamenjuje ga <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – napuniće se za <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Puni se"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"puni se"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključeno je, ali punjenje trenutno nije moguće"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Puna"</string>
diff --git a/packages/SettingsLib/res/values-be/strings.xml b/packages/SettingsLib/res/values-be/strings.xml
index ad201d0..12c21a6 100644
--- a/packages/SettingsLib/res/values-be/strings.xml
+++ b/packages/SettingsLib/res/values-be/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Падключана праз праграму \"<xliff:g id="NAME">%1$s</xliff:g>\""</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Даступна праз %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Націсніце, каб зарэгістравацца"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Падключана, без доступу да інтэрнэту"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Не падключана да інтэрнэту"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Не ўдалося атрымаць доступ да прыватнага DNS-сервера"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Абмежаваныя магчымасці падключэння"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Не падключана да інтэрнэту"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Пратанамалія (чырвоны-зялёны)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Трытанамалія (сіні-жоўты)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Карэкцыя колеру"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Карэкцыя колеру дазваляе людзям з парушэннямі колеравага зроку лепш распазнаваць выявы на экране"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Перавызначаны <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Зараду хопіць прыблізна на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> да поўнай зарадкі"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Невядома"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарадка"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ідзе зарадка"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не зараджаецца"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Падключана да сеткі сілкавання, зарадзіць зараз немагчыма"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Акумулятар зараджаны"</string>
diff --git a/packages/SettingsLib/res/values-bg/strings.xml b/packages/SettingsLib/res/values-bg/strings.xml
index 94f78ad..6fda5b3 100644
--- a/packages/SettingsLib/res/values-bg/strings.xml
+++ b/packages/SettingsLib/res/values-bg/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Установена е връзка през <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Мрежата е достъпна през „%1$s“"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Докоснете, за да се регистрирате"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Установена е връзка – няма достъп до интернет"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Няма интернет"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Не може да се осъществи достъп до частния DNS сървър"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ограничена връзка"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Няма връзка с интернет"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (червено – зелено)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (синьо – жълто)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекция на цветове"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Коригирането на цветовете помага на хората с цветна слепота да виждат по-точни цветове"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Заменено от „<xliff:g id="TITLE">%1$s</xliff:g>“"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Още около <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до пълно зареждане"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Неизвестно"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарежда се"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"зарежда се"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не се зарежда"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Включена в захранването, в момента не се зарежда"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Пълна"</string>
diff --git a/packages/SettingsLib/res/values-bn/strings.xml b/packages/SettingsLib/res/values-bn/strings.xml
index 51719160..be2d1e0 100644
--- a/packages/SettingsLib/res/values-bn/strings.xml
+++ b/packages/SettingsLib/res/values-bn/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g>-এর মাধ্যমে কানেক্ট করা আছে"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s এর মাধ্যমে উপলব্ধ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"সাইন-আপ করতে ট্যাপ করুন"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"কানেক্ট, ইন্টারনেট নেই"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ইন্টারনেট কানেকশন নেই"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ব্যক্তিগত ডিএনএস সার্ভার অ্যাক্সেস করা যাবে না"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"সীমিত কানেকশন"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ইন্টারনেট কানেকশন নেই"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"প্রোটানোম্যালি (লাল-সবুজ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ট্রিট্যানোম্যালি (নীল-হলুদ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"রঙ সংশোধন"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"রঙ অ্যাডজাস্ট করার সেটিংস, বর্ণান্ধতা আছে এমন ব্যক্তিদের আরও সঠিকভাবে রঙ চিনতে সাহায্য করে"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> এর দ্বারা ওভাররাইড করা হয়েছে"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"আর আনুমানিক <xliff:g id="TIME_REMAINING">%1$s</xliff:g> চলবে"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>-এ সম্পূর্ণ চার্জ হয়ে যাবে"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"অজানা"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"চার্জ হচ্ছে"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"চার্জ হচ্ছে"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"চার্জ হচ্ছে না"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"প্লাগ-ইন করা হয়েছে কিন্তু এখনই চার্জ করা যাবে না"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"পূর্ণ"</string>
diff --git a/packages/SettingsLib/res/values-bs/strings.xml b/packages/SettingsLib/res/values-bs/strings.xml
index f74bcee..c32df18 100644
--- a/packages/SettingsLib/res/values-bs/strings.xml
+++ b/packages/SettingsLib/res/values-bs/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Povezano preko <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dostupan preko %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Dodirnite za prijavu"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Povezano, nema interneta"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nema internetske veze"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Nije moguće pristupiti privatnom DNS serveru"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ograničena veza"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nema internetske veze"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno-zeleno)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo-žuto)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ispravka boje"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Ispravka boje pomaže daltonistima da preciznije vide boje"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Zamjenjuje <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Preostalo je još oko <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – napunit će se za <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Punjenje"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"punjenje"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključen, trenutno se ne može puniti"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Puna"</string>
diff --git a/packages/SettingsLib/res/values-ca/strings.xml b/packages/SettingsLib/res/values-ca/strings.xml
index 1b23ecf..813fff4 100644
--- a/packages/SettingsLib/res/values-ca/strings.xml
+++ b/packages/SettingsLib/res/values-ca/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connectat mitjançant <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponible mitjançant %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toca per registrar-te"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connectada, sense Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sense connexió a Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"No es pot accedir al servidor DNS privat"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Connexió limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sense connexió a Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermell-verd)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (blau-groc)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correcció del color"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La correcció del color ajuda les persones daltòniques a veure colors més precisos"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"S\'ha substituït per <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>: <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Temps restant aproximat: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> per completar la càrrega"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconegut"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"S\'està carregant"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"s\'està carregant"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"No s\'està carregant"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"El dispositiu està endollat però en aquests moments no es pot carregar"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Completa"</string>
diff --git a/packages/SettingsLib/res/values-cs/strings.xml b/packages/SettingsLib/res/values-cs/strings.xml
index 22603cc..f116733 100644
--- a/packages/SettingsLib/res/values-cs/strings.xml
+++ b/packages/SettingsLib/res/values-cs/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Připojeno přes <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dostupné prostřednictvím %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Klepnutím se zaregistrujete"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Připojeno, není k dispozici internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nejste připojeni k internetu"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Nelze získat přístup k soukromému serveru DNS"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Omezené připojení"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nejste připojeni k internetu"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomálie (červená a zelená)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomálie (modrá a žlutá)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekce barev"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korekce barev pomáhá barvoslepým lidem vidět přesnější barvy"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Přepsáno nastavením <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zbývá asi <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do nabití"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznámé"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Nabíjí se"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"nabíjení"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenabíjí se"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Zapojeno, ale nelze nabíjet"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Nabitá"</string>
diff --git a/packages/SettingsLib/res/values-da/strings.xml b/packages/SettingsLib/res/values-da/strings.xml
index bef1855..e3b96a4 100644
--- a/packages/SettingsLib/res/values-da/strings.xml
+++ b/packages/SettingsLib/res/values-da/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Forbundet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Tilgængelig via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tryk for at registrere dig"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Tilsluttet – intet internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Intet internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Der er ikke adgang til den private DNS-server"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Begrænset forbindelse"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Intet internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopi (rød-grøn)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopi (blå-gul)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korriger farver"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Farvekorrigering gør det nemmere for farveblinde at se farver mere nøjagtigt"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Tilsidesat af <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ca. <xliff:g id="TIME_REMAINING">%1$s</xliff:g> tilbage"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – opladet om <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Ukendt"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Oplader"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"oplader"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Oplader ikke"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Enheden er tilsluttet en strømkilde. Det er ikke muligt at oplade på nuværende tidspunkt."</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Fuldt"</string>
diff --git a/packages/SettingsLib/res/values-de/strings.xml b/packages/SettingsLib/res/values-de/strings.xml
index c8c97bd..1ddabcab 100644
--- a/packages/SettingsLib/res/values-de/strings.xml
+++ b/packages/SettingsLib/res/values-de/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Verbunden über <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Verfügbar über %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Zum Anmelden tippen"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Verbunden, kein Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Kein Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Auf den privaten DNS-Server kann nicht zugegriffen werden"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Eingeschränkte Verbindung"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Kein Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (Rot-Grün-Sehschwäche)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (Blau-Gelb-Sehschwäche)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Farbkorrektur"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Die Farbkorrektur hilft farbenblinden Menschen, Farben besser zu erkennen"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Außer Kraft gesetzt von \"<xliff:g id="TITLE">%1$s</xliff:g>\""</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Noch etwa <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> bis zur Aufladung"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Unbekannt"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Wird aufgeladen"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"wird aufgeladen..."</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Wird nicht geladen"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Angeschlossen, kann derzeit nicht geladen werden"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Voll"</string>
diff --git a/packages/SettingsLib/res/values-el/strings.xml b/packages/SettingsLib/res/values-el/strings.xml
index 371075c..3a97d5a 100644
--- a/packages/SettingsLib/res/values-el/strings.xml
+++ b/packages/SettingsLib/res/values-el/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Συνδέθηκε μέσω <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Διαθέσιμο μέσω %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Πατήστε για εγγραφή"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Συνδέθηκε, χωρίς σύνδεση στο διαδίκτυο"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Χωρίς σύνδεση στο διαδίκτυο"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Δεν είναι δυνατή η πρόσβαση στον ιδιωτικό διακομιστή DNS."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Περιορισμένη σύνδεση"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Δεν υπάρχει σύνδεση στο διαδίκτυο"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Πρωτανοπία (κόκκινο-πράσινο)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Τριτανοπία (μπλε-κίτρινο)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Διόρθωση χρωμάτων"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Η διόρθωση χρωμάτων βοηθάει τους ανθρώπους με αχρωματοψία να βλέπουν τα χρώματα με μεγαλύτερη ακρίβεια"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Αντικαταστάθηκε από <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Απομένει/ουν περίπου <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> για την ολοκλήρωση της φόρτισης"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Άγνωστο"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Φόρτιση"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"φόρτιση"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Δεν φορτίζει"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Συνδέθηκε, δεν είναι δυνατή η φόρτιση αυτήν τη στιγμή"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Πλήρης"</string>
diff --git a/packages/SettingsLib/res/values-en-rAU/strings.xml b/packages/SettingsLib/res/values-en-rAU/strings.xml
index b314d17..ec0a129 100644
--- a/packages/SettingsLib/res/values-en-rAU/strings.xml
+++ b/packages/SettingsLib/res/values-en-rAU/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Available via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tap to sign up"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connected, no Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"No Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Private DNS server cannot be accessed"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Limited connection"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"No Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (red-green)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (blue-yellow)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Colour correction"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Colour correction helps people with colour blindness to see more accurate colours"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"About <xliff:g id="TIME_REMAINING">%1$s</xliff:g> left"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> until charged"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"charging"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Full"</string>
diff --git a/packages/SettingsLib/res/values-en-rCA/strings.xml b/packages/SettingsLib/res/values-en-rCA/strings.xml
index b314d17..ec0a129 100644
--- a/packages/SettingsLib/res/values-en-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-en-rCA/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Available via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tap to sign up"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connected, no Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"No Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Private DNS server cannot be accessed"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Limited connection"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"No Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (red-green)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (blue-yellow)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Colour correction"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Colour correction helps people with colour blindness to see more accurate colours"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"About <xliff:g id="TIME_REMAINING">%1$s</xliff:g> left"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> until charged"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"charging"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Full"</string>
diff --git a/packages/SettingsLib/res/values-en-rGB/strings.xml b/packages/SettingsLib/res/values-en-rGB/strings.xml
index b314d17..ec0a129 100644
--- a/packages/SettingsLib/res/values-en-rGB/strings.xml
+++ b/packages/SettingsLib/res/values-en-rGB/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Available via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tap to sign up"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connected, no Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"No Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Private DNS server cannot be accessed"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Limited connection"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"No Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (red-green)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (blue-yellow)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Colour correction"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Colour correction helps people with colour blindness to see more accurate colours"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"About <xliff:g id="TIME_REMAINING">%1$s</xliff:g> left"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> until charged"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"charging"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Full"</string>
diff --git a/packages/SettingsLib/res/values-en-rIN/strings.xml b/packages/SettingsLib/res/values-en-rIN/strings.xml
index b314d17..ec0a129 100644
--- a/packages/SettingsLib/res/values-en-rIN/strings.xml
+++ b/packages/SettingsLib/res/values-en-rIN/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connected via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Available via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tap to sign up"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connected, no Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"No Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Private DNS server cannot be accessed"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Limited connection"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"No Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (red-green)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (blue-yellow)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Colour correction"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Colour correction helps people with colour blindness to see more accurate colours"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overridden by <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"About <xliff:g id="TIME_REMAINING">%1$s</xliff:g> left"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> until charged"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Unknown"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Charging"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"charging"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Not charging"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Plugged in, can\'t charge at the moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Full"</string>
diff --git a/packages/SettingsLib/res/values-en-rXC/strings.xml b/packages/SettingsLib/res/values-en-rXC/strings.xml
index 95944dc..3b286f7 100644
--- a/packages/SettingsLib/res/values-en-rXC/strings.xml
+++ b/packages/SettingsLib/res/values-en-rXC/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‎‎‏‎‎‎‎‎‏‎‏‎‎‏‎‎‎‏‎‏‎‏‏‏‎‎‏‎‎‏‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‎‎‏‏‏‎‏‏‎‏‎‎‎‎Connected via ‎‏‎‎‏‏‎<xliff:g id="NAME">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‏‏‏‏‏‎‏‎‎‎‎‎‏‏‏‎‏‎‏‎‎‏‎‎‏‎‏‎‏‎‏‎‎‏‎‏‏‎‏‏‏‎‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‏‎‎Available via %1$s‎‏‎‎‏‎"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‏‎‏‎‎‏‎‏‎‏‎‏‏‎‏‏‏‏‏‏‎‏‎‏‏‏‎‏‏‎‏‏‎‏‏‏‏‏‎‎‏‏‏‏‎‎‎‏‏‎‏‏‏‏‏‎‏‎‏‏‎Tap to sign up‎‏‎‎‏‎"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‎‎‎‎‏‎‎‎‎‏‏‎‏‏‎‎‏‏‎‎‏‏‏‏‏‏‎‎‏‎‏‏‎‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‏‎‏‏‎Connected, no internet‎‏‎‎‏‎"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‏‎‏‎‎‏‏‎‏‎‎‎‏‎‎‏‏‎‎‎‏‎‏‏‏‏‎‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‏‏‎‎‎‎‏‏‏‎‏‏‎‎No internet‎‏‎‎‏‎"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‏‏‏‎‎‎‏‎‎‏‎‎‏‎‎‏‏‎‏‎‎‎‎‏‎‏‎‎‏‏‎‎‏‎‎‎‎‏‏‎‏‏‎‎‎‏‏‎‏‎‎‎‎‎‎‎‏‏‎Private DNS server cannot be accessed‎‏‎‎‏‎"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‎‎‎‎‎‏‏‏‎‎‎‏‎‎‏‎‏‏‎‏‏‎‎‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‎‎‏‏‏‎‎‏‎‎‏‎‏‎‎Limited connection‎‏‎‎‏‎"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‎‏‎‎‏‎‏‏‏‏‎‎‎‎‎‏‎‎‏‏‏‎‏‏‏‎‏‎‎‎‏‏‎‎‎‎‎‏‎‎‏‎‎‏‏‎‎‏‎‎‏‏‎‏‏‏‏‎‎‎‎No internet‎‏‎‎‏‎"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‏‏‎‎‎‏‎‏‎‎‏‏‎‎‎‎‎‎‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎‏‎‏‎‎‏‎‏‎‏‎‎‎‎‎‏‏‏‎‎‏‏‏‎‎‎‎Protanomaly (red-green)‎‏‎‎‏‎"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‏‏‎‎‎‎‎‏‎‏‏‎‎‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‏‏‎‎‏‎‏‎‏‎‎‎‏‎‏‎‏‏‎‏‎‏‎‏‏‎‏‎‏‏‎Tritanomaly (blue-yellow)‎‏‎‎‏‎"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‎‏‏‏‎‎‏‎‎‏‎‎‎‎‎‏‏‏‎‎‎‎‎‎‎‏‏‎‏‎‏‏‎‏‎‏‏‎‎‎‏‎‏‏‎‎‏‏‎‎‏‏‏‎‏‎‎‎‏‎‏‏‎‎Color correction‎‏‎‎‏‎"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‏‏‎‏‏‎‎‏‏‏‎‏‎‎‎‎‎‎‎‎‏‎‎‏‎‎‏‎‏‏‎‎‎‎‏‎‎‏‏‏‏‏‏‏‏‎‏‏‏‏‎‏‎‎‎‎‏‏‎‎Color correction helps people with color blindness to see more accurate colors‎‏‎‎‏‎"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‏‎‏‎‏‎‏‎‏‏‎‏‎‎‎‎‏‎‏‏‎‏‏‎‎‎‎‎‏‎‎‎‎‎‏‏‏‏‏‏‎‏‎‏‎‏‎‎‏‎Overridden by ‎‏‎‎‏‏‎<xliff:g id="TITLE">%1$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‎‏‏‏‏‎‎‏‎‏‏‏‎‎‏‏‎‎‎‎‏‏‎‎‏‏‏‎‎‎‏‏‏‎‎‏‏‎‎‏‎‎‏‏‎‎‏‏‎‏‎‎‎‎‏‏‏‎‏‎‎‏‎‎‏‏‎<xliff:g id="PERCENTAGE">%1$s</xliff:g>‎‏‎‎‏‏‏‎ - ‎‏‎‎‏‏‎<xliff:g id="TIME_STRING">%2$s</xliff:g>‎‏‎‎‏‏‏‎‎‏‎‎‏‎"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‎‏‎‏‏‎‎‎‎‎‏‎‏‎‏‎‏‎‏‎‏‏‎‎‏‎‏‏‎‎‏‎‏‏‎‏‏‎‎‏‎‏‏‎‏‏‏‎‏‏‎‏‎‎‏‏‏‎About ‎‏‎‎‏‏‎<xliff:g id="TIME_REMAINING">%1$s</xliff:g>‎‏‎‎‏‏‏‎ left‎‏‎‎‏‎"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‏‏‏‏‏‏‏‎‏‏‎‎‎‎‎‏‎‏‏‏‎‎‏‏‎‏‏‎‏‏‏‎‏‏‏‏‎‏‏‏‎‏‏‎‏‏‏‏‎‎‏‎‎‏‎‎‏‏‎<xliff:g id="LEVEL">%1$s</xliff:g>‎‏‎‎‏‏‏‎ - ‎‏‎‎‏‏‎<xliff:g id="TIME">%2$s</xliff:g>‎‏‎‎‏‏‏‎ until charged‎‏‎‎‏‎"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‎‏‎‏‏‏‎‏‏‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‎‏‎‏‎‏‏‏‎‏‏‏‏‎‎‏‏‏‏‏‏‎‏‏‎‏‎‎Unknown‎‏‎‎‏‎"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‎‏‏‎‏‏‎‎‏‎‏‎‏‏‏‎‏‏‏‎‎‏‎‎‎‏‏‏‎‎‎‏‎‏‏‎‏‎‏‎‎‎‎‎‏‏‎‎‏‏‎‏‏‎‎‏‏‎‏‎Charging‎‏‎‎‏‎"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‏‎‎‎‏‎‏‎‏‏‏‎‏‎‎‎‏‏‎‎‏‎‏‎‎‏‎‎‎‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‎‏‎‏‎‎‎‎‏‏‎‎‏‏‎‎charging‎‏‎‎‏‎"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‎‎‎‎‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‎‎‎‎‏‎‎‎‏‎‎‎‏‎‏‎‏‎‎‏‎‏‏‎‎‎‎‏‏‎‎‏‎‎‎‎‎‏‎‏‎Not charging‎‏‎‎‏‎"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‏‏‏‏‎‎‏‏‏‎‎‏‏‎‏‎‎‎‏‎‏‎‎‎‏‎‎‏‎‏‎‎‎‏‏‏‎‏‎‏‏‎‎‏‏‏‎‏‏‏‏‎‏‎‏‎‎‎‏‏‏‎‏‏‎Plugged in, can\'t charge right now‎‏‎‎‏‎"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‏‎‏‏‏‏‏‎‏‏‏‏‎‏‏‎‏‎‏‎‎‏‎‏‎‎‏‏‏‎‏‎‎‏‏‏‎‏‏‎‎‏‎‎‏‎‎‎‏‎‏‎‏‏‎‏‎‎‏‎‎‏‏‏‏‎‏‏‎‎‎Full‎‏‎‎‏‎"</string>
diff --git a/packages/SettingsLib/res/values-es-rUS/strings.xml b/packages/SettingsLib/res/values-es-rUS/strings.xml
index c6dfdd3..966f2f2 100644
--- a/packages/SettingsLib/res/values-es-rUS/strings.xml
+++ b/packages/SettingsLib/res/values-es-rUS/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Conexión a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponible a través de %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Presiona para registrarte"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conectado pero sin conexión a Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sin Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"No se puede acceder al servidor DNS privado"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Conexión limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sin Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalía (rojo-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalía (azul-amarillo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corrección de color"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La corrección de colores ayuda a las personas con daltonismo a ver colores más exactos"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Reemplazado por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tiempo restante: aproximadamente <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> para completar la carga"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconocido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"cargando"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"No se está cargando."</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. No se puede cargar en este momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Cargado"</string>
diff --git a/packages/SettingsLib/res/values-es/strings.xml b/packages/SettingsLib/res/values-es/strings.xml
index ba4a9ff..1198722 100644
--- a/packages/SettingsLib/res/values-es/strings.xml
+++ b/packages/SettingsLib/res/values-es/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Conectado a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponible a través de %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toca para registrarte"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conexión sin Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sin Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"No se ha podido acceder al servidor DNS privado"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Conexión limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sin Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalía (rojo-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalía (azul-amarillo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corrección de color"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La corrección del color ayuda a las personas con daltonismo a ver los colores más reales"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>: <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tiempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> (<xliff:g id="TIME">%2$s</xliff:g> hasta que termine de cargarse)"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconocido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"cargando"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"No se está cargando"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Se ha conectado, pero no se puede cargar en este momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Completa"</string>
diff --git a/packages/SettingsLib/res/values-et/strings.xml b/packages/SettingsLib/res/values-et/strings.xml
index df3b792..9be72f9 100644
--- a/packages/SettingsLib/res/values-et/strings.xml
+++ b/packages/SettingsLib/res/values-et/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Ühendatud võrgu <xliff:g id="NAME">%1$s</xliff:g> kaudu"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Saadaval üksuse %1$s kaudu"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Puudutage registreerumiseks"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Ühendatud, Interneti-ühendus puudub"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Interneti pole"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Privaatsele DNS-serverile ei pääse juurde"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Piiratud ühendus"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Interneti-ühendus puudub"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaalia (punane-roheline)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaalia (sinine-kollane)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Värvide korrigeerimine"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Värviparanduse funktsioon aitab värvipimedatel värve täpsemini näha"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Alistas <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ligikaudu <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäänud"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> täislaadimiseni"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Tundmatu"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Laadimine"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"laadimine"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ei lae"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Vooluvõrgus, praegu ei saa laadida"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Täis"</string>
diff --git a/packages/SettingsLib/res/values-eu/strings.xml b/packages/SettingsLib/res/values-eu/strings.xml
index fcb320f..d0c6c52 100644
--- a/packages/SettingsLib/res/values-eu/strings.xml
+++ b/packages/SettingsLib/res/values-eu/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> bidez konektatuta"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s bidez erabilgarri"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Sakatu erregistratzeko"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Konektatuta; ezin da atzitu Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Ez dago Interneteko konexiorik"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Ezin da atzitu DNS zerbitzari pribatua"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Konexio mugatua"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Ez dago Interneteko konexiorik"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanopia (gorri-berdeak)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanopia (urdin-horia)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koloreen zuzenketa"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Kolore-zuzenketak kolore zehatzagoak ikusten laguntzen die koloreentzako itsutasuna duten pertsonei."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> hobespena gainjarri zaio"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> inguru gelditzen dira"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> guztiz kargatu arte"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Ezezaguna"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Kargatzen"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"kargatzen"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ez da kargatzen ari"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Konektatuta dago. Ezin da kargatu une honetan."</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Beteta"</string>
diff --git a/packages/SettingsLib/res/values-fa/strings.xml b/packages/SettingsLib/res/values-fa/strings.xml
index 261a438..f15174a 100644
--- a/packages/SettingsLib/res/values-fa/strings.xml
+++ b/packages/SettingsLib/res/values-fa/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"متصل شده ازطریق <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"‏در دسترس از طریق %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"برای ثبت‌نام ضربه بزنید"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"متصل، بدون اینترنت"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"عدم اتصال به اینترنت"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"‏سرور DNS خصوصی قابل دسترسی نیست"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"اتصال محدود"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"عدم دسترسی به اینترنت"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"قرمزدشواربینی (قرمز-سبز)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"آبی‌دشواربینی (آبی-زرد)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"تصحیح رنگ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"تصحیح رنگ به افراد مبتلا به کوررنگی کمک می‌کند رنگ‌ها را دقیق‌تر ببینند"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"توسط <xliff:g id="TITLE">%1$s</xliff:g> لغو شد"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"تقریباً <xliff:g id="TIME_REMAINING">%1$s</xliff:g> شارژ باقی مانده است"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> تا شارژ کامل"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ناشناس"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"در حال شارژ شدن"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"درحال شارژ شدن"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"شارژ نمی‌شود"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"به برق وصل شده‌ است، درحال‌حاضر شارژ نمی‌شود"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"پر"</string>
diff --git a/packages/SettingsLib/res/values-fi/strings.xml b/packages/SettingsLib/res/values-fi/strings.xml
index 4ccf430..1232db3 100644
--- a/packages/SettingsLib/res/values-fi/strings.xml
+++ b/packages/SettingsLib/res/values-fi/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Yhdistetty (<xliff:g id="NAME">%1$s</xliff:g>)"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Käytettävissä seuraavan kautta: %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Rekisteröidy napauttamalla"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Yhdistetty, ei internetyhteyttä"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Ei internetyhteyttä"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Ei pääsyä yksityiselle DNS-palvelimelle"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Rajallinen yhteys"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Ei internetyhteyttä"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (puna-vihersokeus)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (sini-keltasokeus)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Värikorjaus"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Värinkorjaus auttaa värisokeita tulkitsemaan värejä"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Tämän ohittaa <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Noin <xliff:g id="TIME_REMAINING">%1$s</xliff:g> jäljellä"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> täyteen lataukseen"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Tuntematon"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Ladataan"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ladataan"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ei laturissa"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Kytketty virtalähteeseen, lataaminen ei onnistu"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Täynnä"</string>
diff --git a/packages/SettingsLib/res/values-fr-rCA/strings.xml b/packages/SettingsLib/res/values-fr-rCA/strings.xml
index 84a9797..6404df4 100644
--- a/packages/SettingsLib/res/values-fr-rCA/strings.xml
+++ b/packages/SettingsLib/res/values-fr-rCA/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connecté sur le réseau <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Accessible par %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toucher pour vous connecter"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connecté, aucun accès à Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Aucune connexion Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Impossible d\'accéder au serveur DNS privé"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Connexion limitée"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Aucune connexion Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rouge/vert)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (bleu/jaune)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correction des couleurs"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La correction des couleurs aide les personnes atteintes de daltonisme à mieux percevoir les couleurs"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> : <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Il reste environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> : <xliff:g id="TIME">%2$s</xliff:g> jusqu\'à la charge complète"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Inconnu"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Charge en cours…"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"en cours de charge"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"N\'est pas en charge"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"L\'appareil est branché, mais il ne peut pas être chargé pour le moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Pleine"</string>
diff --git a/packages/SettingsLib/res/values-fr/strings.xml b/packages/SettingsLib/res/values-fr/strings.xml
index 030a7f9..e75063b 100644
--- a/packages/SettingsLib/res/values-fr/strings.xml
+++ b/packages/SettingsLib/res/values-fr/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connecté via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponible via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Appuyez ici pour vous connecter"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connecté, aucun accès à Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Aucun accès à Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Impossible d\'accéder au serveur DNS privé"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Connexion limitée"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Aucun accès à Internet"</string>
@@ -57,7 +57,7 @@
     <string name="osu_sign_up_complete" msgid="7640183358878916847">"Inscription terminée. Connexion…"</string>
     <string name="speed_label_very_slow" msgid="8526005255731597666">"Très lente"</string>
     <string name="speed_label_slow" msgid="6069917670665664161">"Lente"</string>
-    <string name="speed_label_okay" msgid="1253594383880810424">"Correct"</string>
+    <string name="speed_label_okay" msgid="1253594383880810424">"Correcte"</string>
     <string name="speed_label_medium" msgid="9078405312828606976">"Moyenne"</string>
     <string name="speed_label_fast" msgid="2677719134596044051">"Élevée"</string>
     <string name="speed_label_very_fast" msgid="8215718029533182439">"Très rapide"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rouge/vert)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (bleu-jaune)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correction couleur"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La correction des couleurs aide les personnes atteintes de daltonisme à mieux percevoir les couleurs"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Remplacé par <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Temps restant : environ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> jusqu\'à la charge complète"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Inconnu"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Batterie en charge"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"en charge…"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Pas en charge"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Appareil branché, mais impossible de le charger pour le moment"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Pleine"</string>
diff --git a/packages/SettingsLib/res/values-gl/strings.xml b/packages/SettingsLib/res/values-gl/strings.xml
index af033cf..7fd32f9 100644
--- a/packages/SettingsLib/res/values-gl/strings.xml
+++ b/packages/SettingsLib/res/values-gl/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Wifi conectada a través de <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dispoñible a través de %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toca para rexistrarte"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conexión sen Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Non hai conexión a Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Non se puido acceder ao servidor DNS privado"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Pouca conexión"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Non hai conexión a Internet"</string>
@@ -316,7 +316,7 @@
     <string name="usb_audio_disable_routing" msgid="3367656923544254975">"Desactivar encamiñamento audio USB"</string>
     <string name="usb_audio_disable_routing_summary" msgid="8768242894849534699">"Desactiva o encamiñamento automático a periféricos de audio USB"</string>
     <string name="debug_layout" msgid="1659216803043339741">"Mostrar límites de deseño"</string>
-    <string name="debug_layout_summary" msgid="8825829038287321978">"Mostra os límites dos clips, as marxes, etc."</string>
+    <string name="debug_layout_summary" msgid="8825829038287321978">"Mostra os límites dos clips, as marxes etc."</string>
     <string name="force_rtl_layout_all_locales" msgid="8690762598501599796">"Forzar dirección do deseño RTL"</string>
     <string name="force_rtl_layout_all_locales_summary" msgid="6663016859517239880">"Forza a dirección de pantalla a RTL (dereita a esquerda) para todas as configuración rexionais"</string>
     <string name="force_msaa" msgid="4081288296137775550">"Forzar MSAA 4x"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalía (vermello-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalía (azul-amarelo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corrección da cor"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"A corrección das cores axuda ás persoas con daltonismo a ver as cores con maior precisión"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Anulado por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> para completar a carga"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Descoñecido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Cargando"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"cargando"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Non se está cargando"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectouse, pero non se pode cargar neste momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Completa"</string>
diff --git a/packages/SettingsLib/res/values-gu/strings.xml b/packages/SettingsLib/res/values-gu/strings.xml
index 87fd876..1513c57 100644
--- a/packages/SettingsLib/res/values-gu/strings.xml
+++ b/packages/SettingsLib/res/values-gu/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> દ્વારા કનેક્ટ થયેલ"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s દ્વારા ઉપલબ્ધ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"સાઇન અપ કરવા માટે ટૅપ કરો"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"કનેક્ટ કર્યું, કોઈ ઇન્ટરનેટ નથી"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"કોઈ ઇન્ટરનેટ નથી"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ખાનગી DNS સર્વર ઍક્સેસ કરી શકાતા નથી"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"મર્યાદિત કનેક્શન"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ઇન્ટરનેટ ઍક્સેસ નથી"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"પ્રોટેનોમલી (લાલ-લીલો)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ટ્રાઇટેનોમલી(વાદળી-પીળો)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"રંગ સુધારણા"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"રંગ સુધારણા રંગ અંધત્વવાળા લોકોને વધુ સચોટ રંગો જોવામાં સહાય કરે છે"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> દ્વારા ઓવરરાઇડ થયું"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"લગભગ <xliff:g id="TIME_REMAINING">%1$s</xliff:g> બાકી છે"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - ચાર્જ થવા માટે <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"અજાણ્યું"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ચાર્જ થઈ રહ્યું છે"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ચાર્જ થઈ રહ્યું છે"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ચાર્જ થઈ રહ્યું નથી"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"પ્લગ ઇન કરેલ, હમણાં ચાર્જ કરી શકતા નથી"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"પૂર્ણ"</string>
diff --git a/packages/SettingsLib/res/values-hi/strings.xml b/packages/SettingsLib/res/values-hi/strings.xml
index 02b5c96..c79c4a4 100644
--- a/packages/SettingsLib/res/values-hi/strings.xml
+++ b/packages/SettingsLib/res/values-hi/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> के ज़रिए कनेक्ट किया गया"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s के द्वारा उपलब्ध"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"साइन अप करने के लिए टैप करें"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"कनेक्ट हो गया है, लेकिन इंटरनेट नहीं है"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"इंटरनेट कनेक्शन नहीं है"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"निजी डीएनएस सर्वर को ऐक्सेस नहीं किया जा सकता"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"सीमित कनेक्शन"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"इंटरनेट कनेक्शन नहीं है"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"लाल रंग पहचान न पाना (लाल-हरा)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"नीला रंग पहचान न पाना (नीला-पीला)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रंग सुधार"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"रंग में सुधार करने की सेटिंग, वर्णान्धता (कलर ब्लाइंडनेस) वाले लोगों को ज़्यादा सटीक रंग देखने में मदद करती है"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> के द्वारा ओवरराइड किया गया"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"बैटरी करीब <xliff:g id="TIME_REMAINING">%1$s</xliff:g> में खत्म हो जाएगी"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> में पूरा चार्ज हो जाएगा"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हो रही है"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"चार्ज हो रही है"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज नहीं हो रही है"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लग इन है, अभी चार्ज नहीं हो सकती"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"पूरी"</string>
diff --git a/packages/SettingsLib/res/values-hr/strings.xml b/packages/SettingsLib/res/values-hr/strings.xml
index 598cfe2..3ab5678 100644
--- a/packages/SettingsLib/res/values-hr/strings.xml
+++ b/packages/SettingsLib/res/values-hr/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Povezan putem mreže <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dostupno putem %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Dodirnite da biste se registrirali"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Povezano, bez interneta"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nema interneta"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Nije moguće pristupiti privatnom DNS poslužitelju"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ograničena veza"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nema interneta"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (crveno – zeleno)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (plavo – žuto)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcija boje"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korekcija boje pomaže slijepima za boje da vide preciznije boje"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Premošćeno postavkom <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Još otprilike <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – napunit će se za <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nepoznato"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Punjenje"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"punjenje"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ne puni se"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Uključen, trenutačno se ne može puniti"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Puna"</string>
diff --git a/packages/SettingsLib/res/values-hu/strings.xml b/packages/SettingsLib/res/values-hu/strings.xml
index d970c73..8d06f58 100644
--- a/packages/SettingsLib/res/values-hu/strings.xml
+++ b/packages/SettingsLib/res/values-hu/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Kapcsolódva a következőn keresztül: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Elérhető a következőn keresztül: %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Koppintson a regisztrációhoz"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Csatlakozva, nincs internet-hozzáférés"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nincs internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"A privát DNS-kiszolgálóhoz nem lehet hozzáférni"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Korlátozott kapcsolat"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nincs internetkapcsolat"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomália (piros– zöld)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomália (kék–sárga)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Színkorrekció"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"A színkorrekció segít a színtévesztőknek abban, hogy pontosabban lássák a színeket"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Felülírva erre: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Körülbelül <xliff:g id="TIME_REMAINING">%1$s</xliff:g> maradt hátra"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> a feltöltésig"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Ismeretlen"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Töltés"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"töltés"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nem tölt"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Csatlakoztatva, jelenleg nem tölt"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Feltöltve"</string>
diff --git a/packages/SettingsLib/res/values-hy/strings.xml b/packages/SettingsLib/res/values-hy/strings.xml
index 9086934..99cef28 100644
--- a/packages/SettingsLib/res/values-hy/strings.xml
+++ b/packages/SettingsLib/res/values-hy/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Միացված է <xliff:g id="NAME">%1$s</xliff:g>-ի միջոցով"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Հասանելի է %1$s-ի միջոցով"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Հպեք՝ գրանցվելու համար"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Միացված է, սակայն ինտերնետ կապ չկա"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Կապ չկա"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Մասնավոր DNS սերվերն անհասանելի է"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Սահմանափակ կապ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Ինտերնետ կապ չկա"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Պրոտանոմալիա (կարմիր-կանաչ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Տրիտանոմալիա (կապույտ-դեղին)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Գունաշտկում"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Գունաշտկումն օգնում է գունային դալտոնիզմ ունեցող մարդկանց ավելի ճշգրիտ տեսնել գույները"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Գերազանցված է <xliff:g id="TITLE">%1$s</xliff:g>-ից"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Լիցքը կբավարարի մոտ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> մինչև լիցքավորումը"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Անհայտ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Լիցքավորում"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"լիցքավորում"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Չի լիցքավորվում"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Միացված է հոսանքի աղբյուրին, սակայն այս պահին չի կարող լիցքավորվել"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Լիցքավորված է"</string>
diff --git a/packages/SettingsLib/res/values-in/strings.xml b/packages/SettingsLib/res/values-in/strings.xml
index 3c1504c..25de382 100644
--- a/packages/SettingsLib/res/values-in/strings.xml
+++ b/packages/SettingsLib/res/values-in/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Tersambung melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Tersedia melalui %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Ketuk untuk mendaftar"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Tersambung, tidak ada internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Tidak ada internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Server DNS pribadi tidak dapat diakses"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Koneksi terbatas"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Tidak ada internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (merah-hijau)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (biru-kuning)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Koreksi warna"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Koreksi warna membantu orang penderita buta warna untuk melihat warna yang lebih akurat"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Digantikan oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Sekitar <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> lagi terisi penuh"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Tidak diketahui"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Mengisi daya"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"mengisi daya baterai"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Tidak mengisi daya"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Tercolok, tidak dapat mengisi baterai sekarang"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Penuh"</string>
diff --git a/packages/SettingsLib/res/values-is/strings.xml b/packages/SettingsLib/res/values-is/strings.xml
index 438e900..8fe382a 100644
--- a/packages/SettingsLib/res/values-is/strings.xml
+++ b/packages/SettingsLib/res/values-is/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Tenging í gegnum <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Í boði í gegnum %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Ýttu til að skrá þig"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Tengt, enginn netaðgangur"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Engin nettenging"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Ekki næst í DNS-einkaþjón"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Takmörkuð tenging"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Engin nettenging"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Litblinda (rauðgræn)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Litblinda (blágul)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Litaleiðrétting"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Litaleiðrétting hjálpar fólki með litblindu að sjá réttari liti"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Hnekkt af <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Um það bil <xliff:g id="TIME_REMAINING">%1$s</xliff:g> eftir"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> að fullri hleðslu"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Óþekkt"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Í hleðslu"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"í hleðslu"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ekki í hleðslu"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Í sambandi, ekki hægt að hlaða eins og er"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Fullhlaðin"</string>
diff --git a/packages/SettingsLib/res/values-it/strings.xml b/packages/SettingsLib/res/values-it/strings.xml
index 114b33b..c9abc74 100644
--- a/packages/SettingsLib/res/values-it/strings.xml
+++ b/packages/SettingsLib/res/values-it/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Connesso tramite <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponibile tramite %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tocca per registrarti"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Connesso, senza Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Internet assente"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Non è possibile accedere al server DNS privato"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Connessione limitata"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nessuna connessione a Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalìa (rosso-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalìa (blu-giallo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correzione del colore"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"La correzione del colore consente alle persone daltoniche di vedere colori più accurati"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Valore sostituito da <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo rimanente: <xliff:g id="TIME_REMAINING">%1$s</xliff:g> circa"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> alla carica completa"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Sconosciuta"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"In carica"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"in carica"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Non in carica"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Collegato alla corrente. Impossibile caricare al momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Carica"</string>
diff --git a/packages/SettingsLib/res/values-iw/strings.xml b/packages/SettingsLib/res/values-iw/strings.xml
index 62085a8..1921d03 100644
--- a/packages/SettingsLib/res/values-iw/strings.xml
+++ b/packages/SettingsLib/res/values-iw/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"מחוברת באמצעות <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"‏זמינה דרך %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"יש להקיש כדי להירשם"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"מחובר. אין אינטרנט"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"אין אינטרנט"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"‏לא ניתן לגשת לשרת DNS הפרטי"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"חיבור מוגבל"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"אין אינטרנט"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"פרוטנומליה (אדום-ירוק)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"טריטנומליה (כחול-צהוב)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"תיקון צבע"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"תיקון צבע עוזר למשתמשים עם עיוורון צבעים לראות צבעים מדויקים יותר"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"נעקף על ידי <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"הזמן הנותר: בערך <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> עד הטעינה"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"לא ידוע"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"בטעינה"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"בטעינה"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"לא בטעינה"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"המכשיר מחובר, אבל לא ניתן לטעון עכשיו"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"מלאה"</string>
diff --git a/packages/SettingsLib/res/values-ja/strings.xml b/packages/SettingsLib/res/values-ja/strings.xml
index 28b98ee..e4e1ab9 100644
--- a/packages/SettingsLib/res/values-ja/strings.xml
+++ b/packages/SettingsLib/res/values-ja/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> で接続しました"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s経由で使用可能"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"タップして登録してください"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"接続済み、インターネット接続なし"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"インターネットに接続されていません"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"プライベート DNS サーバーにアクセスできません"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"接続が制限されています"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"インターネット未接続"</string>
@@ -203,7 +203,7 @@
     <string name="vpn_settings_not_available" msgid="2894137119965668920">"このユーザーはVPN設定を利用できません。"</string>
     <string name="tethering_settings_not_available" msgid="266821736434699780">"このユーザーはテザリング設定を利用できません"</string>
     <string name="apn_settings_not_available" msgid="1147111671403342300">"このユーザーはアクセスポイント名設定を利用できません"</string>
-    <string name="enable_adb" msgid="8072776357237289039">"USBデバッグ"</string>
+    <string name="enable_adb" msgid="8072776357237289039">"USB デバッグ"</string>
     <string name="enable_adb_summary" msgid="3711526030096574316">"USB接続時はデバッグモードにする"</string>
     <string name="clear_adb_keys" msgid="3010148733140369917">"USBデバッグの許可の取り消し"</string>
     <string name="bugreport_in_power" msgid="8664089072534638709">"バグレポートのショートカット"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"第一色弱(赤緑)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"第三色弱(青黄)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色補正"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"色補正機能を利用すると、色覚異常のユーザーがより正確に色を判別できるようになります"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g>によって上書き済み"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"残り時間: 約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - 充電完了まで <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"不明"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"充電しています"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"充電していません"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"接続されていますが、現在、充電できません"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"フル"</string>
diff --git a/packages/SettingsLib/res/values-ka/strings.xml b/packages/SettingsLib/res/values-ka/strings.xml
index 6f5d0b3..b2cfb17 100644
--- a/packages/SettingsLib/res/values-ka/strings.xml
+++ b/packages/SettingsLib/res/values-ka/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"დაკავშირებულია <xliff:g id="NAME">%1$s</xliff:g>-ით"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"ხელმისაწვდომია %1$s-ით"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"შეეხეთ რეგისტრაციისთვის"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"დაკავშირებულია, ინტერნეტის გარეშე"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ინტერნეტ-კავშირი არ არის"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"პირად DNS სერვერზე წვდომა შეუძლებელია"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"შეზღუდული კავშირი"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ინტერნეტ-კავშირი არ არის"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"პროტოანომალია (წითელი-მწვანე)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ტრიტანომალია (ლურჯი-ყვითელი)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ფერის კორექცია"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ფერის კორექცია ეხმარება ფერითი სიბრმავის მქონე ადამიანებს, უფრო ზუსტად გაარჩიონ ფერები"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"უკუგებულია <xliff:g id="TITLE">%1$s</xliff:g>-ის მიერ"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"დარჩა დაახლოებით <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> დატენვამდე"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"უცნობი"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"იტენება"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"იტენება"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"არ იტენება"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"მიერთებულია, დატენვა ამჟამად ვერ ხერხდება"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ბატარეა დატენილია"</string>
diff --git a/packages/SettingsLib/res/values-kk/strings.xml b/packages/SettingsLib/res/values-kk/strings.xml
index 3fe426e..756bc06 100644
--- a/packages/SettingsLib/res/values-kk/strings.xml
+++ b/packages/SettingsLib/res/values-kk/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> арқылы жалғанған"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s арқылы қолжетімді"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Тіркелу үшін түртіңіз."</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Қосылған, интернет жоқ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Интернетпен байланыс жоқ."</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Жеке DNS серверіне кіру мүмкін емес."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Шектеулі байланыс"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Интернетпен байланыс жоқ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (қызыл-жасыл)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (көк-сары)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Түсті түзету"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Түсті түзету түсті ажырата алмайтын адамдарға оларды дәлірек көруге көмектеседі"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> үстінен басқан"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Шамамен <xliff:g id="TIME_REMAINING">%1$s</xliff:g> қалды"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – зарядталғанға дейін <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Белгісіз"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Зарядталуда"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"зарядталуда"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Зарядталу орындалып жатқан жоқ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Қосылған, зарядталмайды"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Толы"</string>
diff --git a/packages/SettingsLib/res/values-km/strings.xml b/packages/SettingsLib/res/values-km/strings.xml
index 24bfa35..cdf92b3 100644
--- a/packages/SettingsLib/res/values-km/strings.xml
+++ b/packages/SettingsLib/res/values-km/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"ភ្ជាប់​តាម <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"មានតាមរយៈ %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ចុច​ដើម្បី​ចុះឈ្មោះ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"បាន​ភ្ជាប់ ប៉ុន្តែ​គ្មាន​អ៊ីនធឺណិត​ទេ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"គ្មាន​អ៊ីនធឺណិតទេ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"មិនអាច​ចូលប្រើ​ម៉ាស៊ីនមេ DNS ឯកជន​បានទេ"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ការតភ្ជាប់មានកម្រិត"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"គ្មាន​អ៊ីនធឺណិតទេ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ក្រហម​ពណ៌​បៃតង​)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ពណ៌​ខៀវ​-លឿង​)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ការ​កែ​ពណ៌"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ការកែតម្រូវ​ពណ៌​ជួយដល់​អ្នកដែល​មិនអាច​បែងចែក​ពណ៌​ឱ្យមើលឃើញ​ពណ៌ដែលត្រឹមត្រូវ​ជាមុន"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"បដិសេធ​ដោយ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"នៅសល់​ប្រហែល <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ទៀត"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ទៀតទើប​ត្រូវសាក"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"មិន​ស្គាល់"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"កំពុងបញ្ចូល​ថ្ម"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"កំពុង​សាក​ថ្ម"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"មិនកំពុង​បញ្ចូល​ថ្ម"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ដោត​សាកថ្ម​រួចហើយ ប៉ុន្តែ​​សាកថ្ម​មិន​ចូលទេឥឡូវនេះ"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ពេញ"</string>
diff --git a/packages/SettingsLib/res/values-kn/strings.xml b/packages/SettingsLib/res/values-kn/strings.xml
index 0699bbc..4a24691 100644
--- a/packages/SettingsLib/res/values-kn/strings.xml
+++ b/packages/SettingsLib/res/values-kn/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ಆ್ಯಪ್ ಮೂಲಕ ಸಂಪರ್ಕಿಸಲಾಗಿದೆ"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s ಮೂಲಕ ಲಭ್ಯವಿದೆ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ಸೈನ್ ಅಪ್ ಮಾಡಲು ಟ್ಯಾಪ್‌ ಮಾಡಿ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ಸಂಪರ್ಕಪಡಿಸಲಾಗಿದೆ, ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ಖಾಸಗಿ DNS ಸರ್ವರ್ ಅನ್ನು ಪ್ರವೇಶಿಸಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ಸೀಮಿತ ಸಂಪರ್ಕ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ಇಂಟರ್ನೆಟ್ ಇಲ್ಲ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ಪ್ರೊಟನೋಮಲಿ (ಕೆಂಪು-ಹಸಿರು)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ಟ್ರಿಟನೋಮಲಿ (ನೀಲಿ-ಹಳದಿ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ಬಣ್ಣದ ತಿದ್ದುಪಡಿ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ವರ್ಣ ಅಂಧತ್ವ ಹೊಂದಿರುವ ಜನರಿಗೆ ಬಣ್ಣಗಳನ್ನು ಹೆಚ್ಚು ನಿಖರವಾಗಿ ವೀಕ್ಷಿಸಲು ಬಣ್ಣ ತಿದ್ದುಪಡಿ ಸಹಾಯ ಮಾಡುತ್ತದೆ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ಮೂಲಕ ಅತಿಕ್ರಮಿಸುತ್ತದೆ"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ಸಮಯ ಬಾಕಿ ಉಳಿದಿದೆ"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - ಚಾರ್ಜ್ ಆಗಲು <xliff:g id="TIME">%2$s</xliff:g> ಸಮಯ ಬೇಕು"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ಅಪರಿಚಿತ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ಚಾರ್ಜ್ ಆಗುತ್ತಿದೆ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ಚಾರ್ಜ್‌ ಆಗುತ್ತಿಲ್ಲ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ಪ್ಲಗ್ ಇನ್ ಮಾಡಲಾಗಿದೆ, ಇದೀಗ ಚಾರ್ಜ್ ಮಾಡಲು ಸಾಧ್ಯವಿಲ್ಲ"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ಭರ್ತಿ"</string>
diff --git a/packages/SettingsLib/res/values-ko/strings.xml b/packages/SettingsLib/res/values-ko/strings.xml
index 25e9cfe..51896e9 100644
--- a/packages/SettingsLib/res/values-ko/strings.xml
+++ b/packages/SettingsLib/res/values-ko/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g>을(를) 통해 연결됨"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s을(를) 통해 사용 가능"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"탭하여 가입"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"연결됨, 인터넷 사용 불가"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"인터넷 연결 없음"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"비공개 DNS 서버에 액세스할 수 없습니다."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"제한된 연결"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"인터넷 연결 없음"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"적색약(적녹)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"청색약(청황)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"색보정"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"색상 보정을 사용하면 색맹인 사용자가 색상을 정확하게 구분하는 데 도움이 됩니다."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> 우선 적용됨"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>, <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"남은 시간 약 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - 충전 완료까지 <xliff:g id="TIME">%2$s</xliff:g> 남음"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"알 수 없음"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"충전 중"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"충전 중"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"충전 안함"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"전원이 연결되었지만 현재 충전할 수 없음"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"충전 완료"</string>
diff --git a/packages/SettingsLib/res/values-ky/strings.xml b/packages/SettingsLib/res/values-ky/strings.xml
index 3dfce1e..061f6fd 100644
--- a/packages/SettingsLib/res/values-ky/strings.xml
+++ b/packages/SettingsLib/res/values-ky/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> аркылуу туташты"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s аркылуу жеткиликтүү"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Катталуу үчүн таптап коюңуз"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Туташып турат, Интернет жок"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Интернет жок"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Жеке DNS сервери жеткиликсиз"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Байланыш чектелген"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Интернет жок"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (кызыл-жашыл)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (көк-сары)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Түсүн тууралоо"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Түстү тууралоо жөндөөсү түстөрдү айырмалап көрбөгөн адамдарга түстөрдү тагыраак билүүгө жардам берет"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> менен алмаштырылган"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Болжол менен <xliff:g id="TIME_REMAINING">%1$s</xliff:g> калды"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> кийин кубатталат"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Белгисиз"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Кубатталууда"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"кубатталууда"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Кубат алган жок"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Сайылып турат, учурда кубаттоо мүмкүн эмес"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Толук"</string>
diff --git a/packages/SettingsLib/res/values-lo/strings.xml b/packages/SettingsLib/res/values-lo/strings.xml
index 48e5093..bfbd8a9 100644
--- a/packages/SettingsLib/res/values-lo/strings.xml
+++ b/packages/SettingsLib/res/values-lo/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"ເຊື່ອມ​ຕໍ່​ຜ່ານ <xliff:g id="NAME">%1$s</xliff:g> ແລ້ວ"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"ມີ​ໃຫ້​ຜ່ານ %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ແຕະເພື່ອສະໝັກ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ເຊື່ອມຕໍ່ແລ້ວ, ບໍ່ມີອິນເຕີເນັດ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ບໍ່ມີອິນເຕີເນັດ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ບໍ່ສາມາດເຂົ້າເຖິງເຊີບເວີ DNS ສ່ວນຕົວໄດ້"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ການເຊື່ອມຕໍ່ຈຳກັດ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ບໍ່ມີອິນເຕີເນັດ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ສີ​ແດງ​-ສີ​ຂຽວ​)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ສີ​ຟ້າ​-ສີ​ເຫຼືອງ​)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ການ​ປັບ​ແຕ່ງ​ສີ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ການແກ້ໄຂສີຈະຊ່ວຍໃຫ້ຄົນທີ່ຕາບອດສີເຫັນສີຕ່າງໆໄດ້ຖືກຕ້ອງຍິ່ງຂຶ້ນ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"ຖືກແທນໂດຍ <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"ເຫຼືອອີກປະມານ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ຈົນກວ່າຈະສາກເຕັມ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ບໍ່ຮູ້ຈັກ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ກຳລັງສາກໄຟ"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ກຳລັງສາກໄຟ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ບໍ່ໄດ້ສາກໄຟ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ສຽບສາຍແລ້ວ, ບໍ່ສາມາດສາກໄດ້ໃນຕອນນີ້"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ເຕັມ"</string>
diff --git a/packages/SettingsLib/res/values-lt/strings.xml b/packages/SettingsLib/res/values-lt/strings.xml
index 8b3fbad..76d06fa 100644
--- a/packages/SettingsLib/res/values-lt/strings.xml
+++ b/packages/SettingsLib/res/values-lt/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Prisijungta naudojant programą „<xliff:g id="NAME">%1$s</xliff:g>“"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Pasiekiama naudojant „%1$s“"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Palieskite, kad prisiregistruotumėte"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Prisijungta, nėra interneto"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nėra interneto ryšio"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Privataus DNS serverio negalima pasiekti"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ribotas ryšys"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nėra interneto ryšio"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (raudona, žalia)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (mėlyna, geltona)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Spalvų taisymas"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Naudojant spalvų taisymo funkciją daltonikai gali geriau matyti spalvas"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Nepaisyta naudojant nuostatą „<xliff:g id="TITLE">%1$s</xliff:g>“"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Liko maždaug <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – iki visiškos įkrovos liko <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nežinomas"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Kraunasi..."</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"įkraunama"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nekraunama"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Įjungta į maitinimo lizdą, bet šiuo metu įkrauti neįmanoma"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Visiškai įkrautas"</string>
diff --git a/packages/SettingsLib/res/values-lv/strings.xml b/packages/SettingsLib/res/values-lv/strings.xml
index 4fc5b22..e4652d1 100644
--- a/packages/SettingsLib/res/values-lv/strings.xml
+++ b/packages/SettingsLib/res/values-lv/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Savienojums ar <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Pieejams, izmantojot %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Pieskarieties, lai reģistrētos"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Savienojums izveidots, nav piekļuves internetam"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nav interneta"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Nevar piekļūt privātam DNS serverim."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ierobežots savienojums"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nav piekļuves internetam"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomālija (sarkans/zaļš)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomālija (zils/dzeltens)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Krāsu korekcija"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Krāsu korekcija palīdz cilvēkiem ar krāsu aklumu redzēt precīzākas krāsas."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Jaunā preference: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> — <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Aptuvenais atlikušais laiks: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> — <xliff:g id="TIME">%2$s</xliff:g> līdz pilnai uzlādei"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nezināms"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Uzlāde"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"notiek uzlāde"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenotiek uzlāde"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Pievienots, taču pašlaik nevar veikt uzlādi"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Pilns"</string>
diff --git a/packages/SettingsLib/res/values-mk/strings.xml b/packages/SettingsLib/res/values-mk/strings.xml
index 288e526..21b2f96 100644
--- a/packages/SettingsLib/res/values-mk/strings.xml
+++ b/packages/SettingsLib/res/values-mk/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Поврзано преку <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Достапно преку %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Допрете за да се регистрирате"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Поврзана, нема интернет"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Нема интернет"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Не може да се пристапи до приватниот DNS-сервер"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ограничена врска"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Нема интернет"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (слепило за црвена и зелена)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (слепило за сина и жолта)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција на бои"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Корекцијата на бои им помага на луѓето со далтонизам попрецизно да ги гледаат боите"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Прескокнато според <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Уште околу <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> до целосно полнење"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Непознато"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Се полни"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"се полни"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не се полни"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Приклучен е, но батеријата не може да се полни во моментов"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Полна"</string>
diff --git a/packages/SettingsLib/res/values-ml/strings.xml b/packages/SettingsLib/res/values-ml/strings.xml
index e775297..85aa000 100644
--- a/packages/SettingsLib/res/values-ml/strings.xml
+++ b/packages/SettingsLib/res/values-ml/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> മുഖേന കണക്‌റ്റ് ചെയ്‌തു"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s വഴി ലഭ്യം"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"സൈൻ അപ്പ് ചെയ്യാൻ ടാപ്പ് ചെയ്യുക"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"കണക്റ്റ് ചെയ്‌തു, ഇന്റർനെറ്റ് ഇല്ല"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ഇന്റർനെറ്റ് ഇല്ല"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"സ്വകാര്യ DNS സെർവർ ആക്‌സസ് ചെയ്യാനാവില്ല"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"പരിമിത കണക്‌ഷൻ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ഇന്റർനെറ്റ് ഇല്ല"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"പ്രോട്ടാനോമലി (ചുവപ്പ്-പച്ച)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ട്രിട്ടാനോമലി (നീല-മഞ്ഞ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"വർണ്ണം ക്രമീകരിക്കൽ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"വർണ്ണം ശരിയാക്കൽ, വർണ്ണാന്ധത ബാധിച്ച ആളുകൾക്ക് നിറങ്ങൾ കൂടുതൽ കൃത്യമായി കാണാൻ സഹായിക്കുന്നു"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ഉപയോഗിച്ച് അസാധുവാക്കി"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"ഏതാണ്ട് <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ശേഷിക്കുന്നു"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - പൂർണ്ണമായി ചാർജാവാൻ <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"അജ്ഞാതം"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ചാർജ് ചെയ്യുന്നു"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ചാർജ് ചെയ്യുന്നു"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ചാർജ്ജുചെയ്യുന്നില്ല"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"പ്ലഗ് ഇൻ ചെയ്‌തു, ഇപ്പോൾ ചാർജ് ചെയ്യാനാവില്ല"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"നിറഞ്ഞു"</string>
diff --git a/packages/SettingsLib/res/values-mn/strings.xml b/packages/SettingsLib/res/values-mn/strings.xml
index ba69f9b..232148a 100644
--- a/packages/SettingsLib/res/values-mn/strings.xml
+++ b/packages/SettingsLib/res/values-mn/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g>-р холбогдсон"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s-р боломжтой"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Бүртгүүлэхийн тулд товшино уу"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Холбогдсон хэдий ч интернет алга"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Интернэт алга"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Хувийн DNS серверт хандах боломжгүй байна"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Хязгаарлагдмал холболт"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Интернэт алга"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномаль (улаан-ногоон)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомаль (цэнхэр-шар)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Өнгө тохируулах"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Өнгөний залруулга нь өнгөний сохортой хүмүүст илүү оновчтой өнгө харахад тусалдаг"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Давхарласан <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Ойролцоогоор <xliff:g id="TIME_REMAINING">%1$s</xliff:g> үлдсэн"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - цэнэглэх хүртэл <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Тодорхойгүй"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Цэнэглэж байна"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"цэнэглэж байна"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Цэнэглэхгүй байна"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Залгаастай тул одоо цэнэглэх боломжгүй"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Дүүрэн"</string>
diff --git a/packages/SettingsLib/res/values-mr/strings.xml b/packages/SettingsLib/res/values-mr/strings.xml
index 1930cdf..8767b4f 100644
--- a/packages/SettingsLib/res/values-mr/strings.xml
+++ b/packages/SettingsLib/res/values-mr/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> द्वारे कनेक्ट केले"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s द्वारे उपलब्‍ध"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"साइन अप करण्यासाठी टॅप करा"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"कनेक्‍ट केले, इंटरनेट नाही"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"इंटरनेट नाही"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"खाजगी DNS सर्व्हर ॲक्सेस करू शकत नाही"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"मर्यादित कनेक्शन"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"इंटरनेट नाही"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"क्षीण रक्तवर्णांधता (लाल-हिरवा)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"रंग दृष्टी कमतरता (निळा-पिवळा)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रंग सुधारणा"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"रंग सुधारणा ही वर्णांधता असलेल्या लोकांना रंग अधिक अचूक दिसण्यात मदत करते"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारे अधिलिखित"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"अंदाजे <xliff:g id="TIME_REMAINING">%1$s</xliff:g> बाकी आहे"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> पर्यंत पूर्ण चार्ज होईल"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज होत आहे"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"चार्ज होत आहे"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज होत नाही"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लग इन केलेले आहे, आता चार्ज करू शकत नाही"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"पूर्ण"</string>
diff --git a/packages/SettingsLib/res/values-ms/strings.xml b/packages/SettingsLib/res/values-ms/strings.xml
index e493188..b79b801 100644
--- a/packages/SettingsLib/res/values-ms/strings.xml
+++ b/packages/SettingsLib/res/values-ms/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Disambungkan melalui <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Tersedia melalui %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Ketik untuk daftar"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Disambungkan, tiada Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Tiada Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Pelayan DNS peribadi tidak boleh diakses"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Sambungan terhad"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Tiada Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (merah-hijau)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (biru-kuning)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Pembetulan warna"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Pembetulan warna membantu orang yang mengalami kebutaan warna melihat warna yang lebih tepat"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Diatasi oleh <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Kira-kira <xliff:g id="TIME_REMAINING">%1$s</xliff:g> lagi"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> sehingga dicas"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Tidak diketahui"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Mengecas"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"mengecas"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Tidak mengecas"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Dipalamkan, tidak boleh mengecas sekarang"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Penuh"</string>
diff --git a/packages/SettingsLib/res/values-my/strings.xml b/packages/SettingsLib/res/values-my/strings.xml
index 2c4b32c..b2ad664 100644
--- a/packages/SettingsLib/res/values-my/strings.xml
+++ b/packages/SettingsLib/res/values-my/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> မှတစ်ဆင့် ချိတ်ဆက်ထားသည်"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s မှတစ်ဆင့်ရနိုင်သည်"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"အကောင့်ဖွင့်ရန် တို့ပါ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ချိတ်ဆက်ထားသည်၊ အင်တာနက်မရှိ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"အင်တာနက် မရှိပါ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"သီးသန့် ဒီအန်အက်စ် (DNS) ဆာဗာကို သုံး၍မရပါ။"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ချိတ်ဆက်မှု ကန့်သတ်ထားသည်"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"အင်တာနက် မရှိပါ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (အနီ-အစိမ်း)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (အပြာ-အဝါ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"အရောင်ပြင်ဆင်မှု"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"အရောင်ပြင်ဆင်ခြင်းက အရောင်ကန်းသူများအတွက် ပိုမိုမှန်ကန်သော အရောင်များဖြင့် ကြည့်နိုင်ရန် ကူညီမည်"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> မှ ကျော်၍ လုပ်ထားသည်။"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ခန့် ကျန်သည်"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - အားပြည့်ရန် <xliff:g id="TIME">%2$s</xliff:g> ကျန်သည်"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"မသိ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"အားသွင်းနေပါသည်"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"အားသွင်းနေပါသည်"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"အားသွင်းမနေပါ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ပလပ်ထိုးထားသောကြောင့် ယခုအားသွင်း၍ မရသေးပါ"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"အပြည့်"</string>
diff --git a/packages/SettingsLib/res/values-nb/strings.xml b/packages/SettingsLib/res/values-nb/strings.xml
index 093c06f..6a1f158 100644
--- a/packages/SettingsLib/res/values-nb/strings.xml
+++ b/packages/SettingsLib/res/values-nb/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Tilkoblet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Tilgjengelig via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Trykk for å registrere deg"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Tilkoblet – ingen Internett-tilgang"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Ingen internettilkobling"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Den private DNS-tjeneren kan ikke nås"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Begrenset tilkobling"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Ingen internettilkobling"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (rød-grønn)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (blå-gul)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Fargekorrigering"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Med fargekorrigering kan personer med fargeblindhet se mer nøyaktige farger"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overstyres av <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Omtrent <xliff:g id="TIME_REMAINING">%1$s</xliff:g> gjenstår"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> til batteriet er fulladet"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Ukjent"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Lader"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"lader"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Lader ikke"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Laderen er koblet til – kan ikke lade akkurat nå"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Fullt"</string>
diff --git a/packages/SettingsLib/res/values-ne/strings.xml b/packages/SettingsLib/res/values-ne/strings.xml
index fb8b737..9cd5e20 100644
--- a/packages/SettingsLib/res/values-ne/strings.xml
+++ b/packages/SettingsLib/res/values-ne/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> मार्फत जडान गरिएको"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s मार्फत उपलब्ध"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"साइन अप गर्न ट्याप गर्नुहोस्"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"जडान गरियो तर इन्टरनेट छैन"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"इन्टरनेट छैन"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"निजी DNS सर्भरमाथि पहुँच प्राप्त गर्न सकिँदैन"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"सीमित जडान"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"इन्टरनेटमाथिको पहुँच छैन"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"प्रोटानेमली (रातो, हरियो)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ट्रिटानोमेली (निलो-पंहेलो)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"रङ्ग सुधार"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"रङ सुधार गर्नुले रङ छुट्याउन नसक्ने मान्छेलाई थप सही रङ देख्न मद्दत गर्दछ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> द्वारा अधिरोहित"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"लगभग <xliff:g id="TIME_REMAINING">%1$s</xliff:g> बाँकी छ"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"पूर्ण चार्ज हुन <xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> लाग्छ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"अज्ञात"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"चार्ज हुँदै"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"चार्ज हुँदै"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"चार्ज भइरहेको छैन"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"प्लगइन गरिएको छ, अहिले नै चार्ज गर्न सकिँदैन"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"पूर्ण चार्ज भएको स्थिति"</string>
diff --git a/packages/SettingsLib/res/values-nl/strings.xml b/packages/SettingsLib/res/values-nl/strings.xml
index 267dab4..8d5dea4 100644
--- a/packages/SettingsLib/res/values-nl/strings.xml
+++ b/packages/SettingsLib/res/values-nl/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Verbonden via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Beschikbaar via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tik om aan te melden"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Verbonden, geen internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Geen internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Geen toegang tot privé-DNS-server"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Beperkte verbinding"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Geen internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (rood-groen)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (blauw-geel)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Kleurcorrectie"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Met behulp van kleurcorrectie kunnen mensen die kleurenblind zijn, nauwkeurigere kleuren te zien krijgen"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Overschreven door <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Nog ongeveer <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> tot opgeladen"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Onbekend"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Opladen"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"opladen"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Wordt niet opgeladen"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Aangesloten, kan nu niet opladen"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Volledig"</string>
diff --git a/packages/SettingsLib/res/values-or/strings.xml b/packages/SettingsLib/res/values-or/strings.xml
index d8ae3bf..c0489c1 100644
--- a/packages/SettingsLib/res/values-or/strings.xml
+++ b/packages/SettingsLib/res/values-or/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ଦ୍ବାରା ସଂଯୋଗ କରାଯାଇଛି"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s ମାଧ୍ୟମରେ ଉପଲବ୍ଧ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ସାଇନ୍ ଅପ୍ ପାଇଁ ଟାପ୍ କରନ୍ତୁ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ସଂଯୁକ୍ତ, ଇଣ୍ଟର୍‌ନେଟ୍‌ ନାହିଁ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ଇଣ୍ଟର୍ନେଟ୍ ସଂଯୋଗ ନାହିଁ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ବ୍ୟକ୍ତିଗତ DNS ସର୍ଭର୍ ଆକ୍ସେସ୍ କରିହେବ ନାହିଁ"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ସୀମିତ ସଂଯୋଗ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"କୌଣସି ଇଣ୍ଟରନେଟ୍‌ ନାହିଁ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ପ୍ରୋଟାନୋମାଲି (ଲାଲ୍‌-ସବୁଜ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ନୀଳ-ହଳଦିଆ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ରଙ୍ଗ ସଠିକତା"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"କଲର୍ କରେକ୍ସନ୍ ରଙ୍ଗ ଚିହ୍ନିବାରେ ସମସ୍ୟା ଥିବା ଲୋକମାନଙ୍କୁ ଅଧିକ ସଠିକ୍ ରଙ୍ଗ ଦେଖିବାରେ ସାହାଯ୍ୟ କରିଥାଏ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ଦ୍ୱାରା ଓଭର୍‌ରାଇଡ୍‌ କରାଯାଇଛି"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"ପାଖାପାଖି <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ବଳକା ଅଛି"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ଚାର୍ଜ ହେବା ପର୍ଯ୍ୟନ୍ତ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ଅଜ୍ଞାତ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ଚାର୍ଜ ହେଉଛି"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ଚାର୍ଜ ହେଉଛି"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ଚାର୍ଜ ହେଉନାହିଁ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ପ୍ଲଗ୍‌ରେ ଲାଗିଛି, ହେଲେ ଏବେ ଚାର୍ଜ କରିପାରିବ ନାହିଁ"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ଚାର୍ଜ ସମ୍ପୂର୍ଣ୍ଣ"</string>
diff --git a/packages/SettingsLib/res/values-pa/strings.xml b/packages/SettingsLib/res/values-pa/strings.xml
index 6a78486..7355418 100644
--- a/packages/SettingsLib/res/values-pa/strings.xml
+++ b/packages/SettingsLib/res/values-pa/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ਰਾਹੀਂ ਕਨੈਕਟ ਕੀਤਾ ਗਿਆ"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s ਰਾਹੀਂ ਉਪਲਬਧ"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ਸਾਈਨ-ਅੱਪ ਕਰਨ ਲਈ ਟੈਪ ਕਰੋ"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"ਕਨੈਕਟ ਕੀਤਾ, ਕੋਈ ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ਨਿੱਜੀ ਡੋਮੇਨ ਨਾਮ ਪ੍ਰਣਾਲੀ (DNS) ਸਰਵਰ \'ਤੇ ਪਹੁੰਚ ਨਹੀਂ ਕੀਤੀ ਜਾ ਸਕੀ"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"ਸੀਮਤ ਕਨੈਕਸ਼ਨ"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ਇੰਟਰਨੈੱਟ ਨਹੀਂ"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (ਲਾਲ-ਹਰਾ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (ਨੀਲਾ-ਪੀਲਾ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"ਰੰਗ ਸੁਧਾਈ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"ਰੰਗ ਸੁਧਾਈ ਨਾਲ ਰੰਗਾਂ ਦੇ ਅੰਨ੍ਹਾਪਣ ਦੇ ਸ਼ਿਕਾਰ ਲੋਕਾਂ ਦੀ ਵਧੇਰੇ ਸਟੀਕ ਰੰਗਾਂ ਨੂੰ ਦੇਖਣ ਵਿੱਚ ਮਦਦ ਕੀਤੀ ਜਾਂਦੀ ਹੈ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ਦੁਆਰਾ ਓਵਰਰਾਈਡ ਕੀਤਾ"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"ਲਗਭਗ <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ਬਾਕੀ"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ਤੱਕ ਚਾਰਜ ਹੋ ਜਾਵੇਗੀ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ਅਗਿਆਤ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ਚਾਰਜ ਹੋ ਰਿਹਾ ਹੈ"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ਚਾਰਜ ਕੀਤਾ ਜਾ ਰਿਹਾ ਹੈ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ਚਾਰਜ ਨਹੀਂ ਹੋ ਰਿਹਾ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ਪਲੱਗ ਲੱਗਾ ਹੋਇਆ ਹੈ, ਇਸ ਸਮੇਂ ਚਾਰਜ ਨਹੀਂ ਹੋ ਸਕਦੀ"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"ਪੂਰੀ"</string>
diff --git a/packages/SettingsLib/res/values-pl/strings.xml b/packages/SettingsLib/res/values-pl/strings.xml
index 8c5547c..a3ccb07 100644
--- a/packages/SettingsLib/res/values-pl/strings.xml
+++ b/packages/SettingsLib/res/values-pl/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Połączenie przez: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Dostępne przez %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Kliknij, by się zarejestrować"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Połączono, brak internetu"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Brak internetu"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Brak dostępu do prywatnego serwera DNS"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ograniczone połączenie"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Brak internetu"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (czerwony-zielony)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (niebieski-żółty)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korekcja kolorów"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korekcja kolorów pomaga osobom z zaburzeniami rozpoznawania barw lepiej je widzieć."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Nadpisana przez <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Jeszcze około <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – do naładowania <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Nieznane"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Ładowanie"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ładowanie"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nie podłączony"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Podłączony. Nie można teraz ładować"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Naładowana"</string>
diff --git a/packages/SettingsLib/res/values-pt-rBR/strings.xml b/packages/SettingsLib/res/values-pt-rBR/strings.xml
index 8c03616..f4182bf 100644
--- a/packages/SettingsLib/res/values-pt-rBR/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rBR/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponível via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toque para se inscrever"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conectada, sem Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sem Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Não é possível acessar o servidor DNS privado"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Conexão limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sem Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção de cor"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"A correção de cores ajuda pessoas com daltonismo a ver cores de forma mais precisa"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> até a carga completa"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Carregando"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"carregando"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está carregando"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. Não é possível carregar no momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Carregada"</string>
diff --git a/packages/SettingsLib/res/values-pt-rPT/strings.xml b/packages/SettingsLib/res/values-pt-rPT/strings.xml
index 6aeff1c..2f206d4 100644
--- a/packages/SettingsLib/res/values-pt-rPT/strings.xml
+++ b/packages/SettingsLib/res/values-pt-rPT/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Ligado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponível através de %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toque para se inscrever"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Ligado, sem Internet."</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sem Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Não é possível aceder ao servidor DNS."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ligação limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sem Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção da cor"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"A correção de cor ajuda as pessoas com daltonismo a ver cores mais precisas."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Resta(m) cerca de <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> até ficar carregada"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"A carregar"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"a carregar…"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está a carregar"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ligada à corrente, não é possível carregar neste momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Completo"</string>
diff --git a/packages/SettingsLib/res/values-pt/strings.xml b/packages/SettingsLib/res/values-pt/strings.xml
index 8c03616..f4182bf 100644
--- a/packages/SettingsLib/res/values-pt/strings.xml
+++ b/packages/SettingsLib/res/values-pt/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Conectado via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponível via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Toque para se inscrever"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conectada, sem Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Sem Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Não é possível acessar o servidor DNS privado"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Conexão limitada"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Sem Internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalia (vermelho-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalia (azul-amarelo)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Correção de cor"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"A correção de cores ajuda pessoas com daltonismo a ver cores de forma mais precisa"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Substituído por <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Tempo restante aproximado: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g>: <xliff:g id="TIME">%2$s</xliff:g> até a carga completa"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Desconhecido"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Carregando"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"carregando"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Não está carregando"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectado. Não é possível carregar no momento"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Carregada"</string>
diff --git a/packages/SettingsLib/res/values-ro/strings.xml b/packages/SettingsLib/res/values-ro/strings.xml
index 387441f..6e8bbd1 100644
--- a/packages/SettingsLib/res/values-ro/strings.xml
+++ b/packages/SettingsLib/res/values-ro/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Conectat prin <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Disponibilă prin %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Atingeți pentru a vă înscrie"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Conectată, fără internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Fără conexiune la internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Serverul DNS privat nu poate fi accesat"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Conexiune limitată"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Fără conexiune la internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalie (roșu-verde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalie (albastru-galben)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Corecția culorii"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Corecția culorii ajută persoanele cu daltonism să vadă culori mai exacte"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Valoare înlocuită de <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Timp aproximativ rămas: <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> până la încărcare"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Necunoscut"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Se încarcă"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"se încarcă"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nu se încarcă"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Conectat, nu se poate încărca chiar acum"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Complet"</string>
diff --git a/packages/SettingsLib/res/values-ru/strings.xml b/packages/SettingsLib/res/values-ru/strings.xml
index 361e29f..87831c7 100644
--- a/packages/SettingsLib/res/values-ru/strings.xml
+++ b/packages/SettingsLib/res/values-ru/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Подключено через приложение \"<xliff:g id="NAME">%1$s</xliff:g>\"."</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Доступно через %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Нажмите, чтобы зарегистрироваться"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Подключено, без доступа к Интернету"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Нет подключения к Интернету"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Доступа к частному DNS-серверу нет."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Подключение к сети ограничено."</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Нет подключения к Интернету"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалия (красный/зеленый)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалия (синий/желтый)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Коррекция цвета"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Коррекция цвета помогает пользователям с нарушениями цветового зрения лучше различать изображение на экране."</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Новая настройка: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"Уровень заряда – <xliff:g id="PERCENTAGE">%1$s</xliff:g>. <xliff:g id="TIME_STRING">%2$s</xliff:g>."</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Заряда хватит примерно на <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до полной зарядки"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Неизвестно"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Идет зарядка"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"заряжается"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не заряжается"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Подключено, не заряжается"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Батарея заряжена"</string>
diff --git a/packages/SettingsLib/res/values-si/strings.xml b/packages/SettingsLib/res/values-si/strings.xml
index faa848f..f0a823a 100644
--- a/packages/SettingsLib/res/values-si/strings.xml
+++ b/packages/SettingsLib/res/values-si/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> හරහා සම්බන්ධයි"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s හරහා ලබා ගැනීමට හැකිය"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"ලියාපදිංචි වීමට තට්ටු කරන්න"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"සම්බන්ධයි, අන්තර්ජාලය නැත"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"අන්තර්ජාලය නැත"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"පුද්ගලික DNS සේවාදායකයට ප්‍රවේශ වීමට නොහැකිය"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"සීමිත සම්බන්ධතාව"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"අන්තර්ජාලය නැත"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"වර්ණ දුර්වලතාවය (රතු-කොළ)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"වර්ණ අන්ධතාවය (නිල්-කහ)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"වර්ණ නිවැරදි කිරීම"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"වර්ණ අන්ධතාවෙන් පෙළෙන පුද්ගලයන්ට වඩාත් නිරවද්‍ය වර්ණ බැලීමට වර්ණ නිවැරදි කිරීම සහාය වේ"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> මගින් ඉක්මවන ලදී"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> ක් පමණ ඉතිරියි"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - ආරෝපණය වන තෙක් <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"නොදනී"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ආරෝපණය වෙමින්"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ආරෝපණය වේ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ආරෝපණය නොවේ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"පේනුගත කර ඇත, මේ අවස්ථාවේදී ආරෝපණය කළ නොහැකිය"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"පූර්ණ"</string>
diff --git a/packages/SettingsLib/res/values-sk/strings.xml b/packages/SettingsLib/res/values-sk/strings.xml
index 2035d88c..fc2ba1d 100644
--- a/packages/SettingsLib/res/values-sk/strings.xml
+++ b/packages/SettingsLib/res/values-sk/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Pripojené prostredníctvom siete <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"K dispozícii prostredníctvom %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Prihláste sa klepnutím"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Pripojené, žiadny internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Bez internetu"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"K súkromnému serveru DNS sa nepodarilo získať prístup"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Obmedzené pripojenie"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Žiadny internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomália (červená a zelená)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomália (modrá a žltá)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Úprava farieb"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korekcia farieb pomáha farboslepým ľuďom vidieť presnejšie farby"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Prekonané predvoľbou <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zostáva približne <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do úplného nabitia"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznáme"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Nabíja sa"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"nabíja sa"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nenabíja sa"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Pripojené, ale nie je možné nabíjať"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Nabitá"</string>
diff --git a/packages/SettingsLib/res/values-sl/strings.xml b/packages/SettingsLib/res/values-sl/strings.xml
index 2889619..cda2e06 100644
--- a/packages/SettingsLib/res/values-sl/strings.xml
+++ b/packages/SettingsLib/res/values-sl/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Povezava vzpostavljena prek omrežja <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Na voljo prek: %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Dotaknite se, če se želite registrirati"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Vzpostavljena povezava, brez interneta"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Ni internetne povezave"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Do zasebnega strežnika DNS ni mogoče dostopati"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Omejena povezava"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Brez internetne povezave"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomalija (rdeča – zelena)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomalija (modra – rumena)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Popravljanje barv"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Popravljanje barv osebam z barvno slepoto pomaga, da vidijo bolj prave barve"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Preglasila nastavitev: <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Še približno <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> do polne napolnjenosti"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Neznano"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Polnjenje"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"polnjenje"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Se ne polni"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Priključeno, trenutno ni mogoče polniti"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Poln"</string>
diff --git a/packages/SettingsLib/res/values-sq/strings.xml b/packages/SettingsLib/res/values-sq/strings.xml
index ccd4e306..9854017 100644
--- a/packages/SettingsLib/res/values-sq/strings.xml
+++ b/packages/SettingsLib/res/values-sq/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Lidhur përmes <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"E mundshme përmes %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Trokit për t\'u regjistruar"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"U lidh, por nuk ka internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Nuk ka internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Serveri privat DNS nuk mund të qaset"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Lidhje e kufizuar"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Nuk ka internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (e kuqe - e gjelbër)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (e kaltër - e verdhë)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Korrigjimi i ngjyrës"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Korrigjimi i ngjyrës i ndihmon njerëzit me daltonizëm të shohin ngjyra më të sakta"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Mbivendosur nga <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Rreth <xliff:g id="TIME_REMAINING">%1$s</xliff:g> të mbetura"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> deri sa të karikohen"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"I panjohur"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Po karikohet"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"po karikohet"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Nuk po karikohet"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Në prizë, por nuk mund të ngarkohet për momentin"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"E mbushur"</string>
diff --git a/packages/SettingsLib/res/values-sr/strings.xml b/packages/SettingsLib/res/values-sr/strings.xml
index 08e2bc8..b59a568 100644
--- a/packages/SettingsLib/res/values-sr/strings.xml
+++ b/packages/SettingsLib/res/values-sr/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Повезано преко: <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Доступна је преко приступне тачке %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Додирните да бисте се регистровали"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Веза је успостављена, нема интернета"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Нема интернета"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Приступ приватном DNS серверу није успео"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Ограничена веза"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Нема интернета"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалија (црвено-зелено)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалија (плаво-жуто)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекција боја"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Корекција боја помаже људима који су далтонисти да прецизније виде боје"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замењује га <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g>–<xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Преостало је око <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – напуниће се за <xliff:g id="TIME">%2$s</xliff:g>"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Непознато"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Пуни се"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"пуни се"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не пуни се"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Прикључено је, али пуњење тренутно није могуће"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Пуна"</string>
diff --git a/packages/SettingsLib/res/values-sv/strings.xml b/packages/SettingsLib/res/values-sv/strings.xml
index c0cdbc9..f9ed6d4 100644
--- a/packages/SettingsLib/res/values-sv/strings.xml
+++ b/packages/SettingsLib/res/values-sv/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Anslutet via <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Tillgängligt via %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Tryck för att logga in"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Ansluten, inget internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Inget internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Det går inte att komma åt den privata DNS-servern."</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Begränsad anslutning"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Inget internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomali (rött-grönt)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomali (blått-gult)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Färgkorrigering"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Med färgkorrigering kan färgblinda personer se mer korrekta färger"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Har åsidosatts av <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Cirka <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kvar"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> till full laddning"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Okänd"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Laddar"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"laddas"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Laddar inte"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Inkopplad, kan inte laddas just nu"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Fullt"</string>
diff --git a/packages/SettingsLib/res/values-sw/strings.xml b/packages/SettingsLib/res/values-sw/strings.xml
index f00dea3..40e025a 100644
--- a/packages/SettingsLib/res/values-sw/strings.xml
+++ b/packages/SettingsLib/res/values-sw/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Imeunganishwa kupitia <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Inapatikana kupitia %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Gusa ili ujisajili"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Imeunganishwa, hakuna intaneti"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Hakuna intaneti"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Seva ya faragha ya DNS haiwezi kufikiwa"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Muunganisho hafifu"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Hakuna intaneti"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (nyekundu-kijani)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (samawati-manjano)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Usahihishaji wa rangi"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Urekebishaji wa rangi huwasaidia watu wenye matatizo ya kutofautisha rangi ili waone rangi nyingi sahihi"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Imetanguliwa na <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Zimesalia takribani <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> hadi ijae chaji"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Haijulikani"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Inachaji"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"inachaji"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Haichaji"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Haiwezi kuchaji kwa sasa"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Imejaa"</string>
diff --git a/packages/SettingsLib/res/values-ta/strings.xml b/packages/SettingsLib/res/values-ta/strings.xml
index 52e0363..36a92ed 100644
--- a/packages/SettingsLib/res/values-ta/strings.xml
+++ b/packages/SettingsLib/res/values-ta/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> மூலம் இணைக்கப்பட்டது"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s வழியாகக் கிடைக்கிறது"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"பதிவு செய்யத் தட்டவும்"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"இணைக்கப்பட்டுள்ளது, ஆனால் இண்டர்நெட் இல்லை"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"இணைய இணைப்பு இல்லை"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"தனிப்பட்ட DNS சேவையகத்தை அணுக இயலாது"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"வரம்பிற்கு உட்பட்ட இணைப்பு"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"இணைய இணைப்பு இல்லை"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"நிறம் அடையாளங்காண முடியாமை (சிவப்பு-பச்சை)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"நிறம் அடையாளங்காண முடியாமை (நீலம்-மஞ்சள்)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"வண்ணத்திருத்தம்"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"வண்ணத் திருத்தத்தால் நிறக்குருடு உள்ளவர்களால் வண்ணங்களை இன்னும் துல்லியமாகப் பார்க்க முடியும்"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> மூலம் மேலெழுதப்பட்டது"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"கிட்டத்தட்ட <xliff:g id="TIME_REMAINING">%1$s</xliff:g> மீதமுள்ளது"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - முழு சார்ஜாக <xliff:g id="TIME">%2$s</xliff:g> ஆகும்"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"அறியப்படாத"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"சார்ஜ் ஆகிறது"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"சார்ஜ் ஆகிறது"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"சார்ஜ் செய்யப்படவில்லை"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"செருகப்பட்டது, ஆனால் இப்போது சார்ஜ் செய்ய முடியவில்லை"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"முழுவதும் சார்ஜ் ஆனது"</string>
diff --git a/packages/SettingsLib/res/values-te/strings.xml b/packages/SettingsLib/res/values-te/strings.xml
index a39c4e1..5ea380c 100644
--- a/packages/SettingsLib/res/values-te/strings.xml
+++ b/packages/SettingsLib/res/values-te/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ద్వారా కనెక్ట్ చేయబడింది"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s ద్వారా అందుబాటులో ఉంది"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"సైన్ అప్ చేయడానికి నొక్కండి"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"కనెక్ట్ చేయబడింది, ఇంటర్నెట్ లేదు"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ఇంటర్నెట్ లేదు"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"ప్రైవేట్ DNS సర్వర్‌ను యాక్సెస్ చేయడం సాధ్యపడదు"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"పరిమిత కనెక్షన్"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ఇంటర్నెట్ లేదు"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ప్రొటానోమలీ (ఎరుపు-ఆకుపచ్చ రంగు)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ట్రైటనోమలీ (నీలం-పసుపు రంగు)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"రంగు సవరణ"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"రంగు సవరణ అనేది వర్ణాంధత్వం ఉన్న వ్యక్తులకు మరింత ఖచ్చితమైన రంగులను చూడడానికి సహాయపడుతుంది"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> ద్వారా భర్తీ చేయబడింది"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"<xliff:g id="TIME_REMAINING">%1$s</xliff:g> సమయం మిగిలి ఉంది"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - ఛార్జ్ అవ్వడానికి <xliff:g id="TIME">%2$s</xliff:g> పడుతుంది"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"తెలియదు"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"ఛార్జ్ అవుతోంది"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"ఛార్జ్ అవుతోంది"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ఛార్జ్ కావడం లేదు"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"ప్లగ్ ఇన్ చేయబడింది, ప్రస్తుతం ఛార్జ్ చేయడం సాధ్యం కాదు"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"నిండింది"</string>
diff --git a/packages/SettingsLib/res/values-th/strings.xml b/packages/SettingsLib/res/values-th/strings.xml
index 635d77a..15e74ae 100644
--- a/packages/SettingsLib/res/values-th/strings.xml
+++ b/packages/SettingsLib/res/values-th/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"เชื่อมต่อแล้วผ่าน <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"พร้อมใช้งานผ่านทาง %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"แตะเพื่อลงชื่อสมัครใช้"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"เชื่อมต่อแล้ว ไม่พบอินเทอร์เน็ต"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"ไม่มีอินเทอร์เน็ต"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"เข้าถึงเซิร์ฟเวอร์ DNS ไม่ได้"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"การเชื่อมต่อที่จำกัด"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"ไม่มีอินเทอร์เน็ต"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"ตาบอดจางสีแดง (สีแดง/เขียว)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"ตาบอดจางสีน้ำเงิน (สีน้ำเงิน/เหลือง)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"การแก้สี"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"การแก้ไขสีช่วยให้ผู้ที่มีอาการตาบอดสีเห็นสีต่างๆ ได้ตรงตามจริงยิ่งขึ้น"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"แทนที่โดย <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"เหลืออีกประมาณ <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> จนกว่าจะชาร์จ"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"ไม่ทราบ"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"กำลังชาร์จ"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"กำลังชาร์จ"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"ไม่ได้ชาร์จ"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"เสียบอยู่ ไม่สามารถชาร์จได้ในขณะนี้"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"เต็ม"</string>
diff --git a/packages/SettingsLib/res/values-tl/strings.xml b/packages/SettingsLib/res/values-tl/strings.xml
index 3f7f0ff..8012244 100644
--- a/packages/SettingsLib/res/values-tl/strings.xml
+++ b/packages/SettingsLib/res/values-tl/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Nakakonekta sa pamamagitan ng <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Available sa pamamagitan ng %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"I-tap para mag-sign up"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Nakakonekta, walang internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Walang internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Hindi ma-access ang pribadong DNS server"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Limitadong koneksyon"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Walang internet"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaly (pula-berde)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaly (asul-dilaw)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Pagtatama ng kulay"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Ang pagwawasto ng kulay ay nakakatulong sa mga taong may color blindness na makita ang mga mas tamang kulay"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Na-override ng <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Humigit-kumulang <xliff:g id="TIME_REMAINING">%1$s</xliff:g> ang natitira"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> hanggang matapos mag-charge"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Hindi Kilala"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Nagcha-charge"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"nagcha-charge"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Hindi nagcha-charge"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Nakasaksak, hindi makapag-charge sa ngayon"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Puno"</string>
diff --git a/packages/SettingsLib/res/values-tr/strings.xml b/packages/SettingsLib/res/values-tr/strings.xml
index 7ad6fcd..b83ffcb 100644
--- a/packages/SettingsLib/res/values-tr/strings.xml
+++ b/packages/SettingsLib/res/values-tr/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> ile bağlandı"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s üzerinden kullanılabilir"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Kaydolmak için dokunun"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Bağlı, internet yok"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"İnternet yok"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Gizli DNS sunucusuna erişilemiyor"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Sınırlı bağlantı"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"İnternet yok"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Kırmızı renk körlüğü (kırmızı-yeşil)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Mavi renk körlüğü (mavi-sarı)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Renk düzeltme"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Renk düzeltme, renk körlüğü olan kişilerin daha doğru renkler görmelerine yardımcı olur"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> tarafından geçersiz kılındı"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Yaklaşık <xliff:g id="TIME_REMAINING">%1$s</xliff:g> kaldı"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - şarj olmaya <xliff:g id="TIME">%2$s</xliff:g> kaldı"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Bilinmiyor"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Şarj oluyor"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"şarj oluyor"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Şarj olmuyor"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Prize takıldı, şu anda şarj olamıyor"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Dolu"</string>
diff --git a/packages/SettingsLib/res/values-uk/strings.xml b/packages/SettingsLib/res/values-uk/strings.xml
index b5dd618..5fb46f8 100644
--- a/packages/SettingsLib/res/values-uk/strings.xml
+++ b/packages/SettingsLib/res/values-uk/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Підключено через додаток <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Доступ через %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Торкніться, щоб увійти"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Під’єднано, але немає доступу до Інтернету"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Немає Інтернету"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Немає доступу до приватного DNS-сервера"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Обмежене з’єднання"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Немає Інтернету"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Протаномалія (червоний – зелений)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Тританомалія (синій – жовтий)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Корекція кольору"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Корекція кольору допомагає людям із дальтонізмом бачити точніші кольори"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Замінено на <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Залишилося приблизно <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> до повного заряду"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Невідомо"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Заряджається"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"заряджається"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Не заряджається"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Підключено. Не вдається зарядити"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Акумулятор заряджено"</string>
diff --git a/packages/SettingsLib/res/values-ur/strings.xml b/packages/SettingsLib/res/values-ur/strings.xml
index ef9b2a1..c6c10f0 100644
--- a/packages/SettingsLib/res/values-ur/strings.xml
+++ b/packages/SettingsLib/res/values-ur/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> کے ذریعے منسلک"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"‏دستیاب بذریعہ ‎%1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"سائن اپ کے لیے تھپتھپائیں"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"منسلک، انٹرنیٹ نہیں ہے"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"انٹرنیٹ نہیں ہے"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"‏نجی DNS سرور تک رسائی حاصل نہیں کی جا سکی"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"محدود کنکشن"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"انٹرنیٹ نہیں ہے"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"‏Protanomaly (سرخ سبز)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"‏Tritanomaly (نیلا پیلا)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"رنگ کی اصلاح"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"رنگ کی درستگی رنگ نہ دکھائی دینے والے لوگوں کی رنگوں کو مزید درست طریقے سے دیکھنے میں مدد کرتی ہے"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> کے ذریعہ منسوخ کردیا گیا"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"تقریباً <xliff:g id="TIME_REMAINING">%1$s</xliff:g> باقی ہے"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> چارج ہونے تک"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"نامعلوم"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"چارج ہو رہا ہے"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"چارج ہو رہا ہے"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"چارج نہیں ہو رہا ہے"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"پلگ ان ہے، ابھی چارج نہیں کر سکتے"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"مکمل"</string>
diff --git a/packages/SettingsLib/res/values-uz/strings.xml b/packages/SettingsLib/res/values-uz/strings.xml
index b202d64..07a6249 100644
--- a/packages/SettingsLib/res/values-uz/strings.xml
+++ b/packages/SettingsLib/res/values-uz/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"<xliff:g id="NAME">%1$s</xliff:g> orqali ulandi"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"%1$s orqali ishlaydi"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Yozilish uchun bosing"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Ulangan, lekin internet aloqasi yo‘q"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Internetga ulanmagansiz"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Xususiy DNS server ishlamayapti"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Cheklangan aloqa"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Internet yo‘q"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Protanomaliya (qizil/yashil)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Tritanomaliya (ko‘k/sariq)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Rangni tuzatish"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Ranglarni sozlash ranglarni farqlashda muammosi bor insonlarga (masalan, daltoniklarga) aniq koʻrishda yordam beradi"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"<xliff:g id="TITLE">%1$s</xliff:g> bilan almashtirildi"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> – <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Taxminan <xliff:g id="TIME_REMAINING">%1$s</xliff:g> qoldi"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> ichida toʻliq quvvat oladi"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Noma’lum"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Quvvat olmoqda"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"quvvat olmoqda"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Quvvat olmayapti"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Ulangan, lekin quvvat olmayapti"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"To‘la"</string>
diff --git a/packages/SettingsLib/res/values-vi/strings.xml b/packages/SettingsLib/res/values-vi/strings.xml
index cda42d3..7e3944c 100644
--- a/packages/SettingsLib/res/values-vi/strings.xml
+++ b/packages/SettingsLib/res/values-vi/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Đã kết nối qua <xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Có sẵn qua %1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Nhấn để đăng ký"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Đã kết nối, không có Internet"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Không có Internet"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Không thể truy cập máy chủ DNS riêng tư"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Kết nối giới hạn"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Không có Internet"</string>
@@ -201,7 +201,7 @@
     <string name="development_settings_summary" msgid="8718917813868735095">"Đặt tùy chọn cho phát triển ứng dụng"</string>
     <string name="development_settings_not_available" msgid="355070198089140951">"Tùy chọn dành cho nhà phát triển không khả dụng cho người dùng này"</string>
     <string name="vpn_settings_not_available" msgid="2894137119965668920">"Cài đặt VPN không khả dụng cho người dùng này"</string>
-    <string name="tethering_settings_not_available" msgid="266821736434699780">"Cài đặt chia sẻ kết nối không khả dụng cho người dùng này"</string>
+    <string name="tethering_settings_not_available" msgid="266821736434699780">"Cài đặt cách chia sẻ kết nối không khả dụng cho người dùng này"</string>
     <string name="apn_settings_not_available" msgid="1147111671403342300">"Cài đặt tên điểm truy cập không khả dụng cho người dùng này"</string>
     <string name="enable_adb" msgid="8072776357237289039">"Gỡ lỗi qua USB"</string>
     <string name="enable_adb_summary" msgid="3711526030096574316">"Bật chế độ gỡ lỗi khi kết nối USB"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"Mù màu đỏ không hoàn toàn (đỏ-xanh lục)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"Mù màu (xanh lam-vàng)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Sửa màu"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Tùy chọn sửa màu giúp những người bị mù màu thấy màu sắc chính xác hơn"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Bị ghi đè bởi <xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Còn khoảng <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> – <xliff:g id="TIME">%2$s</xliff:g> nữa là sạc xong"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Không xác định"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Đang sạc"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"đang sạc"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Hiện không sạc"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Đã cắm nhưng không thể sạc ngay"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Đầy"</string>
diff --git a/packages/SettingsLib/res/values-zh-rCN/strings.xml b/packages/SettingsLib/res/values-zh-rCN/strings.xml
index 418370b..3edbb4d 100644
--- a/packages/SettingsLib/res/values-zh-rCN/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rCN/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"已通过<xliff:g id="NAME">%1$s</xliff:g>连接到网络"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"可通过%1$s连接"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"点按即可注册"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"已连接,但无法访问互联网"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"无法访问互联网"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"无法访问私人 DNS 服务器"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"网络连接受限"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"无法访问互联网"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"红色弱视(红绿不分)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"蓝色弱视(蓝黄不分)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"颜色校正功能有助于色盲用户看到更准确的颜色"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已被“<xliff:g id="TITLE">%1$s</xliff:g>”覆盖"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"大约还可使用 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>后充满电"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"未知"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"正在充电"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"正在充电"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"未在充电"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已插入电源,但是现在无法充电"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"电量充足"</string>
diff --git a/packages/SettingsLib/res/values-zh-rHK/strings.xml b/packages/SettingsLib/res/values-zh-rHK/strings.xml
index 79b5579..6174fe9 100644
--- a/packages/SettingsLib/res/values-zh-rHK/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rHK/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"已透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"可透過 %1$s 連線"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"輕按即可登入"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"已連線,但沒有互聯網"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"沒有互聯網連線"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"無法存取私人 DNS 伺服器"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"連線受限"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"沒有互聯網連線"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"紅色弱視 (紅綠)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"藍色弱視 (藍黃)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"色彩校正有助色盲人士看到更準確的顏色"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已由「<xliff:g id="TITLE">%1$s</xliff:g>」覆寫"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"還有大約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - 還需 <xliff:g id="TIME">%2$s</xliff:g>才能充滿電"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"未知"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"正在充電"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"非充電中"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已插入電源插座,但目前無法充電"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"電量已滿"</string>
diff --git a/packages/SettingsLib/res/values-zh-rTW/strings.xml b/packages/SettingsLib/res/values-zh-rTW/strings.xml
index 47ab764..a150d16 100644
--- a/packages/SettingsLib/res/values-zh-rTW/strings.xml
+++ b/packages/SettingsLib/res/values-zh-rTW/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"透過「<xliff:g id="NAME">%1$s</xliff:g>」連線"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"可透過 %1$s 使用"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"輕觸即可註冊"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"已連線,沒有網際網路"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"沒有網際網路連線"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"無法存取私人 DNS 伺服器"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"連線能力受限"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"沒有網際網路連線"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"紅色弱視 (紅-綠)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"藍色弱視 (藍-黃)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"色彩校正"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"色彩校正可協助色盲使用者看見較準確的色彩"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"已改為<xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"還能使用約 <xliff:g id="TIME_REMAINING">%1$s</xliff:g>"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g>後充飽電"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"不明"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"充電中"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"充電中"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"非充電中"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"已接上電源,但現在無法充電"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"電力充足"</string>
diff --git a/packages/SettingsLib/res/values-zu/strings.xml b/packages/SettingsLib/res/values-zu/strings.xml
index 87f45de..003dda3 100644
--- a/packages/SettingsLib/res/values-zu/strings.xml
+++ b/packages/SettingsLib/res/values-zu/strings.xml
@@ -42,7 +42,7 @@
     <string name="connected_via_app" msgid="3532267661404276584">"Ixhumeke nge-<xliff:g id="NAME">%1$s</xliff:g>"</string>
     <string name="available_via_passpoint" msgid="1716000261192603682">"Iyatholakala nge-%1$s"</string>
     <string name="tap_to_sign_up" msgid="5356397741063740395">"Thepha ukuze ubhalisele"</string>
-    <string name="wifi_connected_no_internet" msgid="2381729074310543563">"Kuxhunyiwe, ayikho i-inthanethi"</string>
+    <string name="wifi_connected_no_internet" msgid="5087420713443350646">"Ayikho i-inthanethi"</string>
     <string name="private_dns_broken" msgid="1984159464346556931">"Iseva eyimfihlo ye-DNS ayikwazi ukufinyelelwa"</string>
     <string name="wifi_limited_connection" msgid="1184778285475204682">"Iqoqo elikhawulelwe"</string>
     <string name="wifi_status_no_internet" msgid="3799933875988829048">"Ayikho i-inthanethi"</string>
@@ -383,7 +383,8 @@
     <string name="daltonizer_mode_protanomaly" msgid="7805583306666608440">"I-Protanomaly (bomvu-luhlaza)"</string>
     <string name="daltonizer_mode_tritanomaly" msgid="7135266249220732267">"I-Tritanomaly (luhlaza okwesibhakabhaka-phuzi)"</string>
     <string name="accessibility_display_daltonizer_preference_title" msgid="1810693571332381974">"Ukulungiswa kombala"</string>
-    <string name="accessibility_display_daltonizer_preference_subtitle" msgid="9137381746633858694">"Ukulungisa umbala kusiza abantu abangaboni imibala ukubona ngokuqondile"</string>
+    <!-- no translation found for accessibility_display_daltonizer_preference_subtitle (6178138727195403796) -->
+    <skip />
     <string name="daltonizer_type_overridden" msgid="4509604753672535721">"Igitshezwe ngaphezulu yi-<xliff:g id="TITLE">%1$s</xliff:g>"</string>
     <string name="power_remaining_settings_home_page" msgid="4885165789445462557">"<xliff:g id="PERCENTAGE">%1$s</xliff:g> - <xliff:g id="TIME_STRING">%2$s</xliff:g>"</string>
     <string name="power_remaining_duration_only" msgid="8264199158671531431">"Cishe u-<xliff:g id="TIME_REMAINING">%1$s</xliff:g> osele"</string>
@@ -413,7 +414,10 @@
     <string name="power_charging_duration" msgid="5005740040558984057">"<xliff:g id="LEVEL">%1$s</xliff:g> - <xliff:g id="TIME">%2$s</xliff:g> ize igcwale"</string>
     <string name="battery_info_status_unknown" msgid="268625384868401114">"Akwaziwa"</string>
     <string name="battery_info_status_charging" msgid="4279958015430387405">"Iyashaja"</string>
-    <string name="battery_info_status_charging_lower" msgid="8696042568167401574">"iyashaja"</string>
+    <!-- no translation found for battery_info_status_charging_fast (8027559755902954885) -->
+    <skip />
+    <!-- no translation found for battery_info_status_charging_slow (3190803837168962319) -->
+    <skip />
     <string name="battery_info_status_discharging" msgid="6962689305413556485">"Ayishaji"</string>
     <string name="battery_info_status_not_charging" msgid="8330015078868707899">"Kuxhunyiwe, ayikwazi ukushaja khona manje"</string>
     <string name="battery_info_status_full" msgid="4443168946046847468">"Kugcwele"</string>
diff --git a/packages/SettingsLib/res/values/config.xml b/packages/SettingsLib/res/values/config.xml
new file mode 100644
index 0000000..332d6c7
--- /dev/null
+++ b/packages/SettingsLib/res/values/config.xml
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
+<!-- These resources are around just to allow their values to be customized -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Threshold in micro watts below which a charger is rated as "slow"; 1A @ 5V -->
+    <integer name="config_chargingSlowlyThreshold">5000000</integer>
+
+    <!-- Threshold in micro watts above which a charger is rated as "fast"; 1.5A @ 5V  -->
+    <integer name="config_chargingFastThreshold">7500000</integer>
+</resources>
\ No newline at end of file
diff --git a/packages/SettingsLib/res/values/strings.xml b/packages/SettingsLib/res/values/strings.xml
index a7df6db..59881e7 100644
--- a/packages/SettingsLib/res/values/strings.xml
+++ b/packages/SettingsLib/res/values/strings.xml
@@ -129,7 +129,7 @@
     <string name="certinstaller_package" translatable="false">com.android.certinstaller</string>
 
     <!-- Summary for Connected wifi network without internet -->
-    <string name="wifi_connected_no_internet">Connected, no internet</string>
+    <string name="wifi_connected_no_internet">No internet</string>
 
     <!-- Summary for connected network without internet due to private dns validation failed [CHAR LIMIT=NONE] -->
     <string name="private_dns_broken">Private DNS server cannot be accessed</string>
@@ -553,6 +553,60 @@
     <string name="enable_adb_summary">Debug mode when USB is connected</string>
     <!-- Setting title to revoke secure USB debugging authorizations -->
     <string name="clear_adb_keys">Revoke USB debugging authorizations</string>
+    <!-- [CHAR LIMIT=32] Setting title for ADB wireless switch -->
+    <string name="enable_adb_wireless">Wireless debugging</string>
+    <!-- [CHAR LIMIT=NONE] Setting checkbox summary for whether to enable Wireless debugging support on the phone -->
+    <string name="enable_adb_wireless_summary">Debug mode when Wi\u2011Fi is connected</string>
+    <!-- [CHAR LIMIT=32] Summary text when ADB wireless has error -->
+    <string name="adb_wireless_error">Error</string>
+    <!-- [CHAR LIMIT=32] Setting title for ADB wireless fragment -->
+    <string name="adb_wireless_settings">Wireless debugging</string>
+    <!-- [CHAR LIMIT=NONE] Wireless debugging settings. text displayed when wireless debugging is off and network list is empty. -->
+    <string name="adb_wireless_list_empty_off">To see and use available devices, turn on wireless debugging</string>
+    <!-- [CHAR LIMIT=50] Title for adb wireless pair by QR code preference -->
+    <string name="adb_pair_method_qrcode_title">Pair device with QR code</string>
+    <!-- [CHAR LIMIT=NONE] Summary for adb wireless pair by QR code preference -->
+    <string name="adb_pair_method_qrcode_summary">Pair new devices using QR code Scanner</string>
+    <!-- [CHAR LIMIT=50] Title for adb wireless pair by pairing code preference -->
+    <string name="adb_pair_method_code_title">Pair device with pairing code</string>
+    <!-- [CHAR LIMIT=NONE] Summary for adb wireless pair by pairing code preference -->
+    <string name="adb_pair_method_code_summary">Pair new devices using six digit code</string>
+    <!-- [CHAR LIMIT=50] Title for adb wireless paired devices category -->
+    <string name="adb_paired_devices_title">Paired devices</string>
+    <!-- [CHAR LIMIT=50] Summary for adb wireless paired device preference -->
+    <string name="adb_wireless_device_connected_summary">Currently connected</string>
+    <!-- [CHAR LIMIT=50] Title for the adb device details fragment -->
+    <string name="adb_wireless_device_details_title">Device details</string>
+    <!-- [CHAR LIMIT=16] Button label to forget an adb device -->
+    <string name="adb_device_forget">Forget</string>
+    <!-- [CHAR LIMIT=50] Title format for mac address preference in adb device details fragment -->
+    <string name="adb_device_fingerprint_title_format">Device fingerprint: <xliff:g id="fingerprint_param" example="a1:b2:c3:d4:e5:f6">%1$s</xliff:g></string>
+    <!-- [CHAR LIMIT=50] Title for adb wireless connection failed dialog -->
+    <string name="adb_wireless_connection_failed_title">Connection unsuccessful</string>
+    <!-- [CHAR LIMIT=NONE] Message for adb wireless connection failed dialog -->
+    <string name="adb_wireless_connection_failed_message">Make sure <xliff:g id="device_name" example="Bob's Macbook">%1$s</xliff:g> is connected to the correct network</string>
+    <!-- [CHAR LIMIT=32] Adb wireless pairing device dialog title -->
+    <string name="adb_pairing_device_dialog_title">Pair with device</string>
+    <!-- [CHAR LIMIT=32] Adb wireless pairing device dialog pairing code label -->
+    <string name="adb_pairing_device_dialog_pairing_code_label">Wi\u2011Fi pairing code</string>
+    <!-- [CHAR LIMIT=50] Adb Wireless pairing device failed dialog title -->
+    <string name="adb_pairing_device_dialog_failed_title">Pairing unsuccessful</string>
+    <!-- [CHAR LIMIT=NONE] Adb wireless pairing device failed dialog message -->
+    <string name="adb_pairing_device_dialog_failed_msg">Make sure the device is connected to the same network.</string>
+    <!-- [CHAR LIMIT=NONE] Adb wireless qr code scanner description -->
+    <string name="adb_wireless_qrcode_summary">Pair device over Wi\u2011Fi by scanning a QR code</string>
+    <!-- [CHAR LIMIT=NONE] Adb wireless QR code pairing in progress text -->
+    <string name="adb_wireless_verifying_qrcode_text">Pairing device\u2026</string>
+    <!-- [CHAR LIMIT=NONE] Adb wireless QR code failed message -->
+    <string name="adb_qrcode_pairing_device_failed_msg">Failed to pair the device. Either the QR code was incorrect, or the device is not connected to the same network.</string>
+    <!-- [CHAR LIMIT=50] Adb Wireless ip address and port title -->
+    <string name="adb_wireless_ip_addr_preference_title">IP address \u0026 Port</string>
+    <!-- [CHAR LIMIT=NONE] Adb Wireless QR code pairing scanner title -->
+    <string name="adb_wireless_qrcode_pairing_title">Scan QR code</string>
+    <!-- [CHAR LIMIT=NONE] Adb Wireless QR code pairing description -->
+    <string name="adb_wireless_qrcode_pairing_description">Pair device over Wi\u2011Fi by scanning a QR Code</string>
+    <!--Adb wireless search Keywords [CHAR LIMIT=NONE]-->
+    <string name="keywords_adb_wireless">adb, debug, dev</string>
     <!-- [CHAR LIMIT=NONE] Setting checkbox title for Whether to include bug report item in power menu. -->
     <string name="bugreport_in_power">Bug report shortcut</string>
     <!-- [CHAR LIMIT=NONE] Setting checkbox summary for Whether to include bug report item in power -->
@@ -689,6 +743,10 @@
     <string name="adb_warning_title">Allow USB debugging?</string>
     <!-- Warning text to user about the implications of enabling USB debugging -->
     <string name="adb_warning_message">USB debugging is intended for development purposes only. Use it to copy data between your computer and your device, install apps on your device without notification, and read log data.</string>
+    <!-- Title of warning dialog about the implications of enabling USB debugging [CHAR LIMIT=NONE] -->
+    <string name="adbwifi_warning_title">Allow wireless debugging?</string>
+    <!-- Warning text to user about the implications of enabling USB debugging [CHAR LIMIT=NONE] -->
+    <string name="adbwifi_warning_message">Wireless debugging is intended for development purposes only. Use it to copy data between your computer and your device, install apps on your device without notification, and read log data.</string>
     <!-- Message of dialog confirming that user wants to revoke access to adb from all computers they have authorized -->
     <string name="adb_keys_warning_message">Revoke access to USB debugging from all computers you\u2019ve previously authorized?</string>
     <!-- Title of warning dialog about the implications of enabling developer settings -->
@@ -970,7 +1028,7 @@
     <!-- Title for the accessibility preference to configure display color space correction. [CHAR LIMIT=NONE] -->
     <string name="accessibility_display_daltonizer_preference_title">Color correction</string>
     <!-- Subtitle for the accessibility preference to configure display color space correction. [CHAR LIMIT=NONE] -->
-    <string name="accessibility_display_daltonizer_preference_subtitle">Color correction helps people with color blindness to see more accurate colors</string>
+    <string name="accessibility_display_daltonizer_preference_subtitle">Color correction helps people with colorblindness see more accurate colors</string>
     <!-- Summary shown for color space correction preference when its value is overridden by another preference [CHAR LIMIT=35] -->
     <string name="daltonizer_type_overridden">Overridden by <xliff:g id="title" example="Simulate color space">%1$s</xliff:g></string>
 
@@ -1011,17 +1069,17 @@
     <string name="power_remaining_only_more_than_subtext">More than <xliff:g id="time_remaining">%1$s</xliff:g> remaining</string>
 
     <!-- [CHAR_LIMIT=50] Short label for imminent shutdown warning of device -->
-    <string name="power_remaining_duration_only_shutdown_imminent" product="default">Phone may shutdown soon</string>
+    <string name="power_remaining_duration_only_shutdown_imminent" product="default">Phone may shut down soon</string>
     <!-- [CHAR_LIMIT=50] Short label for imminent shutdown warning of device -->
-    <string name="power_remaining_duration_only_shutdown_imminent" product="tablet">Tablet may shutdown soon</string>
+    <string name="power_remaining_duration_only_shutdown_imminent" product="tablet">Tablet may shut down soon</string>
     <!-- [CHAR_LIMIT=50] Short label for imminent shutdown warning of device -->
-    <string name="power_remaining_duration_only_shutdown_imminent" product="device">Device may shutdown soon</string>
+    <string name="power_remaining_duration_only_shutdown_imminent" product="device">Device may shut down soon</string>
     <!-- [CHAR_LIMIT=60] Label for battery level chart when shutdown is imminent-->
-    <string name="power_remaining_duration_shutdown_imminent" product="default">Phone may shutdown soon (<xliff:g id="level">%1$s</xliff:g>)</string>
+    <string name="power_remaining_duration_shutdown_imminent" product="default">Phone may shut down soon (<xliff:g id="level">%1$s</xliff:g>)</string>
     <!-- [CHAR_LIMIT=60] Label for battery level chart when shutdown is imminent-->
-    <string name="power_remaining_duration_shutdown_imminent" product="tablet">Tablet may shutdown soon (<xliff:g id="level">%1$s</xliff:g>)</string>
+    <string name="power_remaining_duration_shutdown_imminent" product="tablet">Tablet may shut down soon (<xliff:g id="level">%1$s</xliff:g>)</string>
     <!-- [CHAR_LIMIT=60] Label for battery level chart when shutdown is imminent-->
-    <string name="power_remaining_duration_shutdown_imminent" product="device">Device may shutdown soon (<xliff:g id="level">%1$s</xliff:g>)</string>
+    <string name="power_remaining_duration_shutdown_imminent" product="device">Device may shut down soon (<xliff:g id="level">%1$s</xliff:g>)</string>
 
     <!-- [CHAR_LIMIT=40] Label for battery level chart when charging -->
     <string name="power_charging"><xliff:g id="level">%1$s</xliff:g> - <xliff:g id="state">%2$s</xliff:g></string>
@@ -1034,8 +1092,10 @@
     <string name="battery_info_status_unknown">Unknown</string>
     <!-- [CHAR_LIMIT=20] Battery use screen.  Battery status shown in chart label when charging from an unknown source.  -->
     <string name="battery_info_status_charging">Charging</string>
-    <!-- [CHAR_LIMIT=20] Battery use screen with lower case.  Battery status shown in chart label when charging from an unknown source.  -->
-    <string name="battery_info_status_charging_lower">charging</string>
+    <!-- [CHAR_LIMIT=20] Battery use screen.  Battery status shown in chart label when charging speed is fast.  -->
+    <string name="battery_info_status_charging_fast">Charging rapidly</string>
+    <!-- [CHAR_LIMIT=20] Battery use screen.  Battery status shown in chart label when charging speed is slow.  -->
+    <string name="battery_info_status_charging_slow">Charging slowly</string>
     <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
     <string name="battery_info_status_discharging">Not charging</string>
     <!-- Battery Info screen. Value for a status item.  Used for diagnostic info screens, precise translation isn't needed -->
diff --git a/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java
index b01fc85..f5aa652 100644
--- a/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java
+++ b/packages/SettingsLib/src/com/android/settingslib/NetworkPolicyEditor.java
@@ -216,7 +216,7 @@
     private static NetworkTemplate buildUnquotedNetworkTemplate(NetworkTemplate template) {
         if (template == null) return null;
         final String networkId = template.getNetworkId();
-        final String strippedNetworkId = WifiInfo.removeDoubleQuotes(networkId);
+        final String strippedNetworkId = WifiInfo.sanitizeSsid(networkId);
         if (!TextUtils.equals(strippedNetworkId, networkId)) {
             return new NetworkTemplate(
                     template.getMatchRule(), template.getSubscriberId(), strippedNetworkId);
diff --git a/packages/SettingsLib/src/com/android/settingslib/Utils.java b/packages/SettingsLib/src/com/android/settingslib/Utils.java
index de523d9..f485793 100644
--- a/packages/SettingsLib/src/com/android/settingslib/Utils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/Utils.java
@@ -3,6 +3,7 @@
 import android.annotation.ColorInt;
 import android.content.Context;
 import android.content.Intent;
+import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
@@ -13,6 +14,7 @@
 import android.content.res.TypedArray;
 import android.graphics.Bitmap;
 import android.graphics.Color;
+import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
 import android.location.LocationManager;
 import android.media.AudioManager;
@@ -27,9 +29,13 @@
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.ServiceState;
 
+import androidx.annotation.NonNull;
+
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.UserIcons;
+import com.android.launcher3.icons.IconFactory;
 import com.android.settingslib.drawable.UserIconDrawable;
+import com.android.settingslib.fuelgauge.BatteryStatus;
 
 import java.text.NumberFormat;
 
@@ -117,7 +123,7 @@
     public static Drawable getUserIcon(Context context, UserManager um, UserInfo user) {
         final int iconSize = UserIconDrawable.getSizeForList(context);
         if (user.isManagedProfile()) {
-            Drawable drawable =  UserIconDrawable.getManagedUserDrawable(context);
+            Drawable drawable = UserIconDrawable.getManagedUserDrawable(context);
             drawable.setBounds(0, 0, iconSize, iconSize);
             return drawable;
         }
@@ -159,20 +165,43 @@
         return (level * 100) / scale;
     }
 
-    public static String getBatteryStatus(Resources res, Intent batteryChangedIntent) {
-        int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS,
+    /**
+     * Get battery status string
+     *
+     * @param context the context
+     * @param batteryChangedIntent battery broadcast intent received from {@link
+     *                             Intent.ACTION_BATTERY_CHANGED}.
+     * @return battery status string
+     */
+    public static String getBatteryStatus(Context context, Intent batteryChangedIntent) {
+        final int status = batteryChangedIntent.getIntExtra(BatteryManager.EXTRA_STATUS,
                 BatteryManager.BATTERY_STATUS_UNKNOWN);
-        String statusString;
-        if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
-            statusString = res.getString(R.string.battery_info_status_charging);
-        } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
-            statusString = res.getString(R.string.battery_info_status_discharging);
-        } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
-            statusString = res.getString(R.string.battery_info_status_not_charging);
-        } else if (status == BatteryManager.BATTERY_STATUS_FULL) {
+        final Resources res = context.getResources();
+
+        String statusString = res.getString(R.string.battery_info_status_unknown);
+        final BatteryStatus batteryStatus = new BatteryStatus(batteryChangedIntent);
+
+        if (batteryStatus.isCharged()) {
             statusString = res.getString(R.string.battery_info_status_full);
         } else {
-            statusString = res.getString(R.string.battery_info_status_unknown);
+            if (status == BatteryManager.BATTERY_STATUS_CHARGING) {
+                switch (batteryStatus.getChargingSpeed(context)) {
+                    case BatteryStatus.CHARGING_FAST:
+                        statusString = res.getString(R.string.battery_info_status_charging_fast);
+                        break;
+                    case BatteryStatus.CHARGING_SLOWLY:
+                        statusString = res.getString(R.string.battery_info_status_charging_slow);
+                        break;
+                    default:
+                        statusString = res.getString(R.string.battery_info_status_charging);
+                        break;
+                }
+
+            } else if (status == BatteryManager.BATTERY_STATUS_DISCHARGING) {
+                statusString = res.getString(R.string.battery_info_status_discharging);
+            } else if (status == BatteryManager.BATTERY_STATUS_NOT_CHARGING) {
+                statusString = res.getString(R.string.battery_info_status_not_charging);
+            }
         }
 
         return statusString;
@@ -206,7 +235,7 @@
     /**
      * This method computes disabled color from normal color
      *
-     * @param context
+     * @param context the context
      * @param inputColor normal color.
      * @return disabled color.
      */
@@ -424,6 +453,19 @@
         return state;
     }
 
+    /**
+     * Get the {@link Drawable} that represents the app icon
+     */
+    public static @NonNull Drawable getBadgedIcon(
+            @NonNull Context context, @NonNull ApplicationInfo appInfo) {
+        final UserHandle user = UserHandle.getUserHandleForUid(appInfo.uid);
+        try (IconFactory iconFactory = IconFactory.obtain(context)) {
+            final Bitmap iconBmp = iconFactory.createBadgedIconBitmap(
+                    appInfo.loadUnbadgedIcon(context.getPackageManager()), user, false).icon;
+            return new BitmapDrawable(context.getResources(), iconBmp);
+        }
+    }
+
     private static boolean isNotInIwlan(ServiceState serviceState) {
         final NetworkRegistrationInfo networkRegWlan = serviceState.getNetworkRegistrationInfo(
                 NetworkRegistrationInfo.DOMAIN_PS,
diff --git a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
index 19c6664..af72888 100644
--- a/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
+++ b/packages/SettingsLib/src/com/android/settingslib/applications/ApplicationsState.java
@@ -59,6 +59,7 @@
 
 import com.android.internal.R;
 import com.android.internal.util.ArrayUtils;
+import com.android.settingslib.Utils;
 
 import java.io.File;
 import java.io.IOException;
@@ -495,7 +496,7 @@
             return;
         }
         synchronized (entry) {
-            entry.ensureIconLocked(mContext, mDrawableFactory);
+            entry.ensureIconLocked(mContext);
         }
     }
 
@@ -1216,7 +1217,7 @@
                                 AppEntry entry = mAppEntries.get(i);
                                 if (entry.icon == null || !entry.mounted) {
                                     synchronized (entry) {
-                                        if (entry.ensureIconLocked(mContext, mDrawableFactory)) {
+                                        if (entry.ensureIconLocked(mContext)) {
                                             if (!mRunning) {
                                                 mRunning = true;
                                                 Message m = mMainHandler.obtainMessage(
@@ -1587,10 +1588,10 @@
             }
         }
 
-        boolean ensureIconLocked(Context context, IconDrawableFactory drawableFactory) {
+        boolean ensureIconLocked(Context context) {
             if (this.icon == null) {
                 if (this.apkFile.exists()) {
-                    this.icon = drawableFactory.getBadgedIcon(info);
+                    this.icon = Utils.getBadgedIcon(context, info);
                     return true;
                 } else {
                     this.mounted = false;
@@ -1601,7 +1602,7 @@
                 // its icon.
                 if (this.apkFile.exists()) {
                     this.mounted = true;
-                    this.icon = drawableFactory.getBadgedIcon(info);
+                    this.icon = Utils.getBadgedIcon(context, info);
                     return true;
                 }
             }
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
index a784e04..1ebe917 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpProfile.java
@@ -16,6 +16,7 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothAdapter.ACTIVE_DEVICE_AUDIO;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
 
@@ -45,6 +46,7 @@
     private boolean mIsProfileReady;
 
     private final CachedBluetoothDeviceManager mDeviceManager;
+    private final BluetoothAdapter mBluetoothAdapter;
 
     static final ParcelUuid[] SINK_UUIDS = {
         BluetoothUuid.A2DP_SINK,
@@ -99,7 +101,8 @@
         mContext = context;
         mDeviceManager = deviceManager;
         mProfileManager = profileManager;
-        BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new A2dpServiceListener(),
+        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        mBluetoothAdapter.getProfileProxy(context, new A2dpServiceListener(),
                 BluetoothProfile.A2DP);
     }
 
@@ -150,21 +153,6 @@
         return mService.getDevicesMatchingConnectionStates(states);
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -173,8 +161,10 @@
     }
 
     public boolean setActiveDevice(BluetoothDevice device) {
-        if (mService == null) return false;
-        return mService.setActiveDevice(device);
+        if (mBluetoothAdapter == null) {
+            return false;
+        }
+        return mBluetoothAdapter.setActiveDevice(device, ACTIVE_DEVICE_AUDIO);
     }
 
     public BluetoothDevice getActiveDevice() {
@@ -182,31 +172,37 @@
         return mService.getActiveDevice();
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
     boolean isA2dpPlaying() {
         if (mService == null) return false;
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
index 8ca5a74..c7a5bd8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/A2dpSinkProfile.java
@@ -115,21 +115,6 @@
                          BluetoothProfile.STATE_DISCONNECTING});
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -137,31 +122,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     boolean isAudioPlaying() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
index 50d3a5d..5d1e4cb 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/CachedBluetoothDevice.java
@@ -41,7 +41,6 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -71,10 +70,10 @@
     short mRssi;
     // mProfiles and mRemovedProfiles does not do swap() between main and sub device. It is
     // because current sub device is only for HearingAid and its profile is the same.
-    private final List<LocalBluetoothProfile> mProfiles = new ArrayList<>();
+    private final Collection<LocalBluetoothProfile> mProfiles = new CopyOnWriteArrayList<>();
 
     // List of profiles that were previously in mProfiles, but have been removed
-    private final List<LocalBluetoothProfile> mRemovedProfiles = new ArrayList<>();
+    private final Collection<LocalBluetoothProfile> mRemovedProfiles = new CopyOnWriteArrayList<>();
 
     // Device supports PANU but not NAP: remove PanProfile after device disconnects from NAP
     private boolean mLocalNapRoleConnected;
@@ -195,7 +194,7 @@
 
             if (newProfileState == BluetoothProfile.STATE_CONNECTED) {
                 if (profile instanceof MapProfile) {
-                    profile.setPreferred(mDevice, true);
+                    profile.setEnabled(mDevice, true);
                 }
                 if (!mProfiles.contains(profile)) {
                     mRemovedProfiles.remove(profile);
@@ -208,7 +207,7 @@
                 }
             } else if (profile instanceof MapProfile
                     && newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
-                profile.setPreferred(mDevice, false);
+                profile.setEnabled(mDevice, false);
             } else if (mLocalNapRoleConnected && profile instanceof PanProfile
                     && ((PanProfile) profile).isLocalRoleNap(mDevice)
                     && newProfileState == BluetoothProfile.STATE_DISCONNECTED) {
@@ -250,12 +249,12 @@
         PbapServerProfile PbapProfile = mProfileManager.getPbapProfile();
         if (PbapProfile != null && isConnectedProfile(PbapProfile))
         {
-            PbapProfile.disconnect(mDevice);
+            PbapProfile.setEnabled(mDevice, false);
         }
     }
 
     public void disconnect(LocalBluetoothProfile profile) {
-        if (profile.disconnect(mDevice)) {
+        if (profile.setEnabled(mDevice, false)) {
             if (BluetoothUtils.D) {
                 Log.d(TAG, "Command sent successfully:DISCONNECT " + describe(profile));
             }
@@ -342,7 +341,7 @@
         if (!ensurePaired()) {
             return;
         }
-        if (profile.connect(mDevice)) {
+        if (profile.setEnabled(mDevice, true)) {
             if (BluetoothUtils.D) {
                 Log.d(TAG, "Command sent successfully:CONNECT " + describe(profile));
             }
@@ -717,7 +716,7 @@
     }
 
     public List<LocalBluetoothProfile> getProfiles() {
-        return Collections.unmodifiableList(mProfiles);
+        return new ArrayList<>(mProfiles);
     }
 
     public List<LocalBluetoothProfile> getConnectableProfiles() {
@@ -734,7 +733,7 @@
     }
 
     public List<LocalBluetoothProfile> getRemovedProfiles() {
-        return mRemovedProfiles;
+        return new ArrayList<>(mRemovedProfiles);
     }
 
     public void registerCallback(Callback callback) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
index d65b5da..9dfc4d9 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HeadsetProfile.java
@@ -16,6 +16,7 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothAdapter.ACTIVE_DEVICE_PHONE_CALL;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
 
@@ -45,6 +46,7 @@
 
     private final CachedBluetoothDeviceManager mDeviceManager;
     private final LocalBluetoothProfileManager mProfileManager;
+    private final BluetoothAdapter mBluetoothAdapter;
 
     static final ParcelUuid[] UUIDS = {
         BluetoothUuid.HSP,
@@ -99,7 +101,8 @@
             LocalBluetoothProfileManager profileManager) {
         mDeviceManager = deviceManager;
         mProfileManager = profileManager;
-        BluetoothAdapter.getDefaultAdapter().getProfileProxy(context, new HeadsetServiceListener(),
+        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        mBluetoothAdapter.getProfileProxy(context, new HeadsetServiceListener(),
                 BluetoothProfile.HEADSET);
     }
 
@@ -111,21 +114,6 @@
         return true;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -134,10 +122,10 @@
     }
 
     public boolean setActiveDevice(BluetoothDevice device) {
-        if (mService == null) {
+        if (mBluetoothAdapter == null) {
             return false;
         }
-        return mService.setActiveDevice(device);
+        return mBluetoothAdapter.setActiveDevice(device, ACTIVE_DEVICE_PHONE_CALL);
     }
 
     public BluetoothDevice getActiveDevice() {
@@ -161,31 +149,37 @@
         return mService.getAudioState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public List<BluetoothDevice> getConnectedDevices() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
index 9f1af66..a3b68b4 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HearingAidProfile.java
@@ -16,6 +16,7 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothAdapter.ACTIVE_DEVICE_ALL;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
 
@@ -45,6 +46,7 @@
 
     static final String NAME = "HearingAid";
     private final LocalBluetoothProfileManager mProfileManager;
+    private final BluetoothAdapter mBluetoothAdapter;
 
     // Order of this profile in device profiles list
     private static final int ORDINAL = 1;
@@ -97,7 +99,8 @@
         mContext = context;
         mDeviceManager = deviceManager;
         mProfileManager = profileManager;
-        BluetoothAdapter.getDefaultAdapter().getProfileProxy(context,
+        mBluetoothAdapter = BluetoothAdapter.getDefaultAdapter();
+        mBluetoothAdapter.getProfileProxy(context,
                 new HearingAidServiceListener(), BluetoothProfile.HEARING_AID);
     }
 
@@ -148,21 +151,6 @@
         return mService.getDevicesMatchingConnectionStates(states);
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -171,8 +159,10 @@
     }
 
     public boolean setActiveDevice(BluetoothDevice device) {
-        if (mService == null) return false;
-        return mService.setActiveDevice(device);
+        if (mBluetoothAdapter == null) {
+            return false;
+        }
+        return mBluetoothAdapter.setActiveDevice(device, ACTIVE_DEVICE_ALL);
     }
 
     public List<BluetoothDevice> getActiveDevices() {
@@ -180,31 +170,37 @@
         return mService.getActiveDevices();
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public void setVolume(int volume) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
index 678f2e3..66225a2 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HfpClientProfile.java
@@ -125,23 +125,6 @@
     }
 
     @Override
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Override
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Override
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -150,7 +133,7 @@
     }
 
     @Override
-    public boolean isPreferred(BluetoothDevice device) {
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
@@ -158,7 +141,7 @@
     }
 
     @Override
-    public int getPreferred(BluetoothDevice device) {
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
@@ -166,17 +149,20 @@
     }
 
     @Override
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     @Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
index 35600b5..8a2c4f8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidDeviceProfile.java
@@ -16,6 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
+
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
@@ -102,20 +104,6 @@
     }
 
     @Override
-    public boolean connect(BluetoothDevice device) {
-        // Don't invoke method in service because settings is not allowed to connect this profile.
-        return false;
-    }
-
-    @Override
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.disconnect(device);
-    }
-
-    @Override
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -124,21 +112,24 @@
     }
 
     @Override
-    public boolean isPreferred(BluetoothDevice device) {
+    public boolean isEnabled(BluetoothDevice device) {
         return getConnectionStatus(device) != BluetoothProfile.STATE_DISCONNECTED;
     }
 
     @Override
-    public int getPreferred(BluetoothDevice device) {
+    public int getConnectionPolicy(BluetoothDevice device) {
         return PREFERRED_VALUE;
     }
 
     @Override
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         // if set preferred to false, then disconnect to the current device
-        if (!preferred) {
-            mService.disconnect(device);
+        if (!enabled) {
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     @Override
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
index 588083e..3c24b4a 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/HidProfile.java
@@ -101,20 +101,6 @@
         return true;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -122,29 +108,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) != CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
-        if (mService == null) return;
-        if (preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
+        if (mService == null) {
+            return false;
+        }
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public String toString() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfile.java
index 4b0ca74..f609e43 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfile.java
@@ -35,17 +35,26 @@
      */
     boolean isAutoConnectable();
 
-    boolean connect(BluetoothDevice device);
-
-    boolean disconnect(BluetoothDevice device);
-
     int getConnectionStatus(BluetoothDevice device);
 
-    boolean isPreferred(BluetoothDevice device);
+    /**
+     * Return {@code true} if the profile is enabled, otherwise return {@code false}.
+     * @param device the device to query for enable status
+     */
+    boolean isEnabled(BluetoothDevice device);
 
-    int getPreferred(BluetoothDevice device);
+    /**
+     * Get the connection policy of the profile.
+     * @param device the device to query for enable status
+     */
+    int getConnectionPolicy(BluetoothDevice device);
 
-    void setPreferred(BluetoothDevice device, boolean preferred);
+    /**
+     * Enable the profile if {@code enabled} is {@code true}, otherwise disable profile.
+     * @param device the device to set profile status
+     * @param enabled {@code true} for enable profile, otherwise disable profile.
+     */
+    boolean setEnabled(BluetoothDevice device, boolean enabled);
 
     boolean isProfileReady();
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
index ae2acbe..35bbbc0 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/LocalBluetoothProfileManager.java
@@ -48,6 +48,7 @@
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 
 /**
@@ -232,7 +233,7 @@
     }
 
     private final Collection<ServiceListener> mServiceListeners =
-            new ArrayList<ServiceListener>();
+            new CopyOnWriteArrayList<ServiceListener>();
 
     private void addProfile(LocalBluetoothProfile profile,
             String profileName, String stateChangedAction) {
@@ -361,14 +362,18 @@
 
     // not synchronized: use only from UI thread! (TODO: verify)
     void callServiceConnectedListeners() {
-        for (ServiceListener l : mServiceListeners) {
+        final Collection<ServiceListener> listeners = new ArrayList<>(mServiceListeners);
+
+        for (ServiceListener l : listeners) {
             l.onServiceConnected();
         }
     }
 
     // not synchronized: use only from UI thread! (TODO: verify)
     void callServiceDisconnectedListeners() {
-        for (ServiceListener listener : mServiceListeners) {
+        final Collection<ServiceListener> listeners = new ArrayList<>(mServiceListeners);
+
+        for (ServiceListener listener : listeners) {
             listener.onServiceDisconnected();
         }
     }
@@ -528,14 +533,14 @@
             (mMapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) {
             profiles.add(mMapProfile);
             removedProfiles.remove(mMapProfile);
-            mMapProfile.setPreferred(device, true);
+            mMapProfile.setEnabled(device, true);
         }
 
         if ((mPbapProfile != null) &&
             (mPbapProfile.getConnectionStatus(device) == BluetoothProfile.STATE_CONNECTED)) {
             profiles.add(mPbapProfile);
             removedProfiles.remove(mPbapProfile);
-            mPbapProfile.setPreferred(device, true);
+            mPbapProfile.setEnabled(device, true);
         }
 
         if (mMapClientProfile != null) {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
index 7d121aa..19cb2f5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapClientProfile.java
@@ -114,21 +114,6 @@
         return true;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -136,31 +121,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public List<BluetoothDevice> getConnectedDevices() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
index a96a4e7..75c1926 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/MapProfile.java
@@ -16,6 +16,7 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
 import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
 
 import android.bluetooth.BluetoothAdapter;
@@ -112,19 +113,6 @@
         return true;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        Log.d(TAG, "connect() - should not get called");
-        return false; // MAP never connects out
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -132,31 +120,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
-            if (mService.getConnectionPolicy(device) < BluetoothProfile.CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, BluetoothProfile.CONNECTION_POLICY_ALLOWED);
+        if (enabled) {
+            if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public List<BluetoothDevice> getConnectedDevices() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java
index 8e3f3ed..5a6e6e8 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/OppProfile.java
@@ -40,27 +40,23 @@
         return false;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        return false;
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        return false;
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         return BluetoothProfile.STATE_DISCONNECTED; // Settings app doesn't handle OPP
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         return false;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         return BluetoothProfile.CONNECTION_POLICY_FORBIDDEN; // Settings app doesn't handle OPP
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        return false;
     }
 
     public boolean isProfileReady() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
index 6638592..767df35 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PanProfile.java
@@ -16,6 +16,9 @@
 
 package com.android.settingslib.bluetooth;
 
+import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
+import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
+
 import android.bluetooth.BluetoothAdapter;
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
@@ -83,22 +86,6 @@
         return false;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) return false;
-        List<BluetoothDevice> sinks = mService.getConnectedDevices();
-        if (sinks != null) {
-            for (BluetoothDevice sink : sinks) {
-                mService.disconnect(sink);
-            }
-        }
-        return mService.connect(device);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) return false;
-        return mService.disconnect(device);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -106,16 +93,36 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         return true;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         return -1;
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
-        // ignore: isPreferred is always true for PAN
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
+        if (mService == null) {
+            return false;
+        }
+
+        if (enabled) {
+            final List<BluetoothDevice> sinks = mService.getConnectedDevices();
+            if (sinks != null) {
+                for (BluetoothDevice sink : sinks) {
+                    mService.setConnectionPolicy(sink, CONNECTION_POLICY_FORBIDDEN);
+                }
+            }
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+        } else {
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+        }
+
+        return isEnabled;
     }
 
     public String toString() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
index 56267fc..0d11293 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapClientProfile.java
@@ -126,23 +126,6 @@
                          BluetoothProfile.STATE_DISCONNECTING});
     }
 
-    public boolean connect(BluetoothDevice device) {
-        Log.d(TAG,"PBAPClientProfile got connect request");
-        if (mService == null) {
-            return false;
-        }
-        Log.d(TAG,"PBAPClientProfile attempting to connect to " + device.getAddress());
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        Log.d(TAG,"PBAPClientProfile got disconnect request");
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -150,31 +133,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public String toString() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
index f7c0bf5..9e2e4a1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/PbapServerProfile.java
@@ -91,34 +91,33 @@
         return false;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        /*Can't connect from server */
-        return false;
-
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) return BluetoothProfile.STATE_DISCONNECTED;
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         return false;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         return -1;
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
-        // ignore: isPreferred is always true for PBAP
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
+        if (mService == null) {
+            return false;
+        }
+
+        if (!enabled) {
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+        }
+
+        return isEnabled;
     }
 
     public String toString() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
index 3022c5b..104f1d7 100644
--- a/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
+++ b/packages/SettingsLib/src/com/android/settingslib/bluetooth/SapProfile.java
@@ -111,21 +111,6 @@
         return true;
     }
 
-    public boolean connect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
-    }
-
-    public boolean disconnect(BluetoothDevice device) {
-        if (mService == null) {
-            return false;
-        }
-
-        return mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
-    }
-
     public int getConnectionStatus(BluetoothDevice device) {
         if (mService == null) {
             return BluetoothProfile.STATE_DISCONNECTED;
@@ -133,31 +118,37 @@
         return mService.getConnectionState(device);
     }
 
-    public boolean isPreferred(BluetoothDevice device) {
+    @Override
+    public boolean isEnabled(BluetoothDevice device) {
         if (mService == null) {
             return false;
         }
         return mService.getConnectionPolicy(device) > CONNECTION_POLICY_FORBIDDEN;
     }
 
-    public int getPreferred(BluetoothDevice device) {
+    @Override
+    public int getConnectionPolicy(BluetoothDevice device) {
         if (mService == null) {
             return CONNECTION_POLICY_FORBIDDEN;
         }
         return mService.getConnectionPolicy(device);
     }
 
-    public void setPreferred(BluetoothDevice device, boolean preferred) {
+    @Override
+    public boolean setEnabled(BluetoothDevice device, boolean enabled) {
+        boolean isEnabled = false;
         if (mService == null) {
-            return;
+            return false;
         }
-        if (preferred) {
+        if (enabled) {
             if (mService.getConnectionPolicy(device) < CONNECTION_POLICY_ALLOWED) {
-                mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
+                isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_ALLOWED);
             }
         } else {
-            mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
+            isEnabled = mService.setConnectionPolicy(device, CONNECTION_POLICY_FORBIDDEN);
         }
+
+        return isEnabled;
     }
 
     public List<BluetoothDevice> getConnectedDevices() {
diff --git a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
index aac7fc3..d48aa24 100644
--- a/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
+++ b/packages/SettingsLib/src/com/android/settingslib/datetime/ZoneGetter.java
@@ -402,7 +402,7 @@
         private static List<String> extractTimeZoneIds(List<TimeZoneMapping> timeZoneMappings) {
             final List<String> zoneIds = new ArrayList<>(timeZoneMappings.size());
             for (TimeZoneMapping timeZoneMapping : timeZoneMappings) {
-                zoneIds.add(timeZoneMapping.timeZoneId);
+                zoneIds.add(timeZoneMapping.getTimeZoneId());
             }
             return Collections.unmodifiableList(zoneIds);
         }
diff --git a/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java b/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
index 55723f9..57d9594 100644
--- a/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/display/BrightnessUtils.java
@@ -20,7 +20,8 @@
 
 public class BrightnessUtils {
 
-    public static final int GAMMA_SPACE_MAX = 1023;
+    public static final int GAMMA_SPACE_MIN = 0;
+    public static final int GAMMA_SPACE_MAX = 65535;
 
     // Hybrid Log Gamma constant values
     private static final float R = 0.5f;
@@ -51,7 +52,7 @@
      * @return The corresponding setting value.
      */
     public static final int convertGammaToLinear(int val, int min, int max) {
-        final float normalizedVal = MathUtils.norm(0, GAMMA_SPACE_MAX, val);
+        final float normalizedVal = MathUtils.norm(GAMMA_SPACE_MIN, GAMMA_SPACE_MAX, val);
         final float ret;
         if (normalizedVal <= R) {
             ret = MathUtils.sq(normalizedVal / R);
@@ -65,6 +66,29 @@
     }
 
     /**
+     * Version of {@link #convertGammaToLinear} that takes and returns float values.
+     * TODO: brightnessfloat Merge with above method later.
+     *
+     * @param val The slider value.
+     * @param min The minimum acceptable value for the setting.
+     * @param max The maximum acceptable value for the setting.
+     * @return The corresponding setting value.
+     */
+    public static final float convertGammaToLinearFloat(int val, float min, float max) {
+        final float normalizedVal = MathUtils.norm(GAMMA_SPACE_MIN, GAMMA_SPACE_MAX, val);
+        final float ret;
+        if (normalizedVal <= R) {
+            ret = MathUtils.sq(normalizedVal / R);
+        } else {
+            ret = MathUtils.exp((normalizedVal - C) / A) + B;
+        }
+
+        // HLG is normalized to the range [0, 12], so we need to re-normalize to the range [0, 1]
+        // in order to derive the correct setting value.
+        return MathUtils.lerp(min, max, ret / 12);
+    }
+
+    /**
      * A function for converting from the linear space that the setting works in to the
      * gamma space that the slider works in.
      *
@@ -96,6 +120,27 @@
             ret = A * MathUtils.log(normalizedVal - B) + C;
         }
 
-        return Math.round(MathUtils.lerp(0, GAMMA_SPACE_MAX, ret));
+        return Math.round(MathUtils.lerp(GAMMA_SPACE_MIN, GAMMA_SPACE_MAX, ret));
+    }
+
+    /**
+     * Version of {@link #convertLinearToGamma} that takes float values.
+     * TODO: brightnessfloat merge with above method(?)
+     * @param val The brightness setting value.
+     * @param min The minimum acceptable value for the setting.
+     * @param max The maximum acceptable value for the setting.
+     * @return The corresponding slider value
+     */
+    public static final int convertLinearToGammaFloat(float val, float min, float max) {
+        // For some reason, HLG normalizes to the range [0, 12] rather than [0, 1]
+        final float normalizedVal = MathUtils.norm(min, max, val) * 12;
+        final float ret;
+        if (normalizedVal <= 1f) {
+            ret = MathUtils.sqrt(normalizedVal) * R;
+        } else {
+            ret = A * MathUtils.log(normalizedVal - B) + C;
+        }
+
+        return Math.round(MathUtils.lerp(GAMMA_SPACE_MIN, GAMMA_SPACE_MAX, ret));
     }
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java
new file mode 100644
index 0000000..bc40903
--- /dev/null
+++ b/packages/SettingsLib/src/com/android/settingslib/fuelgauge/BatteryStatus.java
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2019 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.fuelgauge;
+
+import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
+import static android.os.BatteryManager.BATTERY_STATUS_FULL;
+import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
+import static android.os.BatteryManager.EXTRA_HEALTH;
+import static android.os.BatteryManager.EXTRA_LEVEL;
+import static android.os.BatteryManager.EXTRA_MAX_CHARGING_CURRENT;
+import static android.os.BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE;
+import static android.os.BatteryManager.EXTRA_PLUGGED;
+import static android.os.BatteryManager.EXTRA_STATUS;
+
+import android.content.Context;
+import android.content.Intent;
+import android.os.BatteryManager;
+
+import com.android.settingslib.R;
+
+/**
+ * Stores and computes some battery information.
+ */
+public class BatteryStatus {
+    private static final int LOW_BATTERY_THRESHOLD = 20;
+    private static final int DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT = 5000000;
+
+    public static final int CHARGING_UNKNOWN = -1;
+    public static final int CHARGING_SLOWLY = 0;
+    public static final int CHARGING_REGULAR = 1;
+    public static final int CHARGING_FAST = 2;
+
+    public final int status;
+    public final int level;
+    public final int plugged;
+    public final int health;
+    public final int maxChargingWattage;
+
+    public BatteryStatus(int status, int level, int plugged, int health,
+            int maxChargingWattage) {
+        this.status = status;
+        this.level = level;
+        this.plugged = plugged;
+        this.health = health;
+        this.maxChargingWattage = maxChargingWattage;
+    }
+
+    public BatteryStatus(Intent batteryChangedIntent) {
+        status = batteryChangedIntent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
+        plugged = batteryChangedIntent.getIntExtra(EXTRA_PLUGGED, 0);
+        level = batteryChangedIntent.getIntExtra(EXTRA_LEVEL, 0);
+        health = batteryChangedIntent.getIntExtra(EXTRA_HEALTH, BATTERY_HEALTH_UNKNOWN);
+
+        final int maxChargingMicroAmp = batteryChangedIntent.getIntExtra(EXTRA_MAX_CHARGING_CURRENT,
+                -1);
+        int maxChargingMicroVolt = batteryChangedIntent.getIntExtra(EXTRA_MAX_CHARGING_VOLTAGE, -1);
+
+        if (maxChargingMicroVolt <= 0) {
+            maxChargingMicroVolt = DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT;
+        }
+        if (maxChargingMicroAmp > 0) {
+            // Calculating muW = muA * muV / (10^6 mu^2 / mu); splitting up the divisor
+            // to maintain precision equally on both factors.
+            maxChargingWattage = (maxChargingMicroAmp / 1000)
+                    * (maxChargingMicroVolt / 1000);
+        } else {
+            maxChargingWattage = -1;
+        }
+    }
+
+    /**
+     * Determine whether the device is plugged in (USB, power, or wireless).
+     *
+     * @return true if the device is plugged in.
+     */
+    public boolean isPluggedIn() {
+        return plugged == BatteryManager.BATTERY_PLUGGED_AC
+                || plugged == BatteryManager.BATTERY_PLUGGED_USB
+                || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
+    }
+
+    /**
+     * Determine whether the device is plugged in (USB, power).
+     *
+     * @return true if the device is plugged in wired (as opposed to wireless)
+     */
+    public boolean isPluggedInWired() {
+        return plugged == BatteryManager.BATTERY_PLUGGED_AC
+                || plugged == BatteryManager.BATTERY_PLUGGED_USB;
+    }
+
+    /**
+     * Whether or not the device is charged. Note that some devices never return 100% for
+     * battery level, so this allows either battery level or status to determine if the
+     * battery is charged.
+     *
+     * @return true if the device is charged
+     */
+    public boolean isCharged() {
+        return status == BATTERY_STATUS_FULL || level >= 100;
+    }
+
+    /**
+     * Whether battery is low and needs to be charged.
+     *
+     * @return true if battery is low
+     */
+    public boolean isBatteryLow() {
+        return level < LOW_BATTERY_THRESHOLD;
+    }
+
+    /**
+     * Return current chargin speed is fast, slow or normal.
+     *
+     * @return the charing speed
+     */
+    public final int getChargingSpeed(Context context) {
+        final int slowThreshold = context.getResources().getInteger(
+                R.integer.config_chargingSlowlyThreshold);
+        final int fastThreshold = context.getResources().getInteger(
+                R.integer.config_chargingFastThreshold);
+        return maxChargingWattage <= 0 ? CHARGING_UNKNOWN :
+                maxChargingWattage < slowThreshold ? CHARGING_SLOWLY :
+                        maxChargingWattage > fastThreshold ? CHARGING_FAST :
+                                CHARGING_REGULAR;
+    }
+
+    @Override
+    public String toString() {
+        return "BatteryStatus{status=" + status + ",level=" + level + ",plugged=" + plugged
+                + ",health=" + health + ",maxChargingWattage=" + maxChargingWattage + "}";
+    }
+}
diff --git a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java
index 9db4a35..b4c95e6 100644
--- a/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java
+++ b/packages/SettingsLib/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXml.java
@@ -35,8 +35,10 @@
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.zip.GZIPInputStream;
 
 /**
@@ -84,7 +86,7 @@
      * "9645f39e9db895a4aa6e02cb57294595". Here "9645f39e9db895a4aa6e02cb57294595" is a MD5 sum
      * of the content of packages/services/Telephony/MODULE_LICENSE_APACHE2.
      */
-    private final Map<String, String> mFileNameToContentIdMap = new HashMap();
+    private final Map<String, Set<String>> mFileNameToContentIdMap = new HashMap();
 
     /*
      * A map from a content id (MD5 sum of file content) to a license file content.
@@ -186,10 +188,10 @@
      *     </licenses>
      */
     @VisibleForTesting
-    static void parse(InputStreamReader in, Map<String, String> outFileNameToContentIdMap,
+    static void parse(InputStreamReader in, Map<String, Set<String>> outFileNameToContentIdMap,
             Map<String, String> outContentIdToFileContentMap)
                     throws XmlPullParserException, IOException {
-        Map<String, String> fileNameToContentIdMap = new HashMap<String, String>();
+        Map<String, Set<String>> fileNameToContentIdMap = new HashMap<String, Set<String>>();
         Map<String, String> contentIdToFileContentMap = new HashMap<String, String>();
 
         XmlPullParser parser = Xml.newPullParser();
@@ -206,7 +208,10 @@
                     if (!TextUtils.isEmpty(contentId)) {
                         String fileName = readText(parser).trim();
                         if (!TextUtils.isEmpty(fileName)) {
-                            fileNameToContentIdMap.put(fileName, contentId);
+                            Set<String> contentIds =
+                                    fileNameToContentIdMap.computeIfAbsent(
+                                            fileName, k -> new HashSet<>());
+                            contentIds.add(contentId);
                         }
                     }
                 } else if (TAG_FILE_CONTENT.equals(parser.getName())) {
@@ -224,7 +229,13 @@
 
             state = parser.next();
         }
-        outFileNameToContentIdMap.putAll(fileNameToContentIdMap);
+        for (Map.Entry<String, Set<String>> entry : fileNameToContentIdMap.entrySet()) {
+            outFileNameToContentIdMap.merge(
+                    entry.getKey(), entry.getValue(), (s1, s2) -> {
+                        s1.addAll(s2);
+                        return s1;
+                    });
+        }
         outContentIdToFileContentMap.putAll(contentIdToFileContentMap);
     }
 
@@ -240,7 +251,7 @@
     }
 
     @VisibleForTesting
-    static void generateHtml(Map<String, String> fileNameToContentIdMap,
+    static void generateHtml(Map<String, Set<String>> fileNameToContentIdMap,
             Map<String, String> contentIdToFileContentMap, PrintWriter writer,
             String noticeHeader) {
         List<String> fileNameList = new ArrayList();
@@ -259,19 +270,20 @@
 
         // Prints all the file list with a link to its license file content.
         for (String fileName : fileNameList) {
-            String contentId = fileNameToContentIdMap.get(fileName);
-            // Assigns an id to a newly referred license file content.
-            if (!contentIdToOrderMap.containsKey(contentId)) {
-                contentIdToOrderMap.put(contentId, count);
+            for (String contentId : fileNameToContentIdMap.get(fileName)) {
+                // Assigns an id to a newly referred license file content.
+                if (!contentIdToOrderMap.containsKey(contentId)) {
+                    contentIdToOrderMap.put(contentId, count);
 
-                // An index in contentIdAndFileNamesList is the order of each element.
-                contentIdAndFileNamesList.add(new ContentIdAndFileNames(contentId));
-                count++;
+                    // An index in contentIdAndFileNamesList is the order of each element.
+                    contentIdAndFileNamesList.add(new ContentIdAndFileNames(contentId));
+                    count++;
+                }
+
+                int id = contentIdToOrderMap.get(contentId);
+                contentIdAndFileNamesList.get(id).mFileNameList.add(fileName);
+                writer.format("<li><a href=\"#id%d\">%s</a></li>\n", id, fileName);
             }
-
-            int id = contentIdToOrderMap.get(contentId);
-            contentIdAndFileNamesList.get(id).mFileNameList.add(fileName);
-            writer.format("<li><a href=\"#id%d\">%s</a></li>\n", id, fileName);
         }
 
         writer.println(HTML_MIDDLE_STRING);
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
index 3a53d29..e551b69 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaDevice.java
@@ -19,7 +19,8 @@
 import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
+import android.media.MediaRoute2Info;
+import android.media.MediaRouter2Manager;
 import android.util.Pair;
 
 import com.android.settingslib.R;
@@ -35,8 +36,9 @@
 
     private CachedBluetoothDevice mCachedDevice;
 
-    BluetoothMediaDevice(Context context, CachedBluetoothDevice device) {
-        super(context, MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
+    BluetoothMediaDevice(Context context, CachedBluetoothDevice device,
+            MediaRouter2Manager routerManager, MediaRoute2Info info, String packageName) {
+        super(context, MediaDeviceType.TYPE_BLUETOOTH_DEVICE, routerManager, info, packageName);
         mCachedDevice = device;
         initDeviceRecord();
     }
@@ -65,20 +67,6 @@
         return MediaDeviceUtils.getId(mCachedDevice);
     }
 
-    @Override
-    public boolean connect() {
-        //TODO(b/117129183): add callback to notify LocalMediaManager connection state.
-        final boolean isConnected = mCachedDevice.setActive();
-        setConnectedRecord();
-        Log.d(TAG, "connect() device : " + getName() + ", is selected : " + isConnected);
-        return isConnected;
-    }
-
-    @Override
-    public void disconnect() {
-        //TODO(b/117129183): disconnected last select device
-    }
-
     /**
      * Get current CachedBluetoothDevice
      */
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java
index 12d054e..d84788b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/BluetoothMediaManager.java
@@ -108,9 +108,9 @@
 
             Log.d(TAG, "addConnectableA2dpDevices() device : " + cachedDevice.getName()
                     + ", is connected : " + cachedDevice.isConnected()
-                    + ", is preferred : " + a2dpProfile.isPreferred(device));
+                    + ", is enabled : " + a2dpProfile.isEnabled(device));
 
-            if (a2dpProfile.isPreferred(device)
+            if (a2dpProfile.isEnabled(device)
                     && BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) {
                 addMediaDevice(cachedDevice);
             }
@@ -143,9 +143,9 @@
 
             Log.d(TAG, "addConnectableHearingAidDevices() device : " + cachedDevice.getName()
                     + ", is connected : " + cachedDevice.isConnected()
-                    + ", is preferred : " + hapProfile.isPreferred(device));
+                    + ", is enabled : " + hapProfile.isEnabled(device));
 
-            if (hapProfile.isPreferred(device)
+            if (hapProfile.isEnabled(device)
                     && BluetoothDevice.BOND_BONDED == cachedDevice.getBondState()) {
                 addMediaDevice(cachedDevice);
             }
@@ -157,7 +157,7 @@
     private void addMediaDevice(CachedBluetoothDevice cachedDevice) {
         MediaDevice mediaDevice = findMediaDevice(MediaDeviceUtils.getId(cachedDevice));
         if (mediaDevice == null) {
-            mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice);
+            mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, null, null, null);
             cachedDevice.registerCallback(mDeviceAttributeChangeCallback);
             mLastAddedDevice = mediaDevice;
             mMediaDevices.add(mediaDevice);
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
index 99c7dcf..b725ba5 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaDevice.java
@@ -30,16 +30,9 @@
 
     private static final String TAG = "InfoMediaDevice";
 
-    private final MediaRoute2Info mRouteInfo;
-    private final MediaRouter2Manager mRouterManager;
-    private final String mPackageName;
-
     InfoMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
             String packageName) {
-        super(context, MediaDeviceType.TYPE_CAST_DEVICE);
-        mRouterManager = routerManager;
-        mRouteInfo = info;
-        mPackageName = packageName;
+        super(context, MediaDeviceType.TYPE_CAST_DEVICE, routerManager, info, packageName);
         initDeviceRecord();
     }
 
@@ -66,19 +59,6 @@
         return MediaDeviceUtils.getId(mRouteInfo);
     }
 
-    @Override
-    public boolean connect() {
-        setConnectedRecord();
-        mRouterManager.selectRoute(mPackageName, mRouteInfo);
-        return true;
-    }
-
-    @Override
-    public void disconnect() {
-        //TODO(b/144535188): disconnected last select device
-    }
-
-    @Override
     public boolean isConnected() {
         return true;
     }
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
index e008cd03..e910967 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/InfoMediaManager.java
@@ -15,13 +15,23 @@
  */
 package com.android.settingslib.media;
 
+import static android.media.MediaRoute2Info.DEVICE_TYPE_BLUETOOTH;
+import static android.media.MediaRoute2Info.DEVICE_TYPE_REMOTE_TV;
+import static android.media.MediaRoute2Info.DEVICE_TYPE_UNKNOWN;
+
 import android.app.Notification;
+import android.bluetooth.BluetoothAdapter;
+import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 import android.media.MediaRoute2Info;
 import android.media.MediaRouter2Manager;
+import android.media.RoutingSessionInfo;
 import android.text.TextUtils;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.bluetooth.CachedBluetoothDevice;
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 import java.util.List;
 import java.util.concurrent.Executor;
@@ -40,15 +50,19 @@
     final Executor mExecutor = Executors.newSingleThreadExecutor();
     @VisibleForTesting
     MediaRouter2Manager mRouterManager;
+    @VisibleForTesting
+    String mPackageName;
 
-    private String mPackageName;
     private MediaDevice mCurrentConnectedDevice;
+    private LocalBluetoothManager mBluetoothManager;
 
-    public InfoMediaManager(Context context, String packageName, Notification notification) {
+    public InfoMediaManager(Context context, String packageName, Notification notification,
+            LocalBluetoothManager localBluetoothManager) {
         super(context, notification);
 
         mRouterManager = MediaRouter2Manager.getInstance(context);
-        if (packageName != null) {
+        mBluetoothManager = localBluetoothManager;
+        if (!TextUtils.isEmpty(packageName)) {
             mPackageName = packageName;
         }
     }
@@ -57,6 +71,7 @@
     public void startScan() {
         mMediaDevices.clear();
         mRouterManager.registerCallback(mExecutor, mMediaRouterCallback);
+        refreshDevices();
     }
 
     @VisibleForTesting
@@ -79,21 +94,87 @@
         return mCurrentConnectedDevice;
     }
 
-    class RouterManagerCallback extends MediaRouter2Manager.Callback {
-
-        private void refreshDevices() {
-            mMediaDevices.clear();
-            mCurrentConnectedDevice = null;
-            for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
-                final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, route,
-                        mPackageName);
-                if (TextUtils.equals(route.getClientPackageName(), mPackageName)) {
-                    mCurrentConnectedDevice = device;
-                }
-                mMediaDevices.add(device);
-            }
-            dispatchDeviceListAdded();
+    private void refreshDevices() {
+        mMediaDevices.clear();
+        mCurrentConnectedDevice = null;
+        if (TextUtils.isEmpty(mPackageName)) {
+            buildAllRoutes();
+        } else {
+            buildAvailableRoutes();
         }
+        dispatchDeviceListAdded();
+    }
+
+    private void buildAllRoutes() {
+        for (MediaRoute2Info route : mRouterManager.getAllRoutes()) {
+            addMediaDevice(route);
+        }
+    }
+
+    private void buildAvailableRoutes() {
+        for (MediaRoute2Info route : mRouterManager.getAvailableRoutes(mPackageName)) {
+            addMediaDevice(route);
+        }
+    }
+
+    private void addMediaDevice(MediaRoute2Info route) {
+        final int deviceType = route.getDeviceType();
+        MediaDevice mediaDevice = null;
+        switch (deviceType) {
+            case DEVICE_TYPE_UNKNOWN:
+                //TODO(b/148765806): use correct device type once api is ready.
+                final String defaultRoute = "DEFAULT_ROUTE";
+                if (TextUtils.equals(defaultRoute, route.getOriginalId())) {
+                    mediaDevice =
+                            new PhoneMediaDevice(mContext, mRouterManager, route, mPackageName);
+                } else {
+                    mediaDevice = new InfoMediaDevice(mContext, mRouterManager, route,
+                            mPackageName);
+                    if (!TextUtils.isEmpty(mPackageName)
+                            && TextUtils.equals(route.getClientPackageName(), mPackageName)) {
+                        mCurrentConnectedDevice = mediaDevice;
+                    }
+                }
+                break;
+            case DEVICE_TYPE_REMOTE_TV:
+                break;
+            case DEVICE_TYPE_BLUETOOTH:
+                final BluetoothDevice device =
+                        BluetoothAdapter.getDefaultAdapter().getRemoteDevice(route.getOriginalId());
+                final CachedBluetoothDevice cachedDevice =
+                        mBluetoothManager.getCachedDeviceManager().findDevice(device);
+                mediaDevice = new BluetoothMediaDevice(mContext, cachedDevice, mRouterManager,
+                        route, mPackageName);
+                break;
+            default:
+                Log.w(TAG, "addMediaDevice() unknown device type : " + deviceType);
+                break;
+
+        }
+
+        if (mediaDevice != null) {
+            mMediaDevices.add(mediaDevice);
+        }
+    }
+
+    /**
+     * Transfer MediaDevice for media without package name.
+     */
+    public boolean connectDeviceWithoutPackageName(MediaDevice device) {
+        boolean isConnected = false;
+        final List<RoutingSessionInfo> infos = mRouterManager.getActiveSessions();
+        if (infos.size() > 0) {
+            final RoutingSessionInfo info = infos.get(0);
+            final MediaRouter2Manager.RoutingController controller =
+                    mRouterManager.getControllerForSession(info);
+
+            controller.transferToRoute(device.mRouteInfo);
+            isConnected = true;
+        }
+        return isConnected;
+    }
+
+    class RouterManagerCallback extends MediaRouter2Manager.Callback {
 
         @Override
         public void onRoutesAdded(List<MediaRoute2Info> routes) {
@@ -106,5 +187,10 @@
                 refreshDevices();
             }
         }
+
+        @Override
+        public void onRoutesChanged(List<MediaRoute2Info> routes) {
+            refreshDevices();
+        }
     }
 }
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
index e85a102..984ab11 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/LocalMediaManager.java
@@ -35,6 +35,7 @@
 import java.util.Collections;
 import java.util.Comparator;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * LocalMediaManager provide interface to get MediaDevice list and transfer media to MediaDevice.
@@ -53,12 +54,11 @@
         int STATE_DISCONNECTED = 3;
     }
 
-    private final Collection<DeviceCallback> mCallbacks = new ArrayList<>();
+    private final Collection<DeviceCallback> mCallbacks = new CopyOnWriteArrayList<>();
     @VisibleForTesting
     final MediaDeviceCallback mMediaDeviceCallback = new MediaDeviceCallback();
 
     private Context mContext;
-    private BluetoothMediaManager mBluetoothMediaManager;
     private LocalBluetoothManager mLocalBluetoothManager;
     private InfoMediaManager mInfoMediaManager;
     private String mPackageName;
@@ -74,18 +74,14 @@
      * Register to start receiving callbacks for MediaDevice events.
      */
     public void registerCallback(DeviceCallback callback) {
-        synchronized (mCallbacks) {
-            mCallbacks.add(callback);
-        }
+        mCallbacks.add(callback);
     }
 
     /**
      * Unregister to stop receiving callbacks for MediaDevice events
      */
     public void unregisterCallback(DeviceCallback callback) {
-        synchronized (mCallbacks) {
-            mCallbacks.remove(callback);
-        }
+        mCallbacks.remove(callback);
     }
 
     public LocalMediaManager(Context context, String packageName, Notification notification) {
@@ -98,18 +94,18 @@
             return;
         }
 
-        mBluetoothMediaManager =
-                new BluetoothMediaManager(context, mLocalBluetoothManager, notification);
-        mInfoMediaManager = new InfoMediaManager(context, packageName, notification);
+        mInfoMediaManager =
+                new InfoMediaManager(context, packageName, notification, mLocalBluetoothManager);
     }
 
     @VisibleForTesting
     LocalMediaManager(Context context, LocalBluetoothManager localBluetoothManager,
-            BluetoothMediaManager bluetoothMediaManager, InfoMediaManager infoMediaManager) {
+            InfoMediaManager infoMediaManager, String packageName) {
         mContext = context;
         mLocalBluetoothManager = localBluetoothManager;
-        mBluetoothMediaManager = bluetoothMediaManager;
         mInfoMediaManager = infoMediaManager;
+        mPackageName = packageName;
+
     }
 
     /**
@@ -136,7 +132,12 @@
             mCurrentConnectedDevice.disconnect();
         }
 
-        final boolean isConnected = device.connect();
+        boolean isConnected = false;
+        if (TextUtils.isEmpty(mPackageName)) {
+            isConnected = mInfoMediaManager.connectDeviceWithoutPackageName(device);
+        } else {
+            isConnected = device.connect();
+        }
         if (isConnected) {
             mCurrentConnectedDevice = device;
         }
@@ -148,10 +149,8 @@
     }
 
     void dispatchSelectedDeviceStateChanged(MediaDevice device, @MediaDeviceState int state) {
-        synchronized (mCallbacks) {
-            for (DeviceCallback callback : mCallbacks) {
-                callback.onSelectedDeviceStateChanged(device, state);
-            }
+        for (DeviceCallback callback : getCallbacks()) {
+            callback.onSelectedDeviceStateChanged(device, state);
         }
     }
 
@@ -160,45 +159,20 @@
      */
     public void startScan() {
         mMediaDevices.clear();
-        mBluetoothMediaManager.registerCallback(mMediaDeviceCallback);
-        mBluetoothMediaManager.startScan();
-        if (!TextUtils.isEmpty(mPackageName)) {
-            mInfoMediaManager.registerCallback(mMediaDeviceCallback);
-            mInfoMediaManager.startScan();
-        }
-    }
-
-    private void addPhoneDeviceIfNecessary() {
-        // add phone device to list if there have any Bluetooth device and cast device.
-        if (mMediaDevices.size() > 0 && !mMediaDevices.contains(mPhoneDevice)) {
-            if (mPhoneDevice == null) {
-                mPhoneDevice = new PhoneMediaDevice(mContext, mLocalBluetoothManager);
-            }
-            mMediaDevices.add(mPhoneDevice);
-        }
-    }
-
-    private void removePhoneMediaDeviceIfNecessary() {
-        // if PhoneMediaDevice is the last item in the list, remove it.
-        if (mMediaDevices.size() == 1 && mMediaDevices.contains(mPhoneDevice)) {
-            mMediaDevices.clear();
-        }
+        mInfoMediaManager.registerCallback(mMediaDeviceCallback);
+        mInfoMediaManager.startScan();
     }
 
     void dispatchDeviceListUpdate() {
-        synchronized (mCallbacks) {
-            Collections.sort(mMediaDevices, COMPARATOR);
-            for (DeviceCallback callback : mCallbacks) {
-                callback.onDeviceListUpdate(new ArrayList<>(mMediaDevices));
-            }
+        Collections.sort(mMediaDevices, COMPARATOR);
+        for (DeviceCallback callback : getCallbacks()) {
+            callback.onDeviceListUpdate(new ArrayList<>(mMediaDevices));
         }
     }
 
     void dispatchDeviceAttributesChanged() {
-        synchronized (mCallbacks) {
-            for (DeviceCallback callback : mCallbacks) {
-                callback.onDeviceAttributesChanged();
-            }
+        for (DeviceCallback callback : getCallbacks()) {
+            callback.onDeviceAttributesChanged();
         }
     }
 
@@ -206,12 +180,8 @@
      * Stop scan MediaDevice
      */
     public void stopScan() {
-        mBluetoothMediaManager.unregisterCallback(mMediaDeviceCallback);
-        mBluetoothMediaManager.stopScan();
-        if (!TextUtils.isEmpty(mPackageName)) {
-            mInfoMediaManager.unregisterCallback(mMediaDeviceCallback);
-            mInfoMediaManager.stopScan();
-        }
+        mInfoMediaManager.unregisterCallback(mMediaDeviceCallback);
+        mInfoMediaManager.stopScan();
     }
 
     /**
@@ -232,6 +202,22 @@
     }
 
     /**
+     * Find the MediaDevice from all media devices by id.
+     *
+     * @param id the unique id of MediaDevice
+     * @return MediaDevice
+     */
+    public MediaDevice getMediaDeviceById(String id) {
+        for (MediaDevice mediaDevice : mMediaDevices) {
+            if (mediaDevice.getId().equals(id)) {
+                return mediaDevice;
+            }
+        }
+        Log.i(TAG, "Unable to find device " + id);
+        return null;
+    }
+
+    /**
      * Find the current connected MediaDevice.
      *
      * @return MediaDevice
@@ -240,15 +226,34 @@
         return mCurrentConnectedDevice;
     }
 
+    /**
+     * Find the active MediaDevice.
+     *
+     * @param type the media device type.
+     * @return MediaDevice list
+     */
+    public List<MediaDevice> getActiveMediaDevice(@MediaDevice.MediaDeviceType int type) {
+        final List<MediaDevice> devices = new ArrayList<>();
+        for (MediaDevice device : mMediaDevices) {
+            if (type == device.mType && device.getClientPackageName() != null) {
+                devices.add(device);
+            }
+        }
+        return devices;
+    }
+
     private MediaDevice updateCurrentConnectedDevice() {
+        MediaDevice phoneMediaDevice = null;
         for (MediaDevice device : mMediaDevices) {
             if (device instanceof  BluetoothMediaDevice) {
                 if (isConnected(((BluetoothMediaDevice) device).getCachedDevice())) {
                     return device;
                 }
+            } else if (device instanceof PhoneMediaDevice) {
+                phoneMediaDevice = device;
             }
         }
-        return mMediaDevices.contains(mPhoneDevice) ? mPhoneDevice : null;
+        return mMediaDevices.contains(phoneMediaDevice) ? phoneMediaDevice : null;
     }
 
     private boolean isConnected(CachedBluetoothDevice device) {
@@ -256,43 +261,33 @@
                 || device.isActiveDevice(BluetoothProfile.HEARING_AID);
     }
 
+    private Collection<DeviceCallback> getCallbacks() {
+        return new CopyOnWriteArrayList<>(mCallbacks);
+    }
+
     class MediaDeviceCallback implements MediaManager.MediaDeviceCallback {
         @Override
         public void onDeviceAdded(MediaDevice device) {
             if (!mMediaDevices.contains(device)) {
                 mMediaDevices.add(device);
-                addPhoneDeviceIfNecessary();
                 dispatchDeviceListUpdate();
             }
         }
 
         @Override
         public void onDeviceListAdded(List<MediaDevice> devices) {
-            for (MediaDevice device : devices) {
-                if (getMediaDeviceById(mMediaDevices, device.getId()) == null) {
-                    mMediaDevices.add(device);
-                }
-            }
-            addPhoneDeviceIfNecessary();
+            mMediaDevices.clear();
+            mMediaDevices.addAll(devices);
             final MediaDevice infoMediaDevice = mInfoMediaManager.getCurrentConnectedDevice();
             mCurrentConnectedDevice = infoMediaDevice != null
                     ? infoMediaDevice : updateCurrentConnectedDevice();
-            updatePhoneMediaDeviceSummary();
             dispatchDeviceListUpdate();
         }
 
-        private void updatePhoneMediaDeviceSummary() {
-            if (mPhoneDevice != null) {
-                ((PhoneMediaDevice) mPhoneDevice)
-                        .updateSummary(mCurrentConnectedDevice == mPhoneDevice);
-            }
-        }
-
         @Override
         public void onDeviceRemoved(MediaDevice device) {
             if (mMediaDevices.contains(device)) {
                 mMediaDevices.remove(device);
-                removePhoneMediaDeviceIfNecessary();
                 dispatchDeviceListUpdate();
             }
         }
@@ -300,7 +295,6 @@
         @Override
         public void onDeviceListRemoved(List<MediaDevice> devices) {
             mMediaDevices.removeAll(devices);
-            removePhoneMediaDeviceIfNecessary();
             dispatchDeviceListUpdate();
         }
 
@@ -313,7 +307,6 @@
                 return;
             }
             mCurrentConnectedDevice = connectDevice;
-            updatePhoneMediaDeviceSummary();
             dispatchDeviceAttributesChanged();
         }
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
index 53a8520..33c3d7e 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaDevice.java
@@ -16,10 +16,17 @@
 package com.android.settingslib.media;
 
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
+import android.media.MediaRoute2Info;
+import android.media.MediaRouter2Manager;
 import android.text.TextUtils;
+import android.util.Log;
 
 import androidx.annotation.IntDef;
+import androidx.annotation.VisibleForTesting;
+
+import com.android.settingslib.R;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
@@ -40,14 +47,23 @@
         int TYPE_BLUETOOTH_DEVICE = 3;
     }
 
+    @VisibleForTesting
+    int mType;
+
     private int mConnectedRecord;
 
-    protected Context mContext;
-    protected int mType;
+    protected final Context mContext;
+    protected final MediaRoute2Info mRouteInfo;
+    protected final MediaRouter2Manager mRouterManager;
+    protected final String mPackageName;
 
-    MediaDevice(Context context, @MediaDeviceType int type) {
+    MediaDevice(Context context, @MediaDeviceType int type, MediaRouter2Manager routerManager,
+            MediaRoute2Info info, String packageName) {
         mType = type;
         mContext = context;
+        mRouteInfo = info;
+        mRouterManager = routerManager;
+        mPackageName = packageName;
     }
 
     void initDeviceRecord() {
@@ -83,13 +99,6 @@
      */
     public abstract String getId();
 
-    /**
-     * Transfer MediaDevice for media
-     *
-     * @return result of transfer media
-     */
-    public abstract boolean connect();
-
     void setConnectedRecord() {
         mConnectedRecord++;
         ConnectionRecordManager.getInstance().setConnectionRecord(mContext, getId(),
@@ -97,11 +106,6 @@
     }
 
     /**
-     * Stop transfer MediaDevice
-     */
-    public abstract void disconnect();
-
-    /**
      * According the MediaDevice type to check whether we are connected to this MediaDevice.
      *
      * @return Whether it is connected.
@@ -109,6 +113,93 @@
     public abstract boolean isConnected();
 
     /**
+     * Request to set volume.
+     *
+     * @param volume is the new value.
+     */
+
+    public void requestSetVolume(int volume) {
+        mRouterManager.requestSetVolume(mRouteInfo, volume);
+    }
+
+    /**
+     * Get max volume from MediaDevice.
+     *
+     * @return max volume.
+     */
+    public int getMaxVolume() {
+        return mRouteInfo.getVolumeMax();
+    }
+
+    /**
+     * Get current volume from MediaDevice.
+     *
+     * @return current volume.
+     */
+    public int getCurrentVolume() {
+        return mRouteInfo.getVolume();
+    }
+
+    /**
+     * Get application package name.
+     *
+     * @return package name.
+     */
+    public String getClientPackageName() {
+        return mRouteInfo.getClientPackageName();
+    }
+
+    /**
+     * Get application label from MediaDevice.
+     *
+     * @return application label.
+     */
+    public String getClientAppLabel() {
+        final String packageName = mRouteInfo.getClientPackageName();
+        if (TextUtils.isEmpty(packageName)) {
+            Log.d(TAG, "Client package name is empty");
+            return mContext.getResources().getString(R.string.unknown);
+        }
+        try {
+            final PackageManager packageManager = mContext.getPackageManager();
+            final String appLabel = packageManager.getApplicationLabel(
+                    packageManager.getApplicationInfo(packageName, 0)).toString();
+            if (!TextUtils.isEmpty(appLabel)) {
+                return appLabel;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+            Log.e(TAG, "unable to find " + packageName);
+        }
+        return mContext.getResources().getString(R.string.unknown);
+    }
+
+    /**
+     * Get application label from MediaDevice.
+     *
+     * @return application label.
+     */
+    public int getDeviceType() {
+        return mType;
+    }
+
+    /**
+     * Transfer MediaDevice for media
+     *
+     * @return result of transfer media
+     */
+    public boolean connect() {
+        setConnectedRecord();
+        mRouterManager.selectRoute(mPackageName, mRouteInfo);
+        return true;
+    }
+
+    /**
+     * Stop transfer MediaDevice
+     */
+    public void disconnect() {
+    }
+
+    /**
      * Rules:
      * 1. If there is one of the connected devices identified as a carkit, this carkit will
      * be always on the top of the device list. Rule 2 and Rule 3 can’t overrule this rule.
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaManager.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaManager.java
index 7898982..73551f60 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaManager.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaManager.java
@@ -22,6 +22,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.concurrent.CopyOnWriteArrayList;
 
 /**
  * MediaManager provide interface to get MediaDevice list.
@@ -30,7 +31,7 @@
 
     private static final String TAG = "MediaManager";
 
-    protected final Collection<MediaDeviceCallback> mCallbacks = new ArrayList<>();
+    protected final Collection<MediaDeviceCallback> mCallbacks = new CopyOnWriteArrayList<>();
     protected final List<MediaDevice> mMediaDevices = new ArrayList<>();
 
     protected Context mContext;
@@ -42,18 +43,14 @@
     }
 
     protected void registerCallback(MediaDeviceCallback callback) {
-        synchronized (mCallbacks) {
-            if (!mCallbacks.contains(callback)) {
-                mCallbacks.add(callback);
-            }
+        if (!mCallbacks.contains(callback)) {
+            mCallbacks.add(callback);
         }
     }
 
     protected void unregisterCallback(MediaDeviceCallback callback) {
-        synchronized (mCallbacks) {
-            if (mCallbacks.contains(callback)) {
-                mCallbacks.remove(callback);
-            }
+        if (mCallbacks.contains(callback)) {
+            mCallbacks.remove(callback);
         }
     }
 
@@ -78,53 +75,45 @@
     }
 
     protected void dispatchDeviceAdded(MediaDevice mediaDevice) {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onDeviceAdded(mediaDevice);
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onDeviceAdded(mediaDevice);
         }
     }
 
     protected void dispatchDeviceRemoved(MediaDevice mediaDevice) {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onDeviceRemoved(mediaDevice);
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onDeviceRemoved(mediaDevice);
         }
     }
 
     protected void dispatchDeviceListAdded() {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onDeviceListAdded(new ArrayList<>(mMediaDevices));
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onDeviceListAdded(new ArrayList<>(mMediaDevices));
         }
     }
 
     protected void dispatchDeviceListRemoved(List<MediaDevice> devices) {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onDeviceListRemoved(devices);
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onDeviceListRemoved(devices);
         }
     }
 
     protected void dispatchConnectedDeviceChanged(String id) {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onConnectedDeviceChanged(id);
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onConnectedDeviceChanged(id);
         }
     }
 
     protected void dispatchDataChanged() {
-        synchronized (mCallbacks) {
-            for (MediaDeviceCallback callback : mCallbacks) {
-                callback.onDeviceAttributesChanged();
-            }
+        for (MediaDeviceCallback callback : getCallbacks()) {
+            callback.onDeviceAttributesChanged();
         }
     }
 
+    private Collection<MediaDeviceCallback> getCallbacks() {
+        return new CopyOnWriteArrayList<>(mCallbacks);
+    }
+
     /**
      * Callback for notifying device is added, removed and attributes changed.
      */
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java b/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java
index 248b118..f341bf1 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/MediaOutputSliceConstants.java
@@ -32,6 +32,16 @@
     public static final String KEY_REMOTE_MEDIA = "remote_media";
 
     /**
+     * Key for the {@link android.media.session.MediaSession.Token}.
+     */
+    public static final String KEY_MEDIA_SESSION_TOKEN = "key_media_session_token";
+
+    /**
+     * Key for the {@link android.media.RoutingSessionInfo#getId()}
+     */
+    public static final String KEY_SESSION_INFO_ID = "key_session_info_id";
+
+    /**
      * Activity Action: Show a settings dialog containing {@link MediaDevice} to transfer media.
      */
     public static final String ACTION_MEDIA_OUTPUT =
diff --git a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
index af91c34..166fbaa 100644
--- a/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
+++ b/packages/SettingsLib/src/com/android/settingslib/media/PhoneMediaDevice.java
@@ -17,14 +17,11 @@
 
 import android.content.Context;
 import android.graphics.drawable.Drawable;
-import android.util.Log;
+import android.media.MediaRoute2Info;
+import android.media.MediaRouter2Manager;
 
 import com.android.settingslib.R;
-import com.android.settingslib.bluetooth.A2dpProfile;
 import com.android.settingslib.bluetooth.BluetoothUtils;
-import com.android.settingslib.bluetooth.HearingAidProfile;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
 
 /**
  * PhoneMediaDevice extends MediaDevice to represents Phone device.
@@ -35,15 +32,12 @@
 
     public static final String ID = "phone_media_device_id_1";
 
-    private LocalBluetoothProfileManager mProfileManager;
-    private LocalBluetoothManager mLocalBluetoothManager;
     private String mSummary = "";
 
-    PhoneMediaDevice(Context context, LocalBluetoothManager localBluetoothManager) {
-        super(context, MediaDeviceType.TYPE_PHONE_DEVICE);
+    PhoneMediaDevice(Context context, MediaRouter2Manager routerManager, MediaRoute2Info info,
+            String packageName) {
+        super(context, MediaDeviceType.TYPE_PHONE_DEVICE, routerManager, info, packageName);
 
-        mLocalBluetoothManager = localBluetoothManager;
-        mProfileManager = mLocalBluetoothManager.getProfileManager();
         initDeviceRecord();
     }
 
@@ -69,32 +63,6 @@
     }
 
     @Override
-    public boolean connect() {
-        final HearingAidProfile hapProfile = mProfileManager.getHearingAidProfile();
-        final A2dpProfile a2dpProfile = mProfileManager.getA2dpProfile();
-
-        // Some device may not have HearingAidProfile, consider all situation to set active device.
-        boolean isConnected = false;
-        if (hapProfile != null && a2dpProfile != null) {
-            isConnected = hapProfile.setActiveDevice(null) && a2dpProfile.setActiveDevice(null);
-        } else if (a2dpProfile != null) {
-            isConnected = a2dpProfile.setActiveDevice(null);
-        } else if (hapProfile != null) {
-            isConnected = hapProfile.setActiveDevice(null);
-        }
-        updateSummary(isConnected);
-        setConnectedRecord();
-
-        Log.d(TAG, "connect() device : " + getName() + ", is selected : " + isConnected);
-        return isConnected;
-    }
-
-    @Override
-    public void disconnect() {
-        updateSummary(false);
-    }
-
-    @Override
     public boolean isConnected() {
         return true;
     }
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
index 84dde05..954eb9b 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/AccessPoint.java
@@ -16,6 +16,9 @@
 
 package com.android.settingslib.wifi;
 
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_PERMANENTLY_DISABLED;
+
 import android.annotation.IntDef;
 import android.annotation.MainThread;
 import android.annotation.Nullable;
@@ -178,6 +181,7 @@
     static final String KEY_SCANRESULTS = "key_scanresults";
     static final String KEY_SCOREDNETWORKCACHE = "key_scorednetworkcache";
     static final String KEY_CONFIG = "key_config";
+    static final String KEY_PASSPOINT_UNIQUE_ID = "key_passpoint_unique_id";
     static final String KEY_FQDN = "key_fqdn";
     static final String KEY_PROVIDER_FRIENDLY_NAME = "key_provider_friendly_name";
     static final String KEY_EAPTYPE = "eap_psktype";
@@ -214,7 +218,7 @@
     public static final int UNREACHABLE_RSSI = Integer.MIN_VALUE;
 
     public static final String KEY_PREFIX_AP = "AP:";
-    public static final String KEY_PREFIX_FQDN = "FQDN:";
+    public static final String KEY_PREFIX_PASSPOINT_UNIQUE_ID = "PASSPOINT:";
     public static final String KEY_PREFIX_OSU = "OSU:";
 
     private final Context mContext;
@@ -247,6 +251,7 @@
      * Information associated with the {@link PasspointConfiguration}.  Only maintaining
      * the relevant info to preserve spaces.
      */
+    private String mPasspointUniqueId;
     private String mFqdn;
     private String mProviderFriendlyName;
     private boolean mIsRoaming = false;
@@ -305,6 +310,9 @@
                 mScoredNetworkCache.put(timedScore.getScore().networkKey.wifiKey.bssid, timedScore);
             }
         }
+        if (savedState.containsKey(KEY_PASSPOINT_UNIQUE_ID)) {
+            mPasspointUniqueId = savedState.getString(KEY_PASSPOINT_UNIQUE_ID);
+        }
         if (savedState.containsKey(KEY_FQDN)) {
             mFqdn = savedState.getString(KEY_FQDN);
         }
@@ -348,6 +356,7 @@
      */
     public AccessPoint(Context context, PasspointConfiguration config) {
         mContext = context;
+        mPasspointUniqueId = config.getUniqueId();
         mFqdn = config.getHomeSp().getFqdn();
         mProviderFriendlyName = config.getHomeSp().getFriendlyName();
         mSubscriptionExpirationTimeInMillis = config.getSubscriptionExpirationTimeInMillis();
@@ -368,6 +377,7 @@
         mContext = context;
         networkId = config.networkId;
         mConfig = config;
+        mPasspointUniqueId = config.getKey();
         mFqdn = config.FQDN;
         setScanResultsPasspoint(homeScans, roamingScans);
         updateKey();
@@ -404,7 +414,7 @@
         if (isPasspoint()) {
             mKey = getKey(mConfig);
         } else if (isPasspointConfig()) {
-            mKey = getKey(mFqdn);
+            mKey = getKey(mPasspointUniqueId);
         } else if (isOsuProvider()) {
             mKey = getKey(mOsuProvider);
         } else { // Non-Passpoint AP
@@ -654,7 +664,7 @@
                 }
             }
         }
-        return oldMetering == mIsScoredNetworkMetered;
+        return oldMetering != mIsScoredNetworkMetered;
     }
 
     /**
@@ -674,19 +684,19 @@
      */
     public static String getKey(WifiConfiguration config) {
         if (config.isPasspoint()) {
-            return getKey(config.FQDN);
+            return getKey(config.getKey());
         } else {
             return getKey(removeDoubleQuotes(config.SSID), config.BSSID, getSecurity(config));
         }
     }
 
     /**
-     * Returns the AccessPoint key corresponding to a Passpoint network by its FQDN.
+     * Returns the AccessPoint key corresponding to a Passpoint network by its unique identifier.
      */
-    public static String getKey(String fqdn) {
+    public static String getKey(String passpointUniqueId) {
         return new StringBuilder()
-                .append(KEY_PREFIX_FQDN)
-                .append(fqdn).toString();
+                .append(KEY_PREFIX_PASSPOINT_UNIQUE_ID)
+                .append(passpointUniqueId).toString();
     }
 
     /**
@@ -763,7 +773,7 @@
 
     public boolean matches(WifiConfiguration config) {
         if (config.isPasspoint()) {
-            return (isPasspoint() && config.FQDN.equals(mConfig.FQDN));
+            return (isPasspoint() && config.getKey().equals(mConfig.getKey()));
         }
 
         if (!ssid.equals(removeDoubleQuotes(config.SSID))
@@ -1049,7 +1059,7 @@
     public String getConfigName() {
         if (mConfig != null && mConfig.isPasspoint()) {
             return mConfig.providerFriendlyName;
-        } else if (mFqdn != null) {
+        } else if (mPasspointUniqueId != null) {
             return mProviderFriendlyName;
         } else {
             return ssid;
@@ -1144,11 +1154,15 @@
                     mInfo != null ? mInfo.getRequestingPackageName() : null));
         } else { // not active
             if (mConfig != null && mConfig.hasNoInternetAccess()) {
-                int messageID = mConfig.getNetworkSelectionStatus().isNetworkPermanentlyDisabled()
+                int messageID =
+                        mConfig.getNetworkSelectionStatus().getNetworkSelectionStatus()
+                                == NETWORK_SELECTION_PERMANENTLY_DISABLED
                         ? R.string.wifi_no_internet_no_reconnect
                         : R.string.wifi_no_internet;
                 summary.append(mContext.getString(messageID));
-            } else if (mConfig != null && !mConfig.getNetworkSelectionStatus().isNetworkEnabled()) {
+            } else if (mConfig != null
+                    && (mConfig.getNetworkSelectionStatus().getNetworkSelectionStatus()
+                            != NETWORK_SELECTION_ENABLED)) {
                 WifiConfiguration.NetworkSelectionStatus networkStatus =
                         mConfig.getNetworkSelectionStatus();
                 switch (networkStatus.getNetworkSelectionDisableReason()) {
@@ -1170,8 +1184,8 @@
             } else { // In range, not disabled.
                 if (mConfig != null) { // Is saved network
                     // Last attempt to connect to this failed. Show reason why
-                    switch (mConfig.recentFailure.getAssociationStatus()) {
-                        case WifiConfiguration.RecentFailure.STATUS_AP_UNABLE_TO_HANDLE_NEW_STA:
+                    switch (mConfig.getRecentFailureReason()) {
+                        case WifiConfiguration.RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA:
                             summary.append(mContext.getString(
                                     R.string.wifi_ap_unable_to_handle_new_sta));
                             break;
@@ -1247,7 +1261,7 @@
      * Return true if this AccessPoint represents a Passpoint provider configuration.
      */
     public boolean isPasspointConfig() {
-        return mFqdn != null && mConfig == null;
+        return mPasspointUniqueId != null && mConfig == null;
     }
 
     /**
@@ -1303,8 +1317,12 @@
         if (info.isOsuAp() || mOsuStatus != null) {
             return (info.isOsuAp() && mOsuStatus != null);
         } else if (info.isPasspointAp() || isPasspoint()) {
+            // TODO: Use TextUtils.equals(info.getPasspointUniqueId(), mConfig.getKey()) when API
+            //  is available
             return (info.isPasspointAp() && isPasspoint()
-                    && TextUtils.equals(info.getPasspointFqdn(), mConfig.FQDN));
+                    && TextUtils.equals(info.getPasspointFqdn(), mConfig.FQDN)
+                    && TextUtils.equals(info.getPasspointProviderFriendlyName(),
+                    mConfig.providerFriendlyName));
         }
 
         if (networkId != WifiConfiguration.INVALID_NETWORK_ID) {
@@ -1370,6 +1388,9 @@
         if (mNetworkInfo != null) {
             savedState.putParcelable(KEY_NETWORKINFO, mNetworkInfo);
         }
+        if (mPasspointUniqueId != null) {
+            savedState.putString(KEY_PASSPOINT_UNIQUE_ID, mPasspointUniqueId);
+        }
         if (mFqdn != null) {
             savedState.putString(KEY_FQDN, mFqdn);
         }
@@ -1942,11 +1963,11 @@
                 return;
             }
 
-            String fqdn = passpointConfig.getHomeSp().getFqdn();
+            String uniqueId = passpointConfig.getUniqueId();
             for (Pair<WifiConfiguration, Map<Integer, List<ScanResult>>> pairing :
                     wifiManager.getAllMatchingWifiConfigs(wifiManager.getScanResults())) {
                 WifiConfiguration config = pairing.first;
-                if (TextUtils.equals(config.FQDN, fqdn)) {
+                if (TextUtils.equals(config.getKey(), uniqueId)) {
                     List<ScanResult> homeScans =
                             pairing.second.get(WifiManager.PASSPOINT_HOME_NETWORK);
                     List<ScanResult> roamingScans =
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java
index f21e466..2fb2481 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/TestAccessPointBuilder.java
@@ -84,7 +84,7 @@
         bundle.putParcelable(AccessPoint.KEY_NETWORKINFO, mNetworkInfo);
         bundle.putParcelable(AccessPoint.KEY_WIFIINFO, mWifiInfo);
         if (mFqdn != null) {
-            bundle.putString(AccessPoint.KEY_FQDN, mFqdn);
+            bundle.putString(AccessPoint.KEY_PASSPOINT_UNIQUE_ID, mFqdn);
         }
         if (mProviderFriendlyName != null) {
             bundle.putString(AccessPoint.KEY_PROVIDER_FRIENDLY_NAME, mProviderFriendlyName);
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
index 26abf71..586c154 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiTracker.java
@@ -606,7 +606,7 @@
 
             List<ScanResult> cachedScanResults = new ArrayList<>(mScanResultCache.values());
 
-            // Add a unique Passpoint AccessPoint for each Passpoint profile's FQDN.
+            // Add a unique Passpoint AccessPoint for each Passpoint profile's unique identifier.
             accessPoints.addAll(updatePasspointAccessPoints(
                     mWifiManager.getAllMatchingWifiConfigs(cachedScanResults), cachedAccessPoints));
 
diff --git a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
index 78ccba0..d233649 100644
--- a/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
+++ b/packages/SettingsLib/src/com/android/settingslib/wifi/WifiUtils.java
@@ -16,9 +16,13 @@
 
 package com.android.settingslib.wifi;
 
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLED;
+import static android.net.wifi.WifiConfiguration.NetworkSelectionStatus.getMaxNetworkSelectionDisableReason;
+
 import android.content.Context;
 import android.net.wifi.ScanResult;
 import android.net.wifi.WifiConfiguration;
+import android.net.wifi.WifiConfiguration.NetworkSelectionStatus;
 import android.net.wifi.WifiInfo;
 import android.os.SystemClock;
 
@@ -41,7 +45,9 @@
             summary.append(" f=" + Integer.toString(info.getFrequency()));
         }
         summary.append(" " + getVisibilityStatus(accessPoint));
-        if (config != null && !config.getNetworkSelectionStatus().isNetworkEnabled()) {
+        if (config != null
+                && (config.getNetworkSelectionStatus().getNetworkSelectionStatus()
+                        != NETWORK_SELECTION_ENABLED)) {
             summary.append(" (" + config.getNetworkSelectionStatus().getNetworkStatusString());
             if (config.getNetworkSelectionStatus().getDisableTime() > 0) {
                 long now = System.currentTimeMillis();
@@ -58,15 +64,13 @@
         }
 
         if (config != null) {
-            WifiConfiguration.NetworkSelectionStatus networkStatus =
-                    config.getNetworkSelectionStatus();
-            for (int index = WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_ENABLE;
-                    index < WifiConfiguration.NetworkSelectionStatus
-                            .NETWORK_SELECTION_DISABLED_MAX; index++) {
-                if (networkStatus.getDisableReasonCounter(index) != 0) {
-                    summary.append(" " + WifiConfiguration.NetworkSelectionStatus
-                            .getNetworkDisableReasonString(index) + "="
-                            + networkStatus.getDisableReasonCounter(index));
+            NetworkSelectionStatus networkStatus = config.getNetworkSelectionStatus();
+            for (int reason = 0; reason <= getMaxNetworkSelectionDisableReason(); reason++) {
+                if (networkStatus.getDisableReasonCounter(reason) != 0) {
+                    summary.append(" ")
+                            .append(NetworkSelectionStatus.getNetworkDisableReasonString(reason))
+                            .append("=")
+                            .append(networkStatus.getDisableReasonCounter(reason));
                 }
             }
         }
diff --git a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
index 42f3cbb..bcabec8 100644
--- a/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
+++ b/packages/SettingsLib/tests/integ/src/com/android/settingslib/wifi/AccessPointTest.java
@@ -465,6 +465,8 @@
         WifiConfiguration.NetworkSelectionStatus status =
                 mock(WifiConfiguration.NetworkSelectionStatus.class);
         when(configuration.getNetworkSelectionStatus()).thenReturn(status);
+        when(status.getNetworkSelectionStatus()).thenReturn(
+                WifiConfiguration.NetworkSelectionStatus.NETWORK_SELECTION_TEMPORARY_DISABLED);
         when(status.getNetworkSelectionDisableReason()).thenReturn(
                 WifiConfiguration.NetworkSelectionStatus.DISABLED_BY_WRONG_PASSWORD);
         AccessPoint ap = new AccessPoint(mContext, configuration);
@@ -1370,13 +1372,13 @@
     public void testOsuAccessPointSummary_showsProvisioningUpdates() {
         OsuProvider provider = createOsuProvider();
         Context spyContext = spy(new ContextWrapper(mContext));
-        AccessPoint osuAccessPoint = new AccessPoint(spyContext, provider,
-                mScanResults);
+        when(spyContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
         Map<OsuProvider, PasspointConfiguration> osuProviderConfigMap = new HashMap<>();
         osuProviderConfigMap.put(provider, null);
-        when(spyContext.getSystemService(Context.WIFI_SERVICE)).thenReturn(mMockWifiManager);
         when(mMockWifiManager.getMatchingPasspointConfigsForOsuProviders(
                 Collections.singleton(provider))).thenReturn(osuProviderConfigMap);
+        AccessPoint osuAccessPoint = new AccessPoint(spyContext, provider,
+                mScanResults);
 
         osuAccessPoint.setListener(mMockAccessPointListener);
 
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
index 1182945..6307caf5 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/UtilsTest.java
@@ -31,6 +31,7 @@
 import android.content.res.Resources;
 import android.location.LocationManager;
 import android.media.AudioManager;
+import android.os.BatteryManager;
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.provider.Settings;
@@ -122,12 +123,12 @@
     public void testGetDefaultStorageManagerDaysToRetain_storageManagerDaysToRetainUsesResources() {
         Resources resources = mock(Resources.class);
         when(resources.getInteger(
-                        eq(
-                                com.android
-                                        .internal
-                                        .R
-                                        .integer
-                                        .config_storageManagerDaystoRetainDefault)))
+                eq(
+                        com.android
+                                .internal
+                                .R
+                                .integer
+                                .config_storageManagerDaystoRetainDefault)))
                 .thenReturn(60);
         assertThat(Utils.getDefaultStorageManagerDaysToRetain(resources)).isEqualTo(60);
     }
@@ -147,7 +148,8 @@
         private static Map<String, Integer> map = new HashMap<>();
 
         @Implementation
-        public static boolean putIntForUser(ContentResolver cr, String name, int value, int userHandle) {
+        public static boolean putIntForUser(ContentResolver cr, String name, int value,
+                int userHandle) {
             map.put(name, value);
             return true;
         }
@@ -312,4 +314,33 @@
         assertThat(Utils.getCombinedServiceState(mServiceState)).isEqualTo(
                 ServiceState.STATE_OUT_OF_SERVICE);
     }
+
+    @Test
+    public void getBatteryStatus_statusIsFull_returnFullString() {
+        final Intent intent = new Intent().putExtra(BatteryManager.EXTRA_LEVEL, 100);
+        final Resources resources = mContext.getResources();
+
+        assertThat(Utils.getBatteryStatus(mContext, intent)).isEqualTo(
+                resources.getString(R.string.battery_info_status_full));
+    }
+
+    @Test
+    public void getBatteryStatus_batteryLevelIs100_returnFullString() {
+        final Intent intent = new Intent().putExtra(BatteryManager.EXTRA_STATUS,
+                BatteryManager.BATTERY_STATUS_FULL);
+        final Resources resources = mContext.getResources();
+
+        assertThat(Utils.getBatteryStatus(mContext, intent)).isEqualTo(
+                resources.getString(R.string.battery_info_status_full));
+    }
+
+    @Test
+    public void getBatteryStatus_batteryLevel99_returnChargingString() {
+        final Intent intent = new Intent().putExtra(BatteryManager.EXTRA_STATUS,
+                BatteryManager.BATTERY_STATUS_CHARGING);
+        final Resources resources = mContext.getResources();
+
+        assertThat(Utils.getBatteryStatus(mContext, intent)).isEqualTo(
+                resources.getString(R.string.battery_info_status_charging));
+    }
 }
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java
index ccb6646..9bb2f22d 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/A2dpSinkProfileTest.java
@@ -16,12 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothA2dpSink;
@@ -68,18 +64,6 @@
     }
 
     @Test
-    public void connect_shouldConnectBluetoothA2dpSink() {
-        mProfile.connect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothA2dpSink() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java
index 9180760..d121e0b 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HfpClientProfileTest.java
@@ -16,12 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
@@ -68,18 +64,6 @@
     }
 
     @Test
-    public void connect_shouldConnectBluetoothHeadsetClient() {
-        mProfile.connect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothHeadsetClient() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HidDeviceProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HidDeviceProfileTest.java
index f38af70..3665d9c 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HidDeviceProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/HidDeviceProfileTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
@@ -65,17 +64,6 @@
     }
 
     @Test
-    public void connect_shouldReturnFalse() {
-        assertThat(mProfile.connect(mBluetoothDevice)).isFalse();
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothHidDevice() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).disconnect(mBluetoothDevice);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/MapClientProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/MapClientProfileTest.java
index 1425c38..25031a6 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/MapClientProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/MapClientProfileTest.java
@@ -16,12 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
@@ -68,18 +64,6 @@
     }
 
     @Test
-    public void connect_shouldConnectBluetoothMapClient() {
-        mProfile.connect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothMapClient() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/PbapClientProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/PbapClientProfileTest.java
index 15f560b..4305a3b 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/PbapClientProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/PbapClientProfileTest.java
@@ -16,12 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
@@ -68,18 +64,6 @@
     }
 
     @Test
-    public void connect_shouldConnectBluetoothPbapClient() {
-        mProfile.connect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothPbapClient() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/SapProfileTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/SapProfileTest.java
index 4f978a8..e460eaf 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/SapProfileTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/bluetooth/SapProfileTest.java
@@ -16,12 +16,8 @@
 
 package com.android.settingslib.bluetooth;
 
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_ALLOWED;
-import static android.bluetooth.BluetoothProfile.CONNECTION_POLICY_FORBIDDEN;
-
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothAdapter;
@@ -67,18 +63,6 @@
     }
 
     @Test
-    public void connect_shouldConnectBluetoothSap() {
-        mProfile.connect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_ALLOWED);
-    }
-
-    @Test
-    public void disconnect_shouldDisconnectBluetoothSap() {
-        mProfile.disconnect(mBluetoothDevice);
-        verify(mService).setConnectionPolicy(mBluetoothDevice, CONNECTION_POLICY_FORBIDDEN);
-    }
-
-    @Test
     public void getConnectionStatus_shouldReturnConnectionState() {
         when(mService.getConnectionState(mBluetoothDevice)).
                 thenReturn(BluetoothProfile.STATE_CONNECTED);
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXmlTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXmlTest.java
index 4b5e909..e87461f 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXmlTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/license/LicenseHtmlGeneratorFromXmlTest.java
@@ -28,8 +28,11 @@
 import java.io.InputStreamReader;
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.util.Arrays;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Map;
+import java.util.Set;
 
 @RunWith(RobolectricTestRunner.class)
 public class LicenseHtmlGeneratorFromXmlTest {
@@ -68,6 +71,7 @@
 
     private static final String HTML_BODY_STRING =
             "<li><a href=\"#id0\">/file0</a></li>\n"
+            + "<li><a href=\"#id1\">/file0</a></li>\n"
             + "<li><a href=\"#id0\">/file1</a></li>\n"
             + "</ul>\n"
             + "</div><!-- table of contents -->\n"
@@ -82,6 +86,15 @@
             + "license content #0\n"
             + "</pre><!-- license-text -->\n"
             + "</td></tr><!-- same-license -->\n"
+            + "<tr id=\"id1\"><td class=\"same-license\">\n"
+            + "<div class=\"label\">Notices for file(s):</div>\n"
+            + "<div class=\"file-list\">\n"
+            + "/file0 <br/>\n"
+            + "</div><!-- file-list -->\n"
+            + "<pre class=\"license-text\">\n"
+            + "license content #1\n"
+            + "</pre><!-- license-text -->\n"
+            + "</td></tr><!-- same-license -->\n"
             + "</table></body></html>\n";
 
     private static final String EXPECTED_HTML_STRING = HTML_HEAD_STRING + HTML_BODY_STRING;
@@ -91,22 +104,22 @@
 
     @Test
     public void testParseValidXmlStream() throws XmlPullParserException, IOException {
-        Map<String, String> fileNameToContentIdMap = new HashMap<>();
+        Map<String, Set<String>> fileNameToContentIdMap = new HashMap<>();
         Map<String, String> contentIdToFileContentMap = new HashMap<>();
 
         LicenseHtmlGeneratorFromXml.parse(
                 new InputStreamReader(new ByteArrayInputStream(VALILD_XML_STRING.getBytes())),
                 fileNameToContentIdMap, contentIdToFileContentMap);
         assertThat(fileNameToContentIdMap.size()).isEqualTo(2);
-        assertThat(fileNameToContentIdMap.get("/file0")).isEqualTo("0");
-        assertThat(fileNameToContentIdMap.get("/file1")).isEqualTo("0");
+        assertThat(fileNameToContentIdMap.get("/file0")).containsExactly("0");
+        assertThat(fileNameToContentIdMap.get("/file1")).containsExactly("0");
         assertThat(contentIdToFileContentMap.size()).isEqualTo(1);
         assertThat(contentIdToFileContentMap.get("0")).isEqualTo("license content #0");
     }
 
     @Test(expected = XmlPullParserException.class)
     public void testParseInvalidXmlStream() throws XmlPullParserException, IOException {
-        Map<String, String> fileNameToContentIdMap = new HashMap<>();
+        Map<String, Set<String>> fileNameToContentIdMap = new HashMap<>();
         Map<String, String> contentIdToFileContentMap = new HashMap<>();
 
         LicenseHtmlGeneratorFromXml.parse(
@@ -116,12 +129,13 @@
 
     @Test
     public void testGenerateHtml() {
-        Map<String, String> fileNameToContentIdMap = new HashMap<>();
+        Map<String, Set<String>> fileNameToContentIdMap = new HashMap<>();
         Map<String, String> contentIdToFileContentMap = new HashMap<>();
 
-        fileNameToContentIdMap.put("/file0", "0");
-        fileNameToContentIdMap.put("/file1", "0");
+        fileNameToContentIdMap.put("/file0", new HashSet<String>(Arrays.asList("0", "1")));
+        fileNameToContentIdMap.put("/file1", new HashSet<String>(Arrays.asList("0")));
         contentIdToFileContentMap.put("0", "license content #0");
+        contentIdToFileContentMap.put("1", "license content #1");
 
         StringWriter output = new StringWriter();
         LicenseHtmlGeneratorFromXml.generateHtml(
@@ -131,12 +145,13 @@
 
     @Test
     public void testGenerateHtmlWithCustomHeading() {
-        Map<String, String> fileNameToContentIdMap = new HashMap<>();
+        Map<String, Set<String>> fileNameToContentIdMap = new HashMap<>();
         Map<String, String> contentIdToFileContentMap = new HashMap<>();
 
-        fileNameToContentIdMap.put("/file0", "0");
-        fileNameToContentIdMap.put("/file1", "0");
+        fileNameToContentIdMap.put("/file0", new HashSet<String>(Arrays.asList("0", "1")));
+        fileNameToContentIdMap.put("/file1", new HashSet<String>(Arrays.asList("0")));
         contentIdToFileContentMap.put("0", "license content #0");
+        contentIdToFileContentMap.put("1", "license content #1");
 
         StringWriter output = new StringWriter();
         LicenseHtmlGeneratorFromXml.generateHtml(
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java
index e0e2fd6..a39bcb7 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaDeviceTest.java
@@ -51,21 +51,7 @@
         when(mDevice.isActiveDevice(BluetoothProfile.A2DP)).thenReturn(true);
         when(mDevice.isActiveDevice(BluetoothProfile.HEARING_AID)).thenReturn(true);
 
-        mBluetoothMediaDevice = new BluetoothMediaDevice(mContext, mDevice);
-    }
-
-    @Test
-    public void connect_setActiveSuccess_isConnectedReturnTrue() {
-        when(mDevice.setActive()).thenReturn(true);
-
-        assertThat(mBluetoothMediaDevice.connect()).isTrue();
-    }
-
-    @Test
-    public void connect_setActiveFail_isConnectedReturnFalse() {
-        when(mDevice.setActive()).thenReturn(false);
-
-        assertThat(mBluetoothMediaDevice.connect()).isFalse();
+        mBluetoothMediaDevice = new BluetoothMediaDevice(mContext, mDevice, null, null, null);
     }
 
     @Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java
index f27cef9..0ee5ea8 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/BluetoothMediaManagerTest.java
@@ -96,7 +96,7 @@
         when(mA2dpProfile.getConnectableDevices()).thenReturn(devices);
         when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
         when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
-        when(mA2dpProfile.isPreferred(bluetoothDevice)).thenReturn(true);
+        when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true);
 
         assertThat(mMediaManager.mMediaDevices).isEmpty();
         mMediaManager.startScan();
@@ -113,7 +113,7 @@
         when(mA2dpProfile.getConnectableDevices()).thenReturn(devices);
         when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
         when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_NONE);
-        when(mA2dpProfile.isPreferred(bluetoothDevice)).thenReturn(true);
+        when(mA2dpProfile.isEnabled(bluetoothDevice)).thenReturn(true);
 
         assertThat(mMediaManager.mMediaDevices).isEmpty();
         mMediaManager.startScan();
@@ -141,7 +141,7 @@
         when(mHapProfile.getConnectableDevices()).thenReturn(devices);
         when(mCachedDeviceManager.findDevice(bluetoothDevice)).thenReturn(cachedDevice);
         when(cachedDevice.getBondState()).thenReturn(BluetoothDevice.BOND_BONDED);
-        when(mHapProfile.isPreferred(bluetoothDevice)).thenReturn(true);
+        when(mHapProfile.isEnabled(bluetoothDevice)).thenReturn(true);
 
         assertThat(mMediaManager.mMediaDevices).isEmpty();
         mMediaManager.startScan();
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
index c9db0d1..77a67c2 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaDeviceTest.java
@@ -18,7 +18,6 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
@@ -47,7 +46,6 @@
     @Mock
     private MediaRoute2Info mRouteInfo;
 
-
     private Context mContext;
     private InfoMediaDevice mInfoMediaDevice;
 
@@ -88,11 +86,4 @@
 
         assertThat(mInfoMediaDevice.getId()).isEqualTo(TEST_ID);
     }
-
-    @Test
-    public void connect_shouldSelectRoute() {
-        mInfoMediaDevice.connect();
-
-        verify(mRouterManager).selectRoute(TEST_PACKAGE_NAME, mRouteInfo);
-    }
 }
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
index 67f6dd90..05f5fa0 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/InfoMediaManagerTest.java
@@ -25,6 +25,9 @@
 import android.content.Context;
 import android.media.MediaRoute2Info;
 import android.media.MediaRouter2Manager;
+import android.media.RoutingSessionInfo;
+
+import com.android.settingslib.bluetooth.LocalBluetoothManager;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -45,6 +48,8 @@
 
     @Mock
     private MediaRouter2Manager mRouterManager;
+    @Mock
+    private LocalBluetoothManager mLocalBluetoothManager;
 
     private InfoMediaManager mInfoMediaManager;
     private Context mContext;
@@ -54,7 +59,8 @@
         MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
 
-        mInfoMediaManager = new InfoMediaManager(mContext, TEST_PACKAGE_NAME, null);
+        mInfoMediaManager =
+                new InfoMediaManager(mContext, TEST_PACKAGE_NAME, null, mLocalBluetoothManager);
         mInfoMediaManager.mRouterManager = mRouterManager;
     }
 
@@ -74,7 +80,7 @@
     }
 
     @Test
-    public void onRouteAdded_shouldAddMediaDevice() {
+    public void onRouteAdded_getAvailableRoutes_shouldAddMediaDevice() {
         final MediaRoute2Info info = mock(MediaRoute2Info.class);
         when(info.getId()).thenReturn(TEST_ID);
         when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
@@ -95,6 +101,27 @@
     }
 
     @Test
+    public void onRouteAdded_buildAllRoutes_shouldAddMediaDevice() {
+        final MediaRoute2Info info = mock(MediaRoute2Info.class);
+        when(info.getId()).thenReturn(TEST_ID);
+        when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
+
+        final List<MediaRoute2Info> routes = new ArrayList<>();
+        routes.add(info);
+        when(mRouterManager.getAllRoutes()).thenReturn(routes);
+
+        final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
+        assertThat(mediaDevice).isNull();
+
+        mInfoMediaManager.mPackageName = "";
+        mInfoMediaManager.mMediaRouterCallback.onRoutesAdded(routes);
+
+        final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
+        assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
+        assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
+    }
+
+    @Test
     public void onControlCategoriesChanged_samePackageName_shouldAddMediaDevice() {
         final MediaRoute2Info info = mock(MediaRoute2Info.class);
         when(info.getId()).thenReturn(TEST_ID);
@@ -121,4 +148,59 @@
 
         assertThat(mInfoMediaManager.mMediaDevices).hasSize(0);
     }
+
+    @Test
+    public void onRoutesChanged_getAvailableRoutes_shouldAddMediaDevice() {
+        final MediaRoute2Info info = mock(MediaRoute2Info.class);
+        when(info.getId()).thenReturn(TEST_ID);
+        when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
+
+        final List<MediaRoute2Info> routes = new ArrayList<>();
+        routes.add(info);
+        when(mRouterManager.getAvailableRoutes(TEST_PACKAGE_NAME)).thenReturn(routes);
+
+        final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
+        assertThat(mediaDevice).isNull();
+
+        mInfoMediaManager.mMediaRouterCallback.onRoutesChanged(routes);
+
+        final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
+        assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
+        assertThat(mInfoMediaManager.getCurrentConnectedDevice()).isEqualTo(infoDevice);
+        assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
+    }
+
+    @Test
+    public void onRoutesChanged_buildAllRoutes_shouldAddMediaDevice() {
+        final MediaRoute2Info info = mock(MediaRoute2Info.class);
+        when(info.getId()).thenReturn(TEST_ID);
+        when(info.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
+
+        final List<MediaRoute2Info> routes = new ArrayList<>();
+        routes.add(info);
+        when(mRouterManager.getAllRoutes()).thenReturn(routes);
+
+        final MediaDevice mediaDevice = mInfoMediaManager.findMediaDevice(TEST_ID);
+        assertThat(mediaDevice).isNull();
+
+        mInfoMediaManager.mPackageName = "";
+        mInfoMediaManager.mMediaRouterCallback.onRoutesChanged(routes);
+
+        final MediaDevice infoDevice = mInfoMediaManager.mMediaDevices.get(0);
+        assertThat(infoDevice.getId()).isEqualTo(TEST_ID);
+        assertThat(mInfoMediaManager.mMediaDevices).hasSize(routes.size());
+    }
+
+    @Test
+    public void connectDeviceWithoutPackageName_noSession_returnFalse() {
+        final MediaRoute2Info info = mock(MediaRoute2Info.class);
+        final MediaDevice device = new InfoMediaDevice(mContext, mRouterManager, info,
+                TEST_PACKAGE_NAME);
+
+        final List<RoutingSessionInfo> infos = new ArrayList<>();
+
+        when(mRouterManager.getActiveSessions()).thenReturn(infos);
+
+        assertThat(mInfoMediaManager.connectDeviceWithoutPackageName(device)).isFalse();
+    }
 }
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
index c780a64..3d67ba0 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/LocalMediaManagerTest.java
@@ -80,7 +80,7 @@
         when(mLocalProfileManager.getHearingAidProfile()).thenReturn(mHapProfile);
 
         mLocalMediaManager = new LocalMediaManager(mContext, mLocalBluetoothManager,
-                mBluetoothMediaManager, mInfoMediaManager);
+                mInfoMediaManager, "com.test.packagename");
     }
 
     @Test
@@ -163,14 +163,14 @@
     }
 
     @Test
-    public void onDeviceAdded_mediaDeviceAndPhoneDeviceNotExistInList_addBothDevice() {
+    public void onDeviceAdded_addDevice() {
         final MediaDevice device = mock(MediaDevice.class);
 
         assertThat(mLocalMediaManager.mMediaDevices).isEmpty();
         mLocalMediaManager.registerCallback(mCallback);
         mLocalMediaManager.mMediaDeviceCallback.onDeviceAdded(device);
 
-        assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
+        assertThat(mLocalMediaManager.mMediaDevices).hasSize(1);
         verify(mCallback).onDeviceListUpdate(any());
     }
 
@@ -206,7 +206,7 @@
     }
 
     @Test
-    public void onDeviceListAdded_phoneDeviceNotExistInList_addPhoneDeviceAndDevicesList() {
+    public void onDeviceListAdded_addDevicesList() {
         final List<MediaDevice> devices = new ArrayList<>();
         final MediaDevice device1 = mock(MediaDevice.class);
         final MediaDevice device2 = mock(MediaDevice.class);
@@ -220,12 +220,12 @@
         mLocalMediaManager.registerCallback(mCallback);
         mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
 
-        assertThat(mLocalMediaManager.mMediaDevices).hasSize(3);
+        assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
         verify(mCallback).onDeviceListUpdate(any());
     }
 
     @Test
-    public void onDeviceListAdded_phoneDeviceExistInList_addDeviceList() {
+    public void onDeviceListAdded_addDeviceList() {
         final List<MediaDevice> devices = new ArrayList<>();
         final MediaDevice device1 = mock(MediaDevice.class);
         final MediaDevice device2 = mock(MediaDevice.class);
@@ -245,12 +245,12 @@
         mLocalMediaManager.registerCallback(mCallback);
         mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
 
-        assertThat(mLocalMediaManager.mMediaDevices).hasSize(4);
+        assertThat(mLocalMediaManager.mMediaDevices).hasSize(2);
         verify(mCallback).onDeviceListUpdate(any());
     }
 
     @Test
-    public void onDeviceRemoved_phoneDeviceIsLastDeviceAfterRemoveMediaDevice_removeBothDevice() {
+    public void onDeviceRemoved_removeDevice() {
         final MediaDevice device1 = mock(MediaDevice.class);
         mLocalMediaManager.mPhoneDevice = mock(PhoneMediaDevice.class);
         mLocalMediaManager.mMediaDevices.add(device1);
@@ -260,7 +260,7 @@
         mLocalMediaManager.registerCallback(mCallback);
         mLocalMediaManager.mMediaDeviceCallback.onDeviceRemoved(device1);
 
-        assertThat(mLocalMediaManager.mMediaDevices).isEmpty();
+        assertThat(mLocalMediaManager.mMediaDevices).hasSize(1);
         verify(mCallback).onDeviceListUpdate(any());
     }
 
@@ -298,7 +298,7 @@
     }
 
     @Test
-    public void onDeviceListRemoved_phoneDeviceIsLastDeviceAfterRemoveDeviceList_removeAll() {
+    public void onDeviceListRemoved_removeAll() {
         final List<MediaDevice> devices = new ArrayList<>();
         final MediaDevice device1 = mock(MediaDevice.class);
         final MediaDevice device2 = mock(MediaDevice.class);
@@ -311,7 +311,8 @@
 
         assertThat(mLocalMediaManager.mMediaDevices).hasSize(3);
         mLocalMediaManager.registerCallback(mCallback);
-        mLocalMediaManager.mMediaDeviceCallback.onDeviceListRemoved(devices);
+        mLocalMediaManager.mMediaDeviceCallback
+                .onDeviceListRemoved(mLocalMediaManager.mMediaDevices);
 
         assertThat(mLocalMediaManager.mMediaDevices).isEmpty();
         verify(mCallback).onDeviceListUpdate(any());
@@ -384,4 +385,38 @@
 
         verify(mCallback).onDeviceAttributesChanged();
     }
+
+    @Test
+    public void getActiveMediaDevice_checkList() {
+        final List<MediaDevice> devices = new ArrayList<>();
+        final MediaDevice device1 = mock(MediaDevice.class);
+        final MediaDevice device2 = mock(MediaDevice.class);
+        final MediaDevice device3 = mock(MediaDevice.class);
+        device1.mType = MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE;
+        device2.mType = MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE;
+        device3.mType = MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE;
+        when(device1.getClientPackageName()).thenReturn(TEST_DEVICE_ID_1);
+        when(device2.getClientPackageName()).thenReturn(TEST_DEVICE_ID_2);
+        when(device3.getClientPackageName()).thenReturn(TEST_DEVICE_ID_3);
+        when(device1.getId()).thenReturn(TEST_DEVICE_ID_1);
+        when(device2.getId()).thenReturn(TEST_DEVICE_ID_2);
+        when(device3.getId()).thenReturn(TEST_DEVICE_ID_3);
+        devices.add(device1);
+        devices.add(device2);
+        devices.add(device3);
+        mLocalMediaManager.registerCallback(mCallback);
+        mLocalMediaManager.mMediaDeviceCallback.onDeviceListAdded(devices);
+
+        List<MediaDevice> activeDevices = mLocalMediaManager.getActiveMediaDevice(
+                MediaDevice.MediaDeviceType.TYPE_PHONE_DEVICE);
+        assertThat(activeDevices).containsExactly(device1);
+
+        activeDevices = mLocalMediaManager.getActiveMediaDevice(
+                MediaDevice.MediaDeviceType.TYPE_CAST_DEVICE);
+        assertThat(activeDevices).containsExactly(device2);
+
+        activeDevices = mLocalMediaManager.getActiveMediaDevice(
+                MediaDevice.MediaDeviceType.TYPE_BLUETOOTH_DEVICE);
+        assertThat(activeDevices).containsExactly(device3);
+    }
 }
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
index 02cb83e..3f29b72 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/MediaDeviceTest.java
@@ -17,14 +17,19 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.bluetooth.BluetoothClass;
 import android.bluetooth.BluetoothDevice;
 import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageStats;
 import android.media.MediaRoute2Info;
 import android.media.MediaRouter2Manager;
 
+import com.android.settingslib.R;
 import com.android.settingslib.bluetooth.A2dpProfile;
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.bluetooth.HearingAidProfile;
@@ -38,6 +43,8 @@
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
+import org.robolectric.Shadows;
+import org.robolectric.shadows.ShadowPackageManager;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -57,6 +64,8 @@
     private static final String ROUTER_ID_2 = "RouterId_2";
     private static final String ROUTER_ID_3 = "RouterId_3";
     private static final String TEST_PACKAGE_NAME = "com.test.playmusic";
+    private static final String TEST_PACKAGE_NAME2 = "com.test.playmusic2";
+    private static final String TEST_APPLICATION_LABEL = "playmusic";
     private final BluetoothClass mHeadreeClass =
             new BluetoothClass(BluetoothClass.Device.AUDIO_VIDEO_HEADPHONES);
     private final BluetoothClass mCarkitClass =
@@ -83,6 +92,14 @@
     @Mock
     private MediaRoute2Info mRouteInfo3;
     @Mock
+    private MediaRoute2Info mBluetoothRouteInfo1;
+    @Mock
+    private MediaRoute2Info mBluetoothRouteInfo2;
+    @Mock
+    private MediaRoute2Info mBluetoothRouteInfo3;
+    @Mock
+    private MediaRoute2Info mPhoneRouteInfo;
+    @Mock
     private LocalBluetoothProfileManager mProfileManager;
     @Mock
     private HearingAidProfile mHapProfile;
@@ -90,6 +107,8 @@
     private A2dpProfile mA2dpProfile;
     @Mock
     private BluetoothDevice mDevice;
+    @Mock
+    private MediaRouter2Manager mMediaRouter2Manager;
 
     private BluetoothMediaDevice mBluetoothMediaDevice1;
     private BluetoothMediaDevice mBluetoothMediaDevice2;
@@ -100,7 +119,10 @@
     private InfoMediaDevice mInfoMediaDevice3;
     private List<MediaDevice> mMediaDevices = new ArrayList<>();
     private PhoneMediaDevice mPhoneMediaDevice;
-    private MediaRouter2Manager mMediaRouter2Manager;
+    private ShadowPackageManager mShadowPackageManager;
+    private ApplicationInfo mAppInfo;
+    private PackageInfo mPackageInfo;
+    private PackageStats mPackageStats;
 
     @Before
     public void setUp() {
@@ -133,17 +155,24 @@
         when(mProfileManager.getHearingAidProfile()).thenReturn(mHapProfile);
         when(mA2dpProfile.getActiveDevice()).thenReturn(mDevice);
 
-        mBluetoothMediaDevice1 = new BluetoothMediaDevice(mContext, mCachedDevice1);
-        mBluetoothMediaDevice2 = new BluetoothMediaDevice(mContext, mCachedDevice2);
-        mBluetoothMediaDevice3 = new BluetoothMediaDevice(mContext, mCachedDevice3);
-        mMediaRouter2Manager = MediaRouter2Manager.getInstance(mContext);
+        mBluetoothMediaDevice1 =
+                new BluetoothMediaDevice(mContext, mCachedDevice1, mMediaRouter2Manager,
+                        mBluetoothRouteInfo1, TEST_PACKAGE_NAME);
+        mBluetoothMediaDevice2 =
+                new BluetoothMediaDevice(mContext, mCachedDevice2, mMediaRouter2Manager,
+                        mBluetoothRouteInfo2, TEST_PACKAGE_NAME);
+        mBluetoothMediaDevice3 =
+                new BluetoothMediaDevice(mContext, mCachedDevice3, mMediaRouter2Manager,
+                        mBluetoothRouteInfo3, TEST_PACKAGE_NAME);
         mInfoMediaDevice1 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo1,
                 TEST_PACKAGE_NAME);
         mInfoMediaDevice2 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo2,
                 TEST_PACKAGE_NAME);
         mInfoMediaDevice3 = new InfoMediaDevice(mContext, mMediaRouter2Manager, mRouteInfo3,
                 TEST_PACKAGE_NAME);
-        mPhoneMediaDevice = new PhoneMediaDevice(mContext, mLocalBluetoothManager);
+        mPhoneMediaDevice =
+                new PhoneMediaDevice(mContext, mMediaRouter2Manager, mPhoneRouteInfo,
+                        TEST_PACKAGE_NAME);
     }
 
     @Test
@@ -370,4 +399,53 @@
         assertThat(mMediaDevices.get(5)).isEqualTo(mBluetoothMediaDevice1);
         assertThat(mMediaDevices.get(6)).isEqualTo(mBluetoothMediaDevice2);
     }
+
+    @Test
+    public void connect_shouldSelectRoute() {
+        mInfoMediaDevice1.connect();
+
+        verify(mMediaRouter2Manager).selectRoute(TEST_PACKAGE_NAME, mRouteInfo1);
+    }
+
+    @Test
+    public void getClientPackageName_returnPackageName() {
+        when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
+
+        assertThat(mInfoMediaDevice1.getClientPackageName()).isEqualTo(TEST_PACKAGE_NAME);
+    }
+
+    private void initPackage() {
+        mShadowPackageManager = Shadows.shadowOf(mContext.getPackageManager());
+        mAppInfo = new ApplicationInfo();
+        mAppInfo.flags = ApplicationInfo.FLAG_INSTALLED;
+        mAppInfo.packageName = TEST_PACKAGE_NAME;
+        mAppInfo.name = TEST_APPLICATION_LABEL;
+        mPackageInfo = new PackageInfo();
+        mPackageInfo.packageName = TEST_PACKAGE_NAME;
+        mPackageInfo.applicationInfo = mAppInfo;
+        mPackageStats = new PackageStats(TEST_PACKAGE_NAME);
+    }
+
+    @Test
+    public void getClientAppLabel_matchedPackageName_returnLabel() {
+        initPackage();
+        when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME);
+
+        assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(
+                mContext.getResources().getString(R.string.unknown));
+
+        mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
+
+        assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(TEST_APPLICATION_LABEL);
+    }
+
+    @Test
+    public void getClientAppLabel_noMatchedPackageName_returnDefault() {
+        initPackage();
+        mShadowPackageManager.addPackage(mPackageInfo, mPackageStats);
+        when(mRouteInfo1.getClientPackageName()).thenReturn(TEST_PACKAGE_NAME2);
+
+        assertThat(mInfoMediaDevice1.getClientAppLabel()).isEqualTo(
+                mContext.getResources().getString(R.string.unknown));
+    }
 }
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
index 0752dc0..db984fb 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/media/PhoneMediaDeviceTest.java
@@ -18,21 +18,13 @@
 
 import static com.google.common.truth.Truth.assertThat;
 
-import static org.mockito.Mockito.when;
-
-import android.bluetooth.BluetoothDevice;
 import android.content.Context;
 
 import com.android.settingslib.R;
-import com.android.settingslib.bluetooth.A2dpProfile;
-import com.android.settingslib.bluetooth.HearingAidProfile;
-import com.android.settingslib.bluetooth.LocalBluetoothManager;
-import com.android.settingslib.bluetooth.LocalBluetoothProfileManager;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
-import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 import org.robolectric.RobolectricTestRunner;
 import org.robolectric.RuntimeEnvironment;
@@ -40,17 +32,6 @@
 @RunWith(RobolectricTestRunner.class)
 public class PhoneMediaDeviceTest {
 
-    @Mock
-    private LocalBluetoothProfileManager mLocalProfileManager;
-    @Mock
-    private LocalBluetoothManager mLocalBluetoothManager;
-    @Mock
-    private HearingAidProfile mHapProfile;
-    @Mock
-    private A2dpProfile mA2dpProfile;
-    @Mock
-    private BluetoothDevice mDevice;
-
     private Context mContext;
     private PhoneMediaDevice mPhoneMediaDevice;
 
@@ -59,68 +40,8 @@
         MockitoAnnotations.initMocks(this);
         mContext = RuntimeEnvironment.application;
 
-        when(mLocalBluetoothManager.getProfileManager()).thenReturn(mLocalProfileManager);
-        when(mLocalProfileManager.getA2dpProfile()).thenReturn(mA2dpProfile);
-        when(mLocalProfileManager.getHearingAidProfile()).thenReturn(mHapProfile);
-        when(mA2dpProfile.getActiveDevice()).thenReturn(mDevice);
-
-        mPhoneMediaDevice = new PhoneMediaDevice(mContext, mLocalBluetoothManager);
-    }
-
-    @Test
-    public void connect_phoneDeviceSetActiveSuccess_isConnectedReturnTrue() {
-        when(mA2dpProfile.setActiveDevice(null)).thenReturn(true);
-        when(mHapProfile.setActiveDevice(null)).thenReturn(true);
-
-        assertThat(mPhoneMediaDevice.connect()).isTrue();
-    }
-
-    @Test
-    public void connect_a2dpProfileSetActiveFail_isConnectedReturnFalse() {
-        when(mA2dpProfile.setActiveDevice(null)).thenReturn(false);
-        when(mHapProfile.setActiveDevice(null)).thenReturn(true);
-
-        assertThat(mPhoneMediaDevice.connect()).isFalse();
-    }
-
-    @Test
-    public void connect_hearingAidProfileSetActiveFail_isConnectedReturnFalse() {
-        when(mA2dpProfile.setActiveDevice(null)).thenReturn(true);
-        when(mHapProfile.setActiveDevice(null)).thenReturn(false);
-
-        assertThat(mPhoneMediaDevice.connect()).isFalse();
-    }
-
-    @Test
-    public void connect_hearingAidAndA2dpProfileSetActiveFail_isConnectedReturnFalse() {
-        when(mA2dpProfile.setActiveDevice(null)).thenReturn(false);
-        when(mHapProfile.setActiveDevice(null)).thenReturn(false);
-
-        assertThat(mPhoneMediaDevice.connect()).isFalse();
-    }
-
-    @Test
-    public void connect_hearingAidProfileIsNullAndA2dpProfileNotNull_isConnectedReturnTrue() {
-        when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null);
-
-        when(mA2dpProfile.setActiveDevice(null)).thenReturn(true);
-        assertThat(mPhoneMediaDevice.connect()).isTrue();
-    }
-
-    @Test
-    public void connect_hearingAidProfileNotNullAndA2dpProfileIsNull_isConnectedReturnTrue() {
-        when(mLocalProfileManager.getA2dpProfile()).thenReturn(null);
-
-        when(mHapProfile.setActiveDevice(null)).thenReturn(true);
-        assertThat(mPhoneMediaDevice.connect()).isTrue();
-    }
-
-    @Test
-    public void connect_hearingAidProfileAndA2dpProfileIsNull_isConnectedReturnFalse() {
-        when(mLocalProfileManager.getA2dpProfile()).thenReturn(null);
-        when(mLocalProfileManager.getHearingAidProfile()).thenReturn(null);
-
-        assertThat(mPhoneMediaDevice.connect()).isFalse();
+        mPhoneMediaDevice =
+                new PhoneMediaDevice(mContext, null, null, null);
     }
 
     @Test
diff --git a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java
index 61fdbd5..ed308c8 100644
--- a/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java
+++ b/packages/SettingsLib/tests/robotests/src/com/android/settingslib/utils/PowerUtilTest.java
@@ -120,9 +120,9 @@
                 true /* basedOnUsage */);
 
         // additional battery percentage in this string
-        assertThat(info).isEqualTo("Phone may shutdown soon (10%)");
+        assertThat(info).isEqualTo("Phone may shut down soon (10%)");
         // shortened string should not have percentage
-        assertThat(info2).isEqualTo("Phone may shutdown soon");
+        assertThat(info2).isEqualTo("Phone may shut down soon");
     }
 
     @Test
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
index de4817c..2431381 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SecureSettings.java
@@ -37,6 +37,7 @@
         Settings.Secure.ACCESSIBILITY_DISPLAY_DALTONIZER_ENABLED,
         Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED,
         Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED,
+        Settings.Secure.ADAPTIVE_SLEEP,
         Settings.Secure.AUTOFILL_SERVICE,
         Settings.Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
         Settings.Secure.ENABLED_ACCESSIBILITY_SERVICES,
diff --git a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
index 3f5b0da..c4330e1 100644
--- a/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
+++ b/packages/SettingsProvider/src/android/provider/settings/backup/SystemSettings.java
@@ -46,7 +46,7 @@
         Settings.System.SCREEN_BRIGHTNESS_MODE,
         Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ,
         Settings.System.SCREEN_BRIGHTNESS_FOR_VR,
-        Settings.System.ADAPTIVE_SLEEP,
+        Settings.System.ADAPTIVE_SLEEP,             // moved to secure
         Settings.System.VIBRATE_INPUT_DEVICES,
         Settings.System.MODE_RINGER_STREAMS_AFFECTED,
         Settings.System.TEXT_AUTO_REPLACE,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
index 849f22f..5553469 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SecureSettingsValidators.java
@@ -59,6 +59,7 @@
         VALIDATORS.put(Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_ENABLED, BOOLEAN_VALIDATOR);
         VALIDATORS.put(
                 Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_NAVBAR_ENABLED, BOOLEAN_VALIDATOR);
+        VALIDATORS.put(Secure.ADAPTIVE_SLEEP, BOOLEAN_VALIDATOR);
         VALIDATORS.put(Secure.AUTOFILL_SERVICE, NULLABLE_COMPONENT_NAME_VALIDATOR);
         VALIDATORS.put(
                 Secure.ACCESSIBILITY_DISPLAY_MAGNIFICATION_SCALE,
diff --git a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
index c5d4fa9..8037266 100644
--- a/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
+++ b/packages/SettingsProvider/src/android/provider/settings/validators/SystemSettingsValidators.java
@@ -126,7 +126,6 @@
         VALIDATORS.put(System.SCREEN_OFF_TIMEOUT, NON_NEGATIVE_INTEGER_VALIDATOR);
         VALIDATORS.put(System.SCREEN_BRIGHTNESS_FOR_VR, new InclusiveIntegerRangeValidator(0, 255));
         VALIDATORS.put(System.SCREEN_BRIGHTNESS_MODE, BOOLEAN_VALIDATOR);
-        VALIDATORS.put(System.ADAPTIVE_SLEEP, BOOLEAN_VALIDATOR);
         VALIDATORS.put(System.MODE_RINGER_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR);
         VALIDATORS.put(System.MUTE_STREAMS_AFFECTED, NON_NEGATIVE_INTEGER_VALIDATOR);
         VALIDATORS.put(System.VIBRATE_ON, BOOLEAN_VALIDATOR);
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
index cdf9728..44864a6 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsBackupAgent.java
@@ -45,6 +45,7 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.BackupUtils;
+import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.util.Slog;
 import android.view.Display;
@@ -280,6 +281,16 @@
         Settings.Secure.getMovedToGlobalSettings(movedToGlobal);
         Set<String> movedToSecure = getMovedToSecureSettings();
 
+        Set<String> preservedGlobalSettings = getSettingsToPreserveInRestore(
+                Settings.Global.CONTENT_URI);
+        Set<String> preservedSecureSettings = getSettingsToPreserveInRestore(
+                Settings.Secure.CONTENT_URI);
+        Set<String> preservedSystemSettings = getSettingsToPreserveInRestore(
+                Settings.System.CONTENT_URI);
+        Set<String> preservedSettings = new HashSet<>(preservedGlobalSettings);
+        preservedSettings.addAll(preservedSecureSettings);
+        preservedSettings.addAll(preservedSystemSettings);
+
         byte[] restoredWifiSupplicantData = null;
         byte[] restoredWifiIpConfigData = null;
 
@@ -300,7 +311,8 @@
                 case KEY_SYSTEM :
                     restoreSettings(data, Settings.System.CONTENT_URI, movedToGlobal,
                             movedToSecure, R.array.restore_blocked_system_settings,
-                            dynamicBlockList);
+                            dynamicBlockList,
+                            preservedSystemSettings);
                     mSettingsHelper.applyAudioSettings();
                     break;
 
@@ -311,7 +323,8 @@
                             movedToGlobal,
                             null,
                             R.array.restore_blocked_secure_settings,
-                            dynamicBlockList);
+                            dynamicBlockList,
+                            preservedSecureSettings);
                     break;
 
                 case KEY_GLOBAL :
@@ -321,7 +334,8 @@
                             null,
                             movedToSecure,
                             R.array.restore_blocked_global_settings,
-                            dynamicBlockList);
+                            dynamicBlockList,
+                            preservedGlobalSettings);
                     break;
 
                 case KEY_WIFI_SUPPLICANT :
@@ -368,7 +382,8 @@
                     restoreDeviceSpecificConfig(
                             restoredDeviceSpecificConfig,
                             R.array.restore_blocked_device_specific_settings,
-                            dynamicBlockList);
+                            dynamicBlockList,
+                            preservedSettings);
                     break;
 
                 default :
@@ -418,7 +433,7 @@
             in.readFully(buffer, 0, nBytes);
             restoreSettings(buffer, nBytes, Settings.System.CONTENT_URI, movedToGlobal,
                     movedToSecure, R.array.restore_blocked_system_settings,
-                    Collections.emptySet());
+                    Collections.emptySet(), Collections.emptySet());
 
             // secure settings
             nBytes = in.readInt();
@@ -432,7 +447,7 @@
                     movedToGlobal,
                     null,
                     R.array.restore_blocked_secure_settings,
-                    Collections.emptySet());
+                    Collections.emptySet(), Collections.emptySet());
 
             // Global only if sufficiently new
             if (version >= FULL_BACKUP_ADDED_GLOBAL) {
@@ -443,7 +458,7 @@
                 movedToGlobal.clear();  // no redirection; this *is* the global namespace
                 restoreSettings(buffer, nBytes, Settings.Global.CONTENT_URI, movedToGlobal,
                         movedToSecure, R.array.restore_blocked_global_settings,
-                        Collections.emptySet());
+                        Collections.emptySet(), Collections.emptySet());
             }
 
             // locale
@@ -608,6 +623,40 @@
     }
 
     /**
+     * Get names of the settings for which the current value should be preserved during restore.
+     */
+    private Set<String> getSettingsToPreserveInRestore(Uri settingsUri) {
+        if (!FeatureFlagUtils.isEnabled(getBaseContext(),
+                FeatureFlagUtils.SETTINGS_DO_NOT_RESTORE_PRESERVED)) {
+            return Collections.emptySet();
+        }
+
+        Cursor cursor = getContentResolver().query(settingsUri, new String[] {
+                Settings.NameValueTable.NAME, Settings.NameValueTable.IS_PRESERVED_IN_RESTORE },
+                /* selection */ null, /* selectionArgs */ null, /* sortOrder */ null);
+
+        if (!cursor.moveToFirst()) {
+            Slog.i(TAG, "No settings to be preserved in restore");
+            return Collections.emptySet();
+        }
+
+        int nameIndex = cursor.getColumnIndex(Settings.NameValueTable.NAME);
+        int isPreservedIndex = cursor.getColumnIndex(
+                Settings.NameValueTable.IS_PRESERVED_IN_RESTORE);
+
+        Set<String> preservedSettings = new HashSet<>();
+        while (!cursor.isAfterLast()) {
+            if (Boolean.parseBoolean(cursor.getString(isPreservedIndex))) {
+                preservedSettings.add(getQualifiedKeyForSetting(cursor.getString(nameIndex),
+                        settingsUri));
+            }
+            cursor.moveToNext();
+        }
+
+        return preservedSettings;
+    }
+
+    /**
      * Serialize the owner info and other lock settings
      */
     private byte[] getLockSettings(@UserIdInt int userId) {
@@ -650,7 +699,8 @@
             HashSet<String> movedToGlobal,
             Set<String> movedToSecure,
             int blockedSettingsArrayId,
-            Set<String> dynamicBlockList) {
+            Set<String> dynamicBlockList,
+            Set<String> settingsToPreserve) {
         byte[] settings = new byte[data.getDataSize()];
         try {
             data.readEntityData(settings, 0, settings.length);
@@ -665,7 +715,8 @@
                 movedToGlobal,
                 movedToSecure,
                 blockedSettingsArrayId,
-                dynamicBlockList);
+                dynamicBlockList,
+                settingsToPreserve);
     }
 
     private void restoreSettings(
@@ -675,7 +726,8 @@
             HashSet<String> movedToGlobal,
             Set<String> movedToSecure,
             int blockedSettingsArrayId,
-            Set<String> dynamicBlockList) {
+            Set<String> dynamicBlockList,
+            Set<String> settingsToPreserve) {
         restoreSettings(
                 settings,
                 0,
@@ -684,10 +736,12 @@
                 movedToGlobal,
                 movedToSecure,
                 blockedSettingsArrayId,
-                dynamicBlockList);
+                dynamicBlockList,
+                settingsToPreserve);
     }
 
-    private void restoreSettings(
+    @VisibleForTesting
+    void restoreSettings(
             byte[] settings,
             int pos,
             int bytes,
@@ -695,31 +749,13 @@
             HashSet<String> movedToGlobal,
             Set<String> movedToSecure,
             int blockedSettingsArrayId,
-            Set<String> dynamicBlockList) {
+            Set<String> dynamicBlockList,
+            Set<String> settingsToPreserve) {
         if (DEBUG) {
             Log.i(TAG, "restoreSettings: " + contentUri);
         }
 
-        // Figure out the white list and redirects to the global table.  We restore anything
-        // in either the backup whitelist or the legacy-restore whitelist for this table.
-        final String[] whitelist;
-        Map<String, Validator> validators = null;
-        if (contentUri.equals(Settings.Secure.CONTENT_URI)) {
-            whitelist = ArrayUtils.concatElements(String.class, SecureSettings.SETTINGS_TO_BACKUP,
-                    Settings.Secure.LEGACY_RESTORE_SETTINGS,
-                    DeviceSpecificSettings.DEVICE_SPECIFIC_SETTINGS_TO_BACKUP);
-            validators = SecureSettingsValidators.VALIDATORS;
-        } else if (contentUri.equals(Settings.System.CONTENT_URI)) {
-            whitelist = ArrayUtils.concatElements(String.class, SystemSettings.SETTINGS_TO_BACKUP,
-                    Settings.System.LEGACY_RESTORE_SETTINGS);
-            validators = SystemSettingsValidators.VALIDATORS;
-        } else if (contentUri.equals(Settings.Global.CONTENT_URI)) {
-            whitelist = ArrayUtils.concatElements(String.class, GlobalSettings.SETTINGS_TO_BACKUP,
-                    Settings.Global.LEGACY_RESTORE_SETTINGS);
-            validators = GlobalSettingsValidators.VALIDATORS;
-        } else {
-            throw new IllegalArgumentException("Unknown URI: " + contentUri);
-        }
+        SettingsBackupWhitelist whitelist = getBackupWhitelist(contentUri);
 
         // Restore only the white list data.
         final ArrayMap<String, String> cachedEntries = new ArrayMap<>();
@@ -729,7 +765,7 @@
 
         Set<String> blockedSettings = getBlockedSettings(blockedSettingsArrayId);
 
-        for (String key : whitelist) {
+        for (String key : whitelist.mSettingsWhitelist) {
             boolean isBlockedBySystem = blockedSettings != null && blockedSettings.contains(key);
             if (isBlockedBySystem || isBlockedByDynamicList(dynamicBlockList, contentUri,  key)) {
                 Log.i(
@@ -742,6 +778,12 @@
                 continue;
             }
 
+            if (settingsToPreserve.contains(getQualifiedKeyForSetting(key, contentUri))) {
+                Log.i(TAG, "Skipping restore for setting " + key + " as it is marked as "
+                        + "preserved");
+                continue;
+            }
+
             String value = null;
             boolean hasValueToRestore = false;
             if (cachedEntries.indexOfKey(key) >= 0) {
@@ -775,7 +817,7 @@
             }
 
             // only restore the settings that have valid values
-            if (!isValidSettingValue(key, value, validators)) {
+            if (!isValidSettingValue(key, value, whitelist.mSettingsValidators)) {
                 Log.w(TAG, "Attempted restore of " + key + " setting, but its value didn't pass"
                         + " validation, value: " + value);
                 continue;
@@ -798,11 +840,42 @@
         }
     }
 
+    @VisibleForTesting
+    SettingsBackupWhitelist getBackupWhitelist(Uri contentUri) {
+        // Figure out the white list and redirects to the global table.  We restore anything
+        // in either the backup whitelist or the legacy-restore whitelist for this table.
+        String[] whitelist;
+        Map<String, Validator> validators = null;
+        if (contentUri.equals(Settings.Secure.CONTENT_URI)) {
+            whitelist = ArrayUtils.concatElements(String.class, SecureSettings.SETTINGS_TO_BACKUP,
+                    Settings.Secure.LEGACY_RESTORE_SETTINGS,
+                    DeviceSpecificSettings.DEVICE_SPECIFIC_SETTINGS_TO_BACKUP);
+            validators = SecureSettingsValidators.VALIDATORS;
+        } else if (contentUri.equals(Settings.System.CONTENT_URI)) {
+            whitelist = ArrayUtils.concatElements(String.class, SystemSettings.SETTINGS_TO_BACKUP,
+                    Settings.System.LEGACY_RESTORE_SETTINGS);
+            validators = SystemSettingsValidators.VALIDATORS;
+        } else if (contentUri.equals(Settings.Global.CONTENT_URI)) {
+            whitelist = ArrayUtils.concatElements(String.class, GlobalSettings.SETTINGS_TO_BACKUP,
+                    Settings.Global.LEGACY_RESTORE_SETTINGS);
+            validators = GlobalSettingsValidators.VALIDATORS;
+        } else {
+            throw new IllegalArgumentException("Unknown URI: " + contentUri);
+        }
+
+        return new SettingsBackupWhitelist(whitelist, validators);
+    }
+
     private boolean isBlockedByDynamicList(Set<String> dynamicBlockList, Uri areaUri, String key) {
         String contentKey = Uri.withAppendedPath(areaUri, key).toString();
         return dynamicBlockList.contains(contentKey);
     }
 
+    @VisibleForTesting
+    static String getQualifiedKeyForSetting(String settingName, Uri settingUri) {
+        return Uri.withAppendedPath(settingUri, settingName).toString();
+    }
+
     // There may be other sources of blocked settings, so I'm separating out this
     // code to make it easy to modify in the future.
     @VisibleForTesting
@@ -1089,7 +1162,7 @@
      */
     @VisibleForTesting
     boolean restoreDeviceSpecificConfig(byte[] data, int blockedSettingsArrayId,
-            Set<String> dynamicBlocklist) {
+            Set<String> dynamicBlocklist, Set<String> preservedSettings) {
         // We're using an AtomicInteger to wrap the position int and allow called methods to
         // modify it.
         AtomicInteger pos = new AtomicInteger(0);
@@ -1108,7 +1181,8 @@
                 null,
                 null,
                 blockedSettingsArrayId,
-                dynamicBlocklist);
+                dynamicBlocklist,
+                preservedSettings);
 
         updateWindowManagerIfNeeded(originalDensity);
 
@@ -1240,4 +1314,20 @@
                 | ((in[pos + 3] & 0xFF) <<  0);
         return result;
     }
+
+    /**
+     * Store the whitelist of settings to be backed up and validators for them.
+     */
+    @VisibleForTesting
+    static class SettingsBackupWhitelist {
+        final String[] mSettingsWhitelist;
+        final Map<String, Validator> mSettingsValidators;
+
+
+        SettingsBackupWhitelist(String[] settingsWhitelist,
+                Map<String, Validator> settingsValidators) {
+            mSettingsWhitelist = settingsWhitelist;
+            mSettingsValidators = settingsValidators;
+        }
+    }
 }
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
index f6e5062..d677687 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProtoDumpUtil.java
@@ -1563,9 +1563,6 @@
                 Settings.Global.WIFI_WAKEUP_ENABLED,
                 GlobalSettingsProto.Wifi.WAKEUP_ENABLED);
         dumpSetting(s, p,
-                Settings.Global.WIFI_SAVED_STATE,
-                GlobalSettingsProto.Wifi.SAVED_STATE);
-        dumpSetting(s, p,
                 Settings.Global.WIFI_SUPPLICANT_SCAN_INTERVAL_MS,
                 GlobalSettingsProto.Wifi.SUPPLICANT_SCAN_INTERVAL_MS);
         dumpSetting(s, p,
@@ -1816,6 +1813,12 @@
                 SecureSettingsProto.Accessibility.ACCESSIBILITY_MAGNIFICATION_MODE);
         p.end(accessibilityToken);
 
+        final long adaptiveSleepToken = p.start(SecureSettingsProto.ADAPTIVE_SLEEP);
+        dumpSetting(s, p,
+                Settings.Secure.ADAPTIVE_SLEEP,
+                SecureSettingsProto.AdaptiveSleep.ENABLED);
+        p.end(adaptiveSleepToken);
+
         dumpSetting(s, p,
                 Settings.Secure.ALLOWED_GEOLOCATION_ORIGINS,
                 SecureSettingsProto.ALLOWED_GEOLOCATION_ORIGINS);
@@ -2188,13 +2191,14 @@
                 Settings.Secure.NAVIGATION_MODE,
                 SecureSettingsProto.NAVIGATION_MODE);
 
+        final long gestureNavToken = p.start(SecureSettingsProto.GESTURE_NAVIGATION);
         dumpSetting(s, p,
                 Settings.Secure.BACK_GESTURE_INSET_SCALE_LEFT,
                 SecureSettingsProto.GestureNavigation.BACK_GESTURE_INSET_SCALE_LEFT);
-
         dumpSetting(s, p,
                 Settings.Secure.BACK_GESTURE_INSET_SCALE_RIGHT,
                 SecureSettingsProto.GestureNavigation.BACK_GESTURE_INSET_SCALE_RIGHT);
+        p.end(gestureNavToken);
 
         final long nfcPaymentToken = p.start(SecureSettingsProto.NFC_PAYMENT);
         dumpSetting(s, p,
@@ -2729,6 +2733,12 @@
         dumpSetting(s, p,
                 Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ,
                 SystemSettingsProto.Screen.AUTO_BRIGHTNESS_ADJ);
+        dumpSetting(s, p,
+                Settings.System.SCREEN_BRIGHTNESS_FLOAT,
+                SystemSettingsProto.Screen.BRIGHTNESS_FLOAT);
+        dumpSetting(s, p,
+                Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT,
+                SystemSettingsProto.Screen.BRIGHTNESS_FOR_VR_FLOAT);
         p.end(screenToken);
 
         dumpSetting(s, p,
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
index 1072076..aad46e9 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsProvider.java
@@ -180,10 +180,17 @@
     private static final int MUTATION_OPERATION_UPDATE = 3;
     private static final int MUTATION_OPERATION_RESET = 4;
 
+    private static final String[] LEGACY_SQL_COLUMNS = new String[] {
+            Settings.NameValueTable._ID,
+            Settings.NameValueTable.NAME,
+            Settings.NameValueTable.VALUE,
+    };
+
     private static final String[] ALL_COLUMNS = new String[] {
             Settings.NameValueTable._ID,
             Settings.NameValueTable.NAME,
-            Settings.NameValueTable.VALUE
+            Settings.NameValueTable.VALUE,
+            Settings.NameValueTable.IS_PRESERVED_IN_RESTORE,
     };
 
     public static final int SETTINGS_TYPE_GLOBAL = SettingsState.SETTINGS_TYPE_GLOBAL;
@@ -2186,7 +2193,7 @@
         if (prefix == null) {
             return;
         }
-        String callingPackage = getCallingPackage();
+        String callingPackage = resolveCallingPackage();
         String namespace = prefix.replace("/", "");
         if (DeviceConfig.getPublicNamespaces().contains(namespace)) {
             return;
@@ -2353,6 +2360,10 @@
                 case Settings.NameValueTable.VALUE: {
                     values[i] = setting.getValue();
                 } break;
+
+                case Settings.NameValueTable.IS_PRESERVED_IN_RESTORE: {
+                    values[i] = String.valueOf(setting.isValuePreservedInRestore());
+                } break;
             }
         }
 
@@ -3097,7 +3108,7 @@
             SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
             queryBuilder.setTables(table);
 
-            Cursor cursor = queryBuilder.query(database, ALL_COLUMNS,
+            Cursor cursor = queryBuilder.query(database, LEGACY_SQL_COLUMNS,
                     null, null, null, null, null);
 
             if (cursor == null) {
@@ -3415,7 +3426,7 @@
         }
 
         private final class UpgradeController {
-            private static final int SETTINGS_VERSION = 186;
+            private static final int SETTINGS_VERSION = 188;
 
             private final int mUserId;
 
@@ -4694,6 +4705,50 @@
                     currentVersion = 186;
                 }
 
+                if (currentVersion == 186) {
+                    // Remove unused wifi settings
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_rtt_background_exec_gap_ms");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "network_recommendation_request_timeout_ms");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_suspend_optimizations_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_is_unusable_event_metrics_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_data_stall_min_tx_bad");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_data_stall_min_tx_success_without_rx");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_link_speed_metrics_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_pno_frequency_culling_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_pno_recency_sorting_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_link_probing_enabled");
+                    getGlobalSettingsLocked().deleteSettingLocked(
+                            "wifi_saved_state");
+                    currentVersion = 187;
+                }
+
+                if (currentVersion == 187) {
+                    // Migrate adaptive sleep setting from System to Secure.
+                    if (userId == UserHandle.USER_OWNER) {
+                        // Remove from the system settings.
+                        SettingsState systemSettings = getSystemSettingsLocked(userId);
+                        String name = Settings.System.ADAPTIVE_SLEEP;
+                        Setting setting = systemSettings.getSettingLocked(name);
+                        systemSettings.deleteSettingLocked(name);
+
+                        // Add to the secure settings.
+                        SettingsState secureSettings = getSecureSettingsLocked(userId);
+                        secureSettings.insertSettingLocked(name, setting.getValue(), null /* tag */,
+                                false /* makeDefault */, SettingsState.SYSTEM_PACKAGE_NAME);
+                    }
+                    currentVersion = 188;
+                }
+
                 // vXXX: Add new settings above this point.
 
                 if (currentVersion != newVersion) {
diff --git a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
index db18213a..cd62420 100644
--- a/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
+++ b/packages/SettingsProvider/src/com/android/providers/settings/SettingsState.java
@@ -41,13 +41,13 @@
 import android.util.Base64;
 import android.util.Slog;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.Xml;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FrameworkStatsLog;
 
 import libcore.io.IoUtils;
 
@@ -425,12 +425,14 @@
             }
             newState = oldState;
         } else {
-            newState = new Setting(name, value, makeDefault, packageName, tag);
+            newState = new Setting(name, value, makeDefault, packageName, tag,
+                    forceNonSystemPackage);
             mSettings.put(name, newState);
         }
 
-        StatsLog.write(StatsLog.SETTING_CHANGED, name, value, newState.value, oldValue, tag,
-            makeDefault, getUserIdFromKey(mKey), StatsLog.SETTING_CHANGED__REASON__UPDATED);
+        FrameworkStatsLog.write(FrameworkStatsLog.SETTING_CHANGED, name, value, newState.value,
+                oldValue, tag, makeDefault, getUserIdFromKey(mKey),
+                FrameworkStatsLog.SETTING_CHANGED__REASON__UPDATED);
 
         addHistoricalOperationLocked(HISTORICAL_OPERATION_UPDATE, newState);
 
@@ -489,9 +491,9 @@
             if (key.startsWith(prefix) && !keyValues.containsKey(key)) {
                 Setting oldState = mSettings.remove(key);
 
-                StatsLog.write(StatsLog.SETTING_CHANGED, key, /* value= */ "", /* newValue= */ "",
-                        oldState.value, /* tag */ "", false, getUserIdFromKey(mKey),
-                        StatsLog.SETTING_CHANGED__REASON__DELETED);
+                FrameworkStatsLog.write(FrameworkStatsLog.SETTING_CHANGED, key,
+                        /* value= */ "", /* newValue= */ "", oldState.value, /* tag */ "", false,
+                        getUserIdFromKey(mKey), FrameworkStatsLog.SETTING_CHANGED__REASON__DELETED);
                 addHistoricalOperationLocked(HISTORICAL_OPERATION_DELETE, oldState);
                 changedKeys.add(key); // key was removed
             }
@@ -516,9 +518,9 @@
                 continue;
             }
 
-            StatsLog.write(StatsLog.SETTING_CHANGED, key, value, state.value, oldValue,
-                    /* tag */ null, /* make default */ false,
-                    getUserIdFromKey(mKey), StatsLog.SETTING_CHANGED__REASON__UPDATED);
+            FrameworkStatsLog.write(FrameworkStatsLog.SETTING_CHANGED, key, value, state.value,
+                    oldValue, /* tag */ null, /* make default */ false,
+                    getUserIdFromKey(mKey), FrameworkStatsLog.SETTING_CHANGED__REASON__UPDATED);
             addHistoricalOperationLocked(HISTORICAL_OPERATION_UPDATE, state);
         }
 
@@ -544,9 +546,9 @@
 
         Setting oldState = mSettings.remove(name);
 
-        StatsLog.write(StatsLog.SETTING_CHANGED, name, /* value= */ "", /* newValue= */ "",
-            oldState.value, /* tag */ "", false, getUserIdFromKey(mKey),
-            StatsLog.SETTING_CHANGED__REASON__DELETED);
+        FrameworkStatsLog.write(FrameworkStatsLog.SETTING_CHANGED, name, /* value= */ "",
+                /* newValue= */ "", oldState.value, /* tag */ "", false, getUserIdFromKey(mKey),
+                FrameworkStatsLog.SETTING_CHANGED__REASON__DELETED);
 
         updateMemoryUsagePerPackageLocked(oldState.packageName, oldState.value,
                 null, oldState.defaultValue, null);
@@ -1172,11 +1174,15 @@
 
         public Setting(String name, String value, boolean makeDefault, String packageName,
                 String tag) {
+            this(name, value, makeDefault, packageName, tag, false);
+        }
+
+        Setting(String name, String value, boolean makeDefault, String packageName,
+                String tag, boolean forceNonSystemPackage) {
             this.name = name;
             // overrideableByRestore = true as the first initialization isn't considered a
             // modification.
-            update(value, makeDefault, packageName, tag, false,
-                    /* overrideableByRestore */ true);
+            update(value, makeDefault, packageName, tag, forceNonSystemPackage, true);
         }
 
         public Setting(String name, String value, String defaultValue,
diff --git a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
index 6d94a90..bf817b1 100644
--- a/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
+++ b/packages/SettingsProvider/test/src/android/provider/SettingsBackupTest.java
@@ -99,7 +99,9 @@
                     Settings.System.WHEN_TO_MAKE_WIFI_CALLS, // bug?
                     Settings.System.WINDOW_ORIENTATION_LISTENER_LOG, // used for debugging only
                     Settings.System.MIN_REFRESH_RATE, // depends on hardware capabilities
-                    Settings.System.PEAK_REFRESH_RATE // depends on hardware capabilities
+                    Settings.System.PEAK_REFRESH_RATE, // depends on hardware capabilities
+                    Settings.System.SCREEN_BRIGHTNESS_FLOAT,
+                    Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT
                     );
 
     private static final Set<String> BACKUP_BLACKLISTED_GLOBAL_SETTINGS =
@@ -543,7 +545,6 @@
                     Settings.Global.WIFI_ON,
                     Settings.Global.WIFI_P2P_DEVICE_NAME,
                     Settings.Global.WIFI_P2P_PENDING_FACTORY_RESET,
-                    Settings.Global.WIFI_SAVED_STATE,
                     Settings.Global.WIFI_SCAN_ALWAYS_AVAILABLE,
                     Settings.Global.WIFI_SCAN_INTERVAL_WHEN_P2P_CONNECTED_MS,
                     Settings.Global.WIFI_SCAN_THROTTLE_ENABLED,
@@ -729,6 +730,7 @@
                  Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE,
                  Settings.Secure.FACE_UNLOCK_RE_ENROLL,
                  Settings.Secure.TAP_GESTURE,
+                 Settings.Secure.NEARBY_SHARING_COMPONENT, // not user configurable
                  Settings.Secure.WINDOW_MAGNIFICATION,
                  Settings.Secure.ACCESSIBILITY_SHORTCUT_TARGET_MAGNIFICATION_CONTROLLER,
                  Settings.Secure.SUPPRESS_DOZE);
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
index e650882..f5334fb 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsBackupAgentTest.java
@@ -32,6 +32,8 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.provider.Settings;
+import android.provider.settings.validators.SettingsValidators;
+import android.provider.settings.validators.Validator;
 import android.test.mock.MockContentProvider;
 import android.test.mock.MockContentResolver;
 
@@ -43,6 +45,7 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.IOException;
+import java.nio.ByteBuffer;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -55,12 +58,24 @@
 /** Tests for the SettingsHelperTest */
 @RunWith(AndroidJUnit4.class)
 public class SettingsBackupAgentTest extends BaseSettingsProviderTest {
-
+    private static final Uri TEST_URI = Uri.EMPTY;
     private static final String TEST_DISPLAY_DENSITY_FORCED = "123";
+    private static final String OVERRIDDEN_TEST_SETTING = "overridden_setting";
+    private static final String PRESERVED_TEST_SETTING = "preserved_setting";
+    private static final Map<String, String> DEVICE_SPECIFIC_TEST_VALUES = new HashMap<>();
     private static final Map<String, String> TEST_VALUES = new HashMap<>();
+    private static final Map<String, Validator> TEST_VALUES_VALIDATORS = new HashMap<>();
 
     static {
-        TEST_VALUES.put(Settings.Secure.DISPLAY_DENSITY_FORCED, TEST_DISPLAY_DENSITY_FORCED);
+        DEVICE_SPECIFIC_TEST_VALUES.put(Settings.Secure.DISPLAY_DENSITY_FORCED,
+                TEST_DISPLAY_DENSITY_FORCED);
+
+        TEST_VALUES.put(OVERRIDDEN_TEST_SETTING, "123");
+        TEST_VALUES.put(PRESERVED_TEST_SETTING, "124");
+
+        TEST_VALUES_VALIDATORS.put(OVERRIDDEN_TEST_SETTING,
+                SettingsValidators.ANY_STRING_VALIDATOR);
+        TEST_VALUES_VALIDATORS.put(PRESERVED_TEST_SETTING, SettingsValidators.ANY_STRING_VALIDATOR);
     }
 
     private TestFriendlySettingsBackupAgent mAgentUnderTest;
@@ -83,14 +98,15 @@
 
         byte[] settingsBackup = mAgentUnderTest.getDeviceSpecificConfiguration();
 
-        assertEquals("Not all values backed up.", TEST_VALUES.keySet(), helper.mReadEntries);
+        assertEquals("Not all values backed up.", DEVICE_SPECIFIC_TEST_VALUES.keySet(), helper.mReadEntries);
 
         mAgentUnderTest.restoreDeviceSpecificConfig(
                 settingsBackup,
                 R.array.restore_blocked_device_specific_settings,
+                Collections.emptySet(),
                 Collections.emptySet());
 
-        assertEquals("Not all values were restored.", TEST_VALUES, helper.mWrittenValues);
+        assertEquals("Not all values were restored.", DEVICE_SPECIFIC_TEST_VALUES, helper.mWrittenValues);
     }
 
     @Test
@@ -100,12 +116,13 @@
 
         byte[] settingsBackup = mAgentUnderTest.getDeviceSpecificConfiguration();
 
-        assertEquals("Not all values backed up.", TEST_VALUES.keySet(), helper.mReadEntries);
-        mAgentUnderTest.setBlockedSettings(TEST_VALUES.keySet().toArray(new String[0]));
+        assertEquals("Not all values backed up.", DEVICE_SPECIFIC_TEST_VALUES.keySet(), helper.mReadEntries);
+        mAgentUnderTest.setBlockedSettings(DEVICE_SPECIFIC_TEST_VALUES.keySet().toArray(new String[0]));
 
         mAgentUnderTest.restoreDeviceSpecificConfig(
                 settingsBackup,
                 R.array.restore_blocked_device_specific_settings,
+                Collections.emptySet(),
                 Collections.emptySet());
 
         assertTrue("Not all values were blocked.", helper.mWrittenValues.isEmpty());
@@ -172,9 +189,50 @@
                 mAgentUnderTest.restoreDeviceSpecificConfig(
                         data,
                         R.array.restore_blocked_device_specific_settings,
+                        Collections.emptySet(),
                         Collections.emptySet()));
     }
 
+    @Test
+    public void testOnRestore_preservedSettingsAreNotRestored() {
+        SettingsBackupAgent.SettingsBackupWhitelist whitelist =
+                new SettingsBackupAgent.SettingsBackupWhitelist(
+                        new String[] { OVERRIDDEN_TEST_SETTING, PRESERVED_TEST_SETTING },
+                        TEST_VALUES_VALIDATORS);
+        mAgentUnderTest.setSettingsWhitelist(whitelist);
+        mAgentUnderTest.setBlockedSettings();
+        TestSettingsHelper settingsHelper = new TestSettingsHelper(mContext);
+        mAgentUnderTest.mSettingsHelper = settingsHelper;
+
+        byte[] backupData = generateBackupData(TEST_VALUES);
+        mAgentUnderTest.restoreSettings(backupData, /* pos */ 0, backupData.length, TEST_URI, new HashSet<>(),
+                Collections.emptySet(), /* blockedSettingsArrayId */ 0, Collections.emptySet(),
+                new HashSet<>(Collections.singletonList(SettingsBackupAgent.getQualifiedKeyForSetting(PRESERVED_TEST_SETTING, TEST_URI))));
+
+        assertTrue(settingsHelper.mWrittenValues.containsKey(OVERRIDDEN_TEST_SETTING));
+        assertFalse(settingsHelper.mWrittenValues.containsKey(PRESERVED_TEST_SETTING));
+    }
+
+    private byte[] generateBackupData(Map<String, String> keyValueData) {
+        int totalBytes = 0;
+        for (String key : keyValueData.keySet()) {
+            totalBytes += 2 * Integer.BYTES + key.getBytes().length
+                    + keyValueData.get(key).getBytes().length;
+        }
+
+        ByteBuffer buffer = ByteBuffer.allocate(totalBytes);
+        for (String key : keyValueData.keySet()) {
+            byte[] keyBytes = key.getBytes();
+            byte[] valueBytes = keyValueData.get(key).getBytes();
+            buffer.putInt(keyBytes.length);
+            buffer.put(keyBytes);
+            buffer.putInt(valueBytes.length);
+            buffer.put(valueBytes);
+        }
+
+        return buffer.array();
+    }
+
     private byte[] generateUncorruptedHeader() throws IOException {
         try (ByteArrayOutputStream os = new ByteArrayOutputStream()) {
             mAgentUnderTest.writeHeader(os);
@@ -219,6 +277,7 @@
     private static class TestFriendlySettingsBackupAgent extends SettingsBackupAgent {
         private Boolean mForcedDeviceInfoRestoreAcceptability = null;
         private String[] mBlockedSettings = null;
+        private SettingsBackupWhitelist mSettingsWhitelist = null;
 
         void setForcedDeviceInfoRestoreAcceptability(boolean value) {
             mForcedDeviceInfoRestoreAcceptability = value;
@@ -228,6 +287,10 @@
             mBlockedSettings = blockedSettings;
         }
 
+        void setSettingsWhitelist(SettingsBackupWhitelist settingsWhitelist) {
+            mSettingsWhitelist = settingsWhitelist;
+        }
+
         @Override
         protected Set<String> getBlockedSettings(int blockedSettingsArrayId) {
             return mBlockedSettings == null
@@ -241,6 +304,15 @@
                     ? super.isSourceAcceptable(data, pos)
                     : mForcedDeviceInfoRestoreAcceptability;
         }
+
+        @Override
+        SettingsBackupWhitelist getBackupWhitelist(Uri contentUri) {
+            if (mSettingsWhitelist == null) {
+                return super.getBackupWhitelist(contentUri);
+            }
+
+            return mSettingsWhitelist;
+        }
     }
 
     /** The TestSettingsHelper tracks which values have been backed up and/or restored. */
@@ -257,7 +329,7 @@
         @Override
         public String onBackupValue(String key, String value) {
             mReadEntries.add(key);
-            String readValue = TEST_VALUES.get(key);
+            String readValue = DEVICE_SPECIFIC_TEST_VALUES.get(key);
             assert readValue != null;
             return readValue;
         }
diff --git a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
index d67a9bc..8ff595b 100644
--- a/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
+++ b/packages/SettingsProvider/test/src/com/android/providers/settings/SettingsProviderTest.java
@@ -33,7 +33,6 @@
 import android.provider.Settings;
 import android.util.Log;
 
-import org.junit.Ignore;
 import org.junit.Test;
 
 import java.util.concurrent.atomic.AtomicBoolean;
@@ -692,125 +691,4 @@
             cursor.close();
         }
     }
-
-    @Test
-    @Ignore("b/140250974")
-    public void testLocationModeChanges_viaFrontEndApi() throws Exception {
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),
-                UserHandle.USER_SYSTEM);
-        assertEquals(
-                "Wrong location providers",
-                "",
-                getStringViaFrontEndApiSetting(
-                        SETTING_TYPE_SECURE,
-                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                        UserHandle.USER_SYSTEM));
-
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_BATTERY_SAVING),
-                UserHandle.USER_SYSTEM);
-        assertEquals(
-                "Wrong location providers",
-                "network",
-                getStringViaFrontEndApiSetting(
-                        SETTING_TYPE_SECURE,
-                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                        UserHandle.USER_SYSTEM));
-
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY),
-                UserHandle.USER_SYSTEM);
-        assertEquals(
-                "Wrong location providers",
-                "gps,network",
-                getStringViaFrontEndApiSetting(
-                        SETTING_TYPE_SECURE,
-                        Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                        UserHandle.USER_SYSTEM));
-    }
-
-    @Test
-    @Ignore("b/140250974")
-    public void testLocationProvidersAllowed_disableProviders() throws Exception {
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_HIGH_ACCURACY),
-                UserHandle.USER_SYSTEM);
-
-        // Disable providers that were enabled
-        updateStringViaProviderApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                "-gps,-network");
-        assertEquals(
-                "Wrong location providers",
-                "",
-                queryStringViaProviderApi(
-                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
-
-        // Disable a provider that was not enabled
-        updateStringViaProviderApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                "-test");
-        assertEquals(
-                "Wrong location providers",
-                "",
-                queryStringViaProviderApi(
-                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
-    }
-
-    @Test
-    @Ignore("b/140250974")
-    public void testLocationProvidersAllowed_enableAndDisable() throws Exception {
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),
-                UserHandle.USER_SYSTEM);
-
-        updateStringViaProviderApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                "+gps,+network,+test");
-        updateStringViaProviderApiSetting(
-                SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED, "-test");
-
-        assertEquals(
-                "Wrong location providers",
-                "gps,network",
-                queryStringViaProviderApi(
-                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
-    }
-
-    @Test
-    @Ignore("b/140250974")
-    public void testLocationProvidersAllowedLocked_invalidInput() throws Exception {
-        setStringViaFrontEndApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_MODE,
-                String.valueOf(Settings.Secure.LOCATION_MODE_OFF),
-                UserHandle.USER_SYSTEM);
-
-        // update providers with a invalid string
-        updateStringViaProviderApiSetting(
-                SETTING_TYPE_SECURE,
-                Settings.Secure.LOCATION_PROVIDERS_ALLOWED,
-                "+gps, invalid-string");
-
-        // Verifies providers list does not change
-        assertEquals(
-                "Wrong location providers",
-                "",
-                queryStringViaProviderApi(
-                        SETTING_TYPE_SECURE, Settings.Secure.LOCATION_PROVIDERS_ALLOWED));
-    }
 }
diff --git a/packages/Shell/AndroidManifest.xml b/packages/Shell/AndroidManifest.xml
index 0f35853..cc2c92b 100644
--- a/packages/Shell/AndroidManifest.xml
+++ b/packages/Shell/AndroidManifest.xml
@@ -91,6 +91,7 @@
     <uses-permission android:name="android.permission.TEST_MANAGE_ROLLBACKS" />
     <uses-permission android:name="android.permission.ACCESS_SURFACE_FLINGER" />
     <uses-permission android:name="android.permission.READ_FRAME_BUFFER" />
+    <uses-permission android:name="android.permission.REBOOT" />
     <uses-permission android:name="android.permission.DEVICE_POWER" />
     <uses-permission android:name="android.permission.POWER_SAVER" />
     <uses-permission android:name="android.permission.INSTALL_LOCATION_PROVIDER" />
@@ -138,6 +139,7 @@
     <uses-permission android:name="android.permission.GET_APP_OPS_STATS" />
     <uses-permission android:name="android.permission.MANAGE_APP_OPS_MODES" />
     <uses-permission android:name="android.permission.VIBRATE" />
+    <uses-permission android:name="android.permission.ACCESS_VIBRATOR_STATE" />
     <uses-permission android:name="android.permission.MANAGE_ACTIVITY_STACKS" />
     <uses-permission android:name="android.permission.START_TASKS_FROM_RECENTS" />
     <uses-permission android:name="android.permission.START_ACTIVITIES_FROM_BACKGROUND" />
@@ -219,6 +221,14 @@
     <!-- Permission required for CTS test - CrossProfileAppsHostSideTest -->
     <uses-permission android:name="android.permission.INTERACT_ACROSS_PROFILES"/>
 
+    <!-- permissions required for CTS test - PhoneStateListenerTest -->
+    <uses-permission android:name="android.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH" />
+
+    <!-- Permissions required for ganting and logging -->
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
+    <uses-permission android:name="android.permission.OVERRIDE_COMPAT_CHANGE_CONFIG"/>
+
     <!-- Permission required for CTS test - UiModeManagerTest -->
     <uses-permission android:name="android.permission.ENTER_CAR_MODE_PRIORITIZED"/>
 
@@ -240,6 +250,12 @@
     <!-- Allows setting brightness from the shell -->
     <uses-permission android:name="android.permission.CONTROL_DISPLAY_BRIGHTNESS"/>
 
+    <!-- Permission required for CTS test - ShortcutManagerUsageTest -->
+    <uses-permission android:name="android.permission.ACCESS_SHORTCUTS"/>
+
+     <!-- Permission required for CTS test - UsageStatsTest -->
+    <uses-permission android:name="android.permission.ACCESS_LOCUS_ID_USAGE_STATS"/>
+
     <!-- Permissions required to test ambient display. -->
     <uses-permission android:name="android.permission.READ_DREAM_STATE"/>
     <uses-permission android:name="android.permission.WRITE_DREAM_STATE"/>
@@ -247,6 +263,9 @@
     <!-- Permission required for CTS test - CtsLightsManagerTest -->
     <uses-permission android:name="android.permission.CONTROL_DEVICE_LIGHTS" />
 
+    <!-- Permission needed to test mainline permission module rollback -->
+    <uses-permission android:name="android.permission.UPGRADE_RUNTIME_PERMISSIONS" />
+
     <application android:label="@string/app_label"
                 android:theme="@android:style/Theme.DeviceDefault.DayNight"
                 android:defaultToDeviceProtectedStorage="true"
@@ -293,6 +312,22 @@
                   android:excludeFromRecents="true"
                   android:exported="false" />
 
+        <!--
+        The following is used as a no-op/null home activity when
+        no other MAIN/HOME activity is present (e.g., in CSI).
+        -->
+        <activity android:name=".NullHome"
+                  android:excludeFromRecents="true"
+                  android:label=""
+                  android:screenOrientation="nosensor">
+            <!-- The priority here is set to be lower than that for Settings -->
+            <intent-filter android:priority="-1100">
+                <action android:name="android.intent.action.MAIN" />
+                <category android:name="android.intent.category.HOME" />
+                <category android:name="android.intent.category.DEFAULT" />
+            </intent-filter>
+        </activity>
+
         <receiver
             android:name=".BugreportRequestedReceiver"
             android:permission="android.permission.TRIGGER_SHELL_BUGREPORT">
diff --git a/packages/Shell/res/layout/null_home_finishing_boot.xml b/packages/Shell/res/layout/null_home_finishing_boot.xml
new file mode 100644
index 0000000..5f9563a
--- /dev/null
+++ b/packages/Shell/res/layout/null_home_finishing_boot.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:background="#80000000"
+    android:forceHasOverlappingRendering="false">
+    <LinearLayout
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:layout_gravity="center"
+        android:layout_marginStart="16dp"
+        android:layout_marginEnd="16dp">
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textSize="40sp"
+            android:textColor="?android:attr/textColorPrimary"
+            android:text="@*android:string/android_start_title"/>
+        <ProgressBar
+            style="@android:style/Widget.Material.ProgressBar.Horizontal"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginTop="12.75dp"
+            android:colorControlActivated="?android:attr/textColorPrimary"
+            android:indeterminate="true"/>
+    </LinearLayout>
+</FrameLayout>
diff --git a/packages/Shell/src/com/android/shell/BugreportProgressService.java b/packages/Shell/src/com/android/shell/BugreportProgressService.java
index 48d405a..1814593 100644
--- a/packages/Shell/src/com/android/shell/BugreportProgressService.java
+++ b/packages/Shell/src/com/android/shell/BugreportProgressService.java
@@ -97,6 +97,7 @@
 import java.io.File;
 import java.io.FileDescriptor;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
@@ -193,9 +194,7 @@
      * <p>
      * Must be a path supported by its FileProvider.
      */
-    // TODO: use the same variable for both dir
-    private static final String SCREENSHOT_DIR = "bugreports";
-    private static final String BUGREPORT_DIR = "/bugreports";
+    private static final String BUGREPORT_DIR = "bugreports";
 
     private static final String NOTIFICATION_CHANNEL_ID = "bugreports";
 
@@ -230,7 +229,7 @@
 
     private final BugreportInfoDialog mInfoDialog = new BugreportInfoDialog();
 
-    private File mScreenshotsDir;
+    private File mBugreportsDir;
 
     private BugreportManager mBugreportManager;
 
@@ -263,11 +262,12 @@
         mScreenshotHandler = new ScreenshotHandler("BugreportProgressServiceScreenshotThread");
         startSelfIntent = new Intent(this, this.getClass());
 
-        mScreenshotsDir = new File(getFilesDir(), SCREENSHOT_DIR);
-        if (!mScreenshotsDir.exists()) {
-            Log.i(TAG, "Creating directory " + mScreenshotsDir + " to store temporary screenshots");
-            if (!mScreenshotsDir.mkdir()) {
-                Log.w(TAG, "Could not create directory " + mScreenshotsDir);
+        mBugreportsDir = new File(getFilesDir(), BUGREPORT_DIR);
+        if (!mBugreportsDir.exists()) {
+            Log.i(TAG, "Creating directory " + mBugreportsDir
+                    + " to store bugreports and screenshots");
+            if (!mBugreportsDir.mkdir()) {
+                Log.w(TAG, "Could not create directory " + mBugreportsDir);
             }
         }
         final Configuration conf = mContext.getResources().getConfiguration();
@@ -372,7 +372,7 @@
         @Override
         public void onFinished() {
             mInfo.renameBugreportFile();
-            mInfo.renameScreenshots(mScreenshotsDir);
+            mInfo.renameScreenshots();
             synchronized (mLock) {
                 sendBugreportFinishedBroadcastLocked();
             }
@@ -406,7 +406,7 @@
                         mInfo.bugreportFile);
             } else {
                 trackInfoWithIdLocked();
-                cleanupOldFiles(MIN_KEEP_COUNT, MIN_KEEP_AGE);
+                cleanupOldFiles(MIN_KEEP_COUNT, MIN_KEEP_AGE, mBugreportsDir);
                 final Intent intent = new Intent(INTENT_BUGREPORT_FINISHED);
                 intent.putExtra(EXTRA_BUGREPORT, bugreportFilePath);
                 intent.putExtra(EXTRA_SCREENSHOT, getScreenshotForIntent(mInfo));
@@ -418,7 +418,8 @@
 
     private static void sendRemoteBugreportFinishedBroadcast(Context context,
             String bugreportFileName, File bugreportFile) {
-        cleanupOldFiles(REMOTE_BUGREPORT_FILES_AMOUNT, REMOTE_MIN_KEEP_AGE);
+        cleanupOldFiles(REMOTE_BUGREPORT_FILES_AMOUNT, REMOTE_MIN_KEEP_AGE,
+                bugreportFile.getParentFile());
         final Intent intent = new Intent(DevicePolicyManager.ACTION_REMOTE_BUGREPORT_DISPATCH);
         final Uri bugreportUri = getUri(context, bugreportFile);
         final String bugreportHash = generateFileHash(bugreportFileName);
@@ -468,12 +469,12 @@
         return fileHash;
     }
 
-    static void cleanupOldFiles(final int minCount, final long minAge) {
+    static void cleanupOldFiles(final int minCount, final long minAge, File bugreportsDir) {
         new AsyncTask<Void, Void, Void>() {
             @Override
             protected Void doInBackground(Void... params) {
                 try {
-                    FileUtils.deleteOlderFiles(new File(BUGREPORT_DIR), minCount, minAge);
+                    FileUtils.deleteOlderFiles(bugreportsDir, minCount, minAge);
                 } catch (RuntimeException e) {
                     Log.e(TAG, "RuntimeException deleting old files", e);
                 }
@@ -604,18 +605,25 @@
         String name = new SimpleDateFormat("yyyy-MM-dd-HH-mm-ss").format(new Date());
 
         BugreportInfo info = new BugreportInfo(mContext, baseName, name,
-                shareTitle, shareDescription, bugreportType);
+                shareTitle, shareDescription, bugreportType, mBugreportsDir);
+        ParcelFileDescriptor bugreportFd;
+        ParcelFileDescriptor screenshotFd;
 
-        ParcelFileDescriptor bugreportFd = info.createBugreportFd();
-        if (bugreportFd == null) {
-            Log.e(TAG, "Bugreport parcel file descriptor is null.");
-            return;
-        }
-        ParcelFileDescriptor screenshotFd = info.createScreenshotFd();
-        if (screenshotFd == null) {
-            Log.e(TAG, "Screenshot parcel file descriptor is null. Deleting bugreport file");
-            FileUtils.closeQuietly(bugreportFd);
-            info.bugreportFile.delete();
+        try {
+            bugreportFd = info.createAndGetBugreportFd();
+            if (bugreportFd == null) {
+                Log.e(TAG, "Bugreport parcel file descriptor is null.");
+                return;
+            }
+            screenshotFd = info.createAndGetDefaultScreenshotFd();
+            if (screenshotFd == null) {
+                Log.e(TAG, "Screenshot parcel file descriptor is null. Deleting bugreport file");
+                FileUtils.closeQuietly(bugreportFd);
+                info.bugreportFile.delete();
+                return;
+            }
+        } catch (IOException e) {
+            Log.e(TAG, "Error in generating bugreport files: ", e);
             return;
         }
         mBugreportManager = (BugreportManager) mContext.getSystemService(
@@ -639,21 +647,24 @@
         }
     }
 
-    private static ParcelFileDescriptor createReadWriteFile(File file) {
+    private static ParcelFileDescriptor getFd(File file) {
         try {
-            file.createNewFile();
-            file.setReadable(true, true);
-            file.setWritable(true, true);
-
-            ParcelFileDescriptor fd = ParcelFileDescriptor.open(file,
+            return ParcelFileDescriptor.open(file,
                     ParcelFileDescriptor.MODE_WRITE_ONLY | ParcelFileDescriptor.MODE_APPEND);
-            return fd;
-        } catch (IOException e) {
+        } catch (FileNotFoundException e) {
             Log.i(TAG, "Error in generating bugreports: ", e);
         }
         return null;
     }
 
+    private static void createReadWriteFile(File file) throws IOException {
+        if (!file.exists()) {
+            file.createNewFile();
+            file.setReadable(true, true);
+            file.setWritable(true, true);
+        }
+    }
+
     /**
      * Updates the system notification for a given bugreport.
      */
@@ -874,7 +885,7 @@
             return;
         }
         final String screenshotPath =
-                new File(mScreenshotsDir, info.getPathNextScreenshot()).getAbsolutePath();
+                new File(mBugreportsDir, info.getPathNextScreenshot()).getAbsolutePath();
 
         Message.obtain(mScreenshotHandler, MSG_SCREENSHOT_REQUEST, id, UNUSED_ARG2, screenshotPath)
                 .sendToTarget();
@@ -921,7 +932,7 @@
             info.addScreenshot(screenshotFile);
             if (info.finished) {
                 Log.d(TAG, "Screenshot finished after bugreport; updating share notification");
-                info.renameScreenshots(mScreenshotsDir);
+                info.renameScreenshots();
                 sendBugreportNotification(info, mTakingScreenshot);
             }
             msg = mContext.getString(R.string.bugreport_screenshot_taken);
@@ -1030,11 +1041,10 @@
     /**
      * Build {@link Intent} that can be used to share the given bugreport.
      */
-    private static Intent buildSendIntent(Context context, BugreportInfo info,
-            File screenshotsDir) {
+    private static Intent buildSendIntent(Context context, BugreportInfo info) {
         // Rename files (if required) before sharing
         info.renameBugreportFile();
-        info.renameScreenshots(screenshotsDir);
+        info.renameScreenshots();
         // Files are kept on private storage, so turn into Uris that we can
         // grant temporary permissions for.
         final Uri bugreportUri;
@@ -1120,7 +1130,7 @@
 
         addDetailsToZipFile(info);
 
-        final Intent sendIntent = buildSendIntent(mContext, info, mScreenshotsDir);
+        final Intent sendIntent = buildSendIntent(mContext, info);
         if (sendIntent == null) {
             Log.w(TAG, "Stopping progres on ID " + id + " because share intent could not be built");
             synchronized (mLock) {
@@ -1813,24 +1823,37 @@
          */
         BugreportInfo(Context context, String baseName, String name,
                 @Nullable String shareTitle, @Nullable String shareDescription,
-                @BugreportParams.BugreportMode int type) {
+                @BugreportParams.BugreportMode int type, File bugreportsDir) {
             this.context = context;
             this.name = this.initialName = name;
             this.shareTitle = shareTitle == null ? "" : shareTitle;
             this.shareDescription = shareDescription == null ? "" : shareDescription;
             this.type = type;
             this.baseName = baseName;
+            createBugreportFile(bugreportsDir);
+            createScreenshotFile(bugreportsDir);
         }
 
-        ParcelFileDescriptor createBugreportFd() {
-            bugreportFile = new File(BUGREPORT_DIR, getFileName(this, ".zip"));
-            return createReadWriteFile(bugreportFile);
+        void createBugreportFile(File bugreportsDir) {
+            bugreportFile = new File(bugreportsDir, getFileName(this, ".zip"));
         }
 
-        ParcelFileDescriptor createScreenshotFd() {
-            File screenshotFile = new File(BUGREPORT_DIR, getScreenshotName("default"));
+        void createScreenshotFile(File bugreportsDir) {
+            File screenshotFile = new File(bugreportsDir, getScreenshotName("default"));
             addScreenshot(screenshotFile);
-            return createReadWriteFile(screenshotFile);
+        }
+
+        ParcelFileDescriptor createAndGetBugreportFd() throws IOException {
+            createReadWriteFile(bugreportFile);
+            return getFd(bugreportFile);
+        }
+
+        ParcelFileDescriptor createAndGetDefaultScreenshotFd() throws IOException {
+            if (screenshotFiles.isEmpty()) {
+                return null;
+            }
+            createReadWriteFile(screenshotFiles.get(0));
+            return getFd(screenshotFiles.get(0));
         }
 
         /**
@@ -1859,7 +1882,7 @@
          * Rename all screenshots files so that they contain the new {@code name} instead of the
          * {@code initialName} if user has changed it.
          */
-        void renameScreenshots(File screenshotDir) {
+        void renameScreenshots() {
             if (TextUtils.isEmpty(name)) {
                 return;
             }
@@ -1869,7 +1892,7 @@
                 final String newName = oldName.replaceFirst(initialName, name);
                 final File newFile;
                 if (!newName.equals(oldName)) {
-                    final File renamedFile = new File(screenshotDir, newName);
+                    final File renamedFile = new File(oldFile.getParentFile(), newName);
                     Log.d(TAG, "Renaming screenshot file " + oldFile + " to " + renamedFile);
                     newFile = oldFile.renameTo(renamedFile) ? renamedFile : oldFile;
                 } else {
@@ -1889,7 +1912,8 @@
          * Rename bugreport file to include the name given by user via UI
          */
         void renameBugreportFile() {
-            File newBugreportFile = new File(BUGREPORT_DIR, getFileName(this, ".zip"));
+            File newBugreportFile = new File(bugreportFile.getParentFile(),
+                    getFileName(this, ".zip"));
             if (!newBugreportFile.getPath().equals(bugreportFile.getPath())) {
                 if (bugreportFile.renameTo(newBugreportFile)) {
                     bugreportFile = newBugreportFile;
diff --git a/packages/Shell/src/com/android/shell/NullHome.java b/packages/Shell/src/com/android/shell/NullHome.java
new file mode 100644
index 0000000..bd97561
--- /dev/null
+++ b/packages/Shell/src/com/android/shell/NullHome.java
@@ -0,0 +1,43 @@
+/*
+ * 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.shell;
+
+import android.app.Activity;
+import android.os.Bundle;
+import android.util.Log;
+
+/**
+ * This covers the fallback case where no launcher is available.
+ * Usually Settings.apk has one fallback home activity.
+ * Settings.apk, however, is not part of CSI, which needs to be
+ * standalone (bootable and testable).
+ */
+public class NullHome extends Activity {
+    private static final String TAG = "NullHome";
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        Log.i(TAG, "onCreate");
+        setContentView(R.layout.null_home_finishing_boot);
+    }
+
+    protected void onDestroy() {
+        super.onDestroy();
+        Log.i(TAG, "onDestroy");
+    }
+}
diff --git a/packages/SystemUI/Android.bp b/packages/SystemUI/Android.bp
index c238d7d..de174b1 100644
--- a/packages/SystemUI/Android.bp
+++ b/packages/SystemUI/Android.bp
@@ -69,10 +69,6 @@
     ],
     manifest: "AndroidManifest.xml",
 
-    libs: [
-        "telephony-common",
-    ],
-
     kotlincflags: ["-Xjvm-default=enable"],
 
     plugins: ["dagger2-compiler-2.19"],
@@ -136,7 +132,6 @@
     ],
     libs: [
         "android.test.runner",
-        "telephony-common",
         "android.test.base",
     ],
     kotlincflags: ["-Xjvm-default=enable"],
@@ -163,10 +158,6 @@
         proguard_flags_files: ["proguard.flags"],
     },
 
-    libs: [
-        "telephony-common",
-    ],
-
     kotlincflags: ["-Xjvm-default=enable"],
 
     dxflags: ["--multi-dex"],
diff --git a/packages/SystemUI/AndroidManifest.xml b/packages/SystemUI/AndroidManifest.xml
index 26fa1cf..5458676e 100644
--- a/packages/SystemUI/AndroidManifest.xml
+++ b/packages/SystemUI/AndroidManifest.xml
@@ -644,17 +644,19 @@
 
         <activity android:name=".controls.management.ControlsProviderSelectorActivity"
                   android:label="Controls Providers"
-                  android:theme="@style/Theme.SystemUI"
-                  android:exported="true"
+                  android:theme="@style/Theme.ControlsManagement"
+                  android:showForAllUsers="true"
+                  android:clearTaskOnLaunch="true"
                   android:excludeFromRecents="true"
                   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
                   android:visibleToInstantApps="true">
         </activity>
 
         <activity android:name=".controls.management.ControlsFavoritingActivity"
-                  android:parentActivityName=".controls.management.ControlsProviderSelectorActivity"
-                  android:theme="@style/Theme.SystemUI"
+                  android:theme="@style/Theme.ControlsManagement"
                   android:excludeFromRecents="true"
+                  android:showForAllUsers="true"
+                  android:finishOnTaskLaunch="true"
                   android:configChanges="screenSize|smallestScreenSize|screenLayout|orientation|keyboard|keyboardHidden"
                   android:visibleToInstantApps="true">
         </activity>
diff --git a/packages/SystemUI/docs/QS-QQS.png b/packages/SystemUI/docs/QS-QQS.png
new file mode 100644
index 0000000..02de479
--- /dev/null
+++ b/packages/SystemUI/docs/QS-QQS.png
Binary files differ
diff --git a/packages/SystemUI/docs/plugin_hooks.md b/packages/SystemUI/docs/plugin_hooks.md
index 2fb0c99..9fe2e18 100644
--- a/packages/SystemUI/docs/plugin_hooks.md
+++ b/packages/SystemUI/docs/plugin_hooks.md
@@ -56,11 +56,6 @@
 
 Use: Allows replacement of the keyguard main clock.
 
-### Action: com.android.systemui.action.PLUGIN_NPV
-Expected interface: [NPVPlugin](/packages/SystemUI/plugin/src/com/android/systemui/plugins/NPVPlugin.java)
-
-Use: Attach a view under QQS for prototyping.
-
 # Global plugin dependencies
 These classes can be accessed by any plugin using PluginDependency as long as they @Requires them.
 
diff --git a/packages/SystemUI/docs/qs-tiles.md b/packages/SystemUI/docs/qs-tiles.md
new file mode 100644
index 0000000..b48ba67
--- /dev/null
+++ b/packages/SystemUI/docs/qs-tiles.md
@@ -0,0 +1,377 @@
+# Quick Settings Tiles (almost all there is to know about them)
+
+[TOC]
+
+## About this document
+
+This document is a more or less comprehensive summary of the state and infrastructure used by Quick Settings tiles. It provides descriptions about the lifecycle of a tile, how to create new tiles and how SystemUI manages and displays tiles, among other topics.
+
+## What are Quick Settings Tiles?
+
+Quick Settings (from now on, QS) is the expanded panel that contains shortcuts for the user to toggle many settings. This is opened by expanding the notification drawer twice (or once when phone is locked). Quick Quick Settings (QQS) is the smaller panel that appears on top of the notifications before expanding twice and contains some of the toggles with no text.
+
+Each of these toggles that appear either in QS or QQS are called Quick Settings Tiles (or tiles for short). They allow the user to enable or disable settings quickly and sometimes provides access to more comprehensive settings pages.
+
+The following image shows QQS on the left and QS on the right, with the tiles highlighted.
+
+![QQS on the left, QS on the right](QS-QQS.png)
+
+QS Tiles usually depend on one or more Controllers that bind the tile with the necessary service. Controllers are obtained by the backend and used for communication between the user and the device. 
+
+### A note on multi-user support
+
+All the classes described in this document that live inside SystemUI are only instantiated in the process of user 0. The different controllers that back the QS Tiles (also instantiated just in user 0) are user aware and provide an illusion of different instances for different users.
+
+For an example on this, see [`RotationLockController`](/packages/SystemUI/src/com/android/systemui/statusbar/policy/RotationLockControllerImpl.java). This controller for the `RotationLockTile` listens to changes in all users.
+
+## What are tiles made of?
+
+### Tile backend
+
+QS Tiles are composed of the following backend classes.
+
+* [`QSTile`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java): Interface providing common behavior for all Tiles. This class also contains some useful utility classes needed for the tiles.
+  * `Icon`: Defines the basic interface for an icon as used by the tiles.
+  * `State`: Encapsulates the state of the Tile in order to communicate between the backend and the UI.
+* [`QSTileImpl`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java): Abstract implementation of `QSTile`, providing basic common behavior for all tiles. Also implements extensions for different types of `Icon`. All tiles currently defined in SystemUI subclass from this implementation.
+* [`SystemUI/src/com/android/systemui/qs/tiles`](/packages/SystemUI/src/com/android/systemui/qs/tiles): Each tile from SystemUI is defined here by a class that extends `QSTileImpl`. These implementations connect to corresponding controllers. The controllers serve two purposes:
+    * track the state of the device and notify the tile when a change has occurred (for example, bluetooth connected to a device)
+    * accept actions from the tiles to modify the state of the phone (for example, enablind and disabling wifi).
+* [`CustomTile`](/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java): Equivalent to the tiles in the previous item, but used for 3rd party tiles. In depth information to be found in [`CustomTile`](#customtile)
+
+All the elements in SystemUI that work with tiles operate on `QSTile` or the interfaces defined in it. However, all the current implementations of tiles in SystemUI subclass from `QSTileImpl`, as it takes care of many common situations. Throughout this document, we will focus on `QSTileImpl` as examples of tiles.
+
+The interfaces in `QSTile` as well as other interfaces described in this document can be used to implement plugins to add additional tiles or different behavior. For more information, see [plugins.md](plugins.md)
+
+#### Tile State
+
+Each tile has an associated `State` object that is used to communicate information to the corresponding view. The base class `State` has (among others) the following fields:
+
+* **`state`**: one of `Tile#STATE_UNAVAILABLE`, `Tile#STATE_ACTIVE`, `Tile#STATE_INACTIVE`.
+* **`icon`**; icon to display. It may depend on the current state.
+* **`label`**: usually the name of the tile.
+* **`secondaryLabel`**: text to display in a second line. Usually extra state information.
+* **`contentDescription`**
+* **`expandedAccessibilityClassName`**: usually `Switch.class.getName()` for boolean Tiles. This will make screen readers read the current state of the tile as well as the new state when it's toggled. For this, the Tile has to use `BooleanState`.
+* **`handlesLongClick`**: whether the Tile will handle long click. If it won't, it should be set to `false` so it will not be announced for accessibility.
+
+Setting any of these fields during `QSTileImpl#handleUpdateState` will update the UI after it.
+
+Additionally. `BooleanState` has a `value` boolean field that usually would be set to `state == Tile#STATE_ACTIVE`. This is used by accessibility services along with `expandedAccessibilityClassName`.
+
+#### SystemUI tiles
+
+Each tile defined in SystemUI extends `QSTileImpl`. This abstract class implements some common functions and leaves others to be implemented by each tile, in particular those that determine how to handle different events (refresh, click, etc.).
+
+For more information on how to implement a tile in SystemUI, see [Implementing a SystemUI tile](#implementing-a-systemui-tile).
+
+### Tile views
+
+Each Tile has a couple of associated views for displaying it in QS and QQS. These views are updated after the backend updates the `State` using `QSTileImpl#handleUpdateState`.
+
+* **[`com.android.systemui.plugins.qs.QSTileView`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTileView.java)**: Abstract class that provides basic Tile functionality. These allows external [Factories](#qsfactory) to create Tiles.
+* **[`QSTileBaseView`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java)**: Implementation of `QSTileView` used in QQS that takes care of most of the features of the view:
+  * Holding the icon
+  * Background color and shape
+  * Ripple
+  * Click listening
+* **[`QSTileView`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileView.java)**: Extends `QSTileBaseView`to add label support. Used in QS.
+* **[`QSIconView`](/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSIconView.java)**
+* **[`QSIconViewImpl`](/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java)**
+
+#### QSIconView and QSIconViewImpl
+
+`QSIconView` is an interface that define the basic actions that icons have to respond to. Its base implementation in SystemUI is `QSIconViewImpl` and it and its subclasses are used by all QS tiles.
+
+This `ViewGroup` is a container for the icon used in each tile. It has methods to apply the current `State` of the tile, modifying the icon (color and animations). Classes that inherit from this can add other details that are modified when the `State` changes.
+
+Each `QSTileImpl` can specify that they use a particular implementation of this class when creating an icon.
+
+### How are the backend and the views related?
+
+The backend of the tiles (all the implementations of `QSTileImpl`) communicate with the views by using a `State`. The backend populates the state, and then the view maps the state to a visual representation.
+
+It's important to notice that the state of the tile (internal or visual) is not directly modified by a user action like clicking on the tile. Instead, acting on a tile produces internal state changes on the device, and those trigger the changes on the tile state and UI.
+
+When a container for tiles (`QuickQSPanel` or `QSPanel`) has to display tiles, they create a [`TileRecord`](/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java). This associates the corresponding `QSTile` with its `QSTileView`, doing the following:
+
+* Create the corresponding `QSTileView` to display in that container.
+* Create a callback for `QSTile` to call when its state changes. Note that a single tile will normally have up to two callbacks: one for QS and one for QQS.
+
+#### Life of a tile click
+
+This is a brief run-down of what happens when a user clicks on a tile. Internal changes on the device (for example, changes from Settings) will trigger this process starting in step 3. Throughout this section, we assume that we are dealing with a `QSTileImpl`.
+
+1. User clicks on tile. The following calls happen in sequence:
+   1. `QSTileBaseView#onClickListener`.
+   2. `QSTile#click`.
+   3. `QSTileImpl#handleClick`. This last call sets the new state for the device by using the associated controller.
+2. State in the device changes. This is normally outside of SystemUI's control.
+3. Controller receives a callback (or `Intent`) indicating the change in the device. The following calls happen:
+   1. `QSTileImpl#refreshState`, maybe passing an object with necessary information regarding the new state.
+   2. `QSTileImpl#handleRefreshState`
+4. `QSTileImpl#handleUpdateState` is called to update the state with the new information. This information can be obtained both from the `Object` passed to `refreshState` as well as from the controller.
+5. If the state has changed (in at least one element), `QSTileImpl#handleStateChanged` is called. This will trigger a call to all the associated `QSTile.Callback#onStateChanged`, passing the new `State`.
+6. `QSTileView#onStateChanged` is called and this calls `QSTileView#handleStateChanged`. This method maps the state into the view:
+   * The tile is rippled and the color changes to match the new state.
+   * `QSIconView.setIcon` is called to apply the correct state to the icon and the correct icon to the view.
+   * If the tile is a `QSTileView` (in expanded QS), the labels are changed.
+
+## Third party tiles (TileService)
+
+A third party tile is any Quick Settings tile that is provided by an app (that's not SystemUI). This is implemented by developers subclassing [`TileService`](/core/java/android/service/quicksettings/TileService.java) and interacting with its API.
+
+### API classes
+
+The classes that define the public API are in [core/java/android/service/quicksettings](core/java/android/service/quicksettings).
+
+#### Tile
+
+Parcelable class used to communicate information about the state between the external app and SystemUI. The class supports the following fields:
+
+* Label
+* Subtitle
+* Icon
+* State (`Tile#STATE_ACTIVE`, `Tile#STATE_INACTIVE`, `Tile#STATE_UNAVAILABLE`)
+* Content description
+
+Additionally, it provides a method to notify SystemUI that the information may have changed and the tile should be refreshed.
+
+#### TileService
+
+This is an abstract Service that needs to be implemented by the developer. The Service manifest must have the permission `android.permission.BIND_QUICK_SETTINGS_TILE` and must respond to the action `android.service.quicksettings.action.QS_TILE`. This will allow SystemUI to find the available tiles and display them to the user.
+
+The implementer is responsible for creating the methods that will respond to the following calls from SystemUI:
+
+* **`onTileAdded`**: called when the tile is added to QS.
+* **`onTileRemoved`**: called when the tile is removed from QS.
+* **`onStartListening`**: called when QS is opened and the tile is showing. This marks the start of the window when calling `getQSTile` is safe and will provide the correct object.
+* **`onStopListening`**: called when QS is closed or the tile is no longer visible by the user. This marks the end of the window described in `onStartListening`.
+* **`onClick`**: called when the user clicks on the tile.
+
+Additionally, the following final methods are provided:
+
+* ```java
+  public final Tile getQsTile()
+  ```
+
+  Provides the tile object that can be modified. This should only be called in the window between `onStartListening` and `onStopListening`.
+
+* ```java
+  public final boolean isLocked()
+
+  public final boolean isSecure()
+  ```
+
+  Provide information about the secure state of the device. This can be used by the tile to accept or reject actions on the tile.
+
+* ```java
+  public final void unlockAndRun(Runnable)
+  ```
+
+  May prompt the user to unlock the device if locked. Once the device is unlocked, it runs the given `Runnable`.
+
+* ```java
+  public final void showDialog(Dialog)
+  ```
+
+  Shows the provided dialog.
+
+##### Binding
+
+When the Service is bound, a callback Binder is provided by SystemUI for all the callbacks, as well as an identifier token (`Binder`). This token is used in the callbacks to identify this `TileService` and match it to the corresponding tile.
+
+The tiles are bound once immediately on creation. After that, the tile is bound whenever it should start listening. When the panels are closed, and the tile is set to stop listening, it will be unbound after a delay of `TileServiceManager#UNBIND_DELAY` (30s), if it's not set to listening again.
+
+##### Active tile
+
+A `TileService` can be declared as an active tile by adding specific meta-data to its manifest (see [TileService#META_DATA_ACTIVE_TILE](https://developer.android.com/reference/android/service/quicksettings/TileService#META_DATA_ACTIVE_TILE)). In this case, it won't receive a call of `onStartListening` when QS is opened. Instead, the tile must request listening status by making a call to `TileService#requestListeningState` with its component name. This will initiate a window that will last until the tile is updated.
+
+The tile will also be granted listening status if it's clicked by the user.
+
+### SystemUI classes
+
+The following sections describe the classes that live in SystemUI to support third party tiles. These classes live in [SystemUI/src/com/android/systemui/qs/external](/packages/SystemUI/src/com/android/systemui/qs/external/)
+
+#### CustomTile
+
+This class is an subclass of `QSTileImpl` to be used with third party tiles. It provides similar behavior to SystemUI tiles as well as handling exclusive behavior like lifting default icons and labels from the application manifest.
+
+#### TileServices
+
+This class is the central controller for all tile services that are currently in Quick Settings as well as provides the support for starting new ones. It is also an implementation of the `Binder` that receives all calls from current `TileService` components and dispatches them to SystemUI or the corresponding `CustomTile`.
+
+Whenever a binder call is made to this class, it matches the corresponding token assigned to the `TileService` with the `ComponentName` and verifies that the call comes from the right UID to prevent spoofing.
+
+As this class is the only one that's aware of every `TileService` that's currently bound, it is also in charge of requesting some to be unbound whenever there is a low memory situation.
+
+#### TileLifecycleManager
+
+This class is in charge of binding and unbinding to a particular `TileService` when necessary, as well as sending the corresponding binder calls. It does not decide whether the tile should be bound or unbound, unless it's requested to process a message. It additionally handles errors in the `Binder` as well as changes in the corresponding component (like updates and enable/disable).
+
+The class has a queue that stores requests while the service is not bound, to be processed as soon as the service is bound.
+
+Each `TileService` gets assigned an exclusive `TileLifecycleManager` when its corresponding tile is added to the set of current ones and kept as long as the tile is available to the user.
+
+#### TileServiceManager
+
+Each instance of this class is an intermediary between the `TileServices` controller and a `TileLifecycleManager` corresponding to a particular `TileService`.
+
+This class handles management of the service, including:
+
+* Deciding when to bind and unbind, requesting it to the `TileLifecycleManager`.
+* Relaying messages to the `TileService` through the `TileLifecycleManager`.
+* Determining the service's bind priority (to deal with OOM situations).
+* Detecting when the package/component has been removed in order to remove the tile and references to it.
+
+## How are tiles created/instantiated?
+
+This section describes the classes that aid in the creation of each tile as well as the complete lifecycle of a tile. First we describe two important interfaces/classes.
+
+### QSTileHost
+
+This class keeps track of the tiles selected by the current user (backed in the Secure Setting `sysui_qs_tiles`) to be displayed in Quick Settings. Whenever the value of this setting changes (or on device start), the whole list of tiles is read. This is compared with the current tiles, destroying unnecessary ones and creating needed ones.
+
+It additionally provides a point of communication between the tiles and the StatusBar, for example to open it and collapse it. And a way for the StatusBar service to add tiles (only works for `CustomTile`).
+
+#### Tile specs
+
+Each single tile is identified by a spec, which is a unique String for that type of tile. The current tiles are stored as a Setting string of comma separated values of these specs. Additionally, the default tiles (that appear on a fresh system) configuration value is stored likewise.
+
+SystemUI tile specs are usually a single simple word identifying the tile (like `wifi` or `battery`). Custom tile specs are always a string of the form `custom(...)` where the ellipsis is a flattened String representing the `ComponentName` for the corresponding `TileService`.
+
+### QSFactory
+
+This interface provides a way of creating tiles and views from a spec. It can be used in plugins to provide different definitions for tiles.
+
+In SystemUI there is only one implementation of this factory and that is the default factory (`QSFactoryImpl`) in `QSTileHost`.
+
+#### QSFactoryImpl
+
+This class implements two methods as specified in the `QSFactory` interface:
+
+* ```java
+  public QSTile createTile(String)
+  ```
+
+  Creates a tile (backend) from a given spec. The factory has providers for all of the SystemUI tiles, returning one when the correct spec is used.
+
+  If the spec is not recognized but it has the `custom(` prefix, the factory tries to create a `CustomTile` for the component in the spec. This could fail (the component is not a valid `TileService` or is not enabled) and will be detected later when the tile is polled to determine if it's available.
+
+* ```java
+  public QSTileView createTileView(QSTile, boolean)
+  ```
+
+  Creates a view for the corresponding `QSTile`. The second parameter determines if the view that is created should be a collapsed one (for using in QQS) or not (for using in QS).
+
+### Lifecycle of a Tile
+
+We describe first the parts of the lifecycle that are common to SystemUI tiles and third party tiles. Following that, there will be a section with the steps that are exclusive to third party tiles.
+
+1. The tile is added through the QS customizer by the user. This will immediately save the new list of tile specs to the Secure Setting `sysui_qs_tiles`. This step could also happend if `StatusBar` adds tiles (either through adb, or through its service interface as with the `DevelopmentTiles`).
+2. This triggers a "setting changed" that is caught by `QSTileHost`. This class processes the new value of the setting and finds out that there is a new spec in the list. Alternatively, when the device is booted, all tiles in the setting are considered as "new".
+3. `QSTileHost` calls all the available `QSFactory` classes that it has registered in order to find the first one that will be able to create a tile with that spec. Assume that `QSFactoryImpl` managed to create the tile, which is some implementation of `QSTile` (either a SystemUI subclass of `QSTileImpl` or a `CustomTile`). If the tile is available, it's stored in a map and things proceed forward.
+4. `QSTileHost` calls its callbacks indicating that the tiles have changed. In particular, `QSPanel` and `QuickQSPanel` receive this call with the full list of tiles. We will focus on these two classes.
+5. For each tile in this list, a `QSTileView` is created (collapsed or expanded) and attached to a `TileRecord` containing the tile backend and the view. Additionally:
+    * a callback is attached to the tile to communicate between the backend and the view or the panel.
+    * the click listeners in the tile are attached to those of the view.
+6. The tile view is added to the corresponding layout.
+
+When the tile is removed from the list of current tiles, all these classes are properly disposed including removing the callbacks and making sure that the backends remove themselves from the controllers they were listening to.
+
+#### Lifecycle of a CustomTile
+
+In step 3 of the previous process, when a `CustomTile` is created, additional steps are taken to ensure the proper binding to the service as described in [Third party tiles (TileService)](#third-party-tiles-tileservice).
+
+1. The `CustomTile` obtains the `TileServices` class from the `QSTileHost` and request the creation of a `TileServiceManager` with its token. As the spec for the `CustomTile` contains the `ComponentName` of the associated service, this can be used to bind to it.
+2. The `TileServiceManager` creates its own `TileLifecycleManager` to take care of binding to the service.
+3. `TileServices` creates maps between the token, the `CustomTile`, the `TileServiceManager`, the token and the `ComponentName`.
+
+## Implementing a tile
+
+This section describes necessary and recommended steps when implementing a Quick Settings tile. Some of them are optional and depend on the requirements of the tile.
+
+### Implementing a SystemUI tile
+
+1. Create a class (preferably in [`SystemUI/src/com/android/systemui/qs/tiles`](/packages/SystemUI/src/com/android/systemui/qs/tiles)) implementing `QSTileImpl` with a particular type of `State` as a parameter.
+2. Create an injectable constructor taking a `QSHost` and whichever classes are needed for the tile's operation. Normally this would be other SystemUI controllers.
+3. Implement the methods described in [Abstract methods in QSTileImpl](#abstract-methods-in-qstileimpl). Look at other tiles for help. Some considerations to have in mind:
+    * If the tile will not support long click (like the `FlashlightTile`), set `state.handlesLongClick` to `false` (maybe in `newTileState`).
+    * Changes to the tile state (either from controllers or from clicks) should call `refreshState`.
+    * Use only `handleUpdateState` to modify the values of the state to the new ones. This can be done by polling controllers or through the `arg` parameter.
+    * If the controller is not a `CallbackController`, respond to `handleSetListening` by attaching/dettaching from controllers.
+    * Implement `isAvailable` so the tile will not be created when it's not necessary.
+4. In `QSFactoryImpl`:
+    * Inject a `Provider` for the tile created before.
+    * Add a case to the `switch` with a unique String spec for the chosen tile.
+5. In [SystemUI/res/values/config.xml](/packages/SystemUI/res/values/config.xml), modify `quick_settings_tiles_stock` and add the spec defined in the previous step. If necessary, add it also to `quick_settings_tiles_default`. The first one contains a list of all the tiles that SystemUI knows how to create (to show to the user in the customization screen). The second one contains only the default tiles that the user will experience on a fresh boot or after they reset their tiles.
+
+#### Abstract methods in QSTileImpl
+
+Following are methods that need to be implemented when creating a new SystemUI tile. `TState` is a type variable of type `State`.
+
+* ```java
+    public TState newTileState()
+  ```
+
+    Creates a new `State` for this tile to use. Each time the state changes, it is copied into a new one and the corresponding fields are modified. The framework provides `State`, `BooleanState` (has an on and off state and provides this as a content description), `SignalState` (`BooleanState` with `activityIn` and `activityOut`), and `SlashState` (can be rotated or slashed through).
+
+    If a tile has special behavior (no long click, no ripple), it can be set in its state here.
+
+* ```java
+    public void handleSetListening(boolean)
+    ```
+
+    Initiates or terminates listening behavior, like listening to Callbacks from controllers. This gets triggered when QS is expanded or collapsed (i.e., when the tile is visible and actionable). Most tiles (like `WifiTile`) do not implement this. Instead, Tiles are LifecycleOwner and are marked as `RESUMED` or `DESTROYED` in `QSTileImpl#handleListening` and handled as part of the lifecycle of [CallbackController](/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackController.java)
+
+* ```java
+    public QSIconView createTileView(Context)
+  ```
+
+  Allows a Tile to use a `QSIconView` different from `QSIconViewImpl` (see [Tile views](#tile-views)), which is the default defined in `QSTileImpl`
+
+* ```java
+    public Intent getLongClickIntent()
+  ```
+
+  Determines the `Intent` launched when the Tile is long pressed.
+
+* ```java
+    protected void handleClick()
+
+    protected void handleSecondaryClick()
+
+    protected void handleLongClick()
+  ```
+
+  Handles what to do when the Tile is clicked. In general, a Tile will make calls to its controller here and maybe update its state immediately (by calling `QSTileImpl#refreshState`). A Tile can also decide to ignore the click here, if it's `Tile#STATE_UNAVAILABLE`.
+
+  By default long click redirects to click and long click launches the intent defined in `getLongClickIntent`.
+
+* ```java
+    protected void handleUpdateState(TState, Object)
+  ```
+
+  Updates the `State` of the Tile based on the state of the device as provided by the respective controller. It will be called every time the Tile becomes visible, is interacted with or `QSTileImpl#refreshState` is called. After this is done, the updated state will be reflected in the UI.
+
+* ```java
+  public int getMetricsCategory()
+  ```
+
+  Identifier for this Tile, as defined in [proto/src/metrics_constants/metrics_constants.proto](/proto/src/metrics_constants/metrics_constants.proto). This is used to log events related to this Tile.
+
+* ```java
+  public boolean isAvailable()
+  ```
+
+  Determines if a Tile is available to be used (for example, disable `WifiTile` in devices with no Wifi support). If this is false, the Tile will be destroyed upon creation.
+
+* ```java
+  public CharSequence getTileLabel()
+  ```
+
+  Provides a default label for this Tile. Used by the QS Panel customizer to show a name next to each available tile.
+
+### Implementing a third party tile
+
+For information about this, use the Android Developer documentation for [TileService](https://developer.android.com/reference/android/service/quicksettings/TileService).
\ No newline at end of file
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
index 0a2dd6c..bcff634 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/FalsingManager.java
@@ -32,7 +32,7 @@
 public interface FalsingManager {
     int VERSION = 3;
 
-    void onSucccessfulUnlock();
+    void onSuccessfulUnlock();
 
     void onNotificationActive();
 
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java
deleted file mode 100644
index c1d4b03..0000000
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/HomeControlsPlugin.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2019 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.plugins;
-
-import android.view.ViewGroup;
-
-import com.android.systemui.plugins.annotations.ProvidesInterface;
-
-/**
- * Test plugin for home controls
- */
-@ProvidesInterface(action = HomeControlsPlugin.ACTION, version = HomeControlsPlugin.VERSION)
-public interface HomeControlsPlugin extends Plugin {
-
-    String ACTION = "com.android.systemui.action.PLUGIN_HOME_CONTROLS";
-    int VERSION = 1;
-
-    /**
-      * Pass the container for the plugin to use however it wants. Ideally the plugin impl
-      * will add home controls to this space.
-      */
-    void sendParentGroup(ViewGroup group);
-
-    /**
-     * When visible, will poll for updates.
-     */
-    void setVisible(boolean visible);
-}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/NPVPlugin.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/NPVPlugin.java
deleted file mode 100644
index 1426266..0000000
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/NPVPlugin.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright (C) 2019 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.plugins;
-
-import android.view.View;
-import android.widget.FrameLayout;
-
-import com.android.systemui.plugins.annotations.ProvidesInterface;
-
-/**
- * Plugin to attach custom views under QQS.
- *
- * A parent view is provided to the plugin to which they can add Views.
- * <br>
- * The parent is a {@link FrameLayout} with same background as QS and 96dp height.
- *
- * {@see NPVPluginManager}
- * {@see status_bar_expanded_plugin_frame}
- */
-@ProvidesInterface(action = NPVPlugin.ACTION, version = NPVPlugin.VERSION)
-public interface NPVPlugin extends Plugin {
-    String ACTION = "com.android.systemui.action.PLUGIN_NPV";
-    int VERSION = 1;
-
-    /**
-     * Attach views to the parent.
-     *
-     * @param parent a {@link FrameLayout} to which to attach views. Preferably a root view.
-     * @return a view attached to parent.
-     */
-    View attachToRoot(FrameLayout parent);
-
-    /**
-     * Indicate to the plugin when it is listening (QS expanded)
-     * @param listening
-     */
-    default void setListening(boolean listening) {};
-}
diff --git a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
index 17f2f47..e586c38 100644
--- a/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
+++ b/packages/SystemUI/plugin/src/com/android/systemui/plugins/qs/QSTile.java
@@ -14,9 +14,7 @@
 
 package com.android.systemui.plugins.qs;
 
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
-import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.content.Context;
 import android.graphics.drawable.Drawable;
 import android.metrics.LogMaker;
@@ -28,7 +26,6 @@
 import com.android.systemui.plugins.qs.QSTile.Icon;
 import com.android.systemui.plugins.qs.QSTile.State;
 
-import java.lang.annotation.Retention;
 import java.util.Objects;
 import java.util.function.Supplier;
 
@@ -84,17 +81,6 @@
         return logMaker;
     }
 
-    @Retention(SOURCE)
-    @IntDef({COLOR_TILE_ACCENT, COLOR_TILE_RED, COLOR_TILE_BLUE, COLOR_TILE_YELLOW,
-            COLOR_TILE_GREEN})
-    @interface ColorTile {}
-    int COLOR_TILE_ACCENT = 0;
-    int COLOR_TILE_RED = 1;
-    int COLOR_TILE_BLUE = 2;
-    int COLOR_TILE_YELLOW = 3;
-    int COLOR_TILE_GREEN = 4;
-    default void setColor(@ColorTile int color) {}
-
     @ProvidesInterface(version = Callback.VERSION)
     public interface Callback {
         public static final int VERSION = 1;
@@ -122,6 +108,12 @@
         public int getPadding() {
             return 0;
         }
+
+        @Override
+        @NonNull
+        public String toString() {
+            return "Icon";
+        }
     }
 
     @ProvidesInterface(version = State.VERSION)
@@ -142,7 +134,6 @@
         public SlashState slash;
         public boolean handlesLongClick = true;
         public boolean showRippleEffect = true;
-        public int colorActive = -1;
 
         public boolean copyTo(State other) {
             if (other == null) throw new IllegalArgumentException();
@@ -163,8 +154,7 @@
                     || !Objects.equals(other.dualTarget, dualTarget)
                     || !Objects.equals(other.slash, slash)
                     || !Objects.equals(other.handlesLongClick, handlesLongClick)
-                    || !Objects.equals(other.showRippleEffect, showRippleEffect)
-                    || !Objects.equals(other.colorActive, colorActive);
+                    || !Objects.equals(other.showRippleEffect, showRippleEffect);
             other.icon = icon;
             other.iconSupplier = iconSupplier;
             other.label = label;
@@ -180,7 +170,6 @@
             other.slash = slash != null ? slash.copy() : null;
             other.handlesLongClick = handlesLongClick;
             other.showRippleEffect = showRippleEffect;
-            other.colorActive = colorActive;
             return changed;
         }
 
diff --git a/packages/SystemUI/proguard.flags b/packages/SystemUI/proguard.flags
index 3e74970..2a2ba1b 100644
--- a/packages/SystemUI/proguard.flags
+++ b/packages/SystemUI/proguard.flags
@@ -16,6 +16,7 @@
 -keep class com.android.systemui.statusbar.tv.TvStatusBar
 -keep class com.android.systemui.car.CarSystemUIFactory
 -keep class com.android.systemui.SystemUIFactory
+-keep class com.android.systemui.tv.TvSystemUIFactory
 -keep class * extends com.android.systemui.SystemUI
 -keep class * implements com.android.systemui.SystemUI$Injector
 
diff --git a/packages/SystemUI/res-keyguard/layout/controls_zone_header.xml b/packages/SystemUI/res-keyguard/layout/controls_zone_header.xml
new file mode 100644
index 0000000..7b43a03
--- /dev/null
+++ b/packages/SystemUI/res-keyguard/layout/controls_zone_header.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
+<TextView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:textAppearance="@style/TextAppearance.Control.Title"
+    android:textColor="?android:attr/colorPrimary"
+    android:layout_marginStart="12dp"
+    android:layout_marginEnd="2dp"
+    android:layout_marginTop="8dp"
+    android:layout_marginBottom="4dp">
+
+</TextView>
\ No newline at end of file
diff --git a/packages/SystemUI/res-keyguard/values/config.xml b/packages/SystemUI/res-keyguard/values/config.xml
index bde6ed5..8d9d6ee 100644
--- a/packages/SystemUI/res-keyguard/values/config.xml
+++ b/packages/SystemUI/res-keyguard/values/config.xml
@@ -22,10 +22,4 @@
 
     <!-- Allow the menu hard key to be disabled in LockScreen on some devices [DO NOT TRANSLATE] -->
     <bool name="config_disableMenuKeyInLockScreen">false</bool>
-
-    <!-- Threshold in micro watts below which a charger is rated as "slow"; 1A @ 5V -->
-    <integer name="config_chargingSlowlyThreshold">5000000</integer>
-
-    <!-- Threshold in micro watts above which a charger is rated as "fast"; 1.5A @ 5V  -->
-    <integer name="config_chargingFastThreshold">7500000</integer>
 </resources>
diff --git a/packages/SystemUI/res/color/lock_background.xml b/packages/SystemUI/res/color/control_background.xml
similarity index 100%
rename from packages/SystemUI/res/color/lock_background.xml
rename to packages/SystemUI/res/color/control_background.xml
diff --git a/packages/SystemUI/res/color/unknown_foreground.xml b/packages/SystemUI/res/color/control_foreground.xml
similarity index 100%
rename from packages/SystemUI/res/color/unknown_foreground.xml
rename to packages/SystemUI/res/color/control_foreground.xml
diff --git a/packages/SystemUI/res/color/lock_background.xml b/packages/SystemUI/res/color/thermo_cool_background.xml
similarity index 100%
copy from packages/SystemUI/res/color/lock_background.xml
copy to packages/SystemUI/res/color/thermo_cool_background.xml
diff --git a/packages/SystemUI/res/color/unknown_foreground.xml b/packages/SystemUI/res/color/thermo_cool_foreground.xml
similarity index 100%
copy from packages/SystemUI/res/color/unknown_foreground.xml
copy to packages/SystemUI/res/color/thermo_cool_foreground.xml
diff --git a/packages/SystemUI/res/color/thermo_heat_background.xml b/packages/SystemUI/res/color/thermo_heat_background.xml
new file mode 100644
index 0000000..6f29ed5
--- /dev/null
+++ b/packages/SystemUI/res/color/thermo_heat_background.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+  <item android:state_enabled="false"
+        android:color="@color/control_default_background" />
+  <item android:color="@color/GM2_red_50" />
+</selector>
diff --git a/packages/SystemUI/res/color/lock_foreground.xml b/packages/SystemUI/res/color/thermo_heat_foreground.xml
similarity index 82%
rename from packages/SystemUI/res/color/lock_foreground.xml
rename to packages/SystemUI/res/color/thermo_heat_foreground.xml
index 3e05653..72f4b8d 100644
--- a/packages/SystemUI/res/color/lock_foreground.xml
+++ b/packages/SystemUI/res/color/thermo_heat_foreground.xml
@@ -2,5 +2,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
   <item android:state_enabled="false"
         android:color="@color/control_default_foreground" />
-  <item android:color="@color/GM2_blue_700" />
+  <item android:color="@color/GM2_red_700" />
 </selector>
diff --git a/packages/SystemUI/res/drawable-nodpi/android_11_dial.xml b/packages/SystemUI/res/drawable-nodpi/android_11_dial.xml
new file mode 100644
index 0000000..73fd37f
--- /dev/null
+++ b/packages/SystemUI/res/drawable-nodpi/android_11_dial.xml
@@ -0,0 +1,63 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:aapt="http://schemas.android.com/aapt"
+    android:width="108dp"
+    android:height="108dp"
+    android:viewportWidth="108"
+    android:viewportHeight="108">
+  <path
+      android:pathData="M77.773,51.064h-1.583c-0.217,0 -0.393,-0.176 -0.393,-0.393v-1.46c0,-0.217 0.176,-0.393 0.393,-0.393h3.466c0.217,0 0.393,0.176 0.393,0.393v9.921c0,0.217 -0.176,0.393 -0.393,0.393h-1.49c-0.217,0 -0.393,-0.176 -0.393,-0.393V51.064z"
+      android:fillColor="#F86734"/>
+  <path
+      android:pathData="M83.598,51.064h-1.583c-0.217,0 -0.393,-0.176 -0.393,-0.393v-1.46c0,-0.217 0.176,-0.393 0.393,-0.393h3.466c0.217,0 0.393,0.176 0.393,0.393v9.921c0,0.217 -0.176,0.393 -0.393,0.393h-1.49c-0.217,0 -0.393,-0.176 -0.393,-0.393V51.064z"
+      android:fillColor="#F86734"/>
+  <path
+      android:pathData="M70.044,75.974m-0.644,0a0.644,0.644 0,1 1,1.288 0a0.644,0.644 0,1 1,-1.288 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M56.896,80.985m-0.718,0a0.718,0.718 0,1 1,1.436 0a0.718,0.718 0,1 1,-1.436 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M43.408,78.881m-0.795,0a0.795,0.795 0,1 1,1.59 0a0.795,0.795 0,1 1,-1.59 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M32.419,70.115m-0.874,0a0.874,0.874 0,1 1,1.748 0a0.874,0.874 0,1 1,-1.748 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M27.306,56.992m-0.954,0a0.954,0.954 0,1 1,1.908 0a0.954,0.954 0,1 1,-1.908 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M29.313,43.489m-1.036,0a1.036,1.036 0,1 1,2.072 0a1.036,1.036 0,1 1,-2.072 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M37.988,32.445m-1.118,0a1.118,1.118 0,1 1,2.236 0a1.118,1.118 0,1 1,-2.236 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M51.137,27.064m-1.201,0a1.201,1.201 0,1 1,2.402 0a1.201,1.201 0,1 1,-2.402 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M64.553,28.868m-1.284,0a1.284,1.284 0,1 1,2.568 0a1.284,1.284 0,1 1,-2.568 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M75.522,37.652m-1.368,0a1.368,1.368 0,1 1,2.736 0a1.368,1.368 0,1 1,-2.736 0"
+      android:fillColor="#d7effe"/>
+  <path
+      android:pathData="M87.942,115.052l-47.557,-47.557l26.869,-26.87l47.557,47.558z">
+    <aapt:attr name="android:fillColor">
+      <gradient 
+          android:startY="56.087"
+          android:startX="55.8464"
+          android:endY="100.0297"
+          android:endX="99.7891"
+          android:type="linear">
+        <item android:offset="0" android:color="#3F000000"/>
+        <item android:offset="1" android:color="#00000000"/>
+      </gradient>
+    </aapt:attr>
+  </path>
+  <path
+      android:pathData="M53.928,54.17m-18.999,0a18.999,18.999 0,1 1,37.998 0a18.999,18.999 0,1 1,-37.998 0"
+      android:fillColor="#3ddc84"/>
+  <path
+      android:pathData="M66.353,54.17m-3.185,0a3.185,3.185 0,1 1,6.37 0a3.185,3.185 0,1 1,-6.37 0"
+      android:fillColor="#FFFFFF"/>
+</vector>
diff --git a/packages/SystemUI/res/drawable-nodpi/icon.xml b/packages/SystemUI/res/drawable-nodpi/icon.xml
index 7a68c03..7f8d4fa 100644
--- a/packages/SystemUI/res/drawable-nodpi/icon.xml
+++ b/packages/SystemUI/res/drawable-nodpi/icon.xml
@@ -15,5 +15,5 @@
 -->
 <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
     <background android:drawable="@drawable/icon_bg"/>
-    <foreground android:drawable="@drawable/q"/>
+    <foreground android:drawable="@drawable/android_11_dial"/>
 </adaptive-icon>
diff --git a/packages/SystemUI/res/drawable-nodpi/icon_bg.xml b/packages/SystemUI/res/drawable-nodpi/icon_bg.xml
index 2a54dfa..31b2a7f 100644
--- a/packages/SystemUI/res/drawable-nodpi/icon_bg.xml
+++ b/packages/SystemUI/res/drawable-nodpi/icon_bg.xml
@@ -14,5 +14,5 @@
     limitations under the License.
 -->
 <color xmlns:android="http://schemas.android.com/apk/res/android"
-    android:color="#77C360" />
+    android:color="#073042" />
 
diff --git a/packages/SystemUI/res/drawable-nodpi/q.xml b/packages/SystemUI/res/drawable-nodpi/q.xml
deleted file mode 100644
index 0f42d2e..0000000
--- a/packages/SystemUI/res/drawable-nodpi/q.xml
+++ /dev/null
@@ -1,40 +0,0 @@
-<!--
-Copyright (C) 2019 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="108dp"
-        android:height="108dp"
-        android:viewportWidth="108.0"
-        android:viewportHeight="108.0">
-    <group
-        android:name="scale"
-        android:pivotX="54" android:pivotY="54"
-        android:scaleX="0.9"
-        android:scaleY="0.9">
-        <group
-            android:name="nudge"
-            android:translateX="24"
-            android:translateY="23.5">
-            <path
-                android:name="tail"
-                android:fillColor="#FFFFFF"
-                android:pathData="M21.749674,34.122784l-9.431964,9.529709l-6.31771,-6.2529106l15.736504,-15.899582l64.765724,65.16436l-6.3046494,6.266083z"/>
-            <path
-                android:name="counter"
-                android:fillColor="#FFFFFF"
-                android:pathData="M30,9.32352941 C41.6954418,9.32352941 51.1764706,18.8045582 51.1764706,30.5 C51.1764706,42.1954418 41.6954418,51.6764706 30,51.6764706 C18.3045582,51.6764706 8.82352941,42.1954418 8.82352941,30.5 C8.82352941,18.8045582 18.3045582,9.32352941 30,9.32352941 L30,9.32352941 Z M30,0.5 C13.4314575,0.5 -5.53805368e-15,13.9314575 -7.10542736e-15,30.5 C-1.02401747e-14,47.0685425 13.4314575,60.5 30,60.5 C46.5685425,60.5 60,47.0685425 60,30.5 C59.9805514,13.9395201 46.5604799,0.519448617 30,0.5 Z"/>
-        </group>
-    </group>
-</vector>
diff --git a/packages/SystemUI/res/drawable/auth_dialog_enterprise.xml b/packages/SystemUI/res/drawable/auth_dialog_enterprise.xml
new file mode 100644
index 0000000..c547c52
--- /dev/null
+++ b/packages/SystemUI/res/drawable/auth_dialog_enterprise.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0">
+    <path
+        android:pathData="M20,6h-4L16,4c0,-1.11 -0.89,-2 -2,-2h-4c-1.11,0 -2,0.89 -2,2v2L4,6c-1.11,0 -1.99,0.89 -1.99,2L2,19c0,1.11 0.89,2 2,2h16c1.11,0 2,-0.89 2,-2L22,8c0,-1.11 -0.89,-2 -2,-2zM12,15c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2 2,0.9 2,2 -0.9,2 -2,2zM14,6h-4L10,4h4v2z"
+        android:fillColor="?android:attr/colorAccent"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/control_no_favorites_background.xml b/packages/SystemUI/res/drawable/control_no_favorites_background.xml
index 1e282ad..947c77b 100644
--- a/packages/SystemUI/res/drawable/control_no_favorites_background.xml
+++ b/packages/SystemUI/res/drawable/control_no_favorites_background.xml
@@ -17,6 +17,6 @@
 */
 -->
 <shape xmlns:android="http://schemas.android.com/apk/res/android">
-  <stroke android:width="1dp" android:color="?android:attr/colorBackgroundFloating"/>
+  <stroke android:width="1dp" android:color="@*android:color/foreground_material_dark"/>
   <corners android:radius="@dimen/control_corner_radius" />
 </shape>
diff --git a/packages/SystemUI/res/drawable/ic_cancel_24.xml b/packages/SystemUI/res/drawable/ic_cancel_24.xml
new file mode 100644
index 0000000..8ab28dd
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_cancel_24.xml
@@ -0,0 +1,25 @@
+<!--
+  ~ 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.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M12,2C6.47,2 2,6.47 2,12s4.47,10 10,10 10,-4.47 10,-10S17.53,2 12,2zM17,15.59L15.59,17 12,13.41 8.41,17 7,15.59 10.59,12 7,8.41 8.41,7 12,10.59 15.59,7 17,8.41 13.41,12 17,15.59z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_device_unknown_gm2_24px.xml b/packages/SystemUI/res/drawable/ic_device_unknown_gm2_24px.xml
new file mode 100644
index 0000000..24e0635
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_device_unknown_gm2_24px.xml
@@ -0,0 +1,9 @@
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24"
+    android:viewportHeight="24">
+  <path
+      android:fillColor="#FF000000"
+      android:pathData="M12,2l-5.5,9h11L12,2zM12,5.84L13.93,9h-3.87L12,5.84zM17.5,13c-2.49,0 -4.5,2.01 -4.5,4.5s2.01,4.5 4.5,4.5 4.5,-2.01 4.5,-4.5 -2.01,-4.5 -4.5,-4.5zM17.5,20c-1.38,0 -2.5,-1.12 -2.5,-2.5s1.12,-2.5 2.5,-2.5 2.5,1.12 2.5,2.5 -1.12,2.5 -2.5,2.5zM3,21.5h8v-8L3,13.5v8zM5,15.5h4v4L5,19.5v-4z"/>
+</vector>
diff --git a/core/res/res/drawable/ic_open_in_new.xml b/packages/SystemUI/res/drawable/ic_important.xml
similarity index 62%
rename from core/res/res/drawable/ic_open_in_new.xml
rename to packages/SystemUI/res/drawable/ic_important.xml
index 67378c8..d7439e1 100644
--- a/core/res/res/drawable/ic_open_in_new.xml
+++ b/packages/SystemUI/res/drawable/ic_important.xml
@@ -1,3 +1,4 @@
+<?xml version="1.0" encoding="utf-8"?>
 <!--
     Copyright (C) 2020 The Android Open Source Project
 
@@ -12,15 +13,14 @@
     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="24dp"
-    android:height="24dp"
-    android:viewportWidth="24"
-    android:viewportHeight="24"
-    android:tint="?attr/colorControlNormal">
-  <path
-      android:pathData="M19,19H5V5h7V3H5c-1.11,0 -2,0.9 -2,2v14c0,1.1 0.89,2 2,2h14c1.1,0 2,-0.9 2,-2v-7h-2v7zM14,3v2h3.59l-9.83,9.83 1.41,1.41L19,6.41V10h2V3h-7z"
-      android:fillColor="#FFFFFF"/>
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M4,18.99h11c0.67,0 1.27,-0.32 1.63,-0.83L21,12l-4.37,-6.16C16.27,5.33 15.67,5 15,5H4l5,7 -5,6.99z"/>
 </vector>
diff --git a/packages/SystemUI/res/drawable/ic_important_outline.xml b/packages/SystemUI/res/drawable/ic_important_outline.xml
new file mode 100644
index 0000000..7a628bb
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_important_outline.xml
@@ -0,0 +1,27 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+    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.
+-->
+
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="24dp"
+        android:height="24dp"
+        android:viewportWidth="24.0"
+        android:viewportHeight="24.0"
+        android:tint="?android:attr/colorControlNormal">
+    <path
+        android:fillColor="@android:color/white"
+        android:pathData="M15,19L3,19l4.5,-7L3,5h12c0.65,0 1.26,0.31 1.63,0.84L21,12l-4.37,6.16c-0.37,0.52 -0.98,0.84 -1.63,0.84zM6.5,17L15,17l3.5,-5L15,7L6.5,7l3.5,5 -3.5,5z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_star.xml b/packages/SystemUI/res/drawable/ic_star.xml
deleted file mode 100644
index 4a731b3..0000000
--- a/packages/SystemUI/res/drawable/ic_star.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  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
-  -->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M12,17.27L18.18,21l-1.64,-7.03L22,9.24l-7.19,-0.61L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27z"/>
-</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_star_border.xml b/packages/SystemUI/res/drawable/ic_star_border.xml
deleted file mode 100644
index 9ede40b..0000000
--- a/packages/SystemUI/res/drawable/ic_star_border.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!--
-  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
-  -->
-
-<vector xmlns:android="http://schemas.android.com/apk/res/android"
-        android:width="24dp"
-        android:height="24dp"
-        android:viewportWidth="24.0"
-        android:viewportHeight="24.0">
-    <path
-        android:fillColor="@android:color/white"
-        android:pathData="M22,9.24l-7.19,-0.62L12,2 9.19,8.63 2,9.24l5.46,4.73L5.82,21 12,17.27 18.18,21l-1.63,-7.03L22,9.24zM12,15.4l-3.76,2.27 1,-4.28 -3.32,-2.88 4.38,-0.38L12,6.1l1.71,4.04 4.38,0.38 -3.32,2.88 1,4.28L12,15.4z"/>
-</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/ic_touch.xml b/packages/SystemUI/res/drawable/ic_touch.xml
new file mode 100644
index 0000000..4f6698d
--- /dev/null
+++ b/packages/SystemUI/res/drawable/ic_touch.xml
@@ -0,0 +1,26 @@
+<!--
+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.
+-->
+<!-- maybe need android:fillType="evenOdd" -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+    android:width="24dp"
+    android:height="24dp"
+    android:viewportWidth="24.0"
+    android:viewportHeight="24.0">
+    <path
+        android:fillColor="#FF000000"
+        android:pathData="M9,7.5V11.24C7.79,10.43 7,9.06 7,7.5C7,5.01 9.01,3 11.5,3C13.99,3 16,5.01 16,7.5C16,9.06 15.21,10.43 14,11.24V7.5C14,6.12 12.88,5 11.5,5C10.12,5 9,6.12 9,7.5ZM14.3,13.61L18.84,15.87C19.37,16.09 19.75,16.63 19.75,17.25C19.75,17.31 19.74,17.38 19.73,17.45L18.98,22.72C18.87,23.45 18.29,24 17.54,24H10.75C10.34,24 9.96,23.83 9.69,23.56L4.75,18.62L5.54,17.82C5.74,17.62 6.02,17.49 6.33,17.49C6.39,17.49 6.4411,17.4989 6.4922,17.5078C6.5178,17.5122 6.5433,17.5167 6.57,17.52L10,18.24V7.5C10,6.67 10.67,6 11.5,6C12.33,6 13,6.67 13,7.5V13.5H13.76C13.95,13.5 14.13,13.54 14.3,13.61Z"
+    />
+</vector>
diff --git a/packages/SystemUI/res/drawable/notif_dungeon_bg_gradient.xml b/packages/SystemUI/res/drawable/notif_dungeon_bg_gradient.xml
new file mode 100644
index 0000000..e456e29
--- /dev/null
+++ b/packages/SystemUI/res/drawable/notif_dungeon_bg_gradient.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<shape
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <gradient
+        android:angle="90"
+        android:startColor="#ff000000"
+        android:endColor="#00000000"
+        android:type="linear" />
+</shape>
diff --git a/packages/SystemUI/res/drawable/qs_media_background.xml b/packages/SystemUI/res/drawable/qs_media_background.xml
new file mode 100644
index 0000000..2821e4c
--- /dev/null
+++ b/packages/SystemUI/res/drawable/qs_media_background.xml
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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
+  -->
+<shape xmlns:android="http://schemas.android.com/apk/res/android"
+    android:shape="rectangle">
+    <solid android:color="?android:attr/colorBackgroundFloating" />
+    <corners
+        android:bottomLeftRadius="@dimen/qs_media_corner_radius"
+        android:topLeftRadius="@dimen/qs_media_corner_radius"
+        android:bottomRightRadius="@dimen/qs_media_corner_radius"
+        android:topRightRadius="@dimen/qs_media_corner_radius"
+    />
+</shape>
\ No newline at end of file
diff --git a/packages/SystemUI/res/drawable/screenshot_cancel.xml b/packages/SystemUI/res/drawable/screenshot_cancel.xml
new file mode 100644
index 0000000..be3c598
--- /dev/null
+++ b/packages/SystemUI/res/drawable/screenshot_cancel.xml
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<vector xmlns:android="http://schemas.android.com/apk/res/android"
+        android:width="48dp"
+        android:height="48dp"
+        android:viewportWidth="48.0"
+        android:viewportHeight="48.0">
+    <path
+        android:pathData="M24,24m-16,0a16,16 0,1 1,32 0a16,16 0,1 1,-32 0"
+        android:fillColor="@android:color/white"/>
+    <path
+        android:fillColor="@color/GM2_grey_500"
+        android:pathData="M31,18.41L29.59,17 24,22.59 18.41,17 17,18.41 22.59,24 17,29.59 18.41,31 24,25.41 29.59,31 31,29.59 25.41,24z"/>
+</vector>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml b/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml
index c3fa39e..c40e47d 100644
--- a/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml
+++ b/packages/SystemUI/res/layout-land/auth_credential_pattern_view.xml
@@ -34,20 +34,15 @@
             android:layout_weight="1"/>
 
         <ImageView
-            android:layout_width="32dp"
-            android:layout_height="32dp"
-            android:background="@drawable/auth_dialog_lock"/>
+            android:id="@+id/icon"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"/>
 
         <TextView
             android:id="@+id/title"
-            android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginHorizontal="24dp"
-            android:layout_marginTop="12dp"
-            android:textSize="20sp"
-            android:gravity="center"
-            android:textColor="?android:attr/textColorPrimary"/>
+            style="@style/TextAppearance.AuthCredential.Title"/>
 
         <TextView
             android:id="@+id/subtitle"
@@ -63,17 +58,41 @@
             android:id="@+id/description"
             android:layout_width="match_parent"
             android:layout_height="wrap_content"
-            android:layout_marginHorizontal="24dp"
-            android:layout_marginTop="8dp"
-            android:gravity="center"
-            android:textSize="16sp"
-            android:textColor="?android:attr/textColorPrimary"/>
+            style="@style/TextAppearance.AuthCredential.Description"/>
 
         <Space
             android:layout_width="0dp"
             android:layout_height="0dp"
             android:layout_weight="1"/>
 
+    </LinearLayout>
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="vertical"
+        android:gravity="center"
+        android:paddingLeft="0dp"
+        android:paddingRight="0dp"
+        android:paddingTop="0dp"
+        android:paddingBottom="16dp"
+        android:clipToPadding="false">
+
+        <FrameLayout
+            android:layout_width="wrap_content"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            style="@style/LockPatternContainerStyle">
+
+            <com.android.internal.widget.LockPatternView
+                android:id="@+id/lockPattern"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                style="@style/LockPatternStyleBiometricPrompt"/>
+
+        </FrameLayout>
+
         <TextView
             android:id="@+id/error"
             android:layout_width="match_parent"
@@ -90,24 +109,4 @@
 
     </LinearLayout>
 
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="match_parent"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        android:gravity="center">
-
-        <com.android.internal.widget.LockPatternView
-            android:id="@+id/lockPattern"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_marginLeft="40dp"
-            android:layout_marginRight="40dp"
-            android:layout_gravity="center"
-            android:clipChildren="false"
-            android:clipToPadding="false"
-            style="@style/LockPatternStyleBiometricPrompt"/>
-
-    </LinearLayout>
-
 </com.android.systemui.biometrics.AuthCredentialPatternView>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/app_item.xml b/packages/SystemUI/res/layout/app_item.xml
deleted file mode 100644
index 83e7887..0000000
--- a/packages/SystemUI/res/layout/app_item.xml
+++ /dev/null
@@ -1,70 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  Copyright (C) 2019 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.
--->
-<LinearLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:background="?android:attr/selectableItemBackground"
-    android:gravity="center_vertical"
-    android:minHeight="?android:attr/listPreferredItemHeightSmall"
-    android:paddingStart="?android:attr/listPreferredItemPaddingStart"
-    android:paddingEnd="?android:attr/listPreferredItemPaddingEnd">
-
-    <LinearLayout
-        android:id="@+id/icon_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:gravity="start|center_vertical"
-        android:minWidth="56dp"
-        android:orientation="horizontal"
-        android:paddingEnd="8dp"
-        android:paddingTop="4dp"
-        android:paddingBottom="4dp">
-        <ImageView
-            android:id="@android:id/icon"
-            android:layout_width="@dimen/app_icon_size"
-            android:layout_height="@dimen/app_icon_size"/>
-    </LinearLayout>
-
-    <LinearLayout
-        android:layout_width="0dp"
-        android:layout_height="wrap_content"
-        android:layout_weight="1"
-        android:orientation="vertical"
-        android:paddingTop="16dp"
-        android:paddingBottom="16dp">
-
-        <TextView
-            android:id="@android:id/title"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:ellipsize="marquee"
-            android:fadingEdge="horizontal"
-            android:singleLine="true"
-            android:textAppearance="?android:attr/textAppearanceListItem"/>
-
-    </LinearLayout>
-
-    <LinearLayout
-        android:id="@android:id/widget_frame"
-        android:layout_width="wrap_content"
-        android:layout_height="match_parent"
-        android:gravity="center_vertical|end"
-        android:minWidth="64dp"
-        android:orientation="vertical"/>
-
-</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/auth_credential_password_view.xml b/packages/SystemUI/res/layout/auth_credential_password_view.xml
index 4aed033..b14bc7d 100644
--- a/packages/SystemUI/res/layout/auth_credential_password_view.xml
+++ b/packages/SystemUI/res/layout/auth_credential_password_view.xml
@@ -28,20 +28,15 @@
         android:layout_weight="1"/>
 
     <ImageView
-        android:layout_width="32dp"
-        android:layout_height="32dp"
-        android:background="@drawable/auth_dialog_lock"/>
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
 
     <TextView
         android:id="@+id/title"
-        android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="24dp"
-        android:layout_marginTop="12dp"
-        android:textSize="20sp"
-        android:gravity="center"
-        android:textColor="?android:attr/textColorPrimary"/>
+        style="@style/TextAppearance.AuthCredential.Title"/>
 
     <TextView
         android:id="@+id/subtitle"
@@ -57,11 +52,7 @@
         android:id="@+id/description"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="24dp"
-        android:layout_marginTop="8dp"
-        android:gravity="center"
-        android:textSize="16sp"
-        android:textColor="?android:attr/textColorPrimary"/>
+        style="@style/TextAppearance.AuthCredential.Description"/>
 
     <Space
         android:layout_width="0dp"
@@ -79,19 +70,15 @@
 
     <EditText
         android:id="@+id/lockPassword"
-        android:layout_marginBottom="20dp"
-        android:layout_marginLeft="100dp"
-        android:layout_marginRight="100dp"
         android:layout_width="208dp"
         android:layout_height="wrap_content"
-        android:layout_gravity="center"
+        android:layout_gravity="center_horizontal"
+        android:minHeight="48dp"
         android:gravity="center"
         android:inputType="textPassword"
         android:maxLength="500"
-        android:textSize="16sp"
-        android:textAppearance="?android:attr/textAppearanceMedium"
-        android:imeOptions="flagForceAscii"
-        style="@style/LockPatternStyleBiometricPrompt"/>
+        android:imeOptions="actionNext|flagNoFullscreen|flagForceAscii"
+        style="@style/TextAppearance.AuthCredential.PasswordEntry"/>
 
     <Space
         android:layout_width="0dp"
diff --git a/packages/SystemUI/res/layout/auth_credential_pattern_view.xml b/packages/SystemUI/res/layout/auth_credential_pattern_view.xml
index c9edcd6..eda5ecb 100644
--- a/packages/SystemUI/res/layout/auth_credential_pattern_view.xml
+++ b/packages/SystemUI/res/layout/auth_credential_pattern_view.xml
@@ -28,20 +28,15 @@
         android:layout_weight="1"/>
 
     <ImageView
-        android:layout_width="32dp"
-        android:layout_height="32dp"
-        android:background="@drawable/auth_dialog_lock"/>
+        android:id="@+id/icon"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
 
     <TextView
         android:id="@+id/title"
-        android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="24dp"
-        android:layout_marginTop="12dp"
-        android:textSize="20sp"
-        android:gravity="center"
-        android:textColor="?android:attr/textColorPrimary"/>
+        style="@style/TextAppearance.AuthCredential.Title"/>
 
     <TextView
         android:id="@+id/subtitle"
@@ -57,37 +52,49 @@
         android:id="@+id/description"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="24dp"
-        android:layout_marginTop="8dp"
-        android:gravity="center"
-        android:textSize="16sp"
-        android:textColor="?android:attr/textColorPrimary"/>
+        style="@style/TextAppearance.AuthCredential.Description"/>
 
     <Space
         android:layout_width="0dp"
         android:layout_height="0dp"
-        android:layout_weight="3"/>
+        android:layout_weight="1"/>
 
-    <TextView
-        android:id="@+id/error"
+    <LinearLayout
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
-        android:layout_marginHorizontal="24dp"
-        android:textSize="16sp"
+        android:orientation="vertical"
         android:gravity="center"
-        android:textColor="?android:attr/colorError"/>
+        android:paddingLeft="0dp"
+        android:paddingRight="0dp"
+        android:paddingTop="0dp"
+        android:paddingBottom="16dp"
+        android:clipToPadding="false">
 
-    <com.android.internal.widget.LockPatternView
-        android:id="@+id/lockPattern"
-        android:layout_marginBottom="20dp"
-        android:layout_marginLeft="40dp"
-        android:layout_marginRight="40dp"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:layout_gravity="center"
-        android:clipChildren="false"
-        android:clipToPadding="false"
-        style="@style/LockPatternStyleBiometricPrompt"/>
+        <FrameLayout
+            android:layout_width="wrap_content"
+            android:layout_height="0dp"
+            android:layout_weight="1"
+            style="@style/LockPatternContainerStyle">
+
+            <com.android.internal.widget.LockPatternView
+                android:id="@+id/lockPattern"
+                android:layout_width="match_parent"
+                android:layout_height="match_parent"
+                android:layout_gravity="center"
+                style="@style/LockPatternStyleBiometricPrompt"/>
+
+        </FrameLayout>
+
+        <TextView
+            android:id="@+id/error"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:layout_marginHorizontal="24dp"
+            android:textSize="16sp"
+            android:gravity="center"
+            android:textColor="?android:attr/colorError"/>
+
+    </LinearLayout>
 
     <Space
         android:layout_width="0dp"
diff --git a/packages/SystemUI/res/layout/bubble_overflow_activity.xml b/packages/SystemUI/res/layout/bubble_overflow_activity.xml
index 95f205a..481c4db 100644
--- a/packages/SystemUI/res/layout/bubble_overflow_activity.xml
+++ b/packages/SystemUI/res/layout/bubble_overflow_activity.xml
@@ -14,8 +14,45 @@
   ~ limitations under the License
   -->
 
-<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/bubble_overflow_recycler"
-    android:layout_gravity="center_horizontal"
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/bubble_overflow_container"
     android:layout_width="match_parent"
-    android:layout_height="wrap_content"/>
+    android:layout_height="match_parent"
+    android:orientation="vertical"
+    android:layout_gravity="center_horizontal">
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/bubble_overflow_recycler"
+        android:layout_gravity="center_horizontal"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"/>
+
+    <LinearLayout
+        android:id="@+id/bubble_overflow_empty_state"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:gravity="center">
+
+        <TextView
+            android:id="@+id/bubble_overflow_empty_title"
+            android:text="@string/bubble_overflow_empty_title"
+            android:fontFamily="@*android:string/config_bodyFontFamilyMedium"
+            android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body2"
+            android:textColor="?android:attr/textColorSecondary"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"/>
+
+        <TextView
+            android:id="@+id/bubble_overflow_empty_subtitle"
+            android:fontFamily="@*android:string/config_bodyFontFamily"
+            android:textAppearance="@*android:style/TextAppearance.DeviceDefault.Body2"
+            android:textColor="?android:attr/textColorSecondary"
+            android:text="@string/bubble_overflow_empty_subtitle"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="center"/>
+    </LinearLayout>
+</LinearLayout>
diff --git a/packages/SystemUI/res/layout/control_item.xml b/packages/SystemUI/res/layout/control_item.xml
deleted file mode 100644
index 85701aa..0000000
--- a/packages/SystemUI/res/layout/control_item.xml
+++ /dev/null
@@ -1,72 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!--
-  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.
--->
-<androidx.constraintlayout.widget.ConstraintLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    xmlns:app="http://schemas.android.com/apk/res-auto"
-    android:layout_width="match_parent"
-    android:layout_height="100dp"
-    android:padding="15dp"
-    android:clickable="true"
-    android:focusable="true">
-
-    <ImageView
-        android:id="@+id/icon"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toTopOf="parent" />
-
-    <TextView
-        android:id="@+id/status"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="12sp"
-        android:textColor="?android:attr/textColorPrimary"
-        android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:paddingLeft="3dp"
-        app:layout_constraintBottom_toBottomOf="@+id/icon"
-        app:layout_constraintStart_toEndOf="@+id/icon" />
-
-    <TextView
-        android:id="@+id/title"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="18sp"
-        android:textColor="?android:attr/textColorPrimary"
-        android:fontFamily="@*android:string/config_headlineFontFamily"
-        app:layout_constraintBottom_toTopOf="@+id/subtitle"
-        app:layout_constraintStart_toStartOf="parent"
-        app:layout_constraintTop_toBottomOf="@+id/icon" />
-
-    <TextView
-        android:id="@+id/subtitle"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:textSize="16sp"
-        android:textColor="?android:attr/textColorSecondary"
-        android:fontFamily="@*android:string/config_headlineFontFamily"
-        app:layout_constraintBottom_toBottomOf="parent"
-        app:layout_constraintStart_toStartOf="parent" />
-
-    <CheckBox
-        android:id="@+id/favorite"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        app:layout_constraintEnd_toEndOf="parent"
-        app:layout_constraintTop_toTopOf="parent"
-        app:layout_constraintBottom_toBottomOf="parent"/>
-</androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/layout/controls_app_item.xml b/packages/SystemUI/res/layout/controls_app_item.xml
new file mode 100644
index 0000000..d54cd6d
--- /dev/null
+++ b/packages/SystemUI/res/layout/controls_app_item.xml
@@ -0,0 +1,87 @@
+<?xml version="1.0" encoding="utf-8"?><!--
+  Copyright (C) 2019 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.
+-->
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:background="?android:attr/selectableItemBackground">
+
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_gravity="start|top"
+        android:gravity="center_vertical"
+        android:minHeight="?android:attr/listPreferredItemHeightSmall"
+        android:paddingStart="?android:attr/listPreferredItemPaddingStart"
+        android:paddingEnd="?android:attr/listPreferredItemPaddingEnd"
+        android:layout_marginBottom="@dimen/controls_app_bottom_margin">
+
+        <FrameLayout
+            android:id="@+id/icon_frame"
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:gravity="start|center_vertical"
+            android:minWidth="56dp"
+            android:orientation="horizontal"
+            android:paddingTop="@dimen/controls_app_icon_frame_top_padding"
+            android:paddingBottom="@dimen/controls_app_icon_frame_top_padding"
+            android:paddingEnd="@dimen/controls_app_icon_frame_side_padding"
+            android:paddingStart="@dimen/controls_app_icon_frame_side_padding" >
+
+            <ImageView
+                android:id="@android:id/icon"
+                android:layout_width="@dimen/controls_app_icon_size"
+                android:layout_height="@dimen/controls_app_icon_size" />
+        </FrameLayout>
+
+        <LinearLayout
+            android:layout_width="0dp"
+            android:layout_height="wrap_content"
+            android:layout_weight="1"
+            android:orientation="vertical"
+            android:paddingTop="@dimen/controls_app_text_padding"
+            android:paddingBottom="@dimen/controls_app_text_padding">
+
+            <TextView
+                android:id="@android:id/title"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:fadingEdge="horizontal"
+                android:singleLine="true"
+                android:textAppearance="?android:attr/textAppearanceMedium"
+                android:textColor="?android:attr/textColorPrimary"/>
+
+            <TextView
+                android:id="@+id/favorites"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:ellipsize="end"
+                android:fadingEdge="horizontal"
+                android:singleLine="true"
+                android:textAppearance="?android:attr/textAppearanceSmall" />
+
+        </LinearLayout>
+
+    </LinearLayout>
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/controls_app_divider_height"
+        android:layout_gravity="center_horizontal|bottom"
+        android:layout_marginStart="@dimen/controls_app_divider_side_margin"
+        android:layout_marginEnd="@dimen/controls_app_divider_side_margin"
+        android:background="?android:attr/listDivider" />
+</FrameLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/controls_base_item.xml b/packages/SystemUI/res/layout/controls_base_item.xml
index 3c4c61e..823bbcd 100644
--- a/packages/SystemUI/res/layout/controls_base_item.xml
+++ b/packages/SystemUI/res/layout/controls_base_item.xml
@@ -23,8 +23,8 @@
     android:padding="@dimen/control_padding"
     android:clickable="true"
     android:focusable="true"
-    android:layout_marginLeft="3dp"
-    android:layout_marginRight="3dp"
+    android:layout_marginLeft="@dimen/control_base_item_margin"
+    android:layout_marginRight="@dimen/control_base_item_margin"
     android:background="@drawable/control_background">
 
     <ImageView
@@ -38,10 +38,8 @@
         android:id="@+id/status"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/control_status_normal"
-        android:textColor="?android:attr/textColorPrimary"
-        android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:paddingLeft="3dp"
+        android:textAppearance="@style/TextAppearance.Control.Status"
+        android:paddingStart="@dimen/control_status_padding"
         app:layout_constraintBottom_toBottomOf="@+id/icon"
         app:layout_constraintStart_toEndOf="@+id/icon" />
 
@@ -49,10 +47,8 @@
         android:id="@+id/status_extra"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="@dimen/control_status_normal"
-        android:textColor="?android:attr/textColorPrimary"
-        android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:paddingLeft="3dp"
+        android:textAppearance="@style/TextAppearance.Control.Status"
+        android:paddingStart="@dimen/control_status_padding"
         app:layout_constraintBottom_toBottomOf="@+id/icon"
         app:layout_constraintStart_toEndOf="@+id/status" />
 
@@ -60,9 +56,7 @@
         android:id="@+id/title"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="18sp"
-        android:textColor="?android:attr/textColorPrimary"
-        android:fontFamily="@*android:string/config_headlineFontFamily"
+        android:textAppearance="@style/TextAppearance.Control.Title"
         app:layout_constraintBottom_toTopOf="@+id/subtitle"
         app:layout_constraintStart_toStartOf="parent"
         app:layout_constraintTop_toBottomOf="@+id/icon" />
@@ -71,9 +65,15 @@
         android:id="@+id/subtitle"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
-        android:textSize="16sp"
-        android:textColor="?android:attr/textColorSecondary"
-        android:fontFamily="@*android:string/config_headlineFontFamily"
+        android:textAppearance="@style/TextAppearance.Control.Subtitle"
         app:layout_constraintBottom_toBottomOf="parent"
         app:layout_constraintStart_toStartOf="parent" />
+
+    <CheckBox
+        android:id="@+id/favorite"
+        android:visibility="gone"
+        android:layout_width="48dp"
+        android:layout_height="48dp"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"/>
 </androidx.constraintlayout.widget.ConstraintLayout>
diff --git a/packages/SystemUI/res/layout/controls_detail_dialog.xml b/packages/SystemUI/res/layout/controls_detail_dialog.xml
new file mode 100644
index 0000000..f2de45a
--- /dev/null
+++ b/packages/SystemUI/res/layout/controls_detail_dialog.xml
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+     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.
+-->
+
+<FrameLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/controls_activity_view"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent" />
+
diff --git a/media/java/android/media/AudioDeviceAddress.aidl b/packages/SystemUI/res/layout/controls_icon.xml
similarity index 60%
copy from media/java/android/media/AudioDeviceAddress.aidl
copy to packages/SystemUI/res/layout/controls_icon.xml
index 6a1a7f7..cc46ced 100644
--- a/media/java/android/media/AudioDeviceAddress.aidl
+++ b/packages/SystemUI/res/layout/controls_icon.xml
@@ -1,4 +1,7 @@
-/* Copyright 2019, The Android Open Source Project
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2020, The Android Open Source Project
 **
 ** Licensed under the Apache License, Version 2.0 (the "License");
 ** you may not use this file except in compliance with the License.
@@ -12,7 +15,12 @@
 ** See the License for the specific language governing permissions and
 ** limitations under the License.
 */
+-->
 
-package android.media;
-
-parcelable AudioDeviceAddress;
+<ImageView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="28dp"
+    android:layout_height="28dp"
+    android:scaleType="fitCenter"
+    android:layout_marginLeft="2dp"
+    android:layout_marginRight="2dp" />
diff --git a/packages/SystemUI/res/layout/controls_management.xml b/packages/SystemUI/res/layout/controls_management.xml
new file mode 100644
index 0000000..a7379be
--- /dev/null
+++ b/packages/SystemUI/res/layout/controls_management.xml
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
+<LinearLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:orientation="vertical"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:gravity="center_horizontal"
+    android:paddingTop="@dimen/controls_management_top_padding"
+    android:paddingStart="@dimen/controls_management_side_padding"
+    android:paddingEnd="@dimen/controls_management_side_padding" >
+
+    <TextView
+        android:id="@+id/title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:textAppearance="?android:attr/textAppearanceLarge"
+        android:textSize="@dimen/controls_title_size"
+        android:textAlignment="center" />
+
+    <TextView
+        android:id="@+id/subtitle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/controls_management_titles_margin"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAlignment="center" />
+
+    <androidx.core.widget.NestedScrollView
+        android:layout_width="match_parent"
+        android:layout_height="0dp"
+        android:layout_weight="1"
+        android:orientation="vertical"
+        android:layout_marginTop="@dimen/controls_management_list_margin">
+
+        <ViewStub
+            android:id="@+id/stub"
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"/>
+
+    </androidx.core.widget.NestedScrollView>
+
+    <FrameLayout
+        android:layout_width="match_parent"
+        android:layout_height="64dp">
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="@dimen/controls_app_divider_height"
+            android:layout_gravity="center_horizontal|top"
+            android:background="?android:attr/listDivider" />
+
+        <androidx.constraintlayout.widget.ConstraintLayout
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:padding="4dp">
+
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:text="See other apps"
+                android:textAppearance="@style/TextAppearance.Control.Title"
+                android:textColor="?android:attr/colorPrimary"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintStart_toStartOf="parent"/>
+
+            <Button
+                android:id="@+id/done"
+                android:layout_width="wrap_content"
+                android:layout_height="match_parent"
+                android:text="Done"
+                app:layout_constraintTop_toTopOf="parent"
+                app:layout_constraintBottom_toBottomOf="parent"
+                app:layout_constraintEnd_toEndOf="parent"/>
+        </androidx.constraintlayout.widget.ConstraintLayout>
+    </FrameLayout>
+
+
+</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/controls_management_apps.xml b/packages/SystemUI/res/layout/controls_management_apps.xml
new file mode 100644
index 0000000..2bab433
--- /dev/null
+++ b/packages/SystemUI/res/layout/controls_management_apps.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
+
+<androidx.recyclerview.widget.RecyclerView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/list"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    >
+
+</androidx.recyclerview.widget.RecyclerView>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/controls_management_favorites.xml b/packages/SystemUI/res/layout/controls_management_favorites.xml
new file mode 100644
index 0000000..62056e6
--- /dev/null
+++ b/packages/SystemUI/res/layout/controls_management_favorites.xml
@@ -0,0 +1,110 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
+<androidx.constraintlayout.widget.ConstraintLayout
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    android:layout_width="match_parent"
+    android:layout_height="match_parent"
+    android:orientation="vertical">
+
+    <TextView
+        android:id="@+id/error_message"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/controls_management_list_margin"
+        android:text="@string/controls_favorite_load_error"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:visibility="gone"
+        android:gravity="center_horizontal"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/text_favorites"
+    />
+
+    <TextView
+        android:id="@+id/text_favorites"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/controls_management_list_margin"
+        android:text="@string/controls_favorite_header_favorites"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAllCaps="true"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/divider1"
+        app:layout_constraintTop_toBottomOf="@id/error_message"
+        />
+
+    <View
+        android:id="@+id/divider1"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/controls_app_divider_height"
+        android:layout_gravity="center_horizontal|top"
+        android:background="?android:attr/listDivider"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/listFavorites"
+        app:layout_constraintTop_toBottomOf="@id/text_favorites"
+        />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/listFavorites"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/controls_management_list_margin"
+        android:nestedScrollingEnabled="false"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/text_all"
+        app:layout_constraintTop_toBottomOf="@id/divider1"/>
+
+    <TextView
+        android:id="@+id/text_all"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="@dimen/controls_management_list_margin"
+        android:text="@string/controls_favorite_header_all"
+        android:textAppearance="?android:attr/textAppearanceSmall"
+        android:textAllCaps="true"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/divider2"
+        app:layout_constraintTop_toBottomOf="@id/listFavorites"
+        />
+
+    <View
+        android:id="@+id/divider2"
+        android:layout_width="match_parent"
+        android:layout_height="@dimen/controls_app_divider_height"
+        android:layout_gravity="center_horizontal|top"
+        android:background="?android:attr/listDivider"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toTopOf="@id/listAll"
+        app:layout_constraintTop_toBottomOf="@id/text_all"
+        />
+
+    <androidx.recyclerview.widget.RecyclerView
+        android:id="@+id/listAll"
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:layout_marginTop="@dimen/controls_management_list_margin"
+        android:nestedScrollingEnabled="false"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintTop_toBottomOf="@id/divider2"/>
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/controls_no_favorites.xml b/packages/SystemUI/res/layout/controls_no_favorites.xml
index 79672ca..3e0699d 100644
--- a/packages/SystemUI/res/layout/controls_no_favorites.xml
+++ b/packages/SystemUI/res/layout/controls_no_favorites.xml
@@ -1,18 +1,52 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+**
+** Copyright 2020, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
 <merge
     xmlns:android="http://schemas.android.com/apk/res/android">
-  <TextView
-      android:id="@+id/controls_title"
-      android:text="@string/quick_controls_title"
+  <LinearLayout
+      android:id="@+id/controls_no_favorites_group"
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
-      android:singleLine="true"
-      android:gravity="center"
-      android:textSize="25dp"
+      android:orientation="vertical"
       android:paddingTop="40dp"
       android:paddingBottom="40dp"
       android:layout_marginLeft="10dp"
       android:layout_marginRight="10dp"
-      android:textColor="?android:attr/textColorPrimary"
-      android:fontFamily="@*android:string/config_headlineFontFamily"
-      android:background="@drawable/control_no_favorites_background"/>
+      android:background="@drawable/control_no_favorites_background">
+
+    <LinearLayout
+        android:id="@+id/controls_icon_row"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_gravity="center"
+        android:orientation="horizontal"
+        android:paddingBottom="8dp" />
+
+    <TextView
+        android:id="@+id/controls_title"
+        android:text="@string/quick_controls_title"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:singleLine="true"
+        android:layout_gravity="center"
+        android:textSize="25sp"
+        android:textColor="@*android:color/foreground_material_dark"
+        android:fontFamily="@*android:string/config_headlineFontFamily" />
+  </LinearLayout>
 </merge>
diff --git a/packages/SystemUI/res/layout/controls_row.xml b/packages/SystemUI/res/layout/controls_row.xml
index 13a6b36..4cc461a 100644
--- a/packages/SystemUI/res/layout/controls_row.xml
+++ b/packages/SystemUI/res/layout/controls_row.xml
@@ -16,7 +16,7 @@
 -->
 <LinearLayout
     xmlns:android="http://schemas.android.com/apk/res/android"
-    orientation="horizontal"
+    android:orientation="horizontal"
     android:layout_width="match_parent"
     android:layout_height="wrap_content"
     android:layout_marginBottom="@dimen/control_spacing" />
diff --git a/packages/SystemUI/res/layout/controls_with_favorites.xml b/packages/SystemUI/res/layout/controls_with_favorites.xml
index 7804fe6..2cd9505 100644
--- a/packages/SystemUI/res/layout/controls_with_favorites.xml
+++ b/packages/SystemUI/res/layout/controls_with_favorites.xml
@@ -1,10 +1,26 @@
+<!--
+  ~ Copyright (C) 2019 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.
+  -->
 <merge
     xmlns:android="http://schemas.android.com/apk/res/android"
     xmlns:app="http://schemas.android.com/apk/res-auto">
 
   <androidx.constraintlayout.widget.ConstraintLayout
       android:layout_width="match_parent"
-      android:layout_height="wrap_content">
+      android:layout_height="wrap_content"
+      android:paddingBottom="20dp">
 
     <TextView
         android:text="@string/quick_controls_title"
@@ -12,18 +28,24 @@
         android:layout_height="wrap_content"
         android:singleLine="true"
         android:gravity="center"
-        android:textSize="25dp"
-        android:textColor="?android:attr/textColorPrimary"
+        android:textSize="25sp"
+        android:textColor="@*android:color/foreground_material_dark"
         android:fontFamily="@*android:string/config_headlineFontFamily"
-        app:layout_constraintLeft_toLeftOf="parent"
-        app:layout_constraintRight_toRightOf="parent"/>
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
+
     <ImageView
         android:id="@+id/controls_more"
         android:src="@drawable/ic_more_vert"
         android:layout_width="34dp"
         android:layout_height="24dp" 
         android:layout_marginEnd="10dp"
-        app:layout_constraintEnd_toEndOf="parent"/>
+        android:tint="@*android:color/foreground_material_dark"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintTop_toTopOf="parent" />
 
   </androidx.constraintlayout.widget.ConstraintLayout>
 
diff --git a/packages/SystemUI/res/layout/foreground_service_dungeon.xml b/packages/SystemUI/res/layout/foreground_service_dungeon.xml
new file mode 100644
index 0000000..d4e98e2
--- /dev/null
+++ b/packages/SystemUI/res/layout/foreground_service_dungeon.xml
@@ -0,0 +1,61 @@
+<!--
+  ~ 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.
+  -->
+
+<com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/foreground_service_dungeon"
+    android:layout_width="@dimen/qs_panel_width"
+    android:layout_height="wrap_content"
+    android:layout_gravity="center_horizontal|bottom"
+    android:visibility="visible"
+>
+    <LinearLayout
+        android:layout_height="wrap_content"
+        android:layout_width="match_parent"
+        android:orientation="vertical"
+        android:gravity="bottom"
+        android:visibility="visible"
+        android:background="@drawable/notif_dungeon_bg_gradient"
+    >
+
+        <!-- divider view -->
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="1dp"
+            android:background="@color/GM2_grey_200"
+            android:visibility="visible"
+        />
+
+        <TextView
+            android:id="@+id/dungeon_title"
+            android:layout_height="48dp"
+            android:layout_width="match_parent"
+            android:padding="8dp"
+            android:text="Apps active in background"
+            android:textColor="@color/GM2_grey_200"
+        />
+
+        <!--  List containing the actual foreground service notifications  -->
+        <LinearLayout
+            android:id="@+id/entry_list"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:gravity="bottom"
+            android:orientation="vertical" >
+        </LinearLayout>
+
+    </LinearLayout>
+</com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView>
diff --git a/packages/SystemUI/res/layout/foreground_service_dungeon_row.xml b/packages/SystemUI/res/layout/foreground_service_dungeon_row.xml
new file mode 100644
index 0000000..a6f1638
--- /dev/null
+++ b/packages/SystemUI/res/layout/foreground_service_dungeon_row.xml
@@ -0,0 +1,43 @@
+<!--
+  ~ 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.
+  -->
+
+<com.android.systemui.statusbar.notification.row.DungeonRow
+    xmlns:android="http://schemas.android.com/apk/res/android"
+    android:id="@+id/foreground_service_dungeon_row"
+    android:layout_width="match_parent"
+    android:layout_height="48dp"
+    android:padding="8dp"
+    android:clickable="true"
+    android:orientation="horizontal" >
+
+    <com.android.systemui.statusbar.StatusBarIconView
+        android:id="@+id/icon"
+        android:layout_width="24dp"
+        android:layout_height="24dp"
+        android:padding="4dp" />
+
+    <TextView
+        android:id="@+id/app_name"
+        android:layout_width="0dp"
+        android:layout_weight="1"
+        android:layout_height="wrap_content"
+        android:paddingStart="4dp"
+        android:gravity="center_vertical"
+        android:layout_gravity="center_vertical"
+        android:textColor="@color/GM2_grey_200"
+    />
+
+</com.android.systemui.statusbar.notification.row.DungeonRow>
diff --git a/packages/SystemUI/res/layout/global_actions_grid_v2.xml b/packages/SystemUI/res/layout/global_actions_grid_v2.xml
index 6741484..f90012d 100644
--- a/packages/SystemUI/res/layout/global_actions_grid_v2.xml
+++ b/packages/SystemUI/res/layout/global_actions_grid_v2.xml
@@ -96,18 +96,18 @@
         app:layout_constraintTop_toBottomOf="@id/global_actions_view">
 
       <FrameLayout
-          android:translationY="@dimen/global_actions_plugin_offset"
           android:id="@+id/global_actions_panel_container"
           android:layout_width="match_parent"
           android:layout_height="wrap_content" />
     </LinearLayout>
 
     <LinearLayout
-        android:translationY="@dimen/global_actions_plugin_offset"
         android:id="@+id/global_actions_controls"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:orientation="vertical"
+        android:layout_marginRight="@dimen/global_actions_grid_horizontal_padding"
+        android:layout_marginLeft="@dimen/global_actions_grid_horizontal_padding"
         app:layout_constraintLeft_toLeftOf="parent"
         app:layout_constraintRight_toRightOf="parent"
         app:layout_constraintTop_toBottomOf="@id/global_actions_panel">
diff --git a/packages/SystemUI/res/layout/global_screenshot.xml b/packages/SystemUI/res/layout/global_screenshot.xml
index 1f7def2..d0151ff 100644
--- a/packages/SystemUI/res/layout/global_screenshot.xml
+++ b/packages/SystemUI/res/layout/global_screenshot.xml
@@ -55,10 +55,22 @@
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:layout_gravity="center"
-        android:elevation="8dp"
+        android:elevation="@dimen/screenshot_preview_elevation"
         android:visibility="gone"
         android:background="@drawable/screenshot_rounded_corners"
         android:adjustViewBounds="true"/>
+    <FrameLayout
+        android:id="@+id/global_screenshot_dismiss_button"
+        android:layout_width="@dimen/screenshot_dismiss_button_tappable_size"
+        android:layout_height="@dimen/screenshot_dismiss_button_tappable_size"
+        android:elevation="9dp"
+        android:visibility="gone">
+        <ImageView
+            android:layout_width="match_parent"
+            android:layout_height="match_parent"
+            android:layout_margin="@dimen/screenshot_dismiss_button_margin"
+            android:src="@drawable/screenshot_cancel"/>
+    </FrameLayout>
     <ImageView
         android:id="@+id/global_screenshot_flash"
         android:layout_width="match_parent"
diff --git a/packages/SystemUI/res/layout/home_controls.xml b/packages/SystemUI/res/layout/home_controls.xml
deleted file mode 100644
index 69a0e87..0000000
--- a/packages/SystemUI/res/layout/home_controls.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<FrameLayout
-    xmlns:android="http://schemas.android.com/apk/res/android"
-    android:id="@+id/home_controls_layout"
-    android:layout_width="match_parent"
-    android:layout_height="wrap_content"
-    android:layout_gravity="@integer/notification_panel_layout_gravity"
-    android:visibility="gone"
-    android:padding="8dp"
-    android:layout_margin="5dp"
-    android:background="?android:attr/colorBackgroundFloating">
-</FrameLayout>
diff --git a/packages/SystemUI/res/layout/keyguard_user_switcher_item.xml b/packages/SystemUI/res/layout/keyguard_user_switcher_item.xml
index d685528..0dd3352 100644
--- a/packages/SystemUI/res/layout/keyguard_user_switcher_item.xml
+++ b/packages/SystemUI/res/layout/keyguard_user_switcher_item.xml
@@ -17,7 +17,7 @@
   -->
 
 <!-- LinearLayout -->
-<com.android.systemui.qs.tiles.UserDetailItemView
+<com.android.systemui.statusbar.policy.KeyguardUserDetailItemView
         xmlns:android="http://schemas.android.com/apk/res/android"
         xmlns:sysui="http://schemas.android.com/apk/res-auto"
         android:layout_width="wrap_content"
@@ -34,7 +34,7 @@
             android:layout_width="wrap_content"
             android:layout_height="wrap_content"
             android:layout_marginEnd="13dp"
-            android:textAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher.UserName"
+            android:textAppearance="@style/TextAppearance.StatusBar.Expanded.UserSwitcher"
             />
     <com.android.systemui.statusbar.phone.UserAvatarView android:id="@+id/user_picture"
             android:layout_width="@dimen/framed_avatar_size"
@@ -47,4 +47,4 @@
             sysui:badgeDiameter="18dp"
             sysui:badgeMargin="1dp"
             sysui:frameColor="@color/qs_user_detail_avatar_frame" />
-</com.android.systemui.qs.tiles.UserDetailItemView>
+</com.android.systemui.statusbar.policy.KeyguardUserDetailItemView>
diff --git a/packages/SystemUI/res/layout/media_carousel.xml b/packages/SystemUI/res/layout/media_carousel.xml
index e91f840f..149446c 100644
--- a/packages/SystemUI/res/layout/media_carousel.xml
+++ b/packages/SystemUI/res/layout/media_carousel.xml
@@ -19,7 +19,7 @@
 <HorizontalScrollView
     xmlns:android="http://schemas.android.com/apk/res/android"
     android:layout_width="match_parent"
-    android:layout_height="@dimen/qs_media_height"
+    android:layout_height="wrap_content"
     android:padding="@dimen/qs_media_padding"
     android:scrollbars="none"
     android:visibility="gone"
diff --git a/packages/SystemUI/res/layout/notification_conversation_info.xml b/packages/SystemUI/res/layout/notification_conversation_info.xml
index a9d6e35..8460612 100644
--- a/packages/SystemUI/res/layout/notification_conversation_info.xml
+++ b/packages/SystemUI/res/layout/notification_conversation_info.xml
@@ -28,7 +28,7 @@
     android:paddingStart="@*android:dimen/notification_content_margin_start">
 
     <!-- Package Info -->
-    <RelativeLayout
+    <LinearLayout
         android:id="@+id/header"
         android:layout_width="match_parent"
         android:layout_height="@dimen/notification_guts_conversation_header_height"
@@ -41,16 +41,20 @@
             android:layout_height="@dimen/notification_guts_conversation_icon_size"
             android:layout_centerVertical="true"
             android:layout_alignParentStart="true"
-            android:layout_marginEnd="6dp" />
+            android:layout_marginEnd="15dp" />
         <LinearLayout
             android:id="@+id/names"
+            android:layout_weight="1"
+            android:layout_width="0dp"
             android:orientation="vertical"
-            android:layout_width="wrap_content"
+
             android:layout_height="wrap_content"
             android:minHeight="@dimen/notification_guts_conversation_icon_size"
             android:layout_centerVertical="true"
             android:gravity="center_vertical"
-            android:layout_toEndOf="@id/conversation_icon">
+            android:layout_alignEnd="@id/conversation_icon"
+            android:layout_toEndOf="@id/conversation_icon"
+            android:layout_alignStart="@id/mute">
             <LinearLayout
                 android:layout_width="match_parent"
                 android:layout_height="wrap_content"
@@ -107,67 +111,40 @@
                     android:layout_weight="1"
                     style="@style/TextAppearance.NotificationImportanceChannel"/>
             </LinearLayout>
+            <TextView
+                android:id="@+id/delegate_name"
+                android:layout_width="match_parent"
+                android:layout_height="wrap_content"
+                android:layout_centerVertical="true"
+                style="@style/TextAppearance.NotificationImportanceHeader"
+                android:layout_marginStart="2dp"
+                android:layout_marginEnd="2dp"
+                android:ellipsize="end"
+                android:text="@string/notification_delegate_header"
+                android:layout_toEndOf="@id/pkg_divider"
+                android:maxLines="1" />
 
         </LinearLayout>
 
-        <TextView
-            android:id="@+id/pkg_divider"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            style="@style/TextAppearance.NotificationImportanceHeader"
-            android:layout_marginStart="2dp"
-            android:layout_marginEnd="2dp"
-            android:layout_toEndOf="@id/name"
-            android:text="@*android:string/notification_header_divider_symbol" />
-        <TextView
-            android:id="@+id/delegate_name"
-            android:layout_width="wrap_content"
-            android:layout_height="wrap_content"
-            android:layout_centerVertical="true"
-            style="@style/TextAppearance.NotificationImportanceHeader"
-            android:layout_marginStart="2dp"
-            android:layout_marginEnd="2dp"
-            android:ellipsize="end"
-            android:text="@string/notification_delegate_header"
-            android:layout_toEndOf="@id/pkg_divider"
-            android:maxLines="1" />
-
         <!-- end aligned fields -->
         <ImageButton
-            android:id="@+id/demote"
+            android:id="@+id/mute"
             android:layout_width="@dimen/notification_importance_toggle_size"
             android:layout_height="@dimen/notification_importance_toggle_size"
             android:layout_centerVertical="true"
             android:background="@drawable/ripple_drawable"
-            android:contentDescription="@string/demote"
-            android:src="@drawable/ic_demote_conversation"
-            android:layout_toStartOf="@id/app_settings"
-            android:tint="@color/notification_guts_link_icon_tint"/>
-        <!-- Optional link to app. Only appears if the channel is not disabled and the app
-asked for it -->
-        <ImageButton
-            android:id="@+id/app_settings"
-            android:layout_width="@dimen/notification_importance_toggle_size"
-            android:layout_height="@dimen/notification_importance_toggle_size"
-            android:layout_centerVertical="true"
-            android:visibility="gone"
-            android:background="@drawable/ripple_drawable"
-            android:contentDescription="@string/notification_app_settings"
-            android:src="@drawable/ic_info"
-            android:layout_toStartOf="@id/info"
+            android:layout_toStartOf="@id/fave"
             android:tint="@color/notification_guts_link_icon_tint"/>
         <ImageButton
-            android:id="@+id/info"
+            android:id="@+id/fave"
             android:layout_width="@dimen/notification_importance_toggle_size"
             android:layout_height="@dimen/notification_importance_toggle_size"
             android:layout_centerVertical="true"
             android:background="@drawable/ripple_drawable"
-            android:contentDescription="@string/notification_more_settings"
-            android:src="@drawable/ic_settings"
             android:layout_alignParentEnd="true"
             android:tint="@color/notification_guts_link_icon_tint"/>
-    </RelativeLayout>
+
+    </LinearLayout>
 
     <LinearLayout
         android:id="@+id/actions"
@@ -182,6 +159,23 @@
             android:layout_width="match_parent"
             android:layout_height="0.5dp"
             android:background="@color/GM2_grey_300" />
+
+        <Button
+            android:id="@+id/snooze"
+            android:layout_height="@dimen/notification_guts_conversation_action_height"
+            android:layout_width="match_parent"
+            style="?android:attr/borderlessButtonStyle"
+            android:text="@string/notification_menu_snooze_action"
+            android:gravity="left|center_vertical"
+            android:drawableStart="@drawable/ic_snooze"
+            android:drawablePadding="@dimen/notification_guts_conversation_action_text_padding_start"
+            android:drawableTint="@color/notification_guts_link_icon_tint"/>
+
+        <View
+            android:layout_width="match_parent"
+            android:layout_height="0.5dp"
+            android:background="@color/GM2_grey_300" />
+
         <Button
             android:id="@+id/bubble"
             android:layout_height="@dimen/notification_guts_conversation_action_height"
@@ -212,42 +206,15 @@
             android:layout_width="match_parent"
             android:layout_height="0.5dp"
             android:background="@color/GM2_grey_300" />
-        <Button
-            android:id="@+id/fave"
-            android:layout_height="@dimen/notification_guts_conversation_action_height"
-            android:layout_width="match_parent"
-            style="?android:attr/borderlessButtonStyle"
-            android:gravity="left|center_vertical"
-            android:drawablePadding="@dimen/notification_guts_conversation_action_text_padding_start"
-            android:drawableTint="@color/notification_guts_link_icon_tint"/>
 
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.5dp"
-            android:background="@color/GM2_grey_300" />
         <Button
-            android:id="@+id/snooze"
+            android:id="@+id/info"
             android:layout_height="@dimen/notification_guts_conversation_action_height"
             android:layout_width="match_parent"
             style="?android:attr/borderlessButtonStyle"
-            android:text="@string/notification_menu_snooze_action"
+            android:drawableStart="@drawable/ic_settings"
+            android:text="@string/notification_menu_settings_action"
             android:gravity="left|center_vertical"
-            android:drawableStart="@drawable/ic_snooze"
-            android:drawablePadding="@dimen/notification_guts_conversation_action_text_padding_start"
-            android:drawableTint="@color/notification_guts_link_icon_tint"/>
-
-        <View
-            android:layout_width="match_parent"
-            android:layout_height="0.5dp"
-            android:background="@color/GM2_grey_300" />
-        <Button
-            android:id="@+id/mute"
-            android:layout_height="@dimen/notification_guts_conversation_action_height"
-            android:layout_width="match_parent"
-            style="?android:attr/borderlessButtonStyle"
-            android:text="@string/notification_conversation_mute"
-            android:gravity="left|center_vertical"
-            android:drawableStart="@drawable/ic_notifications_silence"
             android:drawablePadding="@dimen/notification_guts_conversation_action_text_padding_start"
             android:drawableTint="@color/notification_guts_link_icon_tint"/>
 
diff --git a/packages/SystemUI/res/layout/qqs_media_panel.xml b/packages/SystemUI/res/layout/qqs_media_panel.xml
index 1189371..403b5dc 100644
--- a/packages/SystemUI/res/layout/qqs_media_panel.xml
+++ b/packages/SystemUI/res/layout/qqs_media_panel.xml
@@ -23,20 +23,25 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:gravity="center"
-    android:padding="10dp"
+    android:paddingTop="16dp"
+    android:paddingLeft="16dp"
+    android:paddingRight="16dp"
+    android:paddingBottom="12dp"
+    android:background="@drawable/qs_media_background"
     >
-    <!-- Top line: icon + artist name -->
+    <!-- Top line: icon + song name -->
     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:clipChildren="false"
         android:gravity="center"
+        android:layout_marginBottom="12dp"
         >
         <com.android.internal.widget.CachingIconView
             android:id="@+id/icon"
-            android:layout_width="15dp"
-            android:layout_height="15dp"
+            android:layout_width="14dp"
+            android:layout_height="14dp"
             android:layout_marginEnd="5dp"
         />
         <TextView
@@ -48,15 +53,6 @@
         />
     </LinearLayout>
 
-    <!-- Second line: song name -->
-    <TextView
-        android:id="@+id/header_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:singleLine="true"
-        android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:gravity="center"/>
-
     <!-- Bottom section: controls -->
     <LinearLayout
         android:id="@+id/media_actions"
@@ -70,8 +66,6 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action0"
@@ -80,8 +74,6 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action1"
@@ -90,8 +82,6 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action2"
diff --git a/packages/SystemUI/res/layout/qs_footer_impl.xml b/packages/SystemUI/res/layout/qs_footer_impl.xml
index a02962e..0c9ce39 100644
--- a/packages/SystemUI/res/layout/qs_footer_impl.xml
+++ b/packages/SystemUI/res/layout/qs_footer_impl.xml
@@ -130,9 +130,10 @@
     </LinearLayout>
     <View
         android:id="@+id/qs_drag_handle_view"
-        android:layout_width="24dp"
+        android:layout_width="48dp"
         android:layout_height="4dp"
-        android:layout_marginBottom="16dp"
+        android:layout_marginTop="8dp"
+        android:layout_marginBottom="8dp"
         android:layout_gravity="center_horizontal|bottom"
         android:background="@drawable/qs_footer_drag_handle" />
 
diff --git a/packages/SystemUI/res/layout/qs_media_panel.xml b/packages/SystemUI/res/layout/qs_media_panel.xml
index dd42276..22303dc 100644
--- a/packages/SystemUI/res/layout/qs_media_panel.xml
+++ b/packages/SystemUI/res/layout/qs_media_panel.xml
@@ -23,50 +23,116 @@
     android:layout_height="match_parent"
     android:orientation="vertical"
     android:gravity="center_horizontal|fill_vertical"
-    android:padding="10dp"
+    android:padding="16dp"
+    android:background="@drawable/qs_media_background"
     >
 
-    <!-- placeholder for notification header -->
+    <!-- Header section -->
     <LinearLayout
         android:orientation="horizontal"
         android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:id="@+id/header"
-        android:padding="3dp"
-        android:layout_marginEnd="-12dp"
+        android:layout_marginBottom="16dp"
+    >
+
+        <ImageView
+            android:id="@+id/album_art"
+            android:layout_width="@dimen/qs_media_album_size"
+            android:layout_height="@dimen/qs_media_album_size"
+            android:layout_marginRight="16dp"
+            android:layout_weight="0"
         />
 
-    <!-- Top line: artist name -->
-    <LinearLayout
-        android:orientation="horizontal"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:gravity="center"
+        <LinearLayout
+            android:orientation="vertical"
+            android:layout_width="0dp"
+            android:layout_height="@dimen/qs_media_album_size"
+            android:layout_weight="1"
         >
-        <TextView
-            android:id="@+id/header_title"
-            android:layout_width="wrap_content"
+            <LinearLayout
+                android:orientation="horizontal"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:gravity="center"
+            >
+                <com.android.internal.widget.CachingIconView
+                    android:id="@+id/icon"
+                    android:layout_width="16dp"
+                    android:layout_height="16dp"
+                    android:layout_marginEnd="5dp"
+                />
+                <TextView
+                    android:id="@+id/app_name"
+                    android:layout_width="wrap_content"
+                    android:layout_height="wrap_content"
+                    android:textSize="14sp"
+                    android:singleLine="true"
+                />
+            </LinearLayout>
+
+            <!-- Song name -->
+            <TextView
+                android:id="@+id/header_text"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:singleLine="true"
+                android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
+                android:textSize="18sp"
+                android:paddingBottom="6dp"
+                android:gravity="center"/>
+
+            <!-- Artist name -->
+            <TextView
+                android:id="@+id/header_artist"
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:fontFamily="@*android:string/config_bodyFontFamily"
+                android:textSize="14sp"
+                android:singleLine="true"
+            />
+        </LinearLayout>
+
+        <!-- Output chip -->
+        <LinearLayout
+            android:layout_width="0dp"
             android:layout_height="wrap_content"
-            android:fontFamily="@*android:string/config_headlineFontFamilyMedium"
-            android:singleLine="true"
-        />
+            android:orientation="horizontal"
+            android:visibility="gone"
+            android:paddingTop="6dp"
+            android:paddingBottom="6dp"
+            android:paddingLeft="12dp"
+            android:paddingRight="12dp"
+            android:gravity="center"
+            android:id="@+id/media_seamless"
+            android:background="@*android:drawable/media_seamless_background"
+            android:layout_weight="1"
+        >
+            <ImageView
+                android:layout_width="@dimen/qs_seamless_icon_size"
+                android:layout_height="@dimen/qs_seamless_icon_size"
+                android:src="@*android:drawable/ic_media_seamless"
+                android:layout_marginRight="8dp"
+                android:id="@+id/media_seamless_image"
+            />
+            <TextView
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:fontFamily="@*android:string/config_bodyFontFamily"
+                android:text="@*android:string/ext_media_seamless_action"
+                android:textSize="14sp"
+                android:id="@+id/media_seamless_text"
+                android:singleLine="true"
+            />
+        </LinearLayout>
     </LinearLayout>
 
-    <!-- Second line: song name -->
-    <TextView
-        android:id="@+id/header_text"
-        android:layout_width="wrap_content"
-        android:layout_height="wrap_content"
-        android:singleLine="true"
-        android:fontFamily="@*android:string/config_bodyFontFamily"
-        android:gravity="center"/>
-
-    <!-- Bottom section: controls -->
+    <!-- Controls -->
     <LinearLayout
         android:id="@+id/media_actions"
         android:orientation="horizontal"
         android:layoutDirection="ltr"
-        android:layout_width="wrap_content"
+        android:layout_width="match_parent"
         android:layout_height="wrap_content"
         android:gravity="center"
         >
@@ -74,8 +140,8 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action0"
@@ -84,18 +150,18 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action1"
         />
         <ImageButton
             style="@android:style/Widget.Material.Button.Borderless.Small"
-            android:layout_width="48dp"
-            android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
+            android:layout_width="52dp"
+            android:layout_height="52dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action2"
@@ -104,8 +170,8 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action3"
@@ -114,8 +180,8 @@
             style="@android:style/Widget.Material.Button.Borderless.Small"
             android:layout_width="48dp"
             android:layout_height="48dp"
-            android:padding="8dp"
-            android:layout_marginEnd="2dp"
+            android:layout_marginStart="8dp"
+            android:layout_marginEnd="8dp"
             android:gravity="center"
             android:visibility="gone"
             android:id="@+id/action4"
diff --git a/packages/SystemUI/res/layout/screen_record_dialog.xml b/packages/SystemUI/res/layout/screen_record_dialog.xml
new file mode 100644
index 0000000..df576d8
--- /dev/null
+++ b/packages/SystemUI/res/layout/screen_record_dialog.xml
@@ -0,0 +1,142 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  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.
+  -->
+<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:orientation="vertical"
+    android:background="@drawable/rounded_bg_full">
+
+    <!-- Header -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="match_parent"
+        android:orientation="vertical"
+        android:gravity="center"
+        android:padding="@dimen/screenrecord_dialog_padding">
+        <ImageView
+            android:layout_width="@dimen/screenrecord_logo_size"
+            android:layout_height="@dimen/screenrecord_logo_size"
+            android:src="@drawable/ic_screenrecord"
+            android:tint="@color/GM2_red_500"
+            android:layout_marginBottom="@dimen/screenrecord_dialog_padding"/>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:textAppearance="?android:attr/textAppearanceLarge"
+            android:text="@string/screenrecord_start_label"/>
+        <TextView
+            android:layout_width="wrap_content"
+            android:layout_height="wrap_content"
+            android:text="@string/screenrecord_description"
+            android:textAppearance="?android:attr/textAppearanceSmall"
+            android:paddingTop="@dimen/screenrecord_dialog_padding"
+            android:paddingBottom="@dimen/screenrecord_dialog_padding"/>
+
+        <!-- Options -->
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <ImageView
+                android:layout_width="@dimen/screenrecord_logo_size"
+                android:layout_height="@dimen/screenrecord_logo_size"
+                android:src="@drawable/ic_mic_26dp"
+                android:tint="@color/GM2_grey_700"
+                android:layout_gravity="center"
+                android:layout_weight="0"
+                android:layout_marginRight="@dimen/screenrecord_dialog_padding"/>
+            <LinearLayout
+                android:layout_width="wrap_content"
+                android:layout_height="wrap_content"
+                android:orientation="vertical"
+                android:layout_weight="1">
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:layout_gravity="center_vertical"
+                    android:text="@string/screenrecord_audio_label"
+                    android:textColor="?android:attr/textColorPrimary"
+                    android:textAppearance="?android:attr/textAppearanceMedium"/>
+                <TextView
+                    android:layout_width="match_parent"
+                    android:layout_height="match_parent"
+                    android:id="@+id/audio_type"
+                    android:text="@string/screenrecord_mic_label"
+                    android:textAppearance="?android:attr/textAppearanceSmall"/>
+            </LinearLayout>
+            <Switch
+                android:layout_width="wrap_content"
+                android:layout_height="48dp"
+                android:layout_weight="0"
+                android:id="@+id/screenrecord_audio_switch"/>
+        </LinearLayout>
+
+        <LinearLayout
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:orientation="horizontal">
+            <ImageView
+                android:layout_width="@dimen/screenrecord_logo_size"
+                android:layout_height="@dimen/screenrecord_logo_size"
+                android:src="@drawable/ic_touch"
+                android:tint="@color/GM2_grey_700"
+                android:layout_gravity="center"
+                android:layout_marginRight="@dimen/screenrecord_dialog_padding"/>
+            <Switch
+                android:layout_width="match_parent"
+                android:layout_height="48dp"
+                android:id="@+id/screenrecord_taps_switch"
+                android:text="@string/screenrecord_taps_label"
+                android:textColor="?android:attr/textColorPrimary"
+                android:textAppearance="?android:attr/textAppearanceMedium"/>
+        </LinearLayout>
+    </LinearLayout>
+
+    <!-- hr -->
+    <View
+        android:layout_width="match_parent"
+        android:layout_height="1dp"
+        android:background="@color/GM2_grey_300"/>
+
+    <!-- Buttons -->
+    <LinearLayout
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:padding="@dimen/screenrecord_dialog_padding">
+        <Button
+            android:id="@+id/button_cancel"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_weight="0"
+            android:layout_gravity="start"
+            android:text="@string/cancel"
+            style="@android:style/Widget.DeviceDefault.Button.Borderless.Colored"/>
+        <Space
+            android:layout_width="0dp"
+            android:layout_height="match_parent"
+            android:layout_weight="1"/>
+        <Button
+            android:id="@+id/button_start"
+            android:layout_width="wrap_content"
+            android:layout_height="match_parent"
+            android:layout_weight="0"
+            android:layout_gravity="end"
+            android:text="@string/screenrecord_start"
+            style="@android:style/Widget.DeviceDefault.Button.Colored"/>
+    </LinearLayout>
+</LinearLayout>
\ No newline at end of file
diff --git a/packages/SystemUI/res/layout/status_bar.xml b/packages/SystemUI/res/layout/status_bar.xml
index 76c1045..4fae3c5 100644
--- a/packages/SystemUI/res/layout/status_bar.xml
+++ b/packages/SystemUI/res/layout/status_bar.xml
@@ -42,32 +42,6 @@
         android:visibility="gone"
         />
 
-    <LinearLayout
-        android:id="@+id/divider_container"
-        android:layout_width="match_parent"
-        android:layout_height="match_parent"
-        android:orientation="horizontal"
-        android:background="@color/transparent" >
-
-        <android.widget.Space
-            android:layout_height="match_parent"
-            android:layout_width="0dp"
-            android:layout_weight="@integer/qqs_split_fraction" />
-
-        <com.android.systemui.DarkReceiverImpl
-            android:id="@+id/divider"
-            android:layout_height="match_parent"
-            android:layout_width="1dp"
-            android:layout_marginTop="4dp"
-            android:layout_marginBottom="4dp" />
-
-        <android.widget.Space
-            android:layout_height="match_parent"
-            android:layout_width="0dp"
-            android:layout_weight="@integer/qs_split_fraction" />
-
-    </LinearLayout>
-
     <LinearLayout android:id="@+id/status_bar_contents"
         android:layout_width="match_parent"
         android:layout_height="match_parent"
diff --git a/packages/SystemUI/res/layout/status_bar_expanded.xml b/packages/SystemUI/res/layout/status_bar_expanded.xml
index 479f255..115b4a8 100644
--- a/packages/SystemUI/res/layout/status_bar_expanded.xml
+++ b/packages/SystemUI/res/layout/status_bar_expanded.xml
@@ -55,9 +55,6 @@
             android:clipChildren="false"
             systemui:viewType="com.android.systemui.plugins.qs.QS" />
 
-        <!-- Temporary area to test out home controls -->
-        <include layout="@layout/home_controls" />
-
         <com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout
             android:id="@+id/notification_stack_scroller"
             android:layout_marginTop="@dimen/notification_panel_margin_top"
diff --git a/packages/SystemUI/res/values-af/strings.xml b/packages/SystemUI/res/values-af/strings.xml
index 823685e..478a93d 100644
--- a/packages/SystemUI/res/values-af/strings.xml
+++ b/packages/SystemUI/res/values-af/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Vergrotingoorleggervenster"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingvenster"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Vergrotingvensterkontroles"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Vinnige kontroles"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-am/strings.xml b/packages/SystemUI/res/values-am/strings.xml
index c324824..08a655a 100644
--- a/packages/SystemUI/res/values-am/strings.xml
+++ b/packages/SystemUI/res/values-am/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"የማጉያ ንብርብር መስኮት"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"የማጉያ መስኮት"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"የማጉያ መስኮት መቆጣጠሪያዎች"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"ፈጣን መቆጣጠሪያዎች"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ar/strings.xml b/packages/SystemUI/res/values-ar/strings.xml
index 113d705..6ceb6cd 100644
--- a/packages/SystemUI/res/values-ar/strings.xml
+++ b/packages/SystemUI/res/values-ar/strings.xml
@@ -984,4 +984,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"نافذة تراكب التكبير"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"نافذة التكبير"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"عناصر التحكم في نافذة التكبير"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-as/strings.xml b/packages/SystemUI/res/values-as/strings.xml
index 975d639..ffefb48 100644
--- a/packages/SystemUI/res/values-as/strings.xml
+++ b/packages/SystemUI/res/values-as/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"বিবৰ্ধন অ’ভাৰলে’ৰ ৱিণ্ড’"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"বিবৰ্ধন ৱিণ্ড’"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"বিবৰ্ধন ৱিণ্ড’ৰ নিয়ন্ত্ৰণসমূহ"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-az/strings.xml b/packages/SystemUI/res/values-az/strings.xml
index d98d939..2caffff 100644
--- a/packages/SystemUI/res/values-az/strings.xml
+++ b/packages/SystemUI/res/values-az/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Böyütmə Üst-üstə Düşən Pəncərəsi"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Böyütmə Pəncərəsi"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Böyütmə Pəncərəsi Kontrolları"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-b+sr+Latn/strings.xml b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
index ff03bb9..aaa35ff 100644
--- a/packages/SystemUI/res/values-b+sr+Latn/strings.xml
+++ b/packages/SystemUI/res/values-b+sr+Latn/strings.xml
@@ -969,4 +969,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Preklopni prozor za uvećanje"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećanje"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećanje"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-be/strings.xml b/packages/SystemUI/res/values-be/strings.xml
index 1ebbb5e..619fd1c 100644
--- a/packages/SystemUI/res/values-be/strings.xml
+++ b/packages/SystemUI/res/values-be/strings.xml
@@ -976,4 +976,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Акно-накладка з павелічэннем"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Акно павелічэння"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Налады акна павелічэння"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-bg/strings.xml b/packages/SystemUI/res/values-bg/strings.xml
index 5cfea60..99c1fec 100644
--- a/packages/SystemUI/res/values-bg/strings.xml
+++ b/packages/SystemUI/res/values-bg/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Прозорец с наслагване за ниво на мащаба"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за ниво на мащаба"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли за прозореца за ниво на мащаба"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Бързи контроли"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-bn/strings.xml b/packages/SystemUI/res/values-bn/strings.xml
index f1e49ce..1327cf4 100644
--- a/packages/SystemUI/res/values-bn/strings.xml
+++ b/packages/SystemUI/res/values-bn/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ওভারলে উইন্ডো বড় করে দেখা"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"উইন্ডো বড় করে দেখা"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"উইন্ডো কন্ট্রোল বড় করে দেখা"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-bs/strings.xml b/packages/SystemUI/res/values-bs/strings.xml
index cabe87f..7bce70a 100644
--- a/packages/SystemUI/res/values-bs/strings.xml
+++ b/packages/SystemUI/res/values-bs/strings.xml
@@ -971,4 +971,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Preklopni prozor za uvećavanje"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za uvećavanje"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za uvećavanje"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ca/strings.xml b/packages/SystemUI/res/values-ca/strings.xml
index 3e25795..5597f51 100644
--- a/packages/SystemUI/res/values-ca/strings.xml
+++ b/packages/SystemUI/res/values-ca/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Finestra superposada d\'ampliació"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Finestra d\'ampliació"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra de controls d\'ampliació"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controls ràpids"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-cs/strings.xml b/packages/SystemUI/res/values-cs/strings.xml
index 3c85880..a608c5b 100644
--- a/packages/SystemUI/res/values-cs/strings.xml
+++ b/packages/SystemUI/res/values-cs/strings.xml
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Překryvné zvětšovací okno"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Zvětšovací okno"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládací prvky zvětšovacího okna"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Rychlé ovládací prvky"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-da/strings.xml b/packages/SystemUI/res/values-da/strings.xml
index f2ffdaa..9fb7783 100644
--- a/packages/SystemUI/res/values-da/strings.xml
+++ b/packages/SystemUI/res/values-da/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Vindue med overlejret forstørrelse"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Vindue med forstørrelse"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Vindue med forstørrelsesstyring"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Hurtig betjening"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-de/strings.xml b/packages/SystemUI/res/values-de/strings.xml
index 58caef2..9d83e9c 100644
--- a/packages/SystemUI/res/values-de/strings.xml
+++ b/packages/SystemUI/res/values-de/strings.xml
@@ -968,4 +968,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Overlay-Vergrößerungsfenster"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Vergrößerungsfenster"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Einstellungen für Vergrößerungsfenster"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-el/strings.xml b/packages/SystemUI/res/values-el/strings.xml
index d3686c8..b94d10c 100644
--- a/packages/SystemUI/res/values-el/strings.xml
+++ b/packages/SystemUI/res/values-el/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Παράθυρο επικάλυψης μεγέθυνσης"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Παράθυρο μεγέθυνσης"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Στοιχεία ελέγχου παραθύρου μεγέθυνσης"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Στοιχεία γρήγορου ελέγχου"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rAU/strings.xml b/packages/SystemUI/res/values-en-rAU/strings.xml
index 4f61daa..df24969 100644
--- a/packages/SystemUI/res/values-en-rAU/strings.xml
+++ b/packages/SystemUI/res/values-en-rAU/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification overlay window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rCA/strings.xml b/packages/SystemUI/res/values-en-rCA/strings.xml
index 34a2f19..2d087c9 100644
--- a/packages/SystemUI/res/values-en-rCA/strings.xml
+++ b/packages/SystemUI/res/values-en-rCA/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification overlay window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rGB/strings.xml b/packages/SystemUI/res/values-en-rGB/strings.xml
index 4f61daa..df24969 100644
--- a/packages/SystemUI/res/values-en-rGB/strings.xml
+++ b/packages/SystemUI/res/values-en-rGB/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification overlay window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rIN/strings.xml b/packages/SystemUI/res/values-en-rIN/strings.xml
index 4f61daa..df24969 100644
--- a/packages/SystemUI/res/values-en-rIN/strings.xml
+++ b/packages/SystemUI/res/values-en-rIN/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification overlay window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Magnification window"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Magnification window controls"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Quick controls"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-en-rXC/strings.xml b/packages/SystemUI/res/values-en-rXC/strings.xml
index 2bb5131..9d4e162 100644
--- a/packages/SystemUI/res/values-en-rXC/strings.xml
+++ b/packages/SystemUI/res/values-en-rXC/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‏‏‎‏‏‎‏‎‏‏‏‏‏‏‎‏‏‎‏‎‎‎‏‎‎‏‏‏‎‏‎‎‎‎‏‏‏‎‏‏‏‏‎‏‏‏‎‎‏‏‎‏‎‏‎‏‏‎‏‏‎‎Magnification Overlay Window‎‏‎‎‏‎"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‎‎‎‎‏‏‏‎‎‎‎‎‎‎‎‎‎‏‏‎‎‎‎‏‎‏‎‏‏‏‎‏‎‏‎‎‎‎‎‎‏‏‏‎‎‎‏‏‎‏‎‎‏‎‏‏‎‏‏‏‎‏‎Magnification Window‎‏‎‎‏‎"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‏‏‏‏‏‏‎‏‎‎‏‏‎‏‏‏‎‏‏‏‎‎‎‏‏‏‏‏‎‏‎‏‏‏‏‎‎‎‎‏‎‎‏‎‎‏‎‏‎‎‎‎‎‏‏‏‏‏‎‏‏‏‏‏‏‏‎Magnification Window Controls‎‏‎‎‏‎"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"‎‏‎‎‎‎‎‏‎‏‏‏‎‎‎‎‎‎‏‎‎‏‎‎‎‎‏‏‏‏‎‏‏‏‏‏‎‏‎‎‏‎‏‎‎‎‏‏‎‎‎‎‏‎‎‏‏‏‎‏‏‎‎‎‎‎‏‏‎‏‏‎‎‎‎‎‏‎‏‎‎‎‏‏‎‎‏‎‎‏‎‏‎Quick Controls‎‏‎‎‏‎"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es-rUS/strings.xml b/packages/SystemUI/res/values-es-rUS/strings.xml
index e2bf6ef..33689a1 100644
--- a/packages/SystemUI/res/values-es-rUS/strings.xml
+++ b/packages/SystemUI/res/values-es-rUS/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Ventana superpuesta de ampliación"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Controles de ampliación de la ventana"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-es/strings.xml b/packages/SystemUI/res/values-es/strings.xml
index 40d7fe3..458df31 100644
--- a/packages/SystemUI/res/values-es/strings.xml
+++ b/packages/SystemUI/res/values-es/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Ventana de superposición de ampliación"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Ventana de ampliación"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Ventana de controles de ampliación"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-et/strings.xml b/packages/SystemUI/res/values-et/strings.xml
index d8f546c..4729a0d 100644
--- a/packages/SystemUI/res/values-et/strings.xml
+++ b/packages/SystemUI/res/values-et/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Suurendamisakna ülekate"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Suurendamisaken"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Suurendamisakna juhtelemendid"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-eu/strings.xml b/packages/SystemUI/res/values-eu/strings.xml
index 9dceb5f..470a410 100644
--- a/packages/SystemUI/res/values-eu/strings.xml
+++ b/packages/SystemUI/res/values-eu/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Lupa-leiho gainjarria"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Lupa-leihoa"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Lupa-leihoaren aukerak"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Kontrol bizkorrak"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fa/strings.xml b/packages/SystemUI/res/values-fa/strings.xml
index d27b420..ae85a26 100644
--- a/packages/SystemUI/res/values-fa/strings.xml
+++ b/packages/SystemUI/res/values-fa/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"پنجره همپوشانی بزرگ‌نمایی"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"پنجره بزرگ‌نمایی"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"کنترل‌های پنجره بزرگ‌نمایی"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fi/strings.xml b/packages/SystemUI/res/values-fi/strings.xml
index cf01efd..da22e1c 100644
--- a/packages/SystemUI/res/values-fi/strings.xml
+++ b/packages/SystemUI/res/values-fi/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Suurennuksen peittoikkuna"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Suurennusikkuna"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Suurennusikkunan ohjaimet"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Pikasäätimet"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-fr-rCA/strings.xml b/packages/SystemUI/res/values-fr-rCA/strings.xml
index 5f7a358..d5d3f56 100644
--- a/packages/SystemUI/res/values-fr-rCA/strings.xml
+++ b/packages/SystemUI/res/values-fr-rCA/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Fenêtre d\'agrandissement superposée"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Commandes pour la fenêtre d\'agrandissement"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-fr/strings.xml b/packages/SystemUI/res/values-fr/strings.xml
index 3c12f66..5c5d353 100644
--- a/packages/SystemUI/res/values-fr/strings.xml
+++ b/packages/SystemUI/res/values-fr/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Fenêtre de superposition de l\'agrandissement"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Fenêtre d\'agrandissement"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Fenêtre des commandes d\'agrandissement"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-gl/strings.xml b/packages/SystemUI/res/values-gl/strings.xml
index 0c444e4..2c0eef6 100644
--- a/packages/SystemUI/res/values-gl/strings.xml
+++ b/packages/SystemUI/res/values-gl/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Ampliación da ventá de superposición"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Ventá de superposición"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Controis de ampliación da ventá"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-gu/strings.xml b/packages/SystemUI/res/values-gu/strings.xml
index 9dde523..df4254c 100644
--- a/packages/SystemUI/res/values-gu/strings.xml
+++ b/packages/SystemUI/res/values-gu/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"વિસ્તૃતીકરણ ઓવરલે વિંડો"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"વિસ્તૃતીકરણ વિંડો"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"વિસ્તૃતીકરણ વિંડોના નિયંત્રણો"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-hi/strings.xml b/packages/SystemUI/res/values-hi/strings.xml
index 5522605..b62a45e 100644
--- a/packages/SystemUI/res/values-hi/strings.xml
+++ b/packages/SystemUI/res/values-hi/strings.xml
@@ -390,8 +390,8 @@
     <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"बैटरी सेवर"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"शाम को चालू होगा"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"सुबह तक चालू रहेगी"</string>
-    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> बजे चालू हाेगी"</string>
-    <string name="quick_settings_dark_mode_secondary_label_until" msgid="2289774641256492437">"<xliff:g id="TIME">%s</xliff:g> बजे तक चालू रहेगी"</string>
+    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> पर चालू हाेगी"</string>
+    <string name="quick_settings_dark_mode_secondary_label_until" msgid="2289774641256492437">"<xliff:g id="TIME">%s</xliff:g> तक चालू रहेगी"</string>
     <string name="quick_settings_nfc_label" msgid="1054317416221168085">"एनएफ़सी"</string>
     <string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC बंद है"</string>
     <string name="quick_settings_nfc_on" msgid="1004976611203202230">"NFC चालू है"</string>
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification Overlay Window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"स्क्रीन को बड़ा करके दिखाने वाली विंडो"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"स्क्रीन को बड़ा करके दिखाने वाली विंडो के नियंत्रण"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-hr/strings.xml b/packages/SystemUI/res/values-hr/strings.xml
index 55a0e78..5eefc79 100644
--- a/packages/SystemUI/res/values-hr/strings.xml
+++ b/packages/SystemUI/res/values-hr/strings.xml
@@ -969,4 +969,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Prozor preklapanja povećavanja"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Prozor za povećavanje"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrole prozora za povećavanje"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Brze kontrole"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hu/strings.xml b/packages/SystemUI/res/values-hu/strings.xml
index a9b2d03..5ce235d 100644
--- a/packages/SystemUI/res/values-hu/strings.xml
+++ b/packages/SystemUI/res/values-hu/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Nagyítási fedvény ablaka"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Nagyítás ablaka"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Nagyítási vezérlők ablaka"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Gyorsvezérlők"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-hy/strings.xml b/packages/SystemUI/res/values-hy/strings.xml
index 78acb2e..4fa7096 100644
--- a/packages/SystemUI/res/values-hy/strings.xml
+++ b/packages/SystemUI/res/values-hy/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Խոշորացման պատուհանի վրադրում"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Խոշորացման պատուհան"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Խոշորացման պատուհանի կառավարման տարրեր"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Արագ կառավարման տարրեր"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-in/strings.xml b/packages/SystemUI/res/values-in/strings.xml
index 95c16c8..b3db0f3 100644
--- a/packages/SystemUI/res/values-in/strings.xml
+++ b/packages/SystemUI/res/values-in/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Jendela Overlay Pembesaran"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Jendela Pembesaran"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrol Jendela Pembesaran"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Kontrol Cepat"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-is/strings.xml b/packages/SystemUI/res/values-is/strings.xml
index 985f62d..56e67ef 100644
--- a/packages/SystemUI/res/values-is/strings.xml
+++ b/packages/SystemUI/res/values-is/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Stækkun yfirglugga"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Stækkunargluggi"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Stækkunarstillingar glugga"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Flýtistýringar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-it/strings.xml b/packages/SystemUI/res/values-it/strings.xml
index 870e6b7..4230677 100644
--- a/packages/SystemUI/res/values-it/strings.xml
+++ b/packages/SystemUI/res/values-it/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Finestra overlay ingrandimento"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Finestra ingrandimento"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Finestra controlli di ingrandimento"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controlli rapidi"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-iw/strings.xml b/packages/SystemUI/res/values-iw/strings.xml
index 775be02..b20b10f 100644
--- a/packages/SystemUI/res/values-iw/strings.xml
+++ b/packages/SystemUI/res/values-iw/strings.xml
@@ -974,4 +974,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"חלון ליצירת שכבת-על להגדלה"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"חלון הגדלה"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"בקרות של חלון ההגדלה"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ja/strings.xml b/packages/SystemUI/res/values-ja/strings.xml
index 7af3f86..b518973 100644
--- a/packages/SystemUI/res/values-ja/strings.xml
+++ b/packages/SystemUI/res/values-ja/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"拡大オーバーレイ ウィンドウ"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"拡大ウィンドウ"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"拡大ウィンドウ コントロール"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"クイック コントロール"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ka/strings.xml b/packages/SystemUI/res/values-ka/strings.xml
index 2433f9e..ab0dba8 100644
--- a/packages/SystemUI/res/values-ka/strings.xml
+++ b/packages/SystemUI/res/values-ka/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"გადიდების გადაფარვის ფანჯარა"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"გადიდების ფანჯარა"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"გადიდების კონტროლის ფანჯარა"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-kk/strings.xml b/packages/SystemUI/res/values-kk/strings.xml
index be93c18..3c44cab 100644
--- a/packages/SystemUI/res/values-kk/strings.xml
+++ b/packages/SystemUI/res/values-kk/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Ұлғайту терезесін қабаттастыру"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Ұлғайту терезесі"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Ұлғайту терезесінің басқару элементтері"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-km/strings.xml b/packages/SystemUI/res/values-km/strings.xml
index 413125c..480b694 100644
--- a/packages/SystemUI/res/values-km/strings.xml
+++ b/packages/SystemUI/res/values-km/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"វិនដូ​ត្រួតគ្នា​លើ​ការពង្រីក"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"វិនដូ​ការពង្រីក"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"វិនដូគ្រប់គ្រង​​ការពង្រីក"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"ការគ្រប់គ្រង​រហ័ស"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-kn/strings.xml b/packages/SystemUI/res/values-kn/strings.xml
index 0b98e06..c65e653 100644
--- a/packages/SystemUI/res/values-kn/strings.xml
+++ b/packages/SystemUI/res/values-kn/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ವರ್ಧನೆಯ ಓವರ್‌ಲೇ ವಿಂಡೋ"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"ವರ್ಧನೆಯ ವಿಂಡೋ"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"ವರ್ಧನೆಯ ವಿಂಡೋ ನಿಯಂತ್ರಣಗಳು"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ko/strings.xml b/packages/SystemUI/res/values-ko/strings.xml
index 54b055d..fb5818c 100644
--- a/packages/SystemUI/res/values-ko/strings.xml
+++ b/packages/SystemUI/res/values-ko/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"확대 오버레이 창"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"확대 창"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"확대 창 컨트롤"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ky/strings.xml b/packages/SystemUI/res/values-ky/strings.xml
index ed6b918..53d780e 100644
--- a/packages/SystemUI/res/values-ky/strings.xml
+++ b/packages/SystemUI/res/values-ky/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Чоңойтуу терезесин үстүнө коюу"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Чоңойтуу терезеси"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Чоңойтуу терезесин башкаруу каражаттары"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-lo/strings.xml b/packages/SystemUI/res/values-lo/strings.xml
index 11c4f7c..48166f3 100644
--- a/packages/SystemUI/res/values-lo/strings.xml
+++ b/packages/SystemUI/res/values-lo/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ໜ້າຈໍວາງທັບການຂະຫຍາຍ"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"ໜ້າຈໍການຂະຫຍາຍ"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"ການຄວບຄຸມໜ້າຈໍການຂະຫຍາຍ"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"ການຄວບຄຸມດ່ວນ"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lt/strings.xml b/packages/SystemUI/res/values-lt/strings.xml
index 7da1174..70bcf37 100644
--- a/packages/SystemUI/res/values-lt/strings.xml
+++ b/packages/SystemUI/res/values-lt/strings.xml
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Didinimo perdangos langas"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Didinimo langas"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Didinimo lango valdikliai"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Spartieji valdikliai"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-lv/strings.xml b/packages/SystemUI/res/values-lv/strings.xml
index fed86b3..6c28b10 100644
--- a/packages/SystemUI/res/values-lv/strings.xml
+++ b/packages/SystemUI/res/values-lv/strings.xml
@@ -969,4 +969,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Palielināšanas pārklājuma logs"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Palielināšanas logs"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Palielināšanas loga vadīklas"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-mk/strings.xml b/packages/SystemUI/res/values-mk/strings.xml
index a02f38e..f81c5ff 100644
--- a/packages/SystemUI/res/values-mk/strings.xml
+++ b/packages/SystemUI/res/values-mk/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Прозорец за преклопување на зголемувањето"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Прозорец за зголемување"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Контроли на прозорец за зголемување"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Брзи контроли"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ml/strings.xml b/packages/SystemUI/res/values-ml/strings.xml
index 2d3f73f..3ffcbc2 100644
--- a/packages/SystemUI/res/values-ml/strings.xml
+++ b/packages/SystemUI/res/values-ml/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"മാഗ്നിഫിക്കേഷൻ ഓവർലേ വിൻഡോ"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"മാഗ്നിഫിക്കേഷൻ വിൻഡോ നിയന്ത്രണങ്ങൾ"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-mn/strings.xml b/packages/SystemUI/res/values-mn/strings.xml
index 85d7ead..87d5fbf 100644
--- a/packages/SystemUI/res/values-mn/strings.xml
+++ b/packages/SystemUI/res/values-mn/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Томруулалтыг давхарласан цонх"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Томруулалтын цонх"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Томруулалтын цонхны хяналт"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Шуурхай хяналтууд"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-mr/strings.xml b/packages/SystemUI/res/values-mr/strings.xml
index 3406edf..d67c0ef 100644
--- a/packages/SystemUI/res/values-mr/strings.xml
+++ b/packages/SystemUI/res/values-mr/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"मॅग्निफिकेशन ओव्हरले विंडो"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"मॅग्निफिकेशन विंडो"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"मॅग्निफिकेशन विंडो नियंत्रणे"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-ms/strings.xml b/packages/SystemUI/res/values-ms/strings.xml
index eeaacea..e3e9746 100644
--- a/packages/SystemUI/res/values-ms/strings.xml
+++ b/packages/SystemUI/res/values-ms/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Tetingkap Tindanan Pembesaran"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Tetingkap Pembesaran"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kawalan Tetingkap Pembesaran"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-my/strings.xml b/packages/SystemUI/res/values-my/strings.xml
index 5ae82ea..9907570 100644
--- a/packages/SystemUI/res/values-my/strings.xml
+++ b/packages/SystemUI/res/values-my/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ဝင်းဒိုး ထပ်ပိုးလွှာ ချဲ့ခြင်း"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"ဝင်းဒိုး ချဲ့ခြင်း"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"ဝင်းဒိုး ထိန်းချုပ်မှုများ ချဲ့ခြင်း"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-nb/strings.xml b/packages/SystemUI/res/values-nb/strings.xml
index 463b95c..c273cc9 100644
--- a/packages/SystemUI/res/values-nb/strings.xml
+++ b/packages/SystemUI/res/values-nb/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Overleggsvindu for forstørring"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Forstørringsvindu"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontroller for forstørringsvindu"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Hurtigkontroller"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ne/strings.xml b/packages/SystemUI/res/values-ne/strings.xml
index 21a76a3..dea3311 100644
--- a/packages/SystemUI/res/values-ne/strings.xml
+++ b/packages/SystemUI/res/values-ne/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"म्याग्निफिकेसन ओभरले विन्डो"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"म्याग्निफिकेसन विन्डो"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"म्याग्निफिकेसन विन्डोका नियन्त्रणहरू"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-nl/strings.xml b/packages/SystemUI/res/values-nl/strings.xml
index 3c04015..8b015ab 100644
--- a/packages/SystemUI/res/values-nl/strings.xml
+++ b/packages/SystemUI/res/values-nl/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Overlay voor vergrotingsvenster"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Vergrotingsvenster"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Bediening van vergrotingsvenster"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Snelle bedieningselementen"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-or/strings.xml b/packages/SystemUI/res/values-or/strings.xml
index 4230275..e274f27 100644
--- a/packages/SystemUI/res/values-or/strings.xml
+++ b/packages/SystemUI/res/values-or/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ଓଭର୍‌ଲେ ୱିଣ୍ଡୋ"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"ମ୍ୟାଗ୍ନିଫିକେସନ୍ ୱିଣ୍ଡୋ ନିୟନ୍ତ୍ରଣଗୁଡ଼ିକ"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pa/strings.xml b/packages/SystemUI/res/values-pa/strings.xml
index f345d6a..28da4ed 100644
--- a/packages/SystemUI/res/values-pa/strings.xml
+++ b/packages/SystemUI/res/values-pa/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"ਵੱਡਦਰਸ਼ੀਕਰਨ ਓਵਰਲੇ Window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"ਵੱਡਦਰਸ਼ੀਕਰਨ Window ਦੇ ਕੰਟਰੋਲ"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-pl/strings.xml b/packages/SystemUI/res/values-pl/strings.xml
index 68cb14e..fd48b97 100644
--- a/packages/SystemUI/res/values-pl/strings.xml
+++ b/packages/SystemUI/res/values-pl/strings.xml
@@ -909,7 +909,7 @@
     <string name="notification_channel_battery" msgid="9219995638046695106">"Bateria"</string>
     <string name="notification_channel_screenshot" msgid="7665814998932211997">"Zrzuty ekranu"</string>
     <string name="notification_channel_general" msgid="4384774889645929705">"Wiadomości"</string>
-    <string name="notification_channel_storage" msgid="2720725707628094977">"Pamięć"</string>
+    <string name="notification_channel_storage" msgid="2720725707628094977">"Pamięć wewnętrzna"</string>
     <string name="notification_channel_hints" msgid="7703783206000346876">"Wskazówki"</string>
     <string name="instant_apps" msgid="8337185853050247304">"Aplikacje błyskawiczne"</string>
     <string name="instant_apps_title" msgid="8942706782103036910">"Aplikacja <xliff:g id="APP">%1$s</xliff:g> działa"</string>
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Okno nakładki powiększenia"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Okno powiększenia"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Elementy sterujące okna powiększenia"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Szybkie sterowanie"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rBR/strings.xml b/packages/SystemUI/res/values-pt-rBR/strings.xml
index a9101d7..6f61662 100644
--- a/packages/SystemUI/res/values-pt-rBR/strings.xml
+++ b/packages/SystemUI/res/values-pt-rBR/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Janela de sobreposição de ampliação"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt-rPT/strings.xml b/packages/SystemUI/res/values-pt-rPT/strings.xml
index 1a6e673..be534ae 100644
--- a/packages/SystemUI/res/values-pt-rPT/strings.xml
+++ b/packages/SystemUI/res/values-pt-rPT/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Janela de sobreposição da ampliação"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Controlos da janela de ampliação"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controlos rápidos"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-pt/strings.xml b/packages/SystemUI/res/values-pt/strings.xml
index a9101d7..6f61662 100644
--- a/packages/SystemUI/res/values-pt/strings.xml
+++ b/packages/SystemUI/res/values-pt/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Janela de sobreposição de ampliação"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Janela de ampliação"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Controles da janela de ampliação"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Controles rápidos"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ro/strings.xml b/packages/SystemUI/res/values-ro/strings.xml
index e34fa2d..44940bf 100644
--- a/packages/SystemUI/res/values-ro/strings.xml
+++ b/packages/SystemUI/res/values-ro/strings.xml
@@ -969,4 +969,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Fereastra de suprapunere pentru mărire"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Fereastra de mărire"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Comenzi pentru fereastra de mărire"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Comenzi rapide"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ru/strings.xml b/packages/SystemUI/res/values-ru/strings.xml
index 0ee159d..6fe2094 100644
--- a/packages/SystemUI/res/values-ru/strings.xml
+++ b/packages/SystemUI/res/values-ru/strings.xml
@@ -974,4 +974,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Наложение окна увеличения"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Окно увеличения"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Настройки окна увеличения"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-si/strings.xml b/packages/SystemUI/res/values-si/strings.xml
index 2c5e1d8..38933ad 100644
--- a/packages/SystemUI/res/values-si/strings.xml
+++ b/packages/SystemUI/res/values-si/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"විශාලන උඩැතිරි කවුළුව"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"විශාලන කවුළුව"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"විශාලනය කිරීමේ කවුළු පාලන"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"ඉක්මන් පාලන"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sk/strings.xml b/packages/SystemUI/res/values-sk/strings.xml
index 93f93a2..5bd709c 100644
--- a/packages/SystemUI/res/values-sk/strings.xml
+++ b/packages/SystemUI/res/values-sk/strings.xml
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Okno prekrytia priblíženia"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Okno priblíženia"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Ovládacie prvky okna priblíženia"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Rýchle ovládacie prvky"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sl/strings.xml b/packages/SystemUI/res/values-sl/strings.xml
index 452827f..7c06fa7 100644
--- a/packages/SystemUI/res/values-sl/strings.xml
+++ b/packages/SystemUI/res/values-sl/strings.xml
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Prekrivno povečevalno okno"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Povečevalno okno"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrolniki povečevalnega okna"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Hitro upravljanje"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sq/strings.xml b/packages/SystemUI/res/values-sq/strings.xml
index 2dc3cc8..7549611 100644
--- a/packages/SystemUI/res/values-sq/strings.xml
+++ b/packages/SystemUI/res/values-sq/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Dritarja e mbivendosjes së zmadhimit"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Dritarja e zmadhimit"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kontrollet e dritares së zmadhimit"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-sr/strings.xml b/packages/SystemUI/res/values-sr/strings.xml
index 4127806..6b2d971 100644
--- a/packages/SystemUI/res/values-sr/strings.xml
+++ b/packages/SystemUI/res/values-sr/strings.xml
@@ -969,4 +969,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Преклопни прозор за увећање"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Прозор за увећање"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Контроле прозора за увећање"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Брзе контроле"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sv/strings.xml b/packages/SystemUI/res/values-sv/strings.xml
index 3e29fa6..33c2078 100644
--- a/packages/SystemUI/res/values-sv/strings.xml
+++ b/packages/SystemUI/res/values-sv/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Överlagrat förstoringsfönster"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Förstoringsfönster"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Inställningar för förstoringsfönster"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Snabbinställningar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-sw/strings.xml b/packages/SystemUI/res/values-sw/strings.xml
index 9fd4284..bf2640f 100644
--- a/packages/SystemUI/res/values-sw/strings.xml
+++ b/packages/SystemUI/res/values-sw/strings.xml
@@ -958,10 +958,11 @@
     <string name="bubble_accessibility_action_move_bottom_left" msgid="6339015902495504715">"Sogeza chini kushoto"</string>
     <string name="bubble_accessibility_action_move_bottom_right" msgid="7471571700628346212">"Sogeza chini kulia"</string>
     <string name="bubble_dismiss_text" msgid="7071770411580452911">"Ondoa"</string>
-    <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Umesasisha usogezaji kwenye mfumo. Ili ufanye mabadiliko, nenda kwenye Mipangilio."</string>
+    <string name="notification_content_system_nav_changed" msgid="5077913144844684544">"Umesasisha usogezaji kwenye mfumo. Ili ubadilishe, nenda kwenye Mipangilio."</string>
     <string name="notification_content_gesture_nav_available" msgid="4431460803004659888">"Nenda kwenye mipangilio ili usasishe usogezaji kwenye mfumo"</string>
     <string name="inattentive_sleep_warning_title" msgid="3891371591713990373">"Hali tuli"</string>
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Dirisha la Kuwekelea Linalokuza"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Dirisha la Ukuzaji"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Vidhibiti vya Dirisha la Ukuzaji"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Vidhibiti vya Haraka"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ta/strings.xml b/packages/SystemUI/res/values-ta/strings.xml
index 55bd472..c5289ec 100644
--- a/packages/SystemUI/res/values-ta/strings.xml
+++ b/packages/SystemUI/res/values-ta/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Magnification Overlay Window"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"பெரிதாக்கல் சாளரம்"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"பெரிதாக்கல் சாளரக் கட்டுப்பாடுகள்"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-te/strings.xml b/packages/SystemUI/res/values-te/strings.xml
index 8b9c07c..ed562f3 100644
--- a/packages/SystemUI/res/values-te/strings.xml
+++ b/packages/SystemUI/res/values-te/strings.xml
@@ -71,7 +71,7 @@
     <string name="compat_mode_on" msgid="4963711187149440884">"స్క్రీన్‌కు నింపేలా జూమ్ చేయండి"</string>
     <string name="compat_mode_off" msgid="7682459748279487945">"స్క్రీన్‌కు నింపేలా విస్తరించండి"</string>
     <string name="global_action_screenshot" msgid="2760267567509131654">"స్క్రీన్‌షాట్"</string>
-    <string name="remote_input_image_insertion_text" msgid="4613177882724332877">"చిత్రం చొప్పించబడింది"</string>
+    <string name="remote_input_image_insertion_text" msgid="4613177882724332877">"ఇమేజ్ చొప్పించబడింది"</string>
     <string name="screenshot_saving_ticker" msgid="6519186952674544916">"స్క్రీన్‌షాట్‌ను సేవ్ చేస్తోంది…"</string>
     <string name="screenshot_saving_title" msgid="2298349784913287333">"స్క్రీన్‌షాట్‌ను సేవ్ చేస్తోంది…"</string>
     <string name="screenshot_saved_title" msgid="8893267638659083153">"స్క్రీన్‌షాట్ సేవ్ చేయబడింది"</string>
@@ -390,7 +390,7 @@
     <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"బ్యాటరీ సేవర్"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"సూర్యాస్తమయానికి"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"సూర్యోదయం వరకు"</string>
-    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> వద్ద"</string>
+    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> కు ఆన్ అవుతుంది"</string>
     <string name="quick_settings_dark_mode_secondary_label_until" msgid="2289774641256492437">"<xliff:g id="TIME">%s</xliff:g> వరకు"</string>
     <string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
     <string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC నిలిపివేయబడింది"</string>
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"మాగ్నిఫికేషన్ ఓవర్‌లే విండో"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"మాగ్నిఫికేషన్ విండో"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"మాగ్నిఫికేషన్ నియంత్రణల విండో"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-television/config.xml b/packages/SystemUI/res/values-television/config.xml
index dd4c321..bb49994 100644
--- a/packages/SystemUI/res/values-television/config.xml
+++ b/packages/SystemUI/res/values-television/config.xml
@@ -20,6 +20,9 @@
 <!-- These resources are around just to allow their values to be customized
      for different hardware and product builds. -->
 <resources>
+    <!-- SystemUIFactory component -->
+    <string name="config_systemUIFactoryComponent" translatable="false">com.android.systemui.tv.TvSystemUIFactory</string>
+
     <!-- SystemUI Services: The classes of the stuff to start. -->
     <string-array name="config_systemUIServiceComponents" translatable="false">
         <item>com.android.systemui.util.NotificationChannels</item>
diff --git a/packages/SystemUI/res/values-th/strings.xml b/packages/SystemUI/res/values-th/strings.xml
index c5e0123..9e5b2db 100644
--- a/packages/SystemUI/res/values-th/strings.xml
+++ b/packages/SystemUI/res/values-th/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"หน้าต่างการขยายที่วางซ้อน"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"หน้าต่างการขยาย"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"การควบคุมหน้าต่างการขยาย"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"การควบคุมอย่างรวดเร็ว"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-tl/strings.xml b/packages/SystemUI/res/values-tl/strings.xml
index 3d343c5..9485a2b 100644
--- a/packages/SystemUI/res/values-tl/strings.xml
+++ b/packages/SystemUI/res/values-tl/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Window ng Overlay sa Pag-magnify"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Window ng Pag-magnify"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Mga Kontrol sa Pag-magnify ng Window"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Mga Mabilisang Kontrol"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-tr/strings.xml b/packages/SystemUI/res/values-tr/strings.xml
index 46e583f..950b66b1 100644
--- a/packages/SystemUI/res/values-tr/strings.xml
+++ b/packages/SystemUI/res/values-tr/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Yer Paylaşımlı Büyütme Penceresi"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Büyütme Penceresi"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Büyütme Penceresi Kontrolleri"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Hızlı Kontroller"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uk/strings.xml b/packages/SystemUI/res/values-uk/strings.xml
index 7baad0d..3e1e4a9 100644
--- a/packages/SystemUI/res/values-uk/strings.xml
+++ b/packages/SystemUI/res/values-uk/strings.xml
@@ -974,4 +974,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Вікно збільшення з накладанням"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Вікно збільшення"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Елементи керування вікна збільшення"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Елементи швидкого керування"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-ur/strings.xml b/packages/SystemUI/res/values-ur/strings.xml
index 97d0a5d..6f3e7ab 100644
--- a/packages/SystemUI/res/values-ur/strings.xml
+++ b/packages/SystemUI/res/values-ur/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"میگنیفیکیشن اوورلے ونڈو"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"میگنیفکیشن ونڈو"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"میگنیفکیشن ونڈو کنٹرولز"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"فوری کنٹرولز"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-uz/strings.xml b/packages/SystemUI/res/values-uz/strings.xml
index b514f1e..618463e 100644
--- a/packages/SystemUI/res/values-uz/strings.xml
+++ b/packages/SystemUI/res/values-uz/strings.xml
@@ -390,7 +390,7 @@
     <string name="quick_settings_dark_mode_secondary_label_battery_saver" msgid="4990712734503013251">"Quvvat tejash"</string>
     <string name="quick_settings_dark_mode_secondary_label_on_at_sunset" msgid="6017379738102015710">"Kunbotarda yoqish"</string>
     <string name="quick_settings_dark_mode_secondary_label_until_sunrise" msgid="4404885070316716472">"Quyosh chiqqunicha"</string>
-    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> da yoqish"</string>
+    <string name="quick_settings_dark_mode_secondary_label_on_at" msgid="5128758823486361279">"<xliff:g id="TIME">%s</xliff:g> da yoqiladi"</string>
     <string name="quick_settings_dark_mode_secondary_label_until" msgid="2289774641256492437">"<xliff:g id="TIME">%s</xliff:g> gacha"</string>
     <string name="quick_settings_nfc_label" msgid="1054317416221168085">"NFC"</string>
     <string name="quick_settings_nfc_off" msgid="3465000058515424663">"NFC o‘chiq"</string>
@@ -477,9 +477,9 @@
     <string name="media_projection_remember_text" msgid="6896767327140422951">"Boshqa ko‘rsatilmasin"</string>
     <string name="clear_all_notifications_text" msgid="348312370303046130">"Hammasini tozalash"</string>
     <string name="manage_notifications_text" msgid="6885645344647733116">"Boshqarish"</string>
-    <string name="notification_section_header_gentle" msgid="3044910806569985386">"Tovushsiz bildirishnomalar"</string>
+    <string name="notification_section_header_gentle" msgid="3044910806569985386">"Sokin bildirishnomalar"</string>
     <string name="notification_section_header_conversations" msgid="821834744538345661">"Suhbatlar"</string>
-    <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Barcha tovushsiz bildirishnomalarni tozalash"</string>
+    <string name="accessibility_notification_section_header_gentle_clear_all" msgid="6490207897764933919">"Barcha sokin bildirishnomalarni tozalash"</string>
     <string name="dnd_suppressing_shade_text" msgid="5588252250634464042">"Bezovta qilinmasin rejimida bildirishnomalar pauza qilingan"</string>
     <string name="media_projection_action_text" msgid="3634906766918186440">"Boshlash"</string>
     <string name="empty_shade_text" msgid="8935967157319717412">"Bildirishnomalar yo‘q"</string>
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Kattalashtirish oynasining ustidan ochilishi"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Kattalashtirish oynasi"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Kattalashtirish oynasi sozlamalari"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Tezkor tugmalar"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-vi/strings.xml b/packages/SystemUI/res/values-vi/strings.xml
index c4d7618..6be05aa 100644
--- a/packages/SystemUI/res/values-vi/strings.xml
+++ b/packages/SystemUI/res/values-vi/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Cửa sổ lớp phủ phóng to"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Cửa sổ phóng to"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Các tùy chọn điều khiển cửa sổ phóng to"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rCN/strings.xml b/packages/SystemUI/res/values-zh-rCN/strings.xml
index 56edb64..e10abbb 100644
--- a/packages/SystemUI/res/values-zh-rCN/strings.xml
+++ b/packages/SystemUI/res/values-zh-rCN/strings.xml
@@ -964,4 +964,6 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"放大叠加窗口"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"放大窗口"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"放大窗口控件"</string>
+    <!-- no translation found for quick_controls_title (525285759614231333) -->
+    <skip />
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rHK/strings.xml b/packages/SystemUI/res/values-zh-rHK/strings.xml
index 251e23d..a83ce53 100644
--- a/packages/SystemUI/res/values-zh-rHK/strings.xml
+++ b/packages/SystemUI/res/values-zh-rHK/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"放大重疊視窗"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"快速控制介面"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zh-rTW/strings.xml b/packages/SystemUI/res/values-zh-rTW/strings.xml
index a7ec598..9032595 100644
--- a/packages/SystemUI/res/values-zh-rTW/strings.xml
+++ b/packages/SystemUI/res/values-zh-rTW/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"放大重疊視窗"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"放大視窗"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"放大視窗控制項"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"快速控制項"</string>
 </resources>
diff --git a/packages/SystemUI/res/values-zu/strings.xml b/packages/SystemUI/res/values-zu/strings.xml
index 1203b579c..019128b 100644
--- a/packages/SystemUI/res/values-zu/strings.xml
+++ b/packages/SystemUI/res/values-zu/strings.xml
@@ -964,4 +964,5 @@
     <string name="magnification_overlay_title" msgid="6584179429612427958">"Iwindi Lembondela Lesikhulisi"</string>
     <string name="magnification_window_title" msgid="4863914360847258333">"Iwindi Lesikhulisi"</string>
     <string name="magnification_controls_title" msgid="8421106606708891519">"Izilawuli Zewindi Lesikhulisi"</string>
+    <string name="quick_controls_title" msgid="525285759614231333">"Izilawuli Ezisheshayo"</string>
 </resources>
diff --git a/packages/SystemUI/res/values/config.xml b/packages/SystemUI/res/values/config.xml
index 2aa6d95..8de2df5 100644
--- a/packages/SystemUI/res/values/config.xml
+++ b/packages/SystemUI/res/values/config.xml
@@ -328,6 +328,10 @@
 
     <item type="id" name="action_toggle_overview"/>
 
+    <!-- Whether or not to show notifications to the user. If disabled, SystemUI will still be
+         registered as a notification listener, but will ignore all notification events. -->
+    <bool name="config_renderNotifications">true</bool>
+
     <!-- Whether or not the gear icon on notifications should be shown. The gear is shown when the
          the notification is not swiped enough to dismiss it. -->
     <bool name="config_showNotificationGear">true</bool>
@@ -483,9 +487,6 @@
     <!-- Whether or not to add a "people" notifications section -->
     <bool name="config_usePeopleFiltering">false</bool>
 
-    <!-- Package name for controls plugin -->
-    <string name="config_controlsPluginPackageName" translatable="false">com.android.systemui.controls.panel</string>
-
     <!-- Defines the blacklist for system icons.  That is to say, the icons in the status bar that
          are part of the blacklist are never displayed. Each item in the blacklist must be a string
          defined in core/res/res/config.xml to properly blacklist the icon.
diff --git a/packages/SystemUI/res/values/dimens.xml b/packages/SystemUI/res/values/dimens.xml
index cc58b20..ec56c1f 100644
--- a/packages/SystemUI/res/values/dimens.xml
+++ b/packages/SystemUI/res/values/dimens.xml
@@ -103,7 +103,8 @@
     <item name="status_bar_icon_scale_factor" format="float" type="dimen">1.0</item>
 
     <dimen name="group_overflow_number_size">@*android:dimen/notification_text_size</dimen>
-    <dimen name="group_overflow_number_padding">@*android:dimen/notification_content_margin_end</dimen>
+    <dimen name="group_overflow_number_padding">@*android:dimen/notification_content_margin_end
+    </dimen>
 
     <!-- max height of a notification such that the content can still fade out when closing -->
     <dimen name="max_notification_fadeout_height">100dp</dimen>
@@ -267,7 +268,9 @@
     <dimen name="status_bar_icon_drawing_size">15dp</dimen>
 
     <!-- size at which Notification icons will be drawn on Ambient Display -->
-    <dimen name="status_bar_icon_drawing_size_dark">@*android:dimen/notification_header_icon_size_ambient</dimen>
+    <dimen name="status_bar_icon_drawing_size_dark">
+        @*android:dimen/notification_header_icon_size_ambient
+    </dimen>
 
     <!-- size of notification icons when the notifications are hidden -->
     <dimen name="hidden_shelf_icon_size">16dp</dimen>
@@ -299,8 +302,11 @@
     <dimen name="global_screenshot_legacy_bg_padding">20dp</dimen>
     <dimen name="global_screenshot_bg_padding">20dp</dimen>
     <dimen name="global_screenshot_x_scale">80dp</dimen>
+    <dimen name="screenshot_preview_elevation">8dp</dimen>
     <dimen name="screenshot_offset_y">48dp</dimen>
     <dimen name="screenshot_offset_x">16dp</dimen>
+    <dimen name="screenshot_dismiss_button_tappable_size">48dp</dimen>
+    <dimen name="screenshot_dismiss_button_margin">8dp</dimen>
     <dimen name="screenshot_action_container_offset_y">32dp</dimen>
     <dimen name="screenshot_action_container_corner_radius">10dp</dimen>
     <dimen name="screenshot_action_container_padding_vertical">10dp</dimen>
@@ -597,10 +603,14 @@
 
     <!-- The height of the divider between the individual notifications in a notification
          group. -->
-    <dimen name="notification_children_container_divider_height">@dimen/notification_divider_height</dimen>
+    <dimen name="notification_children_container_divider_height">
+        @dimen/notification_divider_height
+    </dimen>
 
     <!-- The top margin for the notification children container in its non-expanded form. -->
-    <dimen name="notification_children_container_margin_top">@*android:dimen/notification_content_margin_top</dimen>
+    <dimen name="notification_children_container_margin_top">
+        @*android:dimen/notification_content_margin_top
+    </dimen>
 
     <!-- The height of a notification header -->
     <dimen name="notification_header_height">53dp</dimen>
@@ -967,12 +977,14 @@
          Equal to pip_action_size - pip_action_padding. -->
     <dimen name="pip_expand_container_edge_margin">30dp</dimen>
 
+    <!-- The touchable/draggable edge size for PIP resize. -->
+    <dimen name="pip_resize_edge_size">30dp</dimen>
+
     <dimen name="default_gear_space">18dp</dimen>
     <dimen name="cell_overlay_padding">18dp</dimen>
 
     <!-- Global actions power menu -->
     <dimen name="global_actions_top_margin">12dp</dimen>
-    <dimen name="global_actions_plugin_offset">-145dp</dimen>
 
     <dimen name="global_actions_panel_width">120dp</dimen>
     <dimen name="global_actions_padding">12dp</dimen>
@@ -1062,9 +1074,12 @@
     <integer name="wireless_charging_scale_dots_duration">83</integer>
     <integer name="wireless_charging_num_dots">16</integer>
     <!-- Starting text size in sp of batteryLevel for wireless charging animation -->
-    <item name="wireless_charging_anim_battery_level_text_size_start" format="float" type="dimen">0</item>
+    <item name="wireless_charging_anim_battery_level_text_size_start" format="float" type="dimen">
+        0
+    </item>
     <!-- Ending text size in sp of batteryLevel for wireless charging animation -->
-    <item name="wireless_charging_anim_battery_level_text_size_end" format="float" type="dimen">24</item>
+    <item name="wireless_charging_anim_battery_level_text_size_end" format="float" type="dimen">24
+    </item>
     <!-- time until battery info is at full opacity-->
     <integer name="wireless_charging_anim_opacity_offset">80</integer>
     <!-- duration batteryLevel opacity goes from 0 to 1 duration -->
@@ -1091,7 +1106,7 @@
 
     <!--  Blur radius on status bar window and power menu  -->
     <dimen name="min_window_blur_radius">1px</dimen>
-    <dimen name="max_window_blur_radius">100px</dimen>
+    <dimen name="max_window_blur_radius">150px</dimen>
 
     <!-- How much into a DisplayCutout's bounds we can go, on each side -->
     <dimen name="display_cutout_margin_consumption">0px</dimen>
@@ -1165,10 +1180,12 @@
     <dimen name="new_qs_vertical_margin">8dp</dimen>
 
     <!-- Size of media cards in the QSPanel carousel -->
-    <dimen name="qs_media_height">150dp</dimen>
     <dimen name="qs_media_width">350dp</dimen>
     <dimen name="qs_media_padding">8dp</dimen>
     <dimen name="qs_media_corner_radius">10dp</dimen>
+    <dimen name="qs_media_album_size">72dp</dimen>
+    <dimen name="qs_seamless_icon_size">20dp</dimen>
+    <dimen name="qqs_media_spacing">8dp</dimen>
 
     <dimen name="magnification_border_size">5dp</dimen>
     <dimen name="magnification_frame_move_short">5dp</dimen>
@@ -1182,11 +1199,35 @@
     <dimen name="magnifier_up_down_controls_height">40dp</dimen>
 
     <!-- Home Controls -->
-    <dimen name="control_spacing">5dp</dimen>
+    <dimen name="control_spacing">4dp</dimen>
     <dimen name="control_corner_radius">15dp</dimen>
     <dimen name="control_height">100dp</dimen>
     <dimen name="control_padding">15dp</dimen>
-    <dimen name="control_status_normal">12dp</dimen>
-    <dimen name="control_status_expanded">18dp</dimen>
-    <dimen name="app_icon_size">32dp</dimen>
+    <dimen name="control_status_normal">12sp</dimen>
+    <dimen name="control_status_expanded">18sp</dimen>
+    <dimen name="control_base_item_margin">2dp</dimen>
+    <dimen name="control_status_padding">3dp</dimen>
+
+    <!-- Home Controls management screens -->
+    <dimen name="controls_management_top_padding">48dp</dimen>
+    <dimen name="controls_management_side_padding">8dp</dimen>
+    <dimen name="controls_management_titles_margin">8dp</dimen>
+    <dimen name="controls_management_list_margin">16dp</dimen>
+    <dimen name="controls_title_size">26sp</dimen>
+
+    <dimen name="controls_app_icon_size">32dp</dimen>
+    <dimen name="controls_app_icon_frame_side_padding">8dp</dimen>
+    <dimen name="controls_app_icon_frame_top_padding">4dp</dimen>
+    <dimen name="controls_app_bottom_margin">8dp</dimen>
+    <dimen name="controls_app_text_padding">8dp</dimen>
+    <dimen name="controls_app_divider_height">2dp</dimen>
+    <dimen name="controls_app_divider_side_margin">32dp</dimen>
+
+    <dimen name="controls_card_margin">2dp</dimen>
+
+    <!-- Screen Record -->
+    <dimen name="screenrecord_dialog_padding">18dp</dimen>
+    <dimen name="screenrecord_logo_size">24dp</dimen>
+
+    <dimen name="kg_user_switcher_text_size">16sp</dimen>
 </resources>
diff --git a/packages/SystemUI/res/values/strings.xml b/packages/SystemUI/res/values/strings.xml
index 8d935ec..ef9e705 100644
--- a/packages/SystemUI/res/values/strings.xml
+++ b/packages/SystemUI/res/values/strings.xml
@@ -196,7 +196,7 @@
 
     <!-- text to show in place of RemoteInput images when they cannot be shown.
          [CHAR LIMIT=50] -->
-    <string name="remote_input_image_insertion_text">Image inserted</string>
+    <string name="remote_input_image_insertion_text">sent an image</string>
 
     <!-- Notification ticker displayed when a screenshot is being saved to the Gallery. [CHAR LIMIT=30] -->
     <string name="screenshot_saving_ticker">Saving screenshot\u2026</string>
@@ -217,15 +217,31 @@
         your organization</string>
 
     <!-- Notification title displayed for screen recording [CHAR LIMIT=50]-->
-    <string name="screenrecord_name">Screen Recording</string>
+    <string name="screenrecord_name">Screen Recorder</string>
     <!-- Description of the screen recording notification channel [CHAR LIMIT=NONE]-->
     <string name="screenrecord_channel_description">Ongoing notification for a screen record session</string>
-    <!-- Label for the button to begin screen recording [CHAR LIMIT=NONE]-->
-    <string name="screenrecord_start_label">Start Recording</string>
-    <!-- Label for the checkbox to enable microphone input during screen recording [CHAR LIMIT=NONE]-->
-    <string name="screenrecord_mic_label">Record voiceover</string>
+    <!-- Title for the screen prompting the user to begin recording their screen [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_start_label">Start Recording?</string>
+    <!-- Message reminding the user that sensitive information may be captured during a screen recording [CHAR_LIMIT=NONE]-->
+    <string name="screenrecord_description">While recording, Android System can capture any sensitive information that\u2019s visible on your screen or played on your device. This includes passwords, payment info, photos, messages, and audio.</string>
+    <!-- Label for a switch to enable recording audio [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_audio_label">Record audio</string>
+    <!-- Label for the option to record audio from the device [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_device_audio_label">Device audio</string>
+    <!-- Description of what audio may be captured from the device [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_device_audio_description">Sound from your device, like music, calls, and ringtones</string>
+    <!-- Label for the option to enable microphone input during screen recording [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_mic_label">Microphone</string>
+    <!-- Label for an option to record audio from both device and microphone [CHAR LIMIT=NONE]-->
+    <string name="screenrecord_device_audio_and_mic_label">Device audio and microphone</string>
+    <!-- Button to start a screen recording [CHAR LIMIT=50]-->
+    <string name="screenrecord_start">Start</string>
+    <!-- Notification text displayed when we are recording the screen [CHAR LIMIT=100]-->
+    <string name="screenrecord_ongoing_screen_only">Recording screen</string>
+    <!-- Notification text displayed when we are recording both the screen and audio [CHAR LIMIT=100]-->
+    <string name="screenrecord_ongoing_screen_and_audio">Recording screen and audio</string>
     <!-- Label for the checkbox to enable showing location of touches during screen recording [CHAR LIMIT=NONE]-->
-    <string name="screenrecord_taps_label">Show taps</string>
+    <string name="screenrecord_taps_label">Show touches on screen</string>
     <!-- Label for notification that the user can tap to stop and save the screen recording [CHAR LIMIT=NONE] -->
     <string name="screenrecord_stop_text">Tap to stop</string>
     <!-- Label for notification action to stop and save the screen recording [CHAR LIMIT=35] -->
@@ -250,6 +266,8 @@
     <string name="screenrecord_delete_error">Error deleting screen recording</string>
     <!-- A toast message shown when the screen recording cannot be started due to insufficient permissions [CHAR LIMIT=NONE] -->
     <string name="screenrecord_permission_error">Failed to get permissions</string>
+    <!-- A toast message shown when the screen recording cannot be started due to a generic error [CHAR LIMIT=NONE] -->
+    <string name="screenrecord_start_error">Error starting screen recording</string>
 
     <!-- Title for the USB function chooser in UsbPreferenceActivity. [CHAR LIMIT=30] -->
     <string name="usb_preference_title">USB file transfer options</string>
@@ -469,6 +487,9 @@
     <!-- Content description of the data connection type 5Ge. [CHAR LIMIT=NONE] -->
     <string name="data_connection_5ge" translatable="false">5Ge</string>
 
+    <!-- Content description of the data connection type 5Ge with HTML styling. DO NOT TRANSLATE [CHAR LIMIT=NONE] -->
+    <string name="data_connection_5ge_html" translate="false"> &lt;i>5G &lt;small>E&lt;/small>&lt;/i> </string>
+
     <!-- Content description of the data connection type 5G. [CHAR LIMIT=NONE] -->
     <string name="data_connection_5g" translatable="false">5G</string>
 
@@ -1177,6 +1198,9 @@
     <!-- The text for the manage notifications link. [CHAR LIMIT=40] -->
     <string name="manage_notifications_text">Manage</string>
 
+    <!-- The text for the notification history link. [CHAR LIMIT=40] -->
+    <string name="manage_notifications_history_text">History</string>
+
     <!-- Section title for notifications that do not vibrate or make noise. [CHAR LIMIT=40] -->
     <string name="notification_section_header_gentle">Silent notifications</string>
 
@@ -1756,6 +1780,12 @@
     <!-- [CHAR LIMIT=150] Notification Importance title: bubble level summary -->
     <string name="notification_channel_summary_bubble">Keeps your attention with a floating shortcut to this content.</string>
 
+    <!-- [CHAR LIMIT=NONE] Empty overflow title -->
+    <string name="bubble_overflow_empty_title">No recent bubbles</string>
+
+    <!-- [CHAR LIMIT=NONE] Empty overflow subtitle -->
+    <string name="bubble_overflow_empty_subtitle">Recently dismissed bubbles will appear here for easy retrieval.</string>
+
     <!-- Notification: Control panel: Label that displays when the app's notifications cannot be blocked. -->
     <string name="notification_unblockable_desc">These notifications can\'t be modified.</string>
 
@@ -1811,23 +1841,23 @@
     <!-- Notification: Conversation: control panel, label for button that demotes notification from conversation to normal notification -->
     <string name="demote">Mark this notification as not a conversation</string>
 
-    <!-- [CHAR LIMIT=100] Mark this conversation as a favorite -->
-    <string name="notification_conversation_favorite">Favorite</string>
+    <!-- [CHAR LIMIT=100] This conversation is marked as important -->
+    <string name="notification_conversation_favorite">Important conversation</string>
 
-    <!-- [CHAR LIMIT=100] Unmark this conversation as a favorite -->
-    <string name="notification_conversation_unfavorite">Unfavorite</string>
+    <!-- [CHAR LIMIT=100] This conversation is not marked as important -->
+    <string name="notification_conversation_unfavorite">Not an important conversation</string>
 
-    <!-- [CHAR LIMIT=100] Mute this conversation -->
-    <string name="notification_conversation_mute">Mute</string>
+    <!-- [CHAR LIMIT=100] This conversation is silenced (will not make sound or vibrate)-->
+    <string name="notification_conversation_mute">Silenced</string>
 
-    <!-- [CHAR LIMIT=100] Umute this conversation -->
-    <string name="notification_conversation_unmute">Unmute</string>
+    <!-- [CHAR LIMIT=100] This conversation is alerting (may make sound and/or vibrate)-->
+    <string name="notification_conversation_unmute">Alerting</string>
 
     <!-- [CHAR LIMIT=100] Show notification as bubble -->
-    <string name="notification_conversation_bubble">Show as bubble</string>
+    <string name="notification_conversation_bubble">Show bubble</string>
 
     <!-- [CHAR LIMIT=100] Turn off bubbles for notification -->
-    <string name="notification_conversation_unbubble">Turn off bubbles</string>
+    <string name="notification_conversation_unbubble">Remove bubbles</string>
 
     <!-- [CHAR LIMIT=100] Add this conversation to home screen -->
     <string name="notification_conversation_home_screen">Add to home screen</string>
@@ -1842,7 +1872,10 @@
     <string name="notification_menu_snooze_description">notification snooze options</string>
 
     <!-- Notification: Menu row: Label for the snooze action shown in local context menu. [CHAR LIMIT=NONE] -->
-    <string name="notification_menu_snooze_action">Snooze</string>
+    <string name="notification_menu_snooze_action">Remind me</string>
+
+    <!-- Notification: Menu row: Label for the snooze action shown in local context menu. [CHAR LIMIT=NONE] -->
+    <string name="notification_menu_settings_action">Settings</string>
 
     <!-- Notification: Snooze panel: Snooze undo button label. [CHAR LIMIT=50]-->
     <string name="snooze_undo">UNDO</string>
@@ -2011,6 +2044,9 @@
     <!-- Label for feature switch [CHAR LIMIT=30] -->
     <string name="switch_bar_off">Off</string>
 
+    <!-- The tile in quick settings is unavailable. [CHAR LIMIT=32] -->
+    <string name="tile_unavailable">Unavailable</string>
+
     <!-- SysUI Tuner: Button that leads to the navigation bar customization screen [CHAR LIMIT=60] -->
     <string name="nav_bar">Navigation bar</string>
 
@@ -2547,9 +2583,28 @@
     <!-- Title for Magnification Controls Window [CHAR LIMIT=NONE] -->
     <string name="magnification_controls_title">Magnification Window Controls</string>
 
-    <!-- Quick Controls strings [CHAR LIMIT=30] -->
+    <!-- Quick Controls strings -->
+    <!-- Quick Controls view header [CHAR LIMIT=30] -->
     <string name="quick_controls_title">Quick Controls</string>
 
-    <!-- The tile in quick settings is unavailable. [CHAR LIMIT=32] -->
-    <string name="tile_unavailable">Unvailable</string>
+    <!-- Controls management providers screen title [CHAR LIMIT=30]-->
+    <string name="controls_providers_title">Add Controls</string>
+    <!-- Controls management providers screen subtitle [CHAR LIMIT=NONE] -->
+    <string name="controls_providers_subtitle">Choose an app from which to add controls</string>
+    <!-- Number of favorites for controls management screen [CHAR LIMIT=NONE]-->
+    <plurals name="controls_number_of_favorites">
+        <item quantity="one"><xliff:g id="number" example="1">%s</xliff:g> current favorite.</item>
+        <item quantity="other"><xliff:g id="number" example="3">%s</xliff:g> current favorites.</item>
+    </plurals>
+
+    <!-- Controls management controls screen default title [CHAR LIMIT=30] -->
+    <string name="controls_favorite_default_title">Controls</string>
+    <!-- Controls management controls screen subtitle [CHAR LIMIT=NONE] -->
+    <string name="controls_favorite_subtitle">Choose controls for quick access</string>
+    <!-- Controls management controls screen favorites header [CHAR LIMIT=50] -->
+    <string name="controls_favorite_header_favorites">Favorites</string>
+    <!-- Controls management controls screen all header [CHAR LIMIT=50] -->
+    <string name="controls_favorite_header_all">All</string>
+    <!-- Controls management controls screen error on load message [CHAR LIMIT=50] -->
+    <string name="controls_favorite_load_error">The list of all controls could not be loaded.</string>
 </resources>
diff --git a/packages/SystemUI/res/values/styles.xml b/packages/SystemUI/res/values/styles.xml
index 10f59a4..6fedac0 100644
--- a/packages/SystemUI/res/values/styles.xml
+++ b/packages/SystemUI/res/values/styles.xml
@@ -129,11 +129,10 @@
             parent="TextAppearance.StatusBar.Expanded.AboveDateTime" />
 
     <style name="TextAppearance.StatusBar.Expanded.UserSwitcher">
-        <item name="android:textSize">16sp</item>
+        <item name="android:textSize">@dimen/kg_user_switcher_text_size</item>
         <item name="android:textStyle">normal</item>
         <item name="android:textColor">?android:attr/textColorSecondary</item>
     </style>
-    <style name="TextAppearance.StatusBar.Expanded.UserSwitcher.UserName" />
 
     <style name="TextAppearance" />
 
@@ -234,6 +233,37 @@
 
     <style name="TextAppearance.DeviceManagementDialog.Title" parent="@android:style/TextAppearance.DeviceDefault.DialogWindowTitle"/>
 
+    <style name="TextAppearance.AuthCredential">
+        <item name="android:gravity">center_horizontal</item>
+        <item name="android:fontFamily">google-sans</item>
+        <item name="android:textAlignment">gravity</item>
+        <item name="android:layout_gravity">top</item>
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+    </style>
+
+    <style name="TextAppearance.AuthCredential.Title">
+        <item name="android:layout_marginBottom">2dp</item>
+        <item name="android:layout_marginLeft">24dp</item>
+        <item name="android:layout_marginRight">24dp</item>
+        <item name="android:layout_marginTop">16dp</item>
+        <item name="android:textSize">24sp</item>
+    </style>
+
+    <style name="TextAppearance.AuthCredential.Description">
+        <item name="android:layout_marginBottom">12dp</item>
+        <item name="android:layout_marginStart">40dp</item>
+        <item name="android:layout_marginEnd">40dp</item>
+        <item name="android:layout_marginTop">3dp</item>
+        <item name="android:textSize">16sp</item>
+    </style>
+
+    <style name="TextAppearance.AuthCredential.PasswordEntry" parent="@android:style/TextAppearance.DeviceDefault">
+        <item name="android:gravity">center</item>
+        <item name="android:singleLine">true</item>
+        <item name="android:textColor">?android:attr/colorForeground</item>
+        <item name="android:textSize">24sp</item>
+    </style>
+
     <style name="DeviceManagementDialogTitle">
         <item name="android:gravity">center</item>
         <item name="android:textAppearance">@style/TextAppearance.DeviceManagementDialog.Title</item>
@@ -297,6 +327,16 @@
         <item name="android:textColor">?attr/wallpaperTextColor</item>
     </style>
 
+    <style name="LockPatternContainerStyle">
+        <item name="android:maxHeight">400dp</item>
+        <item name="android:maxWidth">420dp</item>
+        <item name="android:minHeight">0dp</item>
+        <item name="android:minWidth">0dp</item>
+        <item name="android:paddingBottom">0dp</item>
+        <item name="android:paddingHorizontal">44dp</item>
+        <item name="android:paddingTop">0dp</item>
+    </style>
+
     <style name="LockPatternStyle">
         <item name="*android:regularColor">?attr/wallpaperTextColor</item>
         <item name="*android:successColor">?attr/wallpaperTextColor</item>
@@ -583,4 +623,28 @@
         <item name="android:background">?android:attr/selectableItemBackground</item>
         <item name="android:textColor">?android:attr/textColorPrimary</item>
     </style>
+
+    <!-- Controls styles -->
+    <style name="Theme.ControlsManagement" parent="@android:style/Theme.DeviceDefault.NoActionBar">
+        <item name="android:windowIsTranslucent">false</item>
+    </style>
+
+    <style name="TextAppearance.Control">
+        <item name="android:fontFamily">@*android:string/config_bodyFontFamily</item>
+    </style>
+
+    <style name="TextAppearance.Control.Status">
+        <item name="android:textSize">12sp</item>
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+    </style>
+
+    <style name="TextAppearance.Control.Title">
+        <item name="android:textSize">14sp</item>
+        <item name="android:textColor">?android:attr/textColorPrimary</item>
+    </style>
+    <style name="TextAppearance.Control.Subtitle">
+        <item name="android:textSize">12sp</item>
+        <item name="android:textColor">?android:attr/textColorSecondary</item>
+    </style>
+
 </resources>
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
index a378610..b8997c2 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/plugins/PluginInstanceManager.java
@@ -135,8 +135,7 @@
         ArrayList<PluginInfo> plugins = new ArrayList<PluginInfo>(mPluginHandler.mPlugins);
         for (PluginInfo info : plugins) {
             if (className.startsWith(info.mPackage)) {
-                disable(info, PluginEnabler.DISABLED_FROM_EXPLICIT_CRASH);
-                disableAny = true;
+                disableAny |= disable(info, PluginEnabler.DISABLED_FROM_EXPLICIT_CRASH);
             }
         }
         return disableAny;
@@ -144,10 +143,11 @@
 
     public boolean disableAll() {
         ArrayList<PluginInfo> plugins = new ArrayList<PluginInfo>(mPluginHandler.mPlugins);
+        boolean disabledAny = false;
         for (int i = 0; i < plugins.size(); i++) {
-            disable(plugins.get(i), PluginEnabler.DISABLED_FROM_SYSTEM_CRASH);
+            disabledAny |= disable(plugins.get(i), PluginEnabler.DISABLED_FROM_SYSTEM_CRASH);
         }
-        return plugins.size() != 0;
+        return disabledAny;
     }
 
     private boolean isPluginWhitelisted(ComponentName pluginName) {
@@ -166,7 +166,7 @@
         return false;
     }
 
-    private void disable(PluginInfo info, @PluginEnabler.DisableReason int reason) {
+    private boolean disable(PluginInfo info, @PluginEnabler.DisableReason int reason) {
         // Live by the sword, die by the sword.
         // Misbehaving plugins get disabled and won't come back until uninstall/reinstall.
 
@@ -176,10 +176,12 @@
         // assuming one of them must be bad.
         if (isPluginWhitelisted(pluginComponent)) {
             // Don't disable whitelisted plugins as they are a part of the OS.
-            return;
+            return false;
         }
         Log.w(TAG, "Disabling plugin " + pluginComponent.flattenToShortString());
         mManager.getPluginEnabler().setDisabled(pluginComponent, reason);
+
+        return true;
     }
 
     public <T> boolean dependsOn(Plugin p, Class<T> cls) {
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/IconLoader.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/IconLoader.java
deleted file mode 100644
index 78b1b2614..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/IconLoader.java
+++ /dev/null
@@ -1,197 +0,0 @@
-/*
- * Copyright (C) 2017 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.shared.recents.model;
-
-import static android.content.pm.PackageManager.MATCH_ANY_USER;
-
-import android.app.ActivityManager;
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.pm.ActivityInfo;
-import android.content.pm.ApplicationInfo;
-import android.content.pm.PackageManager;
-import android.content.res.Resources;
-import android.graphics.Bitmap;
-import android.graphics.drawable.BitmapDrawable;
-import android.graphics.drawable.Drawable;
-import android.os.UserHandle;
-import android.util.IconDrawableFactory;
-import android.util.Log;
-import android.util.LruCache;
-
-import com.android.systemui.shared.system.PackageManagerWrapper;
-
-public abstract class IconLoader {
-
-    private static final String TAG = "IconLoader";
-
-    protected final Context mContext;
-    protected final TaskKeyLruCache<Drawable> mIconCache;
-    protected final LruCache<ComponentName, ActivityInfo> mActivityInfoCache;
-
-    public IconLoader(Context context, TaskKeyLruCache<Drawable> iconCache, LruCache<ComponentName,
-            ActivityInfo> activityInfoCache) {
-        mContext = context;
-        mIconCache = iconCache;
-        mActivityInfoCache = activityInfoCache;
-    }
-
-    /**
-     * Returns the activity info for the given task key, retrieving one from the system if the
-     * task key is expired.
-     *
-     * TODO: Move this to an ActivityInfoCache class
-     */
-    public ActivityInfo getAndUpdateActivityInfo(Task.TaskKey taskKey) {
-        ComponentName cn = taskKey.getComponent();
-        ActivityInfo activityInfo = mActivityInfoCache.get(cn);
-        if (activityInfo == null) {
-            activityInfo = PackageManagerWrapper.getInstance().getActivityInfo(cn, taskKey.userId);
-            if (cn == null || activityInfo == null) {
-                Log.e(TAG, "Unexpected null component name or activity info: " + cn + ", " +
-                        activityInfo);
-                return null;
-            }
-            mActivityInfoCache.put(cn, activityInfo);
-        }
-        return activityInfo;
-    }
-
-    public Drawable getIcon(Task t) {
-        Drawable cachedIcon = mIconCache.get(t.key);
-        if (cachedIcon == null) {
-            cachedIcon = createNewIconForTask(t.key, t.taskDescription, true /* returnDefault */);
-            mIconCache.put(t.key, cachedIcon);
-        }
-        return cachedIcon;
-    }
-
-    /**
-     * Returns the cached task icon if the task key is not expired, updating the cache if it is.
-     */
-    public Drawable getAndInvalidateIfModified(Task.TaskKey taskKey,
-            ActivityManager.TaskDescription td, boolean loadIfNotCached) {
-        // Return the cached activity icon if it exists
-        Drawable icon = mIconCache.getAndInvalidateIfModified(taskKey);
-        if (icon != null) {
-            return icon;
-        }
-
-        if (loadIfNotCached) {
-            icon = createNewIconForTask(taskKey, td, false /* returnDefault */);
-            if (icon != null) {
-                mIconCache.put(taskKey, icon);
-                return icon;
-            }
-        }
-
-        // We couldn't load any icon
-        return null;
-    }
-
-    private Drawable createNewIconForTask(Task.TaskKey taskKey,
-            ActivityManager.TaskDescription desc, boolean returnDefault) {
-        int userId = taskKey.userId;
-        Bitmap tdIcon = desc.getInMemoryIcon();
-        if (tdIcon != null) {
-            return createDrawableFromBitmap(tdIcon, userId, desc);
-        }
-        if (desc.getIconResource() != 0) {
-            try {
-                PackageManager pm = mContext.getPackageManager();
-                ApplicationInfo appInfo = pm.getApplicationInfo(taskKey.getPackageName(),
-                        MATCH_ANY_USER);
-                Resources res = pm.getResourcesForApplication(appInfo);
-                return createBadgedDrawable(res.getDrawable(desc.getIconResource(), null), userId,
-                        desc);
-            } catch (Resources.NotFoundException|PackageManager.NameNotFoundException e) {
-                Log.e(TAG, "Could not find icon drawable from resource", e);
-            }
-        }
-
-        tdIcon = ActivityManager.TaskDescription.loadTaskDescriptionIcon(
-                desc.getIconFilename(), userId);
-        if (tdIcon != null) {
-            return createDrawableFromBitmap(tdIcon, userId, desc);
-        }
-
-        // Load the icon from the activity info and cache it
-        ActivityInfo activityInfo = getAndUpdateActivityInfo(taskKey);
-        if (activityInfo != null) {
-            Drawable icon = getBadgedActivityIcon(activityInfo, userId, desc);
-            if (icon != null) {
-                return icon;
-            }
-        }
-
-        // At this point, even if we can't load the icon, we will set the default icon.
-        return returnDefault ? getDefaultIcon(userId) : null;
-    }
-
-    public abstract Drawable getDefaultIcon(int userId);
-
-    protected Drawable createDrawableFromBitmap(Bitmap icon, int userId,
-            ActivityManager.TaskDescription desc) {
-        return createBadgedDrawable(
-                new BitmapDrawable(mContext.getResources(), icon), userId, desc);
-    }
-
-    protected abstract Drawable createBadgedDrawable(Drawable icon, int userId,
-            ActivityManager.TaskDescription desc);
-
-    /**
-     * @return the activity icon for the ActivityInfo for a user, badging if necessary.
-     */
-    protected abstract Drawable getBadgedActivityIcon(ActivityInfo info, int userId,
-            ActivityManager.TaskDescription desc);
-
-    public static class DefaultIconLoader extends IconLoader {
-
-        private final BitmapDrawable mDefaultIcon;
-        private final IconDrawableFactory mDrawableFactory;
-
-        public DefaultIconLoader(Context context, TaskKeyLruCache<Drawable> iconCache,
-                LruCache<ComponentName, ActivityInfo> activityInfoCache) {
-            super(context, iconCache, activityInfoCache);
-
-            // Create the default assets
-            Bitmap icon = Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8);
-            icon.eraseColor(0);
-            mDefaultIcon = new BitmapDrawable(context.getResources(), icon);
-            mDrawableFactory = IconDrawableFactory.newInstance(context);
-        }
-
-        @Override
-        public Drawable getDefaultIcon(int userId) {
-            return mDefaultIcon;
-        }
-
-        @Override
-        protected Drawable createBadgedDrawable(Drawable icon, int userId,
-                ActivityManager.TaskDescription desc) {
-            if (userId != UserHandle.myUserId()) {
-                icon = mContext.getPackageManager().getUserBadgedIcon(icon, new UserHandle(userId));
-            }
-            return icon;
-        }
-
-        @Override
-        protected Drawable getBadgedActivityIcon(ActivityInfo info, int userId,
-                ActivityManager.TaskDescription desc) {
-            return mDrawableFactory.getBadgedIcon(info, info.applicationInfo, userId);
-        }
-    }
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyCache.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyCache.java
deleted file mode 100644
index 8a244bf..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyCache.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2017 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.shared.recents.model;
-
-import android.util.Log;
-import android.util.SparseArray;
-
-import com.android.systemui.shared.recents.model.Task.TaskKey;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-/**
- * Base class for both strong and LRU task key cache.
- */
-public abstract class TaskKeyCache<V> {
-
-    protected static final String TAG = "TaskKeyCache";
-
-    protected final SparseArray<TaskKey> mKeys = new SparseArray<>();
-
-    /**
-     * Gets a specific entry in the cache with the specified key, regardless of whether the cached
-     * value is valid or not.
-     */
-    public final synchronized V get(TaskKey key) {
-        return getCacheEntry(key.id);
-    }
-
-    /**
-     * Returns the value only if the key is valid (has not been updated since the last time it was
-     * in the cache)
-     */
-    public final synchronized V getAndInvalidateIfModified(TaskKey key) {
-        TaskKey lastKey = mKeys.get(key.id);
-        if (lastKey != null) {
-            if ((lastKey.windowingMode != key.windowingMode) ||
-                    (lastKey.lastActiveTime != key.lastActiveTime)) {
-                // The task has updated (been made active since the last time it was put into the
-                // LRU cache) or the stack id for the task has changed, invalidate that cache item
-                remove(key);
-                return null;
-            }
-        }
-        // Either the task does not exist in the cache, or the last active time is the same as
-        // the key specified, so return what is in the cache
-        return getCacheEntry(key.id);
-    }
-
-    /** Puts an entry in the cache for a specific key. */
-    public final synchronized void put(TaskKey key, V value) {
-        if (key == null || value == null) {
-            Log.e(TAG, "Unexpected null key or value: " + key + ", " + value);
-            return;
-        }
-        mKeys.put(key.id, key);
-        putCacheEntry(key.id, value);
-    }
-
-
-    /** Removes a cache entry for a specific key. */
-    public final synchronized void remove(TaskKey key) {
-        // Remove the key after the cache value because we need it to make the callback
-        removeCacheEntry(key.id);
-        mKeys.remove(key.id);
-    }
-
-    /** @return {@link Collection} of {@link TaskKey} */
-    public Collection<TaskKey> getValues() {
-        Collection<TaskKey> result = new ArrayList<>(mKeys.size());
-        for (int i = 0; i < mKeys.size(); i++) {
-            result.add(mKeys.valueAt(i));
-        }
-        return result;
-    }
-
-    /** Removes all the entries in the cache. */
-    public final synchronized void evictAll() {
-        evictAllCache();
-        mKeys.clear();
-    }
-
-    protected abstract V getCacheEntry(int id);
-    protected abstract void putCacheEntry(int id, V value);
-    protected abstract void removeCacheEntry(int id);
-    protected abstract void evictAllCache();
-}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java b/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java
deleted file mode 100644
index bc57b08..0000000
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/recents/model/TaskKeyLruCache.java
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2014 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.shared.recents.model;
-
-import android.util.LruCache;
-
-import com.android.systemui.shared.recents.model.Task.TaskKey;
-
-import java.io.PrintWriter;
-
-/**
- * A mapping of {@link TaskKey} to value, with additional LRU functionality where the least
- * recently referenced key/values will be evicted as more values than the given cache size are
- * inserted.
- *
- * In addition, this also allows the caller to invalidate cached values for keys that have since
- * changed.
- */
-public class TaskKeyLruCache<V> extends TaskKeyCache<V> {
-
-    public interface EvictionCallback {
-        void onEntryEvicted(TaskKey key);
-    }
-
-    private final LruCache<Integer, V> mCache;
-    private final EvictionCallback mEvictionCallback;
-
-    public TaskKeyLruCache(int cacheSize) {
-        this(cacheSize, null);
-    }
-
-    public TaskKeyLruCache(int cacheSize, EvictionCallback evictionCallback) {
-        mEvictionCallback = evictionCallback;
-        mCache = new LruCache<Integer, V>(cacheSize) {
-
-            @Override
-            protected void entryRemoved(boolean evicted, Integer taskId, V oldV, V newV) {
-                if (mEvictionCallback != null && evicted) {
-                    mEvictionCallback.onEntryEvicted(mKeys.get(taskId));
-                }
-
-                // Only remove from mKeys on cache remove, not a cache update.
-                if (newV == null) {
-                    mKeys.remove(taskId);
-                }
-            }
-        };
-    }
-
-    /** Trims the cache to a specific size */
-    public final void trimToSize(int cacheSize) {
-        mCache.trimToSize(cacheSize);
-    }
-
-    public void dump(String prefix, PrintWriter writer) {
-        String innerPrefix = prefix + "  ";
-
-        writer.print(prefix); writer.print(TAG);
-        writer.print(" numEntries="); writer.print(mKeys.size());
-        writer.println();
-        int keyCount = mKeys.size();
-        for (int i = 0; i < keyCount; i++) {
-            writer.print(innerPrefix); writer.println(mKeys.get(mKeys.keyAt(i)));
-        }
-    }
-
-    @Override
-    protected V getCacheEntry(int id) {
-        return mCache.get(id);
-    }
-
-    @Override
-    protected void putCacheEntry(int id, V value) {
-        mCache.put(id, value);
-    }
-
-    @Override
-    protected void removeCacheEntry(int id) {
-        mCache.remove(id);
-    }
-
-    @Override
-    protected void evictAllCache() {
-        mCache.evictAll();
-    }
-}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ConfigurationCompat.java
similarity index 65%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to packages/SystemUI/shared/src/com/android/systemui/shared/system/ConfigurationCompat.java
index f5e2405..d1c77a6 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/system/ConfigurationCompat.java
@@ -13,7 +13,16 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package com.android.systemui.shared.system;
 
-package android.app.timedetector;
+import android.content.res.Configuration;
 
-parcelable PhoneTimeSuggestion;
+/**
+ * Wraps the Configuration to access the window configuration.
+ */
+public class ConfigurationCompat {
+
+    public static int getWindowConfigurationRotation(Configuration c) {
+        return c.windowConfiguration.getRotation();
+    }
+}
diff --git a/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java b/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java
index 557845c..356e0ca 100644
--- a/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java
+++ b/packages/SystemUI/shared/src/com/android/systemui/shared/tracing/FrameProtoTracer.java
@@ -40,7 +40,7 @@
  * @param <R> The proto class type of the entry root proto in the buffer
  */
 public class FrameProtoTracer<P, S extends P, T extends P, R>
-        implements TraceBuffer.ProtoProvider<P, S, T>, Choreographer.FrameCallback {
+        implements Choreographer.FrameCallback {
 
     private static final String TAG = "FrameProtoTracer";
     private static final int BUFFER_CAPACITY = 1024 * 1024;
@@ -57,6 +57,25 @@
     private volatile boolean mEnabled;
     private boolean mFrameScheduled;
 
+    private final TraceBuffer.ProtoProvider<P, S, T> mProvider =
+            new TraceBuffer.ProtoProvider<P, S, T>() {
+        @Override
+        public int getItemSize(P proto) {
+            return mParams.getProtoSize(proto);
+        }
+
+        @Override
+        public byte[] getBytes(P proto) {
+            return mParams.getProtoBytes(proto);
+        }
+
+        @Override
+        public void write(S encapsulatingProto, Queue<T> buffer, OutputStream os)
+                throws IOException {
+            os.write(mParams.serializeEncapsulatingProto(encapsulatingProto, buffer));
+        }
+    };
+
     public interface ProtoTraceParams<P, S, T, R> {
         File getTraceFile();
         S getEncapsulatingTraceProto();
@@ -68,7 +87,7 @@
 
     public FrameProtoTracer(ProtoTraceParams<P, S, T, R> params) {
         mParams = params;
-        mBuffer = new TraceBuffer<>(BUFFER_CAPACITY, this, new Consumer<T>() {
+        mBuffer = new TraceBuffer<>(BUFFER_CAPACITY, mProvider, new Consumer<T>() {
             @Override
             public void accept(T t) {
                 onProtoDequeued(t);
@@ -78,21 +97,6 @@
         mChoreographer = Choreographer.getMainThreadInstance();
     }
 
-    @Override
-    public int getItemSize(P proto) {
-        return mParams.getProtoSize(proto);
-    }
-
-    @Override
-    public byte[] getBytes(P proto) {
-        return mParams.getProtoBytes(proto);
-    }
-
-    @Override
-    public void write(S encapsulatingProto, Queue<T> buffer, OutputStream os) throws IOException {
-        os.write(mParams.serializeEncapsulatingProto(encapsulatingProto, buffer));
-    }
-
     public void start() {
         synchronized (mLock) {
             if (mEnabled) {
diff --git a/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java b/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java
index b2423b9..85724a9 100644
--- a/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java
+++ b/packages/SystemUI/src/com/android/keyguard/AdminSecondaryLockScreenController.java
@@ -27,7 +27,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Log;
-import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
 import android.view.SurfaceHolder;
 import android.view.SurfaceView;
 import android.view.ViewGroup;
@@ -47,7 +47,6 @@
     private Handler mHandler;
     private IKeyguardClient mClient;
     private KeyguardSecurityCallback mKeyguardCallback;
-    private SurfaceControl.Transaction mTransaction;
 
     private final ServiceConnection mConnection = new ServiceConnection() {
         @Override
@@ -84,13 +83,13 @@
         }
 
         @Override
-        public void onSurfaceControlCreated(@Nullable SurfaceControl remoteSurfaceControl) {
+        public void onRemoteContentReady(
+                @Nullable SurfaceControlViewHost.SurfacePackage surfacePackage) {
             if (mHandler != null) {
                 mHandler.removeCallbacksAndMessages(null);
             }
-            if (remoteSurfaceControl != null) {
-                mTransaction.reparent(remoteSurfaceControl, mView.getSurfaceControl())
-                    .apply();
+            if (surfacePackage != null) {
+                mView.setChildSurfacePackage(surfacePackage);
             } else {
                 dismiss(KeyguardUpdateMonitor.getCurrentUser());
             }
@@ -138,11 +137,10 @@
 
     public AdminSecondaryLockScreenController(Context context, ViewGroup parent,
             KeyguardUpdateMonitor updateMonitor, KeyguardSecurityCallback callback,
-            Handler handler, SurfaceControl.Transaction transaction) {
+            Handler handler) {
         mContext = context;
         mHandler = handler;
         mParent = parent;
-        mTransaction = transaction;
         mUpdateMonitor = updateMonitor;
         mKeyguardCallback = callback;
         mView = new AdminSecurityView(mContext, mSurfaceHolderCallback);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java
index ed1cd81..d5a08dd 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardHostView.java
@@ -409,15 +409,6 @@
         mAudioManager.dispatchMediaKeyEvent(keyEvent);
     }
 
-    @Override
-    public void dispatchSystemUiVisibilityChanged(int visibility) {
-        super.dispatchSystemUiVisibilityChanged(visibility);
-
-        if (!(mContext instanceof Activity)) {
-            setSystemUiVisibility(STATUS_BAR_DISABLE_BACK);
-        }
-    }
-
     /**
      * In general, we enable unlocking the insecure keyguard with the menu key. However, there are
      * some cases where we wish to disable it, notably when the menu button placement or technology
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
index ae78726..ba8a1a9 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSecurityContainer.java
@@ -15,7 +15,12 @@
  */
 package com.android.keyguard;
 
+import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
+import static android.view.ViewRootImpl.sNewInsetsMode;
+import static android.view.WindowInsets.Type.ime;
+import static android.view.WindowInsets.Type.systemBars;
 import static com.android.systemui.DejankUtils.whitelistIpcs;
+import static java.lang.Integer.max;
 
 import android.app.Activity;
 import android.app.AlertDialog;
@@ -34,10 +39,10 @@
 import android.util.TypedValue;
 import android.view.LayoutInflater;
 import android.view.MotionEvent;
-import android.view.SurfaceControl;
 import android.view.VelocityTracker;
 import android.view.View;
 import android.view.ViewConfiguration;
+import android.view.WindowInsets;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 
@@ -143,8 +148,7 @@
         mViewConfiguration = ViewConfiguration.get(context);
         mKeyguardStateController = Dependency.get(KeyguardStateController.class);
         mSecondaryLockScreenController = new AdminSecondaryLockScreenController(context, this,
-                mUpdateMonitor, mCallback, new Handler(Looper.myLooper()),
-                new SurfaceControl.Transaction());
+                mUpdateMonitor, mCallback, new Handler(Looper.myLooper()));
     }
 
     public void setSecurityCallback(SecurityCallback callback) {
@@ -339,13 +343,22 @@
     }
 
     @Override
-    protected boolean fitSystemWindows(Rect insets) {
+    public WindowInsets onApplyWindowInsets(WindowInsets insets) {
+
         // Consume bottom insets because we're setting the padding locally (for IME and navbar.)
-        setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), insets.bottom);
-        insets.bottom = 0;
-        return false;
+        int inset;
+        if (sNewInsetsMode == NEW_INSETS_MODE_FULL) {
+            int bottomInset = insets.getInsetsIgnoringVisibility(systemBars()).bottom;
+            int imeInset = insets.getInsets(ime()).bottom;
+            inset = max(bottomInset, imeInset);
+        } else {
+            inset = insets.getSystemWindowInsetBottom();
+        }
+        setPadding(getPaddingLeft(), getPaddingTop(), getPaddingRight(), inset);
+        return insets.inset(0, 0, 0, inset);
     }
 
+
     private void showDialog(String title, String message) {
         if (mAlertDialog != null) {
             mAlertDialog.dismiss();
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
index f61f585..f48210c 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardSliceView.java
@@ -42,7 +42,6 @@
 import android.util.TypedValue;
 import android.view.View;
 import android.view.animation.Animation;
-import android.widget.Button;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -251,9 +250,9 @@
             SliceItem item = rc.getSliceItem();
             final Uri itemTag = item.getSlice().getUri();
             // Try to reuse the view if already exists in the layout
-            KeyguardSliceButton button = mRow.findViewWithTag(itemTag);
+            KeyguardSliceTextView button = mRow.findViewWithTag(itemTag);
             if (button == null) {
-                button = new KeyguardSliceButton(mContext);
+                button = new KeyguardSliceTextView(mContext);
                 button.setTextColor(blendedColor);
                 button.setTag(itemTag);
                 final int viewIndex = i - (mHasHeader ? 1 : 0);
@@ -316,8 +315,8 @@
         int childCount = mRow.getChildCount();
         for (int i = 0; i < childCount; i++) {
             View v = mRow.getChildAt(i);
-            if (v instanceof Button) {
-                ((Button) v).setTextColor(blendedColor);
+            if (v instanceof TextView) {
+                ((TextView) v).setTextColor(blendedColor);
             }
         }
     }
@@ -500,8 +499,8 @@
             int childCount = getChildCount();
             for (int i = 0; i < childCount; i++) {
                 View child = getChildAt(i);
-                if (child instanceof KeyguardSliceButton) {
-                    ((KeyguardSliceButton) child).setMaxWidth(width / childCount);
+                if (child instanceof KeyguardSliceTextView) {
+                    ((KeyguardSliceTextView) child).setMaxWidth(width / childCount);
                 }
             }
             super.onMeasure(widthMeasureSpec, heightMeasureSpec);
@@ -527,13 +526,13 @@
      * Representation of an item that appears under the clock on main keyguard message.
      */
     @VisibleForTesting
-    static class KeyguardSliceButton extends Button implements
+    static class KeyguardSliceTextView extends TextView implements
             ConfigurationController.ConfigurationListener {
 
         @StyleRes
         private static int sStyleId = R.style.TextAppearance_Keyguard_Secondary;
 
-        public KeyguardSliceButton(Context context) {
+        KeyguardSliceTextView(Context context) {
             super(context, null /* attrs */, 0 /* styleAttr */, sStyleId);
             onDensityOrFontScaleChanged();
             setEllipsize(TruncateAt.END);
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
index 58a6c17..e5f6d3c 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitor.java
@@ -21,15 +21,7 @@
 import static android.content.Intent.ACTION_USER_REMOVED;
 import static android.content.Intent.ACTION_USER_STOPPED;
 import static android.content.Intent.ACTION_USER_UNLOCKED;
-import static android.os.BatteryManager.BATTERY_HEALTH_UNKNOWN;
-import static android.os.BatteryManager.BATTERY_STATUS_FULL;
 import static android.os.BatteryManager.BATTERY_STATUS_UNKNOWN;
-import static android.os.BatteryManager.EXTRA_HEALTH;
-import static android.os.BatteryManager.EXTRA_LEVEL;
-import static android.os.BatteryManager.EXTRA_MAX_CHARGING_CURRENT;
-import static android.os.BatteryManager.EXTRA_MAX_CHARGING_VOLTAGE;
-import static android.os.BatteryManager.EXTRA_PLUGGED;
-import static android.os.BatteryManager.EXTRA_STATUS;
 import static android.telephony.PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE;
 import static android.telephony.TelephonyManager.MODEM_COUNT_DUAL_MODEM;
 
@@ -67,7 +59,6 @@
 import android.hardware.fingerprint.FingerprintManager.AuthenticationCallback;
 import android.hardware.fingerprint.FingerprintManager.AuthenticationResult;
 import android.media.AudioManager;
-import android.os.BatteryManager;
 import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IRemoteCallback;
@@ -94,6 +85,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.settingslib.WirelessUtils;
+import com.android.settingslib.fuelgauge.BatteryStatus;
 import com.android.systemui.DejankUtils;
 import com.android.systemui.DumpController;
 import com.android.systemui.Dumpable;
@@ -371,7 +363,8 @@
         checkIsHandlerThread();
         if (DEBUG_SIM_STATES) {
             Log.v(TAG, "onSubscriptionInfoChanged()");
-            List<SubscriptionInfo> sil = mSubscriptionManager.getActiveSubscriptionInfoList(false);
+            List<SubscriptionInfo> sil = mSubscriptionManager
+                    .getActiveAndHiddenSubscriptionInfoList();
             if (sil != null) {
                 for (SubscriptionInfo subInfo : sil) {
                     Log.v(TAG, "SubInfo:" + subInfo);
@@ -425,10 +418,10 @@
     public List<SubscriptionInfo> getSubscriptionInfo(boolean forceReload) {
         List<SubscriptionInfo> sil = mSubscriptionInfo;
         if (sil == null || forceReload) {
-            sil = mSubscriptionManager.getActiveSubscriptionInfoList(false);
+            sil = mSubscriptionManager.getActiveAndHiddenSubscriptionInfoList();
         }
         if (sil == null) {
-            // getActiveSubscriptionInfoList was null callers expect an empty list.
+            // getActiveAndHiddenSubscriptionInfoList was null callers expect an empty list.
             mSubscriptionInfo = new ArrayList<SubscriptionInfo>();
         } else {
             mSubscriptionInfo = sil;
@@ -1058,29 +1051,9 @@
                         MSG_TIMEZONE_UPDATE, intent.getStringExtra("time-zone"));
                 mHandler.sendMessage(msg);
             } else if (Intent.ACTION_BATTERY_CHANGED.equals(action)) {
-                final int status = intent.getIntExtra(EXTRA_STATUS, BATTERY_STATUS_UNKNOWN);
-                final int plugged = intent.getIntExtra(EXTRA_PLUGGED, 0);
-                final int level = intent.getIntExtra(EXTRA_LEVEL, 0);
-                final int health = intent.getIntExtra(EXTRA_HEALTH, BATTERY_HEALTH_UNKNOWN);
 
-                final int maxChargingMicroAmp = intent.getIntExtra(EXTRA_MAX_CHARGING_CURRENT, -1);
-                int maxChargingMicroVolt = intent.getIntExtra(EXTRA_MAX_CHARGING_VOLTAGE, -1);
-                final int maxChargingMicroWatt;
-
-                if (maxChargingMicroVolt <= 0) {
-                    maxChargingMicroVolt = DEFAULT_CHARGING_VOLTAGE_MICRO_VOLT;
-                }
-                if (maxChargingMicroAmp > 0) {
-                    // Calculating muW = muA * muV / (10^6 mu^2 / mu); splitting up the divisor
-                    // to maintain precision equally on both factors.
-                    maxChargingMicroWatt = (maxChargingMicroAmp / 1000)
-                            * (maxChargingMicroVolt / 1000);
-                } else {
-                    maxChargingMicroWatt = -1;
-                }
                 final Message msg = mHandler.obtainMessage(
-                        MSG_BATTERY_UPDATE, new BatteryStatus(status, level, plugged, health,
-                                maxChargingMicroWatt));
+                        MSG_BATTERY_UPDATE, new BatteryStatus(intent));
                 mHandler.sendMessage(msg);
             } else if (Intent.ACTION_SIM_STATE_CHANGED.equals(action)) {
                 SimData args = SimData.fromIntent(intent);
@@ -1322,82 +1295,6 @@
         }
     }
 
-    public static class BatteryStatus {
-        public static final int CHARGING_UNKNOWN = -1;
-        public static final int CHARGING_SLOWLY = 0;
-        public static final int CHARGING_REGULAR = 1;
-        public static final int CHARGING_FAST = 2;
-
-        public final int status;
-        public final int level;
-        public final int plugged;
-        public final int health;
-        public final int maxChargingWattage;
-
-        public BatteryStatus(int status, int level, int plugged, int health,
-                int maxChargingWattage) {
-            this.status = status;
-            this.level = level;
-            this.plugged = plugged;
-            this.health = health;
-            this.maxChargingWattage = maxChargingWattage;
-        }
-
-        /**
-         * Determine whether the device is plugged in (USB, power, or wireless).
-         *
-         * @return true if the device is plugged in.
-         */
-        public boolean isPluggedIn() {
-            return plugged == BatteryManager.BATTERY_PLUGGED_AC
-                    || plugged == BatteryManager.BATTERY_PLUGGED_USB
-                    || plugged == BatteryManager.BATTERY_PLUGGED_WIRELESS;
-        }
-
-        /**
-         * Determine whether the device is plugged in (USB, power).
-         *
-         * @return true if the device is plugged in wired (as opposed to wireless)
-         */
-        public boolean isPluggedInWired() {
-            return plugged == BatteryManager.BATTERY_PLUGGED_AC
-                    || plugged == BatteryManager.BATTERY_PLUGGED_USB;
-        }
-
-        /**
-         * Whether or not the device is charged. Note that some devices never return 100% for
-         * battery level, so this allows either battery level or status to determine if the
-         * battery is charged.
-         *
-         * @return true if the device is charged
-         */
-        public boolean isCharged() {
-            return status == BATTERY_STATUS_FULL || level >= 100;
-        }
-
-        /**
-         * Whether battery is low and needs to be charged.
-         *
-         * @return true if battery is low
-         */
-        public boolean isBatteryLow() {
-            return level < LOW_BATTERY_THRESHOLD;
-        }
-
-        public final int getChargingSpeed(int slowThreshold, int fastThreshold) {
-            return maxChargingWattage <= 0 ? CHARGING_UNKNOWN :
-                    maxChargingWattage < slowThreshold ? CHARGING_SLOWLY :
-                            maxChargingWattage > fastThreshold ? CHARGING_FAST :
-                                    CHARGING_REGULAR;
-        }
-
-        @Override
-        public String toString() {
-            return "BatteryStatus{status=" + status + ",level=" + level + ",plugged=" + plugged
-                    + ",health=" + health + ",maxChargingWattage=" + maxChargingWattage + "}";
-        }
-    }
-
     public static class StrongAuthTracker extends LockPatternUtils.StrongAuthTracker {
         private final Consumer<Integer> mStrongAuthRequiredChangedCallback;
 
@@ -1882,9 +1779,8 @@
         final boolean awakeKeyguard = mKeyguardIsVisible && mDeviceInteractive && !mGoingToSleep;
         final int user = getCurrentUser();
         final int strongAuth = mStrongAuthTracker.getStrongAuthForUser(user);
-        final boolean isLockOutOrLockDown =
-                containsFlag(strongAuth, STRONG_AUTH_REQUIRED_AFTER_LOCKOUT)
-                        || containsFlag(strongAuth, STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW)
+        final boolean isLockDown =
+                containsFlag(strongAuth, STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW)
                         || containsFlag(strongAuth, STRONG_AUTH_REQUIRED_AFTER_USER_LOCKDOWN);
         final boolean isEncryptedOrTimedOut =
                 containsFlag(strongAuth, STRONG_AUTH_REQUIRED_AFTER_BOOT)
@@ -1898,9 +1794,9 @@
         boolean becauseCannotSkipBouncer = !getUserCanSkipBouncer(user) || canBypass;
 
         // Scan even when encrypted or timeout to show a preemptive bouncer when bypassing.
-        // Lockout/lockdown modes shouldn't scan, since they are more explicit.
+        // Lock-down mode shouldn't scan, since it is more explicit.
         boolean strongAuthAllowsScanning = (!isEncryptedOrTimedOut || canBypass && !mBouncer)
-                && !isLockOutOrLockDown;
+                && !isLockDown;
 
         // Only listen if this KeyguardUpdateMonitor belongs to the primary user. There is an
         // instance of KeyguardUpdateMonitor for each user but KeyguardUpdateMonitor is user-aware.
@@ -2640,9 +2536,9 @@
      */
     private boolean refreshSimState(int subId, int slotId) {
         final TelephonyManager tele =
-            (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+                (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
         int state = (tele != null) ?
-            tele.getSimState(slotId) : TelephonyManager.SIM_STATE_UNKNOWN;
+                tele.getSimState(slotId) : TelephonyManager.SIM_STATE_UNKNOWN;
         SimData data = mSimDatas.get(subId);
         final boolean changed;
         if (data == null) {
diff --git a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
index 8e87b7a..49f72a9 100644
--- a/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
+++ b/packages/SystemUI/src/com/android/keyguard/KeyguardUpdateMonitorCallback.java
@@ -23,6 +23,7 @@
 import android.telephony.TelephonyManager;
 import android.view.WindowManagerPolicyConstants;
 
+import com.android.settingslib.fuelgauge.BatteryStatus;
 import com.android.systemui.statusbar.KeyguardIndicationController;
 
 import java.util.TimeZone;
@@ -42,7 +43,7 @@
      *
      * @param status current battery status
      */
-    public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) { }
+    public void onRefreshBatteryInfo(BatteryStatus status) { }
 
     /**
      * Called once per minute or when the time changes.
diff --git a/packages/SystemUI/src/com/android/systemui/DejankUtils.java b/packages/SystemUI/src/com/android/systemui/DejankUtils.java
index 97578e1..3fce55f 100644
--- a/packages/SystemUI/src/com/android/systemui/DejankUtils.java
+++ b/packages/SystemUI/src/com/android/systemui/DejankUtils.java
@@ -61,19 +61,21 @@
                         || !isMainThread() || sTemporarilyIgnoreStrictMode) {
                     return null;
                 }
+            }
 
-                try {
-                    String description = binder.getInterfaceDescriptor();
+            try {
+                String description = binder.getInterfaceDescriptor();
+                synchronized (sLock) {
                     if (sWhitelistedFrameworkClasses.contains(description)) {
                         return null;
                     }
-                } catch (RemoteException e) {
-                    e.printStackTrace();
                 }
-
-                StrictMode.noteSlowCall("IPC detected on critical path: " + sBlockingIpcs.peek());
-                return null;
+            } catch (RemoteException e) {
+                e.printStackTrace();
             }
+
+            StrictMode.noteSlowCall("IPC detected on critical path: " + sBlockingIpcs.peek());
+            return null;
         }
 
         @Override
@@ -126,9 +128,11 @@
         if (STRICT_MODE_ENABLED && sBlockingIpcs.empty()) {
             synchronized (sLock) {
                 sBlockingIpcs.push("detectBlockingIpcs");
-                try {
-                    runnable.run();
-                } finally {
+            }
+            try {
+                runnable.run();
+            } finally {
+                synchronized (sLock) {
                     sBlockingIpcs.pop();
                 }
             }
@@ -177,9 +181,11 @@
         if (STRICT_MODE_ENABLED && !sTemporarilyIgnoreStrictMode) {
             synchronized (sLock) {
                 sTemporarilyIgnoreStrictMode = true;
-                try {
-                    runnable.run();
-                } finally {
+            }
+            try {
+                runnable.run();
+            } finally {
+                synchronized (sLock) {
                     sTemporarilyIgnoreStrictMode = false;
                 }
             }
@@ -196,14 +202,16 @@
         if (STRICT_MODE_ENABLED && !sTemporarilyIgnoreStrictMode) {
             synchronized (sLock) {
                 sTemporarilyIgnoreStrictMode = true;
-                final T val;
-                try {
-                    val = supplier.get();
-                } finally {
+            }
+            final T val;
+            try {
+                val = supplier.get();
+            } finally {
+                synchronized (sLock) {
                     sTemporarilyIgnoreStrictMode = false;
                 }
-                return val;
             }
+            return val;
         } else {
             return supplier.get();
         }
diff --git a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
index eab9706..924d16d 100644
--- a/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
+++ b/packages/SystemUI/src/com/android/systemui/ForegroundServiceNotificationListener.java
@@ -89,7 +89,7 @@
             }
 
             @Override
-            public void onEntryRemoved(NotificationEntry entry, int reason, boolean removedByUser) {
+            public void onEntryRemoved(NotificationEntry entry, int reason) {
                 removeNotification(entry.getSbn());
             }
         });
diff --git a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
index e50d08c..03bc738 100644
--- a/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
+++ b/packages/SystemUI/src/com/android/systemui/ImageWallpaper.java
@@ -18,12 +18,14 @@
 
 import android.app.ActivityManager;
 import android.content.Context;
+import android.content.res.Configuration;
 import android.graphics.Rect;
 import android.os.HandlerThread;
 import android.os.Trace;
 import android.service.wallpaper.WallpaperService;
 import android.util.Log;
 import android.util.Size;
+import android.view.DisplayInfo;
 import android.view.SurfaceHolder;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -93,14 +95,20 @@
         private StatusBarStateController mController;
         private final Runnable mFinishRenderingTask = this::finishRendering;
         private final boolean mNeedTransition;
+        private boolean mShouldStopTransition;
+        @VisibleForTesting
+        final boolean mIsHighEndGfx;
+        private final boolean mDisplayNeedsBlanking;
+        private final DisplayInfo mDisplayInfo = new DisplayInfo();
         private final Object mMonitor = new Object();
         private boolean mNeedRedraw;
         // This variable can only be accessed in synchronized block.
         private boolean mWaitingForRendering;
 
         GLEngine(Context context, DozeParameters dozeParameters) {
-            mNeedTransition = ActivityManager.isHighEndGfx()
-                    && !dozeParameters.getDisplayNeedsBlanking();
+            mIsHighEndGfx = ActivityManager.isHighEndGfx();
+            mDisplayNeedsBlanking = dozeParameters.getDisplayNeedsBlanking();
+            mNeedTransition = mIsHighEndGfx && !mDisplayNeedsBlanking;
 
             // We will preserve EGL context when we are in lock screen or aod
             // to avoid janking in following transition, we need to release when back to home.
@@ -112,14 +120,23 @@
 
         @Override
         public void onCreate(SurfaceHolder surfaceHolder) {
-            mEglHelper = new EglHelper();
+            mEglHelper = getEglHelperInstance();
             // Deferred init renderer because we need to get wallpaper by display context.
-            mRenderer = new ImageWallpaperRenderer(getDisplayContext(), this /* SurfaceProxy */);
+            mRenderer = getRendererInstance();
+            getDisplayContext().getDisplay().getDisplayInfo(mDisplayInfo);
             setFixedSizeAllowed(true);
             setOffsetNotificationsEnabled(true);
             updateSurfaceSize();
         }
 
+        EglHelper getEglHelperInstance() {
+            return new EglHelper();
+        }
+
+        ImageWallpaperRenderer getRendererInstance() {
+            return new ImageWallpaperRenderer(getDisplayContext(), this /* SurfaceProxy */);
+        }
+
         private void updateSurfaceSize() {
             SurfaceHolder holder = getSurfaceHolder();
             Size frameSize = mRenderer.reportSurfaceSize();
@@ -128,6 +145,26 @@
             holder.setFixedSize(width, height);
         }
 
+        /**
+         * Check if necessary to stop transition with current wallpaper on this device. <br/>
+         * This should only be invoked after {@link #onSurfaceCreated(SurfaceHolder)}}
+         * is invoked since it needs display context and surface frame size.
+         * @return true if need to stop transition.
+         */
+        @VisibleForTesting
+        boolean checkIfShouldStopTransition() {
+            int orientation = getDisplayContext().getResources().getConfiguration().orientation;
+            Rect frame = getSurfaceHolder().getSurfaceFrame();
+            Rect display = new Rect();
+            if (orientation == Configuration.ORIENTATION_PORTRAIT) {
+                display.set(0, 0, mDisplayInfo.logicalWidth, mDisplayInfo.logicalHeight);
+            } else {
+                display.set(0, 0, mDisplayInfo.logicalHeight, mDisplayInfo.logicalWidth);
+            }
+            return mNeedTransition
+                    && (frame.width() < display.width() || frame.height() < display.height());
+        }
+
         @Override
         public void onOffsetsChanged(float xOffset, float yOffset, float xOffsetStep,
                 float yOffsetStep, int xPixelOffset, int yPixelOffset) {
@@ -137,12 +174,14 @@
         @Override
         public void onAmbientModeChanged(boolean inAmbientMode, long animationDuration) {
             if (!mNeedTransition) return;
+            final long duration = mShouldStopTransition ? 0 : animationDuration;
             if (DEBUG) {
                 Log.d(TAG, "onAmbientModeChanged: inAmbient=" + inAmbientMode
-                        + ", duration=" + animationDuration);
+                        + ", duration=" + duration
+                        + ", mShouldStopTransition=" + mShouldStopTransition);
             }
             mWorker.getThreadHandler().post(
-                    () -> mRenderer.updateAmbientMode(inAmbientMode, animationDuration));
+                    () -> mRenderer.updateAmbientMode(inAmbientMode, duration));
             if (inAmbientMode && animationDuration == 0) {
                 // This means that we are transiting from home to aod, to avoid
                 // race condition between window visibility and transition,
@@ -183,6 +222,7 @@
 
         @Override
         public void onSurfaceCreated(SurfaceHolder holder) {
+            mShouldStopTransition = checkIfShouldStopTransition();
             mWorker.getThreadHandler().post(() -> {
                 mEglHelper.init(holder, needSupportWideColorGamut());
                 mRenderer.onSurfaceCreated();
@@ -348,15 +388,13 @@
         protected void dump(String prefix, FileDescriptor fd, PrintWriter out, String[] args) {
             super.dump(prefix, fd, out, args);
             out.print(prefix); out.print("Engine="); out.println(this);
-
-            boolean isHighEndGfx = ActivityManager.isHighEndGfx();
-            out.print(prefix); out.print("isHighEndGfx="); out.println(isHighEndGfx);
-
+            out.print(prefix); out.print("isHighEndGfx="); out.println(mIsHighEndGfx);
             out.print(prefix); out.print("displayNeedsBlanking=");
-            out.println(
-                    mDozeParameters != null ? mDozeParameters.getDisplayNeedsBlanking() : "null");
-
+            out.println(mDisplayNeedsBlanking);
+            out.print(prefix); out.print("displayInfo="); out.print(mDisplayInfo);
             out.print(prefix); out.print("mNeedTransition="); out.println(mNeedTransition);
+            out.print(prefix); out.print("mShouldStopTransition=");
+            out.println(mShouldStopTransition);
             out.print(prefix); out.print("StatusBarState=");
             out.println(mController != null ? mController.getState() : "null");
 
diff --git a/packages/SystemUI/src/com/android/systemui/SysUIToast.java b/packages/SystemUI/src/com/android/systemui/SysUIToast.java
index 0f7f1be..023b74b 100644
--- a/packages/SystemUI/src/com/android/systemui/SysUIToast.java
+++ b/packages/SystemUI/src/com/android/systemui/SysUIToast.java
@@ -19,7 +19,6 @@
 
 import android.annotation.StringRes;
 import android.content.Context;
-import android.view.WindowManager;
 import android.widget.Toast;
 
 public class SysUIToast {
@@ -29,10 +28,7 @@
     }
 
     public static Toast makeText(Context context, CharSequence text, @Duration int duration) {
-        Toast toast = Toast.makeText(context, text, duration);
-        toast.getWindowParams().privateFlags |=
-                WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
-        return toast;
+        return Toast.makeText(context, text, duration);
     }
 
 }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/MirrorWindowControl.java b/packages/SystemUI/src/com/android/systemui/accessibility/MirrorWindowControl.java
new file mode 100644
index 0000000..e76a209
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/MirrorWindowControl.java
@@ -0,0 +1,197 @@
+/*
+ * 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.systemui.accessibility;
+
+import static android.view.WindowManager.LayoutParams;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.graphics.PixelFormat;
+import android.graphics.Point;
+import android.graphics.Rect;
+import android.os.IBinder;
+import android.util.Log;
+import android.util.MathUtils;
+import android.view.Gravity;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.WindowManager;
+
+import com.android.systemui.R;
+
+/**
+ * Contains a movable control UI to manipulate mirrored window's position, size and scale. The
+ * window type of the UI is {@link LayoutParams#TYPE_APPLICATION_SUB_PANEL} and the window type
+ * of the window token should be {@link LayoutParams#TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY} to
+ * ensure it is above all windows and won't be mirrored. It is not movable to the navigation bar.
+ */
+public abstract class MirrorWindowControl {
+    private static final String TAG = "MirrorWindowControl";
+    private static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG) | false;
+
+    /**
+     * A delegate handling a mirrored window's offset.
+     */
+    public interface MirrorWindowDelegate {
+        /**
+         * Moves the window with specified offset.
+         *
+         * @param xOffset the amount in pixels to offset the window in the X coordinate, in current
+         *                display pixels.
+         * @param yOffset the amount in pixels to offset the window in the Y coordinate, in current
+         *                display pixels.
+         */
+        void move(int xOffset, int yOffset);
+    }
+
+    protected final Context mContext;
+    private final Rect mDraggableBound = new Rect();
+    final Point mTmpPoint = new Point();
+
+    @Nullable
+    protected MirrorWindowDelegate mMirrorWindowDelegate;
+    protected View mControlsView;
+    /**
+     * The left top position of the control UI. Initialized when the control UI is visible.
+     *
+     * @see #setDefaultPosition(LayoutParams)
+     */
+    private final Point mControlPosition = new Point();
+    private final WindowManager mWindowManager;
+
+    MirrorWindowControl(Context context) {
+        mContext = context;
+        mWindowManager = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
+    }
+
+    public void setWindowDelegate(@Nullable MirrorWindowDelegate windowDelegate) {
+        mMirrorWindowDelegate = windowDelegate;
+    }
+
+    /**
+     * Shows the control UI.
+     *
+     * @param binder the window token of the
+     * {@link LayoutParams#TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY}  window.
+     */
+    public final void showControl(IBinder binder) {
+        if (mControlsView != null) {
+            Log.w(TAG, "control view is visible");
+            return;
+        }
+        final Point  viewSize = mTmpPoint;
+        mControlsView = onCreateView(LayoutInflater.from(mContext), viewSize);
+
+        final LayoutParams lp = new LayoutParams();
+        final int defaultSize = mContext.getResources().getDimensionPixelSize(
+                R.dimen.magnification_controls_size);
+        lp.width = viewSize.x <= 0 ? defaultSize : viewSize.x;
+        lp.height = viewSize.y <= 0 ? defaultSize : viewSize.y;
+        lp.token = binder;
+        setDefaultParams(lp);
+        setDefaultPosition(lp);
+        mWindowManager.addView(mControlsView, lp);
+        updateDraggableBound(lp.width, lp.height);
+    }
+
+    private void setDefaultParams(LayoutParams lp) {
+        lp.gravity = Gravity.TOP | Gravity.LEFT;
+        lp.flags = LayoutParams.FLAG_NOT_TOUCH_MODAL
+                | LayoutParams.FLAG_NOT_FOCUSABLE;
+        lp.type = LayoutParams.TYPE_APPLICATION_SUB_PANEL;
+        lp.format = PixelFormat.RGBA_8888;
+        lp.setTitle(getWindowTitle());
+    }
+
+    private void setDefaultPosition(LayoutParams layoutParams) {
+        final Point displaySize = mTmpPoint;
+        mContext.getDisplay().getSize(displaySize);
+        layoutParams.x = displaySize.x - layoutParams.width;
+        layoutParams.y = displaySize.y - layoutParams.height;
+        mControlPosition.set(layoutParams.x, layoutParams.y);
+    }
+
+    /**
+     * Removes the UI from the scene.
+     */
+    public final void destroyControl() {
+        if (mControlsView != null) {
+            mWindowManager.removeView(mControlsView);
+            mControlsView = null;
+        }
+    }
+
+    /**
+     * Moves the control view with specified offset.
+     *
+     * @param xOffset the amount in pixels to offset the UI in the X coordinate, in current
+     *                display pixels.
+     * @param yOffset the amount in pixels to offset the UI in the Y coordinate, in current
+     *                display pixels.
+     */
+    public void move(int xOffset, int yOffset) {
+        if (mControlsView == null) {
+            Log.w(TAG, "control view is not available yet or destroyed");
+            return;
+        }
+        final Point nextPosition = mTmpPoint;
+        nextPosition.set(mControlPosition.x, mControlPosition.y);
+        mTmpPoint.offset(xOffset, yOffset);
+        setPosition(mTmpPoint);
+    }
+
+    private void setPosition(Point point) {
+        constrainFrameToDraggableBound(point);
+        if (point.equals(mControlPosition)) {
+            return;
+        }
+        mControlPosition.set(point.x, point.y);
+        LayoutParams lp = (LayoutParams) mControlsView.getLayoutParams();
+        lp.x = mControlPosition.x;
+        lp.y = mControlPosition.y;
+        mWindowManager.updateViewLayout(mControlsView, lp);
+    }
+
+    private void constrainFrameToDraggableBound(Point point) {
+        point.x = MathUtils.constrain(point.x, mDraggableBound.left, mDraggableBound.right);
+        point.y = MathUtils.constrain(point.y, mDraggableBound.top, mDraggableBound.bottom);
+    }
+
+    private void updateDraggableBound(int viewWidth, int viewHeight) {
+        final Point size = mTmpPoint;
+        mContext.getDisplay().getSize(size);
+        mDraggableBound.set(0, 0, size.x - viewWidth, size.y - viewHeight);
+        if (DBG) {
+            Log.d(TAG, "updateDraggableBound :" + mDraggableBound);
+        }
+    }
+
+    abstract String getWindowTitle();
+
+    /**
+     * Called when the UI is going to show.
+     *
+     * @param inflater The LayoutInflater object used to inflate the view.
+     * @param viewSize The {@link Point} to specify view's width with {@link Point#x)} and height
+     *                with {@link Point#y)} .The value should be greater than 0, otherwise will
+     *                 fall back to the default size.
+     * @return the View for the control's UI.
+     */
+    @NonNull
+    abstract View onCreateView(@NonNull LayoutInflater inflater, @NonNull Point viewSize);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/SimpleMirrorWindowControl.java b/packages/SystemUI/src/com/android/systemui/accessibility/SimpleMirrorWindowControl.java
new file mode 100644
index 0000000..2ba2bb6
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/SimpleMirrorWindowControl.java
@@ -0,0 +1,221 @@
+/*
+ * 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.systemui.accessibility;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.os.Handler;
+import android.util.Log;
+import android.view.LayoutInflater;
+import android.view.MotionEvent;
+import android.view.View;
+
+import com.android.systemui.R;
+
+/**
+ * A basic control to move the mirror window.
+ */
+class SimpleMirrorWindowControl extends MirrorWindowControl implements View.OnClickListener,
+        View.OnTouchListener, View.OnLongClickListener {
+
+    private static final String TAG = "SimpleMirrorWindowControl";
+    private static final int MOVE_FRAME_DURATION_MS = 100;
+    private final int mMoveFrameAmountShort;
+    private final int mMoveFrameAmountLong;
+
+    private boolean mIsDragState;
+    private boolean mShouldSetTouchStart;
+
+    @Nullable private MoveWindowTask mMoveWindowTask;
+    private PointF mLastDrag = new PointF();
+    private final Handler mHandler;
+
+    SimpleMirrorWindowControl(Context context, Handler handler) {
+        super(context);
+        mHandler = handler;
+        final Resources resource = context.getResources();
+        mMoveFrameAmountShort = resource.getDimensionPixelSize(
+                R.dimen.magnification_frame_move_short);
+        mMoveFrameAmountLong = resource.getDimensionPixelSize(
+                R.dimen.magnification_frame_move_long);
+    }
+
+    @Override
+    String getWindowTitle() {
+        return mContext.getString(R.string.magnification_controls_title);
+    }
+
+    @Override
+    View onCreateView(LayoutInflater layoutInflater, Point viewSize) {
+        final View view = layoutInflater.inflate(R.layout.magnifier_controllers, null);
+        final View leftControl = view.findViewById(R.id.left_control);
+        final View upControl = view.findViewById(R.id.up_control);
+        final View rightControl = view.findViewById(R.id.right_control);
+        final View bottomControl = view.findViewById(R.id.down_control);
+
+        leftControl.setOnClickListener(this);
+        upControl.setOnClickListener(this);
+        rightControl.setOnClickListener(this);
+        bottomControl.setOnClickListener(this);
+
+        leftControl.setOnLongClickListener(this);
+        upControl.setOnLongClickListener(this);
+        rightControl.setOnLongClickListener(this);
+        bottomControl.setOnLongClickListener(this);
+
+        leftControl.setOnTouchListener(this);
+        upControl.setOnTouchListener(this);
+        rightControl.setOnTouchListener(this);
+        bottomControl.setOnTouchListener(this);
+
+        view.setOnTouchListener(this);
+        view.setOnLongClickListener(this::onViewRootLongClick);
+        return view;
+    }
+
+    private Point findOffset(View v, int moveFrameAmount) {
+        final Point offset = mTmpPoint;
+        offset.set(0, 0);
+        if (v.getId() == R.id.left_control) {
+            mTmpPoint.x = -moveFrameAmount;
+        } else if (v.getId() == R.id.up_control) {
+            mTmpPoint.y = -moveFrameAmount;
+        } else if (v.getId() == R.id.right_control) {
+            mTmpPoint.x = moveFrameAmount;
+        } else if (v.getId() == R.id.down_control) {
+            mTmpPoint.y = moveFrameAmount;
+        } else {
+            Log.w(TAG, "findOffset move is zero ");
+        }
+        return mTmpPoint;
+    }
+
+    @Override
+    public void onClick(View v) {
+        if (mMirrorWindowDelegate != null) {
+            Point offset = findOffset(v, mMoveFrameAmountShort);
+            mMirrorWindowDelegate.move(offset.x, offset.y);
+        }
+    }
+
+    @Override
+    public boolean onTouch(View v, MotionEvent event) {
+        if (handleDragState(event)) {
+            return true;
+        }
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_UP:
+            case MotionEvent.ACTION_CANCEL:
+                if (mMoveWindowTask != null) {
+                    mMoveWindowTask.cancel();
+                    mMoveWindowTask = null;
+                }
+                break;
+        }
+        return false;
+    }
+
+    @Override
+    public boolean onLongClick(View v) {
+        Point offset = findOffset(v, mMoveFrameAmountLong);
+        mMoveWindowTask = new MoveWindowTask(mMirrorWindowDelegate, mHandler, offset.x, offset.y,
+                MOVE_FRAME_DURATION_MS);
+        mMoveWindowTask.schedule();
+        return true;
+    }
+
+    private boolean onViewRootLongClick(View view) {
+        mIsDragState = true;
+        mShouldSetTouchStart = true;
+        return true;
+    }
+
+    private boolean handleDragState(final MotionEvent event) {
+        switch (event.getAction()) {
+            case MotionEvent.ACTION_MOVE:
+                if (mIsDragState) {
+                    if (mShouldSetTouchStart) {
+                        mLastDrag.set(event.getRawX(), event.getRawY());
+                        mShouldSetTouchStart = false;
+                    }
+                    int xDiff = (int) (event.getRawX() - mLastDrag.x);
+                    int yDiff = (int) (event.getRawY() - mLastDrag.y);
+                    move(xDiff, yDiff);
+                    mLastDrag.set(event.getRawX(), event.getRawY());
+                    return true;
+                }
+                return false;
+            case MotionEvent.ACTION_UP:
+            case MotionEvent.ACTION_CANCEL:
+                if (mIsDragState) {
+                    mIsDragState = false;
+                    return true;
+                }
+                return false;
+            default:
+                return false;
+        }
+    }
+
+    /**
+     * A timer task to move the mirror window periodically.
+     */
+    static class MoveWindowTask implements Runnable {
+        private final MirrorWindowDelegate mMirrorWindowDelegate;
+        private final int mXOffset;
+        private final int mYOffset;
+        private final Handler mHandler;
+        /** Time in milliseconds between successive task executions.*/
+        private long mPeriod;
+        private boolean mCancel;
+
+        MoveWindowTask(@NonNull MirrorWindowDelegate windowDelegate, Handler handler, int xOffset,
+                int yOffset, long period) {
+            mMirrorWindowDelegate = windowDelegate;
+            mXOffset = xOffset;
+            mYOffset = yOffset;
+            mHandler = handler;
+            mPeriod = period;
+        }
+
+        @Override
+        public void run() {
+            if (mCancel) {
+                return;
+            }
+            mMirrorWindowDelegate.move(mXOffset, mYOffset);
+            schedule();
+        }
+
+        /**
+         * Schedules the specified task periodically and immediately.
+         */
+        void schedule() {
+            mHandler.postDelayed(this, mPeriod);
+            mCancel = false;
+        }
+
+        void cancel() {
+            mHandler.removeCallbacks(this);
+            mCancel = true;
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
index 898cd13..b3ce4a0 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnification.java
@@ -86,7 +86,7 @@
 
     private void enableMagnification() {
         if (mWindowMagnificationController == null) {
-            mWindowMagnificationController = new WindowMagnificationController(mContext, mHandler);
+            mWindowMagnificationController = new WindowMagnificationController(mContext, null);
         }
         mWindowMagnificationController.createWindowMagnification();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
index c243309..7176490 100644
--- a/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
+++ b/packages/SystemUI/src/com/android/systemui/accessibility/WindowMagnificationController.java
@@ -18,6 +18,7 @@
 
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
 
+import android.annotation.Nullable;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.PixelFormat;
@@ -25,7 +26,6 @@
 import android.graphics.PointF;
 import android.graphics.Rect;
 import android.os.Binder;
-import android.os.Handler;
 import android.view.Display;
 import android.view.Gravity;
 import android.view.LayoutInflater;
@@ -44,16 +44,13 @@
 /**
  * Class to handle adding and removing a window magnification.
  */
-public class WindowMagnificationController implements View.OnClickListener,
-        View.OnLongClickListener, View.OnTouchListener, SurfaceHolder.Callback {
+public class WindowMagnificationController implements View.OnTouchListener, SurfaceHolder.Callback,
+        MirrorWindowControl.MirrorWindowDelegate {
     private final int mBorderSize;
-    private final int mMoveFrameAmountShort;
-    private final int mMoveFrameAmountLong;
 
     private final Context mContext;
     private final Point mDisplaySize = new Point();
     private final int mDisplayId;
-    private final Handler mHandler;
     private final Rect mMagnificationFrame = new Rect();
     private final SurfaceControl.Transaction mTransaction = new SurfaceControl.Transaction();
 
@@ -66,13 +63,6 @@
     // The root of the mirrored content
     private SurfaceControl mMirrorSurface;
 
-    private boolean mIsPressedDown;
-
-    private View mLeftControl;
-    private View mUpControl;
-    private View mRightControl;
-    private View mBottomControl;
-
     private View mDragView;
     private View mLeftDrag;
     private View mTopDrag;
@@ -80,30 +70,32 @@
     private View mBottomDrag;
 
     private final PointF mLastDrag = new PointF();
-    private final Point mMoveWindowOffset = new Point();
 
     private View mMirrorView;
     private SurfaceView mMirrorSurfaceView;
-    private View mControlsView;
     private View mOverlayView;
+    // The boundary of magnification frame.
+    private final Rect mMagnificationFrameBoundary = new Rect();
 
-    private MoveMirrorRunnable mMoveMirrorRunnable = new MoveMirrorRunnable();
+    @Nullable
+    private MirrorWindowControl mMirrorWindowControl;
 
-    WindowMagnificationController(Context context, Handler handler) {
+    WindowMagnificationController(Context context, MirrorWindowControl mirrorWindowControl) {
         mContext = context;
-        mHandler = handler;
         Display display = mContext.getDisplay();
-        display.getSize(mDisplaySize);
+        display.getRealSize(mDisplaySize);
         mDisplayId = mContext.getDisplayId();
 
         mWm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
 
         Resources r = context.getResources();
         mBorderSize = (int) r.getDimension(R.dimen.magnification_border_size);
-        mMoveFrameAmountShort = (int) r.getDimension(R.dimen.magnification_frame_move_short);
-        mMoveFrameAmountLong = (int) r.getDimension(R.dimen.magnification_frame_move_long);
 
         mScale = r.getInteger(R.integer.magnification_default_scale);
+        mMirrorWindowControl = mirrorWindowControl;
+        if (mMirrorWindowControl != null) {
+            mMirrorWindowControl.setWindowDelegate(this);
+        }
     }
 
     /**
@@ -114,6 +106,7 @@
             return;
         }
         setInitialStartBounds();
+        setMagnificationFrameBoundary();
         createOverlayWindow();
     }
 
@@ -173,9 +166,8 @@
             mMirrorView = null;
         }
 
-        if (mControlsView != null) {
-            mWm.removeView(mControlsView);
-            mControlsView = null;
+        if (mMirrorWindowControl != null) {
+            mMirrorWindowControl.destroyControl();
         }
     }
 
@@ -235,40 +227,9 @@
     }
 
     private void createControls() {
-        int controlsSize = (int) mContext.getResources().getDimension(
-                R.dimen.magnification_controls_size);
-
-        WindowManager.LayoutParams lp = new WindowManager.LayoutParams(controlsSize, controlsSize,
-                WindowManager.LayoutParams.TYPE_APPLICATION_SUB_PANEL,
-                WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL
-                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
-                PixelFormat.RGBA_8888);
-        lp.gravity = Gravity.BOTTOM | Gravity.RIGHT;
-        lp.token = mOverlayView.getWindowToken();
-        lp.setTitle(mContext.getString(R.string.magnification_controls_title));
-
-        mControlsView = LayoutInflater.from(mContext).inflate(R.layout.magnifier_controllers, null);
-        mWm.addView(mControlsView, lp);
-
-        mLeftControl = mControlsView.findViewById(R.id.left_control);
-        mUpControl = mControlsView.findViewById(R.id.up_control);
-        mRightControl = mControlsView.findViewById(R.id.right_control);
-        mBottomControl = mControlsView.findViewById(R.id.down_control);
-
-        mLeftControl.setOnClickListener(this);
-        mUpControl.setOnClickListener(this);
-        mRightControl.setOnClickListener(this);
-        mBottomControl.setOnClickListener(this);
-
-        mLeftControl.setOnLongClickListener(this);
-        mUpControl.setOnLongClickListener(this);
-        mRightControl.setOnLongClickListener(this);
-        mBottomControl.setOnLongClickListener(this);
-
-        mLeftControl.setOnTouchListener(this);
-        mUpControl.setOnTouchListener(this);
-        mRightControl.setOnTouchListener(this);
-        mBottomControl.setOnTouchListener(this);
+        if (mMirrorWindowControl != null) {
+            mMirrorWindowControl.showControl(mOverlayView.getWindowToken());
+        }
     }
 
     private void setInitialStartBounds() {
@@ -328,40 +289,14 @@
     }
 
     @Override
-    public void onClick(View v) {
-        setMoveOffset(v, mMoveFrameAmountShort);
-        moveMirrorFromControls();
-    }
-
-    @Override
-    public boolean onLongClick(View v) {
-        mIsPressedDown = true;
-        setMoveOffset(v, mMoveFrameAmountLong);
-        mHandler.post(mMoveMirrorRunnable);
-        return true;
-    }
-
-    @Override
     public boolean onTouch(View v, MotionEvent event) {
-        if (v == mLeftControl || v == mUpControl || v == mRightControl || v == mBottomControl) {
-            return handleControlTouchEvent(event);
-        } else if (v == mDragView || v == mLeftDrag || v == mTopDrag || v == mRightDrag
+        if (v == mDragView || v == mLeftDrag || v == mTopDrag || v == mRightDrag
                 || v == mBottomDrag) {
             return handleDragTouchEvent(event);
         }
         return false;
     }
 
-    private boolean handleControlTouchEvent(MotionEvent event) {
-        switch (event.getAction()) {
-            case MotionEvent.ACTION_UP:
-            case MotionEvent.ACTION_CANCEL:
-                mIsPressedDown = false;
-                break;
-        }
-        return false;
-    }
-
     private boolean handleDragTouchEvent(MotionEvent event) {
         switch (event.getAction()) {
             case MotionEvent.ACTION_DOWN:
@@ -370,36 +305,20 @@
             case MotionEvent.ACTION_MOVE:
                 int xDiff = (int) (event.getRawX() - mLastDrag.x);
                 int yDiff = (int) (event.getRawY() - mLastDrag.y);
-                mMagnificationFrame.offset(xDiff, yDiff);
+                moveMirrorWindow(xDiff, yDiff);
                 mLastDrag.set(event.getRawX(), event.getRawY());
-                modifyWindowMagnification(mTransaction);
-                mTransaction.apply();
                 return true;
         }
         return false;
     }
 
-    private void setMoveOffset(View v, int moveFrameAmount) {
-        mMoveWindowOffset.set(0, 0);
-
-        if (v == mLeftControl) {
-            mMoveWindowOffset.x = -moveFrameAmount;
-        } else if (v == mUpControl) {
-            mMoveWindowOffset.y = -moveFrameAmount;
-        } else if (v == mRightControl) {
-            mMoveWindowOffset.x = moveFrameAmount;
-        } else if (v == mBottomControl) {
-            mMoveWindowOffset.y = moveFrameAmount;
+    private void moveMirrorWindow(int xOffset, int yOffset) {
+        if (updateMagnificationFramePosition(xOffset, yOffset)) {
+            modifyWindowMagnification(mTransaction);
+            mTransaction.apply();
         }
     }
 
-    private void moveMirrorFromControls() {
-        mMagnificationFrame.offset(mMoveWindowOffset.x, mMoveWindowOffset.y);
-
-        modifyWindowMagnification(mTransaction);
-        mTransaction.apply();
-    }
-
     /**
      * Calculates the desired source bounds. This will be the area under from the center of  the
      * displayFrame, factoring in scale.
@@ -414,6 +333,53 @@
         return new Rect(left, top, right, bottom);
     }
 
+    private void setMagnificationFrameBoundary() {
+        // Calculates width and height for magnification frame could exceed out the screen.
+        // TODO : re-calculating again when scale is changed.
+        // The half width of magnification frame.
+        final int halfWidth = mMagnificationFrame.width() / 2;
+        // The half height of magnification frame.
+        final int halfHeight = mMagnificationFrame.height() / 2;
+        // The scaled half width of magnified region.
+        final int scaledWidth = (int) (halfWidth / mScale);
+        // The scaled half height of magnified region.
+        final int scaledHeight = (int) (halfHeight / mScale);
+        final int exceededWidth = halfWidth - scaledWidth;
+        final int exceededHeight = halfHeight - scaledHeight;
+
+        mMagnificationFrameBoundary.set(-exceededWidth, -exceededHeight,
+                mDisplaySize.x + exceededWidth, mDisplaySize.y + exceededHeight);
+    }
+
+    /**
+     * Calculates and sets the real position of magnification frame based on the magnified region
+     * should be limited by the region of the display.
+     */
+    private boolean updateMagnificationFramePosition(int xOffset, int yOffset) {
+        mTmpRect.set(mMagnificationFrame);
+        mTmpRect.offset(xOffset, yOffset);
+
+        if (mTmpRect.left < mMagnificationFrameBoundary.left) {
+            mTmpRect.offsetTo(mMagnificationFrameBoundary.left, mTmpRect.top);
+        } else if (mTmpRect.right > mMagnificationFrameBoundary.right) {
+            final int leftOffset = mMagnificationFrameBoundary.right - mMagnificationFrame.width();
+            mTmpRect.offsetTo(leftOffset, mTmpRect.top);
+        }
+
+        if (mTmpRect.top < mMagnificationFrameBoundary.top) {
+            mTmpRect.offsetTo(mTmpRect.left, mMagnificationFrameBoundary.top);
+        } else if (mTmpRect.bottom > mMagnificationFrameBoundary.bottom) {
+            final int topOffset = mMagnificationFrameBoundary.bottom - mMagnificationFrame.height();
+            mTmpRect.offsetTo(mTmpRect.left, topOffset);
+        }
+
+        if (!mTmpRect.equals(mMagnificationFrame)) {
+            mMagnificationFrame.set(mTmpRect);
+            return true;
+        }
+        return false;
+    }
+
     @Override
     public void surfaceCreated(SurfaceHolder holder) {
         createMirror();
@@ -427,13 +393,13 @@
     public void surfaceDestroyed(SurfaceHolder holder) {
     }
 
-    class MoveMirrorRunnable implements Runnable {
-        @Override
-        public void run() {
-            if (mIsPressedDown) {
-                moveMirrorFromControls();
-                mHandler.postDelayed(mMoveMirrorRunnable, 100);
-            }
+    @Override
+    public void move(int xOffset, int yOffset) {
+        if (mMirrorSurfaceView == null) {
+            return;
         }
+        mMagnificationFrame.offset(xOffset, yOffset);
+        modifyWindowMagnification(mTransaction);
+        mTransaction.apply();
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java
index 044c5a0..7dea7f8 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthBiometricView.java
@@ -664,6 +664,7 @@
 
         setTextOrHide(mSubtitleView,
                 mBiometricPromptBundle.getString(BiometricPrompt.KEY_SUBTITLE));
+
         setTextOrHide(mDescriptionView,
                 mBiometricPromptBundle.getString(BiometricPrompt.KEY_DESCRIPTION));
 
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
index b8d32ae..8a492a8 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthContainerView.java
@@ -87,7 +87,7 @@
     @VisibleForTesting @Nullable AuthBiometricView mBiometricView;
     @VisibleForTesting @Nullable AuthCredentialView mCredentialView;
 
-    private final ImageView mBackgroundView;
+    @VisibleForTesting final ImageView mBackgroundView;
     @VisibleForTesting final ScrollView mBiometricScrollView;
     private final View mPanelView;
 
@@ -333,6 +333,12 @@
                 throw new IllegalStateException("Unknown credential type: " + credentialType);
         }
 
+        // The background is used for detecting taps / cancelling authentication. Since the
+        // credential view is full-screen and should not be canceled from background taps,
+        // disable it.
+        mBackgroundView.setOnClickListener(null);
+        mBackgroundView.setImportantForAccessibility(IMPORTANT_FOR_ACCESSIBILITY_NO);
+
         mCredentialView.setContainerView(this);
         mCredentialView.setEffectiveUserId(mEffectiveUserId);
         mCredentialView.setCredentialType(credentialType);
@@ -583,11 +589,13 @@
      * @return
      */
     public static WindowManager.LayoutParams getLayoutParams(IBinder windowToken) {
+        final int windowFlags = WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED
+                | WindowManager.LayoutParams.FLAG_SECURE;
         final WindowManager.LayoutParams lp = new WindowManager.LayoutParams(
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 ViewGroup.LayoutParams.MATCH_PARENT,
                 WindowManager.LayoutParams.TYPE_STATUS_BAR_PANEL,
-                WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED,
+                windowFlags,
                 PixelFormat.TRANSLUCENT);
         lp.privateFlags |= WindowManager.LayoutParams.SYSTEM_FLAG_SHOW_FOR_ALL_USERS;
         lp.setTitle("BiometricPrompt");
diff --git a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java
index 8f2cf70..68b05e3 100644
--- a/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java
+++ b/packages/SystemUI/src/com/android/systemui/biometrics/AuthCredentialView.java
@@ -17,6 +17,7 @@
 package com.android.systemui.biometrics;
 
 import android.content.Context;
+import android.graphics.drawable.Drawable;
 import android.hardware.biometrics.BiometricPrompt;
 import android.os.AsyncTask;
 import android.os.Bundle;
@@ -28,6 +29,7 @@
 import android.util.AttributeSet;
 import android.view.View;
 import android.view.accessibility.AccessibilityManager;
+import android.widget.ImageView;
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
@@ -56,6 +58,7 @@
     private TextView mTitleView;
     private TextView mSubtitleView;
     private TextView mDescriptionView;
+    private ImageView mIconView;
     protected TextView mErrorView;
 
     protected @Utils.CredentialType int mCredentialType;
@@ -176,6 +179,16 @@
         setTextOrHide(mDescriptionView,
                 mBiometricPromptBundle.getString(BiometricPrompt.KEY_DESCRIPTION));
 
+        final boolean isManagedProfile = Utils.isManagedProfile(mContext, mEffectiveUserId);
+        final Drawable image;
+        if (isManagedProfile) {
+            image = getResources().getDrawable(R.drawable.auth_dialog_enterprise,
+                    mContext.getTheme());
+        } else {
+            image = getResources().getDrawable(R.drawable.auth_dialog_lock, mContext.getTheme());
+        }
+        mIconView.setImageDrawable(image);
+
         // Only animate this if we're transitioning from a biometric view.
         if (mShouldAnimateContents) {
             setTranslationY(getResources()
@@ -207,6 +220,7 @@
         mTitleView = findViewById(R.id.title);
         mSubtitleView = findViewById(R.id.subtitle);
         mDescriptionView = findViewById(R.id.description);
+        mIconView = findViewById(R.id.icon);
         mErrorView = findViewById(R.id.error);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
index 45705b7..1e39954 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/Bubble.java
@@ -226,6 +226,10 @@
         mIconView.update(this);
     }
 
+    void setInflated(boolean inflated) {
+        mInflated = inflated;
+    }
+
     /**
      * Set visibility of bubble in the expanded state.
      *
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
index 894ecf6..762e5f2 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleController.java
@@ -16,7 +16,6 @@
 
 package com.android.systemui.bubbles;
 
-import static android.app.Notification.FLAG_AUTOGROUP_SUMMARY;
 import static android.app.Notification.FLAG_BUBBLE;
 import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
 import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL;
@@ -44,19 +43,13 @@
 
 import android.annotation.UserIdInt;
 import android.app.ActivityManager.RunningTaskInfo;
-import android.app.Notification;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
-import android.app.RemoteInput;
 import android.content.Context;
-import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
-import android.content.pm.ShortcutManager;
 import android.content.res.Configuration;
 import android.graphics.Rect;
-import android.net.Uri;
-import android.os.Handler;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.service.notification.NotificationListenerService.RankingMap;
@@ -75,25 +68,33 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.statusbar.IStatusBarService;
-import com.android.internal.util.ScreenshotHelper;
+import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.DumpController;
+import com.android.systemui.Dumpable;
 import com.android.systemui.R;
+import com.android.systemui.bubbles.BubbleController.BubbleExpandListener;
+import com.android.systemui.bubbles.BubbleController.BubbleStateChangeListener;
+import com.android.systemui.bubbles.BubbleController.NotifCallback;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.shared.system.ActivityManagerWrapper;
 import com.android.systemui.shared.system.PinnedStackListenerForwarder;
 import com.android.systemui.shared.system.TaskStackChangeListener;
 import com.android.systemui.shared.system.WindowManagerWrapper;
+import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationRemoveInterceptor;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
 import com.android.systemui.statusbar.phone.ShadeController;
 import com.android.systemui.statusbar.phone.StatusBar;
 import com.android.systemui.statusbar.policy.ConfigurationController;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.ZenModeController;
 
 import java.io.FileDescriptor;
@@ -101,10 +102,8 @@
 import java.lang.annotation.Retention;
 import java.lang.annotation.Target;
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.HashSet;
 import java.util.List;
-import java.util.function.Consumer;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -116,7 +115,7 @@
  * The controller manages addition, removal, and visible state of bubbles on screen.
  */
 @Singleton
-public class BubbleController implements ConfigurationController.ConfigurationListener {
+public class BubbleController implements ConfigurationController.ConfigurationListener, Dumpable {
 
     private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleController" : TAG_BUBBLES;
 
@@ -140,14 +139,13 @@
 
     private final Context mContext;
     private final NotificationEntryManager mNotificationEntryManager;
+    private final NotifPipeline mNotifPipeline;
     private final BubbleTaskStackListener mTaskStackListener;
     private BubbleStateChangeListener mStateChangeListener;
     private BubbleExpandListener mExpandListener;
     @Nullable private BubbleStackView.SurfaceSynchronizer mSurfaceSynchronizer;
     private final NotificationGroupManager mNotificationGroupManager;
     private final ShadeController mShadeController;
-    private final RemoteInputUriController mRemoteInputUriController;
-    private Handler mHandler = new Handler() {};
 
     private BubbleData mBubbleData;
     @Nullable private BubbleStackView mStackView;
@@ -171,7 +169,6 @@
     private final NotificationShadeWindowController mNotificationShadeWindowController;
     private final ZenModeController mZenModeController;
     private StatusBarStateListener mStatusBarStateListener;
-    private final ScreenshotHelper mScreenshotHelper;
 
     // Callback that updates BubbleOverflowActivity on data change.
     @Nullable private Runnable mOverflowCallback = null;
@@ -190,6 +187,9 @@
 
     private boolean mInflateSynchronously;
 
+    // TODO (b/145659174): allow for multiple callbacks to support the "shadow" new notif pipeline
+    private final List<NotifCallback> mCallbacks = new ArrayList<>();
+
     /**
      * Listener to be notified when some states of the bubbles change.
      */
@@ -214,16 +214,6 @@
     }
 
     /**
-     * Listener for handling bubble screenshot events.
-     */
-    public interface BubbleScreenshotListener {
-        /**
-         * Called to trigger taking a screenshot and sending the result to a bubble.
-         */
-        void onBubbleScreenshot(Bubble bubble);
-    }
-
-    /**
      * Listener to be notified when a bubbles' notification suppression state changes.
      */
     public interface NotificationSuppressionChangedListener {
@@ -231,7 +221,36 @@
          * Called when the notification suppression state of a bubble changes.
          */
         void onBubbleNotificationSuppressionChange(Bubble bubble);
+    }
 
+    /**
+     * Callback for when the BubbleController wants to interact with the notification pipeline to:
+     * - Remove a previously bubbled notification
+     * - Update the notification shade since bubbled notification should/shouldn't be showing
+     */
+    public interface NotifCallback {
+        /**
+         * Called when a bubbled notification that was hidden from the shade is now being removed
+         * This can happen when an app cancels a bubbled notification or when the user dismisses a
+         * bubble.
+         */
+        void removeNotification(NotificationEntry entry, int reason);
+
+        /**
+         * Called when a bubbled notification has changed whether it should be
+         * filtered from the shade.
+         */
+        void invalidateNotifications(String reason);
+
+        /**
+         * Called on a bubbled entry that has been removed when there are no longer
+         * bubbled entries in its group.
+         *
+         * Checks whether its group has any other (non-bubbled) children. If it doesn't,
+         * removes all remnants of the group's summary from the notification pipeline.
+         * TODO: (b/145659174) Only old pipeline needs this - delete post-migration.
+         */
+        void maybeCancelSummary(NotificationEntry entry);
     }
 
     /**
@@ -270,11 +289,13 @@
             NotificationLockscreenUserManager notifUserManager,
             NotificationGroupManager groupManager,
             NotificationEntryManager entryManager,
-            RemoteInputUriController remoteInputUriController) {
+            NotifPipeline notifPipeline,
+            FeatureFlags featureFlags,
+            DumpController dumpController) {
         this(context, notificationShadeWindowController, statusBarStateController, shadeController,
                 data, null /* synchronizer */, configurationController, interruptionStateProvider,
                 zenModeController, notifUserManager, groupManager, entryManager,
-                remoteInputUriController);
+                notifPipeline, featureFlags, dumpController);
     }
 
     public BubbleController(Context context,
@@ -289,13 +310,15 @@
             NotificationLockscreenUserManager notifUserManager,
             NotificationGroupManager groupManager,
             NotificationEntryManager entryManager,
-            RemoteInputUriController remoteInputUriController) {
+            NotifPipeline notifPipeline,
+            FeatureFlags featureFlags,
+            DumpController dumpController) {
+        dumpController.registerDumpable(TAG, this);
         mContext = context;
         mShadeController = shadeController;
         mNotificationInterruptionStateProvider = interruptionStateProvider;
         mNotifUserManager = notifUserManager;
         mZenModeController = zenModeController;
-        mRemoteInputUriController = remoteInputUriController;
         mZenModeController.addCallback(new ZenModeController.Callback() {
             @Override
             public void onZenChanged(int zen) {
@@ -332,26 +355,14 @@
         });
 
         mNotificationEntryManager = entryManager;
-        mNotificationEntryManager.addNotificationEntryListener(mEntryListener);
-        mNotificationEntryManager.setNotificationRemoveInterceptor(mRemoveInterceptor);
         mNotificationGroupManager = groupManager;
-        mNotificationGroupManager.addOnGroupChangeListener(
-                new NotificationGroupManager.OnGroupChangeListener() {
-                    @Override
-                    public void onGroupSuppressionChanged(
-                            NotificationGroupManager.NotificationGroup group,
-                            boolean suppressed) {
-                        // More notifications could be added causing summary to no longer
-                        // be suppressed -- in this case need to remove the key.
-                        final String groupKey = group.summary != null
-                                ? group.summary.getSbn().getGroupKey()
-                                : null;
-                        if (!suppressed && groupKey != null
-                                && mBubbleData.isSummarySuppressed(groupKey)) {
-                            mBubbleData.removeSuppressedSummary(groupKey);
-                        }
-                    }
-                });
+        mNotifPipeline = notifPipeline;
+
+        if (!featureFlags.isNewNotifPipelineRenderingEnabled()) {
+            setupNEM();
+        } else {
+            setupNotifPipeline();
+        }
 
         mNotificationShadeWindowController = notificationShadeWindowController;
         mStatusBarStateListener = new StatusBarStateListener();
@@ -386,11 +397,171 @@
         mUserCreatedBubbles = new HashSet<>();
         mUserBlockedBubbles = new HashSet<>();
 
-        mScreenshotHelper = new ScreenshotHelper(context);
         mBubbleIconFactory = new BubbleIconFactory(context);
     }
 
     /**
+     * See {@link NotifCallback}.
+     */
+    public void addNotifCallback(NotifCallback callback) {
+        mCallbacks.add(callback);
+    }
+
+    private void setupNEM() {
+        mNotificationEntryManager.addNotificationEntryListener(
+                new NotificationEntryListener() {
+                    @Override
+                    public void onPendingEntryAdded(NotificationEntry entry) {
+                        onEntryAdded(entry);
+                    }
+
+                    @Override
+                    public void onPreEntryUpdated(NotificationEntry entry) {
+                        onEntryUpdated(entry);
+                    }
+
+                    @Override
+                    public void onEntryRemoved(
+                            NotificationEntry entry,
+                            @android.annotation.Nullable NotificationVisibility visibility,
+                            boolean removedByUser) {
+                        BubbleController.this.onEntryRemoved(entry);
+                    }
+
+                    @Override
+                    public void onNotificationRankingUpdated(RankingMap rankingMap) {
+                        onRankingUpdated(rankingMap);
+                    }
+                });
+
+        mNotificationEntryManager.addNotificationRemoveInterceptor(
+                new NotificationRemoveInterceptor() {
+                    @Override
+                    public boolean onNotificationRemoveRequested(
+                            String key,
+                            NotificationEntry entry,
+                            int dismissReason) {
+                        final boolean isClearAll = dismissReason == REASON_CANCEL_ALL;
+                        final boolean isUserDimiss = dismissReason == REASON_CANCEL
+                                || dismissReason == REASON_CLICK;
+                        final boolean isAppCancel = dismissReason == REASON_APP_CANCEL
+                                || dismissReason == REASON_APP_CANCEL_ALL;
+                        final boolean isSummaryCancel =
+                                dismissReason == REASON_GROUP_SUMMARY_CANCELED;
+
+                        // Need to check for !appCancel here because the notification may have
+                        // previously been dismissed & entry.isRowDismissed would still be true
+                        boolean userRemovedNotif =
+                                (entry != null && entry.isRowDismissed() && !isAppCancel)
+                                || isClearAll || isUserDimiss || isSummaryCancel;
+
+                        if (userRemovedNotif || isUserCreatedBubble(key)
+                                || isSummaryOfUserCreatedBubble(entry)) {
+                            return handleDismissalInterception(entry);
+                        }
+
+                        return false;
+                    }
+                });
+
+        mNotificationGroupManager.addOnGroupChangeListener(
+                new NotificationGroupManager.OnGroupChangeListener() {
+                    @Override
+                    public void onGroupSuppressionChanged(
+                            NotificationGroupManager.NotificationGroup group,
+                            boolean suppressed) {
+                        // More notifications could be added causing summary to no longer
+                        // be suppressed -- in this case need to remove the key.
+                        final String groupKey = group.summary != null
+                                ? group.summary.getSbn().getGroupKey()
+                                : null;
+                        if (!suppressed && groupKey != null
+                                && mBubbleData.isSummarySuppressed(groupKey)) {
+                            mBubbleData.removeSuppressedSummary(groupKey);
+                        }
+                    }
+                });
+
+        addNotifCallback(new NotifCallback() {
+            @Override
+            public void removeNotification(NotificationEntry entry, int reason) {
+                mNotificationEntryManager.performRemoveNotification(entry.getSbn(),
+                        reason);
+            }
+
+            @Override
+            public void invalidateNotifications(String reason) {
+                mNotificationEntryManager.updateNotifications(reason);
+            }
+
+            @Override
+            public void maybeCancelSummary(NotificationEntry entry) {
+                // Check if removed bubble has an associated suppressed group summary that needs
+                // to be removed now.
+                final String groupKey = entry.getSbn().getGroupKey();
+                if (mBubbleData.isSummarySuppressed(groupKey)) {
+                    mBubbleData.removeSuppressedSummary(groupKey);
+
+                    final NotificationEntry summary =
+                            mNotificationEntryManager.getActiveNotificationUnfiltered(
+                                    mBubbleData.getSummaryKey(groupKey));
+                    if (summary != null) {
+                        mNotificationEntryManager.performRemoveNotification(summary.getSbn(),
+                                UNDEFINED_DISMISS_REASON);
+                    }
+                }
+
+                // Check if we still need to remove the summary from NoManGroup because the summary
+                // may not be in the mBubbleData.mSuppressedGroupKeys list and removed above.
+                // For example:
+                // 1. Bubbled notifications (group) is posted to shade and are visible bubbles
+                // 2. User expands bubbles so now their respective notifications in the shade are
+                // hidden, including the group summary
+                // 3. User removes all bubbles
+                // 4. We expect all the removed bubbles AND the summary (note: the summary was
+                // never added to the suppressedSummary list in BubbleData, so we add this check)
+                NotificationEntry summary =
+                        mNotificationGroupManager.getLogicalGroupSummary(entry.getSbn());
+                if (summary != null) {
+                    ArrayList<NotificationEntry> summaryChildren =
+                            mNotificationGroupManager.getLogicalChildren(summary.getSbn());
+                    boolean isSummaryThisNotif = summary.getKey().equals(entry.getKey());
+                    if (!isSummaryThisNotif && (summaryChildren == null
+                            || summaryChildren.isEmpty())) {
+                        mNotificationEntryManager.performRemoveNotification(summary.getSbn(),
+                                UNDEFINED_DISMISS_REASON);
+                    }
+                }
+            }
+        });
+    }
+
+    private void setupNotifPipeline() {
+        mNotifPipeline.addCollectionListener(new NotifCollectionListener() {
+            @Override
+            public void onEntryAdded(NotificationEntry entry) {
+                BubbleController.this.onEntryAdded(entry);
+            }
+
+            @Override
+            public void onEntryUpdated(NotificationEntry entry) {
+                BubbleController.this.onEntryUpdated(entry);
+            }
+
+            @Override
+            public void onRankingUpdate(RankingMap rankingMap) {
+                onRankingUpdated(rankingMap);
+            }
+
+            @Override
+            public void onEntryRemoved(NotificationEntry entry,
+                    @NotifCollection.CancellationReason int reason) {
+                BubbleController.this.onEntryRemoved(entry);
+            }
+        });
+    }
+
+    /**
      * Sets whether to perform inflation on the same thread as the caller. This method should only
      * be used in tests, not in production.
      */
@@ -426,9 +597,6 @@
             if (mExpandListener != null) {
                 mStackView.setExpandListener(mExpandListener);
             }
-            if (mBubbleScreenshotListener != null) {
-                mStackView.setBubbleScreenshotListener(mBubbleScreenshotListener);
-            }
         }
     }
 
@@ -562,13 +730,15 @@
      *
      * False otherwise.
      */
-    public boolean isBubbleNotificationSuppressedFromShade(String key) {
+    public boolean isBubbleNotificationSuppressedFromShade(NotificationEntry entry) {
+        String key = entry.getKey();
         boolean isBubbleAndSuppressed = mBubbleData.hasBubbleWithKey(key)
                 && !mBubbleData.getBubbleWithKey(key).showInShade();
-        NotificationEntry entry = mNotificationEntryManager.getActiveNotificationUnfiltered(key);
-        String groupKey = entry != null ? entry.getSbn().getGroupKey() : null;
+
+        String groupKey = entry.getSbn().getGroupKey();
         boolean isSuppressedSummary = mBubbleData.isSummarySuppressed(groupKey);
         boolean isSummary = key.equals(mBubbleData.getSummaryKey(groupKey));
+
         return (isSummary && isSuppressedSummary) || isBubbleAndSuppressed;
     }
 
@@ -579,7 +749,8 @@
     }
 
     void promoteBubbleFromOverflow(Bubble bubble) {
-        mBubbleData.promoteBubbleFromOverflow(bubble);
+        bubble.setInflateSynchronously(mInflateSynchronously);
+        mBubbleData.promoteBubbleFromOverflow(bubble, mStackView, mBubbleIconFactory);
     }
 
     /**
@@ -671,7 +842,7 @@
             Log.d(TAG, "onUserDemotedBubble: " + entry.getKey());
         }
         entry.setFlagBubble(false);
-        removeBubble(entry.getKey(), DISMISS_BLOCKED);
+        removeBubble(entry, DISMISS_BLOCKED);
         mUserCreatedBubbles.remove(entry.getKey());
         if (BubbleExperimentConfig.isPackageWhitelistedToAutoBubble(
                 mContext, entry.getSbn().getPackageName())) {
@@ -688,174 +859,87 @@
         return mUserCreatedBubbles.contains(key);
     }
 
+    boolean isSummaryOfUserCreatedBubble(NotificationEntry entry) {
+        if (isSummaryOfBubbles(entry)) {
+            List<Bubble> bubbleChildren =
+                    mBubbleData.getBubblesInGroup(entry.getSbn().getGroupKey());
+            for (int i = 0; i < bubbleChildren.size(); i++) {
+                // Check if any are user-created (i.e. experimental bubbles)
+                if (isUserCreatedBubble(bubbleChildren.get(i).getKey())) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
     /**
-     * Removes the bubble associated with the {@param uri}.
+     * Removes the bubble with the given NotificationEntry.
      * <p>
      * Must be called from the main thread.
      */
     @MainThread
-    void removeBubble(String key, int reason) {
-        // TEMP: refactor to change this to pass entry
-        Bubble bubble = mBubbleData.getBubbleWithKey(key);
-        if (bubble != null) {
-            mBubbleData.notificationEntryRemoved(bubble.getEntry(), reason);
+    void removeBubble(NotificationEntry entry, int reason) {
+        if (mBubbleData.hasBubbleWithKey(entry.getKey())) {
+            mBubbleData.notificationEntryRemoved(entry, reason);
         }
     }
 
-    @SuppressWarnings("FieldCanBeLocal")
-    private final NotificationRemoveInterceptor mRemoveInterceptor =
-            new NotificationRemoveInterceptor() {
-            @Override
-            public boolean onNotificationRemoveRequested(String key, int reason) {
-                NotificationEntry entry =
-                        mNotificationEntryManager.getActiveNotificationUnfiltered(key);
-                String groupKey = entry != null ? entry.getSbn().getGroupKey() : null;
-                ArrayList<Bubble> bubbleChildren = mBubbleData.getBubblesInGroup(groupKey);
+    private void onEntryAdded(NotificationEntry entry) {
+        boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
+        boolean userBlocked = mUserBlockedBubbles.contains(entry.getKey());
+        boolean wasAdjusted = BubbleExperimentConfig.adjustForExperiments(
+                mContext, entry, previouslyUserCreated, userBlocked);
 
-                boolean inBubbleData = mBubbleData.hasBubbleWithKey(key);
-                boolean isSuppressedSummary = (mBubbleData.isSummarySuppressed(groupKey)
-                        && mBubbleData.getSummaryKey(groupKey).equals(key));
-                boolean isSummary = entry != null
-                        && entry.getSbn().getNotification().isGroupSummary();
-                boolean isSummaryOfBubbles = (isSuppressedSummary || isSummary)
-                        && bubbleChildren != null && !bubbleChildren.isEmpty();
-
-                if (!inBubbleData && !isSummaryOfBubbles) {
-                    return false;
-                }
-
-                final boolean isClearAll = reason == REASON_CANCEL_ALL;
-                final boolean isUserDimiss = reason == REASON_CANCEL || reason == REASON_CLICK;
-                final boolean isAppCancel = reason == REASON_APP_CANCEL
-                        || reason == REASON_APP_CANCEL_ALL;
-                final boolean isSummaryCancel = reason == REASON_GROUP_SUMMARY_CANCELED;
-
-                // Need to check for !appCancel here because the notification may have
-                // previously been dismissed & entry.isRowDismissed would still be true
-                boolean userRemovedNotif = (entry != null && entry.isRowDismissed() && !isAppCancel)
-                        || isClearAll || isUserDimiss || isSummaryCancel;
-
-                if (isSummaryOfBubbles) {
-                    return handleSummaryRemovalInterception(entry, userRemovedNotif);
-                }
-
-                // The bubble notification sticks around in the data as long as the bubble is
-                // not dismissed and the app hasn't cancelled the notification.
-                Bubble bubble = mBubbleData.getBubbleWithKey(key);
-                boolean bubbleExtended = entry != null && entry.isBubble() && userRemovedNotif;
-                if (bubbleExtended) {
-                    bubble.setSuppressNotification(true);
-                    bubble.setShowDot(false /* show */, true /* animate */);
-                    mNotificationEntryManager.updateNotifications(
-                            "BubbleController.onNotificationRemoveRequested");
-                    return true;
-                } else if (!userRemovedNotif && entry != null
-                        && !isUserCreatedBubble(bubble.getKey())) {
-                    // This wasn't a user removal so we should remove the bubble as well
-                    mBubbleData.notificationEntryRemoved(entry, DISMISS_NOTIF_CANCEL);
-                    return false;
-                }
-                return false;
+        if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
+                && (canLaunchInActivityView(mContext, entry) || wasAdjusted)) {
+            if (wasAdjusted && !previouslyUserCreated) {
+                // Gotta treat the auto-bubbled / whitelisted packaged bubbles as usercreated
+                mUserCreatedBubbles.add(entry.getKey());
             }
-        };
+            updateBubble(entry);
+        }
+    }
 
-    private boolean handleSummaryRemovalInterception(NotificationEntry summary,
-            boolean userRemovedNotif) {
-        String groupKey = summary.getSbn().getGroupKey();
-        ArrayList<Bubble> bubbleChildren = mBubbleData.getBubblesInGroup(groupKey);
+    private void onEntryUpdated(NotificationEntry entry) {
+        boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
+        boolean userBlocked = mUserBlockedBubbles.contains(entry.getKey());
+        boolean wasAdjusted = BubbleExperimentConfig.adjustForExperiments(
+                mContext, entry, previouslyUserCreated, userBlocked);
 
-        if (userRemovedNotif) {
-            // If it's a user dismiss we mark the children to be hidden from the shade.
-            for (int i = 0; i < bubbleChildren.size(); i++) {
-                Bubble bubbleChild = bubbleChildren.get(i);
-                // As far as group manager is concerned, once a child is no longer shown
-                // in the shade, it is essentially removed.
-                mNotificationGroupManager.onEntryRemoved(bubbleChild.getEntry());
-                bubbleChild.setSuppressNotification(true);
-                bubbleChild.setShowDot(false /* show */, true /* animate */);
+        boolean shouldBubble = mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
+                && (canLaunchInActivityView(mContext, entry) || wasAdjusted);
+        if (!shouldBubble && mBubbleData.hasBubbleWithKey(entry.getKey())) {
+            // It was previously a bubble but no longer a bubble -- lets remove it
+            removeBubble(entry, DISMISS_NO_LONGER_BUBBLE);
+        } else if (shouldBubble) {
+            if (wasAdjusted && !previouslyUserCreated) {
+                // Gotta treat the auto-bubbled / whitelisted packaged bubbles as usercreated
+                mUserCreatedBubbles.add(entry.getKey());
             }
-            // And since all children are removed, remove the summary.
-            mNotificationGroupManager.onEntryRemoved(summary);
+            updateBubble(entry);
+        }
+    }
 
-            // If the summary was auto-generated we don't need to keep that notification around
-            // because apps can't cancel it; so we only intercept & suppress real summaries.
-            boolean isAutogroupSummary = (summary.getSbn().getNotification().flags
-                    & FLAG_AUTOGROUP_SUMMARY) != 0;
-            if (!isAutogroupSummary) {
-                mBubbleData.addSummaryToSuppress(summary.getSbn().getGroupKey(),
-                        summary.getKey());
-                // Tell shade to update for the suppression
-                mNotificationEntryManager.updateNotifications(
-                        "BubbleController.handleSummaryRemovalInterception");
-            }
-            return !isAutogroupSummary;
-        } else {
-            // If it's not a user dismiss it's a cancel.
-            for (int i = 0; i < bubbleChildren.size(); i++) {
-                // First check if any of these are user-created (i.e. experimental bubbles)
-                if (mUserCreatedBubbles.contains(bubbleChildren.get(i).getKey())) {
-                    // Experimental bubble! Intercept the removal.
-                    return true;
-                }
-            }
-            // Not an experimental bubble, safe to remove.
+    private void onEntryRemoved(NotificationEntry entry) {
+        if (isSummaryOfBubbles(entry)) {
+            final String groupKey = entry.getSbn().getGroupKey();
             mBubbleData.removeSuppressedSummary(groupKey);
-            // Remove any associated bubble children with the summary.
+
+            // Remove any associated bubble children with the summary
+            final List<Bubble> bubbleChildren = mBubbleData.getBubblesInGroup(groupKey);
             for (int i = 0; i < bubbleChildren.size(); i++) {
-                Bubble bubbleChild = bubbleChildren.get(i);
-                mBubbleData.notificationEntryRemoved(bubbleChild.getEntry(),
-                        DISMISS_GROUP_CANCELLED);
+                removeBubble(bubbleChildren.get(i).getEntry(), DISMISS_GROUP_CANCELLED);
             }
-            return false;
+        } else {
+            removeBubble(entry, DISMISS_NOTIF_CANCEL);
         }
     }
 
-    @SuppressWarnings("FieldCanBeLocal")
-    private final NotificationEntryListener mEntryListener = new NotificationEntryListener() {
-        @Override
-        public void onNotificationAdded(NotificationEntry entry) {
-            boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
-            boolean userBlocked = mUserBlockedBubbles.contains(entry.getKey());
-            boolean wasAdjusted = BubbleExperimentConfig.adjustForExperiments(
-                    mContext, entry, previouslyUserCreated, userBlocked);
-
-            if (mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
-                    && (canLaunchInActivityView(mContext, entry) || wasAdjusted)) {
-                if (wasAdjusted && !previouslyUserCreated) {
-                    // Gotta treat the auto-bubbled / whitelisted packaged bubbles as usercreated
-                    mUserCreatedBubbles.add(entry.getKey());
-                }
-                updateBubble(entry);
-            }
-        }
-
-        @Override
-        public void onPreEntryUpdated(NotificationEntry entry) {
-            boolean previouslyUserCreated = mUserCreatedBubbles.contains(entry.getKey());
-            boolean userBlocked = mUserBlockedBubbles.contains(entry.getKey());
-            boolean wasAdjusted = BubbleExperimentConfig.adjustForExperiments(
-                    mContext, entry, previouslyUserCreated, userBlocked);
-
-            boolean shouldBubble = mNotificationInterruptionStateProvider.shouldBubbleUp(entry)
-                    && (canLaunchInActivityView(mContext, entry) || wasAdjusted);
-            if (!shouldBubble && mBubbleData.hasBubbleWithKey(entry.getKey())) {
-                // It was previously a bubble but no longer a bubble -- lets remove it
-                removeBubble(entry.getKey(), DISMISS_NO_LONGER_BUBBLE);
-            } else if (shouldBubble) {
-                if (wasAdjusted && !previouslyUserCreated) {
-                    // Gotta treat the auto-bubbled / whitelisted packaged bubbles as usercreated
-                    mUserCreatedBubbles.add(entry.getKey());
-                }
-                updateBubble(entry);
-            }
-        }
-
-        @Override
-        public void onNotificationRankingUpdated(RankingMap rankingMap) {
-            // Forward to BubbleData to block any bubbles which should no longer be shown
-            mBubbleData.notificationRankingUpdated(rankingMap);
-        }
-    };
+    private void onRankingUpdated(RankingMap rankingMap) {
+        // Forward to BubbleData to block any bubbles which should no longer be shown
+        mBubbleData.notificationRankingUpdated(rankingMap);
+    }
 
     @SuppressWarnings("FieldCanBeLocal")
     private final BubbleData.Listener mBubbleDataListener = new BubbleData.Listener() {
@@ -867,10 +951,6 @@
                 mOverflowCallback.run();
             }
 
-            if (update.addedBubble != null) {
-                mStackView.addBubble(update.addedBubble);
-            }
-
             // Collapsing? Do this first before remaining steps.
             if (update.expandedChanged && !update.expanded) {
                 mStackView.setExpanded(false);
@@ -883,14 +963,15 @@
                 final Bubble bubble = removed.first;
                 @DismissReason final int reason = removed.second;
                 mStackView.removeBubble(bubble);
-
                 // If the bubble is removed for user switching, leave the notification in place.
                 if (reason != DISMISS_USER_CHANGED) {
                     if (!mBubbleData.hasBubbleWithKey(bubble.getKey())
                             && !bubble.showInShade()) {
-                        // The bubble is gone & the notification is gone, time to actually remove it
-                        mNotificationEntryManager.performRemoveNotification(
-                                bubble.getEntry().getSbn(), UNDEFINED_DISMISS_REASON);
+                        // The bubble is now gone & the notification is hidden from the shade, so
+                        // time to actually remove it
+                        for (NotifCallback cb : mCallbacks) {
+                            cb.removeNotification(bubble.getEntry(), REASON_CANCEL);
+                        }
                     } else {
                         // Update the flag for SysUI
                         bubble.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE;
@@ -905,37 +986,20 @@
                         }
                     }
 
-                    // Check if removed bubble has an associated suppressed group summary that needs
-                    // to be removed now.
                     final String groupKey = bubble.getEntry().getSbn().getGroupKey();
-                    if (mBubbleData.isSummarySuppressed(groupKey)
-                            && mBubbleData.getBubblesInGroup(groupKey).isEmpty()) {
-                        // Time to actually remove the summary.
-                        String notifKey = mBubbleData.getSummaryKey(groupKey);
-                        mBubbleData.removeSuppressedSummary(groupKey);
-                        NotificationEntry entry =
-                                mNotificationEntryManager.getActiveNotificationUnfiltered(notifKey);
-                        mNotificationEntryManager.performRemoveNotification(
-                                entry.getSbn(), UNDEFINED_DISMISS_REASON);
-                    }
-
-                    // Check if summary should be removed from NoManGroup
-                    NotificationEntry summary = mNotificationGroupManager.getLogicalGroupSummary(
-                            bubble.getEntry().getSbn());
-                    if (summary != null) {
-                        ArrayList<NotificationEntry> summaryChildren =
-                                mNotificationGroupManager.getLogicalChildren(summary.getSbn());
-                        boolean isSummaryThisNotif = summary.getKey().equals(
-                                bubble.getEntry().getKey());
-                        if (!isSummaryThisNotif
-                                && (summaryChildren == null || summaryChildren.isEmpty())) {
-                            mNotificationEntryManager.performRemoveNotification(
-                                    summary.getSbn(), UNDEFINED_DISMISS_REASON);
+                    if (mBubbleData.getBubblesInGroup(groupKey).isEmpty()) {
+                        // Time to potentially remove the summary
+                        for (NotifCallback cb : mCallbacks) {
+                            cb.maybeCancelSummary(bubble.getEntry());
                         }
                     }
                 }
             }
 
+            if (update.addedBubble != null) {
+                mStackView.addBubble(update.addedBubble);
+            }
+
             if (update.updatedBubble != null) {
                 mStackView.updateBubble(update.updatedBubble);
             }
@@ -959,8 +1023,9 @@
                 mStackView.setExpanded(true);
             }
 
-            mNotificationEntryManager.updateNotifications(
-                    "BubbleData.Listener.applyUpdate");
+            for (NotifCallback cb : mCallbacks) {
+                cb.invalidateNotifications("BubbleData.Listener.applyUpdate");
+            }
             updateStack();
 
             if (DEBUG_BUBBLE_CONTROLLER) {
@@ -981,6 +1046,88 @@
     };
 
     /**
+     * We intercept notification entries (including group summaries) dismissed by the user when
+     * there is an active bubble associated with it. We do this so that developers can still
+     * cancel it (and hence the bubbles associated with it). However, these intercepted
+     * notifications should then be hidden from the shade since the user has cancelled them, so we
+     *  {@link Bubble#setSuppressNotification}.  For the case of suppressed summaries, we also add
+     *  {@link BubbleData#addSummaryToSuppress}.
+     *
+     * @return true if we want to intercept the dismissal of the entry, else false.
+     */
+    public boolean handleDismissalInterception(NotificationEntry entry) {
+        if (entry == null) {
+            return false;
+        }
+
+        final boolean interceptBubbleDismissal = mBubbleData.hasBubbleWithKey(entry.getKey())
+                && entry.isBubble();
+        final boolean interceptSummaryDismissal = isSummaryOfBubbles(entry);
+
+        if (interceptSummaryDismissal) {
+            handleSummaryDismissalInterception(entry);
+        } else if (interceptBubbleDismissal) {
+            Bubble bubble = mBubbleData.getBubbleWithKey(entry.getKey());
+            bubble.setSuppressNotification(true);
+            bubble.setShowDot(false /* show */, true /* animate */);
+        } else {
+            return false;
+        }
+
+        // Update the shade
+        for (NotifCallback cb : mCallbacks) {
+            cb.invalidateNotifications("BubbleController.handleDismissalInterception");
+        }
+        return true;
+    }
+
+    private boolean isSummaryOfBubbles(NotificationEntry entry) {
+        if (entry == null) {
+            return false;
+        }
+
+        String groupKey = entry.getSbn().getGroupKey();
+        ArrayList<Bubble> bubbleChildren = mBubbleData.getBubblesInGroup(groupKey);
+        boolean isSuppressedSummary = (mBubbleData.isSummarySuppressed(groupKey)
+                && mBubbleData.getSummaryKey(groupKey).equals(entry.getKey()));
+        boolean isSummary = entry.getSbn().getNotification().isGroupSummary();
+        return (isSuppressedSummary || isSummary)
+                && bubbleChildren != null
+                && !bubbleChildren.isEmpty();
+    }
+
+    private void handleSummaryDismissalInterception(NotificationEntry summary) {
+        // current children in the row:
+        final List<NotificationEntry> children = summary.getChildren();
+        if (children != null) {
+            for (int i = 0; i < children.size(); i++) {
+                NotificationEntry child = children.get(i);
+                if (mBubbleData.hasBubbleWithKey(child.getKey())) {
+                    // Suppress the bubbled child
+                    // As far as group manager is concerned, once a child is no longer shown
+                    // in the shade, it is essentially removed.
+                    Bubble bubbleChild = mBubbleData.getBubbleWithKey(child.getKey());
+                    mNotificationGroupManager.onEntryRemoved(bubbleChild.getEntry());
+                    bubbleChild.setSuppressNotification(true);
+                    bubbleChild.setShowDot(false /* show */, true /* animate */);
+                } else {
+                    // non-bubbled children can be removed
+                    for (NotifCallback cb : mCallbacks) {
+                        cb.removeNotification(child, REASON_GROUP_SUMMARY_CANCELED);
+                    }
+                }
+            }
+        }
+
+        // And since all children are removed, remove the summary.
+        mNotificationGroupManager.onEntryRemoved(summary);
+
+        // TODO: (b/145659174) remove references to mSuppressedGroupKeys once fully migrated
+        mBubbleData.addSummaryToSuppress(summary.getSbn().getGroupKey(),
+                summary.getKey());
+    }
+
+    /**
      * Lets any listeners know if bubble state has changed.
      * Updates the visibility of the bubbles based on current state.
      * Does not un-bubble, just hides or un-hides. Notifies any
@@ -1166,68 +1313,4 @@
             }
         }
     }
-
-    // TODO: Copied from RemoteInputView. Consolidate RemoteInput intent logic.
-    private Intent prepareRemoteInputFromData(String contentType, Uri data,
-            RemoteInput remoteInput, NotificationEntry entry) {
-        HashMap<String, Uri> results = new HashMap<>();
-        results.put(contentType, data);
-        mRemoteInputUriController.grantInlineReplyUriPermission(entry.getSbn(), data);
-        Intent fillInIntent = new Intent().addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        RemoteInput.addDataResultToIntent(remoteInput, fillInIntent, results);
-
-        return fillInIntent;
-    }
-
-    // TODO: Copied from RemoteInputView. Consolidate RemoteInput intent logic.
-    private void sendRemoteInput(Intent intent, NotificationEntry entry,
-            PendingIntent pendingIntent) {
-        // Tell ShortcutManager that this package has been "activated".  ShortcutManager
-        // will reset the throttling for this package.
-        // Strictly speaking, the intent receiver may be different from the notification publisher,
-        // but that's an edge case, and also because we can't always know which package will receive
-        // an intent, so we just reset for the publisher.
-        mContext.getSystemService(ShortcutManager.class).onApplicationActive(
-                entry.getSbn().getPackageName(),
-                entry.getSbn().getUser().getIdentifier());
-
-        try {
-            pendingIntent.send(mContext, 0, intent);
-        } catch (PendingIntent.CanceledException e) {
-            Log.i(TAG, "Unable to send remote input result", e);
-        }
-    }
-
-    private void sendScreenshotToBubble(Bubble bubble) {
-        mScreenshotHelper.takeScreenshot(
-                android.view.WindowManager.TAKE_SCREENSHOT_FULLSCREEN,
-                true /* hasStatus */,
-                true /* hasNav */,
-                mHandler,
-                new Consumer<Uri>() {
-                    @Override
-                    public void accept(Uri uri) {
-                        if (uri != null) {
-                            NotificationEntry entry = bubble.getEntry();
-                            Pair<RemoteInput, Notification.Action> pair = entry.getSbn()
-                                    .getNotification().findRemoteInputActionPair(false);
-                            if (pair != null) {
-                                RemoteInput remoteInput = pair.first;
-                                Notification.Action action = pair.second;
-                                Intent dataIntent = prepareRemoteInputFromData("image/png", uri,
-                                        remoteInput, entry);
-                                sendRemoteInput(dataIntent, entry, action.actionIntent);
-                                mBubbleData.setSelectedBubble(bubble);
-                                mBubbleData.setExpanded(true);
-                            } else {
-                                Log.w(TAG, "No RemoteInput found for notification: "
-                                        + entry.getSbn().getKey());
-                            }
-                        }
-                    }
-                });
-    }
-
-    private final BubbleScreenshotListener mBubbleScreenshotListener =
-            bubble -> sendScreenshotToBubble(bubble);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
index 673121f..8a5aad8 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleData.java
@@ -199,16 +199,21 @@
         dispatchPendingChanges();
     }
 
-    public void promoteBubbleFromOverflow(Bubble bubble) {
+    public void promoteBubbleFromOverflow(Bubble bubble, BubbleStackView stack,
+            BubbleIconFactory factory) {
         if (DEBUG_BUBBLE_DATA) {
             Log.d(TAG, "promoteBubbleFromOverflow: " + bubble);
         }
-        mOverflowBubbles.remove(bubble);
-        doAdd(bubble);
-        setSelectedBubbleInternal(bubble);
+
         // Preserve new order for next repack, which sorts by last updated time.
         bubble.markUpdatedAt(mTimeSource.currentTimeMillis());
-        trim();
+        setSelectedBubbleInternal(bubble);
+        mOverflowBubbles.remove(bubble);
+
+        bubble.inflate(
+                b -> notificationEntryUpdated(bubble, /* suppressFlyout */
+                        false, /* showInShade */ true),
+                mContext, stack, factory);
         dispatchPendingChanges();
     }
 
@@ -445,6 +450,10 @@
             mOverflowBubbles.add(0, bubbleToRemove);
             if (mOverflowBubbles.size() == mMaxOverflowBubbles + 1) {
                 // Remove oldest bubble.
+                if (DEBUG_BUBBLE_DATA) {
+                    Log.d(TAG, "Overflow full. Remove bubble: " + mOverflowBubbles.get(
+                            mOverflowBubbles.size() - 1));
+                }
                 mOverflowBubbles.remove(mOverflowBubbles.size() - 1);
             }
         }
@@ -511,7 +520,7 @@
         if (Objects.equals(bubble, mSelectedBubble)) {
             return;
         }
-        if (bubble != null && !mBubbles.contains(bubble)) {
+        if (bubble != null && !mBubbles.contains(bubble) && !mOverflowBubbles.contains(bubble)) {
             Log.e(TAG, "Cannot select bubble which doesn't exist!"
                     + " (" + bubble + ") bubbles=" + mBubbles);
             return;
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
index cf8b2be..fe191f4 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExpandedView.java
@@ -19,6 +19,8 @@
 import static android.content.Intent.FLAG_ACTIVITY_MULTIPLE_TASK;
 import static android.content.Intent.FLAG_ACTIVITY_NEW_DOCUMENT;
 import static android.view.Display.INVALID_DISPLAY;
+import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
+import static android.view.ViewRootImpl.sNewInsetsMode;
 
 import static com.android.systemui.bubbles.BubbleDebugConfig.DEBUG_BUBBLE_EXPANDED_VIEW;
 import static com.android.systemui.bubbles.BubbleDebugConfig.TAG_BUBBLES;
@@ -54,6 +56,7 @@
 import com.android.systemui.recents.TriangleShape;
 import com.android.systemui.shared.system.SysUiStatsLog;
 import com.android.systemui.statusbar.AlphaOptimizedButton;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 
 /**
  * Container for the expanded bubble view, handles rendering the caret and settings icon.
@@ -144,7 +147,7 @@
                             // the bubble again so we'll just remove it.
                             Log.w(TAG, "Exception while displaying bubble: " + getBubbleKey()
                                     + ", " + e.getMessage() + "; removing bubble");
-                            mBubbleController.removeBubble(getBubbleKey(),
+                            mBubbleController.removeBubble(getBubbleEntry(),
                                     BubbleController.DISMISS_INVALID_INTENT);
                         }
                     });
@@ -188,7 +191,7 @@
             }
             if (mBubble != null && !mBubbleController.isUserCreatedBubble(mBubble.getKey())) {
                 // Must post because this is called from a binder thread.
-                post(() -> mBubbleController.removeBubble(mBubble.getKey(),
+                post(() -> mBubbleController.removeBubble(mBubble.getEntry(),
                         BubbleController.DISMISS_TASK_FINISHED));
             }
         }
@@ -277,6 +280,10 @@
         return mBubble != null ? mBubble.getKey() : "null";
     }
 
+    private NotificationEntry getBubbleEntry() {
+        return mBubble != null ? mBubble.getEntry() : null;
+    }
+
     void applyThemeAttrs() {
         final TypedArray ta = mContext.obtainStyledAttributes(
                 new int[] {
@@ -287,7 +294,8 @@
         ta.recycle();
 
         mPointerDrawable.setTint(bgColor);
-        if (ScreenDecorationsUtils.supportsRoundedCornersOnWindows(mContext.getResources())) {
+        if (mActivityView != null && ScreenDecorationsUtils.supportsRoundedCornersOnWindows(
+                mContext.getResources())) {
             mActivityView.setCornerRadius(cornerRadius);
         }
     }
@@ -338,7 +346,13 @@
                             ? insets.getDisplayCutout().getSafeInsetBottom()
                             : 0);
             final int insetsBottom = Math.max(activityViewBottom - keyboardTop, 0);
-            mActivityView.setForwardedInsets(Insets.of(0, 0, 0, insetsBottom));
+
+            // TODO: Temporary hack to offset the view until we can properly inset Bubbles again.
+            if (sNewInsetsMode == NEW_INSETS_MODE_FULL) {
+                mStackView.animate().translationY(-insetsBottom);
+            } else {
+                mActivityView.setForwardedInsets(Insets.of(0, 0, 0, insetsBottom));
+            }
         }
     }
 
@@ -440,12 +454,8 @@
         int bottomInset = getRootWindowInsets() != null
                 ? getRootWindowInsets().getStableInsetBottom()
                 : 0;
-        int mh = mDisplaySize.y - windowLocation[1] - mSettingsIconHeight - mPointerHeight
+        return mDisplaySize.y - windowLocation[1] - mSettingsIconHeight - mPointerHeight
                 - mPointerMargin - bottomInset;
-        Log.i(TAG, "max exp height: " + mh);
-//        return mDisplaySize.y - windowLocation[1] - mSettingsIconHeight - mPointerHeight
-//                - mPointerMargin - bottomInset;
-        return mh;
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
index 006de84..20b3386 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleExperimentConfig.java
@@ -73,9 +73,6 @@
 
     private static final String WHITELISTED_AUTO_BUBBLE_APPS = "whitelisted_auto_bubble_apps";
 
-    private static final String ALLOW_BUBBLE_MENU = "allow_bubble_screenshot_menu";
-    private static final boolean ALLOW_BUBBLE_MENU_DEFAULT = false;
-
     private static final String ALLOW_BUBBLE_OVERFLOW = "allow_bubble_overflow";
     private static final boolean ALLOW_BUBBLE_OVERFLOW_DEFAULT = false;
 
@@ -137,16 +134,6 @@
      * When true, show a menu when a bubble is long-pressed, which will allow the user to take
      * actions on that bubble.
      */
-    static boolean allowBubbleScreenshotMenu(Context context) {
-        return Settings.Secure.getInt(context.getContentResolver(),
-                ALLOW_BUBBLE_MENU,
-                ALLOW_BUBBLE_MENU_DEFAULT ? 1 : 0) != 0;
-    }
-
-    /**
-     * When true, show a menu when a bubble is long-pressed, which will allow the user to take
-     * actions on that bubble.
-     */
     static boolean allowBubbleOverflow(Context context) {
         return Settings.Secure.getInt(context.getContentResolver(),
                 ALLOW_BUBBLE_OVERFLOW,
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleFlyoutView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleFlyoutView.java
index 4194352..5b9ea7d 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleFlyoutView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleFlyoutView.java
@@ -431,7 +431,7 @@
             final float interpolatedRadius = getInterpolatedRadius();
             rectPath.addRoundRect(mBgRect, interpolatedRadius,
                     interpolatedRadius, Path.Direction.CW);
-            outline.setConvexPath(rectPath);
+            outline.setPath(rectPath);
 
             // Get rid of the triangle path once it has disappeared behind the flyout.
             if (mPercentStillFlyout > 0.5f) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleMenuView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleMenuView.java
deleted file mode 100644
index bf83065..0000000
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleMenuView.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2019 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.bubbles;
-
-import android.content.Context;
-import android.util.AttributeSet;
-import android.view.View;
-import android.widget.FrameLayout;
-import android.widget.ImageView;
-
-import com.android.systemui.R;
-
-/**
- * Menu which allows users to take actions on bubbles, ex. screenshots.
- */
-public class BubbleMenuView extends FrameLayout {
-    private FrameLayout mMenu;
-    private boolean mShowing = false;
-
-    /** Delay before taking a screenshot once the button is tapped to allow the menu time to hide.*/
-    public static final long SCREENSHOT_DELAY = 200;
-
-    public BubbleMenuView(Context context, AttributeSet attrs) {
-        super(context, attrs);
-    }
-
-    public BubbleMenuView(Context context) {
-        super(context);
-    }
-
-    @Override
-    protected void onFinishInflate() {
-        super.onFinishInflate();
-        mMenu = findViewById(R.id.bubble_menu_view);
-        ImageView icon = findViewById(com.android.internal.R.id.icon);
-        icon.setImageDrawable(mContext.getDrawable(com.android.internal.R.drawable.ic_screenshot));
-    }
-
-    /**
-     * Get the bubble menu view.
-     */
-    public View getMenuView() {
-        return mMenu;
-    }
-
-    /**
-     * Checks whether the bubble menu is currently displayed.
-     */
-    public boolean isShowing() {
-        return mShowing;
-    }
-
-    /**
-     * Show the bubble menu at the specified position on the screen.
-     */
-    public void show(float x, float y) {
-        mShowing = true;
-        this.setVisibility(VISIBLE);
-        mMenu.setTranslationX(x);
-        mMenu.setTranslationY(y);
-    }
-
-    /**
-     * Hide the bubble menu.
-     */
-    public void hide() {
-        mShowing = false;
-        this.setVisibility(GONE);
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
index bea55c8..f3cfa83 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleOverflowActivity.java
@@ -26,7 +26,10 @@
 import android.os.Bundle;
 import android.util.Log;
 import android.view.LayoutInflater;
+import android.view.View;
 import android.view.ViewGroup;
+import android.widget.LinearLayout;
+import android.widget.TextView;
 
 import androidx.recyclerview.widget.GridLayoutManager;
 import androidx.recyclerview.widget.RecyclerView;
@@ -46,6 +49,7 @@
 public class BubbleOverflowActivity extends Activity {
     private static final String TAG = TAG_WITH_CLASS_NAME ? "BubbleOverflowActivity" : TAG_BUBBLES;
 
+    private LinearLayout mEmptyState;
     private BubbleController mBubbleController;
     private BubbleOverflowAdapter mAdapter;
     private RecyclerView mRecyclerView;
@@ -64,6 +68,7 @@
         setBackgroundColor();
 
         mMaxBubbles = getResources().getInteger(R.integer.bubbles_max_rendered);
+        mEmptyState = findViewById(R.id.bubble_overflow_empty_state);
         mRecyclerView = findViewById(R.id.bubble_overflow_recycler);
         mRecyclerView.setLayoutManager(
                 new GridLayoutManager(getApplicationContext(),
@@ -73,9 +78,9 @@
                 mBubbleController::promoteBubbleFromOverflow);
         mRecyclerView.setAdapter(mAdapter);
 
-        updateData(mBubbleController.getOverflowBubbles());
+        onDataChanged(mBubbleController.getOverflowBubbles());
         mBubbleController.setOverflowCallback(() -> {
-            updateData(mBubbleController.getOverflowBubbles());
+            onDataChanged(mBubbleController.getOverflowBubbles());
         });
     }
 
@@ -87,7 +92,7 @@
         findViewById(android.R.id.content).setBackgroundColor(bgColor);
     }
 
-    void updateData(List<Bubble> bubbles) {
+    void onDataChanged(List<Bubble> bubbles) {
         mOverflowBubbles.clear();
         if (bubbles.size() > mMaxBubbles) {
             mOverflowBubbles.addAll(bubbles.subList(mMaxBubbles, bubbles.size()));
@@ -96,6 +101,12 @@
         }
         mAdapter.notifyDataSetChanged();
 
+        if (mOverflowBubbles.isEmpty()) {
+            mEmptyState.setVisibility(View.VISIBLE);
+        } else {
+            mEmptyState.setVisibility(View.GONE);
+        }
+
         if (DEBUG_OVERFLOW) {
             Log.d(TAG, "Updated overflow bubbles:\n" + BubbleDebugConfig.formatBubblesString(
                     mOverflowBubbles, /*selected*/ null));
@@ -146,7 +157,6 @@
             int viewType) {
         BadgedImageView view = (BadgedImageView) LayoutInflater.from(parent.getContext())
                 .inflate(R.layout.bubble_view, parent, false);
-        view.setPadding(15, 15, 15, 15);
         return new ViewHolder(view);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
index 685bb94..cff78cf 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleStackView.java
@@ -115,7 +115,6 @@
     /** How long to wait, in milliseconds, before hiding the flyout. */
     @VisibleForTesting
     static final int FLYOUT_HIDE_AFTER = 5000;
-    private BubbleController.BubbleScreenshotListener mBubbleScreenshotListener;
 
     /**
      * Interface to synchronize {@link View} state and the screen.
@@ -169,7 +168,6 @@
     private ExpandedAnimationController mExpandedAnimationController;
 
     private FrameLayout mExpandedViewContainer;
-    @Nullable private BubbleMenuView mBubbleMenuView;
 
     private BubbleFlyoutView mFlyout;
     /** Runnable that fades out the flyout and then sets it to GONE. */
@@ -516,9 +514,6 @@
             mDesaturateAndDarkenPaint.setColorFilter(new ColorMatrixColorFilter(animatedMatrix));
             mDesaturateAndDarkenTargetView.setLayerPaint(mDesaturateAndDarkenPaint);
         });
-
-        mInflater.inflate(R.layout.bubble_menu_view, this);
-        mBubbleMenuView = findViewById(R.id.bubble_menu_container);
     }
 
     private void setUpOverflow() {
@@ -526,12 +521,19 @@
                 R.layout.bubble_expanded_view, this /* root */, false /* attachToRoot */);
         mOverflowExpandedView.setOverflow(true);
 
-        mInflater.inflate(R.layout.bubble_overflow_button, this);
-        mOverflowBtn = findViewById(R.id.bubble_overflow_button);
-        mOverflowBtn.setOnClickListener(v -> {
-            setSelectedBubble(null);
-        });
+        mOverflowBtn = (ImageView) mInflater.inflate(R.layout.bubble_overflow_button,
+                this /* root */,
+                false /* attachToRoot */);
 
+        mBubbleContainer.addView(mOverflowBtn, 0,
+                new FrameLayout.LayoutParams(WRAP_CONTENT, WRAP_CONTENT));
+
+        setOverflowBtnTheme();
+        mOverflowBtn.setVisibility(GONE);
+    }
+
+    // TODO(b/149146374) Propagate theme change to bubbles in overflow.
+    private void setOverflowBtnTheme() {
         TypedArray ta = mContext.obtainStyledAttributes(
                 new int[]{android.R.attr.colorBackgroundFloating});
         int bgColor = ta.getColor(0, Color.WHITE /* default */);
@@ -541,11 +543,11 @@
         ColorDrawable bg = new ColorDrawable(bgColor);
         AdaptiveIconDrawable adaptiveIcon = new AdaptiveIconDrawable(bg, fg);
         mOverflowBtn.setImageDrawable(adaptiveIcon);
-        mOverflowBtn.setVisibility(GONE);
     }
 
     void showExpandedViewContents(int displayId) {
-        if (mOverflowExpandedView.getVirtualDisplayId() == displayId) {
+        if (mOverflowExpandedView != null
+                && mOverflowExpandedView.getVirtualDisplayId() == displayId) {
             mOverflowExpandedView.setContentVisibility(true);
         } else if (mExpandedBubble != null
                 && mExpandedBubble.getExpandedView().getVirtualDisplayId() == displayId) {
@@ -570,6 +572,9 @@
      */
     public void onThemeChanged() {
         setUpFlyout();
+        if (BubbleExperimentConfig.allowBubbleOverflow(mContext)) {
+            setOverflowBtnTheme();
+        }
     }
 
     /** Respond to the phone being rotated by repositioning the stack and hiding any flyouts. */
@@ -714,7 +719,7 @@
     private void updateSystemGestureExcludeRects() {
         // Exclude the region occupied by the first BubbleView in the stack
         Rect excludeZone = mSystemGestureExclusionRects.get(0);
-        if (mBubbleContainer.getChildCount() > 0) {
+        if (getBubbleCount() > 0) {
             View firstBubble = mBubbleContainer.getChildAt(0);
             excludeZone.set(firstBubble.getLeft(), firstBubble.getTop(), firstBubble.getRight(),
                     firstBubble.getBottom());
@@ -735,13 +740,6 @@
     }
 
     /**
-     * Sets the screenshot listener.
-     */
-    public void setBubbleScreenshotListener(BubbleController.BubbleScreenshotListener listener) {
-        mBubbleScreenshotListener = listener;
-    }
-
-    /**
      * Whether the stack of bubbles is expanded or not.
      */
     public boolean isExpanded() {
@@ -775,7 +773,7 @@
             Log.d(TAG, "addBubble: " + bubble);
         }
 
-        if (mBubbleContainer.getChildCount() == 0) {
+        if (getBubbleCount() == 0) {
             mStackOnLeftOrWillBe = mStackAnimationController.isStackOnLeftSide();
         }
 
@@ -804,6 +802,7 @@
         if (removedIndex >= 0) {
             mBubbleContainer.removeViewAt(removedIndex);
             bubble.cleanupExpandedState();
+            bubble.setInflated(false);
             logBubbleEvent(bubble, SysUiStatsLog.BUBBLE_UICHANGED__ACTION__DISMISSED);
         } else {
             Log.d(TAG, "was asked to remove Bubble, but didn't find the view! " + bubble);
@@ -817,16 +816,13 @@
         }
         if (mIsExpanded) {
             if (DEBUG_BUBBLE_STACK_VIEW) {
-                Log.d(TAG, "Expanded && overflow > 0. Show overflow button at");
-                Log.d(TAG, "x: " + mExpandedAnimationController.getOverflowBtnLeft());
-                Log.d(TAG, "y: " + mExpandedAnimationController.getExpandedY());
+                Log.d(TAG, "Show overflow button.");
             }
-            mOverflowBtn.setX(mExpandedAnimationController.getOverflowBtnLeft());
-            mOverflowBtn.setY(mExpandedAnimationController.getExpandedY());
             mOverflowBtn.setVisibility(VISIBLE);
-            mExpandedAnimationController.setShowOverflowBtn(true);
             if (apply) {
-                mExpandedAnimationController.expandFromStack(null /* after */);
+                mExpandedAnimationController.expandFromStack(() -> {
+                    updatePointerPosition();
+                } /* after */);
             }
         } else {
             if (DEBUG_BUBBLE_STACK_VIEW) {
@@ -852,6 +848,10 @@
         updateBubbleZOrdersAndDotPosition(false /* animate */);
     }
 
+    void showOverflow() {
+        setSelectedBubble(null);
+    }
+
     /**
      * Changes the currently selected bubble. If the stack is already expanded, the newly selected
      * bubble will be shown immediately. This does not change the expanded state or change the
@@ -938,16 +938,14 @@
     public View getTargetView(MotionEvent event) {
         float x = event.getRawX();
         float y = event.getRawY();
-        if (mBubbleMenuView.isShowing()) {
-            if (isIntersecting(mBubbleMenuView.getMenuView(), x, y)) {
-                return mBubbleMenuView;
-            }
-            return null;
-        }
         if (mIsExpanded) {
             if (isIntersecting(mBubbleContainer, x, y)) {
+                if (BubbleExperimentConfig.allowBubbleOverflow(mContext)
+                        && isIntersecting(mOverflowBtn, x, y)) {
+                    return mOverflowBtn;
+                }
                 // Could be tapping or dragging a bubble while expanded
-                for (int i = 0; i < mBubbleContainer.getChildCount(); i++) {
+                for (int i = 0; i < getBubbleCount(); i++) {
                     BadgedImageView view = (BadgedImageView) mBubbleContainer.getChildAt(i);
                     if (isIntersecting(view, x, y)) {
                         return view;
@@ -1103,7 +1101,7 @@
 
     /** Return the BubbleView at the given index from the bubble container. */
     public BadgedImageView getBubbleAt(int i) {
-        return mBubbleContainer.getChildCount() > i
+        return getBubbleCount() > i
                 ? (BadgedImageView) mBubbleContainer.getChildAt(i)
                 : null;
     }
@@ -1160,7 +1158,6 @@
             }
             return;
         }
-        hideBubbleMenu();
         mStackAnimationController.cancelStackPositionAnimations();
         mBubbleContainer.setActiveController(mStackAnimationController);
         hideFlyoutImmediate();
@@ -1562,12 +1559,8 @@
     @Override
     public void getBoundsOnScreen(Rect outRect) {
         // If the bubble menu is open, the entire screen should capture touch events.
-        if (mBubbleMenuView.isShowing()) {
-            outRect.set(0, 0, getWidth(), getHeight());
-            return;
-        }
         if (!mIsExpanded) {
-            if (mBubbleContainer.getChildCount() > 0) {
+            if (getBubbleCount() > 0) {
                 mBubbleContainer.getChildAt(0).getBoundsOnScreen(outRect);
             }
             // Increase the touch target size of the bubble
@@ -1661,7 +1654,7 @@
 
     /** Sets the appropriate Z-order and dot position for each bubble in the stack. */
     private void updateBubbleZOrdersAndDotPosition(boolean animate) {
-        int bubbleCount = mBubbleContainer.getChildCount();
+        int bubbleCount = getBubbleCount();
         for (int i = 0; i < bubbleCount; i++) {
             BadgedImageView bv = (BadgedImageView) mBubbleContainer.getChildAt(i);
             bv.setZ((mMaxBubbles * mBubbleElevation) - i);
@@ -1677,30 +1670,23 @@
         if (expandedBubble == null) {
             return;
         }
-
         int index = getBubbleIndex(expandedBubble);
-        if (index >= mMaxBubbles) {
-            // In between state, where extra bubble will be overflowed, and new bubble added
-            index = 0;
-        }
         float bubbleLeftFromScreenLeft = mExpandedAnimationController.getBubbleLeft(index);
         float halfBubble = mBubbleSize / 2f;
         float bubbleCenter = bubbleLeftFromScreenLeft + halfBubble;
         // Padding might be adjusted for insets, so get it directly from the view
         bubbleCenter -= mExpandedViewContainer.getPaddingLeft();
-
-        if (index >= mMaxBubbles) {
-            Bubble first = mBubbleData.getBubbles().get(0);
-            first.getExpandedView().setPointerPosition(bubbleCenter);
-        } else {
-            expandedBubble.getExpandedView().setPointerPosition(bubbleCenter);
-        }
+        expandedBubble.getExpandedView().setPointerPosition(bubbleCenter);
     }
 
     /**
      * @return the number of bubbles in the stack view.
      */
     public int getBubbleCount() {
+        if (BubbleExperimentConfig.allowBubbleOverflow(mContext)) {
+            // Subtract 1 for the overflow button which is always in the bubble container.
+            return mBubbleContainer.getChildCount() - 1;
+        }
         return mBubbleContainer.getChildCount();
     }
 
@@ -1797,7 +1783,7 @@
     /** For debugging only */
     List<Bubble> getBubblesOnScreen() {
         List<Bubble> bubbles = new ArrayList<>();
-        for (int i = 0; i < mBubbleContainer.getChildCount(); i++) {
+        for (int i = 0; i < getBubbleCount(); i++) {
             View child = mBubbleContainer.getChildAt(i);
             if (child instanceof BadgedImageView) {
                 String key = ((BadgedImageView) child).getKey();
@@ -1807,50 +1793,4 @@
         }
         return bubbles;
     }
-
-    /**
-     * Show the bubble menu, positioned relative to the stack.
-     */
-    public void showBubbleMenu() {
-        PointF currentPos = mStackAnimationController.getStackPosition();
-        mBubbleMenuView.setVisibility(View.INVISIBLE);
-        post(() -> {
-            float yPos = currentPos.y;
-            float xPos = currentPos.x;
-            if (mStackAnimationController.isStackOnLeftSide()) {
-                xPos += mBubbleSize;
-            } else {
-                xPos -= mBubbleMenuView.getMenuView().getWidth();
-            }
-
-            mBubbleMenuView.show(xPos, yPos);
-        });
-    }
-
-    /**
-     * Hide the bubble menu.
-     */
-    public void hideBubbleMenu() {
-        mBubbleMenuView.hide();
-    }
-
-    /**
-     * Determines whether the bubble menu is currently showing.
-     */
-    public boolean isShowingBubbleMenu() {
-        return mBubbleMenuView.isShowing();
-    }
-
-    /**
-     * Take a screenshot and send it to the specified bubble.
-     */
-    public void sendScreenshotToBubble(Bubble bubble) {
-        hideBubbleMenu();
-        // delay allows the bubble menu to disappear before the screenshot
-        // done here because we already have a Handler to delay with.
-        // TODO: Hide bubble + menu UI from screenshots entirely instead of just delaying.
-        postDelayed(() -> {
-            mBubbleScreenshotListener.onBubbleScreenshot(bubble);
-        }, BubbleMenuView.SCREENSHOT_DELAY);
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleTouchHandler.java b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleTouchHandler.java
index fdeaf1f..645696d0 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/BubbleTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/BubbleTouchHandler.java
@@ -24,6 +24,7 @@
 import android.view.ViewConfiguration;
 
 import com.android.systemui.Dependency;
+import com.android.systemui.R;
 
 /**
  * Handles interpreting touches on a {@link BubbleStackView}. This includes expanding, collapsing,
@@ -57,14 +58,12 @@
     private final PointF mViewPositionOnTouchDown = new PointF();
     private final BubbleStackView mStack;
     private final BubbleData mBubbleData;
-    private final Context mContext;
 
     private BubbleController mController = Dependency.get(BubbleController.class);
 
     private boolean mMovedEnough;
     private int mTouchSlopSquared;
     private VelocityTracker mVelocityTracker;
-    private Runnable mShowBubbleMenuRunnable;
 
     /** View that was initially touched, when we received the first ACTION_DOWN event. */
     private View mTouchedView;
@@ -77,7 +76,6 @@
         mTouchSlopSquared = touchSlop * touchSlop;
         mBubbleData = bubbleData;
         mStack = stackView;
-        mContext = context;
     }
 
     @Override
@@ -94,24 +92,19 @@
         // anything, collapse the stack.
         if (action == MotionEvent.ACTION_OUTSIDE || mTouchedView == null) {
             mBubbleData.setExpanded(false);
-            mStack.hideBubbleMenu();
             resetForNextGesture();
             return false;
         }
 
-        if (mTouchedView instanceof BubbleMenuView) {
-            mStack.hideBubbleMenu();
-            resetForNextGesture();
-            mStack.sendScreenshotToBubble(mBubbleData.getSelectedBubble());
-            return false;
-        }
-
         if (!(mTouchedView instanceof BadgedImageView)
                 && !(mTouchedView instanceof BubbleStackView)
                 && !(mTouchedView instanceof BubbleFlyoutView)) {
+
+            if (mTouchedView.getId() == R.id.bubble_overflow_button) {
+                mStack.showOverflow();
+            }
             // Not touching anything touchable, but we shouldn't collapse (e.g. touching edge
             // of expanded view).
-            mStack.hideBubbleMenu();
             resetForNextGesture();
             return false;
         }
@@ -134,12 +127,6 @@
                 if (isStack) {
                     mViewPositionOnTouchDown.set(mStack.getStackPosition());
                     mStack.onDragStart();
-                    if (!mStack.isShowingBubbleMenu() && !mStack.isExpanded()
-                            && BubbleExperimentConfig.allowBubbleScreenshotMenu(mContext)) {
-                        mShowBubbleMenuRunnable = mStack::showBubbleMenu;
-                        mStack.postDelayed(mShowBubbleMenuRunnable,
-                                ViewConfiguration.getLongPressTimeout());
-                    }
                 } else if (isFlyout) {
                     mStack.onFlyoutDragStart();
                 } else {
@@ -150,10 +137,6 @@
 
                 break;
             case MotionEvent.ACTION_MOVE:
-                // block all further touch inputs once the menu is open
-                if (mStack.isShowingBubbleMenu()) {
-                    return true;
-                }
                 trackMovement(event);
                 final float deltaX = rawX - mTouchDown.x;
                 final float deltaY = rawY - mTouchDown.y;
@@ -163,7 +146,6 @@
                 }
 
                 if (mMovedEnough) {
-                    mStack.removeCallbacks(mShowBubbleMenuRunnable);
                     if (isStack) {
                         mStack.onDragged(viewX, viewY);
                     } else if (isFlyout) {
@@ -194,12 +176,6 @@
                 break;
 
             case MotionEvent.ACTION_UP:
-                if (mStack.isShowingBubbleMenu()) {
-                    resetForNextGesture();
-                    return true;
-                } else {
-                    mStack.removeCallbacks(mShowBubbleMenuRunnable);
-                }
                 trackMovement(event);
                 mVelocityTracker.computeCurrentVelocity(/* maxVelocity */ 1000);
                 final float velX = mVelocityTracker.getXVelocity();
@@ -222,9 +198,14 @@
                                 if (isStack) {
                                     mController.dismissStack(BubbleController.DISMISS_USER_GESTURE);
                                 } else {
-                                    mController.removeBubble(
-                                            individualBubbleKey,
-                                            BubbleController.DISMISS_USER_GESTURE);
+                                    final Bubble bubble =
+                                            mBubbleData.getBubbleWithKey(individualBubbleKey);
+                                    // bubble can be null if the user is in the middle of
+                                    // dismissing the bubble, but the app also sent a cancel
+                                    if (bubble != null) {
+                                        mController.removeBubble(bubble.getEntry(),
+                                                BubbleController.DISMISS_USER_GESTURE);
+                                    }
                                 }
                             });
                 } else if (isFlyout) {
diff --git a/packages/SystemUI/src/com/android/systemui/bubbles/animation/ExpandedAnimationController.java b/packages/SystemUI/src/com/android/systemui/bubbles/animation/ExpandedAnimationController.java
index 6d6969d..607b5ef 100644
--- a/packages/SystemUI/src/com/android/systemui/bubbles/animation/ExpandedAnimationController.java
+++ b/packages/SystemUI/src/com/android/systemui/bubbles/animation/ExpandedAnimationController.java
@@ -31,6 +31,7 @@
 
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
+import com.android.systemui.bubbles.BubbleExperimentConfig;
 
 import com.google.android.collect.Sets;
 
@@ -67,13 +68,13 @@
     private float mBubblePaddingTop;
     /** Size of each bubble. */
     private float mBubbleSizePx;
-    /** Width of the overflow button. */
-    private float mOverflowBtnWidth;
+    /** Space between bubbles in row above expanded view. */
+    private float mSpaceBetweenBubbles;
     /** Height of the status bar. */
     private float mStatusBarHeight;
     /** Size of display. */
     private Point mDisplaySize;
-    /** Max number of bubbles shown in row above expanded view.*/
+    /** Max number of bubbles shown in row above expanded view. */
     private int mBubblesMaxRendered;
     /** What the current screen orientation is. */
     private int mScreenOrientation;
@@ -99,7 +100,6 @@
     private boolean mSpringingBubbleToTouch = false;
 
     private int mExpandedViewPadding;
-    private boolean mShowOverflowBtn;
 
     public ExpandedAnimationController(Point displaySize, int expandedViewPadding,
             int orientation) {
@@ -153,14 +153,6 @@
         }
     }
 
-    public void setShowOverflowBtn(boolean showBtn) {
-        mShowOverflowBtn = showBtn;
-    }
-
-    public boolean getShowOverflowBtn() {
-        return mShowOverflowBtn;
-    }
-
     /**
      * Animates the bubbles along a curved path, either to expand them along the top or collapse
      * them back into a stack.
@@ -369,10 +361,10 @@
         }
         final WindowInsets insets = mLayout.getRootWindowInsets();
         return mBubblePaddingTop + Math.max(
-            mStatusBarHeight,
-            insets.getDisplayCutout() != null
-                ? insets.getDisplayCutout().getSafeInsetTop()
-                : 0);
+                mStatusBarHeight,
+                insets.getDisplayCutout() != null
+                        ? insets.getDisplayCutout().getSafeInsetTop()
+                        : 0);
     }
 
     /** Description of current animation controller state. */
@@ -391,11 +383,18 @@
         mStackOffsetPx = res.getDimensionPixelSize(R.dimen.bubble_stack_offset);
         mBubblePaddingTop = res.getDimensionPixelSize(R.dimen.bubble_padding_top);
         mBubbleSizePx = res.getDimensionPixelSize(R.dimen.individual_bubble_size);
-        mOverflowBtnWidth = mBubbleSizePx;
         mStatusBarHeight =
                 res.getDimensionPixelSize(com.android.internal.R.dimen.status_bar_height);
         mBubblesMaxRendered = res.getInteger(R.integer.bubbles_max_rendered);
 
+        // Includes overflow button.
+        // TODO(b/148675523) this is a temporary work around; change back once we have proper fix.
+//        float totalGapWidth = getWidthForDisplayingBubbles() - (mExpandedViewPadding * 2)
+//                - (mBubblesMaxRendered + 1) * mBubbleSizePx;
+        float totalGapWidth = getAvailableScreenWidth(true /* includeStableInsets */)
+                - (mExpandedViewPadding * 2) - (mBubblesMaxRendered + 1) * mBubbleSizePx;
+        mSpaceBetweenBubbles = totalGapWidth / mBubblesMaxRendered;
+
         // Ensure that all child views are at 1x scale, and visible, in case they were animating
         // in.
         mLayout.setVisibility(View.VISIBLE);
@@ -506,18 +505,10 @@
      * @return Bubble left x from left edge of screen.
      */
     public float getBubbleLeft(int index) {
-        final float bubbleFromRowLeft = index * (mBubbleSizePx + getSpaceBetweenBubbles());
+        final float bubbleFromRowLeft = index * (mBubbleSizePx + mSpaceBetweenBubbles);
         return getRowLeft() + bubbleFromRowLeft;
     }
 
-    public float getOverflowBtnLeft() {
-        if (mLayout == null || mLayout.getChildCount() == 0) {
-            return 0;
-        }
-        return getBubbleLeft(mLayout.getChildCount() - 1) + mBubbleSizePx
-                + getSpaceBetweenBubbles();
-    }
-
     /**
      * When expanded, the bubbles are centered in the screen. In portrait, all available space is
      * used. In landscape we have too much space so the value is restricted. This method accounts
@@ -539,7 +530,7 @@
      * Determines the available screen width without the cutout.
      *
      * @param subtractStableInsets Whether or not stable insets should also be removed from the
-     *                            returned width.
+     *                             returned width.
      * @return the total screen width available accounting for cutouts and insets,
      * iff {@param includeStableInsets} is true.
      */
@@ -566,38 +557,13 @@
         if (mLayout == null) {
             return 0;
         }
-
-        int bubbleCount = mLayout.getChildCount();
-
-        final float totalBubbleWidth = bubbleCount * mBubbleSizePx;
-        final float totalGapWidth = (bubbleCount - 1) * getSpaceBetweenBubbles();
-        float rowWidth = totalGapWidth + totalBubbleWidth;
-        if (mShowOverflowBtn) {
-            rowWidth += getSpaceBetweenBubbles();
-            rowWidth += mOverflowBtnWidth;
-        }
+        float rowWidth = (mLayout.getChildCount() * mBubbleSizePx)
+                + ((mLayout.getChildCount() - 1) * mSpaceBetweenBubbles);
 
         // This display size we're using includes the size of the insets, we want the true
         // center of the display minus the notch here, which means we should include the
         // stable insets (e.g. status bar, nav bar) in this calculation.
         final float trueCenter = getAvailableScreenWidth(false /* subtractStableInsets */) / 2f;
-        final float halfRow = rowWidth / 2f;
-        final float rowLeft = trueCenter - halfRow;
-        return rowLeft;
-    }
-
-    /**
-     * @return Space between bubbles in row above expanded view.
-     */
-    private float getSpaceBetweenBubbles() {
-        final float totalBubbleWidth = mBubblesMaxRendered * mBubbleSizePx;
-        final float rowMargins = mExpandedViewPadding * 2;
-        float totalGapWidth = getWidthForDisplayingBubbles() - rowMargins - totalBubbleWidth;
-        if (mShowOverflowBtn) {
-            totalGapWidth -= mBubbleSizePx;
-        }
-        final int gapCount = mBubblesMaxRendered - 1;
-        final float gapWidth = totalGapWidth / gapCount;
-        return gapWidth;
+        return trueCenter - (rowWidth / 2f);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java
index 099909d..e105795a 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerFake.java
@@ -35,7 +35,7 @@
     private boolean mIsReportingEnabled;
 
     @Override
-    public void onSucccessfulUnlock() {
+    public void onSuccessfulUnlock() {
 
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
index d6faed5..6a64c83 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerImpl.java
@@ -375,7 +375,7 @@
         sessionExitpoint(false /* force */);
     }
 
-    public void onSucccessfulUnlock() {
+    public void onSuccessfulUnlock() {
         if (FalsingLog.ENABLED) {
             FalsingLog.i("onSucccessfulUnlock", "");
         }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
index b2131e7..0db9ffc 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/FalsingManagerProxy.java
@@ -25,9 +25,12 @@
 import android.util.DisplayMetrics;
 import android.view.MotionEvent;
 
+import androidx.annotation.NonNull;
+
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.keyguard.KeyguardUpdateMonitor;
-import com.android.systemui.Dependency;
+import com.android.systemui.DumpController;
+import com.android.systemui.Dumpable;
 import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
 import com.android.systemui.classifier.brightline.FalsingDataProvider;
 import com.android.systemui.dagger.qualifiers.Main;
@@ -40,6 +43,7 @@
 import com.android.systemui.util.DeviceConfigProxy;
 import com.android.systemui.util.sensors.ProximitySensor;
 
+import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.concurrent.Executor;
 
@@ -52,7 +56,7 @@
  * {@link FalsingManagerImpl} is used when a Plugin is not loaded.
  */
 @Singleton
-public class FalsingManagerProxy implements FalsingManager {
+public class FalsingManagerProxy implements FalsingManager, Dumpable {
 
     private static final String PROXIMITY_SENSOR_TAG = "FalsingManager";
 
@@ -63,16 +67,20 @@
     private final DeviceConfigProxy mDeviceConfig;
     private boolean mBrightlineEnabled;
     private final DockManager mDockManager;
+    private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
     private Executor mUiBgExecutor;
 
     @Inject
     FalsingManagerProxy(Context context, PluginManager pluginManager, @Main Executor executor,
             DisplayMetrics displayMetrics, ProximitySensor proximitySensor,
             DeviceConfigProxy deviceConfig, DockManager dockManager,
+            KeyguardUpdateMonitor keyguardUpdateMonitor,
+            DumpController dumpController,
             @UiBackground Executor uiBgExecutor) {
         mDisplayMetrics = displayMetrics;
         mProximitySensor = proximitySensor;
         mDockManager = dockManager;
+        mKeyguardUpdateMonitor = keyguardUpdateMonitor;
         mUiBgExecutor = uiBgExecutor;
         mProximitySensor.setTag(PROXIMITY_SENSOR_TAG);
         mProximitySensor.setSensorDelay(SensorManager.SENSOR_DELAY_GAME);
@@ -101,6 +109,8 @@
         };
 
         pluginManager.addPluginListener(mPluginListener, FalsingPlugin.class);
+
+        dumpController.registerDumpable("FalsingManager", this);
     }
 
     private void onDeviceConfigPropertiesChanged(Context context, String namespace) {
@@ -130,7 +140,7 @@
         } else {
             mInternalFalsingManager = new BrightLineFalsingManager(
                     new FalsingDataProvider(mDisplayMetrics),
-                    Dependency.get(KeyguardUpdateMonitor.class),
+                    mKeyguardUpdateMonitor,
                     mProximitySensor,
                     mDeviceConfig,
                     mDockManager
@@ -147,8 +157,8 @@
     }
 
     @Override
-    public void onSucccessfulUnlock() {
-        mInternalFalsingManager.onSucccessfulUnlock();
+    public void onSuccessfulUnlock() {
+        mInternalFalsingManager.onSuccessfulUnlock();
     }
 
     @Override
@@ -322,6 +332,11 @@
     }
 
     @Override
+    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
+        mInternalFalsingManager.dump(pw);
+    }
+
+    @Override
     public void dump(PrintWriter pw) {
         mInternalFalsingManager.dump(pw);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
index b2e61a2..2f3e336 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/BrightLineFalsingManager.java
@@ -21,6 +21,7 @@
 
 import android.hardware.biometrics.BiometricSourceType;
 import android.net.Uri;
+import android.os.Build;
 import android.util.Log;
 import android.view.MotionEvent;
 
@@ -40,15 +41,19 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.Queue;
+import java.util.StringJoiner;
+import java.util.stream.Collectors;
 
 /**
  * FalsingManager designed to make clear why a touch was rejected.
  */
 public class BrightLineFalsingManager implements FalsingManager {
 
-    static final boolean DEBUG = false;
     private static final String TAG = "FalsingManager";
-    private static final int RECENT_INFO_LOG_SIZE = 20;
+    static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private static final int RECENT_INFO_LOG_SIZE = 40;
+    private static final int RECENT_SWIPE_LOG_SIZE = 20;
 
     private final FalsingDataProvider mDataProvider;
     private final KeyguardUpdateMonitor mKeyguardUpdateMonitor;
@@ -62,6 +67,8 @@
     private boolean mJustUnlockedWithFace;
     private static final Queue<String> RECENT_INFO_LOG =
             new ArrayDeque<>(RECENT_INFO_LOG_SIZE + 1);
+    private static final Queue<DebugSwipeRecord> RECENT_SWIPES =
+            new ArrayDeque<>(RECENT_SWIPE_LOG_SIZE + 1);
 
     private final List<FalsingClassifier> mClassifiers;
 
@@ -78,6 +85,7 @@
                     }
                 }
             };
+    private boolean mPreviousResult = false;
 
     public BrightLineFalsingManager(FalsingDataProvider falsingDataProvider,
             KeyguardUpdateMonitor keyguardUpdateMonitor, ProximitySensor proximitySensor,
@@ -138,7 +146,7 @@
 
     private void updateInteractionType(@Classifier.InteractionType int type) {
         logDebug("InteractionType: " + type);
-        mClassifiers.forEach((classifier) -> classifier.setInteractionType(type));
+        mDataProvider.setInteractionType(type);
     }
 
     @Override
@@ -148,7 +156,11 @@
 
     @Override
     public boolean isFalseTouch() {
-        boolean r = !mJustUnlockedWithFace && !mDockManager.isDocked()
+        if (!mDataProvider.isDirty()) {
+            return mPreviousResult;
+        }
+
+        mPreviousResult = !mJustUnlockedWithFace && !mDockManager.isDocked()
                 && mClassifiers.stream().anyMatch(falsingClassifier -> {
                     boolean result = falsingClassifier.isFalseTouch();
                     if (result) {
@@ -167,9 +179,26 @@
                     return result;
                 });
 
-        logDebug("Is false touch? " + r);
+        logDebug("Is false touch? " + mPreviousResult);
 
-        return r;
+        if (Build.IS_ENG || Build.IS_USERDEBUG) {
+            // Copy motion events, as the passed in list gets emptied out elsewhere in the code.
+            RECENT_SWIPES.add(new DebugSwipeRecord(
+                    mPreviousResult,
+                    mDataProvider.getInteractionType(),
+                    mDataProvider.getRecentMotionEvents().stream().map(
+                            motionEvent -> new XYDt(
+                                    (int) motionEvent.getX(),
+                                    (int) motionEvent.getY(),
+                                    (int) (motionEvent.getEventTime() - motionEvent.getDownTime())))
+                            .collect(Collectors.toList())));
+            while (RECENT_SWIPES.size() > RECENT_INFO_LOG_SIZE) {
+                DebugSwipeRecord record = RECENT_SWIPES.remove();
+            }
+
+        }
+
+        return mPreviousResult;
     }
 
     @Override
@@ -187,7 +216,7 @@
     }
 
     @Override
-    public void onSucccessfulUnlock() {
+    public void onSuccessfulUnlock() {
         if (mIsFalseTouchCalls != 0) {
             mMetricsLogger.histogram(FALSING_SUCCESS, mIsFalseTouchCalls);
             mIsFalseTouchCalls = 0;
@@ -212,7 +241,6 @@
     @Override
     public void onNotificatonStartDraggingDown() {
         updateInteractionType(Classifier.NOTIFICATION_DRAG_DOWN);
-
     }
 
     @Override
@@ -235,7 +263,12 @@
     }
 
     @Override
-    public void setQsExpanded(boolean b) {
+    public void setQsExpanded(boolean expanded) {
+        if (expanded) {
+            unregisterSensors();
+        } else if (mSessionStarted) {
+            registerSensors();
+        }
     }
 
     @Override
@@ -338,25 +371,49 @@
 
     @Override
     public void onBouncerShown() {
+        unregisterSensors();
     }
 
     @Override
     public void onBouncerHidden() {
+        if (mSessionStarted) {
+            registerSensors();
+        }
     }
 
     @Override
     public void dump(PrintWriter pw) {
         IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
         ipw.println("BRIGHTLINE FALSING MANAGER");
-        ipw.print("classifierEnabled="); pw.println(isClassifierEnabled() ? 1 : 0);
-        ipw.print("mJustUnlockedWithFace="); pw.println(mJustUnlockedWithFace ? 1 : 0);
-        ipw.print("isDocked="); pw.println(mDockManager.isDocked() ? 1 : 0);
+        ipw.print("classifierEnabled=");
+        ipw.println(isClassifierEnabled() ? 1 : 0);
+        ipw.print("mJustUnlockedWithFace=");
+        ipw.println(mJustUnlockedWithFace ? 1 : 0);
+        ipw.print("isDocked=");
+        ipw.println(mDockManager.isDocked() ? 1 : 0);
+        ipw.print("width=");
+        ipw.println(mDataProvider.getWidthPixels());
+        ipw.print("height=");
+        ipw.println(mDataProvider.getHeightPixels());
+        ipw.println();
+        if (RECENT_SWIPES.size() != 0) {
+            ipw.println("Recent swipes:");
+            ipw.increaseIndent();
+            for (DebugSwipeRecord record : RECENT_SWIPES) {
+                ipw.println(record.getString());
+                ipw.println();
+            }
+            ipw.decreaseIndent();
+        } else {
+            ipw.println("No recent swipes");
+        }
         ipw.println();
         ipw.println("Recent falsing info:");
         ipw.increaseIndent();
         for (String msg : RECENT_INFO_LOG) {
             ipw.println(msg);
         }
+        ipw.println();
     }
 
     @Override
@@ -386,4 +443,46 @@
     static void logError(String msg) {
         Log.e(TAG, msg);
     }
+
+    private static class DebugSwipeRecord {
+        private static final byte VERSION = 1;  // opaque version number indicating format of data.
+        private final boolean mIsFalse;
+        private final int mInteractionType;
+        private final List<XYDt> mRecentMotionEvents;
+
+        DebugSwipeRecord(boolean isFalse, int interactionType,
+                List<XYDt> recentMotionEvents) {
+            mIsFalse = isFalse;
+            mInteractionType = interactionType;
+            mRecentMotionEvents = recentMotionEvents;
+        }
+
+        String getString() {
+            StringJoiner sj = new StringJoiner(",");
+            sj.add(Integer.toString(VERSION))
+                    .add(mIsFalse ? "1" : "0")
+                    .add(Integer.toString(mInteractionType));
+            for (XYDt event : mRecentMotionEvents) {
+                sj.add(event.toString());
+            }
+            return sj.toString();
+        }
+    }
+
+    private static class XYDt {
+        private final int mX;
+        private final int mY;
+        private final int mDT;
+
+        XYDt(int x, int y, int dT) {
+            mX = x;
+            mY = y;
+            mDT = dT;
+        }
+
+        @Override
+        public String toString() {
+            return mX + "," + mY + "," + mDT;
+        }
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
index 7555051..cf08821 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingClassifier.java
@@ -85,10 +85,6 @@
         return mDataProvider.getInteractionType();
     }
 
-    final void setInteractionType(@Classifier.InteractionType int interactionType) {
-        mDataProvider.setInteractionType(interactionType);
-    }
-
     /**
      * Called whenever a MotionEvent occurs.
      *
diff --git a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
index 8b11ceb..5494c64 100644
--- a/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/classifier/brightline/FalsingDataProvider.java
@@ -113,6 +113,10 @@
         this.mInteractionType = interactionType;
     }
 
+    public boolean isDirty() {
+        return mDirty;
+    }
+
     final int getInteractionType() {
         return mInteractionType;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ControlStatus.kt b/packages/SystemUI/src/com/android/systemui/controls/ControlStatus.kt
index e6cdf50..49a16d8 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ControlStatus.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ControlStatus.kt
@@ -18,4 +18,8 @@
 
 import android.service.controls.Control
 
-data class ControlStatus(val control: Control, val favorite: Boolean, val removed: Boolean = false)
\ No newline at end of file
+data class ControlStatus(
+    val control: Control,
+    var favorite: Boolean,
+    val removed: Boolean = false
+)
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt b/packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt
index 265ddd8..588ef5c 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ControlsServiceInfo.kt
@@ -22,7 +22,7 @@
 
 class ControlsServiceInfo(
     context: Context,
-    serviceInfo: ServiceInfo
+    val serviceInfo: ServiceInfo
 ) : DefaultAppInfo(
     context,
     context.packageManager,
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/controls/UserAwareController.kt
similarity index 61%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/controls/UserAwareController.kt
index f5e2405..d2776d2 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/controls/UserAwareController.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,15 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package com.android.systemui.controls
 
-parcelable PhoneTimeSuggestion;
+import android.os.UserHandle
+
+/**
+ * An interface for controllers that keep track of the current user and can be notified of user
+ * changes.
+ */
+interface UserAwareController {
+    fun changeUser(newUser: UserHandle) {}
+    val currentUserId: Int
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlInfo.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlInfo.kt
index b6cca3f..f624120 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlInfo.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlInfo.kt
@@ -22,6 +22,15 @@
 
 /**
  * Stores basic information about a [Control] to persist and keep track of favorites.
+ *
+ * The identifier of this [Control] is the combination of [component] and [controlId]. The other
+ * two fields are there for persistence. In this way, basic information can be shown to the user
+ * before the service has to report on the status.
+ *
+ * @property component the name of the component that provides the [Control].
+ * @property controlId unique (for the given [component]) identifier for this [Control].
+ * @property controlTitle last title reported for this [Control].
+ * @property deviceType last reported type for this [Control].
  */
 data class ControlInfo(
     val component: ComponentName,
@@ -33,6 +42,14 @@
     companion object {
         private const val TAG = "ControlInfo"
         private const val SEPARATOR = ":"
+
+        /**
+         * Creates a [ControlInfo] from a [SEPARATOR] separated list of fields.
+         *
+         * @param separator fields of a [ControlInfo] separated by [SEPARATOR]
+         * @return a [ControlInfo] or `null` if there was an error.
+         * @see [ControlInfo.toString]
+         */
         fun createFromString(string: String): ControlInfo? {
             val parts = string.split(SEPARATOR)
             val component = ComponentName.unflattenFromString(parts[0])
@@ -53,6 +70,12 @@
                     if (DeviceTypes.validDeviceType(type)) type else DeviceTypes.TYPE_UNKNOWN)
         }
     }
+
+    /**
+     * Returns a [String] representation of the fields separated using [SEPARATOR].
+     *
+     * @return a [String] representation of `this`
+     */
     override fun toString(): String {
         return component.flattenToString() +
                 "$SEPARATOR$controlId$SEPARATOR$controlTitle$SEPARATOR$deviceType"
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingController.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingController.kt
index 6b7fc4b..7fae6a3 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingController.kt
@@ -18,12 +18,72 @@
 
 import android.content.ComponentName
 import android.service.controls.Control
+import android.service.controls.ControlsProviderService
 import android.service.controls.actions.ControlAction
+import com.android.systemui.controls.UserAwareController
+import java.util.function.Consumer
 
-interface ControlsBindingController {
-    fun bindAndLoad(component: ComponentName, callback: (List<Control>) -> Unit)
+/**
+ * Controller for keeping track of any [ControlsProviderService] that needs to be bound.
+ *
+ * This controller serves as an interface between [ControlsController] and the services.
+ *
+ * This controller being a [UserAwareController] means that all binding and requests will be
+ * performed on services bound as the current user.
+ */
+interface ControlsBindingController : UserAwareController {
+
+    /**
+     * Request bind to a service and load all controls.
+     *
+     * @param component The [ComponentName] of the service to bind
+     * @param callback a callback to return the loaded controls to (or an error).
+     */
+    fun bindAndLoad(component: ComponentName, callback: LoadCallback)
+
+    /**
+     * Request to bind to the given services.
+     *
+     * @param components a list of [ComponentName] of the services to bind
+     */
     fun bindServices(components: List<ComponentName>)
+
+    /**
+     * Send a subscribe message to retrieve status of a set of controls.
+     *
+     * The controls passed do not have to belong to a single [ControlsProviderService]. The
+     * corresponding service [ComponentName] is associated with each control.
+     *
+     * @param controls a list of controls with corresponding [ComponentName] to request status
+     *                 update
+     */
     fun subscribe(controls: List<ControlInfo>)
+
+    /**
+     * Send an action performed on a [Control].
+     *
+     * @param controlInfo information about the actioned control, including the [ComponentName]
+     * @param action the action performed on the control
+     */
     fun action(controlInfo: ControlInfo, action: ControlAction)
+
+    /**
+     * Unsubscribe from all services to stop status updates.
+     */
     fun unsubscribe()
+
+    /**
+     * Consumer for load calls.
+     *
+     * Supports also sending error messages.
+     */
+    interface LoadCallback : Consumer<List<Control>> {
+
+        /**
+         * Indicates an error loading.
+         *
+         * @message an error message.
+         */
+        fun error(message: String)
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
index 2db2cf1..87bdfa8 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsBindingControllerImpl.kt
@@ -19,6 +19,7 @@
 import android.content.ComponentName
 import android.content.Context
 import android.os.IBinder
+import android.os.UserHandle
 import android.service.controls.Control
 import android.service.controls.IControlsActionCallback
 import android.service.controls.IControlsLoadCallback
@@ -50,12 +51,17 @@
 
     private val refreshing = AtomicBoolean(false)
 
+    private var currentUser = context.user
+
+    override val currentUserId: Int
+        get() = currentUser.identifier
+
     @GuardedBy("componentMap")
     private val tokenMap: MutableMap<IBinder, ControlsProviderLifecycleManager> =
             ArrayMap<IBinder, ControlsProviderLifecycleManager>()
     @GuardedBy("componentMap")
-    private val componentMap: MutableMap<ComponentName, ControlsProviderLifecycleManager> =
-            ArrayMap<ComponentName, ControlsProviderLifecycleManager>()
+    private val componentMap: MutableMap<Key, ControlsProviderLifecycleManager> =
+            ArrayMap<Key, ControlsProviderLifecycleManager>()
 
     private val loadCallbackService = object : IControlsLoadCallback.Stub() {
         override fun accept(token: IBinder, controls: MutableList<Control>) {
@@ -103,6 +109,7 @@
                 loadCallbackService,
                 actionCallbackService,
                 subscriberService,
+                currentUser,
                 component
         )
     }
@@ -110,7 +117,7 @@
     private fun retrieveLifecycleManager(component: ComponentName):
             ControlsProviderLifecycleManager {
         synchronized(componentMap) {
-            val provider = componentMap.getOrPut(component) {
+            val provider = componentMap.getOrPut(Key(component, currentUser)) {
                 createProviderManager(component)
             }
             tokenMap.putIfAbsent(provider.token, provider)
@@ -118,7 +125,10 @@
         }
     }
 
-    override fun bindAndLoad(component: ComponentName, callback: (List<Control>) -> Unit) {
+    override fun bindAndLoad(
+        component: ComponentName,
+        callback: ControlsBindingController.LoadCallback
+    ) {
         val provider = retrieveLifecycleManager(component)
         provider.maybeBindAndLoad(callback)
     }
@@ -137,7 +147,7 @@
         val providersWithFavorites = controlsByComponentName.keys
         synchronized(componentMap) {
             componentMap.forEach {
-                if (it.key !in providersWithFavorites) {
+                if (it.key.component !in providersWithFavorites) {
                     backgroundExecutor.execute { it.value.unbindService() }
                 }
             }
@@ -163,10 +173,40 @@
     override fun bindServices(components: List<ComponentName>) {
         components.forEach {
             val provider = retrieveLifecycleManager(it)
-            backgroundExecutor.execute { provider.bindPermanently() }
+            backgroundExecutor.execute { provider.bindService() }
         }
     }
 
+    override fun changeUser(newUser: UserHandle) {
+        if (newUser == currentUser) return
+        synchronized(componentMap) {
+            unbindAllProvidersLocked() // unbind all providers from the old user
+        }
+        refreshing.set(false)
+        currentUser = newUser
+    }
+
+    private fun unbindAllProvidersLocked() {
+        componentMap.values.forEach {
+            if (it.user == currentUser) {
+                it.unbindService()
+            }
+        }
+    }
+
+    override fun toString(): String {
+        return StringBuilder("  ControlsBindingController:\n").apply {
+            append("    refreshing=${refreshing.get()}\n")
+            append("    currentUser=$currentUser\n")
+            append("    Providers:\n")
+            synchronized(componentMap) {
+                componentMap.values.forEach {
+                    append("      $it\n")
+                }
+            }
+        }.toString()
+    }
+
     private abstract inner class CallbackRunnable(val token: IBinder) : Runnable {
         protected val provider: ControlsProviderLifecycleManager? =
                 synchronized(componentMap) {
@@ -183,16 +223,20 @@
                 Log.e(TAG, "No provider found for token:$token")
                 return
             }
+            if (provider.user != currentUser) {
+                Log.e(TAG, "User ${provider.user} is not current user")
+                return
+            }
             synchronized(componentMap) {
                 if (token !in tokenMap.keys) {
                     Log.e(TAG, "Provider for token:$token does not exist anymore")
                     return
                 }
             }
-            provider.lastLoadCallback?.invoke(list) ?: run {
+            provider.lastLoadCallback?.accept(list) ?: run {
                 Log.w(TAG, "Null callback")
             }
-            provider.maybeUnbindAndRemoveCallback()
+            provider.unbindService()
         }
     }
 
@@ -204,6 +248,10 @@
             if (!refreshing.get()) {
                 Log.d(TAG, "onRefresh outside of window from:${provider?.componentName}")
             }
+            if (provider?.user != currentUser) {
+                Log.e(TAG, "User ${provider?.user} is not current user")
+                return
+            }
             provider?.let {
                 lazyController.get().refreshStatus(it.componentName, control)
             }
@@ -229,7 +277,7 @@
     ) : CallbackRunnable(token) {
         override fun run() {
             provider?.let {
-                Log.i(TAG, "onComplete receive from '${provider?.componentName}'")
+                Log.i(TAG, "onComplete receive from '${provider.componentName}'")
             }
         }
     }
@@ -240,7 +288,7 @@
     ) : CallbackRunnable(token) {
         override fun run() {
             provider?.let {
-                Log.e(TAG, "onError receive from '${provider?.componentName}': $error")
+                Log.e(TAG, "onError receive from '${provider.componentName}': $error")
             }
         }
     }
@@ -251,9 +299,15 @@
         @ControlAction.ResponseResult val response: Int
     ) : CallbackRunnable(token) {
         override fun run() {
+            if (provider?.user != currentUser) {
+                Log.e(TAG, "User ${provider?.user} is not current user")
+                return
+            }
             provider?.let {
                 lazyController.get().onActionResponse(it.componentName, controlId, response)
             }
         }
     }
 }
+
+private data class Key(val component: ComponentName, val user: UserHandle)
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
index e098faa..4b89fd4 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsController.kt
@@ -18,23 +18,194 @@
 
 import android.content.ComponentName
 import android.service.controls.Control
+import android.service.controls.ControlsProviderService
 import android.service.controls.actions.ControlAction
 import com.android.systemui.controls.ControlStatus
+import com.android.systemui.controls.UserAwareController
+import com.android.systemui.controls.management.ControlsFavoritingActivity
+import com.android.systemui.controls.ui.ControlsUiController
+import java.util.function.Consumer
 
-interface ControlsController {
+/**
+ * Controller to handle communication between different parts of the controls system.
+ *
+ * This controller is in charge of:
+ *  * Keeping track of favorites
+ *  * Determining and keeping track of whether controls are enabled
+ *  * Listening for user change and propagating that message in the system
+ *  * Communicate between the UI and the [ControlsBindingController]
+ *
+ *  This controller being a [UserAwareController] means that all operations will be conducted on
+ *  information for the current user only.
+ */
+interface ControlsController : UserAwareController {
+
+    /**
+     * Whether the controls system is available for the current user.
+     */
     val available: Boolean
 
-    fun getFavoriteControls(): List<ControlInfo>
-    fun loadForComponent(componentName: ComponentName, callback: (List<ControlStatus>) -> Unit)
+    // SERVICE COMMUNICATION
+
+    /**
+     * Load all available [Control] for a given service.
+     *
+     * @param componentName the [ComponentName] of the [ControlsProviderService] to load from
+     * @param dataCallback a callback in which to retrieve the result.
+     */
+    fun loadForComponent(
+        componentName: ComponentName,
+        dataCallback: Consumer<LoadData>
+    )
+
+    /**
+     * Request to subscribe for all favorite controls.
+     *
+     * @see [ControlsBindingController.subscribe]
+     */
     fun subscribeToFavorites()
-    fun changeFavoriteStatus(controlInfo: ControlInfo, state: Boolean)
+
+    /**
+     * Request to unsubscribe to all providers.
+     *
+     * @see [ControlsBindingController.unsubscribe]
+     */
     fun unsubscribe()
+
+    /**
+     * Notify a [ControlsProviderService] that an action has been performed on a [Control].
+     *
+     * @param controlInfo information of the [Control] receiving the action
+     * @param action action performed on the [Control]
+     * @see [ControlsBindingController.action]
+     */
     fun action(controlInfo: ControlInfo, action: ControlAction)
+
+    /**
+     * Refresh the status of a [Control] with information provided from the service.
+     *
+     * @param componentName the name of the service that provides the [Control]
+     * @param control a stateful [Control] with updated information
+     * @see [ControlsUiController.onRefreshState]
+     */
     fun refreshStatus(componentName: ComponentName, control: Control)
+
+    /**
+     * Indicate the result of a [ControlAction] performed on a [Control].
+     *
+     * @param componentName the name of the service that provides the [Control]
+     * @param controlId the id of the [Control] the actioned was performed on
+     * @param response the result of the action.
+     * @see [ControlsUiController.onActionResponse]
+     */
     fun onActionResponse(
         componentName: ComponentName,
         controlId: String,
         @ControlAction.ResponseResult response: Int
     )
+
+    // FAVORITE MANAGEMENT
+
+    /**
+     * Get a list of all favorite controls.
+     *
+     * @return a list of [ControlInfo] with persistent information about the controls, including
+     *         their corresponding [ComponentName].
+     */
+    fun getFavoriteControls(): List<ControlInfo>
+
+    /**
+     * Get all the favorites for a given component.
+     *
+     * @param componentName the name of the component of the [ControlsProviderService] with
+     *                      which to filter the favorites.
+     * @return a list of the favorite controls for the given service. All the elements of the list
+     *         will have the same [ControlInfo.component] matching the one requested.
+     */
+    fun getFavoritesForComponent(componentName: ComponentName): List<ControlInfo>
+
+    /**
+     * Replaces the favorites for the given component.
+     *
+     * Calling this method will eliminate the previous selection of favorites and replace it with a
+     * new one.
+     *
+     * @param componentName The name of the component for the [ControlsProviderService]
+     * @param favorites a list of [ControlInfo] to replace the previous favorites.
+     */
+    fun replaceFavoritesForComponent(componentName: ComponentName, favorites: List<ControlInfo>)
+
+    /**
+     * Change the favorite status of a single [Control].
+     *
+     * If the control is added to favorites, it will be added to the end of the list for that
+     * particular component. Matching for removing the control will be done based on
+     * [ControlInfo.component] and [ControlInfo.controlId].
+     *
+     * Trying to add an already favorite control or trying to remove one that is not a favorite is
+     * a no-op.
+     *
+     * @param controlInfo persistent information about the [Control].
+     * @param state `true` to add to favorites and `false` to remove.
+     */
+    fun changeFavoriteStatus(controlInfo: ControlInfo, state: Boolean)
+
+    /**
+     * Return the number of favorites for a given component.
+     *
+     * This call returns the same as `getFavoritesForComponent(componentName).size`.
+     *
+     * @param componentName the name of the component
+     * @return the number of current favorites for the given component
+     */
+    fun countFavoritesForComponent(componentName: ComponentName): Int
+
+    /**
+     * Clears the list of all favorites.
+     *
+     * To clear the list of favorites for a given service, call [replaceFavoritesForComponent] with
+     * an empty list.
+     */
     fun clearFavorites()
+
+    /**
+     * Interface for structure to pass data to [ControlsFavoritingActivity].
+     */
+    interface LoadData {
+        /**
+         * All of the available controls for the loaded [ControlsProviderService].
+         *
+         * This will indicate if they are currently a favorite and whether they were removed (a
+         * favorite but not retrieved on load).
+         */
+        val allControls: List<ControlStatus>
+
+        /**
+         * Ordered list of ids of favorite controls.
+         */
+        val favoritesIds: List<String>
+
+        /**
+         * Whether there was an error in loading.
+         *
+         * In this case, [allControls] will only contain those that were favorited and will not be
+         * marked as removed.
+         */
+        val errorOnLoad: Boolean
+    }
+}
+
+/**
+ * Creates a basic implementation of a [LoadData].
+ */
+fun createLoadDataObject(
+    allControls: List<ControlStatus>,
+    favorites: List<String>,
+    error: Boolean = false
+): ControlsController.LoadData {
+    return object : ControlsController.LoadData {
+        override val allControls = allControls
+        override val favoritesIds = favorites
+        override val errorOnLoad = error
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
index d5b5b5f..50ad515 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsControllerImpl.kt
@@ -17,26 +17,36 @@
 package com.android.systemui.controls.controller
 
 import android.app.PendingIntent
+import android.content.BroadcastReceiver
 import android.content.ComponentName
+import android.content.ContentResolver
 import android.content.Context
 import android.content.Intent
+import android.content.IntentFilter
+import android.database.ContentObserver
+import android.net.Uri
 import android.os.Environment
+import android.os.UserHandle
 import android.provider.Settings
 import android.service.controls.Control
 import android.service.controls.actions.ControlAction
 import android.util.ArrayMap
 import android.util.Log
 import com.android.internal.annotations.GuardedBy
+import com.android.internal.annotations.VisibleForTesting
 import com.android.systemui.DumpController
 import com.android.systemui.Dumpable
+import com.android.systemui.broadcast.BroadcastDispatcher
 import com.android.systemui.controls.ControlStatus
-import com.android.systemui.controls.management.ControlsFavoritingActivity
+import com.android.systemui.controls.management.ControlsListingController
 import com.android.systemui.controls.ui.ControlsUiController
 import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.util.concurrency.DelayableExecutor
 import java.io.FileDescriptor
 import java.io.PrintWriter
 import java.util.Optional
+import java.util.concurrent.TimeUnit
+import java.util.function.Consumer
 import javax.inject.Inject
 import javax.inject.Singleton
 
@@ -46,75 +56,206 @@
     @Background private val executor: DelayableExecutor,
     private val uiController: ControlsUiController,
     private val bindingController: ControlsBindingController,
-    private val optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>,
+    private val listingController: ControlsListingController,
+    private val broadcastDispatcher: BroadcastDispatcher,
+    optionalWrapper: Optional<ControlsFavoritePersistenceWrapper>,
     dumpController: DumpController
 ) : Dumpable, ControlsController {
 
     companion object {
         private const val TAG = "ControlsControllerImpl"
-        const val CONTROLS_AVAILABLE = "systemui.controls_available"
+        internal const val CONTROLS_AVAILABLE = "systemui.controls_available"
+        internal val URI = Settings.Secure.getUriFor(CONTROLS_AVAILABLE)
+        private const val USER_CHANGE_RETRY_DELAY = 500L // ms
     }
 
-    override val available = Settings.Secure.getInt(
-            context.contentResolver, CONTROLS_AVAILABLE, 0) != 0
-    val persistenceWrapper = optionalWrapper.orElseGet {
+    // Map of map: ComponentName -> (String -> ControlInfo).
+    //
+    @GuardedBy("currentFavorites")
+    private val currentFavorites = ArrayMap<ComponentName, MutableList<ControlInfo>>()
+            .withDefault { mutableListOf() }
+
+    private var userChanging: Boolean = true
+
+    private val contentResolver: ContentResolver
+        get() = context.contentResolver
+    override var available = Settings.Secure.getInt(contentResolver, CONTROLS_AVAILABLE, 0) != 0
+        private set
+
+    private var currentUser = context.user
+    override val currentUserId
+        get() = currentUser.identifier
+
+    private val persistenceWrapper = optionalWrapper.orElseGet {
         ControlsFavoritePersistenceWrapper(
                 Environment.buildPath(
-                        context.filesDir,
-                        ControlsFavoritePersistenceWrapper.FILE_NAME),
+                    context.filesDir,
+                    ControlsFavoritePersistenceWrapper.FILE_NAME
+                ),
                 executor
         )
     }
 
-    // Map of map: ComponentName -> (String -> ControlInfo)
-    @GuardedBy("currentFavorites")
-    private val currentFavorites = ArrayMap<ComponentName, MutableMap<String, ControlInfo>>()
-
-    init {
+    private fun setValuesForUser(newUser: UserHandle) {
+        Log.d(TAG, "Changing to user: $newUser")
+        currentUser = newUser
+        val userContext = context.createContextAsUser(currentUser, 0)
+        val fileName = Environment.buildPath(
+                userContext.filesDir, ControlsFavoritePersistenceWrapper.FILE_NAME)
+        persistenceWrapper.changeFile(fileName)
+        available = Settings.Secure.getIntForUser(contentResolver, CONTROLS_AVAILABLE,
+                /* default */ 0, newUser.identifier) != 0
+        synchronized(currentFavorites) {
+            currentFavorites.clear()
+        }
         if (available) {
-            dumpController.registerDumpable(this)
             loadFavorites()
         }
+        bindingController.changeUser(newUser)
+        listingController.changeUser(newUser)
+        userChanging = false
+    }
+
+    private val userSwitchReceiver = object : BroadcastReceiver() {
+        override fun onReceive(context: Context, intent: Intent) {
+            if (intent.action == Intent.ACTION_USER_SWITCHED) {
+                userChanging = true
+                val newUser =
+                        UserHandle.of(intent.getIntExtra(Intent.EXTRA_USER_HANDLE, sendingUserId))
+                if (currentUser == newUser) {
+                    userChanging = false
+                    return
+                }
+                setValuesForUser(newUser)
+            }
+        }
+    }
+
+    @VisibleForTesting
+    internal val settingObserver = object : ContentObserver(null) {
+        override fun onChange(selfChange: Boolean, uri: Uri, userId: Int) {
+            // Do not listen to changes in the middle of user change, those will be read by the
+            // user-switch receiver.
+            if (userChanging || userId != currentUserId) {
+                return
+            }
+            available = Settings.Secure.getIntForUser(contentResolver, CONTROLS_AVAILABLE,
+                    /* default */ 0, currentUserId) != 0
+            synchronized(currentFavorites) {
+                currentFavorites.clear()
+            }
+            if (available) {
+                loadFavorites()
+            }
+        }
+    }
+
+    init {
+        dumpController.registerDumpable(this)
+        if (available) {
+            loadFavorites()
+        }
+        userChanging = false
+        broadcastDispatcher.registerReceiver(
+                userSwitchReceiver,
+                IntentFilter(Intent.ACTION_USER_SWITCHED),
+                executor,
+                UserHandle.ALL
+        )
+        contentResolver.registerContentObserver(URI, false, settingObserver, UserHandle.USER_ALL)
+    }
+
+    private fun confirmAvailability(): Boolean {
+        if (userChanging) {
+            Log.w(TAG, "Controls not available while user is changing")
+            return false
+        }
+        if (!available) {
+            Log.d(TAG, "Controls not available")
+            return false
+        }
+        return true
     }
 
     private fun loadFavorites() {
         val infos = persistenceWrapper.readFavorites()
         synchronized(currentFavorites) {
             infos.forEach {
-                currentFavorites.getOrPut(it.component, { ArrayMap<String, ControlInfo>() })
-                        .put(it.controlId, it)
+                currentFavorites.getOrPut(it.component, { mutableListOf() }).add(it)
             }
         }
     }
 
     override fun loadForComponent(
         componentName: ComponentName,
-        callback: (List<ControlStatus>) -> Unit
+        dataCallback: Consumer<ControlsController.LoadData>
     ) {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
+        if (!confirmAvailability()) {
+            if (userChanging) {
+                // Try again later, userChanging should not last forever. If so, we have bigger
+                // problems
+                executor.executeDelayed(
+                        { loadForComponent(componentName, dataCallback) },
+                        USER_CHANGE_RETRY_DELAY,
+                        TimeUnit.MILLISECONDS
+                )
+            } else {
+                dataCallback.accept(createLoadDataObject(emptyList(), emptyList(), true))
+            }
             return
         }
-        bindingController.bindAndLoad(componentName) {
-            synchronized(currentFavorites) {
-                val favoritesForComponentKeys: Set<String> =
-                        currentFavorites.get(componentName)?.keys ?: emptySet()
-                val changed = updateFavoritesLocked(componentName, it)
-                if (changed) {
-                    persistenceWrapper.storeFavorites(favoritesAsListLocked())
+        bindingController.bindAndLoad(
+                componentName,
+                object : ControlsBindingController.LoadCallback {
+                    override fun accept(controls: List<Control>) {
+                        val loadData = synchronized(currentFavorites) {
+                            val favoritesForComponentKeys: List<String> =
+                                    currentFavorites.getValue(componentName).map { it.controlId }
+                            val changed = updateFavoritesLocked(componentName, controls,
+                                    favoritesForComponentKeys)
+                            if (changed) {
+                                persistenceWrapper.storeFavorites(favoritesAsListLocked())
+                            }
+                            val removed = findRemovedLocked(favoritesForComponentKeys.toSet(),
+                                    controls)
+                            val controlsWithFavorite = controls.map {
+                                ControlStatus(it, it.controlId in favoritesForComponentKeys)
+                            }
+                            createLoadDataObject(
+                                    currentFavorites.getValue(componentName)
+                                            .filter { it.controlId in removed }
+                                            .map { createRemovedStatus(it) } +
+                                            controlsWithFavorite,
+                                    favoritesForComponentKeys
+                            )
+                        }
+                        dataCallback.accept(loadData)
+                    }
+
+                    override fun error(message: String) {
+                        val loadData = synchronized(currentFavorites) {
+                            val favoritesForComponent = currentFavorites.getValue(componentName)
+                            val favoritesForComponentKeys = favoritesForComponent
+                                    .map { it.controlId }
+                            createLoadDataObject(
+                                    favoritesForComponent.map { createRemovedStatus(it, false) },
+                                    favoritesForComponentKeys,
+                                    true
+                            )
+                        }
+                        dataCallback.accept(loadData)
+                    }
                 }
-                val removed = findRemovedLocked(favoritesForComponentKeys, it)
-                callback(removed.map { currentFavorites.getValue(componentName).getValue(it) }
-                            .map(::createRemovedStatus) +
-                        it.map { ControlStatus(it, it.controlId in favoritesForComponentKeys) })
-            }
-        }
+        )
     }
 
-    private fun createRemovedStatus(controlInfo: ControlInfo): ControlStatus {
-        val intent = Intent(context, ControlsFavoritingActivity::class.java).apply {
-            putExtra(ControlsFavoritingActivity.EXTRA_COMPONENT, controlInfo.component)
-            flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP
+    private fun createRemovedStatus(
+        controlInfo: ControlInfo,
+        setRemoved: Boolean = true
+    ): ControlStatus {
+        val intent = Intent(Intent.ACTION_MAIN).apply {
+            addCategory(Intent.CATEGORY_LAUNCHER)
+            this.`package` = controlInfo.component.packageName
         }
         val pendingIntent = PendingIntent.getActivity(context,
                 controlInfo.component.hashCode(),
@@ -124,7 +265,7 @@
                 .setTitle(controlInfo.controlTitle)
                 .setDeviceType(controlInfo.deviceType)
                 .build()
-        return ControlStatus(control, true, true)
+        return ControlStatus(control, true, setRemoved)
     }
 
     @GuardedBy("currentFavorites")
@@ -134,17 +275,24 @@
     }
 
     @GuardedBy("currentFavorites")
-    private fun updateFavoritesLocked(componentName: ComponentName, list: List<Control>): Boolean {
-        val favorites = currentFavorites.get(componentName) ?: mutableMapOf()
-        val favoriteKeys = favorites.keys
+    private fun updateFavoritesLocked(
+        componentName: ComponentName,
+        list: List<Control>,
+        favoriteKeys: List<String>
+    ): Boolean {
+        val favorites = currentFavorites.get(componentName) ?: mutableListOf()
         if (favoriteKeys.isEmpty()) return false // early return
         var changed = false
-        list.forEach {
-            if (it.controlId in favoriteKeys) {
-                val value = favorites.getValue(it.controlId)
-                if (value.controlTitle != it.title || value.deviceType != it.deviceType) {
-                    favorites[it.controlId] = value.copy(controlTitle = it.title,
-                            deviceType = it.deviceType)
+        list.forEach { control ->
+            if (control.controlId in favoriteKeys) {
+                val index = favorites.indexOfFirst { it.controlId == control.controlId }
+                val value = favorites[index]
+                if (value.controlTitle != control.title ||
+                        value.deviceType != control.deviceType) {
+                    favorites[index] = value.copy(
+                            controlTitle = control.title,
+                            deviceType = control.deviceType
+                    )
                     changed = true
                 }
             }
@@ -154,54 +302,42 @@
 
     @GuardedBy("currentFavorites")
     private fun favoritesAsListLocked(): List<ControlInfo> {
-        return currentFavorites.flatMap { it.value.values }
+        return currentFavorites.flatMap { it.value }
     }
 
     override fun subscribeToFavorites() {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
-            return
-        }
+        if (!confirmAvailability()) return
         // Make a copy of the favorites list
         val favorites = synchronized(currentFavorites) {
-            currentFavorites.flatMap { it.value.values.toList() }
+            currentFavorites.flatMap { it.value }
         }
         bindingController.subscribe(favorites)
     }
 
     override fun unsubscribe() {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
-            return
-        }
+        if (!confirmAvailability()) return
         bindingController.unsubscribe()
     }
 
     override fun changeFavoriteStatus(controlInfo: ControlInfo, state: Boolean) {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
-            return
-        }
+        if (!confirmAvailability()) return
         var changed = false
         val listOfControls = synchronized(currentFavorites) {
             if (state) {
                 if (controlInfo.component !in currentFavorites) {
-                    currentFavorites.put(controlInfo.component, ArrayMap<String, ControlInfo>())
+                    currentFavorites.put(controlInfo.component, mutableListOf())
                     changed = true
                 }
                 val controlsForComponent = currentFavorites.getValue(controlInfo.component)
-                if (controlInfo.controlId !in controlsForComponent) {
-                    controlsForComponent.put(controlInfo.controlId, controlInfo)
+                if (controlsForComponent.firstOrNull {
+                            it.controlId == controlInfo.controlId
+                        } == null) {
+                    controlsForComponent.add(controlInfo)
                     changed = true
-                } else {
-                    if (controlsForComponent.getValue(controlInfo.controlId) != controlInfo) {
-                        controlsForComponent.put(controlInfo.controlId, controlInfo)
-                        changed = true
-                    }
                 }
             } else {
                 changed = currentFavorites.get(controlInfo.component)
-                        ?.remove(controlInfo.controlId) != null
+                        ?.remove(controlInfo) != null
             }
             favoritesAsListLocked()
         }
@@ -210,14 +346,33 @@
         }
     }
 
+    override fun replaceFavoritesForComponent(
+        componentName: ComponentName,
+        favorites: List<ControlInfo>
+    ) {
+        if (!confirmAvailability()) return
+        val filtered = favorites.filter { it.component == componentName }
+        val listOfControls = synchronized(currentFavorites) {
+            currentFavorites.put(componentName, filtered.toMutableList())
+            favoritesAsListLocked()
+        }
+        persistenceWrapper.storeFavorites(listOfControls)
+    }
+
     override fun refreshStatus(componentName: ComponentName, control: Control) {
-        if (!available) {
+        if (!confirmAvailability()) {
             Log.d(TAG, "Controls not available")
             return
         }
         executor.execute {
             synchronized(currentFavorites) {
-                val changed = updateFavoritesLocked(componentName, listOf(control))
+                val favoriteKeysForComponent =
+                        currentFavorites.get(componentName)?.map { it.controlId } ?: emptyList()
+                val changed = updateFavoritesLocked(
+                        componentName,
+                        listOf(control),
+                        favoriteKeysForComponent
+                )
                 if (changed) {
                     persistenceWrapper.storeFavorites(favoritesAsListLocked())
                 }
@@ -227,28 +382,24 @@
     }
 
     override fun onActionResponse(componentName: ComponentName, controlId: String, response: Int) {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
-            return
-        }
+        if (!confirmAvailability()) return
         uiController.onActionResponse(componentName, controlId, response)
     }
 
     override fun getFavoriteControls(): List<ControlInfo> {
-        if (!available) {
-            Log.d(TAG, "Controls not available")
-            return emptyList()
-        }
+        if (!confirmAvailability()) return emptyList()
         synchronized(currentFavorites) {
             return favoritesAsListLocked()
         }
     }
 
     override fun action(controlInfo: ControlInfo, action: ControlAction) {
+        if (!confirmAvailability()) return
         bindingController.action(controlInfo, action)
     }
 
     override fun clearFavorites() {
+        if (!confirmAvailability()) return
         val changed = synchronized(currentFavorites) {
             currentFavorites.isNotEmpty().also {
                 currentFavorites.clear()
@@ -259,15 +410,29 @@
         }
     }
 
-    override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
-        pw.println("ControlsController state:")
-        pw.println("  Favorites:")
-        synchronized(currentFavorites) {
-            currentFavorites.forEach {
-                it.value.forEach {
-                    pw.println("    ${it.value}")
-                }
-            }
+    override fun countFavoritesForComponent(componentName: ComponentName): Int {
+        return synchronized(currentFavorites) {
+            currentFavorites.get(componentName)?.size ?: 0
         }
     }
-}
+
+    override fun getFavoritesForComponent(componentName: ComponentName): List<ControlInfo> {
+        return synchronized(currentFavorites) {
+            currentFavorites.get(componentName) ?: emptyList()
+        }
+    }
+
+    override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+        pw.println("ControlsController state:")
+        pw.println("  Available: $available")
+        pw.println("  Changing users: $userChanging")
+        pw.println("  Current user: ${currentUser.identifier}")
+        pw.println("  Favorites:")
+        synchronized(currentFavorites) {
+            favoritesAsListLocked().forEach {
+                pw.println("    ${ it }")
+            }
+        }
+        pw.println(bindingController.toString())
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt
index 6f2d71f..d7f3c73 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsFavoritePersistenceWrapper.kt
@@ -16,13 +16,10 @@
 
 package com.android.systemui.controls.controller
 
-import android.app.ActivityManager
 import android.content.ComponentName
 import android.util.AtomicFile
 import android.util.Log
-import android.util.Slog
 import android.util.Xml
-import com.android.systemui.util.concurrency.DelayableExecutor
 import libcore.io.IoUtils
 import org.xmlpull.v1.XmlPullParser
 import org.xmlpull.v1.XmlPullParserException
@@ -30,10 +27,18 @@
 import java.io.FileInputStream
 import java.io.FileNotFoundException
 import java.io.IOException
+import java.util.concurrent.Executor
 
+/**
+ * Manages persistence of favorite controls.
+ *
+ * This class uses an [AtomicFile] to serialize the favorite controls to an xml.
+ * @property file a file location for storing/reading the favorites.
+ * @property executor an executor in which to execute storing the favorites.
+ */
 class ControlsFavoritePersistenceWrapper(
-    val file: File,
-    val executor: DelayableExecutor
+    private var file: File,
+    private val executor: Executor
 ) {
 
     companion object {
@@ -47,11 +52,23 @@
         private const val TAG_TYPE = "type"
     }
 
-    val currentUser: Int
-        get() = ActivityManager.getCurrentUser()
+    /**
+     * Change the file location for storing/reading the favorites
+     *
+     * @param fileName new location
+     */
+    fun changeFile(fileName: File) {
+        file = fileName
+    }
 
+    /**
+     * Stores the list of favorites in the corresponding file.
+     *
+     * @param list a list of favorite controls. The list will be stored in the same order.
+     */
     fun storeFavorites(list: List<ControlInfo>) {
         executor.execute {
+            Log.d(TAG, "Saving data to file: $file")
             val atomicFile = AtomicFile(file)
             val writer = try {
                 atomicFile.startWrite()
@@ -86,6 +103,12 @@
         }
     }
 
+    /**
+     * Stores the list of favorites in the corresponding file.
+     *
+     * @return a list of stored favorite controls. Return an empty list if the file is not found
+     * @throws [IllegalStateException] if there is an error while reading the file
+     */
     fun readFavorites(): List<ControlInfo> {
         if (!file.exists()) {
             Log.d(TAG, "No favorites, returning empty list")
@@ -94,10 +117,11 @@
         val reader = try {
             FileInputStream(file)
         } catch (fnfe: FileNotFoundException) {
-            Slog.i(TAG, "No file found")
+            Log.i(TAG, "No file found")
             return emptyList()
         }
         try {
+            Log.d(TAG, "Reading data from file: $file")
             val parser = Xml.newPullParser()
             parser.setInput(reader, null)
             return parseXml(parser)
@@ -111,7 +135,7 @@
     }
 
     private fun parseXml(parser: XmlPullParser): List<ControlInfo> {
-        var type: Int = 0
+        var type = 0
         val infos = mutableListOf<ControlInfo>()
         while (parser.next().also { type = it } != XmlPullParser.END_DOCUMENT) {
             if (type == XmlPullParser.END_TAG || type == XmlPullParser.TEXT) {
@@ -123,9 +147,9 @@
                         parser.getAttributeValue(null, TAG_COMPONENT))
                 val id = parser.getAttributeValue(null, TAG_ID)
                 val title = parser.getAttributeValue(null, TAG_TITLE)
-                val type = parser.getAttributeValue(null, TAG_TYPE)?.toInt()
-                if (component != null && id != null && title != null && type != null) {
-                    infos.add(ControlInfo(component, id, title, type))
+                val deviceType = parser.getAttributeValue(null, TAG_TYPE)?.toInt()
+                if (component != null && id != null && title != null && deviceType != null) {
+                    infos.add(ControlInfo(component, id, title, deviceType))
                 }
             }
         }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManager.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManager.kt
index 99aa360..e09d20b 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManager.kt
@@ -24,7 +24,8 @@
 import android.os.Bundle
 import android.os.IBinder
 import android.os.RemoteException
-import android.service.controls.Control
+import android.os.UserHandle
+import android.service.controls.ControlsProviderService
 import android.service.controls.ControlsProviderService.CALLBACK_BUNDLE
 import android.service.controls.ControlsProviderService.CALLBACK_TOKEN
 import android.service.controls.IControlsActionCallback
@@ -39,24 +40,39 @@
 import com.android.systemui.util.concurrency.DelayableExecutor
 import java.util.concurrent.TimeUnit
 
-typealias LoadCallback = (List<Control>) -> Unit
+/**
+ * Manager for the lifecycle of the connection to a given [ControlsProviderService].
+ *
+ * This class handles binding and unbinding and requests to the service. The class will queue
+ * requests until the service is connected and dispatch them then.
+ *
+ * @property context A SystemUI context for binding to the services
+ * @property executor A delayable executor for posting timeouts
+ * @property loadCallbackService a callback interface to hand the remote service for loading
+ *                               controls
+ * @property actionCallbackService a callback interface to hand the remote service for sending
+ *                                 action responses
+ * @property subscriberService an "subscriber" interface for requesting and accepting updates for
+ *                             controls from the service.
+ * @property user the user for whose this service should be bound.
+ * @property componentName the name of the component for the service.
+ */
 class ControlsProviderLifecycleManager(
     private val context: Context,
     private val executor: DelayableExecutor,
     private val loadCallbackService: IControlsLoadCallback.Stub,
     private val actionCallbackService: IControlsActionCallback.Stub,
     private val subscriberService: IControlsSubscriber.Stub,
+    val user: UserHandle,
     val componentName: ComponentName
 ) : IBinder.DeathRecipient {
 
-    var lastLoadCallback: LoadCallback? = null
+    var lastLoadCallback: ControlsBindingController.LoadCallback? = null
         private set
     val token: IBinder = Binder()
     @GuardedBy("subscriptions")
     private val subscriptions = mutableListOf<IControlsSubscription>()
-    private var unbindImmediate = false
     private var requiresBound = false
-    private var isBound = false
     @GuardedBy("queuedMessages")
     private val queuedMessages: MutableSet<Message> = ArraySet()
     private var wrapper: ServiceWrapper? = null
@@ -96,30 +112,22 @@
             }
             bindTryCount++
             try {
-                isBound = context.bindService(intent, serviceConnection, BIND_FLAGS)
+                context.bindServiceAsUser(intent, serviceConnection, BIND_FLAGS, user)
             } catch (e: SecurityException) {
                 Log.e(TAG, "Failed to bind to service", e)
-                isBound = false
             }
         } else {
             if (DEBUG) {
                 Log.d(TAG, "Unbinding service $intent")
             }
             bindTryCount = 0
-            wrapper = null
-            if (isBound) {
+            wrapper?.run {
                 context.unbindService(serviceConnection)
-                isBound = false
             }
+            wrapper = null
         }
     }
 
-    fun bindPermanently() {
-        unbindImmediate = false
-        unqueueMessage(Message.Unbind)
-        bindService(true)
-    }
-
     private val serviceConnection = object : ServiceConnection {
         override fun onServiceConnected(name: ComponentName, service: IBinder) {
             if (DEBUG) Log.d(TAG, "onServiceConnected $name")
@@ -133,7 +141,7 @@
 
         override fun onServiceDisconnected(name: ComponentName?) {
             if (DEBUG) Log.d(TAG, "onServiceDisconnected $name")
-            isBound = false
+            wrapper = null
             bindService(false)
         }
     }
@@ -152,7 +160,9 @@
             load()
         }
         queue.filter { it is Message.Subscribe }.flatMap { (it as Message.Subscribe).list }.run {
-            subscribe(this)
+            if (this.isNotEmpty()) {
+                subscribe(this)
+            }
         }
         queue.filter { it is Message.Action }.forEach {
             val msg = it as Message.Action
@@ -193,30 +203,48 @@
         }
     }
 
-    fun maybeBindAndLoad(callback: LoadCallback) {
-        unqueueMessage(Message.Unbind)
-        lastLoadCallback = callback
-        onLoadCanceller = executor.executeDelayed({
-            // Didn't receive a response in time, log and send back empty list
-            Log.d(TAG, "Timeout waiting onLoad for $componentName")
-            loadCallbackService.accept(token, emptyList())
-        }, LOAD_TIMEOUT, TimeUnit.MILLISECONDS)
-        if (isBound) {
-            load()
-        } else {
-            queueMessage(Message.Load)
-            unbindImmediate = true
+    private inline fun invokeOrQueue(f: () -> Unit, msg: Message) {
+        wrapper?.run {
+            f()
+        } ?: run {
+            queueMessage(msg)
             bindService(true)
         }
     }
 
+    /**
+     * Request a call to [ControlsProviderService.loadAvailableControls].
+     *
+     * If the service is not bound, the call will be queued and the service will be bound first.
+     * The service will be bound after the controls are returned or the call times out.
+     *
+     * @param callback a callback in which to return the result back. If the call times out
+     *                 [ControlsBindingController.LoadCallback.error] will be called instead.
+     */
+    fun maybeBindAndLoad(callback: ControlsBindingController.LoadCallback) {
+        unqueueMessage(Message.Unbind)
+        lastLoadCallback = callback
+        onLoadCanceller = executor.executeDelayed({
+            // Didn't receive a response in time, log and send back error
+            Log.d(TAG, "Timeout waiting onLoad for $componentName")
+            callback.error("Timeout waiting onLoad")
+            // Don't accept load callbacks after this
+            lastLoadCallback = null
+            unbindService()
+        }, LOAD_TIMEOUT, TimeUnit.MILLISECONDS)
+
+        invokeOrQueue(::load, Message.Load)
+    }
+
+    /**
+     * Request a subscription to the [Publisher] returned by [ControlsProviderService.publisherFor]
+     *
+     * If the service is not bound, the call will be queued and the service will be bound first.
+     *
+     * @param controlIds a list of the ids of controls to send status back.
+     */
     fun maybeBindAndSubscribe(controlIds: List<String>) {
-        if (isBound) {
-            subscribe(controlIds)
-        } else {
-            queueMessage(Message.Subscribe(controlIds))
-            bindService(true)
-        }
+        invokeOrQueue({ subscribe(controlIds) }, Message.Subscribe(controlIds))
     }
 
     private fun subscribe(controlIds: List<String>) {
@@ -229,13 +257,16 @@
         }
     }
 
+    /**
+     * Request a call to [ControlsProviderService.performControlAction].
+     *
+     * If the service is not bound, the call will be queued and the service will be bound first.
+     *
+     * @param controlId the id of the [Control] the action is performed on
+     * @param action the action performed
+     */
     fun maybeBindAndSendAction(controlId: String, action: ControlAction) {
-        if (isBound) {
-            action(controlId, action)
-        } else {
-            queueMessage(Message.Action(controlId, action))
-            bindService(true)
-        }
+        invokeOrQueue({ action(controlId, action) }, Message.Action(controlId, action))
     }
 
     private fun action(controlId: String, action: ControlAction) {
@@ -248,6 +279,12 @@
         }
     }
 
+    /**
+     * Starts the subscription to the [ControlsProviderService] and requests status of controls.
+     *
+     * @param subscription the subscriber to use to request controls
+     * @see maybeBindAndLoad
+     */
     fun startSubscription(subscription: IControlsSubscription) {
         synchronized(subscriptions) {
             subscriptions.add(subscription)
@@ -255,6 +292,9 @@
         wrapper?.request(subscription, MAX_CONTROLS_REQUEST)
     }
 
+    /**
+     * Unsubscribe from this service, cancelling all status requests.
+     */
     fun unsubscribe() {
         if (DEBUG) {
             Log.d(TAG, "unsubscribe $componentName")
@@ -272,20 +312,36 @@
         }
     }
 
-    fun maybeUnbindAndRemoveCallback() {
+    /**
+     * Request bind to the service.
+     */
+    fun bindService() {
+        unqueueMessage(Message.Unbind)
+        bindService(true)
+    }
+
+    /**
+     * Request unbind from the service.
+     */
+    fun unbindService() {
         lastLoadCallback = null
         onLoadCanceller?.run()
         onLoadCanceller = null
-        if (unbindImmediate) {
-            bindService(false)
-        }
+
+        bindService(false)
     }
 
-    fun unbindService() {
-        unbindImmediate = true
-        maybeUnbindAndRemoveCallback()
+    override fun toString(): String {
+        return StringBuilder("ControlsProviderLifecycleManager(").apply {
+            append("component=$componentName")
+            append(", user=$user")
+            append(")")
+        }.toString()
     }
 
+    /**
+     * Messages for the internal queue.
+     */
     sealed class Message {
         abstract val type: Int
         object Load : Message() {
diff --git a/packages/SystemUI/src/com/android/systemui/controls/controller/ServiceWrapper.kt b/packages/SystemUI/src/com/android/systemui/controls/controller/ServiceWrapper.kt
index 5c812b1..b90f892 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/controller/ServiceWrapper.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/controller/ServiceWrapper.kt
@@ -25,12 +25,17 @@
 import android.service.controls.actions.ControlActionWrapper
 import android.util.Log
 
+/**
+ * Wrapper for the service calls.
+ *
+ * Calling all [IControlsProvider] methods through here will wrap them in a try/catch block.
+ */
 class ServiceWrapper(val service: IControlsProvider) {
     companion object {
         private const val TAG = "ServiceWrapper"
     }
 
-    private fun callThroughService(block: () -> Unit): Boolean {
+    private inline fun callThroughService(block: () -> Unit): Boolean {
         try {
             block()
             return true
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/AppAdapter.kt b/packages/SystemUI/src/com/android/systemui/controls/management/AppAdapter.kt
index d62bb4d..89caace 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/AppAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/AppAdapter.kt
@@ -17,15 +17,19 @@
 package com.android.systemui.controls.management
 
 import android.content.ComponentName
+import android.content.res.Resources
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
 import androidx.lifecycle.Lifecycle
+import androidx.lifecycle.LifecycleOwner
 import androidx.recyclerview.widget.RecyclerView
+import com.android.settingslib.applications.DefaultAppInfo
 import com.android.settingslib.widget.CandidateInfo
 import com.android.systemui.R
+import java.text.Collator
 import java.util.concurrent.Executor
 
 /**
@@ -41,20 +45,27 @@
  * @param onAppSelected a callback to indicate that an app has been selected in the list.
  */
 class AppAdapter(
+    backgroundExecutor: Executor,
     uiExecutor: Executor,
     lifecycle: Lifecycle,
     controlsListingController: ControlsListingController,
     private val layoutInflater: LayoutInflater,
-    private val onAppSelected: (ComponentName?) -> Unit = {}
+    private val onAppSelected: (ComponentName?) -> Unit = {},
+    private val favoritesRenderer: FavoritesRenderer,
+    private val resources: Resources
 ) : RecyclerView.Adapter<AppAdapter.Holder>() {
 
     private var listOfServices = emptyList<CandidateInfo>()
 
     private val callback = object : ControlsListingController.ControlsListingCallback {
         override fun onServicesUpdated(list: List<CandidateInfo>) {
-            uiExecutor.execute {
-                listOfServices = list
-                notifyDataSetChanged()
+            backgroundExecutor.execute {
+                val collator = Collator.getInstance(resources.getConfiguration().locale)
+                val localeComparator = compareBy<CandidateInfo, CharSequence>(collator) {
+                    it.loadLabel()
+                }
+                listOfServices = list.sortedWith(localeComparator)
+                uiExecutor.execute(::notifyDataSetChanged)
             }
         }
     }
@@ -64,7 +75,8 @@
     }
 
     override fun onCreateViewHolder(parent: ViewGroup, i: Int): Holder {
-        return Holder(layoutInflater.inflate(R.layout.app_item, parent, false))
+        return Holder(layoutInflater.inflate(R.layout.controls_app_item, parent, false),
+                favoritesRenderer)
     }
 
     override fun getItemCount() = listOfServices.size
@@ -79,9 +91,10 @@
     /**
      * Holder for binding views in the [RecyclerView]-
      */
-    class Holder(view: View) : RecyclerView.ViewHolder(view) {
+    class Holder(view: View, val favRenderer: FavoritesRenderer) : RecyclerView.ViewHolder(view) {
         private val icon: ImageView = itemView.requireViewById(com.android.internal.R.id.icon)
         private val title: TextView = itemView.requireViewById(com.android.internal.R.id.title)
+        private val favorites: TextView = itemView.requireViewById(R.id.favorites)
 
         /**
          * Bind data to the view
@@ -90,6 +103,19 @@
         fun bindData(data: CandidateInfo) {
             icon.setImageDrawable(data.loadIcon())
             title.text = data.loadLabel()
+            favorites.text = favRenderer.renderFavoritesForComponent(
+                    (data as DefaultAppInfo).componentName)
         }
     }
+}
+
+class FavoritesRenderer(
+    private val resources: Resources,
+    private val favoriteFunction: (ComponentName) -> Int
+) {
+
+    fun renderFavoritesForComponent(component: ComponentName): String {
+        val qty = favoriteFunction(component)
+        return resources.getQuantityString(R.plurals.controls_number_of_favorites, qty, qty)
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt
index e6d3c26..d3cabe6 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlAdapter.kt
@@ -16,74 +16,177 @@
 
 package com.android.systemui.controls.management
 
+import android.graphics.Rect
+import android.graphics.drawable.Icon
+import android.service.controls.DeviceTypes
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
 import android.widget.CheckBox
+import android.widget.ImageView
 import android.widget.TextView
+import androidx.recyclerview.widget.GridLayoutManager
 import androidx.recyclerview.widget.RecyclerView
 import com.android.systemui.R
-import com.android.systemui.controls.ControlStatus
-import com.android.systemui.controls.controller.ControlInfo
+import com.android.systemui.controls.ui.RenderInfo
+
+private typealias ModelFavoriteChanger = (String, Boolean) -> Unit
 
 /**
  * Adapter for binding [Control] information to views.
  *
+ * The model for this adapter is provided by a [FavoriteModel] that is set using
+ * [changeFavoritesModel]. This allows for updating the model if there's a reload.
+ *
  * @param layoutInflater an inflater for the views in the containing [RecyclerView]
- * @param favoriteCallback a callback to be called when the favorite status of a [Control] is
- *                         changed. The callback will take a [ControlInfo.Builder] that's
- *                         pre-populated with the [Control] information and the new favorite
- *                         status.
+ * @param onlyFavorites set to true to only display favorites instead of all controls
  */
 class ControlAdapter(
     private val layoutInflater: LayoutInflater,
-    private val favoriteCallback: (ControlInfo.Builder, Boolean) -> Unit
-) : RecyclerView.Adapter<ControlAdapter.Holder>() {
+    private val onlyFavorites: Boolean = false
+) : RecyclerView.Adapter<Holder>() {
 
-    var listOfControls = emptyList<ControlStatus>()
-
-    override fun onCreateViewHolder(parent: ViewGroup, i: Int): Holder {
-        return Holder(layoutInflater.inflate(R.layout.control_item, parent, false))
+    companion object {
+        private const val TYPE_ZONE = 0
+        private const val TYPE_CONTROL = 1
     }
 
-    override fun getItemCount() = listOfControls.size
-
-    override fun onBindViewHolder(holder: Holder, index: Int) {
-        holder.bindData(listOfControls[index], favoriteCallback)
-    }
-
-    /**
-     * Holder for binding views in the [RecyclerView]-
-     */
-    class Holder(view: View) : RecyclerView.ViewHolder(view) {
-        private val title: TextView = itemView.requireViewById(R.id.title)
-        private val subtitle: TextView = itemView.requireViewById(R.id.subtitle)
-        private val favorite: CheckBox = itemView.requireViewById(R.id.favorite)
-
-        /**
-         * Bind data to the view
-         * @param data information about the [Control]
-         * @param callback a callback to be called when the favorite status of the [Control] is
-         *                 changed. The callback will take a [ControlInfo.Builder] that's
-         *                 pre-populated with the [Control] information and the new favorite status.
-         */
-        fun bindData(data: ControlStatus, callback: (ControlInfo.Builder, Boolean) -> Unit) {
-            title.text = data.control.title
-            subtitle.text = data.control.subtitle
-            favorite.isChecked = data.favorite
-            favorite.setOnClickListener {
-                val infoBuilder = ControlInfo.Builder().apply {
-                    controlId = data.control.controlId
-                    controlTitle = data.control.title
-                    deviceType = data.control.deviceType
-                }
-                callback(infoBuilder, favorite.isChecked)
-            }
+    val spanSizeLookup = object : GridLayoutManager.SpanSizeLookup() {
+        override fun getSpanSize(position: Int): Int {
+            return if (getItemViewType(position) == TYPE_ZONE) 2 else 1
         }
     }
 
-    fun setItems(list: List<ControlStatus>) {
-        listOfControls = list
+    var modelList: List<ElementWrapper> = emptyList()
+    private var favoritesModel: FavoriteModel? = null
+
+    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): Holder {
+        return when (viewType) {
+            TYPE_CONTROL -> {
+                ControlHolder(
+                        layoutInflater.inflate(R.layout.controls_base_item, parent, false).apply {
+                            layoutParams.apply {
+                                width = ViewGroup.LayoutParams.MATCH_PARENT
+                            }
+                            elevation = 15f
+                        },
+                        { id, favorite ->
+                            favoritesModel?.changeFavoriteStatus(id, favorite)
+                        })
+            }
+            TYPE_ZONE -> {
+                ZoneHolder(layoutInflater.inflate(R.layout.controls_zone_header, parent, false))
+            }
+            else -> throw IllegalStateException("Wrong viewType: $viewType")
+        }
+    }
+
+    fun changeFavoritesModel(favoritesModel: FavoriteModel) {
+        this.favoritesModel = favoritesModel
+        if (onlyFavorites) {
+            modelList = favoritesModel.favorites
+        } else {
+            modelList = favoritesModel.all
+        }
         notifyDataSetChanged()
     }
+
+    override fun getItemCount() = modelList.size
+
+    override fun onBindViewHolder(holder: Holder, index: Int) {
+        holder.bindData(modelList[index])
+    }
+
+    override fun getItemViewType(position: Int): Int {
+        return when (modelList[position]) {
+            is ZoneNameWrapper -> TYPE_ZONE
+            is ControlWrapper -> TYPE_CONTROL
+        }
+    }
+}
+
+/**
+ * Holder for binding views in the [RecyclerView]-
+ * @param view the [View] for this [Holder]
+ */
+sealed class Holder(view: View) : RecyclerView.ViewHolder(view) {
+
+    /**
+     * Bind the data from the model into the view
+     */
+    abstract fun bindData(wrapper: ElementWrapper)
+}
+
+/**
+ * Holder for using with [ZoneNameWrapper] to display names of zones.
+ */
+private class ZoneHolder(view: View) : Holder(view) {
+    private val zone: TextView = itemView as TextView
+
+    override fun bindData(wrapper: ElementWrapper) {
+        wrapper as ZoneNameWrapper
+        zone.text = wrapper.zoneName
+    }
+}
+
+/**
+ * Holder for using with [ControlWrapper] to display names of zones.
+ * @param favoriteCallback this callback will be called whenever the favorite state of the
+ *                         [Control] this view represents changes.
+ */
+private class ControlHolder(view: View, val favoriteCallback: ModelFavoriteChanger) : Holder(view) {
+    private val icon: ImageView = itemView.requireViewById(R.id.icon)
+    private val title: TextView = itemView.requireViewById(R.id.title)
+    private val subtitle: TextView = itemView.requireViewById(R.id.subtitle)
+    private val removed: TextView = itemView.requireViewById(R.id.status)
+    private val favorite: CheckBox = itemView.requireViewById<CheckBox>(R.id.favorite).apply {
+        visibility = View.VISIBLE
+    }
+
+    override fun bindData(wrapper: ElementWrapper) {
+        wrapper as ControlWrapper
+        val data = wrapper.controlStatus
+        val renderInfo = getRenderInfo(data.control.deviceType)
+        title.text = data.control.title
+        subtitle.text = data.control.subtitle
+        favorite.isChecked = data.favorite
+        removed.text = if (data.removed) "Removed" else ""
+        favorite.setOnClickListener {
+            favoriteCallback(data.control.controlId, favorite.isChecked)
+        }
+        applyRenderInfo(renderInfo)
+    }
+
+    private fun getRenderInfo(
+        @DeviceTypes.DeviceType deviceType: Int
+    ): RenderInfo {
+        return RenderInfo.lookup(deviceType, true)
+    }
+
+    private fun applyRenderInfo(ri: RenderInfo) {
+        val context = itemView.context
+        val fg = context.getResources().getColorStateList(ri.foreground, context.getTheme())
+
+        icon.setImageIcon(Icon.createWithResource(context, ri.iconResourceId))
+        icon.setImageTintList(fg)
+    }
+}
+
+class MarginItemDecorator(
+    private val topMargin: Int,
+    private val sideMargins: Int
+) : RecyclerView.ItemDecoration() {
+
+    override fun getItemOffsets(
+        outRect: Rect,
+        view: View,
+        parent: RecyclerView,
+        state: RecyclerView.State
+    ) {
+        outRect.apply {
+            top = topMargin
+            left = sideMargins
+            right = sideMargins
+        }
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
index 01c4fef..9952b97 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsFavoritingActivity.kt
@@ -18,62 +18,156 @@
 
 import android.app.Activity
 import android.content.ComponentName
+import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
-import androidx.recyclerview.widget.LinearLayoutManager
+import android.view.View
+import android.view.ViewStub
+import android.widget.Button
+import android.widget.TextView
+import androidx.recyclerview.widget.GridLayoutManager
+import androidx.recyclerview.widget.ItemTouchHelper
 import androidx.recyclerview.widget.RecyclerView
+import com.android.systemui.R
+import com.android.systemui.broadcast.BroadcastDispatcher
 import com.android.systemui.controls.controller.ControlInfo
 import com.android.systemui.controls.controller.ControlsControllerImpl
 import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.settings.CurrentUserTracker
 import java.util.concurrent.Executor
+import java.util.function.Consumer
 import javax.inject.Inject
 
 class ControlsFavoritingActivity @Inject constructor(
     @Main private val executor: Executor,
-    private val controller: ControlsControllerImpl
+    private val controller: ControlsControllerImpl,
+    broadcastDispatcher: BroadcastDispatcher
 ) : Activity() {
 
     companion object {
         private const val TAG = "ControlsFavoritingActivity"
         const val EXTRA_APP = "extra_app_label"
-        const val EXTRA_COMPONENT = "extra_component"
     }
 
-    private lateinit var recyclerView: RecyclerView
-    private lateinit var adapter: ControlAdapter
+    private lateinit var recyclerViewAll: RecyclerView
+    private lateinit var adapterAll: ControlAdapter
+    private lateinit var recyclerViewFavorites: RecyclerView
+    private lateinit var adapterFavorites: ControlAdapter
+    private lateinit var errorText: TextView
+    private var component: ComponentName? = null
+
+    private var currentModel: FavoriteModel? = null
+    private var itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(
+            /* dragDirs */ ItemTouchHelper.UP
+                    or ItemTouchHelper.DOWN
+                    or ItemTouchHelper.LEFT
+                    or ItemTouchHelper.RIGHT,
+            /* swipeDirs */0
+    ) {
+        override fun onMove(
+            recyclerView: RecyclerView,
+            viewHolder: RecyclerView.ViewHolder,
+            target: RecyclerView.ViewHolder
+        ): Boolean {
+            return currentModel?.onMoveItem(
+                    viewHolder.adapterPosition, target.adapterPosition) != null
+        }
+
+        override fun onSwiped(viewHolder: RecyclerView.ViewHolder, direction: Int) {}
+
+        override fun isItemViewSwipeEnabled() = false
+    }
+
+    private val currentUserTracker = object : CurrentUserTracker(broadcastDispatcher) {
+        private val startingUser = controller.currentUserId
+
+        override fun onUserSwitched(newUserId: Int) {
+            if (newUserId != startingUser) {
+                stopTracking()
+                finish()
+            }
+        }
+    }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        setContentView(R.layout.controls_management)
+        requireViewById<ViewStub>(R.id.stub).apply {
+            layoutResource = R.layout.controls_management_favorites
+            inflate()
+        }
 
         val app = intent.getCharSequenceExtra(EXTRA_APP)
-        val component = intent.getParcelableExtra<ComponentName>(EXTRA_COMPONENT)
+        component = intent.getParcelableExtra<ComponentName>(Intent.EXTRA_COMPONENT_NAME)
+        errorText = requireViewById(R.id.error_message)
 
-        // If we have no component name, there's not much we can do.
-        val callback = component?.let {
-            { infoBuilder: ControlInfo.Builder, status: Boolean ->
-                infoBuilder.componentName = it
-                controller.changeFavoriteStatus(infoBuilder.build(), status)
-            }
-        } ?: { _, _ -> Unit }
+        setUpRecyclerViews()
 
-        recyclerView = RecyclerView(applicationContext)
-        adapter = ControlAdapter(LayoutInflater.from(applicationContext), callback)
-        recyclerView.adapter = adapter
-        recyclerView.layoutManager = LinearLayoutManager(applicationContext)
+        requireViewById<TextView>(R.id.title).text = app?.let { it }
+                ?: resources.getText(R.string.controls_favorite_default_title)
+        requireViewById<TextView>(R.id.subtitle).text =
+                resources.getText(R.string.controls_favorite_subtitle)
 
-        if (app != null) {
-            setTitle("Controls for $app")
-        } else {
-            setTitle("Controls")
-        }
-        setContentView(recyclerView)
-
-        component?.let {
-            controller.loadForComponent(it) {
-                executor.execute {
-                    adapter.setItems(it)
+        requireViewById<Button>(R.id.done).setOnClickListener {
+            if (component == null) return@setOnClickListener
+            val favoritesForStorage = currentModel?.favorites?.map {
+                with(it.controlStatus.control) {
+                    ControlInfo(component!!, controlId, title, deviceType)
                 }
             }
+            if (favoritesForStorage != null) {
+                controller.replaceFavoritesForComponent(component!!, favoritesForStorage)
+                finishAffinity()
+            }
         }
+
+        component?.let {
+            controller.loadForComponent(it, Consumer { data ->
+                val allControls = data.allControls
+                val favoriteKeys = data.favoritesIds
+                val error = data.errorOnLoad
+                executor.execute {
+                    val favoriteModel = FavoriteModel(
+                        allControls,
+                        favoriteKeys,
+                        allAdapter = adapterAll,
+                        favoritesAdapter = adapterFavorites)
+                    adapterAll.changeFavoritesModel(favoriteModel)
+                    adapterFavorites.changeFavoritesModel(favoriteModel)
+                    currentModel = favoriteModel
+                    errorText.visibility = if (error) View.VISIBLE else View.GONE
+                }
+            })
+        }
+
+        currentUserTracker.startTracking()
+    }
+
+    private fun setUpRecyclerViews() {
+        val margin = resources.getDimensionPixelSize(R.dimen.controls_card_margin)
+        val itemDecorator = MarginItemDecorator(margin, margin)
+        val layoutInflater = LayoutInflater.from(applicationContext)
+
+        adapterAll = ControlAdapter(layoutInflater)
+        recyclerViewAll = requireViewById<RecyclerView>(R.id.listAll).apply {
+            adapter = adapterAll
+            layoutManager = GridLayoutManager(applicationContext, 2).apply {
+                spanSizeLookup = adapterAll.spanSizeLookup
+            }
+            addItemDecoration(itemDecorator)
+        }
+
+        adapterFavorites = ControlAdapter(layoutInflater, true)
+        recyclerViewFavorites = requireViewById<RecyclerView>(R.id.listFavorites).apply {
+            layoutManager = GridLayoutManager(applicationContext, 2)
+            adapter = adapterFavorites
+            addItemDecoration(itemDecorator)
+        }
+        ItemTouchHelper(itemTouchHelperCallback).attachToRecyclerView(recyclerViewFavorites)
+    }
+
+    override fun onDestroy() {
+        currentUserTracker.stopTracking()
+        super.onDestroy()
     }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingController.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingController.kt
index 09e0ce9..d893caa 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingController.kt
@@ -18,14 +18,32 @@
 
 import android.content.ComponentName
 import com.android.settingslib.widget.CandidateInfo
+import com.android.systemui.controls.UserAwareController
 import com.android.systemui.statusbar.policy.CallbackController
 
+/**
+ * Controller for keeping track of services that can be bound given a particular [ServiceListing].
+ */
 interface ControlsListingController :
-        CallbackController<ControlsListingController.ControlsListingCallback> {
+        CallbackController<ControlsListingController.ControlsListingCallback>,
+        UserAwareController {
 
+    /**
+     * @return the current list of services that satisfies the [ServiceListing].
+     */
     fun getCurrentServices(): List<CandidateInfo>
+
+    /**
+     * Get the app label for a given component.
+     *
+     * This call may do Binder calls (to [PackageManager])
+     *
+     * @param name the component name to retrieve the label
+     * @return the label for the component
+     */
     fun getAppLabel(name: ComponentName): CharSequence? = ""
 
+    @FunctionalInterface
     interface ControlsListingCallback {
         fun onServicesUpdated(list: List<CandidateInfo>)
     }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
index 3949c592..882382c 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsListingControllerImpl.kt
@@ -19,6 +19,7 @@
 import android.content.ComponentName
 import android.content.Context
 import android.content.pm.ServiceInfo
+import android.os.UserHandle
 import android.service.controls.ControlsProviderService
 import android.util.Log
 import com.android.internal.annotations.VisibleForTesting
@@ -31,6 +32,16 @@
 import javax.inject.Inject
 import javax.inject.Singleton
 
+private fun createServiceListing(context: Context): ServiceListing {
+    return ServiceListing.Builder(context).apply {
+        setIntentAction(ControlsProviderService.SERVICE_CONTROLS)
+        setPermission("android.permission.BIND_CONTROLS")
+        setNoun("Controls Provider")
+        setSetting("controls_providers")
+        setTag("controls_providers")
+    }.build()
+}
+
 /**
  * Provides a listing of components to be used as ControlsServiceProvider.
  *
@@ -43,41 +54,55 @@
 class ControlsListingControllerImpl @VisibleForTesting constructor(
     private val context: Context,
     @Background private val backgroundExecutor: Executor,
-    private val serviceListing: ServiceListing
+    private val serviceListingBuilder: (Context) -> ServiceListing
 ) : ControlsListingController {
 
     @Inject
     constructor(context: Context, executor: Executor): this(
             context,
             executor,
-            ServiceListing.Builder(context)
-                    .setIntentAction(ControlsProviderService.SERVICE_CONTROLS)
-                    .setPermission("android.permission.BIND_CONTROLS")
-                    .setNoun("Controls Provider")
-                    .setSetting("controls_providers")
-                    .setTag("controls_providers")
-                    .build()
+            ::createServiceListing
     )
 
+    private var serviceListing = serviceListingBuilder(context)
+
     companion object {
         private const val TAG = "ControlsListingControllerImpl"
     }
 
     private var availableServices = emptyList<ServiceInfo>()
 
-    init {
-        serviceListing.addCallback {
-            Log.d(TAG, "ServiceConfig reloaded")
-            availableServices = it.toList()
+    override var currentUserId = context.userId
+        private set
 
-            backgroundExecutor.execute {
-                callbacks.forEach {
-                    it.onServicesUpdated(getCurrentServices())
-                }
+    private val serviceListingCallback = ServiceListing.Callback {
+        Log.d(TAG, "ServiceConfig reloaded")
+        availableServices = it.toList()
+
+        backgroundExecutor.execute {
+            callbacks.forEach {
+                it.onServicesUpdated(getCurrentServices())
             }
         }
     }
 
+    init {
+        serviceListing.addCallback(serviceListingCallback)
+    }
+
+    override fun changeUser(newUser: UserHandle) {
+        backgroundExecutor.execute {
+            callbacks.clear()
+            availableServices = emptyList()
+            serviceListing.setListening(false)
+            serviceListing.removeCallback(serviceListingCallback)
+            currentUserId = newUser.identifier
+            val contextForUser = context.createContextAsUser(newUser, 0)
+            serviceListing = serviceListingBuilder(contextForUser)
+            serviceListing.addCallback(serviceListingCallback)
+        }
+    }
+
     // All operations in background thread
     private val callbacks = mutableSetOf<ControlsListingController.ControlsListingCallback>()
 
@@ -91,6 +116,7 @@
      */
     override fun addCallback(listener: ControlsListingController.ControlsListingCallback) {
         backgroundExecutor.execute {
+            Log.d(TAG, "Subscribing callback")
             callbacks.add(listener)
             if (callbacks.size == 1) {
                 serviceListing.setListening(true)
@@ -108,6 +134,7 @@
      */
     override fun removeCallback(listener: ControlsListingController.ControlsListingCallback) {
         backgroundExecutor.execute {
+            Log.d(TAG, "Unsubscribing callback")
             callbacks.remove(listener)
             if (callbacks.size == 0) {
                 serviceListing.setListening(false)
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
index 69af516..ad4bdef 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/ControlsProviderSelectorActivity.kt
@@ -20,9 +20,16 @@
 import android.content.Intent
 import android.os.Bundle
 import android.view.LayoutInflater
+import android.view.ViewStub
+import android.widget.TextView
 import androidx.recyclerview.widget.LinearLayoutManager
 import androidx.recyclerview.widget.RecyclerView
+import com.android.systemui.R
+import com.android.systemui.broadcast.BroadcastDispatcher
+import com.android.systemui.controls.controller.ControlsController
+import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
+import com.android.systemui.settings.CurrentUserTracker
 import com.android.systemui.util.LifecycleActivity
 import java.util.concurrent.Executor
 import javax.inject.Inject
@@ -32,7 +39,10 @@
  */
 class ControlsProviderSelectorActivity @Inject constructor(
     @Main private val executor: Executor,
-    private val listingController: ControlsListingController
+    @Background private val backExecutor: Executor,
+    private val listingController: ControlsListingController,
+    private val controlsController: ControlsController,
+    broadcastDispatcher: BroadcastDispatcher
 ) : LifecycleActivity() {
 
     companion object {
@@ -40,16 +50,43 @@
     }
 
     private lateinit var recyclerView: RecyclerView
+    private val currentUserTracker = object : CurrentUserTracker(broadcastDispatcher) {
+        private val startingUser = listingController.currentUserId
+
+        override fun onUserSwitched(newUserId: Int) {
+            if (newUserId != startingUser) {
+                stopTracking()
+                finish()
+            }
+        }
+    }
 
     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
+        setContentView(R.layout.controls_management)
+        requireViewById<ViewStub>(R.id.stub).apply {
+            layoutResource = R.layout.controls_management_apps
+            inflate()
+        }
 
-        recyclerView = RecyclerView(applicationContext)
-        recyclerView.adapter = AppAdapter(executor, lifecycle, listingController,
-                LayoutInflater.from(this), ::launchFavoritingActivity)
+        recyclerView = requireViewById(R.id.list)
+        recyclerView.adapter = AppAdapter(
+                backExecutor,
+                executor,
+                lifecycle,
+                listingController,
+                LayoutInflater.from(this),
+                ::launchFavoritingActivity,
+                FavoritesRenderer(resources, controlsController::countFavoritesForComponent),
+                resources)
         recyclerView.layoutManager = LinearLayoutManager(applicationContext)
 
-        setContentView(recyclerView)
+        requireViewById<TextView>(R.id.title).text =
+                resources.getText(R.string.controls_providers_title)
+        requireViewById<TextView>(R.id.subtitle).text =
+                resources.getText(R.string.controls_providers_subtitle)
+
+        currentUserTracker.startTracking()
     }
 
     /**
@@ -57,13 +94,22 @@
      * @param component a component name for a [ControlsProviderService]
      */
     fun launchFavoritingActivity(component: ComponentName?) {
-        component?.let {
-            val intent = Intent(applicationContext, ControlsFavoritingActivity::class.java).apply {
-                putExtra(ControlsFavoritingActivity.EXTRA_APP, listingController.getAppLabel(it))
-                putExtra(ControlsFavoritingActivity.EXTRA_COMPONENT, it)
-                flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_SINGLE_TOP
+        backExecutor.execute {
+            component?.let {
+                val intent = Intent(applicationContext, ControlsFavoritingActivity::class.java)
+                        .apply {
+                    putExtra(ControlsFavoritingActivity.EXTRA_APP,
+                            listingController.getAppLabel(it))
+                    putExtra(Intent.EXTRA_COMPONENT_NAME, it)
+                    flags = Intent.FLAG_ACTIVITY_SINGLE_TOP
+                }
+                startActivity(intent)
             }
-            startActivity(intent)
         }
     }
+
+    override fun onDestroy() {
+        currentUserTracker.stopTracking()
+        super.onDestroy()
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/controls/management/FavoriteModel.kt b/packages/SystemUI/src/com/android/systemui/controls/management/FavoriteModel.kt
new file mode 100644
index 0000000..6bade0a
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/management/FavoriteModel.kt
@@ -0,0 +1,153 @@
+/*
+ * 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.systemui.controls.management
+
+import android.text.TextUtils
+import android.util.Log
+import com.android.systemui.controls.ControlStatus
+import java.util.Collections
+import java.util.Comparator
+
+/**
+ * Model for keeping track of current favorites and their order.
+ *
+ * This model is to be used with two [ControlAdapter] one that shows only favorites in the current
+ * order and another that shows all controls, separated by zone. When the favorite state of any
+ * control is modified or when the favorites are reordered, the adapters are notified of the change.
+ *
+ * @param listControls list of all the [ControlStatus] to display. This includes controls currently
+ *                     marked as favorites as well as those that have been removed (not returned
+ *                     from load)
+ * @param listFavoritesIds list of the [Control.controlId] for all the favorites, including those
+ *                         that have been removed.
+ * @param favoritesAdapter [ControlAdapter] used by the [RecyclerView] that shows only favorites
+ * @param allAdapter [ControlAdapter] used by the [RecyclerView] that shows all controls
+ */
+class FavoriteModel(
+    private val listControls: List<ControlStatus>,
+    listFavoritesIds: List<String>,
+    private val favoritesAdapter: ControlAdapter,
+    private val allAdapter: ControlAdapter
+) {
+
+    companion object {
+        private const val TAG = "FavoriteModel"
+    }
+
+    /**
+     * List of favorite controls ([ControlWrapper]) in order.
+     *
+     * Initially, this list will give a list of wrappers in the order specified by the constructor
+     * variable `listFavoriteIds`.
+     *
+     * As the favorites are added, removed or moved, this list will keep track of those changes.
+     */
+    val favorites: List<ControlWrapper> = listFavoritesIds.map { id ->
+            ControlWrapper(listControls.first { it.control.controlId == id })
+        }.toMutableList()
+
+    /**
+     * List of all controls by zones.
+     *
+     * Lists all the controls with the zone names interleaved as a flat list. After each zone name,
+     * the controls in that zone are listed. Zones are listed in alphabetical order
+     */
+    val all: List<ElementWrapper> = listControls.groupBy { it.control.zone }
+            .mapKeys { it.key ?: "" } // map null to empty
+            .toSortedMap(CharSequenceComparator())
+            .flatMap {
+                val controls = it.value.map { ControlWrapper(it) }
+                if (!TextUtils.isEmpty(it.key)) {
+                    listOf(ZoneNameWrapper(it.key)) + controls
+                } else {
+                    controls
+                }
+            }
+
+    /**
+     * Change the favorite status of a [Control].
+     *
+     * This can be invoked from any of the [ControlAdapter]. It will change the status of that
+     * control and either add it to the list of favorites (at the end) or remove it from it.
+     *
+     * Removing the favorite status from a Removed control will make it disappear completely if
+     * changes are saved.
+     *
+     * @param controlId the id of the [Control] to change the status
+     * @param favorite `true` if and only if it's set to be a favorite.
+     */
+    fun changeFavoriteStatus(controlId: String, favorite: Boolean) {
+        favorites as MutableList
+        val index = all.indexOfFirst {
+            it is ControlWrapper && it.controlStatus.control.controlId == controlId
+        }
+        val control = (all[index] as ControlWrapper).controlStatus
+        if (control.favorite == favorite) {
+            Log.d(TAG, "Changing favorite to same state for ${control.control.controlId} ")
+            return
+        } else {
+            control.favorite = favorite
+        }
+        allAdapter.notifyItemChanged(index)
+        if (favorite) {
+            favorites.add(all[index] as ControlWrapper)
+            favoritesAdapter.notifyItemInserted(favorites.size - 1)
+        } else {
+            val i = favorites.indexOfFirst { it.controlStatus.control.controlId == controlId }
+            favorites.removeAt(i)
+            favoritesAdapter.notifyItemRemoved(i)
+        }
+    }
+
+    /**
+     * Move items in the model and notify the [favoritesAdapter].
+     */
+    fun onMoveItem(from: Int, to: Int) {
+        if (from < to) {
+            for (i in from until to) {
+                Collections.swap(favorites, i, i + 1)
+            }
+        } else {
+            for (i in from downTo to + 1) {
+                Collections.swap(favorites, i, i - 1)
+            }
+        }
+        favoritesAdapter.notifyItemMoved(from, to)
+    }
+}
+
+/**
+ * Compares [CharSequence] as [String].
+ *
+ * It will have empty strings as the first element
+ */
+class CharSequenceComparator : Comparator<CharSequence> {
+    override fun compare(p0: CharSequence?, p1: CharSequence?): Int {
+        if (p0 == null && p1 == null) return 0
+        else if (p0 == null && p1 != null) return -1
+        else if (p0 != null && p1 == null) return 1
+        return p0.toString().compareTo(p1.toString())
+    }
+}
+
+/**
+ * Wrapper classes for the different types of elements shown in the [RecyclerView]s in
+ * [ControlsFavoritingActivity].
+ */
+sealed class ElementWrapper
+data class ZoneNameWrapper(val zoneName: CharSequence) : ElementWrapper()
+data class ControlWrapper(val controlStatus: ControlStatus) : ElementWrapper()
\ No newline at end of file
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/controls/ui/Behavior.kt
similarity index 75%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/controls/ui/Behavior.kt
index f5e2405..44f3fbc 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/Behavior.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,8 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package com.android.systemui.controls.ui
 
-parcelable PhoneTimeSuggestion;
+interface Behavior {
+    fun apply(cvh: ControlViewHolder, cws: ControlWithState)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinator.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinator.kt
new file mode 100644
index 0000000..eb84a8b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlActionCoordinator.kt
@@ -0,0 +1,62 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.app.PendingIntent
+import android.content.Intent
+import android.provider.Settings
+import android.service.controls.actions.BooleanAction
+import android.util.Log
+import android.view.HapticFeedbackConstants
+
+object ControlActionCoordinator {
+    public const val MIN_LEVEL = 0
+    public const val MAX_LEVEL = 10000
+
+    private var useDetailDialog: Boolean? = null
+
+    fun toggle(cvh: ControlViewHolder, templateId: String, isChecked: Boolean) {
+        cvh.action(BooleanAction(templateId, !isChecked))
+
+        val nextLevel = if (isChecked) MIN_LEVEL else MAX_LEVEL
+        cvh.clipLayer.setLevel(nextLevel)
+    }
+
+    fun longPress(cvh: ControlViewHolder) {
+        // Long press snould only be called when there is valid control state, otherwise ignore
+        cvh.cws.control?.let {
+            if (useDetailDialog == null) {
+                useDetailDialog = Settings.Secure.getInt(cvh.context.getContentResolver(),
+                    "systemui.controls_use_detail_panel", 0) != 0
+            }
+
+            try {
+                cvh.layout.performHapticFeedback(HapticFeedbackConstants.LONG_PRESS)
+                if (useDetailDialog!!) {
+                    DetailDialog(cvh.context, it.getAppIntent()).show()
+                } else {
+                    it.getAppIntent().send()
+                    val closeDialog = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
+                    cvh.context.sendBroadcast(closeDialog)
+                }
+            } catch (e: PendingIntent.CanceledException) {
+                Log.e(ControlsUiController.TAG, "Error sending pending intent", e)
+                cvh.setTransientStatus("Error opening application")
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
index 81b5f36..55c1b6a 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlViewHolder.kt
@@ -18,35 +18,30 @@
 
 import android.content.Context
 import android.graphics.drawable.ClipDrawable
-import android.graphics.drawable.Drawable
 import android.graphics.drawable.GradientDrawable
 import android.graphics.drawable.Icon
 import android.graphics.drawable.LayerDrawable
 import android.service.controls.Control
-import android.service.controls.DeviceTypes
-import android.service.controls.actions.BooleanAction
 import android.service.controls.actions.ControlAction
-import android.service.controls.actions.FloatAction
 import android.service.controls.templates.ControlTemplate
-import android.service.controls.templates.RangeTemplate
+import android.service.controls.templates.TemperatureControlTemplate
 import android.service.controls.templates.ToggleRangeTemplate
 import android.service.controls.templates.ToggleTemplate
-import android.util.TypedValue
-import android.view.MotionEvent
 import android.view.View
 import android.view.ViewGroup
 import android.widget.ImageView
 import android.widget.TextView
 
 import com.android.systemui.controls.controller.ControlsController
+import com.android.systemui.util.concurrency.DelayableExecutor
 import com.android.systemui.R
 
-private const val MIN_LEVEL = 0
-private const val MAX_LEVEL = 10000
+private const val UPDATE_DELAY_IN_MILLIS = 3000L
 
 class ControlViewHolder(
     val layout: ViewGroup,
-    val controlsController: ControlsController
+    val controlsController: ControlsController,
+    val uiExecutor: DelayableExecutor
 ) {
     val icon: ImageView = layout.requireViewById(R.id.icon)
     val status: TextView = layout.requireViewById(R.id.status)
@@ -57,6 +52,7 @@
     val clipLayer: ClipDrawable
     val gd: GradientDrawable
     lateinit var cws: ControlWithState
+    var cancelUpdate: Runnable? = null
 
     init {
         val ld = layout.getBackground() as LayerDrawable
@@ -68,6 +64,8 @@
     fun bindData(cws: ControlWithState) {
         this.cws = cws
 
+        cancelUpdate?.run()
+
         val (status, template) = cws.control?.let {
             title.setText(it.getTitle())
             subtitle.setText(it.getSubtitle())
@@ -78,9 +76,41 @@
             Pair(Control.STATUS_UNKNOWN, ControlTemplate.NO_TEMPLATE)
         }
 
+        cws.control?.let {
+            layout.setOnLongClickListener(View.OnLongClickListener() {
+                ControlActionCoordinator.longPress(this@ControlViewHolder)
+                true
+            })
+        }
+
         findBehavior(status, template).apply(this, cws)
     }
 
+    fun actionResponse(@ControlAction.ResponseResult response: Int) {
+        val text = when (response) {
+            ControlAction.RESPONSE_OK -> "Success"
+            ControlAction.RESPONSE_FAIL -> "Error"
+            else -> ""
+        }
+
+        if (!text.isEmpty()) {
+            setTransientStatus(text)
+        }
+    }
+
+    fun setTransientStatus(tempStatus: String) {
+        val previousText = status.getText()
+        val previousTextExtra = statusExtra.getText()
+
+        cancelUpdate = uiExecutor.executeDelayed({
+                status.setText(previousText)
+                statusExtra.setText(previousTextExtra)
+            }, UPDATE_DELAY_IN_MILLIS)
+
+        status.setText(tempStatus)
+        statusExtra.setText("")
+    }
+
     fun action(action: ControlAction) {
         controlsController.action(cws.ci, action)
     }
@@ -88,13 +118,14 @@
     private fun findBehavior(status: Int, template: ControlTemplate): Behavior {
         return when {
             status == Control.STATUS_UNKNOWN -> UnknownBehavior()
-            template is ToggleTemplate -> ToggleTemplateBehavior()
-            template is ToggleRangeTemplate -> ToggleRangeTemplateBehavior()
+            template is ToggleTemplate -> ToggleBehavior()
+            template is ToggleRangeTemplate -> ToggleRangeBehavior()
+            template is TemperatureControlTemplate -> TemperatureControlBehavior()
             else -> {
                 object : Behavior {
                     override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
                         cvh.status.setText(cws.control?.getStatusText())
-                        cvh.applyRenderInfo(findRenderInfo(cws.ci.deviceType, false))
+                        cvh.applyRenderInfo(RenderInfo.lookup(cws.ci.deviceType, false))
                     }
                 }
             }
@@ -118,283 +149,3 @@
         icon.setEnabled(enabled)
     }
 }
-
-private interface Behavior {
-    fun apply(cvh: ControlViewHolder, cws: ControlWithState)
-
-    fun findRenderInfo(deviceType: Int, isActive: Boolean): RenderInfo =
-        deviceRenderMap.getOrDefault(deviceType, unknownDeviceMap).getValue(isActive)
-}
-
-private class UnknownBehavior : Behavior {
-    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
-        cvh.status.setText("Loading...")
-        cvh.applyRenderInfo(findRenderInfo(cws.ci.deviceType, false))
-    }
-}
-
-private class ToggleRangeTemplateBehavior : Behavior {
-    lateinit var clipLayer: Drawable
-    lateinit var template: ToggleRangeTemplate
-    lateinit var control: Control
-    lateinit var cvh: ControlViewHolder
-    lateinit var rangeTemplate: RangeTemplate
-    lateinit var statusExtra: TextView
-    lateinit var status: TextView
-    lateinit var context: Context
-
-    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
-        this.control = cws.control!!
-        this.cvh = cvh
-
-        statusExtra = cvh.statusExtra
-        status = cvh.status
-
-        status.setText(control.getStatusText())
-
-        context = status.getContext()
-
-        cvh.layout.setOnTouchListener(ToggleRangeTouchListener())
-
-        val ld = cvh.layout.getBackground() as LayerDrawable
-        clipLayer = ld.findDrawableByLayerId(R.id.clip_layer)
-
-        template = control.getControlTemplate() as ToggleRangeTemplate
-        rangeTemplate = template.getRange()
-
-        val checked = template.isChecked()
-        val deviceType = control.getDeviceType()
-
-        updateRange((rangeTemplate.getCurrentValue() / 100.0f), checked)
-
-        cvh.setEnabled(checked)
-        cvh.applyRenderInfo(findRenderInfo(deviceType, checked))
-    }
-
-    fun toggle() {
-        cvh.action(BooleanAction(template.getTemplateId(), !template.isChecked()))
-
-        val nextLevel = if (template.isChecked()) MIN_LEVEL else MAX_LEVEL
-        clipLayer.setLevel(nextLevel)
-    }
-
-    fun beginUpdateRange() {
-        status.setVisibility(View.GONE)
-        statusExtra.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources()
-                .getDimensionPixelSize(R.dimen.control_status_expanded).toFloat())
-    }
-
-    fun updateRange(f: Float, checked: Boolean) {
-        clipLayer.setLevel(if (checked) (MAX_LEVEL * f).toInt() else MIN_LEVEL)
-
-        if (checked && f < 100.0f && f > 0.0f) {
-            statusExtra.setText("" + (f * 100.0).toInt() + "%")
-            statusExtra.setVisibility(View.VISIBLE)
-        } else {
-            statusExtra.setText("")
-            statusExtra.setVisibility(View.GONE)
-        }
-    }
-
-    fun endUpdateRange(f: Float) {
-        statusExtra.setText(" - " + (f * 100.0).toInt() + "%")
-
-        val newValue = rangeTemplate.getMinValue() +
-            (f * (rangeTemplate.getMaxValue() - rangeTemplate.getMinValue()))
-
-        statusExtra.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources()
-                .getDimensionPixelSize(R.dimen.control_status_normal).toFloat())
-        status.setVisibility(View.VISIBLE)
-
-        cvh.action(FloatAction(rangeTemplate.getTemplateId(), findNearestStep(newValue)))
-    }
-
-    fun findNearestStep(value: Float): Float {
-        var minDiff = 1000f
-
-        var f = rangeTemplate.getMinValue()
-        while (f <= rangeTemplate.getMaxValue()) {
-            val currentDiff = Math.abs(value - f)
-            if (currentDiff < minDiff) {
-                minDiff = currentDiff
-            } else {
-                return f - rangeTemplate.getStepValue()
-            }
-
-            f += rangeTemplate.getStepValue()
-        }
-
-        return rangeTemplate.getMaxValue()
-    }
-
-    inner class ToggleRangeTouchListener() : View.OnTouchListener {
-        private var initialTouchX: Float = 0.0f
-        private var initialTouchY: Float = 0.0f
-        private var isDragging: Boolean = false
-        private val minDragDiff = 20
-
-        override fun onTouch(v: View, e: MotionEvent): Boolean {
-            when (e.getActionMasked()) {
-                MotionEvent.ACTION_DOWN -> setupTouch(e)
-                MotionEvent.ACTION_MOVE -> detectDrag(v, e)
-                MotionEvent.ACTION_UP -> endTouch(v, e)
-            }
-
-            return true
-        }
-
-        private fun setupTouch(e: MotionEvent) {
-            initialTouchX = e.getX()
-            initialTouchY = e.getY()
-        }
-
-        private fun detectDrag(v: View, e: MotionEvent) {
-            val xDiff = Math.abs(e.getX() - initialTouchX)
-            val yDiff = Math.abs(e.getY() - initialTouchY)
-
-            if (xDiff < minDragDiff) {
-                isDragging = false
-            } else {
-                if (!isDragging) {
-                    this@ToggleRangeTemplateBehavior.beginUpdateRange()
-                }
-                v.getParent().requestDisallowInterceptTouchEvent(true)
-                isDragging = true
-                if (yDiff > xDiff) {
-                    endTouch(v, e)
-                } else {
-                    val percent = Math.max(0.0f, Math.min(1.0f, e.getX() / v.getWidth()))
-                    this@ToggleRangeTemplateBehavior.updateRange(percent, true)
-                }
-            }
-        }
-
-        private fun endTouch(v: View, e: MotionEvent) {
-            if (!isDragging) {
-                this@ToggleRangeTemplateBehavior.toggle()
-            } else {
-                val percent = Math.max(0.0f, Math.min(1.0f, e.getX() / v.getWidth()))
-                this@ToggleRangeTemplateBehavior.endUpdateRange(percent)
-            }
-
-            initialTouchX = 0.0f
-            initialTouchY = 0.0f
-            isDragging = false
-        }
-    }
-}
-
-private class ToggleTemplateBehavior : Behavior {
-    lateinit var clipLayer: Drawable
-    lateinit var template: ToggleTemplate
-    lateinit var control: Control
-    lateinit var cvh: ControlViewHolder
-    lateinit var context: Context
-    lateinit var status: TextView
-
-    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
-        this.control = cws.control!!
-        this.cvh = cvh
-        status = cvh.status
-
-        status.setText(control.getStatusText())
-
-        cvh.layout.setOnClickListener(View.OnClickListener() { toggle() })
-
-        val ld = cvh.layout.getBackground() as LayerDrawable
-        clipLayer = ld.findDrawableByLayerId(R.id.clip_layer)
-
-        template = control.getControlTemplate() as ToggleTemplate
-
-        val checked = template.isChecked()
-        val deviceType = control.getDeviceType()
-
-        clipLayer.setLevel(if (checked) MAX_LEVEL else MIN_LEVEL)
-        cvh.setEnabled(checked)
-        cvh.applyRenderInfo(findRenderInfo(deviceType, checked))
-    }
-
-    fun toggle() {
-        cvh.action(BooleanAction(template.getTemplateId(), !template.isChecked()))
-
-        val nextLevel = if (template.isChecked()) MIN_LEVEL else MAX_LEVEL
-        clipLayer.setLevel(nextLevel)
-    }
-}
-
-internal data class RenderInfo(val iconResourceId: Int, val foreground: Int, val background: Int)
-
-private val unknownDeviceMap = mapOf(
-    false to RenderInfo(
-        R.drawable.ic_light_off_gm2_24px,
-        R.color.unknown_foreground,
-        R.color.unknown_foreground),
-    true to RenderInfo(
-        R.drawable.ic_lightbulb_outline_gm2_24px,
-        R.color.unknown_foreground,
-        R.color.unknown_foreground)
-)
-
-private val deviceRenderMap = mapOf<Int, Map<Boolean, RenderInfo>>(
-    DeviceTypes.TYPE_UNKNOWN to unknownDeviceMap,
-    DeviceTypes.TYPE_LIGHT to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_light_off_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background),
-        true to RenderInfo(
-            R.drawable.ic_lightbulb_outline_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background)
-    ),
-    DeviceTypes.TYPE_THERMOSTAT to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_device_thermostat_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background),
-        true to RenderInfo(
-            R.drawable.ic_device_thermostat_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background)
-    ),
-    DeviceTypes.TYPE_CAMERA to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_videocam_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background),
-        true to RenderInfo(
-            R.drawable.ic_videocam_gm2_24px,
-            R.color.light_foreground,
-            R.color.light_background)
-    ),
-    DeviceTypes.TYPE_LOCK to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_lock_open_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background),
-        true to RenderInfo(
-            R.drawable.ic_lock_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background)
-    ),
-    DeviceTypes.TYPE_SWITCH to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_switches_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background),
-        true to RenderInfo(
-            R.drawable.ic_switches_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background)
-    ),
-    DeviceTypes.TYPE_OUTLET to mapOf(
-        false to RenderInfo(
-            R.drawable.ic_power_off_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background),
-        true to RenderInfo(
-            R.drawable.ic_power_gm2_24px,
-            R.color.lock_foreground,
-            R.color.lock_background)
-    )
-)
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
index b07a75d..0f10537 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiController.kt
@@ -22,6 +22,12 @@
 import android.view.ViewGroup
 
 interface ControlsUiController {
+    val available: Boolean
+
+    companion object {
+        public const val TAG = "ControlsUiController"
+    }
+
     fun show(parent: ViewGroup)
     fun hide()
     fun onRefreshState(componentName: ComponentName, controls: List<Control>)
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
index 926fb6e..9e6636f 100644
--- a/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ControlsUiControllerImpl.kt
@@ -22,6 +22,7 @@
 import android.content.Context
 import android.content.Intent
 import android.content.ServiceConnection
+import android.graphics.drawable.Drawable
 import android.os.IBinder
 import android.service.controls.Control
 import android.service.controls.TokenProvider
@@ -29,22 +30,27 @@
 import android.view.LayoutInflater
 import android.view.View
 import android.view.ViewGroup
-import android.widget.TextView
+import android.widget.ImageView
+import android.widget.LinearLayout
+import android.widget.Space
 
+import com.android.settingslib.widget.CandidateInfo
 import com.android.systemui.controls.controller.ControlsController
 import com.android.systemui.controls.controller.ControlInfo
+import com.android.systemui.controls.management.ControlsListingController
 import com.android.systemui.controls.management.ControlsProviderSelectorActivity
+import com.android.systemui.dagger.qualifiers.Background
 import com.android.systemui.dagger.qualifiers.Main
 import com.android.systemui.R
+import com.android.systemui.util.concurrency.DelayableExecutor
 
 import dagger.Lazy
 
-import java.util.concurrent.Executor
+import java.text.Collator
+
 import javax.inject.Inject
 import javax.inject.Singleton
 
-private const val TAG = "ControlsUi"
-
 // TEMP CODE for MOCK
 private const val TOKEN = "https://www.googleapis.com/auth/assistant"
 private const val SCOPE = "oauth2:" + TOKEN
@@ -55,13 +61,13 @@
 
     override fun onServiceConnected(cName: ComponentName, binder: IBinder) {
         Thread({
-            Log.i(TAG, "TokenProviderConnection connected")
+            Log.i(ControlsUiController.TAG, "TokenProviderConnection connected")
             mTokenProvider = TokenProvider.Stub.asInterface(binder)
 
             val mLastAccountName = mTokenProvider?.getAccountName()
 
             if (mLastAccountName == null || mLastAccountName.isEmpty()) {
-                Log.e(TAG, "NO ACCOUNT IS SET. Open HomeMock app")
+                Log.e(ControlsUiController.TAG, "NO ACCOUNT IS SET. Open HomeMock app")
             } else {
                 mTokenProvider?.setAuthToken(getAuthToken(mLastAccountName))
                 cc.subscribeToFavorites()
@@ -77,7 +83,7 @@
         val am = AccountManager.get(context)
         val accounts = am.getAccountsByType("com.google")
         if (accounts == null || accounts.size == 0) {
-            Log.w(TAG, "No com.google accounts found")
+            Log.w(ControlsUiController.TAG, "No com.google accounts found")
             return null
         }
 
@@ -96,26 +102,49 @@
         try {
             return am.blockingGetAuthToken(account!!, SCOPE, true)
         } catch (e: Throwable) {
-            Log.e(TAG, "Error getting auth token", e)
+            Log.e(ControlsUiController.TAG, "Error getting auth token", e)
             return null
         }
     }
 }
 
+private data class ControlKey(val componentName: ComponentName, val controlId: String)
+
 @Singleton
 class ControlsUiControllerImpl @Inject constructor (
     val controlsController: Lazy<ControlsController>,
     val context: Context,
-    @Main val uiExecutor: Executor
+    @Main val uiExecutor: DelayableExecutor,
+    @Background val bgExecutor: DelayableExecutor,
+    val controlsListingController: Lazy<ControlsListingController>
 ) : ControlsUiController {
 
     private lateinit var controlInfos: List<ControlInfo>
-    private val controlsById = mutableMapOf<Pair<ComponentName, String>, ControlWithState>()
-    private val controlViewsById = mutableMapOf<String, ControlViewHolder>()
+    private val controlsById = mutableMapOf<ControlKey, ControlWithState>()
+    private val controlViewsById = mutableMapOf<ControlKey, ControlViewHolder>()
     private lateinit var parent: ViewGroup
 
+    override val available: Boolean
+        get() = controlsController.get().available
+
+    private val listingCallback = object : ControlsListingController.ControlsListingCallback {
+        override fun onServicesUpdated(candidates: List<CandidateInfo>) {
+            bgExecutor.execute {
+                val collator = Collator.getInstance(context.getResources()
+                        .getConfiguration().locale)
+                val localeComparator = compareBy<CandidateInfo, CharSequence>(collator) {
+                    it.loadLabel()
+                }
+
+                val mList = candidates.toMutableList()
+                mList.sortWith(localeComparator)
+                loadInitialSetupViewIcons(mList.map { it.loadLabel() to it.loadIcon() })
+            }
+        }
+    }
+
     override fun show(parent: ViewGroup) {
-        Log.d(TAG, "show()")
+        Log.d(ControlsUiController.TAG, "show()")
 
         this.parent = parent
 
@@ -123,7 +152,7 @@
 
         controlInfos.map {
             ControlWithState(it, null)
-        }.associateByTo(controlsById) { Pair(it.ci.component, it.ci.controlId) }
+        }.associateByTo(controlsById) { ControlKey(it.ci.component, it.ci.controlId) }
 
         if (controlInfos.isEmpty()) {
             showInitialSetupView()
@@ -136,18 +165,46 @@
         val serviceIntent = Intent()
         serviceIntent.setComponent(ComponentName("com.android.systemui.home.mock",
                 "com.android.systemui.home.mock.AuthService"))
-        context.bindService(serviceIntent, tokenProviderConnection!!, Context.BIND_AUTO_CREATE)
+        if (!context.bindService(serviceIntent, tokenProviderConnection!!,
+                Context.BIND_AUTO_CREATE)) {
+            controlsController.get().subscribeToFavorites()
+        }
     }
 
     private fun showInitialSetupView() {
         val inflater = LayoutInflater.from(context)
         inflater.inflate(R.layout.controls_no_favorites, parent, true)
 
-        val textView = parent.requireViewById(R.id.controls_title) as TextView
-        textView.setOnClickListener {
+        val viewGroup = parent.requireViewById(R.id.controls_no_favorites_group) as ViewGroup
+        viewGroup.setOnClickListener(launchSelectorActivityListener(context))
+
+        controlsListingController.get().addCallback(listingCallback)
+    }
+
+    private fun loadInitialSetupViewIcons(icons: List<Pair<CharSequence, Drawable>>) {
+        uiExecutor.execute {
+            val viewGroup = parent.requireViewById(R.id.controls_icon_row) as ViewGroup
+            viewGroup.removeAllViews()
+
+            val inflater = LayoutInflater.from(context)
+            icons.forEach {
+                val imageView = inflater.inflate(R.layout.controls_icon, viewGroup, false)
+                        as ImageView
+                imageView.setContentDescription(it.first)
+                imageView.setImageDrawable(it.second)
+                viewGroup.addView(imageView)
+            }
+        }
+    }
+
+    private fun launchSelectorActivityListener(context: Context): (View) -> Unit {
+        return { _ ->
+            val closeDialog = Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS)
+            context.sendBroadcast(closeDialog)
+
             val i = Intent()
             i.setComponent(ComponentName(context, ControlsProviderSelectorActivity::class.java))
-            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
+            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP or Intent.FLAG_ACTIVITY_NEW_TASK)
             context.startActivity(i)
         }
     }
@@ -159,29 +216,29 @@
         val listView = parent.requireViewById(R.id.global_actions_controls_list) as ViewGroup
         var lastRow: ViewGroup = createRow(inflater, listView)
         controlInfos.forEach {
-            Log.d(TAG, "favorited control id: " + it.controlId)
+            Log.d(ControlsUiController.TAG, "favorited control id: " + it.controlId)
             if (lastRow.getChildCount() == 2) {
                 lastRow = createRow(inflater, listView)
             }
             val item = inflater.inflate(
                 R.layout.controls_base_item, lastRow, false) as ViewGroup
             lastRow.addView(item)
-            val cvh = ControlViewHolder(item, controlsController.get())
-            cvh.bindData(controlsById.get(Pair(it.component, it.controlId))!!)
-            controlViewsById.put(it.controlId, cvh)
+            val cvh = ControlViewHolder(item, controlsController.get(), uiExecutor)
+            val key = ControlKey(it.component, it.controlId)
+            cvh.bindData(controlsById.getValue(key))
+            controlViewsById.put(key, cvh)
+        }
+
+        if ((controlInfos.size % 2) == 1) {
+            lastRow.addView(Space(context), LinearLayout.LayoutParams(0, 0, 1f))
         }
 
         val moreImageView = parent.requireViewById(R.id.controls_more) as View
-        moreImageView.setOnClickListener {
-            val i = Intent()
-            i.setComponent(ComponentName(context, ControlsProviderSelectorActivity::class.java))
-            i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)
-            context.startActivity(i)
-        }
+        moreImageView.setOnClickListener(launchSelectorActivityListener(context))
     }
 
     override fun hide() {
-        Log.d(TAG, "hide()")
+        Log.d(ControlsUiController.TAG, "hide()")
         controlsController.get().unsubscribe()
         context.unbindService(tokenProviderConnection)
         tokenProviderConnection = null
@@ -189,31 +246,35 @@
         parent.removeAllViews()
         controlsById.clear()
         controlViewsById.clear()
+        controlsListingController.get().removeCallback(listingCallback)
     }
 
     override fun onRefreshState(componentName: ComponentName, controls: List<Control>) {
-        Log.d(TAG, "onRefreshState()")
+        Log.d(ControlsUiController.TAG, "onRefreshState()")
         controls.forEach { c ->
-            controlsById.get(Pair(componentName, c.getControlId()))?.let {
-                Log.d(TAG, "onRefreshState() for id: " + c.getControlId())
+            controlsById.get(ControlKey(componentName, c.getControlId()))?.let {
+                Log.d(ControlsUiController.TAG, "onRefreshState() for id: " + c.getControlId())
                 val cws = ControlWithState(it.ci, c)
-                controlsById.put(Pair(componentName, c.getControlId()), cws)
+                val key = ControlKey(componentName, c.getControlId())
+                controlsById.put(key, cws)
 
                 uiExecutor.execute {
-                    controlViewsById.get(c.getControlId())?.bindData(cws)
+                    controlViewsById.get(key)?.bindData(cws)
                 }
             }
         }
     }
 
     override fun onActionResponse(componentName: ComponentName, controlId: String, response: Int) {
-        Log.d(TAG, "onActionResponse()")
-        TODO("not implemented")
+        val key = ControlKey(componentName, controlId)
+        uiExecutor.execute {
+            controlViewsById.get(key)?.actionResponse(response)
+        }
     }
 
-    private fun createRow(inflater: LayoutInflater, parent: ViewGroup): ViewGroup {
-        val row = inflater.inflate(R.layout.controls_row, parent, false) as ViewGroup
-        parent.addView(row)
+    private fun createRow(inflater: LayoutInflater, listView: ViewGroup): ViewGroup {
+        val row = inflater.inflate(R.layout.controls_row, listView, false) as ViewGroup
+        listView.addView(row)
         return row
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
new file mode 100644
index 0000000..071198b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/DetailDialog.kt
@@ -0,0 +1,106 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.app.ActivityView
+import android.app.ActivityOptions
+import android.app.Dialog
+import android.app.PendingIntent
+import android.content.ComponentName
+import android.content.Context
+import android.content.Intent
+import android.view.View
+import android.view.ViewGroup
+import android.view.ViewGroup.LayoutParams.MATCH_PARENT
+import android.view.Window
+import android.view.WindowManager
+import android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
+
+import com.android.systemui.R
+
+/**
+ * A dialog that provides an {@link ActivityView}, allowing the application to provide
+ * additional information and actions pertaining to a {@link android.service.controls.Control}.
+ * The activity being launched is specified by {@link android.service.controls.Control#getAppIntent}.
+ */
+class DetailDialog(
+    val parentContext: Context,
+    val intent: PendingIntent
+) : Dialog(parentContext) {
+
+    lateinit var activityView: ActivityView
+
+    val stateCallback: ActivityView.StateCallback = object : ActivityView.StateCallback() {
+        override fun onActivityViewReady(view: ActivityView) {
+            val fillInIntent = Intent()
+
+            // Apply flags to make behaviour match documentLaunchMode=always.
+            fillInIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
+            fillInIntent.addFlags(Intent.FLAG_ACTIVITY_MULTIPLE_TASK)
+            view.startActivity(intent, fillInIntent, ActivityOptions.makeBasic())
+        }
+
+        override fun onActivityViewDestroyed(view: ActivityView) {}
+
+        override fun onTaskCreated(taskId: Int, componentName: ComponentName) {}
+
+        override fun onTaskRemovalStarted(taskId: Int) {}
+    }
+
+    init {
+        val window = getWindow()
+        window.requestFeature(Window.FEATURE_NO_TITLE)
+
+        // Inflate the decor view, so the attributes below are not overwritten by the theme.
+        window.getDecorView()
+        window.getAttributes().systemUiVisibility =
+            (window.getAttributes().systemUiVisibility
+                or View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
+                or View.SYSTEM_UI_FLAG_LAYOUT_STABLE)
+
+        window.setLayout(MATCH_PARENT, MATCH_PARENT)
+        window.clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND)
+        window.addFlags(WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN
+            or WindowManager.LayoutParams.FLAG_LAYOUT_INSET_DECOR
+            or WindowManager.LayoutParams.FLAG_HARDWARE_ACCELERATED)
+        window.setType(WindowManager.LayoutParams.TYPE_VOLUME_OVERLAY)
+        window.getAttributes().setFitInsetsTypes(0 /* types */)
+
+        setContentView(R.layout.controls_detail_dialog)
+
+        activityView = ActivityView(context, null, 0, false)
+        requireViewById<ViewGroup>(R.id.controls_activity_view).apply {
+            addView(activityView)
+        }
+    }
+
+    override fun show() {
+        val attrs = getWindow().getAttributes()
+        attrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS
+        getWindow().setAttributes(attrs)
+
+        activityView.setCallback(stateCallback)
+
+        super.show()
+    }
+
+    override fun dismiss() {
+        activityView.release()
+
+        super.dismiss()
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt
new file mode 100644
index 0000000..da52c6f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/RenderInfo.kt
@@ -0,0 +1,125 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.service.controls.DeviceTypes
+import android.service.controls.templates.TemperatureControlTemplate
+
+import com.android.systemui.R
+
+data class IconState(val disabledResourceId: Int, val enabledResourceId: Int) {
+    operator fun get(state: Boolean): Int {
+        return if (state) {
+            enabledResourceId
+        } else {
+            disabledResourceId
+        }
+    }
+}
+
+data class RenderInfo(val iconResourceId: Int, val foreground: Int, val background: Int) {
+
+    companion object {
+        fun lookup(deviceType: Int, enabled: Boolean): RenderInfo {
+            val iconState = deviceIconMap.getValue(deviceType)
+            val (fg, bg) = deviceColorMap.getValue(deviceType)
+            return RenderInfo(iconState[enabled], fg, bg)
+        }
+
+        fun lookup(deviceType: Int, offset: Int, enabled: Boolean): RenderInfo {
+            val key = deviceType * BUCKET_SIZE + offset
+            return lookup(key, enabled)
+        }
+    }
+}
+
+private const val BUCKET_SIZE = 1000
+private const val THERMOSTAT_RANGE = DeviceTypes.TYPE_THERMOSTAT * BUCKET_SIZE
+
+private val deviceColorMap = mapOf<Int, Pair<Int, Int>>(
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_HEAT) to
+        Pair(R.color.thermo_heat_foreground, R.color.thermo_heat_background),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_COOL) to
+        Pair(R.color.thermo_cool_foreground, R.color.thermo_cool_background),
+    DeviceTypes.TYPE_LIGHT to Pair(R.color.light_foreground, R.color.light_background)
+).withDefault {
+        Pair(R.color.control_foreground, R.color.control_background)
+}
+
+private val deviceIconMap = mapOf<Int, IconState>(
+    THERMOSTAT_RANGE to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_OFF) to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_HEAT) to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_COOL) to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_HEAT_COOL) to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    (THERMOSTAT_RANGE + TemperatureControlTemplate.MODE_ECO) to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    DeviceTypes.TYPE_THERMOSTAT to IconState(
+        R.drawable.ic_device_thermostat_gm2_24px,
+        R.drawable.ic_device_thermostat_gm2_24px
+    ),
+    DeviceTypes.TYPE_LIGHT to IconState(
+        R.drawable.ic_light_off_gm2_24px,
+        R.drawable.ic_lightbulb_outline_gm2_24px
+    ),
+    DeviceTypes.TYPE_CAMERA to IconState(
+        R.drawable.ic_videocam_gm2_24px,
+        R.drawable.ic_videocam_gm2_24px
+    ),
+    DeviceTypes.TYPE_LOCK to IconState(
+        R.drawable.ic_lock_open_gm2_24px,
+        R.drawable.ic_lock_gm2_24px
+    ),
+    DeviceTypes.TYPE_SWITCH to IconState(
+        R.drawable.ic_switches_gm2_24px,
+        R.drawable.ic_switches_gm2_24px
+    ),
+    DeviceTypes.TYPE_OUTLET to IconState(
+        R.drawable.ic_power_off_gm2_24px,
+        R.drawable.ic_power_gm2_24px
+    ),
+    DeviceTypes.TYPE_VACUUM to IconState(
+        R.drawable.ic_vacuum_gm2_24px,
+        R.drawable.ic_vacuum_gm2_24px
+    ),
+    DeviceTypes.TYPE_MOP to IconState(
+        R.drawable.ic_vacuum_gm2_24px,
+        R.drawable.ic_vacuum_gm2_24px
+    )
+).withDefault {
+    IconState(
+        R.drawable.ic_device_unknown_gm2_24px,
+        R.drawable.ic_device_unknown_gm2_24px
+    )
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/TemperatureControlBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/TemperatureControlBehavior.kt
new file mode 100644
index 0000000..7661c6f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/TemperatureControlBehavior.kt
@@ -0,0 +1,58 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.LayerDrawable
+import android.service.controls.Control
+import android.service.controls.templates.TemperatureControlTemplate
+import android.widget.TextView
+
+import com.android.systemui.R
+import com.android.systemui.controls.ui.ControlActionCoordinator.MIN_LEVEL
+import com.android.systemui.controls.ui.ControlActionCoordinator.MAX_LEVEL
+
+class TemperatureControlBehavior : Behavior {
+    lateinit var clipLayer: Drawable
+    lateinit var control: Control
+    lateinit var cvh: ControlViewHolder
+    lateinit var template: TemperatureControlTemplate
+    lateinit var status: TextView
+    lateinit var context: Context
+
+    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
+        this.control = cws.control!!
+        this.cvh = cvh
+        status = cvh.status
+
+        status.setText(control.getStatusText())
+
+        val ld = cvh.layout.getBackground() as LayerDrawable
+        clipLayer = ld.findDrawableByLayerId(R.id.clip_layer)
+
+        template = control.getControlTemplate() as TemperatureControlTemplate
+
+        val activeMode = template.getCurrentActiveMode()
+        val enabled = activeMode != 0 && activeMode != TemperatureControlTemplate.MODE_OFF
+        val deviceType = control.getDeviceType()
+
+        clipLayer.setLevel(if (enabled) MAX_LEVEL else MIN_LEVEL)
+        cvh.setEnabled(enabled)
+        cvh.applyRenderInfo(RenderInfo.lookup(deviceType, activeMode, enabled))
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleBehavior.kt
new file mode 100644
index 0000000..4c35d26
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleBehavior.kt
@@ -0,0 +1,62 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.LayerDrawable
+import android.view.View
+import android.widget.TextView
+import android.service.controls.Control
+import android.service.controls.templates.ToggleTemplate
+
+import com.android.systemui.R
+import com.android.systemui.controls.ui.ControlActionCoordinator.MIN_LEVEL
+import com.android.systemui.controls.ui.ControlActionCoordinator.MAX_LEVEL
+
+class ToggleBehavior : Behavior {
+    lateinit var clipLayer: Drawable
+    lateinit var template: ToggleTemplate
+    lateinit var control: Control
+    lateinit var cvh: ControlViewHolder
+    lateinit var context: Context
+    lateinit var status: TextView
+
+    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
+        this.control = cws.control!!
+        this.cvh = cvh
+        status = cvh.status
+
+        status.setText(control.getStatusText())
+
+        template = control.getControlTemplate() as ToggleTemplate
+
+        cvh.layout.setOnClickListener(View.OnClickListener() {
+            ControlActionCoordinator.toggle(cvh, template.getTemplateId(), template.isChecked())
+        })
+
+        val ld = cvh.layout.getBackground() as LayerDrawable
+        clipLayer = ld.findDrawableByLayerId(R.id.clip_layer)
+
+        val checked = template.isChecked()
+        val deviceType = control.getDeviceType()
+
+        clipLayer.setLevel(if (checked) MAX_LEVEL else MIN_LEVEL)
+        cvh.setEnabled(checked)
+        cvh.applyRenderInfo(RenderInfo.lookup(deviceType, checked))
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt
new file mode 100644
index 0000000..8d65ca3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/ToggleRangeBehavior.kt
@@ -0,0 +1,202 @@
+/*
+ * 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.systemui.controls.ui
+
+import android.content.Context
+import android.graphics.drawable.Drawable
+import android.graphics.drawable.LayerDrawable
+import android.util.Log
+import android.view.GestureDetector
+import android.view.GestureDetector.SimpleOnGestureListener
+import android.view.MotionEvent
+import android.view.View
+import android.widget.TextView
+import android.service.controls.Control
+import android.service.controls.actions.FloatAction
+import android.service.controls.templates.RangeTemplate
+import android.service.controls.templates.ToggleRangeTemplate
+import android.util.TypedValue
+
+import com.android.systemui.R
+import com.android.systemui.controls.ui.ControlActionCoordinator.MIN_LEVEL
+import com.android.systemui.controls.ui.ControlActionCoordinator.MAX_LEVEL
+
+import java.util.IllegalFormatException
+
+class ToggleRangeBehavior : Behavior {
+    lateinit var clipLayer: Drawable
+    lateinit var template: ToggleRangeTemplate
+    lateinit var control: Control
+    lateinit var cvh: ControlViewHolder
+    lateinit var rangeTemplate: RangeTemplate
+    lateinit var statusExtra: TextView
+    lateinit var status: TextView
+    lateinit var context: Context
+
+    companion object {
+        private const val DEFAULT_FORMAT = "%.1f"
+    }
+
+    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
+        this.control = cws.control!!
+        this.cvh = cvh
+
+        statusExtra = cvh.statusExtra
+        status = cvh.status
+
+        status.setText(control.getStatusText())
+
+        context = status.getContext()
+
+        val gestureListener = ToggleRangeGestureListener(cvh.layout)
+        val gestureDetector = GestureDetector(context, gestureListener)
+        cvh.layout.setOnTouchListener({ v: View, e: MotionEvent ->
+            if (gestureDetector.onTouchEvent(e)) {
+                return@setOnTouchListener true
+            }
+
+            if (e.getAction() == MotionEvent.ACTION_UP && gestureListener.isDragging) {
+                gestureListener.isDragging = false
+                endUpdateRange()
+                return@setOnTouchListener true
+            }
+
+            return@setOnTouchListener false
+        })
+
+        val ld = cvh.layout.getBackground() as LayerDrawable
+        clipLayer = ld.findDrawableByLayerId(R.id.clip_layer)
+        clipLayer.setLevel(MIN_LEVEL)
+
+        template = control.getControlTemplate() as ToggleRangeTemplate
+        rangeTemplate = template.getRange()
+
+        val checked = template.isChecked()
+        val deviceType = control.getDeviceType()
+
+        val currentRatio = rangeTemplate.getCurrentValue() /
+                (rangeTemplate.getMaxValue() - rangeTemplate.getMinValue())
+        updateRange(currentRatio, checked)
+
+        cvh.setEnabled(checked)
+        cvh.applyRenderInfo(RenderInfo.lookup(deviceType, checked))
+    }
+
+    fun beginUpdateRange() {
+        status.setVisibility(View.GONE)
+        statusExtra.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources()
+                .getDimensionPixelSize(R.dimen.control_status_expanded).toFloat())
+    }
+
+    fun updateRange(ratioDiff: Float, checked: Boolean) {
+        val changeAmount = if (checked) (MAX_LEVEL * ratioDiff).toInt() else MIN_LEVEL
+        val newLevel = Math.max(MIN_LEVEL, Math.min(MAX_LEVEL, clipLayer.getLevel() + changeAmount))
+        clipLayer.setLevel(newLevel)
+
+        if (checked) {
+            val newValue = levelToRangeValue()
+            val formattedNewValue = format(rangeTemplate.getFormatString().toString(),
+                    DEFAULT_FORMAT, newValue)
+
+            statusExtra.setText(formattedNewValue)
+            statusExtra.setVisibility(View.VISIBLE)
+        } else {
+            statusExtra.setText("")
+            statusExtra.setVisibility(View.GONE)
+        }
+    }
+
+    private fun format(primaryFormat: String, backupFormat: String, value: Float): String {
+        return try {
+            String.format(primaryFormat, value)
+        } catch (e: IllegalFormatException) {
+            Log.w(ControlsUiController.TAG, "Illegal format in range template", e)
+            if (backupFormat == "") {
+                ""
+            } else {
+                format(backupFormat, "", value)
+            }
+        }
+    }
+
+    private fun levelToRangeValue(): Float {
+        val ratio = clipLayer.getLevel().toFloat() / MAX_LEVEL
+        return rangeTemplate.getMinValue() +
+            (ratio * (rangeTemplate.getMaxValue() - rangeTemplate.getMinValue()))
+    }
+
+    fun endUpdateRange() {
+        statusExtra.setTextSize(TypedValue.COMPLEX_UNIT_PX, context.getResources()
+                .getDimensionPixelSize(R.dimen.control_status_normal).toFloat())
+        status.setVisibility(View.VISIBLE)
+        cvh.action(FloatAction(rangeTemplate.getTemplateId(), findNearestStep(levelToRangeValue())))
+    }
+
+    fun findNearestStep(value: Float): Float {
+        var minDiff = 1000f
+
+        var f = rangeTemplate.getMinValue()
+        while (f <= rangeTemplate.getMaxValue()) {
+            val currentDiff = Math.abs(value - f)
+            if (currentDiff < minDiff) {
+                minDiff = currentDiff
+            } else {
+                return f - rangeTemplate.getStepValue()
+            }
+
+            f += rangeTemplate.getStepValue()
+        }
+
+        return rangeTemplate.getMaxValue()
+    }
+
+    inner class ToggleRangeGestureListener(
+        val v: View
+    ) : SimpleOnGestureListener() {
+        var isDragging: Boolean = false
+
+        override fun onDown(e: MotionEvent): Boolean {
+            return true
+        }
+
+        override fun onLongPress(e: MotionEvent) {
+            ControlActionCoordinator.longPress(this@ToggleRangeBehavior.cvh)
+        }
+
+        override fun onScroll(
+            e1: MotionEvent,
+            e2: MotionEvent,
+            xDiff: Float,
+            yDiff: Float
+        ): Boolean {
+            if (!isDragging) {
+                this@ToggleRangeBehavior.beginUpdateRange()
+                isDragging = true
+            }
+
+            this@ToggleRangeBehavior.updateRange(-xDiff / v.getWidth(), true)
+            return true
+        }
+
+        override fun onSingleTapUp(e: MotionEvent): Boolean {
+            val th = this@ToggleRangeBehavior
+            ControlActionCoordinator.toggle(th.cvh, th.template.getTemplateId(),
+                    th.template.isChecked())
+            return true
+        }
+    }
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt
similarity index 60%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt
index f5e2405..5a6e5b4 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/controls/ui/UnknownBehavior.kt
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,12 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package com.android.systemui.controls.ui
 
-parcelable PhoneTimeSuggestion;
+class UnknownBehavior : Behavior {
+    override fun apply(cvh: ControlViewHolder, cws: ControlWithState) {
+        cvh.status.setText("Loading...")
+        cvh.setEnabled(false)
+        cvh.applyRenderInfo(RenderInfo.lookup(cws.ci.deviceType, false))
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java b/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java
index 18fe3ec..5025246 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DefaultComponentBinder.java
@@ -25,7 +25,6 @@
  */
 @Module(includes = {DefaultActivityBinder.class,
                     DefaultBroadcastReceiverBinder.class,
-                    DefaultServiceBinder.class,
-                    SystemUIBinder.class})
+                    DefaultServiceBinder.class})
 public abstract class DefaultComponentBinder {
 }
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
index 53a23b8..bf501ce 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/DependencyProvider.java
@@ -26,10 +26,13 @@
 import android.os.HandlerThread;
 import android.os.ServiceManager;
 import android.util.DisplayMetrics;
+import android.view.Choreographer;
 import android.view.IWindowManager;
 import android.view.LayoutInflater;
+import android.view.WindowManager;
 
 import com.android.internal.logging.MetricsLogger;
+import com.android.internal.util.NotificationMessagingUtil;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.keyguard.ViewMediatorCallback;
 import com.android.systemui.dagger.qualifiers.Background;
@@ -97,10 +100,10 @@
 
     @Singleton
     @Provides
-    // Single instance of DisplayMetrics, gets updated by StatusBar, but can be used
-    // anywhere it is needed.
-    public DisplayMetrics provideDisplayMetrics() {
-        return new DisplayMetrics();
+    public DisplayMetrics provideDisplayMetrics(Context context, WindowManager windowManager) {
+        DisplayMetrics displayMetrics = new DisplayMetrics();
+        context.getDisplay().getMetrics(displayMetrics);
+        return displayMetrics;
     }
 
     /** */
@@ -191,9 +194,22 @@
         return new AlwaysOnDisplayPolicy(context);
     }
 
+    /***/
+    @Provides
+    public NotificationMessagingUtil provideNotificationMessagingUtil(Context context) {
+        return new NotificationMessagingUtil(context);
+    }
+
     /** */
     @Provides
     public ViewMediatorCallback providesViewMediatorCallback(KeyguardViewMediator viewMediator) {
         return viewMediator.getViewMediatorCallback();
     }
+
+    /** */
+    @Singleton
+    @Provides
+    public Choreographer providesChoreographer() {
+        return Choreographer.getInstance();
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
index 5c171e4..a57ec5b 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIDefaultModule.java
@@ -56,7 +56,7 @@
  * overridden by the System UI implementation.
  */
 @Module(includes = {DividerModule.class})
-abstract class SystemUIDefaultModule {
+public abstract class SystemUIDefaultModule {
 
     @Singleton
     @Provides
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
index f793b3df9..91aeb22 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIModule.java
@@ -19,14 +19,13 @@
 import android.annotation.Nullable;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.content.res.Resources;
+import android.view.Choreographer;
 
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.BootCompleteCache;
 import com.android.systemui.BootCompleteCacheImpl;
 import com.android.systemui.DumpController;
 import com.android.systemui.assist.AssistModule;
-import com.android.systemui.dagger.qualifiers.Main;
 import com.android.systemui.log.dagger.LogModule;
 import com.android.systemui.model.SysUiState;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -34,16 +33,22 @@
 import com.android.systemui.stackdivider.Divider;
 import com.android.systemui.statusbar.BlurUtils;
 import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.StatusBarWindowBlurController;
+import com.android.systemui.statusbar.NotificationShadeWindowBlurController;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
+import com.android.systemui.statusbar.notification.dagger.NotificationsModule;
 import com.android.systemui.statusbar.notification.people.PeopleHubModule;
+import com.android.systemui.statusbar.notification.row.dagger.ExpandableNotificationRowComponent;
 import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent;
+import com.android.systemui.statusbar.phone.BiometricUnlockController;
 import com.android.systemui.statusbar.phone.KeyguardLiftController;
+import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
 import com.android.systemui.statusbar.phone.StatusBar;
 import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
+import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.util.concurrency.ConcurrencyModule;
 import com.android.systemui.util.sensors.AsyncSensorManager;
 import com.android.systemui.util.time.SystemClock;
@@ -64,9 +69,12 @@
             AssistModule.class,
             ConcurrencyModule.class,
             LogModule.class,
+            NotificationsModule.class,
             PeopleHubModule.class,
         },
-        subcomponents = {StatusBarComponent.class, NotificationRowComponent.class})
+        subcomponents = {StatusBarComponent.class,
+                NotificationRowComponent.class,
+                ExpandableNotificationRowComponent.class})
 public abstract class SystemUIModule {
 
     @Binds
@@ -95,11 +103,16 @@
     @Singleton
     @Provides
     @Nullable
-    static StatusBarWindowBlurController providesBlurController(BlurUtils blurUtils,
-            @Main Resources resources, SysuiStatusBarStateController statusBarStateController,
-            DumpController dumpController) {
-        return blurUtils.supportsBlursOnWindows() ? new StatusBarWindowBlurController(resources,
-                statusBarStateController, blurUtils, dumpController) : null;
+    static NotificationShadeWindowBlurController providesBlurController(BlurUtils blurUtils,
+            SysuiStatusBarStateController statusBarStateController,
+            DumpController dumpController, BiometricUnlockController biometricUnlockController,
+            KeyguardStateController keyguardStateController,
+            NotificationShadeWindowController notificationShadeWindowController,
+            Choreographer choreographer) {
+        return blurUtils.supportsBlursOnWindows() ? new NotificationShadeWindowBlurController(
+                statusBarStateController, blurUtils, biometricUnlockController,
+                keyguardStateController, notificationShadeWindowController, choreographer,
+                dumpController) : null;
     }
 
     /** */
diff --git a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
index e14581f..3bf5ad7 100644
--- a/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/dagger/SystemUIRootComponent.java
@@ -26,6 +26,7 @@
 import com.android.systemui.SystemUIAppComponentFactory;
 import com.android.systemui.SystemUIFactory;
 import com.android.systemui.fragments.FragmentService;
+import com.android.systemui.keyguard.KeyguardSliceProvider;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.util.InjectionInflationController;
 
@@ -44,6 +45,7 @@
         DependencyBinder.class,
         SystemServicesModule.class,
         SystemUIFactory.ContextHolder.class,
+        SystemUIBinder.class,
         SystemUIModule.class,
         SystemUIDefaultModule.class})
 public interface SystemUIRootComponent {
@@ -105,4 +107,9 @@
      * Member injection into the supplied argument.
      */
     void inject(ContentProvider contentProvider);
+
+    /**
+     * Member injection into the supplied argument.
+     */
+    void inject(KeyguardSliceProvider keyguardSliceProvider);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java b/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java
deleted file mode 100644
index d2fe394..0000000
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeEvent.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2019 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.doze;
-
-import android.annotation.IntDef;
-
-import com.android.systemui.log.RichEvent;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * An event related to dozing. {@link DozeLog} stores and prints these events for debugging
- * and triaging purposes.
- */
-public class DozeEvent extends RichEvent {
-    /**
-     * Initializes a doze event
-     */
-    public DozeEvent init(@EventType int type, String reason) {
-        super.init(DEBUG, type, reason);
-        return this;
-    }
-
-    /**
-     * Event labels for each doze event
-     * Index corresponds to the integer associated with each {@link EventType}
-     */
-    @Override
-    public String[] getEventLabels() {
-        final String[] events = new String[]{
-                "PickupWakeup",
-                "PulseStart",
-                "PulseFinish",
-                "NotificationPulse",
-                "Dozing",
-                "Fling",
-                "EmergencyCall",
-                "KeyguardBouncerChanged",
-                "ScreenOn",
-                "ScreenOff",
-                "MissedTick",
-                "TimeTickScheduled",
-                "KeyguardVisibilityChanged",
-                "DozeStateChanged",
-                "WakeDisplay",
-                "ProximityResult",
-                "PulseDropped",
-                "PulseDisabledByProx",
-                "SensorTriggered"
-        };
-
-        if (events.length != TOTAL_EVENT_TYPES) {
-            throw new IllegalStateException("DozeEvent events.length should match TOTAL_EVENT_TYPES"
-                    + " events.length=" + events.length
-                    + " TOTAL_EVENT_LENGTH=" + TOTAL_EVENT_TYPES);
-        }
-        return events;
-    }
-
-    /**
-     * Converts the reason (integer) to a user-readable string
-     */
-    public static String reasonToString(@Reason int pulseReason) {
-        switch (pulseReason) {
-            case PULSE_REASON_INTENT: return "intent";
-            case PULSE_REASON_NOTIFICATION: return "notification";
-            case PULSE_REASON_SENSOR_SIGMOTION: return "sigmotion";
-            case REASON_SENSOR_PICKUP: return "pickup";
-            case REASON_SENSOR_DOUBLE_TAP: return "doubletap";
-            case PULSE_REASON_SENSOR_LONG_PRESS: return "longpress";
-            case PULSE_REASON_DOCKING: return "docking";
-            case PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN: return "wakelockscreen";
-            case REASON_SENSOR_WAKE_UP: return "wakeup";
-            case REASON_SENSOR_TAP: return "tap";
-            default: throw new IllegalArgumentException("invalid reason: " + pulseReason);
-        }
-    }
-
-    @IntDef({PICKUP_WAKEUP, PULSE_START, PULSE_FINISH, NOTIFICATION_PULSE, DOZING, FLING,
-            EMERGENCY_CALL, KEYGUARD_BOUNCER_CHANGED, SCREEN_ON, SCREEN_OFF, MISSED_TICK,
-            TIME_TICK_SCHEDULED, KEYGUARD_VISIBILITY_CHANGE, DOZE_STATE_CHANGED, WAKE_DISPLAY,
-            PROXIMITY_RESULT, PULSE_DROPPED, PULSE_DISABLED_BY_PROX, SENSOR_TRIGGERED})
-    /**
-     * Types of DozeEvents
-     */
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface EventType {}
-    public static final int PICKUP_WAKEUP = 0;
-    public static final int PULSE_START = 1;
-    public static final int PULSE_FINISH = 2;
-    public static final int NOTIFICATION_PULSE = 3;
-    public static final int DOZING = 4;
-    public static final int FLING = 5;
-    public static final int EMERGENCY_CALL = 6;
-    public static final int KEYGUARD_BOUNCER_CHANGED = 7;
-    public static final int SCREEN_ON = 8;
-    public static final int SCREEN_OFF = 9;
-    public static final int MISSED_TICK = 10;
-    public static final int TIME_TICK_SCHEDULED = 11;
-    public static final int KEYGUARD_VISIBILITY_CHANGE = 12;
-    public static final int DOZE_STATE_CHANGED = 13;
-    public static final int WAKE_DISPLAY = 14;
-    public static final int PROXIMITY_RESULT = 15;
-    public static final int PULSE_DROPPED = 16;
-    public static final int PULSE_DISABLED_BY_PROX = 17;
-    public static final int SENSOR_TRIGGERED = 18;
-    public static final int TOTAL_EVENT_TYPES = 19;
-
-    public static final int TOTAL_REASONS = 10;
-    @IntDef({PULSE_REASON_NONE, PULSE_REASON_INTENT, PULSE_REASON_NOTIFICATION,
-            PULSE_REASON_SENSOR_SIGMOTION, REASON_SENSOR_PICKUP, REASON_SENSOR_DOUBLE_TAP,
-            PULSE_REASON_SENSOR_LONG_PRESS, PULSE_REASON_DOCKING, REASON_SENSOR_WAKE_UP,
-            PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN, REASON_SENSOR_TAP})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Reason {}
-    public static final int PULSE_REASON_NONE = -1;
-    public static final int PULSE_REASON_INTENT = 0;
-    public static final int PULSE_REASON_NOTIFICATION = 1;
-    public static final int PULSE_REASON_SENSOR_SIGMOTION = 2;
-    public static final int REASON_SENSOR_PICKUP = 3;
-    public static final int REASON_SENSOR_DOUBLE_TAP = 4;
-    public static final int PULSE_REASON_SENSOR_LONG_PRESS = 5;
-    public static final int PULSE_REASON_DOCKING = 6;
-    public static final int REASON_SENSOR_WAKE_UP = 7;
-    public static final int PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN = 8;
-    public static final int REASON_SENSOR_TAP = 9;
-}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
index 43db85b..6f655bb 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeFactory.java
@@ -118,6 +118,7 @@
                 new DozeWallpaperState(mWallpaperManager, mBiometricUnlockController,
                         mDozeParameters),
                 new DozeDockHandler(config, machine, mDockManager),
+                new DozeSuppressedHandler(dozeService, config, machine),
                 new DozeAuthRemover(dozeService)
         });
 
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
index fe50421..96ae6c9 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLog.java
@@ -16,15 +16,20 @@
 
 package com.android.systemui.doze;
 
+import android.annotation.IntDef;
 import android.util.TimeUtils;
 
+import androidx.annotation.NonNull;
+
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.keyguard.KeyguardUpdateMonitorCallback;
 import com.android.systemui.DumpController;
-import com.android.systemui.log.SysuiLog;
+import com.android.systemui.Dumpable;
 
+import java.io.FileDescriptor;
 import java.io.PrintWriter;
-import java.util.Date;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 import javax.inject.Inject;
 import javax.inject.Singleton;
@@ -32,13 +37,11 @@
 /**
  * Logs doze events for debugging and triaging purposes. Logs are dumped in bugreports or on demand:
  *      adb shell dumpsys activity service com.android.systemui/.SystemUIService \
- *      dependency DumpController DozeLog
+ *      dependency DumpController DozeLog,DozeStats
  */
 @Singleton
-public class DozeLog extends SysuiLog<DozeEvent> {
-    private static final String TAG = "DozeLog";
-
-    private DozeEvent mRecycledEvent;
+public class DozeLog implements Dumpable {
+    private final DozeLogger mLogger;
 
     private boolean mPulsing;
     private long mSince;
@@ -51,8 +54,11 @@
     private SummaryStats[][] mProxStats; // [reason][near/far]
 
     @Inject
-    public DozeLog(KeyguardUpdateMonitor keyguardUpdateMonitor, DumpController dumpController) {
-        super(dumpController, TAG, MAX_DOZE_DEBUG_LOGS, MAX_DOZE_LOGS);
+    public DozeLog(
+            KeyguardUpdateMonitor keyguardUpdateMonitor,
+            DumpController dumpController,
+            DozeLogger logger) {
+        mLogger = logger;
         mSince = System.currentTimeMillis();
         mPickupPulseNearVibrationStats = new SummaryStats();
         mPickupPulseNotNearVibrationStats = new SummaryStats();
@@ -60,8 +66,8 @@
         mScreenOnPulsingStats = new SummaryStats();
         mScreenOnNotPulsingStats = new SummaryStats();
         mEmergencyCallStats = new SummaryStats();
-        mProxStats = new SummaryStats[DozeEvent.TOTAL_REASONS][2];
-        for (int i = 0; i < DozeEvent.TOTAL_REASONS; i++) {
+        mProxStats = new SummaryStats[TOTAL_REASONS][2];
+        for (int i = 0; i < TOTAL_REASONS; i++) {
             mProxStats[i][0] = new SummaryStats();
             mProxStats[i][1] = new SummaryStats();
         }
@@ -69,42 +75,42 @@
         if (keyguardUpdateMonitor != null) {
             keyguardUpdateMonitor.registerCallback(mKeyguardCallback);
         }
+
+        dumpController.registerDumpable("DumpStats", this);
     }
 
     /**
      * Appends pickup wakeup event to the logs
      */
     public void tracePickupWakeUp(boolean withinVibrationThreshold) {
-        log(DozeEvent.PICKUP_WAKEUP, "withinVibrationThreshold=" + withinVibrationThreshold);
-        if (mEnabled) {
-            (withinVibrationThreshold ? mPickupPulseNearVibrationStats
-                    : mPickupPulseNotNearVibrationStats).append();
-        }
+        mLogger.logPickupWakeup(withinVibrationThreshold);
+        (withinVibrationThreshold ? mPickupPulseNearVibrationStats
+                : mPickupPulseNotNearVibrationStats).append();
     }
 
     /**
      * Appends pulse started event to the logs.
      * @param reason why the pulse started
      */
-    public void tracePulseStart(@DozeEvent.Reason int reason) {
-        log(DozeEvent.PULSE_START, DozeEvent.reasonToString(reason));
-        if (mEnabled) mPulsing = true;
+    public void tracePulseStart(@Reason int reason) {
+        mLogger.logPulseStart(reason);
+        mPulsing = true;
     }
 
     /**
      * Appends pulse finished event to the logs
      */
     public void tracePulseFinish() {
-        log(DozeEvent.PULSE_FINISH);
-        if (mEnabled) mPulsing = false;
+        mLogger.logPulseFinish();
+        mPulsing = false;
     }
 
     /**
      * Appends pulse event to the logs
      */
     public void traceNotificationPulse() {
-        log(DozeEvent.NOTIFICATION_PULSE);
-        if (mEnabled) mNotificationPulseStats.append();
+        mLogger.logNotificationPulse();
+        mNotificationPulseStats.append();
     }
 
     /**
@@ -112,8 +118,8 @@
      * @param dozing true if dozing, else false
      */
     public void traceDozing(boolean dozing) {
-        log(DozeEvent.DOZING, "dozing=" + dozing);
-        if (mEnabled) mPulsing = false;
+        mLogger.logDozing(dozing);
+        mPulsing = false;
     }
 
     /**
@@ -121,18 +127,15 @@
      */
     public void traceFling(boolean expand, boolean aboveThreshold, boolean thresholdNeeded,
             boolean screenOnFromTouch) {
-        log(DozeEvent.FLING, "expand=" + expand
-                + " aboveThreshold=" + aboveThreshold
-                + " thresholdNeeded=" + thresholdNeeded
-                + " screenOnFromTouch=" + screenOnFromTouch);
+        mLogger.logFling(expand, aboveThreshold, thresholdNeeded, screenOnFromTouch);
     }
 
     /**
      * Appends emergency call event to the logs
      */
     public void traceEmergencyCall() {
-        log(DozeEvent.EMERGENCY_CALL);
-        if (mEnabled) mEmergencyCallStats.append();
+        mLogger.logEmergencyCall();
+        mEmergencyCallStats.append();
     }
 
     /**
@@ -140,18 +143,16 @@
      * @param showing true if the keyguard bouncer is showing, else false
      */
     public void traceKeyguardBouncerChanged(boolean showing) {
-        log(DozeEvent.KEYGUARD_BOUNCER_CHANGED, "showing=" + showing);
+        mLogger.logKeyguardBouncerChanged(showing);
     }
 
     /**
      * Appends screen-on event to the logs
      */
     public void traceScreenOn() {
-        log(DozeEvent.SCREEN_ON, "pulsing=" + mPulsing);
-        if (mEnabled) {
-            (mPulsing ? mScreenOnPulsingStats : mScreenOnNotPulsingStats).append();
-            mPulsing = false;
-        }
+        mLogger.logScreenOn(mPulsing);
+        (mPulsing ? mScreenOnPulsingStats : mScreenOnNotPulsingStats).append();
+        mPulsing = false;
     }
 
     /**
@@ -159,7 +160,7 @@
      * @param why reason the screen is off
      */
     public void traceScreenOff(int why) {
-        log(DozeEvent.SCREEN_OFF, "why=" + why);
+        mLogger.logScreenOff(why);
     }
 
     /**
@@ -167,7 +168,7 @@
      * @param delay of the missed tick
      */
     public void traceMissedTick(String delay) {
-        log(DozeEvent.MISSED_TICK, "delay=" + delay);
+        mLogger.logMissedTick(delay);
     }
 
     /**
@@ -176,9 +177,7 @@
      * @param triggerAt time tick trigger at
      */
     public void traceTimeTickScheduled(long when, long triggerAt) {
-        log(DozeEvent.TIME_TICK_SCHEDULED,
-                "scheduledAt=" + DATE_FORMAT.format(new Date(when))
-                + " triggerAt=" + DATE_FORMAT.format(new Date(triggerAt)));
+        mLogger.logTimeTickScheduled(when, triggerAt);
     }
 
     /**
@@ -186,8 +185,8 @@
      * @param showing whether the keyguard is now showing
      */
     public void traceKeyguard(boolean showing) {
-        log(DozeEvent.KEYGUARD_VISIBILITY_CHANGE, "showing=" + showing);
-        if (mEnabled && !showing) mPulsing = false;
+        mLogger.logKeyguardVisibilityChange(showing);
+        if (!showing) mPulsing = false;
     }
 
     /**
@@ -195,7 +194,7 @@
      * @param state new DozeMachine state
      */
     public void traceState(DozeMachine.State state) {
-        log(DozeEvent.DOZE_STATE_CHANGED, state.name());
+        mLogger.logDozeStateChanged(state);
     }
 
     /**
@@ -203,31 +202,22 @@
      * @param wake if we're waking up or sleeping.
      */
     public void traceWakeDisplay(boolean wake) {
-        log(DozeEvent.WAKE_DISPLAY, "wake=" + wake);
+        mLogger.logWakeDisplay(wake);
     }
 
     /**
      * Appends proximity result event to the logs
      * @param near true if near, else false
-     * @param millis
      * @param reason why proximity result was triggered
      */
-    public void traceProximityResult(boolean near, long millis, @DozeEvent.Reason int reason) {
-        log(DozeEvent.PROXIMITY_RESULT,
-                " reason=" + DozeEvent.reasonToString(reason)
-                        + " near=" + near
-                        + " millis=" + millis);
-        if (mEnabled) mProxStats[reason][near ? 0 : 1].append();
+    public void traceProximityResult(boolean near, long millis, @Reason int reason) {
+        mLogger.logProximityResult(near, millis, reason);
+        mProxStats[reason][near ? 0 : 1].append();
     }
 
-    /**
-     * Prints doze log timeline and consolidated stats
-     * @param pw
-     */
-    public void dump(PrintWriter pw) {
+    @Override
+    public void dump(@NonNull FileDescriptor fd, @NonNull PrintWriter pw, @NonNull String[] args) {
         synchronized (DozeLog.class) {
-            super.dump(null, pw, null); // prints timeline
-
             pw.print("  Doze summary stats (for ");
             TimeUtils.formatDuration(System.currentTimeMillis() - mSince, pw);
             pw.println("):");
@@ -237,32 +227,19 @@
             mScreenOnPulsingStats.dump(pw, "Screen on (pulsing)");
             mScreenOnNotPulsingStats.dump(pw, "Screen on (not pulsing)");
             mEmergencyCallStats.dump(pw, "Emergency call");
-            for (int i = 0; i < DozeEvent.TOTAL_REASONS; i++) {
-                final String reason = DozeEvent.reasonToString(i);
+            for (int i = 0; i < TOTAL_REASONS; i++) {
+                final String reason = reasonToString(i);
                 mProxStats[i][0].dump(pw, "Proximity near (" + reason + ")");
                 mProxStats[i][1].dump(pw, "Proximity far (" + reason + ")");
             }
         }
     }
 
-    private void log(@DozeEvent.EventType int eventType) {
-        log(eventType, "");
-    }
-
-    private void log(@DozeEvent.EventType int eventType, String msg) {
-        if (mRecycledEvent != null) {
-            mRecycledEvent = log(mRecycledEvent.init(eventType, msg));
-        } else {
-            mRecycledEvent = log(new DozeEvent().init(eventType, msg));
-        }
-    }
-
     /**
      * Appends pulse dropped event to logs
      */
     public void tracePulseDropped(boolean pulsePending, DozeMachine.State state, boolean blocked) {
-        log(DozeEvent.PULSE_DROPPED, "pulsePending=" + pulsePending + " state="
-                + state.name() + " blocked=" + blocked);
+        mLogger.logPulseDropped(pulsePending, state, blocked);
     }
 
     /**
@@ -270,7 +247,7 @@
      * @param reason why the pulse was dropped
      */
     public void tracePulseDropped(String reason) {
-        log(DozeEvent.PULSE_DROPPED, "why=" + reason);
+        mLogger.logPulseDropped(reason);
     }
 
     /**
@@ -278,15 +255,23 @@
      * @param disabled
      */
     public void tracePulseTouchDisabledByProx(boolean disabled) {
-        log(DozeEvent.PULSE_DISABLED_BY_PROX, "disabled=" + disabled);
+        mLogger.logPulseTouchDisabledByProx(disabled);
     }
 
     /**
      * Appends sensor triggered event to logs
      * @param reason why the sensor was triggered
      */
-    public void traceSensor(@DozeEvent.Reason int reason) {
-        log(DozeEvent.SENSOR_TRIGGERED, "type=" + DozeEvent.reasonToString(reason));
+    public void traceSensor(@Reason int reason) {
+        mLogger.logSensorTriggered(reason);
+    }
+
+    /**
+     * Appends doze suppressed event to the logs
+     * @param suppressedState The {@link DozeMachine.State} that was suppressed
+     */
+    public void traceDozeSuppressed(DozeMachine.State suppressedState) {
+        mLogger.logDozeSuppressed(suppressedState);
     }
 
     private class SummaryStats {
@@ -339,6 +324,42 @@
         }
     };
 
-    private static final int MAX_DOZE_DEBUG_LOGS = 400;
-    private static final int MAX_DOZE_LOGS = 50;
+    /**
+     * Converts the reason (integer) to a user-readable string
+     */
+    public static String reasonToString(@Reason int pulseReason) {
+        switch (pulseReason) {
+            case PULSE_REASON_INTENT: return "intent";
+            case PULSE_REASON_NOTIFICATION: return "notification";
+            case PULSE_REASON_SENSOR_SIGMOTION: return "sigmotion";
+            case REASON_SENSOR_PICKUP: return "pickup";
+            case REASON_SENSOR_DOUBLE_TAP: return "doubletap";
+            case PULSE_REASON_SENSOR_LONG_PRESS: return "longpress";
+            case PULSE_REASON_DOCKING: return "docking";
+            case PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN: return "wakelockscreen";
+            case REASON_SENSOR_WAKE_UP: return "wakeup";
+            case REASON_SENSOR_TAP: return "tap";
+            default: throw new IllegalArgumentException("invalid reason: " + pulseReason);
+        }
+    }
+
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef({PULSE_REASON_NONE, PULSE_REASON_INTENT, PULSE_REASON_NOTIFICATION,
+            PULSE_REASON_SENSOR_SIGMOTION, REASON_SENSOR_PICKUP, REASON_SENSOR_DOUBLE_TAP,
+            PULSE_REASON_SENSOR_LONG_PRESS, PULSE_REASON_DOCKING, REASON_SENSOR_WAKE_UP,
+            PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN, REASON_SENSOR_TAP})
+    public @interface Reason {}
+    public static final int PULSE_REASON_NONE = -1;
+    public static final int PULSE_REASON_INTENT = 0;
+    public static final int PULSE_REASON_NOTIFICATION = 1;
+    public static final int PULSE_REASON_SENSOR_SIGMOTION = 2;
+    public static final int REASON_SENSOR_PICKUP = 3;
+    public static final int REASON_SENSOR_DOUBLE_TAP = 4;
+    public static final int PULSE_REASON_SENSOR_LONG_PRESS = 5;
+    public static final int PULSE_REASON_DOCKING = 6;
+    public static final int REASON_SENSOR_WAKE_UP = 7;
+    public static final int PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN = 8;
+    public static final int REASON_SENSOR_TAP = 9;
+
+    public static final int TOTAL_REASONS = 10;
 }
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt b/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt
new file mode 100644
index 0000000..732745a
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeLogger.kt
@@ -0,0 +1,209 @@
+/*
+ * 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.systemui.doze
+
+import com.android.systemui.doze.DozeLog.Reason
+import com.android.systemui.doze.DozeLog.reasonToString
+import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.LogLevel.DEBUG
+import com.android.systemui.log.LogLevel.ERROR
+import com.android.systemui.log.LogLevel.INFO
+import com.android.systemui.log.dagger.DozeLog
+import java.text.SimpleDateFormat
+import java.util.Date
+import java.util.Locale
+import javax.inject.Inject
+
+/** Interface for logging messages to the [DozeLog]. */
+class DozeLogger @Inject constructor(
+    @DozeLog private val buffer: LogBuffer
+) {
+    fun logPickupWakeup(isWithinVibrationThreshold: Boolean) {
+        buffer.log(TAG, DEBUG, {
+            bool1 = isWithinVibrationThreshold
+        }, {
+            "PickupWakeup withinVibrationThreshold=$bool1"
+        })
+    }
+
+    fun logPulseStart(@Reason reason: Int) {
+        buffer.log(TAG, INFO, {
+            int1 = reason
+        }, {
+            "Pulse start, reason=${reasonToString(int1)}"
+        })
+    }
+
+    fun logPulseFinish() {
+        buffer.log(TAG, INFO, {}, { "Pulse finish" })
+    }
+
+    fun logNotificationPulse() {
+        buffer.log(TAG, INFO, {}, { "Notification pulse" })
+    }
+
+    fun logDozing(isDozing: Boolean) {
+        buffer.log(TAG, INFO, {
+            bool1 = isDozing
+        }, {
+            "Dozing=$bool1"
+        })
+    }
+
+    fun logFling(
+        expand: Boolean,
+        aboveThreshold: Boolean,
+        thresholdNeeded: Boolean,
+        screenOnFromTouch: Boolean
+    ) {
+        buffer.log(TAG, DEBUG, {
+            bool1 = expand
+            bool2 = aboveThreshold
+            bool3 = thresholdNeeded
+            bool4 = screenOnFromTouch
+        }, {
+            "Fling expand=$bool1 aboveThreshold=$bool2 thresholdNeeded=$bool3 " +
+                    "screenOnFromTouch=$bool4"
+        })
+    }
+
+    fun logEmergencyCall() {
+        buffer.log(TAG, INFO, {}, { "Emergency call" })
+    }
+
+    fun logKeyguardBouncerChanged(isShowing: Boolean) {
+        buffer.log(TAG, INFO, {
+            bool1 = isShowing
+        }, {
+            "Keyguard bouncer changed, showing=$bool1"
+        })
+    }
+
+    fun logScreenOn(isPulsing: Boolean) {
+        buffer.log(TAG, INFO, {
+            bool1 = isPulsing
+        }, {
+            "Screen on, pulsing=$bool1"
+        })
+    }
+
+    fun logScreenOff(why: Int) {
+        buffer.log(TAG, INFO, {
+            int1 = why
+        }, {
+            "Screen off, why=$int1"
+        })
+    }
+
+    fun logMissedTick(delay: String) {
+        buffer.log(TAG, ERROR, {
+            str1 = delay
+        }, {
+            "Missed AOD time tick by $str1"
+        })
+    }
+
+    fun logTimeTickScheduled(whenAt: Long, triggerAt: Long) {
+        buffer.log(TAG, DEBUG, {
+            long1 = whenAt
+            long2 = triggerAt
+        }, {
+            "Time tick scheduledAt=${DATE_FORMAT.format(Date(long1))} " +
+                    "triggerAt=${DATE_FORMAT.format(Date(long2))}"
+        })
+    }
+
+    fun logKeyguardVisibilityChange(isShowing: Boolean) {
+        buffer.log(TAG, INFO, {
+            bool1 = isShowing
+        }, {
+            "Keyguard visibility change, isShowing=$bool1"
+        })
+    }
+
+    fun logDozeStateChanged(state: DozeMachine.State) {
+        buffer.log(TAG, INFO, {
+            str1 = state.name
+        }, {
+            "Doze state changed to $str1"
+        })
+    }
+
+    fun logWakeDisplay(isAwake: Boolean) {
+        buffer.log(TAG, DEBUG, {
+            bool1 = isAwake
+        }, {
+            "Display wakefulness changed, isAwake=$bool1"
+        })
+    }
+
+    fun logProximityResult(isNear: Boolean, millis: Long, @Reason reason: Int) {
+        buffer.log(TAG, DEBUG, {
+            bool1 = isNear
+            long1 = millis
+            int1 = reason
+        }, {
+            "Proximity result reason=${reasonToString(int1)} near=$bool1 millis=$long1"
+        })
+    }
+
+    fun logPulseDropped(pulsePending: Boolean, state: DozeMachine.State, blocked: Boolean) {
+        buffer.log(TAG, INFO, {
+            bool1 = pulsePending
+            str1 = state.name
+            bool2 = blocked
+        }, {
+            "Pulse dropped, pulsePending=$bool1 state=$str1 blocked=$bool2"
+        })
+    }
+
+    fun logPulseDropped(reason: String) {
+        buffer.log(TAG, INFO, {
+            str1 = reason
+        }, {
+            "Pulse dropped, why=$str1"
+        })
+    }
+
+    fun logPulseTouchDisabledByProx(disabled: Boolean) {
+        buffer.log(TAG, DEBUG, {
+            bool1 = disabled
+        }, {
+            "Pulse touch modified by prox, disabled=$bool1"
+        })
+    }
+
+    fun logSensorTriggered(@Reason reason: Int) {
+        buffer.log(TAG, DEBUG, {
+            int1 = reason
+        }, {
+            "Sensor triggered, type=${reasonToString(int1)}"
+        })
+    }
+
+    fun logDozeSuppressed(state: DozeMachine.State) {
+        buffer.log(TAG, INFO, {
+            str1 = state.name
+        }, {
+            "Doze state suppressed, state=$str1"
+        })
+    }
+}
+
+private const val TAG = "DozeLog"
+
+val DATE_FORMAT = SimpleDateFormat("MM-dd HH:mm:ss.S", Locale.US)
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
index 40603ab..6e81d3a 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeMachine.java
@@ -102,6 +102,10 @@
             }
         }
 
+        boolean isAlwaysOn() {
+            return this == DOZE_AOD || this == DOZE_AOD_DOCKED;
+        }
+
         int screenState(DozeParameters parameters) {
             switch (this) {
                 case UNINITIALIZED:
@@ -169,7 +173,7 @@
     @MainThread
     public void requestState(State requestedState) {
         Preconditions.checkArgument(requestedState != State.DOZE_REQUEST_PULSE);
-        requestState(requestedState, DozeEvent.PULSE_REASON_NONE);
+        requestState(requestedState, DozeLog.PULSE_REASON_NONE);
     }
 
     @MainThread
@@ -271,7 +275,7 @@
         if (newState == State.DOZE_REQUEST_PULSE) {
             mPulseReason = pulseReason;
         } else if (oldState == State.DOZE_PULSE_DONE) {
-            mPulseReason = DozeEvent.PULSE_REASON_NONE;
+            mPulseReason = DozeLog.PULSE_REASON_NONE;
         }
     }
 
@@ -324,6 +328,11 @@
         if (mState == State.FINISH) {
             return State.FINISH;
         }
+        if (mConfig.dozeSuppressed(UserHandle.USER_CURRENT) && requestedState.isAlwaysOn()) {
+            Log.i(TAG, "Doze is suppressed. Suppressing state: " + requestedState);
+            mDozeLog.traceDozeSuppressed(requestedState);
+            return State.DOZE;
+        }
         if ((mState == State.DOZE_AOD_PAUSED || mState == State.DOZE_AOD_PAUSING
                 || mState == State.DOZE_AOD || mState == State.DOZE)
                 && requestedState == State.DOZE_PULSE_DONE) {
@@ -368,7 +377,7 @@
                     nextState = State.DOZE;
                 }
 
-                transitionTo(nextState, DozeEvent.PULSE_REASON_NONE);
+                transitionTo(nextState, DozeLog.PULSE_REASON_NONE);
                 break;
             default:
                 break;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
index 4e88726..c45063a 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenBrightness.java
@@ -167,6 +167,10 @@
                 // again, it will only show after the brightness sensor has stabilized,
                 // avoiding a potential flicker.
                 scrimOpacity = 255;
+            } else if (!mScreenOff && mLightSensor == null) {
+                // No light sensor but previous state turned the screen black. Make the scrim
+                // transparent and below views visible.
+                scrimOpacity = 0;
             } else if (brightnessReady) {
                 // Only unblank scrim once brightness is ready.
                 scrimOpacity = computeScrimOpacity(sensorValue);
@@ -199,7 +203,7 @@
         mDozeService.setDozeScreenBrightness(clampToUserSetting(mDefaultDozeBrightness));
         mDozeHost.setAodDimmingScrim(0f);
     }
-
+    //TODO: brightnessfloat change usages to float.
     private int clampToUserSetting(int brightness) {
         int userSetting = Settings.System.getIntForUser(mContext.getContentResolver(),
                 Settings.System.SCREEN_BRIGHTNESS, Integer.MAX_VALUE,
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java
index 3abeea9..e50f1fb 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeScreenState.java
@@ -18,7 +18,6 @@
 
 import static com.android.systemui.doze.DozeMachine.State.DOZE;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD;
-import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_DOCKED;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSED;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_AOD_PAUSING;
 import static com.android.systemui.doze.DozeMachine.State.DOZE_PULSE_DONE;
@@ -90,10 +89,10 @@
         }
 
         final boolean messagePending = mHandler.hasCallbacks(mApplyPendingScreenState);
-        final boolean pulseEnding = oldState == DOZE_PULSE_DONE && isAlwaysOnState(newState);
+        final boolean pulseEnding = oldState == DOZE_PULSE_DONE && newState.isAlwaysOn();
         final boolean turningOn = (oldState == DOZE_AOD_PAUSED || oldState == DOZE)
-                && isAlwaysOnState(newState);
-        final boolean turningOff = (isAlwaysOnState(oldState) && newState == DOZE)
+                && newState.isAlwaysOn();
+        final boolean turningOff = (newState.isAlwaysOn() && newState == DOZE)
                 || (oldState == DOZE_AOD_PAUSING && newState == DOZE_AOD_PAUSED);
         final boolean justInitialized = oldState == DozeMachine.State.INITIALIZED;
         if (messagePending || justInitialized || pulseEnding || turningOn) {
@@ -132,10 +131,6 @@
         }
     }
 
-    private boolean isAlwaysOnState(DozeMachine.State state) {
-        return state == DOZE_AOD || state == DOZE_AOD_DOCKED;
-    }
-
     private void applyPendingScreenState() {
         applyScreenState(mPendingScreenState);
         mPendingScreenState = Display.STATE_UNKNOWN;
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
index d008e66..44e5d3d 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSensors.java
@@ -97,14 +97,14 @@
                         mSensorManager.getDefaultSensor(Sensor.TYPE_SIGNIFICANT_MOTION),
                         null /* setting */,
                         dozeParameters.getPulseOnSigMotion(),
-                        DozeEvent.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */,
+                        DozeLog.PULSE_REASON_SENSOR_SIGMOTION, false /* touchCoords */,
                         false /* touchscreen */, dozeLog),
                 mPickupSensor = new TriggerSensor(
                         mSensorManager.getDefaultSensor(Sensor.TYPE_PICK_UP_GESTURE),
                         Settings.Secure.DOZE_PICK_UP_GESTURE,
                         true /* settingDef */,
                         config.dozePickupSensorAvailable(),
-                        DozeEvent.REASON_SENSOR_PICKUP, false /* touchCoords */,
+                        DozeLog.REASON_SENSOR_PICKUP, false /* touchCoords */,
                         false /* touchscreen */,
                         false /* ignoresSetting */,
                         dozeLog),
@@ -112,7 +112,7 @@
                         findSensorWithType(config.doubleTapSensorType()),
                         Settings.Secure.DOZE_DOUBLE_TAP_GESTURE,
                         true /* configured */,
-                        DozeEvent.REASON_SENSOR_DOUBLE_TAP,
+                        DozeLog.REASON_SENSOR_DOUBLE_TAP,
                         dozeParameters.doubleTapReportsTouchCoordinates(),
                         true /* touchscreen */,
                         dozeLog),
@@ -120,7 +120,7 @@
                         findSensorWithType(config.tapSensorType()),
                         Settings.Secure.DOZE_TAP_SCREEN_GESTURE,
                         true /* configured */,
-                        DozeEvent.REASON_SENSOR_TAP,
+                        DozeLog.REASON_SENSOR_TAP,
                         false /* reports touch coordinates */,
                         true /* touchscreen */,
                         dozeLog),
@@ -129,7 +129,7 @@
                         Settings.Secure.DOZE_PULSE_ON_LONG_PRESS,
                         false /* settingDef */,
                         true /* configured */,
-                        DozeEvent.PULSE_REASON_SENSOR_LONG_PRESS,
+                        DozeLog.PULSE_REASON_SENSOR_LONG_PRESS,
                         true /* reports touch coordinates */,
                         true /* touchscreen */,
                         dozeLog),
@@ -137,7 +137,7 @@
                         new SensorManagerPlugin.Sensor(TYPE_WAKE_DISPLAY),
                         Settings.Secure.DOZE_WAKE_DISPLAY_GESTURE,
                         mConfig.wakeScreenGestureAvailable() && alwaysOn,
-                        DozeEvent.REASON_SENSOR_WAKE_UP,
+                        DozeLog.REASON_SENSOR_WAKE_UP,
                         false /* reports touch coordinates */,
                         false /* touchscreen */,
                         dozeLog),
@@ -145,7 +145,7 @@
                         new SensorManagerPlugin.Sensor(TYPE_WAKE_LOCK_SCREEN),
                         Settings.Secure.DOZE_WAKE_LOCK_SCREEN_GESTURE,
                         mConfig.wakeScreenGestureAvailable(),
-                        DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN,
+                        DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN,
                         false /* reports touch coordinates */,
                         false /* touchscreen */,
                         mConfig.getWakeLockScreenDebounce(),
@@ -525,7 +525,7 @@
 
         /**
          * Called when a sensor requests a pulse
-         * @param pulseReason Requesting sensor, e.g. {@link DozeEvent#REASON_SENSOR_PICKUP}
+         * @param pulseReason Requesting sensor, e.g. {@link DozeLog#REASON_SENSOR_PICKUP}
          * @param screenX the location on the screen where the sensor fired or -1
          *                if the sensor doesn't support reporting screen locations.
          * @param screenY the location on the screen where the sensor fired or -1
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeSuppressedHandler.java b/packages/SystemUI/src/com/android/systemui/doze/DozeSuppressedHandler.java
new file mode 100644
index 0000000..3a5c1a0
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeSuppressedHandler.java
@@ -0,0 +1,124 @@
+/*
+ * 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.systemui.doze;
+
+import static java.util.Objects.requireNonNull;
+
+import android.app.ActivityManager;
+import android.content.ContentResolver;
+import android.content.Context;
+import android.database.ContentObserver;
+import android.hardware.display.AmbientDisplayConfiguration;
+import android.net.Uri;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.provider.Settings;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+/** Handles updating the doze state when doze is suppressed. */
+public final class DozeSuppressedHandler implements DozeMachine.Part {
+
+    private static final String TAG = DozeSuppressedHandler.class.getSimpleName();
+    private static final boolean DEBUG = DozeService.DEBUG;
+
+    private final ContentResolver mResolver;
+    private final AmbientDisplayConfiguration mConfig;
+    private final DozeMachine mMachine;
+    private final DozeSuppressedSettingObserver mSettingObserver;
+    private final Handler mHandler = new Handler();
+
+    public DozeSuppressedHandler(Context context, AmbientDisplayConfiguration config,
+            DozeMachine machine) {
+        this(context, config, machine, null);
+    }
+
+    @VisibleForTesting
+    DozeSuppressedHandler(Context context, AmbientDisplayConfiguration config, DozeMachine machine,
+            DozeSuppressedSettingObserver observer) {
+        mResolver = context.getContentResolver();
+        mConfig = requireNonNull(config);
+        mMachine = requireNonNull(machine);
+        if (observer == null) {
+            mSettingObserver = new DozeSuppressedSettingObserver(mHandler);
+        } else {
+            mSettingObserver = observer;
+        }
+    }
+
+    @Override
+    public void transitionTo(DozeMachine.State oldState, DozeMachine.State newState) {
+        switch (newState) {
+            case INITIALIZED:
+                mSettingObserver.register();
+                break;
+            case FINISH:
+                mSettingObserver.unregister();
+                break;
+            default:
+                // no-op
+        }
+    }
+
+    /**
+     * Listens to changes to the DOZE_SUPPRESSED secure setting and updates the doze state
+     * accordingly.
+     */
+    final class DozeSuppressedSettingObserver extends ContentObserver {
+        private boolean mRegistered;
+
+        private DozeSuppressedSettingObserver(Handler handler) {
+            super(handler);
+        }
+
+        @Override
+        public void onChange(boolean selfChange, Uri uri, int userId) {
+            if (userId != ActivityManager.getCurrentUser()) {
+                return;
+            }
+            final DozeMachine.State nextState;
+            if (mConfig.alwaysOnEnabled(UserHandle.USER_CURRENT)
+                    && !mConfig.dozeSuppressed(UserHandle.USER_CURRENT)) {
+                nextState = DozeMachine.State.DOZE_AOD;
+            } else {
+                nextState = DozeMachine.State.DOZE;
+            }
+            mMachine.requestState(nextState);
+        }
+
+        void register() {
+            if (mRegistered) {
+                return;
+            }
+            mResolver.registerContentObserver(
+                    Settings.Secure.getUriFor(Settings.Secure.SUPPRESS_DOZE),
+                    false, this, UserHandle.USER_CURRENT);
+            Log.d(TAG, "Register");
+            mRegistered = true;
+        }
+
+        void unregister() {
+            if (!mRegistered) {
+                return;
+            }
+            mResolver.unregisterContentObserver(this);
+            Log.d(TAG, "Unregister");
+            mRegistered = false;
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
index 722dc03..305a4c8 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeTriggers.java
@@ -127,7 +127,12 @@
             mDozeLog.tracePulseDropped("pulseOnNotificationsDisabled");
             return;
         }
-        requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION, false /* performedProxCheck */,
+        if (mConfig.dozeSuppressed(UserHandle.USER_CURRENT)) {
+            runIfNotNull(onPulseSuppressedListener);
+            mDozeLog.tracePulseDropped("dozeSuppressed");
+            return;
+        }
+        requestPulse(DozeLog.PULSE_REASON_NOTIFICATION, false /* performedProxCheck */,
                 onPulseSuppressedListener);
         mDozeLog.traceNotificationPulse();
     }
@@ -163,12 +168,12 @@
 
     @VisibleForTesting
     void onSensor(int pulseReason, float screenX, float screenY, float[] rawValues) {
-        boolean isDoubleTap = pulseReason == DozeEvent.REASON_SENSOR_DOUBLE_TAP;
-        boolean isTap = pulseReason == DozeEvent.REASON_SENSOR_TAP;
-        boolean isPickup = pulseReason == DozeEvent.REASON_SENSOR_PICKUP;
-        boolean isLongPress = pulseReason == DozeEvent.PULSE_REASON_SENSOR_LONG_PRESS;
-        boolean isWakeDisplay = pulseReason == DozeEvent.REASON_SENSOR_WAKE_UP;
-        boolean isWakeLockScreen = pulseReason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN;
+        boolean isDoubleTap = pulseReason == DozeLog.REASON_SENSOR_DOUBLE_TAP;
+        boolean isTap = pulseReason == DozeLog.REASON_SENSOR_TAP;
+        boolean isPickup = pulseReason == DozeLog.REASON_SENSOR_PICKUP;
+        boolean isLongPress = pulseReason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS;
+        boolean isWakeDisplay = pulseReason == DozeLog.REASON_SENSOR_WAKE_UP;
+        boolean isWakeLockScreen = pulseReason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN;
         boolean wakeEvent = rawValues != null && rawValues.length > 0 && rawValues[0] != 0;
 
         if (isWakeDisplay) {
@@ -281,9 +286,9 @@
                     // Logs AOD open due to sensor wake up.
                     mMetricsLogger.write(new LogMaker(MetricsEvent.DOZING)
                             .setType(MetricsEvent.TYPE_OPEN)
-                            .setSubtype(DozeEvent.REASON_SENSOR_WAKE_UP));
+                            .setSubtype(DozeLog.REASON_SENSOR_WAKE_UP));
                 }
-            }, true /* alreadyPerformedProxCheck */, DozeEvent.REASON_SENSOR_WAKE_UP);
+            }, true /* alreadyPerformedProxCheck */, DozeLog.REASON_SENSOR_WAKE_UP);
         } else {
             boolean paused = (state == DozeMachine.State.DOZE_AOD_PAUSED);
             boolean pausing = (state == DozeMachine.State.DOZE_AOD_PAUSING);
@@ -292,7 +297,7 @@
                 // Logs AOD close due to sensor wake up.
                 mMetricsLogger.write(new LogMaker(MetricsEvent.DOZING)
                         .setType(MetricsEvent.TYPE_CLOSE)
-                        .setSubtype(DozeEvent.REASON_SENSOR_WAKE_UP));
+                        .setSubtype(DozeLog.REASON_SENSOR_WAKE_UP));
             }
         }
     }
@@ -361,7 +366,7 @@
         // When already pulsing we're allowed to show the wallpaper directly without
         // requesting a new pulse.
         if (mMachine.getState() == DozeMachine.State.DOZE_PULSING
-                && reason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
+                && reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
             mMachine.requestState(DozeMachine.State.DOZE_PULSING_BRIGHT);
             return;
         }
@@ -426,7 +431,7 @@
         public void onReceive(Context context, Intent intent) {
             if (PULSE_ACTION.equals(intent.getAction())) {
                 if (DozeMachine.DEBUG) Log.d(TAG, "Received pulse intent");
-                requestPulse(DozeEvent.PULSE_REASON_INTENT, false, /* performedProxCheck */
+                requestPulse(DozeLog.PULSE_REASON_INTENT, false, /* performedProxCheck */
                         null /* onPulseSupressedListener */);
             }
             if (UiModeManager.ACTION_ENTER_CAR_MODE.equals(intent.getAction())) {
diff --git a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
index a6aa909..1c05621 100644
--- a/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
+++ b/packages/SystemUI/src/com/android/systemui/doze/DozeUi.java
@@ -100,7 +100,7 @@
                     public void onPulseStarted() {
                         try {
                             mMachine.requestState(
-                                    reason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN
+                                    reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN
                                             ? DozeMachine.State.DOZE_PULSING_BRIGHT
                                             : DozeMachine.State.DOZE_PULSING);
                         } catch (IllegalStateException e) {
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
index 80d776a..d298b99 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsDialog.java
@@ -40,6 +40,7 @@
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
 import android.database.ContentObserver;
+import android.graphics.Color;
 import android.graphics.drawable.Drawable;
 import android.media.AudioManager;
 import android.net.ConnectivityManager;
@@ -459,12 +460,10 @@
                                 mKeyguardManager.isDeviceLocked())
                         : null;
 
-        boolean showControls = !mKeyguardManager.isDeviceLocked() && isControlsEnabled(mContext);
-
         ActionsDialog dialog = new ActionsDialog(mContext, mAdapter, panelViewController,
                 mBlurUtils, mSysuiColorExtractor, mStatusBarService,
                 mNotificationShadeWindowController,
-                showControls ? mControlsUiController : null);
+                shouldShowControls() ? mControlsUiController : null);
         dialog.setCanceledOnTouchOutside(false); // Handled by the custom class.
         dialog.setKeyguardShowing(mKeyguardShowing);
 
@@ -538,7 +537,7 @@
 
         @Override
         public boolean shouldBeSeparated() {
-            return !isControlsEnabled(mContext);
+            return !shouldShowControls();
         }
 
         @Override
@@ -1047,7 +1046,9 @@
             Action action = getItem(position);
             View view = action.create(mContext, convertView, parent, LayoutInflater.from(mContext));
             view.setOnClickListener(v -> onClickItem(position));
-            view.setOnLongClickListener(v -> onLongClickItem(position));
+            if (action instanceof LongPressAction) {
+                view.setOnLongClickListener(v -> onLongClickItem(position));
+            }
             return view;
         }
 
@@ -1135,7 +1136,8 @@
      * A single press action maintains no state, just responds to a press
      * and takes an action.
      */
-    private static abstract class SinglePressAction implements Action {
+
+    private abstract class SinglePressAction implements Action {
         private final int mIconResId;
         private final Drawable mIcon;
         private final int mMessageResId;
@@ -1174,7 +1176,7 @@
         }
 
         protected int getActionLayoutId(Context context) {
-            if (isControlsEnabled(context)) {
+            if (shouldShowControls()) {
                 return com.android.systemui.R.layout.global_actions_grid_item_v2;
             }
             return com.android.systemui.R.layout.global_actions_grid_item;
@@ -1640,8 +1642,6 @@
                                 FrameLayout.LayoutParams.MATCH_PARENT,
                                 FrameLayout.LayoutParams.MATCH_PARENT);
                 panelContainer.addView(mPanelController.getPanelContent(), panelParams);
-                mBackgroundDrawable = mPanelController.getBackgroundDrawable();
-                mScrimAlpha = 1f;
             }
         }
 
@@ -1669,7 +1669,7 @@
             }
             if (mBackgroundDrawable == null) {
                 mBackgroundDrawable = new ScrimDrawable();
-                mScrimAlpha = ScrimController.GRADIENT_SCRIM_ALPHA;
+                mScrimAlpha = ScrimController.BUSY_SCRIM_ALPHA;
             }
             getWindow().setBackgroundDrawable(mBackgroundDrawable);
         }
@@ -1728,7 +1728,8 @@
             if (!(mBackgroundDrawable instanceof ScrimDrawable)) {
                 return;
             }
-            ((ScrimDrawable) mBackgroundDrawable).setColor(colors.getMainColor(), animate);
+            ((ScrimDrawable) mBackgroundDrawable).setColor(colors.supportsDarkText() ? Color.WHITE
+                    : Color.BLACK, animate);
             View decorView = getWindow().getDecorView();
             if (colors.supportsDarkText()) {
                 decorView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR |
@@ -1804,6 +1805,7 @@
 
         void dismissImmediately() {
             mShowing = false;
+            if (mControlsUiController != null) mControlsUiController.hide();
             dismissPanel();
             resetOrientation();
             completeDismiss();
@@ -1900,8 +1902,8 @@
         return true;
     }
 
-    private static boolean isControlsEnabled(Context context) {
-        return Settings.Secure.getInt(
-                context.getContentResolver(), "systemui.controls_available", 0) == 1;
+    private boolean shouldShowControls() {
+        return !mKeyguardManager.isDeviceLocked()
+                && mControlsUiController.getAvailable();
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
index dd1856a..280a248 100644
--- a/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/globalactions/GlobalActionsImpl.java
@@ -30,17 +30,15 @@
 import android.widget.TextView;
 
 import com.android.internal.R;
-import com.android.internal.colorextraction.ColorExtractor.GradientColors;
 import com.android.internal.colorextraction.drawable.ScrimDrawable;
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.settingslib.Utils;
 import com.android.systemui.Dependency;
-import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.plugins.GlobalActions;
 import com.android.systemui.plugins.GlobalActionsPanelPlugin;
-import com.android.systemui.plugins.PluginListener;
-import com.android.systemui.shared.plugins.PluginManager;
+import com.android.systemui.statusbar.BlurUtils;
 import com.android.systemui.statusbar.CommandQueue;
+import com.android.systemui.statusbar.phone.ScrimController;
 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
 import com.android.systemui.statusbar.policy.ExtensionController;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
@@ -49,8 +47,7 @@
 
 import dagger.Lazy;
 
-public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks,
-        PluginListener<GlobalActionsPanelPlugin> {
+public class GlobalActionsImpl implements GlobalActions, CommandQueue.Callbacks {
 
     private static final float SHUTDOWN_SCRIM_ALPHA = 0.95f;
 
@@ -59,38 +56,30 @@
     private final KeyguardStateController mKeyguardStateController;
     private final DeviceProvisionedController mDeviceProvisionedController;
     private final ExtensionController.Extension<GlobalActionsPanelPlugin> mPanelExtension;
-    private GlobalActionsPanelPlugin mPlugin;
+    private final BlurUtils mBlurUtils;
     private final CommandQueue mCommandQueue;
     private GlobalActionsDialog mGlobalActionsDialog;
     private boolean mDisabled;
-    private final PluginManager mPluginManager;
-    private final String mPluginPackageName;
 
     @Inject
     public GlobalActionsImpl(Context context, CommandQueue commandQueue,
-            Lazy<GlobalActionsDialog> globalActionsDialogLazy) {
+            Lazy<GlobalActionsDialog> globalActionsDialogLazy, BlurUtils blurUtils) {
         mContext = context;
         mGlobalActionsDialogLazy = globalActionsDialogLazy;
         mKeyguardStateController = Dependency.get(KeyguardStateController.class);
         mDeviceProvisionedController = Dependency.get(DeviceProvisionedController.class);
-        mPluginManager = Dependency.get(PluginManager.class);
         mCommandQueue = commandQueue;
+        mBlurUtils = blurUtils;
         mCommandQueue.addCallback(this);
         mPanelExtension = Dependency.get(ExtensionController.class)
                 .newExtension(GlobalActionsPanelPlugin.class)
                 .withPlugin(GlobalActionsPanelPlugin.class)
                 .build();
-        mPluginPackageName = mContext.getString(
-                com.android.systemui.R.string.config_controlsPluginPackageName);
-        mPluginManager.addPluginListener(
-                GlobalActionsPanelPlugin.ACTION, this, GlobalActionsPanelPlugin.class, true);
     }
 
     @Override
     public void destroy() {
         mCommandQueue.removeCallback(this);
-        mPluginManager.removePluginListener(this);
-        if (mPlugin != null) mPlugin.onDestroy();
         if (mGlobalActionsDialog != null) {
             mGlobalActionsDialog.destroy();
             mGlobalActionsDialog = null;
@@ -103,14 +92,13 @@
         mGlobalActionsDialog = mGlobalActionsDialogLazy.get();
         mGlobalActionsDialog.showDialog(mKeyguardStateController.isShowing(),
                 mDeviceProvisionedController.isDeviceProvisioned(),
-                mPlugin != null ? mPlugin : mPanelExtension.get());
+                mPanelExtension.get());
         Dependency.get(KeyguardUpdateMonitor.class).requestFaceAuth();
     }
 
     @Override
     public void showShutdownUi(boolean isReboot, String reason) {
         ScrimDrawable background = new ScrimDrawable();
-        background.setAlpha((int) (SHUTDOWN_SCRIM_ALPHA * 255));
 
         Dialog d = new Dialog(mContext,
                 com.android.systemui.R.style.Theme_SystemUI_Dialog_GlobalActions);
@@ -160,8 +148,13 @@
             reasonView.setText(rebootReasonMessage);
         }
 
-        GradientColors colors = Dependency.get(SysuiColorExtractor.class).getNeutralColors();
-        background.setColor(colors.getMainColor(), false);
+        if (mBlurUtils.supportsBlursOnWindows()) {
+            background.setAlpha((int) (ScrimController.BUSY_SCRIM_ALPHA * 255));
+            mBlurUtils.applyBlur(d.getWindow().getDecorView().getViewRootImpl(),
+                        mBlurUtils.radiusForRatio(1));
+        } else {
+            background.setAlpha((int) (SHUTDOWN_SCRIM_ALPHA * 255));
+        }
 
         d.show();
     }
@@ -199,16 +192,4 @@
             mGlobalActionsDialog.dismissDialog();
         }
     }
-
-    @Override
-    public void onPluginConnected(GlobalActionsPanelPlugin plugin, Context pluginContext) {
-        if (pluginContext.getPackageName().equals(mPluginPackageName)) {
-            mPlugin = plugin;
-        }
-    }
-
-    @Override
-    public void onPluginDisconnected(GlobalActionsPanelPlugin plugin) {
-        mPlugin = null;
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java
index 657a308..11e215d 100644
--- a/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/EglHelper.java
@@ -153,11 +153,11 @@
         return true;
     }
 
-    private boolean checkExtensionCapability(String extName) {
+    boolean checkExtensionCapability(String extName) {
         return mExts.contains(extName);
     }
 
-    private int getWcgCapability() {
+    int getWcgCapability() {
         if (checkExtensionCapability(EXT_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH)) {
             return EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT;
         }
@@ -212,7 +212,7 @@
             if (wcg && checkExtensionCapability(KHR_GL_COLOR_SPACE) && wcgCapability > 0) {
                 attrs = new int[] {EGL_GL_COLORSPACE_KHR, wcgCapability, EGL_NONE};
             }
-            mEglSurface = eglCreateWindowSurface(mEglDisplay, mEglConfig, surfaceHolder, attrs, 0);
+            mEglSurface = askCreatingEglWindowSurface(surfaceHolder, attrs, 0 /* offset */);
         } else {
             Log.w(TAG, "Create EglSurface failed: hasEglDisplay=" + hasEglDisplay()
                     + ", has valid surface=" + surfaceHolder.getSurface().isValid());
@@ -235,6 +235,10 @@
         return true;
     }
 
+    EGLSurface askCreatingEglWindowSurface(SurfaceHolder holder, int[] attrs, int offset) {
+        return eglCreateWindowSurface(mEglDisplay, mEglConfig, holder, attrs, offset);
+    }
+
     /**
      * Destroy EglSurface.
      */
@@ -242,7 +246,7 @@
         if (hasEglSurface()) {
             eglMakeCurrent(mEglDisplay, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
             eglDestroySurface(mEglDisplay, mEglSurface);
-            mEglSurface = null;
+            mEglSurface = EGL_NO_SURFACE;
         }
     }
 
@@ -296,7 +300,7 @@
     public void destroyEglContext() {
         if (hasEglContext()) {
             eglDestroyContext(mEglDisplay, mEglContext);
-            mEglContext = null;
+            mEglContext = EGL_NO_CONTEXT;
         }
     }
 
@@ -340,11 +344,16 @@
             destroyEglContext();
         }
         if (hasEglDisplay()) {
-            eglTerminate(mEglDisplay);
+            terminateEglDisplay();
         }
         mEglReady = false;
     }
 
+    void terminateEglDisplay() {
+        eglTerminate(mEglDisplay);
+        mEglDisplay = EGL_NO_DISPLAY;
+    }
+
     /**
      * Called to dump current state.
      * @param prefix prefix.
diff --git a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
index fa8269d..ed6675dc 100644
--- a/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
+++ b/packages/SystemUI/src/com/android/systemui/glwallpaper/ImageWallpaperRenderer.java
@@ -31,7 +31,6 @@
 import android.util.MathUtils;
 import android.util.Size;
 import android.view.DisplayInfo;
-import android.view.WindowManager;
 
 import com.android.systemui.R;
 
@@ -71,8 +70,7 @@
         }
 
         DisplayInfo displayInfo = new DisplayInfo();
-        WindowManager wm = context.getSystemService(WindowManager.class);
-        wm.getDefaultDisplay().getDisplayInfo(displayInfo);
+        context.getDisplay().getDisplayInfo(displayInfo);
 
         // We only do transition in portrait currently, b/137962047.
         int orientation = context.getResources().getConfiguration().orientation;
@@ -88,6 +86,10 @@
         mImageProcessHelper = new ImageProcessHelper();
         mImageRevealHelper = new ImageRevealHelper(this);
 
+        startProcessingImage();
+    }
+
+    protected void startProcessingImage() {
         if (loadBitmap()) {
             // Compute threshold of the image, this is an async work.
             mImageProcessHelper.start(mBitmap);
@@ -113,7 +115,7 @@
         mBitmap = null;
     }
 
-    private boolean loadBitmap() {
+    protected boolean loadBitmap() {
         if (DEBUG) {
             Log.d(TAG, "loadBitmap: mBitmap=" + mBitmap);
         }
@@ -122,12 +124,7 @@
             mWcgContent = mWallpaperManager.wallpaperSupportsWcg(WallpaperManager.FLAG_SYSTEM);
             mWallpaperManager.forgetLoadedWallpaper();
             if (mBitmap != null) {
-                float scale = (float) mScissor.height() / mBitmap.getHeight();
-                int surfaceHeight = Math.max(mScissor.height(), mBitmap.getHeight());
-                int surfaceWidth = scale > 1f
-                        ? Math.round(mBitmap.getWidth() * scale)
-                        : mBitmap.getWidth();
-                mSurfaceSize.set(0, 0, surfaceWidth, surfaceHeight);
+                mSurfaceSize.set(0, 0, mBitmap.getWidth(), mBitmap.getHeight());
             }
         }
         if (DEBUG) {
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
index e66a9fa..2cc3d9e 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardSliceProvider.java
@@ -52,13 +52,13 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.SystemUIAppComponentFactory;
+import com.android.systemui.SystemUIFactory;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.phone.DozeParameters;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.policy.NextAlarmController;
-import com.android.systemui.statusbar.policy.NextAlarmControllerImpl;
 import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.util.wakelock.SettableWakeLock;
 import com.android.systemui.util.wakelock.WakeLock;
@@ -68,6 +68,8 @@
 import java.util.TimeZone;
 import java.util.concurrent.TimeUnit;
 
+import javax.inject.Inject;
+
 /**
  * Simple Slice provider that shows the current date.
  */
@@ -108,26 +110,31 @@
     private final Handler mHandler;
     private final Handler mMediaHandler;
     private final AlarmManager.OnAlarmListener mUpdateNextAlarm = this::updateNextAlarm;
-    private DozeParameters mDozeParameters;
+    @Inject
+    public DozeParameters mDozeParameters;
     @VisibleForTesting
     protected SettableWakeLock mMediaWakeLock;
-    @VisibleForTesting
-    protected ZenModeController mZenModeController;
+    @Inject
+    public ZenModeController mZenModeController;
     private String mDatePattern;
     private DateFormat mDateFormat;
     private String mLastText;
     private boolean mRegistered;
     private String mNextAlarm;
-    private NextAlarmController mNextAlarmController;
-    @VisibleForTesting
-    protected AlarmManager mAlarmManager;
-    @VisibleForTesting
-    protected ContentResolver mContentResolver;
+    @Inject
+    public NextAlarmController mNextAlarmController;
+    @Inject
+    public AlarmManager mAlarmManager;
+    @Inject
+    public ContentResolver mContentResolver;
     private AlarmManager.AlarmClockInfo mNextAlarmInfo;
     private PendingIntent mPendingIntent;
-    protected NotificationMediaManager mMediaManager;
-    private StatusBarStateController mStatusBarStateController;
-    private KeyguardBypassController mKeyguardBypassController;
+    @Inject
+    public NotificationMediaManager mMediaManager;
+    @Inject
+    public StatusBarStateController mStatusBarStateController;
+    @Inject
+    public KeyguardBypassController mKeyguardBypassController;
     private CharSequence mMediaTitle;
     private CharSequence mMediaArtist;
     protected boolean mDozing;
@@ -188,26 +195,6 @@
         mMediaUri = Uri.parse(KEYGUARD_MEDIA_URI);
     }
 
-    /**
-     * Initialize dependencies that don't exist during {@link android.content.ContentProvider}
-     * instantiation.
-     *
-     * @param mediaManager {@link NotificationMediaManager} singleton.
-     * @param statusBarStateController {@link StatusBarStateController} singleton.
-     */
-    public void initDependencies(
-            NotificationMediaManager mediaManager,
-            StatusBarStateController statusBarStateController,
-            KeyguardBypassController keyguardBypassController,
-            DozeParameters dozeParameters) {
-        mMediaManager = mediaManager;
-        mMediaManager.addCallback(this);
-        mStatusBarStateController = statusBarStateController;
-        mStatusBarStateController.addCallback(this);
-        mKeyguardBypassController = keyguardBypassController;
-        mDozeParameters = dozeParameters;
-    }
-
     @AnyThread
     @Override
     public Slice onBindSlice(Uri sliceUri) {
@@ -310,25 +297,19 @@
 
     @Override
     public boolean onCreateSliceProvider() {
-        if (mContextAvailableCallback != null) {
-            mContextAvailableCallback.onContextAvailable(getContext());
-        }
+        mContextAvailableCallback.onContextAvailable(getContext());
+        inject();
         synchronized (KeyguardSliceProvider.sInstanceLock) {
             KeyguardSliceProvider oldInstance = KeyguardSliceProvider.sInstance;
             if (oldInstance != null) {
                 oldInstance.onDestroy();
             }
-
-            mAlarmManager = getContext().getSystemService(AlarmManager.class);
-            mContentResolver = getContext().getContentResolver();
-            mNextAlarmController = new NextAlarmControllerImpl(getContext());
-            mNextAlarmController.addCallback(this);
-            mZenModeController = Dependency.get(ZenModeController.class);
-            mZenModeController.addCallback(this);
             mDatePattern = getContext().getString(R.string.system_ui_aod_date_pattern);
             mPendingIntent = PendingIntent.getActivity(getContext(), 0, new Intent(), 0);
-            mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"),
-                    "media");
+            mMediaManager.addCallback(this);
+            mStatusBarStateController.addCallback(this);
+            mNextAlarmController.addCallback(this);
+            mZenModeController.addCallback(this);
             KeyguardSliceProvider.sInstance = this;
             registerClockUpdate();
             updateClockLocked();
@@ -337,6 +318,13 @@
     }
 
     @VisibleForTesting
+    protected void inject() {
+        SystemUIFactory.getInstance().getRootComponent().inject(this);
+        mMediaWakeLock = new SettableWakeLock(WakeLock.createPartial(getContext(), "media"),
+                "media");
+    }
+
+    @VisibleForTesting
     protected void onDestroy() {
         synchronized (KeyguardSliceProvider.sInstanceLock) {
             mNextAlarmController.removeCallback(this);
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
index 14eec59..83a6d75 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/KeyguardViewMediator.java
@@ -151,7 +151,7 @@
     private static final int KEYGUARD_DISPLAY_TIMEOUT_DELAY_DEFAULT = 30000;
     private static final long KEYGUARD_DONE_PENDING_TIMEOUT_MS = 3000;
 
-    private static final boolean DEBUG = KeyguardConstants.DEBUG;
+    private static final boolean DEBUG = true;
     private static final boolean DEBUG_SIM_STATES = KeyguardConstants.DEBUG_SIM_STATES;
 
     private final static String TAG = "KeyguardViewMediator";
@@ -1651,7 +1651,7 @@
                             "KeyguardViewMediator#handleMessage START_KEYGUARD_EXIT_ANIM");
                     StartKeyguardExitAnimParams params = (StartKeyguardExitAnimParams) msg.obj;
                     handleStartKeyguardExitAnimation(params.startTime, params.fadeoutDuration);
-                    mFalsingManager.onSucccessfulUnlock();
+                    mFalsingManager.onSuccessfulUnlock();
                     Trace.endSection();
                     break;
                 case KEYGUARD_DONE_PENDING_TIMEOUT:
diff --git a/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java b/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java
index 6498b91..ae380b7 100644
--- a/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java
+++ b/packages/SystemUI/src/com/android/systemui/keyguard/WorkLockActivityController.java
@@ -93,6 +93,7 @@
             return mIatm.startActivityAsUser(
                     mContext.getIApplicationThread() /*caller*/,
                     mContext.getBasePackageName() /*callingPackage*/,
+                    mContext.getFeatureId() /*callingFeatureId*/,
                     intent /*intent*/,
                     intent.resolveTypeIfNeeded(mContext.getContentResolver()) /*resolvedType*/,
                     null /*resultTo*/,
diff --git a/packages/SystemUI/src/com/android/systemui/log/Event.java b/packages/SystemUI/src/com/android/systemui/log/Event.java
deleted file mode 100644
index 7bc1abf..0000000
--- a/packages/SystemUI/src/com/android/systemui/log/Event.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
- * Copyright (C) 2019 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.log;
-
-import android.annotation.IntDef;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * Stores information about an event that occurred in SystemUI to be used for debugging and triage.
- * Every event has a time stamp, log level and message.
- * Events are stored in {@link SysuiLog} and can be printed in a dumpsys.
- */
-public class Event {
-    public static final int UNINITIALIZED = -1;
-
-    @IntDef({ERROR, WARN, INFO, DEBUG, VERBOSE})
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Level {}
-    public static final int VERBOSE = 2;
-    public static final int DEBUG = 3;
-    public static final int INFO = 4;
-    public static final int WARN = 5;
-    public static final int ERROR = 6;
-    public static final @Level int DEFAULT_LOG_LEVEL = DEBUG;
-
-    private long mTimestamp;
-    private @Level int mLogLevel = DEFAULT_LOG_LEVEL;
-    private String mMessage = "";
-
-    /**
-     * initialize an event with a message
-     */
-    public Event init(String message) {
-        init(DEFAULT_LOG_LEVEL, message);
-        return this;
-    }
-
-    /**
-     * initialize an event with a logLevel and message
-     */
-    public Event init(@Level int logLevel, String message) {
-        mTimestamp = System.currentTimeMillis();
-        mLogLevel = logLevel;
-        mMessage = message;
-        return this;
-    }
-
-    public String getMessage() {
-        return mMessage;
-    }
-
-    public long getTimestamp() {
-        return mTimestamp;
-    }
-
-    public @Level int getLogLevel() {
-        return mLogLevel;
-    }
-
-    /**
-     * Recycle this event
-     */
-    void recycle() {
-        mTimestamp = -1;
-        mLogLevel = DEFAULT_LOG_LEVEL;
-        mMessage = "";
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/log/LogMessage.kt b/packages/SystemUI/src/com/android/systemui/log/LogMessage.kt
index d971ac5..2a0a2aa6 100644
--- a/packages/SystemUI/src/com/android/systemui/log/LogMessage.kt
+++ b/packages/SystemUI/src/com/android/systemui/log/LogMessage.kt
@@ -43,5 +43,10 @@
     var int1: Int
     var int2: Int
     var long1: Long
+    var long2: Long
     var double1: Double
+    var bool1: Boolean
+    var bool2: Boolean
+    var bool3: Boolean
+    var bool4: Boolean
 }
diff --git a/packages/SystemUI/src/com/android/systemui/log/LogMessageImpl.kt b/packages/SystemUI/src/com/android/systemui/log/LogMessageImpl.kt
index 32334bc..d33ac4b 100644
--- a/packages/SystemUI/src/com/android/systemui/log/LogMessageImpl.kt
+++ b/packages/SystemUI/src/com/android/systemui/log/LogMessageImpl.kt
@@ -30,7 +30,12 @@
     override var int1: Int,
     override var int2: Int,
     override var long1: Long,
-    override var double1: Double
+    override var long2: Long,
+    override var double1: Double,
+    override var bool1: Boolean,
+    override var bool2: Boolean,
+    override var bool3: Boolean,
+    override var bool4: Boolean
 ) : LogMessage {
 
     fun reset(
@@ -49,7 +54,12 @@
         int1 = 0
         int2 = 0
         long1 = 0
+        long2 = 0
         double1 = 0.0
+        bool1 = false
+        bool2 = false
+        bool3 = false
+        bool4 = false
     }
 
     companion object Factory {
@@ -65,7 +75,12 @@
                     0,
                     0,
                     0,
-                    0.0)
+                    0,
+                    0.0,
+                    false,
+                    false,
+                    false,
+                    false)
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/log/RichEvent.java b/packages/SystemUI/src/com/android/systemui/log/RichEvent.java
deleted file mode 100644
index 470f2b0..0000000
--- a/packages/SystemUI/src/com/android/systemui/log/RichEvent.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (C) 2019 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.log;
-
-/**
- * Stores information about an event that occurred in SystemUI to be used for debugging and triage.
- * Every rich event has a time stamp, event type, and log level, with the option to provide the
- * reason this event was triggered.
- * Events are stored in {@link SysuiLog} and can be printed in a dumpsys.
- */
-public abstract class RichEvent extends Event {
-    private int mType;
-
-    /**
-     * Initializes a rich event that includes an event type that matches with an index in the array
-     * getEventLabels().
-     */
-    public RichEvent init(@Event.Level int logLevel, int type, String reason) {
-        final int numEvents = getEventLabels().length;
-        if (type < 0 || type >= numEvents) {
-            throw new IllegalArgumentException("Unsupported event type. Events only supported"
-                    + " from 0 to " + (numEvents - 1) + ", but given type=" + type);
-        }
-        mType = type;
-        super.init(logLevel, getEventLabels()[mType] + " " + reason);
-        return this;
-    }
-
-    /**
-     * Returns an array of the event labels.  The index represents the event type and the
-     * corresponding String stored at that index is the user-readable representation of that event.
-     * @return array of user readable events, where the index represents its event type constant
-     */
-    public abstract String[] getEventLabels();
-
-    @Override
-    public void recycle() {
-        super.recycle();
-        mType = -1;
-    }
-
-    public int getType() {
-        return mType;
-    }
-
-    /**
-     * Builder to build a RichEvent.
-     * @param <B> Log specific builder that is extending this builder
-     * @param <E> Type of event we'll be building
-     */
-    public abstract static class Builder<B extends Builder<B, E>, E extends RichEvent> {
-        public static final int UNINITIALIZED = -1;
-
-        public final SysuiLog mLog;
-        private B mBuilder = getBuilder();
-        protected int mType;
-        protected String mReason;
-        protected @Level int mLogLevel;
-
-        public Builder(SysuiLog sysuiLog) {
-            mLog = sysuiLog;
-            reset();
-        }
-
-        /**
-         * Reset this builder's parameters so it can be reused to build another RichEvent.
-         */
-        public void reset() {
-            mType = UNINITIALIZED;
-            mReason = null;
-            mLogLevel = VERBOSE;
-        }
-
-        /**
-         * Get the log-specific builder.
-         */
-        public abstract B getBuilder();
-
-        /**
-         * Build the log-specific event given an event to populate.
-         */
-        public abstract E build(E e);
-
-        /**
-         * Optional - set the log level. Defaults to DEBUG.
-         */
-        public B setLogLevel(@Level int logLevel) {
-            mLogLevel = logLevel;
-            return mBuilder;
-        }
-
-        /**
-         * Required - set the event type.  These events must correspond with the events from
-         * getEventLabels().
-         */
-        public B setType(int type) {
-            mType = type;
-            return mBuilder;
-        }
-
-        /**
-         * Optional - set the reason why this event was triggered.
-         */
-        public B setReason(String reason) {
-            mReason = reason;
-            return mBuilder;
-        }
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java b/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java
deleted file mode 100644
index 4e15668..0000000
--- a/packages/SystemUI/src/com/android/systemui/log/SysuiLog.java
+++ /dev/null
@@ -1,180 +0,0 @@
-/*
- * Copyright (C) 2019 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.log;
-
-import android.os.Build;
-import android.os.SystemProperties;
-import android.util.Log;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.systemui.DumpController;
-import com.android.systemui.Dumpable;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.text.SimpleDateFormat;
-import java.util.ArrayDeque;
-import java.util.Locale;
-
-/**
- * Thread-safe logger in SystemUI which prints logs to logcat and stores logs to be
- * printed by the DumpController. This is an alternative to printing directly
- * to avoid logs being deleted by chatty. The number of logs retained is varied based on
- * whether the build is {@link Build.IS_DEBUGGABLE}.
- *
- * To manually view the logs via adb:
- *      adb shell dumpsys activity service com.android.systemui/.SystemUIService \
- *      dependency DumpController <SysuiLogId>
- *
- * Logs can be disabled by setting the following SystemProperty and then restarting the device:
- *      adb shell setprop persist.sysui.log.enabled.<id> true/false && adb reboot
- *
- * @param <E> Type of event we'll be logging
- */
-public class SysuiLog<E extends Event> implements Dumpable {
-    public static final SimpleDateFormat DATE_FORMAT =
-            new SimpleDateFormat("MM-dd HH:mm:ss", Locale.US);
-
-    protected final Object mDataLock = new Object();
-    private final String mId;
-    private final int mMaxLogs;
-    protected boolean mEnabled;
-    protected boolean mLogToLogcatEnabled;
-
-    @VisibleForTesting protected ArrayDeque<E> mTimeline;
-
-    /**
-     * Creates a SysuiLog
-     * @param dumpController where to register this logger's dumpsys
-     * @param id user-readable tag for this logger
-     * @param maxDebugLogs maximum number of logs to retain when {@link sDebuggable} is true
-     * @param maxLogs maximum number of logs to retain when {@link sDebuggable} is false
-     */
-    public SysuiLog(DumpController dumpController, String id, int maxDebugLogs, int maxLogs) {
-        this(dumpController, id, sDebuggable ? maxDebugLogs : maxLogs,
-                SystemProperties.getBoolean(SYSPROP_ENABLED_PREFIX + id, DEFAULT_ENABLED),
-                SystemProperties.getBoolean(SYSPROP_LOGCAT_ENABLED_PREFIX + id,
-                        DEFAULT_LOGCAT_ENABLED));
-    }
-
-    @VisibleForTesting
-    protected SysuiLog(DumpController dumpController, String id, int maxLogs, boolean enabled,
-            boolean logcatEnabled) {
-        mId = id;
-        mMaxLogs = maxLogs;
-        mEnabled = enabled;
-        mLogToLogcatEnabled = logcatEnabled;
-        mTimeline = mEnabled ? new ArrayDeque<>(mMaxLogs) : null;
-        dumpController.registerDumpable(mId, this);
-    }
-
-    /**
-     * Logs an event to the timeline which can be printed by the dumpsys.
-     * May also log to logcat if enabled.
-     * @return the last event that was discarded from the Timeline (can be recycled)
-     */
-    public E log(E event) {
-        if (!mEnabled) {
-            return null;
-        }
-
-        E recycledEvent = null;
-        synchronized (mDataLock) {
-            if (mTimeline.size() >= mMaxLogs) {
-                recycledEvent = mTimeline.removeFirst();
-            }
-
-            mTimeline.add(event);
-        }
-
-        if (mLogToLogcatEnabled) {
-            final String strEvent = eventToString(event);
-            switch (event.getLogLevel()) {
-                case Event.VERBOSE:
-                    Log.v(mId, strEvent);
-                    break;
-                case Event.DEBUG:
-                    Log.d(mId, strEvent);
-                    break;
-                case Event.ERROR:
-                    Log.e(mId, strEvent);
-                    break;
-                case Event.INFO:
-                    Log.i(mId, strEvent);
-                    break;
-                case Event.WARN:
-                    Log.w(mId, strEvent);
-                    break;
-            }
-        }
-
-        if (recycledEvent != null) {
-            recycledEvent.recycle();
-        }
-
-        return recycledEvent;
-    }
-
-    /**
-     * @return user-readable string of the given event with timestamp
-     */
-    private String eventToTimestampedString(Event event) {
-        StringBuilder sb = new StringBuilder();
-        sb.append(SysuiLog.DATE_FORMAT.format(event.getTimestamp()));
-        sb.append(" ");
-        sb.append(event.getMessage());
-        return sb.toString();
-    }
-
-    /**
-     * @return user-readable string of the given event without a timestamp
-     */
-    public String eventToString(Event event) {
-        return event.getMessage();
-    }
-
-    @GuardedBy("mDataLock")
-    private void dumpTimelineLocked(PrintWriter pw) {
-        pw.println("\tTimeline:");
-
-        for (Event event : mTimeline) {
-            pw.println("\t" + eventToTimestampedString(event));
-        }
-    }
-
-    @Override
-    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println(mId + ":");
-
-        if (mEnabled) {
-            synchronized (mDataLock) {
-                dumpTimelineLocked(pw);
-            }
-        } else {
-            pw.print(" - Logging disabled.");
-        }
-    }
-
-    private static boolean sDebuggable = Build.IS_DEBUGGABLE;
-    private static final String SYSPROP_ENABLED_PREFIX = "persist.sysui.log.enabled.";
-    private static final String SYSPROP_LOGCAT_ENABLED_PREFIX = "persist.sysui.log.enabled.logcat.";
-    private static final boolean DEFAULT_ENABLED = sDebuggable;
-    private static final boolean DEFAULT_LOGCAT_ENABLED = false;
-    private static final int DEFAULT_MAX_DEBUG_LOGS = 100;
-    private static final int DEFAULT_MAX_LOGS = 50;
-}
diff --git a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
index b1990be..4a7469c 100644
--- a/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
+++ b/packages/SystemUI/src/com/android/systemui/log/dagger/LogModule.java
@@ -42,7 +42,7 @@
     @Singleton
     @DozeLog
     public static LogBuffer provideDozeLogBuffer(
-            LogcatEchoTrackerDebug bufferFilter,
+            LogcatEchoTracker bufferFilter,
             DumpController dumpController) {
         LogBuffer buffer = new LogBuffer("DozeLog", 100, 10, bufferFilter);
         buffer.attach(dumpController);
@@ -61,6 +61,18 @@
         return buffer;
     }
 
+    /** Provides a logging buffer for all logs related to Quick Settings. */
+    @Provides
+    @Singleton
+    @QSLog
+    public static LogBuffer provideQuickSettingsLogBuffer(
+            LogcatEchoTracker bufferFilter,
+            DumpController dumpController) {
+        LogBuffer buffer = new LogBuffer("QSLog", 500, 10, bufferFilter);
+        buffer.attach(dumpController);
+        return buffer;
+    }
+
     /** Allows logging buffers to be tweaked via adb on debug builds but not on prod builds. */
     @Provides
     @Singleton
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/log/dagger/QSLog.java
similarity index 61%
copy from core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/log/dagger/QSLog.java
index 3ad903b..dd5010c 100644
--- a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/log/dagger/QSLog.java
@@ -14,6 +14,20 @@
  * limitations under the License.
  */
 
-package android.app.timezonedetector;
+package com.android.systemui.log.dagger;
 
-parcelable PhoneTimeZoneSuggestion;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import com.android.systemui.log.LogBuffer;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+/** A {@link LogBuffer} for QS-related messages. */
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+public @interface QSLog {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
index 6f03f18..41b3130 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/PipBoundsHandler.java
@@ -345,6 +345,14 @@
     }
 
     /**
+     * Sets the current bound with the currently store aspect ratio.
+     * @param stackBounds
+     */
+    public void transformBoundsToAspectRatio(Rect stackBounds) {
+        transformBoundsToAspectRatio(stackBounds, mAspectRatio, true);
+    }
+
+    /**
      * Set the current bounds (or the default bounds if there are no current bounds) with the
      * specified aspect ratio.
      */
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
index f9b18cf..c7bfc06 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMenuActivityController.java
@@ -280,7 +280,9 @@
         if (mToActivityMessenger != null) {
             Bundle data = new Bundle();
             data.putInt(EXTRA_MENU_STATE, menuState);
-            data.putParcelable(EXTRA_STACK_BOUNDS, stackBounds);
+            if (stackBounds != null) {
+                data.putParcelable(EXTRA_STACK_BOUNDS, stackBounds);
+            }
             data.putParcelable(EXTRA_MOVEMENT_BOUNDS, movementBounds);
             data.putBoolean(EXTRA_ALLOW_TIMEOUT, allowMenuTimeout);
             data.putBoolean(EXTRA_WILL_RESIZE_MENU, willResizeMenu);
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java
index eba2e78..3ae627d 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipMotionHelper.java
@@ -19,10 +19,6 @@
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
 
-import android.animation.AnimationHandler;
-import android.animation.Animator;
-import android.animation.AnimatorListenerAdapter;
-import android.animation.TimeAnimator;
 import android.annotation.Nullable;
 import android.app.ActivityManager.StackInfo;
 import android.app.IActivityManager;
@@ -36,6 +32,7 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.util.Log;
+import android.view.Choreographer;
 
 import androidx.dynamicanimation.animation.SpringForce;
 
@@ -88,9 +85,11 @@
     /** PIP's current bounds on the screen. */
     private final Rect mBounds = new Rect();
 
+    private final SfVsyncFrameCallbackProvider mSfVsyncFrameProvider =
+            new SfVsyncFrameCallbackProvider();
+
     /**
-     * Bounds that are animated using the physics animator. PIP is moved to these bounds whenever
-     * the {@link #mVsyncTimeAnimator} ticks.
+     * Bounds that are animated using the physics animator.
      */
     private final Rect mAnimatedBounds = new Rect();
 
@@ -100,12 +99,16 @@
     private PhysicsAnimator<Rect> mAnimatedBoundsPhysicsAnimator = PhysicsAnimator.getInstance(
             mAnimatedBounds);
 
+    /** Callback that re-sizes PIP to the animated bounds. */
+    private final Choreographer.FrameCallback mResizePipVsyncCallback =
+            l -> resizePipUnchecked(mAnimatedBounds);
+
     /**
-     * Time animator whose frame timing comes from the SurfaceFlinger vsync frame provider. At each
-     * frame, PIP is moved to {@link #mAnimatedBounds}, which are animated asynchronously using
-     * physics animations.
+     * Update listener that posts a vsync frame callback to resize PIP to {@link #mAnimatedBounds}.
      */
-    private TimeAnimator mVsyncTimeAnimator;
+    private final PhysicsAnimator.UpdateListener<Rect> mResizePipVsyncUpdateListener =
+            (target, values) ->
+                    mSfVsyncFrameProvider.postFrameCallback(mResizePipVsyncCallback);
 
     /** FlingConfig instances provided to PhysicsAnimator for fling gestures. */
     private PhysicsAnimator.FlingConfig mFlingConfigX;
@@ -126,39 +129,7 @@
         mMenuController = menuController;
         mSnapAlgorithm = snapAlgorithm;
         mFlingAnimationUtils = flingAnimationUtils;
-        final AnimationHandler vsyncFrameCallbackProvider = new AnimationHandler();
-        vsyncFrameCallbackProvider.setProvider(new SfVsyncFrameCallbackProvider());
-
         onConfigurationChanged();
-
-        // Construct a time animator that uses the vsync frame provider. Physics animations can't
-        // use custom frame providers, since they rely on constant time between frames to run the
-        // physics simulations. To work around this, we physically-animate a second set of bounds,
-        // and apply those animating bounds to the PIP in-sync via this TimeAnimator.
-        mVsyncTimeAnimator = new TimeAnimator() {
-            @Override
-            public AnimationHandler getAnimationHandler() {
-                return vsyncFrameCallbackProvider;
-            }
-        };
-
-        // When the time animator ticks, move PIP to the animated bounds.
-        mVsyncTimeAnimator.setTimeListener(
-                (animation, totalTime, deltaTime) ->
-                        resizePipUnchecked(mAnimatedBounds));
-
-        // Add a listener for cancel/end events that moves PIP to the final animated bounds.
-        mVsyncTimeAnimator.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationCancel(Animator animation) {
-                resizePipUnchecked(mAnimatedBounds);
-            }
-
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                resizePipUnchecked(mAnimatedBounds);
-            }
-        });
     }
 
     /**
@@ -429,7 +400,6 @@
      */
     private void cancelAnimations() {
         mAnimatedBoundsPhysicsAnimator.cancel();
-        mVsyncTimeAnimator.cancel();
     }
 
     /**
@@ -457,10 +427,8 @@
         cancelAnimations();
 
         mAnimatedBoundsPhysicsAnimator
-                .withEndActions(
-                        mVsyncTimeAnimator::cancel)
+                .addUpdateListener(mResizePipVsyncUpdateListener)
                 .start();
-        mVsyncTimeAnimator.start();
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java
new file mode 100644
index 0000000..9fb6234
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipResizeGestureHandler.java
@@ -0,0 +1,235 @@
+/*
+ * 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.systemui.pip.phone;
+
+import static com.android.internal.config.sysui.SystemUiDeviceConfigFlags.PIP_USER_RESIZE;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_BOTTOM;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_LEFT;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_NONE;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_TOP;
+
+import android.content.Context;
+import android.content.res.Resources;
+import android.graphics.Point;
+import android.graphics.PointF;
+import android.graphics.Rect;
+import android.graphics.Region;
+import android.hardware.input.InputManager;
+import android.os.Looper;
+import android.provider.DeviceConfig;
+import android.util.DisplayMetrics;
+import android.view.InputChannel;
+import android.view.InputEvent;
+import android.view.InputEventReceiver;
+import android.view.InputMonitor;
+import android.view.MotionEvent;
+
+import com.android.internal.policy.TaskResizingAlgorithm;
+import com.android.systemui.R;
+import com.android.systemui.pip.PipBoundsHandler;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Helper on top of PipTouchHandler that handles inputs OUTSIDE of the PIP window, which is used to
+ * trigger dynamic resize.
+ */
+public class PipResizeGestureHandler {
+
+    private static final String TAG = "PipResizeGestureHandler";
+
+    private final DisplayMetrics mDisplayMetrics = new DisplayMetrics();
+    private final PipBoundsHandler mPipBoundsHandler;
+    private final PipTouchHandler mPipTouchHandler;
+    private final PipMotionHelper mMotionHelper;
+    private final int mDisplayId;
+    private final Executor mMainExecutor;
+    private final Region mTmpRegion = new Region();
+
+    private final PointF mDownPoint = new PointF();
+    private final Point mMaxSize = new Point();
+    private final Point mMinSize = new Point();
+    private final Rect mTmpBounds = new Rect();
+    private final int mDelta;
+
+    private boolean mAllowGesture = false;
+    private boolean mIsAttached;
+    private boolean mIsEnabled;
+    private boolean mEnablePipResize;
+
+    private InputMonitor mInputMonitor;
+    private InputEventReceiver mInputEventReceiver;
+
+    private int mCtrlType;
+
+    public PipResizeGestureHandler(Context context, PipBoundsHandler pipBoundsHandler,
+            PipTouchHandler pipTouchHandler, PipMotionHelper motionHelper) {
+        final Resources res = context.getResources();
+        context.getDisplay().getMetrics(mDisplayMetrics);
+        mDisplayId = context.getDisplayId();
+        mMainExecutor = context.getMainExecutor();
+        mPipBoundsHandler = pipBoundsHandler;
+        mPipTouchHandler = pipTouchHandler;
+        mMotionHelper = motionHelper;
+
+        context.getDisplay().getRealSize(mMaxSize);
+        mDelta = res.getDimensionPixelSize(R.dimen.pip_resize_edge_size);
+
+        mEnablePipResize = DeviceConfig.getBoolean(
+                DeviceConfig.NAMESPACE_SYSTEMUI,
+                PIP_USER_RESIZE,
+                /* defaultValue = */ false);
+        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mMainExecutor,
+                new DeviceConfig.OnPropertiesChangedListener() {
+                    @Override
+                    public void onPropertiesChanged(DeviceConfig.Properties properties) {
+                        if (properties.getKeyset().contains(PIP_USER_RESIZE)) {
+                            mEnablePipResize = properties.getBoolean(
+                                    PIP_USER_RESIZE, /* defaultValue = */ false);
+                        }
+                    }
+                });
+    }
+
+    private void disposeInputChannel() {
+        if (mInputEventReceiver != null) {
+            mInputEventReceiver.dispose();
+            mInputEventReceiver = null;
+        }
+        if (mInputMonitor != null) {
+            mInputMonitor.dispose();
+            mInputMonitor = null;
+        }
+    }
+
+    void onActivityPinned() {
+        mIsAttached = true;
+        updateIsEnabled();
+    }
+
+    void onActivityUnpinned() {
+        mIsAttached = false;
+        updateIsEnabled();
+    }
+
+    private void updateIsEnabled() {
+        boolean isEnabled = mIsAttached && mEnablePipResize;
+        if (isEnabled == mIsEnabled) {
+            return;
+        }
+        mIsEnabled = isEnabled;
+        disposeInputChannel();
+
+        if (mIsEnabled) {
+            // Register input event receiver
+            mInputMonitor = InputManager.getInstance().monitorGestureInput(
+                    "pip-resize", mDisplayId);
+            mInputEventReceiver = new SysUiInputEventReceiver(
+                    mInputMonitor.getInputChannel(), Looper.getMainLooper());
+        }
+    }
+
+    private void onInputEvent(InputEvent ev) {
+        if (ev instanceof MotionEvent) {
+            onMotionEvent((MotionEvent) ev);
+        }
+    }
+
+    private boolean isWithinTouchRegion(int x, int y) {
+        final Rect currentPipBounds = mMotionHelper.getBounds();
+        if (currentPipBounds == null) {
+            return false;
+        }
+
+        mTmpBounds.set(currentPipBounds);
+        mTmpBounds.inset(-mDelta, -mDelta);
+
+        mTmpRegion.set(mTmpBounds);
+        mTmpRegion.op(currentPipBounds, Region.Op.DIFFERENCE);
+
+        if (mTmpRegion.contains(x, y)) {
+            if (x < currentPipBounds.left) {
+                mCtrlType |= CTRL_LEFT;
+            }
+            if (x > currentPipBounds.right) {
+                mCtrlType |= CTRL_RIGHT;
+            }
+            if (y < currentPipBounds.top) {
+                mCtrlType |= CTRL_TOP;
+            }
+            if (y > currentPipBounds.bottom) {
+                mCtrlType |= CTRL_BOTTOM;
+            }
+            return true;
+        }
+        return false;
+    }
+
+    private void onMotionEvent(MotionEvent ev) {
+        int action = ev.getActionMasked();
+        if (action == MotionEvent.ACTION_DOWN) {
+            mAllowGesture = isWithinTouchRegion((int) ev.getX(), (int) ev.getY());
+            if (mAllowGesture) {
+                mDownPoint.set(ev.getX(), ev.getY());
+            }
+
+        } else if (mAllowGesture) {
+            final Rect currentPipBounds = mMotionHelper.getBounds();
+            Rect newSize = TaskResizingAlgorithm.resizeDrag(ev.getX(), ev.getY(), mDownPoint.x,
+                    mDownPoint.y, currentPipBounds, mCtrlType, mMinSize.x, mMinSize.y, mMaxSize,
+                    true, true);
+            mPipBoundsHandler.transformBoundsToAspectRatio(newSize);
+            switch (action) {
+                case MotionEvent.ACTION_POINTER_DOWN:
+                    // We do not support multi touch for resizing via drag
+                    mAllowGesture = false;
+                    break;
+                case MotionEvent.ACTION_MOVE:
+                    // Capture inputs
+                    mInputMonitor.pilferPointers();
+                    //TODO: Actually do resize here.
+                    break;
+                case MotionEvent.ACTION_UP:
+                case MotionEvent.ACTION_CANCEL:
+                    //TODO: Finish resize operation here.
+                    mMotionHelper.synchronizePinnedStackBounds();
+                    mCtrlType = CTRL_NONE;
+                    mAllowGesture = false;
+                    break;
+            }
+        }
+    }
+
+    void updateMaxSize(int maxX, int maxY) {
+        mMaxSize.set(maxX, maxY);
+    }
+
+    void updateMiniSize(int minX, int minY) {
+        mMinSize.set(minX, minY);
+    }
+
+    class SysUiInputEventReceiver extends InputEventReceiver {
+        SysUiInputEventReceiver(InputChannel channel, Looper looper) {
+            super(channel, looper);
+        }
+
+        public void onInputEvent(InputEvent event) {
+            PipResizeGestureHandler.this.onInputEvent(event);
+            finishInputEvent(event, true);
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
index 65cc666..924edb6 100644
--- a/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/pip/phone/PipTouchHandler.java
@@ -73,6 +73,7 @@
     private final ViewConfiguration mViewConfig;
     private final PipMenuListener mMenuListener = new PipMenuListener();
     private final PipBoundsHandler mPipBoundsHandler;
+    private final PipResizeGestureHandler mPipResizeGestureHandler;
     private IPinnedStackController mPinnedStackController;
 
     private final PipMenuActivityController mMenuController;
@@ -188,6 +189,8 @@
         mGesture = new DefaultPipTouchGesture();
         mMotionHelper = new PipMotionHelper(mContext, mActivityManager, mActivityTaskManager,
                 mMenuController, mSnapAlgorithm, mFlingAnimationUtils);
+        mPipResizeGestureHandler =
+                new PipResizeGestureHandler(context, pipBoundsHandler, this, mMotionHelper);
         mTouchState = new PipTouchState(mViewConfig, mHandler,
                 () -> mMenuController.showMenu(MENU_STATE_FULL, mMotionHelper.getBounds(),
                         mMovementBounds, true /* allowMenuTimeout */, willResizeMenu()));
@@ -227,6 +230,7 @@
     public void onActivityPinned() {
         cleanUp();
         mShowPipMenuOnAnimationEnd = true;
+        mPipResizeGestureHandler.onActivityPinned();
     }
 
     public void onActivityUnpinned(ComponentName topPipActivity) {
@@ -234,11 +238,14 @@
             // Clean up state after the last PiP activity is removed
             cleanUp();
         }
+        mPipResizeGestureHandler.onActivityUnpinned();
     }
 
     public void onPinnedStackAnimationEnded() {
         // Always synchronize the motion helper bounds once PiP animations finish
         mMotionHelper.synchronizePinnedStackBounds();
+        mPipResizeGestureHandler.updateMiniSize(mMotionHelper.getBounds().width(),
+                mMotionHelper.getBounds().height());
 
         if (mShowPipMenuOnAnimationEnd) {
             mMenuController.showMenu(MENU_STATE_CLOSE, mMotionHelper.getBounds(),
@@ -279,6 +286,7 @@
         Size expandedSize = mSnapAlgorithm.getSizeForAspectRatio(aspectRatio,
                 mExpandedShortestEdgeSize, displaySize.x, displaySize.y);
         mExpandedBounds.set(0, 0, expandedSize.getWidth(), expandedSize.getHeight());
+        mPipResizeGestureHandler.updateMaxSize(expandedSize.getWidth(), expandedSize.getHeight());
         Rect expandedMovementBounds = new Rect();
         mSnapAlgorithm.getMovementBounds(mExpandedBounds, insetBounds, expandedMovementBounds,
                 bottomOffset);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt b/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt
index f66a1ec..f710f7f 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt
+++ b/packages/SystemUI/src/com/android/systemui/qs/DoubleLineTileLayout.kt
@@ -68,7 +68,7 @@
     override fun updateResources(): Boolean {
         with(mContext.resources) {
             smallTileSize = getDimensionPixelSize(R.dimen.qs_quick_tile_size)
-            cellMarginHorizontal = getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal) / 2
+            cellMarginHorizontal = getDimensionPixelSize(R.dimen.qs_tile_margin_horizontal)
             cellMarginVertical = getDimensionPixelSize(R.dimen.new_qs_vertical_margin)
         }
         requestLayout()
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSCarrier.java b/packages/SystemUI/src/com/android/systemui/qs/QSCarrier.java
index 4c7d82e..5a9c360 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSCarrier.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSCarrier.java
@@ -30,6 +30,8 @@
 import com.android.systemui.DualToneHandler;
 import com.android.systemui.R;
 
+import java.util.Objects;
+
 public class QSCarrier extends LinearLayout {
 
     private View mMobileGroup;
@@ -39,6 +41,7 @@
     private DualToneHandler mDualToneHandler;
     private ColorStateList mColorForegroundStateList;
     private float mColorForegroundIntensity;
+    private QSCarrierGroupController.CellSignalState mLastSignalState;
 
     public QSCarrier(Context context) {
         super(context);
@@ -74,6 +77,8 @@
     }
 
     public void updateState(QSCarrierGroupController.CellSignalState state) {
+        if (Objects.equals(state, mLastSignalState)) return;
+        mLastSignalState = state;
         mMobileGroup.setVisibility(state.visible ? View.VISIBLE : View.GONE);
         if (state.visible) {
             mMobileRoaming.setVisibility(state.roaming ? View.VISIBLE : View.GONE);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroupController.java b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroupController.java
index fb10642..eb5b4cc 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroupController.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSCarrierGroupController.java
@@ -29,6 +29,7 @@
 import android.view.View;
 import android.widget.TextView;
 
+import androidx.annotation.Nullable;
 import androidx.annotation.VisibleForTesting;
 
 import com.android.keyguard.CarrierTextController;
@@ -37,6 +38,7 @@
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.statusbar.policy.NetworkController;
 
+import java.util.Objects;
 import java.util.function.Consumer;
 
 import javax.inject.Inject;
@@ -67,8 +69,10 @@
                 @Override
                 public void setMobileDataIndicators(NetworkController.IconState statusIcon,
                         NetworkController.IconState qsIcon, int statusType, int qsType,
-                        boolean activityIn, boolean activityOut, String typeContentDescription,
-                        String description, boolean isWide, int subId, boolean roaming) {
+                        boolean activityIn, boolean activityOut,
+                        CharSequence typeContentDescription,
+                        CharSequence typeContentDescriptionHtml, CharSequence description,
+                        boolean isWide, int subId, boolean roaming) {
                     int slotIndex = getSlotIndex(subId);
                     if (slotIndex >= SIM_SLOTS) {
                         Log.w(TAG, "setMobileDataIndicators - slot: " + slotIndex);
@@ -81,7 +85,7 @@
                     mInfos[slotIndex].visible = statusIcon.visible;
                     mInfos[slotIndex].mobileSignalIconId = statusIcon.icon;
                     mInfos[slotIndex].contentDescription = statusIcon.contentDescription;
-                    mInfos[slotIndex].typeContentDescription = typeContentDescription;
+                    mInfos[slotIndex].typeContentDescription = typeContentDescription.toString();
                     mInfos[slotIndex].roaming = roaming;
                     mMainHandler.obtainMessage(H.MSG_UPDATE_STATE).sendToTarget();
                 }
@@ -297,6 +301,27 @@
         String contentDescription;
         String typeContentDescription;
         boolean roaming;
+
+        @Override
+        public boolean equals(@Nullable Object obj) {
+            if (this == obj) return true;
+            if (!(obj instanceof CellSignalState)) return false;
+            CellSignalState other = (CellSignalState) obj;
+            return this.visible == other.visible
+                    && this.mobileSignalIconId == other.mobileSignalIconId
+                    && Objects.equals(this.contentDescription, other.contentDescription)
+                    && Objects.equals(this.typeContentDescription, other.typeContentDescription)
+                    && this.roaming == other.roaming;
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(visible,
+                    mobileSignalIconId,
+                    contentDescription,
+                    typeContentDescription,
+                    roaming);
+        }
     }
 
     public static class Builder {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSColorController.kt b/packages/SystemUI/src/com/android/systemui/qs/QSColorController.kt
deleted file mode 100644
index 3f0c5bb..0000000
--- a/packages/SystemUI/src/com/android/systemui/qs/QSColorController.kt
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2019 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
-
-import android.content.ContentResolver
-import android.database.ContentObserver
-import android.net.Uri
-import android.os.Handler
-import android.os.Looper
-import android.provider.Settings
-import android.util.Log
-import com.android.systemui.plugins.qs.QSTile
-
-private const val TAG = "QSColorController"
-private const val QS_COLOR_ICON = "qs_color_icon"
-private const val QS_COLOR_ENABLED = "qs_color_enabled"
-private const val QS_COLOR_OVERRIDDEN_TILES = "qs_color_overridden_tiles"
-private val qsColorIconUri = Settings.System.getUriFor(QS_COLOR_ICON)
-private val qsColorEnabledUri = Settings.System.getUriFor(QS_COLOR_ENABLED)
-class QSColorController private constructor() {
-
-    private var overrideColor = false
-    private var colorIcon = false
-    private lateinit var colorCache: SettingBackedMap
-
-    companion object {
-        val instance = QSColorController()
-        internal fun overrideColor() = instance.overrideColor
-        internal fun colorIcon() = instance.colorIcon
-
-        @QSTile.ColorTile
-        private fun getColorFromSetting(setting: String): Int {
-            return when (setting.toLowerCase()) {
-                "red" -> QSTile.COLOR_TILE_RED
-                "blue" -> QSTile.COLOR_TILE_BLUE
-                "green" -> QSTile.COLOR_TILE_GREEN
-                "yellow" -> QSTile.COLOR_TILE_YELLOW
-                else -> QSTile.COLOR_TILE_ACCENT
-            }
-        }
-    }
-
-    private fun getBooleanSetting(key: String, default: Boolean = false): Boolean =
-            try {
-                Settings.System.getInt(contentResolver, key) != 0
-            } catch (_: Settings.SettingNotFoundException) {
-                default
-            }
-
-    private lateinit var tileHost: QSHost
-    private lateinit var contentResolver: ContentResolver
-
-    fun initQSTileHost(host: QSHost) {
-        tileHost = host
-        contentResolver = tileHost.context.contentResolver
-        colorCache = SettingBackedMap(contentResolver, mutableMapOf())
-        colorIcon = getBooleanSetting(QS_COLOR_ICON)
-        overrideColor = getBooleanSetting(QS_COLOR_ENABLED)
-        readExistingSettings()
-        contentResolver.registerContentObserver(qsColorEnabledUri, true, settingsListener)
-        contentResolver.registerContentObserver(qsColorIconUri, false, settingsListener)
-    }
-
-    private fun readExistingSettings() {
-        Settings.System.getString(contentResolver, QS_COLOR_OVERRIDDEN_TILES)?.split(",")
-                ?.mapNotNull { spec ->
-            Settings.System.getString(contentResolver, "$QS_COLOR_ENABLED/$spec")?.let {
-                spec to it
-            }
-        }?.forEach {
-            modifyTileColor(it.first, getColorFromSetting(it.second))
-        }
-    }
-
-    private val settingsListener = object : ContentObserver(Handler(Looper.getMainLooper())) {
-        override fun onChange(selfChange: Boolean, uri: Uri) {
-            super.onChange(selfChange, uri)
-            when (uri) {
-                qsColorIconUri -> colorIcon = getBooleanSetting(QS_COLOR_ICON)
-                qsColorEnabledUri -> overrideColor = getBooleanSetting(QS_COLOR_ENABLED)
-                else -> {
-                    uri.path?.drop("/system/".length)?.let {
-                        val color = getColorFromSetting(
-                                Settings.System.getString(contentResolver, it) ?: "accent")
-                        val tileSpec = uri.lastPathSegment ?: ""
-                        modifyTileColor(tileSpec, color)
-                    }
-                }
-            }
-        }
-    }
-
-    private fun modifyTileColor(spec: String, @QSTile.ColorTile color: Int) {
-        Log.w(TAG, "Setting color of tile $spec to $color")
-        colorCache.put(spec, color)
-        tileHost.tiles.firstOrNull { it.tileSpec == spec }?.setColor(color)
-    }
-
-    fun applyColorToTile(tile: QSTile) {
-        colorCache.get(tile.tileSpec)?.let {
-            modifyTileColor(tile.tileSpec, it)
-        }
-    }
-
-    fun applyColorToAllTiles() = tileHost.tiles.forEach(::applyColorToTile)
-
-    fun destroy() {
-        contentResolver.unregisterContentObserver(settingsListener)
-    }
-
-    class SettingBackedMap(
-        private val contentResolver: ContentResolver,
-        private val map: MutableMap<String, Int>
-    ) : MutableMap<String, @QSTile.ColorTile Int> by map {
-        override fun put(key: String, @QSTile.ColorTile value: Int): Int? {
-            return map.put(key, value).also {
-                Settings.System.putString(contentResolver, QS_COLOR_OVERRIDDEN_TILES,
-                        map.filterValues { it != QSTile.COLOR_TILE_ACCENT }
-                                .keys
-                                .joinToString(","))
-            }
-        }
-    }
-}
-fun overrideColor() = QSColorController.overrideColor()
-fun colorIcon() = QSColorController.colorIcon()
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
index 0134aa3..5de6d1c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSFooterImpl.java
@@ -169,7 +169,7 @@
         if (DevelopmentSettingsEnabler.isDevelopmentSettingsEnabled(mContext)) {
             v.setText(mContext.getString(
                     com.android.internal.R.string.bugreport_status,
-                    Build.VERSION.RELEASE,
+                    Build.VERSION.RELEASE_OR_CODENAME,
                     Build.ID));
             v.setVisibility(View.VISIBLE);
         } else {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
index 84fa700..3cf0718 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSHost.java
@@ -18,6 +18,7 @@
 
 import com.android.systemui.plugins.qs.QSTile;
 import com.android.systemui.qs.external.TileServices;
+import com.android.systemui.qs.logging.QSLogger;
 
 import java.util.Collection;
 
@@ -27,6 +28,7 @@
     void forceCollapsePanels();
     void openPanels();
     Context getContext();
+    QSLogger getQSLogger();
     Collection<QSTile> getTiles();
     void addCallback(Callback callback);
     void removeCallback(Callback callback);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java b/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
index 1077834e..6c69718 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSMediaPlayer.java
@@ -36,7 +36,7 @@
 import android.media.session.MediaController;
 import android.media.session.MediaSession;
 import android.media.session.PlaybackState;
-import android.text.TextUtils;
+import android.os.Handler;
 import android.util.Log;
 import android.view.KeyEvent;
 import android.view.LayoutInflater;
@@ -45,7 +45,6 @@
 import android.widget.ImageButton;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
-import android.widget.RemoteViews;
 import android.widget.TextView;
 
 import androidx.core.graphics.drawable.RoundedBitmapDrawable;
@@ -72,8 +71,6 @@
     private View mSeamless;
     private MediaSession.Token mToken;
     private MediaController mController;
-    private int mWidth;
-    private int mHeight;
     private int mForegroundColor;
     private int mBackgroundColor;
     private ComponentName mRecvComponent;
@@ -158,16 +155,11 @@
      *
      * @param context
      * @param parent
-     * @param width
-     * @param height
      */
-    public QSMediaPlayer(Context context, ViewGroup parent, int width, int height) {
+    public QSMediaPlayer(Context context, ViewGroup parent) {
         mContext = context;
         LayoutInflater inflater = LayoutInflater.from(mContext);
         mMediaNotifView = (LinearLayout) inflater.inflate(R.layout.qs_media_panel, parent, false);
-
-        mWidth = width;
-        mHeight = height;
     }
 
     public View getView() {
@@ -217,27 +209,18 @@
         Notification.Builder builder = Notification.Builder.recoverBuilder(mContext, notif);
 
         // Album art
-        addAlbumArtBackground(mMediaMetadata, bgColor, mWidth, mHeight);
+        addAlbumArt(mMediaMetadata, bgColor);
 
-        // Reuse notification header instead of reimplementing everything
-        RemoteViews headerRemoteView = builder.makeNotificationHeader();
         LinearLayout headerView = mMediaNotifView.findViewById(R.id.header);
-        View result = headerRemoteView.apply(mContext, headerView);
-        result.setPadding(0, 0, 0, 0);
-        LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
-                ViewGroup.LayoutParams.WRAP_CONTENT, 75);
-        result.setLayoutParams(lp);
-        headerView.removeAllViews();
-        headerView.addView(result);
 
         // App icon
-        ImageView appIcon = headerView.findViewById(com.android.internal.R.id.icon);
+        ImageView appIcon = headerView.findViewById(R.id.icon);
         Drawable iconDrawable = icon.loadDrawable(mContext);
         iconDrawable.setTint(iconColor);
         appIcon.setImageDrawable(iconDrawable);
 
         // App title
-        TextView appName = headerView.findViewById(com.android.internal.R.id.app_name_text);
+        TextView appName = headerView.findViewById(R.id.app_name);
         String appNameString = builder.loadHeaderAppName();
         appName.setText(appNameString);
         appName.setTextColor(iconColor);
@@ -254,25 +237,8 @@
             }
         });
 
-        // Separator
-        TextView separator = headerView.findViewById(com.android.internal.R.id.header_text_divider);
-        separator.setTextColor(iconColor);
-
-        // Album name
-        TextView albumName = headerView.findViewById(com.android.internal.R.id.header_text);
-        String albumString = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ALBUM);
-        if (TextUtils.isEmpty(albumString)) {
-            albumName.setVisibility(View.GONE);
-            separator.setVisibility(View.GONE);
-        } else {
-            albumName.setText(albumString);
-            albumName.setTextColor(iconColor);
-            albumName.setVisibility(View.VISIBLE);
-            separator.setVisibility(View.VISIBLE);
-        }
-
         // Transfer chip
-        mSeamless = headerView.findViewById(com.android.internal.R.id.media_seamless);
+        mSeamless = headerView.findViewById(R.id.media_seamless);
         mSeamless.setVisibility(View.VISIBLE);
         updateChip(device);
         ActivityStarter mActivityStarter = Dependency.get(ActivityStarter.class);
@@ -284,13 +250,13 @@
         });
 
         // Artist name
-        TextView artistText = mMediaNotifView.findViewById(R.id.header_title);
+        TextView artistText = headerView.findViewById(R.id.header_artist);
         String artistName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST);
         artistText.setText(artistName);
         artistText.setTextColor(iconColor);
 
         // Song name
-        TextView titleText = mMediaNotifView.findViewById(R.id.header_text);
+        TextView titleText = headerView.findViewById(R.id.header_text);
         String songName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_TITLE);
         titleText.setText(songName);
         titleText.setTextColor(iconColor);
@@ -363,34 +329,25 @@
         return (state.getState() == PlaybackState.STATE_PLAYING);
     }
 
-    private void addAlbumArtBackground(MediaMetadata metadata, int bgColor, int width, int height) {
+    private void addAlbumArt(MediaMetadata metadata, int bgColor) {
         Bitmap albumArt = metadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
         float radius = mContext.getResources().getDimension(R.dimen.qs_media_corner_radius);
+        ImageView albumView = mMediaNotifView.findViewById(R.id.album_art);
         if (albumArt != null) {
             Log.d(TAG, "updating album art");
             Bitmap original = albumArt.copy(Bitmap.Config.ARGB_8888, true);
-            Bitmap scaled = scaleBitmap(original, width, height);
-            Canvas canvas = new Canvas(scaled);
-
-            // Add translucent layer over album art to improve contrast
-            Paint p = new Paint();
-            p.setStyle(Paint.Style.FILL);
-            p.setColor(bgColor);
-            p.setAlpha(200);
-            canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p);
-
+            int albumSize = (int) mContext.getResources().getDimension(R.dimen.qs_media_album_size);
+            Bitmap scaled = scaleBitmap(original, albumSize, albumSize);
             RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(
                     mContext.getResources(), scaled);
             roundedDrawable.setCornerRadius(radius);
-
-            mMediaNotifView.setBackground(roundedDrawable);
+            albumView.setImageDrawable(roundedDrawable);
         } else {
             Log.e(TAG, "No album art available");
-            GradientDrawable rect = new GradientDrawable();
-            rect.setCornerRadius(radius);
-            rect.setColor(bgColor);
-            mMediaNotifView.setBackground(rect);
+            albumView.setImageDrawable(null);
         }
+
+        mMediaNotifView.setBackgroundTintList(ColorStateList.valueOf(bgColor));
     }
 
     private Bitmap scaleBitmap(Bitmap original, int width, int height) {
@@ -414,6 +371,13 @@
         if (mSeamless == null) {
             return;
         }
+        Handler handler = mSeamless.getHandler();
+        handler.post(() -> {
+            updateChipInternal(device);
+        });
+    }
+
+    private void updateChipInternal(MediaDevice device) {
         ColorStateList fgTintList = ColorStateList.valueOf(mForegroundColor);
 
         // Update the outline color
@@ -423,8 +387,8 @@
         rect.setStroke(2, mForegroundColor);
         rect.setColor(mBackgroundColor);
 
-        ImageView iconView = mSeamless.findViewById(com.android.internal.R.id.media_seamless_image);
-        TextView deviceName = mSeamless.findViewById(com.android.internal.R.id.media_seamless_text);
+        ImageView iconView = mSeamless.findViewById(R.id.media_seamless_image);
+        TextView deviceName = mSeamless.findViewById(R.id.media_seamless_text);
         deviceName.setTextColor(fgTintList);
 
         if (device != null) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
index 35b8312..53454d6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSPanel.java
@@ -31,7 +31,6 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.provider.Settings;
 import android.service.notification.StatusBarNotification;
 import android.service.quicksettings.Tile;
 import android.util.AttributeSet;
@@ -39,7 +38,6 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
-import android.widget.FrameLayout;
 import android.widget.HorizontalScrollView;
 import android.widget.LinearLayout;
 
@@ -59,10 +57,9 @@
 import com.android.systemui.qs.QSHost.Callback;
 import com.android.systemui.qs.customize.QSCustomizer;
 import com.android.systemui.qs.external.CustomTile;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.settings.BrightnessController;
 import com.android.systemui.settings.ToggleSliderView;
-import com.android.systemui.shared.plugins.PluginManager;
-import com.android.systemui.statusbar.phone.NPVPluginManager;
 import com.android.systemui.statusbar.policy.BrightnessMirrorController;
 import com.android.systemui.statusbar.policy.BrightnessMirrorController.BrightnessMirrorListener;
 import com.android.systemui.tuner.TunerService;
@@ -73,6 +70,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.stream.Collectors;
 
 import javax.inject.Inject;
 import javax.inject.Named;
@@ -88,6 +86,7 @@
 
     protected final Context mContext;
     protected final ArrayList<TileRecord> mRecords = new ArrayList<>();
+    private String mCachedSpecs = "";
     protected final View mBrightnessView;
     private final H mHandler = new H();
     private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
@@ -97,6 +96,7 @@
     private final ArrayList<QSMediaPlayer> mMediaPlayers = new ArrayList<>();
     private LocalMediaManager mLocalMediaManager;
     private MediaDevice mDevice;
+    private boolean mUpdateCarousel = false;
 
     protected boolean mExpanded;
     protected boolean mListening;
@@ -104,6 +104,7 @@
     private QSDetail.Callback mCallback;
     private BrightnessController mBrightnessController;
     private DumpController mDumpController;
+    private final QSLogger mQSLogger;
     protected QSTileHost mHost;
 
     protected QSSecurityFooter mFooter;
@@ -118,10 +119,6 @@
     private BrightnessMirrorController mBrightnessMirrorController;
     private View mDivider;
 
-    private FrameLayout mPluginFrame;
-    private final PluginManager mPluginManager;
-    private NPVPluginManager mNPVPluginManager;
-
     private final LocalMediaManager.DeviceCallback mDeviceCallback =
             new LocalMediaManager.DeviceCallback() {
         @Override
@@ -147,24 +144,17 @@
         }
     };
 
-    public QSPanel(Context context) {
-        this(context, null);
-    }
-
-    public QSPanel(Context context, AttributeSet attrs) {
-        this(context, attrs, null);
-    }
-
-    public QSPanel(Context context, AttributeSet attrs, DumpController dumpController) {
-        this(context, attrs, dumpController, null, Dependency.get(BroadcastDispatcher.class));
-    }
-
     @Inject
-    public QSPanel(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
-            DumpController dumpController, PluginManager pluginManager,
-            BroadcastDispatcher broadcastDispatcher) {
+    public QSPanel(
+            @Named(VIEW_CONTEXT) Context context,
+            AttributeSet attrs,
+            DumpController dumpController,
+            BroadcastDispatcher broadcastDispatcher,
+            QSLogger qsLogger
+    ) {
         super(context, attrs);
         mContext = context;
+        mQSLogger = qsLogger;
 
         setOrientation(VERTICAL);
 
@@ -174,6 +164,7 @@
 
         mTileLayout = (QSTileLayout) LayoutInflater.from(mContext).inflate(
                 R.layout.qs_paged_tile_layout, this, false);
+        mQSLogger.logAllTilesChangeListening(mListening, getDumpableTag(), mCachedSpecs);
         mTileLayout.setListening(mListening);
         addView((View) mTileLayout);
 
@@ -187,7 +178,7 @@
             HorizontalScrollView mediaScrollView = (HorizontalScrollView) LayoutInflater.from(
                     mContext).inflate(R.layout.media_carousel, this, false);
             mMediaCarousel = mediaScrollView.findViewById(R.id.media_carousel);
-            addView(mediaScrollView);
+            addView(mediaScrollView, 0);
         } else {
             mMediaCarousel = null;
         }
@@ -200,15 +191,23 @@
         mBrightnessController = new BrightnessController(getContext(),
                 findViewById(R.id.brightness_slider), broadcastDispatcher);
         mDumpController = dumpController;
-        mPluginManager = pluginManager;
-        if (mPluginManager != null && Settings.System.getInt(
-                mContext.getContentResolver(), "npv_plugin_flag", 0) == 2) {
-            mPluginFrame = (FrameLayout) LayoutInflater.from(mContext).inflate(
-                    R.layout.status_bar_expanded_plugin_frame, this, false);
-            addView(mPluginFrame);
-            mNPVPluginManager = new NPVPluginManager(mPluginFrame, mPluginManager);
-        }
+    }
 
+    @Override
+    public void onVisibilityAggregated(boolean isVisible) {
+        super.onVisibilityAggregated(isVisible);
+        if (!isVisible && mUpdateCarousel) {
+            for (QSMediaPlayer player : mMediaPlayers) {
+                if (player.isPlaying()) {
+                    LayoutParams lp = (LayoutParams) player.getView().getLayoutParams();
+                    mMediaCarousel.removeView(player.getView());
+                    mMediaCarousel.addView(player.getView(), 0, lp);
+                    ((HorizontalScrollView) mMediaCarousel.getParent()).fullScroll(View.FOCUS_LEFT);
+                    mUpdateCarousel = false;
+                    break;
+                }
+            }
+        }
     }
 
     /**
@@ -248,7 +247,6 @@
             }
         }
 
-        int playerHeight = (int) getResources().getDimension(R.dimen.qs_media_height);
         int playerWidth = (int) getResources().getDimension(R.dimen.qs_media_width);
         int padding = (int) getResources().getDimension(R.dimen.qs_media_padding);
         LayoutParams lp = new LayoutParams(playerWidth, ViewGroup.LayoutParams.MATCH_PARENT);
@@ -257,8 +255,7 @@
 
         if (player == null) {
             Log.d(TAG, "creating new player");
-
-            player = new QSMediaPlayer(mContext, this, playerWidth, playerHeight);
+            player = new QSMediaPlayer(mContext, this);
 
             if (player.isPlaying()) {
                 mMediaCarousel.addView(player.getView(), 0, lp); // add in front
@@ -267,9 +264,7 @@
             }
             mMediaPlayers.add(player);
         } else if (player.isPlaying()) {
-            // move it to the front
-            mMediaCarousel.removeView(player.getView());
-            mMediaCarousel.addView(player.getView(), 0, lp);
+            mUpdateCarousel = true;
         }
 
         Log.d(TAG, "setting player session");
@@ -525,6 +520,7 @@
 
     public void setExpanded(boolean expanded) {
         if (mExpanded == expanded) return;
+        mQSLogger.logPanelExpanded(expanded, getDumpableTag());
         mExpanded = expanded;
         if (!mExpanded && mTileLayout instanceof PagedTileLayout) {
             ((PagedTileLayout) mTileLayout).setCurrentItem(0, false);
@@ -551,12 +547,18 @@
         if (mListening == listening) return;
         mListening = listening;
         if (mTileLayout != null) {
+            mQSLogger.logAllTilesChangeListening(listening, getDumpableTag(), mCachedSpecs);
             mTileLayout.setListening(listening);
         }
         if (mListening) {
             refreshAllTiles();
         }
-        if (mNPVPluginManager != null) mNPVPluginManager.setListening(listening);
+    }
+
+    private String getTilesSpecs() {
+        return mRecords.stream()
+                .map(tileRecord ->  tileRecord.tile.getTileSpec())
+                .collect(Collectors.joining(","));
     }
 
     public void setListening(boolean listening, boolean expanded) {
@@ -616,6 +618,7 @@
             record.tile.removeCallback(record.callback);
         }
         mRecords.clear();
+        mCachedSpecs = "";
         for (QSTile tile : tiles) {
             addTile(tile, collapsedView);
         }
@@ -680,6 +683,7 @@
         r.tileView.init(r.tile);
         r.tile.refreshState();
         mRecords.add(r);
+        mCachedSpecs = getTilesSpecs();
 
         if (mTileLayout != null) {
             mTileLayout.addTile(r);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
index b682cb0..476af20 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSSecurityFooter.java
@@ -31,7 +31,6 @@
 import android.text.method.LinkMovementMethod;
 import android.text.style.ClickableSpan;
 import android.util.Log;
-import android.util.StatsLog;
 import android.view.ContextThemeWrapper;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -41,6 +40,7 @@
 import android.widget.ImageView;
 import android.widget.TextView;
 
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.systemui.Dependency;
 import com.android.systemui.FontSizeUtils;
 import com.android.systemui.R;
@@ -116,13 +116,14 @@
 
     @Override
     public void onClick(View v) {
+        if (!hasFooter()) return;
         mHandler.sendEmptyMessage(H.CLICK);
     }
 
     private void handleClick() {
         showDeviceMonitoringDialog();
         DevicePolicyEventLogger
-                .createEvent(StatsLog.DEVICE_POLICY_EVENT__EVENT_ID__DO_USER_INFO_CLICKED)
+                .createEvent(FrameworkStatsLog.DEVICE_POLICY_EVENT__EVENT_ID__DO_USER_INFO_CLICKED)
                 .write();
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
index f71150f..73c42d4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QSTileHost.java
@@ -43,6 +43,7 @@
 import com.android.systemui.qs.external.CustomTile;
 import com.android.systemui.qs.external.TileLifecycleManager;
 import com.android.systemui.qs.external.TileServices;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.phone.AutoTileManager;
@@ -82,6 +83,7 @@
     private final PluginManager mPluginManager;
     private final DumpController mDumpController;
     private final BroadcastDispatcher mBroadcastDispatcher;
+    private final QSLogger mQSLogger;
 
     private final List<Callback> mCallbacks = new ArrayList<>();
     private AutoTileManager mAutoTiles;
@@ -90,8 +92,6 @@
     private int mCurrentUser;
     private final Optional<StatusBar> mStatusBarOptional;
 
-    private QSColorController mQSColorController = QSColorController.Companion.getInstance();
-
     @Inject
     public QSTileHost(Context context,
             StatusBarIconController iconController,
@@ -103,12 +103,14 @@
             Provider<AutoTileManager> autoTiles,
             DumpController dumpController,
             BroadcastDispatcher broadcastDispatcher,
-            Optional<StatusBar> statusBarOptional) {
+            Optional<StatusBar> statusBarOptional,
+            QSLogger qsLogger) {
         mIconController = iconController;
         mContext = context;
         mTunerService = tunerService;
         mPluginManager = pluginManager;
         mDumpController = dumpController;
+        mQSLogger = qsLogger;
         mBroadcastDispatcher = broadcastDispatcher;
 
         mServices = new TileServices(this, bgLooper, mBroadcastDispatcher);
@@ -127,8 +129,6 @@
             // AutoTileManager can modify mTiles so make sure mTiles has already been initialized.
             mAutoTiles = autoTiles.get();
         });
-
-        mQSColorController.initQSTileHost(this);
     }
 
     public StatusBarIconController getIconController() {
@@ -142,8 +142,6 @@
         mServices.destroy();
         mPluginManager.removePluginListener(this);
         mDumpController.unregisterDumpable(this);
-
-        mQSColorController.destroy();
     }
 
     @Override
@@ -165,6 +163,10 @@
         onTuningChanged(TILES_SETTING, value);
     }
 
+    public QSLogger getQSLogger() {
+        return mQSLogger;
+    }
+
     @Override
     public void addCallback(Callback callback) {
         mCallbacks.add(callback);
@@ -229,6 +231,7 @@
         mTiles.entrySet().stream().filter(tile -> !tileSpecs.contains(tile.getKey())).forEach(
                 tile -> {
                     Log.d(TAG, "Destroying tile: " + tile.getKey());
+                    mQSLogger.logTileDestroyed(tile.getKey(), "Tile removed");
                     tile.getValue().destroy();
                 });
         final LinkedHashMap<String, QSTile> newTiles = new LinkedHashMap<>();
@@ -243,9 +246,11 @@
                         tile.userSwitch(currentUser);
                     }
                     newTiles.put(tileSpec, tile);
+                    mQSLogger.logTileAdded(tileSpec);
                 } else {
                     tile.destroy();
                     Log.d(TAG, "Destroying not available tile: " + tileSpec);
+                    mQSLogger.logTileDestroyed(tileSpec, "Tile not available");
                 }
             } else {
                 Log.d(TAG, "Creating tile: " + tileSpec);
@@ -255,9 +260,11 @@
                         if (tile.isAvailable()) {
                             tile.setTileSpec(tileSpec);
                             newTiles.put(tileSpec, tile);
+                            mQSLogger.logTileAdded(tileSpec);
                         } else {
                             tile.destroy();
                             Log.d(TAG, "Destroying not available tile: " + tileSpec);
+                            mQSLogger.logTileDestroyed(tileSpec, "Tile not available");
                         }
                     }
                 } catch (Throwable t) {
@@ -280,8 +287,6 @@
                 mCallbacks.get(i).onTilesChanged();
             }
         }
-
-        mQSColorController.applyColorToAllTiles();
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
index cec1cb2..9018a37 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSMediaPlayer.java
@@ -23,13 +23,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.ResolveInfo;
 import android.content.res.ColorStateList;
-import android.graphics.Bitmap;
-import android.graphics.Canvas;
-import android.graphics.Matrix;
-import android.graphics.Paint;
-import android.graphics.Rect;
 import android.graphics.drawable.Drawable;
-import android.graphics.drawable.GradientDrawable;
 import android.graphics.drawable.Icon;
 import android.media.MediaMetadata;
 import android.media.session.MediaController;
@@ -45,9 +39,6 @@
 import android.widget.LinearLayout;
 import android.widget.TextView;
 
-import androidx.core.graphics.drawable.RoundedBitmapDrawable;
-import androidx.core.graphics.drawable.RoundedBitmapDrawableFactory;
-
 import com.android.systemui.R;
 
 import java.util.List;
@@ -63,7 +54,6 @@
     private LinearLayout mMediaNotifView;
     private MediaSession.Token mToken;
     private MediaController mController;
-    private int mBackgroundColor;
     private int mForegroundColor;
     private ComponentName mRecvComponent;
 
@@ -142,7 +132,6 @@
             View actionsContainer, int[] actionsToShow, PendingIntent contentIntent) {
         mToken = token;
         mForegroundColor = iconColor;
-        mBackgroundColor = bgColor;
 
         String oldPackage = "";
         if (mController != null) {
@@ -185,8 +174,7 @@
             }
         });
 
-        // Album art
-        addAlbumArtBackground(mMediaMetadata, mBackgroundColor);
+        mMediaNotifView.setBackgroundTintList(ColorStateList.valueOf(bgColor));
 
         // App icon
         ImageView appIcon = mMediaNotifView.findViewById(R.id.icon);
@@ -194,14 +182,8 @@
         iconDrawable.setTint(mForegroundColor);
         appIcon.setImageDrawable(iconDrawable);
 
-        // Artist name
-        TextView appText = mMediaNotifView.findViewById(R.id.header_title);
-        String artistName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_ARTIST);
-        appText.setText(artistName);
-        appText.setTextColor(mForegroundColor);
-
         // Song name
-        TextView titleText = mMediaNotifView.findViewById(R.id.header_text);
+        TextView titleText = mMediaNotifView.findViewById(R.id.header_title);
         String songName = mMediaMetadata.getString(MediaMetadata.METADATA_KEY_TITLE);
         titleText.setText(songName);
         titleText.setTextColor(mForegroundColor);
@@ -277,54 +259,4 @@
     public boolean hasMediaSession() {
         return mController != null && mController.getPlaybackState() != null;
     }
-
-    private void addAlbumArtBackground(MediaMetadata metadata, int bgColor) {
-        Bitmap albumArt = metadata.getBitmap(MediaMetadata.METADATA_KEY_ALBUM_ART);
-        float radius = mContext.getResources().getDimension(R.dimen.qs_media_corner_radius);
-        Rect bounds = new Rect();
-        mMediaNotifView.getBoundsOnScreen(bounds);
-        int width = bounds.width();
-        int height = bounds.height();
-        if (albumArt != null && width > 0 && height > 0) {
-            Bitmap original = albumArt.copy(Bitmap.Config.ARGB_8888, true);
-            Bitmap scaled = scaleBitmap(original, width, height);
-            Canvas canvas = new Canvas(scaled);
-
-            // Add translucent layer over album art to improve contrast
-            Paint p = new Paint();
-            p.setStyle(Paint.Style.FILL);
-            p.setColor(bgColor);
-            p.setAlpha(200);
-            canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p);
-
-            RoundedBitmapDrawable roundedDrawable = RoundedBitmapDrawableFactory.create(
-                    mContext.getResources(), scaled);
-            roundedDrawable.setCornerRadius(radius);
-
-            mMediaNotifView.setBackground(roundedDrawable);
-        } else {
-            Log.e(TAG, "No album art available");
-            GradientDrawable rect = new GradientDrawable();
-            rect.setCornerRadius(radius);
-            rect.setColor(bgColor);
-            mMediaNotifView.setBackground(rect);
-        }
-    }
-
-    private Bitmap scaleBitmap(Bitmap original, int width, int height) {
-        Bitmap cropped = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
-        Canvas canvas = new Canvas(cropped);
-
-        float scale = (float) cropped.getWidth() / (float) original.getWidth();
-        float dy = (cropped.getHeight() - original.getHeight() * scale) / 2.0f;
-        Matrix transformation = new Matrix();
-        transformation.postTranslate(0, dy);
-        transformation.preScale(scale, scale);
-
-        Paint paint = new Paint();
-        paint.setFilterBitmap(true);
-        canvas.drawBitmap(original, transformation, paint);
-
-        return cropped;
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
index b05d4fd..fda2f6a4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/QuickQSPanel.java
@@ -29,10 +29,12 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.DumpController;
 import com.android.systemui.R;
+import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.plugins.qs.QSTile;
 import com.android.systemui.plugins.qs.QSTile.SignalState;
 import com.android.systemui.plugins.qs.QSTile.State;
 import com.android.systemui.qs.customize.QSCustomizer;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.tuner.TunerService;
 import com.android.systemui.tuner.TunerService.Tunable;
 import com.android.systemui.util.Utils;
@@ -65,9 +67,14 @@
     private QSTileLayout mRegularTileLayout;
 
     @Inject
-    public QuickQSPanel(@Named(VIEW_CONTEXT) Context context, AttributeSet attrs,
-            DumpController dumpController) {
-        super(context, attrs, dumpController);
+    public QuickQSPanel(
+            @Named(VIEW_CONTEXT) Context context,
+            AttributeSet attrs,
+            DumpController dumpController,
+            BroadcastDispatcher broadcastDispatcher,
+            QSLogger qsLogger
+    ) {
+        super(context, attrs, dumpController, broadcastDispatcher, qsLogger);
         if (mFooter != null) {
             removeView(mFooter.getView());
         }
@@ -85,20 +92,21 @@
             mHorizontalLinearLayout.setClipChildren(false);
             mHorizontalLinearLayout.setClipToPadding(false);
 
+            int marginSize = (int) mContext.getResources().getDimension(R.dimen.qqs_media_spacing);
+            mMediaPlayer = new QuickQSMediaPlayer(mContext, mHorizontalLinearLayout);
+            LayoutParams lp2 = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
+            lp2.setMarginEnd(marginSize);
+            lp2.setMarginStart(0);
+            mHorizontalLinearLayout.addView(mMediaPlayer.getView(), lp2);
+
             mTileLayout = new DoubleLineTileLayout(context);
             mMediaTileLayout = mTileLayout;
             mRegularTileLayout = new HeaderTileLayout(context);
             LayoutParams lp = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
-            lp.setMarginEnd(10);
-            lp.setMarginStart(0);
+            lp.setMarginEnd(0);
+            lp.setMarginStart(marginSize);
             mHorizontalLinearLayout.addView((View) mTileLayout, lp);
 
-            mMediaPlayer = new QuickQSMediaPlayer(mContext, mHorizontalLinearLayout);
-            LayoutParams lp2 = new LayoutParams(0, LayoutParams.MATCH_PARENT, 1);
-            lp2.setMarginEnd(0);
-            lp2.setMarginStart(25);
-            mHorizontalLinearLayout.addView(mMediaPlayer.getView(), lp2);
-
             sDefaultMaxTiles = getResources().getInteger(R.integer.quick_qs_panel_max_columns);
 
             mTileLayout.setListening(mListening);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
index 37743ec..9f59277 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/TileLayout.java
@@ -1,5 +1,7 @@
 package com.android.systemui.qs;
 
+import static com.android.systemui.util.Utils.useQsMediaPlayer;
+
 import android.content.Context;
 import android.content.res.Resources;
 import android.provider.Settings;
@@ -42,7 +44,8 @@
     public TileLayout(Context context, AttributeSet attrs) {
         super(context, attrs);
         setFocusableInTouchMode(true);
-        mLessRows = Settings.System.getInt(context.getContentResolver(), "qs_less_rows", 0) != 0;
+        mLessRows = (Settings.System.getInt(context.getContentResolver(), "qs_less_rows", 0) != 0)
+                || useQsMediaPlayer(context);
         updateResources();
 
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
index 557c64b..21a424c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/CustomTile.java
@@ -83,7 +83,7 @@
         mTile = new Tile();
         updateDefaultTileAndIcon();
         mServiceManager = host.getTileServices().getTileWrapper(this);
-        if (mServiceManager.isBooleanTile()) {
+        if (mServiceManager.isToggleableTile()) {
             // Replace states with BooleanState
             resetStates();
         }
@@ -210,8 +210,10 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         if (mListening == listening) return;
         mListening = listening;
+
         try {
             if (listening) {
                 updateDefaultTileAndIcon();
@@ -253,7 +255,7 @@
 
     @Override
     public State newTileState() {
-        if (mServiceManager != null && mServiceManager.isBooleanTile()) {
+        if (mServiceManager != null && mServiceManager.isToggleableTile()) {
             return new BooleanState();
         }
         return new State();
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
index ad79cad..17b0251 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileLifecycleManager.java
@@ -141,16 +141,16 @@
     /**
      * Determines whether the associated TileService is a Boolean Tile.
      *
-     * @return true if {@link TileService#META_DATA_BOOLEAN_TILE} is set to {@code true} for this
+     * @return true if {@link TileService#META_DATA_TOGGLEABLE_TILE} is set to {@code true} for this
      *         tile
-     * @see TileService#META_DATA_BOOLEAN_TILE
+     * @see TileService#META_DATA_TOGGLEABLE_TILE
      */
-    public boolean isBooleanTile() {
+    public boolean isToggleableTile() {
         try {
             ServiceInfo info = mPackageManagerAdapter.getServiceInfo(mIntent.getComponent(),
                     PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.GET_META_DATA);
             return info.metaData != null
-                    && info.metaData.getBoolean(TileService.META_DATA_BOOLEAN_TILE, false);
+                    && info.metaData.getBoolean(TileService.META_DATA_TOGGLEABLE_TILE, false);
         } catch (PackageManager.NameNotFoundException e) {
             return false;
         }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
index 1902d65..cfa8fb6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/external/TileServiceManager.java
@@ -124,8 +124,8 @@
         return mStateManager.isActiveTile();
     }
 
-    public boolean isBooleanTile() {
-        return mStateManager.isBooleanTile();
+    public boolean isToggleableTile() {
+        return mStateManager.isToggleableTile();
     }
 
     public void setShowingDialog(boolean dialog) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt
new file mode 100644
index 0000000..ab8de26
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/qs/logging/QSLogger.kt
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2019 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.logging
+
+import android.service.quicksettings.Tile
+import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.LogLevel
+import com.android.systemui.log.LogLevel.DEBUG
+import com.android.systemui.log.LogLevel.VERBOSE
+import com.android.systemui.log.LogMessage
+import com.android.systemui.log.dagger.QSLog
+import com.android.systemui.plugins.qs.QSTile
+import com.android.systemui.statusbar.StatusBarState
+import javax.inject.Inject
+
+private const val TAG = "QSLog"
+
+class QSLogger @Inject constructor(
+    @QSLog private val buffer: LogBuffer
+) {
+
+    fun logTileAdded(tileSpec: String) {
+        log(DEBUG, {
+            str1 = tileSpec
+        }, {
+            "[$str1] Tile added"
+        })
+    }
+
+    fun logTileDestroyed(tileSpec: String, reason: String) {
+        log(DEBUG, {
+            str1 = tileSpec
+            str2 = reason
+        }, {
+            "[$str1] Tile destroyed. Reason: $str2"
+        })
+    }
+
+    fun logTileChangeListening(tileSpec: String, listening: Boolean) {
+        log(VERBOSE, {
+            bool1 = listening
+            str1 = tileSpec
+        }, {
+            "[$str1] Tile listening=$bool1"
+        })
+    }
+
+    fun logAllTilesChangeListening(listening: Boolean, containerName: String, allSpecs: String) {
+        log(DEBUG, {
+            bool1 = listening
+            str1 = containerName
+            str2 = allSpecs
+        }, {
+            "Tiles listening=$bool1 in $str1. $str2"
+        })
+    }
+
+    fun logTileClick(tileSpec: String, statusBarState: Int, state: Int) {
+        log(DEBUG, {
+            str1 = tileSpec
+            int1 = statusBarState
+            str2 = StatusBarState.toShortString(statusBarState)
+            str3 = toStateString(state)
+        }, {
+            "[$str1] Tile clicked. StatusBarState=$str2. TileState=$str3"
+        })
+    }
+
+    fun logTileSecondaryClick(tileSpec: String, statusBarState: Int, state: Int) {
+        log(DEBUG, {
+            str1 = tileSpec
+            int1 = statusBarState
+            str2 = StatusBarState.toShortString(statusBarState)
+            str3 = toStateString(state)
+        }, {
+            "[$str1] Tile long clicked. StatusBarState=$str2. TileState=$str3"
+        })
+    }
+
+    fun logTileLongClick(tileSpec: String, statusBarState: Int, state: Int) {
+        log(DEBUG, {
+            str1 = tileSpec
+            int1 = statusBarState
+            str2 = StatusBarState.toShortString(statusBarState)
+            str3 = toStateString(state)
+        }, {
+            "[$str1] Tile long clicked. StatusBarState=$str2. TileState=$str3"
+        })
+    }
+
+    fun logTileUpdated(tileSpec: String, state: QSTile.State) {
+        log(VERBOSE, {
+            str1 = tileSpec
+            str2 = state.label.toString()
+            str3 = state.icon.toString()
+            int1 = state.state
+            if (state is QSTile.SignalState) {
+                bool1 = true
+                bool2 = state.activityIn
+                bool3 = state.activityOut
+            }
+        }, {
+            "[$str1] Tile updated. Label=$str2. State=$int1. Icon=$str3." +
+                if (bool1) " Activity in/out=$bool2/$bool3" else ""
+        })
+    }
+
+    fun logPanelExpanded(expanded: Boolean, containerName: String) {
+        log(DEBUG, {
+            str1 = containerName
+            bool1 = expanded
+        }, {
+            "$str1 expanded=$bool1"
+        })
+    }
+
+    private fun toStateString(state: Int): String {
+        return when (state) {
+            Tile.STATE_ACTIVE -> "active"
+            Tile.STATE_INACTIVE -> "inactive"
+            Tile.STATE_UNAVAILABLE -> "unavailable"
+            else -> "wrong state"
+        }
+    }
+
+    private inline fun log(
+        logLevel: LogLevel,
+        initializer: LogMessage.() -> Unit,
+        noinline printer: LogMessage.() -> String
+    ) {
+        buffer.log(TAG, logLevel, initializer, printer)
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
index 2b53727..554672d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSFactoryImpl.java
@@ -16,7 +16,6 @@
 
 import android.content.Context;
 import android.os.Build;
-import android.provider.Settings;
 import android.util.Log;
 import android.view.ContextThemeWrapper;
 
@@ -33,7 +32,6 @@
 import com.android.systemui.qs.tiles.CastTile;
 import com.android.systemui.qs.tiles.CellularTile;
 import com.android.systemui.qs.tiles.ColorInversionTile;
-import com.android.systemui.qs.tiles.ControlsTile;
 import com.android.systemui.qs.tiles.DataSaverTile;
 import com.android.systemui.qs.tiles.DndTile;
 import com.android.systemui.qs.tiles.FlashlightTile;
@@ -60,7 +58,6 @@
 
     private final Provider<WifiTile> mWifiTileProvider;
     private final Provider<BluetoothTile> mBluetoothTileProvider;
-    private final Provider<ControlsTile> mControlsTileProvider;
     private final Provider<CellularTile> mCellularTileProvider;
     private final Provider<DndTile> mDndTileProvider;
     private final Provider<ColorInversionTile> mColorInversionTileProvider;
@@ -85,7 +82,6 @@
     @Inject
     public QSFactoryImpl(Provider<WifiTile> wifiTileProvider,
             Provider<BluetoothTile> bluetoothTileProvider,
-            Provider<ControlsTile> controlsTileProvider,
             Provider<CellularTile> cellularTileProvider,
             Provider<DndTile> dndTileProvider,
             Provider<ColorInversionTile> colorInversionTileProvider,
@@ -106,7 +102,6 @@
             Provider<ScreenRecordTile> screenRecordTileProvider) {
         mWifiTileProvider = wifiTileProvider;
         mBluetoothTileProvider = bluetoothTileProvider;
-        mControlsTileProvider = controlsTileProvider;
         mCellularTileProvider = cellularTileProvider;
         mDndTileProvider = dndTileProvider;
         mColorInversionTileProvider = colorInversionTileProvider;
@@ -146,11 +141,6 @@
                 return mWifiTileProvider.get();
             case "bt":
                 return mBluetoothTileProvider.get();
-            case "controls":
-                if (Settings.System.getInt(mHost.getContext().getContentResolver(),
-                        "npv_plugin_flag", 0) == 3) {
-                    return mControlsTileProvider.get();
-                } else return null;
             case "cell":
                 return mCellularTileProvider.get();
             case "dnd":
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
index 88c7964..31526bf 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSIconViewImpl.java
@@ -14,12 +14,10 @@
 
 package com.android.systemui.qs.tileimpl;
 
-import static com.android.systemui.qs.QSColorControllerKt.colorIcon;
 import static com.android.systemui.qs.tileimpl.QSTileImpl.getColorForState;
 
 import android.animation.Animator;
 import android.animation.AnimatorListenerAdapter;
-import android.animation.ArgbEvaluator;
 import android.animation.ValueAnimator;
 import android.content.Context;
 import android.content.res.ColorStateList;
@@ -150,15 +148,10 @@
             iv.clearColorFilter();
         }
         if (state.state != mState) {
-            int color = getColor(state.state, state.colorActive);
+            int color = getColor(state.state);
             mState = state.state;
             if (mTint != 0 && allowAnimations && shouldAnimate(iv)) {
-                if (colorIcon()) {
-                    animateColor(mTint, color, iv, () -> updateIcon(iv, state, allowAnimations));
-                } else {
-                    animateGrayScale(mTint, color, iv,
-                            () -> updateIcon(iv, state, allowAnimations));
-                }
+                animateGrayScale(mTint, color, iv, () -> updateIcon(iv, state, allowAnimations));
                 mTint = color;
             } else {
                 if (iv instanceof AlphaControlledSlashImageView) {
@@ -175,12 +168,8 @@
         }
     }
 
-    protected int getColor(int state, int colorActive) {
-        return getColorForState(getContext(), state, colorActive);
-    }
-
     protected int getColor(int state) {
-        return getColor(state, -1);
+        return getColorForState(getContext(), state);
     }
 
     private void animateGrayScale(int fromColor, int toColor, ImageView iv,
@@ -217,37 +206,6 @@
         }
     }
 
-    private void animateColor(int fromColor, int toColor, ImageView iv,
-            final Runnable endRunnable) {
-        if (iv instanceof AlphaControlledSlashImageView) {
-            ((AlphaControlledSlashImageView) iv)
-                    .setFinalImageTintList(ColorStateList.valueOf(toColor));
-        }
-        if (mAnimationEnabled && ValueAnimator.areAnimatorsEnabled()) {
-
-
-            ValueAnimator anim = ValueAnimator.ofFloat(0, 1);
-            anim.setDuration(QS_ANIM_LENGTH);
-            anim.addUpdateListener(animation -> {
-                float fraction = animation.getAnimatedFraction();
-                int color = (int) ArgbEvaluator.getInstance().evaluate(fraction, fromColor,
-                        toColor);
-
-                setTint(iv, color);
-            });
-            anim.addListener(new AnimatorListenerAdapter() {
-                @Override
-                public void onAnimationEnd(Animator animation) {
-                    endRunnable.run();
-                }
-            });
-            anim.start();
-        } else {
-            setTint(iv, toColor);
-            endRunnable.run();
-        }
-    }
-
     public static void setTint(ImageView iv, int color) {
         iv.setImageTintList(ColorStateList.valueOf(color));
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
index fda9e5b..8feee10 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileBaseView.java
@@ -13,8 +13,6 @@
  */
 package com.android.systemui.qs.tileimpl;
 
-import static com.android.systemui.qs.QSColorControllerKt.colorIcon;
-import static com.android.systemui.qs.QSColorControllerKt.overrideColor;
 import static com.android.systemui.qs.tileimpl.QSIconViewImpl.QS_ANIM_LENGTH;
 
 import android.animation.ValueAnimator;
@@ -75,8 +73,6 @@
     private int mCircleColor;
     private int mBgSize;
 
-    private final boolean mQsColors = overrideColor();
-    private final boolean mQSIcons = colorIcon();
 
     public QSTileBaseView(Context context, QSIconView icon) {
         this(context, icon, false);
@@ -211,7 +207,7 @@
     }
 
     protected void handleStateChanged(QSTile.State state) {
-        int circleColor = getCircleColor(state.state, mQsColors ? state.colorActive : -1);
+        int circleColor = getCircleColor(state.state);
         boolean allowAnimations = animationsEnabled();
         if (circleColor != mCircleColor) {
             if (allowAnimations) {
@@ -280,11 +276,10 @@
         return mLocInScreen[1] >= -getHeight();
     }
 
-    private int getCircleColor(int state, int colorActive) {
+    private int getCircleColor(int state) {
         switch (state) {
             case Tile.STATE_ACTIVE:
-                int color = (colorActive == -1) ? mColorActive : colorActive;
-                return mQsColors && mQSIcons ? Utils.applyAlpha(0.5f, color) : color;
+                return mColorActive;
             case Tile.STATE_INACTIVE:
             case Tile.STATE_UNAVAILABLE:
                 return mColorDisabled;
@@ -294,10 +289,6 @@
         }
     }
 
-    private int getCircleColor(int state) {
-        return getCircleColor(state, -1);
-    }
-
     @Override
     public void setClickable(boolean clickable) {
         super.setClickable(clickable);
@@ -333,6 +324,13 @@
         if (!TextUtils.isEmpty(mAccessibilityClass)) {
             info.setClassName(mAccessibilityClass);
             if (Switch.class.getName().equals(mAccessibilityClass)) {
+                String label = getResources().getString(
+                        mTileState ? R.string.switch_bar_on : R.string.switch_bar_off);
+                // Set the text here for tests in
+                // android.platform.test.scenario.sysui.quicksettings. Can be removed when
+                // UiObject2 has a new getStateDescription() API and tests are updated.
+                info.setText(label);
+                info.setChecked(mTileState);
                 info.setCheckable(true);
                 if (isLongClickable()) {
                     info.addAction(
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
index 1d37911..60f6647 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tileimpl/QSTileImpl.java
@@ -26,8 +26,9 @@
 import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.FIELD_STATUS_BAR_STATE;
 import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.TYPE_ACTION;
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
-import static com.android.systemui.qs.QSColorControllerKt.colorIcon;
 
+import android.annotation.CallSuper;
+import android.annotation.NonNull;
 import android.app.ActivityManager;
 import android.content.Context;
 import android.content.Intent;
@@ -42,7 +43,6 @@
 import android.util.Log;
 import android.util.SparseArray;
 
-import androidx.annotation.NonNull;
 import androidx.lifecycle.Lifecycle;
 import androidx.lifecycle.LifecycleOwner;
 import androidx.lifecycle.LifecycleRegistry;
@@ -55,7 +55,6 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.Dumpable;
 import com.android.systemui.Prefs;
-import com.android.systemui.R;
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.qs.DetailAdapter;
 import com.android.systemui.plugins.qs.QSIconView;
@@ -65,6 +64,7 @@
 import com.android.systemui.qs.PagedTileLayout.TilePage;
 import com.android.systemui.qs.QSHost;
 import com.android.systemui.qs.QuickStatusBarHeader;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tiles.QSSettingsControllerKt;
 import com.android.systemui.qs.tiles.QSSettingsPanel;
 
@@ -97,6 +97,7 @@
     private final MetricsLogger mMetricsLogger = Dependency.get(MetricsLogger.class);
     private final StatusBarStateController
             mStatusBarStateController = Dependency.get(StatusBarStateController.class);
+    private final QSLogger mQSLogger;
 
     private final ArrayList<Callback> mCallbacks = new ArrayList<>();
     private final Object mStaleListener = new Object();
@@ -111,10 +112,31 @@
 
     private final LifecycleRegistry mLifecycle = new LifecycleRegistry(this);
 
+    /**
+     * Provides a new {@link TState} of the appropriate type to use between this tile and the
+     * corresponding view.
+     *
+     * @return new state to use by the tile.
+     */
     public abstract TState newTileState();
 
+    /**
+     * Handles clicks by the user.
+     *
+     * Calls to the controller should be made here to set the new state of the device.
+     */
     abstract protected void handleClick();
 
+    /**
+     * Update state of the tile based on device state
+     *
+     * Called whenever the state of the tile needs to be updated, either after user
+     * interaction or from callbacks from the controller. It populates {@code state} with the
+     * information to display to the user.
+     *
+     * @param state {@link TState} to populate with information to display
+     * @param arg additional arguments needed to populate {@code state}
+     */
     abstract protected void handleUpdateState(TState state, Object arg);
 
     /**
@@ -137,6 +159,7 @@
         mState = newTileState();
         mTmpState = newTileState();
         mQSSettingsPanelOption = QSSettingsControllerKt.getQSSettingsPanelOption();
+        mQSLogger = host.getQSLogger();
     }
 
     protected final void resetStates() {
@@ -179,6 +202,12 @@
         return mHost;
     }
 
+    /**
+     * Return the {@link QSIconView} to be used by this tile's view.
+     *
+     * @param context view context for the view
+     * @return icon view for this tile
+     */
     public QSIconView createTileView(Context context) {
         return new QSIconViewImpl(context);
     }
@@ -218,6 +247,7 @@
         mMetricsLogger.write(populate(new LogMaker(ACTION_QS_CLICK).setType(TYPE_ACTION)
                 .addTaggedData(FIELD_STATUS_BAR_STATE,
                         mStatusBarStateController.getState())));
+        mQSLogger.logTileClick(mTileSpec, mStatusBarStateController.getState(), mState.state);
         mHandler.sendEmptyMessage(H.CLICK);
     }
 
@@ -225,6 +255,8 @@
         mMetricsLogger.write(populate(new LogMaker(ACTION_QS_SECONDARY_CLICK).setType(TYPE_ACTION)
                 .addTaggedData(FIELD_STATUS_BAR_STATE,
                         mStatusBarStateController.getState())));
+        mQSLogger.logTileSecondaryClick(mTileSpec, mStatusBarStateController.getState(),
+                mState.state);
         mHandler.sendEmptyMessage(H.SECONDARY_CLICK);
     }
 
@@ -232,6 +264,7 @@
         mMetricsLogger.write(populate(new LogMaker(ACTION_QS_LONG_PRESS).setType(TYPE_ACTION)
                 .addTaggedData(FIELD_STATUS_BAR_STATE,
                         mStatusBarStateController.getState())));
+        mQSLogger.logTileLongClick(mTileSpec, mStatusBarStateController.getState(), mState.state);
         mHandler.sendEmptyMessage(H.LONG_CLICK);
 
         Prefs.putInt(
@@ -300,11 +333,20 @@
         mCallbacks.clear();
     }
 
+    /**
+     * Handles secondary click on the tile.
+     *
+     * Defaults to {@link QSTileImpl#handleClick}
+     */
     protected void handleSecondaryClick() {
         // Default to normal click.
         handleClick();
     }
 
+    /**
+     * Handles long click on the tile by launching the {@link Intent} defined in
+     * {@link QSTileImpl#getLongClickIntent}
+     */
     protected void handleLongClick() {
         if (mQSSettingsPanelOption == QSSettingsPanel.USE_DETAIL) {
             showDetail(true);
@@ -314,12 +356,18 @@
                 getLongClickIntent(), 0);
     }
 
+    /**
+     * Returns an intent to be launched when the tile is long pressed.
+     *
+     * @return the intent to launch
+     */
     public abstract Intent getLongClickIntent();
 
     protected void handleRefreshState(Object arg) {
         handleUpdateState(mTmpState, arg);
         final boolean changed = mTmpState.copyTo(mState);
         if (changed) {
+            mQSLogger.logTileUpdated(mTileSpec, mState);
             handleStateChanged();
         }
         mHandler.removeMessages(H.STALE);
@@ -406,9 +454,15 @@
         mIsFullQs = 0;
     }
 
-    protected abstract void handleSetListening(boolean listening);
+    @CallSuper
+    protected void handleSetListening(boolean listening) {
+        if (mTileSpec != null) {
+            mQSLogger.logTileChangeListening(mTileSpec, listening);
+        }
+    }
 
     protected void handleDestroy() {
+        mQSLogger.logTileDestroyed(mTileSpec, "Handle destroy");
         if (mListeners.size() != 0) {
             handleSetListening(false);
         }
@@ -429,13 +483,13 @@
         }
     }
 
+    /**
+     * Provides a default label for the tile.
+     * @return default label for the tile.
+     */
     public abstract CharSequence getTileLabel();
 
     public static int getColorForState(Context context, int state) {
-        return getColorForState(context, state, -1);
-    }
-
-    public static int getColorForState(Context context, int state, int colorActive) {
         switch (state) {
             case Tile.STATE_UNAVAILABLE:
                 return Utils.getDisabled(context,
@@ -443,25 +497,13 @@
             case Tile.STATE_INACTIVE:
                 return Utils.getColorAttrDefaultColor(context, android.R.attr.textColorSecondary);
             case Tile.STATE_ACTIVE:
-                return getActiveColor(context, colorActive);
+                return Utils.getColorAttrDefaultColor(context, android.R.attr.colorPrimary);
             default:
                 Log.e("QSTile", "Invalid state " + state);
                 return 0;
         }
     }
 
-    private static int getActiveColor(Context context, int colorActive) {
-        if (colorIcon()) {
-            if (colorActive == -1) {
-                return Utils.getColorAccentDefaultColor(context);
-            } else {
-                return colorActive;
-            }
-        } else {
-            return Utils.getColorAttrDefaultColor(context, android.R.attr.colorPrimary);
-        }
-    }
-
     protected final class H extends Handler {
         private static final int ADD_CALLBACK = 1;
         private static final int CLICK = 2;
@@ -565,6 +607,12 @@
         public Drawable getInvisibleDrawable(Context context) {
             return mInvisibleDrawable;
         }
+
+        @Override
+        @NonNull
+        public String toString() {
+            return "DrawableIcon";
+        }
     }
 
     public static class DrawableIconWithRes extends DrawableIcon {
@@ -579,6 +627,12 @@
         public boolean equals(Object o) {
             return o instanceof DrawableIconWithRes && ((DrawableIconWithRes) o).mId == mId;
         }
+
+        @Override
+        @NonNull
+        public String toString() {
+            return String.format("DrawableIconWithRes[resId=0x%08x]", mId);
+        }
     }
 
     public static class ResourceIcon extends Icon {
@@ -615,6 +669,7 @@
         }
 
         @Override
+        @NonNull
         public String toString() {
             return String.format("ResourceIcon[resId=0x%08x]", mResId);
         }
@@ -633,6 +688,12 @@
             // workaround: get a clean state for every new AVD
             return context.getDrawable(mAnimatedResId).getConstantState().newDrawable();
         }
+
+        @Override
+        @NonNull
+        public String toString() {
+            return String.format("AnimationIcon[resId=0x%08x]", mResId);
+        }
     }
 
     /**
@@ -645,27 +706,4 @@
         pw.println(this.getClass().getSimpleName() + ":");
         pw.print("    "); pw.println(getState().toString());
     }
-
-    @Override
-    public void setColor(@ColorTile int color) {
-        int resId;
-        switch(color) {
-            case COLOR_TILE_RED:
-                resId = R.color.GM2_red_500;
-                break;
-            case COLOR_TILE_BLUE:
-                resId = R.color.GM2_blue_500;
-                break;
-            case COLOR_TILE_GREEN:
-                resId = R.color.GM2_green_500;
-                break;
-            case COLOR_TILE_YELLOW:
-                resId = R.color.GM2_yellow_500;
-                break;
-            default:
-                resId = -1;
-        }
-        mTmpState.colorActive = resId == -1 ? -1 : mContext.getColor(resId);
-        refreshState();
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
index 5e297e2..b24fdbf 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/AirplaneModeTile.java
@@ -130,6 +130,7 @@
     }
 
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         if (mListening == listening) return;
         mListening = listening;
         if (listening) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
index d62f10d..4449d48 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BatterySaverTile.java
@@ -74,6 +74,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         mSetting.setListening(listening);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
index 361b6c1..cc7aaea 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/BluetoothTile.java
@@ -82,10 +82,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     protected void handleClick() {
         // Secondary clicks are header clicks, just toggle.
         final boolean isEnabled = mState.value;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
index 58de057..4b53ae2 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CastTile.java
@@ -97,6 +97,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         if (DEBUG) Log.d(TAG, "handleSetListening " + listening);
         if (!listening) {
             mController.setDiscovering(false);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
index d5f86c9..bc03ca6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/CellularTile.java
@@ -26,6 +26,7 @@
 import android.provider.Settings;
 import android.service.quicksettings.Tile;
 import android.telephony.SubscriptionManager;
+import android.text.Html;
 import android.text.TextUtils;
 import android.view.LayoutInflater;
 import android.view.View;
@@ -90,10 +91,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public Intent getLongClickIntent() {
         if (getState().state == Tile.STATE_UNAVAILABLE) {
             return new Intent(Settings.ACTION_WIRELESS_SETTINGS);
@@ -205,12 +202,13 @@
 
     private CharSequence appendMobileDataType(CharSequence current, CharSequence dataType) {
         if (TextUtils.isEmpty(dataType)) {
-            return current;
+            return Html.fromHtml(current.toString(), 0);
         }
         if (TextUtils.isEmpty(current)) {
-            return dataType;
+            return Html.fromHtml(dataType.toString(), 0);
         }
-        return mContext.getString(R.string.mobile_carrier_text_format, current, dataType);
+        String concat = mContext.getString(R.string.mobile_carrier_text_format, current, dataType);
+        return Html.fromHtml(concat, 0);
     }
 
     private CharSequence getMobileDataContentName(CallbackInfo cb) {
@@ -251,14 +249,17 @@
 
         @Override
         public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
-                int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
-                String description, boolean isWide, int subId, boolean roaming) {
+                int qsType, boolean activityIn, boolean activityOut,
+                CharSequence typeContentDescription,
+                CharSequence typeContentDescriptionHtml, CharSequence description,
+                boolean isWide, int subId, boolean roaming) {
             if (qsIcon == null) {
                 // Not data sim, don't display.
                 return;
             }
             mInfo.dataSubscriptionName = mController.getMobileDataNetworkName();
-            mInfo.dataContentDescription = (description != null) ? typeContentDescription : null;
+            mInfo.dataContentDescription =
+                    (description != null) ? typeContentDescriptionHtml : null;
             mInfo.activityIn = activityIn;
             mInfo.activityOut = activityOut;
             mInfo.roaming = roaming;
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
index ecb4048..9c0030d 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ColorInversionTile.java
@@ -66,6 +66,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         mSetting.setListening(listening);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ControlsTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ControlsTile.java
deleted file mode 100644
index 39ae66e..0000000
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ControlsTile.java
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * Copyright (C) 2014 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.tiles;
-
-import android.content.ComponentName;
-import android.content.Context;
-import android.content.Intent;
-import android.view.LayoutInflater;
-import android.view.View;
-import android.view.ViewGroup;
-import android.widget.FrameLayout;
-
-import com.android.systemui.R;
-import com.android.systemui.plugins.ActivityStarter;
-import com.android.systemui.plugins.NPVPlugin;
-import com.android.systemui.plugins.PluginListener;
-import com.android.systemui.plugins.qs.DetailAdapter;
-import com.android.systemui.plugins.qs.QSTile.BooleanState;
-import com.android.systemui.qs.QSHost;
-import com.android.systemui.qs.tileimpl.QSTileImpl;
-import com.android.systemui.shared.plugins.PluginManager;
-
-import javax.inject.Inject;
-
-
-/**
- * Temporary control test for prototyping
- */
-public class ControlsTile extends QSTileImpl<BooleanState> {
-    private ControlsDetailAdapter mDetailAdapter;
-    private final ActivityStarter mActivityStarter;
-    private PluginManager mPluginManager;
-    private NPVPlugin mPlugin;
-    private Intent mHomeAppIntent;
-
-    @Inject
-    public ControlsTile(QSHost host,
-            ActivityStarter activityStarter,
-            PluginManager pluginManager) {
-        super(host);
-        mActivityStarter = activityStarter;
-        mPluginManager = pluginManager;
-        mDetailAdapter = (ControlsDetailAdapter) createDetailAdapter();
-
-        mHomeAppIntent = new Intent(Intent.ACTION_VIEW);
-        mHomeAppIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
-        mHomeAppIntent.setComponent(new ComponentName("com.google.android.apps.chromecast.app",
-                "com.google.android.apps.chromecast.app.DiscoveryActivity"));
-    }
-
-    @Override
-    public DetailAdapter getDetailAdapter() {
-        return mDetailAdapter;
-    }
-
-    @Override
-    public BooleanState newTileState() {
-        return new BooleanState();
-    }
-
-    @Override
-    public void handleSetListening(boolean listening) {
-
-    }
-
-    @Override
-    public void setDetailListening(boolean listening) {
-        if (mPlugin == null) return;
-
-        mPlugin.setListening(listening);
-    }
-
-    @Override
-    protected void handleClick() {
-        showDetail(true);
-    }
-
-    @Override
-    public Intent getLongClickIntent() {
-        return mHomeAppIntent;
-    }
-
-    @Override
-    protected void handleSecondaryClick() {
-        showDetail(true);
-    }
-
-    @Override
-    public CharSequence getTileLabel() {
-        return "Controls";
-    }
-
-    @Override
-    protected void handleUpdateState(BooleanState state, Object arg) {
-        state.icon = ResourceIcon.get(R.drawable.ic_lightbulb_outline_gm2_24px);
-        state.label = "Controls";
-    }
-
-    @Override
-    public boolean supportsDetailView() {
-        return getDetailAdapter() != null && mQSSettingsPanelOption == QSSettingsPanel.OPEN_CLICK;
-    }
-
-    @Override
-    public int getMetricsCategory() {
-        return -1;
-    }
-
-    @Override
-    protected String composeChangeAnnouncement() {
-        if (mState.value) {
-            return "On";
-        } else {
-            return "Off";
-        }
-    }
-
-    @Override
-    public boolean isAvailable() {
-        return true;
-    }
-
-    @Override
-    protected DetailAdapter createDetailAdapter() {
-        mDetailAdapter = new ControlsDetailAdapter();
-        return mDetailAdapter;
-    }
-
-    private class ControlsDetailAdapter implements DetailAdapter {
-        private View mDetailView;
-        protected FrameLayout mHomeControlsLayout;
-
-        public CharSequence getTitle() {
-            return "Controls";
-        }
-
-        public Boolean getToggleState() {
-            return null;
-        }
-
-        public boolean getToggleEnabled() {
-            return false;
-        }
-
-        public View createDetailView(Context context, View convertView, final ViewGroup parent) {
-            if (convertView != null) return convertView;
-
-            mHomeControlsLayout = (FrameLayout) LayoutInflater.from(context).inflate(
-                    R.layout.home_controls, parent, false);
-            mHomeControlsLayout.setVisibility(View.VISIBLE);
-            parent.addView(mHomeControlsLayout);
-
-            mPluginManager.addPluginListener(
-                    new PluginListener<NPVPlugin>() {
-                        @Override
-                        public void onPluginConnected(NPVPlugin plugin,
-                                                      Context pluginContext) {
-                            mPlugin = plugin;
-                            mPlugin.attachToRoot(mHomeControlsLayout);
-                            mPlugin.setListening(true);
-                        }
-
-                        @Override
-                        public void onPluginDisconnected(NPVPlugin plugin) {
-                            mPlugin.setListening(false);
-                            mHomeControlsLayout.removeAllViews();
-
-                        }
-                    }, NPVPlugin.class, false);
-            return mHomeControlsLayout;
-        }
-
-        public Intent getSettingsIntent() {
-            return mHomeAppIntent;
-        }
-
-        public void setToggleState(boolean state) {
-
-        }
-
-        public int getMetricsCategory() {
-            return -1;
-        }
-
-        public boolean hasHeader() {
-            return false;
-        }
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
index 79996bc..8ba6084 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DataSaverTile.java
@@ -50,10 +50,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public Intent getLongClickIntent() {
         return new Intent(Settings.ACTION_DATA_SAVER_SETTINGS);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
index 9215da4..ebf45a6 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/DndTile.java
@@ -289,6 +289,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         if (mListening == listening) return;
         mListening = listening;
         if (mListening) {
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
index 792c364..27ccd7c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/FlashlightTile.java
@@ -58,10 +58,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     protected void handleUserSwitch(int newUserId) {
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
index fd6b936..0c86157 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/HotspotTile.java
@@ -21,6 +21,7 @@
 import android.content.Intent;
 import android.os.UserManager;
 import android.service.quicksettings.Tile;
+import android.util.Log;
 import android.widget.Switch;
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -68,6 +69,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         if (mListening == listening) return;
         mListening = listening;
         if (listening) {
@@ -201,6 +203,14 @@
             mCallbackInfo.numConnectedDevices = numDevices;
             refreshState(mCallbackInfo);
         }
+
+        @Override
+        public void onHotspotAvailabilityChanged(boolean available) {
+            if (!available) {
+                Log.d(TAG, "Tile removed. Hotspot no longer available");
+                mHost.removeTile(getTileSpec());
+            }
+        }
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
index e617867..02f364b 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/LocationTile.java
@@ -61,10 +61,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public Intent getLongClickIntent() {
         return new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java
index f0140ba..4bee075 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NfcTile.java
@@ -57,6 +57,7 @@
 
     @Override
     public void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         mListening = listening;
         if (mListening) {
             mBroadcastDispatcher.registerReceiver(mNfcReceiver,
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
index 241b375..bc1c1e1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/NightDisplayTile.java
@@ -190,6 +190,7 @@
 
     @Override
     protected void handleSetListening(boolean listening) {
+        super.handleSetListening(listening);
         mIsListening = listening;
         if (listening) {
             mListener.setCallback(this);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
index 7ca1e44..2557226 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/RotationLockTile.java
@@ -51,9 +51,6 @@
         return new BooleanState();
     }
 
-    public void handleSetListening(boolean listening) {
-    }
-
     @Override
     public Intent getLongClickIntent() {
         return new Intent(Settings.ACTION_DISPLAY_SETTINGS);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java
index 596c3b9..88a30a1 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/ScreenRecordTile.java
@@ -105,10 +105,6 @@
     }
 
     @Override
-    protected void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public CharSequence getTileLabel() {
         return mContext.getString(R.string.quick_settings_screen_record_label);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
index 8f1769b..b90ca01 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UiModeNightTile.java
@@ -32,10 +32,11 @@
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 
-import javax.inject.Inject;
 import java.time.LocalTime;
 import java.time.format.DateTimeFormatter;
 
+import javax.inject.Inject;
+
 /**
  * Quick Settings tile for: Night Mode / Dark Theme / Dark Mode.
  *
@@ -141,10 +142,6 @@
     }
 
     @Override
-    protected void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public CharSequence getTileLabel() {
         return getState().label;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java
index 64fe54a..7d4343c 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserDetailItemView.java
@@ -128,7 +128,7 @@
     @Override
     protected void onConfigurationChanged(Configuration newConfig) {
         super.onConfigurationChanged(newConfig);
-        FontSizeUtils.updateFontSize(mName, R.dimen.qs_detail_item_secondary_text_size);
+        FontSizeUtils.updateFontSize(mName, getFontSizeDimen());
     }
 
     @Override
@@ -146,4 +146,8 @@
     public boolean hasOverlappingRendering() {
         return false;
     }
+
+    protected int getFontSizeDimen() {
+        return R.dimen.qs_detail_item_secondary_text_size;
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
index 7c1ffde..aab30d4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/UserTile.java
@@ -73,10 +73,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public CharSequence getTileLabel() {
         return getState().label;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
index 6e8dcf3..39bfd5a 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WifiTile.java
@@ -84,10 +84,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public void setDetailListening(boolean listening) {
         if (listening) {
             mWifiController.addAccessPointCallback(mDetailAdapter);
diff --git a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
index e54ee51..318c0c4 100644
--- a/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
+++ b/packages/SystemUI/src/com/android/systemui/qs/tiles/WorkModeTile.java
@@ -50,10 +50,6 @@
     }
 
     @Override
-    public void handleSetListening(boolean listening) {
-    }
-
-    @Override
     public Intent getLongClickIntent() {
         return new Intent(Settings.ACTION_MANAGED_PROFILE_SETTINGS);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/recents/TriangleShape.java b/packages/SystemUI/src/com/android/systemui/recents/TriangleShape.java
index de8e6ea..7ebebaa 100644
--- a/packages/SystemUI/src/com/android/systemui/recents/TriangleShape.java
+++ b/packages/SystemUI/src/com/android/systemui/recents/TriangleShape.java
@@ -70,6 +70,6 @@
 
     @Override
     public void getOutline(@NonNull Outline outline) {
-        outline.setConvexPath(mTriangularPath);
+        outline.setPath(mTriangularPath);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
index b091ad8..626f298 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/RecordingService.java
@@ -16,7 +16,6 @@
 
 package com.android.systemui.screenrecord;
 
-import android.app.Activity;
 import android.app.Notification;
 import android.app.NotificationChannel;
 import android.app.NotificationManager;
@@ -26,16 +25,21 @@
 import android.content.ContentValues;
 import android.content.Context;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.graphics.Bitmap;
 import android.graphics.drawable.Icon;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.VirtualDisplay;
 import android.media.MediaRecorder;
+import android.media.projection.IMediaProjection;
+import android.media.projection.IMediaProjectionManager;
 import android.media.projection.MediaProjection;
 import android.media.projection.MediaProjectionManager;
 import android.net.Uri;
 import android.os.Bundle;
 import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.provider.MediaStore;
 import android.provider.Settings;
 import android.util.DisplayMetrics;
@@ -83,7 +87,6 @@
     private static final int AUDIO_SAMPLE_RATE = 44100;
 
     private final RecordingController mController;
-    private MediaProjectionManager mMediaProjectionManager;
     private MediaProjection mMediaProjection;
     private Surface mInputSurface;
     private VirtualDisplay mVirtualDisplay;
@@ -134,13 +137,30 @@
 
         switch (action) {
             case ACTION_START:
-                int resultCode = intent.getIntExtra(EXTRA_RESULT_CODE, Activity.RESULT_CANCELED);
                 mUseAudio = intent.getBooleanExtra(EXTRA_USE_AUDIO, false);
                 mShowTaps = intent.getBooleanExtra(EXTRA_SHOW_TAPS, false);
-                Intent data = intent.getParcelableExtra(EXTRA_DATA);
-                if (data != null) {
-                    mMediaProjection = mMediaProjectionManager.getMediaProjection(resultCode, data);
+                try {
+                    IBinder b = ServiceManager.getService(MEDIA_PROJECTION_SERVICE);
+                    IMediaProjectionManager mediaService =
+                            IMediaProjectionManager.Stub.asInterface(b);
+                    IMediaProjection proj = mediaService.createProjection(getUserId(),
+                            getPackageName(),
+                            MediaProjectionManager.TYPE_SCREEN_CAPTURE, false);
+                    IBinder projection = proj.asBinder();
+                    if (projection == null) {
+                        Log.e(TAG, "Projection was null");
+                        Toast.makeText(this, R.string.screenrecord_start_error, Toast.LENGTH_LONG)
+                                .show();
+                        return Service.START_NOT_STICKY;
+                    }
+                    mMediaProjection = new MediaProjection(getApplicationContext(),
+                            IMediaProjection.Stub.asInterface(projection));
                     startRecording();
+                } catch (RemoteException e) {
+                    e.printStackTrace();
+                    Toast.makeText(this, R.string.screenrecord_start_error, Toast.LENGTH_LONG)
+                            .show();
+                    return Service.START_NOT_STICKY;
                 }
                 break;
 
@@ -195,9 +215,6 @@
     @Override
     public void onCreate() {
         super.onCreate();
-
-        mMediaProjectionManager =
-                (MediaProjectionManager) getSystemService(Context.MEDIA_PROJECTION_SERVICE);
     }
 
     /**
@@ -269,6 +286,7 @@
     }
 
     private void createRecordingNotification() {
+        Resources res = getResources();
         NotificationChannel channel = new NotificationChannel(
                 CHANNEL_ID,
                 getString(R.string.screenrecord_name),
@@ -281,11 +299,15 @@
 
         Bundle extras = new Bundle();
         extras.putString(Notification.EXTRA_SUBSTITUTE_APP_NAME,
-                getResources().getString(R.string.screenrecord_name));
+                res.getString(R.string.screenrecord_name));
+
+        String notificationTitle = mUseAudio
+                ? res.getString(R.string.screenrecord_ongoing_screen_and_audio)
+                : res.getString(R.string.screenrecord_ongoing_screen_only);
 
         mRecordingNotificationBuilder = new Notification.Builder(this, CHANNEL_ID)
                 .setSmallIcon(R.drawable.ic_screenrecord)
-                .setContentTitle(getResources().getString(R.string.screenrecord_name))
+                .setContentTitle(notificationTitle)
                 .setContentText(getResources().getString(R.string.screenrecord_stop_text))
                 .setUsesChronometer(true)
                 .setColorized(true)
@@ -332,8 +354,7 @@
 
         Notification.Builder builder = new Notification.Builder(this, CHANNEL_ID)
                 .setSmallIcon(R.drawable.ic_screenrecord)
-                .setContentTitle(getResources().getString(R.string.screenrecord_name))
-                .setContentText(getResources().getString(R.string.screenrecord_save_message))
+                .setContentTitle(getResources().getString(R.string.screenrecord_save_message))
                 .setContentIntent(PendingIntent.getActivity(
                         this,
                         REQUEST_CODE,
diff --git a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
index 8324986..566f12b 100644
--- a/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
+++ b/packages/SystemUI/src/com/android/systemui/screenrecord/ScreenRecordDialog.java
@@ -16,15 +16,14 @@
 
 package com.android.systemui.screenrecord;
 
-import android.Manifest;
 import android.app.Activity;
 import android.app.PendingIntent;
-import android.content.Context;
-import android.content.Intent;
-import android.content.pm.PackageManager;
-import android.media.projection.MediaProjectionManager;
 import android.os.Bundle;
-import android.widget.Toast;
+import android.view.Gravity;
+import android.view.ViewGroup;
+import android.view.Window;
+import android.widget.Button;
+import android.widget.Switch;
 
 import com.android.systemui.R;
 
@@ -34,15 +33,11 @@
  * Activity to select screen recording options
  */
 public class ScreenRecordDialog extends Activity {
-    private static final int REQUEST_CODE_VIDEO_ONLY = 200;
-    private static final int REQUEST_CODE_VIDEO_TAPS = 201;
-    private static final int REQUEST_CODE_PERMISSIONS = 299;
-    private static final int REQUEST_CODE_VIDEO_AUDIO = 300;
-    private static final int REQUEST_CODE_VIDEO_AUDIO_TAPS = 301;
-    private static final int REQUEST_CODE_PERMISSIONS_AUDIO = 399;
     private static final long DELAY_MS = 3000;
 
     private final RecordingController mController;
+    private Switch mAudioSwitch;
+    private Switch mTapsSwitch;
 
     @Inject
     public ScreenRecordDialog(RecordingController controller) {
@@ -52,81 +47,42 @@
     @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
-        requestScreenCapture();
+
+        Window window = getWindow();
+        // Inflate the decor view, so the attributes below are not overwritten by the theme.
+        window.getDecorView();
+        window.setLayout(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT);
+        window.setGravity(Gravity.TOP);
+
+        setContentView(R.layout.screen_record_dialog);
+
+        Button cancelBtn = findViewById(R.id.button_cancel);
+        cancelBtn.setOnClickListener(v -> {
+            finish();
+        });
+
+        Button startBtn = findViewById(R.id.button_start);
+        startBtn.setOnClickListener(v -> {
+            requestScreenCapture();
+            finish();
+        });
+
+        mAudioSwitch = findViewById(R.id.screenrecord_audio_switch);
+        mTapsSwitch = findViewById(R.id.screenrecord_taps_switch);
     }
 
     private void requestScreenCapture() {
-        MediaProjectionManager mediaProjectionManager = (MediaProjectionManager) getSystemService(
-                Context.MEDIA_PROJECTION_SERVICE);
-        Intent permissionIntent = mediaProjectionManager.createScreenCaptureIntent();
-
-        // TODO get saved settings
-        boolean useAudio = false;
-        boolean showTaps = false;
-        if (useAudio) {
-            startActivityForResult(permissionIntent,
-                    showTaps ? REQUEST_CODE_VIDEO_AUDIO_TAPS : REQUEST_CODE_VIDEO_AUDIO);
-        } else {
-            startActivityForResult(permissionIntent,
-                    showTaps ? REQUEST_CODE_VIDEO_TAPS : REQUEST_CODE_VIDEO_ONLY);
-        }
-    }
-
-    @Override
-    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
-        boolean showTaps = (requestCode == REQUEST_CODE_VIDEO_TAPS
-                || requestCode == REQUEST_CODE_VIDEO_AUDIO_TAPS);
-        boolean useAudio = (requestCode == REQUEST_CODE_VIDEO_AUDIO
-                || requestCode == REQUEST_CODE_VIDEO_AUDIO_TAPS);
-        switch (requestCode) {
-            case REQUEST_CODE_VIDEO_TAPS:
-            case REQUEST_CODE_VIDEO_AUDIO_TAPS:
-            case REQUEST_CODE_VIDEO_ONLY:
-            case REQUEST_CODE_VIDEO_AUDIO:
-                if (resultCode == RESULT_OK) {
-                    PendingIntent startIntent = PendingIntent.getForegroundService(
-                            this, RecordingService.REQUEST_CODE, RecordingService.getStartIntent(
-                                    ScreenRecordDialog.this, resultCode, data, useAudio,
-                                    showTaps),
-                            PendingIntent.FLAG_UPDATE_CURRENT
-                            );
-                    PendingIntent stopIntent = PendingIntent.getService(
-                            this, RecordingService.REQUEST_CODE,
-                            RecordingService.getStopIntent(this),
-                            PendingIntent.FLAG_UPDATE_CURRENT);
-                    mController.startCountdown(DELAY_MS, startIntent, stopIntent);
-                } else {
-                    Toast.makeText(this,
-                            getResources().getString(R.string.screenrecord_permission_error),
-                            Toast.LENGTH_SHORT).show();
-                }
-                finish();
-                break;
-            case REQUEST_CODE_PERMISSIONS:
-                int permission = checkSelfPermission(Manifest.permission.WRITE_EXTERNAL_STORAGE);
-                if (permission != PackageManager.PERMISSION_GRANTED) {
-                    Toast.makeText(this,
-                            getResources().getString(R.string.screenrecord_permission_error),
-                            Toast.LENGTH_SHORT).show();
-                    finish();
-                } else {
-                    requestScreenCapture();
-                }
-                break;
-            case REQUEST_CODE_PERMISSIONS_AUDIO:
-                int videoPermission = checkSelfPermission(
-                        Manifest.permission.WRITE_EXTERNAL_STORAGE);
-                int audioPermission = checkSelfPermission(Manifest.permission.RECORD_AUDIO);
-                if (videoPermission != PackageManager.PERMISSION_GRANTED
-                        || audioPermission != PackageManager.PERMISSION_GRANTED) {
-                    Toast.makeText(this,
-                            getResources().getString(R.string.screenrecord_permission_error),
-                            Toast.LENGTH_SHORT).show();
-                    finish();
-                } else {
-                    requestScreenCapture();
-                }
-                break;
-        }
+        boolean useAudio = mAudioSwitch.isChecked();
+        boolean showTaps = mTapsSwitch.isChecked();
+        PendingIntent startIntent = PendingIntent.getForegroundService(this,
+                RecordingService.REQUEST_CODE,
+                RecordingService.getStartIntent(
+                        ScreenRecordDialog.this, RESULT_OK, null, useAudio, showTaps),
+                PendingIntent.FLAG_UPDATE_CURRENT);
+        PendingIntent stopIntent = PendingIntent.getService(this,
+                RecordingService.REQUEST_CODE,
+                RecordingService.getStopIntent(this),
+                PendingIntent.FLAG_UPDATE_CURRENT);
+        mController.startCountdown(DELAY_MS, startIntent, stopIntent);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
index 880b8f8..197fe21 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/GlobalScreenshot.java
@@ -69,6 +69,7 @@
 import android.view.ViewTreeObserver;
 import android.view.WindowManager;
 import android.view.animation.Interpolator;
+import android.widget.FrameLayout;
 import android.widget.HorizontalScrollView;
 import android.widget.ImageView;
 import android.widget.LinearLayout;
@@ -143,7 +144,7 @@
     private static final float BACKGROUND_ALPHA = 0.5f;
     private static final float SCREENSHOT_DROP_IN_MIN_SCALE = 0.725f;
     private static final float ROUNDED_CORNER_RADIUS = .05f;
-    private static final long SCREENSHOT_CORNER_TIMEOUT_MILLIS = 8000;
+    private static final long SCREENSHOT_CORNER_TIMEOUT_MILLIS = 6000;
     private static final int MESSAGE_CORNER_TIMEOUT = 2;
 
     private final ScreenshotNotificationsController mNotificationsController;
@@ -162,6 +163,7 @@
     private final HorizontalScrollView mActionsContainer;
     private final LinearLayout mActionsView;
     private final ImageView mBackgroundProtection;
+    private final FrameLayout mDismissButton;
 
     private Bitmap mScreenBitmap;
     private AnimatorSet mScreenshotAnimation;
@@ -170,6 +172,7 @@
     private float mScreenshotOffsetYPx;
     private float mScreenshotHeightPx;
     private float mCornerScale;
+    private float mDismissButtonSize;
 
     private AsyncTask<Void, Void, Void> mSaveInBgTask;
 
@@ -216,19 +219,14 @@
         mActionsView = mScreenshotLayout.findViewById(R.id.global_screenshot_actions);
         mBackgroundProtection = mScreenshotLayout.findViewById(
                 R.id.global_screenshot_actions_background);
+        mDismissButton = mScreenshotLayout.findViewById(R.id.global_screenshot_dismiss_button);
+        mDismissButton.setOnClickListener(view -> clearScreenshot("dismiss_button"));
 
         mScreenshotFlash = mScreenshotLayout.findViewById(R.id.global_screenshot_flash);
         mScreenshotSelectorView = mScreenshotLayout.findViewById(R.id.global_screenshot_selector);
         mScreenshotLayout.setFocusable(true);
         mScreenshotSelectorView.setFocusable(true);
         mScreenshotSelectorView.setFocusableInTouchMode(true);
-        mScreenshotLayout.setOnTouchListener((v, event) -> {
-            if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
-                clearScreenshot("tap_outside");
-            }
-            // Intercept and ignore all touch events
-            return true;
-        });
 
         // Setup the window that we are going to use
         mWindowLayoutParams = new WindowManager.LayoutParams(
@@ -254,6 +252,8 @@
                 resources.getDimensionPixelSize(R.dimen.screenshot_action_container_offset_y);
         mCornerScale = resources.getDimensionPixelSize(R.dimen.global_screenshot_x_scale)
                 / (float) mDisplayMetrics.widthPixels;
+        mDismissButtonSize = resources.getDimensionPixelSize(
+                R.dimen.screenshot_dismiss_button_tappable_size);
 
         // Setup the Camera shutter sound
         mCameraSound = new MediaActionSound();
@@ -271,6 +271,9 @@
         Rect actionsRect = new Rect();
         mActionsContainer.getBoundsOnScreen(actionsRect);
         touchRegion.op(actionsRect, Region.Op.UNION);
+        Rect dismissRect = new Rect();
+        mDismissButton.getBoundsOnScreen(dismissRect);
+        touchRegion.op(dismissRect, Region.Op.UNION);
 
         inoutInfo.touchableRegion.set(touchRegion);
     }
@@ -408,6 +411,7 @@
         mActionsContainer.setVisibility(View.GONE);
         mBackgroundView.setVisibility(View.GONE);
         mBackgroundProtection.setAlpha(0f);
+        mDismissButton.setVisibility(View.GONE);
         mScreenshotView.setVisibility(View.GONE);
         mScreenshotView.setLayerType(View.LAYER_TYPE_NONE, null);
     }
@@ -438,27 +442,35 @@
 
         ValueAnimator screenshotDropInAnim = screenRect != null ? createRectAnimation(screenRect)
                 : createScreenshotDropInAnimation();
-        ValueAnimator screenshotFadeOutAnim = createScreenshotToCornerAnimation(w, h);
+        ValueAnimator screenshotToCornerAnimation = createScreenshotToCornerAnimation(w, h);
         mScreenshotAnimation = new AnimatorSet();
-        mScreenshotAnimation.playSequentially(screenshotDropInAnim, screenshotFadeOutAnim);
-        mScreenshotAnimation.addListener(new AnimatorListenerAdapter() {
+        mScreenshotAnimation.playSequentially(screenshotDropInAnim, screenshotToCornerAnimation);
+
+        saveScreenshotInWorkerThread(finisher, new ActionsReadyListener() {
             @Override
-            public void onAnimationEnd(Animator animation) {
-                // Save the screenshot once we have a bit of time now
-                saveScreenshotInWorkerThread(finisher, new ActionsReadyListener() {
-                    @Override
-                    void onActionsReady(Uri uri, List<Notification.Action> smartActions,
-                            List<Notification.Action> actions) {
-                        if (uri == null) {
-                            mNotificationsController.notifyScreenshotError(
-                                    R.string.screenshot_failed_to_capture_text);
+            void onActionsReady(Uri uri, List<Notification.Action> smartActions,
+                    List<Notification.Action> actions) {
+                if (uri == null) {
+                    mNotificationsController.notifyScreenshotError(
+                            R.string.screenshot_failed_to_capture_text);
+                } else {
+                    mScreenshotHandler.post(() -> {
+                        if (mScreenshotAnimation != null && mScreenshotAnimation.isRunning()) {
+                            mScreenshotAnimation.addListener(
+                                    new AnimatorListenerAdapter() {
+                                        @Override
+                                        public void onAnimationEnd(Animator animation) {
+                                            super.onAnimationEnd(animation);
+                                            createScreenshotActionsShadeAnimation(
+                                                    smartActions, actions).start();
+                                        }
+                                    });
                         } else {
-                            mScreenshotHandler.post(() ->
-                                    createScreenshotActionsShadeAnimation(smartActions,
-                                            actions).start());
+                            createScreenshotActionsShadeAnimation(smartActions,
+                                    actions).start();
                         }
-                    }
-                });
+                    });
+                }
                 mScreenshotHandler.removeMessages(MESSAGE_CORNER_TIMEOUT);
                 mScreenshotHandler.sendMessageDelayed(
                         mScreenshotHandler.obtainMessage(MESSAGE_CORNER_TIMEOUT),
@@ -615,6 +627,17 @@
             mScreenshotView.setTranslationX(t * finalPos.x);
             mScreenshotView.setTranslationY(t * finalPos.y);
         });
+        anim.addListener(new AnimatorListenerAdapter() {
+            @Override
+            public void onAnimationEnd(Animator animation) {
+                super.onAnimationEnd(animation);
+                Rect bounds = new Rect();
+                mScreenshotView.getBoundsOnScreen(bounds);
+                mDismissButton.setX(bounds.right - mDismissButtonSize / 2f);
+                mDismissButton.setY(bounds.top - mDismissButtonSize / 2f);
+                mDismissButton.setVisibility(View.VISIBLE);
+            }
+        });
         return anim;
     }
 
@@ -686,14 +709,6 @@
             mBackgroundProtection.setAlpha(t);
             mActionsContainer.setY(mDisplayMetrics.heightPixels - actionsViewHeight * t);
         });
-        animator.addListener(new AnimatorListenerAdapter() {
-            @Override
-            public void onAnimationEnd(Animator animation) {
-                super.onAnimationEnd(animation);
-                mScreenshotView.requestFocus();
-                mScreenshotView.setElevation(50);
-            }
-        });
         return animator;
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
index e6082dd..92236ae 100644
--- a/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
+++ b/packages/SystemUI/src/com/android/systemui/screenshot/SaveImageInBackgroundTask.java
@@ -38,7 +38,6 @@
 import android.os.Environment;
 import android.os.Handler;
 import android.os.ParcelFileDescriptor;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
@@ -106,7 +105,7 @@
 
         // Initialize screenshot notification smart actions provider.
         mSmartActionsEnabled = DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
-                SystemUiDeviceConfigFlags.ENABLE_SCREENSHOT_NOTIFICATION_SMART_ACTIONS, false);
+                SystemUiDeviceConfigFlags.ENABLE_SCREENSHOT_NOTIFICATION_SMART_ACTIONS, true);
         if (mSmartActionsEnabled) {
             mSmartActionsProvider =
                     SystemUIFactory.getInstance()
@@ -124,10 +123,6 @@
             return null;
         }
 
-        // By default, AsyncTask sets the worker thread to have background thread priority,
-        // so bump it back up so that we save a little quicker.
-        Process.setThreadPriority(Process.THREAD_PRIORITY_FOREGROUND);
-
         ContentResolver resolver = mContext.getContentResolver();
         Bitmap image = mParams.image;
         Resources r = mContext.getResources();
diff --git a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
index b1f1f38..821144a 100644
--- a/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
+++ b/packages/SystemUI/src/com/android/systemui/settings/BrightnessController.java
@@ -17,8 +17,8 @@
 package com.android.systemui.settings;
 
 import static com.android.settingslib.display.BrightnessUtils.GAMMA_SPACE_MAX;
-import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinear;
-import static com.android.settingslib.display.BrightnessUtils.convertLinearToGamma;
+import static com.android.settingslib.display.BrightnessUtils.convertGammaToLinearFloat;
+import static com.android.settingslib.display.BrightnessUtils.convertLinearToGammaFloat;
 
 import android.animation.ValueAnimator;
 import android.content.ContentResolver;
@@ -39,7 +39,9 @@
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
 import android.util.Log;
+import android.util.MathUtils;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settingslib.RestrictedLockUtilsInternal;
@@ -58,12 +60,21 @@
     private static final int MSG_DETACH_LISTENER = 4;
     private static final int MSG_VR_MODE_CHANGED = 5;
 
-    private final int mMinimumBacklight;
-    private final int mMaximumBacklight;
-    private final int mDefaultBacklight;
-    private final int mMinimumBacklightForVr;
-    private final int mMaximumBacklightForVr;
-    private final int mDefaultBacklightForVr;
+    private static final Uri BRIGHTNESS_MODE_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE);
+    private static final Uri BRIGHTNESS_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
+    private static final Uri BRIGHTNESS_FLOAT_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
+    private static final Uri BRIGHTNESS_FOR_VR_FLOAT_URI =
+            Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT);
+
+    private final float mMinimumBacklight;
+    private final float mMaximumBacklight;
+    private final float mDefaultBacklight;
+    private final float mMinimumBacklightForVr;
+    private final float mMaximumBacklightForVr;
+    private final float mDefaultBacklightForVr;
 
     private final Context mContext;
     private final ToggleSlider mControl;
@@ -90,16 +101,9 @@
         public void onBrightnessLevelChanged();
     }
 
-    /** ContentObserver to watch brightness **/
+    /** ContentObserver to watch brightness */
     private class BrightnessObserver extends ContentObserver {
 
-        private final Uri BRIGHTNESS_MODE_URI =
-                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_MODE);
-        private final Uri BRIGHTNESS_URI =
-                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
-        private final Uri BRIGHTNESS_FOR_VR_URI =
-                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FOR_VR);
-
         public BrightnessObserver(Handler handler) {
             super(handler);
         }
@@ -116,9 +120,9 @@
             if (BRIGHTNESS_MODE_URI.equals(uri)) {
                 mBackgroundHandler.post(mUpdateModeRunnable);
                 mBackgroundHandler.post(mUpdateSliderRunnable);
-            } else if (BRIGHTNESS_URI.equals(uri)) {
+            } else if (BRIGHTNESS_FLOAT_URI.equals(uri)) {
                 mBackgroundHandler.post(mUpdateSliderRunnable);
-            } else if (BRIGHTNESS_FOR_VR_URI.equals(uri)) {
+            } else if (BRIGHTNESS_FOR_VR_FLOAT_URI.equals(uri)) {
                 mBackgroundHandler.post(mUpdateSliderRunnable);
             } else {
                 mBackgroundHandler.post(mUpdateModeRunnable);
@@ -139,7 +143,10 @@
                     BRIGHTNESS_URI,
                     false, this, UserHandle.USER_ALL);
             cr.registerContentObserver(
-                    BRIGHTNESS_FOR_VR_URI,
+                    BRIGHTNESS_FLOAT_URI,
+                    false, this, UserHandle.USER_ALL);
+            cr.registerContentObserver(
+                    BRIGHTNESS_FOR_VR_FLOAT_URI,
                     false, this, UserHandle.USER_ALL);
         }
 
@@ -229,18 +236,21 @@
     private final Runnable mUpdateSliderRunnable = new Runnable() {
         @Override
         public void run() {
-            final int val;
+            final float valFloat;
             final boolean inVrMode = mIsVrModeEnabled;
             if (inVrMode) {
-                val = Settings.System.getIntForUser(mContext.getContentResolver(),
-                        Settings.System.SCREEN_BRIGHTNESS_FOR_VR, mDefaultBacklightForVr,
+                valFloat = Settings.System.getFloatForUser(mContext.getContentResolver(),
+                        Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, mDefaultBacklightForVr,
                         UserHandle.USER_CURRENT);
             } else {
-                val = Settings.System.getIntForUser(mContext.getContentResolver(),
-                        Settings.System.SCREEN_BRIGHTNESS, mDefaultBacklight,
+                valFloat = Settings.System.getFloatForUser(mContext.getContentResolver(),
+                        Settings.System.SCREEN_BRIGHTNESS_FLOAT, mDefaultBacklight,
                         UserHandle.USER_CURRENT);
             }
-            mHandler.obtainMessage(MSG_UPDATE_SLIDER, val, inVrMode ? 1 : 0).sendToTarget();
+            // Value is passed as intbits, since this is what the message takes.
+            final int valueAsIntBits = Float.floatToIntBits(valFloat);
+            mHandler.obtainMessage(MSG_UPDATE_SLIDER, valueAsIntBits,
+                    inVrMode ? 1 : 0).sendToTarget();
         }
     };
 
@@ -259,7 +269,7 @@
             try {
                 switch (msg.what) {
                     case MSG_UPDATE_SLIDER:
-                        updateSlider(msg.arg1, msg.arg2 != 0);
+                        updateSlider(Float.intBitsToFloat(msg.arg1), msg.arg2 != 0);
                         break;
                     case MSG_SET_CHECKED:
                         mControl.setChecked(msg.arg1 != 0);
@@ -298,12 +308,19 @@
         mBrightnessObserver = new BrightnessObserver(mHandler);
 
         PowerManager pm = context.getSystemService(PowerManager.class);
-        mMinimumBacklight = pm.getMinimumScreenBrightnessSetting();
-        mMaximumBacklight = pm.getMaximumScreenBrightnessSetting();
-        mDefaultBacklight = pm.getDefaultScreenBrightnessSetting();
-        mMinimumBacklightForVr = pm.getMinimumScreenBrightnessForVrSetting();
-        mMaximumBacklightForVr = pm.getMaximumScreenBrightnessForVrSetting();
-        mDefaultBacklightForVr = pm.getDefaultScreenBrightnessForVrSetting();
+        mMinimumBacklight = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
+        mMaximumBacklight = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);
+        mDefaultBacklight = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT);
+        mMinimumBacklightForVr = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR);
+        mMaximumBacklightForVr = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR);
+        mDefaultBacklightForVr = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR);
+
 
         mAutomaticAvailable = context.getResources().getBoolean(
                 com.android.internal.R.bool.config_automatic_brightness_available);
@@ -344,37 +361,39 @@
             mSliderAnimator.cancel();
         }
 
-        final int min;
-        final int max;
+        final float minBacklight;
+        final float maxBacklight;
         final int metric;
-        final String setting;
+        final String settingToChange;
 
         if (mIsVrModeEnabled) {
             metric = MetricsEvent.ACTION_BRIGHTNESS_FOR_VR;
-            min = mMinimumBacklightForVr;
-            max = mMaximumBacklightForVr;
-            setting = Settings.System.SCREEN_BRIGHTNESS_FOR_VR;
+            minBacklight = mMinimumBacklightForVr;
+            maxBacklight = mMaximumBacklightForVr;
+            settingToChange = Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT;
         } else {
             metric = mAutomatic
                     ? MetricsEvent.ACTION_BRIGHTNESS_AUTO
                     : MetricsEvent.ACTION_BRIGHTNESS;
-            min = mMinimumBacklight;
-            max = mMaximumBacklight;
-            setting = Settings.System.SCREEN_BRIGHTNESS;
+            minBacklight = mMinimumBacklight;
+            maxBacklight = mMaximumBacklight;
+            settingToChange = Settings.System.SCREEN_BRIGHTNESS_FLOAT;
         }
-
-        final int val = convertGammaToLinear(value, min, max);
-
+        final float valFloat = MathUtils.min(convertGammaToLinearFloat(value,
+                minBacklight, maxBacklight),
+                1.0f);
         if (stopTracking) {
-            MetricsLogger.action(mContext, metric, val);
-        }
+            // TODO(brightnessfloat): change to use float value instead.
+            MetricsLogger.action(mContext, metric,
+                    BrightnessSynchronizer.brightnessFloatToInt(mContext, valFloat));
 
-        setBrightness(val);
+        }
+        setBrightness(valFloat);
         if (!tracking) {
             AsyncTask.execute(new Runnable() {
                     public void run() {
-                        Settings.System.putIntForUser(mContext.getContentResolver(),
-                                setting, val, UserHandle.USER_CURRENT);
+                        Settings.System.putFloatForUser(mContext.getContentResolver(),
+                                settingToChange, valFloat, UserHandle.USER_CURRENT);
                     }
                 });
         }
@@ -402,7 +421,7 @@
                 mUserTracker.getCurrentUserId());
     }
 
-    private void setBrightness(int brightness) {
+    private void setBrightness(float brightness) {
         mDisplayManager.setTemporaryBrightness(brightness);
     }
 
@@ -413,9 +432,9 @@
         }
     }
 
-    private void updateSlider(int val, boolean inVrMode) {
-        final int min;
-        final int max;
+    private void updateSlider(float brightnessValue, boolean inVrMode) {
+        final float min;
+        final float max;
         if (inVrMode) {
             min = mMinimumBacklightForVr;
             max = mMaximumBacklightForVr;
@@ -423,7 +442,10 @@
             min = mMinimumBacklight;
             max = mMaximumBacklight;
         }
-        if (val == convertGammaToLinear(mControl.getValue(), min, max)) {
+        // convertGammaToLinearFloat returns 0-1
+        if (BrightnessSynchronizer.brightnessFloatToInt(mContext, brightnessValue)
+                == BrightnessSynchronizer.brightnessFloatToInt(mContext,
+                convertGammaToLinearFloat(mControl.getValue(), min, max))) {
             // If we have more resolution on the slider than we do in the actual setting, then
             // multiple slider positions will map to the same setting value. Thus, if we see a
             // setting value here that maps to the current slider position, we don't bother to
@@ -431,7 +453,8 @@
             // change to the user even though it isn't one.
             return;
         }
-        final int sliderVal = convertLinearToGamma(val, min, max);
+        // Returns GAMMA_SPACE_MIN - GAMMA_SPACE_MAX
+        final int sliderVal = convertLinearToGammaFloat(brightnessValue, min, max);
         animateSliderTo(sliderVal);
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/InflationTask.java b/packages/SystemUI/src/com/android/systemui/statusbar/InflationTask.java
index 22fd37c..eb580c4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/InflationTask.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/InflationTask.java
@@ -22,11 +22,4 @@
  */
 public interface InflationTask {
     void abort();
-
-    /**
-     * Supersedes an existing task. i.e another task was superceeded by this.
-     *
-     * @param task the task that was previously running
-     */
-    default void supersedeTask(InflationTask task) {}
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
index 7ad07c2..7d3d406 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/KeyguardIndicationController.java
@@ -20,7 +20,6 @@
 import android.animation.AnimatorListenerAdapter;
 import android.content.Context;
 import android.content.res.ColorStateList;
-import android.content.res.Resources;
 import android.graphics.Color;
 import android.hardware.biometrics.BiometricSourceType;
 import android.hardware.face.FaceManager;
@@ -46,6 +45,7 @@
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.keyguard.KeyguardUpdateMonitorCallback;
 import com.android.settingslib.Utils;
+import com.android.settingslib.fuelgauge.BatteryStatus;
 import com.android.systemui.Dependency;
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
@@ -97,8 +97,6 @@
     private final LockPatternUtils mLockPatternUtils;
     private final DockManager mDockManager;
 
-    private final int mSlowThreshold;
-    private final int mFastThreshold;
     private final LockIcon mLockIcon;
     private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
     private LockscreenGestureLogger mLockscreenGestureLogger = new LockscreenGestureLogger();
@@ -178,10 +176,6 @@
         mWakeLock = new SettableWakeLock(wakeLock, TAG);
         mLockPatternUtils = lockPatternUtils;
 
-        Resources res = context.getResources();
-        mSlowThreshold = res.getInteger(R.integer.config_chargingSlowlyThreshold);
-        mFastThreshold = res.getInteger(R.integer.config_chargingFastThreshold);
-
         mUserManager = context.getSystemService(UserManager.class);
         mBatteryInfo = iBatteryStats;
 
@@ -484,12 +478,12 @@
         int chargingId;
         if (mPowerPluggedInWired) {
             switch (mChargingSpeed) {
-                case KeyguardUpdateMonitor.BatteryStatus.CHARGING_FAST:
+                case BatteryStatus.CHARGING_FAST:
                     chargingId = hasChargingTime
                             ? R.string.keyguard_indication_charging_time_fast
                             : R.string.keyguard_plugged_in_charging_fast;
                     break;
-                case KeyguardUpdateMonitor.BatteryStatus.CHARGING_SLOWLY:
+                case BatteryStatus.CHARGING_SLOWLY:
                     chargingId = hasChargingTime
                             ? R.string.keyguard_indication_charging_time_slowly
                             : R.string.keyguard_plugged_in_charging_slowly;
@@ -620,7 +614,7 @@
         public static final int HIDE_DELAY_MS = 5000;
 
         @Override
-        public void onRefreshBatteryInfo(KeyguardUpdateMonitor.BatteryStatus status) {
+        public void onRefreshBatteryInfo(BatteryStatus status) {
             boolean isChargingOrFull = status.status == BatteryManager.BATTERY_STATUS_CHARGING
                     || status.status == BatteryManager.BATTERY_STATUS_FULL;
             boolean wasPluggedIn = mPowerPluggedIn;
@@ -628,7 +622,7 @@
             mPowerPluggedIn = status.isPluggedIn() && isChargingOrFull;
             mPowerCharged = status.isCharged();
             mChargingWattage = status.maxChargingWattage;
-            mChargingSpeed = status.getChargingSpeed(mSlowThreshold, mFastThreshold);
+            mChargingSpeed = status.getChargingSpeed(mContext);
             mBatteryLevel = status.level;
             try {
                 mChargingTimeRemaining = mPowerPluggedIn
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
index 976531d8b..1229881 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerImpl.java
@@ -79,6 +79,7 @@
 
     private final DeviceProvisionedController mDeviceProvisionedController;
     private final KeyguardStateController mKeyguardStateController;
+    private final Object mLock = new Object();
 
     // Lazy
     private NotificationEntryManager mEntryManager;
@@ -181,6 +182,7 @@
     protected final Context mContext;
     private final Handler mMainHandler;
     protected final SparseArray<UserInfo> mCurrentProfiles = new SparseArray<>();
+    protected final ArrayList<UserInfo> mCurrentManagedProfiles = new ArrayList<>();
 
     protected int mCurrentUserId = 0;
     protected NotificationPresenter mPresenter;
@@ -280,7 +282,8 @@
         filter.addAction(Intent.ACTION_USER_UNLOCKED);
         filter.addAction(Intent.ACTION_MANAGED_PROFILE_AVAILABLE);
         filter.addAction(Intent.ACTION_MANAGED_PROFILE_UNAVAILABLE);
-        mBroadcastDispatcher.registerReceiver(mBaseBroadcastReceiver, filter);
+        mBroadcastDispatcher.registerReceiver(mBaseBroadcastReceiver, filter,
+                null /* executor */, UserHandle.ALL);
 
         IntentFilter internalFilter = new IntentFilter();
         internalFilter.addAction(NOTIFICATION_UNLOCKED_BY_WORK_CHALLENGE_ACTION);
@@ -300,7 +303,7 @@
     }
 
     public boolean isCurrentProfile(int userId) {
-        synchronized (mCurrentProfiles) {
+        synchronized (mLock) {
             return userId == UserHandle.USER_ALL || mCurrentProfiles.get(userId) != null;
         }
     }
@@ -417,6 +420,20 @@
         return mUsersAllowingPrivateNotifications.get(userHandle);
     }
 
+    /**
+     * If all managed profiles (work profiles) can show private data in public (secure & locked.)
+     */
+    public boolean allowsManagedPrivateNotificationsInPublic() {
+        synchronized (mLock) {
+            for (UserInfo profile : mCurrentManagedProfiles) {
+                if (!userAllowsPrivateNotificationsInPublic(profile.id)) {
+                    return false;
+                }
+            }
+        }
+        return true;
+    }
+
     private boolean adminAllowsKeyguardFeature(int userHandle, int feature) {
         if (userHandle == UserHandle.USER_ALL) {
             return true;
@@ -495,11 +512,15 @@
     }
 
     private void updateCurrentProfilesCache() {
-        synchronized (mCurrentProfiles) {
+        synchronized (mLock) {
             mCurrentProfiles.clear();
+            mCurrentManagedProfiles.clear();
             if (mUserManager != null) {
                 for (UserInfo user : mUserManager.getProfiles(mCurrentUserId)) {
                     mCurrentProfiles.put(user.id, user);
+                    if (UserManager.USER_TYPE_PROFILE_MANAGED.equals(user.userType)) {
+                        mCurrentManagedProfiles.add(user);
+                    }
                 }
             }
         }
@@ -510,10 +531,29 @@
         });
     }
 
+    /**
+     * If any of the profiles are in public mode.
+     */
     public boolean isAnyProfilePublicMode() {
-        for (int i = mCurrentProfiles.size() - 1; i >= 0; i--) {
-            if (isLockscreenPublicMode(mCurrentProfiles.valueAt(i).id)) {
-                return true;
+        synchronized (mLock) {
+            for (int i = mCurrentProfiles.size() - 1; i >= 0; i--) {
+                if (isLockscreenPublicMode(mCurrentProfiles.valueAt(i).id)) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    /**
+     * If any managed/work profiles are in public mode.
+     */
+    public boolean isAnyManagedProfilePublicMode() {
+        synchronized (mLock) {
+            for (int i = mCurrentManagedProfiles.size() - 1; i >= 0; i--) {
+                if (isLockscreenPublicMode(mCurrentManagedProfiles.get(i).id)) {
+                    return true;
+                }
             }
         }
         return false;
@@ -620,9 +660,17 @@
         pw.print("  mAllowLockscreenRemoteInput=");
         pw.println(mAllowLockscreenRemoteInput);
         pw.print("  mCurrentProfiles=");
-        for (int i = mCurrentProfiles.size() - 1; i >= 0; i--) {
-            final int userId = mCurrentProfiles.valueAt(i).id;
-            pw.print("" + userId + " ");
+        synchronized (mLock) {
+            for (int i = mCurrentProfiles.size() - 1; i >= 0; i--) {
+                final int userId = mCurrentProfiles.valueAt(i).id;
+                pw.print("" + userId + " ");
+            }
+        }
+        pw.print("  mCurrentManagedProfiles=");
+        synchronized (mLock) {
+            for (UserInfo userInfo : mCurrentManagedProfiles) {
+                pw.print("" + userInfo.id + " ");
+            }
         }
         pw.println();
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoveInterceptor.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoveInterceptor.java
index 930116e..caa1e2d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoveInterceptor.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationRemoveInterceptor.java
@@ -16,8 +16,12 @@
 
 package com.android.systemui.statusbar;
 
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.service.notification.NotificationListenerService;
 
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
 /**
  * Interface for anything that may need to prevent notifications from being removed. This is
  * similar to a {@link NotificationLifetimeExtender} in the sense that it extends the life of
@@ -30,11 +34,15 @@
     /**
      * Called when a notification has been removed.
      *
-     * @param key the entry key of the notification being removed.
+     * @param key the key of the notification being removed. Never null
+     * @param entry the entry of the notification being removed.
      * @param removeReason why the notification is being removed, e.g.
      * {@link NotificationListenerService#REASON_CANCEL} or 0 if unknown.
      *
      * @return true if the removal should be ignored, false otherwise.
      */
-    boolean onNotificationRemoveRequested(String key, int removeReason);
+    boolean onNotificationRemoveRequested(
+            @NonNull String key,
+            @Nullable NotificationEntry entry,
+            int removeReason);
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeWindowBlurController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeWindowBlurController.kt
new file mode 100644
index 0000000..85215ed
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationShadeWindowBlurController.kt
@@ -0,0 +1,176 @@
+/*
+ * 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.systemui.statusbar
+
+import android.animation.Animator
+import android.animation.AnimatorListenerAdapter
+import android.animation.ValueAnimator
+import android.view.Choreographer
+import android.view.View
+import com.android.internal.util.IndentingPrintWriter
+import com.android.systemui.DumpController
+import com.android.systemui.Dumpable
+import com.android.systemui.Interpolators
+import com.android.systemui.statusbar.phone.BiometricUnlockController
+import com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK
+import com.android.systemui.statusbar.phone.NotificationShadeWindowController
+import com.android.systemui.statusbar.phone.PanelExpansionListener
+import com.android.systemui.statusbar.policy.KeyguardStateController
+import java.io.FileDescriptor
+import java.io.PrintWriter
+import javax.inject.Inject
+import javax.inject.Singleton
+import kotlin.math.max
+
+/**
+ * Controller responsible for statusbar window blur.
+ */
+@Singleton
+class NotificationShadeWindowBlurController @Inject constructor(
+    private val statusBarStateController: SysuiStatusBarStateController,
+    private val blurUtils: BlurUtils,
+    private val biometricUnlockController: BiometricUnlockController,
+    private val keyguardStateController: KeyguardStateController,
+    private val notificationShadeWindowController: NotificationShadeWindowController,
+    private val choreographer: Choreographer,
+    dumpController: DumpController
+) : PanelExpansionListener, Dumpable {
+    companion object {
+        private const val WAKE_UP_ANIMATION_ENABLED = true
+        private const val SHADE_BLUR_ENABLED = true
+    }
+
+    lateinit var root: View
+    private var keyguardAnimator: Animator? = null
+    private var notificationAnimator: Animator? = null
+    private var updateScheduled: Boolean = false
+    private var shadeExpansion = 1.0f
+    private var shadeBlurRadius = 0
+        set(value) {
+            if (field == value) return
+            field = value
+            scheduleUpdate()
+        }
+    private var wakeAndUnlockBlurRadius = 0
+        set(value) {
+            if (field == value) return
+            field = value
+            scheduleUpdate()
+        }
+    private var incomingNotificationBlurRadius = 0
+        set(value) {
+            if (field == value) return
+            field = value
+            scheduleUpdate()
+        }
+
+    /**
+     * Callback that updates the window blur value and is called only once per frame.
+     */
+    private val updateBlurCallback = Choreographer.FrameCallback {
+        updateScheduled = false
+
+        var notificationBlur = 0
+        if (statusBarStateController.state == StatusBarState.KEYGUARD) {
+            notificationBlur = (incomingNotificationBlurRadius * shadeExpansion).toInt()
+        }
+
+        val blur = max(max(shadeBlurRadius, wakeAndUnlockBlurRadius), notificationBlur)
+        blurUtils.applyBlur(root.viewRootImpl, blur)
+    }
+
+    /**
+     * Animate blurs when unlocking.
+     */
+    private val keyguardStateCallback = object : KeyguardStateController.Callback {
+        override fun onKeyguardFadingAwayChanged() {
+            if (!keyguardStateController.isKeyguardFadingAway ||
+                    biometricUnlockController.mode != MODE_WAKE_AND_UNLOCK) {
+                return
+            }
+
+            keyguardAnimator?.cancel()
+            keyguardAnimator = ValueAnimator.ofFloat(1f, 0f).apply {
+                duration = keyguardStateController.keyguardFadingAwayDuration
+                startDelay = keyguardStateController.keyguardFadingAwayDelay
+                interpolator = Interpolators.DECELERATE_QUINT
+                addUpdateListener { animation: ValueAnimator ->
+                    wakeAndUnlockBlurRadius =
+                            blurUtils.radiusForRatio(animation.animatedValue as Float)
+                }
+                addListener(object : AnimatorListenerAdapter() {
+                    override fun onAnimationEnd(animation: Animator?) {
+                        keyguardAnimator = null
+                        scheduleUpdate()
+                    }
+                })
+                start()
+            }
+        }
+
+        override fun onKeyguardShowingChanged() {
+            if (keyguardStateController.isShowing) {
+                keyguardAnimator?.cancel()
+                notificationAnimator?.cancel()
+            }
+        }
+    }
+
+    init {
+        dumpController.registerDumpable(this)
+        if (WAKE_UP_ANIMATION_ENABLED) {
+            keyguardStateController.addCallback(keyguardStateCallback)
+        }
+    }
+
+    /**
+     * Update blurs when pulling down the shade
+     */
+    override fun onPanelExpansionChanged(expansion: Float, tracking: Boolean) {
+        if (!SHADE_BLUR_ENABLED) {
+            return
+        }
+
+        var newBlur = 0
+        if (statusBarStateController.state == StatusBarState.SHADE) {
+            newBlur = blurUtils.radiusForRatio(expansion)
+        }
+
+        if (shadeBlurRadius == newBlur) {
+            return
+        }
+        shadeBlurRadius = newBlur
+        scheduleUpdate()
+    }
+
+    private fun scheduleUpdate() {
+        if (updateScheduled) {
+            return
+        }
+        updateScheduled = true
+        choreographer.postFrameCallback(updateBlurCallback)
+    }
+
+    override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
+        IndentingPrintWriter(pw, "  ").use {
+            it.println("StatusBarWindowBlurController:")
+            it.increaseIndent()
+            it.println("shadeBlurRadius: $shadeBlurRadius")
+            it.println("wakeAndUnlockBlur: $wakeAndUnlockBlurRadius")
+        }
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java
index 6b0b5df..37f9f88 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/NotificationViewHierarchyManager.java
@@ -34,6 +34,7 @@
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.stack.ForegroundServiceSectionController;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -81,6 +82,7 @@
     private final BubbleController mBubbleController;
     private final DynamicPrivacyController mDynamicPrivacyController;
     private final KeyguardBypassController mBypassController;
+    private final ForegroundServiceSectionController mFgsSectionController;
     private final Context mContext;
 
     private NotificationPresenter mPresenter;
@@ -101,7 +103,9 @@
             NotificationEntryManager notificationEntryManager,
             KeyguardBypassController bypassController,
             BubbleController bubbleController,
-            DynamicPrivacyController privacyController) {
+            DynamicPrivacyController privacyController,
+            ForegroundServiceSectionController fgsSectionController
+    ) {
         mContext = context;
         mHandler = mainHandler;
         mLockscreenUserManager = notificationLockscreenUserManager;
@@ -110,6 +114,7 @@
         mVisualStabilityManager = visualStabilityManager;
         mStatusBarStateController = (SysuiStatusBarStateController) statusBarStateController;
         mEntryManager = notificationEntryManager;
+        mFgsSectionController = fgsSectionController;
         Resources res = context.getResources();
         mAlwaysExpandNonGroupedNotification =
                 res.getBoolean(R.bool.config_alwaysExpandNonGroupedNotifications);
@@ -140,7 +145,8 @@
             boolean hideMedia = Utils.useQsMediaPlayer(mContext);
             if (ent.isRowDismissed() || ent.isRowRemoved()
                     || (ent.isMediaNotification() && hideMedia)
-                    || mBubbleController.isBubbleNotificationSuppressedFromShade(ent.getKey())) {
+                    || mBubbleController.isBubbleNotificationSuppressedFromShade(ent)
+                    || mFgsSectionController.hasEntry(ent)) {
                 // we don't want to update removed notifications because they could
                 // temporarily become children if they were isolated before.
                 continue;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWindowBlurController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWindowBlurController.kt
deleted file mode 100644
index 2e72163..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/StatusBarWindowBlurController.kt
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * 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.systemui.statusbar
-
-import android.content.res.Resources
-import android.view.View
-import com.android.internal.util.IndentingPrintWriter
-import com.android.systemui.DumpController
-import com.android.systemui.Dumpable
-import com.android.systemui.dagger.qualifiers.Main
-import com.android.systemui.statusbar.phone.PanelExpansionListener
-import java.io.FileDescriptor
-import java.io.PrintWriter
-import javax.inject.Inject
-import javax.inject.Singleton
-
-/**
- * Controller responsible for statusbar window blur.
- */
-@Singleton
-class StatusBarWindowBlurController @Inject constructor(
-    @Main private val resources: Resources,
-    private val statusBarStateController: SysuiStatusBarStateController,
-    private val blurUtils: BlurUtils,
-    dumpController: DumpController
-) : PanelExpansionListener, Dumpable {
-
-    lateinit var root: View
-    private var blurRadius = 0
-
-    init {
-        dumpController.registerDumpable(this)
-    }
-
-    override fun onPanelExpansionChanged(expansion: Float, tracking: Boolean) {
-        val newBlur = if (statusBarStateController.state == StatusBarState.SHADE)
-            blurUtils.radiusForRatio(expansion)
-        else
-            0
-
-        if (blurRadius == newBlur) {
-            return
-        }
-        blurRadius = newBlur
-        blurUtils.applyBlur(root.viewRootImpl, blurRadius)
-    }
-
-    override fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<out String>) {
-        IndentingPrintWriter(pw, "  ").use {
-            it.println("StatusBarWindowBlurController:")
-            it.increaseIndent()
-            it.println("blurRadius: $blurRadius")
-        }
-    }
-}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/BypassHeadsUpNotifier.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/BypassHeadsUpNotifier.kt
index 015c323..269a7a5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/BypassHeadsUpNotifier.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/BypassHeadsUpNotifier.kt
@@ -43,10 +43,10 @@
     private val headsUpManager: HeadsUpManagerPhone,
     private val notificationLockscreenUserManager: NotificationLockscreenUserManager,
     private val mediaManager: NotificationMediaManager,
+    private val entryManager: NotificationEntryManager,
     tunerService: TunerService
 ) : StatusBarStateController.StateListener, NotificationMediaManager.MediaListener {
 
-    private lateinit var entryManager: NotificationEntryManager
     private var currentMediaEntry: NotificationEntry? = null
     private var enabled = true
 
@@ -70,8 +70,7 @@
                 }, Settings.Secure.SHOW_MEDIA_WHEN_BYPASSING)
     }
 
-    fun setUp(entryManager: NotificationEntryManager) {
-        this.entryManager = entryManager
+    fun setUp() {
         mediaManager.addCallback(this)
     }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt
new file mode 100644
index 0000000..b1d6b40
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/ForegroundServiceDismissalFeatureController.kt
@@ -0,0 +1,49 @@
+/*
+ * 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.systemui.statusbar.notification
+
+import android.content.Context
+import android.provider.DeviceConfig
+import com.android.internal.config.sysui.SystemUiDeviceConfigFlags.NOTIFICATIONS_ALLOW_FGS_DISMISSAL
+import com.android.systemui.util.DeviceConfigProxy
+import javax.inject.Inject
+import javax.inject.Singleton
+
+private var sIsEnabled: Boolean? = null
+
+/**
+ * Feature controller for NOTIFICATIONS_ALLOW_FGS_DISMISSAL config.
+ */
+// TODO: this is really boilerplatey, make a base class that just wraps the device config
+@Singleton
+class ForegroundServiceDismissalFeatureController @Inject constructor(
+    val proxy: DeviceConfigProxy,
+    val context: Context
+) {
+    fun isForegroundServiceDismissalEnabled(): Boolean {
+        return isEnabled(proxy)
+    }
+}
+
+private fun isEnabled(proxy: DeviceConfigProxy): Boolean {
+    if (sIsEnabled == null) {
+        sIsEnabled = proxy.getBoolean(
+                DeviceConfig.NAMESPACE_SYSTEMUI, NOTIFICATIONS_ALLOW_FGS_DISMISSAL, false)
+    }
+
+    return sIsEnabled!!
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationAlertingManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationAlertingManager.java
index 81833a4..d0e238a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationAlertingManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationAlertingManager.java
@@ -28,7 +28,6 @@
 import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
 
 import javax.inject.Inject;
@@ -64,8 +63,8 @@
 
         notificationEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
             @Override
-            public void onEntryInflated(NotificationEntry entry, int inflatedFlags) {
-                showAlertingView(entry, inflatedFlags);
+            public void onEntryInflated(NotificationEntry entry) {
+                showAlertingView(entry);
             }
 
             @Override
@@ -90,12 +89,11 @@
     /**
      * Adds the entry to the respective alerting manager if the content view was inflated and
      * the entry should still alert.
-     *
-     * @param entry         entry to add
-     * @param inflatedFlags flags representing content views that were inflated
      */
-    private void showAlertingView(NotificationEntry entry, @InflationFlag int inflatedFlags) {
-        if ((inflatedFlags & FLAG_CONTENT_VIEW_HEADS_UP) != 0) {
+    private void showAlertingView(NotificationEntry entry) {
+        // TODO: Instead of this back and forth, we should listen to changes in heads up and
+        // cancel on-going heads up view inflation using the bind pipeline.
+        if (entry.getRow().getPrivateLayout().getHeadsUpChild() != null) {
             // Possible for shouldHeadsUp to change between the inflation starting and ending.
             // If it does and we no longer need to heads up, we should free the view.
             if (mNotificationInterruptionStateProvider.shouldHeadsUp(entry)) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
index f6b5583..25253a1 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryListener.java
@@ -24,7 +24,6 @@
 
 import com.android.internal.statusbar.NotificationVisibility;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 
 /**
  * Listener interface for changes sent by NotificationEntryManager.
@@ -62,7 +61,7 @@
     /**
      * Called when a notification's views are inflated for the first time.
      */
-    default void onEntryInflated(NotificationEntry entry, @InflationFlag int inflatedFlags) {
+    default void onEntryInflated(NotificationEntry entry) {
     }
 
     /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
index 4a22831..b0bf813 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManager.java
@@ -18,6 +18,7 @@
 import static android.service.notification.NotificationListenerService.REASON_CANCEL;
 import static android.service.notification.NotificationListenerService.REASON_ERROR;
 
+import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_UNKNOWN;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
 
 import android.annotation.NonNull;
@@ -44,10 +45,9 @@
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationRankingManager;
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
-import com.android.systemui.statusbar.notification.logging.NotifEvent;
-import com.android.systemui.statusbar.notification.logging.NotifLog;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
-import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
@@ -96,6 +96,7 @@
  */
 @Singleton
 public class NotificationEntryManager implements
+        CommonNotifCollection,
         Dumpable,
         InflationCallback,
         VisualStabilityManager.Callback {
@@ -126,25 +127,28 @@
     private final Map<NotificationEntry, NotificationLifetimeExtender> mRetainedNotifications =
             new ArrayMap<>();
 
+    private final NotificationEntryManagerLogger mLogger;
+
     // Lazily retrieved dependencies
     private final Lazy<NotificationRowBinder> mNotificationRowBinderLazy;
     private final Lazy<NotificationRemoteInputManager> mRemoteInputManagerLazy;
     private final LeakDetector mLeakDetector;
+    private final List<NotifCollectionListener> mNotifCollectionListeners = new ArrayList<>();
 
     private final KeyguardEnvironment mKeyguardEnvironment;
     private final NotificationGroupManager mGroupManager;
     private final NotificationRankingManager mRankingManager;
     private final FeatureFlags mFeatureFlags;
+    private final ForegroundServiceDismissalFeatureController mFgsFeatureController;
 
     private NotificationPresenter mPresenter;
     private RankingMap mLatestRankingMap;
-    private NotifLog mNotifLog;
 
     @VisibleForTesting
     final ArrayList<NotificationLifetimeExtender> mNotificationLifetimeExtenders
             = new ArrayList<>();
     private final List<NotificationEntryListener> mNotificationEntryListeners = new ArrayList<>();
-    private NotificationRemoveInterceptor mRemoveInterceptor;
+    private final List<NotificationRemoveInterceptor> mRemoveInterceptors = new ArrayList<>();
 
     @Override
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
@@ -157,6 +161,14 @@
                 pw.println(entry.getSbn());
             }
         }
+        pw.println("  Remove interceptors registered:");
+        for (NotificationRemoveInterceptor interceptor : mRemoveInterceptors) {
+            pw.println("    " + interceptor.getClass().getSimpleName());
+        }
+        pw.println("  Lifetime extenders registered:");
+        for (NotificationLifetimeExtender extender : mNotificationLifetimeExtenders) {
+            pw.println("    " + extender.getClass().getSimpleName());
+        }
         pw.println("  Lifetime-extended notifications:");
         if (mRetainedNotifications.isEmpty()) {
             pw.println("    None");
@@ -171,15 +183,16 @@
 
     @Inject
     public NotificationEntryManager(
-            NotifLog notifLog,
+            NotificationEntryManagerLogger logger,
             NotificationGroupManager groupManager,
             NotificationRankingManager rankingManager,
             KeyguardEnvironment keyguardEnvironment,
             FeatureFlags featureFlags,
             Lazy<NotificationRowBinder> notificationRowBinderLazy,
             Lazy<NotificationRemoteInputManager> notificationRemoteInputManagerLazy,
-            LeakDetector leakDetector) {
-        mNotifLog = notifLog;
+            LeakDetector leakDetector,
+            ForegroundServiceDismissalFeatureController fgsFeatureController) {
+        mLogger = logger;
         mGroupManager = groupManager;
         mRankingManager = rankingManager;
         mKeyguardEnvironment = keyguardEnvironment;
@@ -187,6 +200,7 @@
         mNotificationRowBinderLazy = notificationRowBinderLazy;
         mRemoteInputManagerLazy = notificationRemoteInputManagerLazy;
         mLeakDetector = leakDetector;
+        mFgsFeatureController = fgsFeatureController;
     }
 
     /** Once called, the NEM will start processing notification events from system server. */
@@ -207,9 +221,14 @@
         mNotificationEntryListeners.remove(listener);
     }
 
-    /** Sets the {@link NotificationRemoveInterceptor}. */
-    public void setNotificationRemoveInterceptor(NotificationRemoveInterceptor interceptor) {
-        mRemoveInterceptor = interceptor;
+    /** Add a {@link NotificationRemoveInterceptor}. */
+    public void addNotificationRemoveInterceptor(NotificationRemoveInterceptor interceptor) {
+        mRemoveInterceptors.add(interceptor);
+    }
+
+    /** Remove a {@link NotificationRemoveInterceptor} */
+    public void removeNotificationRemoveInterceptor(NotificationRemoveInterceptor interceptor) {
+        mRemoveInterceptors.remove(interceptor);
     }
 
     public void setUpWithPresenter(NotificationPresenter presenter,
@@ -271,13 +290,15 @@
             NotificationEntry entry = mPendingNotifications.get(key);
             entry.abortTask();
             mPendingNotifications.remove(key);
-            mNotifLog.log(NotifEvent.INFLATION_ABORTED, entry, "PendingNotification aborted"
-                    + " reason=" + reason);
+            for (NotifCollectionListener listener : mNotifCollectionListeners) {
+                listener.onEntryCleanUp(entry);
+            }
+            mLogger.logInflationAborted(key, "pending", reason);
         }
         NotificationEntry addedEntry = getActiveNotificationUnfiltered(key);
         if (addedEntry != null) {
             addedEntry.abortTask();
-            mNotifLog.log(NotifEvent.INFLATION_ABORTED, addedEntry.getKey() + " " + reason);
+            mLogger.logInflationAborted(key, "active", reason);
         }
     }
 
@@ -302,17 +323,16 @@
     }
 
     @Override
-    public void onAsyncInflationFinished(NotificationEntry entry,
-            @InflationFlag int inflatedFlags) {
+    public void onAsyncInflationFinished(NotificationEntry entry) {
         mPendingNotifications.remove(entry.getKey());
         // If there was an async task started after the removal, we don't want to add it back to
         // the list, otherwise we might get leaks.
         if (!entry.isRowRemoved()) {
             boolean isNew = getActiveNotificationUnfiltered(entry.getKey()) == null;
+            mLogger.logNotifInflated(entry.getKey(), isNew);
             if (isNew) {
                 for (NotificationEntryListener listener : mNotificationEntryListeners) {
-                    mNotifLog.log(NotifEvent.INFLATED, entry);
-                    listener.onEntryInflated(entry, inflatedFlags);
+                    listener.onEntryInflated(entry);
                 }
                 addActiveNotification(entry);
                 updateNotifications("onAsyncInflationFinished");
@@ -321,7 +341,6 @@
                 }
             } else {
                 for (NotificationEntryListener listener : mNotificationEntryListeners) {
-                    mNotifLog.log(NotifEvent.INFLATED, entry);
                     listener.onEntryReinflated(entry);
                 }
             }
@@ -398,14 +417,16 @@
             boolean removedByUser,
             int reason) {
 
-        if (mRemoveInterceptor != null
-                && mRemoveInterceptor.onNotificationRemoveRequested(key, reason)) {
-            // Remove intercepted; log and skip
-            mNotifLog.log(NotifEvent.REMOVE_INTERCEPTED);
-            return;
+        final NotificationEntry entry = getActiveNotificationUnfiltered(key);
+
+        for (NotificationRemoveInterceptor interceptor : mRemoveInterceptors) {
+            if (interceptor.onNotificationRemoveRequested(key, entry, reason)) {
+                // Remove intercepted; log and skip
+                mLogger.logRemovalIntercepted(key);
+                return;
+            }
         }
 
-        final NotificationEntry entry = getActiveNotificationUnfiltered(key);
         boolean lifetimeExtended = false;
 
         // Notification was canceled before it got inflated
@@ -416,10 +437,7 @@
                     if (extender.shouldExtendLifetimeForPendingNotification(pendingEntry)) {
                         extendLifetime(pendingEntry, extender);
                         lifetimeExtended = true;
-                        mNotifLog.log(
-                                NotifEvent.LIFETIME_EXTENDED,
-                                pendingEntry.getSbn(),
-                                "pendingEntry extendedBy=" + extender.toString());
+                        mLogger.logLifetimeExtended(key, extender.getClass().getName(), "pending");
                     }
                 }
             }
@@ -439,10 +457,7 @@
                         mLatestRankingMap = ranking;
                         extendLifetime(entry, extender);
                         lifetimeExtended = true;
-                        mNotifLog.log(
-                                NotifEvent.LIFETIME_EXTENDED,
-                                entry.getSbn(),
-                                "entry extendedBy=" + extender.toString());
+                        mLogger.logLifetimeExtended(key, extender.getClass().getName(), "active");
                         break;
                     }
                 }
@@ -465,11 +480,17 @@
                 mLeakDetector.trackGarbage(entry);
                 removedByUser |= entryDismissed;
 
-                mNotifLog.log(NotifEvent.NOTIF_REMOVED, entry.getSbn(),
-                        "removedByUser=" + removedByUser);
+                mLogger.logNotifRemoved(entry.getKey(), removedByUser);
                 for (NotificationEntryListener listener : mNotificationEntryListeners) {
                     listener.onEntryRemoved(entry, visibility, removedByUser);
                 }
+                for (NotifCollectionListener listener : mNotifCollectionListeners) {
+                    // NEM doesn't have a good knowledge of reasons so defaulting to unknown.
+                    listener.onEntryRemoved(entry, REASON_UNKNOWN);
+                }
+                for (NotifCollectionListener listener : mNotifCollectionListeners) {
+                    listener.onEntryCleanUp(entry);
+                }
             }
         }
     }
@@ -528,10 +549,17 @@
         Ranking ranking = new Ranking();
         rankingMap.getRanking(key, ranking);
 
-        NotificationEntry entry = new NotificationEntry(notification, ranking);
+        NotificationEntry entry = new NotificationEntry(
+                notification,
+                ranking,
+                mFgsFeatureController.isForegroundServiceDismissalEnabled());
 
         mLeakDetector.trackInstance(entry);
 
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryInit(entry);
+        }
+
         // Construct the expanded view.
         if (!mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
             mNotificationRowBinderLazy.get()
@@ -541,10 +569,13 @@
 
         abortExistingInflation(key, "addNotification");
         mPendingNotifications.put(key, entry);
-        mNotifLog.log(NotifEvent.NOTIF_ADDED, entry);
+        mLogger.logNotifAdded(entry.getKey());
         for (NotificationEntryListener listener : mNotificationEntryListeners) {
             listener.onPendingEntryAdded(entry);
         }
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryAdded(entry);
+        }
     }
 
     public void addNotification(StatusBarNotification notification, RankingMap ranking) {
@@ -575,10 +606,13 @@
         entry.setSbn(notification);
         mGroupManager.onEntryUpdated(entry, oldSbn);
 
-        mNotifLog.log(NotifEvent.NOTIF_UPDATED, entry);
+        mLogger.logNotifUpdated(entry.getKey());
         for (NotificationEntryListener listener : mNotificationEntryListeners) {
             listener.onPreEntryUpdated(entry);
         }
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryUpdated(entry);
+        }
 
         if (!mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
             mNotificationRowBinderLazy.get()
@@ -653,6 +687,9 @@
         for (NotificationEntryListener listener : mNotificationEntryListeners) {
             listener.onNotificationRankingUpdated(rankingMap);
         }
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onRankingUpdate(rankingMap);
+        }
     }
 
     private void updateRankingOfPendingNotifications(@Nullable RankingMap rankingMap) {
@@ -764,7 +801,7 @@
     //TODO: Get rid of this in favor of NotificationUpdateHandler#updateNotificationRanking
     /**
      * @param rankingMap the {@link RankingMap} to apply to the current notification list
-     * @param reason the reason for calling this method, for {@link NotifLog}
+     * @param reason the reason for calling this method, which will be logged
      */
     public void updateRanking(RankingMap rankingMap, String reason) {
         updateRankingAndSort(rankingMap, reason);
@@ -841,6 +878,11 @@
         return mReadOnlyNotifications.size() != 0;
     }
 
+    @Override
+    public void addCollectionListener(NotifCollectionListener listener) {
+        mNotifCollectionListeners.add(listener);
+    }
+
     /*
      * End annexation
      * -----
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManagerLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManagerLogger.kt
new file mode 100644
index 0000000..4382ab5
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/NotificationEntryManagerLogger.kt
@@ -0,0 +1,100 @@
+/*
+ * 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.systemui.statusbar.notification
+
+import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.LogLevel.DEBUG
+import com.android.systemui.log.LogLevel.INFO
+import com.android.systemui.log.dagger.NotificationLog
+import javax.inject.Inject
+
+/** Logger for [NotificationEntryManager]. */
+class NotificationEntryManagerLogger @Inject constructor(
+    @NotificationLog private val buffer: LogBuffer
+) {
+    fun logNotifAdded(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "NOTIF ADDED $str1"
+        })
+    }
+
+    fun logNotifUpdated(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "NOTIF UPDATED $str1"
+        })
+    }
+
+    fun logInflationAborted(key: String, status: String, reason: String) {
+        buffer.log(TAG, DEBUG, {
+            str1 = key
+            str2 = status
+            str3 = reason
+        }, {
+            "NOTIF INFLATION ABORTED $str1 notifStatus=$str2 reason=$str3"
+        })
+    }
+
+    fun logNotifInflated(key: String, isNew: Boolean) {
+        buffer.log(TAG, DEBUG, {
+            str1 = key
+            bool1 = isNew
+        }, {
+            "NOTIF INFLATED $str1 isNew=$bool1}"
+        })
+    }
+
+    fun logRemovalIntercepted(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "NOTIF REMOVE INTERCEPTED for $str1"
+        })
+    }
+
+    fun logLifetimeExtended(key: String, extenderName: String, status: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+            str2 = extenderName
+            str3 = status
+        }, {
+            "NOTIF LIFETIME EXTENDED $str1 extender=$str2 status=$str3"
+        })
+    }
+
+    fun logNotifRemoved(key: String, removedByUser: Boolean) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+            bool1 = removedByUser
+        }, {
+            "NOTIF REMOVED $str1 removedByUser=$bool1"
+        })
+    }
+
+    fun logFilterAndSort(reason: String) {
+        buffer.log(TAG, INFO, {
+            str1 = reason
+        }, {
+            "FILTER AND SORT reason=$str1"
+        })
+    }
+}
+
+private const val TAG = "NotificationEntryMgr"
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
index eaa9d78..b5c81b2 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ListDumper.java
@@ -16,6 +16,9 @@
 
 package com.android.systemui.statusbar.notification.collection;
 
+import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.NOT_DISMISSED;
+
 import java.util.Arrays;
 import java.util.List;
 
@@ -120,6 +123,16 @@
                         .append(" ");
             }
 
+            if (!notifEntry.mDismissInterceptors.isEmpty()) {
+                String[] interceptorsNames = new String[notifEntry.mDismissInterceptors.size()];
+                for (int i = 0; i < interceptorsNames.length; i++) {
+                    interceptorsNames[i] = notifEntry.mDismissInterceptors.get(i).getName();
+                }
+                rksb.append("dismissInterceptors=")
+                        .append(Arrays.toString(interceptorsNames))
+                        .append(" ");
+            }
+
             if (notifEntry.mExcludingFilter != null) {
                 rksb.append("filter=")
                         .append(notifEntry.mExcludingFilter)
@@ -132,8 +145,16 @@
                         .append(" ");
             }
 
-            if (notifEntry.hasInflationError()) {
-                rksb.append("hasInflationError ");
+            if (notifEntry.mCancellationReason != REASON_NOT_CANCELED) {
+                rksb.append("cancellationReason=")
+                        .append(notifEntry.mCancellationReason)
+                        .append(" ");
+            }
+
+            if (notifEntry.getDismissState() != NOT_DISMISSED) {
+                rksb.append("dismissState=")
+                        .append(notifEntry.getDismissState())
+                        .append(" ");
             }
 
             String rkString = rksb.toString();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
index 92927cf..91d2de7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifCollection.java
@@ -35,15 +35,27 @@
 import static android.service.notification.NotificationListenerService.REASON_UNAUTOBUNDLED;
 import static android.service.notification.NotificationListenerService.REASON_USER_STOPPED;
 
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.DISMISSED;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.NOT_DISMISSED;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.PARENT_DISMISSED;
+
+import static java.util.Objects.requireNonNull;
+
 import android.annotation.IntDef;
 import android.annotation.MainThread;
-import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.Notification;
 import android.os.RemoteException;
+import android.os.UserHandle;
+import android.service.notification.NotificationListenerService;
 import android.service.notification.NotificationListenerService.Ranking;
 import android.service.notification.NotificationListenerService.RankingMap;
 import android.service.notification.StatusBarNotification;
 import android.util.ArrayMap;
+import android.util.Pair;
+
+import androidx.annotation.NonNull;
 
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.systemui.DumpController;
@@ -56,6 +68,7 @@
 import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionLogger;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
 import com.android.systemui.util.Assert;
 
@@ -92,8 +105,8 @@
  * {@link #addNotificationLifetimeExtender(NotifLifetimeExtender)}).
  *
  * Interested parties can register listeners
- * ({@link #addCollectionListener(NotifCollectionListener)}) to be informed when notifications are
- * added, updated, or removed.
+ * ({@link #addCollectionListener(NotifCollectionListener)}) to be informed when notifications
+ * events occur.
  */
 @MainThread
 @Singleton
@@ -109,6 +122,7 @@
     @Nullable private CollectionReadyForBuildListener mBuildListener;
     private final List<NotifCollectionListener> mNotifCollectionListeners = new ArrayList<>();
     private final List<NotifLifetimeExtender> mLifetimeExtenders = new ArrayList<>();
+    private final List<NotifDismissInterceptor> mDismissInterceptors = new ArrayList<>();
 
     private boolean mAttached = false;
     private boolean mAmDispatchingToOtherCode;
@@ -169,18 +183,144 @@
         extender.setCallback(this::onEndLifetimeExtension);
     }
 
-    /**
-     * Dismiss a notification on behalf of the user.
-     */
-    void dismissNotification(
-            NotificationEntry entry,
-            @CancellationReason int reason,
-            @NonNull DismissedByUserStats stats) {
+    /** @see NotifPipeline#addNotificationDismissInterceptor(NotifDismissInterceptor) */
+    void addNotificationDismissInterceptor(NotifDismissInterceptor interceptor) {
         Assert.isMainThread();
-        Objects.requireNonNull(stats);
+        checkForReentrantCall();
+        if (mDismissInterceptors.contains(interceptor)) {
+            throw new IllegalArgumentException("Interceptor " + interceptor + " already added.");
+        }
+        mDismissInterceptors.add(interceptor);
+        interceptor.setCallback(this::onEndDismissInterception);
+    }
+
+    /**
+     * Dismisses multiple notifications on behalf of the user.
+     */
+    public void dismissNotifications(
+            List<Pair<NotificationEntry, DismissedByUserStats>> entriesToDismiss) {
+        Assert.isMainThread();
         checkForReentrantCall();
 
-        removeNotification(entry.getKey(), null, reason, stats);
+        final List<NotificationEntry> entriesToLocallyDismiss = new ArrayList<>();
+        for (int i = 0; i < entriesToDismiss.size(); i++) {
+            NotificationEntry entry = entriesToDismiss.get(i).first;
+            DismissedByUserStats stats = entriesToDismiss.get(i).second;
+
+            requireNonNull(stats);
+            if (entry != mNotificationSet.get(entry.getKey())) {
+                throw new IllegalStateException("Invalid entry: " + entry.getKey());
+            }
+
+            if (entry.getDismissState() == DISMISSED) {
+                continue;
+            }
+
+            updateDismissInterceptors(entry);
+            if (isDismissIntercepted(entry)) {
+                mLogger.logNotifDismissedIntercepted(entry.getKey());
+                continue;
+            }
+
+            entriesToLocallyDismiss.add(entry);
+            if (!isCanceled(entry)) {
+                // send message to system server if this notification hasn't already been cancelled
+                try {
+                    mStatusBarService.onNotificationClear(
+                            entry.getSbn().getPackageName(),
+                            entry.getSbn().getTag(),
+                            entry.getSbn().getId(),
+                            entry.getSbn().getUser().getIdentifier(),
+                            entry.getSbn().getKey(),
+                            stats.dismissalSurface,
+                            stats.dismissalSentiment,
+                            stats.notificationVisibility);
+                } catch (RemoteException e) {
+                    // system process is dead if we're here.
+                }
+            }
+        }
+
+        locallyDismissNotifications(entriesToLocallyDismiss);
+        rebuildList();
+    }
+
+    /**
+     * Dismisses a single notification on behalf of the user.
+     */
+    public void dismissNotification(
+            NotificationEntry entry,
+            @NonNull DismissedByUserStats stats) {
+        dismissNotifications(List.of(
+                new Pair<NotificationEntry, DismissedByUserStats>(entry, stats)));
+    }
+
+    /**
+     * Dismisses all clearable notifications for a given userid on behalf of the user.
+     */
+    public void dismissAllNotifications(@UserIdInt int userId) {
+        Assert.isMainThread();
+        checkForReentrantCall();
+
+        try {
+            mStatusBarService.onClearAllNotifications(userId);
+        } catch (RemoteException e) {
+            // system process is dead if we're here.
+        }
+
+        final List<NotificationEntry> entries = new ArrayList(getActiveNotifs());
+        for (int i = entries.size() - 1; i >= 0; i--) {
+            NotificationEntry entry = entries.get(i);
+            if (!shouldDismissOnClearAll(entry, userId)) {
+                // system server won't be removing these notifications, but we still give dismiss
+                // interceptors the chance to filter the notification
+                updateDismissInterceptors(entry);
+                if (isDismissIntercepted(entry)) {
+                    mLogger.logNotifClearAllDismissalIntercepted(entry.getKey());
+                }
+                entries.remove(i);
+            }
+        }
+
+        locallyDismissNotifications(entries);
+        rebuildList();
+    }
+
+    /**
+     * Optimistically marks the given notifications as dismissed -- we'll wait for the signal
+     * from system server before removing it from our notification set.
+     */
+    private void locallyDismissNotifications(List<NotificationEntry> entries) {
+        final List<NotificationEntry> canceledEntries = new ArrayList<>();
+
+        for (int i = 0; i < entries.size(); i++) {
+            NotificationEntry entry = entries.get(i);
+
+            entry.setDismissState(DISMISSED);
+            mLogger.logNotifDismissed(entry.getKey());
+
+            if (isCanceled(entry)) {
+                canceledEntries.add(entry);
+            } else {
+                // Mark any children as dismissed as system server will auto-dismiss them as well
+                if (entry.getSbn().getNotification().isGroupSummary()) {
+                    for (NotificationEntry otherEntry : mNotificationSet.values()) {
+                        if (shouldAutoDismissChildren(otherEntry, entry.getSbn().getGroupKey())) {
+                            otherEntry.setDismissState(PARENT_DISMISSED);
+                            if (isCanceled(otherEntry)) {
+                                canceledEntries.add(otherEntry);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+
+        // Immediately remove any dismissed notifs that have already been canceled by system server
+        // (probably due to being lifetime-extended up until this point).
+        for (NotificationEntry canceledEntry : canceledEntries) {
+            tryRemoveNotification(canceledEntry);
+        }
     }
 
     private void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
@@ -208,12 +348,21 @@
         Assert.isMainThread();
 
         mLogger.logNotifRemoved(sbn.getKey(), reason);
-        removeNotification(sbn.getKey(), rankingMap, reason, null);
+
+        final NotificationEntry entry = mNotificationSet.get(sbn.getKey());
+        if (entry == null) {
+            throw new IllegalStateException("No notification to remove with key " + sbn.getKey());
+        }
+        entry.mCancellationReason = reason;
+        applyRanking(rankingMap);
+        tryRemoveNotification(entry);
+        rebuildList();
     }
 
     private void onNotificationRankingUpdate(RankingMap rankingMap) {
         Assert.isMainThread();
         applyRanking(rankingMap);
+        dispatchNotificationRankingUpdate(rankingMap);
         rebuildList();
     }
 
@@ -229,6 +378,8 @@
 
             entry = new NotificationEntry(sbn, ranking);
             mNotificationSet.put(sbn.getKey(), entry);
+            dispatchOnEntryInit(entry);
+
             if (rankingMap != null) {
                 applyRanking(rankingMap);
             }
@@ -239,9 +390,12 @@
             // Update to an existing entry
             mLogger.logNotifUpdated(sbn.getKey());
 
-            // Notification is updated so it is essentially re-added and thus alive again.  Don't
-            // need to keep its lifetime extended.
+            // Notification is updated so it is essentially re-added and thus alive again, so we
+            // can reset its state.
+            cancelLocalDismissal(entry);
             cancelLifetimeExtension(entry);
+            cancelDismissInterception(entry);
+            entry.mCancellationReason = REASON_NOT_CANCELED;
 
             entry.setSbn(sbn);
             if (rankingMap != null) {
@@ -252,70 +406,63 @@
         }
     }
 
-    private void removeNotification(
-            String key,
-            @Nullable RankingMap rankingMap,
-            @CancellationReason int reason,
-            @Nullable DismissedByUserStats dismissedByUserStats) {
-
-        NotificationEntry entry = mNotificationSet.get(key);
-        if (entry == null) {
-            throw new IllegalStateException("No notification to remove with key " + key);
+    /**
+     * Tries to remove a notification from the notification set. This removal may be blocked by
+     * lifetime extenders. Does not trigger a rebuild of the list; caller must do that manually.
+     *
+     * @return True if the notification was removed, false otherwise.
+     */
+    private boolean tryRemoveNotification(NotificationEntry entry) {
+        if (mNotificationSet.get(entry.getKey()) != entry) {
+            throw new IllegalStateException("No notification to remove with key " + entry.getKey());
         }
 
-        entry.mLifetimeExtenders.clear();
-        mAmDispatchingToOtherCode = true;
-        for (NotifLifetimeExtender extender : mLifetimeExtenders) {
-            if (extender.shouldExtendLifetime(entry, reason)) {
-                entry.mLifetimeExtenders.add(extender);
-            }
+        if (!isCanceled(entry)) {
+            throw new IllegalStateException("Cannot remove notification " + entry.getKey()
+                        + ": has not been marked for removal");
         }
-        mAmDispatchingToOtherCode = false;
+
+        if (isDismissedByUser(entry)) {
+            // User-dismissed notifications cannot be lifetime-extended
+            cancelLifetimeExtension(entry);
+        } else {
+            updateLifetimeExtension(entry);
+        }
 
         if (!isLifetimeExtended(entry)) {
             mNotificationSet.remove(entry.getKey());
-
-            if (dismissedByUserStats != null) {
-                try {
-                    mStatusBarService.onNotificationClear(
-                            entry.getSbn().getPackageName(),
-                            entry.getSbn().getTag(),
-                            entry.getSbn().getId(),
-                            entry.getSbn().getUser().getIdentifier(),
-                            entry.getSbn().getKey(),
-                            dismissedByUserStats.dismissalSurface,
-                            dismissedByUserStats.dismissalSentiment,
-                            dismissedByUserStats.notificationVisibility);
-                } catch (RemoteException e) {
-                    // system process is dead if we're here.
-                }
-            }
-
-            if (rankingMap != null) {
-                applyRanking(rankingMap);
-            }
-
-            dispatchOnEntryRemoved(entry, reason, dismissedByUserStats != null /* removedByUser */);
+            cancelDismissInterception(entry);
+            dispatchOnEntryRemoved(entry, entry.mCancellationReason);
+            dispatchOnEntryCleanUp(entry);
+            return true;
+        } else {
+            return false;
         }
-
-        rebuildList();
     }
 
     private void applyRanking(@NonNull RankingMap rankingMap) {
         for (NotificationEntry entry : mNotificationSet.values()) {
-            if (!isLifetimeExtended(entry)) {
-                Ranking ranking = requireRanking(rankingMap, entry.getKey());
-                entry.setRanking(ranking);
+            if (!isCanceled(entry)) {
 
-                // TODO: (b/145659174) update the sbn's overrideGroupKey in
-                //  NotificationEntry.setRanking instead of here once we fully migrate to the
-                //  NewNotifPipeline
-                if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
-                    final String newOverrideGroupKey = ranking.getOverrideGroupKey();
-                    if (!Objects.equals(entry.getSbn().getOverrideGroupKey(),
-                            newOverrideGroupKey)) {
-                        entry.getSbn().setOverrideGroupKey(newOverrideGroupKey);
+                // TODO: (b/148791039) We should crash if we are ever handed a ranking with
+                //  incomplete entries. Right now, there's a race condition in NotificationListener
+                //  that means this might occur when SystemUI is starting up.
+                Ranking ranking = new Ranking();
+                if (rankingMap.getRanking(entry.getKey(), ranking)) {
+                    entry.setRanking(ranking);
+
+                    // TODO: (b/145659174) update the sbn's overrideGroupKey in
+                    //  NotificationEntry.setRanking instead of here once we fully migrate to the
+                    //  NewNotifPipeline
+                    if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+                        final String newOverrideGroupKey = ranking.getOverrideGroupKey();
+                        if (!Objects.equals(entry.getSbn().getOverrideGroupKey(),
+                                newOverrideGroupKey)) {
+                            entry.getSbn().setOverrideGroupKey(newOverrideGroupKey);
+                        }
                     }
+                } else {
+                    mLogger.logRankingMissing(entry.getKey(), rankingMap);
                 }
             }
         }
@@ -343,9 +490,9 @@
         }
 
         if (!isLifetimeExtended(entry)) {
-            // TODO: This doesn't need to be undefined -- we can set either EXTENDER_EXPIRED or
-            // save the original reason
-            removeNotification(entry.getKey(), null, REASON_UNKNOWN, null);
+            if (tryRemoveNotification(entry)) {
+                rebuildList();
+            }
         }
     }
 
@@ -362,6 +509,78 @@
         return entry.mLifetimeExtenders.size() > 0;
     }
 
+    private void updateLifetimeExtension(NotificationEntry entry) {
+        entry.mLifetimeExtenders.clear();
+        mAmDispatchingToOtherCode = true;
+        for (NotifLifetimeExtender extender : mLifetimeExtenders) {
+            if (extender.shouldExtendLifetime(entry, entry.mCancellationReason)) {
+                entry.mLifetimeExtenders.add(extender);
+            }
+        }
+        mAmDispatchingToOtherCode = false;
+    }
+
+    private void updateDismissInterceptors(@NonNull NotificationEntry entry) {
+        entry.mDismissInterceptors.clear();
+        mAmDispatchingToOtherCode = true;
+        for (NotifDismissInterceptor interceptor : mDismissInterceptors) {
+            if (interceptor.shouldInterceptDismissal(entry)) {
+                entry.mDismissInterceptors.add(interceptor);
+            }
+        }
+        mAmDispatchingToOtherCode = false;
+    }
+
+    private void cancelLocalDismissal(NotificationEntry entry) {
+        if (isDismissedByUser(entry)) {
+            entry.setDismissState(NOT_DISMISSED);
+            if (entry.getSbn().getNotification().isGroupSummary()) {
+                for (NotificationEntry otherEntry : mNotificationSet.values()) {
+                    if (otherEntry.getSbn().getGroupKey().equals(entry.getSbn().getGroupKey())
+                            && otherEntry.getDismissState() == PARENT_DISMISSED) {
+                        otherEntry.setDismissState(NOT_DISMISSED);
+                    }
+                }
+            }
+        }
+    }
+
+    private void onEndDismissInterception(
+            NotifDismissInterceptor interceptor,
+            NotificationEntry entry,
+            @NonNull DismissedByUserStats stats) {
+        Assert.isMainThread();
+        if (!mAttached) {
+            return;
+        }
+        checkForReentrantCall();
+
+        if (!entry.mDismissInterceptors.remove(interceptor)) {
+            throw new IllegalStateException(
+                    String.format(
+                            "Cannot end dismiss interceptor for interceptor \"%s\" (%s)",
+                            interceptor.getName(),
+                            interceptor));
+        }
+
+        if (!isDismissIntercepted(entry)) {
+            dismissNotification(entry, stats);
+        }
+    }
+
+    private void cancelDismissInterception(NotificationEntry entry) {
+        mAmDispatchingToOtherCode = true;
+        for (NotifDismissInterceptor interceptor : entry.mDismissInterceptors) {
+            interceptor.cancelDismissInterception(entry);
+        }
+        mAmDispatchingToOtherCode = false;
+        entry.mDismissInterceptors.clear();
+    }
+
+    private boolean isDismissIntercepted(NotificationEntry entry) {
+        return entry.mDismissInterceptors.size() > 0;
+    }
+
     private void checkForReentrantCall() {
         if (mAmDispatchingToOtherCode) {
             throw new IllegalStateException("Reentrant call detected");
@@ -377,6 +596,78 @@
         return ranking;
     }
 
+    /**
+     * True if the notification has been canceled by system server. Usually, such notifications are
+     * immediately removed from the collection, but can sometimes stick around due to lifetime
+     * extenders.
+     */
+    private static boolean isCanceled(NotificationEntry entry) {
+        return entry.mCancellationReason != REASON_NOT_CANCELED;
+    }
+
+    private static boolean isDismissedByUser(NotificationEntry entry) {
+        return entry.getDismissState() != NOT_DISMISSED;
+    }
+
+    /**
+     * When a group summary is dismissed, NotificationManager will also try to dismiss its children.
+     * Returns true if we think dismissing the group summary with group key
+     * <code>dismissedGroupKey</code> will cause NotificationManager to also dismiss
+     * <code>entry</code>.
+     *
+     * See NotificationManager.cancelGroupChildrenByListLocked() for corresponding code.
+     */
+    private static boolean shouldAutoDismissChildren(
+            NotificationEntry entry,
+            String dismissedGroupKey) {
+        return entry.getSbn().getGroupKey().equals(dismissedGroupKey)
+                && !entry.getSbn().getNotification().isGroupSummary()
+                && !hasFlag(entry, Notification.FLAG_FOREGROUND_SERVICE)
+                && !hasFlag(entry, Notification.FLAG_BUBBLE)
+                && entry.getDismissState() != DISMISSED;
+    }
+
+    /**
+     * When the user 'clears all notifications' through SystemUI, NotificationManager will not
+     * dismiss unclearable notifications.
+     * @return true if we think NotificationManager will dismiss the entry when asked to
+     * cancel this notification with {@link NotificationListenerService#REASON_CANCEL_ALL}
+     *
+     * See NotificationManager.cancelAllLocked for corresponding code.
+     */
+    private static boolean shouldDismissOnClearAll(
+            NotificationEntry entry,
+            @UserIdInt int userId) {
+        return userIdMatches(entry, userId)
+                && entry.isClearable()
+                && !hasFlag(entry, Notification.FLAG_BUBBLE)
+                && entry.getDismissState() != DISMISSED;
+    }
+
+    private static boolean hasFlag(NotificationEntry entry, int flag) {
+        return (entry.getSbn().getNotification().flags & flag) != 0;
+    }
+
+    /**
+     * Determine whether the userId applies to the notification in question, either because
+     * they match exactly, or one of them is USER_ALL (which is treated as a wildcard).
+     *
+     * See NotificationManager#notificationMatchesUserId
+     */
+    private static boolean userIdMatches(NotificationEntry entry, int userId) {
+        return userId == UserHandle.USER_ALL
+                || entry.getSbn().getUser().getIdentifier() == UserHandle.USER_ALL
+                || entry.getSbn().getUser().getIdentifier() == userId;
+    }
+
+    private void dispatchOnEntryInit(NotificationEntry entry) {
+        mAmDispatchingToOtherCode = true;
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryInit(entry);
+        }
+        mAmDispatchingToOtherCode = false;
+    }
+
     private void dispatchOnEntryAdded(NotificationEntry entry) {
         mAmDispatchingToOtherCode = true;
         for (NotifCollectionListener listener : mNotifCollectionListeners) {
@@ -393,17 +684,45 @@
         mAmDispatchingToOtherCode = false;
     }
 
-    private void dispatchOnEntryRemoved(
-            NotificationEntry entry,
-            @CancellationReason int reason,
-            boolean removedByUser) {
+    private void dispatchNotificationRankingUpdate(RankingMap map) {
         mAmDispatchingToOtherCode = true;
         for (NotifCollectionListener listener : mNotifCollectionListeners) {
-            listener.onEntryRemoved(entry, reason, removedByUser);
+            listener.onRankingUpdate(map);
         }
         mAmDispatchingToOtherCode = false;
     }
 
+    private void dispatchOnEntryRemoved(NotificationEntry entry, @CancellationReason int reason) {
+        mAmDispatchingToOtherCode = true;
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryRemoved(entry, reason);
+        }
+        mAmDispatchingToOtherCode = false;
+    }
+
+    private void dispatchOnEntryCleanUp(NotificationEntry entry) {
+        mAmDispatchingToOtherCode = true;
+        for (NotifCollectionListener listener : mNotifCollectionListeners) {
+            listener.onEntryCleanUp(entry);
+        }
+        mAmDispatchingToOtherCode = false;
+    }
+
+    @Override
+    public void dump(@NonNull FileDescriptor fd, PrintWriter pw, @NonNull String[] args) {
+        final List<NotificationEntry> entries = new ArrayList<>(getActiveNotifs());
+
+        pw.println("\t" + TAG + " unsorted/unfiltered notifications:");
+        if (entries.size() == 0) {
+            pw.println("\t\t None");
+        }
+        pw.println(
+                ListDumper.dumpList(
+                        entries,
+                        true,
+                        "\t\t"));
+    }
+
     private final BatchableNotificationHandler mNotifHandler = new BatchableNotificationHandler() {
         @Override
         public void onNotificationPosted(StatusBarNotification sbn, RankingMap rankingMap) {
@@ -458,20 +777,6 @@
     @Retention(RetentionPolicy.SOURCE)
     public @interface CancellationReason {}
 
+    public static final int REASON_NOT_CANCELED = -1;
     public static final int REASON_UNKNOWN = 0;
-
-    @Override
-    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        final List<NotificationEntry> entries = new ArrayList<>(getActiveNotifs());
-
-        pw.println("\t" + TAG + " unsorted/unfiltered notifications:");
-        if (entries.size() == 0) {
-            pw.println("\t\t None");
-        }
-        pw.println(
-                ListDumper.dumpList(
-                        entries,
-                        true,
-                        "\t\t"));
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
index e7b772f..1f6413b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifInflaterImpl.java
@@ -18,9 +18,7 @@
 
 import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
 
-import android.os.RemoteException;
 import android.service.notification.NotificationStats;
-import android.service.notification.StatusBarNotification;
 
 import com.android.internal.statusbar.IStatusBarService;
 import com.android.internal.statusbar.NotificationVisibility;
@@ -29,6 +27,7 @@
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
 import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
+import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
 import com.android.systemui.statusbar.notification.row.NotificationContentInflater;
 
 import javax.inject.Inject;
@@ -44,6 +43,8 @@
 
     private final IStatusBarService mStatusBarService;
     private final NotifCollection mNotifCollection;
+    private final NotifInflationErrorManager mNotifErrorManager;
+    private final NotifPipeline mNotifPipeline;
 
     private NotificationRowBinderImpl mNotificationRowBinder;
     private InflationCallback mExternalInflationCallback;
@@ -51,9 +52,13 @@
     @Inject
     public NotifInflaterImpl(
             IStatusBarService statusBarService,
-            NotifCollection notifCollection) {
+            NotifCollection notifCollection,
+            NotifInflationErrorManager errorManager,
+            NotifPipeline notifPipeline) {
         mStatusBarService = statusBarService;
         mNotifCollection = notifCollection;
+        mNotifErrorManager = errorManager;
+        mNotifPipeline = notifPipeline;
     }
 
     /**
@@ -81,7 +86,6 @@
     @Override
     public void inflateViews(NotificationEntry entry) {
         try {
-            entry.setHasInflationError(false);
             requireBinder().inflateViews(entry, getDismissCallback(entry));
         } catch (InflationException e) {
             // logged in mInflationCallback.handleInflationException
@@ -98,19 +102,18 @@
             @Override
             public void run() {
                 int dismissalSurface = NotificationStats.DISMISSAL_SHADE;
-                /**
+                /*
                  * TODO: determine dismissal surface (ie: shade / headsup / aod)
                  * see {@link NotificationLogger#logNotificationClear}
                  */
                 mNotifCollection.dismissNotification(
                         entry,
-                        0,
                         new DismissedByUserStats(
                                 dismissalSurface,
                                 DISMISS_SENTIMENT_NEUTRAL,
                                 NotificationVisibility.obtain(entry.getKey(),
                                         entry.getRanking().getRank(),
-                                        mNotifCollection.getActiveNotifs().size(),
+                                        mNotifPipeline.getShadeListCount(),
                                         true,
                                         NotificationLogger.getNotificationLocation(entry))
                         ));
@@ -132,27 +135,12 @@
                 public void handleInflationException(
                         NotificationEntry entry,
                         Exception e) {
-                    entry.setHasInflationError(true);
-                    try {
-                        final StatusBarNotification sbn = entry.getSbn();
-                        // report notification inflation errors back up
-                        // to notification delegates
-                        mStatusBarService.onNotificationError(
-                                sbn.getPackageName(),
-                                sbn.getTag(),
-                                sbn.getId(),
-                                sbn.getUid(),
-                                sbn.getInitialPid(),
-                                e.getMessage(),
-                                sbn.getUserId());
-                    } catch (RemoteException ex) {
-                    }
+                    mNotifErrorManager.setInflationError(entry, e);
                 }
 
                 @Override
-                public void onAsyncInflationFinished(
-                        NotificationEntry entry,
-                        int inflatedFlags) {
+                public void onAsyncInflationFinished(NotificationEntry entry) {
+                    mNotifErrorManager.clearInflationError(entry);
                     if (mExternalInflationCallback != null) {
                         mExternalInflationCallback.onInflationFinished(entry);
                     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
index 0377f57..44cec966 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotifPipeline.java
@@ -23,7 +23,9 @@
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifSection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
 
 import java.util.Collection;
@@ -66,7 +68,7 @@
  *  9. The list is handed off to the view layer to be rendered
  */
 @Singleton
-public class NotifPipeline {
+public class NotifPipeline implements CommonNotifCollection {
     private final NotifCollection mNotifCollection;
     private final ShadeListBuilder mShadeListBuilder;
 
@@ -89,22 +91,28 @@
         return mNotifCollection.getActiveNotifs();
     }
 
-    /**
-     * Registers a listener to be informed when notifications are added, removed or updated.
-     */
+    @Override
     public void addCollectionListener(NotifCollectionListener listener) {
         mNotifCollection.addCollectionListener(listener);
     }
 
     /**
      * Registers a lifetime extender. Lifetime extenders can cause notifications that have been
-     * dismissed or retracted to be temporarily retained in the collection.
+     * dismissed or retracted by system server to be temporarily retained in the collection.
      */
     public void addNotificationLifetimeExtender(NotifLifetimeExtender extender) {
         mNotifCollection.addNotificationLifetimeExtender(extender);
     }
 
     /**
+     * Registers a dismiss interceptor. Dismiss interceptors can cause notifications that have been
+     * dismissed by the user to be retained (won't send a dismissal to system server).
+     */
+    public void addNotificationDismissInterceptor(NotifDismissInterceptor interceptor) {
+        mNotifCollection.addNotificationDismissInterceptor(interceptor);
+    }
+
+    /**
      * Registers a filter with the pipeline before grouping, promoting and sorting occurs. Filters
      * are called on each notification in the order that they were registered. If any filter
      * returns true, the notification is removed from the pipeline (and no other filters are
@@ -187,4 +195,27 @@
     public List<ListEntry> getShadeList() {
         return mShadeListBuilder.getShadeList();
     }
+
+    /**
+     * Returns the number of notifications currently shown in the shade. This includes all
+     * children and summary notifications. If this method is called during pipeline execution it
+     * will return the number of notifications in its current state, which will likely be only
+     * partially-generated.
+     */
+    public int getShadeListCount() {
+        final List<ListEntry> entries = getShadeList();
+        int numNotifs = 0;
+        for (int i = 0; i < entries.size(); i++) {
+            final ListEntry entry = entries.get(i);
+            if (entry instanceof GroupEntry) {
+                final GroupEntry parentEntry = (GroupEntry) entry;
+                numNotifs++; // include the summary in the count
+                numNotifs += parentEntry.getChildren().size();
+            } else {
+                numNotifs++;
+            }
+        }
+
+        return numNotifs;
+    }
 }
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 1f77ec2..f482d37 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
@@ -22,6 +22,7 @@
 import static android.app.Notification.CATEGORY_MESSAGE;
 import static android.app.Notification.CATEGORY_REMINDER;
 import static android.app.Notification.FLAG_BUBBLE;
+import static android.app.Notification.FLAG_FOREGROUND_SERVICE;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
@@ -29,9 +30,11 @@
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_PEEK;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
 
+import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED;
 import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_ALERTING;
 
-import android.annotation.NonNull;
+import static java.util.Objects.requireNonNull;
+
 import android.app.Notification;
 import android.app.Notification.MessagingStyle.Message;
 import android.app.NotificationChannel;
@@ -50,6 +53,7 @@
 import android.view.View;
 import android.widget.ImageView;
 
+import androidx.annotation.NonNull;
 import androidx.annotation.Nullable;
 
 import com.android.internal.annotations.VisibleForTesting;
@@ -59,10 +63,13 @@
 import com.android.systemui.statusbar.InflationTask;
 import com.android.systemui.statusbar.StatusBarIconView;
 import com.android.systemui.statusbar.notification.InflationException;
+import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason;
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifPromoter;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
 import com.android.systemui.statusbar.notification.row.NotificationGuts;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager;
@@ -99,15 +106,24 @@
     /** List of lifetime extenders that are extending the lifetime of this notification. */
     final List<NotifLifetimeExtender> mLifetimeExtenders = new ArrayList<>();
 
+    /** List of dismiss interceptors that are intercepting the dismissal of this notification. */
+    final List<NotifDismissInterceptor> mDismissInterceptors = new ArrayList<>();
+
     /** If this notification was filtered out, then the filter that did the filtering. */
     @Nullable NotifFilter mExcludingFilter;
 
     /** If this was a group child that was promoted to the top level, then who did the promoting. */
     @Nullable NotifPromoter mNotifPromoter;
 
-    /** If this notification had an issue with inflating. Only used with the NewNotifPipeline **/
-    private boolean mHasInflationError;
+    /**
+     * If this notification was cancelled by system server, then the reason that was supplied.
+     * Uncancelled notifications always have REASON_NOT_CANCELED. Note that lifetime-extended
+     * notifications will have this set even though they are still in the active notification set.
+     */
+    @CancellationReason int mCancellationReason = REASON_NOT_CANCELED;
 
+    /** @see #getDismissState() */
+    @NonNull private DismissState mDismissState = DismissState.NOT_DISMISSED;
 
     /*
     * Old members
@@ -135,6 +151,7 @@
 
     private NotificationEntry parent; // our parent (if we're in a group)
     private ExpandableNotificationRow row; // the outer expanded view
+    private ExpandableNotificationRowController mRowController;
 
     private int mCachedContrastColor = COLOR_INVALID;
     private int mCachedContrastColorIsFor = COLOR_INVALID;
@@ -164,18 +181,29 @@
     private Runnable mOnSensitiveChangedListener;
     private boolean mAutoHeadsUp;
     private boolean mPulseSupressed;
+    private boolean mAllowFgsDismissal;
     private int mBucket = BUCKET_ALERTING;
 
     public NotificationEntry(
             @NonNull StatusBarNotification sbn,
             @NonNull Ranking ranking) {
-        super(Objects.requireNonNull(Objects.requireNonNull(sbn).getKey()));
+        this(sbn, ranking, false);
+    }
 
-        Objects.requireNonNull(ranking);
+    public NotificationEntry(
+            @NonNull StatusBarNotification sbn,
+            @NonNull Ranking ranking,
+            boolean allowFgsDismissal
+    ) {
+        super(requireNonNull(Objects.requireNonNull(sbn).getKey()));
+
+        requireNonNull(ranking);
 
         mKey = sbn.getKey();
         setSbn(sbn);
         setRanking(ranking);
+
+        mAllowFgsDismissal = allowFgsDismissal;
     }
 
     @Override
@@ -201,8 +229,8 @@
      * TODO: Make this package-private
      */
     public void setSbn(@NonNull StatusBarNotification sbn) {
-        Objects.requireNonNull(sbn);
-        Objects.requireNonNull(sbn.getKey());
+        requireNonNull(sbn);
+        requireNonNull(sbn.getKey());
 
         if (!sbn.getKey().equals(mKey)) {
             throw new IllegalArgumentException("New key " + sbn.getKey()
@@ -227,8 +255,8 @@
      * TODO: Make this package-private
      */
     public void setRanking(@NonNull Ranking ranking) {
-        Objects.requireNonNull(ranking);
-        Objects.requireNonNull(ranking.getKey());
+        requireNonNull(ranking);
+        requireNonNull(ranking.getKey());
 
         if (!ranking.getKey().equals(mKey)) {
             throw new IllegalArgumentException("New key " + ranking.getKey()
@@ -239,6 +267,22 @@
     }
 
     /*
+     * Bookkeeping getters and setters
+     */
+
+    /**
+     * Set if the user has dismissed this notif but we haven't yet heard back from system server to
+     * confirm the dismissal.
+     */
+    @NonNull public DismissState getDismissState() {
+        return mDismissState;
+    }
+
+    void setDismissState(@NonNull DismissState dismissState) {
+        mDismissState = requireNonNull(dismissState);
+    }
+
+    /*
      * Convenience getters for SBN and Ranking members
      */
 
@@ -275,7 +319,6 @@
         return mRanking.canBubble();
     }
 
-
     public @NonNull List<Notification.Action> getSmartActions() {
         return mRanking.getSmartActions();
     }
@@ -363,6 +406,14 @@
         this.row = row;
     }
 
+    public ExpandableNotificationRowController getRowController() {
+        return mRowController;
+    }
+
+    public void setRowController(ExpandableNotificationRowController controller) {
+        mRowController = controller;
+    }
+
     @Nullable
     public List<NotificationEntry> getChildren() {
         if (row == null) {
@@ -543,12 +594,8 @@
 
     public void setInflationTask(InflationTask abortableTask) {
         // abort any existing inflation
-        InflationTask existing = mRunningTask;
         abortTask();
         mRunningTask = abortableTask;
-        if (existing != null && mRunningTask != null) {
-            mRunningTask.supersedeTask(existing);
-        }
     }
 
     public void onInflationTaskFinished() {
@@ -578,18 +625,6 @@
         remoteInputTextWhenReset = null;
     }
 
-    void setHasInflationError(boolean hasError) {
-        mHasInflationError = hasError;
-    }
-
-    /**
-     * Whether this notification had an error when attempting to inflate. This is only used in
-     * the NewNotifPipeline
-     */
-    public boolean hasInflationError() {
-        return mHasInflationError;
-    }
-
     public void setHasSentReply() {
         hasSentReply = true;
     }
@@ -799,8 +834,11 @@
      *         notification can be dismissed in case notifications are sensitive on the lockscreen.
      * @see #canViewBeDismissed()
      */
+    // TOOD: This logic doesn't belong on NotificationEntry. It should be moved to the
+    // ForegroundsServiceDismissalFeatureController or some other controller that can be added
+    // as a dependency to any class that needs to answer this question.
     public boolean isClearable() {
-        if (!mSbn.isClearable()) {
+        if (!isDismissable()) {
             return false;
         }
 
@@ -808,7 +846,7 @@
         if (children != null && children.size() > 0) {
             for (int i = 0; i < children.size(); i++) {
                 NotificationEntry child =  children.get(i);
-                if (!child.isClearable()) {
+                if (!child.isDismissable()) {
                     return false;
                 }
             }
@@ -816,6 +854,31 @@
         return true;
     }
 
+    /**
+     * Notifications might have any combination of flags:
+     * - FLAG_ONGOING_EVENT
+     * - FLAG_NO_CLEAR
+     * - FLAG_FOREGROUND_SERVICE
+     *
+     * We want to allow dismissal of notifications that represent foreground services, which may
+     * have all 3 flags set. If we only find NO_CLEAR though, we don't want to allow dismissal
+     */
+    private boolean isDismissable() {
+        boolean ongoing = ((mSbn.getNotification().flags & Notification.FLAG_ONGOING_EVENT) != 0);
+        boolean noclear = ((mSbn.getNotification().flags & Notification.FLAG_NO_CLEAR) != 0);
+        boolean fgs = ((mSbn.getNotification().flags & FLAG_FOREGROUND_SERVICE) != 0);
+
+        if (mAllowFgsDismissal) {
+            if (noclear && !ongoing && !fgs) {
+                return false;
+            }
+            return true;
+        } else {
+            return mSbn.isClearable();
+        }
+
+    }
+
     public boolean canViewBeDismissed() {
         if (row == null) return true;
         return row.canViewBeDismissed();
@@ -974,6 +1037,16 @@
         }
     }
 
+    /** @see #getDismissState() */
+    public enum DismissState {
+        /** User has not dismissed this notif or its parent */
+        NOT_DISMISSED,
+        /** User has dismissed this notif specifically */
+        DISMISSED,
+        /** User has dismissed this notif's parent (which implicitly dismisses this one as well) */
+        PARENT_DISMISSED,
+    }
+
     private static final long LAUNCH_COOLDOWN = 2000;
     private static final long REMOTE_INPUT_COOLDOWN = 500;
     private static final long INITIALIZATION_DELAY = 400;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt
index 1eeeab3..2981252 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManager.kt
@@ -22,11 +22,10 @@
 import android.service.notification.NotificationListenerService.RankingMap
 import android.service.notification.StatusBarNotification
 import com.android.systemui.statusbar.NotificationMediaManager
+import com.android.systemui.statusbar.notification.NotificationEntryManagerLogger
 import com.android.systemui.statusbar.notification.NotificationFilter
 import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager
 import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider
-import com.android.systemui.statusbar.notification.logging.NotifEvent
-import com.android.systemui.statusbar.notification.logging.NotifLog
 import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
 import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_ALERTING
 import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_PEOPLE
@@ -53,7 +52,7 @@
     private val groupManager: NotificationGroupManager,
     private val headsUpManager: HeadsUpManager,
     private val notifFilter: NotificationFilter,
-    private val notifLog: NotifLog,
+    private val logger: NotificationEntryManagerLogger,
     sectionsFeatureManager: NotificationSectionsFeatureManager,
     private val peopleNotificationIdentifier: PeopleNotificationIdentifier,
     private val highPriorityProvider: HighPriorityProvider
@@ -134,7 +133,7 @@
         entries: Sequence<NotificationEntry>,
         reason: String
     ): Sequence<NotificationEntry> {
-        notifLog.log(NotifEvent.FILTER_AND_SORT, reason)
+        logger.logFilterAndSort(reason)
 
         return entries.filter { !notifFilter.shouldFilterOut(it) }
                 .sortedWith(rankingComparator)
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
index 9f8f42e..be5c535 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilder.java
@@ -94,7 +94,8 @@
             new ArrayList<>();
     @Nullable private OnRenderListListener mOnRenderListListener;
 
-    private final List<ListEntry> mReadOnlyNotifList = Collections.unmodifiableList(mNotifList);
+    private List<ListEntry> mReadOnlyNotifList = Collections.unmodifiableList(mNotifList);
+    private List<ListEntry> mReadOnlyNewNotifList = Collections.unmodifiableList(mNewNotifList);
 
     @Inject
     public ShadeListBuilder(
@@ -253,17 +254,6 @@
     }
 
     /**
-     * Points mNotifList to the list stored in mNewNotifList.
-     * Reuses the (emptied) mNotifList as mNewNotifList.
-     */
-    private void applyNewNotifList() {
-        mNotifList.clear();
-        List<ListEntry> emptyList = mNotifList;
-        mNotifList = mNewNotifList;
-        mNewNotifList = emptyList;
-    }
-
-    /**
      * The core algorithm of the pipeline. See the top comment in {@link NotifPipeline} for
      * details on our contracts with other code.
      *
@@ -333,6 +323,23 @@
         mIterationCount++;
     }
 
+    /**
+     * Points mNotifList to the list stored in mNewNotifList.
+     * Reuses the (emptied) mNotifList as mNewNotifList.
+     *
+     * Accordingly, updates the ReadOnlyNotifList pointers.
+     */
+    private void applyNewNotifList() {
+        mNotifList.clear();
+        List<ListEntry> emptyList = mNotifList;
+        mNotifList = mNewNotifList;
+        mNewNotifList = emptyList;
+
+        List<ListEntry> readOnlyNotifList = mReadOnlyNotifList;
+        mReadOnlyNotifList = mReadOnlyNewNotifList;
+        mReadOnlyNewNotifList = readOnlyNotifList;
+    }
+
     private void resetNotifs() {
         for (GroupEntry group : mGroups.values()) {
             group.setPreviousParent(group.getParent());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java
new file mode 100644
index 0000000..8b2a07d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/BubbleCoordinator.java
@@ -0,0 +1,164 @@
+/*
+ * 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.systemui.statusbar.notification.collection.coordinator;
+
+import static android.service.notification.NotificationStats.DISMISSAL_OTHER;
+import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
+
+import com.android.internal.statusbar.NotificationVisibility;
+import com.android.systemui.bubbles.BubbleController;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor;
+import com.android.systemui.statusbar.notification.logging.NotificationLogger;
+
+import java.util.HashSet;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * Coordinates hiding, intercepting (the dismissal), and deletion of bubbled notifications.
+ *
+ * The typical "start state" for a bubbled notification is when a bubble-able notification is
+ * posted. It is visible as a bubble AND as a notification in the shade. From here, we can get
+ * into a few hidden-from-shade states described below:
+ *
+ * Start State -> Hidden from shade
+ * User expands the bubble so we hide its notification from the shade.
+ * OR
+ * User dismisses a group summary with a bubbled child. All bubbled children are now hidden from
+ * the shade. And the group summary's dismissal is intercepted + hidden from the shade (see below).
+ *
+ * Start State -> Dismissal intercepted + hidden from shade
+ * User dismisses the notification from the shade. We now hide the notification from the shade
+ * and intercept its dismissal (the removal signal is never sent to system server). We
+ * keep the notification alive in system server so that {@link BubbleController} can still
+ * respond to app-cancellations (ie: remove the bubble if the app cancels the notification).
+ *
+ */
+@Singleton
+public class BubbleCoordinator implements Coordinator {
+    private static final String TAG = "BubbleCoordinator";
+
+    private final BubbleController mBubbleController;
+    private final NotifCollection mNotifCollection;
+    private final Set<String> mInterceptedDismissalEntries = new HashSet<>();
+    private NotifPipeline mNotifPipeline;
+    private NotifDismissInterceptor.OnEndDismissInterception mOnEndDismissInterception;
+
+    @Inject
+    public BubbleCoordinator(
+            BubbleController bubbleController,
+            NotifCollection notifCollection) {
+        mBubbleController = bubbleController;
+        mNotifCollection = notifCollection;
+    }
+
+    @Override
+    public void attach(NotifPipeline pipeline) {
+        mNotifPipeline = pipeline;
+        mNotifPipeline.addNotificationDismissInterceptor(mDismissInterceptor);
+        mNotifPipeline.addPreRenderFilter(mNotifFilter);
+        mBubbleController.addNotifCallback(mNotifCallback);
+    }
+
+    private final NotifFilter mNotifFilter = new NotifFilter(TAG) {
+        @Override
+        public boolean shouldFilterOut(NotificationEntry entry, long now) {
+            return mBubbleController.isBubbleNotificationSuppressedFromShade(entry);
+        }
+    };
+
+    private final NotifDismissInterceptor mDismissInterceptor = new NotifDismissInterceptor() {
+        @Override
+        public String getName() {
+            return TAG;
+        }
+
+        @Override
+        public void setCallback(OnEndDismissInterception callback) {
+            mOnEndDismissInterception = callback;
+        }
+
+        @Override
+        public boolean shouldInterceptDismissal(NotificationEntry entry) {
+            // TODO: b/149041810 add support for intercepting app-cancelled bubble notifications
+            // for experimental bubbles
+            if (mBubbleController.handleDismissalInterception(entry)) {
+                mInterceptedDismissalEntries.add(entry.getKey());
+                return true;
+            } else {
+                mInterceptedDismissalEntries.remove(entry.getKey());
+                return false;
+            }
+        }
+
+        @Override
+        public void cancelDismissInterception(NotificationEntry entry) {
+            mInterceptedDismissalEntries.remove(entry.getKey());
+        }
+    };
+
+    private final BubbleController.NotifCallback mNotifCallback =
+            new BubbleController.NotifCallback() {
+        @Override
+        public void removeNotification(NotificationEntry entry, int reason) {
+            if (isInterceptingDismissal(entry)) {
+                mInterceptedDismissalEntries.remove(entry.getKey());
+                mOnEndDismissInterception.onEndDismissInterception(mDismissInterceptor, entry,
+                        createDismissedByUserStats(entry));
+            } else if (mNotifPipeline.getActiveNotifs().contains(entry)) {
+                // Bubbles are hiding the notifications from the shade, but the bubble was
+                // deleted; therefore, the notification should be cancelled as if it were a user
+                // dismissal (this won't re-enter handleInterceptDimissal because Bubbles
+                // will have already marked it as no longer a bubble)
+                mNotifCollection.dismissNotification(entry, createDismissedByUserStats(entry));
+            }
+        }
+
+        @Override
+        public void invalidateNotifications(String reason) {
+            mNotifFilter.invalidateList();
+        }
+
+        @Override
+        public void maybeCancelSummary(NotificationEntry entry) {
+            // no-op
+        }
+    };
+
+    private boolean isInterceptingDismissal(NotificationEntry entry) {
+        return mInterceptedDismissalEntries.contains(entry.getKey());
+    }
+
+    private DismissedByUserStats createDismissedByUserStats(NotificationEntry entry) {
+        return new DismissedByUserStats(
+                DISMISSAL_OTHER,
+                DISMISS_SENTIMENT_NEUTRAL,
+                NotificationVisibility.obtain(entry.getKey(),
+                        entry.getRanking().getRank(),
+                        mNotifPipeline.getShadeListCount(),
+                        true, // was visible as a bubble
+                        NotificationLogger.getNotificationLocation(entry))
+        );
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideLocallyDismissedNotifsCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideLocallyDismissedNotifsCoordinator.java
new file mode 100644
index 0000000..0059e7b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/HideLocallyDismissedNotifsCoordinator.java
@@ -0,0 +1,41 @@
+/*
+ * 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.systemui.statusbar.notification.collection.coordinator;
+
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.NOT_DISMISSED;
+
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+
+/**
+ * Filters out notifications that have been dismissed locally (by the user) but that system server
+ * hasn't yet confirmed the removal of.
+ */
+public class HideLocallyDismissedNotifsCoordinator implements Coordinator {
+    @Override
+    public void attach(NotifPipeline pipeline) {
+        pipeline.addPreGroupFilter(mFilter);
+    }
+
+    private final NotifFilter mFilter = new NotifFilter("HideLocallyDismissedNotifsFilter") {
+        @Override
+        public boolean shouldFilterOut(NotificationEntry entry, long now) {
+            return entry.getDismissState() != NOT_DISMISSED;
+        }
+    };
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
index 8d0dd5b..7a9547c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/NotifCoordinators.java
@@ -53,13 +53,16 @@
             RankingCoordinator rankingCoordinator,
             ForegroundCoordinator foregroundCoordinator,
             DeviceProvisionedCoordinator deviceProvisionedCoordinator,
+            BubbleCoordinator bubbleCoordinator,
             PreparationCoordinator preparationCoordinator) {
         dumpController.registerDumpable(TAG, this);
 
+        mCoordinators.add(new HideLocallyDismissedNotifsCoordinator());
         mCoordinators.add(keyguardCoordinator);
         mCoordinators.add(rankingCoordinator);
         mCoordinators.add(foregroundCoordinator);
         mCoordinators.add(deviceProvisionedCoordinator);
+        mCoordinators.add(bubbleCoordinator);
         if (featureFlags.isNewNotifPipelineRenderingEnabled()) {
             mCoordinators.add(preparationCoordinator);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
index 20c9cbc..1c8fdac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinator.java
@@ -16,14 +16,18 @@
 
 package com.android.systemui.statusbar.notification.collection.coordinator;
 
+import android.os.RemoteException;
+import android.service.notification.StatusBarNotification;
+
+import com.android.internal.statusbar.IStatusBarService;
 import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
 import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
 import com.android.systemui.statusbar.notification.collection.inflation.NotifInflater;
 import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
-import com.android.systemui.statusbar.notification.logging.NotifEvent;
-import com.android.systemui.statusbar.notification.logging.NotifLog;
+import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -36,21 +40,30 @@
  * Aborts inflation when a notification is removed.
  *
  * If a notification is not done inflating, this coordinator will filter the notification out
- * from the NotifListBuilder.
+ * from the {@link ShadeListBuilder}.
  */
 @Singleton
 public class PreparationCoordinator implements Coordinator {
     private static final String TAG = "PreparationCoordinator";
 
-    private final NotifLog mNotifLog;
+    private final PreparationCoordinatorLogger mLogger;
     private final NotifInflater mNotifInflater;
+    private final NotifInflationErrorManager mNotifErrorManager;
     private final List<NotificationEntry> mPendingNotifications = new ArrayList<>();
+    private final IStatusBarService mStatusBarService;
 
     @Inject
-    public PreparationCoordinator(NotifLog notifLog, NotifInflaterImpl notifInflater) {
-        mNotifLog = notifLog;
+    public PreparationCoordinator(
+            PreparationCoordinatorLogger logger,
+            NotifInflaterImpl notifInflater,
+            NotifInflationErrorManager errorManager,
+            IStatusBarService service) {
+        mLogger = logger;
         mNotifInflater = notifInflater;
         mNotifInflater.setInflationCallback(mInflationCallback);
+        mNotifErrorManager = errorManager;
+        mNotifErrorManager.addInflationErrorListener(mInflationErrorListener);
+        mStatusBarService = service;
     }
 
     @Override
@@ -72,7 +85,7 @@
         }
 
         @Override
-        public void onEntryRemoved(NotificationEntry entry, int reason, boolean removedByUser) {
+        public void onEntryRemoved(NotificationEntry entry, int reason) {
             abortInflation(entry, "entryRemoved reason=" + reason);
         }
     };
@@ -84,8 +97,7 @@
          */
         @Override
         public boolean shouldFilterOut(NotificationEntry entry, long now) {
-            if (entry.hasInflationError()) {
-                mPendingNotifications.remove(entry);
+            if (mNotifErrorManager.hasInflationError(entry)) {
                 return true;
             }
             return false;
@@ -106,12 +118,40 @@
             new NotifInflater.InflationCallback() {
         @Override
         public void onInflationFinished(NotificationEntry entry) {
-            mNotifLog.log(NotifEvent.INFLATED, entry);
+            mLogger.logNotifInflated(entry.getKey());
             mPendingNotifications.remove(entry);
             mNotifInflatingFilter.invalidateList();
         }
     };
 
+    private final NotifInflationErrorManager.NotifInflationErrorListener mInflationErrorListener =
+            new NotifInflationErrorManager.NotifInflationErrorListener() {
+        @Override
+        public void onNotifInflationError(NotificationEntry entry, Exception e) {
+            mPendingNotifications.remove(entry);
+            try {
+                final StatusBarNotification sbn = entry.getSbn();
+                // report notification inflation errors back up
+                // to notification delegates
+                mStatusBarService.onNotificationError(
+                        sbn.getPackageName(),
+                        sbn.getTag(),
+                        sbn.getId(),
+                        sbn.getUid(),
+                        sbn.getInitialPid(),
+                        e.getMessage(),
+                        sbn.getUserId());
+            } catch (RemoteException ex) {
+            }
+            mNotifInflationErrorFilter.invalidateList();
+        }
+
+        @Override
+        public void onNotifInflationErrorCleared(NotificationEntry entry) {
+            mNotifInflationErrorFilter.invalidateList();
+        }
+    };
+
     private void inflateEntry(NotificationEntry entry, String reason) {
         abortInflation(entry, reason);
         mPendingNotifications.add(entry);
@@ -123,7 +163,7 @@
     }
 
     private void abortInflation(NotificationEntry entry, String reason) {
-        mNotifLog.log(NotifEvent.INFLATION_ABORTED, reason);
+        mLogger.logInflationAborted(entry.getKey(), reason);
         entry.abortTask();
         mPendingNotifications.remove(entry);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorLogger.kt
new file mode 100644
index 0000000..75e7bc9
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorLogger.kt
@@ -0,0 +1,45 @@
+/*
+ * 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.systemui.statusbar.notification.collection.coordinator
+
+import com.android.systemui.log.LogBuffer
+import com.android.systemui.log.LogLevel
+import com.android.systemui.log.dagger.NotificationLog
+import javax.inject.Inject
+
+class PreparationCoordinatorLogger @Inject constructor(
+    @NotificationLog private val buffer: LogBuffer
+) {
+    fun logNotifInflated(key: String) {
+        buffer.log(TAG, LogLevel.DEBUG, {
+            str1 = key
+        }, {
+            "NOTIF INFLATED $str1"
+        })
+    }
+
+    fun logInflationAborted(key: String, reason: String) {
+        buffer.log(TAG, LogLevel.DEBUG, {
+            str1 = key
+            str2 = reason
+        }, {
+            "NOTIF INFLATION ABORTED $str1 reason=$str2"
+        })
+    }
+}
+
+private const val TAG = "PreparationCoordinator"
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
index 2a7683a..e8a62e4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/inflation/NotificationRowBinderImpl.java
@@ -17,7 +17,6 @@
 package com.android.systemui.statusbar.notification.collection.inflation;
 
 import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
-import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
 
 import android.annotation.Nullable;
@@ -40,16 +39,19 @@
 import com.android.systemui.statusbar.notification.NotificationClicker;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
+import com.android.systemui.statusbar.notification.row.NotifBindPipeline;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder;
+import com.android.systemui.statusbar.notification.row.RowContentBindParams;
+import com.android.systemui.statusbar.notification.row.RowContentBindStage;
 import com.android.systemui.statusbar.notification.row.RowInflaterTask;
+import com.android.systemui.statusbar.notification.row.dagger.ExpandableNotificationRowComponent;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.phone.StatusBar;
-import com.android.systemui.statusbar.policy.HeadsUpManager;
 
 import java.util.Objects;
 
@@ -64,36 +66,32 @@
 
     private static final String TAG = "NotificationViewManager";
 
-    private final NotificationGroupManager mGroupManager;
-    private final NotificationGutsManager mGutsManager;
     private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
+
     private final Context mContext;
-    private final NotificationRowContentBinder mRowContentBinder;
+    private final NotifBindPipeline mNotifBindPipeline;
+    private final RowContentBindStage mRowContentBindStage;
     private final NotificationMessagingUtil mMessagingUtil;
-    private final ExpandableNotificationRow.ExpansionLogger mExpansionLogger =
-            this::logNotificationExpansion;
     private final NotificationRemoteInputManager mNotificationRemoteInputManager;
     private final NotificationLockscreenUserManager mNotificationLockscreenUserManager;
-    private final boolean mAllowLongPress;
-    private final KeyguardBypassController mKeyguardBypassController;
-    private final StatusBarStateController mStatusBarStateController;
 
     private NotificationPresenter mPresenter;
     private NotificationListContainer mListContainer;
-    private HeadsUpManager mHeadsUpManager;
     private NotificationRowContentBinder.InflationCallback mInflationCallback;
-    private ExpandableNotificationRow.OnAppOpsClickListener mOnAppOpsClickListener;
     private BindRowCallback mBindRowCallback;
     private NotificationClicker mNotificationClicker;
     private final Provider<RowInflaterTask> mRowInflaterTaskProvider;
-    private final NotificationLogger mNotificationLogger;
+    private final ExpandableNotificationRowComponent.Builder
+            mExpandableNotificationRowComponentBuilder;
 
     @Inject
     public NotificationRowBinderImpl(
             Context context,
+            NotificationMessagingUtil notificationMessagingUtil,
             NotificationRemoteInputManager notificationRemoteInputManager,
             NotificationLockscreenUserManager notificationLockscreenUserManager,
-            NotificationRowContentBinder rowContentBinder,
+            NotifBindPipeline notifBindPipeline,
+            RowContentBindStage rowContentBindStage,
             @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress,
             KeyguardBypassController keyguardBypassController,
             StatusBarStateController statusBarStateController,
@@ -101,20 +99,16 @@
             NotificationGutsManager notificationGutsManager,
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             Provider<RowInflaterTask> rowInflaterTaskProvider,
-            NotificationLogger logger) {
+            ExpandableNotificationRowComponent.Builder expandableNotificationRowComponentBuilder) {
         mContext = context;
-        mRowContentBinder = rowContentBinder;
-        mMessagingUtil = new NotificationMessagingUtil(context);
+        mNotifBindPipeline = notifBindPipeline;
+        mRowContentBindStage = rowContentBindStage;
+        mMessagingUtil = notificationMessagingUtil;
         mNotificationRemoteInputManager = notificationRemoteInputManager;
         mNotificationLockscreenUserManager = notificationLockscreenUserManager;
-        mAllowLongPress = allowLongPress;
-        mKeyguardBypassController = keyguardBypassController;
-        mStatusBarStateController = statusBarStateController;
-        mGroupManager = notificationGroupManager;
-        mGutsManager = notificationGutsManager;
         mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
         mRowInflaterTaskProvider = rowInflaterTaskProvider;
-        mNotificationLogger = logger;
+        mExpandableNotificationRowComponentBuilder = expandableNotificationRowComponentBuilder;
     }
 
     /**
@@ -122,13 +116,10 @@
      */
     public void setUpWithPresenter(NotificationPresenter presenter,
             NotificationListContainer listContainer,
-            HeadsUpManager headsUpManager,
             BindRowCallback bindRowCallback) {
         mPresenter = presenter;
         mListContainer = listContainer;
-        mHeadsUpManager = headsUpManager;
         mBindRowCallback = bindRowCallback;
-        mOnAppOpsClickListener = mGutsManager::openGuts;
     }
 
     public void setInflationCallback(NotificationRowContentBinder.InflationCallback callback) {
@@ -143,9 +134,7 @@
      * Inflates the views for the given entry (possibly asynchronously).
      */
     @Override
-    public void inflateViews(
-            NotificationEntry entry,
-            Runnable onDismissRunnable)
+    public void inflateViews(NotificationEntry entry, Runnable onDismissRunnable)
             throws InflationException {
         ViewGroup parent = mListContainer.getViewParentForNotification(entry);
         PackageManager pmUser = StatusBar.getPackageManagerForUser(mContext,
@@ -156,64 +145,39 @@
             entry.updateIcons(mContext, sbn);
             entry.reset();
             updateNotification(entry, pmUser, sbn, entry.getRow());
-            entry.getRow().setOnDismissRunnable(onDismissRunnable);
+            entry.getRowController().setOnDismissRunnable(onDismissRunnable);
         } else {
             entry.createIcons(mContext, sbn);
             mRowInflaterTaskProvider.get().inflate(mContext, parent, entry,
                     row -> {
-                        bindRow(entry, pmUser, sbn, row, onDismissRunnable);
+                        // Setup the controller for the view.
+                        ExpandableNotificationRowComponent component =
+                                mExpandableNotificationRowComponentBuilder
+                                        .expandableNotificationRow(row)
+                                        .notificationEntry(entry)
+                                        .onDismissRunnable(onDismissRunnable)
+                                        .inflationCallback(mInflationCallback)
+                                        .rowContentBindStage(mRowContentBindStage)
+                                        .onExpandClickListener(mPresenter)
+                                        .build();
+                        ExpandableNotificationRowController rowController =
+                                component.getExpandableNotificationRowController();
+                        rowController.init();
+                        entry.setRowController(rowController);
+                        bindRow(entry, pmUser, sbn, row);
                         updateNotification(entry, pmUser, sbn, row);
                     });
         }
     }
 
+    //TODO: This method associates a row with an entry, but eventually needs to not do that
     private void bindRow(NotificationEntry entry, PackageManager pmUser,
-            StatusBarNotification sbn, ExpandableNotificationRow row,
-            Runnable onDismissRunnable) {
-        // Get the app name.
-        // Note that Notification.Builder#bindHeaderAppName has similar logic
-        // but since this field is used in the guts, it must be accurate.
-        // Therefore we will only show the application label, or, failing that, the
-        // package name. No substitutions.
-        final String pkg = sbn.getPackageName();
-        String appname = pkg;
-        try {
-            final ApplicationInfo info = pmUser.getApplicationInfo(pkg,
-                    PackageManager.MATCH_UNINSTALLED_PACKAGES
-                            | PackageManager.MATCH_DISABLED_COMPONENTS);
-            if (info != null) {
-                appname = String.valueOf(pmUser.getApplicationLabel(info));
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            // Do nothing
-        }
-
-        row.initialize(
-                appname,
-                sbn.getKey(),
-                mExpansionLogger,
-                mKeyguardBypassController,
-                mGroupManager,
-                mHeadsUpManager,
-                mRowContentBinder,
-                mPresenter);
-
-        // TODO: Either move these into ExpandableNotificationRow#initialize or out of row entirely
-        row.setStatusBarStateController(mStatusBarStateController);
-        row.setInflationCallback(mInflationCallback);
-        row.setAppOpsOnClickListener(mOnAppOpsClickListener);
-        if (mAllowLongPress) {
-            row.setLongPressListener(mGutsManager::openGuts);
-        }
+            StatusBarNotification sbn, ExpandableNotificationRow row) {
         mListContainer.bindRow(row);
         mNotificationRemoteInputManager.bindRow(row);
-
-        row.setOnDismissRunnable(onDismissRunnable);
-        row.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
-        if (ENABLE_REMOTE_INPUT) {
-            row.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
-        }
-
+        entry.setRow(row);
+        row.setEntry(entry);
+        mNotifBindPipeline.manageRow(entry, row);
         mBindRowCallback.onBindRow(entry, pmUser, sbn, row);
     }
 
@@ -247,13 +211,11 @@
         }
     }
 
-    //TODO: This method associates a row with an entry, but eventually needs to not do that
     private void updateNotification(
             NotificationEntry entry,
             PackageManager pmUser,
             StatusBarNotification sbn,
             ExpandableNotificationRow row) {
-        row.setIsLowPriority(entry.isAmbient());
 
         // Extract target SDK version.
         try {
@@ -268,31 +230,36 @@
         // TODO: should updates to the entry be happening somewhere else?
         entry.setIconTag(R.id.icon_is_pre_L, entry.targetSdk < Build.VERSION_CODES.LOLLIPOP);
 
-        entry.setRow(row);
         row.setOnActivatedListener(mPresenter);
 
-        boolean useIncreasedCollapsedHeight =
+        final boolean useIncreasedCollapsedHeight =
                 mMessagingUtil.isImportantMessaging(sbn, entry.getImportance());
-        boolean useIncreasedHeadsUp = useIncreasedCollapsedHeight
+        final boolean useIncreasedHeadsUp = useIncreasedCollapsedHeight
                 && !mPresenter.isPresenterFullyCollapsed();
-        row.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
-        row.setUseIncreasedHeadsUpHeight(useIncreasedHeadsUp);
-        row.setEntry(entry);
+        final boolean isLowPriority = entry.isAmbient();
+
+        RowContentBindParams params = mRowContentBindStage.getStageParams(entry);
+        params.setUseIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
+        params.setUseIncreasedHeadsUpHeight(useIncreasedHeadsUp);
+        params.setUseLowPriority(entry.isAmbient());
 
         if (mNotificationInterruptionStateProvider.shouldHeadsUp(entry)) {
-            row.setInflationFlags(FLAG_CONTENT_VIEW_HEADS_UP);
+            params.requireContentViews(FLAG_CONTENT_VIEW_HEADS_UP);
         }
+        //TODO: Replace this API with RowContentBindParams directly
         row.setNeedsRedaction(mNotificationLockscreenUserManager.needsRedaction(entry));
-        row.inflateViews();
+        params.rebindAllContentViews();
+        mRowContentBindStage.requestRebind(entry, en -> {
+            row.setUsesIncreasedCollapsedHeight(useIncreasedCollapsedHeight);
+            row.setUsesIncreasedHeadsUpHeight(useIncreasedHeadsUp);
+            row.setIsLowPriority(isLowPriority);
+            mInflationCallback.onAsyncInflationFinished(en);
+        });
 
         // bind the click event to the content area
         Objects.requireNonNull(mNotificationClicker).register(row, sbn);
     }
 
-    private void logNotificationExpansion(String key, boolean userAction, boolean expanded) {
-        mNotificationLogger.onExpansionChanged(key, userAction, expanded);
-    }
-
     /** Callback for when a row is bound to an entry. */
     public interface BindRowCallback {
         /**
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/CommonNotifCollection.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/CommonNotifCollection.java
new file mode 100644
index 0000000..171816f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/CommonNotifCollection.java
@@ -0,0 +1,37 @@
+/*
+ * 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.systemui.statusbar.notification.collection.notifcollection;
+
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+/**
+ * A notification collection that manages the list of {@link NotificationEntry}s that will be
+ * rendered.
+ *
+ * TODO: (b/145659174) Once we fully switch off {@link NotificationEntryManager} to
+ * {@link NotifPipeline}, we probably won't need this, but having it for now makes it easy to
+ * switch between the two.
+ */
+public interface CommonNotifCollection {
+    /**
+     * Registers a listener to be informed when notifications are created, added, updated, removed,
+     * or deleted.
+     */
+    void addCollectionListener(NotifCollectionListener listener);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java
index 9cbc7d7..b2c53da 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionListener.java
@@ -16,15 +16,27 @@
 
 package com.android.systemui.statusbar.notification.collection.notifcollection;
 
-import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import android.service.notification.NotificationListenerService;
+
 import com.android.systemui.statusbar.notification.collection.NotifCollection.CancellationReason;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 
 /**
- * Listener interface for {@link NotifCollection}.
+ * Listener interface for {@link NotificationEntry} events.
  */
 public interface NotifCollectionListener {
     /**
+     * Called whenever a new {@link NotificationEntry} is initialized. This should be used for
+     * initializing any decorated state tied to the notification.
+     *
+     * Do not reference other registered {@link NotifCollectionListener} implementations here as
+     * there is no guarantee of order and they may not have had a chance to initialize yet. Instead,
+     * use {@link #onEntryAdded} which is called after all initialization.
+     */
+    default void onEntryInit(NotificationEntry entry) {
+    }
+
+    /**
      * Called whenever a notification with a new key is posted.
      */
     default void onEntryAdded(NotificationEntry entry) {
@@ -42,9 +54,25 @@
      * immediately after a user dismisses a notification: we wait until we receive confirmation from
      * system server before considering the notification removed.
      */
-    default void onEntryRemoved(
-            NotificationEntry entry,
-            @CancellationReason int reason,
-            boolean removedByUser) {
+    default void onEntryRemoved(NotificationEntry entry, @CancellationReason int reason) {
+    }
+
+    /**
+     * Called whenever a {@link NotificationEntry} is considered deleted. This should be used for
+     * cleaning up any state tied to the notification.
+     *
+     * This is the deletion parallel of {@link #onEntryInit} and similarly means that you cannot
+     * expect other {@link NotifCollectionListener} implementations to still have valid state for
+     * the entry during this call. Instead, use {@link #onEntryRemoved} which will be called before
+     * deletion.
+     */
+    default void onEntryCleanUp(NotificationEntry entry) {
+    }
+
+    /**
+     * Called whenever the RankingMap is updated by system server. By the time this listener is
+     * called, the Rankings of all entries will have been updated.
+     */
+    default void onRankingUpdate(NotificationListenerService.RankingMap rankingMap) {
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
index bd1bd86..8675cca 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifCollectionLogger.kt
@@ -16,8 +16,11 @@
 
 package com.android.systemui.statusbar.notification.collection.notifcollection
 
+import android.service.notification.NotificationListenerService.RankingMap
 import com.android.systemui.log.LogBuffer
-import com.android.systemui.log.LogLevel
+import com.android.systemui.log.LogLevel.DEBUG
+import com.android.systemui.log.LogLevel.INFO
+import com.android.systemui.log.LogLevel.WARNING
 import com.android.systemui.log.dagger.NotificationLog
 import javax.inject.Inject
 
@@ -25,7 +28,7 @@
     @NotificationLog private val buffer: LogBuffer
 ) {
     fun logNotifPosted(key: String) {
-        buffer.log(TAG, LogLevel.INFO, {
+        buffer.log(TAG, INFO, {
             str1 = key
         }, {
             "POSTED $str1"
@@ -33,7 +36,7 @@
     }
 
     fun logNotifGroupPosted(groupKey: String, batchSize: Int) {
-        buffer.log(TAG, LogLevel.INFO, {
+        buffer.log(TAG, INFO, {
             str1 = groupKey
             int1 = batchSize
         }, {
@@ -42,7 +45,7 @@
     }
 
     fun logNotifUpdated(key: String) {
-        buffer.log(TAG, LogLevel.INFO, {
+        buffer.log(TAG, INFO, {
             str1 = key
         }, {
             "UPDATED $str1"
@@ -50,13 +53,45 @@
     }
 
     fun logNotifRemoved(key: String, reason: Int) {
-        buffer.log(TAG, LogLevel.INFO, {
+        buffer.log(TAG, INFO, {
             str1 = key
             int1 = reason
         }, {
             "REMOVED $str1 reason=$int1"
         })
     }
+
+    fun logNotifDismissed(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "DISMISSED $str1"
+        })
+    }
+
+    fun logNotifDismissedIntercepted(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "DISMISS INTERCEPTED $str1"
+        })
+    }
+
+    fun logNotifClearAllDismissalIntercepted(key: String) {
+        buffer.log(TAG, INFO, {
+            str1 = key
+        }, {
+            "CLEAR ALL DISMISSAL INTERCEPTED $str1"
+        })
+    }
+
+    fun logRankingMissing(key: String, rankingMap: RankingMap) {
+        buffer.log(TAG, WARNING, { str1 = key }, { "Ranking update is missing ranking for $str1" })
+        buffer.log(TAG, DEBUG, {}, { "Ranking map contents:" })
+        for (entry in rankingMap.orderedKeys) {
+            buffer.log(TAG, DEBUG, { str1 = entry }, { "  $str1" })
+        }
+    }
 }
 
 private const val TAG = "NotifCollection"
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifDismissInterceptor.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifDismissInterceptor.java
new file mode 100644
index 0000000..3354ad1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/collection/notifcollection/NotifDismissInterceptor.java
@@ -0,0 +1,68 @@
+/*
+ * 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.systemui.statusbar.notification.collection.notifcollection;
+
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+/**
+ * A way for coordinators to temporarily intercept a user-dismissed notification before a message
+ * is sent to system server to officially remove this notification.
+ * See {@link NotifCollection#addNotificationDismissInterceptor(NotifDismissInterceptor)}.
+ */
+public interface NotifDismissInterceptor {
+    /** Name to associate with this interceptor (for the purposes of debugging) */
+    String getName();
+
+    /**
+     * Called on the interceptor immediately after it has been registered. The interceptor should
+     * hang on to this callback and execute it whenever it no longer needs to intercept the
+     * dismissal of the notification.
+     */
+    void setCallback(OnEndDismissInterception callback);
+
+    /**
+     * Called by the NotifCollection whenever a notification has been dismissed (by the user).
+     * If the interceptor returns true, it is considered to be intercepting the notification.
+     * Intercepted notifications will not be sent to system server for removal until it is no
+     * longer being intercepted. However, the notification can still be cancelled by the app.
+     * This method is called on all interceptors even if earlier ones return true.
+     */
+    boolean shouldInterceptDismissal(NotificationEntry entry);
+
+
+    /**
+     * Called by the NotifCollection to inform a DismissInterceptor that its interception of a notif
+     * is no longer valid (usually because the notif has been removed by means other than the
+     * user dismissing the notification from the shade, or the notification has been updated). The
+     * interceptor should clean up any references it has to the notif in question.
+     */
+    void cancelDismissInterception(NotificationEntry entry);
+
+    /**
+     * Callback for notifying the NotifCollection that it no longer is intercepting the dismissal.
+     * If the end of this dismiss interception triggers a dismiss (ie: no other
+     * NotifDismissInterceptors are intercepting the entry), NotifCollection will use stats
+     * in the message sent to system server for the notification's dismissal.
+     */
+    interface OnEndDismissInterception {
+        void onEndDismissInterception(
+                NotifDismissInterceptor interceptor,
+                NotificationEntry entry,
+                DismissedByUserStats stats);
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
new file mode 100644
index 0000000..39f4dfa
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/dagger/NotificationsModule.java
@@ -0,0 +1,64 @@
+/*
+ * 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.systemui.statusbar.notification.dagger;
+
+import android.content.Context;
+
+import com.android.systemui.R;
+import com.android.systemui.statusbar.FeatureFlags;
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
+import com.android.systemui.statusbar.notification.init.NotificationsControllerImpl;
+import com.android.systemui.statusbar.notification.init.NotificationsControllerStub;
+
+import javax.inject.Singleton;
+
+import dagger.Lazy;
+import dagger.Module;
+import dagger.Provides;
+
+/** Module for classes related to the notifications data pipeline */
+@Module
+public class NotificationsModule {
+    /** Initializes the notification data pipeline (can be disabled via config). */
+    @Singleton
+    @Provides
+    static NotificationsController provideNotificationsController(
+            Context context,
+            Lazy<NotificationsControllerImpl> realController,
+            Lazy<NotificationsControllerStub> stubController) {
+        if (context.getResources().getBoolean(R.bool.config_renderNotifications)) {
+            return realController.get();
+        } else {
+            return stubController.get();
+        }
+    }
+
+    /**
+     * Provide the active notification collection managing the notifications to render.
+     */
+    @Provides
+    @Singleton
+    public CommonNotifCollection provideCommonNotifCollection(
+            FeatureFlags featureFlags,
+            Lazy<NotifPipeline> pipeline,
+            NotificationEntryManager entryManager) {
+        return featureFlags.isNewNotifPipelineRenderingEnabled() ? pipeline.get() : entryManager;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
new file mode 100644
index 0000000..9da8b8a3
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsController.kt
@@ -0,0 +1,50 @@
+/*
+ * 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.systemui.statusbar.notification.init
+
+import android.service.notification.StatusBarNotification
+import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption
+import com.android.systemui.statusbar.NotificationPresenter
+import com.android.systemui.statusbar.notification.NotificationActivityStarter
+import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
+import com.android.systemui.statusbar.notification.stack.NotificationListContainer
+import com.android.systemui.statusbar.phone.StatusBar
+import java.io.FileDescriptor
+import java.io.PrintWriter
+
+/**
+ * The master controller for all notifications-related work
+ *
+ * Split into two implementations: [NotificationsControllerImpl] (most cases) and
+ * [NotificationsControllerStub] (for builds that disable notification rendering).
+ */
+interface NotificationsController {
+    fun initialize(
+        statusBar: StatusBar,
+        presenter: NotificationPresenter,
+        listContainer: NotificationListContainer,
+        notificationActivityStarter: NotificationActivityStarter,
+        bindRowCallback: NotificationRowBinderImpl.BindRowCallback
+    )
+
+    fun requestNotificationUpdate(reason: String)
+    fun resetUserExpandedStates()
+    fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption)
+    fun getActiveNotificationsCount(): Int
+    fun setNotificationSnoozed(sbn: StatusBarNotification, hoursToSnooze: Int)
+    fun dump(fd: FileDescriptor, pw: PrintWriter, args: Array<String>, dumpTruck: Boolean)
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
new file mode 100644
index 0000000..8a6d5c7
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerImpl.kt
@@ -0,0 +1,159 @@
+/*
+ * 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.systemui.statusbar.notification.init
+
+import android.service.notification.StatusBarNotification
+import com.android.systemui.bubbles.BubbleController
+import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption
+import com.android.systemui.statusbar.FeatureFlags
+import com.android.systemui.statusbar.NotificationListener
+import com.android.systemui.statusbar.NotificationPresenter
+import com.android.systemui.statusbar.notification.NotificationActivityStarter
+import com.android.systemui.statusbar.notification.NotificationClicker
+import com.android.systemui.statusbar.notification.NotificationEntryManager
+import com.android.systemui.statusbar.notification.NotificationListController
+import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
+import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer
+import com.android.systemui.statusbar.notification.row.NotifBindPipelineInitializer
+import com.android.systemui.statusbar.notification.stack.NotificationListContainer
+import com.android.systemui.statusbar.phone.NotificationGroupAlertTransferHelper
+import com.android.systemui.statusbar.phone.NotificationGroupManager
+import com.android.systemui.statusbar.phone.StatusBar
+import com.android.systemui.statusbar.policy.DeviceProvisionedController
+import com.android.systemui.statusbar.policy.HeadsUpManager
+import com.android.systemui.statusbar.policy.RemoteInputUriController
+import dagger.Lazy
+import java.io.FileDescriptor
+import java.io.PrintWriter
+import java.util.Optional
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/**
+ * Master controller for all notifications-related work
+ *
+ * At the moment exposes a number of event-handler-esque methods; these are for historical reasons.
+ * Once we migrate away from the need for such things, this class becomes primarily a place to do
+ * any initialization work that notifications require.
+ */
+@Singleton
+class NotificationsControllerImpl @Inject constructor(
+    private val featureFlags: FeatureFlags,
+    private val notificationListener: NotificationListener,
+    private val entryManager: NotificationEntryManager,
+    private val newNotifPipeline: Lazy<NotifPipelineInitializer>,
+    private val notifBindPipelineInitializer: NotifBindPipelineInitializer,
+    private val deviceProvisionedController: DeviceProvisionedController,
+    private val notificationRowBinder: NotificationRowBinderImpl,
+    private val remoteInputUriController: RemoteInputUriController,
+    private val bubbleController: BubbleController,
+    private val groupManager: NotificationGroupManager,
+    private val groupAlertTransferHelper: NotificationGroupAlertTransferHelper,
+    private val headsUpManager: HeadsUpManager
+) : NotificationsController {
+
+    override fun initialize(
+        statusBar: StatusBar,
+        presenter: NotificationPresenter,
+        listContainer: NotificationListContainer,
+        notificationActivityStarter: NotificationActivityStarter,
+        bindRowCallback: NotificationRowBinderImpl.BindRowCallback
+    ) {
+        notificationListener.registerAsSystemService()
+
+        val listController =
+                NotificationListController(
+                        entryManager,
+                        listContainer,
+                        deviceProvisionedController)
+        listController.bind()
+
+        notificationRowBinder.setNotificationClicker(
+                NotificationClicker(
+                        Optional.of(statusBar),
+                        bubbleController,
+                        notificationActivityStarter))
+        notificationRowBinder.setUpWithPresenter(
+                presenter,
+                listContainer,
+                bindRowCallback)
+        notifBindPipelineInitializer.initialize()
+
+        if (featureFlags.isNewNotifPipelineEnabled) {
+            newNotifPipeline.get().initialize(notificationListener, notificationRowBinder)
+        }
+
+        if (featureFlags.isNewNotifPipelineRenderingEnabled) {
+            // TODO
+        } else {
+            notificationRowBinder.setInflationCallback(entryManager)
+
+            remoteInputUriController.attach(entryManager)
+            groupAlertTransferHelper.bind(entryManager, groupManager)
+            headsUpManager.addListener(groupManager)
+            headsUpManager.addListener(groupAlertTransferHelper)
+            groupManager.setHeadsUpManager(headsUpManager)
+            groupAlertTransferHelper.setHeadsUpManager(headsUpManager)
+
+            entryManager.attach(notificationListener)
+        }
+    }
+
+    override fun dump(
+        fd: FileDescriptor,
+        pw: PrintWriter,
+        args: Array<String>,
+        dumpTruck: Boolean
+    ) {
+        if (dumpTruck) {
+            entryManager.dump(pw, "  ")
+        }
+        groupManager.dump(fd, pw, args)
+    }
+
+    // TODO: Convert all functions below this line into listeners instead of public methods
+
+    override fun requestNotificationUpdate(reason: String) {
+        entryManager.updateNotifications(reason)
+    }
+
+    override fun resetUserExpandedStates() {
+        for (entry in entryManager.visibleNotifications) {
+            entry.resetUserExpansion()
+        }
+    }
+
+    override fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption) {
+        if (snoozeOption.snoozeCriterion != null) {
+            notificationListener.snoozeNotification(sbn.key, snoozeOption.snoozeCriterion.id)
+        } else {
+            notificationListener.snoozeNotification(
+                    sbn.key,
+                    snoozeOption.minutesToSnoozeFor * 60 * 1000.toLong())
+        }
+    }
+
+    override fun getActiveNotificationsCount(): Int {
+        return entryManager.activeNotificationsCount
+    }
+
+    override fun setNotificationSnoozed(sbn: StatusBarNotification, hoursToSnooze: Int) {
+        notificationListener.snoozeNotification(
+                sbn.key,
+                hoursToSnooze * 60 * 60 * 1000.toLong())
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
new file mode 100644
index 0000000..ded855d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/init/NotificationsControllerStub.kt
@@ -0,0 +1,76 @@
+/*
+ * 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.systemui.statusbar.notification.init
+
+import android.service.notification.StatusBarNotification
+import com.android.systemui.plugins.statusbar.NotificationSwipeActionHelper.SnoozeOption
+import com.android.systemui.statusbar.NotificationListener
+import com.android.systemui.statusbar.NotificationPresenter
+import com.android.systemui.statusbar.notification.NotificationActivityStarter
+import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl
+import com.android.systemui.statusbar.notification.stack.NotificationListContainer
+import com.android.systemui.statusbar.phone.StatusBar
+import java.io.FileDescriptor
+import java.io.PrintWriter
+import javax.inject.Inject
+
+/**
+ * Implementation of [NotificationsController] that's used when notifications rendering is disabled.
+ */
+class NotificationsControllerStub @Inject constructor(
+    private val notificationListener: NotificationListener
+) : NotificationsController {
+
+    override fun initialize(
+        statusBar: StatusBar,
+        presenter: NotificationPresenter,
+        listContainer: NotificationListContainer,
+        notificationActivityStarter: NotificationActivityStarter,
+        bindRowCallback: NotificationRowBinderImpl.BindRowCallback
+    ) {
+        // Always connect the listener even if notification-handling is disabled. Being a listener
+        // grants special permissions and it's not clear if other things will break if we lose those
+        notificationListener.registerAsSystemService()
+    }
+
+    override fun requestNotificationUpdate(reason: String) {
+    }
+
+    override fun resetUserExpandedStates() {
+    }
+
+    override fun setNotificationSnoozed(sbn: StatusBarNotification, snoozeOption: SnoozeOption) {
+    }
+
+    override fun setNotificationSnoozed(sbn: StatusBarNotification, hoursToSnooze: Int) {
+    }
+
+    override fun getActiveNotificationsCount(): Int {
+        return 0
+    }
+
+    override fun dump(
+        fd: FileDescriptor,
+        pw: PrintWriter,
+        args: Array<String>,
+        dumpTruck: Boolean
+    ) {
+        pw.println()
+        pw.println("Notification handling disabled")
+        pw.println()
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java
deleted file mode 100644
index 9adceb7..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifEvent.java
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2019 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.logging;
-
-import android.annotation.IntDef;
-import android.service.notification.NotificationListenerService;
-import android.service.notification.StatusBarNotification;
-
-import com.android.systemui.log.RichEvent;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
-import com.android.systemui.statusbar.notification.collection.ShadeListBuilder;
-import com.android.systemui.statusbar.notification.collection.coalescer.GroupCoalescer;
-
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-/**
- * An event related to notifications. {@link NotifLog} stores and prints these events for debugging
- * and triaging purposes. We do not store a copy of the status bar notification nor ranking
- * here to mitigate memory usage.
- */
-public class NotifEvent extends RichEvent {
-    /**
-     * Initializes a rich event that includes an event type that matches with an index in the array
-     * getEventLabels().
-     */
-    public NotifEvent init(@EventType int type, StatusBarNotification sbn,
-            NotificationListenerService.Ranking ranking, String reason) {
-        StringBuilder extraInfo = new StringBuilder(reason);
-        if (sbn != null) {
-            extraInfo.append(" " + sbn.getKey());
-        }
-
-        if (ranking != null) {
-            extraInfo.append(" Ranking=");
-            extraInfo.append(ranking.getRank());
-        }
-        super.init(INFO, type, extraInfo.toString());
-        return this;
-    }
-
-    /**
-     * Event labels for ListBuilderEvents
-     * Index corresponds to an # in {@link EventType}
-     */
-    @Override
-    public String[] getEventLabels() {
-        assert (TOTAL_EVENT_LABELS
-                == (TOTAL_NEM_EVENT_TYPES
-                        + TOTAL_LIST_BUILDER_EVENT_TYPES
-                        + TOTAL_COALESCER_EVENT_TYPES));
-        return EVENT_LABELS;
-    }
-
-    /**
-     * @return if this event occurred in {@link ShadeListBuilder}
-     */
-    static boolean isListBuilderEvent(@EventType int type) {
-        return isBetweenInclusive(type, 0, TOTAL_LIST_BUILDER_EVENT_TYPES);
-    }
-
-    /**
-     * @return if this event occurred in {@link NotificationEntryManager}
-     */
-    static boolean isNemEvent(@EventType int type) {
-        return isBetweenInclusive(type, TOTAL_LIST_BUILDER_EVENT_TYPES,
-                TOTAL_LIST_BUILDER_EVENT_TYPES + TOTAL_NEM_EVENT_TYPES);
-    }
-
-    private static boolean isBetweenInclusive(int x, int a, int b) {
-        return x >= a && x <= b;
-    }
-
-    @IntDef({
-            // NotifListBuilder events:
-            WARN,
-            ON_BUILD_LIST,
-            START_BUILD_LIST,
-            DISPATCH_FINAL_LIST,
-            LIST_BUILD_COMPLETE,
-            PRE_GROUP_FILTER_INVALIDATED,
-            PROMOTER_INVALIDATED,
-            SECTION_INVALIDATED,
-            COMPARATOR_INVALIDATED,
-            PARENT_CHANGED,
-            FILTER_CHANGED,
-            PROMOTER_CHANGED,
-            PRE_RENDER_FILTER_INVALIDATED,
-
-            // NotificationEntryManager events:
-            NOTIF_ADDED,
-            NOTIF_REMOVED,
-            NOTIF_UPDATED,
-            FILTER,
-            SORT,
-            FILTER_AND_SORT,
-            NOTIF_VISIBILITY_CHANGED,
-            LIFETIME_EXTENDED,
-            REMOVE_INTERCEPTED,
-            INFLATION_ABORTED,
-            INFLATED,
-
-            // GroupCoalescer
-            COALESCED_EVENT,
-            EARLY_BATCH_EMIT,
-            EMIT_EVENT_BATCH
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface EventType {}
-
-    private static final String[] EVENT_LABELS =
-            new String[]{
-                    // NotifListBuilder labels:
-                    "Warning",
-                    "OnBuildList",
-                    "StartBuildList",
-                    "DispatchFinalList",
-                    "ListBuildComplete",
-                    "FilterInvalidated",
-                    "PromoterInvalidated",
-                    "SectionInvalidated",
-                    "ComparatorInvalidated",
-                    "ParentChanged",
-                    "FilterChanged",
-                    "PromoterChanged",
-                    "FinalFilterInvalidated",
-                    "SectionerChanged",
-
-                    // NEM event labels:
-                    "NotifAdded",
-                    "NotifRemoved",
-                    "NotifUpdated",
-                    "Filter",
-                    "Sort",
-                    "FilterAndSort",
-                    "NotifVisibilityChanged",
-                    "LifetimeExtended",
-                    "RemoveIntercepted",
-                    "InflationAborted",
-                    "Inflated",
-
-                    // GroupCoalescer labels:
-                    "CoalescedEvent",
-                    "EarlyBatchEmit",
-                    "EmitEventBatch",
-                    "BatchMaxTimeout"
-            };
-
-    private static final int TOTAL_EVENT_LABELS = EVENT_LABELS.length;
-
-    /**
-     * Events related to {@link ShadeListBuilder}
-     */
-    public static final int WARN = 0;
-    public static final int ON_BUILD_LIST = 1;
-    public static final int START_BUILD_LIST = 2;
-    public static final int DISPATCH_FINAL_LIST = 3;
-    public static final int LIST_BUILD_COMPLETE = 4;
-    public static final int PRE_GROUP_FILTER_INVALIDATED = 5;
-    public static final int PROMOTER_INVALIDATED = 6;
-    public static final int SECTION_INVALIDATED = 7;
-    public static final int COMPARATOR_INVALIDATED = 8;
-    public static final int PARENT_CHANGED = 9;
-    public static final int FILTER_CHANGED = 10;
-    public static final int PROMOTER_CHANGED = 11;
-    public static final int PRE_RENDER_FILTER_INVALIDATED = 12;
-    public static final int SECTION_CHANGED = 13;
-    private static final int TOTAL_LIST_BUILDER_EVENT_TYPES = 14;
-
-    /**
-     * Events related to {@link NotificationEntryManager}
-     */
-    private static final int NEM_EVENT_START_INDEX = TOTAL_LIST_BUILDER_EVENT_TYPES;
-    public static final int NOTIF_ADDED = NEM_EVENT_START_INDEX;
-    public static final int NOTIF_REMOVED = NEM_EVENT_START_INDEX + 1;
-    public static final int NOTIF_UPDATED = NEM_EVENT_START_INDEX + 2;
-    public static final int FILTER = NEM_EVENT_START_INDEX + 3;
-    public static final int SORT = NEM_EVENT_START_INDEX + 4;
-    public static final int FILTER_AND_SORT = NEM_EVENT_START_INDEX + 5;
-    public static final int NOTIF_VISIBILITY_CHANGED = NEM_EVENT_START_INDEX + 6;
-    public static final int LIFETIME_EXTENDED = NEM_EVENT_START_INDEX + 7;
-    // unable to remove notif - removal intercepted by {@link NotificationRemoveInterceptor}
-    public static final int REMOVE_INTERCEPTED = NEM_EVENT_START_INDEX + 8;
-    public static final int INFLATION_ABORTED = NEM_EVENT_START_INDEX + 9;
-    public static final int INFLATED = NEM_EVENT_START_INDEX + 10;
-    private static final int TOTAL_NEM_EVENT_TYPES = 11;
-
-    /**
-     * Events related to {@link GroupCoalescer}
-     */
-    private static final int COALESCER_EVENT_START_INDEX = NEM_EVENT_START_INDEX
-            + TOTAL_NEM_EVENT_TYPES;
-    public static final int COALESCED_EVENT = COALESCER_EVENT_START_INDEX;
-    public static final int EARLY_BATCH_EMIT = COALESCER_EVENT_START_INDEX + 1;
-    public static final int EMIT_EVENT_BATCH = COALESCER_EVENT_START_INDEX + 2;
-    public static final int BATCH_MAX_TIMEOUT = COALESCER_EVENT_START_INDEX + 3;
-    private static final int TOTAL_COALESCER_EVENT_TYPES = 3;
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java
deleted file mode 100644
index 299d628..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/logging/NotifLog.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Copyright (C) 2019 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.logging;
-
-import android.os.SystemProperties;
-import android.service.notification.NotificationListenerService.Ranking;
-import android.service.notification.StatusBarNotification;
-
-import com.android.systemui.DumpController;
-import com.android.systemui.log.SysuiLog;
-import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-
-import javax.inject.Inject;
-import javax.inject.Singleton;
-
-/**
- * Logs systemui notification events for debugging and triaging purposes. Logs are dumped in
- * bugreports or on demand:
- *      adb shell dumpsys activity service com.android.systemui/.SystemUIService \
- *      dependency DumpController NotifLog
- */
-@Singleton
-public class NotifLog extends SysuiLog<NotifEvent> {
-    private static final String TAG = "NotifLog";
-    private static final boolean SHOW_NEM_LOGS =
-            SystemProperties.getBoolean("persist.sysui.log.notif.nem", true);
-    private static final boolean SHOW_LIST_BUILDER_LOGS =
-            SystemProperties.getBoolean("persist.sysui.log.notif.listbuilder", true);
-
-    private static final int MAX_DOZE_DEBUG_LOGS = 400;
-    private static final int MAX_DOZE_LOGS = 50;
-
-    private NotifEvent mRecycledEvent;
-
-    @Inject
-    public NotifLog(DumpController dumpController) {
-        super(dumpController, TAG, MAX_DOZE_DEBUG_LOGS, MAX_DOZE_LOGS);
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a notification, ranking and message.
-     * Uses the last recycled event if available.
-     * @return true if successfully logged, else false
-     */
-    public void log(@NotifEvent.EventType int eventType,
-            StatusBarNotification sbn, Ranking ranking, String msg) {
-        if (!mEnabled
-                || (NotifEvent.isListBuilderEvent(eventType) && !SHOW_LIST_BUILDER_LOGS)
-                || (NotifEvent.isNemEvent(eventType) && !SHOW_NEM_LOGS)) {
-            return;
-        }
-
-        if (mRecycledEvent != null) {
-            mRecycledEvent = log(mRecycledEvent.init(eventType, sbn, ranking, msg));
-        } else {
-            mRecycledEvent = log(new NotifEvent().init(eventType, sbn, ranking, msg));
-        }
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with no extra information aside from the event type
-     */
-    public void log(@NotifEvent.EventType int eventType) {
-        log(eventType, null, null, "");
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a message
-     */
-    public void log(@NotifEvent.EventType int eventType, String msg) {
-        log(eventType, null, null, msg);
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a entry
-     */
-    public void log(@NotifEvent.EventType int eventType, NotificationEntry entry) {
-        log(eventType, entry.getSbn(), entry.getRanking(), "");
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a NotificationEntry and message
-     */
-    public void log(@NotifEvent.EventType int eventType, NotificationEntry entry, String msg) {
-        log(eventType, entry.getSbn(), entry.getRanking(), msg);
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a notification and message
-     */
-    public void log(@NotifEvent.EventType int eventType, StatusBarNotification sbn, String msg) {
-        log(eventType, sbn, null, msg);
-    }
-
-    /**
-     * Logs a {@link NotifEvent} with a ranking and message
-     */
-    public void log(@NotifEvent.EventType int eventType, Ranking ranking, String msg) {
-        log(eventType, null, ranking, msg);
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
index 88b4147..fc221d4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/people/PeopleHubNotificationListener.kt
@@ -93,8 +93,7 @@
     private val peopleHubManagerForUser = SparseArray<PeopleHubManager>()
 
     private val notificationEntryListener = object : NotificationEntryListener {
-        override fun onEntryInflated(entry: NotificationEntry, inflatedFlags: Int) =
-                addVisibleEntry(entry)
+        override fun onEntryInflated(entry: NotificationEntry) = addVisibleEntry(entry)
 
         override fun onEntryReinflated(entry: NotificationEntry) = addVisibleEntry(entry)
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
index 50a2037..3eac229 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationView.java
@@ -33,16 +33,14 @@
 import android.view.animation.Interpolator;
 import android.view.animation.PathInterpolator;
 
-import com.android.systemui.Dependency;
+import com.android.systemui.Gefingerpoken;
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
-import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.statusbar.NotificationShelf;
 import com.android.systemui.statusbar.notification.FakeShadowView;
 import com.android.systemui.statusbar.notification.NotificationUtils;
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
 import com.android.systemui.statusbar.notification.stack.StackStateAnimator;
-import com.android.systemui.statusbar.phone.DoubleTapHelper;
 
 /**
  * Base class for both {@link ExpandableNotificationRow} and {@link NotificationShelf}
@@ -94,14 +92,12 @@
     private static final Interpolator ACTIVATE_INVERSE_ALPHA_INTERPOLATOR
             = new PathInterpolator(0, 0, 0.5f, 1);
     private int mTintedRippleColor;
-    protected int mNormalRippleColor;
-    private final AccessibilityManager mAccessibilityManager;
-    private final DoubleTapHelper mDoubleTapHelper;
+    private int mNormalRippleColor;
+    private Gefingerpoken mTouchHandler;
 
     private boolean mDimmed;
 
-    protected int mBgTint = NO_COLOR;
-    private float mBgAlpha = 1f;
+    int mBgTint = NO_COLOR;
 
     /**
      * Flag to indicate that the notification has been touched once and the second touch will
@@ -116,7 +112,7 @@
     private Interpolator mCurrentAppearInterpolator;
     private Interpolator mCurrentAlphaInterpolator;
 
-    protected NotificationBackgroundView mBackgroundNormal;
+    NotificationBackgroundView mBackgroundNormal;
     private NotificationBackgroundView mBackgroundDimmed;
     private ObjectAnimator mBackgroundAnimator;
     private RectF mAppearAnimationRect = new RectF();
@@ -130,7 +126,6 @@
     private boolean mLastInSection;
     private boolean mFirstInSection;
     private boolean mIsBelowSpeedBump;
-    private final FalsingManager mFalsingManager;
 
     private float mNormalBackgroundVisibilityAmount;
     private float mDimmedBackgroundFadeInAmount = -1;
@@ -154,38 +149,25 @@
      */
     private boolean mNeedsDimming;
     private int mDimmedAlpha;
-    private boolean mBlockNextTouch;
     private boolean mIsHeadsUpAnimation;
     private int mHeadsUpAddStartLocation;
     private float mHeadsUpLocation;
     private boolean mIsAppearing;
     private boolean mDismissed;
     private boolean mRefocusOnDismiss;
+    private OnDimmedListener mOnDimmedListener;
+    private AccessibilityManager mAccessibilityManager;
 
     public ActivatableNotificationView(Context context, AttributeSet attrs) {
         super(context, attrs);
         mSlowOutFastInInterpolator = new PathInterpolator(0.8f, 0.0f, 0.6f, 1.0f);
         mSlowOutLinearInInterpolator = new PathInterpolator(0.8f, 0.0f, 1.0f, 1.0f);
-        mFalsingManager = Dependency.get(FalsingManager.class);  // TODO: inject into a controller.
         setClipChildren(false);
         setClipToPadding(false);
         updateColors();
-        mAccessibilityManager = AccessibilityManager.getInstance(mContext);
-
-        mDoubleTapHelper = new DoubleTapHelper(this, (active) -> {
-            if (active) {
-                makeActive();
-            } else {
-                makeInactive(true /* animate */);
-            }
-        }, super::performClick, this::handleSlideBack, mFalsingManager::onNotificationDoubleTap);
         initDimens();
     }
 
-    public FalsingManager getFalsingManager() {
-        return mFalsingManager;
-    }
-
     private void updateColors() {
         mNormalColor = mContext.getColor(R.color.notification_material_background_color);
         mTintedRippleColor = mContext.getColor(
@@ -236,32 +218,15 @@
         mBackgroundDimmed.setCustomBackground(R.drawable.notification_material_bg_dim);
     }
 
-    private final Runnable mTapTimeoutRunnable = new Runnable() {
-        @Override
-        public void run() {
-            makeInactive(true /* animate */);
-        }
-    };
 
     @Override
     public boolean onInterceptTouchEvent(MotionEvent ev) {
-        if (mNeedsDimming && ev.getActionMasked() == MotionEvent.ACTION_DOWN
-                && disallowSingleClick(ev) && !isTouchExplorationEnabled()) {
-            if (!mActivated) {
-                return true;
-            } else if (!mDoubleTapHelper.isWithinDoubleTapSlop(ev)) {
-                mBlockNextTouch = true;
-                makeInactive(true /* animate */);
-                return true;
-            }
+        if (mTouchHandler != null && mTouchHandler.onInterceptTouchEvent(ev)) {
+            return true;
         }
         return super.onInterceptTouchEvent(ev);
     }
 
-    private boolean isTouchExplorationEnabled() {
-        return mAccessibilityManager.isTouchExplorationEnabled();
-    }
-
     protected boolean disallowSingleClick(MotionEvent ev) {
         return false;
     }
@@ -270,25 +235,6 @@
         return false;
     }
 
-    @Override
-    public boolean onTouchEvent(MotionEvent event) {
-        boolean result;
-        if (mBlockNextTouch) {
-            mBlockNextTouch = false;
-            return false;
-        }
-        if (mNeedsDimming && !isTouchExplorationEnabled() && isInteractive()) {
-            boolean wasActivated = mActivated;
-            result = handleTouchEventDimmed(event);
-            if (wasActivated && result && event.getAction() == MotionEvent.ACTION_UP) {
-                removeCallbacks(mTapTimeoutRunnable);
-            }
-        } else {
-            result = super.onTouchEvent(event);
-        }
-        return result;
-    }
-
     /**
      * @return whether this view is interactive and can be double tapped
      */
@@ -313,28 +259,11 @@
         }
     }
 
-    public void setRippleAllowed(boolean allowed) {
+    void setRippleAllowed(boolean allowed) {
         mBackgroundNormal.setPressedAllowed(allowed);
     }
 
-    private boolean handleTouchEventDimmed(MotionEvent event) {
-        if (mNeedsDimming && !mDimmed) {
-            // We're actually dimmed, but our content isn't dimmable, let's ensure we have a ripple
-            super.onTouchEvent(event);
-        }
-        return mDoubleTapHelper.onTouchEvent(event, getActualHeight());
-    }
-
-    @Override
-    public boolean performClick() {
-        if (!mNeedsDimming || isTouchExplorationEnabled()) {
-            return super.performClick();
-        }
-        return false;
-    }
-
-    private void makeActive() {
-        mFalsingManager.onNotificationActive();
+    void makeActive() {
         startActivateAnimation(false /* reverse */);
         mActivated = true;
         if (mOnActivatedListener != null) {
@@ -388,19 +317,25 @@
         mBackgroundNormal.animate()
                 .alpha(reverse ? 0f : 1f)
                 .setInterpolator(alphaInterpolator)
-                .setUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-                    @Override
-                    public void onAnimationUpdate(ValueAnimator animation) {
-                        float animatedFraction = animation.getAnimatedFraction();
-                        if (reverse) {
-                            animatedFraction = 1.0f - animatedFraction;
-                        }
-                        setNormalBackgroundVisibilityAmount(animatedFraction);
+                .setUpdateListener(animation -> {
+                    float animatedFraction = animation.getAnimatedFraction();
+                    if (reverse) {
+                        animatedFraction = 1.0f - animatedFraction;
                     }
+                    setNormalBackgroundVisibilityAmount(animatedFraction);
                 })
                 .setDuration(ACTIVATE_ANIMATION_LENGTH);
     }
 
+    @Override
+    public boolean performClick() {
+        if (!mNeedsDimming || (mAccessibilityManager != null
+                && mAccessibilityManager.isTouchExplorationEnabled())) {
+            return super.performClick();
+        }
+        return false;
+    }
+
     /**
      * Cancels the hotspot and makes the notification inactive.
      */
@@ -418,11 +353,13 @@
         if (mOnActivatedListener != null) {
             mOnActivatedListener.onActivationReset(this);
         }
-        removeCallbacks(mTapTimeoutRunnable);
     }
 
     public void setDimmed(boolean dimmed, boolean fade) {
         mNeedsDimming = dimmed;
+        if (mOnDimmedListener != null) {
+            mOnDimmedListener.onSetDimmed(dimmed);
+        }
         dimmed &= isDimmable();
         if (mDimmed != dimmed) {
             mDimmed = dimmed;
@@ -439,13 +376,17 @@
         return true;
     }
 
+    public boolean isDimmed() {
+        return mDimmed;
+    }
+
     private void updateOutlineAlpha() {
         float alpha = NotificationStackScrollLayout.BACKGROUND_ALPHA_DIMMED;
         alpha = (alpha + (1.0f - alpha) * mNormalBackgroundVisibilityAmount);
         setOutlineAlpha(alpha);
     }
 
-    public void setNormalBackgroundVisibilityAmount(float normalBackgroundVisibilityAmount) {
+    private void setNormalBackgroundVisibilityAmount(float normalBackgroundVisibilityAmount) {
         mNormalBackgroundVisibilityAmount = normalBackgroundVisibilityAmount;
         updateOutlineAlpha();
     }
@@ -473,14 +414,14 @@
     /**
      * Sets the tint color of the background
      */
-    public void setTintColor(int color) {
+    protected void setTintColor(int color) {
         setTintColor(color, false);
     }
 
     /**
      * Sets the tint color of the background
      */
-    public void setTintColor(int color, boolean animated) {
+    void setTintColor(int color, boolean animated) {
         if (color != mBgTint) {
             mBgTint = color;
             updateBackgroundTint(animated);
@@ -562,13 +503,10 @@
             mStartTint = mCurrentBackgroundTint;
             mTargetTint = color;
             mBackgroundColorAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
-            mBackgroundColorAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-                @Override
-                public void onAnimationUpdate(ValueAnimator animation) {
-                    int newColor = NotificationUtils.interpolateColors(mStartTint, mTargetTint,
-                            animation.getAnimatedFraction());
-                    setBackgroundTintColor(newColor);
-                }
+            mBackgroundColorAnimator.addUpdateListener(animation -> {
+                int newColor = NotificationUtils.interpolateColors(mStartTint, mTargetTint,
+                        animation.getAnimatedFraction());
+                setBackgroundTintColor(newColor);
             });
             mBackgroundColorAnimator.setDuration(StackStateAnimator.ANIMATION_DURATION_STANDARD);
             mBackgroundColorAnimator.setInterpolator(Interpolators.LINEAR);
@@ -643,11 +581,11 @@
     }
 
     protected void updateBackgroundAlpha(float transformationAmount) {
-        mBgAlpha =  isChildInGroup() && mDimmed ? transformationAmount : 1f;
+        float bgAlpha = isChildInGroup() && mDimmed ? transformationAmount : 1f;
         if (mDimmedBackgroundFadeInAmount != -1) {
-            mBgAlpha *= mDimmedBackgroundFadeInAmount;
+            bgAlpha *= mDimmedBackgroundFadeInAmount;
         }
-        mBackgroundDimmed.setAlpha(mBgAlpha);
+        mBackgroundDimmed.setAlpha(bgAlpha);
     }
 
     protected void resetBackgroundAlpha() {
@@ -671,7 +609,6 @@
             mBackgroundDimmed.setVisibility(View.INVISIBLE);
             mBackgroundNormal.setVisibility(View.VISIBLE);
             mBackgroundNormal.setAlpha(1f);
-            removeCallbacks(mTapTimeoutRunnable);
             // make in inactive to avoid it sticking around active
             makeInactive(false /* animate */);
         }
@@ -783,14 +720,11 @@
         mAppearAnimator.setInterpolator(Interpolators.LINEAR);
         mAppearAnimator.setDuration(
                 (long) (duration * Math.abs(mAppearAnimationFraction - targetValue)));
-        mAppearAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
-            @Override
-            public void onAnimationUpdate(ValueAnimator animation) {
-                mAppearAnimationFraction = (float) animation.getAnimatedValue();
-                updateAppearAnimationAlpha();
-                updateAppearRect();
-                invalidate();
-            }
+        mAppearAnimator.addUpdateListener(animation -> {
+            mAppearAnimationFraction = (float) animation.getAnimatedValue();
+            updateAppearAnimationAlpha();
+            updateAppearRect();
+            invalidate();
         });
         if (animationListener != null) {
             mAppearAnimator.addListener(animationListener);
@@ -921,7 +855,7 @@
                 getCurrentBackgroundRadiusBottom());
     }
 
-    protected void applyBackgroundRoundness(float topRadius, float bottomRadius) {
+    private void applyBackgroundRoundness(float topRadius, float bottomRadius) {
         mBackgroundDimmed.setRoundness(topRadius, bottomRadius);
         mBackgroundNormal.setRoundness(topRadius, bottomRadius);
     }
@@ -963,7 +897,7 @@
         }
     }
 
-    protected int getRippleColor() {
+    private int getRippleColor() {
         if (mBgTint != 0) {
             return mTintedRippleColor;
         } else {
@@ -1010,10 +944,6 @@
         mOnActivatedListener = onActivatedListener;
     }
 
-    public boolean hasSameBgColor(ActivatableNotificationView otherView) {
-        return calculateBgColor() == otherView.calculateBgColor();
-    }
-
     @Override
     public void setFakeShadowIntensity(float shadowIntensity, float outlineAlpha, int shadowYEnd,
             int outlineTranslation) {
@@ -1071,8 +1001,24 @@
         return mRefocusOnDismiss || isAccessibilityFocused();
     }
 
+    void setTouchHandler(Gefingerpoken touchHandler) {
+        mTouchHandler = touchHandler;
+    }
+
+    void setOnDimmedListener(OnDimmedListener onDimmedListener) {
+        mOnDimmedListener = onDimmedListener;
+    }
+
+    public void setAccessibilityManager(AccessibilityManager accessibilityManager) {
+        mAccessibilityManager = accessibilityManager;
+    }
+
     public interface OnActivatedListener {
         void onActivated(ActivatableNotificationView view);
         void onActivationReset(ActivatableNotificationView view);
     }
+
+    interface OnDimmedListener {
+        void onSetDimmed(boolean dimmed);
+    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java
index 18993ff..8465658 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ActivatableNotificationViewController.java
@@ -16,9 +16,13 @@
 
 package com.android.systemui.statusbar.notification.row;
 
+import android.view.MotionEvent;
+import android.view.View;
 import android.view.accessibility.AccessibilityManager;
 
+import com.android.systemui.Gefingerpoken;
 import com.android.systemui.plugins.FalsingManager;
+import com.android.systemui.statusbar.phone.DoubleTapHelper;
 
 import javax.inject.Inject;
 
@@ -27,21 +31,102 @@
  */
 public class ActivatableNotificationViewController {
     private final ActivatableNotificationView mView;
+    private final ExpandableOutlineViewController mExpandableOutlineViewController;
     private final AccessibilityManager mAccessibilityManager;
     private final FalsingManager mFalsingManager;
+    private DoubleTapHelper mDoubleTapHelper;
+    private boolean mNeedsDimming;
+
+    private TouchHandler mTouchHandler = new TouchHandler();
 
     @Inject
     public ActivatableNotificationViewController(ActivatableNotificationView view,
+            ExpandableOutlineViewController expandableOutlineViewController,
             AccessibilityManager accessibilityManager, FalsingManager falsingManager) {
         mView = view;
+        mExpandableOutlineViewController = expandableOutlineViewController;
         mAccessibilityManager = accessibilityManager;
         mFalsingManager = falsingManager;
+
+        mView.setOnActivatedListener(new ActivatableNotificationView.OnActivatedListener() {
+            @Override
+            public void onActivated(ActivatableNotificationView view) {
+                mFalsingManager.onNotificationActive();
+            }
+
+            @Override
+            public void onActivationReset(ActivatableNotificationView view) {
+            }
+        });
     }
 
     /**
      * Initialize the controller, setting up handlers and other behavior.
      */
     public void init() {
+        mExpandableOutlineViewController.init();
+        mDoubleTapHelper = new DoubleTapHelper(mView, (active) -> {
+            if (active) {
+                mView.makeActive();
+                mFalsingManager.onNotificationActive();
+            } else {
+                mView.makeInactive(true /* animate */);
+            }
+        }, mView::performClick, mView::handleSlideBack, mFalsingManager::onNotificationDoubleTap);
+        mView.setOnTouchListener(mTouchHandler);
+        mView.setTouchHandler(mTouchHandler);
+        mView.setOnDimmedListener(dimmed -> {
+            mNeedsDimming = dimmed;
+        });
+        mView.setAccessibilityManager(mAccessibilityManager);
+    }
 
+    class TouchHandler implements Gefingerpoken, View.OnTouchListener {
+        private boolean mBlockNextTouch;
+
+        @Override
+        public boolean onTouch(View v, MotionEvent ev) {
+            boolean result;
+            if (mBlockNextTouch) {
+                mBlockNextTouch = false;
+                return true;
+            }
+            if (mNeedsDimming && !mAccessibilityManager.isTouchExplorationEnabled()
+                    && mView.isInteractive()) {
+                if (mNeedsDimming && !mView.isDimmed()) {
+                    // We're actually dimmed, but our content isn't dimmable,
+                    // let's ensure we have a ripple
+                    return false;
+                }
+                result = mDoubleTapHelper.onTouchEvent(ev, mView.getActualHeight());
+            } else {
+                return false;
+            }
+            return result;
+        }
+
+        @Override
+        public boolean onInterceptTouchEvent(MotionEvent ev) {
+            if (mNeedsDimming && ev.getActionMasked() == MotionEvent.ACTION_DOWN
+                    && mView.disallowSingleClick(ev)
+                    && !mAccessibilityManager.isTouchExplorationEnabled()) {
+                if (!mView.isActivated()) {
+                    return true;
+                } else if (!mDoubleTapHelper.isWithinDoubleTapSlop(ev)) {
+                    mBlockNextTouch = true;
+                    mView.makeInactive(true /* animate */);
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        /**
+         * Use {@link #onTouch(View, MotionEvent) instead}.
+         */
+        @Override
+        public boolean onTouchEvent(MotionEvent ev) {
+            return false;
+        }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindRequester.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindRequester.java
new file mode 100644
index 0000000..1cf6b4f
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindRequester.java
@@ -0,0 +1,76 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.os.CancellationSignal;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.NotifBindPipeline.BindCallback;
+
+/**
+ * A {@link BindRequester} is a general superclass for something that notifies
+ * {@link NotifBindPipeline} when it needs it to kick off a bind run.
+ */
+public abstract class BindRequester {
+    private @Nullable BindRequestListener mBindRequestListener;
+
+    /**
+     * Notifies the listener that some parameters/state has changed for some notification and that
+     * content needs to be bound again.
+     *
+     * The caller can also specify a callback for when the entire bind pipeline completes, i.e.
+     * when the change is fully propagated to the final view. The caller can cancel this
+     * callback with the returned cancellation signal.
+     *
+     * @param callback callback after bind completely finishes
+     * @return cancellation signal to cancel callback
+     */
+    public final CancellationSignal requestRebind(
+            @NonNull NotificationEntry entry,
+            @Nullable BindCallback callback) {
+        CancellationSignal signal = new CancellationSignal();
+        if (mBindRequestListener != null) {
+            mBindRequestListener.onBindRequest(entry, signal, callback);
+        }
+        return signal;
+    }
+
+    final void setBindRequestListener(BindRequestListener listener) {
+        mBindRequestListener = listener;
+    }
+
+    /**
+     * Listener interface for when content needs to be bound again.
+     */
+    public interface BindRequestListener {
+
+        /**
+         * Called when {@link #requestRebind} is called.
+         *
+         * @param entry notification that has outdated content
+         * @param signal cancellation signal to cancel callback
+         * @param callback callback after content is fully updated
+         */
+        void onBindRequest(
+                @NonNull NotificationEntry entry,
+                @NonNull CancellationSignal signal,
+                @Nullable BindCallback callback);
+
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindStage.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindStage.java
new file mode 100644
index 0000000..29447ca
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/BindStage.java
@@ -0,0 +1,104 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import android.annotation.MainThread;
+import android.util.ArrayMap;
+
+import androidx.annotation.NonNull;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+import java.util.Map;
+
+/**
+ * A {@link BindStage} is an abstraction for a unit of work in inflating/binding/unbinding
+ * views to a notification. Used by {@link NotifBindPipeline}.
+ *
+ * Clients may also use {@link #getStageParams} to provide parameters for this stage for a given
+ * notification and request a rebind.
+ *
+ * @param <Params> params to do this stage
+ */
+@MainThread
+public abstract class BindStage<Params> extends BindRequester {
+
+    private Map<NotificationEntry, Params> mContentParams = new ArrayMap<>();
+
+    /**
+     * Execute the stage asynchronously.
+     *
+     * @param row notification top-level view to bind views to
+     * @param callback callback after stage finishes
+     */
+    protected abstract void executeStage(
+            @NonNull NotificationEntry entry,
+            @NonNull ExpandableNotificationRow row,
+            @NonNull StageCallback callback);
+
+    /**
+     * Abort the stage if in progress.
+     *
+     * @param row notification top-level view to bind views to
+     */
+    protected abstract void abortStage(
+            @NonNull NotificationEntry entry,
+            @NonNull ExpandableNotificationRow row);
+
+    /**
+     * Get the stage parameters for the entry. Clients should use this to modify how the stage
+     * handles the notification content.
+     */
+    public final Params getStageParams(@NonNull NotificationEntry entry) {
+        Params params = mContentParams.get(entry);
+        if (params == null) {
+            throw new IllegalStateException(
+                    String.format("Entry does not have any stage parameters. key: %s",
+                            entry.getKey()));
+        }
+        return params;
+    }
+
+    /**
+     * Create a params entry for the notification for this stage.
+     */
+    final void createStageParams(@NonNull NotificationEntry entry) {
+        mContentParams.put(entry, newStageParams());
+    }
+
+    /**
+     * Delete params entry for notification.
+     */
+    final void deleteStageParams(@NonNull NotificationEntry entry) {
+        mContentParams.remove(entry);
+    }
+
+    /**
+     * Create a new, empty stage params object.
+     */
+    protected abstract Params newStageParams();
+
+    /**
+     * Interface for callback.
+     */
+    interface StageCallback {
+        /**
+         * Callback for when the stage is complete.
+         */
+        void onStageFinished(NotificationEntry entry);
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/DungeonRow.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/DungeonRow.kt
new file mode 100644
index 0000000..373457d
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/DungeonRow.kt
@@ -0,0 +1,43 @@
+/*
+* 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.systemui.statusbar.notification.row
+
+import android.content.Context
+import android.util.AttributeSet
+import android.widget.LinearLayout
+import android.widget.TextView
+import com.android.systemui.R
+import com.android.systemui.statusbar.StatusBarIconView
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+
+class DungeonRow(context: Context, attrs: AttributeSet) : LinearLayout(context, attrs) {
+    var entry: NotificationEntry? = null
+        set(value) {
+            field = value
+            update()
+        }
+
+    private fun update() {
+        (findViewById(R.id.app_name) as TextView).apply {
+            text = entry?.row?.appName
+        }
+
+        (findViewById(R.id.icon) as StatusBarIconView).apply {
+            set(entry?.icon?.statusBarIcon)
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
index b71beda..55173182 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRow.java
@@ -19,8 +19,6 @@
 import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator.ExpandAnimationParameters;
 import static com.android.systemui.statusbar.notification.row.NotificationContentView.VISIBLE_TYPE_CONTRACTED;
 import static com.android.systemui.statusbar.notification.row.NotificationContentView.VISIBLE_TYPE_HEADSUP;
-import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED;
-import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_EXPANDED;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_PUBLIC;
 
@@ -44,7 +42,6 @@
 import android.os.AsyncTask;
 import android.os.Build;
 import android.os.Bundle;
-import android.os.SystemClock;
 import android.service.notification.StatusBarNotification;
 import android.util.ArraySet;
 import android.util.AttributeSet;
@@ -74,11 +71,11 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.Interpolators;
 import com.android.systemui.R;
+import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.PluginListener;
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin.MenuItem;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.StatusBarIconView;
@@ -88,8 +85,6 @@
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.logging.NotificationCounters;
-import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
-import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 import com.android.systemui.statusbar.notification.row.wrapper.NotificationViewWrapper;
 import com.android.systemui.statusbar.notification.stack.AmbientState;
@@ -127,14 +122,6 @@
     public static final float DEFAULT_HEADER_VISIBLE_AMOUNT = 1.0f;
     private static final long RECENTLY_ALERTED_THRESHOLD_MS = TimeUnit.SECONDS.toMillis(30);
 
-    /**
-     * Content views that must be inflated at all times.
-     */
-    @InflationFlag
-    static final int REQUIRED_INFLATION_FLAGS =
-            FLAG_CONTENT_VIEW_CONTRACTED
-            | FLAG_CONTENT_VIEW_EXPANDED;
-
     private boolean mUpdateBackgroundOnUpdate;
     private boolean mNotificationTranslationFinished = false;
 
@@ -149,7 +136,7 @@
     private StatusBarStateController mStatusbarStateController;
     private KeyguardBypassController mBypassController;
     private LayoutListener mLayoutListener;
-    private NotificationRowContentBinder mNotificationContentBinder;
+    private RowContentBindStage mRowContentBindStage;
     private int mIconTransformContentShift;
     private int mIconTransformContentShiftNoIcon;
     private int mMaxHeadsUpHeightBeforeN;
@@ -211,6 +198,7 @@
     private NotificationGuts mGuts;
     private NotificationEntry mEntry;
     private String mAppName;
+    private FalsingManager mFalsingManager;
 
     /**
      * Whether or not the notification is using the heads up view and should peek from the top.
@@ -244,10 +232,7 @@
     private ExpandableNotificationRow mNotificationParent;
     private OnExpandClickListener mOnExpandClickListener;
     private View.OnClickListener mOnAppOpsClickListener;
-    private InflationCallback mInflationCallback;
     private boolean mIsChildInGroup;
-    private @InflationFlag int mInflationFlags = REQUIRED_INFLATION_FLAGS;
-    private final BindParams mBindParams = new BindParams();
 
     // Listener will be called when receiving a long click event.
     // Use #setLongPressPosition to optionally assign positional data with the long press.
@@ -460,24 +445,25 @@
     }
 
     /**
-     * Inflate views based off the inflation flags set. Inflation happens asynchronously.
-     */
-    public void inflateViews() {
-        mNotificationContentBinder.bindContent(mEntry, this, mInflationFlags, mBindParams,
-                false /* forceInflate */, mInflationCallback);
-    }
-
-    /**
      * Marks a content view as freeable, setting it so that future inflations do not reinflate
      * and ensuring that the view is freed when it is safe to remove.
      *
+     * TODO: This should be moved to the respective coordinator and call
+     * {@link RowContentBindParams#freeContentViews} directly after disappear animation
+     * finishes instead of depending on binding API to know when it's "safe".
+     *
      * @param inflationFlag flag corresponding to the content view to be freed
      */
     public void freeContentViewWhenSafe(@InflationFlag int inflationFlag) {
         // View should not be reinflated in the future
-        clearInflationFlags(inflationFlag);
-        Runnable freeViewRunnable =
-                () -> mNotificationContentBinder.unbindContent(mEntry, this, inflationFlag);
+        Runnable freeViewRunnable = () -> {
+            // Possible for notification to be removed after free request.
+            if (!isRemoved()) {
+                RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+                params.freeContentViews(inflationFlag);
+                mRowContentBindStage.requestRebind(mEntry, null /* callback */);
+            }
+        };
         switch (inflationFlag) {
             case FLAG_CONTENT_VIEW_HEADS_UP:
                 getPrivateLayout().performWhenContentInactive(VISIBLE_TYPE_HEADSUP,
@@ -492,35 +478,6 @@
     }
 
     /**
-     * Set flags for content views that should be inflated
-     *
-     * @param flags flags to inflate
-     */
-    public void setInflationFlags(@InflationFlag int flags) {
-        mInflationFlags |= flags;
-    }
-
-    /**
-     * Clear flags for content views that should not be inflated
-     *
-     * @param flags flags that should not be inflated
-     */
-    public void clearInflationFlags(@InflationFlag int flags) {
-        mInflationFlags &= ~flags;
-        mInflationFlags |= REQUIRED_INFLATION_FLAGS;
-    }
-
-    /**
-     * Whether or not a content view should be inflated.
-     *
-     * @param flag the flag corresponding to the content view
-     * @return true if the flag is set, false otherwise
-     */
-    public boolean isInflationFlagSet(@InflationFlag int flag) {
-        return ((mInflationFlags & flag) != 0);
-    }
-
-    /**
      * Caches whether or not this row contains a system notification. Note, this is only cached
      * once per notification as the packageInfo can't technically change for a notification row.
      */
@@ -745,6 +702,11 @@
         mPrivateLayout.setRemoteInputController(r);
     }
 
+
+    String getAppName() {
+        return mAppName;
+    }
+
     public void addChildNotification(ExpandableNotificationRow row) {
         addChildNotification(row, -1);
     }
@@ -833,13 +795,13 @@
         }
         mNotificationParent = isChildInGroup ? parent : null;
         mPrivateLayout.setIsChildInGroup(isChildInGroup);
-        mBindParams.isChildInGroup = isChildInGroup;
+        // TODO: Move inflation logic out of this call
         if (mIsChildInGroup != isChildInGroup) {
             mIsChildInGroup = isChildInGroup;
             if (mIsLowPriority) {
-                int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
-                mNotificationContentBinder.bindContent(mEntry, this, flags, mBindParams,
-                        false /* forceInflate */, mInflationCallback);
+                RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+                params.setUseLowPriority(mIsLowPriority);
+                mRowContentBindStage.requestRebind(mEntry, null /* callback */);
             }
         }
         resetBackgroundAlpha();
@@ -1125,20 +1087,6 @@
     }
 
     @Override
-    protected void onAttachedToWindow() {
-        super.onAttachedToWindow();
-        mEntry.setInitializationTime(SystemClock.elapsedRealtime());
-        Dependency.get(PluginManager.class).addPluginListener(this,
-                NotificationMenuRowPlugin.class, false /* Allow multiple */);
-    }
-
-    @Override
-    protected void onDetachedFromWindow() {
-        super.onDetachedFromWindow();
-        Dependency.get(PluginManager.class).removePluginListener(this);
-    }
-
-    @Override
     public void onPluginConnected(NotificationMenuRowPlugin plugin, Context pluginContext) {
         boolean existed = mMenuRow != null && mMenuRow.getMenuView() != null;
         if (existed) {
@@ -1238,8 +1186,10 @@
             l.reInflateViews();
         }
         mEntry.getSbn().clearPackageContext();
-        mNotificationContentBinder.bindContent(mEntry, this, mInflationFlags, mBindParams,
-                true /* forceInflate */, mInflationCallback);
+        // TODO: Move content inflation logic out of this call
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.setNeedsReinflation(true);
+        mRowContentBindStage.requestRebind(mEntry, null /* callback */);
     }
 
     @Override
@@ -1475,7 +1425,7 @@
         return mIsBlockingHelperShowing && mNotificationTranslationFinished;
     }
 
-    public void setOnDismissRunnable(Runnable onDismissRunnable) {
+    void setOnDismissRunnable(Runnable onDismissRunnable) {
         mOnDismissRunnable = onDismissRunnable;
     }
 
@@ -1593,7 +1543,6 @@
     public void setIsLowPriority(boolean isLowPriority) {
         mIsLowPriority = isLowPriority;
         mPrivateLayout.setIsLowPriority(isLowPriority);
-        mBindParams.isLowPriority = mIsLowPriority;
         if (mChildrenContainer != null) {
             mChildrenContainer.setIsLowPriority(isLowPriority);
         }
@@ -1603,36 +1552,25 @@
         return mIsLowPriority;
     }
 
-    public void setUseIncreasedCollapsedHeight(boolean use) {
+    public void setUsesIncreasedCollapsedHeight(boolean use) {
         mUseIncreasedCollapsedHeight = use;
-        mBindParams.usesIncreasedHeight = use;
     }
 
-    public void setUseIncreasedHeadsUpHeight(boolean use) {
+    public void setUsesIncreasedHeadsUpHeight(boolean use) {
         mUseIncreasedHeadsUpHeight = use;
-        mBindParams.usesIncreasedHeadsUpHeight = use;
-    }
-
-    /**
-     * Set callback for notification content inflation
-     *
-     * @param callback inflation callback
-     */
-    public void setInflationCallback(InflationCallback callback) {
-        mInflationCallback = callback;
     }
 
     public void setNeedsRedaction(boolean needsRedaction) {
+        // TODO: Move inflation logic out of this call and remove this method
         if (mNeedsRedaction != needsRedaction) {
             mNeedsRedaction = needsRedaction;
+            RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
             if (needsRedaction) {
-                setInflationFlags(FLAG_CONTENT_VIEW_PUBLIC);
-                mNotificationContentBinder.bindContent(mEntry, this, FLAG_CONTENT_VIEW_PUBLIC,
-                        mBindParams, false /* forceInflate */, mInflationCallback);
+                params.requireContentViews(FLAG_CONTENT_VIEW_PUBLIC);
             } else {
-                clearInflationFlags(FLAG_CONTENT_VIEW_PUBLIC);
-                freeContentViewWhenSafe(FLAG_CONTENT_VIEW_PUBLIC);
+                params.freeContentViews(FLAG_CONTENT_VIEW_PUBLIC);
             }
+            mRowContentBindStage.requestRebind(mEntry, null /* callback */);
         }
     }
 
@@ -1645,7 +1583,6 @@
         mMenuRow = new NotificationMenuRow(mContext);
         mImageResolver = new NotificationInlineImageResolver(context,
                 new NotificationInlineImageCache());
-        mMediaManager = Dependency.get(NotificationMediaManager.class);
         initDimens();
     }
 
@@ -1659,8 +1596,12 @@
             KeyguardBypassController bypassController,
             NotificationGroupManager groupManager,
             HeadsUpManager headsUpManager,
-            NotificationRowContentBinder rowContentBinder,
-            OnExpandClickListener onExpandClickListener) {
+            RowContentBindStage rowContentBindStage,
+            OnExpandClickListener onExpandClickListener,
+            NotificationMediaManager notificationMediaManager,
+            OnAppOpsClickListener onAppOpsClickListener,
+            FalsingManager falsingManager,
+            StatusBarStateController statusBarStateController) {
         mAppName = appName;
         if (mMenuRow != null && mMenuRow.getMenuView() != null) {
             mMenuRow.setAppName(mAppName);
@@ -1671,11 +1612,11 @@
         mGroupManager = groupManager;
         mPrivateLayout.setGroupManager(groupManager);
         mHeadsUpManager = headsUpManager;
-        mNotificationContentBinder = rowContentBinder;
+        mRowContentBindStage = rowContentBindStage;
         mOnExpandClickListener = onExpandClickListener;
-    }
-
-    public void setStatusBarStateController(StatusBarStateController statusBarStateController) {
+        mMediaManager = notificationMediaManager;
+        setAppOpsOnClickListener(onAppOpsClickListener);
+        mFalsingManager = falsingManager;
         mStatusbarStateController = statusBarStateController;
     }
 
@@ -1767,7 +1708,7 @@
         return mOnAppOpsClickListener;
     }
 
-    public void setAppOpsOnClickListener(ExpandableNotificationRow.OnAppOpsClickListener l) {
+    void setAppOpsOnClickListener(ExpandableNotificationRow.OnAppOpsClickListener l) {
         mOnAppOpsClickListener = v -> {
             createMenu();
             NotificationMenuRowPlugin provider = getProvider();
@@ -2236,7 +2177,7 @@
      * @param allowChildExpansion whether a call to this method allows expanding children
      */
     public void setUserExpanded(boolean userExpanded, boolean allowChildExpansion) {
-        getFalsingManager().setNotificationExpanded();
+        mFalsingManager.setNotificationExpanded();
         if (mIsSummaryWithChildren && !shouldShowPublic() && allowChildExpansion
                 && !mChildrenContainer.showingAsLowPriority()) {
             final boolean wasExpanded = mGroupManager.isGroupExpanded(mEntry.getSbn());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
new file mode 100644
index 0000000..39fab43
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowController.java
@@ -0,0 +1,161 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
+import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
+
+import android.view.View;
+import android.view.ViewGroup;
+
+import com.android.systemui.plugins.FalsingManager;
+import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.shared.plugins.PluginManager;
+import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.notification.logging.NotificationLogger;
+import com.android.systemui.statusbar.notification.row.dagger.AppName;
+import com.android.systemui.statusbar.notification.row.dagger.DismissRunnable;
+import com.android.systemui.statusbar.notification.row.dagger.NotificationKey;
+import com.android.systemui.statusbar.notification.row.dagger.NotificationRowScope;
+import com.android.systemui.statusbar.phone.KeyguardBypassController;
+import com.android.systemui.statusbar.phone.NotificationGroupManager;
+import com.android.systemui.statusbar.policy.HeadsUpManager;
+import com.android.systemui.util.time.SystemClock;
+
+import javax.inject.Inject;
+import javax.inject.Named;
+
+/**
+ * Controller for {@link ExpandableNotificationRow}.
+ */
+@NotificationRowScope
+public class ExpandableNotificationRowController {
+    private final ExpandableNotificationRow mView;
+    private final ActivatableNotificationViewController mActivatableNotificationViewController;
+    private final NotificationMediaManager mMediaManager;
+    private final PluginManager mPluginManager;
+    private final SystemClock mClock;
+    private final String mAppName;
+    private final String mNotificationKey;
+    private final KeyguardBypassController mKeyguardBypassController;
+    private final NotificationGroupManager mNotificationGroupManager;
+    private final RowContentBindStage mRowContentBindStage;
+    private final NotificationLogger mNotificationLogger;
+    private final HeadsUpManager mHeadsUpManager;
+    private final ExpandableNotificationRow.OnExpandClickListener mOnExpandClickListener;
+    private final StatusBarStateController mStatusBarStateController;
+    private final NotificationRowContentBinder.InflationCallback mInflationCallback;
+
+    private final ExpandableNotificationRow.ExpansionLogger mExpansionLogger =
+            this::logNotificationExpansion;
+    private final ExpandableNotificationRow.OnAppOpsClickListener mOnAppOpsClickListener;
+    private final NotificationGutsManager mNotificationGutsManager;
+    private Runnable mOnDismissRunnable;
+    private final FalsingManager mFalsingManager;
+    private final boolean mAllowLongPress;
+
+    @Inject
+    public ExpandableNotificationRowController(ExpandableNotificationRow view,
+            ActivatableNotificationViewController activatableNotificationViewController,
+            NotificationMediaManager mediaManager, PluginManager pluginManager,
+            SystemClock clock, @AppName String appName, @NotificationKey String notificationKey,
+            KeyguardBypassController keyguardBypassController,
+            NotificationGroupManager notificationGroupManager,
+            RowContentBindStage rowContentBindStage,
+            NotificationLogger notificationLogger, HeadsUpManager headsUpManager,
+            ExpandableNotificationRow.OnExpandClickListener onExpandClickListener,
+            StatusBarStateController statusBarStateController,
+            NotificationRowContentBinder.InflationCallback inflationCallback,
+            NotificationGutsManager notificationGutsManager,
+            @Named(ALLOW_NOTIFICATION_LONG_PRESS_NAME) boolean allowLongPress,
+            @DismissRunnable Runnable onDismissRunnable, FalsingManager falsingManager) {
+        mView = view;
+        mActivatableNotificationViewController = activatableNotificationViewController;
+        mMediaManager = mediaManager;
+        mPluginManager = pluginManager;
+        mClock = clock;
+        mAppName = appName;
+        mNotificationKey = notificationKey;
+        mKeyguardBypassController = keyguardBypassController;
+        mNotificationGroupManager = notificationGroupManager;
+        mRowContentBindStage = rowContentBindStage;
+        mNotificationLogger = notificationLogger;
+        mHeadsUpManager = headsUpManager;
+        mOnExpandClickListener = onExpandClickListener;
+        mStatusBarStateController = statusBarStateController;
+        mInflationCallback = inflationCallback;
+        mNotificationGutsManager = notificationGutsManager;
+        mOnDismissRunnable = onDismissRunnable;
+        mOnAppOpsClickListener = mNotificationGutsManager::openGuts;
+        mAllowLongPress = allowLongPress;
+        mFalsingManager = falsingManager;
+    }
+
+    /**
+     * Initialize the controller.
+     */
+    public void init() {
+        mActivatableNotificationViewController.init();
+        mView.initialize(
+                mAppName,
+                mNotificationKey,
+                mExpansionLogger,
+                mKeyguardBypassController,
+                mNotificationGroupManager,
+                mHeadsUpManager,
+                mRowContentBindStage,
+                mOnExpandClickListener,
+                mMediaManager,
+                mOnAppOpsClickListener,
+                mFalsingManager,
+                mStatusBarStateController
+        );
+        mView.setOnDismissRunnable(mOnDismissRunnable);
+        mView.setDescendantFocusability(ViewGroup.FOCUS_BLOCK_DESCENDANTS);
+        if (mAllowLongPress) {
+            mView.setLongPressListener(mNotificationGutsManager::openGuts);
+        }
+        if (ENABLE_REMOTE_INPUT) {
+            mView.setDescendantFocusability(ViewGroup.FOCUS_BEFORE_DESCENDANTS);
+        }
+
+        mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
+            @Override
+            public void onViewAttachedToWindow(View v) {
+                mView.getEntry().setInitializationTime(mClock.elapsedRealtime());
+                mPluginManager.addPluginListener(mView,
+                        NotificationMenuRowPlugin.class, false /* Allow multiple */);
+            }
+
+            @Override
+            public void onViewDetachedFromWindow(View v) {
+                mPluginManager.removePluginListener(mView);
+            }
+        });
+    }
+
+    private void logNotificationExpansion(String key, boolean userAction, boolean expanded) {
+        mNotificationLogger.onExpansionChanged(key, userAction, expanded);
+    }
+
+    /** */
+    public void setOnDismissRunnable(Runnable onDismissRunnable) {
+        mOnDismissRunnable = onDismissRunnable;
+        mView.setOnDismissRunnable(onDismissRunnable);
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java
index 28f4136..049cafa 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineView.java
@@ -93,7 +93,7 @@
             } else {
                 Path clipPath = getClipPath(false /* ignoreTranslation */);
                 if (clipPath != null) {
-                    outline.setConvexPath(clipPath);
+                    outline.setPath(clipPath);
                 }
             }
             outline.setAlpha(mOutlineAlpha);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineViewController.java
new file mode 100644
index 0000000..75c9d1e
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableOutlineViewController.java
@@ -0,0 +1,41 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import javax.inject.Inject;
+
+/**
+ * Controller for {@link ExpandableOutlineView}.
+ */
+public class ExpandableOutlineViewController {
+    private final ExpandableOutlineView mView;
+    private final ExpandableViewController mExpandableViewController;
+
+    @Inject
+    public ExpandableOutlineViewController(ExpandableOutlineView view,
+            ExpandableViewController expandableViewController) {
+        mView = view;
+        mExpandableViewController = expandableViewController;
+    }
+
+    /**
+     * Initialize the controller.
+     */
+    public void init() {
+        mExpandableViewController.init();
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableViewController.java
new file mode 100644
index 0000000..e14ca8c4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ExpandableViewController.java
@@ -0,0 +1,37 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import javax.inject.Inject;
+
+/**
+ * Controller for {@link ExpandableView}.
+ */
+public class ExpandableViewController {
+    private final ExpandableView mView;
+
+    @Inject
+    public ExpandableViewController(ExpandableView view) {
+        mView = view;
+    }
+
+    /**
+     * Initialize the controller.
+     */
+    public void init() {
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
index c2da517..41b248f 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/FooterView.java
@@ -78,9 +78,9 @@
         mDismissButton.setText(R.string.clear_all_notifications_text);
         mDismissButton.setContentDescription(
                 mContext.getString(R.string.accessibility_clear_all));
-        mManageButton.setText(R.string.manage_notifications_text);
+        mManageButton.setText(R.string.manage_notifications_history_text);
         mManageButton.setContentDescription(
-                mContext.getString(R.string.accessibility_manage_notification));
+                mContext.getString(R.string.manage_notifications_history_text));
     }
 
     public boolean isButtonVisible() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ForegroundServiceDungeonView.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ForegroundServiceDungeonView.kt
new file mode 100644
index 0000000..17396ad
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/ForegroundServiceDungeonView.kt
@@ -0,0 +1,38 @@
+/*
+ * 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.systemui.statusbar.notification.row
+
+import android.content.Context
+import android.util.AttributeSet
+import android.view.View
+
+import com.android.systemui.R
+
+class ForegroundServiceDungeonView(context: Context, attrs: AttributeSet)
+    : StackScrollerDecorView(context, attrs) {
+    override fun findContentView(): View? {
+        return findViewById(R.id.foreground_service_dungeon)
+    }
+
+    override fun findSecondaryView(): View? {
+        return null
+    }
+
+    override fun setVisible(visible: Boolean, animate: Boolean) {
+        // Visibility is controlled by the ForegroundServiceSectionController
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
new file mode 100644
index 0000000..e2513da
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipeline.java
@@ -0,0 +1,203 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import android.util.ArrayMap;
+import android.util.ArraySet;
+import android.widget.FrameLayout;
+
+import androidx.annotation.MainThread;
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+import androidx.core.os.CancellationSignal;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+
+import java.util.Map;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * {@link NotifBindPipeline} is responsible for converting notifications from their data form to
+ * their actual inflated views. It is essentially a control class that composes notification view
+ * binding logic (i.e. {@link BindStage}) in response to explicit bind requests. At the end of the
+ * pipeline, the notification's bound views are guaranteed to be correct and up-to-date, and any
+ * registered callbacks will be called.
+ *
+ * The pipeline ensures that a notification's top-level view and its content views are bound.
+ * Currently, a notification's top-level view, the {@link ExpandableNotificationRow} is essentially
+ * just a {@link FrameLayout} for various different content views that are switched in and out as
+ * appropriate. These include a contracted view, expanded view, heads up view, and sensitive view on
+ * keyguard. See {@link InflationFlag}. These content views themselves can have child views added
+ * on depending on different factors. For example, notification actions and smart replies are views
+ * that are dynamically added to these content views after they're inflated. Finally, aside from
+ * the app provided content views, System UI itself also provides some content views that are shown
+ * occasionally (e.g. {@link NotificationGuts}). Many of these are business logic specific views
+ * and the requirements surrounding them may change over time, so the pipeline must handle
+ * composing the logic as necessary.
+ *
+ * Note that bind requests do not only occur from add/updates from updates from the app. For
+ * example, the user may make changes to device settings (e.g. sensitive notifications on lock
+ * screen) or we may want to make certain optimizations for the sake of memory or performance (e.g
+ * freeing views when not visible). Oftentimes, we also need to wait for these changes to complete
+ * before doing something else (e.g. moving a notification to the top of the screen to heads up).
+ * The pipeline thus handles bind requests from across the system and provides a way for
+ * requesters to know when the change is propagated to the view.
+ *
+ * Right now, we only support one attached {@link BindStage} which just does all the binding but we
+ * should eventually support multiple stages once content inflation is made more modular.
+ * In particular, row inflation/binding, which is handled by {@link NotificationRowBinder} should
+ * probably be moved here in the future as a stage. Right now, the pipeline just manages content
+ * views and assumes that a row is given to it when it's inflated.
+ */
+@MainThread
+@Singleton
+public final class NotifBindPipeline {
+    private final Map<NotificationEntry, BindEntry> mBindEntries = new ArrayMap<>();
+    private BindStage mStage;
+
+    @Inject
+    NotifBindPipeline(CommonNotifCollection collection) {
+        collection.addCollectionListener(mCollectionListener);
+    }
+
+    /**
+     * Set the bind stage for binding notification row content.
+     */
+    public void setStage(
+            BindStage stage) {
+        mStage = stage;
+        mStage.setBindRequestListener(this::onBindRequested);
+    }
+
+    /**
+     * Start managing the row's content for a given notification.
+     */
+    public void manageRow(
+            @NonNull NotificationEntry entry,
+            @NonNull ExpandableNotificationRow row) {
+        final BindEntry bindEntry = getBindEntry(entry);
+        bindEntry.row = row;
+        if (bindEntry.invalidated) {
+            startPipeline(entry);
+        }
+    }
+
+    private void onBindRequested(
+            @NonNull NotificationEntry entry,
+            @NonNull CancellationSignal signal,
+            @Nullable BindCallback callback) {
+        final BindEntry bindEntry = getBindEntry(entry);
+        if (bindEntry == null) {
+            // Invalidating views for a notification that is not active.
+            return;
+        }
+
+        bindEntry.invalidated = true;
+
+        // Put in new callback.
+        if (callback != null) {
+            final Set<BindCallback> callbacks = bindEntry.callbacks;
+            callbacks.add(callback);
+            signal.setOnCancelListener(() -> callbacks.remove(callback));
+        }
+
+        startPipeline(entry);
+    }
+
+    /**
+     * Run the pipeline for the notification, ensuring all views are bound when finished. Call all
+     * callbacks when the run finishes. If a run is already in progress, it is restarted.
+     */
+    private void startPipeline(NotificationEntry entry) {
+        if (mStage == null) {
+            throw new IllegalStateException("No stage was ever set on the pipeline");
+        }
+
+        final BindEntry bindEntry = mBindEntries.get(entry);
+        final ExpandableNotificationRow row = bindEntry.row;
+        if (row == null) {
+            // Row is not managed yet but may be soon. Stop for now.
+            return;
+        }
+
+        mStage.abortStage(entry, row);
+        mStage.executeStage(entry, row, (en) -> onPipelineComplete(en));
+    }
+
+    private void onPipelineComplete(NotificationEntry entry) {
+        final BindEntry bindEntry = getBindEntry(entry);
+
+        bindEntry.invalidated = false;
+
+        final Set<BindCallback> callbacks = bindEntry.callbacks;
+        for (BindCallback cb : callbacks) {
+            cb.onBindFinished(entry);
+        }
+        callbacks.clear();
+    }
+
+    private final NotifCollectionListener mCollectionListener = new NotifCollectionListener() {
+        @Override
+        public void onEntryInit(NotificationEntry entry) {
+            mBindEntries.put(entry, new BindEntry());
+            mStage.createStageParams(entry);
+        }
+
+        @Override
+        public void onEntryCleanUp(NotificationEntry entry) {
+            BindEntry bindEntry = mBindEntries.remove(entry);
+            ExpandableNotificationRow row = bindEntry.row;
+            if (row != null) {
+                mStage.abortStage(entry, row);
+            }
+            mStage.deleteStageParams(entry);
+        }
+    };
+
+    private @NonNull BindEntry getBindEntry(NotificationEntry entry) {
+        final BindEntry bindEntry = mBindEntries.get(entry);
+        if (bindEntry == null) {
+            throw new IllegalStateException(
+                    String.format("Attempting bind on an inactive notification. key: %s",
+                            entry.getKey()));
+        }
+        return bindEntry;
+    }
+
+    /**
+     * Interface for bind callback.
+     */
+    public interface BindCallback {
+        /**
+         * Called when all views are fully bound on the notification.
+         */
+        void onBindFinished(NotificationEntry entry);
+    }
+
+    private class BindEntry {
+        public ExpandableNotificationRow row;
+        public final Set<BindCallback> callbacks = new ArraySet<>();
+        public boolean invalidated;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineInitializer.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineInitializer.java
new file mode 100644
index 0000000..7754991
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineInitializer.java
@@ -0,0 +1,47 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import javax.inject.Inject;
+
+/**
+ * Initialize {@link NotifBindPipeline} with all its mandatory stages and dynamically added stages.
+ *
+ * In the future, coordinators should be able to register their own {@link BindStage} to the
+ * {@link NotifBindPipeline}.
+ */
+public class NotifBindPipelineInitializer {
+    NotifBindPipeline mNotifBindPipeline;
+    RowContentBindStage mRowContentBindStage;
+
+    @Inject
+    NotifBindPipelineInitializer(
+            NotifBindPipeline pipeline,
+            RowContentBindStage stage) {
+        mNotifBindPipeline = pipeline;
+        mRowContentBindStage = stage;
+        // TODO: Inject coordinators and allow them to add BindStages in initialize
+    }
+
+    /**
+     * Hooks up stages to the pipeline.
+     */
+    public void initialize() {
+        // Mandatory bind stages
+        mNotifBindPipeline.setStage(mRowContentBindStage);
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java
new file mode 100644
index 0000000..a3ca084
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifInflationErrorManager.java
@@ -0,0 +1,100 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import androidx.annotation.NonNull;
+import androidx.collection.ArraySet;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * A manager handling the error state of a notification when it encounters an exception while
+ * inflating. We don't want to show these notifications to the user but may want to keep them
+ * around for logging purposes.
+ */
+@Singleton
+public class NotifInflationErrorManager {
+
+    Set<NotificationEntry> mErroredNotifs = new ArraySet<>();
+    List<NotifInflationErrorListener> mListeners = new ArrayList<>();
+
+    @Inject
+    public NotifInflationErrorManager() { }
+
+    /**
+     * Mark the notification as errored out due to encountering an exception while inflating.
+     *
+     * @param e the exception encountered while inflating
+     */
+    public void setInflationError(NotificationEntry entry, Exception e) {
+        mErroredNotifs.add(entry);
+        for (int i = 0; i < mListeners.size(); i++) {
+            mListeners.get(i).onNotifInflationError(entry, e);
+        }
+    }
+
+    /**
+     * Notification inflated successfully and is no longer errored out.
+     */
+    public void clearInflationError(NotificationEntry entry) {
+        if (mErroredNotifs.contains(entry)) {
+            mErroredNotifs.remove(entry);
+            for (int i = 0; i < mListeners.size(); i++) {
+                mListeners.get(i).onNotifInflationErrorCleared(entry);
+            }
+        }
+    }
+
+    /**
+     * Whether or not the notification encountered an exception while inflating.
+     */
+    public boolean hasInflationError(@NonNull NotificationEntry entry) {
+        return mErroredNotifs.contains(entry);
+    }
+
+    /**
+     * Add listener for changes in inflation error state.
+     */
+    public void addInflationErrorListener(NotifInflationErrorListener listener) {
+        mListeners.add(listener);
+    }
+
+    /**
+     * Listener for changes in notification inflation error state.
+     */
+    public interface NotifInflationErrorListener {
+
+        /**
+         * Called when notification encounters an inflation exception.
+         *
+         * @param e the exception encountered while inflating
+         */
+        void onNotifInflationError(NotificationEntry entry, Exception e);
+
+        /**
+         * Called when notification inflation error is cleared.
+         */
+        default void onNotifInflationErrorCleared(NotificationEntry entry) {}
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImpl.java
index a6e5c2b..b62dfa8 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImpl.java
@@ -22,10 +22,9 @@
 
 import androidx.annotation.Nullable;
 
-import com.android.internal.statusbar.NotificationVisibility;
-import com.android.systemui.statusbar.notification.NotificationEntryListener;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 
 import java.util.Map;
@@ -40,8 +39,8 @@
             new ArrayMap<>();
 
     @Inject
-    NotifRemoteViewCacheImpl(NotificationEntryManager entryManager) {
-        entryManager.addNotificationEntryListener(mEntryListener);
+    NotifRemoteViewCacheImpl(CommonNotifCollection collection) {
+        collection.addCollectionListener(mCollectionListener);
     }
 
     @Override
@@ -93,17 +92,14 @@
         contentViews.clear();
     }
 
-    private final NotificationEntryListener mEntryListener = new NotificationEntryListener() {
+    private final NotifCollectionListener mCollectionListener = new NotifCollectionListener() {
         @Override
-        public void onPendingEntryAdded(NotificationEntry entry) {
+        public void onEntryInit(NotificationEntry entry) {
             mNotifCachedContentViews.put(entry, new SparseArray<>());
         }
 
         @Override
-        public void onEntryRemoved(
-                NotificationEntry entry,
-                @Nullable NotificationVisibility visibility,
-                boolean removedByUser) {
+        public void onEntryCleanUp(NotificationEntry entry) {
             mNotifCachedContentViews.remove(entry);
         }
     };
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
index e1a6747..566da65 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationContentInflater.java
@@ -68,7 +68,7 @@
     private final NotifRemoteViewCache mRemoteViewCache;
 
     @Inject
-    public NotificationContentInflater(
+    NotificationContentInflater(
             NotifRemoteViewCache remoteViewCache,
             NotificationRemoteInputManager remoteInputManager) {
         mRemoteViewCache = remoteViewCache;
@@ -575,7 +575,7 @@
             entry.headsUpStatusBarText = result.headsUpStatusBarText;
             entry.headsUpStatusBarTextPublic = result.headsUpStatusBarTextPublic;
             if (endListener != null) {
-                endListener.onAsyncInflationFinished(entry, reInflateFlags);
+                endListener.onAsyncInflationFinished(entry);
             }
             return true;
         }
@@ -641,7 +641,7 @@
         private final boolean mUsesIncreasedHeight;
         private final InflationCallback mCallback;
         private final boolean mUsesIncreasedHeadsUpHeight;
-        private @InflationFlag int mReInflateFlags;
+        private final @InflationFlag int mReInflateFlags;
         private final NotifRemoteViewCache mRemoteViewCache;
         private ExpandableNotificationRow mRow;
         private Exception mError;
@@ -739,25 +739,16 @@
         }
 
         @Override
-        public void supersedeTask(InflationTask task) {
-            if (task instanceof AsyncInflationTask) {
-                // We want to inflate all flags of the previous task as well
-                mReInflateFlags |= ((AsyncInflationTask) task).mReInflateFlags;
-            }
-        }
-
-        @Override
         public void handleInflationException(NotificationEntry entry, Exception e) {
             handleError(e);
         }
 
         @Override
-        public void onAsyncInflationFinished(NotificationEntry entry,
-                @InflationFlag int inflatedFlags) {
+        public void onAsyncInflationFinished(NotificationEntry entry) {
             mEntry.onInflationTaskFinished();
             mRow.onNotificationUpdated();
             if (mCallback != null) {
-                mCallback.onAsyncInflationFinished(mEntry, inflatedFlags);
+                mCallback.onAsyncInflationFinished(mEntry);
             }
 
             // Notify the resolver that the inflation task has finished,
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
index 6045524..a0af4ac 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfo.java
@@ -23,14 +23,6 @@
 import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
 import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED;
 
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_BUBBLE;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_DEMOTE;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_FAVORITE;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_HOME;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_MUTE;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_SNOOZE;
-import static com.android.systemui.statusbar.notification.row.NotificationConversationInfo.UpdateChannelRunnable.ACTION_UNBUBBLE;
-
 import static java.lang.annotation.RetentionPolicy.SOURCE;
 
 import android.annotation.IntDef;
@@ -69,11 +61,13 @@
 import android.widget.TextView;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.settingslib.utils.ThreadUtils;
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.phone.ShadeController;
 
 import java.lang.annotation.Retention;
 import java.util.Arrays;
@@ -92,6 +86,7 @@
     ShortcutManager mShortcutManager;
     private PackageManager mPm;
     private VisualStabilityManager mVisualStabilityManager;
+    private ShadeController mShadeController;
 
     private String mPackageName;
     private String mAppName;
@@ -103,24 +98,30 @@
     private NotificationEntry mEntry;
     private StatusBarNotification mSbn;
     private boolean mIsDeviceProvisioned;
-    private int mStartingChannelImportance;
     private boolean mStartedAsBubble;
     private boolean mIsBubbleable;
-    // TODO: remove when launcher api works
-    @VisibleForTesting
-    boolean mShowHomeScreen = false;
 
-    private @UpdateChannelRunnable.Action int mSelectedAction = -1;
+    private @Action int mSelectedAction = -1;
 
     private OnSnoozeClickListener mOnSnoozeClickListener;
     private OnSettingsClickListener mOnSettingsClickListener;
-    private OnAppSettingsClickListener mAppSettingsClickListener;
     private NotificationGuts mGutsContainer;
     private BubbleController mBubbleController;
 
     @VisibleForTesting
     boolean mSkipPost = false;
 
+    @Retention(SOURCE)
+    @IntDef({ACTION_BUBBLE, ACTION_HOME, ACTION_FAVORITE, ACTION_SNOOZE, ACTION_MUTE})
+    private @interface Action {}
+    static final int ACTION_BUBBLE = 0;
+    static final int ACTION_HOME = 1;
+    static final int ACTION_FAVORITE = 2;
+    static final int ACTION_SNOOZE = 3;
+    static final int ACTION_MUTE = 4;
+    static final int ACTION_SETTINGS = 5;
+    static final int ACTION_UNBUBBLE = 6;
+
     private OnClickListener mOnBubbleClick = v -> {
         mSelectedAction = mStartedAsBubble ? ACTION_UNBUBBLE : ACTION_BUBBLE;
         if (mStartedAsBubble) {
@@ -136,12 +137,14 @@
     private OnClickListener mOnHomeClick = v -> {
         mSelectedAction = ACTION_HOME;
         mShortcutManager.requestPinShortcut(mShortcutInfo, null);
+        mShadeController.animateCollapsePanels();
         closeControls(v, true);
     };
 
     private OnClickListener mOnFavoriteClick = v -> {
         mSelectedAction = ACTION_FAVORITE;
-        closeControls(v, true);
+        updateChannel();
+
     };
 
     private OnClickListener mOnSnoozeClick = v -> {
@@ -151,13 +154,8 @@
     };
 
     private OnClickListener mOnMuteClick = v -> {
-      mSelectedAction = ACTION_MUTE;
-      closeControls(v, true);
-    };
-
-    private OnClickListener mOnDemoteClick = v -> {
-        mSelectedAction = ACTION_DEMOTE;
-        closeControls(v, true);
+        mSelectedAction = ACTION_MUTE;
+        updateChannel();
     };
 
     public NotificationConversationInfo(Context context, AttributeSet attrs) {
@@ -197,15 +195,14 @@
         mEntry = entry;
         mSbn = entry.getSbn();
         mPm = pm;
-        mAppSettingsClickListener = onAppSettingsClick;
         mAppName = mPackageName;
         mOnSettingsClickListener = onSettingsClick;
         mNotificationChannel = notificationChannel;
-        mStartingChannelImportance = mNotificationChannel.getImportance();
         mAppUid = mSbn.getUid();
         mDelegatePkg = mSbn.getOpPkg();
         mIsDeviceProvisioned = isDeviceProvisioned;
         mOnSnoozeClickListener = onSnoozeClickListener;
+        mShadeController = Dependency.get(ShadeController.class);
 
         mShortcutManager = shortcutManager;
         mLauncherApps = launcherApps;
@@ -251,9 +248,6 @@
                 mNotificationChannel = mINotificationManager.getConversationNotificationChannel(
                         mContext.getOpPackageName(), UserHandle.getUserId(mAppUid), mPackageName,
                         mNotificationChannel.getId(), false, mConversationId);
-
-                // TODO: ask LA to pin the shortcut once api exists for pinning one shortcut at a
-                // time
             } catch (RemoteException e) {
                 Slog.e(TAG, "Could not create conversation channel", e);
             }
@@ -274,40 +268,24 @@
 
         Button home = findViewById(R.id.home);
         home.setOnClickListener(mOnHomeClick);
-        home.setVisibility(mShowHomeScreen && mShortcutInfo != null
+        home.setVisibility(mShortcutInfo != null
                 && mShortcutManager.isRequestPinShortcutSupported()
                 ? VISIBLE : GONE);
 
-        Button favorite = findViewById(R.id.fave);
+        View favorite = findViewById(R.id.fave);
         favorite.setOnClickListener(mOnFavoriteClick);
-        if (mNotificationChannel.canBypassDnd()) {
-            favorite.setText(R.string.notification_conversation_unfavorite);
-            favorite.setCompoundDrawablesRelative(
-                    mContext.getDrawable(R.drawable.ic_star), null, null, null);
-        } else {
-            favorite.setText(R.string.notification_conversation_favorite);
-            favorite.setCompoundDrawablesRelative(
-                    mContext.getDrawable(R.drawable.ic_star_border), null, null, null);
-        }
 
         Button snooze = findViewById(R.id.snooze);
         snooze.setOnClickListener(mOnSnoozeClick);
 
-        Button mute = findViewById(R.id.mute);
+        View mute = findViewById(R.id.mute);
         mute.setOnClickListener(mOnMuteClick);
-        if (mStartingChannelImportance >= IMPORTANCE_DEFAULT
-                || mStartingChannelImportance == IMPORTANCE_UNSPECIFIED) {
-            mute.setText(R.string.notification_conversation_mute);
-            favorite.setCompoundDrawablesRelative(
-                    mContext.getDrawable(R.drawable.ic_notifications_silence), null, null, null);
-        } else {
-            mute.setText(R.string.notification_conversation_unmute);
-            favorite.setCompoundDrawablesRelative(
-                    mContext.getDrawable(R.drawable.ic_notifications_alert), null, null, null);
-        }
 
-        ImageButton demote = findViewById(R.id.demote);
-        demote.setOnClickListener(mOnDemoteClick);
+        final View settingsButton = findViewById(R.id.info);
+        settingsButton.setOnClickListener(getSettingsOnClickListener());
+        settingsButton.setVisibility(settingsButton.hasOnClickListeners() ? VISIBLE : GONE);
+
+        updateToggleActions();
     }
 
     private void bindHeader() {
@@ -315,26 +293,6 @@
 
         // Delegate
         bindDelegate();
-
-        // Set up app settings link (i.e. Customize)
-        View settingsLinkView = findViewById(R.id.app_settings);
-        Intent settingsIntent = getAppSettingsIntent(mPm, mPackageName,
-                mNotificationChannel,
-                mSbn.getId(), mSbn.getTag());
-        if (settingsIntent != null
-                && !TextUtils.isEmpty(mSbn.getNotification().getSettingsText())) {
-            settingsLinkView.setVisibility(VISIBLE);
-            settingsLinkView.setOnClickListener((View view) -> {
-                mAppSettingsClickListener.onClick(view, settingsIntent);
-            });
-        } else {
-            settingsLinkView.setVisibility(View.GONE);
-        }
-
-        // System Settings button.
-        final View settingsButton = findViewById(R.id.info);
-        settingsButton.setOnClickListener(getSettingsOnClickListener());
-        settingsButton.setVisibility(settingsButton.hasOnClickListeners() ? VISIBLE : GONE);
     }
 
     private OnClickListener getSettingsOnClickListener() {
@@ -424,15 +382,12 @@
 
     private void bindDelegate() {
         TextView delegateView = findViewById(R.id.delegate_name);
-        TextView dividerView = findViewById(R.id.pkg_divider);
 
         if (!TextUtils.equals(mPackageName, mDelegatePkg)) {
             // this notification was posted by a delegate!
             delegateView.setVisibility(View.VISIBLE);
-            dividerView.setVisibility(View.VISIBLE);
         } else {
             delegateView.setVisibility(View.GONE);
-            dividerView.setVisibility(View.GONE);
         }
     }
 
@@ -492,26 +447,37 @@
         }
     }
 
-    private Intent getAppSettingsIntent(PackageManager pm, String packageName,
-            NotificationChannel channel, int id, String tag) {
-        Intent intent = new Intent(Intent.ACTION_MAIN)
-                .addCategory(Notification.INTENT_CATEGORY_NOTIFICATION_PREFERENCES)
-                .setPackage(packageName);
-        final List<ResolveInfo> resolveInfos = pm.queryIntentActivities(
-                intent,
-                PackageManager.MATCH_DEFAULT_ONLY
-        );
-        if (resolveInfos == null || resolveInfos.size() == 0 || resolveInfos.get(0) == null) {
-            return null;
+    private void updateToggleActions() {
+        ImageButton favorite = findViewById(R.id.fave);
+        if (mNotificationChannel.isImportantConversation()) {
+            favorite.setContentDescription(
+                    mContext.getString(R.string.notification_conversation_favorite));
+            favorite.setImageResource(R.drawable.ic_important);
+        } else {
+            favorite.setContentDescription(
+                    mContext.getString(R.string.notification_conversation_unfavorite));
+            favorite.setImageResource(R.drawable.ic_important_outline);
         }
-        final ActivityInfo activityInfo = resolveInfos.get(0).activityInfo;
-        intent.setClassName(activityInfo.packageName, activityInfo.name);
-        if (channel != null) {
-            intent.putExtra(Notification.EXTRA_CHANNEL_ID, channel.getId());
+
+        ImageButton mute = findViewById(R.id.mute);
+        if (mNotificationChannel.getImportance() >= IMPORTANCE_DEFAULT
+                || mNotificationChannel.getImportance() == IMPORTANCE_UNSPECIFIED) {
+            mute.setContentDescription(
+                    mContext.getString(R.string.notification_conversation_unmute));
+            mute.setImageResource(R.drawable.ic_notifications_alert);
+        } else {
+            mute.setContentDescription(
+                    mContext.getString(R.string.notification_conversation_mute));
+            mute.setImageResource(R.drawable.ic_notifications_silence);
         }
-        intent.putExtra(Notification.EXTRA_NOTIFICATION_ID, id);
-        intent.putExtra(Notification.EXTRA_NOTIFICATION_TAG, tag);
-        return intent;
+    }
+
+    private void updateChannel() {
+        Handler bgHandler = new Handler(Dependency.get(Dependency.BG_LOOPER));
+        bgHandler.post(
+                new UpdateChannelRunnable(mINotificationManager, mPackageName,
+                        mAppUid, mSelectedAction, mNotificationChannel));
+        mVisualStabilityManager.temporarilyAllowReordering();
     }
 
     /**
@@ -556,11 +522,7 @@
     @Override
     public boolean handleCloseControls(boolean save, boolean force) {
         if (save && mSelectedAction > -1) {
-            Handler bgHandler = new Handler(Dependency.get(Dependency.BG_LOOPER));
-            bgHandler.post(
-                    new UpdateChannelRunnable(mINotificationManager, mPackageName,
-                            mAppUid, mSelectedAction, mNotificationChannel));
-            mVisualStabilityManager.temporarilyAllowReordering();
+            updateChannel();
         }
         return false;
     }
@@ -575,19 +537,7 @@
         return false;
     }
 
-    static class UpdateChannelRunnable implements Runnable {
-
-        @Retention(SOURCE)
-        @IntDef({ACTION_BUBBLE, ACTION_HOME, ACTION_FAVORITE, ACTION_SNOOZE, ACTION_MUTE,
-                ACTION_DEMOTE})
-        private @interface Action {}
-        static final int ACTION_BUBBLE = 0;
-        static final int ACTION_HOME = 1;
-        static final int ACTION_FAVORITE = 2;
-        static final int ACTION_SNOOZE = 3;
-        static final int ACTION_MUTE = 4;
-        static final int ACTION_DEMOTE = 5;
-        static final int ACTION_UNBUBBLE = 6;
+    class UpdateChannelRunnable implements Runnable {
 
         private final INotificationManager mINotificationManager;
         private final String mAppPkg;
@@ -621,8 +571,8 @@
                         }
                         break;
                     case ACTION_FAVORITE:
-                        // TODO: extend beyond DND
-                        mChannelToUpdate.setBypassDnd(!mChannelToUpdate.canBypassDnd());
+                        mChannelToUpdate.setImportantConversation(
+                                !mChannelToUpdate.isImportantConversation());
                         break;
                     case ACTION_MUTE:
                         if (mChannelToUpdate.getImportance() == IMPORTANCE_UNSPECIFIED
@@ -633,10 +583,6 @@
                                     mChannelToUpdate.getOriginalImportance(), IMPORTANCE_DEFAULT));
                         }
                         break;
-                    case ACTION_DEMOTE:
-                        mChannelToUpdate.setDemoted(!mChannelToUpdate.isDemoted());
-                        break;
-
                 }
 
                 if (channelSettingChanged) {
@@ -646,13 +592,7 @@
             } catch (RemoteException e) {
                 Log.e(TAG, "Unable to update notification channel", e);
             }
+            ThreadUtils.postOnMainThread(() -> updateToggleActions());
         }
     }
-
-    @Retention(SOURCE)
-    @IntDef({BEHAVIOR_ALERTING, BEHAVIOR_SILENT, BEHAVIOR_BUBBLE})
-    private @interface AlertingBehavior {}
-    private static final int BEHAVIOR_ALERTING = 0;
-    private static final int BEHAVIOR_SILENT = 1;
-    private static final int BEHAVIOR_BUBBLE = 2;
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
index 6789c81..352abcf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationGutsManager.java
@@ -58,6 +58,7 @@
 import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
 import com.android.systemui.statusbar.notification.row.NotificationInfo.CheckSaveListener;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
+import com.android.systemui.statusbar.phone.ShadeController;
 import com.android.systemui.statusbar.phone.StatusBar;
 import com.android.systemui.statusbar.policy.DeviceProvisionedController;
 
@@ -384,6 +385,7 @@
                 guts.resetFalsingCheck();
                 mOnSettingsClickListener.onSettingsClick(sbn.getKey());
                 startAppNotificationSettingsActivity(packageName, appUid, channel, row);
+                notificationInfoView.closeControls(v, false);
             };
         }
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
index 9b95bff..9bd8d47 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/NotificationRowContentBinder.java
@@ -101,7 +101,7 @@
      */
     int FLAG_CONTENT_VIEW_PUBLIC = 1 << 3;
 
-    int FLAG_CONTENT_VIEW_ALL = ~0;
+    int FLAG_CONTENT_VIEW_ALL = (1 << 4) - 1;
 
     /**
      * Parameters for content view binding
@@ -146,9 +146,7 @@
          * Callback for after the content views finish inflating.
          *
          * @param entry the entry with the content views set
-         * @param inflatedFlags the flags associated with the content views that were inflated
          */
-        void onAsyncInflationFinished(NotificationEntry entry,
-                @InflationFlag int inflatedFlags);
+        void onAsyncInflationFinished(NotificationEntry entry);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindParams.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindParams.java
new file mode 100644
index 0000000..5170d0b
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindParams.java
@@ -0,0 +1,165 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_EXPANDED;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
+
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+
+/**
+ * Parameters for {@link RowContentBindStage}.
+ */
+public final class RowContentBindParams {
+    private boolean mUseLowPriority;
+    private boolean mUseChildInGroup;
+    private boolean mUseIncreasedHeight;
+    private boolean mUseIncreasedHeadsUpHeight;
+    private boolean mViewsNeedReinflation;
+    private @InflationFlag int mContentViews = DEFAULT_INFLATION_FLAGS;
+
+    /**
+     * Content views that are out of date and need to be rebound.
+     *
+     * TODO: This should go away once {@link NotificationContentInflater} is broken down into
+     * smaller stages as then the stage itself would be invalidated.
+     */
+    private @InflationFlag int mDirtyContentViews = mContentViews;
+
+    /**
+     * Set whether content should use a low priority version of its content views.
+     */
+    public void setUseLowPriority(boolean useLowPriority) {
+        if (mUseLowPriority != useLowPriority) {
+            mDirtyContentViews |= (FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED);
+        }
+        mUseLowPriority = useLowPriority;
+    }
+
+    public boolean useLowPriority() {
+        return mUseLowPriority;
+    }
+
+    /**
+     * Set whether content should use group child version of its content views.
+     */
+    public void setUseChildInGroup(boolean useChildInGroup) {
+        if (mUseChildInGroup != useChildInGroup) {
+            mDirtyContentViews |= (FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED);
+        }
+        mUseChildInGroup = useChildInGroup;
+    }
+
+    public boolean useChildInGroup() {
+        return mUseChildInGroup;
+    }
+
+    /**
+     * Set whether content should use an increased height version of its contracted view.
+     */
+    public void setUseIncreasedCollapsedHeight(boolean useIncreasedHeight) {
+        if (mUseIncreasedHeight != useIncreasedHeight) {
+            mDirtyContentViews |= FLAG_CONTENT_VIEW_CONTRACTED;
+        }
+        mUseIncreasedHeight = useIncreasedHeight;
+    }
+
+    public boolean useIncreasedHeight() {
+        return mUseIncreasedHeight;
+    }
+
+    /**
+     * Set whether content should use an increased height version of its heads up view.
+     */
+    public void setUseIncreasedHeadsUpHeight(boolean useIncreasedHeadsUpHeight) {
+        if (mUseIncreasedHeadsUpHeight != useIncreasedHeadsUpHeight) {
+            mDirtyContentViews |= FLAG_CONTENT_VIEW_HEADS_UP;
+        }
+        mUseIncreasedHeadsUpHeight = useIncreasedHeadsUpHeight;
+    }
+
+    public boolean useIncreasedHeadsUpHeight() {
+        return mUseIncreasedHeadsUpHeight;
+    }
+
+    /**
+     * Require the specified content views to be bound after the rebind request.
+     *
+     * @see InflationFlag
+     */
+    public void requireContentViews(@InflationFlag int contentViews) {
+        @InflationFlag int newContentViews = contentViews &= ~mContentViews;
+        mContentViews |= contentViews;
+        mDirtyContentViews |= newContentViews;
+    }
+
+    /**
+     * Free the content view so that it will no longer be bound after the rebind request.
+     *
+     * @see InflationFlag
+     */
+    public void freeContentViews(@InflationFlag int contentViews) {
+        mContentViews &= ~contentViews;
+        mDirtyContentViews &= ~contentViews;
+    }
+
+    public @InflationFlag int getContentViews() {
+        return mContentViews;
+    }
+
+    /**
+     * Request that all content views be rebound. This may happen if, for example, the underlying
+     * layout has changed.
+     */
+    public void rebindAllContentViews() {
+        mDirtyContentViews = mContentViews;
+    }
+
+    /**
+     * Clears all dirty content views so that they no longer need to be rebound.
+     */
+    void clearDirtyContentViews() {
+        mDirtyContentViews = 0;
+    }
+
+    public @InflationFlag int getDirtyContentViews() {
+        return mDirtyContentViews;
+    }
+
+    /**
+     * Set whether all content views need to be reinflated even if cached.
+     *
+     * TODO: This should probably be a more global config on {@link NotifBindPipeline} since this
+     * generally corresponds to a Context/Configuration change that all stages should know about.
+     */
+    public void setNeedsReinflation(boolean needsReinflation) {
+        mViewsNeedReinflation = needsReinflation;
+        @InflationFlag int currentContentViews = mContentViews;
+        mDirtyContentViews |= currentContentViews;
+    }
+
+    public boolean needsReinflation() {
+        return mViewsNeedReinflation;
+    }
+
+    /**
+     * Content views that should be inflated by default for all notifications.
+     */
+    @InflationFlag private static final int DEFAULT_INFLATION_FLAGS =
+            FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java
new file mode 100644
index 0000000..f783245
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowContentBindStage.java
@@ -0,0 +1,102 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL;
+
+import androidx.annotation.NonNull;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+
+import javax.inject.Inject;
+import javax.inject.Singleton;
+
+/**
+ * A stage that binds all content views for an already inflated {@link ExpandableNotificationRow}.
+ *
+ * In the farther future, the binder logic and consequently this stage should be broken into
+ * smaller stages.
+ */
+@Singleton
+public class RowContentBindStage extends BindStage<RowContentBindParams> {
+    private final NotificationRowContentBinder mBinder;
+    private final NotifInflationErrorManager mNotifInflationErrorManager;
+
+    @Inject
+    RowContentBindStage(
+            NotificationRowContentBinder binder,
+            NotifInflationErrorManager errorManager) {
+        mBinder = binder;
+        mNotifInflationErrorManager = errorManager;
+    }
+
+    @Override
+    protected void executeStage(
+            @NonNull NotificationEntry entry,
+            @NonNull ExpandableNotificationRow row,
+            @NonNull StageCallback callback) {
+        RowContentBindParams params = getStageParams(entry);
+
+        // Resolve content to bind/unbind.
+        @InflationFlag int inflationFlags = params.getContentViews();
+        @InflationFlag int invalidatedFlags = params.getDirtyContentViews();
+
+        @InflationFlag int contentToBind = invalidatedFlags & inflationFlags;
+        @InflationFlag int contentToUnbind = inflationFlags ^ FLAG_CONTENT_VIEW_ALL;
+
+        // Bind/unbind with parameters
+        mBinder.unbindContent(entry, row, contentToUnbind);
+
+        BindParams bindParams = new BindParams();
+        bindParams.isLowPriority = params.useLowPriority();
+        bindParams.isChildInGroup = params.useChildInGroup();
+        bindParams.usesIncreasedHeight = params.useIncreasedHeight();
+        bindParams.usesIncreasedHeadsUpHeight = params.useIncreasedHeadsUpHeight();
+        boolean forceInflate = params.needsReinflation();
+
+        InflationCallback inflationCallback = new InflationCallback() {
+            @Override
+            public void handleInflationException(NotificationEntry entry, Exception e) {
+                mNotifInflationErrorManager.setInflationError(entry, e);
+            }
+
+            @Override
+            public void onAsyncInflationFinished(NotificationEntry entry) {
+                mNotifInflationErrorManager.clearInflationError(entry);
+                getStageParams(entry).clearDirtyContentViews();
+                callback.onStageFinished(entry);
+            }
+        };
+        mBinder.cancelBind(entry, row);
+        mBinder.bindContent(entry, row, contentToBind, bindParams, forceInflate, inflationCallback);
+    }
+
+    @Override
+    protected void abortStage(
+            @NonNull NotificationEntry entry,
+            @NonNull ExpandableNotificationRow row) {
+        mBinder.cancelBind(entry, row);
+    }
+
+    @Override
+    protected RowContentBindParams newStageParams() {
+        return new RowContentBindParams();
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowInflaterTask.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowInflaterTask.java
index c173b4d..6feffe6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowInflaterTask.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/RowInflaterTask.java
@@ -26,7 +26,6 @@
 import com.android.systemui.R;
 import com.android.systemui.statusbar.InflationTask;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent;
 
 import javax.inject.Inject;
 
@@ -37,7 +36,6 @@
 
     private static final String TAG = "RowInflaterTask";
     private static final boolean TRACE_ORIGIN = true;
-    private final NotificationRowComponent.Builder mNotificationRowComponentBuilder;
 
     private RowInflationFinishedListener mListener;
     private NotificationEntry mEntry;
@@ -45,10 +43,7 @@
     private Throwable mInflateOrigin;
 
     @Inject
-    public RowInflaterTask(
-            NotificationRowComponent.Builder notificationRowComponentBuilder) {
-        super();
-        mNotificationRowComponentBuilder = notificationRowComponentBuilder;
+    public RowInflaterTask() {
     }
 
     /**
@@ -75,12 +70,6 @@
     public void onInflateFinished(View view, int resid, ViewGroup parent) {
         if (!mCancelled) {
             try {
-                // Setup the controller for the view.
-                NotificationRowComponent component = mNotificationRowComponentBuilder
-                        .activatableNotificationView((ActivatableNotificationView) view)
-                        .build();
-                component.getActivatableNotificationViewController().init();
-
                 mEntry.onInflationTaskFinished();
                 mListener.onInflationFinished((ExpandableNotificationRow) view);
             } catch (Throwable t) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ActivatableNotificationViewModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ActivatableNotificationViewModule.java
new file mode 100644
index 0000000..a3dfa60
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ActivatableNotificationViewModule.java
@@ -0,0 +1,37 @@
+/*
+ * 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.systemui.statusbar.notification.row.dagger;
+
+import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
+import com.android.systemui.statusbar.notification.row.ExpandableOutlineView;
+import com.android.systemui.statusbar.notification.row.ExpandableView;
+
+import dagger.Binds;
+import dagger.Module;
+
+/**
+ * Module for NotificationRowComponent.
+ */
+@Module
+public interface ActivatableNotificationViewModule {
+    /** ExpandableView is provided as an instance of ActivatableNotificationView. */
+    @Binds
+    ExpandableView bindExpandableView(ActivatableNotificationView view);
+    /** ExpandableOutlineView is provided as an instance of ActivatableNotificationView. */
+    @Binds
+    ExpandableOutlineView bindExpandableOutlineView(ActivatableNotificationView view);
+}
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/AppName.java
similarity index 60%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/AppName.java
index f5e2405..1dbca0c 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/AppName.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,17 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
+package com.android.systemui.statusbar.notification.row.dagger;
 
-parcelable PhoneTimeSuggestion;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+public @interface AppName {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/DismissRunnable.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/DismissRunnable.java
new file mode 100644
index 0000000..4331142
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/DismissRunnable.java
@@ -0,0 +1,30 @@
+/*
+ * 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.systemui.statusbar.notification.row.dagger;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+public @interface DismissRunnable {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ExpandableNotificationRowComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ExpandableNotificationRowComponent.java
new file mode 100644
index 0000000..6d6d3e4
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/ExpandableNotificationRowComponent.java
@@ -0,0 +1,122 @@
+/*
+ * 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.systemui.statusbar.notification.row.dagger;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageManager;
+import android.service.notification.StatusBarNotification;
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder;
+import com.android.systemui.statusbar.notification.row.RowContentBindStage;
+import com.android.systemui.statusbar.phone.StatusBar;
+
+import dagger.Binds;
+import dagger.BindsInstance;
+import dagger.Module;
+import dagger.Provides;
+import dagger.Subcomponent;
+
+/**
+ * Dagger Component for a {@link ExpandableNotificationRow}.
+ */
+@Subcomponent(modules = {ExpandableNotificationRowComponent.ExpandableNotificationRowModule.class,
+        ActivatableNotificationViewModule.class})
+@NotificationRowScope
+public interface ExpandableNotificationRowComponent {
+
+    /**
+     * Builder for {@link NotificationRowComponent}.
+     */
+    @Subcomponent.Builder
+    interface Builder {
+        // TODO: NotificationEntry contains a reference to ExpandableNotificationRow, so it
+        // should be possible to pull one from the other, but they aren't connected at the time
+        // this component is constructed.
+        @BindsInstance
+        Builder expandableNotificationRow(ExpandableNotificationRow view);
+        @BindsInstance
+        Builder notificationEntry(NotificationEntry entry);
+        @BindsInstance
+        Builder onDismissRunnable(@DismissRunnable Runnable runnable);
+        @BindsInstance
+        Builder rowContentBindStage(RowContentBindStage rowContentBindStage);
+        @BindsInstance
+        Builder inflationCallback(NotificationRowContentBinder.InflationCallback inflationCallback);
+        @BindsInstance
+        Builder onExpandClickListener(ExpandableNotificationRow.OnExpandClickListener presenter);
+        ExpandableNotificationRowComponent build();
+    }
+
+    /**
+     * Creates a ExpandableNotificationRowController.
+     */
+    @NotificationRowScope
+    ExpandableNotificationRowController getExpandableNotificationRowController();
+
+    /**
+     * Dagger Module that extracts interesting properties from an ExpandableNotificationRow.
+     */
+    @Module
+    abstract class ExpandableNotificationRowModule {
+
+        /** ExpandableNotificationRow is provided as an instance of ActivatableNotificationView. */
+        @Binds
+        abstract ActivatableNotificationView bindExpandableView(ExpandableNotificationRow view);
+
+        @Provides
+        static StatusBarNotification provideStatusBarNotification(
+                NotificationEntry notificationEntry) {
+            return notificationEntry.getSbn();
+        }
+
+        @Provides
+        @NotificationKey
+        static String provideNotificationKey(StatusBarNotification statusBarNotification) {
+            return statusBarNotification.getKey();
+        }
+
+        @Provides
+        @AppName
+        static String provideAppName(Context context, StatusBarNotification statusBarNotification) {
+            // Get the app name.
+            // Note that Notification.Builder#bindHeaderAppName has similar logic
+            // but since this field is used in the guts, it must be accurate.
+            // Therefore we will only show the application label, or, failing that, the
+            // package name. No substitutions.
+            PackageManager pmUser = StatusBar.getPackageManagerForUser(
+                    context, statusBarNotification.getUser().getIdentifier());
+            final String pkg = statusBarNotification.getPackageName();
+            try {
+                final ApplicationInfo info = pmUser.getApplicationInfo(pkg,
+                        PackageManager.MATCH_UNINSTALLED_PACKAGES
+                                | PackageManager.MATCH_DISABLED_COMPONENTS);
+                if (info != null) {
+                    return String.valueOf(pmUser.getApplicationLabel(info));
+                }
+            } catch (PackageManager.NameNotFoundException e) {
+                // Do nothing
+            }
+
+            return pkg;
+        }
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationKey.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationKey.java
new file mode 100644
index 0000000..b1fff38
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationKey.java
@@ -0,0 +1,30 @@
+/*
+ * 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.systemui.statusbar.notification.row.dagger;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Qualifier;
+
+@Qualifier
+@Documented
+@Retention(RUNTIME)
+public @interface NotificationKey {
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowComponent.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowComponent.java
index f16ea7a..1f535c5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowComponent.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowComponent.java
@@ -16,24 +16,17 @@
 
 package com.android.systemui.statusbar.notification.row.dagger;
 
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationViewController;
 
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-
-import javax.inject.Scope;
-
 import dagger.BindsInstance;
 import dagger.Subcomponent;
 
 /**
  * Dagger subcomponent for Notification related views.
  */
-@Subcomponent(modules = {})
-@NotificationRowComponent.NotificationRowScope
+@Subcomponent(modules = {ActivatableNotificationViewModule.class})
+@NotificationRowScope
 public interface NotificationRowComponent {
     /**
      * Builder for {@link NotificationRowComponent}.
@@ -46,14 +39,6 @@
     }
 
     /**
-     * Scope annotation for singleton items within the StatusBarComponent.
-     */
-    @Documented
-    @Retention(RUNTIME)
-    @Scope
-    @interface NotificationRowScope {}
-
-    /**
      * Creates a ActivatableNotificationViewController.
      */
     @NotificationRowScope
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowScope.java b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowScope.java
new file mode 100644
index 0000000..4555b83
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/row/dagger/NotificationRowScope.java
@@ -0,0 +1,32 @@
+/*
+ * 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.systemui.statusbar.notification.row.dagger;
+
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+
+import javax.inject.Scope;
+
+/**
+ * Scope annotation for singleton items within the StatusBarComponent.
+ */
+@Documented
+@Retention(RUNTIME)
+@Scope
+public @interface NotificationRowScope {}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt
new file mode 100644
index 0000000..5757fe8
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/notification/stack/ForegroundServiceSectionController.kt
@@ -0,0 +1,171 @@
+/*
+ * 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.systemui.statusbar.notification.stack
+
+import android.content.Context
+import android.service.notification.NotificationListenerService.REASON_APP_CANCEL
+import android.service.notification.NotificationListenerService.REASON_APP_CANCEL_ALL
+import android.service.notification.NotificationListenerService.REASON_CANCEL
+import android.service.notification.NotificationListenerService.REASON_CANCEL_ALL
+import android.service.notification.NotificationListenerService.REASON_CLICK
+import android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED
+import android.view.LayoutInflater
+import android.view.View
+import android.widget.LinearLayout
+
+import com.android.systemui.statusbar.notification.collection.NotificationEntry
+import com.android.systemui.R
+import com.android.systemui.statusbar.notification.ForegroundServiceDismissalFeatureController
+import com.android.systemui.statusbar.notification.NotificationEntryListener
+import com.android.systemui.statusbar.notification.NotificationEntryManager
+import com.android.systemui.statusbar.notification.row.DungeonRow
+import com.android.systemui.util.Assert
+
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/**
+ * Controller for the bottom area of NotificationStackScrollLayout. It owns swiped-away foreground
+ * service notifications and can reinstantiate them when requested.
+ */
+@Singleton
+class ForegroundServiceSectionController @Inject constructor(
+    val entryManager: NotificationEntryManager,
+    val featureController: ForegroundServiceDismissalFeatureController
+) {
+    private val TAG = "FgsSectionController"
+    private var context: Context? = null
+
+    private val entries = mutableSetOf<NotificationEntry>()
+
+    private var entriesView: View? = null
+
+    init {
+        if (featureController.isForegroundServiceDismissalEnabled()) {
+            entryManager.addNotificationRemoveInterceptor(this::shouldInterceptRemoval)
+
+            entryManager.addNotificationEntryListener(object : NotificationEntryListener {
+                override fun onPostEntryUpdated(entry: NotificationEntry) {
+                    if (entries.contains(entry)) {
+                        removeEntry(entry)
+                        addEntry(entry)
+                        update()
+                    }
+                }
+            })
+        }
+    }
+
+    private fun shouldInterceptRemoval(
+        key: String,
+        entry: NotificationEntry?,
+        reason: Int
+    ): Boolean {
+        Assert.isMainThread()
+        val isClearAll = reason == REASON_CANCEL_ALL
+        val isUserDismiss = reason == REASON_CANCEL || reason == REASON_CLICK
+        val isAppCancel = reason == REASON_APP_CANCEL || reason == REASON_APP_CANCEL_ALL
+        val isSummaryCancel = reason == REASON_GROUP_SUMMARY_CANCELED
+
+        if (entry == null) return false
+
+        // We only want to retain notifications that the user dismissed
+        // TODO: centralize the entry.isClearable logic and this so that it's clear when a notif is
+        // clearable
+        if (isUserDismiss && !entry.sbn.isClearable) {
+            if (!hasEntry(entry)) {
+                addEntry(entry)
+                update()
+            }
+            // TODO: This isn't ideal. Slightly better would at least be to have NEM update the
+            // notif list when an entry gets intercepted
+            entryManager.updateNotifications(
+                    "FgsSectionController.onNotificationRemoveRequested")
+            return true
+        } else if ((isClearAll || isSummaryCancel) && !entry.sbn.isClearable) {
+            // In the case where a FGS notification is part of a group that is cleared or a clear
+            // all, we actually want to stop its removal but also not put it into the dungeon
+            return true
+        } else if (hasEntry(entry)) {
+            removeEntry(entry)
+            update()
+            return false
+        }
+
+        return false
+    }
+
+    private fun removeEntry(entry: NotificationEntry) {
+        Assert.isMainThread()
+        entries.remove(entry)
+    }
+
+    private fun addEntry(entry: NotificationEntry) {
+        Assert.isMainThread()
+        entries.add(entry)
+    }
+
+    fun hasEntry(entry: NotificationEntry): Boolean {
+        Assert.isMainThread()
+        return entries.contains(entry)
+    }
+
+    fun initialize(context: Context) {
+        this.context = context
+    }
+
+    fun createView(li: LayoutInflater): View {
+        entriesView = li.inflate(R.layout.foreground_service_dungeon, null)
+        // Start out gone
+        entriesView!!.visibility = View.GONE
+        return entriesView!!
+    }
+
+    private fun update() {
+        Assert.isMainThread()
+        if (entriesView == null) {
+            throw IllegalStateException("ForegroundServiceSectionController is trying to show " +
+                    "dismissed fgs notifications without having been initialized!")
+        }
+
+        // TODO: these views should be recycled and not inflating on the main thread
+        (entriesView!!.findViewById(R.id.entry_list) as LinearLayout).apply {
+            removeAllViews()
+            entries.sortedBy { it.ranking.rank }.forEach { entry ->
+                val child = LayoutInflater.from(context)
+                        .inflate(R.layout.foreground_service_dungeon_row, null) as DungeonRow
+
+                child.entry = entry
+                child.setOnClickListener {
+                    removeEntry(child.entry!!)
+                    update()
+                    entry.row.unDismiss()
+                    entry.row.resetTranslation()
+                    entryManager.updateNotifications("ForegroundServiceSectionController.onClick")
+                }
+
+                addView(child)
+            }
+        }
+
+        if (entries.isEmpty()) {
+            entriesView?.visibility = View.GONE
+        } else {
+            entriesView?.visibility = View.VISIBLE
+        }
+    }
+}
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 11ead8b..b2b46d5 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
@@ -16,6 +16,9 @@
 
 package com.android.systemui.statusbar.notification.stack;
 
+import static android.service.notification.NotificationStats.DISMISSAL_SHADE;
+import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
+
 import static com.android.systemui.Dependency.ALLOW_NOTIFICATION_LONG_PRESS_NAME;
 import static com.android.systemui.statusbar.notification.ActivityLaunchAnimator.ExpandAnimationParameters;
 import static com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_SILENT;
@@ -79,6 +82,7 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.statusbar.IStatusBarService;
+import com.android.internal.statusbar.NotificationVisibility;
 import com.android.keyguard.KeyguardSliceView;
 import com.android.settingslib.Utils;
 import com.android.systemui.Dependency;
@@ -98,7 +102,9 @@
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.DragDownHelper.DragDownCallback;
 import com.android.systemui.statusbar.EmptyShadeView;
+import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
 import com.android.systemui.statusbar.NotificationShelf;
 import com.android.systemui.statusbar.RemoteInputController;
@@ -106,18 +112,24 @@
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.FakeShadowView;
+import com.android.systemui.statusbar.notification.ForegroundServiceDismissalFeatureController;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationUtils;
 import com.android.systemui.statusbar.notification.ShadeViewRefactor;
 import com.android.systemui.statusbar.notification.ShadeViewRefactor.RefactorComponent;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
 import com.android.systemui.statusbar.notification.row.FooterView;
+import com.android.systemui.statusbar.notification.row.ForegroundServiceDungeonView;
 import com.android.systemui.statusbar.notification.row.NotificationBlockingHelperManager;
 import com.android.systemui.statusbar.notification.row.NotificationGuts;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
@@ -328,6 +340,12 @@
             return true;
         }
     };
+    private final UserChangedListener mLockscreenUserChangeListener = new UserChangedListener() {
+        @Override
+        public void onUserChanged(int userId) {
+            updateSensitiveness(false /* animated */);
+        }
+    };
     private StatusBar mStatusBar;
     private int[] mTempInt2 = new int[2];
     private boolean mGenerateChildOrderChangedEvent;
@@ -475,8 +493,10 @@
     private NotificationIconAreaController mIconAreaController;
     private final NotificationLockscreenUserManager mLockscreenUserManager;
     private final Rect mTmpRect = new Rect();
-    private final NotificationEntryManager mEntryManager =
-            Dependency.get(NotificationEntryManager.class);
+    private final FeatureFlags mFeatureFlags;
+    private final NotifPipeline mNotifPipeline;
+    private final NotifCollection mNotifCollection;
+    private final NotificationEntryManager mEntryManager;
     private final IStatusBarService mBarService = IStatusBarService.Stub.asInterface(
             ServiceManager.getService(Context.STATUS_BAR_SERVICE));
     @VisibleForTesting
@@ -497,6 +517,8 @@
 
     private final NotificationGutsManager mNotificationGutsManager;
     private final NotificationSectionsManager mSectionsManager;
+    private final ForegroundServiceSectionController mFgsSectionController;
+    private ForegroundServiceDungeonView mFgsSectionView;
     private boolean mAnimateBottomOnLayout;
     private float mLastSentAppear;
     private float mLastSentExpandedHeight;
@@ -516,7 +538,14 @@
             NotificationLockscreenUserManager notificationLockscreenUserManager,
             NotificationGutsManager notificationGutsManager,
             ZenModeController zenController,
-            NotificationSectionsManager notificationSectionsManager) {
+            NotificationSectionsManager notificationSectionsManager,
+            ForegroundServiceSectionController fgsSectionController,
+            ForegroundServiceDismissalFeatureController fgsFeatureController,
+            FeatureFlags featureFlags,
+            NotifPipeline notifPipeline,
+            NotificationEntryManager entryManager,
+            NotifCollection notifCollection
+    ) {
         super(context, attrs, 0, 0);
         Resources res = getResources();
 
@@ -532,6 +561,7 @@
         mKeyguardBypassController = keyguardBypassController;
         mFalsingManager = falsingManager;
         mZenController = zenController;
+        mFgsSectionController = fgsSectionController;
 
         mSectionsManager = notificationSectionsManager;
         mSectionsManager.initialize(this, LayoutInflater.from(context));
@@ -561,6 +591,7 @@
         mRoundnessManager.setAnimatedChildren(mChildrenToAddAnimated);
         mRoundnessManager.setOnRoundingChangedCallback(this::invalidate);
         addOnExpandedHeightChangedListener(mRoundnessManager::setExpanded);
+        mLockscreenUserManager.addUserChangedListener(mLockscreenUserChangeListener);
         setOutlineProvider(mOutlineProvider);
 
         // Blocking helper manager wants to know the expanded state, update as well.
@@ -591,19 +622,40 @@
             }
         }, HIGH_PRIORITY, Settings.Secure.NOTIFICATION_DISMISS_RTL);
 
-        mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
-            @Override
-            public void onPreEntryUpdated(NotificationEntry entry) {
-                if (entry.rowExists() && !entry.getSbn().isClearable()) {
-                    // If the row already exists, the user may have performed a dismiss action on
-                    // the notification. Since it's not clearable we should snap it back.
-                    snapViewIfNeeded(entry);
+        mFeatureFlags = featureFlags;
+        mNotifPipeline = notifPipeline;
+        mEntryManager = entryManager;
+        mNotifCollection = notifCollection;
+        if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            mNotifPipeline.addCollectionListener(new NotifCollectionListener() {
+                @Override
+                public void onEntryUpdated(NotificationEntry entry) {
+                    NotificationStackScrollLayout.this.onEntryUpdated(entry);
                 }
-            }
-        });
+            });
+        } else {
+            mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
+                @Override
+                public void onPreEntryUpdated(NotificationEntry entry) {
+                    NotificationStackScrollLayout.this.onEntryUpdated(entry);
+                }
+            });
+        }
+
         dynamicPrivacyController.addListener(this);
         mDynamicPrivacyController = dynamicPrivacyController;
         mStatusbarStateController = statusBarStateController;
+        initializeForegroundServiceSection(fgsFeatureController);
+    }
+
+    private void initializeForegroundServiceSection(
+            ForegroundServiceDismissalFeatureController featureController) {
+        if (featureController.isForegroundServiceDismissalEnabled()) {
+            LayoutInflater li = LayoutInflater.from(mContext);
+            mFgsSectionView =
+                    (ForegroundServiceDungeonView) mFgsSectionController.createView(li);
+            addView(mFgsSectionView, -1);
+        }
     }
 
     private void updateDismissRtlSetting(boolean dismissRtl) {
@@ -681,7 +733,7 @@
     @ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
     public void updateFooter() {
         boolean showDismissView = mClearAllEnabled && hasActiveClearableNotifications(ROWS_ALL);
-        boolean showFooterView = (showDismissView || mEntryManager.hasActiveNotifications())
+        boolean showFooterView = (showDismissView || hasActiveNotifications())
                 && mStatusBarState != StatusBarState.KEYGUARD
                 && !mRemoteInputManager.getController().isRemoteInputActive();
 
@@ -3364,7 +3416,7 @@
         if (currentIndex == -1) {
             boolean isTransient = false;
             if (child instanceof ExpandableNotificationRow
-                    && ((ExpandableNotificationRow) child).getTransientContainer() != null) {
+                    && child.getTransientContainer() != null) {
                 isTransient = true;
             }
             Log.e(TAG, "Attempting to re-position "
@@ -3377,10 +3429,10 @@
 
         if (child != null && child.getParent() == this && currentIndex != newIndex) {
             mChangePositionInProgress = true;
-            ((ExpandableView) child).setChangingPosition(true);
+            child.setChangingPosition(true);
             removeView(child);
             addView(child, newIndex);
-            ((ExpandableView) child).setChangingPosition(false);
+            child.setChangingPosition(false);
             mChangePositionInProgress = false;
             if (mIsExpanded && mAnimationsEnabled && child.getVisibility() != View.GONE) {
                 mChildrenChangingPositions.add(child);
@@ -4611,7 +4663,8 @@
     }
 
     @ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
-    private void setHideSensitive(boolean hideSensitive, boolean animate) {
+    private void updateSensitiveness(boolean animate) {
+        boolean hideSensitive = mLockscreenUserManager.isAnyProfilePublicMode();
         if (hideSensitive != mAmbientState.isHideSensitive()) {
             int childCount = getChildCount();
             for (int i = 0; i < childCount; i++) {
@@ -5306,7 +5359,6 @@
 
     private void onStatePostChange() {
         boolean onKeyguard = onKeyguard();
-        boolean publicMode = mLockscreenUserManager.isAnyProfilePublicMode();
 
         if (mHeadsUpAppearanceController != null) {
             mHeadsUpAppearanceController.onStateChanged();
@@ -5314,7 +5366,7 @@
 
         SysuiStatusBarStateController state = (SysuiStatusBarStateController)
                 Dependency.get(StatusBarStateController.class);
-        setHideSensitive(publicMode, state.goingToFullShade() /* animate */);
+        updateSensitiveness(state.goingToFullShade() /* animate */);
         setDimmed(onKeyguard, state.fromShadeLocked() /* animate */);
         setExpandingEnabled(!onKeyguard);
         ActivatableNotificationView activatedChild = getActivatedChild();
@@ -5454,7 +5506,7 @@
 
     @ShadeViewRefactor(RefactorComponent.SHADE_VIEW)
     public void manageNotifications(View v) {
-        Intent intent = new Intent(Settings.ACTION_ALL_APPS_NOTIFICATION_SETTINGS);
+        Intent intent = new Intent(Settings.ACTION_NOTIFICATION_HISTORY);
         mStatusBar.startActivity(intent, true, true, Intent.FLAG_ACTIVITY_SINGLE_TOP);
     }
 
@@ -5510,32 +5562,10 @@
             return;
         }
 
-        performDismissAllAnimations(viewsToHide, closeShade, () -> {
-            for (ExpandableNotificationRow rowToRemove : viewsToRemove) {
-                if (canChildBeDismissed(rowToRemove)) {
-                    if (selection == ROWS_ALL) {
-                        // TODO: This is a listener method; we shouldn't be calling it. Can we just
-                        // call performRemoveNotification as below?
-                        mEntryManager.removeNotification(
-                                rowToRemove.getEntry().getKey(),
-                                null /* ranking */,
-                                NotificationListenerService.REASON_CANCEL_ALL);
-                    } else {
-                        mEntryManager.performRemoveNotification(
-                                rowToRemove.getEntry().getSbn(),
-                                NotificationListenerService.REASON_CANCEL_ALL);
-                    }
-                } else {
-                    rowToRemove.resetTranslation();
-                }
-            }
-            if (selection == ROWS_ALL) {
-                try {
-                    mBarService.onClearAllNotifications(mLockscreenUserManager.getCurrentUserId());
-                } catch (Exception ex) {
-                }
-            }
-        });
+        performDismissAllAnimations(
+                viewsToHide,
+                closeShade,
+                () -> onDismissAllAnimationsEnd(viewsToRemove, selection));
     }
 
     private boolean includeChildInDismissAll(
@@ -5627,15 +5657,17 @@
      */
     @ShadeViewRefactor(RefactorComponent.STATE_RESOLVER)
     public void onUpdateRowStates() {
-        changeViewPosition(mFooterView, -1);
 
         // The following views will be moved to the end of mStackScroller. This counter represents
         // the offset from the last child. Initialized to 1 for the very last position. It is post-
         // incremented in the following "changeViewPosition" calls so that its value is correct for
         // subsequent calls.
         int offsetFromEnd = 1;
-        changeViewPosition(mEmptyShadeView,
-                getChildCount() - offsetFromEnd++);
+        if (mFgsSectionView != null) {
+            changeViewPosition(mFgsSectionView, getChildCount() - offsetFromEnd++);
+        }
+        changeViewPosition(mFooterView, getChildCount() - offsetFromEnd++);
+        changeViewPosition(mEmptyShadeView, getChildCount() - offsetFromEnd++);
 
         // No post-increment for this call because it is the last one. Make sure to add one if
         // another "changeViewPosition" call is ever added.
@@ -6378,6 +6410,83 @@
         return false;
     }
 
+    // --------------------- NotificationEntryManager/NotifPipeline methods ------------------------
+
+    private void onEntryUpdated(NotificationEntry entry) {
+        // If the row already exists, the user may have performed a dismiss action on the
+        // notification. Since it's not clearable we should snap it back.
+        if (entry.rowExists() && !entry.getSbn().isClearable()) {
+            snapViewIfNeeded(entry);
+        }
+    }
+
+    private boolean hasActiveNotifications() {
+        if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            return mNotifPipeline.getShadeList().isEmpty();
+        } else {
+            return mEntryManager.hasActiveNotifications();
+        }
+    }
+
+    /**
+     * Called after the animations for a "clear all notifications" action has ended.
+     */
+    private void onDismissAllAnimationsEnd(
+            List<ExpandableNotificationRow> viewsToRemove,
+            @SelectedRows int selectedRows) {
+        if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            if (selectedRows == ROWS_ALL) {
+                mNotifCollection.dismissAllNotifications(mLockscreenUserManager.getCurrentUserId());
+            } else {
+                final List<Pair<NotificationEntry, DismissedByUserStats>>
+                        entriesWithRowsDismissedFromShade = new ArrayList<>();
+                final List<DismissedByUserStats> dismissalUserStats = new ArrayList<>();
+                final int numVisibleEntries = mNotifPipeline.getShadeListCount();
+                for (int i = 0; i < viewsToRemove.size(); i++) {
+                    final NotificationEntry entry = viewsToRemove.get(i).getEntry();
+                    final DismissedByUserStats stats =
+                            new DismissedByUserStats(
+                                    DISMISSAL_SHADE,
+                                    DISMISS_SENTIMENT_NEUTRAL,
+                                    NotificationVisibility.obtain(
+                                            entry.getKey(),
+                                            entry.getRanking().getRank(),
+                                            numVisibleEntries,
+                                            true,
+                                            NotificationLogger.getNotificationLocation(entry)));
+                    entriesWithRowsDismissedFromShade.add(
+                            new Pair<NotificationEntry, DismissedByUserStats>(entry, stats));
+                }
+                mNotifCollection.dismissNotifications(entriesWithRowsDismissedFromShade);
+            }
+        } else {
+            for (ExpandableNotificationRow rowToRemove : viewsToRemove) {
+                if (canChildBeDismissed(rowToRemove)) {
+                    if (selectedRows == ROWS_ALL) {
+                        // TODO: This is a listener method; we shouldn't be calling it. Can we just
+                        // call performRemoveNotification as below?
+                        mEntryManager.removeNotification(
+                                rowToRemove.getEntry().getKey(),
+                                null /* ranking */,
+                                NotificationListenerService.REASON_CANCEL_ALL);
+                    } else {
+                        mEntryManager.performRemoveNotification(
+                                rowToRemove.getEntry().getSbn(),
+                                NotificationListenerService.REASON_CANCEL_ALL);
+                    }
+                } else {
+                    rowToRemove.resetTranslation();
+                }
+            }
+            if (selectedRows == ROWS_ALL) {
+                try {
+                    mBarService.onClearAllNotifications(mLockscreenUserManager.getCurrentUserId());
+                } catch (Exception ex) {
+                }
+            }
+        }
+    }
+
     // ---------------------- DragDownHelper.OnDragDownListener ------------------------------------
 
     @ShadeViewRefactor(RefactorComponent.INPUT)
@@ -6386,8 +6495,7 @@
         /* Only ever called as a consequence of a lockscreen expansion gesture. */
         @Override
         public boolean onDraggedDown(View startingChild, int dragLengthY) {
-            if (mStatusBarState == StatusBarState.KEYGUARD
-                    && mEntryManager.hasActiveNotifications()) {
+            if (mStatusBarState == StatusBarState.KEYGUARD && hasActiveNotifications()) {
                 mLockscreenGestureLogger.write(
                         MetricsEvent.ACTION_LS_SHADE,
                         (int) (dragLengthY / mDisplayMetrics.density),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
index afaa593..e7d6eba 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeScrimController.java
@@ -22,7 +22,6 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.systemui.Dependency;
-import com.android.systemui.doze.DozeEvent;
 import com.android.systemui.doze.DozeHost;
 import com.android.systemui.doze.DozeLog;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
@@ -53,7 +52,7 @@
         public void onDisplayBlanked() {
             if (DEBUG) {
                 Log.d(TAG, "Pulse in, mDozing=" + mDozing + " mPulseReason="
-                        + DozeEvent.reasonToString(mPulseReason));
+                        + DozeLog.reasonToString(mPulseReason));
             }
             if (!mDozing) {
                 return;
@@ -74,8 +73,8 @@
             // Notifications should time out on their own.  Pulses due to notifications should
             // instead be managed externally based off the notification's lifetime.
             // Dock also controls the time out by self.
-            if (mPulseReason != DozeEvent.PULSE_REASON_NOTIFICATION
-                    && mPulseReason != DozeEvent.PULSE_REASON_DOCKING) {
+            if (mPulseReason != DozeLog.PULSE_REASON_NOTIFICATION
+                    && mPulseReason != DozeLog.PULSE_REASON_DOCKING) {
                 mHandler.postDelayed(mPulseOut, mDozeParameters.getPulseVisibleDuration());
                 mHandler.postDelayed(mPulseOutExtended,
                         mDozeParameters.getPulseVisibleDurationExtended());
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
index 04efc2d..56e5cb0 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/DozeServiceHost.java
@@ -31,7 +31,6 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.assist.AssistManager;
-import com.android.systemui.doze.DozeEvent;
 import com.android.systemui.doze.DozeHost;
 import com.android.systemui.doze.DozeLog;
 import com.android.systemui.doze.DozeReceiver;
@@ -221,18 +220,18 @@
 
     @Override
     public void pulseWhileDozing(@NonNull PulseCallback callback, int reason) {
-        if (reason == DozeEvent.PULSE_REASON_SENSOR_LONG_PRESS) {
+        if (reason == DozeLog.PULSE_REASON_SENSOR_LONG_PRESS) {
             mPowerManager.wakeUp(SystemClock.uptimeMillis(), PowerManager.WAKE_REASON_GESTURE,
                                  "com.android.systemui:LONG_PRESS");
             mAssistManagerLazy.get().startAssist(new Bundle());
             return;
         }
 
-        if (reason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
+        if (reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
             mScrimController.setWakeLockScreenSensorActive(true);
         }
 
-        boolean passiveAuthInterrupt = reason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN
+        boolean passiveAuthInterrupt = reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN
                         && mWakeLockScreenPerformsAuth;
         // Set the state to pulsing, so ScrimController will know what to do once we ask it to
         // execute the transition. The pulse callback will then be invoked when the scrims
@@ -332,7 +331,7 @@
 
     @Override
     public void extendPulse(int reason) {
-        if (reason == DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
+        if (reason == DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN) {
             mScrimController.setWakeLockScreenSensorActive(true);
         }
         if (mDozeScrimController.isPulsing() && mHeadsUpManagerPhone.hasNotifications()) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
index db692c8..745843d 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/EdgeBackGestureHandler.java
@@ -375,6 +375,7 @@
                 mDownPoint.set(ev.getX(), ev.getY());
                 mThresholdCrossed = false;
             }
+
         } else if (mAllowGesture) {
             if (!mThresholdCrossed) {
                 if (action == MotionEvent.ACTION_POINTER_DOWN) {
@@ -422,9 +423,7 @@
     }
 
     private void updateDisplaySize() {
-        mContext.getSystemService(DisplayManager.class)
-                .getDisplay(mDisplayId)
-                .getRealSize(mDisplaySize);
+        mContext.getDisplay().getRealSize(mDisplaySize);
         if (mEdgeBackPlugin != null) {
             mEdgeBackPlugin.setDisplaySize(mDisplaySize);
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
index d3e44ea..ee31300 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBottomAreaView.java
@@ -492,7 +492,7 @@
                     try {
                         result = ActivityTaskManager.getService().startActivityAsUser(
                                 null, getContext().getBasePackageName(),
-                                intent,
+                                getContext().getFeatureId(), intent,
                                 intent.resolveTypeIfNeeded(getContext().getContentResolver()),
                                 null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null, o.toBundle(),
                                 UserHandle.CURRENT.getIdentifier());
@@ -643,9 +643,12 @@
         if (previewBefore != null) {
             mPreviewContainer.removeView(previewBefore);
         }
+
         if (mLeftIsVoiceAssist) {
-            mLeftPreview = mPreviewInflater.inflatePreviewFromService(
-                    Dependency.get(AssistManager.class).getVoiceInteractorComponentName());
+            if (Dependency.get(AssistManager.class).getVoiceInteractorComponentName() != null) {
+                mLeftPreview = mPreviewInflater.inflatePreviewFromService(
+                        Dependency.get(AssistManager.class).getVoiceInteractorComponentName());
+            }
         } else {
             mLeftPreview = mPreviewInflater.inflatePreview(mLeftButton.getIntent());
         }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
index ad1aa83..b4d0d47 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/KeyguardBypassController.kt
@@ -33,7 +33,7 @@
 import javax.inject.Singleton
 
 @Singleton
-class KeyguardBypassController : Dumpable {
+open class KeyguardBypassController : Dumpable {
 
     private val mKeyguardStateController: KeyguardStateController
     private val statusBarStateController: StatusBarStateController
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NPVPluginManager.kt b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NPVPluginManager.kt
deleted file mode 100644
index 53601ba..0000000
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NPVPluginManager.kt
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * Copyright (C) 2019 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.phone
-
-import android.content.Context
-import android.view.View
-import android.view.ViewGroup.MarginLayoutParams
-import android.widget.FrameLayout
-import com.android.systemui.plugins.NPVPlugin
-import com.android.systemui.plugins.PluginListener
-import com.android.systemui.qs.TouchAnimator
-import com.android.systemui.shared.plugins.PluginManager
-
-/**
- * Manages the NPVPlugin view and state
- *
- * Abstracts NPVPlugin from NPV and helps animate on expansion and respond to changes in Config.
- */
-class NPVPluginManager(
-    var parent: FrameLayout,
-    val pluginManager: PluginManager
-) : PluginListener<NPVPlugin> {
-
-    private var plugin: NPVPlugin? = null
-    private var animator = createAnimator()
-    private var yOffset = 0f
-
-    private fun createAnimator() = TouchAnimator.Builder()
-            .addFloat(parent, "alpha", 1f, 0f)
-            .addFloat(parent, "scaleY", 1f, 0f)
-            .build()
-
-    init {
-        pluginManager.addPluginListener(NPVPlugin.ACTION, this, NPVPlugin::class.java, false)
-        parent.pivotY = 0f
-    }
-
-    override fun onPluginConnected(plugin: NPVPlugin, pluginContext: Context) {
-        parent.removeAllViews()
-        plugin.attachToRoot(parent)
-        this.plugin = plugin
-        parent.visibility = View.VISIBLE
-    }
-
-    fun changeVisibility(visibility: Int) {
-        parent.visibility = if (plugin != null) visibility else View.GONE
-    }
-
-    fun destroy() {
-        plugin?.onDestroy()
-        pluginManager.removePluginListener(this)
-    }
-
-    override fun onPluginDisconnected(plugin: NPVPlugin) {
-        if (this.plugin == plugin) {
-            this.plugin = null
-            parent.removeAllViews()
-            parent.visibility = View.GONE
-        }
-    }
-
-    fun setListening(listening: Boolean) {
-        plugin?.setListening(listening)
-    }
-
-    fun setExpansion(expansion: Float, headerTranslation: Float, heightDiff: Float) {
-        parent.setTranslationY(expansion * heightDiff + headerTranslation + yOffset)
-        if (!expansion.isNaN()) animator.setPosition(expansion)
-    }
-
-    fun replaceFrameLayout(newParent: FrameLayout) {
-        newParent.visibility = parent.visibility
-        parent.removeAllViews()
-        plugin?.attachToRoot(newParent)
-        parent = newParent
-        animator = createAnimator()
-    }
-
-    fun getHeight() =
-        if (plugin != null) {
-            parent.height + (parent.getLayoutParams() as MarginLayoutParams).topMargin
-        } else 0
-
-    fun setYOffset(y: Float) {
-        yOffset = y
-        parent.setTranslationY(yOffset)
-    }
-}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
index 9e64748..3f5215e 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarFragment.java
@@ -269,6 +269,17 @@
         }
     };
 
+    private final DeviceConfig.OnPropertiesChangedListener mOnPropertiesChangedListener =
+            new DeviceConfig.OnPropertiesChangedListener() {
+        @Override
+        public void onPropertiesChanged(DeviceConfig.Properties properties) {
+            if (properties.getKeyset().contains(NAV_BAR_HANDLE_FORCE_OPAQUE)) {
+                mForceNavBarHandleOpaque = properties.getBoolean(
+                        NAV_BAR_HANDLE_FORCE_OPAQUE, /* defaultValue = */ true);
+            }
+        }
+    };
+
     @Inject
     public NavigationBarFragment(AccessibilityManagerWrapper accessibilityManagerWrapper,
             DeviceProvisionedController deviceProvisionedController, MetricsLogger metricsLogger,
@@ -298,21 +309,6 @@
         mDivider = divider;
         mRecentsOptional = recentsOptional;
         mHandler = mainHandler;
-
-        mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
-                DeviceConfig.NAMESPACE_SYSTEMUI,
-                NAV_BAR_HANDLE_FORCE_OPAQUE,
-                /* defaultValue = */ true);
-        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post,
-                new DeviceConfig.OnPropertiesChangedListener() {
-                    @Override
-                    public void onPropertiesChanged(DeviceConfig.Properties properties) {
-                        if (properties.getKeyset().contains(NAV_BAR_HANDLE_FORCE_OPAQUE)) {
-                            mForceNavBarHandleOpaque = properties.getBoolean(
-                                    NAV_BAR_HANDLE_FORCE_OPAQUE, /* defaultValue = */ true);
-                        }
-                    }
-                });
     }
 
     // ----- Fragment Lifecycle Callbacks -----
@@ -338,6 +334,13 @@
 
         // Respect the latest disabled-flags.
         mCommandQueue.recomputeDisableFlags(mDisplayId, false);
+
+        mForceNavBarHandleOpaque = DeviceConfig.getBoolean(
+                DeviceConfig.NAMESPACE_SYSTEMUI,
+                NAV_BAR_HANDLE_FORCE_OPAQUE,
+                /* defaultValue = */ true);
+        DeviceConfig.addOnPropertiesChangedListener(
+                DeviceConfig.NAMESPACE_SYSTEMUI, mHandler::post, mOnPropertiesChangedListener);
     }
 
     @Override
@@ -346,6 +349,8 @@
         mNavigationModeController.removeListener(this);
         mAccessibilityManagerWrapper.removeCallback(mAccessibilityListener);
         mContentResolver.unregisterContentObserver(mAssistContentObserver);
+
+        DeviceConfig.removeOnPropertiesChangedListener(mOnPropertiesChangedListener);
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java
index 896b6e5..bdca9a4 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelper.java
@@ -28,11 +28,12 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
 import com.android.systemui.statusbar.AlertingNotificationManager;
-import com.android.systemui.statusbar.InflationTask;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
+import com.android.systemui.statusbar.notification.row.RowContentBindParams;
+import com.android.systemui.statusbar.notification.row.RowContentBindStage;
 import com.android.systemui.statusbar.phone.NotificationGroupManager.NotificationGroup;
 import com.android.systemui.statusbar.phone.NotificationGroupManager.OnGroupChangeListener;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
@@ -67,6 +68,7 @@
     private final ArrayMap<String, PendingAlertInfo> mPendingAlerts = new ArrayMap<>();
 
     private HeadsUpManager mHeadsUpManager;
+    private final RowContentBindStage mRowContentBindStage;
     private final NotificationGroupManager mGroupManager =
             Dependency.get(NotificationGroupManager.class);
 
@@ -75,8 +77,9 @@
     private boolean mIsDozing;
 
     @Inject
-    public NotificationGroupAlertTransferHelper() {
+    public NotificationGroupAlertTransferHelper(RowContentBindStage bindStage) {
         Dependency.get(StatusBarStateController.class).addCallback(this);
+        mRowContentBindStage = bindStage;
     }
 
     /** Causes the TransferHelper to register itself as a listener to the appropriate classes. */
@@ -190,21 +193,6 @@
             }
         }
 
-        // Called when the entry's reinflation has finished. If there is an alert pending, we
-        // then show the alert.
-        @Override
-        public void onEntryReinflated(NotificationEntry entry) {
-            PendingAlertInfo alertInfo = mPendingAlerts.remove(entry.getKey());
-            if (alertInfo != null) {
-                if (alertInfo.isStillValid()) {
-                    alertNotificationWhenPossible(entry, mHeadsUpManager);
-                } else {
-                    // The transfer is no longer valid. Free the content.
-                    entry.getRow().freeContentViewWhenSafe(mHeadsUpManager.getContentFlag());
-                }
-            }
-        }
-
         @Override
         public void onEntryRemoved(
                 @Nullable NotificationEntry entry,
@@ -392,10 +380,21 @@
     private void alertNotificationWhenPossible(@NonNull NotificationEntry entry,
             @NonNull AlertingNotificationManager alertManager) {
         @InflationFlag int contentFlag = alertManager.getContentFlag();
-        if (!entry.getRow().isInflationFlagSet(contentFlag)) {
+        final RowContentBindParams params = mRowContentBindStage.getStageParams(entry);
+        if ((params.getContentViews() & contentFlag) == 0) {
             mPendingAlerts.put(entry.getKey(), new PendingAlertInfo(entry));
-            entry.getRow().setInflationFlags(contentFlag);
-            entry.getRow().inflateViews();
+            params.requireContentViews(contentFlag);
+            mRowContentBindStage.requestRebind(entry, en -> {
+                PendingAlertInfo alertInfo = mPendingAlerts.remove(entry.getKey());
+                if (alertInfo != null) {
+                    if (alertInfo.isStillValid()) {
+                        alertNotificationWhenPossible(entry, mHeadsUpManager);
+                    } else {
+                        // The transfer is no longer valid. Free the content.
+                        entry.getRow().freeContentViewWhenSafe(mHeadsUpManager.getContentFlag());
+                    }
+                }
+            });
             return;
         }
         if (alertManager.isAlerting(entry.getKey())) {
@@ -426,9 +425,9 @@
         /**
          * The notification is still pending inflation but we've decided that we no longer need
          * the content view (e.g. suppression might have changed and we decided we need to transfer
-         * back). However, there is no way to abort just this inflation if other inflation requests
-         * have started (see {@link InflationTask#supersedeTask(InflationTask)}). So instead
-         * we just flag it as aborted and free when it's inflated.
+         * back).
+         *
+         * TODO: Replace this entire structure with {@link RowContentBindStage#requestRebind)}.
          */
         boolean mAbortOnInflation;
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
index 8c947ed..77337e9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationGroupManager.java
@@ -204,8 +204,8 @@
         }
         int childCount = 0;
         boolean hasBubbles = false;
-        for (String key : group.children.keySet()) {
-            if (!getBubbleController().isBubbleNotificationSuppressedFromShade(key)) {
+        for (NotificationEntry entry : group.children.values()) {
+            if (!getBubbleController().isBubbleNotificationSuppressedFromShade(entry)) {
                 childCount++;
             } else {
                 hasBubbles = true;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
index 6112ae8..d2186f9 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java
@@ -25,10 +25,8 @@
 import android.app.ActivityManager;
 import android.app.Fragment;
 import android.app.StatusBarManager;
-import android.content.Context;
 import android.content.pm.ResolveInfo;
 import android.content.res.Configuration;
-import android.content.res.Resources;
 import android.graphics.Canvas;
 import android.graphics.Color;
 import android.graphics.ColorFilter;
@@ -40,8 +38,6 @@
 import android.hardware.biometrics.BiometricSourceType;
 import android.os.PowerManager;
 import android.os.SystemClock;
-import android.provider.DeviceConfig;
-import android.provider.Settings;
 import android.util.Log;
 import android.util.MathUtils;
 import android.view.LayoutInflater;
@@ -57,7 +53,6 @@
 import android.widget.TextView;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.util.LatencyTracker;
@@ -73,13 +68,10 @@
 import com.android.systemui.fragments.FragmentHostManager;
 import com.android.systemui.fragments.FragmentHostManager.FragmentListener;
 import com.android.systemui.plugins.FalsingManager;
-import com.android.systemui.plugins.HomeControlsPlugin;
-import com.android.systemui.plugins.PluginListener;
 import com.android.systemui.plugins.qs.QS;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
 import com.android.systemui.qs.QSFragment;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.FlingAnimationUtils;
 import com.android.systemui.statusbar.GestureRecorder;
@@ -113,7 +105,6 @@
 import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
 import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.util.InjectionInflationController;
-import com.android.systemui.util.Utils;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -173,8 +164,6 @@
     private final ConfigurationController mConfigurationController;
     private final FlingAnimationUtils.Builder mFlingAnimationUtilsBuilder;
 
-    private double mQqsSplitFraction;
-
     // Cap and total height of Roboto font. Needs to be adjusted when font for the big clock is
     // changed.
     private static final int CAP_HEIGHT = 1456;
@@ -258,7 +247,6 @@
     private View mQsNavbarScrim;
     private NotificationsQuickSettingsContainer mNotificationContainerParent;
     private NotificationStackScrollLayout mNotificationStackScroller;
-    private FrameLayout mHomeControlsLayout;
     private boolean mAnimateNextPositionUpdate;
 
     private int mTrackingPointer;
@@ -446,9 +434,6 @@
      */
     private boolean mDelayShowingKeyguardStatusBar;
 
-    private PluginManager mPluginManager;
-    private FrameLayout mPluginFrame;
-    private NPVPluginManager mNPVPluginManager;
     private int mOldLayoutDirection;
 
     @Inject
@@ -457,7 +442,7 @@
             NotificationWakeUpCoordinator coordinator, PulseExpansionHandler pulseExpansionHandler,
             DynamicPrivacyController dynamicPrivacyController,
             KeyguardBypassController bypassController, FalsingManager falsingManager,
-            PluginManager pluginManager, ShadeController shadeController,
+            ShadeController shadeController,
             NotificationLockscreenUserManager notificationLockscreenUserManager,
             NotificationEntryManager notificationEntryManager,
             KeyguardStateController keyguardStateController,
@@ -523,7 +508,6 @@
         });
         mBottomAreaShadeAlphaAnimator.setDuration(160);
         mBottomAreaShadeAlphaAnimator.setInterpolator(Interpolators.ALPHA_OUT);
-        mPluginManager = pluginManager;
         mShadeController = shadeController;
         mLockscreenUserManager = notificationLockscreenUserManager;
         mEntryManager = notificationEntryManager;
@@ -553,7 +537,6 @@
         mBigClockContainer = mView.findViewById(R.id.big_clock_container);
         keyguardClockSwitch.setBigClockContainer(mBigClockContainer);
 
-        mHomeControlsLayout = mView.findViewById(R.id.home_controls_layout);
         mNotificationContainerParent = mView.findViewById(R.id.notification_container_parent);
         mNotificationStackScroller = mView.findViewById(R.id.notification_stack_scroller);
         mNotificationStackScroller.setOnHeightChangedListener(mOnHeightChangedListener);
@@ -563,12 +546,6 @@
         mKeyguardBottomArea = mView.findViewById(R.id.keyguard_bottom_area);
         mQsNavbarScrim = mView.findViewById(R.id.qs_navbar_scrim);
         mLastOrientation = mResources.getConfiguration().orientation;
-        mPluginFrame = mView.findViewById(R.id.plugin_frame);
-        if (Settings.System.getInt(mView.getContext().getContentResolver(), "npv_plugin_flag", 0)
-                == 1) {
-            mNPVPluginManager = new NPVPluginManager(mPluginFrame, mPluginManager);
-        }
-
 
         initBottomArea();
 
@@ -592,19 +569,6 @@
             }
         });
 
-        mPluginManager.addPluginListener(new PluginListener<HomeControlsPlugin>() {
-
-            @Override
-            public void onPluginConnected(HomeControlsPlugin plugin, Context pluginContext) {
-                plugin.sendParentGroup(mHomeControlsLayout);
-            }
-
-            @Override
-            public void onPluginDisconnected(HomeControlsPlugin plugin) {
-
-            }
-        }, HomeControlsPlugin.class, false);
-
         mView.setRtlChangeListener(layoutDirection -> {
             if (layoutDirection != mOldLayoutDirection) {
                 mAffordanceHelper.onRtlPropertiesChanged();
@@ -637,9 +601,6 @@
                 com.android.internal.R.dimen.status_bar_height);
         mHeadsUpInset = statusbarHeight + mResources.getDimensionPixelSize(
                 R.dimen.heads_up_status_bar_padding);
-        mQqsSplitFraction = ((float) mResources.getInteger(R.integer.qqs_split_fraction)) / (
-                mResources.getInteger(R.integer.qqs_split_fraction) + mResources.getInteger(
-                        R.integer.qs_split_fraction));
     }
 
     /**
@@ -679,18 +640,6 @@
             lp.gravity = panelGravity;
             mNotificationStackScroller.setLayoutParams(lp);
         }
-        int sideMargin = mResources.getDimensionPixelOffset(R.dimen.notification_side_paddings);
-        int topMargin = sideMargin;
-        lp = (FrameLayout.LayoutParams) mPluginFrame.getLayoutParams();
-        if (lp.width != qsWidth || lp.gravity != panelGravity || lp.leftMargin != sideMargin
-                || lp.rightMargin != sideMargin || lp.topMargin != topMargin) {
-            lp.width = qsWidth;
-            lp.gravity = panelGravity;
-            lp.leftMargin = sideMargin;
-            lp.rightMargin = sideMargin;
-            lp.topMargin = topMargin;
-            mPluginFrame.setLayoutParams(lp);
-        }
     }
 
     private void reInflateViews() {
@@ -732,41 +681,6 @@
         if (mOnReinflationListener != null) {
             mOnReinflationListener.run();
         }
-        reinflatePluginContainer();
-    }
-
-    private void reinflatePluginContainer() {
-        int index = mView.indexOfChild(mPluginFrame);
-        mView.removeView(mPluginFrame);
-        mPluginFrame = (FrameLayout) mInjectionInflationController.injectable(
-                LayoutInflater.from(mView.getContext())).inflate(
-                R.layout.status_bar_expanded_plugin_frame, mView, false);
-        mView.addView(mPluginFrame, index);
-
-        Resources res = mView.getResources();
-        int qsWidth = res.getDimensionPixelSize(R.dimen.qs_panel_width);
-        int panelGravity = mView.getResources().getInteger(
-                R.integer.notification_panel_layout_gravity);
-        FrameLayout.LayoutParams lp;
-        int sideMargin = res.getDimensionPixelOffset(R.dimen.notification_side_paddings);
-        int topMargin = res.getDimensionPixelOffset(
-                com.android.internal.R.dimen.quick_qs_total_height);
-        if (Utils.useQsMediaPlayer(mView.getContext())) {
-            topMargin = res.getDimensionPixelOffset(
-                    com.android.internal.R.dimen.quick_qs_total_height_with_media);
-        }
-        lp = (FrameLayout.LayoutParams) mPluginFrame.getLayoutParams();
-        if (lp.width != qsWidth || lp.gravity != panelGravity || lp.leftMargin != sideMargin
-                || lp.rightMargin != sideMargin || lp.topMargin != topMargin) {
-            lp.width = qsWidth;
-            lp.gravity = panelGravity;
-            lp.leftMargin = sideMargin;
-            lp.rightMargin = sideMargin;
-            lp.topMargin = topMargin;
-            mPluginFrame.setLayoutParams(lp);
-        }
-
-        if (mNPVPluginManager != null) mNPVPluginManager.replaceFrameLayout(mPluginFrame);
     }
 
     private void initBottomArea() {
@@ -1266,17 +1180,6 @@
             // earlier so the state is already up to date when dragging down.
             setListening(true);
         }
-        if (isQsSplitEnabled() && !mKeyguardShowing) {
-            if (mQsExpandImmediate) {
-                mNotificationStackScroller.setVisibility(View.GONE);
-                mQsFrame.setVisibility(View.VISIBLE);
-                mHomeControlsLayout.setVisibility(View.VISIBLE);
-            } else {
-                mNotificationStackScroller.setVisibility(View.VISIBLE);
-                mQsFrame.setVisibility(View.GONE);
-                mHomeControlsLayout.setVisibility(View.GONE);
-            }
-        }
         return false;
     }
 
@@ -1286,17 +1189,6 @@
                         || y <= mQs.getView().getY() + mQs.getView().getHeight());
     }
 
-    private boolean isOnQsEndArea(float x) {
-        if (!isQsSplitEnabled()) return false;
-        if (mView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR) {
-            return x >= mQsFrame.getX() + mQqsSplitFraction * mQsFrame.getWidth()
-                    && x <= mQsFrame.getX() + mQsFrame.getWidth();
-        } else {
-            return x >= mQsFrame.getX()
-                    && x <= mQsFrame.getX() + (1 - mQqsSplitFraction) * mQsFrame.getWidth();
-        }
-    }
-
     private boolean isOpenQsEvent(MotionEvent event) {
         final int pointerCount = event.getPointerCount();
         final int action = event.getActionMasked();
@@ -1317,9 +1209,7 @@
                         MotionEvent.BUTTON_SECONDARY) || event.isButtonPressed(
                         MotionEvent.BUTTON_TERTIARY));
 
-        final boolean onHeaderRight = isOnQsEndArea(event.getX());
-
-        return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag || onHeaderRight;
+        return twoFingerDrag || stylusButtonClickDrag || mouseButtonClickDrag;
     }
 
     private void handleQsDown(MotionEvent event) {
@@ -1659,10 +1549,7 @@
                 mBarState != StatusBarState.KEYGUARD && (!mQsExpanded
                         || mQsExpansionFromOverscroll));
         updateEmptyShadeView();
-        if (mNPVPluginManager != null) {
-            mNPVPluginManager.changeVisibility(
-                    (mBarState != StatusBarState.KEYGUARD) ? View.VISIBLE : View.INVISIBLE);
-        }
+
         mQsNavbarScrim.setVisibility(
                 mBarState == StatusBarState.SHADE && mQsExpanded && !mStackScrollerOverscrolling
                         && mQsScrimEnabled ? View.VISIBLE : View.INVISIBLE);
@@ -1718,9 +1605,6 @@
         float qsExpansionFraction = getQsExpansionFraction();
         mQs.setQsExpansion(qsExpansionFraction, getHeaderTranslation());
         int heightDiff = mQs.getDesiredHeight() - mQs.getQsMinExpansionHeight();
-        if (mNPVPluginManager != null) {
-            mNPVPluginManager.setExpansion(qsExpansionFraction, getHeaderTranslation(), heightDiff);
-        }
         mNotificationStackScroller.setQsExpansionFraction(qsExpansionFraction);
     }
 
@@ -2015,7 +1899,6 @@
                     targetHeight =
                     mQsMinExpansionHeight + t * (mQsMaxExpansionHeight - mQsMinExpansionHeight);
             setQsExpansion(targetHeight);
-            mHomeControlsLayout.setTranslationY(targetHeight);
         }
         updateExpandedHeight(expandedHeight);
         updateHeader();
@@ -2150,7 +2033,6 @@
                 appearAmount = mNotificationStackScroller.calculateAppearFractionBypass();
             }
             startHeight = -mQs.getQsMinExpansionHeight();
-            if (mNPVPluginManager != null) startHeight -= mNPVPluginManager.getHeight();
         }
         float translation = MathUtils.lerp(startHeight, 0, Math.min(1.0f, appearAmount))
                 + mExpandOffset;
@@ -2294,7 +2176,6 @@
         mKeyguardStatusBar.setListening(listening);
         if (mQs == null) return;
         mQs.setListening(listening);
-        if (mNPVPluginManager != null) mNPVPluginManager.setListening(listening);
     }
 
     @Override
@@ -3029,11 +2910,6 @@
         mOnReinflationListener = onReinflationListener;
     }
 
-    public static boolean isQsSplitEnabled() {
-        return DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_SYSTEMUI,
-                SystemUiDeviceConfigFlags.QS_SPLIT_ENABLED, false);
-    }
-
     public void setAlpha(float alpha) {
         mView.setAlpha(alpha);
     }
@@ -3500,9 +3376,7 @@
         }
 
         @Override
-        public void onUiModeChanged() {
-            reinflatePluginContainer();
-        }
+        public void onUiModeChanged() {}
     }
 
     private class StatusBarStateListener implements StateListener {
@@ -3517,11 +3391,6 @@
 
             mBarState = statusBarState;
             mKeyguardShowing = keyguardShowing;
-            if (mKeyguardShowing && isQsSplitEnabled()) {
-                mNotificationStackScroller.setVisibility(View.VISIBLE);
-                mQsFrame.setVisibility(View.VISIBLE);
-                mHomeControlsLayout.setVisibility(View.GONE);
-            }
 
             if (oldState == StatusBarState.KEYGUARD && (goingToFullShade
                     || statusBarState == StatusBarState.SHADE_LOCKED)) {
@@ -3544,7 +3413,6 @@
             } else {
                 mKeyguardStatusBar.setAlpha(1f);
                 mKeyguardStatusBar.setVisibility(keyguardShowing ? View.VISIBLE : View.INVISIBLE);
-                ((PhoneStatusBarView) mBar).maybeShowDivider(keyguardShowing);
                 if (keyguardShowing && oldState != mBarState) {
                     if (mQs != null) {
                         mQs.hideImmediately();
@@ -3622,10 +3490,6 @@
             int oldMaxHeight = mQsMaxExpansionHeight;
             if (mQs != null) {
                 mQsMinExpansionHeight = mKeyguardShowing ? 0 : mQs.getQsMinExpansionHeight();
-                if (mNPVPluginManager != null) {
-                    mNPVPluginManager.setYOffset(mQsMinExpansionHeight);
-                    mQsMinExpansionHeight += mNPVPluginManager.getHeight();
-                }
                 mQsMaxExpansionHeight = mQs.getDesiredHeight();
                 mNotificationStackScroller.setMaxTopPadding(
                         mQsMaxExpansionHeight + mQsNotificationTopPadding);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
index 3af8038..d016217 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowController.java
@@ -16,7 +16,9 @@
 
 package com.android.systemui.statusbar.phone;
 
+import static android.view.WindowInsetsController.BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
 
 import static com.android.systemui.DejankUtils.whitelistIpcs;
 import static com.android.systemui.statusbar.NotificationRemoteInputManager.ENABLE_REMOTE_INPUT;
@@ -46,7 +48,6 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController.StateListener;
 import com.android.systemui.statusbar.RemoteInputController.Callback;
 import com.android.systemui.statusbar.StatusBarState;
-import com.android.systemui.statusbar.SuperStatusBarViewFactory;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.statusbar.policy.ConfigurationController.ConfigurationListener;
@@ -94,15 +95,13 @@
             mCallbacks = Lists.newArrayList();
 
     private final SysuiColorExtractor mColorExtractor;
-    private final SuperStatusBarViewFactory mSuperStatusBarViewFactory;
 
     @Inject
     public NotificationShadeWindowController(Context context, WindowManager windowManager,
             IActivityManager activityManager, DozeParameters dozeParameters,
             StatusBarStateController statusBarStateController,
             ConfigurationController configurationController,
-            KeyguardBypassController keyguardBypassController, SysuiColorExtractor colorExtractor,
-            SuperStatusBarViewFactory superStatusBarViewFactory) {
+            KeyguardBypassController keyguardBypassController, SysuiColorExtractor colorExtractor) {
         mContext = context;
         mWindowManager = windowManager;
         mActivityManager = activityManager;
@@ -112,8 +111,6 @@
         mLpChanged = new LayoutParams();
         mKeyguardBypassController = keyguardBypassController;
         mColorExtractor = colorExtractor;
-        mSuperStatusBarViewFactory = superStatusBarViewFactory;
-        mNotificationShadeView = mSuperStatusBarViewFactory.getNotificationShadeWindowView();
 
         mLockScreenDisplayTimeout = context.getResources()
                 .getInteger(R.integer.config_lockScreenDisplayTimeout);
@@ -180,11 +177,22 @@
         mLp.setTitle("NotificationShade");
         mLp.packageName = mContext.getPackageName();
         mLp.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+
+        // We use BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE here, however, there is special logic in
+        // window manager which disables the transient show behavior.
+        // TODO: Clean this up once that behavior moves into the Shell.
+        mLp.privateFlags |= PRIVATE_FLAG_BEHAVIOR_CONTROLLED;
+        mLp.insetsFlags.behavior = BEHAVIOR_SHOW_TRANSIENT_BARS_BY_SWIPE;
+
         mWindowManager.addView(mNotificationShadeView, mLp);
         mLpChanged.copyFrom(mLp);
         onThemeChanged();
     }
 
+    public void setNotificationShadeView(ViewGroup view) {
+        mNotificationShadeView = view;
+    }
+
     public ViewGroup getNotificationShadeView() {
         return mNotificationShadeView;
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
index ab1c8ad..8729e04 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewController.java
@@ -45,7 +45,7 @@
 import com.android.systemui.statusbar.DragDownHelper;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.PulseExpansionHandler;
-import com.android.systemui.statusbar.StatusBarWindowBlurController;
+import com.android.systemui.statusbar.NotificationShadeWindowBlurController;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -81,7 +81,7 @@
     private final CommandQueue mCommandQueue;
     private final NotificationShadeWindowView mView;
     private final ShadeController mShadeController;
-    private final StatusBarWindowBlurController mBlurController;
+    private final NotificationShadeWindowBlurController mBlurController;
 
     private GestureDetector mGestureDetector;
     private View mBrightnessMirror;
@@ -123,7 +123,7 @@
             CommandQueue commandQueue,
             ShadeController shadeController,
             DockManager dockManager,
-            @Nullable StatusBarWindowBlurController blurController,
+            @Nullable NotificationShadeWindowBlurController blurController,
             NotificationShadeWindowView statusBarWindowView,
             NotificationPanelViewController notificationPanelViewController) {
         mInjectionInflationController = injectionInflationController;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
index 96b4b22..e8bc2f5 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarTransitions.java
@@ -32,7 +32,7 @@
     private final PhoneStatusBarView mView;
     private final float mIconAlphaWhenOpaque;
 
-    private View mLeftSide, mStatusIcons, mBattery, mClock, mDivider;
+    private View mLeftSide, mStatusIcons, mBattery, mClock;
     private Animator mCurrentAnimation;
 
     public PhoneStatusBarTransitions(PhoneStatusBarView view) {
@@ -46,7 +46,6 @@
         mLeftSide = mView.findViewById(R.id.status_bar_left_side);
         mStatusIcons = mView.findViewById(R.id.statusIcons);
         mBattery = mView.findViewById(R.id.battery);
-        mDivider = mView.findViewById(R.id.divider);
         applyModeBackground(-1, getMode(), false /*animate*/);
         applyMode(getMode(), false /*animate*/);
     }
@@ -89,7 +88,6 @@
             anims.playTogether(
                     animateTransitionTo(mLeftSide, newAlpha),
                     animateTransitionTo(mStatusIcons, newAlpha),
-                    animateTransitionTo(mDivider, newAlpha),
                     animateTransitionTo(mBattery, newAlphaBC)
                     );
             if (isLightsOut(mode)) {
@@ -100,8 +98,7 @@
         } else {
             mLeftSide.setAlpha(newAlpha);
             mStatusIcons.setAlpha(newAlpha);
-            mDivider.setAlpha(newAlpha);
             mBattery.setAlpha(newAlphaBC);
         }
     }
-}
\ No newline at end of file
+}
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 ffbbffc..f3b0a79 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/PhoneStatusBarView.java
@@ -25,7 +25,6 @@
 import android.content.res.Configuration;
 import android.graphics.Point;
 import android.graphics.Rect;
-import android.provider.DeviceConfig;
 import android.util.AttributeSet;
 import android.util.EventLog;
 import android.util.Pair;
@@ -40,8 +39,6 @@
 import android.widget.FrameLayout;
 import android.widget.LinearLayout;
 
-import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
-import com.android.systemui.DarkReceiverImpl;
 import com.android.systemui.Dependency;
 import com.android.systemui.EventLogTags;
 import com.android.systemui.R;
@@ -81,9 +78,6 @@
     @Nullable
     private DisplayCutout mDisplayCutout;
 
-    private DarkReceiverImpl mSplitDivider;
-    private View mDividerContainer;
-    private QsSplitPropertyListener mPropertyListener;
     /**
      * Draw this many pixels into the left/right side of the cutout to optimally use the space
      */
@@ -115,10 +109,6 @@
         mBattery = findViewById(R.id.battery);
         mCutoutSpace = findViewById(R.id.cutout_space_view);
         mCenterIconSpace = findViewById(R.id.centered_icon_area);
-        mSplitDivider = findViewById(R.id.divider);
-        mDividerContainer = findViewById(R.id.divider_container);
-        maybeShowDivider(true);
-        mPropertyListener = new QsSplitPropertyListener(mDividerContainer);
 
         updateResources();
     }
@@ -128,26 +118,16 @@
         super.onAttachedToWindow();
         // Always have Battery meters in the status bar observe the dark/light modes.
         Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mBattery);
-        Dependency.get(DarkIconDispatcher.class).addDarkReceiver(mSplitDivider);
-        maybeShowDivider(true);
         if (updateOrientationAndCutout(getResources().getConfiguration().orientation)) {
             updateLayoutForCutout();
         }
-        if (mPropertyListener != null) {
-            DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_SYSTEMUI,
-                    mContext.getMainExecutor(), mPropertyListener);
-        }
     }
 
     @Override
     protected void onDetachedFromWindow() {
         super.onDetachedFromWindow();
         Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mBattery);
-        Dependency.get(DarkIconDispatcher.class).removeDarkReceiver(mSplitDivider);
         mDisplayCutout = null;
-        if (mPropertyListener != null) {
-            DeviceConfig.removeOnPropertiesChangedListener(mPropertyListener);
-        }
     }
 
     @Override
@@ -216,7 +196,6 @@
     public void onPanelPeeked() {
         super.onPanelPeeked();
         mBar.makeExpandedVisible(false);
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
@@ -225,7 +204,6 @@
         // Close the status bar in the next frame so we can show the end of the animation.
         post(mHideExpandedRunnable);
         mIsFullyOpenedPanel = false;
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     public void removePendingHideExpandedRunnables() {
@@ -239,7 +217,6 @@
             mPanel.getView().sendAccessibilityEvent(AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED);
         }
         mIsFullyOpenedPanel = true;
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
@@ -263,28 +240,24 @@
         mBar.onTrackingStarted();
         mScrimController.onTrackingStarted();
         removePendingHideExpandedRunnables();
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
     public void onClosingFinished() {
         super.onClosingFinished();
         mBar.onClosingFinished();
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
     public void onTrackingStopped(boolean expand) {
         super.onTrackingStopped(expand);
         mBar.onTrackingStopped(expand);
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
     public void onExpandingFinished() {
         super.onExpandingFinished();
         mScrimController.onExpandingFinished();
-        maybeShowDivider(!mBar.mPanelExpanded);
     }
 
     @Override
@@ -416,31 +389,4 @@
     protected boolean shouldPanelBeVisible() {
         return mHeadsUpVisible || super.shouldPanelBeVisible();
     }
-
-    void maybeShowDivider(boolean showDivider) {
-        int state =
-                showDivider && NotificationPanelViewController.isQsSplitEnabled()
-                        ? View.VISIBLE : View.GONE;
-        mDividerContainer.setVisibility(state);
-    }
-
-    private static class QsSplitPropertyListener implements
-            DeviceConfig.OnPropertiesChangedListener {
-        private final View mDivider;
-
-        QsSplitPropertyListener(View divider) {
-            mDivider = divider;
-        }
-
-        @Override
-        public void onPropertiesChanged(DeviceConfig.Properties properties) {
-            if (properties.getNamespace().equals(DeviceConfig.NAMESPACE_SYSTEMUI)
-                    && properties.getKeyset().contains(
-                    SystemUiDeviceConfigFlags.QS_SPLIT_ENABLED)) {
-                boolean splitEnabled = properties.getBoolean(
-                        SystemUiDeviceConfigFlags.QS_SPLIT_ENABLED, false);
-                mDivider.setVisibility(splitEnabled ? VISIBLE : GONE);
-            }
-        }
-    }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
index 2b9fc8d..10821d6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimController.java
@@ -107,7 +107,7 @@
     /**
      * Default alpha value for most scrims.
      */
-    public static final float GRADIENT_SCRIM_ALPHA = 0.2f;
+    public static final float SCRIM_ALPHA = 0.2f;
     /**
      * Scrim opacity when the phone is about to wake-up.
      */
@@ -116,12 +116,12 @@
      * A scrim varies its opacity based on a busyness factor, for example
      * how many notifications are currently visible.
      */
-    public static final float GRADIENT_SCRIM_ALPHA_BUSY = 0.7f;
+    public static final float BUSY_SCRIM_ALPHA = 0.54f;
 
     /**
      * The most common scrim, the one under the keyguard.
      */
-    protected static final float SCRIM_BEHIND_ALPHA_KEYGUARD = GRADIENT_SCRIM_ALPHA;
+    protected static final float SCRIM_BEHIND_ALPHA_KEYGUARD = SCRIM_ALPHA;
 
     static final int TAG_KEY_ANIM = R.id.scrim;
     private static final int TAG_START_ALPHA = R.id.scrim_alpha_start;
@@ -481,7 +481,7 @@
             // Darken scrim as you pull down the shade when unlocked
             float behindFraction = getInterpolatedFraction();
             behindFraction = (float) Math.pow(behindFraction, 0.8f);
-            mBehindAlpha = behindFraction * GRADIENT_SCRIM_ALPHA_BUSY;
+            mBehindAlpha = behindFraction * BUSY_SCRIM_ALPHA;
             mInFrontAlpha = 0;
         } else if (mState == ScrimState.KEYGUARD || mState == ScrimState.PULSING) {
             // Either darken of make the scrim transparent when you
@@ -489,7 +489,7 @@
             float interpolatedFract = getInterpolatedFraction();
             float alphaBehind = mState.getBehindAlpha();
             if (mDarkenWhileDragging) {
-                mBehindAlpha = MathUtils.lerp(GRADIENT_SCRIM_ALPHA_BUSY, alphaBehind,
+                mBehindAlpha = MathUtils.lerp(BUSY_SCRIM_ALPHA, alphaBehind,
                         interpolatedFract);
                 mInFrontAlpha = mState.getFrontAlpha();
             } else {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
index 40f8d58..c23fd0a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/ScrimState.java
@@ -92,7 +92,7 @@
     BOUNCER {
         @Override
         public void prepare(ScrimState previousState) {
-            mBehindAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
+            mBehindAlpha = ScrimController.BUSY_SCRIM_ALPHA;
             mFrontAlpha = 0f;
             mBubbleAlpha = 0f;
         }
@@ -106,7 +106,7 @@
         public void prepare(ScrimState previousState) {
             mBehindAlpha = 0;
             mBubbleAlpha = 0f;
-            mFrontAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
+            mFrontAlpha = ScrimController.BUSY_SCRIM_ALPHA;
         }
     },
 
@@ -234,8 +234,8 @@
             mBubbleTint = Color.TRANSPARENT;
 
             mFrontAlpha = ScrimController.TRANSPARENT;
-            mBehindAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
-            mBubbleAlpha = ScrimController.GRADIENT_SCRIM_ALPHA_BUSY;
+            mBehindAlpha = ScrimController.BUSY_SCRIM_ALPHA;
+            mBubbleAlpha = ScrimController.BUSY_SCRIM_ALPHA;
 
             mAnimationDuration = ScrimController.ANIMATION_DURATION;
             mBlankScreen = false;
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 4e8442f..823adff 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -144,7 +144,6 @@
 import com.android.systemui.fragments.ExtensionFragmentListener;
 import com.android.systemui.fragments.FragmentHostManager;
 import com.android.systemui.keyguard.DismissCallbackRegistry;
-import com.android.systemui.keyguard.KeyguardSliceProvider;
 import com.android.systemui.keyguard.KeyguardViewMediator;
 import com.android.systemui.keyguard.ScreenLifecycle;
 import com.android.systemui.keyguard.WakefulnessLifecycle;
@@ -169,12 +168,10 @@
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.CrossFadeHelper;
 import com.android.systemui.statusbar.EmptyShadeView;
-import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.GestureRecorder;
 import com.android.systemui.statusbar.KeyboardShortcuts;
 import com.android.systemui.statusbar.KeyguardIndicationController;
 import com.android.systemui.statusbar.NavigationBarController;
-import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.NotificationPresenter;
@@ -192,15 +189,11 @@
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationActivityStarter;
 import com.android.systemui.statusbar.notification.NotificationAlertingManager;
-import com.android.systemui.statusbar.notification.NotificationClicker;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
-import com.android.systemui.statusbar.notification.NotificationListController;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
-import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
@@ -219,7 +212,6 @@
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.OnHeadsUpChangedListener;
 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.volume.VolumeComponent;
@@ -357,7 +349,6 @@
 
     private final Object mQueueLock = new Object();
 
-    private final FeatureFlags mFeatureFlags;
     private final StatusBarIconController mIconController;
     private final PulseExpansionHandler mPulseExpansionHandler;
     private final NotificationWakeUpCoordinator mWakeUpCoordinator;
@@ -366,7 +357,6 @@
     private final HeadsUpManagerPhone mHeadsUpManager;
     private final DynamicPrivacyController mDynamicPrivacyController;
     private final BypassHeadsUpNotifier mBypassHeadsUpNotifier;
-    private final Lazy<NotifPipelineInitializer> mNewNotifPipeline;
     private final FalsingManager mFalsingManager;
     private final BroadcastDispatcher mBroadcastDispatcher;
     private final ConfigurationController mConfigurationController;
@@ -375,7 +365,6 @@
     private final Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
     private final Provider<StatusBarComponent.Builder> mStatusBarComponentBuilder;
     private final PluginManager mPluginManager;
-    private final RemoteInputUriController mRemoteInputUriController;
     private final Optional<Divider> mDividerOptional;
     private final StatusBarNotificationActivityStarter.Builder
             mStatusBarNotificationActivityStarterBuilder;
@@ -388,8 +377,8 @@
     private final KeyguardDismissUtil mKeyguardDismissUtil;
     private final ExtensionController mExtensionController;
     private final UserInfoControllerImpl mUserInfoControllerImpl;
-    private final NotificationRowBinderImpl mNotificationRowBinder;
     private final DismissCallbackRegistry mDismissCallbackRegistry;
+    private NotificationsController mNotificationsController;
 
     // expanded notifications
     // the sliding/resizing panel within the notification window
@@ -413,8 +402,6 @@
 
     private final NotificationGutsManager mGutsManager;
     private final NotificationLogger mNotificationLogger;
-    private final NotificationEntryManager mEntryManager;
-    private NotificationListController mNotificationListController;
     private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
     private final NotificationViewHierarchyManager mViewHierarchyManager;
     private final KeyguardViewMediator mKeyguardViewMediator;
@@ -590,7 +577,7 @@
                 @Override
                 public void onStrongAuthStateChanged(int userId) {
                     super.onStrongAuthStateChanged(userId);
-                    mEntryManager.updateNotifications("onStrongAuthStateChanged");
+                    mNotificationsController.requestNotificationUpdate("onStrongAuthStateChanged");
                 }
             };
     private final Handler mMainThreadHandler = new Handler(Looper.getMainLooper());
@@ -615,7 +602,7 @@
     @SuppressWarnings("OptionalUsedAsFieldOrParameterType")
     public StatusBar(
             Context context,
-            FeatureFlags featureFlags,
+            NotificationsController notificationsController,
             LightBarController lightBarController,
             AutoHideController autoHideController,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -627,13 +614,11 @@
             HeadsUpManagerPhone headsUpManagerPhone,
             DynamicPrivacyController dynamicPrivacyController,
             BypassHeadsUpNotifier bypassHeadsUpNotifier,
-            Lazy<NotifPipelineInitializer> newNotifPipeline,
             FalsingManager falsingManager,
             BroadcastDispatcher broadcastDispatcher,
             RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
             NotificationGutsManager notificationGutsManager,
             NotificationLogger notificationLogger,
-            NotificationEntryManager notificationEntryManager,
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             NotificationViewHierarchyManager notificationViewHierarchyManager,
             KeyguardViewMediator keyguardViewMediator,
@@ -654,12 +639,10 @@
             VibratorHelper vibratorHelper,
             BubbleController bubbleController,
             NotificationGroupManager groupManager,
-            NotificationGroupAlertTransferHelper groupAlertTransferHelper,
             VisualStabilityManager visualStabilityManager,
             DeviceProvisionedController deviceProvisionedController,
             NavigationBarController navigationBarController,
             Lazy<AssistManager> assistManagerLazy,
-            NotificationListener notificationListener,
             ConfigurationController configurationController,
             NotificationShadeWindowController notificationShadeWindowController,
             LockscreenLockIconController lockscreenLockIconController,
@@ -677,7 +660,6 @@
             Optional<Recents> recentsOptional,
             Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
             PluginManager pluginManager,
-            RemoteInputUriController remoteInputUriController,
             Optional<Divider> dividerOptional,
             LightsOutNotifController lightsOutNotifController,
             StatusBarNotificationActivityStarter.Builder
@@ -693,10 +675,9 @@
             KeyguardDismissUtil keyguardDismissUtil,
             ExtensionController extensionController,
             UserInfoControllerImpl userInfoControllerImpl,
-            NotificationRowBinderImpl notificationRowBinder,
             DismissCallbackRegistry dismissCallbackRegistry) {
         super(context);
-        mFeatureFlags = featureFlags;
+        mNotificationsController = notificationsController;
         mLightBarController = lightBarController;
         mAutoHideController = autoHideController;
         mKeyguardUpdateMonitor = keyguardUpdateMonitor;
@@ -708,13 +689,11 @@
         mHeadsUpManager = headsUpManagerPhone;
         mDynamicPrivacyController = dynamicPrivacyController;
         mBypassHeadsUpNotifier = bypassHeadsUpNotifier;
-        mNewNotifPipeline = newNotifPipeline;
         mFalsingManager = falsingManager;
         mBroadcastDispatcher = broadcastDispatcher;
         mRemoteInputQuickSettingsDisabler = remoteInputQuickSettingsDisabler;
         mGutsManager = notificationGutsManager;
         mNotificationLogger = notificationLogger;
-        mEntryManager = notificationEntryManager;
         mNotificationInterruptionStateProvider = notificationInterruptionStateProvider;
         mViewHierarchyManager = notificationViewHierarchyManager;
         mKeyguardViewMediator = keyguardViewMediator;
@@ -735,12 +714,10 @@
         mVibratorHelper = vibratorHelper;
         mBubbleController = bubbleController;
         mGroupManager = groupManager;
-        mGroupAlertTransferHelper = groupAlertTransferHelper;
         mVisualStabilityManager = visualStabilityManager;
         mDeviceProvisionedController = deviceProvisionedController;
         mNavigationBarController = navigationBarController;
         mAssistManagerLazy = assistManagerLazy;
-        mNotificationListener = notificationListener;
         mConfigurationController = configurationController;
         mNotificationShadeWindowController = notificationShadeWindowController;
         mLockscreenLockIconController = lockscreenLockIconController;
@@ -758,7 +735,6 @@
         mRecentsOptional = recentsOptional;
         mStatusBarComponentBuilder = statusBarComponentBuilder;
         mPluginManager = pluginManager;
-        mRemoteInputUriController = remoteInputUriController;
         mDividerOptional = dividerOptional;
         mStatusBarNotificationActivityStarterBuilder = statusBarNotificationActivityStarterBuilder;
         mShadeController = shadeController;
@@ -772,12 +748,11 @@
         mKeyguardDismissUtil = keyguardDismissUtil;
         mExtensionController = extensionController;
         mUserInfoControllerImpl = userInfoControllerImpl;
-        mNotificationRowBinder = notificationRowBinder;
         mDismissCallbackRegistry = dismissCallbackRegistry;
 
         mBubbleExpandListener =
                 (isExpanding, key) -> {
-                    mEntryManager.updateNotifications("onBubbleExpandChanged");
+                    mNotificationsController.requestNotificationUpdate("onBubbleExpandChanged");
                     updateScrimController();
                 };
 
@@ -787,20 +762,12 @@
 
     @Override
     public void start() {
-        mNotificationListener.registerAsSystemService();
         mScreenLifecycle.addObserver(mScreenObserver);
         mWakefulnessLifecycle.addObserver(mWakefulnessObserver);
         mUiModeManager = mContext.getSystemService(UiModeManager.class);
-        mBypassHeadsUpNotifier.setUp(mEntryManager);
+        mBypassHeadsUpNotifier.setUp();
         mBubbleController.setExpandListener(mBubbleExpandListener);
         mActivityIntentHelper = new ActivityIntentHelper(mContext);
-        KeyguardSliceProvider sliceProvider = KeyguardSliceProvider.getAttachedInstance();
-        if (sliceProvider != null) {
-            sliceProvider.initDependencies(mMediaManager, mStatusBarStateController,
-                    mKeyguardBypassController, mDozeParameters);
-        } else {
-            Log.w(TAG, "Cannot init KeyguardSliceProvider dependencies");
-        }
 
         mColorExtractor.addOnColorsChangedListener(this);
         mStatusBarStateController.addCallback(this,
@@ -1068,12 +1035,8 @@
         mConfigurationController.addCallback(mHeadsUpManager);
         mHeadsUpManager.addListener(this);
         mHeadsUpManager.addListener(mNotificationPanelViewController.getOnHeadsUpChangedListener());
-        mHeadsUpManager.addListener(mGroupManager);
-        mHeadsUpManager.addListener(mGroupAlertTransferHelper);
         mHeadsUpManager.addListener(mVisualStabilityManager);
         mNotificationPanelViewController.setHeadsUpManager(mHeadsUpManager);
-        mGroupManager.setHeadsUpManager(mHeadsUpManager);
-        mGroupAlertTransferHelper.setHeadsUpManager(mHeadsUpManager);
         mNotificationLogger.setHeadsUpManager(mHeadsUpManager);
 
         createNavigationBar(result);
@@ -1251,16 +1214,10 @@
         mPresenter = new StatusBarNotificationPresenter(mContext, mNotificationPanelViewController,
                 mHeadsUpManager, mNotificationShadeWindowView, mStackScroller, mDozeScrimController,
                 mScrimController, mActivityLaunchAnimator, mDynamicPrivacyController,
-                mNotificationAlertingManager, mNotificationRowBinder, mKeyguardStateController,
+                mNotificationAlertingManager, mKeyguardStateController,
                 mKeyguardIndicationController,
                 this /* statusBar */, mShadeController, mCommandQueue, mInitController);
 
-        mNotificationListController =
-                new NotificationListController(
-                        mEntryManager,
-                        (NotificationListContainer) mStackScroller,
-                        mDeviceProvisionedController);
-
         mNotificationShelf.setOnActivatedListener(mPresenter);
         mRemoteInputManager.getController().addCallback(mNotificationShadeWindowController);
 
@@ -1274,22 +1231,12 @@
 
         mGutsManager.setNotificationActivityStarter(mNotificationActivityStarter);
 
-        if (!mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
-            mNotificationRowBinder.setInflationCallback(mEntryManager);
-        }
-
-        mRemoteInputUriController.attach(mEntryManager);
-
-        mNotificationRowBinder.setNotificationClicker(new NotificationClicker(
-                Optional.of(this), mBubbleController, mNotificationActivityStarter));
-
-        mGroupAlertTransferHelper.bind(mEntryManager, mGroupManager);
-        mNotificationListController.bind();
-
-        if (mFeatureFlags.isNewNotifPipelineEnabled()) {
-            mNewNotifPipeline.get().initialize(mNotificationListener, mNotificationRowBinder);
-        }
-        mEntryManager.attach(mNotificationListener);
+        mNotificationsController.initialize(
+                this,
+                mPresenter,
+                (NotificationListContainer) mStackScroller,
+                mNotificationActivityStarter,
+                mPresenter);
     }
 
     /**
@@ -1406,6 +1353,7 @@
                 .statusBarWindowView(mNotificationShadeWindowView).build();
         mNotificationShadeWindowViewController = statusBarComponent
                 .getNotificationShadeWindowViewController();
+        mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
         mNotificationShadeWindowViewController.setupExpandedStatusBar();
         mStatusBarWindowController = statusBarComponent.getStatusBarWindowController();
         mPhoneStatusBarWindow = mSuperStatusBarViewFactory.getStatusBarWindowView();
@@ -1526,7 +1474,7 @@
      * @param reason why we're requesting a notification update
      */
     public void requestNotificationUpdate(String reason) {
-        mEntryManager.updateNotifications(reason);
+        mNotificationsController.requestNotificationUpdate(reason);
     }
 
     /**
@@ -1734,7 +1682,7 @@
 
     @Override
     public void onHeadsUpStateChanged(NotificationEntry entry, boolean isHeadsUp) {
-        mEntryManager.updateNotifications("onHeadsUpStateChanged");
+        mNotificationsController.requestNotificationUpdate("onHeadsUpStateChanged");
         if (mStatusBarStateController.isDozing() && isHeadsUp) {
             entry.setPulseSuppressed(false);
             mDozeServiceHost.fireNotificationPulse(entry);
@@ -2493,11 +2441,9 @@
             mStatusBarKeyguardViewManager.dump(pw);
         }
 
-        if (DUMPTRUCK) {
-            synchronized (mEntryManager) {
-                mEntryManager.dump(pw, "  ");
-            }
+        mNotificationsController.dump(fd, pw, args, DUMPTRUCK);
 
+        if (DUMPTRUCK) {
             if (false) {
                 pw.println("see the logcat for a dump of the views we have created.");
                 // must happen on ui thread
@@ -2520,15 +2466,6 @@
         } else {
             pw.println("  mHeadsUpManager: null");
         }
-        if (mGroupManager != null) {
-            mGroupManager.dump(fd, pw, args);
-        } else {
-            pw.println("  mGroupManager: null");
-        }
-
-        if (mBubbleController != null) {
-            mBubbleController.dump(fd, pw, args);
-        }
 
         if (mLightBarController != null) {
             mLightBarController.dump(fd, pw, args);
@@ -2631,7 +2568,7 @@
             }
             try {
                 result = ActivityTaskManager.getService().startActivityAsUser(
-                        null, mContext.getBasePackageName(),
+                        null, mContext.getBasePackageName(), mContext.getFeatureId(),
                         intent,
                         intent.resolveTypeIfNeeded(mContext.getContentResolver()),
                         null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null,
@@ -2755,9 +2692,7 @@
     };
 
     public void resetUserExpandedStates() {
-        for (NotificationEntry entry : mEntryManager.getVisibleNotifications()) {
-            entry.resetUserExpansion();
-        }
+        mNotificationsController.resetUserExpandedStates();
     }
 
     private void executeWhenUnlocked(OnDismissAction action, boolean requiresShadeOpen) {
@@ -2863,7 +2798,7 @@
         try {
             // consider the transition from peek to expanded to be a panel open,
             // but not one that clears notification effects.
-            int notificationLoad = mEntryManager.getActiveNotificationsCount();
+            int notificationLoad = mNotificationsController.getActiveNotificationsCount();
             mBarService.onPanelRevealed(false, notificationLoad);
         } catch (RemoteException ex) {
             // Won't fail unless the world has ended.
@@ -2881,7 +2816,7 @@
                     !mPresenter.isPresenterFullyCollapsed() &&
                             (mState == StatusBarState.SHADE
                                     || mState == StatusBarState.SHADE_LOCKED);
-            int notificationLoad = mEntryManager.getActiveNotificationsCount();
+            int notificationLoad = mNotificationsController.getActiveNotificationsCount();
             if (pinnedHeadsUp && mPresenter.isPresenterFullyCollapsed()) {
                 notificationLoad = 1;
             }
@@ -3522,7 +3457,7 @@
         updateQsExpansionEnabled();
         mKeyguardViewMediator.setDozing(mDozing);
 
-        mEntryManager.updateNotifications("onDozingChanged");
+        mNotificationsController.requestNotificationUpdate("onDozingChanged");
         updateDozingState();
         mDozeServiceHost.updateDozing();
         updateScrimController();
@@ -3973,7 +3908,6 @@
     protected ViewGroup mStackScroller;
 
     private final NotificationGroupManager mGroupManager;
-    private final NotificationGroupAlertTransferHelper mGroupAlertTransferHelper;
 
     // handling reordering
     private final VisualStabilityManager mVisualStabilityManager;
@@ -4040,21 +3974,12 @@
         }
     };
 
-    private final NotificationListener mNotificationListener;
-
     public void setNotificationSnoozed(StatusBarNotification sbn, SnoozeOption snoozeOption) {
-        if (snoozeOption.getSnoozeCriterion() != null) {
-            mNotificationListener.snoozeNotification(sbn.getKey(),
-                    snoozeOption.getSnoozeCriterion().getId());
-        } else {
-            mNotificationListener.snoozeNotification(sbn.getKey(),
-                    snoozeOption.getMinutesToSnoozeFor() * 60 * 1000);
-        }
+        mNotificationsController.setNotificationSnoozed(sbn, snoozeOption);
     }
 
     public void setNotificationSnoozed(StatusBarNotification sbn, int hoursToSnooze) {
-        mNotificationListener.snoozeNotification(sbn.getKey(),
-                hoursToSnooze * 60 * 60 * 1000);
+        mNotificationsController.setNotificationSnoozed(sbn, hoursToSnooze);
     }
 
     @Override
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 86a81ce..0644a42 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarKeyguardViewManager.java
@@ -16,6 +16,10 @@
 
 package com.android.systemui.statusbar.phone;
 
+import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
+import static android.view.ViewRootImpl.sNewInsetsMode;
+import static android.view.WindowInsets.Type.navigationBars;
+
 import static com.android.systemui.plugins.ActivityStarter.OnDismissAction;
 import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_UNLOCK_FADING;
 import static com.android.systemui.statusbar.phone.BiometricUnlockController.MODE_WAKE_AND_UNLOCK;
@@ -92,6 +96,8 @@
     private static String TAG = "StatusBarKeyguardViewManager";
 
     protected final Context mContext;
+    private final ConfigurationController mConfigurationController;
+    private final NavigationModeController mNavigationModeController;
     private final NotificationShadeWindowController mNotificationShadeWindowController;
     private final BouncerExpansionCallback mExpansionCallback = new BouncerExpansionCallback() {
         @Override
@@ -205,21 +211,14 @@
         mContext = context;
         mViewMediatorCallback = callback;
         mLockPatternUtils = lockPatternUtils;
+        mConfigurationController = configurationController;
+        mNavigationModeController = navigationModeController;
         mNotificationShadeWindowController = notificationShadeWindowController;
         mKeyguardStateController = keyguardStateController;
         mMediaManager = notificationMediaManager;
         mKeyguardUpdateManager = keyguardUpdateMonitor;
-        mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback);
         mStatusBarStateController = sysuiStatusBarStateController;
-        mStatusBarStateController.addCallback(this);
-        configurationController.addCallback(this);
-        mGesturalNav = QuickStepContract.isGesturalMode(
-                navigationModeController.addListener(this));
         mDockManager = dockManager;
-        if (mDockManager != null) {
-            mDockManager.addListener(mDockEventListener);
-            mIsDocked = mDockManager.isDocked();
-        }
     }
 
     public void registerStatusBar(StatusBar statusBar,
@@ -243,6 +242,20 @@
         notificationPanelViewController.addExpansionListener(this);
         mBypassController = bypassController;
         mNotificationContainer = notificationContainer;
+
+        registerListeners();
+    }
+
+    private void registerListeners() {
+        mKeyguardUpdateManager.registerCallback(mUpdateMonitorCallback);
+        mStatusBarStateController.addCallback(this);
+        mConfigurationController.addCallback(this);
+        mGesturalNav = QuickStepContract.isGesturalMode(
+                mNavigationModeController.addListener(this));
+        if (mDockManager != null) {
+            mDockManager.addListener(mDockEventListener);
+            mIsDocked = mDockManager.isDocked();
+        }
     }
 
     @Override
@@ -789,7 +802,12 @@
     private Runnable mMakeNavigationBarVisibleRunnable = new Runnable() {
         @Override
         public void run() {
-            mStatusBar.getNavigationBarView().getRootView().setVisibility(View.VISIBLE);
+            if (ViewRootImpl.sNewInsetsMode == NEW_INSETS_MODE_FULL) {
+                mStatusBar.getNotificationShadeWindowView().getWindowInsetsController()
+                        .show(navigationBars());
+            } else {
+                mStatusBar.getNavigationBarView().getRootView().setVisibility(View.VISIBLE);
+            }
         }
     };
 
@@ -856,7 +874,12 @@
                 }
             } else {
                 mContainer.removeCallbacks(mMakeNavigationBarVisibleRunnable);
-                mStatusBar.getNavigationBarView().getRootView().setVisibility(View.GONE);
+                if (sNewInsetsMode == NEW_INSETS_MODE_FULL) {
+                    mStatusBar.getNotificationShadeWindowView().getWindowInsetsController()
+                            .hide(navigationBars());
+                } else {
+                    mStatusBar.getNavigationBarView().getRootView().setVisibility(View.GONE);
+                }
             }
         }
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
index 7615bf8..15a0e08 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarModule.java
@@ -46,9 +46,7 @@
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.stackdivider.Divider;
 import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NavigationBarController;
-import com.android.systemui.statusbar.NotificationListener;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -61,12 +59,10 @@
 import com.android.systemui.statusbar.notification.BypassHeadsUpNotifier;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationAlertingManager;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
-import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.phone.dagger.StatusBarComponent;
@@ -77,7 +73,6 @@
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
 import com.android.systemui.volume.VolumeComponent;
@@ -105,7 +100,7 @@
     @Singleton
     static StatusBar provideStatusBar(
             Context context,
-            FeatureFlags featureFlags,
+            NotificationsController notificationsController,
             LightBarController lightBarController,
             AutoHideController autoHideController,
             KeyguardUpdateMonitor keyguardUpdateMonitor,
@@ -117,13 +112,11 @@
             HeadsUpManagerPhone headsUpManagerPhone,
             DynamicPrivacyController dynamicPrivacyController,
             BypassHeadsUpNotifier bypassHeadsUpNotifier,
-            Lazy<NotifPipelineInitializer> newNotifPipeline,
             FalsingManager falsingManager,
             BroadcastDispatcher broadcastDispatcher,
             RemoteInputQuickSettingsDisabler remoteInputQuickSettingsDisabler,
             NotificationGutsManager notificationGutsManager,
             NotificationLogger notificationLogger,
-            NotificationEntryManager notificationEntryManager,
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             NotificationViewHierarchyManager notificationViewHierarchyManager,
             KeyguardViewMediator keyguardViewMediator,
@@ -144,12 +137,10 @@
             VibratorHelper vibratorHelper,
             BubbleController bubbleController,
             NotificationGroupManager groupManager,
-            NotificationGroupAlertTransferHelper groupAlertTransferHelper,
             VisualStabilityManager visualStabilityManager,
             DeviceProvisionedController deviceProvisionedController,
             NavigationBarController navigationBarController,
             Lazy<AssistManager> assistManagerLazy,
-            NotificationListener notificationListener,
             ConfigurationController configurationController,
             NotificationShadeWindowController notificationShadeWindowController,
             LockscreenLockIconController lockscreenLockIconController,
@@ -167,7 +158,6 @@
             Optional<Recents> recentsOptional,
             Provider<StatusBarComponent.Builder> statusBarComponentBuilder,
             PluginManager pluginManager,
-            RemoteInputUriController remoteInputUriController,
             Optional<Divider> dividerOptional,
             LightsOutNotifController lightsOutNotifController,
             StatusBarNotificationActivityStarter.Builder
@@ -183,11 +173,10 @@
             KeyguardDismissUtil keyguardDismissUtil,
             ExtensionController extensionController,
             UserInfoControllerImpl userInfoControllerImpl,
-            NotificationRowBinderImpl notificationRowBinder,
             DismissCallbackRegistry dismissCallbackRegistry) {
         return new StatusBar(
                 context,
-                featureFlags,
+                notificationsController,
                 lightBarController,
                 autoHideController,
                 keyguardUpdateMonitor,
@@ -199,13 +188,11 @@
                 headsUpManagerPhone,
                 dynamicPrivacyController,
                 bypassHeadsUpNotifier,
-                newNotifPipeline,
                 falsingManager,
                 broadcastDispatcher,
                 remoteInputQuickSettingsDisabler,
                 notificationGutsManager,
                 notificationLogger,
-                notificationEntryManager,
                 notificationInterruptionStateProvider,
                 notificationViewHierarchyManager,
                 keyguardViewMediator,
@@ -226,12 +213,10 @@
                 vibratorHelper,
                 bubbleController,
                 groupManager,
-                groupAlertTransferHelper,
                 visualStabilityManager,
                 deviceProvisionedController,
                 navigationBarController,
                 assistManagerLazy,
-                notificationListener,
                 configurationController,
                 notificationShadeWindowController,
                 lockscreenLockIconController,
@@ -249,7 +234,6 @@
                 recentsOptional,
                 statusBarComponentBuilder,
                 pluginManager,
-                remoteInputUriController,
                 dividerOptional,
                 lightsOutNotifController,
                 statusBarNotificationActivityStarterBuilder,
@@ -264,7 +248,6 @@
                 keyguardDismissUtil,
                 extensionController,
                 userInfoControllerImpl,
-                notificationRowBinder,
                 dismissCallbackRegistry);
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
index 0f3b5db..e1a20b6 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarter.java
@@ -17,6 +17,7 @@
 package com.android.systemui.statusbar.phone;
 
 import static android.service.notification.NotificationListenerService.REASON_CLICK;
+import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
 
 import static com.android.systemui.statusbar.phone.StatusBar.getActivityOptions;
 
@@ -35,6 +36,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.service.dreams.IDreamManager;
+import android.service.notification.NotificationStats;
 import android.service.notification.StatusBarNotification;
 import android.text.TextUtils;
 import android.util.EventLog;
@@ -56,6 +58,7 @@
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.CommandQueue;
+import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationPresenter;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -66,7 +69,11 @@
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.policy.HeadsUpUtil;
@@ -97,6 +104,9 @@
     private final KeyguardStateController mKeyguardStateController;
     private final ActivityStarter mActivityStarter;
     private final NotificationEntryManager mEntryManager;
+    private final NotifPipeline mNotifPipeline;
+    private final NotifCollection mNotifCollection;
+    private final FeatureFlags mFeatureFlags;
     private final StatusBarStateController mStatusBarStateController;
     private final NotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
     private final MetricsLogger mMetricsLogger;
@@ -135,7 +145,9 @@
             NotificationInterruptionStateProvider notificationInterruptionStateProvider,
             MetricsLogger metricsLogger, LockPatternUtils lockPatternUtils,
             Handler mainThreadHandler, Handler backgroundHandler, Executor uiBgExecutor,
-            ActivityIntentHelper activityIntentHelper, BubbleController bubbleController) {
+            ActivityIntentHelper activityIntentHelper, BubbleController bubbleController,
+            FeatureFlags featureFlags, NotifPipeline notifPipeline,
+            NotifCollection notifCollection) {
         mContext = context;
         mNotificationPanel = panel;
         mPresenter = presenter;
@@ -162,12 +174,25 @@
         mLockPatternUtils = lockPatternUtils;
         mBackgroundHandler = backgroundHandler;
         mUiBgExecutor = uiBgExecutor;
-        mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
-            @Override
-            public void onPendingEntryAdded(NotificationEntry entry) {
-                handleFullScreenIntent(entry);
-            }
-        });
+        mFeatureFlags = featureFlags;
+        mNotifPipeline = notifPipeline;
+        mNotifCollection = notifCollection;
+        if (!mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            mEntryManager.addNotificationEntryListener(new NotificationEntryListener() {
+                @Override
+                public void onPendingEntryAdded(NotificationEntry entry) {
+                    handleFullScreenIntent(entry);
+                }
+            });
+        } else {
+            mNotifPipeline.addCollectionListener(new NotifCollectionListener() {
+                @Override
+                public void onEntryAdded(NotificationEntry entry) {
+                    handleFullScreenIntent(entry);
+                }
+            });
+        }
+
         mStatusBarRemoteInputCallback = remoteInputCallback;
         mMainThreadHandler = mainThreadHandler;
         mActivityIntentHelper = activityIntentHelper;
@@ -246,15 +271,14 @@
             mHeadsUpManager.removeNotification(sbn.getKey(),
                     true /* releaseImmediately */);
         }
-        StatusBarNotification parentToCancel = null;
+        NotificationEntry parentToCancel = null;
         if (shouldAutoCancel(sbn) && mGroupManager.isOnlyChildInGroup(sbn)) {
-            StatusBarNotification summarySbn =
-                    mGroupManager.getLogicalGroupSummary(sbn).getSbn();
-            if (shouldAutoCancel(summarySbn)) {
+            NotificationEntry summarySbn = mGroupManager.getLogicalGroupSummary(sbn);
+            if (shouldAutoCancel(summarySbn.getSbn())) {
                 parentToCancel = summarySbn;
             }
         }
-        final StatusBarNotification parentToCancelFinal = parentToCancel;
+        final NotificationEntry parentToCancelFinal = parentToCancel;
         final Runnable runnable = () -> handleNotificationClickAfterPanelCollapsed(
                 sbn, row, controller, intent,
                 isActivityIntent, wasOccluded, parentToCancelFinal);
@@ -279,7 +303,7 @@
             PendingIntent intent,
             boolean isActivityIntent,
             boolean wasOccluded,
-            StatusBarNotification parentToCancelFinal) {
+            NotificationEntry parentToCancelFinal) {
         String notificationKey = sbn.getKey();
         try {
             // The intent we are sending is for the application, which
@@ -330,7 +354,7 @@
             collapseOnMainThread();
         }
 
-        final int count = mEntryManager.getActiveNotificationsCount();
+        final int count = getVisibleNotificationsCount();
         final int rank = entry.getRanking().getRank();
         NotificationVisibility.NotificationLocation location =
                 NotificationLogger.getNotificationLocation(entry);
@@ -341,15 +365,19 @@
         } catch (RemoteException ex) {
             // system process is dead if we're here.
         }
+
         if (!isBubble) {
             if (parentToCancelFinal != null) {
+                // TODO: (b/145659174) remove - this cancels the parent if the notification clicked
+                // on will auto-cancel and is the only child in the group. This won't be
+                // necessary in the new pipeline due to group pruning in ShadeListBuilder.
                 removeNotification(parentToCancelFinal);
             }
             if (shouldAutoCancel(sbn)
                     || mRemoteInputManager.isNotificationKeptForRemoteInputHistory(
                     notificationKey)) {
                 // Automatically remove all notifications that we may have kept around longer
-                removeNotification(sbn);
+                removeNotification(row.getEntry());
             }
         }
         mIsCollapsingToShowActivityOverLockscreen = false;
@@ -482,11 +510,10 @@
         return entry.shouldSuppressFullScreenIntent();
     }
 
-    private void removeNotification(StatusBarNotification notification) {
+    private void removeNotification(NotificationEntry entry) {
         // We have to post it to the UI thread for synchronization
         mMainThreadHandler.post(() -> {
-            Runnable removeRunnable =
-                    () -> mEntryManager.performRemoveNotification(notification, REASON_CLICK);
+            Runnable removeRunnable = createRemoveRunnable(entry);
             if (mPresenter.isCollapsing()) {
                 // To avoid lags we're only performing the remove
                 // after the shade was collapsed
@@ -497,6 +524,53 @@
         });
     }
 
+    // --------------------- NotificationEntryManager/NotifPipeline methods ------------------------
+
+    private int getVisibleNotificationsCount() {
+        if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            return mNotifPipeline.getShadeListCount();
+        } else {
+            return mEntryManager.getActiveNotificationsCount();
+        }
+    }
+
+    private Runnable createRemoveRunnable(NotificationEntry entry) {
+        if (mFeatureFlags.isNewNotifPipelineRenderingEnabled()) {
+            return new Runnable() {
+                @Override
+                public void run() {
+                    // see NotificationLogger#logNotificationClear
+                    int dismissalSurface = NotificationStats.DISMISSAL_SHADE;
+                    if (mHeadsUpManager.isAlerting(entry.getKey())) {
+                        dismissalSurface = NotificationStats.DISMISSAL_PEEK;
+                    } else if (mNotificationPanel.hasPulsingNotifications()) {
+                        dismissalSurface = NotificationStats.DISMISSAL_AOD;
+                    }
+
+                    mNotifCollection.dismissNotification(
+                            entry,
+                            new DismissedByUserStats(
+                                    dismissalSurface,
+                                    DISMISS_SENTIMENT_NEUTRAL,
+                                    NotificationVisibility.obtain(
+                                            entry.getKey(),
+                                            entry.getRanking().getRank(),
+                                            mNotifPipeline.getShadeListCount(),
+                                            true,
+                                            NotificationLogger.getNotificationLocation(entry))
+                            ));
+                }
+            };
+        } else {
+            return new Runnable() {
+                @Override
+                public void run() {
+                    mEntryManager.performRemoveNotification(entry.getSbn(), REASON_CLICK);
+                }
+            };
+        }
+    }
+
     /**
      * Public builder for {@link StatusBarNotificationActivityStarter}.
      */
@@ -506,6 +580,9 @@
         private final CommandQueue mCommandQueue;
         private final Lazy<AssistManager> mAssistManagerLazy;
         private final NotificationEntryManager mEntryManager;
+        private final FeatureFlags mFeatureFlags;
+        private final NotifPipeline mNotifPipeline;
+        private final NotifCollection mNotifCollection;
         private final HeadsUpManagerPhone mHeadsUpManager;
         private final ActivityStarter mActivityStarter;
         private final IStatusBarService mStatusBarService;
@@ -557,7 +634,10 @@
                 @UiBackground Executor uiBgExecutor,
                 ActivityIntentHelper activityIntentHelper,
                 BubbleController bubbleController,
-                ShadeController shadeController) {
+                ShadeController shadeController,
+                FeatureFlags featureFlags,
+                NotifPipeline notifPipeline,
+                NotifCollection notifCollection) {
             mContext = context;
             mCommandQueue = commandQueue;
             mAssistManagerLazy = assistManagerLazy;
@@ -583,6 +663,9 @@
             mActivityIntentHelper = activityIntentHelper;
             mBubbleController = bubbleController;
             mShadeController = shadeController;
+            mFeatureFlags = featureFlags;
+            mNotifPipeline = notifPipeline;
+            mNotifCollection = notifCollection;
         }
 
         /** Sets the status bar to use as {@link StatusBar}. */
@@ -608,8 +691,6 @@
             return this;
         }
 
-
-
         public StatusBarNotificationActivityStarter build() {
             return new StatusBarNotificationActivityStarter(mContext,
                     mCommandQueue, mAssistManagerLazy,
@@ -638,7 +719,10 @@
                     mBackgroundHandler,
                     mUiBgExecutor,
                     mActivityIntentHelper,
-                    mBubbleController);
+                    mBubbleController,
+                    mFeatureFlags,
+                    mNotifPipeline,
+                    mNotifCollection);
         }
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
index 1336b2d..2485513 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenter.java
@@ -141,7 +141,6 @@
             ActivityLaunchAnimator activityLaunchAnimator,
             DynamicPrivacyController dynamicPrivacyController,
             NotificationAlertingManager notificationAlertingManager,
-            NotificationRowBinderImpl notificationRowBinder,
             KeyguardStateController keyguardStateController,
             KeyguardIndicationController keyguardIndicationController,
             StatusBar statusBar,
@@ -216,8 +215,6 @@
             mEntryManager.addNotificationLifetimeExtender(mGutsManager);
             mEntryManager.addNotificationLifetimeExtenders(
                     remoteInputManager.getLifetimeExtenders());
-            notificationRowBinder.setUpWithPresenter(this, notifListContainer, mHeadsUpManager,
-                    this);
             mNotificationInterruptionStateProvider.setUpWithPresenter(
                     this, mHeadsUpManager, this::canHeadsUp);
             mLockscreenUserManager.setUpWithPresenter(this);
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
index d2e9262..690d573 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBarSignalPolicy.java
@@ -177,8 +177,10 @@
 
     @Override
     public void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
-            int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
-            String description, boolean isWide, int subId, boolean roaming) {
+            int qsType, boolean activityIn, boolean activityOut,
+            CharSequence typeContentDescription,
+            CharSequence typeContentDescriptionHtml, CharSequence description,
+            boolean isWide, int subId, boolean roaming) {
         MobileIconState state = getState(subId);
         if (state == null) {
             return;
@@ -387,7 +389,7 @@
         public int typeId;
         public boolean roaming;
         public boolean needsLeadingPadding;
-        public String typeContentDescription;
+        public CharSequence typeContentDescription;
 
         private MobileIconState(int subId) {
             super();
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
index e1bb19a..97d348b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/CallbackHandler.java
@@ -111,30 +111,25 @@
     public void setWifiIndicators(final boolean enabled, final IconState statusIcon,
             final IconState qsIcon, final boolean activityIn, final boolean activityOut,
             final String description, boolean isTransient, String secondaryLabel) {
-        post(new Runnable() {
-            @Override
-            public void run() {
-                for (SignalCallback callback : mSignalCallbacks) {
-                    callback.setWifiIndicators(enabled, statusIcon, qsIcon, activityIn, activityOut,
-                            description, isTransient, secondaryLabel);
-                }
+        post(() -> {
+            for (SignalCallback callback : mSignalCallbacks) {
+                callback.setWifiIndicators(enabled, statusIcon, qsIcon, activityIn, activityOut,
+                        description, isTransient, secondaryLabel);
             }
         });
     }
 
     @Override
     public void setMobileDataIndicators(final IconState statusIcon, final IconState qsIcon,
-            final int statusType, final int qsType,final boolean activityIn,
-            final boolean activityOut, final String typeContentDescription,
-            final String description, final boolean isWide, final int subId, boolean roaming) {
-        post(new Runnable() {
-            @Override
-            public void run() {
-                for (SignalCallback signalCluster : mSignalCallbacks) {
-                    signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType,
-                            activityIn, activityOut, typeContentDescription, description, isWide,
-                            subId, roaming);
-                }
+            final int statusType, final int qsType, final boolean activityIn,
+            final boolean activityOut, final CharSequence typeContentDescription,
+            CharSequence typeContentDescriptionHtml, final CharSequence description,
+            final boolean isWide, final int subId, boolean roaming) {
+        post(() -> {
+            for (SignalCallback signalCluster : mSignalCallbacks) {
+                signalCluster.setMobileDataIndicators(statusIcon, qsIcon, statusType, qsType,
+                        activityIn, activityOut, typeContentDescription,
+                        typeContentDescriptionHtml, description, isWide, subId, roaming);
             }
         });
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java
index 159bd41..4fbf5ff 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/EthernetSignalController.java
@@ -49,7 +49,7 @@
     @Override
     public void notifyListeners(SignalCallback callback) {
         boolean ethernetVisible = mCurrentState.connected;
-        String contentDescription = getStringIfExists(getContentDescription());
+        String contentDescription = getTextIfExists(getContentDescription()).toString();
 
         // TODO: wire up data transfer using WifiSignalPoller.
         callback.setEthernetIndicators(new IconState(ethernetVisible, getCurrentIconId(),
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
index 830b50e..8231f8b 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotController.java
@@ -30,5 +30,6 @@
 
     interface Callback {
         void onHotspotChanged(boolean enabled, int numDevices);
+        default void onHotspotAvailabilityChanged(boolean available) {}
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
index df9c3f4..d090404 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/HotspotControllerImpl.java
@@ -19,6 +19,7 @@
 import android.app.ActivityManager;
 import android.content.Context;
 import android.net.ConnectivityManager;
+import android.net.TetheringManager;
 import android.net.wifi.WifiClient;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
@@ -26,6 +27,8 @@
 import android.os.UserManager;
 import android.util.Log;
 
+import com.android.internal.util.ConcurrentUtils;
+import com.android.systemui.dagger.qualifiers.Background;
 import com.android.systemui.dagger.qualifiers.Main;
 
 import java.io.FileDescriptor;
@@ -46,36 +49,63 @@
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
     private final ArrayList<Callback> mCallbacks = new ArrayList<>();
-    private final ConnectivityManager mConnectivityManager;
+    private final TetheringManager mTetheringManager;
     private final WifiManager mWifiManager;
     private final Handler mMainHandler;
     private final Context mContext;
 
     private int mHotspotState;
     private volatile int mNumConnectedDevices;
+    private volatile boolean mIsTetheringSupported;
+    private volatile boolean mHasTetherableWifiRegexs;
     private boolean mWaitingForTerminalState;
 
+    private TetheringManager.TetheringEventCallback mTetheringCallback =
+            new TetheringManager.TetheringEventCallback() {
+                @Override
+                public void onTetheringSupported(boolean supported) {
+                    super.onTetheringSupported(supported);
+                    if (mIsTetheringSupported != supported) {
+                        mIsTetheringSupported = supported;
+                        fireHotspotAvailabilityChanged();
+                    }
+                }
+
+                @Override
+                public void onTetherableInterfaceRegexpsChanged(
+                        TetheringManager.TetheringInterfaceRegexps reg) {
+                    super.onTetherableInterfaceRegexpsChanged(reg);
+                    final boolean newValue = reg.getTetherableWifiRegexs().size() != 0;
+                    if (mHasTetherableWifiRegexs != newValue) {
+                        mHasTetherableWifiRegexs = newValue;
+                        fireHotspotAvailabilityChanged();
+                    }
+                }
+            };
+
     /**
      * Controller used to retrieve information related to a hotspot.
      */
     @Inject
-    public HotspotControllerImpl(Context context, @Main Handler mainHandler) {
+    public HotspotControllerImpl(Context context, @Main Handler mainHandler,
+            @Background Handler backgroundHandler) {
         mContext = context;
-        mConnectivityManager =
-                (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);
+        mTetheringManager = context.getSystemService(TetheringManager.class);
         mWifiManager = (WifiManager) context.getSystemService(Context.WIFI_SERVICE);
         mMainHandler = mainHandler;
+        mTetheringManager.registerTetheringEventCallback(
+                new HandlerExecutor(backgroundHandler), mTetheringCallback);
     }
 
     @Override
     public boolean isHotspotSupported() {
-        return mConnectivityManager.isTetheringSupported()
-                && mConnectivityManager.getTetherableWifiRegexs().length != 0
+        return mIsTetheringSupported && mHasTetherableWifiRegexs
                 && UserManager.get(mContext).isUserAdmin(ActivityManager.getCurrentUser());
     }
 
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         pw.println("HotspotController state:");
+        pw.print("  available="); pw.println(isHotspotSupported());
         pw.print("  mHotspotState="); pw.println(stateToString(mHotspotState));
         pw.print("  mNumConnectedDevices="); pw.println(mNumConnectedDevices);
         pw.print("  mWaitingForTerminalState="); pw.println(mWaitingForTerminalState);
@@ -152,17 +182,18 @@
         if (enabled) {
             mWaitingForTerminalState = true;
             if (DEBUG) Log.d(TAG, "Starting tethering");
-            mConnectivityManager.startTethering(ConnectivityManager.TETHERING_WIFI, false,
-                    new ConnectivityManager.OnStartTetheringCallback() {
+            mTetheringManager.startTethering(ConnectivityManager.TETHERING_WIFI,
+                    ConcurrentUtils.DIRECT_EXECUTOR,
+                    new TetheringManager.StartTetheringCallback() {
                         @Override
-                        public void onTetheringFailed() {
+                        public void onTetheringFailed(final int result) {
                             if (DEBUG) Log.d(TAG, "onTetheringFailed");
                             maybeResetSoftApState();
                             fireHotspotChangedCallback();
                         }
                     });
         } else {
-            mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+            mTetheringManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
         }
     }
 
@@ -177,10 +208,25 @@
      * (as it can be blocked).
      */
     private void fireHotspotChangedCallback() {
+        List<Callback> list;
         synchronized (mCallbacks) {
-            for (Callback callback : mCallbacks) {
-                callback.onHotspotChanged(isHotspotEnabled(), mNumConnectedDevices);
-            }
+            list = new ArrayList<>(mCallbacks);
+        }
+        for (Callback callback : list) {
+            callback.onHotspotChanged(isHotspotEnabled(), mNumConnectedDevices);
+        }
+    }
+
+    /**
+     * Sends a hotspot available changed callback.
+     */
+    private void fireHotspotAvailabilityChanged() {
+        List<Callback> list;
+        synchronized (mCallbacks) {
+            list = new ArrayList<>(mCallbacks);
+        }
+        for (Callback callback : list) {
+            callback.onHotspotAvailabilityChanged(isHotspotSupported());
         }
     }
 
@@ -206,7 +252,7 @@
         switch (mHotspotState) {
             case WifiManager.WIFI_AP_STATE_FAILED:
                 // TODO(b/110697252): must be called to reset soft ap state after failure
-                mConnectivityManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
+                mTetheringManager.stopTethering(ConnectivityManager.TETHERING_WIFI);
                 // Fall through
             case WifiManager.WIFI_AP_STATE_ENABLED:
             case WifiManager.WIFI_AP_STATE_DISABLED:
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserDetailItemView.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserDetailItemView.java
new file mode 100644
index 0000000..07433e1
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/KeyguardUserDetailItemView.java
@@ -0,0 +1,51 @@
+/*
+ * 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.systemui.statusbar.policy;
+
+import android.content.Context;
+import android.util.AttributeSet;
+
+import com.android.systemui.R;
+import com.android.systemui.qs.tiles.UserDetailItemView;
+
+/**
+ * Displays a user on the keyguard user switcher.
+ */
+public class KeyguardUserDetailItemView extends UserDetailItemView {
+
+    public KeyguardUserDetailItemView(Context context) {
+        this(context, null);
+    }
+
+    public KeyguardUserDetailItemView(Context context, AttributeSet attrs) {
+        this(context, attrs, 0);
+    }
+
+    public KeyguardUserDetailItemView(Context context, AttributeSet attrs, int defStyleAttr) {
+        this(context, attrs, defStyleAttr, 0);
+    }
+
+    public KeyguardUserDetailItemView(Context context, AttributeSet attrs, int defStyleAttr,
+            int defStyleRes) {
+        super(context, attrs, defStyleAttr, defStyleRes);
+    }
+
+    @Override
+    protected int getFontSizeDimen() {
+        return R.dimen.kg_user_switcher_text_size;
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
index 3a1feaa..f6e1681 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/MobileSignalController.java
@@ -26,10 +26,12 @@
 import android.os.Looper;
 import android.os.Message;
 import android.provider.Settings.Global;
+import android.telephony.AccessNetworkConstants;
 import android.telephony.Annotation;
 import android.telephony.CdmaEriInformation;
 import android.telephony.CellSignalStrength;
 import android.telephony.CellSignalStrengthCdma;
+import android.telephony.DataSpecificRegistrationInfo;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
@@ -37,6 +39,7 @@
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.TelephonyManager;
+import android.text.Html;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -112,9 +115,10 @@
         mDefaults = defaults;
         mSubscriptionInfo = info;
         mPhoneStateListener = new MobilePhoneStateListener((new Handler(receiverLooper))::post);
-        mNetworkNameSeparator = getStringIfExists(R.string.status_bar_network_name_separator);
-        mNetworkNameDefault = getStringIfExists(
-                com.android.internal.R.string.lockscreen_carrier_default);
+        mNetworkNameSeparator = getTextIfExists(R.string.status_bar_network_name_separator)
+                .toString();
+        mNetworkNameDefault = getTextIfExists(
+                com.android.internal.R.string.lockscreen_carrier_default).toString();
 
         mapIconSets();
 
@@ -151,10 +155,6 @@
         updateTelephony();
     }
 
-    public int getDataContentDescription() {
-        return getIcons().mDataContentDescription;
-    }
-
     public void setAirplaneMode(boolean airplaneMode) {
         mCurrentState.airplaneMode = airplaneMode;
         notifyListenersIfNecessary();
@@ -321,9 +321,9 @@
 
     private int getNumLevels() {
         if (mInflateSignalStrengths) {
-            return SignalStrength.NUM_SIGNAL_STRENGTH_BINS + 1;
+            return CellSignalStrength.getNumSignalStrengthLevels() + 1;
         }
-        return SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+        return CellSignalStrength.getNumSignalStrengthLevels();
     }
 
     @Override
@@ -358,8 +358,14 @@
     public void notifyListeners(SignalCallback callback) {
         MobileIconGroup icons = getIcons();
 
-        String contentDescription = getStringIfExists(getContentDescription());
-        String dataContentDescription = getStringIfExists(icons.mDataContentDescription);
+        String contentDescription = getTextIfExists(getContentDescription()).toString();
+        CharSequence dataContentDescriptionHtml = getTextIfExists(icons.mDataContentDescription);
+
+        //TODO: Hacky
+        // The data content description can sometimes be shown in a text view and might come to us
+        // as HTML. Strip any styling here so that listeners don't have to care
+        CharSequence dataContentDescription = Html.fromHtml(
+                dataContentDescriptionHtml.toString(), 0).toString();
         if (mCurrentState.inetCondition == 0) {
             dataContentDescription = mContext.getString(R.string.data_connection_no_internet);
         }
@@ -374,7 +380,7 @@
 
         int qsTypeIcon = 0;
         IconState qsIcon = null;
-        String description = null;
+        CharSequence description = null;
         // Only send data sim callbacks to QS.
         if (mCurrentState.dataSim) {
             qsTypeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.mQsDataType : 0;
@@ -391,8 +397,9 @@
         showDataIcon &= mCurrentState.isDefault || dataDisabled;
         int typeIcon = (showDataIcon || mConfig.alwaysShowDataRatIcon) ? icons.mDataType : 0;
         callback.setMobileDataIndicators(statusIcon, qsIcon, typeIcon, qsTypeIcon,
-                activityIn, activityOut, dataContentDescription, description, icons.mIsWide,
-                mSubscriptionInfo.getSubscriptionId(), mCurrentState.roaming);
+                activityIn, activityOut, dataContentDescription, dataContentDescriptionHtml,
+                description, icons.mIsWide, mSubscriptionInfo.getSubscriptionId(),
+                mCurrentState.roaming);
     }
 
     @Override
@@ -616,10 +623,19 @@
         notifyListenersIfNecessary();
     }
 
+    private int getNrState(ServiceState serviceState) {
+        NetworkRegistrationInfo nri = serviceState.getNetworkRegistrationInfo(
+                NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+        if (nri != null) {
+            return nri.getNrState();
+        }
+        return NetworkRegistrationInfo.NR_STATE_NONE;
+    }
+
     private MobileIconGroup getNr5GIconGroup() {
         if (mServiceState == null) return null;
 
-        int nrState = mServiceState.getNrState();
+        int nrState = getNrState(mServiceState);
         if (nrState == NetworkRegistrationInfo.NR_STATE_CONNECTED) {
             // Check if the NR 5G is using millimeter wave and the icon is config.
             if (mServiceState.getNrFrequencyRange() == ServiceState.FREQUENCY_RANGE_MMWAVE) {
@@ -772,12 +788,24 @@
             if (mDataNetType == TelephonyManager.NETWORK_TYPE_LTE) {
                 if (isCarrierSpecificDataIcon()) {
                     mCAPlus = true;
-                } else if (mServiceState != null && mServiceState.isUsingCarrierAggregation()) {
+                } else if (mServiceState != null && isUsingCarrierAggregation(mServiceState)) {
                     mCA = true;
                 }
             }
         }
 
+        private boolean isUsingCarrierAggregation(ServiceState serviceState) {
+            NetworkRegistrationInfo nri = serviceState.getNetworkRegistrationInfo(
+                    NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
+            if (nri != null) {
+                DataSpecificRegistrationInfo dsri = nri.getDataSpecificInfo();
+                if (dsri != null) {
+                    return dsri.isUsingCarrierAggregation();
+                }
+            }
+            return false;
+        }
+
         @Override
         public void onDataActivity(int direction) {
             if (DEBUG) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
index 71db618..95a9772 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkController.java
@@ -44,6 +44,7 @@
     void addEmergencyListener(EmergencyListener listener);
     void removeEmergencyListener(EmergencyListener listener);
     boolean hasEmergencyCryptKeeperText();
+
     boolean isRadioOn();
 
     public interface SignalCallback {
@@ -51,10 +52,31 @@
                 boolean activityIn, boolean activityOut, String description, boolean isTransient,
                 String statusLabel) {}
 
+        /**
+         * Callback for listeners to be able to update the state of any UI tracking connectivity
+         *  @param statusIcon the icon that should be shown in the status bar
+         * @param qsIcon the icon to show in Quick Settings
+         * @param statusType the resId of the data type icon (e.g. LTE) to show in the status bar
+         * @param qsType similar to above, the resId of the data type icon to show in Quick Settings
+         * @param activityIn indicates whether there is inbound activity
+         * @param activityOut indicates outbound activity
+         * @param typeContentDescription the contentDescription of the data type
+         * @param typeContentDescriptionHtml the (possibly HTML-styled) contentDescription of the
+         *                                   data type. Suitable for display
+         * @param description description of the network (usually just the network name)
+         * @param isWide //TODO: unused?
+         * @param subId subscription ID for which to update the UI
+         * @param roaming indicates roaming
+         */
         default void setMobileDataIndicators(IconState statusIcon, IconState qsIcon, int statusType,
-                int qsType, boolean activityIn, boolean activityOut, String typeContentDescription,
-                String description, boolean isWide, int subId, boolean roaming) {}
+                int qsType, boolean activityIn, boolean activityOut,
+                CharSequence typeContentDescription,
+                CharSequence typeContentDescriptionHtml, CharSequence description,
+                boolean isWide, int subId, boolean roaming) {
+        }
+
         default void setSubs(List<SubscriptionInfo> subs) {}
+
         default void setNoSims(boolean show, boolean simDetected) {}
 
         default void setEthernetIndicators(IconState icon) {}
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
index 6dd1133..4f382e7 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/NetworkControllerImpl.java
@@ -41,9 +41,9 @@
 import android.os.PersistableBundle;
 import android.provider.Settings;
 import android.telephony.CarrierConfigManager;
+import android.telephony.CellSignalStrength;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
-import android.telephony.SignalStrength;
 import android.telephony.SubscriptionInfo;
 import android.telephony.SubscriptionManager;
 import android.telephony.SubscriptionManager.OnSubscriptionsChangedListener;
@@ -56,7 +56,6 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.telephony.TelephonyIntents;
 import com.android.settingslib.net.DataUsageController;
 import com.android.systemui.DemoMode;
 import com.android.systemui.Dumpable;
@@ -605,7 +604,7 @@
     @VisibleForTesting
     void doUpdateMobileControllers() {
         List<SubscriptionInfo> subscriptions = mSubscriptionManager
-                .getActiveSubscriptionInfoList(false);
+                .getActiveAndHiddenSubscriptionInfoList();
         if (subscriptions == null) {
             subscriptions = Collections.emptyList();
         }
@@ -1017,6 +1016,7 @@
                             datatype.equals("4g") ? TelephonyIcons.FOUR_G :
                             datatype.equals("4g+") ? TelephonyIcons.FOUR_G_PLUS :
                             datatype.equals("5g") ? TelephonyIcons.NR_5G :
+                            datatype.equals("5ge") ? TelephonyIcons.LTE_CA_5G_E :
                             datatype.equals("5g+") ? TelephonyIcons.NR_5G_PLUS :
                             datatype.equals("e") ? TelephonyIcons.E :
                             datatype.equals("g") ? TelephonyIcons.G :
@@ -1035,7 +1035,7 @@
                 if (level != null) {
                     controller.getState().level = level.equals("null") ? -1
                             : Math.min(Integer.parseInt(level),
-                                    SignalStrength.NUM_SIGNAL_STRENGTH_BINS);
+                                    CellSignalStrength.getNumSignalStrengthLevels());
                     controller.getState().connected = controller.getState().level >= 0;
                 }
                 if (args.containsKey("inflate")) {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
index fc6e5e2..749b56c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/SignalController.java
@@ -17,6 +17,7 @@
 
 import static com.android.systemui.statusbar.policy.NetworkControllerImpl.TAG;
 
+import android.annotation.NonNull;
 import android.content.Context;
 import android.util.Log;
 
@@ -166,8 +167,8 @@
     /**
      * Returns the resource if resId is not 0, and an empty string otherwise.
      */
-    protected String getStringIfExists(int resId) {
-        return resId != 0 ? mContext.getString(resId) : "";
+    @NonNull CharSequence getTextIfExists(int resId) {
+        return resId != 0 ? mContext.getText(resId) : "";
     }
 
     protected I getIcons() {
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
index c22ff8b..d9591cf 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/TelephonyIcons.java
@@ -214,7 +214,7 @@
             0,
             0,
             AccessibilityContentDescriptions.PHONE_SIGNAL_STRENGTH[0],
-            R.string.data_connection_5ge,
+            R.string.data_connection_5ge_html,
             TelephonyIcons.ICON_5G_E,
             true);
 
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
index 2907cd4..8dfcb0a 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/UserSwitcherController.java
@@ -134,6 +134,8 @@
         mBroadcastDispatcher.registerReceiver(
                 mReceiver, filter, null /* handler */, UserHandle.SYSTEM);
 
+        mSimpleUserSwitcher = shouldUseSimpleUserSwitcher();
+
         mSecondaryUserServiceIntent = new Intent(context, SystemUISecondaryUserService.class);
 
         filter = new IntentFilter();
@@ -258,22 +260,20 @@
                         && mUserManager.canAddMoreUsers();
                 boolean createIsRestricted = !addUsersWhenLocked;
 
-                if (!mSimpleUserSwitcher) {
-                    if (guestRecord == null) {
-                        if (canCreateGuest) {
-                            guestRecord = new UserRecord(null /* info */, null /* picture */,
-                                    true /* isGuest */, false /* isCurrent */,
-                                    false /* isAddUser */, createIsRestricted, canSwitchUsers);
-                            checkIfAddUserDisallowedByAdminOnly(guestRecord);
-                            records.add(guestRecord);
-                        }
-                    } else {
-                        int index = guestRecord.isCurrent ? 0 : records.size();
-                        records.add(index, guestRecord);
+                if (guestRecord == null) {
+                    if (canCreateGuest) {
+                        guestRecord = new UserRecord(null /* info */, null /* picture */,
+                                true /* isGuest */, false /* isCurrent */,
+                                false /* isAddUser */, createIsRestricted, canSwitchUsers);
+                        checkIfAddUserDisallowedByAdminOnly(guestRecord);
+                        records.add(guestRecord);
                     }
+                } else {
+                    int index = guestRecord.isCurrent ? 0 : records.size();
+                    records.add(index, guestRecord);
                 }
 
-                if (!mSimpleUserSwitcher && canCreateUser) {
+                if (canCreateUser) {
                     UserRecord addUserRecord = new UserRecord(null /* info */, null /* picture */,
                             false /* isGuest */, false /* isCurrent */, true /* isAddUser */,
                             createIsRestricted, canSwitchUsers);
@@ -562,8 +562,7 @@
 
     private final ContentObserver mSettingsObserver = new ContentObserver(new Handler()) {
         public void onChange(boolean selfChange) {
-            mSimpleUserSwitcher = Settings.Global.getInt(mContext.getContentResolver(),
-                    SIMPLE_USER_SWITCHER_GLOBAL_SETTING, 0) != 0;
+            mSimpleUserSwitcher = shouldUseSimpleUserSwitcher();
             mAddUsersWhenLocked = Settings.Global.getInt(mContext.getContentResolver(),
                     Settings.Global.ADD_USERS_WHEN_LOCKED, 0) != 0;
             refreshUsers(UserHandle.USER_NULL);
@@ -579,6 +578,7 @@
             final UserRecord u = mUsers.get(i);
             pw.print("    "); pw.println(u.toString());
         }
+        pw.println("mSimpleUserSwitcher=" + mSimpleUserSwitcher);
     }
 
     public String getCurrentUserName(Context context) {
@@ -717,6 +717,13 @@
         }
     }
 
+    private boolean shouldUseSimpleUserSwitcher() {
+        int defaultSimpleUserSwitcher = mContext.getResources().getBoolean(
+                com.android.internal.R.bool.config_expandLockScreenUserSwitcher) ? 1 : 0;
+        return Settings.Global.getInt(mContext.getContentResolver(),
+                SIMPLE_USER_SWITCHER_GLOBAL_SETTING, defaultSimpleUserSwitcher) != 0;
+    }
+
     public void startActivity(Intent intent) {
         mActivityStarter.startActivity(intent, true);
     }
diff --git a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
index 6baf36c..8bd0f2c 100644
--- a/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
+++ b/packages/SystemUI/src/com/android/systemui/statusbar/policy/WifiSignalController.java
@@ -90,7 +90,7 @@
                     || !mHasMobileData || visibleWhenEnabled);
         String wifiDesc = wifiVisible ? mCurrentState.ssid : null;
         boolean ssidPresent = wifiVisible && mCurrentState.ssid != null;
-        String contentDescription = getStringIfExists(getContentDescription());
+        String contentDescription = getTextIfExists(getContentDescription()).toString();
         if (mCurrentState.inetCondition == 0) {
             contentDescription += ("," + mContext.getString(R.string.data_connection_no_internet));
         }
diff --git a/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java b/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
index dea8c5d..edab4a7 100644
--- a/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
+++ b/packages/SystemUI/src/com/android/systemui/toast/ToastUI.java
@@ -38,6 +38,7 @@
 import android.widget.Toast;
 
 import com.android.internal.R;
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.systemui.SystemUI;
 import com.android.systemui.statusbar.CommandQueue;
 
@@ -67,12 +68,21 @@
 
     @Inject
     public ToastUI(Context context, CommandQueue commandQueue) {
+        this(context, commandQueue,
+                (WindowManager) context.getSystemService(Context.WINDOW_SERVICE),
+                INotificationManager.Stub.asInterface(
+                        ServiceManager.getService(Context.NOTIFICATION_SERVICE)),
+                AccessibilityManager.getInstance(context));
+    }
+
+    @VisibleForTesting
+    ToastUI(Context context, CommandQueue commandQueue, WindowManager windowManager,
+            INotificationManager notificationManager, AccessibilityManager accessibilityManager) {
         super(context);
         mCommandQueue = commandQueue;
-        mWindowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
-        mNotificationManager = INotificationManager.Stub.asInterface(
-                ServiceManager.getService(Context.NOTIFICATION_SERVICE));
-        mAccessibilityManager = AccessibilityManager.getInstance(context);
+        mWindowManager = windowManager;
+        mNotificationManager = notificationManager;
+        mAccessibilityManager = accessibilityManager;
     }
 
     @Override
diff --git a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto b/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
index 08ae99c..d940a6b 100644
--- a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
+++ b/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto
@@ -29,3 +29,29 @@
 
     optional bool allow_gesture = 1;
 }
+
+/* represents a file full of system ui trace entries.
+   Encoded, it should start with 0x9 0x53 0x59 0x53 0x55 0x49 0x54 0x52 0x43 (.SYSUITRC), such
+   that they can be easily identified. */
+message SystemUiTraceFileProto {
+
+    /* constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 | MagicNumber.MAGIC_NUMBER_L
+       (this is needed because enums have to be 32 bits and there's no nice way to put 64bit
+        constants into .proto files. */
+    enum MagicNumber {
+        INVALID = 0;
+        MAGIC_NUMBER_L = 0x55535953;  /* SYSU (little-endian ASCII) */
+        MAGIC_NUMBER_H = 0x43525449;  /* ITRC (little-endian ASCII) */
+    }
+
+    optional fixed64 magic_number = 1;  /* Must be the first field, set to value in MagicNumber */
+    repeated SystemUiTraceEntryProto entry = 2;
+}
+
+/* one system ui trace entry. */
+message SystemUiTraceEntryProto {
+    /* required: elapsed realtime in nanos since boot of when this entry was logged */
+    optional fixed64 elapsed_realtime_nanos = 1;
+
+    optional SystemUiTraceProto system_ui = 3;
+}
diff --git a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace_file.proto b/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace_file.proto
deleted file mode 100644
index d1523ef..0000000
--- a/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace_file.proto
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2019 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.
- */
-
-syntax = "proto2";
-
-import "frameworks/base/packages/SystemUI/src/com/android/systemui/tracing/sysui_trace.proto";
-
-package com.android.systemui.tracing;
-
-option java_multiple_files = true;
-
-/* represents a file full of system ui trace entries.
-   Encoded, it should start with 0x9 0x53 0x59 0x53 0x55 0x49 0x54 0x52 0x43 (.SYSUITRC), such
-   that they can be easily identified. */
-message SystemUiTraceFileProto {
-
-    /* constant; MAGIC_NUMBER = (long) MAGIC_NUMBER_H << 32 | MagicNumber.MAGIC_NUMBER_L
-       (this is needed because enums have to be 32 bits and there's no nice way to put 64bit
-        constants into .proto files. */
-    enum MagicNumber {
-        INVALID = 0;
-        MAGIC_NUMBER_L = 0x55535953;  /* SYSU (little-endian ASCII) */
-        MAGIC_NUMBER_H = 0x43525449;  /* ITRC (little-endian ASCII) */
-    }
-
-    optional fixed64 magic_number = 1;  /* Must be the first field, set to value in MagicNumber */
-    repeated SystemUiTraceEntryProto entry = 2;
-}
-
-/* one system ui trace entry. */
-message SystemUiTraceEntryProto {
-    /* required: elapsed realtime in nanos since boot of when this entry was logged */
-    optional fixed64 elapsed_realtime_nanos = 1;
-
-    optional SystemUiTraceProto system_ui = 3;
-}
diff --git a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
index a60ca62..49ada1a 100644
--- a/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
+++ b/packages/SystemUI/src/com/android/systemui/tuner/DemoModeFragment.java
@@ -158,7 +158,7 @@
 
         String demoTime = "1010"; // 10:10, a classic choice of horologists
         try {
-            String[] versionParts = android.os.Build.VERSION.RELEASE.split("\\.");
+            String[] versionParts = android.os.Build.VERSION.RELEASE_OR_CODENAME.split("\\.");
             int majorVersion = Integer.valueOf(versionParts[0]);
             demoTime = String.format("%02d00", majorVersion % 24);
         } catch (IllegalArgumentException ex) {
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java
similarity index 67%
copy from core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
copy to packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java
index 3ad903b..264ddc0 100644
--- a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIBinder.java
@@ -14,6 +14,15 @@
  * limitations under the License.
  */
 
-package android.app.timezonedetector;
+package com.android.systemui.tv;
 
-parcelable PhoneTimeZoneSuggestion;
+import com.android.systemui.dagger.SystemUIRootComponent;
+
+import dagger.Binds;
+import dagger.Module;
+
+@Module
+interface TvSystemUIBinder {
+    @Binds
+    SystemUIRootComponent bindSystemUIRootComponent(TvSystemUIRootComponent systemUIRootComponent);
+}
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIFactory.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIFactory.java
new file mode 100644
index 0000000..7d3ec67
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIFactory.java
@@ -0,0 +1,35 @@
+/*
+ * Copyright (C) 2019 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.tv;
+
+import android.content.Context;
+
+import com.android.systemui.SystemUIFactory;
+import com.android.systemui.dagger.SystemUIRootComponent;
+
+/**
+ * TV variant {@link SystemUIFactory}, that substitutes default {@link SystemUIRootComponent} for
+ * {@link TvSystemUIRootComponent}
+ */
+public class TvSystemUIFactory extends SystemUIFactory {
+    @Override
+    protected SystemUIRootComponent buildSystemUIRootComponent(Context context) {
+        return DaggerTvSystemUIRootComponent.builder()
+                .context(context)
+                .build();
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIRootComponent.java b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIRootComponent.java
new file mode 100644
index 0000000..fcf2700
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/tv/TvSystemUIRootComponent.java
@@ -0,0 +1,58 @@
+/*
+ * Copyright (C) 2019 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.tv;
+
+import android.content.Context;
+
+import com.android.systemui.dagger.DefaultComponentBinder;
+import com.android.systemui.dagger.DependencyBinder;
+import com.android.systemui.dagger.DependencyProvider;
+import com.android.systemui.dagger.SystemServicesModule;
+import com.android.systemui.dagger.SystemUIBinder;
+import com.android.systemui.dagger.SystemUIDefaultModule;
+import com.android.systemui.dagger.SystemUIModule;
+import com.android.systemui.dagger.SystemUIRootComponent;
+
+import javax.inject.Singleton;
+
+import dagger.BindsInstance;
+import dagger.Component;
+
+/**
+ * Root component for Dagger injection.
+ */
+@Singleton
+@Component(modules = {
+        DefaultComponentBinder.class,
+        DependencyProvider.class,
+        DependencyBinder.class,
+        SystemServicesModule.class,
+        SystemUIBinder.class,
+        SystemUIModule.class,
+        SystemUIDefaultModule.class,
+        TvSystemUIBinder.class})
+public interface TvSystemUIRootComponent extends SystemUIRootComponent {
+    /**
+     * Component Builder interface. This allows to bind Context instance in the component
+     */
+    @Component.Builder
+    interface Builder {
+        @BindsInstance Builder context(Context context);
+
+        TvSystemUIRootComponent build();
+    }
+}
diff --git a/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt b/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt
new file mode 100644
index 0000000..70bcc214
--- /dev/null
+++ b/packages/SystemUI/src/com/android/systemui/util/FloatingContentCoordinator.kt
@@ -0,0 +1,320 @@
+package com.android.systemui.util
+
+import android.graphics.Rect
+import android.util.Log
+import com.android.systemui.util.FloatingContentCoordinator.FloatingContent
+import java.util.HashMap
+import javax.inject.Inject
+import javax.inject.Singleton
+
+/** Tag for debug logging. */
+private const val TAG = "FloatingCoordinator"
+
+/**
+ * Coordinates the positions and movement of floating content, such as PIP and Bubbles, to ensure
+ * that they don't overlap. If content does overlap due to content appearing or moving, the
+ * coordinator will ask content to move to resolve the conflict.
+ *
+ * After implementing [FloatingContent], content should call [onContentAdded] to begin coordination.
+ * Subsequently, call [onContentMoved] whenever the content moves, and the coordinator will move
+ * other content out of the way. [onContentRemoved] should be called when the content is removed or
+ * no longer visible.
+ */
+@Singleton
+class FloatingContentCoordinator @Inject constructor() {
+
+    /**
+     * Represents a piece of floating content, such as PIP or the Bubbles stack. Provides methods
+     * that allow the [FloatingContentCoordinator] to determine the current location of the content,
+     * as well as the ability to ask it to move out of the way of other content.
+     *
+     * The default implementation of [calculateNewBoundsOnOverlap] moves the content up or down,
+     * depending on the position of the conflicting content. You can override this method if you
+     * want your own custom conflict resolution logic.
+     */
+    interface FloatingContent {
+
+        /**
+         * Return the bounds claimed by this content. This should include the bounds occupied by the
+         * content itself, as well as any padding, if desired. The coordinator will ensure that no
+         * other content is located within these bounds.
+         *
+         * If the content is animating, this method should return the bounds to which the content is
+         * animating. If that animation is cancelled, or updated, be sure that your implementation
+         * of this method returns the appropriate bounds, and call [onContentMoved] so that the
+         * coordinator moves other content out of the way.
+         */
+        fun getFloatingBoundsOnScreen(): Rect
+
+        /**
+         * Return the area within which this floating content is allowed to move. When resolving
+         * conflicts, the coordinator will never ask your content to move to a position where any
+         * part of the content would be out of these bounds.
+         */
+        fun getAllowedFloatingBoundsRegion(): Rect
+
+        /**
+         * Called when the coordinator needs this content to move to the given bounds. It's up to
+         * you how to do that.
+         *
+         * Note that if you start an animation to these bounds, [getFloatingBoundsOnScreen] should
+         * return the destination bounds, not the in-progress animated bounds. This is so the
+         * coordinator knows where floating content is going to be and can resolve conflicts
+         * accordingly.
+         */
+        fun moveToBounds(bounds: Rect)
+
+        /**
+         * Called by the coordinator when it needs to find a new home for this floating content,
+         * because a new or moving piece of content is now overlapping with it.
+         *
+         * [findAreaForContentVertically] and [findAreaForContentAboveOrBelow] are helpful utility
+         * functions that will find new bounds for your content automatically. Unless you require
+         * specific conflict resolution logic, these should be sufficient. By default, this method
+         * delegates to [findAreaForContentVertically].
+         *
+         * @param overlappingContentBounds The bounds of the other piece of content, which
+         * necessitated this content's relocation. Your new position must not overlap with these
+         * bounds.
+         * @param otherContentBounds The bounds of any other pieces of floating content. Your new
+         * position must not overlap with any of these either. These bounds are guaranteed to be
+         * non-overlapping.
+         * @return The new bounds for this content.
+         */
+        @JvmDefault
+        fun calculateNewBoundsOnOverlap(
+            overlappingContentBounds: Rect,
+            otherContentBounds: List<Rect>
+        ): Rect {
+            return findAreaForContentVertically(
+                    getFloatingBoundsOnScreen(),
+                    overlappingContentBounds,
+                    otherContentBounds,
+                    getAllowedFloatingBoundsRegion())
+        }
+    }
+
+    /** The bounds of all pieces of floating content added to the coordinator. */
+    private val allContentBounds: MutableMap<FloatingContent, Rect> = HashMap()
+
+    /**
+     * Makes the coordinator aware of a new piece of floating content, and moves any existing
+     * content out of the way, if necessary.
+     *
+     * If you don't want your new content to move existing content, use [getOccupiedBounds] to find
+     * an unoccupied area, and move the content there before calling this method.
+     */
+    fun onContentAdded(newContent: FloatingContent) {
+        updateContentBounds()
+        allContentBounds[newContent] = newContent.getFloatingBoundsOnScreen()
+        maybeMoveConflictingContent(newContent)
+    }
+
+    /**
+     * Called to notify the coordinator that a piece of floating content has moved (or is animating)
+     * to a new position, and that any conflicting floating content should be moved out of the way.
+     *
+     * The coordinator will call [FloatingContent.getFloatingBoundsOnScreen] to find the new bounds
+     * for the moving content. If you're animating the content, be sure that your implementation of
+     * getFloatingBoundsOnScreen returns the bounds to which it's animating, not the content's
+     * current bounds.
+     *
+     * If the animation moving this content is cancelled or updated, you'll need to call this method
+     * again, to ensure that content is moved out of the way of the latest bounds.
+     *
+     * @param content The content that has moved.
+     */
+    @JvmOverloads
+    fun onContentMoved(content: FloatingContent) {
+        if (!allContentBounds.containsKey(content)) {
+            Log.wtf(TAG, "Received onContentMoved call before onContentAdded! " +
+                    "This should never happen.")
+            return
+        }
+
+        updateContentBounds()
+        maybeMoveConflictingContent(content)
+    }
+
+    /**
+     * Called to notify the coordinator that a piece of floating content has been removed or is no
+     * longer visible.
+     */
+    fun onContentRemoved(removedContent: FloatingContent) {
+        allContentBounds.remove(removedContent)
+    }
+
+    /**
+     * Returns a set of Rects that represent the bounds of all of the floating content on the
+     * screen.
+     *
+     * [onContentAdded] will move existing content out of the way if the added content intersects
+     * existing content. That's fine - but if your specific starting position is not important, you
+     * can use this function to find unoccupied space for your content before calling
+     * [onContentAdded], so that moving existing content isn't necessary.
+     */
+    fun getOccupiedBounds(): Collection<Rect> {
+        return allContentBounds.values
+    }
+
+    /**
+     * Identifies any pieces of content that are now overlapping with the given content, and asks
+     * them to move out of the way.
+     */
+    private fun maybeMoveConflictingContent(fromContent: FloatingContent) {
+        val conflictingNewBounds = allContentBounds[fromContent]!!
+        allContentBounds
+                // Filter to content that intersects with the new bounds. That's content that needs
+                // to move.
+                .filter { (content, bounds) ->
+                    content != fromContent && Rect.intersects(conflictingNewBounds, bounds) }
+                // Tell that content to get out of the way, and save the bounds it says it's moving
+                // (or animating) to.
+                .forEach { (content, bounds) ->
+                    content.moveToBounds(
+                            content.calculateNewBoundsOnOverlap(
+                                    conflictingNewBounds,
+                                    // Pass all of the content bounds except the bounds of the
+                                    // content we're asking to move, and the conflicting new bounds
+                                    // (since those are passed separately).
+                                    otherContentBounds = allContentBounds.values
+                                            .minus(bounds)
+                                            .minus(conflictingNewBounds)))
+                    allContentBounds[content] = content.getFloatingBoundsOnScreen()
+                }
+    }
+
+    /**
+     * Update [allContentBounds] by calling [FloatingContent.getFloatingBoundsOnScreen] for all
+     * content and saving the result.
+     */
+    private fun updateContentBounds() {
+        allContentBounds.keys.forEach { allContentBounds[it] = it.getFloatingBoundsOnScreen() }
+    }
+
+    companion object {
+        /**
+         * Finds new bounds for the given content, either above or below its current position. The
+         * new bounds won't intersect with the newly overlapping rect or the exclusion rects, and
+         * will be within the allowed bounds unless no possible position exists.
+         *
+         * You can use this method to help find a new position for your content when the coordinator
+         * calls [FloatingContent.moveToAreaExcluding].
+         *
+         * @param contentRect The bounds of the content for which we're finding a new home.
+         * @param newlyOverlappingRect The bounds of the content that forced this relocation by
+         * intersecting with the content we now need to move. If the overlapping content is
+         * overlapping the top half of this content, we'll try to move this content downward if
+         * possible (since the other content is 'pushing' it down), and vice versa.
+         * @param exclusionRects Any other areas that we need to avoid when finding a new home for
+         * the content. These areas must be non-overlapping with each other.
+         * @param allowedBounds The area within which we're allowed to find new bounds for the
+         * content.
+         * @return New bounds for the content that don't intersect the exclusion rects or the
+         * newly overlapping rect, and that is within bounds unless no possible in-bounds position
+         * exists.
+         */
+        @JvmStatic
+        fun findAreaForContentVertically(
+            contentRect: Rect,
+            newlyOverlappingRect: Rect,
+            exclusionRects: Collection<Rect>,
+            allowedBounds: Rect
+        ): Rect {
+            // If the newly overlapping Rect's center is above the content's center, we'll prefer to
+            // find a space for this content that is below the overlapping content, since it's
+            // 'pushing' it down. This may not be possible due to to screen bounds, in which case
+            // we'll find space in the other direction.
+            val overlappingContentPushingDown =
+                    newlyOverlappingRect.centerY() < contentRect.centerY()
+
+            // Filter to exclusion rects that are above or below the content that we're finding a
+            // place for. Then, split into two lists - rects above the content, and rects below it.
+            var (rectsToAvoidAbove, rectsToAvoidBelow) = exclusionRects
+                    .filter { rectToAvoid -> rectsIntersectVertically(rectToAvoid, contentRect) }
+                    .partition { rectToAvoid -> rectToAvoid.top < contentRect.top }
+
+            // Lazily calculate the closest possible new tops for the content, above and below its
+            // current location.
+            val newContentBoundsAbove by lazy { findAreaForContentAboveOrBelow(
+                    contentRect,
+                    exclusionRects = rectsToAvoidAbove.plus(newlyOverlappingRect),
+                    findAbove = true) }
+            val newContentBoundsBelow by lazy { findAreaForContentAboveOrBelow(
+                    contentRect,
+                    exclusionRects = rectsToAvoidBelow.plus(newlyOverlappingRect),
+                    findAbove = false) }
+
+            val positionAboveInBounds by lazy { allowedBounds.contains(newContentBoundsAbove) }
+            val positionBelowInBounds by lazy { allowedBounds.contains(newContentBoundsBelow) }
+
+            // Use the 'below' position if the content is being overlapped from the top, unless it's
+            // out of bounds. Also use it if the content is being overlapped from the bottom, but
+            // the 'above' position is out of bounds. Otherwise, use the 'above' position.
+            val usePositionBelow =
+                    overlappingContentPushingDown && positionBelowInBounds ||
+                            !overlappingContentPushingDown && !positionAboveInBounds
+
+            // Return the content rect, but offset to reflect the new position.
+            return if (usePositionBelow) newContentBoundsBelow else newContentBoundsAbove
+        }
+
+        /**
+         * Finds a new position for the given content, either above or below its current position
+         * depending on whether [findAbove] is true or false, respectively. This new position will
+         * not intersect with any of the [exclusionRects].
+         *
+         * This method is useful as a helper method for implementing your own conflict resolution
+         * logic. Otherwise, you'd want to use [findAreaForContentVertically], which takes screen
+         * bounds and conflicting bounds' location into account when deciding whether to move to new
+         * bounds above or below the current bounds.
+         *
+         * @param contentRect The content we're finding an area for.
+         * @param exclusionRects The areas we need to avoid when finding a new area for the content.
+         * These areas must be non-overlapping with each other.
+         * @param findAbove Whether we are finding an area above the content's current position,
+         * rather than an area below it.
+         */
+        fun findAreaForContentAboveOrBelow(
+            contentRect: Rect,
+            exclusionRects: Collection<Rect>,
+            findAbove: Boolean
+        ): Rect {
+            // Sort the rects, since we want to move the content as little as possible. We'll
+            // start with the rects closest to the content and move outward. If we're finding an
+            // area above the content, that means we sort in reverse order to search the rects
+            // from highest to lowest y-value.
+            val sortedExclusionRects =
+                    exclusionRects.sortedBy { if (findAbove) -it.top else it.top }
+
+            val proposedNewBounds = Rect(contentRect)
+            for (exclusionRect in sortedExclusionRects) {
+                // If the proposed new bounds don't intersect with this exclusion rect, that
+                // means there's room for the content here. We know this because the rects are
+                // sorted and non-overlapping, so any subsequent exclusion rects would be higher
+                // (or lower) than this one and can't possibly intersect if this one doesn't.
+                if (!Rect.intersects(proposedNewBounds, exclusionRect)) {
+                    break
+                } else {
+                    // Otherwise, we need to keep searching for new bounds. If we're finding an
+                    // area above, propose new bounds that place the content just above the
+                    // exclusion rect. If we're finding an area below, propose new bounds that
+                    // place the content just below the exclusion rect.
+                    val verticalOffset =
+                            if (findAbove) -contentRect.height() else exclusionRect.height()
+                    proposedNewBounds.offsetTo(
+                            proposedNewBounds.left,
+                            exclusionRect.top + verticalOffset)
+                }
+            }
+
+            return proposedNewBounds
+        }
+
+        /** Returns whether or not the two Rects share any of the same space on the X axis. */
+        private fun rectsIntersectVertically(r1: Rect, r2: Rect): Boolean {
+            return (r1.left >= r2.left && r1.left <= r2.right) ||
+                    (r1.right <= r2.right && r1.right >= r2.left)
+        }
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/src/com/android/systemui/util/Utils.java b/packages/SystemUI/src/com/android/systemui/util/Utils.java
index 47454cb..cfa2947 100644
--- a/packages/SystemUI/src/com/android/systemui/util/Utils.java
+++ b/packages/SystemUI/src/com/android/systemui/util/Utils.java
@@ -129,8 +129,6 @@
      */
     public static boolean useQsMediaPlayer(Context context) {
         int flag = Settings.System.getInt(context.getContentResolver(), "qs_media_player", 0);
-        flag |= Settings.System.getInt(context.getContentResolver(), "npv_plugin_flag", 0);
-
         return flag > 0;
     }
 }
diff --git a/packages/SystemUI/src/com/android/systemui/util/animation/PhysicsAnimator.kt b/packages/SystemUI/src/com/android/systemui/util/animation/PhysicsAnimator.kt
index cfd77be..f4157f2 100644
--- a/packages/SystemUI/src/com/android/systemui/util/animation/PhysicsAnimator.kt
+++ b/packages/SystemUI/src/com/android/systemui/util/animation/PhysicsAnimator.kt
@@ -901,6 +901,23 @@
             verboseLogging = debug
         }
 
+        /**
+         * Estimates the end value of a fling that starts at the given value using the provided
+         * start velocity and fling configuration.
+         *
+         * This is only an estimate. Fling animations use a timing-based physics simulation that is
+         * non-deterministic, so this exact value may not be reached.
+         */
+        @JvmStatic
+        fun estimateFlingEndValue(
+            startValue: Float,
+            startVelocity: Float,
+            flingConfig: FlingConfig
+        ): Float {
+            val distance = startVelocity / (flingConfig.friction * FLING_FRICTION_SCALAR_MULTIPLIER)
+            return Math.min(flingConfig.max, Math.max(flingConfig.min, startValue + distance))
+        }
+
         @JvmStatic
         fun getReadablePropertyName(property: FloatPropertyCompat<*>): String {
             return when (property) {
diff --git a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
index 2c7c52e..2e0c035 100644
--- a/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
+++ b/packages/SystemUI/src/com/android/systemui/util/leak/GarbageMonitor.java
@@ -434,6 +434,7 @@
 
         @Override
         public void handleSetListening(boolean listening) {
+            super.handleSetListening(listening);
             if (gm != null) gm.setTile(listening ? this : null);
 
             final ActivityManager am = mContext.getSystemService(ActivityManager.class);
diff --git a/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java b/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java
index 264a683..64b0b66 100644
--- a/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java
+++ b/packages/SystemUI/src/com/android/systemui/wm/DisplayLayout.java
@@ -31,9 +31,11 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.res.Resources;
+import android.graphics.Insets;
 import android.graphics.Rect;
 import android.os.SystemProperties;
 import android.provider.Settings;
+import android.util.RotationUtils;
 import android.util.Size;
 import android.view.Display;
 import android.view.DisplayCutout;
@@ -43,8 +45,6 @@
 
 import com.android.internal.R;
 
-import java.util.List;
-
 /**
  * Contains information about the layout-properties of a display. This refers to internal layout
  * like insets/cutout/rotation. In general, this can be thought of as the System-UI analog to
@@ -323,28 +323,38 @@
         if (cutout == null || cutout == DisplayCutout.NO_CUTOUT) {
             return null;
         }
+        final Insets waterfallInsets =
+                RotationUtils.rotateInsets(cutout.getWaterfallInsets(), rotation);
         if (rotation == ROTATION_0) {
-            return computeSafeInsets(
-                    cutout, displayWidth, displayHeight);
+            return computeSafeInsets(cutout, displayWidth, displayHeight);
         }
         final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
-        Rect[] cutoutRects = computeSafeInsets(cutout, displayWidth, displayHeight)
-                        .getBoundingRectsAll();
+        Rect[] cutoutRects = cutout.getBoundingRectsAll();
         final Rect[] newBounds = new Rect[cutoutRects.length];
         final Rect displayBounds = new Rect(0, 0, displayWidth, displayHeight);
         for (int i = 0; i < cutoutRects.length; ++i) {
-            newBounds[i] = new Rect(cutoutRects[i]);
-            rotateBounds(newBounds[i], displayBounds, rotation);
+            final Rect rect = new Rect(cutoutRects[i]);
+            if (!rect.isEmpty()) {
+                rotateBounds(rect, displayBounds, rotation);
+            }
+            newBounds[getBoundIndexFromRotation(i, rotation)] = rect;
         }
-        return computeSafeInsets(DisplayCutout.fromBounds(newBounds),
+        return computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(newBounds, waterfallInsets),
                 rotated ? displayHeight : displayWidth,
                 rotated ? displayWidth : displayHeight);
     }
 
+    private static int getBoundIndexFromRotation(int index, int rotation) {
+        return (index - rotation) < 0
+                ? index - rotation + DisplayCutout.BOUNDS_POSITION_LENGTH
+                : index - rotation;
+    }
+
     /** Calculate safe insets. */
     public static DisplayCutout computeSafeInsets(DisplayCutout inner,
             int displayWidth, int displayHeight) {
-        if (inner == DisplayCutout.NO_CUTOUT || inner.isBoundsEmpty()) {
+        if (inner == DisplayCutout.NO_CUTOUT) {
             return null;
         }
 
@@ -353,58 +363,44 @@
         return inner.replaceSafeInsets(safeInsets);
     }
 
-    private static Rect computeSafeInsets(Size displaySize, DisplayCutout cutout) {
-        if (displaySize.getWidth() < displaySize.getHeight()) {
-            final List<Rect> boundingRects = cutout.replaceSafeInsets(
-                    new Rect(0, displaySize.getHeight() / 2, 0, displaySize.getHeight() / 2))
-                    .getBoundingRects();
-            int topInset = findInsetForSide(displaySize, boundingRects, Gravity.TOP);
-            int bottomInset = findInsetForSide(displaySize, boundingRects, Gravity.BOTTOM);
-            return new Rect(0, topInset, 0, bottomInset);
-        } else if (displaySize.getWidth() > displaySize.getHeight()) {
-            final List<Rect> boundingRects = cutout.replaceSafeInsets(
-                    new Rect(displaySize.getWidth() / 2, 0, displaySize.getWidth() / 2, 0))
-                    .getBoundingRects();
-            int leftInset = findInsetForSide(displaySize, boundingRects, Gravity.LEFT);
-            int right = findInsetForSide(displaySize, boundingRects, Gravity.RIGHT);
-            return new Rect(leftInset, 0, right, 0);
-        } else {
+    private static Rect computeSafeInsets(
+            Size displaySize, DisplayCutout cutout) {
+        if (displaySize.getWidth() == displaySize.getHeight()) {
             throw new UnsupportedOperationException("not implemented: display=" + displaySize
                     + " cutout=" + cutout);
         }
+
+        int leftInset = Math.max(cutout.getWaterfallInsets().left,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectLeft(), Gravity.LEFT));
+        int topInset = Math.max(cutout.getWaterfallInsets().top,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectTop(), Gravity.TOP));
+        int rightInset = Math.max(cutout.getWaterfallInsets().right,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectRight(), Gravity.RIGHT));
+        int bottomInset = Math.max(cutout.getWaterfallInsets().bottom,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectBottom(),
+                        Gravity.BOTTOM));
+
+        return new Rect(leftInset, topInset, rightInset, bottomInset);
     }
 
-    private static int findInsetForSide(Size display, List<Rect> boundingRects, int gravity) {
-        int inset = 0;
-        final int size = boundingRects.size();
-        for (int i = 0; i < size; i++) {
-            Rect boundingRect = boundingRects.get(i);
-            switch (gravity) {
-                case Gravity.TOP:
-                    if (boundingRect.top == 0) {
-                        inset = Math.max(inset, boundingRect.bottom);
-                    }
-                    break;
-                case Gravity.BOTTOM:
-                    if (boundingRect.bottom == display.getHeight()) {
-                        inset = Math.max(inset, display.getHeight() - boundingRect.top);
-                    }
-                    break;
-                case Gravity.LEFT:
-                    if (boundingRect.left == 0) {
-                        inset = Math.max(inset, boundingRect.right);
-                    }
-                    break;
-                case Gravity.RIGHT:
-                    if (boundingRect.right == display.getWidth()) {
-                        inset = Math.max(inset, display.getWidth() - boundingRect.left);
-                    }
-                    break;
-                default:
-                    throw new IllegalArgumentException("unknown gravity: " + gravity);
-            }
+    private static int findCutoutInsetForSide(Size display, Rect boundingRect, int gravity) {
+        if (boundingRect.isEmpty()) {
+            return 0;
         }
-        return inset;
+
+        int inset = 0;
+        switch (gravity) {
+            case Gravity.TOP:
+                return Math.max(inset, boundingRect.bottom);
+            case Gravity.BOTTOM:
+                return Math.max(inset, display.getHeight() - boundingRect.top);
+            case Gravity.LEFT:
+                return Math.max(inset, boundingRect.right);
+            case Gravity.RIGHT:
+                return Math.max(inset, display.getWidth() - boundingRect.left);
+            default:
+                throw new IllegalArgumentException("unknown gravity: " + gravity);
+        }
     }
 
     static boolean hasNavigationBar(DisplayInfo info, Context context, int displayId) {
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java
index 1954b39..0e9a245 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/AdminSecondaryLockScreenControllerTest.java
@@ -39,7 +39,7 @@
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
 import android.testing.ViewUtils;
-import android.view.SurfaceControl;
+import android.view.SurfaceControlViewHost;
 import android.view.SurfaceView;
 import android.view.ViewGroup;
 import android.widget.FrameLayout;
@@ -54,7 +54,6 @@
 import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
-import org.mockito.Spy;
 
 @RunWithLooper
 @RunWith(AndroidTestingRunner.class)
@@ -77,8 +76,8 @@
     private KeyguardSecurityCallback mKeyguardCallback;
     @Mock
     private KeyguardUpdateMonitor mUpdateMonitor;
-    @Spy
-    private StubTransaction mTransaction;
+    @Mock
+    private SurfaceControlViewHost.SurfacePackage mSurfacePackage;
 
     @Before
     public void setUp() {
@@ -97,21 +96,20 @@
         when(mKeyguardClient.asBinder()).thenReturn(mKeyguardClient);
 
         mTestController = new AdminSecondaryLockScreenController(
-                mContext, mParent, mUpdateMonitor, mKeyguardCallback, mHandler, mTransaction);
+                mContext, mParent, mUpdateMonitor, mKeyguardCallback, mHandler);
     }
 
     @Test
     public void testShow() throws Exception {
         doAnswer(invocation -> {
             IKeyguardCallback callback = (IKeyguardCallback) invocation.getArguments()[1];
-            callback.onSurfaceControlCreated(new SurfaceControl());
+            callback.onRemoteContentReady(mSurfacePackage);
             return null;
         }).when(mKeyguardClient).onSurfaceReady(any(), any(IKeyguardCallback.class));
 
         mTestController.show(mServiceIntent);
 
         verifySurfaceReady();
-        verify(mTransaction).reparent(any(), any());
         assertThat(mContext.isBound(mComponentName)).isTrue();
     }
 
@@ -133,7 +131,7 @@
         // Show the view first, then hide.
         doAnswer(invocation -> {
             IKeyguardCallback callback = (IKeyguardCallback) invocation.getArguments()[1];
-            callback.onSurfaceControlCreated(new SurfaceControl());
+            callback.onRemoteContentReady(mSurfacePackage);
             return null;
         }).when(mKeyguardClient).onSurfaceReady(any(), any(IKeyguardCallback.class));
 
@@ -189,19 +187,4 @@
         verify(mKeyguardCallback).dismiss(true, TARGET_USER_ID);
         assertThat(mContext.isBound(mComponentName)).isFalse();
     }
-
-    /**
-     * Stubbed {@link SurfaceControl.Transaction} class that can be used when unit testing to
-     * avoid calls to native code.
-     */
-    private class StubTransaction extends SurfaceControl.Transaction {
-        @Override
-        public void apply() {
-        }
-
-        @Override
-        public SurfaceControl.Transaction reparent(SurfaceControl sc, SurfaceControl newParent) {
-            return this;
-        }
-    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java
index eccf096..ea6cf33 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/CarrierTextControllerTest.java
@@ -249,7 +249,7 @@
 
         // STOPSHIP(b/130246708) This line makes sure that SubscriptionManager provides the
         // same answer as KeyguardUpdateMonitor. Remove when this is addressed
-        when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(
+        when(mSubscriptionManager.getActiveAndHiddenSubscriptionInfoList()).thenReturn(
                 new ArrayList<>());
 
         when(mKeyguardUpdateMonitor.getSimState(anyInt())).thenReturn(
diff --git a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
index 59eb6c5..7e4ba92 100644
--- a/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
+++ b/packages/SystemUI/tests/src/com/android/keyguard/KeyguardUpdateMonitorTest.java
@@ -22,7 +22,6 @@
 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.anyString;
 import static org.mockito.ArgumentMatchers.eq;
@@ -438,14 +437,14 @@
     }
 
     @Test
-    public void testIgnoresAuth_whenLockout() {
+    public void testTriesToAuthenticate_whenLockout() {
         mKeyguardUpdateMonitor.dispatchStartedWakingUp();
         mTestableLooper.processAllMessages();
         when(mStrongAuthTracker.getStrongAuthForUser(anyInt())).thenReturn(
                 KeyguardUpdateMonitor.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_LOCKOUT);
 
         mKeyguardUpdateMonitor.onKeyguardVisibilityChanged(true);
-        verify(mFaceManager, never()).authenticate(any(), any(), anyInt(), any(), any(), anyInt());
+        verify(mFaceManager).authenticate(any(), any(), anyInt(), any(), any(), anyInt());
     }
 
     @Test
@@ -483,7 +482,7 @@
         List<SubscriptionInfo> list = new ArrayList<>();
         list.add(TEST_SUBSCRIPTION);
         list.add(TEST_SUBSCRIPTION_2);
-        when(mSubscriptionManager.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(list);
+        when(mSubscriptionManager.getActiveAndHiddenSubscriptionInfoList()).thenReturn(list);
         mKeyguardUpdateMonitor.mPhoneStateListener.onActiveDataSubscriptionIdChanged(
                 TEST_SUBSCRIPTION_2.getSubscriptionId());
         mTestableLooper.processAllMessages();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ExpandHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ExpandHelperTest.java
index 364ee66..ffe8c28 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ExpandHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ExpandHelperTest.java
@@ -31,8 +31,8 @@
 
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.statusbar.NotificationMediaManager;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.util.Assert;
 
 import org.junit.Before;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
index 48a5369..fc331d6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/ImageWallpaperTest.java
@@ -16,35 +16,185 @@
 
 package com.android.systemui;
 
-import android.test.suitebuilder.annotation.SmallTest;
+import static com.google.common.truth.Truth.assertThat;
+import static com.google.common.truth.Truth.assertWithMessage;
 
-import androidx.test.runner.AndroidJUnit4;
+import static org.mockito.Mockito.doReturn;
+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;
+
+import android.app.WallpaperManager;
+import android.content.Context;
+import android.content.res.Configuration;
+import android.content.res.Resources;
+import android.graphics.Bitmap;
+import android.graphics.ColorSpace;
+import android.graphics.Rect;
+import android.hardware.display.DisplayManagerGlobal;
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.util.Size;
+import android.view.Display;
+import android.view.DisplayInfo;
+import android.view.SurfaceHolder;
+
+import com.android.systemui.glwallpaper.ImageWallpaperRenderer;
+import com.android.systemui.statusbar.phone.DozeParameters;
 
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 import java.util.concurrent.CountDownLatch;
 
 @SmallTest
-@RunWith(AndroidJUnit4.class)
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
 public class ImageWallpaperTest extends SysuiTestCase {
+    private static final int LOW_BMP_WIDTH = 128;
+    private static final int LOW_BMP_HEIGHT = 128;
+    private static final int INVALID_BMP_WIDTH = 1;
+    private static final int INVALID_BMP_HEIGHT = 1;
+    private static final int DISPLAY_WIDTH = 1920;
+    private static final int DISPLAY_HEIGHT = 1080;
+
+    @Mock
+    private SurfaceHolder mSurfaceHolder;
+    @Mock
+    private Context mMockContext;
+    @Mock
+    private Bitmap mWallpaperBitmap;
+    @Mock
+    private DozeParameters mDozeParam;
 
     private CountDownLatch mEventCountdown;
-    private CountDownLatch mAmbientEventCountdown;
 
     @Before
     public void setUp() throws Exception {
+        com.android.systemui.util.Assert.sMainLooper = TestableLooper.get(this).getLooper();
         MockitoAnnotations.initMocks(this);
         mEventCountdown = new CountDownLatch(1);
-        mAmbientEventCountdown = new CountDownLatch(2);
+
+        WallpaperManager wallpaperManager = mock(WallpaperManager.class);
+        Resources resources = mock(Resources.class);
+
+        when(mMockContext.getSystemService(WallpaperManager.class)).thenReturn(wallpaperManager);
+        when(mMockContext.getResources()).thenReturn(resources);
+        when(resources.getConfiguration()).thenReturn(mock(Configuration.class));
+
+        DisplayInfo displayInfo = new DisplayInfo();
+        displayInfo.logicalWidth = DISPLAY_WIDTH;
+        displayInfo.logicalHeight = DISPLAY_HEIGHT;
+        when(mMockContext.getDisplay()).thenReturn(
+                new Display(mock(DisplayManagerGlobal.class), 0, displayInfo, (Resources) null));
+
+        when(wallpaperManager.getBitmap(false)).thenReturn(mWallpaperBitmap);
+        when(mWallpaperBitmap.getColorSpace()).thenReturn(ColorSpace.get(ColorSpace.Named.SRGB));
+        when(mWallpaperBitmap.getConfig()).thenReturn(Bitmap.Config.ARGB_8888);
+        when(mDozeParam.getDisplayNeedsBlanking()).thenReturn(false);
+    }
+
+    private ImageWallpaper createImageWallpaper() {
+        return new ImageWallpaper(mDozeParam) {
+            @Override
+            public Engine onCreateEngine() {
+                return new GLEngine(mMockContext, mDozeParam) {
+                    @Override
+                    public Context getDisplayContext() {
+                        return mMockContext;
+                    }
+
+                    @Override
+                    public SurfaceHolder getSurfaceHolder() {
+                        return mSurfaceHolder;
+                    }
+
+                    @Override
+                    public void setFixedSizeAllowed(boolean allowed) {
+                        super.setFixedSizeAllowed(allowed);
+                        assertWithMessage("mFixedSizeAllowed should be true").that(
+                                allowed).isTrue();
+                        mEventCountdown.countDown();
+                    }
+                };
+            }
+        };
+    }
+
+    private ImageWallpaperRenderer createImageWallpaperRenderer(ImageWallpaper.GLEngine engine) {
+        return new ImageWallpaperRenderer(mMockContext, engine) {
+            @Override
+            public void startProcessingImage() {
+                loadBitmap();
+            }
+        };
     }
 
     @Test
-    public void testDeliversAmbientModeChanged() {
-        //TODO: We need add tests for GLEngine.
+    public void testBitmapWallpaper_normal() {
+        // Will use a image wallpaper with dimensions DISPLAY_WIDTH x DISPLAY_WIDTH.
+        // Then we expect the surface size will be also DISPLAY_WIDTH x DISPLAY_WIDTH.
+        // Finally, we assert the transition will not be stopped.
+        verifySurfaceSizeAndAssertTransition(DISPLAY_WIDTH /* bmpWidth */,
+                DISPLAY_WIDTH /* bmpHeight */,
+                DISPLAY_WIDTH /* surfaceWidth */,
+                DISPLAY_WIDTH /* surfaceHeight */,
+                false /* assertion */);
     }
 
-    // TODO: Add more test cases for GLEngine, tracing in b/124838911.
+    @Test
+    public void testBitmapWallpaper_low_resolution() {
+        // Will use a image wallpaper with dimensions BMP_WIDTH x BMP_HEIGHT.
+        // Then we expect the surface size will be also BMP_WIDTH x BMP_HEIGHT.
+        // Finally, we assert the transition will be stopped.
+        verifySurfaceSizeAndAssertTransition(LOW_BMP_WIDTH /* bmpWidth */,
+                LOW_BMP_HEIGHT /* bmpHeight */,
+                LOW_BMP_WIDTH /* surfaceWidth */,
+                LOW_BMP_HEIGHT /* surfaceHeight */,
+                true /* assertion */);
+    }
+
+    @Test
+    public void testBitmapWallpaper_too_small() {
+        // Will use a image wallpaper with dimensions INVALID_BMP_WIDTH x INVALID_BMP_HEIGHT.
+        // Then we expect the surface size will be also MIN_SURFACE_WIDTH x MIN_SURFACE_HEIGHT.
+        // Finally, we assert the transition will be stopped.
+        verifySurfaceSizeAndAssertTransition(INVALID_BMP_WIDTH /* bmpWidth */,
+                INVALID_BMP_HEIGHT /* bmpHeight */,
+                ImageWallpaper.GLEngine.MIN_SURFACE_WIDTH /* surfaceWidth */,
+                ImageWallpaper.GLEngine.MIN_SURFACE_HEIGHT /* surfaceHeight */,
+                true /* assertion */);
+    }
+
+    private void verifySurfaceSizeAndAssertTransition(int bmpWidth, int bmpHeight,
+            int surfaceWidth, int surfaceHeight, boolean assertion) {
+        ImageWallpaper.GLEngine wallpaperEngine =
+                (ImageWallpaper.GLEngine) createImageWallpaper().onCreateEngine();
+
+        ImageWallpaper.GLEngine engineSpy = spy(wallpaperEngine);
+        when(engineSpy.mIsHighEndGfx).thenReturn(true);
+
+        when(mWallpaperBitmap.getWidth()).thenReturn(bmpWidth);
+        when(mWallpaperBitmap.getHeight()).thenReturn(bmpHeight);
+
+        ImageWallpaperRenderer renderer = createImageWallpaperRenderer(engineSpy);
+        doReturn(renderer).when(engineSpy).getRendererInstance();
+        engineSpy.onCreate(engineSpy.getSurfaceHolder());
+
+        verify(mSurfaceHolder, times(1)).setFixedSize(surfaceWidth, surfaceHeight);
+        assertWithMessage("setFixedSizeAllowed should have been called.").that(
+                mEventCountdown.getCount()).isEqualTo(0);
+
+        Size frameSize = renderer.reportSurfaceSize();
+        Rect frame = new Rect(0, 0, frameSize.getWidth(), frameSize.getHeight());
+        when(mSurfaceHolder.getSurfaceFrame()).thenReturn(frame);
+
+        assertThat(engineSpy.checkIfShouldStopTransition()).isEqualTo(assertion);
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java
new file mode 100644
index 0000000..fff7e4a
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/MirrorWindowControlTest.java
@@ -0,0 +1,148 @@
+/*
+ * 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.systemui.accessibility;
+
+import static android.view.WindowManager.LayoutParams;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.verify;
+
+import android.content.Context;
+import android.graphics.Point;
+import android.os.IBinder;
+import android.testing.AndroidTestingRunner;
+import android.view.LayoutInflater;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class MirrorWindowControlTest extends SysuiTestCase {
+
+    @Mock WindowManager mWindowManager;
+    @Mock IBinder mIBinder;
+    View mView;
+    int mViewWidth;
+    int mViewHeight;
+
+    StubMirrorWindowControl mStubMirrorWindowControl;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mView = new View(getContext());
+        mViewWidth = 10;
+        mViewHeight = 20;
+        getContext().addMockSystemService(Context.WINDOW_SERVICE, mWindowManager);
+        doAnswer(invocation -> {
+            View view = invocation.getArgument(0);
+            LayoutParams lp = invocation.getArgument(1);
+            view.setLayoutParams(lp);
+            return null;
+        }).when(mWindowManager).addView(any(View.class), any(LayoutParams.class));
+
+        mStubMirrorWindowControl = new StubMirrorWindowControl(getContext(), mView, mViewWidth,
+                mViewHeight);
+    }
+
+    @Test
+    public void showControl_createViewAndAddView() {
+        mStubMirrorWindowControl.showControl(mIBinder);
+
+        assertTrue(mStubMirrorWindowControl.mInvokeOnCreateView);
+        ArgumentCaptor<ViewGroup.LayoutParams> lpCaptor = ArgumentCaptor.forClass(
+                ViewGroup.LayoutParams.class);
+        verify(mWindowManager).addView(any(), lpCaptor.capture());
+        assertTrue(lpCaptor.getValue().width == mViewWidth);
+        assertTrue(lpCaptor.getValue().height == mViewHeight);
+    }
+
+    @Test
+    public void destroyControl_removeView() {
+        mStubMirrorWindowControl.showControl(mIBinder);
+        ArgumentCaptor<View> captor = ArgumentCaptor.forClass(View.class);
+        verify(mWindowManager).addView(captor.capture(), any(LayoutParams.class));
+
+        mStubMirrorWindowControl.destroyControl();
+
+        verify(mWindowManager).removeView(eq(captor.getValue()));
+    }
+
+    @Test
+    public void move_offsetIsCorrect() {
+        ArgumentCaptor<ViewGroup.LayoutParams> lpCaptor = ArgumentCaptor.forClass(
+                ViewGroup.LayoutParams.class);
+        mStubMirrorWindowControl.showControl(mIBinder);
+        verify(mWindowManager).addView(any(), lpCaptor.capture());
+        LayoutParams lp = (LayoutParams) lpCaptor.getValue();
+        Point startPosition = new Point(lp.x, lp.y);
+
+        mStubMirrorWindowControl.move(-10, -20);
+
+        verify(mWindowManager).updateViewLayout(eq(mView), lpCaptor.capture());
+        assertTrue(lpCaptor.getAllValues().size() == 2);
+        lp = (LayoutParams) lpCaptor.getValue();
+        Point currentPosition = new Point(lp.x, lp.y);
+        assertEquals(-10, currentPosition.x - startPosition.x);
+        assertEquals(-20, currentPosition.y - startPosition.y);
+    }
+
+    private static class StubMirrorWindowControl extends MirrorWindowControl {
+        private final int mWidth;
+        private final int mHeight;
+        private final View mView;
+
+        boolean mInvokeOnCreateView = false;
+
+        StubMirrorWindowControl(Context context, View view, int width, int height) {
+            super(context);
+            mView = view;
+            mWidth = width;
+            mHeight = height;
+        }
+
+        @Override
+        public String getWindowTitle() {
+            return "StubMirrorWindowControl";
+        }
+
+        @Override
+        View onCreateView(LayoutInflater inflater, Point viewSize) {
+            mInvokeOnCreateView = true;
+            viewSize.x = mWidth;
+            viewSize.y = mHeight;
+            return mView;
+        }
+
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
new file mode 100644
index 0000000..08a6172
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/accessibility/WindowMagnificationControllerTest.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright (C) 2019 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;
+
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.verify;
+
+import android.app.Instrumentation;
+import android.os.IBinder;
+import android.testing.AndroidTestingRunner;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class WindowMagnificationControllerTest extends SysuiTestCase {
+
+    @Mock
+    MirrorWindowControl mMirrorWindowControl;
+    private WindowMagnificationController mWindowMagnificationController;
+    private Instrumentation mInstrumentation;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        mInstrumentation = InstrumentationRegistry.getInstrumentation();
+        mWindowMagnificationController = new WindowMagnificationController(getContext(),
+                mMirrorWindowControl);
+        verify(mMirrorWindowControl).setWindowDelegate(
+                any(MirrorWindowControl.MirrorWindowDelegate.class));
+    }
+
+    @After
+    public void tearDown() {
+        mInstrumentation.runOnMainSync(() -> {
+            mWindowMagnificationController.deleteWindowMagnification();
+        });
+        mInstrumentation.waitForIdleSync();
+    }
+
+    @Test
+    public void createWindowMagnification_showControl() {
+        mInstrumentation.runOnMainSync(() -> {
+            mWindowMagnificationController.createWindowMagnification();
+        });
+        mInstrumentation.waitForIdleSync();
+        verify(mMirrorWindowControl).showControl(any(IBinder.class));
+    }
+
+    @Test
+    public void deleteWindowMagnification_destroyControl() {
+        mInstrumentation.runOnMainSync(() -> {
+            mWindowMagnificationController.createWindowMagnification();
+        });
+        mInstrumentation.waitForIdleSync();
+
+        mInstrumentation.runOnMainSync(() -> {
+            mWindowMagnificationController.deleteWindowMagnification();
+        });
+        mInstrumentation.waitForIdleSync();
+
+        verify(mMirrorWindowControl).destroyControl();
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java
index f264259..c6c7b87 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/biometrics/AuthContainerViewTest.java
@@ -36,6 +36,7 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricPrompt;
 import android.os.Bundle;
+import android.os.IBinder;
 import android.os.UserManager;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.testing.AndroidTestingRunner;
@@ -43,6 +44,7 @@
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
+import android.view.WindowManager;
 import android.widget.FrameLayout;
 import android.widget.ImageView;
 import android.widget.ScrollView;
@@ -175,6 +177,28 @@
         assertEquals(Utils.CREDENTIAL_PATTERN, mAuthContainer.mCredentialView.mCredentialType);
     }
 
+    @Test
+    public void testCredentialUI_disablesClickingOnBackground() {
+        // In the credential view, clicking on the background (to cancel authentication) is not
+        // valid. Thus, the listener should be null, and it should not be in the accessibility
+        // hierarchy.
+        initializeContainer(Authenticators.DEVICE_CREDENTIAL);
+
+        mAuthContainer.onAttachedToWindowInternal();
+
+        verify(mAuthContainer.mBackgroundView).setOnClickListener(eq(null));
+        verify(mAuthContainer.mBackgroundView).setImportantForAccessibility(
+                eq(View.IMPORTANT_FOR_ACCESSIBILITY_NO));
+    }
+
+    @Test
+    public void testLayoutParams_hasSecureWindowFlag() {
+        final IBinder windowToken = mock(IBinder.class);
+        final WindowManager.LayoutParams layoutParams =
+                AuthContainerView.getLayoutParams(windowToken);
+        assertTrue((layoutParams.flags & WindowManager.LayoutParams.FLAG_SECURE) != 0);
+    }
+
     private void initializeContainer(int authenticators) {
         AuthContainerView.Config config = new AuthContainerView.Config();
         config.mContext = mContext;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
index 28f01da..7d47f6b 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleControllerTest.java
@@ -20,8 +20,7 @@
 import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
 import static android.service.notification.NotificationListenerService.REASON_CANCEL;
 import static android.service.notification.NotificationListenerService.REASON_CANCEL_ALL;
-
-import static com.android.systemui.statusbar.notification.NotificationEntryManager.UNDEFINED_DISMISS_REASON;
+import static android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -34,6 +33,7 @@
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -55,23 +55,26 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.colorextraction.ColorExtractor;
+import com.android.systemui.DumpController;
 import com.android.systemui.SystemUIFactory;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.colorextraction.SysuiColorExtractor;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationPresenter;
 import com.android.systemui.statusbar.NotificationRemoveInterceptor;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.SuperStatusBarViewFactory;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationFilter;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent;
 import com.android.systemui.statusbar.phone.DozeParameters;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
@@ -81,7 +84,6 @@
 import com.android.systemui.statusbar.policy.BatteryController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.util.InjectionInflationController;
 
@@ -93,6 +95,13 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
+import java.util.List;
+
+/**
+ * Tests the NotificationEntryManager setup with BubbleController.
+ * The {@link NotifPipeline} setup with BubbleController is tested in
+ * {@link NewNotifPipelineBubbleControllerTest}.
+ */
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
 @TestableLooper.RunWithLooper(setAsMainLooper = true)
@@ -152,9 +161,13 @@
     @Mock
     private ShadeController mShadeController;
     @Mock
-    private RemoteInputUriController mRemoteInputUriController;
-    @Mock
     private NotificationRowComponent mNotificationRowComponent;
+    @Mock
+    private NotifPipeline mNotifPipeline;
+    @Mock
+    private FeatureFlags mFeatureFlagsOldPipeline;
+    @Mock
+    private DumpController mDumpController;
 
     private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
     private BubbleData mBubbleData;
@@ -188,8 +201,9 @@
         // Bubbles get added to status bar window view
         mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
                 mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
-                mConfigurationController, mKeyguardBypassController, mColorExtractor,
-                mSuperStatusBarViewFactory);
+                mConfigurationController, mKeyguardBypassController, mColorExtractor);
+        mNotificationShadeWindowController.setNotificationShadeView(
+                mSuperStatusBarViewFactory.getNotificationShadeWindowView());
         mNotificationShadeWindowController.attach();
 
         // Need notifications for bubbles
@@ -216,6 +230,7 @@
                 mock(HeadsUpManager.class),
                 mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class));
         mBubbleData = new BubbleData(mContext);
+        when(mFeatureFlagsOldPipeline.isNewNotifPipelineRenderingEnabled()).thenReturn(false);
         mBubbleController = new TestableBubbleController(mContext,
                 mNotificationShadeWindowController,
                 mStatusBarStateController,
@@ -227,7 +242,9 @@
                 mLockscreenUserManager,
                 mNotificationGroupManager,
                 mNotificationEntryManager,
-                mRemoteInputUriController);
+                mNotifPipeline,
+                mFeatureFlagsOldPipeline,
+                mDumpController);
         mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener);
         mBubbleController.setExpandListener(mBubbleExpandListener);
 
@@ -237,7 +254,7 @@
         mEntryListener = mEntryListenerCaptor.getValue();
         // And the remove interceptor
         verify(mNotificationEntryManager, atLeastOnce())
-                .setNotificationRemoveInterceptor(mRemoveInterceptorCaptor.capture());
+                .addNotificationRemoveInterceptor(mRemoveInterceptorCaptor.capture());
         mRemoveInterceptor = mRemoveInterceptorCaptor.getValue();
     }
 
@@ -265,7 +282,7 @@
         verify(mBubbleStateChangeListener).onHasBubblesChanged(true);
 
         mBubbleController.removeBubble(
-                mRow.getEntry().getKey(), BubbleController.DISMISS_USER_GESTURE);
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
         assertFalse(mNotificationShadeWindowController.getBubblesShowing());
         assertNull(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
         verify(mNotificationEntryManager, times(2)).updateNotifications(anyString());
@@ -274,24 +291,24 @@
 
     @Test
     public void testRemoveBubble_withDismissedNotif() {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // Make it look like dismissed notif
         mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).setSuppressNotification(true);
 
         // Now remove the bubble
         mBubbleController.removeBubble(
-                mRow.getEntry().getKey(), BubbleController.DISMISS_USER_GESTURE);
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
 
         // Since the notif is dismissed, once the bubble is removed, performRemoveNotification gets
         // called to really remove the notif
         verify(mNotificationEntryManager, times(1)).performRemoveNotification(
-                mRow.getEntry().getSbn(), UNDEFINED_DISMISS_REASON);
+                eq(mRow.getEntry().getSbn()), anyInt());
         assertFalse(mBubbleController.hasBubbles());
     }
 
@@ -317,13 +334,13 @@
         assertFalse(mBubbleController.isStackExpanded());
 
         // Mark it as a bubble and add it explicitly
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // We should have bubbles & their notifs should not be suppressed
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         assertFalse(mNotificationShadeWindowController.getBubbleExpanded());
 
         // Expand the stack
@@ -335,7 +352,7 @@
 
         // Make sure the notif is suppressed
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // Collapse
         mBubbleController.collapseStack();
@@ -347,17 +364,17 @@
     @Test
     public void testCollapseAfterChangingExpandedBubble() {
         // Mark it as a bubble and add it explicitly
-        mEntryListener.onNotificationAdded(mRow.getEntry());
-        mEntryListener.onNotificationAdded(mRow2.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow2.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
         mBubbleController.updateBubble(mRow2.getEntry());
 
         // We should have bubbles & their notifs should not be suppressed
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow2.getEntry().getKey()));
+                mRow2.getEntry()));
 
         // Expand
         BubbleStackView stackView = mBubbleController.getStackView();
@@ -368,14 +385,14 @@
         // Last added is the one that is expanded
         assertEquals(mRow2.getEntry(), mBubbleData.getSelectedBubble().getEntry());
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow2.getEntry().getKey()));
+                mRow2.getEntry()));
 
         // Switch which bubble is expanded
         mBubbleController.selectBubble(mRow.getEntry().getKey());
         mBubbleData.setExpanded(true);
         assertEquals(mRow.getEntry(), stackView.getExpandedBubble().getEntry());
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // collapse for previous bubble
         verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
@@ -390,13 +407,13 @@
     @Test
     public void testExpansionRemovesShowInShadeAndDot() {
         // Mark it as a bubble and add it explicitly
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // We should have bubbles & their notifs should not be suppressed
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         mTestableLooper.processAllMessages();
         assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
@@ -408,7 +425,7 @@
 
         // Notif is suppressed after expansion
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Notif shouldn't show dot after expansion
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
     }
@@ -416,13 +433,13 @@
     @Test
     public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() {
         // Mark it as a bubble and add it explicitly
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // We should have bubbles & their notifs should not be suppressed
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         mTestableLooper.processAllMessages();
         assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
@@ -434,7 +451,7 @@
 
         // Notif is suppressed after expansion
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Notif shouldn't show dot after expansion
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
 
@@ -444,7 +461,7 @@
         // Nothing should have changed
         // Notif is suppressed after expansion
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Notif shouldn't show dot after expansion
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
     }
@@ -452,8 +469,8 @@
     @Test
     public void testRemoveLastExpandedCollapses() {
         // Mark it as a bubble and add it explicitly
-        mEntryListener.onNotificationAdded(mRow.getEntry());
-        mEntryListener.onNotificationAdded(mRow2.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow2.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
         mBubbleController.updateBubble(mRow2.getEntry());
         verify(mBubbleStateChangeListener).onHasBubblesChanged(true);
@@ -468,10 +485,10 @@
         // Last added is the one that is expanded
         assertEquals(mRow2.getEntry(), stackView.getExpandedBubble().getEntry());
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow2.getEntry().getKey()));
+                mRow2.getEntry()));
 
         // Dismiss currently expanded
-        mBubbleController.removeBubble(stackView.getExpandedBubbleView().getKey(),
+        mBubbleController.removeBubble(stackView.getExpandedBubble().getEntry(),
                 BubbleController.DISMISS_USER_GESTURE);
         verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
 
@@ -480,7 +497,7 @@
         verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
 
         // Dismiss that one
-        mBubbleController.removeBubble(stackView.getExpandedBubbleView().getKey(),
+        mBubbleController.removeBubble(stackView.getExpandedBubble().getEntry(),
                 BubbleController.DISMISS_USER_GESTURE);
 
         // Make sure state changes and collapse happens
@@ -496,7 +513,7 @@
                 Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */);
 
         // Add the auto expand bubble
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // Expansion shouldn't change
@@ -514,7 +531,7 @@
                 Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */);
 
         // Add the auto expand bubble
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // Expansion should change
@@ -532,12 +549,12 @@
                 Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
 
         // Add the suppress notif bubble
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // Notif should be suppressed because we were foreground
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Dot + flyout is hidden because notif is suppressed
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showFlyout());
@@ -552,7 +569,7 @@
 
         // Should not be suppressed
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Should show dot
         assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
 
@@ -563,7 +580,7 @@
 
         // Notif should be suppressed
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
         // Dot + flyout is hidden because notif is suppressed
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
         assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showFlyout());
@@ -576,21 +593,21 @@
     public void testExpandStackAndSelectBubble_removedFirst() {
         final String key = mRow.getEntry().getKey();
 
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         // Simulate notification cancellation.
         mRemoveInterceptor.onNotificationRemoveRequested(
-                mRow.getEntry().getKey(), REASON_APP_CANCEL);
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL);
 
         mBubbleController.expandStackAndSelectBubble(key);
     }
 
     @Test
     public void testMarkNewNotificationAsShowInShade() {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         mTestableLooper.processAllMessages();
         assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
@@ -598,7 +615,7 @@
 
     @Test
     public void testAddNotif_notBubble() {
-        mEntryListener.onNotificationAdded(mNonBubbleNotifRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mNonBubbleNotifRow.getEntry());
         mEntryListener.onPreEntryUpdated(mNonBubbleNotifRow.getEntry());
 
         verify(mBubbleStateChangeListener, never()).onHasBubblesChanged(anyBoolean());
@@ -608,7 +625,7 @@
     @Test
     public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException {
         mBubbleController.updateBubble(mRow.getEntry());
-        mBubbleController.removeBubble(mRow.getEntry().getKey(), BubbleController.DISMISS_AGED);
+        mBubbleController.removeBubble(mRow.getEntry(), BubbleController.DISMISS_AGED);
         verify(mDeleteIntent, never()).send();
     }
 
@@ -616,7 +633,7 @@
     public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException {
         mBubbleController.updateBubble(mRow.getEntry());
         mBubbleController.removeBubble(
-                mRow.getEntry().getKey(), BubbleController.DISMISS_USER_GESTURE);
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
         verify(mDeleteIntent, times(1)).send();
     }
 
@@ -643,82 +660,85 @@
 
     @Test
     public void testRemoveBubble_succeeds_appCancel() {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
 
         boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
-                mRow.getEntry().getKey(), REASON_APP_CANCEL);
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_APP_CANCEL);
 
         // Cancels always remove so no need to intercept
         assertFalse(intercepted);
+    }
+
+    @Test
+    public void testRemoveBubble_entryListenerRemove() {
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+
+        // Removes the notification
+        mEntryListener.onEntryRemoved(mRow.getEntry(), null, false);
         assertFalse(mBubbleController.hasBubbles());
     }
 
     @Test
-    public void removeBubble_fails_clearAll()  {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+    public void removeBubble_clearAllIntercepted()  {
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
-                mRow.getEntry().getKey(), REASON_CANCEL_ALL);
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL_ALL);
 
         // Intercept!
         assertTrue(intercepted);
         // Should update show in shade state
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
-
-        verify(mNotificationEntryManager, never()).performRemoveNotification(
-                any(), anyInt());
-        assertTrue(mBubbleController.hasBubbles());
+                mRow.getEntry()));
     }
 
     @Test
-    public void removeBubble_fails_userDismissNotif() {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+    public void removeBubble_userDismissNotifIntercepted() {
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
-                mRow.getEntry().getKey(), REASON_CANCEL);
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
 
         // Intercept!
         assertTrue(intercepted);
         // Should update show in shade state
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
-
-        verify(mNotificationEntryManager, never()).performRemoveNotification(
-                any(), anyInt());
-        assertTrue(mBubbleController.hasBubbles());
+                mRow.getEntry()));
     }
 
     @Test
     public void removeBubble_succeeds_userDismissBubble_userDimissNotif() {
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
         mBubbleController.updateBubble(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // Dismiss the bubble
         mBubbleController.removeBubble(
-                mRow.getEntry().getKey(), BubbleController.DISMISS_USER_GESTURE);
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
         assertFalse(mBubbleController.hasBubbles());
 
         // Dismiss the notification
         boolean intercepted = mRemoveInterceptor.onNotificationRemoveRequested(
-                mRow.getEntry().getKey(), REASON_CANCEL);
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
 
         // It's no longer a bubble so we shouldn't intercept
         assertFalse(intercepted);
@@ -730,17 +750,18 @@
                 mock(BubbleController.NotificationSuppressionChangedListener.class);
         mBubbleData.setSuppressionChangedListener(listener);
 
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
-        mRemoveInterceptor.onNotificationRemoveRequested(mRow.getEntry().getKey(), REASON_CANCEL);
+        mRemoveInterceptor.onNotificationRemoveRequested(
+                mRow.getEntry().getKey(), mRow.getEntry(), REASON_CANCEL);
 
         // Should update show in shade state
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // Should notify delegate that shade state changed
         verify(listener).onBubbleNotificationSuppressionChange(
@@ -753,23 +774,91 @@
                 mock(BubbleController.NotificationSuppressionChangedListener.class);
         mBubbleData.setSuppressionChangedListener(listener);
 
-        mEntryListener.onNotificationAdded(mRow.getEntry());
+        mEntryListener.onPendingEntryAdded(mRow.getEntry());
 
         assertTrue(mBubbleController.hasBubbles());
         assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         mBubbleData.setExpanded(true);
 
         // Once a bubble is expanded the notif is suppressed
         assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
-                mRow.getEntry().getKey()));
+                mRow.getEntry()));
 
         // Should notify delegate that shade state changed
         verify(listener).onBubbleNotificationSuppressionChange(
                 mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
     }
 
+    @Test
+    public void testBubbleSummaryDismissal_suppressesSummaryAndBubbleFromShade() throws Exception {
+        // GIVEN a group summary with a bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onPendingEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+        assertTrue(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+
+        // WHEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // THEN the summary and bubbled child are suppressed from the shade
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                groupedBubble.getEntry()));
+        assertTrue(mBubbleData.isSummarySuppressed(groupSummary.getEntry().getSbn().getGroupKey()));
+    }
+
+    @Test
+    public void testAppRemovesSummary_removesAllBubbleChildren() throws Exception {
+        // GIVEN a group summary with a bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onPendingEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+        assertTrue(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+
+        // GIVEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // WHEN the summary is cancelled by the app
+        mEntryListener.onEntryRemoved(groupSummary.getEntry(), null, true);
+
+        // THEN the summary and its children are removed from bubble data
+        assertFalse(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+        assertFalse(mBubbleData.isSummarySuppressed(
+                groupSummary.getEntry().getSbn().getGroupKey()));
+    }
+
+    @Test
+    public void testSummaryDismissal_marksBubblesHiddenFromShadeAndDismissesNonBubbledChildren()
+            throws Exception {
+        // GIVEN a group summary with two (non-bubble) children and one bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(2);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onPendingEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+
+        // WHEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // THEN only the NON-bubble children are dismissed
+        List<ExpandableNotificationRow> childrenRows = groupSummary.getNotificationChildren();
+        verify(mNotificationEntryManager, times(1)).performRemoveNotification(
+                childrenRows.get(0).getEntry().getSbn(), REASON_GROUP_SUMMARY_CANCELED);
+        verify(mNotificationEntryManager, times(1)).performRemoveNotification(
+                childrenRows.get(1).getEntry().getSbn(), REASON_GROUP_SUMMARY_CANCELED);
+        verify(mNotificationEntryManager, never()).performRemoveNotification(
+                eq(groupedBubble.getEntry().getSbn()), anyInt());
+
+        // THEN the bubble child is suppressed from the shade
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                groupedBubble.getEntry()));
+
+        // THEN the summary is removed from GroupManager
+        verify(mNotificationGroupManager, times(1)).onEntryRemoved(groupSummary.getEntry());
+    }
+
     static class TestableBubbleController extends BubbleController {
         // Let's assume surfaces can be synchronized immediately.
         TestableBubbleController(Context context,
@@ -783,12 +872,14 @@
                 NotificationLockscreenUserManager lockscreenUserManager,
                 NotificationGroupManager groupManager,
                 NotificationEntryManager entryManager,
-                RemoteInputUriController remoteInputUriController) {
+                NotifPipeline notifPipeline,
+                FeatureFlags featureFlags,
+                DumpController dumpController) {
             super(context,
                     notificationShadeWindowController, statusBarStateController, shadeController,
                     data, Runnable::run, configurationController, interruptionStateProvider,
                     zenModeController, lockscreenUserManager, groupManager, entryManager,
-                    remoteInputUriController);
+                     notifPipeline, featureFlags, dumpController);
             setInflateSynchronously(true);
         }
     }
@@ -805,7 +896,7 @@
     }
 
     /**
-     * Sets the bubble metadata flags for this entry. These flags are normally set by
+     * Sets the bubble metadata flags for this entry. These ]flags are normally set by
      * NotificationManagerService when the notification is sent, however, these tests do not
      * go through that path so we set them explicitly when testing.
      */
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
index c9f5b40..f40fc94 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/BubbleDataTest.java
@@ -39,10 +39,10 @@
 
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.bubbles.BubbleData.TimeSource;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 
 import com.google.common.collect.ImmutableList;
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java
new file mode 100644
index 0000000..5a1bef9
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/bubbles/NewNotifPipelineBubbleControllerTest.java
@@ -0,0 +1,843 @@
+/*
+ * 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.systemui.bubbles;
+
+import static android.app.Notification.FLAG_BUBBLE;
+import static android.service.notification.NotificationListenerService.REASON_GROUP_SUMMARY_CANCELED;
+
+import static com.google.common.truth.Truth.assertThat;
+
+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 static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeastOnce;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.IActivityManager;
+import android.app.Notification;
+import android.app.PendingIntent;
+import android.content.Context;
+import android.content.res.Resources;
+import android.hardware.face.FaceManager;
+import android.service.notification.ZenModeConfig;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+import android.view.WindowManager;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.colorextraction.ColorExtractor;
+import com.android.systemui.DumpController;
+import com.android.systemui.SystemUIFactory;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.colorextraction.SysuiColorExtractor;
+import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.FeatureFlags;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationPresenter;
+import com.android.systemui.statusbar.SuperStatusBarViewFactory;
+import com.android.systemui.statusbar.SysuiStatusBarStateController;
+import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.NotificationFilter;
+import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
+import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent;
+import com.android.systemui.statusbar.phone.DozeParameters;
+import com.android.systemui.statusbar.phone.KeyguardBypassController;
+import com.android.systemui.statusbar.phone.NotificationGroupManager;
+import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
+import com.android.systemui.statusbar.phone.ShadeController;
+import com.android.systemui.statusbar.policy.BatteryController;
+import com.android.systemui.statusbar.policy.ConfigurationController;
+import com.android.systemui.statusbar.policy.HeadsUpManager;
+import com.android.systemui.statusbar.policy.ZenModeController;
+import com.android.systemui.util.InjectionInflationController;
+
+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.MockitoAnnotations;
+
+import java.util.List;
+
+/**
+ * Tests the NotifPipeline setup with BubbleController.
+ * The NotificationEntryManager setup with BubbleController is tested in
+ * {@link BubbleControllerTest}.
+ */
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+public class NewNotifPipelineBubbleControllerTest extends SysuiTestCase {
+    @Mock
+    private NotificationEntryManager mNotificationEntryManager;
+    @Mock
+    private NotificationGroupManager mNotificationGroupManager;
+    @Mock
+    private BubbleController.NotifCallback mNotifCallback;
+    @Mock
+    private WindowManager mWindowManager;
+    @Mock
+    private IActivityManager mActivityManager;
+    @Mock
+    private DozeParameters mDozeParameters;
+    @Mock
+    private ConfigurationController mConfigurationController;
+    @Mock
+    private ZenModeController mZenModeController;
+    @Mock
+    private ZenModeConfig mZenModeConfig;
+    @Mock
+    private FaceManager mFaceManager;
+    @Mock
+    private NotificationLockscreenUserManager mLockscreenUserManager;
+    @Mock
+    private SysuiStatusBarStateController mStatusBarStateController;
+    @Mock
+    private KeyguardBypassController mKeyguardBypassController;
+
+    @Captor
+    private ArgumentCaptor<NotifCollectionListener> mNotifListenerCaptor;
+
+    private TestableBubbleController mBubbleController;
+    private NotificationShadeWindowController mNotificationShadeWindowController;
+    private NotifCollectionListener mEntryListener;
+
+    private NotificationTestHelper mNotificationTestHelper;
+    private ExpandableNotificationRow mRow;
+    private ExpandableNotificationRow mRow2;
+    private ExpandableNotificationRow mNonBubbleNotifRow;
+
+    @Mock
+    private BubbleController.BubbleStateChangeListener mBubbleStateChangeListener;
+    @Mock
+    private BubbleController.BubbleExpandListener mBubbleExpandListener;
+    @Mock
+    private PendingIntent mDeleteIntent;
+    @Mock
+    private SysuiColorExtractor mColorExtractor;
+    @Mock
+    ColorExtractor.GradientColors mGradientColors;
+    @Mock
+    private Resources mResources;
+    @Mock
+    private ShadeController mShadeController;
+    @Mock
+    private NotificationRowComponent mNotificationRowComponent;
+    @Mock
+    private NotifPipeline mNotifPipeline;
+    @Mock
+    private FeatureFlags mFeatureFlagsNewPipeline;
+    @Mock
+    private DumpController mDumpController;
+
+    private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
+    private BubbleData mBubbleData;
+
+    private TestableLooper mTestableLooper;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+
+        mTestableLooper = TestableLooper.get(this);
+
+        mContext.addMockSystemService(FaceManager.class, mFaceManager);
+        when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
+
+        mSuperStatusBarViewFactory = new SuperStatusBarViewFactory(mContext,
+                new InjectionInflationController(SystemUIFactory.getInstance().getRootComponent()),
+                new NotificationRowComponent.Builder() {
+                    @Override
+                    public NotificationRowComponent.Builder activatableNotificationView(
+                            ActivatableNotificationView view) {
+                        return this;
+                    }
+
+                    @Override
+                    public NotificationRowComponent build() {
+                        return mNotificationRowComponent;
+                    }
+                });
+
+        // Bubbles get added to status bar window view
+        mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
+                mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
+                mConfigurationController, mKeyguardBypassController, mColorExtractor);
+        mNotificationShadeWindowController.setNotificationShadeView(
+                mSuperStatusBarViewFactory.getNotificationShadeWindowView());
+        mNotificationShadeWindowController.attach();
+
+        // Need notifications for bubbles
+        mNotificationTestHelper = new NotificationTestHelper(mContext, mDependency);
+        mRow = mNotificationTestHelper.createBubble(mDeleteIntent);
+        mRow2 = mNotificationTestHelper.createBubble(mDeleteIntent);
+        mNonBubbleNotifRow = mNotificationTestHelper.createRow();
+
+        mZenModeConfig.suppressedVisualEffects = 0;
+        when(mZenModeController.getConfig()).thenReturn(mZenModeConfig);
+
+        TestableNotificationInterruptionStateProvider interruptionStateProvider =
+                new TestableNotificationInterruptionStateProvider(mContext,
+                        mock(NotificationFilter.class),
+                        mock(StatusBarStateController.class),
+                        mock(BatteryController.class));
+        interruptionStateProvider.setUpWithPresenter(
+                mock(NotificationPresenter.class),
+                mock(HeadsUpManager.class),
+                mock(NotificationInterruptionStateProvider.HeadsUpSuppressor.class));
+        mBubbleData = new BubbleData(mContext);
+        when(mFeatureFlagsNewPipeline.isNewNotifPipelineRenderingEnabled()).thenReturn(true);
+        mBubbleController = new TestableBubbleController(mContext,
+                mNotificationShadeWindowController,
+                mStatusBarStateController,
+                mShadeController,
+                mBubbleData,
+                mConfigurationController,
+                interruptionStateProvider,
+                mZenModeController,
+                mLockscreenUserManager,
+                mNotificationGroupManager,
+                mNotificationEntryManager,
+                mNotifPipeline,
+                mFeatureFlagsNewPipeline,
+                mDumpController);
+        mBubbleController.addNotifCallback(mNotifCallback);
+        mBubbleController.setBubbleStateChangeListener(mBubbleStateChangeListener);
+        mBubbleController.setExpandListener(mBubbleExpandListener);
+
+        // Get a reference to the BubbleController's entry listener
+        verify(mNotifPipeline, atLeastOnce())
+                .addCollectionListener(mNotifListenerCaptor.capture());
+        mEntryListener = mNotifListenerCaptor.getValue();
+    }
+
+    @Test
+    public void testAddBubble() {
+        mBubbleController.updateBubble(mRow.getEntry());
+        assertTrue(mBubbleController.hasBubbles());
+
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true);
+    }
+
+    @Test
+    public void testHasBubbles() {
+        assertFalse(mBubbleController.hasBubbles());
+        mBubbleController.updateBubble(mRow.getEntry());
+        assertTrue(mBubbleController.hasBubbles());
+    }
+
+    @Test
+    public void testRemoveBubble() {
+        mBubbleController.updateBubble(mRow.getEntry());
+        assertNotNull(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+        assertTrue(mBubbleController.hasBubbles());
+        verify(mNotifCallback, times(1)).invalidateNotifications(anyString());
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true);
+
+        mBubbleController.removeBubble(mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
+        assertFalse(mNotificationShadeWindowController.getBubblesShowing());
+        assertNull(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+        verify(mNotifCallback, times(2)).invalidateNotifications(anyString());
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(false);
+    }
+
+    @Test
+    public void testRemoveBubble_withDismissedNotif() {
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(mRow.getEntry()));
+
+        // Make it look like dismissed notif
+        mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).setSuppressNotification(true);
+
+        // Now remove the bubble
+        mBubbleController.removeBubble(mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
+
+        // Since the notif is dismissed, once the bubble is removed, removeNotification gets
+        // called to really remove the notif
+        verify(mNotifCallback, times(1)).removeNotification(eq(mRow.getEntry()), anyInt());
+        assertFalse(mBubbleController.hasBubbles());
+    }
+
+    @Test
+    public void testDismissStack() {
+        mBubbleController.updateBubble(mRow.getEntry());
+        verify(mNotifCallback, times(1)).invalidateNotifications(anyString());
+        assertNotNull(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+        mBubbleController.updateBubble(mRow2.getEntry());
+        verify(mNotifCallback,  times(2)).invalidateNotifications(anyString());
+        assertNotNull(mBubbleData.getBubbleWithKey(mRow2.getEntry().getKey()));
+        assertTrue(mBubbleController.hasBubbles());
+
+        mBubbleController.dismissStack(BubbleController.DISMISS_USER_GESTURE);
+        assertFalse(mNotificationShadeWindowController.getBubblesShowing());
+        verify(mNotifCallback, times(3)).invalidateNotifications(anyString());
+        assertNull(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+        assertNull(mBubbleData.getBubbleWithKey(mRow2.getEntry().getKey()));
+    }
+
+    @Test
+    public void testExpandCollapseStack() {
+        assertFalse(mBubbleController.isStackExpanded());
+
+        // Mark it as a bubble and add it explicitly
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // We should have bubbles & their notifs should not be suppressed
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        assertFalse(mNotificationShadeWindowController.getBubbleExpanded());
+
+        // Expand the stack
+        BubbleStackView stackView = mBubbleController.getStackView();
+        mBubbleController.expandStack();
+        assertTrue(mBubbleController.isStackExpanded());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+        assertTrue(mNotificationShadeWindowController.getBubbleExpanded());
+
+        // Make sure the notif is suppressed
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(mRow.getEntry()));
+
+        // Collapse
+        mBubbleController.collapseStack();
+        verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+        assertFalse(mBubbleController.isStackExpanded());
+        assertFalse(mNotificationShadeWindowController.getBubbleExpanded());
+    }
+
+    @Test
+    public void testCollapseAfterChangingExpandedBubble() {
+        // Mark it as a bubble and add it explicitly
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mEntryListener.onEntryAdded(mRow2.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+        mBubbleController.updateBubble(mRow2.getEntry());
+
+        // We should have bubbles & their notifs should not be suppressed
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow2.getEntry()));
+
+        // Expand
+        BubbleStackView stackView = mBubbleController.getStackView();
+        mBubbleController.expandStack();
+        assertTrue(mBubbleController.isStackExpanded());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey());
+
+        // Last added is the one that is expanded
+        assertEquals(mRow2.getEntry(), mBubbleData.getSelectedBubble().getEntry());
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(mRow2.getEntry()));
+
+        // Switch which bubble is expanded
+        mBubbleController.selectBubble(mRow.getEntry().getKey());
+        mBubbleData.setExpanded(true);
+        assertEquals(mRow.getEntry(), stackView.getExpandedBubble().getEntry());
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        // collapse for previous bubble
+        verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
+        // expand for selected bubble
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+
+        // Collapse
+        mBubbleController.collapseStack();
+        assertFalse(mBubbleController.isStackExpanded());
+    }
+
+    @Test
+    public void testExpansionRemovesShowInShadeAndDot() {
+        // Mark it as a bubble and add it explicitly
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // We should have bubbles & their notifs should not be suppressed
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(mRow.getEntry()));
+
+        mTestableLooper.processAllMessages();
+        assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+
+        // Expand
+        mBubbleController.expandStack();
+        assertTrue(mBubbleController.isStackExpanded());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+
+        // Notif is suppressed after expansion
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Notif shouldn't show dot after expansion
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+    }
+
+    @Test
+    public void testUpdateWhileExpanded_DoesntChangeShowInShadeAndDot() {
+        // Mark it as a bubble and add it explicitly
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // We should have bubbles & their notifs should not be suppressed
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        mTestableLooper.processAllMessages();
+        assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+
+        // Expand
+        mBubbleController.expandStack();
+        assertTrue(mBubbleController.isStackExpanded());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+
+        // Notif is suppressed after expansion
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Notif shouldn't show dot after expansion
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+
+        // Send update
+        mEntryListener.onEntryUpdated(mRow.getEntry());
+
+        // Nothing should have changed
+        // Notif is suppressed after expansion
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Notif shouldn't show dot after expansion
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+    }
+
+    @Test
+    public void testRemoveLastExpandedCollapses() {
+        // Mark it as a bubble and add it explicitly
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mEntryListener.onEntryAdded(mRow2.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+        mBubbleController.updateBubble(mRow2.getEntry());
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true);
+
+        // Expand
+        BubbleStackView stackView = mBubbleController.getStackView();
+        mBubbleController.expandStack();
+
+        assertTrue(mBubbleController.isStackExpanded());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow2.getEntry().getKey());
+
+        // Last added is the one that is expanded
+        assertEquals(mRow2.getEntry(), stackView.getExpandedBubble().getEntry());
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow2.getEntry()));
+
+        // Dismiss currently expanded
+        mBubbleController.removeBubble(stackView.getExpandedBubble().getEntry(),
+                BubbleController.DISMISS_USER_GESTURE);
+        verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow2.getEntry().getKey());
+
+        // Make sure first bubble is selected
+        assertEquals(mRow.getEntry(), stackView.getExpandedBubble().getEntry());
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true, mRow.getEntry().getKey());
+
+        // Dismiss that one
+        mBubbleController.removeBubble(stackView.getExpandedBubble().getEntry(),
+                BubbleController.DISMISS_USER_GESTURE);
+
+        // Make sure state changes and collapse happens
+        verify(mBubbleExpandListener).onBubbleExpandChanged(false, mRow.getEntry().getKey());
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(false);
+        assertFalse(mBubbleController.hasBubbles());
+    }
+
+    @Test
+    public void testAutoExpand_fails_noFlag() {
+        assertFalse(mBubbleController.isStackExpanded());
+        setMetadataFlags(mRow.getEntry(),
+                Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, false /* enableFlag */);
+
+        // Add the auto expand bubble
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // Expansion shouldn't change
+        verify(mBubbleExpandListener, never()).onBubbleExpandChanged(false /* expanded */,
+                mRow.getEntry().getKey());
+        assertFalse(mBubbleController.isStackExpanded());
+
+        // # of bubbles should change
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true /* hasBubbles */);
+    }
+
+    @Test
+    public void testAutoExpand_succeeds_withFlag() {
+        setMetadataFlags(mRow.getEntry(),
+                Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE, true /* enableFlag */);
+
+        // Add the auto expand bubble
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // Expansion should change
+        verify(mBubbleExpandListener).onBubbleExpandChanged(true /* expanded */,
+                mRow.getEntry().getKey());
+        assertTrue(mBubbleController.isStackExpanded());
+
+        // # of bubbles should change
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true /* hasBubbles */);
+    }
+
+    @Test
+    public void testSuppressNotif_onInitialNotif() {
+        setMetadataFlags(mRow.getEntry(),
+                Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
+
+        // Add the suppress notif bubble
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // Notif should be suppressed because we were foreground
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Dot + flyout is hidden because notif is suppressed
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showFlyout());
+
+        // # of bubbles should change
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true /* hasBubbles */);
+    }
+
+    @Test
+    public void testSuppressNotif_onUpdateNotif() {
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // Should not be suppressed
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Should show dot
+        assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+
+        // Update to suppress notif
+        setMetadataFlags(mRow.getEntry(),
+                Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION, true /* enableFlag */);
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        // Notif should be suppressed
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+        // Dot + flyout is hidden because notif is suppressed
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+        assertFalse(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showFlyout());
+
+        // # of bubbles should change
+        verify(mBubbleStateChangeListener).onHasBubblesChanged(true /* hasBubbles */);
+    }
+
+    @Test
+    public void testMarkNewNotificationAsShowInShade() {
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        mTestableLooper.processAllMessages();
+        assertTrue(mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()).showDot());
+    }
+
+    @Test
+    public void testAddNotif_notBubble() {
+        mEntryListener.onEntryAdded(mNonBubbleNotifRow.getEntry());
+        mEntryListener.onEntryUpdated(mNonBubbleNotifRow.getEntry());
+
+        verify(mBubbleStateChangeListener, never()).onHasBubblesChanged(anyBoolean());
+        assertThat(mBubbleController.hasBubbles()).isFalse();
+    }
+
+    @Test
+    public void testDeleteIntent_removeBubble_aged() throws PendingIntent.CanceledException {
+        mBubbleController.updateBubble(mRow.getEntry());
+        mBubbleController.removeBubble(mRow.getEntry(), BubbleController.DISMISS_AGED);
+        verify(mDeleteIntent, never()).send();
+    }
+
+    @Test
+    public void testDeleteIntent_removeBubble_user() throws PendingIntent.CanceledException {
+        mBubbleController.updateBubble(mRow.getEntry());
+        mBubbleController.removeBubble(
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
+        verify(mDeleteIntent, times(1)).send();
+    }
+
+    @Test
+    public void testDeleteIntent_dismissStack() throws PendingIntent.CanceledException {
+        mBubbleController.updateBubble(mRow.getEntry());
+        mBubbleController.updateBubble(mRow2.getEntry());
+        mBubbleController.dismissStack(BubbleController.DISMISS_USER_GESTURE);
+        verify(mDeleteIntent, times(2)).send();
+    }
+
+    @Test
+    public void testRemoveBubble_noLongerBubbleAfterUpdate()
+            throws PendingIntent.CanceledException {
+        mBubbleController.updateBubble(mRow.getEntry());
+        assertTrue(mBubbleController.hasBubbles());
+
+        mRow.getEntry().getSbn().getNotification().flags &= ~FLAG_BUBBLE;
+        mEntryListener.onEntryUpdated(mRow.getEntry());
+
+        assertFalse(mBubbleController.hasBubbles());
+        verify(mDeleteIntent, never()).send();
+    }
+
+    @Test
+    public void testRemoveBubble_entryListenerRemove() {
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+
+        // Removes the notification
+        mEntryListener.onEntryRemoved(mRow.getEntry(), 0);
+        assertFalse(mBubbleController.hasBubbles());
+    }
+
+    @Test
+    public void removeBubble_intercepted()  {
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        boolean intercepted = mBubbleController.handleDismissalInterception(mRow.getEntry());
+
+        // Intercept!
+        assertTrue(intercepted);
+        // Should update show in shade state
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(mRow.getEntry()));
+    }
+
+    @Test
+    public void removeBubble_succeeds_userDismissBubble_userDimissNotif() {
+        mEntryListener.onEntryAdded(mRow.getEntry());
+        mBubbleController.updateBubble(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        // Dismiss the bubble
+        mBubbleController.removeBubble(
+                mRow.getEntry(), BubbleController.DISMISS_USER_GESTURE);
+        assertFalse(mBubbleController.hasBubbles());
+
+        // Dismiss the notification
+        boolean intercepted = mBubbleController.handleDismissalInterception(mRow.getEntry());
+
+        // It's no longer a bubble so we shouldn't intercept
+        assertFalse(intercepted);
+    }
+
+    @Test
+    public void testNotifyShadeSuppressionChange_notificationDismiss() {
+        BubbleController.NotificationSuppressionChangedListener listener =
+                mock(BubbleController.NotificationSuppressionChangedListener.class);
+        mBubbleData.setSuppressionChangedListener(listener);
+
+        mEntryListener.onEntryAdded(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        mBubbleController.handleDismissalInterception(mRow.getEntry());
+
+        // Should update show in shade state
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        // Should notify delegate that shade state changed
+        verify(listener).onBubbleNotificationSuppressionChange(
+                mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+    }
+
+    @Test
+    public void testNotifyShadeSuppressionChange_bubbleExpanded() {
+        BubbleController.NotificationSuppressionChangedListener listener =
+                mock(BubbleController.NotificationSuppressionChangedListener.class);
+        mBubbleData.setSuppressionChangedListener(listener);
+
+        mEntryListener.onEntryAdded(mRow.getEntry());
+
+        assertTrue(mBubbleController.hasBubbles());
+        assertFalse(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        mBubbleData.setExpanded(true);
+
+        // Once a bubble is expanded the notif is suppressed
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                mRow.getEntry()));
+
+        // Should notify delegate that shade state changed
+        verify(listener).onBubbleNotificationSuppressionChange(
+                mBubbleData.getBubbleWithKey(mRow.getEntry().getKey()));
+    }
+
+    @Test
+    public void testBubbleSummaryDismissal_suppressesSummaryAndBubbleFromShade() throws Exception {
+        // GIVEN a group summary with a bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+        assertTrue(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+
+        // WHEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // THEN the summary and bubbled child are suppressed from the shade
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                groupedBubble.getEntry()));
+        assertTrue(mBubbleData.isSummarySuppressed(groupSummary.getEntry().getSbn().getGroupKey()));
+    }
+
+    @Test
+    public void testAppRemovesSummary_removesAllBubbleChildren() throws Exception {
+        // GIVEN a group summary with a bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(0);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+        assertTrue(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+
+        // GIVEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // WHEN the summary is cancelled by the app
+        mEntryListener.onEntryRemoved(groupSummary.getEntry(), 0);
+
+        // THEN the summary and its children are removed from bubble data
+        assertFalse(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+        assertFalse(mBubbleData.isSummarySuppressed(
+                groupSummary.getEntry().getSbn().getGroupKey()));
+    }
+
+    @Test
+    public void testSummaryDismissalMarksBubblesHiddenFromShadeAndDismissesNonBubbledChildren()
+            throws Exception {
+        // GIVEN a group summary with two (non-bubble) children and one bubble child
+        ExpandableNotificationRow groupSummary = mNotificationTestHelper.createGroup(2);
+        ExpandableNotificationRow groupedBubble = mNotificationTestHelper.createBubbleInGroup();
+        mEntryListener.onEntryAdded(groupedBubble.getEntry());
+        groupSummary.addChildNotification(groupedBubble);
+
+        // WHEN the summary is dismissed
+        mBubbleController.handleDismissalInterception(groupSummary.getEntry());
+
+        // THEN only the NON-bubble children are dismissed
+        List<ExpandableNotificationRow> childrenRows = groupSummary.getNotificationChildren();
+        verify(mNotifCallback, times(1)).removeNotification(
+                childrenRows.get(0).getEntry(), REASON_GROUP_SUMMARY_CANCELED);
+        verify(mNotifCallback, times(1)).removeNotification(
+                childrenRows.get(1).getEntry(), REASON_GROUP_SUMMARY_CANCELED);
+        verify(mNotifCallback, never()).removeNotification(eq(groupedBubble.getEntry()), anyInt());
+
+        // THEN the bubble child still exists as a bubble and is suppressed from the shade
+        assertTrue(mBubbleData.hasBubbleWithKey(groupedBubble.getEntry().getKey()));
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                groupedBubble.getEntry()));
+
+        // THEN the summary is also suppressed from the shade
+        assertTrue(mBubbleController.isBubbleNotificationSuppressedFromShade(
+                groupSummary.getEntry()));
+    }
+
+    static class TestableBubbleController extends BubbleController {
+        // Let's assume surfaces can be synchronized immediately.
+        TestableBubbleController(Context context,
+                NotificationShadeWindowController notificationShadeWindowController,
+                StatusBarStateController statusBarStateController,
+                ShadeController shadeController,
+                BubbleData data,
+                ConfigurationController configurationController,
+                NotificationInterruptionStateProvider interruptionStateProvider,
+                ZenModeController zenModeController,
+                NotificationLockscreenUserManager lockscreenUserManager,
+                NotificationGroupManager groupManager,
+                NotificationEntryManager entryManager,
+                NotifPipeline notifPipeline,
+                FeatureFlags featureFlags,
+                DumpController dumpController) {
+            super(context,
+                    notificationShadeWindowController, statusBarStateController, shadeController,
+                    data, Runnable::run, configurationController, interruptionStateProvider,
+                    zenModeController, lockscreenUserManager, groupManager, entryManager,
+                    notifPipeline, featureFlags, dumpController);
+            setInflateSynchronously(true);
+        }
+    }
+
+    static class TestableNotificationInterruptionStateProvider extends
+            NotificationInterruptionStateProvider {
+
+        TestableNotificationInterruptionStateProvider(Context context,
+                NotificationFilter filter, StatusBarStateController controller,
+                BatteryController batteryController) {
+            super(context, filter, controller, batteryController);
+            mUseHeadsUp = true;
+        }
+    }
+
+    /**
+     * Sets the bubble metadata flags for this entry. These flags are normally set by
+     * NotificationManagerService when the notification is sent, however, these tests do not
+     * go through that path so we set them explicitly when testing.
+     */
+    private void setMetadataFlags(NotificationEntry entry, int flag, boolean enableFlag) {
+        Notification.BubbleMetadata bubbleMetadata =
+                entry.getSbn().getNotification().getBubbleMetadata();
+        int flags = bubbleMetadata.getFlags();
+        if (enableFlag) {
+            flags |= flag;
+        } else {
+            flags &= ~flag;
+        }
+        bubbleMetadata.setFlags(flags);
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
index 25efd32..7fb711f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/FalsingManagerProxyTest.java
@@ -28,6 +28,7 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.DumpController;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.classifier.brightline.BrightLineFalsingManager;
 import com.android.systemui.dock.DockManager;
@@ -53,6 +54,8 @@
     PluginManager mPluginManager;
     @Mock(stubOnly = true)
     ProximitySensor mProximitySensor;
+    @Mock(stubOnly = true)
+    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
     private FalsingManagerProxy mProxy;
     private DeviceConfigProxy mDeviceConfig;
     private DisplayMetrics mDisplayMetrics = new DisplayMetrics();
@@ -63,7 +66,6 @@
     @Before
     public void setup() {
         MockitoAnnotations.initMocks(this);
-        mDependency.injectMockDependency(KeyguardUpdateMonitor.class);
         mDeviceConfig = new DeviceConfigProxyFake();
         mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
                 BRIGHTLINE_FALSING_MANAGER_ENABLED, "false", false);
@@ -79,7 +81,8 @@
     @Test
     public void test_brightLineFalsingManagerDisabled() {
         mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
-                mProximitySensor, mDeviceConfig, mDockManager, mUiBgExecutor);
+                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
+                new DumpController(), mUiBgExecutor);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
     }
 
@@ -89,14 +92,16 @@
                 BRIGHTLINE_FALSING_MANAGER_ENABLED, "true", false);
         mExecutor.runAllReady();
         mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
-                mProximitySensor, mDeviceConfig, mDockManager, mUiBgExecutor);
+                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
+                new DumpController(), mUiBgExecutor);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(BrightLineFalsingManager.class));
     }
 
     @Test
     public void test_brightLineFalsingManagerToggled() throws InterruptedException {
         mProxy = new FalsingManagerProxy(getContext(), mPluginManager, mExecutor, mDisplayMetrics,
-                mProximitySensor, mDeviceConfig, mDockManager, mUiBgExecutor);
+                mProximitySensor, mDeviceConfig, mDockManager, mKeyguardUpdateMonitor,
+                new DumpController(), mUiBgExecutor);
         assertThat(mProxy.getInternalFalsingManager(), instanceOf(FalsingManagerImpl.class));
 
         mDeviceConfig.setProperty(DeviceConfig.NAMESPACE_SYSTEMUI,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java
new file mode 100644
index 0000000..0aaa3b6
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/classifier/brightline/BrightLineFalsingManagerTest.java
@@ -0,0 +1,101 @@
+/*
+ * 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.systemui.classifier.brightline;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.reset;
+import static org.mockito.Mockito.verify;
+
+import android.test.suitebuilder.annotation.SmallTest;
+import android.testing.AndroidTestingRunner;
+import android.util.DisplayMetrics;
+
+import com.android.keyguard.KeyguardUpdateMonitor;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.dock.DockManager;
+import com.android.systemui.dock.DockManagerFake;
+import com.android.systemui.util.DeviceConfigProxy;
+import com.android.systemui.util.DeviceConfigProxyFake;
+import com.android.systemui.util.sensors.ProximitySensor;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class BrightLineFalsingManagerTest extends SysuiTestCase {
+
+
+    @Mock
+    private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
+    @Mock
+    private ProximitySensor mProximitySensor;
+
+    private BrightLineFalsingManager mFalsingManager;
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        DisplayMetrics dm = new DisplayMetrics();
+        dm.xdpi = 100;
+        dm.ydpi = 100;
+        dm.widthPixels = 100;
+        dm.heightPixels = 100;
+        FalsingDataProvider falsingDataProvider = new FalsingDataProvider(dm);
+        DeviceConfigProxy deviceConfigProxy = new DeviceConfigProxyFake();
+        DockManager dockManager = new DockManagerFake();
+        mFalsingManager = new BrightLineFalsingManager(falsingDataProvider,
+                mKeyguardUpdateMonitor, mProximitySensor, deviceConfigProxy, dockManager);
+    }
+
+    @Test
+    public void testRegisterSensor() {
+        mFalsingManager.onScreenTurningOn();
+        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+    }
+
+    @Test
+    public void testUnregisterSensor() {
+        mFalsingManager.onScreenTurningOn();
+        reset(mProximitySensor);
+        mFalsingManager.onScreenOff();
+        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+    }
+
+    @Test
+    public void testUnregisterSensor_QS() {
+        mFalsingManager.onScreenTurningOn();
+        reset(mProximitySensor);
+        mFalsingManager.setQsExpanded(true);
+        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        mFalsingManager.setQsExpanded(false);
+        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+    }
+
+    @Test
+    public void testUnregisterSensor_Bouncer() {
+        mFalsingManager.onScreenTurningOn();
+        reset(mProximitySensor);
+        mFalsingManager.onBouncerShown();
+        verify(mProximitySensor).unregister(any(ProximitySensor.ProximitySensorListener.class));
+        mFalsingManager.onBouncerHidden();
+        verify(mProximitySensor).register(any(ProximitySensor.ProximitySensorListener.class));
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
index 7c8c7c8..40075c8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsBindingControllerImplTest.kt
@@ -19,6 +19,7 @@
 import android.content.ComponentName
 import android.content.Context
 import android.os.Binder
+import android.os.UserHandle
 import android.service.controls.Control
 import android.service.controls.DeviceTypes
 import android.testing.AndroidTestingRunner
@@ -38,6 +39,7 @@
 import org.mockito.Mockito.`when`
 import org.mockito.Mockito.mock
 import org.mockito.Mockito.never
+import org.mockito.Mockito.reset
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 
@@ -55,6 +57,9 @@
     @Mock
     private lateinit var mockControlsController: ControlsController
 
+    private val user = UserHandle.of(mContext.userId)
+    private val otherUser = UserHandle.of(user.identifier + 1)
+
     private val executor = FakeExecutor(FakeSystemClock())
     private lateinit var controller: ControlsBindingController
     private val providers = TestableControlsBindingControllerImpl.providers
@@ -75,8 +80,17 @@
     }
 
     @Test
+    fun testStartOnUser() {
+        assertEquals(user.identifier, controller.currentUserId)
+    }
+
+    @Test
     fun testBindAndLoad() {
-        val callback: (List<Control>) -> Unit = {}
+        val callback = object : ControlsBindingController.LoadCallback {
+            override fun error(message: String) {}
+
+            override fun accept(t: List<Control>) {}
+        }
         controller.bindAndLoad(TEST_COMPONENT_NAME_1, callback)
 
         assertEquals(1, providers.size)
@@ -93,7 +107,7 @@
         assertEquals(setOf(TEST_COMPONENT_NAME_1, TEST_COMPONENT_NAME_2),
                 providers.map { it.componentName }.toSet())
         providers.forEach {
-            verify(it).bindPermanently()
+            verify(it).bindService()
         }
     }
 
@@ -145,6 +159,41 @@
             verify(it).unsubscribe()
         }
     }
+
+    @Test
+    fun testCurrentUserId() {
+        controller.changeUser(otherUser)
+        assertEquals(otherUser.identifier, controller.currentUserId)
+    }
+
+    @Test
+    fun testChangeUsers_providersHaveCorrectUser() {
+        controller.bindServices(listOf(TEST_COMPONENT_NAME_1))
+        controller.changeUser(otherUser)
+        controller.bindServices(listOf(TEST_COMPONENT_NAME_2))
+
+        val provider1 = providers.first { it.componentName == TEST_COMPONENT_NAME_1 }
+        assertEquals(user, provider1.user)
+        val provider2 = providers.first { it.componentName == TEST_COMPONENT_NAME_2 }
+        assertEquals(otherUser, provider2.user)
+    }
+
+    @Test
+    fun testChangeUsers_providersUnbound() {
+        controller.bindServices(listOf(TEST_COMPONENT_NAME_1))
+        controller.changeUser(otherUser)
+
+        val provider1 = providers.first { it.componentName == TEST_COMPONENT_NAME_1 }
+        verify(provider1).unbindService()
+
+        controller.bindServices(listOf(TEST_COMPONENT_NAME_2))
+        controller.changeUser(user)
+
+        reset(provider1)
+        val provider2 = providers.first { it.componentName == TEST_COMPONENT_NAME_2 }
+        verify(provider2).unbindService()
+        verify(provider1, never()).unbindService()
+    }
 }
 
 class TestableControlsBindingControllerImpl(
@@ -157,13 +206,17 @@
         val providers = mutableSetOf<ControlsProviderLifecycleManager>()
     }
 
+    // Replaces the real provider with a mock and puts the mock in a visible set.
+    // The mock has the same componentName and user as the real one would have
     override fun createProviderManager(component: ComponentName):
             ControlsProviderLifecycleManager {
+        val realProvider = super.createProviderManager(component)
         val provider = mock(ControlsProviderLifecycleManager::class.java)
         val token = Binder()
-        `when`(provider.componentName).thenReturn(component)
+        `when`(provider.componentName).thenReturn(realProvider.componentName)
         `when`(provider.token).thenReturn(token)
+        `when`(provider.user).thenReturn(realProvider.user)
         providers.add(provider)
         return provider
     }
-}
\ No newline at end of file
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
index be86a9c..e5ec2dd 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsControllerImplTest.kt
@@ -17,7 +17,12 @@
 package com.android.systemui.controls.controller
 
 import android.app.PendingIntent
+import android.content.BroadcastReceiver
 import android.content.ComponentName
+import android.content.Context
+import android.content.ContextWrapper
+import android.content.Intent
+import android.os.UserHandle
 import android.provider.Settings
 import android.service.controls.Control
 import android.service.controls.DeviceTypes
@@ -26,26 +31,32 @@
 import androidx.test.filters.SmallTest
 import com.android.systemui.DumpController
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.broadcast.BroadcastDispatcher
 import com.android.systemui.controls.ControlStatus
+import com.android.systemui.controls.management.ControlsListingController
 import com.android.systemui.controls.ui.ControlsUiController
 import com.android.systemui.util.concurrency.FakeExecutor
 import com.android.systemui.util.time.FakeSystemClock
 import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertNotEquals
 import org.junit.Assert.assertTrue
 import org.junit.Before
 import org.junit.Test
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers
-import org.mockito.ArgumentMatchers.eq
 import org.mockito.Captor
 import org.mockito.Mock
+import org.mockito.Mockito
 import org.mockito.Mockito.`when`
+import org.mockito.Mockito.mock
 import org.mockito.Mockito.never
 import org.mockito.Mockito.reset
 import org.mockito.Mockito.verify
 import org.mockito.MockitoAnnotations
 import java.util.Optional
+import java.util.function.Consumer
 
 @SmallTest
 @RunWith(AndroidTestingRunner::class)
@@ -61,18 +72,26 @@
     private lateinit var pendingIntent: PendingIntent
     @Mock
     private lateinit var persistenceWrapper: ControlsFavoritePersistenceWrapper
+    @Mock
+    private lateinit var broadcastDispatcher: BroadcastDispatcher
+    @Mock
+    private lateinit var listingController: ControlsListingController
 
     @Captor
     private lateinit var controlInfoListCaptor: ArgumentCaptor<List<ControlInfo>>
     @Captor
-    private lateinit var controlLoadCallbackCaptor: ArgumentCaptor<(List<Control>) -> Unit>
+    private lateinit var controlLoadCallbackCaptor:
+            ArgumentCaptor<ControlsBindingController.LoadCallback>
+    @Captor
+    private lateinit var broadcastReceiverCaptor: ArgumentCaptor<BroadcastReceiver>
 
     private lateinit var delayableExecutor: FakeExecutor
-    private lateinit var controller: ControlsController
+    private lateinit var controller: ControlsControllerImpl
 
     companion object {
         fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture()
-        fun <T : Any> safeEq(value: T): T = eq(value) ?: value
+        fun <T> eq(value: T): T = Mockito.eq(value) ?: value
+        fun <T> any(): T = Mockito.any<T>()
 
         private val TEST_COMPONENT = ComponentName("test.pkg", "test.class")
         private const val TEST_CONTROL_ID = "control1"
@@ -89,24 +108,39 @@
                 TEST_COMPONENT_2, TEST_CONTROL_ID_2, TEST_CONTROL_TITLE_2, TEST_DEVICE_TYPE_2)
     }
 
+    private val user = mContext.userId
+    private val otherUser = user + 1
+
     @Before
     fun setUp() {
         MockitoAnnotations.initMocks(this)
 
         Settings.Secure.putInt(mContext.contentResolver,
                 ControlsControllerImpl.CONTROLS_AVAILABLE, 1)
+        Settings.Secure.putIntForUser(mContext.contentResolver,
+                ControlsControllerImpl.CONTROLS_AVAILABLE, 1, otherUser)
 
         delayableExecutor = FakeExecutor(FakeSystemClock())
 
+        val wrapper = object : ContextWrapper(mContext) {
+            override fun createContextAsUser(user: UserHandle, flags: Int): Context {
+                return baseContext
+            }
+        }
+
         controller = ControlsControllerImpl(
-                mContext,
+                wrapper,
                 delayableExecutor,
                 uiController,
                 bindingController,
+                listingController,
+                broadcastDispatcher,
                 Optional.of(persistenceWrapper),
                 dumpController
         )
         assertTrue(controller.available)
+        verify(broadcastDispatcher).registerReceiver(
+                capture(broadcastReceiverCaptor), any(), any(), eq(UserHandle.ALL))
     }
 
     private fun builderFromInfo(controlInfo: ControlInfo): Control.StatelessBuilder {
@@ -115,6 +149,11 @@
     }
 
     @Test
+    fun testStartOnUser() {
+        assertEquals(user, controller.currentUserId)
+    }
+
+    @Test
     fun testStartWithoutFavorites() {
         assertTrue(controller.getFavoriteControls().isEmpty())
     }
@@ -127,6 +166,8 @@
                 delayableExecutor,
                 uiController,
                 bindingController,
+                listingController,
+                broadcastDispatcher,
                 Optional.of(persistenceWrapper),
                 dumpController
         )
@@ -187,13 +228,13 @@
         val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2)
         val control = builderFromInfo(newControlInfo).build()
 
-        controller.loadForComponent(TEST_COMPONENT) {}
+        controller.loadForComponent(TEST_COMPONENT, Consumer {})
 
         reset(persistenceWrapper)
-        verify(bindingController).bindAndLoad(safeEq(TEST_COMPONENT),
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
                 capture(controlLoadCallbackCaptor))
 
-        controlLoadCallbackCaptor.value.invoke(listOf(control))
+        controlLoadCallbackCaptor.value.accept(listOf(control))
 
         verify(persistenceWrapper).storeFavorites(listOf(newControlInfo))
     }
@@ -255,17 +296,22 @@
         var loaded = false
         val control = builderFromInfo(TEST_CONTROL_INFO).build()
 
-        controller.loadForComponent(TEST_COMPONENT) {
+        controller.loadForComponent(TEST_COMPONENT, Consumer { data ->
+            val controls = data.allControls
+            val favorites = data.favoritesIds
             loaded = true
-            assertEquals(1, it.size)
-            val controlStatus = it[0]
+            assertEquals(1, controls.size)
+            val controlStatus = controls[0]
             assertEquals(ControlStatus(control, false), controlStatus)
-        }
 
-        verify(bindingController).bindAndLoad(safeEq(TEST_COMPONENT),
+            assertTrue(favorites.isEmpty())
+            assertFalse(data.errorOnLoad)
+        })
+
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
                 capture(controlLoadCallbackCaptor))
 
-        controlLoadCallbackCaptor.value.invoke(listOf(control))
+        controlLoadCallbackCaptor.value.accept(listOf(control))
 
         assertTrue(loaded)
     }
@@ -277,20 +323,26 @@
         val control2 = builderFromInfo(TEST_CONTROL_INFO_2).build()
         controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
 
-        controller.loadForComponent(TEST_COMPONENT) {
+        controller.loadForComponent(TEST_COMPONENT, Consumer { data ->
+            val controls = data.allControls
+            val favorites = data.favoritesIds
             loaded = true
-            assertEquals(2, it.size)
-            val controlStatus = it.first { it.control.controlId == TEST_CONTROL_ID }
+            assertEquals(2, controls.size)
+            val controlStatus = controls.first { it.control.controlId == TEST_CONTROL_ID }
             assertEquals(ControlStatus(control, true), controlStatus)
 
-            val controlStatus2 = it.first { it.control.controlId == TEST_CONTROL_ID_2 }
+            val controlStatus2 = controls.first { it.control.controlId == TEST_CONTROL_ID_2 }
             assertEquals(ControlStatus(control2, false), controlStatus2)
-        }
 
-        verify(bindingController).bindAndLoad(safeEq(TEST_COMPONENT),
+            assertEquals(1, favorites.size)
+            assertEquals(TEST_CONTROL_ID, favorites[0])
+            assertFalse(data.errorOnLoad)
+        })
+
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
                 capture(controlLoadCallbackCaptor))
 
-        controlLoadCallbackCaptor.value.invoke(listOf(control, control2))
+        controlLoadCallbackCaptor.value.accept(listOf(control, control2))
 
         assertTrue(loaded)
     }
@@ -300,19 +352,53 @@
         var loaded = false
         controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
 
-        controller.loadForComponent(TEST_COMPONENT) {
+        controller.loadForComponent(TEST_COMPONENT, Consumer { data ->
+            val controls = data.allControls
+            val favorites = data.favoritesIds
             loaded = true
-            assertEquals(1, it.size)
-            val controlStatus = it[0]
+            assertEquals(1, controls.size)
+            val controlStatus = controls[0]
             assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
             assertTrue(controlStatus.favorite)
             assertTrue(controlStatus.removed)
-        }
 
-        verify(bindingController).bindAndLoad(safeEq(TEST_COMPONENT),
+            assertEquals(1, favorites.size)
+            assertEquals(TEST_CONTROL_ID, favorites[0])
+            assertFalse(data.errorOnLoad)
+        })
+
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
                 capture(controlLoadCallbackCaptor))
 
-        controlLoadCallbackCaptor.value.invoke(emptyList())
+        controlLoadCallbackCaptor.value.accept(emptyList())
+
+        assertTrue(loaded)
+    }
+
+    @Test
+    fun testErrorOnLoad_notRemoved() {
+        var loaded = false
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+
+        controller.loadForComponent(TEST_COMPONENT, Consumer { data ->
+            val controls = data.allControls
+            val favorites = data.favoritesIds
+            loaded = true
+            assertEquals(1, controls.size)
+            val controlStatus = controls[0]
+            assertEquals(TEST_CONTROL_ID, controlStatus.control.controlId)
+            assertTrue(controlStatus.favorite)
+            assertFalse(controlStatus.removed)
+
+            assertEquals(1, favorites.size)
+            assertEquals(TEST_CONTROL_ID, favorites[0])
+            assertTrue(data.errorOnLoad)
+        })
+
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
+                capture(controlLoadCallbackCaptor))
+
+        controlLoadCallbackCaptor.value.error("")
 
         assertTrue(loaded)
     }
@@ -323,12 +409,12 @@
         val newControlInfo = TEST_CONTROL_INFO.copy(controlTitle = TEST_CONTROL_TITLE_2)
         val control = builderFromInfo(newControlInfo).build()
 
-        controller.loadForComponent(TEST_COMPONENT) {}
+        controller.loadForComponent(TEST_COMPONENT, Consumer {})
 
-        verify(bindingController).bindAndLoad(safeEq(TEST_COMPONENT),
+        verify(bindingController).bindAndLoad(eq(TEST_COMPONENT),
                 capture(controlLoadCallbackCaptor))
 
-        controlLoadCallbackCaptor.value.invoke(listOf(control))
+        controlLoadCallbackCaptor.value.accept(listOf(control))
 
         val favorites = controller.getFavoriteControls()
         assertEquals(1, favorites.size)
@@ -358,4 +444,168 @@
         controller.clearFavorites()
         assertTrue(controller.getFavoriteControls().isEmpty())
     }
+
+    @Test
+    fun testSwitchUsers() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+
+        reset(persistenceWrapper)
+        val intent = Intent(Intent.ACTION_USER_SWITCHED).apply {
+            putExtra(Intent.EXTRA_USER_HANDLE, otherUser)
+        }
+        val pendingResult = mock(BroadcastReceiver.PendingResult::class.java)
+        `when`(pendingResult.sendingUserId).thenReturn(otherUser)
+        broadcastReceiverCaptor.value.pendingResult = pendingResult
+
+        broadcastReceiverCaptor.value.onReceive(mContext, intent)
+
+        verify(persistenceWrapper).changeFile(any())
+        verify(persistenceWrapper).readFavorites()
+        verify(bindingController).changeUser(UserHandle.of(otherUser))
+        verify(listingController).changeUser(UserHandle.of(otherUser))
+        assertTrue(controller.getFavoriteControls().isEmpty())
+        assertEquals(otherUser, controller.currentUserId)
+        assertTrue(controller.available)
+    }
+
+    @Test
+    fun testDisableFeature_notAvailable() {
+        Settings.Secure.putIntForUser(mContext.contentResolver,
+                ControlsControllerImpl.CONTROLS_AVAILABLE, 0, user)
+        controller.settingObserver.onChange(false, ControlsControllerImpl.URI, 0)
+        assertFalse(controller.available)
+    }
+
+    @Test
+    fun testDisableFeature_clearFavorites() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+        assertFalse(controller.getFavoriteControls().isEmpty())
+
+        Settings.Secure.putIntForUser(mContext.contentResolver,
+                ControlsControllerImpl.CONTROLS_AVAILABLE, 0, user)
+        controller.settingObserver.onChange(false, ControlsControllerImpl.URI, user)
+        assertTrue(controller.getFavoriteControls().isEmpty())
+    }
+
+    @Test
+    fun testDisableFeature_noChangeForNotCurrentUser() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+        Settings.Secure.putIntForUser(mContext.contentResolver,
+                ControlsControllerImpl.CONTROLS_AVAILABLE, 0, otherUser)
+        controller.settingObserver.onChange(false, ControlsControllerImpl.URI, otherUser)
+
+        assertTrue(controller.available)
+        assertFalse(controller.getFavoriteControls().isEmpty())
+    }
+
+    @Test
+    fun testCorrectUserSettingOnUserChange() {
+        Settings.Secure.putIntForUser(mContext.contentResolver,
+                ControlsControllerImpl.CONTROLS_AVAILABLE, 0, otherUser)
+
+        val intent = Intent(Intent.ACTION_USER_SWITCHED).apply {
+            putExtra(Intent.EXTRA_USER_HANDLE, otherUser)
+        }
+        val pendingResult = mock(BroadcastReceiver.PendingResult::class.java)
+        `when`(pendingResult.sendingUserId).thenReturn(otherUser)
+        broadcastReceiverCaptor.value.pendingResult = pendingResult
+
+        broadcastReceiverCaptor.value.onReceive(mContext, intent)
+
+        assertFalse(controller.available)
+    }
+
+    @Test
+    fun testCountFavoritesForComponent_singleComponent() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(0, controller.countFavoritesForComponent(TEST_COMPONENT_2))
+    }
+
+    @Test
+    fun testCountFavoritesForComponent_multipleComponents() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO_2, true)
+
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT_2))
+    }
+
+    @Test
+    fun testGetFavoritesForComponent() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+        assertEquals(listOf(TEST_CONTROL_INFO), controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
+
+    @Test
+    fun testGetFavoritesForComponent_otherComponent() {
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO_2, true)
+        assertTrue(controller.getFavoritesForComponent(TEST_COMPONENT).isEmpty())
+    }
+
+    @Test
+    fun testGetFavoritesForComponent_multipleInOrder() {
+        val controlInfo = ControlInfo(TEST_COMPONENT, "id", "title", 0)
+
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+        controller.changeFavoriteStatus(controlInfo, true)
+
+        assertEquals(listOf(TEST_CONTROL_INFO, controlInfo),
+            controller.getFavoritesForComponent(TEST_COMPONENT))
+
+        controller.clearFavorites()
+
+        controller.changeFavoriteStatus(controlInfo, true)
+        controller.changeFavoriteStatus(TEST_CONTROL_INFO, true)
+
+        assertEquals(listOf(controlInfo, TEST_CONTROL_INFO),
+            controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
+
+    @Test
+    fun testReplaceFavoritesForComponent_noFavorites() {
+        controller.replaceFavoritesForComponent(TEST_COMPONENT, listOf(TEST_CONTROL_INFO))
+
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(listOf(TEST_CONTROL_INFO), controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
+
+    @Test
+    fun testReplaceFavoritesForComponent_differentComponentsAreFilteredOut() {
+        controller.replaceFavoritesForComponent(TEST_COMPONENT,
+            listOf(TEST_CONTROL_INFO, TEST_CONTROL_INFO_2))
+
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(listOf(TEST_CONTROL_INFO), controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
+
+    @Test
+    fun testReplaceFavoritesForComponent_oldFavoritesRemoved() {
+        val controlInfo = ControlInfo(TEST_COMPONENT, "id", "title", 0)
+        assertNotEquals(TEST_CONTROL_INFO, controlInfo)
+
+        controller.changeFavoriteStatus(controlInfo, true)
+        controller.replaceFavoritesForComponent(TEST_COMPONENT, listOf(TEST_CONTROL_INFO))
+
+        assertEquals(1, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(listOf(TEST_CONTROL_INFO), controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
+
+    @Test
+    fun testReplaceFavoritesForComponent_favoritesInOrder() {
+        val controlInfo = ControlInfo(TEST_COMPONENT, "id", "title", 0)
+
+        val listOrder1 = listOf(TEST_CONTROL_INFO, controlInfo)
+        controller.replaceFavoritesForComponent(TEST_COMPONENT, listOrder1)
+
+        assertEquals(2, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(listOrder1, controller.getFavoritesForComponent(TEST_COMPONENT))
+
+        val listOrder2 = listOf(controlInfo, TEST_CONTROL_INFO)
+        controller.replaceFavoritesForComponent(TEST_COMPONENT, listOrder2)
+
+        assertEquals(2, controller.countFavoritesForComponent(TEST_COMPONENT))
+        assertEquals(listOrder2, controller.getFavoritesForComponent(TEST_COMPONENT))
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
index 4fc1cca..ddd6b12 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/controller/ControlsProviderLifecycleManagerTest.kt
@@ -17,7 +17,7 @@
 package com.android.systemui.controls.controller
 
 import android.content.ComponentName
-import android.service.controls.Control
+import android.os.UserHandle
 import android.service.controls.IControlsActionCallback
 import android.service.controls.IControlsLoadCallback
 import android.service.controls.IControlsProvider
@@ -27,7 +27,6 @@
 import android.testing.AndroidTestingRunner
 import androidx.test.filters.SmallTest
 import com.android.systemui.SysuiTestCase
-import com.android.systemui.util.concurrency.DelayableExecutor
 import com.android.systemui.util.concurrency.FakeExecutor
 import com.android.systemui.util.time.FakeSystemClock
 import org.junit.After
@@ -40,6 +39,7 @@
 import org.junit.runner.RunWith
 import org.mockito.ArgumentCaptor
 import org.mockito.ArgumentMatchers
+import org.mockito.ArgumentMatchers.anyString
 import org.mockito.ArgumentMatchers.eq
 import org.mockito.Captor
 import org.mockito.Mock
@@ -52,20 +52,22 @@
 class ControlsProviderLifecycleManagerTest : SysuiTestCase() {
 
     @Mock
-    private lateinit var actionCallback: IControlsActionCallback.Stub
+    private lateinit var actionCallbackService: IControlsActionCallback.Stub
     @Mock
-    private lateinit var loadCallback: IControlsLoadCallback.Stub
+    private lateinit var loadCallbackService: IControlsLoadCallback.Stub
     @Mock
-    private lateinit var subscriber: IControlsSubscriber.Stub
+    private lateinit var subscriberService: IControlsSubscriber.Stub
     @Mock
     private lateinit var service: IControlsProvider.Stub
+    @Mock
+    private lateinit var loadCallback: ControlsBindingController.LoadCallback
 
     @Captor
     private lateinit var wrapperCaptor: ArgumentCaptor<ControlActionWrapper>
 
     private val componentName = ComponentName("test.pkg", "test.cls")
     private lateinit var manager: ControlsProviderLifecycleManager
-    private lateinit var executor: DelayableExecutor
+    private lateinit var executor: FakeExecutor
 
     companion object {
         fun <T> capture(argumentCaptor: ArgumentCaptor<T>): T = argumentCaptor.capture()
@@ -83,9 +85,10 @@
         manager = ControlsProviderLifecycleManager(
                 context,
                 executor,
-                loadCallback,
-                actionCallback,
-                subscriber,
+                loadCallbackService,
+                actionCallbackService,
+                subscriberService,
+                UserHandle.of(0),
                 componentName
         )
     }
@@ -97,44 +100,53 @@
 
     @Test
     fun testBindService() {
-        manager.bindPermanently()
+        manager.bindService()
         assertTrue(mContext.isBound(componentName))
     }
 
     @Test
     fun testUnbindService() {
-        manager.bindPermanently()
+        manager.bindService()
         manager.unbindService()
         assertFalse(mContext.isBound(componentName))
     }
 
     @Test
     fun testMaybeBindAndLoad() {
-        val callback: (List<Control>) -> Unit = {}
-        manager.maybeBindAndLoad(callback)
+        manager.maybeBindAndLoad(loadCallback)
 
-        verify(service).load(loadCallback)
+        verify(service).load(loadCallbackService)
 
         assertTrue(mContext.isBound(componentName))
-        assertEquals(callback, manager.lastLoadCallback)
+        assertEquals(loadCallback, manager.lastLoadCallback)
     }
 
     @Test
     fun testMaybeUnbind_bindingAndCallback() {
-        manager.maybeBindAndLoad {}
+        manager.maybeBindAndLoad(loadCallback)
 
-        manager.maybeUnbindAndRemoveCallback()
+        manager.unbindService()
         assertFalse(mContext.isBound(componentName))
         assertNull(manager.lastLoadCallback)
     }
 
     @Test
+    fun testMaybeBindAndLoad_timeout() {
+        manager.maybeBindAndLoad(loadCallback)
+
+        executor.advanceClockToLast()
+        executor.runAllReady()
+
+        verify(loadCallback).error(anyString())
+    }
+
+    @Test
     fun testMaybeBindAndSubscribe() {
         val list = listOf("TEST_ID")
         manager.maybeBindAndSubscribe(list)
 
         assertTrue(mContext.isBound(componentName))
-        verify(service).subscribe(list, subscriber)
+        verify(service).subscribe(list, subscriberService)
     }
 
     @Test
@@ -145,7 +157,7 @@
 
         assertTrue(mContext.isBound(componentName))
         verify(service).action(eq(controlId), capture(wrapperCaptor),
-                eq(actionCallback))
+                eq(actionCallbackService))
         assertEquals(action, wrapperCaptor.getValue().getWrappedAction())
     }
-}
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
index f09aab9..85e937e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/ControlsListingControllerImplTest.kt
@@ -17,12 +17,15 @@
 package com.android.systemui.controls.management
 
 import android.content.ComponentName
+import android.content.Context
+import android.content.ContextWrapper
 import android.content.pm.ServiceInfo
+import android.os.UserHandle
 import android.testing.AndroidTestingRunner
 import androidx.test.filters.SmallTest
 import com.android.settingslib.applications.ServiceListing
-import com.android.settingslib.widget.CandidateInfo
 import com.android.systemui.SysuiTestCase
+import com.android.systemui.controls.ControlsServiceInfo
 import com.android.systemui.util.concurrency.FakeExecutor
 import com.android.systemui.util.time.FakeSystemClock
 import org.junit.After
@@ -69,13 +72,22 @@
     private var serviceListingCallbackCaptor =
             ArgumentCaptor.forClass(ServiceListing.Callback::class.java)
 
+    private val user = mContext.userId
+    private val otherUser = user + 1
+
     @Before
     fun setUp() {
         MockitoAnnotations.initMocks(this)
 
         `when`(serviceInfo.componentName).thenReturn(componentName)
 
-        controller = ControlsListingControllerImpl(mContext, executor, mockSL)
+        val wrapper = object : ContextWrapper(mContext) {
+            override fun createContextAsUser(user: UserHandle, flags: Int): Context {
+                return baseContext
+            }
+        }
+
+        controller = ControlsListingControllerImpl(wrapper, executor, { mockSL })
         verify(mockSL).addCallback(capture(serviceListingCallbackCaptor))
     }
 
@@ -86,6 +98,11 @@
     }
 
     @Test
+    fun testStartsOnUser() {
+        assertEquals(user, controller.currentUserId)
+    }
+
+    @Test
     fun testNoServices_notListening() {
         assertTrue(controller.getCurrentServices().isEmpty())
     }
@@ -167,8 +184,9 @@
         controller.addCallback(mockCallbackOther)
 
         @Suppress("unchecked_cast")
-        val captor: ArgumentCaptor<List<CandidateInfo>> =
-                ArgumentCaptor.forClass(List::class.java) as ArgumentCaptor<List<CandidateInfo>>
+        val captor: ArgumentCaptor<List<ControlsServiceInfo>> =
+                ArgumentCaptor.forClass(List::class.java)
+                        as ArgumentCaptor<List<ControlsServiceInfo>>
 
         executor.runAllReady()
         reset(mockCallback)
@@ -185,4 +203,11 @@
         assertEquals(1, captor.value.size)
         assertEquals(componentName.flattenToString(), captor.value[0].key)
     }
+
+    @Test
+    fun testChangeUser() {
+        controller.changeUser(UserHandle.of(otherUser))
+        executor.runAllReady()
+        assertEquals(otherUser, controller.currentUserId)
+    }
 }
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoriteModelTest.kt b/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoriteModelTest.kt
new file mode 100644
index 0000000..9ffc29e
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/controls/management/FavoriteModelTest.kt
@@ -0,0 +1,198 @@
+/*
+ * 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.systemui.controls.management
+
+import android.app.PendingIntent
+import android.service.controls.Control
+import android.testing.AndroidTestingRunner
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import com.android.systemui.controls.ControlStatus
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Assert.assertTrue
+import org.junit.Assert.fail
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.junit.runners.Parameterized
+import org.mockito.Mock
+import org.mockito.Mockito.verify
+import org.mockito.Mockito.verifyNoMoreInteractions
+import org.mockito.MockitoAnnotations
+
+open class FavoriteModelTest : SysuiTestCase() {
+
+    @Mock
+    lateinit var pendingIntent: PendingIntent
+    @Mock
+    lateinit var allAdapter: ControlAdapter
+    @Mock
+    lateinit var favoritesAdapter: ControlAdapter
+
+    val idPrefix = "controlId"
+    val favoritesIndices = listOf(7, 3, 1, 9)
+    val favoritesList = favoritesIndices.map { "controlId$it" }
+    lateinit var controls: List<ControlStatus>
+
+    lateinit var model: FavoriteModel
+
+    @Before
+    fun setUp() {
+        MockitoAnnotations.initMocks(this)
+
+        // controlId0 --> zone = 0
+        // controlId1 --> zone = 1, favorite
+        // controlId2 --> zone = 2
+        // controlId3 --> zone = 0, favorite
+        // controlId4 --> zone = 1
+        // controlId5 --> zone = 2
+        // controlId6 --> zone = 0
+        // controlId7 --> zone = 1, favorite
+        // controlId8 --> zone = 2
+        // controlId9 --> zone = 0, favorite
+        controls = (0..9).map {
+            ControlStatus(
+                    Control.StatelessBuilder("$idPrefix$it", pendingIntent)
+                            .setZone((it % 3).toString())
+                            .build(),
+                    it in favoritesIndices
+            )
+        }
+
+        model = FavoriteModel(controls, favoritesList, favoritesAdapter, allAdapter)
+    }
+}
+
+@SmallTest
+@RunWith(AndroidTestingRunner::class)
+class FavoriteModelNonParametrizedTests : FavoriteModelTest() {
+    @Test
+    fun testAll() {
+        // Zones are sorted alphabetically
+        val expected = listOf(
+                ZoneNameWrapper("0"),
+                ControlWrapper(controls[0]),
+                ControlWrapper(controls[3]),
+                ControlWrapper(controls[6]),
+                ControlWrapper(controls[9]),
+                ZoneNameWrapper("1"),
+                ControlWrapper(controls[1]),
+                ControlWrapper(controls[4]),
+                ControlWrapper(controls[7]),
+                ZoneNameWrapper("2"),
+                ControlWrapper(controls[2]),
+                ControlWrapper(controls[5]),
+                ControlWrapper(controls[8])
+        )
+        assertEquals(expected, model.all)
+    }
+
+    @Test
+    fun testFavoritesInOrder() {
+        val expected = favoritesIndices.map { ControlWrapper(controls[it]) }
+        assertEquals(expected, model.favorites)
+    }
+
+    @Test
+    fun testChangeFavoriteStatus_addFavorite() {
+        val controlToAdd = 6
+        model.changeFavoriteStatus("$idPrefix$controlToAdd", true)
+
+        val pair = model.all.findControl(controlToAdd)
+        pair?.let {
+            assertTrue(it.second.favorite)
+            assertEquals(it.second, model.favorites.last().controlStatus)
+            verify(favoritesAdapter).notifyItemInserted(model.favorites.size - 1)
+            verify(allAdapter).notifyItemChanged(it.first)
+            verifyNoMoreInteractions(favoritesAdapter, allAdapter)
+        } ?: run {
+            fail("control not found")
+        }
+    }
+
+    @Test
+    fun testChangeFavoriteStatus_removeFavorite() {
+        val controlToRemove = 3
+        model.changeFavoriteStatus("$idPrefix$controlToRemove", false)
+
+        val pair = model.all.findControl(controlToRemove)
+        pair?.let {
+            assertFalse(it.second.favorite)
+            assertTrue(model.favorites.none {
+                it.controlStatus.control.controlId == "$idPrefix$controlToRemove"
+            })
+            verify(favoritesAdapter).notifyItemRemoved(favoritesIndices.indexOf(controlToRemove))
+            verify(allAdapter).notifyItemChanged(it.first)
+            verifyNoMoreInteractions(favoritesAdapter, allAdapter)
+        } ?: run {
+            fail("control not found")
+        }
+    }
+
+    @Test
+    fun testChangeFavoriteStatus_sameStatus() {
+        model.changeFavoriteStatus("${idPrefix}7", true)
+        model.changeFavoriteStatus("${idPrefix}6", false)
+
+        val expected = favoritesIndices.map { ControlWrapper(controls[it]) }
+        assertEquals(expected, model.favorites)
+
+        verifyNoMoreInteractions(favoritesAdapter, allAdapter)
+    }
+
+    private fun List<ElementWrapper>.findControl(controlIndex: Int): Pair<Int, ControlStatus>? {
+        val index = indexOfFirst {
+            it is ControlWrapper &&
+                it.controlStatus.control.controlId == "$idPrefix$controlIndex"
+        }
+        return if (index == -1) null else index to (get(index) as ControlWrapper).controlStatus
+    }
+}
+
+@SmallTest
+@RunWith(Parameterized::class)
+class FavoriteModelParameterizedTest(val from: Int, val to: Int) : FavoriteModelTest() {
+
+    companion object {
+        @JvmStatic
+        @Parameterized.Parameters(name = "{0} -> {1}")
+        fun data(): Collection<Array<Int>> {
+            return (0..3).flatMap { from ->
+                (0..3).map { to ->
+                    arrayOf(from, to)
+                }
+            }.filterNot { it[0] == it[1] }
+        }
+    }
+
+    @Test
+    fun testMoveItem() {
+        val originalFavorites = model.favorites.toList()
+        val originalFavoritesIds =
+                model.favorites.map { it.controlStatus.control.controlId }.toSet()
+        model.onMoveItem(from, to)
+        assertEquals(originalFavorites[from], model.favorites[to])
+        // Check that we still have the same favorites
+        assertEquals(originalFavoritesIds,
+                model.favorites.map { it.controlStatus.control.controlId }.toSet())
+
+        verify(favoritesAdapter).notifyItemMoved(from, to)
+
+        verifyNoMoreInteractions(allAdapter, favoritesAdapter)
+    }
+}
\ No newline at end of file
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
index 752e145..00d333fb 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeConfigurationUtil.java
@@ -53,6 +53,7 @@
         when(config.pickupGestureEnabled(anyInt())).thenReturn(false);
         when(config.pulseOnNotificationEnabled(anyInt())).thenReturn(true);
         when(config.alwaysOnEnabled(anyInt())).thenReturn(false);
+        when(config.dozeSuppressed(anyInt())).thenReturn(false);
         when(config.enabled(anyInt())).thenReturn(true);
         when(config.getWakeLockScreenDebounce()).thenReturn(0L);
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
index 0723a4c..63cbca9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeMachineTest.java
@@ -139,10 +139,69 @@
     }
 
     @Test
+    public void testInitialize_dozeSuppressed_alwaysOnDisabled_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(false);
+
+        mMachine.requestState(INITIALIZED);
+
+        verify(mPartMock).transitionTo(INITIALIZED, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
+    public void testInitialize_dozeSuppressed_alwaysOnEnabled_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
+
+        mMachine.requestState(INITIALIZED);
+
+        verify(mPartMock).transitionTo(INITIALIZED, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
+    public void testInitialize_dozeSuppressed_afterDocked_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mDockManager.isDocked()).thenReturn(true);
+
+        mMachine.requestState(INITIALIZED);
+
+        verify(mPartMock).transitionTo(INITIALIZED, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
+    public void testInitialize_dozeSuppressed_alwaysOnDisabled_afterDockPaused_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(false);
+        when(mDockManager.isDocked()).thenReturn(true);
+        when(mDockManager.isHidden()).thenReturn(true);
+
+        mMachine.requestState(INITIALIZED);
+
+        verify(mPartMock).transitionTo(INITIALIZED, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
+    public void testInitialize_dozeSuppressed_alwaysOnEnabled_afterDockPaused_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
+        when(mDockManager.isDocked()).thenReturn(true);
+        when(mDockManager.isHidden()).thenReturn(true);
+
+        mMachine.requestState(INITIALIZED);
+
+        verify(mPartMock).transitionTo(INITIALIZED, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
     public void testPulseDone_goesToDoze() {
         when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(false);
         mMachine.requestState(INITIALIZED);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
 
         mMachine.requestState(DOZE_PULSE_DONE);
@@ -155,7 +214,7 @@
     public void testPulseDone_goesToAoD() {
         when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
         mMachine.requestState(INITIALIZED);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
 
         mMachine.requestState(DOZE_PULSE_DONE);
@@ -165,10 +224,24 @@
     }
 
     @Test
+    public void testPulseDone_dozeSuppressed_goesToSuppressed() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
+        mMachine.requestState(INITIALIZED);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
+        mMachine.requestState(DOZE_PULSING);
+
+        mMachine.requestState(DOZE_PULSE_DONE);
+
+        verify(mPartMock).transitionTo(DOZE_PULSE_DONE, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
     public void testPulseDone_afterDocked_goesToDockedAoD() {
         when(mDockManager.isDocked()).thenReturn(true);
         mMachine.requestState(INITIALIZED);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
 
         mMachine.requestState(DOZE_PULSE_DONE);
@@ -178,12 +251,42 @@
     }
 
     @Test
+    public void testPulseDone_dozeSuppressed_afterDocked_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mDockManager.isDocked()).thenReturn(true);
+        mMachine.requestState(INITIALIZED);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
+        mMachine.requestState(DOZE_PULSING);
+
+        mMachine.requestState(DOZE_PULSE_DONE);
+
+        verify(mPartMock).transitionTo(DOZE_PULSE_DONE, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
     public void testPulseDone_afterDockPaused_goesToDoze() {
         when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
         when(mDockManager.isDocked()).thenReturn(true);
         when(mDockManager.isHidden()).thenReturn(true);
         mMachine.requestState(INITIALIZED);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
+        mMachine.requestState(DOZE_PULSING);
+
+        mMachine.requestState(DOZE_PULSE_DONE);
+
+        verify(mPartMock).transitionTo(DOZE_PULSE_DONE, DOZE);
+        assertEquals(DOZE, mMachine.getState());
+    }
+
+    @Test
+    public void testPulseDone_dozeSuppressed_afterDockPaused_goesToDoze() {
+        when(mConfigMock.dozeSuppressed(anyInt())).thenReturn(true);
+        when(mConfigMock.alwaysOnEnabled(anyInt())).thenReturn(true);
+        when(mDockManager.isDocked()).thenReturn(true);
+        when(mDockManager.isHidden()).thenReturn(true);
+        mMachine.requestState(INITIALIZED);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
 
         mMachine.requestState(DOZE_PULSE_DONE);
@@ -227,7 +330,7 @@
     public void testWakeLock_heldInPulseStates() {
         mMachine.requestState(INITIALIZED);
 
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         assertTrue(mWakeLockFake.isHeld());
 
         mMachine.requestState(DOZE_PULSING);
@@ -250,7 +353,7 @@
         mMachine.requestState(INITIALIZED);
 
         mMachine.requestState(DOZE);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
         mMachine.requestState(DOZE_PULSE_DONE);
 
@@ -262,9 +365,9 @@
         mMachine.requestState(INITIALIZED);
 
         mMachine.requestState(DOZE);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSE_DONE);
     }
 
@@ -273,7 +376,7 @@
         mMachine.requestState(INITIALIZED);
 
         mMachine.requestState(DOZE);
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSE_DONE);
     }
 
@@ -286,7 +389,7 @@
             return null;
         }).when(mPartMock).transitionTo(any(), eq(DOZE_REQUEST_PULSE));
 
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
 
         assertEquals(DOZE_PULSING, mMachine.getState());
     }
@@ -295,9 +398,9 @@
     public void testPulseReason_getMatchesRequest() {
         mMachine.requestState(INITIALIZED);
         mMachine.requestState(DOZE);
-        mMachine.requestPulse(DozeEvent.REASON_SENSOR_DOUBLE_TAP);
+        mMachine.requestPulse(DozeLog.REASON_SENSOR_DOUBLE_TAP);
 
-        assertEquals(DozeEvent.REASON_SENSOR_DOUBLE_TAP, mMachine.getPulseReason());
+        assertEquals(DozeLog.REASON_SENSOR_DOUBLE_TAP, mMachine.getPulseReason());
     }
 
     @Test
@@ -309,7 +412,7 @@
             if (newState == DOZE_REQUEST_PULSE
                     || newState == DOZE_PULSING
                     || newState == DOZE_PULSE_DONE) {
-                assertEquals(DozeEvent.PULSE_REASON_NOTIFICATION, mMachine.getPulseReason());
+                assertEquals(DozeLog.PULSE_REASON_NOTIFICATION, mMachine.getPulseReason());
             } else {
                 assertTrue("unexpected state " + newState,
                         newState == DOZE || newState == DOZE_AOD);
@@ -317,7 +420,7 @@
             return null;
         }).when(mPartMock).transitionTo(any(), any());
 
-        mMachine.requestPulse(DozeEvent.PULSE_REASON_NOTIFICATION);
+        mMachine.requestPulse(DozeLog.PULSE_REASON_NOTIFICATION);
         mMachine.requestState(DOZE_PULSING);
         mMachine.requestState(DOZE_PULSE_DONE);
     }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
index 399f723f..9117ea8 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeScreenBrightnessTest.java
@@ -173,6 +173,21 @@
     }
 
     @Test
+    public void testPulsing_withoutLightSensor_setsAoDDimmingScrimTransparent() throws Exception {
+        mScreen = new DozeScreenBrightness(mContext, mServiceFake, mSensorManager,
+                null /* sensor */, mBroadcastDispatcher, mDozeHost, null /* handler */,
+                DEFAULT_BRIGHTNESS, SENSOR_TO_BRIGHTNESS, SENSOR_TO_OPACITY,
+                true /* debuggable */);
+        mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
+        mScreen.transitionTo(INITIALIZED, DOZE);
+        reset(mDozeHost);
+
+        mScreen.transitionTo(DOZE, DOZE_REQUEST_PULSE);
+
+        verify(mDozeHost).setAodDimmingScrim(eq(0f));
+    }
+
+    @Test
     public void testDockedAod_usesLightSensor() {
         mScreen.transitionTo(UNINITIALIZED, INITIALIZED);
         mScreen.transitionTo(INITIALIZED, DOZE_AOD_DOCKED);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
index 775acdf..ff03fba 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSensorsTest.java
@@ -115,14 +115,14 @@
 
         mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
         mTestableLooper.processAllMessages();
-        verify(mCallback).onSensorPulse(eq(DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
+        verify(mCallback).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
                 anyFloat(), anyFloat(), eq(null));
 
         mDozeSensors.requestTemporaryDisable();
         reset(mCallback);
         mWakeLockScreenListener.onSensorChanged(mock(SensorManagerPlugin.SensorEvent.class));
         mTestableLooper.processAllMessages();
-        verify(mCallback, never()).onSensorPulse(eq(DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
+        verify(mCallback, never()).onSensorPulse(eq(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN),
                 anyFloat(), anyFloat(), eq(null));
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressedHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressedHandlerTest.java
new file mode 100644
index 0000000..5bdca76
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeSuppressedHandlerTest.java
@@ -0,0 +1,77 @@
+/*
+ * 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.systemui.doze;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.hardware.display.AmbientDisplayConfiguration;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper.RunWithLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.doze.DozeSuppressedHandler.DozeSuppressedSettingObserver;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@RunWithLooper
+public class DozeSuppressedHandlerTest extends SysuiTestCase {
+    @Mock private DozeMachine mMachine;
+    @Mock private DozeSuppressedSettingObserver mObserver;
+    private AmbientDisplayConfiguration mConfig;
+    private DozeSuppressedHandler mSuppressedHandler;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mConfig = DozeConfigurationUtil.createMockConfig();
+        mSuppressedHandler = new DozeSuppressedHandler(mContext, mConfig, mMachine, mObserver);
+    }
+
+    @Test
+    public void transitionTo_initialized_registersObserver() throws Exception {
+        mSuppressedHandler.transitionTo(DozeMachine.State.UNINITIALIZED,
+                DozeMachine.State.INITIALIZED);
+
+        verify(mObserver).register();
+    }
+
+    @Test
+    public void transitionTo_finish_unregistersObserver() throws Exception {
+        mSuppressedHandler.transitionTo(DozeMachine.State.INITIALIZED,
+                DozeMachine.State.FINISH);
+
+        verify(mObserver).unregister();
+    }
+
+    @Test
+    public void transitionTo_doze_doesNothing() throws Exception {
+        mSuppressedHandler.transitionTo(DozeMachine.State.INITIALIZED,
+                DozeMachine.State.DOZE);
+
+        verify(mObserver, never()).register();
+        verify(mObserver, never()).unregister();
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
index bf10609..debc9d6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/doze/DozeTriggersTest.java
@@ -165,10 +165,10 @@
     @Test
     public void testProximitySensorNotAvailablel() {
         mProximitySensor.setSensorAvailable(false);
-        mTriggers.onSensor(DozeEvent.PULSE_REASON_SENSOR_LONG_PRESS, 100, 100, null);
-        mTriggers.onSensor(DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN, 100, 100,
+        mTriggers.onSensor(DozeLog.PULSE_REASON_SENSOR_LONG_PRESS, 100, 100, null);
+        mTriggers.onSensor(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN, 100, 100,
                 new float[]{1});
-        mTriggers.onSensor(DozeEvent.REASON_SENSOR_TAP, 100, 100, null);
+        mTriggers.onSensor(DozeLog.REASON_SENSOR_TAP, 100, 100, null);
     }
 
     private void waitForSensorManager() {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/EglHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/EglHelperTest.java
index a5722e2..4b47093 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/EglHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/EglHelperTest.java
@@ -16,52 +16,116 @@
 
 package com.android.systemui.glwallpaper;
 
-import static org.junit.Assert.*;
-import static org.mockito.Mockito.RETURNS_DEFAULTS;
-import static org.mockito.Mockito.mock;
+import static com.google.common.truth.Truth.assertThat;
 
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atMost;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.graphics.PixelFormat;
 import android.testing.AndroidTestingRunner;
-import android.testing.TestableLooper;
+import android.view.Surface;
+import android.view.SurfaceControl;
 import android.view.SurfaceHolder;
+import android.view.SurfaceSession;
 
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
 import org.mockito.Mock;
-
+import org.mockito.MockitoAnnotations;
+import org.mockito.Spy;
 
 @SmallTest
 @RunWith(AndroidTestingRunner.class)
-@TestableLooper.RunWithLooper
 public class EglHelperTest extends SysuiTestCase {
 
-    @Mock
+    @Spy
     private EglHelper mEglHelper;
+
     @Mock
     private SurfaceHolder mSurfaceHolder;
 
     @Before
     public void setUp() throws Exception {
-        mEglHelper = mock(EglHelper.class, RETURNS_DEFAULTS);
-        mSurfaceHolder = mock(SurfaceHolder.class, RETURNS_DEFAULTS);
+        MockitoAnnotations.initMocks(this);
+        prepareSurface();
+    }
+
+    @After
+    public void tearDown() {
+        mSurfaceHolder.getSurface().destroy();
+        mSurfaceHolder = null;
+    }
+
+    private void prepareSurface() {
+        final SurfaceSession session = new SurfaceSession();
+        final SurfaceControl control = new SurfaceControl.Builder(session)
+                .setName("Test")
+                .setBufferSize(100, 100)
+                .setFormat(PixelFormat.RGB_888)
+                .build();
+        final Surface surface = new Surface();
+        surface.copyFrom(control);
+        when(mSurfaceHolder.getSurface()).thenReturn(surface);
+        assertThat(mSurfaceHolder.getSurface()).isNotNull();
+        assertThat(mSurfaceHolder.getSurface().isValid()).isTrue();
     }
 
     @Test
     public void testInit_finish() {
         mEglHelper.init(mSurfaceHolder, false /* wideColorGamut */);
+        assertThat(mEglHelper.hasEglDisplay()).isTrue();
+        assertThat(mEglHelper.hasEglContext()).isTrue();
+        assertThat(mEglHelper.hasEglSurface()).isTrue();
+        verify(mEglHelper).askCreatingEglWindowSurface(
+                any(SurfaceHolder.class), eq(null), anyInt());
+
+        mEglHelper.finish();
+        assertThat(mEglHelper.hasEglSurface()).isFalse();
+        assertThat(mEglHelper.hasEglContext()).isFalse();
+        assertThat(mEglHelper.hasEglDisplay()).isFalse();
+    }
+
+    @Test
+    public void testInit_finish_wide_gamut() {
+        // In EglHelper, EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT = 0x3490;
+        doReturn(0x3490).when(mEglHelper).getWcgCapability();
+        // In EglHelper, KHR_GL_COLOR_SPACE = "EGL_KHR_gl_colorspace";
+        doReturn(true).when(mEglHelper).checkExtensionCapability("EGL_KHR_gl_colorspace");
+        ArgumentCaptor<int[]> ac = ArgumentCaptor.forClass(int[].class);
+        // {EGL_GL_COLORSPACE_KHR, EGL_GL_COLORSPACE_DISPLAY_P3_PASSTHROUGH_EXT, EGL_NONE}
+        final int[] expectedArgument = new int[] {0x309D, 0x3490, 0x3038};
+
+        mEglHelper.init(mSurfaceHolder, true /* wideColorGamut */);
+        verify(mEglHelper)
+                .askCreatingEglWindowSurface(any(SurfaceHolder.class), ac.capture(), anyInt());
+        assertThat(ac.getValue()).isNotNull();
+        assertThat(ac.getValue()).isEqualTo(expectedArgument);
         mEglHelper.finish();
     }
 
     @Test
     public void testFinish_shouldNotCrash() {
-        assertFalse(mEglHelper.hasEglDisplay());
-        assertFalse(mEglHelper.hasEglSurface());
-        assertFalse(mEglHelper.hasEglContext());
+        mEglHelper.terminateEglDisplay();
+        assertThat(mEglHelper.hasEglDisplay()).isFalse();
+        assertThat(mEglHelper.hasEglSurface()).isFalse();
+        assertThat(mEglHelper.hasEglContext()).isFalse();
 
         mEglHelper.finish();
+        verify(mEglHelper, never()).destroyEglContext();
+        verify(mEglHelper, never()).destroyEglSurface();
+        verify(mEglHelper, atMost(1)).terminateEglDisplay();
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java
new file mode 100644
index 0000000..d881fd5
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/glwallpaper/ImageWallpaperRendererTest.java
@@ -0,0 +1,106 @@
+/*
+ * 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.systemui.glwallpaper;
+
+import static com.android.systemui.glwallpaper.GLWallpaperRenderer.SurfaceProxy;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.spy;
+
+import android.app.WallpaperManager;
+import android.app.WallpaperManager.ColorManagementProxy;
+import android.graphics.Bitmap;
+import android.graphics.ColorSpace;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper(setAsMainLooper = true)
+public class ImageWallpaperRendererTest extends SysuiTestCase {
+
+    private WallpaperManager mWpmSpy;
+    private SurfaceProxy mSurfaceProxy;
+
+    @Before
+    public void setUp() throws Exception {
+        final WallpaperManager wpm = mContext.getSystemService(WallpaperManager.class);
+        mWpmSpy = spy(wpm);
+        mContext.addMockSystemService(WallpaperManager.class, mWpmSpy);
+
+        mSurfaceProxy = new SurfaceProxy() {
+            @Override
+            public void requestRender() {
+                // NO-op
+            }
+
+            @Override
+            public void preRender() {
+                // No-op
+            }
+
+            @Override
+            public void postRender() {
+                // No-op
+            }
+        };
+    }
+
+    @Test
+    public void testWcgContent() throws IOException {
+        final Bitmap srgbBitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888);
+        final Bitmap p3Bitmap = Bitmap.createBitmap(100, 100, Bitmap.Config.ARGB_8888,
+                false /* hasAlpha */, ColorSpace.get(ColorSpace.Named.DISPLAY_P3));
+
+        final ColorManagementProxy proxy = new ColorManagementProxy(mContext);
+        final ColorManagementProxy cmProxySpy = spy(proxy);
+        final Set<ColorSpace> supportedWideGamuts = new HashSet<>();
+        supportedWideGamuts.add(ColorSpace.get(ColorSpace.Named.DISPLAY_P3));
+
+        try {
+            doReturn(true).when(mWpmSpy).shouldEnableWideColorGamut();
+            doReturn(cmProxySpy).when(mWpmSpy).getColorManagementProxy();
+            doReturn(supportedWideGamuts).when(cmProxySpy).getSupportedColorSpaces();
+
+            mWpmSpy.setBitmap(p3Bitmap);
+            ImageWallpaperRenderer rendererP3 = new ImageWallpaperRenderer(mContext, mSurfaceProxy);
+            assertThat(rendererP3.isWcgContent()).isTrue();
+
+            mWpmSpy.setBitmap(srgbBitmap);
+            ImageWallpaperRenderer renderer = new ImageWallpaperRenderer(mContext, mSurfaceProxy);
+            assertThat(renderer.isWcgContent()).isFalse();
+        } finally {
+            srgbBitmap.recycle();
+            p3Bitmap.recycle();
+        }
+    }
+
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
index c9b6790..92c1d76 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/KeyguardSliceProviderTest.java
@@ -51,6 +51,7 @@
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.phone.DozeParameters;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
+import com.android.systemui.statusbar.policy.NextAlarmController;
 import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.util.wakelock.SettableWakeLock;
 
@@ -87,6 +88,8 @@
     private SettableWakeLock mMediaWakeLock;
     @Mock
     private DozeParameters mDozeParameters;
+    @Mock
+    private NextAlarmController mNextAlarmController;
     private KeyguardUpdateMonitor mKeyguardUpdateMonitor;
     private TestableKeyguardSliceProvider mProvider;
     private boolean mIsZenMode;
@@ -97,9 +100,9 @@
         mKeyguardUpdateMonitor = mDependency.injectMockDependency(KeyguardUpdateMonitor.class);
         mIsZenMode = false;
         mProvider = new TestableKeyguardSliceProvider();
+        mProvider.setContextAvailableCallback(context -> { });
         mProvider.attachInfo(getContext(), null);
-        mProvider.initDependencies(mNotificationMediaManager, mStatusBarStateController,
-                mKeyguardBypassController, mDozeParameters);
+        reset(mContentResolver);
         SliceProvider.setSpecs(new HashSet<>(Arrays.asList(SliceSpecs.LIST)));
     }
 
@@ -254,13 +257,16 @@
         }
 
         @Override
-        public boolean onCreateSliceProvider() {
-            super.onCreateSliceProvider();
+        protected void inject() {
             mAlarmManager = KeyguardSliceProviderTest.this.mAlarmManager;
             mContentResolver = KeyguardSliceProviderTest.this.mContentResolver;
             mZenModeController = KeyguardSliceProviderTest.this.mZenModeController;
             mMediaWakeLock = KeyguardSliceProviderTest.this.mMediaWakeLock;
-            return true;
+            mDozeParameters = KeyguardSliceProviderTest.this.mDozeParameters;
+            mNextAlarmController = KeyguardSliceProviderTest.this.mNextAlarmController;
+            mStatusBarStateController = KeyguardSliceProviderTest.this.mStatusBarStateController;
+            mKeyguardBypassController = KeyguardSliceProviderTest.this.mKeyguardBypassController;
+            mMediaManager = KeyguardSliceProviderTest.this.mNotificationMediaManager;
         }
 
         @Override
diff --git a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java
index d26ae6a..3439fe5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/keyguard/WorkLockActivityControllerTest.java
@@ -119,6 +119,7 @@
         doReturn(code).when(mIActivityTaskManager).startActivityAsUser(
                 eq((IApplicationThread) null),
                 eq((String) null),
+                eq((String) null),
                 any(Intent.class),
                 eq((String) null),
                 eq((IBinder) null),
@@ -134,6 +135,7 @@
         verify(mIActivityTaskManager).startActivityAsUser(
                 eq((IApplicationThread) null),
                 eq((String) null),
+                eq((String) null),
                 any(Intent.class),
                 eq((String) null),
                 eq((IBinder) null),
diff --git a/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java b/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java
deleted file mode 100644
index 4a90bb9..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/log/RichEventTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * Copyright (C) 2019 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.log;
-
-import static junit.framework.Assert.assertEquals;
-
-import android.testing.AndroidTestingRunner;
-
-import androidx.test.filters.SmallTest;
-
-import com.android.systemui.SysuiTestCase;
-
-import junit.framework.Assert;
-
-import org.junit.Test;
-import org.junit.runner.RunWith;
-
-@SmallTest
-@RunWith(AndroidTestingRunner.class)
-public class RichEventTest extends SysuiTestCase {
-
-    private static final int TOTAL_EVENT_TYPES = 1;
-
-    @Test
-    public void testCreateRichEvent_invalidType() {
-        try {
-            // indexing for events starts at 0, so TOTAL_EVENT_TYPES is an invalid type
-            new TestableRichEvent(Event.DEBUG, TOTAL_EVENT_TYPES, "msg");
-        } catch (IllegalArgumentException e) {
-            // expected
-            return;
-        }
-
-        Assert.fail("Expected an invalidArgumentException since the event type was invalid.");
-    }
-
-    @Test
-    public void testCreateRichEvent() {
-        final int eventType = 0;
-        RichEvent e = new TestableRichEvent(Event.DEBUG, eventType, "msg");
-        assertEquals(e.getType(), eventType);
-    }
-
-    class TestableRichEvent extends RichEvent {
-        TestableRichEvent(int logLevel, int type, String reason) {
-            init(logLevel, type, reason);
-        }
-
-        @Override
-        public String[] getEventLabels() {
-            return new String[]{"ACTION_NAME"};
-        }
-    }
-
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java b/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java
deleted file mode 100644
index e7b317e..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/log/SysuiLogTest.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2019 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.log;
-
-import static junit.framework.Assert.assertEquals;
-
-import android.testing.AndroidTestingRunner;
-
-import androidx.test.filters.SmallTest;
-
-import com.android.systemui.DumpController;
-import com.android.systemui.SysuiTestCase;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.Mock;
-import org.mockito.MockitoAnnotations;
-
-@SmallTest
-@RunWith(AndroidTestingRunner.class)
-public class SysuiLogTest extends SysuiTestCase {
-    private static final String TEST_ID = "TestLogger";
-    private static final String TEST_MSG = "msg";
-    private static final int MAX_LOGS = 5;
-
-    @Mock
-    private DumpController mDumpController;
-    private SysuiLog<Event> mSysuiLog;
-
-    @Before
-    public void setup() {
-        MockitoAnnotations.initMocks(this);
-    }
-
-    @Test
-    public void testLogDisabled_noLogsWritten() {
-        mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, false);
-        assertEquals(null, mSysuiLog.mTimeline);
-
-        mSysuiLog.log(createEvent(TEST_MSG));
-        assertEquals(null, mSysuiLog.mTimeline);
-    }
-
-    @Test
-    public void testLogEnabled_logWritten() {
-        mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
-        assertEquals(0, mSysuiLog.mTimeline.size());
-
-        mSysuiLog.log(createEvent(TEST_MSG));
-        assertEquals(1, mSysuiLog.mTimeline.size());
-    }
-
-    @Test
-    public void testMaxLogs() {
-        mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
-        assertEquals(mSysuiLog.mTimeline.size(), 0);
-
-        for (int i = 0; i < MAX_LOGS + 1; i++) {
-            mSysuiLog.log(createEvent(TEST_MSG + i));
-        }
-
-        assertEquals(MAX_LOGS, mSysuiLog.mTimeline.size());
-
-        // check the first message (msg0) was replaced with msg1:
-        assertEquals(TEST_MSG + "1", mSysuiLog.mTimeline.getFirst().getMessage());
-    }
-
-    @Test
-    public void testRecycleLogs() {
-        // GIVEN a SysuiLog with one log
-        mSysuiLog = new TestSysuiLog(mDumpController, TEST_ID, MAX_LOGS, true);
-        Event e = createEvent(TEST_MSG); // msg
-        mSysuiLog.log(e); // Logs: [msg]
-
-        Event recycledEvent = null;
-        // WHEN we add MAX_LOGS after the first log
-        for (int i = 0; i < MAX_LOGS; i++) {
-            recycledEvent = mSysuiLog.log(createEvent(TEST_MSG + i));
-        }
-        // Logs: [msg1, msg2, msg3, msg4]
-
-        // THEN we see the recycledEvent is e
-        assertEquals(e, recycledEvent);
-    }
-
-    private Event createEvent(String msg) {
-        return new Event().init(msg);
-    }
-
-    public class TestSysuiLog extends SysuiLog<Event> {
-        protected TestSysuiLog(DumpController dumpController, String id, int maxLogs,
-                boolean enabled) {
-            super(dumpController, id, maxLogs, enabled, false);
-        }
-    }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSCarrierGroupControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSCarrierGroupControllerTest.java
index 1bfe1b1..715087d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSCarrierGroupControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSCarrierGroupControllerTest.java
@@ -217,6 +217,6 @@
         mSignalCallback.setMobileDataIndicators(
                 mock(NetworkController.IconState.class),
                 mock(NetworkController.IconState.class),
-                0, 0, true, true, "", "", true, 0, true);
+                0, 0, true, true, "", "", "", true, 0, true);
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
index b7e9f07..d668458 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSFragmentTest.java
@@ -42,6 +42,7 @@
 import com.android.systemui.SysuiBaseFragmentTest;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.CommandQueue;
@@ -104,7 +105,8 @@
                 mock(QSFactoryImpl.class), new Handler(), Looper.myLooper(),
                 mock(PluginManager.class), mock(TunerService.class),
                 () -> mock(AutoTileManager.class), mock(DumpController.class),
-                mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)));
+                mock(BroadcastDispatcher.class), Optional.of(mock(StatusBar.class)),
+                mock(QSLogger.class));
         qs.setHost(host);
 
         qs.setListening(true);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java
index 38cdee4..b126d36 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSPanelTest.java
@@ -35,9 +35,12 @@
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.systemui.DumpController;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.plugins.qs.QSTileView;
 import com.android.systemui.qs.customize.QSCustomizer;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSTileImpl;
 
 import org.junit.Before;
@@ -65,6 +68,12 @@
     private QSCustomizer mCustomizer;
     @Mock
     private QSTileImpl dndTile;
+    @Mock
+    private BroadcastDispatcher mBroadcastDispatcher;
+    @Mock
+    private DumpController mDumpController;
+    @Mock
+    private QSLogger mQSLogger;
     private ViewGroup mParentView;
     @Mock
     private QSDetail.Callback mCallback;
@@ -78,7 +87,8 @@
         mTestableLooper = TestableLooper.get(this);
         mTestableLooper.runWithLooper(() -> {
             mMetricsLogger = mDependency.injectMockDependency(MetricsLogger.class);
-            mQsPanel = new QSPanel(mContext, null);
+            mQsPanel = new QSPanel(mContext, null, mDumpController, mBroadcastDispatcher,
+                    mQSLogger);
             // Provides a parent with non-zero size for QSPanel
             mParentView = new FrameLayout(mContext);
             mParentView.addView(mQsPanel);
@@ -97,8 +107,10 @@
     public void testSetExpanded_Metrics() {
         mQsPanel.setExpanded(true);
         verify(mMetricsLogger).visibility(eq(MetricsEvent.QS_PANEL), eq(true));
+        verify(mQSLogger).logPanelExpanded(true, mQsPanel.getDumpableTag());
         mQsPanel.setExpanded(false);
         verify(mMetricsLogger).visibility(eq(MetricsEvent.QS_PANEL), eq(false));
+        verify(mQSLogger).logPanelExpanded(false, mQsPanel.getDumpableTag());
     }
 
     @Test
@@ -110,6 +122,14 @@
         verify(mCallback).onShowingDetail(any(), anyInt(), anyInt());
     }
 
+    @Test
+    public void setListening() {
+        when(dndTile.getTileSpec()).thenReturn("dnd");
+
+        mQsPanel.setListening(true);
+        verify(mQSLogger).logAllTilesChangeListening(true, mQsPanel.getDumpableTag(), "dnd");
+    }
+
 /*    @Test
     public void testOpenDetailsWithNullParameter_NoException() {
         mTestableLooper.processAllMessages();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
index 47933ba..e58a3a6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSSecurityFooterTest.java
@@ -16,8 +16,11 @@
 
 import static junit.framework.Assert.assertEquals;
 
+import static org.junit.Assert.assertFalse;
 import static org.mockito.ArgumentMatchers.anyInt;
 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.content.Context;
@@ -447,6 +450,21 @@
                 view.findViewById(R.id.vpn_subtitle).getVisibility());
     }
 
+    @Test
+    public void testNoClickWhenGone() {
+        QSTileHost mockHost = mock(QSTileHost.class);
+        mFooter.setHostEnvironment(mockHost);
+        mFooter.refreshState();
+
+        TestableLooper.get(this).processAllMessages();
+
+        assertFalse(mFooter.hasFooter());
+        mFooter.onClick(mFooter.getView());
+
+        // Proxy for dialog being created
+        verify(mockHost, never()).collapsePanels();
+    }
+
     private CharSequence addLink(CharSequence description) {
         final SpannableStringBuilder message = new SpannableStringBuilder();
         message.append(description);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
index 34111e2..d0c32ce 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/QSTileHostTest.java
@@ -23,6 +23,7 @@
 
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
 import android.app.ActivityManager;
@@ -45,6 +46,7 @@
 import com.android.systemui.plugins.qs.QSFactory;
 import com.android.systemui.plugins.qs.QSTile;
 import com.android.systemui.qs.external.CustomTile;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.qs.tileimpl.QSTileImpl;
 import com.android.systemui.shared.plugins.PluginManager;
@@ -95,6 +97,8 @@
     @Mock
     private StatusBar mStatusBar;
     @Mock
+    private QSLogger mQSLogger;
+    @Mock
     private CustomTile mCustomTile;
 
     private Handler mHandler;
@@ -108,7 +112,7 @@
         mHandler = new Handler(mLooper.getLooper());
         mQSTileHost = new TestQSTileHost(mContext, mIconController, mDefaultFactory, mHandler,
                 mLooper.getLooper(), mPluginManager, mTunerService, mAutoTiles, mDumpController,
-                mBroadcastDispatcher, mStatusBar);
+                mBroadcastDispatcher, mStatusBar, mQSLogger);
         setUpTileFactory();
         Settings.Secure.putStringForUser(mContext.getContentResolver(), QSTileHost.TILES_SETTING,
                 "", ActivityManager.getCurrentUser());
@@ -187,6 +191,7 @@
         assertEquals(1, mQSTileHost.getTiles().size());
         QSTile element = CollectionUtils.firstOrNull(mQSTileHost.getTiles());
         assertTrue(element instanceof TestTile1);
+        verify(mQSLogger).logTileAdded("spec1");
     }
 
     @Test
@@ -200,6 +205,9 @@
         QSTile[] elements = mQSTileHost.getTiles().toArray(new QSTile[0]);
         assertTrue(elements[0] instanceof TestTile1);
         assertTrue(elements[1] instanceof TestTile2);
+
+        verify(mQSLogger).logTileAdded("spec1");
+        verify(mQSLogger).logTileAdded("spec2");
     }
 
     @Test
@@ -210,6 +218,8 @@
         mQSTileHost.onTuningChanged(QSTileHost.TILES_SETTING, "default");
         assertEquals(1, mQSTileHost.getTiles().size());
         assertEquals(mCustomTile, CollectionUtils.firstOrNull(mQSTileHost.getTiles()));
+
+        verify(mQSLogger).logTileAdded(CUSTOM_TILE_SPEC);
     }
 
     private static class TestQSTileHost extends QSTileHost {
@@ -217,10 +227,10 @@
                 QSFactoryImpl defaultFactory, Handler mainHandler, Looper bgLooper,
                 PluginManager pluginManager, TunerService tunerService,
                 Provider<AutoTileManager> autoTiles, DumpController dumpController,
-                BroadcastDispatcher broadcastDispatcher, StatusBar statusBar) {
+                BroadcastDispatcher broadcastDispatcher, StatusBar statusBar, QSLogger qsLogger) {
             super(context, iconController, defaultFactory, mainHandler, bgLooper, pluginManager,
                     tunerService, autoTiles, dumpController, broadcastDispatcher,
-                    Optional.of(statusBar));
+                    Optional.of(statusBar), qsLogger);
         }
 
         @Override
@@ -280,9 +290,6 @@
         }
 
         @Override
-        protected void handleSetListening(boolean listening) {}
-
-        @Override
         public CharSequence getTileLabel() {
             return null;
         }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
index 4becd52..9fe2569 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/CustomTileTest.kt
@@ -88,8 +88,8 @@
     }
 
     @Test
-    fun testBooleanTileHasBooleanState() {
-        `when`(mTileServiceManager.isBooleanTile).thenReturn(true)
+    fun testToggleableTileHasBooleanState() {
+        `when`(mTileServiceManager.isToggleableTile).thenReturn(true)
         customTile = CustomTile.create(mTileHost, TILE_SPEC)
 
         assertTrue(customTile.state is QSTile.BooleanState)
@@ -104,7 +104,7 @@
 
     @Test
     fun testValueUpdatedInBooleanTile() {
-        `when`(mTileServiceManager.isBooleanTile).thenReturn(true)
+        `when`(mTileServiceManager.isToggleableTile).thenReturn(true)
         customTile = CustomTile.create(mTileHost, TILE_SPEC)
         customTile.qsTile.icon = mock(Icon::class.java)
         `when`(customTile.qsTile.icon.loadDrawable(any(Context::class.java)))
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
index 9e5e582..42fd288 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileLifecycleManagerTest.java
@@ -105,7 +105,7 @@
             defaultServiceInfo = new ServiceInfo();
             defaultServiceInfo.metaData = new Bundle();
             defaultServiceInfo.metaData.putBoolean(TileService.META_DATA_ACTIVE_TILE, true);
-            defaultServiceInfo.metaData.putBoolean(TileService.META_DATA_BOOLEAN_TILE, true);
+            defaultServiceInfo.metaData.putBoolean(TileService.META_DATA_TOGGLEABLE_TILE, true);
         }
         when(mMockPackageManagerAdapter.getServiceInfo(any(), anyInt(), anyInt()))
                 .thenReturn(defaultServiceInfo);
@@ -244,7 +244,7 @@
     }
 
     @Test
-    public void testBooleanTile() throws Exception {
-        assertTrue(mStateManager.isBooleanTile());
+    public void testToggleableTile() throws Exception {
+        assertTrue(mStateManager.isToggleableTile());
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java
index 2737b19..ab6b304 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/external/TileServicesTest.java
@@ -34,6 +34,7 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.broadcast.BroadcastDispatcher;
 import com.android.systemui.qs.QSTileHost;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.qs.tileimpl.QSFactoryImpl;
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.phone.AutoTileManager;
@@ -78,6 +79,8 @@
     private DumpController mDumpController;
     @Mock
     private StatusBar mStatusBar;
+    @Mock
+    private QSLogger mQSLogger;
 
     @Before
     public void setUp() throws Exception {
@@ -94,7 +97,8 @@
                 () -> mAutoTileManager,
                 mDumpController,
                 mBroadcastDispatcher,
-                Optional.of(mStatusBar));
+                Optional.of(mStatusBar),
+                mQSLogger);
         mTileService = new TestTileServices(host, Looper.getMainLooper(), mBroadcastDispatcher);
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
index 6bd24b9..4fada33 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/qs/tileimpl/QSTileImplTest.java
@@ -25,6 +25,7 @@
 import static org.junit.Assert.assertEquals;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Matchers.argThat;
 import static org.mockito.Mockito.clearInvocations;
@@ -38,6 +39,7 @@
 
 import android.content.Intent;
 import android.metrics.LogMaker;
+import android.service.quicksettings.Tile;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.testing.TestableLooper.RunWithLooper;
@@ -52,6 +54,7 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.qs.QSHost;
 import com.android.systemui.qs.QSTileHost;
+import com.android.systemui.qs.logging.QSLogger;
 import com.android.systemui.statusbar.StatusBarState;
 
 import org.junit.Before;
@@ -61,6 +64,7 @@
 import org.mockito.ArgumentCaptor;
 import org.mockito.ArgumentMatcher;
 import org.mockito.Captor;
+import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
 @RunWith(AndroidTestingRunner.class)
@@ -69,6 +73,11 @@
 public class QSTileImplTest extends SysuiTestCase {
 
     public static final int POSITION = 14;
+    private static final String SPEC = "spec";
+
+    @Mock
+    private QSLogger mQsLogger;
+
     private TestableLooper mTestableLooper;
     private TileImpl mTile;
     private QSTileHost mHost;
@@ -81,7 +90,6 @@
     @Before
     public void setup() throws Exception {
         MockitoAnnotations.initMocks(this);
-        String spec = "spec";
         mTestableLooper = TestableLooper.get(this);
         mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper());
         mDependency.injectMockDependency(ActivityStarter.class);
@@ -89,12 +97,13 @@
         mStatusBarStateController =
             mDependency.injectMockDependency(StatusBarStateController.class);
         mHost = mock(QSTileHost.class);
-        when(mHost.indexOf(spec)).thenReturn(POSITION);
+        when(mHost.indexOf(SPEC)).thenReturn(POSITION);
         when(mHost.getContext()).thenReturn(mContext.getBaseContext());
+        when(mHost.getQSLogger()).thenReturn(mQsLogger);
 
         mTile = spy(new TileImpl(mHost));
         mTile.mHandler = mTile.new H(mTestableLooper.getLooper());
-        mTile.setTileSpec(spec);
+        mTile.setTileSpec(SPEC);
     }
 
     @Test
@@ -104,6 +113,14 @@
     }
 
     @Test
+    public void testClick_log() {
+        when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+
+        mTile.click();
+        verify(mQsLogger).logTileClick(SPEC, StatusBarState.SHADE, Tile.STATE_ACTIVE);
+    }
+
+    @Test
     public void testClick_Metrics_Status_Bar_Status() {
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
         mTile.click();
@@ -119,6 +136,14 @@
     }
 
     @Test
+    public void testSecondaryClick_log() {
+        when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+
+        mTile.secondaryClick();
+        verify(mQsLogger).logTileSecondaryClick(SPEC, StatusBarState.SHADE, Tile.STATE_ACTIVE);
+    }
+
+    @Test
     public void testSecondaryClick_Metrics_Status_Bar_Status() {
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.KEYGUARD);
         mTile.secondaryClick();
@@ -133,6 +158,15 @@
         verify(mMetricsLogger).write(argThat(new TileLogMatcher(ACTION_QS_LONG_PRESS)));
     }
 
+
+    @Test
+    public void testLongClick_log() {
+        when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+
+        mTile.longClick();
+        verify(mQsLogger).logTileLongClick(SPEC, StatusBarState.SHADE, Tile.STATE_ACTIVE);
+    }
+
     @Test
     public void testLongClick_Metrics_Status_Bar_Status() {
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE_LOCKED);
@@ -200,6 +234,21 @@
         verify(mTile, never()).handleStale();
     }
 
+    @Test
+    public void testHandleDestroy_log() {
+        mTile.handleDestroy();
+        verify(mQsLogger).logTileDestroyed(eq(SPEC), anyString());
+    }
+
+    @Test
+    public void testListening_log() {
+        mTile.handleSetListening(true);
+        verify(mQsLogger).logTileChangeListening(SPEC, true);
+
+        mTile.handleSetListening(false);
+        verify(mQsLogger).logTileChangeListening(SPEC, false);
+    }
+
     private class TileLogMatcher implements ArgumentMatcher<LogMaker> {
 
         private final int mCategory;
@@ -236,6 +285,7 @@
     private static class TileImpl extends QSTileImpl<QSTile.BooleanState> {
         protected TileImpl(QSHost host) {
             super(host);
+            getState().state = Tile.STATE_ACTIVE;
         }
 
         @Override
@@ -264,11 +314,6 @@
         }
 
         @Override
-        protected void handleSetListening(boolean listening) {
-
-        }
-
-        @Override
         public CharSequence getTileLabel() {
             return null;
         }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/shared/recents/model/TaskKeyLruCacheTest.java b/packages/SystemUI/tests/src/com/android/systemui/shared/recents/model/TaskKeyLruCacheTest.java
deleted file mode 100644
index de6c87c7..0000000
--- a/packages/SystemUI/tests/src/com/android/systemui/shared/recents/model/TaskKeyLruCacheTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2019 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.shared.recents.model;
-
-
-import static junit.framework.TestCase.assertEquals;
-import static junit.framework.TestCase.assertNull;
-
-import static org.mockito.Mockito.mock;
-import static org.mockito.Mockito.times;
-import static org.mockito.Mockito.verify;
-
-import android.test.suitebuilder.annotation.SmallTest;
-
-import com.android.systemui.SysuiTestCase;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.junit.runner.RunWith;
-import org.mockito.junit.MockitoJUnitRunner;
-
-@SmallTest
-@RunWith(MockitoJUnitRunner.class)
-public class TaskKeyLruCacheTest extends SysuiTestCase {
-    private static int sCacheSize = 3;
-    private static int sIdTask1 = 1;
-    private static int sIdTask2 = 2;
-    private static int sIdTask3 = 3;
-    private static int sIdUser1 = 1;
-
-    TaskKeyLruCache.EvictionCallback mEvictionCallback;
-
-    TaskKeyLruCache<Integer> mCache;
-    private Task.TaskKey mKey1;
-    private Task.TaskKey mKey2;
-    private Task.TaskKey mKey3;
-
-    @Before
-    public void setup() {
-        mEvictionCallback = mock(TaskKeyLruCache.EvictionCallback.class);
-        mCache = new TaskKeyLruCache<>(sCacheSize, mEvictionCallback);
-
-        mKey1 = new Task.TaskKey(sIdTask1, 0, null, null, sIdUser1, System.currentTimeMillis());
-        mKey2 = new Task.TaskKey(sIdTask2, 0, null, null, sIdUser1, System.currentTimeMillis());
-        mKey3 = new Task.TaskKey(sIdTask3, 0, null, null, sIdUser1, System.currentTimeMillis());
-    }
-
-    @Test
-    public void addSingleItem_get_success() {
-        mCache.put(mKey1, 1);
-
-        assertEquals(1, (int) mCache.get(mKey1));
-    }
-
-    @Test
-    public void addSingleItem_getUninsertedItem_returnsNull() {
-        mCache.put(mKey1, 1);
-
-        assertNull(mCache.get(mKey2));
-    }
-
-    @Test
-    public void emptyCache_get_returnsNull() {
-        assertNull(mCache.get(mKey1));
-    }
-
-    @Test
-    public void updateItem_get_returnsSecond() {
-        mCache.put(mKey1, 1);
-        mCache.put(mKey1, 2);
-
-        assertEquals(2, (int) mCache.get(mKey1));
-        assertEquals(1, mCache.mKeys.size());
-    }
-
-    @Test
-    public void fillCache_put_evictsOldest() {
-        mCache.put(mKey1, 1);
-        mCache.put(mKey2, 2);
-        mCache.put(mKey3, 3);
-        Task.TaskKey key4 = new Task.TaskKey(sIdTask3 + 1, 0,
-                null, null, sIdUser1, System.currentTimeMillis());
-        mCache.put(key4, 4);
-
-        assertNull(mCache.get(mKey1));
-        assertEquals(3, mCache.mKeys.size());
-        assertEquals(mKey2, mCache.mKeys.valueAt(0));
-        verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
-    }
-
-    @Test
-    public void fillCache_remove_success() {
-        mCache.put(mKey1, 1);
-        mCache.put(mKey2, 2);
-        mCache.put(mKey3, 3);
-
-        mCache.remove(mKey2);
-
-        assertNull(mCache.get(mKey2));
-        assertEquals(2, mCache.mKeys.size());
-        verify(mEvictionCallback, times(0)).onEntryEvicted(mKey2);
-    }
-
-    @Test
-    public void put_evictionCallback_notCalled() {
-        mCache.put(mKey1, 1);
-        verify(mEvictionCallback, times(0)).onEntryEvicted(mKey1);
-    }
-
-    @Test
-    public void evictAll_evictionCallback_called() {
-        mCache.put(mKey1, 1);
-        mCache.evictAllCache();
-        verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
-    }
-
-    @Test
-    public void trimAll_evictionCallback_called() {
-        mCache.put(mKey1, 1);
-        mCache.put(mKey2, 2);
-        mCache.trimToSize(-1);
-        verify(mEvictionCallback, times(1)).onEntryEvicted(mKey1);
-        verify(mEvictionCallback, times(1)).onEntryEvicted(mKey2);
-
-    }
-}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
index 0a3bc6d..1d4b4be 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/KeyguardIndicationControllerTest.java
@@ -53,8 +53,8 @@
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.widget.LockPatternUtils;
 import com.android.keyguard.KeyguardUpdateMonitor;
-import com.android.keyguard.KeyguardUpdateMonitor.BatteryStatus;
 import com.android.settingslib.Utils;
+import com.android.settingslib.fuelgauge.BatteryStatus;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.dock.DockManager;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
index 3a6acce..c6d57e6 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationLockscreenUserManagerTest.java
@@ -95,7 +95,9 @@
     @Mock
     private KeyguardStateController mKeyguardStateController;
 
-    private int mCurrentUserId;
+    private UserInfo mCurrentUser;
+    private UserInfo mSecondaryUser;
+    private UserInfo mWorkUser;
     private TestNotificationLockscreenUserManager mLockscreenUserManager;
 
     @Before
@@ -103,10 +105,14 @@
         MockitoAnnotations.initMocks(this);
         mDependency.injectTestDependency(NotificationEntryManager.class, mEntryManager);
 
-        mCurrentUserId = ActivityManager.getCurrentUser();
+        int currentUserId = ActivityManager.getCurrentUser();
+        mCurrentUser = new UserInfo(currentUserId, "", 0);
+        mSecondaryUser = new UserInfo(currentUserId + 1, "", 0);
+        mWorkUser = new UserInfo(currentUserId + 2, "" /* name */, null /* iconPath */, 0,
+                UserManager.USER_TYPE_PROFILE_MANAGED);
 
-        when(mUserManager.getProfiles(mCurrentUserId)).thenReturn(Lists.newArrayList(
-                new UserInfo(mCurrentUserId, "", 0), new UserInfo(mCurrentUserId + 1, "", 0)));
+        when(mUserManager.getProfiles(currentUserId)).thenReturn(Lists.newArrayList(
+                mCurrentUser, mSecondaryUser, mWorkUser));
         mDependency.injectTestDependency(Dependency.MAIN_HANDLER,
                 Handler.createAsync(Looper.myLooper()));
 
@@ -141,15 +147,31 @@
         Settings.Secure.putInt(mContext.getContentResolver(),
                 Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1);
         mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
-        assertTrue(mLockscreenUserManager.userAllowsPrivateNotificationsInPublic(mCurrentUserId));
+        assertTrue(mLockscreenUserManager.userAllowsPrivateNotificationsInPublic(mCurrentUser.id));
     }
 
     @Test
     public void testLockScreenAllowPrivateNotificationsFalse() {
-        Settings.Secure.putInt(mContext.getContentResolver(),
-                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0);
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, mCurrentUser.id);
         mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
-        assertFalse(mLockscreenUserManager.userAllowsPrivateNotificationsInPublic(mCurrentUserId));
+        assertFalse(mLockscreenUserManager.userAllowsNotificationsInPublic(mCurrentUser.id));
+    }
+
+    @Test
+    public void testLockScreenAllowsWorkPrivateNotificationsFalse() {
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 0, mWorkUser.id);
+        mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
+        assertFalse(mLockscreenUserManager.allowsManagedPrivateNotificationsInPublic());
+    }
+
+    @Test
+    public void testLockScreenAllowsWorkPrivateNotificationsTrue() {
+        Settings.Secure.putIntForUser(mContext.getContentResolver(),
+                Settings.Secure.LOCK_SCREEN_ALLOW_PRIVATE_NOTIFICATIONS, 1, mWorkUser.id);
+        mLockscreenUserManager.getLockscreenSettingsObserverForTest().onChange(false);
+        assertTrue(mLockscreenUserManager.allowsManagedPrivateNotificationsInPublic());
     }
 
     @Test
@@ -163,16 +185,16 @@
     public void testActionUserSwitchedCallsOnUserSwitched() {
         Intent intent = new Intent()
                 .setAction(ACTION_USER_SWITCHED)
-                .putExtra(Intent.EXTRA_USER_HANDLE, mCurrentUserId + 1);
+                .putExtra(Intent.EXTRA_USER_HANDLE, mSecondaryUser.id);
         mLockscreenUserManager.getBaseBroadcastReceiverForTest().onReceive(mContext, intent);
-        verify(mPresenter, times(1)).onUserSwitched(mCurrentUserId + 1);
+        verify(mPresenter, times(1)).onUserSwitched(mSecondaryUser.id);
     }
 
     @Test
     public void testIsLockscreenPublicMode() {
-        assertFalse(mLockscreenUserManager.isLockscreenPublicMode(mCurrentUserId));
-        mLockscreenUserManager.setLockscreenPublicMode(true, mCurrentUserId);
-        assertTrue(mLockscreenUserManager.isLockscreenPublicMode(mCurrentUserId));
+        assertFalse(mLockscreenUserManager.isLockscreenPublicMode(mCurrentUser.id));
+        mLockscreenUserManager.setLockscreenPublicMode(true, mCurrentUser.id);
+        assertTrue(mLockscreenUserManager.isLockscreenPublicMode(mCurrentUser.id));
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java
index c97813d..60163f2 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationViewHierarchyManagerTest.java
@@ -49,6 +49,8 @@
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
+import com.android.systemui.statusbar.notification.stack.ForegroundServiceSectionController;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -104,7 +106,8 @@
                 mock(StatusBarStateControllerImpl.class), mEntryManager,
                 mock(KeyguardBypassController.class),
                 mock(BubbleController.class),
-                mock(DynamicPrivacyController.class));
+                mock(DynamicPrivacyController.class),
+                mock(ForegroundServiceSectionController.class));
         mViewHierarchyManager.setUpWithPresenter(mPresenter, mListContainer);
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SbnBuilder.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SbnBuilder.java
index 2605402..62f406f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/SbnBuilder.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/SbnBuilder.java
@@ -140,6 +140,11 @@
         return this;
     }
 
+    public SbnBuilder setFlag(Context context, int mask, boolean value) {
+        modifyNotification(context).setFlag(mask, value);
+        return this;
+    }
+
     public Notification.Builder modifyNotification(Context context) {
         if (mNotification != null) {
             mNotificationBuilder = new Notification.Builder(context, mNotification);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/AboveShelfObserverTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/AboveShelfObserverTest.java
index 4103ede..9d667a9 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/AboveShelfObserverTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/AboveShelfObserverTest.java
@@ -26,8 +26,8 @@
 import android.widget.FrameLayout;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
index 296d0cef..5a0a495 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationEntryManagerTest.java
@@ -58,10 +58,13 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.statusbar.NotificationVisibility;
+import com.android.internal.util.NotificationMessagingUtil;
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
+import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLifetimeExtender;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
@@ -79,16 +82,17 @@
 import com.android.systemui.statusbar.notification.collection.NotificationRankingManager;
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
 import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
-import com.android.systemui.statusbar.notification.logging.NotifLog;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationViewController;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
-import com.android.systemui.statusbar.notification.row.NotifRemoteViewCache;
-import com.android.systemui.statusbar.notification.row.NotificationContentInflater;
+import com.android.systemui.statusbar.notification.row.ExpandableNotificationRowController;
+import com.android.systemui.statusbar.notification.row.NotifBindPipeline;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
+import com.android.systemui.statusbar.notification.row.RowContentBindParams;
+import com.android.systemui.statusbar.notification.row.RowContentBindStage;
 import com.android.systemui.statusbar.notification.row.RowInflaterTask;
-import com.android.systemui.statusbar.notification.row.dagger.NotificationRowComponent;
+import com.android.systemui.statusbar.notification.row.dagger.ExpandableNotificationRowComponent;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
@@ -96,15 +100,18 @@
 import com.android.systemui.statusbar.policy.HeadsUpManager;
 import com.android.systemui.util.Assert;
 import com.android.systemui.util.leak.LeakDetector;
+import com.android.systemui.util.time.FakeSystemClock;
 
 import org.junit.After;
 import org.junit.Before;
+import org.junit.Ignore;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.ArgumentCaptor;
 import org.mockito.InOrder;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.stubbing.Answer;
 
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -137,11 +144,16 @@
     @Mock private NotificationRemoteInputManager mRemoteInputManager;
     @Mock private DeviceProvisionedController mDeviceProvisionedController;
     @Mock private RowInflaterTask mAsyncInflationTask;
-    @Mock private NotifLog mNotifLog;
+    @Mock private NotificationEntryManagerLogger mLogger;
     @Mock private FeatureFlags mFeatureFlags;
     @Mock private LeakDetector mLeakDetector;
-    @Mock private ActivatableNotificationViewController mActivatableNotificationViewController;
-    @Mock private NotificationRowComponent.Builder mNotificationRowComponentBuilder;
+    @Mock private NotificationMediaManager mNotificationMediaManager;
+    @Mock private ExpandableNotificationRowComponent.Builder
+            mExpandableNotificationRowComponentBuilder;
+    @Mock private ExpandableNotificationRowComponent mExpandableNotificationRowComponent;
+    @Mock private FalsingManager mFalsingManager;
+    @Mock private KeyguardBypassController mKeyguardBypassController;
+    @Mock private StatusBarStateController mStatusBarStateController;
 
     private int mId;
     private NotificationEntry mEntry;
@@ -190,7 +202,6 @@
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         mDependency.injectMockDependency(SmartReplyController.class);
-        mDependency.injectMockDependency(NotificationMediaManager.class);
 
         mCountDownLatch = new CountDownLatch(1);
 
@@ -206,40 +217,35 @@
 
         mEntry.expandedIcon = mock(StatusBarIconView.class);
 
-        NotificationContentInflater contentBinder = new NotificationContentInflater(
-                mock(NotifRemoteViewCache.class),
-                mRemoteInputManager);
-        contentBinder.setInflateSynchronously(true);
-
-        when(mNotificationRowComponentBuilder.activatableNotificationView(any()))
-                .thenReturn(mNotificationRowComponentBuilder);
-        when(mNotificationRowComponentBuilder.build()).thenReturn(
-                () -> mActivatableNotificationViewController);
+        RowContentBindStage bindStage = mock(RowContentBindStage.class);
+        when(bindStage.getStageParams(any())).thenReturn(new RowContentBindParams());
         NotificationRowBinderImpl notificationRowBinder =
                 new NotificationRowBinderImpl(mContext,
+                        new NotificationMessagingUtil(mContext),
                         mRemoteInputManager,
                         mLockscreenUserManager,
-                        contentBinder,
+                        mock(NotifBindPipeline.class),
+                        bindStage,
                         true, /* allowLongPress */
-                        mock(KeyguardBypassController.class),
-                        mock(StatusBarStateController.class),
+                        mKeyguardBypassController,
+                        mStatusBarStateController,
                         mGroupManager,
                         mGutsManager,
                         mNotificationInterruptionStateProvider,
-                        () -> new RowInflaterTask(mNotificationRowComponentBuilder),
-                        mock(NotificationLogger.class));
+                        RowInflaterTask::new,
+                        mExpandableNotificationRowComponentBuilder);
 
         when(mFeatureFlags.isNewNotifPipelineEnabled()).thenReturn(false);
         when(mFeatureFlags.isNewNotifPipelineRenderingEnabled()).thenReturn(false);
         mEntryManager = new TestableNotificationEntryManager(
-                mNotifLog,
+                mLogger,
                 mGroupManager,
                 new NotificationRankingManager(
-                        () -> mock(NotificationMediaManager.class),
+                        () -> mNotificationMediaManager,
                         mGroupManager,
                         mHeadsUpManager,
                         mock(NotificationFilter.class),
-                        mNotifLog,
+                        mLogger,
                         mock(NotificationSectionsFeatureManager.class),
                         mock(PeopleNotificationIdentifier.class),
                         mock(HighPriorityProvider.class)),
@@ -247,19 +253,62 @@
                 mFeatureFlags,
                 () -> notificationRowBinder,
                 () -> mRemoteInputManager,
-                mLeakDetector
+                mLeakDetector,
+                mock(ForegroundServiceDismissalFeatureController.class)
         );
         mEntryManager.setUpWithPresenter(mPresenter, mListContainer, mHeadsUpManager);
         mEntryManager.addNotificationEntryListener(mEntryListener);
-        mEntryManager.setNotificationRemoveInterceptor(mRemoveInterceptor);
+        mEntryManager.addNotificationRemoveInterceptor(mRemoveInterceptor);
 
-        notificationRowBinder.setUpWithPresenter(
-                mPresenter, mListContainer, mHeadsUpManager, mBindCallback);
+        notificationRowBinder.setUpWithPresenter(mPresenter, mListContainer, mBindCallback);
         notificationRowBinder.setInflationCallback(mEntryManager);
         notificationRowBinder.setNotificationClicker(mock(NotificationClicker.class));
 
         setUserSentiment(
                 mEntry.getKey(), Ranking.USER_SENTIMENT_NEUTRAL);
+
+        ArgumentCaptor<ExpandableNotificationRow> viewCaptor =
+                ArgumentCaptor.forClass(ExpandableNotificationRow.class);
+        when(mExpandableNotificationRowComponentBuilder
+                .expandableNotificationRow(viewCaptor.capture()))
+                .thenReturn(mExpandableNotificationRowComponentBuilder);
+        when(mExpandableNotificationRowComponentBuilder
+                .notificationEntry(any()))
+                .thenReturn(mExpandableNotificationRowComponentBuilder);
+        when(mExpandableNotificationRowComponentBuilder
+                .onDismissRunnable(any()))
+                .thenReturn(mExpandableNotificationRowComponentBuilder);
+        when(mExpandableNotificationRowComponentBuilder
+                .inflationCallback(any()))
+                .thenReturn(mExpandableNotificationRowComponentBuilder);
+        when(mExpandableNotificationRowComponentBuilder
+                .onExpandClickListener(any()))
+                .thenReturn(mExpandableNotificationRowComponentBuilder);
+
+        when(mExpandableNotificationRowComponentBuilder.build())
+                .thenReturn(mExpandableNotificationRowComponent);
+        when(mExpandableNotificationRowComponent.getExpandableNotificationRowController())
+                .thenAnswer((Answer<ExpandableNotificationRowController>) invocation ->
+                        new ExpandableNotificationRowController(
+                                viewCaptor.getValue(),
+                                mock(ActivatableNotificationViewController.class),
+                                mNotificationMediaManager,
+                                mock(PluginManager.class),
+                                new FakeSystemClock(),
+                                "FOOBAR", "FOOBAR",
+                                mKeyguardBypassController,
+                                mGroupManager,
+                                bindStage,
+                                mock(NotificationLogger.class),
+                                mHeadsUpManager,
+                                mPresenter,
+                                mStatusBarStateController,
+                                mEntryManager,
+                                mGutsManager,
+                                true,
+                                null,
+                                mFalsingManager
+                        ));
     }
 
     @After
@@ -268,7 +317,10 @@
         mEntry.abortTask();
     }
 
+    // TODO: These tests are closer to functional tests and we should move them to their own file.
+    // and also strip some of the verifies that make the test too complex
     @Test
+    @Ignore
     public void testAddNotification() throws Exception {
         TestableLooper.get(this).processAllMessages();
 
@@ -305,6 +357,7 @@
     }
 
     @Test
+    @Ignore
     public void testUpdateNotification() throws Exception {
         TestableLooper.get(this).processAllMessages();
 
@@ -330,6 +383,7 @@
     }
 
     @Test
+    @Ignore
     public void testUpdateNotification_prePostEntryOrder() throws Exception {
         TestableLooper.get(this).processAllMessages();
 
@@ -398,7 +452,6 @@
         setSmartActions(mEntry.getKey(), new ArrayList<>(Arrays.asList(createAction())));
 
         mEntryManager.updateNotificationRanking(mRankingMap);
-        verify(mRow).setEntry(eq(mEntry));
         assertEquals(1, mEntry.getSmartActions().size());
         assertEquals("action", mEntry.getSmartActions().get(0).title);
         verify(mEntryListener).onNotificationRankingUpdated(mRankingMap);
@@ -546,7 +599,8 @@
         mEntryManager.addActiveNotificationForTest(mEntry);
 
         // GIVEN interceptor that intercepts that entry
-        when(mRemoveInterceptor.onNotificationRemoveRequested(eq(mEntry.getKey()), anyInt()))
+        when(mRemoveInterceptor.onNotificationRemoveRequested(
+                eq(mEntry.getKey()), eq(mEntry), anyInt()))
                 .thenReturn(true);
 
         // WHEN the notification is removed
@@ -564,7 +618,8 @@
         mEntryManager.addActiveNotificationForTest(mEntry);
 
         // GIVEN interceptor that doesn't intercept
-        when(mRemoveInterceptor.onNotificationRemoveRequested(eq(mEntry.getKey()), anyInt()))
+        when(mRemoveInterceptor.onNotificationRemoveRequested(
+                eq(mEntry.getKey()), eq(mEntry), anyInt()))
                 .thenReturn(false);
 
         // WHEN the notification is removed
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationFilterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationFilterTest.java
index 5aed61b..1116a33 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationFilterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/NotificationFilterTest.java
@@ -42,11 +42,11 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.NotificationEntryManager.KeyguardEnvironment;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.phone.NotificationGroupManager;
 import com.android.systemui.statusbar.phone.ShadeController;
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/TestableNotificationEntryManager.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/TestableNotificationEntryManager.kt
index 29ce9207..0e730e5 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/TestableNotificationEntryManager.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/TestableNotificationEntryManager.kt
@@ -22,7 +22,6 @@
 import com.android.systemui.statusbar.notification.collection.NotificationEntry
 import com.android.systemui.statusbar.notification.collection.NotificationRankingManager
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder
-import com.android.systemui.statusbar.notification.logging.NotifLog
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer
 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone
 import com.android.systemui.statusbar.phone.NotificationGroupManager
@@ -34,21 +33,22 @@
  * Enable some test capabilities for NEM without making everything public on the base class
  */
 class TestableNotificationEntryManager(
-    log: NotifLog,
+    logger: NotificationEntryManagerLogger,
     gm: NotificationGroupManager,
     rm: NotificationRankingManager,
     ke: KeyguardEnvironment,
     ff: FeatureFlags,
     rb: dagger.Lazy<NotificationRowBinder>,
     notificationRemoteInputManagerLazy: dagger.Lazy<NotificationRemoteInputManager>,
-    leakDetector: LeakDetector
-) : NotificationEntryManager(log, gm, rm, ke, ff, rb,
-        notificationRemoteInputManagerLazy, leakDetector) {
+    leakDetector: LeakDetector,
+    fgsFeatureController: ForegroundServiceDismissalFeatureController
+) : NotificationEntryManager(logger, gm, rm, ke, ff, rb,
+        notificationRemoteInputManagerLazy, leakDetector, fgsFeatureController) {
 
     public var countDownLatch: CountDownLatch = CountDownLatch(1)
 
-    override fun onAsyncInflationFinished(entry: NotificationEntry?, inflatedFlags: Int) {
-        super.onAsyncInflationFinished(entry, inflatedFlags)
+    override fun onAsyncInflationFinished(entry: NotificationEntry) {
+        super.onAsyncInflationFinished(entry)
         countDownLatch.countDown()
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java
index 9a7e97b..12e9d31 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotifCollectionTest.java
@@ -16,16 +16,25 @@
 
 package com.android.systemui.statusbar.notification.collection;
 
+import static android.app.Notification.FLAG_NO_CLEAR;
 import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
+import static android.service.notification.NotificationListenerService.REASON_CANCEL;
 import static android.service.notification.NotificationListenerService.REASON_CLICK;
+import static android.service.notification.NotificationStats.DISMISSAL_SHADE;
+import static android.service.notification.NotificationStats.DISMISS_SENTIMENT_NEUTRAL;
 
+import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_NOT_CANCELED;
 import static com.android.systemui.statusbar.notification.collection.NotifCollection.REASON_UNKNOWN;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.DISMISSED;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.NOT_DISMISSED;
+import static com.android.systemui.statusbar.notification.collection.NotificationEntry.DismissState.PARENT_DISMISSED;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.clearInvocations;
@@ -38,13 +47,16 @@
 import static java.util.Objects.requireNonNull;
 
 import android.annotation.Nullable;
+import android.app.Notification;
 import android.os.RemoteException;
 import android.service.notification.NotificationListenerService.Ranking;
-import android.service.notification.NotificationStats;
+import android.service.notification.NotificationListenerService.RankingMap;
+import android.service.notification.StatusBarNotification;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 import android.util.ArrayMap;
 import android.util.ArraySet;
+import android.util.Pair;
 
 import androidx.test.filters.SmallTest;
 
@@ -63,6 +75,7 @@
 import com.android.systemui.statusbar.notification.collection.notifcollection.DismissedByUserStats;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionLogger;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifDismissInterceptor;
 import com.android.systemui.statusbar.notification.collection.notifcollection.NotifLifetimeExtender;
 import com.android.systemui.util.Assert;
 
@@ -77,6 +90,7 @@
 
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 
@@ -96,6 +110,13 @@
     @Spy private RecordingLifetimeExtender mExtender2 = new RecordingLifetimeExtender("Extender2");
     @Spy private RecordingLifetimeExtender mExtender3 = new RecordingLifetimeExtender("Extender3");
 
+    @Spy private RecordingDismissInterceptor mInterceptor1 = new RecordingDismissInterceptor(
+            "Interceptor1");
+    @Spy private RecordingDismissInterceptor mInterceptor2 = new RecordingDismissInterceptor(
+            "Interceptor2");
+    @Spy private RecordingDismissInterceptor mInterceptor3 = new RecordingDismissInterceptor(
+            "Interceptor3");
+
     @Captor private ArgumentCaptor<BatchableNotificationHandler> mListenerCaptor;
     @Captor private ArgumentCaptor<NotificationEntry> mEntryCaptor;
     @Captor private ArgumentCaptor<Collection<NotificationEntry>> mBuildListCaptor;
@@ -139,9 +160,10 @@
                         .setRank(4747));
 
         // THEN the listener is notified
-        verify(mCollectionListener).onEntryAdded(mEntryCaptor.capture());
-
+        verify(mCollectionListener).onEntryInit(mEntryCaptor.capture());
         NotificationEntry entry = mEntryCaptor.getValue();
+
+        verify(mCollectionListener).onEntryAdded(entry);
         assertEquals(notif1.key, entry.getKey());
         assertEquals(notif1.sbn, entry.getSbn());
         assertEquals(notif1.ranking, entry.getRanking());
@@ -235,7 +257,8 @@
         mNoMan.retractNotif(notif.sbn, REASON_APP_CANCEL);
 
         // THEN the listener is notified
-        verify(mCollectionListener).onEntryRemoved(entry, REASON_APP_CANCEL, false);
+        verify(mCollectionListener).onEntryRemoved(entry, REASON_APP_CANCEL);
+        verify(mCollectionListener).onEntryCleanUp(entry);
         assertEquals(notif.sbn, entry.getSbn());
         assertEquals(notif.ranking, entry.getRanking());
     }
@@ -320,24 +343,15 @@
     }
 
     @Test
-    public void testDismissNotification() throws RemoteException {
-        // GIVEN a collection with a couple notifications and a lifetime extender
-        mCollection.addNotificationLifetimeExtender(mExtender1);
-
+    public void testDismissNotificationSentToSystemServer() throws RemoteException {
+        // GIVEN a collection with a couple notifications
         NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
         NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
         NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
 
         // WHEN a notification is manually dismissed
-        DismissedByUserStats stats = new DismissedByUserStats(
-                NotificationStats.DISMISSAL_SHADE,
-                NotificationStats.DISMISS_SENTIMENT_NEUTRAL,
-                NotificationVisibility.obtain(entry2.getKey(), 7, 2, true));
-
-        mCollection.dismissNotification(entry2, REASON_CLICK, stats);
-
-        // THEN we check for lifetime extension
-        verify(mExtender1).shouldExtendLifetime(entry2, REASON_CLICK);
+        DismissedByUserStats stats = defaultStats(entry2);
+        mCollection.dismissNotification(entry2, defaultStats(entry2));
 
         // THEN we send the dismissal to system server
         verify(mStatusBarService).onNotificationClear(
@@ -349,9 +363,249 @@
                 stats.dismissalSurface,
                 stats.dismissalSentiment,
                 stats.notificationVisibility);
+    }
 
-        // THEN we fire a remove event
-        verify(mCollectionListener).onEntryRemoved(entry2, REASON_CLICK, true);
+    @Test
+    public void testDismissedNotificationsAreMarkedAsDismissedLocally() {
+        // GIVEN a collection with a notification
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN a notification is manually dismissed
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+
+        // THEN the entry is marked as dismissed locally
+        assertEquals(DISMISSED, entry1.getDismissState());
+    }
+
+    @Test
+    public void testDismissedNotificationsCannotBeLifetimeExtended() {
+        // GIVEN a collection with a notification and a lifetime extender
+        mCollection.addNotificationLifetimeExtender(mExtender1);
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN a notification is manually dismissed
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+
+        // THEN lifetime extenders are never queried
+        verify(mExtender1, never()).shouldExtendLifetime(eq(entry1), anyInt());
+    }
+
+    @Test
+    public void testDismissedNotificationsDoNotTriggerRemovalEvents() {
+        // GIVEN a collection with a notification
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN a notification is manually dismissed
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+
+        // THEN onEntryRemoved is not called
+        verify(mCollectionListener, never()).onEntryRemoved(eq(entry1), anyInt());
+    }
+
+    @Test
+    public void testDismissedNotificationsStillAppearInNotificationSet() {
+        // GIVEN a collection with a notification
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN a notification is manually dismissed
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+
+        // THEN the dismissed entry still appears in the notification set
+        assertEquals(
+                new ArraySet<>(Collections.singletonList(entry1)),
+                new ArraySet<>(mCollection.getActiveNotifs()));
+    }
+
+    @Test
+    public void testDismissingLifetimeExtendedSummaryDoesNotDismissChildren() {
+        // GIVEN A notif group with one summary and two children
+        mCollection.addNotificationLifetimeExtender(mExtender1);
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1, "myTag")
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif2 = postNotif(
+                buildNotif(TEST_PACKAGE, 2, "myTag")
+                        .setGroup(mContext, GROUP_1));
+        CollectionEvent notif3 = postNotif(
+                buildNotif(TEST_PACKAGE, 3, "myTag")
+                        .setGroup(mContext, GROUP_1));
+
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+        NotificationEntry entry3 = mCollectionListener.getEntry(notif3.key);
+
+        // GIVEN that the summary and one child are retracted, but both are lifetime-extended
+        mExtender1.shouldExtendLifetime = true;
+        mNoMan.retractNotif(notif1.sbn, REASON_CANCEL);
+        mNoMan.retractNotif(notif2.sbn, REASON_CANCEL);
+        assertEquals(
+                new ArraySet<>(List.of(entry1, entry2, entry3)),
+                new ArraySet<>(mCollection.getActiveNotifs()));
+
+        // WHEN the summary is dismissed by the user
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+
+        // THEN the summary is removed, but both children stick around
+        assertEquals(
+                new ArraySet<>(List.of(entry2, entry3)),
+                new ArraySet<>(mCollection.getActiveNotifs()));
+        assertEquals(NOT_DISMISSED, entry2.getDismissState());
+        assertEquals(NOT_DISMISSED, entry3.getDismissState());
+    }
+
+    @Test
+    public void testDismissNotificationCallsDismissInterceptors() throws RemoteException {
+        // GIVEN a collection with notifications with multiple dismiss interceptors
+        mInterceptor1.shouldInterceptDismissal = true;
+        mInterceptor2.shouldInterceptDismissal = true;
+        mInterceptor3.shouldInterceptDismissal = false;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+        mCollection.addNotificationDismissInterceptor(mInterceptor2);
+        mCollection.addNotificationDismissInterceptor(mInterceptor3);
+
+        NotifEvent notif = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry = mCollectionListener.getEntry(notif.key);
+
+        // WHEN a notification is manually dismissed
+        DismissedByUserStats stats = defaultStats(entry);
+        mCollection.dismissNotification(entry, stats);
+
+        // THEN all interceptors get checked
+        verify(mInterceptor1).shouldInterceptDismissal(entry);
+        verify(mInterceptor2).shouldInterceptDismissal(entry);
+        verify(mInterceptor3).shouldInterceptDismissal(entry);
+        assertEquals(List.of(mInterceptor1, mInterceptor2), entry.mDismissInterceptors);
+
+        // THEN we never send the dismissal to system server
+        verify(mStatusBarService, never()).onNotificationClear(
+                notif.sbn.getPackageName(),
+                notif.sbn.getTag(),
+                47,
+                notif.sbn.getUser().getIdentifier(),
+                notif.sbn.getKey(),
+                stats.dismissalSurface,
+                stats.dismissalSentiment,
+                stats.notificationVisibility);
+    }
+
+    @Test
+    public void testDismissInterceptorsCanceledWhenNotifIsUpdated() throws RemoteException {
+        // GIVEN a few lifetime extenders and a couple notifications
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+        mCollection.addNotificationDismissInterceptor(mInterceptor2);
+
+        mInterceptor1.shouldInterceptDismissal = true;
+        mInterceptor2.shouldInterceptDismissal = true;
+
+        NotifEvent notif = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47));
+        NotificationEntry entry = mCollectionListener.getEntry(notif.key);
+
+        // WHEN a notification is manually dismissed and intercepted
+        DismissedByUserStats stats = defaultStats(entry);
+        mCollection.dismissNotification(entry, stats);
+        assertEquals(List.of(mInterceptor1, mInterceptor2), entry.mDismissInterceptors);
+        clearInvocations(mInterceptor1, mInterceptor2);
+
+        // WHEN the notification is reposted
+        mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47));
+
+        // THEN all of the active dismissal interceptors are canceled
+        verify(mInterceptor1).cancelDismissInterception(entry);
+        verify(mInterceptor2).cancelDismissInterception(entry);
+        assertEquals(List.of(), entry.mDismissInterceptors);
+
+        // THEN the notification is never sent to system server to dismiss
+        verify(mStatusBarService, never()).onNotificationClear(
+                eq(notif.sbn.getPackageName()),
+                eq(notif.sbn.getTag()),
+                eq(47),
+                eq(notif.sbn.getUser().getIdentifier()),
+                eq(notif.sbn.getKey()),
+                anyInt(),
+                anyInt(),
+                eq(stats.notificationVisibility));
+    }
+
+    @Test
+    public void testEndingAllDismissInterceptorsSendsDismiss() throws RemoteException {
+        // GIVEN a collection with notifications a dismiss interceptor
+        mInterceptor1.shouldInterceptDismissal = true;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+
+        NotifEvent notif = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry = mCollectionListener.getEntry(notif.key);
+
+        // GIVEN a notification is manually dismissed
+        DismissedByUserStats stats = defaultStats(entry);
+        mCollection.dismissNotification(entry, stats);
+
+        // WHEN all interceptors end their interception dismissal
+        mInterceptor1.shouldInterceptDismissal = false;
+        mInterceptor1.onEndInterceptionCallback.onEndDismissInterception(mInterceptor1, entry,
+                stats);
+
+        // THEN we send the dismissal to system server
+        verify(mStatusBarService).onNotificationClear(
+                eq(notif.sbn.getPackageName()),
+                eq(notif.sbn.getTag()),
+                eq(47),
+                eq(notif.sbn.getUser().getIdentifier()),
+                eq(notif.sbn.getKey()),
+                anyInt(),
+                anyInt(),
+                eq(stats.notificationVisibility));
+    }
+
+    @Test
+    public void testEndDismissInterceptionUpdatesDismissInterceptors() throws RemoteException {
+        // GIVEN a collection with notifications with multiple dismiss interceptors
+        mInterceptor1.shouldInterceptDismissal = true;
+        mInterceptor2.shouldInterceptDismissal = true;
+        mInterceptor3.shouldInterceptDismissal = false;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+        mCollection.addNotificationDismissInterceptor(mInterceptor2);
+        mCollection.addNotificationDismissInterceptor(mInterceptor3);
+
+        NotifEvent notif = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry = mCollectionListener.getEntry(notif.key);
+
+        // GIVEN a notification is manually dismissed
+        mCollection.dismissNotification(entry, defaultStats(entry));
+
+       // WHEN an interceptor ends its interception
+        mInterceptor1.shouldInterceptDismissal = false;
+        mInterceptor1.onEndInterceptionCallback.onEndDismissInterception(mInterceptor1, entry,
+                defaultStats(entry));
+
+        // THEN all interceptors get checked
+        verify(mInterceptor1).shouldInterceptDismissal(entry);
+        verify(mInterceptor2).shouldInterceptDismissal(entry);
+        verify(mInterceptor3).shouldInterceptDismissal(entry);
+
+        // THEN mInterceptor2 is the only dismiss interceptor
+        assertEquals(List.of(mInterceptor2), entry.mDismissInterceptors);
+    }
+
+
+    @Test(expected = IllegalStateException.class)
+    public void testEndingDismissalOfNonInterceptedThrows() throws RemoteException {
+        // GIVEN a collection with notifications with a dismiss interceptor that hasn't been called
+        mInterceptor1.shouldInterceptDismissal = false;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+
+        NotifEvent notif = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotificationEntry entry = mCollectionListener.getEntry(notif.key);
+
+        // WHEN we try to end the dismissal of an interceptor that didn't intercept the notif
+        mInterceptor1.onEndInterceptionCallback.onEndDismissInterception(mInterceptor1, entry,
+                defaultStats(entry));
+
+        // THEN an exception is thrown
     }
 
     @Test(expected = IllegalStateException.class)
@@ -364,15 +618,187 @@
         mNoMan.retractNotif(notif2.sbn, REASON_UNKNOWN);
 
         // WHEN we try to dismiss a notification that isn't present
-        mCollection.dismissNotification(
-                entry2,
-                REASON_CLICK,
-                new DismissedByUserStats(0, 0, NotificationVisibility.obtain("foo", 47, 3, true)));
+        mCollection.dismissNotification(entry2, defaultStats(entry2));
 
         // THEN an exception is thrown
     }
 
     @Test
+    public void testGroupChildrenAreDismissedLocallyWhenSummaryIsDismissed() {
+        // GIVEN a collection with two grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN the summary is dismissed
+        mCollection.dismissNotification(entry0, defaultStats(entry0));
+
+        // THEN all members of the group are marked as dismissed locally
+        assertEquals(DISMISSED, entry0.getDismissState());
+        assertEquals(PARENT_DISMISSED, entry1.getDismissState());
+    }
+
+    @Test
+    public void testUpdatingDismissedSummaryBringsChildrenBack() {
+        // GIVEN a collection with two grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN the summary is dismissed but then reposted without a group
+        mCollection.dismissNotification(entry0, defaultStats(entry0));
+        NotifEvent notif0a = mNoMan.postNotif(
+                buildNotif(TEST_PACKAGE, 0));
+
+        // THEN it and all of its previous children are no longer dismissed locally
+        assertEquals(NOT_DISMISSED, entry0.getDismissState());
+        assertEquals(NOT_DISMISSED, entry1.getDismissState());
+    }
+
+    @Test
+    public void testDismissedChildrenAreNotResetByParentUpdate() {
+        // GIVEN a collection with three grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1));
+        CollectionEvent notif2 = postNotif(
+                buildNotif(TEST_PACKAGE, 2)
+                        .setGroup(mContext, GROUP_1));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN a child is dismissed, then the parent is dismissed, then the parent is updated
+        mCollection.dismissNotification(entry1, defaultStats(entry1));
+        mCollection.dismissNotification(entry0, defaultStats(entry0));
+        NotifEvent notif0a = mNoMan.postNotif(
+                buildNotif(TEST_PACKAGE, 0));
+
+        // THEN the manually-dismissed child is still marked as dismissed
+        assertEquals(NOT_DISMISSED, entry0.getDismissState());
+        assertEquals(DISMISSED, entry1.getDismissState());
+        assertEquals(NOT_DISMISSED, entry2.getDismissState());
+    }
+
+    @Test
+    public void testUpdatingGroupKeyOfDismissedSummaryBringsChildrenBack() {
+        // GIVEN a collection with two grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setOverrideGroupKey(GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setOverrideGroupKey(GROUP_1));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+
+        // WHEN the summary is dismissed but then reposted AND in the same update one of the
+        // children's ranking loses its override group
+        mCollection.dismissNotification(entry0, defaultStats(entry0));
+        mNoMan.setRanking(entry1.getKey(), new RankingBuilder()
+                .setKey(entry1.getKey())
+                .build());
+        mNoMan.postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setOverrideGroupKey(GROUP_1)
+                        .setGroupSummary(mContext, true));
+
+        // THEN it and all of its previous children are no longer dismissed locally, including the
+        // child that is no longer part of the group
+        assertEquals(NOT_DISMISSED, entry0.getDismissState());
+        assertEquals(NOT_DISMISSED, entry1.getDismissState());
+    }
+
+    @Test
+    public void testDismissingSummaryDoesNotDismissForegroundServiceChildren() {
+        // GIVEN a collection with three grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1)
+                        .setFlag(mContext, Notification.FLAG_FOREGROUND_SERVICE, true));
+        CollectionEvent notif2 = postNotif(
+                buildNotif(TEST_PACKAGE, 2)
+                        .setGroup(mContext, GROUP_1));
+
+        // WHEN the summary is dismissed
+        mCollection.dismissNotification(notif0.entry, defaultStats(notif0.entry));
+
+        // THEN the foreground service child is not dismissed
+        assertEquals(DISMISSED, notif0.entry.getDismissState());
+        assertEquals(NOT_DISMISSED, notif1.entry.getDismissState());
+        assertEquals(PARENT_DISMISSED, notif2.entry.getDismissState());
+    }
+
+    @Test
+    public void testDismissingSummaryDoesNotDismissBubbledChildren() {
+        // GIVEN a collection with three grouped notifs in it
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1)
+                        .setFlag(mContext, Notification.FLAG_BUBBLE, true));
+        CollectionEvent notif2 = postNotif(
+                buildNotif(TEST_PACKAGE, 2)
+                        .setGroup(mContext, GROUP_1));
+
+        // WHEN the summary is dismissed
+        mCollection.dismissNotification(notif0.entry, defaultStats(notif0.entry));
+
+        // THEN the bubbled child is not dismissed
+        assertEquals(DISMISSED, notif0.entry.getDismissState());
+        assertEquals(NOT_DISMISSED, notif1.entry.getDismissState());
+        assertEquals(PARENT_DISMISSED, notif2.entry.getDismissState());
+    }
+
+    @Test
+    public void testDismissingSummaryDoesNotDismissDuplicateSummaries() {
+        // GIVEN a group with a two summaries
+        CollectionEvent notif0 = postNotif(
+                buildNotif(TEST_PACKAGE, 0)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif1 = postNotif(
+                buildNotif(TEST_PACKAGE, 1)
+                        .setGroup(mContext, GROUP_1)
+                        .setGroupSummary(mContext, true));
+        CollectionEvent notif2 = postNotif(
+                buildNotif(TEST_PACKAGE, 2)
+                        .setGroup(mContext, GROUP_1));
+
+        // WHEN the first summary is dismissed
+        mCollection.dismissNotification(notif0.entry, defaultStats(notif0.entry));
+
+        // THEN the second summary is not auto-dismissed (but the child is)
+        assertEquals(DISMISSED, notif0.entry.getDismissState());
+        assertEquals(NOT_DISMISSED, notif1.entry.getDismissState());
+        assertEquals(PARENT_DISMISSED, notif2.entry.getDismissState());
+    }
+
+    @Test
     public void testLifetimeExtendersAreQueriedWhenNotifRemoved() {
         // GIVEN a couple notifications and a few lifetime extenders
         mExtender1.shouldExtendLifetime = true;
@@ -387,12 +813,12 @@
         NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
 
         // WHEN a notification is removed
-        mNoMan.retractNotif(notif2.sbn, REASON_UNKNOWN);
+        mNoMan.retractNotif(notif2.sbn, REASON_CLICK);
 
         // THEN each extender is asked whether to extend, even if earlier ones return true
-        verify(mExtender1).shouldExtendLifetime(entry2, REASON_UNKNOWN);
-        verify(mExtender2).shouldExtendLifetime(entry2, REASON_UNKNOWN);
-        verify(mExtender3).shouldExtendLifetime(entry2, REASON_UNKNOWN);
+        verify(mExtender1).shouldExtendLifetime(entry2, REASON_CLICK);
+        verify(mExtender2).shouldExtendLifetime(entry2, REASON_CLICK);
+        verify(mExtender3).shouldExtendLifetime(entry2, REASON_CLICK);
 
         // THEN the entry is not removed
         assertTrue(mCollection.getActiveNotifs().contains(entry2));
@@ -426,9 +852,9 @@
         mExtender2.callback.onEndLifetimeExtension(mExtender2, entry2);
 
         // THEN each extender is re-queried
-        verify(mExtender1).shouldExtendLifetime(entry2, REASON_UNKNOWN);
-        verify(mExtender2).shouldExtendLifetime(entry2, REASON_UNKNOWN);
-        verify(mExtender3).shouldExtendLifetime(entry2, REASON_UNKNOWN);
+        verify(mExtender1).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
+        verify(mExtender2).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
+        verify(mExtender3).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
 
         // THEN the entry is not removed
         assertTrue(mCollection.getActiveNotifs().contains(entry2));
@@ -464,9 +890,9 @@
         assertTrue(mCollection.getActiveNotifs().contains(entry2));
 
         // THEN we don't re-query the extenders
-        verify(mExtender1, never()).shouldExtendLifetime(eq(entry2), anyInt());
-        verify(mExtender2, never()).shouldExtendLifetime(eq(entry2), anyInt());
-        verify(mExtender3, never()).shouldExtendLifetime(eq(entry2), anyInt());
+        verify(mExtender1, never()).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
+        verify(mExtender2, never()).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
+        verify(mExtender3, never()).shouldExtendLifetime(entry2, REASON_APP_CANCEL);
 
         // THEN the entry properly records all extenders that returned true
         assertEquals(Arrays.asList(mExtender1), entry2.mLifetimeExtenders);
@@ -499,7 +925,7 @@
 
         // THEN the entry removed
         assertFalse(mCollection.getActiveNotifs().contains(entry2));
-        verify(mCollectionListener).onEntryRemoved(entry2, REASON_UNKNOWN, false);
+        verify(mCollectionListener).onEntryRemoved(entry2, REASON_UNKNOWN);
     }
 
     @Test
@@ -589,6 +1015,243 @@
         assertEquals(notif2a.ranking, entry2.getRanking());
     }
 
+    @Test
+    public void testCancellationReasonIsSetWhenNotifIsCancelled() {
+        // GIVEN a notification
+        NotifEvent notif0 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 3));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+
+        // WHEN the notification is retracted
+        mNoMan.retractNotif(notif0.sbn, REASON_APP_CANCEL);
+
+        // THEN the retraction reason is stored on the notif
+        assertEquals(REASON_APP_CANCEL, entry0.mCancellationReason);
+    }
+
+    @Test
+    public void testCancellationReasonIsClearedWhenNotifIsUpdated() {
+        // GIVEN a notification and a lifetime extender that will preserve it
+        NotifEvent notif0 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 3));
+        NotificationEntry entry0 = mCollectionListener.getEntry(notif0.key);
+        mCollection.addNotificationLifetimeExtender(mExtender1);
+        mExtender1.shouldExtendLifetime = true;
+
+        // WHEN the notification is retracted and subsequently reposted
+        mNoMan.retractNotif(notif0.sbn, REASON_APP_CANCEL);
+        assertEquals(REASON_APP_CANCEL, entry0.mCancellationReason);
+        mNoMan.postNotif(buildNotif(TEST_PACKAGE, 3));
+
+        // THEN the notification has its cancellation reason cleared
+        assertEquals(REASON_NOT_CANCELED, entry0.mCancellationReason);
+    }
+
+    @Test
+    public void testDismissNotificationsRebuildsOnce() {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+        clearInvocations(mBuildListener);
+
+        // WHEN both notifications are manually dismissed together
+        mCollection.dismissNotifications(
+                List.of(new Pair(entry1, defaultStats(entry1)),
+                        new Pair(entry2, defaultStats(entry2))));
+
+        // THEN build list is only called one time
+        verify(mBuildListener).onBuildList(any(Collection.class));
+    }
+
+    @Test
+    public void testDismissNotificationsSentToSystemServer() throws RemoteException {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN both notifications are manually dismissed together
+        DismissedByUserStats stats1 = defaultStats(entry1);
+        DismissedByUserStats stats2 = defaultStats(entry2);
+        mCollection.dismissNotifications(
+                List.of(new Pair(entry1, defaultStats(entry1)),
+                        new Pair(entry2, defaultStats(entry2))));
+
+        // THEN we send the dismissals to system server
+        verify(mStatusBarService).onNotificationClear(
+                notif1.sbn.getPackageName(),
+                notif1.sbn.getTag(),
+                47,
+                notif1.sbn.getUser().getIdentifier(),
+                notif1.sbn.getKey(),
+                stats1.dismissalSurface,
+                stats1.dismissalSentiment,
+                stats1.notificationVisibility);
+
+        verify(mStatusBarService).onNotificationClear(
+                notif2.sbn.getPackageName(),
+                notif2.sbn.getTag(),
+                88,
+                notif2.sbn.getUser().getIdentifier(),
+                notif2.sbn.getKey(),
+                stats2.dismissalSurface,
+                stats2.dismissalSentiment,
+                stats2.notificationVisibility);
+    }
+
+    @Test
+    public void testDismissNotificationsMarkedAsDismissed() {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN both notifications are manually dismissed together
+        mCollection.dismissNotifications(
+                List.of(new Pair(entry1, defaultStats(entry1)),
+                        new Pair(entry2, defaultStats(entry2))));
+
+        // THEN the entries are marked as dismissed
+        assertEquals(DISMISSED, entry1.getDismissState());
+        assertEquals(DISMISSED, entry2.getDismissState());
+    }
+
+    @Test
+    public void testDismissNotificationssCallsDismissInterceptors() {
+        // GIVEN a collection with notifications with multiple dismiss interceptors
+        mInterceptor1.shouldInterceptDismissal = true;
+        mInterceptor2.shouldInterceptDismissal = true;
+        mInterceptor3.shouldInterceptDismissal = false;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+        mCollection.addNotificationDismissInterceptor(mInterceptor2);
+        mCollection.addNotificationDismissInterceptor(mInterceptor3);
+
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN both notifications are manually dismissed together
+        mCollection.dismissNotifications(
+                List.of(new Pair(entry1, defaultStats(entry1)),
+                        new Pair(entry2, defaultStats(entry2))));
+
+        // THEN all interceptors get checked
+        verify(mInterceptor1).shouldInterceptDismissal(entry1);
+        verify(mInterceptor2).shouldInterceptDismissal(entry1);
+        verify(mInterceptor3).shouldInterceptDismissal(entry1);
+        verify(mInterceptor1).shouldInterceptDismissal(entry2);
+        verify(mInterceptor2).shouldInterceptDismissal(entry2);
+        verify(mInterceptor3).shouldInterceptDismissal(entry2);
+
+        assertEquals(List.of(mInterceptor1, mInterceptor2), entry1.mDismissInterceptors);
+        assertEquals(List.of(mInterceptor1, mInterceptor2), entry2.mDismissInterceptors);
+    }
+
+    @Test
+    public void testDismissAllNotificationsCallsRebuildOnce() {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+        clearInvocations(mBuildListener);
+
+        // WHEN all notifications are dismissed for the user who posted both notifs
+        mCollection.dismissAllNotifications(entry1.getSbn().getUser().getIdentifier());
+
+        // THEN build list is only called one time
+        verify(mBuildListener).onBuildList(any(Collection.class));
+    }
+
+    @Test
+    public void testDismissAllNotificationsSentToSystemServer() throws RemoteException {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN all notifications are dismissed for the user who posted both notifs
+        mCollection.dismissAllNotifications(entry1.getSbn().getUser().getIdentifier());
+
+        // THEN we send the dismissal to system server
+        verify(mStatusBarService).onClearAllNotifications(
+                entry1.getSbn().getUser().getIdentifier());
+    }
+
+    @Test
+    public void testDismissAllNotificationsMarkedAsDismissed() {
+        // GIVEN a collection with a couple notifications
+        NotifEvent notif1 = mNoMan.postNotif(buildNotif(TEST_PACKAGE, 47, "myTag"));
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry entry1 = mCollectionListener.getEntry(notif1.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN all notifications are dismissed for the user who posted both notifs
+        mCollection.dismissAllNotifications(entry1.getSbn().getUser().getIdentifier());
+
+        // THEN the entries are marked as dismissed
+        assertEquals(DISMISSED, entry1.getDismissState());
+        assertEquals(DISMISSED, entry2.getDismissState());
+    }
+
+    @Test
+    public void testDismissAllNotificationsDoesNotMarkDismissedUnclearableNotifs() {
+        // GIVEN a collection with one unclearable notification and one clearable notification
+        NotificationEntryBuilder notifEntryBuilder = buildNotif(TEST_PACKAGE, 47, "myTag");
+        notifEntryBuilder.modifyNotification(mContext)
+                .setFlag(FLAG_NO_CLEAR, true);
+        NotifEvent unclearabeNotif = mNoMan.postNotif(notifEntryBuilder);
+        NotifEvent notif2 = mNoMan.postNotif(buildNotif(TEST_PACKAGE2, 88, "barTag"));
+        NotificationEntry unclearableEntry = mCollectionListener.getEntry(unclearabeNotif.key);
+        NotificationEntry entry2 = mCollectionListener.getEntry(notif2.key);
+
+        // WHEN all notifications are dismissed for the user who posted both notifs
+        mCollection.dismissAllNotifications(unclearableEntry.getSbn().getUser().getIdentifier());
+
+        // THEN only the clearable entry is marked as dismissed
+        assertEquals(NOT_DISMISSED, unclearableEntry.getDismissState());
+        assertEquals(DISMISSED, entry2.getDismissState());
+    }
+
+    @Test
+    public void testDismissAllNotificationsCallsDismissInterceptorsOnlyOnUnclearableNotifs() {
+        // GIVEN a collection with multiple dismiss interceptors
+        mInterceptor1.shouldInterceptDismissal = true;
+        mInterceptor2.shouldInterceptDismissal = true;
+        mInterceptor3.shouldInterceptDismissal = false;
+        mCollection.addNotificationDismissInterceptor(mInterceptor1);
+        mCollection.addNotificationDismissInterceptor(mInterceptor2);
+        mCollection.addNotificationDismissInterceptor(mInterceptor3);
+
+        // GIVEN a collection with one unclearable and one clearable notification
+        NotifEvent unclearableNotif = mNoMan.postNotif(
+                buildNotif(TEST_PACKAGE, 47, "myTag")
+                        .setFlag(mContext, FLAG_NO_CLEAR, true));
+        NotificationEntry unclearable = mCollectionListener.getEntry(unclearableNotif.key);
+        NotifEvent clearableNotif = mNoMan.postNotif(
+                buildNotif(TEST_PACKAGE, 88, "myTag")
+                        .setFlag(mContext, FLAG_NO_CLEAR, false));
+        NotificationEntry clearable = mCollectionListener.getEntry(clearableNotif.key);
+
+        // WHEN all notifications are dismissed for the user who posted the notif
+        mCollection.dismissAllNotifications(clearable.getSbn().getUser().getIdentifier());
+
+        // THEN all interceptors get checked for the unclearable notification
+        verify(mInterceptor1).shouldInterceptDismissal(unclearable);
+        verify(mInterceptor2).shouldInterceptDismissal(unclearable);
+        verify(mInterceptor3).shouldInterceptDismissal(unclearable);
+        assertEquals(List.of(mInterceptor1, mInterceptor2), unclearable.mDismissInterceptors);
+
+        // THEN no interceptors get checked for the clearable notification
+        verify(mInterceptor1, never()).shouldInterceptDismissal(clearable);
+        verify(mInterceptor2, never()).shouldInterceptDismissal(clearable);
+        verify(mInterceptor3, never()).shouldInterceptDismissal(clearable);
+    }
+
     private static NotificationEntryBuilder buildNotif(String pkg, int id, String tag) {
         return new NotificationEntryBuilder()
                 .setPkg(pkg)
@@ -602,20 +1265,43 @@
                 .setId(id);
     }
 
+    private static DismissedByUserStats defaultStats(NotificationEntry entry) {
+        return new DismissedByUserStats(
+                DISMISSAL_SHADE,
+                DISMISS_SENTIMENT_NEUTRAL,
+                NotificationVisibility.obtain(entry.getKey(), 7, 2, true));
+    }
+
+    public CollectionEvent postNotif(NotificationEntryBuilder builder) {
+        clearInvocations(mCollectionListener);
+        NotifEvent rawEvent = mNoMan.postNotif(builder);
+        verify(mCollectionListener).onEntryAdded(mEntryCaptor.capture());
+        return new CollectionEvent(rawEvent, requireNonNull(mEntryCaptor.getValue()));
+    }
+
     private static class RecordingCollectionListener implements NotifCollectionListener {
         private final Map<String, NotificationEntry> mLastSeenEntries = new ArrayMap<>();
 
         @Override
+        public void onEntryInit(NotificationEntry entry) {
+        }
+
+        @Override
         public void onEntryAdded(NotificationEntry entry) {
             mLastSeenEntries.put(entry.getKey(), entry);
         }
 
         @Override
         public void onEntryUpdated(NotificationEntry entry) {
+            mLastSeenEntries.put(entry.getKey(), entry);
         }
 
         @Override
-        public void onEntryRemoved(NotificationEntry entry, int reason, boolean removedByUser) {
+        public void onEntryRemoved(NotificationEntry entry, int reason) {
+        }
+
+        @Override
+        public void onEntryCleanUp(NotificationEntry entry) {
         }
 
         public NotificationEntry getEntry(String key) {
@@ -662,6 +1348,58 @@
         }
     }
 
+    private static class RecordingDismissInterceptor implements NotifDismissInterceptor {
+        private final String mName;
+
+        public @Nullable OnEndDismissInterception onEndInterceptionCallback;
+        public boolean shouldInterceptDismissal = false;
+
+        private RecordingDismissInterceptor(String name) {
+            mName = name;
+        }
+
+        @Override
+        public String getName() {
+            return mName;
+        }
+
+        @Override
+        public void setCallback(OnEndDismissInterception callback) {
+            this.onEndInterceptionCallback = callback;
+        }
+
+        @Override
+        public boolean shouldInterceptDismissal(NotificationEntry entry) {
+            return shouldInterceptDismissal;
+        }
+
+        @Override
+        public void cancelDismissInterception(NotificationEntry entry) {
+        }
+    }
+
+    /**
+     * Wrapper around {@link NotifEvent} that adds the NotificationEntry that the collection under
+     * test creates.
+     */
+    private static class CollectionEvent {
+        public final String key;
+        public final StatusBarNotification sbn;
+        public final Ranking ranking;
+        public final RankingMap rankingMap;
+        public final NotificationEntry entry;
+
+        private CollectionEvent(NotifEvent rawEvent, NotificationEntry entry) {
+            this.key = rawEvent.key;
+            this.sbn = rawEvent.sbn;
+            this.ranking = rawEvent.ranking;
+            this.rankingMap = rawEvent.rankingMap;
+            this.entry = entry;
+        }
+    }
+
     private static final String TEST_PACKAGE = "com.android.test.collection";
     private static final String TEST_PACKAGE2 = "com.android.test.collection2";
+
+    private static final String GROUP_1 = "group_1";
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
index 300ec18..d2bb011 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationEntryBuilder.java
@@ -162,6 +162,11 @@
         return this;
     }
 
+    public NotificationEntryBuilder setFlag(Context context, int mask, boolean value) {
+        mSbnBuilder.setFlag(context, mask, value);
+        return this;
+    }
+
     /* Delegated to RankingBuilder */
 
     public NotificationEntryBuilder setRank(int rank) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt
index 7ab4846..c6b496d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/NotificationRankingManagerTest.kt
@@ -27,10 +27,10 @@
 import com.android.systemui.SysuiTestCase
 import com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking
 import com.android.systemui.statusbar.NotificationMediaManager
+import com.android.systemui.statusbar.notification.NotificationEntryManagerLogger
 import com.android.systemui.statusbar.notification.NotificationFilter
 import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager
 import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider
-import com.android.systemui.statusbar.notification.logging.NotifLog
 import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier
 import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_ALERTING
 import com.android.systemui.statusbar.notification.stack.NotificationSectionsManager.BUCKET_SILENT
@@ -62,7 +62,7 @@
                 mock(NotificationGroupManager::class.java),
                 mock(HeadsUpManager::class.java),
                 mock(NotificationFilter::class.java),
-                mock(NotifLog::class.java),
+                mock(NotificationEntryManagerLogger::class.java),
                 mock(NotificationSectionsFeatureManager::class.java),
                 personNotificationIdentifier,
                 HighPriorityProvider(personNotificationIdentifier)
@@ -189,7 +189,7 @@
         groupManager: NotificationGroupManager,
         headsUpManager: HeadsUpManager,
         filter: NotificationFilter,
-        notifLog: NotifLog,
+        logger: NotificationEntryManagerLogger,
         sectionsFeatureManager: NotificationSectionsFeatureManager,
         peopleNotificationIdentifier: PeopleNotificationIdentifier,
         highPriorityProvider: HighPriorityProvider
@@ -198,7 +198,7 @@
         groupManager,
         headsUpManager,
         filter,
-        notifLog,
+        logger,
         sectionsFeatureManager,
         peopleNotificationIdentifier,
         highPriorityProvider
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
index 18f133f..27ca18c 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/ShadeListBuilderTest.java
@@ -853,7 +853,7 @@
     public void testGroupTransformEntries() {
         // GIVEN a registered OnBeforeTransformGroupsListener
         RecordingOnBeforeTransformGroupsListener listener =
-                spy(new RecordingOnBeforeTransformGroupsListener());
+                new RecordingOnBeforeTransformGroupsListener();
         mListBuilder.addOnBeforeTransformGroupsListener(listener);
 
         // GIVEN some new notifs
@@ -879,12 +879,12 @@
         );
 
         // THEN all the new notifs, including the new GroupEntry, are passed to the listener
-        verify(listener).onBeforeTransformGroups(
+        assertEquals(
                 Arrays.asList(
                         mEntrySet.get(0),
                         mBuiltList.get(1),
-                        mEntrySet.get(4)
-                )
+                        mEntrySet.get(4)),
+                listener.mEntriesReceived
         );
     }
 
@@ -925,13 +925,71 @@
         );
 
         // THEN all the new notifs, including the new GroupEntry, are passed to the listener
-        verify(listener).onBeforeTransformGroups(
+        assertEquals(
+                Arrays.asList(
+                        mEntrySet.get(0),
+                        mBuiltList.get(2),
+                        mEntrySet.get(7),
+                        mEntrySet.get(1)),
+                listener.mEntriesReceived
+        );
+    }
+
+    @Test
+    public void testDispatchListOnBeforeSort() {
+        // GIVEN a registered OnBeforeSortListener
+        RecordingOnBeforeSortListener listener =
+                new RecordingOnBeforeSortListener();
+        mListBuilder.addOnBeforeSortListener(listener);
+        mListBuilder.setComparators(Arrays.asList(new HypeComparator(PACKAGE_3)));
+
+        // GIVEN some new notifs out of order
+        addNotif(0, PACKAGE_1);
+        addNotif(1, PACKAGE_2);
+        addNotif(2, PACKAGE_3);
+
+        // WHEN we run the pipeline
+        dispatchBuild();
+
+        // THEN all the new notifs are passed to the listener out of order
+        assertEquals(
                 Arrays.asList(
                         mEntrySet.get(0),
                         mEntrySet.get(1),
-                        mBuiltList.get(2),
-                        mEntrySet.get(7)
-                )
+                        mEntrySet.get(2)),
+                listener.mEntriesReceived
+        );
+
+        // THEN the final list is in order
+        verifyBuiltList(
+                notif(2),
+                notif(0),
+                notif(1)
+        );
+    }
+
+    @Test
+    public void testDispatchListOnBeforeRender() {
+        // GIVEN a registered OnBeforeRenderList
+        RecordingOnBeforeRenderistener listener =
+                new RecordingOnBeforeRenderistener();
+        mListBuilder.addOnBeforeRenderListListener(listener);
+
+        // GIVEN some new notifs out of order
+        addNotif(0, PACKAGE_1);
+        addNotif(1, PACKAGE_2);
+        addNotif(2, PACKAGE_3);
+
+        // WHEN we run the pipeline
+        dispatchBuild();
+
+        // THEN all the new notifs are passed to the listener
+        assertEquals(
+                Arrays.asList(
+                        mEntrySet.get(0),
+                        mEntrySet.get(1),
+                        mEntrySet.get(2)),
+                listener.mEntriesReceived
         );
     }
 
@@ -1346,9 +1404,32 @@
 
     private static class RecordingOnBeforeTransformGroupsListener
             implements OnBeforeTransformGroupsListener {
+        List<ListEntry> mEntriesReceived;
 
         @Override
-        public void onBeforeTransformGroups(List<ListEntry> list) { }
+        public void onBeforeTransformGroups(List<ListEntry> list) {
+            mEntriesReceived = new ArrayList<>(list);
+        }
+    }
+
+    private static class RecordingOnBeforeSortListener
+            implements OnBeforeSortListener {
+        List<ListEntry> mEntriesReceived;
+
+        @Override
+        public void onBeforeSort(List<ListEntry> list) {
+            mEntriesReceived = new ArrayList<>(list);
+        }
+    }
+
+    private static class RecordingOnBeforeRenderistener
+            implements OnBeforeRenderListListener {
+        List<ListEntry> mEntriesReceived;
+
+        @Override
+        public void onBeforeRenderList(List<ListEntry> list) {
+            mEntriesReceived = new ArrayList<>(list);
+        }
     }
 
     private static final String PACKAGE_1 = "com.test1";
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java
new file mode 100644
index 0000000..61a4fbe
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/collection/coordinator/PreparationCoordinatorTest.java
@@ -0,0 +1,111 @@
+/*
+ * 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.systemui.statusbar.notification.collection.coordinator;
+
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.os.RemoteException;
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.statusbar.IStatusBarService;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.notification.collection.NotifInflaterImpl;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+import com.android.systemui.statusbar.notification.collection.listbuilder.pluggable.NotifFilter;
+import com.android.systemui.statusbar.notification.row.NotifInflationErrorManager;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.List;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class PreparationCoordinatorTest extends SysuiTestCase {
+    private static final String TEST_MESSAGE = "TEST_MESSAGE";
+
+    private PreparationCoordinator mCoordinator;
+    private NotifFilter mInflationErrorFilter;
+    private NotifInflationErrorManager mErrorManager;
+    private NotificationEntry mEntry;
+    private Exception mInflationError;
+
+    @Mock
+    private NotifPipeline mNotifPipeline;
+    @Mock private IStatusBarService mService;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mEntry = new NotificationEntryBuilder().build();
+        mInflationError = new Exception(TEST_MESSAGE);
+        mErrorManager = new NotifInflationErrorManager();
+
+        mCoordinator = new PreparationCoordinator(
+                mock(PreparationCoordinatorLogger.class),
+                mock(NotifInflaterImpl.class),
+                mErrorManager,
+                mService);
+
+        ArgumentCaptor<NotifFilter> filterCaptor = ArgumentCaptor.forClass(NotifFilter.class);
+        mCoordinator.attach(mNotifPipeline);
+        verify(mNotifPipeline, times(2)).addPreRenderFilter(filterCaptor.capture());
+        List<NotifFilter> filters = filterCaptor.getAllValues();
+        mInflationErrorFilter = filters.get(0);
+    }
+
+    @Test
+    public void testErrorLogsToService() throws RemoteException {
+        // WHEN an entry has an inflation error.
+        mErrorManager.setInflationError(mEntry, mInflationError);
+
+        // THEN we log to status bar service.
+        verify(mService).onNotificationError(
+                eq(mEntry.getSbn().getPackageName()),
+                eq(mEntry.getSbn().getTag()),
+                eq(mEntry.getSbn().getId()),
+                eq(mEntry.getSbn().getUid()),
+                eq(mEntry.getSbn().getInitialPid()),
+                eq(mInflationError.getMessage()),
+                eq(mEntry.getSbn().getUserId()));
+    }
+
+    @Test
+    public void testFiltersOutErroredNotifications() {
+        // WHEN an entry has an inflation error.
+        mErrorManager.setInflationError(mEntry, mInflationError);
+
+        // THEN we filter it from the notification list.
+        assertTrue(mInflationErrorFilter.shouldFilterOut(mEntry, 0));
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
index 3d79ce1..a891810 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/ExpandableNotificationRowTest.java
@@ -21,7 +21,6 @@
 import static com.android.systemui.statusbar.NotificationEntryHelper.modifyRanking;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL;
 import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
-import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_PUBLIC;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -51,7 +50,6 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.AboveShelfChangedListener;
 import com.android.systemui.statusbar.notification.stack.NotificationChildrenContainer;
 
@@ -147,15 +145,6 @@
     }
 
     @Test
-    public void setNeedsRedactionSetsInflationFlag() throws Exception {
-        ExpandableNotificationRow row = mNotificationTestHelper.createRow();
-
-        row.setNeedsRedaction(true);
-
-        assertTrue(row.isInflationFlagSet(FLAG_CONTENT_VIEW_PUBLIC));
-    }
-
-    @Test
     public void setNeedsRedactionFreesViewWhenFalse() throws Exception {
         ExpandableNotificationRow row = mNotificationTestHelper.createRow(FLAG_CONTENT_VIEW_ALL);
         row.setNeedsRedaction(true);
@@ -205,9 +194,8 @@
     @Test
     public void testClickSound() throws Exception {
         assertTrue("Should play sounds by default.", mGroupRow.isSoundEffectsEnabled());
-        StatusBarStateController mock = mock(StatusBarStateController.class);
+        StatusBarStateController mock = mNotificationTestHelper.getStatusBarStateController();
         when(mock.isDozing()).thenReturn(true);
-        mGroupRow.setStatusBarStateController(mock);
         mGroupRow.setSecureStateProvider(()-> false);
         assertFalse("Shouldn't play sounds when dark and trusted.",
                 mGroupRow.isSoundEffectsEnabled());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java
new file mode 100644
index 0000000..408bba4
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifBindPipelineTest.java
@@ -0,0 +1,158 @@
+/*
+ * Copyright (C) 2019 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.row;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.annotation.NonNull;
+import androidx.core.os.CancellationSignal;
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
+import com.android.systemui.statusbar.notification.row.NotifBindPipeline.BindCallback;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class NotifBindPipelineTest extends SysuiTestCase {
+
+    private NotifBindPipeline mBindPipeline;
+    private TestBindStage mStage = new TestBindStage();
+
+    @Mock private NotificationEntry mEntry;
+    @Mock private ExpandableNotificationRow mRow;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        CommonNotifCollection collection = mock(CommonNotifCollection.class);
+
+        mBindPipeline = new NotifBindPipeline(collection);
+        mBindPipeline.setStage(mStage);
+
+        ArgumentCaptor<NotifCollectionListener> collectionListenerCaptor =
+                ArgumentCaptor.forClass(NotifCollectionListener.class);
+        verify(collection).addCollectionListener(collectionListenerCaptor.capture());
+        NotifCollectionListener listener = collectionListenerCaptor.getValue();
+
+        listener.onEntryInit(mEntry);
+    }
+
+    @Test
+    public void testCallbackCalled() {
+        // GIVEN a bound row
+        mBindPipeline.manageRow(mEntry, mRow);
+
+        // WHEN content is invalidated
+        BindCallback callback = mock(BindCallback.class);
+        mStage.requestRebind(mEntry, callback);
+
+        // WHEN stage finishes its work
+        mStage.doWorkSynchronously();
+
+        // THEN the callback is called when bind finishes
+        verify(callback).onBindFinished(mEntry);
+    }
+
+    @Test
+    public void testCallbackCancelled() {
+        // GIVEN a bound row
+        mBindPipeline.manageRow(mEntry, mRow);
+
+        // GIVEN an in-progress pipeline run
+        BindCallback callback = mock(BindCallback.class);
+        CancellationSignal signal = mStage.requestRebind(mEntry, callback);
+
+        // WHEN the callback is cancelled.
+        signal.cancel();
+
+        // WHEN the stage finishes all its work
+        mStage.doWorkSynchronously();
+
+        // THEN the callback is not called when bind finishes
+        verify(callback, never()).onBindFinished(mEntry);
+    }
+
+    @Test
+    public void testMultipleCallbacks() {
+        // GIVEN a bound row
+        mBindPipeline.manageRow(mEntry, mRow);
+
+        // WHEN the pipeline is invalidated.
+        BindCallback callback = mock(BindCallback.class);
+        mStage.requestRebind(mEntry, callback);
+
+        // WHEN the pipeline is invalidated again before the work completes.
+        BindCallback callback2 = mock(BindCallback.class);
+        mStage.requestRebind(mEntry, callback2);
+
+        // WHEN the stage finishes all work.
+        mStage.doWorkSynchronously();
+
+        // THEN both callbacks are called when the bind finishes
+        verify(callback).onBindFinished(mEntry);
+        verify(callback2).onBindFinished(mEntry);
+    }
+
+    /**
+     * Bind stage for testing where asynchronous work can be synchronously controlled.
+     */
+    private static class TestBindStage extends BindStage {
+        private List<Runnable> mExecutionRequests = new ArrayList<>();
+
+        @Override
+        protected void executeStage(@NonNull NotificationEntry entry,
+                @NonNull ExpandableNotificationRow row, @NonNull StageCallback callback) {
+            mExecutionRequests.add(() -> callback.onStageFinished(entry));
+        }
+
+        @Override
+        protected void abortStage(@NonNull NotificationEntry entry,
+                @NonNull ExpandableNotificationRow row) {
+
+        }
+
+        @Override
+        protected Object newStageParams() {
+            return null;
+        }
+
+        public void doWorkSynchronously() {
+            for (Runnable work: mExecutionRequests) {
+                work.run();
+            }
+        }
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java
index d7214f3..20cc01a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotifRemoteViewCacheImplTest.java
@@ -32,10 +32,10 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.notification.NotificationEntryListener;
-import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -50,7 +50,7 @@
 
     private NotifRemoteViewCacheImpl mNotifRemoteViewCache;
     private NotificationEntry mEntry;
-    private NotificationEntryListener mEntryListener;
+    private NotifCollectionListener mEntryListener;
     @Mock private RemoteViews mRemoteViews;
 
     @Before
@@ -58,19 +58,17 @@
         MockitoAnnotations.initMocks(this);
         mEntry = new NotificationEntryBuilder().build();
 
-        NotificationEntryManager entryManager = mock(NotificationEntryManager.class);
-        mNotifRemoteViewCache = new NotifRemoteViewCacheImpl(entryManager);
-        ArgumentCaptor<NotificationEntryListener> entryListenerCaptor =
-                ArgumentCaptor.forClass(NotificationEntryListener.class);
-        verify(entryManager).addNotificationEntryListener(entryListenerCaptor.capture());
+        CommonNotifCollection collection = mock(CommonNotifCollection.class);
+        mNotifRemoteViewCache = new NotifRemoteViewCacheImpl(collection);
+        ArgumentCaptor<NotifCollectionListener> entryListenerCaptor =
+                ArgumentCaptor.forClass(NotifCollectionListener.class);
+        verify(collection).addCollectionListener(entryListenerCaptor.capture());
         mEntryListener = entryListenerCaptor.getValue();
+        mEntryListener.onEntryInit(mEntry);
     }
 
     @Test
     public void testPutCachedView() {
-        // GIVEN an initialized cache for an entry.
-        mEntryListener.onPendingEntryAdded(mEntry);
-
         // WHEN a notification's cached remote views is put in.
         mNotifRemoteViewCache.putCachedView(mEntry, FLAG_CONTENT_VIEW_CONTRACTED, mRemoteViews);
 
@@ -85,7 +83,6 @@
     @Test
     public void testRemoveCachedView() {
         // GIVEN a cache with a cached view.
-        mEntryListener.onPendingEntryAdded(mEntry);
         mNotifRemoteViewCache.putCachedView(mEntry, FLAG_CONTENT_VIEW_CONTRACTED, mRemoteViews);
 
         // WHEN we remove the cached view.
@@ -98,7 +95,6 @@
     @Test
     public void testClearCache() {
         // GIVEN a non-empty cache.
-        mEntryListener.onPendingEntryAdded(mEntry);
         mNotifRemoteViewCache.putCachedView(mEntry, FLAG_CONTENT_VIEW_CONTRACTED, mRemoteViews);
         mNotifRemoteViewCache.putCachedView(mEntry, FLAG_CONTENT_VIEW_EXPANDED, mRemoteViews);
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationBlockingHelperManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationBlockingHelperManagerTest.java
index 444a6e5..1dfe7bc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationBlockingHelperManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationBlockingHelperManagerTest.java
@@ -46,7 +46,6 @@
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.util.Assert;
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
index cb9da6a..8a42e5f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationContentInflaterTest.java
@@ -49,9 +49,7 @@
 import androidx.test.filters.Suppress;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.InflationTask;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationCallback;
@@ -200,8 +198,7 @@
                     }
 
                     @Override
-                    public void onAsyncInflationFinished(NotificationEntry entry,
-                            @InflationFlag int inflatedFlags) {
+                    public void onAsyncInflationFinished(NotificationEntry entry) {
                         countDownLatch.countDown();
                     }
                 }, mRow.getPrivateLayout(), null, null, new HashMap<>(),
@@ -219,34 +216,6 @@
         assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS));
     }
 
-    /* Cancelling requires us to be on the UI thread otherwise we might have a race */
-    @Test
-    public void testSupersedesExistingTask() {
-        mNotificationInflater.bindContent(
-                mRow.getEntry(),
-                mRow,
-                FLAG_CONTENT_VIEW_ALL,
-                new BindParams(),
-                false /* forceInflate */,
-                null /* callback */);
-
-        // Trigger inflation of contracted only.
-        mNotificationInflater.bindContent(
-                mRow.getEntry(),
-                mRow,
-                FLAG_CONTENT_VIEW_CONTRACTED,
-                new BindParams(),
-                false /* forceInflate */,
-                null /* callback */);
-
-        InflationTask runningTask = mRow.getEntry().getRunningTask();
-        NotificationContentInflater.AsyncInflationTask asyncInflationTask =
-                (NotificationContentInflater.AsyncInflationTask) runningTask;
-        assertEquals("Successive inflations don't inherit the previous flags!",
-                FLAG_CONTENT_VIEW_ALL, asyncInflationTask.getReInflateFlags());
-        runningTask.abort();
-    }
-
     @Test
     public void doesntReapplyDisallowedRemoteView() throws Exception {
         mBuilder.setStyle(new Notification.MediaStyle());
@@ -349,8 +318,7 @@
             }
 
             @Override
-            public void onAsyncInflationFinished(NotificationEntry entry,
-                    @InflationFlag int inflatedFlags) {
+            public void onAsyncInflationFinished(NotificationEntry entry) {
                 if (expectingException) {
                     exceptionHolder.setException(new RuntimeException(
                             "Inflation finished even though there should be an error"));
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
index 20a089f..e8de10f7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationConversationInfoTest.java
@@ -75,6 +75,7 @@
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
+import com.android.systemui.statusbar.phone.ShadeController;
 
 import org.junit.Before;
 import org.junit.Rule;
@@ -131,6 +132,8 @@
     private ShortcutManager mShortcutManager;
     @Mock
     private NotificationGuts mNotificationGuts;
+    @Mock
+    private ShadeController mShadeController;
 
     @Before
     public void setUp() throws Exception {
@@ -139,12 +142,12 @@
         mDependency.injectTestDependency(Dependency.BG_LOOPER, mTestableLooper.getLooper());
         mDependency.injectTestDependency(MetricsLogger.class, mMetricsLogger);
         mDependency.injectTestDependency(BubbleController.class, mBubbleController);
+        mDependency.injectTestDependency(ShadeController.class, mShadeController);
         // Inflate the layout
         final LayoutInflater layoutInflater = LayoutInflater.from(mContext);
         mNotificationInfo = (NotificationConversationInfo) layoutInflater.inflate(
                 R.layout.notification_conversation_info,
                 null);
-        mNotificationInfo.mShowHomeScreen = true;
         mNotificationInfo.setGutsParent(mNotificationGuts);
         doAnswer((Answer<Object>) invocation -> {
             mNotificationInfo.handleCloseControls(true, false);
@@ -173,7 +176,7 @@
         when(mShortcutInfo.getShortLabel()).thenReturn("Convo name");
         List<ShortcutInfo> shortcuts = Arrays.asList(mShortcutInfo);
         when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcuts);
-        mImage = mContext.getDrawable(R.drawable.ic_star);
+        mImage = mContext.getDrawable(R.drawable.ic_remove);
         when(mLauncherApps.getShortcutBadgedIconDrawable(eq(mShortcutInfo),
                 anyInt())).thenReturn(mImage);
 
@@ -333,8 +336,6 @@
                 true);
         final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name);
         assertEquals(GONE, nameView.getVisibility());
-        final TextView dividerView = mNotificationInfo.findViewById(R.id.pkg_divider);
-        assertEquals(GONE, dividerView.getVisibility());
     }
 
     @Test
@@ -364,8 +365,6 @@
         final TextView nameView = mNotificationInfo.findViewById(R.id.delegate_name);
         assertEquals(VISIBLE, nameView.getVisibility());
         assertTrue(nameView.getText().toString().contains("Proxied"));
-        final TextView dividerView = mNotificationInfo.findViewById(R.id.pkg_divider);
-        assertEquals(VISIBLE, dividerView.getVisibility());
     }
 
     @Test
@@ -502,6 +501,7 @@
         verify(mShortcutManager, times(1)).requestPinShortcut(mShortcutInfo, null);
         verify(mMockINotificationManager, never()).updateNotificationChannelForPackage(
                 anyString(), anyInt(), any());
+        verify(mShadeController).animateCollapsePanels();
     }
 
     @Test
@@ -644,9 +644,9 @@
                 true);
 
 
-        Button fave = mNotificationInfo.findViewById(R.id.fave);
-        assertEquals(mContext.getString(R.string.notification_conversation_favorite),
-                fave.getText().toString());
+        ImageButton fave = mNotificationInfo.findViewById(R.id.fave);
+        assertEquals(mContext.getString(R.string.notification_conversation_unfavorite),
+                fave.getContentDescription().toString());
 
         fave.performClick();
         mTestableLooper.processAllMessages();
@@ -655,13 +655,13 @@
                 ArgumentCaptor.forClass(NotificationChannel.class);
         verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage(
                 anyString(), anyInt(), captor.capture());
-        assertTrue(captor.getValue().canBypassDnd());
+        assertTrue(captor.getValue().isImportantConversation());
     }
 
     @Test
     public void testFavorite_unfavorite() throws Exception {
-        mNotificationChannel.setBypassDnd(true);
-        mConversationChannel.setBypassDnd(true);
+        mNotificationChannel.setImportantConversation(true);
+        mConversationChannel.setImportantConversation(true);
 
         mNotificationInfo.bindNotification(
                 mShortcutManager,
@@ -677,9 +677,9 @@
                 null,
                 true);
 
-        Button fave = mNotificationInfo.findViewById(R.id.fave);
-        assertEquals(mContext.getString(R.string.notification_conversation_unfavorite),
-                fave.getText().toString());
+        ImageButton fave = mNotificationInfo.findViewById(R.id.fave);
+        assertEquals(mContext.getString(R.string.notification_conversation_favorite),
+                fave.getContentDescription().toString());
 
         fave.performClick();
         mTestableLooper.processAllMessages();
@@ -688,35 +688,7 @@
                 ArgumentCaptor.forClass(NotificationChannel.class);
         verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage(
                 anyString(), anyInt(), captor.capture());
-        assertFalse(captor.getValue().canBypassDnd());
-    }
-
-    @Test
-    public void testDemote() throws Exception {
-        mNotificationInfo.bindNotification(
-                mShortcutManager,
-                mLauncherApps,
-                mMockPackageManager,
-                mMockINotificationManager,
-                mVisualStabilityManager,
-                TEST_PACKAGE_NAME,
-                mNotificationChannel,
-                mEntry,
-                null,
-                null,
-                null,
-                true);
-
-
-        ImageButton demote = mNotificationInfo.findViewById(R.id.demote);
-        demote.performClick();
-        mTestableLooper.processAllMessages();
-
-        ArgumentCaptor<NotificationChannel> captor =
-                ArgumentCaptor.forClass(NotificationChannel.class);
-        verify(mMockINotificationManager, times(1)).updateNotificationChannelForPackage(
-                anyString(), anyInt(), captor.capture());
-        assertTrue(captor.getValue().isDemoted());
+        assertFalse(captor.getValue().isImportantConversation());
     }
 
     @Test
@@ -738,9 +710,9 @@
                 null,
                 true);
 
-        Button mute = mNotificationInfo.findViewById(R.id.mute);
-        assertEquals(mContext.getString(R.string.notification_conversation_mute),
-                mute.getText().toString());
+        ImageButton mute = mNotificationInfo.findViewById(R.id.mute);
+        assertEquals(mContext.getString(R.string.notification_conversation_unmute),
+                mute.getContentDescription().toString());
 
         mute.performClick();
         mTestableLooper.processAllMessages();
@@ -774,9 +746,9 @@
                 true);
 
 
-        Button mute = mNotificationInfo.findViewById(R.id.mute);
-        assertEquals(mContext.getString(R.string.notification_conversation_unmute),
-                mute.getText().toString());
+        ImageButton mute = mNotificationInfo.findViewById(R.id.mute);
+        assertEquals(mContext.getString(R.string.notification_conversation_mute),
+                mute.getContentDescription().toString());
 
         mute.performClick();
         mTestableLooper.processAllMessages();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
index 4e27770..bbb6723 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationGutsManagerTest.java
@@ -66,7 +66,6 @@
 import com.android.systemui.plugins.statusbar.NotificationMenuRowPlugin;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationPresenter;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.NotificationActivityStarter;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
similarity index 81%
rename from packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
rename to packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
index 457bbe23..fd5512d 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/NotificationTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/NotificationTestHelper.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -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.statusbar;
+package com.android.systemui.statusbar.notification.row;
 
 import static android.app.Notification.FLAG_BUBBLE;
 import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
@@ -24,6 +24,7 @@
 
 import static org.junit.Assert.assertTrue;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
 
 import android.annotation.Nullable;
 import android.app.ActivityManager;
@@ -43,14 +44,17 @@
 import com.android.systemui.TestableDependency;
 import com.android.systemui.bubbles.BubbleController;
 import com.android.systemui.bubbles.BubblesTestActivity;
+import com.android.systemui.plugins.FalsingManager;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
+import com.android.systemui.statusbar.NotificationMediaManager;
+import com.android.systemui.statusbar.NotificationRemoteInputManager;
+import com.android.systemui.statusbar.SmartReplyController;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
-import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.collection.notifcollection.CommonNotifCollection;
+import com.android.systemui.statusbar.notification.collection.notifcollection.NotifCollectionListener;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.ExpansionLogger;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow.OnExpandClickListener;
-import com.android.systemui.statusbar.notification.row.NotifRemoteViewCache;
-import com.android.systemui.statusbar.notification.row.NotificationContentInflater;
 import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.InflationFlag;
 import com.android.systemui.statusbar.phone.HeadsUpManagerPhone;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
@@ -58,6 +62,8 @@
 import com.android.systemui.statusbar.phone.NotificationShadeWindowController;
 import com.android.systemui.tests.R;
 
+import org.mockito.ArgumentCaptor;
+
 import java.util.concurrent.CountDownLatch;
 import java.util.concurrent.TimeUnit;
 
@@ -82,6 +88,10 @@
     private final NotificationGroupManager mGroupManager;
     private ExpandableNotificationRow mRow;
     private HeadsUpManagerPhone mHeadsUpManager;
+    private final NotifBindPipeline mBindPipeline;
+    private final NotifCollectionListener mBindPipelineEntryListener;
+    private final RowContentBindStage mBindStage;
+    private StatusBarStateController mStatusBarStateController;
 
     public NotificationTestHelper(Context context, TestableDependency dependency) {
         mContext = context;
@@ -89,12 +99,29 @@
         dependency.injectMockDependency(BubbleController.class);
         dependency.injectMockDependency(NotificationShadeWindowController.class);
         dependency.injectMockDependency(SmartReplyController.class);
-        StatusBarStateController stateController = mock(StatusBarStateController.class);
-        mGroupManager = new NotificationGroupManager(stateController);
-        mHeadsUpManager = new HeadsUpManagerPhone(mContext, stateController,
+        mStatusBarStateController = mock(StatusBarStateController.class);
+        mGroupManager = new NotificationGroupManager(mStatusBarStateController);
+        mHeadsUpManager = new HeadsUpManagerPhone(mContext, mStatusBarStateController,
                 mock(KeyguardBypassController.class));
         mHeadsUpManager.setUp(null, mGroupManager, null, null);
         mGroupManager.setHeadsUpManager(mHeadsUpManager);
+
+
+        NotificationContentInflater contentBinder = new NotificationContentInflater(
+                mock(NotifRemoteViewCache.class),
+                mock(NotificationRemoteInputManager.class));
+        contentBinder.setInflateSynchronously(true);
+        mBindStage = new RowContentBindStage(contentBinder, mock(NotifInflationErrorManager.class));
+
+        CommonNotifCollection collection = mock(CommonNotifCollection.class);
+
+        mBindPipeline = new NotifBindPipeline(collection);
+        mBindPipeline.setStage(mBindStage);
+
+        ArgumentCaptor<NotifCollectionListener> collectionListenerCaptor =
+                ArgumentCaptor.forClass(NotifCollectionListener.class);
+        verify(collection).addCollectionListener(collectionListenerCaptor.capture());
+        mBindPipelineEntryListener = collectionListenerCaptor.getValue();
     }
 
     /**
@@ -173,9 +200,17 @@
     /**
      * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
      */
+    public ExpandableNotificationRow createBubbleInGroup()
+            throws Exception {
+        return createBubble(makeBubbleMetadata(null), PKG, true);
+    }
+
+    /**
+     * Returns an {@link ExpandableNotificationRow} that should be shown as a bubble.
+     */
     public ExpandableNotificationRow createBubble()
             throws Exception {
-        return createBubble(makeBubbleMetadata(null), PKG);
+        return createBubble(makeBubbleMetadata(null), PKG, false);
     }
 
     /**
@@ -185,7 +220,7 @@
      */
     public ExpandableNotificationRow createBubble(@Nullable PendingIntent deleteIntent)
             throws Exception {
-        return createBubble(makeBubbleMetadata(deleteIntent), PKG);
+        return createBubble(makeBubbleMetadata(deleteIntent), PKG, false);
     }
 
     /**
@@ -195,8 +230,14 @@
      */
     public ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg)
             throws Exception {
+        return createBubble(bubbleMetadata, pkg, false);
+    }
+
+    private ExpandableNotificationRow createBubble(BubbleMetadata bubbleMetadata, String pkg,
+            boolean inGroup)
+            throws Exception {
         Notification n = createNotification(false /* isGroupSummary */,
-                null /* groupKey */, bubbleMetadata);
+                inGroup ? GROUP_KEY : null /* groupKey */, bubbleMetadata);
         n.flags |= FLAG_BUBBLE;
         ExpandableNotificationRow row = generateRow(n, pkg, UID, USER_HANDLE,
                 0 /* extraInflationFlags */, IMPORTANCE_HIGH);
@@ -281,6 +322,10 @@
         return notificationBuilder.build();
     }
 
+    public StatusBarStateController getStatusBarStateController() {
+        return mStatusBarStateController;
+    }
+
     private ExpandableNotificationRow generateRow(
             Notification notification,
             String pkg,
@@ -331,10 +376,8 @@
         entry.createIcons(mContext, entry.getSbn());
         row.setEntry(entry);
 
-        NotificationContentInflater contentBinder = new NotificationContentInflater(
-                mock(NotifRemoteViewCache.class),
-                mock(NotificationRemoteInputManager.class));
-        contentBinder.setInflateSynchronously(true);
+        mBindPipelineEntryListener.onEntryInit(entry);
+        mBindPipeline.manageRow(entry, row);
 
         row.initialize(
                 APP_NAME,
@@ -343,12 +386,15 @@
                 mock(KeyguardBypassController.class),
                 mGroupManager,
                 mHeadsUpManager,
-                contentBinder,
-                mock(OnExpandClickListener.class));
+                mBindStage,
+                mock(OnExpandClickListener.class),
+                mock(NotificationMediaManager.class),
+                mock(ExpandableNotificationRow.OnAppOpsClickListener.class),
+                mock(FalsingManager.class),
+                mStatusBarStateController);
         row.setAboveShelfChangedListener(aboveShelf -> { });
-
-        row.setInflationFlags(extraInflationFlags);
-        inflateAndWait(row);
+        mBindStage.getStageParams(entry).requireContentViews(extraInflationFlags);
+        inflateAndWait(entry, mBindStage);
 
         // This would be done as part of onAsyncInflationFinished, but we skip large amounts of
         // the callback chain, so we need to make up for not adding it to the group manager
@@ -357,24 +403,10 @@
         return row;
     }
 
-    private static void inflateAndWait(ExpandableNotificationRow row) throws Exception {
+    private static void inflateAndWait(NotificationEntry entry, RowContentBindStage stage)
+            throws Exception {
         CountDownLatch countDownLatch = new CountDownLatch(1);
-        NotificationContentInflater.InflationCallback callback =
-                new NotificationContentInflater.InflationCallback() {
-                    @Override
-                    public void handleInflationException(NotificationEntry entry,
-                            Exception e) {
-                        countDownLatch.countDown();
-                    }
-
-                    @Override
-                    public void onAsyncInflationFinished(NotificationEntry entry,
-                            int inflatedFlags) {
-                        countDownLatch.countDown();
-                    }
-                };
-        row.setInflationCallback(callback);
-        row.inflateViews();
+        stage.requestRebind(entry, en -> countDownLatch.countDown());
         assertTrue(countDownLatch.await(500, TimeUnit.MILLISECONDS));
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java
new file mode 100644
index 0000000..d9fe655
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/RowContentBindStageTest.java
@@ -0,0 +1,268 @@
+/*
+ * 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.systemui.statusbar.notification.row;
+
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_ALL;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_CONTRACTED;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_EXPANDED;
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
+
+import static junit.framework.Assert.assertTrue;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+
+import android.testing.AndroidTestingRunner;
+import android.testing.TestableLooper;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.BindParams;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.ArgumentCaptor;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+@TestableLooper.RunWithLooper
+public class RowContentBindStageTest extends SysuiTestCase {
+
+    private RowContentBindStage mRowContentBindStage;
+
+    @Mock private NotificationRowContentBinder mBinder;
+    @Mock private NotificationEntry mEntry;
+    @Mock private ExpandableNotificationRow mRow;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mRowContentBindStage = new RowContentBindStage(mBinder,
+                mock(NotifInflationErrorManager.class));
+        mRowContentBindStage.createStageParams(mEntry);
+    }
+
+    @Test
+    public void testRequireContentViews() {
+        // WHEN inflation flags are set and pipeline is invalidated.
+        final int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(flags);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder binds inflation flags.
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(flags),
+                any(),
+                anyBoolean(),
+                any());
+    }
+
+    @Test
+    public void testFreeContentViews() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+
+        // WHEN inflation flags are cleared and stage executed.
+        final int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
+        params.freeContentViews(flags);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder unbinds flags.
+        verify(mBinder).unbindContent(eq(mEntry), any(), eq(flags));
+    }
+
+    @Test
+    public void testRebindAllContentViews() {
+        // GIVEN a view with content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        final int flags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
+        params.requireContentViews(flags);
+        params.clearDirtyContentViews();
+
+        // WHEN we request rebind and stage executed.
+        params.rebindAllContentViews();
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder binds inflation flags.
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(flags),
+                any(),
+                anyBoolean(),
+                any());
+    }
+
+    @Test
+    public void testSetUseLowPriority() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+        params.clearDirtyContentViews();
+
+        // WHEN low priority is set and stage executed.
+        params.setUseLowPriority(true);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with use low priority and contracted/expanded are called to bind.
+        ArgumentCaptor<BindParams> bindParamsCaptor = ArgumentCaptor.forClass(BindParams.class);
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED),
+                bindParamsCaptor.capture(),
+                anyBoolean(),
+                any());
+        BindParams usedParams = bindParamsCaptor.getValue();
+        assertTrue(usedParams.isLowPriority);
+    }
+
+    @Test
+    public void testSetUseGroupInChild() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+        params.clearDirtyContentViews();
+
+        // WHEN use group is set and stage executed.
+        params.setUseChildInGroup(true);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with use group view and contracted/expanded are called to bind.
+        ArgumentCaptor<BindParams> bindParamsCaptor = ArgumentCaptor.forClass(BindParams.class);
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED),
+                bindParamsCaptor.capture(),
+                anyBoolean(),
+                any());
+        BindParams usedParams = bindParamsCaptor.getValue();
+        assertTrue(usedParams.isChildInGroup);
+    }
+
+    @Test
+    public void testSetUseIncreasedHeight() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+        params.clearDirtyContentViews();
+
+        // WHEN use increased height is set and stage executed.
+        params.setUseIncreasedCollapsedHeight(true);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with group view and contracted is bound.
+        ArgumentCaptor<BindParams> bindParamsCaptor = ArgumentCaptor.forClass(BindParams.class);
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(FLAG_CONTENT_VIEW_CONTRACTED),
+                bindParamsCaptor.capture(),
+                anyBoolean(),
+                any());
+        BindParams usedParams = bindParamsCaptor.getValue();
+        assertTrue(usedParams.usesIncreasedHeight);
+    }
+
+    @Test
+    public void testSetUseIncreasedHeadsUpHeight() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+        params.clearDirtyContentViews();
+
+        // WHEN use increased heads up height is set and stage executed.
+        params.setUseIncreasedHeadsUpHeight(true);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with use group view and heads up is bound.
+        ArgumentCaptor<BindParams> bindParamsCaptor = ArgumentCaptor.forClass(BindParams.class);
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(FLAG_CONTENT_VIEW_HEADS_UP),
+                bindParamsCaptor.capture(),
+                anyBoolean(),
+                any());
+        BindParams usedParams = bindParamsCaptor.getValue();
+        assertTrue(usedParams.usesIncreasedHeadsUpHeight);
+    }
+
+    @Test
+    public void testSetNeedsReinflation() {
+        // GIVEN a view with all content bound.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        params.requireContentViews(FLAG_CONTENT_VIEW_ALL);
+        params.clearDirtyContentViews();
+
+        // WHEN needs reinflation is set.
+        params.setNeedsReinflation(true);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with forceInflate and all views are requested to bind.
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(FLAG_CONTENT_VIEW_ALL),
+                any(),
+                eq(true),
+                any());
+    }
+
+    @Test
+    public void testSupersedesPreviousContentViews() {
+        // GIVEN a view with content view bind already in progress.
+        RowContentBindParams params = mRowContentBindStage.getStageParams(mEntry);
+        int defaultFlags = FLAG_CONTENT_VIEW_CONTRACTED | FLAG_CONTENT_VIEW_EXPANDED;
+        params.requireContentViews(defaultFlags);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // WHEN we bind with another content view before the first finishes.
+        params.requireContentViews(FLAG_CONTENT_VIEW_HEADS_UP);
+        mRowContentBindStage.executeStage(mEntry, mRow, (en) -> { });
+
+        // THEN binder is called with BOTH content views.
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(defaultFlags),
+                any(),
+                anyBoolean(),
+                any());
+        verify(mBinder).bindContent(
+                eq(mEntry),
+                any(),
+                eq(defaultFlags | FLAG_CONTENT_VIEW_HEADS_UP),
+                any(),
+                anyBoolean(),
+                any());
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapperTest.java
index d280f18..0790cb7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationCustomViewWrapperTest.java
@@ -25,8 +25,8 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.tests.R;
 
 import org.junit.Assert;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapperTest.java
index 4f45f68..038eff7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationMediaTemplateViewWrapperTest.java
@@ -38,8 +38,8 @@
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 
 import org.junit.Before;
 import org.junit.Test;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java
index 14e2fde..9567f33 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/row/wrapper/NotificationViewWrapperTest.java
@@ -29,8 +29,8 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.util.Assert;
 
 import org.junit.Before;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainerTest.java
index ddd2884e..1773175 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationChildrenContainerTest.java
@@ -25,8 +25,8 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 
 import org.junit.Assert;
 import org.junit.Before;
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
index 34a309f..2d1bc78 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationRoundnessManagerTest.java
@@ -30,12 +30,11 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.plugins.statusbar.StatusBarStateController;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.ExpandableView;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.phone.KeyguardBypassController;
 import com.android.systemui.util.DeviceConfigProxy;
 
@@ -59,8 +58,6 @@
     private ExpandableNotificationRow mFirst;
     private ExpandableNotificationRow mSecond;
     @Mock
-    private StatusBarStateController mStatusBarStateController;
-    @Mock
     private KeyguardBypassController mBypassController;
 
     @Before
@@ -150,13 +147,12 @@
                 createSection(mFirst, mSecond),
                 createSection(null, null)
         });
-        ExpandableNotificationRow row = new NotificationTestHelper(getContext(), mDependency)
-                .createRow();
+        NotificationTestHelper testHelper = new NotificationTestHelper(getContext(), mDependency);
+        ExpandableNotificationRow row = testHelper.createRow();
         NotificationEntry entry = mock(NotificationEntry.class);
         when(entry.getRow()).thenReturn(row);
 
-        when(mStatusBarStateController.isDozing()).thenReturn(true);
-        row.setStatusBarStateController(mStatusBarStateController);
+        when(testHelper.getStatusBarStateController().isDozing()).thenReturn(true);
         row.setHeadsUp(true);
         mRoundnessManager.onHeadsUpStateChanged(entry, true);
         Assert.assertEquals(1f, row.getCurrentBottomRoundness(), 0.0f);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
index 7602e45..9ccee75 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/notification/stack/NotificationStackScrollLayoutTest.java
@@ -54,6 +54,7 @@
 import com.android.systemui.statusbar.EmptyShadeView;
 import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
+import com.android.systemui.statusbar.NotificationLockscreenUserManager.UserChangedListener;
 import com.android.systemui.statusbar.NotificationMediaManager;
 import com.android.systemui.statusbar.NotificationPresenter;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
@@ -62,17 +63,20 @@
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
+import com.android.systemui.statusbar.notification.ForegroundServiceDismissalFeatureController;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
+import com.android.systemui.statusbar.notification.NotificationEntryManagerLogger;
 import com.android.systemui.statusbar.notification.NotificationFilter;
 import com.android.systemui.statusbar.notification.NotificationSectionsFeatureManager;
 import com.android.systemui.statusbar.notification.TestableNotificationEntryManager;
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
 import com.android.systemui.statusbar.notification.collection.NotificationRankingManager;
 import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinder;
 import com.android.systemui.statusbar.notification.collection.provider.HighPriorityProvider;
-import com.android.systemui.statusbar.notification.logging.NotifLog;
 import com.android.systemui.statusbar.notification.people.PeopleNotificationIdentifier;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
 import com.android.systemui.statusbar.notification.row.FooterView;
@@ -130,6 +134,9 @@
     @Mock private ZenModeController mZenModeController;
     @Mock private NotificationSectionsManager mNotificationSectionsManager;
     @Mock private NotificationSection mNotificationSection;
+    @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
+    @Mock private FeatureFlags mFeatureFlags;
+    private UserChangedListener mUserChangedListener;
     private TestableNotificationEntryManager mEntryManager;
     private int mOriginalInterruptionModelSetting;
 
@@ -156,15 +163,17 @@
         mDependency.injectMockDependency(ShadeController.class);
         when(mRemoteInputManager.getController()).thenReturn(mRemoteInputController);
 
+        ArgumentCaptor<UserChangedListener> userChangedCaptor = ArgumentCaptor
+                .forClass(UserChangedListener.class);
         mEntryManager = new TestableNotificationEntryManager(
-                mock(NotifLog.class),
+                mock(NotificationEntryManagerLogger.class),
                 mock(NotificationGroupManager.class),
                 new NotificationRankingManager(
                         () -> mock(NotificationMediaManager.class),
                         mGroupManager,
                         mHeadsUpManager,
                         mock(NotificationFilter.class),
-                        mock(NotifLog.class),
+                        mock(NotificationEntryManagerLogger.class),
                         mock(NotificationSectionsFeatureManager.class),
                         mock(PeopleNotificationIdentifier.class),
                         mock(HighPriorityProvider.class)
@@ -173,10 +182,11 @@
                 mock(FeatureFlags.class),
                 () -> mock(NotificationRowBinder.class),
                 () -> mRemoteInputManager,
-                mock(LeakDetector.class));
-        mDependency.injectTestDependency(NotificationEntryManager.class, mEntryManager);
+                mock(LeakDetector.class),
+                mock(ForegroundServiceDismissalFeatureController.class)
+        );
         mEntryManager.setUpForTest(mock(NotificationPresenter.class), null, mHeadsUpManager);
-
+        when(mFeatureFlags.isNewNotifPipelineRenderingEnabled()).thenReturn(false);
 
         NotificationShelf notificationShelf = mock(NotificationShelf.class);
         when(mNotificationSectionsManager.createSectionsForBuckets()).thenReturn(
@@ -195,10 +205,19 @@
                 mHeadsUpManager,
                 mKeyguardBypassController,
                 new FalsingManagerFake(),
-                mock(NotificationLockscreenUserManager.class),
+                mLockscreenUserManager,
                 mock(NotificationGutsManager.class),
                 mZenModeController,
-                mNotificationSectionsManager);
+                mNotificationSectionsManager,
+                mock(ForegroundServiceSectionController.class),
+                mock(ForegroundServiceDismissalFeatureController.class),
+                mFeatureFlags,
+                mock(NotifPipeline.class),
+                mEntryManager,
+                mock(NotifCollection.class)
+        );
+        verify(mLockscreenUserManager).addUserChangedListener(userChangedCaptor.capture());
+        mUserChangedListener = userChangedCaptor.getValue();
         mStackScroller = spy(mStackScrollerInternal);
         mStackScroller.setShelf(notificationShelf);
         mStackScroller.setStatusBar(mBar);
@@ -279,6 +298,12 @@
     }
 
     @Test
+    public void testOnStatePostChange_verifyIfProfileIsPublic() {
+        mUserChangedListener.onUserChanged(0);
+        verify(mLockscreenUserManager).isAnyProfilePublicMode();
+    }
+
+    @Test
     public void manageNotifications_visible() {
         FooterView view = mock(FooterView.class);
         mStackScroller.setFooterView(view);
@@ -381,8 +406,11 @@
 
         mStackScroller.onUpdateRowStates();
 
+        // Expecting the footer to be the last child
+        int expected = mStackScroller.getChildCount() - 1;
+
         // move footer to end
-        verify(mStackScroller).changeViewPosition(any(FooterView.class), eq(-1 /* end */));
+        verify(mStackScroller).changeViewPosition(any(FooterView.class), eq(expected));
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
index 3c6a698..a6e2918 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/DozeServiceHostTest.java
@@ -36,7 +36,6 @@
 import com.android.keyguard.KeyguardUpdateMonitor;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.assist.AssistManager;
-import com.android.systemui.doze.DozeEvent;
 import com.android.systemui.doze.DozeHost;
 import com.android.systemui.doze.DozeLog;
 import com.android.systemui.keyguard.KeyguardViewMediator;
@@ -144,13 +143,13 @@
             @Override
             public void onPulseFinished() {
             }
-        }, DozeEvent.PULSE_REASON_NOTIFICATION);
+        }, DozeLog.PULSE_REASON_NOTIFICATION);
 
         ArgumentCaptor<DozeHost.PulseCallback> pulseCallbackArgumentCaptor =
                 ArgumentCaptor.forClass(DozeHost.PulseCallback.class);
 
         verify(mDozeScrimController).pulse(
-                pulseCallbackArgumentCaptor.capture(), eq(DozeEvent.PULSE_REASON_NOTIFICATION));
+                pulseCallbackArgumentCaptor.capture(), eq(DozeLog.PULSE_REASON_NOTIFICATION));
         verify(mStatusBar).updateScrimController();
         reset(mStatusBar);
 
@@ -162,21 +161,21 @@
     @Test
     public void testPulseWhileDozing_notifyAuthInterrupt() {
         HashSet<Integer> reasonsWantingAuth = new HashSet<>(
-                Collections.singletonList(DozeEvent.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN));
+                Collections.singletonList(DozeLog.PULSE_REASON_SENSOR_WAKE_LOCK_SCREEN));
         HashSet<Integer> reasonsSkippingAuth = new HashSet<>(
-                Arrays.asList(DozeEvent.PULSE_REASON_INTENT,
-                        DozeEvent.PULSE_REASON_NOTIFICATION,
-                        DozeEvent.PULSE_REASON_SENSOR_SIGMOTION,
-                        DozeEvent.REASON_SENSOR_PICKUP,
-                        DozeEvent.REASON_SENSOR_DOUBLE_TAP,
-                        DozeEvent.PULSE_REASON_SENSOR_LONG_PRESS,
-                        DozeEvent.PULSE_REASON_DOCKING,
-                        DozeEvent.REASON_SENSOR_WAKE_UP,
-                        DozeEvent.REASON_SENSOR_TAP));
+                Arrays.asList(DozeLog.PULSE_REASON_INTENT,
+                        DozeLog.PULSE_REASON_NOTIFICATION,
+                        DozeLog.PULSE_REASON_SENSOR_SIGMOTION,
+                        DozeLog.REASON_SENSOR_PICKUP,
+                        DozeLog.REASON_SENSOR_DOUBLE_TAP,
+                        DozeLog.PULSE_REASON_SENSOR_LONG_PRESS,
+                        DozeLog.PULSE_REASON_DOCKING,
+                        DozeLog.REASON_SENSOR_WAKE_UP,
+                        DozeLog.REASON_SENSOR_TAP));
         HashSet<Integer> reasonsThatDontPulse = new HashSet<>(
-                Arrays.asList(DozeEvent.REASON_SENSOR_PICKUP,
-                        DozeEvent.REASON_SENSOR_DOUBLE_TAP,
-                        DozeEvent.REASON_SENSOR_TAP));
+                Arrays.asList(DozeLog.REASON_SENSOR_PICKUP,
+                        DozeLog.REASON_SENSOR_DOUBLE_TAP,
+                        DozeLog.REASON_SENSOR_TAP));
 
         doAnswer(invocation -> {
             DozeHost.PulseCallback callback = invocation.getArgument(0);
@@ -185,7 +184,7 @@
         }).when(mDozeScrimController).pulse(any(), anyInt());
 
         mDozeServiceHost.mWakeLockScreenPerformsAuth = true;
-        for (int i = 0; i < DozeEvent.TOTAL_REASONS; i++) {
+        for (int i = 0; i < DozeLog.TOTAL_REASONS; i++) {
             reset(mKeyguardUpdateMonitor);
             mDozeServiceHost.pulseWhileDozing(mock(DozeHost.PulseCallback.class), i);
             if (reasonsWantingAuth.contains(i)) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.java
index 7448dbd..f71d0fc 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/HeadsUpAppearanceControllerTest.java
@@ -35,9 +35,9 @@
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.HeadsUpStatusBarView;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.NotificationWakeUpCoordinator;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelperTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelperTest.java
index 5b54fba..e171a28 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelperTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupAlertTransferHelperTest.java
@@ -16,8 +16,12 @@
 
 package com.android.systemui.statusbar.phone;
 
+import static com.android.systemui.statusbar.notification.row.NotificationRowContentBinder.FLAG_CONTENT_VIEW_HEADS_UP;
+
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
@@ -38,6 +42,9 @@
 import com.android.systemui.statusbar.notification.NotificationEntryListener;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
+import com.android.systemui.statusbar.notification.row.NotifBindPipeline.BindCallback;
+import com.android.systemui.statusbar.notification.row.RowContentBindParams;
+import com.android.systemui.statusbar.notification.row.RowContentBindStage;
 import com.android.systemui.statusbar.policy.HeadsUpManager;
 
 import org.junit.Before;
@@ -47,6 +54,7 @@
 import org.mockito.ArgumentCaptor;
 import org.mockito.Captor;
 import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
 import org.mockito.junit.MockitoJUnit;
 import org.mockito.junit.MockitoRule;
 
@@ -62,8 +70,8 @@
     private NotificationGroupManager mGroupManager;
     private HeadsUpManager mHeadsUpManager;
     @Mock private NotificationEntryManager mNotificationEntryManager;
-    @Captor
-    private ArgumentCaptor<NotificationEntryListener> mListenerCaptor;
+    @Mock private RowContentBindStage mBindStage;
+    @Captor private ArgumentCaptor<NotificationEntryListener> mListenerCaptor;
     private NotificationEntryListener mNotificationEntryListener;
     private final HashMap<String, NotificationEntry> mPendingEntries = new HashMap<>();
     private final NotificationGroupTestHelper mGroupTestHelper =
@@ -72,6 +80,7 @@
 
     @Before
     public void setup() {
+        MockitoAnnotations.initMocks(this);
         mDependency.injectMockDependency(BubbleController.class);
         mHeadsUpManager = new HeadsUpManager(mContext) {};
 
@@ -82,7 +91,9 @@
         mDependency.injectTestDependency(NotificationGroupManager.class, mGroupManager);
         mGroupManager.setHeadsUpManager(mHeadsUpManager);
 
-        mGroupAlertTransferHelper = new NotificationGroupAlertTransferHelper();
+        when(mBindStage.getStageParams(any())).thenReturn(new RowContentBindParams());
+
+        mGroupAlertTransferHelper = new NotificationGroupAlertTransferHelper(mBindStage);
         mGroupAlertTransferHelper.setHeadsUpManager(mHeadsUpManager);
 
         mGroupAlertTransferHelper.bind(mNotificationEntryManager, mGroupManager);
@@ -97,6 +108,10 @@
         mHeadsUpManager.showNotification(summaryEntry);
         NotificationEntry childEntry = mGroupTestHelper.createChildNotification();
 
+        RowContentBindParams params = new RowContentBindParams();
+        params.requireContentViews(FLAG_CONTENT_VIEW_HEADS_UP);
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
+
         // Summary will be suppressed because there is only one child.
         mGroupManager.onEntryAdded(summaryEntry);
         mGroupManager.onEntryAdded(childEntry);
@@ -160,8 +175,8 @@
         NotificationEntry summaryEntry = mGroupTestHelper.createSummaryNotification();
         mHeadsUpManager.showNotification(summaryEntry);
         NotificationEntry childEntry = mGroupTestHelper.createChildNotification();
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
 
         mGroupManager.onEntryAdded(summaryEntry);
         mGroupManager.onEntryAdded(childEntry);
@@ -178,15 +193,16 @@
         NotificationEntry summaryEntry = mGroupTestHelper.createSummaryNotification();
         mHeadsUpManager.showNotification(summaryEntry);
         NotificationEntry childEntry = mGroupTestHelper.createChildNotification();
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
 
         mGroupManager.onEntryAdded(summaryEntry);
         mGroupManager.onEntryAdded(childEntry);
 
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(true);
-        mNotificationEntryListener.onEntryReinflated(childEntry);
+        // Child entry finishes its inflation.
+        ArgumentCaptor<BindCallback> callbackCaptor = ArgumentCaptor.forClass(BindCallback.class);
+        verify(mBindStage).requestRebind(eq(childEntry), callbackCaptor.capture());
+        callbackCaptor.getValue().onBindFinished(childEntry);
 
         // Alert is immediately removed from summary, and we show child as its content is inflated.
         assertFalse(mHeadsUpManager.isAlerting(summaryEntry.getKey()));
@@ -199,8 +215,9 @@
                 mGroupTestHelper.createSummaryNotification(Notification.GROUP_ALERT_SUMMARY);
         NotificationEntry childEntry =
                 mGroupTestHelper.createChildNotification(Notification.GROUP_ALERT_SUMMARY);
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
+
         NotificationEntry childEntry2 =
                 mGroupTestHelper.createChildNotification(Notification.GROUP_ALERT_SUMMARY);
         mHeadsUpManager.showNotification(summaryEntry);
@@ -214,9 +231,9 @@
         mGroupManager.onEntryAdded(childEntry2);
 
         // Child entry finishes its inflation.
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(true);
-        mNotificationEntryListener.onEntryReinflated(childEntry);
+        ArgumentCaptor<BindCallback> callbackCaptor = ArgumentCaptor.forClass(BindCallback.class);
+        verify(mBindStage).requestRebind(eq(childEntry), callbackCaptor.capture());
+        callbackCaptor.getValue().onBindFinished(childEntry);
 
         verify(childEntry.getRow(), times(1)).freeContentViewWhenSafe(mHeadsUpManager
             .getContentFlag());
@@ -229,8 +246,9 @@
                 mGroupTestHelper.createSummaryNotification(Notification.GROUP_ALERT_SUMMARY);
         NotificationEntry childEntry =
                 mGroupTestHelper.createChildNotification(Notification.GROUP_ALERT_SUMMARY);
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
+
         mHeadsUpManager.showNotification(summaryEntry);
         // Trigger a transfer of alert state from summary to child.
         mGroupManager.onEntryAdded(summaryEntry);
@@ -247,8 +265,9 @@
                 mGroupTestHelper.createSummaryNotification(Notification.GROUP_ALERT_SUMMARY);
         NotificationEntry childEntry =
                 mGroupTestHelper.createChildNotification(Notification.GROUP_ALERT_SUMMARY);
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
+
         mHeadsUpManager.showNotification(summaryEntry);
         // Trigger a transfer of alert state from summary to child.
         mGroupManager.onEntryAdded(summaryEntry);
@@ -270,8 +289,9 @@
                 mGroupTestHelper.createSummaryNotification(Notification.GROUP_ALERT_SUMMARY);
         NotificationEntry childEntry =
                 mGroupTestHelper.createChildNotification(Notification.GROUP_ALERT_SUMMARY, 47);
-        when(childEntry.getRow().isInflationFlagSet(mHeadsUpManager.getContentFlag()))
-            .thenReturn(false);
+        RowContentBindParams params = new RowContentBindParams();
+        when(mBindStage.getStageParams(eq(childEntry))).thenReturn(params);
+
         mHeadsUpManager.showNotification(summaryEntry);
         // Trigger a transfer of alert state from summary to child.
         mGroupManager.onEntryAdded(summaryEntry);
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java
index 54dc728..d405fea 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationGroupTestHelper.java
@@ -16,7 +16,6 @@
 
 package com.android.systemui.statusbar.phone;
 
-import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -87,7 +86,6 @@
         ExpandableNotificationRow row = mock(ExpandableNotificationRow.class);
         entry.setRow(row);
         when(row.getEntry()).thenReturn(entry);
-        when(row.isInflationFlagSet(anyInt())).thenReturn(true);
         return entry;
     }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
index 1f37ad8..5fb7159 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationPanelViewTest.java
@@ -55,7 +55,6 @@
 import com.android.systemui.classifier.FalsingManagerFake;
 import com.android.systemui.doze.DozeLog;
 import com.android.systemui.plugins.FalsingManager;
-import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.statusbar.CommandQueue;
 import com.android.systemui.statusbar.FlingAnimationUtils;
 import com.android.systemui.statusbar.KeyguardAffordanceView;
@@ -133,8 +132,6 @@
     @Mock
     private DynamicPrivacyController mDynamicPrivacyController;
     @Mock
-    private PluginManager mPluginManager;
-    @Mock
     private ShadeController mShadeController;
     @Mock
     private NotificationLockscreenUserManager mNotificationLockscreenUserManager;
@@ -218,7 +215,7 @@
         mNotificationPanelViewController = new NotificationPanelViewController(mView,
                 mInjectionInflationController,
                 coordinator, expansionHandler, mDynamicPrivacyController, mKeyguardBypassController,
-                mFalsingManager, mPluginManager, mShadeController,
+                mFalsingManager, mShadeController,
                 mNotificationLockscreenUserManager, mNotificationEntryManager,
                 mKeyguardStateController, mStatusBarStateController, mDozeLog,
                 mDozeParameters, mCommandQueue, mVibratorHelper,
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerTest.java
index 40d3395..7d52df7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowControllerTest.java
@@ -34,7 +34,6 @@
 import com.android.internal.colorextraction.ColorExtractor;
 import com.android.systemui.SysuiTestCase;
 import com.android.systemui.colorextraction.SysuiColorExtractor;
-import com.android.systemui.statusbar.SuperStatusBarViewFactory;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.policy.ConfigurationController;
 
@@ -52,14 +51,13 @@
 
     @Mock private WindowManager mWindowManager;
     @Mock private DozeParameters mDozeParameters;
-    @Mock private NotificationShadeWindowView mStatusBarView;
+    @Mock private NotificationShadeWindowView mNotificationShadeWindowView;
     @Mock private IActivityManager mActivityManager;
     @Mock private SysuiStatusBarStateController mStatusBarStateController;
     @Mock private ConfigurationController mConfigurationController;
     @Mock private KeyguardBypassController mKeyguardBypassController;
     @Mock private SysuiColorExtractor mColorExtractor;
     @Mock ColorExtractor.GradientColors mGradientColors;
-    @Mock private SuperStatusBarViewFactory mSuperStatusBarViewFactory;
 
     private NotificationShadeWindowController mNotificationShadeWindowController;
 
@@ -68,13 +66,11 @@
         MockitoAnnotations.initMocks(this);
         when(mDozeParameters.getAlwaysOn()).thenReturn(true);
         when(mColorExtractor.getNeutralColors()).thenReturn(mGradientColors);
-        when(mSuperStatusBarViewFactory.getNotificationShadeWindowView())
-                .thenReturn(mStatusBarView);
 
         mNotificationShadeWindowController = new NotificationShadeWindowController(mContext,
                 mWindowManager, mActivityManager, mDozeParameters, mStatusBarStateController,
-                mConfigurationController, mKeyguardBypassController, mColorExtractor,
-                mSuperStatusBarViewFactory);
+                mConfigurationController, mKeyguardBypassController, mColorExtractor);
+        mNotificationShadeWindowController.setNotificationShadeView(mNotificationShadeWindowView);
 
         mNotificationShadeWindowController.attach();
     }
@@ -104,7 +100,7 @@
 
     @Test
     public void testAdd_updatesVisibilityFlags() {
-        verify(mStatusBarView).setSystemUiVisibility(anyInt());
+        verify(mNotificationShadeWindowView).setSystemUiVisibility(anyInt());
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
index 8936a2d..e917c93 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/NotificationShadeWindowViewTest.java
@@ -38,7 +38,7 @@
 import com.android.systemui.statusbar.DragDownHelper;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.PulseExpansionHandler;
-import com.android.systemui.statusbar.StatusBarWindowBlurController;
+import com.android.systemui.statusbar.NotificationShadeWindowBlurController;
 import com.android.systemui.statusbar.SysuiStatusBarStateController;
 import com.android.systemui.statusbar.notification.DynamicPrivacyController;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
@@ -80,7 +80,7 @@
     @Mock private DockManager mDockManager;
     @Mock private NotificationPanelViewController mNotificationPanelViewController;
     @Mock private NotificationStackScrollLayout mNotificationStackScrollLayout;
-    @Mock private StatusBarWindowBlurController mStatusBarWindowBlurController;
+    @Mock private NotificationShadeWindowBlurController mNotificationShadeWindowBlurController;
 
     @Before
     public void setUp() {
@@ -114,7 +114,7 @@
                 new CommandQueue(mContext),
                 mShadeController,
                 mDockManager,
-                mStatusBarWindowBlurController,
+                mNotificationShadeWindowBlurController,
                 mView,
                 mNotificationPanelViewController);
         mController.setupExpandedStatusBar();
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
index 008a349..2e6fbe7 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/ScrimControllerTest.java
@@ -521,10 +521,10 @@
         Assert.assertEquals(ScrimController.TRANSPARENT,
                 mScrimInFront.getViewAlpha(), 0.0f);
         // Back scrim should be visible
-        Assert.assertEquals(ScrimController.GRADIENT_SCRIM_ALPHA_BUSY,
+        Assert.assertEquals(ScrimController.BUSY_SCRIM_ALPHA,
                 mScrimBehind.getViewAlpha(), 0.0f);
         // Bubble scrim should be visible
-        Assert.assertEquals(ScrimController.GRADIENT_SCRIM_ALPHA_BUSY,
+        Assert.assertEquals(ScrimController.BUSY_SCRIM_ALPHA,
                 mScrimBehind.getViewAlpha(), 0.0f);
     }
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
index fea4b8b..1e4df27 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationActivityStarterTest.java
@@ -58,18 +58,21 @@
 import com.android.systemui.plugins.ActivityStarter;
 import com.android.systemui.plugins.statusbar.StatusBarStateController;
 import com.android.systemui.statusbar.CommandQueue;
+import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.NotificationLockscreenUserManager;
 import com.android.systemui.statusbar.NotificationPresenter;
 import com.android.systemui.statusbar.NotificationRemoteInputManager;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.StatusBarState;
 import com.android.systemui.statusbar.notification.ActivityLaunchAnimator;
 import com.android.systemui.statusbar.notification.NotificationActivityStarter;
 import com.android.systemui.statusbar.notification.NotificationEntryManager;
 import com.android.systemui.statusbar.notification.NotificationInterruptionStateProvider;
+import com.android.systemui.statusbar.notification.collection.NotifCollection;
+import com.android.systemui.statusbar.notification.collection.NotifPipeline;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.time.FakeSystemClock;
@@ -114,6 +117,12 @@
     private BubbleController mBubbleController;
     @Mock
     private ShadeControllerImpl mShadeController;
+    @Mock
+    private FeatureFlags mFeatureFlags;
+    @Mock
+    private NotifPipeline mNotifPipeline;
+    @Mock
+    private NotifCollection mNotifCollection;
 
     @Mock
     private ActivityIntentHelper mActivityIntentHelper;
@@ -162,6 +171,7 @@
         mActiveNotifications.add(mBubbleNotificationRow.getEntry());
         when(mEntryManager.getVisibleNotifications()).thenReturn(mActiveNotifications);
         when(mStatusBarStateController.getState()).thenReturn(StatusBarState.SHADE);
+        when(mFeatureFlags.isNewNotifPipelineRenderingEnabled()).thenReturn(false);
 
         mNotificationActivityStarter = (new StatusBarNotificationActivityStarter.Builder(
                 getContext(), mock(CommandQueue.class), () -> mAssistManager,
@@ -175,11 +185,12 @@
                 mKeyguardStateController,
                 mock(NotificationInterruptionStateProvider.class), mock(MetricsLogger.class),
                 mock(LockPatternUtils.class), mHandler, mHandler, mUiBgExecutor,
-                mActivityIntentHelper, mBubbleController, mShadeController))
+                mActivityIntentHelper, mBubbleController, mShadeController, mFeatureFlags,
+                mNotifPipeline, mNotifCollection)
                 .setStatusBar(mStatusBar)
                 .setNotificationPanelViewController(mock(NotificationPanelViewController.class))
                 .setNotificationPresenter(mock(NotificationPresenter.class))
-                .setActivityLaunchAnimator(mock(ActivityLaunchAnimator.class))
+                .setActivityLaunchAnimator(mock(ActivityLaunchAnimator.class)))
         .build();
 
         // set up dismissKeyguardThenExecute to synchronously invoke the OnDismissAction arg
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java
index dd896be..b9d2d22 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarNotificationPresenterTest.java
@@ -54,7 +54,6 @@
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
 import com.android.systemui.statusbar.notification.row.ActivatableNotificationView;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.notification.stack.NotificationListContainer;
@@ -113,10 +112,9 @@
                 notificationShadeWindowView, mock(NotificationListContainerViewGroup.class),
                 mock(DozeScrimController.class), mock(ScrimController.class),
                 mock(ActivityLaunchAnimator.class), mock(DynamicPrivacyController.class),
-                mock(NotificationAlertingManager.class),
-                mock(NotificationRowBinderImpl.class), mock(KeyguardStateController.class),
-                mock(KeyguardIndicationController.class),
-                mStatusBar, mock(ShadeControllerImpl.class), mCommandQueue, mInitController);
+                mock(NotificationAlertingManager.class), mock(KeyguardStateController.class),
+                mock(KeyguardIndicationController.class), mStatusBar,
+                mock(ShadeControllerImpl.class), mCommandQueue, mInitController);
     }
 
     @Test
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
index e90e398..db17a6e 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/phone/StatusBarTest.java
@@ -95,7 +95,6 @@
 import com.android.systemui.shared.plugins.PluginManager;
 import com.android.systemui.stackdivider.Divider;
 import com.android.systemui.statusbar.CommandQueue;
-import com.android.systemui.statusbar.FeatureFlags;
 import com.android.systemui.statusbar.KeyguardIndicationController;
 import com.android.systemui.statusbar.NavigationBarController;
 import com.android.systemui.statusbar.NotificationListener;
@@ -120,8 +119,7 @@
 import com.android.systemui.statusbar.notification.VisualStabilityManager;
 import com.android.systemui.statusbar.notification.collection.NotificationEntry;
 import com.android.systemui.statusbar.notification.collection.NotificationEntryBuilder;
-import com.android.systemui.statusbar.notification.collection.inflation.NotificationRowBinderImpl;
-import com.android.systemui.statusbar.notification.collection.init.NotifPipelineInitializer;
+import com.android.systemui.statusbar.notification.init.NotificationsController;
 import com.android.systemui.statusbar.notification.logging.NotificationLogger;
 import com.android.systemui.statusbar.notification.row.NotificationGutsManager;
 import com.android.systemui.statusbar.notification.stack.NotificationStackScrollLayout;
@@ -133,10 +131,8 @@
 import com.android.systemui.statusbar.policy.KeyguardStateController;
 import com.android.systemui.statusbar.policy.NetworkController;
 import com.android.systemui.statusbar.policy.RemoteInputQuickSettingsDisabler;
-import com.android.systemui.statusbar.policy.RemoteInputUriController;
 import com.android.systemui.statusbar.policy.UserInfoControllerImpl;
 import com.android.systemui.statusbar.policy.UserSwitcherController;
-import com.android.systemui.statusbar.policy.ZenModeController;
 import com.android.systemui.util.concurrency.FakeExecutor;
 import com.android.systemui.util.time.FakeSystemClock;
 import com.android.systemui.volume.VolumeComponent;
@@ -149,7 +145,6 @@
 
 import java.io.ByteArrayOutputStream;
 import java.io.PrintWriter;
-import java.util.ArrayList;
 import java.util.Optional;
 
 import javax.inject.Provider;
@@ -166,7 +161,7 @@
     private PowerManager mPowerManager;
     private TestableNotificationInterruptionStateProvider mNotificationInterruptionStateProvider;
 
-    @Mock private FeatureFlags mFeatureFlags;
+    @Mock private NotificationsController mNotificationsController;
     @Mock private LightBarController mLightBarController;
     @Mock private StatusBarIconController mStatusBarIconController;
     @Mock private StatusBarKeyguardViewManager mStatusBarKeyguardViewManager;
@@ -180,7 +175,6 @@
     @Mock private IDreamManager mDreamManager;
     @Mock private ScrimController mScrimController;
     @Mock private DozeScrimController mDozeScrimController;
-    @Mock private ArrayList<NotificationEntry> mNotificationList;
     @Mock private Lazy<BiometricUnlockController> mBiometricUnlockControllerLazy;
     @Mock private BiometricUnlockController mBiometricUnlockController;
     @Mock private NotificationInterruptionStateProvider.HeadsUpSuppressor mHeadsUpSuppressor;
@@ -190,7 +184,6 @@
     @Mock private NotificationLockscreenUserManager mLockscreenUserManager;
     @Mock private NotificationRemoteInputManager mRemoteInputManager;
     @Mock private RemoteInputController mRemoteInputController;
-    @Mock private RemoteInputUriController mRemoteInputUriController;
     @Mock private StatusBarStateControllerImpl mStatusBarStateController;
     @Mock private BatteryController mBatteryController;
     @Mock private DeviceProvisionedController mDeviceProvisionedController;
@@ -214,8 +207,6 @@
     @Mock private NotificationWakeUpCoordinator mNotificationWakeUpCoordinator;
     @Mock private KeyguardBypassController mKeyguardBypassController;
     @Mock private DynamicPrivacyController mDynamicPrivacyController;
-    @Mock private NotifPipelineInitializer mNewNotifPipeline;
-    @Mock private ZenModeController mZenModeController;
     @Mock private AutoHideController mAutoHideController;
     @Mock private NotificationViewHierarchyManager mNotificationViewHierarchyManager;
     @Mock private UserSwitcherController mUserSwitcherController;
@@ -223,7 +214,6 @@
     @Mock private VibratorHelper mVibratorHelper;
     @Mock private BubbleController mBubbleController;
     @Mock private NotificationGroupManager mGroupManager;
-    @Mock private NotificationGroupAlertTransferHelper mGroupAlertTransferHelper;
     @Mock private NotificationShadeWindowController mNotificationShadeWindowController;
     @Mock private NotificationIconAreaController mNotificationIconAreaController;
     @Mock private NotificationShadeWindowViewController mNotificationShadeWindowViewController;
@@ -247,7 +237,6 @@
     @Mock private ViewMediatorCallback mViewMediatorCallback;
     @Mock private DismissCallbackRegistry mDismissCallbackRegistry;
     @Mock private ScreenPinningRequest mScreenPinningRequest;
-    @Mock private NotificationEntryManager mEntryManager;
     @Mock private LockscreenLockIconController mLockscreenLockIconController;
     @Mock private StatusBarNotificationActivityStarter.Builder
             mStatusBarNotificationActivityStarterBuilder;
@@ -256,7 +245,6 @@
     @Mock private KeyguardDismissUtil mKeyguardDismissUtil;
     @Mock private ExtensionController mExtensionController;
     @Mock private UserInfoControllerImpl mUserInfoControllerImpl;
-    @Mock private NotificationRowBinderImpl mNotificationRowBinder;
     private ShadeController mShadeController;
     private FakeExecutor mUiBgExecutor = new FakeExecutor(new FakeSystemClock());
     private InitController mInitController = new InitController();
@@ -280,7 +268,7 @@
 
         mMetricsLogger = new FakeMetricsLogger();
         NotificationLogger notificationLogger = new NotificationLogger(mNotificationListener,
-                mUiBgExecutor, mEntryManager, mStatusBarStateController,
+                mUiBgExecutor, mock(NotificationEntryManager.class), mStatusBarStateController,
                 mExpansionStateLogger);
         notificationLogger.setVisibilityReporter(mock(Runnable.class));
 
@@ -334,7 +322,7 @@
 
         mStatusBar = new StatusBar(
                 mContext,
-                mFeatureFlags,
+                mNotificationsController,
                 mLightBarController,
                 mAutoHideController,
                 mKeyguardUpdateMonitor,
@@ -346,7 +334,6 @@
                 mHeadsUpManager,
                 mDynamicPrivacyController,
                 mBypassHeadsUpNotifier,
-                () -> mNewNotifPipeline,
                 new FalsingManagerFake(),
                 mBroadcastDispatcher,
                 new RemoteInputQuickSettingsDisabler(
@@ -356,7 +343,6 @@
                 ),
                 mNotificationGutsManager,
                 notificationLogger,
-                mEntryManager,
                 mNotificationInterruptionStateProvider,
                 mNotificationViewHierarchyManager,
                 mKeyguardViewMediator,
@@ -377,12 +363,10 @@
                 mVibratorHelper,
                 mBubbleController,
                 mGroupManager,
-                mGroupAlertTransferHelper,
                 mVisualStabilityManager,
                 mDeviceProvisionedController,
                 mNavigationBarController,
                 () -> mAssistManager,
-                mNotificationListener,
                 configurationController,
                 mNotificationShadeWindowController,
                 mLockscreenLockIconController,
@@ -399,7 +383,6 @@
                 Optional.of(mRecents),
                 mStatusBarComponentBuilderProvider,
                 mPluginManager,
-                mRemoteInputUriController,
                 Optional.of(mDivider),
                 mLightsOutNotifController,
                 mStatusBarNotificationActivityStarterBuilder,
@@ -414,7 +397,6 @@
                 mKeyguardDismissUtil,
                 mExtensionController,
                 mUserInfoControllerImpl,
-                mNotificationRowBinder,
                 mDismissCallbackRegistry);
 
         when(mNotificationShadeWindowView.findViewById(R.id.lock_icon_container)).thenReturn(
@@ -675,7 +657,7 @@
     public void testPanelOpenForHeadsUp() {
         when(mDeviceProvisionedController.isDeviceProvisioned()).thenReturn(true);
         when(mHeadsUpManager.hasPinnedHeadsUp()).thenReturn(true);
-        when(mEntryManager.getActiveNotificationsCount()).thenReturn(5);
+        when(mNotificationsController.getActiveNotificationsCount()).thenReturn(5);
         when(mNotificationPresenter.isPresenterFullyCollapsed()).thenReturn(true);
         mStatusBar.setBarStateForTest(StatusBarState.SHADE);
 
@@ -693,7 +675,7 @@
     @Test
     public void testPanelOpenAndClear() {
         when(mHeadsUpManager.hasPinnedHeadsUp()).thenReturn(false);
-        when(mEntryManager.getActiveNotificationsCount()).thenReturn(5);
+        when(mNotificationsController.getActiveNotificationsCount()).thenReturn(5);
 
         when(mNotificationPresenter.isPresenterFullyCollapsed()).thenReturn(false);
         mStatusBar.setBarStateForTest(StatusBarState.SHADE);
@@ -712,7 +694,7 @@
     @Test
     public void testPanelOpenAndNoClear() {
         when(mHeadsUpManager.hasPinnedHeadsUp()).thenReturn(false);
-        when(mEntryManager.getActiveNotificationsCount()).thenReturn(5);
+        when(mNotificationsController.getActiveNotificationsCount()).thenReturn(5);
         when(mNotificationPresenter.isPresenterFullyCollapsed()).thenReturn(false);
         mStatusBar.setBarStateForTest(StatusBarState.KEYGUARD);
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
index 85f6033..18e7840 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/CallbackHandlerTest.java
@@ -115,15 +115,16 @@
         IconState qs = new IconState(true, 1, "");
         boolean in = true;
         boolean out = true;
-        String typeDescription = "Test 1";
-        String description = "Test 2";
+        CharSequence typeDescription = "Test 1";
+        CharSequence typeDescriptionHtml = "<b>Test 1</b>";
+        CharSequence description = "Test 2";
         int type = TelephonyIcons.ICON_1X;
         int qsType = TelephonyIcons.ICON_1X;
         boolean wide = true;
         int subId = 5;
         boolean roaming = true;
         mHandler.setMobileDataIndicators(status, qs, type, qsType, in, out, typeDescription,
-                description, wide, subId, roaming);
+                typeDescriptionHtml, description, wide, subId, roaming);
         waitForCallbacks();
 
         ArgumentCaptor<IconState> statusArg = ArgumentCaptor.forClass(IconState.class);
@@ -132,14 +133,16 @@
         ArgumentCaptor<Integer> qsTypeIconArg = ArgumentCaptor.forClass(Integer.class);
         ArgumentCaptor<Boolean> inArg = ArgumentCaptor.forClass(Boolean.class);
         ArgumentCaptor<Boolean> outArg = ArgumentCaptor.forClass(Boolean.class);
-        ArgumentCaptor<String> typeContentArg = ArgumentCaptor.forClass(String.class);
-        ArgumentCaptor<String> descArg = ArgumentCaptor.forClass(String.class);
+        ArgumentCaptor<CharSequence> typeContentArg = ArgumentCaptor.forClass(CharSequence.class);
+        ArgumentCaptor<CharSequence> typeContentHtmlArg =
+                ArgumentCaptor.forClass(CharSequence.class);
+        ArgumentCaptor<CharSequence> descArg = ArgumentCaptor.forClass(CharSequence.class);
         ArgumentCaptor<Boolean> wideArg = ArgumentCaptor.forClass(Boolean.class);
         ArgumentCaptor<Integer> subIdArg = ArgumentCaptor.forClass(Integer.class);
         Mockito.verify(mSignalCallback).setMobileDataIndicators(statusArg.capture(),
                 qsArg.capture(), typeIconArg.capture(), qsTypeIconArg.capture(), inArg.capture(),
-                outArg.capture(), typeContentArg.capture(), descArg.capture(), wideArg.capture(),
-                subIdArg.capture(), eq(roaming));
+                outArg.capture(), typeContentArg.capture(), typeContentHtmlArg.capture(),
+                descArg.capture(), wideArg.capture(), subIdArg.capture(), eq(roaming));
         assertEquals(status, statusArg.getValue());
         assertEquals(qs, qsArg.getValue());
         assertEquals(type, (int) typeIconArg.getValue());
@@ -147,6 +150,7 @@
         assertEquals(in, (boolean) inArg.getValue());
         assertEquals(out, (boolean) outArg.getValue());
         assertEquals(typeDescription, typeContentArg.getValue());
+        assertEquals(typeDescriptionHtml, typeContentHtmlArg.getValue());
         assertEquals(description, descArg.getValue());
         assertEquals(wide, (boolean) wideArg.getValue());
         assertEquals(subId, (int) subIdArg.getValue());
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
index 631c580..cd91f22 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/HotspotControllerImplTest.java
@@ -16,6 +16,8 @@
 
 package com.android.systemui.statusbar.policy;
 
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.eq;
@@ -24,10 +26,12 @@
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
-import android.net.ConnectivityManager;
+import android.net.TetheringManager;
 import android.net.wifi.WifiManager;
 import android.os.Handler;
+import android.os.UserManager;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
 
@@ -38,11 +42,14 @@
 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.MockitoAnnotations;
 import org.mockito.invocation.InvocationOnMock;
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.concurrent.Executor;
 
 @SmallTest
@@ -51,13 +58,19 @@
 public class HotspotControllerImplTest extends SysuiTestCase {
 
     @Mock
-    private ConnectivityManager mConnectivityManager;
+    private TetheringManager mTetheringManager;
     @Mock
     private WifiManager mWifiManager;
     @Mock
+    private UserManager mUserManager;
+    @Mock
     private HotspotController.Callback mCallback1;
     @Mock
     private HotspotController.Callback mCallback2;
+    @Mock
+    private TetheringManager.TetheringInterfaceRegexps mTetheringInterfaceRegexps;
+    @Captor
+    private ArgumentCaptor<TetheringManager.TetheringEventCallback> mTetheringCallbackCaptor;
     private HotspotControllerImpl mController;
     private TestableLooper mLooper;
 
@@ -66,8 +79,13 @@
         MockitoAnnotations.initMocks(this);
         mLooper = TestableLooper.get(this);
 
-        mContext.addMockSystemService(ConnectivityManager.class, mConnectivityManager);
         mContext.addMockSystemService(WifiManager.class, mWifiManager);
+        mContext.addMockSystemService(TetheringManager.class, mTetheringManager);
+        mContext.addMockSystemService(UserManager.class, mUserManager);
+
+        when(mUserManager.isUserAdmin(anyInt())).thenReturn(true);
+        when(mTetheringInterfaceRegexps.getTetherableWifiRegexs()).thenReturn(
+                Collections.singletonList("test"));
 
         doAnswer((InvocationOnMock invocation) -> {
             ((WifiManager.SoftApCallback) invocation.getArgument(1))
@@ -76,7 +94,11 @@
         }).when(mWifiManager).registerSoftApCallback(any(Executor.class),
                 any(WifiManager.SoftApCallback.class));
 
-        mController = new HotspotControllerImpl(mContext, new Handler(mLooper.getLooper()));
+        Handler handler = new Handler(mLooper.getLooper());
+
+        mController = new HotspotControllerImpl(mContext, handler, handler);
+        verify(mTetheringManager)
+                .registerTetheringEventCallback(any(), mTetheringCallbackCaptor.capture());
     }
 
     @Test
@@ -117,4 +139,28 @@
         verify(mWifiManager, never()).unregisterSoftApCallback(any());
     }
 
+    @Test
+    public void testDefault_hotspotNotSupported() {
+        assertFalse(mController.isHotspotSupported());
+    }
+
+    @Test
+    public void testHotspotSupported_rightConditions() {
+        mTetheringCallbackCaptor.getValue().onTetheringSupported(true);
+        mTetheringCallbackCaptor.getValue()
+                .onTetherableInterfaceRegexpsChanged(mTetheringInterfaceRegexps);
+
+        assertTrue(mController.isHotspotSupported());
+    }
+
+    @Test
+    public void testHotspotSupported_callbackCalledOnChange() {
+        mController.addCallback(mCallback1);
+        mTetheringCallbackCaptor.getValue().onTetheringSupported(true);
+        mTetheringCallbackCaptor.getValue()
+                .onTetherableInterfaceRegexpsChanged(mTetheringInterfaceRegexps);
+
+        verify(mCallback1).onHotspotAvailabilityChanged(true);
+    }
+
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
index cc3c3cc..9a0e97a 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerBaseTest.java
@@ -30,6 +30,7 @@
 import static org.mockito.Matchers.isA;
 import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
@@ -43,6 +44,7 @@
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.telephony.CdmaEriInformation;
+import android.telephony.CellSignalStrength;
 import android.telephony.NetworkRegistrationInfo;
 import android.telephony.PhoneStateListener;
 import android.telephony.ServiceState;
@@ -56,7 +58,6 @@
 
 import androidx.test.InstrumentationRegistry;
 
-import com.android.internal.telephony.cdma.EriInfo;
 import com.android.settingslib.graph.SignalDrawable;
 import com.android.settingslib.net.DataUsageController;
 import com.android.systemui.R;
@@ -95,6 +96,7 @@
     protected PhoneStateListener mPhoneStateListener;
     protected SignalStrength mSignalStrength;
     protected ServiceState mServiceState;
+    protected NetworkRegistrationInfo mFakeRegInfo;
     protected ConnectivityManager mMockCm;
     protected WifiManager mMockWm;
     protected SubscriptionManager mMockSm;
@@ -158,6 +160,14 @@
         mSignalStrength = mock(SignalStrength.class);
         mServiceState = mock(ServiceState.class);
 
+        mFakeRegInfo = new NetworkRegistrationInfo.Builder()
+                .setTransportType(TRANSPORT_TYPE_WWAN)
+                .setDomain(DOMAIN_PS)
+                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
+                .build();
+        doReturn(mFakeRegInfo).when(mServiceState)
+                .getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);
+
         mEriInformation = new CdmaEriInformation(CdmaEriInformation.ERI_OFF,
                 CdmaEriInformation.ERI_ICON_MODE_NORMAL);
         when(mMockTm.getCdmaEriInformation()).thenReturn(mEriInformation);
@@ -219,7 +229,7 @@
             subs.add(subscription);
         }
         when(mMockSm.getActiveSubscriptionInfoList()).thenReturn(subs);
-        when(mMockSm.getActiveSubscriptionInfoList(anyBoolean())).thenReturn(subs);
+        when(mMockSm.getActiveAndHiddenSubscriptionInfoList()).thenReturn(subs);
         mNetworkController.doUpdateMobileControllers();
     }
 
@@ -403,9 +413,10 @@
                     iconArg.capture(),
                     anyInt(),
                     typeIconArg.capture(), dataInArg.capture(), dataOutArg.capture(),
-                    anyString(), anyString(), anyBoolean(), anyInt(), anyBoolean());
+                    any(CharSequence.class), any(CharSequence.class), any(CharSequence.class),
+                    anyBoolean(), anyInt(), anyBoolean());
         IconState iconState = iconArg.getValue();
-        int state = SignalDrawable.getState(icon, SignalStrength.NUM_SIGNAL_STRENGTH_BINS,
+        int state = SignalDrawable.getState(icon, CellSignalStrength.getNumSignalStrengthLevels(),
                 false);
         assertEquals("Visibility in, quick settings", visible, iconState.visible);
         assertEquals("Signal icon in, quick settings", state, iconState.icon);
@@ -435,12 +446,14 @@
                 iconArg.capture(),
                 any(),
                 typeIconArg.capture(),
-                anyInt(), anyBoolean(), anyBoolean(), anyString(), anyString(), anyBoolean(),
-                anyInt(), eq(roaming));
+                anyInt(), anyBoolean(), anyBoolean(),
+                any(CharSequence.class), any(CharSequence.class), any(CharSequence.class),
+                anyBoolean(), anyInt(), eq(roaming));
         IconState iconState = iconArg.getValue();
 
         int state = icon == -1 ? 0
-                : SignalDrawable.getState(icon, SignalStrength.NUM_SIGNAL_STRENGTH_BINS, !inet);
+                : SignalDrawable.getState(icon, CellSignalStrength.getNumSignalStrengthLevels(),
+                        !inet);
         assertEquals("Signal icon in status bar", state, iconState.icon);
         assertEquals("Data icon in status bar", typeIcon, (int) typeIconArg.getValue());
         assertEquals("Visibility in status bar", visible, iconState.visible);
@@ -457,19 +470,23 @@
             boolean cutOut) {
         verifyLastMobileDataIndicators(
                 visible, icon, typeIcon, qsVisible, qsIcon, qsTypeIcon, dataIn, dataOut, cutOut,
-                null);
+                null, null);
     }
 
     protected void verifyLastMobileDataIndicators(boolean visible, int icon, int typeIcon,
             boolean qsVisible, int qsIcon, int qsTypeIcon, boolean dataIn, boolean dataOut,
-            boolean cutOut, String typeContentDescription) {
+            boolean cutOut, CharSequence typeContentDescription,
+            CharSequence typeContentDescriptionHtml) {
         ArgumentCaptor<IconState> iconArg = ArgumentCaptor.forClass(IconState.class);
         ArgumentCaptor<Integer> typeIconArg = ArgumentCaptor.forClass(Integer.class);
         ArgumentCaptor<IconState> qsIconArg = ArgumentCaptor.forClass(IconState.class);
         ArgumentCaptor<Integer> qsTypeIconArg = ArgumentCaptor.forClass(Integer.class);
         ArgumentCaptor<Boolean> dataInArg = ArgumentCaptor.forClass(Boolean.class);
         ArgumentCaptor<Boolean> dataOutArg = ArgumentCaptor.forClass(Boolean.class);
-        ArgumentCaptor<String> typeContentDescriptionArg = ArgumentCaptor.forClass(String.class);
+        ArgumentCaptor<CharSequence> typeContentDescriptionArg =
+                ArgumentCaptor.forClass(CharSequence.class);
+        ArgumentCaptor<CharSequence> typeContentDescriptionHtmlArg =
+                ArgumentCaptor.forClass(CharSequence.class);
 
         Mockito.verify(mCallbackHandler, Mockito.atLeastOnce()).setMobileDataIndicators(
                 iconArg.capture(),
@@ -479,11 +496,12 @@
                 dataInArg.capture(),
                 dataOutArg.capture(),
                 typeContentDescriptionArg.capture(),
+                typeContentDescriptionHtmlArg.capture(),
                 anyString(), anyBoolean(), anyInt(), anyBoolean());
 
         IconState iconState = iconArg.getValue();
 
-        int numSignalStrengthBins = SignalStrength.NUM_SIGNAL_STRENGTH_BINS;
+        int numSignalStrengthBins = CellSignalStrength.getNumSignalStrengthLevels();
         if (mMobileSignalController.mInflateSignalStrengths) {
             numSignalStrengthBins++;
             icon++;
@@ -505,6 +523,10 @@
             assertEquals("Type content description", typeContentDescription,
                     typeContentDescriptionArg.getValue());
         }
+        if (typeContentDescriptionHtml != null) { // Only check if it was provided
+            assertEquals("Type content description (html)", typeContentDescriptionHtml,
+                    typeContentDescriptionHtmlArg.getValue());
+        }
     }
 
     protected void assertNetworkNameEquals(String expected) {
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
index f6c750d..a906d9f 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerDataTest.java
@@ -132,7 +132,7 @@
         // Verify that a SignalDrawable with a cut out is used to display data disabled.
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
                 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
-                false, true, NO_DATA_STRING);
+                false, true, NO_DATA_STRING, NO_DATA_STRING);
     }
 
     @Test
@@ -146,7 +146,7 @@
         // Verify that a SignalDrawable with a cut out is used to display data disabled.
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
                 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
-                false, true, NO_DATA_STRING);
+                false, true, NO_DATA_STRING, NO_DATA_STRING);
     }
 
     @Test
@@ -161,7 +161,7 @@
         // Verify that a SignalDrawable with a cut out is used to display data disabled.
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
                 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
-                false, false, NOT_DEFAULT_DATA_STRING);
+                false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING);
     }
 
     @Test
@@ -176,7 +176,7 @@
         // Verify that a SignalDrawable with a cut out is used to display data disabled.
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, 0,
                 true, DEFAULT_QS_SIGNAL_STRENGTH, 0, false,
-                false, false, NOT_DEFAULT_DATA_STRING);
+                false, false, NOT_DEFAULT_DATA_STRING, NOT_DEFAULT_DATA_STRING);
     }
 
     @Test
@@ -187,7 +187,7 @@
                 TelephonyManager.NETWORK_TYPE_LTE);
         updateDataActivity(TelephonyManager.DATA_ACTIVITY_INOUT);
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED);
         mPhoneStateListener.onServiceStateChanged(ss);
 
         verifyLastMobileDataIndicators(true, DEFAULT_SIGNAL_STRENGTH, TelephonyIcons.ICON_5G,
@@ -202,7 +202,7 @@
                 TelephonyManager.NETWORK_TYPE_LTE);
         updateDataActivity(TelephonyManager.DATA_ACTIVITY_DORMANT);
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_NOT_RESTRICTED);
         mPhoneStateListener.onServiceStateChanged(ss);
 
         verifyDataIndicators(TelephonyIcons.ICON_5G);
@@ -215,7 +215,7 @@
         updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onServiceStateChanged(ss);
 
@@ -229,7 +229,7 @@
         updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_MMWAVE).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onServiceStateChanged(ss);
 
@@ -243,7 +243,7 @@
         updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_RESTRICTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_RESTRICTED);
         mPhoneStateListener.onServiceStateChanged(mServiceState);
 
         verifyDataIndicators(TelephonyIcons.ICON_LTE);
@@ -259,7 +259,7 @@
 
         ServiceState ss = Mockito.mock(ServiceState.class);
         // While nrIconDisplayGracePeriodMs > 0 & is Nr5G, mIsShowingIconGracefully should be true
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -278,7 +278,7 @@
         assertTrue(mConfig.nrIconDisplayGracePeriodMs == 0);
 
         // While nrIconDisplayGracePeriodMs <= 0, mIsShowingIconGracefully should be false
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(mServiceState).getNrState();
+        setNrState(mServiceState, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(mServiceState).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -295,7 +295,7 @@
         mPhoneStateListener.onServiceStateChanged(mServiceState);
 
         ServiceState ss = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss).getNrState();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -305,7 +305,7 @@
 
         // Enabled timer Nr5G switch to None Nr5G, showing 5G icon gracefully
         ServiceState ssLte = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(ssLte).getNrState();
+        setNrState(ssLte, NetworkRegistrationInfo.NR_STATE_NONE);
         doReturn(ServiceState.FREQUENCY_RANGE_UNKNOWN).when(ssLte).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -321,14 +321,14 @@
         setupDefaultSignal();
         mNetworkController.handleConfigurationChanged();
 
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(mServiceState).getNrState();
+        setNrState(mServiceState, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(mServiceState).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
 
         verifyDataIndicators(TelephonyIcons.ICON_5G);
 
-        doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(mServiceState).getNrState();
+        setNrState(mServiceState, NetworkRegistrationInfo.NR_STATE_NONE);
         doReturn(ServiceState.FREQUENCY_RANGE_UNKNOWN).when(mServiceState).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -342,7 +342,7 @@
         setupDefaultNr5GIconDisplayGracePeriodTime_enableThirtySeconds();
         setupDefaultSignal();
         mNetworkController.handleConfigurationChanged();
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(mServiceState).getNrState();
+        setNrState(mServiceState, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(mServiceState).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -352,7 +352,7 @@
         // Disabled timer, when out of service, reset timer to display latest state
         updateDataConnectionState(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
-        doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(mServiceState).getNrState();
+        setNrState(mServiceState, NetworkRegistrationInfo.NR_STATE_NONE);
         doReturn(ServiceState.FREQUENCY_RANGE_UNKNOWN).when(mServiceState).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_DISCONNECTED,
                 TelephonyManager.NETWORK_TYPE_UMTS);
@@ -369,7 +369,7 @@
         mPhoneStateListener.onServiceStateChanged(mServiceState);
 
         ServiceState ss5G = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss5G).getNrState();
+        setNrState(ss5G, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss5G).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -379,7 +379,7 @@
 
         // When timeout enabled, 5G/5G+ switching should be updated immediately
         ServiceState ss5GPlus = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss5GPlus).getNrState();
+        setNrState(ss5GPlus, NetworkRegistrationInfo.NR_STATE_CONNECTED);
         doReturn(ServiceState.FREQUENCY_RANGE_MMWAVE).when(ss5GPlus).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
@@ -396,22 +396,21 @@
         mNetworkController.handleConfigurationChanged();
         mPhoneStateListener.onServiceStateChanged(mServiceState);
 
-        ServiceState ss5G = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_CONNECTED).when(ss5G).getNrState();
-        doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss5G).getNrFrequencyRange();
+        ServiceState ss = Mockito.mock(ServiceState.class);
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_CONNECTED);
+        doReturn(ServiceState.FREQUENCY_RANGE_HIGH).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
-        mPhoneStateListener.onServiceStateChanged(ss5G);
+        mPhoneStateListener.onServiceStateChanged(ss);
 
         verifyDataIndicators(TelephonyIcons.ICON_5G);
 
         // State from NR_5G to NONE NR_5G with timeout, should show previous 5G icon
-        ServiceState ssLte = Mockito.mock(ServiceState.class);
-        doReturn(NetworkRegistrationInfo.NR_STATE_NONE).when(ssLte).getNrState();
-        doReturn(ServiceState.FREQUENCY_RANGE_UNKNOWN).when(ssLte).getNrFrequencyRange();
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_NONE);
+        doReturn(ServiceState.FREQUENCY_RANGE_UNKNOWN).when(ss).getNrFrequencyRange();
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
-        mPhoneStateListener.onServiceStateChanged(ssLte);
+        mPhoneStateListener.onServiceStateChanged(ss);
 
         verifyDataIndicators(TelephonyIcons.ICON_5G);
 
@@ -420,14 +419,7 @@
         mNetworkController.handleConfigurationChanged();
 
         // State from NR_5G to NONE NR_STATE_RESTRICTED, showing corresponding icon
-        doReturn(NetworkRegistrationInfo.NR_STATE_RESTRICTED).when(mServiceState).getNrState();
-        NetworkRegistrationInfo fakeRegInfo = new NetworkRegistrationInfo.Builder()
-                .setTransportType(TRANSPORT_TYPE_WWAN)
-                .setDomain(DOMAIN_PS)
-                .setAccessNetworkTechnology(TelephonyManager.NETWORK_TYPE_LTE)
-                .build();
-        doReturn(fakeRegInfo).when(mServiceState)
-                .getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);
+        setNrState(ss, NetworkRegistrationInfo.NR_STATE_RESTRICTED);
         mPhoneStateListener.onDataConnectionStateChanged(TelephonyManager.DATA_CONNECTED,
                 TelephonyManager.NETWORK_TYPE_LTE);
 
@@ -531,4 +523,10 @@
                 true, DEFAULT_QS_SIGNAL_STRENGTH, dataIcon, false,
                 false);
     }
+
+    private void setNrState(ServiceState ss, int nrState) {
+        mFakeRegInfo.setNrState(nrState);
+        doReturn(mFakeRegInfo).when(ss)
+                .getNetworkRegistrationInfo(DOMAIN_PS, TRANSPORT_TYPE_WWAN);
+    }
 }
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
index 4406248..b922f06 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/NetworkControllerSignalTest.java
@@ -136,7 +136,7 @@
     @Test
     public void testSignalStrength() {
         for (int testStrength = 0;
-                testStrength < SignalStrength.NUM_SIGNAL_STRENGTH_BINS; testStrength++) {
+                testStrength < CellSignalStrength.getNumSignalStrengthLevels(); testStrength++) {
             setupDefaultSignal();
             setLevel(testStrength);
 
@@ -153,7 +153,7 @@
     @Test
     public void testCdmaSignalStrength() {
         for (int testStrength = 0;
-                testStrength < SignalStrength.NUM_SIGNAL_STRENGTH_BINS; testStrength++) {
+                testStrength < CellSignalStrength.getNumSignalStrengthLevels(); testStrength++) {
             setupDefaultSignal();
             setCdma();
             setLevel(testStrength);
@@ -167,7 +167,7 @@
     @Test
     public void testSignalRoaming() {
         for (int testStrength = 0;
-                testStrength < SignalStrength.NUM_SIGNAL_STRENGTH_BINS; testStrength++) {
+                testStrength < CellSignalStrength.getNumSignalStrengthLevels(); testStrength++) {
             setupDefaultSignal();
             setGsmRoaming(true);
             setLevel(testStrength);
@@ -369,8 +369,8 @@
         mNetworkController.onReceive(mContext, intent);
 
         String defaultNetworkName = mMobileSignalController
-            .getStringIfExists(
-                com.android.internal.R.string.lockscreen_carrier_default);
+                .getTextIfExists(
+                com.android.internal.R.string.lockscreen_carrier_default).toString();
         assertNetworkNameEquals(defaultNetworkName);
     }
 
@@ -383,8 +383,8 @@
 
         mNetworkController.onReceive(mContext, intent);
 
-        String defaultNetworkName = mMobileSignalController.getStringIfExists(
-                com.android.internal.R.string.lockscreen_carrier_default);
+        String defaultNetworkName = mMobileSignalController.getTextIfExists(
+                com.android.internal.R.string.lockscreen_carrier_default).toString();
         assertNetworkNameEquals(defaultNetworkName);
     }
 
@@ -401,8 +401,8 @@
         mNetworkController.onReceive(mContext, intent);
 
         assertNetworkNameEquals(plmn
-                + mMobileSignalController.getStringIfExists(
-                        R.string.status_bar_network_name_separator)
+                + mMobileSignalController.getTextIfExists(
+                        R.string.status_bar_network_name_separator).toString()
                 + spn);
     }
 
@@ -494,7 +494,7 @@
 
       // Carrier network change is true, show special indicator
       verifyLastMobileDataIndicators(true /* visible */,
-              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
+              SignalDrawable.getCarrierChangeState(CellSignalStrength.getNumSignalStrengthLevels()),
               0 /* typeIcon */);
 
       // Revert back
@@ -525,7 +525,7 @@
 
       // Carrier network change is true, show special indicator, no roaming.
       verifyLastMobileDataIndicators(true /* visible */,
-              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
+              SignalDrawable.getCarrierChangeState(CellSignalStrength.getNumSignalStrengthLevels()),
               0 /* typeIcon */,
               false /* roaming */);
 
@@ -557,7 +557,7 @@
 
       // Carrier network change is true, show special indicator, no roaming.
       verifyLastMobileDataIndicators(true /* visible */,
-              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
+              SignalDrawable.getCarrierChangeState(CellSignalStrength.getNumSignalStrengthLevels()),
               0 /* typeIcon */,
               false /* roaming */);
 
@@ -565,7 +565,7 @@
 
       // Roaming should not show.
       verifyLastMobileDataIndicators(true /* visible */,
-              SignalDrawable.getCarrierChangeState(SignalStrength.NUM_SIGNAL_STRENGTH_BINS),
+              SignalDrawable.getCarrierChangeState(CellSignalStrength.getNumSignalStrengthLevels()),
               0 /* typeIcon */,
               false /* roaming */);
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
index 390e812..df62254 100644
--- a/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
+++ b/packages/SystemUI/tests/src/com/android/systemui/statusbar/policy/RemoteInputViewTest.java
@@ -39,9 +39,9 @@
 import com.android.systemui.Dependency;
 import com.android.systemui.R;
 import com.android.systemui.SysuiTestCase;
-import com.android.systemui.statusbar.NotificationTestHelper;
 import com.android.systemui.statusbar.RemoteInputController;
 import com.android.systemui.statusbar.notification.row.ExpandableNotificationRow;
+import com.android.systemui.statusbar.notification.row.NotificationTestHelper;
 import com.android.systemui.statusbar.phone.LightBarController;
 import com.android.systemui.util.Assert;
 
diff --git a/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java b/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java
new file mode 100644
index 0000000..d58f2c9
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/toast/ToastUITest.java
@@ -0,0 +1,207 @@
+/*
+ * 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.systemui.toast;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.INotificationManager;
+import android.app.ITransientNotificationCallback;
+import android.os.Binder;
+import android.testing.AndroidTestingRunner;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowManager;
+import android.view.accessibility.AccessibilityEvent;
+import android.view.accessibility.AccessibilityManager;
+import android.widget.FrameLayout;
+import android.widget.TextView;
+import android.widget.Toast;
+
+import androidx.test.filters.SmallTest;
+
+import com.android.internal.R;
+import com.android.systemui.SysuiTestCase;
+import com.android.systemui.statusbar.CommandQueue;
+
+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.MockitoAnnotations;
+
+@SmallTest
+@RunWith(AndroidTestingRunner.class)
+public class ToastUITest extends SysuiTestCase {
+    private static final String PACKAGE_NAME_1 = "com.example1.test";
+    private static final Binder TOKEN_1 = new Binder();
+    private static final Binder WINDOW_TOKEN_1 = new Binder();
+    private static final String PACKAGE_NAME_2 = "com.example2.test";
+    private static final Binder TOKEN_2 = new Binder();
+    private static final Binder WINDOW_TOKEN_2 = new Binder();
+    private static final String TEXT = "Hello World";
+    private static final int MESSAGE_RES_ID = R.id.message;
+
+    @Mock private CommandQueue mCommandQueue;
+    @Mock private WindowManager mWindowManager;
+    @Mock private INotificationManager mNotificationManager;
+    @Mock private AccessibilityManager mAccessibilityManager;
+    @Mock private ITransientNotificationCallback mCallback;
+    @Captor private ArgumentCaptor<View> mViewCaptor;
+    @Captor private ArgumentCaptor<ViewGroup.LayoutParams> mParamsCaptor;
+    private ToastUI mToastUI;
+
+    @Before
+    public void setUp() throws Exception {
+        MockitoAnnotations.initMocks(this);
+        mToastUI = new ToastUI(mContext, mCommandQueue, mWindowManager, mNotificationManager,
+                mAccessibilityManager);
+    }
+
+    @Test
+    public void testStart_addToastUIAsCallbackToCommandQueue() throws Exception {
+        mToastUI.start();
+
+        verify(mCommandQueue).addCallback(mToastUI);
+    }
+
+    @Test
+    public void testShowToast_addsCorrectViewToWindowManager() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG, null);
+
+        verify(mWindowManager).addView(mViewCaptor.capture(), any());
+        View view = mViewCaptor.getValue();
+        assertThat(((TextView) view.findViewById(MESSAGE_RES_ID)).getText()).isEqualTo(TEXT);
+    }
+
+    @Test
+    public void testShowToast_addsViewWithCorrectLayoutParamsToWindowManager() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG, null);
+
+        verify(mWindowManager).addView(any(), mParamsCaptor.capture());
+        ViewGroup.LayoutParams params = mParamsCaptor.getValue();
+        assertThat(params).isInstanceOf(WindowManager.LayoutParams.class);
+        WindowManager.LayoutParams windowParams = (WindowManager.LayoutParams) params;
+        assertThat(windowParams.packageName).isEqualTo(mContext.getPackageName());
+        assertThat(windowParams.getTitle()).isEqualTo("Toast");
+        assertThat(windowParams.token).isEqualTo(WINDOW_TOKEN_1);
+    }
+
+    @Test
+    public void testShowToast_callsCallback() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+
+        verify(mCallback).onToastShown();
+    }
+
+    @Test
+    public void testShowToast_sendsAccessibilityEvent() throws Exception {
+        when(mAccessibilityManager.isEnabled()).thenReturn(true);
+
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG, null);
+
+        ArgumentCaptor<AccessibilityEvent> eventCaptor = ArgumentCaptor.forClass(
+                AccessibilityEvent.class);
+        verify(mAccessibilityManager).sendAccessibilityEvent(eventCaptor.capture());
+        AccessibilityEvent event = eventCaptor.getValue();
+        assertThat(event.getEventType()).isEqualTo(
+                AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED);
+        assertThat(event.getClassName()).isEqualTo(Toast.class.getName());
+        assertThat(event.getPackageName()).isEqualTo(PACKAGE_NAME_1);
+    }
+
+    @Test
+    public void testHideToast_removesView() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+        View view = verifyWmAddViewAndAttachToParent();
+
+        mToastUI.hideToast(PACKAGE_NAME_1, TOKEN_1);
+
+        verify(mWindowManager).removeViewImmediate(view);
+    }
+
+    @Test
+    public void testHideToast_finishesToken() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+
+        mToastUI.hideToast(PACKAGE_NAME_1, TOKEN_1);
+
+        verify(mNotificationManager).finishToken(PACKAGE_NAME_1, WINDOW_TOKEN_1);
+    }
+
+    @Test
+    public void testHideToast_callsCallback() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+
+        mToastUI.hideToast(PACKAGE_NAME_1, TOKEN_1);
+
+        verify(mCallback).onToastHidden();
+    }
+
+    @Test
+    public void testHideToast_whenNotCurrentToastToken_doesNotHideToast() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+
+        mToastUI.hideToast(PACKAGE_NAME_1, TOKEN_2);
+
+        verify(mCallback, never()).onToastHidden();
+    }
+
+    @Test
+    public void testHideToast_whenNotCurrentToastPackage_doesNotHideToast() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+
+        mToastUI.hideToast(PACKAGE_NAME_2, TOKEN_1);
+
+        verify(mCallback, never()).onToastHidden();
+    }
+
+    @Test
+    public void testShowToast_afterShowToast_hidesCurrentToast() throws Exception {
+        mToastUI.showToast(PACKAGE_NAME_1, TOKEN_1, TEXT, WINDOW_TOKEN_1, Toast.LENGTH_LONG,
+                mCallback);
+        View view = verifyWmAddViewAndAttachToParent();
+
+        mToastUI.showToast(PACKAGE_NAME_2, TOKEN_2, TEXT, WINDOW_TOKEN_2, Toast.LENGTH_LONG, null);
+
+        verify(mWindowManager).removeViewImmediate(view);
+        verify(mNotificationManager).finishToken(PACKAGE_NAME_1, WINDOW_TOKEN_1);
+        verify(mCallback).onToastHidden();
+    }
+
+    private View verifyWmAddViewAndAttachToParent() {
+        ArgumentCaptor<View> viewCaptor = ArgumentCaptor.forClass(View.class);
+        verify(mWindowManager).addView(viewCaptor.capture(), any());
+        View view = viewCaptor.getValue();
+        // Simulate attaching to view hierarchy
+        ViewGroup parent = new FrameLayout(mContext);
+        parent.addView(view);
+        return view;
+    }
+}
diff --git a/packages/SystemUI/tests/src/com/android/systemui/util/FloatingContentCoordinatorTest.kt b/packages/SystemUI/tests/src/com/android/systemui/util/FloatingContentCoordinatorTest.kt
new file mode 100644
index 0000000..8eecde1
--- /dev/null
+++ b/packages/SystemUI/tests/src/com/android/systemui/util/FloatingContentCoordinatorTest.kt
@@ -0,0 +1,218 @@
+package com.android.systemui.util
+
+import android.graphics.Rect
+import android.testing.AndroidTestingRunner
+import android.testing.TestableLooper
+import androidx.test.filters.SmallTest
+import com.android.systemui.SysuiTestCase
+import org.junit.After
+import org.junit.Assert.assertEquals
+import org.junit.Assert.assertFalse
+import org.junit.Before
+import org.junit.Test
+import org.junit.runner.RunWith
+
+@TestableLooper.RunWithLooper
+@RunWith(AndroidTestingRunner::class)
+@SmallTest
+class FloatingContentCoordinatorTest : SysuiTestCase() {
+
+    private val screenBounds = Rect(0, 0, 1000, 1000)
+
+    private val rect100px = Rect()
+    private val rect100pxFloating = FloatingRect(rect100px)
+
+    private val rect200px = Rect()
+    private val rect200pxFloating = FloatingRect(rect200px)
+
+    private val rect300px = Rect()
+    private val rect300pxFloating = FloatingRect(rect300px)
+
+    private val floatingCoordinator = FloatingContentCoordinator()
+
+    @Before
+    fun setup() {
+        rect100px.set(0, 0, 100, 100)
+        rect200px.set(0, 0, 200, 200)
+        rect300px.set(0, 0, 300, 300)
+    }
+
+    @After
+    fun tearDown() {
+        // We need to remove this stuff since it's a singleton object and it'll be there for the
+        // next test.
+        floatingCoordinator.onContentRemoved(rect100pxFloating)
+        floatingCoordinator.onContentRemoved(rect200pxFloating)
+        floatingCoordinator.onContentRemoved(rect300pxFloating)
+    }
+
+    @Test
+    fun testOnContentAdded() {
+        // Add rect1, and verify that the coordinator didn't move it.
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+        assertEquals(rect100px.top, 0)
+
+        // Add rect2, which intersects rect1. Verify that rect2 was not moved, since newly added
+        // content is allowed to remain where it is. rect1 should have been moved below rect2
+        // since it was in the way.
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+        assertEquals(rect200px.top, 0)
+        assertEquals(rect100px.top, 200)
+
+        verifyRectSizes()
+    }
+
+    @Test
+    fun testOnContentRemoved() {
+        // Add rect1, and remove it. Then add rect2. Since rect1 was removed before that, it should
+        // no longer be considered in the way, so it shouldn't move when rect2 is added.
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+        floatingCoordinator.onContentRemoved(rect100pxFloating)
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+
+        assertEquals(rect100px.top, 0)
+        assertEquals(rect200px.top, 0)
+
+        verifyRectSizes()
+    }
+
+    @Test
+    fun testOnContentMoved_twoRects() {
+        // Add rect1, which is at y = 0.
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+
+        // Move rect2 down to 500px, where it won't conflict with rect1.
+        rect200px.offsetTo(0, 500)
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+
+        // Then, move it to 0px where it will absolutely conflict with rect1.
+        rect200px.offsetTo(0, 0)
+        floatingCoordinator.onContentMoved(rect200pxFloating)
+
+        // The coordinator should have left rect2 alone, and moved rect1 below it. rect1 should now
+        // be at y = 200.
+        assertEquals(rect200px.top, 0)
+        assertEquals(rect100px.top, 200)
+
+        verifyRectSizes()
+
+        // Move rect2 to y = 275px. Since this puts it at the bottom half of rect1, it should push
+        // rect1 upward and leave rect2 alone.
+        rect200px.offsetTo(0, 275)
+        floatingCoordinator.onContentMoved(rect200pxFloating)
+
+        assertEquals(rect200px.top, 275)
+        assertEquals(rect100px.top, 175)
+
+        verifyRectSizes()
+
+        // Move rect2 to y = 110px. This makes it intersect rect1 again, but above its center of
+        // mass. That means rect1 should be pushed downward.
+        rect200px.offsetTo(0, 110)
+        floatingCoordinator.onContentMoved(rect200pxFloating)
+
+        assertEquals(rect200px.top, 110)
+        assertEquals(rect100px.top, 310)
+
+        verifyRectSizes()
+    }
+
+    @Test
+    fun testOnContentMoved_threeRects() {
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+
+        // Add rect2, which should displace rect1 to y = 200
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+        assertEquals(rect200px.top, 0)
+        assertEquals(rect100px.top, 200)
+
+        // Add rect3, which should completely cover both rect1 and rect2. That should cause them to
+        // move away. The order in which they do so is non-deterministic, so just make sure none of
+        // the three Rects intersect.
+        floatingCoordinator.onContentAdded(rect300pxFloating)
+
+        assertFalse(Rect.intersects(rect100px, rect200px))
+        assertFalse(Rect.intersects(rect100px, rect300px))
+        assertFalse(Rect.intersects(rect200px, rect300px))
+
+        // Move rect2 to intersect both rect1 and rect3.
+        rect200px.offsetTo(0, 150)
+        floatingCoordinator.onContentMoved(rect200pxFloating)
+
+        assertFalse(Rect.intersects(rect100px, rect200px))
+        assertFalse(Rect.intersects(rect100px, rect300px))
+        assertFalse(Rect.intersects(rect200px, rect300px))
+    }
+
+    @Test
+    fun testOnContentMoved_respectsUpperBounds() {
+        // Add rect1, which is at y = 0.
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+
+        // Move rect2 down to 500px, where it won't conflict with rect1.
+        rect200px.offsetTo(0, 500)
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+
+        // Then, move it to 90px where it will conflict with rect1, but with a center of mass below
+        // that of rect1's. This would normally mean that rect1 moves upward. However, since it's at
+        // the top of the screen, it should go downward instead.
+        rect200px.offsetTo(0, 90)
+        floatingCoordinator.onContentMoved(rect200pxFloating)
+
+        // rect2 should have been left alone, rect1 is now below rect2 at y = 290px even though it
+        // was intersected from below.
+        assertEquals(rect200px.top, 90)
+        assertEquals(rect100px.top, 290)
+    }
+
+    @Test
+    fun testOnContentMoved_respectsLowerBounds() {
+        // Put rect1 at the bottom of the screen and add it.
+        rect100px.offsetTo(0, screenBounds.bottom - 100)
+        floatingCoordinator.onContentAdded(rect100pxFloating)
+
+        // Put rect2 at the bottom as well. Since its center of mass is above rect1's, rect1 would
+        // normally move downward. Since it's at the bottom of the screen, it should go upward
+        // instead.
+        rect200px.offsetTo(0, 800)
+        floatingCoordinator.onContentAdded(rect200pxFloating)
+
+        assertEquals(rect200px.top, 800)
+        assertEquals(rect100px.top, 700)
+    }
+
+    /**
+     * Tests that the rect sizes didn't change when the coordinator manipulated them. This allows us
+     * to assert only the value of rect.top in tests, since if top, width, and height are correct,
+     * that means top/left/right/bottom are all correct.
+     */
+    private fun verifyRectSizes() {
+        assertEquals(100, rect100px.width())
+        assertEquals(200, rect200px.width())
+        assertEquals(300, rect300px.width())
+
+        assertEquals(100, rect100px.height())
+        assertEquals(200, rect200px.height())
+        assertEquals(300, rect300px.height())
+    }
+
+    /**
+     * Helper class that uses [floatingCoordinator.findAreaForContentVertically] to move a
+     * Rect when needed.
+     */
+    inner class FloatingRect(
+        private val underlyingRect: Rect
+    ) : FloatingContentCoordinator.FloatingContent {
+        override fun moveToBounds(bounds: Rect) {
+            underlyingRect.set(bounds)
+        }
+
+        override fun getAllowedFloatingBoundsRegion(): Rect {
+            return screenBounds
+        }
+
+        override fun getFloatingBoundsOnScreen(): Rect {
+            return underlyingRect
+        }
+    }
+}
\ No newline at end of file
diff --git a/packages/Tethering/Android.bp b/packages/Tethering/Android.bp
index cf2b1f06..4efe934 100644
--- a/packages/Tethering/Android.bp
+++ b/packages/Tethering/Android.bp
@@ -28,6 +28,7 @@
         "netd_aidl_interface-unstable-java",
         "netlink-client",
         "networkstack-aidl-interfaces-unstable-java",
+        "android.hardware.tetheroffload.config-V1.0-java",
         "android.hardware.tetheroffload.control-V1.0-java",
         "net-utils-framework-common",
     ],
@@ -48,26 +49,26 @@
 // Due to b/143733063, APK can't access a jni lib that is in APEX (but not in the APK).
 cc_library {
     name: "libtetherutilsjni",
+    sdk_version: "current",
     srcs: [
         "jni/android_net_util_TetheringUtils.cpp",
     ],
     shared_libs: [
-        "libcgrouprc",
-        "libnativehelper_compat_libc++",
-        "libvndksupport",
-    ],
-    static_libs: [
-        "android.hardware.tetheroffload.config@1.0",
         "liblog",
-        "libbase",
-        "libbinderthreadstate",
-        "libcutils",
-        "libhidlbase",
-        "libjsoncpp",
-        "libprocessgroup",
-        "libutils",
+        "libnativehelper_compat_libc++",
     ],
 
+    // We cannot use plain "libc++" here to link libc++ dynamically because it results in:
+    //   java.lang.UnsatisfiedLinkError: dlopen failed: library "libc++_shared.so" not found
+    // even if "libc++" is added into jni_libs below. Adding "libc++_shared" into jni_libs doesn't
+    // build because soong complains of:
+    //   module Tethering missing dependencies: libc++_shared
+    //
+    // So, link libc++ statically. This means that we also need to ensure that all the C++ libraries
+    // we depend on do not dynamically link libc++. This is currently the case, because liblog is
+    // C-only and libnativehelper_compat_libc also uses stl: "c++_static".
+    stl: "c++_static",
+
     cflags: [
         "-Wall",
         "-Werror",
@@ -86,9 +87,8 @@
     // Build system doesn't track transitive dependeicies for jni_libs, list all the dependencies
     // explicitly.
     jni_libs: [
-        "libcgrouprc",
+        "liblog",
         "libnativehelper_compat_libc++",
-        "libvndksupport",
         "libtetherutilsjni",
     ],
     resource_dirs: [
diff --git a/packages/Tethering/common/TetheringLib/Android.bp b/packages/Tethering/common/TetheringLib/Android.bp
index e0adb34d..8c4f733 100644
--- a/packages/Tethering/common/TetheringLib/Android.bp
+++ b/packages/Tethering/common/TetheringLib/Android.bp
@@ -59,16 +59,33 @@
     ],
 
     hostdex: true, // for hiddenapi check
-    visibility: [
-        "//frameworks/base/packages/Tethering:__subpackages__",
-        //TODO(b/147200698) remove below lines when the platform is built with stubs
-        "//frameworks/base",
-        "//frameworks/base/services",
-        "//frameworks/base/services/core",
-    ],
+    visibility: ["//frameworks/base/packages/Tethering:__subpackages__"],
     apex_available: ["com.android.tethering"],
 }
 
+droidstubs {
+    name: "framework-tethering-stubs-sources",
+    defaults: ["framework-module-stubs-defaults-module_libs_api"],
+    srcs: [
+        "src/android/net/TetheredClient.java",
+        "src/android/net/TetheringManager.java",
+        "src/android/net/TetheringConstants.java",
+    ],
+    libs: [
+        "tethering-aidl-interfaces-java",
+        "framework-all",
+    ],
+    sdk_version: "core_platform",
+}
+
+java_library {
+    name: "framework-tethering-stubs",
+    srcs: [":framework-tethering-stubs-sources"],
+    libs: ["framework-all"],
+    static_libs: ["tethering-aidl-interfaces-java"],
+    sdk_version: "core_platform",
+}
+
 filegroup {
     name: "framework-tethering-srcs",
     srcs: [
diff --git a/packages/Tethering/common/TetheringLib/jarjar-rules.txt b/packages/Tethering/common/TetheringLib/jarjar-rules.txt
index 35e0f88..1403bba 100644
--- a/packages/Tethering/common/TetheringLib/jarjar-rules.txt
+++ b/packages/Tethering/common/TetheringLib/jarjar-rules.txt
@@ -1 +1,2 @@
 rule android.annotation.** com.android.networkstack.tethering.annotation.@1
+rule com.android.internal.annotations.** com.android.networkstack.tethering.annotation.@1
\ No newline at end of file
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java
index 6514688..779aa3b 100644
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetheredClient.java
@@ -16,6 +16,8 @@
 
 package android.net;
 
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
@@ -25,7 +27,7 @@
 
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashSet;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Objects;
 
@@ -34,6 +36,7 @@
  * @hide
  */
 @SystemApi
+@SystemApi(client = MODULE_LIBRARIES)
 @TestApi
 public final class TetheredClient implements Parcelable {
     @NonNull
@@ -83,7 +86,7 @@
      * @hide
      */
     public TetheredClient addAddresses(@NonNull TetheredClient other) {
-        final HashSet<AddressInfo> newAddresses = new HashSet<>(
+        final LinkedHashSet<AddressInfo> newAddresses = new LinkedHashSet<>(
                 mAddresses.size() + other.mAddresses.size());
         newAddresses.addAll(mAddresses);
         newAddresses.addAll(other.mAddresses);
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java
index 00cf98e..df87ac9 100644
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetheringConstants.java
@@ -16,6 +16,9 @@
 
 package android.net;
 
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
+import android.annotation.SystemApi;
 import android.os.ResultReceiver;
 
 /**
@@ -28,39 +31,30 @@
  * symbols from framework-tethering even when they are in a non-hidden class.
  * @hide
  */
+@SystemApi(client = MODULE_LIBRARIES)
 public class TetheringConstants {
     /**
      * Extra used for communicating with the TetherService. Includes the type of tethering to
      * enable if any.
-     *
-     * {@hide}
      */
     public static final String EXTRA_ADD_TETHER_TYPE = "extraAddTetherType";
     /**
      * Extra used for communicating with the TetherService. Includes the type of tethering for
      * which to cancel provisioning.
-     *
-     * {@hide}
      */
     public static final String EXTRA_REM_TETHER_TYPE = "extraRemTetherType";
     /**
      * Extra used for communicating with the TetherService. True to schedule a recheck of tether
      * provisioning.
-     *
-     * {@hide}
      */
     public static final String EXTRA_SET_ALARM = "extraSetAlarm";
     /**
      * Tells the TetherService to run a provision check now.
-     *
-     * {@hide}
      */
     public static final String EXTRA_RUN_PROVISION = "extraRunProvision";
     /**
      * Extra used for communicating with the TetherService. Contains the {@link ResultReceiver}
      * which will receive provisioning results. Can be left empty.
-     *
-     * {@hide}
      */
     public static final String EXTRA_PROVISION_CALLBACK = "extraProvisionCallback";
 }
diff --git a/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java b/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
index 37ce1d57..6a9f010 100644
--- a/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
+++ b/packages/Tethering/common/TetheringLib/src/android/net/TetheringManager.java
@@ -15,6 +15,8 @@
  */
 package android.net;
 
+import static android.annotation.SystemApi.Client.MODULE_LIBRARIES;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -30,6 +32,9 @@
 import android.util.ArrayMap;
 import android.util.Log;
 
+import com.android.internal.annotations.GuardedBy;
+
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
@@ -37,6 +42,7 @@
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.Executor;
+import java.util.function.Supplier;
 
 /**
  * This class provides the APIs to control the tethering service.
@@ -46,21 +52,28 @@
  * @hide
  */
 @SystemApi
+@SystemApi(client = MODULE_LIBRARIES)
 @TestApi
 public class TetheringManager {
     private static final String TAG = TetheringManager.class.getSimpleName();
     private static final int DEFAULT_TIMEOUT_MS = 60_000;
+    private static final long CONNECTOR_POLL_INTERVAL_MILLIS = 200L;
 
-    private static TetheringManager sInstance;
+    @GuardedBy("mConnectorWaitQueue")
+    @Nullable
+    private ITetheringConnector mConnector;
+    @GuardedBy("mConnectorWaitQueue")
+    @NonNull
+    private final List<ConnectorConsumer> mConnectorWaitQueue = new ArrayList<>();
+    private final Supplier<IBinder> mConnectorSupplier;
 
-    private final ITetheringConnector mConnector;
     private final TetheringCallbackInternal mCallback;
     private final Context mContext;
     private final ArrayMap<TetheringEventCallback, ITetheringEventCallback>
             mTetheringEventCallbacks = new ArrayMap<>();
 
-    private TetheringConfigurationParcel mTetheringConfiguration;
-    private TetherStatesParcel mTetherStatesParcel;
+    private volatile TetheringConfigurationParcel mTetheringConfiguration;
+    private volatile TetherStatesParcel mTetherStatesParcel;
 
     /**
      * Broadcast Action: A tetherable connection has come or gone.
@@ -162,29 +175,140 @@
     /**
      * Create a TetheringManager object for interacting with the tethering service.
      *
+     * @param context Context for the manager.
+     * @param connectorSupplier Supplier for the manager connector; may return null while the
+     *                          service is not connected.
      * {@hide}
      */
-    public TetheringManager(@NonNull final Context context, @NonNull final IBinder service) {
+    @SystemApi(client = MODULE_LIBRARIES)
+    public TetheringManager(@NonNull final Context context,
+            @NonNull Supplier<IBinder> connectorSupplier) {
         mContext = context;
-        mConnector = ITetheringConnector.Stub.asInterface(service);
         mCallback = new TetheringCallbackInternal();
+        mConnectorSupplier = connectorSupplier;
 
         final String pkgName = mContext.getOpPackageName();
+
+        final IBinder connector = mConnectorSupplier.get();
+        // If the connector is available on start, do not start a polling thread. This introduces
+        // differences in the thread that sends the oneway binder calls to the service between the
+        // first few seconds after boot and later, but it avoids always having differences between
+        // the first usage of TetheringManager from a process and subsequent usages (so the
+        // difference is only on boot). On boot binder calls may be queued until the service comes
+        // up and be sent from a worker thread; later, they are always sent from the caller thread.
+        // Considering that it's just oneway binder calls, and ordering is preserved, this seems
+        // better than inconsistent behavior persisting after boot.
+        if (connector != null) {
+            mConnector = ITetheringConnector.Stub.asInterface(connector);
+        } else {
+            startPollingForConnector();
+        }
+
         Log.i(TAG, "registerTetheringEventCallback:" + pkgName);
+        getConnector(c -> c.registerTetheringEventCallback(mCallback, pkgName));
+    }
+
+    private void startPollingForConnector() {
+        new Thread(() -> {
+            while (true) {
+                try {
+                    Thread.sleep(200);
+                } catch (InterruptedException e) {
+                    // Not much to do here, the system needs to wait for the connector
+                }
+
+                final IBinder connector = mConnectorSupplier.get();
+                if (connector != null) {
+                    onTetheringConnected(ITetheringConnector.Stub.asInterface(connector));
+                    return;
+                }
+            }
+        }).start();
+    }
+
+    private interface ConnectorConsumer {
+        void onConnectorAvailable(ITetheringConnector connector) throws RemoteException;
+    }
+
+    private void onTetheringConnected(ITetheringConnector connector) {
+        // Process the connector wait queue in order, including any items that are added
+        // while processing.
+        //
+        // 1. Copy the queue to a local variable under lock.
+        // 2. Drain the local queue with the lock released (otherwise, enqueuing future commands
+        //    would block on the lock).
+        // 3. Acquire the lock again. If any new tasks were queued during step 2, goto 1.
+        //    If not, set mConnector to non-null so future tasks are run immediately, not queued.
+        //
+        // For this to work, all calls to the tethering service must use getConnector(), which
+        // ensures that tasks are added to the queue with the lock held.
+        //
+        // Once mConnector is set to non-null, it will never be null again. If the network stack
+        // process crashes, no recovery is possible.
+        // TODO: evaluate whether it is possible to recover from network stack process crashes
+        // (though in most cases the system will have crashed when the network stack process
+        // crashes).
+        do {
+            final List<ConnectorConsumer> localWaitQueue;
+            synchronized (mConnectorWaitQueue) {
+                localWaitQueue = new ArrayList<>(mConnectorWaitQueue);
+                mConnectorWaitQueue.clear();
+            }
+
+            // Allow more tasks to be added at the end without blocking while draining the queue.
+            for (ConnectorConsumer task : localWaitQueue) {
+                try {
+                    task.onConnectorAvailable(connector);
+                } catch (RemoteException e) {
+                    // Most likely the network stack process crashed, which is likely to crash the
+                    // system. Keep processing other requests but report the error loudly.
+                    Log.wtf(TAG, "Error processing request for the tethering connector", e);
+                }
+            }
+
+            synchronized (mConnectorWaitQueue) {
+                if (mConnectorWaitQueue.size() == 0) {
+                    mConnector = connector;
+                    return;
+                }
+            }
+        } while (true);
+    }
+
+    /**
+     * Asynchronously get the ITetheringConnector to execute some operation.
+     *
+     * <p>If the connector is already available, the operation will be executed on the caller's
+     * thread. Otherwise it will be queued and executed on a worker thread. The operation should be
+     * limited to performing oneway binder calls to minimize differences due to threading.
+     */
+    private void getConnector(ConnectorConsumer consumer) {
+        final ITetheringConnector connector;
+        synchronized (mConnectorWaitQueue) {
+            connector = mConnector;
+            if (connector == null) {
+                mConnectorWaitQueue.add(consumer);
+                return;
+            }
+        }
+
         try {
-            mConnector.registerTetheringEventCallback(mCallback, pkgName);
+            consumer.onConnectorAvailable(connector);
         } catch (RemoteException e) {
             throw new IllegalStateException(e);
         }
     }
 
     private interface RequestHelper {
-        void runRequest(IIntResultListener listener);
+        void runRequest(ITetheringConnector connector, IIntResultListener listener);
     }
 
+    // Used to dispatch legacy ConnectivityManager methods that expect tethering to be able to
+    // return results and perform operations synchronously.
+    // TODO: remove once there are no callers of these legacy methods.
     private class RequestDispatcher {
         private final ConditionVariable mWaiting;
-        public int mRemoteResult;
+        public volatile int mRemoteResult;
 
         private final IIntResultListener mListener = new IIntResultListener.Stub() {
                 @Override
@@ -199,7 +323,7 @@
         }
 
         int waitForResult(final RequestHelper request) {
-            request.runRequest(mListener);
+            getConnector(c -> request.runRequest(c, mListener));
             if (!mWaiting.block(DEFAULT_TIMEOUT_MS)) {
                 throw new IllegalStateException("Callback timeout");
             }
@@ -222,7 +346,7 @@
     }
 
     private class TetheringCallbackInternal extends ITetheringEventCallback.Stub {
-        private int mError = TETHER_ERROR_NO_ERROR;
+        private volatile int mError = TETHER_ERROR_NO_ERROR;
         private final ConditionVariable mWaitForCallback = new ConditionVariable();
 
         @Override
@@ -275,14 +399,15 @@
      * {@hide}
      */
     @Deprecated
+    @SystemApi(client = MODULE_LIBRARIES)
     public int tether(@NonNull final String iface) {
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "tether caller:" + callerPkg);
         final RequestDispatcher dispatcher = new RequestDispatcher();
 
-        return dispatcher.waitForResult(listener -> {
+        return dispatcher.waitForResult((connector, listener) -> {
             try {
-                mConnector.tether(iface, callerPkg, listener);
+                connector.tether(iface, callerPkg, listener);
             } catch (RemoteException e) {
                 throw new IllegalStateException(e);
             }
@@ -298,15 +423,16 @@
      * {@hide}
      */
     @Deprecated
+    @SystemApi(client = MODULE_LIBRARIES)
     public int untether(@NonNull final String iface) {
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "untether caller:" + callerPkg);
 
         final RequestDispatcher dispatcher = new RequestDispatcher();
 
-        return dispatcher.waitForResult(listener -> {
+        return dispatcher.waitForResult((connector, listener) -> {
             try {
-                mConnector.untether(iface, callerPkg, listener);
+                connector.untether(iface, callerPkg, listener);
             } catch (RemoteException e) {
                 throw new IllegalStateException(e);
             }
@@ -324,15 +450,16 @@
      * {@hide}
      */
     @Deprecated
+    @SystemApi(client = MODULE_LIBRARIES)
     public int setUsbTethering(final boolean enable) {
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "setUsbTethering caller:" + callerPkg);
 
         final RequestDispatcher dispatcher = new RequestDispatcher();
 
-        return dispatcher.waitForResult(listener -> {
+        return dispatcher.waitForResult((connector, listener) -> {
             try {
-                mConnector.setUsbTethering(enable, callerPkg, listener);
+                connector.setUsbTethering(enable, callerPkg, listener);
             } catch (RemoteException e) {
                 throw new IllegalStateException(e);
             }
@@ -467,11 +594,7 @@
                 });
             }
         };
-        try {
-            mConnector.startTethering(request.getParcel(), callerPkg, listener);
-        } catch (RemoteException e) {
-            throw new IllegalStateException(e);
-        }
+        getConnector(c -> c.startTethering(request.getParcel(), callerPkg, listener));
     }
 
     /**
@@ -509,15 +632,15 @@
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "stopTethering caller:" + callerPkg);
 
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-
-        dispatcher.waitForResult(listener -> {
-            try {
-                mConnector.stopTethering(type, callerPkg, listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
+        getConnector(c -> c.stopTethering(type, callerPkg, new IIntResultListener.Stub() {
+            @Override
+            public void onResult(int resultCode) {
+                // TODO: provide an API to obtain result
+                // This has never been possible as stopTethering has always been void and never
+                // taken a callback object. The only indication that callers have is if the call
+                // results in a TETHER_STATE_CHANGE broadcast.
             }
-        });
+        }));
     }
 
     /**
@@ -586,17 +709,14 @@
      * {@hide}
      */
     // TODO: improve the usage of ResultReceiver, b/145096122
+    @SystemApi(client = MODULE_LIBRARIES)
     public void requestLatestTetheringEntitlementResult(final int type,
             @NonNull final ResultReceiver receiver, final boolean showEntitlementUi) {
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "getLatestTetheringEntitlementResult caller:" + callerPkg);
 
-        try {
-            mConnector.requestLatestTetheringEntitlementResult(type, receiver, showEntitlementUi,
-                    callerPkg);
-        } catch (RemoteException e) {
-            throw new IllegalStateException(e);
-        }
+        getConnector(c -> c.requestLatestTetheringEntitlementResult(
+                type, receiver, showEntitlementUi, callerPkg));
     }
 
     /**
@@ -832,11 +952,7 @@
                     });
                 }
             };
-            try {
-                mConnector.registerTetheringEventCallback(remoteCallback, callerPkg);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
+            getConnector(c -> c.registerTetheringEventCallback(remoteCallback, callerPkg));
             mTetheringEventCallbacks.put(callback, remoteCallback);
         }
     }
@@ -860,11 +976,8 @@
             if (remoteCallback == null) {
                 throw new IllegalArgumentException("callback was not registered.");
             }
-            try {
-                mConnector.unregisterTetheringEventCallback(remoteCallback, callerPkg);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
-            }
+
+            getConnector(c -> c.unregisterTetheringEventCallback(remoteCallback, callerPkg));
         }
     }
 
@@ -877,6 +990,7 @@
      *               interface
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public int getLastTetherError(@NonNull final String iface) {
         mCallback.waitForStarted();
         if (mTetherStatesParcel == null) return TETHER_ERROR_NO_ERROR;
@@ -899,6 +1013,7 @@
      *        what interfaces are considered tetherable usb interfaces.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetherableUsbRegexs() {
         mCallback.waitForStarted();
         return mTetheringConfiguration.tetherableUsbRegexs;
@@ -913,6 +1028,7 @@
      *        what interfaces are considered tetherable wifi interfaces.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetherableWifiRegexs() {
         mCallback.waitForStarted();
         return mTetheringConfiguration.tetherableWifiRegexs;
@@ -927,6 +1043,7 @@
      *        what interfaces are considered tetherable bluetooth interfaces.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetherableBluetoothRegexs() {
         mCallback.waitForStarted();
         return mTetheringConfiguration.tetherableBluetoothRegexs;
@@ -939,6 +1056,7 @@
      * @return an array of 0 or more Strings of tetherable interface names.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetherableIfaces() {
         mCallback.waitForStarted();
         if (mTetherStatesParcel == null) return new String[0];
@@ -952,6 +1070,7 @@
      * @return an array of 0 or more String of currently tethered interface names.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetheredIfaces() {
         mCallback.waitForStarted();
         if (mTetherStatesParcel == null) return new String[0];
@@ -971,6 +1090,7 @@
      *        which failed to tether.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public @NonNull String[] getTetheringErroredIfaces() {
         mCallback.waitForStarted();
         if (mTetherStatesParcel == null) return new String[0];
@@ -998,13 +1118,14 @@
      * @return a boolean - {@code true} indicating Tethering is supported.
      * @hide
      */
+    @SystemApi(client = MODULE_LIBRARIES)
     public boolean isTetheringSupported() {
         final String callerPkg = mContext.getOpPackageName();
 
         final RequestDispatcher dispatcher = new RequestDispatcher();
-        final int ret = dispatcher.waitForResult(listener -> {
+        final int ret = dispatcher.waitForResult((connector, listener) -> {
             try {
-                mConnector.isTetheringSupported(callerPkg, listener);
+                connector.isTetheringSupported(callerPkg, listener);
             } catch (RemoteException e) {
                 throw new IllegalStateException(e);
             }
@@ -1027,13 +1148,14 @@
         final String callerPkg = mContext.getOpPackageName();
         Log.i(TAG, "stopAllTethering caller:" + callerPkg);
 
-        final RequestDispatcher dispatcher = new RequestDispatcher();
-        dispatcher.waitForResult(listener -> {
-            try {
-                mConnector.stopAllTethering(callerPkg, listener);
-            } catch (RemoteException e) {
-                throw new IllegalStateException(e);
+        getConnector(c -> c.stopAllTethering(callerPkg, new IIntResultListener.Stub() {
+            @Override
+            public void onResult(int resultCode) {
+                // TODO: add an API parameter to send result to caller.
+                // This has never been possible as stopAllTethering has always been void and never
+                // taken a callback object. The only indication that callers have is if the call
+                // results in a TETHER_STATE_CHANGE broadcast.
             }
-        });
+        }));
     }
 }
diff --git a/packages/Tethering/jni/android_net_util_TetheringUtils.cpp b/packages/Tethering/jni/android_net_util_TetheringUtils.cpp
index 1cf8f98..54934406 100644
--- a/packages/Tethering/jni/android_net_util_TetheringUtils.cpp
+++ b/packages/Tethering/jni/android_net_util_TetheringUtils.cpp
@@ -16,123 +16,18 @@
 
 #include <errno.h>
 #include <error.h>
-#include <hidl/HidlSupport.h>
 #include <jni.h>
 #include <nativehelper/JNIHelp.h>
 #include <nativehelper/ScopedUtfChars.h>
-#include <linux/netfilter/nfnetlink.h>
-#include <linux/netlink.h>
 #include <net/if.h>
 #include <netinet/icmp6.h>
 #include <sys/socket.h>
-#include <android-base/unique_fd.h>
-#include <android/hardware/tetheroffload/config/1.0/IOffloadConfig.h>
 
 #define LOG_TAG "TetheringUtils"
-#include <utils/Log.h>
+#include <android/log.h>
 
 namespace android {
 
-using hardware::hidl_handle;
-using hardware::hidl_string;
-using hardware::tetheroffload::config::V1_0::IOffloadConfig;
-
-namespace {
-
-inline const sockaddr * asSockaddr(const sockaddr_nl *nladdr) {
-    return reinterpret_cast<const sockaddr *>(nladdr);
-}
-
-int conntrackSocket(unsigned groups) {
-    base::unique_fd s(socket(AF_NETLINK, SOCK_DGRAM, NETLINK_NETFILTER));
-    if (s.get() < 0) return -errno;
-
-    const struct sockaddr_nl bind_addr = {
-        .nl_family = AF_NETLINK,
-        .nl_pad = 0,
-        .nl_pid = 0,
-        .nl_groups = groups,
-    };
-    if (bind(s.get(), asSockaddr(&bind_addr), sizeof(bind_addr)) != 0) {
-        return -errno;
-    }
-
-    const struct sockaddr_nl kernel_addr = {
-        .nl_family = AF_NETLINK,
-        .nl_pad = 0,
-        .nl_pid = 0,
-        .nl_groups = groups,
-    };
-    if (connect(s.get(), asSockaddr(&kernel_addr), sizeof(kernel_addr)) != 0) {
-        return -errno;
-    }
-
-    return s.release();
-}
-
-// Return a hidl_handle that owns the file descriptor owned by fd, and will
-// auto-close it (otherwise there would be double-close problems).
-//
-// Rely upon the compiler to eliminate the constexprs used for clarity.
-hidl_handle handleFromFileDescriptor(base::unique_fd fd) {
-    hidl_handle h;
-
-    static constexpr int kNumFds = 1;
-    static constexpr int kNumInts = 0;
-    native_handle_t *nh = native_handle_create(kNumFds, kNumInts);
-    nh->data[0] = fd.release();
-
-    static constexpr bool kTakeOwnership = true;
-    h.setTo(nh, kTakeOwnership);
-
-    return h;
-}
-
-}  // namespace
-
-static jboolean android_net_util_configOffload(
-        JNIEnv* /* env */) {
-    sp<IOffloadConfig> configInterface = IOffloadConfig::getService();
-    if (configInterface.get() == nullptr) {
-        ALOGD("Could not find IOffloadConfig service.");
-        return false;
-    }
-
-    // Per the IConfigOffload definition:
-    //
-    // fd1   A file descriptor bound to the following netlink groups
-    //       (NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY).
-    //
-    // fd2   A file descriptor bound to the following netlink groups
-    //       (NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY).
-    base::unique_fd
-            fd1(conntrackSocket(NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY)),
-            fd2(conntrackSocket(NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY));
-    if (fd1.get() < 0 || fd2.get() < 0) {
-        ALOGE("Unable to create conntrack handles: %d/%s", errno, strerror(errno));
-        return false;
-    }
-
-    hidl_handle h1(handleFromFileDescriptor(std::move(fd1))),
-                h2(handleFromFileDescriptor(std::move(fd2)));
-
-    bool rval(false);
-    hidl_string msg;
-    const auto status = configInterface->setHandles(h1, h2,
-            [&rval, &msg](bool success, const hidl_string& errMsg) {
-                rval = success;
-                msg = errMsg;
-            });
-    if (!status.isOk() || !rval) {
-        ALOGE("IOffloadConfig::setHandles() error: '%s' / '%s'",
-              status.description().c_str(), msg.c_str());
-        // If status is somehow not ok, make sure rval captures this too.
-        rval = false;
-    }
-
-    return rval;
-}
-
 static void android_net_util_setupRaSocket(JNIEnv *env, jobject clazz, jobject javaFd,
         jint ifIndex)
 {
@@ -229,7 +124,6 @@
  */
 static const JNINativeMethod gMethods[] = {
     /* name, signature, funcPtr */
-    { "configOffload", "()Z", (void*) android_net_util_configOffload },
     { "setupRaSocket", "(Ljava/io/FileDescriptor;I)V", (void*) android_net_util_setupRaSocket },
 };
 
@@ -242,7 +136,7 @@
 extern "C" jint JNI_OnLoad(JavaVM* vm, void*) {
     JNIEnv *env;
     if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
-        ALOGE("ERROR: GetEnv failed");
+        __android_log_print(ANDROID_LOG_ERROR, LOG_TAG, "ERROR: GetEnv failed");
         return JNI_ERR;
     }
 
diff --git a/packages/Tethering/res/values/config.xml b/packages/Tethering/res/values/config.xml
index c489cbc..4af5c53 100644
--- a/packages/Tethering/res/values/config.xml
+++ b/packages/Tethering/res/values/config.xml
@@ -47,6 +47,7 @@
          should be empty.  An example would be "p2p-p2p\\d-.*" -->
     <string-array translatable="false" name="config_tether_wifi_p2p_regexs">
         <item>"p2p-p2p\\d-.*"</item>
+        <item>"p2p\\d"</item>
     </string-array>
 
     <!-- List of regexpressions describing the interface (if any) that represent tetherable
diff --git a/packages/Tethering/src/android/net/util/TetheringUtils.java b/packages/Tethering/src/android/net/util/TetheringUtils.java
index fa543bd..5a6d5c1 100644
--- a/packages/Tethering/src/android/net/util/TetheringUtils.java
+++ b/packages/Tethering/src/android/net/util/TetheringUtils.java
@@ -24,14 +24,6 @@
  * {@hide}
  */
 public class TetheringUtils {
-
-    /**
-     * Offload management process need to know conntrack rules to support NAT, but it may not have
-     * permission to create netlink netfilter sockets. Create two netlink netfilter sockets and
-     * share them with offload management process.
-     */
-    public static native boolean configOffload();
-
     /**
      * Configures a socket for receiving ICMPv6 router solicitations and sending advertisements.
      * @param fd the socket's {@link FileDescriptor}.
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java b/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
index 90b9d3f..b545717 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/OffloadHardwareInterface.java
@@ -18,19 +18,28 @@
 
 import static android.net.util.TetheringUtils.uint16;
 
+import android.hardware.tetheroffload.config.V1_0.IOffloadConfig;
 import android.hardware.tetheroffload.control.V1_0.IOffloadControl;
 import android.hardware.tetheroffload.control.V1_0.ITetheringOffloadCallback;
 import android.hardware.tetheroffload.control.V1_0.NatTimeoutUpdate;
 import android.hardware.tetheroffload.control.V1_0.NetworkProtocol;
 import android.hardware.tetheroffload.control.V1_0.OffloadCallbackEvent;
+import android.net.netlink.NetlinkSocket;
 import android.net.util.SharedLog;
-import android.net.util.TetheringUtils;
+import android.net.util.SocketUtils;
 import android.os.Handler;
+import android.os.NativeHandle;
 import android.os.RemoteException;
+import android.system.ErrnoException;
+import android.system.Os;
 import android.system.OsConstants;
 
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.io.FileDescriptor;
+import java.io.IOException;
+import java.net.SocketAddress;
+import java.net.SocketException;
 import java.util.ArrayList;
 
 
@@ -49,6 +58,10 @@
     private static final String NO_INTERFACE_NAME = "";
     private static final String NO_IPV4_ADDRESS = "";
     private static final String NO_IPV4_GATEWAY = "";
+    // Reference kernel/uapi/linux/netfilter/nfnetlink_compat.h
+    private static final int NF_NETLINK_CONNTRACK_NEW = 1;
+    private static final int NF_NETLINK_CONNTRACK_UPDATE = 2;
+    private static final int NF_NETLINK_CONNTRACK_DESTROY = 4;
 
     private final Handler mHandler;
     private final SharedLog mLog;
@@ -121,9 +134,103 @@
         return DEFAULT_TETHER_OFFLOAD_DISABLED;
     }
 
-    /** Configure offload management process. */
+    /**
+     * Offload management process need to know conntrack rules to support NAT, but it may not have
+     * permission to create netlink netfilter sockets. Create two netlink netfilter sockets and
+     * share them with offload management process.
+     */
     public boolean initOffloadConfig() {
-        return TetheringUtils.configOffload();
+        IOffloadConfig offloadConfig;
+        try {
+            offloadConfig = IOffloadConfig.getService();
+        } catch (RemoteException e) {
+            mLog.e("getIOffloadConfig error " + e);
+            return false;
+        }
+        if (offloadConfig == null) {
+            mLog.e("Could not find IOffloadConfig service");
+            return false;
+        }
+        // Per the IConfigOffload definition:
+        //
+        // h1    provides a file descriptor bound to the following netlink groups
+        //       (NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY).
+        //
+        // h2    provides a file descriptor bound to the following netlink groups
+        //       (NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY).
+        final NativeHandle h1 = createConntrackSocket(
+                NF_NETLINK_CONNTRACK_NEW | NF_NETLINK_CONNTRACK_DESTROY);
+        if (h1 == null) return false;
+
+        final NativeHandle h2 = createConntrackSocket(
+                NF_NETLINK_CONNTRACK_UPDATE | NF_NETLINK_CONNTRACK_DESTROY);
+        if (h2 == null) {
+            closeFdInNativeHandle(h1);
+            return false;
+        }
+
+        final CbResults results = new CbResults();
+        try {
+            offloadConfig.setHandles(h1, h2,
+                    (boolean success, String errMsg) -> {
+                        results.mSuccess = success;
+                        results.mErrMsg = errMsg;
+                    });
+        } catch (RemoteException e) {
+            record("initOffloadConfig, setHandles fail", e);
+            return false;
+        }
+        // Explicitly close FDs.
+        closeFdInNativeHandle(h1);
+        closeFdInNativeHandle(h2);
+
+        record("initOffloadConfig, setHandles results:", results);
+        return results.mSuccess;
+    }
+
+    private void closeFdInNativeHandle(final NativeHandle h) {
+        try {
+            h.close();
+        } catch (IOException | IllegalStateException e) {
+            // IllegalStateException means fd is already closed, do nothing here.
+            // Also nothing we can do if IOException.
+        }
+    }
+
+    private NativeHandle createConntrackSocket(final int groups) {
+        FileDescriptor fd;
+        try {
+            fd = NetlinkSocket.forProto(OsConstants.NETLINK_NETFILTER);
+        } catch (ErrnoException e) {
+            mLog.e("Unable to create conntrack socket " + e);
+            return null;
+        }
+
+        final SocketAddress sockAddr = SocketUtils.makeNetlinkSocketAddress(0, groups);
+        try {
+            Os.bind(fd, sockAddr);
+        } catch (ErrnoException | SocketException e) {
+            mLog.e("Unable to bind conntrack socket for groups " + groups + " error: " + e);
+            try {
+                SocketUtils.closeSocket(fd);
+            } catch (IOException ie) {
+                // Nothing we can do here
+            }
+            return null;
+        }
+        try {
+            Os.connect(fd, sockAddr);
+        } catch (ErrnoException | SocketException e) {
+            mLog.e("connect to kernel fail for groups " + groups + " error: " + e);
+            try {
+                SocketUtils.closeSocket(fd);
+            } catch (IOException ie) {
+                // Nothing we can do here
+            }
+            return null;
+        }
+
+        return new NativeHandle(fd, true);
     }
 
     /** Initialize the tethering offload HAL. */
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
index 07abe1a..64c16e4 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/Tethering.java
@@ -272,13 +272,6 @@
 
         mStateReceiver = new StateReceiver();
 
-        mNetdCallback = new NetdCallback();
-        try {
-            mNetd.registerUnsolicitedEventListener(mNetdCallback);
-        } catch (RemoteException e) {
-            mLog.e("Unable to register netd UnsolicitedEventListener");
-        }
-
         final UserManager userManager = (UserManager) mContext.getSystemService(
                 Context.USER_SERVICE);
         mTetheringRestriction = new UserRestrictionActionListener(userManager, this);
@@ -287,6 +280,14 @@
 
         // Load tethering configuration.
         updateConfiguration();
+        // NetdCallback should be registered after updateConfiguration() to ensure
+        // TetheringConfiguration is created.
+        mNetdCallback = new NetdCallback();
+        try {
+            mNetd.registerUnsolicitedEventListener(mNetdCallback);
+        } catch (RemoteException e) {
+            mLog.e("Unable to register netd UnsolicitedEventListener");
+        }
 
         startStateMachineUpdaters(mHandler);
         startTrackDefaultNetwork();
@@ -1943,7 +1944,8 @@
             parcel.tetheringSupported = mDeps.isTetheringSupported();
             parcel.upstreamNetwork = mTetherUpstream;
             parcel.config = mConfig.toStableParcelable();
-            parcel.states = mTetherStatesParcel;
+            parcel.states =
+                    mTetherStatesParcel != null ? mTetherStatesParcel : emptyTetherStatesParcel();
             try {
                 callback.onCallbackStarted(parcel);
             } catch (RemoteException e) {
@@ -1952,6 +1954,17 @@
         });
     }
 
+    private TetherStatesParcel emptyTetherStatesParcel() {
+        final TetherStatesParcel parcel = new TetherStatesParcel();
+        parcel.availableList = new String[0];
+        parcel.tetheredList = new String[0];
+        parcel.localOnlyList = new String[0];
+        parcel.erroredIfaceList = new String[0];
+        parcel.lastErrorList = new int[0];
+
+        return parcel;
+    }
+
     /** Unregister tethering event callback */
     void unregisterTetheringEventCallback(ITetheringEventCallback callback) {
         mHandler.post(() -> {
diff --git a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java
index 7dc5c5f..020b32a 100644
--- a/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java
+++ b/packages/Tethering/src/com/android/server/connectivity/tethering/TetheringService.java
@@ -77,8 +77,8 @@
         mLog.mark("onCreate");
         mDeps = getTetheringDependencies();
         mContext = mDeps.getContext();
-        mTethering = makeTethering(mDeps);
         mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
+        mTethering = makeTethering(mDeps);
     }
 
     /**
diff --git a/packages/Tethering/tests/unit/Android.bp b/packages/Tethering/tests/unit/Android.bp
index 13174c5..c6905ec 100644
--- a/packages/Tethering/tests/unit/Android.bp
+++ b/packages/Tethering/tests/unit/Android.bp
@@ -34,7 +34,15 @@
         "TetheringApiCurrentLib",
         "testables",
     ],
+    // TODO(b/147200698) change sdk_version to module-current and
+    // remove framework-minus-apex, ext, and framework-res
+    sdk_version: "core_platform",
     libs: [
+        "framework-minus-apex",
+        "ext",
+        "framework-res",
+        "framework-wifi-stubs",
+        "framework-telephony-stubs",
         "android.test.runner",
         "android.test.base",
         "android.test.mock",
diff --git a/packages/Tethering/tests/unit/src/android/net/TetheredClientTest.kt b/packages/Tethering/tests/unit/src/android/net/TetheredClientTest.kt
index 83c19ec..d85389a 100644
--- a/packages/Tethering/tests/unit/src/android/net/TetheredClientTest.kt
+++ b/packages/Tethering/tests/unit/src/android/net/TetheredClientTest.kt
@@ -75,7 +75,7 @@
         assertNotEquals(makeTestClient(), TetheredClient(
                 TEST_MACADDR,
                 listOf(TEST_ADDRINFO1, TEST_ADDRINFO2),
-                TETHERING_BLUETOOTH))
+                TETHERING_USB))
     }
 
     @Test
diff --git a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
index 4710287..6d49e20 100644
--- a/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
+++ b/packages/Tethering/tests/unit/src/com/android/server/connectivity/tethering/TetheringTest.java
@@ -127,6 +127,7 @@
 import com.android.internal.util.test.BroadcastInterceptingContext;
 import com.android.internal.util.test.FakeSettingsProvider;
 import com.android.networkstack.tethering.R;
+import com.android.testutils.MiscAssertsKt;
 
 import org.junit.After;
 import org.junit.Before;
@@ -1220,6 +1221,16 @@
         }
     }
 
+    private void assertTetherStatesNotNullButEmpty(final TetherStatesParcel parcel) {
+        assertFalse(parcel == null);
+        assertEquals(0, parcel.availableList.length);
+        assertEquals(0, parcel.tetheredList.length);
+        assertEquals(0, parcel.localOnlyList.length);
+        assertEquals(0, parcel.erroredIfaceList.length);
+        assertEquals(0, parcel.lastErrorList.length);
+        MiscAssertsKt.assertFieldCountEquals(5, TetherStatesParcel.class);
+    }
+
     @Test
     public void testRegisterTetheringEventCallback() throws Exception {
         TestTetheringEventCallback callback = new TestTetheringEventCallback();
@@ -1232,7 +1243,7 @@
         callback.expectConfigurationChanged(
                 mTethering.getTetheringConfiguration().toStableParcelable());
         TetherStatesParcel tetherState = callback.pollTetherStatesChanged();
-        assertEquals(tetherState, null);
+        assertTetherStatesNotNullButEmpty(tetherState);
         // 2. Enable wifi tethering.
         UpstreamNetworkState upstreamState = buildMobileDualStackUpstreamState();
         when(mUpstreamNetworkMonitor.getCurrentPreferredUpstream()).thenReturn(upstreamState);
diff --git a/packages/VpnDialogs/AndroidManifest.xml b/packages/VpnDialogs/AndroidManifest.xml
index e4de625..693ca52 100644
--- a/packages/VpnDialogs/AndroidManifest.xml
+++ b/packages/VpnDialogs/AndroidManifest.xml
@@ -34,6 +34,13 @@
             </intent-filter>
         </activity>
 
+        <activity android:name=".PlatformVpnConfirmDialog"
+                  android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight"
+                  android:noHistory="true"
+                  android:excludeFromRecents="true"
+                  android:exported="true">
+        </activity>
+
         <activity android:name=".ManageDialog"
                   android:theme="@*android:style/Theme.DeviceDefault.Dialog.Alert.DayNight"
                   android:noHistory="true"
diff --git a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
index 48adb9b..e66f2cc 100644
--- a/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
+++ b/packages/VpnDialogs/src/com/android/vpndialogs/ConfirmDialog.java
@@ -23,6 +23,7 @@
 import android.content.pm.PackageManager;
 import android.graphics.drawable.Drawable;
 import android.net.IConnectivityManager;
+import android.net.VpnManager;
 import android.os.Bundle;
 import android.os.RemoteException;
 import android.os.ServiceManager;
@@ -43,10 +44,20 @@
         implements DialogInterface.OnClickListener, ImageGetter {
     private static final String TAG = "VpnConfirm";
 
+    @VpnManager.VpnType private final int mVpnType;
+
     private String mPackage;
 
     private IConnectivityManager mService;
 
+    public ConfirmDialog() {
+        this(VpnManager.TYPE_VPN_SERVICE);
+    }
+
+    public ConfirmDialog(@VpnManager.VpnType int vpnType) {
+        mVpnType = vpnType;
+    }
+
     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
@@ -138,7 +149,7 @@
             if (mService.prepareVpn(null, mPackage, UserHandle.myUserId())) {
                 // Authorize this app to initiate VPN connections in the future without user
                 // intervention.
-                mService.setVpnPackageAuthorization(mPackage, UserHandle.myUserId(), true);
+                mService.setVpnPackageAuthorization(mPackage, UserHandle.myUserId(), mVpnType);
                 setResult(RESULT_OK);
             }
         } catch (Exception e) {
diff --git a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl b/packages/VpnDialogs/src/com/android/vpndialogs/PlatformVpnConfirmDialog.java
similarity index 64%
copy from core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
copy to packages/VpnDialogs/src/com/android/vpndialogs/PlatformVpnConfirmDialog.java
index 3ad903b..e2e297c 100644
--- a/core/java/android/app/timezonedetector/PhoneTimeZoneSuggestion.aidl
+++ b/packages/VpnDialogs/src/com/android/vpndialogs/PlatformVpnConfirmDialog.java
@@ -14,6 +14,16 @@
  * limitations under the License.
  */
 
-package android.app.timezonedetector;
+package com.android.vpndialogs;
 
-parcelable PhoneTimeZoneSuggestion;
+import android.net.VpnManager;
+
+/**
+ * PlatformVpnConfirmDialog is a minimal subclass for requesting user consent for platform VPN
+ * profiles.
+ */
+public class PlatformVpnConfirmDialog extends ConfirmDialog {
+    public PlatformVpnConfirmDialog() {
+        super(VpnManager.TYPE_VPN_PLATFORM);
+    }
+}
diff --git a/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java b/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
index 9501073..fcb113e 100644
--- a/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
+++ b/packages/WallpaperCropper/src/com/android/photos/views/TiledImageRenderer.java
@@ -26,7 +26,6 @@
 import android.util.Pools.Pool;
 import android.util.Pools.SynchronizedPool;
 import android.view.View;
-import android.view.WindowManager;
 
 import com.android.gallery3d.common.Utils;
 import com.android.gallery3d.glrenderer.BasicTexture;
@@ -164,9 +163,7 @@
 
     private static boolean isHighResolution(Context context) {
         DisplayMetrics metrics = new DisplayMetrics();
-        WindowManager wm = (WindowManager)
-                context.getSystemService(Context.WINDOW_SERVICE);
-        wm.getDefaultDisplay().getMetrics(metrics);
+        context.getDisplay().getMetrics(metrics);
         return metrics.heightPixels > 2048 ||  metrics.widthPixels > 2048;
     }
 
diff --git a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
index f878b4d..6112da5 100644
--- a/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
+++ b/packages/WallpaperCropper/src/com/android/wallpapercropper/WallpaperCropActivity.java
@@ -37,9 +37,9 @@
 import android.os.AsyncTask;
 import android.os.Bundle;
 import android.util.Log;
+import android.util.Size;
 import android.view.Display;
 import android.view.View;
-import android.view.WindowManager;
 import android.widget.Toast;
 
 import com.android.gallery3d.common.Utils;
@@ -231,18 +231,18 @@
         return x * aspectRatio + y;
     }
 
-    static protected Point getDefaultWallpaperSize(Resources res, WindowManager windowManager) {
+    static protected Point getDefaultWallpaperSize(Resources res, Display display) {
         if (sDefaultWallpaperSize == null) {
             Point minDims = new Point();
             Point maxDims = new Point();
-            windowManager.getDefaultDisplay().getCurrentSizeRange(minDims, maxDims);
+            display.getCurrentSizeRange(minDims, maxDims);
 
             int maxDim = Math.max(maxDims.x, maxDims.y);
             int minDim = Math.max(minDims.x, minDims.y);
 
             if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1) {
                 Point realSize = new Point();
-                windowManager.getDefaultDisplay().getRealSize(realSize);
+                display.getRealSize(realSize);
                 maxDim = Math.max(realSize.x, realSize.y);
                 minDim = Math.min(realSize.x, realSize.y);
             }
@@ -331,8 +331,7 @@
         // this device
         int rotation = getRotationFromExif(res, resId);
         Point inSize = mCropView.getSourceDimensions();
-        Point outSize = getDefaultWallpaperSize(getResources(),
-                getWindowManager());
+        Point outSize = getDefaultWallpaperSize(getResources(), getDisplay());
         RectF crop = getMaxCropRect(
                 inSize.x, inSize.y, outSize.x, outSize.y, false);
         Runnable onEndCrop = new Runnable() {
@@ -359,14 +358,11 @@
         // Get the crop
         boolean ltr = mCropView.getLayoutDirection() == View.LAYOUT_DIRECTION_LTR;
 
-        Display d = getWindowManager().getDefaultDisplay();
-
-        Point displaySize = new Point();
-        d.getSize(displaySize);
-        boolean isPortrait = displaySize.x < displaySize.y;
+        Size windowSize = getWindowManager().getCurrentWindowMetrics().getSize();
+        boolean isPortrait = windowSize.getWidth() < windowSize.getHeight();
 
         Point defaultWallpaperSize = getDefaultWallpaperSize(getResources(),
-                getWindowManager());
+                getDisplay());
         // Get the crop
         RectF cropRect = mCropView.getCrop();
 
diff --git a/packages/overlays/Android.mk b/packages/overlays/Android.mk
index 8a3ac94..dcdb80b 100644
--- a/packages/overlays/Android.mk
+++ b/packages/overlays/Android.mk
@@ -26,7 +26,9 @@
 	AccentColorPurpleOverlay \
 	DisplayCutoutEmulationCornerOverlay \
 	DisplayCutoutEmulationDoubleOverlay \
+        DisplayCutoutEmulationHoleOverlay \
 	DisplayCutoutEmulationTallOverlay \
+	DisplayCutoutEmulationWaterfallOverlay \
 	FontNotoSerifSourceOverlay \
 	IconPackCircularAndroidOverlay \
 	IconPackCircularLauncherOverlay \
@@ -47,7 +49,6 @@
 	IconShapeSquircleOverlay \
 	IconShapeTeardropOverlay \
 	NavigationBarMode3ButtonOverlay \
-	NavigationBarMode2ButtonOverlay \
 	NavigationBarModeGesturalOverlay \
 	NavigationBarModeGesturalOverlayNarrowBack \
 	NavigationBarModeGesturalOverlayWideBack \
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/Android.mk b/packages/overlays/DisplayCutoutEmulationHoleOverlay/Android.mk
new file mode 100644
index 0000000..6d8fc24
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := DisplayCutoutEmulationHole
+
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := DisplayCutoutEmulationHoleOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/AndroidManifest.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..9fd82ab
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ 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.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.internal.display.cutout.emulation.hole"
+        android:versionCode="1"
+        android:versionName="1.0">
+    <overlay android:targetPackage="android"
+            android:category="com.android.internal.display_cutout_emulation"
+            android:priority="1"/>
+
+    <application android:label="@string/display_cutout_emulation_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-land/config.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-land/config.xml
new file mode 100644
index 0000000..2e971de
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values-land/config.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ 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
+  -->
+
+<resources>
+    <!-- Can't link to other dimensions here, but this should be status_bar_height_landscape -->
+    <dimen name="quick_qs_offset_height">28dp</dimen>
+    <!-- Total height of QQS in landscape; quick_qs_offset_height + 128 -->
+    <dimen name="quick_qs_total_height">156dp</dimen>
+</resources>
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml
new file mode 100644
index 0000000..9f558d0
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/config.xml
@@ -0,0 +1,61 @@
+<!--
+  ~ 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.
+  -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!-- The bounding path of the cutout region of the main built-in display.
+         Must either be empty if there is no cutout region, or a string that is parsable by
+         {@link android.util.PathParser}.
+
+         The path is assumed to be specified in display coordinates with pixel units and in
+         the display's native orientation, with the origin of the coordinate system at the
+         center top of the display.
+
+         To facilitate writing device-independent emulation overlays, the marker `@dp` can be
+         appended after the path string to interpret coordinates in dp instead of px units.
+         Note that a physical cutout should be configured in pixels for the best results.
+         -->
+    <!-- Display cutout configuration -->
+    <string translatable="false" name="config_mainBuiltInDisplayCutout">
+        M 128,83 A 44,44 0 0 1 84,127 44,44 0 0 1 40,83 44,44 0 0 1 84,39 44,44 0 0 1 128,83 Z
+        @left
+    </string>
+
+    <string translatable="false" name="config_mainBuiltInDisplayCutoutRectApproximation">
+        M 0.0,0.0
+        h 136
+        v 136
+        h -136
+        Z
+        @left
+    </string>
+
+    <!-- Whether the display cutout region of the main built-in display should be forced to
+         black in software (to avoid aliasing or emulate a cutout that is not physically existent).
+     -->
+    <bool name="config_fillMainBuiltInDisplayCutout">true</bool>
+
+    <!-- Height of the status bar -->
+    <dimen name="status_bar_height_portrait">136px</dimen>
+    <dimen name="status_bar_height_landscape">28dp</dimen>
+    <!-- Height of area above QQS where battery/time go (equal to status bar) -->
+    <dimen name="quick_qs_offset_height">136px</dimen>
+    <!-- Total height of QQS (quick_qs_offset_height + 128) -->
+    <dimen name="quick_qs_total_height">488px</dimen>
+
+</resources>
+
+
diff --git a/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/strings.xml b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/strings.xml
new file mode 100644
index 0000000..ab25695e
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationHoleOverlay/res/values/strings.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <string name="display_cutout_emulation_overlay">Punch Hole cutout</string>
+
+</resources>
+
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/Android.mk b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/Android.mk
new file mode 100644
index 0000000..b6b6dd1
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/Android.mk
@@ -0,0 +1,14 @@
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := DisplayCutoutEmulationWaterfall
+
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := DisplayCutoutEmulationWaterfallOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/AndroidManifest.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..2d5bb14
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/AndroidManifest.xml
@@ -0,0 +1,26 @@
+<!--
+  ~ 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.
+  -->
+
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+        package="com.android.internal.display.cutout.emulation.waterfall"
+        android:versionCode="1"
+        android:versionName="1.0">
+    <overlay android:targetPackage="android"
+        android:category="com.android.internal.display_cutout_emulation"
+        android:priority="1"/>
+
+    <application android:label="@string/display_cutout_emulation_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-land/config.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-land/config.xml
new file mode 100644
index 0000000..df2f3d1
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values-land/config.xml
@@ -0,0 +1,22 @@
+<!--
+  ~ 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.
+  -->
+
+<resources>
+    <!-- Can't link to other dimensions here, but this should be status_bar_height_landscape -->
+    <dimen name="quick_qs_offset_height">48dp</dimen>
+    <!-- Total height of QQS in landscape; quick_qs_offset_height + 128 -->
+    <dimen name="quick_qs_total_height">176dp</dimen>
+</resources>
\ No newline at end of file
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml
new file mode 100644
index 0000000..6f692c8
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/config.xml
@@ -0,0 +1,35 @@
+<!--
+  ~ 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.
+  -->
+
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <!-- Height of the status bar in portrait. The height should be
+         Max((status bar content height + waterfall top size), top cutout size) -->
+    <dimen name="status_bar_height_portrait">28dp</dimen>
+    <!-- Max((28 + 20), 0) = 48 -->
+    <dimen name="status_bar_height_landscape">48dp</dimen>
+    <!-- Height of area above QQS where battery/time go (equal to status bar height if > 48dp) -->
+    <dimen name="quick_qs_offset_height">28dp</dimen>
+    <!-- Total height of QQS (quick_qs_offset_height + 128) -->
+    <dimen name="quick_qs_total_height">156dp</dimen>
+
+    <dimen name="waterfall_display_left_edge_size">20dp</dimen>
+    <dimen name="waterfall_display_top_edge_size">0dp</dimen>
+    <dimen name="waterfall_display_right_edge_size">20dp</dimen>
+    <dimen name="waterfall_display_bottom_edge_size">0dp</dimen>
+</resources>
+
+
diff --git a/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/strings.xml b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/strings.xml
new file mode 100644
index 0000000..ed073d0
--- /dev/null
+++ b/packages/overlays/DisplayCutoutEmulationWaterfallOverlay/res/values/strings.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+  ~ 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.
+  -->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+
+    <string name="display_cutout_emulation_overlay">Waterfall cutout</string>
+
+</resources>
\ No newline at end of file
diff --git a/packages/overlays/IconShapePebbleOverlay/Android.mk b/packages/overlays/IconShapePebbleOverlay/Android.mk
new file mode 100644
index 0000000..c163bb9
--- /dev/null
+++ b/packages/overlays/IconShapePebbleOverlay/Android.mk
@@ -0,0 +1,29 @@
+#
+#  Copyright 2020, The Android Open Source Project
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+LOCAL_PATH:= $(call my-dir)
+include $(CLEAR_VARS)
+
+LOCAL_RRO_THEME := IconShapePebble
+
+LOCAL_PRODUCT_MODULE := true
+
+LOCAL_RESOURCE_DIR := $(LOCAL_PATH)/res
+
+LOCAL_PACKAGE_NAME := IconShapePebbleOverlay
+LOCAL_SDK_VERSION := current
+
+include $(BUILD_RRO_PACKAGE)
diff --git a/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml
new file mode 100644
index 0000000..6842dde
--- /dev/null
+++ b/packages/overlays/IconShapePebbleOverlay/AndroidManifest.xml
@@ -0,0 +1,29 @@
+<!--
+/**
+ * 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.
+ */
+-->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.android.theme.icon.pebble"
+    android:versionCode="1"
+    android:versionName="1.0">
+<overlay
+        android:targetPackage="android"
+        android:targetName="IconShapeCustomization"
+        android:category="android.theme.customization.adaptive_icon_shape"
+        android:priority="1"/>
+
+    <application android:label="@string/icon_shape_pebble_overlay" android:hasCode="false"/>
+</manifest>
diff --git a/packages/overlays/IconShapePebbleOverlay/res/values/config.xml b/packages/overlays/IconShapePebbleOverlay/res/values/config.xml
new file mode 100644
index 0000000..2465fe0
--- /dev/null
+++ b/packages/overlays/IconShapePebbleOverlay/res/values/config.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+** Copyright 2019, 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.
+*/
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Specifies the path that is used by AdaptiveIconDrawable class to crop launcher icons. -->
+    <string name="config_icon_mask" translatable="false">"MM55,0 C25,0 0,25 0,50 0,78 28,100 55,100 85,100 100,85 100,58 100,30 86,0 55,0 Z"</string>
+    <!-- Flag indicating whether round icons should be parsed from the application manifest. -->
+    <bool name="config_useRoundIcon">false</bool>
+    <!-- Corner radius of system dialogs -->
+    <dimen name="config_dialogCornerRadius">8dp</dimen>
+    <!-- Corner radius for bottom sheet system dialogs -->
+    <dimen name="config_bottomDialogCornerRadius">16dp</dimen>
+
+</resources>
+
diff --git a/core/java/android/os/StatsDimensionsValue.aidl b/packages/overlays/IconShapePebbleOverlay/res/values/strings.xml
similarity index 65%
copy from core/java/android/os/StatsDimensionsValue.aidl
copy to packages/overlays/IconShapePebbleOverlay/res/values/strings.xml
index 81a14a4..aec4a82 100644
--- a/core/java/android/os/StatsDimensionsValue.aidl
+++ b/packages/overlays/IconShapePebbleOverlay/res/values/strings.xml
@@ -1,5 +1,7 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
 /**
- * Copyright (c) 2018, The Android Open Source Project
+ * Copyright (c) 2019, 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.
@@ -13,8 +15,9 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+-->
+<resources xmlns:xliff="urn:oasis:names:tc:xliff:document:1.2">
+    <!-- Heart icon overlay -->
+    <string name="icon_shape_pebble_overlay" translatable="false">Pebble</string>
 
-package android.os;
-
-/** @hide */
-parcelable StatsDimensionsValue cpp_header "android/os/StatsDimensionsValue.h";
\ No newline at end of file
+</resources>
diff --git a/packages/services/PacProcessor/jni/Android.bp b/packages/services/PacProcessor/jni/Android.bp
index ab21a76..351e92c 100644
--- a/packages/services/PacProcessor/jni/Android.bp
+++ b/packages/services/PacProcessor/jni/Android.bp
@@ -37,7 +37,8 @@
         "-Wunused",
         "-Wunreachable-code",
     ],
-    sanitize: {
-        cfi: true,
-    },
+    // Re-enable when b/145990493 is fixed
+    // sanitize: {
+    //    cfi: true,
+    // },
 }
diff --git a/packages/services/PacProcessor/src/com/android/pacprocessor/LibpacInterface.java b/packages/services/PacProcessor/src/com/android/pacprocessor/LibpacInterface.java
new file mode 100644
index 0000000..103ef781
--- /dev/null
+++ b/packages/services/PacProcessor/src/com/android/pacprocessor/LibpacInterface.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.pacprocessor;
+
+/**
+ * Common interface for both Android's and WebView's implementation of PAC processor.
+ *
+ * @hide
+ */
+interface LibpacInterface {
+    default boolean startPacSupport() {
+        return true;
+    }
+
+    default boolean stopPacSupport() {
+        return true;
+    }
+
+    boolean setCurrentProxyScript(String script);
+    String makeProxyRequest(String url, String host);
+}
diff --git a/packages/services/PacProcessor/src/com/android/pacprocessor/PacNative.java b/packages/services/PacProcessor/src/com/android/pacprocessor/PacNative.java
index c67fe9f..9c0cfc2 100644
--- a/packages/services/PacProcessor/src/com/android/pacprocessor/PacNative.java
+++ b/packages/services/PacProcessor/src/com/android/pacprocessor/PacNative.java
@@ -20,9 +20,11 @@
 /**
  * @hide
  */
-public class PacNative {
+public class PacNative implements LibpacInterface {
     private static final String TAG = "PacProxy";
 
+    private static final PacNative sInstance = new PacNative();
+
     private String mCurrentPac;
 
     private boolean mIsActive;
@@ -39,38 +41,46 @@
         System.loadLibrary("jni_pacprocessor");
     }
 
-    PacNative() {
+    private PacNative() {
 
     }
 
+    public static PacNative getInstance() {
+        return sInstance;
+    }
+
+    @Override
     public synchronized boolean startPacSupport() {
         if (createV8ParserNativeLocked()) {
             Log.e(TAG, "Unable to Create v8 Proxy Parser.");
-            return true;
+            return false;
         }
         mIsActive = true;
-        return false;
+        return true;
     }
 
+    @Override
     public synchronized boolean stopPacSupport() {
         if (mIsActive) {
             if (destroyV8ParserNativeLocked()) {
                 Log.e(TAG, "Unable to Destroy v8 Proxy Parser.");
-                return true;
+                return false;
             }
             mIsActive = false;
         }
-        return false;
+        return true;
     }
 
+    @Override
     public synchronized boolean setCurrentProxyScript(String script) {
         if (setProxyScriptNativeLocked(script)) {
             Log.e(TAG, "Unable to parse proxy script.");
-            return true;
+            return false;
         }
-        return false;
+        return true;
     }
 
+    @Override
     public synchronized String makeProxyRequest(String url, String host) {
         String ret = makeProxyRequestNativeLocked(url, host);
         if ((ret == null) || (ret.length() == 0)) {
diff --git a/packages/services/PacProcessor/src/com/android/pacprocessor/PacService.java b/packages/services/PacProcessor/src/com/android/pacprocessor/PacService.java
index 74391eb..7aea721 100644
--- a/packages/services/PacProcessor/src/com/android/pacprocessor/PacService.java
+++ b/packages/services/PacProcessor/src/com/android/pacprocessor/PacService.java
@@ -17,6 +17,7 @@
 
 import android.app.Service;
 import android.content.Intent;
+import android.content.res.Resources;
 import android.os.Binder;
 import android.os.IBinder;
 import android.os.Process;
@@ -30,45 +31,33 @@
 
 public class PacService extends Service {
     private static final String TAG = "PacService";
+    private static final boolean sUseWebViewPacProcessor = Resources.getSystem().getBoolean(
+            com.android.internal.R.bool.config_useWebViewPacProcessor);
 
-    private PacNative mPacNative;
-    private ProxyServiceStub mStub;
+    private final LibpacInterface mLibpac = sUseWebViewPacProcessor
+            ? PacWebView.getInstance()
+            : PacNative.getInstance();
+
+    private ProxyServiceStub mStub = new ProxyServiceStub();
 
     @Override
     public void onCreate() {
         super.onCreate();
-        if (mPacNative == null) {
-            mPacNative = new PacNative();
-            mStub = new ProxyServiceStub(mPacNative);
-        }
+        mLibpac.startPacSupport();
     }
 
     @Override
     public void onDestroy() {
+        mLibpac.stopPacSupport();
         super.onDestroy();
-        if (mPacNative != null) {
-            mPacNative.stopPacSupport();
-            mPacNative = null;
-            mStub = null;
-        }
     }
 
     @Override
     public IBinder onBind(Intent intent) {
-        if (mPacNative == null) {
-            mPacNative = new PacNative();
-            mStub = new ProxyServiceStub(mPacNative);
-        }
         return mStub;
     }
 
-    private static class ProxyServiceStub extends IProxyService.Stub {
-        private final PacNative mPacNative;
-
-        public ProxyServiceStub(PacNative pacNative) {
-            mPacNative = pacNative;
-        }
-
+    private class ProxyServiceStub extends IProxyService.Stub {
         @Override
         public String resolvePacFile(String host, String url) throws RemoteException {
             try {
@@ -85,7 +74,7 @@
                         throw new IllegalArgumentException("Invalid host was passed");
                     }
                 }
-                return mPacNative.makeProxyRequest(url, host);
+                return mLibpac.makeProxyRequest(url, host);
             } catch (MalformedURLException e) {
                 throw new IllegalArgumentException("Invalid URL was passed");
             }
@@ -97,25 +86,17 @@
                 Log.e(TAG, "Only system user is allowed to call setPacFile");
                 throw new SecurityException();
             }
-            mPacNative.setCurrentProxyScript(script);
+            mLibpac.setCurrentProxyScript(script);
         }
 
         @Override
         public void startPacSystem() throws RemoteException {
-            if (Binder.getCallingUid() != Process.SYSTEM_UID) {
-                Log.e(TAG, "Only system user is allowed to call startPacSystem");
-                throw new SecurityException();
-            }
-            mPacNative.startPacSupport();
+            //TODO: remove
         }
 
         @Override
         public void stopPacSystem() throws RemoteException {
-            if (Binder.getCallingUid() != Process.SYSTEM_UID) {
-                Log.e(TAG, "Only system user is allowed to call stopPacSystem");
-                throw new SecurityException();
-            }
-            mPacNative.stopPacSupport();
+            //TODO: remove
         }
     }
 }
diff --git a/packages/services/PacProcessor/src/com/android/pacprocessor/PacWebView.java b/packages/services/PacProcessor/src/com/android/pacprocessor/PacWebView.java
new file mode 100644
index 0000000..4dd00f1
--- /dev/null
+++ b/packages/services/PacProcessor/src/com/android/pacprocessor/PacWebView.java
@@ -0,0 +1,48 @@
+/*
+ * 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.pacprocessor;
+
+import android.util.Log;
+import android.webkit.PacProcessor;
+
+/**
+ * @hide
+ */
+public class PacWebView implements LibpacInterface {
+    private static final String TAG = "PacWebView";
+
+    private static final PacWebView sInstance = new PacWebView();
+    private PacProcessor mProcessor = PacProcessor.getInstance();
+
+    public static PacWebView getInstance() {
+        return sInstance;
+    }
+
+    @Override
+    public synchronized boolean setCurrentProxyScript(String script) {
+        if (!mProcessor.setProxyScript(script)) {
+            Log.e(TAG, "Unable to parse proxy script.");
+            return false;
+        }
+        return true;
+    }
+
+    @Override
+    public synchronized String makeProxyRequest(String url, String host) {
+        return mProcessor.findProxyForUrl(url);
+    }
+}
diff --git a/proto/src/system_messages.proto b/proto/src/system_messages.proto
index 54b4201..63dd99e 100644
--- a/proto/src/system_messages.proto
+++ b/proto/src/system_messages.proto
@@ -244,6 +244,10 @@
     // Package: android
     NOTE_SOFTAP_AUTO_DISABLED = 58;
 
+    // Notify the user that their admin has changed location settings.
+    // Package: android
+    NOTE_LOCATION_CHANGED = 59;
+
     // ADD_NEW_IDS_ABOVE_THIS_LINE
     // Legacy IDs with arbitrary values appear below
     // Legacy IDs existed as stable non-conflicting constants prior to the O release
diff --git a/services/Android.bp b/services/Android.bp
index a582453..416f448 100644
--- a/services/Android.bp
+++ b/services/Android.bp
@@ -30,6 +30,7 @@
         ":services.usb-sources",
         ":services.voiceinteraction-sources",
         ":service-permission-sources",
+        ":service-statsd-sources",
     ],
     visibility: ["//visibility:private"],
 }
@@ -75,7 +76,7 @@
 
     libs: [
         "android.hidl.manager-V1.0-java",
-        "framework-tethering"
+        "framework-tethering-stubs",
     ],
 
     plugins: [
@@ -114,7 +115,7 @@
     srcs: [":services-all-sources"],
     installable: false,
     // TODO: remove the --hide options below
-    args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.MODULE_LIBRARIES,process=android.annotation.SystemApi.Process.SYSTEM_SERVER\\)" +
+    args: " --show-annotation android.annotation.SystemApi\\(client=android.annotation.SystemApi.Client.SYSTEM_SERVER\\)" +
         " --hide-annotation android.annotation.Hide" +
         " --hide-package com.google.android.startop.iorap" +
         " --hide ReferencesHidden" +
diff --git a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
index a5877cc..75ec4b0 100644
--- a/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AbstractAccessibilityServiceConnection.java
@@ -16,6 +16,8 @@
 
 package com.android.server.accessibility;
 
+import static android.accessibilityservice.AccessibilityService.KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE_ID;
+import static android.accessibilityservice.AccessibilityService.KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER;
 import static android.accessibilityservice.AccessibilityServiceInfo.DEFAULT;
 import static android.view.WindowManager.LayoutParams.TYPE_ACCESSIBILITY_OVERLAY;
 import static android.view.accessibility.AccessibilityNodeInfo.ACTION_ACCESSIBILITY_FOCUS;
@@ -36,10 +38,11 @@
 import android.content.ServiceConnection;
 import android.content.pm.PackageManager;
 import android.content.pm.ParceledListSlice;
-import android.graphics.Bitmap;
+import android.graphics.GraphicBuffer;
 import android.graphics.Point;
 import android.graphics.Rect;
 import android.graphics.Region;
+import android.hardware.HardwareBuffer;
 import android.hardware.display.DisplayManager;
 import android.hardware.display.DisplayManagerGlobal;
 import android.os.Binder;
@@ -50,6 +53,7 @@
 import android.os.Looper;
 import android.os.Message;
 import android.os.PowerManager;
+import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.SystemClock;
@@ -71,6 +75,7 @@
 import com.android.internal.compat.IPlatformCompat;
 import com.android.internal.os.SomeArgs;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.LocalServices;
 import com.android.server.accessibility.AccessibilityWindowManager.RemoteAccessibilityConnection;
 import com.android.server.wm.ActivityTaskManagerInternal;
@@ -106,6 +111,8 @@
     private final PowerManager mPowerManager;
     private final IPlatformCompat mIPlatformCompat;
 
+    private final Handler mMainHandler;
+
     // Handler for scheduling method invocations on the main thread.
     public final InvocationHandler mInvocationHandler;
 
@@ -238,6 +245,7 @@
         mSecurityPolicy = securityPolicy;
         mSystemActionPerformer = systemActionPerfomer;
         mSystemSupport = systemSupport;
+        mMainHandler = mainHandler;
         mInvocationHandler = new InvocationHandler(mainHandler.getLooper());
         mA11yWindowManager = a11yWindowManager;
         mDisplayManager = (DisplayManager) context.getSystemService(Context.DISPLAY_SERVICE);
@@ -959,52 +967,72 @@
         mInvocationHandler.setSoftKeyboardCallbackEnabled(enabled);
     }
 
-    @Nullable
     @Override
-    public Bitmap takeScreenshot(int displayId) {
+    public void takeScreenshot(int displayId, RemoteCallback callback) {
         synchronized (mLock) {
             if (!hasRightsToCurrentUserLocked()) {
-                return null;
+                sendScreenshotResult(true, null, callback);
+                return;
             }
 
             if (!mSecurityPolicy.canTakeScreenshotLocked(this)) {
-                return null;
+                sendScreenshotResult(true, null, callback);
+                throw new SecurityException("Services don't have the capability of taking"
+                        + " the screenshot.");
             }
         }
 
         if (!mSecurityPolicy.checkAccessibilityAccess(this)) {
-            return null;
+            sendScreenshotResult(true, null, callback);
+            return;
         }
 
         final Display display = DisplayManagerGlobal.getInstance()
                 .getRealDisplay(displayId);
         if (display == null) {
-            return null;
+            sendScreenshotResult(true, null, callback);
+            return;
         }
-        final Point displaySize = new Point();
-        display.getRealSize(displaySize);
 
-        final int rotation = display.getRotation();
-        Bitmap screenShot = null;
+        sendScreenshotResult(false, display, callback);
+    }
 
+    private void sendScreenshotResult(boolean noResult, Display display, RemoteCallback callback) {
+        final boolean noScreenshot = noResult;
         final long identity = Binder.clearCallingIdentity();
         try {
-            final Rect crop = new Rect(0, 0, displaySize.x, displaySize.y);
-            // TODO (b/145893483): calling new API with the display as a parameter
-            // when surface control supported.
-            screenShot = SurfaceControl.screenshot(crop, displaySize.x, displaySize.y,
-                    rotation);
-            if (screenShot != null) {
-                // Optimization for telling the bitmap that all of the pixels are known to be
-                // opaque (false). This is meant as a drawing hint, as in some cases a bitmap
-                // that is known to be opaque can take a faster drawing case than one that may
-                // have non-opaque per-pixel alpha values.
-                screenShot.setHasAlpha(false);
-            }
+            mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> {
+                if (noScreenshot) {
+                    callback.sendResult(null);
+                    return;
+                }
+                final Point displaySize = new Point();
+                // TODO (b/145893483): calling new API with the display as a parameter
+                // when surface control supported.
+                final IBinder token = SurfaceControl.getInternalDisplayToken();
+                final Rect crop = new Rect(0, 0, displaySize.x, displaySize.y);
+                final int rotation = display.getRotation();
+                display.getRealSize(displaySize);
+
+                final SurfaceControl.ScreenshotGraphicBuffer screenshotBuffer =
+                        SurfaceControl.screenshotToBufferWithSecureLayersUnsafe(token, crop,
+                                displaySize.x, displaySize.y, false,
+                                rotation);
+                final GraphicBuffer graphicBuffer = screenshotBuffer.getGraphicBuffer();
+                final HardwareBuffer hardwareBuffer =
+                        HardwareBuffer.createFromGraphicBuffer(graphicBuffer);
+                final int colorSpaceId = screenshotBuffer.getColorSpace().getId();
+
+                // Send back the result.
+                final Bundle payload = new Bundle();
+                payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT_HARDWAREBUFFER,
+                        hardwareBuffer);
+                payload.putInt(KEY_ACCESSIBILITY_SCREENSHOT_COLORSPACE_ID, colorSpaceId);
+                callback.sendResult(payload);
+            }, null).recycleOnUse());
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
-        return screenShot;
     }
 
     @Override
@@ -1100,8 +1128,7 @@
     @Override
     public int getWindowIdForLeashToken(@NonNull IBinder token) {
         synchronized (mLock) {
-            // TODO: Add a method to lookup window ID by given leash token.
-            return -1;
+            return mA11yWindowManager.getWindowIdLocked(token);
         }
     }
 
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
index 61e1adf..ba29bc8 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityManagerService.java
@@ -664,7 +664,8 @@
      */
     @Override
     public void registerSystemAction(RemoteAction action, int actionId) {
-        mSecurityPolicy.enforceCallingPermission(Manifest.permission.MANAGE_ACCESSIBILITY,
+        mSecurityPolicy.enforceCallerIsRecentsOrHasPermission(
+                Manifest.permission.MANAGE_ACCESSIBILITY,
                 FUNCTION_REGISTER_SYSTEM_ACTION);
         mSystemActionPerformer.registerSystemAction(actionId, action);
     }
@@ -676,7 +677,8 @@
      */
     @Override
     public void unregisterSystemAction(int actionId) {
-        mSecurityPolicy.enforceCallingPermission(Manifest.permission.MANAGE_ACCESSIBILITY,
+        mSecurityPolicy.enforceCallerIsRecentsOrHasPermission(
+                Manifest.permission.MANAGE_ACCESSIBILITY,
                 FUNCTION_UNREGISTER_SYSTEM_ACTION);
         mSystemActionPerformer.unregisterSystemAction(actionId);
     }
@@ -759,11 +761,11 @@
     }
 
     @Override
-    public int addAccessibilityInteractionConnection(IWindow windowToken,
+    public int addAccessibilityInteractionConnection(IWindow windowToken, IBinder leashToken,
             IAccessibilityInteractionConnection connection, String packageName,
             int userId) throws RemoteException {
         return mA11yWindowManager.addAccessibilityInteractionConnection(
-                windowToken, connection, packageName, userId);
+                windowToken, leashToken, connection, packageName, userId);
     }
 
     @Override
@@ -2641,6 +2643,20 @@
     }
 
     @Override
+    public void associateEmbeddedHierarchy(@NonNull IBinder host, @NonNull IBinder embedded) {
+        synchronized (mLock) {
+            mA11yWindowManager.associateEmbeddedHierarchyLocked(host, embedded);
+        }
+    }
+
+    @Override
+    public void disassociateEmbeddedHierarchy(@NonNull IBinder token) {
+        synchronized (mLock) {
+            mA11yWindowManager.disassociateEmbeddedHierarchyLocked(token);
+        }
+    }
+
+    @Override
     public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
         if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, pw)) return;
         synchronized (mLock) {
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
index 7a42cd1..d98e31e 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilitySecurityPolicy.java
@@ -38,6 +38,8 @@
 import android.view.accessibility.AccessibilityEvent;
 
 import com.android.internal.util.ArrayUtils;
+import com.android.server.LocalServices;
+import com.android.server.wm.ActivityTaskManagerInternal;
 
 import libcore.util.EmptyArray;
 
@@ -86,6 +88,7 @@
 
     private final AccessibilityUserManager mAccessibilityUserManager;
     private AccessibilityWindowManager mAccessibilityWindowManager;
+    private final ActivityTaskManagerInternal mAtmInternal;
 
     /**
      * Constructor for AccessibilityManagerService.
@@ -97,6 +100,7 @@
         mPackageManager = mContext.getPackageManager();
         mUserManager = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
         mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+        mAtmInternal = LocalServices.getService(ActivityTaskManagerInternal.class);
     }
 
     /**
@@ -439,8 +443,8 @@
                 return false;
             }
         }
-        // TODO: Check parent windowId if the giving windowId is from embedded view hierarchy.
-        if (windowId == mAccessibilityWindowManager.getActiveWindowId(userId)) {
+        if (mAccessibilityWindowManager.resolveParentWindowIdLocked(windowId)
+                == mAccessibilityWindowManager.getActiveWindowId(userId)) {
             return true;
         }
         return mAccessibilityWindowManager.findA11yWindowInfoByIdLocked(windowId) != null;
@@ -563,4 +567,13 @@
                     + permission);
         }
     }
+
+    /**
+     * Enforcing permission check to IPC caller or grant it if it's recents.
+     *
+     * @param permission The permission to check
+     */
+    public void enforceCallerIsRecentsOrHasPermission(@NonNull String permission, String func) {
+        mAtmInternal.enforceCallerIsRecentsOrHasPermission(permission, func);
+    }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
index 25911a7..edb4445 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityServiceConnection.java
@@ -16,8 +16,6 @@
 
 package com.android.server.accessibility;
 
-import static android.accessibilityservice.AccessibilityService.KEY_ACCESSIBILITY_SCREENSHOT;
-
 import static com.android.internal.util.function.pooled.PooledLambda.obtainMessage;
 
 import android.Manifest;
@@ -27,20 +25,16 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ParceledListSlice;
-import android.graphics.Bitmap;
 import android.os.Binder;
-import android.os.Bundle;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Process;
-import android.os.RemoteCallback;
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.util.Slog;
 import android.view.Display;
 
-import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.inputmethod.InputMethodManagerInternal;
 import com.android.server.wm.ActivityTaskManagerInternal;
 import com.android.server.wm.WindowManagerInternal;
@@ -393,15 +387,4 @@
             }
         }
     }
-
-    @Override
-    public void takeScreenshotWithCallback(int displayId, RemoteCallback callback) {
-        mMainHandler.post(PooledLambda.obtainRunnable((nonArg) -> {
-            final Bitmap screenshot = super.takeScreenshot(displayId);
-            // Send back the result.
-            final Bundle payload = new Bundle();
-            payload.putParcelable(KEY_ACCESSIBILITY_SCREENSHOT, screenshot);
-            callback.sendResult(payload);
-        }, null).recycleOnUse());
-    }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
index a6041e0..8c00581 100644
--- a/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/AccessibilityWindowManager.java
@@ -31,6 +31,7 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.text.TextUtils;
+import android.util.ArrayMap;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.view.Display;
@@ -100,6 +101,19 @@
             new SparseArray<>();
 
     /**
+     * Map of host view and embedded hierarchy, mapping from leash token of its ViewRootImpl.
+     * The key is the token from embedded hierarchy, and the value is the token from its host.
+     */
+    private final ArrayMap<IBinder, IBinder> mHostEmbeddedMap = new ArrayMap<>();
+
+    /**
+     * Map of window id and view hierarchy.
+     * The key is the window id when the ViewRootImpl register to accessibility, and the value is
+     * its leash token.
+     */
+    private final SparseArray<IBinder> mWindowIdMap = new SparseArray<>();
+
+    /**
      * This class implements {@link WindowManagerInternal.WindowsForAccessibilityCallback} to
      * receive {@link WindowInfo}s from window manager when there's an accessibility change in
      * window and holds window lists information per display.
@@ -913,19 +927,21 @@
      * Adds accessibility interaction connection according to given window token, package name and
      * window token.
      *
-     * @param windowToken The window token of accessibility interaction connection
+     * @param window The window token of accessibility interaction connection
+     * @param leashToken The leash token of accessibility interaction connection
      * @param connection The accessibility interaction connection
      * @param packageName The package name
      * @param userId The userId
      * @return The windowId of added connection
      * @throws RemoteException
      */
-    public int addAccessibilityInteractionConnection(@NonNull IWindow windowToken,
-            @NonNull IAccessibilityInteractionConnection connection, @NonNull String packageName,
-            int userId) throws RemoteException {
+    public int addAccessibilityInteractionConnection(@NonNull IWindow window,
+            @NonNull IBinder leashToken, @NonNull IAccessibilityInteractionConnection connection,
+            @NonNull String packageName, int userId) throws RemoteException {
         final int windowId;
         boolean shouldComputeWindows = false;
-        final int displayId = mWindowManagerInternal.getDisplayIdForWindow(windowToken.asBinder());
+        final IBinder token = window.asBinder();
+        final int displayId = mWindowManagerInternal.getDisplayIdForWindow(token);
         synchronized (mLock) {
             // We treat calls from a profile as if made by its parent as profiles
             // share the accessibility state of the parent. The call below
@@ -947,35 +963,33 @@
                         windowId, connection, packageName, resolvedUid, UserHandle.USER_ALL);
                 wrapper.linkToDeath();
                 mGlobalInteractionConnections.put(windowId, wrapper);
-                mGlobalWindowTokens.put(windowId, windowToken.asBinder());
+                mGlobalWindowTokens.put(windowId, token);
                 if (DEBUG) {
                     Slog.i(LOG_TAG, "Added global connection for pid:" + Binder.getCallingPid()
-                            + " with windowId: " + windowId + " and  token: "
-                            + windowToken.asBinder());
+                            + " with windowId: " + windowId + " and token: " + token);
                 }
             } else {
                 RemoteAccessibilityConnection wrapper = new RemoteAccessibilityConnection(
                         windowId, connection, packageName, resolvedUid, resolvedUserId);
                 wrapper.linkToDeath();
                 getInteractionConnectionsForUserLocked(resolvedUserId).put(windowId, wrapper);
-                getWindowTokensForUserLocked(resolvedUserId).put(windowId, windowToken.asBinder());
+                getWindowTokensForUserLocked(resolvedUserId).put(windowId, token);
                 if (DEBUG) {
                     Slog.i(LOG_TAG, "Added user connection for pid:" + Binder.getCallingPid()
-                            + " with windowId: " + windowId
-                            + " and  token: " + windowToken.asBinder());
+                            + " with windowId: " + windowId + " and  token: " + token);
                 }
             }
 
             if (isTrackingWindowsLocked(displayId)) {
                 shouldComputeWindows = true;
             }
+            registerIdLocked(leashToken, windowId);
         }
         if (shouldComputeWindows) {
             mWindowManagerInternal.computeWindowsForAccessibility(displayId);
         }
 
-        mWindowManagerInternal.setAccessibilityIdToSurfaceMetadata(
-                windowToken.asBinder(), windowId);
+        mWindowManagerInternal.setAccessibilityIdToSurfaceMetadata(token, windowId);
         return windowId;
     }
 
@@ -1098,6 +1112,7 @@
      * Invoked when accessibility interaction connection of window is removed.
      *
      * @param windowId Removed windowId
+     * @param binder Removed window token
      */
     private void onAccessibilityInteractionConnectionRemovedLocked(
             int windowId, @Nullable IBinder binder) {
@@ -1110,6 +1125,7 @@
             mWindowManagerInternal.setAccessibilityIdToSurfaceMetadata(
                     binder, AccessibilityWindowInfo.UNDEFINED_WINDOW_ID);
         }
+        unregisterIdLocked(windowId);
     }
 
     /**
@@ -1132,7 +1148,7 @@
      * Returns the userId that owns the given window token, {@link UserHandle#USER_NULL}
      * if not found.
      *
-     * @param windowToken The winodw token
+     * @param windowToken The window token
      * @return The userId
      */
     public int getWindowOwnerUserId(@NonNull IBinder windowToken) {
@@ -1161,6 +1177,50 @@
     }
 
     /**
+     * Establish the relationship between the host and the embedded view hierarchy.
+     *
+     * @param host The token of host hierarchy
+     * @param embedded The token of the embedded hierarchy
+     */
+    public void associateEmbeddedHierarchyLocked(@NonNull IBinder host, @NonNull IBinder embedded) {
+        // Use embedded window as key, since one host window may have multiple embedded windows.
+        associateLocked(embedded, host);
+    }
+
+    /**
+     * Clear the relationship by given token.
+     *
+     * @param token The token
+     */
+    public void disassociateEmbeddedHierarchyLocked(@NonNull IBinder token) {
+        disassociateLocked(token);
+    }
+
+    /**
+     * Gets the parent windowId of the window according to the specified windowId.
+     *
+     * @param windowId The windowId to check
+     * @return The windowId of the parent window, or self if no parent exists
+     */
+    public int resolveParentWindowIdLocked(int windowId) {
+        final IBinder token = getTokenLocked(windowId);
+        if (token == null) {
+            return windowId;
+        }
+        final IBinder resolvedToken = resolveTopParentTokenLocked(token);
+        final int resolvedWindowId = getWindowIdLocked(resolvedToken);
+        return resolvedWindowId != -1 ? resolvedWindowId : windowId;
+    }
+
+    private IBinder resolveTopParentTokenLocked(IBinder token) {
+        final IBinder hostToken = getHostTokenLocked(token);
+        if (hostToken == null) {
+            return token;
+        }
+        return resolveTopParentTokenLocked(hostToken);
+    }
+
+    /**
      * Computes partial interactive region of given windowId.
      *
      * @param windowId The windowId
@@ -1357,6 +1417,7 @@
      */
     @Nullable
     public AccessibilityWindowInfo findA11yWindowInfoByIdLocked(int windowId) {
+        windowId = resolveParentWindowIdLocked(windowId);
         final DisplayWindowsObserver observer = getDisplayWindowObserverByWindowIdLocked(windowId);
         if (observer != null) {
             return observer.findA11yWindowInfoByIdLocked(windowId);
@@ -1584,6 +1645,88 @@
     }
 
     /**
+     * Associate the token of the embedded view hierarchy to the host view hierarchy.
+     *
+     * @param embedded The leash token from the view root of embedded hierarchy
+     * @param host The leash token from the view root of host hierarchy
+     */
+    void associateLocked(IBinder embedded, IBinder host) {
+        mHostEmbeddedMap.put(embedded, host);
+    }
+
+    /**
+     * Clear the relationship of given token.
+     *
+     * @param token The leash token
+     */
+    void disassociateLocked(IBinder token) {
+        mHostEmbeddedMap.remove(token);
+        for (int i = mHostEmbeddedMap.size() - 1; i >= 0; i--) {
+            if (mHostEmbeddedMap.valueAt(i).equals(token)) {
+                mHostEmbeddedMap.removeAt(i);
+            }
+        }
+    }
+
+    /**
+     * Register the leash token with its windowId.
+     *
+     * @param token The token.
+     * @param windowId The windowID.
+     */
+    void registerIdLocked(IBinder token, int windowId) {
+        mWindowIdMap.put(windowId, token);
+    }
+
+    /**
+     * Unregister the windowId and also disassociate its token.
+     *
+     * @param windowId The windowID
+     */
+    void unregisterIdLocked(int windowId) {
+        final IBinder token = mWindowIdMap.get(windowId);
+        if (token == null) {
+            return;
+        }
+        disassociateLocked(token);
+        mWindowIdMap.remove(windowId);
+    }
+
+    /**
+     * Get the leash token by given windowID.
+     *
+     * @param windowId The windowID.
+     * @return The token, or {@code NULL} if this windowID doesn't exist
+     */
+    IBinder getTokenLocked(int windowId) {
+        return mWindowIdMap.get(windowId);
+    }
+
+    /**
+     * Get the windowId by given leash token.
+     *
+     * @param token The token
+     * @return The windowID, or -1 if the token doesn't exist
+     */
+    int getWindowIdLocked(IBinder token) {
+        final int index = mWindowIdMap.indexOfValue(token);
+        if (index == -1) {
+            return index;
+        }
+        return mWindowIdMap.keyAt(index);
+    }
+
+    /**
+     * Get the leash token of the host hierarchy by given token.
+     *
+     * @param token The token
+     * @return The token of host hierarchy, or {@code NULL} if no host exists
+     */
+    IBinder getHostTokenLocked(IBinder token) {
+        return mHostEmbeddedMap.get(token);
+    }
+
+    /**
      * Dumps all {@link AccessibilityWindowInfo}s here.
      */
     public void dump(FileDescriptor fd, final PrintWriter pw, String[] args) {
diff --git a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
index 5d9af26..d1c3a02 100644
--- a/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
+++ b/services/accessibility/java/com/android/server/accessibility/UiAutomationManager.java
@@ -328,6 +328,6 @@
         public void onFingerprintGesture(int gesture) {}
 
         @Override
-        public void takeScreenshotWithCallback(int displayId, RemoteCallback callback) {}
+        public void takeScreenshot(int displayId, RemoteCallback callback) {}
     }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/EventDispatcher.java b/services/accessibility/java/com/android/server/accessibility/gestures/EventDispatcher.java
index 5ac3b69..667364c9 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/EventDispatcher.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/EventDispatcher.java
@@ -301,7 +301,7 @@
      * @param policyFlags The policy flags associated with the event.
      */
     void sendUpForInjectedDownPointers(MotionEvent prototype, int policyFlags) {
-        int pointerIdBits = 0;
+        int pointerIdBits = prototype.getPointerIdBits();
         final int pointerCount = prototype.getPointerCount();
         for (int i = 0; i < pointerCount; i++) {
             final int pointerId = prototype.getPointerId(i);
@@ -309,10 +309,10 @@
             if (!isInjectedPointerDown(pointerId)) {
                 continue;
             }
-            pointerIdBits |= (1 << pointerId);
-            final int action = computeInjectionAction(MotionEvent.ACTION_UP, i);
+            final int action = computeInjectionAction(MotionEvent.ACTION_POINTER_UP, i);
             sendMotionEvent(
                     prototype, action, mState.getLastReceivedEvent(), pointerIdBits, policyFlags);
+            pointerIdBits &= ~(1 << pointerId);
         }
     }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java
index 1fe162c..b74be7e 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/GestureManifold.java
@@ -18,10 +18,25 @@
 
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_SWIPE_UP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_2_FINGER_TRIPLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_SWIPE_UP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_3_FINGER_TRIPLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_DOUBLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SINGLE_TAP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_DOWN;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_LEFT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_RIGHT;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_SWIPE_UP;
+import static android.accessibilityservice.AccessibilityService.GESTURE_4_FINGER_TRIPLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP;
 import static android.accessibilityservice.AccessibilityService.GESTURE_DOUBLE_TAP_AND_HOLD;
 import static android.accessibilityservice.AccessibilityService.GESTURE_SWIPE_DOWN;
@@ -110,6 +125,7 @@
         mGestures.add(new Swipe(context, UP, DOWN, GESTURE_SWIPE_UP_AND_DOWN, this));
         mGestures.add(new Swipe(context, UP, LEFT, GESTURE_SWIPE_UP_AND_LEFT, this));
         mGestures.add(new Swipe(context, UP, RIGHT, GESTURE_SWIPE_UP_AND_RIGHT, this));
+        // Set up multi-finger gestures to be enabled later.
         // Two-finger taps.
         mMultiFingerGestures.add(
                 new MultiFingerMultiTap(mContext, 2, 1, GESTURE_2_FINGER_SINGLE_TAP, this));
@@ -124,6 +140,40 @@
                 new MultiFingerMultiTap(mContext, 3, 2, GESTURE_3_FINGER_DOUBLE_TAP, this));
         mMultiFingerGestures.add(
                 new MultiFingerMultiTap(mContext, 3, 3, GESTURE_3_FINGER_TRIPLE_TAP, this));
+        // Four-finger taps.
+        mMultiFingerGestures.add(
+                new MultiFingerMultiTap(mContext, 4, 1, GESTURE_4_FINGER_SINGLE_TAP, this));
+        mMultiFingerGestures.add(
+                new MultiFingerMultiTap(mContext, 4, 2, GESTURE_4_FINGER_DOUBLE_TAP, this));
+        mMultiFingerGestures.add(
+                new MultiFingerMultiTap(mContext, 4, 3, GESTURE_4_FINGER_TRIPLE_TAP, this));
+        // Two-finger swipes.
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 2, DOWN, GESTURE_2_FINGER_SWIPE_DOWN, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 2, LEFT, GESTURE_2_FINGER_SWIPE_LEFT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 2, RIGHT, GESTURE_2_FINGER_SWIPE_RIGHT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 2, UP, GESTURE_2_FINGER_SWIPE_UP, this));
+        // Three-finger swipes.
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 3, DOWN, GESTURE_3_FINGER_SWIPE_DOWN, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 3, LEFT, GESTURE_3_FINGER_SWIPE_LEFT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 3, RIGHT, GESTURE_3_FINGER_SWIPE_RIGHT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 3, UP, GESTURE_3_FINGER_SWIPE_UP, this));
+        // Four-finger swipes.
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 4, DOWN, GESTURE_4_FINGER_SWIPE_DOWN, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 4, LEFT, GESTURE_4_FINGER_SWIPE_LEFT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 4, RIGHT, GESTURE_4_FINGER_SWIPE_RIGHT, this));
+        mMultiFingerGestures.add(
+                new MultiFingerSwipe(context, 4, UP, GESTURE_4_FINGER_SWIPE_UP, this));
     }
 
     /**
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/GestureUtils.java b/services/accessibility/java/com/android/server/accessibility/gestures/GestureUtils.java
index 0f5dd08..ac67480 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/GestureUtils.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/GestureUtils.java
@@ -8,6 +8,9 @@
  */
 public final class GestureUtils {
 
+    public static int MM_PER_CM = 10;
+    public static float CM_PER_INCH = 2.54f;
+
     private GestureUtils() {
         /* cannot be instantiated */
     }
@@ -85,4 +88,12 @@
 
         return true;
     }
+
+    /**
+     * Gets the index of the pointer that went up or down from a motion event.
+     */
+    public static int getActionIndex(MotionEvent event) {
+        return (event.getAction()
+                & MotionEvent.ACTION_POINTER_INDEX_MASK) >> MotionEvent.ACTION_POINTER_INDEX_SHIFT;
+    }
 }
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
new file mode 100644
index 0000000..a14584a
--- /dev/null
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/MultiFingerSwipe.java
@@ -0,0 +1,514 @@
+/*
+ * 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.server.accessibility.gestures;
+
+import static android.view.MotionEvent.INVALID_POINTER_ID;
+
+import static com.android.server.accessibility.gestures.GestureUtils.MM_PER_CM;
+import static com.android.server.accessibility.gestures.GestureUtils.getActionIndex;
+import static com.android.server.accessibility.gestures.Swipe.CANCEL_ON_PAUSE_THRESHOLD_NOT_STARTED_MS;
+import static com.android.server.accessibility.gestures.Swipe.CANCEL_ON_PAUSE_THRESHOLD_STARTED_MS;
+import static com.android.server.accessibility.gestures.Swipe.GESTURE_CONFIRM_CM;
+import static com.android.server.accessibility.gestures.TouchExplorer.DEBUG;
+
+import android.content.Context;
+import android.graphics.PointF;
+import android.os.Handler;
+import android.util.DisplayMetrics;
+import android.util.Slog;
+import android.util.TypedValue;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+
+/**
+ * This class is responsible for matching one-finger swipe gestures. Each instance matches one swipe
+ * gesture. A swipe is specified as a series of one or more directions e.g. left, left and up, etc.
+ * At this time swipes with more than two directions are not supported.
+ */
+class MultiFingerSwipe extends GestureMatcher {
+
+    // Direction constants.
+    public static final int LEFT = 0;
+    public static final int RIGHT = 1;
+    public static final int UP = 2;
+    public static final int DOWN = 3;
+    // This is the calculated movement threshold used track if the user is still
+    // moving their finger.
+    private final float mGestureDetectionThresholdPixels;
+
+    // Buffer for storing points for gesture detection.
+    private final ArrayList<PointF>[] mStrokeBuffers;
+
+    // The swipe direction for this matcher.
+    private int mDirection;
+    private int[] mPointerIds;
+    // The starting point of each finger's path in the gesture.
+    private PointF[] mBase;
+    // The most recent entry in each finger's gesture path.
+    private PointF[] mPreviousGesturePoint;
+    private int mTargetFingerCount;
+    private int mCurrentFingerCount;
+    // Whether the appropriate number of fingers have gone down at some point. This is reset only on
+    // clear.
+    private boolean mTargetFingerCountReached = false;
+    // Constants for sampling motion event points.
+    // We sample based on a minimum distance between points, primarily to improve accuracy by
+    // reducing noisy minor changes in direction.
+    private static final float MIN_CM_BETWEEN_SAMPLES = 0.25f;
+    private final float mMinPixelsBetweenSamplesX;
+    private final float mMinPixelsBetweenSamplesY;
+    // The minmimum distance the finger must travel before we evaluate the initial direction of the
+    // swipe.
+    // Anything less is still considered a touch.
+    private int mTouchSlop;
+
+    MultiFingerSwipe(
+            Context context,
+            int fingerCount,
+            int direction,
+            int gesture,
+            GestureMatcher.StateChangeListener listener) {
+        super(gesture, new Handler(context.getMainLooper()), listener);
+        mTargetFingerCount = fingerCount;
+        mPointerIds = new int[mTargetFingerCount];
+        mBase = new PointF[mTargetFingerCount];
+        mPreviousGesturePoint = new PointF[mTargetFingerCount];
+        mStrokeBuffers = new ArrayList[mTargetFingerCount];
+        mDirection = direction;
+        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
+        mGestureDetectionThresholdPixels =
+                TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, MM_PER_CM, displayMetrics)
+                        * GESTURE_CONFIRM_CM;
+        // Calculate minimum gesture velocity
+        final float pixelsPerCmX = displayMetrics.xdpi / GestureUtils.CM_PER_INCH;
+        final float pixelsPerCmY = displayMetrics.ydpi / GestureUtils.CM_PER_INCH;
+        mMinPixelsBetweenSamplesX = MIN_CM_BETWEEN_SAMPLES * pixelsPerCmX;
+        mMinPixelsBetweenSamplesY = MIN_CM_BETWEEN_SAMPLES * pixelsPerCmY;
+        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+        clear();
+    }
+
+    @Override
+    protected void clear() {
+        mTargetFingerCountReached = false;
+        mCurrentFingerCount = 0;
+        for (int i = 0; i < mTargetFingerCount; ++i) {
+            mPointerIds[i] = INVALID_POINTER_ID;
+            if (mBase[i] == null) {
+                mBase[i] = new PointF();
+            }
+            mBase[i].x = Float.NaN;
+            mBase[i].y = Float.NaN;
+            if (mPreviousGesturePoint[i] == null) {
+                mPreviousGesturePoint[i] = new PointF();
+            }
+            mPreviousGesturePoint[i].x = Float.NaN;
+            mPreviousGesturePoint[i].y = Float.NaN;
+            if (mStrokeBuffers[i] == null) {
+                mStrokeBuffers[i] = new ArrayList<>(100);
+            }
+            mStrokeBuffers[i].clear();
+        }
+        super.clear();
+    }
+
+    @Override
+    protected void onDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        if (mCurrentFingerCount > 0) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mCurrentFingerCount = 1;
+        final int actionIndex = getActionIndex(rawEvent);
+        final int pointerId = rawEvent.getPointerId(actionIndex);
+        int pointerIndex = rawEvent.getPointerCount() - 1;
+        if (pointerId < 0) {
+            // Nonsensical pointer id.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        if (mPointerIds[pointerIndex] != INVALID_POINTER_ID) {
+            // Inconsistent event stream.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mPointerIds[pointerIndex] = pointerId;
+        cancelAfterPauseThreshold(event, rawEvent, policyFlags);
+        if (Float.isNaN(mBase[pointerIndex].x) && Float.isNaN(mBase[pointerIndex].y)) {
+            final float x = rawEvent.getX(actionIndex);
+            final float y = rawEvent.getY(actionIndex);
+            if (x < 0f || y < 0f) {
+                cancelGesture(event, rawEvent, policyFlags);
+                return;
+            }
+            mBase[pointerIndex].x = x;
+            mBase[pointerIndex].y = y;
+            mPreviousGesturePoint[pointerIndex].x = x;
+            mPreviousGesturePoint[pointerIndex].y = y;
+        } else {
+            // This  event doesn't make sense in the middle of a gesture.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+    }
+
+    @Override
+    protected void onPointerDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        if (event.getPointerCount() > mTargetFingerCount) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mCurrentFingerCount += 1;
+        if (mCurrentFingerCount != rawEvent.getPointerCount()) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        if (mCurrentFingerCount == mTargetFingerCount) {
+            mTargetFingerCountReached = true;
+        }
+        final int actionIndex = getActionIndex(rawEvent);
+        final int pointerId = rawEvent.getPointerId(actionIndex);
+        if (pointerId < 0) {
+            // Nonsensical pointer id.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        int pointerIndex = mCurrentFingerCount - 1;
+        if (mPointerIds[pointerIndex] != INVALID_POINTER_ID) {
+            // Inconsistent event stream.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mPointerIds[pointerIndex] = pointerId;
+        cancelAfterPauseThreshold(event, rawEvent, policyFlags);
+        if (Float.isNaN(mBase[pointerIndex].x) && Float.isNaN(mBase[pointerIndex].y)) {
+            final float x = rawEvent.getX(actionIndex);
+            final float y = rawEvent.getY(actionIndex);
+            if (x < 0f || y < 0f) {
+                cancelGesture(event, rawEvent, policyFlags);
+                return;
+            }
+            mBase[pointerIndex].x = x;
+            mBase[pointerIndex].y = y;
+            mPreviousGesturePoint[pointerIndex].x = x;
+            mPreviousGesturePoint[pointerIndex].y = y;
+        } else {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+    }
+
+    @Override
+    protected void onPointerUp(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        if (!mTargetFingerCountReached) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mCurrentFingerCount -= 1;
+        final int actionIndex = getActionIndex(event);
+        final int pointerId = event.getPointerId(actionIndex);
+        if (pointerId < 0) {
+            // Nonsensical pointer id.
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        final int pointerIndex = Arrays.binarySearch(mPointerIds, pointerId);
+        if (pointerIndex < 0) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        final float x = rawEvent.getX(actionIndex);
+        final float y = rawEvent.getY(actionIndex);
+        if (x < 0f || y < 0f) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        final float dX = Math.abs(x - mPreviousGesturePoint[pointerIndex].x);
+        final float dY = Math.abs(y - mPreviousGesturePoint[pointerIndex].y);
+        if (dX >= mMinPixelsBetweenSamplesX || dY >= mMinPixelsBetweenSamplesY) {
+            mStrokeBuffers[pointerIndex].add(new PointF(x, y));
+        }
+        // We will evaluate all the paths on ACTION_UP.
+    }
+
+    @Override
+    protected void onMove(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        for (int pointerIndex = 0; pointerIndex < mTargetFingerCount; ++pointerIndex) {
+            if (mPointerIds[pointerIndex] == INVALID_POINTER_ID) {
+                // Fingers have started to move before the required number of fingers are down.
+                // However, they can still move less than the touch slop and still be considered
+                // touching, not moving.
+                // So we just ignore fingers that haven't been assigned a pointer id and process
+                // those who have.
+                continue;
+            }
+            if (DEBUG) {
+                Slog.d(getGestureName(), "Processing move on finger " + pointerIndex);
+            }
+            int index = rawEvent.findPointerIndex(mPointerIds[pointerIndex]);
+            if (index < 0) {
+                // This finger is not present in this event. It could have gone up just before this
+                // movement.
+                if (DEBUG) {
+                    Slog.d(
+                            getGestureName(),
+                            "Finger " + pointerIndex + " not found in this event. skipping.");
+                }
+                continue;
+            }
+            final float x = rawEvent.getX(index);
+            final float y = rawEvent.getY(index);
+            if (x < 0f || y < 0f) {
+                cancelGesture(event, rawEvent, policyFlags);
+                return;
+            }
+            final float dX = Math.abs(x - mPreviousGesturePoint[pointerIndex].x);
+            final float dY = Math.abs(y - mPreviousGesturePoint[pointerIndex].y);
+            final double moveDelta =
+                    Math.hypot(
+                            Math.abs(x - mBase[pointerIndex].x),
+                            Math.abs(y - mBase[pointerIndex].y));
+            if (DEBUG) {
+                Slog.d(
+                        getGestureName(),
+                        "moveDelta:"
+                                + Double.toString(moveDelta)
+                                + " mGestureDetectionThreshold: "
+                                + Float.toString(mGestureDetectionThresholdPixels));
+            }
+            if (getState() == STATE_CLEAR) {
+                if (moveDelta < mTouchSlop) {
+                    // This still counts as a touch not a swipe.
+                    continue;
+                } else if (mStrokeBuffers[pointerIndex].size() == 0) {
+                    // First, make sure we have the right number of fingers down.
+                    if (mCurrentFingerCount != mTargetFingerCount) {
+                        cancelGesture(event, rawEvent, policyFlags);
+                        return;
+                    }
+                    // Then, make sure the pointer is going in the right direction.
+                    int direction =
+                            toDirection(x - mBase[pointerIndex].x, y - mBase[pointerIndex].y);
+                    if (direction != mDirection) {
+                        cancelGesture(event, rawEvent, policyFlags);
+                        return;
+                    } else {
+                        // This is confirmed to be some kind of swipe so start tracking points.
+                        cancelAfterPauseThreshold(event, rawEvent, policyFlags);
+                        for (int i = 0; i < mTargetFingerCount; ++i) {
+                            mStrokeBuffers[i].add(new PointF(mBase[i]));
+                        }
+                    }
+                }
+                if (moveDelta > mGestureDetectionThresholdPixels) {
+                    // Try to cancel if the finger starts to go the wrong way.
+                    // Note that this only works because this matcher assumes one direction.
+                    int direction =
+                            toDirection(x - mBase[pointerIndex].x, y - mBase[pointerIndex].y);
+                    if (direction != mDirection) {
+                        cancelGesture(event, rawEvent, policyFlags);
+                        return;
+                    }
+                    // If the pointer has moved more than the threshold,
+                    // update the stored values.
+                    mBase[pointerIndex].x = x;
+                    mBase[pointerIndex].y = y;
+                    mPreviousGesturePoint[pointerIndex].x = x;
+                    mPreviousGesturePoint[pointerIndex].y = y;
+                    if (getState() == STATE_CLEAR) {
+                        startGesture(event, rawEvent, policyFlags);
+                        cancelAfterPauseThreshold(event, rawEvent, policyFlags);
+                    }
+                }
+            }
+            if (getState() == STATE_GESTURE_STARTED) {
+                if (dX >= mMinPixelsBetweenSamplesX || dY >= mMinPixelsBetweenSamplesY) {
+                    // Sample every 2.5 MM in order to guard against minor variations in path.
+                    mPreviousGesturePoint[pointerIndex].x = x;
+                    mPreviousGesturePoint[pointerIndex].y = y;
+                    mStrokeBuffers[pointerIndex].add(new PointF(x, y));
+                    cancelAfterPauseThreshold(event, rawEvent, policyFlags);
+                }
+            }
+        }
+    }
+
+    @Override
+    protected void onUp(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        if (getState() != STATE_GESTURE_STARTED) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        mCurrentFingerCount = 0;
+        final int actionIndex = getActionIndex(event);
+        final int pointerId = event.getPointerId(actionIndex);
+        final int pointerIndex = Arrays.binarySearch(mPointerIds, pointerId);
+        if (pointerIndex < 0) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        final float x = rawEvent.getX(actionIndex);
+        final float y = rawEvent.getY(actionIndex);
+        if (x < 0f || y < 0f) {
+            cancelGesture(event, rawEvent, policyFlags);
+            return;
+        }
+        final float dX = Math.abs(x - mPreviousGesturePoint[pointerIndex].x);
+        final float dY = Math.abs(y - mPreviousGesturePoint[pointerIndex].y);
+        if (dX >= mMinPixelsBetweenSamplesX || dY >= mMinPixelsBetweenSamplesY) {
+            mStrokeBuffers[pointerIndex].add(new PointF(x, y));
+        }
+        recognizeGesture(event, rawEvent, policyFlags);
+    }
+
+    /**
+     * queues a transition to STATE_GESTURE_CANCEL based on the current state. If we have
+     * transitioned to STATE_GESTURE_STARTED the delay is longer.
+     */
+    private void cancelAfterPauseThreshold(
+            MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        cancelPendingTransitions();
+        switch (getState()) {
+            case STATE_CLEAR:
+                cancelAfter(CANCEL_ON_PAUSE_THRESHOLD_NOT_STARTED_MS, event, rawEvent, policyFlags);
+                break;
+            case STATE_GESTURE_STARTED:
+                cancelAfter(CANCEL_ON_PAUSE_THRESHOLD_STARTED_MS, event, rawEvent, policyFlags);
+                break;
+            default:
+                break;
+        }
+    }
+    /**
+     * Looks at the sequence of motions in mStrokeBuffer, classifies the gesture, then transitions
+     * to the complete or cancel state depending on the result.
+     */
+    private void recognizeGesture(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+        // Check the path of each finger against the specified direction.
+        // Note that we sample every 2.5 MMm, and the direction matching is extremely tolerant (each
+        // direction has a 90-degree arch of tolerance) meaning that minor perpendicular movements
+        // should not create false negatives.
+        for (int i = 0; i < mTargetFingerCount; ++i) {
+            if (DEBUG) {
+                Slog.d(getGestureName(), "Recognizing finger: " + i);
+            }
+            if (mStrokeBuffers[i].size() < 2) {
+                Slog.d(getGestureName(), "Too few points.");
+                cancelGesture(event, rawEvent, policyFlags);
+                return;
+            }
+            ArrayList<PointF> path = mStrokeBuffers[i];
+
+            if (DEBUG) {
+                Slog.d(getGestureName(), "path=" + path.toString());
+            }
+            // Classify line segments, and call Listener callbacks.
+            if (!recognizeGesturePath(event, rawEvent, policyFlags, path)) {
+                cancelGesture(event, rawEvent, policyFlags);
+                return;
+            }
+        }
+        // If we reach this point then all paths match.
+        completeGesture(event, rawEvent, policyFlags);
+    }
+
+    /**
+     * Tests the path of a given finger against the direction specified in this matcher.
+     *
+     * @return True if the path matches the specified direction for this matcher, otherwise false.
+     */
+    private boolean recognizeGesturePath(
+            MotionEvent event, MotionEvent rawEvent, int policyFlags, ArrayList<PointF> path) {
+
+        final int displayId = event.getDisplayId();
+        for (int i = 0; i < path.size() - 1; ++i) {
+            PointF start = path.get(i);
+            PointF end = path.get(i + 1);
+
+            float dX = end.x - start.x;
+            float dY = end.y - start.y;
+            int direction = toDirection(dX, dY);
+            if (direction != mDirection) {
+                if (DEBUG) {
+                    Slog.d(
+                            getGestureName(),
+                            "Found direction "
+                                    + directionToString(direction)
+                                    + " when expecting "
+                                    + directionToString(mDirection));
+                }
+                return false;
+            }
+        }
+        if (DEBUG) {
+            Slog.d(getGestureName(), "Completed.");
+        }
+        return true;
+    }
+
+    private static int toDirection(float dX, float dY) {
+        if (Math.abs(dX) > Math.abs(dY)) {
+            // Horizontal
+            return (dX < 0) ? LEFT : RIGHT;
+        } else {
+            // Vertical
+            return (dY < 0) ? UP : DOWN;
+        }
+    }
+
+    public static String directionToString(int direction) {
+        switch (direction) {
+            case LEFT:
+                return "left";
+            case RIGHT:
+                return "right";
+            case UP:
+                return "up";
+            case DOWN:
+                return "down";
+            default:
+                return "Unknown Direction";
+        }
+    }
+
+    @Override
+    String getGestureName() {
+        StringBuilder builder = new StringBuilder();
+        builder.append(mTargetFingerCount).append("-finger ");
+        builder.append("Swipe ").append(directionToString(mDirection));
+        return builder.toString();
+    }
+
+    @Override
+    public String toString() {
+        StringBuilder builder = new StringBuilder(super.toString());
+        if (getState() != STATE_GESTURE_CANCELED) {
+            builder.append(", mBase: ")
+                    .append(mBase.toString())
+                    .append(", mGestureDetectionThreshold:")
+                    .append(mGestureDetectionThresholdPixels)
+                    .append(", mMinPixelsBetweenSamplesX:")
+                    .append(mMinPixelsBetweenSamplesX)
+                    .append(", mMinPixelsBetweenSamplesY:")
+                    .append(mMinPixelsBetweenSamplesY);
+        }
+        return builder.toString();
+    }
+}
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java b/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
index 8a566fc..ada251f 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/SecondFingerMultiTap.java
@@ -18,6 +18,8 @@
 
 import static android.view.MotionEvent.INVALID_POINTER_ID;
 
+import static com.android.server.accessibility.gestures.GestureUtils.getActionIndex;
+
 import android.content.Context;
 import android.os.Handler;
 import android.view.MotionEvent;
@@ -155,11 +157,6 @@
         return moveDelta <= slop;
     }
 
-    private int getActionIndex(MotionEvent event) {
-        return event.getAction()
-                & MotionEvent.ACTION_POINTER_INDEX_MASK << MotionEvent.ACTION_POINTER_INDEX_SHIFT;
-    }
-
     @Override
     public String toString() {
         return super.toString()
diff --git a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
index a285c10..9108c69 100644
--- a/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
+++ b/services/accessibility/java/com/android/server/accessibility/gestures/Swipe.java
@@ -16,10 +16,10 @@
 
 package com.android.server.accessibility.gestures;
 
+import static com.android.server.accessibility.gestures.GestureUtils.MM_PER_CM;
 import static com.android.server.accessibility.gestures.TouchExplorer.DEBUG;
 
 import android.content.Context;
-import android.gesture.GesturePoint;
 import android.graphics.PointF;
 import android.os.Handler;
 import android.util.DisplayMetrics;
@@ -44,10 +44,10 @@
     public static final int DOWN = 3;
     // This is the calculated movement threshold used track if the user is still
     // moving their finger.
-    private final float mGestureDetectionThreshold;
+    private final float mGestureDetectionThresholdPixels;
 
     // Buffer for storing points for gesture detection.
-    private final ArrayList<GesturePoint> mStrokeBuffer = new ArrayList<GesturePoint>(100);
+    private final ArrayList<PointF> mStrokeBuffer = new ArrayList<>(100);
 
     // The minimal delta between moves to add a gesture point.
     private static final int TOUCH_TOLERANCE_PIX = 3;
@@ -56,7 +56,7 @@
     private static final float MIN_PREDICTION_SCORE = 2.0f;
 
     // Distance a finger must travel before we decide if it is a gesture or not.
-    private static final int GESTURE_CONFIRM_CM = 1;
+    public static final int GESTURE_CONFIRM_CM = 1;
 
     // Time threshold used to determine if an interaction is a gesture or not.
     // If the first movement of 1cm takes longer than this value, we assume it's
@@ -67,17 +67,16 @@
     // all gestures started with the initial movement taking less than 100ms.
     // When touch exploring, the first movement almost always takes longer than
     // 200ms.
-    private static final long CANCEL_ON_PAUSE_THRESHOLD_NOT_STARTED_MS = 150;
+    public static final long CANCEL_ON_PAUSE_THRESHOLD_NOT_STARTED_MS = 150;
 
     // Time threshold used to determine if a gesture should be cancelled.  If
     // the finger takes more than this time to move 1cm, the ongoing gesture is
     // cancelled.
-    private static final long CANCEL_ON_PAUSE_THRESHOLD_STARTED_MS = 300;
+    public static final long CANCEL_ON_PAUSE_THRESHOLD_STARTED_MS = 300;
 
     private int[] mDirections;
     private float mBaseX;
     private float mBaseY;
-    private long mBaseTime;
     private float mPreviousGestureX;
     private float mPreviousGestureY;
     // Constants for sampling motion event points.
@@ -119,8 +118,8 @@
         super(gesture, new Handler(context.getMainLooper()), listener);
         mDirections = directions;
         DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
-        mGestureDetectionThreshold =
-                TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 10, displayMetrics)
+        mGestureDetectionThresholdPixels =
+                TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, MM_PER_CM, displayMetrics)
                         * GESTURE_CONFIRM_CM;
         // Calculate minimum gesture velocity
         final float pixelsPerCmX = displayMetrics.xdpi / 2.54f;
@@ -135,18 +134,16 @@
     protected void clear() {
         mBaseX = Float.NaN;
         mBaseY = Float.NaN;
-        mBaseTime = 0;
         mStrokeBuffer.clear();
         super.clear();
     }
 
     @Override
     protected void onDown(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
-        cancelAfterDelay(event, rawEvent, policyFlags);
+        cancelAfterPauseThreshold(event, rawEvent, policyFlags);
         if (Float.isNaN(mBaseX) && Float.isNaN(mBaseY)) {
             mBaseX = rawEvent.getX();
             mBaseY = rawEvent.getY();
-            mBaseTime = event.getEventTime();
             mPreviousGestureX = mBaseX;
             mPreviousGestureY = mBaseY;
         }
@@ -157,10 +154,8 @@
     protected void onMove(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
         final float x = rawEvent.getX();
         final float y = rawEvent.getY();
-        final long time = event.getEventTime();
         final float dX = Math.abs(x - mPreviousGestureX);
         final float dY = Math.abs(y - mPreviousGestureY);
-        final long timeDelta = time - mBaseTime;
         final double moveDelta = Math.hypot(Math.abs(x - mBaseX), Math.abs(y - mBaseY));
         if (DEBUG) {
             Slog.d(
@@ -168,7 +163,7 @@
                     "moveDelta:"
                             + Double.toString(moveDelta)
                             + " mGestureDetectionThreshold: "
-                            + Float.toString(mGestureDetectionThreshold));
+                            + Float.toString(mGestureDetectionThresholdPixels));
         }
         if (getState() == STATE_CLEAR) {
             if (moveDelta < mTouchSlop) {
@@ -176,25 +171,24 @@
                 return;
             } else if (mStrokeBuffer.size() == 0) {
                 // First, make sure the pointer is going in the right direction.
-                cancelAfterDelay(event, rawEvent, policyFlags);
+                cancelAfterPauseThreshold(event, rawEvent, policyFlags);
                 int direction = toDirection(x - mBaseX, y - mBaseY);
                 if (direction != mDirections[0]) {
                     cancelGesture(event, rawEvent, policyFlags);
                     return;
                 } else {
                     // This is confirmed to be some kind of swipe so start tracking points.
-                    mStrokeBuffer.add(new GesturePoint(mBaseX, mBaseY, mBaseTime));
+                    mStrokeBuffer.add(new PointF(mBaseX, mBaseY));
                 }
             }
-            if (moveDelta > mGestureDetectionThreshold) {
+            if (moveDelta > mGestureDetectionThresholdPixels) {
                 // If the pointer has moved more than the threshold,
                 // update the stored values.
                 mBaseX = x;
                 mBaseY = y;
-                mBaseTime = time;
                 if (getState() == STATE_CLEAR) {
                     startGesture(event, rawEvent, policyFlags);
-                    cancelAfterDelay(event, rawEvent, policyFlags);
+                    cancelAfterPauseThreshold(event, rawEvent, policyFlags);
                 }
             }
         }
@@ -202,8 +196,8 @@
             if (dX >= mMinPixelsBetweenSamplesX || dY >= mMinPixelsBetweenSamplesY) {
                 mPreviousGestureX = x;
                 mPreviousGestureY = y;
-                mStrokeBuffer.add(new GesturePoint(x, y, time));
-                cancelAfterDelay(event, rawEvent, policyFlags);
+                mStrokeBuffer.add(new PointF(x, y));
+                cancelAfterPauseThreshold(event, rawEvent, policyFlags);
             }
         }
     }
@@ -217,11 +211,10 @@
 
         final float x = rawEvent.getX();
         final float y = rawEvent.getY();
-        final long time = event.getEventTime();
         final float dX = Math.abs(x - mPreviousGestureX);
         final float dY = Math.abs(y - mPreviousGestureY);
         if (dX >= mMinPixelsBetweenSamplesX || dY >= mMinPixelsBetweenSamplesY) {
-            mStrokeBuffer.add(new GesturePoint(x, y, time));
+            mStrokeBuffer.add(new PointF(x, y));
         }
         recognizeGesture(event, rawEvent, policyFlags);
     }
@@ -240,7 +233,8 @@
      * queues a transition to STATE_GESTURE_CANCEL based on the current state. If we have
      * transitioned to STATE_GESTURE_STARTED the delay is longer.
      */
-    private void cancelAfterDelay(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
+    private void cancelAfterPauseThreshold(
+            MotionEvent event, MotionEvent rawEvent, int policyFlags) {
         cancelPendingTransitions();
         switch (getState()) {
             case STATE_CLEAR:
@@ -275,7 +269,7 @@
         // 90 degrees.
 
         ArrayList<PointF> path = new ArrayList<>();
-        PointF lastDelimiter = new PointF(mStrokeBuffer.get(0).x, mStrokeBuffer.get(0).y);
+        PointF lastDelimiter = mStrokeBuffer.get(0);
         path.add(lastDelimiter);
 
         float dX = 0; // Sum of unit vectors from last delimiter to each following point
@@ -283,9 +277,9 @@
         int count = 0; // Number of points since last delimiter
         float length = 0; // Vector length from delimiter to most recent point
 
-        PointF next = new PointF();
+        PointF next = null;
         for (int i = 1; i < mStrokeBuffer.size(); ++i) {
-            next = new PointF(mStrokeBuffer.get(i).x, mStrokeBuffer.get(i).y);
+            next = mStrokeBuffer.get(i);
             if (count > 0) {
                 // Average of unit vectors from delimiter to following points
                 float currentDX = dX / count;
@@ -428,7 +422,7 @@
                     .append(", mBaseY: ")
                     .append(mBaseY)
                     .append(", mGestureDetectionThreshold:")
-                    .append(mGestureDetectionThreshold)
+                    .append(mGestureDetectionThresholdPixels)
                     .append(", mMinPixelsBetweenSamplesX:")
                     .append(mMinPixelsBetweenSamplesX)
                     .append(", mMinPixelsBetweenSamplesY:")
diff --git a/services/appprediction/java/com/android/server/appprediction/AppPredictionManagerService.java b/services/appprediction/java/com/android/server/appprediction/AppPredictionManagerService.java
index 5844f98..1c4db12 100644
--- a/services/appprediction/java/com/android/server/appprediction/AppPredictionManagerService.java
+++ b/services/appprediction/java/com/android/server/appprediction/AppPredictionManagerService.java
@@ -18,12 +18,14 @@
 
 import static android.Manifest.permission.MANAGE_APP_PREDICTIONS;
 import static android.Manifest.permission.PACKAGE_USAGE_STATS;
+import static android.app.ActivityManagerInternal.ALLOW_NON_FULL;
 import static android.content.Context.APP_PREDICTION_SERVICE;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.app.ActivityManagerInternal;
 import android.app.prediction.AppPredictionContext;
 import android.app.prediction.AppPredictionSessionId;
 import android.app.prediction.AppTargetEvent;
@@ -34,7 +36,6 @@
 import android.os.Binder;
 import android.os.ResultReceiver;
 import android.os.ShellCallback;
-import android.os.UserHandle;
 import android.util.Slog;
 
 import com.android.server.LocalServices;
@@ -108,21 +109,21 @@
         @Override
         public void createPredictionSession(@NonNull AppPredictionContext context,
                 @NonNull AppPredictionSessionId sessionId) {
-            runForUserLocked("createPredictionSession",
+            runForUserLocked("createPredictionSession", sessionId,
                     (service) -> service.onCreatePredictionSessionLocked(context, sessionId));
         }
 
         @Override
         public void notifyAppTargetEvent(@NonNull AppPredictionSessionId sessionId,
                 @NonNull AppTargetEvent event) {
-            runForUserLocked("notifyAppTargetEvent",
+            runForUserLocked("notifyAppTargetEvent", sessionId,
                     (service) -> service.notifyAppTargetEventLocked(sessionId, event));
         }
 
         @Override
         public void notifyLaunchLocationShown(@NonNull AppPredictionSessionId sessionId,
                 @NonNull String launchLocation, @NonNull ParceledListSlice targetIds) {
-            runForUserLocked("notifyLaunchLocationShown", (service) ->
+            runForUserLocked("notifyLaunchLocationShown", sessionId, (service) ->
                     service.notifyLaunchLocationShownLocked(sessionId, launchLocation, targetIds));
         }
 
@@ -130,32 +131,32 @@
         public void sortAppTargets(@NonNull AppPredictionSessionId sessionId,
                 @NonNull ParceledListSlice targets,
                 IPredictionCallback callback) {
-            runForUserLocked("sortAppTargets",
+            runForUserLocked("sortAppTargets", sessionId,
                     (service) -> service.sortAppTargetsLocked(sessionId, targets, callback));
         }
 
         @Override
         public void registerPredictionUpdates(@NonNull AppPredictionSessionId sessionId,
                 @NonNull IPredictionCallback callback) {
-            runForUserLocked("registerPredictionUpdates",
+            runForUserLocked("registerPredictionUpdates", sessionId,
                     (service) -> service.registerPredictionUpdatesLocked(sessionId, callback));
         }
 
         public void unregisterPredictionUpdates(@NonNull AppPredictionSessionId sessionId,
                 @NonNull IPredictionCallback callback) {
-            runForUserLocked("unregisterPredictionUpdates",
+            runForUserLocked("unregisterPredictionUpdates", sessionId,
                     (service) -> service.unregisterPredictionUpdatesLocked(sessionId, callback));
         }
 
         @Override
         public void requestPredictionUpdate(@NonNull AppPredictionSessionId sessionId) {
-            runForUserLocked("requestPredictionUpdate",
+            runForUserLocked("requestPredictionUpdate", sessionId,
                     (service) -> service.requestPredictionUpdateLocked(sessionId));
         }
 
         @Override
         public void onDestroyPredictionSession(@NonNull AppPredictionSessionId sessionId) {
-            runForUserLocked("onDestroyPredictionSession",
+            runForUserLocked("onDestroyPredictionSession", sessionId,
                     (service) -> service.onDestroyPredictionSessionLocked(sessionId));
         }
 
@@ -167,9 +168,12 @@
                     .exec(this, in, out, err, args, callback, resultReceiver);
         }
 
-        private void runForUserLocked(@NonNull String func,
-                @NonNull Consumer<AppPredictionPerUserService> c) {
-            final int userId = UserHandle.getCallingUserId();
+        private void runForUserLocked(@NonNull final String func,
+                @NonNull final AppPredictionSessionId sessionId,
+                @NonNull final Consumer<AppPredictionPerUserService> c) {
+            ActivityManagerInternal am = LocalServices.getService(ActivityManagerInternal.class);
+            final int userId = am.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
+                    sessionId.getUserId(), false, ALLOW_NON_FULL, null, null);
 
             Context ctx = getContext();
             if (!(ctx.checkCallingPermission(PACKAGE_USAGE_STATS) == PERMISSION_GRANTED
diff --git a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
index 97f27ca..7151d2b 100644
--- a/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
+++ b/services/appwidget/java/com/android/server/appwidget/AppWidgetServiceImpl.java
@@ -98,7 +98,6 @@
 import android.util.proto.ProtoOutputStream;
 import android.view.Display;
 import android.view.View;
-import android.view.WindowManager;
 import android.widget.RemoteViews;
 
 import com.android.internal.R;
@@ -282,8 +281,7 @@
     }
 
     private void computeMaximumWidgetBitmapMemory() {
-        WindowManager wm = (WindowManager) mContext.getSystemService(Context.WINDOW_SERVICE);
-        Display display = wm.getDefaultDisplay();
+        Display display = mContext.getDisplay();
         Point size = new Point();
         display.getRealSize(size);
         // Cap memory usage at 1.5 times the size of the display
diff --git a/services/art-profile b/services/art-profile
index 4e113c8..1f53ebd 100644
--- a/services/art-profile
+++ b/services/art-profile
@@ -1,65 +1,249 @@
+PLandroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;-><init>(JJ)V
+PLandroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;->getTotalUsageLimit()J
+PLandroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;->getUsageRemaining()J
+HSPLandroid/app/usage/UsageStatsManagerInternal;-><init>()V
+PLandroid/content/pm/PackageManagerInternal$PackageListObserver;->onPackageChanged(Ljava/lang/String;I)V
+HSPLandroid/content/pm/PackageManagerInternal;-><init>()V
+HPLandroid/hardware/audio/common/V2_0/AudioChannelMask;->toString(I)Ljava/lang/String;
+HPLandroid/hardware/audio/common/V2_0/AudioConfig;-><init>()V
+HPLandroid/hardware/audio/common/V2_0/AudioConfig;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/audio/common/V2_0/AudioConfig;->toString()Ljava/lang/String;
+HPLandroid/hardware/audio/common/V2_0/AudioFormat;->toString(I)Ljava/lang/String;
+HPLandroid/hardware/audio/common/V2_0/AudioOffloadInfo;-><init>()V
+HPLandroid/hardware/audio/common/V2_0/AudioOffloadInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/audio/common/V2_0/AudioOffloadInfo;->toString()Ljava/lang/String;
+HPLandroid/hardware/audio/common/V2_0/AudioStreamType;->toString(I)Ljava/lang/String;
+HPLandroid/hardware/audio/common/V2_0/AudioUsage;->toString(I)Ljava/lang/String;
+HSPLandroid/hardware/audio/common/V2_0/Uuid;-><init>()V
+HSPLandroid/hardware/audio/common/V2_0/Uuid;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/audio/common/V2_0/Uuid;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;->interfaceChain()Ljava/util/ArrayList;
-PLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;->primaryUserCredential(Ljava/util/ArrayList;)V
+HPLandroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;->primaryUserCredential(Ljava/util/ArrayList;)V
 HSPLandroid/hardware/authsecret/V1_0/IAuthSecret;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/authsecret/V1_0/IAuthSecret;
+HSPLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService()Landroid/hardware/authsecret/V1_0/IAuthSecret;
+HSPLandroid/hardware/authsecret/V1_0/IAuthSecret;->getService(Ljava/lang/String;)Landroid/hardware/authsecret/V1_0/IAuthSecret;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;-><init>(Landroid/os/IHwBinder;)V
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->asBinder()Landroid/os/IHwBinder;
+HPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->authenticate(J)I
+HPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->cancel()I
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->debug(Landroid/os/NativeHandle;Ljava/util/ArrayList;)V
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->enroll(Ljava/util/ArrayList;ILjava/util/ArrayList;)I
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->enumerate()I
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->generateChallenge(I)Landroid/hardware/biometrics/face/V1_0/OptionalUint64;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->getAuthenticatorId()Landroid/hardware/biometrics/face/V1_0/OptionalUint64;
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->getFeature(II)Landroid/hardware/biometrics/face/V1_0/OptionalBool;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->remove(I)I
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->resetLockout(Ljava/util/ArrayList;)I
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->revokeChallenge()I
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->setActiveUser(ILjava/lang/String;)I
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->setCallback(Landroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback;)Landroid/hardware/biometrics/face/V1_0/OptionalUint64;
+PLandroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;->setFeature(IZLjava/util/ArrayList;I)I
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace;->getService()Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFace;->getService(Ljava/lang/String;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback$Stub;-><init>()V
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+HSPLandroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+PLandroid/hardware/biometrics/face/V1_0/OptionalBool;-><init>()V
+PLandroid/hardware/biometrics/face/V1_0/OptionalBool;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/biometrics/face/V1_0/OptionalBool;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hardware/biometrics/face/V1_0/OptionalUint64;-><init>()V
+HSPLandroid/hardware/biometrics/face/V1_0/OptionalUint64;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/biometrics/face/V1_0/OptionalUint64;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->asBinder()Landroid/os/IHwBinder;
-HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->authenticate(JI)I
-HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->cancel()I
+HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->authenticate(JI)I
+HPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->cancel()I
+PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->enroll([BII)I
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->enumerate()I
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->getAuthenticatorId()J
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->postEnroll()I
+PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->preEnroll()J
+PLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->remove(II)I
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->setActiveGroup(ILjava/lang/String;)I
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;->setNotify(Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback;)J
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
+HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getService()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
+HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;->getService(Ljava/lang/String;)Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
+HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;-><init>()V
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->asBinder()Landroid/os/IHwBinder;
 HSPLandroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->hasHDRDisplay()Landroid/hardware/configstore/V1_0/OptionalBool;
 HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->hasWideColorDisplay()Landroid/hardware/configstore/V1_0/OptionalBool;
 HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;->interfaceChain()Ljava/util/ArrayList;
 HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
+HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getService()Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
+HSPLandroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;->getService(Ljava/lang/String;)Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
+HSPLandroid/hardware/configstore/V1_0/OptionalBool;-><init>()V
+HSPLandroid/hardware/configstore/V1_0/OptionalBool;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/configstore/V1_0/OptionalBool;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hardware/health/V1_0/HealthInfo;-><init>()V
 HSPLandroid/hardware/health/V1_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/health/V2_0/DiskStats;-><init>()V
 HSPLandroid/hardware/health/V2_0/DiskStats;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/health/V2_0/HealthInfo;-><init>()V
 HSPLandroid/hardware/health/V2_0/HealthInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/health/V2_0/HealthInfo;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hardware/health/V2_0/IHealth$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/health/V2_0/IHealth$Proxy;->asBinder()Landroid/os/IHwBinder;
 HSPLandroid/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;->getChargeCounter(Landroid/hardware/health/V2_0/IHealth$getChargeCounterCallback;)V
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->getCurrentAverage(Landroid/hardware/health/V2_0/IHealth$getCurrentAverageCallback;)V
-PLandroid/hardware/health/V2_0/IHealth$Proxy;->getEnergyCounter(Landroid/hardware/health/V2_0/IHealth$getEnergyCounterCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getCapacity(Landroid/hardware/health/V2_0/IHealth$getCapacityCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getChargeCounter(Landroid/hardware/health/V2_0/IHealth$getChargeCounterCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getCurrentAverage(Landroid/hardware/health/V2_0/IHealth$getCurrentAverageCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getCurrentNow(Landroid/hardware/health/V2_0/IHealth$getCurrentNowCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getEnergyCounter(Landroid/hardware/health/V2_0/IHealth$getEnergyCounterCallback;)V
+HPLandroid/hardware/health/V2_0/IHealth$Proxy;->getHealthInfo(Landroid/hardware/health/V2_0/IHealth$getHealthInfoCallback;)V
 HSPLandroid/hardware/health/V2_0/IHealth$Proxy;->interfaceChain()Ljava/util/ArrayList;
 HSPLandroid/hardware/health/V2_0/IHealth$Proxy;->registerCallback(Landroid/hardware/health/V2_0/IHealthInfoCallback;)I
 HSPLandroid/hardware/health/V2_0/IHealth$Proxy;->update()I
 HSPLandroid/hardware/health/V2_0/IHealth;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/health/V2_0/IHealth;
+HSPLandroid/hardware/health/V2_0/IHealth;->getService(Ljava/lang/String;Z)Landroid/hardware/health/V2_0/IHealth;
+HSPLandroid/hardware/health/V2_0/IHealthInfoCallback$Stub;-><init>()V
 HSPLandroid/hardware/health/V2_0/IHealthInfoCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+HSPLandroid/hardware/health/V2_0/IHealthInfoCallback$Stub;->interfaceChain()Ljava/util/ArrayList;
 HSPLandroid/hardware/health/V2_0/IHealthInfoCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/health/V2_0/StorageAttribute;-><init>()V
 HSPLandroid/hardware/health/V2_0/StorageAttribute;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/health/V2_0/StorageInfo;-><init>()V
 HSPLandroid/hardware/health/V2_0/StorageInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/light/HwLight$1;-><init>()V
+HSPLandroid/hardware/light/HwLight;-><clinit>()V
+HSPLandroid/hardware/light/HwLight;-><init>()V
+HSPLandroid/hardware/light/ILights$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/light/ILights;
+HSPLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;->interfaceChain()Ljava/util/ArrayList;
 PLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;->isOemUnlockAllowedByCarrier(Landroid/hardware/oemlock/V1_0/IOemLock$isOemUnlockAllowedByCarrierCallback;)V
+PLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;->isOemUnlockAllowedByDevice(Landroid/hardware/oemlock/V1_0/IOemLock$isOemUnlockAllowedByDeviceCallback;)V
 PLandroid/hardware/oemlock/V1_0/IOemLock$Proxy;->setOemUnlockAllowedByCarrier(ZLjava/util/ArrayList;)I
 HSPLandroid/hardware/oemlock/V1_0/IOemLock;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/oemlock/V1_0/IOemLock;
+HSPLandroid/hardware/oemlock/V1_0/IOemLock;->getService()Landroid/hardware/oemlock/V1_0/IOemLock;
+HSPLandroid/hardware/oemlock/V1_0/IOemLock;->getService(Ljava/lang/String;)Landroid/hardware/oemlock/V1_0/IOemLock;
+HSPLandroid/hardware/rebootescrow/IRebootEscrow$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/hardware/rebootescrow/IRebootEscrow$Stub$Proxy;->retrieveKey()[B
+HSPLandroid/hardware/rebootescrow/IRebootEscrow$Stub$Proxy;->storeKey([B)V
+HSPLandroid/hardware/rebootescrow/IRebootEscrow$Stub;->asInterface(Landroid/os/IBinder;)Landroid/hardware/rebootescrow/IRebootEscrow;
+PLandroid/hardware/soundtrigger/V2_0/ConfidenceLevel;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/ConfidenceLevel;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_0/ConfidenceLevel;->toString()Ljava/lang/String;
+PLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Phrase;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Phrase;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;-><init>()V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;-><init>(Landroid/os/IHwBinder;)V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;->asBinder()Landroid/os/IHwBinder;
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;->interfaceChain()Ljava/util/ArrayList;
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$RecognitionConfig;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$RecognitionConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$SoundModel;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$SoundModel;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Ljava/lang/String;Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HSPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;->getService(Z)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;->toString()Ljava/lang/String;
+HPLandroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionStatus;->toString(I)Ljava/lang/String;
+HPLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;->toString()Ljava/lang/String;
+HPLandroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_0/SoundModelType;->toString(I)Ljava/lang/String;
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;->writeToParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;->writeToParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;-><init>()V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;->writeEmbeddedToBlob(Landroid/os/HwBlob;J)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;->writeToParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;->toString()Ljava/lang/String;
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;->toString()Ljava/lang/String;
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$Stub;-><init>()V
+PLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+HPLandroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;-><init>(Landroid/os/IHwBinder;)V
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->getModelState(I)I
+HSPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->getProperties(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$getPropertiesCallback;)V
+HSPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->interfaceChain()Ljava/util/ArrayList;
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->loadPhraseSoundModel_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback;ILandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$loadPhraseSoundModel_2_1Callback;)V
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->loadSoundModel_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback;ILandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$loadSoundModel_2_1Callback;)V
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->startRecognition_2_1(ILandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback;I)I
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->stopRecognition(I)I
+HPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;->unloadSoundModel(I)I
+HSPLandroid/hardware/soundtrigger/V2_2/ISoundTriggerHw;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/soundtrigger/V2_2/ISoundTriggerHw;
+HSPLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;-><init>(Landroid/os/IHwBinder;)V
+HSPLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;->interfaceChain()Ljava/util/ArrayList;
+HSPLandroid/hardware/soundtrigger/V2_3/ISoundTriggerHw;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw;
+HSPLandroid/hardware/soundtrigger/V2_3/Properties;-><init>()V
+HPLandroid/hardware/soundtrigger/V2_3/RecognitionConfig;-><init>()V
+HSPLandroid/hardware/usb/V1_0/IUsb$Proxy;-><init>(Landroid/os/IHwBinder;)V
+PLandroid/hardware/usb/V1_0/IUsb$Proxy;->asBinder()Landroid/os/IHwBinder;
 HSPLandroid/hardware/usb/V1_0/IUsb$Proxy;->interfaceChain()Ljava/util/ArrayList;
 HSPLandroid/hardware/usb/V1_0/IUsb$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
 HSPLandroid/hardware/usb/V1_0/IUsb$Proxy;->queryPortStatus()V
 HSPLandroid/hardware/usb/V1_0/IUsb$Proxy;->setCallback(Landroid/hardware/usb/V1_0/IUsbCallback;)V
 HSPLandroid/hardware/usb/V1_0/IUsb;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/usb/V1_0/IUsb;
+HSPLandroid/hardware/usb/V1_0/IUsb;->getService()Landroid/hardware/usb/V1_0/IUsb;
+HSPLandroid/hardware/usb/V1_0/IUsb;->getService(Ljava/lang/String;)Landroid/hardware/usb/V1_0/IUsb;
+HSPLandroid/hardware/usb/V1_0/PortStatus;-><init>()V
 HSPLandroid/hardware/usb/V1_0/PortStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/usb/V1_1/PortStatus_1_1;-><init>()V
+HSPLandroid/hardware/usb/V1_1/PortStatus_1_1;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
 HSPLandroid/hardware/usb/V1_1/PortStatus_1_1;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+PLandroid/hardware/usb/V1_2/IUsb$Proxy;-><init>(Landroid/os/IHwBinder;)V
+PLandroid/hardware/usb/V1_2/IUsb$Proxy;->enableContaminantPresenceDetection(Ljava/lang/String;Z)V
+PLandroid/hardware/usb/V1_2/IUsb$Proxy;->interfaceChain()Ljava/util/ArrayList;
+PLandroid/hardware/usb/V1_2/IUsb;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/usb/V1_2/IUsb;
+PLandroid/hardware/usb/V1_2/IUsb;->castFrom(Landroid/os/IHwInterface;)Landroid/hardware/usb/V1_2/IUsb;
+HSPLandroid/hardware/usb/V1_2/IUsbCallback$Stub;-><init>()V
 HSPLandroid/hardware/usb/V1_2/IUsbCallback$Stub;->asBinder()Landroid/os/IHwBinder;
+HSPLandroid/hardware/usb/V1_2/IUsbCallback$Stub;->interfaceChain()Ljava/util/ArrayList;
 HSPLandroid/hardware/usb/V1_2/IUsbCallback$Stub;->onTransact(ILandroid/os/HwParcel;Landroid/os/HwParcel;I)V
+HSPLandroid/hardware/usb/V1_2/PortStatus;-><init>()V
+HSPLandroid/hardware/usb/V1_2/PortStatus;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/usb/V1_2/PortStatus;->readVectorFromParcel(Landroid/os/HwParcel;)Ljava/util/ArrayList;
+HSPLandroid/hardware/weaver/V1_0/IWeaver$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hardware/weaver/V1_0/IWeaver$Proxy;->getConfig(Landroid/hardware/weaver/V1_0/IWeaver$getConfigCallback;)V
 HSPLandroid/hardware/weaver/V1_0/IWeaver$Proxy;->interfaceChain()Ljava/util/ArrayList;
-PLandroid/hardware/weaver/V1_0/IWeaver$Proxy;->read(ILjava/util/ArrayList;Landroid/hardware/weaver/V1_0/IWeaver$readCallback;)V
+HPLandroid/hardware/weaver/V1_0/IWeaver$Proxy;->read(ILjava/util/ArrayList;Landroid/hardware/weaver/V1_0/IWeaver$readCallback;)V
+PLandroid/hardware/weaver/V1_0/IWeaver$Proxy;->write(ILjava/util/ArrayList;Ljava/util/ArrayList;)I
 HSPLandroid/hardware/weaver/V1_0/IWeaver;->asInterface(Landroid/os/IHwBinder;)Landroid/hardware/weaver/V1_0/IWeaver;
-PLandroid/hardware/weaver/V1_0/WeaverReadResponse;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/weaver/V1_0/IWeaver;->getService()Landroid/hardware/weaver/V1_0/IWeaver;
+HSPLandroid/hardware/weaver/V1_0/IWeaver;->getService(Ljava/lang/String;)Landroid/hardware/weaver/V1_0/IWeaver;
+HSPLandroid/hardware/weaver/V1_0/WeaverConfig;-><init>()V
+HSPLandroid/hardware/weaver/V1_0/WeaverConfig;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/hardware/weaver/V1_0/WeaverConfig;->readFromParcel(Landroid/os/HwParcel;)V
+HPLandroid/hardware/weaver/V1_0/WeaverReadResponse;-><init>()V
+HPLandroid/hardware/weaver/V1_0/WeaverReadResponse;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HPLandroid/hardware/weaver/V1_0/WeaverReadResponse;->readFromParcel(Landroid/os/HwParcel;)V
+HSPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;-><init>()V
+HSPLandroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;->readEmbeddedFromParcel(Landroid/os/HwParcel;Landroid/os/HwBlob;J)V
+HSPLandroid/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
+HSPLandroid/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;
 HSPLandroid/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/hidl/manager/V1_2/IServiceManager$Proxy;-><init>(Landroid/os/IHwBinder;)V
 HSPLandroid/hidl/manager/V1_2/IServiceManager$Proxy;->interfaceChain()Ljava/util/ArrayList;
 PLandroid/hidl/manager/V1_2/IServiceManager$Proxy;->interfaceDescriptor()Ljava/lang/String;
 HSPLandroid/hidl/manager/V1_2/IServiceManager$Proxy;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
@@ -68,120 +252,317 @@
 PLandroid/hidl/manager/V1_2/IServiceManager$Proxy;->toString()Ljava/lang/String;
 HSPLandroid/hidl/manager/V1_2/IServiceManager;->asInterface(Landroid/os/IHwBinder;)Landroid/hidl/manager/V1_2/IServiceManager;
 HSPLandroid/hidl/manager/V1_2/IServiceManager;->getService()Landroid/hidl/manager/V1_2/IServiceManager;
-HSPLandroid/net/-$$Lambda$NetworkStackClient$8Y7GJyozK7_xixdmgfHS4QSif-A;->onNetworkStackConnected(Landroid/net/INetworkStackConnector;)V
+HSPLandroid/hidl/manager/V1_2/IServiceManager;->getService(Ljava/lang/String;)Landroid/hidl/manager/V1_2/IServiceManager;
+HPLandroid/net/-$$Lambda$IpMemoryStore$LPW97BoNSL4rh_RVPiAHfCbmGHU;-><init>(Ljava/util/function/Consumer;)V
+PLandroid/net/-$$Lambda$IpMemoryStore$LPW97BoNSL4rh_RVPiAHfCbmGHU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLandroid/net/-$$Lambda$IpMemoryStore$pFctTFAvh_Nxb_aTb0gjNsixGeM;-><init>(Ljava/util/function/Consumer;)V
+PLandroid/net/-$$Lambda$IpMemoryStore$pFctTFAvh_Nxb_aTb0gjNsixGeM;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLandroid/net/-$$Lambda$IpMemoryStoreClient$284VFgqq7BBkkwVNFLIrF3c59Es;-><init>(Landroid/net/IIpMemoryStore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/OnBlobRetrievedListener;)V
+PLandroid/net/-$$Lambda$IpMemoryStoreClient$284VFgqq7BBkkwVNFLIrF3c59Es;->run()V
+HPLandroid/net/-$$Lambda$IpMemoryStoreClient$3VeddAdCuqfXquVC2DlGvI3eVPM;-><init>(Landroid/net/IpMemoryStoreClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/OnBlobRetrievedListener;)V
+PLandroid/net/-$$Lambda$IpMemoryStoreClient$3VeddAdCuqfXquVC2DlGvI3eVPM;->accept(Ljava/lang/Object;)V
+HPLandroid/net/-$$Lambda$IpMemoryStoreClient$4eqT-tDGA25PNMyU_1yqQCF2gOo;-><init>(Landroid/net/IIpMemoryStore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/OnStatusListener;)V
+PLandroid/net/-$$Lambda$IpMemoryStoreClient$4eqT-tDGA25PNMyU_1yqQCF2gOo;->run()V
+HPLandroid/net/-$$Lambda$IpMemoryStoreClient$OI4Zw2djhZoG0D4IE2ujC0Iv6G4;-><init>(Landroid/net/IpMemoryStoreClient;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/OnStatusListener;)V
+PLandroid/net/-$$Lambda$IpMemoryStoreClient$OI4Zw2djhZoG0D4IE2ujC0Iv6G4;->accept(Ljava/lang/Object;)V
+HPLandroid/net/-$$Lambda$NetworkStackClient$8Y7GJyozK7_xixdmgfHS4QSif-A;-><init>(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;)V
+HPLandroid/net/-$$Lambda$NetworkStackClient$8Y7GJyozK7_xixdmgfHS4QSif-A;->onNetworkStackConnected(Landroid/net/INetworkStackConnector;)V
+HSPLandroid/net/-$$Lambda$NetworkStackClient$EsrnifYD8E-HxTwVQsf45HJKvtM;-><init>(Ljava/lang/String;Landroid/net/ip/IIpClientCallbacks;)V
 HSPLandroid/net/-$$Lambda$NetworkStackClient$EsrnifYD8E-HxTwVQsf45HJKvtM;->onNetworkStackConnected(Landroid/net/INetworkStackConnector;)V
-HSPLandroid/net/-$$Lambda$NetworkStackClient$qInwLPrclXOFvKSYRjcCaCSeEhw;->onNetworkStackConnected(Landroid/net/INetworkStackConnector;)V
-PLandroid/net/ApfCapabilitiesParcelable$1;-><init>()V
-PLandroid/net/ApfCapabilitiesParcelable;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/net/DhcpResultsParcelable$1;-><init>()V
+PLandroid/net/-$$Lambda$NetworkStackClient$qInwLPrclXOFvKSYRjcCaCSeEhw;-><init>(Landroid/net/IIpMemoryStoreCallbacks;)V
+PLandroid/net/-$$Lambda$NetworkStackClient$qInwLPrclXOFvKSYRjcCaCSeEhw;->onNetworkStackConnected(Landroid/net/INetworkStackConnector;)V
+HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>()V
+HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;-><init>(Landroid/net/ConnectivityModuleConnector$1;)V
+HSPLandroid/net/ConnectivityModuleConnector$DependenciesImpl;->getModuleServiceIntent(Landroid/content/pm/PackageManager;Ljava/lang/String;Ljava/lang/String;Z)Landroid/content/Intent;
+HSPLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
+HSPLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;-><init>(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;Landroid/net/ConnectivityModuleConnector$1;)V
+HSPLandroid/net/ConnectivityModuleConnector$ModuleServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLandroid/net/ConnectivityModuleConnector;-><clinit>()V
+HSPLandroid/net/ConnectivityModuleConnector;-><init>()V
+HSPLandroid/net/ConnectivityModuleConnector;-><init>(Landroid/net/ConnectivityModuleConnector$Dependencies;)V
+HSPLandroid/net/ConnectivityModuleConnector;->access$100(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;->access$300(Landroid/net/ConnectivityModuleConnector;Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;->checkModuleServicePermission(Landroid/content/pm/PackageManager;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLandroid/net/ConnectivityModuleConnector;->dump(Ljava/io/PrintWriter;)V
+HSPLandroid/net/ConnectivityModuleConnector;->getInstance()Landroid/net/ConnectivityModuleConnector;
+HSPLandroid/net/ConnectivityModuleConnector;->init(Landroid/content/Context;)V
+HSPLandroid/net/ConnectivityModuleConnector;->log(Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;->logi(Ljava/lang/String;)V
+HSPLandroid/net/ConnectivityModuleConnector;->registerHealthListener(Landroid/net/ConnectivityModuleConnector$ConnectivityModuleHealthListener;)V
+HSPLandroid/net/ConnectivityModuleConnector;->startModuleService(Ljava/lang/String;Ljava/lang/String;Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;)V
+HSPLandroid/net/DhcpResultsParcelable$1;-><init>()V
 PLandroid/net/DhcpResultsParcelable$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/DhcpResultsParcelable;
 PLandroid/net/DhcpResultsParcelable$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/net/DhcpResultsParcelable;->readFromParcel(Landroid/os/Parcel;)V
-PLandroid/net/IIpMemoryStore$Stub$Proxy;->retrieveBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/IOnBlobRetrievedListener;)V
-PLandroid/net/IIpMemoryStore$Stub$Proxy;->storeBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/IOnStatusListener;)V
-HSPLandroid/net/IIpMemoryStoreCallbacks$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/IIpMemoryStoreCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/INetd$Stub$Proxy;->bandwidthAddNiceApp(I)V
-HSPLandroid/net/INetd$Stub$Proxy;->bandwidthRemoveInterfaceQuota(Ljava/lang/String;)V
+HSPLandroid/net/DhcpResultsParcelable;-><clinit>()V
+HSPLandroid/net/DhcpResultsParcelable;-><init>()V
+HPLandroid/net/DhcpResultsParcelable;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/net/IDnsResolver$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HPLandroid/net/IDnsResolver$Stub$Proxy;->createNetworkCache(I)V
+HPLandroid/net/IDnsResolver$Stub$Proxy;->destroyNetworkCache(I)V
+HPLandroid/net/IDnsResolver$Stub$Proxy;->setResolverConfiguration(Landroid/net/ResolverParamsParcel;)V
+HPLandroid/net/IDnsResolver$Stub$Proxy;->startPrefix64Discovery(I)V
+HPLandroid/net/IDnsResolver$Stub$Proxy;->stopPrefix64Discovery(I)V
+HSPLandroid/net/IDnsResolver$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IDnsResolver;
+PLandroid/net/IIpMemoryStore$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HPLandroid/net/IIpMemoryStore$Stub$Proxy;->retrieveBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/IOnBlobRetrievedListener;)V
+HPLandroid/net/IIpMemoryStore$Stub$Proxy;->storeBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/IOnStatusListener;)V
+PLandroid/net/IIpMemoryStore$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/IIpMemoryStore;
+PLandroid/net/IIpMemoryStoreCallbacks$Stub;-><init>()V
+PLandroid/net/IIpMemoryStoreCallbacks$Stub;->asBinder()Landroid/os/IBinder;
+PLandroid/net/IIpMemoryStoreCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/net/INetd$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLandroid/net/INetd$Stub$Proxy;->bandwidthAddNaughtyApp(I)V
+HPLandroid/net/INetd$Stub$Proxy;->bandwidthAddNiceApp(I)V
+PLandroid/net/INetd$Stub$Proxy;->bandwidthEnableDataSaver(Z)Z
+HPLandroid/net/INetd$Stub$Proxy;->bandwidthRemoveInterfaceQuota(Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->bandwidthRemoveNaughtyApp(I)V
+HPLandroid/net/INetd$Stub$Proxy;->bandwidthRemoveNiceApp(I)V
 HSPLandroid/net/INetd$Stub$Proxy;->bandwidthSetGlobalAlert(J)V
-HSPLandroid/net/INetd$Stub$Proxy;->bandwidthSetInterfaceQuota(Ljava/lang/String;J)V
-PLandroid/net/INetd$Stub$Proxy;->clatdStart(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLandroid/net/INetd$Stub$Proxy;->clatdStop(Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->bandwidthSetInterfaceQuota(Ljava/lang/String;J)V
+HPLandroid/net/INetd$Stub$Proxy;->clatdStart(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLandroid/net/INetd$Stub$Proxy;->clatdStop(Ljava/lang/String;)V
+PLandroid/net/INetd$Stub$Proxy;->firewallAddUidInterfaceRules(Ljava/lang/String;[I)V
 HSPLandroid/net/INetd$Stub$Proxy;->firewallEnableChildChain(IZ)V
+PLandroid/net/INetd$Stub$Proxy;->firewallRemoveUidInterfaceRules([I)V
 HSPLandroid/net/INetd$Stub$Proxy;->firewallReplaceUidChain(Ljava/lang/String;Z[I)Z
 HSPLandroid/net/INetd$Stub$Proxy;->firewallSetFirewallType(I)V
 HSPLandroid/net/INetd$Stub$Proxy;->firewallSetUidRule(III)V
-HSPLandroid/net/INetd$Stub$Proxy;->idletimerAddInterface(Ljava/lang/String;ILjava/lang/String;)V
-PLandroid/net/INetd$Stub$Proxy;->idletimerRemoveInterface(Ljava/lang/String;ILjava/lang/String;)V
-HSPLandroid/net/INetd$Stub$Proxy;->interfaceClearAddrs(Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->idletimerAddInterface(Ljava/lang/String;ILjava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->idletimerRemoveInterface(Ljava/lang/String;ILjava/lang/String;)V
 HSPLandroid/net/INetd$Stub$Proxy;->interfaceGetCfg(Ljava/lang/String;)Landroid/net/InterfaceConfigurationParcel;
 HSPLandroid/net/INetd$Stub$Proxy;->interfaceGetList()[Ljava/lang/String;
 PLandroid/net/INetd$Stub$Proxy;->interfaceSetCfg(Landroid/net/InterfaceConfigurationParcel;)V
-HSPLandroid/net/INetd$Stub$Proxy;->interfaceSetEnableIPv6(Ljava/lang/String;Z)V
-HSPLandroid/net/INetd$Stub$Proxy;->interfaceSetIPv6PrivacyExtensions(Ljava/lang/String;Z)V
-HSPLandroid/net/INetd$Stub$Proxy;->interfaceSetMtu(Ljava/lang/String;I)V
+HPLandroid/net/INetd$Stub$Proxy;->interfaceSetMtu(Ljava/lang/String;I)V
 HSPLandroid/net/INetd$Stub$Proxy;->isAlive()Z
-HSPLandroid/net/INetd$Stub$Proxy;->networkAddInterface(ILjava/lang/String;)V
-HSPLandroid/net/INetd$Stub$Proxy;->networkAddRoute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLandroid/net/INetd$Stub$Proxy;->networkAddUidRanges(I[Landroid/net/UidRangeParcel;)V
-HSPLandroid/net/INetd$Stub$Proxy;->networkClearPermissionForUser([I)V
-HSPLandroid/net/INetd$Stub$Proxy;->networkCreatePhysical(II)V
-PLandroid/net/INetd$Stub$Proxy;->networkCreateVpn(IZ)V
-PLandroid/net/INetd$Stub$Proxy;->networkDestroy(I)V
-PLandroid/net/INetd$Stub$Proxy;->networkRemoveInterface(ILjava/lang/String;)V
-PLandroid/net/INetd$Stub$Proxy;->networkRemoveRoute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLandroid/net/INetd$Stub$Proxy;->networkSetDefault(I)V
-PLandroid/net/INetd$Stub$Proxy;->networkSetPermissionForNetwork(II)V
+HPLandroid/net/INetd$Stub$Proxy;->networkAddInterface(ILjava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkAddLegacyRoute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HPLandroid/net/INetd$Stub$Proxy;->networkAddRoute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkAddUidRanges(I[Landroid/net/UidRangeParcel;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkClearPermissionForUser([I)V
+HPLandroid/net/INetd$Stub$Proxy;->networkCreatePhysical(II)V
+HPLandroid/net/INetd$Stub$Proxy;->networkCreateVpn(IZ)V
+HPLandroid/net/INetd$Stub$Proxy;->networkDestroy(I)V
+HPLandroid/net/INetd$Stub$Proxy;->networkRemoveInterface(ILjava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkRemoveRoute(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkRemoveUidRanges(I[Landroid/net/UidRangeParcel;)V
+HPLandroid/net/INetd$Stub$Proxy;->networkSetDefault(I)V
+HPLandroid/net/INetd$Stub$Proxy;->networkSetPermissionForNetwork(II)V
 HSPLandroid/net/INetd$Stub$Proxy;->networkSetPermissionForUser(I[I)V
 PLandroid/net/INetd$Stub$Proxy;->networkSetProtectAllow(I)V
 PLandroid/net/INetd$Stub$Proxy;->networkSetProtectDeny(I)V
 HSPLandroid/net/INetd$Stub$Proxy;->registerUnsolicitedEventListener(Landroid/net/INetdUnsolicitedEventListener;)V
-HSPLandroid/net/INetd$Stub$Proxy;->resolverStartPrefix64Discovery(I)V
-HSPLandroid/net/INetd$Stub$Proxy;->resolverStopPrefix64Discovery(I)V
-HSPLandroid/net/INetd$Stub$Proxy;->setResolverConfiguration(I[Ljava/lang/String;[Ljava/lang/String;[ILjava/lang/String;[Ljava/lang/String;[Ljava/lang/String;)V
-HSPLandroid/net/INetd$Stub$Proxy;->setTcpRWmemorySize(Ljava/lang/String;Ljava/lang/String;)V
+HPLandroid/net/INetd$Stub$Proxy;->setTcpRWmemorySize(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/net/INetd$Stub$Proxy;->socketDestroy([Landroid/net/UidRangeParcel;[I)V
+PLandroid/net/INetd$Stub$Proxy;->strictUidCleartextPenalty(II)V
 HSPLandroid/net/INetd$Stub$Proxy;->tetherGetStats()[Landroid/net/TetherStatsParcel;
 HSPLandroid/net/INetd$Stub$Proxy;->trafficSetNetPermForUids(I[I)V
-PLandroid/net/INetd$Stub$Proxy;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V
-PLandroid/net/INetd$Stub$Proxy;->wakeupDelInterface(Ljava/lang/String;Ljava/lang/String;II)V
+HSPLandroid/net/INetd$Stub$Proxy;->trafficSwapActiveStatsMap()V
+HPLandroid/net/INetd$Stub$Proxy;->wakeupAddInterface(Ljava/lang/String;Ljava/lang/String;II)V
+HPLandroid/net/INetd$Stub$Proxy;->wakeupDelInterface(Ljava/lang/String;Ljava/lang/String;II)V
 HSPLandroid/net/INetd$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetd;
+HSPLandroid/net/INetdUnsolicitedEventListener$Stub;-><init>()V
 HSPLandroid/net/INetdUnsolicitedEventListener$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/net/INetdUnsolicitedEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLandroid/net/INetworkMonitor$Stub$Proxy;->forceReevaluation(I)V
+PLandroid/net/INetworkMonitor$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->forceReevaluation(I)V
+PLandroid/net/INetworkMonitor$Stub$Proxy;->launchCaptivePortalApp()V
 PLandroid/net/INetworkMonitor$Stub$Proxy;->notifyCaptivePortalAppFinished(I)V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyDnsResponse(I)V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyLinkPropertiesChanged()V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkCapabilitiesChanged()V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkConnected()V
-PLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkDisconnected()V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyPrivateDnsChanged(Landroid/net/PrivateDnsConfigParcel;)V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->notifySystemReady()V
-HSPLandroid/net/INetworkMonitor$Stub$Proxy;->start()V
-HSPLandroid/net/INetworkMonitorCallbacks$Stub;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/INetworkMonitorCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/INetworkStackConnector$Stub$Proxy;->fetchIpMemoryStore(Landroid/net/IIpMemoryStoreCallbacks;)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyDnsResponse(I)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyLinkPropertiesChanged(Landroid/net/LinkProperties;)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkCapabilitiesChanged(Landroid/net/NetworkCapabilities;)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkConnected(Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;)V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyNetworkDisconnected()V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->notifyPrivateDnsChanged(Landroid/net/PrivateDnsConfigParcel;)V
+PLandroid/net/INetworkMonitor$Stub$Proxy;->setAcceptPartialConnectivity()V
+HPLandroid/net/INetworkMonitor$Stub$Proxy;->start()V
+PLandroid/net/INetworkMonitor$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkMonitor;
+HPLandroid/net/INetworkMonitorCallbacks$Stub;-><init>()V
+PLandroid/net/INetworkMonitorCallbacks$Stub;->asBinder()Landroid/os/IBinder;
+HPLandroid/net/INetworkMonitorCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLandroid/net/INetworkStackConnector$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+PLandroid/net/INetworkStackConnector$Stub$Proxy;->fetchIpMemoryStore(Landroid/net/IIpMemoryStoreCallbacks;)V
 HSPLandroid/net/INetworkStackConnector$Stub$Proxy;->makeIpClient(Ljava/lang/String;Landroid/net/ip/IIpClientCallbacks;)V
-HSPLandroid/net/INetworkStackConnector$Stub$Proxy;->makeNetworkMonitor(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;)V
-HSPLandroid/net/IpMemoryStore$1;->onIpMemoryStoreFetched(Landroid/net/IIpMemoryStore;)V
-PLandroid/net/IpMemoryStore;->getService()Landroid/net/IIpMemoryStore;
-PLandroid/net/IpMemoryStoreClient;->retrieveBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/IOnBlobRetrievedListener;)V
-PLandroid/net/IpMemoryStoreClient;->storeBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/IOnStatusListener;)V
-HSPLandroid/net/NetworkStackClient$NetworkStackConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLandroid/net/INetworkStackConnector$Stub$Proxy;->makeNetworkMonitor(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;)V
+HSPLandroid/net/INetworkStackConnector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/INetworkStackConnector;
+PLandroid/net/ITetherInternalCallback$Stub;-><init>()V
+PLandroid/net/ITetherInternalCallback$Stub;->asBinder()Landroid/os/IBinder;
+PLandroid/net/ITetherInternalCallback$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/net/ITetheringConnector$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+PLandroid/net/ITetheringConnector$Stub$Proxy;->registerTetherInternalCallback(Landroid/net/ITetherInternalCallback;)V
+PLandroid/net/ITetheringConnector$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/ITetheringConnector;
+HSPLandroid/net/InterfaceConfigurationParcel$1;-><init>()V
+HSPLandroid/net/InterfaceConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/InterfaceConfigurationParcel;
+HSPLandroid/net/InterfaceConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/InterfaceConfigurationParcel;-><clinit>()V
+HSPLandroid/net/InterfaceConfigurationParcel;-><init>()V
+HSPLandroid/net/InterfaceConfigurationParcel;->readFromParcel(Landroid/os/Parcel;)V
+PLandroid/net/InterfaceConfigurationParcel;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/net/IpMemoryStore$1;-><init>(Landroid/net/IpMemoryStore;)V
+PLandroid/net/IpMemoryStore$1;->getInterfaceVersion()I
+PLandroid/net/IpMemoryStore$1;->onIpMemoryStoreFetched(Landroid/net/IIpMemoryStore;)V
+PLandroid/net/IpMemoryStore;-><clinit>()V
+PLandroid/net/IpMemoryStore;-><init>(Landroid/content/Context;)V
+PLandroid/net/IpMemoryStore;->access$000(Landroid/net/IpMemoryStore;)Ljava/util/concurrent/CompletableFuture;
+PLandroid/net/IpMemoryStore;->getMemoryStore(Landroid/content/Context;)Landroid/net/IpMemoryStore;
+PLandroid/net/IpMemoryStore;->getNetworkStackClient()Landroid/net/NetworkStackClient;
+PLandroid/net/IpMemoryStore;->lambda$runWhenServiceReady$0(Ljava/util/function/Consumer;Landroid/net/IIpMemoryStore;Ljava/lang/Throwable;)Landroid/net/IIpMemoryStore;
+PLandroid/net/IpMemoryStore;->lambda$runWhenServiceReady$1(Ljava/util/function/Consumer;Ljava/util/concurrent/CompletableFuture;)Ljava/util/concurrent/CompletableFuture;
+PLandroid/net/IpMemoryStore;->runWhenServiceReady(Ljava/util/function/Consumer;)V
+PLandroid/net/IpMemoryStoreClient;-><clinit>()V
+PLandroid/net/IpMemoryStoreClient;-><init>(Landroid/content/Context;)V
+PLandroid/net/IpMemoryStoreClient;->ignoringRemoteException(Landroid/net/IpMemoryStoreClient$ThrowingRunnable;)V
+PLandroid/net/IpMemoryStoreClient;->ignoringRemoteException(Ljava/lang/String;Landroid/net/IpMemoryStoreClient$ThrowingRunnable;)V
+PLandroid/net/IpMemoryStoreClient;->lambda$retrieveBlob$15(Landroid/net/IIpMemoryStore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/OnBlobRetrievedListener;)V
+PLandroid/net/IpMemoryStoreClient;->lambda$retrieveBlob$16$IpMemoryStoreClient(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/OnBlobRetrievedListener;Landroid/net/IIpMemoryStore;)V
+HPLandroid/net/IpMemoryStoreClient;->lambda$storeBlob$3(Landroid/net/IIpMemoryStore;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/OnStatusListener;)V
+PLandroid/net/IpMemoryStoreClient;->lambda$storeBlob$4$IpMemoryStoreClient(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/OnStatusListener;Landroid/net/IIpMemoryStore;)V
+PLandroid/net/IpMemoryStoreClient;->retrieveBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/OnBlobRetrievedListener;)V
+PLandroid/net/IpMemoryStoreClient;->storeBlob(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;Landroid/net/ipmemorystore/OnStatusListener;)V
+PLandroid/net/NattKeepalivePacketDataParcelable$1;-><init>()V
+PLandroid/net/NattKeepalivePacketDataParcelable;-><clinit>()V
+PLandroid/net/NattKeepalivePacketDataParcelable;-><init>()V
+HPLandroid/net/NattKeepalivePacketDataParcelable;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/net/NetworkFactory;->getProvider()Landroid/net/NetworkProvider;
+HPLandroid/net/NetworkMonitorManager;-><init>(Landroid/net/INetworkMonitor;)V
+HPLandroid/net/NetworkMonitorManager;-><init>(Landroid/net/INetworkMonitor;Ljava/lang/String;)V
+HPLandroid/net/NetworkMonitorManager;->forceReevaluation(I)Z
+PLandroid/net/NetworkMonitorManager;->launchCaptivePortalApp()Z
+PLandroid/net/NetworkMonitorManager;->notifyCaptivePortalAppFinished(I)Z
+HPLandroid/net/NetworkMonitorManager;->notifyDnsResponse(I)Z
+HPLandroid/net/NetworkMonitorManager;->notifyLinkPropertiesChanged(Landroid/net/LinkProperties;)Z
+HPLandroid/net/NetworkMonitorManager;->notifyNetworkCapabilitiesChanged(Landroid/net/NetworkCapabilities;)Z
+HPLandroid/net/NetworkMonitorManager;->notifyNetworkConnected(Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;)Z
+HPLandroid/net/NetworkMonitorManager;->notifyNetworkDisconnected()Z
+HPLandroid/net/NetworkMonitorManager;->notifyPrivateDnsChanged(Landroid/net/PrivateDnsConfigParcel;)Z
+PLandroid/net/NetworkMonitorManager;->setAcceptPartialConnectivity()Z
+HSPLandroid/net/NetworkStackClient$DependenciesImpl;-><init>()V
+HSPLandroid/net/NetworkStackClient$DependenciesImpl;-><init>(Landroid/net/NetworkStackClient$1;)V
+HSPLandroid/net/NetworkStackClient$DependenciesImpl;->addToServiceManager(Landroid/os/IBinder;)V
+HSPLandroid/net/NetworkStackClient$DependenciesImpl;->checkCallerUid()V
+HSPLandroid/net/NetworkStackClient$DependenciesImpl;->getConnectivityModuleConnector()Landroid/net/ConnectivityModuleConnector;
+HSPLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;)V
+HSPLandroid/net/NetworkStackClient$NetworkStackConnection;-><init>(Landroid/net/NetworkStackClient;Landroid/net/NetworkStackClient$1;)V
+HSPLandroid/net/NetworkStackClient$NetworkStackConnection;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLandroid/net/NetworkStackClient;-><clinit>()V
+HSPLandroid/net/NetworkStackClient;-><init>()V
+HSPLandroid/net/NetworkStackClient;-><init>(Landroid/net/NetworkStackClient$Dependencies;)V
+HSPLandroid/net/NetworkStackClient;->access$100(Landroid/net/NetworkStackClient;Ljava/lang/String;)V
+HSPLandroid/net/NetworkStackClient;->access$200(Landroid/net/NetworkStackClient;Landroid/os/IBinder;)V
 PLandroid/net/NetworkStackClient;->dump(Ljava/io/PrintWriter;)V
-HSPLandroid/net/NetworkStackClient;->fetchIpMemoryStore(Landroid/net/IIpMemoryStoreCallbacks;)V
+PLandroid/net/NetworkStackClient;->fetchIpMemoryStore(Landroid/net/IIpMemoryStoreCallbacks;)V
 HSPLandroid/net/NetworkStackClient;->getInstance()Landroid/net/NetworkStackClient;
-HSPLandroid/net/NetworkStackClient;->getNetworkStackIntent(Landroid/content/pm/PackageManager;Z)Landroid/content/Intent;
 HSPLandroid/net/NetworkStackClient;->init()V
-HSPLandroid/net/NetworkStackClient;->lambda$fetchIpMemoryStore$3(Landroid/net/IIpMemoryStoreCallbacks;Landroid/net/INetworkStackConnector;)V
+PLandroid/net/NetworkStackClient;->lambda$fetchIpMemoryStore$3(Landroid/net/IIpMemoryStoreCallbacks;Landroid/net/INetworkStackConnector;)V
 HSPLandroid/net/NetworkStackClient;->lambda$makeIpClient$1(Ljava/lang/String;Landroid/net/ip/IIpClientCallbacks;Landroid/net/INetworkStackConnector;)V
-HSPLandroid/net/NetworkStackClient;->lambda$makeNetworkMonitor$2(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;Landroid/net/INetworkStackConnector;)V
+HPLandroid/net/NetworkStackClient;->lambda$makeNetworkMonitor$2(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;Landroid/net/INetworkStackConnector;)V
 HSPLandroid/net/NetworkStackClient;->log(Ljava/lang/String;)V
+HSPLandroid/net/NetworkStackClient;->logi(Ljava/lang/String;)V
 HSPLandroid/net/NetworkStackClient;->makeIpClient(Ljava/lang/String;Landroid/net/ip/IIpClientCallbacks;)V
-HSPLandroid/net/NetworkStackClient;->makeNetworkMonitor(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;)V
+HPLandroid/net/NetworkStackClient;->makeNetworkMonitor(Landroid/net/Network;Ljava/lang/String;Landroid/net/INetworkMonitorCallbacks;)V
 HSPLandroid/net/NetworkStackClient;->registerNetworkStackService(Landroid/os/IBinder;)V
 HSPLandroid/net/NetworkStackClient;->requestConnector(Landroid/net/NetworkStackClient$NetworkStackCallback;)V
-HSPLandroid/net/NetworkStackClient;->start(Landroid/content/Context;)V
-HSPLandroid/net/PrivateDnsConfigParcel$1;-><init>()V
-HSPLandroid/net/PrivateDnsConfigParcel;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/net/NetworkStackClient;->start()V
+PLandroid/net/PrivateDnsConfigParcel$1;-><init>()V
+PLandroid/net/PrivateDnsConfigParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/PrivateDnsConfigParcel;
+PLandroid/net/PrivateDnsConfigParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/net/PrivateDnsConfigParcel;-><clinit>()V
+PLandroid/net/PrivateDnsConfigParcel;-><init>()V
+HPLandroid/net/PrivateDnsConfigParcel;->readFromParcel(Landroid/os/Parcel;)V
+HPLandroid/net/PrivateDnsConfigParcel;->writeToParcel(Landroid/os/Parcel;I)V
 PLandroid/net/ProvisioningConfigurationParcelable$1;-><init>()V
-PLandroid/net/ProvisioningConfigurationParcelable;->writeToParcel(Landroid/os/Parcel;I)V
-PLandroid/net/StaticIpConfigurationParcelable$1;-><init>()V
-PLandroid/net/StaticIpConfigurationParcelable$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/StaticIpConfigurationParcelable;
-PLandroid/net/StaticIpConfigurationParcelable$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
-PLandroid/net/StaticIpConfigurationParcelable;->readFromParcel(Landroid/os/Parcel;)V
-PLandroid/net/ip/IIpClient$Stub$Proxy;->completedPreDhcpAction()V
-HSPLandroid/net/ip/IIpClient$Stub$Proxy;->confirmConfiguration()V
+PLandroid/net/ProvisioningConfigurationParcelable;-><clinit>()V
+PLandroid/net/ProvisioningConfigurationParcelable;-><init>()V
+HPLandroid/net/ProvisioningConfigurationParcelable;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/net/ResolverParamsParcel$1;-><init>()V
+PLandroid/net/ResolverParamsParcel;-><clinit>()V
+HPLandroid/net/ResolverParamsParcel;-><init>()V
+HPLandroid/net/ResolverParamsParcel;->writeToParcel(Landroid/os/Parcel;I)V
+PLandroid/net/TetherStatesParcel$1;-><init>()V
+PLandroid/net/TetherStatesParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/TetherStatesParcel;
+PLandroid/net/TetherStatesParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/net/TetherStatesParcel;-><clinit>()V
+PLandroid/net/TetherStatesParcel;-><init>()V
+PLandroid/net/TetherStatesParcel;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/net/TetherStatsParcel$1;-><init>()V
+HPLandroid/net/TetherStatsParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/TetherStatsParcel;
+HPLandroid/net/TetherStatsParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLandroid/net/TetherStatsParcel$1;->newArray(I)[Landroid/net/TetherStatsParcel;
+HSPLandroid/net/TetherStatsParcel$1;->newArray(I)[Ljava/lang/Object;
+HSPLandroid/net/TetherStatsParcel;-><clinit>()V
+HPLandroid/net/TetherStatsParcel;-><init>()V
+HPLandroid/net/TetherStatsParcel;->readFromParcel(Landroid/os/Parcel;)V
+PLandroid/net/TetheringConfigurationParcel$1;-><init>()V
+PLandroid/net/TetheringConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/TetheringConfigurationParcel;
+PLandroid/net/TetheringConfigurationParcel$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/net/TetheringConfigurationParcel;-><clinit>()V
+PLandroid/net/TetheringConfigurationParcel;-><init>()V
+HPLandroid/net/TetheringConfigurationParcel;->readFromParcel(Landroid/os/Parcel;)V
+PLandroid/net/TetheringManager$TetherInternalCallback;-><init>(Landroid/net/TetheringManager;)V
+PLandroid/net/TetheringManager$TetherInternalCallback;-><init>(Landroid/net/TetheringManager;Landroid/net/TetheringManager$1;)V
+HPLandroid/net/TetheringManager$TetherInternalCallback;->awaitCallbackCreation()Z
+PLandroid/net/TetheringManager$TetherInternalCallback;->onCallbackCreated(Landroid/net/Network;Landroid/net/TetheringConfigurationParcel;Landroid/net/TetherStatesParcel;)V
+PLandroid/net/TetheringManager$TetherInternalCallback;->onConfigurationChanged(Landroid/net/TetheringConfigurationParcel;)V
+PLandroid/net/TetheringManager$TetherInternalCallback;->onTetherStatesChanged(Landroid/net/TetherStatesParcel;)V
+HSPLandroid/net/TetheringManager$TetheringConnection;-><init>(Landroid/net/TetheringManager;)V
+HSPLandroid/net/TetheringManager$TetheringConnection;-><init>(Landroid/net/TetheringManager;Landroid/net/TetheringManager$1;)V
+PLandroid/net/TetheringManager$TetheringConnection;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLandroid/net/TetheringManager;-><clinit>()V
+HSPLandroid/net/TetheringManager;-><init>()V
+PLandroid/net/TetheringManager;->access$000(Landroid/net/TetheringManager;Ljava/lang/String;)V
+PLandroid/net/TetheringManager;->access$100(Landroid/net/TetheringManager;Landroid/os/IBinder;)V
+PLandroid/net/TetheringManager;->access$302(Landroid/net/TetheringManager;Landroid/net/Network;)Landroid/net/Network;
+PLandroid/net/TetheringManager;->access$502(Landroid/net/TetheringManager;Landroid/net/TetheringConfigurationParcel;)Landroid/net/TetheringConfigurationParcel;
+PLandroid/net/TetheringManager;->access$602(Landroid/net/TetheringManager;Landroid/net/TetherStatesParcel;)Landroid/net/TetherStatesParcel;
+PLandroid/net/TetheringManager;->dump(Ljava/io/PrintWriter;)V
+PLandroid/net/TetheringManager;->dumpStringArray(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)V
+HSPLandroid/net/TetheringManager;->getInstance()Landroid/net/TetheringManager;
+PLandroid/net/TetheringManager;->getTetherableWifiRegexs()[Ljava/lang/String;
+HPLandroid/net/TetheringManager;->hasTetherableConfiguration()Z
+HSPLandroid/net/TetheringManager;->log(Ljava/lang/String;)V
+PLandroid/net/TetheringManager;->logi(Ljava/lang/String;)V
+PLandroid/net/TetheringManager;->registerTetheringService(Landroid/os/IBinder;)V
+HSPLandroid/net/TetheringManager;->start()V
+PLandroid/net/UidRangeParcel$1;-><init>()V
+PLandroid/net/UidRangeParcel;-><clinit>()V
+HPLandroid/net/UidRangeParcel;-><init>()V
+HPLandroid/net/UidRangeParcel;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLandroid/net/ip/IIpClient$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->addNattKeepalivePacketFilter(ILandroid/net/NattKeepalivePacketDataParcelable;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->completedPreDhcpAction()V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->confirmConfiguration()V
 PLandroid/net/ip/IIpClient$Stub$Proxy;->readPacketFilterComplete([B)V
-PLandroid/net/ip/IIpClient$Stub$Proxy;->setHttpProxy(Landroid/net/ProxyInfo;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->removeKeepalivePacketFilter(I)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->setHttpProxy(Landroid/net/ProxyInfo;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->setL2KeyAndGroupHint(Ljava/lang/String;Ljava/lang/String;)V
 HSPLandroid/net/ip/IIpClient$Stub$Proxy;->setMulticastFilter(Z)V
-PLandroid/net/ip/IIpClient$Stub$Proxy;->setTcpBufferSizes(Ljava/lang/String;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->setTcpBufferSizes(Ljava/lang/String;)V
 PLandroid/net/ip/IIpClient$Stub$Proxy;->shutdown()V
-PLandroid/net/ip/IIpClient$Stub$Proxy;->startProvisioning(Landroid/net/ProvisioningConfigurationParcelable;)V
-PLandroid/net/ip/IIpClient$Stub$Proxy;->stop()V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->startProvisioning(Landroid/net/ProvisioningConfigurationParcelable;)V
+HPLandroid/net/ip/IIpClient$Stub$Proxy;->stop()V
+HSPLandroid/net/ip/IIpClient$Stub;->asInterface(Landroid/os/IBinder;)Landroid/net/ip/IIpClient;
+HSPLandroid/net/ip/IIpClientCallbacks$Stub;-><init>()V
 HSPLandroid/net/ip/IIpClientCallbacks$Stub;->asBinder()Landroid/os/IBinder;
 HSPLandroid/net/ip/IIpClientCallbacks$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLandroid/net/ip/IpClientCallbacks;-><init>()V
+PLandroid/net/ip/IpClientCallbacks;->onNewDhcpResults(Landroid/net/DhcpResults;)V
+PLandroid/net/ip/IpClientCallbacks;->onNewDhcpResults(Landroid/net/DhcpResultsParcelable;)V
+PLandroid/net/ip/IpClientCallbacks;->setFallbackMulticastFilter(Z)V
+PLandroid/net/ip/IpClientCallbacks;->setNeighborDiscoveryOffload(Z)V
+HSPLandroid/net/ip/IpClientManager;-><init>(Landroid/net/ip/IIpClient;Ljava/lang/String;)V
+HPLandroid/net/ip/IpClientManager;->addKeepalivePacketFilter(ILandroid/net/NattKeepalivePacketData;)Z
+HPLandroid/net/ip/IpClientManager;->completedPreDhcpAction()Z
+HPLandroid/net/ip/IpClientManager;->confirmConfiguration()Z
+PLandroid/net/ip/IpClientManager;->readPacketFilterComplete([B)Z
+HPLandroid/net/ip/IpClientManager;->removeKeepalivePacketFilter(I)Z
+PLandroid/net/ip/IpClientManager;->setHttpProxy(Landroid/net/ProxyInfo;)Z
+HPLandroid/net/ip/IpClientManager;->setL2KeyAndGroupHint(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLandroid/net/ip/IpClientManager;->setMulticastFilter(Z)Z
+PLandroid/net/ip/IpClientManager;->setTcpBufferSizes(Ljava/lang/String;)Z
+PLandroid/net/ip/IpClientManager;->shutdown()Z
+HPLandroid/net/ip/IpClientManager;->startProvisioning(Landroid/net/shared/ProvisioningConfiguration;)Z
+HPLandroid/net/ip/IpClientManager;->stop()Z
+HSPLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;-><init>(Landroid/net/ip/IpClientCallbacks;)V
+HSPLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->getInterfaceVersion()I
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->installPacketFilter([B)V
 HSPLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->onIpClientCreated(Landroid/net/ip/IIpClient;)V
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->onLinkPropertiesChange(Landroid/net/LinkProperties;)V
@@ -192,232 +573,539 @@
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->onProvisioningSuccess(Landroid/net/LinkProperties;)V
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->onQuit()V
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->onReachabilityLost(Ljava/lang/String;)V
+PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->setFallbackMulticastFilter(Z)V
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->setNeighborDiscoveryOffload(Z)V
 PLandroid/net/ip/IpClientUtil$IpClientCallbacksProxy;->startReadPacketFilter()V
-PLandroid/net/ip/IpClientUtil;->dumpIpClient(Landroid/net/ip/IIpClient;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLandroid/net/ip/IpClientUtil;->makeIpClient(Landroid/content/Context;Ljava/lang/String;Landroid/net/ip/IpClientCallbacks;)V
-HSPLandroid/net/ip/IpServer$Dependencies;->getNetdService()Landroid/net/INetd;
-HSPLandroid/net/ip/IpServer$InitialState;->enter()V
-HSPLandroid/net/ip/IpServer$InitialState;->processMessage(Landroid/os/Message;)Z
-HSPLandroid/net/ip/IpServer;-><init>(Ljava/lang/String;Landroid/os/Looper;ILandroid/net/util/SharedLog;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/ip/IpServer$Callback;ZLandroid/net/ip/IpServer$Dependencies;)V
-HSPLandroid/net/ip/IpServer;->getStateString(I)Ljava/lang/String;
-HSPLandroid/net/ip/IpServer;->interfaceName()Ljava/lang/String;
-HSPLandroid/net/ip/IpServer;->interfaceType()I
-HSPLandroid/net/ip/IpServer;->lastError()I
-HSPLandroid/net/ip/IpServer;->logMessage(Lcom/android/internal/util/State;I)V
-HSPLandroid/net/ip/IpServer;->updateUpstreamIPv6LinkProperties(Landroid/net/LinkProperties;)V
-PLandroid/net/ipmemorystore/Blob;-><init>()V
-PLandroid/net/ipmemorystore/IOnBlobRetrievedListener$Default;-><init>()V
-PLandroid/net/ipmemorystore/IOnBlobRetrievedListener$Default;->asBinder()Landroid/os/IBinder;
-HSPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLandroid/net/shared/-$$Lambda$OsobWheG5dMvEj_cOJtueqUBqBI;-><init>()V
+PLandroid/net/ipmemorystore/Blob$1;-><init>()V
+PLandroid/net/ipmemorystore/Blob$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ipmemorystore/Blob;
+PLandroid/net/ipmemorystore/Blob$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/net/ipmemorystore/Blob;-><clinit>()V
+HPLandroid/net/ipmemorystore/Blob;-><init>()V
+HPLandroid/net/ipmemorystore/Blob;->readFromParcel(Landroid/os/Parcel;)V
+HPLandroid/net/ipmemorystore/Blob;->writeToParcel(Landroid/os/Parcel;I)V
+HPLandroid/net/ipmemorystore/IOnBlobRetrievedListener$Stub;-><init>()V
+PLandroid/net/ipmemorystore/IOnBlobRetrievedListener$Stub;->asBinder()Landroid/os/IBinder;
+HPLandroid/net/ipmemorystore/IOnBlobRetrievedListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLandroid/net/ipmemorystore/IOnStatusListener$Stub;-><init>()V
+HPLandroid/net/ipmemorystore/IOnStatusListener$Stub;->asBinder()Landroid/os/IBinder;
+HPLandroid/net/ipmemorystore/IOnStatusListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/net/ipmemorystore/OnBlobRetrievedListener$1;-><init>(Landroid/net/ipmemorystore/OnBlobRetrievedListener;)V
+PLandroid/net/ipmemorystore/OnBlobRetrievedListener$1;->onBlobRetrieved(Landroid/net/ipmemorystore/StatusParcelable;Ljava/lang/String;Ljava/lang/String;Landroid/net/ipmemorystore/Blob;)V
+PLandroid/net/ipmemorystore/OnBlobRetrievedListener;->toAIDL(Landroid/net/ipmemorystore/OnBlobRetrievedListener;)Landroid/net/ipmemorystore/IOnBlobRetrievedListener;
+PLandroid/net/ipmemorystore/OnStatusListener$1;-><init>(Landroid/net/ipmemorystore/OnStatusListener;)V
+PLandroid/net/ipmemorystore/OnStatusListener$1;->onComplete(Landroid/net/ipmemorystore/StatusParcelable;)V
+PLandroid/net/ipmemorystore/OnStatusListener;->toAIDL(Landroid/net/ipmemorystore/OnStatusListener;)Landroid/net/ipmemorystore/IOnStatusListener;
+HPLandroid/net/ipmemorystore/Status;-><init>(I)V
+PLandroid/net/ipmemorystore/Status;-><init>(Landroid/net/ipmemorystore/StatusParcelable;)V
+PLandroid/net/ipmemorystore/Status;->isSuccess()Z
+PLandroid/net/ipmemorystore/StatusParcelable$1;-><init>()V
+HPLandroid/net/ipmemorystore/StatusParcelable$1;->createFromParcel(Landroid/os/Parcel;)Landroid/net/ipmemorystore/StatusParcelable;
+PLandroid/net/ipmemorystore/StatusParcelable$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLandroid/net/ipmemorystore/StatusParcelable;-><clinit>()V
+HPLandroid/net/ipmemorystore/StatusParcelable;-><init>()V
+HPLandroid/net/ipmemorystore/StatusParcelable;->readFromParcel(Landroid/os/Parcel;)V
+HSPLandroid/net/metrics/INetdEventListener$Stub;-><init>()V
+HPLandroid/net/metrics/INetdEventListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLandroid/net/shared/-$$Lambda$OsobWheG5dMvEj_cOJtueqUBqBI;-><clinit>()V
+PLandroid/net/shared/-$$Lambda$OsobWheG5dMvEj_cOJtueqUBqBI;-><init>()V
+PLandroid/net/shared/-$$Lambda$SYWvjOUPlAZ_O2Z6yfFU9np1858;-><clinit>()V
 PLandroid/net/shared/-$$Lambda$SYWvjOUPlAZ_O2Z6yfFU9np1858;-><init>()V
-PLandroid/net/shared/IpConfigurationParcelableUtil;->fromStableParcelable(Landroid/net/DhcpResultsParcelable;)Landroid/net/DhcpResults;
-PLandroid/net/shared/IpConfigurationParcelableUtil;->fromStableParcelable(Landroid/net/StaticIpConfigurationParcelable;)Landroid/net/StaticIpConfiguration;
-PLandroid/net/shared/IpConfigurationParcelableUtil;->toStableParcelable(Landroid/net/StaticIpConfiguration;)Landroid/net/StaticIpConfigurationParcelable;
-PLandroid/net/shared/LinkPropertiesParcelableUtil;->toStableParcelable(Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo;
-HSPLandroid/net/shared/NetworkMonitorUtils;->isValidationRequired(Landroid/net/NetworkCapabilities;)Z
-HSPLandroid/net/shared/ParcelableUtil;->toParcelableArray(Ljava/util/Collection;Ljava/util/function/Function;Ljava/lang/Class;)[Ljava/lang/Object;
+PLandroid/net/shared/-$$Lambda$SYWvjOUPlAZ_O2Z6yfFU9np1858;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLandroid/net/shared/InitialConfiguration;-><clinit>()V
+PLandroid/net/shared/InitialConfiguration;->copy(Landroid/net/shared/InitialConfiguration;)Landroid/net/shared/InitialConfiguration;
+HPLandroid/net/shared/IpConfigurationParcelableUtil;->fromStableParcelable(Landroid/net/DhcpResultsParcelable;)Landroid/net/DhcpResults;
+HPLandroid/net/shared/IpConfigurationParcelableUtil;->unparcelAddress(Ljava/lang/String;)Ljava/net/InetAddress;
+HPLandroid/net/shared/NetworkMonitorUtils;->isPrivateDnsValidationRequired(Landroid/net/NetworkCapabilities;)Z
+HPLandroid/net/shared/ParcelableUtil;->fromParcelableArray([Ljava/lang/Object;Ljava/util/function/Function;)Ljava/util/ArrayList;
+HPLandroid/net/shared/ParcelableUtil;->toParcelableArray(Ljava/util/Collection;Ljava/util/function/Function;Ljava/lang/Class;)[Ljava/lang/Object;
 HSPLandroid/net/shared/PrivateDnsConfig;-><init>()V
-HSPLandroid/net/shared/PrivateDnsConfig;->inStrictMode()Z
-HSPLandroid/net/shared/PrivateDnsConfig;->toParcel()Landroid/net/PrivateDnsConfigParcel;
-HSPLandroid/net/shared/PrivateDnsConfig;->toString()Ljava/lang/String;
+PLandroid/net/shared/PrivateDnsConfig;-><init>(Ljava/lang/String;[Ljava/net/InetAddress;)V
+HSPLandroid/net/shared/PrivateDnsConfig;-><init>(Z)V
+PLandroid/net/shared/PrivateDnsConfig;->fromParcel(Landroid/net/PrivateDnsConfigParcel;)Landroid/net/shared/PrivateDnsConfig;
+HPLandroid/net/shared/PrivateDnsConfig;->inStrictMode()Z
+PLandroid/net/shared/PrivateDnsConfig;->toParcel()Landroid/net/PrivateDnsConfigParcel;
+HPLandroid/net/shared/PrivateDnsConfig;->toString()Ljava/lang/String;
 PLandroid/net/shared/ProvisioningConfiguration$Builder;-><init>()V
 PLandroid/net/shared/ProvisioningConfiguration$Builder;->build()Landroid/net/shared/ProvisioningConfiguration;
 PLandroid/net/shared/ProvisioningConfiguration$Builder;->withApfCapabilities(Landroid/net/apf/ApfCapabilities;)Landroid/net/shared/ProvisioningConfiguration$Builder;
 PLandroid/net/shared/ProvisioningConfiguration$Builder;->withDisplayName(Ljava/lang/String;)Landroid/net/shared/ProvisioningConfiguration$Builder;
 PLandroid/net/shared/ProvisioningConfiguration$Builder;->withNetwork(Landroid/net/Network;)Landroid/net/shared/ProvisioningConfiguration$Builder;
 PLandroid/net/shared/ProvisioningConfiguration$Builder;->withPreDhcpAction()Landroid/net/shared/ProvisioningConfiguration$Builder;
-PLandroid/net/shared/ProvisioningConfiguration$Builder;->withRandomMacAddress()Landroid/net/shared/ProvisioningConfiguration$Builder;
+PLandroid/net/shared/ProvisioningConfiguration$Builder;->withProvisioningTimeoutMs(I)Landroid/net/shared/ProvisioningConfiguration$Builder;
+PLandroid/net/shared/ProvisioningConfiguration;-><init>()V
 PLandroid/net/shared/ProvisioningConfiguration;-><init>(Landroid/net/shared/ProvisioningConfiguration;)V
 PLandroid/net/shared/ProvisioningConfiguration;->toStableParcelable()Landroid/net/ProvisioningConfigurationParcelable;
+PLandroid/net/shared/RouteUtils$1;-><clinit>()V
+PLandroid/net/shared/RouteUtils$ModifyOperation;-><clinit>()V
+PLandroid/net/shared/RouteUtils$ModifyOperation;-><init>(Ljava/lang/String;I)V
+PLandroid/net/shared/RouteUtils$ModifyOperation;->values()[Landroid/net/shared/RouteUtils$ModifyOperation;
+HPLandroid/net/shared/RouteUtils;->findNextHop(Landroid/net/RouteInfo;)Ljava/lang/String;
+HPLandroid/net/shared/RouteUtils;->modifyRoute(Landroid/net/INetd;Landroid/net/shared/RouteUtils$ModifyOperation;ILandroid/net/RouteInfo;)V
+PLandroid/net/util/InterfaceParams;->getByName(Ljava/lang/String;)Landroid/net/util/InterfaceParams;
+PLandroid/net/util/InterfaceParams;->getNetworkInterfaceByName(Ljava/lang/String;)Ljava/net/NetworkInterface;
+HPLandroid/net/util/KeepalivePacketDataUtil;->toStableParcelable(Landroid/net/NattKeepalivePacketData;)Landroid/net/NattKeepalivePacketDataParcelable;
+HSPLandroid/net/util/NetdService;-><clinit>()V
+HSPLandroid/net/util/NetdService;->get()Landroid/net/INetd;
 HSPLandroid/net/util/NetdService;->get(J)Landroid/net/INetd;
-HSPLandroid/net/util/PrefixUtils;->pfx(Ljava/lang/String;)Landroid/net/IpPrefix;
+HSPLandroid/net/util/NetdService;->getInstance()Landroid/net/INetd;
+HSPLandroid/net/util/SharedLog$Category;-><clinit>()V
 HSPLandroid/net/util/SharedLog$Category;-><init>(Ljava/lang/String;I)V
+HSPLandroid/net/util/SharedLog;-><init>(ILjava/lang/String;)V
+HSPLandroid/net/util/SharedLog;-><init>(Landroid/util/LocalLog;Ljava/lang/String;Ljava/lang/String;)V
+HSPLandroid/net/util/SharedLog;-><init>(Ljava/lang/String;)V
 PLandroid/net/util/SharedLog;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLandroid/net/util/SharedLog;->forSubComponent(Ljava/lang/String;)Landroid/net/util/SharedLog;
+HSPLandroid/net/util/SharedLog;->i(Ljava/lang/String;)V
+HSPLandroid/net/util/SharedLog;->isRootLogInstance()Z
 HSPLandroid/net/util/SharedLog;->log(Ljava/lang/String;)V
 HSPLandroid/net/util/SharedLog;->logLine(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
-HSPLandroid/net/util/SharedLog;->mark(Ljava/lang/String;)V
-HSPLandroid/net/util/VersionedBroadcastListener$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLandroid/net/util/VersionedBroadcastListener;->startListening()V
+HSPLandroid/net/util/SharedLog;->record(Landroid/net/util/SharedLog$Category;Ljava/lang/String;)Ljava/lang/String;
+HSPLandroid/os/BatteryStatsInternal;-><init>()V
+HSPLandroid/os/IIdmap2$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
 HSPLandroid/os/IIdmap2$Stub$Proxy;->createIdmap(Ljava/lang/String;Ljava/lang/String;IZI)Ljava/lang/String;
 HSPLandroid/os/IIdmap2$Stub$Proxy;->getIdmapPath(Ljava/lang/String;I)Ljava/lang/String;
 PLandroid/os/IIdmap2$Stub$Proxy;->removeIdmap(Ljava/lang/String;I)Z
 HSPLandroid/os/IIdmap2$Stub$Proxy;->verifyIdmap(Ljava/lang/String;IZI)Z
-PLcom/android/server/-$$Lambda$1kw1pGRY14l4iRI8vioJeswbbZ0;->accept(Ljava/lang/Object;)V
+HSPLandroid/os/IIdmap2$Stub;->asInterface(Landroid/os/IBinder;)Landroid/os/IIdmap2;
+HSPLandroid/os/UserManagerInternal;-><init>()V
+HSPLcom/android/server/-$$Lambda$1xUIIN0BU8izGcnYWT-VzczLBFU;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$1xUIIN0BU8izGcnYWT-VzczLBFU;-><init>()V
 HSPLcom/android/server/-$$Lambda$1xUIIN0BU8izGcnYWT-VzczLBFU;->get(Lcom/android/server/NsdService$NativeCallbackReceiver;)Lcom/android/server/NsdService$DaemonConnection;
-HSPLcom/android/server/-$$Lambda$AlarmManagerService$2$Eo-D98J-N9R2METkD-12gPs320c;->run()V
+PLcom/android/server/-$$Lambda$AlarmManagerService$2$Eo-D98J-N9R2METkD-12gPs320c;-><init>(Lcom/android/server/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$2$Eo-D98J-N9R2METkD-12gPs320c;->run()V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$3$jIkPWjqS66vG6aFVQoHxR2w4HPE;-><init>(Lcom/android/server/AlarmManagerService$3;Landroid/app/IAlarmCompleteListener;)V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$3$jIkPWjqS66vG6aFVQoHxR2w4HPE;->run()V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$Batch$Xltkj5RTKUMuFVeuavpuY7-Ogzc;-><init>(Lcom/android/server/AlarmManagerService$Alarm;)V
 PLcom/android/server/-$$Lambda$AlarmManagerService$Batch$Xltkj5RTKUMuFVeuavpuY7-Ogzc;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/-$$Lambda$AlarmManagerService$ZVedZIeWdB3G6AGM0_-9P_GEO24;-><init>(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
 HSPLcom/android/server/-$$Lambda$AlarmManagerService$ZVedZIeWdB3G6AGM0_-9P_GEO24;->test(Ljava/lang/Object;)Z
-PLcom/android/server/-$$Lambda$AlarmManagerService$gKXZ864LsHRTGbnNeLAgHKL2YPk;->run()V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$gKXZ864LsHRTGbnNeLAgHKL2YPk;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$gKXZ864LsHRTGbnNeLAgHKL2YPk;->run()V
+HSPLcom/android/server/-$$Lambda$AlarmManagerService$nSJw2tKfoL3YIrKDtszoL44jcSM;-><init>(Lcom/android/server/AlarmManagerService;)V
 PLcom/android/server/-$$Lambda$AlarmManagerService$nSJw2tKfoL3YIrKDtszoL44jcSM;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/-$$Lambda$AlarmManagerService$qehVSjTLWvtJYPGgKh2mkJ6ePnk;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/-$$Lambda$AppStateTracker$zzioY8jvEm-1GnJ13CUiQGauPEE;->accept(Ljava/lang/Object;)V
+PLcom/android/server/-$$Lambda$AlarmManagerService$nhEd_CDoc7mzdNLRwGUhwl9TaGk;-><init>(I)V
+PLcom/android/server/-$$Lambda$AlarmManagerService$nhEd_CDoc7mzdNLRwGUhwl9TaGk;->test(Ljava/lang/Object;)Z
+PLcom/android/server/-$$Lambda$AlarmManagerService$qehVSjTLWvtJYPGgKh2mkJ6ePnk;-><init>(I)V
+HPLcom/android/server/-$$Lambda$AlarmManagerService$qehVSjTLWvtJYPGgKh2mkJ6ePnk;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/-$$Lambda$AppStateTracker$zzioY8jvEm-1GnJ13CUiQGauPEE;-><init>(Lcom/android/server/AppStateTracker;)V
+PLcom/android/server/-$$Lambda$AppStateTracker$zzioY8jvEm-1GnJ13CUiQGauPEE;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$BatteryService$2x73lvpB0jctMSVP4qb9sHAqRPw;-><init>(Landroid/content/Intent;)V
 HSPLcom/android/server/-$$Lambda$BatteryService$2x73lvpB0jctMSVP4qb9sHAqRPw;->run()V
-PLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$7Y-B9O7NDYgUY9hQvFzC2FQ2V5w;->onValues(II)V
-PLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$9z3zqgxtPzBN8Qoni5nHVb0m8EY;->onValues(IJ)V
-PLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$DM4ow6LC--JYWBfhHp2f1JW8nww;->onValues(II)V
-PLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$KZAu97wwr_7_MI0awCjQTzdIuAI;->onValues(II)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$7Y-B9O7NDYgUY9hQvFzC2FQ2V5w;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$7Y-B9O7NDYgUY9hQvFzC2FQ2V5w;->onValues(II)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$9z3zqgxtPzBN8Qoni5nHVb0m8EY;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$9z3zqgxtPzBN8Qoni5nHVb0m8EY;->onValues(IJ)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$DM4ow6LC--JYWBfhHp2f1JW8nww;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$DM4ow6LC--JYWBfhHp2f1JW8nww;->onValues(II)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$JTQ79fl14NyImudsJhx-Mp1dJI8;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+PLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$JTQ79fl14NyImudsJhx-Mp1dJI8;->onValues(II)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$KZAu97wwr_7_MI0awCjQTzdIuAI;-><init>(Landroid/util/MutableInt;Landroid/os/BatteryProperty;)V
+HPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$KZAu97wwr_7_MI0awCjQTzdIuAI;->onValues(II)V
+HSPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$muNPoFqxU6pF6un7sF70iW4-Fus;-><init>(Lcom/android/server/BatteryService$BatteryPropertiesRegistrar;)V
+HSPLcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$muNPoFqxU6pF6un7sF70iW4-Fus;->run()V
+HSPLcom/android/server/-$$Lambda$BatteryService$D1kwd7L7yyqN5niz3KWkTepVmUk;-><init>(Lcom/android/server/BatteryService;)V
 HSPLcom/android/server/-$$Lambda$BatteryService$D1kwd7L7yyqN5niz3KWkTepVmUk;->run()V
-PLcom/android/server/-$$Lambda$ConnectivityService$4$kjr9gauOtOpxwsI0DG7Gt6Wd1hI;->run()V
-HSPLcom/android/server/-$$Lambda$ConnectivityService$SFqiR4Pfksb1C7csMC3uNxCllR8;->run()V
+HPLcom/android/server/-$$Lambda$ConnectivityService$3$_itgrpHpWu3QvA9Wb0gtsEYJWZY;-><init>(Lcom/android/server/ConnectivityService$3;IZLjava/lang/String;I)V
+HPLcom/android/server/-$$Lambda$ConnectivityService$3$_itgrpHpWu3QvA9Wb0gtsEYJWZY;->run()V
+HSPLcom/android/server/-$$Lambda$ConnectivityService$HGNmLJFn9hb5C4M_qIm2DAASfeY;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;)V
+PLcom/android/server/-$$Lambda$ConnectivityService$HGNmLJFn9hb5C4M_qIm2DAASfeY;->binderDied()V
+PLcom/android/server/-$$Lambda$ConnectivityService$OIhIcUZjeJ-ci4rP6veezE8o67U;-><init>(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
+PLcom/android/server/-$$Lambda$ConnectivityService$OIhIcUZjeJ-ci4rP6veezE8o67U;->run()V
+HSPLcom/android/server/-$$Lambda$ConnectivityService$SFqiR4Pfksb1C7csMC3uNxCllR8;-><init>(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/-$$Lambda$ConnectivityService$SFqiR4Pfksb1C7csMC3uNxCllR8;->run()V
+PLcom/android/server/-$$Lambda$ConnectivityService$_NU7EIcPVS-uF_gWH_NWN_gBL4w;-><clinit>()V
 PLcom/android/server/-$$Lambda$ConnectivityService$_NU7EIcPVS-uF_gWH_NWN_gBL4w;-><init>()V
 PLcom/android/server/-$$Lambda$ConnectivityService$_NU7EIcPVS-uF_gWH_NWN_gBL4w;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/-$$Lambda$ConnectivityService$iOdlQdHoQM14teTS-EPRH-RRL3k;-><clinit>()V
 PLcom/android/server/-$$Lambda$ConnectivityService$iOdlQdHoQM14teTS-EPRH-RRL3k;-><init>()V
-PLcom/android/server/-$$Lambda$ConnectivityService$iOdlQdHoQM14teTS-EPRH-RRL3k;->applyAsInt(Ljava/lang/Object;)I
+HPLcom/android/server/-$$Lambda$ConnectivityService$iOdlQdHoQM14teTS-EPRH-RRL3k;->applyAsInt(Ljava/lang/Object;)I
+HPLcom/android/server/-$$Lambda$ConnectivityService$uvmt4yGRo-ufWZED19neBxJaTNk;-><init>(Lcom/android/server/ConnectivityService;)V
+HPLcom/android/server/-$$Lambda$ConnectivityService$uvmt4yGRo-ufWZED19neBxJaTNk;->run()V
+PLcom/android/server/-$$Lambda$ConnectivityService$vGRhfNpFTw0hellWUlmBolfzRy8;-><init>(Lcom/android/server/ConnectivityService;Landroid/content/Intent;)V
 PLcom/android/server/-$$Lambda$ConnectivityService$vGRhfNpFTw0hellWUlmBolfzRy8;->runOrThrow()V
+HSPLcom/android/server/-$$Lambda$ContextHubSystemService$q-5gSEKm3he-4vIHcay4DLtf85E;-><init>(Lcom/android/server/ContextHubSystemService;Landroid/content/Context;)V
 HSPLcom/android/server/-$$Lambda$ContextHubSystemService$q-5gSEKm3he-4vIHcay4DLtf85E;->run()V
-HSPLcom/android/server/-$$Lambda$DeviceIdleController$Lhneg3gOUCFQWz6Y-5S75AWemY8;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/-$$Lambda$GraphicsStatsService$2EDVu98hsJvSwNgKvijVLSR3IrQ;->onAlarm()V
+HSPLcom/android/server/-$$Lambda$CountryDetectorService$ESi5ICoEixGJHWdY67G_J38VrJI;-><init>(Lcom/android/server/CountryDetectorService;)V
+HSPLcom/android/server/-$$Lambda$CountryDetectorService$ESi5ICoEixGJHWdY67G_J38VrJI;->run()V
+HPLcom/android/server/-$$Lambda$CountryDetectorService$UdoYpHRrhGb-PF6QTwQ4SluOe20;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
+HPLcom/android/server/-$$Lambda$CountryDetectorService$UdoYpHRrhGb-PF6QTwQ4SluOe20;->run()V
+HSPLcom/android/server/-$$Lambda$CountryDetectorService$YZWlE4qqoDuiwnkSrasi91p2-Tk;-><init>(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/-$$Lambda$CountryDetectorService$YZWlE4qqoDuiwnkSrasi91p2-Tk;->onCountryDetected(Landroid/location/Country;)V
+PLcom/android/server/-$$Lambda$CountryDetectorService$fFSTHORponDwFf2wlaJLUdUhirQ;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/Country;)V
+PLcom/android/server/-$$Lambda$CountryDetectorService$fFSTHORponDwFf2wlaJLUdUhirQ;->run()V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$6YGiVtgCnlJ0hMIeX5TzlFUaNrY;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/-$$Lambda$ExplicitHealthCheckController$6YGiVtgCnlJ0hMIeX5TzlFUaNrY;->onResult(Landroid/os/Bundle;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$MJhpX-SveTcXQEYQTQa3k6RpjzU;-><init>(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$MJhpX-SveTcXQEYQTQa3k6RpjzU;->onResult(Landroid/os/Bundle;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$NCzfilqDrFIbp6BuyCJrDsdAk5I;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/List;Ljava/util/Set;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$NCzfilqDrFIbp6BuyCJrDsdAk5I;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$_PgTaUvckhKQczm_86P6Mowec48;-><init>(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$_PgTaUvckhKQczm_86P6Mowec48;->onResult(Landroid/os/Bundle;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$fE2pZ6ZhwFEJPuOl0ochqPnSmyI;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/-$$Lambda$ExplicitHealthCheckController$fE2pZ6ZhwFEJPuOl0ochqPnSmyI;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$ucIBQc_IW2iYt6j4dngAncLT6nQ;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+PLcom/android/server/-$$Lambda$ExplicitHealthCheckController$ucIBQc_IW2iYt6j4dngAncLT6nQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$x4g41SYVR_nHQxV-RQY6VIfh1zs;-><init>(Lcom/android/server/ExplicitHealthCheckController;Ljava/util/Set;)V
+HSPLcom/android/server/-$$Lambda$ExplicitHealthCheckController$x4g41SYVR_nHQxV-RQY6VIfh1zs;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$GnssManagerService$a17GVVAgEci0VYD4EMvKwuPLhdQ;-><init>(Lcom/android/server/GnssManagerService;)V
+HSPLcom/android/server/-$$Lambda$GnssManagerService$a17GVVAgEci0VYD4EMvKwuPLhdQ;->onUidImportance(II)V
+HSPLcom/android/server/-$$Lambda$GnssManagerService$mZAgy7PA5q3tB1aq7tHsX4xM14E;-><init>(Lcom/android/server/GnssManagerService;II)V
+HSPLcom/android/server/-$$Lambda$GnssManagerService$mZAgy7PA5q3tB1aq7tHsX4xM14E;->run()V
+HSPLcom/android/server/-$$Lambda$GraphicsStatsService$2EDVu98hsJvSwNgKvijVLSR3IrQ;-><init>(Lcom/android/server/GraphicsStatsService;)V
+PLcom/android/server/-$$Lambda$GraphicsStatsService$2EDVu98hsJvSwNgKvijVLSR3IrQ;->onAlarm()V
+HSPLcom/android/server/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;-><init>()V
+HSPLcom/android/server/-$$Lambda$IpSecService$AnqunmSwm_yQvDDEPg-gokhVs5M;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$IpSecService$AnqunmSwm_yQvDDEPg-gokhVs5M;-><init>()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$1$HAAnoF9DI9FvCHK_geH89--2z2I;-><init>(Lcom/android/server/LocationManagerService$1;)V
 HSPLcom/android/server/-$$Lambda$LocationManagerService$1$HAAnoF9DI9FvCHK_geH89--2z2I;->run()V
-HSPLcom/android/server/-$$Lambda$LocationManagerService$5dIxyLSEBQpWtBou-Lju9O-NJOM;->accept(Ljava/lang/Object;)V
-PLcom/android/server/-$$Lambda$LocationManagerService$LocationProvider$R123rmQLJrCf8yBSKrQD6XPhpZs;->run()V
-HSPLcom/android/server/-$$Lambda$LocationManagerService$LocationProvider$nsL4uwojBLPzs1TzMfpQIBSm7p0;->run()V
-PLcom/android/server/-$$Lambda$LocationManagerService$bojY6dMaI07zh6_sF7ERxgmk6U0;->getPackages(I)[Ljava/lang/String;
-HSPLcom/android/server/-$$Lambda$LocationManagerService$c--nwJDEsjSPyI_6OK8sVC5iClY;->onUidImportance(II)V
-PLcom/android/server/-$$Lambda$LocationManagerService$pUnNobtfzLC9eAlVqCMKySwbo3U;->getPackages(I)[Ljava/lang/String;
-HSPLcom/android/server/-$$Lambda$LocationManagerService$ta09t47XwQMZdhPftO1K9zdy5Mk;->onPermissionsChanged(I)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$56u_uxjuANYKBEJg0XAb0TfpovM;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$56u_uxjuANYKBEJg0XAb0TfpovM;->onSettingChanged()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$6axYIgaetwnztBT8L9-07FzvA1k;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$6axYIgaetwnztBT8L9-07FzvA1k;->accept(Ljava/lang/Object;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$7UVIPM1Ndi2blDc1rAeJdqMBvh8;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Ljava/lang/String;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$7UVIPM1Ndi2blDc1rAeJdqMBvh8;->onCancel()V
+PLcom/android/server/-$$Lambda$LocationManagerService$9-Bb7czX4njtJ272aPH91IsacAY;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Ljava/lang/String;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$9-Bb7czX4njtJ272aPH91IsacAY;->onCancel()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$AgevX9G4cx2TbNzr7MYT3YPtASs;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$AgevX9G4cx2TbNzr7MYT3YPtASs;->onAppForegroundChanged(IZ)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$BQNQ1vKVv2dgsjR1d4p8xU8o1us;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$BQNQ1vKVv2dgsjR1d4p8xU8o1us;->onUidImportance(II)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$BY2uqgE48i0Shvo1FGLa9toRxBA;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$BY2uqgE48i0Shvo1FGLa9toRxBA;->onSettingChanged()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$DJ4kMod0tVB-vqSawrWCXTCoPAM;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$EWYAKDMwH-ZXy5A8J9erCTIUqKY;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$GnHas6J3gXGjXx6KfNuV_GzNl9w;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$GnHas6J3gXGjXx6KfNuV_GzNl9w;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/-$$Lambda$LocationManagerService$HZIPtgYCt4b4zdEJtC8qjcHStVE;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$HZIPtgYCt4b4zdEJtC8qjcHStVE;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/-$$Lambda$LocationManagerService$KXKNxpIZDrysWhFilQxLdYekB3M;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$LocationProviderManager$neXVKsR0MS1O6DaHXSdf3TVC-rc;-><init>(Lcom/android/server/LocationManagerService$LocationProviderManager;Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$LocationProviderManager$neXVKsR0MS1O6DaHXSdf3TVC-rc;->run()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$Nht7c6P7I1-MJqXp4qiS_HUIjzY;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$Nht7c6P7I1-MJqXp4qiS_HUIjzY;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/-$$Lambda$LocationManagerService$QVf9Y4g7BmVBQBlkUO5oHLmMW2o;-><init>(Lcom/android/server/LocationManagerService;)V
+HPLcom/android/server/-$$Lambda$LocationManagerService$QVf9Y4g7BmVBQBlkUO5oHLmMW2o;->run()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$V3FRncuMEn-4R6Dd2zsTs4m0dWM;-><init>(Lcom/android/server/LocationManagerService;II)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$V3FRncuMEn-4R6Dd2zsTs4m0dWM;->run()V
+PLcom/android/server/-$$Lambda$LocationManagerService$XWulT08IueAbw1NBjxLvw-T5cfc;-><init>(Lcom/android/server/LocationManagerService;Landroid/os/PowerSaveState;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$XWulT08IueAbw1NBjxLvw-T5cfc;->run()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$cH8JMN3scBU_51q5WfUtASFQZJ0;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$dMJ6CgaZhEyiV2592-lxxrexZAQ;-><init>(Lcom/android/server/LocationManagerService;Landroid/os/PowerSaveState;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$dMJ6CgaZhEyiV2592-lxxrexZAQ;->run()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$es-cu7rp_R0xbJzDRj4qpZNL7vc;-><init>(Lcom/android/server/LocationManagerService;)V
+HPLcom/android/server/-$$Lambda$LocationManagerService$es-cu7rp_R0xbJzDRj4qpZNL7vc;->onPermissionsChanged(I)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$fWSrYiKaBfOFmdeiwC9Lx7S68B4;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$nxs_FejUjcjw2UUIeDY3TYTRJs4;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$nxs_FejUjcjw2UUIeDY3TYTRJs4;->onSettingChanged()V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$oIimlThgbbmKRAN80H4tpnruGtk;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/-$$Lambda$LocationManagerService$oIimlThgbbmKRAN80H4tpnruGtk;->onSettingChanged(I)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$qbZh8GXCTpZ1wNP3qw1VXZxlKQg;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/-$$Lambda$LocationManagerService$qbZh8GXCTpZ1wNP3qw1VXZxlKQg;->onSettingChanged(I)V
+PLcom/android/server/-$$Lambda$LooperStatsService$Byo6QAxZpVXDCMtjrcYJc6YLAks;-><clinit>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$Byo6QAxZpVXDCMtjrcYJc6YLAks;-><init>()V
-PLcom/android/server/-$$Lambda$LooperStatsService$Byo6QAxZpVXDCMtjrcYJc6YLAks;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/-$$Lambda$LooperStatsService$Byo6QAxZpVXDCMtjrcYJc6YLAks;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$LooperStatsService$Vzysuo2tO86qjfcWeh1Rdb47NQQ;-><clinit>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$Vzysuo2tO86qjfcWeh1Rdb47NQQ;-><init>()V
-PLcom/android/server/-$$Lambda$LooperStatsService$Vzysuo2tO86qjfcWeh1Rdb47NQQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/-$$Lambda$LooperStatsService$Vzysuo2tO86qjfcWeh1Rdb47NQQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$LooperStatsService$XjYmSR91xdWG1Xgt-Gj9GBZZbjk;-><clinit>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$XjYmSR91xdWG1Xgt-Gj9GBZZbjk;-><init>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$XjYmSR91xdWG1Xgt-Gj9GBZZbjk;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$LooperStatsService$XtFJEDeyYRT79ZkVP96XkHribxg;-><clinit>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$XtFJEDeyYRT79ZkVP96XkHribxg;-><init>()V
 PLcom/android/server/-$$Lambda$LooperStatsService$XtFJEDeyYRT79ZkVP96XkHribxg;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$NetworkManagementService$15DusjG2gzn5UASV-lMS3BUUn9c;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$IdleTimerParams;)V
 PLcom/android/server/-$$Lambda$NetworkManagementService$15DusjG2gzn5UASV-lMS3BUUn9c;->run()V
-HSPLcom/android/server/-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$$Lambda$NetworkManagementService$FsR_UD5xfj4hgrwGdX74wq881Bk;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0;-><init>(IZJ)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$FsR_UD5xfj4hgrwGdX74wq881Bk;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$FsR_UD5xfj4hgrwGdX74wq881Bk;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$JKmkb4AIm_PPzQp1XOHOgPPRswo;-><init>(Landroid/net/RouteInfo;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$JKmkb4AIm_PPzQp1XOHOgPPRswo;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE;->run()V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;IZJI)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$KpFpi2qBs2OPscTclZ3JRRr-G-g;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$KpFpi2qBs2OPscTclZ3JRRr-G-g;->run()V
-PLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$L7i_Z-ii6zMptHCt2_Igy3iBvKk;->run()V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$L7i_Z-ii6zMptHCt2_Igy3iBvKk;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$L7i_Z-ii6zMptHCt2_Igy3iBvKk;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$QjjL0oku3yfQh6xuCG2xu7lWiSM;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;ZLandroid/net/RouteInfo;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$QjjL0oku3yfQh6xuCG2xu7lWiSM;->run()V
-PLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$h2iz-IbnHpQ97mlJ7G62W2mmanw;->run()V
+PLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$h2iz-IbnHpQ97mlJ7G62W2mmanw;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$h2iz-IbnHpQ97mlJ7G62W2mmanw;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$hh3pIkVnnzeRGeDRAOOmVvc6VxE;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;J[Ljava/lang/String;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$hh3pIkVnnzeRGeDRAOOmVvc6VxE;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$ne4qDQiQuX7-WNuF8Q_c7HnWnG0;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$ne4qDQiQuX7-WNuF8Q_c7HnWnG0;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$pOV71EYm5PphEVG1PGQnV_c6XiA;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Z)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$pOV71EYm5PphEVG1PGQnV_c6XiA;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$praKgcnQG9FTHNMGfCVPTVY8mK8;-><init>(Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;Ljava/lang/String;Landroid/net/LinkAddress;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$praKgcnQG9FTHNMGfCVPTVY8mK8;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$RVCc8O9RWjyrynN9cyM7inAv-fk;-><init>(Ljava/lang/String;J[Ljava/lang/String;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$RVCc8O9RWjyrynN9cyM7inAv-fk;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$VhSl9D6THA_3jE0unleMmkHavJ0;-><init>(Landroid/net/RouteInfo;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$VhSl9D6THA_3jE0unleMmkHavJ0;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-HSPLcom/android/server/-$$Lambda$NetworkManagementService$YKgmK-4MuJjN-VLuMBhmJy1eWj4;->run()V
+PLcom/android/server/-$$Lambda$NetworkManagementService$YKgmK-4MuJjN-VLuMBhmJy1eWj4;-><init>(Lcom/android/server/NetworkManagementService;I)V
+PLcom/android/server/-$$Lambda$NetworkManagementService$YKgmK-4MuJjN-VLuMBhmJy1eWj4;->run()V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$Yw12yNgo43yul34SibAKDtttAK8;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$Yw12yNgo43yul34SibAKDtttAK8;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$_L953cbquVj0BMBP1MZlSTm0Umg;-><init>(Ljava/lang/String;Z)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$_L953cbquVj0BMBP1MZlSTm0Umg;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$hs6djmKbGd8sG4u1TMglrogNP_s;-><init>(Ljava/lang/String;Landroid/net/LinkAddress;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$hs6djmKbGd8sG4u1TMglrogNP_s;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkManagementService$vX8dVVYxxv3YT9jQuN34bgGgRa8;-><init>(Ljava/lang/String;)V
 HSPLcom/android/server/-$$Lambda$NetworkManagementService$vX8dVVYxxv3YT9jQuN34bgGgRa8;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$$Lambda$NetworkManagementService$xer7k2RLU4mODjrkZqaX89S9gD8;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
-PLcom/android/server/-$$Lambda$PackageWatchdog$Q0WI2EJpRFO1jF_7_YDaj1eGHas;->run()V
-HSPLcom/android/server/-$$Lambda$PackageWatchdog$YWaPZrg-b7PWDORq6WFyD-xtIC8;->run()V
-PLcom/android/server/-$$Lambda$PackageWatchdog$_sPWk0sc-U-bejnv7LJfRG-zUwU;->run()V
-PLcom/android/server/-$$Lambda$PackageWatchdog$a9_AwAvl6vknTazIAvycouLJHwo;->run()V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$xer7k2RLU4mODjrkZqaX89S9gD8;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/-$$Lambda$NetworkManagementService$xer7k2RLU4mODjrkZqaX89S9gD8;->sendCallback(Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/-$$Lambda$NetworkScoreService$vwytA23Qz3U83FJaKiA52aJ1mts;-><init>(Lcom/android/server/NetworkScoreService;)V
+HSPLcom/android/server/-$$Lambda$NetworkScoreService$vwytA23Qz3U83FJaKiA52aJ1mts;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$07YAng9lcuyRJuBYy9Jk3p2pWVY;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$07YAng9lcuyRJuBYy9Jk3p2pWVY;->run()V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$9whbrgN2UsbVDUUSdkrctYqoh5M;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/-$$Lambda$PackageWatchdog$9whbrgN2UsbVDUUSdkrctYqoh5M;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$CQuOnXthwwBaxcS5WoAlJJAz8Tk;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$CQuOnXthwwBaxcS5WoAlJJAz8Tk;->run()V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$Q0WI2EJpRFO1jF_7_YDaj1eGHas;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$Q0WI2EJpRFO1jF_7_YDaj1eGHas;->run()V
+PLcom/android/server/-$$Lambda$PackageWatchdog$VAW1s9zLN90OWS2gosDw9xdVjr8;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/-$$Lambda$PackageWatchdog$VAW1s9zLN90OWS2gosDw9xdVjr8;->run()V
+HPLcom/android/server/-$$Lambda$PackageWatchdog$hFdPWF73rahpzi1hJ-d9hNfUNrY;-><init>(Lcom/android/server/PackageWatchdog;ILjava/util/List;)V
+HPLcom/android/server/-$$Lambda$PackageWatchdog$hFdPWF73rahpzi1hJ-d9hNfUNrY;->run()V
+PLcom/android/server/-$$Lambda$PackageWatchdog$ib8X74W4PjX4xo1uv-QgOpcuf4o;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/-$$Lambda$PackageWatchdog$ib8X74W4PjX4xo1uv-QgOpcuf4o;->run()V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$nOS9OaZO4hPsSe0I8skPT1UgQoo;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/-$$Lambda$PackageWatchdog$nOS9OaZO4hPsSe0I8skPT1UgQoo;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$oAoA92I4TtJeqztFu3XBOLEs7gE;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$uFI2R7Ip9Bh1wQPJqJ5H5A0soVU;-><init>(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$uFI2R7Ip9Bh1wQPJqJ5H5A0soVU;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$PackageWatchdog$vRKcIrucEj03dz6ypRVINZtns1s;-><init>(Lcom/android/server/PackageWatchdog;)V
+PLcom/android/server/-$$Lambda$PackageWatchdog$vRKcIrucEj03dz6ypRVINZtns1s;->run()V
+HSPLcom/android/server/-$$Lambda$PersistentDataBlockService$EZl9OYaT2eNL7kfSr2nKUBjxidk;-><init>(Lcom/android/server/PersistentDataBlockService;)V
 HSPLcom/android/server/-$$Lambda$PersistentDataBlockService$EZl9OYaT2eNL7kfSr2nKUBjxidk;->run()V
+HSPLcom/android/server/-$$Lambda$PinnerService$3$3Ta6TX4Jq9YbpUYE5Y0r8Xt8rBw;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$3$3Ta6TX4Jq9YbpUYE5Y0r8Xt8rBw;-><init>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$3$3Ta6TX4Jq9YbpUYE5Y0r8Xt8rBw;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$PinnerService$3$RQBbrt9b8esLBxJImxDgVTsP34I;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$3$RQBbrt9b8esLBxJImxDgVTsP34I;-><init>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$3$RQBbrt9b8esLBxJImxDgVTsP34I;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/-$$Lambda$PinnerService$6bekYOn4YXi0x7vYNWO40QyA-s8;-><clinit>()V
 PLcom/android/server/-$$Lambda$PinnerService$6bekYOn4YXi0x7vYNWO40QyA-s8;-><init>()V
 PLcom/android/server/-$$Lambda$PinnerService$6bekYOn4YXi0x7vYNWO40QyA-s8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$PinnerService$GeEX-8XoHeV0LEszxat7jOSlrs4;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$GeEX-8XoHeV0LEszxat7jOSlrs4;-><init>()V
 HSPLcom/android/server/-$$Lambda$PinnerService$GeEX-8XoHeV0LEszxat7jOSlrs4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/-$$Lambda$PruneInstantAppsJobService$i4sLSJdxcTXdgPAQZFbP66ZRprE;-><init>(Lcom/android/server/PruneInstantAppsJobService;Landroid/app/job/JobParameters;)V
 PLcom/android/server/-$$Lambda$PruneInstantAppsJobService$i4sLSJdxcTXdgPAQZFbP66ZRprE;->run()V
+PLcom/android/server/-$$Lambda$QDIfseHi3OqlANfwpoMGUUJDtAQ;-><init>(Lcom/android/server/GnssManagerService;)V
+PLcom/android/server/-$$Lambda$QDIfseHi3OqlANfwpoMGUUJDtAQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$QTLvklqCTz22VSzZPEWJs-o0bv4;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$QTLvklqCTz22VSzZPEWJs-o0bv4;-><init>()V
-HSPLcom/android/server/-$$Lambda$QTLvklqCTz22VSzZPEWJs-o0bv4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$QTLvklqCTz22VSzZPEWJs-o0bv4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/-$$Lambda$RescueParty$M16YDzk6heHIMmIiCwHVSe9Y_o8;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/-$$Lambda$RescueParty$M16YDzk6heHIMmIiCwHVSe9Y_o8;->onResult(Landroid/os/Bundle;)V
+HSPLcom/android/server/-$$Lambda$ServiceWatcher$IP3HV4ye72eH3YxzGb9dMfcGWPE;-><init>(Lcom/android/server/ServiceWatcher;)V
 HSPLcom/android/server/-$$Lambda$ServiceWatcher$IP3HV4ye72eH3YxzGb9dMfcGWPE;->run()V
+PLcom/android/server/-$$Lambda$ServiceWatcher$IkMTqqToHuGjKO5Yss6Ka6-7ato;-><init>(Lcom/android/server/ServiceWatcher;)V
+PLcom/android/server/-$$Lambda$ServiceWatcher$IkMTqqToHuGjKO5Yss6Ka6-7ato;->binderDied()V
+HSPLcom/android/server/-$$Lambda$ServiceWatcher$K66HPJls7ga1t3t859fKACfAgZc;-><init>(Lcom/android/server/ServiceWatcher;)V
+HSPLcom/android/server/-$$Lambda$ServiceWatcher$K66HPJls7ga1t3t859fKACfAgZc;->run()V
+HPLcom/android/server/-$$Lambda$ServiceWatcher$b1z9OeL-1VpQ_8p47qz7nMNUpsE;-><init>(Lcom/android/server/ServiceWatcher;Ljava/lang/Object;Lcom/android/server/ServiceWatcher$BlockingBinderRunner;)V
 PLcom/android/server/-$$Lambda$ServiceWatcher$b1z9OeL-1VpQ_8p47qz7nMNUpsE;->call()Ljava/lang/Object;
+HSPLcom/android/server/-$$Lambda$ServiceWatcher$gVk2fFkq2-aamIua2kIpukAFtf8;-><init>(Lcom/android/server/ServiceWatcher;Lcom/android/server/ServiceWatcher$BinderRunner;)V
 HSPLcom/android/server/-$$Lambda$ServiceWatcher$gVk2fFkq2-aamIua2kIpukAFtf8;->run()V
+HPLcom/android/server/-$$Lambda$ServiceWatcher$kpBQqFYVia3SVpOH46tF4fNydw0;-><init>(Lcom/android/server/ServiceWatcher;Lcom/android/server/ServiceWatcher$BinderRunner;)V
+HPLcom/android/server/-$$Lambda$ServiceWatcher$kpBQqFYVia3SVpOH46tF4fNydw0;->run()V
+PLcom/android/server/-$$Lambda$ServiceWatcher$uCZpuTwrOz-CS9PQS2NY1ZXaU8U;-><init>(Lcom/android/server/ServiceWatcher;Landroid/content/ComponentName;)V
 PLcom/android/server/-$$Lambda$ServiceWatcher$uCZpuTwrOz-CS9PQS2NY1ZXaU8U;->run()V
+HSPLcom/android/server/-$$Lambda$ServiceWatcher$uru7j1zD-GiN8rndFZ3KWaTrxYo;-><init>(Lcom/android/server/ServiceWatcher;Landroid/content/ComponentName;Landroid/os/IBinder;)V
 HSPLcom/android/server/-$$Lambda$ServiceWatcher$uru7j1zD-GiN8rndFZ3KWaTrxYo;->run()V
+PLcom/android/server/-$$Lambda$ServiceWatcher$x-WpgD2R0YjDE53WHPzWKGSSc4I;-><init>(Lcom/android/server/ServiceWatcher;Ljava/lang/Object;Lcom/android/server/ServiceWatcher$BlockingBinderRunner;)V
+PLcom/android/server/-$$Lambda$ServiceWatcher$x-WpgD2R0YjDE53WHPzWKGSSc4I;->call()Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$StorageManagerService$iQEwQayMYzs9Ew4L6Gk7kRIO9wM;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/-$$Lambda$StorageManagerService$iQEwQayMYzs9Ew4L6Gk7kRIO9wM;->run()V
+HSPLcom/android/server/-$$Lambda$StorageManagerService$js3bHvdd2Mf8gztNxvL27JoT034;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/-$$Lambda$StorageManagerService$js3bHvdd2Mf8gztNxvL27JoT034;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$5qLn3pqt3aoGcHIU3L45PwnW0vI;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$5qLn3pqt3aoGcHIU3L45PwnW0vI;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$72PvntN28skIthlRYR9w5EhsdX8;-><init>(Lcom/android/server/SystemServer;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$72PvntN28skIthlRYR9w5EhsdX8;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$NlJmG18aPrQduhRqASIdcn7G0z8;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$NlJmG18aPrQduhRqASIdcn7G0z8;-><init>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$NlJmG18aPrQduhRqASIdcn7G0z8;->run()V
-HSPLcom/android/server/-$$Lambda$SystemServer$RIWNR87PnJ4Y6VHItRXU0J6ocqQ;-><init>(Lcom/android/server/SystemServer;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
-HSPLcom/android/server/-$$Lambda$SystemServer$RIWNR87PnJ4Y6VHItRXU0J6ocqQ;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$RfxLu1RawR4j0S9lEwPzwtODxaE;-><clinit>()V
+HSPLcom/android/server/-$$Lambda$SystemServer$RfxLu1RawR4j0S9lEwPzwtODxaE;-><init>()V
+HSPLcom/android/server/-$$Lambda$SystemServer$RfxLu1RawR4j0S9lEwPzwtODxaE;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$TEbRm_G0ejorrajBEvke8XmHuQU;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$TEbRm_G0ejorrajBEvke8XmHuQU;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$UyrPns7R814g-ZEylCbDKhe8It4;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$UyrPns7R814g-ZEylCbDKhe8It4;-><init>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$UyrPns7R814g-ZEylCbDKhe8It4;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$VBGb9VpEls6bUcVBPwYLtX7qDTs;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$VBGb9VpEls6bUcVBPwYLtX7qDTs;-><init>()V
 HSPLcom/android/server/-$$Lambda$SystemServer$VBGb9VpEls6bUcVBPwYLtX7qDTs;->run()V
+HSPLcom/android/server/-$$Lambda$SystemServer$Y1gEdKr_Hb7K7cbTDAo_WOJ-SYI;-><init>(Lcom/android/server/SystemServer;)V
 HSPLcom/android/server/-$$Lambda$SystemServer$Y1gEdKr_Hb7K7cbTDAo_WOJ-SYI;->run()V
-HSPLcom/android/server/-$$Lambda$SystemServerInitThreadPool$7wfLGkZF7FvYZv7xj3ghvuiJJGk;->run()V
-HSPLcom/android/server/-$$Lambda$TelephonyRegistry$ANYH01Imb6dMua6cgKvMEl4kD3I;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/-$$Lambda$TelephonyRegistry$KwKYEFoKdijV5jZbDqX1IUV4CzY;->getOrThrow()Ljava/lang/Object;
-HSPLcom/android/server/-$$Lambda$UiModeManagerService$vYS4_RzjAavNRF50rrGN0tXI5JM;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$c50amMOcae1K0NdkHHoWNGvSMJQ;-><init>(Lcom/android/server/SystemServer;Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/-$$Lambda$SystemServer$c50amMOcae1K0NdkHHoWNGvSMJQ;->run()V
+PLcom/android/server/-$$Lambda$SystemServer$zn6ji6g70a_qrK5QZEPCaarZSik;-><clinit>()V
+PLcom/android/server/-$$Lambda$SystemServer$zn6ji6g70a_qrK5QZEPCaarZSik;-><init>()V
+PLcom/android/server/-$$Lambda$SystemServer$zn6ji6g70a_qrK5QZEPCaarZSik;->onModuleServiceConnected(Landroid/os/IBinder;)V
+HSPLcom/android/server/-$$Lambda$SystemServerInitThreadPool$o2_GLo0lnkotYmRdTfg66UETEwQ;-><init>(Lcom/android/server/SystemServerInitThreadPool;Ljava/lang/String;Ljava/lang/Runnable;)V
+HSPLcom/android/server/-$$Lambda$SystemServerInitThreadPool$o2_GLo0lnkotYmRdTfg66UETEwQ;->run()V
+PLcom/android/server/-$$Lambda$TelephonyRegistry$1bce8MzlZGgWfCoSiX5udUvFDQ0;-><init>(Lcom/android/server/TelephonyRegistry;)V
+PLcom/android/server/-$$Lambda$TelephonyRegistry$1bce8MzlZGgWfCoSiX5udUvFDQ0;->test(I)Z
+HPLcom/android/server/-$$Lambda$TelephonyRegistry$ANYH01Imb6dMua6cgKvMEl4kD3I;-><init>(Lcom/android/server/TelephonyRegistry;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)V
+HPLcom/android/server/-$$Lambda$TelephonyRegistry$ANYH01Imb6dMua6cgKvMEl4kD3I;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/-$$Lambda$TelephonyRegistry$KwKYEFoKdijV5jZbDqX1IUV4CzY;-><init>(Lcom/android/server/TelephonyRegistry;Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)V
+HPLcom/android/server/-$$Lambda$TelephonyRegistry$KwKYEFoKdijV5jZbDqX1IUV4CzY;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$UiModeManagerService$10$s3H4QPM2YRtAd9qa2Ja54k7yJO0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/-$$Lambda$UiModeManagerService$10$s3H4QPM2YRtAd9qa2Ja54k7yJO0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/-$$Lambda$UiModeManagerService$9$ytrifY2iawCLCBtYLrmL70q1UhI;-><init>(Ljava/lang/String;)V
+PLcom/android/server/-$$Lambda$UiModeManagerService$9$ytrifY2iawCLCBtYLrmL70q1UhI;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$AwUHdh7CYhroUMaGm35a4uvZcnY;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/-$$Lambda$UiModeManagerService$AwUHdh7CYhroUMaGm35a4uvZcnY;->onAlarm()V
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$bGpxq9ta5GBYtiUBAOy4iNtThus;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/-$$Lambda$UiModeManagerService$bGpxq9ta5GBYtiUBAOy4iNtThus;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$vYS4_RzjAavNRF50rrGN0tXI5JM;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/-$$Lambda$UiModeManagerService$vYS4_RzjAavNRF50rrGN0tXI5JM;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$vuGxqIEDBezs_Xyz-NAh0Bonp5g;-><init>(Lcom/android/server/UiModeManagerService;)V
 HSPLcom/android/server/-$$Lambda$UiModeManagerService$vuGxqIEDBezs_Xyz-NAh0Bonp5g;->run()V
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$wttJpnJnECgc-2ud4hu2A5dSOPg;-><init>(Lcom/android/server/UiModeManagerService;)V
+HSPLcom/android/server/-$$Lambda$UiModeManagerService$wttJpnJnECgc-2ud4hu2A5dSOPg;->run()V
+HSPLcom/android/server/-$$Lambda$YWiwiKm_Qgqb55C6tTuq_n2JzdY;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$YWiwiKm_Qgqb55C6tTuq_n2JzdY;-><init>()V
 HSPLcom/android/server/-$$Lambda$YWiwiKm_Qgqb55C6tTuq_n2JzdY;->run()V
+PLcom/android/server/-$$Lambda$htemI6hNv3kq1UVGrXpRlPIVXRU;-><clinit>()V
+PLcom/android/server/-$$Lambda$htemI6hNv3kq1UVGrXpRlPIVXRU;-><init>()V
+PLcom/android/server/-$$Lambda$htemI6hNv3kq1UVGrXpRlPIVXRU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;-><init>()V
-PLcom/android/server/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/-$$Lambda$jMDA_C1bkT6orVkYqrEdgiGSDI0;-><init>(Lcom/android/server/GnssManagerService;)V
+PLcom/android/server/-$$Lambda$jMDA_C1bkT6orVkYqrEdgiGSDI0;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;-><clinit>()V
 HSPLcom/android/server/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;-><init>()V
 PLcom/android/server/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/AlarmManagerService$1;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I
-HSPLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/AlarmManagerService$2;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
-HSPLcom/android/server/AlarmManagerService$2;->lambda$doAlarm$0$AlarmManagerService$2(Landroid/app/IAlarmCompleteListener;)V
+HSPLcom/android/server/-$$Lambda$u6uWKONNslLDvDcMfFfe2etQmKg;-><clinit>()V
+HSPLcom/android/server/-$$Lambda$u6uWKONNslLDvDcMfFfe2etQmKg;-><init>()V
+HPLcom/android/server/-$$Lambda$u6uWKONNslLDvDcMfFfe2etQmKg;->uptimeMillis()J
+HSPLcom/android/server/AlarmManagerService$1;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$1;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I
+HPLcom/android/server/AlarmManagerService$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/AlarmManagerService$2;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$2;->binderDied(Landroid/os/IBinder;)V
+HPLcom/android/server/AlarmManagerService$2;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
+HPLcom/android/server/AlarmManagerService$2;->lambda$doAlarm$0$AlarmManagerService$2(Landroid/app/IAlarmCompleteListener;)V
+HSPLcom/android/server/AlarmManagerService$3;-><init>(Lcom/android/server/AlarmManagerService;)V
 HSPLcom/android/server/AlarmManagerService$3;->currentNetworkTimeMillis()J
+HPLcom/android/server/AlarmManagerService$3;->doAlarm(Landroid/app/IAlarmCompleteListener;)V
 PLcom/android/server/AlarmManagerService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/AlarmManagerService$3;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
 PLcom/android/server/AlarmManagerService$3;->getNextWakeFromIdleTime()J
+HPLcom/android/server/AlarmManagerService$3;->lambda$doAlarm$0$AlarmManagerService$3(Landroid/app/IAlarmCompleteListener;)V
 HSPLcom/android/server/AlarmManagerService$3;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
 HSPLcom/android/server/AlarmManagerService$3;->set(Ljava/lang/String;IJJJILandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;)V
-HSPLcom/android/server/AlarmManagerService$3;->setTime(J)Z
-HSPLcom/android/server/AlarmManagerService$3;->setTimeZone(Ljava/lang/String;)V
-PLcom/android/server/AlarmManagerService$4;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$4;->compare(Lcom/android/server/AlarmManagerService$FilterStats;Lcom/android/server/AlarmManagerService$FilterStats;)I
-PLcom/android/server/AlarmManagerService$4;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/AlarmManagerService$5;->compare(Lcom/android/server/AlarmManagerService$FilterStats;Lcom/android/server/AlarmManagerService$FilterStats;)I
-PLcom/android/server/AlarmManagerService$5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/AlarmManagerService$3;->setTime(J)Z
+PLcom/android/server/AlarmManagerService$3;->setTimeZone(Ljava/lang/String;)V
+HSPLcom/android/server/AlarmManagerService$4;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$4;->compare(Lcom/android/server/AlarmManagerService$FilterStats;Lcom/android/server/AlarmManagerService$FilterStats;)I
+HPLcom/android/server/AlarmManagerService$4;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/AlarmManagerService$4;->currentNetworkTimeMillis()J
+PLcom/android/server/AlarmManagerService$4;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/AlarmManagerService$4;->getNextAlarmClock(I)Landroid/app/AlarmManager$AlarmClockInfo;
+PLcom/android/server/AlarmManagerService$4;->getNextWakeFromIdleTime()J
+HSPLcom/android/server/AlarmManagerService$4;->remove(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HSPLcom/android/server/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/AlarmManagerService$4;->setTime(J)Z
+PLcom/android/server/AlarmManagerService$4;->setTimeZone(Ljava/lang/String;)V
+PLcom/android/server/AlarmManagerService$5;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$5;->compare(Lcom/android/server/AlarmManagerService$FilterStats;Lcom/android/server/AlarmManagerService$FilterStats;)I
+HPLcom/android/server/AlarmManagerService$5;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/AlarmManagerService$6;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$6;->compare(Lcom/android/server/AlarmManagerService$FilterStats;Lcom/android/server/AlarmManagerService$FilterStats;)I
+HPLcom/android/server/AlarmManagerService$6;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/server/AlarmManagerService$6;->onUidForeground(IZ)V
 HSPLcom/android/server/AlarmManagerService$6;->unblockAlarmsForUid(I)V
-HSPLcom/android/server/AlarmManagerService$6;->unblockAllUnrestrictedAlarms()V
+PLcom/android/server/AlarmManagerService$6;->unblockAllUnrestrictedAlarms()V
+HSPLcom/android/server/AlarmManagerService$7;-><init>(Lcom/android/server/AlarmManagerService;)V
+HSPLcom/android/server/AlarmManagerService$7;->onUidForeground(IZ)V
+HSPLcom/android/server/AlarmManagerService$7;->unblockAlarmsForUid(I)V
+HSPLcom/android/server/AlarmManagerService$7;->unblockAllUnrestrictedAlarms()V
 HSPLcom/android/server/AlarmManagerService$Alarm;-><init>(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;Landroid/os/WorkSource;ILandroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
-PLcom/android/server/AlarmManagerService$Alarm;->dump(Ljava/io/PrintWriter;Ljava/lang/String;JJLjava/text/SimpleDateFormat;)V
+HPLcom/android/server/AlarmManagerService$Alarm;->dump(Ljava/io/PrintWriter;Ljava/lang/String;JJLjava/text/SimpleDateFormat;)V
+HPLcom/android/server/AlarmManagerService$Alarm;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JJJ)V
 HSPLcom/android/server/AlarmManagerService$Alarm;->makeTag(Landroid/app/PendingIntent;Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/AlarmManagerService$Alarm;->matches(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)Z
-PLcom/android/server/AlarmManagerService$Alarm;->toString()Ljava/lang/String;
-PLcom/android/server/AlarmManagerService$Alarm;->writeToProto(Landroid/util/proto/ProtoOutputStream;JJJ)V
+HPLcom/android/server/AlarmManagerService$Alarm;->matches(Ljava/lang/String;)Z
+HPLcom/android/server/AlarmManagerService$Alarm;->toString()Ljava/lang/String;
+HSPLcom/android/server/AlarmManagerService$AlarmHandler;-><init>(Lcom/android/server/AlarmManagerService;)V
 HSPLcom/android/server/AlarmManagerService$AlarmHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/AlarmManagerService$AlarmThread;-><init>(Lcom/android/server/AlarmManagerService;)V
 HSPLcom/android/server/AlarmManagerService$AlarmThread;->run()V
+HSPLcom/android/server/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/AlarmManagerService;)V
+HSPLcom/android/server/AlarmManagerService$AppStandbyTracker;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$1;)V
 HSPLcom/android/server/AlarmManagerService$AppStandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/AlarmManagerService$AppStandbyTracker;->onParoleStateChanged(Z)V
-PLcom/android/server/AlarmManagerService$AppWakeupHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;J)V
+HSPLcom/android/server/AlarmManagerService$AppWakeupHistory;-><init>(J)V
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;J)V
 PLcom/android/server/AlarmManagerService$AppWakeupHistory;->dump(Ljava/io/PrintWriter;Ljava/lang/String;J)V
-PLcom/android/server/AlarmManagerService$AppWakeupHistory;->getLastWakeupForPackage(Ljava/lang/String;II)J
-HSPLcom/android/server/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I
-PLcom/android/server/AlarmManagerService$AppWakeupHistory;->recordAlarmForPackage(Ljava/lang/String;IJ)V
-HSPLcom/android/server/AlarmManagerService$AppWakeupHistory;->removeForPackage(Ljava/lang/String;I)V
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->getLastWakeupForPackage(Ljava/lang/String;II)J
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->getNthLastWakeupForPackage(Ljava/lang/String;II)J
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->getTotalWakeupsInWindow(Ljava/lang/String;I)I
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->recordAlarmForPackage(Ljava/lang/String;IJ)V
+PLcom/android/server/AlarmManagerService$AppWakeupHistory;->removeForPackage(Ljava/lang/String;I)V
+PLcom/android/server/AlarmManagerService$AppWakeupHistory;->removeForUser(I)V
+HPLcom/android/server/AlarmManagerService$AppWakeupHistory;->snapToWindow(Landroid/util/LongArrayQueue;)V
 HSPLcom/android/server/AlarmManagerService$Batch;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)V
 HSPLcom/android/server/AlarmManagerService$Batch;->add(Lcom/android/server/AlarmManagerService$Alarm;)Z
+HSPLcom/android/server/AlarmManagerService$Batch;->canHold(JJ)Z
+HPLcom/android/server/AlarmManagerService$Batch;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JJJ)V
 HSPLcom/android/server/AlarmManagerService$Batch;->get(I)Lcom/android/server/AlarmManagerService$Alarm;
+HPLcom/android/server/AlarmManagerService$Batch;->hasPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/AlarmManagerService$Batch;->hasWakeups()Z
+PLcom/android/server/AlarmManagerService$Batch;->lambda$remove$0(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)Z
+PLcom/android/server/AlarmManagerService$Batch;->remove(Lcom/android/server/AlarmManagerService$Alarm;)Z
 HSPLcom/android/server/AlarmManagerService$Batch;->remove(Ljava/util/function/Predicate;Z)Z
 HSPLcom/android/server/AlarmManagerService$Batch;->size()I
-PLcom/android/server/AlarmManagerService$Batch;->toString()Ljava/lang/String;
-PLcom/android/server/AlarmManagerService$Batch;->writeToProto(Landroid/util/proto/ProtoOutputStream;JJJ)V
+HPLcom/android/server/AlarmManagerService$Batch;->toString()Ljava/lang/String;
 HSPLcom/android/server/AlarmManagerService$BatchTimeOrder;-><init>()V
 HSPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Batch;Lcom/android/server/AlarmManagerService$Batch;)I
 HSPLcom/android/server/AlarmManagerService$BatchTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/AlarmManagerService$BroadcastStats;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/AlarmManagerService$BroadcastStats;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/AlarmManagerService$BroadcastStats;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/AlarmManagerService$BroadcastStats;->toString()Ljava/lang/String;
+HSPLcom/android/server/AlarmManagerService$ChargingReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
+HSPLcom/android/server/AlarmManagerService$ChargingReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/AlarmManagerService$ClockReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
 PLcom/android/server/AlarmManagerService$ClockReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleDateChangedEvent()V
 HSPLcom/android/server/AlarmManagerService$ClockReceiver;->scheduleTimeTickEvent()V
 HSPLcom/android/server/AlarmManagerService$Constants;-><init>(Lcom/android/server/AlarmManagerService;Landroid/os/Handler;)V
-PLcom/android/server/AlarmManagerService$Constants;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/AlarmManagerService$Constants;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/AlarmManagerService$Constants;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/AlarmManagerService$Constants;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/AlarmManagerService$Constants;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/AlarmManagerService$Constants;->start(Landroid/content/ContentResolver;)V
+HSPLcom/android/server/AlarmManagerService$Constants;->updateAllowWhileIdleWhitelistDurationLocked()V
 HSPLcom/android/server/AlarmManagerService$Constants;->updateConstants()V
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight;
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight;
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
-HSPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
-PLcom/android/server/AlarmManagerService$FilterStats;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;J)V
+HSPLcom/android/server/AlarmManagerService$DeliveryTracker;-><init>(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmComplete(Landroid/os/IBinder;)V
+PLcom/android/server/AlarmManagerService$DeliveryTracker;->alarmTimedOut(Landroid/os/IBinder;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->deliverLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/app/PendingIntent;Landroid/content/Intent;)Lcom/android/server/AlarmManagerService$InFlight;
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->removeLocked(Landroid/os/IBinder;)Lcom/android/server/AlarmManagerService$InFlight;
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateStatsLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
+HPLcom/android/server/AlarmManagerService$DeliveryTracker;->updateTrackingLocked(Lcom/android/server/AlarmManagerService$InFlight;)V
+HPLcom/android/server/AlarmManagerService$FilterStats;-><init>(Lcom/android/server/AlarmManagerService$BroadcastStats;Ljava/lang/String;)V
+HPLcom/android/server/AlarmManagerService$FilterStats;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/AlarmManagerService$FilterStats;->toString()Ljava/lang/String;
+HPLcom/android/server/AlarmManagerService$InFlight;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;J)V
+PLcom/android/server/AlarmManagerService$InFlight;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/AlarmManagerService$InFlight;->isBroadcast()Z
+HPLcom/android/server/AlarmManagerService$InFlight;->toString()Ljava/lang/String;
 HSPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;-><init>()V
 HSPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Lcom/android/server/AlarmManagerService$Alarm;Lcom/android/server/AlarmManagerService$Alarm;)I
 HSPLcom/android/server/AlarmManagerService$IncreasingTimeOrder;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/AlarmManagerService$Injector;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/AlarmManagerService$Injector;->getAlarmWakeLock()Landroid/os/PowerManager$WakeLock;
 HSPLcom/android/server/AlarmManagerService$Injector;->getClockReceiver(Lcom/android/server/AlarmManagerService;)Lcom/android/server/AlarmManagerService$ClockReceiver;
 HSPLcom/android/server/AlarmManagerService$Injector;->getCurrentTimeMillis()J
@@ -431,105 +1119,164 @@
 HSPLcom/android/server/AlarmManagerService$Injector;->setKernelTimezone(I)V
 HSPLcom/android/server/AlarmManagerService$Injector;->waitForAlarm()I
 HSPLcom/android/server/AlarmManagerService$InteractiveStateReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
-PLcom/android/server/AlarmManagerService$InteractiveStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/AlarmManagerService$InteractiveStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/AlarmManagerService$LocalService;-><init>(Lcom/android/server/AlarmManagerService;)V
+HSPLcom/android/server/AlarmManagerService$LocalService;-><init>(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$1;)V
 HSPLcom/android/server/AlarmManagerService$LocalService;->isIdling()Z
 HSPLcom/android/server/AlarmManagerService$LocalService;->registerInFlightListener(Lcom/android/server/AlarmManagerInternal$InFlightListener;)V
+HPLcom/android/server/AlarmManagerService$LocalService;->remove(Landroid/app/PendingIntent;)V
+PLcom/android/server/AlarmManagerService$LocalService;->removeAlarmsForUid(I)V
+PLcom/android/server/AlarmManagerService$PriorityClass;-><init>(Lcom/android/server/AlarmManagerService;)V
+HSPLcom/android/server/AlarmManagerService$UidObserver;-><init>(Lcom/android/server/AlarmManagerService;)V
 HSPLcom/android/server/AlarmManagerService$UidObserver;->onUidActive(I)V
 HSPLcom/android/server/AlarmManagerService$UidObserver;->onUidGone(IZ)V
 HSPLcom/android/server/AlarmManagerService$UidObserver;->onUidIdle(IZ)V
 HSPLcom/android/server/AlarmManagerService$UninstallReceiver;-><init>(Lcom/android/server/AlarmManagerService;)V
-HSPLcom/android/server/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/AlarmManagerService$UninstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/AlarmManagerService;-><clinit>()V
 HSPLcom/android/server/AlarmManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/AlarmManagerService;-><init>(Landroid/content/Context;Lcom/android/server/AlarmManagerService$Injector;)V
-HSPLcom/android/server/AlarmManagerService;->access$1200(Lcom/android/server/AlarmManagerService;)Lcom/android/server/AppStateTracker;
+HSPLcom/android/server/AlarmManagerService;->access$002(Lcom/android/server/AlarmManagerService;J)J
+HSPLcom/android/server/AlarmManagerService;->access$100(Lcom/android/server/AlarmManagerService;)Lcom/android/server/AlarmManagerService$Injector;
+HSPLcom/android/server/AlarmManagerService;->access$1000(Lcom/android/server/AlarmManagerService;)Z
+HSPLcom/android/server/AlarmManagerService;->access$1100(Lcom/android/server/AlarmManagerService;)Ljava/util/ArrayList;
+HPLcom/android/server/AlarmManagerService;->access$1200(Lcom/android/server/AlarmManagerService;)Lcom/android/server/AppStateTracker;
+HSPLcom/android/server/AlarmManagerService;->access$1400()J
+HSPLcom/android/server/AlarmManagerService;->access$1500(J)I
+HSPLcom/android/server/AlarmManagerService;->access$1600(JIJJ)I
+PLcom/android/server/AlarmManagerService;->access$1700(JI)J
+HSPLcom/android/server/AlarmManagerService;->access$1800(JI)I
+HSPLcom/android/server/AlarmManagerService;->access$1900(JJ)I
+HSPLcom/android/server/AlarmManagerService;->access$200(Lcom/android/server/AlarmManagerService;II)V
+HSPLcom/android/server/AlarmManagerService;->access$2102(Lcom/android/server/AlarmManagerService;J)J
+HSPLcom/android/server/AlarmManagerService;->access$2202(Lcom/android/server/AlarmManagerService;J)J
+HSPLcom/android/server/AlarmManagerService;->access$2300(Lcom/android/server/AlarmManagerService;)V
+HPLcom/android/server/AlarmManagerService;->access$2400(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)Z
+PLcom/android/server/AlarmManagerService;->access$2500(Lcom/android/server/AlarmManagerService;)V
+PLcom/android/server/AlarmManagerService;->access$2602(Lcom/android/server/AlarmManagerService;Z)Z
+HSPLcom/android/server/AlarmManagerService;->access$2702(Lcom/android/server/AlarmManagerService;J)J
+HPLcom/android/server/AlarmManagerService;->access$2800(Lcom/android/server/AlarmManagerService;I)V
+HPLcom/android/server/AlarmManagerService;->access$2908(Lcom/android/server/AlarmManagerService;)I
+HPLcom/android/server/AlarmManagerService;->access$3008(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->access$302(Lcom/android/server/AlarmManagerService;Z)Z
+HPLcom/android/server/AlarmManagerService;->access$3100(Lcom/android/server/AlarmManagerService$Alarm;)I
+PLcom/android/server/AlarmManagerService;->access$3208(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->access$3300(Lcom/android/server/AlarmManagerService;)Landroid/content/Intent;
+HPLcom/android/server/AlarmManagerService;->access$3408(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->access$3500(Lcom/android/server/AlarmManagerService;)[J
+PLcom/android/server/AlarmManagerService;->access$3600(Lcom/android/server/AlarmManagerService;)I
+PLcom/android/server/AlarmManagerService;->access$3602(Lcom/android/server/AlarmManagerService;I)I
+PLcom/android/server/AlarmManagerService;->access$3608(Lcom/android/server/AlarmManagerService;)I
+HPLcom/android/server/AlarmManagerService;->access$3700(Lcom/android/server/AlarmManagerService;I)V
+HSPLcom/android/server/AlarmManagerService;->access$402(Lcom/android/server/AlarmManagerService;J)J
+HPLcom/android/server/AlarmManagerService;->access$500(Lcom/android/server/AlarmManagerService;Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->access$600(Lcom/android/server/AlarmManagerService;ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+PLcom/android/server/AlarmManagerService;->access$702(Lcom/android/server/AlarmManagerService;J)J
+HSPLcom/android/server/AlarmManagerService;->addBatchLocked(Ljava/util/ArrayList;Lcom/android/server/AlarmManagerService$Batch;)Z
 HSPLcom/android/server/AlarmManagerService;->adjustDeliveryTimeBasedOnBucketLocked(Lcom/android/server/AlarmManagerService$Alarm;)Z
 HSPLcom/android/server/AlarmManagerService;->attemptCoalesceLocked(JJ)I
 HSPLcom/android/server/AlarmManagerService;->calculateDeliveryPriorities(Ljava/util/ArrayList;)V
 HSPLcom/android/server/AlarmManagerService;->checkAllowNonWakeupDelayLocked(J)Z
+HSPLcom/android/server/AlarmManagerService;->clampPositive(J)J
 HSPLcom/android/server/AlarmManagerService;->convertToElapsed(JI)J
-PLcom/android/server/AlarmManagerService;->currentNonWakeupFuzzLocked(J)J
+HPLcom/android/server/AlarmManagerService;->currentNonWakeupFuzzLocked(J)J
+HSPLcom/android/server/AlarmManagerService;->decrementAlarmCount(II)V
 HSPLcom/android/server/AlarmManagerService;->deliverAlarmsLocked(Ljava/util/ArrayList;J)V
-PLcom/android/server/AlarmManagerService;->deliverPendingBackgroundAlarmsLocked(Ljava/util/ArrayList;J)V
-PLcom/android/server/AlarmManagerService;->dumpAlarmList(Ljava/io/PrintWriter;Ljava/util/ArrayList;Ljava/lang/String;JJLjava/text/SimpleDateFormat;)V
-PLcom/android/server/AlarmManagerService;->dumpImpl(Ljava/io/PrintWriter;)V
-PLcom/android/server/AlarmManagerService;->dumpProto(Ljava/io/FileDescriptor;)V
+HPLcom/android/server/AlarmManagerService;->deliverPendingBackgroundAlarmsLocked(Ljava/util/ArrayList;J)V
+HPLcom/android/server/AlarmManagerService;->dumpAlarmList(Ljava/io/PrintWriter;Ljava/util/ArrayList;Ljava/lang/String;JJLjava/text/SimpleDateFormat;)V
+HPLcom/android/server/AlarmManagerService;->dumpImpl(Ljava/io/PrintWriter;)V
+HPLcom/android/server/AlarmManagerService;->dumpProto(Ljava/io/FileDescriptor;)V
 HSPLcom/android/server/AlarmManagerService;->findAllUnrestrictedPendingBackgroundAlarmsLockedInner(Landroid/util/SparseArray;Ljava/util/ArrayList;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/AlarmManagerService;->formatNextAlarm(Landroid/content/Context;Landroid/app/AlarmManager$AlarmClockInfo;I)Ljava/lang/String;
+HSPLcom/android/server/AlarmManagerService;->findFirstWakeupBatchLocked()Lcom/android/server/AlarmManagerService$Batch;
+PLcom/android/server/AlarmManagerService;->formatNextAlarm(Landroid/content/Context;Landroid/app/AlarmManager$AlarmClockInfo;I)Ljava/lang/String;
+PLcom/android/server/AlarmManagerService;->fuzzForDuration(J)I
+HPLcom/android/server/AlarmManagerService;->getAlarmAttributionUid(Lcom/android/server/AlarmManagerService$Alarm;)I
+HSPLcom/android/server/AlarmManagerService;->getAlarmCount(Ljava/util/ArrayList;)I
 HSPLcom/android/server/AlarmManagerService;->getNextAlarmClockImpl(I)Landroid/app/AlarmManager$AlarmClockInfo;
 PLcom/android/server/AlarmManagerService;->getNextWakeFromIdleTimeImpl()J
-HSPLcom/android/server/AlarmManagerService;->getQuotaForBucketLocked(I)I
-HSPLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
-PLcom/android/server/AlarmManagerService;->getWhileIdleMinIntervalLocked(I)J
+HPLcom/android/server/AlarmManagerService;->getQuotaForBucketLocked(I)I
+HPLcom/android/server/AlarmManagerService;->getStatsLocked(ILjava/lang/String;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->getStatsLocked(Landroid/app/PendingIntent;)Lcom/android/server/AlarmManagerService$BroadcastStats;
+HPLcom/android/server/AlarmManagerService;->getWhileIdleMinIntervalLocked(I)J
 HSPLcom/android/server/AlarmManagerService;->haveAlarmsTimeTickAlarm(Ljava/util/ArrayList;)Z
 HSPLcom/android/server/AlarmManagerService;->haveBatchesTimeTickAlarm(Ljava/util/ArrayList;)Z
 HSPLcom/android/server/AlarmManagerService;->incrementAlarmCount(I)V
 HSPLcom/android/server/AlarmManagerService;->insertAndBatchAlarmLocked(Lcom/android/server/AlarmManagerService$Alarm;)V
-PLcom/android/server/AlarmManagerService;->interactiveStateChangedLocked(Z)V
-HSPLcom/android/server/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/AlarmManagerService$Alarm;)Z
+HPLcom/android/server/AlarmManagerService;->interactiveStateChangedLocked(Z)V
+HPLcom/android/server/AlarmManagerService;->isBackgroundRestricted(Lcom/android/server/AlarmManagerService$Alarm;)Z
+HSPLcom/android/server/AlarmManagerService;->isExemptFromAppStandby(Lcom/android/server/AlarmManagerService$Alarm;)Z
 HSPLcom/android/server/AlarmManagerService;->isIdlingImpl()Z
-PLcom/android/server/AlarmManagerService;->lambda$interactiveStateChangedLocked$5$AlarmManagerService()V
+PLcom/android/server/AlarmManagerService;->labelForType(I)Ljava/lang/String;
+HPLcom/android/server/AlarmManagerService;->lambda$interactiveStateChangedLocked$5$AlarmManagerService()V
+PLcom/android/server/AlarmManagerService;->lambda$nSJw2tKfoL3YIrKDtszoL44jcSM(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)Z
+HSPLcom/android/server/AlarmManagerService;->lambda$removeLocked$0(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;Lcom/android/server/AlarmManagerService$Alarm;)Z
+PLcom/android/server/AlarmManagerService;->lambda$removeLocked$1(ILcom/android/server/AlarmManagerService$Alarm;)Z
+PLcom/android/server/AlarmManagerService;->lambda$removeUserLocked$4(ILcom/android/server/AlarmManagerService$Alarm;)Z
+HPLcom/android/server/AlarmManagerService;->lookForPackageLocked(Ljava/lang/String;)Z
 HSPLcom/android/server/AlarmManagerService;->maxTriggerTime(JJJ)J
+HPLcom/android/server/AlarmManagerService;->notifyBroadcastAlarmCompleteLocked(I)V
+HPLcom/android/server/AlarmManagerService;->notifyBroadcastAlarmPendingLocked(I)V
 HSPLcom/android/server/AlarmManagerService;->onBootPhase(I)V
 HSPLcom/android/server/AlarmManagerService;->onStart()V
 HSPLcom/android/server/AlarmManagerService;->reAddAlarmLocked(Lcom/android/server/AlarmManagerService$Alarm;JZ)V
 HSPLcom/android/server/AlarmManagerService;->rebatchAllAlarms()V
 HSPLcom/android/server/AlarmManagerService;->rebatchAllAlarmsLocked(Z)V
 HSPLcom/android/server/AlarmManagerService;->removeImpl(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
-HSPLcom/android/server/AlarmManagerService;->removeLocked(I)V
+HPLcom/android/server/AlarmManagerService;->removeLocked(I)V
 HSPLcom/android/server/AlarmManagerService;->removeLocked(Landroid/app/PendingIntent;Landroid/app/IAlarmListener;)V
+HPLcom/android/server/AlarmManagerService;->removeUserLocked(I)V
 HSPLcom/android/server/AlarmManagerService;->reorderAlarmsBasedOnStandbyBuckets(Landroid/util/ArraySet;)Z
 HSPLcom/android/server/AlarmManagerService;->rescheduleKernelAlarmsLocked()V
-PLcom/android/server/AlarmManagerService;->restorePendingWhileIdleAlarmsLocked()V
+HPLcom/android/server/AlarmManagerService;->restorePendingWhileIdleAlarmsLocked()V
 HSPLcom/android/server/AlarmManagerService;->sendAllUnrestrictedPendingBackgroundAlarmsLocked()V
-HSPLcom/android/server/AlarmManagerService;->sendNextAlarmClockChanged()V
+HPLcom/android/server/AlarmManagerService;->sendNextAlarmClockChanged()V
 HSPLcom/android/server/AlarmManagerService;->sendPendingBackgroundAlarmsLocked(ILjava/lang/String;)V
 HSPLcom/android/server/AlarmManagerService;->setImpl(IJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;ILandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
 HSPLcom/android/server/AlarmManagerService;->setImplLocked(IJJJJJLandroid/app/PendingIntent;Landroid/app/IAlarmListener;Ljava/lang/String;IZLandroid/os/WorkSource;Landroid/app/AlarmManager$AlarmClockInfo;ILjava/lang/String;)V
 HSPLcom/android/server/AlarmManagerService;->setImplLocked(Lcom/android/server/AlarmManagerService$Alarm;ZZ)V
 HSPLcom/android/server/AlarmManagerService;->setLocked(IJ)V
-HSPLcom/android/server/AlarmManagerService;->setTimeImpl(J)Z
+PLcom/android/server/AlarmManagerService;->setTimeImpl(J)Z
 HSPLcom/android/server/AlarmManagerService;->setTimeZoneImpl(Ljava/lang/String;)V
-HSPLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
+HPLcom/android/server/AlarmManagerService;->setWakelockWorkSource(Landroid/os/WorkSource;ILjava/lang/String;Z)V
 HSPLcom/android/server/AlarmManagerService;->triggerAlarmsLocked(Ljava/util/ArrayList;J)Z
 HSPLcom/android/server/AlarmManagerService;->updateNextAlarmClockLocked()V
-HSPLcom/android/server/AlarmManagerService;->validateLastAlarmExpiredLocked(J)V
+PLcom/android/server/AlarmManagerService;->updateNextAlarmInfoForUserLocked(ILandroid/app/AlarmManager$AlarmClockInfo;)V
+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;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
-PLcom/android/server/AnyMotionDetector$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V
-PLcom/android/server/AnyMotionDetector$2;->run()V
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;->accumulate(Lcom/android/server/AnyMotionDetector$Vector3;)V
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;->getEnergy()F
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;->getRunningAverage()Lcom/android/server/AnyMotionDetector$Vector3;
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;->getSampleCount()I
-PLcom/android/server/AnyMotionDetector$RunningSignalStats;->reset()V
-PLcom/android/server/AnyMotionDetector$Vector3;->angleBetween(Lcom/android/server/AnyMotionDetector$Vector3;)F
-PLcom/android/server/AnyMotionDetector$Vector3;->cross(Lcom/android/server/AnyMotionDetector$Vector3;)Lcom/android/server/AnyMotionDetector$Vector3;
-PLcom/android/server/AnyMotionDetector$Vector3;->toString()Ljava/lang/String;
-HSPLcom/android/server/AnyMotionDetector;-><init>(Landroid/os/PowerManager;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)V
-PLcom/android/server/AnyMotionDetector;->checkForAnyMotion()V
-PLcom/android/server/AnyMotionDetector;->getStationaryStatus()I
-PLcom/android/server/AnyMotionDetector;->hasSensor()Z
-PLcom/android/server/AnyMotionDetector;->startOrientationMeasurementLocked()V
-HSPLcom/android/server/AnyMotionDetector;->stop()V
-PLcom/android/server/AnyMotionDetector;->stopOrientationMeasurementLocked()I
+HSPLcom/android/server/AppStateTracker$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$AppOpsWatcher;-><init>(Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTracker$1;)V
+HSPLcom/android/server/AppStateTracker$FeatureFlagsObserver;-><init>(Lcom/android/server/AppStateTracker;)V
 HSPLcom/android/server/AppStateTracker$FeatureFlagsObserver;->isForcedAppStandbyEnabled()Z
 HSPLcom/android/server/AppStateTracker$FeatureFlagsObserver;->isForcedAppStandbyForSmallBatteryEnabled()Z
 HSPLcom/android/server/AppStateTracker$FeatureFlagsObserver;->register()V
+HSPLcom/android/server/AppStateTracker$Listener;-><init>()V
+HSPLcom/android/server/AppStateTracker$Listener;->access$1000(Lcom/android/server/AppStateTracker$Listener;Lcom/android/server/AppStateTracker;I)V
+HSPLcom/android/server/AppStateTracker$Listener;->access$1100(Lcom/android/server/AppStateTracker$Listener;Lcom/android/server/AppStateTracker;I)V
+PLcom/android/server/AppStateTracker$Listener;->access$1500(Lcom/android/server/AppStateTracker$Listener;Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$Listener;->access$1600(Lcom/android/server/AppStateTracker$Listener;Lcom/android/server/AppStateTracker;)V
+PLcom/android/server/AppStateTracker$Listener;->access$1700(Lcom/android/server/AppStateTracker$Listener;Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$Listener;->onExemptChanged(Lcom/android/server/AppStateTracker;)V
+PLcom/android/server/AppStateTracker$Listener;->onForceAllAppsStandbyChanged(Lcom/android/server/AppStateTracker;)V
+PLcom/android/server/AppStateTracker$Listener;->onTempPowerSaveWhitelistChanged(Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$Listener;->onUidActiveStateChanged(Lcom/android/server/AppStateTracker;I)V
 HSPLcom/android/server/AppStateTracker$Listener;->onUidForeground(IZ)V
+HSPLcom/android/server/AppStateTracker$Listener;->onUidForegroundStateChanged(Lcom/android/server/AppStateTracker;I)V
 HSPLcom/android/server/AppStateTracker$Listener;->unblockAlarmsForUid(I)V
 HSPLcom/android/server/AppStateTracker$Listener;->unblockAllUnrestrictedAlarms()V
 HSPLcom/android/server/AppStateTracker$Listener;->updateAllJobs()V
 HSPLcom/android/server/AppStateTracker$Listener;->updateJobsForUid(IZ)V
+HSPLcom/android/server/AppStateTracker$MyHandler;-><init>(Lcom/android/server/AppStateTracker;Landroid/os/Looper;)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->handleUidActive(I)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->handleUidGone(IZ)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->handleUidIdle(IZ)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->handleUidStateChanged(II)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->notifyAllWhitelistChanged()V
-HSPLcom/android/server/AppStateTracker$MyHandler;->notifyForceAllAppsStandbyChanged()V
-PLcom/android/server/AppStateTracker$MyHandler;->notifyTempWhitelistChanged()V
+HSPLcom/android/server/AppStateTracker$MyHandler;->notifyExemptChanged()V
+PLcom/android/server/AppStateTracker$MyHandler;->notifyForceAllAppsStandbyChanged()V
+HPLcom/android/server/AppStateTracker$MyHandler;->notifyTempWhitelistChanged()V
 HSPLcom/android/server/AppStateTracker$MyHandler;->notifyUidActiveStateChanged(I)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->notifyUidForegroundStateChanged(I)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->onUidActive(I)V
@@ -537,93 +1284,186 @@
 HSPLcom/android/server/AppStateTracker$MyHandler;->onUidIdle(IZ)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->onUidStateChanged(II)V
 HSPLcom/android/server/AppStateTracker$MyHandler;->removeUid(IZ)V
+HSPLcom/android/server/AppStateTracker$MyReceiver;-><init>(Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$MyReceiver;-><init>(Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTracker$1;)V
 HSPLcom/android/server/AppStateTracker$MyReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/AppStateTracker$StandbyTracker;-><init>(Lcom/android/server/AppStateTracker;)V
 HSPLcom/android/server/AppStateTracker$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/AppStateTracker$StandbyTracker;->onParoleStateChanged(Z)V
+HSPLcom/android/server/AppStateTracker$UidObserver;-><init>(Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker$UidObserver;-><init>(Lcom/android/server/AppStateTracker;Lcom/android/server/AppStateTracker$1;)V
 HSPLcom/android/server/AppStateTracker$UidObserver;->onUidActive(I)V
 HSPLcom/android/server/AppStateTracker$UidObserver;->onUidGone(IZ)V
 HSPLcom/android/server/AppStateTracker$UidObserver;->onUidIdle(IZ)V
-HSPLcom/android/server/AppStateTracker$UidObserver;->onUidStateChanged(IIJ)V
+HSPLcom/android/server/AppStateTracker$UidObserver;->onUidStateChanged(IIJI)V
 HSPLcom/android/server/AppStateTracker;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
+HSPLcom/android/server/AppStateTracker;->access$000(Lcom/android/server/AppStateTracker;)Landroid/content/Context;
+HSPLcom/android/server/AppStateTracker;->access$100(Lcom/android/server/AppStateTracker;)Ljava/lang/Object;
+HSPLcom/android/server/AppStateTracker;->access$1800(Landroid/util/SparseBooleanArray;IZ)Z
+HSPLcom/android/server/AppStateTracker;->access$1900(Landroid/util/SparseBooleanArray;I)Z
+HSPLcom/android/server/AppStateTracker;->access$200(Lcom/android/server/AppStateTracker;)Lcom/android/server/AppStateTracker$MyHandler;
+HSPLcom/android/server/AppStateTracker;->access$300(Lcom/android/server/AppStateTracker;)V
+HSPLcom/android/server/AppStateTracker;->access$700(Lcom/android/server/AppStateTracker;)Landroid/util/SparseSetArray;
+HSPLcom/android/server/AppStateTracker;->access$800(Lcom/android/server/AppStateTracker;)Lcom/android/internal/util/StatLogger;
+HSPLcom/android/server/AppStateTracker;->access$900(Lcom/android/server/AppStateTracker;)[Lcom/android/server/AppStateTracker$Listener;
 HSPLcom/android/server/AppStateTracker;->addListener(Lcom/android/server/AppStateTracker$Listener;)V
-HSPLcom/android/server/AppStateTracker;->areAlarmsRestricted(ILjava/lang/String;Z)Z
+HSPLcom/android/server/AppStateTracker;->addUidToArray(Landroid/util/SparseBooleanArray;I)Z
+HPLcom/android/server/AppStateTracker;->areAlarmsRestricted(ILjava/lang/String;Z)Z
 HSPLcom/android/server/AppStateTracker;->areJobsRestricted(ILjava/lang/String;Z)Z
+PLcom/android/server/AppStateTracker;->cleanUpArrayForUser(Landroid/util/SparseBooleanArray;I)V
 HSPLcom/android/server/AppStateTracker;->cloneListeners()[Lcom/android/server/AppStateTracker$Listener;
-PLcom/android/server/AppStateTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/AppStateTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/AppStateTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/AppStateTracker;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/AppStateTracker;->dumpUids(Ljava/io/PrintWriter;Landroid/util/SparseBooleanArray;)V
+HPLcom/android/server/AppStateTracker;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/AppStateTracker;->dumpUids(Ljava/io/PrintWriter;Landroid/util/SparseBooleanArray;)V
 HSPLcom/android/server/AppStateTracker;->findForcedAppStandbyUidPackageIndexLocked(ILjava/lang/String;)I
+PLcom/android/server/AppStateTracker;->handleUserRemoved(I)V
 HSPLcom/android/server/AppStateTracker;->injectActivityManagerInternal()Landroid/app/ActivityManagerInternal;
 HSPLcom/android/server/AppStateTracker;->injectAppOpsManager()Landroid/app/AppOpsManager;
+HSPLcom/android/server/AppStateTracker;->injectAppStandbyInternal()Lcom/android/server/usage/AppStandbyInternal;
 HSPLcom/android/server/AppStateTracker;->injectGetGlobalSettingInt(Ljava/lang/String;I)I
 HSPLcom/android/server/AppStateTracker;->injectIActivityManager()Landroid/app/IActivityManager;
 HSPLcom/android/server/AppStateTracker;->injectIAppOpsService()Lcom/android/internal/app/IAppOpsService;
 HSPLcom/android/server/AppStateTracker;->injectPowerManagerInternal()Landroid/os/PowerManagerInternal;
-HSPLcom/android/server/AppStateTracker;->injectUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
 HSPLcom/android/server/AppStateTracker;->isAnyAppIdUnwhitelisted([I[I)Z
-HSPLcom/android/server/AppStateTracker;->isForceAllAppsStandbyEnabled()Z
+HPLcom/android/server/AppStateTracker;->isForceAllAppsStandbyEnabled()Z
 HSPLcom/android/server/AppStateTracker;->isRestricted(ILjava/lang/String;ZZ)Z
-PLcom/android/server/AppStateTracker;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z
+HPLcom/android/server/AppStateTracker;->isRunAnyInBackgroundAppOpsAllowed(ILjava/lang/String;)Z
 HSPLcom/android/server/AppStateTracker;->isRunAnyRestrictedLocked(ILjava/lang/String;)Z
 PLcom/android/server/AppStateTracker;->isSmallBatteryDevice()Z
 HSPLcom/android/server/AppStateTracker;->isUidActive(I)Z
-HSPLcom/android/server/AppStateTracker;->isUidActiveSynced(I)Z
+HPLcom/android/server/AppStateTracker;->isUidActiveSynced(I)Z
 HSPLcom/android/server/AppStateTracker;->isUidInForeground(I)Z
-HSPLcom/android/server/AppStateTracker;->isUidPowerSaveUserWhitelisted(I)Z
-PLcom/android/server/AppStateTracker;->isUidPowerSaveWhitelisted(I)Z
-PLcom/android/server/AppStateTracker;->isUidTempPowerSaveWhitelisted(I)Z
-HSPLcom/android/server/AppStateTracker;->lambda$onSystemServicesReady$0$AppStateTracker(Landroid/os/PowerSaveState;)V
+HPLcom/android/server/AppStateTracker;->isUidPowerSaveUserWhitelisted(I)Z
+HPLcom/android/server/AppStateTracker;->isUidPowerSaveWhitelisted(I)Z
+HPLcom/android/server/AppStateTracker;->isUidTempPowerSaveWhitelisted(I)Z
+PLcom/android/server/AppStateTracker;->lambda$onSystemServicesReady$0$AppStateTracker(Landroid/os/PowerSaveState;)V
 HSPLcom/android/server/AppStateTracker;->onSystemServicesReady()V
 HSPLcom/android/server/AppStateTracker;->refreshForcedAppStandbyUidPackagesLocked()V
+HSPLcom/android/server/AppStateTracker;->removeUidFromArray(Landroid/util/SparseBooleanArray;IZ)Z
 HSPLcom/android/server/AppStateTracker;->setPowerSaveWhitelistAppIds([I[I[I)V
+HSPLcom/android/server/AppStateTracker;->toggleForceAllAppsStandbyLocked(Z)V
 HSPLcom/android/server/AppStateTracker;->updateForceAllAppStandbyState()V
+HSPLcom/android/server/AttributeCache$Entry;-><init>(Landroid/content/Context;Landroid/content/res/TypedArray;)V
+PLcom/android/server/AttributeCache$Entry;->recycle()V
+HSPLcom/android/server/AttributeCache$Package;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/AttributeCache$Package;->access$000(Lcom/android/server/AttributeCache$Package;)Landroid/util/SparseArray;
+HSPLcom/android/server/AttributeCache;-><clinit>()V
+HSPLcom/android/server/AttributeCache;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/AttributeCache;->get(Ljava/lang/String;I[II)Lcom/android/server/AttributeCache$Entry;
+HSPLcom/android/server/AttributeCache;->init(Landroid/content/Context;)V
 HSPLcom/android/server/AttributeCache;->instance()Lcom/android/server/AttributeCache;
-HSPLcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V
+PLcom/android/server/AttributeCache;->removePackage(Ljava/lang/String;)V
 HSPLcom/android/server/AttributeCache;->updateConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/BatteryService$10;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
 PLcom/android/server/BatteryService$10;->run()V
-HSPLcom/android/server/BatteryService$7;->run()V
+HSPLcom/android/server/BatteryService$2;-><init>(Lcom/android/server/BatteryService;Landroid/os/Handler;)V
+HSPLcom/android/server/BatteryService$3;-><init>(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService$4;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$5;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$5;->run()V
+PLcom/android/server/BatteryService$7;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService$7;->run()V
+HSPLcom/android/server/BatteryService$8;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
 HSPLcom/android/server/BatteryService$8;->run()V
-HSPLcom/android/server/BatteryService$9;->run()V
-PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I
+PLcom/android/server/BatteryService$9;-><init>(Lcom/android/server/BatteryService;Landroid/content/Intent;)V
+PLcom/android/server/BatteryService$9;->run()V
+HSPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$1;)V
+HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->getProperty(ILandroid/os/BatteryProperty;)I
+HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$getProperty$0(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+PLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$getProperty$1(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$getProperty$2(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$getProperty$3(Landroid/util/MutableInt;Landroid/os/BatteryProperty;II)V
+HPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$getProperty$5(Landroid/util/MutableInt;Landroid/os/BatteryProperty;IJ)V
+HSPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->lambda$scheduleUpdate$6$BatteryService$BatteryPropertiesRegistrar()V
 HSPLcom/android/server/BatteryService$BatteryPropertiesRegistrar;->scheduleUpdate()V
+HSPLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService$BinderService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$1;)V
 PLcom/android/server/BatteryService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/BatteryService$HealthHalCallback;-><init>(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService$HealthHalCallback;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$1;)V
 HSPLcom/android/server/BatteryService$HealthHalCallback;->healthInfoChanged(Landroid/hardware/health/V2_0/HealthInfo;)V
 HSPLcom/android/server/BatteryService$HealthHalCallback;->onRegistration(Landroid/hardware/health/V2_0/IHealth;Landroid/hardware/health/V2_0/IHealth;Ljava/lang/String;)V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper$1;-><init>(Lcom/android/server/BatteryService$HealthServiceWrapper;)V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper$2;-><init>(Lcom/android/server/BatteryService$HealthServiceWrapper;)V
 HSPLcom/android/server/BatteryService$HealthServiceWrapper$IHealthSupplier;->get(Ljava/lang/String;)Landroid/hardware/health/V2_0/IHealth;
 HSPLcom/android/server/BatteryService$HealthServiceWrapper$IServiceManagerSupplier;->get()Landroid/hidl/manager/V1_0/IServiceManager;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper$Notification$1;-><init>(Lcom/android/server/BatteryService$HealthServiceWrapper$Notification;)V
 HSPLcom/android/server/BatteryService$HealthServiceWrapper$Notification$1;->run()V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper$Notification;-><init>(Lcom/android/server/BatteryService$HealthServiceWrapper;)V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper$Notification;-><init>(Lcom/android/server/BatteryService$HealthServiceWrapper;Lcom/android/server/BatteryService$1;)V
 HSPLcom/android/server/BatteryService$HealthServiceWrapper$Notification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;-><clinit>()V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;-><init>()V
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->access$2200(Lcom/android/server/BatteryService$HealthServiceWrapper;)Ljava/lang/String;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->access$2300(Lcom/android/server/BatteryService$HealthServiceWrapper;)Lcom/android/server/BatteryService$HealthServiceWrapper$IHealthSupplier;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->access$2400(Lcom/android/server/BatteryService$HealthServiceWrapper;)Ljava/util/concurrent/atomic/AtomicReference;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->access$2600(Lcom/android/server/BatteryService$HealthServiceWrapper;)Landroid/os/HandlerThread;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->getHandlerThread()Landroid/os/HandlerThread;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->getLastService()Landroid/hardware/health/V2_0/IHealth;
+HSPLcom/android/server/BatteryService$HealthServiceWrapper;->init()V
 HSPLcom/android/server/BatteryService$HealthServiceWrapper;->init(Lcom/android/server/BatteryService$HealthServiceWrapper$Callback;Lcom/android/server/BatteryService$HealthServiceWrapper$IServiceManagerSupplier;Lcom/android/server/BatteryService$HealthServiceWrapper$IHealthSupplier;)V
 HSPLcom/android/server/BatteryService$Led;-><init>(Lcom/android/server/BatteryService;Landroid/content/Context;Lcom/android/server/lights/LightsManager;)V
 HSPLcom/android/server/BatteryService$Led;->updateLightsLocked()V
+HSPLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService$LocalService;-><init>(Lcom/android/server/BatteryService;Lcom/android/server/BatteryService$1;)V
 HSPLcom/android/server/BatteryService$LocalService;->getBatteryChargeCounter()I
 HSPLcom/android/server/BatteryService$LocalService;->getBatteryLevel()I
 HSPLcom/android/server/BatteryService$LocalService;->getBatteryLevelLow()Z
 HSPLcom/android/server/BatteryService$LocalService;->getPlugType()I
 HSPLcom/android/server/BatteryService$LocalService;->isPowered(I)Z
+PLcom/android/server/BatteryService$Shell;-><init>(Lcom/android/server/BatteryService;)V
+PLcom/android/server/BatteryService$Shell;->onCommand(Ljava/lang/String;)I
+HSPLcom/android/server/BatteryService;-><clinit>()V
 HSPLcom/android/server/BatteryService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/BatteryService;->access$000(Lcom/android/server/BatteryService;)Ljava/lang/Object;
+HSPLcom/android/server/BatteryService;->access$1000(Lcom/android/server/BatteryService;)I
+HSPLcom/android/server/BatteryService;->access$1100(Lcom/android/server/BatteryService;Landroid/hardware/health/V2_0/HealthInfo;)V
+HSPLcom/android/server/BatteryService;->access$1200(Ljava/lang/String;)V
+PLcom/android/server/BatteryService;->access$1300()Ljava/lang/String;
+HSPLcom/android/server/BatteryService;->access$1400()V
+PLcom/android/server/BatteryService;->access$1500(Lcom/android/server/BatteryService;Ljava/io/FileDescriptor;)V
+PLcom/android/server/BatteryService;->access$1600(Lcom/android/server/BatteryService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/BatteryService;->access$1700(Lcom/android/server/BatteryService;)Lcom/android/server/BatteryService$HealthServiceWrapper;
+HSPLcom/android/server/BatteryService;->access$1800(Lcom/android/server/BatteryService;I)Z
+HSPLcom/android/server/BatteryService;->access$1900(Lcom/android/server/BatteryService;)I
+HSPLcom/android/server/BatteryService;->access$2000(Lcom/android/server/BatteryService;)Z
+PLcom/android/server/BatteryService;->access$700(Lcom/android/server/BatteryService;)Landroid/app/ActivityManagerInternal;
+HSPLcom/android/server/BatteryService;->access$800(Lcom/android/server/BatteryService;)Landroid/content/Context;
+HSPLcom/android/server/BatteryService;->access$900(Lcom/android/server/BatteryService;)Landroid/hardware/health/V1_0/HealthInfo;
+PLcom/android/server/BatteryService;->copy(Landroid/hardware/health/V1_0/HealthInfo;Landroid/hardware/health/V1_0/HealthInfo;)V
 PLcom/android/server/BatteryService;->dumpInternal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/BatteryService;->dumpProto(Ljava/io/FileDescriptor;)V
 HSPLcom/android/server/BatteryService;->getIconLocked(I)I
 HSPLcom/android/server/BatteryService;->isPoweredLocked(I)Z
+HSPLcom/android/server/BatteryService;->lambda$D1kwd7L7yyqN5niz3KWkTepVmUk(Lcom/android/server/BatteryService;)V
+HSPLcom/android/server/BatteryService;->lambda$sendBatteryChangedIntentLocked$0(Landroid/content/Intent;)V
 PLcom/android/server/BatteryService;->logBatteryStatsLocked()V
-HSPLcom/android/server/BatteryService;->logOutlierLocked(J)V
+PLcom/android/server/BatteryService;->logOutlierLocked(J)V
 HSPLcom/android/server/BatteryService;->onBootPhase(I)V
+PLcom/android/server/BatteryService;->onShellCommand(Lcom/android/server/BatteryService$Shell;Ljava/lang/String;)I
 HSPLcom/android/server/BatteryService;->onStart()V
+PLcom/android/server/BatteryService;->parseOptions(Lcom/android/server/BatteryService$Shell;)I
+PLcom/android/server/BatteryService;->processValuesFromShellLocked(Ljava/io/PrintWriter;I)V
 HSPLcom/android/server/BatteryService;->processValuesLocked(Z)V
 HSPLcom/android/server/BatteryService;->registerHealthCallback()V
 HSPLcom/android/server/BatteryService;->sendBatteryChangedIntentLocked()V
 HSPLcom/android/server/BatteryService;->sendBatteryLevelChangedIntentLocked()V
 HSPLcom/android/server/BatteryService;->sendEnqueuedBatteryLevelChangedEvents()V
 HSPLcom/android/server/BatteryService;->shouldSendBatteryLowLocked()Z
+HSPLcom/android/server/BatteryService;->shouldShutdownLocked()Z
+HSPLcom/android/server/BatteryService;->shutdownIfNoPowerLocked()V
+HSPLcom/android/server/BatteryService;->shutdownIfOverTempLocked()V
+HSPLcom/android/server/BatteryService;->traceBegin(Ljava/lang/String;)V
+HSPLcom/android/server/BatteryService;->traceEnd()V
 HSPLcom/android/server/BatteryService;->update(Landroid/hardware/health/V2_0/HealthInfo;)V
 HSPLcom/android/server/BatteryService;->updateBatteryWarningLevelLocked()V
+HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;-><init>()V
 HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->createAppidWhitelist(Landroid/content/Context;)Landroid/util/ArraySet;
 HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->getCallingUid()I
 HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->resolveWorkSourceUid(I)I
 HSPLcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;->systemReady(Landroid/content/Context;)V
+HSPLcom/android/server/BinderCallsStatsService$Internal;-><init>(Lcom/android/internal/os/BinderCallsStats;)V
 PLcom/android/server/BinderCallsStatsService$Internal;->getExportedCallStats()Ljava/util/ArrayList;
 PLcom/android/server/BinderCallsStatsService$Internal;->reset()V
 HSPLcom/android/server/BinderCallsStatsService$LifeCycle;-><init>(Landroid/content/Context;)V
@@ -631,770 +1471,1523 @@
 HSPLcom/android/server/BinderCallsStatsService$LifeCycle;->onStart()V
 HSPLcom/android/server/BinderCallsStatsService$SettingsObserver;-><init>(Landroid/content/Context;Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
 HSPLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange()V
+PLcom/android/server/BinderCallsStatsService$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/BinderCallsStatsService;-><init>(Lcom/android/internal/os/BinderCallsStats;Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;)V
 PLcom/android/server/BinderCallsStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/BinderCallsStatsService;->systemReady(Landroid/content/Context;)V
+HSPLcom/android/server/BluetoothAirplaneModeListener$1;-><init>(Lcom/android/server/BluetoothAirplaneModeListener;Landroid/os/Handler;)V
+PLcom/android/server/BluetoothAirplaneModeListener$1;->onChange(Z)V
+HSPLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper$1;-><init>(Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;)V
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper$1;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper$1;->onServiceDisconnected(I)V
+HSPLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->access$102(Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;Landroid/bluetooth/BluetoothA2dp;)Landroid/bluetooth/BluetoothA2dp;
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->access$202(Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;Landroid/bluetooth/BluetoothHearingAid;)Landroid/bluetooth/BluetoothHearingAid;
+HSPLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->getSettingsInt(Ljava/lang/String;)I
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->isA2dpConnected()Z
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->isA2dpOrHearingAidConnected()Z
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->isAirplaneModeOn()Z
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->isBluetoothOn()Z
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->isHearingAidConnected()Z
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->onAirplaneModeChanged(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->setSettingsInt(Ljava/lang/String;I)V
+PLcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;->showToastMessage()V
+HSPLcom/android/server/BluetoothAirplaneModeListener$BluetoothAirplaneModeHandler;-><init>(Lcom/android/server/BluetoothAirplaneModeListener;Landroid/os/Looper;)V
+PLcom/android/server/BluetoothAirplaneModeListener$BluetoothAirplaneModeHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/BluetoothAirplaneModeListener;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Looper;Landroid/content/Context;)V
+PLcom/android/server/BluetoothAirplaneModeListener;->access$000(Lcom/android/server/BluetoothAirplaneModeListener;)Lcom/android/server/BluetoothAirplaneModeListener$BluetoothAirplaneModeHandler;
+PLcom/android/server/BluetoothAirplaneModeListener;->handleAirplaneModeChange()V
+PLcom/android/server/BluetoothAirplaneModeListener;->shouldPopToast()Z
+PLcom/android/server/BluetoothAirplaneModeListener;->shouldSkipAirplaneModeChange()Z
+HSPLcom/android/server/BluetoothAirplaneModeListener;->start(Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;)V
+HSPLcom/android/server/BluetoothManagerService$1;-><init>(Lcom/android/server/BluetoothManagerService;)V
 HSPLcom/android/server/BluetoothManagerService$1;->onBluetoothStateChange(II)V
+HSPLcom/android/server/BluetoothManagerService$2;-><init>(Lcom/android/server/BluetoothManagerService;)V
 HSPLcom/android/server/BluetoothManagerService$2;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/BluetoothManagerService$3;-><init>(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService$3;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V
 PLcom/android/server/BluetoothManagerService$3;->onChange(Z)V
+PLcom/android/server/BluetoothManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/BluetoothManagerService$4;-><init>(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService$4;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V
+PLcom/android/server/BluetoothManagerService$4;->onChange(Z)V
 HSPLcom/android/server/BluetoothManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/BluetoothManagerService$5;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/BluetoothManagerService$ActiveLog;-><init>(Lcom/android/server/BluetoothManagerService;ILjava/lang/String;ZJ)V
 PLcom/android/server/BluetoothManagerService$ActiveLog;->toString()Ljava/lang/String;
+HSPLcom/android/server/BluetoothManagerService$BluetoothHandler;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/BluetoothManagerService$BluetoothHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;-><init>(Lcom/android/server/BluetoothManagerService;Lcom/android/server/BluetoothManagerService$1;)V
 HSPLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/BluetoothManagerService$BluetoothServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;-><init>(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;)V
 PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->binderDied()V
-PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$2000(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
-HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$3300(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
-HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->addProxy(Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
+PLcom/android/server/BluetoothManagerService$ClientDeathRecipient;->getPackageName()Ljava/lang/String;
+HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;-><init>(Lcom/android/server/BluetoothManagerService;Landroid/content/Intent;)V
+HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$1300(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$1400(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$1500(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
+HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$2000(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$2100(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$2200(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;)Z
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$3300(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
+HPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->access$3500(Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
+HPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->addProxy(Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
 HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->bindService()Z
-HSPLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->binderDied()V
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->isEmpty()Z
+PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/BluetoothManagerService$ProfileServiceConnections;->removeProxy(Landroid/bluetooth/IBluetoothProfileServiceConnection;)V
 HSPLcom/android/server/BluetoothManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/BluetoothManagerService;->access$000(J)Ljava/lang/CharSequence;
+PLcom/android/server/BluetoothManagerService;->access$100(I)Ljava/lang/String;
 HSPLcom/android/server/BluetoothManagerService;->access$1000(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetooth;
+HSPLcom/android/server/BluetoothManagerService;->access$1000(Lcom/android/server/BluetoothManagerService;)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
 HSPLcom/android/server/BluetoothManagerService;->access$1002(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetooth;)Landroid/bluetooth/IBluetooth;
+HSPLcom/android/server/BluetoothManagerService;->access$1100(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetooth;
+PLcom/android/server/BluetoothManagerService;->access$1100(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$1102(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetooth;)Landroid/bluetooth/IBluetooth;
+PLcom/android/server/BluetoothManagerService;->access$1200(Lcom/android/server/BluetoothManagerService;ILjava/lang/String;Z)V
 HSPLcom/android/server/BluetoothManagerService;->access$1300(Lcom/android/server/BluetoothManagerService;)Z
 HSPLcom/android/server/BluetoothManagerService;->access$1302(Lcom/android/server/BluetoothManagerService;Z)Z
+PLcom/android/server/BluetoothManagerService;->access$1400(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$1402(Lcom/android/server/BluetoothManagerService;Z)Z
+PLcom/android/server/BluetoothManagerService;->access$1500(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$1600(Lcom/android/server/BluetoothManagerService;ZILjava/lang/String;)V
+HSPLcom/android/server/BluetoothManagerService;->access$1700(Lcom/android/server/BluetoothManagerService;)Z
 HSPLcom/android/server/BluetoothManagerService;->access$1700(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/BluetoothManagerService;->access$1702(Lcom/android/server/BluetoothManagerService;Z)Z
+PLcom/android/server/BluetoothManagerService;->access$1800(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map;
+PLcom/android/server/BluetoothManagerService;->access$1900(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$1902(Lcom/android/server/BluetoothManagerService;Z)Z
 HSPLcom/android/server/BluetoothManagerService;->access$200(Lcom/android/server/BluetoothManagerService;)Lcom/android/server/BluetoothManagerService$BluetoothHandler;
-HSPLcom/android/server/BluetoothManagerService;->access$2400(Lcom/android/server/BluetoothManagerService;)Z
-HSPLcom/android/server/BluetoothManagerService;->access$2402(Lcom/android/server/BluetoothManagerService;Z)Z
-HSPLcom/android/server/BluetoothManagerService;->access$2600(Lcom/android/server/BluetoothManagerService;)Z
-HSPLcom/android/server/BluetoothManagerService;->access$2602(Lcom/android/server/BluetoothManagerService;Z)Z
-HSPLcom/android/server/BluetoothManagerService;->access$2700(Lcom/android/server/BluetoothManagerService;Z)V
-PLcom/android/server/BluetoothManagerService;->access$2800(Lcom/android/server/BluetoothManagerService;ZZ)Z
-PLcom/android/server/BluetoothManagerService;->access$2900(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$2100(Lcom/android/server/BluetoothManagerService;I)V
+HSPLcom/android/server/BluetoothManagerService;->access$2200(Lcom/android/server/BluetoothManagerService;)Z
+HSPLcom/android/server/BluetoothManagerService;->access$2202(Lcom/android/server/BluetoothManagerService;Z)Z
+HSPLcom/android/server/BluetoothManagerService;->access$2300(Lcom/android/server/BluetoothManagerService;Z)V
+PLcom/android/server/BluetoothManagerService;->access$2400(Lcom/android/server/BluetoothManagerService;ZZ)Z
+PLcom/android/server/BluetoothManagerService;->access$2500(Lcom/android/server/BluetoothManagerService;)I
+PLcom/android/server/BluetoothManagerService;->access$2500(Lcom/android/server/BluetoothManagerService;)Z
+HSPLcom/android/server/BluetoothManagerService;->access$2502(Lcom/android/server/BluetoothManagerService;Z)Z
+PLcom/android/server/BluetoothManagerService;->access$2600(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService;->access$2700(Lcom/android/server/BluetoothManagerService;)Z
+HSPLcom/android/server/BluetoothManagerService;->access$2702(Lcom/android/server/BluetoothManagerService;Z)Z
+HSPLcom/android/server/BluetoothManagerService;->access$2800(Lcom/android/server/BluetoothManagerService;Z)V
+PLcom/android/server/BluetoothManagerService;->access$2900(Lcom/android/server/BluetoothManagerService;ZZ)Z
+PLcom/android/server/BluetoothManagerService;->access$300(Lcom/android/server/BluetoothManagerService;IZ)V
+PLcom/android/server/BluetoothManagerService;->access$3000(Lcom/android/server/BluetoothManagerService;)I
 HSPLcom/android/server/BluetoothManagerService;->access$3000(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList;
 HSPLcom/android/server/BluetoothManagerService;->access$3100(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/BluetoothManagerService;->access$3200(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map;
-HSPLcom/android/server/BluetoothManagerService;->access$3402(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetoothGatt;)Landroid/bluetooth/IBluetoothGatt;
-HSPLcom/android/server/BluetoothManagerService;->access$3500(Lcom/android/server/BluetoothManagerService;)V
-HSPLcom/android/server/BluetoothManagerService;->access$3602(Lcom/android/server/BluetoothManagerService;Landroid/os/IBinder;)Landroid/os/IBinder;
-HSPLcom/android/server/BluetoothManagerService;->access$3700(Lcom/android/server/BluetoothManagerService;)Z
-HSPLcom/android/server/BluetoothManagerService;->access$3800(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetoothCallback;
-HSPLcom/android/server/BluetoothManagerService;->access$3900(Lcom/android/server/BluetoothManagerService;)V
-HSPLcom/android/server/BluetoothManagerService;->access$4002(Lcom/android/server/BluetoothManagerService;I)I
-HSPLcom/android/server/BluetoothManagerService;->access$4100(Lcom/android/server/BluetoothManagerService;II)V
-HSPLcom/android/server/BluetoothManagerService;->access$4300(Lcom/android/server/BluetoothManagerService;)I
+PLcom/android/server/BluetoothManagerService;->access$3100(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService;->access$3200(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/BluetoothManagerService;->access$3200(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map;
+HSPLcom/android/server/BluetoothManagerService;->access$3300(Lcom/android/server/BluetoothManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/BluetoothManagerService;->access$3400(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map;
+PLcom/android/server/BluetoothManagerService;->access$3402(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetoothGatt;)Landroid/bluetooth/IBluetoothGatt;
+PLcom/android/server/BluetoothManagerService;->access$3500(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$3602(Lcom/android/server/BluetoothManagerService;Landroid/bluetooth/IBluetoothGatt;)Landroid/bluetooth/IBluetoothGatt;
+PLcom/android/server/BluetoothManagerService;->access$3602(Lcom/android/server/BluetoothManagerService;Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/BluetoothManagerService;->access$3700(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$3700(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$3800(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetoothCallback;
+HSPLcom/android/server/BluetoothManagerService;->access$3802(Lcom/android/server/BluetoothManagerService;Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/BluetoothManagerService;->access$3900(Lcom/android/server/BluetoothManagerService;)V
+HSPLcom/android/server/BluetoothManagerService;->access$3900(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$400(Lcom/android/server/BluetoothManagerService;)Landroid/content/Context;
+HSPLcom/android/server/BluetoothManagerService;->access$4000(Lcom/android/server/BluetoothManagerService;)Landroid/bluetooth/IBluetoothCallback;
+PLcom/android/server/BluetoothManagerService;->access$4002(Lcom/android/server/BluetoothManagerService;I)I
+HSPLcom/android/server/BluetoothManagerService;->access$4100(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$4100(Lcom/android/server/BluetoothManagerService;II)V
+PLcom/android/server/BluetoothManagerService;->access$4200(Lcom/android/server/BluetoothManagerService;)I
+HSPLcom/android/server/BluetoothManagerService;->access$4202(Lcom/android/server/BluetoothManagerService;I)I
+PLcom/android/server/BluetoothManagerService;->access$4300(Lcom/android/server/BluetoothManagerService;)I
+HSPLcom/android/server/BluetoothManagerService;->access$4300(Lcom/android/server/BluetoothManagerService;II)V
+PLcom/android/server/BluetoothManagerService;->access$4302(Lcom/android/server/BluetoothManagerService;I)I
+PLcom/android/server/BluetoothManagerService;->access$4308(Lcom/android/server/BluetoothManagerService;)I
+PLcom/android/server/BluetoothManagerService;->access$4500(Lcom/android/server/BluetoothManagerService;)I
+PLcom/android/server/BluetoothManagerService;->access$4502(Lcom/android/server/BluetoothManagerService;I)I
+PLcom/android/server/BluetoothManagerService;->access$4508(Lcom/android/server/BluetoothManagerService;)I
+PLcom/android/server/BluetoothManagerService;->access$4600(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$4700(Lcom/android/server/BluetoothManagerService;)V
+PLcom/android/server/BluetoothManagerService;->access$500(Lcom/android/server/BluetoothManagerService;ILjava/lang/String;)V
+PLcom/android/server/BluetoothManagerService;->access$600(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$600(Lcom/android/server/BluetoothManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/BluetoothManagerService;->access$700(Lcom/android/server/BluetoothManagerService;)Ljava/util/Map;
+PLcom/android/server/BluetoothManagerService;->access$700(Lcom/android/server/BluetoothManagerService;)Z
+PLcom/android/server/BluetoothManagerService;->access$800(Lcom/android/server/BluetoothManagerService;I)V
 HSPLcom/android/server/BluetoothManagerService;->access$900(Lcom/android/server/BluetoothManagerService;)Ljava/util/concurrent/locks/ReentrantReadWriteLock;
 HSPLcom/android/server/BluetoothManagerService;->addActiveLog(ILjava/lang/String;Z)V
+PLcom/android/server/BluetoothManagerService;->addCrashLog()V
 HSPLcom/android/server/BluetoothManagerService;->bindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)Z
 HSPLcom/android/server/BluetoothManagerService;->bluetoothStateChangeHandler(II)V
-HSPLcom/android/server/BluetoothManagerService;->checkIfCallerIsForegroundUser()Z
-HSPLcom/android/server/BluetoothManagerService;->continueFromBleOnState()V
+HPLcom/android/server/BluetoothManagerService;->checkIfCallerIsForegroundUser()Z
+HPLcom/android/server/BluetoothManagerService;->checkPackage(ILjava/lang/String;)V
+PLcom/android/server/BluetoothManagerService;->clearBleApps()V
+PLcom/android/server/BluetoothManagerService;->continueFromBleOnState()V
 PLcom/android/server/BluetoothManagerService;->disable(Ljava/lang/String;Z)Z
 PLcom/android/server/BluetoothManagerService;->disableBleScanMode()V
 HSPLcom/android/server/BluetoothManagerService;->doBind(Landroid/content/Intent;Landroid/content/ServiceConnection;ILandroid/os/UserHandle;)Z
-PLcom/android/server/BluetoothManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/BluetoothManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/BluetoothManagerService;->enable(Ljava/lang/String;)Z
-HSPLcom/android/server/BluetoothManagerService;->getAddress()Ljava/lang/String;
-PLcom/android/server/BluetoothManagerService;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt;
+PLcom/android/server/BluetoothManagerService;->enableNoAutoConnect(Ljava/lang/String;)Z
+HPLcom/android/server/BluetoothManagerService;->getAddress()Ljava/lang/String;
+HPLcom/android/server/BluetoothManagerService;->getBluetoothGatt()Landroid/bluetooth/IBluetoothGatt;
 PLcom/android/server/BluetoothManagerService;->getEnableDisableReasonString(I)Ljava/lang/String;
-PLcom/android/server/BluetoothManagerService;->getName()Ljava/lang/String;
+HPLcom/android/server/BluetoothManagerService;->getName()Ljava/lang/String;
+PLcom/android/server/BluetoothManagerService;->getServiceRestartMs()I
+PLcom/android/server/BluetoothManagerService;->getState()I
+HSPLcom/android/server/BluetoothManagerService;->getSystemConfigEnabledProfilesForPackage(Ljava/lang/String;)Ljava/util/List;
 PLcom/android/server/BluetoothManagerService;->handleDisable()V
 HSPLcom/android/server/BluetoothManagerService;->handleEnable(Z)V
 HSPLcom/android/server/BluetoothManagerService;->handleOnBootPhase()V
-HSPLcom/android/server/BluetoothManagerService;->handleOnUnlockUser(I)V
+PLcom/android/server/BluetoothManagerService;->handleOnUnlockUser(I)V
+HPLcom/android/server/BluetoothManagerService;->isAirplaneModeOn()Z
 PLcom/android/server/BluetoothManagerService;->isBleAppPresent()Z
-PLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z
+HPLcom/android/server/BluetoothManagerService;->isBleScanAlwaysAvailable()Z
 HSPLcom/android/server/BluetoothManagerService;->isBluetoothDisallowed()Z
 HSPLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOn()Z
+PLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOnAirplane()Z
+HSPLcom/android/server/BluetoothManagerService;->isBluetoothPersistedStateOnBluetooth()Z
 PLcom/android/server/BluetoothManagerService;->isEnabled()Z
 HSPLcom/android/server/BluetoothManagerService;->isHearingAidProfileSupported()Z
+HSPLcom/android/server/BluetoothManagerService;->isNameAndAddressSet()Z
 HSPLcom/android/server/BluetoothManagerService;->loadStoredNameAndAddress()V
-HSPLcom/android/server/BluetoothManagerService;->persistBluetoothSetting(I)V
+PLcom/android/server/BluetoothManagerService;->onAirplaneModeChanged()V
+PLcom/android/server/BluetoothManagerService;->persistBluetoothSetting(I)V
 HSPLcom/android/server/BluetoothManagerService;->registerAdapter(Landroid/bluetooth/IBluetoothManagerCallback;)Landroid/bluetooth/IBluetooth;
+HSPLcom/android/server/BluetoothManagerService;->registerForBleScanModeChange()V
 HSPLcom/android/server/BluetoothManagerService;->registerStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
 HSPLcom/android/server/BluetoothManagerService;->sendBleStateChanged(II)V
 PLcom/android/server/BluetoothManagerService;->sendBluetoothServiceDownCallback()V
 HSPLcom/android/server/BluetoothManagerService;->sendBluetoothServiceUpCallback()V
-HSPLcom/android/server/BluetoothManagerService;->sendBluetoothStateCallback(Z)V
+PLcom/android/server/BluetoothManagerService;->sendBluetoothStateCallback(Z)V
 PLcom/android/server/BluetoothManagerService;->sendBrEdrDownCallback()V
+PLcom/android/server/BluetoothManagerService;->sendDisableMsg(ILjava/lang/String;)V
+HSPLcom/android/server/BluetoothManagerService;->sendEnableMsg(ZILjava/lang/String;)V
 HSPLcom/android/server/BluetoothManagerService;->storeNameAndAddress(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/BluetoothManagerService;->supportBluetoothPersistedState()Z
+PLcom/android/server/BluetoothManagerService;->timeToLog(J)Ljava/lang/CharSequence;
 PLcom/android/server/BluetoothManagerService;->unbindAndFinish()V
 PLcom/android/server/BluetoothManagerService;->unbindBluetoothProfileService(ILandroid/bluetooth/IBluetoothProfileServiceConnection;)V
-PLcom/android/server/BluetoothManagerService;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
-PLcom/android/server/BluetoothManagerService;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
-HSPLcom/android/server/BluetoothManagerService;->updateOppLauncherComponentState(IZ)V
+HPLcom/android/server/BluetoothManagerService;->unregisterStateChangeCallback(Landroid/bluetooth/IBluetoothStateChangeCallback;)V
+HPLcom/android/server/BluetoothManagerService;->updateBleAppCount(Landroid/os/IBinder;ZLjava/lang/String;)I
+PLcom/android/server/BluetoothManagerService;->updateOppLauncherComponentState(IZ)V
 PLcom/android/server/BluetoothManagerService;->waitForOnOff(ZZ)Z
 HSPLcom/android/server/BluetoothService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/BluetoothService;->initialize()V
 HSPLcom/android/server/BluetoothService;->onBootPhase(I)V
 HSPLcom/android/server/BluetoothService;->onStart()V
-HSPLcom/android/server/BluetoothService;->onUnlockUser(I)V
+PLcom/android/server/BluetoothService;->onUnlockUser(I)V
+HSPLcom/android/server/CachedDeviceStateService$1;-><init>(Lcom/android/server/CachedDeviceStateService;)V
 HSPLcom/android/server/CachedDeviceStateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/CachedDeviceStateService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/CachedDeviceStateService;->access$000(Lcom/android/server/CachedDeviceStateService;)Lcom/android/internal/os/CachedDeviceState;
 HSPLcom/android/server/CachedDeviceStateService;->onBootPhase(I)V
 HSPLcom/android/server/CachedDeviceStateService;->onStart()V
+HSPLcom/android/server/CachedDeviceStateService;->queryIsCharging()Z
+HSPLcom/android/server/CachedDeviceStateService;->queryScreenInteractive(Landroid/content/Context;)Z
+PLcom/android/server/CertBlacklister$BlacklistObserver$1;-><init>(Lcom/android/server/CertBlacklister$BlacklistObserver;Ljava/lang/String;)V
+PLcom/android/server/CertBlacklister$BlacklistObserver$1;->run()V
+HSPLcom/android/server/CertBlacklister$BlacklistObserver;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/content/ContentResolver;)V
+PLcom/android/server/CertBlacklister$BlacklistObserver;->access$000(Lcom/android/server/CertBlacklister$BlacklistObserver;)Ljava/io/File;
+PLcom/android/server/CertBlacklister$BlacklistObserver;->access$100(Lcom/android/server/CertBlacklister$BlacklistObserver;)Ljava/lang/String;
+PLcom/android/server/CertBlacklister$BlacklistObserver;->getValue()Ljava/lang/String;
+PLcom/android/server/CertBlacklister$BlacklistObserver;->onChange(Z)V
+PLcom/android/server/CertBlacklister$BlacklistObserver;->writeBlacklist()V
+HSPLcom/android/server/CertBlacklister;-><clinit>()V
 HSPLcom/android/server/CertBlacklister;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/CertBlacklister;->buildPubkeyObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
+HSPLcom/android/server/CertBlacklister;->buildSerialObserver(Landroid/content/ContentResolver;)Lcom/android/server/CertBlacklister$BlacklistObserver;
+HSPLcom/android/server/CertBlacklister;->registerObservers(Landroid/content/ContentResolver;)V
+HSPLcom/android/server/ConnectivityService$1;-><init>(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/ConnectivityService$1;->dumpHigh(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/ConnectivityService$1;->dumpNormal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
-HSPLcom/android/server/ConnectivityService$2;->getDefaultNetworkRequest()Landroid/net/NetworkRequest;
-HSPLcom/android/server/ConnectivityService$2;->isTetheringSupported()Z
-HSPLcom/android/server/ConnectivityService$3;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V
-PLcom/android/server/ConnectivityService$4;->lambda$onNat64PrefixEvent$0$ConnectivityService$4(IZLjava/lang/String;I)V
-HSPLcom/android/server/ConnectivityService$4;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
-PLcom/android/server/ConnectivityService$4;->onNat64PrefixEvent(IZLjava/lang/String;I)V
-HSPLcom/android/server/ConnectivityService$4;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
-HSPLcom/android/server/ConnectivityService$5;->onUidRulesChanged(II)V
-HSPLcom/android/server/ConnectivityService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/ConnectivityService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/ConnectivityService$2;-><init>(Lcom/android/server/ConnectivityService;)V
+HPLcom/android/server/ConnectivityService$2;->interfaceClassDataActivityChanged(Ljava/lang/String;ZJ)V
+HSPLcom/android/server/ConnectivityService$3;-><init>(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService$3;->lambda$onNat64PrefixEvent$0$ConnectivityService$3(IZLjava/lang/String;I)V
+HPLcom/android/server/ConnectivityService$3;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
+HPLcom/android/server/ConnectivityService$3;->onNat64PrefixEvent(IZLjava/lang/String;I)V
+HPLcom/android/server/ConnectivityService$3;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/ConnectivityService$4;-><init>(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService$4;->onRestrictBackgroundChanged(Z)V
+HSPLcom/android/server/ConnectivityService$4;->onUidRulesChanged(II)V
+HSPLcom/android/server/ConnectivityService$5;-><init>(Lcom/android/server/ConnectivityService;)V
+HSPLcom/android/server/ConnectivityService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/ConnectivityService$6;-><init>(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/ConnectivityService$7;-><clinit>()V
+PLcom/android/server/ConnectivityService$CaptivePortalImpl;-><init>(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
+PLcom/android/server/ConnectivityService$CaptivePortalImpl;-><init>(Lcom/android/server/ConnectivityService;Landroid/net/Network;Lcom/android/server/ConnectivityService$1;)V
+PLcom/android/server/ConnectivityService$CaptivePortalImpl;->appRequest(I)V
 PLcom/android/server/ConnectivityService$CaptivePortalImpl;->appResponse(I)V
+PLcom/android/server/ConnectivityService$CaptivePortalImpl;->getNetworkMonitorManager(Landroid/net/Network;)Landroid/net/NetworkMonitorManager;
 PLcom/android/server/ConnectivityService$CaptivePortalImpl;->logEvent(ILjava/lang/String;)V
+HSPLcom/android/server/ConnectivityService$ConnectivityDiagnosticsHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V
+HSPLcom/android/server/ConnectivityService$ConnectivityDiagnosticsHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;Lcom/android/server/ConnectivityService$1;)V
+PLcom/android/server/ConnectivityService$ConnectivityDiagnosticsHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/ConnectivityService$ConnectivityReportEvent;-><init>(JLcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService$ConnectivityReportEvent;-><init>(JLcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$1;)V
+PLcom/android/server/ConnectivityService$ConnectivityReportEvent;->access$8100(Lcom/android/server/ConnectivityService$ConnectivityReportEvent;)Lcom/android/server/connectivity/NetworkAgentInfo;
+PLcom/android/server/ConnectivityService$ConnectivityReportEvent;->access$8200(Lcom/android/server/ConnectivityService$ConnectivityReportEvent;)J
+HSPLcom/android/server/ConnectivityService$Dependencies;-><init>()V
+PLcom/android/server/ConnectivityService$Dependencies;->getBatteryStatsService()Lcom/android/internal/app/IBatteryStats;
+HSPLcom/android/server/ConnectivityService$Dependencies;->getIpConnectivityMetrics()Landroid/net/IIpConnectivityMetrics;
+PLcom/android/server/ConnectivityService$Dependencies;->getMetricsLogger()Lcom/android/server/connectivity/IpConnectivityMetrics$Logger;
+HPLcom/android/server/ConnectivityService$Dependencies;->getNetworkStack()Landroid/net/NetworkStackClient;
+HSPLcom/android/server/ConnectivityService$Dependencies;->getSystemProperties()Lcom/android/server/connectivity/MockableSystemProperties;
+HSPLcom/android/server/ConnectivityService$Dependencies;->getTetheringManager()Landroid/net/TetheringManager;
+HSPLcom/android/server/ConnectivityService$Dependencies;->makeHandlerThread()Landroid/os/HandlerThread;
+HSPLcom/android/server/ConnectivityService$Dependencies;->makeMultinetworkPolicyTracker(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/net/util/MultinetworkPolicyTracker;
+HSPLcom/android/server/ConnectivityService$Dependencies;->makeNetIdManager()Lcom/android/server/NetIdManager;
+HSPLcom/android/server/ConnectivityService$Dependencies;->makeProxyTracker(Landroid/content/Context;Landroid/os/Handler;)Lcom/android/server/connectivity/ProxyTracker;
+HPLcom/android/server/ConnectivityService$Dependencies;->queryUserAccess(II)Z
+HSPLcom/android/server/ConnectivityService$InternalHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V
 HSPLcom/android/server/ConnectivityService$InternalHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;->add(ILcom/android/server/connectivity/NetworkAgentInfo;)V
+HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;-><init>(Lcom/android/server/ConnectivityService;)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->add(ILcom/android/server/connectivity/NetworkAgentInfo;)V
 HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;->addSupportedType(I)V
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->getNetworkForType(I)Lcom/android/server/connectivity/NetworkAgentInfo;
 HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;->isTypeSupported(I)Z
-HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;->maybeLogBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;IZ)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->maybeLogBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;IZ)V
 PLcom/android/server/ConnectivityService$LegacyTypeTracker;->naiToString(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/lang/String;
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->remove(ILcom/android/server/connectivity/NetworkAgentInfo;Z)V
-PLcom/android/server/ConnectivityService$LegacyTypeTracker;->remove(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
-HSPLcom/android/server/ConnectivityService$LegacyTypeTracker;->update(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;-><init>(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->hideProvisioningNotification()V
-HSPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyNetworkTested(ILjava/lang/String;)V
-HSPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->onNetworkMonitorCreated(Landroid/net/INetworkMonitor;)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->remove(ILcom/android/server/connectivity/NetworkAgentInfo;Z)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->remove(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
+HPLcom/android/server/ConnectivityService$LegacyTypeTracker;->update(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;-><init>(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;I)V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;-><init>(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;ILandroid/os/IBinder$DeathRecipient;)V
+PLcom/android/server/ConnectivityService$NetworkFactoryInfo;->cancelRequest(Landroid/net/NetworkRequest;)V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;->completeConnection()V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;->connect(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;->isLegacyNetworkFactory()Z
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;->requestNetwork(Landroid/net/NetworkRequest;II)V
+HSPLcom/android/server/ConnectivityService$NetworkFactoryInfo;->sendMessageToNetworkProvider(IIILjava/lang/Object;)V
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;-><init>(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;-><init>(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$1;)V
+PLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->getInterfaceVersion()I
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->hideProvisioningNotification()V
+PLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyDataStallSuspected(JILandroid/os/PersistableBundle;)V
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyNetworkTested(ILjava/lang/String;)V
+PLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyNetworkTestedWithExtras(ILjava/lang/String;JLandroid/os/PersistableBundle;)V
+PLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyPrivateDnsConfigResolved(Landroid/net/PrivateDnsConfigParcel;)V
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->notifyProbeStatusChanged(II)V
+HPLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->onNetworkMonitorCreated(Landroid/net/INetworkMonitor;)V
 PLcom/android/server/ConnectivityService$NetworkMonitorCallbacks;->showProvisioningNotification(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/ConnectivityService$NetworkProviderInfo;-><init>(Ljava/lang/String;Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;ILandroid/os/IBinder$DeathRecipient;)V
+HPLcom/android/server/ConnectivityService$NetworkProviderInfo;->cancelRequest(Landroid/net/NetworkRequest;)V
+HSPLcom/android/server/ConnectivityService$NetworkProviderInfo;->connect(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/ConnectivityService$NetworkProviderInfo;->isLegacyNetworkFactory()Z
+HSPLcom/android/server/ConnectivityService$NetworkProviderInfo;->requestNetwork(Landroid/net/NetworkRequest;II)V
+HSPLcom/android/server/ConnectivityService$NetworkProviderInfo;->sendMessageToNetworkProvider(IIILjava/lang/Object;)V
+HPLcom/android/server/ConnectivityService$NetworkReassignment$NetworkBgStatePair;-><init>(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
+HPLcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;-><init>(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;-><init>()V
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;-><init>(Lcom/android/server/ConnectivityService$1;)V
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;->access$6600(Lcom/android/server/ConnectivityService$NetworkReassignment;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Lcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;
+PLcom/android/server/ConnectivityService$NetworkReassignment;->access$7200(Lcom/android/server/ConnectivityService$NetworkReassignment;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Lcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;
+HPLcom/android/server/ConnectivityService$NetworkReassignment;->addRematchedNetwork(Lcom/android/server/ConnectivityService$NetworkReassignment$NetworkBgStatePair;)V
+HPLcom/android/server/ConnectivityService$NetworkReassignment;->addRequestReassignment(Lcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;)V
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;->getReassignment(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Lcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;->getRematchedNetworks()Ljava/lang/Iterable;
+HSPLcom/android/server/ConnectivityService$NetworkReassignment;->getRequestReassignments()Ljava/lang/Iterable;
 PLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;Landroid/app/PendingIntent;)V
 HSPLcom/android/server/ConnectivityService$NetworkRequestInfo;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;Landroid/net/NetworkRequest;Landroid/os/IBinder;)V
-HSPLcom/android/server/ConnectivityService$NetworkRequestInfo;->binderDied()V
+HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->binderDied()V
 HSPLcom/android/server/ConnectivityService$NetworkRequestInfo;->enforceRequestCountLimit()V
 HSPLcom/android/server/ConnectivityService$NetworkRequestInfo;->toString()Ljava/lang/String;
-HSPLcom/android/server/ConnectivityService$NetworkRequestInfo;->unlinkDeathRecipient()V
+HPLcom/android/server/ConnectivityService$NetworkRequestInfo;->unlinkDeathRecipient()V
+HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;-><init>(Lcom/android/server/ConnectivityService;Landroid/os/Looper;)V
+PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->getCaptivePortalMode()I
 HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->handleNetworkTested(Lcom/android/server/connectivity/NetworkAgentInfo;ILjava/lang/String;)V
 HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleAsyncChannelMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentInfoMessage(Landroid/os/Message;)Z
 HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkAgentMessage(Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkFactoryMessage(Landroid/os/Message;)Z
 HSPLcom/android/server/ConnectivityService$NetworkStateTrackerHandler;->maybeHandleNetworkMonitorMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService$NetworkTestedResults;-><init>(IIJLjava/lang/String;)V
+PLcom/android/server/ConnectivityService$NetworkTestedResults;-><init>(IIJLjava/lang/String;Lcom/android/server/ConnectivityService$1;)V
+PLcom/android/server/ConnectivityService$NetworkTestedResults;->access$2100(Lcom/android/server/ConnectivityService$NetworkTestedResults;)I
+PLcom/android/server/ConnectivityService$NetworkTestedResults;->access$2200(Lcom/android/server/ConnectivityService$NetworkTestedResults;)I
+PLcom/android/server/ConnectivityService$NetworkTestedResults;->access$2300(Lcom/android/server/ConnectivityService$NetworkTestedResults;)Ljava/lang/String;
+PLcom/android/server/ConnectivityService$NetworkTestedResults;->access$2400(Lcom/android/server/ConnectivityService$NetworkTestedResults;)J
+HSPLcom/android/server/ConnectivityService$SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/ConnectivityService$SettingsObserver;->observe(Landroid/net/Uri;I)V
-HSPLcom/android/server/ConnectivityService$UnneededFor;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/server/ConnectivityService$UnneededFor;->values()[Lcom/android/server/ConnectivityService$UnneededFor;
+PLcom/android/server/ConnectivityService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/ConnectivityService$UnneededFor;-><clinit>()V
+PLcom/android/server/ConnectivityService$UnneededFor;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService$UnneededFor;->values()[Lcom/android/server/ConnectivityService$UnneededFor;
+HSPLcom/android/server/ConnectivityService;-><clinit>()V
 HSPLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;)V
-HSPLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/net/metrics/IpConnectivityLog;)V
-HSPLcom/android/server/ConnectivityService;->avoidBadWifi()Z
-HSPLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V
-HSPLcom/android/server/ConnectivityService;->clearNetworkForRequest(I)V
-HSPLcom/android/server/ConnectivityService;->createMultinetworkPolicyTracker(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/Runnable;)Landroid/net/util/MultinetworkPolicyTracker;
-HSPLcom/android/server/ConnectivityService;->createVpnInfo(Lcom/android/server/connectivity/Vpn;)Lcom/android/internal/net/VpnInfo;
-PLcom/android/server/ConnectivityService;->disconnectAndDestroyNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HSPLcom/android/server/ConnectivityService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/net/IDnsResolver;Landroid/net/metrics/IpConnectivityLog;Landroid/net/INetd;Lcom/android/server/ConnectivityService$Dependencies;)V
+HPLcom/android/server/ConnectivityService;->access$000(Ljava/lang/String;)V
+PLcom/android/server/ConnectivityService;->access$100(Lcom/android/server/ConnectivityService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HSPLcom/android/server/ConnectivityService;->access$1000(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap;
+HPLcom/android/server/ConnectivityService;->access$1000(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService;->access$1100()Z
+PLcom/android/server/ConnectivityService;->access$1100(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService;->access$1200()Z
+HPLcom/android/server/ConnectivityService;->access$1400(Lcom/android/server/ConnectivityService;ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->access$1500(Lcom/android/server/ConnectivityService;ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->access$1500(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
+HPLcom/android/server/ConnectivityService;->access$1600(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
+HPLcom/android/server/ConnectivityService;->access$1600(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkScore;)V
+HPLcom/android/server/ConnectivityService;->access$1700(I)Z
+PLcom/android/server/ConnectivityService;->access$1700(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkScore;)V
+PLcom/android/server/ConnectivityService;->access$1800(I)Z
+PLcom/android/server/ConnectivityService;->access$1800(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/KeepaliveTracker;
+PLcom/android/server/ConnectivityService;->access$1900(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/KeepaliveTracker;
+PLcom/android/server/ConnectivityService;->access$1900(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)V
+HPLcom/android/server/ConnectivityService;->access$200(Lcom/android/server/ConnectivityService;IZJ)V
+PLcom/android/server/ConnectivityService;->access$2000(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$Dependencies;
+PLcom/android/server/ConnectivityService;->access$2000(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)V
+PLcom/android/server/ConnectivityService;->access$2100(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$Dependencies;
+PLcom/android/server/ConnectivityService;->access$2100(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$2200(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->access$2300(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager;
+PLcom/android/server/ConnectivityService;->access$2300(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$2400(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager;
+PLcom/android/server/ConnectivityService;->access$2400(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->access$2500(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
+PLcom/android/server/ConnectivityService;->access$2500(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$2600(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
+PLcom/android/server/ConnectivityService;->access$2600(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$2700(Lcom/android/server/ConnectivityService;)Lcom/android/server/connectivity/NetworkNotificationManager;
+PLcom/android/server/ConnectivityService;->access$2700(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$2800(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/shared/PrivateDnsConfig;)V
+PLcom/android/server/ConnectivityService;->access$2900(Lcom/android/server/ConnectivityService;)Landroid/content/Context;
+PLcom/android/server/ConnectivityService;->access$2900(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$Dependencies;
+HSPLcom/android/server/ConnectivityService;->access$300(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$InternalHandler;
+HPLcom/android/server/ConnectivityService;->access$300(Lcom/android/server/ConnectivityService;IZJ)V
+PLcom/android/server/ConnectivityService;->access$3000(Lcom/android/server/ConnectivityService;)Landroid/content/Context;
+PLcom/android/server/ConnectivityService;->access$3000(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$3000(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)Z
+PLcom/android/server/ConnectivityService;->access$3100(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$3100(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)Z
+HPLcom/android/server/ConnectivityService;->access$3200(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler;
+HPLcom/android/server/ConnectivityService;->access$3200(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;IZ)V
+PLcom/android/server/ConnectivityService;->access$3200(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$3300(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler;
+PLcom/android/server/ConnectivityService;->access$3300(Lcom/android/server/ConnectivityService;Landroid/net/Network;)V
+PLcom/android/server/ConnectivityService;->access$3300(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;IZ)V
+PLcom/android/server/ConnectivityService;->access$3400(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler;
+PLcom/android/server/ConnectivityService;->access$3400(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService;->access$3500(Lcom/android/server/ConnectivityService;)Landroid/content/Context;
+PLcom/android/server/ConnectivityService;->access$3500(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService;->access$3500(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$3600(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$3600(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;I)Z
+HSPLcom/android/server/ConnectivityService;->access$3700(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkProviderInfo;)V
+PLcom/android/server/ConnectivityService;->access$3700(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->access$3800(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;)V
+HSPLcom/android/server/ConnectivityService;->access$3800(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V
+HSPLcom/android/server/ConnectivityService;->access$3800(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkProviderInfo;)V
+PLcom/android/server/ConnectivityService;->access$3900(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler;
+PLcom/android/server/ConnectivityService;->access$3900(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;)V
+HSPLcom/android/server/ConnectivityService;->access$3900(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V
+HPLcom/android/server/ConnectivityService;->access$3900(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetworkMonitor;)V
+PLcom/android/server/ConnectivityService;->access$400(Lcom/android/server/ConnectivityService;)Lcom/android/server/ConnectivityService$InternalHandler;
+HSPLcom/android/server/ConnectivityService;->access$4000(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+PLcom/android/server/ConnectivityService;->access$4000(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetworkMonitor;)V
+PLcom/android/server/ConnectivityService;->access$4100(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService;->access$4100(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+PLcom/android/server/ConnectivityService;->access$4200(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$4200(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService;->access$4200(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+PLcom/android/server/ConnectivityService;->access$4300(Lcom/android/server/ConnectivityService;Landroid/app/PendingIntent;I)V
+PLcom/android/server/ConnectivityService;->access$4300(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+PLcom/android/server/ConnectivityService;->access$4400(Lcom/android/server/ConnectivityService;Landroid/app/PendingIntent;I)V
+HPLcom/android/server/ConnectivityService;->access$4400(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;IZ)V
+PLcom/android/server/ConnectivityService;->access$4400(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkProviderInfo;)V
+HPLcom/android/server/ConnectivityService;->access$4500(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;IZ)V
+PLcom/android/server/ConnectivityService;->access$4500(Lcom/android/server/ConnectivityService;Landroid/os/Messenger;)V
+PLcom/android/server/ConnectivityService;->access$4600(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetworkMonitor;)V
+PLcom/android/server/ConnectivityService;->access$4700(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HSPLcom/android/server/ConnectivityService;->access$4800(Lcom/android/server/ConnectivityService;)V
+HSPLcom/android/server/ConnectivityService;->access$4900(Lcom/android/server/ConnectivityService;)V
+HPLcom/android/server/ConnectivityService;->access$4900(Lcom/android/server/ConnectivityService;Landroid/net/Network;IZ)V
+PLcom/android/server/ConnectivityService;->access$4900(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->access$500(Lcom/android/server/ConnectivityService;I)Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService;->access$5000(Lcom/android/server/ConnectivityService;Landroid/net/Network;IZ)V
+PLcom/android/server/ConnectivityService;->access$5100(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;IZ)V
+HPLcom/android/server/ConnectivityService;->access$5100(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+HSPLcom/android/server/ConnectivityService;->access$5200(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService;->access$5200(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+PLcom/android/server/ConnectivityService;->access$5300(Lcom/android/server/ConnectivityService;)V
+HSPLcom/android/server/ConnectivityService;->access$5300(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5400(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5500(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService;->access$5500(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5600(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5600(Lcom/android/server/ConnectivityService;Landroid/net/Network;IZ)V
+PLcom/android/server/ConnectivityService;->access$5700(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5800(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$5800(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+PLcom/android/server/ConnectivityService;->access$5800(Lcom/android/server/ConnectivityService;Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->access$5900(Lcom/android/server/ConnectivityService;)V
+PLcom/android/server/ConnectivityService;->access$5900(Lcom/android/server/ConnectivityService;Ljava/lang/String;I)V
+HPLcom/android/server/ConnectivityService;->access$600(Lcom/android/server/ConnectivityService;)Landroid/net/NetworkRequest;
+HPLcom/android/server/ConnectivityService;->access$600(Lcom/android/server/ConnectivityService;I)Lcom/android/server/connectivity/NetworkAgentInfo;
+PLcom/android/server/ConnectivityService;->access$6000(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$6000(Lcom/android/server/ConnectivityService;Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->access$6000(Lcom/android/server/ConnectivityService;Ljava/lang/String;IZ)V
+HSPLcom/android/server/ConnectivityService;->access$6100(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V
+PLcom/android/server/ConnectivityService;->access$6100(Lcom/android/server/ConnectivityService;Ljava/lang/String;IZ)V
+HSPLcom/android/server/ConnectivityService;->access$6200(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/ConnectivityService;->access$6200(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V
+HSPLcom/android/server/ConnectivityService;->access$6300(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray;
+PLcom/android/server/ConnectivityService;->access$6400(Lcom/android/server/ConnectivityService;I)V
+PLcom/android/server/ConnectivityService;->access$6500(Lcom/android/server/ConnectivityService;Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->access$6600(Lcom/android/server/ConnectivityService;Ljava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->access$6700(Lcom/android/server/ConnectivityService;Ljava/lang/String;IZ)V
+PLcom/android/server/ConnectivityService;->access$6800(Lcom/android/server/ConnectivityService;Landroid/net/NetworkRequest;)V
+PLcom/android/server/ConnectivityService;->access$6900(Lcom/android/server/ConnectivityService;)Landroid/util/SparseIntArray;
+HPLcom/android/server/ConnectivityService;->access$700(Lcom/android/server/ConnectivityService;)Landroid/net/NetworkRequest;
+PLcom/android/server/ConnectivityService;->access$700(Lcom/android/server/ConnectivityService;IZLjava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->access$7600(Lcom/android/server/ConnectivityService;Lcom/android/server/ConnectivityService$ConnectivityReportEvent;Landroid/os/PersistableBundle;)V
+PLcom/android/server/ConnectivityService;->access$7700(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;JILandroid/os/PersistableBundle;)V
+PLcom/android/server/ConnectivityService;->access$7800(Lcom/android/server/ConnectivityService;Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
+PLcom/android/server/ConnectivityService;->access$800(Lcom/android/server/ConnectivityService;IZLjava/lang/String;I)V
+HSPLcom/android/server/ConnectivityService;->access$800(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HSPLcom/android/server/ConnectivityService;->access$900(Lcom/android/server/ConnectivityService;)Ljava/util/HashMap;
+HSPLcom/android/server/ConnectivityService;->access$900(Lcom/android/server/ConnectivityService;Landroid/os/Message;)V
+HPLcom/android/server/ConnectivityService;->addLegacyRouteToHost(Landroid/net/LinkProperties;Ljava/net/InetAddress;II)Z
+HPLcom/android/server/ConnectivityService;->addNetworkToLegacyTypeTracker(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->applyBackgroundChangeForRematch(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->avoidBadWifi()Z
+HPLcom/android/server/ConnectivityService;->callCallbackForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;II)V
+PLcom/android/server/ConnectivityService;->checkAnyPermissionOf(II[Ljava/lang/String;)Z
+HSPLcom/android/server/ConnectivityService;->checkAnyPermissionOf([Ljava/lang/String;)Z
+PLcom/android/server/ConnectivityService;->checkNetworkSignalStrengthWakeupPermission(II)Z
+HPLcom/android/server/ConnectivityService;->checkNetworkStackPermission()Z
+HSPLcom/android/server/ConnectivityService;->checkSettingsPermission()Z
+HPLcom/android/server/ConnectivityService;->checkSettingsPermission(II)Z
+HPLcom/android/server/ConnectivityService;->computeInitialReassignment()Lcom/android/server/ConnectivityService$NetworkReassignment;
+HPLcom/android/server/ConnectivityService;->computeRequestReassignmentForNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/util/ArrayMap;
+HSPLcom/android/server/ConnectivityService;->createDefaultInternetRequestForTransport(ILandroid/net/NetworkRequest$Type;)Landroid/net/NetworkRequest;
+HSPLcom/android/server/ConnectivityService;->createDefaultNetworkCapabilitiesForUid(I)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->createNativeNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+HPLcom/android/server/ConnectivityService;->createVpnInfo(Lcom/android/server/connectivity/Vpn;)Lcom/android/internal/net/VpnInfo;
+HPLcom/android/server/ConnectivityService;->decrementNetworkRequestPerUidCount(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->destroyNativeNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->disallowedBecauseSystemCaller()Z
+HPLcom/android/server/ConnectivityService;->disconnectAndDestroyNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/ConnectivityService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/ConnectivityService;->dumpAvoidBadWifiSettings(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/ConnectivityService;->dumpNetworkDiagnostics(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/ConnectivityService;->dumpNetworks(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/ConnectivityService;->enforceAnyPermissionOf([Ljava/lang/String;)V
-HSPLcom/android/server/ConnectivityService;->enforceConnectivityRestrictedNetworksPermission()V
-PLcom/android/server/ConnectivityService;->ensureNetworkTransitionWakelock(Ljava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->dumpNetworkRequests(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/ConnectivityService;->dumpNetworks(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/ConnectivityService;->encodeBool(Z)I
+HSPLcom/android/server/ConnectivityService;->enforceAccessPermission()V
+PLcom/android/server/ConnectivityService;->enforceAirplaneModePermission()V
+HPLcom/android/server/ConnectivityService;->enforceAnyPermissionOf([Ljava/lang/String;)V
+HSPLcom/android/server/ConnectivityService;->enforceChangePermission()V
+HPLcom/android/server/ConnectivityService;->enforceConnectivityRestrictedNetworksPermission()V
+PLcom/android/server/ConnectivityService;->enforceControlAlwaysOnVpnPermission()V
+HPLcom/android/server/ConnectivityService;->enforceCrossUserPermission(I)V
+HPLcom/android/server/ConnectivityService;->enforceInternetPermission()V
+PLcom/android/server/ConnectivityService;->enforceKeepalivePermission()V
+HSPLcom/android/server/ConnectivityService;->enforceMeteredApnPolicy(Landroid/net/NetworkCapabilities;)V
+HSPLcom/android/server/ConnectivityService;->enforceNetworkFactoryPermission()V
+HSPLcom/android/server/ConnectivityService;->enforceNetworkRequestPermissions(Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/ConnectivityService;->enforceNetworkStackOrSettingsPermission()V
+PLcom/android/server/ConnectivityService;->enforceNetworkStackSettingsOrSetup()V
+PLcom/android/server/ConnectivityService;->enforceSettingsPermission()V
+PLcom/android/server/ConnectivityService;->enforceTetherAccessPermission()V
+HSPLcom/android/server/ConnectivityService;->ensureNetworkRequestHasType(Landroid/net/NetworkRequest;)V
+HPLcom/android/server/ConnectivityService;->ensureNetworkTransitionWakelock(Ljava/lang/String;)V
+HSPLcom/android/server/ConnectivityService;->ensureRequestableCapabilities(Landroid/net/NetworkCapabilities;)V
 HSPLcom/android/server/ConnectivityService;->ensureRunningOnConnectivityServiceThread()V
+HSPLcom/android/server/ConnectivityService;->ensureSufficientPermissionsForRequest(Landroid/net/NetworkCapabilities;II)V
+HSPLcom/android/server/ConnectivityService;->ensureValid(Landroid/net/NetworkCapabilities;)V
+HSPLcom/android/server/ConnectivityService;->ensureValidNetworkSpecifier(Landroid/net/NetworkCapabilities;)V
 PLcom/android/server/ConnectivityService;->establishVpn(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/ConnectivityService;->eventName(I)Ljava/lang/String;
 HSPLcom/android/server/ConnectivityService;->filterNetworkStateForUid(Landroid/net/NetworkState;IZ)V
-PLcom/android/server/ConnectivityService;->findExistingNetworkRequestInfo(Landroid/app/PendingIntent;)Lcom/android/server/ConnectivityService$NetworkRequestInfo;
-HSPLcom/android/server/ConnectivityService;->getActiveLinkProperties()Landroid/net/LinkProperties;
-HSPLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->findExistingNetworkRequestInfo(Landroid/app/PendingIntent;)Lcom/android/server/ConnectivityService$NetworkRequestInfo;
+HPLcom/android/server/ConnectivityService;->getActiveLinkProperties()Landroid/net/LinkProperties;
+HPLcom/android/server/ConnectivityService;->getActiveNetwork()Landroid/net/Network;
 HSPLcom/android/server/ConnectivityService;->getActiveNetworkForUid(IZ)Landroid/net/Network;
 HSPLcom/android/server/ConnectivityService;->getActiveNetworkForUidInternal(IZ)Landroid/net/Network;
 HSPLcom/android/server/ConnectivityService;->getActiveNetworkInfo()Landroid/net/NetworkInfo;
-PLcom/android/server/ConnectivityService;->getAllNetworkInfo()[Landroid/net/NetworkInfo;
-HSPLcom/android/server/ConnectivityService;->getAllNetworkState()[Landroid/net/NetworkState;
-HSPLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network;
-HSPLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
-HSPLcom/android/server/ConnectivityService;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
-HSPLcom/android/server/ConnectivityService;->getDefaultNetworks()[Landroid/net/Network;
-PLcom/android/server/ConnectivityService;->getFilteredNetworkState(II)Landroid/net/NetworkState;
-HSPLcom/android/server/ConnectivityService;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
-HSPLcom/android/server/ConnectivityService;->getLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/LinkProperties;
-HSPLcom/android/server/ConnectivityService;->getLinkPropertiesProxyInfo(Landroid/net/Network;)Landroid/net/ProxyInfo;
-HSPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetId(I)Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService;->getAllNetworkInfo()[Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->getAllNetworkState()[Landroid/net/NetworkState;
+HPLcom/android/server/ConnectivityService;->getAllNetworks()[Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->getAllVpnInfo()[Lcom/android/internal/net/VpnInfo;
+HPLcom/android/server/ConnectivityService;->getAlwaysOnVpnPackage(I)Ljava/lang/String;
+HSPLcom/android/server/ConnectivityService;->getDefaultNetwork()Lcom/android/server/connectivity/NetworkAgentInfo;
+HPLcom/android/server/ConnectivityService;->getDefaultNetworkCapabilitiesForUser(I)[Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->getDefaultNetworks()[Landroid/net/Network;
+PLcom/android/server/ConnectivityService;->getDefaultRequest()Landroid/net/NetworkRequest;
+HSPLcom/android/server/ConnectivityService;->getDnsResolver()Landroid/net/IDnsResolver;
+HPLcom/android/server/ConnectivityService;->getFilteredNetworkState(II)Landroid/net/NetworkState;
+PLcom/android/server/ConnectivityService;->getGlobalProxy()Landroid/net/ProxyInfo;
+PLcom/android/server/ConnectivityService;->getLegacyVpnInfo(I)Lcom/android/internal/net/LegacyVpnInfo;
+HPLcom/android/server/ConnectivityService;->getLinkProperties(Landroid/net/Network;)Landroid/net/LinkProperties;
+HPLcom/android/server/ConnectivityService;->getLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/LinkProperties;
+HPLcom/android/server/ConnectivityService;->getLinkPropertiesProxyInfo(Landroid/net/Network;)Landroid/net/ProxyInfo;
+PLcom/android/server/ConnectivityService;->getMatchingPermissionedCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/List;
+PLcom/android/server/ConnectivityService;->getMultipathPreference(Landroid/net/Network;)I
+PLcom/android/server/ConnectivityService;->getNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetId(I)Lcom/android/server/connectivity/NetworkAgentInfo;
 HSPLcom/android/server/ConnectivityService;->getNetworkAgentInfoForNetwork(Landroid/net/Network;)Lcom/android/server/connectivity/NetworkAgentInfo;
 HSPLcom/android/server/ConnectivityService;->getNetworkCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
 HSPLcom/android/server/ConnectivityService;->getNetworkCapabilitiesInternal(Lcom/android/server/connectivity/NetworkAgentInfo;)Landroid/net/NetworkCapabilities;
-HSPLcom/android/server/ConnectivityService;->getNetworkForRequest(I)Lcom/android/server/connectivity/NetworkAgentInfo;
-PLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->getNetworkInfo(I)Landroid/net/NetworkInfo;
 HSPLcom/android/server/ConnectivityService;->getNetworkInfoForUid(Landroid/net/Network;IZ)Landroid/net/NetworkInfo;
-HSPLcom/android/server/ConnectivityService;->getNetworkStack()Landroid/net/NetworkStackClient;
-HSPLcom/android/server/ConnectivityService;->getNriForAppRequest(Landroid/net/NetworkRequest;ILjava/lang/String;)Lcom/android/server/ConnectivityService$NetworkRequestInfo;
+HPLcom/android/server/ConnectivityService;->getNetworkPermission(Landroid/net/NetworkCapabilities;)I
+HPLcom/android/server/ConnectivityService;->getNriForAppRequest(Landroid/net/NetworkRequest;ILjava/lang/String;)Lcom/android/server/ConnectivityService$NetworkRequestInfo;
 HSPLcom/android/server/ConnectivityService;->getProxyForNetwork(Landroid/net/Network;)Landroid/net/ProxyInfo;
-HSPLcom/android/server/ConnectivityService;->getSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/ArrayList;
-HSPLcom/android/server/ConnectivityService;->getSystemProperties()Lcom/android/server/connectivity/MockableSystemProperties;
+HPLcom/android/server/ConnectivityService;->getSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;)Ljava/util/ArrayList;
 PLcom/android/server/ConnectivityService;->getTetherableBluetoothRegexs()[Ljava/lang/String;
+PLcom/android/server/ConnectivityService;->getTetherableIfaces()[Ljava/lang/String;
 PLcom/android/server/ConnectivityService;->getTetherableUsbRegexs()[Ljava/lang/String;
-HSPLcom/android/server/ConnectivityService;->getTetherableWifiRegexs()[Ljava/lang/String;
+PLcom/android/server/ConnectivityService;->getTetherableWifiRegexs()[Ljava/lang/String;
 PLcom/android/server/ConnectivityService;->getTetheredIfaces()[Ljava/lang/String;
-HSPLcom/android/server/ConnectivityService;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
+HSPLcom/android/server/ConnectivityService;->getUnfilteredActiveNetworkState(I)Landroid/net/NetworkState;
+HPLcom/android/server/ConnectivityService;->getVpnConfig(I)Lcom/android/internal/net/VpnConfig;
 HSPLcom/android/server/ConnectivityService;->getVpnUnderlyingNetworks(I)[Landroid/net/Network;
 HSPLcom/android/server/ConnectivityService;->handleAlwaysOnNetworkRequest(Landroid/net/NetworkRequest;Ljava/lang/String;Z)V
-HSPLcom/android/server/ConnectivityService;->handleAsyncChannelDisconnected(Landroid/os/Message;)V
+PLcom/android/server/ConnectivityService;->handleApplyDefaultProxy(Landroid/net/ProxyInfo;)V
+HPLcom/android/server/ConnectivityService;->handleAsyncChannelDisconnected(Landroid/os/Message;)V
 HSPLcom/android/server/ConnectivityService;->handleAsyncChannelHalfConnect(Landroid/os/Message;)V
-PLcom/android/server/ConnectivityService;->handleLingerComplete(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->handleNat64PrefixEvent(IZLjava/lang/String;I)V
-PLcom/android/server/ConnectivityService;->handleNetworkUnvalidated(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->handlePerNetworkPrivateDnsConfig(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/shared/PrivateDnsConfig;)V
-PLcom/android/server/ConnectivityService;->handlePromptUnvalidated(Landroid/net/Network;)V
-HSPLcom/android/server/ConnectivityService;->handleRegisterNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetworkMonitor;)V
+HSPLcom/android/server/ConnectivityService;->handleConfigureAlwaysOnNetworks()V
+PLcom/android/server/ConnectivityService;->handleDataStallSuspected(Lcom/android/server/connectivity/NetworkAgentInfo;JILandroid/os/PersistableBundle;)V
+PLcom/android/server/ConnectivityService;->handleFreshlyValidatedNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->handleLingerComplete(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->handleNat64PrefixEvent(IZLjava/lang/String;I)V
+PLcom/android/server/ConnectivityService;->handleNetworkConnectivityReported(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
+PLcom/android/server/ConnectivityService;->handleNetworkTestedWithExtras(Lcom/android/server/ConnectivityService$ConnectivityReportEvent;Landroid/os/PersistableBundle;)V
+HPLcom/android/server/ConnectivityService;->handleNetworkUnvalidated(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->handlePerNetworkPrivateDnsConfig(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/shared/PrivateDnsConfig;)V
+HPLcom/android/server/ConnectivityService;->handlePrivateDnsValidationUpdate(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+HPLcom/android/server/ConnectivityService;->handlePromptUnvalidated(Landroid/net/Network;)V
+HPLcom/android/server/ConnectivityService;->handleRegisterNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetworkMonitor;)V
 HSPLcom/android/server/ConnectivityService;->handleRegisterNetworkFactory(Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V
+HSPLcom/android/server/ConnectivityService;->handleRegisterNetworkProvider(Lcom/android/server/ConnectivityService$NetworkProviderInfo;)V
 HSPLcom/android/server/ConnectivityService;->handleRegisterNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
-HSPLcom/android/server/ConnectivityService;->handleReleaseNetworkRequest(Landroid/net/NetworkRequest;IZ)V
-PLcom/android/server/ConnectivityService;->handleReleaseNetworkTransitionWakelock(I)V
-HSPLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
-PLcom/android/server/ConnectivityService;->handleReportNetworkConnectivity(Landroid/net/Network;IZ)V
-PLcom/android/server/ConnectivityService;->handleTimedOutNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+PLcom/android/server/ConnectivityService;->handleRegisterNetworkRequestWithIntent(Landroid/os/Message;)V
+HPLcom/android/server/ConnectivityService;->handleReleaseNetworkRequest(Landroid/net/NetworkRequest;IZ)V
+PLcom/android/server/ConnectivityService;->handleReleaseNetworkRequestWithIntent(Landroid/app/PendingIntent;I)V
+HPLcom/android/server/ConnectivityService;->handleReleaseNetworkTransitionWakelock(I)V
+HPLcom/android/server/ConnectivityService;->handleRemoveNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->handleReportNetworkConnectivity(Landroid/net/Network;IZ)V
+PLcom/android/server/ConnectivityService;->handleRestrictBackgroundChanged(Z)V
+PLcom/android/server/ConnectivityService;->handleSetAcceptUnvalidated(Landroid/net/Network;ZZ)V
+HPLcom/android/server/ConnectivityService;->handleTimedOutNetworkRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
 HSPLcom/android/server/ConnectivityService;->handleUidRulesChanged(II)V
-HSPLcom/android/server/ConnectivityService;->handleUpdateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V
+PLcom/android/server/ConnectivityService;->handleUnregisterNetworkFactory(Landroid/os/Messenger;)V
+HPLcom/android/server/ConnectivityService;->handleUnregisterNetworkProvider(Landroid/os/Messenger;)V
+HPLcom/android/server/ConnectivityService;->handleUpdateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;)V
 HSPLcom/android/server/ConnectivityService;->hasWifiNetworkListenPermission(Landroid/net/NetworkCapabilities;)Z
-PLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z
+HPLcom/android/server/ConnectivityService;->isActiveNetworkMetered()Z
+PLcom/android/server/ConnectivityService;->isAlwaysOnVpnPackageSupported(ILjava/lang/String;)Z
+HPLcom/android/server/ConnectivityService;->isDefaultNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+PLcom/android/server/ConnectivityService;->isDefaultRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)Z
 PLcom/android/server/ConnectivityService;->isLiveNetworkAgent(Lcom/android/server/connectivity/NetworkAgentInfo;I)Z
 HSPLcom/android/server/ConnectivityService;->isNetworkSupported(I)Z
-HSPLcom/android/server/ConnectivityService;->isNetworkWithLinkPropertiesBlocked(Landroid/net/LinkProperties;IZ)Z
-HSPLcom/android/server/ConnectivityService;->isTetheringSupported()Z
-HSPLcom/android/server/ConnectivityService;->isTetheringSupported(Ljava/lang/String;)Z
-HSPLcom/android/server/ConnectivityService;->isUidNetworkingWithVpnBlocked(IIZZ)Z
-HSPLcom/android/server/ConnectivityService;->lambda$new$0$ConnectivityService()V
+HPLcom/android/server/ConnectivityService;->isNetworkWithLinkPropertiesBlocked(Landroid/net/LinkProperties;IZ)Z
+HSPLcom/android/server/ConnectivityService;->isSystem(I)Z
+PLcom/android/server/ConnectivityService;->isTetheringSupported()Z
+PLcom/android/server/ConnectivityService;->isTetheringSupported(Ljava/lang/String;)Z
+HPLcom/android/server/ConnectivityService;->isUidNetworkingWithVpnBlocked(IIZZ)Z
+PLcom/android/server/ConnectivityService;->lambda$networksSortedById$1(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+PLcom/android/server/ConnectivityService;->lambda$new$0$ConnectivityService()V
+PLcom/android/server/ConnectivityService;->lambda$registerNetworkProvider$5$ConnectivityService(Landroid/os/Messenger;)V
+HPLcom/android/server/ConnectivityService;->lambda$requestsSortedById$2(Lcom/android/server/ConnectivityService$NetworkRequestInfo;)I
+HPLcom/android/server/ConnectivityService;->lambda$setUnderlyingNetworksForVpn$7$ConnectivityService()V
+PLcom/android/server/ConnectivityService;->lambda$startCaptivePortalApp$3$ConnectivityService(Landroid/net/Network;)V
 PLcom/android/server/ConnectivityService;->lambda$startCaptivePortalAppInternal$4$ConnectivityService(Landroid/content/Intent;)V
+HPLcom/android/server/ConnectivityService;->linkPropertiesRestrictedForCallerPermissions(Landroid/net/LinkProperties;II)Landroid/net/LinkProperties;
 HSPLcom/android/server/ConnectivityService;->listenForNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/NetworkRequest;
-HSPLcom/android/server/ConnectivityService;->makeDefault(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->makeGeneralIntent(Landroid/net/NetworkInfo;Ljava/lang/String;)Landroid/content/Intent;
-HSPLcom/android/server/ConnectivityService;->makeProxyTracker()Lcom/android/server/connectivity/ProxyTracker;
-HSPLcom/android/server/ConnectivityService;->makeTethering()Lcom/android/server/connectivity/Tethering;
-PLcom/android/server/ConnectivityService;->makeWakeupMessage(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;ILjava/lang/Object;)Lcom/android/internal/util/WakeupMessage;
+HSPLcom/android/server/ConnectivityService;->log(Ljava/lang/String;)V
+PLcom/android/server/ConnectivityService;->logNetworkEvent(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+PLcom/android/server/ConnectivityService;->loge(Ljava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->makeDefault(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->makeGeneralIntent(Landroid/net/NetworkInfo;Ljava/lang/String;)Landroid/content/Intent;
 HSPLcom/android/server/ConnectivityService;->maybeLogBlockedNetworkInfo(Landroid/net/NetworkInfo;I)V
-PLcom/android/server/ConnectivityService;->maybeLogBlockedStatusChanged(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Landroid/net/Network;Z)V
-PLcom/android/server/ConnectivityService;->maybeNotifyNetworkBlocked(Lcom/android/server/connectivity/NetworkAgentInfo;ZZZZ)V
+HPLcom/android/server/ConnectivityService;->maybeLogBlockedStatusChanged(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Landroid/net/Network;Z)V
+HPLcom/android/server/ConnectivityService;->maybeNotifyNetworkBlocked(Lcom/android/server/connectivity/NetworkAgentInfo;ZZZZ)V
 HSPLcom/android/server/ConnectivityService;->maybeNotifyNetworkBlockedForNewUidRules(II)V
-HSPLcom/android/server/ConnectivityService;->metricsLogger()Lcom/android/server/connectivity/IpConnectivityMetrics$Logger;
-HSPLcom/android/server/ConnectivityService;->mixInCapabilities(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)Landroid/net/NetworkCapabilities;
-HSPLcom/android/server/ConnectivityService;->networkCapabilitiesRestrictedForCallerPermissions(Landroid/net/NetworkCapabilities;II)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->maybeSanitizeLocationInfoForCaller(Landroid/net/NetworkCapabilities;I)V
+HPLcom/android/server/ConnectivityService;->mixInCapabilities(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/ConnectivityService;->mixInInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)Landroid/net/NetworkInfo;
+HPLcom/android/server/ConnectivityService;->networkCapabilitiesRestrictedForCallerPermissions(Landroid/net/NetworkCapabilities;II)Landroid/net/NetworkCapabilities;
+PLcom/android/server/ConnectivityService;->networkRequiresPrivateDnsValidation(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+PLcom/android/server/ConnectivityService;->networksSortedById()[Lcom/android/server/connectivity/NetworkAgentInfo;
+HSPLcom/android/server/ConnectivityService;->nextNetworkProviderId()I
 HSPLcom/android/server/ConnectivityService;->nextNetworkRequestId()I
-HSPLcom/android/server/ConnectivityService;->notifyIfacesChangedForNetworkStats()V
-HSPLcom/android/server/ConnectivityService;->notifyLockdownVpn(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->notifyNetworkAvailable(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
-HSPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-HSPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
-PLcom/android/server/ConnectivityService;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/server/ConnectivityService;->onPackageRemoved(Ljava/lang/String;IZ)V
+HPLcom/android/server/ConnectivityService;->notifyIfacesChangedForNetworkStats()V
+HPLcom/android/server/ConnectivityService;->notifyLockdownVpn(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->notifyNetworkAvailable(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$NetworkRequestInfo;)V
+HPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+HPLcom/android/server/ConnectivityService;->notifyNetworkCallbacks(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
+HPLcom/android/server/ConnectivityService;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/ConnectivityService;->onPackageRemoved(Ljava/lang/String;IZ)V
 PLcom/android/server/ConnectivityService;->onPackageReplaced(Ljava/lang/String;I)V
 PLcom/android/server/ConnectivityService;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/ConnectivityService;->onUserAdded(I)V
+PLcom/android/server/ConnectivityService;->onUserRemoved(I)V
 HSPLcom/android/server/ConnectivityService;->onUserStart(I)V
-HSPLcom/android/server/ConnectivityService;->onUserUnlocked(I)V
-PLcom/android/server/ConnectivityService;->prepareVpn(Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLcom/android/server/ConnectivityService;->processListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Z)V
-HSPLcom/android/server/ConnectivityService;->queryUserAccess(II)Z
+PLcom/android/server/ConnectivityService;->onUserStop(I)V
+PLcom/android/server/ConnectivityService;->onUserUnlocked(I)V
+PLcom/android/server/ConnectivityService;->pendingRequestForNetwork(Landroid/net/NetworkCapabilities;Landroid/app/PendingIntent;)Landroid/net/NetworkRequest;
+HPLcom/android/server/ConnectivityService;->prepareVpn(Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/ConnectivityService;->processListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->processNewlyLostListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->processNewlySatisfiedListenRequests(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->putParcelable(Landroid/os/Bundle;Landroid/os/Parcelable;)V
 HSPLcom/android/server/ConnectivityService;->registerNetdEventCallback()V
-HSPLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;I)I
+HPLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkAgentConfig;I)Landroid/net/Network;
+HPLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/net/NetworkMisc;I)I
+HPLcom/android/server/ConnectivityService;->registerNetworkAgent(Landroid/os/Messenger;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/NetworkScore;Landroid/net/NetworkAgentConfig;I)Landroid/net/Network;
 HSPLcom/android/server/ConnectivityService;->registerNetworkFactory(Landroid/os/Messenger;Ljava/lang/String;)I
+HSPLcom/android/server/ConnectivityService;->registerNetworkProvider(Landroid/os/Messenger;Ljava/lang/String;)I
 HSPLcom/android/server/ConnectivityService;->registerPrivateDnsSettingsCallbacks()V
 HSPLcom/android/server/ConnectivityService;->registerSettingsCallbacks()V
-HSPLcom/android/server/ConnectivityService;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
+HPLcom/android/server/ConnectivityService;->releaseNetworkRequest(Landroid/net/NetworkRequest;)V
 PLcom/android/server/ConnectivityService;->releasePendingNetworkRequest(Landroid/app/PendingIntent;)V
-HSPLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-HSPLcom/android/server/ConnectivityService;->rematchForAvoidBadWifiUpdate()V
-HSPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;J)V
+PLcom/android/server/ConnectivityService;->releasePendingNetworkRequestWithDelay(Landroid/app/PendingIntent;)V
+HSPLcom/android/server/ConnectivityService;->rematchAllNetworksAndRequests()V
+PLcom/android/server/ConnectivityService;->rematchForAvoidBadWifiUpdate()V
+HPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/ConnectivityService$NetworkReassignment;Lcom/android/server/connectivity/NetworkAgentInfo;J)V
+HPLcom/android/server/ConnectivityService;->rematchNetworkAndRequests(Lcom/android/server/connectivity/NetworkAgentInfo;J)V
 PLcom/android/server/ConnectivityService;->removeDataActivityTracking(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->reportNetworkConnectivity(Landroid/net/Network;Z)V
+HPLcom/android/server/ConnectivityService;->reportNetworkConnectivity(Landroid/net/Network;Z)V
 HSPLcom/android/server/ConnectivityService;->requestNetwork(Landroid/net/NetworkCapabilities;Landroid/os/Messenger;ILandroid/os/IBinder;I)Landroid/net/NetworkRequest;
-PLcom/android/server/ConnectivityService;->requestRouteToHostAddress(I[B)Z
-HSPLcom/android/server/ConnectivityService;->reserveNetId()I
-HSPLcom/android/server/ConnectivityService;->scheduleReleaseNetworkTransitionWakelock()V
-HSPLcom/android/server/ConnectivityService;->scheduleUnvalidatedPrompt(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->sendConnectedBroadcast(Landroid/net/NetworkInfo;)V
-HSPLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V
+HPLcom/android/server/ConnectivityService;->requestRouteToHostAddress(I[B)Z
+PLcom/android/server/ConnectivityService;->requestsSortedById()[Lcom/android/server/ConnectivityService$NetworkRequestInfo;
+HPLcom/android/server/ConnectivityService;->requiresVpnIsolation(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;)Z
+HSPLcom/android/server/ConnectivityService;->restrictBackgroundRequestForCaller(Landroid/net/NetworkCapabilities;)V
+HSPLcom/android/server/ConnectivityService;->restrictRequestUidsForCaller(Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->scheduleReleaseNetworkTransitionWakelock()V
+HPLcom/android/server/ConnectivityService;->scheduleUnvalidatedPrompt(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HSPLcom/android/server/ConnectivityService;->sendAllRequestsToFactory(Lcom/android/server/ConnectivityService$NetworkFactoryInfo;)V
+HSPLcom/android/server/ConnectivityService;->sendAllRequestsToProvider(Lcom/android/server/ConnectivityService$NetworkProviderInfo;)V
+HPLcom/android/server/ConnectivityService;->sendConnectedBroadcast(Landroid/net/NetworkInfo;)V
+HPLcom/android/server/ConnectivityService;->sendDataActivityBroadcast(IZJ)V
+HPLcom/android/server/ConnectivityService;->sendGeneralBroadcast(Landroid/net/NetworkInfo;Ljava/lang/String;)V
+PLcom/android/server/ConnectivityService;->sendInetConditionBroadcast(Landroid/net/NetworkInfo;)V
 PLcom/android/server/ConnectivityService;->sendIntent(Landroid/app/PendingIntent;Landroid/content/Intent;)V
-HSPLcom/android/server/ConnectivityService;->sendLegacyNetworkBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V
+HPLcom/android/server/ConnectivityService;->sendLegacyNetworkBroadcast(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo$DetailedState;I)V
 PLcom/android/server/ConnectivityService;->sendPendingIntentForRequest(Lcom/android/server/ConnectivityService$NetworkRequestInfo;Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-HSPLcom/android/server/ConnectivityService;->sendStickyBroadcast(Landroid/content/Intent;)V
+HPLcom/android/server/ConnectivityService;->sendStickyBroadcast(Landroid/content/Intent;)V
 HSPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Landroid/net/NetworkRequest;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->sendUpdatedScoreToFactories(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/ConnectivityService;->setAcceptUnvalidated(Landroid/net/Network;ZZ)V
 PLcom/android/server/ConnectivityService;->setAirplaneMode(Z)V
-HSPLcom/android/server/ConnectivityService;->setNetworkForRequest(ILcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
-HSPLcom/android/server/ConnectivityService;->setupDataActivityTracking(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->shouldAvoidBadWifi()Z
+PLcom/android/server/ConnectivityService;->setAlwaysOnVpnPackage(ILjava/lang/String;ZLjava/util/List;)Z
+PLcom/android/server/ConnectivityService;->setGlobalProxy(Landroid/net/ProxyInfo;)V
+HSPLcom/android/server/ConnectivityService;->setLockdownTracker(Lcom/android/server/net/LockdownVpnTracker;)V
+HPLcom/android/server/ConnectivityService;->setProvisioningNotificationVisible(ZILjava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->setUnderlyingNetworksForVpn([Landroid/net/Network;)Z
+PLcom/android/server/ConnectivityService;->setVpnPackageAuthorization(Ljava/lang/String;II)V
+PLcom/android/server/ConnectivityService;->setVpnPackageAuthorization(Ljava/lang/String;IZ)V
+HPLcom/android/server/ConnectivityService;->setupDataActivityTracking(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->shouldAvoidBadWifi()Z
+PLcom/android/server/ConnectivityService;->shouldPromptUnvalidated(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
 PLcom/android/server/ConnectivityService;->showNetworkNotification(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)V
-HSPLcom/android/server/ConnectivityService;->startAlwaysOnVpn(I)Z
+PLcom/android/server/ConnectivityService;->startAlwaysOnVpn(I)Z
+PLcom/android/server/ConnectivityService;->startCaptivePortalApp(Landroid/net/Network;)V
 PLcom/android/server/ConnectivityService;->startCaptivePortalAppInternal(Landroid/net/Network;Landroid/os/Bundle;)V
-PLcom/android/server/ConnectivityService;->startNattKeepalive(Landroid/net/Network;ILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/ConnectivityService;->stopKeepalive(Landroid/net/Network;I)V
+PLcom/android/server/ConnectivityService;->startLegacyVpn(Lcom/android/internal/net/VpnProfile;)V
+HPLcom/android/server/ConnectivityService;->startNattKeepalive(Landroid/net/Network;ILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/ConnectivityService;->startNattKeepaliveWithFd(Landroid/net/Network;Ljava/io/FileDescriptor;IILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->stopKeepalive(Landroid/net/Network;I)V
 HSPLcom/android/server/ConnectivityService;->systemReady()V
-PLcom/android/server/ConnectivityService;->teardownUnneededNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/ConnectivityService;->throwIfLockdownEnabled()V
-HSPLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z
-HSPLcom/android/server/ConnectivityService;->updateAllVpnsCapabilities()V
-HSPLcom/android/server/ConnectivityService;->updateCapabilities(ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/ConnectivityService;->updateDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)V
-HSPLcom/android/server/ConnectivityService;->updateInetCondition(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/ConnectivityService;->updateInterfaces(Landroid/net/LinkProperties;Landroid/net/LinkProperties;ILandroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V
-HSPLcom/android/server/ConnectivityService;->updateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
+HPLcom/android/server/ConnectivityService;->teardownUnneededNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->throwIfLockdownEnabled()V
+HSPLcom/android/server/ConnectivityService;->toBool(I)Z
+HPLcom/android/server/ConnectivityService;->unneeded(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/ConnectivityService$UnneededFor;)Z
+HPLcom/android/server/ConnectivityService;->unregisterNetworkProvider(Landroid/os/Messenger;)V
+HPLcom/android/server/ConnectivityService;->updateAllVpnsCapabilities()V
+HPLcom/android/server/ConnectivityService;->updateCapabilities(ILcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/ConnectivityService;->updateDataActivityTracking(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->updateDnses(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)V
+HPLcom/android/server/ConnectivityService;->updateInetCondition(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->updateInterfaces(Landroid/net/LinkProperties;Landroid/net/LinkProperties;ILandroid/net/NetworkCapabilities;I)V
+HSPLcom/android/server/ConnectivityService;->updateLegacyTypeTrackerAndVpnLockdownForRematch(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;[Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->updateLingerState(Lcom/android/server/connectivity/NetworkAgentInfo;J)V
+HPLcom/android/server/ConnectivityService;->updateLinkProperties(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
 HSPLcom/android/server/ConnectivityService;->updateLockdownVpn()Z
-HSPLcom/android/server/ConnectivityService;->updateMtu(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
-HSPLcom/android/server/ConnectivityService;->updateNetworkInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
-PLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-HSPLcom/android/server/ConnectivityService;->updateRoutes(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)Z
-HSPLcom/android/server/ConnectivityService;->updateSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/lang/String;Landroid/net/NetworkRequest;)V
-HSPLcom/android/server/ConnectivityService;->updateTcpBufferSizes(Ljava/lang/String;)V
-HSPLcom/android/server/ConnectivityService;->updateUids(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/ConnectivityService;->wakeupModifyInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;Z)V
+HPLcom/android/server/ConnectivityService;->updateMtu(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
+HPLcom/android/server/ConnectivityService;->updateNetworkInfo(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkInfo;)V
+HPLcom/android/server/ConnectivityService;->updateNetworkPermissions(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->updateNetworkScore(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkScore;)V
+PLcom/android/server/ConnectivityService;->updatePrivateDns(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/shared/PrivateDnsConfig;)V
+HPLcom/android/server/ConnectivityService;->updateProxy(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
+HPLcom/android/server/ConnectivityService;->updateRoutes(Landroid/net/LinkProperties;Landroid/net/LinkProperties;I)Z
+HPLcom/android/server/ConnectivityService;->updateSignalStrengthThresholds(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/lang/String;Landroid/net/NetworkRequest;)V
+HPLcom/android/server/ConnectivityService;->updateTcpBufferSizes(Ljava/lang/String;)V
+HPLcom/android/server/ConnectivityService;->updateUids(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->updateVpnCapabilities(Lcom/android/server/connectivity/Vpn;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/ConnectivityService;->updateVpnFiltering(Landroid/net/LinkProperties;Landroid/net/LinkProperties;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/ConnectivityService;->updateWakeOnLan(Landroid/net/LinkProperties;)V
+HPLcom/android/server/ConnectivityService;->wakeupModifyInterface(Ljava/lang/String;Landroid/net/NetworkCapabilities;Z)V
 HSPLcom/android/server/ConsumerIrService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/ContextHubSystemService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/ContextHubSystemService;->lambda$new$0$ContextHubSystemService(Landroid/content/Context;)V
 HSPLcom/android/server/ContextHubSystemService;->onBootPhase(I)V
 HSPLcom/android/server/ContextHubSystemService;->onStart()V
-PLcom/android/server/CountryDetectorService$1$1;->run()V
-PLcom/android/server/CountryDetectorService$1;->onCountryDetected(Landroid/location/Country;)V
-HSPLcom/android/server/CountryDetectorService$2;->run()V
+PLcom/android/server/CountryDetectorService$1;-><init>(Lcom/android/server/CountryDetectorService;)V
+PLcom/android/server/CountryDetectorService$2;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/CountryListener;)V
+PLcom/android/server/CountryDetectorService$2;->run()V
+HPLcom/android/server/CountryDetectorService$Receiver;-><init>(Lcom/android/server/CountryDetectorService;Landroid/location/ICountryListener;)V
 PLcom/android/server/CountryDetectorService$Receiver;->binderDied()V
+PLcom/android/server/CountryDetectorService$Receiver;->getListener()Landroid/location/ICountryListener;
 HSPLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V
-HSPLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V
-HSPLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country;
+HSPLcom/android/server/CountryDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/CountryDetectorService;->access$000(Lcom/android/server/CountryDetectorService;Landroid/os/IBinder;)V
+PLcom/android/server/CountryDetectorService;->addCountryListener(Landroid/location/ICountryListener;)V
+HPLcom/android/server/CountryDetectorService;->addListener(Landroid/location/ICountryListener;)V
+HPLcom/android/server/CountryDetectorService;->detectCountry()Landroid/location/Country;
 PLcom/android/server/CountryDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/CountryDetectorService;->initialize()V
+PLcom/android/server/CountryDetectorService;->lambda$initialize$1$CountryDetectorService(Landroid/location/Country;)V
+PLcom/android/server/CountryDetectorService;->lambda$initialize$2$CountryDetectorService(Landroid/location/Country;)V
+HPLcom/android/server/CountryDetectorService;->lambda$setCountryListener$3$CountryDetectorService(Landroid/location/CountryListener;)V
+HSPLcom/android/server/CountryDetectorService;->lambda$systemRunning$0$CountryDetectorService()V
+HSPLcom/android/server/CountryDetectorService;->loadCustomCountryDetectorIfAvailable(Ljava/lang/String;)Lcom/android/server/location/CountryDetectorBase;
 PLcom/android/server/CountryDetectorService;->notifyReceivers(Landroid/location/Country;)V
-PLcom/android/server/CountryDetectorService;->removeListener(Landroid/os/IBinder;)V
-HSPLcom/android/server/CountryDetectorService;->run()V
-HSPLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V
+HPLcom/android/server/CountryDetectorService;->removeListener(Landroid/os/IBinder;)V
+PLcom/android/server/CountryDetectorService;->run()V
+PLcom/android/server/CountryDetectorService;->setCountryListener(Landroid/location/CountryListener;)V
 HSPLcom/android/server/CountryDetectorService;->systemRunning()V
-HSPLcom/android/server/DeviceIdleController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/DeviceIdleController$2;->onAlarm()V
-PLcom/android/server/DeviceIdleController$4;->onAlarm()V
-PLcom/android/server/DeviceIdleController$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/DeviceIdleController$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/DeviceIdleController$7;->onLocationChanged(Landroid/location/Location;)V
-PLcom/android/server/DeviceIdleController$8;->onLocationChanged(Landroid/location/Location;)V
-PLcom/android/server/DeviceIdleController$9;->onAwakeStateChanged(Z)V
-HSPLcom/android/server/DeviceIdleController$9;->onKeyguardStateChanged(Z)V
-PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistApp(Ljava/lang/String;JILjava/lang/String;)V
-PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistAppForMms(Ljava/lang/String;ILjava/lang/String;)J
-PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveTempWhitelistAppForSms(Ljava/lang/String;ILjava/lang/String;)J
-PLcom/android/server/DeviceIdleController$BinderService;->addPowerSaveWhitelistApp(Ljava/lang/String;)V
-PLcom/android/server/DeviceIdleController$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/DeviceIdleController$BinderService;->exitIdle(Ljava/lang/String;)V
-HSPLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelist()[I
-HSPLcom/android/server/DeviceIdleController$BinderService;->getAppIdWhitelistExceptIdle()[I
-PLcom/android/server/DeviceIdleController$BinderService;->getFullPowerWhitelist()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController$BinderService;->getSystemPowerWhitelist()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController$BinderService;->getSystemPowerWhitelistExceptIdle()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistApp(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController$BinderService;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController$Constants;-><init>(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)V
-PLcom/android/server/DeviceIdleController$Constants;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/DeviceIdleController$Constants;->updateConstants()V
-HSPLcom/android/server/DeviceIdleController$Injector;->getAlarmManager()Landroid/app/AlarmManager;
-HSPLcom/android/server/DeviceIdleController$Injector;->getAnyMotionDetector(Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;F)Lcom/android/server/AnyMotionDetector;
-HSPLcom/android/server/DeviceIdleController$Injector;->getAppStateTracker(Landroid/content/Context;Landroid/os/Looper;)Lcom/android/server/AppStateTracker;
-HSPLcom/android/server/DeviceIdleController$Injector;->getConnectivityService()Lcom/android/server/ConnectivityService;
-HSPLcom/android/server/DeviceIdleController$Injector;->getConstants(Lcom/android/server/DeviceIdleController;Landroid/os/Handler;Landroid/content/ContentResolver;)Lcom/android/server/DeviceIdleController$Constants;
-HSPLcom/android/server/DeviceIdleController$Injector;->getConstraintController(Landroid/os/Handler;Lcom/android/server/DeviceIdleController$LocalService;)Lcom/android/server/deviceidle/ConstraintController;
-HSPLcom/android/server/DeviceIdleController$Injector;->getHandler(Lcom/android/server/DeviceIdleController;)Lcom/android/server/DeviceIdleController$MyHandler;
-PLcom/android/server/DeviceIdleController$Injector;->getLocationManager()Landroid/location/LocationManager;
-HSPLcom/android/server/DeviceIdleController$Injector;->getPowerManager()Landroid/os/PowerManager;
-HSPLcom/android/server/DeviceIdleController$Injector;->getSensorManager()Landroid/hardware/SensorManager;
-HSPLcom/android/server/DeviceIdleController$Injector;->useMotionSensor()Z
-PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistApp(ILjava/lang/String;JIZLjava/lang/String;)V
-PLcom/android/server/DeviceIdleController$LocalService;->addPowerSaveTempWhitelistAppDirect(IJZLjava/lang/String;)V
-HSPLcom/android/server/DeviceIdleController$LocalService;->getNotificationWhitelistDuration()J
-HSPLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveTempWhitelistAppIds()[I
-HSPLcom/android/server/DeviceIdleController$LocalService;->getPowerSaveWhitelistUserAppIds()[I
-HSPLcom/android/server/DeviceIdleController$LocalService;->setAlarmsActive(Z)V
-HSPLcom/android/server/DeviceIdleController$LocalService;->setJobsActive(Z)V
-PLcom/android/server/DeviceIdleController$MotionListener;->onTrigger(Landroid/hardware/TriggerEvent;)V
-PLcom/android/server/DeviceIdleController$MotionListener;->registerLocked()Z
-PLcom/android/server/DeviceIdleController$MotionListener;->unregisterLocked()V
-HSPLcom/android/server/DeviceIdleController$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/DeviceIdleController;-><init>(Landroid/content/Context;Lcom/android/server/DeviceIdleController$Injector;)V
-HSPLcom/android/server/DeviceIdleController;->addEvent(ILjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppChecked(Ljava/lang/String;JILjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppDirectInternal(IIJZLjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->addPowerSaveTempWhitelistAppInternal(ILjava/lang/String;JIZLjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->addPowerSaveWhitelistAppInternal(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/DeviceIdleController;->becomeActiveLocked(Ljava/lang/String;IJZ)V
-HSPLcom/android/server/DeviceIdleController;->becomeInactiveIfAppropriateLocked()V
-HSPLcom/android/server/DeviceIdleController;->buildAppIdArray(Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/util/SparseBooleanArray;)[I
-HSPLcom/android/server/DeviceIdleController;->cancelAlarmLocked()V
-HSPLcom/android/server/DeviceIdleController;->cancelLightAlarmLocked()V
-HSPLcom/android/server/DeviceIdleController;->cancelLocatingLocked()V
-HSPLcom/android/server/DeviceIdleController;->cancelSensingTimeoutAlarmLocked()V
-PLcom/android/server/DeviceIdleController;->checkTempAppWhitelistTimeout(I)V
-PLcom/android/server/DeviceIdleController;->decActiveIdleOps()V
-PLcom/android/server/DeviceIdleController;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->dumpTempWhitelistSchedule(Ljava/io/PrintWriter;Z)V
-PLcom/android/server/DeviceIdleController;->exitIdleInternal(Ljava/lang/String;)V
-HSPLcom/android/server/DeviceIdleController;->exitMaintenanceEarlyIfNeededLocked()V
-HSPLcom/android/server/DeviceIdleController;->getAppIdTempWhitelistInternal()[I
-HSPLcom/android/server/DeviceIdleController;->getAppIdWhitelistExceptIdleInternal()[I
-HSPLcom/android/server/DeviceIdleController;->getAppIdWhitelistInternal()[I
-PLcom/android/server/DeviceIdleController;->getFullPowerWhitelistInternal()[Ljava/lang/String;
-HSPLcom/android/server/DeviceIdleController;->getPowerSaveWhitelistUserAppIds()[I
-PLcom/android/server/DeviceIdleController;->getSystemPowerWhitelistExceptIdleInternal()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->getSystemPowerWhitelistInternal()[Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->handleMotionDetectedLocked(JLjava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->incActiveIdleOps()V
-PLcom/android/server/DeviceIdleController;->isOpsInactiveLocked()Z
-PLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistAppInternal(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController;->isPowerSaveWhitelistExceptIdleAppInternal(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController;->keyguardShowingLocked(Z)V
-HSPLcom/android/server/DeviceIdleController;->lambda$onBootPhase$0$DeviceIdleController(Landroid/os/PowerSaveState;)V
-PLcom/android/server/DeviceIdleController;->lightStateToString(I)Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->motionLocked()V
-PLcom/android/server/DeviceIdleController;->onAnyMotionResult(I)V
-PLcom/android/server/DeviceIdleController;->onAppRemovedFromTempWhitelistLocked(ILjava/lang/String;)V
-HSPLcom/android/server/DeviceIdleController;->onBootPhase(I)V
-HSPLcom/android/server/DeviceIdleController;->onStart()V
-HSPLcom/android/server/DeviceIdleController;->readConfigFileLocked()V
-HSPLcom/android/server/DeviceIdleController;->readConfigFileLocked(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/DeviceIdleController;->receivedGenericLocationLocked(Landroid/location/Location;)V
-PLcom/android/server/DeviceIdleController;->receivedGpsLocationLocked(Landroid/location/Location;)V
-HSPLcom/android/server/DeviceIdleController;->removePowerSaveWhitelistAppInternal(Ljava/lang/String;)Z
-HSPLcom/android/server/DeviceIdleController;->reportMaintenanceActivityIfNeededLocked()V
-HSPLcom/android/server/DeviceIdleController;->scheduleAlarmLocked(JZ)V
-HSPLcom/android/server/DeviceIdleController;->scheduleLightAlarmLocked(J)V
-HSPLcom/android/server/DeviceIdleController;->scheduleReportActiveLocked(Ljava/lang/String;I)V
-PLcom/android/server/DeviceIdleController;->scheduleSensingTimeoutAlarmLocked(J)V
-HSPLcom/android/server/DeviceIdleController;->setAlarmsActive(Z)V
-HSPLcom/android/server/DeviceIdleController;->setJobsActive(Z)V
-PLcom/android/server/DeviceIdleController;->startMonitoringMotionLocked()V
-PLcom/android/server/DeviceIdleController;->stateToString(I)Ljava/lang/String;
-PLcom/android/server/DeviceIdleController;->stepIdleStateLocked(Ljava/lang/String;)V
-PLcom/android/server/DeviceIdleController;->stepLightIdleStateLocked(Ljava/lang/String;)V
-HSPLcom/android/server/DeviceIdleController;->stopMonitoringMotionLocked()V
-HSPLcom/android/server/DeviceIdleController;->updateActiveConstraintsLocked()V
-HSPLcom/android/server/DeviceIdleController;->updateChargingLocked(Z)V
-HSPLcom/android/server/DeviceIdleController;->updateConnectivityState(Landroid/content/Intent;)V
-HSPLcom/android/server/DeviceIdleController;->updateInteractivityLocked()V
-HSPLcom/android/server/DeviceIdleController;->updateQuickDozeFlagLocked(Z)V
-PLcom/android/server/DeviceIdleController;->updateTempWhitelistAppIdsLocked(IZ)V
-HSPLcom/android/server/DeviceIdleController;->updateWhitelistAppIdsLocked()V
-HSPLcom/android/server/DeviceIdleController;->verifyAlarmStateLocked()V
 HSPLcom/android/server/DiskStatsService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/DiskStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/DiskStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/DiskStatsService;->getRecentPerf()I
-PLcom/android/server/DiskStatsService;->reportCachedValues(Ljava/io/PrintWriter;)V
-PLcom/android/server/DiskStatsService;->reportCachedValuesProto(Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/DiskStatsService;->reportDiskWriteSpeed(Ljava/io/PrintWriter;)V
+PLcom/android/server/DiskStatsService;->hasOption([Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/DiskStatsService;->reportCachedValues(Ljava/io/PrintWriter;)V
+HPLcom/android/server/DiskStatsService;->reportCachedValuesProto(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/DiskStatsService;->reportDiskWriteSpeed(Ljava/io/PrintWriter;)V
 PLcom/android/server/DiskStatsService;->reportDiskWriteSpeedProto(Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/DiskStatsService;->reportFreeSpace(Ljava/io/File;Ljava/lang/String;Ljava/io/PrintWriter;Landroid/util/proto/ProtoOutputStream;I)V
+HPLcom/android/server/DiskStatsService;->reportFreeSpace(Ljava/io/File;Ljava/lang/String;Ljava/io/PrintWriter;Landroid/util/proto/ProtoOutputStream;I)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;
+HSPLcom/android/server/DockObserver$1;-><init>(Lcom/android/server/DockObserver;Z)V
+HSPLcom/android/server/DockObserver$2;-><init>(Lcom/android/server/DockObserver;)V
+HSPLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;)V
+HSPLcom/android/server/DockObserver$BinderService;-><init>(Lcom/android/server/DockObserver;Lcom/android/server/DockObserver$1;)V
 PLcom/android/server/DockObserver$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/DockObserver;-><init>(Landroid/content/Context;)V
+PLcom/android/server/DockObserver;->access$300(Lcom/android/server/DockObserver;)Ljava/lang/Object;
+PLcom/android/server/DockObserver;->access$500(Lcom/android/server/DockObserver;)Z
+PLcom/android/server/DockObserver;->access$600(Lcom/android/server/DockObserver;)I
+PLcom/android/server/DockObserver;->access$700(Lcom/android/server/DockObserver;)I
+PLcom/android/server/DockObserver;->access$800(Lcom/android/server/DockObserver;)I
 HSPLcom/android/server/DockObserver;->init()V
 HSPLcom/android/server/DockObserver;->onBootPhase(I)V
 HSPLcom/android/server/DockObserver;->onStart()V
+HSPLcom/android/server/DropBoxManagerService$1$1;-><init>(Lcom/android/server/DropBoxManagerService$1;)V
 HSPLcom/android/server/DropBoxManagerService$1$1;->run()V
+HSPLcom/android/server/DropBoxManagerService$1;-><init>(Lcom/android/server/DropBoxManagerService;)V
 HSPLcom/android/server/DropBoxManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/DropBoxManagerService$2;-><init>(Lcom/android/server/DropBoxManagerService;)V
 HSPLcom/android/server/DropBoxManagerService$2;->add(Landroid/os/DropBoxManager$Entry;)V
 PLcom/android/server/DropBoxManagerService$2;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry;
+HPLcom/android/server/DropBoxManagerService$2;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry;
 HSPLcom/android/server/DropBoxManagerService$2;->isTagEnabled(Ljava/lang/String;)Z
-HSPLcom/android/server/DropBoxManagerService$3;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/DropBoxManagerService$4;->onChange(Z)V
+HSPLcom/android/server/DropBoxManagerService$3;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/DropBoxManagerService$3;->onChange(Z)V
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;-><init>(Lcom/android/server/DropBoxManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->createIntent(Ljava/lang/String;J)Landroid/content/Intent;
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->maybeDeferBroadcast(Ljava/lang/String;J)V
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->prepareAndSendBroadcast(Landroid/content/Intent;)V
+HSPLcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;->sendBroadcast(Ljava/lang/String;J)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(J)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;I)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/io/File;Ljava/lang/String;JII)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;-><init>(Ljava/io/File;Ljava/lang/String;J)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Lcom/android/server/DropBoxManagerService$EntryFile;)I
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->compareTo(Ljava/lang/Object;)I
+HSPLcom/android/server/DropBoxManagerService$EntryFile;->deleteFile(Ljava/io/File;)V
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->getExtension()Ljava/lang/String;
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->getFile(Ljava/io/File;)Ljava/io/File;
 HSPLcom/android/server/DropBoxManagerService$EntryFile;->getFilename()Ljava/lang/String;
+HSPLcom/android/server/DropBoxManagerService$EntryFile;->hasFile()Z
+HSPLcom/android/server/DropBoxManagerService$FileList;-><init>()V
+HSPLcom/android/server/DropBoxManagerService$FileList;-><init>(Lcom/android/server/DropBoxManagerService$1;)V
 HSPLcom/android/server/DropBoxManagerService$FileList;->compareTo(Lcom/android/server/DropBoxManagerService$FileList;)I
 HSPLcom/android/server/DropBoxManagerService$FileList;->compareTo(Ljava/lang/Object;)I
 HSPLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/DropBoxManagerService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
+HSPLcom/android/server/DropBoxManagerService;->access$002(Lcom/android/server/DropBoxManagerService;J)J
+HSPLcom/android/server/DropBoxManagerService;->access$100(Lcom/android/server/DropBoxManagerService;)V
+HSPLcom/android/server/DropBoxManagerService;->access$1000(Lcom/android/server/DropBoxManagerService;)Landroid/content/BroadcastReceiver;
+HSPLcom/android/server/DropBoxManagerService;->access$200(Lcom/android/server/DropBoxManagerService;)J
+HSPLcom/android/server/DropBoxManagerService;->access$800(Lcom/android/server/DropBoxManagerService;)Z
+HSPLcom/android/server/DropBoxManagerService;->access$900(Lcom/android/server/DropBoxManagerService;)J
 HSPLcom/android/server/DropBoxManagerService;->add(Landroid/os/DropBoxManager$Entry;)V
-PLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;)Z
+HPLcom/android/server/DropBoxManagerService;->checkPermission(ILjava/lang/String;)Z
 HSPLcom/android/server/DropBoxManagerService;->createEntry(Ljava/io/File;Ljava/lang/String;I)J
-PLcom/android/server/DropBoxManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/DropBoxManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/DropBoxManagerService;->dumpProtoLocked(Ljava/io/FileDescriptor;Ljava/util/ArrayList;)V
 HSPLcom/android/server/DropBoxManagerService;->enrollEntry(Lcom/android/server/DropBoxManagerService$EntryFile;)V
-PLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry;
+HSPLcom/android/server/DropBoxManagerService;->getLowPriorityResourceConfigs()V
+HPLcom/android/server/DropBoxManagerService;->getNextEntry(Ljava/lang/String;JLjava/lang/String;)Landroid/os/DropBoxManager$Entry;
 HSPLcom/android/server/DropBoxManagerService;->init()V
 HSPLcom/android/server/DropBoxManagerService;->isTagEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/DropBoxManagerService;->matchEntry(Lcom/android/server/DropBoxManagerService$EntryFile;Ljava/util/ArrayList;)Z
 HSPLcom/android/server/DropBoxManagerService;->onBootPhase(I)V
 HSPLcom/android/server/DropBoxManagerService;->onStart()V
 HSPLcom/android/server/DropBoxManagerService;->trimToFit()J
 HSPLcom/android/server/DynamicSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/DynamicSystemService;->binderDied()V
+PLcom/android/server/DynamicSystemService;->checkPermission()V
 PLcom/android/server/DynamicSystemService;->connect(Landroid/os/IBinder$DeathRecipient;)Landroid/gsi/IGsiService;
 PLcom/android/server/DynamicSystemService;->getGsiService()Landroid/gsi/IGsiService;
 PLcom/android/server/DynamicSystemService;->isInUse()Z
 PLcom/android/server/DynamicSystemService;->isInstalled()Z
+HSPLcom/android/server/EntropyMixer$1;-><init>(Lcom/android/server/EntropyMixer;Landroid/os/Looper;)V
 PLcom/android/server/EntropyMixer$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/EntropyMixer$2;-><init>(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/EntropyMixer;-><clinit>()V
 HSPLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/EntropyMixer;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/EntropyMixer;->access$000(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer;->access$100(Lcom/android/server/EntropyMixer;)V
+PLcom/android/server/EntropyMixer;->access$200(Lcom/android/server/EntropyMixer;)V
 HSPLcom/android/server/EntropyMixer;->addDeviceSpecificEntropy()V
 HSPLcom/android/server/EntropyMixer;->addHwRandomEntropy()V
+HSPLcom/android/server/EntropyMixer;->getSystemDir()Ljava/lang/String;
 HSPLcom/android/server/EntropyMixer;->loadInitialEntropy()V
+HSPLcom/android/server/EntropyMixer;->scheduleEntropyWriter()V
 HSPLcom/android/server/EntropyMixer;->writeEntropy()V
-HSPLcom/android/server/EventLogTags;->writeBatterySaverMode(IIIIILjava/lang/String;I)V
-HSPLcom/android/server/EventLogTags;->writeBatterySavingStats(IIIJIIJII)V
+HPLcom/android/server/EventLogTags;->writeBatterySaverMode(IIIIILjava/lang/String;I)V
+PLcom/android/server/EventLogTags;->writeBatterySaverSetting(I)V
+HPLcom/android/server/EventLogTags;->writeBatterySavingStats(IIIJIIJII)V
+HPLcom/android/server/EventLogTags;->writeDeviceIdle(ILjava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeDeviceIdleLight(ILjava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeDeviceIdleLightStep()V
+HPLcom/android/server/EventLogTags;->writeDeviceIdleOffComplete()V
+PLcom/android/server/EventLogTags;->writeDeviceIdleOffPhase(Ljava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeDeviceIdleOffStart(Ljava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeDeviceIdleOnComplete()V
+PLcom/android/server/EventLogTags;->writeDeviceIdleOnPhase(Ljava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeDeviceIdleOnStart()V
+PLcom/android/server/EventLogTags;->writeDeviceIdleStep()V
 PLcom/android/server/EventLogTags;->writeDeviceIdleWakeFromIdle(ILjava/lang/String;)V
-HSPLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V
-HSPLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V
+HPLcom/android/server/EventLogTags;->writeNetstatsMobileSample(JJJJJJJJJJJJJ)V
+HPLcom/android/server/EventLogTags;->writeNetstatsWifiSample(JJJJJJJJJJJJJ)V
 PLcom/android/server/EventLogTags;->writeNotificationActionClicked(Ljava/lang/String;IIIIII)V
 HSPLcom/android/server/EventLogTags;->writeNotificationAlert(Ljava/lang/String;III)V
-PLcom/android/server/EventLogTags;->writeNotificationCancel(IILjava/lang/String;ILjava/lang/String;IIIILjava/lang/String;)V
+PLcom/android/server/EventLogTags;->writeNotificationAutogrouped(Ljava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeNotificationCancel(IILjava/lang/String;ILjava/lang/String;IIIILjava/lang/String;)V
 HSPLcom/android/server/EventLogTags;->writeNotificationCancelAll(IILjava/lang/String;IIIILjava/lang/String;)V
-HSPLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIIIIILjava/lang/String;)V
-PLcom/android/server/EventLogTags;->writeNotificationClicked(Ljava/lang/String;IIIII)V
+HPLcom/android/server/EventLogTags;->writeNotificationCanceled(Ljava/lang/String;IIIIIILjava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writeNotificationClicked(Ljava/lang/String;IIIII)V
 HSPLcom/android/server/EventLogTags;->writeNotificationEnqueue(IILjava/lang/String;ILjava/lang/String;ILjava/lang/String;I)V
-PLcom/android/server/EventLogTags;->writeNotificationVisibility(Ljava/lang/String;IIIII)V
-PLcom/android/server/EventLogTags;->writePowerScreenState(IIJII)V
+HPLcom/android/server/EventLogTags;->writeNotificationPanelHidden()V
+HPLcom/android/server/EventLogTags;->writeNotificationPanelRevealed(I)V
+HPLcom/android/server/EventLogTags;->writeNotificationVisibility(Ljava/lang/String;IIIII)V
+HSPLcom/android/server/EventLogTags;->writePmCriticalInfo(Ljava/lang/String;)V
+HPLcom/android/server/EventLogTags;->writePowerScreenState(IIJII)V
+PLcom/android/server/EventLogTags;->writePowerSleepRequested(I)V
+HSPLcom/android/server/EventLogTags;->writeRescueNote(IIJ)V
 HSPLcom/android/server/EventLogTags;->writeStorageState(Ljava/lang/String;IIJJ)V
-HSPLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V
-HSPLcom/android/server/ExtconStateObserver;->parseStateFromFile(Lcom/android/server/ExtconUEventObserver$ExtconInfo;)Ljava/lang/Object;
-HSPLcom/android/server/ExtconUEventObserver$ExtconInfo;->getDevicePath()Ljava/lang/String;
+HSPLcom/android/server/EventLogTags;->writeStreamDevicesChanged(III)V
+PLcom/android/server/EventLogTags;->writeUserActivityTimeoutOverride(J)V
+HPLcom/android/server/EventLogTags;->writeVolumeChanged(IIIILjava/lang/String;)V
+HSPLcom/android/server/ExplicitHealthCheckController$1;-><init>(Lcom/android/server/ExplicitHealthCheckController;)V
+HSPLcom/android/server/ExplicitHealthCheckController$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLcom/android/server/ExplicitHealthCheckController;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->access$000(Lcom/android/server/ExplicitHealthCheckController;Landroid/os/IBinder;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->actOnDifference(Ljava/util/Collection;Ljava/util/Collection;Ljava/util/function/Consumer;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->bindService()V
+PLcom/android/server/ExplicitHealthCheckController;->cancel(Ljava/lang/String;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->getRequestedPackages(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->getServiceComponentNameLocked()Landroid/content/ComponentName;
+HSPLcom/android/server/ExplicitHealthCheckController;->getServiceInfoLocked()Landroid/content/pm/ServiceInfo;
+HSPLcom/android/server/ExplicitHealthCheckController;->getSupportedPackages(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->initState(Landroid/os/IBinder;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->lambda$getRequestedPackages$5(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->lambda$getSupportedPackages$4(Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$initState$6$ExplicitHealthCheckController(Landroid/os/Bundle;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$0$ExplicitHealthCheckController(Ljava/lang/String;)V
+PLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$1$ExplicitHealthCheckController(Ljava/lang/String;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$2$ExplicitHealthCheckController(Ljava/util/List;Ljava/util/Set;Ljava/util/List;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->lambda$syncRequests$3$ExplicitHealthCheckController(Ljava/util/Set;Ljava/util/List;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->prepareServiceLocked(Ljava/lang/String;)Z
+HPLcom/android/server/ExplicitHealthCheckController;->request(Ljava/lang/String;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->setCallbacks(Ljava/util/function/Consumer;Ljava/util/function/Consumer;Ljava/lang/Runnable;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->setEnabled(Z)V
+HSPLcom/android/server/ExplicitHealthCheckController;->syncRequests(Ljava/util/Set;)V
+HSPLcom/android/server/ExplicitHealthCheckController;->unbindService()V
+HSPLcom/android/server/ExtconStateObserver;-><init>()V
 HSPLcom/android/server/ExtconUEventObserver$ExtconInfo;->getExtconInfos(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/server/ExtconUEventObserver;->startObserving(Lcom/android/server/ExtconUEventObserver$ExtconInfo;)V
+HSPLcom/android/server/ExtconUEventObserver;-><init>()V
+HSPLcom/android/server/ExtconUEventObserver;->extconExists()Z
+HSPLcom/android/server/ExtconUEventObserver;->namedExtconDirExists(Ljava/lang/String;)Z
+HSPLcom/android/server/FgThread;-><init>()V
 HSPLcom/android/server/FgThread;->ensureThreadLocked()V
 HSPLcom/android/server/FgThread;->get()Lcom/android/server/FgThread;
 HSPLcom/android/server/FgThread;->getExecutor()Ljava/util/concurrent/Executor;
 HSPLcom/android/server/FgThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/GestureLauncherService$1;-><init>(Lcom/android/server/GestureLauncherService;)V
 HSPLcom/android/server/GestureLauncherService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/GestureLauncherService$2;-><init>(Lcom/android/server/GestureLauncherService;Landroid/os/Handler;)V
+HSPLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
+HSPLcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$1;)V
+HSPLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;)V
+HSPLcom/android/server/GestureLauncherService$GestureEventListener;-><init>(Lcom/android/server/GestureLauncherService;Lcom/android/server/GestureLauncherService$1;)V
 HSPLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/GestureLauncherService;-><init>(Landroid/content/Context;Lcom/android/internal/logging/MetricsLogger;)V
-PLcom/android/server/GestureLauncherService;->handleCameraGesture(ZI)Z
-PLcom/android/server/GestureLauncherService;->interceptPowerKeyDown(Landroid/view/KeyEvent;ZLandroid/util/MutableBoolean;)Z
+HSPLcom/android/server/GestureLauncherService;->access$202(Lcom/android/server/GestureLauncherService;I)I
+HSPLcom/android/server/GestureLauncherService;->access$300(Lcom/android/server/GestureLauncherService;)Landroid/database/ContentObserver;
+HSPLcom/android/server/GestureLauncherService;->access$400(Lcom/android/server/GestureLauncherService;)Landroid/content/Context;
+HSPLcom/android/server/GestureLauncherService;->access$500(Lcom/android/server/GestureLauncherService;)V
+HSPLcom/android/server/GestureLauncherService;->access$600(Lcom/android/server/GestureLauncherService;)V
+HPLcom/android/server/GestureLauncherService;->handleCameraGesture(ZI)Z
+HPLcom/android/server/GestureLauncherService;->interceptPowerKeyDown(Landroid/view/KeyEvent;ZLandroid/util/MutableBoolean;)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerEnabled(Landroid/content/res/Resources;)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraDoubleTapPowerSettingEnabled(Landroid/content/Context;I)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraLaunchEnabled(Landroid/content/res/Resources;)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraLaunchSettingEnabled(Landroid/content/Context;I)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraLiftTriggerEnabled(Landroid/content/res/Resources;)Z
+HSPLcom/android/server/GestureLauncherService;->isCameraLiftTriggerSettingEnabled(Landroid/content/Context;I)Z
 HSPLcom/android/server/GestureLauncherService;->isGestureLauncherEnabled(Landroid/content/res/Resources;)Z
 HSPLcom/android/server/GestureLauncherService;->onBootPhase(I)V
 HSPLcom/android/server/GestureLauncherService;->onStart()V
 HSPLcom/android/server/GestureLauncherService;->registerContentObservers()V
 HSPLcom/android/server/GestureLauncherService;->unregisterCameraLaunchGesture()V
+HSPLcom/android/server/GestureLauncherService;->unregisterCameraLiftTrigger()V
 HSPLcom/android/server/GestureLauncherService;->updateCameraDoubleTapPowerEnabled()V
 HSPLcom/android/server/GestureLauncherService;->updateCameraRegistered()V
-HSPLcom/android/server/GraphicsStatsService$1;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/GnssManagerService;-><clinit>()V
+HSPLcom/android/server/GnssManagerService;-><init>(Lcom/android/server/LocationManagerService;Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;Lcom/android/server/location/LocationUsageLogger;)V
+HSPLcom/android/server/GnssManagerService;-><init>(Lcom/android/server/LocationManagerService;Landroid/content/Context;Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/LocationUsageLogger;)V
+HSPLcom/android/server/GnssManagerService;-><init>(Lcom/android/server/LocationManagerService;Landroid/content/Context;Lcom/android/server/location/LocationUsageLogger;)V
+HPLcom/android/server/GnssManagerService;->addGnssDataListenerLocked(Landroid/os/IInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;Ljava/util/function/Consumer;)Z
+PLcom/android/server/GnssManagerService;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/GnssManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/GnssManagerService;->getGnssCapabilities(Ljava/lang/String;)J
+HSPLcom/android/server/GnssManagerService;->getGnssLocationProvider()Lcom/android/server/location/GnssLocationProvider;
+HSPLcom/android/server/GnssManagerService;->getGpsGeofenceProxy()Landroid/location/IGpsGeofenceHardware;
+HPLcom/android/server/GnssManagerService;->hasGnssPermissions(Ljava/lang/String;)Z
+HSPLcom/android/server/GnssManagerService;->isGnssSupported()Z
+HSPLcom/android/server/GnssManagerService;->lambda$registerUidListener$1$GnssManagerService(II)V
+HSPLcom/android/server/GnssManagerService;->lambda$registerUidListener$2$GnssManagerService(II)V
+HSPLcom/android/server/GnssManagerService;->onForegroundChanged(IZ)V
+PLcom/android/server/GnssManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/GnssManagerService;->registerUidListener()V
+HPLcom/android/server/GnssManagerService;->removeGnssDataListener(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;)V
+PLcom/android/server/GnssManagerService;->removeGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;)V
+PLcom/android/server/GnssManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
+HSPLcom/android/server/GnssManagerService;->updateListenersOnForegroundChangedLocked(Landroid/util/ArrayMap;Lcom/android/server/location/RemoteListenerHelper;Ljava/util/function/Function;IZ)V
+HSPLcom/android/server/GraphicsStatsService$1;-><init>(Lcom/android/server/GraphicsStatsService;)V
+PLcom/android/server/GraphicsStatsService$1;->handleMessage(Landroid/os/Message;)Z
 HSPLcom/android/server/GraphicsStatsService$ActiveBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;J)V
-HSPLcom/android/server/GraphicsStatsService$ActiveBuffer;->binderDied()V
-HSPLcom/android/server/GraphicsStatsService$HistoricalBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
+PLcom/android/server/GraphicsStatsService$ActiveBuffer;->binderDied()V
+PLcom/android/server/GraphicsStatsService$ActiveBuffer;->closeAllBuffers()V
+HSPLcom/android/server/GraphicsStatsService$BufferInfo;-><init>(Lcom/android/server/GraphicsStatsService;Ljava/lang/String;JJ)V
+HPLcom/android/server/GraphicsStatsService$HistoricalBuffer;-><init>(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
 HSPLcom/android/server/GraphicsStatsService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/GraphicsStatsService;->addToSaveQueue(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
+PLcom/android/server/GraphicsStatsService;->access$000(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V
+PLcom/android/server/GraphicsStatsService;->access$100(Lcom/android/server/GraphicsStatsService;)V
+HSPLcom/android/server/GraphicsStatsService;->access$200(Lcom/android/server/GraphicsStatsService;)I
+HSPLcom/android/server/GraphicsStatsService;->access$300(Lcom/android/server/GraphicsStatsService;)[B
+PLcom/android/server/GraphicsStatsService;->access$400(Lcom/android/server/GraphicsStatsService;Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
+HPLcom/android/server/GraphicsStatsService;->addToSaveQueue(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
 PLcom/android/server/GraphicsStatsService;->deleteOldBuffers()V
-PLcom/android/server/GraphicsStatsService;->deleteRecursiveLocked(Ljava/io/File;)V
+HPLcom/android/server/GraphicsStatsService;->deleteRecursiveLocked(Ljava/io/File;)V
 PLcom/android/server/GraphicsStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/GraphicsStatsService;->dumpActiveLocked(JLjava/util/ArrayList;)Ljava/util/HashSet;
-PLcom/android/server/GraphicsStatsService;->dumpHistoricalLocked(JLjava/util/HashSet;)V
+HPLcom/android/server/GraphicsStatsService;->dumpActiveLocked(JLjava/util/ArrayList;)Ljava/util/HashSet;
+HPLcom/android/server/GraphicsStatsService;->dumpHistoricalLocked(JLjava/util/HashSet;)V
 HSPLcom/android/server/GraphicsStatsService;->fetchActiveBuffersLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;J)Lcom/android/server/GraphicsStatsService$ActiveBuffer;
 HSPLcom/android/server/GraphicsStatsService;->getPfd(Landroid/os/MemoryFile;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/GraphicsStatsService;->lambda$2EDVu98hsJvSwNgKvijVLSR3IrQ(Lcom/android/server/GraphicsStatsService;)V
 HSPLcom/android/server/GraphicsStatsService;->normalizeDate(J)Ljava/util/Calendar;
-HSPLcom/android/server/GraphicsStatsService;->onAlarm()V
-HSPLcom/android/server/GraphicsStatsService;->pathForApp(Lcom/android/server/GraphicsStatsService$BufferInfo;)Ljava/io/File;
-HSPLcom/android/server/GraphicsStatsService;->processDied(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
+PLcom/android/server/GraphicsStatsService;->onAlarm()V
+HPLcom/android/server/GraphicsStatsService;->pathForApp(Lcom/android/server/GraphicsStatsService$BufferInfo;)Ljava/io/File;
+PLcom/android/server/GraphicsStatsService;->processDied(Lcom/android/server/GraphicsStatsService$ActiveBuffer;)V
 HSPLcom/android/server/GraphicsStatsService;->requestBufferForProcess(Ljava/lang/String;Landroid/view/IGraphicsStatsCallback;)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/GraphicsStatsService;->saveBuffer(Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V
+HSPLcom/android/server/GraphicsStatsService;->requestBufferForProcessLocked(Landroid/view/IGraphicsStatsCallback;IILjava/lang/String;J)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/GraphicsStatsService;->saveBuffer(Lcom/android/server/GraphicsStatsService$HistoricalBuffer;)V
 HSPLcom/android/server/GraphicsStatsService;->scheduleRotateLocked()V
 HSPLcom/android/server/HardwarePropertiesManagerService;-><init>(Landroid/content/Context;)V
 PLcom/android/server/HardwarePropertiesManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/HardwarePropertiesManagerService;->dumpTempValues(Ljava/lang/String;Ljava/io/PrintWriter;ILjava/lang/String;)V
-HSPLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V
+PLcom/android/server/HardwarePropertiesManagerService;->dumpTempValues(Ljava/lang/String;Ljava/io/PrintWriter;ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/HardwarePropertiesManagerService;->enforceHardwarePropertiesRetrievalAllowed(Ljava/lang/String;)V
+PLcom/android/server/HardwarePropertiesManagerService;->getCallingPackageName()Ljava/lang/String;
 PLcom/android/server/HardwarePropertiesManagerService;->getCpuUsages(Ljava/lang/String;)[Landroid/os/CpuUsageInfo;
-HSPLcom/android/server/HardwarePropertiesManagerService;->getDeviceTemperatures(Ljava/lang/String;II)[F
+PLcom/android/server/HardwarePropertiesManagerService;->getDeviceTemperatures(Ljava/lang/String;II)[F
 PLcom/android/server/HardwarePropertiesManagerService;->getFanSpeeds(Ljava/lang/String;)[F
 HSPLcom/android/server/IntentResolver$1;-><init>()V
 HSPLcom/android/server/IntentResolver$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/IntentResolver$IteratorWrapper;->hasNext()Z
-HSPLcom/android/server/IntentResolver$IteratorWrapper;->next()Landroid/content/IntentFilter;
-HSPLcom/android/server/IntentResolver$IteratorWrapper;->next()Ljava/lang/Object;
+PLcom/android/server/IntentResolver$IteratorWrapper;-><init>(Lcom/android/server/IntentResolver;Ljava/util/Iterator;)V
+HPLcom/android/server/IntentResolver$IteratorWrapper;->hasNext()Z
+HPLcom/android/server/IntentResolver$IteratorWrapper;->next()Landroid/content/IntentFilter;
+HPLcom/android/server/IntentResolver$IteratorWrapper;->next()Ljava/lang/Object;
+HSPLcom/android/server/IntentResolver;-><clinit>()V
 HSPLcom/android/server/IntentResolver;-><init>()V
 HSPLcom/android/server/IntentResolver;->addFilter(Landroid/content/IntentFilter;)V
 HSPLcom/android/server/IntentResolver;->addFilter(Landroid/util/ArrayMap;Ljava/lang/String;Landroid/content/IntentFilter;)V
 HSPLcom/android/server/IntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
 HSPLcom/android/server/IntentResolver;->buildResolveList(Landroid/content/Intent;Landroid/util/FastImmutableArraySet;ZZLjava/lang/String;Ljava/lang/String;[Landroid/content/IntentFilter;Ljava/util/List;I)V
 HSPLcom/android/server/IntentResolver;->collectFilters([Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Ljava/util/ArrayList;
-PLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
-PLcom/android/server/IntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V
-PLcom/android/server/IntentResolver;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArrayMap;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/IntentResolver;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Z
+PLcom/android/server/IntentResolver;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/IntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V
+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
 HSPLcom/android/server/IntentResolver;->filterEquals(Landroid/content/IntentFilter;Landroid/content/IntentFilter;)Z
-HSPLcom/android/server/IntentResolver;->filterIterator()Ljava/util/Iterator;
+PLcom/android/server/IntentResolver;->filterIterator()Ljava/util/Iterator;
 HSPLcom/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;
+HSPLcom/android/server/IntentResolver;->getFastIntentCategories(Landroid/content/Intent;)Landroid/util/FastImmutableArraySet;
 HSPLcom/android/server/IntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
 HSPLcom/android/server/IntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
 HSPLcom/android/server/IntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;ZI)Ljava/util/List;
 HSPLcom/android/server/IntentResolver;->queryIntentFromList(Landroid/content/Intent;Ljava/lang/String;ZLjava/util/ArrayList;I)Ljava/util/List;
+HSPLcom/android/server/IntentResolver;->register_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
 HSPLcom/android/server/IntentResolver;->register_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
 HSPLcom/android/server/IntentResolver;->removeFilter(Landroid/content/IntentFilter;)V
 HSPLcom/android/server/IntentResolver;->removeFilterInternal(Landroid/content/IntentFilter;)V
 HSPLcom/android/server/IntentResolver;->remove_all_objects(Landroid/util/ArrayMap;Ljava/lang/String;Ljava/lang/Object;)V
 HSPLcom/android/server/IntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/IntentResolver;->unregister_intent_filter(Landroid/content/IntentFilter;Ljava/util/Iterator;Landroid/util/ArrayMap;Ljava/lang/String;)I
 HSPLcom/android/server/IntentResolver;->unregister_mime_types(Landroid/content/IntentFilter;Ljava/lang/String;)I
-PLcom/android/server/IntentResolver;->writeProtoMap(Landroid/util/proto/ProtoOutputStream;JLandroid/util/ArrayMap;)V
-PLcom/android/server/IntentResolver;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/IntentResolver;->writeProtoMap(Landroid/util/proto/ProtoOutputStream;JLandroid/util/ArrayMap;)V
+HSPLcom/android/server/IoThread;-><init>()V
 HSPLcom/android/server/IoThread;->ensureThreadLocked()V
 HSPLcom/android/server/IoThread;->get()Lcom/android/server/IoThread;
 HSPLcom/android/server/IoThread;->getHandler()Landroid/os/Handler;
+HSPLcom/android/server/IpSecService$1;-><init>(Lcom/android/server/IpSecService;)V
 HSPLcom/android/server/IpSecService$1;->run()V
 HSPLcom/android/server/IpSecService$IpSecServiceConfiguration$1;-><init>()V
 HSPLcom/android/server/IpSecService$IpSecServiceConfiguration$1;->getNetdInstance()Landroid/net/INetd;
+HSPLcom/android/server/IpSecService$IpSecServiceConfiguration;-><clinit>()V
+HSPLcom/android/server/IpSecService$UserResourceTracker;-><init>()V
 PLcom/android/server/IpSecService$UserResourceTracker;->toString()Ljava/lang/String;
+HSPLcom/android/server/IpSecService;-><clinit>()V
+HSPLcom/android/server/IpSecService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/IpSecService;-><init>(Landroid/content/Context;Lcom/android/server/IpSecService$IpSecServiceConfiguration;)V
+HSPLcom/android/server/IpSecService;-><init>(Landroid/content/Context;Lcom/android/server/IpSecService$IpSecServiceConfiguration;Lcom/android/server/IpSecService$UidFdTagger;)V
+HSPLcom/android/server/IpSecService;->connectNativeNetdService()V
 HSPLcom/android/server/IpSecService;->create(Landroid/content/Context;)Lcom/android/server/IpSecService;
 PLcom/android/server/IpSecService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/IpSecService;->isNetdAlive()Z
 HSPLcom/android/server/IpSecService;->systemReady()V
+HSPLcom/android/server/LocationManagerService$1;-><init>(Lcom/android/server/LocationManagerService;)V
 HSPLcom/android/server/LocationManagerService$1;->lambda$onOpChanged$0$LocationManagerService$1()V
 HSPLcom/android/server/LocationManagerService$1;->onOpChanged(ILjava/lang/String;)V
-HSPLcom/android/server/LocationManagerService$2;->onChange(Z)V
-HSPLcom/android/server/LocationManagerService$3;->onChange(Z)V
-HSPLcom/android/server/LocationManagerService$7;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/server/LocationManagerService$8;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/LocationManagerService$LinkedListener;->binderDied()V
-PLcom/android/server/LocationManagerService$LinkedListenerBase;-><init>(Lcom/android/server/location/CallerIdentity;Ljava/lang/String;Lcom/android/server/LocationManagerService$1;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Lcom/android/server/LocationManagerService$1;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Z)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;ZLcom/android/server/LocationManagerService$1;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->attachLocked(Lcom/android/server/location/AbstractLocationProvider;)V
-PLcom/android/server/LocationManagerService$LocationProvider;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->getName()Ljava/lang/String;
-HSPLcom/android/server/LocationManagerService$LocationProvider;->getPackagesLocked()Ljava/util/List;
-HSPLcom/android/server/LocationManagerService$LocationProvider;->getPropertiesLocked()Lcom/android/internal/location/ProviderProperties;
-PLcom/android/server/LocationManagerService$LocationProvider;->isMock()Z
-PLcom/android/server/LocationManagerService$LocationProvider;->isPassiveLocked()Z
-HSPLcom/android/server/LocationManagerService$LocationProvider;->isUseableForUserLocked(I)Z
-HSPLcom/android/server/LocationManagerService$LocationProvider;->isUseableLocked()Z
-PLcom/android/server/LocationManagerService$LocationProvider;->lambda$onReportLocation$0$LocationManagerService$LocationProvider(Landroid/location/Location;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->lambda$onSetEnabled$2$LocationManagerService$LocationProvider(Z)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onAllowedChangedLocked()V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onLocationModeChangedLocked()V
-PLcom/android/server/LocationManagerService$LocationProvider;->onReportLocation(Landroid/location/Location;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onSetEnabled(Z)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onSetProperties(Lcom/android/internal/location/ProviderProperties;)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onUseableChangedLocked(Z)V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->onUserChangingLocked()V
-HSPLcom/android/server/LocationManagerService$LocationProvider;->setRequestLocked(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-HSPLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)V
-PLcom/android/server/LocationManagerService$Receiver;->access$3900(Lcom/android/server/LocationManagerService$Receiver;)I
+HSPLcom/android/server/LocationManagerService$2;-><init>(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService$2;->onPackageDisappeared(Ljava/lang/String;I)V
+HSPLcom/android/server/LocationManagerService$3;-><init>(Lcom/android/server/LocationManagerService;)V
+HPLcom/android/server/LocationManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/LocationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/LocationManagerService$Lifecycle;->onBootPhase(I)V
+HSPLcom/android/server/LocationManagerService$Lifecycle;->onStart()V
+HSPLcom/android/server/LocationManagerService$LocalService;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService$LocalService;-><init>(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$1;)V
+HPLcom/android/server/LocationManagerService$LocalService;->isProviderPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Lcom/android/server/LocationManagerService$1;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->attachLocked(Lcom/android/server/location/AbstractLocationProvider;)V
+PLcom/android/server/LocationManagerService$LocationProviderManager;->dump(Ljava/io/FileDescriptor;Lcom/android/internal/util/IndentingPrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/LocationManagerService$LocationProviderManager;->dumpLocked(Ljava/io/FileDescriptor;Lcom/android/internal/util/IndentingPrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->getName()Ljava/lang/String;
+HPLcom/android/server/LocationManagerService$LocationProviderManager;->getPackages()Ljava/util/Set;
+PLcom/android/server/LocationManagerService$LocationProviderManager;->getPackagesLocked()Ljava/util/List;
+PLcom/android/server/LocationManagerService$LocationProviderManager;->getProperties()Lcom/android/internal/location/ProviderProperties;
+PLcom/android/server/LocationManagerService$LocationProviderManager;->getPropertiesLocked()Lcom/android/internal/location/ProviderProperties;
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isEnabled()Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isEnabled(I)Z
+PLcom/android/server/LocationManagerService$LocationProviderManager;->isMock()Z
+HPLcom/android/server/LocationManagerService$LocationProviderManager;->isPassiveLocked()Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isUseable()Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isUseable(I)Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isUseableLocked()Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->isUseableLocked(I)Z
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->lambda$setRequest$0$LocationManagerService$LocationProviderManager(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->onEnabledChangedLocked(I)V
+HPLcom/android/server/LocationManagerService$LocationProviderManager;->onReportLocation(Landroid/location/Location;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->onSetEnabled(Z)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->onSetProperties(Lcom/android/internal/location/ProviderProperties;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->onStateChanged(Lcom/android/server/location/AbstractLocationProvider$State;Lcom/android/server/location/AbstractLocationProvider$State;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->onUseableChangedLocked(I)V
+PLcom/android/server/LocationManagerService$LocationProviderManager;->sendExtraCommand(IILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->setRealProvider(Lcom/android/server/location/AbstractLocationProvider;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->setRequest(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/LocationManagerService$LocationProviderManager;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/LocationManagerService$PassiveLocationProviderManager;-><init>(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService$PassiveLocationProviderManager;-><init>(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$1;)V
+HSPLcom/android/server/LocationManagerService$PassiveLocationProviderManager;->setRealProvider(Lcom/android/server/location/AbstractLocationProvider;)V
+HPLcom/android/server/LocationManagerService$PassiveLocationProviderManager;->updateLocation(Landroid/location/Location;)V
+HSPLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;ZLjava/lang/String;)V
+HSPLcom/android/server/LocationManagerService$Receiver;-><init>(Lcom/android/server/LocationManagerService;Landroid/location/ILocationListener;Landroid/app/PendingIntent;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;ZLjava/lang/String;Lcom/android/server/LocationManagerService$1;)V
+HPLcom/android/server/LocationManagerService$Receiver;->access$2800(Lcom/android/server/LocationManagerService$Receiver;)V
+HPLcom/android/server/LocationManagerService$Receiver;->access$2900(Lcom/android/server/LocationManagerService$Receiver;)V
+PLcom/android/server/LocationManagerService$Receiver;->access$2900(Lcom/android/server/LocationManagerService$Receiver;Ljava/lang/String;Z)Z
+HSPLcom/android/server/LocationManagerService$Receiver;->access$3000(Lcom/android/server/LocationManagerService$Receiver;)I
+PLcom/android/server/LocationManagerService$Receiver;->access$3000(Lcom/android/server/LocationManagerService$Receiver;Ljava/lang/String;Z)Z
+HSPLcom/android/server/LocationManagerService$Receiver;->access$3100(Lcom/android/server/LocationManagerService$Receiver;)I
+PLcom/android/server/LocationManagerService$Receiver;->access$3100(Lcom/android/server/LocationManagerService$Receiver;)V
+PLcom/android/server/LocationManagerService$Receiver;->access$3200(Lcom/android/server/LocationManagerService$Receiver;Ljava/lang/String;Z)Z
+HSPLcom/android/server/LocationManagerService$Receiver;->access$3300(Lcom/android/server/LocationManagerService$Receiver;)I
+PLcom/android/server/LocationManagerService$Receiver;->access$3900(Lcom/android/server/LocationManagerService$Receiver;)Ljava/lang/Object;
+PLcom/android/server/LocationManagerService$Receiver;->access$4000(Lcom/android/server/LocationManagerService$Receiver;)Ljava/lang/Object;
 PLcom/android/server/LocationManagerService$Receiver;->binderDied()V
-PLcom/android/server/LocationManagerService$Receiver;->callLocationChangedLocked(Landroid/location/Location;)Z
-HSPLcom/android/server/LocationManagerService$Receiver;->callProviderEnabledLocked(Ljava/lang/String;Z)Z
-PLcom/android/server/LocationManagerService$Receiver;->clearPendingBroadcastsLocked()V
-HSPLcom/android/server/LocationManagerService$Receiver;->decrementPendingBroadcastsLocked()V
-HSPLcom/android/server/LocationManagerService$Receiver;->incrementPendingBroadcastsLocked()V
-PLcom/android/server/LocationManagerService$Receiver;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/LocationManagerService$Receiver;->toString()Ljava/lang/String;
+HPLcom/android/server/LocationManagerService$Receiver;->callLocationChangedLocked(Landroid/location/Location;)Z
+HPLcom/android/server/LocationManagerService$Receiver;->callProviderEnabledLocked(Ljava/lang/String;Z)Z
+PLcom/android/server/LocationManagerService$Receiver;->callRemovedLocked()V
+HPLcom/android/server/LocationManagerService$Receiver;->clearPendingBroadcastsLocked()V
+HPLcom/android/server/LocationManagerService$Receiver;->decrementPendingBroadcastsLocked()V
+PLcom/android/server/LocationManagerService$Receiver;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/LocationManagerService$Receiver;->getListener()Landroid/location/ILocationListener;
+HPLcom/android/server/LocationManagerService$Receiver;->incrementPendingBroadcastsLocked()V
+PLcom/android/server/LocationManagerService$Receiver;->isListener()Z
+PLcom/android/server/LocationManagerService$Receiver;->isPendingIntent()Z
+HPLcom/android/server/LocationManagerService$Receiver;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/LocationManagerService$Receiver;->toString()Ljava/lang/String;
 HSPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(Z)V
-HSPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(ZZI)Z
+HPLcom/android/server/LocationManagerService$Receiver;->updateMonitoring(ZZI)Z
 HSPLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;)V
-PLcom/android/server/LocationManagerService$UpdateRecord;->access$1200(Lcom/android/server/LocationManagerService$UpdateRecord;)Lcom/android/server/LocationManagerService$Receiver;
-PLcom/android/server/LocationManagerService$UpdateRecord;->access$4000(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/LocationRequest;
-PLcom/android/server/LocationManagerService$UpdateRecord;->access$4700(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
-PLcom/android/server/LocationManagerService$UpdateRecord;->access$4900(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/Location;
-PLcom/android/server/LocationManagerService$UpdateRecord;->access$4902(Lcom/android/server/LocationManagerService$UpdateRecord;Landroid/location/Location;)Landroid/location/Location;
-PLcom/android/server/LocationManagerService$UpdateRecord;->disposeLocked(Z)V
-PLcom/android/server/LocationManagerService$UpdateRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/LocationManagerService$UpdateRecord;-><init>(Lcom/android/server/LocationManagerService;Ljava/lang/String;Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;Lcom/android/server/LocationManagerService$1;)V
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$1000(Lcom/android/server/LocationManagerService$UpdateRecord;)Lcom/android/server/LocationManagerService$Receiver;
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$1000(Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$1100(Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$1100(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$1200(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$3100(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/LocationRequest;
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$3200(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/LocationRequest;
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$3400(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/LocationRequest;
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$3800(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$3900(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4000(Lcom/android/server/LocationManagerService$UpdateRecord;)J
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4100(Lcom/android/server/LocationManagerService$UpdateRecord;)J
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4100(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/Location;
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$4100(Lcom/android/server/LocationManagerService$UpdateRecord;Z)V
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$4102(Lcom/android/server/LocationManagerService$UpdateRecord;Landroid/location/Location;)Landroid/location/Location;
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4200(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/Location;
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4202(Lcom/android/server/LocationManagerService$UpdateRecord;Landroid/location/Location;)Landroid/location/Location;
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4300(Lcom/android/server/LocationManagerService$UpdateRecord;)J
+HPLcom/android/server/LocationManagerService$UpdateRecord;->access$4400(Lcom/android/server/LocationManagerService$UpdateRecord;)Landroid/location/Location;
+PLcom/android/server/LocationManagerService$UpdateRecord;->access$4402(Lcom/android/server/LocationManagerService$UpdateRecord;Landroid/location/Location;)Landroid/location/Location;
+HSPLcom/android/server/LocationManagerService$UpdateRecord;->access$900(Lcom/android/server/LocationManagerService$UpdateRecord;)Lcom/android/server/LocationManagerService$Receiver;
+HPLcom/android/server/LocationManagerService$UpdateRecord;->disposeLocked(Z)V
+HPLcom/android/server/LocationManagerService$UpdateRecord;->toString()Ljava/lang/String;
+PLcom/android/server/LocationManagerService$UpdateRecord;->updateForeground(Z)V
+HSPLcom/android/server/LocationManagerService;-><clinit>()V
 HSPLcom/android/server/LocationManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/LocationManagerService;->addGnssDataListener(Landroid/os/IInterface;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;Ljava/util/function/Consumer;)Z
-PLcom/android/server/LocationManagerService;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;)Z
-HSPLcom/android/server/LocationManagerService;->addProviderLocked(Lcom/android/server/LocationManagerService$LocationProvider;)V
-HSPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Lcom/android/server/LocationManagerService$LocationProvider;)V
+HSPLcom/android/server/LocationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/LocationManagerService$1;)V
+HSPLcom/android/server/LocationManagerService;->access$100(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService;->access$1300(Lcom/android/server/LocationManagerService;)Landroid/content/Context;
+HSPLcom/android/server/LocationManagerService;->access$1400(Lcom/android/server/LocationManagerService;)Landroid/content/Context;
+HPLcom/android/server/LocationManagerService;->access$1400(Lcom/android/server/LocationManagerService;Landroid/location/Location;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->access$1500(Lcom/android/server/LocationManagerService;)I
+HPLcom/android/server/LocationManagerService;->access$1500(Lcom/android/server/LocationManagerService;Landroid/location/Location;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+PLcom/android/server/LocationManagerService;->access$1600(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/PassiveProvider;
+HSPLcom/android/server/LocationManagerService;->access$1600(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/UserInfoHelper;
+HSPLcom/android/server/LocationManagerService;->access$1600(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/UserInfoStore;
+HSPLcom/android/server/LocationManagerService;->access$1700(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationSettingsStore;
+HSPLcom/android/server/LocationManagerService;->access$1700(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/SettingsHelper;
+HSPLcom/android/server/LocationManagerService;->access$1700(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/UserInfoStore;
+HPLcom/android/server/LocationManagerService;->access$1700(Lcom/android/server/LocationManagerService;Landroid/location/Location;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->access$1800(Lcom/android/server/LocationManagerService;)Landroid/content/Context;
+HSPLcom/android/server/LocationManagerService;->access$1800(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationSettingsStore;
+PLcom/android/server/LocationManagerService;->access$1800(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+PLcom/android/server/LocationManagerService;->access$1900(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+PLcom/android/server/LocationManagerService;->access$1900(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Lcom/android/server/LocationManagerService$LocationProviderManager;
+HSPLcom/android/server/LocationManagerService;->access$200(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService;->access$2000(Lcom/android/server/LocationManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/LocationManagerService;->access$2000(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HSPLcom/android/server/LocationManagerService;->access$2000(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->access$2100(Lcom/android/server/LocationManagerService;I)Z
+HSPLcom/android/server/LocationManagerService;->access$2100(Lcom/android/server/LocationManagerService;II)I
+HSPLcom/android/server/LocationManagerService;->access$2100(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->access$2200(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager;
+PLcom/android/server/LocationManagerService;->access$2200(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HSPLcom/android/server/LocationManagerService;->access$2200(Lcom/android/server/LocationManagerService;II)I
+HSPLcom/android/server/LocationManagerService;->access$2300(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager;
+PLcom/android/server/LocationManagerService;->access$2300(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HPLcom/android/server/LocationManagerService;->access$2300(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Lcom/android/server/LocationManagerService$LocationProviderManager;
+HSPLcom/android/server/LocationManagerService;->access$2400(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HPLcom/android/server/LocationManagerService;->access$2400(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+HPLcom/android/server/LocationManagerService;->access$2400(Lcom/android/server/LocationManagerService;Ljava/lang/String;)Lcom/android/server/LocationManagerService$LocationProviderManager;
+PLcom/android/server/LocationManagerService;->access$2500(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager;
+HSPLcom/android/server/LocationManagerService;->access$2500(Lcom/android/server/LocationManagerService;II)I
+PLcom/android/server/LocationManagerService;->access$2500(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+PLcom/android/server/LocationManagerService;->access$2600(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager;
+HSPLcom/android/server/LocationManagerService;->access$2600(Lcom/android/server/LocationManagerService;)Landroid/os/PowerManager;
+PLcom/android/server/LocationManagerService;->access$2600(Lcom/android/server/LocationManagerService;I)Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->access$2700(Lcom/android/server/LocationManagerService;I)Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->access$2700(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$Receiver;)V
+PLcom/android/server/LocationManagerService;->access$2700(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+PLcom/android/server/LocationManagerService;->access$2800(Lcom/android/server/LocationManagerService;)Landroid/app/AppOpsManager;
+PLcom/android/server/LocationManagerService;->access$2800(Lcom/android/server/LocationManagerService;Lcom/android/server/LocationManagerService$Receiver;)V
+HSPLcom/android/server/LocationManagerService;->access$300(Lcom/android/server/LocationManagerService;)Landroid/os/Handler;
+HSPLcom/android/server/LocationManagerService;->access$300(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService;->access$3200(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager;
+HSPLcom/android/server/LocationManagerService;->access$3300(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager;
+HSPLcom/android/server/LocationManagerService;->access$3300(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/AppForegroundHelper;
+HSPLcom/android/server/LocationManagerService;->access$3300(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HSPLcom/android/server/LocationManagerService;->access$3400(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics;
+HSPLcom/android/server/LocationManagerService;->access$3400(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HSPLcom/android/server/LocationManagerService;->access$3500(Lcom/android/server/LocationManagerService;)Landroid/app/ActivityManager;
+HSPLcom/android/server/LocationManagerService;->access$3500(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics;
+PLcom/android/server/LocationManagerService;->access$3500(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationUsageLogger;
+PLcom/android/server/LocationManagerService;->access$3600(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationUsageLogger;
+HSPLcom/android/server/LocationManagerService;->access$3600(Lcom/android/server/LocationManagerService;)Ljava/util/HashMap;
+HSPLcom/android/server/LocationManagerService;->access$3700(Lcom/android/server/LocationManagerService;)Lcom/android/server/location/LocationRequestStatistics;
+HSPLcom/android/server/LocationManagerService;->access$400(Lcom/android/server/LocationManagerService;)Landroid/os/Handler;
+HSPLcom/android/server/LocationManagerService;->access$400(Lcom/android/server/LocationManagerService;)Ljava/lang/Object;
+PLcom/android/server/LocationManagerService;->access$4300(Lcom/android/server/LocationManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+HSPLcom/android/server/LocationManagerService;->access$500(Lcom/android/server/LocationManagerService;)Landroid/os/Handler;
+HSPLcom/android/server/LocationManagerService;->access$500(Lcom/android/server/LocationManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/LocationManagerService;->access$500(Lcom/android/server/LocationManagerService;)V
+HSPLcom/android/server/LocationManagerService;->access$600(Lcom/android/server/LocationManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/LocationManagerService;->access$600(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService;->access$600(Lcom/android/server/LocationManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->access$700(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService;->access$700(Lcom/android/server/LocationManagerService;I)V
+PLcom/android/server/LocationManagerService;->access$700(Lcom/android/server/LocationManagerService;Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->access$800(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService;->access$800(Lcom/android/server/LocationManagerService;Ljava/lang/String;)V
+PLcom/android/server/LocationManagerService;->access$900(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/LocationManagerService;->addProviderLocked(Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->applyRequirementsLocked(Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->checkCallingOrSelfLocationPermission()Z
+HSPLcom/android/server/LocationManagerService;->checkLocationAccess(IILjava/lang/String;I)Z
 HSPLcom/android/server/LocationManagerService;->checkPackageName(Ljava/lang/String;)V
+PLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForGeofenceUse(I)V
 HSPLcom/android/server/LocationManagerService;->checkResolutionLevelIsSufficientForProviderUseLocked(ILjava/lang/String;)V
 HSPLcom/android/server/LocationManagerService;->createSanitizedRequest(Landroid/location/LocationRequest;IZ)Landroid/location/LocationRequest;
-PLcom/android/server/LocationManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/LocationManagerService;->dumpGnssDataListenersLocked(Ljava/io/PrintWriter;Landroid/util/ArrayMap;)V
+HPLcom/android/server/LocationManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->enforceCallingOrSelfLocationPermission()V
+HSPLcom/android/server/LocationManagerService;->enforceCallingOrSelfPackageName(Ljava/lang/String;)V
 HSPLcom/android/server/LocationManagerService;->ensureFallbackFusedProviderPresentLocked([Ljava/lang/String;)V
-HSPLcom/android/server/LocationManagerService;->geocoderIsPresent()Z
-PLcom/android/server/LocationManagerService;->getAllProviders()Ljava/util/List;
+HPLcom/android/server/LocationManagerService;->geocoderIsPresent()Z
+HPLcom/android/server/LocationManagerService;->getAllProviders()Ljava/util/List;
 HSPLcom/android/server/LocationManagerService;->getAllowedResolutionLevel(II)I
-PLcom/android/server/LocationManagerService;->getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String;
-PLcom/android/server/LocationManagerService;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
-HSPLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;)Landroid/location/Location;
-PLcom/android/server/LocationManagerService;->getLocationControllerExtraPackage()Ljava/lang/String;
+HPLcom/android/server/LocationManagerService;->getBestProvider(Landroid/location/Criteria;Z)Ljava/lang/String;
+HSPLcom/android/server/LocationManagerService;->getCallerAllowedResolutionLevel()I
+PLcom/android/server/LocationManagerService;->getCurrentLocation(Landroid/location/LocationRequest;Landroid/os/ICancellationSignal;Landroid/location/ILocationListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/LocationManagerService;->getExtraLocationControllerPackage()Ljava/lang/String;
+HPLcom/android/server/LocationManagerService;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->getGnssCapabilities(Ljava/lang/String;)J
+HPLcom/android/server/LocationManagerService;->getLastLocation(Landroid/location/LocationRequest;Ljava/lang/String;Ljava/lang/String;)Landroid/location/Location;
+HSPLcom/android/server/LocationManagerService;->getLocationProviderLocked(Ljava/lang/String;)Lcom/android/server/LocationManagerService$LocationProviderManager;
+HSPLcom/android/server/LocationManagerService;->getLocationProviderManager(Ljava/lang/String;)Lcom/android/server/LocationManagerService$LocationProviderManager;
 HSPLcom/android/server/LocationManagerService;->getMinimumResolutionLevelForProviderUseLocked(Ljava/lang/String;)I
-PLcom/android/server/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;
-HSPLcom/android/server/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
-HSPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/app/PendingIntent;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver;
-HSPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Landroid/os/WorkSource;Z)Lcom/android/server/LocationManagerService$Receiver;
-PLcom/android/server/LocationManagerService;->handleLocationChangedLocked(Landroid/location/Location;Lcom/android/server/LocationManagerService$LocationProvider;)V
-PLcom/android/server/LocationManagerService;->hasGnssPermissions(Ljava/lang/String;)Z
-HSPLcom/android/server/LocationManagerService;->initializeLocked()V
+HPLcom/android/server/LocationManagerService;->getProviderProperties(Ljava/lang/String;)Lcom/android/internal/location/ProviderProperties;
+HPLcom/android/server/LocationManagerService;->getProviders(Landroid/location/Criteria;Z)Ljava/util/List;
+PLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/app/PendingIntent;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;ZLjava/lang/String;)Lcom/android/server/LocationManagerService$Receiver;
+HSPLcom/android/server/LocationManagerService;->getReceiverLocked(Landroid/location/ILocationListener;IILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;ZLjava/lang/String;)Lcom/android/server/LocationManagerService$Receiver;
+PLcom/android/server/LocationManagerService;->getResolutionPermission(I)Ljava/lang/String;
+HPLcom/android/server/LocationManagerService;->handleLocationChangedLocked(Landroid/location/Location;Lcom/android/server/LocationManagerService$LocationProviderManager;)V
 HSPLcom/android/server/LocationManagerService;->initializeProvidersLocked()V
-PLcom/android/server/LocationManagerService;->isCurrentProfileLocked(I)Z
-PLcom/android/server/LocationManagerService;->isLocationControllerExtraPackageEnabled()Z
+PLcom/android/server/LocationManagerService;->injectGnssMeasurementCorrections(Landroid/location/GnssMeasurementCorrections;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->isCurrentProfileLocked(I)Z
+PLcom/android/server/LocationManagerService;->isExtraLocationControllerPackageEnabled()Z
 HSPLcom/android/server/LocationManagerService;->isLocationEnabledForUser(I)Z
 HSPLcom/android/server/LocationManagerService;->isProviderEnabledForUser(Ljava/lang/String;I)Z
-HSPLcom/android/server/LocationManagerService;->isProviderPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/LocationManagerService;->isSettingsExemptLocked(Lcom/android/server/LocationManagerService$UpdateRecord;)Z
-PLcom/android/server/LocationManagerService;->isValidWorkSource(Landroid/os/WorkSource;)Z
-HSPLcom/android/server/LocationManagerService;->lambda$initializeLocked$2$LocationManagerService(I)V
-HSPLcom/android/server/LocationManagerService;->lambda$initializeLocked$3$LocationManagerService(II)V
-HSPLcom/android/server/LocationManagerService;->lambda$initializeLocked$4$LocationManagerService(Landroid/os/PowerSaveState;)V
-PLcom/android/server/LocationManagerService;->lambda$new$0$LocationManagerService(I)[Ljava/lang/String;
-PLcom/android/server/LocationManagerService;->lambda$new$1$LocationManagerService(I)[Ljava/lang/String;
-HSPLcom/android/server/LocationManagerService;->linkToListenerDeathNotificationLocked(Landroid/os/IBinder;Lcom/android/server/LocationManagerService$LinkedListenerBase;)Z
-HSPLcom/android/server/LocationManagerService;->locationCallbackFinished(Landroid/location/ILocationListener;)V
+HPLcom/android/server/LocationManagerService;->isProviderPackage(Ljava/lang/String;)Z
+HPLcom/android/server/LocationManagerService;->isSettingsExempt(Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+HPLcom/android/server/LocationManagerService;->isSettingsExemptLocked(Lcom/android/server/LocationManagerService$UpdateRecord;)Z
+HSPLcom/android/server/LocationManagerService;->isThrottlingExempt(Lcom/android/server/location/CallerIdentity;)Z
+HSPLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/location/CallerIdentity;)Z
+HPLcom/android/server/LocationManagerService;->isValidWorkSource(Landroid/os/WorkSource;)Z
+HSPLcom/android/server/LocationManagerService;->lambda$AgevX9G4cx2TbNzr7MYT3YPtASs(Lcom/android/server/LocationManagerService;IZ)V
+PLcom/android/server/LocationManagerService;->lambda$getCurrentLocation$13$LocationManagerService(Landroid/location/ILocationListener;Ljava/lang/String;)V
+PLcom/android/server/LocationManagerService;->lambda$getCurrentLocation$6$LocationManagerService(Landroid/location/ILocationListener;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->lambda$new$0$LocationManagerService(I)[Ljava/lang/String;
+HSPLcom/android/server/LocationManagerService;->lambda$new$1$LocationManagerService(I)[Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->lambda$nxs_FejUjcjw2UUIeDY3TYTRJs4(Lcom/android/server/LocationManagerService;)V
+PLcom/android/server/LocationManagerService;->lambda$oIimlThgbbmKRAN80H4tpnruGtk(Lcom/android/server/LocationManagerService;I)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$11$LocationManagerService()V
+HPLcom/android/server/LocationManagerService;->lambda$onSystemReady$2$LocationManagerService()V
+HPLcom/android/server/LocationManagerService;->lambda$onSystemReady$3$LocationManagerService(I)V
+HSPLcom/android/server/LocationManagerService;->lambda$onSystemReady$4$LocationManagerService(II)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$4$LocationManagerService(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/LocationManagerService;->lambda$onSystemReady$5$LocationManagerService(II)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$5$LocationManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$6$LocationManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$7$LocationManagerService(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/LocationManagerService;->lambda$onSystemReady$8$LocationManagerService(I)V
+PLcom/android/server/LocationManagerService;->lambda$onSystemReady$9$LocationManagerService()V
+HPLcom/android/server/LocationManagerService;->locationCallbackFinished(Landroid/location/ILocationListener;)V
+HSPLcom/android/server/LocationManagerService;->onAppForegroundChanged(IZ)V
 HSPLcom/android/server/LocationManagerService;->onAppOpChangedLocked()V
-HSPLcom/android/server/LocationManagerService;->onBackgroundThrottleWhitelistChangedLocked()V
-HSPLcom/android/server/LocationManagerService;->onBatterySaverModeChangedLocked(I)V
-HSPLcom/android/server/LocationManagerService;->onIgnoreSettingsWhitelistChangedLocked()V
-HSPLcom/android/server/LocationManagerService;->onLocationModeChangedLocked(Z)V
-HSPLcom/android/server/LocationManagerService;->onPackageDisappearedLocked(Ljava/lang/String;)V
+PLcom/android/server/LocationManagerService;->onBackgroundThrottleIntervalChangedLocked()V
+PLcom/android/server/LocationManagerService;->onBatterySaverModeChangedLocked(I)V
+PLcom/android/server/LocationManagerService;->onIgnoreSettingsWhitelistChanged()V
+PLcom/android/server/LocationManagerService;->onIgnoreSettingsWhitelistChangedLocked()V
+HPLcom/android/server/LocationManagerService;->onLocationModeChanged(I)V
+HSPLcom/android/server/LocationManagerService;->onLocationModeChangedLocked(I)V
+HPLcom/android/server/LocationManagerService;->onPackageDisappearedLocked(Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->onPermissionsChangedLocked()V
+HPLcom/android/server/LocationManagerService;->onScreenStateChangedLocked()V
+HSPLcom/android/server/LocationManagerService;->onSystemReady()V
+HSPLcom/android/server/LocationManagerService;->onSystemThirdPartyAppsCanStart()V
 HSPLcom/android/server/LocationManagerService;->onUidImportanceChangedLocked(II)V
+HSPLcom/android/server/LocationManagerService;->onUserChanged(II)V
 HSPLcom/android/server/LocationManagerService;->onUserChangedLocked(I)V
-PLcom/android/server/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;)Z
-PLcom/android/server/LocationManagerService;->removeGnssDataListener(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/LocationManagerService;->onUserChangedLocked(II)V
+HSPLcom/android/server/LocationManagerService;->onUserProfilesChangedLocked()V
+PLcom/android/server/LocationManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;)Z
 PLcom/android/server/LocationManagerService;->removeGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;)V
-PLcom/android/server/LocationManagerService;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
-PLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V
-PLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;I)Z
-HSPLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->removeUpdates(Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->removeUpdatesLocked(Lcom/android/server/LocationManagerService$Receiver;)V
+HPLcom/android/server/LocationManagerService;->reportLocationAccessNoThrow(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;)Z
+PLcom/android/server/LocationManagerService;->requestGeofence(Landroid/location/LocationRequest;Landroid/location/Geofence;Landroid/app/PendingIntent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->requestLocationUpdates(Landroid/location/LocationRequest;Landroid/location/ILocationListener;Landroid/app/PendingIntent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/LocationManagerService;->requestLocationUpdatesLocked(Landroid/location/LocationRequest;Lcom/android/server/LocationManagerService$Receiver;ILjava/lang/String;)V
-PLcom/android/server/LocationManagerService;->setLocationControllerExtraPackage(Ljava/lang/String;)V
-PLcom/android/server/LocationManagerService;->setLocationControllerExtraPackageEnabled(Z)V
-PLcom/android/server/LocationManagerService;->shouldBroadcastSafeLocked(Landroid/location/Location;Landroid/location/Location;Lcom/android/server/LocationManagerService$UpdateRecord;J)Z
-HSPLcom/android/server/LocationManagerService;->systemRunning()V
-PLcom/android/server/LocationManagerService;->unlinkFromListenerDeathNotificationLocked(Landroid/os/IBinder;Lcom/android/server/LocationManagerService$LinkedListenerBase;)Z
+HSPLcom/android/server/LocationManagerService;->resolutionLevelToOp(I)I
+PLcom/android/server/LocationManagerService;->resolutionLevelToOpStr(I)Ljava/lang/String;
+PLcom/android/server/LocationManagerService;->sendExtraCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)Z
+PLcom/android/server/LocationManagerService;->setExtraLocationControllerPackage(Ljava/lang/String;)V
+HPLcom/android/server/LocationManagerService;->setExtraLocationControllerPackageEnabled(Z)V
+HPLcom/android/server/LocationManagerService;->shouldBroadcastSafeLocked(Landroid/location/Location;Landroid/location/Location;Lcom/android/server/LocationManagerService$UpdateRecord;J)Z
 PLcom/android/server/LocationManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
-HSPLcom/android/server/LocationManagerService;->updateGnssDataProviderOnUidImportanceChangedLocked(Landroid/util/ArrayMap;Lcom/android/server/location/RemoteListenerHelper;Ljava/util/function/Function;IZ)V
-PLcom/android/server/LocationManagerService;->updateLastLocationLocked(Landroid/location/Location;Ljava/lang/String;)V
-HSPLcom/android/server/LocationManagerService;->updateProviderUseableLocked(Lcom/android/server/LocationManagerService$LocationProvider;)V
+HPLcom/android/server/LocationManagerService;->updateLastLocationLocked(Landroid/location/Location;Ljava/lang/String;)V
+HSPLcom/android/server/LocationManagerService;->updateProviderEnabledLocked(Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+HSPLcom/android/server/LocationManagerService;->updateProviderUseableLocked(Lcom/android/server/LocationManagerService$LocationProviderManager;)V
+PLcom/android/server/LocationManagerServiceUtils$LinkedListener;-><init>(Ljava/lang/Object;Ljava/lang/String;Lcom/android/server/location/CallerIdentity;Ljava/util/function/Consumer;)V
+PLcom/android/server/LocationManagerServiceUtils$LinkedListener;->binderDied()V
+HSPLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;-><init>(Lcom/android/server/location/CallerIdentity;Ljava/lang/String;)V
+PLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;->getCallerIdentity()Lcom/android/server/location/CallerIdentity;
+HSPLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;->linkToListenerDeathNotificationLocked(Landroid/os/IBinder;)Z
+PLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;->toString()Ljava/lang/String;
+PLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;->unlinkFromListenerDeathNotificationLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;->unlinkFromListenerDeathNotificationLocked(Landroid/os/IBinder;)Z
+HSPLcom/android/server/LocationManagerServiceUtils;-><clinit>()V
+PLcom/android/server/LocationManagerServiceUtils;->access$000()Z
+HPLcom/android/server/LocationManagerServiceUtils;->getPackageImportance(Ljava/lang/String;Landroid/content/Context;)I
+HSPLcom/android/server/LocationManagerServiceUtils;->isImportanceForeground(I)Z
+HSPLcom/android/server/LockGuard$LockInfo;-><init>()V
+HSPLcom/android/server/LockGuard$LockInfo;-><init>(Lcom/android/server/LockGuard$1;)V
+HSPLcom/android/server/LockGuard;-><clinit>()V
 HSPLcom/android/server/LockGuard;->findOrCreateLockInfo(Ljava/lang/Object;)Lcom/android/server/LockGuard$LockInfo;
 HSPLcom/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;
 HSPLcom/android/server/LooperStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/LooperStatsService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/LooperStatsService$Lifecycle;->onStart()V
-PLcom/android/server/LooperStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/LooperStatsService$SettingsObserver;-><init>(Lcom/android/server/LooperStatsService;)V
+PLcom/android/server/LooperStatsService$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;)V
+HSPLcom/android/server/LooperStatsService;-><init>(Landroid/content/Context;Lcom/android/internal/os/LooperStats;Lcom/android/server/LooperStatsService$1;)V
+HSPLcom/android/server/LooperStatsService;->access$200(Lcom/android/server/LooperStatsService;)V
+HPLcom/android/server/LooperStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/LooperStatsService;->initFromSettings()V
+HPLcom/android/server/LooperStatsService;->lambda$dump$0(Lcom/android/internal/os/LooperStats$ExportedEntry;)Ljava/lang/Integer;
+PLcom/android/server/LooperStatsService;->lambda$dump$1(Lcom/android/internal/os/LooperStats$ExportedEntry;)Ljava/lang/String;
+PLcom/android/server/LooperStatsService;->lambda$dump$2(Lcom/android/internal/os/LooperStats$ExportedEntry;)Ljava/lang/String;
+PLcom/android/server/LooperStatsService;->lambda$dump$3(Lcom/android/internal/os/LooperStats$ExportedEntry;)Ljava/lang/String;
+HSPLcom/android/server/LooperStatsService;->setEnabled(Z)V
+HSPLcom/android/server/LooperStatsService;->setSamplingInterval(I)V
+HSPLcom/android/server/LooperStatsService;->setTrackScreenInteractive(Z)V
+HSPLcom/android/server/MmsServiceBroker$1;-><init>(Lcom/android/server/MmsServiceBroker;)V
 PLcom/android/server/MmsServiceBroker$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/MmsServiceBroker$2;-><init>(Lcom/android/server/MmsServiceBroker;)V
 PLcom/android/server/MmsServiceBroker$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/MmsServiceBroker$BinderService;->adjustUriForUserAndGrantPermission(Landroid/net/Uri;Ljava/lang/String;I)Landroid/net/Uri;
+PLcom/android/server/MmsServiceBroker$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HSPLcom/android/server/MmsServiceBroker$3;-><init>(Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/MmsServiceBroker$BinderService;-><init>(Lcom/android/server/MmsServiceBroker;Lcom/android/server/MmsServiceBroker$1;)V
+HPLcom/android/server/MmsServiceBroker$BinderService;->adjustUriForUserAndGrantPermission(Landroid/net/Uri;Ljava/lang/String;II)Landroid/net/Uri;
 PLcom/android/server/MmsServiceBroker$BinderService;->downloadMessage(ILjava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;)V
-PLcom/android/server/MmsServiceBroker$BinderService;->getAutoPersisting()Z
-PLcom/android/server/MmsServiceBroker$BinderService;->getCarrierConfigValues(I)Landroid/os/Bundle;
-PLcom/android/server/MmsServiceBroker$BinderService;->sendMessage(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;)V
+PLcom/android/server/MmsServiceBroker$BinderService;->downloadMessage(ILjava/lang/String;Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;Landroid/app/PendingIntent;J)V
+HPLcom/android/server/MmsServiceBroker$BinderService;->sendMessage(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;)V
+PLcom/android/server/MmsServiceBroker$BinderService;->sendMessage(ILjava/lang/String;Landroid/net/Uri;Ljava/lang/String;Landroid/os/Bundle;Landroid/app/PendingIntent;J)V
+HSPLcom/android/server/MmsServiceBroker;-><clinit>()V
 HSPLcom/android/server/MmsServiceBroker;-><init>(Landroid/content/Context;)V
+PLcom/android/server/MmsServiceBroker;->access$000(Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/MmsServiceBroker;->access$102(Lcom/android/server/MmsServiceBroker;Lcom/android/internal/telephony/IMms;)Lcom/android/internal/telephony/IMms;
+PLcom/android/server/MmsServiceBroker;->access$1100(Lcom/android/server/MmsServiceBroker;I)I
+PLcom/android/server/MmsServiceBroker;->access$200(Lcom/android/server/MmsServiceBroker;)Landroid/os/Handler;
+PLcom/android/server/MmsServiceBroker;->access$300(Lcom/android/server/MmsServiceBroker;)Landroid/content/Context;
+PLcom/android/server/MmsServiceBroker;->access$500(Lcom/android/server/MmsServiceBroker;)Landroid/app/AppOpsManager;
+PLcom/android/server/MmsServiceBroker;->access$600(Lcom/android/server/MmsServiceBroker;)Lcom/android/internal/telephony/IMms;
+PLcom/android/server/MmsServiceBroker;->getAppOpsManager()Landroid/app/AppOpsManager;
 PLcom/android/server/MmsServiceBroker;->getOrConnectService()Lcom/android/internal/telephony/IMms;
+PLcom/android/server/MmsServiceBroker;->getPhoneIdFromSubId(I)I
+PLcom/android/server/MmsServiceBroker;->getServiceGuarded()Lcom/android/internal/telephony/IMms;
 HSPLcom/android/server/MmsServiceBroker;->onStart()V
 HSPLcom/android/server/MmsServiceBroker;->systemRunning()V
 PLcom/android/server/MmsServiceBroker;->tryConnecting()V
-PLcom/android/server/MountServiceIdler$1;->run()V
+PLcom/android/server/MountServiceIdler$1;-><init>(Lcom/android/server/MountServiceIdler;)V
+HPLcom/android/server/MountServiceIdler$1;->run()V
+HSPLcom/android/server/MountServiceIdler;-><clinit>()V
 PLcom/android/server/MountServiceIdler;-><init>()V
-PLcom/android/server/MountServiceIdler;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/MountServiceIdler;->access$000(Lcom/android/server/MountServiceIdler;)Ljava/lang/Runnable;
+PLcom/android/server/MountServiceIdler;->access$100(Lcom/android/server/MountServiceIdler;)Z
+PLcom/android/server/MountServiceIdler;->access$102(Lcom/android/server/MountServiceIdler;Z)Z
+PLcom/android/server/MountServiceIdler;->access$200(Lcom/android/server/MountServiceIdler;)Landroid/app/job/JobParameters;
+HSPLcom/android/server/MountServiceIdler;->offsetFromTodayMidnight(II)Ljava/util/Calendar;
+HPLcom/android/server/MountServiceIdler;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/MountServiceIdler;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/MountServiceIdler;->scheduleIdlePass(Landroid/content/Context;)V
-HSPLcom/android/server/MountServiceIdler;->tomorrowMidnight()Ljava/util/Calendar;
+PLcom/android/server/NativeDaemonConnector$NativeDaemonFailureException;-><init>(Ljava/lang/String;Lcom/android/server/NativeDaemonEvent;)V
+PLcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;-><init>(ILjava/lang/String;)V
+HSPLcom/android/server/NativeDaemonConnector$ResponseQueue;-><init>(I)V
 PLcom/android/server/NativeDaemonConnector$ResponseQueue;->add(ILcom/android/server/NativeDaemonEvent;)V
 PLcom/android/server/NativeDaemonConnector$ResponseQueue;->remove(IJLjava/lang/String;)Lcom/android/server/NativeDaemonEvent;
+HSPLcom/android/server/NativeDaemonConnector;-><init>(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;)V
 HSPLcom/android/server/NativeDaemonConnector;-><init>(Lcom/android/server/INativeDaemonConnectorCallbacks;Ljava/lang/String;ILjava/lang/String;ILandroid/os/PowerManager$WakeLock;Landroid/os/Looper;)V
-PLcom/android/server/NativeDaemonConnector;->appendEscaped(Ljava/lang/StringBuilder;Ljava/lang/String;)V
+HPLcom/android/server/NativeDaemonConnector;->appendEscaped(Ljava/lang/StringBuilder;Ljava/lang/String;)V
+HSPLcom/android/server/NativeDaemonConnector;->determineSocketAddress()Landroid/net/LocalSocketAddress;
 PLcom/android/server/NativeDaemonConnector;->execute(JLjava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent;
-PLcom/android/server/NativeDaemonConnector;->executeForList(JLjava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent;
+PLcom/android/server/NativeDaemonConnector;->execute(Ljava/lang/String;[Ljava/lang/Object;)Lcom/android/server/NativeDaemonEvent;
+HPLcom/android/server/NativeDaemonConnector;->executeForList(JLjava/lang/String;[Ljava/lang/Object;)[Lcom/android/server/NativeDaemonEvent;
+PLcom/android/server/NativeDaemonConnector;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/NativeDaemonConnector;->isShuttingDown()Z
 HSPLcom/android/server/NativeDaemonConnector;->listenToSocket()V
-PLcom/android/server/NativeDaemonConnector;->makeCommand(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;ILjava/lang/String;[Ljava/lang/Object;)V
+PLcom/android/server/NativeDaemonConnector;->log(Ljava/lang/String;)V
+HPLcom/android/server/NativeDaemonConnector;->makeCommand(Ljava/lang/StringBuilder;Ljava/lang/StringBuilder;ILjava/lang/String;[Ljava/lang/Object;)V
 HSPLcom/android/server/NativeDaemonConnector;->run()V
+PLcom/android/server/NativeDaemonConnector;->uptimeMillisInt()I
+PLcom/android/server/NativeDaemonConnectorException;-><init>(Ljava/lang/String;Lcom/android/server/NativeDaemonEvent;)V
+PLcom/android/server/NativeDaemonConnectorException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+PLcom/android/server/NativeDaemonEvent;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;[Ljava/io/FileDescriptor;)V
 PLcom/android/server/NativeDaemonEvent;->getCmdNumber()I
+PLcom/android/server/NativeDaemonEvent;->getCode()I
+PLcom/android/server/NativeDaemonEvent;->getRawEvent()Ljava/lang/String;
 PLcom/android/server/NativeDaemonEvent;->isClassClientError()Z
 PLcom/android/server/NativeDaemonEvent;->isClassContinue()Z
 PLcom/android/server/NativeDaemonEvent;->isClassServerError()Z
 PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited()Z
+PLcom/android/server/NativeDaemonEvent;->isClassUnsolicited(I)Z
 PLcom/android/server/NativeDaemonEvent;->parseRawEvent(Ljava/lang/String;[Ljava/io/FileDescriptor;)Lcom/android/server/NativeDaemonEvent;
 PLcom/android/server/NativeDaemonEvent;->toString()Ljava/lang/String;
+HPLcom/android/server/NativeDaemonEvent;->unescapeArgs(Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/NetIdManager;-><init>()V
+HSPLcom/android/server/NetIdManager;-><init>(I)V
+HPLcom/android/server/NetIdManager;->getNextAvailableNetIdLocked(ILandroid/util/SparseBooleanArray;)I
+HPLcom/android/server/NetIdManager;->releaseNetId(I)V
+HPLcom/android/server/NetIdManager;->reserveNetId()I
+HSPLcom/android/server/NetworkManagementInternal;-><init>()V
+PLcom/android/server/NetworkManagementService$IdleTimerParams;-><init>(II)V
+HSPLcom/android/server/NetworkManagementService$LocalService;-><init>(Lcom/android/server/NetworkManagementService;)V
 HSPLcom/android/server/NetworkManagementService$LocalService;->isNetworkRestrictedForUid(I)Z
+HSPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;)V
+HSPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$1;)V
 HSPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
-HSPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->setInterfaceQuota(Ljava/lang/String;J)V
+HPLcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;->setInterfaceQuota(Ljava/lang/String;J)V
+HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/NetworkManagementService;)V
+HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;-><init>(Lcom/android/server/NetworkManagementService;Lcom/android/server/NetworkManagementService$1;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAdded$5$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressRemoved$4$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;Landroid/net/LinkAddress;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceAddressUpdated$3$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;Landroid/net/LinkAddress;)V
-PLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceClassActivityChanged$0$NetworkManagementService$NetdUnsolicitedEventListener(IZJI)V
+HPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceClassActivityChanged$0$NetworkManagementService$NetdUnsolicitedEventListener(IZJI)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceDnsServerInfo$2$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;J[Ljava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceLinkStateChanged$8$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;Z)V
 PLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->lambda$onInterfaceRemoved$6$NetworkManagementService$NetdUnsolicitedEventListener(Ljava/lang/String;)V
@@ -1403,67 +2996,97 @@
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAdded(Ljava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressRemoved(Ljava/lang/String;Ljava/lang/String;II)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceAddressUpdated(Ljava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceClassActivityChanged(ZIJI)V
+HPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceClassActivityChanged(ZIJI)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceLinkStateChanged(Ljava/lang/String;Z)V
 PLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onInterfaceRemoved(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onQuotaLimitReached(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onQuotaLimitReached(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;->onRouteChanged(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/NetworkManagementService$SystemServices;-><init>()V
 HSPLcom/android/server/NetworkManagementService$SystemServices;->getNetd()Landroid/net/INetd;
 HSPLcom/android/server/NetworkManagementService$SystemServices;->getService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLcom/android/server/NetworkManagementService$SystemServices;->registerLocalService(Lcom/android/server/NetworkManagementInternal;)V
+HSPLcom/android/server/NetworkManagementService;-><clinit>()V
 HSPLcom/android/server/NetworkManagementService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkManagementService$SystemServices;)V
-HSPLcom/android/server/NetworkManagementService;->addIdleTimer(Ljava/lang/String;II)V
-HSPLcom/android/server/NetworkManagementService;->addInterfaceToNetwork(Ljava/lang/String;I)V
-HSPLcom/android/server/NetworkManagementService;->addRoute(ILandroid/net/RouteInfo;)V
+HSPLcom/android/server/NetworkManagementService;->access$1000(Lcom/android/server/NetworkManagementService;Ljava/lang/String;J[Ljava/lang/String;)V
+PLcom/android/server/NetworkManagementService;->access$1100(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->access$1200(Lcom/android/server/NetworkManagementService;IZJIZ)V
+HSPLcom/android/server/NetworkManagementService;->access$1300(Lcom/android/server/NetworkManagementService;)Landroid/net/INetd;
+HSPLcom/android/server/NetworkManagementService;->access$1400(Lcom/android/server/NetworkManagementService;I)Z
+HSPLcom/android/server/NetworkManagementService;->access$200(Lcom/android/server/NetworkManagementService;)Landroid/os/Handler;
+HSPLcom/android/server/NetworkManagementService;->access$300(Lcom/android/server/NetworkManagementService;ZLandroid/net/RouteInfo;)V
+HSPLcom/android/server/NetworkManagementService;->access$400(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Z)V
+PLcom/android/server/NetworkManagementService;->access$600(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V
+HSPLcom/android/server/NetworkManagementService;->access$700(Lcom/android/server/NetworkManagementService;Ljava/lang/String;)V
+HSPLcom/android/server/NetworkManagementService;->access$800(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
+HSPLcom/android/server/NetworkManagementService;->access$900(Lcom/android/server/NetworkManagementService;Ljava/lang/String;Landroid/net/LinkAddress;)V
+HPLcom/android/server/NetworkManagementService;->addIdleTimer(Ljava/lang/String;II)V
+PLcom/android/server/NetworkManagementService;->addInterfaceToNetwork(Ljava/lang/String;I)V
+HPLcom/android/server/NetworkManagementService;->addLegacyRouteForNetId(ILandroid/net/RouteInfo;I)V
+HPLcom/android/server/NetworkManagementService;->addRoute(ILandroid/net/RouteInfo;)V
 PLcom/android/server/NetworkManagementService;->addVpnUidRanges(I[Landroid/net/UidRange;)V
 PLcom/android/server/NetworkManagementService;->allowProtect(I)V
-HSPLcom/android/server/NetworkManagementService;->clearInterfaceAddresses(Ljava/lang/String;)V
-HSPLcom/android/server/NetworkManagementService;->clearPermission([I)V
+PLcom/android/server/NetworkManagementService;->applyUidCleartextNetworkPolicy(II)V
 HSPLcom/android/server/NetworkManagementService;->closeSocketsForFirewallChainLocked(ILjava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService;->connectNativeNetdService()V
 HSPLcom/android/server/NetworkManagementService;->create(Landroid/content/Context;)Lcom/android/server/NetworkManagementService;
 HSPLcom/android/server/NetworkManagementService;->create(Landroid/content/Context;Lcom/android/server/NetworkManagementService$SystemServices;)Lcom/android/server/NetworkManagementService;
-HSPLcom/android/server/NetworkManagementService;->createPhysicalNetwork(II)V
-PLcom/android/server/NetworkManagementService;->createVirtualNetwork(IZ)V
 PLcom/android/server/NetworkManagementService;->denyProtect(I)V
-HSPLcom/android/server/NetworkManagementService;->disableIpv6(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->dumpUidFirewallRule(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseIntArray;)V
+HPLcom/android/server/NetworkManagementService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->dumpUidFirewallRule(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseIntArray;)V
 PLcom/android/server/NetworkManagementService;->dumpUidRuleOnQuotaLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/SparseBooleanArray;)V
-HSPLcom/android/server/NetworkManagementService;->fromStableParcel(Landroid/net/InterfaceConfigurationParcel;)Landroid/net/InterfaceConfiguration;
+HSPLcom/android/server/NetworkManagementService;->enforceSystemUid()V
+PLcom/android/server/NetworkManagementService;->fromStableParcel(Landroid/net/InterfaceConfigurationParcel;)Landroid/net/InterfaceConfiguration;
 HSPLcom/android/server/NetworkManagementService;->getBatteryStats()Lcom/android/internal/app/IBatteryStats;
 HSPLcom/android/server/NetworkManagementService;->getFirewallChainName(I)Ljava/lang/String;
 HSPLcom/android/server/NetworkManagementService;->getFirewallChainState(I)Z
-HSPLcom/android/server/NetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;
-HSPLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryDev()Landroid/net/NetworkStats;
-HSPLcom/android/server/NetworkManagementService;->getNetworkStatsSummaryXt()Landroid/net/NetworkStats;
+HSPLcom/android/server/NetworkManagementService;->getFirewallRuleName(II)Ljava/lang/String;
+HSPLcom/android/server/NetworkManagementService;->getFirewallRuleType(II)I
+HSPLcom/android/server/NetworkManagementService;->getFirewallType(I)I
+PLcom/android/server/NetworkManagementService;->getInterfaceConfig(Ljava/lang/String;)Landroid/net/InterfaceConfiguration;
 HSPLcom/android/server/NetworkManagementService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats;
-HSPLcom/android/server/NetworkManagementService;->getNetworkStatsUidDetail(I[Ljava/lang/String;)Landroid/net/NetworkStats;
 HSPLcom/android/server/NetworkManagementService;->getUidFirewallRulesLR(I)Landroid/util/SparseIntArray;
 HSPLcom/android/server/NetworkManagementService;->invokeForAllObservers(Lcom/android/server/NetworkManagementService$NetworkManagementEventCallback;)V
 HSPLcom/android/server/NetworkManagementService;->isBandwidthControlEnabled()Z
-PLcom/android/server/NetworkManagementService;->isNetworkActive()Z
+HPLcom/android/server/NetworkManagementService;->isNetworkActive()Z
 HSPLcom/android/server/NetworkManagementService;->isNetworkRestrictedInternal(I)Z
-HSPLcom/android/server/NetworkManagementService;->lambda$addIdleTimer$12$NetworkManagementService(I)V
+PLcom/android/server/NetworkManagementService;->lambda$addIdleTimer$12$NetworkManagementService(I)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyAddressRemoved$8(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyAddressUpdated$7(Ljava/lang/String;Landroid/net/LinkAddress;Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyInterfaceAdded$2(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/NetworkManagementService;->lambda$notifyInterfaceClassActivity$5(IZJLandroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyInterfaceDnsServerInfo$9(Ljava/lang/String;J[Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyInterfaceLinkStateChanged$1(Ljava/lang/String;ZLandroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->lambda$notifyInterfaceRemoved$3(Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+HPLcom/android/server/NetworkManagementService;->lambda$notifyLimitReached$4(Ljava/lang/String;Ljava/lang/String;Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyRouteChange$10(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
+HSPLcom/android/server/NetworkManagementService;->lambda$notifyRouteChange$11(Landroid/net/RouteInfo;Landroid/net/INetworkManagementEventObserver;)V
 PLcom/android/server/NetworkManagementService;->lambda$removeIdleTimer$13$NetworkManagementService(Lcom/android/server/NetworkManagementService$IdleTimerParams;)V
 HSPLcom/android/server/NetworkManagementService;->listInterfaces()[Ljava/lang/String;
-HSPLcom/android/server/NetworkManagementService;->modifyInterfaceInNetwork(ZILjava/lang/String;)V
-HSPLcom/android/server/NetworkManagementService;->modifyRoute(ZILandroid/net/RouteInfo;)V
-HSPLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IZJIZ)V
+PLcom/android/server/NetworkManagementService;->makeUidRangeParcel(II)Landroid/net/UidRangeParcel;
+HPLcom/android/server/NetworkManagementService;->modifyInterfaceInNetwork(ZILjava/lang/String;)V
+PLcom/android/server/NetworkManagementService;->modifyRoute(ZILandroid/net/RouteInfo;)V
+HSPLcom/android/server/NetworkManagementService;->notifyAddressRemoved(Ljava/lang/String;Landroid/net/LinkAddress;)V
+HSPLcom/android/server/NetworkManagementService;->notifyAddressUpdated(Ljava/lang/String;Landroid/net/LinkAddress;)V
+HSPLcom/android/server/NetworkManagementService;->notifyInterfaceAdded(Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->notifyInterfaceClassActivity(IZJIZ)V
+HSPLcom/android/server/NetworkManagementService;->notifyInterfaceDnsServerInfo(Ljava/lang/String;J[Ljava/lang/String;)V
+HSPLcom/android/server/NetworkManagementService;->notifyInterfaceLinkStateChanged(Ljava/lang/String;Z)V
+HPLcom/android/server/NetworkManagementService;->notifyInterfaceRemoved(Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->notifyLimitReached(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/NetworkManagementService;->notifyRouteChange(ZLandroid/net/RouteInfo;)V
 HSPLcom/android/server/NetworkManagementService;->prepareNativeDaemon()V
 PLcom/android/server/NetworkManagementService;->registerNetworkActivityListener(Landroid/os/INetworkActivityListener;)V
 HSPLcom/android/server/NetworkManagementService;->registerObserver(Landroid/net/INetworkManagementEventObserver;)V
 HSPLcom/android/server/NetworkManagementService;->registerTetheringStatsProvider(Landroid/net/ITetheringStatsProvider;Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->removeIdleTimer(Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->removeIdleTimer(Ljava/lang/String;)V
 PLcom/android/server/NetworkManagementService;->removeInterfaceFromNetwork(Ljava/lang/String;I)V
-HSPLcom/android/server/NetworkManagementService;->removeInterfaceQuota(Ljava/lang/String;)V
-PLcom/android/server/NetworkManagementService;->removeNetwork(I)V
+HPLcom/android/server/NetworkManagementService;->removeInterfaceQuota(Ljava/lang/String;)V
 PLcom/android/server/NetworkManagementService;->removeRoute(ILandroid/net/RouteInfo;)V
-HSPLcom/android/server/NetworkManagementService;->reportNetworkActive()V
+PLcom/android/server/NetworkManagementService;->removeVpnUidRanges(I[Landroid/net/UidRange;)V
+HPLcom/android/server/NetworkManagementService;->reportNetworkActive()V
 HSPLcom/android/server/NetworkManagementService;->setDataSaverModeEnabled(Z)Z
-HSPLcom/android/server/NetworkManagementService;->setDefaultNetId(I)V
-HSPLcom/android/server/NetworkManagementService;->setDnsConfigurationForNetwork(I[Ljava/lang/String;[Ljava/lang/String;[ILjava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/NetworkManagementService;->setDefaultNetId(I)V
 HSPLcom/android/server/NetworkManagementService;->setFirewallChainEnabled(IZ)V
 HSPLcom/android/server/NetworkManagementService;->setFirewallChainState(IZ)V
 HSPLcom/android/server/NetworkManagementService;->setFirewallEnabled(Z)V
@@ -1472,567 +3095,1364 @@
 HSPLcom/android/server/NetworkManagementService;->setFirewallUidRules(I[I[I)V
 HSPLcom/android/server/NetworkManagementService;->setGlobalAlert(J)V
 PLcom/android/server/NetworkManagementService;->setInterfaceConfig(Ljava/lang/String;Landroid/net/InterfaceConfiguration;)V
-HSPLcom/android/server/NetworkManagementService;->setInterfaceIpv6PrivacyExtensions(Ljava/lang/String;Z)V
-HSPLcom/android/server/NetworkManagementService;->setInterfaceQuota(Ljava/lang/String;J)V
-HSPLcom/android/server/NetworkManagementService;->setMtu(Ljava/lang/String;I)V
-PLcom/android/server/NetworkManagementService;->setNetworkPermission(II)V
-HSPLcom/android/server/NetworkManagementService;->setPermission(Ljava/lang/String;[I)V
+HPLcom/android/server/NetworkManagementService;->setInterfaceQuota(Ljava/lang/String;J)V
+PLcom/android/server/NetworkManagementService;->setInterfaceUp(Ljava/lang/String;)V
+HPLcom/android/server/NetworkManagementService;->setMtu(Ljava/lang/String;I)V
+HPLcom/android/server/NetworkManagementService;->setNetworkPermission(II)V
 HSPLcom/android/server/NetworkManagementService;->setUidCleartextNetworkPolicy(II)V
 HSPLcom/android/server/NetworkManagementService;->setUidMeteredNetworkBlacklist(IZ)V
-HSPLcom/android/server/NetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V
+HPLcom/android/server/NetworkManagementService;->setUidMeteredNetworkWhitelist(IZ)V
 HSPLcom/android/server/NetworkManagementService;->setUidOnMeteredNetworkList(IZZ)V
 HSPLcom/android/server/NetworkManagementService;->syncFirewallChainLocked(ILjava/lang/String;)V
 HSPLcom/android/server/NetworkManagementService;->systemReady()V
+PLcom/android/server/NetworkManagementService;->tetherLimitReached(Landroid/net/ITetheringStatsProvider;)V
 PLcom/android/server/NetworkManagementService;->toStableParcel(Landroid/net/InterfaceConfiguration;Ljava/lang/String;)Landroid/net/InterfaceConfigurationParcel;
-HSPLcom/android/server/NetworkManagementService;->unregisterObserver(Landroid/net/INetworkManagementEventObserver;)V
+PLcom/android/server/NetworkManagementService;->toStableParcels([Landroid/net/UidRange;)[Landroid/net/UidRangeParcel;
+PLcom/android/server/NetworkManagementService;->unregisterNetworkActivityListener(Landroid/os/INetworkActivityListener;)V
+HPLcom/android/server/NetworkManagementService;->unregisterObserver(Landroid/net/INetworkManagementEventObserver;)V
 HSPLcom/android/server/NetworkManagementService;->updateFirewallUidRuleLocked(III)Z
-HSPLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/NetworkScoreService$1;-><init>(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/NetworkScoreService$2;-><init>(Lcom/android/server/NetworkScoreService;)V
 HSPLcom/android/server/NetworkScoreService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/NetworkScoreService$4;->getPackages(I)[Ljava/lang/String;
-HSPLcom/android/server/NetworkScoreService$5;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
-HSPLcom/android/server/NetworkScoreService$5;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/NetworkScoreService$6;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
-PLcom/android/server/NetworkScoreService$6;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/NetworkScoreService$3;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Handler;)V
+PLcom/android/server/NetworkScoreService$3;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/NetworkScoreService$4;-><init>(Lcom/android/server/NetworkScoreService;)V
+HSPLcom/android/server/NetworkScoreService$4;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
+HSPLcom/android/server/NetworkScoreService$4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;-><init>(Ljava/util/function/Supplier;)V
 PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List;
+HSPLcom/android/server/NetworkScoreService$DispatchingContentObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/NetworkScoreService$DispatchingContentObserver;->observe(Landroid/net/Uri;I)V
 HSPLcom/android/server/NetworkScoreService$DispatchingContentObserver;->onChange(ZLandroid/net/Uri;)V
-PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
+PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;-><init>(Landroid/content/Context;Ljava/util/List;ILjava/util/function/UnaryOperator;Ljava/util/function/UnaryOperator;)V
+HPLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Landroid/net/INetworkScoreCache;Ljava/lang/Object;)V
 PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->create(Landroid/content/Context;Ljava/util/List;I)Lcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;
 PLcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;->filterScores(Ljava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/NetworkScoreService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/NetworkScoreService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/NetworkScoreService$Lifecycle;->onStart()V
-PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V
+PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;)V
+PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;-><init>(Lcom/android/server/NetworkScoreService;Ljava/lang/String;Lcom/android/server/NetworkScoreService$1;)V
+HPLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->evaluateBinding(Ljava/lang/String;Z)V
 PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
 PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageModified(Ljava/lang/String;)V
 PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
 PLcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
-PLcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;-><init>(Ljava/util/function/Supplier;)V
+HPLcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;-><init>(Ljava/util/function/Supplier;)V
 PLcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;->apply(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/NetworkScoreService$ScanResultsSupplier;-><init>(Landroid/content/Context;)V
 PLcom/android/server/NetworkScoreService$ScanResultsSupplier;->get()Ljava/lang/Object;
 PLcom/android/server/NetworkScoreService$ScanResultsSupplier;->get()Ljava/util/List;
-HSPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->bind(Landroid/content/Context;)V
+PLcom/android/server/NetworkScoreService$ScoringServiceConnection;-><init>(Landroid/net/NetworkScorerAppData;)V
+HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->bind(Landroid/content/Context;)V
 PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData;
-HSPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String;
+PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getAppData()Landroid/net/NetworkScorerAppData;
+HPLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getPackageName()Ljava/lang/String;
 PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider;
 PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/NetworkScoreService$ScoringServiceConnection;->unbind(Landroid/content/Context;)V
+HSPLcom/android/server/NetworkScoreService$ServiceHandler;-><init>(Lcom/android/server/NetworkScoreService;Landroid/os/Looper;)V
 HSPLcom/android/server/NetworkScoreService$ServiceHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/NetworkScoreService$WifiInfoSupplier;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Landroid/net/wifi/WifiInfo;
+PLcom/android/server/NetworkScoreService$WifiInfoSupplier;->get()Ljava/lang/Object;
+HSPLcom/android/server/NetworkScoreService;-><clinit>()V
+HSPLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/NetworkScoreService;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager;Ljava/util/function/Function;Landroid/os/Looper;)V
+HSPLcom/android/server/NetworkScoreService;->access$000()Z
+HSPLcom/android/server/NetworkScoreService;->access$100(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService;->access$200(Lcom/android/server/NetworkScoreService;)Lcom/android/server/NetworkScorerAppManager;
+PLcom/android/server/NetworkScoreService;->access$300(Lcom/android/server/NetworkScoreService;)V
+PLcom/android/server/NetworkScoreService;->access$400(Lcom/android/server/NetworkScoreService;Landroid/net/NetworkScorerAppData;)V
+PLcom/android/server/NetworkScoreService;->access$500(Lcom/android/server/NetworkScoreService;)Landroid/content/Context;
+HSPLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded()V
 HSPLcom/android/server/NetworkScoreService;->bindToScoringServiceIfNeeded(Landroid/net/NetworkScorerAppData;)V
+HSPLcom/android/server/NetworkScoreService;->clearInternal()V
 PLcom/android/server/NetworkScoreService;->clearScores()Z
 PLcom/android/server/NetworkScoreService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/NetworkScoreService;->enforceSystemOnly()V
+HSPLcom/android/server/NetworkScoreService;->enforceSystemOrHasScoreNetworks()V
+PLcom/android/server/NetworkScoreService;->enforceSystemOrIsActiveScorer(I)V
 PLcom/android/server/NetworkScoreService;->getActiveScorer()Landroid/net/NetworkScorerAppData;
 HSPLcom/android/server/NetworkScoreService;->getActiveScorerPackage()Ljava/lang/String;
-PLcom/android/server/NetworkScoreService;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider;
+PLcom/android/server/NetworkScoreService;->getAllValidScorers()Ljava/util/List;
+HPLcom/android/server/NetworkScoreService;->getRecommendationProvider()Landroid/net/INetworkRecommendationProvider;
 HSPLcom/android/server/NetworkScoreService;->getScoreCacheLists()Ljava/util/Collection;
-PLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z
-HSPLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V
+HPLcom/android/server/NetworkScoreService;->isCallerActiveScorer(I)Z
+HSPLcom/android/server/NetworkScoreService;->lambda$new$0$NetworkScoreService(I)[Ljava/lang/String;
+PLcom/android/server/NetworkScoreService;->onUserUnlocked(I)V
+HSPLcom/android/server/NetworkScoreService;->refreshBinding()V
 HSPLcom/android/server/NetworkScoreService;->registerNetworkScoreCache(ILandroid/net/INetworkScoreCache;I)V
 HSPLcom/android/server/NetworkScoreService;->registerPackageMonitorIfNeeded()V
-PLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z
+HSPLcom/android/server/NetworkScoreService;->registerRecommendationSettingsObserver()V
+HPLcom/android/server/NetworkScoreService;->requestScores([Landroid/net/NetworkKey;)Z
 HSPLcom/android/server/NetworkScoreService;->sendCacheUpdateCallback(Ljava/util/function/BiConsumer;Ljava/util/Collection;)V
 HSPLcom/android/server/NetworkScoreService;->systemReady()V
-HSPLcom/android/server/NetworkScoreService;->systemRunning()V
+PLcom/android/server/NetworkScoreService;->systemRunning()V
 HSPLcom/android/server/NetworkScoreService;->unbindFromScoringServiceIfNeeded()V
 PLcom/android/server/NetworkScoreService;->unregisterNetworkScoreCache(ILandroid/net/INetworkScoreCache;)V
-PLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z
+HPLcom/android/server/NetworkScoreService;->updateScores([Landroid/net/ScoredNetwork;)Z
+HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;-><init>()V
 HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getInt(Landroid/content/Context;Ljava/lang/String;I)I
-HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getSecureInt(Landroid/content/Context;Ljava/lang/String;I)I
+HPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getSecureInt(Landroid/content/Context;Ljava/lang/String;I)I
 HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->getString(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putInt(Landroid/content/Context;Ljava/lang/String;I)Z
-HSPLcom/android/server/NetworkScorerAppManager$SettingsFacade;->putString(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/NetworkScorerAppManager;->canAccessLocation(ILjava/lang/String;)Z
-HSPLcom/android/server/NetworkScorerAppManager;->findUseOpenWifiNetworksActivity(Landroid/content/pm/ServiceInfo;)Landroid/content/ComponentName;
+HSPLcom/android/server/NetworkScorerAppManager;-><clinit>()V
+HSPLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/NetworkScorerAppManager;-><init>(Landroid/content/Context;Lcom/android/server/NetworkScorerAppManager$SettingsFacade;)V
+PLcom/android/server/NetworkScorerAppManager;->canAccessLocation(ILjava/lang/String;)Z
+HPLcom/android/server/NetworkScorerAppManager;->findUseOpenWifiNetworksActivity(Landroid/content/pm/ServiceInfo;)Landroid/content/ComponentName;
 HSPLcom/android/server/NetworkScorerAppManager;->getActiveScorer()Landroid/net/NetworkScorerAppData;
 HSPLcom/android/server/NetworkScorerAppManager;->getAllValidScorers()Ljava/util/List;
-HSPLcom/android/server/NetworkScorerAppManager;->getNetworkAvailableNotificationChannelId(Landroid/content/pm/ServiceInfo;)Ljava/lang/String;
+HSPLcom/android/server/NetworkScorerAppManager;->getDefaultPackageSetting()Ljava/lang/String;
+HPLcom/android/server/NetworkScorerAppManager;->getNetworkAvailableNotificationChannelId(Landroid/content/pm/ServiceInfo;)Ljava/lang/String;
+HSPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsEnabledSetting()I
+HSPLcom/android/server/NetworkScorerAppManager;->getNetworkRecommendationsPackage()Ljava/lang/String;
+HPLcom/android/server/NetworkScorerAppManager;->getRecommendationServiceLabel(Landroid/content/pm/ServiceInfo;Landroid/content/pm/PackageManager;)Ljava/lang/String;
 HSPLcom/android/server/NetworkScorerAppManager;->getScorer(Ljava/lang/String;)Landroid/net/NetworkScorerAppData;
+PLcom/android/server/NetworkScorerAppManager;->hasPermissions(ILjava/lang/String;)Z
+HPLcom/android/server/NetworkScorerAppManager;->hasScoreNetworksPermission(Ljava/lang/String;)Z
+PLcom/android/server/NetworkScorerAppManager;->isLocationModeEnabled()Z
 HSPLcom/android/server/NetworkScorerAppManager;->migrateNetworkScorerAppSettingIfNeeded()V
 HSPLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsEnabledSetting(I)V
-HSPLcom/android/server/NetworkScorerAppManager;->setNetworkRecommendationsPackage(Ljava/lang/String;)V
 HSPLcom/android/server/NetworkScorerAppManager;->updateState()V
-PLcom/android/server/NewNetworkTimeUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/NewNetworkTimeUpdateService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/NewNetworkTimeUpdateService$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/NewNetworkTimeUpdateService$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V
-PLcom/android/server/NewNetworkTimeUpdateService$NetworkTimeUpdateCallback;->onLost(Landroid/net/Network;)V
-HSPLcom/android/server/NewNetworkTimeUpdateService$SettingsObserver;->observe(Landroid/content/Context;)V
-HSPLcom/android/server/NewNetworkTimeUpdateService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/NewNetworkTimeUpdateService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/NewNetworkTimeUpdateService;->onPollNetworkTime(I)V
-HSPLcom/android/server/NewNetworkTimeUpdateService;->onPollNetworkTimeUnderWakeLock(I)V
-HSPLcom/android/server/NewNetworkTimeUpdateService;->systemRunning()V
-HSPLcom/android/server/NewNetworkTimeUpdateService;->updateSystemClock(I)V
-PLcom/android/server/NsdService$ClientInfo;-><init>(Lcom/android/server/NsdService;Lcom/android/internal/util/AsyncChannel;Landroid/os/Messenger;)V
+HSPLcom/android/server/NetworkTimeUpdateService$1;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V
+PLcom/android/server/NetworkTimeUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/NetworkTimeUpdateService$AutoTimeSettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/NetworkTimeUpdateService$AutoTimeSettingObserver;->isAutomaticTimeEnabled()Z
+HSPLcom/android/server/NetworkTimeUpdateService$AutoTimeSettingObserver;->observe()V
+PLcom/android/server/NetworkTimeUpdateService$AutoTimeSettingObserver;->onChange(Z)V
+HSPLcom/android/server/NetworkTimeUpdateService$MyHandler;-><init>(Lcom/android/server/NetworkTimeUpdateService;Landroid/os/Looper;)V
+PLcom/android/server/NetworkTimeUpdateService$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;)V
+HSPLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/NetworkTimeUpdateService$1;)V
+PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/NetworkTimeUpdateService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/NetworkTimeUpdateService;->access$100(Lcom/android/server/NetworkTimeUpdateService;)Landroid/os/Handler;
+PLcom/android/server/NetworkTimeUpdateService;->access$200(Lcom/android/server/NetworkTimeUpdateService;I)V
+PLcom/android/server/NetworkTimeUpdateService;->access$300(Lcom/android/server/NetworkTimeUpdateService;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateService;->access$302(Lcom/android/server/NetworkTimeUpdateService;Landroid/net/Network;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/NetworkTimeUpdateService;->onPollNetworkTime(I)V
+HPLcom/android/server/NetworkTimeUpdateService;->onPollNetworkTimeUnderWakeLock(I)V
+HSPLcom/android/server/NetworkTimeUpdateService;->registerForAlarms()V
+PLcom/android/server/NetworkTimeUpdateService;->resetAlarm(J)V
+HSPLcom/android/server/NetworkTimeUpdateService;->systemRunning()V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$1;-><init>(Lcom/android/server/NetworkTimeUpdateServiceImpl;)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$2;-><init>(Lcom/android/server/NetworkTimeUpdateServiceImpl;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$AutoTimeSettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl$AutoTimeSettingObserver;->isAutomaticTimeEnabled()Z
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$AutoTimeSettingObserver;->observe()V
+PLcom/android/server/NetworkTimeUpdateServiceImpl$AutoTimeSettingObserver;->onChange(Z)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$MyHandler;-><init>(Lcom/android/server/NetworkTimeUpdateServiceImpl;Landroid/os/Looper;)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateServiceImpl;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$NetworkTimeUpdateCallback;-><init>(Lcom/android/server/NetworkTimeUpdateServiceImpl;Lcom/android/server/NetworkTimeUpdateServiceImpl$1;)V
+HPLcom/android/server/NetworkTimeUpdateServiceImpl$NetworkTimeUpdateCallback;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl$NetworkTimeUpdateCallback;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$SettingsObserver;-><init>(Landroid/os/Handler;I)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl$SettingsObserver;->observe(Landroid/content/Context;)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$100(Lcom/android/server/NetworkTimeUpdateServiceImpl;)Landroid/os/Handler;
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$200(Lcom/android/server/NetworkTimeUpdateServiceImpl;I)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$300(Lcom/android/server/NetworkTimeUpdateServiceImpl;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$300(Lcom/android/server/NetworkTimeUpdateServiceImpl;I)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$302(Lcom/android/server/NetworkTimeUpdateServiceImpl;Landroid/net/Network;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$400(Lcom/android/server/NetworkTimeUpdateServiceImpl;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->access$402(Lcom/android/server/NetworkTimeUpdateServiceImpl;Landroid/net/Network;)Landroid/net/Network;
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->getNitzAge()J
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->isAutomaticTimeRequested()Z
+HPLcom/android/server/NetworkTimeUpdateServiceImpl;->onPollNetworkTime(I)V
+HPLcom/android/server/NetworkTimeUpdateServiceImpl;->onPollNetworkTimeUnderWakeLock(I)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl;->registerForAlarms()V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl;->registerForTelephonyIntents()V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->resetAlarm(J)V
+HSPLcom/android/server/NetworkTimeUpdateServiceImpl;->systemRunning()V
+PLcom/android/server/NetworkTimeUpdateServiceImpl;->updateSystemClock(I)V
+HPLcom/android/server/NsdService$ClientInfo;-><init>(Lcom/android/server/NsdService;Lcom/android/internal/util/AsyncChannel;Landroid/os/Messenger;)V
+PLcom/android/server/NsdService$ClientInfo;-><init>(Lcom/android/server/NsdService;Lcom/android/internal/util/AsyncChannel;Landroid/os/Messenger;Lcom/android/server/NsdService$1;)V
+PLcom/android/server/NsdService$ClientInfo;->access$1100(Lcom/android/server/NsdService$ClientInfo;)Landroid/util/SparseIntArray;
+PLcom/android/server/NsdService$ClientInfo;->access$1200(Lcom/android/server/NsdService$ClientInfo;)Landroid/util/SparseIntArray;
+PLcom/android/server/NsdService$ClientInfo;->access$2200(Lcom/android/server/NsdService$ClientInfo;)Landroid/net/nsd/NsdServiceInfo;
+PLcom/android/server/NsdService$ClientInfo;->access$2202(Lcom/android/server/NsdService$ClientInfo;Landroid/net/nsd/NsdServiceInfo;)Landroid/net/nsd/NsdServiceInfo;
+PLcom/android/server/NsdService$ClientInfo;->access$2400(Lcom/android/server/NsdService$ClientInfo;I)I
+PLcom/android/server/NsdService$ClientInfo;->access$2500(Lcom/android/server/NsdService$ClientInfo;)Lcom/android/internal/util/AsyncChannel;
+PLcom/android/server/NsdService$ClientInfo;->access$500(Lcom/android/server/NsdService$ClientInfo;)V
 PLcom/android/server/NsdService$ClientInfo;->expungeAllRequests()V
+PLcom/android/server/NsdService$ClientInfo;->getClientId(I)I
 PLcom/android/server/NsdService$ClientInfo;->toString()Ljava/lang/String;
 HSPLcom/android/server/NsdService$DaemonConnection;-><init>(Lcom/android/server/NsdService$NativeCallbackReceiver;)V
 PLcom/android/server/NsdService$DaemonConnection;->execute([Ljava/lang/Object;)Z
 PLcom/android/server/NsdService$DaemonConnection;->start()V
 PLcom/android/server/NsdService$DaemonConnection;->stop()V
+HSPLcom/android/server/NsdService$NativeCallbackReceiver;-><init>(Lcom/android/server/NsdService;)V
 HSPLcom/android/server/NsdService$NativeCallbackReceiver;->awaitConnection()V
+PLcom/android/server/NsdService$NativeCallbackReceiver;->onCheckHoldWakeLock(I)Z
 HSPLcom/android/server/NsdService$NativeCallbackReceiver;->onDaemonConnected()V
+PLcom/android/server/NsdService$NativeCallbackReceiver;->onEvent(ILjava/lang/String;[Ljava/lang/String;)Z
+PLcom/android/server/NsdService$NativeEvent;-><init>(Lcom/android/server/NsdService;ILjava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/NsdService$NativeResponseCode;-><clinit>()V
+PLcom/android/server/NsdService$NativeResponseCode;->nameOf(I)Ljava/lang/String;
+HSPLcom/android/server/NsdService$NsdSettings$1;-><init>(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/NsdService$NsdSettings$1;->isEnabled()Z
 HSPLcom/android/server/NsdService$NsdSettings$1;->registerContentObserver(Landroid/net/Uri;Landroid/database/ContentObserver;)V
-PLcom/android/server/NsdService$NsdStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/NsdService$NsdSettings;->makeDefault(Landroid/content/Context;)Lcom/android/server/NsdService$NsdSettings;
+HSPLcom/android/server/NsdService$NsdStateMachine$1;-><init>(Lcom/android/server/NsdService$NsdStateMachine;Landroid/os/Handler;)V
+HSPLcom/android/server/NsdService$NsdStateMachine$DefaultState;-><init>(Lcom/android/server/NsdService$NsdStateMachine;)V
+HPLcom/android/server/NsdService$NsdStateMachine$DefaultState;->processMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/NsdService$NsdStateMachine$DisabledState;-><init>(Lcom/android/server/NsdService$NsdStateMachine;)V
+HSPLcom/android/server/NsdService$NsdStateMachine$EnabledState;-><init>(Lcom/android/server/NsdService$NsdStateMachine;)V
 HSPLcom/android/server/NsdService$NsdStateMachine$EnabledState;->enter()V
+HPLcom/android/server/NsdService$NsdStateMachine$EnabledState;->handleNativeEvent(ILjava/lang/String;[Ljava/lang/String;)Z
 PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->processMessage(Landroid/os/Message;)Z
+PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->removeRequestMap(IILcom/android/server/NsdService$ClientInfo;)V
 PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->requestLimitReached(Lcom/android/server/NsdService$ClientInfo;)Z
+PLcom/android/server/NsdService$NsdStateMachine$EnabledState;->storeRequestMap(IILcom/android/server/NsdService$ClientInfo;I)V
 HSPLcom/android/server/NsdService$NsdStateMachine;-><init>(Lcom/android/server/NsdService;Ljava/lang/String;Landroid/os/Handler;)V
 PLcom/android/server/NsdService$NsdStateMachine;->getWhatToString(I)Ljava/lang/String;
+HSPLcom/android/server/NsdService$NsdStateMachine;->registerForNsdSetting()V
 HSPLcom/android/server/NsdService;-><init>(Landroid/content/Context;Lcom/android/server/NsdService$NsdSettings;Landroid/os/Handler;Lcom/android/server/NsdService$DaemonConnectionSupplier;)V
+HSPLcom/android/server/NsdService;->access$000(Lcom/android/server/NsdService;)Z
+PLcom/android/server/NsdService;->access$1300(Lcom/android/server/NsdService;)Landroid/util/SparseArray;
+PLcom/android/server/NsdService;->access$1500(Lcom/android/server/NsdService;)I
+PLcom/android/server/NsdService;->access$1600(Lcom/android/server/NsdService;ILjava/lang/String;)Z
+PLcom/android/server/NsdService;->access$1700(Lcom/android/server/NsdService;Landroid/os/Message;ILjava/lang/Object;)V
+PLcom/android/server/NsdService;->access$1800(Lcom/android/server/NsdService;I)Z
+PLcom/android/server/NsdService;->access$1900(Lcom/android/server/NsdService;Landroid/os/Message;I)V
+HSPLcom/android/server/NsdService;->access$200(Lcom/android/server/NsdService;)Lcom/android/server/NsdService$NsdSettings;
+PLcom/android/server/NsdService;->access$2300(Lcom/android/server/NsdService;ILandroid/net/nsd/NsdServiceInfo;)Z
+PLcom/android/server/NsdService;->access$2600(Lcom/android/server/NsdService;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/NsdService;->access$2700(Lcom/android/server/NsdService;I)Z
+PLcom/android/server/NsdService;->access$2800(Lcom/android/server/NsdService;ILjava/lang/String;)Z
+PLcom/android/server/NsdService;->access$2900(Lcom/android/server/NsdService;I)Z
+PLcom/android/server/NsdService;->access$3000(Lcom/android/server/NsdService;)Lcom/android/server/NsdService$NsdStateMachine;
+HSPLcom/android/server/NsdService;->access$400(Lcom/android/server/NsdService;)Ljava/util/HashMap;
+PLcom/android/server/NsdService;->access$600(Lcom/android/server/NsdService;)Lcom/android/server/NsdService$DaemonConnection;
+PLcom/android/server/NsdService;->access$700(Lcom/android/server/NsdService;)Landroid/content/Context;
+HSPLcom/android/server/NsdService;->access$900(Lcom/android/server/NsdService;Z)V
 HSPLcom/android/server/NsdService;->create(Landroid/content/Context;)Lcom/android/server/NsdService;
+PLcom/android/server/NsdService;->discoverServices(ILjava/lang/String;)Z
 PLcom/android/server/NsdService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/NsdService;->getAddrInfo(ILjava/lang/String;)Z
 PLcom/android/server/NsdService;->getMessenger()Landroid/os/Messenger;
+PLcom/android/server/NsdService;->getUniqueId()I
 HSPLcom/android/server/NsdService;->isNsdEnabled()Z
-PLcom/android/server/PackageWatchdog$ObserverInternal;->onPackageFailure(Ljava/lang/String;)Z
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/PackageWatchdog$ObserverInternal;
-PLcom/android/server/PackageWatchdog$ObserverInternal;->updateMonitoringDurations(J)Ljava/util/List;
-HSPLcom/android/server/PackageWatchdog$ObserverInternal;->updatePackages(Ljava/util/List;)V
+PLcom/android/server/NsdService;->obtainMessage(Landroid/os/Message;)Landroid/os/Message;
+PLcom/android/server/NsdService;->replyToMessage(Landroid/os/Message;I)V
+PLcom/android/server/NsdService;->replyToMessage(Landroid/os/Message;ILjava/lang/Object;)V
+PLcom/android/server/NsdService;->resolveService(ILandroid/net/nsd/NsdServiceInfo;)Z
+HSPLcom/android/server/NsdService;->sendNsdStateChangeBroadcast(Z)V
+PLcom/android/server/NsdService;->stopGetAddrInfo(I)Z
+PLcom/android/server/NsdService;->stopResolveService(I)Z
+PLcom/android/server/NsdService;->stopServiceDiscovery(I)Z
+HPLcom/android/server/NsdService;->unescape(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/PackageWatchdog$BootThreshold;-><init>(IJ)V
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->getCount()I
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->getStart()J
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->incrementAndTest()Z
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->setCount(I)V
+HSPLcom/android/server/PackageWatchdog$BootThreshold;->setStart(J)V
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;-><init>(Lcom/android/server/PackageWatchdog;Landroid/content/pm/VersionedPackage;JJZ)V
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;-><init>(Lcom/android/server/PackageWatchdog;Landroid/content/pm/VersionedPackage;JJZLcom/android/server/PackageWatchdog$1;)V
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->access$000(Lcom/android/server/PackageWatchdog$MonitoredPackage;)Ljava/lang/String;
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->access$300(Lcom/android/server/PackageWatchdog$MonitoredPackage;)Landroid/util/LongArrayQueue;
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->access$400(Lcom/android/server/PackageWatchdog$MonitoredPackage;)J
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->access$500(Lcom/android/server/PackageWatchdog$MonitoredPackage;)J
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->access$600(Lcom/android/server/PackageWatchdog$MonitoredPackage;)I
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->access$700(Lcom/android/server/PackageWatchdog$MonitoredPackage;I)Ljava/lang/String;
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->getHealthCheckStateLocked()I
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->getName()Ljava/lang/String;
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->getShortestScheduleDurationMsLocked()J
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->handleElapsedTimeLocked(J)I
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->isExpiredLocked()Z
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->isPendingHealthChecksLocked()Z
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->onFailureLocked()Z
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->setHealthCheckActiveLocked(J)I
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->toPositive(J)J
+PLcom/android/server/PackageWatchdog$MonitoredPackage;->toString(I)Ljava/lang/String;
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->tryPassHealthCheckLocked()I
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->updateHealthCheckStateLocked()I
+HPLcom/android/server/PackageWatchdog$MonitoredPackage;->writeLocked(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;-><init>(Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/PackageWatchdog$ObserverInternal;->access$100(Lcom/android/server/PackageWatchdog$ObserverInternal;J)Ljava/util/Set;
+HPLcom/android/server/PackageWatchdog$ObserverInternal;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/PackageWatchdog$ObserverInternal;->onPackageFailureLocked(Ljava/lang/String;)Z
+HPLcom/android/server/PackageWatchdog$ObserverInternal;->prunePackagesLocked(J)Ljava/util/Set;
+HSPLcom/android/server/PackageWatchdog$ObserverInternal;->read(Lorg/xmlpull/v1/XmlPullParser;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(Lorg/xmlpull/v1/XmlSerializer;)Z
+PLcom/android/server/PackageWatchdog$PackageHealthObserver;->isPersistent()Z
+HSPLcom/android/server/PackageWatchdog;-><clinit>()V
 HSPLcom/android/server/PackageWatchdog;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/PackageWatchdog;->getEarliestPackageExpiryLocked()J
+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
+PLcom/android/server/PackageWatchdog;->access$1000(Lcom/android/server/PackageWatchdog;)I
+PLcom/android/server/PackageWatchdog;->access$1100(Lcom/android/server/PackageWatchdog;)I
+PLcom/android/server/PackageWatchdog;->access$200()Lcom/android/server/PackageWatchdog;
+PLcom/android/server/PackageWatchdog;->access$900(Lcom/android/server/PackageWatchdog;)Lcom/android/server/PackageWatchdog$SystemClock;
+PLcom/android/server/PackageWatchdog;->checkAndMitigateNativeCrashes()V
+PLcom/android/server/PackageWatchdog;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/PackageWatchdog;->getInstance(Landroid/content/Context;)Lcom/android/server/PackageWatchdog;
-PLcom/android/server/PackageWatchdog;->lambda$onExplicitHealthCheckFailed$1$PackageWatchdog(Lcom/android/server/PackageWatchdog$ObserverInternal;Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog;->lambda$onPackageFailure$0$PackageWatchdog(Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog;->getNextStateSyncMillisLocked()J
+HSPLcom/android/server/PackageWatchdog;->getPackagesPendingHealthChecksLocked()Ljava/util/Set;
+HSPLcom/android/server/PackageWatchdog;->getVersionedPackage(Ljava/lang/String;)Landroid/content/pm/VersionedPackage;
+HSPLcom/android/server/PackageWatchdog;->lambda$CQuOnXthwwBaxcS5WoAlJJAz8Tk(Lcom/android/server/PackageWatchdog;)V
+HSPLcom/android/server/PackageWatchdog;->lambda$Q0WI2EJpRFO1jF_7_YDaj1eGHas(Lcom/android/server/PackageWatchdog;)Z
+PLcom/android/server/PackageWatchdog;->lambda$checkAndMitigateNativeCrashes$4$PackageWatchdog()V
+HPLcom/android/server/PackageWatchdog;->lambda$onPackageFailure$3$PackageWatchdog(ILjava/util/List;)V
+PLcom/android/server/PackageWatchdog;->lambda$onPackagesReady$0$PackageWatchdog(Ljava/lang/String;)V
+HSPLcom/android/server/PackageWatchdog;->lambda$onPackagesReady$1$PackageWatchdog(Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog;->lambda$onPackagesReady$2$PackageWatchdog()V
+PLcom/android/server/PackageWatchdog;->lambda$scheduleCheckAndMitigateNativeCrashes$5$PackageWatchdog()V
+PLcom/android/server/PackageWatchdog;->lambda$setPropertyChangedListenerLocked$7$PackageWatchdog(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/PackageWatchdog;->lambda$vRKcIrucEj03dz6ypRVINZtns1s(Lcom/android/server/PackageWatchdog;)V
 HSPLcom/android/server/PackageWatchdog;->loadFromFile()V
-HSPLcom/android/server/PackageWatchdog;->onPackageFailure(Ljava/util/List;)V
-HSPLcom/android/server/PackageWatchdog;->pruneObservers(J)V
+HSPLcom/android/server/PackageWatchdog;->newMonitoredPackage(Ljava/lang/String;JJZ)Lcom/android/server/PackageWatchdog$MonitoredPackage;
+PLcom/android/server/PackageWatchdog;->newMonitoredPackage(Ljava/lang/String;JZ)Lcom/android/server/PackageWatchdog$MonitoredPackage;
+HSPLcom/android/server/PackageWatchdog;->noteBoot()V
+HPLcom/android/server/PackageWatchdog;->onHealthCheckPassed(Ljava/lang/String;)V
+PLcom/android/server/PackageWatchdog;->onPackageFailure(Ljava/util/List;I)V
+HSPLcom/android/server/PackageWatchdog;->onPackagesReady()V
+HSPLcom/android/server/PackageWatchdog;->onSupportedPackages(Ljava/util/List;)V
+HSPLcom/android/server/PackageWatchdog;->pruneObserversLocked()V
+HSPLcom/android/server/PackageWatchdog;->registerConnectivityModuleHealthListener()V
 HSPLcom/android/server/PackageWatchdog;->registerHealthObserver(Lcom/android/server/PackageWatchdog$PackageHealthObserver;)V
-HSPLcom/android/server/PackageWatchdog;->rescheduleCleanup()V
-PLcom/android/server/PackageWatchdog;->saveToFile()Z
-PLcom/android/server/PersistentDataBlockService$1;->getFlashLockState()I
+HSPLcom/android/server/PackageWatchdog;->saveToFile()Z
+HSPLcom/android/server/PackageWatchdog;->saveToFileAsync()V
+PLcom/android/server/PackageWatchdog;->scheduleCheckAndMitigateNativeCrashes()V
+HSPLcom/android/server/PackageWatchdog;->scheduleNextSyncStateLocked()V
+HSPLcom/android/server/PackageWatchdog;->setExplicitHealthCheckEnabled(Z)V
+HSPLcom/android/server/PackageWatchdog;->setPropertyChangedListenerLocked()V
+HPLcom/android/server/PackageWatchdog;->startObservingHealth(Lcom/android/server/PackageWatchdog$PackageHealthObserver;Ljava/util/List;J)V
+HSPLcom/android/server/PackageWatchdog;->syncRequests()V
+HSPLcom/android/server/PackageWatchdog;->syncRequestsAsync()V
+HSPLcom/android/server/PackageWatchdog;->syncState(Ljava/lang/String;)V
+PLcom/android/server/PackageWatchdog;->syncStateWithScheduledReason()V
+HSPLcom/android/server/PackageWatchdog;->updateConfigs()V
+PLcom/android/server/PackageWatchdog;->writeNow()V
+HPLcom/android/server/PendingIntentUtils;->createDontSendToRestrictedAppsBundle(Landroid/os/Bundle;)Landroid/os/Bundle;
+HSPLcom/android/server/PersistentDataBlockService$1;-><init>(Lcom/android/server/PersistentDataBlockService;)V
+HPLcom/android/server/PersistentDataBlockService$1;->getFlashLockState()I
 PLcom/android/server/PersistentDataBlockService$1;->getMaximumDataBlockSize()J
-PLcom/android/server/PersistentDataBlockService$1;->read()[B
-PLcom/android/server/PersistentDataBlockService$1;->write([B)I
+HPLcom/android/server/PersistentDataBlockService$1;->read()[B
+HPLcom/android/server/PersistentDataBlockService$1;->write([B)I
+HSPLcom/android/server/PersistentDataBlockService$2;-><init>(Lcom/android/server/PersistentDataBlockService;)V
+PLcom/android/server/PersistentDataBlockService$2;->forceOemUnlockEnabled(Z)V
 HSPLcom/android/server/PersistentDataBlockService$2;->getTestHarnessModeData()[B
 HSPLcom/android/server/PersistentDataBlockService$2;->readInternal(JI)[B
+PLcom/android/server/PersistentDataBlockService$2;->setFrpCredentialHandle([B)V
+PLcom/android/server/PersistentDataBlockService$2;->writeDataBuffer(JLjava/nio/ByteBuffer;)V
+PLcom/android/server/PersistentDataBlockService$2;->writeInternal([BJI)V
+HSPLcom/android/server/PersistentDataBlockService;-><clinit>()V
 HSPLcom/android/server/PersistentDataBlockService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/PersistentDataBlockService;->access$000(Lcom/android/server/PersistentDataBlockService;I)V
+PLcom/android/server/PersistentDataBlockService;->access$100(Lcom/android/server/PersistentDataBlockService;)J
+PLcom/android/server/PersistentDataBlockService;->access$1300(Lcom/android/server/PersistentDataBlockService;Z)V
+PLcom/android/server/PersistentDataBlockService;->access$1400(Lcom/android/server/PersistentDataBlockService;)V
+PLcom/android/server/PersistentDataBlockService;->access$1800(Lcom/android/server/PersistentDataBlockService;)J
+HSPLcom/android/server/PersistentDataBlockService;->access$1900(Lcom/android/server/PersistentDataBlockService;)J
+HSPLcom/android/server/PersistentDataBlockService;->access$200(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/String;
+HSPLcom/android/server/PersistentDataBlockService;->access$400(Lcom/android/server/PersistentDataBlockService;)Ljava/lang/Object;
+PLcom/android/server/PersistentDataBlockService;->access$500(Lcom/android/server/PersistentDataBlockService;)Z
+PLcom/android/server/PersistentDataBlockService;->access$600(Lcom/android/server/PersistentDataBlockService;)Z
+HSPLcom/android/server/PersistentDataBlockService;->access$700(Lcom/android/server/PersistentDataBlockService;)Z
+PLcom/android/server/PersistentDataBlockService;->access$800(Lcom/android/server/PersistentDataBlockService;Ljava/io/DataInputStream;)I
 HSPLcom/android/server/PersistentDataBlockService;->computeAndWriteDigestLocked()Z
 HSPLcom/android/server/PersistentDataBlockService;->computeDigestLocked([B)[B
+PLcom/android/server/PersistentDataBlockService;->doGetMaximumDataBlockSize()J
 HSPLcom/android/server/PersistentDataBlockService;->doGetOemUnlockEnabled()Z
 HSPLcom/android/server/PersistentDataBlockService;->doSetOemUnlockEnabledLocked(Z)V
 HSPLcom/android/server/PersistentDataBlockService;->enforceChecksumValidity()Z
+HPLcom/android/server/PersistentDataBlockService;->enforceOemUnlockReadPermission()V
 PLcom/android/server/PersistentDataBlockService;->enforceUid(I)V
 HSPLcom/android/server/PersistentDataBlockService;->formatIfOemUnlockEnabled()V
 HSPLcom/android/server/PersistentDataBlockService;->formatPartitionLocked(Z)V
 HSPLcom/android/server/PersistentDataBlockService;->getAllowedUid(I)I
 HSPLcom/android/server/PersistentDataBlockService;->getBlockDeviceSize()J
+HSPLcom/android/server/PersistentDataBlockService;->getFrpCredentialDataOffset()J
+HSPLcom/android/server/PersistentDataBlockService;->getTestHarnessModeDataOffset()J
+PLcom/android/server/PersistentDataBlockService;->getTotalDataSizeLocked(Ljava/io/DataInputStream;)I
 HSPLcom/android/server/PersistentDataBlockService;->lambda$onStart$0$PersistentDataBlockService()V
 HSPLcom/android/server/PersistentDataBlockService;->onBootPhase(I)V
 HSPLcom/android/server/PersistentDataBlockService;->onStart()V
+HSPLcom/android/server/PinnerService$1;-><init>(Lcom/android/server/PinnerService;)V
 PLcom/android/server/PinnerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/PinnerService$2;-><init>(Lcom/android/server/PinnerService;Landroid/os/Handler;Landroid/net/Uri;)V
+PLcom/android/server/PinnerService$2;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/PinnerService$3;-><init>(Lcom/android/server/PinnerService;)V
+HSPLcom/android/server/PinnerService$3;->lambda$onUidActive$1(Ljava/lang/Object;I)V
+HSPLcom/android/server/PinnerService$3;->lambda$onUidGone$0(Ljava/lang/Object;I)V
 HSPLcom/android/server/PinnerService$3;->onUidActive(I)V
 HSPLcom/android/server/PinnerService$3;->onUidGone(IZ)V
+HSPLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;)V
+HSPLcom/android/server/PinnerService$BinderService;-><init>(Lcom/android/server/PinnerService;Lcom/android/server/PinnerService$1;)V
 PLcom/android/server/PinnerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/PinnerService$PinRange;-><init>()V
+HSPLcom/android/server/PinnerService$PinRangeSource;-><init>()V
+HSPLcom/android/server/PinnerService$PinRangeSource;-><init>(Lcom/android/server/PinnerService$1;)V
+HSPLcom/android/server/PinnerService$PinRangeSourceStatic;-><init>(II)V
 HSPLcom/android/server/PinnerService$PinRangeSourceStatic;->read(Lcom/android/server/PinnerService$PinRange;)Z
+HSPLcom/android/server/PinnerService$PinRangeSourceStream;-><init>(Ljava/io/InputStream;)V
 HSPLcom/android/server/PinnerService$PinRangeSourceStream;->read(Lcom/android/server/PinnerService$PinRange;)Z
+HSPLcom/android/server/PinnerService$PinnedApp;-><init>(Lcom/android/server/PinnerService;Landroid/content/pm/ApplicationInfo;)V
+HSPLcom/android/server/PinnerService$PinnedApp;-><init>(Lcom/android/server/PinnerService;Landroid/content/pm/ApplicationInfo;Lcom/android/server/PinnerService$1;)V
+HSPLcom/android/server/PinnerService$PinnedFile;-><init>(JILjava/lang/String;I)V
+HSPLcom/android/server/PinnerService$PinnedFile;->close()V
 HSPLcom/android/server/PinnerService$PinnedFile;->finalize()V
+HSPLcom/android/server/PinnerService$PinnerHandler;-><init>(Lcom/android/server/PinnerService;Landroid/os/Looper;)V
 HSPLcom/android/server/PinnerService$PinnerHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/PinnerService;-><clinit>()V
 HSPLcom/android/server/PinnerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/PinnerService;->access$100(Lcom/android/server/PinnerService;IIZ)V
+PLcom/android/server/PinnerService;->access$1000(Lcom/android/server/PinnerService;I)Ljava/lang/String;
+PLcom/android/server/PinnerService;->access$1100(Lcom/android/server/PinnerService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/PinnerService;->access$1200(JJ)V
+HSPLcom/android/server/PinnerService;->access$1300(Lcom/android/server/PinnerService;)Landroid/app/ActivityManagerInternal;
+HSPLcom/android/server/PinnerService;->access$1400(Lcom/android/server/PinnerService;)V
+HSPLcom/android/server/PinnerService;->access$200(Lcom/android/server/PinnerService;)Lcom/android/server/PinnerService$PinnerHandler;
+HSPLcom/android/server/PinnerService;->access$300(Lcom/android/server/PinnerService;I)V
+HSPLcom/android/server/PinnerService;->access$400(Lcom/android/server/PinnerService;I)V
+PLcom/android/server/PinnerService;->access$700(Lcom/android/server/PinnerService;)Landroid/content/Context;
+PLcom/android/server/PinnerService;->access$800(Lcom/android/server/PinnerService;)Ljava/util/ArrayList;
+PLcom/android/server/PinnerService;->access$900(Lcom/android/server/PinnerService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/PinnerService;->clamp(III)I
 HSPLcom/android/server/PinnerService;->getApplicationInfoForIntent(Landroid/content/Intent;IZ)Landroid/content/pm/ApplicationInfo;
 HSPLcom/android/server/PinnerService;->getCameraInfo(I)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/PinnerService;->getHomeInfo(I)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/PinnerService;->getInfoForKey(II)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/PinnerService;->getNameForKey(I)Ljava/lang/String;
+HSPLcom/android/server/PinnerService;->getSizeLimitForKey(I)I
 HSPLcom/android/server/PinnerService;->getUidForKey(I)I
 HSPLcom/android/server/PinnerService;->handlePinOnStart()V
+HSPLcom/android/server/PinnerService;->handleUidActive(I)V
 HSPLcom/android/server/PinnerService;->handleUidGone(I)V
+HSPLcom/android/server/PinnerService;->isResolverActivity(Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/PinnerService;->lambda$6bekYOn4YXi0x7vYNWO40QyA-s8(Lcom/android/server/PinnerService;IIZ)V
+HSPLcom/android/server/PinnerService;->lambda$GeEX-8XoHeV0LEszxat7jOSlrs4(Lcom/android/server/PinnerService;I)V
 HSPLcom/android/server/PinnerService;->maybeOpenPinMetaInZip(Ljava/util/zip/ZipFile;Ljava/lang/String;)Ljava/io/InputStream;
 HSPLcom/android/server/PinnerService;->maybeOpenZip(Ljava/lang/String;)Ljava/util/zip/ZipFile;
+HSPLcom/android/server/PinnerService;->onBootPhase(I)V
 HSPLcom/android/server/PinnerService;->onStart()V
-HSPLcom/android/server/PinnerService;->onUnlockUser(I)V
+PLcom/android/server/PinnerService;->onUnlockUser(I)V
 HSPLcom/android/server/PinnerService;->pinApp(IIZ)V
 HSPLcom/android/server/PinnerService;->pinApp(ILandroid/content/pm/ApplicationInfo;)V
+HSPLcom/android/server/PinnerService;->pinApps(I)V
 HSPLcom/android/server/PinnerService;->pinFile(Ljava/lang/String;IZ)Lcom/android/server/PinnerService$PinnedFile;
 HSPLcom/android/server/PinnerService;->pinFileRanges(Ljava/lang/String;ILcom/android/server/PinnerService$PinRangeSource;)Lcom/android/server/PinnerService$PinnedFile;
 HSPLcom/android/server/PinnerService;->registerUidListener()V
+HSPLcom/android/server/PinnerService;->registerUserSetupCompleteListener()V
 HSPLcom/android/server/PinnerService;->safeClose(Ljava/io/Closeable;)V
 HSPLcom/android/server/PinnerService;->safeClose(Ljava/io/FileDescriptor;)V
 HSPLcom/android/server/PinnerService;->safeMunmap(JJ)V
+PLcom/android/server/PinnerService;->sendPinAppMessage(IIZ)V
+HSPLcom/android/server/PinnerService;->sendPinAppsMessage(I)V
 HSPLcom/android/server/PinnerService;->unpinApp(I)V
-PLcom/android/server/PinnerService;->update(Landroid/util/ArraySet;Z)V
+HPLcom/android/server/PinnerService;->update(Landroid/util/ArraySet;Z)V
 HSPLcom/android/server/PinnerService;->updateActiveState(IZ)V
+HSPLcom/android/server/PruneInstantAppsJobService;-><clinit>()V
 PLcom/android/server/PruneInstantAppsJobService;-><init>()V
 PLcom/android/server/PruneInstantAppsJobService;->lambda$onStartJob$0$PruneInstantAppsJobService(Landroid/app/job/JobParameters;)V
 PLcom/android/server/PruneInstantAppsJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/PruneInstantAppsJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/PruneInstantAppsJobService;->schedule(Landroid/content/Context;)V
+HSPLcom/android/server/RandomBlock;-><init>()V
 HSPLcom/android/server/RandomBlock;->close(Ljava/io/Closeable;)V
 HSPLcom/android/server/RandomBlock;->fromFile(Ljava/lang/String;)Lcom/android/server/RandomBlock;
 HSPLcom/android/server/RandomBlock;->fromStream(Ljava/io/InputStream;)Lcom/android/server/RandomBlock;
+HSPLcom/android/server/RandomBlock;->toDataOut(Ljava/io/DataOutput;)V
 HSPLcom/android/server/RandomBlock;->toFile(Ljava/lang/String;Z)V
 HSPLcom/android/server/RandomBlock;->truncateIfPossible(Ljava/io/RandomAccessFile;)V
-HSPLcom/android/server/RecoverySystemService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/RecoverySystemService;->onStart()V
-HSPLcom/android/server/RescueParty$AppThreshold;->getStart()J
-HSPLcom/android/server/RescueParty$AppThreshold;->setCount(I)V
-PLcom/android/server/RescueParty$AppThreshold;->setStart(J)V
 HSPLcom/android/server/RescueParty$BootThreshold;-><init>()V
 HSPLcom/android/server/RescueParty$BootThreshold;->getCount()I
 HSPLcom/android/server/RescueParty$BootThreshold;->getStart()J
 HSPLcom/android/server/RescueParty$BootThreshold;->setCount(I)V
 HSPLcom/android/server/RescueParty$BootThreshold;->setStart(J)V
+HSPLcom/android/server/RescueParty$RescuePartyObserver;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->access$000(Lcom/android/server/RescueParty$RescuePartyObserver;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/RescueParty$RescuePartyObserver;->access$100(Lcom/android/server/RescueParty$RescuePartyObserver;Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/RescueParty$RescuePartyObserver;->execute(Landroid/content/pm/VersionedPackage;I)Z
+HPLcom/android/server/RescueParty$RescuePartyObserver;->getCallingPackagesSet(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->getInstance(Landroid/content/Context;)Lcom/android/server/RescueParty$RescuePartyObserver;
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->getName()Ljava/lang/String;
+PLcom/android/server/RescueParty$RescuePartyObserver;->isPersistent()Z
+HPLcom/android/server/RescueParty$RescuePartyObserver;->mayObservePackage(Ljava/lang/String;)Z
+PLcom/android/server/RescueParty$RescuePartyObserver;->onHealthCheckFailed(Landroid/content/pm/VersionedPackage;I)I
+HSPLcom/android/server/RescueParty$RescuePartyObserver;->recordDeviceConfigAccess(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/RescueParty$Threshold;-><init>(IIJ)V
 HSPLcom/android/server/RescueParty$Threshold;->incrementAndTest()Z
+HSPLcom/android/server/RescueParty;-><clinit>()V
+PLcom/android/server/RescueParty;->access$300()I
+PLcom/android/server/RescueParty;->access$400(I)I
+PLcom/android/server/RescueParty;->access$500()Z
 HSPLcom/android/server/RescueParty;->executeRescueLevel(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty;->executeRescueLevel(Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/server/RescueParty;->getElapsedRealtime()J
+PLcom/android/server/RescueParty;->getNextRescueLevel()I
+HSPLcom/android/server/RescueParty;->handleMonitorCallback(Landroid/content/Context;Landroid/os/Bundle;)V
+HSPLcom/android/server/RescueParty;->handleNativeRescuePartyResets()V
 HSPLcom/android/server/RescueParty;->isDisabled()Z
 HSPLcom/android/server/RescueParty;->isUsbActive()Z
-HSPLcom/android/server/RescueParty;->noteAppCrash(Landroid/content/Context;I)V
+HSPLcom/android/server/RescueParty;->lambda$onSettingsProviderPublished$0(Landroid/content/Context;Landroid/os/Bundle;)V
+PLcom/android/server/RescueParty;->mapRescueLevelToUserImpact(I)I
 HSPLcom/android/server/RescueParty;->noteBoot(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty;->onSettingsProviderPublished(Landroid/content/Context;)V
+HSPLcom/android/server/RescueParty;->registerHealthObserver(Landroid/content/Context;)V
+HPLcom/android/server/RescueParty;->startObservingPackages(Landroid/content/Context;Ljava/lang/String;)V
 HSPLcom/android/server/RuntimeService;-><init>(Landroid/content/Context;)V
 PLcom/android/server/RuntimeService;->addDistroVersionDebugInfo(Ljava/lang/String;Ljava/lang/String;Llibcore/util/DebugInfo;)V
+PLcom/android/server/RuntimeService;->addTimeZoneApkDebugInfo(Llibcore/util/DebugInfo;)V
 PLcom/android/server/RuntimeService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/RuntimeService;->hasOption([Ljava/lang/String;Ljava/lang/String;)Z
 PLcom/android/server/RuntimeService;->reportTimeZoneInfo(Llibcore/util/DebugInfo;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/SensorNotificationService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/SensorNotificationService;->onBootPhase(I)V
 PLcom/android/server/SensorNotificationService;->onLocationChanged(Landroid/location/Location;)V
-HSPLcom/android/server/SensorNotificationService;->onProviderDisabled(Ljava/lang/String;)V
+PLcom/android/server/SensorNotificationService;->onProviderDisabled(Ljava/lang/String;)V
 PLcom/android/server/SensorNotificationService;->onProviderEnabled(Ljava/lang/String;)V
 HSPLcom/android/server/SensorNotificationService;->onStart()V
+PLcom/android/server/SensorNotificationService;->useMockedLocation()Z
 HSPLcom/android/server/SensorPrivacyService$DeathRecipient;-><init>(Lcom/android/server/SensorPrivacyService;Landroid/hardware/ISensorPrivacyListener;)V
-HSPLcom/android/server/SensorPrivacyService$DeathRecipient;->binderDied()V
-HSPLcom/android/server/SensorPrivacyService$DeathRecipient;->destroy()V
+PLcom/android/server/SensorPrivacyService$DeathRecipient;->binderDied()V
+PLcom/android/server/SensorPrivacyService$DeathRecipient;->destroy()V
+HSPLcom/android/server/SensorPrivacyService$SensorPrivacyHandler;-><init>(Lcom/android/server/SensorPrivacyService;Landroid/os/Looper;Landroid/content/Context;)V
 HSPLcom/android/server/SensorPrivacyService$SensorPrivacyHandler;->addListener(Landroid/hardware/ISensorPrivacyListener;)V
-HSPLcom/android/server/SensorPrivacyService$SensorPrivacyHandler;->removeListener(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/SensorPrivacyService$SensorPrivacyHandler;->removeListener(Landroid/hardware/ISensorPrivacyListener;)V
 HSPLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;-><init>(Lcom/android/server/SensorPrivacyService;Landroid/content/Context;)V
 HSPLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;->addSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
 HSPLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;->isSensorPrivacyEnabled()Z
 HSPLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;->readPersistedSensorPrivacyEnabledLocked()Z
-HSPLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;->removeSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
+PLcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;->removeSensorPrivacyListener(Landroid/hardware/ISensorPrivacyListener;)V
+HSPLcom/android/server/SensorPrivacyService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SensorPrivacyService;->access$000(Lcom/android/server/SensorPrivacyService;)Lcom/android/server/SensorPrivacyService$SensorPrivacyServiceImpl;
 HSPLcom/android/server/SensorPrivacyService;->onStart()V
 HSPLcom/android/server/SerialService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/ServiceThread;-><init>(Ljava/lang/String;IZ)V
 HSPLcom/android/server/ServiceThread;->run()V
-PLcom/android/server/ServiceWatcher$1;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/server/ServiceWatcher$1;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
-HSPLcom/android/server/ServiceWatcher$1;->onPackageRemoved(Ljava/lang/String;I)V
-PLcom/android/server/ServiceWatcher$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
+HSPLcom/android/server/ServiceWatcher$1;-><init>(Lcom/android/server/ServiceWatcher;)V
+HPLcom/android/server/ServiceWatcher$1;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/ServiceWatcher$1;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
+HPLcom/android/server/ServiceWatcher$1;->onPackageRemoved(Ljava/lang/String;I)V
+HPLcom/android/server/ServiceWatcher$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
+HSPLcom/android/server/ServiceWatcher$2;-><init>(Lcom/android/server/ServiceWatcher;)V
 HSPLcom/android/server/ServiceWatcher$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;-><clinit>()V
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;-><init>(ILandroid/content/ComponentName;I)V
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;-><init>(Landroid/content/pm/ResolveInfo;I)V
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;-><init>(Landroid/content/pm/ResolveInfo;ILcom/android/server/ServiceWatcher$1;)V
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;->compareTo(Lcom/android/server/ServiceWatcher$ServiceInfo;)I
+HSPLcom/android/server/ServiceWatcher$ServiceInfo;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/ServiceWatcher$ServiceInfo;->toString()Ljava/lang/String;
+HSPLcom/android/server/ServiceWatcher;-><clinit>()V
+HSPLcom/android/server/ServiceWatcher;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/ServiceWatcher$BinderRunner;Ljava/lang/Runnable;II)V
 HSPLcom/android/server/ServiceWatcher;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)V
+HPLcom/android/server/ServiceWatcher;->access$000(Lcom/android/server/ServiceWatcher;Ljava/lang/String;)V
+HSPLcom/android/server/ServiceWatcher;->access$000(Lcom/android/server/ServiceWatcher;Z)V
+PLcom/android/server/ServiceWatcher;->access$100(Lcom/android/server/ServiceWatcher;)I
+HSPLcom/android/server/ServiceWatcher;->access$100(Lcom/android/server/ServiceWatcher;I)V
+HSPLcom/android/server/ServiceWatcher;->access$102(Lcom/android/server/ServiceWatcher;I)I
+PLcom/android/server/ServiceWatcher;->access$200(Lcom/android/server/ServiceWatcher;I)V
 HSPLcom/android/server/ServiceWatcher;->bind(Landroid/content/ComponentName;II)V
 HSPLcom/android/server/ServiceWatcher;->bindBestPackage(Z)V
+PLcom/android/server/ServiceWatcher;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/ServiceWatcher;->getBoundService()Lcom/android/server/ServiceWatcher$ServiceInfo;
 HSPLcom/android/server/ServiceWatcher;->getCurrentPackageName()Ljava/lang/String;
+PLcom/android/server/ServiceWatcher;->getLogPrefix()Ljava/lang/String;
 HSPLcom/android/server/ServiceWatcher;->getSignatureSets(Landroid/content/Context;[Ljava/lang/String;)Ljava/util/ArrayList;
+HSPLcom/android/server/ServiceWatcher;->isServiceMissing()Z
 HSPLcom/android/server/ServiceWatcher;->isSignatureMatch([Landroid/content/pm/Signature;Ljava/util/List;)Z
+PLcom/android/server/ServiceWatcher;->lambda$onServiceConnected$1$ServiceWatcher()V
 HSPLcom/android/server/ServiceWatcher;->lambda$onServiceConnected$3$ServiceWatcher(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/ServiceWatcher;->lambda$onServiceDisconnected$4$ServiceWatcher(Landroid/content/ComponentName;)V
+HSPLcom/android/server/ServiceWatcher;->lambda$register$0$ServiceWatcher()V
 HSPLcom/android/server/ServiceWatcher;->lambda$runOnBinder$1$ServiceWatcher(Lcom/android/server/ServiceWatcher$BinderRunner;)V
+PLcom/android/server/ServiceWatcher;->lambda$runOnBinder$2$ServiceWatcher(Lcom/android/server/ServiceWatcher$BinderRunner;)V
 PLcom/android/server/ServiceWatcher;->lambda$runOnBinderBlocking$2$ServiceWatcher(Ljava/lang/Object;Lcom/android/server/ServiceWatcher$BlockingBinderRunner;)Ljava/lang/Object;
+PLcom/android/server/ServiceWatcher;->lambda$runOnBinderBlocking$3$ServiceWatcher(Ljava/lang/Object;Lcom/android/server/ServiceWatcher$BlockingBinderRunner;)Ljava/lang/Object;
 HSPLcom/android/server/ServiceWatcher;->lambda$start$0$ServiceWatcher()V
+HSPLcom/android/server/ServiceWatcher;->onBestServiceChanged(Z)V
 PLcom/android/server/ServiceWatcher;->onBind()V
+HPLcom/android/server/ServiceWatcher;->onBindingDied(Landroid/content/ComponentName;)V
+HPLcom/android/server/ServiceWatcher;->onPackageChanged(Ljava/lang/String;)V
 HSPLcom/android/server/ServiceWatcher;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/ServiceWatcher;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HPLcom/android/server/ServiceWatcher;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/ServiceWatcher;->onUnbind()V
+HSPLcom/android/server/ServiceWatcher;->onUserSwitched(I)V
+PLcom/android/server/ServiceWatcher;->onUserUnlocked(I)V
+HSPLcom/android/server/ServiceWatcher;->rebind(Lcom/android/server/ServiceWatcher$ServiceInfo;)V
+HSPLcom/android/server/ServiceWatcher;->register()Z
+HSPLcom/android/server/ServiceWatcher;->runOnBinder(Lcom/android/server/ServiceWatcher$BinderRunner;)V
 PLcom/android/server/ServiceWatcher;->runOnBinderBlocking(Lcom/android/server/ServiceWatcher$BlockingBinderRunner;Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/ServiceWatcher;->runOnHandlerBlocking(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
+HSPLcom/android/server/ServiceWatcher;->runOnHandler(Ljava/lang/Runnable;)V
+HPLcom/android/server/ServiceWatcher;->runOnHandlerBlocking(Ljava/util/concurrent/Callable;)Ljava/lang/Object;
 HSPLcom/android/server/ServiceWatcher;->start()Z
-HSPLcom/android/server/ServiceWatcher;->toString()Ljava/lang/String;
+PLcom/android/server/ServiceWatcher;->toString()Ljava/lang/String;
 HSPLcom/android/server/ServiceWatcher;->unbind()V
-HSPLcom/android/server/StorageManagerService$4;->onVolumeCreated(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/StorageManagerService$4;->onVolumeDestroyed(Ljava/lang/String;)V
-HSPLcom/android/server/StorageManagerService$4;->onVolumeInternalPathChanged(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/StorageManagerService$4;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/StorageManagerService$4;->onVolumeStateChanged(Ljava/lang/String;I)V
-HSPLcom/android/server/StorageManagerService$8;->onFinished(ILandroid/os/PersistableBundle;)V
-HSPLcom/android/server/StorageManagerService$8;->onStatus(ILandroid/os/PersistableBundle;)V
-PLcom/android/server/StorageManagerService$9;->onFinished(ILandroid/os/PersistableBundle;)V
-PLcom/android/server/StorageManagerService$AppFuseMountScope;->close()V
-PLcom/android/server/StorageManagerService$AppFuseMountScope;->open()Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/StorageManagerService$AppFuseMountScope;->openFile(III)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/StorageManagerService$Callbacks;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/StorageManagerService$Callbacks;->invokeCallback(Landroid/os/storage/IStorageEventListener;ILcom/android/internal/os/SomeArgs;)V
+PLcom/android/server/StorageManagerService$10;-><init>(Lcom/android/server/StorageManagerService;Ljava/lang/Runnable;)V
+HPLcom/android/server/StorageManagerService$10;->onFinished(ILandroid/os/PersistableBundle;)V
+PLcom/android/server/StorageManagerService$11;-><init>(Lcom/android/server/StorageManagerService;Ljava/lang/Runnable;)V
+PLcom/android/server/StorageManagerService$11;->onFinished(ILandroid/os/PersistableBundle;)V
+HSPLcom/android/server/StorageManagerService$13;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$13;->opChanged(IILjava/lang/String;)V
+HSPLcom/android/server/StorageManagerService$1;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/StorageManagerService$2;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Handler;)V
+PLcom/android/server/StorageManagerService$2;->onChange(Z)V
+HSPLcom/android/server/StorageManagerService$3;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Handler;)V
+PLcom/android/server/StorageManagerService$3;->onChange(Z)V
+HSPLcom/android/server/StorageManagerService$4;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$4;->onVolumeCreated(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/StorageManagerService$4;->onVolumeDestroyed(Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$4;->onVolumeInternalPathChanged(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$4;->onVolumePathChanged(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$4;->onVolumeStateChanged(Ljava/lang/String;I)V
+HSPLcom/android/server/StorageManagerService$5;-><init>(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService$6;-><init>(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService$6;->binderDied()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
+HSPLcom/android/server/StorageManagerService$9;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;)V
+HSPLcom/android/server/StorageManagerService$9;->onFinished(ILandroid/os/PersistableBundle;)V
+HSPLcom/android/server/StorageManagerService$9;->onStatus(ILandroid/os/PersistableBundle;)V
+HPLcom/android/server/StorageManagerService$AppFuseMountScope;-><init>(Lcom/android/server/StorageManagerService;II)V
+HPLcom/android/server/StorageManagerService$AppFuseMountScope;->close()V
+HPLcom/android/server/StorageManagerService$AppFuseMountScope;->open()Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/StorageManagerService$AppFuseMountScope;->openFile(III)Landroid/os/ParcelFileDescriptor;
+HSPLcom/android/server/StorageManagerService$Callbacks;-><init>(Landroid/os/Looper;)V
+PLcom/android/server/StorageManagerService$Callbacks;->access$2700(Lcom/android/server/StorageManagerService$Callbacks;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService$Callbacks;->access$3700(Lcom/android/server/StorageManagerService$Callbacks;Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService$Callbacks;->access$3800(Lcom/android/server/StorageManagerService$Callbacks;Landroid/os/storage/VolumeInfo;II)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
 HSPLcom/android/server/StorageManagerService$Callbacks;->register(Landroid/os/storage/IStorageEventListener;)V
+PLcom/android/server/StorageManagerService$Callbacks;->unregister(Landroid/os/storage/IStorageEventListener;)V
 HSPLcom/android/server/StorageManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/StorageManagerService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/StorageManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/StorageManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/StorageManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/StorageManagerService$ObbActionHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;-><init>(Lcom/android/server/StorageManagerService;Lcom/android/server/StorageManagerService$1;)V
 HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->addExternalStoragePolicy(Landroid/os/storage/StorageManagerInternal$ExternalStorageMountPolicy;)V
-HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->destroySandboxForApp(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getExternalStorageMountMode(ILjava/lang/String;)I
-HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->getSandboxId(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->hasExternalStorage(ILjava/lang/String;)Z
-PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onExternalStoragePolicyChanged(ILjava/lang/String;)V
-HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onReset(Landroid/os/IVold;)V
-HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->prepareSandboxForApp(Ljava/lang/String;ILjava/lang/String;I)V
+HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onAppOpsChanged(IILjava/lang/String;I)V
+HSPLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onExternalStoragePolicyChanged(ILjava/lang/String;)V
+PLcom/android/server/StorageManagerService$StorageManagerInternalImpl;->onReset(Landroid/os/IVold;)V
+HSPLcom/android/server/StorageManagerService$StorageManagerServiceHandler;-><init>(Lcom/android/server/StorageManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/StorageManagerService$StorageManagerServiceHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/StorageManagerService;-><clinit>()V
 HSPLcom/android/server/StorageManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I
-PLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
-HSPLcom/android/server/StorageManagerService;->clearPassword()V
-HSPLcom/android/server/StorageManagerService;->commitChanges()V
-HSPLcom/android/server/StorageManagerService;->connect()V
+PLcom/android/server/StorageManagerService;->abortIdleMaint(Ljava/lang/Runnable;)V
+HSPLcom/android/server/StorageManagerService;->access$000(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$100(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$1000(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->access$1100(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$1200(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$1300(Lcom/android/server/StorageManagerService;)J
+HSPLcom/android/server/StorageManagerService;->access$1302(Lcom/android/server/StorageManagerService;J)J
+HSPLcom/android/server/StorageManagerService;->access$1400(Lcom/android/server/StorageManagerService;)Ljava/io/File;
+PLcom/android/server/StorageManagerService;->access$1500(Lcom/android/server/StorageManagerService;)Landroid/os/IVold;
+PLcom/android/server/StorageManagerService;->access$1502(Lcom/android/server/StorageManagerService;Landroid/os/IVold;)Landroid/os/IVold;
+PLcom/android/server/StorageManagerService;->access$1600(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/StorageManagerService;->access$1700(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
+HSPLcom/android/server/StorageManagerService;->access$1900(Lcom/android/server/StorageManagerService;)Landroid/content/Context;
+HSPLcom/android/server/StorageManagerService;->access$200(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->access$2100(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->access$2200(Lcom/android/server/StorageManagerService;I)V
+PLcom/android/server/StorageManagerService;->access$2300(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/StorageManagerService;->access$2400(Lcom/android/server/StorageManagerService;)Landroid/os/Handler;
+PLcom/android/server/StorageManagerService;->access$2500(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->access$2600(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$2800(Lcom/android/server/StorageManagerService;)Ljava/lang/Object;
+PLcom/android/server/StorageManagerService;->access$2900(Lcom/android/server/StorageManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/StorageManagerService;->access$300(Lcom/android/server/StorageManagerService;)V
+PLcom/android/server/StorageManagerService;->access$3300(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->access$3400(Lcom/android/server/StorageManagerService;Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/StorageManagerService;->access$3600(Lcom/android/server/StorageManagerService;)Lcom/android/server/storage/StorageSessionController;
+PLcom/android/server/StorageManagerService;->access$4100(Lcom/android/server/StorageManagerService;)V
+HSPLcom/android/server/StorageManagerService;->access$4100(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
+HSPLcom/android/server/StorageManagerService;->access$4200(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
+HSPLcom/android/server/StorageManagerService;->access$4300(Lcom/android/server/StorageManagerService;Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
+HSPLcom/android/server/StorageManagerService;->access$4300(Lcom/android/server/StorageManagerService;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/StorageManagerService;->access$4400(Lcom/android/server/StorageManagerService;Ljava/lang/String;)Landroid/os/storage/VolumeRecord;
+HSPLcom/android/server/StorageManagerService;->access$4400(Lcom/android/server/StorageManagerService;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/StorageManagerService;->access$4500(Lcom/android/server/StorageManagerService;Ljava/lang/String;)Landroid/os/storage/VolumeRecord;
+HSPLcom/android/server/StorageManagerService;->access$4900()Z
+PLcom/android/server/StorageManagerService;->access$500(Lcom/android/server/StorageManagerService;I)V
+HSPLcom/android/server/StorageManagerService;->access$5000()Z
+HSPLcom/android/server/StorageManagerService;->access$5000(Lcom/android/server/StorageManagerService;ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->access$5100(Lcom/android/server/StorageManagerService;II)V
+HSPLcom/android/server/StorageManagerService;->access$5100(Lcom/android/server/StorageManagerService;ILjava/lang/String;)I
+HSPLcom/android/server/StorageManagerService;->access$5200(Lcom/android/server/StorageManagerService;II)V
+PLcom/android/server/StorageManagerService;->access$600(Lcom/android/server/StorageManagerService;I)V
+PLcom/android/server/StorageManagerService;->access$6000(Lcom/android/server/StorageManagerService;)Z
+PLcom/android/server/StorageManagerService;->access$700(Lcom/android/server/StorageManagerService;I)V
+HSPLcom/android/server/StorageManagerService;->addInternalVolumeLocked()V
+PLcom/android/server/StorageManagerService;->addUserKeyAuth(II[B[B)V
+HPLcom/android/server/StorageManagerService;->adjustAllocateFlags(IILjava/lang/String;)I
+HPLcom/android/server/StorageManagerService;->allocateBytes(Ljava/lang/String;JILjava/lang/String;)V
+PLcom/android/server/StorageManagerService;->bootCompleted()V
+PLcom/android/server/StorageManagerService;->changeEncryptionPassword(ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->clearPassword()V
+PLcom/android/server/StorageManagerService;->clearUserKeyAuth(II[B[B)V
+PLcom/android/server/StorageManagerService;->commitChanges()V
+PLcom/android/server/StorageManagerService;->completeUnlockUser(I)V
+HSPLcom/android/server/StorageManagerService;->connectStoraged()V
+HSPLcom/android/server/StorageManagerService;->connectVold()V
 HSPLcom/android/server/StorageManagerService;->copyLocaleFromMountService()V
+PLcom/android/server/StorageManagerService;->createUserKey(IIZ)V
+PLcom/android/server/StorageManagerService;->destroyUserKey(I)V
+PLcom/android/server/StorageManagerService;->destroyUserStorage(Ljava/lang/String;II)V
 HSPLcom/android/server/StorageManagerService;->dispatchOnFinished(Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
 HSPLcom/android/server/StorageManagerService;->dispatchOnStatus(Landroid/os/IVoldTaskListener;ILandroid/os/PersistableBundle;)V
-PLcom/android/server/StorageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/StorageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/StorageManagerService;->encodeBytes([B)Ljava/lang/String;
+HSPLcom/android/server/StorageManagerService;->enforcePermission(Ljava/lang/String;)V
 HSPLcom/android/server/StorageManagerService;->findRecordForPath(Ljava/lang/String;)Landroid/os/storage/VolumeRecord;
+PLcom/android/server/StorageManagerService;->fixateNewestUserKeyAuth(I)V
 HSPLcom/android/server/StorageManagerService;->fstrim(ILandroid/os/IVoldTaskListener;)V
-PLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J
+HPLcom/android/server/StorageManagerService;->getAllocatableBytes(Ljava/lang/String;ILjava/lang/String;)J
 PLcom/android/server/StorageManagerService;->getCacheQuotaBytes(Ljava/lang/String;I)J
 PLcom/android/server/StorageManagerService;->getCacheSizeBytes(Ljava/lang/String;I)J
-HSPLcom/android/server/StorageManagerService;->getDisks()[Landroid/os/storage/DiskInfo;
+HSPLcom/android/server/StorageManagerService;->getDefaultPrimaryStorageUuid()Ljava/lang/String;
+PLcom/android/server/StorageManagerService;->getDisks()[Landroid/os/storage/DiskInfo;
 HSPLcom/android/server/StorageManagerService;->getField(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/StorageManagerService;->getMountMode(ILjava/lang/String;)I
-HSPLcom/android/server/StorageManagerService;->getPassword()Ljava/lang/String;
+HSPLcom/android/server/StorageManagerService;->getMountModeInternal(ILjava/lang/String;)I
+PLcom/android/server/StorageManagerService;->getPassword()Ljava/lang/String;
 PLcom/android/server/StorageManagerService;->getPrimaryStorageUuid()Ljava/lang/String;
 HSPLcom/android/server/StorageManagerService;->getVolumeList(ILjava/lang/String;I)[Landroid/os/storage/StorageVolume;
-HSPLcom/android/server/StorageManagerService;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord;
+PLcom/android/server/StorageManagerService;->getVolumeRecords(I)[Landroid/os/storage/VolumeRecord;
 HSPLcom/android/server/StorageManagerService;->getVolumes(I)[Landroid/os/storage/VolumeInfo;
+PLcom/android/server/StorageManagerService;->handleBootCompleted()V
+HSPLcom/android/server/StorageManagerService;->handleDaemonConnected()V
 HSPLcom/android/server/StorageManagerService;->handleSystemReady()V
 HSPLcom/android/server/StorageManagerService;->initIfBootedAndConnected()V
-HSPLcom/android/server/StorageManagerService;->isBroadcastWorthy(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/StorageManagerService;->isBroadcastWorthy(Landroid/os/storage/VolumeInfo;)Z
 PLcom/android/server/StorageManagerService;->isConvertibleToFBE()Z
-HSPLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/StorageManagerService;->isMountDisallowed(Landroid/os/storage/VolumeInfo;)Z
+HSPLcom/android/server/StorageManagerService;->isSystemUnlocked(I)Z
 HSPLcom/android/server/StorageManagerService;->isUserKeyUnlocked(I)Z
-HSPLcom/android/server/StorageManagerService;->killMediaProvider(Ljava/util/List;)V
+PLcom/android/server/StorageManagerService;->killMediaProvider(Ljava/util/List;)V
+PLcom/android/server/StorageManagerService;->lambda$connectVold$2$StorageManagerService()V
+PLcom/android/server/StorageManagerService;->lambda$handleSystemReady$0$StorageManagerService(Landroid/provider/DeviceConfig$Properties;)V
 HSPLcom/android/server/StorageManagerService;->lastMaintenance()J
-HSPLcom/android/server/StorageManagerService;->maybeLogMediaMount(Landroid/os/storage/VolumeInfo;I)V
-HSPLcom/android/server/StorageManagerService;->monitor()V
-HSPLcom/android/server/StorageManagerService;->mount(Landroid/os/storage/VolumeInfo;)V
-PLcom/android/server/StorageManagerService;->mountProxyFileDescriptorBridge()Lcom/android/internal/os/AppFuseMount;
-PLcom/android/server/StorageManagerService;->onAwakeStateChanged(Z)V
+PLcom/android/server/StorageManagerService;->lockUserKey(I)V
+PLcom/android/server/StorageManagerService;->maybeLogMediaMount(Landroid/os/storage/VolumeInfo;I)V
+HPLcom/android/server/StorageManagerService;->mkdirs(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/StorageManagerService;->monitor()V
+PLcom/android/server/StorageManagerService;->mount(Landroid/os/storage/VolumeInfo;)V
+HPLcom/android/server/StorageManagerService;->mountProxyFileDescriptorBridge()Lcom/android/internal/os/AppFuseMount;
+HSPLcom/android/server/StorageManagerService;->needsCheckpoint()Z
+HPLcom/android/server/StorageManagerService;->onAwakeStateChanged(Z)V
+PLcom/android/server/StorageManagerService;->onCleanupUser(I)V
 HSPLcom/android/server/StorageManagerService;->onDaemonConnected()V
-HSPLcom/android/server/StorageManagerService;->onKeyguardStateChanged(Z)V
-HSPLcom/android/server/StorageManagerService;->onUnlockUser(I)V
-HSPLcom/android/server/StorageManagerService;->onVolumeCreatedLocked(Landroid/os/storage/VolumeInfo;)V
-HSPLcom/android/server/StorageManagerService;->onVolumeStateChangedLocked(Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/StorageManagerService;->openProxyFileDescriptor(III)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/StorageManagerService;->prepareUserStorage(Ljava/lang/String;III)V
+HPLcom/android/server/StorageManagerService;->onKeyguardStateChanged(Z)V
+PLcom/android/server/StorageManagerService;->onStopUser(I)V
+PLcom/android/server/StorageManagerService;->onUnlockUser(I)V
+PLcom/android/server/StorageManagerService;->onVolumeCreatedLocked(Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/StorageManagerService;->onVolumeStateChangedLocked(Landroid/os/storage/VolumeInfo;II)V
+HPLcom/android/server/StorageManagerService;->openProxyFileDescriptor(III)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/StorageManagerService;->prepareUserStorage(Ljava/lang/String;III)V
 HSPLcom/android/server/StorageManagerService;->readSettingsLocked()V
-HSPLcom/android/server/StorageManagerService;->recoverFrom128872367()V
+HSPLcom/android/server/StorageManagerService;->readVolumeRecord(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/storage/VolumeRecord;
+PLcom/android/server/StorageManagerService;->refreshFuseSettings()V
 HSPLcom/android/server/StorageManagerService;->refreshIsolatedStorageSettings()V
 HSPLcom/android/server/StorageManagerService;->refreshZramSettings()V
 HSPLcom/android/server/StorageManagerService;->registerListener(Landroid/os/storage/IStorageEventListener;)V
+HSPLcom/android/server/StorageManagerService;->remountUidExternalStorage(II)V
 HSPLcom/android/server/StorageManagerService;->resetIfBootedAndConnected()V
 PLcom/android/server/StorageManagerService;->runIdleMaint(Ljava/lang/Runnable;)V
 HSPLcom/android/server/StorageManagerService;->runIdleMaintenance(Ljava/lang/Runnable;)V
 HSPLcom/android/server/StorageManagerService;->runMaintenance()V
 HSPLcom/android/server/StorageManagerService;->scrubPath(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/StorageManagerService;->sendUserStartedCallback(I)V
 HSPLcom/android/server/StorageManagerService;->servicesReady()V
-HSPLcom/android/server/StorageManagerService;->setField(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/StorageManagerService;->translateAppToSystem(Ljava/lang/String;II)Ljava/lang/String;
-HSPLcom/android/server/StorageManagerService;->translateInternal(Ljava/lang/String;IIZ)Ljava/lang/String;
-PLcom/android/server/StorageManagerService;->translateSystemToApp(Ljava/lang/String;II)Ljava/lang/String;
-HSPLcom/android/server/StorageManagerService;->unlockUserKey(II[B[B)V
+PLcom/android/server/StorageManagerService;->setField(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/StorageManagerService;->start()V
+PLcom/android/server/StorageManagerService;->startCheckpoint(I)V
+PLcom/android/server/StorageManagerService;->supportsBlockCheckpoint()Z
+PLcom/android/server/StorageManagerService;->supportsCheckpoint()Z
+HSPLcom/android/server/StorageManagerService;->systemReady()V
+PLcom/android/server/StorageManagerService;->unlockUserKey(II[B[B)V
+PLcom/android/server/StorageManagerService;->unmountObb(Ljava/lang/String;ZLandroid/os/storage/IObbActionListener;I)V
+PLcom/android/server/StorageManagerService;->unregisterListener(Landroid/os/storage/IStorageEventListener;)V
+PLcom/android/server/StorageManagerService;->updateFusePropFromSettings()V
+HSPLcom/android/server/SystemConfigService$1;-><init>(Lcom/android/server/SystemConfigService;)V
+HSPLcom/android/server/SystemConfigService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/SystemConfigService;->onStart()V
 HSPLcom/android/server/SystemServer;-><init>()V
+HSPLcom/android/server/SystemServer;->createSystemContext()V
+HSPLcom/android/server/SystemServer;->deviceHasConfigString(Landroid/content/Context;I)Z
+HSPLcom/android/server/SystemServer;->isFirstBootOrUpgrade()Z
+HSPLcom/android/server/SystemServer;->lambda$startBootstrapServices$0()V
 HSPLcom/android/server/SystemServer;->lambda$startOtherServices$1()V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$2()V
 HSPLcom/android/server/SystemServer;->lambda$startOtherServices$3$SystemServer()V
-HSPLcom/android/server/SystemServer;->lambda$startOtherServices$4$SystemServer(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/LocationManagerService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$4$SystemServer()V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$4$SystemServer(Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$4(Landroid/os/IBinder;)V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$5$SystemServer(Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/NetworkTimeUpdateService;Lcom/android/server/input/InputManagerService;Lcom/android/server/TelephonyRegistry;Lcom/android/server/media/MediaRouterService;Lcom/android/server/MmsServiceBroker;)V
+PLcom/android/server/SystemServer;->lambda$startOtherServices$5(Landroid/os/IBinder;)V
+HSPLcom/android/server/SystemServer;->lambda$startOtherServices$6$SystemServer(Lcom/android/server/utils/TimingsTraceAndSlog;Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;ZLcom/android/server/ConnectivityService;Lcom/android/server/NetworkManagementService;Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/IpSecService;Lcom/android/server/net/NetworkStatsService;Lcom/android/server/CountryDetectorService;Lcom/android/server/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;->startAttentionService(Landroid/content/Context;)V
-HSPLcom/android/server/SystemServer;->startBootstrapServices()V
-HSPLcom/android/server/SystemServer;->startContentCaptureService(Landroid/content/Context;)V
-HSPLcom/android/server/SystemServer;->startCoreServices()V
-HSPLcom/android/server/SystemServer;->startOtherServices()V
-HSPLcom/android/server/SystemServer;->traceBeginAndSlog(Ljava/lang/String;)V
-HSPLcom/android/server/SystemServer;->traceEnd()V
-HSPLcom/android/server/SystemServerInitThreadPool;->get()Lcom/android/server/SystemServerInitThreadPool;
-HSPLcom/android/server/SystemServerInitThreadPool;->lambda$submit$0(Ljava/lang/String;Ljava/lang/Runnable;)V
+HSPLcom/android/server/SystemServer;->startAttentionService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startBootstrapServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startContentCaptureService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startCoreServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startOtherServices(Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startSystemCaptionsManagerService(Landroid/content/Context;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HSPLcom/android/server/SystemServer;->startSystemUi(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/SystemServerInitThreadPool;-><clinit>()V
+HSPLcom/android/server/SystemServerInitThreadPool;-><init>()V
+HSPLcom/android/server/SystemServerInitThreadPool;->lambda$submitTask$0$SystemServerInitThreadPool(Ljava/lang/String;Ljava/lang/Runnable;)V
 HSPLcom/android/server/SystemServerInitThreadPool;->shutdown()V
+HSPLcom/android/server/SystemServerInitThreadPool;->start()V
 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;
+HSPLcom/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
+HSPLcom/android/server/SystemService$TargetUser;->getUserInfo()Landroid/content/pm/UserInfo;
 HSPLcom/android/server/SystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemService;->dumpSupportedUsers(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/SystemService;->getBinderService(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLcom/android/server/SystemService;->getContext()Landroid/content/Context;
 HSPLcom/android/server/SystemService;->getLocalService(Ljava/lang/Class;)Ljava/lang/Object;
+HSPLcom/android/server/SystemService;->getManager()Lcom/android/server/SystemServiceManager;
+PLcom/android/server/SystemService;->getUiContext()Landroid/content/Context;
+HSPLcom/android/server/SystemService;->isSafeMode()Z
+HSPLcom/android/server/SystemService;->isSupported(Landroid/content/pm/UserInfo;)Z
+HSPLcom/android/server/SystemService;->isSupportedUser(Lcom/android/server/SystemService$TargetUser;)Z
 HSPLcom/android/server/SystemService;->onBootPhase(I)V
+HPLcom/android/server/SystemService;->onCleanupUser(I)V
 HSPLcom/android/server/SystemService;->onStartUser(I)V
-HSPLcom/android/server/SystemService;->onUnlockUser(I)V
+HSPLcom/android/server/SystemService;->onStartUser(Landroid/content/pm/UserInfo;)V
+HSPLcom/android/server/SystemService;->onStartUser(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/SystemService;->onStopUser(I)V
+PLcom/android/server/SystemService;->onStopUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/SystemService;->onStopUser(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/SystemService;->onUnlockUser(I)V
+HPLcom/android/server/SystemService;->onUnlockUser(Landroid/content/pm/UserInfo;)V
+HPLcom/android/server/SystemService;->onUnlockUser(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
+HSPLcom/android/server/SystemServiceManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/SystemServiceManager;->cleanupUser(I)V
+HSPLcom/android/server/SystemServiceManager;->ensureSystemDir()Ljava/io/File;
 PLcom/android/server/SystemServiceManager;->getRuntimeStartElapsedTime()J
 PLcom/android/server/SystemServiceManager;->getRuntimeStartUptime()J
+HSPLcom/android/server/SystemServiceManager;->getUserInfo(I)Landroid/content/pm/UserInfo;
 HSPLcom/android/server/SystemServiceManager;->isBootCompleted()Z
 HSPLcom/android/server/SystemServiceManager;->isRuntimeRestarted()Z
 HSPLcom/android/server/SystemServiceManager;->isSafeMode()Z
+HSPLcom/android/server/SystemServiceManager;->loadClassFromLoader(Ljava/lang/String;Ljava/lang/ClassLoader;)Ljava/lang/Class;
+HSPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;I)V
+HSPLcom/android/server/SystemServiceManager;->onUser(Lcom/android/server/utils/TimingsTraceAndSlog;Ljava/lang/String;II)V
+PLcom/android/server/SystemServiceManager;->onUser(Ljava/lang/String;I)V
+HSPLcom/android/server/SystemServiceManager;->preSystemReady()V
 HSPLcom/android/server/SystemServiceManager;->setSafeMode(Z)V
 HSPLcom/android/server/SystemServiceManager;->setStartInfo(ZJJ)V
-HSPLcom/android/server/SystemServiceManager;->startBootPhase(I)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;
-HSPLcom/android/server/SystemServiceManager;->startUser(I)V
-HSPLcom/android/server/SystemServiceManager;->unlockUser(I)V
+HSPLcom/android/server/SystemServiceManager;->startServiceFromJar(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/SystemService;
+HSPLcom/android/server/SystemServiceManager;->startUser(Lcom/android/server/utils/TimingsTraceAndSlog;I)V
+PLcom/android/server/SystemServiceManager;->stopUser(I)V
+PLcom/android/server/SystemServiceManager;->unlockUser(I)V
 HSPLcom/android/server/SystemServiceManager;->warnIfTooLong(JLcom/android/server/SystemService;Ljava/lang/String;)V
 HSPLcom/android/server/SystemUpdateManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/SystemUpdateManagerService;->getBootCount()I
 HSPLcom/android/server/SystemUpdateManagerService;->loadSystemUpdateInfoLocked()Landroid/os/Bundle;
+HSPLcom/android/server/SystemUpdateManagerService;->readInfoFileLocked(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/PersistableBundle;
 HSPLcom/android/server/SystemUpdateManagerService;->removeInfoFileAndGetDefaultInfoBundleLocked()Landroid/os/Bundle;
-PLcom/android/server/SystemUpdateManagerService;->retrieveSystemUpdateInfo()Landroid/os/Bundle;
+HPLcom/android/server/SystemUpdateManagerService;->retrieveSystemUpdateInfo()Landroid/os/Bundle;
 PLcom/android/server/SystemUpdateManagerService;->saveSystemUpdateInfoLocked(Landroid/os/PersistableBundle;I)V
 PLcom/android/server/SystemUpdateManagerService;->updateSystemUpdateInfo(Landroid/os/PersistableBundle;)V
 PLcom/android/server/SystemUpdateManagerService;->writeInfoFileLocked(Landroid/os/PersistableBundle;)Z
+HSPLcom/android/server/TelephonyRegistry$1;-><init>(Lcom/android/server/TelephonyRegistry;)V
 HSPLcom/android/server/TelephonyRegistry$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/TelephonyRegistry$2;-><init>(Lcom/android/server/TelephonyRegistry;)V
 HSPLcom/android/server/TelephonyRegistry$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/TelephonyRegistry$Record;->canReadCallLog()Z
-HSPLcom/android/server/TelephonyRegistry$Record;->matchOnSubscriptionsChangedListener()Z
-HSPLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z
-PLcom/android/server/TelephonyRegistry$Record;->toString()Ljava/lang/String;
-HSPLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;->binderDied()V
+HSPLcom/android/server/TelephonyRegistry$3;-><clinit>()V
+HSPLcom/android/server/TelephonyRegistry$Record;-><init>()V
+HSPLcom/android/server/TelephonyRegistry$Record;-><init>(Lcom/android/server/TelephonyRegistry$1;)V
+HPLcom/android/server/TelephonyRegistry$Record;->canReadCallLog()Z
+PLcom/android/server/TelephonyRegistry$Record;->matchOnOpportunisticSubscriptionsChangedListener()Z
+PLcom/android/server/TelephonyRegistry$Record;->matchOnSubscriptionsChangedListener()Z
+HPLcom/android/server/TelephonyRegistry$Record;->matchPhoneStateListenerEvent(I)Z
+HPLcom/android/server/TelephonyRegistry$Record;->toString()Ljava/lang/String;
+HSPLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;-><init>(Lcom/android/server/TelephonyRegistry;Landroid/os/IBinder;)V
+HPLcom/android/server/TelephonyRegistry$TelephonyRegistryDeathRecipient;->binderDied()V
+HSPLcom/android/server/TelephonyRegistry;-><clinit>()V
 HSPLcom/android/server/TelephonyRegistry;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/TelephonyRegistry;->access$000(Lcom/android/server/TelephonyRegistry;)Landroid/telephony/TelephonyManager;
+PLcom/android/server/TelephonyRegistry;->access$100(Lcom/android/server/TelephonyRegistry;)[Landroid/os/Bundle;
+HSPLcom/android/server/TelephonyRegistry;->access$100(Lcom/android/server/TelephonyRegistry;)[Landroid/telephony/CellIdentity;
+PLcom/android/server/TelephonyRegistry;->access$1000(Lcom/android/server/TelephonyRegistry;I)I
+PLcom/android/server/TelephonyRegistry;->access$1000(Lcom/android/server/TelephonyRegistry;I)Z
+PLcom/android/server/TelephonyRegistry;->access$1100(Lcom/android/server/TelephonyRegistry;I)Z
+PLcom/android/server/TelephonyRegistry;->access$1200(Lcom/android/server/TelephonyRegistry;)V
+PLcom/android/server/TelephonyRegistry;->access$200(Lcom/android/server/TelephonyRegistry;)Ljava/util/ArrayList;
+PLcom/android/server/TelephonyRegistry;->access$300(Lcom/android/server/TelephonyRegistry;Lcom/android/server/TelephonyRegistry$Record;I)V
+PLcom/android/server/TelephonyRegistry;->access$400(Lcom/android/server/TelephonyRegistry;)V
+PLcom/android/server/TelephonyRegistry;->access$500(Lcom/android/server/TelephonyRegistry;)I
+PLcom/android/server/TelephonyRegistry;->access$502(Lcom/android/server/TelephonyRegistry;I)I
+PLcom/android/server/TelephonyRegistry;->access$600(Lcom/android/server/TelephonyRegistry;)I
+PLcom/android/server/TelephonyRegistry;->access$602(Lcom/android/server/TelephonyRegistry;I)I
+PLcom/android/server/TelephonyRegistry;->access$700(Lcom/android/server/TelephonyRegistry;)Landroid/util/LocalLog;
+HPLcom/android/server/TelephonyRegistry;->access$800(Lcom/android/server/TelephonyRegistry;Landroid/os/IBinder;)V
+HSPLcom/android/server/TelephonyRegistry;->access$900(Lcom/android/server/TelephonyRegistry;)Landroid/os/Handler;
 HSPLcom/android/server/TelephonyRegistry;->add(Landroid/os/IBinder;)Lcom/android/server/TelephonyRegistry$Record;
-PLcom/android/server/TelephonyRegistry;->addOnOpportunisticSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HSPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastCallStateChanged(ILjava/lang/String;II)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastPreciseCallStateChanged(III)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastPreciseDataConnectionStateChanged(IILjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;I)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V
-HSPLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V
-HSPLcom/android/server/TelephonyRegistry;->checkCoarseLocationAccess(Lcom/android/server/TelephonyRegistry$Record;I)Z
-HSPLcom/android/server/TelephonyRegistry;->checkFineLocationAccess(Lcom/android/server/TelephonyRegistry$Record;I)Z
-HSPLcom/android/server/TelephonyRegistry;->checkListenerPermission(IILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/TelephonyRegistry;->addOnOpportunisticSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+HSPLcom/android/server/TelephonyRegistry;->addOnSubscriptionsChangedListener(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+HPLcom/android/server/TelephonyRegistry;->broadcastCallStateChanged(ILjava/lang/String;II)V
+HPLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(ILjava/lang/String;II)V
+PLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(ILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/TelephonyRegistry;->broadcastDataConnectionStateChanged(IZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ZI)V
+HPLcom/android/server/TelephonyRegistry;->broadcastServiceStateChanged(Landroid/telephony/ServiceState;II)V
+HPLcom/android/server/TelephonyRegistry;->broadcastSignalStrengthChanged(Landroid/telephony/SignalStrength;II)V
+PLcom/android/server/TelephonyRegistry;->callStateToString(I)Ljava/lang/String;
+HPLcom/android/server/TelephonyRegistry;->checkCoarseLocationAccess(Lcom/android/server/TelephonyRegistry$Record;I)Z
+HPLcom/android/server/TelephonyRegistry;->checkFineLocationAccess(Lcom/android/server/TelephonyRegistry$Record;I)Z
+HSPLcom/android/server/TelephonyRegistry;->checkListenerPermission(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/TelephonyRegistry;->checkNotifyPermission()Z
 HSPLcom/android/server/TelephonyRegistry;->checkNotifyPermission(Ljava/lang/String;)Z
-HSPLcom/android/server/TelephonyRegistry;->checkPossibleMissNotify(Lcom/android/server/TelephonyRegistry$Record;I)V
-PLcom/android/server/TelephonyRegistry;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->checkPossibleMissNotify(Lcom/android/server/TelephonyRegistry$Record;I)V
+HSPLcom/android/server/TelephonyRegistry;->createCallQuality()Landroid/telephony/CallQuality;
+HSPLcom/android/server/TelephonyRegistry;->createPreciseCallState()Landroid/telephony/PreciseCallState;
+HPLcom/android/server/TelephonyRegistry;->dataStateToString(I)Ljava/lang/String;
+HPLcom/android/server/TelephonyRegistry;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->fillInSignalStrengthNotifierBundle(Landroid/telephony/SignalStrength;Landroid/os/Bundle;)V
+HPLcom/android/server/TelephonyRegistry;->getApnTypesStringFromBitmask(I)Ljava/lang/String;
+PLcom/android/server/TelephonyRegistry;->getCallIncomingNumber(Lcom/android/server/TelephonyRegistry$Record;I)Ljava/lang/String;
+HPLcom/android/server/TelephonyRegistry;->getNetworkTypeName(I)Ljava/lang/String;
+HSPLcom/android/server/TelephonyRegistry;->getPhoneIdFromSubId(I)I
+HSPLcom/android/server/TelephonyRegistry;->getTelephonyManager()Landroid/telephony/TelephonyManager;
 HSPLcom/android/server/TelephonyRegistry;->handleRemoveListLocked()V
-HSPLcom/android/server/TelephonyRegistry;->idMatch(III)Z
-HSPLcom/android/server/TelephonyRegistry;->lambda$checkCoarseLocationAccess$2$TelephonyRegistry(Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)Ljava/lang/Boolean;
-HSPLcom/android/server/TelephonyRegistry;->lambda$checkFineLocationAccess$1$TelephonyRegistry(Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)Ljava/lang/Boolean;
-HSPLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V
-HSPLcom/android/server/TelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
-HSPLcom/android/server/TelephonyRegistry;->notifyActiveDataSubIdChanged(I)V
-HSPLcom/android/server/TelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V
-PLcom/android/server/TelephonyRegistry;->notifyCallQualityChanged(Landroid/telephony/CallQuality;II)V
-PLcom/android/server/TelephonyRegistry;->notifyCallState(ILjava/lang/String;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyCallStateForPhoneId(IIILjava/lang/String;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyCellInfoForSubscriber(ILjava/util/List;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyDataActivityForSubscriber(II)V
-HSPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
-PLcom/android/server/TelephonyRegistry;->notifyDisconnectCause(II)V
-HSPLcom/android/server/TelephonyRegistry;->notifyEmergencyNumberList()V
-PLcom/android/server/TelephonyRegistry;->notifyImsDisconnectCause(ILandroid/telephony/ims/ImsReasonInfo;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V
-HSPLcom/android/server/TelephonyRegistry;->notifyOemHookRawEventForSubscriber(I[B)V
-HSPLcom/android/server/TelephonyRegistry;->notifyOtaspChanged(I)V
-HSPLcom/android/server/TelephonyRegistry;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyPhysicalChannelConfigurationForSubscriber(ILjava/util/List;)V
-HSPLcom/android/server/TelephonyRegistry;->notifyPreciseCallState(IIII)V
-HSPLcom/android/server/TelephonyRegistry;->notifyPreciseDataConnectionFailed(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/TelephonyRegistry;->notifyRadioPowerStateChanged(I)V
-HSPLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
-HSPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
-HSPLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V
-HSPLcom/android/server/TelephonyRegistry;->notifySubscriptionInfoChanged()V
-HSPLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
-HSPLcom/android/server/TelephonyRegistry;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
+PLcom/android/server/TelephonyRegistry;->idMatch(III)Z
+HPLcom/android/server/TelephonyRegistry;->lambda$checkCoarseLocationAccess$2$TelephonyRegistry(Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)Ljava/lang/Boolean;
+HPLcom/android/server/TelephonyRegistry;->lambda$checkFineLocationAccess$1$TelephonyRegistry(Landroid/telephony/LocationAccessPolicy$LocationPermissionQuery;)Ljava/lang/Boolean;
+PLcom/android/server/TelephonyRegistry;->lambda$notifyCarrierNetworkChange$0$TelephonyRegistry(I)Z
+HSPLcom/android/server/TelephonyRegistry;->listen(Ljava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZI)V
+HSPLcom/android/server/TelephonyRegistry;->listenForSubscriber(ILjava/lang/String;Ljava/lang/String;Lcom/android/internal/telephony/IPhoneStateListener;IZ)V
+HSPLcom/android/server/TelephonyRegistry;->log(Ljava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->notifyActiveDataSubIdChanged(I)V
+HPLcom/android/server/TelephonyRegistry;->notifyCallForwardingChangedForSubscriber(IZ)V
+HPLcom/android/server/TelephonyRegistry;->notifyCallQualityChanged(Landroid/telephony/CallQuality;III)V
+HPLcom/android/server/TelephonyRegistry;->notifyCallState(IIILjava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->notifyCallStateForAllSubs(ILjava/lang/String;)V
+HPLcom/android/server/TelephonyRegistry;->notifyCarrierNetworkChange(Z)V
+HPLcom/android/server/TelephonyRegistry;->notifyCellInfoForSubscriber(ILjava/util/List;)V
+PLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/os/Bundle;)V
+HSPLcom/android/server/TelephonyRegistry;->notifyCellLocationForSubscriber(ILandroid/telephony/CellIdentity;)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataActivityForSubscriber(II)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionFailedForSubscriber(III)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIILandroid/telephony/PreciseDataConnectionState;)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IIIZLjava/lang/String;Ljava/lang/String;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;IZ)V
+HPLcom/android/server/TelephonyRegistry;->notifyDataConnectionForSubscriber(IILjava/lang/String;Landroid/telephony/PreciseDataConnectionState;)V
+HPLcom/android/server/TelephonyRegistry;->notifyDisconnectCause(IIII)V
+HPLcom/android/server/TelephonyRegistry;->notifyEmergencyNumberList(II)V
+HPLcom/android/server/TelephonyRegistry;->notifyImsDisconnectCause(ILandroid/telephony/ims/ImsReasonInfo;)V
+HPLcom/android/server/TelephonyRegistry;->notifyMessageWaitingChangedForPhoneId(IIZ)V
+HPLcom/android/server/TelephonyRegistry;->notifyOpportunisticSubscriptionInfoChanged()V
+PLcom/android/server/TelephonyRegistry;->notifyOtaspChanged(II)V
+HPLcom/android/server/TelephonyRegistry;->notifyPhoneCapabilityChanged(Landroid/telephony/PhoneCapability;)V
+HPLcom/android/server/TelephonyRegistry;->notifyPreciseCallState(IIIII)V
+HPLcom/android/server/TelephonyRegistry;->notifyPreciseDataConnectionFailed(IIILjava/lang/String;I)V
+HPLcom/android/server/TelephonyRegistry;->notifyRadioPowerStateChanged(III)V
+HPLcom/android/server/TelephonyRegistry;->notifyServiceStateForPhoneId(IILandroid/telephony/ServiceState;)V
+HPLcom/android/server/TelephonyRegistry;->notifySignalStrengthForPhoneId(IILandroid/telephony/SignalStrength;)V
+HPLcom/android/server/TelephonyRegistry;->notifySimActivationStateChangedForPhoneId(IIII)V
+HPLcom/android/server/TelephonyRegistry;->notifySrvccStateChanged(II)V
+HPLcom/android/server/TelephonyRegistry;->notifySubscriptionInfoChanged()V
+HPLcom/android/server/TelephonyRegistry;->notifyUserMobileDataStateChangedForPhoneId(IIZ)V
+PLcom/android/server/TelephonyRegistry;->onMultiSimConfigChanged()V
+HPLcom/android/server/TelephonyRegistry;->remove(Landroid/os/IBinder;)V
+HPLcom/android/server/TelephonyRegistry;->removeOnSubscriptionsChangedListener(Ljava/lang/String;Lcom/android/internal/telephony/IOnSubscriptionsChangedListener;)V
 HSPLcom/android/server/TelephonyRegistry;->systemRunning()V
-HSPLcom/android/server/TelephonyRegistry;->validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z
+HPLcom/android/server/TelephonyRegistry;->updateReportSignalStrengthDecision(I)V
+HPLcom/android/server/TelephonyRegistry;->validateEventsAndUserLocked(Lcom/android/server/TelephonyRegistry$Record;I)Z
+HSPLcom/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$1;)V
 HSPLcom/android/server/ThreadPriorityBooster;-><init>(II)V
 HSPLcom/android/server/ThreadPriorityBooster;->boost()V
 HSPLcom/android/server/ThreadPriorityBooster;->reset()V
 HSPLcom/android/server/ThreadPriorityBooster;->setBoostToPriority(I)V
+HSPLcom/android/server/UiModeManagerInternal;-><init>()V
+HSPLcom/android/server/UiModeManagerService$10;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$10;->disableCarModeByCallingPackage(ILjava/lang/String;)V
+PLcom/android/server/UiModeManagerService$10;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/UiModeManagerService$10;->enableCarMode(IILjava/lang/String;)V
+HSPLcom/android/server/UiModeManagerService$10;->getCurrentModeType()I
+PLcom/android/server/UiModeManagerService$10;->getCustomNightModeEnd()J
+PLcom/android/server/UiModeManagerService$10;->getCustomNightModeStart()J
+HPLcom/android/server/UiModeManagerService$10;->getNightMode()I
+PLcom/android/server/UiModeManagerService$10;->isNightModeLocked()Z
+PLcom/android/server/UiModeManagerService$10;->isUiModeLocked()Z
+PLcom/android/server/UiModeManagerService$10;->lambda$disableCarModeByCallingPackage$0(Ljava/lang/String;Ljava/util/Map$Entry;)Z
+PLcom/android/server/UiModeManagerService$10;->setCustomNightModeEnd(J)V
+PLcom/android/server/UiModeManagerService$10;->setCustomNightModeStart(J)V
+PLcom/android/server/UiModeManagerService$10;->setNightMode(I)V
+PLcom/android/server/UiModeManagerService$10;->setNightModeActivated(Z)Z
+HSPLcom/android/server/UiModeManagerService$1;-><init>(Lcom/android/server/UiModeManagerService;)V
 PLcom/android/server/UiModeManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/UiModeManagerService$2;-><init>(Lcom/android/server/UiModeManagerService;)V
+HSPLcom/android/server/UiModeManagerService$3;-><init>(Lcom/android/server/UiModeManagerService;)V
 HSPLcom/android/server/UiModeManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/UiModeManagerService$6;->disableCarMode(I)V
-PLcom/android/server/UiModeManagerService$6;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/UiModeManagerService$6;->enableCarMode(I)V
-HSPLcom/android/server/UiModeManagerService$6;->getCurrentModeType()I
-HSPLcom/android/server/UiModeManagerService$6;->getNightMode()I
-PLcom/android/server/UiModeManagerService$6;->isNightModeLocked()Z
-PLcom/android/server/UiModeManagerService$6;->isUiModeLocked()Z
-PLcom/android/server/UiModeManagerService$6;->setNightMode(I)V
+HSPLcom/android/server/UiModeManagerService$4;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$4;->onTwilightStateChanged(Lcom/android/server/twilight/TwilightState;)V
+HSPLcom/android/server/UiModeManagerService$5;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/UiModeManagerService$6;-><init>(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/UiModeManagerService$7;-><init>(Lcom/android/server/UiModeManagerService;)V
+HSPLcom/android/server/UiModeManagerService$7;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/UiModeManagerService$8;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+PLcom/android/server/UiModeManagerService$8;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/UiModeManagerService$9;-><init>(Lcom/android/server/UiModeManagerService;)V
+HSPLcom/android/server/UiModeManagerService$9;-><init>(Lcom/android/server/UiModeManagerService;Landroid/os/Handler;)V
+HPLcom/android/server/UiModeManagerService$9;->disableCarModeByCallingPackage(ILjava/lang/String;)V
+PLcom/android/server/UiModeManagerService$9;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/UiModeManagerService$9;->enableCarMode(IILjava/lang/String;)V
+HSPLcom/android/server/UiModeManagerService$9;->getCurrentModeType()I
+HPLcom/android/server/UiModeManagerService$9;->getNightMode()I
+PLcom/android/server/UiModeManagerService$9;->isNightModeLocked()Z
+PLcom/android/server/UiModeManagerService$9;->isUiModeLocked()Z
+PLcom/android/server/UiModeManagerService$9;->lambda$disableCarModeByCallingPackage$0(Ljava/lang/String;Ljava/util/Map$Entry;)Z
+PLcom/android/server/UiModeManagerService$9;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/UiModeManagerService$9;->setNightMode(I)V
+PLcom/android/server/UiModeManagerService$9;->setNightModeActivated(Z)Z
+HSPLcom/android/server/UiModeManagerService$LocalService;-><init>(Lcom/android/server/UiModeManagerService;)V
 PLcom/android/server/UiModeManagerService$LocalService;->isNightMode()Z
+PLcom/android/server/UiModeManagerService$Shell;->access$2200(I)Ljava/lang/String;
+PLcom/android/server/UiModeManagerService$Shell;->access$2300(I)Ljava/lang/String;
+PLcom/android/server/UiModeManagerService$Shell;->access$2900(I)Ljava/lang/String;
+PLcom/android/server/UiModeManagerService$Shell;->nightModeToStr(I)Ljava/lang/String;
+HSPLcom/android/server/UiModeManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/UiModeManagerService;)V
+HSPLcom/android/server/UiModeManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/UiModeManagerService;Lcom/android/server/UiModeManagerService$1;)V
 HSPLcom/android/server/UiModeManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/UiModeManagerService;-><clinit>()V
 HSPLcom/android/server/UiModeManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/UiModeManagerService;->adjustStatusBarCarModeLocked()V
-PLcom/android/server/UiModeManagerService;->dumpImpl(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/UiModeManagerService;->lambda$onStart$0$UiModeManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/UiModeManagerService;->access$000(Lcom/android/server/UiModeManagerService;Ljava/lang/String;II)V
+PLcom/android/server/UiModeManagerService;->access$1000(Lcom/android/server/UiModeManagerService;)Z
+HSPLcom/android/server/UiModeManagerService;->access$1100(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;I)Z
+HSPLcom/android/server/UiModeManagerService;->access$1200(Lcom/android/server/UiModeManagerService;Landroid/content/Context;Landroid/content/res/Resources;I)Z
+PLcom/android/server/UiModeManagerService;->access$1300()Ljava/lang/String;
+PLcom/android/server/UiModeManagerService;->access$1400()Ljava/lang/String;
+PLcom/android/server/UiModeManagerService;->access$1400(Lcom/android/server/UiModeManagerService;)Ljava/util/Map;
+PLcom/android/server/UiModeManagerService;->access$1500(Lcom/android/server/UiModeManagerService;)Ljava/util/Map;
+PLcom/android/server/UiModeManagerService;->access$1502(Lcom/android/server/UiModeManagerService;I)I
+PLcom/android/server/UiModeManagerService;->access$1600(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$1600(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$1700(Lcom/android/server/UiModeManagerService;I)V
+PLcom/android/server/UiModeManagerService;->access$1702(Lcom/android/server/UiModeManagerService;I)I
+PLcom/android/server/UiModeManagerService;->access$1800(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$1900(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$1900(Lcom/android/server/UiModeManagerService;I)V
+PLcom/android/server/UiModeManagerService;->access$2000(Lcom/android/server/UiModeManagerService;)Z
+HSPLcom/android/server/UiModeManagerService;->access$202(Lcom/android/server/UiModeManagerService;Z)Z
+PLcom/android/server/UiModeManagerService;->access$2100(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$2100(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$2200(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$2200(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$2400(Lcom/android/server/UiModeManagerService;)Landroid/content/res/Configuration;
+PLcom/android/server/UiModeManagerService;->access$2400(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$2500(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$2600(Lcom/android/server/UiModeManagerService;)Ljava/time/LocalTime;
+PLcom/android/server/UiModeManagerService;->access$2602(Lcom/android/server/UiModeManagerService;Ljava/time/LocalTime;)Ljava/time/LocalTime;
+PLcom/android/server/UiModeManagerService;->access$2700(Lcom/android/server/UiModeManagerService;I)V
+PLcom/android/server/UiModeManagerService;->access$2800(Lcom/android/server/UiModeManagerService;)Ljava/time/LocalTime;
+PLcom/android/server/UiModeManagerService;->access$2802(Lcom/android/server/UiModeManagerService;Ljava/time/LocalTime;)Ljava/time/LocalTime;
+PLcom/android/server/UiModeManagerService;->access$300(Lcom/android/server/UiModeManagerService;)I
+PLcom/android/server/UiModeManagerService;->access$3000(Lcom/android/server/UiModeManagerService;)Landroid/content/res/Configuration;
+PLcom/android/server/UiModeManagerService;->access$302(Lcom/android/server/UiModeManagerService;I)I
+PLcom/android/server/UiModeManagerService;->access$400(Lcom/android/server/UiModeManagerService;)Z
+PLcom/android/server/UiModeManagerService;->access$500(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$600(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$700(Lcom/android/server/UiModeManagerService;)V
+PLcom/android/server/UiModeManagerService;->access$900(Lcom/android/server/UiModeManagerService;)Z
+HPLcom/android/server/UiModeManagerService;->adjustStatusBarCarModeLocked()V
+HSPLcom/android/server/UiModeManagerService;->applyConfigurationExternallyLocked()V
+PLcom/android/server/UiModeManagerService;->buildHomeIntent(Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/UiModeManagerService;->cancelCustomAlarm()V
+HPLcom/android/server/UiModeManagerService;->computeCustomNightMode()Z
+HPLcom/android/server/UiModeManagerService;->disableCarMode(IILjava/lang/String;)V
+HPLcom/android/server/UiModeManagerService;->dumpImpl(Ljava/io/PrintWriter;)V
+PLcom/android/server/UiModeManagerService;->enableCarMode(ILjava/lang/String;)V
+HSPLcom/android/server/UiModeManagerService;->getComputedUiModeConfiguration(I)I
+HPLcom/android/server/UiModeManagerService;->getDateTimeAfter(Ljava/time/LocalTime;Ljava/time/LocalDateTime;)Ljava/time/LocalDateTime;
+PLcom/android/server/UiModeManagerService;->isCarModeEnabled()Z
+HSPLcom/android/server/UiModeManagerService;->isDeskDockState(I)Z
+PLcom/android/server/UiModeManagerService;->lambda$new$0$UiModeManagerService()V
+PLcom/android/server/UiModeManagerService;->lambda$onStart$0$UiModeManagerService(Landroid/os/PowerSaveState;)V
 HSPLcom/android/server/UiModeManagerService;->lambda$onStart$1$UiModeManagerService()V
+PLcom/android/server/UiModeManagerService;->lambda$onStart$1$UiModeManagerService(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/UiModeManagerService;->lambda$onStart$2$UiModeManagerService()V
+PLcom/android/server/UiModeManagerService;->notifyCarModeDisabled(ILjava/lang/String;)V
+PLcom/android/server/UiModeManagerService;->notifyCarModeEnabled(ILjava/lang/String;)V
 HSPLcom/android/server/UiModeManagerService;->onBootPhase(I)V
+PLcom/android/server/UiModeManagerService;->onCustomTimeUpdated(I)V
 HSPLcom/android/server/UiModeManagerService;->onStart()V
+PLcom/android/server/UiModeManagerService;->persistNightMode(I)V
+PLcom/android/server/UiModeManagerService;->registerScreenOffEvent()V
+HPLcom/android/server/UiModeManagerService;->registerTimeChangeEvent()V
 HSPLcom/android/server/UiModeManagerService;->registerVrStateListener()V
+HPLcom/android/server/UiModeManagerService;->scheduleNextCustomTimeListener()V
 HSPLcom/android/server/UiModeManagerService;->sendConfigurationAndStartDreamOrDockAppLocked(Ljava/lang/String;)V
-HSPLcom/android/server/UiModeManagerService;->sendConfigurationLocked()V
+PLcom/android/server/UiModeManagerService;->setCarModeLocked(ZIILjava/lang/String;)V
+HSPLcom/android/server/UiModeManagerService;->setupWizardCompleteForCurrentUser()Z
+PLcom/android/server/UiModeManagerService;->shouldApplyAutomaticChangesImmediately()Z
+PLcom/android/server/UiModeManagerService;->unregisterScreenOffEvent()V
+HSPLcom/android/server/UiModeManagerService;->unregisterTimeChangeEvent()V
 PLcom/android/server/UiModeManagerService;->updateAfterBroadcastLocked(Ljava/lang/String;II)V
+HSPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked()V
+HSPLcom/android/server/UiModeManagerService;->updateComputedNightModeLocked(Z)V
 HSPLcom/android/server/UiModeManagerService;->updateConfigurationLocked()V
+PLcom/android/server/UiModeManagerService;->updateCustomTimeLocked()V
 HSPLcom/android/server/UiModeManagerService;->updateLocked(II)V
+HSPLcom/android/server/UiModeManagerService;->updateNightModeFromSettings(Landroid/content/Context;Landroid/content/res/Resources;I)Z
+HSPLcom/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
-HSPLcom/android/server/UpdateLockService$LockWatcher;->acquired()V
-HSPLcom/android/server/UpdateLockService$LockWatcher;->released()V
+HSPLcom/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
 HSPLcom/android/server/UpdateLockService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/UpdateLockService;->acquireUpdateLock(Landroid/os/IBinder;Ljava/lang/String;)V
 PLcom/android/server/UpdateLockService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V
+PLcom/android/server/UpdateLockService;->makeTag(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/UpdateLockService;->releaseUpdateLock(Landroid/os/IBinder;)V
 HSPLcom/android/server/UpdateLockService;->sendLockChangedBroadcast(Z)V
+HSPLcom/android/server/VibratorService$1;-><init>(Lcom/android/server/VibratorService;)V
 HSPLcom/android/server/VibratorService$1;->onUidGone(IZ)V
-HSPLcom/android/server/VibratorService$1;->onUidStateChanged(IIJ)V
-HSPLcom/android/server/VibratorService$2;->getServiceType()I
-HSPLcom/android/server/VibratorService$2;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/VibratorService$1;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/VibratorService$2;-><init>(Lcom/android/server/VibratorService;)V
+PLcom/android/server/VibratorService$2;->getServiceType()I
+PLcom/android/server/VibratorService$2;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/VibratorService$3;-><init>(Lcom/android/server/VibratorService;)V
 HSPLcom/android/server/VibratorService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/VibratorService$4;->run()V
-PLcom/android/server/VibratorService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/VibratorService$VibrateThread;->cancel()V
-PLcom/android/server/VibratorService$VibrateThread;->delayLocked(J)J
-PLcom/android/server/VibratorService$VibrateThread;->playWaveform()Z
-PLcom/android/server/VibratorService$VibrateThread;->run()V
-PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;IILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/VibratorService$4;-><init>(Lcom/android/server/VibratorService;)V
+HPLcom/android/server/VibratorService$4;->run()V
+HSPLcom/android/server/VibratorService$5;-><init>(Lcom/android/server/VibratorService;)V
+HPLcom/android/server/VibratorService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/VibratorService$ExternalVibratorService$ExternalVibrationDeathRecipient;-><init>(Lcom/android/server/VibratorService$ExternalVibratorService;)V
+PLcom/android/server/VibratorService$ExternalVibratorService$ExternalVibrationDeathRecipient;-><init>(Lcom/android/server/VibratorService$ExternalVibratorService;Lcom/android/server/VibratorService$1;)V
+HSPLcom/android/server/VibratorService$ExternalVibratorService;-><init>(Lcom/android/server/VibratorService;)V
+PLcom/android/server/VibratorService$ExternalVibratorService;->onExternalVibrationStart(Landroid/os/ExternalVibration;)I
+PLcom/android/server/VibratorService$ExternalVibratorService;->onExternalVibrationStop(Landroid/os/ExternalVibration;)V
+HSPLcom/android/server/VibratorService$ScaleLevel;-><init>(F)V
+HSPLcom/android/server/VibratorService$ScaleLevel;-><init>(FI)V
+HSPLcom/android/server/VibratorService$SettingsObserver;-><init>(Lcom/android/server/VibratorService;Landroid/os/Handler;)V
+PLcom/android/server/VibratorService$SettingsObserver;->onChange(Z)V
+PLcom/android/server/VibratorService$VibrateThread;-><init>(Lcom/android/server/VibratorService;Landroid/os/VibrationEffect$Waveform;ILandroid/media/AudioAttributes;)V
+HPLcom/android/server/VibratorService$VibrateThread;-><init>(Lcom/android/server/VibratorService;Landroid/os/VibrationEffect$Waveform;ILandroid/os/VibrationAttributes;)V
+HPLcom/android/server/VibratorService$VibrateThread;->cancel()V
+HPLcom/android/server/VibratorService$VibrateThread;->delayLocked(J)J
+HPLcom/android/server/VibratorService$VibrateThread;->getTotalOnDuration([J[III)J
+HPLcom/android/server/VibratorService$VibrateThread;->playWaveform()Z
+HPLcom/android/server/VibratorService$VibrateThread;->run()V
+PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/VibratorService$1;)V
+HPLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/VibratorService$Vibration;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/VibratorService$1;)V
+PLcom/android/server/VibratorService$Vibration;->binderDied()V
+PLcom/android/server/VibratorService$Vibration;->hasTimeoutLongerThan(J)Z
+HPLcom/android/server/VibratorService$Vibration;->isAlarm()Z
 PLcom/android/server/VibratorService$Vibration;->isFromSystem()Z
-PLcom/android/server/VibratorService$Vibration;->isHapticFeedback()Z
-PLcom/android/server/VibratorService$Vibration;->isNotification()Z
-PLcom/android/server/VibratorService$Vibration;->isRingtone()Z
-PLcom/android/server/VibratorService$Vibration;->toInfo()Lcom/android/server/VibratorService$VibrationInfo;
-PLcom/android/server/VibratorService$VibrationInfo;->toString()Ljava/lang/String;
+HPLcom/android/server/VibratorService$Vibration;->isHapticFeedback()Z
+HPLcom/android/server/VibratorService$Vibration;->isNotification()Z
+HPLcom/android/server/VibratorService$Vibration;->isRingtone()Z
+HPLcom/android/server/VibratorService$Vibration;->onComplete()V
+HPLcom/android/server/VibratorService$Vibration;->toInfo()Lcom/android/server/VibratorService$VibrationInfo;
+PLcom/android/server/VibratorService$VibrationInfo;-><init>(JLandroid/os/VibrationEffect;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/VibratorService$VibrationInfo;-><init>(JLandroid/os/VibrationEffect;Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/VibratorService$VibrationInfo;->toString()Ljava/lang/String;
+PLcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;-><init>(Lcom/android/server/VibratorService$VibratorShellCommand;)V
+PLcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;-><init>(Lcom/android/server/VibratorService$VibratorShellCommand;Lcom/android/server/VibratorService$1;)V
+PLcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;->check(Ljava/lang/String;)V
+PLcom/android/server/VibratorService$VibratorShellCommand;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;)V
+PLcom/android/server/VibratorService$VibratorShellCommand;-><init>(Lcom/android/server/VibratorService;Landroid/os/IBinder;Lcom/android/server/VibratorService$1;)V
 PLcom/android/server/VibratorService$VibratorShellCommand;->checkDoNotDisturb(Lcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;)Z
+PLcom/android/server/VibratorService$VibratorShellCommand;->createAudioAttributes(Lcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;)Landroid/media/AudioAttributes;
+PLcom/android/server/VibratorService$VibratorShellCommand;->createVibrationAttributes(Lcom/android/server/VibratorService$VibratorShellCommand$CommonOptions;)Landroid/os/VibrationAttributes;
 PLcom/android/server/VibratorService$VibratorShellCommand;->onCommand(Ljava/lang/String;)I
 PLcom/android/server/VibratorService$VibratorShellCommand;->runVibrate()I
+HSPLcom/android/server/VibratorService;-><clinit>()V
 HSPLcom/android/server/VibratorService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
-PLcom/android/server/VibratorService;->applyVibrationIntensityScalingLocked(Lcom/android/server/VibratorService$Vibration;I)V
-HSPLcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
-HSPLcom/android/server/VibratorService;->doCancelVibrateLocked()V
-HSPLcom/android/server/VibratorService;->doVibratorOff()V
-PLcom/android/server/VibratorService;->doVibratorOn(JIII)V
-PLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J
-PLcom/android/server/VibratorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/VibratorService;->access$000(Lcom/android/server/VibratorService;)Landroid/util/SparseArray;
+HPLcom/android/server/VibratorService;->access$100(Lcom/android/server/VibratorService;)Ljava/lang/Object;
+PLcom/android/server/VibratorService;->access$1000(Lcom/android/server/VibratorService;)Landroid/os/WorkSource;
+PLcom/android/server/VibratorService;->access$1100(Lcom/android/server/VibratorService;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/VibratorService;->access$1100(Lcom/android/server/VibratorService;)Landroid/os/WorkSource;
+PLcom/android/server/VibratorService;->access$1200(Lcom/android/server/VibratorService;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/VibratorService;->access$1300(Lcom/android/server/VibratorService;JIILandroid/os/VibrationAttributes;)V
+HPLcom/android/server/VibratorService;->access$1400(Lcom/android/server/VibratorService;I)V
+PLcom/android/server/VibratorService;->access$1500(Lcom/android/server/VibratorService;)Lcom/android/server/VibratorService$VibrateThread;
+PLcom/android/server/VibratorService;->access$1700(Lcom/android/server/VibratorService;)Z
+PLcom/android/server/VibratorService;->access$1800(Lcom/android/server/VibratorService;)Landroid/os/ExternalVibration;
+PLcom/android/server/VibratorService;->access$1802(Lcom/android/server/VibratorService;Landroid/os/ExternalVibration;)Landroid/os/ExternalVibration;
+PLcom/android/server/VibratorService;->access$1900(Lcom/android/server/VibratorService;Z)V
+HPLcom/android/server/VibratorService;->access$200(Lcom/android/server/VibratorService;)Lcom/android/server/VibratorService$Vibration;
+PLcom/android/server/VibratorService;->access$2100(Lcom/android/server/VibratorService;)Ljava/util/LinkedList;
+PLcom/android/server/VibratorService;->access$2200(Lcom/android/server/VibratorService;)I
+PLcom/android/server/VibratorService;->access$2300(Lcom/android/server/VibratorService;)Landroid/os/Vibrator;
+PLcom/android/server/VibratorService;->access$2400(Lcom/android/server/VibratorService;)I
+PLcom/android/server/VibratorService;->access$2700(Lcom/android/server/VibratorService;)Landroid/content/Context;
+HPLcom/android/server/VibratorService;->access$300(Lcom/android/server/VibratorService;)V
+PLcom/android/server/VibratorService;->access$400(I)Z
+HPLcom/android/server/VibratorService;->access$500(I)Z
+HPLcom/android/server/VibratorService;->access$600(I)Z
+PLcom/android/server/VibratorService;->access$700(I)Z
+PLcom/android/server/VibratorService;->access$800(Lcom/android/server/VibratorService;)Ljava/lang/String;
+PLcom/android/server/VibratorService;->access$800(Lcom/android/server/VibratorService;)V
+HSPLcom/android/server/VibratorService;->access$900(Lcom/android/server/VibratorService;)V
+HPLcom/android/server/VibratorService;->addToPreviousVibrationsLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->applyVibrationIntensityScalingLocked(Lcom/android/server/VibratorService$Vibration;I)V
+HSPLcom/android/server/VibratorService;->asList([I)Ljava/util/List;
+HPLcom/android/server/VibratorService;->cancelVibrate(Landroid/os/IBinder;)V
+HSPLcom/android/server/VibratorService;->createEffectFromResource(I)Landroid/os/VibrationEffect;
+HSPLcom/android/server/VibratorService;->createEffectFromTimings([J)Landroid/os/VibrationEffect;
+HPLcom/android/server/VibratorService;->doCancelVibrateLocked()V
+HSPLcom/android/server/VibratorService;->doVibratorExists()Z
+HPLcom/android/server/VibratorService;->doVibratorOff()V
+HPLcom/android/server/VibratorService;->doVibratorOn(JIILandroid/media/AudioAttributes;)V
+HPLcom/android/server/VibratorService;->doVibratorOn(JIILandroid/os/VibrationAttributes;)V
+HPLcom/android/server/VibratorService;->doVibratorPrebakedEffectLocked(Lcom/android/server/VibratorService$Vibration;)J
+HPLcom/android/server/VibratorService;->doVibratorSetAmplitude(I)V
+HPLcom/android/server/VibratorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/VibratorService;->dumpInternal(Ljava/io/PrintWriter;)V
+HPLcom/android/server/VibratorService;->fixupVibrationAttributes(Landroid/os/VibrationAttributes;)Landroid/os/VibrationAttributes;
+HPLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I
+HPLcom/android/server/VibratorService;->getCurrentIntensityLocked(Lcom/android/server/VibratorService$Vibration;)I
+PLcom/android/server/VibratorService;->getFallbackEffect(I)Landroid/os/VibrationEffect;
+HSPLcom/android/server/VibratorService;->getLongIntArray(Landroid/content/res/Resources;I)[J
+PLcom/android/server/VibratorService;->hasCapability(J)Z
+HPLcom/android/server/VibratorService;->hasPermission(Ljava/lang/String;)Z
 HSPLcom/android/server/VibratorService;->hasVibrator()Z
-PLcom/android/server/VibratorService;->intensityToEffectStrength(I)I
-PLcom/android/server/VibratorService;->linkVibration(Lcom/android/server/VibratorService$Vibration;)V
-HSPLcom/android/server/VibratorService;->noteVibratorOffLocked()V
-PLcom/android/server/VibratorService;->noteVibratorOnLocked(IJ)V
+HPLcom/android/server/VibratorService;->intensityToEffectStrength(I)I
+PLcom/android/server/VibratorService;->isAlarm(I)Z
+PLcom/android/server/VibratorService;->isAllowedToVibrateLocked(Lcom/android/server/VibratorService$Vibration;)Z
+PLcom/android/server/VibratorService;->isHapticFeedback(I)Z
+HPLcom/android/server/VibratorService;->isNotification(I)Z
+HPLcom/android/server/VibratorService;->isRepeatingVibration(Landroid/os/VibrationEffect;)Z
+HPLcom/android/server/VibratorService;->isRingtone(I)Z
+HPLcom/android/server/VibratorService;->linkVibration(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->noteVibratorOffLocked()V
+HPLcom/android/server/VibratorService;->noteVibratorOnLocked(IJ)V
 PLcom/android/server/VibratorService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
-PLcom/android/server/VibratorService;->onVibrationFinished()V
-HSPLcom/android/server/VibratorService;->reportFinishVibrationLocked()V
+HPLcom/android/server/VibratorService;->onVibrationFinished()V
+HPLcom/android/server/VibratorService;->reportFinishVibrationLocked()V
+PLcom/android/server/VibratorService;->setAlwaysOnEffect(ILandroid/os/VibrationEffect;Landroid/media/AudioAttributes;)Z
+PLcom/android/server/VibratorService;->setAlwaysOnEffect(ILandroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)Z
+PLcom/android/server/VibratorService;->setAlwaysOnEffect(ILjava/lang/String;ILandroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)Z
+PLcom/android/server/VibratorService;->setVibratorUnderExternalControl(Z)V
+PLcom/android/server/VibratorService;->shouldBypassDnd(Landroid/media/AudioAttributes;)Z
+HPLcom/android/server/VibratorService;->shouldBypassDnd(Landroid/os/VibrationAttributes;)Z
+HPLcom/android/server/VibratorService;->shouldVibrate(Lcom/android/server/VibratorService$Vibration;I)Z
 PLcom/android/server/VibratorService;->shouldVibrateForRingtone()Z
-PLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V
-PLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->startVibrationInnerLocked(Lcom/android/server/VibratorService$Vibration;)V
+HPLcom/android/server/VibratorService;->startVibrationLocked(Lcom/android/server/VibratorService$Vibration;)V
 HSPLcom/android/server/VibratorService;->systemReady()V
+PLcom/android/server/VibratorService;->unlinkVibration(Lcom/android/server/VibratorService$Vibration;)V
+HSPLcom/android/server/VibratorService;->updateAlwaysOnLocked()V
+PLcom/android/server/VibratorService;->updateAlwaysOnLocked(ILandroid/os/VibrationEffect;Landroid/media/AudioAttributes;)V
+HPLcom/android/server/VibratorService;->updateAlwaysOnLocked(ILandroid/os/VibrationEffect;Landroid/os/VibrationAttributes;)V
+PLcom/android/server/VibratorService;->updateAlwaysOnLocked(ILcom/android/server/VibratorService$Vibration;)V
 HSPLcom/android/server/VibratorService;->updateInputDeviceVibratorsLocked()Z
+HSPLcom/android/server/VibratorService;->updateLowPowerModeLocked()Z
 HSPLcom/android/server/VibratorService;->updateVibrationIntensityLocked()V
 HSPLcom/android/server/VibratorService;->updateVibrators()V
-PLcom/android/server/VibratorService;->verifyIncomingUid(I)V
-PLcom/android/server/VibratorService;->verifyVibrationEffect(Landroid/os/VibrationEffect;)Z
-PLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;ILjava/lang/String;Landroid/os/IBinder;)V
+HPLcom/android/server/VibratorService;->verifyIncomingUid(I)V
+HPLcom/android/server/VibratorService;->verifyVibrationEffect(Landroid/os/VibrationEffect;)Z
+PLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;Ljava/lang/String;Landroid/os/IBinder;)V
+HPLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/os/VibrationAttributes;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/Watchdog$1;-><init>(Lcom/android/server/Watchdog;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/io/File;)V
+PLcom/android/server/Watchdog$1;->run()V
+HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>()V
+HSPLcom/android/server/Watchdog$BinderThreadMonitor;-><init>(Lcom/android/server/Watchdog$1;)V
 HSPLcom/android/server/Watchdog$BinderThreadMonitor;->monitor()V
-PLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
+HSPLcom/android/server/Watchdog$HandlerChecker;-><init>(Lcom/android/server/Watchdog;Landroid/os/Handler;Ljava/lang/String;J)V
+HSPLcom/android/server/Watchdog$HandlerChecker;->addMonitorLocked(Lcom/android/server/Watchdog$Monitor;)V
+PLcom/android/server/Watchdog$HandlerChecker;->describeBlockedStateLocked()Ljava/lang/String;
+HPLcom/android/server/Watchdog$HandlerChecker;->getCompletionStateLocked()I
+HSPLcom/android/server/Watchdog$HandlerChecker;->getThread()Ljava/lang/Thread;
+PLcom/android/server/Watchdog$HandlerChecker;->isOverdueLocked()Z
+HSPLcom/android/server/Watchdog$HandlerChecker;->pauseLocked(Ljava/lang/String;)V
+HSPLcom/android/server/Watchdog$HandlerChecker;->resumeLocked(Ljava/lang/String;)V
 HSPLcom/android/server/Watchdog$HandlerChecker;->run()V
 HSPLcom/android/server/Watchdog$HandlerChecker;->scheduleCheckLocked()V
+HSPLcom/android/server/Watchdog$OpenFdMonitor;-><init>(Ljava/io/File;Ljava/io/File;)V
 HSPLcom/android/server/Watchdog$OpenFdMonitor;->create()Lcom/android/server/Watchdog$OpenFdMonitor;
+HPLcom/android/server/Watchdog$OpenFdMonitor;->monitor()Z
+HSPLcom/android/server/Watchdog$RebootRequestReceiver;-><init>(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;->describeCheckersLocked(Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/Watchdog;->doSysRq(C)V
+HPLcom/android/server/Watchdog;->evaluateCheckerCompletionLocked()I
+PLcom/android/server/Watchdog;->getBlockedCheckersLocked()Ljava/util/ArrayList;
 HSPLcom/android/server/Watchdog;->getInstance()Lcom/android/server/Watchdog;
+HPLcom/android/server/Watchdog;->getInterestingHalPids()Ljava/util/ArrayList;
+PLcom/android/server/Watchdog;->getInterestingNativePids()Ljava/util/ArrayList;
 HSPLcom/android/server/Watchdog;->init(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/Watchdog;->pauseWatchingCurrentThread(Ljava/lang/String;)V
 HSPLcom/android/server/Watchdog;->processStarted(Ljava/lang/String;I)V
+HSPLcom/android/server/Watchdog;->resumeWatchingCurrentThread(Ljava/lang/String;)V
 HSPLcom/android/server/Watchdog;->run()V
+PLcom/android/server/Watchdog;->setActivityController(Landroid/app/IActivityController;)V
+HSPLcom/android/server/WiredAccessoryManager$1;-><init>(Lcom/android/server/WiredAccessoryManager;Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V
 HSPLcom/android/server/WiredAccessoryManager$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryExtconObserver;-><init>(Lcom/android/server/WiredAccessoryManager;)V
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryExtconObserver;->access$000(Lcom/android/server/WiredAccessoryManager$WiredAccessoryExtconObserver;)V
 HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryExtconObserver;->init()V
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;-><init>(Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;Ljava/lang/String;III)V
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->checkSwitchExists()Z
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;->getSwitchStatePath()Ljava/lang/String;
+HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;-><init>(Lcom/android/server/WiredAccessoryManager;)V
 HSPLcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;->makeObservedUEventList()Ljava/util/List;
+HSPLcom/android/server/WiredAccessoryManager;-><clinit>()V
 HSPLcom/android/server/WiredAccessoryManager;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;)V
-HSPLcom/android/server/WiredAccessoryManager;->notifyWiredAccessoryChanged(JII)V
+HSPLcom/android/server/WiredAccessoryManager;->access$200(Lcom/android/server/WiredAccessoryManager;)Landroid/os/PowerManager$WakeLock;
+HSPLcom/android/server/WiredAccessoryManager;->access$300(Lcom/android/server/WiredAccessoryManager;)V
+HSPLcom/android/server/WiredAccessoryManager;->access$500()Ljava/lang/String;
+HSPLcom/android/server/WiredAccessoryManager;->access$600(Lcom/android/server/WiredAccessoryManager;)Z
+PLcom/android/server/WiredAccessoryManager;->notifyWiredAccessoryChanged(JII)V
 HSPLcom/android/server/WiredAccessoryManager;->onSystemReady()V
 HSPLcom/android/server/WiredAccessoryManager;->systemReady()V
-HSPLcom/android/server/WiredAccessoryManager;->updateLocked(Ljava/lang/String;I)V
+PLcom/android/server/WiredAccessoryManager;->updateLocked(Ljava/lang/String;I)V
+PLcom/android/server/ZramWriteback$1;-><init>(Lcom/android/server/ZramWriteback;Ljava/lang/String;Landroid/app/job/JobParameters;)V
 PLcom/android/server/ZramWriteback$1;->run()V
+HSPLcom/android/server/ZramWriteback;-><clinit>()V
 PLcom/android/server/ZramWriteback;-><init>()V
+PLcom/android/server/ZramWriteback;->access$000(Lcom/android/server/ZramWriteback;)V
+PLcom/android/server/ZramWriteback;->access$100(Landroid/content/Context;)V
 PLcom/android/server/ZramWriteback;->flushIdlePages()V
 PLcom/android/server/ZramWriteback;->getWrittenPageCount()I
 PLcom/android/server/ZramWriteback;->isWritebackEnabled()Z
@@ -2042,211 +4462,920 @@
 PLcom/android/server/ZramWriteback;->onStopJob(Landroid/app/job/JobParameters;)Z
 PLcom/android/server/ZramWriteback;->schedNextWriteback(Landroid/content/Context;)V
 HSPLcom/android/server/ZramWriteback;->scheduleZramWriteback(Landroid/content/Context;)V
+PLcom/android/server/accessibility/-$$Lambda$AbiCM6mjSOPpIPMT9CFGL4UAcKY;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AbiCM6mjSOPpIPMT9CFGL4UAcKY;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AbiCM6mjSOPpIPMT9CFGL4UAcKY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$1$49HMbWlhAK8DBFFzhu5wH_-EQaM;-><init>(Ljava/lang/String;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$1$J4pGG-UiTxhxH1VLNWBa7KLTh48;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4A2E7YnYuU3-mDj4eBvmxi8PEpA;-><clinit>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4A2E7YnYuU3-mDj4eBvmxi8PEpA;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4A2E7YnYuU3-mDj4eBvmxi8PEpA;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4X8DTUSf9fNVgqvhoZcnlny0VlE;-><init>(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4X8DTUSf9fNVgqvhoZcnlny0VlE;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$5vwr6qV-eqdCr73CeDmVnsJlZHM;-><clinit>()V
 HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$5vwr6qV-eqdCr73CeDmVnsJlZHM;-><init>()V
 HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$5vwr6qV-eqdCr73CeDmVnsJlZHM;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$CNt8wbTQCYcsUnUkUCQHtKqr-tY;->acceptOrThrow(Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$Gu-W_dQ2mWyy8l4tm19TzFxGbeM;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BB160fzAC7iBy5jJ5MWjuD3DeD8;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BB160fzAC7iBy5jJ5MWjuD3DeD8;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BX2CMQr5jU9WhPYx7Aaae4zgxf4;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BX2CMQr5jU9WhPYx7Aaae4zgxf4;-><init>()V
+HPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BX2CMQr5jU9WhPYx7Aaae4zgxf4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$Gu-W_dQ2mWyy8l4tm19TzFxGbeM;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$Gu-W_dQ2mWyy8l4tm19TzFxGbeM;-><init>()V
 PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$Gu-W_dQ2mWyy8l4tm19TzFxGbeM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$K4sS36agT2_B03tVUTy8mldugxY;->acceptOrThrow(Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$RFkfb_W9wnTTs_gy8Dg3k2uQOYQ;->run()V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$_rvRsbhZRBJitXrpMqI0NptLUa8;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$INvzqadejxj-XxBJAa177LZwIDQ;-><init>(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$INvzqadejxj-XxBJAa177LZwIDQ;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$LBcFUTzQoOf533NwD2ZIwFqFJYg;-><clinit>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$LBcFUTzQoOf533NwD2ZIwFqFJYg;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$LBcFUTzQoOf533NwD2ZIwFqFJYg;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$NCeV24lEcO5W6ZZr1GqGK-ylU9g;-><clinit>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$NCeV24lEcO5W6ZZr1GqGK-ylU9g;-><init>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$NCeV24lEcO5W6ZZr1GqGK-ylU9g;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$PPQodQ1oFD7RLj5c4axXJBoCbR8;-><init>(J)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$PPQodQ1oFD7RLj5c4axXJBoCbR8;->acceptOrThrow(Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ZdgJH-YGWmUCqtsR2uYpejEExzw;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;Ljava/util/Set;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ZdgJH-YGWmUCqtsR2uYpejEExzw;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$he8-7PL6YxfY9L7x0CLg6DATNxg;-><clinit>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$he8-7PL6YxfY9L7x0CLg6DATNxg;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$he8-7PL6YxfY9L7x0CLg6DATNxg;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$heq1MRdQjg8BGWFbpV3PEpnDVcg;-><clinit>()V
 HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$heq1MRdQjg8BGWFbpV3PEpnDVcg;-><init>()V
 HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$heq1MRdQjg8BGWFbpV3PEpnDVcg;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mAPLBShddfLlktd9Q8jVo04VVXo;-><init>()V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mAPLBShddfLlktd9Q8jVo04VVXo;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$w0ifSldCn8nADYgU7v1foSdmfe0;-><init>()V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$w0ifSldCn8nADYgU7v1foSdmfe0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;-><init>()V
-HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;->accept(Ljava/lang/Object;)V
-PLcom/android/server/accessibility/-$$Lambda$X-d4PICw0vnPU2BuBjOCbMMfcgU;-><init>()V
-PLcom/android/server/accessibility/-$$Lambda$X-d4PICw0vnPU2BuBjOCbMMfcgU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;-><init>()V
-HSPLcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;-><init>(Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/GlobalActionPerformer;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->canReceiveEventsLocked()Z
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getCapabilities()I
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getComponentName()Landroid/content/ComponentName;
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getRelevantEventTypes()I
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onAdded()V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdLocked(I)I
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
-HSPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wantsEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$iCLwAtq-px2o256DhoyM-0_S-Uc;-><init>(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$iCLwAtq-px2o256DhoyM-0_S-Uc;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ifdWn5KwwehtrFVplnBr1oDsgh8;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ifdWn5KwwehtrFVplnBr1oDsgh8;->acceptOrThrow(Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$luI_C3QiJWsM08i8m3lx484SyyY;-><clinit>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$luI_C3QiJWsM08i8m3lx484SyyY;-><init>()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$luI_C3QiJWsM08i8m3lx484SyyY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mu7O1RAujG8e8HXPylcZ6hd_kNU;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mu7O1RAujG8e8HXPylcZ6hd_kNU;->run()V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$vOsKAMFlSRp8W9N5pJiqJ7ToRQA;-><init>(I)V
+HSPLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$vOsKAMFlSRp8W9N5pJiqJ7ToRQA;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$zXJtauhUptSkQJSF-M55-grAVbo;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$zXJtauhUptSkQJSF-M55-grAVbo;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$zXJtauhUptSkQJSF-M55-grAVbo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityWindowManager$Ky3Q5Gg_NEaXwBlFb7wxyjIUci0;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$AccessibilityWindowManager$Ky3Q5Gg_NEaXwBlFb7wxyjIUci0;-><init>()V
+HPLcom/android/server/accessibility/-$$Lambda$AccessibilityWindowManager$Ky3Q5Gg_NEaXwBlFb7wxyjIUci0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$CXn5BYHEDMuDgWNKCgknaVOAyJ8;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$CXn5BYHEDMuDgWNKCgknaVOAyJ8;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$CXn5BYHEDMuDgWNKCgknaVOAyJ8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$MagnificationController$UxSkaR2uzdX0ekJv4Wtodc8tuMY;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$MagnificationController$UxSkaR2uzdX0ekJv4Wtodc8tuMY;-><init>()V
+PLcom/android/server/accessibility/-$$Lambda$MagnificationController$UxSkaR2uzdX0ekJv4Wtodc8tuMY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$SP6uGJNthzczgi990Xl2SJhDOMs;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$SP6uGJNthzczgi990Xl2SJhDOMs;-><init>()V
+HPLcom/android/server/accessibility/-$$Lambda$SP6uGJNthzczgi990Xl2SJhDOMs;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/-$$Lambda$UiAutomationManager$UiAutomationService$z2oxrodQt4ZxyzsfB6p_GYgwxqk;-><init>(Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;)V
+PLcom/android/server/accessibility/-$$Lambda$UiAutomationManager$UiAutomationService$z2oxrodQt4ZxyzsfB6p_GYgwxqk;->run()V
+PLcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;-><clinit>()V
+PLcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;-><init>()V
+HPLcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;-><init>(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/os/Looper;)V
+HPLcom/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
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->isMagnificationCallbackEnabled(I)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->notifyAccessibilityButtonAvailabilityChangedLocked(Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->notifyAccessibilityButtonClickedLocked(I)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->notifyMagnificationChangedLocked(ILandroid/graphics/Region;FFF)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection$InvocationHandler;->setMagnificationCallbackEnabled(IZ)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;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$000(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;ILandroid/view/accessibility/AccessibilityEvent;Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$100(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Landroid/accessibilityservice/AccessibilityGestureEvent;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$200(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$300(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;ILandroid/graphics/Region;FFF)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$500(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->access$600(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;Z)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->canReceiveEventsLocked()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->ensureWindowsAvailableTimedLocked(I)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findAccessibilityNodeInfoByAccessibilityId(IJILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJLandroid/os/Bundle;)[Ljava/lang/String;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findAccessibilityNodeInfosByViewId(IJLjava/lang/String;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)[Ljava/lang/String;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->findFocus(IJIILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)[Ljava/lang/String;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getCapabilities()I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getMagnificationRegion(I)Landroid/graphics/Region;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getMagnificationScale(I)F
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getRelevantEventTypes()I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getServiceInterfaceSafely()Landroid/accessibilityservice/IAccessibilityServiceClient;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindow(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindows()Landroid/view/accessibility/AccessibilityWindowInfo$WindowListSparseArray;
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->getWindowsByDisplayLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isConnectedLocked()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isMagnificationCallbackEnabled(I)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isMultiFingerGesturesEnabled()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->isServiceHandlesDoubleTapEnabled()Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityButtonAvailabilityChangedInternal(Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityButtonAvailabilityChangedLocked(Z)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityButtonClickedInternal(I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityButtonClickedLocked(I)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyAccessibilityEventInternal(ILandroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyClearAccessibilityCacheInternal()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyClearAccessibilityNodeInfoCache()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyGesture(Landroid/accessibilityservice/AccessibilityGestureEvent;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyGestureInternal(Landroid/accessibilityservice/AccessibilityGestureEvent;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyMagnificationChangedInternal(ILandroid/graphics/Region;FFF)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->notifyMagnificationChangedLocked(ILandroid/graphics/Region;FFF)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onAdded()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onDisplayAdded(I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onDisplayRemoved(I)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onKeyEvent(Landroid/view/KeyEvent;I)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->onRemoved()V
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->performAccessibilityAction(IJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;J)Z
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->performAccessibilityActionInternal(IIJILandroid/os/Bundle;ILandroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IJ)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->registerMagnificationIfNeeded(ILcom/android/server/accessibility/MagnificationController;)Z
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resetLocked()V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdForFindFocusLocked(II)I
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->resolveAccessibilityWindowIdLocked(I)I
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setDynamicallyConfigurableProperties(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setMagnificationCallbackEnabled(IZ)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setMagnificationScaleAndCenter(IFFFZ)Z
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setOnKeyEventResult(ZI)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->setServiceInfo(Landroid/accessibilityservice/AccessibilityServiceInfo;)V
+PLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+HPLcom/android/server/accessibility/AbstractAccessibilityServiceConnection;->wantsEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;-><init>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->inputSourceValid()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->reset()V
+HPLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->shouldProcessScroll()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;->updateInputSource(I)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;-><init>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->inputSourceValid()Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->reset()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->shouldProcessKeyEvent(Landroid/view/KeyEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$KeyboardEventStreamState;->updateInputSource(I)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter$TouchScreenEventStreamState;-><init>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter$TouchScreenEventStreamState;->reset()V
+HPLcom/android/server/accessibility/AccessibilityInputFilter$TouchScreenEventStreamState;->shouldProcessMotionEvent(Landroid/view/MotionEvent;)Z
+PLcom/android/server/accessibility/AccessibilityInputFilter;-><clinit>()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/util/SparseArray;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->addFirstEventHandler(ILcom/android/server/accessibility/EventStreamTransformation;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->clearEvents(I)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->clearEventsForAllEventHandlers(I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->disableFeatures()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->enableFeatures()V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->getEventStreamState(Landroid/view/InputEvent;)Lcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->handleMotionEvent(Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->isDisplayIdValid(I)Z
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->notifyAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->onInputEvent(Landroid/view/InputEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onInstalled()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onKeyEvent(Landroid/view/KeyEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->onUninstalled()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->processKeyEvent(Lcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;Landroid/view/KeyEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityInputFilter;->processMotionEvent(Lcom/android/server/accessibility/AccessibilityInputFilter$EventStreamState;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->resetStreamState()V
+PLcom/android/server/accessibility/AccessibilityInputFilter;->setUserAndEnabledFeatures(II)V
+HSPLcom/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
-HSPLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageRemoved(Ljava/lang/String;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageRemoved(Ljava/lang/String;I)V
 PLcom/android/server/accessibility/AccessibilityManagerService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$1;->onSomePackagesChanged()V
+HPLcom/android/server/accessibility/AccessibilityManagerService$1;->onSomePackagesChanged()V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$2;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Handler;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;->register(Landroid/content/ContentResolver;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->getValidDisplayList()Ljava/util/ArrayList;
 HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->initializeDisplayList()V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->isValidDisplay(Landroid/view/Display;)Z
 PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayAdded(I)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayChanged(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayRemoved(I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/GlobalActionPerformer;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;->onDisplayRemoved(I)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$1;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;Lcom/android/server/accessibility/AccessibilityUserState;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;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/accessibility/AccessibilityManagerService;)V
 PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
 PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->clearAccessibilityFocusNotLocked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked()Landroid/view/accessibility/AccessibilityNodeInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->getAccessibilityFocusNotLocked(I)Landroid/view/accessibility/AccessibilityNodeInfo;
+PLcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;->performActionOnAccessibilityFocusedItemNotLocked(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z
 HSPLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;->binderDied()V
-PLcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;->getPackageName()Ljava/lang/String;
-PLcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;->getRemote()Landroid/view/accessibility/IAccessibilityInteractionConnection;
-PLcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;->getUid()I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;->unlinkToDeath()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canCaptureFingerprintGestures(Lcom/android/server/accessibility/AccessibilityServiceConnection;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canDispatchAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canGetAccessibilityNodeInfoLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;I)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->checkAccessibilityAccess(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->computeValidReportedPackages(Ljava/lang/String;I)[Ljava/lang/String;
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->findA11yWindowInfoById(I)Landroid/view/accessibility/AccessibilityWindowInfo;
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getActiveWindowId()I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->getFocusedWindowId()I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isRetrievalAllowingWindowLocked(I)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->isValidPackageForUid(Ljava/lang/String;I)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->onAccessibilityClientRemovedLocked(I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveProfileParentLocked(I)I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->resolveValidReportedPackageLocked(Ljava/lang/CharSequence;II)Ljava/lang/String;
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->sendEventsForChangedWindowsLocked(Ljava/util/List;Landroid/util/SparseArray;)V
-PLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->setAccessibilityFocusedWindowLocked(I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateActiveAndAccessibilityFocusedWindowLocked(IJII)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;->updateWindowsLocked(Ljava/util/List;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->addServiceLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getBindInstantServiceAllowed()Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getBindingServicesLocked()Ljava/util/Set;
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->getClientState()I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->isHandlingAccessibilityEvents()Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService$UserState;->onSwitchToAnotherUserLocked()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->getTypeForWindowManagerWindowType(I)I
-HSPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->onWindowsForAccessibilityChanged(Ljava/util/List;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService$WindowsForAccessibilityCallback;->populateReportedWindowLocked(Landroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;
+HSPLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/Looper;)V
+PLcom/android/server/accessibility/AccessibilityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;-><clinit>()V
 HSPLcom/android/server/accessibility/AccessibilityManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$000(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$100(Lcom/android/server/accessibility/AccessibilityManagerService;)Ljava/lang/Object;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1000(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1200(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/Context;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1300(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityInputFilter;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1300(Lcom/android/server/accessibility/AccessibilityManagerService;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1400(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityInputFilter;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1508()I
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1600(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1700(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilitySecurityPolicy;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1800(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1900(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityWindowManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$1900(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/SystemActionPerformer;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$200(Lcom/android/server/accessibility/AccessibilityManagerService;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2000(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityWindowManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2100(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/wm/ActivityTaskManagerInternal;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2200(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2300(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/MagnificationController;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2300(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$2400(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2400(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/MagnificationController;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$2500(Lcom/android/server/accessibility/AccessibilityManagerService;)Landroid/content/pm/PackageManager;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$2500(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$2600(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$2700(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$300(Lcom/android/server/accessibility/AccessibilityManagerService;)Lcom/android/server/accessibility/AccessibilityUserState;
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$3000(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$3300(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$400(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$500(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$600(Lcom/android/server/accessibility/AccessibilityManagerService;I)Lcom/android/server/accessibility/AccessibilityUserState;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$700(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$700(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->access$800(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->access$900(Lcom/android/server/accessibility/AccessibilityManagerService;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->addClient(Landroid/view/accessibility/IAccessibilityManagerClient;I)J
 PLcom/android/server/accessibility/AccessibilityManagerService;->announceNewUserIfNeeded()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->canRegisterService(Landroid/content/pm/ServiceInfo;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->canRequestAndRequestsTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-PLcom/android/server/accessibility/AccessibilityManagerService;->clearAccessibilityFocus(I)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->clearAccessibilityFocus(Ljava/util/function/IntSupplier;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->broadcastToClients(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/function/Consumer;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->canRequestAndRequestsTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
 PLcom/android/server/accessibility/AccessibilityManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->findWindowIdLocked(Landroid/os/IBinder;)I
-PLcom/android/server/accessibility/AccessibilityManagerService;->getCompatibleMagnificationSpecLocked(I)Landroid/view/MagnificationSpec;
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->getConnectionLocked(I)Lcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getAccessibilityShortcutTargets(I)Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getAccessibilityShortcutTargetsInternal(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getActiveWindowId()I
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getClientStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;)I
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getCompatibleMagnificationSpecLocked(I)Landroid/view/MagnificationSpec;
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserIdLocked()I
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getCurrentUserStateLocked()Lcom/android/server/accessibility/AccessibilityUserState;
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->getEnabledAccessibilityServiceList(II)Ljava/util/List;
-PLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->getInstalledAccessibilityServiceList(I)Ljava/util/List;
 PLcom/android/server/accessibility/AccessibilityManagerService;->getInteractionBridge()Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->getPendingIntentActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getKeyEventDispatcher()Lcom/android/server/accessibility/KeyEventDispatcher;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getMagnificationController()Lcom/android/server/accessibility/MagnificationController;
+PLcom/android/server/accessibility/AccessibilityManagerService;->getPendingIntentActivity(Landroid/content/Context;ILandroid/content/Intent;I)Landroid/app/PendingIntent;
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillis()J
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->getUserState(I)Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getRecommendedTimeoutMillisLocked(Lcom/android/server/accessibility/AccessibilityUserState;)J
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getUserState(I)Lcom/android/server/accessibility/AccessibilityUserState;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->getUserStateLocked(I)Lcom/android/server/accessibility/AccessibilityUserState;
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->getValidDisplayList()Ljava/util/ArrayList;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->init()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->interrupt(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->isAccessibilityButtonShown()Z
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->isClientInPackageWhitelist(Landroid/accessibilityservice/AccessibilityServiceInfo;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$0$AccessibilityManagerService(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$1$AccessibilityManagerService(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChanged(Z)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChangedLocked(Z)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(Z)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutSettingLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromStringLocked(Ljava/lang/String;Ljava/util/Set;Z)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->readUserRecommendedUiTimeoutSettingsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$5vwr6qV-eqdCr73CeDmVnsJlZHM(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$BX2CMQr5jU9WhPYx7Aaae4zgxf4(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$Gu-W_dQ2mWyy8l4tm19TzFxGbeM(Lcom/android/server/accessibility/AccessibilityManagerService;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$NCeV24lEcO5W6ZZr1GqGK-ylU9g(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$heq1MRdQjg8BGWFbpV3PEpnDVcg(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/os/RemoteCallbackList;J)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$luI_C3QiJWsM08i8m3lx484SyyY(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$migrateAccessibilityButtonSettingsIfNecessaryLocked$13(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$migrateAccessibilityButtonSettingsIfNecessaryLocked$14(Ljava/lang/String;Lcom/android/server/accessibility/AccessibilityUserState;Ljava/util/Set;Ljava/util/Set;Landroid/content/ComponentName;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$notifyClientsOfServicesStateChange$6(JLandroid/view/accessibility/IAccessibilityManagerClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$readAccessibilityButtonSettingsLocked$8(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$readAccessibilityShortcutKeySettingLocked$7(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$readComponentNamesFromSettingLocked$2(Ljava/lang/String;)Landroid/content/ComponentName;
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$sendStateToClients$5(ILandroid/view/accessibility/IAccessibilityManagerClient;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateAccessibilityButtonTargetsLocked$11(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateAccessibilityShortcutKeyTargetsLocked$9(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$0$AccessibilityManagerService(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->lambda$updateRelevantEventsLocked$1$AccessibilityManagerService(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->lambda$zXJtauhUptSkQJSF-M55-grAVbo(Lcom/android/server/accessibility/AccessibilityManagerService;II)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->migrateAccessibilityButtonSettingsIfNecessaryLocked(Lcom/android/server/accessibility/AccessibilityUserState;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonClicked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonClickedLocked(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChanged(Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityButtonVisibilityChangedLocked(Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyAccessibilityServicesDelayedLocked(Landroid/view/accessibility/AccessibilityEvent;Z)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyClearAccessibilityCacheLocked()V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->notifyClientsOfServicesStateChange(Landroid/os/RemoteCallbackList;J)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyGestureLocked(Landroid/accessibilityservice/AccessibilityGestureEvent;Z)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifyKeyEvent(Landroid/view/KeyEvent;I)Z
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyMagnificationChanged(ILandroid/graphics/Region;FFF)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->notifyMagnificationChangedLocked(ILandroid/graphics/Region;FFF)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->notifySystemActionsChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->onBootPhase(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onClientChangeLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onGesture(Landroid/accessibilityservice/AccessibilityGestureEvent;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->onServiceInfoChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onSystemActionsChanged()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onTouchInteractionEnd()V
+PLcom/android/server/accessibility/AccessibilityManagerService;->onTouchInteractionStart()V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->onUserStateChangedLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->performActionOnAccessibilityFocusedItem(Landroid/view/accessibility/AccessibilityNodeInfo$AccessibilityAction;)Z
+PLcom/android/server/accessibility/AccessibilityManagerService;->persistColonDelimitedSetToSettingLocked(Ljava/lang/String;ILjava/util/Set;Ljava/util/function/Function;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->persistComponentNamesToSettingLocked(Ljava/lang/String;Ljava/util/Set;I)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityButtonSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readAccessibilityShortcutKeySettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readAutoclickEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedSettingToSet(Ljava/lang/String;ILjava/util/Set;Ljava/util/function/Function;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readColonDelimitedStringToSet(Ljava/lang/String;Ljava/util/Set;ZLjava/util/function/Function;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readComponentNamesFromSettingLocked(Ljava/lang/String;ILjava/util/Set;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readConfigurationForUserStateLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readEnabledAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readHighTextContrastEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityServiceLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readInstalledAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readMagnificationEnabledSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readTouchExplorationGrantedAccessibilityServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->readUserRecommendedUiTimeoutSettingsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->registerBroadcastReceivers()V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnectionLocked(II)V
-PLcom/android/server/accessibility/AccessibilityManagerService;->replaceCallbackIfNeeded(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;IIIJ)Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->registerSystemAction(Landroid/app/RemoteAction;I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->registerUiTestAutomationService(Landroid/os/IBinder;Landroid/accessibilityservice/IAccessibilityServiceClient;Landroid/accessibilityservice/AccessibilityServiceInfo;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->removeUser(I)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->scheduleNotifyClientsOfServicesStateChangeLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateClientsIfNeededLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->scheduleUpdateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventForCurrentUserLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;I)V
+HPLcom/android/server/accessibility/AccessibilityManagerService;->sendAccessibilityEventToInputFilter(Landroid/view/accessibility/AccessibilityEvent;)V
 PLcom/android/server/accessibility/AccessibilityManagerService;->sendFingerprintGesture(I)Z
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->sendServicesStateChanged(Landroid/os/RemoteCallbackList;J)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToAllClients(II)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(II)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->sendStateToClients(ILandroid/os/RemoteCallbackList;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->setMotionEventInjectors(Landroid/util/SparseArray;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
 HSPLcom/android/server/accessibility/AccessibilityManagerService;->switchUser(I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSetting(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateRecommendedUiTimeoutLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;)V
-HSPLcom/android/server/accessibility/AccessibilityManagerService;->userHasListeningMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;I)Z
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService$UserState;Landroid/content/Context;Landroid/content/ComponentName;Landroid/accessibilityservice/AccessibilityServiceInfo;ILandroid/os/Handler;Ljava/lang/Object;Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/GlobalActionPerformer;)V
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->bindLocked()V
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->canRetrieveInteractiveWindowsLocked()Z
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->initializeService()V
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->isCalledForCurrentUserLocked()Z
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->isCapturingFingerprintGestures()Z
-HSPLcom/android/server/accessibility/AccessibilityServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->unlockUser(I)V
+PLcom/android/server/accessibility/AccessibilityManagerService;->unregisterUiTestAutomationService(Landroid/accessibilityservice/IAccessibilityServiceClient;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityButtonTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityEnabledSettingLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateAccessibilityShortcutKeyTargetsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateFilterKeyEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateFingerprintGestureHandling(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateInputFilter(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateLegacyCapabilitiesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateMagnificationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updatePerformGesturesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateRecommendedUiTimeoutLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateRelevantEventsLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateTouchExplorationLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->updateWindowsForAccessibilityCallbackLocked(Lcom/android/server/accessibility/AccessibilityUserState;)V
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->userHasListeningMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;I)Z
+HSPLcom/android/server/accessibility/AccessibilityManagerService;->userHasMagnificationServicesLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><clinit>()V
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canCaptureFingerprintGestures(Lcom/android/server/accessibility/AccessibilityServiceConnection;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canControlMagnification(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canDispatchAccessibilityEventLocked(ILandroid/view/accessibility/AccessibilityEvent;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canGetAccessibilityNodeInfoLocked(ILcom/android/server/accessibility/AbstractAccessibilityServiceConnection;I)Z
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRegisterService(Landroid/content/pm/ServiceInfo;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowContentLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->canRetrieveWindowsLocked(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->checkAccessibilityAccess(Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->computeValidReportedPackages(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->enforceCallerIsRecentsOrHasPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->enforceCallingOrSelfPermission(Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->hasPermission(Ljava/lang/String;)Z
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isCallerInteractingAcrossUsers(I)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isRetrievalAllowingWindowLocked(II)Z
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isShellAllowedToRetrieveWindowLocked(II)Z
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->isValidPackageForUid(Ljava/lang/String;I)Z
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I
+HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveValidReportedPackageLocked(Ljava/lang/CharSequence;II)Ljava/lang/String;
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setAccessibilityWindowManager(Lcom/android/server/accessibility/AccessibilityWindowManager;)V
+HSPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->setAppWidgetManager(Landroid/appwidget/AppWidgetManagerInternal;)V
+PLcom/android/server/accessibility/AccessibilitySecurityPolicy;->updateEventSourceLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;-><init>(Lcom/android/server/accessibility/AccessibilityUserState;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;Lcom/android/server/wm/WindowManagerInternal;Lcom/android/server/accessibility/SystemActionPerformer;Lcom/android/server/accessibility/AccessibilityWindowManager;Lcom/android/server/wm/ActivityTaskManagerInternal;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->bindLocked()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->binderDied()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->canRetrieveInteractiveWindowsLocked()Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->disableSelf()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
+HPLcom/android/server/accessibility/AccessibilityServiceConnection;->hasRightsToCurrentUserLocked()Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->initializeService()V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->isAccessibilityButtonAvailable()Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->isAccessibilityButtonAvailableLocked(Lcom/android/server/accessibility/AccessibilityUserState;)Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->isCapturingFingerprintGestures()Z
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->lambda$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/accessibility/AccessibilityServiceConnection;->unbindLocked()V
+HSPLcom/android/server/accessibility/AccessibilityUserState;-><clinit>()V
+HSPLcom/android/server/accessibility/AccessibilityUserState;-><init>(ILandroid/content/Context;Lcom/android/server/accessibility/AccessibilityUserState$ServiceInfoChangeListener;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->addServiceLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
+HPLcom/android/server/accessibility/AccessibilityUserState;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getBindInstantServiceAllowedLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getBindingServicesLocked()Ljava/util/Set;
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getClientStateLocked(Z)I
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getCrashedServicesLocked()Ljava/util/Set;
+PLcom/android/server/accessibility/AccessibilityUserState;->getEnabledServicesLocked()Ljava/util/Set;
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getInstalledServiceInfoLocked(Landroid/content/ComponentName;)Landroid/accessibilityservice/AccessibilityServiceInfo;
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getInteractiveUiTimeoutLocked()I
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getLastSentClientStateLocked()I
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getNonInteractiveUiTimeoutLocked()I
+PLcom/android/server/accessibility/AccessibilityUserState;->getServiceAssignedToAccessibilityButtonLocked()Landroid/content/ComponentName;
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getShortcutTargetsLocked(I)Landroid/util/ArraySet;
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getUserInteractiveUiTimeoutLocked()I
+HSPLcom/android/server/accessibility/AccessibilityUserState;->getUserNonInteractiveUiTimeoutLocked()I
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isAutoclickEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isDisplayMagnificationEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isFilterKeyEventsEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isHandlingAccessibilityEventsLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isMultiFingerGesturesEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isNavBarMagnificationEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isPerformGesturesEnabledLocked()Z
+PLcom/android/server/accessibility/AccessibilityUserState;->isServiceHandlesDoubleTapEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isShortcutKeyMagnificationEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isShortcutMagnificationEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isShortcutTargetInstalledLocked(Ljava/lang/String;)Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isTextHighContrastEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->isTouchExplorationEnabledLocked()Z
+HSPLcom/android/server/accessibility/AccessibilityUserState;->onSwitchToAnotherUserLocked()V
+PLcom/android/server/accessibility/AccessibilityUserState;->removeServiceLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->serviceDisconnectedLocked(Lcom/android/server/accessibility/AccessibilityServiceConnection;)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setDisplayMagnificationEnabledLocked(Z)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setFilterKeyEventsEnabledLocked(Z)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setInteractiveUiTimeoutLocked(I)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setLastSentClientStateLocked(I)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setMultiFingerGesturesLocked(Z)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setNonInteractiveUiTimeoutLocked(I)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setPerformGesturesEnabledLocked(Z)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->setServiceHandlesDoubleTapLocked(Z)V
+PLcom/android/server/accessibility/AccessibilityUserState;->setTouchExplorationEnabledLocked(Z)V
+HSPLcom/android/server/accessibility/AccessibilityUserState;->unbindAllServicesLocked()V
+PLcom/android/server/accessibility/AccessibilityUserState;->updateCrashedServicesIfNeededLocked()V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;-><init>(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->access$1300(Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->cacheWindows(Ljava/util/List;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->clearWindowsLocked()V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getTypeForWindowManagerWindowType(I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getWatchOutsideTouchWindowIdLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->getWindowListLocked()Ljava/util/List;
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->isTrackingWindowsLocked()Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->onWindowsForAccessibilityChanged(ZILandroid/os/IBinder;Ljava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->populateReportedWindowLocked(ILandroid/view/WindowInfo;)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->sendEventsForChangedWindowsLocked(Ljava/util/List;Landroid/util/SparseArray;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->setAccessibilityFocusedWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->setActiveWindowLocked(I)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->shouldUpdateWindowsLocked(ZLjava/util/List;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->startTrackingWindowsLocked()Z
+PLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->stopTrackingWindowsLocked()V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->updateWindowsLocked(ILjava/util/List;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z
+HPLcom/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;->binderDied()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
+HPLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->linkToDeath()V
+PLcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;->unlinkToDeath()V
+HSPLcom/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;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$000(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$100(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$1000(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$1100(Lcom/android/server/accessibility/AccessibilityWindowManager;I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$1200(Lcom/android/server/accessibility/AccessibilityWindowManager;II)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$200(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$202(Lcom/android/server/accessibility/AccessibilityWindowManager;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$300(Lcom/android/server/accessibility/AccessibilityWindowManager;)Ljava/lang/Object;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$400(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$402(Lcom/android/server/accessibility/AccessibilityWindowManager;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$500(Lcom/android/server/accessibility/AccessibilityWindowManager;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$502(Lcom/android/server/accessibility/AccessibilityWindowManager;Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$600(Lcom/android/server/accessibility/AccessibilityWindowManager;)Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$700(Lcom/android/server/accessibility/AccessibilityWindowManager;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$702(Lcom/android/server/accessibility/AccessibilityWindowManager;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$802(Lcom/android/server/accessibility/AccessibilityWindowManager;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->access$900(Lcom/android/server/accessibility/AccessibilityWindowManager;)Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->addAccessibilityInteractionConnection(Landroid/view/IWindow;Landroid/view/accessibility/IAccessibilityInteractionConnection;Ljava/lang/String;I)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->clearAccessibilityFocusLocked(I)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->clearAccessibilityFocusMainThread(II)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->computePartialInteractiveRegionForWindowLocked(ILandroid/graphics/Region;)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->findA11yWindowInfoByIdLocked(I)Landroid/view/accessibility/AccessibilityWindowInfo;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->findFocusedWindowId(I)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowIdLocked(ILandroid/os/IBinder;)I
+PLcom/android/server/accessibility/AccessibilityWindowManager;->findWindowInfoByIdLocked(I)Landroid/view/WindowInfo;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getActiveWindowId(I)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getConnectionLocked(II)Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayIdByUserIdAndWindowIdLocked(II)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayListLocked()Ljava/util/ArrayList;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getDisplayWindowObserverByWindowIdLocked(I)Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getFocusedWindowId(I)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getInteractionConnectionsForUserLocked(I)Landroid/util/SparseArray;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getPictureInPictureActionReplacingConnection()Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowListLocked(I)Ljava/util/List;
+PLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowOwnerUserId(Landroid/os/IBinder;)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokenForUserAndWindowIdLocked(II)Landroid/os/IBinder;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->getWindowTokensForUserLocked(I)Landroid/util/SparseArray;
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked()Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->isTrackingWindowsLocked(I)Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForInteractionConnectionsLocked(I)Z
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->isValidUserForWindowTokensLocked(I)Z
+PLcom/android/server/accessibility/AccessibilityWindowManager;->lambda$Ky3Q5Gg_NEaXwBlFb7wxyjIUci0(Lcom/android/server/accessibility/AccessibilityWindowManager;II)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->notifyOutsideTouch(II)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->onAccessibilityInteractionConnectionRemovedLocked(ILandroid/os/IBinder;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->onTouchInteractionEnd()V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->onTouchInteractionStart()V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->removeAccessibilityInteractionConnection(Landroid/view/IWindow;)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->removeAccessibilityInteractionConnectionInternalLocked(Landroid/os/IBinder;Landroid/util/SparseArray;Landroid/util/SparseArray;)I
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->removeAccessibilityInteractionConnectionLocked(II)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->setAccessibilityFocusedWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->setActiveWindowLocked(I)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->setPictureInPictureActionReplacingConnection(Landroid/view/accessibility/IAccessibilityInteractionConnection;)V
+PLcom/android/server/accessibility/AccessibilityWindowManager;->startTrackingWindows(I)V
+HSPLcom/android/server/accessibility/AccessibilityWindowManager;->stopTrackingWindows(I)V
+HPLcom/android/server/accessibility/AccessibilityWindowManager;->updateActiveAndAccessibilityFocusedWindowLocked(IIJII)V
+PLcom/android/server/accessibility/ActionReplacingCallback;-><init>(Landroid/view/accessibility/IAccessibilityInteractionConnectionCallback;Landroid/view/accessibility/IAccessibilityInteractionConnection;IIJ)V
+PLcom/android/server/accessibility/ActionReplacingCallback;->recycleReplaceActionNodesLocked()V
+PLcom/android/server/accessibility/ActionReplacingCallback;->replaceActionsOnInfoLocked(Landroid/view/accessibility/AccessibilityNodeInfo;)V
+PLcom/android/server/accessibility/ActionReplacingCallback;->replaceInfosActionsAndCallService()V
+PLcom/android/server/accessibility/ActionReplacingCallback;->setFindAccessibilityNodeInfosResult(Ljava/util/List;I)V
+PLcom/android/server/accessibility/BaseEventStreamTransformation;-><init>()V
+HPLcom/android/server/accessibility/BaseEventStreamTransformation;->getNext()Lcom/android/server/accessibility/EventStreamTransformation;
+PLcom/android/server/accessibility/BaseEventStreamTransformation;->setNext(Lcom/android/server/accessibility/EventStreamTransformation;)V
+PLcom/android/server/accessibility/EventStreamTransformation;->clearEvents(I)V
+HPLcom/android/server/accessibility/EventStreamTransformation;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/EventStreamTransformation;->onDestroy()V
+PLcom/android/server/accessibility/EventStreamTransformation;->onKeyEvent(Landroid/view/KeyEvent;I)V
+HPLcom/android/server/accessibility/EventStreamTransformation;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DelegatingState;-><init>(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DelegatingState;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;-><init>(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;Landroid/content/Context;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->afterMultiTapTimeoutTransitionToDelegatingState()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->cacheDelayedMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->clear()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->clearDelayedMotionEvents()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->isFingerDown()Z
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->isMultiTapTriggered(I)Z
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->isTapOutOfDistanceSlop()Z
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->removePendingDelayedMessages()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->sendDelayedMotionEvents()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->setShortcutTriggered(Z)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->tapCount()I
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->timeBetween(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)J
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->timeOf(Landroid/view/MotionEvent;)J
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$DetectingState;->transitionToDelegatingStateAndClear()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;-><clinit>()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;-><init>()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->access$600(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;)Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->access$602(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;)Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->clear()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->countOf(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;I)I
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->initialize(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->obtain(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->obtainInternal()Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$MotionEventInfo;->recycle()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;-><init>(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;Landroid/content/Context;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;->access$000(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;)Landroid/view/GestureDetector;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;->access$100(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;)Landroid/view/ScaleGestureDetector;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;->clear()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;->onScaleBegin(Landroid/view/ScaleGestureDetector;)Z
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$PanningScalingState;->onScroll(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ScreenStateReceiver;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ScreenStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ScreenStateReceiver;->register()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ScreenStateReceiver;->unregister()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ViewportDraggingState;-><init>(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler$ViewportDraggingState;->clear()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/MagnificationController;ZZI)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->access$200(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$State;)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->access$300(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;)I
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->access$500(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->access$700(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler;Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$State;Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->access$900(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->clearAndTransitionToStateDetecting()V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->clearEvents(I)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->dispatchTransformedEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->handleEventWith(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$State;Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->onDestroy()V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->onMotionEventInternal(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->recycleAndNullify(Landroid/view/MotionEvent;)Landroid/view/MotionEvent;
+PLcom/android/server/accessibility/FullScreenMagnificationGestureHandler;->transitionTo(Lcom/android/server/accessibility/FullScreenMagnificationGestureHandler$State;)V
+PLcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;-><init>()V
+PLcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;-><init>(Lcom/android/server/accessibility/KeyEventDispatcher$1;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;-><init>(Landroid/os/Handler;ILjava/lang/Object;Landroid/os/PowerManager;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;->flush(Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;)V
+PLcom/android/server/accessibility/KeyEventDispatcher;->notifyKeyEventLocked(Landroid/view/KeyEvent;ILjava/util/List;)Z
+PLcom/android/server/accessibility/KeyEventDispatcher;->obtainPendingEventLocked(Landroid/view/KeyEvent;I)Lcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;
+PLcom/android/server/accessibility/KeyEventDispatcher;->removeEventFromListLocked(Ljava/util/List;I)Lcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;
+PLcom/android/server/accessibility/KeyEventDispatcher;->removeReferenceToPendingEventLocked(Lcom/android/server/accessibility/KeyEventDispatcher$PendingKeyEvent;)Z
+PLcom/android/server/accessibility/KeyEventDispatcher;->setOnKeyEventResult(Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;ZI)V
+PLcom/android/server/accessibility/KeyboardInterceptor$KeyEventHolder;-><clinit>()V
+PLcom/android/server/accessibility/KeyboardInterceptor$KeyEventHolder;-><init>()V
+PLcom/android/server/accessibility/KeyboardInterceptor$KeyEventHolder;->obtain(Landroid/view/KeyEvent;IJ)Lcom/android/server/accessibility/KeyboardInterceptor$KeyEventHolder;
+PLcom/android/server/accessibility/KeyboardInterceptor$KeyEventHolder;->recycle()V
+PLcom/android/server/accessibility/KeyboardInterceptor;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/policy/WindowManagerPolicy;)V
+PLcom/android/server/accessibility/KeyboardInterceptor;->addEventToQueue(Landroid/view/KeyEvent;IJ)V
+PLcom/android/server/accessibility/KeyboardInterceptor;->getEventDelay(Landroid/view/KeyEvent;I)J
+PLcom/android/server/accessibility/KeyboardInterceptor;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/accessibility/KeyboardInterceptor;->onKeyEvent(Landroid/view/KeyEvent;I)V
+PLcom/android/server/accessibility/KeyboardInterceptor;->processQueuedEvents()V
+PLcom/android/server/accessibility/KeyboardInterceptor;->scheduleProcessQueuedEvents()V
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/wm/WindowManagerInternal;Landroid/os/Handler;J)V
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->getAms()Lcom/android/server/accessibility/AccessibilityManagerService;
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->getAnimationDuration()J
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->getContext()Landroid/content/Context;
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->getHandler()Landroid/os/Handler;
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->getWindowManager()Lcom/android/server/wm/WindowManagerInternal;
+PLcom/android/server/accessibility/MagnificationController$ControllerContext;->newValueAnimator()Landroid/animation/ValueAnimator;
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;-><init>(Lcom/android/server/accessibility/MagnificationController;I)V
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getCenterX()F
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getCenterY()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getMagnificationRegion(Landroid/graphics/Region;)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getMaxOffsetXLocked()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getMaxOffsetYLocked()F
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getMinOffsetXLocked()F
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getMinOffsetYLocked()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getOffsetX()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getOffsetY()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->getScale()F
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->isMagnifying()Z
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->isRegistered()Z
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->magnificationRegionContains(FF)Z
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->onMagnificationChangedLocked()V
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->onMagnificationRegionChanged(Landroid/graphics/Region;)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->onRotationChanged(I)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->register()Z
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->sendSpecToAnimation(Landroid/view/MagnificationSpec;Z)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->setScaleAndCenter(FFFZI)Z
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->unregister(Z)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->updateCurrentSpecWithOffsetsLocked(FF)Z
+HPLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->updateMagnificationRegion(Landroid/graphics/Region;)V
+PLcom/android/server/accessibility/MagnificationController$DisplayMagnification;->updateMagnificationSpecLocked(FFF)Z
+PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/MagnificationController;)V
+PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;->registerIfNecessary()V
+PLcom/android/server/accessibility/MagnificationController$ScreenStateObserver;->unregister()V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Lcom/android/server/accessibility/MagnificationController$ControllerContext;Ljava/lang/Object;I)V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;-><init>(Lcom/android/server/accessibility/MagnificationController$ControllerContext;Ljava/lang/Object;ILcom/android/server/accessibility/MagnificationController$1;)V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;->setEnabled(Z)V
+PLcom/android/server/accessibility/MagnificationController$SpecAnimationBridge;->updateSentSpecMainThread(Landroid/view/MagnificationSpec;Z)V
+PLcom/android/server/accessibility/MagnificationController;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/MagnificationController;-><init>(Lcom/android/server/accessibility/MagnificationController$ControllerContext;Ljava/lang/Object;)V
+PLcom/android/server/accessibility/MagnificationController;->access$000(Lcom/android/server/accessibility/MagnificationController;)Lcom/android/server/accessibility/MagnificationController$ControllerContext;
+PLcom/android/server/accessibility/MagnificationController;->access$100(Lcom/android/server/accessibility/MagnificationController;)Ljava/lang/Object;
+PLcom/android/server/accessibility/MagnificationController;->access$300(Lcom/android/server/accessibility/MagnificationController;IZ)V
+PLcom/android/server/accessibility/MagnificationController;->access$500(Lcom/android/server/accessibility/MagnificationController;)J
+PLcom/android/server/accessibility/MagnificationController;->access$600(Lcom/android/server/accessibility/MagnificationController;)V
+PLcom/android/server/accessibility/MagnificationController;->getMagnificationRegion(ILandroid/graphics/Region;)V
+PLcom/android/server/accessibility/MagnificationController;->getScale(I)F
+HPLcom/android/server/accessibility/MagnificationController;->isMagnifying(I)Z
+PLcom/android/server/accessibility/MagnificationController;->isRegistered(I)Z
+PLcom/android/server/accessibility/MagnificationController;->lambda$UxSkaR2uzdX0ekJv4Wtodc8tuMY(Lcom/android/server/accessibility/MagnificationController;Z)V
+HPLcom/android/server/accessibility/MagnificationController;->magnificationRegionContains(IFF)Z
+PLcom/android/server/accessibility/MagnificationController;->onScreenTurnedOff()V
+PLcom/android/server/accessibility/MagnificationController;->register(I)V
+PLcom/android/server/accessibility/MagnificationController;->resetAllIfNeeded(I)V
+PLcom/android/server/accessibility/MagnificationController;->resetAllIfNeeded(Z)V
+PLcom/android/server/accessibility/MagnificationController;->resetIfNeeded(II)Z
+PLcom/android/server/accessibility/MagnificationController;->resetIfNeeded(IZ)Z
+PLcom/android/server/accessibility/MagnificationController;->setScaleAndCenter(IFFFZI)Z
+PLcom/android/server/accessibility/MagnificationController;->setUserId(I)V
+PLcom/android/server/accessibility/MagnificationController;->unregister(I)V
+PLcom/android/server/accessibility/MagnificationController;->unregisterCallbackLocked(IZ)V
+PLcom/android/server/accessibility/MagnificationController;->unregisterLocked(IZ)V
+HSPLcom/android/server/accessibility/SystemActionPerformer;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;)V
+HSPLcom/android/server/accessibility/SystemActionPerformer;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerInternal;Ljava/util/function/Supplier;Lcom/android/server/accessibility/SystemActionPerformer$SystemActionsChangedListener;)V
+PLcom/android/server/accessibility/SystemActionPerformer;->registerSystemAction(ILandroid/app/RemoteAction;)V
+HSPLcom/android/server/accessibility/UiAutomationManager$1;-><init>(Lcom/android/server/accessibility/UiAutomationManager;)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;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$UiAutomationManager$UiAutomationService()V
+PLcom/android/server/accessibility/UiAutomationManager$UiAutomationService;->supportsFlagForNotImportantViews(Landroid/accessibilityservice/AccessibilityServiceInfo;)Z
+HSPLcom/android/server/accessibility/UiAutomationManager;-><clinit>()V
+HSPLcom/android/server/accessibility/UiAutomationManager;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/accessibility/UiAutomationManager;->access$200()Landroid/content/ComponentName;
 HSPLcom/android/server/accessibility/UiAutomationManager;->canRetrieveInteractiveWindowsLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager;->destroyUiAutomationService()V
+PLcom/android/server/accessibility/UiAutomationManager;->getRelevantEventTypes()I
 HSPLcom/android/server/accessibility/UiAutomationManager;->getServiceInfo()Landroid/accessibilityservice/AccessibilityServiceInfo;
 HSPLcom/android/server/accessibility/UiAutomationManager;->isTouchExplorationEnabledLocked()Z
 HSPLcom/android/server/accessibility/UiAutomationManager;->isUiAutomationRunningLocked()Z
-HSPLcom/android/server/accessibility/UiAutomationManager;->sendAccessibilityEventLocked(Landroid/view/accessibility/AccessibilityEvent;)V
+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;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
 HSPLcom/android/server/accessibility/UiAutomationManager;->suppressingAccessibilityServicesLocked()Z
+PLcom/android/server/accessibility/UiAutomationManager;->unregisterUiTestAutomationServiceLocked(Landroid/accessibilityservice/IAccessibilityServiceClient;)V
+PLcom/android/server/accessibility/gestures/EventDispatcher;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/EventStreamTransformation;Lcom/android/server/accessibility/gestures/TouchState;)V
+PLcom/android/server/accessibility/gestures/EventDispatcher;->getLastInjectedDownEventTime()J
+PLcom/android/server/accessibility/gestures/EventDispatcher;->getLastInjectedHoverEvent()Landroid/view/MotionEvent;
+PLcom/android/server/accessibility/gestures/EventDispatcher;->sendAccessibilityEvent(I)V
+HPLcom/android/server/accessibility/gestures/EventDispatcher;->sendMotionEvent(Landroid/view/MotionEvent;ILandroid/view/MotionEvent;II)V
+PLcom/android/server/accessibility/gestures/EventDispatcher;->setReceiver(Lcom/android/server/accessibility/EventStreamTransformation;)V
+HPLcom/android/server/accessibility/gestures/EventDispatcher;->updateState(Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/GestureManifold;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/gestures/GestureManifold$Listener;Lcom/android/server/accessibility/gestures/TouchState;)V
+HPLcom/android/server/accessibility/gestures/GestureManifold;->clear()V
+PLcom/android/server/accessibility/gestures/GestureManifold;->onGestureCompleted(I)V
+HPLcom/android/server/accessibility/gestures/GestureManifold;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)Z
+HPLcom/android/server/accessibility/gestures/GestureManifold;->onStateChanged(IILandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;-><init>(Lcom/android/server/accessibility/gestures/GestureMatcher;)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->cancel()V
+HPLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->post(IJLandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher$DelayedTransition;->run()V
+PLcom/android/server/accessibility/gestures/GestureMatcher;-><init>(ILandroid/os/Handler;Lcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->access$000(Lcom/android/server/accessibility/gestures/GestureMatcher;)Landroid/os/Handler;
+PLcom/android/server/accessibility/gestures/GestureMatcher;->access$100(Lcom/android/server/accessibility/gestures/GestureMatcher;ILandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->cancelAfter(JLandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->cancelAfterDoubleTapTimeout(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->cancelAfterTapTimeout(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->cancelGesture(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->cancelPendingTransitions()V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->clear()V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->completeAfter(JLandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->completeAfterLongPressTimeout(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->completeGesture(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->getState()I
+PLcom/android/server/accessibility/gestures/GestureMatcher;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)I
+PLcom/android/server/accessibility/gestures/GestureMatcher;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/GestureMatcher;->setState(ILandroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureMatcher;->startGesture(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/GestureUtils;->distance(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)D
+PLcom/android/server/accessibility/gestures/GestureUtils;->isTimedOut(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)Z
+PLcom/android/server/accessibility/gestures/MultiTap;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+PLcom/android/server/accessibility/gestures/MultiTap;->clear()V
+HPLcom/android/server/accessibility/gestures/MultiTap;->isInsideSlop(Landroid/view/MotionEvent;I)Z
+HPLcom/android/server/accessibility/gestures/MultiTap;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTap;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTapAndHold;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+PLcom/android/server/accessibility/gestures/MultiTapAndHold;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/MultiTapAndHold;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->clear()V
+PLcom/android/server/accessibility/gestures/SecondFingerMultiTap;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;IIILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+PLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;IILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+PLcom/android/server/accessibility/gestures/Swipe;-><init>(Landroid/content/Context;[IILcom/android/server/accessibility/gestures/GestureMatcher$StateChangeListener;)V
+HPLcom/android/server/accessibility/gestures/Swipe;->cancelAfterDelay(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/Swipe;->clear()V
+HPLcom/android/server/accessibility/gestures/Swipe;->onDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/Swipe;->onMove(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/Swipe;->onUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/Swipe;->recognizeGesture(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/Swipe;->recognizeGesturePath(Landroid/view/MotionEvent;Landroid/view/MotionEvent;ILjava/util/ArrayList;)V
+PLcom/android/server/accessibility/gestures/Swipe;->toDirection(FF)I
+PLcom/android/server/accessibility/gestures/TouchExplorer$ExitGestureDetectionModeDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$ExitGestureDetectionModeDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;Lcom/android/server/accessibility/gestures/TouchExplorer$1;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$ExitGestureDetectionModeDelayed;->cancel()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$ExitGestureDetectionModeDelayed;->post()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;II)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->cancel()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->forceSendAndRemove()V
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->isPending()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->post()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;->run()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->access$100(Lcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;)Z
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->addEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->cancel()V
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->clear()V
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->isPending()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->post(Landroid/view/MotionEvent;Landroid/view/MotionEvent;II)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverEnterAndMoveDelayed;->run()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;-><init>(Lcom/android/server/accessibility/gestures/TouchExplorer;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->cancel()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->clear()V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->isPending()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->post(Landroid/view/MotionEvent;Landroid/view/MotionEvent;II)V
+PLcom/android/server/accessibility/gestures/TouchExplorer$SendHoverExitDelayed;->run()V
+PLcom/android/server/accessibility/gestures/TouchExplorer;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;-><init>(Landroid/content/Context;Lcom/android/server/accessibility/AccessibilityManagerService;Lcom/android/server/accessibility/gestures/GestureManifold;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->access$200(Lcom/android/server/accessibility/gestures/TouchExplorer;)Landroid/os/Handler;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->access$300(Lcom/android/server/accessibility/gestures/TouchExplorer;)Lcom/android/server/accessibility/gestures/EventDispatcher;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->access$500(Lcom/android/server/accessibility/gestures/TouchExplorer;)I
+PLcom/android/server/accessibility/gestures/TouchExplorer;->access$600(Lcom/android/server/accessibility/gestures/TouchExplorer;)Lcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->access$700(Lcom/android/server/accessibility/gestures/TouchExplorer;)Lcom/android/server/accessibility/gestures/TouchExplorer$SendAccessibilityEventDelayed;
+PLcom/android/server/accessibility/gestures/TouchExplorer;->clear()V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->clearEvents(I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->endGestureDetection(Z)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionDown(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionMoveStateTouchExploring(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionMoveStateTouchInteracting(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleActionUp(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleMotionEventStateClear(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->handleMotionEventStateTouchExploring(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->handleMotionEventStateTouchInteracting(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->onAccessibilityEvent(Landroid/view/accessibility/AccessibilityEvent;)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onDestroy()V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onDoubleTap()Z
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onGestureCancelled(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)Z
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onGestureCompleted(Landroid/accessibilityservice/AccessibilityGestureEvent;)Z
+PLcom/android/server/accessibility/gestures/TouchExplorer;->onGestureStarted()Z
+HPLcom/android/server/accessibility/gestures/TouchExplorer;->onMotionEvent(Landroid/view/MotionEvent;Landroid/view/MotionEvent;I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->sendHoverExitAndTouchExplorationGestureEndIfNeeded(I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->sendTouchExplorationGestureStartAndHoverEnterIfNeeded(I)V
+PLcom/android/server/accessibility/gestures/TouchExplorer;->setNext(Lcom/android/server/accessibility/EventStreamTransformation;)V
+HPLcom/android/server/accessibility/gestures/TouchState$PointerDownInfo;-><init>(Lcom/android/server/accessibility/gestures/TouchState;)V
+PLcom/android/server/accessibility/gestures/TouchState$PointerDownInfo;->clear()V
+PLcom/android/server/accessibility/gestures/TouchState$PointerDownInfo;->set(FFJ)V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;-><init>(Lcom/android/server/accessibility/gestures/TouchState;)V
+HPLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->clear()V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->getPrimaryPointerId()I
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->handleReceivedPointerDown(ILandroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->handleReceivedPointerUp(ILandroid/view/MotionEvent;)V
+HPLcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;->onMotionEvent(Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchState;-><init>()V
+PLcom/android/server/accessibility/gestures/TouchState;->clear()V
+PLcom/android/server/accessibility/gestures/TouchState;->getLastReceivedEvent()Landroid/view/MotionEvent;
+PLcom/android/server/accessibility/gestures/TouchState;->getReceivedPointerTracker()Lcom/android/server/accessibility/gestures/TouchState$ReceivedPointerTracker;
+PLcom/android/server/accessibility/gestures/TouchState;->isClear()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isDelegating()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isDragging()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isGestureDetecting()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isTouchExploring()Z
+PLcom/android/server/accessibility/gestures/TouchState;->isTouchInteracting()Z
+PLcom/android/server/accessibility/gestures/TouchState;->onInjectedAccessibilityEvent(I)V
+HPLcom/android/server/accessibility/gestures/TouchState;->onReceivedMotionEvent(Landroid/view/MotionEvent;)V
+PLcom/android/server/accessibility/gestures/TouchState;->setState(I)V
+PLcom/android/server/accessibility/gestures/TouchState;->startGestureDetecting()V
+PLcom/android/server/accessibility/gestures/TouchState;->startTouchExploring()V
+PLcom/android/server/accessibility/gestures/TouchState;->startTouchInteracting()V
+PLcom/android/server/accessibility/magnification/MagnificationGestureHandler;-><init>()V
+HSPLcom/android/server/accounts/-$$Lambda$AccountManagerService$c6GExIY3Vh2fORdBziuAPJbExac;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
 HSPLcom/android/server/accounts/-$$Lambda$AccountManagerService$c6GExIY3Vh2fORdBziuAPJbExac;->onPermissionsChanged(I)V
+PLcom/android/server/accounts/-$$Lambda$AccountManagerService$lqbNdAUKUSipmpqby9oIO8JlNTQ;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/Account;I)V
+PLcom/android/server/accounts/-$$Lambda$AccountManagerService$lqbNdAUKUSipmpqby9oIO8JlNTQ;->run()V
+PLcom/android/server/accounts/-$$Lambda$AccountManagerService$nCdu9dc3c8qBwJIwS0ZQk2waXfY;-><init>(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;Landroid/accounts/Account;I)V
 PLcom/android/server/accounts/-$$Lambda$AccountManagerService$nCdu9dc3c8qBwJIwS0ZQk2waXfY;->run()V
+PLcom/android/server/accounts/-$$Lambda$AccountManagerService$ncg6hlXg7I0Ee1EZqbXw8fQH9bY;-><init>(Lcom/android/server/accounts/AccountManagerService;I)V
 PLcom/android/server/accounts/-$$Lambda$AccountManagerService$ncg6hlXg7I0Ee1EZqbXw8fQH9bY;->run()V
+HSPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>()V
 HSPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;-><init>(Lcom/android/server/accounts/AccountAuthenticatorCache$1;)V
 HSPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/accounts/AuthenticatorDescription;
 HSPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->createFromXml(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/Object;
-PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->writeAsXml(Landroid/accounts/AuthenticatorDescription;Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->writeAsXml(Ljava/lang/Object;Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
+HPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->writeAsXml(Landroid/accounts/AuthenticatorDescription;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;->writeAsXml(Ljava/lang/Object;Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/accounts/AccountAuthenticatorCache;-><clinit>()V
+HSPLcom/android/server/accounts/AccountAuthenticatorCache;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/accounts/AccountAuthenticatorCache;->getServiceInfo(Landroid/accounts/AuthenticatorDescription;I)Landroid/content/pm/RegisteredServicesCache$ServiceInfo;
 HSPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Landroid/accounts/AuthenticatorDescription;
 HSPLcom/android/server/accounts/AccountAuthenticatorCache;->parseServiceAttributes(Landroid/content/res/Resources;Ljava/lang/String;Landroid/util/AttributeSet;)Ljava/lang/Object;
-PLcom/android/server/accounts/AccountManagerBackupHelper;->backupAccountAccessPermissions(I)[B
-HSPLcom/android/server/accounts/AccountManagerService$1$1;->run()V
+PLcom/android/server/accounts/AccountManagerBackupHelper;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/AccountManagerInternal;)V
+HPLcom/android/server/accounts/AccountManagerBackupHelper;->backupAccountAccessPermissions(I)[B
+PLcom/android/server/accounts/AccountManagerService$1$1;-><init>(Lcom/android/server/accounts/AccountManagerService$1;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$1$1;->run()V
+PLcom/android/server/accounts/AccountManagerService$10;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$10;->run()V
+PLcom/android/server/accounts/AccountManagerService$14;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZLandroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$14;->run()V
 PLcom/android/server/accounts/AccountManagerService$18;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/Account;ILjava/lang/String;Landroid/os/RemoteCallback;)V
-HSPLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/accounts/AccountManagerService$1;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/accounts/AccountManagerService$1LogRecordTask;-><init>(Lcom/android/server/accounts/AccountManagerService;Ljava/lang/String;Ljava/lang/String;JLcom/android/server/accounts/AccountManagerService$UserAccounts;IJ)V
 PLcom/android/server/accounts/AccountManagerService$1LogRecordTask;->run()V
+HSPLcom/android/server/accounts/AccountManagerService$2;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/accounts/AccountManagerService$3;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
 PLcom/android/server/accounts/AccountManagerService$3;->onPackageAdded(Ljava/lang/String;I)V
 PLcom/android/server/accounts/AccountManagerService$3;->onPackageUpdateFinished(Ljava/lang/String;I)V
-PLcom/android/server/accounts/AccountManagerService$4;->onOpChanged(ILjava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService$8;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-PLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$8;->run()V
+HSPLcom/android/server/accounts/AccountManagerService$4;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+HSPLcom/android/server/accounts/AccountManagerService$4;->onOpChanged(ILjava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$5;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/accounts/Account;Landroid/accounts/IAccountManagerResponse;Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)V
+PLcom/android/server/accounts/AccountManagerService$5;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$5;->run()V
+PLcom/android/server/accounts/AccountManagerService$6;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/accounts/Account;ILandroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$6;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService$6;->run()V
+HPLcom/android/server/accounts/AccountManagerService$8;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZLandroid/os/Bundle;Landroid/accounts/Account;Ljava/lang/String;ZZIZLjava/lang/String;[BLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HPLcom/android/server/accounts/AccountManagerService$8;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$8;->run()V
+PLcom/android/server/accounts/AccountManagerService$8;->toDebugString(J)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$9;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;ZZLjava/lang/String;ZZLjava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$9;->run()V
+HSPLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;)V
+HSPLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$1;)V
 HSPLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->addOnAppPermissionChangeListener(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;)V
 PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->backupAccountAccessPermissions(I)[B
 PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->hasAccountAccess(Landroid/accounts/Account;I)Z
 PLcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;->requestAccountAccess(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/RemoteCallback;)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
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
-PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
+HPLcom/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
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->checkAccount()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->run()V
+HPLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->sendResult()V
+PLcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;->toDebugString(J)Ljava/lang/String;
+HSPLcom/android/server/accounts/AccountManagerService$Injector;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->addLocalService(Landroid/accounts/AccountManagerInternal;)V
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->getAccountAuthenticatorCache()Lcom/android/server/accounts/IAccountAuthenticatorCache;
-HSPLcom/android/server/accounts/AccountManagerService$Injector;->getCeDatabaseName(I)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$Injector;->getCeDatabaseName(I)Ljava/lang/String;
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->getContext()Landroid/content/Context;
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->getDeDatabaseName(I)Ljava/lang/String;
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->getMessageHandlerLooper()Landroid/os/Looper;
@@ -2254,277 +5383,573 @@
 HSPLcom/android/server/accounts/AccountManagerService$Injector;->getPreNDatabaseName(I)Ljava/lang/String;
 HSPLcom/android/server/accounts/AccountManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/accounts/AccountManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/accounts/AccountManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/accounts/AccountManagerService$MessageHandler;-><init>(Lcom/android/server/accounts/AccountManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/accounts/AccountManagerService$NotificationId;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/accounts/AccountManagerService$NotificationId;->access$3600(Lcom/android/server/accounts/AccountManagerService$NotificationId;)I
+PLcom/android/server/accounts/AccountManagerService$RemoveAccountSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Z)V
 PLcom/android/server/accounts/AccountManagerService$RemoveAccountSession;->onResult(Landroid/os/Bundle;)V
 PLcom/android/server/accounts/AccountManagerService$RemoveAccountSession;->run()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
-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;ZZ)V
-PLcom/android/server/accounts/AccountManagerService$Session;->bind()V
-PLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
+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;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
+HPLcom/android/server/accounts/AccountManagerService$Session;->bind()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->bindToAuthenticator(Ljava/lang/String;)Z
 PLcom/android/server/accounts/AccountManagerService$Session;->binderDied()V
-PLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
-PLcom/android/server/accounts/AccountManagerService$Session;->checkKeyIntent(ILandroid/content/Intent;)Z
-PLcom/android/server/accounts/AccountManagerService$Session;->close()V
-PLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
-PLcom/android/server/accounts/AccountManagerService$Session;->isExportedSystemActivity(Landroid/content/pm/ActivityInfo;)Z
-PLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->run()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->cancelTimeout()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->checkKeyIntent(ILandroid/content/Intent;)Z
+HPLcom/android/server/accounts/AccountManagerService$Session;->close()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->getResponseAndClose()Landroid/accounts/IAccountManagerResponse;
+HPLcom/android/server/accounts/AccountManagerService$Session;->isExportedSystemActivity(Landroid/content/pm/ActivityInfo;)Z
+PLcom/android/server/accounts/AccountManagerService$Session;->onError(ILjava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService$Session;->onRequestContinued()V
+HPLcom/android/server/accounts/AccountManagerService$Session;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$Session;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/accounts/AccountManagerService$Session;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/accounts/AccountManagerService$Session;->toDebugString()Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService$Session;->toDebugString(J)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService$Session;->unbind()V
+HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;-><init>(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->run()V
+PLcom/android/server/accounts/AccountManagerService$TestFeaturesSession;->toDebugString(J)Ljava/lang/String;
 HSPLcom/android/server/accounts/AccountManagerService$UserAccounts;-><init>(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)V
-PLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$800(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1000(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1100(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1200(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1300(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Lcom/android/server/accounts/TokenCache;
+PLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1400(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap;
+HSPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$1600(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap;
+HPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$2200(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/HashMap;
+HSPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$800(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+HSPLcom/android/server/accounts/AccountManagerService$UserAccounts;->access$900(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HSPLcom/android/server/accounts/AccountManagerService;-><clinit>()V
 HSPLcom/android/server/accounts/AccountManagerService;-><init>(Lcom/android/server/accounts/AccountManagerService$Injector;)V
-PLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z
-PLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z
+PLcom/android/server/accounts/AccountManagerService;->access$000(Lcom/android/server/accounts/AccountManagerService;I)V
+PLcom/android/server/accounts/AccountManagerService;->access$100(Lcom/android/server/accounts/AccountManagerService;)V
+PLcom/android/server/accounts/AccountManagerService;->access$1500(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)V
+PLcom/android/server/accounts/AccountManagerService;->access$1700(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;I)Z
+PLcom/android/server/accounts/AccountManagerService;->access$1900(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->access$200(Lcom/android/server/accounts/AccountManagerService;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->access$2000(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/accounts/AccountManagerService;->access$2100(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/CharSequence;Landroid/content/Intent;Ljava/lang/String;I)V
+HPLcom/android/server/accounts/AccountManagerService;->access$2800(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/LinkedHashMap;
+PLcom/android/server/accounts/AccountManagerService;->access$2900(Lcom/android/server/accounts/AccountManagerService;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->access$3100(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
+HPLcom/android/server/accounts/AccountManagerService;->access$3200(Lcom/android/server/accounts/AccountManagerService;Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V
+HPLcom/android/server/accounts/AccountManagerService;->access$3300(Lcom/android/server/accounts/AccountManagerService;)Lcom/android/server/accounts/IAccountAuthenticatorCache;
+HPLcom/android/server/accounts/AccountManagerService;->access$3400(Lcom/android/server/accounts/AccountManagerService;I)Z
+PLcom/android/server/accounts/AccountManagerService;->access$3500(Lcom/android/server/accounts/AccountManagerService;)Ljava/text/SimpleDateFormat;
+PLcom/android/server/accounts/AccountManagerService;->access$3700(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;
+PLcom/android/server/accounts/AccountManagerService;->access$3800(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/RemoteCallback;)Landroid/content/Intent;
+PLcom/android/server/accounts/AccountManagerService;->access$3900(Lcom/android/server/accounts/AccountManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/accounts/AccountManagerService;->access$400(Lcom/android/server/accounts/AccountManagerService;IZ)V
+HSPLcom/android/server/accounts/AccountManagerService;->access$4000(Lcom/android/server/accounts/AccountManagerService;)Ljava/util/concurrent/CopyOnWriteArrayList;
+PLcom/android/server/accounts/AccountManagerService;->access$4100(Lcom/android/server/accounts/AccountManagerService;Landroid/accounts/Account;Ljava/lang/String;I)Z
+HSPLcom/android/server/accounts/AccountManagerService;->access$500(Lcom/android/server/accounts/AccountManagerService;)Landroid/content/pm/PackageManager;
+HSPLcom/android/server/accounts/AccountManagerService;->access$600(Lcom/android/server/accounts/AccountManagerService;)Landroid/app/AppOpsManager;
+HSPLcom/android/server/accounts/AccountManagerService;->access$700(Lcom/android/server/accounts/AccountManagerService;Ljava/lang/String;IZ)V
+HPLcom/android/server/accounts/AccountManagerService;->accountExistsCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Z
+HSPLcom/android/server/accounts/AccountManagerService;->accountTypeManagesContacts(Ljava/lang/String;I)Z
+PLcom/android/server/accounts/AccountManagerService;->addAccount(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService;->addAccountAsUser(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;ZLandroid/os/Bundle;I)V
 PLcom/android/server/accounts/AccountManagerService;->addAccountExplicitly(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)Z
 PLcom/android/server/accounts/AccountManagerService;->addAccountExplicitlyWithVisibility(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;Ljava/util/Map;)Z
 PLcom/android/server/accounts/AccountManagerService;->addAccountInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;ILjava/util/Map;)Z
 PLcom/android/server/accounts/AccountManagerService;->addAccountToLinkedRestrictedUsers(Landroid/accounts/Account;I)V
-PLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B
+HPLcom/android/server/accounts/AccountManagerService;->calculatePackageSignatureDigest(Ljava/lang/String;)[B
+PLcom/android/server/accounts/AccountManagerService;->canHaveProfile(I)Z
 PLcom/android/server/accounts/AccountManagerService;->canUserModifyAccounts(II)Z
 PLcom/android/server/accounts/AccountManagerService;->canUserModifyAccountsForType(ILjava/lang/String;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(IZ)V
+HSPLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;ILjava/lang/String;Z)V
+HPLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Landroid/accounts/Account;IZ)V
+HSPLcom/android/server/accounts/AccountManagerService;->cancelAccountAccessRequestNotificationIfNeeded(Ljava/lang/String;IZ)V
+HPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/os/UserHandle;)V
 HSPLcom/android/server/accounts/AccountManagerService;->cancelNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Ljava/lang/String;Landroid/os/UserHandle;)V
-PLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I
-PLcom/android/server/accounts/AccountManagerService;->checkReadAccountsPermitted(ILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->checkGetAccountsPermission(Ljava/lang/String;I)Z
+HSPLcom/android/server/accounts/AccountManagerService;->checkPackageSignature(Ljava/lang/String;II)I
+HPLcom/android/server/accounts/AccountManagerService;->checkReadAccountsPermitted(ILjava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/accounts/AccountManagerService;->checkReadContactsPermission(Ljava/lang/String;I)Z
+PLcom/android/server/accounts/AccountManagerService;->clearPassword(Landroid/accounts/Account;)V
+PLcom/android/server/accounts/AccountManagerService;->completeCloningAccount(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;I)V
+PLcom/android/server/accounts/AccountManagerService;->copyAccountToUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;II)V
 PLcom/android/server/accounts/AccountManagerService;->createNoCredentialsPermissionNotification(Landroid/accounts/Account;Landroid/content/Intent;Ljava/lang/String;I)V
 PLcom/android/server/accounts/AccountManagerService;->doNotification(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/CharSequence;Landroid/content/Intent;Ljava/lang/String;I)V
-PLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->dumpUser(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HPLcom/android/server/accounts/AccountManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->dumpUser(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 HSPLcom/android/server/accounts/AccountManagerService;->filterAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;[Landroid/accounts/Account;ILjava/lang/String;Z)[Landroid/accounts/Account;
 HSPLcom/android/server/accounts/AccountManagerService;->filterSharedAccounts(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/util/Map;ILjava/lang/String;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService;->getAccountRemovedReceivers(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountRemovedReceivers(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/List;
 PLcom/android/server/accounts/AccountManagerService;->getAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;)I
-PLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
-HSPLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
-PLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
-HSPLcom/android/server/accounts/AccountManagerService;->getAccounts([I)[Landroid/accounts/AccountAndUser;
+HSPLcom/android/server/accounts/AccountManagerService;->getAccountVisibilityFromCache(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)I
+HPLcom/android/server/accounts/AccountManagerService;->getAccounts(ILjava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccounts(Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
+HPLcom/android/server/accounts/AccountManagerService;->getAccounts([I)[Landroid/accounts/AccountAndUser;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getAccountsAndVisibilityForPackage(Ljava/lang/String;Ljava/util/List;Ljava/lang/Integer;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
 HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUser(Ljava/lang/String;ILjava/lang/String;)[Landroid/accounts/Account;
 HSPLcom/android/server/accounts/AccountManagerService;->getAccountsAsUserForPackage(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
-PLcom/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;
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByFeatures(Landroid/accounts/IAccountManagerResponse;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->getAccountsByTypeForPackage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)[Landroid/accounts/Account;
 HSPLcom/android/server/accounts/AccountManagerService;->getAccountsFromCache(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;ILjava/lang/String;Z)[Landroid/accounts/Account;
 HSPLcom/android/server/accounts/AccountManagerService;->getAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;ILjava/lang/String;Ljava/util/List;Z)[Landroid/accounts/Account;
-HSPLcom/android/server/accounts/AccountManagerService;->getAllAccounts()[Landroid/accounts/AccountAndUser;
-PLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService;->getAllAccounts()[Landroid/accounts/AccountAndUser;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthToken(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZZLandroid/os/Bundle;)V
 HSPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypeAndUIDForUser(Lcom/android/server/accounts/IAccountAuthenticatorCache;I)Ljava/util/HashMap;
-PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription;
-PLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(I)[Landroid/accounts/AuthenticatorDescription;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypes(I)[Landroid/accounts/AuthenticatorDescription;
+HPLcom/android/server/accounts/AccountManagerService;->getAuthenticatorTypesInternal(I)[Landroid/accounts/AuthenticatorDescription;
 PLcom/android/server/accounts/AccountManagerService;->getContextForUser(Landroid/os/UserHandle;)Landroid/content/Context;
 HSPLcom/android/server/accounts/AccountManagerService;->getCredentialPermissionNotificationId(Landroid/accounts/Account;Ljava/lang/String;I)Lcom/android/server/accounts/AccountManagerService$NotificationId;
-PLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->getPackageNameForUid(I)Ljava/lang/String;
 PLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccount(Landroid/accounts/Account;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
-PLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->getPreviousName(Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->getRequestingPackages(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
-HSPLcom/android/server/accounts/AccountManagerService;->getRunningAccounts()[Landroid/accounts/AccountAndUser;
+HSPLcom/android/server/accounts/AccountManagerService;->getPackagesAndVisibilityForAccountLocked(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountManagerService;->getPassword(Landroid/accounts/Account;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->getPreviousName(Landroid/accounts/Account;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->getRequestingPackages(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/util/Map;
+PLcom/android/server/accounts/AccountManagerService;->getRunningAccounts()[Landroid/accounts/AccountAndUser;
 PLcom/android/server/accounts/AccountManagerService;->getSharedAccountsAsUser(I)[Landroid/accounts/Account;
-PLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
+HPLcom/android/server/accounts/AccountManagerService;->getSigninRequiredNotificationId(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Lcom/android/server/accounts/AccountManagerService$NotificationId;
 PLcom/android/server/accounts/AccountManagerService;->getSingleton()Lcom/android/server/accounts/AccountManagerService;
 HSPLcom/android/server/accounts/AccountManagerService;->getTypesForCaller(IIZ)Ljava/util/List;
+HSPLcom/android/server/accounts/AccountManagerService;->getTypesManagedByCaller(II)Ljava/util/List;
+HSPLcom/android/server/accounts/AccountManagerService;->getTypesVisibleToCaller(IILjava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/accounts/AccountManagerService;->getUidsOfInstalledOrUpdatedPackagesAsUser(I)Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/accounts/AccountManagerService;->getUserAccounts(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
-PLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/accounts/AccountManagerService;->getUserAccountsForCaller()Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+HSPLcom/android/server/accounts/AccountManagerService;->getUserAccountsNotChecked(I)Lcom/android/server/accounts/AccountManagerService$UserAccounts;
+HPLcom/android/server/accounts/AccountManagerService;->getUserData(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/accounts/AccountManagerService;->getUserManager()Landroid/os/UserManager;
 PLcom/android/server/accounts/AccountManagerService;->grantAppPermission(Landroid/accounts/Account;Ljava/lang/String;I)V
 PLcom/android/server/accounts/AccountManagerService;->handleIncomingUser(I)I
 HSPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;I)Z
 HSPLcom/android/server/accounts/AccountManagerService;->hasAccountAccess(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/UserHandle;)Z
-PLcom/android/server/accounts/AccountManagerService;->hasExplicitlyGrantedPermission(Landroid/accounts/Account;Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/accounts/AccountManagerService;->hasExplicitlyGrantedPermission(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->hasFeatures(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;[Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/accounts/AccountManagerService;->insertAccountIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Landroid/accounts/Account;
 PLcom/android/server/accounts/AccountManagerService;->installNotification(Lcom/android/server/accounts/AccountManagerService$NotificationId;Landroid/app/Notification;Ljava/lang/String;I)V
-PLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthToken(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->invalidateAuthTokenLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/accounts/AccountManagerService;->isAccountManagedByCaller(Ljava/lang/String;II)Z
+PLcom/android/server/accounts/AccountManagerService;->isAccountPresentForCaller(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->isAccountVisibleToCaller(Ljava/lang/String;IILjava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->isCrossUser(II)Z
 HSPLcom/android/server/accounts/AccountManagerService;->isLocalUnlockedUser(I)Z
-PLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;II[Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z
+HSPLcom/android/server/accounts/AccountManagerService;->isPermittedForPackage(Ljava/lang/String;I[Ljava/lang/String;)Z
+HSPLcom/android/server/accounts/AccountManagerService;->isPreOApplication(Ljava/lang/String;)Z
 HSPLcom/android/server/accounts/AccountManagerService;->isPrivileged(I)Z
+HSPLcom/android/server/accounts/AccountManagerService;->isProfileOwner(I)Z
+PLcom/android/server/accounts/AccountManagerService;->isSpecialPackageKey(Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountManagerService;->isSystemUid(I)Z
+PLcom/android/server/accounts/AccountManagerService;->isVisible(I)Z
+PLcom/android/server/accounts/AccountManagerService;->lambda$grantAppPermission$3(Landroid/accounts/AccountManagerInternal$OnAppPermissionChangeListener;Landroid/accounts/Account;I)V
 HSPLcom/android/server/accounts/AccountManagerService;->lambda$new$0$AccountManagerService(I)V
 PLcom/android/server/accounts/AccountManagerService;->lambda$onUnlockUser$1$AccountManagerService(I)V
+PLcom/android/server/accounts/AccountManagerService;->lambda$removeAccountInternal$2$AccountManagerService(Landroid/accounts/Account;I)V
+PLcom/android/server/accounts/AccountManagerService;->logRecord(Ljava/lang/String;Ljava/lang/String;JLcom/android/server/accounts/AccountManagerService$UserAccounts;)V
 PLcom/android/server/accounts/AccountManagerService;->logRecord(Ljava/lang/String;Ljava/lang/String;JLcom/android/server/accounts/AccountManagerService$UserAccounts;I)V
+PLcom/android/server/accounts/AccountManagerService;->logRecordWithUid(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Ljava/lang/String;Ljava/lang/String;I)V
 PLcom/android/server/accounts/AccountManagerService;->newGrantCredentialsPermissionIntent(Landroid/accounts/Account;Ljava/lang/String;ILandroid/accounts/AccountAuthenticatorResponse;Ljava/lang/String;Z)Landroid/content/Intent;
-PLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V
-PLcom/android/server/accounts/AccountManagerService;->onServiceChanged(Landroid/accounts/AuthenticatorDescription;IZ)V
+PLcom/android/server/accounts/AccountManagerService;->newRequestAccountAccessIntent(Landroid/accounts/Account;Ljava/lang/String;ILandroid/os/RemoteCallback;)Landroid/content/Intent;
+PLcom/android/server/accounts/AccountManagerService;->notifyPackage(Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HPLcom/android/server/accounts/AccountManagerService;->onAccountAccessed(Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->onResult(Landroid/accounts/IAccountManagerResponse;Landroid/os/Bundle;)V
+HPLcom/android/server/accounts/AccountManagerService;->onServiceChanged(Landroid/accounts/AuthenticatorDescription;IZ)V
 PLcom/android/server/accounts/AccountManagerService;->onServiceChanged(Ljava/lang/Object;IZ)V
-PLcom/android/server/accounts/AccountManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/server/accounts/AccountManagerService;->onUnlockUser(I)V
+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;->packageExistsForUser(Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->peekAuthToken(Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/accounts/AccountManagerService;->permissionIsGranted(Landroid/accounts/Account;Ljava/lang/String;II)Z
 HSPLcom/android/server/accounts/AccountManagerService;->purgeOldGrants(Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
-HSPLcom/android/server/accounts/AccountManagerService;->purgeOldGrantsAll()V
-PLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readPreviousNameInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->registerAccountListener([Ljava/lang/String;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
+HPLcom/android/server/accounts/AccountManagerService;->purgeOldGrantsAll()V
+PLcom/android/server/accounts/AccountManagerService;->purgeUserData(I)V
+HPLcom/android/server/accounts/AccountManagerService;->readAuthTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readCachedTokenInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readPreviousNameInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountManagerService;->readUserDataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;)Ljava/lang/String;
+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;->removeAccount(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Z)V
-PLcom/android/server/accounts/AccountManagerService;->removeAccountAsUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;ZI)V
-PLcom/android/server/accounts/AccountManagerService;->removeAccountInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;I)Z
-HSPLcom/android/server/accounts/AccountManagerService;->removeVisibilityValuesForPackage(Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->removeAccountAsUser(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;ZI)V
+PLcom/android/server/accounts/AccountManagerService;->removeAccountExplicitly(Landroid/accounts/Account;)Z
+PLcom/android/server/accounts/AccountManagerService;->removeAccountFromCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;)V
+HPLcom/android/server/accounts/AccountManagerService;->removeAccountInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;I)Z
+HPLcom/android/server/accounts/AccountManagerService;->removeVisibilityValuesForPackage(Ljava/lang/String;)V
 HSPLcom/android/server/accounts/AccountManagerService;->resolveAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Ljava/lang/Integer;
-PLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountManagerService;->saveCachedToken(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V
-PLcom/android/server/accounts/AccountManagerService;->sendAccountRemovedBroadcast(Landroid/accounts/Account;Ljava/lang/String;I)V
+HPLcom/android/server/accounts/AccountManagerService;->saveAuthTokenToDatabase(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->saveCachedToken(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;[BLjava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/accounts/AccountManagerService;->scanArgs([Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/accounts/AccountManagerService;->sendAccountRemovedBroadcast(Landroid/accounts/Account;Ljava/lang/String;I)V
 PLcom/android/server/accounts/AccountManagerService;->sendAccountsChangedBroadcast(I)V
 PLcom/android/server/accounts/AccountManagerService;->sendNotificationAccountUpdated(Landroid/accounts/Account;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)V
 PLcom/android/server/accounts/AccountManagerService;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;I)Z
-PLcom/android/server/accounts/AccountManagerService;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;IZLcom/android/server/accounts/AccountManagerService$UserAccounts;)Z
-PLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->setAccountVisibility(Landroid/accounts/Account;Ljava/lang/String;IZLcom/android/server/accounts/AccountManagerService$UserAccounts;)Z
+HPLcom/android/server/accounts/AccountManagerService;->setAuthToken(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->setPassword(Landroid/accounts/Account;Ljava/lang/String;)V
+PLcom/android/server/accounts/AccountManagerService;->setPasswordInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;I)V
+HPLcom/android/server/accounts/AccountManagerService;->setUserData(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->setUserdataInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/accounts/AccountManagerService;->shouldNotifyPackageOnAccountRemoval(Landroid/accounts/Account;Ljava/lang/String;Lcom/android/server/accounts/AccountManagerService$UserAccounts;)Z
-HSPLcom/android/server/accounts/AccountManagerService;->syncDeCeAccountsLocked(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;->syncSharedAccounts(I)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;->updateAccountVisibilityLocked(Landroid/accounts/Account;Ljava/lang/String;ILcom/android/server/accounts/AccountManagerService$UserAccounts;)Z
 PLcom/android/server/accounts/AccountManagerService;->updateAppPermission(Landroid/accounts/Account;Ljava/lang/String;IZ)V
-HSPLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V
+PLcom/android/server/accounts/AccountManagerService;->updateCredentials(Landroid/accounts/IAccountManagerResponse;Landroid/accounts/Account;Ljava/lang/String;ZLandroid/os/Bundle;)V
+PLcom/android/server/accounts/AccountManagerService;->validateAccounts(I)V
 HSPLcom/android/server/accounts/AccountManagerService;->validateAccountsInternal(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Z)V
-PLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->create(Landroid/content/Context;Ljava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper;
-HSPLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
-HSPLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
-HSPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
-PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
+HPLcom/android/server/accounts/AccountManagerService;->writeAuthTokenIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/AccountManagerService;->writeUserDataIntoCacheLocked(Lcom/android/server/accounts/AccountManagerService$UserAccounts;Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;)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;->createAccountsDeletionTrigger(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$CeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
+HSPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;)V
+HSPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;-><init>(Landroid/content/Context;ILjava/lang/String;Lcom/android/server/accounts/AccountsDb$1;)V
+HSPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->access$700(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;)Z
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->access$702(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Z)Z
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createAccountsDeletionTrigger(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createAccountsDeletionVisibilityCleanupTrigger(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createAccountsVisibilityTable(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createDebugTable(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createGrantsTable(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->createSharedAccountsTable(Landroid/database/sqlite/SQLiteDatabase;)V
+HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getReadableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
+HPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->getWritableDatabaseUserIsUnlocked()Landroid/database/sqlite/SQLiteDatabase;
+PLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLcom/android/server/accounts/AccountsDb$DeDatabaseHelper;->onOpen(Landroid/database/sqlite/SQLiteDatabase;)V
-HSPLcom/android/server/accounts/AccountsDb;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/accounts/AccountsDb;->attachCeDatabase(Ljava/io/File;)V
-PLcom/android/server/accounts/AccountsDb;->beginTransaction()V
+HSPLcom/android/server/accounts/AccountsDb;-><clinit>()V
+HSPLcom/android/server/accounts/AccountsDb;-><init>(Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;Landroid/content/Context;Ljava/io/File;)V
+PLcom/android/server/accounts/AccountsDb;->access$000()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->access$200()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->access$300()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->access$400()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->access$500()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->access$600()Ljava/lang/String;
+PLcom/android/server/accounts/AccountsDb;->attachCeDatabase(Ljava/io/File;)V
+HPLcom/android/server/accounts/AccountsDb;->beginTransaction()V
 PLcom/android/server/accounts/AccountsDb;->calculateDebugTableInsertionPoint()J
+PLcom/android/server/accounts/AccountsDb;->close()V
+PLcom/android/server/accounts/AccountsDb;->closeDebugStatement()V
 PLcom/android/server/accounts/AccountsDb;->compileSqlStatementForLogging()Landroid/database/sqlite/SQLiteStatement;
 HSPLcom/android/server/accounts/AccountsDb;->create(Landroid/content/Context;ILjava/io/File;Ljava/io/File;)Lcom/android/server/accounts/AccountsDb;
 PLcom/android/server/accounts/AccountsDb;->deleteAccountVisibilityForPackage(Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountsDb;->deleteAuthToken(Ljava/lang/String;)Z
-PLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z
-PLcom/android/server/accounts/AccountsDb;->dumpDeAccountsTable(Ljava/io/PrintWriter;)V
-PLcom/android/server/accounts/AccountsDb;->dumpDebugTable(Ljava/io/PrintWriter;)V
-PLcom/android/server/accounts/AccountsDb;->endTransaction()V
-PLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountsDb;->findAllAccountGrants()Ljava/util/List;
+HPLcom/android/server/accounts/AccountsDb;->deleteAuthToken(Ljava/lang/String;)Z
+PLcom/android/server/accounts/AccountsDb;->deleteAuthTokensByAccountId(J)Z
+HPLcom/android/server/accounts/AccountsDb;->deleteAuthtokensByAccountIdAndType(JLjava/lang/String;)Z
+PLcom/android/server/accounts/AccountsDb;->deleteCeAccount(J)Z
+PLcom/android/server/accounts/AccountsDb;->deleteDeAccount(J)Z
+PLcom/android/server/accounts/AccountsDb;->deleteGrantsByUid(I)Z
+HPLcom/android/server/accounts/AccountsDb;->deleteMetaByAuthTypeAndUid(Ljava/lang/String;I)Z
+HPLcom/android/server/accounts/AccountsDb;->dumpDeAccountsTable(Ljava/io/PrintWriter;)V
+HPLcom/android/server/accounts/AccountsDb;->dumpDebugTable(Ljava/io/PrintWriter;)V
+HPLcom/android/server/accounts/AccountsDb;->endTransaction()V
+HPLcom/android/server/accounts/AccountsDb;->findAccountPasswordByNameAndType(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/accounts/AccountsDb;->findAllAccountGrants()Ljava/util/List;
 HSPLcom/android/server/accounts/AccountsDb;->findAllDeAccounts()Ljava/util/Map;
 HSPLcom/android/server/accounts/AccountsDb;->findAllUidGrants()Ljava/util/List;
 HSPLcom/android/server/accounts/AccountsDb;->findAllVisibilityValues()Ljava/util/Map;
-PLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/accounts/Account;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountsDb;->findAuthTokensByAccount(Landroid/accounts/Account;)Ljava/util/Map;
 PLcom/android/server/accounts/AccountsDb;->findAuthtokenForAllAccounts(Ljava/lang/String;Ljava/lang/String;)Landroid/database/Cursor;
 PLcom/android/server/accounts/AccountsDb;->findCeAccountId(Landroid/accounts/Account;)J
-HSPLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List;
-PLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J
+PLcom/android/server/accounts/AccountsDb;->findCeAccountsNotInDe()Ljava/util/List;
+HPLcom/android/server/accounts/AccountsDb;->findDeAccountId(Landroid/accounts/Account;)J
 PLcom/android/server/accounts/AccountsDb;->findDeAccountPreviousName(Landroid/accounts/Account;)Ljava/lang/String;
-PLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J
-PLcom/android/server/accounts/AccountsDb;->findMatchingGrantsCountAnyToken(ILandroid/accounts/Account;)J
+HPLcom/android/server/accounts/AccountsDb;->findExtrasIdByAccountId(JLjava/lang/String;)J
+HSPLcom/android/server/accounts/AccountsDb;->findMatchingGrantsCountAnyToken(ILandroid/accounts/Account;)J
 HSPLcom/android/server/accounts/AccountsDb;->findMetaAuthUid()Ljava/util/Map;
-PLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map;
+HPLcom/android/server/accounts/AccountsDb;->findUserExtrasForAccount(Landroid/accounts/Account;)Ljava/util/Map;
 PLcom/android/server/accounts/AccountsDb;->getSharedAccounts()Ljava/util/List;
 PLcom/android/server/accounts/AccountsDb;->getStatementForLogging()Landroid/database/sqlite/SQLiteStatement;
-PLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J
+HPLcom/android/server/accounts/AccountsDb;->insertAuthToken(JLjava/lang/String;Ljava/lang/String;)J
 PLcom/android/server/accounts/AccountsDb;->insertCeAccount(Landroid/accounts/Account;Ljava/lang/String;)J
 PLcom/android/server/accounts/AccountsDb;->insertDeAccount(Landroid/accounts/Account;J)J
-PLcom/android/server/accounts/AccountsDb;->insertExtra(JLjava/lang/String;Ljava/lang/String;)J
+HPLcom/android/server/accounts/AccountsDb;->insertExtra(JLjava/lang/String;Ljava/lang/String;)J
 PLcom/android/server/accounts/AccountsDb;->insertGrant(JLjava/lang/String;I)J
-PLcom/android/server/accounts/AccountsDb;->insertOrReplaceMetaAuthTypeAndUid(Ljava/lang/String;I)J
+HPLcom/android/server/accounts/AccountsDb;->insertOrReplaceMetaAuthTypeAndUid(Ljava/lang/String;I)J
 HSPLcom/android/server/accounts/AccountsDb;->isCeDatabaseAttached()Z
 PLcom/android/server/accounts/AccountsDb;->reserveDebugDbInsertionPoint()J
 PLcom/android/server/accounts/AccountsDb;->setAccountVisibility(JLjava/lang/String;I)Z
-PLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V
-PLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z
-PLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/accounts/TokenCache$Key;->hashCode()I
-PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->add(Lcom/android/server/accounts/TokenCache$Key;)V
-PLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->evict()V
-PLcom/android/server/accounts/TokenCache$TokenLruCache;->entryRemoved(ZLcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;Lcom/android/server/accounts/TokenCache$Value;)V
+HPLcom/android/server/accounts/AccountsDb;->setTransactionSuccessful()V
+PLcom/android/server/accounts/AccountsDb;->updateCeAccountPassword(JLjava/lang/String;)I
+HPLcom/android/server/accounts/AccountsDb;->updateExtra(JLjava/lang/String;)Z
+HPLcom/android/server/accounts/TokenCache$Key;-><init>(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)V
+HPLcom/android/server/accounts/TokenCache$Key;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/accounts/TokenCache$Key;->hashCode()I
+HPLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;-><init>(Lcom/android/server/accounts/TokenCache$TokenLruCache;)V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->add(Lcom/android/server/accounts/TokenCache$Key;)V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;->evict()V
+HSPLcom/android/server/accounts/TokenCache$TokenLruCache;-><init>()V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache;->entryRemoved(ZLcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;Lcom/android/server/accounts/TokenCache$Value;)V
 PLcom/android/server/accounts/TokenCache$TokenLruCache;->entryRemoved(ZLjava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/accounts/TokenCache$TokenLruCache;->evict(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/accounts/TokenCache$TokenLruCache;->putToken(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)V
-PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)I
-PLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
-PLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V
+PLcom/android/server/accounts/TokenCache$TokenLruCache;->evict(Landroid/accounts/Account;)V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache;->evict(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache;->putToken(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)V
+HPLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Lcom/android/server/accounts/TokenCache$Key;Lcom/android/server/accounts/TokenCache$Value;)I
+HPLcom/android/server/accounts/TokenCache$TokenLruCache;->sizeOf(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/accounts/TokenCache$Value;-><init>(Ljava/lang/String;J)V
+HSPLcom/android/server/accounts/TokenCache;-><init>()V
+HPLcom/android/server/accounts/TokenCache;->get(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;[B)Ljava/lang/String;
+HPLcom/android/server/accounts/TokenCache;->put(Landroid/accounts/Account;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[BJ)V
+PLcom/android/server/accounts/TokenCache;->remove(Landroid/accounts/Account;)V
 PLcom/android/server/accounts/TokenCache;->remove(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->closeSocketLocked()V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->listenToSocket()V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->openSocketLocked()V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->run()V
+HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$1;-><init>(Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;Landroid/os/Handler;)V
+HSPLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;-><init>(Lcom/android/server/adb/AdbDebuggingManager;Landroid/os/Looper;)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;->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$AdbDebuggingThread;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)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;->sendResponse(Ljava/lang/String;)V
-PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->filterOutOldKeys()V
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getAllowedConnectionTime()J
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getKeyMapFromFile()Ljava/util/Map;
-HSPLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->getLastConnectionTime(Ljava/lang/String;)J
+PLcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;->stopListening()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;-><init>(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->addUserKeysToKeyStore()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;->getKeyMap()Ljava/util/Map;
+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;->init()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->initKeyFile()V
+PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->isEmpty()Z
 PLcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;->persistKeyStore()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
+HSPLcom/android/server/adb/AdbDebuggingManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/adb/AdbDebuggingManager;->access$000(Lcom/android/server/adb/AdbDebuggingManager;)Landroid/os/Handler;
+PLcom/android/server/adb/AdbDebuggingManager;->access$100(Lcom/android/server/adb/AdbDebuggingManager;)Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;
+PLcom/android/server/adb/AdbDebuggingManager;->access$1000(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager;->access$102(Lcom/android/server/adb/AdbDebuggingManager;Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;)Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;
+PLcom/android/server/adb/AdbDebuggingManager;->access$1100(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/String;)V
+PLcom/android/server/adb/AdbDebuggingManager;->access$200(Lcom/android/server/adb/AdbDebuggingManager;)Z
+PLcom/android/server/adb/AdbDebuggingManager;->access$202(Lcom/android/server/adb/AdbDebuggingManager;Z)Z
+PLcom/android/server/adb/AdbDebuggingManager;->access$300(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/util/List;
+PLcom/android/server/adb/AdbDebuggingManager;->access$400(Lcom/android/server/adb/AdbDebuggingManager;)V
+PLcom/android/server/adb/AdbDebuggingManager;->access$500(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;->access$600(Lcom/android/server/adb/AdbDebuggingManager;)Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;->access$602(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;->access$700(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/adb/AdbDebuggingManager;->access$800(Lcom/android/server/adb/AdbDebuggingManager;)Landroid/content/Context;
+PLcom/android/server/adb/AdbDebuggingManager;->access$900(Lcom/android/server/adb/AdbDebuggingManager;Ljava/lang/Iterable;)V
 PLcom/android/server/adb/AdbDebuggingManager;->allowDebugging(ZLjava/lang/String;)V
+PLcom/android/server/adb/AdbDebuggingManager;->clearDebuggingKeys()V
+PLcom/android/server/adb/AdbDebuggingManager;->createConfirmationIntent(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/adb/AdbDebuggingManager;->deleteKeyFile()V
+PLcom/android/server/adb/AdbDebuggingManager;->denyDebugging()V
 PLcom/android/server/adb/AdbDebuggingManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
-HSPLcom/android/server/adb/AdbDebuggingManager;->getAdbFile(Ljava/lang/String;)Ljava/io/File;
-HSPLcom/android/server/adb/AdbDebuggingManager;->getAdbTempKeysFile()Ljava/io/File;
-HSPLcom/android/server/adb/AdbDebuggingManager;->getFingerprints(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/adb/AdbDebuggingManager;->getAdbFile(Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/adb/AdbDebuggingManager;->getAdbTempKeysFile()Ljava/io/File;
+PLcom/android/server/adb/AdbDebuggingManager;->getFingerprints(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/adb/AdbDebuggingManager;->getUserKeyFile()Ljava/io/File;
-HSPLcom/android/server/adb/AdbDebuggingManager;->setAdbEnabled(Z)V
-HSPLcom/android/server/adb/AdbDebuggingManager;->startConfirmation(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/adb/AdbDebuggingManager;->startConfirmationActivity(Landroid/content/ComponentName;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/adb/AdbDebuggingManager;->sendPersistKeyStoreMessage()V
+PLcom/android/server/adb/AdbDebuggingManager;->setAdbEnabled(Z)V
+PLcom/android/server/adb/AdbDebuggingManager;->startConfirmation(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/adb/AdbDebuggingManager;->startConfirmationActivity(Landroid/content/ComponentName;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;)Z
 PLcom/android/server/adb/AdbDebuggingManager;->writeKey(Ljava/lang/String;)V
+PLcom/android/server/adb/AdbDebuggingManager;->writeKeys(Ljava/lang/Iterable;)V
 HSPLcom/android/server/adb/AdbService$AdbHandler;-><init>(Lcom/android/server/adb/AdbService;Landroid/os/Looper;)V
 HSPLcom/android/server/adb/AdbService$AdbHandler;->containsFunction(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/server/adb/AdbService$AdbHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/adb/AdbService$AdbHandler;->sendMessage(IZ)V
+HSPLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;)V
+HSPLcom/android/server/adb/AdbService$AdbManagerInternalImpl;-><init>(Lcom/android/server/adb/AdbService;Lcom/android/server/adb/AdbService$1;)V
 HSPLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->isAdbEnabled()Z
 HSPLcom/android/server/adb/AdbService$AdbManagerInternalImpl;->registerTransport(Landroid/debug/IAdbTransport;)V
+HSPLcom/android/server/adb/AdbService$AdbSettingsObserver;-><init>(Lcom/android/server/adb/AdbService;)V
+HSPLcom/android/server/adb/AdbService$AdbSettingsObserver;->onChange(Z)V
 HSPLcom/android/server/adb/AdbService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/adb/AdbService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/adb/AdbService$Lifecycle;->onStart()V
 HSPLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/adb/AdbService;-><init>(Landroid/content/Context;Lcom/android/server/adb/AdbService$1;)V
+HSPLcom/android/server/adb/AdbService;->access$100(Lcom/android/server/adb/AdbService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/adb/AdbService;->access$200(Lcom/android/server/adb/AdbService;)Z
+HSPLcom/android/server/adb/AdbService;->access$202(Lcom/android/server/adb/AdbService;Z)Z
+PLcom/android/server/adb/AdbService;->access$300(Lcom/android/server/adb/AdbService;)Lcom/android/server/adb/AdbDebuggingManager;
+HSPLcom/android/server/adb/AdbService;->access$400(Lcom/android/server/adb/AdbService;)Landroid/content/ContentResolver;
+HSPLcom/android/server/adb/AdbService;->access$500(Lcom/android/server/adb/AdbService;Z)V
+HSPLcom/android/server/adb/AdbService;->access$600(Lcom/android/server/adb/AdbService;)Lcom/android/server/adb/AdbService$AdbHandler;
 PLcom/android/server/adb/AdbService;->allowDebugging(ZLjava/lang/String;)V
-HSPLcom/android/server/adb/AdbService;->bootCompleted()V
+PLcom/android/server/adb/AdbService;->bootCompleted()V
+PLcom/android/server/adb/AdbService;->clearDebuggingKeys()V
+PLcom/android/server/adb/AdbService;->denyDebugging()V
 PLcom/android/server/adb/AdbService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/adb/AdbService;->setAdbEnabled(Z)V
 HSPLcom/android/server/adb/AdbService;->systemReady()V
-PLcom/android/server/am/-$$Lambda$ActiveServices$PnHUeksEDLiNZciWKfZU2EcD8vU;->run()V
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$3$poTyYzHinA8s8lAJ-y6Bb3JsBNo;-><init>()V
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$3$poTyYzHinA8s8lAJ-y6Bb3JsBNo;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$30I5N5ZS7997YvRBJqVkTZMPd6M;->run()V
-PLcom/android/server/am/-$$Lambda$ActivityManagerService$LocalService$2LeEPdXnhP_I5Tz5a2OSkhUL0oc;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$XMDHDkKdzWb8nQlDZRKevGp6Oa8;-><init>()V
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$XMDHDkKdzWb8nQlDZRKevGp6Oa8;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+PLcom/android/server/am/-$$Lambda$5hokEl5hcign5FXeGZdl53qh2zg;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/am/-$$Lambda$5hokEl5hcign5FXeGZdl53qh2zg;->run()V
+PLcom/android/server/am/-$$Lambda$8usf6utdff9V7wtRbjhmjrLif-w;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$8usf6utdff9V7wtRbjhmjrLif-w;-><init>()V
+PLcom/android/server/am/-$$Lambda$8usf6utdff9V7wtRbjhmjrLif-w;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$ActiveServices$0WENDXD5vmtSS6wlQjMNWJNWoHA;-><init>(Lcom/android/server/am/ActiveServices;Ljava/lang/String;)V
+PLcom/android/server/am/-$$Lambda$ActiveServices$0WENDXD5vmtSS6wlQjMNWJNWoHA;->run()V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$2afaFERxNQEnSdevJxY5plp1fS4;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$5$BegFiGFfKLYS7VRmiWluczgOC5k;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$5$BegFiGFfKLYS7VRmiWluczgOC5k;-><init>()V
+HPLcom/android/server/am/-$$Lambda$ActivityManagerService$5$BegFiGFfKLYS7VRmiWluczgOC5k;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$Fbs0C_KjUpE0imxFftpdBfeTJpg;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;ILandroid/os/RemoteCallback;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$Fbs0C_KjUpE0imxFftpdBfeTJpg;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$LocalService$4G_pzvRw9NHuN5SCKHrZRQVBK5M;-><init>(Lcom/android/server/am/ActivityManagerService$LocalService;Lcom/android/server/wm/ActivityServiceConnectionsHolder;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$LocalService$4G_pzvRw9NHuN5SCKHrZRQVBK5M;->accept(Ljava/lang/Object;)V
 HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$Z3G4KWA2tlTOhqhFtAvVby1SjyQ;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$Z3G4KWA2tlTOhqhFtAvVby1SjyQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$Z3G4KWA2tlTOhqhFtAvVby1SjyQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$dLQ66dH4nIti4hweaVJTGHj2tMU;-><clinit>()V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$dLQ66dH4nIti4hweaVJTGHj2tMU;-><init>()V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$dLQ66dH4nIti4hweaVJTGHj2tMU;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$eFxS8Z-_MXzP9a8ro45rBMHy3bk;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$eFxS8Z-_MXzP9a8ro45rBMHy3bk;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$edxAPEC3muKzJql6X4RKsKcgmvo;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$edxAPEC3muKzJql6X4RKsKcgmvo;->onLimitReached(I)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$fS1-94oynjazWAe2OWfx5p-HXUQ;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$qLjSm9VDxOdlZwBZT-qc8uDXM_o;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$ActivityManagerService$qLjSm9VDxOdlZwBZT-qc8uDXM_o;-><init>()V
+HPLcom/android/server/am/-$$Lambda$ActivityManagerService$qLjSm9VDxOdlZwBZT-qc8uDXM_o;->needed(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$sgcouPmrltwdDp2DCHkd89xkLZ4;-><init>(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$sgcouPmrltwdDp2DCHkd89xkLZ4;->run()V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$w5jCshLsk1jfv4UDTmEfq_HU0OQ;-><init>(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/-$$Lambda$ActivityManagerService$w5jCshLsk1jfv4UDTmEfq_HU0OQ;->run()V
+PLcom/android/server/am/-$$Lambda$AppErrors$1aFX_-j-MSc0clpKk9XdlBZz9lU;-><init>(Lcom/android/server/am/AppErrors;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/-$$Lambda$AppErrors$1aFX_-j-MSc0clpKk9XdlBZz9lU;->run()V
+HPLcom/android/server/am/-$$Lambda$AppErrors$Ziph9zXnTzhEV6frMYJe_IEvvfY;-><init>(Lcom/android/server/am/AppErrors;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/String;ILcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$-wbGBZV07-3wEpce4OUXCzlzxWg;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$-wbGBZV07-3wEpce4OUXCzlzxWg;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$8RmxBGb9aEc0feL90j1NR9guFlc;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;)V
+HSPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$8RmxBGb9aEc0feL90j1NR9guFlc;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UGYjMlfjNQLNoNs9jB0lra88GDI;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UGYjMlfjNQLNoNs9jB0lra88GDI;-><init>()V
+HPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UGYjMlfjNQLNoNs9jB0lra88GDI;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UJh7jNVpjR6lqMYBGte4jdTlSE0;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UJh7jNVpjR6lqMYBGte4jdTlSE0;-><init>()V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$M7pmR3pU58DetrzQsI3M2-go5XU;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$M7pmR3pU58DetrzQsI3M2-go5XU;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$UhdolDh03szrz0tHY4ggJ2c_9IQ;-><init>(I)V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$UhdolDh03szrz0tHY4ggJ2c_9IQ;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$Yc6vluAEWPBi2TSflPrFu351ztU;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+HSPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$Yc6vluAEWPBi2TSflPrFu351ztU;->run()V
+HPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$e3RqpmVvDTV44W327x1Bbxd4Iqc;-><init>(Lcom/android/server/am/AppExitInfoTracker;ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;)V
+HPLcom/android/server/am/-$$Lambda$AppExitInfoTracker$e3RqpmVvDTV44W327x1Bbxd4Iqc;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$ykvdMbwZILd9oyb6cyIe3GfomwU;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/io/PrintWriter;Landroid/icu/text/SimpleDateFormat;)V
+PLcom/android/server/am/-$$Lambda$AppExitInfoTracker$ykvdMbwZILd9oyb6cyIe3GfomwU;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$MJXTdtPzBwRCdTjCDCE77VXPHBk;-><init>(Landroid/os/SynchronousResultReceiver;)V
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$MJXTdtPzBwRCdTjCDCE77VXPHBk;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ML8sXrbYk0MflPvsY2cfCYlcU0w;-><clinit>()V
 HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ML8sXrbYk0MflPvsY2cfCYlcU0w;-><init>()V
 HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ML8sXrbYk0MflPvsY2cfCYlcU0w;->newThread(Ljava/lang/Runnable;)Ljava/lang/Thread;
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$PpNEY15dspg9oLlkg1OsyjrPTqw;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
 HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$PpNEY15dspg9oLlkg1OsyjrPTqw;->run()V
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ddVY5lmqswnSjXppAxPTOHbuzzQ;-><init>(Ljava/lang/Runnable;)V
 HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ddVY5lmqswnSjXppAxPTOHbuzzQ;->run()V
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$r3x3xYmhrLG8kgeNVPXl5EILHwU;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
 HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$r3x3xYmhrLG8kgeNVPXl5EILHwU;->run()V
+HSPLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$xR3yCbbVfCo3oq_xPiH7j5l5uac;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
+PLcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$xR3yCbbVfCo3oq_xPiH7j5l5uac;->run()V
+HSPLcom/android/server/am/-$$Lambda$BatteryStatsService$ZxbqtJ7ozYmzYFkkNV3m_QRd0Sk;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIII)V
 HSPLcom/android/server/am/-$$Lambda$BatteryStatsService$ZxbqtJ7ozYmzYFkkNV3m_QRd0Sk;->run()V
+HSPLcom/android/server/am/-$$Lambda$BatteryStatsService$rRONgIFHr4sujxPESRmo9P5RJ6w;-><init>(Lcom/android/server/am/BatteryStatsService;IIIIIIII)V
 HSPLcom/android/server/am/-$$Lambda$BatteryStatsService$rRONgIFHr4sujxPESRmo9P5RJ6w;->run()V
-PLcom/android/server/am/-$$Lambda$BroadcastQueue$UYhESkevIwvEc0Mcevy6z7vfzgY;->run()V
+HPLcom/android/server/am/-$$Lambda$BroadcastQueue$-Rc4kAs41vmqWweLcJR0YLxZ0dM;-><init>(Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/-$$Lambda$BroadcastQueue$-Rc4kAs41vmqWweLcJR0YLxZ0dM;->run()V
+HSPLcom/android/server/am/-$$Lambda$CoreSettingsObserver$IEGGdL9JzvkvDo5ePJ2OAMEVAVs;-><init>(Lcom/android/server/am/CoreSettingsObserver;)V
+PLcom/android/server/am/-$$Lambda$CoreSettingsObserver$IEGGdL9JzvkvDo5ePJ2OAMEVAVs;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/am/-$$Lambda$F5A5p7evh-7maWNW7K80NbTRjbM;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/-$$Lambda$F5A5p7evh-7maWNW7K80NbTRjbM;->run()V
+PLcom/android/server/am/-$$Lambda$HKoBBTwYfMTyX1rzuzxIXu0s2cc;-><clinit>()V
 PLcom/android/server/am/-$$Lambda$HKoBBTwYfMTyX1rzuzxIXu0s2cc;-><init>()V
-PLcom/android/server/am/-$$Lambda$HKoBBTwYfMTyX1rzuzxIXu0s2cc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/am/-$$Lambda$OomAdjProfiler$5x1ooCPxPmlzbXvtcEuYDu_6Uz4;-><init>()V
-HSPLcom/android/server/am/-$$Lambda$OomAdjProfiler$5x1ooCPxPmlzbXvtcEuYDu_6Uz4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/am/-$$Lambda$HKoBBTwYfMTyX1rzuzxIXu0s2cc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/-$$Lambda$OomAdjProfiler$oLbVP84ACmxo_1QlnwlSuhi91W4;-><clinit>()V
+HSPLcom/android/server/am/-$$Lambda$OomAdjProfiler$oLbVP84ACmxo_1QlnwlSuhi91W4;-><init>()V
+HSPLcom/android/server/am/-$$Lambda$OomAdjProfiler$oLbVP84ACmxo_1QlnwlSuhi91W4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/am/-$$Lambda$OomAdjuster$OVkqAAacT5-taN3pgDzyZj3Ymvk;-><clinit>()V
+HSPLcom/android/server/am/-$$Lambda$OomAdjuster$OVkqAAacT5-taN3pgDzyZj3Ymvk;-><init>()V
+HSPLcom/android/server/am/-$$Lambda$OomAdjuster$OVkqAAacT5-taN3pgDzyZj3Ymvk;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/am/-$$Lambda$PendingIntentController$pDmmJDvS20vSAAXh9qdzbN0P8N0;-><clinit>()V
 PLcom/android/server/am/-$$Lambda$PendingIntentController$pDmmJDvS20vSAAXh9qdzbN0P8N0;-><init>()V
 PLcom/android/server/am/-$$Lambda$PendingIntentController$pDmmJDvS20vSAAXh9qdzbN0P8N0;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$PendingIntentController$sPmaborOkBSSEP2wiimxXw-eYDQ;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$PendingIntentController$sPmaborOkBSSEP2wiimxXw-eYDQ;-><init>()V
+PLcom/android/server/am/-$$Lambda$PendingIntentController$sPmaborOkBSSEP2wiimxXw-eYDQ;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/am/-$$Lambda$PendingIntentRecord$hlEHdgdG_SS5n3v7IRr7e6QZgLQ;-><clinit>()V
 HSPLcom/android/server/am/-$$Lambda$PendingIntentRecord$hlEHdgdG_SS5n3v7IRr7e6QZgLQ;-><init>()V
 HSPLcom/android/server/am/-$$Lambda$PendingIntentRecord$hlEHdgdG_SS5n3v7IRr7e6QZgLQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$PersistentConnection$rkvbuN0FQdQUv1hqSwDvmwwh6Uk;-><init>(Lcom/android/server/am/PersistentConnection;)V
 PLcom/android/server/am/-$$Lambda$PersistentConnection$rkvbuN0FQdQUv1hqSwDvmwwh6Uk;->run()V
-HSPLcom/android/server/am/-$$Lambda$ProcessList$Clv-1gpwGcZ-lQ1Ghdh2VzSdPZ4;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;JLjava/lang/String;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/-$$Lambda$ProcessList$Clv-1gpwGcZ-lQ1Ghdh2VzSdPZ4;->run()V
-PLcom/android/server/am/-$$Lambda$ProcessRecord$1qn6-pj5yWgiSnKANZpVz3gwd30;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/-$$Lambda$PersistentConnection$xTW-hnA2hSnEFuF87mUe85RYnfE;-><init>(Lcom/android/server/am/PersistentConnection;)V
+PLcom/android/server/am/-$$Lambda$PersistentConnection$xTW-hnA2hSnEFuF87mUe85RYnfE;->run()V
+HSPLcom/android/server/am/-$$Lambda$ProcessList$hjUwwFAIhoht4KRKnKeUve_Kcto;-><init>(Lcom/android/server/am/ProcessList;)V
+HSPLcom/android/server/am/-$$Lambda$ProcessList$hjUwwFAIhoht4KRKnKeUve_Kcto;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/-$$Lambda$ProcessList$vtq7LF5jIHO4t5NE03c8g7BT7Jc;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HSPLcom/android/server/am/-$$Lambda$ProcessList$vtq7LF5jIHO4t5NE03c8g7BT7Jc;->run()V
+HPLcom/android/server/am/-$$Lambda$ProcessRecord$1qn6-pj5yWgiSnKANZpVz3gwd30;-><init>(Lcom/android/server/am/ProcessRecord;)V
 PLcom/android/server/am/-$$Lambda$ProcessRecord$2DImTokd0AWNTECl3WgBxJkOOqs;-><init>(Lcom/android/server/am/ProcessRecord;)V
 PLcom/android/server/am/-$$Lambda$ProcessRecord$Cb3MKja7_iTlaFQrvQTzPvLyoT8;-><init>(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/-$$Lambda$SettingsToPropertiesMapper$Rzo06OjarvWLxZlB1l32KTp3emA;->onPropertyChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/-$$Lambda$UserController$Injector$MYTLl7MOQKjyMJknWdxPeBLoPCc;->run()V
-HSPLcom/android/server/am/-$$Lambda$UserController$K71HFCIuD0iCwrDTKYnIUDyAeWg;-><init>(Lcom/android/server/am/UserController;Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$Pxxn90rYyxqzAxLE-3U2iU5qX6M;-><init>(Lcom/android/server/am/ProcessRecord$ErrorDialogController;)V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$Pxxn90rYyxqzAxLE-3U2iU5qX6M;->run()V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$W-AQD6Azm5daJOusD9r1R26WGBo;-><init>(Lcom/android/server/am/ProcessRecord$ErrorDialogController;)V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$W-AQD6Azm5daJOusD9r1R26WGBo;->run()V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$pOUTBc6k6s3-ZuZYLsjopLU9JWw;-><init>(Lcom/android/server/am/ProcessRecord$ErrorDialogController;)V
+PLcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$pOUTBc6k6s3-ZuZYLsjopLU9JWw;->run()V
+PLcom/android/server/am/-$$Lambda$ServiceRecord$LibDrdWU9t_vgStZ6swd0FNzHXc;-><init>(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/-$$Lambda$ServiceRecord$LibDrdWU9t_vgStZ6swd0FNzHXc;->run()V
+HSPLcom/android/server/am/-$$Lambda$SettingsToPropertiesMapper$oP9A7vTPRZcZgLdy43KKEveF4zQ;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;)V
+PLcom/android/server/am/-$$Lambda$SettingsToPropertiesMapper$oP9A7vTPRZcZgLdy43KKEveF4zQ;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/am/-$$Lambda$UserController$2SW3yysxmLLBBPZQ1P-qHVFL46g;-><init>(Lcom/android/server/am/UserController;ILjava/util/List;)V
+PLcom/android/server/am/-$$Lambda$UserController$2SW3yysxmLLBBPZQ1P-qHVFL46g;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$4$7fssIH82Tl96VpliLXcseb8VbZ8;-><init>(Lcom/android/server/am/UserController$4;ILcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/-$$Lambda$UserController$4$7fssIH82Tl96VpliLXcseb8VbZ8;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$4$P3Sj7pxBXLC7k_puCIIki2uVgGE;-><init>(Lcom/android/server/am/UserController$4;ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/-$$Lambda$UserController$4$P3Sj7pxBXLC7k_puCIIki2uVgGE;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$G0WJmqt4X_QG30fRlvXobn18mrE;-><init>(Lcom/android/server/am/UserController;)V
+PLcom/android/server/am/-$$Lambda$UserController$G0WJmqt4X_QG30fRlvXobn18mrE;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$I0p0bKjuvsSPLZB71mKQFfdUjZ4;-><init>(Lcom/android/server/am/UserController;Landroid/content/Intent;III)V
+PLcom/android/server/am/-$$Lambda$UserController$I0p0bKjuvsSPLZB71mKQFfdUjZ4;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$Injector$MYTLl7MOQKjyMJknWdxPeBLoPCc;-><init>(Landroid/appwidget/AppWidgetManagerInternal;I)V
+PLcom/android/server/am/-$$Lambda$UserController$Injector$MYTLl7MOQKjyMJknWdxPeBLoPCc;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$K71HFCIuD0iCwrDTKYnIUDyAeWg;-><init>(Lcom/android/server/am/UserController;Lcom/android/server/am/UserState;)V
 PLcom/android/server/am/-$$Lambda$UserController$K71HFCIuD0iCwrDTKYnIUDyAeWg;->run()V
-HSPLcom/android/server/am/-$$Lambda$UserController$O8GIT-HtdCM0CCjYajdW2AFcrWQ;->run()V
-HSPLcom/android/server/am/-$$Lambda$UserController$qRaFvFpU0fG-BFv-EOAM55wngno;->run()V
-HSPLcom/android/server/am/-$$Lambda$UserController$stQk1028ON105v_u-VMykVjcxLk;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$TdNZVHdOPNd598N3S_XTdc7pt7o;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/-$$Lambda$UserController$TdNZVHdOPNd598N3S_XTdc7pt7o;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$WUEqPFGA7TEsxb4dlgZAmMu5O-s;-><init>(Lcom/android/server/am/UserController;IILjava/util/ArrayList;)V
+PLcom/android/server/am/-$$Lambda$UserController$WUEqPFGA7TEsxb4dlgZAmMu5O-s;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$avTAix2Aub5zSKSBBofMYY2qXyk;-><init>(Lcom/android/server/am/UserController;I)V
+PLcom/android/server/am/-$$Lambda$UserController$avTAix2Aub5zSKSBBofMYY2qXyk;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$fU2mcMYCcCOsyUuGHKIUB-nSo1Y;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/-$$Lambda$UserController$fU2mcMYCcCOsyUuGHKIUB-nSo1Y;->run()V
+PLcom/android/server/am/-$$Lambda$UserController$stQk1028ON105v_u-VMykVjcxLk;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/-$$Lambda$UserController$stQk1028ON105v_u-VMykVjcxLk;->run()V
+PLcom/android/server/am/-$$Lambda$Y_KRxxoOXfy-YceuDG7WHd46Y_I;-><clinit>()V
 PLcom/android/server/am/-$$Lambda$Y_KRxxoOXfy-YceuDG7WHd46Y_I;-><init>()V
-PLcom/android/server/am/-$$Lambda$Y_KRxxoOXfy-YceuDG7WHd46Y_I;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/am/-$$Lambda$Y_KRxxoOXfy-YceuDG7WHd46Y_I;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/am/-$$Lambda$gATL8uvTPRd405IfefK1RL9bNqA;-><init>(Landroid/hardware/display/DisplayManagerInternal;)V
 HSPLcom/android/server/am/-$$Lambda$gATL8uvTPRd405IfefK1RL9bNqA;->run()V
+HSPLcom/android/server/am/-$$Lambda$nvO8eEA3_tju6oGhhJ2BoQfYghg;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/-$$Lambda$nvO8eEA3_tju6oGhhJ2BoQfYghg;->run()V
+PLcom/android/server/am/-$$Lambda$uR36okKz1QISfNZZ4VonU8JRVDE;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$uR36okKz1QISfNZZ4VonU8JRVDE;-><init>()V
+PLcom/android/server/am/-$$Lambda$uR36okKz1QISfNZZ4VonU8JRVDE;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$wajKhQOjpilT0K4j-1sLOJKYftw;-><clinit>()V
+PLcom/android/server/am/-$$Lambda$wajKhQOjpilT0K4j-1sLOJKYftw;-><init>()V
+PLcom/android/server/am/-$$Lambda$wajKhQOjpilT0K4j-1sLOJKYftw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/am/-$$Lambda$yk1Ms9fVlF6PvprMwF2rru-dw4Q;-><clinit>()V
 PLcom/android/server/am/-$$Lambda$yk1Ms9fVlF6PvprMwF2rru-dw4Q;-><init>()V
-PLcom/android/server/am/-$$Lambda$yk1Ms9fVlF6PvprMwF2rru-dw4Q;->applyAsLong(Ljava/lang/Object;)J
+HPLcom/android/server/am/-$$Lambda$yk1Ms9fVlF6PvprMwF2rru-dw4Q;->applyAsLong(Ljava/lang/Object;)J
+PLcom/android/server/am/ActiveInstrumentation;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActiveInstrumentation;->removeProcess(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActiveServices$1;-><init>(Lcom/android/server/am/ActiveServices;)V
 PLcom/android/server/am/ActiveServices$1;->run()V
+HPLcom/android/server/am/ActiveServices$ActiveForegroundApp;-><init>()V
+HSPLcom/android/server/am/ActiveServices$ForcedStandbyListener;-><init>(Lcom/android/server/am/ActiveServices;)V
 HSPLcom/android/server/am/ActiveServices$ServiceDumper;-><init>(Lcom/android/server/am/ActiveServices;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices$ServiceDumper;->dumpHeaderLocked()V
 HSPLcom/android/server/am/ActiveServices$ServiceDumper;->dumpLocked()V
@@ -2535,135 +5960,248 @@
 HSPLcom/android/server/am/ActiveServices$ServiceLookupResult;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ServiceRecord;Ljava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices$ServiceMap;-><init>(Lcom/android/server/am/ActiveServices;Landroid/os/Looper;I)V
 HSPLcom/android/server/am/ActiveServices$ServiceMap;->ensureNotStartingBackgroundLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActiveServices$ServiceMap;->rescheduleDelayedStartsLocked()V
+HSPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;)V
 HSPLcom/android/server/am/ActiveServices$ServiceRestarter;-><init>(Lcom/android/server/am/ActiveServices;Lcom/android/server/am/ActiveServices$1;)V
-HSPLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V
+HPLcom/android/server/am/ActiveServices$ServiceRestarter;->run()V
 HSPLcom/android/server/am/ActiveServices$ServiceRestarter;->setService(Lcom/android/server/am/ServiceRecord;)V
 HSPLcom/android/server/am/ActiveServices;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActiveServices;->access$200(Lcom/android/server/am/ActiveServices;I)Lcom/android/server/am/ActiveServices$ServiceMap;
+HSPLcom/android/server/am/ActiveServices;->appIsTopLocked(I)Z
 HSPLcom/android/server/am/ActiveServices;->appRestrictedAnyInBackground(ILjava/lang/String;)Z
 HSPLcom/android/server/am/ActiveServices;->attachApplicationLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
 HSPLcom/android/server/am/ActiveServices;->bindServiceLocked(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;Ljava/lang/String;I)I
-HSPLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZ)Z
+HPLcom/android/server/am/ActiveServices;->bringDownDisabledPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;IZZ)Z
+HSPLcom/android/server/am/ActiveServices;->bringDownServiceIfNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
 HSPLcom/android/server/am/ActiveServices;->bringDownServiceLocked(Lcom/android/server/am/ServiceRecord;)V
 HSPLcom/android/server/am/ActiveServices;->bringUpServiceLocked(Lcom/android/server/am/ServiceRecord;IZZZ)Ljava/lang/String;
 HSPLcom/android/server/am/ActiveServices;->bumpServiceExecutingLocked(Lcom/android/server/am/ServiceRecord;ZLjava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices;->cancelForegroundNotificationLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
-HSPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
-HSPLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZLandroid/util/ArrayMap;)Z
-PLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
-PLcom/android/server/am/ActiveServices;->dumpService(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ServiceRecord;[Ljava/lang/String;Z)V
-HSPLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
-PLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z
-PLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V
-HSPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
+HPLcom/android/server/am/ActiveServices;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
+HPLcom/android/server/am/ActiveServices;->clearRestartingIfNeededLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->collectPackageServicesLocked(Ljava/lang/String;Ljava/util/Set;ZZLandroid/util/ArrayMap;)Z
+HPLcom/android/server/am/ActiveServices;->decActiveForegroundAppLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/ActiveServices;->dumpService(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[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
+HPLcom/android/server/am/ActiveServices;->findServiceLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Lcom/android/server/am/ServiceRecord;
+HPLcom/android/server/am/ActiveServices;->forceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActiveServices;->foregroundAppShownEnoughLocked(Lcom/android/server/am/ActiveServices$ActiveForegroundApp;J)Z
+HPLcom/android/server/am/ActiveServices;->foregroundServiceProcStateChangedLocked(Lcom/android/server/am/UidRecord;)V
+HSPLcom/android/server/am/ActiveServices;->getAllowMode(Landroid/content/Intent;Ljava/lang/String;)I
+HPLcom/android/server/am/ActiveServices;->getRunningServiceInfoLocked(IIIZZ)Ljava/util/List;
+HPLcom/android/server/am/ActiveServices;->getServiceByNameLocked(Landroid/content/ComponentName;I)Lcom/android/server/am/ServiceRecord;
 HSPLcom/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;->hasBackgroundServicesLocked(I)Z
+HSPLcom/android/server/am/ActiveServices;->isServiceNeededLocked(Lcom/android/server/am/ServiceRecord;ZZ)Z
+PLcom/android/server/am/ActiveServices;->killMisbehavingService(Lcom/android/server/am/ServiceRecord;IILjava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices;->killServicesLocked(Lcom/android/server/am/ProcessRecord;Z)V
-PLcom/android/server/am/ActiveServices;->lambda$scheduleCleanUpHasStartedWhitelistingBgActivityStartsLocked$0$ActiveServices(Lcom/android/server/am/ServiceRecord;)V
-HSPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
+PLcom/android/server/am/ActiveServices;->lambda$showWhileInUsePermissionInFgsBlockedToastLocked$0$ActiveServices(Ljava/lang/String;)V
+HPLcom/android/server/am/ActiveServices;->makeRunningServiceInfoLocked(Lcom/android/server/am/ServiceRecord;)Landroid/app/ActivityManager$RunningServiceInfo;
 HSPLcom/android/server/am/ActiveServices;->newServiceDumperLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)Lcom/android/server/am/ActiveServices$ServiceDumper;
-HSPLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->peekServiceLocked(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder;
+HPLcom/android/server/am/ActiveServices;->performServiceRestartLocked(Lcom/android/server/am/ServiceRecord;)V
+PLcom/android/server/am/ActiveServices;->processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActiveServices;->publishServiceLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Landroid/os/IBinder;)V
 HSPLcom/android/server/am/ActiveServices;->realStartServiceLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/ProcessRecord;Z)V
 HSPLcom/android/server/am/ActiveServices;->removeConnectionLocked(Lcom/android/server/am/ConnectionRecord;Lcom/android/server/am/ProcessRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;)V
 HSPLcom/android/server/am/ActiveServices;->requestServiceBindingLocked(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;ZZ)Z
+HSPLcom/android/server/am/ActiveServices;->requestServiceBindingsLocked(Lcom/android/server/am/ServiceRecord;Z)V
 HSPLcom/android/server/am/ActiveServices;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;ILandroid/content/Intent;ZI)Z
-PLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V
+HPLcom/android/server/am/ActiveServices;->requestUpdateActiveForegroundAppsLocked(Lcom/android/server/am/ActiveServices$ServiceMap;J)V
 HSPLcom/android/server/am/ActiveServices;->retrieveServiceLocked(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIIZZZZ)Lcom/android/server/am/ActiveServices$ServiceLookupResult;
-PLcom/android/server/am/ActiveServices;->scheduleCleanUpHasStartedWhitelistingBgActivityStartsLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->scheduleServiceForegroundTransitionTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
-HSPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->scheduleServiceForegroundTransitionTimeoutLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->scheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;Z)Z
 HSPLcom/android/server/am/ActiveServices;->scheduleServiceTimeoutLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActiveServices;->sendServiceArgsLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
 HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;III)V
 HSPLcom/android/server/am/ActiveServices;->serviceDoneExecutingLocked(Lcom/android/server/am/ServiceRecord;ZZ)V
-PLcom/android/server/am/ActiveServices;->serviceProcessGoneLocked(Lcom/android/server/am/ServiceRecord;)V
-PLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;II)V
-HSPLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+PLcom/android/server/am/ActiveServices;->serviceForegroundCrash(Lcom/android/server/am/ProcessRecord;Ljava/lang/CharSequence;)V
+HPLcom/android/server/am/ActiveServices;->serviceForegroundTimeout(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->serviceProcessGoneLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->serviceTimeout(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActiveServices;->setServiceForegroundInnerLocked(Lcom/android/server/am/ServiceRecord;ILandroid/app/Notification;II)V
+HPLcom/android/server/am/ActiveServices;->setServiceForegroundLocked(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+HSPLcom/android/server/am/ActiveServices;->shouldAllowWhileInUsePermissionInFgsLocked(Ljava/lang/String;ILandroid/content/Intent;Lcom/android/server/am/ServiceRecord;Z)Z
+HPLcom/android/server/am/ActiveServices;->showWhileInUseDebugToastLocked(III)V
+PLcom/android/server/am/ActiveServices;->showWhileInUsePermissionInFgsBlockedToastLocked(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices;->startServiceInnerLocked(Lcom/android/server/am/ActiveServices$ServiceMap;Landroid/content/Intent;Lcom/android/server/am/ServiceRecord;ZZ)Landroid/content/ComponentName;
+HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;I)Landroid/content/ComponentName;
 HSPLcom/android/server/am/ActiveServices;->startServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;IIZLjava/lang/String;IZ)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActiveServices;->stopAllForegroundServicesLocked(ILjava/lang/String;)V
 HSPLcom/android/server/am/ActiveServices;->stopInBackgroundLocked(I)V
-PLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
-PLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
-HSPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
-PLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
+HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActiveServices;->stopServiceLocked(Lcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ActiveServices;->stopServiceTokenLocked(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HSPLcom/android/server/am/ActiveServices;->systemServicesReady()V
+HPLcom/android/server/am/ActiveServices;->unbindFinishedLocked(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent;Z)V
 HSPLcom/android/server/am/ActiveServices;->unbindServiceLocked(Landroid/app/IServiceConnection;)Z
 HSPLcom/android/server/am/ActiveServices;->unscheduleServiceRestartLocked(Lcom/android/server/am/ServiceRecord;IZ)Z
-PLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
-PLcom/android/server/am/ActiveServices;->updateScreenStateLocked(Z)V
-PLcom/android/server/am/ActiveServices;->updateServiceApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ActiveServices;->updateForegroundApps(Lcom/android/server/am/ActiveServices$ServiceMap;)V
+HPLcom/android/server/am/ActiveServices;->updateScreenStateLocked(Z)V
+HPLcom/android/server/am/ActiveServices;->updateServiceApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
 HSPLcom/android/server/am/ActiveServices;->updateServiceClientActivitiesLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ConnectionRecord;Z)Z
 HSPLcom/android/server/am/ActiveServices;->updateServiceConnectionActivitiesLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActiveServices;->updateServiceForegroundLocked(Lcom/android/server/am/ProcessRecord;Z)V
-PLcom/android/server/am/ActiveServices;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/am/ActiveServices;->updateServiceGroupLocked(Landroid/app/IServiceConnection;II)V
+HSPLcom/android/server/am/ActiveServices;->updateWhitelistManagerLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActiveUids;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
+HSPLcom/android/server/am/ActiveUids;->clear()V
+HSPLcom/android/server/am/ActiveUids;->get(I)Lcom/android/server/am/UidRecord;
+HPLcom/android/server/am/ActiveUids;->keyAt(I)I
+HSPLcom/android/server/am/ActiveUids;->put(ILcom/android/server/am/UidRecord;)V
+HSPLcom/android/server/am/ActiveUids;->remove(I)V
 HSPLcom/android/server/am/ActiveUids;->size()I
 HSPLcom/android/server/am/ActiveUids;->valueAt(I)Lcom/android/server/am/UidRecord;
-PLcom/android/server/am/ActivityManagerConstants$1;->onPropertyChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerConstants;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;)V
-PLcom/android/server/am/ActivityManagerConstants;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/am/ActivityManagerConstants$1;-><init>(Lcom/android/server/am/ActivityManagerConstants;)V
+HSPLcom/android/server/am/ActivityManagerConstants$1;->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;->access$000(Lcom/android/server/am/ActivityManagerConstants;)V
+PLcom/android/server/am/ActivityManagerConstants;->access$100(Lcom/android/server/am/ActivityManagerConstants;)V
+HSPLcom/android/server/am/ActivityManagerConstants;->computeEmptyProcessLimit(I)I
+HPLcom/android/server/am/ActivityManagerConstants;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/ActivityManagerConstants;->getOverrideMaxCachedProcesses()I
+HSPLcom/android/server/am/ActivityManagerConstants;->loadDeviceConfigConstants()V
 PLcom/android/server/am/ActivityManagerConstants;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/am/ActivityManagerConstants;->setOverrideMaxCachedProcesses(I)V
 HSPLcom/android/server/am/ActivityManagerConstants;->start(Landroid/content/ContentResolver;)V
-HSPLcom/android/server/am/ActivityManagerConstants;->updateBackgroundActivityStartsPackageNamesWhitelist()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateActivityStartsLoggingEnabled()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateBackgroundActivityStarts()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateBackgroundFgsStartsRestriction()V
 HSPLcom/android/server/am/ActivityManagerConstants;->updateConstants()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateForceRestrictedBackgroundCheck()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateForegroundServiceStartsLoggingEnabled()V
+HSPLcom/android/server/am/ActivityManagerConstants;->updateImperceptibleKillExemptions()V
 HSPLcom/android/server/am/ActivityManagerConstants;->updateMaxCachedProcesses()V
-HSPLcom/android/server/am/ActivityManagerService$10;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HSPLcom/android/server/am/ActivityManagerService$15;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$15;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HSPLcom/android/server/am/ActivityManagerService$16;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$17;->run()V
-HSPLcom/android/server/am/ActivityManagerService$18;-><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;Landroid/os/DropBoxManager;)V
-HSPLcom/android/server/am/ActivityManagerService$18;->run()V
-HSPLcom/android/server/am/ActivityManagerService$19;->compare(Landroid/util/Pair;Landroid/util/Pair;)I
-HSPLcom/android/server/am/ActivityManagerService$19;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/am/ActivityManagerConstants;->updateOomAdjUpdatePolicy()V
+PLcom/android/server/am/ActivityManagerService$10;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$10;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/am/ActivityManagerService$11;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$11;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HPLcom/android/server/am/ActivityManagerService$12;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$13;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService$13;->run()V
+PLcom/android/server/am/ActivityManagerService$14;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/am/ActivityManagerService$15;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService$15;->run()V
+PLcom/android/server/am/ActivityManagerService$17;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$17;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HSPLcom/android/server/am/ActivityManagerService$18;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$18;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/ActivityManagerService$19;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
+PLcom/android/server/am/ActivityManagerService$19;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/am/ActivityManagerService$19;->onChange(Z)V
+PLcom/android/server/am/ActivityManagerService$19;->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
 PLcom/android/server/am/ActivityManagerService$1;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/am/ActivityManagerService$1;->dumpNormal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
-PLcom/android/server/am/ActivityManagerService$20;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I
-PLcom/android/server/am/ActivityManagerService$20;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/am/ActivityManagerService$21;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ActivityManagerService$21;->compare(Lcom/android/server/am/ProcessMemInfo;Lcom/android/server/am/ProcessMemInfo;)I
+HSPLcom/android/server/am/ActivityManagerService$20;-><init>(Lcom/android/server/am/ActivityManagerService;IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
+HSPLcom/android/server/am/ActivityManagerService$20;-><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;Landroid/os/DropBoxManager;)V
+HSPLcom/android/server/am/ActivityManagerService$20;->run()V
+HSPLcom/android/server/am/ActivityManagerService$21;-><init>()V
+HSPLcom/android/server/am/ActivityManagerService$21;-><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;Landroid/os/DropBoxManager;)V
+HSPLcom/android/server/am/ActivityManagerService$21;->compare(Landroid/util/Pair;Landroid/util/Pair;)I
 HSPLcom/android/server/am/ActivityManagerService$21;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/am/ActivityManagerService$2;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-HSPLcom/android/server/am/ActivityManagerService$2;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z
-HSPLcom/android/server/am/ActivityManagerService$2;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
-HSPLcom/android/server/am/ActivityManagerService$2;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
-HSPLcom/android/server/am/ActivityManagerService$2;->newArray(I)[Landroid/content/IntentFilter;
-HSPLcom/android/server/am/ActivityManagerService$2;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
-HSPLcom/android/server/am/ActivityManagerService$2;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-HSPLcom/android/server/am/ActivityManagerService$2;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter;
-HSPLcom/android/server/am/ActivityManagerService$3;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/ActivityManagerService$5;->run()V
+HSPLcom/android/server/am/ActivityManagerService$21;->run()V
+PLcom/android/server/am/ActivityManagerService$22;-><init>()V
+PLcom/android/server/am/ActivityManagerService$22;-><init>(Z)V
+HPLcom/android/server/am/ActivityManagerService$22;->compare(Landroid/util/Pair;Landroid/util/Pair;)I
+PLcom/android/server/am/ActivityManagerService$22;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I
+HPLcom/android/server/am/ActivityManagerService$22;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/am/ActivityManagerService$23;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$23;-><init>(Z)V
+HPLcom/android/server/am/ActivityManagerService$23;->compare(Lcom/android/server/am/ActivityManagerService$MemItem;Lcom/android/server/am/ActivityManagerService$MemItem;)I
+HSPLcom/android/server/am/ActivityManagerService$23;->compare(Lcom/android/server/am/ProcessMemInfo;Lcom/android/server/am/ProcessMemInfo;)I
+HSPLcom/android/server/am/ActivityManagerService$23;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/ActivityManagerService$24;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$24;->compare(Lcom/android/server/am/ProcessMemInfo;Lcom/android/server/am/ProcessMemInfo;)I
+HPLcom/android/server/am/ActivityManagerService$24;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/am/ActivityManagerService$25;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService$25;->run()V
+HSPLcom/android/server/am/ActivityManagerService$2;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchCancelled([B)V
+HPLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchFinished([BJ)V
+HSPLcom/android/server/am/ActivityManagerService$2;->onActivityLaunched([BI)V
+HPLcom/android/server/am/ActivityManagerService$2;->onIntentFailed()V
+HSPLcom/android/server/am/ActivityManagerService$2;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/am/ActivityManagerService$2;->onReportFullyDrawn([BJ)V
+HSPLcom/android/server/am/ActivityManagerService$3;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService$3;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/ActivityManagerService$4;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$4;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
+HSPLcom/android/server/am/ActivityManagerService$4;->allowFilterResult(Lcom/android/server/am/BroadcastFilter;Ljava/util/List;)Z
+HPLcom/android/server/am/ActivityManagerService$4;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+HPLcom/android/server/am/ActivityManagerService$4;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
+HSPLcom/android/server/am/ActivityManagerService$4;->newArray(I)[Landroid/content/IntentFilter;
+HSPLcom/android/server/am/ActivityManagerService$4;->newArray(I)[Lcom/android/server/am/BroadcastFilter;
+HSPLcom/android/server/am/ActivityManagerService$4;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
+HSPLcom/android/server/am/ActivityManagerService$4;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter;
+HSPLcom/android/server/am/ActivityManagerService$5;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+HPLcom/android/server/am/ActivityManagerService$5;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/am/ActivityManagerService$5;->lambda$handleMessage$0(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HSPLcom/android/server/am/ActivityManagerService$6;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$7;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService$7;->run()V
+PLcom/android/server/am/ActivityManagerService$8;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;IZIILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/am/ActivityManagerService$8;->onRemoveCompleted(Ljava/lang/String;Z)V
+PLcom/android/server/am/ActivityManagerService$9;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService$9;->run()V
 HSPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;)V
 HSPLcom/android/server/am/ActivityManagerService$AppDeathRecipient;->binderDied()V
+HSPLcom/android/server/am/ActivityManagerService$CpuBinder$1;-><init>(Lcom/android/server/am/ActivityManagerService$CpuBinder;)V
 PLcom/android/server/am/ActivityManagerService$CpuBinder$1;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HSPLcom/android/server/am/ActivityManagerService$CpuBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 PLcom/android/server/am/ActivityManagerService$CpuBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService$DbBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 PLcom/android/server/am/ActivityManagerService$DbBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$DevelopmentSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/ActivityManagerService$DevelopmentSettingsObserver;->onChange()V
+PLcom/android/server/am/ActivityManagerService$DevelopmentSettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/am/ActivityManagerService$GraphicsBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 PLcom/android/server/am/ActivityManagerService$GraphicsBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;-><init>(Landroid/os/Handler;Landroid/content/Context;)V
 HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getPolicy()I
+HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->getValidEnforcementPolicy(Ljava/lang/String;)I
 HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->isDisabled()Z
 PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->onChange(Z)V
+PLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
 HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->registerObserver()V
 HSPLcom/android/server/am/ActivityManagerService$HiddenApiSettings;->update()V
+PLcom/android/server/am/ActivityManagerService$Identity;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/IBinder;II)V
+HPLcom/android/server/am/ActivityManagerService$ImportanceToken;-><init>(Lcom/android/server/am/ActivityManagerService;ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService$ImportanceToken;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/ActivityManagerService$Injector;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/am/ActivityManagerService$Injector;->ensureHasNetworkManagementInternal()Z
 HSPLcom/android/server/am/ActivityManagerService$Injector;->getAppOpsService(Ljava/io/File;Landroid/os/Handler;)Lcom/android/server/appop/AppOpsService;
+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;
 HSPLcom/android/server/am/ActivityManagerService$Injector;->isNetworkRestrictedForUid(I)Z
+HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/ActivityManagerService$IntentFirewallInterface;->getAMSLock()Ljava/lang/Object;
+HSPLcom/android/server/am/ActivityManagerService$ItemMatcher;-><init>()V
+PLcom/android/server/am/ActivityManagerService$ItemMatcher;->build(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$ItemMatcher;->build([Ljava/lang/String;I)I
 HSPLcom/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
+PLcom/android/server/am/ActivityManagerService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/am/ActivityManagerService$Lifecycle;->onStart()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->broadcastCloseSystemDialogs(Ljava/lang/String;)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
+HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastCloseSystemDialogs(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastGlobalConfigurationChanged(IZ)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZIZ)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->broadcastIntentInPackage(Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZIZ)I
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/am/ActivityManagerService$LocalService;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->cleanUpServices(ILandroid/content/ComponentName;Landroid/content/Intent;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->clearPendingBackup(I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->clearPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;)V
 PLcom/android/server/am/ActivityManagerService$LocalService;->disconnectActivityFromServices(Ljava/lang/Object;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->disconnectActivityFromServices(Ljava/lang/Object;Ljava/lang/Object;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/am/ActivityManagerService$LocalService;->ensureNotSpecialUser(I)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->finishBooting()V
@@ -2671,116 +6209,174 @@
 PLcom/android/server/am/ActivityManagerService$LocalService;->getActivityPresentationInfo(Landroid/os/IBinder;)Landroid/content/pm/ActivityPresentationInfo;
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentProfileIds()[I
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->getCurrentUserId()I
-PLcom/android/server/am/ActivityManagerService$LocalService;->getMemoryHighWaterMarkForProcesses()Ljava/util/List;
-PLcom/android/server/am/ActivityManagerService$LocalService;->getMemoryStateForProcesses()Ljava/util/List;
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->getStorageMountMode(II)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->getMemoryStateForProcesses()Ljava/util/List;
 PLcom/android/server/am/ActivityManagerService$LocalService;->getTaskIdForActivity(Landroid/os/IBinder;Z)I
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->getUidProcessState(I)I
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService$LocalService;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->hasStartedUserState(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->inputDispatchingTimedOut(IZLjava/lang/String;)J
+PLcom/android/server/am/ActivityManagerService$LocalService;->inputDispatchingTimedOut(Ljava/lang/Object;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Ljava/lang/Object;ZLjava/lang/String;)Z
 PLcom/android/server/am/ActivityManagerService$LocalService;->isActivityStartsLoggingEnabled()Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isAppBad(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isAppForeground(I)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isAppForeground(I)Z
 PLcom/android/server/am/ActivityManagerService$LocalService;->isBackgroundActivityStartsEnabled()Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isBooted()Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isBooting()Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isCurrentProfile(I)Z
-PLcom/android/server/am/ActivityManagerService$LocalService;->isPackageNameWhitelistedForBgActivityStarts(Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService$LocalService;->isCurrentProfile(I)Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isRuntimeRestarted()Z
+HSPLcom/android/server/am/ActivityManagerService$LocalService;->isSplitConfigurationChange(I)Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isSystemReady()Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isUidActive(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->isUidCurrentlyInstrumented(I)Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->isUserRunning(II)Z
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->killAllBackgroundProcessesExcept(II)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->killProcessesForRemovedTask(Ljava/util/ArrayList;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->killForegroundAppsForUser(I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->killProcessesForRemovedTask(Ljava/util/ArrayList;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->lambda$disconnectActivityFromServices$1$ActivityManagerService$LocalService(Lcom/android/server/wm/ActivityServiceConnectionsHolder;Ljava/lang/Object;)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->monitor()V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->notifyNetworkPolicyRulesUpdated(IJ)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->onWakefulnessChanged(I)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->reportCurKeyguardUsageEvent(Z)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->onWakefulnessChanged(I)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->prepareForPossibleShutdown()V
+HSPLcom/android/server/am/ActivityManagerService$LocalService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->reportCurKeyguardUsageEvent(Z)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->scheduleAppGcs()V
 PLcom/android/server/am/ActivityManagerService$LocalService;->sendForegroundProfileChanged(I)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->setBooted(Z)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->setBooting(Z)V
+PLcom/android/server/am/ActivityManagerService$LocalService;->setDebugFlagsForStartingActivity(Landroid/content/pm/ActivityInfo;ILandroid/app/ProfilerInfo;Ljava/lang/Object;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->setDeviceIdleWhitelist([I[I)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;I)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->setRunningRemoteAnimation(IZ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->setHasOverlayUi(IZ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentAllowBgActivityStarts(Landroid/content/IIntentSender;Landroid/os/IBinder;I)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->setSwitchingFromSystemUserMessage(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->setSwitchingToSystemUserMessage(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->shouldConfirmCredentials(I)Z
+PLcom/android/server/am/ActivityManagerService$LocalService;->showWhileInUseDebugToast(III)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)Z
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->startProcess(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZLjava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/am/ActivityManagerService$LocalService;->startServiceInPackage(ILandroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;IZ)Landroid/content/ComponentName;
-PLcom/android/server/am/ActivityManagerService$LocalService;->tempWhitelistForPendingIntent(IIIJLjava/lang/String;)V
+HSPLcom/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;IZ)Landroid/content/ComponentName;
+HPLcom/android/server/am/ActivityManagerService$LocalService;->tempWhitelistForPendingIntent(IIIJLjava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->trimApplications()V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;)V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateCpuStats()V
-PLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempWhitelist([IIZ)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
-HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateOomAdj()V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateCpuStats()V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateDeviceIdleTempWhitelist([IIZ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateForegroundTimeIfOnBattery(Ljava/lang/String;IJ)V
+HPLcom/android/server/am/ActivityManagerService$LocalService;->updateOomAdj()V
 HSPLcom/android/server/am/ActivityManagerService$LocalService;->updateOomLevelsForDisplay(I)V
+HSPLcom/android/server/am/ActivityManagerService$MainHandler$1;-><init>(Lcom/android/server/am/ActivityManagerService$MainHandler;Ljava/util/ArrayList;)V
 HSPLcom/android/server/am/ActivityManagerService$MainHandler$1;->run()V
+HSPLcom/android/server/am/ActivityManagerService$MainHandler;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/am/ActivityManagerService$MainHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/ActivityManagerService$MemBinder$1;-><init>(Lcom/android/server/am/ActivityManagerService$MemBinder;)V
 PLcom/android/server/am/ActivityManagerService$MemBinder$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/am/ActivityManagerService$MemBinder$1;->dumpHigh(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
-PLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJI)V
-PLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJIZ)V
+HSPLcom/android/server/am/ActivityManagerService$MemBinder;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$MemBinder;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJJI)V
+HPLcom/android/server/am/ActivityManagerService$MemItem;-><init>(Ljava/lang/String;Ljava/lang/String;JJJIZ)V
+PLcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;-><init>()V
+PLcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;-><init>(Lcom/android/server/am/ActivityManagerService$1;)V
+HSPLcom/android/server/am/ActivityManagerService$PackageAssociationInfo;-><init>(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;Landroid/util/ArraySet;Z)V
+PLcom/android/server/am/ActivityManagerService$PackageAssociationInfo;->getAllowedPackageAssociations()Landroid/util/ArraySet;
+PLcom/android/server/am/ActivityManagerService$PackageAssociationInfo;->isDebuggable()Z
+HPLcom/android/server/am/ActivityManagerService$PackageAssociationInfo;->isPackageAssociationAllowed(Ljava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService$PackageAssociationInfo;->setDebuggable(Z)V
+HPLcom/android/server/am/ActivityManagerService$PendingTempWhitelist;-><init>(IJLjava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService$PermissionController;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/ActivityManagerService$PermissionController;->checkPermission(Ljava/lang/String;II)Z
 HSPLcom/android/server/am/ActivityManagerService$PermissionController;->getPackagesForUid(I)[Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService$PermissionController;->isRuntimePermission(Ljava/lang/String;)Z
-HSPLcom/android/server/am/ActivityManagerService$PermissionController;->noteOp(Ljava/lang/String;ILjava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService$PermissionController;->noteOp(Ljava/lang/String;ILjava/lang/String;)I
+HSPLcom/android/server/am/ActivityManagerService$PidMap;-><init>()V
+HSPLcom/android/server/am/ActivityManagerService$PidMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService$PidMap;->doAddInternal(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService$PidMap;->doRemoveIfNoThreadInternal(Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/ActivityManagerService$PidMap;->doRemoveInternal(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ActivityManagerService$PidMap;->get(I)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService$PidMap;->indexOfKey(I)I
-PLcom/android/server/am/ActivityManagerService$PidMap;->keyAt(I)I
-HSPLcom/android/server/am/ActivityManagerService$PidMap;->put(ILcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ActivityManagerService$PidMap;->remove(I)V
+HPLcom/android/server/am/ActivityManagerService$PidMap;->indexOfKey(I)I
+HPLcom/android/server/am/ActivityManagerService$PidMap;->keyAt(I)I
+HSPLcom/android/server/am/ActivityManagerService$PidMap;->put(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActivityManagerService$PidMap;->remove(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService$PidMap;->removeIfNoThread(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ActivityManagerService$PidMap;->size()I
 HSPLcom/android/server/am/ActivityManagerService$PidMap;->valueAt(I)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;->run()V
-PLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V
+HPLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ActivityManagerService$ProcStatsRunnable;->run()V
+HSPLcom/android/server/am/ActivityManagerService$ProcessChangeItem;-><init>()V
+HSPLcom/android/server/am/ActivityManagerService$ProcessInfoService;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HPLcom/android/server/am/ActivityManagerService$ProcessInfoService;->getProcessStatesAndOomScoresFromPids([I[I[I)V
+HSPLcom/android/server/am/ActivityManagerService$ProfileData;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/ActivityManagerService$ProfileData;->getProfileApp()Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService$ProfileData;->getProfileProc()Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService$ProfileData;->getProfilerInfo()Landroid/app/ProfilerInfo;
+PLcom/android/server/am/ActivityManagerService$RecordPssRunnable;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;Landroid/net/Uri;Landroid/content/ContentResolver;)V
+PLcom/android/server/am/ActivityManagerService$RecordPssRunnable;->run()V
+HSPLcom/android/server/am/ActivityManagerService$UiHandler;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/ActivityManagerService$UiHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/am/ActivityManagerService$UidObserverRegistration;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/ActivityManagerService$UidObserverRegistration;-><clinit>()V
+HSPLcom/android/server/am/ActivityManagerService$UidObserverRegistration;-><init>(ILjava/lang/String;II)V
+HPLcom/android/server/am/ActivityManagerService$UidObserverRegistration;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)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;->access$000(Lcom/android/server/am/ActivityManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HSPLcom/android/server/am/ActivityManagerService;->access$100(Lcom/android/server/am/ActivityManagerService;)J
+HSPLcom/android/server/am/ActivityManagerService;->access$1000(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->access$102(Lcom/android/server/am/ActivityManagerService;J)J
+HSPLcom/android/server/am/ActivityManagerService;->access$1100(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->access$1200(Lcom/android/server/am/ActivityManagerService;Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->access$1300(Lcom/android/server/am/ActivityManagerService;Landroid/content/Context;)Z
+HPLcom/android/server/am/ActivityManagerService;->access$1600(Lcom/android/server/am/ActivityManagerService;I)Z
+HSPLcom/android/server/am/ActivityManagerService;->access$1700(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/am/ActivityManagerService;->access$1800(Lcom/android/server/am/ActivityManagerService;I)V
+HSPLcom/android/server/am/ActivityManagerService;->access$200(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/ActivityManagerService;->access$300(Lcom/android/server/am/ActivityManagerService;II)V
 PLcom/android/server/am/ActivityManagerService;->access$400(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->access$500(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->access$702(Lcom/android/server/am/ActivityManagerService;Z)Z
+HSPLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZLjava/lang/String;)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZZLjava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->addAppLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZZZZLjava/lang/String;)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->addBackgroundCheckViolationLocked(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->addBroadcastStatLocked(Ljava/lang/String;Ljava/lang/String;IIJ)V
 HSPLcom/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;)V
 HSPLcom/android/server/am/ActivityManagerService;->addPackageDependency(Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->addPidLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActivityManagerService;->addProcessToGcListLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ActivityManagerService;->addServiceToMap(Landroid/util/ArrayMap;Ljava/lang/String;)V
 PLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActivityManagerService;->appDiedLocked(Lcom/android/server/am/ProcessRecord;ILandroid/app/IApplicationThread;Z)V
+HSPLcom/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;->appNotRespondingViaProvider(Landroid/os/IBinder;)V
 HSPLcom/android/server/am/ActivityManagerService;->appRestrictedInBackgroundLocked(ILjava/lang/String;I)I
 HSPLcom/android/server/am/ActivityManagerService;->appServicesRestrictedInBackgroundLocked(ILjava/lang/String;I)I
 HSPLcom/android/server/am/ActivityManagerService;->appendBasicMemEntry(Ljava/lang/StringBuilder;IIJJLjava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->appendDropBoxProcessHeaders(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/StringBuilder;)V
 HSPLcom/android/server/am/ActivityManagerService;->appendMemBucket(Ljava/lang/StringBuilder;JLjava/lang/String;Z)V
 HSPLcom/android/server/am/ActivityManagerService;->appendMemInfo(Ljava/lang/StringBuilder;Lcom/android/server/am/ProcessMemInfo;)V
+PLcom/android/server/am/ActivityManagerService;->attachAgent(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->attachApplication(Landroid/app/IApplicationThread;J)V
 HSPLcom/android/server/am/ActivityManagerService;->attachApplicationLocked(Landroid/app/IApplicationThread;IIJ)Z
-HSPLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
-PLcom/android/server/am/ActivityManagerService;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
+PLcom/android/server/am/ActivityManagerService;->backgroundServicesFinishedLocked(I)V
+HPLcom/android/server/am/ActivityManagerService;->backupAgentCreated(Ljava/lang/String;Landroid/os/IBinder;I)V
 HSPLcom/android/server/am/ActivityManagerService;->batteryNeedsCpuUpdate()V
 HSPLcom/android/server/am/ActivityManagerService;->batteryPowerChanged(Z)V
 HSPLcom/android/server/am/ActivityManagerService;->batterySendBroadcast(Landroid/content/Intent;)V
 HSPLcom/android/server/am/ActivityManagerService;->batteryStatsReset()V
-PLcom/android/server/am/ActivityManagerService;->bindBackupAgent(Ljava/lang/String;II)Z
+HPLcom/android/server/am/ActivityManagerService;->bindBackupAgent(Ljava/lang/String;II)Z
 HSPLcom/android/server/am/ActivityManagerService;->bindIsolatedService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;Ljava/lang/String;I)I
 PLcom/android/server/am/ActivityManagerService;->bindService(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IServiceConnection;ILjava/lang/String;I)I
 HSPLcom/android/server/am/ActivityManagerService;->boostPriorityForLockedSection()V
-HSPLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V
+PLcom/android/server/am/ActivityManagerService;->bootAnimationComplete()V
 HSPLcom/android/server/am/ActivityManagerService;->broadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZI)I
-HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZIZ)I
+HPLcom/android/server/am/ActivityManagerService;->broadcastIntentInPackage(Ljava/lang/String;IIILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;Ljava/lang/String;Landroid/os/Bundle;ZZIZ)I
 HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIII)I
 HSPLcom/android/server/am/ActivityManagerService;->broadcastIntentLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;[Ljava/lang/String;ILandroid/os/Bundle;ZZIIIIIZ)I
 HSPLcom/android/server/am/ActivityManagerService;->broadcastQueueForIntent(Landroid/content/Intent;)Lcom/android/server/am/BroadcastQueue;
-PLcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
-PLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V
+HPLcom/android/server/am/ActivityManagerService;->canClearIdentity(III)Z
+HPLcom/android/server/am/ActivityManagerService;->canGcNowLocked()Z
+HPLcom/android/server/am/ActivityManagerService;->cancelIntentSender(Landroid/content/IIntentSender;)V
 HSPLcom/android/server/am/ActivityManagerService;->checkAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ActivityManagerService;->checkBroadcastFromSystem(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IZLjava/util/List;)V
 HSPLcom/android/server/am/ActivityManagerService;->checkCallingPermission(Ljava/lang/String;)I
@@ -2788,43 +6384,55 @@
 HSPLcom/android/server/am/ActivityManagerService;->checkContentProviderAccess(Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->checkContentProviderAssociation(Lcom/android/server/am/ProcessRecord;ILandroid/content/pm/ProviderInfo;)Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->checkContentProviderPermissionLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;IZ)Ljava/lang/String;
-PLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked()V
+HPLcom/android/server/am/ActivityManagerService;->checkExcessivePowerUsageLocked()V
 HSPLcom/android/server/am/ActivityManagerService;->checkPermission(Ljava/lang/String;II)I
-HSPLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I
+HPLcom/android/server/am/ActivityManagerService;->checkPermissionWithToken(Ljava/lang/String;IILandroid/os/IBinder;)I
 HSPLcom/android/server/am/ActivityManagerService;->checkTime(JLjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
+HPLcom/android/server/am/ActivityManagerService;->checkUriPermission(Landroid/net/Uri;IIIILandroid/os/IBinder;)I
 HSPLcom/android/server/am/ActivityManagerService;->cleanUpApplicationRecordLocked(Lcom/android/server/am/ProcessRecord;ZZIZ)Z
 HSPLcom/android/server/am/ActivityManagerService;->cleanupAppInLaunchingProvidersLocked(Lcom/android/server/am/ProcessRecord;Z)Z
-HSPLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;I[Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;IZ[Ljava/lang/String;)Ljava/util/ArrayList;
+HPLcom/android/server/am/ActivityManagerService;->cleanupDisabledPackageComponentsLocked(Ljava/lang/String;I[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->clearApplicationUserData(Ljava/lang/String;ZLandroid/content/pm/IPackageDataObserver;I)Z
+PLcom/android/server/am/ActivityManagerService;->clearBroadcastQueueForUserLocked(I)Z
+PLcom/android/server/am/ActivityManagerService;->clearPendingBackup(I)V
+HPLcom/android/server/am/ActivityManagerService;->closeSystemDialogs(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->collectProcesses(Ljava/io/PrintWriter;IZ[Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->collectReceiverComponents(Landroid/content/Intent;Ljava/lang/String;I[I)Ljava/util/List;
 HSPLcom/android/server/am/ActivityManagerService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+PLcom/android/server/am/ActivityManagerService;->crashApplication(IILjava/lang/String;ILjava/lang/String;Z)V
 PLcom/android/server/am/ActivityManagerService;->createAnrDumpFile(Ljava/io/File;)Ljava/io/File;
-HSPLcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->decProviderCountLocked(Lcom/android/server/am/ContentProviderConnection;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;Z)Z
+PLcom/android/server/am/ActivityManagerService;->demoteSystemServerRenderThread(I)V
 HSPLcom/android/server/am/ActivityManagerService;->dispatchProcessDied(II)V
 HSPLcom/android/server/am/ActivityManagerService;->dispatchProcessesChanged()V
 HSPLcom/android/server/am/ActivityManagerService;->dispatchUidsChanged()V
 HSPLcom/android/server/am/ActivityManagerService;->dispatchUidsChangedForObserver(Landroid/app/IUidObserver;Lcom/android/server/am/ActivityManagerService$UidObserverRegistration;I)V
-PLcom/android/server/am/ActivityManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HPLcom/android/server/am/ActivityManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 HSPLcom/android/server/am/ActivityManagerService;->doLowMemReportIfNeededLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->doStopUidLocked(ILcom/android/server/am/UidRecord;)V
 PLcom/android/server/am/ActivityManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpAllowedAssociationsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;[Ljava/lang/String;ZLjava/util/ArrayList;Ljava/io/PrintWriter;)V
-PLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;Z)V
-PLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V
+HPLcom/android/server/am/ActivityManagerService;->dumpAllowedAssociationsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Lcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;[Ljava/lang/String;ZLjava/util/ArrayList;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/am/ActivityManagerService$MemoryUsageDumpOptions;[Ljava/lang/String;ZLjava/util/ArrayList;Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;ZLjava/io/PrintWriter;Z)V
+HPLcom/android/server/am/ActivityManagerService;->dumpApplicationMemoryUsageHeader(Ljava/io/PrintWriter;JJZZ)V
 PLcom/android/server/am/ActivityManagerService;->dumpBinderProxies(Ljava/io/PrintWriter;I)V
-PLcom/android/server/am/ActivityManagerService;->dumpBinderProxiesCounts(Ljava/io/PrintWriter;Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->dumpBroadcastStatsCheckinLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpBinderProxiesCounts(Ljava/io/PrintWriter;Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->dumpBinderProxyInterfaceCounts(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpBroadcastStatsCheckinLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
 PLcom/android/server/am/ActivityManagerService;->dumpBroadcastStatsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpDbInfo(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpEverything(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;ZZI)V
-PLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpBroadcastsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpDbInfo(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpEverything(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;ZZI)V
+HPLcom/android/server/am/ActivityManagerService;->dumpGraphicsHardwareUsage(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->dumpHeap(Ljava/lang/String;IZZZLjava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/os/RemoteCallback;)Z
+PLcom/android/server/am/ActivityManagerService;->dumpHeapFinished(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpJavaTracesTombstoned(ILjava/lang/String;J)J
 PLcom/android/server/am/ActivityManagerService;->dumpLmkLocked(Ljava/io/PrintWriter;)Z
-PLcom/android/server/am/ActivityManagerService;->dumpLruEntryLocked(Ljava/io/PrintWriter;ILcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->dumpLruLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZ)V
+HPLcom/android/server/am/ActivityManagerService;->dumpLruEntryLocked(Ljava/io/PrintWriter;ILcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpLruLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpMemItems(Landroid/util/proto/ProtoOutputStream;JLjava/lang/String;Ljava/util/ArrayList;ZZZ)V
+HPLcom/android/server/am/ActivityManagerService;->dumpMemItems(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/util/ArrayList;ZZZZ)V
 PLcom/android/server/am/ActivityManagerService;->dumpPermissionsLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->dumpProcessList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/am/ActivityManagerService;->dumpProcessOomList(Ljava/io/PrintWriter;Lcom/android/server/am/ActivityManagerService;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Z
@@ -2833,22 +6441,29 @@
 PLcom/android/server/am/ActivityManagerService;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
 PLcom/android/server/am/ActivityManagerService;->dumpProviderProto(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)Z
 PLcom/android/server/am/ActivityManagerService;->dumpProvidersLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
-PLcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/util/ArrayList;Lcom/android/internal/os/ProcessCpuTracker;Landroid/util/SparseArray;Ljava/util/ArrayList;)Ljava/io/File;
+HPLcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HPLcom/android/server/am/ActivityManagerService;->dumpStackTraces(Ljava/util/ArrayList;Lcom/android/internal/os/ProcessCpuTracker;Landroid/util/SparseArray;Ljava/util/ArrayList;)Ljava/io/File;
 HSPLcom/android/server/am/ActivityManagerService;->dumpUids(Ljava/io/PrintWriter;Ljava/lang/String;ILcom/android/server/am/ActiveUids;Ljava/lang/String;Z)Z
+PLcom/android/server/am/ActivityManagerService;->dumpUsersLocked(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/am/ActivityManagerService;->enforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->enforceWriteSettingsPermission(Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->enforcePermission(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->enforceWriteSettingsPermission(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->enqueueProcessChangeItemLocked(II)Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
 HSPLcom/android/server/am/ActivityManagerService;->enqueueUidChangeLocked(Lcom/android/server/am/UidRecord;II)V
 HSPLcom/android/server/am/ActivityManagerService;->ensureAllowedAssociations()V
-HSPLcom/android/server/am/ActivityManagerService;->ensureBootCompleted()V
+HPLcom/android/server/am/ActivityManagerService;->ensureBootCompleted()V
 HSPLcom/android/server/am/ActivityManagerService;->findAppProcess(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ActivityManagerService;->findProcessLocked(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->finishBooting()V
-PLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->finishForceStopPackageLocked(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->finishInstrumentation(Landroid/app/IApplicationThread;ILandroid/os/Bundle;)V
+PLcom/android/server/am/ActivityManagerService;->finishInstrumentationLocked(Lcom/android/server/am/ProcessRecord;ILandroid/os/Bundle;)V
 HSPLcom/android/server/am/ActivityManagerService;->finishReceiver(Landroid/os/IBinder;ILjava/lang/String;Landroid/os/Bundle;ZI)V
-HSPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->forceStopAppZygoteLocked(Ljava/lang/String;II)V
+HPLcom/android/server/am/ActivityManagerService;->forceStopPackage(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->forceStopPackageLocked(Ljava/lang/String;IZZZZZILjava/lang/String;)Z
 HSPLcom/android/server/am/ActivityManagerService;->generateApplicationProvidersLocked(Lcom/android/server/am/ProcessRecord;)Ljava/util/List;
 PLcom/android/server/am/ActivityManagerService;->getActivityInfoForUser(Landroid/content/pm/ActivityInfo;I)Landroid/content/pm/ActivityInfo;
 PLcom/android/server/am/ActivityManagerService;->getAppId(Ljava/lang/String;)I
@@ -2856,276 +6471,518 @@
 HSPLcom/android/server/am/ActivityManagerService;->getAppOpsService()Lcom/android/internal/app/IAppOpsService;
 HSPLcom/android/server/am/ActivityManagerService;->getAppStartModeLocked(ILjava/lang/String;IIZZZ)I
 HSPLcom/android/server/am/ActivityManagerService;->getBackgroundLaunchBroadcasts()Landroid/util/ArraySet;
-HSPLcom/android/server/am/ActivityManagerService;->getBlockStateForUid(Lcom/android/server/am/UidRecord;)I
+PLcom/android/server/am/ActivityManagerService;->getBugreportWhitelistedPackages()Ljava/util/List;
 HSPLcom/android/server/am/ActivityManagerService;->getCommonServicesLocked(Z)Landroid/util/ArrayMap;
-HSPLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/am/ActivityManagerService;->getConfiguration()Landroid/content/res/Configuration;
 HSPLcom/android/server/am/ActivityManagerService;->getContentProvider(Landroid/app/IApplicationThread;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/app/ContentProviderHolder;
+HPLcom/android/server/am/ActivityManagerService;->getContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;I)Landroid/app/ContentProviderHolder;
 HSPLcom/android/server/am/ActivityManagerService;->getContentProviderImpl(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;ZI)Landroid/app/ContentProviderHolder;
 HSPLcom/android/server/am/ActivityManagerService;->getCurrentUser()Landroid/content/pm/UserInfo;
-PLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent;
+HPLcom/android/server/am/ActivityManagerService;->getIntentForIntentSender(Landroid/content/IIntentSender;)Landroid/content/Intent;
 HSPLcom/android/server/am/ActivityManagerService;->getIntentSender(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;I)Landroid/content/IIntentSender;
 HSPLcom/android/server/am/ActivityManagerService;->getKsmInfo()[J
+PLcom/android/server/am/ActivityManagerService;->getLaunchedFromPackage(Landroid/os/IBinder;)Ljava/lang/String;
 PLcom/android/server/am/ActivityManagerService;->getLaunchedFromUid(Landroid/os/IBinder;)I
 PLcom/android/server/am/ActivityManagerService;->getLowRamTimeSinceIdle(J)J
 HSPLcom/android/server/am/ActivityManagerService;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
 HSPLcom/android/server/am/ActivityManagerService;->getMemoryTrimLevel()I
-HSPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->getMyMemoryState(Landroid/app/ActivityManager$RunningAppProcessInfo;)V
 HSPLcom/android/server/am/ActivityManagerService;->getPackageForIntentSender(Landroid/content/IIntentSender;)Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
 HSPLcom/android/server/am/ActivityManagerService;->getPackageProcessState(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/am/ActivityManagerService;->getPermissionManagerInternalLocked()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
 PLcom/android/server/am/ActivityManagerService;->getProcessLimit()I
-HSPLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
+HPLcom/android/server/am/ActivityManagerService;->getProcessMemoryInfo([I)[Landroid/os/Debug$MemoryInfo;
+PLcom/android/server/am/ActivityManagerService;->getProcessNames()Lcom/android/internal/app/ProcessMap;
 HSPLcom/android/server/am/ActivityManagerService;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V
-PLcom/android/server/am/ActivityManagerService;->getProcessesInErrorState()Ljava/util/List;
-PLcom/android/server/am/ActivityManagerService;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
-PLcom/android/server/am/ActivityManagerService;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getProcessStatesAndOomScoresForPIDs([I[I[I)V
+HPLcom/android/server/am/ActivityManagerService;->getProcessesInErrorState()Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getProviderInfoLocked(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+HPLcom/android/server/am/ActivityManagerService;->getProviderMimeType(Landroid/net/Uri;I)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->getProviderMimeTypeAsync(Landroid/net/Uri;ILandroid/os/RemoteCallback;)V
 HSPLcom/android/server/am/ActivityManagerService;->getRecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getRunningAppProcesses()Ljava/util/List;
 HSPLcom/android/server/am/ActivityManagerService;->getRunningUserIds()[I
-HSPLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getServices(II)Ljava/util/List;
 HSPLcom/android/server/am/ActivityManagerService;->getTagForIntentSender(Landroid/content/IIntentSender;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/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;->getTasks(I)Ljava/util/List;
+HPLcom/android/server/am/ActivityManagerService;->getTasks(I)Ljava/util/List;
 HSPLcom/android/server/am/ActivityManagerService;->getTopAppLocked()Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->getUidForIntentSender(Landroid/content/IIntentSender;)I
-HSPLcom/android/server/am/ActivityManagerService;->getUidFromIntent(Landroid/content/Intent;)I
-PLcom/android/server/am/ActivityManagerService;->getUidProcessState(ILjava/lang/String;)I
+HPLcom/android/server/am/ActivityManagerService;->getUidFromIntent(Landroid/content/Intent;)I
+HSPLcom/android/server/am/ActivityManagerService;->getUidProcessState(ILjava/lang/String;)I
 HSPLcom/android/server/am/ActivityManagerService;->getUidState(I)I
-HSPLcom/android/server/am/ActivityManagerService;->grantEphemeralAccessLocked(ILandroid/content/Intent;II)V
-PLcom/android/server/am/ActivityManagerService;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
+HSPLcom/android/server/am/ActivityManagerService;->grantImplicitAccess(ILandroid/content/Intent;II)V
+HPLcom/android/server/am/ActivityManagerService;->grantUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
 HSPLcom/android/server/am/ActivityManagerService;->handleAppDiedLocked(Lcom/android/server/am/ProcessRecord;ZZ)V
-HSPLcom/android/server/am/ActivityManagerService;->handleApplicationCrash(Landroid/os/IBinder;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
-HSPLcom/android/server/am/ActivityManagerService;->handleApplicationCrashInner(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationCrash(Landroid/os/IBinder;Landroid/app/ApplicationErrorReport$ParcelableCrashInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationCrashInner(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)V
 HSPLcom/android/server/am/ActivityManagerService;->handleApplicationStrictModeViolation(Landroid/os/IBinder;ILandroid/os/StrictMode$ViolationInfo;)V
 HSPLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;)Z
+HPLcom/android/server/am/ActivityManagerService;->handleApplicationWtf(Landroid/os/IBinder;Ljava/lang/String;ZLandroid/app/ApplicationErrorReport$ParcelableCrashInfo;I)Z
 HSPLcom/android/server/am/ActivityManagerService;->handleApplicationWtfInner(IILandroid/os/IBinder;Ljava/lang/String;Landroid/app/ApplicationErrorReport$CrashInfo;)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->handleIncomingUser(IIIZZLjava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/am/ActivityManagerService;->hasUsageStatsPermission(Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->idleUids()V
+HPLcom/android/server/am/ActivityManagerService;->idleUids()V
 HSPLcom/android/server/am/ActivityManagerService;->incProviderCountLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Z)Lcom/android/server/am/ContentProviderConnection;
-HSPLcom/android/server/am/ActivityManagerService;->incrementProcStateSeqAndNotifyAppsLocked()V
 HSPLcom/android/server/am/ActivityManagerService;->initPowerManagement()V
-HSPLcom/android/server/am/ActivityManagerService;->installEncryptionUnawareProviders(I)V
+PLcom/android/server/am/ActivityManagerService;->inputDispatchingTimedOut(IZLjava/lang/String;)J
+PLcom/android/server/am/ActivityManagerService;->inputDispatchingTimedOut(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->installEncryptionUnawareProviders(I)V
 HSPLcom/android/server/am/ActivityManagerService;->installSystemProviders()V
 HSPLcom/android/server/am/ActivityManagerService;->isAllowedWhileBooting(Landroid/content/pm/ApplicationInfo;)Z
 HSPLcom/android/server/am/ActivityManagerService;->isAppBad(Landroid/content/pm/ApplicationInfo;)Z
-PLcom/android/server/am/ActivityManagerService;->isAppForeground(I)Z
+HPLcom/android/server/am/ActivityManagerService;->isAppForeground(I)Z
 HSPLcom/android/server/am/ActivityManagerService;->isAppStartModeDisabled(ILjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->isBackgroundRestricted(Ljava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->isBackgroundRestrictedNoCheck(ILjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->isBackgroundRestricted(Ljava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->isBackgroundRestrictedNoCheck(ILjava/lang/String;)Z
+PLcom/android/server/am/ActivityManagerService;->isCallerShell()Z
+HSPLcom/android/server/am/ActivityManagerService;->isDeviceProvisioned(Landroid/content/Context;)Z
+PLcom/android/server/am/ActivityManagerService;->isInRestrictedBucket(ILjava/lang/String;J)Z
 HSPLcom/android/server/am/ActivityManagerService;->isInstantApp(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;I)Z
-HSPLcom/android/server/am/ActivityManagerService;->isIntentSenderABroadcast(Landroid/content/IIntentSender;)Z
-HSPLcom/android/server/am/ActivityManagerService;->isIntentSenderAForegroundService(Landroid/content/IIntentSender;)Z
-HSPLcom/android/server/am/ActivityManagerService;->isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z
-HSPLcom/android/server/am/ActivityManagerService;->isIntentSenderTargetedToPackage(Landroid/content/IIntentSender;)Z
+HPLcom/android/server/am/ActivityManagerService;->isIntentSenderABroadcast(Landroid/content/IIntentSender;)Z
+HPLcom/android/server/am/ActivityManagerService;->isIntentSenderAForegroundService(Landroid/content/IIntentSender;)Z
+HPLcom/android/server/am/ActivityManagerService;->isIntentSenderAnActivity(Landroid/content/IIntentSender;)Z
+PLcom/android/server/am/ActivityManagerService;->isIntentSenderTargetedToPackage(Landroid/content/IIntentSender;)Z
 HSPLcom/android/server/am/ActivityManagerService;->isOnDeviceIdleWhitelistLocked(IZ)Z
+HSPLcom/android/server/am/ActivityManagerService;->isOnOffloadQueue(I)Z
 HSPLcom/android/server/am/ActivityManagerService;->isPendingBroadcastProcessLocked(I)Z
 HSPLcom/android/server/am/ActivityManagerService;->isProcessAliveLocked(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ActivityManagerService;->isReceivingBroadcastLocked(Lcom/android/server/am/ProcessRecord;Landroid/util/ArraySet;)Z
 HSPLcom/android/server/am/ActivityManagerService;->isSingleton(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Z
 HSPLcom/android/server/am/ActivityManagerService;->isUidActive(ILjava/lang/String;)Z
 HSPLcom/android/server/am/ActivityManagerService;->isUidActiveLocked(I)Z
-HSPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
+HPLcom/android/server/am/ActivityManagerService;->isUserAMonkey()Z
 HSPLcom/android/server/am/ActivityManagerService;->isUserRunning(II)Z
 HSPLcom/android/server/am/ActivityManagerService;->isValidSingletonCall(II)Z
 HSPLcom/android/server/am/ActivityManagerService;->killAllBackgroundProcessesExcept(II)V
-HSPLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->killApplicationProcess(Ljava/lang/String;I)V
-HSPLcom/android/server/am/ActivityManagerService;->killUid(IILjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->lambda$systemReady$1$ActivityManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/am/ActivityManagerService;->killAppAtUsersRequest(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->killAppAtUsersRequest(Lcom/android/server/am/ProcessRecord;Landroid/app/Dialog;)V
+HPLcom/android/server/am/ActivityManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->killApplicationProcess(Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->killBackgroundProcesses(Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->killUid(IILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->lambda$getProviderMimeTypeAsync$1$ActivityManagerService(Ljava/lang/String;ILandroid/os/RemoteCallback;Landroid/os/Bundle;)V
+HSPLcom/android/server/am/ActivityManagerService;->lambda$logStrictModeViolationToDropBox$3(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->lambda$logStrictModeViolationToDropBox$4(Landroid/os/DropBoxManager;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->lambda$reportMemUsage$4(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+HPLcom/android/server/am/ActivityManagerService;->lambda$reportMemUsage$5(Lcom/android/internal/os/ProcessCpuTracker$Stats;)Z
+PLcom/android/server/am/ActivityManagerService;->lambda$systemReady$1$ActivityManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/am/ActivityManagerService;->lambda$systemReady$2$ActivityManagerService(I)V
+PLcom/android/server/am/ActivityManagerService;->lambda$systemReady$2$ActivityManagerService(Landroid/os/PowerSaveState;)V
+PLcom/android/server/am/ActivityManagerService;->launchBugReportHandlerApp()Z
 HSPLcom/android/server/am/ActivityManagerService;->logStrictModeViolationToDropBox(Lcom/android/server/am/ProcessRecord;Landroid/os/StrictMode$ViolationInfo;)V
-PLcom/android/server/am/ActivityManagerService;->maybePruneOldTraces(Ljava/io/File;)V
+PLcom/android/server/am/ActivityManagerService;->makeHeapDumpUri(Ljava/lang/String;)Landroid/net/Uri;
+HPLcom/android/server/am/ActivityManagerService;->maybePruneOldTraces(Ljava/io/File;)V
 HSPLcom/android/server/am/ActivityManagerService;->maybeUpdateProviderUsageStatsLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->monitor()V
-HSPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(II)V
-HSPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->monitor()V
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmFinish(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->noteAlarmStart(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->noteUidProcessState(III)V
+HPLcom/android/server/am/ActivityManagerService;->noteWakeupAlarm(Landroid/content/IIntentSender;Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->notifyLockedProfile(I)V
 HSPLcom/android/server/am/ActivityManagerService;->notifyPackageUse(Ljava/lang/String;I)V
 HSPLcom/android/server/am/ActivityManagerService;->onCoreSettingsChange(Landroid/os/Bundle;)V
-HSPLcom/android/server/am/ActivityManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)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
 HSPLcom/android/server/am/ActivityManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/am/ActivityManagerService;->onWakefulnessChanged(I)V
-PLcom/android/server/am/ActivityManagerService;->openContentUri(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/am/ActivityManagerService;->performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ActivityManagerService;->performAppGcsLocked()V
-PLcom/android/server/am/ActivityManagerService;->performIdleMaintenance()V
+HPLcom/android/server/am/ActivityManagerService;->onWakefulnessChanged(I)V
+HPLcom/android/server/am/ActivityManagerService;->openContentUri(Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/am/ActivityManagerService;->peekService(Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;)Landroid/os/IBinder;
+HPLcom/android/server/am/ActivityManagerService;->performAppGcLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ActivityManagerService;->performAppGcsIfAppropriateLocked()V
+HPLcom/android/server/am/ActivityManagerService;->performAppGcsLocked()V
+HPLcom/android/server/am/ActivityManagerService;->performIdleMaintenance()V
+PLcom/android/server/am/ActivityManagerService;->prepareForPossibleShutdown()V
 HSPLcom/android/server/am/ActivityManagerService;->processClass(Lcom/android/server/am/ProcessRecord;)Ljava/lang/String;
+HPLcom/android/server/am/ActivityManagerService;->processContentProviderPublishTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->processStartTimedOutLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActivityManagerService;->publishContentProviders(Landroid/app/IApplicationThread;Ljava/util/List;)V
 HSPLcom/android/server/am/ActivityManagerService;->publishService(Landroid/os/IBinder;Landroid/content/Intent;Landroid/os/IBinder;)V
-PLcom/android/server/am/ActivityManagerService;->pushTempWhitelist()V
-HSPLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJIJJ)V
-HSPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z
-PLcom/android/server/am/ActivityManagerService;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/am/ActivityManagerService;->pushTempWhitelist()V
+HPLcom/android/server/am/ActivityManagerService;->recordPssSampleLocked(Lcom/android/server/am/ProcessRecord;IJJJJIJJ)V
+HPLcom/android/server/am/ActivityManagerService;->refContentProvider(Landroid/os/IBinder;II)Z
+HPLcom/android/server/am/ActivityManagerService;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
 HSPLcom/android/server/am/ActivityManagerService;->registerProcessObserver(Landroid/app/IProcessObserver;)V
 HSPLcom/android/server/am/ActivityManagerService;->registerReceiver(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/IIntentReceiver;Landroid/content/IntentFilter;Ljava/lang/String;II)Landroid/content/Intent;
-HSPLcom/android/server/am/ActivityManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/am/ActivityManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
 HSPLcom/android/server/am/ActivityManagerService;->registerUidObserver(Landroid/app/IUidObserver;IILjava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V
-PLcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
-HSPLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
+HPLcom/android/server/am/ActivityManagerService;->removeContentProvider(Landroid/os/IBinder;Z)V
+HPLcom/android/server/am/ActivityManagerService;->removeContentProviderExternalUnchecked(Ljava/lang/String;Landroid/os/IBinder;I)V
+HPLcom/android/server/am/ActivityManagerService;->removeDyingProviderLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ContentProviderRecord;Z)Z
+HSPLcom/android/server/am/ActivityManagerService;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->removePidIfNoThread(Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/ActivityManagerService;->removePidLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ActivityManagerService;->removeReceiverLocked(Lcom/android/server/am/ReceiverList;)V
 HSPLcom/android/server/am/ActivityManagerService;->reportCurWakefulnessUsageEventLocked()V
 HSPLcom/android/server/am/ActivityManagerService;->reportGlobalUsageEventLocked(I)V
-PLcom/android/server/am/ActivityManagerService;->reportLmkKillAtOrBelow(Ljava/io/PrintWriter;I)Z
+HPLcom/android/server/am/ActivityManagerService;->reportLmkKillAtOrBelow(Ljava/io/PrintWriter;I)Z
 HSPLcom/android/server/am/ActivityManagerService;->reportMemUsage(Ljava/util/ArrayList;)V
 HSPLcom/android/server/am/ActivityManagerService;->reportUidInfoMessageLocked(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/ActivityManagerService;->requestBugReport(I)V
+PLcom/android/server/am/ActivityManagerService;->requestBugReportWithDescription(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/am/ActivityManagerService;->requestFullBugReport()V
+PLcom/android/server/am/ActivityManagerService;->requestInteractiveBugReport()V
+PLcom/android/server/am/ActivityManagerService;->requestInteractiveBugReportWithDescription(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->requestPssAllProcsLocked(JZZ)V
-PLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)Z
-HSPLcom/android/server/am/ActivityManagerService;->requestTargetProviderPermissionsReviewIfNeededLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;I)Z
+HPLcom/android/server/am/ActivityManagerService;->requestPssLocked(Lcom/android/server/am/ProcessRecord;I)Z
+HPLcom/android/server/am/ActivityManagerService;->requestTargetProviderPermissionsReviewIfNeededLocked(Landroid/content/pm/ProviderInfo;Lcom/android/server/am/ProcessRecord;I)Z
+PLcom/android/server/am/ActivityManagerService;->requestTelephonyBugReport(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/am/ActivityManagerService;->requireAllowedAssociationsLocked(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->resetPriorityAfterLockedSection()V
-PLcom/android/server/am/ActivityManagerService;->resumeAppSwitches()V
+HPLcom/android/server/am/ActivityManagerService;->resumeAppSwitches()V
 HSPLcom/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;->revokeUriPermission(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/net/Uri;II)V
 HSPLcom/android/server/am/ActivityManagerService;->rotateBroadcastStatsIfNeededLocked()V
 HSPLcom/android/server/am/ActivityManagerService;->scheduleAppGcsLocked()V
 HSPLcom/android/server/am/ActivityManagerService;->scheduleApplicationInfoChanged(Ljava/util/List;I)V
-HSPLcom/android/server/am/ActivityManagerService;->sendIntentSender(Landroid/content/IIntentSender;Landroid/os/IBinder;ILandroid/content/Intent;Ljava/lang/String;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
-HSPLcom/android/server/am/ActivityManagerService;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
+HPLcom/android/server/am/ActivityManagerService;->sendIntentSender(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;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
 HSPLcom/android/server/am/ActivityManagerService;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ActivityManagerService;->serviceDoneExecuting(Landroid/os/IBinder;III)V
+PLcom/android/server/am/ActivityManagerService;->setActivityController(Landroid/app/IActivityController;Z)V
+PLcom/android/server/am/ActivityManagerService;->setAlwaysFinish(Z)V
+HPLcom/android/server/am/ActivityManagerService;->setAppIdTempWhitelistStateLocked(IZ)V
 HSPLcom/android/server/am/ActivityManagerService;->setContentCaptureManager(Lcom/android/server/contentcapture/ContentCaptureManagerInternal;)V
-HSPLcom/android/server/am/ActivityManagerService;->setDumpHeapDebugLimit(Ljava/lang/String;IJLjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V
+PLcom/android/server/am/ActivityManagerService;->setDebugApp(Ljava/lang/String;ZZ)V
+HPLcom/android/server/am/ActivityManagerService;->setDumpHeapDebugLimit(Ljava/lang/String;IJLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->setHasTopUi(Z)V
 HSPLcom/android/server/am/ActivityManagerService;->setInstaller(Lcom/android/server/pm/Installer;)V
-PLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->setProcessImportant(Landroid/os/IBinder;IZLjava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->setProcessLimit(I)V
+HSPLcom/android/server/am/ActivityManagerService;->setProcessTrackerStateLocked(Lcom/android/server/am/ProcessRecord;IJ)V
 HSPLcom/android/server/am/ActivityManagerService;->setRenderThread(I)V
-PLcom/android/server/am/ActivityManagerService;->setRunningRemoteAnimation(IZ)V
-HSPLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
+HPLcom/android/server/am/ActivityManagerService;->setServiceForeground(Landroid/content/ComponentName;Landroid/os/IBinder;ILandroid/app/Notification;II)V
 HSPLcom/android/server/am/ActivityManagerService;->setSystemProcess()V
 HSPLcom/android/server/am/ActivityManagerService;->setSystemServiceManager(Lcom/android/server/SystemServiceManager;)V
+PLcom/android/server/am/ActivityManagerService;->setUidTempWhitelistStateLocked(IZ)V
 HSPLcom/android/server/am/ActivityManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
 HSPLcom/android/server/am/ActivityManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/am/ActivityManagerService;->showConsoleNotificationIfActive()V
+HPLcom/android/server/am/ActivityManagerService;->showWaitingForDebugger(Landroid/app/IApplicationThread;Z)V
+PLcom/android/server/am/ActivityManagerService;->shutdown(I)Z
 HSPLcom/android/server/am/ActivityManagerService;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ActivityManagerService;->skipPendingBroadcastLocked(I)V
+PLcom/android/server/am/ActivityManagerService;->sortMemItems(Ljava/util/List;Z)V
 HSPLcom/android/server/am/ActivityManagerService;->sortProcessOomList(Ljava/util/List;Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLcom/android/server/am/ActivityManagerService;->start()V
+PLcom/android/server/am/ActivityManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
 HSPLcom/android/server/am/ActivityManagerService;->startAssociationLocked(ILjava/lang/String;IIJLandroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/am/ActivityManagerService$Association;
+HSPLcom/android/server/am/ActivityManagerService;->startBroadcastObservers()V
+PLcom/android/server/am/ActivityManagerService;->startHeapDumpLocked(Lcom/android/server/am/ProcessRecord;Z)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
 HSPLcom/android/server/am/ActivityManagerService;->startIsolatedProcess(Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Runnable;)Z
 HSPLcom/android/server/am/ActivityManagerService;->startObservingNativeCrashes()V
 HSPLcom/android/server/am/ActivityManagerService;->startPersistentApps(I)V
-HSPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZZ)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ActivityManagerService;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;ZZZ)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ActivityManagerService;->startService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;ZLjava/lang/String;I)Landroid/content/ComponentName;
+PLcom/android/server/am/ActivityManagerService;->startUserInBackground(I)Z
 PLcom/android/server/am/ActivityManagerService;->startUserInBackgroundWithListener(ILandroid/os/IProgressListener;)Z
 PLcom/android/server/am/ActivityManagerService;->stopAppSwitches()V
 HSPLcom/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
-HSPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+HPLcom/android/server/am/ActivityManagerService;->stopService(Landroid/app/IApplicationThread;Landroid/content/Intent;Ljava/lang/String;I)I
+HPLcom/android/server/am/ActivityManagerService;->stopServiceToken(Landroid/content/ComponentName;Landroid/os/IBinder;I)Z
+PLcom/android/server/am/ActivityManagerService;->stopUser(IZLandroid/app/IStopUserCallback;)I
 HSPLcom/android/server/am/ActivityManagerService;->stringifyKBSize(J)Ljava/lang/String;
 HSPLcom/android/server/am/ActivityManagerService;->stringifySize(JI)Ljava/lang/String;
-HSPLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Landroid/util/TimingsTraceLog;)V
-PLcom/android/server/am/ActivityManagerService;->tempWhitelistForPendingIntentLocked(IIIJLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->tempWhitelistUidLocked(IJLjava/lang/String;)V
-HSPLcom/android/server/am/ActivityManagerService;->trimApplications()V
-HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked()V
-PLcom/android/server/am/ActivityManagerService;->unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V
-PLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
+HSPLcom/android/server/am/ActivityManagerService;->systemReady(Ljava/lang/Runnable;Lcom/android/server/utils/TimingsTraceAndSlog;)V
+HPLcom/android/server/am/ActivityManagerService;->tempWhitelistForPendingIntentLocked(IIIJLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->tempWhitelistUidLocked(IJLjava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->trimApplications(Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->trimApplicationsLocked(Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->uidOnBackgroundWhitelist(I)Z
+HPLcom/android/server/am/ActivityManagerService;->unbindBackupAgent(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->unbindFinished(Landroid/os/IBinder;Landroid/content/Intent;Z)V
 HSPLcom/android/server/am/ActivityManagerService;->unbindService(Landroid/app/IServiceConnection;)Z
-PLcom/android/server/am/ActivityManagerService;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V
+HPLcom/android/server/am/ActivityManagerService;->unbroadcastIntent(Landroid/app/IApplicationThread;Landroid/content/Intent;I)V
 PLcom/android/server/am/ActivityManagerService;->unlockUser(I[B[BLandroid/os/IProgressListener;)Z
-PLcom/android/server/am/ActivityManagerService;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/am/ActivityManagerService;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
 HSPLcom/android/server/am/ActivityManagerService;->unregisterReceiver(Landroid/content/IIntentReceiver;)V
-HSPLcom/android/server/am/ActivityManagerService;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
-PLcom/android/server/am/ActivityManagerService;->unregisterUidObserver(Landroid/app/IUidObserver;)V
-HSPLcom/android/server/am/ActivityManagerService;->unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
-HSPLcom/android/server/am/ActivityManagerService;->unstableProviderDied(Landroid/os/IBinder;)V
+PLcom/android/server/am/ActivityManagerService;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
+HPLcom/android/server/am/ActivityManagerService;->unregisterUidObserver(Landroid/app/IUidObserver;)V
+HPLcom/android/server/am/ActivityManagerService;->unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
+HPLcom/android/server/am/ActivityManagerService;->unstableProviderDied(Landroid/os/IBinder;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateActivityUsageStats(Landroid/content/ComponentName;IILandroid/os/IBinder;Landroid/content/ComponentName;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateApplicationInfoLocked(Ljava/util/List;I)V
-PLcom/android/server/am/ActivityManagerService;->updateAssociationForApp(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ActivityManagerService;->updateAssociationForApp(Landroid/content/pm/ApplicationInfo;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateBatteryStats(Landroid/content/ComponentName;IIZ)V
-HSPLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
+PLcom/android/server/am/ActivityManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
 HSPLcom/android/server/am/ActivityManagerService;->updateCpuStats()V
 HSPLcom/android/server/am/ActivityManagerService;->updateCpuStatsNow()V
 HSPLcom/android/server/am/ActivityManagerService;->updateDeviceOwner(Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateForceBackgroundCheck(Z)V
-PLcom/android/server/am/ActivityManagerService;->updateForegroundServiceUsageStats(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/am/ActivityManagerService;->updateForegroundServiceUsageStats(Landroid/content/ComponentName;IZ)V
 HSPLcom/android/server/am/ActivityManagerService;->updateLockTaskPackages(I[Ljava/lang/String;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateLowMemStateLocked(III)Z
 HSPLcom/android/server/am/ActivityManagerService;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked()V
-HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Z)Z
-HSPLcom/android/server/am/ActivityManagerService;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/am/ActivityManagerService;->updateMccMncConfiguration(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZLjava/lang/String;)Z
+HSPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerService;->updatePersistentConfiguration(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/am/ActivityManagerService;->updateProcessForegroundLocked(Lcom/android/server/am/ProcessRecord;ZIZ)V
+PLcom/android/server/am/ActivityManagerService;->updateServiceGroup(Landroid/app/IServiceConnection;II)V
+PLcom/android/server/am/ActivityManagerService;->updateSystemUiContext()V
 HSPLcom/android/server/am/ActivityManagerService;->validateAssociationAllowedLocked(Ljava/lang/String;ILjava/lang/String;I)Z
 HSPLcom/android/server/am/ActivityManagerService;->verifyBroadcastLocked(Landroid/content/Intent;)Landroid/content/Intent;
-PLcom/android/server/am/ActivityManagerService;->waitForNetworkStateUpdate(J)V
-PLcom/android/server/am/ActivityManagerService;->writeBroadcastsToProtoLocked(Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/am/ActivityManagerService;->writeProcessOomListToProto(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/am/ActivityManagerService;Ljava/util/List;ZLjava/lang/String;)Z
-PLcom/android/server/am/ActivityManagerService;->writeProcessesToGcToProto(Landroid/util/proto/ProtoOutputStream;JLjava/lang/String;)V
-PLcom/android/server/am/ActivityManagerService;->writeProcessesToProtoLocked(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->waitForNetworkStateUpdate(J)V
+HSPLcom/android/server/am/ActivityManagerService;->watchDeviceProvisioning(Landroid/content/Context;)V
+HPLcom/android/server/am/ActivityManagerService;->writeBroadcastsToProtoLocked(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/am/ActivityManagerService;->writeProcessOomListToProto(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/am/ActivityManagerService;Ljava/util/List;ZLjava/lang/String;)Z
+HPLcom/android/server/am/ActivityManagerService;->writeProcessesToGcToProto(Landroid/util/proto/ProtoOutputStream;JLjava/lang/String;)V
+HPLcom/android/server/am/ActivityManagerService;->writeProcessesToProtoLocked(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;)V
+PLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V
 PLcom/android/server/am/ActivityManagerShellCommand$1;->handleOption(Ljava/lang/String;Landroid/os/ShellCommand;)Z
-HSPLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HSPLcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;->waitForFinish()V
-HSPLcom/android/server/am/ActivityManagerShellCommand;->makeIntent(I)Landroid/content/Intent;
-HSPLcom/android/server/am/ActivityManagerShellCommand;->onCommand(Ljava/lang/String;)I
-HSPLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand$2;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/am/ActivityManagerShellCommand$2;->onResult(Landroid/os/Bundle;)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;->access$076(Lcom/android/server/am/ActivityManagerShellCommand;I)I
+PLcom/android/server/am/ActivityManagerShellCommand;->access$1002(Lcom/android/server/am/ActivityManagerShellCommand;I)I
+PLcom/android/server/am/ActivityManagerShellCommand;->access$1102(Lcom/android/server/am/ActivityManagerShellCommand;Ljava/lang/String;)Ljava/lang/String;
+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;->runAttachAgent(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runDumpHeap(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runForceStop(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runSendBroadcast(Ljava/io/PrintWriter;)I
+PLcom/android/server/am/ActivityManagerShellCommand;->runStartActivity(Ljava/io/PrintWriter;)I
+HSPLcom/android/server/am/AppBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Lcom/android/server/am/IntentBindRecord;Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppBindRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/am/AppBindRecord;->dumpInIntentBind(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/AppBindRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/AppBindRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/am/CachedAppOptimizer$1;->onPropertyChanged(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/CachedAppOptimizer;->access$1000(Lcom/android/server/am/CachedAppOptimizer;)V
-HSPLcom/android/server/am/CachedAppOptimizer;->access$700(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerService;
-HSPLcom/android/server/am/CachedAppOptimizer;->access$800(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/ArrayList;
-HSPLcom/android/server/am/CachedAppOptimizer;->access$900(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Random;
-PLcom/android/server/am/CachedAppOptimizer;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/am/CachedAppOptimizer;->init()V
-HSPLcom/android/server/am/CachedAppOptimizer;->updateCompactionThrottles()V
-HSPLcom/android/server/am/CachedAppOptimizer;->updateUseCompaction()V
-HSPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
+HPLcom/android/server/am/AppBindRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/AppCompactor$1;-><init>(Lcom/android/server/am/AppCompactor;)V
+HPLcom/android/server/am/AppCompactor$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/AppCompactor$2;-><init>(Lcom/android/server/am/AppCompactor;)V
+HPLcom/android/server/am/AppCompactor$2;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HPLcom/android/server/am/AppCompactor$LastCompactionStats;-><init>([J)V
+PLcom/android/server/am/AppCompactor$LastCompactionStats;->getRssAfterCompaction()[J
+HSPLcom/android/server/am/AppCompactor$MemCompactionHandler;-><init>(Lcom/android/server/am/AppCompactor;)V
+HSPLcom/android/server/am/AppCompactor$MemCompactionHandler;-><init>(Lcom/android/server/am/AppCompactor;Lcom/android/server/am/AppCompactor$1;)V
+HPLcom/android/server/am/AppCompactor$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/AppCompactor;-><clinit>()V
+HSPLcom/android/server/am/AppCompactor;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/AppCompactor;->access$000(Lcom/android/server/am/AppCompactor;)Ljava/lang/Object;
+PLcom/android/server/am/AppCompactor;->access$100(Lcom/android/server/am/AppCompactor;)V
+HPLcom/android/server/am/AppCompactor;->access$1000(Lcom/android/server/am/AppCompactor;)Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/AppCompactor;->access$1100(Lcom/android/server/am/AppCompactor;)Ljava/util/ArrayList;
+HPLcom/android/server/am/AppCompactor;->access$1200(Lcom/android/server/am/AppCompactor;)Ljava/util/Map;
+HPLcom/android/server/am/AppCompactor;->access$1308(Lcom/android/server/am/AppCompactor;)I
+HPLcom/android/server/am/AppCompactor;->access$1408(Lcom/android/server/am/AppCompactor;)I
+HPLcom/android/server/am/AppCompactor;->access$1508(Lcom/android/server/am/AppCompactor;)I
+HPLcom/android/server/am/AppCompactor;->access$1608(Lcom/android/server/am/AppCompactor;)I
+HPLcom/android/server/am/AppCompactor;->access$1700(Lcom/android/server/am/AppCompactor;)Ljava/util/Random;
+PLcom/android/server/am/AppCompactor;->access$1800(Lcom/android/server/am/AppCompactor;)V
+PLcom/android/server/am/AppCompactor;->access$400(Lcom/android/server/am/AppCompactor;)V
+PLcom/android/server/am/AppCompactor;->access$500(Lcom/android/server/am/AppCompactor;)V
+PLcom/android/server/am/AppCompactor;->access$600(Lcom/android/server/am/AppCompactor;)V
+PLcom/android/server/am/AppCompactor;->access$700(Lcom/android/server/am/AppCompactor;)V
+PLcom/android/server/am/AppCompactor;->access$800(Lcom/android/server/am/AppCompactor;)Lcom/android/server/am/AppCompactor$PropertyChangedCallbackForTest;
+HSPLcom/android/server/am/AppCompactor;->compactActionIntToString(I)Ljava/lang/String;
+PLcom/android/server/am/AppCompactor;->compactAllSystem()V
+HPLcom/android/server/am/AppCompactor;->compactAppBfgs(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppCompactor;->compactAppFull(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppCompactor;->compactAppPersistent(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/AppCompactor;->compactAppSome(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppCompactor;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/am/AppCompactor;->init()V
+HSPLcom/android/server/am/AppCompactor;->parseProcStateThrottle(Ljava/lang/String;)Z
+HPLcom/android/server/am/AppCompactor;->shouldCompactBFGS(Lcom/android/server/am/ProcessRecord;J)Z
+HPLcom/android/server/am/AppCompactor;->shouldCompactPersistent(Lcom/android/server/am/ProcessRecord;J)Z
+HSPLcom/android/server/am/AppCompactor;->updateCompactionActions()V
+HSPLcom/android/server/am/AppCompactor;->updateCompactionThrottles()V
+HSPLcom/android/server/am/AppCompactor;->updateFullDeltaRssThrottle()V
+HSPLcom/android/server/am/AppCompactor;->updateFullRssThrottle()V
+HSPLcom/android/server/am/AppCompactor;->updateProcStateThrottle()V
+HSPLcom/android/server/am/AppCompactor;->updateStatsdSampleRate()V
+HSPLcom/android/server/am/AppCompactor;->updateUseCompaction()V
+HSPLcom/android/server/am/AppCompactor;->useCompaction()Z
+PLcom/android/server/am/AppErrorDialog$1;-><init>(Lcom/android/server/am/AppErrorDialog;)V
 PLcom/android/server/am/AppErrorDialog$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/AppErrorDialog$2;-><init>(Lcom/android/server/am/AppErrorDialog;)V
+PLcom/android/server/am/AppErrorDialog$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/am/AppErrorDialog$Data;-><init>()V
+PLcom/android/server/am/AppErrorDialog;-><clinit>()V
 PLcom/android/server/am/AppErrorDialog;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/AppErrorDialog$Data;)V
+PLcom/android/server/am/AppErrorDialog;->access$000(Lcom/android/server/am/AppErrorDialog;I)V
+PLcom/android/server/am/AppErrorDialog;->dismiss()V
 PLcom/android/server/am/AppErrorDialog;->onClick(Landroid/view/View;)V
 PLcom/android/server/am/AppErrorDialog;->onCreate(Landroid/os/Bundle;)V
 PLcom/android/server/am/AppErrorDialog;->onStart()V
 PLcom/android/server/am/AppErrorDialog;->onStop()V
 PLcom/android/server/am/AppErrorDialog;->setResult(I)V
-HSPLcom/android/server/am/AppErrorResult;->get()I
-HSPLcom/android/server/am/AppErrorResult;->set(I)V
+PLcom/android/server/am/AppErrorResult;-><init>()V
+HPLcom/android/server/am/AppErrorResult;->get()I
+HPLcom/android/server/am/AppErrorResult;->set(I)V
+PLcom/android/server/am/AppErrors$BadProcessInfo;-><init>(JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/AppErrors;-><init>(Landroid/content/Context;Lcom/android/server/am/ActivityManagerService;Lcom/android/server/PackageWatchdog;)V
-HSPLcom/android/server/am/AppErrors;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
-HSPLcom/android/server/am/AppErrors;->crashApplicationInner(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;II)V
+PLcom/android/server/am/AppErrors;->clearBadProcessLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/AppErrors;->crashApplication(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;)V
+HPLcom/android/server/am/AppErrors;->crashApplicationInner(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;II)V
+PLcom/android/server/am/AppErrors;->createAppErrorIntentLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/content/Intent;
+PLcom/android/server/am/AppErrors;->createAppErrorReportLocked(Lcom/android/server/am/ProcessRecord;JLandroid/app/ApplicationErrorReport$CrashInfo;)Landroid/app/ApplicationErrorReport;
+PLcom/android/server/am/AppErrors;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JLjava/lang/String;)V
 HSPLcom/android/server/am/AppErrors;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZLjava/lang/String;)Z
-HSPLcom/android/server/am/AppErrors;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
-HSPLcom/android/server/am/AppErrors;->handleAppCrashInActivityController(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JII)Z
-HSPLcom/android/server/am/AppErrors;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/AppErrorDialog$Data;)Z
-HSPLcom/android/server/am/AppErrors;->handleShowAppErrorUi(Landroid/os/Message;)V
+PLcom/android/server/am/AppErrors;->generateProcessError(Lcom/android/server/am/ProcessRecord;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/ActivityManager$ProcessErrorStateInfo;
+PLcom/android/server/am/AppErrors;->handleAppCrashInActivityController(Lcom/android/server/am/ProcessRecord;Landroid/app/ApplicationErrorReport$CrashInfo;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JII)Z
+HPLcom/android/server/am/AppErrors;->handleAppCrashLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/AppErrorDialog$Data;)Z
+PLcom/android/server/am/AppErrors;->handleShowAnrUi(Landroid/os/Message;)V
+HPLcom/android/server/am/AppErrors;->handleShowAppErrorUi(Landroid/os/Message;)V
 HSPLcom/android/server/am/AppErrors;->isBadProcessLocked(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/am/AppErrors;->killAppAtUserRequestLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppErrors;->killAppAtUserRequestLocked(Lcom/android/server/am/ProcessRecord;Landroid/app/Dialog;)V
+PLcom/android/server/am/AppErrors;->killAppImmediateLocked(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/AppErrors;->killAppImmediateLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/am/AppErrors;->lambda$scheduleAppCrashLocked$0$AppErrors(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/AppErrors;->loadAppsNotReportingCrashesFromConfigLocked(Ljava/lang/String;)V
-HSPLcom/android/server/am/AppErrors;->makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/AppErrorDialog$Data;)Z
+HPLcom/android/server/am/AppErrors;->makeAppCrashingLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/AppErrorDialog$Data;)Z
 HSPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(Landroid/content/pm/ApplicationInfo;)V
-HSPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(ZII)V
-PLcom/android/server/am/AppErrors;->writeToProto(Landroid/util/proto/ProtoOutputStream;JLjava/lang/String;)V
+HPLcom/android/server/am/AppErrors;->resetProcessCrashTimeLocked(ZII)V
+HPLcom/android/server/am/AppErrors;->scheduleAppCrashLocked(IILjava/lang/String;ILjava/lang/String;Z)V
+HSPLcom/android/server/am/AppExitInfoTracker$1;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+PLcom/android/server/am/AppExitInfoTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/am/AppExitInfoTracker$2;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+HPLcom/android/server/am/AppExitInfoTracker$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;-><init>(Lcom/android/server/am/AppExitInfoTracker;I)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->access$002(Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;I)I
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/icu/text/SimpleDateFormat;)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->getExitInfoLocked(IILjava/util/ArrayList;)V
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->lambda$dumpLocked$2(Landroid/app/ApplicationExitInfo;Landroid/app/ApplicationExitInfo;)I
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->readFromProto(Landroid/util/proto/ProtoInputStream;J)I
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;-><init>(Lcom/android/server/am/AppExitInfoTracker;Ljava/lang/String;Ljava/lang/Integer;)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->add(IILjava/lang/Object;)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->onProcDied(IILjava/lang/Integer;)V
+HSPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->remove(II)Landroid/util/Pair;
+HPLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->removeByUid(IZ)V
+PLcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;->removeByUserId(I)V
+HSPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;-><init>(Lcom/android/server/am/AppExitInfoTracker;)V
+HSPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->addIsolatedUid(II)V
+HPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->getUidByIsolatedUid(I)Ljava/lang/Integer;
+HPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeAppUid(IZ)V
+PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeAppUidLocked(I)V
+PLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeByUserId(I)V
+HSPLcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;->removeIsolatedUid(I)I
+HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;-><init>(Lcom/android/server/am/AppExitInfoTracker;Landroid/os/Looper;)V
+HSPLcom/android/server/am/AppExitInfoTracker$KillHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/AppExitInfoTracker;-><clinit>()V
+HSPLcom/android/server/am/AppExitInfoTracker;-><init>()V
+HSPLcom/android/server/am/AppExitInfoTracker;->access$100(Lcom/android/server/am/AppExitInfoTracker;)Ljava/lang/Object;
+HSPLcom/android/server/am/AppExitInfoTracker;->access$200(Lcom/android/server/am/AppExitInfoTracker;)Lcom/android/server/am/ActivityManagerService;
+HSPLcom/android/server/am/AppExitInfoTracker;->access$300(J)Z
+HSPLcom/android/server/am/AppExitInfoTracker;->access$400(Lcom/android/server/am/AppExitInfoTracker;IILjava/lang/Integer;Ljava/lang/Integer;)Z
+HSPLcom/android/server/am/AppExitInfoTracker;->addExitInfoInner(Ljava/lang/String;ILandroid/app/ApplicationExitInfo;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->addExitInfoLocked(Landroid/app/ApplicationExitInfo;)Landroid/app/ApplicationExitInfo;
+PLcom/android/server/am/AppExitInfoTracker;->dumpHistoryProcessExitInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/AppExitInfoTracker;->dumpHistoryProcessExitInfoLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/SparseArray;Landroid/icu/text/SimpleDateFormat;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->forEachPackage(Ljava/util/function/BiFunction;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;II)Landroid/app/ApplicationExitInfo;
+HSPLcom/android/server/am/AppExitInfoTracker;->getExitInfo(Ljava/lang/String;IIILjava/util/ArrayList;)V
+HPLcom/android/server/am/AppExitInfoTracker;->handleNoteAppKillLocked(Landroid/app/ApplicationExitInfo;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->handleNoteProcessDiedLocked(Landroid/app/ApplicationExitInfo;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->handleZygoteSigChld(III)V
+HSPLcom/android/server/am/AppExitInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->init(Lcom/android/server/am/ActivityManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->isFresh(J)Z
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$dumpHistoryProcessExitInfo$6$AppExitInfoTracker(Ljava/io/PrintWriter;Landroid/icu/text/SimpleDateFormat;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HSPLcom/android/server/am/AppExitInfoTracker;->lambda$onSystemReady$0$AppExitInfoTracker()V
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$persistProcessExitInfo$4(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$persistProcessExitInfo$5(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$removeByUserId$7(ILjava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessary$1$AppExitInfoTracker(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HSPLcom/android/server/am/AppExitInfoTracker;->lambda$updateExitInfoIfNecessary$2$AppExitInfoTracker(ILjava/util/ArrayList;ILjava/lang/Integer;Ljava/lang/Integer;Ljava/lang/String;Landroid/util/SparseArray;)Ljava/lang/Integer;
+HSPLcom/android/server/am/AppExitInfoTracker;->loadExistingProcessExitInfo()V
+HSPLcom/android/server/am/AppExitInfoTracker;->loadPackagesFromProto(Landroid/util/proto/ProtoInputStream;J)V
+HSPLcom/android/server/am/AppExitInfoTracker;->obtainRawRecordLocked(Lcom/android/server/am/ProcessRecord;)Landroid/app/ApplicationExitInfo;
+HPLcom/android/server/am/AppExitInfoTracker;->onPackageRemoved(Ljava/lang/String;IZ)V
+HSPLcom/android/server/am/AppExitInfoTracker;->onSystemReady()V
+PLcom/android/server/am/AppExitInfoTracker;->onUserRemoved(I)V
+HPLcom/android/server/am/AppExitInfoTracker;->persistProcessExitInfo()V
+HSPLcom/android/server/am/AppExitInfoTracker;->recycleRawRecordLocked(Landroid/app/ApplicationExitInfo;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->registerForPackageRemoval()V
+HSPLcom/android/server/am/AppExitInfoTracker;->registerForUserRemoval()V
+PLcom/android/server/am/AppExitInfoTracker;->removeByUserId(I)V
+HPLcom/android/server/am/AppExitInfoTracker;->removePackage(Ljava/lang/String;I)V
+HSPLcom/android/server/am/AppExitInfoTracker;->scheduleChildProcDied(III)V
+HSPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
+HPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteLmkdProcKilled(II)V
+HSPLcom/android/server/am/AppExitInfoTracker;->scheduleNoteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->schedulePersistProcessExitInfo(Z)V
+HSPLcom/android/server/am/AppExitInfoTracker;->updateExistingExitInfoRecordLocked(Landroid/app/ApplicationExitInfo;Ljava/lang/Integer;Ljava/lang/Integer;)V
+HSPLcom/android/server/am/AppExitInfoTracker;->updateExitInfoIfNecessary(IILjava/lang/Integer;Ljava/lang/Integer;)Z
+PLcom/android/server/am/AppNotRespondingDialog$1;-><init>(Lcom/android/server/am/AppNotRespondingDialog;)V
+PLcom/android/server/am/AppNotRespondingDialog$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/AppNotRespondingDialog$Data;-><init>(Lcom/android/server/am/ProcessRecord;Landroid/content/pm/ApplicationInfo;Z)V
+PLcom/android/server/am/AppNotRespondingDialog;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/Context;Lcom/android/server/am/AppNotRespondingDialog$Data;)V
+PLcom/android/server/am/AppNotRespondingDialog;->access$000(Lcom/android/server/am/AppNotRespondingDialog;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/AppNotRespondingDialog;->access$100(Lcom/android/server/am/AppNotRespondingDialog;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/AppNotRespondingDialog;->onClick(Landroid/view/View;)V
+PLcom/android/server/am/AppNotRespondingDialog;->onCreate(Landroid/os/Bundle;)V
+PLcom/android/server/am/AppWaitingForDebuggerDialog$1;-><init>(Lcom/android/server/am/AppWaitingForDebuggerDialog;)V
+PLcom/android/server/am/AppWaitingForDebuggerDialog;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/Context;Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/AppWaitingForDebuggerDialog;->onStop()V
 PLcom/android/server/am/AssistDataRequester$AssistDataRequesterCallbacks;->onAssistRequestCompleted()V
 PLcom/android/server/am/AssistDataRequester;-><init>(Landroid/content/Context;Landroid/view/IWindowManager;Landroid/app/AppOpsManager;Lcom/android/server/am/AssistDataRequester$AssistDataRequesterCallbacks;Ljava/lang/Object;II)V
 PLcom/android/server/am/AssistDataRequester;->cancel()V
 PLcom/android/server/am/AssistDataRequester;->dispatchAssistDataReceived(Landroid/os/Bundle;)V
-PLcom/android/server/am/AssistDataRequester;->flushPendingAssistData()V
+PLcom/android/server/am/AssistDataRequester;->dispatchAssistScreenshotReceived(Landroid/graphics/Bitmap;)V
+PLcom/android/server/am/AssistDataRequester;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/AssistDataRequester;->flushPendingAssistData()V
 PLcom/android/server/am/AssistDataRequester;->getPendingDataCount()I
 PLcom/android/server/am/AssistDataRequester;->getPendingScreenshotCount()I
 PLcom/android/server/am/AssistDataRequester;->onHandleAssistData(Landroid/os/Bundle;)V
 PLcom/android/server/am/AssistDataRequester;->onHandleAssistScreenshot(Landroid/graphics/Bitmap;)V
 PLcom/android/server/am/AssistDataRequester;->processPendingAssistData()V
 PLcom/android/server/am/AssistDataRequester;->requestAssistData(Ljava/util/List;ZZZZILjava/lang/String;)V
-PLcom/android/server/am/AssistDataRequester;->requestAutofillData(Ljava/util/List;ILjava/lang/String;)V
-PLcom/android/server/am/AssistDataRequester;->requestData(Ljava/util/List;ZZZZZILjava/lang/String;)V
+HPLcom/android/server/am/AssistDataRequester;->requestData(Ljava/util/List;ZZZZZILjava/lang/String;)V
+PLcom/android/server/am/AssistDataRequester;->tryDispatchRequestComplete()V
+HPLcom/android/server/am/BackupRecord;-><init>(Landroid/content/pm/ApplicationInfo;II)V
+PLcom/android/server/am/BackupRecord;->toString()Ljava/lang/String;
+PLcom/android/server/am/BaseErrorDialog$1;-><init>(Lcom/android/server/am/BaseErrorDialog;)V
 PLcom/android/server/am/BaseErrorDialog$1;->handleMessage(Landroid/os/Message;)V
 PLcom/android/server/am/BaseErrorDialog;-><init>(Landroid/content/Context;)V
+PLcom/android/server/am/BaseErrorDialog;->access$002(Lcom/android/server/am/BaseErrorDialog;Z)Z
+PLcom/android/server/am/BaseErrorDialog;->access$100(Lcom/android/server/am/BaseErrorDialog;Z)V
+PLcom/android/server/am/BaseErrorDialog;->dispatchKeyEvent(Landroid/view/KeyEvent;)Z
+PLcom/android/server/am/BaseErrorDialog;->onStart()V
 PLcom/android/server/am/BaseErrorDialog;->setEnabled(Z)V
+HSPLcom/android/server/am/BatteryExternalStatsWorker$1;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
 HSPLcom/android/server/am/BatteryExternalStatsWorker$1;->run()V
+HSPLcom/android/server/am/BatteryExternalStatsWorker$2;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
 HSPLcom/android/server/am/BatteryExternalStatsWorker$2;->run()V
+HSPLcom/android/server/am/BatteryExternalStatsWorker$3;-><init>(Lcom/android/server/am/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/am/BatteryExternalStatsWorker$3;->execute(Ljava/lang/Runnable;)V
 HSPLcom/android/server/am/BatteryExternalStatsWorker;-><init>(Landroid/content/Context;Lcom/android/internal/os/BatteryStatsImpl;)V
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$000(Lcom/android/server/am/BatteryExternalStatsWorker;)I
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$002(Lcom/android/server/am/BatteryExternalStatsWorker;I)I
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$100(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/String;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$1000(Lcom/android/server/am/BatteryExternalStatsWorker;)Lcom/android/internal/os/BatteryStatsImpl;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$102(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$1102(Lcom/android/server/am/BatteryExternalStatsWorker;J)J
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$200(Lcom/android/server/am/BatteryExternalStatsWorker;)Landroid/util/IntArray;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$300(Lcom/android/server/am/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$400(Lcom/android/server/am/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$500(Lcom/android/server/am/BatteryExternalStatsWorker;)Z
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$502(Lcom/android/server/am/BatteryExternalStatsWorker;Z)Z
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$602(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/util/concurrent/Future;)Ljava/util/concurrent/Future;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$700(Lcom/android/server/am/BatteryExternalStatsWorker;)V
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$800(Lcom/android/server/am/BatteryExternalStatsWorker;)Ljava/lang/Object;
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->access$900(Lcom/android/server/am/BatteryExternalStatsWorker;Ljava/lang/String;IZZZ)V
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->cancelCpuSyncDueToWakelockChange()V
-HSPLcom/android/server/am/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/net/wifi/WifiActivityEnergyInfo;)Landroid/net/wifi/WifiActivityEnergyInfo;
-PLcom/android/server/am/BatteryExternalStatsWorker;->getLastCollectionTimeStamp()J
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->cancelSyncDueToBatteryLevelChangeLocked()V
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->extractDeltaLocked(Landroid/os/connectivity/WifiActivityEnergyInfo;)Landroid/os/connectivity/WifiActivityEnergyInfo;
+HPLcom/android/server/am/BatteryExternalStatsWorker;->getLastCollectionTimeStamp()J
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$new$0(Ljava/lang/Runnable;)V
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$new$1(Ljava/lang/Runnable;)Ljava/lang/Thread;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$2$BatteryExternalStatsWorker()V
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$scheduleCpuSyncDueToWakelockChange$3$BatteryExternalStatsWorker()V
+PLcom/android/server/am/BatteryExternalStatsWorker;->lambda$scheduleSyncDueToBatteryLevelChange$4$BatteryExternalStatsWorker()V
+HSPLcom/android/server/am/BatteryExternalStatsWorker;->lambda$updateExternalStatsLocked$5(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToRemovedUid(I)Ljava/util/concurrent/Future;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToScreenStateChange(ZZ)Ljava/util/concurrent/Future;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleCpuSyncDueToWakelockChange(J)Ljava/util/concurrent/Future;
@@ -3135,389 +6992,771 @@
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncDueToBatteryLevelChange(J)Ljava/util/concurrent/Future;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleSyncLocked(Ljava/lang/String;I)Ljava/util/concurrent/Future;
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->scheduleWrite()Ljava/util/concurrent/Future;
+PLcom/android/server/am/BatteryExternalStatsWorker;->shutdown()V
 HSPLcom/android/server/am/BatteryExternalStatsWorker;->updateExternalStatsLocked(Ljava/lang/String;IZZZ)V
+HSPLcom/android/server/am/BatteryStatsService$1;-><init>(Lcom/android/server/am/BatteryStatsService;)V
 HSPLcom/android/server/am/BatteryStatsService$1;->getUserIds()[I
-HSPLcom/android/server/am/BatteryStatsService$LocalService;->getMobileIfaces()[Ljava/lang/String;
-HSPLcom/android/server/am/BatteryStatsService$LocalService;->noteJobsDeferred(IIJ)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$1;)V
+HPLcom/android/server/am/BatteryStatsService$LocalService;->getMobileIfaces()[Ljava/lang/String;
+HPLcom/android/server/am/BatteryStatsService$LocalService;->getWifiIfaces()[Ljava/lang/String;
+PLcom/android/server/am/BatteryStatsService$LocalService;->noteJobsDeferred(IIJ)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;
 HSPLcom/android/server/am/BatteryStatsService;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Handler;)V
+HSPLcom/android/server/am/BatteryStatsService;->access$100(Ljava/nio/ByteBuffer;)I
 HSPLcom/android/server/am/BatteryStatsService;->addIsolatedUid(II)V
 PLcom/android/server/am/BatteryStatsService;->awaitUninterruptibly(Ljava/util/concurrent/Future;)V
-PLcom/android/server/am/BatteryStatsService;->computeChargeTimeRemaining()J
-PLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/am/BatteryStatsService;->dumpHelp(Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/BatteryStatsService;->computeChargeTimeRemaining()J
+HPLcom/android/server/am/BatteryStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->dumpHelp(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/am/BatteryStatsService;->enforceCallingPermission()V
 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/internal/os/BatteryStatsImpl;
-PLcom/android/server/am/BatteryStatsService;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
-PLcom/android/server/am/BatteryStatsService;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
-PLcom/android/server/am/BatteryStatsService;->getHealthStatsForUidLocked(I)Landroid/os/health/HealthStatsParceler;
+HPLcom/android/server/am/BatteryStatsService;->getCellularBatteryStats()Landroid/os/connectivity/CellularBatteryStats;
+HPLcom/android/server/am/BatteryStatsService;->getGpsBatteryStats()Landroid/os/connectivity/GpsBatteryStats;
+HPLcom/android/server/am/BatteryStatsService;->getHealthStatsForUidLocked(I)Landroid/os/health/HealthStatsParceler;
 HSPLcom/android/server/am/BatteryStatsService;->getPlatformLowPowerStats()Ljava/lang/String;
 HSPLcom/android/server/am/BatteryStatsService;->getService()Lcom/android/internal/app/IBatteryStats;
-HSPLcom/android/server/am/BatteryStatsService;->getServiceType()I
+PLcom/android/server/am/BatteryStatsService;->getServiceType()I
 PLcom/android/server/am/BatteryStatsService;->getStatistics()[B
 PLcom/android/server/am/BatteryStatsService;->getStatisticsStream()Landroid/os/ParcelFileDescriptor;
 HSPLcom/android/server/am/BatteryStatsService;->getSubsystemLowPowerStats()Ljava/lang/String;
-PLcom/android/server/am/BatteryStatsService;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats;
+HPLcom/android/server/am/BatteryStatsService;->getWifiBatteryStats()Landroid/os/connectivity/WifiBatteryStats;
 HSPLcom/android/server/am/BatteryStatsService;->initPowerManagement()V
-HSPLcom/android/server/am/BatteryStatsService;->isCharging()Z
+HPLcom/android/server/am/BatteryStatsService;->isCharging()Z
+PLcom/android/server/am/BatteryStatsService;->isOnBattery()Z
 HSPLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$0$BatteryStatsService(IIIIIIII)V
 HSPLcom/android/server/am/BatteryStatsService;->lambda$setBatteryState$1$BatteryStatsService(IIIIIIII)V
-HSPLcom/android/server/am/BatteryStatsService;->noteAlarmFinish(Ljava/lang/String;Landroid/os/WorkSource;I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteAlarmStart(Ljava/lang/String;Landroid/os/WorkSource;I)V
-PLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V
-PLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V
-PLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V
-HSPLcom/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
-HSPLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteDeviceIdleMode(ILjava/lang/String;I)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
+HPLcom/android/server/am/BatteryStatsService;->noteBleScanResults(Landroid/os/WorkSource;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteBleScanStarted(Landroid/os/WorkSource;Z)V
+HPLcom/android/server/am/BatteryStatsService;->noteBleScanStopped(Landroid/os/WorkSource;Z)V
+HPLcom/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
+HPLcom/android/server/am/BatteryStatsService;->noteConnectivityChanged(ILjava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteDeviceIdleMode(ILjava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteEvent(ILjava/lang/String;I)V
 PLcom/android/server/am/BatteryStatsService;->noteFlashlightOff(I)V
 PLcom/android/server/am/BatteryStatsService;->noteFlashlightOn(I)V
-PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteGpsChanged(Landroid/os/WorkSource;Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteGpsSignalQuality(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockAcquiredFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteFullWifiLockReleasedFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteGpsChanged(Landroid/os/WorkSource;Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteGpsSignalQuality(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteInteractive(Z)V
-HSPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;II)V
-HSPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteJobsDeferred(IIJ)V
-PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinishFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStartFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteMobileRadioPowerState(IJI)V
-HSPLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobFinish(Ljava/lang/String;IIII)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobStart(Ljava/lang/String;III)V
+HPLcom/android/server/am/BatteryStatsService;->noteJobsDeferred(IIJ)V
+HPLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinish(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockFinishFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStart(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteLongPartialWakelockStartFromSource(Ljava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteMobileRadioPowerState(IJI)V
+HPLcom/android/server/am/BatteryStatsService;->noteNetworkInterfaceType(Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteNetworkStatsEnabled()V
-PLcom/android/server/am/BatteryStatsService;->notePackageInstalled(Ljava/lang/String;J)V
-HSPLcom/android/server/am/BatteryStatsService;->notePackageUninstalled(Ljava/lang/String;)V
-HSPLcom/android/server/am/BatteryStatsService;->notePhoneDataConnectionState(IZ)V
-HSPLcom/android/server/am/BatteryStatsService;->notePhoneOff()V
+HPLcom/android/server/am/BatteryStatsService;->notePackageInstalled(Ljava/lang/String;J)V
+HPLcom/android/server/am/BatteryStatsService;->notePackageUninstalled(Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->notePhoneDataConnectionState(IZI)V
+PLcom/android/server/am/BatteryStatsService;->notePhoneOff()V
 PLcom/android/server/am/BatteryStatsService;->notePhoneOn()V
-HSPLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V
-HSPLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V
+HPLcom/android/server/am/BatteryStatsService;->notePhoneSignalStrength(Landroid/telephony/SignalStrength;)V
+HPLcom/android/server/am/BatteryStatsService;->notePhoneState(I)V
 PLcom/android/server/am/BatteryStatsService;->noteProcessAnr(Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteProcessCrash(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteProcessCrash(Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteProcessFinish(Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteProcessStart(Ljava/lang/String;I)V
+PLcom/android/server/am/BatteryStatsService;->noteResetAudio()V
 HSPLcom/android/server/am/BatteryStatsService;->noteResetBleScan()V
+PLcom/android/server/am/BatteryStatsService;->noteResetCamera()V
+PLcom/android/server/am/BatteryStatsService;->noteResetFlashlight()V
 HSPLcom/android/server/am/BatteryStatsService;->noteScreenBrightness(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteScreenState(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
-PLcom/android/server/am/BatteryStatsService;->noteStartCamera(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartAudio(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartCamera(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStartSensor(II)V
-PLcom/android/server/am/BatteryStatsService;->noteStartVideo(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStartVideo(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStartWakelock(IILjava/lang/String;Ljava/lang/String;IZ)V
 HSPLcom/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;->noteStopCamera(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopAudio(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopCamera(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStopSensor(II)V
-PLcom/android/server/am/BatteryStatsService;->noteStopVideo(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteStopVideo(I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStopWakelock(IILjava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteStopWakelockFromSource(Landroid/os/WorkSource;ILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteSyncFinish(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteSyncStart(Ljava/lang/String;I)V
 HSPLcom/android/server/am/BatteryStatsService;->noteUidProcessState(II)V
 HSPLcom/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;->noteWakeUp(Ljava/lang/String;I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteVibratorOff(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteVibratorOn(IJ)V
+HPLcom/android/server/am/BatteryStatsService;->noteWakeUp(Ljava/lang/String;I)V
+HPLcom/android/server/am/BatteryStatsService;->noteWakupAlarm(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
 PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastDisabled(I)V
 PLcom/android/server/am/BatteryStatsService;->noteWifiMulticastEnabled(I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWifiOff()V
+PLcom/android/server/am/BatteryStatsService;->noteWifiOff()V
 HSPLcom/android/server/am/BatteryStatsService;->noteWifiOn()V
-PLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V
-PLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWifiRunning(Landroid/os/WorkSource;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V
-PLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V
-PLcom/android/server/am/BatteryStatsService;->noteWifiStopped(Landroid/os/WorkSource;)V
-HSPLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V
-HSPLcom/android/server/am/BatteryStatsService;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiRadioPowerState(IJI)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiRssiChanged(I)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStartedFromSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiScanStoppedFromSource(Landroid/os/WorkSource;)V
+PLcom/android/server/am/BatteryStatsService;->noteWifiState(ILjava/lang/String;)V
+HPLcom/android/server/am/BatteryStatsService;->noteWifiSupplicantStateChanged(IZ)V
+PLcom/android/server/am/BatteryStatsService;->onCleanupUser(I)V
+PLcom/android/server/am/BatteryStatsService;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/am/BatteryStatsService;->publish()V
 HSPLcom/android/server/am/BatteryStatsService;->removeIsolatedUid(II)V
-HSPLcom/android/server/am/BatteryStatsService;->removeUid(I)V
+PLcom/android/server/am/BatteryStatsService;->removeUid(I)V
+HSPLcom/android/server/am/BatteryStatsService;->scheduleWriteToDisk()V
 HSPLcom/android/server/am/BatteryStatsService;->setBatteryState(IIIIIIII)V
-PLcom/android/server/am/BatteryStatsService;->syncStats(Ljava/lang/String;I)V
-PLcom/android/server/am/BatteryStatsService;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
+HPLcom/android/server/am/BatteryStatsService;->setChargingStateUpdateDelayMillis(I)Z
+HPLcom/android/server/am/BatteryStatsService;->shouldCollectExternalStats()Z
+PLcom/android/server/am/BatteryStatsService;->shutdown()V
+HPLcom/android/server/am/BatteryStatsService;->syncStats(Ljava/lang/String;I)V
+HSPLcom/android/server/am/BatteryStatsService;->systemServicesReady()V
+HPLcom/android/server/am/BatteryStatsService;->takeUidSnapshot(I)Landroid/os/health/HealthStatsParceler;
+HSPLcom/android/server/am/BroadcastConstants$SettingsObserver;-><init>(Lcom/android/server/am/BroadcastConstants;Landroid/os/Handler;)V
 HSPLcom/android/server/am/BroadcastConstants;-><init>(Ljava/lang/String;)V
-PLcom/android/server/am/BroadcastConstants;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/BroadcastConstants;->dump(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/am/BroadcastConstants;->startObserving(Landroid/os/Handler;Landroid/content/ContentResolver;)V
 HSPLcom/android/server/am/BroadcastConstants;->updateConstants()V
-HSPLcom/android/server/am/BroadcastDispatcher$1;->broadcastAlarmComplete(I)V
-HSPLcom/android/server/am/BroadcastDispatcher$1;->broadcastAlarmPending(I)V
+HSPLcom/android/server/am/BroadcastDispatcher$1;-><init>(Lcom/android/server/am/BroadcastDispatcher;)V
+HPLcom/android/server/am/BroadcastDispatcher$1;->broadcastAlarmComplete(I)V
+HPLcom/android/server/am/BroadcastDispatcher$1;->broadcastAlarmPending(I)V
+HSPLcom/android/server/am/BroadcastDispatcher$2;-><init>(Lcom/android/server/am/BroadcastDispatcher;)V
 PLcom/android/server/am/BroadcastDispatcher$2;->run()V
-PLcom/android/server/am/BroadcastDispatcher$Deferrals;->add(Lcom/android/server/am/BroadcastRecord;)V
-PLcom/android/server/am/BroadcastDispatcher$Deferrals;->size()I
-PLcom/android/server/am/BroadcastDispatcher$Deferrals;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastDispatcher$Deferrals;-><init>(IJJI)V
+HPLcom/android/server/am/BroadcastDispatcher$Deferrals;->add(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastDispatcher$Deferrals;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/am/BroadcastDispatcher$Deferrals;->dumpLocked(Lcom/android/server/am/BroadcastDispatcher$Dumper;)V
+HPLcom/android/server/am/BroadcastDispatcher$Deferrals;->size()I
+PLcom/android/server/am/BroadcastDispatcher$Dumper;-><init>(Lcom/android/server/am/BroadcastDispatcher;Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/text/SimpleDateFormat;)V
+PLcom/android/server/am/BroadcastDispatcher$Dumper;->didPrint()Z
+HPLcom/android/server/am/BroadcastDispatcher$Dumper;->dump(Lcom/android/server/am/BroadcastRecord;)V
+PLcom/android/server/am/BroadcastDispatcher$Dumper;->setHeading(Ljava/lang/String;)V
+PLcom/android/server/am/BroadcastDispatcher$Dumper;->setLabel(Ljava/lang/String;)V
 HSPLcom/android/server/am/BroadcastDispatcher;-><init>(Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/BroadcastConstants;Landroid/os/Handler;Ljava/lang/Object;)V
-PLcom/android/server/am/BroadcastDispatcher;->addDeferredBroadcast(ILcom/android/server/am/BroadcastRecord;)V
-HSPLcom/android/server/am/BroadcastDispatcher;->cleanupDeferralsListDisabledReceiversLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/util/Set;IZ)Z
-HSPLcom/android/server/am/BroadcastDispatcher;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastDispatcher;->access$000(Lcom/android/server/am/BroadcastDispatcher;)Ljava/lang/Object;
+HPLcom/android/server/am/BroadcastDispatcher;->access$100(Lcom/android/server/am/BroadcastDispatcher;)Ljava/util/ArrayList;
+HPLcom/android/server/am/BroadcastDispatcher;->access$200(Lcom/android/server/am/BroadcastDispatcher;)Ljava/util/ArrayList;
+PLcom/android/server/am/BroadcastDispatcher;->access$300(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastDispatcher$Deferrals;)V
+PLcom/android/server/am/BroadcastDispatcher;->access$400(Lcom/android/server/am/BroadcastDispatcher;)Lcom/android/server/am/BroadcastQueue;
+PLcom/android/server/am/BroadcastDispatcher;->access$502(Lcom/android/server/am/BroadcastDispatcher;Z)Z
+HPLcom/android/server/am/BroadcastDispatcher;->addDeferredBroadcast(ILcom/android/server/am/BroadcastRecord;)V
+PLcom/android/server/am/BroadcastDispatcher;->calculateDeferral(J)J
+HPLcom/android/server/am/BroadcastDispatcher;->cleanupBroadcastListDisabledReceiversLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastDispatcher;->cleanupDeferralsListDisabledReceiversLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastDispatcher;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastDispatcher;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastDispatcher;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Ljava/text/SimpleDateFormat;)Z
 HSPLcom/android/server/am/BroadcastDispatcher;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
+HSPLcom/android/server/am/BroadcastDispatcher;->findUidLocked(I)Lcom/android/server/am/BroadcastDispatcher$Deferrals;
+HSPLcom/android/server/am/BroadcastDispatcher;->findUidLocked(ILjava/util/ArrayList;)Lcom/android/server/am/BroadcastDispatcher$Deferrals;
 HSPLcom/android/server/am/BroadcastDispatcher;->getActiveBroadcastLocked()Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastDispatcher;->getNextBroadcastLocked(J)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastDispatcher;->insertLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastDispatcher$Deferrals;)V
+HPLcom/android/server/am/BroadcastDispatcher;->isDeferralsListEmpty(Ljava/util/ArrayList;)Z
 HSPLcom/android/server/am/BroadcastDispatcher;->isDeferringLocked(I)Z
-PLcom/android/server/am/BroadcastDispatcher;->isEmpty()Z
-HSPLcom/android/server/am/BroadcastDispatcher;->replaceBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastDispatcher;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastDispatcher;->isEmpty()Z
+HPLcom/android/server/am/BroadcastDispatcher;->pendingInDeferralsList(Ljava/util/ArrayList;)I
+PLcom/android/server/am/BroadcastDispatcher;->popLocked(Ljava/util/ArrayList;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastDispatcher;->removeDeferral(Lcom/android/server/am/BroadcastDispatcher$Deferrals;)Z
+HPLcom/android/server/am/BroadcastDispatcher;->replaceBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastDispatcher;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastDispatcher;->replaceDeferredBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastDispatcher;->retireBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastDispatcher;->scheduleDeferralCheckLocked(Z)V
 HSPLcom/android/server/am/BroadcastDispatcher;->start()V
-PLcom/android/server/am/BroadcastDispatcher;->startDeferring(I)V
-PLcom/android/server/am/BroadcastDispatcher;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastDispatcher;->startDeferring(I)V
 HSPLcom/android/server/am/BroadcastFilter;-><init>(Landroid/content/IntentFilter;Lcom/android/server/am/ReceiverList;Ljava/lang/String;Ljava/lang/String;IIZZ)V
-PLcom/android/server/am/BroadcastFilter;->toString()Ljava/lang/String;
-PLcom/android/server/am/BroadcastFilter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/am/BroadcastQueue$AppNotResponding;->run()V
+PLcom/android/server/am/BroadcastFilter;->dumpBrief(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastFilter;->dumpBroadcastFilterState(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastFilter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastFilter;->dumpInReceiverList(Ljava/io/PrintWriter;Landroid/util/Printer;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastFilter;->toString()Ljava/lang/String;
+PLcom/android/server/am/BroadcastQueue$AppNotResponding;-><init>(Lcom/android/server/am/BroadcastQueue;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastQueue$AppNotResponding;->run()V
+HSPLcom/android/server/am/BroadcastQueue$BroadcastHandler;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/os/Looper;)V
 HSPLcom/android/server/am/BroadcastQueue$BroadcastHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/BroadcastQueue;-><clinit>()V
 HSPLcom/android/server/am/BroadcastQueue;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/os/Handler;Ljava/lang/String;Lcom/android/server/am/BroadcastConstants;Z)V
 HSPLcom/android/server/am/BroadcastQueue;->addBroadcastToHistoryLocked(Lcom/android/server/am/BroadcastRecord;)V
-HSPLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V
-PLcom/android/server/am/BroadcastQueue;->broadcastTimeoutLocked(Z)V
+HPLcom/android/server/am/BroadcastQueue;->backgroundServicesFinishedLocked(I)V
+HPLcom/android/server/am/BroadcastQueue;->broadcastTimeoutLocked(Z)V
 HSPLcom/android/server/am/BroadcastQueue;->cancelBroadcastTimeoutLocked()V
-HSPLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastQueue;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HSPLcom/android/server/am/BroadcastQueue;->createBroadcastTraceTitle(Lcom/android/server/am/BroadcastRecord;I)Ljava/lang/String;
 HSPLcom/android/server/am/BroadcastQueue;->deliverToRegisteredReceiverLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/BroadcastFilter;ZI)V
-PLcom/android/server/am/BroadcastQueue;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;Z)Z
+HPLcom/android/server/am/BroadcastQueue;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/BroadcastQueue;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZLjava/lang/String;Z)Z
+HSPLcom/android/server/am/BroadcastQueue;->enqueueBroadcastHelper(Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->enqueueOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->enqueueParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->finishReceiverLocked(Lcom/android/server/am/BroadcastRecord;ILjava/lang/String;Landroid/os/Bundle;ZZ)Z
+HSPLcom/android/server/am/BroadcastQueue;->getMatchingOrderedReceiver(Landroid/os/IBinder;)Lcom/android/server/am/BroadcastRecord;
+HSPLcom/android/server/am/BroadcastQueue;->isPendingBroadcastProcessLocked(I)Z
 HSPLcom/android/server/am/BroadcastQueue;->isSignaturePerm([Ljava/lang/String;)Z
-HSPLcom/android/server/am/BroadcastQueue;->logBroadcastReceiverDiscardLocked(Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->lambda$postActivityStartTokenRemoval$0$BroadcastQueue(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->logBroadcastReceiverDiscardLocked(Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->maybeAddAllowBackgroundActivityStartsToken(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
 PLcom/android/server/am/BroadcastQueue;->nextSplitTokenLocked()I
 HSPLcom/android/server/am/BroadcastQueue;->performReceiveLocked(Lcom/android/server/am/ProcessRecord;Landroid/content/IIntentReceiver;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+HPLcom/android/server/am/BroadcastQueue;->postActivityStartTokenRemoval(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->processCurBroadcastLocked(Lcom/android/server/am/BroadcastRecord;Lcom/android/server/am/ProcessRecord;Z)V
 HSPLcom/android/server/am/BroadcastQueue;->processNextBroadcast(Z)V
 HSPLcom/android/server/am/BroadcastQueue;->processNextBroadcastLocked(ZZ)V
 HSPLcom/android/server/am/BroadcastQueue;->replaceBroadcastLocked(Ljava/util/ArrayList;Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;)Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastQueue;->replaceOrderedBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastQueue;->replaceParallelBroadcastLocked(Lcom/android/server/am/BroadcastRecord;)Lcom/android/server/am/BroadcastRecord;
 HSPLcom/android/server/am/BroadcastQueue;->requestStartTargetPermissionsReviewIfNeededLocked(Lcom/android/server/am/BroadcastRecord;Ljava/lang/String;I)Z
+HSPLcom/android/server/am/BroadcastQueue;->ringAdvance(III)I
 HSPLcom/android/server/am/BroadcastQueue;->scheduleBroadcastsLocked()V
-PLcom/android/server/am/BroadcastQueue;->scheduleTempWhitelistLocked(IJLcom/android/server/am/BroadcastRecord;)V
+HPLcom/android/server/am/BroadcastQueue;->scheduleTempWhitelistLocked(IJLcom/android/server/am/BroadcastRecord;)V
 HSPLcom/android/server/am/BroadcastQueue;->sendPendingBroadcastsLocked(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/BroadcastQueue;->setBroadcastTimeoutLocked(J)V
-PLcom/android/server/am/BroadcastQueue;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/BroadcastQueue;->skipCurrentReceiverLocked(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/BroadcastQueue;->skipPendingBroadcastLocked(I)V
+HPLcom/android/server/am/BroadcastQueue;->skipReceiverLocked(Lcom/android/server/am/BroadcastRecord;)V
+HSPLcom/android/server/am/BroadcastQueue;->start(Landroid/content/ContentResolver;)V
+PLcom/android/server/am/BroadcastQueue;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/BroadcastRecord;-><clinit>()V
 HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastQueue;Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;IIZLjava/lang/String;[Ljava/lang/String;ILandroid/app/BroadcastOptions;Ljava/util/List;Landroid/content/IIntentReceiver;ILjava/lang/String;Landroid/os/Bundle;ZZZIZZ)V
 HSPLcom/android/server/am/BroadcastRecord;-><init>(Lcom/android/server/am/BroadcastRecord;Landroid/content/Intent;)V
-HSPLcom/android/server/am/BroadcastRecord;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
-PLcom/android/server/am/BroadcastRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/text/SimpleDateFormat;)V
+HPLcom/android/server/am/BroadcastRecord;->cleanupDisabledPackageReceiversLocked(Ljava/lang/String;Ljava/util/Set;IZ)Z
+HPLcom/android/server/am/BroadcastRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/text/SimpleDateFormat;)V
+HPLcom/android/server/am/BroadcastRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/am/BroadcastRecord;->getReceiverUid(Ljava/lang/Object;)I
-PLcom/android/server/am/BroadcastRecord;->splitRecipientsLocked(II)Lcom/android/server/am/BroadcastRecord;
-HSPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/BroadcastRecord;->maybeStripForHistory()Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastRecord;->splitRecipientsLocked(II)Lcom/android/server/am/BroadcastRecord;
+HPLcom/android/server/am/BroadcastRecord;->toString()Ljava/lang/String;
 HSPLcom/android/server/am/BroadcastStats$1;-><init>()V
 PLcom/android/server/am/BroadcastStats$1;->compare(Lcom/android/server/am/BroadcastStats$ActionEntry;Lcom/android/server/am/BroadcastStats$ActionEntry;)I
-PLcom/android/server/am/BroadcastStats$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/am/BroadcastStats$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/am/BroadcastStats$ActionEntry;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/am/BroadcastStats$PackageEntry;-><init>()V
+HSPLcom/android/server/am/BroadcastStats$ViolationEntry;-><init>()V
+HSPLcom/android/server/am/BroadcastStats;-><clinit>()V
+HSPLcom/android/server/am/BroadcastStats;-><init>()V
 HSPLcom/android/server/am/BroadcastStats;->addBackgroundCheckViolation(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/BroadcastStats;->addBroadcast(Ljava/lang/String;Ljava/lang/String;IIJ)V
-PLcom/android/server/am/BroadcastStats;->dumpCheckinStats(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/BroadcastStats;->dumpStats(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/am/BroadcastStats;->dumpCheckinStats(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/BroadcastStats;->dumpStats(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/am/BugReportHandlerUtil;->getBugReportHandlerAppReceivers(Landroid/content/Context;Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/am/BugReportHandlerUtil;->getCustomBugReportHandlerApp(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/am/BugReportHandlerUtil;->getCustomBugReportHandlerUser(Landroid/content/Context;)I
+PLcom/android/server/am/BugReportHandlerUtil;->getDefaultBugReportHandlerApp(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/am/BugReportHandlerUtil;->isBugReportHandlerEnabled(Landroid/content/Context;)Z
+PLcom/android/server/am/BugReportHandlerUtil;->isBugreportWhitelistedApp(Ljava/lang/String;)Z
+PLcom/android/server/am/BugReportHandlerUtil;->isShellApp(Ljava/lang/String;)Z
+PLcom/android/server/am/BugReportHandlerUtil;->isValidBugReportHandlerApp(Ljava/lang/String;)Z
+PLcom/android/server/am/BugReportHandlerUtil;->launchBugReportHandlerApp(Landroid/content/Context;)Z
+HSPLcom/android/server/am/CachedAppOptimizer$1;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer$1;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/am/CachedAppOptimizer$2;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer$2;->removeEldestEntry(Ljava/util/Map$Entry;)Z
+HPLcom/android/server/am/CachedAppOptimizer$LastCompactionStats;-><init>([J)V
+HPLcom/android/server/am/CachedAppOptimizer$LastCompactionStats;->getRssAfterCompaction()[J
+HSPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;)V
+HSPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;-><init>(Lcom/android/server/am/CachedAppOptimizer;Lcom/android/server/am/CachedAppOptimizer$1;)V
+HPLcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/CachedAppOptimizer;-><clinit>()V
+HSPLcom/android/server/am/CachedAppOptimizer;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$000(Lcom/android/server/am/CachedAppOptimizer;)Ljava/lang/Object;
+PLcom/android/server/am/CachedAppOptimizer;->access$100(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer;->access$1000(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1100(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/ArrayList;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1200(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1200(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Map;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1300(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/ArrayList;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1308(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1400(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Map;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1408(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1508(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1608(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1700(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Random;
+HPLcom/android/server/am/CachedAppOptimizer;->access$1708(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1800(Lcom/android/server/am/CachedAppOptimizer;)V
+HPLcom/android/server/am/CachedAppOptimizer;->access$1808(Lcom/android/server/am/CachedAppOptimizer;)I
+HPLcom/android/server/am/CachedAppOptimizer;->access$1900(Lcom/android/server/am/CachedAppOptimizer;)Ljava/util/Random;
+HPLcom/android/server/am/CachedAppOptimizer;->access$2000(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$400(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$500(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$600(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$700(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$800(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;
+PLcom/android/server/am/CachedAppOptimizer;->access$800(Lcom/android/server/am/CachedAppOptimizer;)V
+PLcom/android/server/am/CachedAppOptimizer;->access$900(Lcom/android/server/am/CachedAppOptimizer;)Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;
+HSPLcom/android/server/am/CachedAppOptimizer;->compactActionIntToString(I)Ljava/lang/String;
+PLcom/android/server/am/CachedAppOptimizer;->compactAllSystem()V
+HPLcom/android/server/am/CachedAppOptimizer;->compactAppBfgs(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->compactAppFull(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->compactAppPersistent(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->compactAppSome(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/CachedAppOptimizer;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/am/CachedAppOptimizer;->init()V
+HSPLcom/android/server/am/CachedAppOptimizer;->parseProcStateThrottle(Ljava/lang/String;)Z
+HPLcom/android/server/am/CachedAppOptimizer;->shouldCompactBFGS(Lcom/android/server/am/ProcessRecord;J)Z
+HPLcom/android/server/am/CachedAppOptimizer;->shouldCompactPersistent(Lcom/android/server/am/ProcessRecord;J)Z
+HSPLcom/android/server/am/CachedAppOptimizer;->updateCompactStatsdSampleRate()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateCompactionActions()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateCompactionThrottles()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateFreezerStatsdSampleRate()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateFullDeltaRssThrottle()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateFullRssThrottle()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateProcStateThrottle()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateStatsdSampleRate()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateUseCompaction()V
+HSPLcom/android/server/am/CachedAppOptimizer;->updateUseFreezer()V
+HSPLcom/android/server/am/CachedAppOptimizer;->useCompaction()Z
+HSPLcom/android/server/am/CachedAppOptimizer;->useFreezer()Z
+HSPLcom/android/server/am/ConnectionRecord;-><clinit>()V
 HSPLcom/android/server/am/ConnectionRecord;-><init>(Lcom/android/server/am/AppBindRecord;Lcom/android/server/wm/ActivityServiceConnectionsHolder;Landroid/app/IServiceConnection;IILandroid/app/PendingIntent;ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/am/ConnectionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ConnectionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ConnectionRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/ConnectionRecord;->hasFlag(I)Z
+HPLcom/android/server/am/ConnectionRecord;->notHasFlag(I)Z
 HSPLcom/android/server/am/ConnectionRecord;->startAssociationIfNeeded()V
+HSPLcom/android/server/am/ConnectionRecord;->stopAssociation()V
 HSPLcom/android/server/am/ConnectionRecord;->toString()Ljava/lang/String;
 HSPLcom/android/server/am/ConnectionRecord;->trackProcState(IIJ)V
-PLcom/android/server/am/ConnectionRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/ContentProviderConnection;-><init>(Lcom/android/server/am/ContentProviderRecord;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
 HSPLcom/android/server/am/ContentProviderConnection;->startAssociationIfNeeded()V
-PLcom/android/server/am/ContentProviderConnection;->toClientString(Ljava/lang/StringBuilder;)V
-PLcom/android/server/am/ContentProviderConnection;->toShortString()Ljava/lang/String;
-HSPLcom/android/server/am/ContentProviderConnection;->trackProcState(IIJ)V
+HPLcom/android/server/am/ContentProviderConnection;->stopAssociation()V
+PLcom/android/server/am/ContentProviderConnection;->toClientString()Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderConnection;->toClientString(Ljava/lang/StringBuilder;)V
+HPLcom/android/server/am/ContentProviderConnection;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderConnection;->toShortString(Ljava/lang/StringBuilder;)V
+PLcom/android/server/am/ContentProviderConnection;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderConnection;->trackProcState(IIJ)V
 HSPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ProviderInfo;Landroid/content/pm/ApplicationInfo;Landroid/content/ComponentName;Z)V
-PLcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;ILjava/lang/String;)V
+HPLcom/android/server/am/ContentProviderRecord;-><init>(Lcom/android/server/am/ContentProviderRecord;)V
+HPLcom/android/server/am/ContentProviderRecord;->addExternalProcessHandleLocked(Landroid/os/IBinder;ILjava/lang/String;)V
 HSPLcom/android/server/am/ContentProviderRecord;->canRunHere(Lcom/android/server/am/ProcessRecord;)Z
-PLcom/android/server/am/ContentProviderRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-PLcom/android/server/am/ContentProviderRecord;->getComponentName()Landroid/content/ComponentName;
+HPLcom/android/server/am/ContentProviderRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/am/ContentProviderRecord;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/am/ContentProviderRecord;->hasConnectionOrHandle()Z
 HSPLcom/android/server/am/ContentProviderRecord;->hasExternalProcessHandles()Z
 HSPLcom/android/server/am/ContentProviderRecord;->newHolder(Lcom/android/server/am/ContentProviderConnection;)Landroid/app/ContentProviderHolder;
-PLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
+HPLcom/android/server/am/ContentProviderRecord;->removeExternalProcessHandleLocked(Landroid/os/IBinder;)Z
 HSPLcom/android/server/am/ContentProviderRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V
-PLcom/android/server/am/ContentProviderRecord;->toShortString()Ljava/lang/String;
-PLcom/android/server/am/ContentProviderRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderRecord;->toShortString()Ljava/lang/String;
+HPLcom/android/server/am/ContentProviderRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/CoreSettingsObserver$DeviceConfigEntry;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Class;)V
+HSPLcom/android/server/am/CoreSettingsObserver;-><clinit>()V
+HSPLcom/android/server/am/CoreSettingsObserver;-><init>(Lcom/android/server/am/ActivityManagerService;)V
 HSPLcom/android/server/am/CoreSettingsObserver;->beginObserveCoreSettings()V
 HSPLcom/android/server/am/CoreSettingsObserver;->getCoreSettingsLocked()Landroid/os/Bundle;
-HSPLcom/android/server/am/CoreSettingsObserver;->onChange(Z)V
+PLcom/android/server/am/CoreSettingsObserver;->lambda$beginObserveCoreSettings$0$CoreSettingsObserver(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/am/CoreSettingsObserver;->onChange(Z)V
 HSPLcom/android/server/am/CoreSettingsObserver;->populateSettings(Landroid/os/Bundle;Ljava/util/Map;)V
-HSPLcom/android/server/am/DumpHeapProvider;-><init>()V
-HSPLcom/android/server/am/DumpHeapProvider;->onCreate()Z
-HSPLcom/android/server/am/EventLogTags;->writeAmFocusedStack(IIIILjava/lang/String;)V
-HSPLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V
-HSPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJJIIJ)V
+HSPLcom/android/server/am/CoreSettingsObserver;->populateSettingsFromDeviceConfig()V
+HSPLcom/android/server/am/CoreSettingsObserver;->sendCoreSettings()V
+HPLcom/android/server/am/EventLogTags;->writeAmCrash(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/am/EventLogTags;->writeAmDropProcess(I)V
+HSPLcom/android/server/am/EventLogTags;->writeAmLowMemory(I)V
+HSPLcom/android/server/am/EventLogTags;->writeAmMemFactor(II)V
+HPLcom/android/server/am/EventLogTags;->writeAmMeminfo(JJJJJ)V
+PLcom/android/server/am/EventLogTags;->writeAmPreBoot(ILjava/lang/String;)V
+HSPLcom/android/server/am/EventLogTags;->writeAmProcBound(IILjava/lang/String;)V
+HSPLcom/android/server/am/EventLogTags;->writeAmProcDied(IILjava/lang/String;II)V
+PLcom/android/server/am/EventLogTags;->writeAmProcessStartTimeout(IIILjava/lang/String;)V
+PLcom/android/server/am/EventLogTags;->writeAmProviderLostProcess(ILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/am/EventLogTags;->writeAmPss(IILjava/lang/String;JJJJIIJ)V
+PLcom/android/server/am/EventLogTags;->writeAmStopIdleService(ILjava/lang/String;)V
 HSPLcom/android/server/am/EventLogTags;->writeAmUidActive(I)V
-PLcom/android/server/am/HealthStatsBatteryStatsWriter;->writePid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pid;)V
-PLcom/android/server/am/HealthStatsBatteryStatsWriter;->writePkg(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pkg;)V
-PLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeProc(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Proc;)V
-PLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeServ(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pkg$Serv;)V
-PLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V
+PLcom/android/server/am/EventLogTags;->writeAmUidIdle(I)V
+HSPLcom/android/server/am/EventLogTags;->writeAmUidRunning(I)V
+HSPLcom/android/server/am/EventLogTags;->writeAmUidStopped(I)V
+PLcom/android/server/am/EventLogTags;->writeAmUserStateChanged(II)V
+HSPLcom/android/server/am/EventLogTags;->writeAmWtf(IILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/EventLogTags;->writeBootProgressAmsReady(J)V
+HSPLcom/android/server/am/EventLogTags;->writeBootProgressEnableScreen(J)V
+HSPLcom/android/server/am/EventLogTags;->writeConfigurationChanged(I)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;-><init>()V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->addTimer(Landroid/os/health/HealthStatsWriter;ILandroid/os/BatteryStats$Timer;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->addTimers(Landroid/os/health/HealthStatsWriter;ILjava/lang/String;Landroid/os/BatteryStats$Timer;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writePid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pid;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writePkg(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pkg;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeProc(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Proc;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeServ(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats$Uid$Pkg$Serv;)V
+HPLcom/android/server/am/HealthStatsBatteryStatsWriter;->writeUid(Landroid/os/health/HealthStatsWriter;Landroid/os/BatteryStats;Landroid/os/BatteryStats$Uid;)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;I)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/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;IZ)V
+HPLcom/android/server/am/HostingRecord;->byAppZygote(Landroid/content/ComponentName;Ljava/lang/String;I)Lcom/android/server/am/HostingRecord;
+HPLcom/android/server/am/HostingRecord;->byWebviewZygote(Landroid/content/ComponentName;)Lcom/android/server/am/HostingRecord;
+PLcom/android/server/am/HostingRecord;->getDefiningPackageName()Ljava/lang/String;
+HSPLcom/android/server/am/HostingRecord;->getDefiningUid()I
+HSPLcom/android/server/am/HostingRecord;->getName()Ljava/lang/String;
+HSPLcom/android/server/am/HostingRecord;->getType()Ljava/lang/String;
+HSPLcom/android/server/am/HostingRecord;->isTopApp()Z
+HSPLcom/android/server/am/HostingRecord;->usesAppZygote()Z
+HSPLcom/android/server/am/HostingRecord;->usesWebviewZygote()Z
+PLcom/android/server/am/InstrumentationReporter$MyThread;-><init>(Lcom/android/server/am/InstrumentationReporter;)V
+PLcom/android/server/am/InstrumentationReporter$MyThread;->run()V
+PLcom/android/server/am/InstrumentationReporter$Report;-><init>(Lcom/android/server/am/InstrumentationReporter;ILandroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V
+HSPLcom/android/server/am/InstrumentationReporter;-><init>()V
+PLcom/android/server/am/InstrumentationReporter;->report(Lcom/android/server/am/InstrumentationReporter$Report;)V
+PLcom/android/server/am/InstrumentationReporter;->reportFinished(Landroid/app/IInstrumentationWatcher;Landroid/content/ComponentName;ILandroid/os/Bundle;)V
+HSPLcom/android/server/am/IntentBindRecord;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/content/Intent$FilterComparison;)V
 HSPLcom/android/server/am/IntentBindRecord;->collectFlags()I
+HPLcom/android/server/am/IntentBindRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/am/IntentBindRecord;->dumpInService(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/IntentBindRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/am/MemoryStatUtil;->parseMemoryStatFromProcfs(Ljava/lang/String;)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
-HSPLcom/android/server/am/MemoryStatUtil;->readFileContents(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/am/LmkdConnection$1;-><init>(Lcom/android/server/am/LmkdConnection;)V
+HPLcom/android/server/am/LmkdConnection$1;->onFileDescriptorEvents(Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/LmkdConnection;-><init>(Landroid/os/MessageQueue;Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;)V
+HPLcom/android/server/am/LmkdConnection;->access$000(Lcom/android/server/am/LmkdConnection;Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/LmkdConnection;->connect()Z
+HSPLcom/android/server/am/LmkdConnection;->exchange(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
+HPLcom/android/server/am/LmkdConnection;->fileDescriptorEventHandler(Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/LmkdConnection;->isConnected()Z
+HSPLcom/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
+HSPLcom/android/server/am/LmkdConnection;->waitForConnection(J)Z
+HSPLcom/android/server/am/LmkdConnection;->write(Ljava/nio/ByteBuffer;)Z
+HSPLcom/android/server/am/LowMemDetector$LowMemThread;-><init>(Lcom/android/server/am/LowMemDetector;)V
+HSPLcom/android/server/am/LowMemDetector$LowMemThread;-><init>(Lcom/android/server/am/LowMemDetector;Lcom/android/server/am/LowMemDetector$1;)V
+HSPLcom/android/server/am/LowMemDetector$LowMemThread;->run()V
+HSPLcom/android/server/am/LowMemDetector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/LowMemDetector;->access$100(Lcom/android/server/am/LowMemDetector;)I
+HSPLcom/android/server/am/LowMemDetector;->access$300(Lcom/android/server/am/LowMemDetector;)Ljava/lang/Object;
+HSPLcom/android/server/am/LowMemDetector;->access$402(Lcom/android/server/am/LowMemDetector;I)I
+HSPLcom/android/server/am/LowMemDetector;->getMemFactor()I
+HSPLcom/android/server/am/LowMemDetector;->isAvailable()Z
+HPLcom/android/server/am/MemoryStatUtil$MemoryStat;-><init>()V
+HSPLcom/android/server/am/MemoryStatUtil;-><clinit>()V
+HSPLcom/android/server/am/MemoryStatUtil;->hasMemcg()Z
+HPLcom/android/server/am/MemoryStatUtil;->parseMemoryStatFromProcfs(Ljava/lang/String;)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
+HPLcom/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;->tryParseLong(Ljava/util/regex/Pattern;Ljava/lang/String;)J
+HPLcom/android/server/am/MemoryStatUtil;->readMemoryStatFromProcfs(I)Lcom/android/server/am/MemoryStatUtil$MemoryStat;
+PLcom/android/server/am/NativeCrashListener$NativeCrashReporter;-><init>(Lcom/android/server/am/NativeCrashListener;Lcom/android/server/am/ProcessRecord;ILjava/lang/String;)V
 PLcom/android/server/am/NativeCrashListener$NativeCrashReporter;->run()V
-HSPLcom/android/server/am/NativeCrashListener;->consumeNativeCrashData(Ljava/io/FileDescriptor;)V
+HSPLcom/android/server/am/NativeCrashListener;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/NativeCrashListener;->consumeNativeCrashData(Ljava/io/FileDescriptor;)V
+PLcom/android/server/am/NativeCrashListener;->readExactly(Ljava/io/FileDescriptor;[BII)I
 HSPLcom/android/server/am/NativeCrashListener;->run()V
-HSPLcom/android/server/am/OomAdjProfiler$CpuTimes;->addCpuTimeMs(J)V
+PLcom/android/server/am/NativeCrashListener;->unpackInt([BI)I
+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$1;)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$CpuTimes;->isEmpty()Z
 PLcom/android/server/am/OomAdjProfiler$CpuTimes;->toString()Ljava/lang/String;
 HSPLcom/android/server/am/OomAdjProfiler;-><init>()V
+HSPLcom/android/server/am/OomAdjProfiler;->access$100(Lcom/android/server/am/OomAdjProfiler;)Z
+HSPLcom/android/server/am/OomAdjProfiler;->access$200(Lcom/android/server/am/OomAdjProfiler;)Z
 HSPLcom/android/server/am/OomAdjProfiler;->batteryPowerChanged(Z)V
 PLcom/android/server/am/OomAdjProfiler;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/am/OomAdjProfiler;->onWakefulnessChanged(I)V
+HSPLcom/android/server/am/OomAdjProfiler;->lambda$oLbVP84ACmxo_1QlnwlSuhi91W4(Lcom/android/server/am/OomAdjProfiler;ZZZ)V
+HPLcom/android/server/am/OomAdjProfiler;->onWakefulnessChanged(I)V
 HSPLcom/android/server/am/OomAdjProfiler;->oomAdjEnded()V
 HSPLcom/android/server/am/OomAdjProfiler;->oomAdjStarted()V
 HSPLcom/android/server/am/OomAdjProfiler;->reset()V
 HSPLcom/android/server/am/OomAdjProfiler;->scheduleSystemServerCpuTimeUpdate()V
-HSPLcom/android/server/am/OomAdjProfiler;->updateSystemServerCpuTime(ZZ)V
-HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->initialize(Lcom/android/server/am/ProcessRecord;IZIIIII)V
-HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V
-HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onPausedActivity()V
-HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onStoppingActivity(Z)V
-HSPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onVisibleActivity()V
+HSPLcom/android/server/am/OomAdjProfiler;->updateSystemServerCpuTime(ZZZ)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;IZIIIII)V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onOtherActivity()V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onPausedActivity()V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onStoppingActivity(Z)V
+HPLcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;->onVisibleActivity()V
 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
 HSPLcom/android/server/am/OomAdjuster;->applyOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZJJ)Z
-HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZ)Z
+HSPLcom/android/server/am/OomAdjuster;->assignCachedAdjIfNecessary(Ljava/util/ArrayList;)V
+HSPLcom/android/server/am/OomAdjuster;->computeOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJZZ)Z
+HSPLcom/android/server/am/OomAdjuster;->createAdjusterThread()Lcom/android/server/ServiceThread;
+PLcom/android/server/am/OomAdjuster;->dumpAppCompactorSettings(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/OomAdjuster;->dumpCachedAppOptimizerSettings(Ljava/io/PrintWriter;)V
 PLcom/android/server/am/OomAdjuster;->dumpProcCountsLocked(Ljava/io/PrintWriter;)V
 PLcom/android/server/am/OomAdjuster;->dumpProcessListVariablesLocked(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/am/OomAdjuster;->dumpSequenceNumbersLocked(Ljava/io/PrintWriter;)V
-PLcom/android/server/am/OomAdjuster;->idleUidsLocked()V
+HPLcom/android/server/am/OomAdjuster;->idleUidsLocked()V
+HSPLcom/android/server/am/OomAdjuster;->initSettings()V
+HSPLcom/android/server/am/OomAdjuster;->lambda$new$0(Landroid/os/Message;)Z
+HSPLcom/android/server/am/OomAdjuster;->maybeUpdateLastTopTime(Lcom/android/server/am/ProcessRecord;J)V
 HSPLcom/android/server/am/OomAdjuster;->maybeUpdateUsageStatsLocked(Lcom/android/server/am/ProcessRecord;J)V
-PLcom/android/server/am/OomAdjuster;->setAppIdTempWhitelistStateLocked(IZ)V
+HPLcom/android/server/am/OomAdjuster;->setAppIdTempWhitelistStateLocked(IZ)V
+HSPLcom/android/server/am/OomAdjuster;->setAttachingSchedGroupLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/OomAdjuster;->setUidTempWhitelistStateLocked(IZ)V
 HSPLcom/android/server/am/OomAdjuster;->shouldSkipDueToCycle(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/ProcessRecord;IIZ)Z
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked()V
-HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Z)Z
+HSPLcom/android/server/am/OomAdjuster;->updateAndTrimProcessLocked(JJJLcom/android/server/am/ActiveUids;)Z
+HSPLcom/android/server/am/OomAdjuster;->updateAppFreezeStateLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/OomAdjuster;->updateAppUidRecLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ILcom/android/server/am/ProcessRecord;ZJ)Z
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)Z
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZLjava/lang/String;)Z
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLocked(Ljava/lang/String;)V
+HSPLcom/android/server/am/OomAdjuster;->updateOomAdjLockedInner(Ljava/lang/String;Lcom/android/server/am/ProcessRecord;Ljava/util/ArrayList;Lcom/android/server/am/ActiveUids;ZZ)V
+HSPLcom/android/server/am/OomAdjuster;->updateUidsLocked(Lcom/android/server/am/ActiveUids;J)V
 HSPLcom/android/server/am/PendingIntentController;-><init>(Landroid/os/Looper;Lcom/android/server/am/UserController;)V
-PLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V
-PLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;Z)V
-PLcom/android/server/am/PendingIntentController;->dumpPendingIntents(Ljava/io/PrintWriter;ZLjava/lang/String;)V
+HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Landroid/content/IIntentSender;)V
+HPLcom/android/server/am/PendingIntentController;->cancelIntentSender(Lcom/android/server/am/PendingIntentRecord;Z)V
+PLcom/android/server/am/PendingIntentController;->clearPendingResultForActivity(Landroid/os/IBinder;Ljava/lang/ref/WeakReference;)V
+HPLcom/android/server/am/PendingIntentController;->dumpPendingIntents(Ljava/io/PrintWriter;ZLjava/lang/String;)V
 HSPLcom/android/server/am/PendingIntentController;->getIntentSender(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Lcom/android/server/am/PendingIntentRecord;
-PLcom/android/server/am/PendingIntentController;->handlePendingIntentCancelled(Landroid/os/RemoteCallbackList;)V
-PLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;)V
+HPLcom/android/server/am/PendingIntentController;->handlePendingIntentCancelled(Landroid/os/RemoteCallbackList;)V
+PLcom/android/server/am/PendingIntentController;->lambda$pDmmJDvS20vSAAXh9qdzbN0P8N0(Lcom/android/server/am/PendingIntentController;Landroid/os/RemoteCallbackList;)V
+PLcom/android/server/am/PendingIntentController;->lambda$sPmaborOkBSSEP2wiimxXw-eYDQ(Lcom/android/server/am/PendingIntentController;Landroid/os/IBinder;Ljava/lang/ref/WeakReference;)V
+HPLcom/android/server/am/PendingIntentController;->makeIntentSenderCanceled(Lcom/android/server/am/PendingIntentRecord;)V
 HSPLcom/android/server/am/PendingIntentController;->onActivityManagerInternalAdded()V
-HSPLcom/android/server/am/PendingIntentController;->removePendingIntentsForPackage(Ljava/lang/String;IIZ)Z
+HPLcom/android/server/am/PendingIntentController;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/am/PendingIntentController;->removePendingIntentsForPackage(Ljava/lang/String;IIZ)Z
+HPLcom/android/server/am/PendingIntentController;->setPendingIntentWhitelistDuration(Landroid/content/IIntentSender;Landroid/os/IBinder;J)V
+HPLcom/android/server/am/PendingIntentController;->unregisterIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
 HSPLcom/android/server/am/PendingIntentRecord$Key;-><init>(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILcom/android/server/wm/SafeActivityOptions;I)V
 HSPLcom/android/server/am/PendingIntentRecord$Key;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/am/PendingIntentRecord$Key;->hashCode()I
-PLcom/android/server/am/PendingIntentRecord$Key;->typeName()Ljava/lang/String;
+HPLcom/android/server/am/PendingIntentRecord$Key;->typeName()Ljava/lang/String;
 HSPLcom/android/server/am/PendingIntentRecord;-><init>(Lcom/android/server/am/PendingIntentController;Lcom/android/server/am/PendingIntentRecord$Key;I)V
+HPLcom/android/server/am/PendingIntentRecord;->clearAllowBgActivityStarts(Landroid/os/IBinder;)V
 HSPLcom/android/server/am/PendingIntentRecord;->completeFinalize()V
-PLcom/android/server/am/PendingIntentRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/PendingIntentRecord;->detachCancelListenersLocked()Landroid/os/RemoteCallbackList;
+HPLcom/android/server/am/PendingIntentRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/am/PendingIntentRecord;->finalize()V
-HSPLcom/android/server/am/PendingIntentRecord;->sendInner(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
-HSPLcom/android/server/am/PendingIntentRecord;->setWhitelistDurationLocked(Landroid/os/IBinder;J)V
-PLcom/android/server/am/PendingIntentRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/PendingTempWhitelists;->size()I
+HSPLcom/android/server/am/PendingIntentRecord;->lambda$hlEHdgdG_SS5n3v7IRr7e6QZgLQ(Lcom/android/server/am/PendingIntentRecord;)V
+HPLcom/android/server/am/PendingIntentRecord;->registerCancelListenerLocked(Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/am/PendingIntentRecord;->sendInner(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
+HPLcom/android/server/am/PendingIntentRecord;->sendWithResult(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)I
+HPLcom/android/server/am/PendingIntentRecord;->setAllowBgActivityStarts(Landroid/os/IBinder;I)V
+HPLcom/android/server/am/PendingIntentRecord;->setWhitelistDurationLocked(Landroid/os/IBinder;J)V
+HPLcom/android/server/am/PendingIntentRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/am/PendingIntentRecord;->unregisterCancelListenerLocked(Lcom/android/internal/os/IResultReceiver;)V
+HSPLcom/android/server/am/PendingTempWhitelists;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+HSPLcom/android/server/am/PendingTempWhitelists;->indexOfKey(I)I
+HPLcom/android/server/am/PendingTempWhitelists;->put(ILcom/android/server/am/ActivityManagerService$PendingTempWhitelist;)V
+HPLcom/android/server/am/PendingTempWhitelists;->removeAt(I)V
+HPLcom/android/server/am/PendingTempWhitelists;->size()I
+HPLcom/android/server/am/PendingTempWhitelists;->valueAt(I)Lcom/android/server/am/ActivityManagerService$PendingTempWhitelist;
+PLcom/android/server/am/PersistentConnection$1;-><init>(Lcom/android/server/am/PersistentConnection;)V
+PLcom/android/server/am/PersistentConnection$1;->onBindingDied(Landroid/content/ComponentName;)V
 PLcom/android/server/am/PersistentConnection$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/am/PersistentConnection$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/am/PersistentConnection;-><init>(Ljava/lang/String;Landroid/content/Context;Landroid/os/Handler;ILandroid/content/ComponentName;JDJJ)V
+PLcom/android/server/am/PersistentConnection;->access$000(Lcom/android/server/am/PersistentConnection;)Ljava/lang/Object;
+PLcom/android/server/am/PersistentConnection;->access$100(Lcom/android/server/am/PersistentConnection;)Z
+PLcom/android/server/am/PersistentConnection;->access$1008(Lcom/android/server/am/PersistentConnection;)I
+PLcom/android/server/am/PersistentConnection;->access$1100(Lcom/android/server/am/PersistentConnection;)V
+PLcom/android/server/am/PersistentConnection;->access$1208(Lcom/android/server/am/PersistentConnection;)I
+PLcom/android/server/am/PersistentConnection;->access$200(Lcom/android/server/am/PersistentConnection;)Ljava/lang/String;
+PLcom/android/server/am/PersistentConnection;->access$300(Lcom/android/server/am/PersistentConnection;)Landroid/content/ComponentName;
+PLcom/android/server/am/PersistentConnection;->access$400(Lcom/android/server/am/PersistentConnection;)I
+PLcom/android/server/am/PersistentConnection;->access$508(Lcom/android/server/am/PersistentConnection;)I
+PLcom/android/server/am/PersistentConnection;->access$602(Lcom/android/server/am/PersistentConnection;Z)Z
+PLcom/android/server/am/PersistentConnection;->access$702(Lcom/android/server/am/PersistentConnection;J)J
+PLcom/android/server/am/PersistentConnection;->access$802(Lcom/android/server/am/PersistentConnection;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/am/PersistentConnection;->access$900(Lcom/android/server/am/PersistentConnection;)V
 PLcom/android/server/am/PersistentConnection;->bind()V
+PLcom/android/server/am/PersistentConnection;->bindForBackoff()V
 PLcom/android/server/am/PersistentConnection;->bindInnerLocked(Z)V
+PLcom/android/server/am/PersistentConnection;->cleanUpConnectionLocked()V
 PLcom/android/server/am/PersistentConnection;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 PLcom/android/server/am/PersistentConnection;->injectPostAtTime(Ljava/lang/Runnable;J)V
 PLcom/android/server/am/PersistentConnection;->injectRemoveCallbacks(Ljava/lang/Runnable;)V
 PLcom/android/server/am/PersistentConnection;->injectUptimeMillis()J
+PLcom/android/server/am/PersistentConnection;->lambda$new$0$PersistentConnection()V
+PLcom/android/server/am/PersistentConnection;->lambda$rkvbuN0FQdQUv1hqSwDvmwwh6Uk(Lcom/android/server/am/PersistentConnection;)V
 PLcom/android/server/am/PersistentConnection;->resetBackoffLocked()V
+PLcom/android/server/am/PersistentConnection;->scheduleRebindLocked()V
+PLcom/android/server/am/PersistentConnection;->scheduleStableCheckLocked()V
 PLcom/android/server/am/PersistentConnection;->stableConnectionCheck()V
 PLcom/android/server/am/PersistentConnection;->unbind()V
 PLcom/android/server/am/PersistentConnection;->unbindLocked()V
 PLcom/android/server/am/PersistentConnection;->unscheduleRebindLocked()V
-HSPLcom/android/server/am/PreBootBroadcaster$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/am/PreBootBroadcaster;-><init>(Lcom/android/server/am/ActivityManagerService;ILcom/android/internal/util/ProgressReporter;Z)V
+PLcom/android/server/am/PersistentConnection;->unscheduleStableCheckLocked()V
+PLcom/android/server/am/PreBootBroadcaster$1;-><init>(Lcom/android/server/am/PreBootBroadcaster;Landroid/os/Looper;Landroid/os/Handler$Callback;Z)V
+PLcom/android/server/am/PreBootBroadcaster$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/am/PreBootBroadcaster;-><init>(Lcom/android/server/am/ActivityManagerService;ILcom/android/internal/util/ProgressReporter;Z)V
+PLcom/android/server/am/PreBootBroadcaster;->access$000(Lcom/android/server/am/PreBootBroadcaster;)Lcom/android/server/am/ActivityManagerService;
+PLcom/android/server/am/PreBootBroadcaster;->access$100(Lcom/android/server/am/PreBootBroadcaster;)I
 PLcom/android/server/am/PreBootBroadcaster;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
-HSPLcom/android/server/am/PreBootBroadcaster;->sendNext()V
-PLcom/android/server/am/ProcessList$IsolatedUidRange;->allocateIsolatedUidLocked(I)I
+PLcom/android/server/am/PreBootBroadcaster;->sendNext()V
+HSPLcom/android/server/am/ProcessList$1;-><init>(Lcom/android/server/am/ProcessList;)V
+HPLcom/android/server/am/ProcessList$1;->handleUnsolicitedMessage(Ljava/nio/ByteBuffer;I)Z
+HPLcom/android/server/am/ProcessList$1;->isReplyExpected(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;I)Z
+HSPLcom/android/server/am/ProcessList$1;->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;->allocateIsolatedUidLocked(I)I
+HSPLcom/android/server/am/ProcessList$IsolatedUidRange;->freeIsolatedUidLocked(I)V
 HSPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;-><init>(Lcom/android/server/am/ProcessList;III)V
+HPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;->freeUidRangeLocked(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;->getIsolatedUidRangeLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessList$IsolatedUidRange;
+HPLcom/android/server/am/ProcessList$IsolatedUidRangeAllocator;->getOrCreateIsolatedUidRangeLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessList$IsolatedUidRange;
+HSPLcom/android/server/am/ProcessList$KillHandler;-><init>(Lcom/android/server/am/ProcessList;Landroid/os/Looper;)V
 HSPLcom/android/server/am/ProcessList$KillHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/am/ProcessList$MyProcessMap;-><init>(Lcom/android/server/am/ProcessList;)V
+HSPLcom/android/server/am/ProcessList$MyProcessMap;->put(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList$MyProcessMap;->remove(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessList$ProcStateMemTracker;-><init>()V
-PLcom/android/server/am/ProcessList$ProcStateMemTracker;->dumpLine(Ljava/io/PrintWriter;)V
+HPLcom/android/server/am/ProcessList$ProcStateMemTracker;->dumpLine(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/am/ProcessList;-><clinit>()V
 HSPLcom/android/server/am/ProcessList;-><init>()V
 HSPLcom/android/server/am/ProcessList;->abortNextPssTime(Lcom/android/server/am/ProcessList$ProcStateMemTracker;)V
+HSPLcom/android/server/am/ProcessList;->access$000()Lcom/android/server/am/LmkdConnection;
+PLcom/android/server/am/ProcessList;->access$100(Lcom/android/server/am/ProcessList;II)V
 HSPLcom/android/server/am/ProcessList;->addProcessNameLocked(Lcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessList;->appendRamKb(Ljava/lang/StringBuilder;J)V
+HSPLcom/android/server/am/ProcessList;->applyDisplaySize(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/am/ProcessList;->buildOomTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IIZ)Ljava/lang/String;
 HSPLcom/android/server/am/ProcessList;->checkSlow(JLjava/lang/String;)V
-HSPLcom/android/server/am/ProcessList;->clearAllDnsCacheLocked()V
-PLcom/android/server/am/ProcessList;->collectProcessesLocked(IZ[Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLcom/android/server/am/ProcessList;->commitNextPssTime(Lcom/android/server/am/ProcessList$ProcStateMemTracker;)V
+HPLcom/android/server/am/ProcessList;->clearAllDnsCacheLocked()V
+HPLcom/android/server/am/ProcessList;->collectProcessesLocked(IZ[Ljava/lang/String;)Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessList;->commitNextPssTime(Lcom/android/server/am/ProcessList$ProcStateMemTracker;)V
+HSPLcom/android/server/am/ProcessList;->computeGidsForProcess(II[I)[I
 HSPLcom/android/server/am/ProcessList;->computeNextPssTime(ILcom/android/server/am/ProcessList$ProcStateMemTracker;ZZJ)J
-HSPLcom/android/server/am/ProcessList;->doStopUidForIdleUidsLocked()V
+HPLcom/android/server/am/ProcessList;->createAppZygoteForProcessIfNeeded(Lcom/android/server/am/ProcessRecord;)Landroid/os/AppZygote;
+HSPLcom/android/server/am/ProcessList;->createSystemServerSocketForZygote()Landroid/net/LocalSocket;
+HPLcom/android/server/am/ProcessList;->doStopUidForIdleUidsLocked()V
 HSPLcom/android/server/am/ProcessList;->dumpLruListHeaderLocked(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/am/ProcessList;->fillInProcMemInfoLocked(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
+HPLcom/android/server/am/ProcessList;->fillInProcMemInfoLocked(Lcom/android/server/am/ProcessRecord;Landroid/app/ActivityManager$RunningAppProcessInfo;I)V
 HSPLcom/android/server/am/ProcessList;->findAppProcessLocked(Landroid/os/IBinder;Ljava/lang/String;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->getBlockStateForUid(Lcom/android/server/am/UidRecord;)I
 HSPLcom/android/server/am/ProcessList;->getCachedRestoreThresholdKb()J
 HSPLcom/android/server/am/ProcessList;->getLRURecordForAppLocked(Landroid/app/IApplicationThread;)Lcom/android/server/am/ProcessRecord;
-PLcom/android/server/am/ProcessList;->getLmkdKillCount(II)Ljava/lang/Integer;
+HPLcom/android/server/am/ProcessList;->getLmkdKillCount(II)Ljava/lang/Integer;
 HSPLcom/android/server/am/ProcessList;->getLruSizeLocked()I
 HSPLcom/android/server/am/ProcessList;->getMemLevel(I)J
 HSPLcom/android/server/am/ProcessList;->getMemoryInfo(Landroid/app/ActivityManager$MemoryInfo;)V
+PLcom/android/server/am/ProcessList;->getOrCreateIsolatedUidRangeLocked(Landroid/content/pm/ApplicationInfo;Lcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessList$IsolatedUidRange;
+HSPLcom/android/server/am/ProcessList;->getPackageAppDataInfoMap(Landroid/content/pm/PackageManagerInternal;[Ljava/lang/String;I)Ljava/util/Map;
 HSPLcom/android/server/am/ProcessList;->getProcessRecordLocked(Ljava/lang/String;IZ)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->getRunningAppProcessesLocked(ZIZII)Ljava/util/List;
+HPLcom/android/server/am/ProcessList;->getRunningAppProcessesLocked(ZIZII)Ljava/util/List;
+HSPLcom/android/server/am/ProcessList;->getUidProcStateLocked(I)I
 HSPLcom/android/server/am/ProcessList;->getUidRecordLocked(I)Lcom/android/server/am/UidRecord;
+HPLcom/android/server/am/ProcessList;->handleLmkdProcKilled(II)V
+HSPLcom/android/server/am/ProcessList;->handleProcessStart(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
 HSPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;IZJZ)Z
 HSPLcom/android/server/am/ProcessList;->handleProcessStartedLocked(Lcom/android/server/am/ProcessRecord;Landroid/os/Process$ProcessStartResult;J)Z
+HSPLcom/android/server/am/ProcessList;->handleZygoteMessages(Ljava/io/FileDescriptor;I)I
 HSPLcom/android/server/am/ProcessList;->haveBackgroundProcessLocked()Z
-HSPLcom/android/server/am/ProcessList;->init(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ActiveUids;)V
+HSPLcom/android/server/am/ProcessList;->incrementProcStateSeqAndNotifyAppsLocked(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
 HSPLcom/android/server/am/ProcessList;->isProcStartValidLocked(Lcom/android/server/am/ProcessRecord;J)Ljava/lang/String;
+HPLcom/android/server/am/ProcessList;->isProcessAliveLiteLocked(Lcom/android/server/am/ProcessRecord;)Z
 HSPLcom/android/server/am/ProcessList;->killAllBackgroundProcessesExceptLocked(II)V
-HSPLcom/android/server/am/ProcessList;->killPackageProcessesLocked(Ljava/lang/String;IIILjava/lang/String;)Z
-HSPLcom/android/server/am/ProcessList;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZZLjava/lang/String;)Z
-PLcom/android/server/am/ProcessList;->killProcessGroup(II)V
-HSPLcom/android/server/am/ProcessList;->lambda$startProcessLocked$0$ProcessList(Lcom/android/server/am/ProcessRecord;JLjava/lang/String;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessList;->killAppZygoteIfNeededLocked(Landroid/os/AppZygote;)V
+HPLcom/android/server/am/ProcessList;->killAppZygoteIfNeededLocked(Landroid/os/AppZygote;Z)V
+HPLcom/android/server/am/ProcessList;->killAppZygotesLocked(Ljava/lang/String;IIZ)V
+HPLcom/android/server/am/ProcessList;->killPackageProcessesLocked(Ljava/lang/String;IIILjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->killPackageProcessesLocked(Ljava/lang/String;IIIZZZZZLjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->killProcAndWaitIfNecessaryLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;J)V
+HSPLcom/android/server/am/ProcessList;->killProcessGroup(II)V
+HSPLcom/android/server/am/ProcessList;->lambda$hjUwwFAIhoht4KRKnKeUve_Kcto(Lcom/android/server/am/ProcessList;Ljava/io/FileDescriptor;I)I
+HSPLcom/android/server/am/ProcessList;->lambda$startProcessLocked$0$ProcessList(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
 HSPLcom/android/server/am/ProcessList;->makeOomAdjString(IZ)Ljava/lang/String;
-PLcom/android/server/am/ProcessList;->makeProcStateProtoEnum(I)I
+HPLcom/android/server/am/ProcessList;->makeProcStateProtoEnum(I)I
 HSPLcom/android/server/am/ProcessList;->makeProcStateString(I)Ljava/lang/String;
-HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZIZ)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->openLmkdSocketLS()Z
-PLcom/android/server/am/ProcessList;->readLmkdReplyLS(Ljava/nio/ByteBuffer;)Z
+HPLcom/android/server/am/ProcessList;->minTimeFromStateChange(Z)J
+HSPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZILcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;
+HSPLcom/android/server/am/ProcessList;->noteAppKill(Lcom/android/server/am/ProcessRecord;IILjava/lang/String;)V
+HSPLcom/android/server/am/ProcessList;->noteProcessDiedLocked(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ProcessList;->onLmkdConnect(Ljava/io/OutputStream;)Z
+HSPLcom/android/server/am/ProcessList;->onSystemReady()V
+HPLcom/android/server/am/ProcessList;->procStateToImportance(IILandroid/app/ActivityManager$RunningAppProcessInfo;I)I
+HSPLcom/android/server/am/ProcessList;->procStatesDifferForMem(II)Z
+HSPLcom/android/server/am/ProcessList;->remove(I)V
 HSPLcom/android/server/am/ProcessList;->removeLruProcessLocked(Lcom/android/server/am/ProcessRecord;)V
-HSPLcom/android/server/am/ProcessList;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->removeProcessFromAppZygoteLocked(Lcom/android/server/am/ProcessRecord;)V
+HPLcom/android/server/am/ProcessList;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;)Z
+HPLcom/android/server/am/ProcessList;->removeProcessLocked(Lcom/android/server/am/ProcessRecord;ZZLjava/lang/String;I)Z
+HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;I)Lcom/android/server/am/ProcessRecord;
 HSPLcom/android/server/am/ProcessList;->removeProcessNameLocked(Ljava/lang/String;ILcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
+HPLcom/android/server/am/ProcessList;->sendPackageBroadcastLocked(I[Ljava/lang/String;I)V
+HPLcom/android/server/am/ProcessList;->setAllHttpProxy()V
 HSPLcom/android/server/am/ProcessList;->setOomAdj(III)V
-HSPLcom/android/server/am/ProcessList;->startProcess(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;Ljava/lang/String;ZZLjava/lang/String;)Z
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILjava/lang/String;Landroid/content/ComponentName;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
-HSPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z
+HSPLcom/android/server/am/ProcessList;->shouldIsolateAppData(Lcom/android/server/am/ProcessRecord;)Z
+HSPLcom/android/server/am/ProcessList;->startProcess(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Landroid/os/Process$ProcessStartResult;
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z
+PLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;)V
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;Ljava/lang/String;)Z
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/ProcessRecord;Lcom/android/server/am/HostingRecord;ZZZLjava/lang/String;)Z
+HSPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
+PLcom/android/server/am/ProcessList;->updateAllTimePrefsLocked(I)V
 HSPLcom/android/server/am/ProcessList;->updateApplicationInfoLocked(Ljava/util/List;IZ)V
 HSPLcom/android/server/am/ProcessList;->updateClientActivitiesOrdering(Lcom/android/server/am/ProcessRecord;III)V
 HSPLcom/android/server/am/ProcessList;->updateCoreSettingsLocked(Landroid/os/Bundle;)V
-HSPLcom/android/server/am/ProcessList;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;JIILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
+HPLcom/android/server/am/ProcessList;->updateLruProcessInternalLocked(Lcom/android/server/am/ProcessRecord;JIILjava/lang/String;Ljava/lang/Object;Lcom/android/server/am/ProcessRecord;)I
 HSPLcom/android/server/am/ProcessList;->updateLruProcessLocked(Lcom/android/server/am/ProcessRecord;ZLcom/android/server/am/ProcessRecord;)V
 HSPLcom/android/server/am/ProcessList;->updateOomLevels(IIZ)V
 HSPLcom/android/server/am/ProcessList;->writeLmkd(Ljava/nio/ByteBuffer;Ljava/nio/ByteBuffer;)Z
-HSPLcom/android/server/am/ProcessList;->writeLmkdCommandLS(Ljava/nio/ByteBuffer;)Z
 HSPLcom/android/server/am/ProcessMemInfo;-><init>(Ljava/lang/String;IIILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;-><init>(Lcom/android/server/am/ProcessRecord;)V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearAllErrorDialogs()V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearAnrDialogs()V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearCrashDialogs()V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearCrashDialogs(Z)V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearViolationDialogs()V
+HSPLcom/android/server/am/ProcessRecord$ErrorDialogController;->clearWaitingDialog()V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->forAllDialogs(Ljava/util/List;Ljava/util/function/Consumer;)V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->getDisplayContexts(Z)Ljava/util/List;
+HPLcom/android/server/am/ProcessRecord$ErrorDialogController;->hasAnrDialogs()Z
+HPLcom/android/server/am/ProcessRecord$ErrorDialogController;->hasCrashDialogs()Z
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->hasDebugWaitingDialog()Z
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->lambda$showAnrDialogs$1$ProcessRecord$ErrorDialogController()V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->lambda$showCrashDialogs$0$ProcessRecord$ErrorDialogController()V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->lambda$showDebugWaitingDialogs$3$ProcessRecord$ErrorDialogController()V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->showAnrDialogs(Lcom/android/server/am/AppNotRespondingDialog$Data;)V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->showCrashDialogs(Lcom/android/server/am/AppErrorDialog$Data;)V
+PLcom/android/server/am/ProcessRecord$ErrorDialogController;->showDebugWaitingDialogs()V
+HSPLcom/android/server/am/ProcessRecord$PackageList;-><init>(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ProcessRecord$PackageList;->clear()V
 HSPLcom/android/server/am/ProcessRecord$PackageList;->containsKey(Ljava/lang/Object;)Z
-PLcom/android/server/am/ProcessRecord$PackageList;->keyAt(I)Ljava/lang/String;
+HSPLcom/android/server/am/ProcessRecord$PackageList;->get(Ljava/lang/String;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
+HSPLcom/android/server/am/ProcessRecord$PackageList;->keyAt(I)Ljava/lang/String;
+HSPLcom/android/server/am/ProcessRecord$PackageList;->put(Ljava/lang/String;Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
 HSPLcom/android/server/am/ProcessRecord$PackageList;->size()I
 HSPLcom/android/server/am/ProcessRecord$PackageList;->valueAt(I)Lcom/android/internal/app/procstats/ProcessStats$ProcessStateHolder;
 HSPLcom/android/server/am/ProcessRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)V
-HSPLcom/android/server/am/ProcessRecord;->addAllowBackgroundActivityStartsToken(Landroid/os/Binder;)V
-HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;J)V
+HSPLcom/android/server/am/ProcessRecord;->access$000(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/am/ProcessRecord;->access$300(Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/ActivityManagerService;
+HPLcom/android/server/am/ProcessRecord;->addAllowBackgroundActivityStartsToken(Landroid/os/Binder;)V
+HSPLcom/android/server/am/ProcessRecord;->addBoundClientUid(I)V
+HSPLcom/android/server/am/ProcessRecord;->addBoundClientUidsOfNewService(Lcom/android/server/am/ServiceRecord;)V
 HSPLcom/android/server/am/ProcessRecord;->addPackage(Ljava/lang/String;JLcom/android/server/am/ProcessStatsService;)Z
-PLcom/android/server/am/ProcessRecord;->appNotResponding(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLjava/lang/String;)V
-HSPLcom/android/server/am/ProcessRecord;->clearWaitingToKill()V
-PLcom/android/server/am/ProcessRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->appDied()V
+PLcom/android/server/am/ProcessRecord;->appDied(Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessRecord;->appNotResponding(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/wm/WindowProcessController;ZLjava/lang/String;)V
+HSPLcom/android/server/am/ProcessRecord;->clearBoundClientUids()V
+HPLcom/android/server/am/ProcessRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZIIIII)V
+HPLcom/android/server/am/ProcessRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/ProcessRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
 HSPLcom/android/server/am/ProcessRecord;->forceProcessStateUpTo(I)V
 HSPLcom/android/server/am/ProcessRecord;->getActiveInstrumentation()Lcom/android/server/am/ActiveInstrumentation;
+HSPLcom/android/server/am/ProcessRecord;->getCachedHasActivities()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedHasRecentTasks()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedHasVisibleActivities()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedIsHeavyWeight()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedIsHomeProcess()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedIsPreviousProcess()Z
+HSPLcom/android/server/am/ProcessRecord;->getCachedIsReceivingBroadcast(Landroid/util/ArraySet;)Z
 HSPLcom/android/server/am/ProcessRecord;->getCpuTime()J
 HSPLcom/android/server/am/ProcessRecord;->getCurProcState()I
 HSPLcom/android/server/am/ProcessRecord;->getCurRawAdj()I
 HSPLcom/android/server/am/ProcessRecord;->getCurRawProcState()I
 HSPLcom/android/server/am/ProcessRecord;->getCurrentSchedulingGroup()I
-PLcom/android/server/am/ProcessRecord;->getFgInteractionTime()J
+HSPLcom/android/server/am/ProcessRecord;->getDialogController()Lcom/android/server/am/ProcessRecord$ErrorDialogController;
+HSPLcom/android/server/am/ProcessRecord;->getFgInteractionTime()J
 HSPLcom/android/server/am/ProcessRecord;->getForegroundServiceTypes()I
+PLcom/android/server/am/ProcessRecord;->getInputDispatchingTimeout()J
 HSPLcom/android/server/am/ProcessRecord;->getInteractionEventTime()J
+HPLcom/android/server/am/ProcessRecord;->getLruProcessList()Ljava/util/List;
 HSPLcom/android/server/am/ProcessRecord;->getPackageList()[Ljava/lang/String;
-HSPLcom/android/server/am/ProcessRecord;->getPackageListWithVersionCode()Ljava/util/List;
-HSPLcom/android/server/am/ProcessRecord;->getProcessClassEnum()I
+HPLcom/android/server/am/ProcessRecord;->getPackageListWithVersionCode()Ljava/util/List;
+PLcom/android/server/am/ProcessRecord;->getProcessClassEnum()I
 HSPLcom/android/server/am/ProcessRecord;->getReportedProcState()I
-PLcom/android/server/am/ProcessRecord;->getSetAdjWithServices()I
+HPLcom/android/server/am/ProcessRecord;->getSetAdjWithServices()I
+PLcom/android/server/am/ProcessRecord;->getShowBackground()Z
 PLcom/android/server/am/ProcessRecord;->getWhenUnimportant()J
 HSPLcom/android/server/am/ProcessRecord;->getWindowProcessController()Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/am/ProcessRecord;->hasActivities()Z
@@ -3528,27 +7767,34 @@
 HSPLcom/android/server/am/ProcessRecord;->hasLocationForegroundServices()Z
 HSPLcom/android/server/am/ProcessRecord;->hasOverlayUi()Z
 HSPLcom/android/server/am/ProcessRecord;->hasPendingUiClean()Z
-HSPLcom/android/server/am/ProcessRecord;->hasRecentTasks()Z
+PLcom/android/server/am/ProcessRecord;->hasRecentTasks()Z
 HSPLcom/android/server/am/ProcessRecord;->hasTopUi()Z
+HSPLcom/android/server/am/ProcessRecord;->isCached()Z
 HSPLcom/android/server/am/ProcessRecord;->isCrashing()Z
 PLcom/android/server/am/ProcessRecord;->isDebugging()Z
 PLcom/android/server/am/ProcessRecord;->isInterestingForBackgroundTraces()Z
-HSPLcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
+HPLcom/android/server/am/ProcessRecord;->isInterestingToUserLocked()Z
 PLcom/android/server/am/ProcessRecord;->isMonitorCpuUsage()Z
-HSPLcom/android/server/am/ProcessRecord;->isNotResponding()Z
+HPLcom/android/server/am/ProcessRecord;->isNotResponding()Z
 HSPLcom/android/server/am/ProcessRecord;->isPersistent()Z
 HSPLcom/android/server/am/ProcessRecord;->isRemoved()Z
 PLcom/android/server/am/ProcessRecord;->isSilentAnr()Z
 HSPLcom/android/server/am/ProcessRecord;->isUsingWrapper()Z
-HSPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V
+HPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;IIZ)V
+PLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;IZ)V
+HPLcom/android/server/am/ProcessRecord;->kill(Ljava/lang/String;Z)V
 HSPLcom/android/server/am/ProcessRecord;->makeActive(Landroid/app/IApplicationThread;Lcom/android/server/am/ProcessStatsService;)V
 HSPLcom/android/server/am/ProcessRecord;->makeAdjReason()Ljava/lang/String;
+PLcom/android/server/am/ProcessRecord;->makeAppNotRespondingLocked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/am/ProcessRecord;->makeInactive(Lcom/android/server/am/ProcessStatsService;)V
 HSPLcom/android/server/am/ProcessRecord;->modifyRawOomAdj(I)I
-HSPLcom/android/server/am/ProcessRecord;->onStartActivity(IZ)V
+HSPLcom/android/server/am/ProcessRecord;->onStartActivity(IZLjava/lang/String;J)V
 HSPLcom/android/server/am/ProcessRecord;->removeAllowBackgroundActivityStartsToken(Landroid/os/Binder;)V
+HSPLcom/android/server/am/ProcessRecord;->resetCachedInfo()V
 HSPLcom/android/server/am/ProcessRecord;->resetPackageList(Lcom/android/server/am/ProcessStatsService;)V
-PLcom/android/server/am/ProcessRecord;->scheduleCrash(Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessRecord;->scheduleCrash(Ljava/lang/String;)V
+PLcom/android/server/am/ProcessRecord;->setActiveInstrumentation(Lcom/android/server/am/ActiveInstrumentation;)V
+HSPLcom/android/server/am/ProcessRecord;->setCached(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setCrashing(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setCurProcState(I)V
 HSPLcom/android/server/am/ProcessRecord;->setCurRawAdj(I)V
@@ -3558,62 +7804,75 @@
 HSPLcom/android/server/am/ProcessRecord;->setFgInteractionTime(J)V
 HSPLcom/android/server/am/ProcessRecord;->setHasClientActivities(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setHasForegroundActivities(Z)V
-HSPLcom/android/server/am/ProcessRecord;->setHasForegroundServices(ZI)V
+PLcom/android/server/am/ProcessRecord;->setHasForegroundServices(ZI)V
 PLcom/android/server/am/ProcessRecord;->setHasOverlayUi(Z)V
-HSPLcom/android/server/am/ProcessRecord;->setHasTopUi(Z)V
+PLcom/android/server/am/ProcessRecord;->setHasTopUi(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setInteractionEventTime(J)V
 HSPLcom/android/server/am/ProcessRecord;->setNotResponding(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setPendingUiClean(Z)V
-HSPLcom/android/server/am/ProcessRecord;->setPendingUiCleanAndForceProcessStateUpTo(I)V
+HPLcom/android/server/am/ProcessRecord;->setPendingUiCleanAndForceProcessStateUpTo(I)V
 HSPLcom/android/server/am/ProcessRecord;->setPersistent(Z)V
 HSPLcom/android/server/am/ProcessRecord;->setPid(I)V
 PLcom/android/server/am/ProcessRecord;->setReportedForegroundServiceTypes(I)V
 HSPLcom/android/server/am/ProcessRecord;->setReportedProcState(I)V
 HSPLcom/android/server/am/ProcessRecord;->setRequiredAbi(Ljava/lang/String;)V
-HSPLcom/android/server/am/ProcessRecord;->setStartParams(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/am/ProcessRecord;->setRunningRemoteAnimation(Z)V
+HSPLcom/android/server/am/ProcessRecord;->setStartParams(ILcom/android/server/am/HostingRecord;Ljava/lang/String;J)V
 HSPLcom/android/server/am/ProcessRecord;->setUsingWrapper(Z)V
-HSPLcom/android/server/am/ProcessRecord;->setWhenUnimportant(J)V
-HSPLcom/android/server/am/ProcessRecord;->startAppProblemLocked()V
+HPLcom/android/server/am/ProcessRecord;->setWhenUnimportant(J)V
+PLcom/android/server/am/ProcessRecord;->startAppProblemLocked()V
 HSPLcom/android/server/am/ProcessRecord;->toShortString()Ljava/lang/String;
 HSPLcom/android/server/am/ProcessRecord;->toShortString(Ljava/lang/StringBuilder;)V
 HSPLcom/android/server/am/ProcessRecord;->toString()Ljava/lang/String;
 HSPLcom/android/server/am/ProcessRecord;->unlinkDeathRecipient()V
+HSPLcom/android/server/am/ProcessRecord;->updateBoundClientUids()V
 PLcom/android/server/am/ProcessRecord;->updateHasAboveClientLocked()V
-HSPLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZZ)V
+HSPLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZ)V
 HSPLcom/android/server/am/ProcessRecord;->updateServiceConnectionActivities()V
-PLcom/android/server/am/ProcessRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/am/ProcessRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/am/ProcessStatsService$1;-><init>(Lcom/android/server/am/ProcessStatsService;)V
+HPLcom/android/server/am/ProcessStatsService$1;->run()V
+HPLcom/android/server/am/ProcessStatsService$2;-><init>(Lcom/android/server/am/ProcessStatsService;J)V
 PLcom/android/server/am/ProcessStatsService$2;->run()V
+PLcom/android/server/am/ProcessStatsService$4;-><init>(Lcom/android/server/am/ProcessStatsService;Ljava/lang/String;[Landroid/os/ParcelFileDescriptor;[B)V
 PLcom/android/server/am/ProcessStatsService$4;->run()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;->addSysMemUsageLocked(JJJJJ)V
-PLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessStatsService;->addSysMemUsageLocked(JJJJJ)V
+HPLcom/android/server/am/ProcessStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/am/ProcessStatsService;->dumpAggregatedStats(Landroid/util/proto/ProtoOutputStream;JIJ)V
 PLcom/android/server/am/ProcessStatsService;->dumpAggregatedStats(Ljava/io/PrintWriter;JJLjava/lang/String;ZZZZZI)V
-PLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/am/ProcessStatsService;->dumpInner(Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/am/ProcessStatsService;->dumpProto(Ljava/io/FileDescriptor;)V
-PLcom/android/server/am/ProcessStatsService;->getCommittedFiles(IZZ)Ljava/util/ArrayList;
+HPLcom/android/server/am/ProcessStatsService;->getCommittedFiles(IZZ)Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProcessStatsService;->getMemFactorLocked()I
-PLcom/android/server/am/ProcessStatsService;->getStatsOverTime(J)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/am/ProcessStatsService;->performWriteState(J)V
+HSPLcom/android/server/am/ProcessStatsService;->getProcessStateLocked(Ljava/lang/String;IJLjava/lang/String;)Lcom/android/internal/app/procstats/ProcessState;
+HSPLcom/android/server/am/ProcessStatsService;->getServiceStateLocked(Ljava/lang/String;IJLjava/lang/String;Ljava/lang/String;)Lcom/android/internal/app/procstats/ServiceState;
+HPLcom/android/server/am/ProcessStatsService;->getStatsOverTime(J)Landroid/os/ParcelFileDescriptor;
+HSPLcom/android/server/am/ProcessStatsService;->isMemFactorLowered()Z
+HPLcom/android/server/am/ProcessStatsService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/am/ProcessStatsService;->performWriteState(J)V
 PLcom/android/server/am/ProcessStatsService;->readLocked(Lcom/android/internal/app/procstats/ProcessStats;Landroid/util/AtomicFile;)Z
 HSPLcom/android/server/am/ProcessStatsService;->setMemFactorLocked(IZJ)Z
 HSPLcom/android/server/am/ProcessStatsService;->shouldWriteNowLocked(J)Z
-PLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLocked()V
+PLcom/android/server/am/ProcessStatsService;->shutdownLocked()V
+HPLcom/android/server/am/ProcessStatsService;->trimHistoricStatesWriteLocked()V
 HSPLcom/android/server/am/ProcessStatsService;->updateFile()V
+HSPLcom/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
-PLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V
+PLcom/android/server/am/ProcessStatsService;->writeStateAsyncLocked()V
+PLcom/android/server/am/ProcessStatsService;->writeStateLocked(Z)V
+HPLcom/android/server/am/ProcessStatsService;->writeStateLocked(ZZ)V
+PLcom/android/server/am/ProcessStatsService;->writeStateSyncLocked()V
 HSPLcom/android/server/am/ProviderMap;-><init>(Lcom/android/server/am/ActivityManagerService;)V
-HSPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z
-HSPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
-PLcom/android/server/am/ProviderMap;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
-PLcom/android/server/am/ProviderMap;->dumpProvider(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;[Ljava/lang/String;Z)V
+HPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZILjava/util/ArrayList;)Z
+HPLcom/android/server/am/ProviderMap;->collectPackageProvidersLocked(Ljava/lang/String;Ljava/util/Set;ZZLjava/util/HashMap;Ljava/util/ArrayList;)Z
+HPLcom/android/server/am/ProviderMap;->dumpProvider(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZ)Z
+HPLcom/android/server/am/ProviderMap;->dumpProvider(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;[Ljava/lang/String;Z)V
 PLcom/android/server/am/ProviderMap;->dumpProviderProto(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)Z
-PLcom/android/server/am/ProviderMap;->dumpProvidersByClassLocked(Ljava/io/PrintWriter;ZLjava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
-PLcom/android/server/am/ProviderMap;->dumpProvidersByNameLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
+HPLcom/android/server/am/ProviderMap;->dumpProvidersByClassLocked(Ljava/io/PrintWriter;ZLjava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
+HPLcom/android/server/am/ProviderMap;->dumpProvidersByNameLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;ZLjava/util/HashMap;)Z
 PLcom/android/server/am/ProviderMap;->dumpProvidersLocked(Ljava/io/PrintWriter;ZLjava/lang/String;)Z
-PLcom/android/server/am/ProviderMap;->dumpToTransferPipe(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;[Ljava/lang/String;)V
+HPLcom/android/server/am/ProviderMap;->dumpToTransferPipe(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Lcom/android/server/am/ContentProviderRecord;[Ljava/lang/String;)V
 HSPLcom/android/server/am/ProviderMap;->getProviderByClass(Landroid/content/ComponentName;I)Lcom/android/server/am/ContentProviderRecord;
 HSPLcom/android/server/am/ProviderMap;->getProviderByName(Ljava/lang/String;I)Lcom/android/server/am/ContentProviderRecord;
 HSPLcom/android/server/am/ProviderMap;->getProvidersByClass(I)Ljava/util/HashMap;
@@ -3621,556 +7880,1332 @@
 PLcom/android/server/am/ProviderMap;->getProvidersForName(Ljava/lang/String;)Ljava/util/ArrayList;
 HSPLcom/android/server/am/ProviderMap;->putProviderByClass(Landroid/content/ComponentName;Lcom/android/server/am/ContentProviderRecord;)V
 HSPLcom/android/server/am/ProviderMap;->putProviderByName(Ljava/lang/String;Lcom/android/server/am/ContentProviderRecord;)V
-HSPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
-HSPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByClass(Landroid/content/ComponentName;I)V
+HPLcom/android/server/am/ProviderMap;->removeProviderByName(Ljava/lang/String;I)V
 HSPLcom/android/server/am/ReceiverList;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/server/am/ProcessRecord;IIILandroid/content/IIntentReceiver;)V
+PLcom/android/server/am/ReceiverList;->binderDied()V
 HSPLcom/android/server/am/ReceiverList;->containsFilter(Landroid/content/IntentFilter;)Z
-PLcom/android/server/am/ReceiverList;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/ReceiverList;->dumpLocal(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ReceiverList;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/am/ReceiverList;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/ReceiverList;->dumpLocal(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/am/ReceiverList;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/am/ReceiverList;->hashCode()I
-HSPLcom/android/server/am/ReceiverList;->toString()Ljava/lang/String;
-PLcom/android/server/am/ReceiverList;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/am/ServiceRecord$1;->run()V
-PLcom/android/server/am/ServiceRecord$2;->run()V
+HPLcom/android/server/am/ReceiverList;->toString()Ljava/lang/String;
+HPLcom/android/server/am/ServiceRecord$1;-><init>(Lcom/android/server/am/ServiceRecord;Landroid/app/Notification;Ljava/lang/String;IIILcom/android/server/am/ServiceRecord;)V
+HPLcom/android/server/am/ServiceRecord$1;->run()V
+HPLcom/android/server/am/ServiceRecord$2;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;III)V
+HPLcom/android/server/am/ServiceRecord$2;->run()V
 PLcom/android/server/am/ServiceRecord$3;-><init>(Lcom/android/server/am/ServiceRecord;Ljava/lang/String;II)V
 PLcom/android/server/am/ServiceRecord$3;->run()V
 HSPLcom/android/server/am/ServiceRecord$StartItem;-><init>(Lcom/android/server/am/ServiceRecord;ZILandroid/content/Intent;Lcom/android/server/uri/NeededUriGrants;I)V
-PLcom/android/server/am/ServiceRecord$StartItem;->getUriPermissionsLocked()Lcom/android/server/uri/UriPermissionOwner;
-HSPLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
-HSPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/ComponentName;Landroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;)V
+HPLcom/android/server/am/ServiceRecord$StartItem;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JJ)V
+PLcom/android/server/am/ServiceRecord$StartItem;->removeUriPermissionsLocked()V
+PLcom/android/server/am/ServiceRecord$StartItem;->toString()Ljava/lang/String;
+HSPLcom/android/server/am/ServiceRecord;-><init>(Lcom/android/server/am/ActivityManagerService;Lcom/android/internal/os/BatteryStatsImpl$Uid$Pkg$Serv;Landroid/content/ComponentName;Landroid/content/ComponentName;Ljava/lang/String;ILandroid/content/Intent$FilterComparison;Landroid/content/pm/ServiceInfo;ZLjava/lang/Runnable;)V
+HSPLcom/android/server/am/ServiceRecord;->addConnection(Landroid/os/IBinder;Lcom/android/server/am/ConnectionRecord;)V
+PLcom/android/server/am/ServiceRecord;->canStopIfKilled(Z)Z
+HPLcom/android/server/am/ServiceRecord;->cancelNotification()V
+HSPLcom/android/server/am/ServiceRecord;->clearDeliveredStartsLocked()V
 HSPLcom/android/server/am/ServiceRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/am/ServiceRecord;->dumpStartList(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/List;J)V
+HPLcom/android/server/am/ServiceRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/ServiceRecord;->dumpStartList(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/List;J)V
 HSPLcom/android/server/am/ServiceRecord;->findDeliveredStart(IZZ)Lcom/android/server/am/ServiceRecord$StartItem;
-PLcom/android/server/am/ServiceRecord;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/am/ServiceRecord;->forceClearTracker()V
+HSPLcom/android/server/am/ServiceRecord;->getComponentName()Landroid/content/ComponentName;
+HSPLcom/android/server/am/ServiceRecord;->getConnections()Landroid/util/ArrayMap;
+HSPLcom/android/server/am/ServiceRecord;->getLastStartId()I
 HSPLcom/android/server/am/ServiceRecord;->getTracker()Lcom/android/internal/app/procstats/ServiceState;
 HSPLcom/android/server/am/ServiceRecord;->hasAutoCreateConnections()Z
-HSPLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V
+PLcom/android/server/am/ServiceRecord;->lambda$whitelistBgActivityStartsOnServiceStart$0$ServiceRecord()V
+HSPLcom/android/server/am/ServiceRecord;->makeNextStartId()I
+HPLcom/android/server/am/ServiceRecord;->makeRestarting(IJ)V
 HSPLcom/android/server/am/ServiceRecord;->postNotification()V
+HSPLcom/android/server/am/ServiceRecord;->removeConnection(Landroid/os/IBinder;)V
+HSPLcom/android/server/am/ServiceRecord;->resetRestartCounter()V
 HSPLcom/android/server/am/ServiceRecord;->retrieveAppBindingLocked(Landroid/content/Intent;Lcom/android/server/am/ProcessRecord;)Lcom/android/server/am/AppBindRecord;
-HSPLcom/android/server/am/ServiceRecord;->setHasBindingWhitelistingBgActivityStarts(Z)V
+HPLcom/android/server/am/ServiceRecord;->setHasBindingWhitelistingBgActivityStarts(Z)V
+PLcom/android/server/am/ServiceRecord;->setHasStartedWhitelistingBgActivityStarts(Z)V
 HSPLcom/android/server/am/ServiceRecord;->setProcess(Lcom/android/server/am/ProcessRecord;)V
+PLcom/android/server/am/ServiceRecord;->stripForegroundServiceFlagFromNotification()V
 HSPLcom/android/server/am/ServiceRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/ServiceRecord;->updateHasBindingWhitelistingBgActivityStarts()V
-HSPLcom/android/server/am/ServiceRecord;->updateWhitelistManager()V
-PLcom/android/server/am/ServiceRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/am/SettingsToPropertiesMapper;->lambda$updatePropertiesFromSettings$0$SettingsToPropertiesMapper(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/ServiceRecord;->updateHasBindingWhitelistingBgActivityStarts()V
+HPLcom/android/server/am/ServiceRecord;->updateParentProcessBgActivityStartsWhitelistingToken()V
+PLcom/android/server/am/ServiceRecord;->updateWhitelistManager()V
+PLcom/android/server/am/ServiceRecord;->whitelistBgActivityStartsOnServiceStart()V
+HSPLcom/android/server/am/SettingsToPropertiesMapper$1;-><init>(Lcom/android/server/am/SettingsToPropertiesMapper;Landroid/os/Handler;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/SettingsToPropertiesMapper;-><clinit>()V
+HSPLcom/android/server/am/SettingsToPropertiesMapper;-><init>(Landroid/content/ContentResolver;[Ljava/lang/String;[Ljava/lang/String;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;->getResetFlagsFileContent()Ljava/lang/String;
+PLcom/android/server/am/SettingsToPropertiesMapper;->getResetNativeCategories()[Ljava/lang/String;
+HSPLcom/android/server/am/SettingsToPropertiesMapper;->isNativeFlagsResetPerformed()Z
+HPLcom/android/server/am/SettingsToPropertiesMapper;->lambda$updatePropertiesFromSettings$0$SettingsToPropertiesMapper(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/am/SettingsToPropertiesMapper;->log(Ljava/lang/String;)V
 HSPLcom/android/server/am/SettingsToPropertiesMapper;->makePropertyName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/am/SettingsToPropertiesMapper;->setProperty(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/SettingsToPropertiesMapper;->start(Landroid/content/ContentResolver;)Lcom/android/server/am/SettingsToPropertiesMapper;
 HSPLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertiesFromSettings()V
 HSPLcom/android/server/am/SettingsToPropertiesMapper;->updatePropertyFromSetting(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/am/UidRecord$ChangeItem;-><init>()V
+HSPLcom/android/server/am/UidRecord;-><clinit>()V
+HSPLcom/android/server/am/UidRecord;-><init>(I)V
+HPLcom/android/server/am/UidRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/UidRecord;->getCurProcState()I
 HSPLcom/android/server/am/UidRecord;->reset()V
+HSPLcom/android/server/am/UidRecord;->setCurProcState(I)V
 HSPLcom/android/server/am/UidRecord;->toString()Ljava/lang/String;
-PLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
-PLcom/android/server/am/UidRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/am/UidRecord;->updateHasInternetPermission()V
+HSPLcom/android/server/am/UidRecord;->updateLastDispatchedProcStateSeq(I)V
+PLcom/android/server/am/UserController$1;-><init>(Lcom/android/server/am/UserController;Landroid/content/pm/UserInfo;)V
+PLcom/android/server/am/UserController$1;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/UserController$2;-><init>(Lcom/android/server/am/UserController;I)V
 PLcom/android/server/am/UserController$2;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/UserController$4;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController$4;-><init>(Lcom/android/server/am/UserController;ILcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/UserController$4;->lambda$performReceive$0$UserController$4(ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController$4;->lambda$performReceive$0$UserController$4(ILcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/UserController$4;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/UserController$5$1;-><init>(Lcom/android/server/am/UserController$5;)V
+PLcom/android/server/am/UserController$5$1;->run()V
+PLcom/android/server/am/UserController$5;-><init>(Lcom/android/server/am/UserController;Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController$5;-><init>(Lcom/android/server/am/UserController;Lcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/UserController$5;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
 PLcom/android/server/am/UserController$6;-><init>(Lcom/android/server/am/UserController;)V
 PLcom/android/server/am/UserController$6;->performReceive(Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;ZZI)V
+PLcom/android/server/am/UserController$Injector$1;-><init>(Lcom/android/server/am/UserController$Injector;Lcom/android/server/am/ActivityManagerService;ILcom/android/internal/util/ProgressReporter;ZLjava/lang/Runnable;)V
 PLcom/android/server/am/UserController$Injector$1;->onFinished()V
+HSPLcom/android/server/am/UserController$Injector;-><init>(Lcom/android/server/am/ActivityManagerService;)V
+PLcom/android/server/am/UserController$Injector;->activityManagerForceStopPackage(ILjava/lang/String;)V
+PLcom/android/server/am/UserController$Injector;->activityManagerOnUserStopped(I)V
 PLcom/android/server/am/UserController$Injector;->batteryStatsServiceNoteEvent(ILjava/lang/String;I)V
 HSPLcom/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
 HSPLcom/android/server/am/UserController$Injector;->checkCallingPermission(Ljava/lang/String;)I
 HSPLcom/android/server/am/UserController$Injector;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+PLcom/android/server/am/UserController$Injector;->clearBroadcastQueueForUser(I)V
 HSPLcom/android/server/am/UserController$Injector;->getContext()Landroid/content/Context;
 HSPLcom/android/server/am/UserController$Injector;->getHandler(Landroid/os/Handler$Callback;)Landroid/os/Handler;
+PLcom/android/server/am/UserController$Injector;->getKeyguardManager()Landroid/app/KeyguardManager;
 HSPLcom/android/server/am/UserController$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
-HSPLcom/android/server/am/UserController$Injector;->getSystemServiceManager()Lcom/android/server/SystemServiceManager;
+PLcom/android/server/am/UserController$Injector;->getStorageManager()Landroid/os/storage/IStorageManager;
+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;
 HSPLcom/android/server/am/UserController$Injector;->getUserManager()Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
-HSPLcom/android/server/am/UserController$Injector;->getWindowManager()Lcom/android/server/wm/WindowManagerService;
-HSPLcom/android/server/am/UserController$Injector;->installEncryptionUnawareProviders(I)V
+PLcom/android/server/am/UserController$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
+PLcom/android/server/am/UserController$Injector;->getWindowManager()Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/am/UserController$Injector;->installEncryptionUnawareProviders(I)V
 HSPLcom/android/server/am/UserController$Injector;->isCallerRecents(I)Z
-HSPLcom/android/server/am/UserController$Injector;->isFirstBootOrUpgrade()Z
-HSPLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z
-HSPLcom/android/server/am/UserController$Injector;->loadUserRecents(I)V
+PLcom/android/server/am/UserController$Injector;->isFirstBootOrUpgrade()Z
+PLcom/android/server/am/UserController$Injector;->isRuntimeRestarted()Z
+PLcom/android/server/am/UserController$Injector;->lambda$startUserWidgets$0(Landroid/appwidget/AppWidgetManagerInternal;I)V
+PLcom/android/server/am/UserController$Injector;->loadUserRecents(I)V
 HSPLcom/android/server/am/UserController$Injector;->reportCurWakefulnessUsageEvent()V
-HSPLcom/android/server/am/UserController$Injector;->sendPreBootBroadcast(IZLjava/lang/Runnable;)V
-HSPLcom/android/server/am/UserController$Injector;->startPersistentApps(I)V
-HSPLcom/android/server/am/UserController$Injector;->startUserWidgets(I)V
+PLcom/android/server/am/UserController$Injector;->sendPreBootBroadcast(IZLjava/lang/Runnable;)V
+PLcom/android/server/am/UserController$Injector;->stackSupervisorRemoveUser(I)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;->systemServiceManagerCleanupUser(I)V
+HSPLcom/android/server/am/UserController$UserProgressListener;-><init>()V
 HSPLcom/android/server/am/UserController$UserProgressListener;-><init>(Lcom/android/server/am/UserController$1;)V
-HSPLcom/android/server/am/UserController$UserProgressListener;->onFinished(ILandroid/os/Bundle;)V
-HSPLcom/android/server/am/UserController$UserProgressListener;->onProgress(IILandroid/os/Bundle;)V
-HSPLcom/android/server/am/UserController$UserProgressListener;->onStarted(ILandroid/os/Bundle;)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
+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;->dispatchForegroundProfileChanged(I)V
-HSPLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V
-HSPLcom/android/server/am/UserController;->dump(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/am/UserController;->access$100(Lcom/android/server/am/UserController;)Lcom/android/server/am/UserController$Injector;
+PLcom/android/server/am/UserController;->access$200(Lcom/android/server/am/UserController;)Landroid/os/Handler;
+HPLcom/android/server/am/UserController;->canInteractWithAcrossProfilesPermission(IZII)Z
+HPLcom/android/server/am/UserController;->canInteractWithAcrossProfilesPermission(IZIILjava/lang/String;)Z
+HSPLcom/android/server/am/UserController;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/am/UserController;->dispatchForegroundProfileChanged(I)V
+PLcom/android/server/am/UserController;->dispatchLockedBootComplete(I)V
+PLcom/android/server/am/UserController;->dispatchUserLocking(ILjava/util/List;)V
+HPLcom/android/server/am/UserController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/am/UserController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/am/UserController;->enforceShellRestriction(Ljava/lang/String;I)V
 HSPLcom/android/server/am/UserController;->ensureNotSpecialUser(I)V
 HSPLcom/android/server/am/UserController;->exists(I)Z
+PLcom/android/server/am/UserController;->expandUserId(I)[I
 PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V
-HSPLcom/android/server/am/UserController;->finishUserUnlocked(Lcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;->finishUserUnlockedCompleted(Lcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)Z
+PLcom/android/server/am/UserController;->finishUserBoot(Lcom/android/server/am/UserState;Landroid/content/IIntentReceiver;)V
+PLcom/android/server/am/UserController;->finishUserStopped(Lcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->finishUserStopped(Lcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/UserController;->finishUserStopping(ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->finishUserStopping(ILcom/android/server/am/UserState;Z)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
+HPLcom/android/server/am/UserController;->finishUserUnlocking(Lcom/android/server/am/UserState;)Z
+PLcom/android/server/am/UserController;->forceStopUser(ILjava/lang/String;)V
 PLcom/android/server/am/UserController;->getCurrentOrTargetUserId()I
+PLcom/android/server/am/UserController;->getCurrentOrTargetUserIdLU()I
 HSPLcom/android/server/am/UserController;->getCurrentProfileIds()[I
 HSPLcom/android/server/am/UserController;->getCurrentUser()Landroid/content/pm/UserInfo;
 HSPLcom/android/server/am/UserController;->getCurrentUserId()I
-HSPLcom/android/server/am/UserController;->getCurrentUserIdLU()I
+PLcom/android/server/am/UserController;->getMaxRunningUsers()I
 HSPLcom/android/server/am/UserController;->getStartedUserArray()[I
 HSPLcom/android/server/am/UserController;->getStartedUserState(I)Lcom/android/server/am/UserState;
 HSPLcom/android/server/am/UserController;->getUserInfo(I)Landroid/content/pm/UserInfo;
 HSPLcom/android/server/am/UserController;->getUsers()[I
+PLcom/android/server/am/UserController;->getUsersToStopLU(I)[I
 HSPLcom/android/server/am/UserController;->handleIncomingUser(IIIZILjava/lang/String;Ljava/lang/String;)I
-HSPLcom/android/server/am/UserController;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/am/UserController;->handleMessage(Landroid/os/Message;)Z
 HSPLcom/android/server/am/UserController;->hasStartedUserState(I)Z
 PLcom/android/server/am/UserController;->hasUserRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/am/UserController;->isCurrentProfile(I)Z
+HPLcom/android/server/am/UserController;->isCurrentProfile(I)Z
+PLcom/android/server/am/UserController;->isCurrentUserLU(I)Z
 HSPLcom/android/server/am/UserController;->isSameProfileGroup(II)Z
 HSPLcom/android/server/am/UserController;->isUserOrItsParentRunning(I)Z
 HSPLcom/android/server/am/UserController;->isUserRunning(II)Z
+PLcom/android/server/am/UserController;->lambda$dispatchUserLocking$6$UserController(ILjava/util/List;)V
+PLcom/android/server/am/UserController;->lambda$finishUserStopped$6$UserController(IILjava/util/ArrayList;)V
 PLcom/android/server/am/UserController;->lambda$finishUserUnlocked$2$UserController(Lcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;->lambda$finishUserUnlocking$1$UserController(ILcom/android/server/am/UserState;)V
-HSPLcom/android/server/am/UserController;->lambda$handleMessage$8$UserController(I)V
-HSPLcom/android/server/am/UserController;->lambda$scheduleStartProfiles$6$UserController()V
-HSPLcom/android/server/am/UserController;->notifyFinished(ILandroid/os/IProgressListener;)V
+PLcom/android/server/am/UserController;->lambda$finishUserUnlockedCompleted$3$UserController(Landroid/content/Intent;III)V
+PLcom/android/server/am/UserController;->lambda$finishUserUnlocking$1$UserController(ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->lambda$handleMessage$9$UserController(I)V
+PLcom/android/server/am/UserController;->lambda$scheduleStartProfiles$7$UserController()V
+PLcom/android/server/am/UserController;->lambda$stopSingleUserLU$5$UserController(ILcom/android/server/am/UserState;)V
+PLcom/android/server/am/UserController;->lambda$stopSingleUserLU$5$UserController(ILcom/android/server/am/UserState;Z)V
+PLcom/android/server/am/UserController;->maybeUnlockUser(I)Z
+PLcom/android/server/am/UserController;->notifyFinished(ILandroid/os/IProgressListener;)V
 HSPLcom/android/server/am/UserController;->onSystemReady()V
 HSPLcom/android/server/am/UserController;->registerUserSwitchObserver(Landroid/app/IUserSwitchObserver;Ljava/lang/String;)V
-HSPLcom/android/server/am/UserController;->scheduleStartProfiles()V
-HSPLcom/android/server/am/UserController;->sendBootCompleted(Landroid/content/IIntentReceiver;)V
-PLcom/android/server/am/UserController;->sendForegroundProfileChanged(I)V
+PLcom/android/server/am/UserController;->scheduleStartProfiles()V
+PLcom/android/server/am/UserController;->sendBootCompleted(Landroid/content/IIntentReceiver;)V
+HPLcom/android/server/am/UserController;->sendForegroundProfileChanged(I)V
 HSPLcom/android/server/am/UserController;->sendUserSwitchBroadcasts(II)V
+HSPLcom/android/server/am/UserController;->setInitialConfig(ZIZ)V
 HSPLcom/android/server/am/UserController;->setSwitchingFromSystemUserMessage(Ljava/lang/String;)V
 HSPLcom/android/server/am/UserController;->setSwitchingToSystemUserMessage(Ljava/lang/String;)V
 HSPLcom/android/server/am/UserController;->shouldConfirmCredentials(I)Z
-HSPLcom/android/server/am/UserController;->startProfiles()V
-HSPLcom/android/server/am/UserController;->startUser(IZ)Z
-HSPLcom/android/server/am/UserController;->startUser(IZLandroid/os/IProgressListener;)Z
-PLcom/android/server/am/UserController;->unlockUser(I[B[BLandroid/os/IProgressListener;)Z
-HSPLcom/android/server/am/UserController;->unlockUserCleared(I[B[BLandroid/os/IProgressListener;)Z
-HSPLcom/android/server/am/UserController;->unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
+PLcom/android/server/am/UserController;->startProfiles()V
+PLcom/android/server/am/UserController;->startUser(IZ)Z
+PLcom/android/server/am/UserController;->startUser(IZLandroid/os/IProgressListener;)Z
+PLcom/android/server/am/UserController;->startUserInternal(IZLandroid/os/IProgressListener;Lcom/android/server/utils/TimingsTraceAndSlog;)Z
+PLcom/android/server/am/UserController;->stopSingleUserLU(ILandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)V
+PLcom/android/server/am/UserController;->stopSingleUserLU(IZLandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)V
+PLcom/android/server/am/UserController;->stopUser(IZLandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)I
+PLcom/android/server/am/UserController;->stopUser(IZZLandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)I
+PLcom/android/server/am/UserController;->stopUsersLU(IZLandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)I
+PLcom/android/server/am/UserController;->stopUsersLU(IZZLandroid/app/IStopUserCallback;Lcom/android/server/am/UserState$KeyEvictedCallback;)I
+HPLcom/android/server/am/UserController;->unlockUser(I[B[BLandroid/os/IProgressListener;)Z
+HPLcom/android/server/am/UserController;->unlockUserCleared(I[B[BLandroid/os/IProgressListener;)Z
+HPLcom/android/server/am/UserController;->unregisterUserSwitchObserver(Landroid/app/IUserSwitchObserver;)V
 HSPLcom/android/server/am/UserController;->unsafeConvertIncomingUser(I)I
 HSPLcom/android/server/am/UserController;->updateCurrentProfileIds()V
 HSPLcom/android/server/am/UserController;->updateStartedUserArrayLU()V
-PLcom/android/server/am/UserController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/am/UserController;->updateUserToLockLU(I)I
+PLcom/android/server/am/UserController;->updateUserToLockLU(IZ)I
 HSPLcom/android/server/am/UserState;-><init>(Landroid/os/UserHandle;)V
-HSPLcom/android/server/am/UserState;->setState(I)V
-HSPLcom/android/server/am/UserState;->setState(II)Z
-HSPLcom/android/server/am/UserState;->stateToString(I)Ljava/lang/String;
+PLcom/android/server/am/UserState;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/am/UserState;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/am/UserState;->setState(I)V
+PLcom/android/server/am/UserState;->setState(II)Z
+PLcom/android/server/am/UserState;->stateToProtoEnum(I)I
+HPLcom/android/server/am/UserState;->stateToString(I)Ljava/lang/String;
+PLcom/android/server/appbinding/-$$Lambda$AppBindingService$C9KbqX5cmsR3luJhFKt2Gpj0uLc;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/appbinding/-$$Lambda$AppBindingService$C9KbqX5cmsR3luJhFKt2Gpj0uLc;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/appbinding/-$$Lambda$AppBindingService$D_3boeCn8eAANOp2ZDk6OC2rNaI;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
+PLcom/android/server/appbinding/-$$Lambda$AppBindingService$D_3boeCn8eAANOp2ZDk6OC2rNaI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appbinding/-$$Lambda$AppBindingService$_RrDLXlhUGfI3nzAdSavPUgy7uo;-><init>(I)V
+PLcom/android/server/appbinding/-$$Lambda$AppBindingService$_RrDLXlhUGfI3nzAdSavPUgy7uo;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/appbinding/-$$Lambda$xkEFYM78dwFMyAjWJXkB7AxgA2c;-><clinit>()V
 HSPLcom/android/server/appbinding/-$$Lambda$xkEFYM78dwFMyAjWJXkB7AxgA2c;-><init>()V
+HSPLcom/android/server/appbinding/-$$Lambda$xkEFYM78dwFMyAjWJXkB7AxgA2c;->accept(Ljava/lang/Object;)V
 HSPLcom/android/server/appbinding/AppBindingConstants;-><init>(Ljava/lang/String;)V
 PLcom/android/server/appbinding/AppBindingConstants;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/appbinding/AppBindingService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/appbinding/AppBindingConstants;->initializeFromString(Ljava/lang/String;)Lcom/android/server/appbinding/AppBindingConstants;
+HSPLcom/android/server/appbinding/AppBindingService$1;-><init>(Lcom/android/server/appbinding/AppBindingService;Landroid/os/Handler;)V
+HSPLcom/android/server/appbinding/AppBindingService$2;-><init>(Lcom/android/server/appbinding/AppBindingService;)V
+HPLcom/android/server/appbinding/AppBindingService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/appbinding/AppBindingService$AppServiceConnection;-><init>(Landroid/content/Context;ILcom/android/server/appbinding/AppBindingConstants;Landroid/os/Handler;Lcom/android/server/appbinding/finders/AppServiceFinder;Landroid/content/ComponentName;)V
+PLcom/android/server/appbinding/AppBindingService$AppServiceConnection;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/appbinding/AppBindingService$AppServiceConnection;->asInterface(Landroid/os/IBinder;)Ljava/lang/Object;
+PLcom/android/server/appbinding/AppBindingService$AppServiceConnection;->getBindFlags()I
+PLcom/android/server/appbinding/AppBindingService$AppServiceConnection;->getFinder()Lcom/android/server/appbinding/finders/AppServiceFinder;
+HSPLcom/android/server/appbinding/AppBindingService$Injector;-><init>()V
 HSPLcom/android/server/appbinding/AppBindingService$Injector;->getGlobalSettingString(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/appbinding/AppBindingService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
 HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService$Injector;)V
 HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;->onStart()V
 HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;->onStartUser(I)V
-HSPLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/appbinding/AppBindingService$Lifecycle;->onUnlockUser(I)V
 HSPLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;)V
+HSPLcom/android/server/appbinding/AppBindingService;-><init>(Lcom/android/server/appbinding/AppBindingService$Injector;Landroid/content/Context;Lcom/android/server/appbinding/AppBindingService$1;)V
+HSPLcom/android/server/appbinding/AppBindingService;->access$100(Lcom/android/server/appbinding/AppBindingService;I)V
+HSPLcom/android/server/appbinding/AppBindingService;->access$200(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->access$300(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->access$400(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->access$600(Lcom/android/server/appbinding/AppBindingService;I)V
+PLcom/android/server/appbinding/AppBindingService;->access$700(Lcom/android/server/appbinding/AppBindingService;Ljava/lang/String;I)V
 HSPLcom/android/server/appbinding/AppBindingService;->bindServicesLocked(ILcom/android/server/appbinding/finders/AppServiceFinder;Ljava/lang/String;)V
 PLcom/android/server/appbinding/AppBindingService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/appbinding/AppBindingService;->findConnectionLock(ILcom/android/server/appbinding/finders/AppServiceFinder;)Lcom/android/server/appbinding/AppBindingService$AppServiceConnection;
 PLcom/android/server/appbinding/AppBindingService;->findFinderLocked(ILjava/lang/String;)Lcom/android/server/appbinding/finders/AppServiceFinder;
+HSPLcom/android/server/appbinding/AppBindingService;->forAllAppsLocked(Ljava/util/function/Consumer;)V
 PLcom/android/server/appbinding/AppBindingService;->handlePackageAddedReplacing(Ljava/lang/String;I)V
+PLcom/android/server/appbinding/AppBindingService;->lambda$D_3boeCn8eAANOp2ZDk6OC2rNaI(Lcom/android/server/appbinding/AppBindingService;Lcom/android/server/appbinding/finders/AppServiceFinder;I)V
+PLcom/android/server/appbinding/AppBindingService;->lambda$dump$1(Ljava/io/PrintWriter;Lcom/android/server/appbinding/finders/AppServiceFinder;)V
+PLcom/android/server/appbinding/AppBindingService;->lambda$onUserRemoved$0(ILcom/android/server/appbinding/finders/AppServiceFinder;)V
+HPLcom/android/server/appbinding/AppBindingService;->onAppChanged(Lcom/android/server/appbinding/finders/AppServiceFinder;I)V
+HSPLcom/android/server/appbinding/AppBindingService;->onBootPhase(I)V
 HSPLcom/android/server/appbinding/AppBindingService;->onPhaseActivityManagerReady()V
 HSPLcom/android/server/appbinding/AppBindingService;->onPhaseThirdPartyAppsCanStart()V
 HSPLcom/android/server/appbinding/AppBindingService;->onStartUser(I)V
-HSPLcom/android/server/appbinding/AppBindingService;->onUnlockUser(I)V
+PLcom/android/server/appbinding/AppBindingService;->onStopUser(I)V
+PLcom/android/server/appbinding/AppBindingService;->onUnlockUser(I)V
+PLcom/android/server/appbinding/AppBindingService;->onUserRemoved(I)V
 HSPLcom/android/server/appbinding/AppBindingService;->rebindAllLocked(Ljava/lang/String;)V
 HSPLcom/android/server/appbinding/AppBindingService;->refreshConstants()V
 PLcom/android/server/appbinding/AppBindingService;->unbindServicesLocked(ILcom/android/server/appbinding/finders/AppServiceFinder;Ljava/lang/String;)V
 HSPLcom/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;
-HSPLcom/android/server/appbinding/finders/-$$Lambda$CarrierMessagingClientServiceFinder$HEVyQ3IEZ8Eseze74Vyp3NHEREg;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/appbinding/finders/-$$Lambda$CarrierMessagingClientServiceFinder$HEVyQ3IEZ8Eseze74Vyp3NHEREg;-><init>(Lcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;)V
+PLcom/android/server/appbinding/finders/-$$Lambda$CarrierMessagingClientServiceFinder$HEVyQ3IEZ8Eseze74Vyp3NHEREg;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
 HSPLcom/android/server/appbinding/finders/AppServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
 PLcom/android/server/appbinding/finders/AppServiceFinder;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/appbinding/finders/AppServiceFinder;->findService(ILandroid/content/pm/IPackageManager;Lcom/android/server/appbinding/AppBindingConstants;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/appbinding/finders/AppServiceFinder;->onUserRemoved(I)V
+HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;-><init>(Landroid/content/Context;Ljava/util/function/BiConsumer;Landroid/os/Handler;)V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->asInterface(Landroid/os/IBinder;)Landroid/service/carrier/ICarrierMessagingClientService;
 PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getAppDescription()Ljava/lang/String;
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getBindFlags(Lcom/android/server/appbinding/AppBindingConstants;)I
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceAction()Ljava/lang/String;
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServiceClass()Ljava/lang/Class;
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getServicePermission()Ljava/lang/String;
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->getTargetPackage(I)Ljava/lang/String;
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->isEnabled(Lcom/android/server/appbinding/AppBindingConstants;)Z
-HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->lambda$new$0$CarrierMessagingClientServiceFinder(Ljava/lang/String;Landroid/os/UserHandle;)V
+HPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->lambda$new$0$CarrierMessagingClientServiceFinder(Ljava/lang/String;Landroid/os/UserHandle;)V
 HSPLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->startMonitoring()V
-HSPLcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;-><init>()V
-HSPLcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;->validateService(Landroid/content/pm/ServiceInfo;)Ljava/lang/String;
+PLcom/android/server/appop/-$$Lambda$6fg-14Ev2L834_Mi1dl7XNuM-aI;-><clinit>()V
+PLcom/android/server/appop/-$$Lambda$6fg-14Ev2L834_Mi1dl7XNuM-aI;-><init>()V
+PLcom/android/server/appop/-$$Lambda$6fg-14Ev2L834_Mi1dl7XNuM-aI;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/-$$Lambda$9PbhNRcJKpFejdnfSDhPa_VHrMY;-><clinit>()V
+PLcom/android/server/appop/-$$Lambda$9PbhNRcJKpFejdnfSDhPa_VHrMY;-><init>()V
+PLcom/android/server/appop/-$$Lambda$9PbhNRcJKpFejdnfSDhPa_VHrMY;->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;)V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;-><clinit>()V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;-><init>()V
+HPLcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$FYLTtxqrHmv8Y5UdZ9ybXKsSJhs;-><clinit>()V
 HSPLcom/android/server/appop/-$$Lambda$AppOpsService$FYLTtxqrHmv8Y5UdZ9ybXKsSJhs;-><init>()V
 HSPLcom/android/server/appop/-$$Lambda$AppOpsService$FYLTtxqrHmv8Y5UdZ9ybXKsSJhs;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$FeatureOp$MYCtEUxKOBmIqr2Vx8cxdcUBE8E;-><clinit>()V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$FeatureOp$MYCtEUxKOBmIqr2Vx8cxdcUBE8E;-><init>()V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$FeatureOp$MYCtEUxKOBmIqr2Vx8cxdcUBE8E;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$GUeKjlbzT65s86vaxy5gvOajuhw;-><clinit>()V
 HSPLcom/android/server/appop/-$$Lambda$AppOpsService$GUeKjlbzT65s86vaxy5gvOajuhw;-><init>()V
 HSPLcom/android/server/appop/-$$Lambda$AppOpsService$GUeKjlbzT65s86vaxy5gvOajuhw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$JHjaGTUaQHugMX7TLydyaTrbPFw;-><init>(Landroid/os/RemoteCallback;)V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$JHjaGTUaQHugMX7TLydyaTrbPFw;->run()V
+PLcom/android/server/appop/-$$Lambda$AppOpsService$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ;-><clinit>()V
 PLcom/android/server/appop/-$$Lambda$AppOpsService$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ;-><init>()V
-PLcom/android/server/appop/-$$Lambda$AppOpsService$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;-><init>()V
-HSPLcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/appop/-$$Lambda$AppOpsService$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$zN6prp9KCBI96qJ_QVmqGh-kpB8;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/appop/-$$Lambda$AppOpsService$zN6prp9KCBI96qJ_QVmqGh-kpB8;->run()V
+PLcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;-><clinit>()V
+PLcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;-><init>()V
+HPLcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;->accept(Ljava/lang/Object;)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$ActiveCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsActiveCallback;III)V
-HSPLcom/android/server/appop/AppOpsService$ActiveCallback;->binderDied()V
+HSPLcom/android/server/appop/AppOpsService$2;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/appop/AppOpsService$3;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/appop/AppOpsService$4;-><init>(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService$4;->getPackageTrustedToInstallApps(Ljava/lang/String;I)I
+HPLcom/android/server/appop/AppOpsService$ActiveCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsActiveCallback;III)V
+PLcom/android/server/appop/AppOpsService$ActiveCallback;->binderDied()V
+PLcom/android/server/appop/AppOpsService$ActiveCallback;->destroy()V
 PLcom/android/server/appop/AppOpsService$ActiveCallback;->toString()Ljava/lang/String;
-HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->checkOperationUnchecked(IILjava/lang/String;)I
+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$1;)V
 HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setDeviceAndProfileOwners(Landroid/util/SparseIntArray;)V
-HSPLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setUidMode(III)V
-HSPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->hasRestriction(ILjava/lang/String;I)Z
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setModeIgnoringCallback(IILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->setUidModeIgnoringCallback(IIILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;->updateAppWidgetVisibility(Landroid/util/SparseArray;Z)V
+PLcom/android/server/appop/AppOpsService$ChangeRec;-><init>(IILjava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService$ClientRestrictionState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
+HSPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->destroy()V
+HPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->hasRestriction(ILjava/lang/String;I)Z
+HSPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->isDefault()Z
+HPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->isDefault([Z)Z
+PLcom/android/server/appop/AppOpsService$ClientRestrictionState;->removeUser(I)V
 HSPLcom/android/server/appop/AppOpsService$ClientRestrictionState;->setRestriction(IZ[Ljava/lang/String;I)Z
 HSPLcom/android/server/appop/AppOpsService$ClientState;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/IBinder;)V
 PLcom/android/server/appop/AppOpsService$ClientState;->binderDied()V
 PLcom/android/server/appop/AppOpsService$ClientState;->toString()Ljava/lang/String;
+HSPLcom/android/server/appop/AppOpsService$Constants;-><init>(Lcom/android/server/appop/AppOpsService;Landroid/os/Handler;)V
 PLcom/android/server/appop/AppOpsService$Constants;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/appop/AppOpsService$Constants;->startMonitoring(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/appop/AppOpsService$Constants;->updateConstants()V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;-><init>(Lcom/android/server/appop/AppOpsService$Op;)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$Op;)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;-><init>(Lcom/android/server/appop/AppOpsService;Ljava/lang/String;Lcom/android/server/appop/AppOpsService$Op;)V
+HPLcom/android/server/appop/AppOpsService$FeatureOp;->access$1200(Lcom/android/server/appop/AppOpsService$FeatureOp;)Landroid/util/ArrayMap;
+HPLcom/android/server/appop/AppOpsService$FeatureOp;->access$1300(Lcom/android/server/appop/AppOpsService$FeatureOp;)Landroid/util/ArrayMap;
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->accessed(ILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->accessed(JILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->accessed(JJILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->add(Landroid/util/LongSparseArray;Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->add(Lcom/android/server/appop/AppOpsService$FeatureOp;)V
+PLcom/android/server/appop/AppOpsService$FeatureOp;->continuing(JII)V
+PLcom/android/server/appop/AppOpsService$FeatureOp;->createFeatureEntryBuilderLocked()Landroid/app/AppOpsManager$OpFeatureEntry$Builder;
+HPLcom/android/server/appop/AppOpsService$FeatureOp;->createFeatureEntryLocked()Landroid/app/AppOpsManager$OpFeatureEntry;
+HPLcom/android/server/appop/AppOpsService$FeatureOp;->deepClone(Landroid/util/LongSparseArray;)Landroid/util/LongSparseArray;
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->finished(JJII)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->finished(Landroid/os/IBinder;)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->finished(Landroid/os/IBinder;Z)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->isRunning()Z
+PLcom/android/server/appop/AppOpsService$FeatureOp;->lambda$started$0(Lcom/android/server/appop/AppOpsService$FeatureOp;Landroid/os/IBinder;)V
+PLcom/android/server/appop/AppOpsService$FeatureOp;->onClientDeath(Landroid/os/IBinder;)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->onUidStateChanged(I)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->rejected(II)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->rejected(JII)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->rejected(JILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->running(JJII)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->started(JII)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->started(Landroid/os/IBinder;I)V
+HPLcom/android/server/appop/AppOpsService$FeatureOp;->started(Landroid/os/IBinder;IZ)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->updateAccessTimeAndDuration(JJII)V
+HSPLcom/android/server/appop/AppOpsService$FeatureOp;->updateProxyState(JILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;-><init>(JJLandroid/os/IBinder;Ljava/lang/Runnable;I)V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;-><init>(JJLandroid/os/IBinder;Ljava/lang/Runnable;ILcom/android/server/appop/AppOpsService$1;)V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->access$600(Lcom/android/server/appop/AppOpsService$InProgressStartOpEvent;)I
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->access$700(Lcom/android/server/appop/AppOpsService$InProgressStartOpEvent;)I
+PLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->binderDied()V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->finish()V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->getClientId()Landroid/os/IBinder;
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->getStartElapsedTime()J
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->getStartTime()J
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->getUidState()I
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEvent;->reinit(JJLandroid/os/IBinder;Ljava/lang/Runnable;I)V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEventPool;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$InProgressStartOpEventPool;->acquire(JJLandroid/os/IBinder;Ljava/lang/Runnable;I)Lcom/android/server/appop/AppOpsService$InProgressStartOpEvent;
 HSPLcom/android/server/appop/AppOpsService$ModeCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsCallback;IIII)V
-HSPLcom/android/server/appop/AppOpsService$ModeCallback;->binderDied()V
-PLcom/android/server/appop/AppOpsService$ModeCallback;->toString()Ljava/lang/String;
-HSPLcom/android/server/appop/AppOpsService$NotedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsNotedCallback;III)V
-HSPLcom/android/server/appop/AppOpsService$NotedCallback;->binderDied()V
+HPLcom/android/server/appop/AppOpsService$ModeCallback;->binderDied()V
+HSPLcom/android/server/appop/AppOpsService$ModeCallback;->isWatchingUid(I)Z
+HPLcom/android/server/appop/AppOpsService$ModeCallback;->toString()Ljava/lang/String;
+PLcom/android/server/appop/AppOpsService$ModeCallback;->unlinkToDeath()V
+PLcom/android/server/appop/AppOpsService$NotedCallback;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/internal/app/IAppOpsNotedCallback;III)V
+PLcom/android/server/appop/AppOpsService$NotedCallback;->binderDied()V
+PLcom/android/server/appop/AppOpsService$NotedCallback;->destroy()V
 PLcom/android/server/appop/AppOpsService$NotedCallback;->toString()Ljava/lang/String;
 HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;I)V
+HSPLcom/android/server/appop/AppOpsService$Op;-><init>(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;II)V
 HSPLcom/android/server/appop/AppOpsService$Op;->access$100(Lcom/android/server/appop/AppOpsService$Op;)I
-PLcom/android/server/appop/AppOpsService$Op;->access$300(Lcom/android/server/appop/AppOpsService$Op;)Landroid/util/LongSparseLongArray;
-PLcom/android/server/appop/AppOpsService$Op;->access$400(Lcom/android/server/appop/AppOpsService$Op;)Landroid/util/LongSparseLongArray;
-PLcom/android/server/appop/AppOpsService$Op;->access$500(Lcom/android/server/appop/AppOpsService$Op;)Landroid/util/LongSparseLongArray;
-PLcom/android/server/appop/AppOpsService$Op;->access$600(Lcom/android/server/appop/AppOpsService$Op;)Landroid/util/LongSparseLongArray;
-PLcom/android/server/appop/AppOpsService$Op;->access$700(Lcom/android/server/appop/AppOpsService$Op;)Landroid/util/LongSparseArray;
-HSPLcom/android/server/appop/AppOpsService$Op;->accessed(JILjava/lang/String;II)V
-HSPLcom/android/server/appop/AppOpsService$Op;->rejected(JILjava/lang/String;II)V
-HSPLcom/android/server/appop/AppOpsService$Op;->running(JJII)V
-HSPLcom/android/server/appop/AppOpsService$Op;->updateAccessTimeAndDuration(JJII)V
-HSPLcom/android/server/appop/AppOpsService$Op;->updateProxyState(JILjava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService$Op;->access$1000(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$FeatureOp;
+HSPLcom/android/server/appop/AppOpsService$Op;->access$102(Lcom/android/server/appop/AppOpsService$Op;I)I
+HSPLcom/android/server/appop/AppOpsService$Op;->access$200(Lcom/android/server/appop/AppOpsService$Op;)I
+HSPLcom/android/server/appop/AppOpsService$Op;->access$202(Lcom/android/server/appop/AppOpsService$Op;I)I
+HSPLcom/android/server/appop/AppOpsService$Op;->access$500(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$FeatureOp;
+HSPLcom/android/server/appop/AppOpsService$Op;->access$900(Lcom/android/server/appop/AppOpsService$Op;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$FeatureOp;
+HSPLcom/android/server/appop/AppOpsService$Op;->createEntryLocked()Landroid/app/AppOpsManager$OpEntry;
+HPLcom/android/server/appop/AppOpsService$Op;->createSingleFeatureEntryLocked(Ljava/lang/String;)Landroid/app/AppOpsManager$OpEntry;
+HSPLcom/android/server/appop/AppOpsService$Op;->evalMode()I
+HSPLcom/android/server/appop/AppOpsService$Op;->getOrCreateFeature(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)Lcom/android/server/appop/AppOpsService$FeatureOp;
+HSPLcom/android/server/appop/AppOpsService$Op;->isRunning()Z
+HSPLcom/android/server/appop/AppOpsService$OpEventProxyInfoPool;-><init>(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService$OpEventProxyInfoPool;->acquire(ILjava/lang/String;Ljava/lang/String;)Landroid/app/AppOpsManager$OpEventProxyInfo;
 HSPLcom/android/server/appop/AppOpsService$Ops;-><init>(Ljava/lang/String;Lcom/android/server/appop/AppOpsService$UidState;Z)V
+HSPLcom/android/server/appop/AppOpsService$UidState;-><init>(I)V
+HSPLcom/android/server/appop/AppOpsService$UidState;-><init>(Lcom/android/server/appop/AppOpsService;I)V
+HSPLcom/android/server/appop/AppOpsService$UidState;->clear()V
 HSPLcom/android/server/appop/AppOpsService$UidState;->evalForegroundOps(Landroid/util/SparseArray;)V
 HSPLcom/android/server/appop/AppOpsService$UidState;->evalForegroundWatchers(ILandroid/util/SparseArray;Landroid/util/SparseBooleanArray;)V
 HSPLcom/android/server/appop/AppOpsService$UidState;->evalMode(II)I
 HSPLcom/android/server/appop/AppOpsService$UidState;->isDefault()Z
+HSPLcom/android/server/appop/AppOpsService$UidState;->maybeShowWhileInUseDebugToast(II)V
+HSPLcom/android/server/appop/AppOpsService;-><clinit>()V
 HSPLcom/android/server/appop/AppOpsService;-><init>(Ljava/io/File;Landroid/os/Handler;)V
-HSPLcom/android/server/appop/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
-HSPLcom/android/server/appop/AppOpsService;->checkAudioOperationImpl(IIILjava/lang/String;)I
+PLcom/android/server/appop/AppOpsService;->access$1000()[I
+PLcom/android/server/appop/AppOpsService;->access$1100()[I
+PLcom/android/server/appop/AppOpsService;->access$1100(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->access$1200(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->access$1900(Lcom/android/server/appop/AppOpsService;Landroid/util/SparseArray;Z)V
+PLcom/android/server/appop/AppOpsService;->access$2000(Lcom/android/server/appop/AppOpsService;IIILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService;->access$2100(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService;->access$300()[I
+PLcom/android/server/appop/AppOpsService;->access$300(Lcom/android/server/appop/AppOpsService;)Landroid/app/ActivityManagerInternal;
+HSPLcom/android/server/appop/AppOpsService;->access$300(Lcom/android/server/appop/AppOpsService;)Lcom/android/server/appop/AppOpsService$OpEventProxyInfoPool;
+HSPLcom/android/server/appop/AppOpsService;->access$400(Lcom/android/server/appop/AppOpsService;)Lcom/android/server/appop/AppOpsService$OpEventProxyInfoPool;
+HSPLcom/android/server/appop/AppOpsService;->access$400(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Z)V
+HPLcom/android/server/appop/AppOpsService;->access$400(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->access$500(Lcom/android/server/appop/AppOpsService;)Lcom/android/server/appop/AppOpsService$InProgressStartOpEventPool;
+HSPLcom/android/server/appop/AppOpsService;->access$500(Lcom/android/server/appop/AppOpsService;IILjava/lang/String;Z)V
+HSPLcom/android/server/appop/AppOpsService;->access$600(Lcom/android/server/appop/AppOpsService;)Lcom/android/server/appop/AppOpsService$InProgressStartOpEventPool;
+PLcom/android/server/appop/AppOpsService;->access$700(Lcom/android/server/appop/AppOpsService$FeatureOp;Landroid/os/IBinder;)V
+PLcom/android/server/appop/AppOpsService;->access$800(Lcom/android/server/appop/AppOpsService$FeatureOp;Landroid/os/IBinder;)V
+HSPLcom/android/server/appop/AppOpsService;->access$800(Lcom/android/server/appop/AppOpsService;)V
+HSPLcom/android/server/appop/AppOpsService;->access$900(Lcom/android/server/appop/AppOpsService;)V
+PLcom/android/server/appop/AppOpsService;->addCallbacks(Ljava/util/HashMap;IILjava/lang/String;Landroid/util/ArraySet;)Ljava/util/HashMap;
+HPLcom/android/server/appop/AppOpsService;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->checkAudioOperationImpl(IIILjava/lang/String;)I
 HSPLcom/android/server/appop/AppOpsService;->checkOperation(IILjava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->checkOperationImpl(IILjava/lang/String;Z)I
 HSPLcom/android/server/appop/AppOpsService;->checkOperationInternal(IILjava/lang/String;Z)I
 HSPLcom/android/server/appop/AppOpsService;->checkOperationRaw(IILjava/lang/String;)I
-HSPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;ZZ)I
+HSPLcom/android/server/appop/AppOpsService;->checkOperationUnchecked(IILjava/lang/String;Z)I
 HSPLcom/android/server/appop/AppOpsService;->checkPackage(ILjava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->checkSystemUid(Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->collectAsyncNotedOp(ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->collectOps(Lcom/android/server/appop/AppOpsService$Ops;[I)Ljava/util/ArrayList;
 HSPLcom/android/server/appop/AppOpsService;->commitUidPendingStateLocked(Lcom/android/server/appop/AppOpsService$UidState;)V
-PLcom/android/server/appop/AppOpsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/appop/AppOpsService;->dumpStatesLocked(Ljava/io/PrintWriter;Lcom/android/server/appop/AppOpsService$Op;JLjava/text/SimpleDateFormat;Ljava/util/Date;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->dumpStatesLocked(Ljava/io/PrintWriter;JLcom/android/server/appop/AppOpsService$Op;JLjava/text/SimpleDateFormat;Ljava/util/Date;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->dumpStatesLocked(Ljava/io/PrintWriter;JLcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;JLjava/text/SimpleDateFormat;Ljava/util/Date;Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->dumpStatesLocked(Ljava/io/PrintWriter;Ljava/lang/String;IJLcom/android/server/appop/AppOpsService$Op;JLjava/text/SimpleDateFormat;Ljava/util/Date;Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->enforceManageAppOpsModes(III)V
-HSPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;)V
-HSPLcom/android/server/appop/AppOpsService;->finishOperationLocked(Lcom/android/server/appop/AppOpsService$Op;Z)V
+HPLcom/android/server/appop/AppOpsService;->ensureHistoricalOpRequestIsValid(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IJJI)V
+HSPLcom/android/server/appop/AppOpsService;->evalAllForegroundOpsLocked()V
+HSPLcom/android/server/appop/AppOpsService;->finishOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->finishOperationLocked(Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;Z)V
+HPLcom/android/server/appop/AppOpsService;->getAsyncNotedOpsKey(Ljava/lang/String;I)Landroid/util/Pair;
+HPLcom/android/server/appop/AppOpsService;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;IJJILandroid/os/RemoteCallback;)V
 PLcom/android/server/appop/AppOpsService;->getHistoricalOps(ILjava/lang/String;Ljava/util/List;JJILandroid/os/RemoteCallback;)V
 HSPLcom/android/server/appop/AppOpsService;->getOpEntryForResult(Lcom/android/server/appop/AppOpsService$Op;J)Landroid/app/AppOpsManager$OpEntry;
-PLcom/android/server/appop/AppOpsService;->getOpsForPackage(ILjava/lang/String;[I)Ljava/util/List;
+HSPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Op;
+HSPLcom/android/server/appop/AppOpsService;->getOpLocked(IILjava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Op;
+HSPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IIZ)Lcom/android/server/appop/AppOpsService$Op;
+HSPLcom/android/server/appop/AppOpsService;->getOpLocked(Lcom/android/server/appop/AppOpsService$Ops;IZ)Lcom/android/server/appop/AppOpsService$Op;
+HPLcom/android/server/appop/AppOpsService;->getOpsForPackage(ILjava/lang/String;[I)Ljava/util/List;
+HSPLcom/android/server/appop/AppOpsService;->getOpsRawLocked(ILjava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Ops;
 HSPLcom/android/server/appop/AppOpsService;->getOpsRawLocked(ILjava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Ops;
+HSPLcom/android/server/appop/AppOpsService;->getOpsRawNoVerifyLocked(ILjava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Ops;
 HSPLcom/android/server/appop/AppOpsService;->getOpsRawNoVerifyLocked(ILjava/lang/String;ZZ)Lcom/android/server/appop/AppOpsService$Ops;
 HSPLcom/android/server/appop/AppOpsService;->getPackagesForOps([I)Ljava/util/List;
 HSPLcom/android/server/appop/AppOpsService;->getPackagesForUid(I)[Ljava/lang/String;
+HPLcom/android/server/appop/AppOpsService;->getSwitchOpToOps()Landroid/util/SparseArray;
 HSPLcom/android/server/appop/AppOpsService;->getToken(Landroid/os/IBinder;)Landroid/os/IBinder;
 HSPLcom/android/server/appop/AppOpsService;->getUidStateLocked(IZ)Lcom/android/server/appop/AppOpsService$UidState;
-HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;)Z
-PLcom/android/server/appop/AppOpsService;->isOperationActive(IILjava/lang/String;)Z
-HSPLcom/android/server/appop/AppOpsService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;)I
-HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;ILjava/lang/String;I)I
-HSPLcom/android/server/appop/AppOpsService;->noteProxyOperation(IILjava/lang/String;ILjava/lang/String;)I
-PLcom/android/server/appop/AppOpsService;->notifyOpActiveChanged(Landroid/util/ArraySet;IILjava/lang/String;Z)V
+HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedDueToSuspend(ILjava/lang/String;I)Z
+HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Ljava/lang/String;Z)Z
+HSPLcom/android/server/appop/AppOpsService;->isOpRestrictedLocked(IILjava/lang/String;Z)Z
+HPLcom/android/server/appop/AppOpsService;->isOperationActive(IILjava/lang/String;)Z
+HPLcom/android/server/appop/AppOpsService;->lambda$AfBLuTvVESlqN91IyRX84hMV5nE(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;I)V
+HSPLcom/android/server/appop/AppOpsService;->lambda$FYLTtxqrHmv8Y5UdZ9ybXKsSJhs(Lcom/android/server/appop/AppOpsService;Lcom/android/server/appop/AppOpsService$ModeCallback;IILjava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->lambda$GUeKjlbzT65s86vaxy5gvOajuhw(Lcom/android/server/appop/AppOpsService;II)V
+HPLcom/android/server/appop/AppOpsService;->lambda$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ(Lcom/android/server/appop/AppOpsService;Landroid/util/ArraySet;IILjava/lang/String;Z)V
+PLcom/android/server/appop/AppOpsService;->lambda$getHistoricalOps$1(Landroid/os/RemoteCallback;)V
+HSPLcom/android/server/appop/AppOpsService;->lambda$systemReady$0$AppOpsService(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService;->noteAsyncOp(Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->noteOperationImpl(IILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/server/appop/AppOpsService;->noteOperationUnchecked(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IZLjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->noteProxyOperation(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->noteProxyOperation(IILjava/lang/String;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->notifyOpActiveChanged(Landroid/util/ArraySet;IILjava/lang/String;Z)V
+HPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Landroid/util/ArraySet;IILjava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->notifyOpChanged(Lcom/android/server/appop/AppOpsService$ModeCallback;IILjava/lang/String;)V
-HSPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;I)V
+HSPLcom/android/server/appop/AppOpsService;->notifyOpChangedSync(IILjava/lang/String;I)V
+HPLcom/android/server/appop/AppOpsService;->notifyOpChecked(Landroid/util/ArraySet;IILjava/lang/String;I)V
 HSPLcom/android/server/appop/AppOpsService;->notifyWatchersOfChange(II)V
-HSPLcom/android/server/appop/AppOpsService;->packageRemoved(ILjava/lang/String;)V
+PLcom/android/server/appop/AppOpsService;->onClientDeath(Lcom/android/server/appop/AppOpsService$FeatureOp;Landroid/os/IBinder;)V
+HPLcom/android/server/appop/AppOpsService;->packageRemoved(ILjava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->permissionToOpCode(Ljava/lang/String;)I
 HSPLcom/android/server/appop/AppOpsService;->publish(Landroid/content/Context;)V
+HSPLcom/android/server/appop/AppOpsService;->readFeatureOp(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/appop/AppOpsService$Op;Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->readOp(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/appop/AppOpsService$UidState;Ljava/lang/String;Z)V
 HSPLcom/android/server/appop/AppOpsService;->readPackage(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/appop/AppOpsService;->readState()V
 HSPLcom/android/server/appop/AppOpsService;->readUid(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->readUidOps(Lorg/xmlpull/v1/XmlPullParser;)V
+HPLcom/android/server/appop/AppOpsService;->removeUidsForUserLocked(I)V
+PLcom/android/server/appop/AppOpsService;->removeUser(I)V
+HPLcom/android/server/appop/AppOpsService;->resetAllModes(ILjava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->resolvePackageName(ILjava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/appop/AppOpsService;->resolveUid(Ljava/lang/String;)I
+HSPLcom/android/server/appop/AppOpsService;->scheduleFastWriteLocked()V
 HSPLcom/android/server/appop/AppOpsService;->scheduleOpActiveChangedIfNeededLocked(IILjava/lang/String;Z)V
 HSPLcom/android/server/appop/AppOpsService;->scheduleOpNotedIfNeededLocked(IILjava/lang/String;I)V
 HSPLcom/android/server/appop/AppOpsService;->scheduleWriteLocked()V
+PLcom/android/server/appop/AppOpsService;->setAppOpsServiceDelegate(Landroid/app/AppOpsManagerInternal$CheckOpsDelegate;)V
 HSPLcom/android/server/appop/AppOpsService;->setAudioRestriction(IIII[Ljava/lang/String;)V
-HSPLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;I)V
-HSPLcom/android/server/appop/AppOpsService;->setMode(IILjava/lang/String;IZZ)V
+HSPLcom/android/server/appop/AppOpsService;->setCameraAudioRestriction(I)V
+HPLcom/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
 HSPLcom/android/server/appop/AppOpsService;->setUidMode(III)V
-PLcom/android/server/appop/AppOpsService;->setUserRestriction(IZLandroid/os/IBinder;I[Ljava/lang/String;)V
+HPLcom/android/server/appop/AppOpsService;->setUidMode(IIILcom/android/internal/app/IAppOpsCallback;)V
+HPLcom/android/server/appop/AppOpsService;->setUserRestriction(IZLandroid/os/IBinder;I[Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->setUserRestrictionNoCheck(IZLandroid/os/IBinder;I[Ljava/lang/String;)V
 HSPLcom/android/server/appop/AppOpsService;->setUserRestrictions(Landroid/os/Bundle;Landroid/os/IBinder;I)V
-HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Z)I
-HSPLcom/android/server/appop/AppOpsService;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
+HSPLcom/android/server/appop/AppOpsService;->shouldCollectNotes(I)Z
+PLcom/android/server/appop/AppOpsService;->shutdown()V
+HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;Z)I
+HSPLcom/android/server/appop/AppOpsService;->startOperation(Landroid/os/IBinder;IILjava/lang/String;Ljava/lang/String;ZZLjava/lang/String;)I
+HPLcom/android/server/appop/AppOpsService;->startWatchingActive([ILcom/android/internal/app/IAppOpsActiveCallback;)V
 HSPLcom/android/server/appop/AppOpsService;->startWatchingMode(ILjava/lang/String;Lcom/android/internal/app/IAppOpsCallback;)V
 HSPLcom/android/server/appop/AppOpsService;->startWatchingModeWithFlags(ILjava/lang/String;ILcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/server/appop/AppOpsService;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
-HSPLcom/android/server/appop/AppOpsService;->stopWatchingActive(Lcom/android/internal/app/IAppOpsActiveCallback;)V
-HSPLcom/android/server/appop/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
-HSPLcom/android/server/appop/AppOpsService;->stopWatchingNoted(Lcom/android/internal/app/IAppOpsNotedCallback;)V
+PLcom/android/server/appop/AppOpsService;->startWatchingNoted([ILcom/android/internal/app/IAppOpsNotedCallback;)V
+HPLcom/android/server/appop/AppOpsService;->stopWatchingActive(Lcom/android/internal/app/IAppOpsActiveCallback;)V
+HPLcom/android/server/appop/AppOpsService;->stopWatchingMode(Lcom/android/internal/app/IAppOpsCallback;)V
+PLcom/android/server/appop/AppOpsService;->stopWatchingNoted(Lcom/android/internal/app/IAppOpsNotedCallback;)V
 HSPLcom/android/server/appop/AppOpsService;->systemReady()V
-HSPLcom/android/server/appop/AppOpsService;->uidRemoved(I)V
-HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(II)V
+HPLcom/android/server/appop/AppOpsService;->uidRemoved(I)V
+HPLcom/android/server/appop/AppOpsService;->updateAppWidgetVisibility(Landroid/util/SparseArray;Z)V
+HSPLcom/android/server/appop/AppOpsService;->updatePermissionRevokedCompat(III)V
+HSPLcom/android/server/appop/AppOpsService;->updateUidProcState(III)V
 HSPLcom/android/server/appop/AppOpsService;->upgradeLocked(I)V
+HSPLcom/android/server/appop/AppOpsService;->verifyAndGetIsPrivileged(ILjava/lang/String;)Z
+HSPLcom/android/server/appop/AppOpsService;->verifyAndGetIsPrivileged(ILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/appop/AppOpsService;->verifyIncomingOp(I)V
 HSPLcom/android/server/appop/AppOpsService;->verifyIncomingUid(I)V
-PLcom/android/server/appop/AppOpsService;->writeState()V
+HPLcom/android/server/appop/AppOpsService;->writeState()V
+HSPLcom/android/server/appop/AudioRestrictionManager$Restriction;-><clinit>()V
+HSPLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>()V
+HSPLcom/android/server/appop/AudioRestrictionManager$Restriction;-><init>(Lcom/android/server/appop/AudioRestrictionManager$1;)V
+HSPLcom/android/server/appop/AudioRestrictionManager;-><clinit>()V
+HSPLcom/android/server/appop/AudioRestrictionManager;-><init>()V
+HPLcom/android/server/appop/AudioRestrictionManager;->checkAudioOperation(IIILjava/lang/String;)I
+HPLcom/android/server/appop/AudioRestrictionManager;->checkZenModeRestrictionLocked(IIILjava/lang/String;)I
+PLcom/android/server/appop/AudioRestrictionManager;->hasActiveRestrictions()Z
+HSPLcom/android/server/appop/AudioRestrictionManager;->setCameraAudioRestriction(I)V
+HSPLcom/android/server/appop/AudioRestrictionManager;->setZenModeAudioRestriction(IIII[Ljava/lang/String;)V
+HSPLcom/android/server/appop/HistoricalRegistry$1;-><init>(Lcom/android/server/appop/HistoricalRegistry;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/appop/HistoricalRegistry$Persistence;-><clinit>()V
 HSPLcom/android/server/appop/HistoricalRegistry$Persistence;-><init>(JJ)V
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->access$100(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;->access$100(Lcom/android/server/appop/HistoricalRegistry$Persistence;Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;[Ljava/lang/String;JJI)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsBaseDLocked(ILjava/lang/String;[Ljava/lang/String;JJI)Ljava/util/LinkedList;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked()V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->clearHistoryDLocked(ILjava/lang/String;)V
+PLcom/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;->collectHistoricalOpsBaseDLocked(ILjava/lang/String;[Ljava/lang/String;JJI)Ljava/util/LinkedList;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI)V
 PLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;[Ljava/lang/String;JJI)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->collectHistoricalOpsRecursiveDLocked(Ljava/io/File;ILjava/lang/String;[Ljava/lang/String;JJI[JLjava/util/LinkedList;ILjava/util/Set;)Ljava/util/LinkedList;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->generateFile(Ljava/io/File;I)Ljava/io/File;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->getHistoricalFileNames(Ljava/io/File;)Ljava/util/Set;
+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;->collectHistoricalOpsRecursiveDLocked(Ljava/io/File;ILjava/lang/String;[Ljava/lang/String;JJI[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;
 HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->getLastPersistTimeMillisDLocked()J
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->handlePersistHistoricalOpsRecursiveDLocked(Ljava/io/File;Ljava/io/File;Ljava/util/List;Ljava/util/Set;I)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->normalizeSnapshotForSlotDuration(Ljava/util/List;J)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->persistHistoricalOpsDLocked(Ljava/util/List;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;ID)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;ILjava/lang/String;[Ljava/lang/String;JJI[J)Ljava/util/List;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;JJILjava/lang/String;[Ljava/lang/String;JJI[JILjava/util/Set;)Ljava/util/List;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;ID)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;[Ljava/lang/String;ID)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;ILorg/xmlpull/v1/XmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;[Ljava/lang/String;JJI[J)Landroid/app/AppOpsManager$HistoricalOps;
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpsDLocked(Ljava/util/List;JLjava/io/File;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalPackageOps;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLorg/xmlpull/v1/XmlSerializer;)V
+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;->readHistoricalFeatureOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lorg/xmlpull/v1/XmlPullParser;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;Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Lorg/xmlpull/v1/XmlPullParser;[Ljava/lang/String;ID)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;ILjava/lang/String;[Ljava/lang/String;JJI[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;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalOpsLocked(Ljava/io/File;JJILjava/lang/String;[Ljava/lang/String;JJI[JILjava/util/Set;)Ljava/util/List;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalPackageOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;[Ljava/lang/String;ID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;[Ljava/lang/String;ID)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;ILorg/xmlpull/v1/XmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readStateDLocked(Landroid/app/AppOpsManager$HistoricalOps;ILjava/lang/String;Ljava/lang/String;ILorg/xmlpull/v1/XmlPullParser;ID)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJI[J)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->readeHistoricalOpsDLocked(Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;[Ljava/lang/String;JJI[J)Landroid/app/AppOpsManager$HistoricalOps;
+PLcom/android/server/appop/HistoricalRegistry$Persistence;->spliceFromEnd(Landroid/app/AppOpsManager$HistoricalOps;D)Landroid/app/AppOpsManager$HistoricalOps;
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalFeatureOpsDLocked(Landroid/app/AppOpsManager$HistoricalFeatureOps;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOp;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalOpDLocked(Landroid/app/AppOpsManager$HistoricalOps;Lorg/xmlpull/v1/XmlSerializer;)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;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeHistoricalUidOpsDLocked(Landroid/app/AppOpsManager$HistoricalUidOps;Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/appop/HistoricalRegistry$Persistence;->writeStateOnLocked(Landroid/app/AppOpsManager$HistoricalOp;JLorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/appop/HistoricalRegistry;-><clinit>()V
 HSPLcom/android/server/appop/HistoricalRegistry;-><init>(Ljava/lang/Object;)V
-HSPLcom/android/server/appop/HistoricalRegistry;->clearHistory()V
-HSPLcom/android/server/appop/HistoricalRegistry;->clearHistoryOnDiskLocked()V
+PLcom/android/server/appop/HistoricalRegistry;->clearHistory()V
+PLcom/android/server/appop/HistoricalRegistry;->clearHistory(ILjava/lang/String;)V
+PLcom/android/server/appop/HistoricalRegistry;->clearHistoryOnDiskDLocked()V
+HPLcom/android/server/appop/HistoricalRegistry;->getHistoricalOps(ILjava/lang/String;Ljava/lang/String;[Ljava/lang/String;IJJILandroid/os/RemoteCallback;)V
 PLcom/android/server/appop/HistoricalRegistry;->getHistoricalOps(ILjava/lang/String;[Ljava/lang/String;JJILandroid/os/RemoteCallback;)V
 HSPLcom/android/server/appop/HistoricalRegistry;->getUpdatedPendingHistoricalOpsMLocked(J)Landroid/app/AppOpsManager$HistoricalOps;
 HSPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;IIJ)V
+HSPLcom/android/server/appop/HistoricalRegistry;->increaseOpAccessDuration(IILjava/lang/String;Ljava/lang/String;IIJ)V
 HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;II)V
+HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpAccessedCount(IILjava/lang/String;Ljava/lang/String;II)V
 HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;II)V
-HSPLcom/android/server/appop/HistoricalRegistry;->offsetHistory(J)V
-HSPLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory()V
-HSPLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory(Ljava/util/List;)V
+HSPLcom/android/server/appop/HistoricalRegistry;->incrementOpRejected(IILjava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/appop/HistoricalRegistry;->isApiEnabled()Z
+HSPLcom/android/server/appop/HistoricalRegistry;->isPersistenceInitializedMLocked()Z
+PLcom/android/server/appop/HistoricalRegistry;->lambda$dJrtb4M71TzV6sx9vPEImQG_akU(Lcom/android/server/appop/HistoricalRegistry;)V
+PLcom/android/server/appop/HistoricalRegistry;->offsetHistory(J)V
+HPLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory()V
+HPLcom/android/server/appop/HistoricalRegistry;->persistPendingHistory(Ljava/util/List;)V
+PLcom/android/server/appop/HistoricalRegistry;->resampleHistoryOnDiskInMemoryDMLocked(J)V
+PLcom/android/server/appop/HistoricalRegistry;->schedulePersistHistoricalOpsMLocked(Landroid/app/AppOpsManager$HistoricalOps;)V
+HSPLcom/android/server/appop/HistoricalRegistry;->systemReady(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/appop/HistoricalRegistry;->updateParametersFromSetting(Landroid/content/ContentResolver;)V
-PLcom/android/server/appop/HistoricalRegistry;->wtf(Ljava/lang/String;Ljava/lang/Throwable;Ljava/io/File;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$3-HMCieo6-UZfG43p_6ip1hrL0k;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$3-HMCieo6-UZfG43p_6ip1hrL0k;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$40EK4qcr-rG55ENTthOaXAXWDA4;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
 PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$40EK4qcr-rG55ENTthOaXAXWDA4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$4yDhFef-19aMlJ-Y7O6RdjSAvnk;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
 PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$4yDhFef-19aMlJ-Y7O6RdjSAvnk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$NmwmTMZXXS4S7viVNKzU2genXA8;-><init>(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
 PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$NmwmTMZXXS4S7viVNKzU2genXA8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$gV-NT40YbIbIqIJKiNGjlZGVJjc;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$gV-NT40YbIbIqIJKiNGjlZGVJjc;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$s2vrDOHz5x1TW_6jMihxp1iCAvg;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$s2vrDOHz5x1TW_6jMihxp1iCAvg;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vSY20eQq5y5FXrxhhqOTcEmezTs;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
 PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vSY20eQq5y5FXrxhhqOTcEmezTs;->accept(Ljava/lang/Object;)V
-PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$9DCowUTEF8fYuBlWGxOmP5hTAWA;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vWB3PdxOOvPr7p0_NmoqXeH8Ros;-><init>(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vWB3PdxOOvPr7p0_NmoqXeH8Ros;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionPerUserService$AppPredictionSessionInfo$LQ7iu1YPVHeNHnTTNfaw5e_68Z4;-><init>(Lcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionPerUserService$AppPredictionSessionInfo$LQ7iu1YPVHeNHnTTNfaw5e_68Z4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionPerUserService$ot809pjFOVEJ6shAJalMZ9_QhCo;-><init>(Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/-$$Lambda$AppPredictionPerUserService$ot809pjFOVEJ6shAJalMZ9_QhCo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$2EyTj40DnIRaUJU1GBU3r9jPAJg;-><init>(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$2EyTj40DnIRaUJU1GBU3r9jPAJg;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$9DCowUTEF8fYuBlWGxOmP5hTAWA;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
+HPLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$9DCowUTEF8fYuBlWGxOmP5hTAWA;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$Ikwq62LQ8mos7hCBmykUhqvUq2Y;-><init>(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
 PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$Ikwq62LQ8mos7hCBmykUhqvUq2Y;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$UaZoW5Y9AD8L3ktnyw-25jtnxhA;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
 PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$UaZoW5Y9AD8L3ktnyw-25jtnxhA;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$V2_zSuJJPrke_XrPl6iB-Ekw1Z4;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$V2_zSuJJPrke_XrPl6iB-Ekw1Z4;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$dsYLGE9YRnrxNNkC1jG8ymCUr5Q;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$dsYLGE9YRnrxNNkC1jG8ymCUr5Q;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$qroIh2ewx0BLP-J9XIAX2CaX8J4;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
 PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$qroIh2ewx0BLP-J9XIAX2CaX8J4;->run(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$sQgYVaCXRIosCYaNa7w5ZuNn7u8;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$sQgYVaCXRIosCYaNa7w5ZuNn7u8;->run(Landroid/os/IInterface;)V
+HSPLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;-><init>(Lcom/android/server/appprediction/AppPredictionManagerService;)V
+HSPLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;-><init>(Lcom/android/server/appprediction/AppPredictionManagerService;Lcom/android/server/appprediction/AppPredictionManagerService$1;)V
 PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->createPredictionSession(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$createPredictionSession$0(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$notifyLaunchLocationShown$2(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$onDestroyPredictionSession$7(Landroid/app/prediction/AppPredictionSessionId;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$registerPredictionUpdates$4(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$requestPredictionUpdate$6(Landroid/app/prediction/AppPredictionSessionId;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$sortAppTargets$3(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->lambda$unregisterPredictionUpdates$5(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;Lcom/android/server/appprediction/AppPredictionPerUserService;)V
 PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->notifyAppTargetEvent(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->notifyLaunchLocationShown(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->onDestroyPredictionSession(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
 PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->registerPredictionUpdates(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
-PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->requestPredictionUpdate(Landroid/app/prediction/AppPredictionSessionId;)V
-PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->runForUserLocked(Ljava/util/function/Consumer;)V
+HPLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->requestPredictionUpdate(Landroid/app/prediction/AppPredictionSessionId;)V
+HPLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->runForUserLocked(Ljava/lang/String;Ljava/util/function/Consumer;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->sortAppTargets(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->unregisterPredictionUpdates(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+HSPLcom/android/server/appprediction/AppPredictionManagerService;-><clinit>()V
 HSPLcom/android/server/appprediction/AppPredictionManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/appprediction/AppPredictionManagerService;->newServiceLocked(IZ)Lcom/android/server/appprediction/AppPredictionPerUserService;
-HSPLcom/android/server/appprediction/AppPredictionManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/appprediction/AppPredictionManagerService;->access$100(Lcom/android/server/appprediction/AppPredictionManagerService;)Lcom/android/server/infra/ServiceNameResolver;
+PLcom/android/server/appprediction/AppPredictionManagerService;->access$200(Lcom/android/server/appprediction/AppPredictionManagerService;)Lcom/android/server/wm/ActivityTaskManagerInternal;
+PLcom/android/server/appprediction/AppPredictionManagerService;->access$300()Ljava/lang/String;
+PLcom/android/server/appprediction/AppPredictionManagerService;->access$400(Lcom/android/server/appprediction/AppPredictionManagerService;)Ljava/lang/Object;
+HPLcom/android/server/appprediction/AppPredictionManagerService;->access$500(Lcom/android/server/appprediction/AppPredictionManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/appprediction/AppPredictionManagerService;->enforceCallingPermissionForManagement()V
+PLcom/android/server/appprediction/AppPredictionManagerService;->getMaximumTemporaryServiceDurationMs()I
+PLcom/android/server/appprediction/AppPredictionManagerService;->newServiceLocked(IZ)Lcom/android/server/appprediction/AppPredictionPerUserService;
+PLcom/android/server/appprediction/AppPredictionManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/appprediction/AppPredictionManagerService;->onServicePackageRestartedLocked(I)V
+PLcom/android/server/appprediction/AppPredictionManagerService;->onServicePackageUpdatedLocked(I)V
 HSPLcom/android/server/appprediction/AppPredictionManagerService;->onStart()V
-PLcom/android/server/appprediction/AppPredictionPerUserService;->getRemoteServiceLocked()Lcom/android/server/appprediction/RemoteAppPredictionService;
-HSPLcom/android/server/appprediction/AppPredictionPerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/appprediction/AppPredictionManagerServiceShellCommand;-><clinit>()V
+PLcom/android/server/appprediction/AppPredictionManagerServiceShellCommand;-><init>(Lcom/android/server/appprediction/AppPredictionManagerService;)V
+PLcom/android/server/appprediction/AppPredictionManagerServiceShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo$1;-><init>(Lcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo$1;->onCallbackDied(Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo$1;->onCallbackDied(Landroid/os/IInterface;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppPredictionContext;Landroid/content/ComponentName;Ljava/util/function/Consumer;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppPredictionContext;Ljava/util/function/Consumer;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->access$000(Lcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;)Landroid/content/ComponentName;
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->access$000(Lcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->access$100(Lcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->addCallbackLocked(Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->destroy()V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->lambda$resurrectSessionLocked$0$AppPredictionPerUserService$AppPredictionSessionInfo(Lcom/android/server/appprediction/AppPredictionPerUserService;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->removeCallbackLocked(Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService$AppPredictionSessionInfo;->resurrectSessionLocked(Lcom/android/server/appprediction/AppPredictionPerUserService;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;-><clinit>()V
+PLcom/android/server/appprediction/AppPredictionPerUserService;-><init>(Lcom/android/server/appprediction/AppPredictionManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->destroyAndRebindRemoteService()V
+HPLcom/android/server/appprediction/AppPredictionPerUserService;->getComponentName(Landroid/app/prediction/AppPredictionSessionId;)Landroid/content/ComponentName;
+HPLcom/android/server/appprediction/AppPredictionPerUserService;->getRemoteServiceLocked()Lcom/android/server/appprediction/RemoteAppPredictionService;
+HPLcom/android/server/appprediction/AppPredictionPerUserService;->getRemoteServiceLocked(Landroid/content/ComponentName;)Lcom/android/server/appprediction/RemoteAppPredictionService;
+PLcom/android/server/appprediction/AppPredictionPerUserService;->lambda$ot809pjFOVEJ6shAJalMZ9_QhCo(Lcom/android/server/appprediction/AppPredictionPerUserService;Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
 PLcom/android/server/appprediction/AppPredictionPerUserService;->notifyAppTargetEventLocked(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->notifyLaunchLocationShownLocked(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->onConnectedStateChanged(Z)V
 PLcom/android/server/appprediction/AppPredictionPerUserService;->onCreatePredictionSessionLocked(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->onDestroyPredictionSessionLocked(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->onPackageRestartedLocked()V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->onPackageUpdatedLocked()V
 PLcom/android/server/appprediction/AppPredictionPerUserService;->onServiceDied(Lcom/android/server/appprediction/RemoteAppPredictionService;)V
 PLcom/android/server/appprediction/AppPredictionPerUserService;->onServiceDied(Ljava/lang/Object;)V
 PLcom/android/server/appprediction/AppPredictionPerUserService;->registerPredictionUpdatesLocked(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->removeAppPredictionSessionInfo(Landroid/app/prediction/AppPredictionSessionId;)V
 PLcom/android/server/appprediction/AppPredictionPerUserService;->requestPredictionUpdateLocked(Landroid/app/prediction/AppPredictionSessionId;)V
-HSPLcom/android/server/appprediction/AppPredictionPerUserService;->updateLocked(Z)Z
+PLcom/android/server/appprediction/AppPredictionPerUserService;->resolveComponentName(Landroid/app/prediction/AppPredictionContext;)Landroid/content/ComponentName;
+PLcom/android/server/appprediction/AppPredictionPerUserService;->resurrectSessionsLocked()V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->sortAppTargetsLocked(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->unregisterPredictionUpdatesLocked(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/AppPredictionPerUserService;->updateLocked(Z)Z
+PLcom/android/server/appprediction/RemoteAppPredictionService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;ILcom/android/server/appprediction/RemoteAppPredictionService$RemoteAppPredictionServiceCallbacks;ZZ)V
 PLcom/android/server/appprediction/RemoteAppPredictionService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
 PLcom/android/server/appprediction/RemoteAppPredictionService;->getServiceInterface(Landroid/os/IBinder;)Landroid/service/appprediction/IPredictionService;
-PLcom/android/server/appprediction/RemoteAppPredictionService;->getTimeoutIdleBindMillis()J
+HPLcom/android/server/appprediction/RemoteAppPredictionService;->getTimeoutIdleBindMillis()J
+PLcom/android/server/appprediction/RemoteAppPredictionService;->handleOnConnectedStateChanged(Z)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyLaunchLocationShown$2(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$onCreatePredictionSession$0(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$onDestroyPredictionSession$7(Landroid/app/prediction/AppPredictionSessionId;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$registerPredictionUpdates$4(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$requestPredictionUpdate$6(Landroid/app/prediction/AppPredictionSessionId;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$sortAppTargets$3(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;Landroid/service/appprediction/IPredictionService;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$unregisterPredictionUpdates$5(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;Landroid/service/appprediction/IPredictionService;)V
 PLcom/android/server/appprediction/RemoteAppPredictionService;->notifyAppTargetEvent(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->notifyLaunchLocationShown(Landroid/app/prediction/AppPredictionSessionId;Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 PLcom/android/server/appprediction/RemoteAppPredictionService;->onCreatePredictionSession(Landroid/app/prediction/AppPredictionContext;Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->onDestroyPredictionSession(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->reconnect()V
 PLcom/android/server/appprediction/RemoteAppPredictionService;->registerPredictionUpdates(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
-PLcom/android/server/appprediction/RemoteAppPredictionService;->requestPredictionUpdate(Landroid/app/prediction/AppPredictionSessionId;)V
+HPLcom/android/server/appprediction/RemoteAppPredictionService;->requestPredictionUpdate(Landroid/app/prediction/AppPredictionSessionId;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->sortAppTargets(Landroid/app/prediction/AppPredictionSessionId;Landroid/content/pm/ParceledListSlice;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appprediction/RemoteAppPredictionService;->unregisterPredictionUpdates(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/IPredictionCallback;)V
+PLcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$7z3EwuT55saMxTVomcNfb1VOVL0;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;JLandroid/app/PendingIntent;)V
 PLcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$7z3EwuT55saMxTVomcNfb1VOVL0;->run()V
+PLcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$TEG8Dmf_tnBoLQ8rTg9_1sFaVu8;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/app/PendingIntent;)V
 PLcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$TEG8Dmf_tnBoLQ8rTg9_1sFaVu8;->run()V
 HSPLcom/android/server/appwidget/AppWidgetService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/appwidget/AppWidgetService;->onBootPhase(I)V
 HSPLcom/android/server/appwidget/AppWidgetService;->onStart()V
+PLcom/android/server/appwidget/AppWidgetService;->onStopUser(I)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$1;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;->getHostedWidgetPackages(I)Landroid/util/ArraySet;
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;->unlockUser(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->getWidgetState(Ljava/lang/String;I)[B
-PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->packageNeedsWidgetBackupLocked(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$2;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;->getHostedWidgetPackages(I)Landroid/util/ArraySet;
+PLcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;->unlockUser(I)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->getWidgetState(Ljava/lang/String;I)[B
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->isProviderAndHostInUser(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->packageNeedsWidgetBackupLocked(Ljava/lang/String;I)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;->restoreFinished(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->getPendingUpdatesForId(ILandroid/util/LongSparseArray;)Z
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/os/Looper;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;-><init>()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->access$3600(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->getPendingUpdatesForId(ILandroid/util/LongSparseArray;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->getUserId()I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->getWidgetUids()Landroid/util/SparseArray;
 PLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->hostsPackageForUser(Ljava/lang/String;I)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Host;->isInPackageForUser(Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->equals(Ljava/lang/Object;)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;->toString()Ljava/lang/String;
+PLcom/android/server/appwidget/AppWidgetServiceImpl$LoadedWidgetState;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;II)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->getUserId()I
 PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->hostedByPackageForUser(Ljava/lang/String;I)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->hashCode()I
-PLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->toString()Ljava/lang/String;
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->run()V
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->canAccessAppWidget(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;ILjava/lang/String;)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceServiceExistsAndRequiresBindRemoteViewsPermission(Landroid/content/ComponentName;I)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isCallerInstantAppLocked()Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isInstantAppLocked(Ljava/lang/String;I)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProfileEnabled(I)Z
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->isInPackageForUser(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->isMaskedLocked()Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByLockedProfileLocked(Z)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedByQuietProfileLocked(Z)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->setMaskedBySuspendedPackageLocked(Z)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Provider;->shouldBePersisted()Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;-><init>(ILandroid/content/ComponentName;Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->hashCode()I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;->toString()Ljava/lang/String;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;->run()V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->canAccessAppWidget(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;ILjava/lang/String;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceCallFromPackage(Ljava/lang/String;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceModifyAppWidgetBindPermissions(Ljava/lang/String;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->enforceServiceExistsAndRequiresBindRemoteViewsPermission(Landroid/content/ComponentName;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getEnabledGroupProfileIds(I)[I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getGroupParent(I)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->getProfileParent(I)I
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->hasCallerBindPermissionOrBindWhiteListedLocked(Ljava/lang/String;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isCallerInstantAppLocked()Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isEnabledGroupProfile(I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isHostAccessingProvider(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;ILjava/lang/String;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isHostInPackageForUid(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;ILjava/lang/String;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isInstantAppLocked(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isParentOrProfile(II)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProfileEnabled(I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderInCallerOrInProfileAndWhitelListed(Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderInPackageForUid(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;ILjava/lang/String;)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;->isProviderWhiteListed(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;-><init>()V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;-><init>(Lcom/android/server/appwidget/AppWidgetServiceImpl$1;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;->access$1000(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;->access$900(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;Landroid/widget/RemoteViews;)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;->clearMaskedViewsLocked()Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;->getEffectiveViewsLocked()Landroid/widget/RemoteViews;
+PLcom/android/server/appwidget/AppWidgetServiceImpl$Widget;->replaceWithMaskedViewsLocked(Landroid/widget/RemoteViews;)Z
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;-><clinit>()V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->addProviderLocked(Landroid/content/pm/ResolveInfo;)Z
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$000()Z
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$100(Lcom/android/server/appwidget/AppWidgetServiceImpl;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$1400(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/content/Context;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$1600(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;ILandroid/widget/RemoteViews;J)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$1700(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;ILandroid/appwidget/AppWidgetProviderInfo;J)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$1800(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;IJ)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$1900(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$200(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2000(Lcom/android/server/appwidget/AppWidgetServiceImpl;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;IIJ)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2100(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/os/UserManager;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2200(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/content/pm/IPackageManager;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2300(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/app/AppOpsManager;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2700(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Landroid/app/admin/DevicePolicyManagerInternal;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2800(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$2900(Landroid/widget/RemoteViews;)Landroid/widget/RemoteViews;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$300(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3000(Lcom/android/server/appwidget/AppWidgetServiceImpl;IZ)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3100(Lcom/android/server/appwidget/AppWidgetServiceImpl;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3200(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/util/ArrayList;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3300(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/util/ArrayList;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3400(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3500(Lcom/android/server/appwidget/AppWidgetServiceImpl;)Ljava/util/ArrayList;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3700(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$3800(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->access$400(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->access$500(Lcom/android/server/appwidget/AppWidgetServiceImpl;Landroid/content/Intent;ZI)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->addProviderLocked(Landroid/content/pm/ResolveInfo;)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->addWidgetLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->allocateAppWidgetId(Ljava/lang/String;I)I
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindAppWidgetId(Ljava/lang/String;IILandroid/content/ComponentName;Landroid/os/Bundle;)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindLoadedWidgetsLocked(Ljava/util/List;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->bindRemoteViewsService(Ljava/lang/String;ILandroid/content/Intent;Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/IServiceConnection;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->bindRemoteViewsService(Ljava/lang/String;ILandroid/content/Intent;Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/IServiceConnection;I)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->cancelBroadcastsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->clearProvidersAndHostsTagsLocked()V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->clearProvidersAndHostsTagsLocked()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/appwidget/AppWidgetProviderInfo;)Landroid/appwidget/AppWidgetProviderInfo;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/os/Bundle;)Landroid/os/Bundle;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->cloneIfLocalBinder(Landroid/widget/RemoteViews;)Landroid/widget/RemoteViews;
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->computeMaximumWidgetBitmapMemory()V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->createAppWidgetConfigIntentSender(Ljava/lang/String;II)Landroid/content/IntentSender;
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->createMaskedWidgetBitmap(Ljava/lang/String;I)Landroid/graphics/Bitmap;
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->createMaskedWidgetRemoteViews(Landroid/graphics/Bitmap;ZLandroid/app/PendingIntent;)Landroid/widget/RemoteViews;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->decrementAppWidgetServiceRefCount(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteAppWidgetId(Ljava/lang/String;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteAppWidgetLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteHost(Ljava/lang/String;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->deleteWidgetsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->destroyRemoteViewsService(Landroid/content/Intent;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpHost(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;ILjava/io/PrintWriter;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpInternal(Ljava/io/PrintWriter;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpProvider(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;ILjava/io/PrintWriter;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetInfo(Ljava/lang/String;I)Landroid/appwidget/AppWidgetProviderInfo;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetOptions(Ljava/lang/String;I)Landroid/os/Bundle;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetViews(Ljava/lang/String;I)Landroid/widget/RemoteViews;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpInternal(Ljava/io/PrintWriter;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpProvider(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;ILjava/io/PrintWriter;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->dumpWidget(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;ILjava/io/PrintWriter;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->ensureGroupStateLoadedLocked(IZ)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->findHostByTag(I)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->findProviderByTag(I)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIds(Landroid/content/ComponentName;)[I
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetIdsForHost(Ljava/lang/String;I)[I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetInfo(Ljava/lang/String;I)Landroid/appwidget/AppWidgetProviderInfo;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetOptions(Ljava/lang/String;I)Landroid/os/Bundle;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getAppWidgetViews(Ljava/lang/String;I)Landroid/widget/RemoteViews;
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->getCanonicalPackageName(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getSavedStateFile(I)Landroid/util/AtomicFile;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getUidForPackage(Ljava/lang/String;I)I
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetState(Ljava/lang/String;I)[B
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getInstalledProvidersForProfile(IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->getProviderInfo(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getSavedStateFile(I)Landroid/util/AtomicFile;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getStateFile(I)Ljava/io/File;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getUidForPackage(Ljava/lang/String;I)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetIds(Ljava/util/ArrayList;)[I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->getWidgetState(Ljava/lang/String;I)[B
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->handleNotifyAppWidgetRemoved(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;IJ)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->handleNotifyAppWidgetViewDataChanged(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;IIJ)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->handleNotifyProviderChanged(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;ILandroid/appwidget/AppWidgetProviderInfo;J)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->handleNotifyProvidersChanged(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->handleNotifyUpdateAppWidget(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Lcom/android/internal/appwidget/IAppWidgetHost;ILandroid/widget/RemoteViews;J)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->handleUserUnlocked(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->incrementAppWidgetServiceRefCount(ILandroid/util/Pair;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->handleUserUnlocked(I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->hasBindAppWidgetPermission(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->incrementAndGetAppWidgetIdLocked(I)I
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->incrementAppWidgetServiceRefCount(ILandroid/util/Pair;)V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isBoundWidgetPackage(Ljava/lang/String;I)Z
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithUnlockedParent(I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isLocalBinder()Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithLockedParent(I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isProfileWithUnlockedParent(I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->isRequestPinAppWidgetSupported()Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->isUserRunningAndUnlocked(I)Z
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->lambda$cancelBroadcastsLocked$0$AppWidgetServiceImpl(Landroid/app/PendingIntent;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->lambda$registerForBroadcastsLocked$1$AppWidgetServiceImpl(JLandroid/app/PendingIntent;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupStateLocked([I)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupWidgetProvidersLocked([I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupWidgetLocked(IILjava/lang/String;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->loadGroupWidgetProvidersLocked([I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupOrAddHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupProviderLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->lookupWidgetLocked(IILjava/lang/String;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->maskWidgetsViewsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->notifyAppWidgetViewDataChanged(Ljava/lang/String;[II)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->notifyAppWidgetViewDataChanged(Ljava/lang/String;[II)V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->onConfigurationChanged()V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->onCrossProfileWidgetProvidersChanged(ILjava/util/List;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->onCrossProfileWidgetProvidersChanged(ILjava/util/List;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->onPackageBroadcastReceived(Landroid/content/Intent;I)V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->onStart()V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->onUserStopped(I)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->onWidgetProviderAddedOrChangedLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseAppWidgetProviderInfo(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/appwidget/AppWidgetProviderInfo;
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->partiallyUpdateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->onWidgetRemovedLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseAppWidgetProviderInfo(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/appwidget/AppWidgetProviderInfo;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->parseProviderInfoXml(Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;Landroid/content/pm/ResolveInfo;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->partiallyUpdateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->peekNextAppWidgetIdLocked(I)I
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->performUpgradeLocked(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->pruneHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
-HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->queryIntentReceivers(Landroid/content/Intent;I)Ljava/util/List;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->pruneHostLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->queryIntentReceivers(Landroid/content/Intent;I)Ljava/util/List;
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->readProfileStateFromFileLocked(Ljava/io/FileInputStream;ILjava/util/List;)I
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->registerBroadcastReceiver()V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->registerForBroadcastsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;[I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->registerOnCrossProfileProvidersChangedListener()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedState(I)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->reloadWidgetsMaskedStateForGroup(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->removeHostsAndProvidersForPackageLocked(Ljava/lang/String;I)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->removeProvidersForPackageLocked(Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->removeHostsAndProvidersForPackageLocked(Ljava/lang/String;I)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->removeProvidersForPackageLocked(Ljava/lang/String;I)Z
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->removeWidgetLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->removeWidgetsForPackageLocked(Ljava/lang/String;II)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->resolveHostUidLocked(Ljava/lang/String;I)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->restoreFinished(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveStateLocked(I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyAppWidgetViewDataChanged(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyGroupHostsForProvidersChangedLocked(I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->saveGroupStateAsync(I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->saveStateLocked(I)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyAppWidgetRemovedLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyAppWidgetViewDataChanged(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyGroupHostsForProvidersChangedLocked(I)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyProviderChangedLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyUpdateAppWidgetLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;Landroid/widget/RemoteViews;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->scheduleNotifyUpdateAppWidgetLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;Landroid/widget/RemoteViews;)V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendBroadcastAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeAppWidget(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeHost(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendDeletedIntentLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendDisabledIntentLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendEnableIntentLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendOptionsChangedIntentLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->sendUpdateIntentLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;[I)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeAppWidget(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeHost(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->serializeProvider(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->setMinAppWidgetIdLocked(II)V
 HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->setSafeMode(Z)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->stopListening(Ljava/lang/String;I)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->tagProvidersAndHosts()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->startListening(Lcom/android/internal/appwidget/IAppWidgetHost;Ljava/lang/String;I[I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->stopListening(Ljava/lang/String;I)V
+HSPLcom/android/server/appwidget/AppWidgetServiceImpl;->systemServicesReady()V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->tagProvidersAndHosts()V
 PLcom/android/server/appwidget/AppWidgetServiceImpl;->unmaskWidgetsViewsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;Z)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetInstanceLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;Landroid/widget/RemoteViews;Z)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z
-PLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToFileLocked(Ljava/io/FileOutputStream;I)Z
-PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$MfLl81BWvF9OIWh52LJfesOjVdw;->test(Ljava/lang/Object;)Z
-PLcom/android/server/audio/-$$Lambda$AudioService$YLQrBBB6SFLzNISvF6dG1Zz8wEY;-><init>()V
-PLcom/android/server/audio/-$$Lambda$AudioService$YLQrBBB6SFLzNISvF6dG1Zz8wEY;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppOpsLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;Z)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetIds(Ljava/lang/String;[ILandroid/widget/RemoteViews;Z)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetInstanceLocked(Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;Landroid/widget/RemoteViews;Z)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetOptions(Ljava/lang/String;ILandroid/os/Bundle;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetProvider(Landroid/content/ComponentName;Landroid/widget/RemoteViews;)V
+PLcom/android/server/appwidget/AppWidgetServiceImpl;->updateAppWidgetProviderInfo(Landroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateProvidersForPackageLocked(Ljava/lang/String;ILjava/util/Set;)Z
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->updateWidgetPackageSuspensionMaskedState(Landroid/content/Intent;ZI)V
+HPLcom/android/server/appwidget/AppWidgetServiceImpl;->writeProfileStateToFileLocked(Ljava/io/FileOutputStream;I)Z
+PLcom/android/server/attention/-$$Lambda$AttentionManagerService$2UthIuCIdjigpPv1U5Dxw_fo4nY;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/-$$Lambda$AttentionManagerService$2UthIuCIdjigpPv1U5Dxw_fo4nY;->run()V
+PLcom/android/server/attention/-$$Lambda$AttentionManagerService$UserState$2cc0P7pJchsigKpbEq7IoxYFsSM;-><init>(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/-$$Lambda$AttentionManagerService$UserState$2cc0P7pJchsigKpbEq7IoxYFsSM;->run()V
+PLcom/android/server/attention/AttentionManagerService$1;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$UserState;Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;)V
+PLcom/android/server/attention/AttentionManagerService$1;->onFailure(I)V
+PLcom/android/server/attention/AttentionManagerService$1;->onSuccess(IJ)V
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;-><init>(Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;Landroid/service/attention/IAttentionCallback;)V
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$1100(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;)Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$700(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;)Z
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$702(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;Z)Z
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$800(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;)Z
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$802(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;Z)Z
+PLcom/android/server/attention/AttentionManagerService$AttentionCheck;->access$900(Lcom/android/server/attention/AttentionManagerService$AttentionCheck;)Landroid/service/attention/IAttentionCallback;
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCache;-><init>(JIJ)V
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCache;->access$400(Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;)J
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCache;->access$500(Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;)I
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCache;->access$600(Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;)J
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCacheBuffer;-><init>()V
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCacheBuffer;->add(Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;)V
+PLcom/android/server/attention/AttentionManagerService$AttentionCheckCacheBuffer;->getLast()Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;
+HSPLcom/android/server/attention/AttentionManagerService$AttentionHandler;-><init>(Lcom/android/server/attention/AttentionManagerService;)V
+PLcom/android/server/attention/AttentionManagerService$AttentionHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand$TestableAttentionCallbackInternal;-><init>(Lcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand;)V
+HSPLcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand;-><init>(Lcom/android/server/attention/AttentionManagerService;)V
+HSPLcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$1;)V
+HSPLcom/android/server/attention/AttentionManagerService$BinderService;-><init>(Lcom/android/server/attention/AttentionManagerService;)V
+HSPLcom/android/server/attention/AttentionManagerService$BinderService;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$1;)V
+PLcom/android/server/attention/AttentionManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/attention/AttentionManagerService$LocalService;-><init>(Lcom/android/server/attention/AttentionManagerService;)V
+HSPLcom/android/server/attention/AttentionManagerService$LocalService;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$1;)V
+PLcom/android/server/attention/AttentionManagerService$LocalService;->cancelAttentionCheck(Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;)V
+PLcom/android/server/attention/AttentionManagerService$LocalService;->checkAttention(JLandroid/attention/AttentionManagerInternal$AttentionCallbackInternal;)Z
+HPLcom/android/server/attention/AttentionManagerService$LocalService;->isAttentionServiceSupported()Z
+HSPLcom/android/server/attention/AttentionManagerService$ScreenStateReceiver;-><init>(Lcom/android/server/attention/AttentionManagerService;)V
+HSPLcom/android/server/attention/AttentionManagerService$ScreenStateReceiver;-><init>(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$1;)V
+HPLcom/android/server/attention/AttentionManagerService$ScreenStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;-><init>(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;-><init>(Lcom/android/server/attention/AttentionManagerService$UserState;Lcom/android/server/attention/AttentionManagerService$1;)V
+PLcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;->cleanupService()V
+PLcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;->init(Landroid/service/attention/IAttentionService;)V
+PLcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/attention/AttentionManagerService$UserState;-><init>(ILandroid/content/Context;Ljava/lang/Object;Landroid/os/Handler;Landroid/content/ComponentName;)V
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$1600(Lcom/android/server/attention/AttentionManagerService$UserState;)Ljava/lang/Object;
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$1702(Lcom/android/server/attention/AttentionManagerService$UserState;Z)Z
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$1800(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$2100(Lcom/android/server/attention/AttentionManagerService$UserState;)Lcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$2200(Lcom/android/server/attention/AttentionManagerService$UserState;)I
+PLcom/android/server/attention/AttentionManagerService$UserState;->access$300(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService$UserState;->bindLocked()V
+PLcom/android/server/attention/AttentionManagerService$UserState;->handlePendingCallbackLocked()V
+PLcom/android/server/attention/AttentionManagerService$UserState;->lambda$bindLocked$0$AttentionManagerService$UserState()V
+HSPLcom/android/server/attention/AttentionManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/attention/AttentionManagerService;-><init>(Landroid/content/Context;Landroid/os/PowerManager;Ljava/lang/Object;Lcom/android/server/attention/AttentionManagerService$AttentionHandler;)V
+PLcom/android/server/attention/AttentionManagerService;->access$1000(Lcom/android/server/attention/AttentionManagerService;)Ljava/lang/Object;
+PLcom/android/server/attention/AttentionManagerService;->access$1300(Lcom/android/server/attention/AttentionManagerService;)Z
+PLcom/android/server/attention/AttentionManagerService;->access$1900(Lcom/android/server/attention/AttentionManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/attention/AttentionManagerService;->access$2000(Lcom/android/server/attention/AttentionManagerService;Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService;->access$2400(Lcom/android/server/attention/AttentionManagerService;)Landroid/content/Context;
+PLcom/android/server/attention/AttentionManagerService;->access$2700(Lcom/android/server/attention/AttentionManagerService;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/attention/AttentionManagerService;->cancel(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService;->cancelAfterTimeoutLocked(J)V
+PLcom/android/server/attention/AttentionManagerService;->cancelAndUnbindLocked(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+PLcom/android/server/attention/AttentionManagerService;->cancelAttentionCheck(Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;)V
+PLcom/android/server/attention/AttentionManagerService;->checkAttention(JLandroid/attention/AttentionManagerInternal$AttentionCallbackInternal;)Z
+PLcom/android/server/attention/AttentionManagerService;->createAttentionCheck(Landroid/attention/AttentionManagerInternal$AttentionCallbackInternal;Lcom/android/server/attention/AttentionManagerService$UserState;)Lcom/android/server/attention/AttentionManagerService$AttentionCheck;
+PLcom/android/server/attention/AttentionManagerService;->dumpInternal(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/attention/AttentionManagerService;->freeIfInactiveLocked()V
+PLcom/android/server/attention/AttentionManagerService;->getOrCreateCurrentUserStateLocked()Lcom/android/server/attention/AttentionManagerService$UserState;
+PLcom/android/server/attention/AttentionManagerService;->getOrCreateUserStateLocked(I)Lcom/android/server/attention/AttentionManagerService$UserState;
+HSPLcom/android/server/attention/AttentionManagerService;->getServiceConfigPackage(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/attention/AttentionManagerService;->getStaleAfterMillis()J
+HPLcom/android/server/attention/AttentionManagerService;->isAttentionServiceSupported()Z
+PLcom/android/server/attention/AttentionManagerService;->isServiceAvailable()Z
+HSPLcom/android/server/attention/AttentionManagerService;->isServiceConfigured(Landroid/content/Context;)Z
+HPLcom/android/server/attention/AttentionManagerService;->isServiceEnabled()Z
+PLcom/android/server/attention/AttentionManagerService;->lambda$cancelAndUnbindLocked$0$AttentionManagerService(Lcom/android/server/attention/AttentionManagerService$UserState;)V
+HSPLcom/android/server/attention/AttentionManagerService;->onBootPhase(I)V
+HSPLcom/android/server/attention/AttentionManagerService;->onStart()V
+PLcom/android/server/attention/AttentionManagerService;->peekCurrentUserStateLocked()Lcom/android/server/attention/AttentionManagerService$UserState;
+HPLcom/android/server/attention/AttentionManagerService;->peekUserStateLocked(I)Lcom/android/server/attention/AttentionManagerService$UserState;
+PLcom/android/server/attention/AttentionManagerService;->resolveAttentionService(Landroid/content/Context;)Landroid/content/ComponentName;
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$2HRlO1Fuzgf97A2Y249yqOtNAlc;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$2HRlO1Fuzgf97A2Y249yqOtNAlc;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$7CtpUHI2aS8Sdar40vc2ScvU1zA;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$7CtpUHI2aS8Sdar40vc2ScvU1zA;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$A06w_GDNkrLVK3IhlqiuSJkZdos;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$BMFj2tw2PdB9dFQB6gMjDjefzwg;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$BMFj2tw2PdB9dFQB6gMjDjefzwg;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Jg62meZgoWI_a0zxOvpWdJWRPfI;-><init>(Lcom/android/server/audio/AudioDeviceInventory;I)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Jg62meZgoWI_a0zxOvpWdJWRPfI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Kq15BolmuFXaWWabjDNQiScRxjo;-><init>(Landroid/util/ArraySet;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Kq15BolmuFXaWWabjDNQiScRxjo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Nads7_S1eD53QDofbK9CuYO9Fok;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$OBWGV1RNEso-eo8dzWjaFhEjC0A;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$YxgcWZ4jspoxzltUgvW9l8k40io;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$YxgcWZ4jspoxzltUgvW9l8k40io;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$_CdHBhvBDErZWSm39GafCXJiOqQ;-><init>(Lcom/android/server/audio/AudioDeviceInventory;)V
+PLcom/android/server/audio/-$$Lambda$AudioDeviceInventory$_CdHBhvBDErZWSm39GafCXJiOqQ;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/audio/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;-><clinit>()V
+HSPLcom/android/server/audio/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;-><init>()V
+HSPLcom/android/server/audio/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;->applyAsInt(Ljava/lang/Object;)I
+HSPLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
+HSPLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;-><init>(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$1;)V
 HSPLcom/android/server/audio/AudioDeviceBroker$BrokerHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/audio/AudioDeviceBroker$BrokerThread;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
 HSPLcom/android/server/audio/AudioDeviceBroker$BrokerThread;->run()V
+HPLcom/android/server/audio/AudioDeviceBroker$BtDeviceConnectionInfo;-><init>(Landroid/bluetooth/BluetoothDevice;IIZI)V
+HSPLcom/android/server/audio/AudioDeviceBroker;-><clinit>()V
 HSPLcom/android/server/audio/AudioDeviceBroker;-><init>(Landroid/content/Context;Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->access$002(Lcom/android/server/audio/AudioDeviceBroker;Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler;)Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler;
 HSPLcom/android/server/audio/AudioDeviceBroker;->access$200(Lcom/android/server/audio/AudioDeviceBroker;)Ljava/lang/Object;
-PLcom/android/server/audio/AudioDeviceBroker;->access$300(Lcom/android/server/audio/AudioDeviceBroker;)Lcom/android/server/audio/AudioDeviceInventory;
+HPLcom/android/server/audio/AudioDeviceBroker;->access$300(Lcom/android/server/audio/AudioDeviceBroker;)Lcom/android/server/audio/AudioDeviceInventory;
 HSPLcom/android/server/audio/AudioDeviceBroker;->access$400(Lcom/android/server/audio/AudioDeviceBroker;)Lcom/android/server/audio/BtHelper;
-HSPLcom/android/server/audio/AudioDeviceBroker;->access$700(I)Z
-HSPLcom/android/server/audio/AudioDeviceBroker;->access$800(Lcom/android/server/audio/AudioDeviceBroker;)Landroid/os/PowerManager$WakeLock;
+HSPLcom/android/server/audio/AudioDeviceBroker;->access$500(Lcom/android/server/audio/AudioDeviceBroker;IILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->access$700(Lcom/android/server/audio/AudioDeviceBroker;)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->access$800(I)Z
+HPLcom/android/server/audio/AudioDeviceBroker;->access$900(Lcom/android/server/audio/AudioDeviceBroker;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/audio/AudioDeviceBroker;->checkMusicActive(ILjava/lang/String;)V
 PLcom/android/server/audio/AudioDeviceBroker;->disconnectAllBluetoothProfiles()V
+PLcom/android/server/audio/AudioDeviceBroker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/audio/AudioDeviceBroker;->getA2dpCodec(Landroid/bluetooth/BluetoothDevice;)I
+PLcom/android/server/audio/AudioDeviceBroker;->getBluetoothA2dpEnabled()Z
+PLcom/android/server/audio/AudioDeviceBroker;->getContentResolver()Landroid/content/ContentResolver;
+HSPLcom/android/server/audio/AudioDeviceBroker;->getContext()Landroid/content/Context;
 PLcom/android/server/audio/AudioDeviceBroker;->getCurAudioRoutes()Landroid/media/AudioRoutesInfo;
-PLcom/android/server/audio/AudioDeviceBroker;->handleDeviceConnection(ZILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioDeviceBroker;->getDeviceForStream(I)I
+PLcom/android/server/audio/AudioDeviceBroker;->getModeOwnerPid()I
+PLcom/android/server/audio/AudioDeviceBroker;->handleCancelFailureToConnectToBtHeadsetService()V
+HPLcom/android/server/audio/AudioDeviceBroker;->handleDeviceConnection(ZILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/audio/AudioDeviceBroker;->handleFailureToConnectToBtHeadsetService(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->hasAudioFocusUsers()Z
+PLcom/android/server/audio/AudioDeviceBroker;->hasMediaDynamicPolicy()Z
+PLcom/android/server/audio/AudioDeviceBroker;->hasScheduledA2dpSinkConnectionState(Landroid/bluetooth/BluetoothDevice;)Z
+HSPLcom/android/server/audio/AudioDeviceBroker;->init()V
 HSPLcom/android/server/audio/AudioDeviceBroker;->isAvrcpAbsoluteVolumeSupported()Z
-PLcom/android/server/audio/AudioDeviceBroker;->isBluetoothA2dpOn()Z
+HPLcom/android/server/audio/AudioDeviceBroker;->isBluetoothA2dpOn()Z
 HSPLcom/android/server/audio/AudioDeviceBroker;->isBluetoothScoOnForApp()Z
+PLcom/android/server/audio/AudioDeviceBroker;->isInCommunication()Z
 HSPLcom/android/server/audio/AudioDeviceBroker;->isMessageHandledUnderWakelock(I)Z
-PLcom/android/server/audio/AudioDeviceBroker;->isSpeakerphoneOn()Z
+HPLcom/android/server/audio/AudioDeviceBroker;->isSpeakerphoneOn()Z
+PLcom/android/server/audio/AudioDeviceBroker;->onAudioServerDied()V
+PLcom/android/server/audio/AudioDeviceBroker;->onSendBecomingNoisyIntent()V
+HSPLcom/android/server/audio/AudioDeviceBroker;->onSetForceUse(IILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->onSystemReady()V
-PLcom/android/server/audio/AudioDeviceBroker;->postSetAvrcpAbsoluteVolumeIndex(I)V
-PLcom/android/server/audio/AudioDeviceBroker;->receiveBtEvent(Landroid/content/Intent;)V
-PLcom/android/server/audio/AudioDeviceBroker;->sendBroadcastToAll(Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postA2dpSinkConnection(ILcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postA2dpSourceConnection(ILcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postAccessoryPlugMediaUnmute(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBluetoothA2dpDeviceConfigChange(Landroid/bluetooth/BluetoothDevice;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(Landroid/bluetooth/BluetoothDevice;IIZI)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBroadcastBecomingNoisy()V
+HSPLcom/android/server/audio/AudioDeviceBroker;->postBroadcastScoConnectionState(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBtA2dpProfileConnected(Landroid/bluetooth/BluetoothA2dp;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBtHearingAidProfileConnected(Landroid/bluetooth/BluetoothHearingAid;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postBtHeasetProfileConnected(Landroid/bluetooth/BluetoothHeadset;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postDisconnectA2dp()V
+PLcom/android/server/audio/AudioDeviceBroker;->postDisconnectA2dpSink()V
+PLcom/android/server/audio/AudioDeviceBroker;->postDisconnectBluetoothSco(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postDisconnectHeadset()V
+PLcom/android/server/audio/AudioDeviceBroker;->postDisconnectHearingAid()V
+PLcom/android/server/audio/AudioDeviceBroker;->postObserveDevicesForAllStreams()V
+PLcom/android/server/audio/AudioDeviceBroker;->postReportNewRoutes()V
+HPLcom/android/server/audio/AudioDeviceBroker;->postSetAvrcpAbsoluteVolumeIndex(I)V
+PLcom/android/server/audio/AudioDeviceBroker;->postSetVolumeIndexOnDevice(IIILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->postSetWiredDeviceConnectionState(Lcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;I)V
+HPLcom/android/server/audio/AudioDeviceBroker;->receiveBtEvent(Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioDeviceBroker;->removeAllA2dpConnectionEvents(Landroid/bluetooth/BluetoothDevice;)V
+HPLcom/android/server/audio/AudioDeviceBroker;->sendBroadcastToAll(Landroid/content/Intent;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->sendIILMsg(IIIILjava/lang/Object;I)V
-PLcom/android/server/audio/AudioDeviceBroker;->setAvrcpAbsoluteVolumeSupported(Z)V
-HSPLcom/android/server/audio/AudioDeviceBroker;->setBluetoothA2dpOnInt(ZLjava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothA2dpOn_Async(ZLjava/lang/String;)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->sendIILMsgNoDelay(IIIILjava/lang/Object;)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendILMsg(IIILjava/lang/Object;I)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->sendIMsgNoDelay(III)V
+PLcom/android/server/audio/AudioDeviceBroker;->sendLMsg(IILjava/lang/Object;I)V
+HPLcom/android/server/audio/AudioDeviceBroker;->sendLMsgNoDelay(IILjava/lang/Object;)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->sendMsg(III)V
+HPLcom/android/server/audio/AudioDeviceBroker;->sendMsgNoDelay(II)V
+PLcom/android/server/audio/AudioDeviceBroker;->setA2dpTimeout(Ljava/lang/String;II)V
+HPLcom/android/server/audio/AudioDeviceBroker;->setAvrcpAbsoluteVolumeSupported(Z)V
+HPLcom/android/server/audio/AudioDeviceBroker;->setBluetoothA2dpOnInt(ZLjava/lang/String;)V
+HPLcom/android/server/audio/AudioDeviceBroker;->setBluetoothA2dpOn_Async(ZLjava/lang/String;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->setBluetoothScoOn(ZLjava/lang/String;)V
 PLcom/android/server/audio/AudioDeviceBroker;->setBluetoothScoOnByApp(Z)V
+HSPLcom/android/server/audio/AudioDeviceBroker;->setForceUse_Async(IILjava/lang/String;)V
 PLcom/android/server/audio/AudioDeviceBroker;->setSpeakerphoneOn(ZLjava/lang/String;)Z
-HSPLcom/android/server/audio/AudioDeviceBroker;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceBroker;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->setupMessaging(Landroid/content/Context;)V
+PLcom/android/server/audio/AudioDeviceBroker;->startBluetoothScoForClient_Sync(Landroid/os/IBinder;ILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
+HPLcom/android/server/audio/AudioDeviceBroker;->stopBluetoothScoForClient_Sync(Landroid/os/IBinder;Ljava/lang/String;)V
 HSPLcom/android/server/audio/AudioDeviceBroker;->waitForBrokerHandlerCreation()V
-HSPLcom/android/server/audio/AudioDeviceInventory;->checkSendBecomingNoisyIntentInt(III)I
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;-><init>(ILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;->access$000(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;->getKey()Ljava/lang/String;
+HPLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;->makeDeviceListKey(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceInventory$DeviceInfo;->toString()Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;-><init>(Lcom/android/server/audio/AudioDeviceInventory;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/audio/AudioDeviceInventory;-><clinit>()V
+HSPLcom/android/server/audio/AudioDeviceInventory;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
+HPLcom/android/server/audio/AudioDeviceInventory;->checkSendBecomingNoisyIntentInt(III)I
 PLcom/android/server/audio/AudioDeviceInventory;->disconnectA2dp()V
 PLcom/android/server/audio/AudioDeviceInventory;->disconnectA2dpSink()V
 PLcom/android/server/audio/AudioDeviceInventory;->disconnectHearingAid()V
-HSPLcom/android/server/audio/AudioDeviceInventory;->handleDeviceConnection(ZILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceUnavailableNow(Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioDeviceInventory;->onBluetoothA2dpActiveDeviceChange(Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
-HSPLcom/android/server/audio/AudioDeviceInventory;->onReportNewRoutes()V
-PLcom/android/server/audio/AudioDeviceInventory;->onSetA2dpSinkConnectionState(Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
-HSPLcom/android/server/audio/AudioDeviceInventory;->onSetWiredDeviceConnectionState(Lcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;)V
-HSPLcom/android/server/audio/AudioDeviceInventory;->sendDeviceConnectionIntent(IILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/audio/AudioDeviceInventory;->setBluetoothA2dpDeviceConnectionState(Landroid/bluetooth/BluetoothDevice;IIZII)V
-PLcom/android/server/audio/AudioDeviceInventory;->setCurrentAudioRouteNameIfPossible(Ljava/lang/String;)V
-HSPLcom/android/server/audio/AudioDeviceInventory;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/audio/AudioDeviceInventory;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->getCurAudioRoutes()Landroid/media/AudioRoutesInfo;
+HPLcom/android/server/audio/AudioDeviceInventory;->handleDeviceConnection(ZILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioDeviceInventory;->isCurrentDeviceConnected()Z
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$disconnectA2dp$4(Landroid/util/ArraySet;Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$disconnectA2dp$5$AudioDeviceInventory(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$disconnectA2dpSink$6(Landroid/util/ArraySet;Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$disconnectHearingAid$8(Landroid/util/ArraySet;Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$dump$1(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$dump$2(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->lambda$isCurrentDeviceConnected$10$AudioDeviceInventory(Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;)Z
+HPLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceAvailable(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceUnavailableLater(Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioDeviceInventory;->makeA2dpDeviceUnavailableNow(Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->makeA2dpSrcAvailable(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioDeviceInventory;->onBluetoothA2dpActiveDeviceChange(Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->onMakeA2dpDeviceUnavailableNow(Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioDeviceInventory;->onReportNewRoutes()V
+PLcom/android/server/audio/AudioDeviceInventory;->onRestoreDevices()V
+HPLcom/android/server/audio/AudioDeviceInventory;->onSetA2dpSinkConnectionState(Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->onSetA2dpSourceConnectionState(Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;I)V
+PLcom/android/server/audio/AudioDeviceInventory;->onSetWiredDeviceConnectionState(Lcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;)V
+PLcom/android/server/audio/AudioDeviceInventory;->sendDeviceConnectionIntent(IILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioDeviceInventory;->setBluetoothA2dpDeviceConnectionState(Landroid/bluetooth/BluetoothDevice;IIZII)V
+HPLcom/android/server/audio/AudioDeviceInventory;->setCurrentAudioRouteNameIfPossible(Ljava/lang/String;)V
+PLcom/android/server/audio/AudioDeviceInventory;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/audio/AudioDeviceInventory;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
-HSPLcom/android/server/audio/AudioDeviceInventory;->updateAudioRoutes(II)V
-HSPLcom/android/server/audio/AudioEventLogger$Event;->printLog(Ljava/lang/String;)Lcom/android/server/audio/AudioEventLogger$Event;
-PLcom/android/server/audio/AudioEventLogger$Event;->toString()Ljava/lang/String;
+PLcom/android/server/audio/AudioDeviceInventory;->updateAudioRoutes(II)V
+HSPLcom/android/server/audio/AudioEventLogger$Event;-><clinit>()V
+HSPLcom/android/server/audio/AudioEventLogger$Event;-><init>()V
+HPLcom/android/server/audio/AudioEventLogger$Event;->printLog(Ljava/lang/String;)Lcom/android/server/audio/AudioEventLogger$Event;
+HPLcom/android/server/audio/AudioEventLogger$Event;->toString()Ljava/lang/String;
 HSPLcom/android/server/audio/AudioEventLogger$StringEvent;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/audio/AudioEventLogger$StringEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioEventLogger$StringEvent;->eventToString()Ljava/lang/String;
 HSPLcom/android/server/audio/AudioEventLogger;-><init>(ILjava/lang/String;)V
-PLcom/android/server/audio/AudioEventLogger;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/AudioEventLogger;->dump(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/audio/AudioEventLogger;->log(Lcom/android/server/audio/AudioEventLogger$Event;)V
+HSPLcom/android/server/audio/AudioService$1;-><init>(Lcom/android/server/audio/AudioService;)V
 HSPLcom/android/server/audio/AudioService$1;->onError(I)V
-HSPLcom/android/server/audio/AudioService$3;->binderDied()V
-HSPLcom/android/server/audio/AudioService$AudioHandler;->getSoundEffectFilePath(I)Ljava/lang/String;
+HSPLcom/android/server/audio/AudioService$2;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$3;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$4;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$4;->binderDied()V
+HSPLcom/android/server/audio/AudioService$5;-><init>(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService$AsdProxy;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/IAudioServerStateDispatcher;)V
+PLcom/android/server/audio/AudioService$AsdProxy;->callback()Landroid/media/IAudioServerStateDispatcher;
+HSPLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$AudioHandler;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$1;)V
 HSPLcom/android/server/audio/AudioService$AudioHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/audio/AudioService$AudioHandler;->onLoadSoundEffects()Z
-PLcom/android/server/audio/AudioService$AudioHandler;->onPlaySoundEffect(II)V
-HSPLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+PLcom/android/server/audio/AudioService$AudioHandler;->onPersistSafeVolumeState(I)V
+PLcom/android/server/audio/AudioService$AudioHandler;->persistRingerMode(I)V
+HPLcom/android/server/audio/AudioService$AudioHandler;->persistVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
 HSPLcom/android/server/audio/AudioService$AudioHandler;->setAllVolumes(Lcom/android/server/audio/AudioService$VolumeStreamState;)V
-PLcom/android/server/audio/AudioService$AudioPolicyProxy;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZZZ)V
-PLcom/android/server/audio/AudioService$AudioPolicyProxy;->connectMixes()V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;-><init>(Lcom/android/server/audio/AudioService;Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZZZLandroid/media/projection/IMediaProjection;)V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->addMixes(Ljava/util/ArrayList;)I
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->binderDied()V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->connectMixes()I
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->getRegistrationId()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->hasMixAffectingUsage(II)Z
 PLcom/android/server/audio/AudioService$AudioPolicyProxy;->release()V
+PLcom/android/server/audio/AudioService$AudioPolicyProxy;->toLogFriendlyString()Ljava/lang/String;
+HSPLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$1;)V
 HSPLcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/audio/AudioService$AudioServiceInternal;->adjustStreamVolumeForUid(IIILjava/lang/String;I)V
+HSPLcom/android/server/audio/AudioService$AudioServiceInternal;-><init>(Lcom/android/server/audio/AudioService;)V
 PLcom/android/server/audio/AudioService$AudioServiceInternal;->adjustSuggestedStreamVolumeForUid(IIILjava/lang/String;I)V
 HSPLcom/android/server/audio/AudioService$AudioServiceInternal;->getRingerModeInternal()I
 HSPLcom/android/server/audio/AudioService$AudioServiceInternal;->setAccessibilityServiceUids(Landroid/util/IntArray;)V
 HSPLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeDelegate(Landroid/media/AudioManagerInternal$RingerModeDelegate;)V
 HSPLcom/android/server/audio/AudioService$AudioServiceInternal;->setRingerModeInternal(ILjava/lang/String;)V
+PLcom/android/server/audio/AudioService$AudioServiceInternal;->silenceRingerModeInternal(Ljava/lang/String;)V
 HSPLcom/android/server/audio/AudioService$AudioServiceInternal;->updateRingerModeAffectedStreamsInternal()V
+HSPLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$1;)V
 HSPLcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/audio/AudioService$AudioSystemThread;-><init>(Lcom/android/server/audio/AudioService;)V
 HSPLcom/android/server/audio/AudioService$AudioSystemThread;->run()V
-PLcom/android/server/audio/AudioService$ForceControlStreamClient;-><init>(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;)V
+HPLcom/android/server/audio/AudioService$DeviceVolumeUpdate;-><init>(IIILjava/lang/String;)V
+PLcom/android/server/audio/AudioService$DeviceVolumeUpdate;->getVolumeIndex()I
+PLcom/android/server/audio/AudioService$DeviceVolumeUpdate;->hasVolumeIndex()Z
+HPLcom/android/server/audio/AudioService$ForceControlStreamClient;-><init>(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;)V
+PLcom/android/server/audio/AudioService$ForceControlStreamClient;->getBinder()Landroid/os/IBinder;
 PLcom/android/server/audio/AudioService$ForceControlStreamClient;->release()V
 HSPLcom/android/server/audio/AudioService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/audio/AudioService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/audio/AudioService$Lifecycle;->onStart()V
+HSPLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;-><init>(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$1;)V
 PLcom/android/server/audio/AudioService$RmtSbmxFullVolDeathHandler;-><init>(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;)V
+PLcom/android/server/audio/AudioService$RmtSbmxFullVolDeathHandler;->binderDied()V
 PLcom/android/server/audio/AudioService$RmtSbmxFullVolDeathHandler;->forget()V
 PLcom/android/server/audio/AudioService$RmtSbmxFullVolDeathHandler;->isHandlerFor(Landroid/os/IBinder;)Z
+HSPLcom/android/server/audio/AudioService$RoleObserver;-><init>(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService$RoleObserver;->getAssistantRoleHolder()Ljava/lang/String;
+PLcom/android/server/audio/AudioService$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/audio/AudioService$RoleObserver;->register()V
+PLcom/android/server/audio/AudioService$SetModeDeathHandler;-><init>(Lcom/android/server/audio/AudioService;Landroid/os/IBinder;I)V
+PLcom/android/server/audio/AudioService$SetModeDeathHandler;->binderDied()V
 PLcom/android/server/audio/AudioService$SetModeDeathHandler;->getBinder()Landroid/os/IBinder;
 PLcom/android/server/audio/AudioService$SetModeDeathHandler;->getMode()I
 PLcom/android/server/audio/AudioService$SetModeDeathHandler;->getPid()I
@@ -4178,732 +9213,1661 @@
 HSPLcom/android/server/audio/AudioService$SettingsObserver;-><init>(Lcom/android/server/audio/AudioService;)V
 HSPLcom/android/server/audio/AudioService$SettingsObserver;->onChange(Z)V
 HSPLcom/android/server/audio/AudioService$SettingsObserver;->updateEncodedSurroundOutput()V
-HSPLcom/android/server/audio/AudioService$SoundPoolCallback;->onLoadComplete(Landroid/media/SoundPool;II)V
-HSPLcom/android/server/audio/AudioService$SoundPoolListenerThread;->run()V
-HSPLcom/android/server/audio/AudioService$VolumeController;->asBinder()Landroid/os/IBinder;
-HSPLcom/android/server/audio/AudioService$VolumeController;->isSameBinder(Landroid/media/IVolumeController;)Z
+HSPLcom/android/server/audio/AudioService$VolumeController;-><init>()V
+PLcom/android/server/audio/AudioService$VolumeController;->asBinder()Landroid/os/IBinder;
+HPLcom/android/server/audio/AudioService$VolumeController;->binder(Landroid/media/IVolumeController;)Landroid/os/IBinder;
+HPLcom/android/server/audio/AudioService$VolumeController;->isSameBinder(Landroid/media/IVolumeController;)Z
 HSPLcom/android/server/audio/AudioService$VolumeController;->loadSettings(Landroid/content/ContentResolver;)V
-HSPLcom/android/server/audio/AudioService$VolumeController;->postDismiss()V
-HSPLcom/android/server/audio/AudioService$VolumeController;->postVolumeChanged(II)V
-HSPLcom/android/server/audio/AudioService$VolumeController;->setController(Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService$VolumeController;->postDismiss()V
+PLcom/android/server/audio/AudioService$VolumeController;->postDisplaySafeVolumeWarning(I)V
+HPLcom/android/server/audio/AudioService$VolumeController;->postVolumeChanged(II)V
+PLcom/android/server/audio/AudioService$VolumeController;->setA11yMode(I)V
+PLcom/android/server/audio/AudioService$VolumeController;->setController(Landroid/media/IVolumeController;)V
 HSPLcom/android/server/audio/AudioService$VolumeController;->setLayoutDirection(I)V
 PLcom/android/server/audio/AudioService$VolumeController;->setVisible(Z)V
-PLcom/android/server/audio/AudioService$VolumeController;->suppressAdjustment(IIZ)Z
+HPLcom/android/server/audio/AudioService$VolumeController;->suppressAdjustment(IIZ)Z
 PLcom/android/server/audio/AudioService$VolumeController;->toString()Ljava/lang/String;
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->access$800(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
-PLcom/android/server/audio/AudioService$VolumeStreamState;->adjustIndex(IILjava/lang/String;)Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;-><init>(Lcom/android/server/audio/AudioService;Ljava/lang/String;ILcom/android/server/audio/AudioService$1;)V
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->access$1000(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->access$1100(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->access$1300(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->access$1402(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/audio/AudioService$VolumeStreamState;->access$1900(Lcom/android/server/audio/AudioService$VolumeStreamState;)Landroid/util/SparseIntArray;
+PLcom/android/server/audio/AudioService$VolumeStreamState;->access$3500(Lcom/android/server/audio/AudioService$VolumeStreamState;)Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->access$800(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+PLcom/android/server/audio/AudioService$VolumeStreamState;->access$900(Lcom/android/server/audio/AudioService$VolumeStreamState;)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->adjustIndex(IILjava/lang/String;)Z
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->applyAllVolumes()V
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->applyDeviceVolume_syncVSS(IZ)V
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->checkFixedVolumeDevices()V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/audio/AudioService$VolumeStreamState;->getAbsoluteVolumeIndex(I)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->getAbsoluteVolumeIndex(I)I
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getIndex(I)I
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getMaxIndex()I
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getMinIndex()I
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getSettingNameForDevice(I)Ljava/lang/String;
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getStreamType()I
-PLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z
-HSPLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Z)V
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->getValidIndex(I)I
+HPLcom/android/server/audio/AudioService$VolumeStreamState;->hasIndexForDevice(I)Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->hasValidSettingsName()Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->mute(Z)Z
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->observeDevicesForStream_syncVSS(Z)I
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->readSettings()V
-HSPLcom/android/server/audio/AudioService$VolumeStreamState;->refreshRange(I)V
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexes(Lcom/android/server/audio/AudioService$VolumeStreamState;Ljava/lang/String;)V
+PLcom/android/server/audio/AudioService$VolumeStreamState;->setAllIndexesToMax()V
 HSPLcom/android/server/audio/AudioService$VolumeStreamState;->setIndex(IILjava/lang/String;)Z
+HSPLcom/android/server/audio/AudioService$VolumeStreamState;->setStreamVolumeIndex(II)V
+HSPLcom/android/server/audio/AudioService;-><clinit>()V
 HSPLcom/android/server/audio/AudioService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
+HPLcom/android/server/audio/AudioService;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
+PLcom/android/server/audio/AudioService;->access$000(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/RecordingActivityMonitor;
+HSPLcom/android/server/audio/AudioService;->access$100(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$AudioHandler;
+HSPLcom/android/server/audio/AudioService;->access$102(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$AudioHandler;)Lcom/android/server/audio/AudioService$AudioHandler;
+HSPLcom/android/server/audio/AudioService;->access$200(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+HSPLcom/android/server/audio/AudioService;->access$2000(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioDeviceBroker;
+PLcom/android/server/audio/AudioService;->access$2100(Lcom/android/server/audio/AudioService;ILandroid/os/IBinder;ILjava/lang/String;)I
+HSPLcom/android/server/audio/AudioService;->access$2300(Lcom/android/server/audio/AudioService;I)V
+HSPLcom/android/server/audio/AudioService;->access$2400(Lcom/android/server/audio/AudioService;Landroid/content/Intent;)V
+HSPLcom/android/server/audio/AudioService;->access$2500(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+HSPLcom/android/server/audio/AudioService;->access$2600(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$2700(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$2800(Lcom/android/server/audio/AudioService;)Landroid/content/ContentResolver;
+PLcom/android/server/audio/AudioService;->access$2900(Lcom/android/server/audio/AudioService;)[F
+HSPLcom/android/server/audio/AudioService;->access$3000(Lcom/android/server/audio/AudioService;)[Lcom/android/server/audio/AudioService$VolumeStreamState;
+HSPLcom/android/server/audio/AudioService;->access$3100(Lcom/android/server/audio/AudioService;III)I
+PLcom/android/server/audio/AudioService;->access$3200(Lcom/android/server/audio/AudioService;I)I
+PLcom/android/server/audio/AudioService;->access$3400(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->access$3600(Lcom/android/server/audio/AudioService;Z)V
+HSPLcom/android/server/audio/AudioService;->access$3700(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/SoundEffectsHelper;
+HSPLcom/android/server/audio/AudioService;->access$3800(Lcom/android/server/audio/AudioService;)Z
+PLcom/android/server/audio/AudioService;->access$4100(Lcom/android/server/audio/AudioService;Ljava/lang/String;)V
+HSPLcom/android/server/audio/AudioService;->access$4200(Lcom/android/server/audio/AudioService;ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->access$4300(Lcom/android/server/audio/AudioService;I)V
+HSPLcom/android/server/audio/AudioService;->access$4700(Lcom/android/server/audio/AudioService;)V
+PLcom/android/server/audio/AudioService;->access$4800(Lcom/android/server/audio/AudioService;Lcom/android/server/audio/AudioService$DeviceVolumeUpdate;)V
+PLcom/android/server/audio/AudioService;->access$4900(Lcom/android/server/audio/AudioService;)V
+HSPLcom/android/server/audio/AudioService;->access$5200(Lcom/android/server/audio/AudioService;)I
+HSPLcom/android/server/audio/AudioService;->access$5202(Lcom/android/server/audio/AudioService;I)I
+HSPLcom/android/server/audio/AudioService;->access$5302(Lcom/android/server/audio/AudioService;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/audio/AudioService;->access$5400(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$5500(Lcom/android/server/audio/AudioService;IZ)V
+HSPLcom/android/server/audio/AudioService;->access$5600(Lcom/android/server/audio/AudioService;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/audio/AudioService;->access$5700(Lcom/android/server/audio/AudioService;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/audio/AudioService;->access$5800(Lcom/android/server/audio/AudioService;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/audio/AudioService;->access$5900(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$5902(Lcom/android/server/audio/AudioService;Z)Z
+HSPLcom/android/server/audio/AudioService;->access$600(Lcom/android/server/audio/AudioService;)Landroid/content/Context;
+HSPLcom/android/server/audio/AudioService;->access$6000(Lcom/android/server/audio/AudioService;Landroid/content/ContentResolver;Z)V
+HSPLcom/android/server/audio/AudioService;->access$6100(Lcom/android/server/audio/AudioService;Landroid/content/ContentResolver;)V
+PLcom/android/server/audio/AudioService;->access$6400(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$6500(Lcom/android/server/audio/AudioService;Landroid/content/Context;)V
+HSPLcom/android/server/audio/AudioService;->access$6600(Lcom/android/server/audio/AudioService;)Z
+HSPLcom/android/server/audio/AudioService;->access$6602(Lcom/android/server/audio/AudioService;Z)Z
+HSPLcom/android/server/audio/AudioService;->access$6700(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/MediaFocusControl;
+HSPLcom/android/server/audio/AudioService;->access$6800(Lcom/android/server/audio/AudioService;Z)V
+HSPLcom/android/server/audio/AudioService;->access$700(Lcom/android/server/audio/AudioService;Z)V
+PLcom/android/server/audio/AudioService;->access$7000(Lcom/android/server/audio/AudioService;Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/audio/AudioService;->access$7800(Lcom/android/server/audio/AudioService;)Lcom/android/server/audio/AudioService$VolumeController;
+HSPLcom/android/server/audio/AudioService;->access$7900(Lcom/android/server/audio/AudioService;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
+HSPLcom/android/server/audio/AudioService;->access$7902(Lcom/android/server/audio/AudioService;Landroid/media/AudioManagerInternal$RingerModeDelegate;)Landroid/media/AudioManagerInternal$RingerModeDelegate;
+HPLcom/android/server/audio/AudioService;->access$8000(Lcom/android/server/audio/AudioService;IIILjava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/audio/AudioService;->access$8200(Lcom/android/server/audio/AudioService;)Ljava/lang/Object;
+HSPLcom/android/server/audio/AudioService;->access$8300(Lcom/android/server/audio/AudioService;)[I
+HSPLcom/android/server/audio/AudioService;->access$8302(Lcom/android/server/audio/AudioService;[I)[I
+PLcom/android/server/audio/AudioService;->access$8408(Lcom/android/server/audio/AudioService;)I
+PLcom/android/server/audio/AudioService;->access$8900(Lcom/android/server/audio/AudioService;)Ljava/util/HashMap;
+PLcom/android/server/audio/AudioService;->addMixForPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;)I
 PLcom/android/server/audio/AudioService;->adjustStreamVolume(IIILjava/lang/String;)V
-PLcom/android/server/audio/AudioService;->adjustStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioService;->adjustSuggestedStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioService;->avrcpSupportsAbsoluteVolume(Ljava/lang/String;Z)V
+HPLcom/android/server/audio/AudioService;->adjustStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioService;->adjustSuggestedStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioService;->avrcpSupportsAbsoluteVolume(Ljava/lang/String;Z)V
+HSPLcom/android/server/audio/AudioService;->broadcastMasterMuteStatus(Z)V
+HSPLcom/android/server/audio/AudioService;->broadcastRingerMode(Ljava/lang/String;I)V
 HSPLcom/android/server/audio/AudioService;->broadcastVibrateSetting(I)V
+PLcom/android/server/audio/AudioService;->callerHasPermission(Ljava/lang/String;)Z
+PLcom/android/server/audio/AudioService;->canChangeAccessibilityVolume()Z
 HSPLcom/android/server/audio/AudioService;->checkAllAliasStreamVolumes()V
-PLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z
-HSPLcom/android/server/audio/AudioService;->checkMusicActive(ILjava/lang/String;)V
+HSPLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices()V
+PLcom/android/server/audio/AudioService;->checkAllFixedVolumeDevices(I)V
+HPLcom/android/server/audio/AudioService;->checkAudioSettingsPermission(Ljava/lang/String;)Z
+HPLcom/android/server/audio/AudioService;->checkForRingerModeChange(IIIZLjava/lang/String;I)I
+HPLcom/android/server/audio/AudioService;->checkMonitorAudioServerStatePermission()V
+PLcom/android/server/audio/AudioService;->checkMusicActive(ILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->checkMuteAffectedStreams()V
-PLcom/android/server/audio/AudioService;->checkSafeMediaVolume(III)Z
-HSPLcom/android/server/audio/AudioService;->checkVolumeCecOnHdmiConnection(ILjava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->checkSafeMediaVolume(III)Z
+PLcom/android/server/audio/AudioService;->checkUpdateForPolicy(Landroid/media/audiopolicy/IAudioPolicyCallback;Ljava/lang/String;)Lcom/android/server/audio/AudioService$AudioPolicyProxy;
+HSPLcom/android/server/audio/AudioService;->createAudioSystemThread()V
 HSPLcom/android/server/audio/AudioService;->createStreamStates()V
 PLcom/android/server/audio/AudioService;->disableRingtoneSync(I)V
+PLcom/android/server/audio/AudioService;->disableSafeMediaVolume(Ljava/lang/String;)V
 PLcom/android/server/audio/AudioService;->discardRmtSbmxFullVolDeathHandlerFor(Landroid/os/IBinder;)Z
-PLcom/android/server/audio/AudioService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/audio/AudioService;->dumpAudioPolicies(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/AudioService;->dumpDeviceTypes(Ljava/util/Set;)Ljava/lang/String;
 PLcom/android/server/audio/AudioService;->dumpRingerMode(Ljava/io/PrintWriter;)V
-PLcom/android/server/audio/AudioService;->dumpRingerModeStreams(Ljava/io/PrintWriter;Ljava/lang/String;I)V
-PLcom/android/server/audio/AudioService;->dumpStreamStates(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/AudioService;->dumpRingerModeStreams(Ljava/io/PrintWriter;Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioService;->dumpStreamStates(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/AudioService;->dumpSupportedSystemUsage(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/AudioService;->enforceModifyAudioRoutingPermission()V
 HSPLcom/android/server/audio/AudioService;->enforceSafeMediaVolume(Ljava/lang/String;)V
-PLcom/android/server/audio/AudioService;->ensureValidDirection(I)V
+HSPLcom/android/server/audio/AudioService;->enforceVolumeController(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->ensureValidDirection(I)V
+HSPLcom/android/server/audio/AudioService;->ensureValidRingerMode(I)V
 HSPLcom/android/server/audio/AudioService;->ensureValidStreamType(I)V
-HSPLcom/android/server/audio/AudioService;->forceFocusDuckingForAccessibility(Landroid/media/AudioAttributes;II)Z
-PLcom/android/server/audio/AudioService;->forceRemoteSubmixFullVolume(ZLandroid/os/IBinder;)V
-PLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V
-HSPLcom/android/server/audio/AudioService;->getActivePlaybackConfigurations()Ljava/util/List;
-PLcom/android/server/audio/AudioService;->getActiveStreamType(I)I
+PLcom/android/server/audio/AudioService;->forceFocusDuckingForAccessibility(Landroid/media/AudioAttributes;II)Z
+HPLcom/android/server/audio/AudioService;->forceRemoteSubmixFullVolume(ZLandroid/os/IBinder;)V
+HPLcom/android/server/audio/AudioService;->forceVolumeControlStream(ILandroid/os/IBinder;)V
+HPLcom/android/server/audio/AudioService;->getActivePlaybackConfigurations()Ljava/util/List;
+HPLcom/android/server/audio/AudioService;->getActiveRecordingConfigurations()Ljava/util/List;
+HPLcom/android/server/audio/AudioService;->getActiveStreamType(I)I
+HSPLcom/android/server/audio/AudioService;->getAudioHalPids()Ljava/util/Set;
+PLcom/android/server/audio/AudioService;->getAudioProductStrategies()Ljava/util/List;
+PLcom/android/server/audio/AudioService;->getContentResolver()Landroid/content/ContentResolver;
 HSPLcom/android/server/audio/AudioService;->getCurrentAudioFocus()I
 HSPLcom/android/server/audio/AudioService;->getCurrentUserId()I
 HSPLcom/android/server/audio/AudioService;->getDeviceForStream(I)I
+HPLcom/android/server/audio/AudioService;->getDevicesForAttributes(Landroid/media/AudioAttributes;)Ljava/util/ArrayList;
+HPLcom/android/server/audio/AudioService;->getDevicesForAttributes(Landroid/media/AudioAttributes;)Ljava/util/List;
+HSPLcom/android/server/audio/AudioService;->getDevicesForStream(I)I
 HSPLcom/android/server/audio/AudioService;->getDevicesForStream(IZ)I
 HSPLcom/android/server/audio/AudioService;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
-HSPLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I
+PLcom/android/server/audio/AudioService;->getHearingAidStreamType(I)I
+HSPLcom/android/server/audio/AudioService;->getIndexRange(I)I
+HPLcom/android/server/audio/AudioService;->getLastAudibleStreamVolume(I)I
 HSPLcom/android/server/audio/AudioService;->getMode()I
+PLcom/android/server/audio/AudioService;->getModeOwnerPid()I
 PLcom/android/server/audio/AudioService;->getNewRingerMode(III)I
 HSPLcom/android/server/audio/AudioService;->getRingerModeExternal()I
 HSPLcom/android/server/audio/AudioService;->getRingerModeInternal()I
-HSPLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer;
+HPLcom/android/server/audio/AudioService;->getRingtonePlayer()Landroid/media/IRingtonePlayer;
 HSPLcom/android/server/audio/AudioService;->getSafeUsbMediaVolumeIndex()I
-HSPLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I
-HSPLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I
-PLcom/android/server/audio/AudioService;->getStreamState(I)Lcom/android/server/audio/AudioService$VolumeStreamState;
+HPLcom/android/server/audio/AudioService;->getStreamMaxVolume(I)I
+HPLcom/android/server/audio/AudioService;->getStreamMinVolume(I)I
 HSPLcom/android/server/audio/AudioService;->getStreamVolume(I)I
-PLcom/android/server/audio/AudioService;->getUiSoundsStreamType()I
+HPLcom/android/server/audio/AudioService;->getUiSoundsStreamType()I
 HSPLcom/android/server/audio/AudioService;->getVibrateSetting(I)I
-PLcom/android/server/audio/AudioService;->handleAudioEffectBroadcast(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/audio/AudioService;->handleAudioEffectBroadcast(Landroid/content/Context;Landroid/content/Intent;)V
 PLcom/android/server/audio/AudioService;->handleBluetoothA2dpDeviceConfigChange(Landroid/bluetooth/BluetoothDevice;)V
 HSPLcom/android/server/audio/AudioService;->handleConfigurationChanged(Landroid/content/Context;)V
-PLcom/android/server/audio/AudioService;->hasMediaDynamicPolicy()Z
-PLcom/android/server/audio/AudioService;->isAndroidNPlus(Ljava/lang/String;)Z
-PLcom/android/server/audio/AudioService;->isBluetoothA2dpOn()Z
+PLcom/android/server/audio/AudioService;->hasAudioFocusUsers()Z
+PLcom/android/server/audio/AudioService;->hasHapticChannels(Landroid/net/Uri;)Z
+HPLcom/android/server/audio/AudioService;->hasMediaDynamicPolicy()Z
+PLcom/android/server/audio/AudioService;->hasRmtSbmxFullVolDeathHandlerFor(Landroid/os/IBinder;)Z
+HSPLcom/android/server/audio/AudioService;->initA11yMonitoring()V
+PLcom/android/server/audio/AudioService;->isAlarm(I)Z
+HPLcom/android/server/audio/AudioService;->isAndroidNPlus(Ljava/lang/String;)Z
+HPLcom/android/server/audio/AudioService;->isAudioServerRunning()Z
+HPLcom/android/server/audio/AudioService;->isBluetoothA2dpOn()Z
 HSPLcom/android/server/audio/AudioService;->isBluetoothScoOn()Z
-PLcom/android/server/audio/AudioService;->isCameraSoundForced()Z
+HPLcom/android/server/audio/AudioService;->isCameraSoundForced()Z
 HSPLcom/android/server/audio/AudioService;->isInCommunication()Z
+PLcom/android/server/audio/AudioService;->isMedia(I)Z
+HSPLcom/android/server/audio/AudioService;->isMicrophoneMuted()Z
+PLcom/android/server/audio/AudioService;->isMuteAdjust(I)Z
+PLcom/android/server/audio/AudioService;->isNonVoiceCommunicationCaptureMix(Landroid/media/audiopolicy/AudioMix;)Z
+PLcom/android/server/audio/AudioService;->isNotificationOrRinger(I)Z
 HSPLcom/android/server/audio/AudioService;->isPlatformTelevision()Z
-PLcom/android/server/audio/AudioService;->isPolicyRegisterAllowed(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/projection/IMediaProjection;)Z
-PLcom/android/server/audio/AudioService;->isSpeakerphoneOn()Z
+PLcom/android/server/audio/AudioService;->isPolicyRegisterAllowed(Landroid/media/audiopolicy/AudioPolicyConfig;ZZLandroid/media/projection/IMediaProjection;)Z
+HPLcom/android/server/audio/AudioService;->isSpeakerphoneOn()Z
 HSPLcom/android/server/audio/AudioService;->isStreamAffectedByMute(I)Z
 HSPLcom/android/server/audio/AudioService;->isStreamAffectedByRingerMode(I)Z
-HSPLcom/android/server/audio/AudioService;->isStreamMute(I)Z
+HPLcom/android/server/audio/AudioService;->isStreamMute(I)Z
+HSPLcom/android/server/audio/AudioService;->isStreamMutedByRingerOrZenMode(I)Z
+HSPLcom/android/server/audio/AudioService;->isSystem(I)Z
+PLcom/android/server/audio/AudioService;->isValidAudioAttributesUsage(Landroid/media/AudioAttributes;)Z
 HSPLcom/android/server/audio/AudioService;->isValidRingerMode(I)Z
-HSPLcom/android/server/audio/AudioService;->loadTouchSoundAssets()V
+PLcom/android/server/audio/AudioService;->isVoiceCommunicationPlaybackCaptureMix(Landroid/media/audiopolicy/AudioMix;)Z
+PLcom/android/server/audio/AudioService;->makeAlsaAddressString(II)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->maybeSendSystemAudioStatusCommand(Z)V
+PLcom/android/server/audio/AudioService;->maybeVibrate(Landroid/os/VibrationEffect;Ljava/lang/String;)Z
 HSPLcom/android/server/audio/AudioService;->muteRingerModeStreams()V
-PLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V
-HSPLcom/android/server/audio/AudioService;->observeDevicesForAllStreams()V
+HPLcom/android/server/audio/AudioService;->notifyVolumeControllerVisible(Landroid/media/IVolumeController;Z)V
 HSPLcom/android/server/audio/AudioService;->observeDevicesForStreams(I)V
 HSPLcom/android/server/audio/AudioService;->onAccessibilityServicesStateChanged(Landroid/view/accessibility/AccessibilityManager;)V
-HSPLcom/android/server/audio/AudioService;->onAccessoryPlugMediaUnmute(I)V
-PLcom/android/server/audio/AudioService;->onCheckMusicActive(Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->onAccessoryPlugMediaUnmute(I)V
+PLcom/android/server/audio/AudioService;->onAudioServerDied()V
+HPLcom/android/server/audio/AudioService;->onCheckMusicActive(Ljava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->onConfigureSafeVolume(ZLjava/lang/String;)V
+PLcom/android/server/audio/AudioService;->onDispatchAudioServerStateChange(Z)V
 HSPLcom/android/server/audio/AudioService;->onIndicateSystemReady()V
+PLcom/android/server/audio/AudioService;->onObserveDevicesForAllStreams()V
 PLcom/android/server/audio/AudioService;->onSetStreamVolume(IIIILjava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->onSetVolumeIndexOnDevice(Lcom/android/server/audio/AudioService$DeviceVolumeUpdate;)V
 HSPLcom/android/server/audio/AudioService;->onSystemReady()V
-PLcom/android/server/audio/AudioService;->playSoundEffect(I)V
-PLcom/android/server/audio/AudioService;->playSoundEffectVolume(IF)V
-HSPLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V
-PLcom/android/server/audio/AudioService;->playerEvent(II)V
-HSPLcom/android/server/audio/AudioService;->playerHasOpPlayAudio(IZ)V
-HSPLcom/android/server/audio/AudioService;->postAccessoryPlugMediaUnmute(I)V
+PLcom/android/server/audio/AudioService;->onTouchExplorationStateChanged(Z)V
+HSPLcom/android/server/audio/AudioService;->onUpdateRingerModeServiceInt()V
+HPLcom/android/server/audio/AudioService;->playSoundEffect(I)V
+HPLcom/android/server/audio/AudioService;->playSoundEffectVolume(IF)V
+HPLcom/android/server/audio/AudioService;->playerAttributes(ILandroid/media/AudioAttributes;)V
+HPLcom/android/server/audio/AudioService;->playerEvent(II)V
+PLcom/android/server/audio/AudioService;->postAccessoryPlugMediaUnmute(I)V
+PLcom/android/server/audio/AudioService;->postObserveDevicesForAllStreams()V
+PLcom/android/server/audio/AudioService;->postSetVolumeIndexOnDevice(IIILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->postUpdateRingerModeServiceInt()V
 HSPLcom/android/server/audio/AudioService;->readAndSetLowRamDevice()V
 HSPLcom/android/server/audio/AudioService;->readAudioSettings(Z)V
-PLcom/android/server/audio/AudioService;->readCameraSoundForced()Z
+HSPLcom/android/server/audio/AudioService;->readCameraSoundForced()Z
 HSPLcom/android/server/audio/AudioService;->readDockAudioSettings(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/audio/AudioService;->readPersistedSettings()V
 HSPLcom/android/server/audio/AudioService;->readUserRestrictions()V
+HPLcom/android/server/audio/AudioService;->recorderEvent(II)V
 PLcom/android/server/audio/AudioService;->registerAudioPolicy(Landroid/media/audiopolicy/AudioPolicyConfig;Landroid/media/audiopolicy/IAudioPolicyCallback;ZZZZLandroid/media/projection/IMediaProjection;)Ljava/lang/String;
 PLcom/android/server/audio/AudioService;->registerAudioServerStateDispatcher(Landroid/media/IAudioServerStateDispatcher;)V
 HSPLcom/android/server/audio/AudioService;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
-HSPLcom/android/server/audio/AudioService;->releasePlayer(I)V
-HSPLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
+PLcom/android/server/audio/AudioService;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
+HPLcom/android/server/audio/AudioService;->releasePlayer(I)V
+HPLcom/android/server/audio/AudioService;->releaseRecorder(I)V
+HPLcom/android/server/audio/AudioService;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;ILandroid/media/audiopolicy/IAudioPolicyCallback;I)I
 HSPLcom/android/server/audio/AudioService;->rescaleIndex(III)I
+HPLcom/android/server/audio/AudioService;->rescaleStep(III)I
+HSPLcom/android/server/audio/AudioService;->safeMediaVolumeIndex(I)I
+PLcom/android/server/audio/AudioService;->safeMediaVolumeStateToString(I)Ljava/lang/String;
+PLcom/android/server/audio/AudioService;->saveMusicActiveMs()V
+HSPLcom/android/server/audio/AudioService;->scheduleLoadSoundEffects()V
 HSPLcom/android/server/audio/AudioService;->sendBroadcastToAll(Landroid/content/Intent;)V
 HSPLcom/android/server/audio/AudioService;->sendEnabledSurroundFormats(Landroid/content/ContentResolver;Z)V
 HSPLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(ILjava/lang/String;)V
-PLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
+HSPLcom/android/server/audio/AudioService;->sendEncodedSurroundMode(Landroid/content/ContentResolver;Ljava/lang/String;)V
+HSPLcom/android/server/audio/AudioService;->sendMsg(Landroid/os/Handler;IIIILjava/lang/Object;I)V
 HSPLcom/android/server/audio/AudioService;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
-PLcom/android/server/audio/AudioService;->sendVolumeUpdate(IIII)V
-PLcom/android/server/audio/AudioService;->setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(Landroid/bluetooth/BluetoothDevice;IIZI)V
-PLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V
-PLcom/android/server/audio/AudioService;->setBluetoothScoOn(Z)V
-HSPLcom/android/server/audio/AudioService;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+HPLcom/android/server/audio/AudioService;->sendVolumeUpdate(IIIII)V
+PLcom/android/server/audio/AudioService;->setAllowedCapturePolicy(I)I
+HPLcom/android/server/audio/AudioService;->setBluetoothA2dpDeviceConnectionStateSuppressNoisyIntent(Landroid/bluetooth/BluetoothDevice;IIZI)V
+HPLcom/android/server/audio/AudioService;->setBluetoothA2dpOn(Z)V
+HPLcom/android/server/audio/AudioService;->setBluetoothScoOn(Z)V
+HPLcom/android/server/audio/AudioService;->setDeviceVolume(Lcom/android/server/audio/AudioService$VolumeStreamState;I)V
+HSPLcom/android/server/audio/AudioService;->setMicMuteFromSwitchInput()V
 PLcom/android/server/audio/AudioService;->setMicrophoneMute(ZLjava/lang/String;I)V
-PLcom/android/server/audio/AudioService;->setMicrophoneMuteNoCallerCheck(ZI)V
-PLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V
-PLcom/android/server/audio/AudioService;->setModeInt(ILandroid/os/IBinder;ILjava/lang/String;)I
+HSPLcom/android/server/audio/AudioService;->setMicrophoneMuteNoCallerCheck(I)V
+HPLcom/android/server/audio/AudioService;->setMode(ILandroid/os/IBinder;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->setModeInt(ILandroid/os/IBinder;ILjava/lang/String;)I
 HSPLcom/android/server/audio/AudioService;->setRingerMode(ILjava/lang/String;Z)V
 HSPLcom/android/server/audio/AudioService;->setRingerModeExt(I)V
+PLcom/android/server/audio/AudioService;->setRingerModeExternal(ILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->setRingerModeInt(IZ)V
 HSPLcom/android/server/audio/AudioService;->setRingerModeInternal(ILjava/lang/String;)V
-HSPLcom/android/server/audio/AudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V
-PLcom/android/server/audio/AudioService;->setSpeakerphoneOn(Z)V
-PLcom/android/server/audio/AudioService;->setStreamVolume(IIILjava/lang/String;)V
-PLcom/android/server/audio/AudioService;->setStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/audio/AudioService;->setRingtonePlayer(Landroid/media/IRingtonePlayer;)V
+PLcom/android/server/audio/AudioService;->setSafeMediaVolumeEnabled(ZLjava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->setSpeakerphoneOn(Z)V
+HPLcom/android/server/audio/AudioService;->setStreamVolume(IIILjava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->setStreamVolume(IIILjava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/audio/AudioService;->setStreamVolumeInt(IIIZLjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->setSystemAudioMute(Z)V
-PLcom/android/server/audio/AudioService;->setSystemAudioVolume(IIII)V
-HSPLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V
-HSPLcom/android/server/audio/AudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V
-HSPLcom/android/server/audio/AudioService;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/audio/AudioService;->setSystemAudioVolume(IIII)V
+PLcom/android/server/audio/AudioService;->setVolumeController(Landroid/media/IVolumeController;)V
+PLcom/android/server/audio/AudioService;->setVolumePolicy(Landroid/media/VolumePolicy;)V
+PLcom/android/server/audio/AudioService;->setWiredDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->shouldZenMuteStream(I)Z
+PLcom/android/server/audio/AudioService;->silenceRingerModeInternal(Ljava/lang/String;)V
 PLcom/android/server/audio/AudioService;->startBluetoothSco(Landroid/os/IBinder;I)V
 PLcom/android/server/audio/AudioService;->startBluetoothScoInt(Landroid/os/IBinder;ILjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->startWatchingRoutes(Landroid/media/IAudioRoutesObserver;)Landroid/media/AudioRoutesInfo;
-PLcom/android/server/audio/AudioService;->stopBluetoothSco(Landroid/os/IBinder;)V
+HPLcom/android/server/audio/AudioService;->stopBluetoothSco(Landroid/os/IBinder;)V
 HSPLcom/android/server/audio/AudioService;->systemReady()V
 HSPLcom/android/server/audio/AudioService;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
+HPLcom/android/server/audio/AudioService;->trackRecorder(Landroid/os/IBinder;)I
+PLcom/android/server/audio/AudioService;->unloadSoundEffects()V
 PLcom/android/server/audio/AudioService;->unregisterAudioPolicy(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
 PLcom/android/server/audio/AudioService;->unregisterAudioPolicyAsync(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
 PLcom/android/server/audio/AudioService;->unregisterAudioPolicyInt(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+PLcom/android/server/audio/AudioService;->unregisterAudioServerStateDispatcher(Landroid/media/IAudioServerStateDispatcher;)V
 PLcom/android/server/audio/AudioService;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
+PLcom/android/server/audio/AudioService;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
+HSPLcom/android/server/audio/AudioService;->updateA11yVolumeAlias(Z)V
+PLcom/android/server/audio/AudioService;->updateAbsVolumeMultiModeDevices(II)V
 HSPLcom/android/server/audio/AudioService;->updateAssistantUId(Z)V
+HSPLcom/android/server/audio/AudioService;->updateAudioHalPids()V
+HSPLcom/android/server/audio/AudioService;->updateDefaultStreamOverrideDelay(Z)V
 HSPLcom/android/server/audio/AudioService;->updateDefaultVolumes()V
-PLcom/android/server/audio/AudioService;->updateFlagsForSystemAudio(I)I
+HPLcom/android/server/audio/AudioService;->updateFlagsForTvPlatform(I)I
 HSPLcom/android/server/audio/AudioService;->updateMasterBalance(Landroid/content/ContentResolver;)V
+HSPLcom/android/server/audio/AudioService;->updateMasterMono(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/audio/AudioService;->updateRingerAndZenModeAffectedStreams()Z
+HSPLcom/android/server/audio/AudioService;->updateRttEanbled(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/audio/AudioService;->updateStreamVolumeAlias(ZLjava/lang/String;)V
 HSPLcom/android/server/audio/AudioService;->updateZenModeAffectedStreams()Z
-PLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z
+HSPLcom/android/server/audio/AudioService;->validateAudioAttributesUsage(Landroid/media/AudioAttributes;)V
+HPLcom/android/server/audio/AudioService;->volumeAdjustmentAllowedByDnd(II)Z
 HSPLcom/android/server/audio/AudioService;->waitForAudioHandlerCreation()V
-PLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;->eventToString()Ljava/lang/String;
-PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;->eventToString()Ljava/lang/String;
-PLcom/android/server/audio/AudioServiceEvents$VolumeEvent;->eventToString()Ljava/lang/String;
-HSPLcom/android/server/audio/BtHelper$1;->onServiceConnected(ILandroid/bluetooth/BluetoothProfile;)V
+HPLcom/android/server/audio/AudioService;->wasStreamActiveRecently(II)Z
+PLcom/android/server/audio/AudioService;->wouldToggleZenMode(I)Z
+HSPLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/audio/AudioServiceEvents$ForceUseEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;-><init>(Ljava/lang/String;IIII)V
+HPLcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;->eventToString()Ljava/lang/String;
+HPLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(II)V
+HPLcom/android/server/audio/AudioServiceEvents$VolumeEvent;-><init>(IIIILjava/lang/String;)V
+HPLcom/android/server/audio/AudioServiceEvents$VolumeEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/AudioServiceEvents$WiredDevConnectEvent;-><init>(Lcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;)V
+PLcom/android/server/audio/AudioServiceEvents$WiredDevConnectEvent;->eventToString()Ljava/lang/String;
+HSPLcom/android/server/audio/AudioSystemAdapter;-><init>()V
+HSPLcom/android/server/audio/AudioSystemAdapter;->getDefaultAdapter()Lcom/android/server/audio/AudioSystemAdapter;
+PLcom/android/server/audio/AudioSystemAdapter;->handleDeviceConfigChange(ILjava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/audio/AudioSystemAdapter;->setDeviceConnectionState(IILjava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/audio/AudioSystemAdapter;->setParameters(Ljava/lang/String;)I
+HSPLcom/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$1;->onServiceDisconnected(I)V
+PLcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;-><init>(Landroid/bluetooth/BluetoothDevice;)V
+HPLcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;-><init>(Landroid/bluetooth/BluetoothDevice;II)V
 PLcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;->getBtDevice()Landroid/bluetooth/BluetoothDevice;
 PLcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;->getCodec()I
 PLcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;->getVolume()I
+PLcom/android/server/audio/BtHelper$ScoClient;-><init>(Lcom/android/server/audio/BtHelper;Landroid/os/IBinder;)V
 PLcom/android/server/audio/BtHelper$ScoClient;->clearCount(Z)V
+PLcom/android/server/audio/BtHelper$ScoClient;->decCount()V
+PLcom/android/server/audio/BtHelper$ScoClient;->getBinder()Landroid/os/IBinder;
 PLcom/android/server/audio/BtHelper$ScoClient;->getCount()I
+PLcom/android/server/audio/BtHelper$ScoClient;->getPid()I
 PLcom/android/server/audio/BtHelper$ScoClient;->incCount(I)V
-PLcom/android/server/audio/BtHelper$ScoClient;->requestScoState(II)V
+PLcom/android/server/audio/BtHelper$ScoClient;->requestScoState(II)Z
+PLcom/android/server/audio/BtHelper$ScoClient;->totalCount()I
+HSPLcom/android/server/audio/BtHelper;-><init>(Lcom/android/server/audio/AudioDeviceBroker;)V
 PLcom/android/server/audio/BtHelper;->a2dpDeviceEventToString(I)Ljava/lang/String;
+PLcom/android/server/audio/BtHelper;->access$000(Lcom/android/server/audio/BtHelper;)Lcom/android/server/audio/AudioDeviceBroker;
+PLcom/android/server/audio/BtHelper;->access$100(Lcom/android/server/audio/BtHelper;)Ljava/util/ArrayList;
+PLcom/android/server/audio/BtHelper;->access$1000(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/BluetoothDevice;I)Z
+PLcom/android/server/audio/BtHelper;->access$200(Lcom/android/server/audio/BtHelper;)V
+PLcom/android/server/audio/BtHelper;->access$300(Lcom/android/server/audio/BtHelper;I)V
+PLcom/android/server/audio/BtHelper;->access$400(Lcom/android/server/audio/BtHelper;)I
+PLcom/android/server/audio/BtHelper;->access$402(Lcom/android/server/audio/BtHelper;I)I
+PLcom/android/server/audio/BtHelper;->access$500(Lcom/android/server/audio/BtHelper;)I
+PLcom/android/server/audio/BtHelper;->access$502(Lcom/android/server/audio/BtHelper;I)I
+PLcom/android/server/audio/BtHelper;->access$600(Lcom/android/server/audio/BtHelper;)Landroid/bluetooth/BluetoothDevice;
+PLcom/android/server/audio/BtHelper;->access$700(Lcom/android/server/audio/BtHelper;)Landroid/bluetooth/BluetoothHeadset;
+PLcom/android/server/audio/BtHelper;->access$900(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/BluetoothDevice;I)Z
+HSPLcom/android/server/audio/BtHelper;->broadcastScoConnectionState(I)V
+PLcom/android/server/audio/BtHelper;->checkScoAudioState()V
 HSPLcom/android/server/audio/BtHelper;->clearAllScoClients(IZ)V
+PLcom/android/server/audio/BtHelper;->connectBluetoothScoAudioHelper(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/BluetoothDevice;I)Z
 PLcom/android/server/audio/BtHelper;->disconnectAllBluetoothProfiles()V
 PLcom/android/server/audio/BtHelper;->disconnectBluetoothSco(I)V
+PLcom/android/server/audio/BtHelper;->disconnectBluetoothScoAudioHelper(Landroid/bluetooth/BluetoothHeadset;Landroid/bluetooth/BluetoothDevice;I)Z
 PLcom/android/server/audio/BtHelper;->disconnectHeadset()V
-PLcom/android/server/audio/BtHelper;->getA2dpCodec(Landroid/bluetooth/BluetoothDevice;)I
-PLcom/android/server/audio/BtHelper;->getScoClient(Landroid/os/IBinder;Z)Lcom/android/server/audio/BtHelper$ScoClient;
-PLcom/android/server/audio/BtHelper;->handleBtScoActiveDeviceChange(Landroid/bluetooth/BluetoothDevice;Z)Z
+HPLcom/android/server/audio/BtHelper;->getA2dpCodec(Landroid/bluetooth/BluetoothDevice;)I
+HSPLcom/android/server/audio/BtHelper;->getBluetoothHeadset()Z
+PLcom/android/server/audio/BtHelper;->getName(Landroid/bluetooth/BluetoothDevice;)Ljava/lang/String;
+HPLcom/android/server/audio/BtHelper;->getScoClient(Landroid/os/IBinder;Z)Lcom/android/server/audio/BtHelper$ScoClient;
+HPLcom/android/server/audio/BtHelper;->handleBtScoActiveDeviceChange(Landroid/bluetooth/BluetoothDevice;Z)Z
 HSPLcom/android/server/audio/BtHelper;->isAvrcpAbsoluteVolumeSupported()Z
 PLcom/android/server/audio/BtHelper;->isBluetoothScoOn()Z
-HSPLcom/android/server/audio/BtHelper;->onA2dpProfileConnected(Landroid/bluetooth/BluetoothA2dp;)V
+PLcom/android/server/audio/BtHelper;->mapBluetoothCodecToAudioFormat(I)I
+PLcom/android/server/audio/BtHelper;->onA2dpProfileConnected(Landroid/bluetooth/BluetoothA2dp;)V
+PLcom/android/server/audio/BtHelper;->onAudioServerDiedRestoreA2dp()V
 HSPLcom/android/server/audio/BtHelper;->onBroadcastScoConnectionState(I)V
-HSPLcom/android/server/audio/BtHelper;->onHeadsetProfileConnected(Landroid/bluetooth/BluetoothHeadset;)V
-HSPLcom/android/server/audio/BtHelper;->onHearingAidProfileConnected(Landroid/bluetooth/BluetoothHearingAid;)V
+PLcom/android/server/audio/BtHelper;->onHeadsetProfileConnected(Landroid/bluetooth/BluetoothHeadset;)V
+PLcom/android/server/audio/BtHelper;->onHearingAidProfileConnected(Landroid/bluetooth/BluetoothHearingAid;)V
 HSPLcom/android/server/audio/BtHelper;->onSystemReady()V
-PLcom/android/server/audio/BtHelper;->receiveBtEvent(Landroid/content/Intent;)V
+HPLcom/android/server/audio/BtHelper;->receiveBtEvent(Landroid/content/Intent;)V
 HSPLcom/android/server/audio/BtHelper;->resetBluetoothSco()V
 HSPLcom/android/server/audio/BtHelper;->sendStickyBroadcastToAll(Landroid/content/Intent;)V
-PLcom/android/server/audio/BtHelper;->setAvrcpAbsoluteVolumeIndex(I)V
-PLcom/android/server/audio/BtHelper;->setAvrcpAbsoluteVolumeSupported(Z)V
-HSPLcom/android/server/audio/BtHelper;->setBtScoActiveDevice(Landroid/bluetooth/BluetoothDevice;)V
+HPLcom/android/server/audio/BtHelper;->setAvrcpAbsoluteVolumeIndex(I)V
+HPLcom/android/server/audio/BtHelper;->setAvrcpAbsoluteVolumeSupported(Z)V
+HPLcom/android/server/audio/BtHelper;->setBtScoActiveDevice(Landroid/bluetooth/BluetoothDevice;)V
 PLcom/android/server/audio/BtHelper;->startBluetoothScoForClient(Landroid/os/IBinder;ILjava/lang/String;)V
-PLcom/android/server/audio/BtHelper;->stopBluetoothScoForClient(Landroid/os/IBinder;Ljava/lang/String;)V
-HSPLcom/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
+HPLcom/android/server/audio/BtHelper;->stopBluetoothScoForClient(Landroid/os/IBinder;Ljava/lang/String;)V
+HPLcom/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;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/FocusRequester;->finalize()V
+PLcom/android/server/audio/FocusRequester;->flagsToString(I)Ljava/lang/String;
+PLcom/android/server/audio/FocusRequester;->focusChangeToString(I)Ljava/lang/String;
+PLcom/android/server/audio/FocusRequester;->focusGainToString()Ljava/lang/String;
 PLcom/android/server/audio/FocusRequester;->focusLossForGainRequest(I)I
+PLcom/android/server/audio/FocusRequester;->focusLossToString()Ljava/lang/String;
+HPLcom/android/server/audio/FocusRequester;->frameworkHandleFocusLoss(ILcom/android/server/audio/FocusRequester;Z)Z
 PLcom/android/server/audio/FocusRequester;->getClientId()Ljava/lang/String;
-HSPLcom/android/server/audio/FocusRequester;->getClientUid()I
+PLcom/android/server/audio/FocusRequester;->getClientUid()I
 PLcom/android/server/audio/FocusRequester;->getGainRequest()I
 PLcom/android/server/audio/FocusRequester;->getGrantFlags()I
 PLcom/android/server/audio/FocusRequester;->getSdkTarget()I
 PLcom/android/server/audio/FocusRequester;->handleFocusGain(I)V
-HSPLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V
+HPLcom/android/server/audio/FocusRequester;->handleFocusGainFromRequest(I)V
 PLcom/android/server/audio/FocusRequester;->handleFocusLoss(ILcom/android/server/audio/FocusRequester;Z)V
 PLcom/android/server/audio/FocusRequester;->handleFocusLossFromGain(ILcom/android/server/audio/FocusRequester;Z)Z
 PLcom/android/server/audio/FocusRequester;->hasSameBinder(Landroid/os/IBinder;)Z
-PLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z
+HPLcom/android/server/audio/FocusRequester;->hasSameClient(Ljava/lang/String;)Z
 PLcom/android/server/audio/FocusRequester;->hasSameUid(I)Z
 PLcom/android/server/audio/FocusRequester;->isLockedFocusOwner()Z
-PLcom/android/server/audio/FocusRequester;->release()V
-HSPLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo;
+HPLcom/android/server/audio/FocusRequester;->release()V
+HPLcom/android/server/audio/FocusRequester;->toAudioFocusInfo()Landroid/media/AudioFocusInfo;
+PLcom/android/server/audio/MediaFocusControl$1;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+PLcom/android/server/audio/MediaFocusControl$1;->run()V
+PLcom/android/server/audio/MediaFocusControl$2;-><init>(Lcom/android/server/audio/MediaFocusControl;Z)V
 PLcom/android/server/audio/MediaFocusControl$2;->run()V
-HSPLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V
+HPLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;-><init>(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V
 PLcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;->binderDied()V
+HSPLcom/android/server/audio/MediaFocusControl;-><clinit>()V
 HSPLcom/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
-HSPLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z
+HPLcom/android/server/audio/MediaFocusControl;->abandonAudioFocus(Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Landroid/media/AudioAttributes;Ljava/lang/String;)I
+PLcom/android/server/audio/MediaFocusControl;->access$000()Ljava/lang/Object;
+PLcom/android/server/audio/MediaFocusControl;->access$100(Lcom/android/server/audio/MediaFocusControl;)Landroid/media/audiopolicy/IAudioPolicyCallback;
+PLcom/android/server/audio/MediaFocusControl;->access$300(Lcom/android/server/audio/MediaFocusControl;Landroid/os/IBinder;)V
+PLcom/android/server/audio/MediaFocusControl;->access$400(Lcom/android/server/audio/MediaFocusControl;)Ljava/util/Stack;
+PLcom/android/server/audio/MediaFocusControl;->access$500(Lcom/android/server/audio/MediaFocusControl;)Z
+PLcom/android/server/audio/MediaFocusControl;->access$600()[I
+PLcom/android/server/audio/MediaFocusControl;->access$700(Lcom/android/server/audio/MediaFocusControl;)Lcom/android/server/audio/PlayerFocusEnforcer;
+PLcom/android/server/audio/MediaFocusControl;->addFocusFollower(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+HPLcom/android/server/audio/MediaFocusControl;->canReassignAudioFocus()Z
 HSPLcom/android/server/audio/MediaFocusControl;->discardAudioFocusOwner()V
 PLcom/android/server/audio/MediaFocusControl;->duckPlayers(Lcom/android/server/audio/FocusRequester;Lcom/android/server/audio/FocusRequester;Z)Z
 PLcom/android/server/audio/MediaFocusControl;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/audio/MediaFocusControl;->dumpFocusStack(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/audio/MediaFocusControl;->getCurrentAudioFocus()I
 HSPLcom/android/server/audio/MediaFocusControl;->getFocusRampTimeMs(ILandroid/media/AudioAttributes;)I
+PLcom/android/server/audio/MediaFocusControl;->hasAudioFocusUsers()Z
+PLcom/android/server/audio/MediaFocusControl;->isLockedFocusOwner(Lcom/android/server/audio/FocusRequester;)Z
 PLcom/android/server/audio/MediaFocusControl;->mustNotifyFocusOwnerOnDuck()Z
-HSPLcom/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;->propagateFocusLossFromGain_syncAf(ILcom/android/server/audio/FocusRequester;Z)V
-HSPLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/String;ZZ)V
+PLcom/android/server/audio/MediaFocusControl;->noFocusForSuspendedApp(Ljava/lang/String;I)V
+PLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyCurrentFocusAsync(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+HPLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusGrant_syncAf(Landroid/media/AudioFocusInfo;I)V
+HPLcom/android/server/audio/MediaFocusControl;->notifyExtPolicyFocusLoss_syncAf(Landroid/media/AudioFocusInfo;Z)V
+HPLcom/android/server/audio/MediaFocusControl;->notifyTopOfAudioFocusStack()V
+HPLcom/android/server/audio/MediaFocusControl;->propagateFocusLossFromGain_syncAf(ILcom/android/server/audio/FocusRequester;Z)V
+PLcom/android/server/audio/MediaFocusControl;->pushBelowLockedFocusOwners(Lcom/android/server/audio/FocusRequester;)I
+PLcom/android/server/audio/MediaFocusControl;->removeFocusFollower(Landroid/media/audiopolicy/IAudioPolicyCallback;)V
+HPLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntry(Ljava/lang/String;ZZ)V
 PLcom/android/server/audio/MediaFocusControl;->removeFocusStackEntryOnDeath(Landroid/os/IBinder;)V
-HSPLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;IIZ)I
+HPLcom/android/server/audio/MediaFocusControl;->requestAudioFocus(Landroid/media/AudioAttributes;ILandroid/os/IBinder;Landroid/media/IAudioFocusDispatcher;Ljava/lang/String;Ljava/lang/String;IIZ)I
 PLcom/android/server/audio/MediaFocusControl;->runAudioCheckerForRingOrCallAsync(Z)V
-HSPLcom/android/server/audio/MediaFocusControl;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
+PLcom/android/server/audio/MediaFocusControl;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;-><init>(ILandroid/media/AudioAttributes;)V
 PLcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;->eventToString()Ljava/lang/String;
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckEvent;->eventToString()Ljava/lang/String;
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;->addDuck(Landroid/media/AudioPlaybackConfiguration;Z)V
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;->removeUnduckAll(Ljava/util/HashMap;)V
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->checkDuck(Landroid/media/AudioPlaybackConfiguration;)V
-PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->duckUid(ILjava/util/ArrayList;)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;Z)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;-><init>(I)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;->addDuck(Landroid/media/AudioPlaybackConfiguration;Z)V
+PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;->removeUnduckAll(Ljava/util/HashMap;)V
+HSPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>()V
+HSPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;-><init>(Lcom/android/server/audio/PlaybackActivityMonitor$1;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->checkDuck(Landroid/media/AudioPlaybackConfiguration;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->duckUid(ILjava/util/ArrayList;)V
 PLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->removeReleased(Landroid/media/AudioPlaybackConfiguration;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;->unduckUid(ILjava/util/HashMap;)V
 HSPLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;-><init>(Landroid/media/AudioPlaybackConfiguration;)V
-PLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;->eventToString()Ljava/lang/String;
+HPLcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;->eventToString()Ljava/lang/String;
+HSPLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;-><init>(Landroid/media/IPlaybackConfigDispatcher;Z)V
 PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->binderDied()V
 HSPLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->init()Z
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;->eventToString()Ljava/lang/String;
-PLcom/android/server/audio/PlaybackActivityMonitor$PlayerOpPlayAudioEvent;->eventToString()Ljava/lang/String;
+PLcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;->release()V
+HPLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;-><init>(II)V
+HPLcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;->eventToString()Ljava/lang/String;
+HSPLcom/android/server/audio/PlaybackActivityMonitor;-><clinit>()V
 HSPLcom/android/server/audio/PlaybackActivityMonitor;-><init>(Landroid/content/Context;I)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->anonymizeForPublicConsumption(Ljava/util/List;)Ljava/util/ArrayList;
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->checkVolumeForPrivilegedAlarm(Landroid/media/AudioPlaybackConfiguration;I)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange(Z)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->duckPlayers(Lcom/android/server/audio/FocusRequester;Lcom/android/server/audio/FocusRequester;Z)Z
-PLcom/android/server/audio/PlaybackActivityMonitor;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->getActivePlaybackConfigurations(Z)Ljava/util/List;
-PLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->access$100()Lcom/android/server/audio/AudioEventLogger;
+PLcom/android/server/audio/PlaybackActivityMonitor;->access$200()Landroid/media/VolumeShaper$Configuration;
+PLcom/android/server/audio/PlaybackActivityMonitor;->access$300()Landroid/media/VolumeShaper$Operation;
+PLcom/android/server/audio/PlaybackActivityMonitor;->access$400()Landroid/media/VolumeShaper$Operation;
+PLcom/android/server/audio/PlaybackActivityMonitor;->access$500()Landroid/media/VolumeShaper$Configuration;
+HPLcom/android/server/audio/PlaybackActivityMonitor;->anonymizeForPublicConsumption(Ljava/util/List;)Ljava/util/ArrayList;
+HPLcom/android/server/audio/PlaybackActivityMonitor;->checkConfigurationCaller(ILandroid/media/AudioPlaybackConfiguration;I)Z
+HPLcom/android/server/audio/PlaybackActivityMonitor;->checkVolumeForPrivilegedAlarm(Landroid/media/AudioPlaybackConfiguration;I)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->dispatchPlaybackChange(Z)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->duckPlayers(Lcom/android/server/audio/FocusRequester;Lcom/android/server/audio/FocusRequester;Z)Z
+HPLcom/android/server/audio/PlaybackActivityMonitor;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->getActivePlaybackConfigurations(Z)Ljava/util/List;
+HPLcom/android/server/audio/PlaybackActivityMonitor;->mutePlayersForCall([I)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->playerAttributes(ILandroid/media/AudioAttributes;I)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->playerDeath(I)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->playerEvent(III)V
 HSPLcom/android/server/audio/PlaybackActivityMonitor;->registerPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;Z)V
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->releasePlayer(II)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->setAllowedCapturePolicy(II)V
 HSPLcom/android/server/audio/PlaybackActivityMonitor;->trackPlayer(Landroid/media/PlayerBase$PlayerIdCard;)I
-HSPLcom/android/server/audio/PlaybackActivityMonitor;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
-PLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V
-PLcom/android/server/audio/PlaybackActivityMonitor;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
-PLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;-><init>(IIIILjava/lang/String;)V
-PLcom/android/server/audio/RecordingActivityMonitor;->dispatchCallbacks(Ljava/util/List;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->unduckPlayers(Lcom/android/server/audio/FocusRequester;)V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->unmutePlayersForCall()V
+HPLcom/android/server/audio/PlaybackActivityMonitor;->unregisterPlaybackCallback(Landroid/media/IPlaybackConfigDispatcher;)V
+PLcom/android/server/audio/PlaybackActivityMonitor;->updateAllowedCapturePolicy(Landroid/media/AudioPlaybackConfiguration;I)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;-><init>(Landroid/media/IRecordingConfigDispatcher;Z)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;->binderDied()V
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;->init()Z
+PLcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;->release()V
+HPLcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;-><init>(ILandroid/os/IBinder;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;->binderDied()V
+HPLcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;->init()Z
+HPLcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;->release()V
+HPLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;-><init>(IILandroid/media/AudioRecordingConfiguration;)V
+HPLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;->eventToString()Ljava/lang/String;
+HPLcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;->recordEventToString(I)Ljava/lang/String;
+HPLcom/android/server/audio/RecordingActivityMonitor$RecordingState;-><init>(ILcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->getConfig()Landroid/media/AudioRecordingConfiguration;
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->getRiid()I
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->hasDeathHandler()Z
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->isActiveConfiguration()Z
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->release()V
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->setActive(Z)Z
+PLcom/android/server/audio/RecordingActivityMonitor$RecordingState;->setConfig(Landroid/media/AudioRecordingConfiguration;)Z
+HSPLcom/android/server/audio/RecordingActivityMonitor;-><clinit>()V
+HSPLcom/android/server/audio/RecordingActivityMonitor;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/audio/RecordingActivityMonitor;->anonymizeForPublicConsumption(Ljava/util/List;)Ljava/util/ArrayList;
+HPLcom/android/server/audio/RecordingActivityMonitor;->createRecordingConfiguration(III[IIZI[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;)Landroid/media/AudioRecordingConfiguration;
+HPLcom/android/server/audio/RecordingActivityMonitor;->dispatchCallbacks(Ljava/util/List;)V
 PLcom/android/server/audio/RecordingActivityMonitor;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;ILjava/lang/String;)V
-PLcom/android/server/audio/RecordingActivityMonitor;->updateSnapshot(IIII[IIZI[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;)Ljava/util/List;
+HPLcom/android/server/audio/RecordingActivityMonitor;->findStateByRiid(I)I
+HPLcom/android/server/audio/RecordingActivityMonitor;->getActiveRecordingConfigurations(Z)Ljava/util/List;
+HSPLcom/android/server/audio/RecordingActivityMonitor;->initMonitor()V
+PLcom/android/server/audio/RecordingActivityMonitor;->onAudioServerDied()V
+HPLcom/android/server/audio/RecordingActivityMonitor;->onRecordingConfigurationChanged(IIIIIIZ[I[Landroid/media/audiofx/AudioEffect$Descriptor;[Landroid/media/audiofx/AudioEffect$Descriptor;ILjava/lang/String;)V
+HPLcom/android/server/audio/RecordingActivityMonitor;->recorderEvent(II)V
+PLcom/android/server/audio/RecordingActivityMonitor;->registerRecordingCallback(Landroid/media/IRecordingConfigDispatcher;Z)V
+HPLcom/android/server/audio/RecordingActivityMonitor;->releaseRecorder(I)V
+HPLcom/android/server/audio/RecordingActivityMonitor;->trackRecorder(Landroid/os/IBinder;)I
+HPLcom/android/server/audio/RecordingActivityMonitor;->unregisterRecordingCallback(Landroid/media/IRecordingConfigDispatcher;)V
+HPLcom/android/server/audio/RecordingActivityMonitor;->updateSnapshot(IILandroid/media/AudioRecordingConfiguration;)Ljava/util/List;
 HSPLcom/android/server/audio/RotationHelper$AudioDisplayListener;-><init>()V
 PLcom/android/server/audio/RotationHelper$AudioDisplayListener;->onDisplayAdded(I)V
 HSPLcom/android/server/audio/RotationHelper$AudioDisplayListener;->onDisplayChanged(I)V
 PLcom/android/server/audio/RotationHelper$AudioDisplayListener;->onDisplayRemoved(I)V
+HSPLcom/android/server/audio/RotationHelper;-><clinit>()V
+HPLcom/android/server/audio/RotationHelper;->disable()V
 HSPLcom/android/server/audio/RotationHelper;->enable()V
-HSPLcom/android/server/audio/RotationHelper;->publishRotation(I)V
+HSPLcom/android/server/audio/RotationHelper;->init(Landroid/content/Context;Landroid/os/Handler;)V
+HPLcom/android/server/audio/RotationHelper;->publishRotation(I)V
 HSPLcom/android/server/audio/RotationHelper;->updateOrientation()V
+HSPLcom/android/server/audio/SoundEffectsHelper$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$1;->run(Z)V
+HSPLcom/android/server/audio/SoundEffectsHelper$Resource;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/audio/SoundEffectsHelper$SfxHandler$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;Landroid/os/Message;)V
+HPLcom/android/server/audio/SoundEffectsHelper$SfxHandler$1;->run(Z)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SfxHandler;-><init>(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$1;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SfxHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SfxWorker;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SfxWorker;->run()V
+HSPLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;-><init>(Lcom/android/server/audio/SoundEffectsHelper;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->addHandler(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->onComplete(Z)V
+HSPLcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;->onLoadComplete(Landroid/media/SoundPool;II)V
+HSPLcom/android/server/audio/SoundEffectsHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/audio/SoundEffectsHelper;->access$000(Lcom/android/server/audio/SoundEffectsHelper;)Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$002(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;)Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$202(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;)Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$400(Lcom/android/server/audio/SoundEffectsHelper;Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$500(Lcom/android/server/audio/SoundEffectsHelper;)Landroid/media/SoundPool;
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$600(Lcom/android/server/audio/SoundEffectsHelper;)Ljava/util/List;
+HSPLcom/android/server/audio/SoundEffectsHelper;->access$700(Lcom/android/server/audio/SoundEffectsHelper;Ljava/lang/String;)V
+PLcom/android/server/audio/SoundEffectsHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->findOrAddResourceByFileName(Ljava/lang/String;)I
+HSPLcom/android/server/audio/SoundEffectsHelper;->getResourceFilePath(Lcom/android/server/audio/SoundEffectsHelper$Resource;)Ljava/lang/String;
+HSPLcom/android/server/audio/SoundEffectsHelper;->loadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->loadTouchSoundAssetDefaults()V
+HSPLcom/android/server/audio/SoundEffectsHelper;->loadTouchSoundAssets()V
+HSPLcom/android/server/audio/SoundEffectsHelper;->logEvent(Ljava/lang/String;)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->onLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
+HPLcom/android/server/audio/SoundEffectsHelper;->onPlaySoundEffect(II)V
+PLcom/android/server/audio/SoundEffectsHelper;->onUnloadSoundEffects()V
+PLcom/android/server/audio/SoundEffectsHelper;->playSoundEffect(II)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->sendMsg(IIILjava/lang/Object;I)V
+HSPLcom/android/server/audio/SoundEffectsHelper;->startWorker()V
+PLcom/android/server/audio/SoundEffectsHelper;->unloadSoundEffects()V
+PLcom/android/server/autofill/-$$Lambda$AutofillManagerService$1$1-WNu3tTkxodB_LsZ7dGIlvrPN0;-><clinit>()V
 PLcom/android/server/autofill/-$$Lambda$AutofillManagerService$1$1-WNu3tTkxodB_LsZ7dGIlvrPN0;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$AutofillManagerService$1$1-WNu3tTkxodB_LsZ7dGIlvrPN0;->visit(Ljava/lang/Object;)V
+HSPLcom/android/server/autofill/-$$Lambda$AutofillManagerService$6afarI-dhLaYDLGebVyDMPu2nok;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
+HSPLcom/android/server/autofill/-$$Lambda$AutofillManagerService$AjdnAnVaegTp2pojE30m5yjqZx8;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
+PLcom/android/server/autofill/-$$Lambda$AutofillManagerService$AjdnAnVaegTp2pojE30m5yjqZx8;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$NQQgQ63vxhPkiwOWrnwRyuYSHTM;-><clinit>()V
 PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$NQQgQ63vxhPkiwOWrnwRyuYSHTM;-><init>()V
 PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$NQQgQ63vxhPkiwOWrnwRyuYSHTM;->get(Landroid/content/res/Resources;I)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$cXTbqmCb6-V5mVc5dTOipqK5X_E;-><init>(Landroid/os/RemoteCallback;Ljava/util/List;[Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
+PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$cXTbqmCb6-V5mVc5dTOipqK5X_E;->run(Landroid/service/autofill/IAutofillFieldClassificationService;)V
+PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$vGIL1YGX_9ksoSV74T7gO4fkEBE;-><clinit>()V
 PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$vGIL1YGX_9ksoSV74T7gO4fkEBE;-><init>()V
 PLcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$vGIL1YGX_9ksoSV74T7gO4fkEBE;->get(Landroid/content/res/Resources;I)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$Helper$laLKWmsGqkFIaRXW5rR6_s66Vsw;-><init>([Ljava/lang/String;)V
+PLcom/android/server/autofill/-$$Lambda$Helper$laLKWmsGqkFIaRXW5rR6_s66Vsw;->matches(Landroid/app/assist/AssistStructure$ViewNode;)Z
+PLcom/android/server/autofill/-$$Lambda$Helper$nK3g_oXXf8NGajcUf0W5JsQzf3w;-><init>(Landroid/view/autofill/AutofillId;)V
 PLcom/android/server/autofill/-$$Lambda$Helper$nK3g_oXXf8NGajcUf0W5JsQzf3w;->matches(Landroid/app/assist/AssistStructure$ViewNode;)Z
-PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$e7zSmzv77rBdYV5oCl-Y8EJj9dY;-><init>()V
-PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$e7zSmzv77rBdYV5oCl-Y8EJj9dY;->run(Landroid/os/IInterface;)V
-PLcom/android/server/autofill/-$$Lambda$RemoteFillService$L02k2_83eS2UIlVtt4T_yplAQPQ;->run()V
-PLcom/android/server/autofill/-$$Lambda$RemoteFillService$PKEfnjx72TG33VenAsL_32TGLPg;->run()V
-PLcom/android/server/autofill/-$$Lambda$RemoteFillService$_5v43Gwb-Yar1uuVIqDgfleCP_4;->run()V
-PLcom/android/server/autofill/-$$Lambda$Session$0VAc60LP16186Azy3Ov7dL7BsAE;-><init>()V
-PLcom/android/server/autofill/-$$Lambda$Session$0VAc60LP16186Azy3Ov7dL7BsAE;->accept(Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Q-iZrXrDBZAnj-gnbNOhH00i8uU;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Q-iZrXrDBZAnj-gnbNOhH00i8uU;-><init>()V
+HPLcom/android/server/autofill/-$$Lambda$Q-iZrXrDBZAnj-gnbNOhH00i8uU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$W6vVk8kBkoWieb1Jw-BucQNBDsM;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$W6vVk8kBkoWieb1Jw-BucQNBDsM;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$W6vVk8kBkoWieb1Jw-BucQNBDsM;->runNoResult(Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$qEoykSLvIU1PeokaPDuPOb0M5U0;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$qEoykSLvIU1PeokaPDuPOb0M5U0;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$qEoykSLvIU1PeokaPDuPOb0M5U0;->runNoResult(Ljava/lang/Object;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$v9CqZP_PIroMsV929WlHTKMHOHM;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;Landroid/view/autofill/IAutoFillManagerClient;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLandroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$v9CqZP_PIroMsV929WlHTKMHOHM;->run(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$yudIvtYKB9W2eb_t3RT2S1y3KiI;-><init>(Landroid/os/ICancellationSignal;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$yudIvtYKB9W2eb_t3RT2S1y3KiI;->run()V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$z12itmuXxuVLV0rq4Wi5vlNsa0k;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;Landroid/view/autofill/IAutoFillManagerClient;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLjava/util/concurrent/atomic/AtomicReference;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$z12itmuXxuVLV0rq4Wi5vlNsa0k;->run(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$zt04rV6kTquQwdDYqT9tjLbRn14;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;Ljava/util/concurrent/atomic/AtomicReference;Landroid/content/ComponentName;I)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$zt04rV6kTquQwdDYqT9tjLbRn14;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$KkKWdeiLv0uNTtyjP9VumTTYr-A;-><init>(Lcom/android/server/autofill/RemoteFillService;Landroid/service/autofill/SaveRequest;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$KkKWdeiLv0uNTtyjP9VumTTYr-A;->run(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$MaYOnIAubd8qKbTq0eWkOchXAJk;-><init>(Lcom/android/server/autofill/RemoteFillService;Landroid/service/autofill/FillRequest;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteFillService$MaYOnIAubd8qKbTq0eWkOchXAJk;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteFillService$RkgpxnfvOIHus8aiIIO_Tqgio1E;-><init>(Lcom/android/server/autofill/RemoteFillService;Ljava/lang/Throwable;Landroid/service/autofill/FillRequest;Landroid/service/autofill/FillResponse;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteFillService$RkgpxnfvOIHus8aiIIO_Tqgio1E;->run()V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$V3RTZXH5ru6fNYPwjZcEmEQQ9-4;-><init>(Lcom/android/server/autofill/RemoteFillService;Landroid/service/autofill/FillRequest;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/-$$Lambda$RemoteFillService$V3RTZXH5ru6fNYPwjZcEmEQQ9-4;->run(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$adrL6UDQX3d0e-QQL11h9TWJcM4;-><init>(Lcom/android/server/autofill/RemoteFillService;Ljava/lang/Throwable;Landroid/content/IntentSender;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$adrL6UDQX3d0e-QQL11h9TWJcM4;->run()V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$lQ9Txb0D49A09bfomYmOPhXTXRE;-><init>(Lcom/android/server/autofill/RemoteFillService;)V
+PLcom/android/server/autofill/-$$Lambda$RemoteFillService$lQ9Txb0D49A09bfomYmOPhXTXRE;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Session$Fs9zdJwELk-9rAM3RiY6AyBKswI;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Session$Fs9zdJwELk-9rAM3RiY6AyBKswI;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Session$Fs9zdJwELk-9rAM3RiY6AyBKswI;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Session$LM4xf4dbxH_NTutQzBkaQNxKbV0;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Session$LM4xf4dbxH_NTutQzBkaQNxKbV0;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Session$LM4xf4dbxH_NTutQzBkaQNxKbV0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Session$NtvZwhlT1c4eLjg2qI6EER2oCtY;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Session$NtvZwhlT1c4eLjg2qI6EER2oCtY;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Session$NtvZwhlT1c4eLjg2qI6EER2oCtY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Session$cYu1t6lYVopApYW-vct82-7slZk;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Session$cYu1t6lYVopApYW-vct82-7slZk;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Session$cYu1t6lYVopApYW-vct82-7slZk;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/autofill/-$$Lambda$Session$eVloK5PeyeuPZn1G52SC-fXIsjk;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;)V
 PLcom/android/server/autofill/-$$Lambda$Session$eVloK5PeyeuPZn1G52SC-fXIsjk;->run()V
+PLcom/android/server/autofill/-$$Lambda$Session$v6ZVyksJuHdWgJ1F8aoa_1LJWPo;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Session$v6ZVyksJuHdWgJ1F8aoa_1LJWPo;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Session$v6ZVyksJuHdWgJ1F8aoa_1LJWPo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$Session$vkywy7qU2iLN6RFRCSM48kEqmbQ;-><init>(Lcom/android/server/autofill/Session;I[Landroid/view/autofill/AutofillId;[Ljava/lang/String;[Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+PLcom/android/server/autofill/-$$Lambda$Session$vkywy7qU2iLN6RFRCSM48kEqmbQ;->onResult(Landroid/os/Bundle;)V
+HPLcom/android/server/autofill/-$$Lambda$Session$xw4trZ-LA7gCvZvpKJ93vf377ak;-><init>(Lcom/android/server/autofill/Session;)V
 PLcom/android/server/autofill/-$$Lambda$Session$xw4trZ-LA7gCvZvpKJ93vf377ak;->binderDied()V
+PLcom/android/server/autofill/-$$Lambda$Z6K-VL097A8ARGd4URY-lOvvM48;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$Z6K-VL097A8ARGd4URY-lOvvM48;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$Z6K-VL097A8ARGd4URY-lOvvM48;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/autofill/-$$Lambda$knR7oLyPSG_CoFAxBA_nqSw3JBo;-><clinit>()V
 PLcom/android/server/autofill/-$$Lambda$knR7oLyPSG_CoFAxBA_nqSw3JBo;-><init>()V
 PLcom/android/server/autofill/-$$Lambda$knR7oLyPSG_CoFAxBA_nqSw3JBo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/autofill/AutofillManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/autofill/-$$Lambda$sdnPz1IsKKVKSEXwI7z4h2-SxiM;-><clinit>()V
+PLcom/android/server/autofill/-$$Lambda$sdnPz1IsKKVKSEXwI7z4h2-SxiM;-><init>()V
+PLcom/android/server/autofill/-$$Lambda$sdnPz1IsKKVKSEXwI7z4h2-SxiM;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/autofill/AutofillManagerService$1;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
+HPLcom/android/server/autofill/AutofillManagerService$1;->lambda$onReceive$0(Lcom/android/server/autofill/AutofillManagerServiceImpl;)V
+HPLcom/android/server/autofill/AutofillManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;-><init>()V
+HSPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->access$400(Lcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;ILjava/lang/String;Z)V
+PLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->injectAugmentedAutofillInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
+HPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->isWhitelisted(ILandroid/content/ComponentName;)Z
+HSPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->setServiceInfo(ILjava/lang/String;Z)V
+HSPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->addClient(Landroid/view/autofill/IAutoFillManagerClient;Landroid/content/ComponentName;ILcom/android/internal/os/IResultReceiver;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->cancelSession(II)V
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->disableOwnedAutofillServices(I)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->finishSession(II)V
-PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getFillEventHistory(Lcom/android/internal/os/IResultReceiver;)V
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getAutofillServiceComponentName(Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->getFillEventHistory(Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->isServiceEnabled(ILjava/lang/String;Lcom/android/internal/os/IResultReceiver;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->isServiceSupported(ILcom/android/internal/os/IResultReceiver;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->removeClient(Landroid/view/autofill/IAutoFillManagerClient;I)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->restoreSession(ILandroid/os/IBinder;Landroid/os/IBinder;Lcom/android/internal/os/IResultReceiver;)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setAugmentedAutofillWhitelist(Ljava/util/List;Ljava/util/List;Lcom/android/internal/os/IResultReceiver;)V
-PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setHasCallback(IIZ)V
+PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setAuthenticationResult(Landroid/os/Bundle;III)V
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setHasCallback(IIZ)V
 PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->setUserData(Landroid/service/autofill/UserData;)V
-PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;ZLcom/android/internal/os/IResultReceiver;)V
-PLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;IZILandroid/content/ComponentName;ZLcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;->updateSession(ILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;III)V
+HSPLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;-><init>()V
+PLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->access$7200(Lcom/android/server/autofill/AutofillManagerService$AutofillCompatState;Ljava/lang/String;Ljava/io/PrintWriter;)V
 PLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->addCompatibilityModeRequest(Ljava/lang/String;J[Ljava/lang/String;I)V
 PLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->getUrlBarResourceIds(Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->isCompatibilityModeRequested(Ljava/lang/String;JI)Z
-HSPLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->removeCompatibilityModeRequests(I)V
+PLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->removeCompatibilityModeRequests(I)V
 HSPLcom/android/server/autofill/AutofillManagerService$AutofillCompatState;->reset(I)V
+HSPLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;)V
+HSPLcom/android/server/autofill/AutofillManagerService$LocalService;-><init>(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/server/autofill/AutofillManagerService$1;)V
 HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->getAutofillOptions(Ljava/lang/String;JI)Landroid/content/AutofillOptions;
-PLcom/android/server/autofill/AutofillManagerService$LocalService;->onBackKeyPressed()V
+HSPLcom/android/server/autofill/AutofillManagerService$LocalService;->injectDisableAppInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
+PLcom/android/server/autofill/AutofillManagerService$LocalService;->isAugmentedAutofillServiceForUser(II)Z
+HPLcom/android/server/autofill/AutofillManagerService$LocalService;->onBackKeyPressed()V
+PLcom/android/server/autofill/AutofillManagerService$PackageCompatState;-><init>(J[Ljava/lang/String;)V
+PLcom/android/server/autofill/AutofillManagerService$PackageCompatState;->access$1200(Lcom/android/server/autofill/AutofillManagerService$PackageCompatState;)J
+PLcom/android/server/autofill/AutofillManagerService$PackageCompatState;->access$1300(Lcom/android/server/autofill/AutofillManagerService$PackageCompatState;)[Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerService$PackageCompatState;->toString()Ljava/lang/String;
+HSPLcom/android/server/autofill/AutofillManagerService;-><clinit>()V
 HSPLcom/android/server/autofill/AutofillManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/autofill/AutofillManagerService;->access$1300(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;I)V
-PLcom/android/server/autofill/AutofillManagerService;->access$2000(Lcom/android/server/autofill/AutofillManagerService;)Landroid/app/ActivityManagerInternal;
+PLcom/android/server/autofill/AutofillManagerService;->access$100(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/autofill/AutofillManagerService;->access$1000(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/autofill/AutofillManagerService;->access$1100(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$1400(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$1500(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HPLcom/android/server/autofill/AutofillManagerService;->access$1600(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;I)V
+PLcom/android/server/autofill/AutofillManagerService;->access$1700(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$1800(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$1900(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HPLcom/android/server/autofill/AutofillManagerService;->access$200(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/server/infra/AbstractMasterSystemService$Visitor;)V
+PLcom/android/server/autofill/AutofillManagerService;->access$2000(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
 PLcom/android/server/autofill/AutofillManagerService;->access$2100(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
-PLcom/android/server/autofill/AutofillManagerService;->access$2200(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
-PLcom/android/server/autofill/AutofillManagerService;->access$2300(Lcom/android/server/autofill/AutofillManagerService;)Z
-PLcom/android/server/autofill/AutofillManagerService;->access$2400(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;II)V
+HPLcom/android/server/autofill/AutofillManagerService;->access$2200(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HPLcom/android/server/autofill/AutofillManagerService;->access$2300(Lcom/android/server/autofill/AutofillManagerService;)Landroid/app/ActivityManagerInternal;
+HPLcom/android/server/autofill/AutofillManagerService;->access$2400(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HPLcom/android/server/autofill/AutofillManagerService;->access$2500(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HPLcom/android/server/autofill/AutofillManagerService;->access$2600(Lcom/android/server/autofill/AutofillManagerService;)Z
+HPLcom/android/server/autofill/AutofillManagerService;->access$2700(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;II)V
+PLcom/android/server/autofill/AutofillManagerService;->access$2800(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$2900(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$300(Lcom/android/server/autofill/AutofillManagerService;)Lcom/android/server/autofill/ui/AutoFillUI;
+PLcom/android/server/autofill/AutofillManagerService;->access$3000(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;Landroid/os/Parcelable;)V
+PLcom/android/server/autofill/AutofillManagerService;->access$3600(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$3700(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$4000(Lcom/android/server/autofill/AutofillManagerService;Lcom/android/internal/os/IResultReceiver;Z)V
+PLcom/android/server/autofill/AutofillManagerService;->access$4300(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$4400(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$4800(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$4900(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$500(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$5000(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$5100(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$5200(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HPLcom/android/server/autofill/AutofillManagerService;->access$5300(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$5600(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$5700(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$5800(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$5900(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HPLcom/android/server/autofill/AutofillManagerService;->access$600(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$6000(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$6100(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$6200(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$6300(Lcom/android/server/autofill/AutofillManagerService;I)Z
+PLcom/android/server/autofill/AutofillManagerService;->access$6400(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+HPLcom/android/server/autofill/AutofillManagerService;->access$6500(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->access$6800(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$6900(Lcom/android/server/autofill/AutofillManagerService;Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/autofill/AutofillManagerService;->access$700(Lcom/android/server/autofill/AutofillManagerService;)Lcom/android/server/autofill/AutofillManagerService$AutofillCompatState;
+PLcom/android/server/autofill/AutofillManagerService;->access$7000()I
+PLcom/android/server/autofill/AutofillManagerService;->access$7100()I
+PLcom/android/server/autofill/AutofillManagerService;->access$7300(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerService;->access$7400(Lcom/android/server/autofill/AutofillManagerService;)I
+PLcom/android/server/autofill/AutofillManagerService;->access$7500(Lcom/android/server/autofill/AutofillManagerService;)Landroid/util/LocalLog;
+PLcom/android/server/autofill/AutofillManagerService;->access$7600(Lcom/android/server/autofill/AutofillManagerService;)Landroid/util/LocalLog;
+PLcom/android/server/autofill/AutofillManagerService;->access$7700(Lcom/android/server/autofill/AutofillManagerService;)Landroid/util/LocalLog;
+PLcom/android/server/autofill/AutofillManagerService;->access$800(Lcom/android/server/autofill/AutofillManagerService;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerService;->access$900(Lcom/android/server/autofill/AutofillManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
 HSPLcom/android/server/autofill/AutofillManagerService;->addCompatibilityModeRequestsLocked(Lcom/android/server/autofill/AutofillManagerServiceImpl;I)V
 PLcom/android/server/autofill/AutofillManagerService;->getPartitionMaxCount()I
 HSPLcom/android/server/autofill/AutofillManagerService;->getServiceSettingsProperty()Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerService;->getSupportedSmartSuggestionModesLocked()I
 PLcom/android/server/autofill/AutofillManagerService;->getVisibleDatasetsMaxCount()I
-PLcom/android/server/autofill/AutofillManagerService;->getWhitelistedCompatModePackages(Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/autofill/AutofillManagerService;->getWhitelistedCompatModePackages()Ljava/util/Map;
+HPLcom/android/server/autofill/AutofillManagerService;->getWhitelistedCompatModePackages(Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/autofill/AutofillManagerService;->getWhitelistedCompatModePackagesFromSettings()Ljava/lang/String;
+PLcom/android/server/autofill/AutofillManagerService;->isInstantServiceAllowed()Z
+HSPLcom/android/server/autofill/AutofillManagerService;->isSupported(Landroid/content/pm/UserInfo;)Z
+HSPLcom/android/server/autofill/AutofillManagerService;->isSupportedUser(Lcom/android/server/SystemService$TargetUser;)Z
+PLcom/android/server/autofill/AutofillManagerService;->lambda$new$0$AutofillManagerService(Landroid/provider/DeviceConfig$Properties;)V
+HPLcom/android/server/autofill/AutofillManagerService;->logRequestLocked(Ljava/lang/String;)V
+HSPLcom/android/server/autofill/AutofillManagerService;->newServiceLocked(IZ)Lcom/android/server/autofill/AutofillManagerServiceImpl;
 HSPLcom/android/server/autofill/AutofillManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/autofill/AutofillManagerService;->onDeviceConfigChange(Ljava/util/Set;)V
+HSPLcom/android/server/autofill/AutofillManagerService;->onServiceEnabledLocked(Lcom/android/server/autofill/AutofillManagerServiceImpl;I)V
 HSPLcom/android/server/autofill/AutofillManagerService;->onServiceEnabledLocked(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
-HSPLcom/android/server/autofill/AutofillManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/autofill/AutofillManagerService;->onServiceRemoved(Lcom/android/server/autofill/AutofillManagerServiceImpl;I)V
+PLcom/android/server/autofill/AutofillManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/autofill/AutofillManagerService;->onSettingsChanged(ILjava/lang/String;)V
 HSPLcom/android/server/autofill/AutofillManagerService;->onStart()V
 HSPLcom/android/server/autofill/AutofillManagerService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-PLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;I)V
+HPLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;I)V
 PLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;II)V
 PLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;Landroid/os/Bundle;)V
+PLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;Landroid/os/Parcelable;)V
+HPLcom/android/server/autofill/AutofillManagerService;->send(Lcom/android/internal/os/IResultReceiver;Z)V
 HSPLcom/android/server/autofill/AutofillManagerService;->setDeviceConfigProperties()V
 HSPLcom/android/server/autofill/AutofillManagerService;->setLogLevelFromSettings()V
+HSPLcom/android/server/autofill/AutofillManagerService;->setLoggingLevelsLocked(ZZ)V
 HSPLcom/android/server/autofill/AutofillManagerService;->setMaxPartitionsFromSettings()V
 HSPLcom/android/server/autofill/AutofillManagerService;->setMaxVisibleDatasetsFromSettings()V
-PLcom/android/server/autofill/AutofillManagerServiceImpl$1;->onServiceDied(Lcom/android/server/autofill/RemoteAugmentedAutofillService;)V
-PLcom/android/server/autofill/AutofillManagerServiceImpl$1;->onServiceDied(Ljava/lang/Object;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl$1;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl$1;->resetLastResponse()V
+HPLcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;)V
+HPLcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/AutofillManagerServiceImpl$1;)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;->doInBackground([Ljava/lang/Object;)Ljava/lang/Object;
-PLcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void;
+HPLcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;->doInBackground([Ljava/lang/Void;)Ljava/lang/Void;
+HSPLcom/android/server/autofill/AutofillManagerServiceImpl;-><clinit>()V
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;-><init>(Lcom/android/server/autofill/AutofillManagerService;Ljava/lang/Object;Landroid/util/LocalLog;Landroid/util/LocalLog;ILcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/AutofillManagerService$AutofillCompatState;Z)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->access$200(Lcom/android/server/autofill/AutofillManagerServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->access$300(Lcom/android/server/autofill/AutofillManagerServiceImpl;)Landroid/util/SparseArray;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->access$400(Lcom/android/server/autofill/AutofillManagerServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->access$500(Lcom/android/server/autofill/AutofillManagerServiceImpl;)Landroid/util/SparseArray;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->access$600(Lcom/android/server/autofill/AutofillManagerServiceImpl;)Ljava/lang/Object;
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->addClientLocked(Landroid/view/autofill/IAutoFillManagerClient;Landroid/content/ComponentName;)I
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->assertCallerLocked(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->assertCallerLocked(Landroid/content/ComponentName;Z)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->cancelSessionLocked(II)V
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->createSessionByTokenLocked(Landroid/os/IBinder;IILandroid/os/IBinder;ZLandroid/content/ComponentName;ZZZI)Lcom/android/server/autofill/Session;
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroyFinishedSessionsLocked()V
-HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->destroyLocked()V
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->createSessionByTokenLocked(Landroid/os/IBinder;IILandroid/os/IBinder;ZLandroid/content/ComponentName;ZZZI)Lcom/android/server/autofill/Session;
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->destroyFinishedSessionsLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroyLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->destroySessionsForAugmentedAutofillOnlyLocked()V
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->destroySessionsLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->disableAutofillForApp(Ljava/lang/String;JIZ)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->disableOwnedAutofillServicesLocked(I)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->finishSessionLocked(II)V
+HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->getAppDisabledActivitiesLocked(Ljava/lang/String;)Landroid/util/ArrayMap;
+HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->getAppDisabledExpirationLocked(Ljava/lang/String;)J
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getAugmentedAutofillServiceUidLocked()I
+HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->getCompatibilityPackagesLocked()Landroid/util/ArrayMap;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getFieldClassificationStrategy()Lcom/android/server/autofill/FieldClassificationStrategy;
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->getFillEventHistory(I)Landroid/service/autofill/FillEventHistory;
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->getPreviousSessionsLocked(Lcom/android/server/autofill/Session;)Ljava/util/ArrayList;
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->getPreviousSessionsLocked(Lcom/android/server/autofill/Session;)Ljava/util/ArrayList;
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->getRemoteAugmentedAutofillServiceLocked()Lcom/android/server/autofill/RemoteAugmentedAutofillService;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getSupportedSmartSuggestionModesLocked()I
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->getUrlBarResourceIdsForCompatMode(Ljava/lang/String;)[Ljava/lang/String;
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->getUserData()Landroid/service/autofill/UserData;
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->handlePackageUpdateLocked(Ljava/lang/String;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->handleSessionSave(Lcom/android/server/autofill/Session;)V
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->isAugmentedAutofillServiceAvailableLocked()Z
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->isAugmentedAutofillServiceForUserLocked(I)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->isAutofillDisabledLocked(Landroid/content/ComponentName;)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->isCalledByAugmentedAutofillServiceLocked(Ljava/lang/String;I)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->isCalledByServiceLocked(Ljava/lang/String;I)Z
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->isFieldClassificationEnabledLocked()Z
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->isInlineSuggestionsEnabled()Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->isValidEventLocked(Ljava/lang/String;I)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->isWhitelistedForAugmentedAutofillLocked(Landroid/content/ComponentName;)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->logContextCommittedLocked(ILandroid/os/Bundle;Ljava/util/ArrayList;Landroid/util/ArraySet;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/content/ComponentName;Z)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->logDatasetAuthenticationSelected(Ljava/lang/String;ILandroid/os/Bundle;)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->logDatasetSelected(Ljava/lang/String;ILandroid/os/Bundle;)V
-HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->logDatasetShown(ILandroid/os/Bundle;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->logSaveShown(ILandroid/os/Bundle;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->onBackKeyPressed()V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->pruneAbandonedSessionsLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->removeClientLocked(Landroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->removeSessionLocked(I)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetAugmentedAutofillWhitelistLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetExtServiceLocked()V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetLastAugmentedAutofillResponse()V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->resetLastResponse()V
-HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->sendStateToClients(Z)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->restoreSession(IILandroid/os/IBinder;Landroid/os/IBinder;)Z
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->sendStateToClients(Z)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->setAugmentedAutofillWhitelistLocked(Ljava/util/List;Ljava/util/List;I)Z
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->setHasCallback(IIZ)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->setAuthenticationResultLocked(Landroid/os/Bundle;III)V
+PLcom/android/server/autofill/AutofillManagerServiceImpl;->setAuthenticationSelected(ILandroid/os/Bundle;)V
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->setHasCallback(IIZ)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->setLastResponse(ILandroid/service/autofill/FillResponse;)V
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->setUserData(ILandroid/service/autofill/UserData;)V
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->startSessionLocked(Landroid/os/IBinder;IILandroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;ZLandroid/content/ComponentName;ZZI)J
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->startSessionLocked(Landroid/os/IBinder;IILandroid/os/IBinder;Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;ZLandroid/content/ComponentName;ZZI)J
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateLocked(Z)Z
 HSPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateRemoteAugmentedAutofillService()V
-PLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z
+HPLcom/android/server/autofill/AutofillManagerServiceImpl;->updateSessionLocked(IILandroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)Z
 PLcom/android/server/autofill/AutofillManagerServiceImpl;->whitelistForAugmentedAutofillPackages(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/autofill/FieldClassificationStrategy$1;-><init>(Lcom/android/server/autofill/FieldClassificationStrategy;)V
+PLcom/android/server/autofill/FieldClassificationStrategy$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLcom/android/server/autofill/FieldClassificationStrategy;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/autofill/FieldClassificationStrategy;->access$000(Lcom/android/server/autofill/FieldClassificationStrategy;)Ljava/lang/Object;
+PLcom/android/server/autofill/FieldClassificationStrategy;->access$100(Lcom/android/server/autofill/FieldClassificationStrategy;)Landroid/service/autofill/IAutofillFieldClassificationService;
+PLcom/android/server/autofill/FieldClassificationStrategy;->access$102(Lcom/android/server/autofill/FieldClassificationStrategy;Landroid/service/autofill/IAutofillFieldClassificationService;)Landroid/service/autofill/IAutofillFieldClassificationService;
+PLcom/android/server/autofill/FieldClassificationStrategy;->access$200(Lcom/android/server/autofill/FieldClassificationStrategy;)Ljava/util/ArrayList;
+PLcom/android/server/autofill/FieldClassificationStrategy;->access$202(Lcom/android/server/autofill/FieldClassificationStrategy;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/autofill/FieldClassificationStrategy;->calculateScores(Landroid/os/RemoteCallback;Ljava/util/List;[Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/util/ArrayMap;Landroid/util/ArrayMap;)V
+PLcom/android/server/autofill/FieldClassificationStrategy;->connectAndRun(Lcom/android/server/autofill/FieldClassificationStrategy$Command;)V
 PLcom/android/server/autofill/FieldClassificationStrategy;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/autofill/FieldClassificationStrategy;->getAvailableAlgorithms()[Ljava/lang/String;
+PLcom/android/server/autofill/FieldClassificationStrategy;->getDefaultAlgorithm()Ljava/lang/String;
 PLcom/android/server/autofill/FieldClassificationStrategy;->getMetadataValue(Ljava/lang/String;Lcom/android/server/autofill/FieldClassificationStrategy$MetadataParser;)Ljava/lang/Object;
 PLcom/android/server/autofill/FieldClassificationStrategy;->getServiceComponentName()Landroid/content/ComponentName;
-PLcom/android/server/autofill/FieldClassificationStrategy;->getServiceInfo()Landroid/content/pm/ServiceInfo;
-HSPLcom/android/server/autofill/FieldClassificationStrategy;->reset()V
-PLcom/android/server/autofill/Helper;->addAutofillableIds(Landroid/app/assist/AssistStructure$ViewNode;Landroid/util/ArraySet;)V
-PLcom/android/server/autofill/Helper;->findViewNode(Landroid/app/assist/AssistStructure;Lcom/android/server/autofill/Helper$ViewNodeFilter;)Landroid/app/assist/AssistStructure$ViewNode;
-PLcom/android/server/autofill/Helper;->newLogMaker(ILjava/lang/String;IZ)Landroid/metrics/LogMaker;
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest$1;->isCompleted()Z
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest$1;->onCancellable(Landroid/os/ICancellationSignal;)V
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest$1;->onSuccess()V
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest$2;->send(ILandroid/os/Bundle;)V
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;ILandroid/view/autofill/IAutoFillManagerClient;ILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V
-PLcom/android/server/autofill/RemoteAugmentedAutofillService$PendingAutofillRequest;->run()V
-HSPLcom/android/server/autofill/RemoteAugmentedAutofillService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteAugmentedAutofillService$RemoteAugmentedAutofillServiceCallbacks;ZZII)V
+HPLcom/android/server/autofill/FieldClassificationStrategy;->getServiceInfo()Landroid/content/pm/ServiceInfo;
+PLcom/android/server/autofill/FieldClassificationStrategy;->lambda$calculateScores$2(Landroid/os/RemoteCallback;Ljava/util/List;[Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/util/ArrayMap;Landroid/util/ArrayMap;Landroid/service/autofill/IAutofillFieldClassificationService;)V
+PLcom/android/server/autofill/FieldClassificationStrategy;->lambda$getAvailableAlgorithms$0(Landroid/content/res/Resources;I)[Ljava/lang/String;
+PLcom/android/server/autofill/FieldClassificationStrategy;->lambda$getDefaultAlgorithm$1(Landroid/content/res/Resources;I)Ljava/lang/String;
+PLcom/android/server/autofill/FieldClassificationStrategy;->reset()V
+HSPLcom/android/server/autofill/Helper;-><clinit>()V
+HPLcom/android/server/autofill/Helper;->addAutofillableIds(Landroid/app/assist/AssistStructure$ViewNode;Ljava/util/ArrayList;Z)V
+HPLcom/android/server/autofill/Helper;->findViewNode(Landroid/app/assist/AssistStructure;Lcom/android/server/autofill/Helper$ViewNodeFilter;)Landroid/app/assist/AssistStructure$ViewNode;
+PLcom/android/server/autofill/Helper;->findViewNodeByAutofillId(Landroid/app/assist/AssistStructure;Landroid/view/autofill/AutofillId;)Landroid/app/assist/AssistStructure$ViewNode;
+HPLcom/android/server/autofill/Helper;->getAutofillIds(Landroid/app/assist/AssistStructure;Z)Ljava/util/ArrayList;
+PLcom/android/server/autofill/Helper;->getFields(Landroid/service/autofill/Dataset;)Landroid/util/ArrayMap;
+PLcom/android/server/autofill/Helper;->getNumericValue(Landroid/metrics/LogMaker;I)I
+HPLcom/android/server/autofill/Helper;->lambda$findViewNodeByAutofillId$0(Landroid/view/autofill/AutofillId;Landroid/app/assist/AssistStructure$ViewNode;)Z
+HPLcom/android/server/autofill/Helper;->lambda$sanitizeUrlBar$1([Ljava/lang/String;Landroid/app/assist/AssistStructure$ViewNode;)Z
+HPLcom/android/server/autofill/Helper;->newLogMaker(ILandroid/content/ComponentName;Ljava/lang/String;IZ)Landroid/metrics/LogMaker;
+HPLcom/android/server/autofill/Helper;->newLogMaker(ILjava/lang/String;IZ)Landroid/metrics/LogMaker;
+PLcom/android/server/autofill/Helper;->newLogMaker(ILjava/lang/String;Ljava/lang/String;IZ)Landroid/metrics/LogMaker;
+PLcom/android/server/autofill/Helper;->sanitizeUrlBar(Landroid/app/assist/AssistStructure;[Ljava/lang/String;)Landroid/app/assist/AssistStructure$ViewNode;
+PLcom/android/server/autofill/Helper;->toArray(Landroid/util/ArraySet;)[Landroid/view/autofill/AutofillId;
+PLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService$1;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->cancel()V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->isCompleted()Z
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->onCancellable(Landroid/os/ICancellationSignal;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->onSuccess()V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->onSuccess([Landroid/service/autofill/Dataset;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService$1$1;->onSuccess([Landroid/service/autofill/Dataset;Landroid/os/Bundle;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService$1;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;Landroid/service/autofill/augmented/IAugmentedAutofillService;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLandroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;Lcom/android/internal/infra/AndroidFuture;Ljava/util/concurrent/atomic/AtomicReference;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService$1;-><init>(Lcom/android/server/autofill/RemoteAugmentedAutofillService;Landroid/service/autofill/augmented/IAugmentedAutofillService;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLcom/android/internal/infra/AndroidFuture;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService$1;->send(ILandroid/os/Bundle;)V
+HSPLcom/android/server/autofill/RemoteAugmentedAutofillService;-><clinit>()V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteAugmentedAutofillService$RemoteAugmentedAutofillServiceCallbacks;ZZII)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->access$000(Lcom/android/server/autofill/RemoteAugmentedAutofillService;)Lcom/android/server/autofill/RemoteAugmentedAutofillService$RemoteAugmentedAutofillServiceCallbacks;
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->access$000(Lcom/android/server/autofill/RemoteAugmentedAutofillService;I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Landroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->access$000(Lcom/android/server/autofill/RemoteAugmentedAutofillService;I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->access$100(Lcom/android/server/autofill/RemoteAugmentedAutofillService;I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;Landroid/os/Bundle;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->dispatchCancellation(Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->getAutoDisconnectTimeoutMs()J
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->getComponentName()Landroid/content/ComponentName;
 HSPLcom/android/server/autofill/RemoteAugmentedAutofillService;->getComponentName(Ljava/lang/String;IZ)Landroid/util/Pair;
-PLcom/android/server/autofill/RemoteAugmentedAutofillService;->getRemoteRequestMillis()J
-PLcom/android/server/autofill/RemoteAugmentedAutofillService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/autofill/RemoteAugmentedAutofillService;->getTimeoutIdleBindMillis()J
-PLcom/android/server/autofill/RemoteAugmentedAutofillService;->handleOnConnectedStateChanged(Z)V
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest$1;->onCancellable(Landroid/os/ICancellationSignal;)V
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest$1;->onSuccess(Landroid/service/autofill/FillResponse;)V
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->cancel()Z
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->onTimeout(Lcom/android/internal/infra/AbstractRemoteService;)V
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->onTimeout(Lcom/android/server/autofill/RemoteFillService;)V
-PLcom/android/server/autofill/RemoteFillService$PendingFillRequest;->run()V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$dispatchCancellation$2(Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$onDestroyAutofillWindowsRequest$3(Landroid/service/autofill/augmented/IAugmentedAutofillService;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$onDestroyAutofillWindowsRequest$4(Landroid/service/autofill/augmented/IAugmentedAutofillService;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$onRequestAutofillLocked$0$RemoteAugmentedAutofillService(Landroid/view/autofill/IAutoFillManagerClient;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLandroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Ljava/util/concurrent/atomic/AtomicReference;Landroid/service/autofill/augmented/IAugmentedAutofillService;)Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$onRequestAutofillLocked$0$RemoteAugmentedAutofillService(Landroid/view/autofill/IAutoFillManagerClient;IILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;JLjava/util/concurrent/atomic/AtomicReference;Landroid/service/autofill/augmented/IAugmentedAutofillService;)Ljava/util/concurrent/CompletableFuture;
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->lambda$onRequestAutofillLocked$1$RemoteAugmentedAutofillService(Ljava/util/concurrent/atomic/AtomicReference;Landroid/content/ComponentName;ILjava/lang/Void;Ljava/lang/Throwable;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->maybeHandleInlineSuggestions(I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Landroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->maybeHandleInlineSuggestions(I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->maybeRequestShowInlineSuggestions(I[Landroid/service/autofill/Dataset;Landroid/view/autofill/AutofillId;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;Landroid/view/autofill/IAutoFillManagerClient;Landroid/os/Bundle;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->onDestroyAutofillWindowsRequest()V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->onRequestAutofillLocked(ILandroid/view/autofill/IAutoFillManagerClient;ILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V
+HPLcom/android/server/autofill/RemoteAugmentedAutofillService;->onRequestAutofillLocked(ILandroid/view/autofill/IAutoFillManagerClient;ILandroid/content/ComponentName;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;Landroid/view/inputmethod/InlineSuggestionsRequest;Lcom/android/internal/view/IInlineSuggestionsResponseCallback;)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->onServiceConnectionStatusChanged(Landroid/os/IInterface;Z)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->onServiceConnectionStatusChanged(Landroid/service/autofill/augmented/IAugmentedAutofillService;Z)V
+PLcom/android/server/autofill/RemoteAugmentedAutofillService;->toString()Ljava/lang/String;
+HPLcom/android/server/autofill/RemoteFillService$1;-><init>(Lcom/android/server/autofill/RemoteFillService;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/CompletableFuture;)V
+HPLcom/android/server/autofill/RemoteFillService$1;->onCancellable(Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteFillService$1;->onSuccess(Landroid/service/autofill/FillResponse;)V
+PLcom/android/server/autofill/RemoteFillService$2;-><init>(Lcom/android/server/autofill/RemoteFillService;Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/autofill/RemoteFillService$2;->onSuccess(Landroid/content/IntentSender;)V
 PLcom/android/server/autofill/RemoteFillService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;Z)V
+PLcom/android/server/autofill/RemoteFillService;->access$000(Lcom/android/server/autofill/RemoteFillService;Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteFillService;->addLast(Lcom/android/internal/infra/ServiceConnector$Job;)V
+HPLcom/android/server/autofill/RemoteFillService;->addLast(Ljava/lang/Object;)V
 PLcom/android/server/autofill/RemoteFillService;->cancelCurrentRequest()I
-PLcom/android/server/autofill/RemoteFillService;->getRemoteRequestMillis()J
-PLcom/android/server/autofill/RemoteFillService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/autofill/RemoteFillService;->getTimeoutIdleBindMillis()J
-PLcom/android/server/autofill/RemoteFillService;->handleOnConnectedStateChanged(Z)V
-PLcom/android/server/autofill/RemoteFillService;->lambda$dispatchOnFillTimeout$3$RemoteFillService(Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteFillService;->destroy()V
+PLcom/android/server/autofill/RemoteFillService;->dispatchCancellationSignal(Landroid/os/ICancellationSignal;)V
+HPLcom/android/server/autofill/RemoteFillService;->getAutoDisconnectTimeoutMs()J
+HPLcom/android/server/autofill/RemoteFillService;->lambda$onFillRequest$0$RemoteFillService(Landroid/service/autofill/FillRequest;Ljava/util/concurrent/atomic/AtomicReference;Ljava/util/concurrent/atomic/AtomicReference;Landroid/service/autofill/IAutoFillService;)Ljava/util/concurrent/CompletableFuture;
+HPLcom/android/server/autofill/RemoteFillService;->lambda$onFillRequest$1$RemoteFillService(Ljava/lang/Throwable;Landroid/service/autofill/FillRequest;Landroid/service/autofill/FillResponse;Ljava/util/concurrent/atomic/AtomicReference;)V
+HPLcom/android/server/autofill/RemoteFillService;->lambda$onFillRequest$2$RemoteFillService(Landroid/service/autofill/FillRequest;Ljava/util/concurrent/atomic/AtomicReference;Landroid/service/autofill/FillResponse;Ljava/lang/Throwable;)V
+PLcom/android/server/autofill/RemoteFillService;->lambda$onSaveRequest$3$RemoteFillService(Landroid/service/autofill/SaveRequest;Landroid/service/autofill/IAutoFillService;)Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/autofill/RemoteFillService;->lambda$onSaveRequest$4$RemoteFillService(Ljava/lang/Throwable;Landroid/content/IntentSender;)V
+PLcom/android/server/autofill/RemoteFillService;->lambda$onSaveRequest$5$RemoteFillService(Landroid/content/IntentSender;Ljava/lang/Throwable;)V
+HPLcom/android/server/autofill/RemoteFillService;->onFillRequest(Landroid/service/autofill/FillRequest;)V
+PLcom/android/server/autofill/RemoteFillService;->onSaveRequest(Landroid/service/autofill/SaveRequest;)V
+HPLcom/android/server/autofill/RemoteFillService;->onServiceConnectionStatusChanged(Landroid/os/IInterface;Z)V
+HPLcom/android/server/autofill/RemoteFillService;->onServiceConnectionStatusChanged(Landroid/service/autofill/IAutoFillService;Z)V
+HSPLcom/android/server/autofill/RemoteInlineSuggestionRenderService;->getServiceComponentName(Landroid/content/Context;)Landroid/content/ComponentName;
+HSPLcom/android/server/autofill/RemoteInlineSuggestionRenderService;->getServiceComponentName(Landroid/content/Context;I)Landroid/content/ComponentName;
+HSPLcom/android/server/autofill/RemoteInlineSuggestionRenderService;->getServiceInfo(Landroid/content/Context;)Landroid/content/pm/ServiceInfo;
+HSPLcom/android/server/autofill/RemoteInlineSuggestionRenderService;->getServiceInfo(Landroid/content/Context;I)Landroid/content/pm/ServiceInfo;
 PLcom/android/server/autofill/Session$1;-><init>(Lcom/android/server/autofill/Session;)V
-PLcom/android/server/autofill/Session$1;->onHandleAssistData(Landroid/os/Bundle;)V
+HPLcom/android/server/autofill/Session$1;->onHandleAssistData(Landroid/os/Bundle;)V
+PLcom/android/server/autofill/Session;-><clinit>()V
 PLcom/android/server/autofill/Session;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/ui/AutoFillUI;Landroid/content/Context;Landroid/os/Handler;ILjava/lang/Object;IIILandroid/os/IBinder;Landroid/os/IBinder;ZLandroid/util/LocalLog;Landroid/util/LocalLog;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZI)V
+HPLcom/android/server/autofill/Session;-><init>(Lcom/android/server/autofill/AutofillManagerServiceImpl;Lcom/android/server/autofill/ui/AutoFillUI;Landroid/content/Context;Landroid/os/Handler;ILjava/lang/Object;IIILandroid/os/IBinder;Landroid/os/IBinder;ZLandroid/util/LocalLog;Landroid/util/LocalLog;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZILcom/android/server/inputmethod/InputMethodManagerInternal;)V
+HPLcom/android/server/autofill/Session;->access$000(Lcom/android/server/autofill/Session;)Lcom/android/server/autofill/RemoteFillService;
+HPLcom/android/server/autofill/Session;->access$1000(Lcom/android/server/autofill/Session;)Ljava/util/ArrayList;
+HPLcom/android/server/autofill/Session;->access$1002(Lcom/android/server/autofill/Session;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+HPLcom/android/server/autofill/Session;->access$1100(Lcom/android/server/autofill/Session;)V
+HPLcom/android/server/autofill/Session;->access$1200(Lcom/android/server/autofill/Session;Landroid/service/autofill/FillContext;I)V
+HPLcom/android/server/autofill/Session;->access$1300(Lcom/android/server/autofill/Session;Z)Ljava/util/ArrayList;
+PLcom/android/server/autofill/Session;->access$1400(Lcom/android/server/autofill/Session;)Landroid/os/Bundle;
+PLcom/android/server/autofill/Session;->access$1400(Lcom/android/server/autofill/Session;)Landroid/view/inputmethod/InlineSuggestionsRequest;
+HPLcom/android/server/autofill/Session;->access$1400(Lcom/android/server/autofill/Session;)Lcom/android/server/autofill/Session$InlineSuggestionsRequestCallbackImpl;
+PLcom/android/server/autofill/Session;->access$1500(Lcom/android/server/autofill/Session;)Landroid/os/Bundle;
+HPLcom/android/server/autofill/Session;->access$1600(Lcom/android/server/autofill/Session;)Landroid/os/Bundle;
+HPLcom/android/server/autofill/Session;->access$300(Lcom/android/server/autofill/Session;)Landroid/view/autofill/AutofillId;
+HPLcom/android/server/autofill/Session;->access$400(Lcom/android/server/autofill/Session;)Ljava/lang/Object;
+HPLcom/android/server/autofill/Session;->access$500(Lcom/android/server/autofill/Session;)Z
+PLcom/android/server/autofill/Session;->access$600(Lcom/android/server/autofill/Session;)Landroid/content/ComponentName;
+PLcom/android/server/autofill/Session;->access$700(Lcom/android/server/autofill/Session;)Lcom/android/server/autofill/AutofillManagerServiceImpl;
+PLcom/android/server/autofill/Session;->access$800(Lcom/android/server/autofill/Session;)Landroid/app/assist/AssistStructure$ViewNode;
+PLcom/android/server/autofill/Session;->access$802(Lcom/android/server/autofill/Session;Landroid/app/assist/AssistStructure$ViewNode;)Landroid/app/assist/AssistStructure$ViewNode;
+PLcom/android/server/autofill/Session;->access$900(Lcom/android/server/autofill/Session;)Landroid/util/ArrayMap;
 PLcom/android/server/autofill/Session;->addTaggedDataToRequestLogLocked(IILjava/lang/Object;)V
+PLcom/android/server/autofill/Session;->authenticate(IILandroid/content/IntentSender;Landroid/os/Bundle;)V
 PLcom/android/server/autofill/Session;->autoFill(IILandroid/service/autofill/Dataset;Z)V
 PLcom/android/server/autofill/Session;->autoFillApp(Landroid/service/autofill/Dataset;)V
+PLcom/android/server/autofill/Session;->callSaveLocked()V
 PLcom/android/server/autofill/Session;->cancelAugmentedAutofillLocked()V
 PLcom/android/server/autofill/Session;->cancelCurrentRequestLocked()V
+PLcom/android/server/autofill/Session;->cancelSave()V
+PLcom/android/server/autofill/Session;->createAuthFillInIntentLocked(ILandroid/os/Bundle;)Landroid/content/Intent;
 PLcom/android/server/autofill/Session;->createOrUpdateViewStateLocked(Landroid/view/autofill/AutofillId;ILandroid/view/autofill/AutofillValue;)Lcom/android/server/autofill/ViewState;
 PLcom/android/server/autofill/Session;->createSanitizers(Landroid/service/autofill/SaveInfo;)Landroid/util/ArrayMap;
-PLcom/android/server/autofill/Session;->destroyLocked()Lcom/android/server/autofill/RemoteFillService;
-PLcom/android/server/autofill/Session;->doLogContextCommitted()V
+HPLcom/android/server/autofill/Session;->destroyAugmentedAutofillWindowsLocked()V
+HPLcom/android/server/autofill/Session;->destroyLocked()Lcom/android/server/autofill/RemoteFillService;
+PLcom/android/server/autofill/Session;->doStartIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
+HPLcom/android/server/autofill/Session;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/autofill/Session;->dumpNumericValue(Ljava/io/PrintWriter;Landroid/metrics/LogMaker;Ljava/lang/String;I)V
+PLcom/android/server/autofill/Session;->dumpRequestLog(Ljava/io/PrintWriter;Landroid/metrics/LogMaker;)V
 PLcom/android/server/autofill/Session;->fill(IILandroid/service/autofill/Dataset;)V
-PLcom/android/server/autofill/Session;->fillContextWithAllowedValuesLocked(Landroid/service/autofill/FillContext;I)V
-PLcom/android/server/autofill/Session;->getLastResponseLocked(Ljava/lang/String;)Landroid/service/autofill/FillResponse;
+HPLcom/android/server/autofill/Session;->fillContextWithAllowedValuesLocked(Landroid/service/autofill/FillContext;I)V
+PLcom/android/server/autofill/Session;->findByAutofillId(Landroid/view/autofill/AutofillId;)Ljava/lang/String;
+PLcom/android/server/autofill/Session;->findValueFromThisSessionOnlyLocked(Landroid/view/autofill/AutofillId;)Landroid/view/autofill/AutofillValue;
+PLcom/android/server/autofill/Session;->findValueLocked(Landroid/view/autofill/AutofillId;)Landroid/view/autofill/AutofillValue;
+PLcom/android/server/autofill/Session;->forceRemoveSelfLocked()V
+PLcom/android/server/autofill/Session;->forceRemoveSelfLocked(I)V
+HPLcom/android/server/autofill/Session;->getActivityTokenLocked()Landroid/os/IBinder;
+PLcom/android/server/autofill/Session;->getClient()Landroid/view/autofill/IAutoFillManagerClient;
+HPLcom/android/server/autofill/Session;->getFillContextByRequestIdLocked(I)Landroid/service/autofill/FillContext;
+HPLcom/android/server/autofill/Session;->getIdsOfAllViewStatesLocked()[Landroid/view/autofill/AutofillId;
+PLcom/android/server/autofill/Session;->getInlineSuggestionsRequest()Landroid/view/inputmethod/InlineSuggestionsRequest;
+PLcom/android/server/autofill/Session;->getInlineSuggestionsResponseCallback()Lcom/android/internal/view/IInlineSuggestionsResponseCallback;
+HPLcom/android/server/autofill/Session;->getLastResponseIndexLocked()I
+HPLcom/android/server/autofill/Session;->getLastResponseLocked(Ljava/lang/String;)Landroid/service/autofill/FillResponse;
 PLcom/android/server/autofill/Session;->getSanitizedValue(Landroid/util/ArrayMap;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)Landroid/view/autofill/AutofillValue;
-PLcom/android/server/autofill/Session;->getUiForShowing()Lcom/android/server/autofill/ui/AutoFillUI;
+PLcom/android/server/autofill/Session;->getSaveInfoFlagsLocked()I
+PLcom/android/server/autofill/Session;->getSaveInfoLocked()Landroid/service/autofill/SaveInfo;
+HPLcom/android/server/autofill/Session;->getUiForShowing()Lcom/android/server/autofill/ui/AutoFillUI;
 PLcom/android/server/autofill/Session;->getValueFromContextsLocked(Landroid/view/autofill/AutofillId;)Landroid/view/autofill/AutofillValue;
+PLcom/android/server/autofill/Session;->handleLogContextCommitted()V
+HPLcom/android/server/autofill/Session;->hideAugmentedAutofillLocked(Lcom/android/server/autofill/ViewState;)V
+HPLcom/android/server/autofill/Session;->isIgnoredLocked(Landroid/view/autofill/AutofillId;)Z
+PLcom/android/server/autofill/Session;->isInlineSuggestionsEnabled()Z
+HPLcom/android/server/autofill/Session;->isSaveUiPendingLocked()Z
+HPLcom/android/server/autofill/Session;->isSavingLocked()Z
+PLcom/android/server/autofill/Session;->lambda$Fs9zdJwELk-9rAM3RiY6AyBKswI(Lcom/android/server/autofill/Session;Landroid/content/IntentSender;Landroid/content/Intent;)V
+PLcom/android/server/autofill/Session;->lambda$LM4xf4dbxH_NTutQzBkaQNxKbV0(Lcom/android/server/autofill/Session;ILandroid/content/IntentSender;Landroid/content/Intent;)V
+PLcom/android/server/autofill/Session;->lambda$NtvZwhlT1c4eLjg2qI6EER2oCtY(Lcom/android/server/autofill/Session;)V
+PLcom/android/server/autofill/Session;->lambda$cYu1t6lYVopApYW-vct82-7slZk(Lcom/android/server/autofill/Session;)V
+HPLcom/android/server/autofill/Session;->lambda$logFieldClassificationScore$1$Session(I[Landroid/view/autofill/AutofillId;[Ljava/lang/String;[Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/os/Bundle;)V
 PLcom/android/server/autofill/Session;->lambda$setClientLocked$0$Session()V
-PLcom/android/server/autofill/Session;->logContextCommittedLocked()V
+PLcom/android/server/autofill/Session;->lambda$triggerAugmentedAutofillLocked$2(Lcom/android/server/autofill/RemoteAugmentedAutofillService;)V
+PLcom/android/server/autofill/Session;->lambda$v6ZVyksJuHdWgJ1F8aoa_1LJWPo(Lcom/android/server/autofill/Session;)V
+PLcom/android/server/autofill/Session;->logAuthenticationStatusLocked(II)V
+PLcom/android/server/autofill/Session;->logContextCommitted()V
+PLcom/android/server/autofill/Session;->logContextCommitted(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HPLcom/android/server/autofill/Session;->logContextCommittedLocked(Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+PLcom/android/server/autofill/Session;->logFieldClassificationScore(Lcom/android/server/autofill/FieldClassificationStrategy;Landroid/service/autofill/FieldClassificationUserData;)V
+PLcom/android/server/autofill/Session;->logSaveShown()V
+HPLcom/android/server/autofill/Session;->maybeRequestInlineSuggestionsRequestThenFillLocked(Lcom/android/server/autofill/ViewState;II)V
 PLcom/android/server/autofill/Session;->mergePreviousSessionLocked(Z)Ljava/util/ArrayList;
 PLcom/android/server/autofill/Session;->newLogMaker(I)Landroid/metrics/LogMaker;
-PLcom/android/server/autofill/Session;->notifyUnavailableToClient(ILandroid/util/ArraySet;)V
+HPLcom/android/server/autofill/Session;->newLogMaker(ILjava/lang/String;)Landroid/metrics/LogMaker;
+PLcom/android/server/autofill/Session;->notifyDisableAutofillToClient(JLandroid/content/ComponentName;)V
+PLcom/android/server/autofill/Session;->notifyUnavailableToClient(ILjava/util/ArrayList;)V
 PLcom/android/server/autofill/Session;->onFillReady(Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Landroid/view/autofill/AutofillValue;)V
+PLcom/android/server/autofill/Session;->onFillRequestFailure(ILjava/lang/CharSequence;)V
 PLcom/android/server/autofill/Session;->onFillRequestFailureOrTimeout(IZLjava/lang/CharSequence;)V
-PLcom/android/server/autofill/Session;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;Ljava/lang/String;I)V
+HPLcom/android/server/autofill/Session;->onFillRequestSuccess(ILandroid/service/autofill/FillResponse;Ljava/lang/String;I)V
 PLcom/android/server/autofill/Session;->onFillRequestTimeout(I)V
+PLcom/android/server/autofill/Session;->onSaveRequestSuccess(Ljava/lang/String;Landroid/content/IntentSender;)V
 PLcom/android/server/autofill/Session;->processNullResponseLocked(II)V
 PLcom/android/server/autofill/Session;->processResponseLocked(Landroid/service/autofill/FillResponse;Landroid/os/Bundle;I)V
 PLcom/android/server/autofill/Session;->removeSelf()V
 PLcom/android/server/autofill/Session;->removeSelfLocked()V
+PLcom/android/server/autofill/Session;->replaceResponseLocked(Landroid/service/autofill/FillResponse;Landroid/service/autofill/FillResponse;Landroid/os/Bundle;)V
 PLcom/android/server/autofill/Session;->requestHideFillUi(Landroid/view/autofill/AutofillId;)V
-PLcom/android/server/autofill/Session;->requestNewFillResponseLocked(I)V
-PLcom/android/server/autofill/Session;->requestNewFillResponseOnViewEnteredIfNecessaryLocked(Landroid/view/autofill/AutofillId;Lcom/android/server/autofill/ViewState;I)V
+HPLcom/android/server/autofill/Session;->requestNewFillResponseLocked(Lcom/android/server/autofill/ViewState;II)V
+HPLcom/android/server/autofill/Session;->requestNewFillResponseOnViewEnteredIfNecessaryLocked(Landroid/view/autofill/AutofillId;Lcom/android/server/autofill/ViewState;I)V
+HPLcom/android/server/autofill/Session;->requestNewFillResponseOnViewEnteredIfNecessaryLocked(Landroid/view/autofill/AutofillId;Lcom/android/server/autofill/ViewState;I)Z
 PLcom/android/server/autofill/Session;->requestShowFillUi(Landroid/view/autofill/AutofillId;IILandroid/view/autofill/IAutofillWindowPresenter;)V
+PLcom/android/server/autofill/Session;->save()V
+PLcom/android/server/autofill/Session;->setAuthenticationResultLocked(Landroid/os/Bundle;I)V
 PLcom/android/server/autofill/Session;->setClientLocked(Landroid/os/IBinder;)V
 PLcom/android/server/autofill/Session;->setHasCallbackLocked(Z)V
 PLcom/android/server/autofill/Session;->setViewStatesLocked(Landroid/service/autofill/FillResponse;IZ)V
-PLcom/android/server/autofill/Session;->setViewStatesLocked(Landroid/service/autofill/FillResponse;Landroid/service/autofill/Dataset;IZ)V
+HPLcom/android/server/autofill/Session;->setViewStatesLocked(Landroid/service/autofill/FillResponse;Landroid/service/autofill/Dataset;IZ)V
 PLcom/android/server/autofill/Session;->shouldStartNewPartitionLocked(Landroid/view/autofill/AutofillId;)Z
 PLcom/android/server/autofill/Session;->showSaveLocked()Z
+PLcom/android/server/autofill/Session;->startAuthentication(ILandroid/content/IntentSender;Landroid/content/Intent;)V
+PLcom/android/server/autofill/Session;->startIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
+PLcom/android/server/autofill/Session;->startIntentSenderAndFinishSession(Landroid/content/IntentSender;)V
 PLcom/android/server/autofill/Session;->switchActivity(Landroid/os/IBinder;Landroid/os/IBinder;)V
-PLcom/android/server/autofill/Session;->triggerAugmentedAutofillLocked()Ljava/lang/Runnable;
+HPLcom/android/server/autofill/Session;->triggerAugmentedAutofillLocked()Ljava/lang/Runnable;
 PLcom/android/server/autofill/Session;->unlinkClientVultureLocked()V
-PLcom/android/server/autofill/Session;->updateLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V
+HPLcom/android/server/autofill/Session;->updateLocked(Landroid/view/autofill/AutofillId;Landroid/graphics/Rect;Landroid/view/autofill/AutofillValue;II)V
 PLcom/android/server/autofill/Session;->updateTrackedIdsLocked()V
+PLcom/android/server/autofill/Session;->updateValuesForSaveLocked()V
+PLcom/android/server/autofill/Session;->writeLog(I)V
+PLcom/android/server/autofill/Session;->wtf(Ljava/lang/Exception;Ljava/lang/String;[Ljava/lang/Object;)V
+HPLcom/android/server/autofill/ViewState;-><init>(Landroid/view/autofill/AutofillId;Lcom/android/server/autofill/ViewState$Listener;I)V
+HPLcom/android/server/autofill/ViewState;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/autofill/ViewState;->getAutofilledValue()Landroid/view/autofill/AutofillValue;
+HPLcom/android/server/autofill/ViewState;->getCurrentValue()Landroid/view/autofill/AutofillValue;
+PLcom/android/server/autofill/ViewState;->getDatasetId()Ljava/lang/String;
+PLcom/android/server/autofill/ViewState;->getSanitizedValue()Landroid/view/autofill/AutofillValue;
+PLcom/android/server/autofill/ViewState;->getState()I
+HPLcom/android/server/autofill/ViewState;->getStateAsString()Ljava/lang/String;
+HPLcom/android/server/autofill/ViewState;->getStateAsString(I)Ljava/lang/String;
+PLcom/android/server/autofill/ViewState;->getVirtualBounds()Landroid/graphics/Rect;
 PLcom/android/server/autofill/ViewState;->maybeCallOnFillReady(I)V
-PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$56AC3ykfo4h_e2LSjdkJ3XQn370;->run()V
+PLcom/android/server/autofill/ViewState;->resetState(I)V
+PLcom/android/server/autofill/ViewState;->setAutofilledValue(Landroid/view/autofill/AutofillValue;)V
+HPLcom/android/server/autofill/ViewState;->setCurrentValue(Landroid/view/autofill/AutofillValue;)V
+PLcom/android/server/autofill/ViewState;->setDatasetId(Ljava/lang/String;)V
+PLcom/android/server/autofill/ViewState;->setResponse(Landroid/service/autofill/FillResponse;)V
+PLcom/android/server/autofill/ViewState;->setSanitizedValue(Landroid/view/autofill/AutofillValue;)V
+HPLcom/android/server/autofill/ViewState;->setState(I)V
+PLcom/android/server/autofill/ViewState;->toString()Ljava/lang/String;
+HPLcom/android/server/autofill/ViewState;->update(Landroid/view/autofill/AutofillValue;Landroid/graphics/Rect;I)V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$56AC3ykfo4h_e2LSjdkJ3XQn370;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$56AC3ykfo4h_e2LSjdkJ3XQn370;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$DTy4Jc0XMA0Y3HhlZbnbed3GpWs;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Ljava/lang/String;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Landroid/metrics/LogMaker;)V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$DTy4Jc0XMA0Y3HhlZbnbed3GpWs;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$H0BWucCEHDp2_3FUpZ9-CLDtxYQ;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Ljava/lang/String;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Landroid/metrics/LogMaker;)V
 PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$H0BWucCEHDp2_3FUpZ9-CLDtxYQ;->run()V
-PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$LjywPhTUqjU0ZUlG1crxBg8qhRA;->run()V
+HSPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$HTgNHXKclzwJgKbCz3IEvPsgvvQ;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+HSPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$HTgNHXKclzwJgKbCz3IEvPsgvvQ;->run()V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$LjywPhTUqjU0ZUlG1crxBg8qhRA;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$LjywPhTUqjU0ZUlG1crxBg8qhRA;->run()V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$N1Kl8ql4a5Um06QDzh6Q59ZwYO4;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$N1Kl8ql4a5Um06QDzh6Q59ZwYO4;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$S44U_U0PT4w7o-A7hRXjwt9pKXg;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Landroid/metrics/LogMaker;ZZ)V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$S44U_U0PT4w7o-A7hRXjwt9pKXg;->run()V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$VF2EbGE70QNyGDbklN9Uz5xHqyQ;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
 PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$VF2EbGE70QNyGDbklN9Uz5xHqyQ;->run()V
+HSPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$XWhvh2-Jd9NLMoEos-e8RkZdQaI;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
 HSPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$XWhvh2-Jd9NLMoEos-e8RkZdQaI;->run()V
-PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$Z-Di7CGd-L0nOI4i7_RO1FYbhgU;->run()V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$Z-Di7CGd-L0nOI4i7_RO1FYbhgU;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$Z-Di7CGd-L0nOI4i7_RO1FYbhgU;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$_6s4RnleY3q9wMVHqQks_jl2KOA;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Landroid/metrics/LogMaker;ZZ)V
+PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$_6s4RnleY3q9wMVHqQks_jl2KOA;->run()V
+HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$i7qTc5vqiej5Psbl-bIkD7js-Ao;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
 PLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$i7qTc5vqiej5Psbl-bIkD7js-Ao;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$E4J-3bUcyqJNd4ZlExSBhwy8Tx4;-><init>(Lcom/android/server/autofill/ui/FillUi$AnchoredWindow;)V
 PLcom/android/server/autofill/ui/-$$Lambda$E4J-3bUcyqJNd4ZlExSBhwy8Tx4;->run()V
-PLcom/android/server/autofill/ui/-$$Lambda$FillUi$AutofillWindowPresenter$N4xQe2B0oe5MBiqZlsy3Lb7vZTg;->run()V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$2mij2xTFFWU6jS7_ER9Z-DufU90;-><init>(Lcom/android/server/autofill/ui/FillUi;I)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$2mij2xTFFWU6jS7_ER9Z-DufU90;->onFilterComplete(I)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$6jFaWS-2Oix04tyCKVhIK-exOKg;-><clinit>()V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$6jFaWS-2Oix04tyCKVhIK-exOKg;-><init>()V
+HPLcom/android/server/autofill/ui/-$$Lambda$FillUi$AutofillWindowPresenter$N4xQe2B0oe5MBiqZlsy3Lb7vZTg;-><init>(Lcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;Landroid/view/WindowManager$LayoutParams;)V
+HPLcom/android/server/autofill/ui/-$$Lambda$FillUi$AutofillWindowPresenter$N4xQe2B0oe5MBiqZlsy3Lb7vZTg;->run()V
 PLcom/android/server/autofill/ui/-$$Lambda$FillUi$FY016gv4LQ5AA6yOkKTH3EM5zaM;-><init>(Lcom/android/server/autofill/ui/FillUi;)V
-PLcom/android/server/autofill/ui/-$$Lambda$FillUi$FzsKmFVepz197dqO8-bth9Hmkl4;->onFilterComplete(I)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$FY016gv4LQ5AA6yOkKTH3EM5zaM;->onUnhandledKeyEvent(Landroid/view/View;Landroid/view/KeyEvent;)Z
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$ItemsAdapter$1$8s9zobTvKJVJjInaObtlx2flLMc;-><init>(Ljava/lang/CharSequence;)V
 PLcom/android/server/autofill/ui/-$$Lambda$FillUi$ItemsAdapter$1$8s9zobTvKJVJjInaObtlx2flLMc;->test(Ljava/lang/Object;)Z
 PLcom/android/server/autofill/ui/-$$Lambda$FillUi$QXIyKJs3cMApGd5ifauQkxdpdqk;-><init>(Lcom/android/server/autofill/ui/FillUi;)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$QXIyKJs3cMApGd5ifauQkxdpdqk;->onClickHandler(Landroid/view/View;Landroid/app/PendingIntent;Landroid/widget/RemoteViews$RemoteResponse;)Z
 PLcom/android/server/autofill/ui/-$$Lambda$FillUi$TUHYXtyYjvn8kBKxh1vyXjC9x84;-><init>(Lcom/android/server/autofill/ui/FillUi;)V
 PLcom/android/server/autofill/ui/-$$Lambda$FillUi$TUHYXtyYjvn8kBKxh1vyXjC9x84;->onItemClick(Landroid/widget/AdapterView;Landroid/view/View;IJ)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$h0jT24YuSGGDnoZ6Tf22n1QRkO8;-><init>(Lcom/android/server/autofill/ui/FillUi;Landroid/service/autofill/FillResponse;)V
+PLcom/android/server/autofill/ui/-$$Lambda$FillUi$h0jT24YuSGGDnoZ6Tf22n1QRkO8;->onClick(Landroid/view/View;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$9E3wVcFykoYBpXtez_dJMd6U_Nw;-><init>(Lcom/android/server/autofill/ui/SaveUi;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$E9O26NP1L_DDYBfaO7fQ0hhPAx8;-><init>(Lcom/android/server/autofill/ui/SaveUi;Landroid/service/autofill/SaveInfo;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$E9O26NP1L_DDYBfaO7fQ0hhPAx8;->onClick(Landroid/view/View;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$MHTJI4CEYKh8w8RM-t9zG_19Jjc;-><init>(Ljava/util/List;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$MHTJI4CEYKh8w8RM-t9zG_19Jjc;->test(Ljava/lang/Object;)Z
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$b3z89RdKv6skukyM-l67uIcvlf0;-><init>(Lcom/android/server/autofill/ui/SaveUi;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$b3z89RdKv6skukyM-l67uIcvlf0;->onClick(Landroid/view/View;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$ckPlzqJfB_ohleAkb5RXKU7mFY8;-><init>(Lcom/android/server/autofill/ui/SaveUi;)V
+PLcom/android/server/autofill/ui/-$$Lambda$SaveUi$ckPlzqJfB_ohleAkb5RXKU7mFY8;->onDismiss(Landroid/content/DialogInterface;)V
+PLcom/android/server/autofill/ui/AutoFillUI$1;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Landroid/metrics/LogMaker;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;)V
 PLcom/android/server/autofill/ui/AutoFillUI$1;->onDatasetPicked(Landroid/service/autofill/Dataset;)V
 PLcom/android/server/autofill/ui/AutoFillUI$1;->onDestroy()V
+PLcom/android/server/autofill/ui/AutoFillUI$1;->onResponsePicked(Landroid/service/autofill/FillResponse;)V
 PLcom/android/server/autofill/ui/AutoFillUI$1;->requestHideFillUi()V
 PLcom/android/server/autofill/ui/AutoFillUI$1;->requestShowFillUi(IILandroid/view/autofill/IAutofillWindowPresenter;)V
+PLcom/android/server/autofill/ui/AutoFillUI$1;->startIntentSender(Landroid/content/IntentSender;)V
+PLcom/android/server/autofill/ui/AutoFillUI$2;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Landroid/metrics/LogMaker;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;)V
+PLcom/android/server/autofill/ui/AutoFillUI$2;->onCancel(Landroid/content/IntentSender;)V
+PLcom/android/server/autofill/ui/AutoFillUI$2;->onDestroy()V
+PLcom/android/server/autofill/ui/AutoFillUI$2;->onSave()V
 HSPLcom/android/server/autofill/ui/AutoFillUI;-><init>(Landroid/content/Context;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->access$000(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)Lcom/android/server/autofill/ui/PendingUi;
+PLcom/android/server/autofill/ui/AutoFillUI;->access$100(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/PendingUi;Z)V
+PLcom/android/server/autofill/ui/AutoFillUI;->access$200(Lcom/android/server/autofill/ui/AutoFillUI;)Landroid/content/Context;
+PLcom/android/server/autofill/ui/AutoFillUI;->access$300(Lcom/android/server/autofill/ui/AutoFillUI;)Lcom/android/internal/logging/MetricsLogger;
+PLcom/android/server/autofill/ui/AutoFillUI;->access$400(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+PLcom/android/server/autofill/ui/AutoFillUI;->access$500(Lcom/android/server/autofill/ui/AutoFillUI;)Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;
+PLcom/android/server/autofill/ui/AutoFillUI;->clearCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HSPLcom/android/server/autofill/ui/AutoFillUI;->destroyAll(Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+HSPLcom/android/server/autofill/ui/AutoFillUI;->destroyAllUiThread(Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
 HSPLcom/android/server/autofill/ui/AutoFillUI;->destroySaveUiUiThread(Lcom/android/server/autofill/ui/PendingUi;Z)V
 PLcom/android/server/autofill/ui/AutoFillUI;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+HPLcom/android/server/autofill/ui/AutoFillUI;->filterFillUi(Ljava/lang/String;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HPLcom/android/server/autofill/ui/AutoFillUI;->hideAll(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HPLcom/android/server/autofill/ui/AutoFillUI;->hideAllUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->hideFillUi(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HSPLcom/android/server/autofill/ui/AutoFillUI;->hideFillUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
 PLcom/android/server/autofill/ui/AutoFillUI;->hideSaveUiUiThread(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)Lcom/android/server/autofill/ui/PendingUi;
+PLcom/android/server/autofill/ui/AutoFillUI;->isSaveUiShowing()Z
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$clearCallback$1$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+HSPLcom/android/server/autofill/ui/AutoFillUI;->lambda$destroyAll$11$AutoFillUI(Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+HSPLcom/android/server/autofill/ui/AutoFillUI;->lambda$destroyAll$9$AutoFillUI(Lcom/android/server/autofill/ui/PendingUi;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Z)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$filterFillUi$4$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Ljava/lang/String;)V
+HPLcom/android/server/autofill/ui/AutoFillUI;->lambda$hideAll$10$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$hideAll$8$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$hideFillUi$3$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$setCallback$0$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
 PLcom/android/server/autofill/ui/AutoFillUI;->lambda$showFillUi$5$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Ljava/lang/String;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Landroid/metrics/LogMaker;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$showFillUi$7$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Ljava/lang/String;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Landroid/metrics/LogMaker;)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$showSaveUi$6$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Landroid/metrics/LogMaker;ZZ)V
+PLcom/android/server/autofill/ui/AutoFillUI;->lambda$showSaveUi$8$AutoFillUI(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Landroid/metrics/LogMaker;ZZ)V
+HPLcom/android/server/autofill/ui/AutoFillUI;->setCallback(Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
 PLcom/android/server/autofill/ui/AutoFillUI;->showFillUi(Landroid/view/autofill/AutofillId;Landroid/service/autofill/FillResponse;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;IZ)V
+PLcom/android/server/autofill/ui/AutoFillUI;->showSaveUi(Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Landroid/content/ComponentName;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;Lcom/android/server/autofill/ui/PendingUi;ZZ)V
+PLcom/android/server/autofill/ui/CustomScrollView;-><init>(Landroid/content/Context;Landroid/util/AttributeSet;)V
+PLcom/android/server/autofill/ui/CustomScrollView;->calculateDimensions()V
+PLcom/android/server/autofill/ui/CustomScrollView;->onMeasure(II)V
 PLcom/android/server/autofill/ui/FillUi$AnchoredWindow;-><init>(Lcom/android/server/autofill/ui/FillUi;Landroid/view/View;Lcom/android/server/autofill/ui/OverlayControl;)V
+PLcom/android/server/autofill/ui/FillUi$AnchoredWindow;->hide()V
 PLcom/android/server/autofill/ui/FillUi$AnchoredWindow;->hide(Z)V
 PLcom/android/server/autofill/ui/FillUi$AnchoredWindow;->show(Landroid/view/WindowManager$LayoutParams;)V
+PLcom/android/server/autofill/ui/FillUi$AnnounceFilterResult;-><init>(Lcom/android/server/autofill/ui/FillUi;)V
+PLcom/android/server/autofill/ui/FillUi$AnnounceFilterResult;-><init>(Lcom/android/server/autofill/ui/FillUi;Lcom/android/server/autofill/ui/FillUi$1;)V
+PLcom/android/server/autofill/ui/FillUi$AnnounceFilterResult;->post()V
+PLcom/android/server/autofill/ui/FillUi$AnnounceFilterResult;->remove()V
+PLcom/android/server/autofill/ui/FillUi$AnnounceFilterResult;->run()V
+PLcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;-><init>(Lcom/android/server/autofill/ui/FillUi;)V
 PLcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;-><init>(Lcom/android/server/autofill/ui/FillUi;Lcom/android/server/autofill/ui/FillUi$1;)V
 PLcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;->hide(Landroid/graphics/Rect;)V
+PLcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;->lambda$show$0$FillUi$AutofillWindowPresenter(Landroid/view/WindowManager$LayoutParams;)V
 PLcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;->show(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;ZI)V
-PLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;->performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults;
-PLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;->publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;-><init>(Lcom/android/server/autofill/ui/FillUi$ItemsAdapter;)V
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;->lambda$performFiltering$0(Ljava/lang/CharSequence;Lcom/android/server/autofill/ui/FillUi$ViewItem;)Z
+HPLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;->performFiltering(Ljava/lang/CharSequence;)Landroid/widget/Filter$FilterResults;
+HPLcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;->publishResults(Ljava/lang/CharSequence;Landroid/widget/Filter$FilterResults;)V
 PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;-><init>(Lcom/android/server/autofill/ui/FillUi;Ljava/util/List;)V
-PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getCount()I
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->access$700(Lcom/android/server/autofill/ui/FillUi$ItemsAdapter;)Ljava/util/List;
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->access$800(Lcom/android/server/autofill/ui/FillUi$ItemsAdapter;)Ljava/util/List;
+HPLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getCount()I
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getFilter()Landroid/widget/Filter;
+PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getItem(I)Lcom/android/server/autofill/ui/FillUi$ViewItem;
 PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getItemId(I)J
 PLcom/android/server/autofill/ui/FillUi$ItemsAdapter;->getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;
 PLcom/android/server/autofill/ui/FillUi$ViewItem;-><init>(Landroid/service/autofill/Dataset;Ljava/util/regex/Pattern;ZLjava/lang/String;Landroid/view/View;)V
-PLcom/android/server/autofill/ui/FillUi$ViewItem;->matches(Ljava/lang/CharSequence;)Z
+HPLcom/android/server/autofill/ui/FillUi$ViewItem;->matches(Ljava/lang/CharSequence;)Z
+PLcom/android/server/autofill/ui/FillUi;-><clinit>()V
 PLcom/android/server/autofill/ui/FillUi;-><init>(Landroid/content/Context;Landroid/service/autofill/FillResponse;Landroid/view/autofill/AutofillId;Ljava/lang/String;Lcom/android/server/autofill/ui/OverlayControl;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;ZLcom/android/server/autofill/ui/FillUi$Callback;)V
+PLcom/android/server/autofill/ui/FillUi;->access$100(Lcom/android/server/autofill/ui/FillUi;)Lcom/android/server/autofill/ui/FillUi$AnchoredWindow;
+PLcom/android/server/autofill/ui/FillUi;->access$1000(Lcom/android/server/autofill/ui/FillUi;)Landroid/widget/ListView;
+PLcom/android/server/autofill/ui/FillUi;->access$1100(Lcom/android/server/autofill/ui/FillUi;)Landroid/content/Context;
+PLcom/android/server/autofill/ui/FillUi;->access$900(Lcom/android/server/autofill/ui/FillUi;)V
+PLcom/android/server/autofill/ui/FillUi;->announceSearchResultIfNeeded()V
+PLcom/android/server/autofill/ui/FillUi;->applyCancelAction(Landroid/view/View;[I)V
 PLcom/android/server/autofill/ui/FillUi;->applyNewFilterText()V
+PLcom/android/server/autofill/ui/FillUi;->destroy(Z)V
 PLcom/android/server/autofill/ui/FillUi;->isFullScreen(Landroid/content/Context;)Z
-PLcom/android/server/autofill/ui/FillUi;->lambda$applyNewFilterText$5$FillUi(II)V
+HPLcom/android/server/autofill/ui/FillUi;->lambda$applyNewFilterText$6$FillUi(II)V
+PLcom/android/server/autofill/ui/FillUi;->lambda$new$0$FillUi(Landroid/view/View;Landroid/view/KeyEvent;)Z
+PLcom/android/server/autofill/ui/FillUi;->lambda$new$1$FillUi(Landroid/view/View;Landroid/app/PendingIntent;Landroid/widget/RemoteViews$RemoteResponse;)Z
+PLcom/android/server/autofill/ui/FillUi;->lambda$new$2$FillUi(Landroid/service/autofill/FillResponse;Landroid/view/View;)V
+PLcom/android/server/autofill/ui/FillUi;->lambda$new$3$FillUi(Landroid/widget/AdapterView;Landroid/view/View;IJ)V
+PLcom/android/server/autofill/ui/FillUi;->newClickBlocker()Landroid/widget/RemoteViews$OnClickHandler;
+PLcom/android/server/autofill/ui/FillUi;->requestShowFillUi()V
 PLcom/android/server/autofill/ui/FillUi;->resolveMaxWindowSize(Landroid/content/Context;Landroid/graphics/Point;)V
 PLcom/android/server/autofill/ui/FillUi;->setFilterText(Ljava/lang/String;)V
+PLcom/android/server/autofill/ui/FillUi;->throwIfDestroyed()V
 PLcom/android/server/autofill/ui/FillUi;->updateContentSize()Z
+PLcom/android/server/autofill/ui/FillUi;->updateHeight(Landroid/view/View;Landroid/graphics/Point;)Z
+PLcom/android/server/autofill/ui/FillUi;->updateWidth(Landroid/view/View;Landroid/graphics/Point;)Z
+HSPLcom/android/server/autofill/ui/OverlayControl;-><init>(Landroid/content/Context;)V
 PLcom/android/server/autofill/ui/OverlayControl;->hideOverlays()V
+PLcom/android/server/autofill/ui/OverlayControl;->setOverlayAllowed(Z)V
 PLcom/android/server/autofill/ui/OverlayControl;->showOverlays()V
-PLcom/android/server/backup/-$$Lambda$-xfpm33S8Jqv3KpU_-llxhj8ZPI;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/backup/-$$Lambda$Trampoline$RB5ywBeynPqhAQ6VHW4qi9U4c84;->run()V
-HSPLcom/android/server/backup/-$$Lambda$Trampoline$_vkvTSe7bkLYa64kIjWjqjTHe7E;->run()V
-PLcom/android/server/backup/-$$Lambda$Trampoline$a6uexAeN8zHcMQQ9h_KZ71UQV_A;->run()V
+PLcom/android/server/autofill/ui/PendingUi;-><init>(Landroid/os/IBinder;ILandroid/view/autofill/IAutoFillManagerClient;)V
+PLcom/android/server/autofill/ui/PendingUi;->getState()I
+PLcom/android/server/autofill/ui/PendingUi;->toString()Ljava/lang/String;
+PLcom/android/server/autofill/ui/SaveUi$1;-><init>(Lcom/android/server/autofill/ui/SaveUi;Landroid/content/Context;I)V
+PLcom/android/server/autofill/ui/SaveUi$OneActionThenDestroyListener;-><init>(Lcom/android/server/autofill/ui/SaveUi;Lcom/android/server/autofill/ui/SaveUi$OnSaveListener;)V
+PLcom/android/server/autofill/ui/SaveUi$OneActionThenDestroyListener;->onCancel(Landroid/content/IntentSender;)V
+PLcom/android/server/autofill/ui/SaveUi$OneActionThenDestroyListener;->onDestroy()V
+PLcom/android/server/autofill/ui/SaveUi$OneActionThenDestroyListener;->onSave()V
+PLcom/android/server/autofill/ui/SaveUi;-><init>(Landroid/content/Context;Lcom/android/server/autofill/ui/PendingUi;Ljava/lang/CharSequence;Landroid/graphics/drawable/Drawable;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/autofill/SaveInfo;Landroid/service/autofill/ValueFinder;Lcom/android/server/autofill/ui/OverlayControl;Lcom/android/server/autofill/ui/SaveUi$OnSaveListener;ZZZ)V
+PLcom/android/server/autofill/ui/SaveUi;->applyCustomDescription(Landroid/content/Context;Landroid/view/View;Landroid/service/autofill/ValueFinder;Landroid/service/autofill/SaveInfo;)Z
+PLcom/android/server/autofill/ui/SaveUi;->applyMovementMethodIfNeed(Landroid/widget/TextView;)V
+PLcom/android/server/autofill/ui/SaveUi;->applyTextViewStyle(Landroid/view/View;)V
+PLcom/android/server/autofill/ui/SaveUi;->destroy()V
+PLcom/android/server/autofill/ui/SaveUi;->hide()Lcom/android/server/autofill/ui/PendingUi;
+PLcom/android/server/autofill/ui/SaveUi;->isShowing()Z
+PLcom/android/server/autofill/ui/SaveUi;->lambda$applyTextViewStyle$5(Ljava/util/List;Landroid/view/View;)Z
+PLcom/android/server/autofill/ui/SaveUi;->lambda$new$0$SaveUi(Landroid/service/autofill/SaveInfo;Landroid/view/View;)V
+PLcom/android/server/autofill/ui/SaveUi;->lambda$new$1$SaveUi(Landroid/view/View;)V
+PLcom/android/server/autofill/ui/SaveUi;->lambda$new$2$SaveUi(Landroid/content/DialogInterface;)V
+PLcom/android/server/autofill/ui/SaveUi;->newLogMaker(I)Landroid/metrics/LogMaker;
+PLcom/android/server/autofill/ui/SaveUi;->newLogMaker(II)Landroid/metrics/LogMaker;
+PLcom/android/server/autofill/ui/SaveUi;->setServiceIcon(Landroid/content/Context;Landroid/view/View;Landroid/graphics/drawable/Drawable;)V
+PLcom/android/server/autofill/ui/SaveUi;->show()V
+PLcom/android/server/autofill/ui/SaveUi;->throwIfDestroyed()V
+PLcom/android/server/autofill/ui/SaveUi;->writeLog(I)V
+HPLcom/android/server/backup/-$$Lambda$-xfpm33S8Jqv3KpU_-llxhj8ZPI;-><init>(Ljava/util/Set;)V
+HPLcom/android/server/backup/-$$Lambda$-xfpm33S8Jqv3KpU_-llxhj8ZPI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$1$wNR2kL0jG0FP7rVncyt3YJRw1RI;-><init>(Lcom/android/server/backup/BackupManagerService$1;I)V
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$1$wNR2kL0jG0FP7rVncyt3YJRw1RI;->run()V
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$6P4GQiH-FZ5t_w1XVcGR55OdSL4;-><init>(Lcom/android/server/backup/BackupManagerService;I)V
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$6P4GQiH-FZ5t_w1XVcGR55OdSL4;->run()V
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$PzvNLQ5gp1PWnFQ6Pxc6Lw6ubKU;-><init>(Lcom/android/server/backup/BackupManagerService;I)V
+PLcom/android/server/backup/-$$Lambda$BackupManagerService$PzvNLQ5gp1PWnFQ6Pxc6Lw6ubKU;->run()V
+PLcom/android/server/backup/-$$Lambda$TransportManager$4ND1hZMerK5gHU67okq6DZjKDQw;-><clinit>()V
 PLcom/android/server/backup/-$$Lambda$TransportManager$4ND1hZMerK5gHU67okq6DZjKDQw;-><init>()V
 PLcom/android/server/backup/-$$Lambda$TransportManager$4ND1hZMerK5gHU67okq6DZjKDQw;->test(Ljava/lang/Object;)Z
+PLcom/android/server/backup/-$$Lambda$TransportManager$Qbutmzd17ICwZdy0UzRrO-3_VK0;-><clinit>()V
 PLcom/android/server/backup/-$$Lambda$TransportManager$Qbutmzd17ICwZdy0UzRrO-3_VK0;-><init>()V
 PLcom/android/server/backup/-$$Lambda$TransportManager$Qbutmzd17ICwZdy0UzRrO-3_VK0;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/backup/-$$Lambda$TransportManager$Z9ckpFUW2V4jkdHnyXIEiLuAoBc;-><init>()V
-PLcom/android/server/backup/-$$Lambda$TransportManager$_dxJobf45tWiMkaNlKY-z26kB2Q;->test(Ljava/lang/Object;)Z
+PLcom/android/server/backup/-$$Lambda$TransportManager$Z9ckpFUW2V4jkdHnyXIEiLuAoBc;-><clinit>()V
+PLcom/android/server/backup/-$$Lambda$TransportManager$Z9ckpFUW2V4jkdHnyXIEiLuAoBc;-><init>()V
+HPLcom/android/server/backup/-$$Lambda$TransportManager$_dxJobf45tWiMkaNlKY-z26kB2Q;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/backup/-$$Lambda$TransportManager$_dxJobf45tWiMkaNlKY-z26kB2Q;->test(Ljava/lang/Object;)Z
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$9w65wn45YYtTkXbyQZdj_7K5LSs;-><init>(Lcom/android/server/backup/UserBackupManagerService$2;Ljava/lang/String;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$9w65wn45YYtTkXbyQZdj_7K5LSs;->run()V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$ICUfBQAK1UQkmGSsPDmR00etFBk;-><init>(Lcom/android/server/backup/UserBackupManagerService$2;Ljava/lang/String;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$ICUfBQAK1UQkmGSsPDmR00etFBk;->run()V
-PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$VpHOYQHCWBG618oharjEXEDr57U;->run()V
+HPLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$VpHOYQHCWBG618oharjEXEDr57U;-><init>(Lcom/android/server/backup/UserBackupManagerService$2;Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$VpHOYQHCWBG618oharjEXEDr57U;->run()V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$9cuIH_XloqtNByp_6hXeGaVars8;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$9cuIH_XloqtNByp_6hXeGaVars8;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$TB8LUl0TwUK9CmmdepXioEU4Qxg;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$TB8LUl0TwUK9CmmdepXioEU4Qxg;->onFinished(Ljava/lang/String;)V
-PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$W51Aw9Pu9AOsFVYQgIZy31INmwI;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/backup/-$$Lambda$UserBackupManagerService$W51Aw9Pu9AOsFVYQgIZy31INmwI;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+HPLcom/android/server/backup/-$$Lambda$UserBackupManagerService$W51Aw9Pu9AOsFVYQgIZy31INmwI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$_gNqJq9Ygtc0ZVwYhCSDKCUKrKY;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$_gNqJq9Ygtc0ZVwYhCSDKCUKrKY;->run()V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$pLslHGi1wuuGrjS32QbMlDjlGbM;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$pLslHGi1wuuGrjS32QbMlDjlGbM;->onFinished(Ljava/lang/String;)V
+HPLcom/android/server/backup/-$$Lambda$UserBackupManagerService$sAYsrY5C5zAl7EgKgwo188kx6JE;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;)V
 PLcom/android/server/backup/-$$Lambda$UserBackupManagerService$sAYsrY5C5zAl7EgKgwo188kx6JE;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/backup/-$$Lambda$pM_c5tVAGDtxjxLF_ONtACWWq6Q;-><init>(Lcom/android/server/backup/TransportManager;)V
 PLcom/android/server/backup/-$$Lambda$pM_c5tVAGDtxjxLF_ONtACWWq6Q;->run()V
+PLcom/android/server/backup/BackupAgentTimeoutParameters;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
 PLcom/android/server/backup/BackupAgentTimeoutParameters;->getFullBackupAgentTimeoutMillis()J
-PLcom/android/server/backup/BackupAgentTimeoutParameters;->getKvBackupAgentTimeoutMillis()J
+HPLcom/android/server/backup/BackupAgentTimeoutParameters;->getKvBackupAgentTimeoutMillis()J
 PLcom/android/server/backup/BackupAgentTimeoutParameters;->getQuotaExceededTimeoutMillis()J
-HSPLcom/android/server/backup/BackupAgentTimeoutParameters;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
-HSPLcom/android/server/backup/BackupAgentTimeoutParameters;->update(Landroid/util/KeyValueListParser;)V
-PLcom/android/server/backup/BackupManagerConstants;->getBackupFinishedNotificationReceivers()[Ljava/lang/String;
-PLcom/android/server/backup/BackupManagerConstants;->getFullBackupIntervalMilliseconds()J
-PLcom/android/server/backup/BackupManagerConstants;->getFullBackupRequireCharging()Z
-PLcom/android/server/backup/BackupManagerConstants;->getFullBackupRequiredNetworkType()I
-HSPLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupFuzzMilliseconds()J
-HSPLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupIntervalMilliseconds()J
-HSPLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequireCharging()Z
-HSPLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupRequiredNetworkType()I
-HSPLcom/android/server/backup/BackupManagerConstants;->getSettingValue(Landroid/content/ContentResolver;)Ljava/lang/String;
-HSPLcom/android/server/backup/BackupManagerConstants;->update(Landroid/util/KeyValueListParser;)V
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getRestoreAgentFinishedTimeoutMillis()J
+PLcom/android/server/backup/BackupAgentTimeoutParameters;->getRestoreAgentTimeoutMillis()J
+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/BackupManagerConstants;-><init>(Landroid/os/Handler;Landroid/content/ContentResolver;)V
+HPLcom/android/server/backup/BackupManagerConstants;->getBackupFinishedNotificationReceivers()[Ljava/lang/String;
+HPLcom/android/server/backup/BackupManagerConstants;->getFullBackupIntervalMilliseconds()J
+HPLcom/android/server/backup/BackupManagerConstants;->getFullBackupRequireCharging()Z
+HPLcom/android/server/backup/BackupManagerConstants;->getFullBackupRequiredNetworkType()I
+PLcom/android/server/backup/BackupManagerConstants;->getKeyValueBackupFuzzMilliseconds()J
+HPLcom/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
+HSPLcom/android/server/backup/BackupManagerService$1;-><init>(Lcom/android/server/backup/BackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService$1;->lambda$onReceive$0$BackupManagerService$1(I)V
+PLcom/android/server/backup/BackupManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/backup/BackupManagerService$Lifecycle;-><init>(Landroid/content/Context;Lcom/android/server/backup/BackupManagerService;)V
 HSPLcom/android/server/backup/BackupManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/backup/BackupManagerService$Lifecycle;->onUnlockUser(I)V
-HSPLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;Lcom/android/server/backup/Trampoline;Landroid/os/HandlerThread;)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/backup/BackupManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/backup/BackupManagerService$Lifecycle;->publishService(Ljava/lang/String;Landroid/os/IBinder;)V
+HSPLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/backup/BackupManagerService;-><init>(Landroid/content/Context;Landroid/util/SparseArray;)V
+PLcom/android/server/backup/BackupManagerService;->access$000(Lcom/android/server/backup/BackupManagerService;)Landroid/os/Handler;
+PLcom/android/server/backup/BackupManagerService;->access$100(Lcom/android/server/backup/BackupManagerService;I)V
+PLcom/android/server/backup/BackupManagerService;->activateBackupForUserLocked(I)V
 PLcom/android/server/backup/BackupManagerService;->agentConnected(ILjava/lang/String;Landroid/os/IBinder;)V
+HPLcom/android/server/backup/BackupManagerService;->agentConnectedForUser(ILjava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/backup/BackupManagerService;->agentDisconnected(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->agentDisconnectedForUser(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->backupNow()V
 PLcom/android/server/backup/BackupManagerService;->backupNow(I)V
-PLcom/android/server/backup/BackupManagerService;->beginFullBackup(ILcom/android/server/backup/FullBackupJob;)Z
-HSPLcom/android/server/backup/BackupManagerService;->dataChanged(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->backupNowForUser(I)V
+HPLcom/android/server/backup/BackupManagerService;->beginFullBackup(ILcom/android/server/backup/FullBackupJob;)Z
+PLcom/android/server/backup/BackupManagerService;->binderGetCallingUid()I
+HSPLcom/android/server/backup/BackupManagerService;->binderGetCallingUserId()I
+HPLcom/android/server/backup/BackupManagerService;->createFile(Ljava/io/File;)V
+HPLcom/android/server/backup/BackupManagerService;->dataChanged(ILjava/lang/String;)V
+HSPLcom/android/server/backup/BackupManagerService;->dataChanged(Ljava/lang/String;)V
+HSPLcom/android/server/backup/BackupManagerService;->dataChangedForUser(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->deactivateBackupForUserLocked(I)V
+PLcom/android/server/backup/BackupManagerService;->deleteFile(Ljava/io/File;)V
 PLcom/android/server/backup/BackupManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/backup/BackupManagerService;->getCurrentTransport(I)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->dumpWithoutCheckingPermission(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->endFullBackup(I)V
+HPLcom/android/server/backup/BackupManagerService;->enforceCallingPermissionOnUserId(ILjava/lang/String;)V
+PLcom/android/server/backup/BackupManagerService;->enforcePermissionsOnUser(I)V
+PLcom/android/server/backup/BackupManagerService;->getActivatedFileForNonSystemUser(I)Ljava/io/File;
+PLcom/android/server/backup/BackupManagerService;->getAvailableRestoreToken(ILjava/lang/String;)J
+PLcom/android/server/backup/BackupManagerService;->getAvailableRestoreTokenForUser(ILjava/lang/String;)J
+HPLcom/android/server/backup/BackupManagerService;->getCurrentTransport()Ljava/lang/String;
+HPLcom/android/server/backup/BackupManagerService;->getCurrentTransport(I)Ljava/lang/String;
+HPLcom/android/server/backup/BackupManagerService;->getCurrentTransportForUser(I)Ljava/lang/String;
 PLcom/android/server/backup/BackupManagerService;->getDataManagementIntent(ILjava/lang/String;)Landroid/content/Intent;
-HSPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;
-HSPLcom/android/server/backup/BackupManagerService;->getServiceUsers()Landroid/util/SparseArray;
-PLcom/android/server/backup/BackupManagerService;->isAppEligibleForBackup(ILjava/lang/String;)Z
-PLcom/android/server/backup/BackupManagerService;->isBackupEnabled(I)Z
+PLcom/android/server/backup/BackupManagerService;->getDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/backup/BackupManagerService;->getDataManagementIntentForUser(ILjava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/backup/BackupManagerService;->getInstance()Lcom/android/server/backup/BackupManagerService;
+PLcom/android/server/backup/BackupManagerService;->getRememberActivatedFileForNonSystemUser(I)Ljava/io/File;
+HPLcom/android/server/backup/BackupManagerService;->getServiceForUserIfCallerHasPermission(ILjava/lang/String;)Lcom/android/server/backup/UserBackupManagerService;
+HPLcom/android/server/backup/BackupManagerService;->getSuppressFileForSystemUser()Ljava/io/File;
+PLcom/android/server/backup/BackupManagerService;->getUserManager()Landroid/os/UserManager;
+PLcom/android/server/backup/BackupManagerService;->hasBackupPassword()Z
+HPLcom/android/server/backup/BackupManagerService;->isAppEligibleForBackup(ILjava/lang/String;)Z
+HPLcom/android/server/backup/BackupManagerService;->isAppEligibleForBackupForUser(ILjava/lang/String;)Z
+HPLcom/android/server/backup/BackupManagerService;->isBackupActivatedForUser(I)Z
+HSPLcom/android/server/backup/BackupManagerService;->isBackupDisabled()Z
+HPLcom/android/server/backup/BackupManagerService;->isBackupEnabled()Z
+HPLcom/android/server/backup/BackupManagerService;->isBackupEnabled(I)Z
+HPLcom/android/server/backup/BackupManagerService;->isBackupEnabledForUser(I)Z
+PLcom/android/server/backup/BackupManagerService;->isBackupServiceActive(I)Z
+HSPLcom/android/server/backup/BackupManagerService;->isUserReadyForBackup(I)Z
+PLcom/android/server/backup/BackupManagerService;->lambda$onStopUser$1$BackupManagerService(I)V
+PLcom/android/server/backup/BackupManagerService;->lambda$onUnlockUser$0$BackupManagerService(I)V
+PLcom/android/server/backup/BackupManagerService;->listAllTransports()[Ljava/lang/String;
 PLcom/android/server/backup/BackupManagerService;->listAllTransports(I)[Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->listAllTransportsForUser(I)[Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->onRemovedNonSystemUser(I)V
+PLcom/android/server/backup/BackupManagerService;->onStopUser(I)V
+PLcom/android/server/backup/BackupManagerService;->onUnlockUser(I)V
 PLcom/android/server/backup/BackupManagerService;->opComplete(IIJ)V
-PLcom/android/server/backup/BackupManagerService;->requestBackup(I[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+HPLcom/android/server/backup/BackupManagerService;->opCompleteForUser(IIJ)V
+PLcom/android/server/backup/BackupManagerService;->postToHandler(Ljava/lang/Runnable;)V
+HPLcom/android/server/backup/BackupManagerService;->requestBackup(I[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+HPLcom/android/server/backup/BackupManagerService;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+HPLcom/android/server/backup/BackupManagerService;->requestBackupForUser(I[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
 PLcom/android/server/backup/BackupManagerService;->restoreAtInstall(ILjava/lang/String;I)V
-HSPLcom/android/server/backup/BackupManagerService;->startServiceForUser(I)V
-HSPLcom/android/server/backup/BackupManagerService;->startServiceForUser(ILcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/BackupManagerService;->restoreAtInstallForUser(ILjava/lang/String;I)V
+PLcom/android/server/backup/BackupManagerService;->selectBackupTransport(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->selectBackupTransportForUser(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(IZ)V
+PLcom/android/server/backup/BackupManagerService;->setBackupEnabled(Z)V
+PLcom/android/server/backup/BackupManagerService;->setBackupEnabledForUser(IZ)V
+HPLcom/android/server/backup/BackupManagerService;->setBackupServiceActive(IZ)V
+HPLcom/android/server/backup/BackupManagerService;->startServiceForUser(I)V
+PLcom/android/server/backup/BackupManagerService;->startServiceForUser(ILcom/android/server/backup/UserBackupManagerService;)V
 PLcom/android/server/backup/BackupManagerService;->stopServiceForUser(I)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
-HSPLcom/android/server/backup/BackupPasswordManager;->loadStateFromFilesystem()V
-PLcom/android/server/backup/BackupUtils;->hashSignature(Landroid/content/pm/Signature;)[B
-PLcom/android/server/backup/BackupUtils;->hashSignature([B)[B
-PLcom/android/server/backup/BackupUtils;->signaturesMatch(Ljava/util/ArrayList;Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageManagerInternal;)Z
-HSPLcom/android/server/backup/DataChangedJournal;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/backup/DataChangedJournal;->addPackage(Ljava/lang/String;)V
+HPLcom/android/server/backup/BackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+HPLcom/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$1;)V
+PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>()V
+PLcom/android/server/backup/BackupPasswordManager$PasswordVersionFileCodec;-><init>(Lcom/android/server/backup/BackupPasswordManager$1;)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;->hasBackupPassword()Z
+PLcom/android/server/backup/BackupPasswordManager;->loadStateFromFilesystem()V
+HPLcom/android/server/backup/BackupUtils;->hashSignature(Landroid/content/pm/Signature;)[B
+HPLcom/android/server/backup/BackupUtils;->hashSignature([B)[B
+HPLcom/android/server/backup/BackupUtils;->hashSignatureArray([Landroid/content/pm/Signature;)Ljava/util/ArrayList;
+HPLcom/android/server/backup/BackupUtils;->signaturesMatch(Ljava/util/ArrayList;Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageManagerInternal;)Z
+HPLcom/android/server/backup/DataChangedJournal;-><init>(Ljava/io/File;)V
+PLcom/android/server/backup/DataChangedJournal;->addPackage(Ljava/lang/String;)V
 PLcom/android/server/backup/DataChangedJournal;->delete()Z
-PLcom/android/server/backup/DataChangedJournal;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/backup/DataChangedJournal;->forEach(Ljava/util/function/Consumer;)V
-PLcom/android/server/backup/FullBackupJob;-><init>()V
-PLcom/android/server/backup/FullBackupJob;->finishBackupPass(I)V
-PLcom/android/server/backup/FullBackupJob;->onStartJob(Landroid/app/job/JobParameters;)Z
+HPLcom/android/server/backup/DataChangedJournal;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/backup/DataChangedJournal;->forEach(Ljava/util/function/Consumer;)V
+HPLcom/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/FileMetadata;-><init>()V
+PLcom/android/server/backup/FullBackupJob;-><clinit>()V
+HPLcom/android/server/backup/FullBackupJob;-><init>()V
+PLcom/android/server/backup/FullBackupJob;->cancel(ILandroid/content/Context;)V
+HPLcom/android/server/backup/FullBackupJob;->finishBackupPass(I)V
+HPLcom/android/server/backup/FullBackupJob;->getJobIdForUserId(I)I
+HPLcom/android/server/backup/FullBackupJob;->onStartJob(Landroid/app/job/JobParameters;)Z
 PLcom/android/server/backup/FullBackupJob;->onStopJob(Landroid/app/job/JobParameters;)Z
-PLcom/android/server/backup/FullBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/BackupManagerConstants;)V
+HPLcom/android/server/backup/FullBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/BackupManagerConstants;)V
+PLcom/android/server/backup/JobIdManager;->getJobIdForUserId(III)I
+PLcom/android/server/backup/KeyValueBackupJob;-><clinit>()V
 PLcom/android/server/backup/KeyValueBackupJob;-><init>()V
-HSPLcom/android/server/backup/KeyValueBackupJob;->cancel(ILandroid/content/Context;)V
-HSPLcom/android/server/backup/KeyValueBackupJob;->getJobIdForUserId(I)I
+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
 PLcom/android/server/backup/KeyValueBackupJob;->nextScheduled(I)J
 PLcom/android/server/backup/KeyValueBackupJob;->onStartJob(Landroid/app/job/JobParameters;)Z
-HSPLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/BackupManagerConstants;)V
-HSPLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;I)Ljava/util/List;
-PLcom/android/server/backup/PackageManagerBackupAgent;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/backup/PackageManagerBackupAgent;->parseStateFile(Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/backup/PackageManagerBackupAgent;->readSignatureHashArray(Ljava/io/DataInputStream;)Ljava/util/ArrayList;
-PLcom/android/server/backup/PackageManagerBackupAgent;->writeStateFile(Ljava/util/List;Landroid/content/ComponentName;JLjava/util/ArrayList;Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/backup/ProcessedPackagesJournal;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-PLcom/android/server/backup/ProcessedPackagesJournal;->addPackage(Ljava/lang/String;)V
+HPLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;JLcom/android/server/backup/BackupManagerConstants;)V
+HPLcom/android/server/backup/KeyValueBackupJob;->schedule(ILandroid/content/Context;Lcom/android/server/backup/BackupManagerConstants;)V
+PLcom/android/server/backup/PackageManagerBackupAgent$AncestralVersion1RestoreDataConsumer;-><init>(Lcom/android/server/backup/PackageManagerBackupAgent;)V
+PLcom/android/server/backup/PackageManagerBackupAgent$AncestralVersion1RestoreDataConsumer;-><init>(Lcom/android/server/backup/PackageManagerBackupAgent;Lcom/android/server/backup/PackageManagerBackupAgent$1;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent$AncestralVersion1RestoreDataConsumer;->consumeRestoreData(Landroid/app/backup/BackupDataInput;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent$Metadata;-><init>(Lcom/android/server/backup/PackageManagerBackupAgent;JLjava/util/ArrayList;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;-><init>(Landroid/content/pm/PackageManager;I)V
+PLcom/android/server/backup/PackageManagerBackupAgent;-><init>(Landroid/content/pm/PackageManager;Ljava/util/List;I)V
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$1002(Lcom/android/server/backup/PackageManagerBackupAgent;Ljava/util/HashMap;)Ljava/util/HashMap;
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$202(Lcom/android/server/backup/PackageManagerBackupAgent;I)I
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$302(Lcom/android/server/backup/PackageManagerBackupAgent;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$402(Lcom/android/server/backup/PackageManagerBackupAgent;Z)Z
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$502(Lcom/android/server/backup/PackageManagerBackupAgent;Landroid/content/ComponentName;)Landroid/content/ComponentName;
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$602(Lcom/android/server/backup/PackageManagerBackupAgent;J)J
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$702(Lcom/android/server/backup/PackageManagerBackupAgent;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$802(Lcom/android/server/backup/PackageManagerBackupAgent;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/backup/PackageManagerBackupAgent;->access$900(Ljava/io/DataInputStream;)Ljava/util/ArrayList;
+HPLcom/android/server/backup/PackageManagerBackupAgent;->evaluateStorablePackages()V
+PLcom/android/server/backup/PackageManagerBackupAgent;->getAncestralRecordVersionValue(Landroid/app/backup/BackupDataInput;)I
+HPLcom/android/server/backup/PackageManagerBackupAgent;->getPreferredHomeComponent()Landroid/content/ComponentName;
+PLcom/android/server/backup/PackageManagerBackupAgent;->getRestoreDataConsumer(I)Lcom/android/server/backup/PackageManagerBackupAgent$RestoreDataConsumer;
+PLcom/android/server/backup/PackageManagerBackupAgent;->getRestoredMetadata(Ljava/lang/String;)Lcom/android/server/backup/PackageManagerBackupAgent$Metadata;
+HPLcom/android/server/backup/PackageManagerBackupAgent;->getStorableApplications(Landroid/content/pm/PackageManager;I)Ljava/util/List;
+PLcom/android/server/backup/PackageManagerBackupAgent;->hasMetadata()Z
+PLcom/android/server/backup/PackageManagerBackupAgent;->init(Landroid/content/pm/PackageManager;Ljava/util/List;I)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->onBackup(Landroid/os/ParcelFileDescriptor;Landroid/app/backup/BackupDataOutput;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/PackageManagerBackupAgent;->onRestore(Landroid/app/backup/BackupDataInput;ILandroid/os/ParcelFileDescriptor;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->parseStateFile(Landroid/os/ParcelFileDescriptor;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->readSignatureHashArray(Ljava/io/DataInputStream;)Ljava/util/ArrayList;
+HPLcom/android/server/backup/PackageManagerBackupAgent;->writeEntity(Landroid/app/backup/BackupDataOutput;Ljava/lang/String;[B)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->writeSignatureHashArray(Ljava/io/DataOutputStream;Ljava/util/ArrayList;)V
+HPLcom/android/server/backup/PackageManagerBackupAgent;->writeStateFile(Ljava/util/List;Landroid/content/ComponentName;JLjava/util/ArrayList;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/PeopleBackupHelper;-><clinit>()V
+PLcom/android/server/backup/PeopleBackupHelper;-><init>(I)V
+PLcom/android/server/backup/PeopleBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
+PLcom/android/server/backup/ProcessedPackagesJournal;-><init>(Ljava/io/File;)V
+HPLcom/android/server/backup/ProcessedPackagesJournal;->addPackage(Ljava/lang/String;)V
 PLcom/android/server/backup/ProcessedPackagesJournal;->getPackagesCopy()Ljava/util/Set;
 PLcom/android/server/backup/ProcessedPackagesJournal;->hasBeenProcessed(Ljava/lang/String;)Z
-HSPLcom/android/server/backup/ProcessedPackagesJournal;->init()V
-HSPLcom/android/server/backup/ProcessedPackagesJournal;->loadFromDisk()V
+PLcom/android/server/backup/ProcessedPackagesJournal;->init()V
+HPLcom/android/server/backup/ProcessedPackagesJournal;->loadFromDisk()V
 PLcom/android/server/backup/ProcessedPackagesJournal;->reset()V
-HSPLcom/android/server/backup/Trampoline;-><init>(Landroid/content/Context;)V
-PLcom/android/server/backup/Trampoline;->agentConnectedForUser(ILjava/lang/String;Landroid/os/IBinder;)V
-PLcom/android/server/backup/Trampoline;->backupNowForUser(I)V
-PLcom/android/server/backup/Trampoline;->beginFullBackup(ILcom/android/server/backup/FullBackupJob;)Z
-PLcom/android/server/backup/Trampoline;->binderGetCallingUid()I
-HSPLcom/android/server/backup/Trampoline;->binderGetCallingUserId()I
-HSPLcom/android/server/backup/Trampoline;->createBackupManagerService()Lcom/android/server/backup/BackupManagerService;
-HSPLcom/android/server/backup/Trampoline;->dataChanged(Ljava/lang/String;)V
-HSPLcom/android/server/backup/Trampoline;->dataChangedForUser(ILjava/lang/String;)V
-PLcom/android/server/backup/Trampoline;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/backup/Trampoline;->enforcePermissionsOnUser(I)V
-PLcom/android/server/backup/Trampoline;->getActivatedFileForNonSystemUser(I)Ljava/io/File;
-PLcom/android/server/backup/Trampoline;->getCurrentTransport()Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->getCurrentTransportForUser(I)Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->getDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/backup/Trampoline;->getDataManagementIntentForUser(ILjava/lang/String;)Landroid/content/Intent;
-PLcom/android/server/backup/Trampoline;->getRememberActivatedFileForNonSystemUser(I)Ljava/io/File;
-HSPLcom/android/server/backup/Trampoline;->getSuppressFileForSystemUser()Ljava/io/File;
-PLcom/android/server/backup/Trampoline;->getUserManager()Landroid/os/UserManager;
-HSPLcom/android/server/backup/Trampoline;->initializeService()V
-PLcom/android/server/backup/Trampoline;->isAppEligibleForBackupForUser(ILjava/lang/String;)Z
-HSPLcom/android/server/backup/Trampoline;->isBackupDisabled()Z
-PLcom/android/server/backup/Trampoline;->isBackupEnabled()Z
-PLcom/android/server/backup/Trampoline;->isBackupEnabledForUser(I)Z
-PLcom/android/server/backup/Trampoline;->isBackupServiceActive(I)Z
-HSPLcom/android/server/backup/Trampoline;->lambda$initializeService$0$Trampoline()V
-PLcom/android/server/backup/Trampoline;->lambda$stopUser$2$Trampoline(I)V
-HSPLcom/android/server/backup/Trampoline;->lambda$unlockUser$1$Trampoline(I)V
-PLcom/android/server/backup/Trampoline;->listAllTransports()[Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->listAllTransportsForUser(I)[Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->opCompleteForUser(IIJ)V
-HSPLcom/android/server/backup/Trampoline;->postToHandler(Ljava/lang/Runnable;)V
-PLcom/android/server/backup/Trampoline;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
-PLcom/android/server/backup/Trampoline;->requestBackupForUser(I[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
-PLcom/android/server/backup/Trampoline;->restoreAtInstallForUser(ILjava/lang/String;I)V
-PLcom/android/server/backup/Trampoline;->selectBackupTransport(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->selectBackupTransportForUser(ILjava/lang/String;)Ljava/lang/String;
-PLcom/android/server/backup/Trampoline;->setBackupServiceActive(IZ)V
-HSPLcom/android/server/backup/Trampoline;->startServiceForUser(I)V
-PLcom/android/server/backup/Trampoline;->stopUser(I)V
-HSPLcom/android/server/backup/Trampoline;->unlockUser(I)V
-PLcom/android/server/backup/Trampoline;->updateTransportAttributesForUser(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
-HSPLcom/android/server/backup/TransportManager;-><init>(ILandroid/content/Context;Ljava/util/Set;Ljava/lang/String;)V
-PLcom/android/server/backup/TransportManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
+PLcom/android/server/backup/SystemBackupAgent;-><clinit>()V
+PLcom/android/server/backup/SystemBackupAgent;-><init>()V
+PLcom/android/server/backup/SystemBackupAgent;->addHelper(Ljava/lang/String;Landroid/app/backup/BackupHelper;)V
+PLcom/android/server/backup/SystemBackupAgent;->onCreate(Landroid/os/UserHandle;)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$1;)V
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$000(Lcom/android/server/backup/TransportManager$TransportDescription;)Ljava/lang/String;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$002(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$100(Lcom/android/server/backup/TransportManager$TransportDescription;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager$TransportDescription;->access$200(Lcom/android/server/backup/TransportManager$TransportDescription;)Landroid/content/Intent;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$202(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/backup/TransportManager$TransportDescription;->access$300(Lcom/android/server/backup/TransportManager$TransportDescription;)Ljava/lang/String;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$302(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/backup/TransportManager$TransportDescription;->access$400(Lcom/android/server/backup/TransportManager$TransportDescription;)Landroid/content/Intent;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$402(Lcom/android/server/backup/TransportManager$TransportDescription;Landroid/content/Intent;)Landroid/content/Intent;
+HPLcom/android/server/backup/TransportManager$TransportDescription;->access$502(Lcom/android/server/backup/TransportManager$TransportDescription;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+PLcom/android/server/backup/TransportManager;-><init>(ILandroid/content/Context;Ljava/util/Set;Ljava/lang/String;)V
+PLcom/android/server/backup/TransportManager;->checkCanUseTransport()V
+HPLcom/android/server/backup/TransportManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
 PLcom/android/server/backup/TransportManager;->dumpTransportClients(Ljava/io/PrintWriter;)V
+PLcom/android/server/backup/TransportManager;->fromPackageFilter(Ljava/lang/String;)Ljava/util/function/Predicate;
 PLcom/android/server/backup/TransportManager;->getCurrentTransportClient(Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
 PLcom/android/server/backup/TransportManager;->getCurrentTransportClientOrThrow(Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
 PLcom/android/server/backup/TransportManager;->getCurrentTransportName()Ljava/lang/String;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportComponentLocked(Ljava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionLocked(Ljava/lang/String;)Lcom/android/server/backup/TransportManager$TransportDescription;
 PLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionOrThrowLocked(Landroid/content/ComponentName;)Lcom/android/server/backup/TransportManager$TransportDescription;
-PLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionOrThrowLocked(Ljava/lang/String;)Lcom/android/server/backup/TransportManager$TransportDescription;
-PLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportDescriptionOrThrowLocked(Ljava/lang/String;)Lcom/android/server/backup/TransportManager$TransportDescription;
+HPLcom/android/server/backup/TransportManager;->getRegisteredTransportEntryLocked(Ljava/lang/String;)Ljava/util/Map$Entry;
 PLcom/android/server/backup/TransportManager;->getRegisteredTransportNames()[Ljava/lang/String;
 PLcom/android/server/backup/TransportManager;->getTransportClient(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
-PLcom/android/server/backup/TransportManager;->getTransportClientOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
+HPLcom/android/server/backup/TransportManager;->getTransportClientOrThrow(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
 PLcom/android/server/backup/TransportManager;->getTransportConfigurationIntent(Ljava/lang/String;)Landroid/content/Intent;
 PLcom/android/server/backup/TransportManager;->getTransportCurrentDestinationString(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/backup/TransportManager;->getTransportDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent;
 PLcom/android/server/backup/TransportManager;->getTransportDirName(Landroid/content/ComponentName;)Ljava/lang/String;
-PLcom/android/server/backup/TransportManager;->getTransportDirName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/backup/TransportManager;->getTransportDirName(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/backup/TransportManager;->getTransportWhitelist()Ljava/util/Set;
-PLcom/android/server/backup/TransportManager;->isTransportRegistered(Ljava/lang/String;)Z
+HPLcom/android/server/backup/TransportManager;->isTransportRegistered(Ljava/lang/String;)Z
 PLcom/android/server/backup/TransportManager;->isTransportTrusted(Landroid/content/ComponentName;)Z
+HPLcom/android/server/backup/TransportManager;->lambda$fromPackageFilter$3(Ljava/lang/String;Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;->lambda$onPackageAdded$1(Landroid/content/ComponentName;)Z
+PLcom/android/server/backup/TransportManager;->lambda$registerTransports$2(Landroid/content/ComponentName;)Z
 PLcom/android/server/backup/TransportManager;->onPackageAdded(Ljava/lang/String;)V
-PLcom/android/server/backup/TransportManager;->onPackageChanged(Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V
+HPLcom/android/server/backup/TransportManager;->onPackageChanged(Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/backup/TransportManager;->onPackageRemoved(Ljava/lang/String;)V
 PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;)I
 PLcom/android/server/backup/TransportManager;->registerTransport(Landroid/content/ComponentName;Lcom/android/internal/backup/IBackupTransport;)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;->registerTransportsFromPackage(Ljava/lang/String;Ljava/util/function/Predicate;)V
-HSPLcom/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
-HSPLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(Ljava/io/File;)Z
-HSPLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->writeBackupEnableState(Ljava/io/File;Z)V
-HSPLcom/android/server/backup/UserBackupManagerService$1;->run()V
-PLcom/android/server/backup/UserBackupManagerService$2;->lambda$onReceive$0$UserBackupManagerService$2(Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/backup/TransportManager;->registerTransportsForIntent(Landroid/content/Intent;Ljava/util/function/Predicate;)V
+HPLcom/android/server/backup/TransportManager;->registerTransportsFromPackage(Ljava/lang/String;Ljava/util/function/Predicate;)V
+PLcom/android/server/backup/TransportManager;->setOnTransportRegisteredListener(Lcom/android/server/backup/transport/OnTransportRegisteredListener;)V
+HPLcom/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/UsageStatsBackupHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/backup/UsageStatsBackupHelper;->getBackupPayload(Ljava/lang/String;)[B
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(I)Z
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->readBackupEnableState(Ljava/io/File;)Z
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->writeBackupEnableState(IZ)V
+PLcom/android/server/backup/UserBackupManagerFilePersistedSettings;->writeBackupEnableState(Ljava/io/File;Z)V
+PLcom/android/server/backup/UserBackupManagerFiles;->getBaseDir(I)Ljava/io/File;
+HPLcom/android/server/backup/UserBackupManagerFiles;->getBaseStateDir(I)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerFiles;->getDataDir(I)Ljava/io/File;
+HPLcom/android/server/backup/UserBackupManagerFiles;->getStateDirInSystemDir(I)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerFiles;->getStateFileInSystemDir(Ljava/lang/String;I)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerService$1;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+HPLcom/android/server/backup/UserBackupManagerService$1;->run()V
+PLcom/android/server/backup/UserBackupManagerService$2;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+HPLcom/android/server/backup/UserBackupManagerService$2;->lambda$onReceive$0$UserBackupManagerService$2(Ljava/lang/String;[Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService$2;->lambda$onReceive$1$UserBackupManagerService$2(Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService$2;->lambda$onReceive$2$UserBackupManagerService$2(Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/backup/UserBackupManagerService$4;->run()V
-HSPLcom/android/server/backup/UserBackupManagerService;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/backup/UserBackupManagerService;-><init>(ILandroid/content/Context;Lcom/android/server/backup/Trampoline;Landroid/os/HandlerThread;Ljava/io/File;Ljava/io/File;Lcom/android/server/backup/TransportManager;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
-PLcom/android/server/backup/UserBackupManagerService;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->allAgentPackages()Ljava/util/List;
-PLcom/android/server/backup/UserBackupManagerService;->backupNow()V
-PLcom/android/server/backup/UserBackupManagerService;->beginFullBackup(Lcom/android/server/backup/FullBackupJob;)Z
-PLcom/android/server/backup/UserBackupManagerService;->bindToAgentSynchronous(Landroid/content/pm/ApplicationInfo;I)Landroid/app/IBackupAgent;
-HSPLcom/android/server/backup/UserBackupManagerService;->createAndInitializeService(ILandroid/content/Context;Lcom/android/server/backup/Trampoline;Ljava/util/Set;)Lcom/android/server/backup/UserBackupManagerService;
-HSPLcom/android/server/backup/UserBackupManagerService;->dataChanged(Ljava/lang/String;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->dataChangedImpl(Ljava/lang/String;Ljava/util/HashSet;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->dataChangedTargets(Ljava/lang/String;)Ljava/util/HashSet;
-PLcom/android/server/backup/UserBackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/backup/UserBackupManagerService$3;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService$3;->run()V
+HPLcom/android/server/backup/UserBackupManagerService$4;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/UserBackupManagerService$4;->run()V
+PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;-><init>(Landroid/os/PowerManager$WakeLock;)V
+HPLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->access$000(Lcom/android/server/backup/UserBackupManagerService$BackupWakeLock;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->acquire()V
+PLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->quit()V
+HPLcom/android/server/backup/UserBackupManagerService$BackupWakeLock;->release()V
+PLcom/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
+HPLcom/android/server/backup/UserBackupManagerService;->access$100(Lcom/android/server/backup/UserBackupManagerService;)Ljava/lang/Object;
+PLcom/android/server/backup/UserBackupManagerService;->access$1000(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->access$1100(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService;->access$1200(Lcom/android/server/backup/UserBackupManagerService;)Lcom/android/server/backup/TransportManager;
+PLcom/android/server/backup/UserBackupManagerService;->access$1300(Lcom/android/server/backup/UserBackupManagerService;)Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
+HPLcom/android/server/backup/UserBackupManagerService;->access$1400(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/util/HashSet;)V
+HPLcom/android/server/backup/UserBackupManagerService;->access$200(Lcom/android/server/backup/UserBackupManagerService;)Ljava/util/ArrayList;
+HPLcom/android/server/backup/UserBackupManagerService;->access$300(Lcom/android/server/backup/UserBackupManagerService;)Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerService;->access$400(Lcom/android/server/backup/UserBackupManagerService;)Lcom/android/server/backup/internal/BackupHandler;
+PLcom/android/server/backup/UserBackupManagerService;->access$500(Lcom/android/server/backup/UserBackupManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/backup/UserBackupManagerService;->access$600(Lcom/android/server/backup/UserBackupManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/backup/UserBackupManagerService;->access$700(Lcom/android/server/backup/UserBackupManagerService;[Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->access$800(Lcom/android/server/backup/UserBackupManagerService;)I
+PLcom/android/server/backup/UserBackupManagerService;->access$900(Lcom/android/server/backup/UserBackupManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLocked([Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->addPackageParticipantsLockedInner(Ljava/lang/String;Ljava/util/List;)V
+HPLcom/android/server/backup/UserBackupManagerService;->agentConnected(Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/backup/UserBackupManagerService;->agentDisconnected(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->allAgentPackages()Ljava/util/List;
+HPLcom/android/server/backup/UserBackupManagerService;->backupNow()V
+HPLcom/android/server/backup/UserBackupManagerService;->beginFullBackup(Lcom/android/server/backup/FullBackupJob;)Z
+HPLcom/android/server/backup/UserBackupManagerService;->bindToAgentSynchronous(Landroid/content/pm/ApplicationInfo;I)Landroid/app/IBackupAgent;
+PLcom/android/server/backup/UserBackupManagerService;->clearApplicationDataBeforeRestore(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->clearApplicationDataSynchronous(Ljava/lang/String;ZZ)V
+PLcom/android/server/backup/UserBackupManagerService;->clearPendingInits()V
+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;
+HPLcom/android/server/backup/UserBackupManagerService;->dataChanged(Ljava/lang/String;)V
+HPLcom/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;
+HPLcom/android/server/backup/UserBackupManagerService;->dequeueFullBackupLocked(Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
-PLcom/android/server/backup/UserBackupManagerService;->enqueueFullBackup(Ljava/lang/String;J)V
-PLcom/android/server/backup/UserBackupManagerService;->fullBackupAllowable(Ljava/lang/String;)Z
-PLcom/android/server/backup/UserBackupManagerService;->generateRandomIntegerToken()I
-PLcom/android/server/backup/UserBackupManagerService;->getActivityManager()Landroid/app/IActivityManager;
-HSPLcom/android/server/backup/UserBackupManagerService;->getAgentTimeoutParameters()Lcom/android/server/backup/BackupAgentTimeoutParameters;
+HPLcom/android/server/backup/UserBackupManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+PLcom/android/server/backup/UserBackupManagerService;->endFullBackup()V
+HPLcom/android/server/backup/UserBackupManagerService;->enqueueFullBackup(Ljava/lang/String;J)V
+HPLcom/android/server/backup/UserBackupManagerService;->fullBackupAllowable(Ljava/lang/String;)Z
+HPLcom/android/server/backup/UserBackupManagerService;->generateRandomIntegerToken()I
+HPLcom/android/server/backup/UserBackupManagerService;->getActivityManager()Landroid/app/IActivityManager;
+PLcom/android/server/backup/UserBackupManagerService;->getAgentTimeoutParameters()Lcom/android/server/backup/BackupAgentTimeoutParameters;
+PLcom/android/server/backup/UserBackupManagerService;->getAlarmManager()Landroid/app/AlarmManager;
 PLcom/android/server/backup/UserBackupManagerService;->getAvailableRestoreToken(Ljava/lang/String;)J
 PLcom/android/server/backup/UserBackupManagerService;->getBackupHandler()Landroid/os/Handler;
 PLcom/android/server/backup/UserBackupManagerService;->getBackupManagerBinder()Landroid/app/backup/IBackupManager;
 PLcom/android/server/backup/UserBackupManagerService;->getBaseStateDir()Ljava/io/File;
+PLcom/android/server/backup/UserBackupManagerService;->getClearDataLock()Ljava/lang/Object;
 PLcom/android/server/backup/UserBackupManagerService;->getConstants()Lcom/android/server/backup/BackupManagerConstants;
-HSPLcom/android/server/backup/UserBackupManagerService;->getContext()Landroid/content/Context;
+PLcom/android/server/backup/UserBackupManagerService;->getContext()Landroid/content/Context;
 PLcom/android/server/backup/UserBackupManagerService;->getCurrentOpLock()Ljava/lang/Object;
 PLcom/android/server/backup/UserBackupManagerService;->getCurrentOperations()Landroid/util/SparseArray;
 PLcom/android/server/backup/UserBackupManagerService;->getCurrentToken()J
-PLcom/android/server/backup/UserBackupManagerService;->getCurrentTransport()Ljava/lang/String;
+HPLcom/android/server/backup/UserBackupManagerService;->getCurrentTransport()Ljava/lang/String;
 PLcom/android/server/backup/UserBackupManagerService;->getDataDir()Ljava/io/File;
 PLcom/android/server/backup/UserBackupManagerService;->getDataManagementIntent(Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/backup/UserBackupManagerService;->getExcludedRestoreKeys([Ljava/lang/String;)Ljava/util/Map;
 PLcom/android/server/backup/UserBackupManagerService;->getJournal()Lcom/android/server/backup/DataChangedJournal;
 PLcom/android/server/backup/UserBackupManagerService;->getMessageIdForOperationType(I)I
 PLcom/android/server/backup/UserBackupManagerService;->getPackageManager()Landroid/content/pm/PackageManager;
@@ -4911,1254 +10875,3079 @@
 PLcom/android/server/backup/UserBackupManagerService;->getPendingBackups()Ljava/util/HashMap;
 PLcom/android/server/backup/UserBackupManagerService;->getPendingInits()Landroid/util/ArraySet;
 PLcom/android/server/backup/UserBackupManagerService;->getPendingRestores()Ljava/util/Queue;
-PLcom/android/server/backup/UserBackupManagerService;->getQueueLock()Ljava/lang/Object;
-HSPLcom/android/server/backup/UserBackupManagerService;->getTransportManager()Lcom/android/server/backup/TransportManager;
-HSPLcom/android/server/backup/UserBackupManagerService;->getUserId()I
-PLcom/android/server/backup/UserBackupManagerService;->getWakelock()Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/backup/UserBackupManagerService;->getQueueLock()Ljava/lang/Object;
+PLcom/android/server/backup/UserBackupManagerService;->getRunInitIntent()Landroid/app/PendingIntent;
+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
+HPLcom/android/server/backup/UserBackupManagerService;->getWakelock()Lcom/android/server/backup/UserBackupManagerService$BackupWakeLock;
 PLcom/android/server/backup/UserBackupManagerService;->handleCancel(IZ)V
-HSPLcom/android/server/backup/UserBackupManagerService;->initPackageTracking()V
-HSPLcom/android/server/backup/UserBackupManagerService;->initializeBackupEnableState()V
-PLcom/android/server/backup/UserBackupManagerService;->isAppEligibleForBackup(Ljava/lang/String;)Z
-PLcom/android/server/backup/UserBackupManagerService;->isBackupEnabled()Z
-PLcom/android/server/backup/UserBackupManagerService;->isBackupOperationInProgress()Z
+PLcom/android/server/backup/UserBackupManagerService;->hasBackupPassword()Z
+HPLcom/android/server/backup/UserBackupManagerService;->initPackageTracking()V
+PLcom/android/server/backup/UserBackupManagerService;->initializeBackupEnableState()V
+PLcom/android/server/backup/UserBackupManagerService;->initializeTransports([Ljava/lang/String;Landroid/app/backup/IBackupObserver;)V
+HPLcom/android/server/backup/UserBackupManagerService;->isAppEligibleForBackup(Ljava/lang/String;)Z
+HPLcom/android/server/backup/UserBackupManagerService;->isBackupEnabled()Z
+HPLcom/android/server/backup/UserBackupManagerService;->isBackupOperationInProgress()Z
 PLcom/android/server/backup/UserBackupManagerService;->isBackupRunning()Z
-PLcom/android/server/backup/UserBackupManagerService;->isEnabled()Z
+HPLcom/android/server/backup/UserBackupManagerService;->isEnabled()Z
 PLcom/android/server/backup/UserBackupManagerService;->isRestoreInProgress()Z
-PLcom/android/server/backup/UserBackupManagerService;->isSetupComplete()Z
-PLcom/android/server/backup/UserBackupManagerService;->lambda$parseLeftoverJournals$0$UserBackupManagerService(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->isSetupComplete()Z
+PLcom/android/server/backup/UserBackupManagerService;->lambda$9cuIH_XloqtNByp_6hXeGaVars8(Lcom/android/server/backup/UserBackupManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupManagerService;->lambda$_gNqJq9Ygtc0ZVwYhCSDKCUKrKY(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/UserBackupManagerService;->lambda$initializeTransports$2$UserBackupManagerService(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->lambda$parseLeftoverJournals$0$UserBackupManagerService(Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService;->lambda$requestBackup$1$UserBackupManagerService(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService;->lambda$restoreAtInstall$6$UserBackupManagerService(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
 PLcom/android/server/backup/UserBackupManagerService;->listAllTransports()[Ljava/lang/String;
-PLcom/android/server/backup/UserBackupManagerService;->logBackupComplete(Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->makeMetadataAgent()Landroid/app/backup/BackupAgent;
+HPLcom/android/server/backup/UserBackupManagerService;->logBackupComplete(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->makeMetadataAgent()Landroid/app/backup/BackupAgent;
+PLcom/android/server/backup/UserBackupManagerService;->makeMetadataAgent(Ljava/util/List;)Lcom/android/server/backup/PackageManagerBackupAgent;
 PLcom/android/server/backup/UserBackupManagerService;->onTransportRegistered(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/backup/UserBackupManagerService;->opComplete(IJ)V
-PLcom/android/server/backup/UserBackupManagerService;->parseLeftoverJournals()V
-PLcom/android/server/backup/UserBackupManagerService;->prepareOperationTimeout(IJLcom/android/server/backup/BackupRestoreTask;I)V
-PLcom/android/server/backup/UserBackupManagerService;->putOperation(ILcom/android/server/backup/internal/Operation;)V
-HSPLcom/android/server/backup/UserBackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
-PLcom/android/server/backup/UserBackupManagerService;->removeOperation(I)V
-PLcom/android/server/backup/UserBackupManagerService;->removePackageParticipantsLocked([Ljava/lang/String;I)V
-PLcom/android/server/backup/UserBackupManagerService;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
-PLcom/android/server/backup/UserBackupManagerService;->resetBackupState(Ljava/io/File;)V
-PLcom/android/server/backup/UserBackupManagerService;->restoreAtInstall(Ljava/lang/String;I)V
-PLcom/android/server/backup/UserBackupManagerService;->scheduleNextFullBackupJob(J)V
-HSPLcom/android/server/backup/UserBackupManagerService;->setBackupEnabled(Z)V
+HPLcom/android/server/backup/UserBackupManagerService;->opComplete(IJ)V
+HPLcom/android/server/backup/UserBackupManagerService;->parseLeftoverJournals()V
+HPLcom/android/server/backup/UserBackupManagerService;->prepareOperationTimeout(IJLcom/android/server/backup/BackupRestoreTask;I)V
+HPLcom/android/server/backup/UserBackupManagerService;->putOperation(ILcom/android/server/backup/internal/Operation;)V
+HPLcom/android/server/backup/UserBackupManagerService;->readFullBackupSchedule()Ljava/util/ArrayList;
+PLcom/android/server/backup/UserBackupManagerService;->recordInitPending(ZLjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->removeOperation(I)V
+PLcom/android/server/backup/UserBackupManagerService;->removePackageFromSetLocked(Ljava/util/HashSet;Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->removePackageParticipantsLocked([Ljava/lang/String;I)V
+HPLcom/android/server/backup/UserBackupManagerService;->requestBackup([Ljava/lang/String;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;I)I
+HPLcom/android/server/backup/UserBackupManagerService;->resetBackupState(Ljava/io/File;)V
+HPLcom/android/server/backup/UserBackupManagerService;->restoreAtInstall(Ljava/lang/String;I)V
+HPLcom/android/server/backup/UserBackupManagerService;->scheduleNextFullBackupJob(J)V
+PLcom/android/server/backup/UserBackupManagerService;->setBackupEnabled(Z)V
 PLcom/android/server/backup/UserBackupManagerService;->setBackupRunning(Z)V
+PLcom/android/server/backup/UserBackupManagerService;->setClearingData(Z)V
+PLcom/android/server/backup/UserBackupManagerService;->setCurrentToken(J)V
 PLcom/android/server/backup/UserBackupManagerService;->setJournal(Lcom/android/server/backup/DataChangedJournal;)V
 PLcom/android/server/backup/UserBackupManagerService;->setLastBackupPass(J)V
 PLcom/android/server/backup/UserBackupManagerService;->setRestoreInProgress(Z)V
-PLcom/android/server/backup/UserBackupManagerService;->setRunningFullBackupTask(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;)V
-PLcom/android/server/backup/UserBackupManagerService;->setWorkSource(Landroid/os/WorkSource;)V
-PLcom/android/server/backup/UserBackupManagerService;->tearDownAgentAndKill(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/backup/UserBackupManagerService;->setRunningFullBackupTask(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;)V
+HPLcom/android/server/backup/UserBackupManagerService;->setWorkSource(Landroid/os/WorkSource;)V
+HPLcom/android/server/backup/UserBackupManagerService;->tearDownAgentAndKill(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/backup/UserBackupManagerService;->tearDownService()V
 PLcom/android/server/backup/UserBackupManagerService;->unbindAgent(Landroid/content/pm/ApplicationInfo;)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
+HPLcom/android/server/backup/UserBackupManagerService;->updateTransportAttributes(ILandroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/CharSequence;)V
+HPLcom/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;->waitUntilOperationComplete(I)Z
-PLcom/android/server/backup/UserBackupManagerService;->writeRestoreTokens()V
-HSPLcom/android/server/backup/UserBackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
+HPLcom/android/server/backup/UserBackupManagerService;->writeFullBackupScheduleAsync()V
+HPLcom/android/server/backup/UserBackupManagerService;->writeRestoreTokens()V
+PLcom/android/server/backup/UserBackupManagerService;->writeToJournalLocked(Ljava/lang/String;)V
+PLcom/android/server/backup/UserBackupPreferences;-><init>(Landroid/content/Context;Ljava/io/File;)V
+PLcom/android/server/backup/UserBackupPreferences;->getExcludedRestoreKeysForPackages([Ljava/lang/String;)Ljava/util/Map;
+PLcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$SinglePackageBackupPreflight$hWbC3_rWMPrteAdbbM5aSW2SKD0;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;Landroid/app/IBackupAgent;J)V
 PLcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$SinglePackageBackupPreflight$hWbC3_rWMPrteAdbbM5aSW2SKD0;->call(Ljava/lang/Object;)V
-PLcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$ymLoQLrsEpmGaMrcudrdAgsU1Zk;->onFinished(Ljava/lang/String;)V
-PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->backupManifest(Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Z)V
+HPLcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$ymLoQLrsEpmGaMrcudrdAgsU1Zk;-><init>(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportClient;)V
+HPLcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$ymLoQLrsEpmGaMrcudrdAgsU1Zk;->onFinished(Ljava/lang/String;)V
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;-><init>(Landroid/app/backup/FullBackupDataOutput;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->backupManifest(Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->backupManifest(Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/io/File;Z)V
 PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->backupWidget(Landroid/content/pm/PackageInfo;Ljava/io/File;Ljava/io/File;[B)V
-PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->getManifestBytes(Landroid/content/pm/PackageInfo;Z)[B
+HPLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->getManifestBytes(Landroid/content/pm/PackageInfo;Z)[B
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->getMetadataBytes(Ljava/lang/String;)[B
+PLcom/android/server/backup/fullbackup/AppMetadataBackupWriter;->writeWidgetData(Ljava/io/DataOutputStream;[B)V
 PLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;-><init>(Lcom/android/server/backup/fullbackup/FullBackupEngine;Lcom/android/server/backup/UserBackupManagerService;Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;Landroid/os/ParcelFileDescriptor;IZ)V
-PLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;->run()V
-PLcom/android/server/backup/fullbackup/FullBackupEngine;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/io/OutputStream;Lcom/android/server/backup/fullbackup/FullBackupPreflight;Landroid/content/pm/PackageInfo;ZLcom/android/server/backup/BackupRestoreTask;JII)V
-PLcom/android/server/backup/fullbackup/FullBackupEngine;->backupOnePackage()I
+HPLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;->run()V
+PLcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;->shouldWriteApk(Landroid/content/pm/ApplicationInfo;ZZ)Z
+HPLcom/android/server/backup/fullbackup/FullBackupEngine;-><init>(Lcom/android/server/backup/UserBackupManagerService;Ljava/io/OutputStream;Lcom/android/server/backup/fullbackup/FullBackupPreflight;Landroid/content/pm/PackageInfo;ZLcom/android/server/backup/BackupRestoreTask;JII)V
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->access$000(Lcom/android/server/backup/fullbackup/FullBackupEngine;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->access$100(Lcom/android/server/backup/fullbackup/FullBackupEngine;)I
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->access$200(Lcom/android/server/backup/fullbackup/FullBackupEngine;)Lcom/android/server/backup/BackupAgentTimeoutParameters;
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->access$300(Lcom/android/server/backup/fullbackup/FullBackupEngine;)Lcom/android/server/backup/BackupRestoreTask;
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->access$400(Lcom/android/server/backup/fullbackup/FullBackupEngine;)J
+HPLcom/android/server/backup/fullbackup/FullBackupEngine;->backupOnePackage()I
+HPLcom/android/server/backup/fullbackup/FullBackupEngine;->initializeAgent()Z
 PLcom/android/server/backup/fullbackup/FullBackupEngine;->preflightCheck()I
-HSPLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Lcom/android/server/backup/fullbackup/FullBackupEntry;)I
-HSPLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/backup/fullbackup/FullBackupEngine;->tearDown()V
+HPLcom/android/server/backup/fullbackup/FullBackupEntry;-><init>(Ljava/lang/String;J)V
+PLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Lcom/android/server/backup/fullbackup/FullBackupEntry;)I
+PLcom/android/server/backup/fullbackup/FullBackupEntry;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/backup/fullbackup/FullBackupTask;-><init>(Landroid/app/backup/IFullBackupRestoreObserver;)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Lcom/android/server/backup/transport/TransportClient;JII)V
 PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->getExpectedSizeOrErrorCode()J
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->handleCancel(Z)V
 PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->lambda$preflightFullBackup$0$PerformFullTransportBackupTask$SinglePackageBackupPreflight(Landroid/app/IBackupAgent;JLandroid/app/backup/IBackupCallback;)V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->operationComplete(J)V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->preflightFullBackup(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)I
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Landroid/os/ParcelFileDescriptor;Landroid/content/pm/PackageInfo;Lcom/android/server/backup/transport/TransportClient;JII)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->operationComplete(J)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;->preflightFullBackup(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)I
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;-><init>(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Landroid/os/ParcelFileDescriptor;Landroid/content/pm/PackageInfo;Lcom/android/server/backup/transport/TransportClient;JII)V
 PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->getBackupResultBlocking()I
 PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->getPreflightResultBlocking()J
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->handleCancel(Z)V
 PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->operationComplete(J)V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->registerTask()V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->run()V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->unregisterTask()V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IFullBackupRestoreObserver;[Ljava/lang/String;ZLcom/android/server/backup/FullBackupJob;Ljava/util/concurrent/CountDownLatch;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;Z)V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->cleanUpPipes([Landroid/os/ParcelFileDescriptor;)V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->newWithCurrentTransport(Lcom/android/server/backup/UserBackupManagerService;Landroid/app/backup/IFullBackupRestoreObserver;[Ljava/lang/String;ZLcom/android/server/backup/FullBackupJob;Ljava/util/concurrent/CountDownLatch;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;ZLjava/lang/String;)Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->registerTask()V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->run()V
-PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->unregisterTask()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->registerTask()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->run()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;->unregisterTask()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IFullBackupRestoreObserver;[Ljava/lang/String;ZLcom/android/server/backup/FullBackupJob;Ljava/util/concurrent/CountDownLatch;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;Z)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->access$000(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;)Lcom/android/server/backup/BackupAgentTimeoutParameters;
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->access$100(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->access$200(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;)Landroid/app/backup/IBackupManagerMonitor;
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->access$202(Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;Landroid/app/backup/IBackupManagerMonitor;)Landroid/app/backup/IBackupManagerMonitor;
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->cleanUpPipes([Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->handleCancel(Z)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->lambda$newWithCurrentTransport$0(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->newWithCurrentTransport(Lcom/android/server/backup/UserBackupManagerService;Landroid/app/backup/IFullBackupRestoreObserver;[Ljava/lang/String;ZLcom/android/server/backup/FullBackupJob;Ljava/util/concurrent/CountDownLatch;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;ZLjava/lang/String;)Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->registerTask()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->run()V
+HPLcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;->unregisterTask()V
+PLcom/android/server/backup/internal/-$$Lambda$BackupHandler$TJcRazGYTaUxjeiX6mPLlipfZUI;-><init>(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportClient;)V
 PLcom/android/server/backup/internal/-$$Lambda$BackupHandler$TJcRazGYTaUxjeiX6mPLlipfZUI;->onFinished(Ljava/lang/String;)V
-HSPLcom/android/server/backup/internal/BackupHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/backup/internal/BackupHandler;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/os/HandlerThread;)V
+HPLcom/android/server/backup/internal/BackupHandler;->dispatchMessage(Landroid/os/Message;)V
+HPLcom/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/BackupHandler;->lambda$handleMessage$0(Lcom/android/server/backup/TransportManager;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
+PLcom/android/server/backup/internal/BackupHandler;->stop()V
+PLcom/android/server/backup/internal/ClearDataObserver;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/internal/ClearDataObserver;->onRemoveCompleted(Ljava/lang/String;Z)V
+HPLcom/android/server/backup/internal/Operation;-><init>(ILcom/android/server/backup/BackupRestoreTask;I)V
+PLcom/android/server/backup/internal/PerformInitializeTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/TransportManager;[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/io/File;)V
+PLcom/android/server/backup/internal/PerformInitializeTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;[Ljava/lang/String;Landroid/app/backup/IBackupObserver;Lcom/android/server/backup/internal/OnTaskFinishedListener;)V
+PLcom/android/server/backup/internal/PerformInitializeTask;->notifyFinished(I)V
+PLcom/android/server/backup/internal/PerformInitializeTask;->notifyResult(Ljava/lang/String;I)V
+PLcom/android/server/backup/internal/PerformInitializeTask;->run()V
+PLcom/android/server/backup/internal/RunBackupReceiver;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
 PLcom/android/server/backup/internal/RunBackupReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/backup/internal/RunInitializeReceiver;-><init>(Lcom/android/server/backup/UserBackupManagerService;)V
+PLcom/android/server/backup/internal/RunInitializeReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/backup/internal/SetupObserver;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/os/Handler;)V
+HPLcom/android/server/backup/keyvalue/-$$Lambda$KeyValueBackupTask$NN2H32cNizGxrUxqHgqPqGldNsA;-><init>(Lcom/android/server/backup/keyvalue/KeyValueBackupTask;Landroid/app/IBackupAgent;JI)V
 PLcom/android/server/backup/keyvalue/-$$Lambda$KeyValueBackupTask$NN2H32cNizGxrUxqHgqPqGldNsA;->call(Ljava/lang/Object;)V
+PLcom/android/server/backup/keyvalue/AgentException;-><init>(Z)V
 PLcom/android/server/backup/keyvalue/AgentException;->isTransitory()Z
-PLcom/android/server/backup/keyvalue/BackupRequest;->toString()Ljava/lang/String;
+PLcom/android/server/backup/keyvalue/AgentException;->permanent()Lcom/android/server/backup/keyvalue/AgentException;
+PLcom/android/server/backup/keyvalue/AgentException;->transitory()Lcom/android/server/backup/keyvalue/AgentException;
+PLcom/android/server/backup/keyvalue/BackupException;-><init>()V
+PLcom/android/server/backup/keyvalue/BackupException;-><init>(Ljava/lang/Exception;)V
+HPLcom/android/server/backup/keyvalue/BackupRequest;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/backup/keyvalue/BackupRequest;->toString()Ljava/lang/String;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;-><init>(Lcom/android/server/backup/UserBackupManagerService;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->getMonitor()Landroid/app/backup/IBackupManagerMonitor;
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->getObserver()Landroid/app/backup/IBackupObserver;
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->getPackageName(Landroid/content/pm/PackageInfo;)Ljava/lang/String;
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onAgentError(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onAgentFilesReady(Ljava/io/File;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onAgentResultError(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onAgentTimedOut(Landroid/content/pm/PackageInfo;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onBackupFinished(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onCallAgentDoBackupError(Ljava/lang/String;ZLjava/lang/Exception;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onEmptyData(Landroid/content/pm/PackageInfo;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onExtractAgentData(Ljava/lang/String;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onExtractAgentData(Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onExtractPmAgentDataError(Ljava/lang/Exception;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onInitializeTransport(Ljava/lang/String;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageBackupComplete(Ljava/lang/String;J)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onNewThread(Ljava/lang/String;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageBackupComplete(Ljava/lang/String;J)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageBackupNonIncrementalRequired(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageBackupTransportError(Ljava/lang/String;Ljava/lang/Exception;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageBackupTransportFailure(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageNotEligibleForBackup(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onPackageStopped(Ljava/lang/String;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onQueueReady(Ljava/util/List;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onQueueReady(Ljava/util/List;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onRemoteCallReturned(Lcom/android/server/backup/remote/RemoteResult;Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onRevertTask()V
-PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onStartFullBackup(Ljava/util/List;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onStartPackageBackup(Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onSkipBackup()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onStartFullBackup(Ljava/util/List;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onStartPackageBackup(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTaskFinished()V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTransportInitialized(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTransportNotInitialized(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTransportPerformBackup(Ljava/lang/String;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTransportReady(Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onTransportRequestBackupTimeError(Ljava/lang/Exception;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupReporter;->onWriteWidgetData(Z[B)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Lcom/android/server/backup/keyvalue/KeyValueBackupReporter;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZ)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->SHA1Checksum([B)Ljava/lang/String;
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->applyStateTransaction(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;-><clinit>()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Lcom/android/server/backup/keyvalue/KeyValueBackupReporter;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZ)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->SHA1Checksum([B)Ljava/lang/String;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->applyStateTransaction(I)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->backupPackage(Ljava/lang/String;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->backupPm()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->backupPm()V
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->bindAgent(Landroid/content/pm/PackageInfo;)Landroid/app/IBackupAgent;
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->checkAgentResult(Landroid/content/pm/PackageInfo;Lcom/android/server/backup/remote/RemoteResult;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->checkAgentResult(Landroid/content/pm/PackageInfo;Lcom/android/server/backup/remote/RemoteResult;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->checkBackupData(Landroid/content/pm/ApplicationInfo;Ljava/io/File;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->cleanUpAgent(I)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->cleanUpAgent(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->cleanUpAgentForError(Lcom/android/server/backup/keyvalue/BackupException;)V
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->cleanUpAgentForTransportStatus(I)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->createFullBackupTask(Ljava/util/List;)Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractPmAgentData(Landroid/content/pm/PackageInfo;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->finishTask(I)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getPackageForBackup(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->clearStatus(Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->clearStatus(Ljava/lang/String;Ljava/io/File;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->createFullBackupTask(Ljava/util/List;)Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->deletePmStateFile()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractAgentData(Landroid/content/pm/PackageInfo;Landroid/app/IBackupAgent;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->extractPmAgentData(Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->finishTask(I)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getBackupFinishedStatus(ZI)I
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getPackageForBackup(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getPerformBackupFlags(ZZ)I
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getSucceedingPackages()[Ljava/lang/String;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getSuccessStateFileFor(Ljava/lang/String;)Ljava/io/File;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->getTopLevelSuccessStateDirectory(Z)Ljava/io/File;
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->handleTransportStatus(ILjava/lang/String;J)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->informTransportOfUnchangedApps(Ljava/util/Set;)V
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->isEligibleForNoDataCall(Landroid/content/pm/PackageInfo;)Z
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->lambda$extractAgentData$0$KeyValueBackupTask(Landroid/app/IBackupAgent;JILandroid/app/backup/IBackupCallback;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->revertTask()V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->run()V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendDataToTransport()I
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->registerTask()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->remoteCall(Lcom/android/server/backup/remote/RemoteCallable;JLjava/lang/String;)Lcom/android/server/backup/remote/RemoteResult;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->revertTask()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->run()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendDataToTransport()I
 PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendDataToTransport(Landroid/content/pm/PackageInfo;)I
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->start(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZ)Lcom/android/server/backup/keyvalue/KeyValueBackupTask;
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->startTask()V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->transportPerformBackup(Landroid/content/pm/PackageInfo;Ljava/io/File;Z)I
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->tryCloseFileDescriptor(Ljava/io/Closeable;Ljava/lang/String;)V
-PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->writeWidgetPayloadIfAppropriate(Ljava/io/FileDescriptor;Ljava/lang/String;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->sendNoDataChangedTo(Lcom/android/internal/backup/IBackupTransport;Landroid/content/pm/PackageInfo;I)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->setSuccessState(Ljava/lang/String;Z)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->start(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Ljava/util/List;Lcom/android/server/backup/DataChangedJournal;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/List;ZZ)Lcom/android/server/backup/keyvalue/KeyValueBackupTask;
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->startTask()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->transportPerformBackup(Landroid/content/pm/PackageInfo;Ljava/io/File;Z)I
+PLcom/android/server/backup/keyvalue/KeyValueBackupTask;->triggerTransportInitializationLocked()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->tryCloseFileDescriptor(Ljava/io/Closeable;Ljava/lang/String;)V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->unregisterTask()V
+HPLcom/android/server/backup/keyvalue/KeyValueBackupTask;->writeWidgetPayloadIfAppropriate(Ljava/io/FileDescriptor;Ljava/lang/String;)V
+PLcom/android/server/backup/keyvalue/TaskException;-><init>(Ljava/lang/Exception;ZI)V
+PLcom/android/server/backup/keyvalue/TaskException;-><init>(ZI)V
+PLcom/android/server/backup/keyvalue/TaskException;->causedBy(Ljava/lang/Exception;)Lcom/android/server/backup/keyvalue/TaskException;
+PLcom/android/server/backup/keyvalue/TaskException;->create()Lcom/android/server/backup/keyvalue/TaskException;
+PLcom/android/server/backup/keyvalue/TaskException;->forStatus(I)Lcom/android/server/backup/keyvalue/TaskException;
 PLcom/android/server/backup/keyvalue/TaskException;->getStatus()I
 PLcom/android/server/backup/keyvalue/TaskException;->isStateCompromised()Z
-PLcom/android/server/backup/params/RestoreParams;-><init>(Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;JLandroid/content/pm/PackageInfo;IZ[Ljava/lang/String;Lcom/android/server/backup/internal/OnTaskFinishedListener;)V
-PLcom/android/server/backup/remote/-$$Lambda$RemoteCall$UZaEiTGjS9e2j04YYkGl3Y2ltU4;->run()V
-PLcom/android/server/backup/remote/FutureBackupCallback;->operationComplete(J)V
-PLcom/android/server/backup/remote/RemoteCall;->call()Lcom/android/server/backup/remote/RemoteResult;
-PLcom/android/server/backup/remote/RemoteResult;-><init>(IJ)V
+PLcom/android/server/backup/keyvalue/TaskException;->stateCompromised(Ljava/lang/Exception;)Lcom/android/server/backup/keyvalue/TaskException;
+HPLcom/android/server/backup/params/BackupParams;-><init>(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Ljava/util/ArrayList;Ljava/util/ArrayList;Landroid/app/backup/IBackupObserver;Landroid/app/backup/IBackupManagerMonitor;Lcom/android/server/backup/internal/OnTaskFinishedListener;ZZ)V
+PLcom/android/server/backup/params/RestoreParams;-><init>(Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;JLandroid/content/pm/PackageInfo;IZ[Ljava/lang/String;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/Map;)V
+PLcom/android/server/backup/params/RestoreParams;->createForRestoreAtInstall(Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;JLjava/lang/String;ILcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/Map;)Lcom/android/server/backup/params/RestoreParams;
+HPLcom/android/server/backup/remote/-$$Lambda$RemoteCall$UZaEiTGjS9e2j04YYkGl3Y2ltU4;-><init>(Lcom/android/server/backup/remote/RemoteCall;)V
+HPLcom/android/server/backup/remote/-$$Lambda$RemoteCall$UZaEiTGjS9e2j04YYkGl3Y2ltU4;->run()V
+HPLcom/android/server/backup/remote/FutureBackupCallback;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+HPLcom/android/server/backup/remote/FutureBackupCallback;->operationComplete(J)V
+PLcom/android/server/backup/remote/RemoteCall;-><init>(Lcom/android/server/backup/remote/RemoteCallable;J)V
+HPLcom/android/server/backup/remote/RemoteCall;-><init>(ZLcom/android/server/backup/remote/RemoteCallable;J)V
+HPLcom/android/server/backup/remote/RemoteCall;->call()Lcom/android/server/backup/remote/RemoteResult;
+PLcom/android/server/backup/remote/RemoteCall;->execute(Lcom/android/server/backup/remote/RemoteCallable;J)Lcom/android/server/backup/remote/RemoteResult;
+HPLcom/android/server/backup/remote/RemoteCall;->lambda$UZaEiTGjS9e2j04YYkGl3Y2ltU4(Lcom/android/server/backup/remote/RemoteCall;)V
+HPLcom/android/server/backup/remote/RemoteCall;->timeOut()V
+PLcom/android/server/backup/remote/RemoteResult;-><clinit>()V
+HPLcom/android/server/backup/remote/RemoteResult;-><init>(IJ)V
 PLcom/android/server/backup/remote/RemoteResult;->get()J
 PLcom/android/server/backup/remote/RemoteResult;->isPresent()Z
-PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;JLandroid/content/pm/PackageInfo;IZ[Ljava/lang/String;Lcom/android/server/backup/internal/OnTaskFinishedListener;)V
+HPLcom/android/server/backup/remote/RemoteResult;->of(J)Lcom/android/server/backup/remote/RemoteResult;
+PLcom/android/server/backup/restore/-$$Lambda$FullRestoreEngine$4tWYktC0BIhLX9UJcbVLlqtWGqU;-><clinit>()V
+PLcom/android/server/backup/restore/-$$Lambda$FullRestoreEngine$4tWYktC0BIhLX9UJcbVLlqtWGqU;-><init>()V
+PLcom/android/server/backup/restore/-$$Lambda$FullRestoreEngine$4tWYktC0BIhLX9UJcbVLlqtWGqU;->onBytesRead(J)V
+PLcom/android/server/backup/restore/FullRestoreEngine$1;-><clinit>()V
+PLcom/android/server/backup/restore/FullRestoreEngine;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/BackupRestoreTask;Landroid/app/backup/IFullBackupRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;Landroid/content/pm/PackageInfo;ZIZ)V
+PLcom/android/server/backup/restore/FullRestoreEngine;->getAgent()Landroid/app/IBackupAgent;
+PLcom/android/server/backup/restore/FullRestoreEngine;->getWidgetData()[B
+PLcom/android/server/backup/restore/FullRestoreEngine;->isCanonicalFilePath(Ljava/lang/String;)Z
+PLcom/android/server/backup/restore/FullRestoreEngine;->isRestorableFile(Lcom/android/server/backup/FileMetadata;)Z
+PLcom/android/server/backup/restore/FullRestoreEngine;->lambda$restoreOneFile$0(J)V
+HPLcom/android/server/backup/restore/FullRestoreEngine;->restoreOneFile(Ljava/io/InputStream;Z[BLandroid/content/pm/PackageInfo;ZILandroid/app/backup/IBackupManagerMonitor;)Z
+PLcom/android/server/backup/restore/FullRestoreEngine;->setUpPipes()V
+PLcom/android/server/backup/restore/FullRestoreEngine;->shouldForceClearAppDataOnFullRestore(Ljava/lang/String;)Z
+PLcom/android/server/backup/restore/FullRestoreEngine;->tearDownPipes()V
+PLcom/android/server/backup/restore/FullRestoreEngineThread;-><init>(Lcom/android/server/backup/restore/FullRestoreEngine;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/backup/restore/FullRestoreEngineThread;->run()V
+PLcom/android/server/backup/restore/FullRestoreEngineThread;->waitForResult()I
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask$1;-><clinit>()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask$StreamFeederThread;-><init>(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;)V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask$StreamFeederThread;->operationComplete(J)V
+HPLcom/android/server/backup/restore/PerformUnifiedRestoreTask$StreamFeederThread;->run()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;-><init>(Lcom/android/server/backup/UserBackupManagerService;Lcom/android/server/backup/transport/TransportClient;Landroid/app/backup/IRestoreObserver;Landroid/app/backup/IBackupManagerMonitor;JLandroid/content/pm/PackageInfo;IZ[Ljava/lang/String;Lcom/android/server/backup/internal/OnTaskFinishedListener;Ljava/util/Map;)V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$000(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;)Lcom/android/server/backup/UserBackupManagerService;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$100(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$200(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;)Landroid/app/backup/IBackupManagerMonitor;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$300(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;)Lcom/android/server/backup/transport/TransportClient;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$402(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;Z)Z
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$502(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;Landroid/app/IBackupAgent;)Landroid/app/IBackupAgent;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->access$602(Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;[B)[B
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->dispatchNextRestore()V
 PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->execute()V
 PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->executeNextState(Lcom/android/server/backup/restore/UnifiedRestoreState;)V
+HPLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->filterExcludedKeys(Ljava/lang/String;Landroid/app/backup/BackupDataInput;Landroid/app/backup/BackupDataOutput;)V
 PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->finalizeRestore()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->getExcludedKeysForPackage(Ljava/lang/String;)Ljava/util/Set;
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->initiateOneRestore(Landroid/content/pm/PackageInfo;J)V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->keyValueAgentCleanup()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->operationComplete(J)V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->restoreFinished()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->restoreFull()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->restoreKeyValue()V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->sendOnRestorePackage(Ljava/lang/String;)V
 PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->sendStartRestore(I)V
+PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->shouldStageBackupData(Ljava/lang/String;)Z
 PLcom/android/server/backup/restore/PerformUnifiedRestoreTask;->startRestore()V
+PLcom/android/server/backup/restore/RestoreDeleteObserver;-><init>()V
+PLcom/android/server/backup/restore/RestoreEngine;-><init>()V
+PLcom/android/server/backup/restore/RestoreEngine;->getResult()I
+PLcom/android/server/backup/restore/RestoreEngine;->isRunning()Z
+PLcom/android/server/backup/restore/RestoreEngine;->setRunning(Z)V
+PLcom/android/server/backup/restore/RestoreEngine;->waitForResult()I
+PLcom/android/server/backup/restore/RestorePolicy;-><clinit>()V
+PLcom/android/server/backup/restore/RestorePolicy;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/backup/restore/RestorePolicy;->values()[Lcom/android/server/backup/restore/RestorePolicy;
+PLcom/android/server/backup/restore/UnifiedRestoreState;-><clinit>()V
 PLcom/android/server/backup/restore/UnifiedRestoreState;-><init>(Ljava/lang/String;I)V
 PLcom/android/server/backup/restore/UnifiedRestoreState;->values()[Lcom/android/server/backup/restore/UnifiedRestoreState;
-PLcom/android/server/backup/transport/-$$Lambda$TransportClient$ciIUj0x0CRg93UETUpy2FB5aqCQ;->run()V
+HPLcom/android/server/backup/transport/-$$Lambda$TransportClient$ciIUj0x0CRg93UETUpy2FB5aqCQ;-><init>(Lcom/android/server/backup/transport/TransportClient;Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/internal/backup/IBackupTransport;)V
+HPLcom/android/server/backup/transport/-$$Lambda$TransportClient$ciIUj0x0CRg93UETUpy2FB5aqCQ;->run()V
+HPLcom/android/server/backup/transport/-$$Lambda$TransportClient$uc3fygwQjQIS_JT7mlt-yMBfJcE;-><init>(Ljava/util/concurrent/CompletableFuture;)V
 PLcom/android/server/backup/transport/-$$Lambda$TransportClient$uc3fygwQjQIS_JT7mlt-yMBfJcE;->onTransportConnectionResult(Lcom/android/internal/backup/IBackupTransport;Lcom/android/server/backup/transport/TransportClient;)V
-PLcom/android/server/backup/transport/TransportClient$TransportConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/backup/transport/TransportClient;-><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/TransportClient;->checkStateIntegrityLocked()V
-PLcom/android/server/backup/transport/TransportClient;->connect(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
-PLcom/android/server/backup/transport/TransportClient;->connectAsync(Lcom/android/server/backup/transport/TransportConnectionListener;Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportClient;->connectOrThrow(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
-PLcom/android/server/backup/transport/TransportClient;->finalize()V
+PLcom/android/server/backup/transport/-$$Lambda$TransportClientManager$3-d3ib7qD5oE9G-iWpfeoufnGXc;-><clinit>()V
+PLcom/android/server/backup/transport/-$$Lambda$TransportClientManager$3-d3ib7qD5oE9G-iWpfeoufnGXc;-><init>()V
+HPLcom/android/server/backup/transport/-$$Lambda$TransportClientManager$3-d3ib7qD5oE9G-iWpfeoufnGXc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/backup/transport/TransportClient$TransportConnection;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportClient;)V
+HPLcom/android/server/backup/transport/TransportClient$TransportConnection;-><init>(Landroid/content/Context;Lcom/android/server/backup/transport/TransportClient;Lcom/android/server/backup/transport/TransportClient$1;)V
+PLcom/android/server/backup/transport/TransportClient$TransportConnection;->onBindingDied(Landroid/content/ComponentName;)V
+HPLcom/android/server/backup/transport/TransportClient$TransportConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportClient$TransportConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HPLcom/android/server/backup/transport/TransportClient;-><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/TransportClient;-><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
+HPLcom/android/server/backup/transport/TransportClient;->access$100(Lcom/android/server/backup/transport/TransportClient;Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportClient;->access$200(Lcom/android/server/backup/transport/TransportClient;)V
+PLcom/android/server/backup/transport/TransportClient;->access$300(Lcom/android/server/backup/transport/TransportClient;)V
+HPLcom/android/server/backup/transport/TransportClient;->checkState(ZLjava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->checkStateIntegrityLocked()V
+HPLcom/android/server/backup/transport/TransportClient;->connect(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
+HPLcom/android/server/backup/transport/TransportClient;->connectAsync(Lcom/android/server/backup/transport/TransportConnectionListener;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->connectOrThrow(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
+HPLcom/android/server/backup/transport/TransportClient;->finalize()V
+PLcom/android/server/backup/transport/TransportClient;->getConnectedTransport(Ljava/lang/String;)Lcom/android/internal/backup/IBackupTransport;
 PLcom/android/server/backup/transport/TransportClient;->getTransportComponent()Landroid/content/ComponentName;
+HPLcom/android/server/backup/transport/TransportClient;->lambda$connect$0(Ljava/util/concurrent/CompletableFuture;Lcom/android/internal/backup/IBackupTransport;Lcom/android/server/backup/transport/TransportClient;)V
 PLcom/android/server/backup/transport/TransportClient;->lambda$notifyListener$1$TransportClient(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/internal/backup/IBackupTransport;)V
-PLcom/android/server/backup/transport/TransportClient;->markAsDisposed()V
-PLcom/android/server/backup/transport/TransportClient;->notifyListener(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/internal/backup/IBackupTransport;Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportClient;->notifyListenersAndClearLocked(Lcom/android/internal/backup/IBackupTransport;)V
-PLcom/android/server/backup/transport/TransportClient;->onServiceConnected(Landroid/os/IBinder;)V
-PLcom/android/server/backup/transport/TransportClient;->onStateTransition(II)V
-PLcom/android/server/backup/transport/TransportClient;->saveLogEntry(Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportClient;->setStateLocked(ILcom/android/internal/backup/IBackupTransport;)V
-PLcom/android/server/backup/transport/TransportClient;->stateToString(I)Ljava/lang/String;
-PLcom/android/server/backup/transport/TransportClient;->toString()Ljava/lang/String;
-PLcom/android/server/backup/transport/TransportClient;->unbind(Ljava/lang/String;)V
-PLcom/android/server/backup/transport/TransportClientManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->log(ILjava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->log(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->markAsDisposed()V
+HPLcom/android/server/backup/transport/TransportClient;->notifyListener(Lcom/android/server/backup/transport/TransportConnectionListener;Lcom/android/internal/backup/IBackupTransport;Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->notifyListenersAndClearLocked(Lcom/android/internal/backup/IBackupTransport;)V
+PLcom/android/server/backup/transport/TransportClient;->onBindingDied()V
+HPLcom/android/server/backup/transport/TransportClient;->onServiceConnected(Landroid/os/IBinder;)V
+PLcom/android/server/backup/transport/TransportClient;->onServiceDisconnected()V
+HPLcom/android/server/backup/transport/TransportClient;->onStateTransition(II)V
+HPLcom/android/server/backup/transport/TransportClient;->saveLogEntry(Ljava/lang/String;)V
+HPLcom/android/server/backup/transport/TransportClient;->setStateLocked(ILcom/android/internal/backup/IBackupTransport;)V
+HPLcom/android/server/backup/transport/TransportClient;->stateToString(I)Ljava/lang/String;
+HPLcom/android/server/backup/transport/TransportClient;->toString()Ljava/lang/String;
+HPLcom/android/server/backup/transport/TransportClient;->transitionThroughState(III)I
+HPLcom/android/server/backup/transport/TransportClient;->unbind(Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportClientManager;-><clinit>()V
+PLcom/android/server/backup/transport/TransportClientManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;)V
+PLcom/android/server/backup/transport/TransportClientManager;-><init>(ILandroid/content/Context;Lcom/android/server/backup/transport/TransportStats;Ljava/util/function/Function;)V
+HPLcom/android/server/backup/transport/TransportClientManager;->disposeOfTransportClient(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;)V
 PLcom/android/server/backup/transport/TransportClientManager;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/backup/transport/TransportClientManager;->getTransportClient(Landroid/content/ComponentName;Landroid/os/Bundle;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
+HPLcom/android/server/backup/transport/TransportClientManager;->getRealTransportIntent(Landroid/content/ComponentName;)Landroid/content/Intent;
+HPLcom/android/server/backup/transport/TransportClientManager;->getTransportClient(Landroid/content/ComponentName;Landroid/os/Bundle;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
 PLcom/android/server/backup/transport/TransportClientManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;)Lcom/android/server/backup/transport/TransportClient;
-PLcom/android/server/backup/transport/TransportClientManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportClient;
-PLcom/android/server/backup/transport/TransportStats$Stats;->register(J)V
-PLcom/android/server/backup/transport/TransportStats;->registerConnectionTime(Landroid/content/ComponentName;J)V
-PLcom/android/server/backup/transport/TransportUtils;->formatMessage(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/backup/utils/AppBackupUtils;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/IPackageManager;I)Z
-HSPLcom/android/server/backup/utils/AppBackupUtils;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/IPackageManager;I)Z
-PLcom/android/server/backup/utils/AppBackupUtils;->appIsRunningAndEligibleForBackupWithTransport(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Landroid/content/pm/PackageManager;I)Z
-PLcom/android/server/backup/utils/BackupManagerMonitorUtils;->monitorEvent(Landroid/app/backup/IBackupManagerMonitor;ILandroid/content/pm/PackageInfo;ILandroid/os/Bundle;)Landroid/app/backup/IBackupManagerMonitor;
-PLcom/android/server/backup/utils/BackupManagerMonitorUtils;->putMonitoringExtra(Landroid/os/Bundle;Ljava/lang/String;J)Landroid/os/Bundle;
-PLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupFinished(Landroid/app/backup/IBackupObserver;I)V
-PLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupOnPackageResult(Landroid/app/backup/IBackupObserver;Ljava/lang/String;I)V
-HSPLcom/android/server/backup/utils/DataStreamFileCodec;->deserialize()Ljava/lang/Object;
-PLcom/android/server/backup/utils/FileUtils;->createNewFile(Ljava/io/File;)Ljava/io/File;
-PLcom/android/server/backup/utils/FullBackupUtils;->routeSocketDataToOutput(Landroid/os/ParcelFileDescriptor;Ljava/io/OutputStream;)V
-PLcom/android/server/backup/utils/RandomAccessFileUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+HPLcom/android/server/backup/transport/TransportClientManager;->getTransportClient(Landroid/content/ComponentName;Ljava/lang/String;Landroid/content/Intent;)Lcom/android/server/backup/transport/TransportClient;
+HPLcom/android/server/backup/transport/TransportClientManager;->lambda$3-d3ib7qD5oE9G-iWpfeoufnGXc(Landroid/content/ComponentName;)Landroid/content/Intent;
+PLcom/android/server/backup/transport/TransportNotAvailableException;-><init>()V
+HPLcom/android/server/backup/transport/TransportNotRegisteredException;-><init>(Ljava/lang/String;)V
+PLcom/android/server/backup/transport/TransportStats$Stats;-><init>()V
+HPLcom/android/server/backup/transport/TransportStats$Stats;->access$000(Lcom/android/server/backup/transport/TransportStats$Stats;J)V
+HPLcom/android/server/backup/transport/TransportStats$Stats;->register(J)V
+PLcom/android/server/backup/transport/TransportStats;-><init>()V
+HPLcom/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;
+HPLcom/android/server/backup/transport/TransportUtils;->log(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/backup/utils/AppBackupUtils;-><clinit>()V
+HPLcom/android/server/backup/utils/AppBackupUtils;->appGetsFullBackup(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsDisabled(Landroid/content/pm/ApplicationInfo;I)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsDisabled(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManagerInternal;I)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;I)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsEligibleForBackup(Landroid/content/pm/ApplicationInfo;Landroid/content/pm/PackageManagerInternal;I)Z
+PLcom/android/server/backup/utils/AppBackupUtils;->appIsKeyValueOnly(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsRunningAndEligibleForBackupWithTransport(Lcom/android/server/backup/transport/TransportClient;Ljava/lang/String;Landroid/content/pm/PackageManager;I)Z
+HPLcom/android/server/backup/utils/AppBackupUtils;->appIsStopped(Landroid/content/pm/ApplicationInfo;)Z
+PLcom/android/server/backup/utils/AppBackupUtils;->signaturesMatch([Landroid/content/pm/Signature;Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageManagerInternal;)Z
+HPLcom/android/server/backup/utils/BackupManagerMonitorUtils;->monitorEvent(Landroid/app/backup/IBackupManagerMonitor;ILandroid/content/pm/PackageInfo;ILandroid/os/Bundle;)Landroid/app/backup/IBackupManagerMonitor;
+HPLcom/android/server/backup/utils/BackupManagerMonitorUtils;->putMonitoringExtra(Landroid/os/Bundle;Ljava/lang/String;J)Landroid/os/Bundle;
+PLcom/android/server/backup/utils/BackupManagerMonitorUtils;->putMonitoringExtra(Landroid/os/Bundle;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
+PLcom/android/server/backup/utils/BackupManagerMonitorUtils;->putMonitoringExtra(Landroid/os/Bundle;Ljava/lang/String;Z)Landroid/os/Bundle;
+HPLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupFinished(Landroid/app/backup/IBackupObserver;I)V
+HPLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupOnPackageResult(Landroid/app/backup/IBackupObserver;Ljava/lang/String;I)V
+HPLcom/android/server/backup/utils/BackupObserverUtils;->sendBackupOnUpdate(Landroid/app/backup/IBackupObserver;Ljava/lang/String;Landroid/app/backup/BackupProgress;)V
+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;
+PLcom/android/server/backup/utils/FullBackupRestoreObserverUtils;->sendOnRestorePackage(Landroid/app/backup/IFullBackupRestoreObserver;Ljava/lang/String;)Landroid/app/backup/IFullBackupRestoreObserver;
+HPLcom/android/server/backup/utils/FullBackupUtils;->routeSocketDataToOutput(Landroid/os/ParcelFileDescriptor;Ljava/io/OutputStream;)V
+PLcom/android/server/backup/utils/RandomAccessFileUtils;->getRandomAccessFile(Ljava/io/File;)Ljava/io/RandomAccessFile;
 PLcom/android/server/backup/utils/RandomAccessFileUtils;->writeBoolean(Ljava/io/File;Z)V
-PLcom/android/server/biometrics/-$$Lambda$BiometricService$ni36Nnx3a7REfALY4evPZBLfRQA;-><init>(Lcom/android/server/biometrics/BiometricService;ILandroid/hardware/biometrics/IBiometricServiceReceiver;Landroid/os/IBinder;JLjava/lang/String;Landroid/os/Bundle;III)V
-PLcom/android/server/biometrics/-$$Lambda$BiometricService$ni36Nnx3a7REfALY4evPZBLfRQA;->run()V
-PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$3BDtQ31Of-KLPO7tQ7xlp7blHK4;->run()V
-HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$F4H2HbJPkB5kHnCG99RJzq63ETk;->run()V
-HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$HtA60PD2POS70xjo2Wkv9Ds3iIM;->run()V
-HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$aivpKkOumO0Y5eW-DasbcdjcN4o;->run()V
-HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$d8jmYuo4MyZZpxoeouUPEq4DMII;->run()V
-HSPLcom/android/server/biometrics/AuthenticationClient;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Metrics;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
+HPLcom/android/server/backup/utils/SparseArrayUtils;->union(Landroid/util/SparseArray;)Ljava/util/HashSet;
+PLcom/android/server/backup/utils/TarBackupReader;-><init>(Ljava/io/InputStream;Lcom/android/server/backup/utils/BytesReadListener;Landroid/app/backup/IBackupManagerMonitor;)V
+PLcom/android/server/backup/utils/TarBackupReader;->chooseRestorePolicy(Landroid/content/pm/PackageManager;ZLcom/android/server/backup/FileMetadata;[Landroid/content/pm/Signature;Landroid/content/pm/PackageManagerInternal;I)Lcom/android/server/backup/restore/RestorePolicy;
+PLcom/android/server/backup/utils/TarBackupReader;->extractLine([BI[Ljava/lang/String;)I
+HPLcom/android/server/backup/utils/TarBackupReader;->extractRadix([BIII)J
+PLcom/android/server/backup/utils/TarBackupReader;->extractString([BII)Ljava/lang/String;
+PLcom/android/server/backup/utils/TarBackupReader;->readAppManifestAndReturnSignatures(Lcom/android/server/backup/FileMetadata;)[Landroid/content/pm/Signature;
+PLcom/android/server/backup/utils/TarBackupReader;->readExactly(Ljava/io/InputStream;[BII)I
+PLcom/android/server/backup/utils/TarBackupReader;->readPaxExtendedHeader(Lcom/android/server/backup/FileMetadata;)Z
+PLcom/android/server/backup/utils/TarBackupReader;->readTarHeader([B)Z
+HPLcom/android/server/backup/utils/TarBackupReader;->readTarHeaders()Lcom/android/server/backup/FileMetadata;
+PLcom/android/server/backup/utils/TarBackupReader;->skipTarPadding(J)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricService$IIHhqSKogJZG56VmePRbTOf_5qo;-><init>(Lcom/android/server/biometrics/BiometricService;Landroid/os/Bundle;ILjava/lang/String;Landroid/os/IBinder;JLandroid/hardware/biometrics/IBiometricServiceReceiver;III)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricService$IIHhqSKogJZG56VmePRbTOf_5qo;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricService$PWa3w6AT62ogdb7_LTOZ5QOYAk4;-><init>(Lcom/android/server/biometrics/BiometricService;Landroid/os/Bundle;ILjava/lang/String;Landroid/hardware/biometrics/IBiometricServiceReceiver;Landroid/os/IBinder;JIII)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricService$PWa3w6AT62ogdb7_LTOZ5QOYAk4;->run()V
+HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$5zE_f-JKSpUWsfwvdtw36YktZZ0;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$5zE_f-JKSpUWsfwvdtw36YktZZ0;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$8-hCNL3jMZVMKItY0KyN7TBk6u8;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/RemovalClient;)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$8-hCNL3jMZVMKItY0KyN7TBk6u8;->run()V
+HPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$B1PDNz5plOtQUbeZgXMkI_dh_yQ;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/os/IBinder;Z)V
+HPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$B1PDNz5plOtQUbeZgXMkI_dh_yQ;->run()V
+HPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$VFT8WmkESkAnonaxJDq_GS_vB4E;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;JLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$VFT8WmkESkAnonaxJDq_GS_vB4E;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$Zy4OXo3HMpNNxU1x5VMDe_5Q3vI;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$Zy4OXo3HMpNNxU1x5VMDe_5Q3vI;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$iRNlDOJhMpMFOTQxuHjuZ0z5dlY;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$iRNlDOJhMpMFOTQxuHjuZ0z5dlY;->run()V
+HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$lM-Gght_XjLuQG2iY0xHchO8Xgk;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/EnumerateClient;)V
+HSPLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$lM-Gght_XjLuQG2iY0xHchO8Xgk;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$rf3hjPI_nf4EvVsQV7gFCF1-HpI;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;I)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$rf3hjPI_nf4EvVsQV7gFCF1-HpI;->run()V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$yj0NG4umGnnyUerNM_EKxeka05A;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$yj0NG4umGnnyUerNM_EKxeka05A;->run()V
+HSPLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;)V
+HSPLcom/android/server/biometrics/AuthService$AuthServiceImpl;-><init>(Lcom/android/server/biometrics/AuthService;Lcom/android/server/biometrics/AuthService$1;)V
+HPLcom/android/server/biometrics/AuthService$AuthServiceImpl;->canAuthenticate(Ljava/lang/String;II)I
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->hasEnrolledBiometrics(ILjava/lang/String;)Z
+HSPLcom/android/server/biometrics/AuthService$AuthServiceImpl;->registerEnabledOnKeyguardCallback(Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;)V
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->resetLockout([B)V
+PLcom/android/server/biometrics/AuthService$AuthServiceImpl;->setActiveUser(I)V
+HSPLcom/android/server/biometrics/AuthService$Injector;-><init>()V
+HSPLcom/android/server/biometrics/AuthService$Injector;->getBiometricService()Landroid/hardware/biometrics/IBiometricService;
+HSPLcom/android/server/biometrics/AuthService$Injector;->getConfiguration(Landroid/content/Context;)[Ljava/lang/String;
+HSPLcom/android/server/biometrics/AuthService$Injector;->publishBinderService(Lcom/android/server/biometrics/AuthService;Landroid/hardware/biometrics/IAuthService$Stub;)V
+HSPLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/biometrics/AuthService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/AuthService$Injector;)V
+HSPLcom/android/server/biometrics/AuthService;->access$000(Lcom/android/server/biometrics/AuthService;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/AuthService;->access$100(Lcom/android/server/biometrics/AuthService;)V
+HSPLcom/android/server/biometrics/AuthService;->access$200(Lcom/android/server/biometrics/AuthService;)V
+HSPLcom/android/server/biometrics/AuthService;->access$300(Lcom/android/server/biometrics/AuthService;)Landroid/hardware/biometrics/IBiometricService;
+HSPLcom/android/server/biometrics/AuthService;->checkInternalPermission()V
+HPLcom/android/server/biometrics/AuthService;->checkPermission()V
+HSPLcom/android/server/biometrics/AuthService;->onStart()V
+HSPLcom/android/server/biometrics/AuthService;->registerAuthenticator(Lcom/android/server/biometrics/SensorConfig;)V
+HPLcom/android/server/biometrics/AuthenticationClient;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
 PLcom/android/server/biometrics/AuthenticationClient;->binderDied()V
 PLcom/android/server/biometrics/AuthenticationClient;->getRequireConfirmation()Z
-HSPLcom/android/server/biometrics/AuthenticationClient;->isBiometricPrompt()Z
-HSPLcom/android/server/biometrics/AuthenticationClient;->isCryptoOperation()Z
-PLcom/android/server/biometrics/AuthenticationClient;->onAuthenticated(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;ZLjava/util/ArrayList;)Z
-HSPLcom/android/server/biometrics/AuthenticationClient;->onError(JII)Z
-HSPLcom/android/server/biometrics/AuthenticationClient;->start()I
-HSPLcom/android/server/biometrics/AuthenticationClient;->statsAction()I
-HSPLcom/android/server/biometrics/AuthenticationClient;->stop(Z)I
+PLcom/android/server/biometrics/AuthenticationClient;->getStartTimeMs()J
+HPLcom/android/server/biometrics/AuthenticationClient;->isBiometricPrompt()Z
+PLcom/android/server/biometrics/AuthenticationClient;->isCryptoOperation()Z
+HPLcom/android/server/biometrics/AuthenticationClient;->onAuthenticated(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;ZLjava/util/ArrayList;)Z
+HPLcom/android/server/biometrics/AuthenticationClient;->onError(JII)Z
+HPLcom/android/server/biometrics/AuthenticationClient;->start()I
+PLcom/android/server/biometrics/AuthenticationClient;->statsAction()I
+HPLcom/android/server/biometrics/AuthenticationClient;->stop(Z)I
+HSPLcom/android/server/biometrics/BiometricService$1;-><init>(Lcom/android/server/biometrics/BiometricService;Landroid/os/Looper;)V
 PLcom/android/server/biometrics/BiometricService$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/biometrics/BiometricService$2;-><init>(Lcom/android/server/biometrics/BiometricService;)V
 PLcom/android/server/biometrics/BiometricService$2;->onAcquired(ILjava/lang/String;)V
+PLcom/android/server/biometrics/BiometricService$2;->onAuthenticationFailed()V
 PLcom/android/server/biometrics/BiometricService$2;->onAuthenticationSucceeded(Z[B)V
+PLcom/android/server/biometrics/BiometricService$2;->onDeviceCredentialPressed()V
+PLcom/android/server/biometrics/BiometricService$2;->onDialogDismissed(I)V
+PLcom/android/server/biometrics/BiometricService$2;->onError(IIII)V
+HSPLcom/android/server/biometrics/BiometricService$3;-><init>(Lcom/android/server/biometrics/BiometricService;)V
 PLcom/android/server/biometrics/BiometricService$AuthSession;-><init>(Lcom/android/server/biometrics/BiometricService;Ljava/util/HashMap;Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiver;Ljava/lang/String;Landroid/os/Bundle;IIIIZ)V
-PLcom/android/server/biometrics/BiometricService$AuthSession;->access$2202(Lcom/android/server/biometrics/BiometricService$AuthSession;I)I
+PLcom/android/server/biometrics/BiometricService$AuthSession;->access$1802(Lcom/android/server/biometrics/BiometricService$AuthSession;J)J
+PLcom/android/server/biometrics/BiometricService$AuthSession;->access$1900(Lcom/android/server/biometrics/BiometricService$AuthSession;)J
+PLcom/android/server/biometrics/BiometricService$AuthSession;->access$1902(Lcom/android/server/biometrics/BiometricService$AuthSession;J)J
+PLcom/android/server/biometrics/BiometricService$AuthSession;->containsCookie(I)Z
+PLcom/android/server/biometrics/BiometricService$AuthSession;->isAllowDeviceCredential()Z
+PLcom/android/server/biometrics/BiometricService$AuthSession;->isCrypto()Z
+HSPLcom/android/server/biometrics/BiometricService$AuthenticatorWrapper;-><init>(IIILandroid/hardware/biometrics/IBiometricAuthenticator;)V
+PLcom/android/server/biometrics/BiometricService$AuthenticatorWrapper;->getActualStrength()I
+HSPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+HSPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;-><init>(Lcom/android/server/biometrics/BiometricService;Lcom/android/server/biometrics/BiometricService$1;)V
 PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->authenticate(Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->canAuthenticate(Ljava/lang/String;II)I
 PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->cancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V
-PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->onConfirmDeviceCredentialError(ILjava/lang/String;)V
-PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->onConfirmDeviceCredentialSuccess()V
+HPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->hasEnrolledBiometrics(ILjava/lang/String;)Z
 PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->onReadyForAuthentication(IZI)V
+HSPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->registerAuthenticator(IIILandroid/hardware/biometrics/IBiometricAuthenticator;)V
 HSPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->registerEnabledOnKeyguardCallback(Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;)V
-PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->resetLockout([B)V
-PLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->setActiveUser(I)V
+HPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->resetLockout([B)V
+HPLcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;->setActiveUser(I)V
 HSPLcom/android/server/biometrics/BiometricService$EnabledOnKeyguardCallback;-><init>(Lcom/android/server/biometrics/BiometricService;Landroid/hardware/biometrics/IBiometricEnabledOnKeyguardCallback;)V
-HSPLcom/android/server/biometrics/BiometricService$EnabledOnKeyguardCallback;->binderDied()V
-HSPLcom/android/server/biometrics/BiometricService$SettingObserver;-><init>(Lcom/android/server/biometrics/BiometricService;Landroid/os/Handler;)V
-HSPLcom/android/server/biometrics/BiometricService$SettingObserver;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/biometrics/BiometricService$EnabledOnKeyguardCallback;->binderDied()V
+HSPLcom/android/server/biometrics/BiometricService$Injector;-><init>()V
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getActivityManagerService()Landroid/app/IActivityManager;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getBiometricStrengthController(Lcom/android/server/biometrics/BiometricService;)Lcom/android/server/biometrics/BiometricStrengthController;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getConfiguration(Landroid/content/Context;)[Ljava/lang/String;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getKeyStore()Landroid/security/KeyStore;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getSettingObserver(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)Lcom/android/server/biometrics/BiometricService$SettingObserver;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
+HSPLcom/android/server/biometrics/BiometricService$Injector;->getTrustManager()Landroid/app/trust/ITrustManager;
+PLcom/android/server/biometrics/BiometricService$Injector;->isDebugEnabled(Landroid/content/Context;I)Z
+HSPLcom/android/server/biometrics/BiometricService$Injector;->publishBinderService(Lcom/android/server/biometrics/BiometricService;Landroid/hardware/biometrics/IBiometricService$Stub;)V
+HSPLcom/android/server/biometrics/BiometricService$SettingObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/util/List;)V
+PLcom/android/server/biometrics/BiometricService$SettingObserver;->getFaceAlwaysRequireConfirmation(I)Z
+HPLcom/android/server/biometrics/BiometricService$SettingObserver;->getFaceEnabledForApps(I)Z
+HSPLcom/android/server/biometrics/BiometricService$SettingObserver;->getFaceEnabledOnKeyguard()Z
+HSPLcom/android/server/biometrics/BiometricService$SettingObserver;->onChange(ZLandroid/net/Uri;I)V
 HSPLcom/android/server/biometrics/BiometricService$SettingObserver;->updateContentObserver()V
 HSPLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/biometrics/BiometricService;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/BiometricService$Injector;)V
+PLcom/android/server/biometrics/BiometricService;->access$000(Lcom/android/server/biometrics/BiometricService;Z[B)V
+PLcom/android/server/biometrics/BiometricService;->access$100(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService;->access$1000(Lcom/android/server/biometrics/BiometricService;)V
+HSPLcom/android/server/biometrics/BiometricService;->access$1100(Lcom/android/server/biometrics/BiometricService;)Ljava/util/List;
+HSPLcom/android/server/biometrics/BiometricService;->access$1200(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService;->access$1300(Lcom/android/server/biometrics/BiometricService;)V
+PLcom/android/server/biometrics/BiometricService;->access$1400(Lcom/android/server/biometrics/BiometricService;ILandroid/os/Bundle;Ljava/lang/String;)Landroid/util/Pair;
+PLcom/android/server/biometrics/BiometricService;->access$1400(Lcom/android/server/biometrics/BiometricService;ILandroid/os/Bundle;Ljava/lang/String;Z)Landroid/util/Pair;
+HSPLcom/android/server/biometrics/BiometricService;->access$1500(Lcom/android/server/biometrics/BiometricService;)Lcom/android/server/biometrics/BiometricService$Injector;
+HSPLcom/android/server/biometrics/BiometricService;->access$1600(Lcom/android/server/biometrics/BiometricService;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/BiometricService;->access$200(Lcom/android/server/biometrics/BiometricService;IIII)V
+PLcom/android/server/biometrics/BiometricService;->access$300(Lcom/android/server/biometrics/BiometricService;ILjava/lang/String;)V
+PLcom/android/server/biometrics/BiometricService;->access$400(Lcom/android/server/biometrics/BiometricService;I)V
+PLcom/android/server/biometrics/BiometricService;->access$600(Lcom/android/server/biometrics/BiometricService;IZI)V
+PLcom/android/server/biometrics/BiometricService;->access$700(Lcom/android/server/biometrics/BiometricService;Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiver;Ljava/lang/String;Landroid/os/Bundle;III)V
+PLcom/android/server/biometrics/BiometricService;->access$800(Lcom/android/server/biometrics/BiometricService;Landroid/os/IBinder;Ljava/lang/String;)V
 PLcom/android/server/biometrics/BiometricService;->authenticateInternal(Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiver;Ljava/lang/String;Landroid/os/Bundle;IIII)V
-PLcom/android/server/biometrics/BiometricService;->checkAndGetBiometricModality(I)Landroid/util/Pair;
-HSPLcom/android/server/biometrics/BiometricService;->getAuthenticator(I)Landroid/hardware/biometrics/BiometricAuthenticator;
+PLcom/android/server/biometrics/BiometricService;->cancelInternal(Landroid/os/IBinder;Ljava/lang/String;Z)V
+HPLcom/android/server/biometrics/BiometricService;->checkAndGetAuthenticators(ILandroid/os/Bundle;Ljava/lang/String;)Landroid/util/Pair;
+HPLcom/android/server/biometrics/BiometricService;->checkAndGetAuthenticators(ILandroid/os/Bundle;Ljava/lang/String;Z)Landroid/util/Pair;
+HSPLcom/android/server/biometrics/BiometricService;->checkInternalPermission()V
+PLcom/android/server/biometrics/BiometricService;->checkPermission()V
+PLcom/android/server/biometrics/BiometricService;->handleAuthenticate(Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiver;Ljava/lang/String;Landroid/os/Bundle;III)V
+PLcom/android/server/biometrics/BiometricService;->handleAuthenticationRejected()V
 PLcom/android/server/biometrics/BiometricService;->handleAuthenticationSucceeded(Z[B)V
+PLcom/android/server/biometrics/BiometricService;->handleCancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V
 PLcom/android/server/biometrics/BiometricService;->handleOnAcquired(ILjava/lang/String;)V
+PLcom/android/server/biometrics/BiometricService;->handleOnDeviceCredentialPressed()V
+PLcom/android/server/biometrics/BiometricService;->handleOnDismissed(I)V
+PLcom/android/server/biometrics/BiometricService;->handleOnError(IIII)V
 PLcom/android/server/biometrics/BiometricService;->handleOnReadyForAuthentication(IZI)V
-PLcom/android/server/biometrics/BiometricService;->isEnabledForApp(I)Z
-PLcom/android/server/biometrics/BiometricService;->lambda$handleAuthenticate$1$BiometricService(ILandroid/hardware/biometrics/IBiometricServiceReceiver;Landroid/os/IBinder;JLjava/lang/String;Landroid/os/Bundle;III)V
+HPLcom/android/server/biometrics/BiometricService;->isBiometricDisabledByDevicePolicy(II)Z
+HPLcom/android/server/biometrics/BiometricService;->isEnabledForApp(II)Z
+PLcom/android/server/biometrics/BiometricService;->lambda$handleAuthenticate$0$BiometricService(Landroid/os/Bundle;ILjava/lang/String;Landroid/hardware/biometrics/IBiometricServiceReceiver;Landroid/os/IBinder;JIII)V
+PLcom/android/server/biometrics/BiometricService;->lambda$handleAuthenticate$0$BiometricService(Landroid/os/Bundle;ILjava/lang/String;Landroid/os/IBinder;JLandroid/hardware/biometrics/IBiometricServiceReceiver;III)V
+PLcom/android/server/biometrics/BiometricService;->logDialogDismissed(I)V
+HPLcom/android/server/biometrics/BiometricService;->mapModalityToDevicePolicyType(I)I
 HSPLcom/android/server/biometrics/BiometricService;->onStart()V
-HSPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
+PLcom/android/server/biometrics/BiometricService;->statsModality()I
+HSPLcom/android/server/biometrics/BiometricServiceBase$1;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+HPLcom/android/server/biometrics/BiometricServiceBase$1;->run()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$2;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+PLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
 PLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->handleFailedAttempt()I
 PLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->notifyUserActivity()V
-HSPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->onStart()V
-HSPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->onStop()V
-HSPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->statsClient()I
+HPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->onStart()V
+HPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->onStop()V
+HPLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;->statsClient()I
 PLcom/android/server/biometrics/BiometricServiceBase$BiometricServiceListener;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;)V
 PLcom/android/server/biometrics/BiometricServiceBase$BiometricServiceListener;->getWrapperReceiver()Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;
+PLcom/android/server/biometrics/BiometricServiceBase$BiometricServiceListener;->onAuthenticationFailedInternal()V
 PLcom/android/server/biometrics/BiometricServiceBase$BiometricServiceListener;->onAuthenticationSucceededInternal(Z[B)V
-HSPLcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;->onTaskStackChanged()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+HSPLcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/BiometricServiceBase$1;)V
+HPLcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;->onTaskStackChanged()V
+PLcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;II[BZLjava/lang/String;[II)V
+PLcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;->notifyUserActivity()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$H;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIZLjava/lang/String;Ljava/util/List;Lcom/android/server/biometrics/BiometricUtils;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;->doTemplateCleanup()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;->getUnknownHALTemplates()Ljava/util/List;
 HSPLcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;->handleEnumeratedTemplate(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;->onEnumerationResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)Z
+HPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$1;-><init>(Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;)V
 PLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$1;->sendResult(Landroid/os/Bundle;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$2;->run()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$2;-><init>(Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;)V
+PLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$2;->run()V
 HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->binderDied()V
-PLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->sendLockoutReset()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->access$1200(Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;)V
+PLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->binderDied()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->releaseWakelock()V
+HSPLcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;->sendLockoutReset()V
+PLcom/android/server/biometrics/BiometricServiceBase$PerformanceStats;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+HSPLcom/android/server/biometrics/BiometricServiceBase$ResetClientStateRunnable;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;)V
+HSPLcom/android/server/biometrics/BiometricServiceBase$ResetClientStateRunnable;-><init>(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/BiometricServiceBase$1;)V
 PLcom/android/server/biometrics/BiometricServiceBase$ResetClientStateRunnable;->run()V
 HSPLcom/android/server/biometrics/BiometricServiceBase;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->authenticateInternal(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->authenticateInternal(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;III)V
+PLcom/android/server/biometrics/BiometricServiceBase;->access$1000(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/ClientMonitor;Z)V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->access$1100(Lcom/android/server/biometrics/BiometricServiceBase;)Landroid/os/PowerManager;
+PLcom/android/server/biometrics/BiometricServiceBase;->access$1300(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->access$200(Lcom/android/server/biometrics/BiometricServiceBase;Ljava/lang/String;)Z
+PLcom/android/server/biometrics/BiometricServiceBase;->access$300(Lcom/android/server/biometrics/BiometricServiceBase;)Lcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;
+PLcom/android/server/biometrics/BiometricServiceBase;->access$400(Lcom/android/server/biometrics/BiometricServiceBase;)Landroid/app/IActivityTaskManager;
+PLcom/android/server/biometrics/BiometricServiceBase;->access$500(Lcom/android/server/biometrics/BiometricServiceBase;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->access$600(Lcom/android/server/biometrics/BiometricServiceBase;)Lcom/android/server/biometrics/BiometricServiceBase$PerformanceStats;
+HPLcom/android/server/biometrics/BiometricServiceBase;->access$700(Lcom/android/server/biometrics/BiometricServiceBase;)Lcom/android/server/biometrics/ClientMonitor;
+PLcom/android/server/biometrics/BiometricServiceBase;->access$702(Lcom/android/server/biometrics/BiometricServiceBase;Lcom/android/server/biometrics/ClientMonitor;)Lcom/android/server/biometrics/ClientMonitor;
+HPLcom/android/server/biometrics/BiometricServiceBase;->access$800(Lcom/android/server/biometrics/BiometricServiceBase;)Ljava/lang/Runnable;
+PLcom/android/server/biometrics/BiometricServiceBase;->access$900(Lcom/android/server/biometrics/BiometricServiceBase;)Lcom/android/server/biometrics/ClientMonitor;
+HSPLcom/android/server/biometrics/BiometricServiceBase;->addLockoutResetCallback(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->authenticateInternal(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->authenticateInternal(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;III)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->canUseBiometric(Ljava/lang/String;ZIII)Z
-HSPLcom/android/server/biometrics/BiometricServiceBase;->cancelAuthenticationInternal(Landroid/os/IBinder;Ljava/lang/String;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->cancelAuthenticationInternal(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->cancelAuthenticationInternal(Landroid/os/IBinder;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->cancelAuthenticationInternal(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/BiometricServiceBase;->cancelEnrollmentInternal(Landroid/os/IBinder;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->checkPermission(Ljava/lang/String;)V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->clearEnumerateState()V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->doTemplateCleanupForUser(I)V
+PLcom/android/server/biometrics/BiometricServiceBase;->enrollInternal(Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;I)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->enumerateInternal(Lcom/android/server/biometrics/EnumerateClient;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->enumerateUser(I)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->getAuthenticatorId(Ljava/lang/String;)J
 HSPLcom/android/server/biometrics/BiometricServiceBase;->getCurrentClient()Lcom/android/server/biometrics/ClientMonitor;
+HSPLcom/android/server/biometrics/BiometricServiceBase;->getEffectiveUserId(I)I
 HSPLcom/android/server/biometrics/BiometricServiceBase;->getUserOrWorkProfileId(Ljava/lang/String;I)I
-HSPLcom/android/server/biometrics/BiometricServiceBase;->handleAcquired(JII)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->handleAcquired(JII)V
 PLcom/android/server/biometrics/BiometricServiceBase;->handleAuthenticated(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;Ljava/util/ArrayList;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->handleEnrollResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->handleEnumerate(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->handleError(JII)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->handleError(JII)V
+PLcom/android/server/biometrics/BiometricServiceBase;->handleRemoved(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/biometrics/BiometricServiceBase;->isCurrentUserOrProfile(I)Z
+HPLcom/android/server/biometrics/BiometricServiceBase;->isCurrentUserOrProfile(I)Z
 PLcom/android/server/biometrics/BiometricServiceBase;->isForegroundActivity(II)Z
-HSPLcom/android/server/biometrics/BiometricServiceBase;->isRestricted()Z
+HSPLcom/android/server/biometrics/BiometricServiceBase;->isKeyguard(Ljava/lang/String;)Z
+PLcom/android/server/biometrics/BiometricServiceBase;->isRestricted()Z
 HSPLcom/android/server/biometrics/BiometricServiceBase;->isWorkProfile(I)Z
-HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$addLockoutResetCallback$7$BiometricServiceBase(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$authenticateInternal$2$BiometricServiceBase(JLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;Ljava/lang/String;)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$cancelAuthenticationInternal$3$BiometricServiceBase(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$enumerateInternal$6$BiometricServiceBase(Lcom/android/server/biometrics/EnumerateClient;)V
-PLcom/android/server/biometrics/BiometricServiceBase;->lambda$setActiveUserInternal$4$BiometricServiceBase(I)V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$addLockoutResetCallback$8$BiometricServiceBase(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->lambda$authenticateInternal$3$BiometricServiceBase(JLcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->lambda$cancelAuthenticationInternal$4$BiometricServiceBase(Landroid/os/IBinder;Z)V
+PLcom/android/server/biometrics/BiometricServiceBase;->lambda$cancelEnrollmentInternal$2$BiometricServiceBase(Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->lambda$enrollInternal$1$BiometricServiceBase(Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;)V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->lambda$enumerateInternal$7$BiometricServiceBase(Lcom/android/server/biometrics/EnumerateClient;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->lambda$removeInternal$6$BiometricServiceBase(Lcom/android/server/biometrics/RemovalClient;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->lambda$serviceDied$0$BiometricServiceBase()V
+HPLcom/android/server/biometrics/BiometricServiceBase;->lambda$setActiveUserInternal$5$BiometricServiceBase(I)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->listenForUserSwitches()V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->loadAuthenticatorIds()V
-PLcom/android/server/biometrics/BiometricServiceBase;->notifyLockoutResetMonitors()V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->notifyLockoutResetMonitors()V
+HSPLcom/android/server/biometrics/BiometricServiceBase;->onStart()V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->removeClient(Lcom/android/server/biometrics/ClientMonitor;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->removeInternal(Lcom/android/server/biometrics/RemovalClient;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->removeLockoutResetCallback(Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;)V
+PLcom/android/server/biometrics/BiometricServiceBase;->serviceDied(J)V
 PLcom/android/server/biometrics/BiometricServiceBase;->setActiveUserInternal(I)V
-HSPLcom/android/server/biometrics/BiometricServiceBase;->startAuthentication(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/BiometricServiceBase;->startAuthentication(Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;Ljava/lang/String;)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->startCleanupUnknownHALTemplates()V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->startClient(Lcom/android/server/biometrics/ClientMonitor;Z)V
 HSPLcom/android/server/biometrics/BiometricServiceBase;->startCurrentClient(I)V
+PLcom/android/server/biometrics/BiometricServiceBase;->userActivity()V
+HSPLcom/android/server/biometrics/BiometricStrengthController;-><clinit>()V
+HSPLcom/android/server/biometrics/BiometricStrengthController;-><init>(Lcom/android/server/biometrics/BiometricService;)V
+HSPLcom/android/server/biometrics/BiometricStrengthController;->getIdToStrengthMap()Ljava/util/Map;
+HSPLcom/android/server/biometrics/BiometricStrengthController;->startListening()V
+HSPLcom/android/server/biometrics/BiometricStrengthController;->updateStrengths()V
+HSPLcom/android/server/biometrics/BiometricUserState$1;-><init>(Lcom/android/server/biometrics/BiometricUserState;)V
+PLcom/android/server/biometrics/BiometricUserState$1;->run()V
 HSPLcom/android/server/biometrics/BiometricUserState;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/biometrics/BiometricUserState;->addBiometric(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
 HSPLcom/android/server/biometrics/BiometricUserState;->getBiometrics()Ljava/util/List;
+HSPLcom/android/server/biometrics/BiometricUserState;->getFileForUser(I)Ljava/io/File;
+PLcom/android/server/biometrics/BiometricUserState;->getUniqueName()Ljava/lang/String;
+PLcom/android/server/biometrics/BiometricUserState;->isUnique(Ljava/lang/String;)Z
 HSPLcom/android/server/biometrics/BiometricUserState;->parseStateLocked(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/biometrics/BiometricUserState;->readStateSyncLocked()V
-HSPLcom/android/server/biometrics/ClientMonitor;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Metrics;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIZLjava/lang/String;I)V
+PLcom/android/server/biometrics/BiometricUserState;->removeBiometric(I)V
+PLcom/android/server/biometrics/BiometricUserState;->renameBiometric(ILjava/lang/CharSequence;)V
+PLcom/android/server/biometrics/BiometricUserState;->scheduleWriteStateLocked()V
+HSPLcom/android/server/biometrics/ClientMonitor;-><clinit>()V
+HSPLcom/android/server/biometrics/ClientMonitor;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIZLjava/lang/String;I)V
+PLcom/android/server/biometrics/ClientMonitor;->binderDied()V
+HPLcom/android/server/biometrics/ClientMonitor;->blacklistContains(II)Z
 HSPLcom/android/server/biometrics/ClientMonitor;->destroy()V
-HSPLcom/android/server/biometrics/ClientMonitor;->finalize()V
+HPLcom/android/server/biometrics/ClientMonitor;->finalize()V
+PLcom/android/server/biometrics/ClientMonitor;->getAcquireIgnorelist()[I
+PLcom/android/server/biometrics/ClientMonitor;->getAcquireVendorIgnorelist()[I
+PLcom/android/server/biometrics/ClientMonitor;->getContext()Landroid/content/Context;
 HSPLcom/android/server/biometrics/ClientMonitor;->getCookie()I
-HSPLcom/android/server/biometrics/ClientMonitor;->getLogTag()Ljava/lang/String;
-HSPLcom/android/server/biometrics/ClientMonitor;->onAcquired(II)Z
-HSPLcom/android/server/biometrics/ClientMonitor;->onError(JII)Z
+HSPLcom/android/server/biometrics/ClientMonitor;->getDaemonWrapper()Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
+PLcom/android/server/biometrics/ClientMonitor;->getGroupId()I
+PLcom/android/server/biometrics/ClientMonitor;->getHalDeviceId()J
+PLcom/android/server/biometrics/ClientMonitor;->getIsRestricted()Z
+PLcom/android/server/biometrics/ClientMonitor;->getListener()Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;
+PLcom/android/server/biometrics/ClientMonitor;->getLogTag()Ljava/lang/String;
+HSPLcom/android/server/biometrics/ClientMonitor;->getOwnerString()Ljava/lang/String;
+HSPLcom/android/server/biometrics/ClientMonitor;->getTargetUserId()I
+PLcom/android/server/biometrics/ClientMonitor;->getToken()Landroid/os/IBinder;
+PLcom/android/server/biometrics/ClientMonitor;->isAlreadyDone()Z
+HPLcom/android/server/biometrics/ClientMonitor;->onAcquired(II)Z
+HPLcom/android/server/biometrics/ClientMonitor;->onError(JII)Z
+PLcom/android/server/biometrics/ClientMonitor;->vibrateError()V
+PLcom/android/server/biometrics/ClientMonitor;->vibrateSuccess()V
+PLcom/android/server/biometrics/EnrollClient;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;II[BZLjava/lang/String;Lcom/android/server/biometrics/BiometricUtils;[II)V
+PLcom/android/server/biometrics/EnrollClient;->onEnrollResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)Z
+PLcom/android/server/biometrics/EnrollClient;->sendEnrollResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)Z
+PLcom/android/server/biometrics/EnrollClient;->start()I
+PLcom/android/server/biometrics/EnrollClient;->statsAction()I
+HSPLcom/android/server/biometrics/EnumerateClient;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIZLjava/lang/String;)V
 HSPLcom/android/server/biometrics/EnumerateClient;->start()I
-HSPLcom/android/server/biometrics/LoggableMonitor;->logOnAcquired(III)V
-PLcom/android/server/biometrics/LoggableMonitor;->logOnAuthenticated(ZZIZ)V
-HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$3I9ge5BoesXZUovbayCOCR754fc;->run()V
+HSPLcom/android/server/biometrics/LoggableMonitor;-><init>()V
+PLcom/android/server/biometrics/LoggableMonitor;->isCryptoOperation()Z
+HPLcom/android/server/biometrics/LoggableMonitor;->logOnAcquired(Landroid/content/Context;III)V
+HPLcom/android/server/biometrics/LoggableMonitor;->logOnAuthenticated(Landroid/content/Context;ZZIZ)V
+PLcom/android/server/biometrics/LoggableMonitor;->logOnEnrolled(IJZ)V
+HPLcom/android/server/biometrics/LoggableMonitor;->logOnError(Landroid/content/Context;III)V
+PLcom/android/server/biometrics/LoggableMonitor;->statsClient()I
+PLcom/android/server/biometrics/RemovalClient;-><init>(Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIIZLjava/lang/String;Lcom/android/server/biometrics/BiometricUtils;)V
+PLcom/android/server/biometrics/RemovalClient;->onRemoved(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)Z
+PLcom/android/server/biometrics/RemovalClient;->sendRemoved(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)Z
+PLcom/android/server/biometrics/RemovalClient;->start()I
+HSPLcom/android/server/biometrics/SensorConfig;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/biometrics/Utils;->biometricConstantsToBiometricManager(I)I
+PLcom/android/server/biometrics/Utils;->combineAuthenticatorBundles(Landroid/os/Bundle;)V
+PLcom/android/server/biometrics/Utils;->getAuthenticationTypeForResult(I)I
+PLcom/android/server/biometrics/Utils;->getPublicBiometricStrength(I)I
+HPLcom/android/server/biometrics/Utils;->getPublicBiometricStrength(Landroid/os/Bundle;)I
+PLcom/android/server/biometrics/Utils;->isAtLeastStrength(II)Z
+PLcom/android/server/biometrics/Utils;->isBiometricAllowed(Landroid/os/Bundle;)Z
+HPLcom/android/server/biometrics/Utils;->isDebugEnabled(Landroid/content/Context;I)Z
+PLcom/android/server/biometrics/Utils;->isDeviceCredentialAllowed(I)Z
+PLcom/android/server/biometrics/Utils;->isDeviceCredentialAllowed(Landroid/os/Bundle;)Z
+HPLcom/android/server/biometrics/Utils;->isValidAuthenticatorConfig(I)Z
+PLcom/android/server/biometrics/Utils;->isValidAuthenticatorConfig(Landroid/os/Bundle;)Z
+HPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$7DzDQwoPfgYi40WuB8Xi0hA3qVQ;-><init>(Lcom/android/server/biometrics/face/FaceService$1;JII)V
+HPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$7DzDQwoPfgYi40WuB8Xi0hA3qVQ;->run()V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$81olYJI06zsG8LvXV_gD76jaNyg;-><init>(Lcom/android/server/biometrics/face/FaceService$1;Ljava/util/ArrayList;J)V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$81olYJI06zsG8LvXV_gD76jaNyg;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$Dg7kqAVO92T8FbodjRCfn9vSkto;-><init>(Lcom/android/server/biometrics/face/FaceService$1;IIJI)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$Dg7kqAVO92T8FbodjRCfn9vSkto;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$GcU4ZG1fdDLhKvSxuMwfPargEnI;-><init>(Lcom/android/server/biometrics/face/FaceService$1;IJLjava/util/ArrayList;)V
+HPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$GcU4ZG1fdDLhKvSxuMwfPargEnI;->run()V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$OiHHyHFXrIcrZYUfSsf-E2as1qE;-><init>(Lcom/android/server/biometrics/face/FaceService$1;J)V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$OiHHyHFXrIcrZYUfSsf-E2as1qE;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$jaJb2y4UkoXOtV5wJimfIPNA_PM;-><init>(Lcom/android/server/biometrics/face/FaceService$1;Ljava/util/ArrayList;J)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$jaJb2y4UkoXOtV5wJimfIPNA_PM;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$s3kBxUsmTmDZC9YLbT5yPR3KOWo;-><init>(Lcom/android/server/biometrics/face/FaceService$1;JII)V
+HPLcom/android/server/biometrics/face/-$$Lambda$FaceService$1$s3kBxUsmTmDZC9YLbT5yPR3KOWo;->run()V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$A0dfsVDvPu3BDJsON7widXUriSs;-><init>(Lcom/android/server/biometrics/face/FaceService;)V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$A0dfsVDvPu3BDJsON7widXUriSs;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$1ZJGnsaJl1du-I_XjU-JKzIy49Q;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;ILjava/lang/String;I[BZLandroid/hardware/face/IFaceServiceReceiver;)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$1ZJGnsaJl1du-I_XjU-JKzIy49Q;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$6Efp5LtXdV1OgyOr4AaGf19hmLs;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;ILjava/lang/String;ILandroid/hardware/face/IFaceServiceReceiver;)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$6Efp5LtXdV1OgyOr4AaGf19hmLs;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$kw0BBGgTrFveHiSJWRbNG8sygqA;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;[B)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$kw0BBGgTrFveHiSJWRbNG8sygqA;->run()V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$oUY0TN9T4s4roMpe33Oc2nS7uzI;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$oUY0TN9T4s4roMpe33Oc2nS7uzI;->run()V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$rveb67MoYJ0egfY6LL-l05KvUz8;-><init>(Lcom/android/server/biometrics/face/FaceService;)V
+HSPLcom/android/server/biometrics/face/-$$Lambda$FaceService$rveb67MoYJ0egfY6LL-l05KvUz8;->run()V
+HSPLcom/android/server/biometrics/face/FaceAuthenticator;-><init>(Landroid/hardware/face/IFaceService;)V
+PLcom/android/server/biometrics/face/FaceAuthenticator;->cancelAuthenticationFromService(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/face/FaceAuthenticator;->hasEnrolledTemplates(ILjava/lang/String;)Z
+PLcom/android/server/biometrics/face/FaceAuthenticator;->isHardwareDetected(Ljava/lang/String;)Z
+PLcom/android/server/biometrics/face/FaceAuthenticator;->prepareForAuthentication(ZLandroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiverInternal;Ljava/lang/String;IIII)V
+PLcom/android/server/biometrics/face/FaceAuthenticator;->resetLockout([B)V
+PLcom/android/server/biometrics/face/FaceAuthenticator;->setActiveUser(I)V
+PLcom/android/server/biometrics/face/FaceAuthenticator;->startPreparedClient(I)V
+HSPLcom/android/server/biometrics/face/FaceConstants;-><init>()V
+PLcom/android/server/biometrics/face/FaceConstants;->acquireVendorCode()I
+PLcom/android/server/biometrics/face/FaceConstants;->actionBiometricAuth()I
+PLcom/android/server/biometrics/face/FaceConstants;->actionBiometricEnroll()I
+HPLcom/android/server/biometrics/face/FaceConstants;->logTag()Ljava/lang/String;
+PLcom/android/server/biometrics/face/FaceConstants;->tagAuthToken()Ljava/lang/String;
+PLcom/android/server/biometrics/face/FaceConstants;->tagHalDied()Ljava/lang/String;
+HSPLcom/android/server/biometrics/face/FaceService$1;-><init>(Lcom/android/server/biometrics/face/FaceService;)V
+HPLcom/android/server/biometrics/face/FaceService$1;->lambda$onAcquired$1$FaceService$1(JII)V
+PLcom/android/server/biometrics/face/FaceService$1;->lambda$onAuthenticated$2$FaceService$1(IJLjava/util/ArrayList;)V
+PLcom/android/server/biometrics/face/FaceService$1;->lambda$onEnrollResult$0$FaceService$1(IIJI)V
+HSPLcom/android/server/biometrics/face/FaceService$1;->lambda$onEnumerate$5$FaceService$1(Ljava/util/ArrayList;J)V
+PLcom/android/server/biometrics/face/FaceService$1;->lambda$onError$3$FaceService$1(JII)V
+HSPLcom/android/server/biometrics/face/FaceService$1;->lambda$onLockoutChanged$6$FaceService$1(J)V
+PLcom/android/server/biometrics/face/FaceService$1;->lambda$onRemoved$4$FaceService$1(Ljava/util/ArrayList;J)V
+HPLcom/android/server/biometrics/face/FaceService$1;->onAcquired(JIII)V
+PLcom/android/server/biometrics/face/FaceService$1;->onAuthenticated(JIILjava/util/ArrayList;)V
+HSPLcom/android/server/biometrics/face/FaceService$1;->onEnumerate(JLjava/util/ArrayList;I)V
+PLcom/android/server/biometrics/face/FaceService$1;->onError(JIII)V
+HSPLcom/android/server/biometrics/face/FaceService$1;->onLockoutChanged(J)V
+HSPLcom/android/server/biometrics/face/FaceService$2;-><init>(Lcom/android/server/biometrics/face/FaceService;)V
+PLcom/android/server/biometrics/face/FaceService$2;->authenticate(JI)I
+PLcom/android/server/biometrics/face/FaceService$2;->cancel()I
+PLcom/android/server/biometrics/face/FaceService$2;->enroll([BIILjava/util/ArrayList;)I
+HSPLcom/android/server/biometrics/face/FaceService$2;->enumerate()I
+PLcom/android/server/biometrics/face/FaceService$2;->remove(II)I
+HPLcom/android/server/biometrics/face/FaceService$2;->resetLockout([B)V
+HPLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;-><init>(JJZII)V
+HPLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;-><init>(JJZIII)V
+PLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;->access$000(Lcom/android/server/biometrics/face/FaceService$AuthenticationEvent;)Z
+PLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;->access$100(Lcom/android/server/biometrics/face/FaceService$AuthenticationEvent;)J
+PLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;->access$200(Lcom/android/server/biometrics/face/FaceService$AuthenticationEvent;)I
+HPLcom/android/server/biometrics/face/FaceService$AuthenticationEvent;->toString(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/biometrics/face/FaceService$BiometricPromptServiceListenerImpl;-><init>(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;)V
+PLcom/android/server/biometrics/face/FaceService$BiometricPromptServiceListenerImpl;->onAcquired(JII)V
+PLcom/android/server/biometrics/face/FaceService$BiometricPromptServiceListenerImpl;->onError(JIII)V
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;-><init>(Lcom/android/server/biometrics/face/FaceService;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->getAcquireIgnorelist()[I
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->onAcquired(II)Z
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->onAuthenticated(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;ZLjava/util/ArrayList;)Z
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->onError(JII)Z
+PLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->shouldFrameworkHandleLockout()Z
+HPLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->statsModality()I
+PLcom/android/server/biometrics/face/FaceService$FaceAuthClient;->wasUserDetected()Z
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;II[BZLjava/lang/String;[II)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;->getAcquireIgnorelist()[I
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;->getAcquireVendorIgnorelist()[I
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;->shouldVibrate()Z
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;->statsModality()I
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$2;-><init>(Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIIZLjava/lang/String;Lcom/android/server/biometrics/BiometricUtils;)V
+HSPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;-><init>(Lcom/android/server/biometrics/face/FaceService;)V
+HSPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;-><init>(Lcom/android/server/biometrics/face/FaceService;Lcom/android/server/biometrics/face/FaceService$1;)V
+HSPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->addLockoutResetCallback(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+HPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->authenticate(Landroid/os/IBinder;JILandroid/hardware/face/IFaceServiceReceiver;ILjava/lang/String;)V
+HPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->cancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->cancelAuthenticationFromService(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->cancelEnrollment(Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->enroll(ILandroid/os/IBinder;[BLandroid/hardware/face/IFaceServiceReceiver;Ljava/lang/String;[I)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->generateChallenge(Landroid/os/IBinder;)J
+HPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->getAuthenticatorId(Ljava/lang/String;)J
+HPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->getEnrolledFaces(ILjava/lang/String;)Ljava/util/List;
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->getFeature(IILandroid/hardware/face/IFaceServiceReceiver;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->getFirstTemplateForUser(I)I
+HSPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->hasEnrolledFaces(ILjava/lang/String;)Z
+HSPLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->isHardwareDetected(Ljava/lang/String;)Z
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->lambda$getFeature$3$FaceService$FaceServiceWrapper(ILjava/lang/String;ILandroid/hardware/face/IFaceServiceReceiver;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->lambda$resetLockout$1$FaceService$FaceServiceWrapper([B)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->lambda$revokeChallenge$0$FaceService$FaceServiceWrapper(Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->lambda$setFeature$2$FaceService$FaceServiceWrapper(ILjava/lang/String;I[BZLandroid/hardware/face/IFaceServiceReceiver;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->prepareForAuthentication(ZLandroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiverInternal;Ljava/lang/String;IIII)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->remove(Landroid/os/IBinder;IILandroid/hardware/face/IFaceServiceReceiver;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->resetLockout([B)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->revokeChallenge(Landroid/os/IBinder;)I
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->setActiveUser(I)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->setFeature(IIZ[BLandroid/hardware/face/IFaceServiceReceiver;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;->startPreparedClient(I)V
+HPLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;-><init>(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/face/IFaceServiceReceiver;)V
+PLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onAcquired(JII)V
+PLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onAuthenticationFailed(J)V
+PLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onAuthenticationSucceeded(JLandroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onEnrollResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+HPLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onError(JIII)V
+PLcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;->onRemoved(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+HSPLcom/android/server/biometrics/face/FaceService$UsageStats;-><init>(Lcom/android/server/biometrics/face/FaceService;Landroid/content/Context;)V
+HPLcom/android/server/biometrics/face/FaceService$UsageStats;->addEvent(Lcom/android/server/biometrics/face/FaceService$AuthenticationEvent;)V
+HPLcom/android/server/biometrics/face/FaceService$UsageStats;->print(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/biometrics/face/FaceService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/biometrics/face/FaceService;->access$1000(Lcom/android/server/biometrics/face/FaceService;Landroid/os/IBinder;)J
+HPLcom/android/server/biometrics/face/FaceService;->access$10001(Lcom/android/server/biometrics/face/FaceService;JII)V
+PLcom/android/server/biometrics/face/FaceService;->access$10101(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$10200(Lcom/android/server/biometrics/face/FaceService;)Ljava/util/Map;
+PLcom/android/server/biometrics/face/FaceService;->access$1100(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$1200(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$1300(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$1400(Lcom/android/server/biometrics/face/FaceService;)Z
+PLcom/android/server/biometrics/face/FaceService;->access$1500(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
+PLcom/android/server/biometrics/face/FaceService;->access$1600(Lcom/android/server/biometrics/face/FaceService;)J
+PLcom/android/server/biometrics/face/FaceService;->access$1700(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$1800(Lcom/android/server/biometrics/face/FaceService;)[I
+PLcom/android/server/biometrics/face/FaceService;->access$1900(Lcom/android/server/biometrics/face/FaceService;)[I
+PLcom/android/server/biometrics/face/FaceService;->access$2000(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$2100(Lcom/android/server/biometrics/face/FaceService;Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$2200(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$2300(Lcom/android/server/biometrics/face/FaceService;Landroid/os/IBinder;)V
+HPLcom/android/server/biometrics/face/FaceService;->access$2400(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/face/FaceService;->access$2500(Lcom/android/server/biometrics/face/FaceService;)Z
+PLcom/android/server/biometrics/face/FaceService;->access$2600(Lcom/android/server/biometrics/face/FaceService;)J
+PLcom/android/server/biometrics/face/FaceService;->access$2700(Lcom/android/server/biometrics/face/FaceService;)I
+HPLcom/android/server/biometrics/face/FaceService;->access$2800(Lcom/android/server/biometrics/face/FaceService;Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$2900(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$300(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/face/FaceService$UsageStats;
+PLcom/android/server/biometrics/face/FaceService;->access$3000(Lcom/android/server/biometrics/face/FaceService;)J
+PLcom/android/server/biometrics/face/FaceService;->access$3100(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$3200(Lcom/android/server/biometrics/face/FaceService;Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;III)V
+PLcom/android/server/biometrics/face/FaceService;->access$3300(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$3400(Lcom/android/server/biometrics/face/FaceService;I)V
+HPLcom/android/server/biometrics/face/FaceService;->access$3500(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/face/FaceService;->access$3600(Lcom/android/server/biometrics/face/FaceService;Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$3700(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$3800(Lcom/android/server/biometrics/face/FaceService;Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/face/FaceService;->access$3900(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$400(Lcom/android/server/biometrics/face/FaceService;)[I
+PLcom/android/server/biometrics/face/FaceService;->access$4000(Lcom/android/server/biometrics/face/FaceService;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$4100(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$4200(Lcom/android/server/biometrics/face/FaceService;)Z
+PLcom/android/server/biometrics/face/FaceService;->access$4300(Lcom/android/server/biometrics/face/FaceService;)J
+PLcom/android/server/biometrics/face/FaceService;->access$4400(Lcom/android/server/biometrics/face/FaceService;Lcom/android/server/biometrics/RemovalClient;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$4900(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HPLcom/android/server/biometrics/face/FaceService;->access$500(Lcom/android/server/biometrics/face/FaceService;)[I
+HSPLcom/android/server/biometrics/face/FaceService;->access$5001(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+PLcom/android/server/biometrics/face/FaceService;->access$5100(Lcom/android/server/biometrics/face/FaceService;Ljava/io/FileDescriptor;[Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$5200(Lcom/android/server/biometrics/face/FaceService;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$5300(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$5400(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;ZIII)Z
+HSPLcom/android/server/biometrics/face/FaceService;->access$5500(Lcom/android/server/biometrics/face/FaceService;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLcom/android/server/biometrics/face/FaceService;->access$5600(Lcom/android/server/biometrics/face/FaceService;)J
+PLcom/android/server/biometrics/face/FaceService;->access$6100(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$6200(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;ZIII)Z
+HSPLcom/android/server/biometrics/face/FaceService;->access$6300(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$6400(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;ZIII)Z
+HPLcom/android/server/biometrics/face/FaceService;->access$6500(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)J
+PLcom/android/server/biometrics/face/FaceService;->access$6600(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$6700(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$6800(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$6900(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$7000(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->access$7100(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$7300(Lcom/android/server/biometrics/face/FaceService;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+PLcom/android/server/biometrics/face/FaceService;->access$7302(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+PLcom/android/server/biometrics/face/FaceService;->access$7400(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$7500(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$7600(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$7700(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$7800(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$7900(Lcom/android/server/biometrics/face/FaceService;)I
+PLcom/android/server/biometrics/face/FaceService;->access$800(Lcom/android/server/biometrics/face/FaceService;)Landroid/app/NotificationManager;
+PLcom/android/server/biometrics/face/FaceService;->access$8000(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/ClientMonitor;
+PLcom/android/server/biometrics/face/FaceService;->access$8100(Lcom/android/server/biometrics/face/FaceService;Landroid/os/IBinder;)I
+PLcom/android/server/biometrics/face/FaceService;->access$8202(Lcom/android/server/biometrics/face/FaceService;Z)Z
+PLcom/android/server/biometrics/face/FaceService;->access$8400(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$8500(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/face/FaceService;->access$8600(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+HSPLcom/android/server/biometrics/face/FaceService;->access$8800(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+HSPLcom/android/server/biometrics/face/FaceService;->access$8902(Lcom/android/server/biometrics/face/FaceService;I)I
+PLcom/android/server/biometrics/face/FaceService;->access$900(Lcom/android/server/biometrics/face/FaceService;Ljava/lang/String;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$9000(Lcom/android/server/biometrics/face/FaceService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+HSPLcom/android/server/biometrics/face/FaceService;->access$9100(Lcom/android/server/biometrics/face/FaceService;)V
+HSPLcom/android/server/biometrics/face/FaceService;->access$9201(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$9301(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$9401(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/face/FaceService;->access$9601(Lcom/android/server/biometrics/face/FaceService;JII)V
+PLcom/android/server/biometrics/face/FaceService;->access$9702(Lcom/android/server/biometrics/face/FaceService;J)J
+PLcom/android/server/biometrics/face/FaceService;->access$9802(Lcom/android/server/biometrics/face/FaceService;I)I
+PLcom/android/server/biometrics/face/FaceService;->access$9901(Lcom/android/server/biometrics/face/FaceService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;Ljava/util/ArrayList;)V
+PLcom/android/server/biometrics/face/FaceService;->checkAppOps(ILjava/lang/String;)Z
+HSPLcom/android/server/biometrics/face/FaceService;->checkUseBiometricPermission()V
+PLcom/android/server/biometrics/face/FaceService;->dumpHal(Ljava/io/FileDescriptor;[Ljava/lang/String;)V
+PLcom/android/server/biometrics/face/FaceService;->dumpInternal(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/biometrics/face/FaceService;->getBiometricUtils()Lcom/android/server/biometrics/BiometricUtils;
+HSPLcom/android/server/biometrics/face/FaceService;->getConstants()Lcom/android/server/biometrics/Constants;
+HSPLcom/android/server/biometrics/face/FaceService;->getDaemonWrapper()Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
+HSPLcom/android/server/biometrics/face/FaceService;->getEnrolledTemplates(I)Ljava/util/List;
+HSPLcom/android/server/biometrics/face/FaceService;->getFaceDaemon()Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLcom/android/server/biometrics/face/FaceService;->getHalDeviceId()J
+HPLcom/android/server/biometrics/face/FaceService;->getLockoutMode()I
+HSPLcom/android/server/biometrics/face/FaceService;->getManageBiometricPermission()Ljava/lang/String;
+HSPLcom/android/server/biometrics/face/FaceService;->getTag()Ljava/lang/String;
+HSPLcom/android/server/biometrics/face/FaceService;->hasEnrolledBiometrics(I)Z
+PLcom/android/server/biometrics/face/FaceService;->hasReachedEnrollmentLimit(I)Z
+HSPLcom/android/server/biometrics/face/FaceService;->lambda$onStart$0$FaceService()V
+HSPLcom/android/server/biometrics/face/FaceService;->lambda$rveb67MoYJ0egfY6LL-l05KvUz8(Lcom/android/server/biometrics/face/FaceService;)Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+HSPLcom/android/server/biometrics/face/FaceService;->notifyClientActiveCallbacks(Z)V
+HSPLcom/android/server/biometrics/face/FaceService;->onStart()V
+HSPLcom/android/server/biometrics/face/FaceService;->removeClient(Lcom/android/server/biometrics/ClientMonitor;)V
+PLcom/android/server/biometrics/face/FaceService;->serviceDied(J)V
+PLcom/android/server/biometrics/face/FaceService;->startGenerateChallenge(Landroid/os/IBinder;)J
+PLcom/android/server/biometrics/face/FaceService;->startRevokeChallenge(Landroid/os/IBinder;)I
+HPLcom/android/server/biometrics/face/FaceService;->statsModality()I
+HSPLcom/android/server/biometrics/face/FaceService;->updateActiveGroup(ILjava/lang/String;)V
+HSPLcom/android/server/biometrics/face/FaceUserState;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/biometrics/face/FaceUserState;->addBiometric(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
+PLcom/android/server/biometrics/face/FaceUserState;->doWriteState()V
+HSPLcom/android/server/biometrics/face/FaceUserState;->getBiometricFile()Ljava/lang/String;
+HSPLcom/android/server/biometrics/face/FaceUserState;->getBiometricsTag()Ljava/lang/String;
+HSPLcom/android/server/biometrics/face/FaceUserState;->getCopy(Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/biometrics/face/FaceUserState;->getNameTemplateResource()I
+HSPLcom/android/server/biometrics/face/FaceUserState;->parseBiometricsLocked(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/biometrics/face/FaceUtils;-><clinit>()V
+HSPLcom/android/server/biometrics/face/FaceUtils;-><init>()V
+PLcom/android/server/biometrics/face/FaceUtils;->addBiometricForUser(Landroid/content/Context;ILandroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
+HSPLcom/android/server/biometrics/face/FaceUtils;->getBiometricsForUser(Landroid/content/Context;I)Ljava/util/List;
+HSPLcom/android/server/biometrics/face/FaceUtils;->getInstance()Lcom/android/server/biometrics/face/FaceUtils;
+HSPLcom/android/server/biometrics/face/FaceUtils;->getStateForUser(Landroid/content/Context;I)Lcom/android/server/biometrics/face/FaceUserState;
+PLcom/android/server/biometrics/face/FaceUtils;->getUniqueName(Landroid/content/Context;I)Ljava/lang/CharSequence;
+PLcom/android/server/biometrics/face/FaceUtils;->removeBiometricForUser(Landroid/content/Context;II)V
+HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$3I9ge5BoesXZUovbayCOCR754fc;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;IIJI)V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$3I9ge5BoesXZUovbayCOCR754fc;->run()V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7-RPI0PwwgOAZtsXq2j72pQWwMc;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;IIJI)V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7-RPI0PwwgOAZtsXq2j72pQWwMc;->run()V
+HPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7nMWCt41OE3k8ihjPNPqB0O8POU;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;IIJLjava/util/ArrayList;)V
 PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7nMWCt41OE3k8ihjPNPqB0O8POU;->run()V
-HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$N1Y2Zwqq-x5yDKQsDTj2KQ5q7g4;->run()V
-HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$cO88ecWuvWIBecLAEccxr5yeJK4;->run()V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$BJntfNoFTejPmUJ_45WFIwis8Nw;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;IIJI)V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$BJntfNoFTejPmUJ_45WFIwis8Nw;->run()V
+HPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$N1Y2Zwqq-x5yDKQsDTj2KQ5q7g4;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;JII)V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$N1Y2Zwqq-x5yDKQsDTj2KQ5q7g4;->run()V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$cO88ecWuvWIBecLAEccxr5yeJK4;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$1;JII)V
+PLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$cO88ecWuvWIBecLAEccxr5yeJK4;->run()V
+HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$YOMIOLvco2SvXVeJIulOSVKdX7A;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
 HSPLcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$YOMIOLvco2SvXVeJIulOSVKdX7A;->run()V
-PLcom/android/server/biometrics/fingerprint/FingerprintMetrics;->actionBiometricAuth()I
-HSPLcom/android/server/biometrics/fingerprint/FingerprintMetrics;->logTag()Ljava/lang/String;
-HSPLcom/android/server/biometrics/fingerprint/FingerprintMetrics;->tagAuthToken()Ljava/lang/String;
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onAcquired$1$FingerprintService$1(JII)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;-><init>(Landroid/hardware/fingerprint/IFingerprintService;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->cancelAuthenticationFromService(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->hasEnrolledTemplates(ILjava/lang/String;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->isHardwareDetected(Ljava/lang/String;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->prepareForAuthentication(ZLandroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiverInternal;Ljava/lang/String;IIII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->resetLockout([B)V
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->setActiveUser(I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;->startPreparedClient(I)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintConstants;-><init>()V
+PLcom/android/server/biometrics/fingerprint/FingerprintConstants;->acquireVendorCode()I
+PLcom/android/server/biometrics/fingerprint/FingerprintConstants;->actionBiometricAuth()I
+PLcom/android/server/biometrics/fingerprint/FingerprintConstants;->actionBiometricEnroll()I
+PLcom/android/server/biometrics/fingerprint/FingerprintConstants;->logTag()Ljava/lang/String;
+PLcom/android/server/biometrics/fingerprint/FingerprintConstants;->tagAuthToken()Ljava/lang/String;
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onAcquired$1$FingerprintService$1(JII)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onAuthenticated$2$FingerprintService$1(IIJLjava/util/ArrayList;)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onEnumerate$5$FingerprintService$1(IIJI)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onError$3$FingerprintService$1(JII)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onAcquired(JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onEnrollResult$0$FingerprintService$1(IIJI)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onEnumerate$5$FingerprintService$1(IIJI)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onError$3$FingerprintService$1(JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->lambda$onRemoved$4$FingerprintService$1(IIJI)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onAcquired(JII)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onAuthenticated(JIILjava/util/ArrayList;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onEnrollResult(JIII)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onEnumerate(JIII)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onError(JII)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$2;->authenticate(JI)I
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$2;->cancel()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onError(JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$1;->onRemoved(JIII)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$2;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$2;->authenticate(JI)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$2;->cancel()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$2;->enroll([BIILjava/util/ArrayList;)I
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService$2;->enumerate()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$2;->remove(II)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$BiometricPromptServiceListenerImpl;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$BiometricPromptServiceListenerImpl;->onAcquired(JII)V
-PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->handleFailedAttempt()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$BiometricPromptServiceListenerImpl;->onError(JIII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIJZLjava/lang/String;IZ)V
+HPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->handleFailedAttempt()I
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->isFingerprint()Z
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->resetFailedAttempts()V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->shouldFrameworkHandleLockout()Z
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->statsModality()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->shouldFrameworkHandleLockout()Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;->statsModality()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$1;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;Landroid/content/Context;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;II[BZLjava/lang/String;[II)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$1;->shouldVibrate()Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$1;->statsModality()I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$2;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;Landroid/content/Context;Lcom/android/server/biometrics/Constants;Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;JLandroid/os/IBinder;Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;IIIZLjava/lang/String;Lcom/android/server/biometrics/BiometricUtils;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$4;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;IILjava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$4;->run()V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/fingerprint/FingerprintService$1;)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->addLockoutResetCallback(Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->authenticate(Landroid/os/IBinder;JILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->cancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->authenticate(Landroid/os/IBinder;JILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->cancelAuthentication(Landroid/os/IBinder;Ljava/lang/String;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->cancelAuthenticationFromService(Landroid/os/IBinder;Ljava/lang/String;IIIZ)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->cancelEnrollment(Landroid/os/IBinder;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->enroll(Landroid/os/IBinder;[BILandroid/hardware/fingerprint/IFingerprintServiceReceiver;ILjava/lang/String;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->getAuthenticatorId(Ljava/lang/String;)J
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->hasEnrolledFingerprints(ILjava/lang/String;)Z
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->isHardwareDetected(JLjava/lang/String;)Z
+HPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->getEnrolledFingerprints(ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->hasEnrolledFingerprints(ILjava/lang/String;)Z
+HPLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->isHardwareDetected(Ljava/lang/String;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->postEnroll(Landroid/os/IBinder;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->preEnroll(Landroid/os/IBinder;)J
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->prepareForAuthentication(Landroid/os/IBinder;JILandroid/hardware/biometrics/IBiometricServiceReceiverInternal;Ljava/lang/String;IIII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->remove(Landroid/os/IBinder;IIILandroid/hardware/fingerprint/IFingerprintServiceReceiver;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->rename(IILjava/lang/String;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->resetTimeout([B)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->setActiveUser(I)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;->startPreparedClient(I)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$LockoutReceiver;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$LockoutReceiver;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/fingerprint/FingerprintService$1;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$LockoutReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$ResetFailedAttemptsForUserRunnable;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService$ResetFailedAttemptsForUserRunnable;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/fingerprint/FingerprintService$1;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$ResetFailedAttemptsForUserRunnable;->run()V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onAcquired(JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;-><init>(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/fingerprint/IFingerprintServiceReceiver;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onAcquired(JII)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onAuthenticationFailed(J)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onAuthenticationSucceeded(JLandroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onError(JIII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onEnrollResult(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onError(JIII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService$ServiceListenerImpl;->onRemoved(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$000(Lcom/android/server/biometrics/fingerprint/FingerprintService;ZI)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$100(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Landroid/util/SparseIntArray;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1000(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1100(Lcom/android/server/biometrics/fingerprint/FingerprintService;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1300(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1400(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1500(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/os/IBinder;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1600(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1700(Lcom/android/server/biometrics/fingerprint/FingerprintService;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1800(Lcom/android/server/biometrics/fingerprint/FingerprintService;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$1900(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2000(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2100(Lcom/android/server/biometrics/fingerprint/FingerprintService;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2300(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;JLjava/lang/String;III)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2400(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2500(Lcom/android/server/biometrics/fingerprint/FingerprintService;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2600(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$2900(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$300(Lcom/android/server/biometrics/fingerprint/FingerprintService;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3000(Lcom/android/server/biometrics/fingerprint/FingerprintService;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3100(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3300(Lcom/android/server/biometrics/fingerprint/FingerprintService;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3400(Lcom/android/server/biometrics/fingerprint/FingerprintService;Lcom/android/server/biometrics/RemovalClient;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->access$3901(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/IBiometricServiceLockoutResetCallback;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$400(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4000(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/io/FileDescriptor;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4100(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/io/PrintWriter;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4200(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;ZIII)Z
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4300(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4400(Lcom/android/server/biometrics/fingerprint/FingerprintService;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4500(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4600(Lcom/android/server/biometrics/fingerprint/FingerprintService;I)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4700(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4800(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;ZIII)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$4900(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;ZIII)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$500(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/os/IBinder;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$5001(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$5100(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$5200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$5300(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$600(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6200(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6300(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6400(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6500(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6600(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6700(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/BiometricServiceBase$H;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6801(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$6900(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Lcom/android/server/biometrics/ClientMonitor;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$700(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/os/IBinder;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$7001(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$7101(Lcom/android/server/biometrics/fingerprint/FingerprintService;JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$7501(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;Ljava/util/ArrayList;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$7601(Lcom/android/server/biometrics/fingerprint/FingerprintService;JII)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$7701(Lcom/android/server/biometrics/fingerprint/FingerprintService;Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$800(Lcom/android/server/biometrics/fingerprint/FingerprintService;Ljava/lang/String;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->access$900(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->cancelLockoutResetForUser(I)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService;->checkAppOps(ILjava/lang/String;)Z
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->checkUseBiometricPermission()V
+HPLcom/android/server/biometrics/fingerprint/FingerprintService;->checkUseBiometricPermission()V
 PLcom/android/server/biometrics/fingerprint/FingerprintService;->dumpInternal(Ljava/io/PrintWriter;)V
 PLcom/android/server/biometrics/fingerprint/FingerprintService;->dumpProto(Ljava/io/FileDescriptor;)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getBiometricUtils()Lcom/android/server/biometrics/BiometricUtils;
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getConstants()Lcom/android/server/biometrics/Constants;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getDaemonWrapper()Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getEnrolledTemplates(I)Ljava/util/List;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getFingerprintDaemon()Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
 PLcom/android/server/biometrics/fingerprint/FingerprintService;->getHalDeviceId()J
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getLockoutBroadcastPermission()Ljava/lang/String;
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getLockoutMode()I
+HPLcom/android/server/biometrics/fingerprint/FingerprintService;->getLockoutMode()I
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getLockoutResetIntent()Ljava/lang/String;
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->getLockoutResetIntentForUser(I)Landroid/app/PendingIntent;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getManageBiometricPermission()Ljava/lang/String;
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getMetrics()Lcom/android/server/biometrics/Metrics;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->getTag()Ljava/lang/String;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->hasEnrolledBiometrics(I)Z
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->hasReachedEnrollmentLimit(I)Z
+HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->lambda$YOMIOLvco2SvXVeJIulOSVKdX7A(Lcom/android/server/biometrics/fingerprint/FingerprintService;)Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->notifyClientActiveCallbacks(Z)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->onStart()V
-PLcom/android/server/biometrics/fingerprint/FingerprintService;->resetFailedAttemptsForUser(ZI)V
-HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->statsModality()I
+HPLcom/android/server/biometrics/fingerprint/FingerprintService;->resetFailedAttemptsForUser(ZI)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->scheduleLockoutResetForUser(I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->startPostEnroll(Landroid/os/IBinder;)I
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->startPreEnroll(Landroid/os/IBinder;)J
+PLcom/android/server/biometrics/fingerprint/FingerprintService;->statsModality()I
 HSPLcom/android/server/biometrics/fingerprint/FingerprintService;->updateActiveGroup(ILjava/lang/String;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintUserState;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintUserState;->addBiometric(Landroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
+PLcom/android/server/biometrics/fingerprint/FingerprintUserState;->doWriteState()V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUserState;->getBiometricFile()Ljava/lang/String;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUserState;->getBiometricsTag()Ljava/lang/String;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUserState;->getCopy(Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/biometrics/fingerprint/FingerprintUserState;->getNameTemplateResource()I
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUserState;->parseBiometricsLocked(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintUtils;-><clinit>()V
+HSPLcom/android/server/biometrics/fingerprint/FingerprintUtils;-><init>()V
+PLcom/android/server/biometrics/fingerprint/FingerprintUtils;->addBiometricForUser(Landroid/content/Context;ILandroid/hardware/biometrics/BiometricAuthenticator$Identifier;)V
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUtils;->getBiometricsForUser(Landroid/content/Context;I)Ljava/util/List;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUtils;->getInstance()Lcom/android/server/biometrics/fingerprint/FingerprintUtils;
 HSPLcom/android/server/biometrics/fingerprint/FingerprintUtils;->getStateForUser(Landroid/content/Context;I)Lcom/android/server/biometrics/fingerprint/FingerprintUserState;
-PLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;I)V
+PLcom/android/server/biometrics/fingerprint/FingerprintUtils;->getUniqueName(Landroid/content/Context;I)Ljava/lang/CharSequence;
+PLcom/android/server/biometrics/fingerprint/FingerprintUtils;->removeBiometricForUser(Landroid/content/Context;II)V
+PLcom/android/server/biometrics/fingerprint/FingerprintUtils;->renameBiometricForUser(Landroid/content/Context;IILjava/lang/CharSequence;)V
+HSPLcom/android/server/camera/CameraServiceProxy$1;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V
+PLcom/android/server/camera/CameraServiceProxy$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/camera/CameraServiceProxy$2;-><init>(Lcom/android/server/camera/CameraServiceProxy;)V
+HPLcom/android/server/camera/CameraServiceProxy$2;->notifyCameraState(Ljava/lang/String;IILjava/lang/String;I)V
+PLcom/android/server/camera/CameraServiceProxy$2;->pingForUserUpdate()V
+HPLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;-><init>(ILjava/lang/String;I)V
 PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->getDuration()J
-PLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->markCompleted()V
+HPLcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;->markCompleted()V
+PLcom/android/server/camera/CameraServiceProxy$EventWriterTask;-><init>(Lcom/android/server/camera/CameraServiceProxy;Ljava/util/ArrayList;)V
+HPLcom/android/server/camera/CameraServiceProxy$EventWriterTask;->logCameraUsageEvent(Lcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;)V
+HPLcom/android/server/camera/CameraServiceProxy$EventWriterTask;->run()V
+HSPLcom/android/server/camera/CameraServiceProxy;-><clinit>()V
 HSPLcom/android/server/camera/CameraServiceProxy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/camera/CameraServiceProxy;->dumpUsageEvents()V
-HSPLcom/android/server/camera/CameraServiceProxy;->notifyMediaserverLocked(ILjava/util/Set;)Z
+PLcom/android/server/camera/CameraServiceProxy;->access$000(Lcom/android/server/camera/CameraServiceProxy;)Ljava/lang/Object;
+PLcom/android/server/camera/CameraServiceProxy;->access$100(Lcom/android/server/camera/CameraServiceProxy;)Ljava/util/Set;
+PLcom/android/server/camera/CameraServiceProxy;->access$200(Lcom/android/server/camera/CameraServiceProxy;)I
+PLcom/android/server/camera/CameraServiceProxy;->access$300(Lcom/android/server/camera/CameraServiceProxy;I)V
+PLcom/android/server/camera/CameraServiceProxy;->access$400(Lcom/android/server/camera/CameraServiceProxy;I)V
+PLcom/android/server/camera/CameraServiceProxy;->access$500(I)Ljava/lang/String;
+PLcom/android/server/camera/CameraServiceProxy;->access$600(I)Ljava/lang/String;
+HPLcom/android/server/camera/CameraServiceProxy;->access$700(Lcom/android/server/camera/CameraServiceProxy;Ljava/lang/String;IILjava/lang/String;I)V
+PLcom/android/server/camera/CameraServiceProxy;->binderDied()V
+PLcom/android/server/camera/CameraServiceProxy;->cameraFacingToString(I)Ljava/lang/String;
+PLcom/android/server/camera/CameraServiceProxy;->cameraStateToString(I)Ljava/lang/String;
+HPLcom/android/server/camera/CameraServiceProxy;->dumpUsageEvents()V
+HSPLcom/android/server/camera/CameraServiceProxy;->getEnabledUserHandles(I)Ljava/util/Set;
+HSPLcom/android/server/camera/CameraServiceProxy;->notifyCameraserverLocked(ILjava/util/Set;)Z
+PLcom/android/server/camera/CameraServiceProxy;->notifyNfcService(Z)V
+PLcom/android/server/camera/CameraServiceProxy;->notifySwitchWithRetries(I)V
+HSPLcom/android/server/camera/CameraServiceProxy;->notifySwitchWithRetriesLocked(I)V
 HSPLcom/android/server/camera/CameraServiceProxy;->onStart()V
 HSPLcom/android/server/camera/CameraServiceProxy;->onStartUser(I)V
+HSPLcom/android/server/camera/CameraServiceProxy;->switchUserLocked(I)V
 HSPLcom/android/server/camera/CameraServiceProxy;->toArray(Ljava/util/Collection;)[I
-PLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;IILjava/lang/String;I)V
+HPLcom/android/server/camera/CameraServiceProxy;->updateActivityCount(Ljava/lang/String;IILjava/lang/String;I)V
+HSPLcom/android/server/camera/CameraStatsJobService;-><clinit>()V
 PLcom/android/server/camera/CameraStatsJobService;-><init>()V
 PLcom/android/server/camera/CameraStatsJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/camera/CameraStatsJobService;->schedule(Landroid/content/Context;)V
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;)V
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->getPrimaryClip(Ljava/lang/String;)Landroid/content/ClipData;
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->getPrimaryClipDescription(Ljava/lang/String;)Landroid/content/ClipDescription;
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasPrimaryClip(Ljava/lang/String;)Z
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->removePrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;)V
-PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->setPrimaryClip(Landroid/content/ClipData;Ljava/lang/String;)V
+HSPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;)V
+HSPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;-><init>(Lcom/android/server/clipboard/ClipboardService;Lcom/android/server/clipboard/ClipboardService$1;)V
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->addPrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;I)V
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->getPrimaryClip(Ljava/lang/String;I)Landroid/content/ClipData;
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->getPrimaryClipDescription(Ljava/lang/String;I)Landroid/content/ClipDescription;
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasClipboardText(Ljava/lang/String;I)Z
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->hasPrimaryClip(Ljava/lang/String;I)Z
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->removePrimaryClipChangedListener(Landroid/content/IOnPrimaryClipChangedListener;Ljava/lang/String;I)V
+PLcom/android/server/clipboard/ClipboardService$ClipboardImpl;->setPrimaryClip(Landroid/content/ClipData;Ljava/lang/String;I)V
+HPLcom/android/server/clipboard/ClipboardService$ListenerInfo;-><init>(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;)V
+PLcom/android/server/clipboard/ClipboardService$PerUserClipboard;-><init>(Lcom/android/server/clipboard/ClipboardService;I)V
+HSPLcom/android/server/clipboard/ClipboardService;-><clinit>()V
 HSPLcom/android/server/clipboard/ClipboardService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/clipboard/ClipboardService;->addActiveOwnerLocked(ILjava/lang/String;)V
+HPLcom/android/server/clipboard/ClipboardService;->access$100(Lcom/android/server/clipboard/ClipboardService;I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
+HPLcom/android/server/clipboard/ClipboardService;->access$300(Lcom/android/server/clipboard/ClipboardService;Ljava/lang/String;I)I
+HPLcom/android/server/clipboard/ClipboardService;->access$400(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;II)Z
+PLcom/android/server/clipboard/ClipboardService;->access$500(Lcom/android/server/clipboard/ClipboardService;Landroid/content/ClipData;I)V
+HPLcom/android/server/clipboard/ClipboardService;->access$600(Lcom/android/server/clipboard/ClipboardService;I)Z
+PLcom/android/server/clipboard/ClipboardService;->access$700(Lcom/android/server/clipboard/ClipboardService;ILjava/lang/String;)V
+PLcom/android/server/clipboard/ClipboardService;->access$800(Lcom/android/server/clipboard/ClipboardService;Ljava/lang/String;I)I
+HPLcom/android/server/clipboard/ClipboardService;->addActiveOwnerLocked(ILjava/lang/String;)V
+PLcom/android/server/clipboard/ClipboardService;->checkDataOwnerLocked(Landroid/content/ClipData;I)V
 PLcom/android/server/clipboard/ClipboardService;->checkItemOwnerLocked(Landroid/content/ClipData$Item;I)V
-PLcom/android/server/clipboard/ClipboardService;->clipboardAccessAllowed(ILjava/lang/String;I)Z
-PLcom/android/server/clipboard/ClipboardService;->getClipboard(I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
+PLcom/android/server/clipboard/ClipboardService;->checkUriOwnerLocked(Landroid/net/Uri;I)V
+HPLcom/android/server/clipboard/ClipboardService;->clipboardAccessAllowed(ILjava/lang/String;II)Z
+HPLcom/android/server/clipboard/ClipboardService;->getClipboard(I)Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
+HPLcom/android/server/clipboard/ClipboardService;->getIntendingUid(Ljava/lang/String;I)I
+HPLcom/android/server/clipboard/ClipboardService;->getIntendingUserId(Ljava/lang/String;I)I
 PLcom/android/server/clipboard/ClipboardService;->getRelatedProfiles(I)Ljava/util/List;
 PLcom/android/server/clipboard/ClipboardService;->grantItemLocked(Landroid/content/ClipData$Item;ILjava/lang/String;I)V
+PLcom/android/server/clipboard/ClipboardService;->grantUriLocked(Landroid/net/Uri;ILjava/lang/String;I)V
 PLcom/android/server/clipboard/ClipboardService;->hasRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/clipboard/ClipboardService;->isDeviceLocked()Z
+HPLcom/android/server/clipboard/ClipboardService;->isDeviceLocked(I)Z
+PLcom/android/server/clipboard/ClipboardService;->isInternalSysWindowAppWithWindowFocus(Ljava/lang/String;)Z
+PLcom/android/server/clipboard/ClipboardService;->onCleanupUser(I)V
 HSPLcom/android/server/clipboard/ClipboardService;->onStart()V
 PLcom/android/server/clipboard/ClipboardService;->revokeItemLocked(Landroid/content/ClipData$Item;I)V
+PLcom/android/server/clipboard/ClipboardService;->revokeUriLocked(Landroid/net/Uri;I)V
+PLcom/android/server/clipboard/ClipboardService;->revokeUris(Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;)V
 PLcom/android/server/clipboard/ClipboardService;->setPrimaryClipInternal(Landroid/content/ClipData;I)V
-PLcom/android/server/clipboard/ClipboardService;->setPrimaryClipInternal(Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;Landroid/content/ClipData;I)V
+HPLcom/android/server/clipboard/ClipboardService;->setPrimaryClipInternal(Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;Landroid/content/ClipData;I)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$0VKz9ecFqvfFXzRrfaz-Pf5wW2s;-><clinit>()V
 PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$0VKz9ecFqvfFXzRrfaz-Pf5wW2s;-><init>()V
-PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$0VKz9ecFqvfFXzRrfaz-Pf5wW2s;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$1$EelUlD0Ldboon98oq6H5kDCPW9I;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$1$IwZz9SPheLuA45R-qkZX_v1sHV4;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$bdv3Vfadbb8b9nrSgkARO4oYOXU;-><init>()V
-PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$bdv3Vfadbb8b9nrSgkARO4oYOXU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;-><init>()V
-HSPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$0VKz9ecFqvfFXzRrfaz-Pf5wW2s;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$-LNsQ_6iDwt_SHib_WgAf70VWCI;-><init>(Ljava/lang/String;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$-LNsQ_6iDwt_SHib_WgAf70VWCI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$dm_CTD4HzQO9qRu6lX0jCG6NMCM;-><init>(Ljava/lang/String;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$dm_CTD4HzQO9qRu6lX0jCG6NMCM;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$bdv3Vfadbb8b9nrSgkARO4oYOXU;-><clinit>()V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$bdv3Vfadbb8b9nrSgkARO4oYOXU;-><init>()V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$m9NLTVY7N8yX_cTeQGMddCEpCU0;-><init>(Landroid/companion/AssociationRequest;Ljava/lang/String;Landroid/companion/IFindDeviceCallback;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$m9NLTVY7N8yX_cTeQGMddCEpCU0;->run(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$oYSpdTmzLHvD4Kqu1cDfzfZuvwo;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;Landroid/companion/IFindDeviceCallback;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$oYSpdTmzLHvD4Kqu1cDfzfZuvwo;->acceptOrThrow(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$yIqg4YLiQouxnVJakZERWIZnPYU;-><clinit>()V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$yIqg4YLiQouxnVJakZERWIZnPYU;-><init>()V
+HPLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$yIqg4YLiQouxnVJakZERWIZnPYU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$_wqnNKMj0AXNyFu-i6lXk6tA3xs;-><init>(Ljava/util/Set;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$_wqnNKMj0AXNyFu-i6lXk6tA3xs;->accept(Ljava/lang/Object;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;-><clinit>()V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;-><init>()V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$d_RLJQyt7Hah5vpYlYLeoWXxACU;-><init>(Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$d_RLJQyt7Hah5vpYlYLeoWXxACU;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wG7upTzVFwCMCLI1zfTZW4dftak;-><init>(Landroid/companion/Association;)V
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wG7upTzVFwCMCLI1zfTZW4dftak;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wnUkAY8uXyjMGM59-bNpzLLMJ1I;-><clinit>()V
 PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wnUkAY8uXyjMGM59-bNpzLLMJ1I;-><init>()V
 PLcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wnUkAY8uXyjMGM59-bNpzLLMJ1I;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageRemoved(Ljava/lang/String;I)V
-HSPLcom/android/server/companion/CompanionDeviceManagerService$Association;->hashCode()I
-HSPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V
-HSPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V
-HSPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/companion/-$$Lambda$dmgYbfK3c1MAswkxujxbcRtjs9A;-><clinit>()V
+PLcom/android/server/companion/-$$Lambda$dmgYbfK3c1MAswkxujxbcRtjs9A;-><init>()V
+PLcom/android/server/companion/-$$Lambda$dmgYbfK3c1MAswkxujxbcRtjs9A;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+HSPLcom/android/server/companion/CompanionDeviceManagerService$1;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/content/Intent;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$1;->create(I)Lcom/android/internal/infra/ServiceConnector;
+PLcom/android/server/companion/CompanionDeviceManagerService$1;->create(I)Ljava/lang/Object;
+PLcom/android/server/companion/CompanionDeviceManagerService$1;->onPackageModified(Ljava/lang/String;)V
+HSPLcom/android/server/companion/CompanionDeviceManagerService$2;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$2;->lambda$onPackageRemoved$0(Ljava/lang/String;Landroid/companion/Association;)Z
+PLcom/android/server/companion/CompanionDeviceManagerService$2;->lambda$onPackageRemoved$1(Ljava/lang/String;Ljava/util/Set;)Ljava/util/Set;
+HPLcom/android/server/companion/CompanionDeviceManagerService$2;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$2;->onPackageRemoved(Ljava/lang/String;I)V
+HSPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;-><init>(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->associate(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;)V
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCallerIsSystemOr(Ljava/lang/String;I)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkCanCallNotificationApi(Ljava/lang/String;)V
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->checkUsesFeature(Ljava/lang/String;I)V
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->getAssociations(Ljava/lang/String;I)Ljava/util/List;
 PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->hasNotificationAccess(Landroid/content/ComponentName;)Z
-PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->lambda$associate$0(Landroid/companion/AssociationRequest;Ljava/lang/String;Landroid/companion/IFindDeviceCallback;Landroid/companion/ICompanionDeviceDiscoveryService;)Ljava/util/concurrent/CompletableFuture;
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->lambda$associate$1$CompanionDeviceManagerService$CompanionDeviceManagerImpl(Landroid/companion/IFindDeviceCallback;Landroid/companion/Association;Ljava/lang/Throwable;)V
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->lambda$getAssociations$2(Landroid/companion/Association;)Ljava/lang/String;
+HPLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->requestNotificationAccess(Landroid/content/ComponentName;)Landroid/app/PendingIntent;
+PLcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;->stopScan(Landroid/companion/AssociationRequest;Landroid/companion/IFindDeviceCallback;Ljava/lang/String;)V
+HSPLcom/android/server/companion/CompanionDeviceManagerService;-><clinit>()V
 HSPLcom/android/server/companion/CompanionDeviceManagerService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$getPackageInfo$1(Landroid/content/Context;Ljava/lang/String;Ljava/lang/Integer;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$000(Lcom/android/server/companion/CompanionDeviceManagerService;Ljava/util/function/Function;I)V
+HPLcom/android/server/companion/CompanionDeviceManagerService;->access$100(Lcom/android/server/companion/CompanionDeviceManagerService;ILjava/lang/String;)Ljava/util/Set;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->access$1000()Z
+HPLcom/android/server/companion/CompanionDeviceManagerService;->access$1100(Lcom/android/server/companion/CompanionDeviceManagerService;)Lcom/android/internal/app/IAppOpsService;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$1200(Lcom/android/server/companion/CompanionDeviceManagerService;Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$200(Lcom/android/server/companion/CompanionDeviceManagerService;Ljava/lang/String;I)V
+HPLcom/android/server/companion/CompanionDeviceManagerService;->access$300()I
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$402(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/companion/IFindDeviceCallback;)Landroid/companion/IFindDeviceCallback;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$500(Lcom/android/server/companion/CompanionDeviceManagerService;)Landroid/companion/AssociationRequest;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$502(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/companion/AssociationRequest;)Landroid/companion/AssociationRequest;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$602(Lcom/android/server/companion/CompanionDeviceManagerService;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$702(Lcom/android/server/companion/CompanionDeviceManagerService;Lcom/android/internal/infra/AndroidFuture;)Lcom/android/internal/infra/AndroidFuture;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$800(Lcom/android/server/companion/CompanionDeviceManagerService;)Lcom/android/internal/infra/PerUser;
+PLcom/android/server/companion/CompanionDeviceManagerService;->access$900(Lcom/android/server/companion/CompanionDeviceManagerService;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->addAssociation(Landroid/companion/Association;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->cleanup()V
+PLcom/android/server/companion/CompanionDeviceManagerService;->containsEither([Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/companion/CompanionDeviceManagerService;->getCallingUserId()I
+HPLcom/android/server/companion/CompanionDeviceManagerService;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->getStorageFileForUser(I)Landroid/util/AtomicFile;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->isCallerSystem()Z
+HPLcom/android/server/companion/CompanionDeviceManagerService;->lambda$getPackageInfo$1(Landroid/content/Context;Ljava/lang/String;Ljava/lang/Integer;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$getStorageFileForUser$5(Ljava/lang/Integer;)Landroid/util/AtomicFile;
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$recordAssociation$2(Landroid/companion/Association;Ljava/util/Set;)Ljava/util/Set;
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$updateAssociations$3(Lorg/xmlpull/v1/XmlSerializer;Landroid/companion/Association;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$updateAssociations$4(Ljava/util/Set;Ljava/io/FileOutputStream;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->lambda$wnUkAY8uXyjMGM59-bNpzLLMJ1I(Lcom/android/server/companion/CompanionDeviceManagerService;Landroid/content/pm/PackageInfo;)V
 HSPLcom/android/server/companion/CompanionDeviceManagerService;->onStart()V
-HSPLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/Set;
-HSPLcom/android/server/companion/CompanionDeviceManagerService;->updateAssociations(Ljava/util/function/Function;I)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->onUnlockUser(I)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(I)Ljava/util/Set;
+HPLcom/android/server/companion/CompanionDeviceManagerService;->readAllAssociations(ILjava/lang/String;)Ljava/util/Set;
+PLcom/android/server/companion/CompanionDeviceManagerService;->recordAssociation(Landroid/companion/Association;)V
+HSPLcom/android/server/companion/CompanionDeviceManagerService;->registerPackageMonitor()V
+PLcom/android/server/companion/CompanionDeviceManagerService;->unlinkToDeath(Landroid/os/IInterface;Landroid/os/IBinder$DeathRecipient;I)Landroid/os/IInterface;
+PLcom/android/server/companion/CompanionDeviceManagerService;->updateAssociations(Ljava/util/function/Function;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->updateAssociations(Ljava/util/function/Function;I)V
 PLcom/android/server/companion/CompanionDeviceManagerService;->updateSpecialAccessPermissionAsSystem(Landroid/content/pm/PackageInfo;)V
-HSPLcom/android/server/connectivity/-$$Lambda$DnsManager$PrivateDnsValidationStatuses$_X4_M08nKysv-L4hDpqAsa4SBxI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/companion/CompanionDeviceManagerService;->updateSpecialAccessPermissionForAssociatedPackage(Ljava/lang/String;I)V
+HSPLcom/android/server/compat/CompatChange;-><init>(Lcom/android/server/compat/config/Change;)V
+HSPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;)Z
+HSPLcom/android/server/compat/CompatChange;->registerListener(Lcom/android/server/compat/CompatChange$ChangeListener;)V
+HPLcom/android/server/compat/CompatChange;->toString()Ljava/lang/String;
+HSPLcom/android/server/compat/CompatConfig;-><clinit>()V
+HSPLcom/android/server/compat/CompatConfig;-><init>()V
+HSPLcom/android/server/compat/CompatConfig;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)V
+HSPLcom/android/server/compat/CompatConfig;->addChange(Lcom/android/server/compat/CompatChange;)V
+HSPLcom/android/server/compat/CompatConfig;->create(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;)Lcom/android/server/compat/CompatConfig;
+PLcom/android/server/compat/CompatConfig;->dumpConfig(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/compat/CompatConfig;->get()Lcom/android/server/compat/CompatConfig;
+HSPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
+HSPLcom/android/server/compat/CompatConfig;->initConfigFromLib(Ljava/io/File;)Lcom/android/server/compat/CompatConfig;
+HSPLcom/android/server/compat/CompatConfig;->initConfigFromLib(Ljava/io/File;)V
+HSPLcom/android/server/compat/CompatConfig;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
+HSPLcom/android/server/compat/CompatConfig;->readConfig(Ljava/io/File;)V
+HSPLcom/android/server/compat/CompatConfig;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
+HSPLcom/android/server/compat/OverrideValidatorImpl;-><init>(Lcom/android/internal/compat/AndroidBuildClassifier;Landroid/content/Context;Lcom/android/server/compat/CompatConfig;)V
+HSPLcom/android/server/compat/PlatformCompat;-><init>(Landroid/content/Context;)V
+PLcom/android/server/compat/PlatformCompat;->checkCompatChangeLogPermission()V
+HSPLcom/android/server/compat/PlatformCompat;->checkCompatChangeReadPermission()V
+PLcom/android/server/compat/PlatformCompat;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/compat/PlatformCompat;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/compat/PlatformCompat;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
+HSPLcom/android/server/compat/PlatformCompat;->isChangeEnabled(JLandroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/compat/PlatformCompat;->isChangeEnabledByPackageName(JLjava/lang/String;I)Z
+HSPLcom/android/server/compat/PlatformCompat;->registerListener(JLcom/android/server/compat/CompatChange$ChangeListener;)Z
+HSPLcom/android/server/compat/PlatformCompat;->reportChange(JII)V
+PLcom/android/server/compat/PlatformCompat;->reportChangeByUid(JI)V
+HSPLcom/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;->getId()J
+HSPLcom/android/server/compat/config/Change;->getName()Ljava/lang/String;
+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;->setId(J)V
+HSPLcom/android/server/compat/config/Change;->setName(Ljava/lang/String;)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;
+HPLcom/android/server/connectivity/-$$Lambda$DnsManager$PrivateDnsValidationStatuses$_X4_M08nKysv-L4hDpqAsa4SBxI;-><init>(Landroid/net/LinkProperties;)V
+HPLcom/android/server/connectivity/-$$Lambda$DnsManager$PrivateDnsValidationStatuses$_X4_M08nKysv-L4hDpqAsa4SBxI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/connectivity/-$$Lambda$DnsManager$Z_oEyRSp0wthIcVTcqKDoAJRe6Q;-><init>(Landroid/net/LinkProperties;)V
+HPLcom/android/server/connectivity/-$$Lambda$DnsManager$Z_oEyRSp0wthIcVTcqKDoAJRe6Q;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$B0oR30xfeM300kIzUVaV_zUNLCg;-><clinit>()V
 HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$B0oR30xfeM300kIzUVaV_zUNLCg;-><init>()V
 HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$B0oR30xfeM300kIzUVaV_zUNLCg;->applyAsInt(Ljava/lang/Object;)I
-HSPLcom/android/server/connectivity/-$$Lambda$MultipathPolicyTracker$2$dvyDLfu9d6g2XoEdL3QMHx7ut6k;->run()V
-PLcom/android/server/connectivity/-$$Lambda$Nat464Xlat$40jKHQd7R0zgcegyEyc9zPHKXVA;->run()V
+HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$S6t43cbsv7uQTbniMoTEFVB8Tfw;-><clinit>()V
+HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$S6t43cbsv7uQTbniMoTEFVB8Tfw;-><init>()V
+HSPLcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$S6t43cbsv7uQTbniMoTEFVB8Tfw;->applyAsInt(Ljava/lang/Object;)I
+HPLcom/android/server/connectivity/-$$Lambda$MultipathPolicyTracker$2$dvyDLfu9d6g2XoEdL3QMHx7ut6k;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker$2;)V
+HPLcom/android/server/connectivity/-$$Lambda$MultipathPolicyTracker$2$dvyDLfu9d6g2XoEdL3QMHx7ut6k;->run()V
+HPLcom/android/server/connectivity/-$$Lambda$Nat464Xlat$40jKHQd7R0zgcegyEyc9zPHKXVA;-><init>(Lcom/android/server/connectivity/Nat464Xlat;Ljava/lang/String;Z)V
+HPLcom/android/server/connectivity/-$$Lambda$Nat464Xlat$40jKHQd7R0zgcegyEyc9zPHKXVA;->run()V
+PLcom/android/server/connectivity/-$$Lambda$Nat464Xlat$PACHOP9HoYvr_jzHtIwFDy31Ud4;-><init>(Lcom/android/server/connectivity/Nat464Xlat;Ljava/lang/String;)V
 PLcom/android/server/connectivity/-$$Lambda$Nat464Xlat$PACHOP9HoYvr_jzHtIwFDy31Ud4;->run()V
-HSPLcom/android/server/connectivity/-$$Lambda$Tethering$5JkghhOVq1MW7iK03DMZUSuLdFM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/connectivity/-$$Lambda$Tethering$CZZ1cyMeU7DUmSuQSKselF5XA5o;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/connectivity/DataConnectionStats$1;-><init>(Lcom/android/server/connectivity/DataConnectionStats;)V
-HSPLcom/android/server/connectivity/DataConnectionStats$1;->onDataActivity(I)V
-HSPLcom/android/server/connectivity/DataConnectionStats$1;->onDataConnectionStateChanged(II)V
-HSPLcom/android/server/connectivity/DataConnectionStats$1;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
-HSPLcom/android/server/connectivity/DataConnectionStats$1;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V
-HSPLcom/android/server/connectivity/DataConnectionStats;->notePhoneDataConnectionState()V
-HSPLcom/android/server/connectivity/DataConnectionStats;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/connectivity/-$$Lambda$PermissionMonitor$h-GPsXXwaQ-Mfu5-dqCp_VIYNOM;-><init>(Lcom/android/server/connectivity/PermissionMonitor;)V
+HPLcom/android/server/connectivity/-$$Lambda$PermissionMonitor$h-GPsXXwaQ-Mfu5-dqCp_VIYNOM;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/connectivity/AutodestructReference;-><init>(Ljava/lang/Object;)V
+HPLcom/android/server/connectivity/AutodestructReference;->getAndDestroy()Ljava/lang/Object;
+HSPLcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;-><init>(Lcom/android/server/connectivity/DataConnectionStats;Landroid/os/Looper;)V
+HPLcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;->onDataActivity(I)V
+HPLcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;->onDataConnectionStateChanged(II)V
+HPLcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
+HPLcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;->onSignalStrengthsChanged(Landroid/telephony/SignalStrength;)V
+HSPLcom/android/server/connectivity/DataConnectionStats;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HPLcom/android/server/connectivity/DataConnectionStats;->access$002(Lcom/android/server/connectivity/DataConnectionStats;Landroid/telephony/SignalStrength;)Landroid/telephony/SignalStrength;
+PLcom/android/server/connectivity/DataConnectionStats;->access$102(Lcom/android/server/connectivity/DataConnectionStats;Landroid/telephony/ServiceState;)Landroid/telephony/ServiceState;
+HPLcom/android/server/connectivity/DataConnectionStats;->access$200(Lcom/android/server/connectivity/DataConnectionStats;)V
+PLcom/android/server/connectivity/DataConnectionStats;->access$302(Lcom/android/server/connectivity/DataConnectionStats;I)I
+HPLcom/android/server/connectivity/DataConnectionStats;->hasService()Z
+PLcom/android/server/connectivity/DataConnectionStats;->isCdma()Z
+HPLcom/android/server/connectivity/DataConnectionStats;->notePhoneDataConnectionState()V
+HPLcom/android/server/connectivity/DataConnectionStats;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/connectivity/DataConnectionStats;->startMonitoring()V
-HSPLcom/android/server/connectivity/DataConnectionStats;->updateSimState(Landroid/content/Intent;)V
+PLcom/android/server/connectivity/DataConnectionStats;->updateSimState(Landroid/content/Intent;)V
 HSPLcom/android/server/connectivity/DefaultNetworkMetrics;-><init>()V
-HSPLcom/android/server/connectivity/DefaultNetworkMetrics;->fillLinkInfo(Landroid/net/metrics/DefaultNetworkEvent;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/connectivity/DefaultNetworkMetrics;->flushEvents(Ljava/util/List;)V
+HPLcom/android/server/connectivity/DefaultNetworkMetrics;->fillLinkInfo(Landroid/net/metrics/DefaultNetworkEvent;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/connectivity/DefaultNetworkMetrics;->flushEvents(Ljava/util/List;)V
 PLcom/android/server/connectivity/DefaultNetworkMetrics;->listEvents(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/connectivity/DefaultNetworkMetrics;->logCurrentDefaultNetwork(JLcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/connectivity/DefaultNetworkMetrics;->logDefaultNetworkEvent(JLcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/connectivity/DefaultNetworkMetrics;->logDefaultNetworkValidity(JZ)V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->listEventsAsProto()Ljava/util/List;
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->listEventsAsProto(Ljava/util/List;)V
+HPLcom/android/server/connectivity/DefaultNetworkMetrics;->logCurrentDefaultNetwork(JLcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->logDefaultNetworkEvent(JLcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->logDefaultNetworkValidity(JZ)V
 HSPLcom/android/server/connectivity/DefaultNetworkMetrics;->newDefaultNetwork(JLcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/connectivity/DefaultNetworkMetrics;->printEvent(JLjava/io/PrintWriter;Landroid/net/metrics/DefaultNetworkEvent;)V
-HSPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses$ValidationStatus;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->updateStatus(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
-HSPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->updateTrackedDnses([Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/DnsManager;->flushVmDnsCache()V
-HSPLcom/android/server/connectivity/DnsManager;->getPrivateDnsConfig()Landroid/net/shared/PrivateDnsConfig;
-HSPLcom/android/server/connectivity/DnsManager;->getPrivateDnsConfig(Landroid/content/ContentResolver;)Landroid/net/shared/PrivateDnsConfig;
+HPLcom/android/server/connectivity/DefaultNetworkMetrics;->printEvent(JLjava/io/PrintWriter;Landroid/net/metrics/DefaultNetworkEvent;)V
+PLcom/android/server/connectivity/DefaultNetworkMetrics;->updateValidationTime(J)V
+PLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses$ValidationStatus;-><clinit>()V
+PLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses$ValidationStatus;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;-><init>()V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;-><init>(Lcom/android/server/connectivity/DnsManager$1;)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->access$000(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;)Z
+PLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->access$100(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;Landroid/net/LinkProperties;)Landroid/net/LinkProperties;
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->access$200(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->access$400(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;[Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->fillInValidatedPrivateDns(Landroid/net/LinkProperties;)Landroid/net/LinkProperties;
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->hasValidatedServer()Z
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->lambda$fillInValidatedPrivateDns$0(Landroid/net/LinkProperties;Landroid/util/Pair;Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses$ValidationStatus;)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->updateStatus(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;->updateTrackedDnses([Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;-><init>(ILjava/net/InetAddress;Ljava/lang/String;Z)V
+HSPLcom/android/server/connectivity/DnsManager;-><clinit>()V
+HSPLcom/android/server/connectivity/DnsManager;-><init>(Landroid/content/Context;Landroid/net/IDnsResolver;Lcom/android/server/connectivity/MockableSystemProperties;)V
+HPLcom/android/server/connectivity/DnsManager;->flushVmDnsCache()V
+HPLcom/android/server/connectivity/DnsManager;->getDomainStrings(Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/connectivity/DnsManager;->getIntSetting(Ljava/lang/String;I)I
+PLcom/android/server/connectivity/DnsManager;->getPrivateDnsConfig()Landroid/net/shared/PrivateDnsConfig;
+HPLcom/android/server/connectivity/DnsManager;->getPrivateDnsConfig(Landroid/content/ContentResolver;)Landroid/net/shared/PrivateDnsConfig;
+HPLcom/android/server/connectivity/DnsManager;->getPrivateDnsMode(Landroid/content/ContentResolver;)Ljava/lang/String;
 HSPLcom/android/server/connectivity/DnsManager;->getPrivateDnsSettingsUris()[Landroid/net/Uri;
-PLcom/android/server/connectivity/DnsManager;->removeNetwork(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/DnsManager;->setDefaultDnsSystemProperties(Ljava/util/Collection;)V
-HSPLcom/android/server/connectivity/DnsManager;->setDnsConfigurationForNetwork(ILandroid/net/LinkProperties;Z)V
-HSPLcom/android/server/connectivity/DnsManager;->setNetDnsProperty(ILjava/lang/String;)V
-HSPLcom/android/server/connectivity/DnsManager;->updateParametersSettings()V
-HSPLcom/android/server/connectivity/DnsManager;->updatePrivateDns(Landroid/net/Network;Landroid/net/shared/PrivateDnsConfig;)Landroid/net/shared/PrivateDnsConfig;
-HSPLcom/android/server/connectivity/DnsManager;->updatePrivateDnsStatus(ILandroid/net/LinkProperties;)V
-HSPLcom/android/server/connectivity/DnsManager;->updatePrivateDnsValidation(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
-PLcom/android/server/connectivity/IpConnectivityEventBuilder;->inferLinkLayer(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;)V
+HPLcom/android/server/connectivity/DnsManager;->getStringSetting(Landroid/content/ContentResolver;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/connectivity/DnsManager;->lambda$setDnsConfigurationForNetwork$0(Landroid/net/LinkProperties;Ljava/net/InetAddress;)Z
+HPLcom/android/server/connectivity/DnsManager;->removeNetwork(Landroid/net/Network;)V
+HPLcom/android/server/connectivity/DnsManager;->setDefaultDnsSystemProperties(Ljava/util/Collection;)V
+HPLcom/android/server/connectivity/DnsManager;->setDnsConfigurationForNetwork(ILandroid/net/LinkProperties;Z)V
+HPLcom/android/server/connectivity/DnsManager;->setNetDnsProperty(ILjava/lang/String;)V
+HPLcom/android/server/connectivity/DnsManager;->updateParametersSettings()V
+HPLcom/android/server/connectivity/DnsManager;->updatePrivateDns(Landroid/net/Network;Landroid/net/shared/PrivateDnsConfig;)Landroid/net/shared/PrivateDnsConfig;
+HPLcom/android/server/connectivity/DnsManager;->updatePrivateDnsStatus(ILandroid/net/LinkProperties;)V
+HPLcom/android/server/connectivity/DnsManager;->updatePrivateDnsValidation(Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;)V
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;-><clinit>()V
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->buildEvent(IJLjava/lang/String;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->bytesToInts([B)[I
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->ifnameToLinkLayer(Ljava/lang/String;)I
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->inferLinkLayer(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;)V
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;->ipSupportOf(Landroid/net/metrics/DefaultNetworkEvent;)I
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;->isBitSet(II)Z
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->serialize(ILjava/util/List;)[B
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setApfProgramEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/ApfProgramEvent;)V
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setApfStats(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/ApfStats;)V
-PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/os/Parcelable;)Z
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->setDhcpClientEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/DhcpClientEvent;)V
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setDhcpErrorEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/DhcpErrorEvent;)V
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->setEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/os/Parcelable;)Z
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setIpManagerEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/IpManagerEvent;)V
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->setIpReachabilityEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/IpReachabilityEvent;)V
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->setNetworkEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/NetworkEvent;)V
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->setRaEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/RaEvent;)V
-PLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/ConnectStats;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->setValidationProbeEvent(Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;Landroid/net/metrics/ValidationProbeEvent;)V
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->toPairArray(Landroid/util/SparseIntArray;)[Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$Pair;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/ConnectivityMetricsEvent;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/ConnectStats;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/DefaultNetworkEvent;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
-PLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/DnsEvent;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/DnsEvent;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
 PLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Landroid/net/metrics/WakeupStats;)Lcom/android/server/connectivity/metrics/nano/IpConnectivityLogClass$IpConnectivityEvent;
-PLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Ljava/util/List;)Ljava/util/List;
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->toProto(Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/connectivity/IpConnectivityEventBuilder;->transportToLinkLayer(I)I
+HPLcom/android/server/connectivity/IpConnectivityEventBuilder;->transportsToLinkLayer(J)I
+HSPLcom/android/server/connectivity/IpConnectivityMetrics$Impl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
 HSPLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
 PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I
-HSPLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;->defaultNetworkMetrics()Lcom/android/server/connectivity/DefaultNetworkMetrics;
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforceDumpPermission()V
+HSPLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforceNetdEventListeningPermission()V
+PLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->enforcePermission(Ljava/lang/String;)V
+HPLcom/android/server/connectivity/IpConnectivityMetrics$Impl;->logEvent(Landroid/net/ConnectivityMetricsEvent;)I
+HSPLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;)V
+HSPLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;-><init>(Lcom/android/server/connectivity/IpConnectivityMetrics;Lcom/android/server/connectivity/IpConnectivityMetrics$1;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;->defaultNetworkMetrics()Lcom/android/server/connectivity/DefaultNetworkMetrics;
+HSPLcom/android/server/connectivity/IpConnectivityMetrics;-><clinit>()V
 HSPLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/connectivity/IpConnectivityMetrics;-><init>(Landroid/content/Context;Ljava/util/function/ToIntFunction;)V
-HSPLcom/android/server/connectivity/IpConnectivityMetrics;->append(Landroid/net/ConnectivityMetricsEvent;)I
-PLcom/android/server/connectivity/IpConnectivityMetrics;->cmdList(Ljava/io/PrintWriter;)V
+HPLcom/android/server/connectivity/IpConnectivityMetrics;->access$100(Lcom/android/server/connectivity/IpConnectivityMetrics;Landroid/net/ConnectivityMetricsEvent;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->access$200(Lcom/android/server/connectivity/IpConnectivityMetrics;Ljava/io/PrintWriter;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->access$400(Lcom/android/server/connectivity/IpConnectivityMetrics;Ljava/io/OutputStream;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->access$400(Lcom/android/server/connectivity/IpConnectivityMetrics;Ljava/io/PrintWriter;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->access$500(Lcom/android/server/connectivity/IpConnectivityMetrics;Ljava/io/PrintWriter;)V
+HPLcom/android/server/connectivity/IpConnectivityMetrics;->append(Landroid/net/ConnectivityMetricsEvent;)I
+HSPLcom/android/server/connectivity/IpConnectivityMetrics;->bufferCapacity()I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->cmdFlush(Ljava/io/PrintWriter;)V
+HPLcom/android/server/connectivity/IpConnectivityMetrics;->cmdList(Ljava/io/PrintWriter;)V
+PLcom/android/server/connectivity/IpConnectivityMetrics;->cmdListAsBinaryProto(Ljava/io/OutputStream;)V
 PLcom/android/server/connectivity/IpConnectivityMetrics;->flushEncodedOutput()Ljava/lang/String;
 PLcom/android/server/connectivity/IpConnectivityMetrics;->getEvents()Ljava/util/List;
 HSPLcom/android/server/connectivity/IpConnectivityMetrics;->initBuffer()V
+HPLcom/android/server/connectivity/IpConnectivityMetrics;->isRateLimited(Landroid/net/ConnectivityMetricsEvent;)Z
+HSPLcom/android/server/connectivity/IpConnectivityMetrics;->lambda$static$0(Landroid/content/Context;)I
+HSPLcom/android/server/connectivity/IpConnectivityMetrics;->lambda$static$1(Landroid/content/Context;)I
+PLcom/android/server/connectivity/IpConnectivityMetrics;->listEventsAsProtos()Ljava/util/List;
+HSPLcom/android/server/connectivity/IpConnectivityMetrics;->makeRateLimitingBuckets()Landroid/util/ArrayMap;
 HSPLcom/android/server/connectivity/IpConnectivityMetrics;->onBootPhase(I)V
 HSPLcom/android/server/connectivity/IpConnectivityMetrics;->onStart()V
-PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;-><init>(Lcom/android/server/connectivity/KeepaliveTracker;Landroid/net/ISocketKeepaliveCallback;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/KeepalivePacketData;IILjava/io/FileDescriptor;)V
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;-><init>(Lcom/android/server/connectivity/KeepaliveTracker;Landroid/net/ISocketKeepaliveCallback;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/KeepalivePacketData;IILjava/io/FileDescriptor;)V
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->access$1000(Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;)Landroid/net/ISocketKeepaliveCallback;
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->access$700(Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;)I
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->access$800(Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;)I
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->access$900(Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;)I
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->access$902(Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;I)I
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->binderDied()V
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkInterval()I
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkLimit()I
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkNetworkConnected()I
 PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkPermission()I
-PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkSourceAddress()I
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->checkSourceAddress()I
 PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->getNai()Lcom/android/server/connectivity/NetworkAgentInfo;
 PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->isValid()I
-PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->start(I)V
-PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->stop(I)V
-PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->toString()Ljava/lang/String;
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->start(I)V
+PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->startedStateString(I)Ljava/lang/String;
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->stop(I)V
+HPLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->toString()Ljava/lang/String;
 PLcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;->unlinkDeathRecipient()V
+HSPLcom/android/server/connectivity/KeepaliveTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/connectivity/KeepaliveTracker;->access$000(Lcom/android/server/connectivity/KeepaliveTracker;)Landroid/content/Context;
+PLcom/android/server/connectivity/KeepaliveTracker;->access$100(Lcom/android/server/connectivity/KeepaliveTracker;)Ljava/util/HashMap;
+PLcom/android/server/connectivity/KeepaliveTracker;->access$200(Lcom/android/server/connectivity/KeepaliveTracker;)[I
+HPLcom/android/server/connectivity/KeepaliveTracker;->cleanupStoppedKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
 PLcom/android/server/connectivity/KeepaliveTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/connectivity/KeepaliveTracker;->findFirstFreeSlot(Lcom/android/server/connectivity/NetworkAgentInfo;)I
-HSPLcom/android/server/connectivity/KeepaliveTracker;->handleCheckKeepalivesStillValid(Lcom/android/server/connectivity/NetworkAgentInfo;)V
-PLcom/android/server/connectivity/KeepaliveTracker;->handleEventSocketKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/os/Message;)V
+HPLcom/android/server/connectivity/KeepaliveTracker;->findFirstFreeSlot(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+HPLcom/android/server/connectivity/KeepaliveTracker;->handleCheckKeepalivesStillValid(Lcom/android/server/connectivity/NetworkAgentInfo;)V
+HPLcom/android/server/connectivity/KeepaliveTracker;->handleEventSocketKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/os/Message;)V
 PLcom/android/server/connectivity/KeepaliveTracker;->handleStartKeepalive(Landroid/os/Message;)V
-PLcom/android/server/connectivity/KeepaliveTracker;->handleStopAllKeepalives(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
-PLcom/android/server/connectivity/KeepaliveTracker;->handleStopKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
+HPLcom/android/server/connectivity/KeepaliveTracker;->handleStopAllKeepalives(Lcom/android/server/connectivity/NetworkAgentInfo;I)V
+HPLcom/android/server/connectivity/KeepaliveTracker;->handleStopKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;II)V
+PLcom/android/server/connectivity/KeepaliveTracker;->isNattKeepaliveSocketValid(Ljava/io/FileDescriptor;I)Z
 PLcom/android/server/connectivity/KeepaliveTracker;->notifyErrorCallback(Landroid/net/ISocketKeepaliveCallback;I)V
-PLcom/android/server/connectivity/KeepaliveTracker;->startNattKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/io/FileDescriptor;ILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;ILjava/lang/String;I)V
-PLcom/android/server/connectivity/LingerMonitor;->getNotificationSource(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+PLcom/android/server/connectivity/KeepaliveTracker;->startNattKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/io/FileDescriptor;IILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/connectivity/KeepaliveTracker;->startNattKeepalive(Lcom/android/server/connectivity/NetworkAgentInfo;Ljava/io/FileDescriptor;ILandroid/net/ISocketKeepaliveCallback;Ljava/lang/String;ILjava/lang/String;I)V
+HSPLcom/android/server/connectivity/LingerMonitor;-><clinit>()V
+HSPLcom/android/server/connectivity/LingerMonitor;-><init>(Landroid/content/Context;Lcom/android/server/connectivity/NetworkNotificationManager;IJ)V
+PLcom/android/server/connectivity/LingerMonitor;->everNotified(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+HPLcom/android/server/connectivity/LingerMonitor;->getNotificationSource(Lcom/android/server/connectivity/NetworkAgentInfo;)I
 PLcom/android/server/connectivity/LingerMonitor;->isNotificationEnabled(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)Z
 HSPLcom/android/server/connectivity/LingerMonitor;->makeTransportToNameMap()Ljava/util/HashMap;
+PLcom/android/server/connectivity/LingerMonitor;->maybeStopNotifying(Lcom/android/server/connectivity/NetworkAgentInfo;)V
 PLcom/android/server/connectivity/LingerMonitor;->noteDisconnect(Lcom/android/server/connectivity/NetworkAgentInfo;)V
 PLcom/android/server/connectivity/LingerMonitor;->noteLingerDefaultNetwork(Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;)V
-HSPLcom/android/server/connectivity/MockableSystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/connectivity/MockableSystemProperties;-><init>()V
+PLcom/android/server/connectivity/MockableSystemProperties;->get(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/connectivity/MockableSystemProperties;->getBoolean(Ljava/lang/String;Z)Z
 HSPLcom/android/server/connectivity/MockableSystemProperties;->getInt(Ljava/lang/String;I)I
-HSPLcom/android/server/connectivity/MockableSystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/connectivity/MultipathPolicyTracker$1;->onLost(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$2;->lambda$onMeteredIfacesChanged$0$MultipathPolicyTracker$2()V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$2;->onMeteredIfacesChanged([Ljava/lang/String;)V
+HPLcom/android/server/connectivity/MockableSystemProperties;->set(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker$1;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$1;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker$2;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$2;->lambda$onMeteredIfacesChanged$0$MultipathPolicyTracker$2()V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$2;->onMeteredIfacesChanged([Ljava/lang/String;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Lcom/android/server/connectivity/MultipathPolicyTracker$1;)V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;-><init>()V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;->getClock()Ljava/time/Clock;
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getDailyNonDefaultDataUsage()J
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker$1;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/net/Network;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker$1;->onThresholdReached(ILjava/lang/String;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->access$202(Lcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;J)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getDailyNonDefaultDataUsage()J
 PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getMultipathBudget()J
 PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getMultipathPreference()I
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getNetworkTotalBytes(JJ)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getNetworkTotalBytes(JJ)J
 PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getQuota()J
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getRemainingDailyBudget(JLandroid/util/Range;)J
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getUserPolicyOpportunisticQuotaBytes()J
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->setNetworkCapabilities(Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getRemainingDailyBudget(JLandroid/util/Range;)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getTemplateMatchingNetworkIdentity(Landroid/net/NetworkCapabilities;)Landroid/net/NetworkIdentity;
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->getUserPolicyOpportunisticQuotaBytes()J
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->haveMultipathBudget()Z
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->maybeUnregisterUsageCallback()V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->registerUsageCallback(J)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->setNetworkCapabilities(Landroid/net/NetworkCapabilities;)V
 PLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->shutdown()V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->updateMultipathBudget()V
+HPLcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;->updateMultipathBudget()V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker$SettingsObserver;-><init>(Lcom/android/server/connectivity/MultipathPolicyTracker;Landroid/os/Handler;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker;-><clinit>()V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;)V
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$100(Lcom/android/server/connectivity/MultipathPolicyTracker;)Landroid/content/Context;
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$1000(Lcom/android/server/connectivity/MultipathPolicyTracker;)Landroid/app/usage/NetworkStatsManager;
+HPLcom/android/server/connectivity/MultipathPolicyTracker;->access$1100(Lcom/android/server/connectivity/MultipathPolicyTracker;)Ljava/util/concurrent/ConcurrentHashMap;
+HSPLcom/android/server/connectivity/MultipathPolicyTracker;->access$1200(Lcom/android/server/connectivity/MultipathPolicyTracker;)V
+HPLcom/android/server/connectivity/MultipathPolicyTracker;->access$300(Lcom/android/server/connectivity/MultipathPolicyTracker;)Ljava/time/Clock;
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$400()Ljava/lang/String;
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$500(Lcom/android/server/connectivity/MultipathPolicyTracker;)Landroid/net/NetworkPolicyManager;
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$600(Landroid/net/NetworkPolicy;J)J
+PLcom/android/server/connectivity/MultipathPolicyTracker;->access$700(Landroid/net/NetworkPolicy;J)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker;->access$800(Lcom/android/server/connectivity/MultipathPolicyTracker;)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker;->access$900(Lcom/android/server/connectivity/MultipathPolicyTracker;)Landroid/os/Handler;
 PLcom/android/server/connectivity/MultipathPolicyTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/connectivity/MultipathPolicyTracker;->getDefaultDailyMultipathQuotaBytes()J
+PLcom/android/server/connectivity/MultipathPolicyTracker;->getActiveLimit(Landroid/net/NetworkPolicy;J)J
+PLcom/android/server/connectivity/MultipathPolicyTracker;->getActiveWarning(Landroid/net/NetworkPolicy;J)J
+HPLcom/android/server/connectivity/MultipathPolicyTracker;->getDefaultDailyMultipathQuotaBytes()J
+PLcom/android/server/connectivity/MultipathPolicyTracker;->getMultipathPreference(Landroid/net/Network;)Ljava/lang/Integer;
+HSPLcom/android/server/connectivity/MultipathPolicyTracker;->registerNetworkPolicyListener()V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker;->registerTrackMobileCallback()V
 HSPLcom/android/server/connectivity/MultipathPolicyTracker;->start()V
-HSPLcom/android/server/connectivity/Nat464Xlat$State;-><init>(Ljava/lang/String;I)V
-PLcom/android/server/connectivity/Nat464Xlat;->enterStartingState(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Nat464Xlat;->fixupLinkProperties(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
+HSPLcom/android/server/connectivity/MultipathPolicyTracker;->updateAllMultipathBudgets()V
+PLcom/android/server/connectivity/Nat464Xlat$State;-><clinit>()V
+PLcom/android/server/connectivity/Nat464Xlat$State;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/connectivity/Nat464Xlat;-><clinit>()V
+HPLcom/android/server/connectivity/Nat464Xlat;-><init>(Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/net/INetd;Landroid/net/IDnsResolver;Landroid/os/INetworkManagementService;)V
+PLcom/android/server/connectivity/Nat464Xlat;->enterRunningState()V
+HPLcom/android/server/connectivity/Nat464Xlat;->enterStartingState(Ljava/lang/String;)V
+HPLcom/android/server/connectivity/Nat464Xlat;->fixupLinkProperties(Landroid/net/LinkProperties;Landroid/net/LinkProperties;)V
 PLcom/android/server/connectivity/Nat464Xlat;->getLinkAddress(Ljava/lang/String;)Landroid/net/LinkAddress;
-HSPLcom/android/server/connectivity/Nat464Xlat;->getNetId()I
-PLcom/android/server/connectivity/Nat464Xlat;->handleInterfaceLinkStateChanged(Ljava/lang/String;Z)V
-PLcom/android/server/connectivity/Nat464Xlat;->handleInterfaceRemoved(Ljava/lang/String;)V
-PLcom/android/server/connectivity/Nat464Xlat;->interfaceLinkStateChanged(Ljava/lang/String;Z)V
+PLcom/android/server/connectivity/Nat464Xlat;->getNetId()I
+HPLcom/android/server/connectivity/Nat464Xlat;->handleInterfaceLinkStateChanged(Ljava/lang/String;Z)V
+HPLcom/android/server/connectivity/Nat464Xlat;->handleInterfaceRemoved(Ljava/lang/String;)V
+HPLcom/android/server/connectivity/Nat464Xlat;->interfaceLinkStateChanged(Ljava/lang/String;Z)V
 PLcom/android/server/connectivity/Nat464Xlat;->interfaceRemoved(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Nat464Xlat;->isPrefixDiscoveryStarted()Z
-HSPLcom/android/server/connectivity/Nat464Xlat;->isRunning()Z
-HSPLcom/android/server/connectivity/Nat464Xlat;->isStarted()Z
-PLcom/android/server/connectivity/Nat464Xlat;->isStarting()Z
-PLcom/android/server/connectivity/Nat464Xlat;->lambda$interfaceLinkStateChanged$0$Nat464Xlat(Ljava/lang/String;Z)V
+HPLcom/android/server/connectivity/Nat464Xlat;->isPrefixDiscoveryStarted()Z
+HPLcom/android/server/connectivity/Nat464Xlat;->isRunning()Z
+HPLcom/android/server/connectivity/Nat464Xlat;->isStarted()Z
+HPLcom/android/server/connectivity/Nat464Xlat;->isStarting()Z
+HPLcom/android/server/connectivity/Nat464Xlat;->lambda$interfaceLinkStateChanged$0$Nat464Xlat(Ljava/lang/String;Z)V
 PLcom/android/server/connectivity/Nat464Xlat;->lambda$interfaceRemoved$1$Nat464Xlat(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Nat464Xlat;->leaveStartedState()V
+HPLcom/android/server/connectivity/Nat464Xlat;->leaveStartedState()V
 PLcom/android/server/connectivity/Nat464Xlat;->makeLinkProperties(Landroid/net/LinkAddress;)Landroid/net/LinkProperties;
-HSPLcom/android/server/connectivity/Nat464Xlat;->requiresClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+HPLcom/android/server/connectivity/Nat464Xlat;->requiresClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
 PLcom/android/server/connectivity/Nat464Xlat;->setNat64Prefix(Landroid/net/IpPrefix;)V
-PLcom/android/server/connectivity/Nat464Xlat;->start()V
-HSPLcom/android/server/connectivity/Nat464Xlat;->startPrefixDiscovery()V
-PLcom/android/server/connectivity/Nat464Xlat;->stop()V
-HSPLcom/android/server/connectivity/Nat464Xlat;->stopPrefixDiscovery()V
-HSPLcom/android/server/connectivity/Nat464Xlat;->toString()Ljava/lang/String;
-HSPLcom/android/server/connectivity/Nat464Xlat;->update()V
-HSPLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->collect(JLandroid/util/SparseArray;)Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
-PLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->toString()Ljava/lang/String;
+HPLcom/android/server/connectivity/Nat464Xlat;->shouldStartClat(Lcom/android/server/connectivity/NetworkAgentInfo;)Z
+HPLcom/android/server/connectivity/Nat464Xlat;->start()V
+HPLcom/android/server/connectivity/Nat464Xlat;->startPrefixDiscovery()V
+HPLcom/android/server/connectivity/Nat464Xlat;->stop()V
+HPLcom/android/server/connectivity/Nat464Xlat;->stopPrefixDiscovery()V
+HPLcom/android/server/connectivity/Nat464Xlat;->toString()Ljava/lang/String;
+HPLcom/android/server/connectivity/Nat464Xlat;->update()V
+HPLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;-><init>()V
+HPLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->collect(JLandroid/util/SparseArray;)Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
+HPLcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;->toString()Ljava/lang/String;
+HSPLcom/android/server/connectivity/NetdEventListenerService;-><clinit>()V
+HSPLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/connectivity/NetdEventListenerService;-><init>(Landroid/net/ConnectivityManager;)V
 HSPLcom/android/server/connectivity/NetdEventListenerService;->addNetdEventCallback(ILandroid/net/INetdEventCallback;)Z
-HSPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(J)V
-PLcom/android/server/connectivity/NetdEventListenerService;->flushStatistics(Ljava/util/List;)V
-HSPLcom/android/server/connectivity/NetdEventListenerService;->getTransports(I)J
-PLcom/android/server/connectivity/NetdEventListenerService;->list(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
-HSPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
-PLcom/android/server/connectivity/NetdEventListenerService;->onNat64PrefixEvent(IZLjava/lang/String;I)V
-HSPLcom/android/server/connectivity/NetdEventListenerService;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
-HSPLcom/android/server/connectivity/NetdEventListenerService;->onTcpSocketStatsEvent([I[I[I[I[I)V
-PLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V
-PLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;->compareTo(Lcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;)I
-PLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;->compareTo(Ljava/lang/Object;)I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;-><init>(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;ILandroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkMisc;Lcom/android/server/ConnectivityService;Landroid/net/INetd;Landroid/os/INetworkManagementService;I)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->addRequest(Landroid/net/NetworkRequest;)Z
+HPLcom/android/server/connectivity/NetdEventListenerService;->addWakeupEvent(Landroid/net/metrics/WakeupEvent;)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->collectPendingMetricsSnapshot(J)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->flushStatistics(Ljava/util/List;)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->getMetricsForNetwork(JI)Landroid/net/metrics/NetworkMetrics;
+PLcom/android/server/connectivity/NetdEventListenerService;->getNetworkMetricsSnapshots()[Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
+HPLcom/android/server/connectivity/NetdEventListenerService;->getTransports(I)J
+HSPLcom/android/server/connectivity/NetdEventListenerService;->isValidCallerType(I)Z
+HPLcom/android/server/connectivity/NetdEventListenerService;->list(Ljava/io/PrintWriter;)V
+PLcom/android/server/connectivity/NetdEventListenerService;->listAsProtos()Ljava/util/List;
+HPLcom/android/server/connectivity/NetdEventListenerService;->listAsProtos(Ljava/util/List;)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onConnectEvent(IIILjava/lang/String;II)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onDnsEvent(IIIILjava/lang/String;[Ljava/lang/String;II)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onNat64PrefixEvent(IZLjava/lang/String;I)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onPrivateDnsValidationEvent(ILjava/lang/String;Ljava/lang/String;Z)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onTcpSocketStatsEvent([I[I[I[I[I)V
+HPLcom/android/server/connectivity/NetdEventListenerService;->onWakeupEvent(Ljava/lang/String;III[BLjava/lang/String;Ljava/lang/String;IIJ)V
+PLcom/android/server/connectivity/NetdEventListenerService;->projectSnapshotTime(J)J
+PLcom/android/server/connectivity/NetworkAgentInfo$1;-><clinit>()V
+HPLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;-><init>(Landroid/net/NetworkRequest;J)V
+HPLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;->compareTo(Lcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;)I
+HPLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;->toString()Ljava/lang/String;
+HSPLcom/android/server/connectivity/NetworkAgentInfo;-><clinit>()V
+HPLcom/android/server/connectivity/NetworkAgentInfo;-><init>(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/NetworkScore;Landroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkAgentConfig;Lcom/android/server/ConnectivityService;Landroid/net/INetd;Landroid/net/IDnsResolver;Landroid/os/INetworkManagementService;I)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;-><init>(Landroid/os/Messenger;Lcom/android/internal/util/AsyncChannel;Landroid/net/Network;Landroid/net/NetworkInfo;Landroid/net/LinkProperties;Landroid/net/NetworkCapabilities;Landroid/net/NetworkScore;Landroid/content/Context;Landroid/os/Handler;Landroid/net/NetworkMisc;Lcom/android/server/ConnectivityService;Landroid/net/INetd;Landroid/net/IDnsResolver;Landroid/os/INetworkManagementService;I)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->addRequest(Landroid/net/NetworkRequest;)Z
 PLcom/android/server/connectivity/NetworkAgentInfo;->clearLingerState()V
-PLcom/android/server/connectivity/NetworkAgentInfo;->compareTo(Lcom/android/server/connectivity/NetworkAgentInfo;)I
-PLcom/android/server/connectivity/NetworkAgentInfo;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->compareTo(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->compareTo(Ljava/lang/Object;)I
 PLcom/android/server/connectivity/NetworkAgentInfo;->connService()Lcom/android/server/ConnectivityService;
 PLcom/android/server/connectivity/NetworkAgentInfo;->dumpLingerTimers(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I
-PLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScoreAsValidated()I
-PLcom/android/server/connectivity/NetworkAgentInfo;->getLingerExpiry()J
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->getNetworkState()Landroid/net/NetworkState;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getAndSetNetworkCapabilities(Landroid/net/NetworkCapabilities;)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScore(Z)I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getCurrentScoreAsValidated()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getLingerExpiry()J
+HPLcom/android/server/connectivity/NetworkAgentInfo;->getNetworkState()Landroid/net/NetworkState;
 PLcom/android/server/connectivity/NetworkAgentInfo;->handler()Landroid/os/Handler;
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->ignoreWifiUnvalidationPenalty()Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->isSuspended()Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->ignoreWifiUnvalidationPenalty()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isBackgroundNetwork()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isLingering()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isSatisfyingRequest(I)Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isSuspended()Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->isVPN()Z
 PLcom/android/server/connectivity/NetworkAgentInfo;->linger()V
-PLcom/android/server/connectivity/NetworkAgentInfo;->lingerRequest(Landroid/net/NetworkRequest;JJ)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->name()Ljava/lang/String;
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->netMisc()Landroid/net/NetworkMisc;
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->network()Landroid/net/Network;
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->networkMonitor()Landroid/net/INetworkMonitor;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->lingerRequest(Landroid/net/NetworkRequest;JJ)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->name()Ljava/lang/String;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->netAgentConfig()Landroid/net/NetworkAgentConfig;
+PLcom/android/server/connectivity/NetworkAgentInfo;->netMisc()Landroid/net/NetworkMisc;
+PLcom/android/server/connectivity/NetworkAgentInfo;->network()Landroid/net/Network;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->networkMonitor()Landroid/net/NetworkMonitorManager;
 PLcom/android/server/connectivity/NetworkAgentInfo;->numBackgroundNetworkRequests()I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->onNetworkMonitorCreated(Landroid/net/INetworkMonitor;)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->removeRequest(I)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest;
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z
-PLcom/android/server/connectivity/NetworkAgentInfo;->setCurrentScore(I)V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->toString()Ljava/lang/String;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numForegroundNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->numRequestNetworkRequests()I
+HPLcom/android/server/connectivity/NetworkAgentInfo;->onNetworkMonitorCreated(Landroid/net/INetworkMonitor;)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->removeRequest(I)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->requestAt(I)Landroid/net/NetworkRequest;
+HPLcom/android/server/connectivity/NetworkAgentInfo;->satisfies(Landroid/net/NetworkRequest;)Z
+PLcom/android/server/connectivity/NetworkAgentInfo;->satisfiesImmutableCapabilitiesOf(Landroid/net/NetworkRequest;)Z
+PLcom/android/server/connectivity/NetworkAgentInfo;->setNetworkScore(Landroid/net/NetworkScore;)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->toString()Ljava/lang/String;
 PLcom/android/server/connectivity/NetworkAgentInfo;->unlinger()V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->unlingerRequest(Landroid/net/NetworkRequest;)Z
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V
-HSPLcom/android/server/connectivity/NetworkAgentInfo;->updateRequestCounts(ZLandroid/net/NetworkRequest;)V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->unlingerRequest(Landroid/net/NetworkRequest;)Z
+HPLcom/android/server/connectivity/NetworkAgentInfo;->updateLingerTimer()V
+HPLcom/android/server/connectivity/NetworkAgentInfo;->updateRequestCounts(ZLandroid/net/NetworkRequest;)V
+PLcom/android/server/connectivity/NetworkDiagnostics$DnsResponseCode;-><clinit>()V
 PLcom/android/server/connectivity/NetworkDiagnostics$DnsResponseCode;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/connectivity/NetworkDiagnostics$DnsResponseCode;->values()[Lcom/android/server/connectivity/NetworkDiagnostics$DnsResponseCode;
 PLcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;Ljava/net/InetAddress;Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;->getDnsQueryPacket(Ljava/lang/String;)[B
 PLcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;->responseCodeStr(I)Ljava/lang/String;
-PLcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;->run()V
+HPLcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;->run()V
+PLcom/android/server/connectivity/NetworkDiagnostics$IcmpCheck;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;Ljava/net/InetAddress;Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$IcmpCheck;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;Ljava/net/InetAddress;Ljava/net/InetAddress;Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;)V
-PLcom/android/server/connectivity/NetworkDiagnostics$IcmpCheck;->run()V
+HPLcom/android/server/connectivity/NetworkDiagnostics$IcmpCheck;->run()V
+PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->checkSucceeded()Z
+PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->maybeFixupTimes()V
 PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->recordFailure(Ljava/lang/String;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->recordSuccess(Ljava/lang/String;)V
-PLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->toString()Ljava/lang/String;
+HPLcom/android/server/connectivity/NetworkDiagnostics$Measurement;->toString()Ljava/lang/String;
+PLcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;Ljava/net/InetAddress;Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;-><init>(Lcom/android/server/connectivity/NetworkDiagnostics;Ljava/net/InetAddress;Ljava/net/InetAddress;Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;)V
 PLcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;->close()V
 PLcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;->getSocketAddressString()Ljava/lang/String;
 PLcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;->setupSocket(IIJJI)V
-PLcom/android/server/connectivity/NetworkDiagnostics;-><init>(Landroid/net/Network;Landroid/net/LinkProperties;J)V
-PLcom/android/server/connectivity/NetworkDiagnostics;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/connectivity/NetworkDiagnostics;-><clinit>()V
+HPLcom/android/server/connectivity/NetworkDiagnostics;-><init>(Landroid/net/Network;Landroid/net/LinkProperties;J)V
+PLcom/android/server/connectivity/NetworkDiagnostics;->access$000(Lcom/android/server/connectivity/NetworkDiagnostics;)Ljava/util/concurrent/CountDownLatch;
+HPLcom/android/server/connectivity/NetworkDiagnostics;->access$100()J
+PLcom/android/server/connectivity/NetworkDiagnostics;->access$200(Lcom/android/server/connectivity/NetworkDiagnostics;)Ljava/lang/Integer;
+PLcom/android/server/connectivity/NetworkDiagnostics;->access$300(Lcom/android/server/connectivity/NetworkDiagnostics;)Landroid/net/Network;
+PLcom/android/server/connectivity/NetworkDiagnostics;->access$400(Lcom/android/server/connectivity/NetworkDiagnostics;)J
+HPLcom/android/server/connectivity/NetworkDiagnostics;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/connectivity/NetworkDiagnostics;->getInterfaceIndex(Ljava/lang/String;)Ljava/lang/Integer;
-PLcom/android/server/connectivity/NetworkDiagnostics;->getMeasurements()Ljava/util/List;
+HPLcom/android/server/connectivity/NetworkDiagnostics;->getMeasurements()Ljava/util/List;
+HPLcom/android/server/connectivity/NetworkDiagnostics;->now()J
+PLcom/android/server/connectivity/NetworkDiagnostics;->prepareDnsMeasurement(Ljava/net/InetAddress;)V
 PLcom/android/server/connectivity/NetworkDiagnostics;->prepareExplicitSourceIcmpMeasurements(Ljava/net/InetAddress;)V
+PLcom/android/server/connectivity/NetworkDiagnostics;->prepareIcmpMeasurement(Ljava/net/InetAddress;)V
 PLcom/android/server/connectivity/NetworkDiagnostics;->startMeasurements()V
+PLcom/android/server/connectivity/NetworkDiagnostics;->totalMeasurementCount()I
 PLcom/android/server/connectivity/NetworkDiagnostics;->waitForMeasurements()V
-HSPLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;-><init>(Ljava/lang/String;II)V
-HSPLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;->values()[Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;
-HSPLcom/android/server/connectivity/NetworkNotificationManager;->clearNotification(I)V
-HSPLcom/android/server/connectivity/NetworkNotificationManager;->clearNotification(ILcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)V
+PLcom/android/server/connectivity/NetworkNotificationManager$1;-><clinit>()V
+PLcom/android/server/connectivity/NetworkNotificationManager$NotificationType$Holder;-><clinit>()V
+PLcom/android/server/connectivity/NetworkNotificationManager$NotificationType$Holder;->access$000()Landroid/util/SparseArray;
+PLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;-><clinit>()V
+PLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;-><init>(Ljava/lang/String;II)V
+HPLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;->getFromId(I)Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;
+PLcom/android/server/connectivity/NetworkNotificationManager$NotificationType;->values()[Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;
+HSPLcom/android/server/connectivity/NetworkNotificationManager;-><clinit>()V
+HSPLcom/android/server/connectivity/NetworkNotificationManager;-><init>(Landroid/content/Context;Landroid/telephony/TelephonyManager;Landroid/app/NotificationManager;)V
+PLcom/android/server/connectivity/NetworkNotificationManager;->approximateTransportType(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+HPLcom/android/server/connectivity/NetworkNotificationManager;->clearNotification(I)V
+HPLcom/android/server/connectivity/NetworkNotificationManager;->clearNotification(ILcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)V
+PLcom/android/server/connectivity/NetworkNotificationManager;->getFirstTransportType(Lcom/android/server/connectivity/NetworkAgentInfo;)I
+PLcom/android/server/connectivity/NetworkNotificationManager;->getIcon(ILcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)I
 PLcom/android/server/connectivity/NetworkNotificationManager;->getTransportName(I)Ljava/lang/String;
+PLcom/android/server/connectivity/NetworkNotificationManager;->nameOf(I)Ljava/lang/String;
 PLcom/android/server/connectivity/NetworkNotificationManager;->priority(Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;)I
-HSPLcom/android/server/connectivity/NetworkNotificationManager;->setProvNotificationVisible(ZILjava/lang/String;)V
-PLcom/android/server/connectivity/NetworkNotificationManager;->showNotification(ILcom/android/server/connectivity/NetworkNotificationManager$NotificationType;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/app/PendingIntent;Z)V
+PLcom/android/server/connectivity/NetworkNotificationManager;->setProvNotificationVisible(ZILjava/lang/String;)V
+HPLcom/android/server/connectivity/NetworkNotificationManager;->showNotification(ILcom/android/server/connectivity/NetworkNotificationManager$NotificationType;Lcom/android/server/connectivity/NetworkAgentInfo;Lcom/android/server/connectivity/NetworkAgentInfo;Landroid/app/PendingIntent;Z)V
+PLcom/android/server/connectivity/NetworkNotificationManager;->tagFor(I)Ljava/lang/String;
+HSPLcom/android/server/connectivity/PacManager$1;-><init>(Lcom/android/server/connectivity/PacManager;)V
+HSPLcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver;-><init>(Lcom/android/server/connectivity/PacManager;)V
 HSPLcom/android/server/connectivity/PacManager;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/connectivity/PacManager;->getAlarmManager()Landroid/app/AlarmManager;
+PLcom/android/server/connectivity/PacManager;->setCurrentProxyScriptUrl(Landroid/net/ProxyInfo;)Z
+HSPLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;-><init>(Lcom/android/server/connectivity/PermissionMonitor;)V
+HSPLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;-><init>(Lcom/android/server/connectivity/PermissionMonitor;Lcom/android/server/connectivity/PermissionMonitor$1;)V
+PLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;->getPermissionForUid(I)I
 PLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;->onPackageChanged(Ljava/lang/String;I)V
 PLcom/android/server/connectivity/PermissionMonitor$PackageListObserver;->onPackageRemoved(Ljava/lang/String;I)V
-HSPLcom/android/server/connectivity/PermissionMonitor;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;)V
+HSPLcom/android/server/connectivity/PermissionMonitor;-><clinit>()V
+HSPLcom/android/server/connectivity/PermissionMonitor;-><init>(Landroid/content/Context;Landroid/net/INetd;)V
+PLcom/android/server/connectivity/PermissionMonitor;->access$000(Lcom/android/server/connectivity/PermissionMonitor;)Landroid/content/pm/PackageManager;
+PLcom/android/server/connectivity/PermissionMonitor;->access$100(Lcom/android/server/connectivity/PermissionMonitor;Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/connectivity/PermissionMonitor;->access$200([Ljava/lang/String;[I)I
+PLcom/android/server/connectivity/PermissionMonitor;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/connectivity/PermissionMonitor;->getDeviceFirstSdkInt()I
+HSPLcom/android/server/connectivity/PermissionMonitor;->getNetdPermissionMask([Ljava/lang/String;[I)I
 PLcom/android/server/connectivity/PermissionMonitor;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/connectivity/PermissionMonitor;->hasNetworkPermission(Landroid/content/pm/PackageInfo;)Z
 HSPLcom/android/server/connectivity/PermissionMonitor;->hasPermission(Landroid/content/pm/PackageInfo;Ljava/lang/String;)Z
 HSPLcom/android/server/connectivity/PermissionMonitor;->hasRestrictedNetworkPermission(Landroid/content/pm/PackageInfo;)Z
 HSPLcom/android/server/connectivity/PermissionMonitor;->hasUseBackgroundNetworksPermission(I)Z
 PLcom/android/server/connectivity/PermissionMonitor;->highestPermissionForUid(Ljava/lang/Boolean;Ljava/lang/String;)Ljava/lang/Boolean;
-PLcom/android/server/connectivity/PermissionMonitor;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/server/connectivity/PermissionMonitor;->onPackageRemoved(I)V
+HPLcom/android/server/connectivity/PermissionMonitor;->intersectUids(Ljava/util/Set;Ljava/util/Set;)Ljava/util/Set;
+HSPLcom/android/server/connectivity/PermissionMonitor;->isVendorApp(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/connectivity/PermissionMonitor;->lambda$removeBypassingUids$0$PermissionMonitor(Ljava/lang/Integer;)Z
+HSPLcom/android/server/connectivity/PermissionMonitor;->log(Ljava/lang/String;)V
+PLcom/android/server/connectivity/PermissionMonitor;->loge(Ljava/lang/String;)V
+PLcom/android/server/connectivity/PermissionMonitor;->loge(Ljava/lang/String;Ljava/lang/Throwable;)V
+HPLcom/android/server/connectivity/PermissionMonitor;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/connectivity/PermissionMonitor;->onPackageRemoved(I)V
+PLcom/android/server/connectivity/PermissionMonitor;->onUserAdded(I)V
+PLcom/android/server/connectivity/PermissionMonitor;->onUserRemoved(I)V
+PLcom/android/server/connectivity/PermissionMonitor;->onVpnUidRangesAdded(Ljava/lang/String;Ljava/util/Set;I)V
+PLcom/android/server/connectivity/PermissionMonitor;->onVpnUidRangesRemoved(Ljava/lang/String;Ljava/util/Set;I)V
+PLcom/android/server/connectivity/PermissionMonitor;->removeBypassingUids(Ljava/util/Set;I)V
+HPLcom/android/server/connectivity/PermissionMonitor;->sendPackagePermissionsForUid(II)V
 HSPLcom/android/server/connectivity/PermissionMonitor;->sendPackagePermissionsToNetd(Landroid/util/SparseIntArray;)V
 HSPLcom/android/server/connectivity/PermissionMonitor;->startMonitoring()V
+HSPLcom/android/server/connectivity/PermissionMonitor;->toIntArray(Ljava/util/Collection;)[I
 HSPLcom/android/server/connectivity/PermissionMonitor;->update(Ljava/util/Set;Ljava/util/Map;Z)V
+PLcom/android/server/connectivity/PermissionMonitor;->updateVpnUids(Ljava/lang/String;Ljava/util/Set;Z)V
+HSPLcom/android/server/connectivity/ProxyTracker;-><clinit>()V
+HSPLcom/android/server/connectivity/ProxyTracker;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+HPLcom/android/server/connectivity/ProxyTracker;->canonicalizeProxyInfo(Landroid/net/ProxyInfo;)Landroid/net/ProxyInfo;
+PLcom/android/server/connectivity/ProxyTracker;->getDefaultProxy()Landroid/net/ProxyInfo;
 HSPLcom/android/server/connectivity/ProxyTracker;->getGlobalProxy()Landroid/net/ProxyInfo;
 HSPLcom/android/server/connectivity/ProxyTracker;->loadDeprecatedGlobalHttpProxy()V
 HSPLcom/android/server/connectivity/ProxyTracker;->loadGlobalProxy()V
-HSPLcom/android/server/connectivity/ProxyTracker;->proxyInfoEqual(Landroid/net/ProxyInfo;Landroid/net/ProxyInfo;)Z
-HSPLcom/android/server/connectivity/ProxyTracker;->setDefaultProxy(Landroid/net/ProxyInfo;)V
+HPLcom/android/server/connectivity/ProxyTracker;->proxyInfoEqual(Landroid/net/ProxyInfo;Landroid/net/ProxyInfo;)Z
+HPLcom/android/server/connectivity/ProxyTracker;->sendProxyBroadcast()V
+HPLcom/android/server/connectivity/ProxyTracker;->setDefaultProxy(Landroid/net/ProxyInfo;)V
+PLcom/android/server/connectivity/ProxyTracker;->setGlobalProxy(Landroid/net/ProxyInfo;)V
+HSPLcom/android/server/connectivity/TcpKeepaliveController;-><clinit>()V
 HSPLcom/android/server/connectivity/TcpKeepaliveController;-><init>(Landroid/os/Handler;)V
-HSPLcom/android/server/connectivity/Tethering$3;->updateInterfaceState(Landroid/net/ip/IpServer;II)V
-HSPLcom/android/server/connectivity/Tethering$3;->updateLinkProperties(Landroid/net/ip/IpServer;Landroid/net/LinkProperties;)V
-HSPLcom/android/server/connectivity/Tethering$StateReceiver;->handleConnectivityAction(Landroid/content/Intent;)V
-HSPLcom/android/server/connectivity/Tethering$StateReceiver;->handleUsbAction(Landroid/content/Intent;)V
-HSPLcom/android/server/connectivity/Tethering$StateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;->processMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->excludeDownstreamInterface(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes()V
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;->sendOffloadExemptPrefixes(Ljava/util/Set;)V
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM;-><init>(Lcom/android/server/connectivity/Tethering;Ljava/lang/String;Landroid/os/Looper;Lcom/android/server/connectivity/tethering/TetheringDependencies;)V
-HSPLcom/android/server/connectivity/Tethering$TetherMasterSM;->handleInterfaceServingStateInactive(Landroid/net/ip/IpServer;)V
-HSPLcom/android/server/connectivity/Tethering$TetheringUserRestrictionListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-HSPLcom/android/server/connectivity/Tethering;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/net/INetworkStatsService;Landroid/net/INetworkPolicyManager;Landroid/os/Looper;Lcom/android/server/connectivity/MockableSystemProperties;Lcom/android/server/connectivity/tethering/TetheringDependencies;)V
-HSPLcom/android/server/connectivity/Tethering;->clearTetheredNotification()V
-PLcom/android/server/connectivity/Tethering;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering;->enableTetheringInternal(IZLandroid/os/ResultReceiver;)V
-PLcom/android/server/connectivity/Tethering;->getTetherableBluetoothRegexs()[Ljava/lang/String;
-PLcom/android/server/connectivity/Tethering;->getTetherableUsbRegexs()[Ljava/lang/String;
-HSPLcom/android/server/connectivity/Tethering;->getTetherableWifiRegexs()[Ljava/lang/String;
-PLcom/android/server/connectivity/Tethering;->getTetheredIfaces()[Ljava/lang/String;
-HSPLcom/android/server/connectivity/Tethering;->hasTetherableConfiguration()Z
-HSPLcom/android/server/connectivity/Tethering;->interfaceAdded(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering;->interfaceLinkStateChanged(Ljava/lang/String;Z)V
-PLcom/android/server/connectivity/Tethering;->interfaceRemoved(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering;->interfaceStatusChanged(Ljava/lang/String;Z)V
-HSPLcom/android/server/connectivity/Tethering;->lambda$new$0$Tethering(Landroid/content/Intent;)V
-HSPLcom/android/server/connectivity/Tethering;->lambda$new$1$Tethering(Landroid/content/Intent;)V
-HSPLcom/android/server/connectivity/Tethering;->logMessage(Lcom/android/internal/util/State;I)V
-HSPLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering;->maybeTrackNewInterfaceLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/connectivity/Tethering;->notifyInterfaceStateChange(Landroid/net/ip/IpServer;II)V
-HSPLcom/android/server/connectivity/Tethering;->notifyLinkPropertiesChanged(Landroid/net/ip/IpServer;Landroid/net/LinkProperties;)V
-HSPLcom/android/server/connectivity/Tethering;->sendTetherStateChangedBroadcast()V
-HSPLcom/android/server/connectivity/Tethering;->setWifiTethering(Z)I
-HSPLcom/android/server/connectivity/Tethering;->startStateMachineUpdaters(Landroid/os/Handler;)V
-PLcom/android/server/connectivity/Tethering;->stopTrackingInterfaceLocked(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/Tethering;->systemReady()V
-HSPLcom/android/server/connectivity/Tethering;->updateConfiguration()V
-PLcom/android/server/connectivity/Tethering;->upstreamWanted()Z
-PLcom/android/server/connectivity/Vpn$2;->interfaceRemoved(Ljava/lang/String;)V
+PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkAgentConfig;I)V
+PLcom/android/server/connectivity/Vpn$1;-><init>(Lcom/android/server/connectivity/Vpn;Landroid/os/Looper;Landroid/content/Context;Ljava/lang/String;Landroid/net/NetworkInfo;Landroid/net/NetworkCapabilities;Landroid/net/LinkProperties;ILandroid/net/NetworkMisc;I)V
+PLcom/android/server/connectivity/Vpn$1;->unwanted()V
+HSPLcom/android/server/connectivity/Vpn$2;-><init>(Lcom/android/server/connectivity/Vpn;)V
+HPLcom/android/server/connectivity/Vpn$2;->interfaceRemoved(Ljava/lang/String;)V
+PLcom/android/server/connectivity/Vpn$Connection;-><init>(Lcom/android/server/connectivity/Vpn;)V
+PLcom/android/server/connectivity/Vpn$Connection;-><init>(Lcom/android/server/connectivity/Vpn;Lcom/android/server/connectivity/Vpn$1;)V
+PLcom/android/server/connectivity/Vpn$Connection;->access$000(Lcom/android/server/connectivity/Vpn$Connection;)Landroid/os/IBinder;
 PLcom/android/server/connectivity/Vpn$Connection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/connectivity/Vpn$Connection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner$1;-><init>(Lcom/android/server/connectivity/Vpn$LegacyVpnRunner;)V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;-><init>(Lcom/android/server/connectivity/Vpn;Lcom/android/internal/net/VpnConfig;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/net/VpnProfile;)V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->access$1000(Lcom/android/server/connectivity/Vpn$LegacyVpnRunner;)Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->bringup()V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->checkInterruptAndDelay(Z)V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->exit()V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->run()V
+PLcom/android/server/connectivity/Vpn$LegacyVpnRunner;->waitForDaemonsToStop()V
+HSPLcom/android/server/connectivity/Vpn$SystemServices;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
 HSPLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecureGetStringForUser(Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecurePutIntForUser(Ljava/lang/String;II)V
+PLcom/android/server/connectivity/Vpn$SystemServices;->settingsSecurePutStringForUser(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/connectivity/Vpn;-><clinit>()V
+HSPLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;I)V
 HSPLcom/android/server/connectivity/Vpn;-><init>(Landroid/os/Looper;Landroid/content/Context;Landroid/os/INetworkManagementService;ILcom/android/server/connectivity/Vpn$SystemServices;)V
-PLcom/android/server/connectivity/Vpn;->addUserToRanges(Ljava/util/Set;ILjava/util/List;Ljava/util/List;)V
+PLcom/android/server/connectivity/Vpn;->access$1300(Lcom/android/server/connectivity/Vpn;)V
+PLcom/android/server/connectivity/Vpn;->access$1400(Lcom/android/server/connectivity/Vpn;)V
+PLcom/android/server/connectivity/Vpn;->access$1500(Lcom/android/server/connectivity/Vpn;)Landroid/net/NetworkInfo;
+PLcom/android/server/connectivity/Vpn;->access$300(Lcom/android/server/connectivity/Vpn;)Ljava/lang/String;
+PLcom/android/server/connectivity/Vpn;->access$302(Lcom/android/server/connectivity/Vpn;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/connectivity/Vpn;->access$400(Lcom/android/server/connectivity/Vpn;Ljava/lang/String;)I
+PLcom/android/server/connectivity/Vpn;->access$502(Lcom/android/server/connectivity/Vpn;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
+PLcom/android/server/connectivity/Vpn;->access$600(Lcom/android/server/connectivity/Vpn;)Lcom/android/server/connectivity/Vpn$Connection;
+PLcom/android/server/connectivity/Vpn;->access$602(Lcom/android/server/connectivity/Vpn;Lcom/android/server/connectivity/Vpn$Connection;)Lcom/android/server/connectivity/Vpn$Connection;
+PLcom/android/server/connectivity/Vpn;->access$700(Lcom/android/server/connectivity/Vpn;)Landroid/content/Context;
+PLcom/android/server/connectivity/Vpn;->access$800(Lcom/android/server/connectivity/Vpn;)V
+PLcom/android/server/connectivity/Vpn;->access$900(Lcom/android/server/connectivity/Vpn;)Z
+HPLcom/android/server/connectivity/Vpn;->addUserToRanges(Ljava/util/Set;ILjava/util/List;Ljava/util/List;)V
 PLcom/android/server/connectivity/Vpn;->agentConnect()V
+PLcom/android/server/connectivity/Vpn;->agentDisconnect()V
+PLcom/android/server/connectivity/Vpn;->agentDisconnect(Landroid/net/NetworkAgent;)V
 HSPLcom/android/server/connectivity/Vpn;->appliesToUid(I)Z
-PLcom/android/server/connectivity/Vpn;->applyUnderlyingCapabilities(Landroid/net/ConnectivityManager;[Landroid/net/Network;Landroid/net/NetworkCapabilities;Z)V
+HPLcom/android/server/connectivity/Vpn;->applyUnderlyingCapabilities(Landroid/net/ConnectivityManager;[Landroid/net/Network;Landroid/net/NetworkCapabilities;Z)V
 PLcom/android/server/connectivity/Vpn;->canHaveRestrictedProfile(I)Z
-PLcom/android/server/connectivity/Vpn;->createUserAndRestrictedProfilesRanges(ILjava/util/List;Ljava/util/List;)Ljava/util/Set;
+HPLcom/android/server/connectivity/Vpn;->createUserAndRestrictedProfilesRanges(ILjava/util/List;Ljava/util/List;)Ljava/util/Set;
+PLcom/android/server/connectivity/Vpn;->doesPackageHaveAppop(Landroid/content/Context;Ljava/lang/String;I)Z
 HSPLcom/android/server/connectivity/Vpn;->doesPackageTargetAtLeastQ(Ljava/lang/String;)Z
-PLcom/android/server/connectivity/Vpn;->establish(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/connectivity/Vpn;->getAlwaysOnPackage()Ljava/lang/String;
+HPLcom/android/server/connectivity/Vpn;->enforceControlPermission()V
+PLcom/android/server/connectivity/Vpn;->enforceControlPermissionOrInternalCaller()V
+PLcom/android/server/connectivity/Vpn;->enforceSettingsPermission()V
+HPLcom/android/server/connectivity/Vpn;->establish(Lcom/android/internal/net/VpnConfig;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/connectivity/Vpn;->findIPv4DefaultRoute(Landroid/net/LinkProperties;)Landroid/net/RouteInfo;
+PLcom/android/server/connectivity/Vpn;->getAlwaysOnPackage()Ljava/lang/String;
 HSPLcom/android/server/connectivity/Vpn;->getAppUid(Ljava/lang/String;I)I
-HSPLcom/android/server/connectivity/Vpn;->getLockdown()Z
-HSPLcom/android/server/connectivity/Vpn;->getNetId()I
-HSPLcom/android/server/connectivity/Vpn;->getUnderlyingNetworks()[Landroid/net/Network;
-HSPLcom/android/server/connectivity/Vpn;->getVpnConfig()Lcom/android/internal/net/VpnConfig;
-HSPLcom/android/server/connectivity/Vpn;->getVpnInfo()Lcom/android/internal/net/VpnInfo;
+PLcom/android/server/connectivity/Vpn;->getAppsUids(Ljava/util/List;I)Ljava/util/SortedSet;
+PLcom/android/server/connectivity/Vpn;->getLegacyVpnInfo()Lcom/android/internal/net/LegacyVpnInfo;
+PLcom/android/server/connectivity/Vpn;->getLegacyVpnInfoPrivileged()Lcom/android/internal/net/LegacyVpnInfo;
+HPLcom/android/server/connectivity/Vpn;->getLockdown()Z
+HPLcom/android/server/connectivity/Vpn;->getNetId()I
+HPLcom/android/server/connectivity/Vpn;->getUnderlyingNetworks()[Landroid/net/Network;
+HPLcom/android/server/connectivity/Vpn;->getVpnConfig()Lcom/android/internal/net/VpnConfig;
+HPLcom/android/server/connectivity/Vpn;->getVpnInfo()Lcom/android/internal/net/VpnInfo;
+PLcom/android/server/connectivity/Vpn;->isAlwaysOnPackageSupported(Ljava/lang/String;)Z
+HPLcom/android/server/connectivity/Vpn;->isCallerEstablishedOwnerLocked()Z
+HSPLcom/android/server/connectivity/Vpn;->isCurrentPreparedPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/connectivity/Vpn;->isNullOrLegacyVpn(Ljava/lang/String;)Z
+HSPLcom/android/server/connectivity/Vpn;->isRunningLocked()Z
+PLcom/android/server/connectivity/Vpn;->isVpnPreConsented(Landroid/content/Context;Ljava/lang/String;I)Z
+PLcom/android/server/connectivity/Vpn;->isVpnServicePreConsented(Landroid/content/Context;Ljava/lang/String;)Z
+HPLcom/android/server/connectivity/Vpn;->isVpnUserPreConsented(Ljava/lang/String;)Z
 HSPLcom/android/server/connectivity/Vpn;->loadAlwaysOnPackage()V
-PLcom/android/server/connectivity/Vpn;->makeLinkProperties()Landroid/net/LinkProperties;
+HPLcom/android/server/connectivity/Vpn;->makeLinkProperties()Landroid/net/LinkProperties;
+PLcom/android/server/connectivity/Vpn;->onUserAdded(I)V
+PLcom/android/server/connectivity/Vpn;->onUserRemoved(I)V
+PLcom/android/server/connectivity/Vpn;->onUserStopped()V
 PLcom/android/server/connectivity/Vpn;->prepare(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/connectivity/Vpn;->prepare(Ljava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/connectivity/Vpn;->prepareInternal(Ljava/lang/String;)V
-PLcom/android/server/connectivity/Vpn;->providesRoutesToMostDestinations(Landroid/net/LinkProperties;)Z
+PLcom/android/server/connectivity/Vpn;->prepareStatusIntent()V
+PLcom/android/server/connectivity/Vpn;->saveAlwaysOnPackage()V
 HSPLcom/android/server/connectivity/Vpn;->setAllowOnlyVpnForUids(ZLjava/util/Collection;)Z
+PLcom/android/server/connectivity/Vpn;->setAlwaysOnPackage(Ljava/lang/String;ZLjava/util/List;)Z
 HSPLcom/android/server/connectivity/Vpn;->setAlwaysOnPackageInternal(Ljava/lang/String;ZLjava/util/List;)Z
+PLcom/android/server/connectivity/Vpn;->setLockdown(Z)V
+PLcom/android/server/connectivity/Vpn;->setPackageAuthorization(Ljava/lang/String;I)Z
+PLcom/android/server/connectivity/Vpn;->setPackageAuthorization(Ljava/lang/String;Z)Z
+HPLcom/android/server/connectivity/Vpn;->setUnderlyingNetworks([Landroid/net/Network;)Z
 HSPLcom/android/server/connectivity/Vpn;->setVpnForcedLocked(Z)V
-HSPLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z
+PLcom/android/server/connectivity/Vpn;->startAlwaysOnVpn()Z
+PLcom/android/server/connectivity/Vpn;->startLegacyVpn(Lcom/android/internal/net/VpnConfig;[Ljava/lang/String;[Ljava/lang/String;Lcom/android/internal/net/VpnProfile;)V
+PLcom/android/server/connectivity/Vpn;->startLegacyVpn(Lcom/android/internal/net/VpnProfile;Landroid/security/KeyStore;Landroid/net/LinkProperties;)V
+PLcom/android/server/connectivity/Vpn;->startLegacyVpnPrivileged(Lcom/android/internal/net/VpnProfile;Landroid/security/KeyStore;Landroid/net/LinkProperties;)V
+PLcom/android/server/connectivity/Vpn;->stopLegacyVpnPrivileged()V
 HSPLcom/android/server/connectivity/Vpn;->updateAlwaysOnNotification(Landroid/net/NetworkInfo$DetailedState;)V
 HSPLcom/android/server/connectivity/Vpn;->updateCapabilities(Landroid/net/Network;)Landroid/net/NetworkCapabilities;
-PLcom/android/server/connectivity/Vpn;->updateState(Landroid/net/NetworkInfo$DetailedState;Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/tethering/-$$Lambda$OffloadController$OffloadTetheringStatsProvider$3TF0NI3fE8A-xW0925oMv3YzAOk;->run()V
-HSPLcom/android/server/connectivity/tethering/-$$Lambda$OffloadController$OffloadTetheringStatsProvider$qF4r7cON-_Hdae6JwwsXWcAUxEQ;->run()V
-HSPLcom/android/server/connectivity/tethering/EntitlementManager;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;Lcom/android/server/connectivity/MockableSystemProperties;)V
-HSPLcom/android/server/connectivity/tethering/EntitlementManager;->getCarrierConfig()Landroid/os/PersistableBundle;
-HSPLcom/android/server/connectivity/tethering/EntitlementManager;->isTetherProvisioningRequired()Z
-HSPLcom/android/server/connectivity/tethering/EntitlementManager;->reevaluateSimCardProvisioning()V
-HSPLcom/android/server/connectivity/tethering/EntitlementManager;->updateConfiguration(Lcom/android/server/connectivity/tethering/TetheringConfiguration;)V
-HSPLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->findDownstream(Landroid/net/ip/IpServer;)Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator$Downstream;
-HSPLcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;->removeActiveDownstream(Landroid/net/ip/IpServer;)V
-HSPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->getTetherStats(I)Landroid/net/NetworkStats;
-HSPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->lambda$getTetherStats$0$OffloadController$OffloadTetheringStatsProvider()V
-HSPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->lambda$setInterfaceQuota$1$OffloadController$OffloadTetheringStatsProvider(JLjava/lang/String;)V
-HSPLcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;->setInterfaceQuota(Ljava/lang/String;J)V
-HSPLcom/android/server/connectivity/tethering/OffloadController;-><init>(Landroid/os/Handler;Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;Landroid/content/ContentResolver;Landroid/os/INetworkManagementService;Landroid/net/util/SharedLog;)V
-PLcom/android/server/connectivity/tethering/OffloadController;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/connectivity/tethering/OffloadController;->maybeUpdateDataLimit(Ljava/lang/String;)Z
-HSPLcom/android/server/connectivity/tethering/OffloadController;->removeDownstreamInterface(Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/tethering/OffloadController;->setLocalPrefixes(Ljava/util/Set;)V
-HSPLcom/android/server/connectivity/tethering/OffloadHardwareInterface$ForwardedStats;-><init>()V
-PLcom/android/server/connectivity/tethering/OffloadHardwareInterface;->getDefaultTetherOffloadDisabled()I
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;-><init>(Landroid/content/Context;Landroid/net/util/SharedLog;I)V
-PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/connectivity/tethering/TetheringConfiguration;->dumpStringArray(Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;)V
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->getProvisioningAppNoUi(Landroid/content/res/Resources;)Ljava/lang/String;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->getResourceBoolean(Landroid/content/res/Resources;I)Z
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->getResourceStringArray(Landroid/content/res/Resources;I)[Ljava/lang/String;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->getResourcesForSubIdWrapper(Landroid/content/Context;I)Landroid/content/res/Resources;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->getUpstreamIfaceTypes(Landroid/content/res/Resources;Z)Ljava/util/Collection;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->hasMobileHotspotProvisionApp()Z
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->isBluetooth(Ljava/lang/String;)Z
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->isUsb(Ljava/lang/String;)Z
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->isWifi(Ljava/lang/String;)Z
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->makeString([Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->preferredUpstreamNames(Ljava/util/Collection;)[Ljava/lang/String;
-HSPLcom/android/server/connectivity/tethering/TetheringConfiguration;->toString()Ljava/lang/String;
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getDefaultDataSubscriptionId()I
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getEntitlementManager(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;Lcom/android/server/connectivity/MockableSystemProperties;)Lcom/android/server/connectivity/tethering/EntitlementManager;
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getIPv6TetheringCoordinator(Ljava/util/ArrayList;Landroid/net/util/SharedLog;)Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getIpServerDependencies()Landroid/net/ip/IpServer$Dependencies;
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getOffloadHardwareInterface(Landroid/os/Handler;Landroid/net/util/SharedLog;)Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;
-HSPLcom/android/server/connectivity/tethering/TetheringDependencies;->getUpstreamNetworkMonitor(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;I)Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onAvailable(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onLinkPropertiesChanged(Landroid/net/Network;Landroid/net/LinkProperties;)V
-PLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onLost(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onNetworkResumed(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;->onNetworkSuspended(Landroid/net/Network;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/util/StateMachine;Landroid/net/util/SharedLog;I)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->getLocalPrefixes()Ljava/util/Set;
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->mobileNetworkRequested()Z
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->startTrackDefaultNetwork(Landroid/net/NetworkRequest;)V
-HSPLcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;->updateMobileRequiresDun(Z)V
+HPLcom/android/server/connectivity/Vpn;->updateState(Landroid/net/NetworkInfo$DetailedState;Ljava/lang/String;)V
+HSPLcom/android/server/content/-$$Lambda$ContentService$5-BNVxd6JTWU9ogp3u-0kfiqgbI;-><init>(Lcom/android/server/content/ContentService;)V
+HSPLcom/android/server/content/-$$Lambda$ContentService$5-BNVxd6JTWU9ogp3u-0kfiqgbI;->getPackages(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/content/-$$Lambda$SyncManager$4nklbtZn-JuPLOkU32f34xZoiug;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/-$$Lambda$SyncManager$4nklbtZn-JuPLOkU32f34xZoiug;->run()V
+HSPLcom/android/server/content/-$$Lambda$SyncManager$68MEyNkTh36YmYoFlURJoRa_-cY;-><clinit>()V
 HSPLcom/android/server/content/-$$Lambda$SyncManager$68MEyNkTh36YmYoFlURJoRa_-cY;-><init>()V
-PLcom/android/server/content/-$$Lambda$SyncManager$68MEyNkTh36YmYoFlURJoRa_-cY;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/content/-$$Lambda$SyncManager$6y-gkGdDn-rSLmR9G8Pz_n9zy2A;->run()V
-PLcom/android/server/content/-$$Lambda$SyncManager$9EoLpTk5JrHZn9R-uS0lqCVrpRw;-><init>(Ljava/lang/StringBuilder;Lcom/android/server/content/SyncManager$PrintTable;)V
-PLcom/android/server/content/-$$Lambda$SyncManager$9EoLpTk5JrHZn9R-uS0lqCVrpRw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/content/-$$Lambda$SyncManager$68MEyNkTh36YmYoFlURJoRa_-cY;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/content/-$$Lambda$SyncManager$6y-gkGdDn-rSLmR9G8Pz_n9zy2A;-><init>(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/-$$Lambda$SyncManager$6y-gkGdDn-rSLmR9G8Pz_n9zy2A;->run()V
+HPLcom/android/server/content/-$$Lambda$SyncManager$9EoLpTk5JrHZn9R-uS0lqCVrpRw;-><init>(Ljava/lang/StringBuilder;Lcom/android/server/content/SyncManager$PrintTable;)V
+HPLcom/android/server/content/-$$Lambda$SyncManager$9EoLpTk5JrHZn9R-uS0lqCVrpRw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/content/-$$Lambda$SyncManager$BRG-YMU-C9QC6JWVXAvsoEZC6Zc;-><init>(Lcom/android/server/content/SyncManager;Landroid/accounts/AccountAndUser;IILjava/lang/String;Landroid/os/Bundle;IJIIILjava/lang/String;)V
+HSPLcom/android/server/content/-$$Lambda$SyncManager$CjX_2uO4O4xJPQnKzeqvGwd87Dc;-><init>(Lcom/android/server/content/SyncManager;I)V
 HSPLcom/android/server/content/-$$Lambda$SyncManager$CjX_2uO4O4xJPQnKzeqvGwd87Dc;->run()V
-PLcom/android/server/content/-$$Lambda$SyncManager$EMXCZP9LDjgUTYbLsEoVu9Ccntw;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/-$$Lambda$SyncManager$EMXCZP9LDjgUTYbLsEoVu9Ccntw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/content/-$$Lambda$SyncManager$EMXCZP9LDjgUTYbLsEoVu9Ccntw;-><init>(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/-$$Lambda$SyncManager$EMXCZP9LDjgUTYbLsEoVu9Ccntw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/content/-$$Lambda$SyncManager$HhiSFjEoPA_Hnv3xYZGfwkalc68;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/-$$Lambda$SyncManager$HhiSFjEoPA_Hnv3xYZGfwkalc68;->onAppPermissionChanged(Landroid/accounts/Account;I)V
 PLcom/android/server/content/-$$Lambda$SyncManager$XKEiBZ17uDgUCTwf_kh9_pH7usQ;-><init>(Lcom/android/server/content/SyncManager;Landroid/accounts/AccountAndUser;ILjava/lang/String;Landroid/os/Bundle;IJIIILjava/lang/String;)V
 PLcom/android/server/content/-$$Lambda$SyncManager$XKEiBZ17uDgUCTwf_kh9_pH7usQ;->onReady()V
+PLcom/android/server/content/-$$Lambda$SyncManager$ag0YGuZ1oL06fytmNlyErbNyYcw;-><clinit>()V
 PLcom/android/server/content/-$$Lambda$SyncManager$ag0YGuZ1oL06fytmNlyErbNyYcw;-><init>()V
+PLcom/android/server/content/-$$Lambda$SyncManager$ag0YGuZ1oL06fytmNlyErbNyYcw;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/content/-$$Lambda$SyncManager$bVs0A6OYdmGkOiq_lbp5MiBwelw;-><clinit>()V
 HSPLcom/android/server/content/-$$Lambda$SyncManager$bVs0A6OYdmGkOiq_lbp5MiBwelw;-><init>()V
-PLcom/android/server/content/-$$Lambda$SyncManager$bVs0A6OYdmGkOiq_lbp5MiBwelw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/content/-$$Lambda$SyncManager$bVs0A6OYdmGkOiq_lbp5MiBwelw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/content/-$$Lambda$SyncManager$pdoEVnuSkmOrvULQ9M7Ic-lU5vw;-><clinit>()V
 PLcom/android/server/content/-$$Lambda$SyncManager$pdoEVnuSkmOrvULQ9M7Ic-lU5vw;-><init>()V
 PLcom/android/server/content/-$$Lambda$SyncManager$pdoEVnuSkmOrvULQ9M7Ic-lU5vw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/content/-$$Lambda$SyncManager$rDUHWai3SU0BXk1TE0bLDap9gVc;-><clinit>()V
 PLcom/android/server/content/-$$Lambda$SyncManager$rDUHWai3SU0BXk1TE0bLDap9gVc;-><init>()V
+PLcom/android/server/content/-$$Lambda$SyncManager$rDUHWai3SU0BXk1TE0bLDap9gVc;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/content/-$$Lambda$SyncManager$zZUXjd-GLFQgHtMQ3vq0EWHvir8;-><init>(Landroid/content/Context;Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
 PLcom/android/server/content/-$$Lambda$SyncManager$zZUXjd-GLFQgHtMQ3vq0EWHvir8;->run()V
+HSPLcom/android/server/content/-$$Lambda$SyncManagerConstants$qo5ldQVp10jCUY9aavBZDKP2k6Q;-><init>(Lcom/android/server/content/SyncManagerConstants;)V
 HSPLcom/android/server/content/-$$Lambda$SyncManagerConstants$qo5ldQVp10jCUY9aavBZDKP2k6Q;->run()V
+HSPLcom/android/server/content/ContentService$1;-><init>(Lcom/android/server/content/ContentService;)V
 HSPLcom/android/server/content/ContentService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/content/ContentService$2;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I
-PLcom/android/server/content/ContentService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/content/ContentService$3;->getPackages(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/content/ContentService$2;-><init>(Lcom/android/server/content/ContentService;Landroid/util/SparseIntArray;)V
+HPLcom/android/server/content/ContentService$2;->compare(Ljava/lang/Integer;Ljava/lang/Integer;)I
+HPLcom/android/server/content/ContentService$2;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 HSPLcom/android/server/content/ContentService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/content/ContentService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/content/ContentService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/content/ContentService$Lifecycle;->onStart()V
 HSPLcom/android/server/content/ContentService$Lifecycle;->onStartUser(I)V
-HSPLcom/android/server/content/ContentService$Lifecycle;->onUnlockUser(I)V
-HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
-HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
-PLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/SparseIntArray;)V
+PLcom/android/server/content/ContentService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/content/ContentService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/content/ContentService$ObserverCall;-><init>(Landroid/database/IContentObserver;ZLandroid/net/Uri;II)V
+HSPLcom/android/server/content/ContentService$ObserverCall;->run()V
+HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;-><init>(Lcom/android/server/content/ContentService$ObserverNode;Landroid/database/IContentObserver;ZLjava/lang/Object;IIILandroid/net/Uri;)V
+HSPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->access$400(Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;)I
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->binderDied()V
+HPLcom/android/server/content/ContentService$ObserverNode$ObserverEntry;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/util/SparseIntArray;)V
+HSPLcom/android/server/content/ContentService$ObserverNode;-><init>(Ljava/lang/String;)V
 HSPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZLjava/lang/Object;III)V
-HSPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(ZLandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V
+HSPLcom/android/server/content/ContentService$ObserverNode;->addObserverLocked(Landroid/net/Uri;Landroid/database/IContentObserver;ZLjava/lang/Object;III)V
+HSPLcom/android/server/content/ContentService$ObserverNode;->collectMyObserversLocked(Landroid/net/Uri;ZLandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V
 HSPLcom/android/server/content/ContentService$ObserverNode;->collectObserversLocked(Landroid/net/Uri;ILandroid/database/IContentObserver;ZIILjava/util/ArrayList;)V
-PLcom/android/server/content/ContentService$ObserverNode;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[ILandroid/util/SparseIntArray;)V
+HSPLcom/android/server/content/ContentService$ObserverNode;->countUriSegments(Landroid/net/Uri;)I
+HPLcom/android/server/content/ContentService$ObserverNode;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;[ILandroid/util/SparseIntArray;)V
+HSPLcom/android/server/content/ContentService$ObserverNode;->getUriSegment(Landroid/net/Uri;I)Ljava/lang/String;
 HSPLcom/android/server/content/ContentService$ObserverNode;->removeObserverLocked(Landroid/database/IContentObserver;)Z
+HSPLcom/android/server/content/ContentService;-><clinit>()V
 HSPLcom/android/server/content/ContentService;-><init>(Landroid/content/Context;Z)V
-PLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
-PLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
+HSPLcom/android/server/content/ContentService;->access$000(Lcom/android/server/content/ContentService;)Landroid/util/SparseArray;
+HPLcom/android/server/content/ContentService;->access$100(Lcom/android/server/content/ContentService;ILjava/lang/String;Landroid/net/Uri;)V
+HSPLcom/android/server/content/ContentService;->access$200()Lcom/android/internal/os/BinderDeathDispatcher;
+HPLcom/android/server/content/ContentService;->addPeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;J)V
+HPLcom/android/server/content/ContentService;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
 PLcom/android/server/content/ContentService;->cancelSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)V
-PLcom/android/server/content/ContentService;->cancelSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)V
-HSPLcom/android/server/content/ContentService;->checkUriPermission(Landroid/net/Uri;IIII)I
-PLcom/android/server/content/ContentService;->clampPeriod(J)J
-PLcom/android/server/content/ContentService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/content/ContentService;->findOrCreateCacheLocked(ILjava/lang/String;)Landroid/util/ArrayMap;
-PLcom/android/server/content/ContentService;->getCache(Ljava/lang/String;Landroid/net/Uri;I)Landroid/os/Bundle;
-PLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
-PLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
-PLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z
-PLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z
-PLcom/android/server/content/ContentService;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List;
+HPLcom/android/server/content/ContentService;->cancelSyncAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)V
+HPLcom/android/server/content/ContentService;->checkUriPermission(Landroid/net/Uri;IIII)I
+HPLcom/android/server/content/ContentService;->clampPeriod(J)J
+HPLcom/android/server/content/ContentService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/content/ContentService;->enforceCrossUserPermission(ILjava/lang/String;)V
+HPLcom/android/server/content/ContentService;->enforceNonFullCrossUserPermission(ILjava/lang/String;)V
+HPLcom/android/server/content/ContentService;->findOrCreateCacheLocked(ILjava/lang/String;)Landroid/util/ArrayMap;
+HPLcom/android/server/content/ContentService;->getCache(Ljava/lang/String;Landroid/net/Uri;I)Landroid/os/Bundle;
+HPLcom/android/server/content/ContentService;->getIsSyncable(Landroid/accounts/Account;Ljava/lang/String;)I
+HPLcom/android/server/content/ContentService;->getIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;I)I
+HPLcom/android/server/content/ContentService;->getMasterSyncAutomatically()Z
+HPLcom/android/server/content/ContentService;->getMasterSyncAutomaticallyAsUser(I)Z
+HPLcom/android/server/content/ContentService;->getPeriodicSyncs(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Ljava/util/List;
+HSPLcom/android/server/content/ContentService;->getProviderPackageName(Landroid/net/Uri;I)Ljava/lang/String;
 HSPLcom/android/server/content/ContentService;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType;
-PLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType;
-PLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
-PLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/content/ContentService;->getSyncAdapterTypes()[Landroid/content/SyncAdapterType;
+HPLcom/android/server/content/ContentService;->getSyncAdapterTypesAsUser(I)[Landroid/content/SyncAdapterType;
+HPLcom/android/server/content/ContentService;->getSyncAutomatically(Landroid/accounts/Account;Ljava/lang/String;)Z
+HPLcom/android/server/content/ContentService;->getSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;I)Z
 HSPLcom/android/server/content/ContentService;->getSyncExemptionAndCleanUpExtrasForCaller(ILandroid/os/Bundle;)I
+HSPLcom/android/server/content/ContentService;->getSyncExemptionForCaller(I)I
 HSPLcom/android/server/content/ContentService;->getSyncManager()Lcom/android/server/content/SyncManager;
 HSPLcom/android/server/content/ContentService;->handleIncomingUser(Landroid/net/Uri;IIIZI)I
 HSPLcom/android/server/content/ContentService;->invalidateCacheLocked(ILjava/lang/String;Landroid/net/Uri;)V
-PLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z
-PLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z
+HPLcom/android/server/content/ContentService;->isSyncActive(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;)Z
+HPLcom/android/server/content/ContentService;->isSyncPendingAsUser(Landroid/accounts/Account;Ljava/lang/String;Landroid/content/ComponentName;I)Z
+HSPLcom/android/server/content/ContentService;->lambda$new$0$ContentService(Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/content/ContentService;->normalizeSyncable(I)I
 HSPLcom/android/server/content/ContentService;->notifyChange(Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
-PLcom/android/server/content/ContentService;->putCache(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;I)V
+HSPLcom/android/server/content/ContentService;->notifyChange([Landroid/net/Uri;Landroid/database/IContentObserver;ZIIILjava/lang/String;)V
+HSPLcom/android/server/content/ContentService;->onBootPhase(I)V
+PLcom/android/server/content/ContentService;->onDbCorruption(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/content/ContentService;->onStartUser(I)V
+PLcom/android/server/content/ContentService;->onStopUser(I)V
+PLcom/android/server/content/ContentService;->onUnlockUser(I)V
+HPLcom/android/server/content/ContentService;->putCache(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;I)V
 HSPLcom/android/server/content/ContentService;->registerContentObserver(Landroid/net/Uri;ZLandroid/database/IContentObserver;II)V
-PLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
-PLcom/android/server/content/ContentService;->setIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;II)V
-PLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
-PLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V
+HPLcom/android/server/content/ContentService;->removePeriodicSync(Landroid/accounts/Account;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/content/ContentService;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V
+HPLcom/android/server/content/ContentService;->setIsSyncable(Landroid/accounts/Account;Ljava/lang/String;I)V
+HPLcom/android/server/content/ContentService;->setIsSyncableAsUser(Landroid/accounts/Account;Ljava/lang/String;II)V
+PLcom/android/server/content/ContentService;->setMasterSyncAutomaticallyAsUser(ZI)V
+HPLcom/android/server/content/ContentService;->setSyncAutomaticallyAsUser(Landroid/accounts/Account;Ljava/lang/String;ZI)V
+PLcom/android/server/content/ContentService;->sync(Landroid/content/SyncRequest;Ljava/lang/String;)V
+HPLcom/android/server/content/ContentService;->syncAsUser(Landroid/content/SyncRequest;ILjava/lang/String;)V
 HSPLcom/android/server/content/ContentService;->unregisterContentObserver(Landroid/database/IContentObserver;)V
-PLcom/android/server/content/ContentService;->validateExtras(ILandroid/os/Bundle;)V
-PLcom/android/server/content/SyncAdapterStateFetcher;->getStandbyBucket(ILjava/lang/String;)I
-PLcom/android/server/content/SyncAdapterStateFetcher;->isAppActive(I)Z
-HSPLcom/android/server/content/SyncJobService;-><init>()V
-PLcom/android/server/content/SyncJobService;->callJobFinishedInner(IZLjava/lang/String;)V
-PLcom/android/server/content/SyncJobService;->getInstance()Lcom/android/server/content/SyncJobService;
-HSPLcom/android/server/content/SyncJobService;->isReady()Z
-PLcom/android/server/content/SyncJobService;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
-PLcom/android/server/content/SyncJobService;->markSyncStarted(I)V
-HSPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
-PLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
-HSPLcom/android/server/content/SyncJobService;->updateInstance()V
+HPLcom/android/server/content/ContentService;->validateExtras(ILandroid/os/Bundle;)V
+PLcom/android/server/content/SyncAdapterStateFetcher;-><init>()V
+HPLcom/android/server/content/SyncAdapterStateFetcher;->getStandbyBucket(ILjava/lang/String;)I
+HPLcom/android/server/content/SyncAdapterStateFetcher;->isAppActive(I)Z
+PLcom/android/server/content/SyncJobService;-><clinit>()V
+HPLcom/android/server/content/SyncJobService;-><init>()V
+HPLcom/android/server/content/SyncJobService;->callJobFinished(IZLjava/lang/String;)V
+HPLcom/android/server/content/SyncJobService;->callJobFinishedInner(IZLjava/lang/String;)V
+HPLcom/android/server/content/SyncJobService;->getInstance()Lcom/android/server/content/SyncJobService;
+HPLcom/android/server/content/SyncJobService;->isReady()Z
+HPLcom/android/server/content/SyncJobService;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
+HPLcom/android/server/content/SyncJobService;->markSyncStarted(I)V
+HPLcom/android/server/content/SyncJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+HPLcom/android/server/content/SyncJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
+HPLcom/android/server/content/SyncJobService;->updateInstance()V
+HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;-><init>(Lcom/android/server/content/SyncLogger$RotatingFileLogger;Landroid/os/Looper;)V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;->log(J[Ljava/lang/Object;)V
+HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;-><clinit>()V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;-><init>()V
+HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->closeCurrentLogLocked()V
 PLcom/android/server/content/SyncLogger$RotatingFileLogger;->dumpAll(Ljava/io/PrintWriter;)V
-PLcom/android/server/content/SyncLogger$RotatingFileLogger;->dumpFile(Ljava/io/PrintWriter;Ljava/io/File;)V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->dumpFile(Ljava/io/PrintWriter;Ljava/io/File;)V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->enabled()Z
-PLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->jobParametersToString(Landroid/app/job/JobParameters;)Ljava/lang/String;
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->log([Ljava/lang/Object;)V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->logInner(J[Ljava/lang/Object;)V
 HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->openLogLocked(J)V
-HSPLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V
+HPLcom/android/server/content/SyncLogger$RotatingFileLogger;->purgeOldLogs()V
+HSPLcom/android/server/content/SyncLogger;-><init>()V
 HSPLcom/android/server/content/SyncLogger;->getInstance()Lcom/android/server/content/SyncLogger;
+PLcom/android/server/content/SyncLogger;->logSafe(Landroid/accounts/Account;)Ljava/lang/String;
+PLcom/android/server/content/SyncLogger;->logSafe(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Ljava/lang/String;
 PLcom/android/server/content/SyncLogger;->logSafe(Lcom/android/server/content/SyncOperation;)Ljava/lang/String;
+PLcom/android/server/content/SyncLogger;->logSafe(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Ljava/lang/String;
+HSPLcom/android/server/content/SyncManager$10;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/SyncManager$10;->onAuthorityRemoved(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-HSPLcom/android/server/content/SyncManager$11;->onServiceChanged(Landroid/content/SyncAdapterType;IZ)V
-HSPLcom/android/server/content/SyncManager$11;->onServiceChanged(Ljava/lang/Object;IZ)V
+HSPLcom/android/server/content/SyncManager$11;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$11;->onServiceChanged(Landroid/content/SyncAdapterType;IZ)V
+PLcom/android/server/content/SyncManager$11;->onServiceChanged(Ljava/lang/Object;IZ)V
+PLcom/android/server/content/SyncManager$12;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/content/SyncManager$12;->onChange(Z)V
 PLcom/android/server/content/SyncManager$13;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$13;->compare(Landroid/content/pm/RegisteredServicesCache$ServiceInfo;Landroid/content/pm/RegisteredServicesCache$ServiceInfo;)I
-PLcom/android/server/content/SyncManager$13;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/content/SyncManager$13;->compare(Landroid/content/pm/RegisteredServicesCache$ServiceInfo;Landroid/content/pm/RegisteredServicesCache$ServiceInfo;)I
+HPLcom/android/server/content/SyncManager$13;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
 PLcom/android/server/content/SyncManager$14;-><init>(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager$14;->compare(Lcom/android/server/content/SyncManager$AuthoritySyncStats;Lcom/android/server/content/SyncManager$AuthoritySyncStats;)I
-PLcom/android/server/content/SyncManager$14;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/content/SyncManager$15;-><init>(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/SyncManager$14;->compare(Lcom/android/server/content/SyncManager$AuthoritySyncStats;Lcom/android/server/content/SyncManager$AuthoritySyncStats;)I
+HPLcom/android/server/content/SyncManager$14;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/content/SyncManager$15;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/SyncManager$15;->compare(Lcom/android/server/content/SyncManager$AccountSyncStats;Lcom/android/server/content/SyncManager$AccountSyncStats;)I
 PLcom/android/server/content/SyncManager$15;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/content/SyncManager$1;-><init>(Lcom/android/server/content/SyncManager;)V
+HSPLcom/android/server/content/SyncManager$2;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/SyncManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/content/SyncManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/content/SyncManager$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/content/SyncManager$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/content/SyncManager$7;->run()V
+HSPLcom/android/server/content/SyncManager$3;-><init>(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/SyncManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/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
+HSPLcom/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
+HSPLcom/android/server/content/SyncManager$6;-><init>(Lcom/android/server/content/SyncManager;)V
+PLcom/android/server/content/SyncManager$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/content/SyncManager$7;-><init>(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/SyncManager$7;->run()V
+HSPLcom/android/server/content/SyncManager$8;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/SyncManager$8;->onSyncRequest(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILandroid/os/Bundle;III)V
+HSPLcom/android/server/content/SyncManager$9;-><init>(Lcom/android/server/content/SyncManager;)V
 PLcom/android/server/content/SyncManager$9;->onPeriodicSyncAdded(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;JJ)V
+PLcom/android/server/content/SyncManager$AccountSyncStats;-><init>(Ljava/lang/String;)V
 PLcom/android/server/content/SyncManager$AccountSyncStats;-><init>(Ljava/lang/String;Lcom/android/server/content/SyncManager$1;)V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;JI)V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->bindToSyncAdapter(Landroid/content/ComponentName;I)Z
 PLcom/android/server/content/SyncManager$ActiveSyncContext;->binderDied()V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->close()V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->onFinished(Landroid/content/SyncResult;)V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/content/SyncManager$ActiveSyncContext;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/content/SyncManager$ActiveSyncContext;->toSafeString()Ljava/lang/String;
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String;
-PLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;Z)V
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString()Ljava/lang/String;
+HPLcom/android/server/content/SyncManager$ActiveSyncContext;->toString(Ljava/lang/StringBuilder;Z)V
+PLcom/android/server/content/SyncManager$AuthoritySyncStats;-><init>(Ljava/lang/String;)V
 PLcom/android/server/content/SyncManager$AuthoritySyncStats;-><init>(Ljava/lang/String;Lcom/android/server/content/SyncManager$1;)V
+HPLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck$1;-><init>(Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
 PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck$1;->onUnsyncableAccountDone(Z)V
+HPLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;-><init>(Landroid/content/pm/RegisteredServicesCache$ServiceInfo;Lcom/android/server/content/SyncManager$OnReadyCallback;)V
+HPLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->access$2400(Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
 PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->onReady()V
 PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/content/SyncManager$PrintTable;-><init>(I)V
-PLcom/android/server/content/SyncManager$PrintTable;->getNumRows()I
-PLcom/android/server/content/SyncManager$PrintTable;->printRow(Ljava/io/PrintWriter;[Ljava/lang/String;[Ljava/lang/Object;)V
-PLcom/android/server/content/SyncManager$PrintTable;->set(II[Ljava/lang/Object;)V
-PLcom/android/server/content/SyncManager$PrintTable;->writeTo(Ljava/io/PrintWriter;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->cancelActiveSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I
-PLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z
-PLcom/android/server/content/SyncManager$SyncHandler;->getSyncWakeLock(Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock;
-HSPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;)J
+HPLcom/android/server/content/SyncManager$PrintTable;->getNumRows()I
+HPLcom/android/server/content/SyncManager$PrintTable;->printRow(Ljava/io/PrintWriter;[Ljava/lang/String;[Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncManager$PrintTable;->set(II[Ljava/lang/Object;)V
+HPLcom/android/server/content/SyncManager$PrintTable;->writeTo(Ljava/io/PrintWriter;)V
+HPLcom/android/server/content/SyncManager$ScheduleSyncMessagePayload;-><init>(Lcom/android/server/content/SyncOperation;J)V
+HPLcom/android/server/content/SyncManager$ServiceConnectionData;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$SyncFinishedOrCancelledMessagePayload;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
+HSPLcom/android/server/content/SyncManager$SyncHandler;-><init>(Lcom/android/server/content/SyncManager;Landroid/os/Looper;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->access$1800(Lcom/android/server/content/SyncManager$SyncHandler;Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/content/SyncManager$SyncHandler;->cancelActiveSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->closeActiveSyncContext(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->computeSyncOpState(Lcom/android/server/content/SyncOperation;)I
+PLcom/android/server/content/SyncManager$SyncHandler;->deferActiveSyncH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager$SyncHandler;->deferStoppedSyncH(Lcom/android/server/content/SyncOperation;J)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->deferSyncH(Lcom/android/server/content/SyncOperation;JLjava/lang/String;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->dispatchSyncOperation(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncManager$SyncHandler;->findActiveSyncContextH(I)Lcom/android/server/content/SyncManager$ActiveSyncContext;
+HPLcom/android/server/content/SyncManager$SyncHandler;->getSyncWakeLock(Lcom/android/server/content/SyncOperation;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->handleSyncMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;)J
 PLcom/android/server/content/SyncManager$SyncHandler;->isSyncNotUsingNetworkH(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
-PLcom/android/server/content/SyncManager$SyncHandler;->maybeUpdateSyncPeriodH(Lcom/android/server/content/SyncOperation;JJ)V
-PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncInternalH(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->reschedulePeriodicSyncH(Lcom/android/server/content/SyncOperation;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V
-PLcom/android/server/content/SyncManager$SyncHandler;->stopSyncEvent(JLcom/android/server/content/SyncOperation;Ljava/lang/String;IIJ)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->maybeUpdateSyncPeriodH(Lcom/android/server/content/SyncOperation;JJ)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->removePeriodicSyncInternalH(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->reschedulePeriodicSyncH(Lcom/android/server/content/SyncOperation;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runBoundToAdapterH(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/os/IBinder;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->runSyncFinishedOrCanceledH(Landroid/content/SyncResult;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->startSyncH(Lcom/android/server/content/SyncOperation;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->stopSyncEvent(JLcom/android/server/content/SyncOperation;Ljava/lang/String;IIJ)V
 PLcom/android/server/content/SyncManager$SyncHandler;->syncResultToErrorNumber(Landroid/content/SyncResult;)I
-PLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
-HSPLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->updateOrAddPeriodicSyncH(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
+HPLcom/android/server/content/SyncManager$SyncHandler;->updateRunningAccountsH(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HSPLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;)V
+HSPLcom/android/server/content/SyncManager$SyncTimeTracker;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$1;)V
 PLcom/android/server/content/SyncManager$SyncTimeTracker;->timeSpentSyncing()J
-HSPLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
+HPLcom/android/server/content/SyncManager$SyncTimeTracker;->update()V
+HPLcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;-><init>(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
+HSPLcom/android/server/content/SyncManager;-><clinit>()V
 HSPLcom/android/server/content/SyncManager;-><init>(Landroid/content/Context;Z)V
-PLcom/android/server/content/SyncManager;->access$1200(Lcom/android/server/content/SyncManager;)Ljava/util/List;
-PLcom/android/server/content/SyncManager;->access$1300(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->access$000(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->access$1000(Lcom/android/server/content/SyncManager;I)V
+PLcom/android/server/content/SyncManager;->access$1100(Lcom/android/server/content/SyncManager;I)V
+HPLcom/android/server/content/SyncManager;->access$1200(Lcom/android/server/content/SyncManager;)Ljava/util/List;
+HPLcom/android/server/content/SyncManager;->access$1300(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->access$1400(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->access$1500(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->access$1576(Lcom/android/server/content/SyncManager;I)Z
+PLcom/android/server/content/SyncManager;->access$1600(Lcom/android/server/content/SyncManager;)Z
+HPLcom/android/server/content/SyncManager;->access$1700(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncManager$SyncHandler;
+PLcom/android/server/content/SyncManager;->access$1900(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
+PLcom/android/server/content/SyncManager;->access$200(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->access$2000(Lcom/android/server/content/SyncManager;)Landroid/content/Context;
+PLcom/android/server/content/SyncManager;->access$2100(Lcom/android/server/content/SyncManager;)Lcom/android/internal/app/IBatteryStats;
+HPLcom/android/server/content/SyncManager;->access$2600(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager$WakeLock;
+HPLcom/android/server/content/SyncManager;->access$2700(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V
 PLcom/android/server/content/SyncManager;->access$2800(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->access$2900(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
+PLcom/android/server/content/SyncManager;->access$300(Lcom/android/server/content/SyncManager;)Z
+HPLcom/android/server/content/SyncManager;->access$3000(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager;->access$302(Lcom/android/server/content/SyncManager;Z)Z
+PLcom/android/server/content/SyncManager;->access$3100(Lcom/android/server/content/SyncManager;)Landroid/os/PowerManager;
+PLcom/android/server/content/SyncManager;->access$3200(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncManager;->access$3300(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+PLcom/android/server/content/SyncManager;->access$3400(Lcom/android/server/content/SyncManager;)[Landroid/accounts/AccountAndUser;
+PLcom/android/server/content/SyncManager;->access$3402(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;)[Landroid/accounts/AccountAndUser;
+PLcom/android/server/content/SyncManager;->access$3500(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/SyncManager;->access$3600(Lcom/android/server/content/SyncManager;[Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
 PLcom/android/server/content/SyncManager;->access$3700(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;)V
-PLcom/android/server/content/SyncManager;->access$3800(Lcom/android/server/content/SyncManager;)V
-PLcom/android/server/content/SyncManager;->access$4200(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->access$3800(Lcom/android/server/content/SyncManager;)V
+HPLcom/android/server/content/SyncManager;->access$400(Lcom/android/server/content/SyncManager;)Z
+PLcom/android/server/content/SyncManager;->access$4100(Lcom/android/server/content/SyncManager;I)J
+HPLcom/android/server/content/SyncManager;->access$4200(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
 PLcom/android/server/content/SyncManager;->access$4300(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncManagerConstants;
 PLcom/android/server/content/SyncManager;->access$4400(Lcom/android/server/content/SyncManager;Landroid/content/SyncResult;Lcom/android/server/content/SyncOperation;)V
 PLcom/android/server/content/SyncManager;->access$4500(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager;->access$4600(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
-PLcom/android/server/content/SyncManager;->access$4700(Lcom/android/server/content/SyncManager;)Landroid/app/NotificationManager;
-PLcom/android/server/content/SyncManager;->access$700(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger;
-PLcom/android/server/content/SyncManager;->access$800(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine;
-PLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z
+HPLcom/android/server/content/SyncManager;->access$4600(Lcom/android/server/content/SyncManager;Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
+HPLcom/android/server/content/SyncManager;->access$4700(Lcom/android/server/content/SyncManager;)Landroid/app/NotificationManager;
+PLcom/android/server/content/SyncManager;->access$500(Lcom/android/server/content/SyncManager;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->access$600(Lcom/android/server/content/SyncManager;)Ljava/lang/String;
+HPLcom/android/server/content/SyncManager;->access$700(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncLogger;
+HPLcom/android/server/content/SyncManager;->access$800(Lcom/android/server/content/SyncManager;)Lcom/android/server/content/SyncStorageEngine;
+PLcom/android/server/content/SyncManager;->access$900(Lcom/android/server/content/SyncManager;I)V
+HPLcom/android/server/content/SyncManager;->canAccessAccount(Landroid/accounts/Account;Ljava/lang/String;I)Z
 PLcom/android/server/content/SyncManager;->cancelActiveSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
-HSPLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager;->clearScheduledSyncOperations(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I
+HPLcom/android/server/content/SyncManager;->cancelJob(Lcom/android/server/content/SyncOperation;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->cleanupJobs()V
+PLcom/android/server/content/SyncManager;->clearAllBackoffs(Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->clearBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->clearScheduledSyncOperations(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->computeSyncable(Landroid/accounts/Account;ILjava/lang/String;Z)I
+HPLcom/android/server/content/SyncManager;->containsAccountAndUser([Landroid/accounts/AccountAndUser;Landroid/accounts/Account;I)Z
+HPLcom/android/server/content/SyncManager;->countIf(Ljava/util/Collection;Ljava/util/function/Predicate;)I
 PLcom/android/server/content/SyncManager;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Z)V
-PLcom/android/server/content/SyncManager;->dumpDayStatistic(Ljava/io/PrintWriter;Lcom/android/server/content/SyncStorageEngine$DayStats;)V
-PLcom/android/server/content/SyncManager;->dumpDayStatistics(Ljava/io/PrintWriter;)V
-PLcom/android/server/content/SyncManager;->dumpPendingSyncs(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
-PLcom/android/server/content/SyncManager;->dumpPeriodicSyncs(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
-PLcom/android/server/content/SyncManager;->dumpRecentHistory(Ljava/io/PrintWriter;)V
-PLcom/android/server/content/SyncManager;->dumpSyncAdapters(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/content/SyncManager;->dumpDayStatistic(Ljava/io/PrintWriter;Lcom/android/server/content/SyncStorageEngine$DayStats;)V
+HPLcom/android/server/content/SyncManager;->dumpDayStatistics(Ljava/io/PrintWriter;)V
+HPLcom/android/server/content/SyncManager;->dumpPendingSyncs(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
+HPLcom/android/server/content/SyncManager;->dumpPeriodicSyncs(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
+HPLcom/android/server/content/SyncManager;->dumpRecentHistory(Ljava/io/PrintWriter;)V
+HPLcom/android/server/content/SyncManager;->dumpSyncAdapters(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/content/SyncManager;->dumpSyncHistory(Ljava/io/PrintWriter;)V
-PLcom/android/server/content/SyncManager;->dumpSyncState(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
-HSPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder;
-PLcom/android/server/content/SyncManager;->formatTime(J)Ljava/lang/String;
-PLcom/android/server/content/SyncManager;->getAdapterBindIntent(Landroid/content/Context;Landroid/content/ComponentName;I)Landroid/content/Intent;
-HSPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
+HPLcom/android/server/content/SyncManager;->dumpSyncState(Ljava/io/PrintWriter;Lcom/android/server/content/SyncAdapterStateFetcher;)V
+HPLcom/android/server/content/SyncManager;->dumpTimeSec(Ljava/io/PrintWriter;J)V
+HPLcom/android/server/content/SyncManager;->formatDurationHMS(Ljava/lang/StringBuilder;J)Ljava/lang/StringBuilder;
+HPLcom/android/server/content/SyncManager;->formatTime(J)Ljava/lang/String;
+HPLcom/android/server/content/SyncManager;->getAdapterBindIntent(Landroid/content/Context;Landroid/content/ComponentName;I)Landroid/content/Intent;
+HPLcom/android/server/content/SyncManager;->getAllPendingSyncs()Ljava/util/List;
 PLcom/android/server/content/SyncManager;->getAllUsers()Ljava/util/List;
-HSPLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager;
-HSPLcom/android/server/content/SyncManager;->getInstance()Lcom/android/server/content/SyncManager;
-PLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
-HSPLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String;
-PLcom/android/server/content/SyncManager;->getPeriodicSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Ljava/util/List;
+HPLcom/android/server/content/SyncManager;->getConnectivityManager()Landroid/net/ConnectivityManager;
+HPLcom/android/server/content/SyncManager;->getInstance()Lcom/android/server/content/SyncManager;
+HPLcom/android/server/content/SyncManager;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
+HPLcom/android/server/content/SyncManager;->getJobScheduler()Landroid/app/job/JobScheduler;
+PLcom/android/server/content/SyncManager;->getJobStats()Ljava/lang/String;
+HPLcom/android/server/content/SyncManager;->getPeriodicSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Ljava/util/List;
 HSPLcom/android/server/content/SyncManager;->getSyncAdapterPackagesForAuthorityAsUser(Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/content/SyncManager;->getSyncAdapterTypes(I)[Landroid/content/SyncAdapterType;
-HSPLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine;
-PLcom/android/server/content/SyncManager;->increaseBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->isAdapterDelayed(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
-PLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z
-HSPLcom/android/server/content/SyncManager;->isUserUnlocked(I)Z
+HPLcom/android/server/content/SyncManager;->getSyncAdapterTypes(I)[Landroid/content/SyncAdapterType;
+HPLcom/android/server/content/SyncManager;->getSyncStorageEngine()Lcom/android/server/content/SyncStorageEngine;
+HPLcom/android/server/content/SyncManager;->getTotalBytesTransferredByUid(I)J
+PLcom/android/server/content/SyncManager;->getUnusedJobIdH()I
+HPLcom/android/server/content/SyncManager;->increaseBackoffSetting(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->isAdapterDelayed(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HSPLcom/android/server/content/SyncManager;->isDeviceProvisioned()Z
+HPLcom/android/server/content/SyncManager;->isJobIdInUseLockedH(ILjava/util/List;)Z
+HPLcom/android/server/content/SyncManager;->isSyncStillActiveH(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Z
+HPLcom/android/server/content/SyncManager;->isUserUnlocked(I)Z
 PLcom/android/server/content/SyncManager;->jitterize(JJ)J
-PLcom/android/server/content/SyncManager;->lambda$dumpSyncState$10(Ljava/lang/StringBuilder;Lcom/android/server/content/SyncManager$PrintTable;Ljava/lang/String;Landroid/content/SyncStatusInfo$Stats;Ljava/util/function/Function;Ljava/lang/Integer;)V
+PLcom/android/server/content/SyncManager;->lambda$EMXCZP9LDjgUTYbLsEoVu9Ccntw(Lcom/android/server/content/SyncManager;I)Ljava/lang/String;
+PLcom/android/server/content/SyncManager;->lambda$dumpPendingSyncs$8(Lcom/android/server/content/SyncOperation;)Z
+PLcom/android/server/content/SyncManager;->lambda$dumpPeriodicSyncs$9(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncManager;->lambda$dumpSyncState$10(Ljava/lang/StringBuilder;Lcom/android/server/content/SyncManager$PrintTable;Ljava/lang/String;Landroid/content/SyncStatusInfo$Stats;Ljava/util/function/Function;Ljava/lang/Integer;)V
+HPLcom/android/server/content/SyncManager;->lambda$dumpSyncState$11(Ljava/lang/Integer;)Ljava/lang/String;
 PLcom/android/server/content/SyncManager;->lambda$new$0$SyncManager(Landroid/accounts/Account;I)V
 HSPLcom/android/server/content/SyncManager;->lambda$onStartUser$1$SyncManager(I)V
-HSPLcom/android/server/content/SyncManager;->lambda$onUnlockUser$2$SyncManager(I)V
+PLcom/android/server/content/SyncManager;->lambda$onStopUser$3$SyncManager(I)V
+PLcom/android/server/content/SyncManager;->lambda$onUnlockUser$2$SyncManager(I)V
 PLcom/android/server/content/SyncManager;->lambda$scheduleSync$5$SyncManager(Landroid/accounts/AccountAndUser;ILjava/lang/String;Landroid/os/Bundle;IJIIILjava/lang/String;)V
-PLcom/android/server/content/SyncManager;->lambda$static$6(Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;)I
-HSPLcom/android/server/content/SyncManager;->likelyHasPeriodicSyncs()Z
-PLcom/android/server/content/SyncManager;->maybeRescheduleSync(Landroid/content/SyncResult;Lcom/android/server/content/SyncOperation;)V
+PLcom/android/server/content/SyncManager;->lambda$sendOnUnsyncableAccount$12(Landroid/content/Context;Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;)V
+HPLcom/android/server/content/SyncManager;->lambda$static$6(Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;)I
+HPLcom/android/server/content/SyncManager;->lambda$static$7(Lcom/android/server/content/SyncOperation;Lcom/android/server/content/SyncOperation;)I
+HPLcom/android/server/content/SyncManager;->maybeRescheduleSync(Landroid/content/SyncResult;Lcom/android/server/content/SyncOperation;)V
 HSPLcom/android/server/content/SyncManager;->onBootPhase(I)V
 HSPLcom/android/server/content/SyncManager;->onStartUser(I)V
-HSPLcom/android/server/content/SyncManager;->onUnlockUser(I)V
-HSPLcom/android/server/content/SyncManager;->onUserUnlocked(I)V
-PLcom/android/server/content/SyncManager;->postMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
-PLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
-HSPLcom/android/server/content/SyncManager;->removeStaleAccounts()V
-PLcom/android/server/content/SyncManager;->removeSyncsForAuthority(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
-HSPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->onStopUser(I)V
+PLcom/android/server/content/SyncManager;->onUnlockUser(I)V
+PLcom/android/server/content/SyncManager;->onUserRemoved(I)V
+PLcom/android/server/content/SyncManager;->onUserStopped(I)V
+PLcom/android/server/content/SyncManager;->onUserUnlocked(I)V
+HPLcom/android/server/content/SyncManager;->postMonitorSyncProgressMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;)V
+HPLcom/android/server/content/SyncManager;->postScheduleSyncMessage(Lcom/android/server/content/SyncOperation;J)V
+HPLcom/android/server/content/SyncManager;->printTwoDigitNumber(Ljava/lang/StringBuilder;JCZ)Z
+HPLcom/android/server/content/SyncManager;->readDataConnectionState()Z
+PLcom/android/server/content/SyncManager;->readyToSync(I)Z
+HPLcom/android/server/content/SyncManager;->removePeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+PLcom/android/server/content/SyncManager;->removeStaleAccounts()V
+HPLcom/android/server/content/SyncManager;->removeSyncsForAuthority(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->rescheduleSyncs(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)V
 HSPLcom/android/server/content/SyncManager;->scheduleLocalSync(Landroid/accounts/Account;IILjava/lang/String;IIILjava/lang/String;)V
-HSPLcom/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;IIIILjava/lang/String;)V
 HSPLcom/android/server/content/SyncManager;->scheduleSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;IJZIIILjava/lang/String;)V
-HSPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V
-PLcom/android/server/content/SyncManager;->sendCancelSyncsMessage(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
-PLcom/android/server/content/SyncManager;->sendOnUnsyncableAccount(Landroid/content/Context;Landroid/content/pm/RegisteredServicesCache$ServiceInfo;ILcom/android/server/content/SyncManager$OnReadyCallback;)V
-PLcom/android/server/content/SyncManager;->sendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
-PLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
-PLcom/android/server/content/SyncManager;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
-PLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z
-PLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
-HSPLcom/android/server/content/SyncManager;->verifyJobScheduler()V
+PLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;)V
+HPLcom/android/server/content/SyncManager;->scheduleSyncOperationH(Lcom/android/server/content/SyncOperation;J)V
+HPLcom/android/server/content/SyncManager;->sendCancelSyncsMessage(Lcom/android/server/content/SyncStorageEngine$EndPoint;Landroid/os/Bundle;Ljava/lang/String;)V
+HPLcom/android/server/content/SyncManager;->sendMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncManager;->sendOnUnsyncableAccount(Landroid/content/Context;Landroid/content/pm/RegisteredServicesCache$ServiceInfo;ILcom/android/server/content/SyncManager$OnReadyCallback;)V
+HPLcom/android/server/content/SyncManager;->sendSyncFinishedOrCanceledMessage(Lcom/android/server/content/SyncManager$ActiveSyncContext;Landroid/content/SyncResult;)V
+HPLcom/android/server/content/SyncManager;->setAuthorityPendingState(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
+HPLcom/android/server/content/SyncManager;->syncExtrasEquals(Landroid/os/Bundle;Landroid/os/Bundle;Z)Z
+HPLcom/android/server/content/SyncManager;->updateOrAddPeriodicSync(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJLandroid/os/Bundle;)V
+PLcom/android/server/content/SyncManager;->updateRunningAccounts(Lcom/android/server/content/SyncStorageEngine$EndPoint;)V
+HPLcom/android/server/content/SyncManager;->verifyJobScheduler()V
 PLcom/android/server/content/SyncManager;->wasPackageEverLaunched(Ljava/lang/String;I)Z
 HSPLcom/android/server/content/SyncManager;->whiteListExistingSyncAdaptersIfNeeded()V
+HPLcom/android/server/content/SyncManager;->zeroToEmpty(I)Ljava/lang/String;
 HSPLcom/android/server/content/SyncManagerConstants;-><init>(Landroid/content/Context;)V
 PLcom/android/server/content/SyncManagerConstants;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/content/SyncManagerConstants;->getInitialSyncRetryTimeInSeconds()I
-PLcom/android/server/content/SyncManagerConstants;->getKeyExemptionTempWhitelistDurationInSeconds()I
+HPLcom/android/server/content/SyncManagerConstants;->getKeyExemptionTempWhitelistDurationInSeconds()I
 PLcom/android/server/content/SyncManagerConstants;->getMaxRetriesWithAppStandbyExemption()I
 PLcom/android/server/content/SyncManagerConstants;->getMaxSyncRetryTimeInSeconds()I
 PLcom/android/server/content/SyncManagerConstants;->getRetryTimeIncreaseFactor()F
 HSPLcom/android/server/content/SyncManagerConstants;->lambda$start$0$SyncManagerConstants()V
 HSPLcom/android/server/content/SyncManagerConstants;->refresh()V
 HSPLcom/android/server/content/SyncManagerConstants;->start()V
-PLcom/android/server/content/SyncOperation;-><init>(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;ZI)V
+PLcom/android/server/content/SyncOperation;-><clinit>()V
+HPLcom/android/server/content/SyncOperation;-><init>(Landroid/accounts/Account;IILjava/lang/String;IILjava/lang/String;Landroid/os/Bundle;ZI)V
 PLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncOperation;JJ)V
-HSPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJI)V
+HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZI)V
+HPLcom/android/server/content/SyncOperation;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;ILjava/lang/String;IILandroid/os/Bundle;ZZIJJI)V
 PLcom/android/server/content/SyncOperation;->createOneTimeSyncOperation()Lcom/android/server/content/SyncOperation;
-HSPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;ZLcom/android/server/content/SyncAdapterStateFetcher;Z)Ljava/lang/String;
-HSPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V
-HSPLcom/android/server/content/SyncOperation;->findPriority()I
-HSPLcom/android/server/content/SyncOperation;->ignoreBackoff()Z
-HSPLcom/android/server/content/SyncOperation;->isAppStandbyExempted()Z
-PLcom/android/server/content/SyncOperation;->isConflict(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncOperation;->dump(Landroid/content/pm/PackageManager;ZLcom/android/server/content/SyncAdapterStateFetcher;Z)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->extrasToString(Landroid/os/Bundle;)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->extrasToStringBuilder(Landroid/os/Bundle;Ljava/lang/StringBuilder;)V
+PLcom/android/server/content/SyncOperation;->findPriority()I
+PLcom/android/server/content/SyncOperation;->ignoreBackoff()Z
+PLcom/android/server/content/SyncOperation;->isAppStandbyExempted()Z
+HPLcom/android/server/content/SyncOperation;->isConflict(Lcom/android/server/content/SyncOperation;)Z
 PLcom/android/server/content/SyncOperation;->isDerivedFromFailedPeriodicSync()Z
-HSPLcom/android/server/content/SyncOperation;->isExpedited()Z
-PLcom/android/server/content/SyncOperation;->isIgnoreSettings()Z
-HSPLcom/android/server/content/SyncOperation;->isInitialization()Z
-HSPLcom/android/server/content/SyncOperation;->isNotAllowedOnMetered()Z
-PLcom/android/server/content/SyncOperation;->matchesPeriodicOperation(Lcom/android/server/content/SyncOperation;)Z
-HSPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;
-HSPLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String;
-PLcom/android/server/content/SyncOperation;->toEventLog(I)[Ljava/lang/Object;
-HSPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;
-HSPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->isExpedited()Z
+HPLcom/android/server/content/SyncOperation;->isIgnoreSettings()Z
+HPLcom/android/server/content/SyncOperation;->isInitialization()Z
+PLcom/android/server/content/SyncOperation;->isNotAllowedOnMetered()Z
+HPLcom/android/server/content/SyncOperation;->matchesPeriodicOperation(Lcom/android/server/content/SyncOperation;)Z
+HPLcom/android/server/content/SyncOperation;->maybeCreateFromJobExtras(Landroid/os/PersistableBundle;)Lcom/android/server/content/SyncOperation;
+HPLcom/android/server/content/SyncOperation;->reasonToString(Landroid/content/pm/PackageManager;I)Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->toEventLog(I)[Ljava/lang/Object;
+HPLcom/android/server/content/SyncOperation;->toJobInfoExtras()Landroid/os/PersistableBundle;
+HPLcom/android/server/content/SyncOperation;->toKey()Ljava/lang/String;
 PLcom/android/server/content/SyncOperation;->toSafeString()Ljava/lang/String;
-HSPLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String;
-HSPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->toString()Ljava/lang/String;
+HPLcom/android/server/content/SyncOperation;->wakeLockName()Ljava/lang/String;
 HSPLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAccountValid(Landroid/accounts/Account;I)Z
 HSPLcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;->isAuthorityValid(Ljava/lang/String;I)Z
-PLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;)V
+HSPLcom/android/server/content/SyncStorageEngine$AccountInfo;-><init>(Landroid/accounts/AccountAndUser;)V
+HPLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;)V
+HSPLcom/android/server/content/SyncStorageEngine$AuthorityInfo;-><init>(Lcom/android/server/content/SyncStorageEngine$EndPoint;I)V
 HSPLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->defaultInitialisation()V
 HSPLcom/android/server/content/SyncStorageEngine$AuthorityInfo;->toString()Ljava/lang/String;
-PLcom/android/server/content/SyncStorageEngine$DayStats;-><init>(I)V
+HSPLcom/android/server/content/SyncStorageEngine$DayStats;-><init>(I)V
+HSPLcom/android/server/content/SyncStorageEngine$EndPoint;-><clinit>()V
 HSPLcom/android/server/content/SyncStorageEngine$EndPoint;-><init>(Landroid/accounts/Account;Ljava/lang/String;I)V
-HSPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine$EndPoint;->matchesSpec(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
 PLcom/android/server/content/SyncStorageEngine$EndPoint;->toSafeString()Ljava/lang/String;
 HSPLcom/android/server/content/SyncStorageEngine$EndPoint;->toString()Ljava/lang/String;
-PLcom/android/server/content/SyncStorageEngine$MyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/content/SyncStorageEngine$MyHandler;-><init>(Lcom/android/server/content/SyncStorageEngine;Landroid/os/Looper;)V
+HPLcom/android/server/content/SyncStorageEngine$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/content/SyncStorageEngine$SyncHistoryItem;-><init>()V
+HSPLcom/android/server/content/SyncStorageEngine;-><clinit>()V
 HSPLcom/android/server/content/SyncStorageEngine;-><init>(Landroid/content/Context;Ljava/io/File;Landroid/os/Looper;)V
-PLcom/android/server/content/SyncStorageEngine;->addActiveSync(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Landroid/content/SyncInfo;
-PLcom/android/server/content/SyncStorageEngine;->addStatusChangeListener(ILandroid/content/ISyncStatusObserver;)V
-HSPLcom/android/server/content/SyncStorageEngine;->clearAllBackoffsLocked()V
+HSPLcom/android/server/content/SyncStorageEngine;->access$000()Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;
+HPLcom/android/server/content/SyncStorageEngine;->addActiveSync(Lcom/android/server/content/SyncManager$ActiveSyncContext;)Landroid/content/SyncInfo;
+HPLcom/android/server/content/SyncStorageEngine;->addStatusChangeListener(IILandroid/content/ISyncStatusObserver;)V
+PLcom/android/server/content/SyncStorageEngine;->calculateDefaultFlexTime(J)J
+HPLcom/android/server/content/SyncStorageEngine;->clearAllBackoffsLocked()V
 HSPLcom/android/server/content/SyncStorageEngine;->createAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-PLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-HSPLcom/android/server/content/SyncStorageEngine;->getAuthorityCount()I
-HSPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-HSPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
-PLcom/android/server/content/SyncStorageEngine;->getCopyOfAuthorityWithSyncStatus(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
-PLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I
-PLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List;
+HPLcom/android/server/content/SyncStorageEngine;->createCopyPairOfAuthorityWithSyncStatusLocked(Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;)Landroid/util/Pair;
+HPLcom/android/server/content/SyncStorageEngine;->getAuthority(I)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->getAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;Ljava/lang/String;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HPLcom/android/server/content/SyncStorageEngine;->getBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
+HPLcom/android/server/content/SyncStorageEngine;->getCopyOfAuthorityWithSyncStatus(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Landroid/util/Pair;
+HPLcom/android/server/content/SyncStorageEngine;->getCurrentDayLocked()I
+HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncs(I)Ljava/util/List;
+HPLcom/android/server/content/SyncStorageEngine;->getCurrentSyncsLocked(I)Ljava/util/List;
 PLcom/android/server/content/SyncStorageEngine;->getDayStatistics()[Lcom/android/server/content/SyncStorageEngine$DayStats;
-HSPLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J
-PLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
-PLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z
+HPLcom/android/server/content/SyncStorageEngine;->getDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;)J
+HPLcom/android/server/content/SyncStorageEngine;->getIsSyncable(Landroid/accounts/Account;ILjava/lang/String;)I
+HPLcom/android/server/content/SyncStorageEngine;->getMasterSyncAutomatically(I)Z
 HSPLcom/android/server/content/SyncStorageEngine;->getOrCreateAuthorityLocked(Lcom/android/server/content/SyncStorageEngine$EndPoint;IZ)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
-PLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo;
-PLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z
-PLcom/android/server/content/SyncStorageEngine;->getSyncHistory()Ljava/util/ArrayList;
-PLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J
+HPLcom/android/server/content/SyncStorageEngine;->getOrCreateSyncStatusLocked(I)Landroid/content/SyncStatusInfo;
+HSPLcom/android/server/content/SyncStorageEngine;->getSingleton()Lcom/android/server/content/SyncStorageEngine;
+HPLcom/android/server/content/SyncStorageEngine;->getSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;)Z
+HPLcom/android/server/content/SyncStorageEngine;->getSyncHistory()Ljava/util/ArrayList;
+HSPLcom/android/server/content/SyncStorageEngine;->init(Landroid/content/Context;Landroid/os/Looper;)V
+HPLcom/android/server/content/SyncStorageEngine;->insertStartSyncEvent(Lcom/android/server/content/SyncOperation;J)J
 PLcom/android/server/content/SyncStorageEngine;->isClockValid()Z
-PLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
-PLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
-HSPLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V
+HPLcom/android/server/content/SyncStorageEngine;->isSyncActive(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine;->isSyncPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;)Z
+HPLcom/android/server/content/SyncStorageEngine;->markPending(Lcom/android/server/content/SyncStorageEngine$EndPoint;Z)V
+HSPLcom/android/server/content/SyncStorageEngine;->maybeDeleteLegacyPendingInfoLocked(Ljava/io/File;)V
 HSPLcom/android/server/content/SyncStorageEngine;->maybeMigrateSettingsForRenamedAuthorities()Z
 HSPLcom/android/server/content/SyncStorageEngine;->parseAuthority(Lorg/xmlpull/v1/XmlPullParser;ILcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;)Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
+HSPLcom/android/server/content/SyncStorageEngine;->parseLastEventInfoLocked(Landroid/util/proto/ProtoInputStream;)Landroid/util/Pair;
 HSPLcom/android/server/content/SyncStorageEngine;->parseListenForTickles(Lorg/xmlpull/v1/XmlPullParser;)V
 PLcom/android/server/content/SyncStorageEngine;->queueBackup()V
 HSPLcom/android/server/content/SyncStorageEngine;->readAccountInfoLocked()V
+HSPLcom/android/server/content/SyncStorageEngine;->readDayStatsLocked(Ljava/io/InputStream;)V
+HSPLcom/android/server/content/SyncStorageEngine;->readIndividualDayStatsLocked(Landroid/util/proto/ProtoInputStream;)Lcom/android/server/content/SyncStorageEngine$DayStats;
 HSPLcom/android/server/content/SyncStorageEngine;->readStatisticsLocked()V
+HSPLcom/android/server/content/SyncStorageEngine;->readStatusInfoLocked(Ljava/io/InputStream;)V
 HSPLcom/android/server/content/SyncStorageEngine;->readStatusLocked()V
-PLcom/android/server/content/SyncStorageEngine;->removeActiveSync(Landroid/content/SyncInfo;I)V
-HSPLcom/android/server/content/SyncStorageEngine;->removeStaleAccounts([Landroid/accounts/Account;I)V
-PLcom/android/server/content/SyncStorageEngine;->reportActiveChange()V
-HSPLcom/android/server/content/SyncStorageEngine;->reportChange(I)V
+HSPLcom/android/server/content/SyncStorageEngine;->readSyncStatusInfoLocked(Landroid/util/proto/ProtoInputStream;)Landroid/content/SyncStatusInfo;
+HSPLcom/android/server/content/SyncStorageEngine;->readSyncStatusStatsLocked(Landroid/util/proto/ProtoInputStream;Landroid/content/SyncStatusInfo$Stats;)V
+HPLcom/android/server/content/SyncStorageEngine;->removeActiveSync(Landroid/content/SyncInfo;I)V
+HPLcom/android/server/content/SyncStorageEngine;->removeStaleAccounts([Landroid/accounts/Account;I)V
+PLcom/android/server/content/SyncStorageEngine;->removeStatusChangeListener(Landroid/content/ISyncStatusObserver;)V
+HPLcom/android/server/content/SyncStorageEngine;->reportActiveChange(I)V
+HPLcom/android/server/content/SyncStorageEngine;->reportChange(II)V
 PLcom/android/server/content/SyncStorageEngine;->requestSync(Landroid/accounts/Account;IILjava/lang/String;Landroid/os/Bundle;III)V
 PLcom/android/server/content/SyncStorageEngine;->requestSync(Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;ILandroid/os/Bundle;III)V
-PLcom/android/server/content/SyncStorageEngine;->resetTodayStats(Z)V
-PLcom/android/server/content/SyncStorageEngine;->setBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJ)V
-HSPLcom/android/server/content/SyncStorageEngine;->setClockValid()V
-PLcom/android/server/content/SyncStorageEngine;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
-PLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;III)V
+HPLcom/android/server/content/SyncStorageEngine;->resetTodayStats(Z)V
+HPLcom/android/server/content/SyncStorageEngine;->setBackoff(Lcom/android/server/content/SyncStorageEngine$EndPoint;JJ)V
+PLcom/android/server/content/SyncStorageEngine;->setClockValid()V
+HPLcom/android/server/content/SyncStorageEngine;->setDelayUntilTime(Lcom/android/server/content/SyncStorageEngine$EndPoint;J)V
+HPLcom/android/server/content/SyncStorageEngine;->setIsSyncable(Landroid/accounts/Account;ILjava/lang/String;III)V
+PLcom/android/server/content/SyncStorageEngine;->setMasterSyncAutomatically(ZIIII)V
 HSPLcom/android/server/content/SyncStorageEngine;->setOnAuthorityRemovedListener(Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;)V
 HSPLcom/android/server/content/SyncStorageEngine;->setOnSyncRequestListener(Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;)V
 HSPLcom/android/server/content/SyncStorageEngine;->setPeriodicSyncAddedListener(Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;)V
-PLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;ZIII)V
-PLcom/android/server/content/SyncStorageEngine;->setSyncableStateForEndPoint(Lcom/android/server/content/SyncStorageEngine$EndPoint;III)V
+HPLcom/android/server/content/SyncStorageEngine;->setSyncAutomatically(Landroid/accounts/Account;ILjava/lang/String;ZIII)V
+HPLcom/android/server/content/SyncStorageEngine;->setSyncableStateForEndPoint(Lcom/android/server/content/SyncStorageEngine$EndPoint;III)V
 HSPLcom/android/server/content/SyncStorageEngine;->shouldGrantSyncAdaptersAccountAccess()Z
-PLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJ)V
-PLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V
-PLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V
-PLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V
-PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$KVmM6r6Iw8boRKZ7kOfyPuZfUb0;->run(Landroid/os/IInterface;)V
-PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$O44WLb7J8oROD70V7UUgHX2c8Qw;->run(Landroid/os/IInterface;)V
-PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$WS8cZHZAAenCZPdik2kyBtGwtLg;->run(Landroid/os/IInterface;)V
-PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$yRaGuMutdbjMq9h32e3TC2_1a_A;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/content/SyncStorageEngine;->stopSyncEvent(JJLjava/lang/String;JJI)V
+HSPLcom/android/server/content/SyncStorageEngine;->upgradeStatisticsIfNeededLocked()V
+HSPLcom/android/server/content/SyncStorageEngine;->upgradeStatusIfNeededLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->writeAccountInfoLocked()V
+PLcom/android/server/content/SyncStorageEngine;->writeAllState()V
+HPLcom/android/server/content/SyncStorageEngine;->writeDayStatsLocked(Ljava/io/OutputStream;)V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatisticsLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatusInfoLocked(Ljava/io/OutputStream;)V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatusLocked()V
+HPLcom/android/server/content/SyncStorageEngine;->writeStatusStatsLocked(Landroid/util/proto/ProtoOutputStream;Landroid/content/SyncStatusInfo$Stats;)V
+HSPLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$4nadnpI0ImgQseJYN0WTE4IJ4s4;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;)V
+PLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$4nadnpI0ImgQseJYN0WTE4IJ4s4;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HPLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$6vI15KqJwo_ruaAABrGMvkwVRt4;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;)V
+PLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$6vI15KqJwo_ruaAABrGMvkwVRt4;->run()V
+PLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$Qe-DhsP4OR9GyoofNgVlcOk-1so;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;Ljava/lang/String;)V
+PLcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$Qe-DhsP4OR9GyoofNgVlcOk-1so;->run()V
+PLcom/android/server/contentcapture/-$$Lambda$ContentCaptureServerSession$PKv4-aNj3xMYOeCpzUQZDD2iG0o;-><init>(Lcom/android/server/contentcapture/ContentCaptureServerSession;)V
+HPLcom/android/server/contentcapture/-$$Lambda$ContentCaptureServerSession$PKv4-aNj3xMYOeCpzUQZDD2iG0o;->binderDied()V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$12wkbjo54EUwTPFKOuEn42KWKFg;-><init>(Landroid/service/contentcapture/ActivityEvent;)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$12wkbjo54EUwTPFKOuEn42KWKFg;->run(Landroid/os/IInterface;)V
+PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$PMsA3CmwChlM0Qy__Uy6Yr5CFzk;-><init>(Landroid/view/contentcapture/ContentCaptureContext;IILcom/android/internal/os/IResultReceiver;I)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$PMsA3CmwChlM0Qy__Uy6Yr5CFzk;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$QbbzaxOFnxJI34vQptxzLE9Vvog;-><init>(I)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$QbbzaxOFnxJI34vQptxzLE9Vvog;->run(Landroid/os/IInterface;)V
+PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$haMfPWsaVUWwKcAPgM3AadAkvOQ;-><init>(Landroid/view/contentcapture/DataRemovalRequest;)V
+PLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$haMfPWsaVUWwKcAPgM3AadAkvOQ;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$yRaGuMutdbjMq9h32e3TC2_1a_A;-><init>(Landroid/service/contentcapture/ActivityEvent;)V
+HPLcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$yRaGuMutdbjMq9h32e3TC2_1a_A;->run(Landroid/os/IInterface;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerInternal;-><init>()V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;)V
 PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->finishSession(Ljava/lang/String;)V
+HPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->finishSession(I)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->getContentCaptureConditions(Ljava/lang/String;Lcom/android/internal/os/IResultReceiver;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->getServiceComponentName(Lcom/android/internal/os/IResultReceiver;)V
 PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->getServiceSettingsActivity(Lcom/android/internal/os/IResultReceiver;)V
-PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/content/ComponentName;Ljava/lang/String;ILcom/android/internal/os/IResultReceiver;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->lambda$getContentCaptureConditions$2$ContentCaptureManagerService$ContentCaptureManagerServiceStub(Ljava/lang/String;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->lambda$getServiceSettingsActivity$1$ContentCaptureManagerService$ContentCaptureManagerServiceStub()V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->removeData(Landroid/view/contentcapture/DataRemovalRequest;)V
+HPLcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;->startSession(Landroid/os/IBinder;Landroid/content/ComponentName;IILcom/android/internal/os/IResultReceiver;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->access$100(Lcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;ILjava/lang/String;Z)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->getOptions(ILjava/lang/String;)Landroid/content/ContentCaptureOptions;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->setServiceInfo(ILjava/lang/String;Z)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/server/contentcapture/ContentCaptureManagerService$1;)V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;->getOptionsForPackage(ILjava/lang/String;)Landroid/content/ContentCaptureOptions;
 PLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;->isContentCaptureServiceForUser(II)Z
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;->notifyActivityEvent(ILandroid/content/ComponentName;I)V
-PLcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;->sendActivityAssistData(ILandroid/os/IBinder;Landroid/os/Bundle;)Z
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;-><clinit>()V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1000(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1100()Ljava/lang/String;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1200(Lcom/android/server/contentcapture/ContentCaptureManagerService;Ljava/lang/String;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1300(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1400(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$1600(Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/internal/os/IResultReceiver;Ljava/lang/Runnable;)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$200(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Landroid/app/ActivityManagerInternal;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2000(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2000(Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/internal/os/IResultReceiver;Ljava/lang/Runnable;)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2100(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2100(Lcom/android/server/contentcapture/ContentCaptureManagerService;Lcom/android/internal/os/IResultReceiver;Ljava/lang/Runnable;)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2300(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2400(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2500(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2600(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/String;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2600(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2700(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2700(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/String;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2800(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2800(Lcom/android/server/contentcapture/ContentCaptureManagerService;Ljava/lang/String;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$2900(Lcom/android/server/contentcapture/ContentCaptureManagerService;Ljava/lang/String;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$300(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3000(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3100(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3100(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3200(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3400(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3500(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3500(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3600(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3600(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$3700(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$400(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$4000(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+HPLcom/android/server/contentcapture/ContentCaptureManagerService;->access$4100(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$500(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$700(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$800(Lcom/android/server/contentcapture/ContentCaptureManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->access$900(Lcom/android/server/contentcapture/ContentCaptureManagerService;)Ljava/lang/Object;
 PLcom/android/server/contentcapture/ContentCaptureManagerService;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/contentcapture/ContentCaptureManagerService;->enforceCallingPermissionForManagement()V
 PLcom/android/server/contentcapture/ContentCaptureManagerService;->getAmInternal()Landroid/app/ActivityManagerInternal;
-HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isDisabledLocked(I)Z
-HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
-HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->isDefaultServiceLocked(I)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->isDisabledBySettingsLocked(I)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->isDisabledLocked(I)Z
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isEnabledBySettings(I)Z
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isSupported(Landroid/content/pm/UserInfo;)Z
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->isSupportedUser(Lcom/android/server/SystemService$TargetUser;)Z
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->lambda$new$0$ContentCaptureManagerService(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->newServiceLocked(IZ)Lcom/android/server/contentcapture/ContentCapturePerUserService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->onDeviceConfigChange(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->onServicePackageUpdatedLocked(I)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->onServicePackageUpdatingLocked(I)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->onServiceRemoved(Lcom/android/server/contentcapture/ContentCapturePerUserService;I)V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->onStart()V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
+HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->setDeviceConfigProperties()V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->setDisabledByDeviceConfig(Ljava/lang/String;)V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->setFineTuneParamsFromDeviceConfig()V
 HSPLcom/android/server/contentcapture/ContentCaptureManagerService;->setLoggingLevelFromDeviceConfig()V
+PLcom/android/server/contentcapture/ContentCaptureManagerService;->throwsSecurityException(Lcom/android/internal/os/IResultReceiver;Ljava/lang/Runnable;)Z
+PLcom/android/server/contentcapture/ContentCaptureMetricsLogger;->writeServiceEvent(ILandroid/content/ComponentName;)V
+PLcom/android/server/contentcapture/ContentCaptureMetricsLogger;->writeServiceEvent(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/contentcapture/ContentCaptureMetricsLogger;->writeSessionEvent(IIILandroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+HPLcom/android/server/contentcapture/ContentCaptureMetricsLogger;->writeSessionFlush(ILandroid/content/ComponentName;Landroid/content/ComponentName;Landroid/service/contentcapture/FlushMetrics;Landroid/content/ContentCaptureOptions;I)V
+HPLcom/android/server/contentcapture/ContentCaptureMetricsLogger;->writeSetWhitelistEvent(Landroid/content/ComponentName;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;-><init>(Lcom/android/server/contentcapture/ContentCapturePerUserService;)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;-><init>(Lcom/android/server/contentcapture/ContentCapturePerUserService;Lcom/android/server/contentcapture/ContentCapturePerUserService$1;)V
 PLcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;->setContentCaptureWhitelist(Ljava/util/List;Ljava/util/List;)V
+HPLcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;->writeSessionFlush(ILandroid/content/ComponentName;Landroid/service/contentcapture/FlushMetrics;Landroid/content/ContentCaptureOptions;I)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;-><clinit>()V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;-><init>(Lcom/android/server/contentcapture/ContentCaptureManagerService;Ljava/lang/Object;ZI)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$100(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Lcom/android/server/infra/AbstractMasterSystemService;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$1000(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Ljava/lang/Object;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$1100(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Lcom/android/server/infra/AbstractMasterSystemService;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$200()Ljava/lang/String;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$400(Lcom/android/server/contentcapture/ContentCapturePerUserService;)I
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$500(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Lcom/android/server/infra/AbstractMasterSystemService;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$600(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Landroid/util/SparseArray;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$700(Lcom/android/server/contentcapture/ContentCapturePerUserService;)I
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$800(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Lcom/android/server/infra/AbstractMasterSystemService;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->access$900(Lcom/android/server/contentcapture/ContentCapturePerUserService;)Lcom/android/server/infra/AbstractMasterSystemService;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->assertCallerLocked(Ljava/lang/String;)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->destroyLocked()V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->destroySessionsLocked()V
 PLcom/android/server/contentcapture/ContentCapturePerUserService;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/contentcapture/ContentCapturePerUserService;->finishSessionLocked(Ljava/lang/String;)V
-HSPLcom/android/server/contentcapture/ContentCapturePerUserService;->getOptionsForPackageLocked(Ljava/lang/String;)Landroid/content/ContentCaptureOptions;
-PLcom/android/server/contentcapture/ContentCapturePerUserService;->getSessionId(Landroid/os/IBinder;)Ljava/lang/String;
-HSPLcom/android/server/contentcapture/ContentCapturePerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
-HSPLcom/android/server/contentcapture/ContentCapturePerUserService;->onActivityEventLocked(Landroid/content/ComponentName;I)V
+HPLcom/android/server/contentcapture/ContentCapturePerUserService;->finishSessionLocked(I)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->getContentCaptureConditionsLocked(Ljava/lang/String;)Landroid/util/ArraySet;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->getServiceSettingsActivityLocked()Landroid/content/ComponentName;
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->isContentCaptureServiceForUserLocked(I)Z
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+HPLcom/android/server/contentcapture/ContentCapturePerUserService;->onActivityEventLocked(Landroid/content/ComponentName;I)V
 PLcom/android/server/contentcapture/ContentCapturePerUserService;->onConnected()V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->onPackageUpdatedLocked()V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->onPackageUpdatingLocked()V
 PLcom/android/server/contentcapture/ContentCapturePerUserService;->onServiceDied(Lcom/android/server/contentcapture/RemoteContentCaptureService;)V
 PLcom/android/server/contentcapture/ContentCapturePerUserService;->onServiceDied(Ljava/lang/Object;)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->removeDataLocked(Landroid/view/contentcapture/DataRemovalRequest;)V
+HPLcom/android/server/contentcapture/ContentCapturePerUserService;->removeSessionLocked(I)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->resetContentCaptureWhitelistLocked()V
 PLcom/android/server/contentcapture/ContentCapturePerUserService;->resurrectSessionsLocked()V
-PLcom/android/server/contentcapture/ContentCapturePerUserService;->sendActivityAssistDataLocked(Landroid/os/IBinder;Landroid/os/Bundle;)Z
-PLcom/android/server/contentcapture/ContentCapturePerUserService;->startSessionLocked(Landroid/os/IBinder;Landroid/content/pm/ActivityPresentationInfo;Ljava/lang/String;IILcom/android/internal/os/IResultReceiver;)V
-HSPLcom/android/server/contentcapture/ContentCapturePerUserService;->updateLocked(Z)Z
-HSPLcom/android/server/contentcapture/ContentCapturePerUserService;->updateRemoteServiceLocked(Z)V
-PLcom/android/server/contentcapture/ContentCaptureServerSession;-><init>(Landroid/os/IBinder;Lcom/android/server/contentcapture/ContentCapturePerUserService;Landroid/content/ComponentName;Lcom/android/internal/os/IResultReceiver;IILjava/lang/String;II)V
+HPLcom/android/server/contentcapture/ContentCapturePerUserService;->startSessionLocked(Landroid/os/IBinder;Landroid/content/pm/ActivityPresentationInfo;IIILcom/android/internal/os/IResultReceiver;)V
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->updateLocked(Z)Z
+PLcom/android/server/contentcapture/ContentCapturePerUserService;->updateRemoteServiceLocked(Z)V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;-><clinit>()V
+HPLcom/android/server/contentcapture/ContentCaptureServerSession;-><init>(Ljava/lang/Object;Landroid/os/IBinder;Lcom/android/server/contentcapture/ContentCapturePerUserService;Landroid/content/ComponentName;Lcom/android/internal/os/IResultReceiver;IIIII)V
 PLcom/android/server/contentcapture/ContentCaptureServerSession;->destroyLocked(Z)V
 PLcom/android/server/contentcapture/ContentCaptureServerSession;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;->lambda$new$0$ContentCaptureServerSession()V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;->notifySessionStartedLocked(Lcom/android/internal/os/IResultReceiver;)V
+HPLcom/android/server/contentcapture/ContentCaptureServerSession;->onClientDeath()V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;->pauseLocked()V
 PLcom/android/server/contentcapture/ContentCaptureServerSession;->removeSelfLocked(Z)V
 PLcom/android/server/contentcapture/ContentCaptureServerSession;->resurrectLocked()V
-PLcom/android/server/contentcapture/ContentCaptureServerSession;->sendActivitySnapshotLocked(Landroid/service/contentcapture/SnapshotData;)V
-HSPLcom/android/server/contentcapture/RemoteContentCaptureService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/contentcapture/IContentCaptureServiceCallback;ILcom/android/server/contentcapture/ContentCapturePerUserService;ZZI)V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;->setContentCaptureEnabledLocked(Z)V
+PLcom/android/server/contentcapture/ContentCaptureServerSession;->toString()Ljava/lang/String;
+PLcom/android/server/contentcapture/RemoteContentCaptureService;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/content/ComponentName;Landroid/service/contentcapture/IContentCaptureServiceCallback;ILcom/android/server/contentcapture/ContentCapturePerUserService;ZZI)V
+PLcom/android/server/contentcapture/RemoteContentCaptureService;->ensureBoundLocked()V
 PLcom/android/server/contentcapture/RemoteContentCaptureService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-PLcom/android/server/contentcapture/RemoteContentCaptureService;->getTimeoutIdleBindMillis()J
+PLcom/android/server/contentcapture/RemoteContentCaptureService;->getServiceInterface(Landroid/os/IBinder;)Landroid/service/contentcapture/IContentCaptureService;
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->getTimeoutIdleBindMillis()J
 PLcom/android/server/contentcapture/RemoteContentCaptureService;->handleOnConnectedStateChanged(Z)V
-PLcom/android/server/contentcapture/RemoteContentCaptureService;->onSessionStarted(Landroid/view/contentcapture/ContentCaptureContext;Ljava/lang/String;ILcom/android/internal/os/IResultReceiver;I)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->lambda$onActivityLifecycleEvent$4(Landroid/service/contentcapture/ActivityEvent;Landroid/service/contentcapture/IContentCaptureService;)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->lambda$onActivityLifecycleEvent$5(Landroid/service/contentcapture/ActivityEvent;Landroid/service/contentcapture/IContentCaptureService;)V
+PLcom/android/server/contentcapture/RemoteContentCaptureService;->lambda$onDataRemovalRequest$3(Landroid/view/contentcapture/DataRemovalRequest;Landroid/service/contentcapture/IContentCaptureService;)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->lambda$onSessionFinished$1(ILandroid/service/contentcapture/IContentCaptureService;)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->lambda$onSessionStarted$0(Landroid/view/contentcapture/ContentCaptureContext;IILcom/android/internal/os/IResultReceiver;ILandroid/service/contentcapture/IContentCaptureService;)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->onActivityLifecycleEvent(Landroid/service/contentcapture/ActivityEvent;)V
+PLcom/android/server/contentcapture/RemoteContentCaptureService;->onDataRemovalRequest(Landroid/view/contentcapture/DataRemovalRequest;)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->onSessionFinished(I)V
+HPLcom/android/server/contentcapture/RemoteContentCaptureService;->onSessionStarted(Landroid/view/contentcapture/ContentCaptureContext;IILcom/android/internal/os/IResultReceiver;I)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$Enqw46SYVKFK9F2xX4qUcIu5_3I;-><init>(Ljava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$Enqw46SYVKFK9F2xX4qUcIu5_3I;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$VKh1DoMPNSPjPfnVGdsInmxuqzc;-><init>(ILandroid/graphics/GraphicBuffer;ILandroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$VKh1DoMPNSPjPfnVGdsInmxuqzc;->run(Landroid/os/IInterface;)V
+PLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$eoGnQ2MDLLnW1UBX6wxNE1VBLAk;-><init>(Landroid/app/contentsuggestions/ClassificationsRequest;Landroid/app/contentsuggestions/IClassificationsCallback;)V
+PLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$eoGnQ2MDLLnW1UBX6wxNE1VBLAk;->run(Landroid/os/IInterface;)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$yUTbcaYlZCYTmagCkNJ3i2VCkY4;-><init>(Landroid/app/contentsuggestions/SelectionsRequest;Landroid/app/contentsuggestions/ISelectionsCallback;)V
+HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$yUTbcaYlZCYTmagCkNJ3i2VCkY4;->run(Landroid/os/IInterface;)V
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;-><init>(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)V
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;-><init>(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService$1;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;->classifyContentSelections(ILandroid/app/contentsuggestions/ClassificationsRequest;Landroid/app/contentsuggestions/IClassificationsCallback;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;->notifyInteraction(ILjava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;->provideContextImage(IILandroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;->suggestContentSelections(ILandroid/app/contentsuggestions/SelectionsRequest;Landroid/app/contentsuggestions/ISelectionsCallback;)V
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;-><clinit>()V
 HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$100(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;ILjava/lang/String;)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$1000(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)Ljava/lang/Object;
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$1100(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$200(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$300(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$400(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)Ljava/lang/Object;
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$500(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$600(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)Ljava/lang/Object;
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$700(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$800(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;)Ljava/lang/Object;
+PLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->access$900(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;I)Lcom/android/server/infra/AbstractPerUserSystemService;
+HPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->enforceCaller(ILjava/lang/String;)V
 HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->newServiceLocked(IZ)Lcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;
 HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
 HSPLcom/android/server/contentsuggestions/ContentSuggestionsManagerService;->onStart()V
-HSPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService$1;-><init>(Lcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService$1;->onServiceDied(Lcom/android/server/contentsuggestions/RemoteContentSuggestionsService;)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService$1;->onServiceDied(Ljava/lang/Object;)V
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;-><clinit>()V
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;-><init>(Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;Ljava/lang/Object;I)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->access$000()Ljava/lang/String;
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->access$100(Lcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->classifyContentSelectionsLocked(Landroid/app/contentsuggestions/ClassificationsRequest;Landroid/app/contentsuggestions/IClassificationsCallback;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->ensureRemoteServiceLocked()Lcom/android/server/contentsuggestions/RemoteContentSuggestionsService;
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->notifyInteractionLocked(Ljava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->provideContextImageLocked(ILandroid/os/Bundle;)V
+PLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->suggestContentSelectionsLocked(Landroid/app/contentsuggestions/SelectionsRequest;Landroid/app/contentsuggestions/ISelectionsCallback;)V
 HSPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->updateLocked(Z)Z
+HSPLcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;->updateRemoteServiceLocked()V
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/contentsuggestions/RemoteContentSuggestionsService$Callbacks;ZZ)V
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->classifyContentSelections(Landroid/app/contentsuggestions/ClassificationsRequest;Landroid/app/contentsuggestions/IClassificationsCallback;)V
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->getServiceInterface(Landroid/os/IBinder;)Landroid/service/contentsuggestions/IContentSuggestionsService;
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->getTimeoutIdleBindMillis()J
+PLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->lambda$classifyContentSelections$2(Landroid/app/contentsuggestions/ClassificationsRequest;Landroid/app/contentsuggestions/IClassificationsCallback;Landroid/service/contentsuggestions/IContentSuggestionsService;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->lambda$notifyInteraction$3(Ljava/lang/String;Landroid/os/Bundle;Landroid/service/contentsuggestions/IContentSuggestionsService;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->lambda$provideContextImage$0(ILandroid/graphics/GraphicBuffer;ILandroid/os/Bundle;Landroid/service/contentsuggestions/IContentSuggestionsService;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->lambda$suggestContentSelections$1(Landroid/app/contentsuggestions/SelectionsRequest;Landroid/app/contentsuggestions/ISelectionsCallback;Landroid/service/contentsuggestions/IContentSuggestionsService;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->notifyInteraction(Ljava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->provideContextImage(ILandroid/graphics/GraphicBuffer;ILandroid/os/Bundle;)V
+HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->suggestContentSelections(Landroid/app/contentsuggestions/SelectionsRequest;Landroid/app/contentsuggestions/ISelectionsCallback;)V
+HSPLcom/android/server/coverage/CoverageService;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-JG0-dzlHzXDx_I_iTsqSE_Bv5E;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-JG0-dzlHzXDx_I_iTsqSE_Bv5E;->accept(Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-SLM70h2SesShbP-O5yYa1PYZVw;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-SLM70h2SesShbP-O5yYa1PYZVw;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0YdFTQIxrgxkEfzJdhGZzP5z4eM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0YdFTQIxrgxkEfzJdhGZzP5z4eM;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0xOTapp1kSvojAdqJGdavUtvjqU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0xOTapp1kSvojAdqJGdavUtvjqU;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$19j1Aw89Idv-1enlT4bK5AugL5A;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$19j1Aw89Idv-1enlT4bK5AugL5A;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1_463wML1lyyuhNEcH6YQZBNupk;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1_463wML1lyyuhNEcH6YQZBNupk;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1iJrvtbb8D-HC5dcMcu7FeZ0bls;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1iJrvtbb8D-HC5dcMcu7FeZ0bls;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1sOJuLKtNOd9FkSCbRQ10fuHN1Q;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1sOJuLKtNOd9FkSCbRQ10fuHN1Q;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2CZYBzY0RjTtlQvIxYBzaiQE2iI;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2CZYBzY0RjTtlQvIxYBzaiQE2iI;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2dnwZdGuTZnM6wwcm6xROcqfwb0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2dnwZdGuTZnM6wwcm6xROcqfwb0;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3L30HmY-8WRZNE3mKrX3xDa7_k8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3L30HmY-8WRZNE3mKrX3xDa7_k8;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3ci-C-bvTQXBAy8k6mmH8aTckko;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3ci-C-bvTQXBAy8k6mmH8aTckko;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5-nWFGyr7IsWb84Z7EeOMY-GKY4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5-nWFGyr7IsWb84Z7EeOMY-GKY4;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5Xy1SW6FmfM4-7F8ZHPEFhBAJjs;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5Xy1SW6FmfM4-7F8ZHPEFhBAJjs;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6E7MK8TbNUybt8S9CwAdfdcn2x0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6E7MK8TbNUybt8S9CwAdfdcn2x0;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7Cpvth9RknvcbwQxadY3QRMYuFU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7Cpvth9RknvcbwQxadY3QRMYuFU;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7uNrpVR2JSemRG4moJeAWa1SmL4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/CharSequence;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7uNrpVR2JSemRG4moJeAWa1SmL4;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8XUqgbgdUcEUgLSotmYa65MlJU4;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8XUqgbgdUcEUgLSotmYa65MlJU4;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8nvbMteplUbtaSMuw4DWJ-MQa4g;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8nvbMteplUbtaSMuw4DWJ-MQa4g;-><init>()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8qCcR6mM8qspH7fQ8IbJXDcl-oE;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8qCcR6mM8qspH7fQ8IbJXDcl-oE;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9BBesRjvUOb0HylcboB6iBXa9rA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9BBesRjvUOb0HylcboB6iBXa9rA;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9H-OtiTr0pLXuE1px0lLrHWW2gg;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9H-OtiTr0pLXuE1px0lLrHWW2gg;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$BYd2ftVebU2Ktj6tr-DFfrGE5TE;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$BYd2ftVebU2Ktj6tr-DFfrGE5TE;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CAHsZjsjfTBjSCaXhAqawAZQxAs;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CAHsZjsjfTBjSCaXhAqawAZQxAs;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CClEW-CtZQRadOocoqGh0wiKhG4;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CClEW-CtZQRadOocoqGh0wiKhG4;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CiK-O2Bv367FPc0wKJTNYLXtCuE;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CiK-O2Bv367FPc0wKJTNYLXtCuE;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Cv-dtXpkqSOvZN0Wu3TuYoNTmmU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Cv-dtXpkqSOvZN0Wu3TuYoNTmmU;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CxwsOCiBBPip8s6Ob2djUNKClVQ;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;IZLandroid/app/admin/DeviceAdminInfo;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CxwsOCiBBPip8s6Ob2djUNKClVQ;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$D4ztnD6BT25lWG-r4PUjRzNR1zs;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$D4ztnD6BT25lWG-r4PUjRzNR1zs;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E3l49EGA6UCGqdaOZqz6OFNlTrc;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E3l49EGA6UCGqdaOZqz6OFNlTrc;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E9awYavFY3fUvYuziaFPn187V2A;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E9awYavFY3fUvYuziaFPn187V2A;->accept(Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EmW1vJQsSAWrjreihtc0C_PUzE8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EmW1vJQsSAWrjreihtc0C_PUzE8;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GdvC4eub6BtkkX5BnHuPR5Ob0ag;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GdvC4eub6BtkkX5BnHuPR5Ob0ag;-><init>()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GrJ2yAyrcr8_uJK0BCe9i4AcIYc;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GrJ2yAyrcr8_uJK0BCe9i4AcIYc;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Hv-tQz9yG7UQN-NW0Pun2vUKT00;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Hv-tQz9yG7UQN-NW0Pun2vUKT00;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IFjmfnHIk0cwZ4cu_jTHWTsMxfc;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IFjmfnHIk0cwZ4cu_jTHWTsMxfc;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IMrqSPgnQFlD9AquL6PEMeRT48A;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IMrqSPgnQFlD9AquL6PEMeRT48A;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IiTDvO4lH6i6MSEHWCEcAk85DDE;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IiTDvO4lH6i6MSEHWCEcAk85DDE;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$J1D7mGzV3_Pe5CkN4SOHvBx0GQM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ZI)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$J1D7mGzV3_Pe5CkN4SOHvBx0GQM;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JEgkZ2GnVgvzJnS1uvLsrUt2pUs;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JEgkZ2GnVgvzJnS1uvLsrUt2pUs;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Jn1h0KwAOFO-2SLpickAr7b6UEI;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Jn1h0KwAOFO-2SLpickAr7b6UEI;->runOrThrow()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KVBXyPBBtnY04KgNMY8kTUc8TDM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KVBXyPBBtnY04KgNMY8kTUc8TDM;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kt954vcIuhnBMcd-u6lDaLOaZfM;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kt954vcIuhnBMcd-u6lDaLOaZfM;-><init>()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kxt959fEmzAZCuTvdZLLr4ydBwg;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kxt959fEmzAZCuTvdZLLr4ydBwg;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L0UrX9eXuPfnxY8pUss60yr6d3E;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I[B)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L0UrX9eXuPfnxY8pUss60yr6d3E;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L1BjBKCM4PsL1cN_5wbAOuBRIk8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L1BjBKCM4PsL1cN_5wbAOuBRIk8;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L3XzC2X57y8_uXrsW81Qk8KXQTA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/CharSequence;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L3XzC2X57y8_uXrsW81Qk8KXQTA;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LocalService$YxQa4ZcUPWKs76meOLw1c_tn1OU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LocalService$YxQa4ZcUPWKs76meOLw1c_tn1OU;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LoqX5KbgPsZw5lbWDX6YUnchwpU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LoqX5KbgPsZw5lbWDX6YUnchwpU;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MTDdFPtPQJRYX737yGn0OzoNDCQ;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MTDdFPtPQJRYX737yGn0OzoNDCQ;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MX3M3eTWWoV82PMImp1skv1Wm-I;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MX3M3eTWWoV82PMImp1skv1Wm-I;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MviNnPMxpWJ3R18v9L0iG_mI4as;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MviNnPMxpWJ3R18v9L0iG_mI4as;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NV9-XJEdh3iVV_1FcyzVTLRWMMs;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NV9-XJEdh3iVV_1FcyzVTLRWMMs;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NzTaj70nEECGXhr52RbDyXK_fPU;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NzTaj70nEECGXhr52RbDyXK_fPU;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$O6O5T5aoG6MmH8aAAGYNwYhbtw8;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$O6O5T5aoG6MmH8aAAGYNwYhbtw8;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$O7VBr2X2LTCZ2rClZ_UwgB-Qoa0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;IILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$O7VBr2X2LTCZ2rClZ_UwgB-Qoa0;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Ohf5PJQmXjsarWisPAuPB8WECX8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Ohf5PJQmXjsarWisPAuPB8WECX8;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PQxvRo4LWlTe_I8RQ-J5BqZxYGY;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PQxvRo4LWlTe_I8RQ-J5BqZxYGY;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PbWvUymvyMNlDpwaJHqqjloqHY0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PbWvUymvyMNlDpwaJHqqjloqHY0;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QSZZ_1yoXc0KadPc27uY1ijTXpM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QSZZ_1yoXc0KadPc27uY1ijTXpM;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$R7jNGUHgN9uG5tT_PuItt7Vn00g;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$R7jNGUHgN9uG5tT_PuItt7Vn00g;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RaSE9sEzDuKpHnuwL4Ihn963J7g;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RaSE9sEzDuKpHnuwL4Ihn963J7g;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RgCXuyEFWhEba2UFAFFocJYLNYo;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RgCXuyEFWhEba2UFAFFocJYLNYo;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Rt85y5wEY0DRLvRJ6XnzxsSF1eo;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Rt85y5wEY0DRLvRJ6XnzxsSF1eo;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T-DYGQoYs3p1_NgKsVcKRX8fTnA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T-DYGQoYs3p1_NgKsVcKRX8fTnA;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T4eSwgayOKOYwmmjCYnPFwO28Pw;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T4eSwgayOKOYwmmjCYnPFwO28Pw;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T7SRZQOZqOGELBG7YRAkVmxuJh4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T7SRZQOZqOGELBG7YRAkVmxuJh4;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Tvjb8n7J2l26EpnkgMIAbjrhdu8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Tvjb8n7J2l26EpnkgMIAbjrhdu8;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UPnhCNO69TKnF1hSXENMzK_2NSQ;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UPnhCNO69TKnF1hSXENMzK_2NSQ;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UZoVWdpJJZwABGNhZWHbxPIvMO4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UZoVWdpJJZwABGNhZWHbxPIvMO4;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$VDIwg4X1iKAqFvQldV7uz3FQETk;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$VDIwg4X1iKAqFvQldV7uz3FQETk;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WtqYUfe7dJqIftHU4nTlehWlM1o;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WtqYUfe7dJqIftHU4nTlehWlM1o;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8P9YSbXKt6AGKQrPiFxyDc-HJQ;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8P9YSbXKt6AGKQrPiFxyDc-HJQ;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8ssNAYCaueT78i6KH-xMYuutXA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8ssNAYCaueT78i6KH-xMYuutXA;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Yha2g5948Y6-99_Zk6qnSQ08xaY;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Yha2g5948Y6-99_Zk6qnSQ08xaY;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZKo9wKXbn_FqsEHI_sFpmbOwKZE;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZKo9wKXbn_FqsEHI_sFpmbOwKZE;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZQ4kE3IfWore2zFzZG1Za8zcO2k;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZQ4kE3IfWore2zFzZG1Za8zcO2k;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZX_ASbhDe3h4tTo7Tg94QibI20o;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;IIZLandroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZX_ASbhDe3h4tTo7Tg94QibI20o;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZnmDaAarGwYrOpGdw8hNrUXv7Zk;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZnmDaAarGwYrOpGdw8hNrUXv7Zk;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZpoQff3M1J7SHl-aNOO7YrgHMIw;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZpoQff3M1J7SHl-aNOO7YrgHMIw;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZyL5RaozhKx4pFmCb-n3LlH5zy8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZyL5RaozhKx4pFmCb-n3LlH5zy8;->run()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_4WJ5_9h8DV0lHhL1rEl8TaHdxA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_4WJ5_9h8DV0lHhL1rEl8TaHdxA;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_Nw-YGl5ncBg-LJs8W81WNW6xoU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
 HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_Nw-YGl5ncBg-LJs8W81WNW6xoU;->run()V
-PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$kFKlG-1V9Atta-0tqqg2BxiKi4I;->accept(Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$__SFQBw4-nPdRkwUAOWlzeEXEDg;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$__SFQBw4-nPdRkwUAOWlzeEXEDg;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a2r02nyCVCgFWzutUK0956l0CYQ;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a2r02nyCVCgFWzutUK0956l0CYQ;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a30NURDJ7zRXLs68n_gcBSzFE40;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a30NURDJ7zRXLs68n_gcBSzFE40;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$aC4EXkkAMAWYv8qwbTvE24Kub28;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$aC4EXkkAMAWYv8qwbTvE24Kub28;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$aVGoq4gaY333M9B5L3o4c3HvuCM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$aVGoq4gaY333M9B5L3o4c3HvuCM;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cF-dIKd2XSk01iZ99bPAGkzvRQ8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/CharSequence;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cF-dIKd2XSk01iZ99bPAGkzvRQ8;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cRGrwg6rL1QILp8DpjsAVKsyR7U;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cRGrwg6rL1QILp8DpjsAVKsyR7U;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$d08rPNL3sI-Hx7ZpnR_dxsBLZmk;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$d08rPNL3sI-Hx7ZpnR_dxsBLZmk;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$dhmKG9Egag2TPEwukGPiev6dT70;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$dhmKG9Egag2TPEwukGPiev6dT70;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e2DzcGWRwnNdKo6blzNAob0HsSw;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e2DzcGWRwnNdKo6blzNAob0HsSw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e7c2huGjk3obVFka43jMbcJT0E8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e7c2huGjk3obVFka43jMbcJT0E8;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eKrWywCP77ljwUZh-R1c8aoFHh4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eKrWywCP77ljwUZh-R1c8aoFHh4;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eZw4tgcZRgP2OCEUG4UMwL1KdZI;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eZw4tgcZRgP2OCEUG4UMwL1KdZI;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fU0Evn2qWpzcawqc8Qu9d2hCcoA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fU0Evn2qWpzcawqc8Qu9d2hCcoA;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$frL8-y9KUDCjvP_ukJ0uoU1Mk5k;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$frL8-y9KUDCjvP_ukJ0uoU1Mk5k;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fzxODltoSAVybDWkw84u878Ddso;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fzxODltoSAVybDWkw84u878Ddso;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$g3pjxXrKbnPToHF_egmYdr2f8-M;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;Landroid/os/UserHandle;Landroid/os/IBinder;Z)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$g3pjxXrKbnPToHF_egmYdr2f8-M;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$gbbZuAsRK_vXaCroy1gj9r0-V4o;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$gbbZuAsRK_vXaCroy1gj9r0-V4o;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hWg24ME7nlaYglkgmkHI7VvIfWk;-><init>(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hWg24ME7nlaYglkgmkHI7VvIfWk;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hX2NEWgF6rTNkdyJ6G_rvoL6TR0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hX2NEWgF6rTNkdyJ6G_rvoL6TR0;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$iojPtiJXnnFJDsa0P-LGE6gfikU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$iojPtiJXnnFJDsa0P-LGE6gfikU;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jDU7UhnyXuItN3e_DVSz6WUa7Qc;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jDU7UhnyXuItN3e_DVSz6WUa7Qc;->runOrThrow()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ja_JdZk-BJUe5rbQuU_LxLblBfM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ja_JdZk-BJUe5rbQuU_LxLblBfM;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jgsUvRSr_6U0Lrv4PXbJtZQe_Mk;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jgsUvRSr_6U0Lrv4PXbJtZQe_Mk;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$l1-j9XdvuDdp7fQsY_n_Pv6CP3A;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$l1-j9XdvuDdp7fQsY_n_Pv6CP3A;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lG9keASbSI5H2nDJOOi-80s_LvI;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lG9keASbSI5H2nDJOOi-80s_LvI;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lmsiKzZN5DKHTzgWChWAyGfrxwk;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lmsiKzZN5DKHTzgWChWAyGfrxwk;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$m2h-vVM6u7Yweb_QNLSUAbWduj8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$m2h-vVM6u7Yweb_QNLSUAbWduj8;->runOrThrow()V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mF6fAm3fr7FHqqfmNeO86iULgao;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;I)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mF6fAm3fr7FHqqfmNeO86iULgao;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mkMQ9WtInWWL27eiU6IDs8Sol8Q;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mkMQ9WtInWWL27eiU6IDs8Sol8Q;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nBM3fQ_95BD262BpQ3v_i1LTo9o;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nBM3fQ_95BD262BpQ3v_i1LTo9o;-><init>()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$p6M2CJuZlA3Rm0CLLTJMm5qd9vU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$p6M2CJuZlA3Rm0CLLTJMm5qd9vU;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$peeHTd988oQjHrGFppwrwfdKZU4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$peeHTd988oQjHrGFppwrwfdKZU4;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qLdZ0ebI9-VES2qOXxipAqDsLtg;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qLdZ0ebI9-VES2qOXxipAqDsLtg;->runOrThrow()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qViz9I1AJUZv2wUBqL57ZuJyV6w;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qViz9I1AJUZv2wUBqL57ZuJyV6w;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qfNjMPDGLybg6rkwexpw8dZrM-8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qfNjMPDGLybg6rkwexpw8dZrM-8;->runOrThrow()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tAgDO0b7hXUD7MGkHfgPTDV4o6g;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tAgDO0b7hXUD7MGkHfgPTDV4o6g;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tN28Me5AH2pjgYHvPnMAsCjK_NU;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tN28Me5AH2pjgYHvPnMAsCjK_NU;-><init>()V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tWth7tXYQXpYp5Hzb8E7OMe1xQU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tWth7tXYQXpYp5Hzb8E7OMe1xQU;->getOrThrow()Ljava/lang/Object;
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uBbMjDj76ovvi3SNe9WwB6bL1bg;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uBbMjDj76ovvi3SNe9WwB6bL1bg;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uD3EtO2DK71MscaG7ykh6GMewyM;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uD3EtO2DK71MscaG7ykh6GMewyM;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uSnwuwX0qdERvQ94-2ib1BPYhnQ;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uSnwuwX0qdERvQ94-2ib1BPYhnQ;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ubKPRWVtvdZzQDW6CDEvggHJXRc;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ubKPRWVtvdZzQDW6CDEvggHJXRc;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ufUhKIuf-ai14oI_NezHS9qCjh0;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ufUhKIuf-ai14oI_NezHS9qCjh0;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$v4runHJLxiL3Ks01Uqv-LIy69tA;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$v4runHJLxiL3Ks01Uqv-LIy69tA;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vR-RWtti8ewEGuhsA0IoU86GAmo;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vR-RWtti8ewEGuhsA0IoU86GAmo;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vsNaZOHvF-kWqLDfhyiTAaRLpQU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vsNaZOHvF-kWqLDfhyiTAaRLpQU;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wdjKJZZQbwUvNkCxj7a-RCOB9p8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wdjKJZZQbwUvNkCxj7a-RCOB9p8;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wynHOghqUtl8CTB8Lp1BnOlWruI;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wynHOghqUtl8CTB8Lp1BnOlWruI;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wynHOghqUtl8CTB8Lp1BnOlWruI;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xJ8-hwvSE1cq8C5FtgXnoW_zBZU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xJ8-hwvSE1cq8C5FtgXnoW_zBZU;->getOrThrow()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xNEzeKxioITjjXluv5fVIH4Ral4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xNEzeKxioITjjXluv5fVIH4Ral4;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$x_XvH7NWMAoRsaUgVX92Cmco4J0;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$x_XvH7NWMAoRsaUgVX92Cmco4J0;-><init>()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xabPm_Q5O8A0hxC5Xhkk4DoTmp8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;ILcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xabPm_Q5O8A0hxC5Xhkk4DoTmp8;->runOrThrow()V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ylqQ-0_BWKf5SNKi5IEZksGSyuU;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ylqQ-0_BWKf5SNKi5IEZksGSyuU;->getOrThrow()Ljava/lang/Object;
+PLcom/android/server/devicepolicy/-$$Lambda$NetworkLoggingHandler$VKC_fB9Ws13yQKJ8zNkiF3Wp0Jk;-><init>(Lcom/android/server/devicepolicy/NetworkLoggingHandler;J)V
 PLcom/android/server/devicepolicy/-$$Lambda$NetworkLoggingHandler$VKC_fB9Ws13yQKJ8zNkiF3Wp0Jk;->run()V
+PLcom/android/server/devicepolicy/-$$Lambda$SecurityLogMonitor$y5Q3dMmmJ8bk5nBh8WR2MUroKrI;-><clinit>()V
+PLcom/android/server/devicepolicy/-$$Lambda$SecurityLogMonitor$y5Q3dMmmJ8bk5nBh8WR2MUroKrI;-><init>()V
+HPLcom/android/server/devicepolicy/-$$Lambda$SecurityLogMonitor$y5Q3dMmmJ8bk5nBh8WR2MUroKrI;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/devicepolicy/BaseIDevicePolicyManager;-><init>()V
+HSPLcom/android/server/devicepolicy/CertificateMonitor$1;-><init>(Lcom/android/server/devicepolicy/CertificateMonitor;)V
 HSPLcom/android/server/devicepolicy/CertificateMonitor$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/devicepolicy/CertificateMonitor;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
 HSPLcom/android/server/devicepolicy/CertificateMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;Landroid/os/Handler;)V
+HSPLcom/android/server/devicepolicy/CertificateMonitor;->access$000(Lcom/android/server/devicepolicy/CertificateMonitor;Landroid/os/UserHandle;)V
 PLcom/android/server/devicepolicy/CertificateMonitor;->getInstalledCaCertificates(Landroid/os/UserHandle;)Ljava/util/List;
 HSPLcom/android/server/devicepolicy/CertificateMonitor;->updateInstalledCertificates(Landroid/os/UserHandle;)V
+HSPLcom/android/server/devicepolicy/CryptoTestHelper;->runAndLogSelfTest()V
 PLcom/android/server/devicepolicy/DeviceAdminServiceController$DevicePolicyServiceConnection;-><init>(Lcom/android/server/devicepolicy/DeviceAdminServiceController;ILandroid/content/ComponentName;)V
 PLcom/android/server/devicepolicy/DeviceAdminServiceController$DevicePolicyServiceConnection;->asInterface(Landroid/os/IBinder;)Landroid/app/admin/IDeviceAdminService;
 PLcom/android/server/devicepolicy/DeviceAdminServiceController$DevicePolicyServiceConnection;->asInterface(Landroid/os/IBinder;)Ljava/lang/Object;
 PLcom/android/server/devicepolicy/DeviceAdminServiceController$DevicePolicyServiceConnection;->getBindFlags()I
 HSPLcom/android/server/devicepolicy/DeviceAdminServiceController;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Lcom/android/server/devicepolicy/DevicePolicyConstants;)V
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;->access$000(Lcom/android/server/devicepolicy/DeviceAdminServiceController;)Landroid/os/Handler;
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;->access$100(Lcom/android/server/devicepolicy/DeviceAdminServiceController;)Lcom/android/server/devicepolicy/DevicePolicyConstants;
+HSPLcom/android/server/devicepolicy/DeviceAdminServiceController;->debug(Ljava/lang/String;[Ljava/lang/Object;)V
 HSPLcom/android/server/devicepolicy/DeviceAdminServiceController;->disconnectServiceOnUserLocked(ILjava/lang/String;)V
-PLcom/android/server/devicepolicy/DeviceAdminServiceController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/devicepolicy/DeviceAdminServiceController;->findService(Ljava/lang/String;I)Landroid/content/pm/ServiceInfo;
 HSPLcom/android/server/devicepolicy/DeviceAdminServiceController;->startServiceForOwner(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DeviceAdminServiceController;->stopServiceForOwner(ILjava/lang/String;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;-><init>()V
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getPasswordQuality(I)I
 HSPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->getScreenCaptureDisabled(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->onUserRemoved(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setPasswordQuality(II)V
 HSPLcom/android/server/devicepolicy/DevicePolicyCacheImpl;->setScreenCaptureDisabled(IZ)V
 HSPLcom/android/server/devicepolicy/DevicePolicyConstants;-><init>(Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyConstants;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyConstants;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyConstants;->loadFromString(Ljava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyConstants;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$2;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$3;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$4;I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;->run()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$4;->sendDeviceOwnerUserCommand(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$5;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$6;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/IBinder;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$8;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$8;->run()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;-><clinit>()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;-><init>(Landroid/app/admin/DeviceAdminInfo;Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->ensureUserRestrictions()Landroid/os/Bundle;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getParentActiveAdmin()Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUid()I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->getUserHandle()Landroid/os/UserHandle;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasParentActiveAdmin()Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->hasUserRestrictions()Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readAttributeValues(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/util/Collection;)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->readPackageList(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeAttributeValuesToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/Collection;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeAttributeValueToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeAttributeValueToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeAttributeValueToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeAttributeValuesToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writePackageListToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/List;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeTextToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;->register()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;-><init>(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderClearCallingIdentity()J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingPid()I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUid()I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUserHandle()Landroid/os/UserHandle;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderGetCallingUserHandle()Landroid/os/UserHandle;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderIsCallingUidMyUid()Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderRestoreCallingIdentity(J)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->binderWithCleanCallingIdentity(Lcom/android/internal/util/FunctionalUtils$ThrowingSupplier;)Ljava/lang/Object;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->environmentGetUserSystemDirectory(I)Ljava/io/File;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityManagerInternal()Landroid/app/ActivityManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getActivityTaskManagerInternal()Lcom/android/server/wm/ActivityTaskManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getAlarmManager()Landroid/app/AlarmManager;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getConnectivityManager()Landroid/net/ConnectivityManager;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getDevicePolicyFilePathForSystemUser()Ljava/lang/String;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIActivityManager()Landroid/app/IActivityManager;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIActivityTaskManager()Landroid/app/IActivityTaskManager;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIBackupManager()Landroid/app/backup/IBackupManager;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIIpConnectivityMetrics()Landroid/net/IIpConnectivityMetrics;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPackageManager()Landroid/content/pm/IPackageManager;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPermissionManager()Landroid/permission/IPermissionManager;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIPlatformCompat()Lcom/android/internal/compat/IPlatformCompat;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getIWindowManager()Landroid/view/IWindowManager;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getLockSettingsInternal()Lcom/android/internal/widget/LockSettingsInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getMyLooper()Landroid/os/Looper;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNetworkPolicyManagerInternal()Lcom/android/server/net/NetworkPolicyManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
@@ -6170,7 +13959,9 @@
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUsageStatsManagerInternal()Landroid/app/usage/UsageStatsManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManager()Landroid/os/UserManager;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->getWifiManager()Landroid/net/wifi/WifiManager;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->hasFeature()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->hasUserSetupCompleted(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->isBuildDebuggable()Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->keyChainBindAsUser(Landroid/os/UserHandle;)Landroid/security/KeyChain$KeyChainConnection;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->newLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
@@ -6184,261 +13975,655 @@
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetInt(Ljava/lang/String;I)I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalGetString(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalPutInt(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsGlobalPutString(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecureGetIntForUser(Ljava/lang/String;II)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecurePutIntForUser(Ljava/lang/String;II)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->settingsSecurePutStringForUser(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->storageManagerIsFileBasedEncryptionEnabled()Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGet(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesGetLong(Ljava/lang/String;J)J
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->systemPropertiesSet(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userHandleGetCallingUserId()I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;->userManagerIsSplitSystemUser()Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStart()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStartUser(I)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->access$2100(Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;ILjava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->access$2300(Lcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;ILjava/util/List;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->addOnCrossProfileWidgetProvidersChangeListener(Landroid/app/admin/DevicePolicyManagerInternal$OnCrossProfileWidgetProvidersChangeListener;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->canSilentlyInstallPackage(Ljava/lang/String;I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->canUserHaveUntrustedCredentialReset(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getCrossProfileWidgetProviders(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getCrossProfileWidgetProviders(I)Ljava/util/List;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDevicePolicyCache()Landroid/app/admin/DevicePolicyCache;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->getDeviceStateCache()Landroid/app/admin/DeviceStateCache;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isActiveAdminWithPolicy(II)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->notifyCrossProfileProvidersChanged(ILjava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->isUserAffiliatedWithDevice(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->lambda$reportSeparateProfileChallengeChanged$0$DevicePolicyManagerService$LocalService(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->notifyCrossProfileProvidersChanged(ILjava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$LocalService;->reportSeparateProfileChallengeChanged(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/os/Handler;)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->onChange(ZLandroid/net/Uri;I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;->register()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><clinit>()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService$Injector;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1000(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1100(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1200(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1300(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1400(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1500(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1600(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1700(Lcom/android/server/devicepolicy/DevicePolicyManagerService;IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1700(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1900(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$1900(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2000(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2300(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2400(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2500(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2600(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2800(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2800(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$2900(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DevicePolicyCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3000(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DeviceStateCacheImpl;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3100(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DevicePolicyCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3100(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3200(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DeviceStateCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3200(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3300(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DevicePolicyCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3400(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Lcom/android/server/devicepolicy/DeviceStateCacheImpl;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3500(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$3700(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Ljava/lang/String;Landroid/os/IBinder;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$600(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$700(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$800(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->access$900(Lcom/android/server/devicepolicy/DevicePolicyManagerService;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->addCrossProfileIntentFilter(Landroid/content/ComponentName;Landroid/content/IntentFilter;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->addCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->addOrRemoveDisableCameraRestriction(Landroid/os/Bundle;I)Landroid/os/Bundle;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->addOrRemoveDisableCameraRestriction(Landroid/os/Bundle;Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)Landroid/os/Bundle;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->applyPersonalAppsSuspension(IZ)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->areAllUsersAffiliatedWithDeviceLocked()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUserBindToDeviceOwnerLocked(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUserHaveUntrustedCredentialReset(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;III)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->canProfileOwnerAccessDeviceIds(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUserBindToDeviceOwnerLocked(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->canUserUseLockTaskLocked(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkActiveAdminPrecondition(Landroid/content/ComponentName;Landroid/app/admin/DeviceAdminInfo;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkDeviceIdentifierAccess(Ljava/lang/String;II)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkDeviceOwnerProvisioningPreCondition(I)I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkDeviceOwnerProvisioningPreConditionLocked(Landroid/content/ComponentName;IZZ)I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkManagedProfileProvisioningPreCondition(Ljava/lang/String;I)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkPackagesInPermittedListOrSystem(Ljava/util/List;Ljava/util/List;I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkProvisioningPreConditionSkipPermission(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkPackageSuspensionOnBoot()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkPackagesInPermittedListOrSystem(Ljava/util/List;Ljava/util/List;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkProvisioningPreCondition(Ljava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkProvisioningPreConditionSkipPermission(Ljava/lang/String;Ljava/lang/String;)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->checkUserProvisioningStateTransition(II)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->choosePrivateKeyAlias(ILandroid/net/Uri;Ljava/lang/String;Landroid/os/IBinder;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->cleanUpOldUsers()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->clearCrossProfileIntentFilters(Landroid/content/ComponentName;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->clearPersonalAppsSuspendedNotification()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->createAdminSupportIntent(Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->discardDeviceWideLogsLocked()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->doesPackageMatchUid(Ljava/lang/String;I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enableSystemApp(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageScopeOrCheckPermission(Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrManageUsers()V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManagedProfile(ILjava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->dumpDevicePolicyData(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enableIfNecessary(Ljava/lang/String;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enableSystemApp(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCallerCanRequestDeviceIdAttestation(Landroid/content/ComponentName;Ljava/lang/String;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanCallLockTaskLocked(Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageCaCerts(Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageDeviceAdmin()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageProfileAndDeviceOwners()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageScope(Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanManageScopeOrCheckPermission(Landroid/content/ComponentName;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCanSetProfileOwnerLocked(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceCrossUsersPermission(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwner(Landroid/content/ComponentName;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrManageUsers()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceDeviceOwnerOrProfileOwnerOnOrganizationOwnedDevice(Landroid/content/ComponentName;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceFullCrossUsersPermission(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceIndividualAttestationSupportedIfRequested([I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManageUsers()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceManagedProfile(ILjava/lang/String;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceNotManagedProfile(ILjava/lang/String;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceProfileOrDeviceOwner(Landroid/content/ComponentName;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceProfileOrDeviceOwner(Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceProfileOwnerOrFullCrossUsersPermission(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceProfileOwnerOrSystemUser()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemCaller(Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermission(Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceSystemUserOrPermissionIfCrossUser(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->enforceUserUnlocked(IZ)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureAllUsersAffiliated()V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerPackage(Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerIdentityMatchesIfNotSystem(Ljava/lang/String;II)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureCallerPackage(Ljava/lang/String;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerAndAllUsersAffiliated(Landroid/content/ComponentName;)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureDeviceOwnerUserStarted()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureLocked()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureMinimumQuality(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;ILjava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->ensureUnknownSourcesRestrictionForProfileOwnerLocked(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Z)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->findAdmin(Landroid/content/ComponentName;IZ)Landroid/app/admin/DeviceAdminInfo;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->findOwnerComponentIfNecessaryLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->generateKeyPair(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/security/keystore/ParcelableKeyGenParameterSpec;ILandroid/security/keymaster/KeymasterCertificateChain;)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAcceptedCaCertificates(Landroid/os/UserHandle;)Ljava/util/Set;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAccountTypesWithManagementDisabledAsUser(I)[Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForCallerLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForCallerLocked(Landroid/content/ComponentName;IZ)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForUidLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminOrCheckPermissionForCallerLocked(Landroid/content/ComponentName;ILjava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminOrCheckPermissionForCallerLocked(Landroid/content/ComponentName;IZLjava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAccessibilityManagerForUser(I)Landroid/view/accessibility/AccessibilityManager;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAccountTypesWithManagementDisabledAsUser(I)[Ljava/lang/String;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForCallerLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForCallerLocked(Landroid/content/ComponentName;IZ)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminForUidLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminOrCheckPermissionForCallerLocked(Landroid/content/ComponentName;ILjava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminOrCheckPermissionForCallerLocked(Landroid/content/ComponentName;IZLjava/lang/String;)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminPackagesLocked(I)Ljava/util/Set;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;IZ)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminUncheckedLocked(Landroid/content/ComponentName;IZ)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminWithPolicyForUidLocked(Landroid/content/ComponentName;II)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdmins(I)Ljava/util/List;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForAffectedUser(IZ)Ljava/util/List;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getActiveAdminsForLockscreenPoliciesLocked(IZ)Ljava/util/List;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAdminWithMinimumFailedPasswordsForWipeLocked(IZ)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBluetoothContactSharingDisabledForUser(I)Z
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getAlwaysOnVpnPackage(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getApplicationLabel(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Landroid/os/Bundle;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBindDeviceAdminTargetUsers(Landroid/content/ComponentName;)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getBluetoothContactSharingDisabledForUser(I)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;IZ)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCredentialOwner(IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileCallerIdDisabledForUser(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileContactsSearchDisabledForUser(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCurrentFailedPasswordAttempts(IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDelegatePackagesInternalLocked(Ljava/lang/String;I)Ljava/util/List;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCameraDisabled(Landroid/content/ComponentName;IZZ)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCredentialOwner(IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileCalendarPackagesForUser(I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileCallerIdDisabledForUser(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileContactsSearchDisabledForUser(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCrossProfileWidgetProviders(Landroid/content/ComponentName;)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getCurrentFailedPasswordAttempts(IZ)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDelegatePackagesInternalLocked(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerAdminLocked()Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerComponent(Z)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerOrganizationName()Ljava/lang/CharSequence;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerRemoteBugreportUri()Ljava/lang/String;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserId()I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDeviceOwnerUserId()I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getDisallowedSystemApps(Landroid/content/ComponentName;ILjava/lang/String;)Ljava/util/List;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatus()I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getEncryptionStatusName(I)Ljava/lang/String;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getIntentFilterActions(Landroid/content/IntentFilter;)[Ljava/lang/String;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeepUninstalledPackagesLocked()Ljava/util/List;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)I
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getLockObject()Ljava/lang/Object;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getManagedUserId(I)I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumTimeToLock(Landroid/content/ComponentName;IZ)J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumTimeToLock(Landroid/content/ComponentName;IZ)J
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMaximumTimeToLockPolicyFromAdmins(Ljava/util/List;)J
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOrganizationNameForUser(I)Ljava/lang/CharSequence;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMeteredDisabledPackagesLocked(I)Ljava/util/Set;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getMinimumStrongAuthTimeoutMs()J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOrganizationNameForUser(I)Ljava/lang/CharSequence;
 HSPLcom/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;->getPasswordExpirationTimeout(Landroid/content/ComponentName;IZ)J
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getOwnerInstalledCaCerts(Landroid/os/UserHandle;)Landroid/content/pm/StringParceledListSlice;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordComplexity(Z)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationLocked(Landroid/content/ComponentName;IZ)J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordExpirationTimeout(Landroid/content/ComponentName;IZ)J
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordHistoryLength(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumLength(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumLetters(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumLowerCase(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumMetrics(I)Landroid/app/admin/PasswordMetrics;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumMetrics(IZ)Landroid/app/admin/PasswordMetrics;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumNonLetter(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumNumeric(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumSymbols(Landroid/content/ComponentName;IZ)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordMinimumUpperCase(Landroid/content/ComponentName;IZ)I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPasswordQuality(Landroid/content/ComponentName;IZ)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPendingSystemUpdate(Landroid/content/ComponentName;)Landroid/app/admin/SystemUpdateInfo;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPendingSystemUpdate(Landroid/content/ComponentName;)Landroid/app/admin/SystemUpdateInfo;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)I
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermissionPolicy(Landroid/content/ComponentName;)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermittedAccessibilityServicesForUser(I)Ljava/util/List;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPermittedInputMethodsForCurrentUser()Ljava/util/List;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPolicyFileDirectory(I)Ljava/io/File;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getPowerManagerInternal()Landroid/os/PowerManagerInternal;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwner(I)Landroid/content/ComponentName;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAdminLocked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerAsUser(I)Landroid/content/ComponentName;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerName(I)Ljava/lang/String;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileOwnerOfOrganizationOwnedDeviceLocked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getProfileParentId(I)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;IZ)J
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRequiredStrongAuthTimeout(Landroid/content/ComponentName;IZ)J
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getRestrictionsProvider(I)Landroid/content/ComponentName;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getScreenCaptureDisabled(Landroid/content/ComponentName;I)Z
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStorageEncryptionStatus(Ljava/lang/String;I)I
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getTargetSdk(Ljava/lang/String;I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getShortSupportMessageForUser(Landroid/content/ComponentName;I)Ljava/lang/CharSequence;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStorageEncryptionStatus(Ljava/lang/String;I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getStrictestPasswordRequirement(Landroid/content/ComponentName;IZLjava/util/function/Function;I)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getTargetSdk(Ljava/lang/String;I)I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserData(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserDataUnchecked(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserPasswordMetricsLocked(I)Landroid/app/admin/PasswordMetrics;
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserProvisioningState()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserProvisioningState()I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getUserProvisioningState(I)I
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->getWifiMacAddress(Landroid/content/ComponentName;)Ljava/lang/String;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePackagesChanged(Ljava/lang/String;I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handlePasswordExpirationNotification(I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStartUser(I)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleStopUser(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->handleUnlockUser(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasDeviceOwner()Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasFeatureManagedUsers()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasGrantedPolicy(Landroid/content/ComponentName;II)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActiveAdminWithPolicyForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;II)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficient(IZ)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminAffectedByRestriction(Landroid/content/ComponentName;Ljava/lang/String;I)Z
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerDelegate(Ljava/lang/String;ILjava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCurrentUserDemo()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwner(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasGrantedPolicy(Landroid/content/ComponentName;II)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasIncompatibleAccountsOrNonAdbNoLock(ILandroid/content/ComponentName;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasProfileOwner(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->hasUserSetupCompleted(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActiveAdminWithPolicyForUserLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;II)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficient(IZ)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isActivePasswordSufficientForUserLocked(ZLandroid/app/admin/PasswordMetrics;IZ)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdb()Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isAdminActive(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Z)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerDelegate(Ljava/lang/String;ILjava/lang/String;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCallerWithSystemUid()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCurrentInputMethodSetByOwner()Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isCurrentUserDemo()Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwner(Landroid/content/ComponentName;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwner(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceOwnerPackage(Ljava/lang/String;I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isDeviceProvisioned()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLockTaskPermitted(Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isEncryptionSupported()Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLimitPasswordAllowed(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLockTaskPermitted(Ljava/lang/String;)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isLogoutEnabled()Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(Landroid/content/ComponentName;)Z
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabled(Landroid/content/ComponentName;Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isManagedProfile(Landroid/content/ComponentName;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isMeteredDataDisabledPackageForUser(Landroid/content/ComponentName;Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabled(Landroid/content/ComponentName;Ljava/lang/String;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNetworkLoggingEnabledInternalLocked()Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isNotificationListenerServicePermitted(Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageInstalledForUser(Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageSuspended(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPackageTestOnly(Ljava/lang/String;I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isPasswordSufficientForUserWithoutCheckpointLocked(Landroid/app/admin/PasswordMetrics;IZ)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Landroid/content/ComponentName;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileActivePasswordSufficientForParent(I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwner(Landroid/content/ComponentName;I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(Landroid/content/ComponentName;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerOfOrganizationOwnedDevice(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProfileOwnerPackage(Ljava/lang/String;I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isProvisioningAllowed(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isRemovedPackage(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isRemovingAdmin(Landroid/content/ComponentName;I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isResetPasswordTokenActive(Landroid/content/ComponentName;)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isRuntimePermission(Ljava/lang/String;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSecondaryLockscreenEnabled(I)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSecurityLoggingEnabled(Landroid/content/ComponentName;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeAllowed(I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeAllowed(I)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSeparateProfileChallengeEnabled(I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSystemApp(Landroid/content/pm/IPackageManager;Ljava/lang/String;I)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallInQueue(Ljava/lang/String;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isSystemApp(Landroid/content/pm/IPackageManager;Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUninstallInQueue(Ljava/lang/String;)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUserAffiliatedWithDeviceLocked(I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->isUsingUnifiedPassword(Landroid/content/ComponentName;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$71$DevicePolicyManagerService()Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$72$DevicePolicyManagerService()Ljava/lang/Boolean;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$74$DevicePolicyManagerService()Ljava/lang/Boolean;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$80$DevicePolicyManagerService()Ljava/lang/Boolean;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$81$DevicePolicyManagerService()Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$areAllUsersAffiliatedWithDeviceLocked$82$DevicePolicyManagerService()Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$choosePrivateKeyAlias$23$DevicePolicyManagerService(Landroid/content/Intent;Landroid/os/UserHandle;Landroid/os/IBinder;Z)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$clearPersonalAppsSuspendedNotification$104$DevicePolicyManagerService()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$clearPersonalAppsSuspendedNotification$105$DevicePolicyManagerService()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$clearPersonalAppsSuspendedNotification$106$DevicePolicyManagerService()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$ensureMinimumQuality$9$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;IILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getAlwaysOnVpnPackage$25$DevicePolicyManagerService(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getAlwaysOnVpnPackage$26$DevicePolicyManagerService(I)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationLabel$47$DevicePolicyManagerService(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationRestrictions$53$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/os/Bundle;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationRestrictions$54$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/os/Bundle;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationRestrictions$55$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/os/Bundle;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationRestrictions$56$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/os/Bundle;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getApplicationRestrictions$57$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/os/Bundle;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$72$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$73$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$74$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$76$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$82$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$83$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getBindDeviceAdminTargetUsers$84$DevicePolicyManagerService(Landroid/content/ComponentName;I)Ljava/util/ArrayList;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getCredentialOwner$47$DevicePolicyManagerService(IZ)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getCredentialOwner$48$DevicePolicyManagerService(IZ)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getCredentialOwner$49$DevicePolicyManagerService(IZ)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getCredentialOwner$50$DevicePolicyManagerService(IZ)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPasswordHistoryLength$10(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$65$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$66$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$67$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$69$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$75$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$76$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getPermissionGrantState$77$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/UserHandle;Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/PackageManager;)Ljava/lang/Integer;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileOwnerOfOrganizationOwnedDeviceLocked$44$DevicePolicyManagerService(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileOwnerOfOrganizationOwnedDeviceLocked$45$DevicePolicyManagerService(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileOwnerOfOrganizationOwnedDeviceLocked$46$DevicePolicyManagerService(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$46$DevicePolicyManagerService(I)Ljava/lang/Integer;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$47$DevicePolicyManagerService(I)Ljava/lang/Integer;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$48$DevicePolicyManagerService(I)Ljava/lang/Integer;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getProfileParentId$49$DevicePolicyManagerService(I)Ljava/lang/Integer;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserDataUnchecked$0$DevicePolicyManagerService(I)Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserInfo$17$DevicePolicyManagerService(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getUserInfo$18$DevicePolicyManagerService(I)Landroid/content/pm/UserInfo;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$67$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$68$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$70$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$76$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$77$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$getWifiMacAddress$78$DevicePolicyManagerService(Landroid/content/ComponentName;)Ljava/lang/String;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isApplicationHidden$59$DevicePolicyManagerService(Ljava/lang/String;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isApplicationHidden$60$DevicePolicyManagerService(Ljava/lang/String;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$80$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$81$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$83$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$89$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$90$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isResetPasswordTokenActive$91$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)Ljava/lang/Boolean;
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$isSeparateProfileChallengeEnabled$8$DevicePolicyManagerService(I)Ljava/lang/Boolean;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$loadAdminDataAsync$0$DevicePolicyManagerService()V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$13(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$loadAdminDataAsync$4$DevicePolicyManagerService()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$maybeClearLockTaskPolicyLocked$62$DevicePolicyManagerService()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$notifyPendingSystemUpdate$64$DevicePolicyManagerService(Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$notifyPendingSystemUpdate$65$DevicePolicyManagerService(Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$notifyPendingSystemUpdate$67$DevicePolicyManagerService(Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$notifyPendingSystemUpdate$73$DevicePolicyManagerService(Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$notifyPendingSystemUpdate$74$DevicePolicyManagerService(Landroid/content/Intent;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$removeActiveAdmin$6$DevicePolicyManagerService(Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$reportSuccessfulPasswordAttempt$30$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$reportSuccessfulPasswordAttempt$31$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$sendChangedNotification$2$DevicePolicyManagerService(Landroid/content/Intent;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setActiveAdmin$3$DevicePolicyManagerService(Landroid/content/ComponentName;IZLandroid/app/admin/DeviceAdminInfo;Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationHidden$58$DevicePolicyManagerService(Ljava/lang/String;ZI)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationRestrictions$49$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationRestrictions$50$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationRestrictions$51$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationRestrictions$52$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setApplicationRestrictions$53$DevicePolicyManagerService(Ljava/lang/String;Landroid/os/Bundle;Landroid/os/UserHandle;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setDeviceOwnerLockScreenInfo$41$DevicePolicyManagerService(Ljava/lang/CharSequence;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setDeviceOwnerLockScreenInfo$42$DevicePolicyManagerService(Ljava/lang/CharSequence;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setDeviceOwnerLockScreenInfo$43$DevicePolicyManagerService(Ljava/lang/CharSequence;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setExpirationAlarmCheckLocked$1$DevicePolicyManagerService(ZILandroid/content/Context;J)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setGlobalSetting$57$DevicePolicyManagerService(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setGlobalSetting$58$DevicePolicyManagerService(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setGlobalSetting$62$DevicePolicyManagerService(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setGlobalSetting$63$DevicePolicyManagerService(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setGlobalSetting$64$DevicePolicyManagerService(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$75$DevicePolicyManagerService(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$76$DevicePolicyManagerService(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$78$DevicePolicyManagerService(Z)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$84$DevicePolicyManagerService(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$85$DevicePolicyManagerService(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setNetworkLoggingActiveInternal$86$DevicePolicyManagerService(Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPasswordQuality$7$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;IIZLandroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$65(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$66(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$68(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$74(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$75(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setPermissionGrantState$76(ZLandroid/os/RemoteCallback;Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ILjava/lang/Boolean;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setProfileEnabled$42$DevicePolicyManagerService(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setProfileEnabled$43$DevicePolicyManagerService(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setProfileOwner$39$DevicePolicyManagerService(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setProfileOwner$40$DevicePolicyManagerService(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setRecommendedGlobalProxy$32$DevicePolicyManagerService(Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setRecommendedGlobalProxy$33$DevicePolicyManagerService(Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setRecommendedGlobalProxy$34$DevicePolicyManagerService(Landroid/net/ProxyInfo;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setResetPasswordToken$88$DevicePolicyManagerService(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I[B)Ljava/lang/Boolean;
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$62$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$63$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$65$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$70$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$71$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$setSecureSetting$72$DevicePolicyManagerService(Ljava/lang/String;ILjava/lang/String;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateMaximumTimeToLockLocked$19$DevicePolicyManagerService(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateMaximumTimeToLockLocked$20$DevicePolicyManagerService(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateProfileLockTimeoutLocked$20$DevicePolicyManagerService(ILcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->lambda$updateProfileLockTimeoutLocked$21$DevicePolicyManagerService(ILcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadAdminDataAsync()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadConstants()Lcom/android/server/devicepolicy/DevicePolicyConstants;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadOwners()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->loadSettingsLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->logIfVerbose(Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeLogPasswordComplexitySet(Landroid/content/ComponentName;IZLandroid/app/admin/PasswordMetrics;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeClearLockTaskPolicyLocked()V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeLogPasswordComplexitySet(Landroid/content/ComponentName;IZLandroid/app/admin/PasswordPolicy;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeLogStart()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeMigrateToProfileOnOrganizationOwnedDeviceLocked()V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybePauseDeviceWideLoggingLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeResumeDeviceWideLoggingLocked()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSendAdminEnabledBroadcastLocked(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultDeviceOwnerUserRestrictionsLocked()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultProfileOwnerUserRestrictions()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeSetDefaultRestrictionsForAdminLocked(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Ljava/util/Set;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeStartSecurityLogMonitorOnActivityManagerReady()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->maybeUpdatePersonalAppsSuspendedNotification(I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->migrateUserRestrictionsIfNecessaryLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->notifyLockTaskModeChanged(ZLjava/lang/String;I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->notifyPendingSystemUpdate(Landroid/app/admin/SystemUpdateInfo;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->onInstalledCertificatesChanged(Landroid/os/UserHandle;Ljava/util/Collection;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->onLockSettingsReady()V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->packageHasActiveAdmins(Ljava/lang/String;I)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->passwordQualityInvocationOrderCheckEnabled(Ljava/lang/String;I)Z
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushActiveAdminPackages()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushActiveAdminPackagesLocked(I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushAllMeteredRestrictedPackages()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushMeteredDisabledPackagesLocked(I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->pushUserRestrictions(I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->recordSecurityLogRetrievalTime()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeActiveAdmin(Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeActiveAdminLocked(Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeAdminArtifacts(Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCaApprovalsIfNeeded(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeCrossProfileWidgetProvider(Landroid/content/ComponentName;Ljava/lang/String;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removePackageIfRequired(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->removeUserData(I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportFailedBiometricAttempt(I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportFailedPasswordAttempt(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportKeyguardDismissed(I)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportKeyguardSecured(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportSuccessfulBiometricAttempt(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportSuccessfulPasswordAttempt(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportKeyguardDismissed(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportKeyguardSecured(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportPasswordChanged(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportSuccessfulBiometricAttempt(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->reportSuccessfulPasswordAttempt(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->resetGlobalProxyLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->resetInactivePasswordRequirementsIfRPlus(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->resolveDelegateReceiver(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/ComponentName;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->retrieveNetworkLogs(Landroid/content/ComponentName;Ljava/lang/String;J)Ljava/util/List;
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->retrieveSecurityLogs(Landroid/content/ComponentName;)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->revertTransferOwnershipIfNecessaryLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveGlobalProxyLocked(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveSettingsLocked(I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->saveUserRestrictionsLocked(IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendActiveAdminCommand(Ljava/lang/String;Landroid/os/Bundle;ILandroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandForLockscreenPoliciesLocked(Ljava/lang/String;II)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Ljava/lang/String;Landroid/content/BroadcastReceiver;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Ljava/lang/String;Landroid/os/Bundle;Landroid/content/BroadcastReceiver;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Ljava/lang/String;Landroid/os/Bundle;Landroid/content/BroadcastReceiver;Z)Z
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandLocked(Ljava/lang/String;IILandroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendAdminCommandToSelfAndProfilesLocked(Ljava/lang/String;IILandroid/os/Bundle;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendChangedNotification(I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendDeviceOwnerCommand(Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendDelegationChangedBroadcast(Ljava/lang/String;Ljava/util/ArrayList;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendDeviceOwnerCommand(Ljava/lang/String;Landroid/os/Bundle;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendNetworkLoggingNotificationLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendOwnerChangedBroadcast(Ljava/lang/String;I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->sendPrivateKeyAliasResponse(Ljava/lang/String;Landroid/os/IBinder;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setAccountManagementDisabled(Landroid/content/ComponentName;Ljava/lang/String;Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActivePasswordState(Landroid/app/admin/PasswordMetrics;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setAutoTimeRequired(Landroid/content/ComponentName;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActiveAdmin(Landroid/content/ComponentName;ZI)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setActiveAdmin(Landroid/content/ComponentName;ZILandroid/os/Bundle;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setAffiliationIds(Landroid/content/ComponentName;Ljava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationHidden(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;ZZ)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setApplicationRestrictions(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setAutoTimeRequired(Landroid/content/ComponentName;Z)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setBackupServiceEnabled(Landroid/content/ComponentName;Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setCameraDisabled(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setBluetoothContactSharingDisabled(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setCameraDisabled(Landroid/content/ComponentName;ZZ)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setCertInstallerPackage(Landroid/content/ComponentName;Ljava/lang/String;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setCrossProfileCallerIdDisabled(Landroid/content/ComponentName;Z)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setCrossProfileContactsSearchDisabled(Landroid/content/ComponentName;Z)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDelegatedScopePreO(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDelegatedScopes(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnerLockScreenInfo(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setDeviceOwnerSystemPropertyLocked()V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setEncryptionRequested(Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setEndUserSessionMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setExpirationAlarmCheckLocked(Landroid/content/Context;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLongSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setMaximumTimeToLock(Landroid/content/ComponentName;JZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setGlobalSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setKeepUninstalledPackages(Landroid/content/ComponentName;Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setKeyPairCertificate(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;[B[BZ)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setKeyguardDisabledFeatures(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLockTaskFeatures(Landroid/content/ComponentName;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLockTaskFeaturesLocked(II)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLockTaskPackages(Landroid/content/ComponentName;[Ljava/lang/String;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLockTaskPackagesLocked(ILjava/util/List;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLogoutEnabled(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setLongSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setMasterVolumeMuted(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setMaximumFailedPasswordsForWipe(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setMaximumTimeToLock(Landroid/content/ComponentName;JZ)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setNetworkLoggingActiveInternal(Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordHistoryLength(Landroid/content/ComponentName;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumLength(Landroid/content/ComponentName;IZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordQuality(Landroid/content/ComponentName;IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setNetworkLoggingEnabled(Landroid/content/ComponentName;Ljava/lang/String;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setOrganizationColor(Landroid/content/ComponentName;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setOrganizationColorForUser(II)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setOrganizationName(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordExpirationTimeout(Landroid/content/ComponentName;JZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordHistoryLength(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumLength(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumLetters(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumLowerCase(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumNonLetter(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumNumeric(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumSymbols(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordMinimumUpperCase(Landroid/content/ComponentName;IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPasswordQuality(Landroid/content/ComponentName;IZ)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermissionGrantState(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/RemoteCallback;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermissionPolicy(Landroid/content/ComponentName;Ljava/lang/String;I)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermittedAccessibilityServices(Landroid/content/ComponentName;Ljava/util/List;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermittedInputMethods(Landroid/content/ComponentName;Ljava/util/List;)Z
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setRequiredStrongAuthTimeout(Landroid/content/ComponentName;JZ)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setRestrictionsProvider(Landroid/content/ComponentName;Landroid/content/ComponentName;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setScreenCaptureDisabled(Landroid/content/ComponentName;Z)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setShortSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
-PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermissionPolicy(Landroid/content/ComponentName;Ljava/lang/String;I)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermittedAccessibilityServices(Landroid/content/ComponentName;Ljava/util/List;)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setPermittedInputMethods(Landroid/content/ComponentName;Ljava/util/List;)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setProfileEnabled(Landroid/content/ComponentName;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setProfileOwner(Landroid/content/ComponentName;Ljava/lang/String;I)Z
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setRecommendedGlobalProxy(Landroid/content/ComponentName;Landroid/net/ProxyInfo;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setRequiredStrongAuthTimeout(Landroid/content/ComponentName;JZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setResetPasswordToken(Landroid/content/ComponentName;[B)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setRestrictionsProvider(Landroid/content/ComponentName;Landroid/content/ComponentName;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setScreenCaptureDisabled(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setSecureSetting(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setSecurityLoggingEnabled(Landroid/content/ComponentName;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setShortSupportMessage(Landroid/content/ComponentName;Ljava/lang/CharSequence;)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setStatusBarDisabled(Landroid/content/ComponentName;Z)Z
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setStorageEncryption(Landroid/content/ComponentName;Z)I
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUninstallBlocked(Landroid/content/ComponentName;Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserProvisioningState(II)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;Z)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->setUserRestriction(Landroid/content/ComponentName;Ljava/lang/String;ZZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->shouldCheckIfDelegatePackageIsInstalled(Ljava/lang/String;ILjava/util/List;)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->shouldOverwritePoliciesFromXml(Landroid/content/ComponentName;I)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->startOwnerService(ILjava/lang/String;)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->startUninstallIntent(Ljava/lang/String;I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->stopOwnerService(ILjava/lang/String;)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->systemReady(I)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->toggleBackupServiceActive(IZ)V
+HPLcom/android/server/devicepolicy/DevicePolicyManagerService;->translateIdAttestationFlags(I)[I
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateDeviceOwnerLocked()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateLockTaskFeaturesLocked(II)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateLockTaskPackagesLocked(Ljava/util/List;I)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateMaximumTimeToLockLocked(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordExpirationsLocked(I)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordQualityCacheForUserGroup(I)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePasswordValidityCheckpointLocked(IZ)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updatePersonalAppSuspension(IZ)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateProfileLockTimeoutLocked(I)V
-HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateSystemUpdateFreezePeriodsRecord(Z)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateProfileOffAlarm(J)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateProfileOffDeadlineLocked(ILcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;Z)Z
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateProtectedPackagesLocked(Ljava/util/List;)V
+HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateScreenCaptureDisabled(IZ)V
+PLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateSystemUpdateFreezePeriodsRecord(Z)V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->updateUserSetupCompleteAndPaired()V
 HSPLcom/android/server/devicepolicy/DevicePolicyManagerService;->validatePasswordOwnerLocked(Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;)V
 PLcom/android/server/devicepolicy/DevicePolicyManagerService;->validateQualityConstant(I)V
-PLcom/android/server/devicepolicy/NetworkLogger$1;->onConnectEvent(Ljava/lang/String;IJI)V
-PLcom/android/server/devicepolicy/NetworkLogger$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
-PLcom/android/server/devicepolicy/NetworkLogger$1;->sendNetworkEvent(Landroid/app/admin/NetworkEvent;)V
+HSPLcom/android/server/devicepolicy/DeviceStateCacheImpl;-><init>()V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/devicepolicy/DeviceStateCacheImpl;->isDeviceProvisioned()Z
+HSPLcom/android/server/devicepolicy/DeviceStateCacheImpl;->setDeviceProvisioned(Z)V
+HSPLcom/android/server/devicepolicy/NetworkLogger$1;-><init>(Lcom/android/server/devicepolicy/NetworkLogger;)V
+HPLcom/android/server/devicepolicy/NetworkLogger$1;->onConnectEvent(Ljava/lang/String;IJI)V
+HPLcom/android/server/devicepolicy/NetworkLogger$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
+HPLcom/android/server/devicepolicy/NetworkLogger$1;->sendNetworkEvent(Landroid/app/admin/NetworkEvent;)V
+HSPLcom/android/server/devicepolicy/NetworkLogger;-><clinit>()V
+HSPLcom/android/server/devicepolicy/NetworkLogger;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;Landroid/content/pm/PackageManagerInternal;)V
+HPLcom/android/server/devicepolicy/NetworkLogger;->access$000(Lcom/android/server/devicepolicy/NetworkLogger;)Ljava/util/concurrent/atomic/AtomicBoolean;
+HPLcom/android/server/devicepolicy/NetworkLogger;->access$100(Lcom/android/server/devicepolicy/NetworkLogger;)Landroid/content/pm/PackageManagerInternal;
+HPLcom/android/server/devicepolicy/NetworkLogger;->access$200(Lcom/android/server/devicepolicy/NetworkLogger;)Lcom/android/server/devicepolicy/NetworkLoggingHandler;
+HSPLcom/android/server/devicepolicy/NetworkLogger;->checkIpConnectivityMetricsService()Z
+PLcom/android/server/devicepolicy/NetworkLogger;->retrieveLogs(J)Ljava/util/List;
 HSPLcom/android/server/devicepolicy/NetworkLogger;->startNetworkLogging()Z
-PLcom/android/server/devicepolicy/NetworkLoggingHandler$1;->onAlarm()V
+HSPLcom/android/server/devicepolicy/NetworkLoggingHandler$1;-><init>(Lcom/android/server/devicepolicy/NetworkLoggingHandler;)V
+HPLcom/android/server/devicepolicy/NetworkLoggingHandler$1;->onAlarm()V
+HSPLcom/android/server/devicepolicy/NetworkLoggingHandler;-><clinit>()V
+HSPLcom/android/server/devicepolicy/NetworkLoggingHandler;-><init>(Landroid/os/Looper;Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
 HSPLcom/android/server/devicepolicy/NetworkLoggingHandler;-><init>(Landroid/os/Looper;Lcom/android/server/devicepolicy/DevicePolicyManagerService;J)V
-PLcom/android/server/devicepolicy/NetworkLoggingHandler;->buildDeviceOwnerMessageLocked()Landroid/os/Bundle;
-PLcom/android/server/devicepolicy/NetworkLoggingHandler;->finalizeBatchAndBuildDeviceOwnerMessageLocked()Landroid/os/Bundle;
-PLcom/android/server/devicepolicy/NetworkLoggingHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/devicepolicy/NetworkLoggingHandler;->access$000()Ljava/lang/String;
+PLcom/android/server/devicepolicy/NetworkLoggingHandler;->access$100(Lcom/android/server/devicepolicy/NetworkLoggingHandler;)Ljava/util/ArrayList;
+PLcom/android/server/devicepolicy/NetworkLoggingHandler;->access$200(Lcom/android/server/devicepolicy/NetworkLoggingHandler;)Landroid/os/Bundle;
+PLcom/android/server/devicepolicy/NetworkLoggingHandler;->access$300(Lcom/android/server/devicepolicy/NetworkLoggingHandler;Landroid/os/Bundle;)V
+HPLcom/android/server/devicepolicy/NetworkLoggingHandler;->buildDeviceOwnerMessageLocked()Landroid/os/Bundle;
+HPLcom/android/server/devicepolicy/NetworkLoggingHandler;->finalizeBatchAndBuildDeviceOwnerMessageLocked()Landroid/os/Bundle;
+HPLcom/android/server/devicepolicy/NetworkLoggingHandler;->handleMessage(Landroid/os/Message;)V
 PLcom/android/server/devicepolicy/NetworkLoggingHandler;->lambda$retrieveFullLogBatch$0$NetworkLoggingHandler(J)V
-PLcom/android/server/devicepolicy/NetworkLoggingHandler;->notifyDeviceOwner(Landroid/os/Bundle;)V
+HPLcom/android/server/devicepolicy/NetworkLoggingHandler;->notifyDeviceOwner(Landroid/os/Bundle;)V
 PLcom/android/server/devicepolicy/NetworkLoggingHandler;->retrieveFullLogBatch(J)Ljava/util/List;
+HSPLcom/android/server/devicepolicy/NetworkLoggingHandler;->scheduleBatchFinalization()V
+HSPLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>()V
+HSPLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;-><init>(Lcom/android/server/devicepolicy/OverlayPackagesProvider$1;)V
 PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;->getInputMethodListAsUser(I)Ljava/util/List;
-PLcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;->isPerProfileImeEnabled()Z
+HSPLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/devicepolicy/OverlayPackagesProvider;-><init>(Landroid/content/Context;Lcom/android/server/devicepolicy/OverlayPackagesProvider$Injector;)V
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getDisallowedApps(Ljava/lang/String;)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getDisallowedAppsSet(Ljava/lang/String;)Ljava/util/Set;
-PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getLaunchableApps(I)Ljava/util/Set;
+HPLcom/android/server/devicepolicy/OverlayPackagesProvider;->getLaunchableApps(I)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getNonRequiredApps(Landroid/content/ComponentName;ILjava/lang/String;)Ljava/util/Set;
+PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getRequiredApps(Ljava/lang/String;Ljava/lang/String;)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getRequiredAppsSet(Ljava/lang/String;)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getSystemInputMethods(I)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getVendorDisallowedAppsSet(Ljava/lang/String;)Ljava/util/Set;
 PLcom/android/server/devicepolicy/OverlayPackagesProvider;->getVendorRequiredAppsSet(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/Owners;)V
 HSPLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;->readInner(Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;)Z
+PLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;->shouldWrite()Z
+PLcom/android/server/devicepolicy/Owners$DeviceOwnerReadWriter;->writeInner(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/devicepolicy/Owners$FileReadWriter;-><init>(Ljava/io/File;)V
 HSPLcom/android/server/devicepolicy/Owners$FileReadWriter;->readFromFileLocked()V
+PLcom/android/server/devicepolicy/Owners$FileReadWriter;->writeToFileLocked()V
+HSPLcom/android/server/devicepolicy/Owners$Injector;-><init>()V
 HSPLcom/android/server/devicepolicy/Owners$Injector;->environmentGetDataSystemDirectory()Ljava/io/File;
 HSPLcom/android/server/devicepolicy/Owners$Injector;->environmentGetUserSystemDirectory(I)Ljava/io/File;
-PLcom/android/server/devicepolicy/Owners$OwnerInfo;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/devicepolicy/Owners$OwnerInfo;-><init>(Ljava/lang/String;Landroid/content/ComponentName;ZLjava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/devicepolicy/Owners$OwnerInfo;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/devicepolicy/Owners$OwnerInfo;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/devicepolicy/Owners$OwnerInfo;
+PLcom/android/server/devicepolicy/Owners$OwnerInfo;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;)V
+HSPLcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;-><init>(Lcom/android/server/devicepolicy/Owners;I)V
 HSPLcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;->readInner(Lorg/xmlpull/v1/XmlPullParser;ILjava/lang/String;)Z
-PLcom/android/server/devicepolicy/Owners;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;->shouldWrite()Z
+PLcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;->writeInner(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/devicepolicy/Owners;-><init>(Landroid/os/UserManager;Landroid/os/UserManagerInternal;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/wm/ActivityTaskManagerInternal;)V
+HSPLcom/android/server/devicepolicy/Owners;-><init>(Landroid/os/UserManager;Landroid/os/UserManagerInternal;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/wm/ActivityTaskManagerInternal;Lcom/android/server/devicepolicy/Owners$Injector;)V
+PLcom/android/server/devicepolicy/Owners;->access$000(Lcom/android/server/devicepolicy/Owners;)Lcom/android/server/devicepolicy/Owners$OwnerInfo;
+HSPLcom/android/server/devicepolicy/Owners;->access$002(Lcom/android/server/devicepolicy/Owners;Lcom/android/server/devicepolicy/Owners$OwnerInfo;)Lcom/android/server/devicepolicy/Owners$OwnerInfo;
+PLcom/android/server/devicepolicy/Owners;->access$100(Lcom/android/server/devicepolicy/Owners;)Landroid/app/admin/SystemUpdatePolicy;
+PLcom/android/server/devicepolicy/Owners;->access$200(Lcom/android/server/devicepolicy/Owners;)Landroid/app/admin/SystemUpdateInfo;
+HSPLcom/android/server/devicepolicy/Owners;->access$202(Lcom/android/server/devicepolicy/Owners;Landroid/app/admin/SystemUpdateInfo;)Landroid/app/admin/SystemUpdateInfo;
+PLcom/android/server/devicepolicy/Owners;->access$300(Lcom/android/server/devicepolicy/Owners;)I
+HSPLcom/android/server/devicepolicy/Owners;->access$302(Lcom/android/server/devicepolicy/Owners;I)I
+PLcom/android/server/devicepolicy/Owners;->access$400(Lcom/android/server/devicepolicy/Owners;)Ljava/time/LocalDate;
+PLcom/android/server/devicepolicy/Owners;->access$500(Lcom/android/server/devicepolicy/Owners;)Ljava/time/LocalDate;
+HSPLcom/android/server/devicepolicy/Owners;->access$600(Lcom/android/server/devicepolicy/Owners;)Landroid/util/ArrayMap;
+PLcom/android/server/devicepolicy/Owners;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/devicepolicy/Owners;->getDeviceOwnerFile()Ljava/io/File;
 PLcom/android/server/devicepolicy/Owners;->getDeviceOwnerPackageName()Ljava/lang/String;
@@ -6451,96 +14636,167 @@
 HSPLcom/android/server/devicepolicy/Owners;->getProfileOwnerKeys()Ljava/util/Set;
 HSPLcom/android/server/devicepolicy/Owners;->getProfileOwnerUserRestrictionsNeedsMigration(I)Z
 PLcom/android/server/devicepolicy/Owners;->getSystemUpdateInfo()Landroid/app/admin/SystemUpdateInfo;
-HSPLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
+HPLcom/android/server/devicepolicy/Owners;->getSystemUpdatePolicy()Landroid/app/admin/SystemUpdatePolicy;
 HSPLcom/android/server/devicepolicy/Owners;->hasDeviceOwner()Z
 HSPLcom/android/server/devicepolicy/Owners;->hasProfileOwner(I)Z
 HSPLcom/android/server/devicepolicy/Owners;->isDeviceOwnerUserId(I)Z
+HSPLcom/android/server/devicepolicy/Owners;->isProfileOwnerOfOrganizationOwnedDevice(I)Z
 HSPLcom/android/server/devicepolicy/Owners;->load()V
+HSPLcom/android/server/devicepolicy/Owners;->pushToActivityTaskManagerLocked()V
 HSPLcom/android/server/devicepolicy/Owners;->pushToAppOpsLocked()V
 HSPLcom/android/server/devicepolicy/Owners;->pushToPackageManagerLocked()V
 HSPLcom/android/server/devicepolicy/Owners;->readLegacyOwnerFileLocked(Ljava/io/File;)Z
+PLcom/android/server/devicepolicy/Owners;->removeProfileOwner(I)V
 PLcom/android/server/devicepolicy/Owners;->saveSystemUpdateInfo(Landroid/app/admin/SystemUpdateInfo;)Z
+PLcom/android/server/devicepolicy/Owners;->setProfileOwner(Landroid/content/ComponentName;Ljava/lang/String;I)V
 HSPLcom/android/server/devicepolicy/Owners;->systemReady()V
+PLcom/android/server/devicepolicy/Owners;->writeProfileOwner(I)V
+HSPLcom/android/server/devicepolicy/SecurityLogMonitor;-><clinit>()V
+HSPLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;)V
 HSPLcom/android/server/devicepolicy/SecurityLogMonitor;-><init>(Lcom/android/server/devicepolicy/DevicePolicyManagerService;J)V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->assignLogId(Landroid/app/admin/SecurityLog$SecurityEvent;)V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->checkCriticalLevel()V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->getNextBatch(Ljava/util/ArrayList;)V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->mergeBatchLocked(Ljava/util/ArrayList;)V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->notifyDeviceOwnerIfNeeded(Z)V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->assignLogId(Landroid/app/admin/SecurityLog$SecurityEvent;)V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->checkCriticalLevel()V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;->discardLogs()V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->getNextBatch(Ljava/util/ArrayList;)V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->lambda$getNextBatch$0(Landroid/app/admin/SecurityLog$SecurityEvent;Landroid/app/admin/SecurityLog$SecurityEvent;)I
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->mergeBatchLocked(Ljava/util/ArrayList;)V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->notifyDeviceOwnerIfNeeded(Z)V
+PLcom/android/server/devicepolicy/SecurityLogMonitor;->pause()V
 PLcom/android/server/devicepolicy/SecurityLogMonitor;->retrieveLogs()Ljava/util/List;
 HSPLcom/android/server/devicepolicy/SecurityLogMonitor;->run()V
-PLcom/android/server/devicepolicy/SecurityLogMonitor;->saveLastEvents(Ljava/util/ArrayList;)V
+HPLcom/android/server/devicepolicy/SecurityLogMonitor;->saveLastEvents(Ljava/util/ArrayList;)V
 HSPLcom/android/server/devicepolicy/SecurityLogMonitor;->start()V
+HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;-><init>()V
 HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;->getOwnerTransferMetadataDir()Ljava/io/File;
+HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><clinit>()V
+HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>()V
+HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;-><init>(Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;)V
 HSPLcom/android/server/devicepolicy/TransferOwnershipMetadataManager;->metadataFileExists()Z
+HSPLcom/android/server/display/-$$Lambda$AmbientBrightnessStatsTracker$vQZYn_dAhbvzT-Un4vvpuyIATII;-><init>(Lcom/android/server/display/AmbientBrightnessStatsTracker;)V
 HSPLcom/android/server/display/-$$Lambda$AmbientBrightnessStatsTracker$vQZYn_dAhbvzT-Un4vvpuyIATII;->elapsedTimeMillis()J
+PLcom/android/server/display/-$$Lambda$BrightnessTracker$_S_g5htVKYYPRPZzYSZzGdy7hM0;-><init>(Lcom/android/server/display/BrightnessTracker;Ljava/io/PrintWriter;)V
 PLcom/android/server/display/-$$Lambda$BrightnessTracker$_S_g5htVKYYPRPZzYSZzGdy7hM0;->run()V
+PLcom/android/server/display/-$$Lambda$BrightnessTracker$fmx2Mcw7OCEtRi9DwxxGQgA74fg;-><init>(Lcom/android/server/display/BrightnessTracker;)V
 PLcom/android/server/display/-$$Lambda$BrightnessTracker$fmx2Mcw7OCEtRi9DwxxGQgA74fg;->run()V
+HSPLcom/android/server/display/-$$Lambda$DisplayAdapter$cOPGY8nGfp02WlhPeZ6ntLAXxvU;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/-$$Lambda$DisplayAdapter$cOPGY8nGfp02WlhPeZ6ntLAXxvU;->run()V
+HSPLcom/android/server/display/-$$Lambda$DisplayAdapter$wRUuY3ELxjWqttjwkmhWSLcgkIA;-><init>(Lcom/android/server/display/DisplayAdapter;)V
+HSPLcom/android/server/display/-$$Lambda$DisplayAdapter$wRUuY3ELxjWqttjwkmhWSLcgkIA;->run()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$6tpawjjBXhlj4GSsJjStLZrwDUQ;-><clinit>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$6tpawjjBXhlj4GSsJjStLZrwDUQ;-><init>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$6tpawjjBXhlj4GSsJjStLZrwDUQ;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$S4bSIp6drytTEiae37oiY_7m6ng;-><clinit>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$S4bSIp6drytTEiae37oiY_7m6ng;-><init>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$S4bSIp6drytTEiae37oiY_7m6ng;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$iXCIox7NAT3NknToX9AEwGueQjs;-><clinit>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$iXCIox7NAT3NknToX9AEwGueQjs;-><init>()V
+HSPLcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$iXCIox7NAT3NknToX9AEwGueQjs;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/display/-$$Lambda$VirtualDisplayAdapter$PFyqe-aYIEBicSVtuy5lL_bT8B0;-><clinit>()V
 HSPLcom/android/server/display/-$$Lambda$VirtualDisplayAdapter$PFyqe-aYIEBicSVtuy5lL_bT8B0;-><init>()V
 PLcom/android/server/display/-$$Lambda$VirtualDisplayAdapter$PFyqe-aYIEBicSVtuy5lL_bT8B0;->createDisplay(Ljava/lang/String;Z)Landroid/os/IBinder;
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;-><init>(Lcom/android/server/display/AmbientBrightnessStatsTracker;)V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->getOrCreateDayStats(Ljava/util/Deque;Ljava/time/LocalDate;)Landroid/hardware/display/AmbientBrightnessDayStats;
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->getOrCreateUserStats(Ljava/util/Map;I)Ljava/util/Deque;
 PLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->getUserStats(I)Ljava/util/ArrayList;
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->log(ILjava/time/LocalDate;FF)V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->readFromXML(Ljava/io/InputStream;)V
-PLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->toString()Ljava/lang/String;
-PLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->writeToXML(Ljava/io/OutputStream;)V
+HPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->toString()Ljava/lang/String;
+HPLcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;->writeToXML(Ljava/io/OutputStream;)V
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Injector;-><init>()V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Injector;->elapsedRealtimeMillis()J
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Injector;->getLocalDate()Ljava/time/LocalDate;
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Injector;->getUserId(Landroid/os/UserManager;I)I
 PLcom/android/server/display/AmbientBrightnessStatsTracker$Injector;->getUserSerialNumber(Landroid/os/UserManager;I)I
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Timer;-><init>(Lcom/android/server/display/AmbientBrightnessStatsTracker$Clock;)V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Timer;->isRunning()Z
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Timer;->reset()V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Timer;->start()V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker$Timer;->totalDurationSec()F
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker;-><clinit>()V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker;-><init>(Landroid/os/UserManager;Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;)V
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->access$000(Lcom/android/server/display/AmbientBrightnessStatsTracker;)Lcom/android/server/display/AmbientBrightnessStatsTracker$Injector;
+HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->access$100(Lcom/android/server/display/AmbientBrightnessStatsTracker;)Landroid/os/UserManager;
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->add(IF)V
 PLcom/android/server/display/AmbientBrightnessStatsTracker;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/display/AmbientBrightnessStatsTracker;->getUserStats(I)Ljava/util/ArrayList;
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->lambda$new$0$AmbientBrightnessStatsTracker()J
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->readStats(Ljava/io/InputStream;)V
 HSPLcom/android/server/display/AmbientBrightnessStatsTracker;->start()V
-PLcom/android/server/display/AmbientBrightnessStatsTracker;->stop()V
+HPLcom/android/server/display/AmbientBrightnessStatsTracker;->stop()V
 PLcom/android/server/display/AmbientBrightnessStatsTracker;->writeStats(Ljava/io/OutputStream;)V
-HSPLcom/android/server/display/AutomaticBrightnessController$1;->run()V
+HPLcom/android/server/display/AutomaticBrightnessController$1;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController$1;->run()V
 HSPLcom/android/server/display/AutomaticBrightnessController$2;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
-HSPLcom/android/server/display/AutomaticBrightnessController$2;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
-HSPLcom/android/server/display/AutomaticBrightnessController$2;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HPLcom/android/server/display/AutomaticBrightnessController$2;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
+HPLcom/android/server/display/AutomaticBrightnessController$2;->onSensorChanged(Landroid/hardware/SensorEvent;)V
 HSPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;-><init>(JI)V
-HSPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
-HSPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
+PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->clear()V
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getLux(I)F
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->getTime(I)J
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->offsetOf(I)I
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->prune(J)V
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->push(JF)V
+HPLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->size()I
 PLcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;->toString()Ljava/lang/String;
 HSPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;-><init>(Lcom/android/server/display/AutomaticBrightnessController;Landroid/os/Looper;)V
-HSPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/display/AutomaticBrightnessController$Injector;-><init>()V
+HPLcom/android/server/display/AutomaticBrightnessController$Injector;->getBackgroundThreadHandler()Landroid/os/Handler;
 HSPLcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;-><init>(Lcom/android/server/display/AutomaticBrightnessController;)V
-HSPLcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;->onTaskStackChanged()V
+HPLcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;->onTaskStackChanged()V
 HSPLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/hardware/Sensor;Lcom/android/server/display/BrightnessMappingStrategy;IIIFIIJJZLcom/android/server/display/HysteresisLevels;Lcom/android/server/display/HysteresisLevels;JLandroid/content/pm/PackageManager;)V
-HSPLcom/android/server/display/AutomaticBrightnessController;->adjustLightSensorRate(I)V
-HSPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F
+HSPLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/hardware/Sensor;Lcom/android/server/display/BrightnessMappingStrategy;IIIFIIJJZLcom/android/server/display/HysteresisLevels;Lcom/android/server/display/HysteresisLevels;Landroid/content/pm/PackageManager;)V
+HSPLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Injector;Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/hardware/Sensor;Lcom/android/server/display/BrightnessMappingStrategy;IIIFIIJJZLcom/android/server/display/HysteresisLevels;Lcom/android/server/display/HysteresisLevels;JLandroid/content/pm/PackageManager;)V
+HSPLcom/android/server/display/AutomaticBrightnessController;-><init>(Lcom/android/server/display/AutomaticBrightnessController$Injector;Lcom/android/server/display/AutomaticBrightnessController$Callbacks;Landroid/os/Looper;Landroid/hardware/SensorManager;Landroid/hardware/Sensor;Lcom/android/server/display/BrightnessMappingStrategy;IIIFIIJJZLcom/android/server/display/HysteresisLevels;Lcom/android/server/display/HysteresisLevels;Landroid/content/pm/PackageManager;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->access$000(Lcom/android/server/display/AutomaticBrightnessController;)Landroid/app/IActivityTaskManager;
+HPLcom/android/server/display/AutomaticBrightnessController;->access$100(Lcom/android/server/display/AutomaticBrightnessController;)Ljava/lang/String;
+PLcom/android/server/display/AutomaticBrightnessController;->access$1000(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->access$1100(Lcom/android/server/display/AutomaticBrightnessController;)Z
+HPLcom/android/server/display/AutomaticBrightnessController;->access$1200(Lcom/android/server/display/AutomaticBrightnessController;JF)V
+PLcom/android/server/display/AutomaticBrightnessController;->access$202(Lcom/android/server/display/AutomaticBrightnessController;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/display/AutomaticBrightnessController;->access$302(Lcom/android/server/display/AutomaticBrightnessController;I)I
+PLcom/android/server/display/AutomaticBrightnessController;->access$400(Lcom/android/server/display/AutomaticBrightnessController;)Landroid/content/pm/PackageManager;
+HPLcom/android/server/display/AutomaticBrightnessController;->access$500(Lcom/android/server/display/AutomaticBrightnessController;)Lcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;
+HPLcom/android/server/display/AutomaticBrightnessController;->access$600(Lcom/android/server/display/AutomaticBrightnessController;)V
+PLcom/android/server/display/AutomaticBrightnessController;->access$700(Lcom/android/server/display/AutomaticBrightnessController;)V
+PLcom/android/server/display/AutomaticBrightnessController;->access$800(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->access$900(Lcom/android/server/display/AutomaticBrightnessController;)V
+HPLcom/android/server/display/AutomaticBrightnessController;->adjustLightSensorRate(I)V
+HPLcom/android/server/display/AutomaticBrightnessController;->applyLightSensorMeasurement(JF)V
+HPLcom/android/server/display/AutomaticBrightnessController;->calculateAmbientLux(JJ)F
+HPLcom/android/server/display/AutomaticBrightnessController;->calculateWeight(JJ)F
+HPLcom/android/server/display/AutomaticBrightnessController;->clampScreenBrightness(F)F
 PLcom/android/server/display/AutomaticBrightnessController;->collectBrightnessAdjustmentSample()V
 HSPLcom/android/server/display/AutomaticBrightnessController;->configure(ZLandroid/hardware/display/BrightnessConfiguration;FZFZI)V
 HPLcom/android/server/display/AutomaticBrightnessController;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness()I
-HSPLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightnessAdjustment()F
-HSPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V
+HPLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightness()I
+HPLcom/android/server/display/AutomaticBrightnessController;->getAutomaticScreenBrightnessAdjustment()F
+PLcom/android/server/display/AutomaticBrightnessController;->getDefaultConfig()Landroid/hardware/display/BrightnessConfiguration;
+HPLcom/android/server/display/AutomaticBrightnessController;->handleLightSensorEvent(JF)V
 HSPLcom/android/server/display/AutomaticBrightnessController;->hasUserDataPoints()Z
 PLcom/android/server/display/AutomaticBrightnessController;->hasValidAmbientLux()Z
-HSPLcom/android/server/display/AutomaticBrightnessController;->isDefaultConfig()Z
-HSPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J
-HSPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J
+PLcom/android/server/display/AutomaticBrightnessController;->invalidateShortTermModel()V
+HPLcom/android/server/display/AutomaticBrightnessController;->isDefaultConfig()Z
+HSPLcom/android/server/display/AutomaticBrightnessController;->isInteractivePolicy(I)Z
+HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightBrighteningTransition(J)J
+HPLcom/android/server/display/AutomaticBrightnessController;->nextAmbientLightDarkeningTransition(J)J
 PLcom/android/server/display/AutomaticBrightnessController;->prepareBrightnessAdjustmentSample()V
-HSPLcom/android/server/display/AutomaticBrightnessController;->registerForegroundAppUpdater()V
+HPLcom/android/server/display/AutomaticBrightnessController;->registerForegroundAppUpdater()V
 HSPLcom/android/server/display/AutomaticBrightnessController;->resetShortTermModel()V
-HSPLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V
+HPLcom/android/server/display/AutomaticBrightnessController;->setAmbientLux(F)V
 HSPLcom/android/server/display/AutomaticBrightnessController;->setBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)Z
 HSPLcom/android/server/display/AutomaticBrightnessController;->setDisplayPolicy(I)Z
 HSPLcom/android/server/display/AutomaticBrightnessController;->setLightSensorEnabled(Z)Z
 PLcom/android/server/display/AutomaticBrightnessController;->setScreenBrightnessByUser(F)Z
-PLcom/android/server/display/AutomaticBrightnessController;->unregisterForegroundAppUpdater()V
-HSPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V
-HSPLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(Z)V
-HSPLcom/android/server/display/AutomaticBrightnessController;->updateForegroundAppSync()V
+HPLcom/android/server/display/AutomaticBrightnessController;->unregisterForegroundAppUpdater()V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux()V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateAmbientLux(J)V
+HSPLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(ZZ)V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateForegroundApp()V
+HPLcom/android/server/display/AutomaticBrightnessController;->updateForegroundAppSync()V
+HPLcom/android/server/display/AutomaticBrightnessController;->weightIntegral(J)F
 PLcom/android/server/display/BrightnessIdleJob;-><init>()V
+PLcom/android/server/display/BrightnessIdleJob;->cancelJob(Landroid/content/Context;)V
 PLcom/android/server/display/BrightnessIdleJob;->onStartJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/display/BrightnessIdleJob;->scheduleJob(Landroid/content/Context;)V
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;-><init>(Landroid/hardware/display/BrightnessConfiguration;[F[IF)V
@@ -6548,134 +14804,236 @@
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->clearUserDataPoints()V
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->computeSpline()V
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->convertToNits(I)F
-PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getAutoBrightnessAdjustment()F
-HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getBrightness(FLjava/lang/String;I)F
+HPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->correctBrightness(FLjava/lang/String;I)F
+HPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getAutoBrightnessAdjustment()F
+HPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getBrightness(FLjava/lang/String;I)F
+PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getBrightnessConfiguration()Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getDefaultConfig()Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getShortTermModelTimeout()J
+PLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->getUnadjustedBrightness(F)F
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->hasUserDataPoints()Z
-HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->isDefaultConfig()Z
+HPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->isDefaultConfig()Z
 HSPLcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;->setBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)Z
+HSPLcom/android/server/display/BrightnessMappingStrategy;-><clinit>()V
+HSPLcom/android/server/display/BrightnessMappingStrategy;-><init>()V
 HSPLcom/android/server/display/BrightnessMappingStrategy;->create(Landroid/content/res/Resources;)Lcom/android/server/display/BrightnessMappingStrategy;
+PLcom/android/server/display/BrightnessMappingStrategy;->findInsertionPoint([FF)I
 HSPLcom/android/server/display/BrightnessMappingStrategy;->getAdjustedCurve([F[FFFFF)Landroid/util/Pair;
+HSPLcom/android/server/display/BrightnessMappingStrategy;->getFloatArray(Landroid/content/res/TypedArray;)[F
+HSPLcom/android/server/display/BrightnessMappingStrategy;->getLuxLevels([I)[F
 PLcom/android/server/display/BrightnessMappingStrategy;->inferAutoBrightnessAdjustment(FFF)F
 PLcom/android/server/display/BrightnessMappingStrategy;->insertControlPoint([F[FFF)Landroid/util/Pair;
 HSPLcom/android/server/display/BrightnessMappingStrategy;->isValidMapping([F[F)Z
 HSPLcom/android/server/display/BrightnessMappingStrategy;->isValidMapping([F[I)Z
 HSPLcom/android/server/display/BrightnessMappingStrategy;->normalizeAbsoluteBrightness(I)F
+PLcom/android/server/display/BrightnessMappingStrategy;->permissibleRatio(FF)F
+PLcom/android/server/display/BrightnessMappingStrategy;->shouldResetShortTermModel(FF)Z
 PLcom/android/server/display/BrightnessMappingStrategy;->smoothCurve([F[FI)V
-PLcom/android/server/display/BrightnessTracker$DisplayListener;->onDisplayAdded(I)V
-HSPLcom/android/server/display/BrightnessTracker$DisplayListener;->onDisplayChanged(I)V
-PLcom/android/server/display/BrightnessTracker$DisplayListener;->onDisplayRemoved(I)V
+HPLcom/android/server/display/BrightnessTracker$BrightnessChangeValues;-><init>(FFZZJ)V
+HSPLcom/android/server/display/BrightnessTracker$Injector;-><init>()V
+PLcom/android/server/display/BrightnessTracker$Injector;->cancelIdleJob(Landroid/content/Context;)V
 HSPLcom/android/server/display/BrightnessTracker$Injector;->currentTimeMillis()J
 HSPLcom/android/server/display/BrightnessTracker$Injector;->elapsedRealtimeNanos()J
-HSPLcom/android/server/display/BrightnessTracker$Injector;->enableColorSampling(ZI)Z
 HSPLcom/android/server/display/BrightnessTracker$Injector;->getBackgroundHandler()Landroid/os/Handler;
 HSPLcom/android/server/display/BrightnessTracker$Injector;->getFile(Ljava/lang/String;)Landroid/util/AtomicFile;
 PLcom/android/server/display/BrightnessTracker$Injector;->getFocusedStack()Landroid/app/ActivityManager$StackInfo;
-HSPLcom/android/server/display/BrightnessTracker$Injector;->getFrameRate(Landroid/content/Context;)F
 PLcom/android/server/display/BrightnessTracker$Injector;->getNightDisplayColorTemperature(Landroid/content/Context;)I
 PLcom/android/server/display/BrightnessTracker$Injector;->getProfileIds(Landroid/os/UserManager;I)[I
-HSPLcom/android/server/display/BrightnessTracker$Injector;->getSamplingAttributes()Landroid/hardware/display/DisplayedContentSamplingAttributes;
 HSPLcom/android/server/display/BrightnessTracker$Injector;->getUserId(Landroid/os/UserManager;I)I
 PLcom/android/server/display/BrightnessTracker$Injector;->getUserSerialNumber(Landroid/os/UserManager;I)I
 HSPLcom/android/server/display/BrightnessTracker$Injector;->isBrightnessModeAutomatic(Landroid/content/ContentResolver;)Z
 HSPLcom/android/server/display/BrightnessTracker$Injector;->isInteractive(Landroid/content/Context;)Z
 PLcom/android/server/display/BrightnessTracker$Injector;->isNightDisplayActivated(Landroid/content/Context;)Z
 HSPLcom/android/server/display/BrightnessTracker$Injector;->registerBrightnessModeObserver(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-HSPLcom/android/server/display/BrightnessTracker$Injector;->registerDisplayListener(Landroid/content/Context;Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
 HSPLcom/android/server/display/BrightnessTracker$Injector;->registerReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;Landroid/content/IntentFilter;)V
 HSPLcom/android/server/display/BrightnessTracker$Injector;->registerSensorListener(Landroid/content/Context;Landroid/hardware/SensorEventListener;Landroid/os/Handler;)V
-PLcom/android/server/display/BrightnessTracker$Injector;->sampleColor(I)Landroid/hardware/display/DisplayedContentSample;
 HSPLcom/android/server/display/BrightnessTracker$Injector;->scheduleIdleJob(Landroid/content/Context;)V
-PLcom/android/server/display/BrightnessTracker$Injector;->unRegisterDisplayListener(Landroid/content/Context;Landroid/hardware/display/DisplayManager$DisplayListener;)V
-PLcom/android/server/display/BrightnessTracker$Injector;->unregisterSensorListener(Landroid/content/Context;Landroid/hardware/SensorEventListener;)V
+PLcom/android/server/display/BrightnessTracker$Injector;->unregisterBrightnessModeObserver(Landroid/content/Context;Landroid/database/ContentObserver;)V
+PLcom/android/server/display/BrightnessTracker$Injector;->unregisterReceiver(Landroid/content/Context;Landroid/content/BroadcastReceiver;)V
+HPLcom/android/server/display/BrightnessTracker$Injector;->unregisterSensorListener(Landroid/content/Context;Landroid/hardware/SensorEventListener;)V
+HSPLcom/android/server/display/BrightnessTracker$LightData;-><init>()V
+HSPLcom/android/server/display/BrightnessTracker$LightData;-><init>(Lcom/android/server/display/BrightnessTracker$1;)V
+HSPLcom/android/server/display/BrightnessTracker$Receiver;-><init>(Lcom/android/server/display/BrightnessTracker;)V
+HSPLcom/android/server/display/BrightnessTracker$Receiver;-><init>(Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker$1;)V
 HSPLcom/android/server/display/BrightnessTracker$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/display/BrightnessTracker$SensorListener;-><init>(Lcom/android/server/display/BrightnessTracker;)V
+HSPLcom/android/server/display/BrightnessTracker$SensorListener;-><init>(Lcom/android/server/display/BrightnessTracker;Lcom/android/server/display/BrightnessTracker$1;)V
 HSPLcom/android/server/display/BrightnessTracker$SensorListener;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
 HSPLcom/android/server/display/BrightnessTracker$SensorListener;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/display/BrightnessTracker$SettingsObserver;-><init>(Lcom/android/server/display/BrightnessTracker;Landroid/os/Handler;)V
+PLcom/android/server/display/BrightnessTracker$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/display/BrightnessTracker$TrackerHandler;-><init>(Lcom/android/server/display/BrightnessTracker;Landroid/os/Looper;)V
 HSPLcom/android/server/display/BrightnessTracker$TrackerHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/display/BrightnessTracker;-><clinit>()V
 HSPLcom/android/server/display/BrightnessTracker;-><init>(Landroid/content/Context;Lcom/android/server/display/BrightnessTracker$Injector;)V
+PLcom/android/server/display/BrightnessTracker;->access$1000(Lcom/android/server/display/BrightnessTracker;)V
+HSPLcom/android/server/display/BrightnessTracker;->access$1100(Lcom/android/server/display/BrightnessTracker;II)V
+HSPLcom/android/server/display/BrightnessTracker;->access$1200(Lcom/android/server/display/BrightnessTracker;F)V
+HPLcom/android/server/display/BrightnessTracker;->access$1300(Lcom/android/server/display/BrightnessTracker;FZFZZJ)V
+PLcom/android/server/display/BrightnessTracker;->access$1400(Lcom/android/server/display/BrightnessTracker;)V
+PLcom/android/server/display/BrightnessTracker;->access$1500(Lcom/android/server/display/BrightnessTracker;)V
+PLcom/android/server/display/BrightnessTracker;->access$1600(Lcom/android/server/display/BrightnessTracker;)V
+PLcom/android/server/display/BrightnessTracker;->access$1700(Lcom/android/server/display/BrightnessTracker;)V
+HSPLcom/android/server/display/BrightnessTracker;->access$1800(Lcom/android/server/display/BrightnessTracker;)Landroid/hardware/display/BrightnessConfiguration;
+HSPLcom/android/server/display/BrightnessTracker;->access$1802(Lcom/android/server/display/BrightnessTracker;Landroid/hardware/display/BrightnessConfiguration;)Landroid/hardware/display/BrightnessConfiguration;
+HSPLcom/android/server/display/BrightnessTracker;->access$1900(Lcom/android/server/display/BrightnessTracker;)Z
+HSPLcom/android/server/display/BrightnessTracker;->access$400(Lcom/android/server/display/BrightnessTracker;Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/display/BrightnessTracker;->access$500(Lcom/android/server/display/BrightnessTracker;Landroid/hardware/SensorEvent;)V
+PLcom/android/server/display/BrightnessTracker;->access$700(Lcom/android/server/display/BrightnessTracker;)Landroid/content/ContentResolver;
+PLcom/android/server/display/BrightnessTracker;->access$800(Lcom/android/server/display/BrightnessTracker;)Lcom/android/server/display/BrightnessTracker$Injector;
+PLcom/android/server/display/BrightnessTracker;->access$900(Lcom/android/server/display/BrightnessTracker;)Landroid/os/Handler;
 HSPLcom/android/server/display/BrightnessTracker;->backgroundStart(F)V
 HSPLcom/android/server/display/BrightnessTracker;->batteryLevelChanged(II)V
-PLcom/android/server/display/BrightnessTracker;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/BrightnessTracker;->disableColorSampling()V
+HPLcom/android/server/display/BrightnessTracker;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/display/BrightnessTracker;->dumpLocal(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/BrightnessTracker;->enableColorSampling()V
 PLcom/android/server/display/BrightnessTracker;->getAmbientBrightnessStats(I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/display/BrightnessTracker;->getEvents(IZ)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/display/BrightnessTracker;->handleBrightnessChanged(FZFZZJ)V
+HPLcom/android/server/display/BrightnessTracker;->getEvents(IZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/display/BrightnessTracker;->handleBrightnessChanged(FZFZZJ)V
 PLcom/android/server/display/BrightnessTracker;->lambda$dump$1$BrightnessTracker(Ljava/io/PrintWriter;)V
 PLcom/android/server/display/BrightnessTracker;->lambda$scheduleWriteBrightnessTrackerState$0$BrightnessTracker()V
-HSPLcom/android/server/display/BrightnessTracker;->notifyBrightnessChanged(FZFZZ)V
+HPLcom/android/server/display/BrightnessTracker;->notifyBrightnessChanged(FZFZZ)V
 PLcom/android/server/display/BrightnessTracker;->persistBrightnessTrackerState()V
 HSPLcom/android/server/display/BrightnessTracker;->readAmbientBrightnessStats()V
 HSPLcom/android/server/display/BrightnessTracker;->readEvents()V
 HSPLcom/android/server/display/BrightnessTracker;->readEventsLocked(Ljava/io/InputStream;)V
+HSPLcom/android/server/display/BrightnessTracker;->recordAmbientBrightnessStats(Landroid/hardware/SensorEvent;)V
 HSPLcom/android/server/display/BrightnessTracker;->recordSensorEvent(Landroid/hardware/SensorEvent;)V
+PLcom/android/server/display/BrightnessTracker;->scheduleWriteBrightnessTrackerState()V
+HSPLcom/android/server/display/BrightnessTracker;->setBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)V
 HSPLcom/android/server/display/BrightnessTracker;->start(F)V
 HSPLcom/android/server/display/BrightnessTracker;->startSensorListener()V
+PLcom/android/server/display/BrightnessTracker;->stop()V
+PLcom/android/server/display/BrightnessTracker;->stopSensorListener()V
 PLcom/android/server/display/BrightnessTracker;->writeAmbientBrightnessStats()V
 PLcom/android/server/display/BrightnessTracker;->writeEvents()V
-PLcom/android/server/display/BrightnessTracker;->writeEventsLocked(Ljava/io/OutputStream;)V
+HPLcom/android/server/display/BrightnessTracker;->writeEventsLocked(Ljava/io/OutputStream;)V
+HPLcom/android/server/display/ColorFade$NaturalSurfaceLayout;-><init>(Landroid/hardware/display/DisplayManagerInternal;ILandroid/view/SurfaceControl;)V
 PLcom/android/server/display/ColorFade$NaturalSurfaceLayout;->dispose()V
-PLcom/android/server/display/ColorFade$NaturalSurfaceLayout;->onDisplayTransaction(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/display/ColorFade$NaturalSurfaceLayout;->onDisplayTransaction(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/display/ColorFade;-><init>(I)V
-PLcom/android/server/display/ColorFade;->captureScreenshotTextureAndSetViewport()Z
-PLcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;Z)Z
+HPLcom/android/server/display/ColorFade;->attachEglContext()Z
+HPLcom/android/server/display/ColorFade;->captureScreenshotTextureAndSetViewport()Z
+HPLcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;)Z
+HPLcom/android/server/display/ColorFade;->checkGlErrors(Ljava/lang/String;Z)Z
 PLcom/android/server/display/ColorFade;->createEglContext()Z
-PLcom/android/server/display/ColorFade;->createEglSurface()Z
-PLcom/android/server/display/ColorFade;->createSurface()Z
-PLcom/android/server/display/ColorFade;->destroySurface()V
-PLcom/android/server/display/ColorFade;->dismissResources()V
-PLcom/android/server/display/ColorFade;->draw(F)Z
-PLcom/android/server/display/ColorFade;->drawFaded(FF)V
-PLcom/android/server/display/ColorFade;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/display/ColorFade;->initGLBuffers()Z
-PLcom/android/server/display/ColorFade;->initGLShaders(Landroid/content/Context;)Z
-PLcom/android/server/display/ColorFade;->loadShader(Landroid/content/Context;II)I
-PLcom/android/server/display/ColorFade;->ortho(FFFFFF)V
-PLcom/android/server/display/ColorFade;->prepare(Landroid/content/Context;I)Z
-PLcom/android/server/display/ColorFade;->readFile(Landroid/content/Context;I)Ljava/lang/String;
-PLcom/android/server/display/ColorFade;->setQuad(Ljava/nio/FloatBuffer;FFFF)V
-PLcom/android/server/display/ColorFade;->showSurface(F)Z
+HPLcom/android/server/display/ColorFade;->createEglSurface()Z
+HSPLcom/android/server/display/ColorFade;->createNativeFloatBuffer(I)Ljava/nio/FloatBuffer;
+HPLcom/android/server/display/ColorFade;->createSurface()Z
+HPLcom/android/server/display/ColorFade;->destroyEglSurface()V
+HPLcom/android/server/display/ColorFade;->destroyGLBuffers()V
+HPLcom/android/server/display/ColorFade;->destroyGLShaders()V
+HPLcom/android/server/display/ColorFade;->destroyScreenshotTexture()V
+HPLcom/android/server/display/ColorFade;->destroySurface()V
+HPLcom/android/server/display/ColorFade;->detachEglContext()V
+HSPLcom/android/server/display/ColorFade;->dismiss()V
+HPLcom/android/server/display/ColorFade;->dismissResources()V
+HPLcom/android/server/display/ColorFade;->draw(F)Z
+HPLcom/android/server/display/ColorFade;->drawFaded(FF)V
+HPLcom/android/server/display/ColorFade;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/ColorFade;->initGLBuffers()Z
+HPLcom/android/server/display/ColorFade;->initGLShaders(Landroid/content/Context;)Z
+HPLcom/android/server/display/ColorFade;->loadShader(Landroid/content/Context;II)I
+HPLcom/android/server/display/ColorFade;->ortho(FFFFFF)V
+HPLcom/android/server/display/ColorFade;->prepare(Landroid/content/Context;I)Z
+HPLcom/android/server/display/ColorFade;->readFile(Landroid/content/Context;I)Ljava/lang/String;
+HPLcom/android/server/display/ColorFade;->setQuad(Ljava/nio/FloatBuffer;FFFF)V
+HPLcom/android/server/display/ColorFade;->showSurface(F)Z
+HSPLcom/android/server/display/DisplayAdapter$1;-><init>(Lcom/android/server/display/DisplayAdapter;Lcom/android/server/display/DisplayDevice;I)V
 HSPLcom/android/server/display/DisplayAdapter$1;->run()V
+HSPLcom/android/server/display/DisplayAdapter$2;-><init>(Lcom/android/server/display/DisplayAdapter;)V
 HSPLcom/android/server/display/DisplayAdapter$2;->run()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;)V
+HSPLcom/android/server/display/DisplayAdapter;->access$000(Lcom/android/server/display/DisplayAdapter;)Lcom/android/server/display/DisplayAdapter$Listener;
+HSPLcom/android/server/display/DisplayAdapter;->createMode(IIF)Landroid/view/Display$Mode;
 PLcom/android/server/display/DisplayAdapter;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayAdapter;->getContext()Landroid/content/Context;
+HSPLcom/android/server/display/DisplayAdapter;->getHandler()Landroid/os/Handler;
+PLcom/android/server/display/DisplayAdapter;->getName()Ljava/lang/String;
+HSPLcom/android/server/display/DisplayAdapter;->getSyncRoot()Lcom/android/server/display/DisplayManagerService$SyncRoot;
+HSPLcom/android/server/display/DisplayAdapter;->lambda$sendDisplayDeviceEventLocked$0$DisplayAdapter(Lcom/android/server/display/DisplayDevice;I)V
+HSPLcom/android/server/display/DisplayAdapter;->lambda$sendTraversalRequestLocked$1$DisplayAdapter()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
+HSPLcom/android/server/display/DisplayDevice;-><init>(Lcom/android/server/display/DisplayAdapter;Landroid/os/IBinder;Ljava/lang/String;)V
 PLcom/android/server/display/DisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
-PLcom/android/server/display/DisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/DisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayDevice;->getDisplayTokenLocked()Landroid/os/IBinder;
+PLcom/android/server/display/DisplayDevice;->getNameLocked()Ljava/lang/String;
+HSPLcom/android/server/display/DisplayDevice;->getUniqueId()Ljava/lang/String;
 HSPLcom/android/server/display/DisplayDevice;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/display/DisplayDevice;->populateViewportLocked(Landroid/hardware/display/DisplayViewport;)V
-PLcom/android/server/display/DisplayDevice;->setAllowedDisplayModesLocked([I)V
+HPLcom/android/server/display/DisplayDevice;->setAutoLowLatencyModeLocked(Z)V
+HPLcom/android/server/display/DisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HPLcom/android/server/display/DisplayDevice;->setGameContentTypeLocked(Z)V
+HSPLcom/android/server/display/DisplayDevice;->setLayerStackLocked(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/display/DisplayDevice;->setProjectionLocked(Landroid/view/SurfaceControl$Transaction;ILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/display/DisplayDevice;->setRequestedColorModeLocked(I)V
+HPLcom/android/server/display/DisplayDevice;->setRequestedColorModeLocked(I)V
+PLcom/android/server/display/DisplayDevice;->setSurfaceLocked(Landroid/view/SurfaceControl$Transaction;Landroid/view/Surface;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;-><init>()V
+HSPLcom/android/server/display/DisplayDeviceConfig;->create(J)Lcom/android/server/display/DisplayDeviceConfig;
+HSPLcom/android/server/display/DisplayDeviceConfig;->getBrightness()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->getNits()[F
+HSPLcom/android/server/display/DisplayDeviceConfig;->initFromFile(Ljava/io/File;)V
+HSPLcom/android/server/display/DisplayDeviceConfig;->loadBrightnessMap(Lcom/android/server/display/config/DisplayConfiguration;)V
+HSPLcom/android/server/display/DisplayDeviceInfo;-><init>()V
 HSPLcom/android/server/display/DisplayDeviceInfo;->diff(Lcom/android/server/display/DisplayDeviceInfo;)I
+HSPLcom/android/server/display/DisplayDeviceInfo;->equals(Lcom/android/server/display/DisplayDeviceInfo;)Z
 HSPLcom/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/DisplayManagerService$AllowedDisplayModeObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
 HSPLcom/android/server/display/DisplayManagerService$AllowedDisplayModeObserver;->onAllowedDisplayModesChanged()V
-PLcom/android/server/display/DisplayManagerService$BinderService;->createVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;Ljava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
+HSPLcom/android/server/display/DisplayManagerService$BinderService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->canProjectSecureVideo(Landroid/media/projection/IMediaProjection;)Z
+PLcom/android/server/display/DisplayManagerService$BinderService;->canProjectVideo(Landroid/media/projection/IMediaProjection;)Z
+PLcom/android/server/display/DisplayManagerService$BinderService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/display/DisplayManagerService$BinderService;->createVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;Ljava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
 PLcom/android/server/display/DisplayManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/display/DisplayManagerService$BinderService;->getAmbientBrightnessStats()Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/display/DisplayManagerService$BinderService;->getBrightnessEvents(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/display/DisplayManagerService$BinderService;->getDefaultBrightnessConfiguration()Landroid/hardware/display/BrightnessConfiguration;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayIds()[I
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getPreferredWideGamutColorSpaceId()I
-PLcom/android/server/display/DisplayManagerService$BinderService;->getStableDisplaySize()Landroid/graphics/Point;
+HPLcom/android/server/display/DisplayManagerService$BinderService;->getStableDisplaySize()Landroid/graphics/Point;
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->getWifiDisplayStatus()Landroid/hardware/display/WifiDisplayStatus;
+HPLcom/android/server/display/DisplayManagerService$BinderService;->isUidPresentOnDisplay(II)Z
 HSPLcom/android/server/display/DisplayManagerService$BinderService;->registerCallback(Landroid/hardware/display/IDisplayManagerCallback;)V
 PLcom/android/server/display/DisplayManagerService$BinderService;->releaseVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->requestColorMode(II)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->resizeVirtualDisplay(Landroid/hardware/display/IVirtualDisplayCallback;III)V
 PLcom/android/server/display/DisplayManagerService$BinderService;->setBrightnessConfigurationForUser(Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)V
-PLcom/android/server/display/DisplayManagerService$BinderService;->setTemporaryBrightness(I)V
-PLcom/android/server/display/DisplayManagerService$BinderService;->setVirtualDisplayState(Landroid/hardware/display/IVirtualDisplayCallback;Z)V
+HPLcom/android/server/display/DisplayManagerService$BinderService;->setTemporaryBrightness(I)V
+HPLcom/android/server/display/DisplayManagerService$BinderService;->setVirtualDisplayState(Landroid/hardware/display/IVirtualDisplayCallback;Z)V
+HPLcom/android/server/display/DisplayManagerService$BinderService;->setVirtualDisplaySurface(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/view/Surface;)V
+PLcom/android/server/display/DisplayManagerService$BinderService;->startWifiDisplayScan()V
+PLcom/android/server/display/DisplayManagerService$BinderService;->stopWifiDisplayScan()V
 PLcom/android/server/display/DisplayManagerService$BinderService;->validatePackageName(ILjava/lang/String;)Z
-HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V
+HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;-><init>(Lcom/android/server/display/DisplayManagerService;ILandroid/hardware/display/IDisplayManagerCallback;)V
+HPLcom/android/server/display/DisplayManagerService$CallbackRecord;->binderDied()V
 HSPLcom/android/server/display/DisplayManagerService$CallbackRecord;->notifyDisplayEventAsync(II)V
+HSPLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;->onDesiredDisplayModeSpecsChanged()V
+HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$1;)V
 HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onDisplayDeviceEvent(Lcom/android/server/display/DisplayDevice;I)V
 HSPLcom/android/server/display/DisplayManagerService$DisplayAdapterListener;->onTraversalRequested()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$Injector;-><init>()V
 HSPLcom/android/server/display/DisplayManagerService$Injector;->getDefaultDisplayDelayTimeout()J
 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/VirtualDisplayAdapter;
+HSPLcom/android/server/display/DisplayManagerService$LocalService$1;-><init>(Lcom/android/server/display/DisplayManagerService$LocalService;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService$1;->requestDisplayState(II)V
+HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService$LocalService;-><init>(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$1;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayInfo(I)Landroid/view/DisplayInfo;
-PLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayedContentSample(IJJ)Landroid/hardware/display/DisplayedContentSample;
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->getDisplayedContentSamplingAttributes(I)Landroid/hardware/display/DisplayedContentSamplingAttributes;
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->getNonOverrideDisplayInfo(ILandroid/view/DisplayInfo;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->initPowerManagement(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->isProximitySensorAvailable()Z
@@ -6684,83 +15042,285 @@
 PLcom/android/server/display/DisplayManagerService$LocalService;->persistBrightnessTrackerState()V
 PLcom/android/server/display/DisplayManagerService$LocalService;->registerDisplayTransactionListener(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->screenshot(ILandroid/view/Surface;)Z
+HPLcom/android/server/display/DisplayManagerService$LocalService;->screenshot(I)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayAccessUIDs(Landroid/util/SparseArray;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayInfoOverrideFromWindowManager(ILandroid/view/DisplayInfo;)V
 HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZ)V
-HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayedContentSamplingEnabled(IZII)Z
+HSPLcom/android/server/display/DisplayManagerService$LocalService;->setDisplayProperties(IZFIZZ)V
 PLcom/android/server/display/DisplayManagerService$LocalService;->unregisterDisplayTransactionListener(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/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;-><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;->access$1000(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$1000(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1100(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$1100(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1200(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/input/InputManagerInternal;
+HSPLcom/android/server/display/DisplayManagerService;->access$1200(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1300(Lcom/android/server/display/DisplayManagerService;)V
+PLcom/android/server/display/DisplayManagerService;->access$1300(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1400(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1400(Lcom/android/server/display/DisplayManagerService;Z)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1500(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HPLcom/android/server/display/DisplayManagerService;->access$1500(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1600(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
+PLcom/android/server/display/DisplayManagerService;->access$1600(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$1700(Lcom/android/server/display/DisplayManagerService;I)[I
+HSPLcom/android/server/display/DisplayManagerService;->access$1700(Lcom/android/server/display/DisplayManagerService;Z)V
+PLcom/android/server/display/DisplayManagerService;->access$1800(Lcom/android/server/display/DisplayManagerService;II)Z
+HPLcom/android/server/display/DisplayManagerService;->access$1800(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+PLcom/android/server/display/DisplayManagerService;->access$1900(Lcom/android/server/display/DisplayManagerService;)Landroid/graphics/Point;
+HSPLcom/android/server/display/DisplayManagerService;->access$1900(Lcom/android/server/display/DisplayManagerService;II)Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/DisplayManagerService;->access$200(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
+HSPLcom/android/server/display/DisplayManagerService;->access$200(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$2000(Lcom/android/server/display/DisplayManagerService;I)[I
+HSPLcom/android/server/display/DisplayManagerService;->access$2000(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V
+HSPLcom/android/server/display/DisplayManagerService;->access$2100(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context;
+PLcom/android/server/display/DisplayManagerService;->access$2100(Lcom/android/server/display/DisplayManagerService;II)Z
+PLcom/android/server/display/DisplayManagerService;->access$2200(Lcom/android/server/display/DisplayManagerService;)Landroid/graphics/Point;
+HSPLcom/android/server/display/DisplayManagerService;->access$2300(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IDisplayManagerCallback;I)V
+PLcom/android/server/display/DisplayManagerService;->access$2400(Lcom/android/server/display/DisplayManagerService;I)V
+PLcom/android/server/display/DisplayManagerService;->access$2500(Lcom/android/server/display/DisplayManagerService;I)V
+HSPLcom/android/server/display/DisplayManagerService;->access$300(Lcom/android/server/display/DisplayManagerService;)Landroid/content/Context;
+HSPLcom/android/server/display/DisplayManagerService;->access$300(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$3000(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
+PLcom/android/server/display/DisplayManagerService;->access$3100(Lcom/android/server/display/DisplayManagerService;II)V
+HSPLcom/android/server/display/DisplayManagerService;->access$3200(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/display/WifiDisplayStatus;
+PLcom/android/server/display/DisplayManagerService;->access$3300(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService;->access$3300(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
+PLcom/android/server/display/DisplayManagerService;->access$3400(Lcom/android/server/display/DisplayManagerService;)Landroid/media/projection/IMediaProjectionManager;
+PLcom/android/server/display/DisplayManagerService;->access$3500(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
+PLcom/android/server/display/DisplayManagerService;->access$3500(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;Landroid/view/Surface;)V
+PLcom/android/server/display/DisplayManagerService;->access$3600(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/display/DisplayManagerService;->access$3600(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;III)V
+PLcom/android/server/display/DisplayManagerService;->access$3700(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;Landroid/view/Surface;)V
+PLcom/android/server/display/DisplayManagerService;->access$3700(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/display/DisplayManagerService;->access$3800(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/display/DisplayManagerService;->access$3800(Lcom/android/server/display/DisplayManagerService;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$3900(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController;
+PLcom/android/server/display/DisplayManagerService;->access$3900(Lcom/android/server/display/DisplayManagerService;Landroid/os/IBinder;Z)V
+HSPLcom/android/server/display/DisplayManagerService;->access$3902(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController;
+HSPLcom/android/server/display/DisplayManagerService;->access$400(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService;->access$4000(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)V
+PLcom/android/server/display/DisplayManagerService;->access$4000(Lcom/android/server/display/DisplayManagerService;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$4100(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayPowerController;
+HSPLcom/android/server/display/DisplayManagerService;->access$4102(Lcom/android/server/display/DisplayManagerService;Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController;
+PLcom/android/server/display/DisplayManagerService;->access$4200(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$4300(Lcom/android/server/display/DisplayManagerService;II)V
+HSPLcom/android/server/display/DisplayManagerService;->access$4402(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/SensorManager;)Landroid/hardware/SensorManager;
+HSPLcom/android/server/display/DisplayManagerService;->access$4500(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
+PLcom/android/server/display/DisplayManagerService;->access$4600(Lcom/android/server/display/DisplayManagerService;I)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
+HSPLcom/android/server/display/DisplayManagerService;->access$4600(Lcom/android/server/display/DisplayManagerService;II)V
+PLcom/android/server/display/DisplayManagerService;->access$4700(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$4702(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/SensorManager;)Landroid/hardware/SensorManager;
+PLcom/android/server/display/DisplayManagerService;->access$4800(Lcom/android/server/display/DisplayManagerService;I)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
+PLcom/android/server/display/DisplayManagerService;->access$4800(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$4900(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService;->access$4900(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$500(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+HSPLcom/android/server/display/DisplayManagerService;->access$500(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5000(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+PLcom/android/server/display/DisplayManagerService;->access$5000(Lcom/android/server/display/DisplayManagerService;Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5100(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5100(Lcom/android/server/display/DisplayManagerService;IZFIZ)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5100(Lcom/android/server/display/DisplayManagerService;IZFIZZ)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5200(Lcom/android/server/display/DisplayManagerService;ILandroid/view/DisplayInfo;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5300(Lcom/android/server/display/DisplayManagerService;IZFIZZ)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5400(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5500(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$5600(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5600(Lcom/android/server/display/DisplayManagerService;Landroid/util/SparseArray;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$5700(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$5800(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$600(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
+HSPLcom/android/server/display/DisplayManagerService;->access$600(Lcom/android/server/display/DisplayManagerService;)V
+HSPLcom/android/server/display/DisplayManagerService;->access$700(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$700(Lcom/android/server/display/DisplayManagerService;II)V
+HSPLcom/android/server/display/DisplayManagerService;->access$800(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+HSPLcom/android/server/display/DisplayManagerService;->access$800(Lcom/android/server/display/DisplayManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/display/DisplayManagerService;->access$900(Lcom/android/server/display/DisplayManagerService;)Landroid/hardware/input/InputManagerInternal;
+HSPLcom/android/server/display/DisplayManagerService;->access$900(Lcom/android/server/display/DisplayManagerService;)Lcom/android/server/display/DisplayManagerService$SyncRoot;
 HSPLcom/android/server/display/DisplayManagerService;->addLogicalDisplayLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
+HPLcom/android/server/display/DisplayManagerService;->applyGlobalDisplayStateLocked(Ljava/util/List;)V
+HSPLcom/android/server/display/DisplayManagerService;->assignDisplayIdLocked(Z)I
+HSPLcom/android/server/display/DisplayManagerService;->assignLayerStackLocked(I)I
+HSPLcom/android/server/display/DisplayManagerService;->clearViewportsLocked()V
 HSPLcom/android/server/display/DisplayManagerService;->configureColorModeLocked(Lcom/android/server/display/LogicalDisplay;Lcom/android/server/display/DisplayDevice;)V
 HSPLcom/android/server/display/DisplayManagerService;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;)V
 PLcom/android/server/display/DisplayManagerService;->createVirtualDisplayInternal(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)I
 HSPLcom/android/server/display/DisplayManagerService;->deliverDisplayEvent(II)V
-PLcom/android/server/display/DisplayManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/DisplayManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayManagerService;->findLogicalDisplayForDeviceLocked(Lcom/android/server/display/DisplayDevice;)Lcom/android/server/display/LogicalDisplay;
 HSPLcom/android/server/display/DisplayManagerService;->getDisplayIdsInternal(I)[I
 HSPLcom/android/server/display/DisplayManagerService;->getDisplayInfoInternal(II)Landroid/view/DisplayInfo;
-HSPLcom/android/server/display/DisplayManagerService;->getDisplayToken(I)Landroid/os/IBinder;
+PLcom/android/server/display/DisplayManagerService;->getDisplayToken(I)Landroid/os/IBinder;
+HSPLcom/android/server/display/DisplayManagerService;->getFloatArray(Landroid/content/res/TypedArray;)[F
 HSPLcom/android/server/display/DisplayManagerService;->getNonOverrideDisplayInfoInternal(ILandroid/view/DisplayInfo;)V
-PLcom/android/server/display/DisplayManagerService;->getStableDisplaySizeInternal()Landroid/graphics/Point;
+HSPLcom/android/server/display/DisplayManagerService;->getPreferredWideGamutColorSpaceIdInternal()I
+PLcom/android/server/display/DisplayManagerService;->getProjectionService()Landroid/media/projection/IMediaProjectionManager;
+HPLcom/android/server/display/DisplayManagerService;->getStableDisplaySizeInternal()Landroid/graphics/Point;
+HSPLcom/android/server/display/DisplayManagerService;->getUserManager()Landroid/os/UserManager;
 HSPLcom/android/server/display/DisplayManagerService;->getViewportLocked(ILjava/lang/String;)Landroid/hardware/display/DisplayViewport;
 HSPLcom/android/server/display/DisplayManagerService;->getWifiDisplayStatusInternal()Landroid/hardware/display/WifiDisplayStatus;
 HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAdded(Lcom/android/server/display/DisplayDevice;)V
 HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceAddedLocked(Lcom/android/server/display/DisplayDevice;)V
 HSPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceChanged(Lcom/android/server/display/DisplayDevice;)V
-PLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceRemovedLocked(Lcom/android/server/display/DisplayDevice;)V
-PLcom/android/server/display/DisplayManagerService;->isBrightnessConfigurationTooDark(Landroid/hardware/display/BrightnessConfiguration;)Z
+PLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceRemoved(Lcom/android/server/display/DisplayDevice;)V
+HPLcom/android/server/display/DisplayManagerService;->handleDisplayDeviceRemovedLocked(Lcom/android/server/display/DisplayDevice;)V
+HSPLcom/android/server/display/DisplayManagerService;->handleLogicalDisplayChanged(ILcom/android/server/display/LogicalDisplay;)V
+HPLcom/android/server/display/DisplayManagerService;->isBrightnessConfigurationTooDark(Landroid/hardware/display/BrightnessConfiguration;)Z
+HPLcom/android/server/display/DisplayManagerService;->isUidPresentOnDisplayInternal(II)Z
 HSPLcom/android/server/display/DisplayManagerService;->loadBrightnessConfiguration()V
 HSPLcom/android/server/display/DisplayManagerService;->loadStableDisplayValuesLocked()V
 HSPLcom/android/server/display/DisplayManagerService;->onAllowedDisplayModesChangedInternal()V
 HSPLcom/android/server/display/DisplayManagerService;->onBootPhase(I)V
-HSPLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HPLcom/android/server/display/DisplayManagerService;->onCallbackDied(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HSPLcom/android/server/display/DisplayManagerService;->onDesiredDisplayModeSpecsChangedInternal()V
 HSPLcom/android/server/display/DisplayManagerService;->onStart()V
 HSPLcom/android/server/display/DisplayManagerService;->performTraversalInternal(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/display/DisplayManagerService;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/display/DisplayManagerService;->populateViewportLocked(IILcom/android/server/display/DisplayDevice;Ljava/lang/String;)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
 HSPLcom/android/server/display/DisplayManagerService;->registerAdditionalDisplayAdapters()V
 HSPLcom/android/server/display/DisplayManagerService;->registerCallbackInternal(Landroid/hardware/display/IDisplayManagerCallback;I)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;->registerDisplayTransactionListenerInternal(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->registerOverlayDisplayAdapterLocked()V
 HSPLcom/android/server/display/DisplayManagerService;->registerWifiDisplayAdapterLocked()V
 PLcom/android/server/display/DisplayManagerService;->releaseVirtualDisplayInternal(Landroid/os/IBinder;)V
+PLcom/android/server/display/DisplayManagerService;->requestColorModeInternal(II)V
 HSPLcom/android/server/display/DisplayManagerService;->requestGlobalDisplayStateInternal(II)V
-HSPLcom/android/server/display/DisplayManagerService;->screenshotInternal(ILandroid/view/Surface;)Z
+PLcom/android/server/display/DisplayManagerService;->resizeVirtualDisplayInternal(Landroid/os/IBinder;III)V
+HSPLcom/android/server/display/DisplayManagerService;->scheduleTraversalLocked(Z)V
+HPLcom/android/server/display/DisplayManagerService;->screenshotInternal(I)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
+HSPLcom/android/server/display/DisplayManagerService;->sendDisplayEventLocked(II)V
 PLcom/android/server/display/DisplayManagerService;->setBrightnessConfigurationForUserInternal(Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)V
 HSPLcom/android/server/display/DisplayManagerService;->setDisplayAccessUIDsInternal(Landroid/util/SparseArray;)V
 HSPLcom/android/server/display/DisplayManagerService;->setDisplayInfoOverrideFromWindowManagerInternal(ILandroid/view/DisplayInfo;)V
 HSPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZ)V
+HSPLcom/android/server/display/DisplayManagerService;->setDisplayPropertiesInternal(IZFIZZ)V
 PLcom/android/server/display/DisplayManagerService;->setVirtualDisplayStateInternal(Landroid/os/IBinder;Z)V
+PLcom/android/server/display/DisplayManagerService;->setVirtualDisplaySurfaceInternal(Landroid/os/IBinder;Landroid/view/Surface;)V
 HSPLcom/android/server/display/DisplayManagerService;->setupSchedulerPolicies()V
-HSPLcom/android/server/display/DisplayManagerService;->stopWifiDisplayScanLocked(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+HSPLcom/android/server/display/DisplayManagerService;->shouldRegisterNonEssentialDisplayAdaptersLocked()Z
+PLcom/android/server/display/DisplayManagerService;->startWifiDisplayScanInternal(I)V
+PLcom/android/server/display/DisplayManagerService;->startWifiDisplayScanLocked(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
+PLcom/android/server/display/DisplayManagerService;->stopWifiDisplayScanInternal(I)V
+HPLcom/android/server/display/DisplayManagerService;->stopWifiDisplayScanLocked(Lcom/android/server/display/DisplayManagerService$CallbackRecord;)V
 HSPLcom/android/server/display/DisplayManagerService;->systemReady(ZZ)V
+PLcom/android/server/display/DisplayManagerService;->unregisterDisplayTransactionListenerInternal(Landroid/hardware/display/DisplayManagerInternal$DisplayTransactionListener;)V
+HSPLcom/android/server/display/DisplayManagerService;->updateDisplayStateLocked(Lcom/android/server/display/DisplayDevice;)Ljava/lang/Runnable;
 HSPLcom/android/server/display/DisplayManagerService;->updateLogicalDisplaysLocked()Z
+HSPLcom/android/server/display/DisplayManagerService;->updateSettingsLocked()V
+PLcom/android/server/display/DisplayManagerService;->validateBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)V
 HSPLcom/android/server/display/DisplayManagerService;->windowManagerAndInputReady()V
+HSPLcom/android/server/display/DisplayModeDirector$AppRequestObserver;-><init>(Lcom/android/server/display/DisplayModeDirector;)V
 PLcom/android/server/display/DisplayModeDirector$AppRequestObserver;->dumpLocked(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/DisplayModeDirector$AppRequestObserver;->findModeByIdLocked(II)Landroid/view/Display$Mode;
 HSPLcom/android/server/display/DisplayModeDirector$AppRequestObserver;->setAppRequestedMode(II)V
 HSPLcom/android/server/display/DisplayModeDirector$AppRequestObserver;->setAppRequestedModeLocked(II)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;-><init>(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;)V
+HPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;->run()V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;-><init>(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;Lcom/android/server/display/DisplayModeDirector$1;)V
+HPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->access$1500(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;J)V
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->access$1600(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;)F
+HPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->access$1700(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;FF)Z
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->access$1800(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;)Ljava/lang/Runnable;
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->isDifferentZone(FF)Z
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->processSensorData(J)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;->removeCallbacks()V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;-><init>(Lcom/android/server/display/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->access$1100(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;)F
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->access$1102(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;F)F
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->access$1200(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;)Lcom/android/server/display/utils/AmbientFilter;
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->access$1300(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->access$1400(Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;)[I
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->checkShouldObserve([I)Z
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->isDefaultDisplayOn()Z
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->isInsideZone(IF)Z
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->observe(Landroid/hardware/SensorManager;)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onBrightnessChangedLocked()V
+HPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onDeviceConfigRefreshRateInZoneChanged(I)V
+PLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onDeviceConfigThresholdsChanged([I[I)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onDisplayChanged(I)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onLowPowerModeEnabledLocked(Z)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onRefreshRateSettingChangedLocked(FF)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->onScreenOn(Z)V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->restartObserver()V
+HSPLcom/android/server/display/DisplayModeDirector$BrightnessObserver;->updateSensorStatus()V
+HSPLcom/android/server/display/DisplayModeDirector$DesiredDisplayConfigSpecs;-><init>(ILcom/android/server/display/DisplayModeDirector$RefreshRateRange;[I)V
+HSPLcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>()V
+HSPLcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;-><init>(ILcom/android/server/display/DisplayModeDirector$RefreshRateRange;)V
+HSPLcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;->copyFrom(Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HSPLcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;-><init>(Lcom/android/server/display/DisplayModeDirector;)V
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->getAmbientThresholds()[I
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->getBrightnessThresholds()[I
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->getDefaultPeakRefreshRate()Ljava/lang/Float;
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->getIntArrayProperty(Ljava/lang/String;)[I
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->getRefreshRateInZone()I
+PLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;->startListening()V
+HSPLcom/android/server/display/DisplayModeDirector$DisplayModeDirectorHandler;-><init>(Lcom/android/server/display/DisplayModeDirector;Landroid/os/Looper;)V
 HSPLcom/android/server/display/DisplayModeDirector$DisplayModeDirectorHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/display/DisplayModeDirector$DisplayObserver;-><init>(Lcom/android/server/display/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/display/DisplayModeDirector$DisplayObserver;->observe()V
 PLcom/android/server/display/DisplayModeDirector$DisplayObserver;->onDisplayAdded(I)V
 HSPLcom/android/server/display/DisplayModeDirector$DisplayObserver;->onDisplayChanged(I)V
 PLcom/android/server/display/DisplayModeDirector$DisplayObserver;->onDisplayRemoved(I)V
 HSPLcom/android/server/display/DisplayModeDirector$DisplayObserver;->updateDisplayModes(I)V
+HSPLcom/android/server/display/DisplayModeDirector$RefreshRateRange;-><init>()V
+HSPLcom/android/server/display/DisplayModeDirector$RefreshRateRange;-><init>(FF)V
+HSPLcom/android/server/display/DisplayModeDirector$RefreshRateRange;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/display/DisplayModeDirector$SettingsObserver;-><init>(Lcom/android/server/display/DisplayModeDirector;Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/display/DisplayModeDirector$SettingsObserver;->dumpLocked(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/DisplayModeDirector$SettingsObserver;->observe()V
-HSPLcom/android/server/display/DisplayModeDirector$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/display/DisplayModeDirector$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+PLcom/android/server/display/DisplayModeDirector$SettingsObserver;->onDeviceConfigDefaultPeakRefreshRateChanged(Ljava/lang/Float;)V
 HSPLcom/android/server/display/DisplayModeDirector$SettingsObserver;->updateLowPowerModeSettingLocked()V
+HSPLcom/android/server/display/DisplayModeDirector$SettingsObserver;->updateRefreshRateSettingLocked()V
+HSPLcom/android/server/display/DisplayModeDirector$Vote;-><init>(IIFF)V
+HSPLcom/android/server/display/DisplayModeDirector$Vote;->forRefreshRates(FF)Lcom/android/server/display/DisplayModeDirector$Vote;
+PLcom/android/server/display/DisplayModeDirector$Vote;->forSize(II)Lcom/android/server/display/DisplayModeDirector$Vote;
+PLcom/android/server/display/DisplayModeDirector$Vote;->priorityToString(I)Ljava/lang/String;
 PLcom/android/server/display/DisplayModeDirector$Vote;->toString()Ljava/lang/String;
 HSPLcom/android/server/display/DisplayModeDirector;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/display/DisplayModeDirector;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayModeDirector;->access$000(Lcom/android/server/display/DisplayModeDirector;)Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;
+PLcom/android/server/display/DisplayModeDirector;->access$100(Lcom/android/server/display/DisplayModeDirector;)Lcom/android/server/display/DisplayModeDirector$SettingsObserver;
+HSPLcom/android/server/display/DisplayModeDirector;->access$1000(Lcom/android/server/display/DisplayModeDirector;)Lcom/android/server/display/DisplayModeDirector$DisplayModeDirectorHandler;
+HSPLcom/android/server/display/DisplayModeDirector;->access$1900(Lcom/android/server/display/DisplayModeDirector;)Landroid/content/Context;
+HSPLcom/android/server/display/DisplayModeDirector;->access$200(Lcom/android/server/display/DisplayModeDirector;)Lcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;
+HSPLcom/android/server/display/DisplayModeDirector;->access$300(Lcom/android/server/display/DisplayModeDirector;)Ljava/lang/Object;
+HSPLcom/android/server/display/DisplayModeDirector;->access$400(Lcom/android/server/display/DisplayModeDirector;ILcom/android/server/display/DisplayModeDirector$Vote;)V
+HPLcom/android/server/display/DisplayModeDirector;->access$500(Lcom/android/server/display/DisplayModeDirector;IILcom/android/server/display/DisplayModeDirector$Vote;)V
+HSPLcom/android/server/display/DisplayModeDirector;->access$600(Lcom/android/server/display/DisplayModeDirector;)Landroid/util/SparseArray;
+HSPLcom/android/server/display/DisplayModeDirector;->access$700(Lcom/android/server/display/DisplayModeDirector;)Landroid/util/SparseArray;
+PLcom/android/server/display/DisplayModeDirector;->access$800(Lcom/android/server/display/DisplayModeDirector;)V
+HPLcom/android/server/display/DisplayModeDirector;->dump(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/DisplayModeDirector;->filterModes([Landroid/view/Display$Mode;IIFF)[I
 HSPLcom/android/server/display/DisplayModeDirector;->getAllowedModes(I)[I
-HSPLcom/android/server/display/DisplayModeDirector;->getAllowedModesLocked(Landroid/util/SparseArray;[Landroid/view/Display$Mode;Landroid/view/Display$Mode;)[I
 HSPLcom/android/server/display/DisplayModeDirector;->getAppRequestObserver()Lcom/android/server/display/DisplayModeDirector$AppRequestObserver;
+HSPLcom/android/server/display/DisplayModeDirector;->getDesiredDisplayConfigSpecs(I)Lcom/android/server/display/DisplayModeDirector$DesiredDisplayConfigSpecs;
+HSPLcom/android/server/display/DisplayModeDirector;->getDesiredDisplayModeSpecs(I)Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;
 HSPLcom/android/server/display/DisplayModeDirector;->getOrCreateVotesByDisplay(I)Landroid/util/SparseArray;
 HSPLcom/android/server/display/DisplayModeDirector;->getVotesLocked(I)Landroid/util/SparseArray;
-HSPLcom/android/server/display/DisplayModeDirector;->setListener(Lcom/android/server/display/DisplayModeDirector$Listener;)V
-HSPLcom/android/server/display/DisplayModeDirector;->start()V
+HSPLcom/android/server/display/DisplayModeDirector;->notifyAllowedModesChangedLocked()V
+HSPLcom/android/server/display/DisplayModeDirector;->notifyDesiredDisplayModeSpecsChangedLocked()V
+HSPLcom/android/server/display/DisplayModeDirector;->setDesiredDisplayModeSpecsListener(Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecsListener;)V
+HSPLcom/android/server/display/DisplayModeDirector;->setDisplayModeListener(Lcom/android/server/display/DisplayModeDirector$DisplayModeListener;)V
+HSPLcom/android/server/display/DisplayModeDirector;->start(Landroid/hardware/SensorManager;)V
 HSPLcom/android/server/display/DisplayModeDirector;->updateVoteLocked(IILcom/android/server/display/DisplayModeDirector$Vote;)V
+HSPLcom/android/server/display/DisplayModeDirector;->updateVoteLocked(ILcom/android/server/display/DisplayModeDirector$Vote;)V
 HSPLcom/android/server/display/DisplayPowerController$1;-><init>(Lcom/android/server/display/DisplayPowerController;)V
 PLcom/android/server/display/DisplayPowerController$1;->onAnimationEnd(Landroid/animation/Animator;)V
 PLcom/android/server/display/DisplayPowerController$1;->onAnimationStart(Landroid/animation/Animator;)V
@@ -6774,314 +15334,863 @@
 PLcom/android/server/display/DisplayPowerController$5;->run()V
 HSPLcom/android/server/display/DisplayPowerController$6;-><init>(Lcom/android/server/display/DisplayPowerController;)V
 PLcom/android/server/display/DisplayPowerController$6;->run()V
+PLcom/android/server/display/DisplayPowerController$7;-><init>(Lcom/android/server/display/DisplayPowerController;Ljava/io/PrintWriter;)V
 PLcom/android/server/display/DisplayPowerController$7;->run()V
 HSPLcom/android/server/display/DisplayPowerController$8;-><init>(Lcom/android/server/display/DisplayPowerController;)V
 PLcom/android/server/display/DisplayPowerController$8;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
-PLcom/android/server/display/DisplayPowerController$8;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HPLcom/android/server/display/DisplayPowerController$8;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;-><init>(Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController$1;)V
+PLcom/android/server/display/DisplayPowerController$BrightnessReason;->addModifier(I)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->reasonToString(I)Ljava/lang/String;
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->set(Lcom/android/server/display/DisplayPowerController$BrightnessReason;)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->setModifier(I)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->setReason(I)V
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/DisplayPowerController$BrightnessReason;->toString(I)Ljava/lang/String;
 HSPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Looper;)V
 HSPLcom/android/server/display/DisplayPowerController$DisplayControllerHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;->onScreenOff()V
-PLcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;->onScreenOn()V
+HPLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+HPLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController$1;)V
+HPLcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;->onScreenOff()V
+HPLcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;)V
+HPLcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;-><init>(Lcom/android/server/display/DisplayPowerController;Lcom/android/server/display/DisplayPowerController$1;)V
+HPLcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;->onScreenOn()V
 HSPLcom/android/server/display/DisplayPowerController$SettingsObserver;-><init>(Lcom/android/server/display/DisplayPowerController;Landroid/os/Handler;)V
-HSPLcom/android/server/display/DisplayPowerController$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HPLcom/android/server/display/DisplayPowerController$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/display/DisplayPowerController;-><clinit>()V
 HSPLcom/android/server/display/DisplayPowerController;-><init>(Landroid/content/Context;Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;Landroid/os/Handler;Landroid/hardware/SensorManager;Lcom/android/server/display/DisplayBlanker;)V
+HSPLcom/android/server/display/DisplayPowerController;->access$100(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController;->access$1000(Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;
+HSPLcom/android/server/display/DisplayPowerController;->access$1202(Lcom/android/server/display/DisplayPowerController;Landroid/hardware/display/BrightnessConfiguration;)Landroid/hardware/display/BrightnessConfiguration;
+PLcom/android/server/display/DisplayPowerController;->access$1302(Lcom/android/server/display/DisplayPowerController;I)I
+PLcom/android/server/display/DisplayPowerController;->access$1500(Lcom/android/server/display/DisplayPowerController;)Z
+PLcom/android/server/display/DisplayPowerController;->access$1600(Lcom/android/server/display/DisplayPowerController;)F
+PLcom/android/server/display/DisplayPowerController;->access$1700(Lcom/android/server/display/DisplayPowerController;JZ)V
+HPLcom/android/server/display/DisplayPowerController;->access$1800(Lcom/android/server/display/DisplayPowerController;Z)V
+PLcom/android/server/display/DisplayPowerController;->access$1900(Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;
+HSPLcom/android/server/display/DisplayPowerController;->access$400(Lcom/android/server/display/DisplayPowerController;)Landroid/hardware/display/DisplayManagerInternal$DisplayPowerCallbacks;
+PLcom/android/server/display/DisplayPowerController;->access$500(Lcom/android/server/display/DisplayPowerController;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayPowerController;->access$600(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController;->access$700(Lcom/android/server/display/DisplayPowerController;)V
+PLcom/android/server/display/DisplayPowerController;->access$800(Lcom/android/server/display/DisplayPowerController;)Lcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;
+PLcom/android/server/display/DisplayPowerController;->access$900(Lcom/android/server/display/DisplayPowerController;)V
 HSPLcom/android/server/display/DisplayPowerController;->animateScreenBrightness(II)V
 HSPLcom/android/server/display/DisplayPowerController;->animateScreenStateChange(IZ)V
-PLcom/android/server/display/DisplayPowerController;->blockScreenOff()V
-PLcom/android/server/display/DisplayPowerController;->blockScreenOn()V
+HPLcom/android/server/display/DisplayPowerController;->blockScreenOff()V
+HPLcom/android/server/display/DisplayPowerController;->blockScreenOn()V
 HSPLcom/android/server/display/DisplayPowerController;->clampAbsoluteBrightness(I)I
-PLcom/android/server/display/DisplayPowerController;->debounceProximitySensor()V
-PLcom/android/server/display/DisplayPowerController;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/display/DisplayPowerController;->dumpLocal(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayPowerController;->clampAutoBrightnessAdjustment(F)F
+HPLcom/android/server/display/DisplayPowerController;->clampScreenBrightness(I)I
+HSPLcom/android/server/display/DisplayPowerController;->clampScreenBrightnessForVr(I)I
+PLcom/android/server/display/DisplayPowerController;->clearPendingProximityDebounceTime()V
+HSPLcom/android/server/display/DisplayPowerController;->convertToNits(I)F
+HPLcom/android/server/display/DisplayPowerController;->debounceProximitySensor()V
+HPLcom/android/server/display/DisplayPowerController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/DisplayPowerController;->dumpLocal(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/DisplayPowerController;->findDisplayLightSensor(Ljava/lang/String;)Landroid/hardware/Sensor;
+PLcom/android/server/display/DisplayPowerController;->getAmbientBrightnessStats(I)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/display/DisplayPowerController;->getAutoBrightnessAdjustmentSetting()F
+PLcom/android/server/display/DisplayPowerController;->getBrightnessEvents(IZ)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/display/DisplayPowerController;->getDefaultBrightnessConfiguration()Landroid/hardware/display/BrightnessConfiguration;
 HSPLcom/android/server/display/DisplayPowerController;->getScreenBrightnessForVrSetting()I
 HSPLcom/android/server/display/DisplayPowerController;->getScreenBrightnessSetting()I
-PLcom/android/server/display/DisplayPowerController;->handleProximitySensorEvent(JZ)V
-HSPLcom/android/server/display/DisplayPowerController;->handleSettingsChange(Z)V
+HPLcom/android/server/display/DisplayPowerController;->handleProximitySensorEvent(JZ)V
+HPLcom/android/server/display/DisplayPowerController;->handleSettingsChange(Z)V
 HSPLcom/android/server/display/DisplayPowerController;->initialize()V
+HSPLcom/android/server/display/DisplayPowerController;->isProximitySensorAvailable()Z
+HPLcom/android/server/display/DisplayPowerController;->logDisplayPolicyChanged(I)V
 HSPLcom/android/server/display/DisplayPowerController;->notifyBrightnessChanged(IZZ)V
+PLcom/android/server/display/DisplayPowerController;->persistBrightnessTrackerState()V
+PLcom/android/server/display/DisplayPowerController;->proximityToString(I)Ljava/lang/String;
+PLcom/android/server/display/DisplayPowerController;->putAutoBrightnessAdjustmentSetting(F)V
+HPLcom/android/server/display/DisplayPowerController;->putScreenBrightnessSetting(I)V
+PLcom/android/server/display/DisplayPowerController;->reportedToPolicyToString(I)Ljava/lang/String;
 HSPLcom/android/server/display/DisplayPowerController;->requestPowerState(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;Z)Z
+PLcom/android/server/display/DisplayPowerController;->sendOnProximityNegativeWithWakelock()V
+PLcom/android/server/display/DisplayPowerController;->sendOnProximityPositiveWithWakelock()V
+HSPLcom/android/server/display/DisplayPowerController;->sendOnStateChangedWithWakelock()V
 HSPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerState()V
+HSPLcom/android/server/display/DisplayPowerController;->sendUpdatePowerStateLocked()V
+HSPLcom/android/server/display/DisplayPowerController;->setBrightnessConfiguration(Landroid/hardware/display/BrightnessConfiguration;)V
+PLcom/android/server/display/DisplayPowerController;->setPendingProximityDebounceTime(J)V
 HSPLcom/android/server/display/DisplayPowerController;->setProximitySensorEnabled(Z)V
+HSPLcom/android/server/display/DisplayPowerController;->setReportedScreenState(I)V
+HSPLcom/android/server/display/DisplayPowerController;->setScreenState(I)Z
 HSPLcom/android/server/display/DisplayPowerController;->setScreenState(IZ)Z
-PLcom/android/server/display/DisplayPowerController;->unblockScreenOff()V
+HPLcom/android/server/display/DisplayPowerController;->setTemporaryBrightness(I)V
+PLcom/android/server/display/DisplayPowerController;->skipRampStateToString(I)Ljava/lang/String;
+HPLcom/android/server/display/DisplayPowerController;->unblockScreenOff()V
 HSPLcom/android/server/display/DisplayPowerController;->unblockScreenOn()V
-HSPLcom/android/server/display/DisplayPowerController;->updateBrightness()V
+HSPLcom/android/server/display/DisplayPowerController;->updateAutoBrightnessAdjustment()Z
+HPLcom/android/server/display/DisplayPowerController;->updateBrightness()V
 HSPLcom/android/server/display/DisplayPowerController;->updatePowerState()V
+HSPLcom/android/server/display/DisplayPowerController;->updateUserSetScreenBrightness()Z
+PLcom/android/server/display/DisplayPowerController;->updateWhiteBalance()V
 HSPLcom/android/server/display/DisplayPowerState$1;-><init>(Ljava/lang/String;)V
-PLcom/android/server/display/DisplayPowerState$1;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
-PLcom/android/server/display/DisplayPowerState$1;->setValue(Ljava/lang/Object;F)V
+HPLcom/android/server/display/DisplayPowerState$1;->setValue(Lcom/android/server/display/DisplayPowerState;F)V
+HPLcom/android/server/display/DisplayPowerState$1;->setValue(Ljava/lang/Object;F)V
 HSPLcom/android/server/display/DisplayPowerState$2;-><init>(Ljava/lang/String;)V
 HSPLcom/android/server/display/DisplayPowerState$2;->setValue(Lcom/android/server/display/DisplayPowerState;I)V
 HSPLcom/android/server/display/DisplayPowerState$2;->setValue(Ljava/lang/Object;I)V
+HSPLcom/android/server/display/DisplayPowerState$3;-><init>(Lcom/android/server/display/DisplayPowerState;)V
 HSPLcom/android/server/display/DisplayPowerState$3;->run()V
-PLcom/android/server/display/DisplayPowerState$4;->run()V
-PLcom/android/server/display/DisplayPowerState$PhotonicModulator;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayPowerState$4;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState$4;->run()V
+HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;-><init>(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->dump(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->run()V
 HSPLcom/android/server/display/DisplayPowerState$PhotonicModulator;->setState(II)Z
+HSPLcom/android/server/display/DisplayPowerState;-><clinit>()V
 HSPLcom/android/server/display/DisplayPowerState;-><init>(Lcom/android/server/display/DisplayBlanker;Lcom/android/server/display/ColorFade;)V
-PLcom/android/server/display/DisplayPowerState;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayPowerState;->access$002(Lcom/android/server/display/DisplayPowerState;Z)Z
+HSPLcom/android/server/display/DisplayPowerState;->access$100(Lcom/android/server/display/DisplayPowerState;)I
+HPLcom/android/server/display/DisplayPowerState;->access$1000(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/ColorFade;
+HPLcom/android/server/display/DisplayPowerState;->access$1100()Ljava/lang/String;
+HPLcom/android/server/display/DisplayPowerState;->access$1202(Lcom/android/server/display/DisplayPowerState;Z)Z
+HSPLcom/android/server/display/DisplayPowerState;->access$1300(Lcom/android/server/display/DisplayPowerState;)V
+HSPLcom/android/server/display/DisplayPowerState;->access$1400(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayBlanker;
+HSPLcom/android/server/display/DisplayPowerState;->access$200(Lcom/android/server/display/DisplayPowerState;)F
+HSPLcom/android/server/display/DisplayPowerState;->access$300(Lcom/android/server/display/DisplayPowerState;)I
+HSPLcom/android/server/display/DisplayPowerState;->access$400(Lcom/android/server/display/DisplayPowerState;)Lcom/android/server/display/DisplayPowerState$PhotonicModulator;
+HSPLcom/android/server/display/DisplayPowerState;->access$500()Z
+HSPLcom/android/server/display/DisplayPowerState;->access$602(Lcom/android/server/display/DisplayPowerState;Z)Z
+HSPLcom/android/server/display/DisplayPowerState;->access$700(Lcom/android/server/display/DisplayPowerState;)V
+HPLcom/android/server/display/DisplayPowerState;->access$802(Lcom/android/server/display/DisplayPowerState;Z)Z
+HPLcom/android/server/display/DisplayPowerState;->access$900(Lcom/android/server/display/DisplayPowerState;)Z
+HSPLcom/android/server/display/DisplayPowerState;->dismissColorFade()V
+PLcom/android/server/display/DisplayPowerState;->dismissColorFadeResources()V
+HPLcom/android/server/display/DisplayPowerState;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/DisplayPowerState;->getColorFadeLevel()F
+HSPLcom/android/server/display/DisplayPowerState;->getScreenBrightness()I
+HSPLcom/android/server/display/DisplayPowerState;->getScreenState()I
+HSPLcom/android/server/display/DisplayPowerState;->invokeCleanListenerIfNeeded()V
+HSPLcom/android/server/display/DisplayPowerState;->postScreenUpdateThreadSafe()V
+PLcom/android/server/display/DisplayPowerState;->prepareColorFade(Landroid/content/Context;I)Z
+HPLcom/android/server/display/DisplayPowerState;->scheduleColorFadeDraw()V
+HSPLcom/android/server/display/DisplayPowerState;->scheduleScreenUpdate()V
 HSPLcom/android/server/display/DisplayPowerState;->setColorFadeLevel(F)V
 HSPLcom/android/server/display/DisplayPowerState;->setScreenBrightness(I)V
-PLcom/android/server/display/DisplayPowerState;->setScreenState(I)V
+HPLcom/android/server/display/DisplayPowerState;->setScreenState(I)V
+HSPLcom/android/server/display/DisplayPowerState;->waitUntilClean(Ljava/lang/Runnable;)Z
 HSPLcom/android/server/display/HysteresisLevels;-><init>([I[I[I)V
-PLcom/android/server/display/HysteresisLevels;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/HysteresisLevels;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/HysteresisLevels;->getBrighteningThreshold(F)F
+PLcom/android/server/display/HysteresisLevels;->getDarkeningThreshold(F)F
+HPLcom/android/server/display/HysteresisLevels;->getReferenceLevel(F[F)F
+HSPLcom/android/server/display/HysteresisLevels;->setArrayFormat([IF)[F
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$DisplayConfig;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;-><init>(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$DisplayConfig;)Z
 HSPLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->hasMatchingMode(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Z
 PLcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;-><init>(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;IIZIJLandroid/os/IBinder;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->displayBrightnessToHalBrightness(I)F
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->run()V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayBrightness(I)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice$1;->setDisplayState(I)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$DisplayInfo;[Landroid/view/SurfaceControl$DisplayConfig;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[IILandroid/view/Display$HdrCapabilities;Z)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;JLandroid/view/SurfaceControl$DisplayInfo;[Landroid/view/SurfaceControl$DisplayConfig;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[IIZ)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;J[Landroid/view/SurfaceControl$PhysicalDisplayInfo;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[IIZ)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/IBinder;J[Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[I[IIZ)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$000(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/lights/Light;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$000(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Lcom/android/server/lights/LogicalLight;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$100(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$300(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$400(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Landroid/util/Spline;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->access$500(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)Landroid/util/Spline;
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->applyPendingDisplayDeviceInfoChangesLocked()V
-PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayConfigIdLocked(I)I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayInfoIndexLocked(I)I
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$DisplayConfig;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findDisplayModeRecord(Landroid/view/SurfaceControl$PhysicalDisplayInfo;)Lcom/android/server/display/LocalDisplayAdapter$DisplayModeRecord;
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->findMatchingModeIdLocked(I)I
 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;->hasStableUniqueId()Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->lambda$6tpawjjBXhlj4GSsJjStLZrwDUQ(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Landroid/os/IBinder;I)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->lambda$S4bSIp6drytTEiae37oiY_7m6ng(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->lambda$iXCIox7NAT3NknToX9AEwGueQjs(Lcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayConfigSpecs;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->loadDisplayConfigurationBrightnessMapping()V
+PLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onActiveDisplayConfigChangedLocked(I)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onActivePhysicalDisplayModeChangedLocked(I)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->onOverlayChangedLocked()V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeAsync(Landroid/os/IBinder;I)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeLocked(I)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestColorModeLocked(I)Z
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->requestDisplayStateLocked(II)Ljava/lang/Runnable;
-HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setAllowedDisplayModesLocked([I)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setAutoLowLatencyModeLocked(Z)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayConfigSpecs(IFF[I)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsAsync(Landroid/os/IBinder;Landroid/view/SurfaceControl$DesiredDisplayConfigSpecs;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setGameContentTypeLocked(Z)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->setRequestedColorModeLocked(I)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateActiveModeLocked(I)Z
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateAllowedModesInternalLocked([I)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateAllowedModesLocked([I)V
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateColorModesLocked([II)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDesiredDisplayConfigSpecs(IFF)V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDesiredDisplayConfigSpecsInternalLocked(IFF)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDeviceInfoLocked()V
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayConfigsLocked([Landroid/view/SurfaceControl$DisplayConfig;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayConfigsLocked([Landroid/view/SurfaceControl$DisplayConfig;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[II)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateDisplayProperties([Landroid/view/SurfaceControl$DisplayConfig;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[IILandroid/view/Display$HdrCapabilities;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updateHdrCapabilitiesLocked(Landroid/view/Display$HdrCapabilities;)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;ILandroid/view/SurfaceControl$DesiredDisplayConfigSpecs;[II)Z
 HSPLcom/android/server/display/LocalDisplayAdapter$LocalDisplayDevice;->updatePhysicalDisplayInfoLocked([Landroid/view/SurfaceControl$PhysicalDisplayInfo;I[I[II)Z
+HSPLcom/android/server/display/LocalDisplayAdapter$PhysicalDisplayEventReceiver;-><init>(Lcom/android/server/display/LocalDisplayAdapter;Landroid/os/Looper;)V
+HSPLcom/android/server/display/LocalDisplayAdapter$PhysicalDisplayEventReceiver;->onConfigChanged(JJI)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;)V
+HSPLcom/android/server/display/LocalDisplayAdapter;->access$500(Lcom/android/server/display/LocalDisplayAdapter;)Landroid/util/LongSparseArray;
+HSPLcom/android/server/display/LocalDisplayAdapter;->access$800(Lcom/android/server/display/LocalDisplayAdapter;)Landroid/util/LongSparseArray;
+HSPLcom/android/server/display/LocalDisplayAdapter;->getOverlayContext()Landroid/content/Context;
+HSPLcom/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;-><init>(IILcom/android/server/display/DisplayDevice;)V
 HSPLcom/android/server/display/LogicalDisplay;->configureDisplayLocked(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/display/DisplayDevice;Z)V
-PLcom/android/server/display/LogicalDisplay;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/LogicalDisplay;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/LogicalDisplay;->getAllowedDisplayModesLocked()[I
+HSPLcom/android/server/display/LogicalDisplay;->getDesiredDisplayModeSpecsLocked()Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;
+HSPLcom/android/server/display/LogicalDisplay;->getDisplayIdLocked()I
 HSPLcom/android/server/display/LogicalDisplay;->getDisplayInfoLocked()Landroid/view/DisplayInfo;
+HSPLcom/android/server/display/LogicalDisplay;->getInsets()Landroid/graphics/Rect;
+HSPLcom/android/server/display/LogicalDisplay;->getMaskingInsets(Lcom/android/server/display/DisplayDeviceInfo;)Landroid/graphics/Rect;
+HSPLcom/android/server/display/LogicalDisplay;->getNonOverrideDisplayInfoLocked(Landroid/view/DisplayInfo;)V
+HSPLcom/android/server/display/LogicalDisplay;->getPrimaryDisplayDeviceLocked()Lcom/android/server/display/DisplayDevice;
+PLcom/android/server/display/LogicalDisplay;->getRequestedColorModeLocked()I
+HSPLcom/android/server/display/LogicalDisplay;->hasContentLocked()Z
+HSPLcom/android/server/display/LogicalDisplay;->isValidLocked()Z
+HSPLcom/android/server/display/LogicalDisplay;->setAllowedDisplayModesLocked([I)V
+HSPLcom/android/server/display/LogicalDisplay;->setDesiredDisplayModeSpecsLocked(Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;)V
 HSPLcom/android/server/display/LogicalDisplay;->setDisplayInfoOverrideFromWindowManagerLocked(Landroid/view/DisplayInfo;)Z
+HSPLcom/android/server/display/LogicalDisplay;->setHasContentLocked(Z)V
+HSPLcom/android/server/display/LogicalDisplay;->setRequestedColorModeLocked(I)V
 HSPLcom/android/server/display/LogicalDisplay;->updateLocked(Ljava/util/List;)V
+HSPLcom/android/server/display/OverlayDisplayAdapter$1$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter$1;Landroid/os/Handler;)V
+PLcom/android/server/display/OverlayDisplayAdapter$1$1;->onChange(Z)V
+HSPLcom/android/server/display/OverlayDisplayAdapter$1;-><init>(Lcom/android/server/display/OverlayDisplayAdapter;)V
 HSPLcom/android/server/display/OverlayDisplayAdapter$1;->run()V
+HSPLcom/android/server/display/OverlayDisplayAdapter;-><clinit>()V
+HSPLcom/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;)V
+HSPLcom/android/server/display/OverlayDisplayAdapter;->access$000(Lcom/android/server/display/OverlayDisplayAdapter;)V
 PLcom/android/server/display/OverlayDisplayAdapter;->dumpLocked(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/OverlayDisplayAdapter;->registerLocked()V
 HSPLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevices()V
 HSPLcom/android/server/display/OverlayDisplayAdapter;->updateOverlayDisplayDevicesLocked()V
-PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;-><init>()V
+PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->access$200(Lcom/android/server/display/PersistentDataStore$BrightnessConfigurations;Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)Z
+HPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->getBrightnessConfiguration(I)Landroid/hardware/display/BrightnessConfiguration;
 HSPLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
 PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
 PLcom/android/server/display/PersistentDataStore$BrightnessConfigurations;->setBrightnessConfigurationForUser(Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)Z
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;-><init>(Lcom/android/server/display/PersistentDataStore$1;)V
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;->getColorMode()I
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore$DisplayState;->setColorMode(I)Z
+HSPLcom/android/server/display/PersistentDataStore$Injector;-><init>()V
 PLcom/android/server/display/PersistentDataStore$Injector;->finishWrite(Ljava/io/OutputStream;Z)V
 HSPLcom/android/server/display/PersistentDataStore$Injector;->openRead()Ljava/io/InputStream;
 PLcom/android/server/display/PersistentDataStore$Injector;->startWrite()Ljava/io/OutputStream;
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>()V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;-><init>(Lcom/android/server/display/PersistentDataStore$1;)V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->access$100(Lcom/android/server/display/PersistentDataStore$StableDeviceValues;)Landroid/graphics/Point;
 PLcom/android/server/display/PersistentDataStore$StableDeviceValues;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->getDisplaySize()Landroid/graphics/Point;
 HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/display/PersistentDataStore$StableDeviceValues;->loadIntValue(Lorg/xmlpull/v1/XmlPullParser;)I
 PLcom/android/server/display/PersistentDataStore$StableDeviceValues;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+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;->clearState()V
 PLcom/android/server/display/PersistentDataStore;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/PersistentDataStore;->getBrightnessConfiguration(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;->load()V
 HSPLcom/android/server/display/PersistentDataStore;->loadDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/display/PersistentDataStore;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/display/PersistentDataStore;->loadIfNeeded()V
 HSPLcom/android/server/display/PersistentDataStore;->loadRememberedWifiDisplaysFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
 PLcom/android/server/display/PersistentDataStore;->save()V
+HSPLcom/android/server/display/PersistentDataStore;->saveIfNeeded()V
 PLcom/android/server/display/PersistentDataStore;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/display/RampAnimator$1;->run()V
+PLcom/android/server/display/PersistentDataStore;->setBrightnessConfigurationForUser(Landroid/hardware/display/BrightnessConfiguration;ILjava/lang/String;)V
+HSPLcom/android/server/display/PersistentDataStore;->setColorMode(Lcom/android/server/display/DisplayDevice;I)Z
+PLcom/android/server/display/PersistentDataStore;->setDirty()V
+HSPLcom/android/server/display/RampAnimator$1;-><init>(Lcom/android/server/display/RampAnimator;)V
+HPLcom/android/server/display/RampAnimator$1;->run()V
+HSPLcom/android/server/display/RampAnimator;-><init>(Ljava/lang/Object;Landroid/util/IntProperty;)V
+PLcom/android/server/display/RampAnimator;->access$000(Lcom/android/server/display/RampAnimator;)Landroid/view/Choreographer;
+PLcom/android/server/display/RampAnimator;->access$100(Lcom/android/server/display/RampAnimator;)J
+PLcom/android/server/display/RampAnimator;->access$1000(Lcom/android/server/display/RampAnimator;)Lcom/android/server/display/RampAnimator$Listener;
+PLcom/android/server/display/RampAnimator;->access$102(Lcom/android/server/display/RampAnimator;J)J
+PLcom/android/server/display/RampAnimator;->access$200(Lcom/android/server/display/RampAnimator;)F
+PLcom/android/server/display/RampAnimator;->access$202(Lcom/android/server/display/RampAnimator;F)F
+HPLcom/android/server/display/RampAnimator;->access$300(Lcom/android/server/display/RampAnimator;)I
+PLcom/android/server/display/RampAnimator;->access$400(Lcom/android/server/display/RampAnimator;)I
+HPLcom/android/server/display/RampAnimator;->access$500(Lcom/android/server/display/RampAnimator;)I
+PLcom/android/server/display/RampAnimator;->access$502(Lcom/android/server/display/RampAnimator;I)I
+PLcom/android/server/display/RampAnimator;->access$600(Lcom/android/server/display/RampAnimator;)Ljava/lang/Object;
+PLcom/android/server/display/RampAnimator;->access$700(Lcom/android/server/display/RampAnimator;)Landroid/util/IntProperty;
+PLcom/android/server/display/RampAnimator;->access$800(Lcom/android/server/display/RampAnimator;)V
+PLcom/android/server/display/RampAnimator;->access$902(Lcom/android/server/display/RampAnimator;Z)Z
 HSPLcom/android/server/display/RampAnimator;->animateTo(II)Z
+PLcom/android/server/display/RampAnimator;->cancelAnimationCallback()V
+HSPLcom/android/server/display/RampAnimator;->isAnimating()Z
+HPLcom/android/server/display/RampAnimator;->postAnimationCallback()V
+HSPLcom/android/server/display/RampAnimator;->setListener(Lcom/android/server/display/RampAnimator$Listener;)V
 PLcom/android/server/display/VirtualDisplayAdapter$Callback;-><init>(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/os/Handler;)V
+PLcom/android/server/display/VirtualDisplayAdapter$Callback;->dispatchDisplayPaused()V
+PLcom/android/server/display/VirtualDisplayAdapter$Callback;->dispatchDisplayResumed()V
 PLcom/android/server/display/VirtualDisplayAdapter$Callback;->dispatchDisplayStopped()V
 PLcom/android/server/display/VirtualDisplayAdapter$Callback;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/display/VirtualDisplayAdapter$MediaProjectionCallback;-><init>(Lcom/android/server/display/VirtualDisplayAdapter;Landroid/os/IBinder;)V
+PLcom/android/server/display/VirtualDisplayAdapter$MediaProjectionCallback;->onStop()V
 PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;-><init>(Lcom/android/server/display/VirtualDisplayAdapter;Landroid/os/IBinder;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILcom/android/server/display/VirtualDisplayAdapter$Callback;Ljava/lang/String;I)V
-PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->access$000(Lcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;)I
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->binderDied()V
+HPLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->destroyLocked(Z)V
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->dumpLocked(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->getDisplayDeviceInfoLocked()Lcom/android/server/display/DisplayDeviceInfo;
 PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->hasStableUniqueId()Z
-PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/display/VirtualDisplayAdapter;->createVirtualDisplayLocked(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)Lcom/android/server/display/DisplayDevice;
+HPLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->performTraversalLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->requestDisplayStateLocked(II)Ljava/lang/Runnable;
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->resizeLocked(III)V
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->setDisplayState(Z)V
+PLcom/android/server/display/VirtualDisplayAdapter$VirtualDisplayDevice;->setSurfaceLocked(Landroid/view/Surface;)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;)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;)V
+PLcom/android/server/display/VirtualDisplayAdapter;->access$100(Lcom/android/server/display/VirtualDisplayAdapter;Landroid/os/IBinder;)V
+PLcom/android/server/display/VirtualDisplayAdapter;->access$200(Lcom/android/server/display/VirtualDisplayAdapter;Landroid/os/IBinder;)V
+HPLcom/android/server/display/VirtualDisplayAdapter;->createVirtualDisplayLocked(Landroid/hardware/display/IVirtualDisplayCallback;Landroid/media/projection/IMediaProjection;ILjava/lang/String;Ljava/lang/String;IIILandroid/view/Surface;ILjava/lang/String;)Lcom/android/server/display/DisplayDevice;
 PLcom/android/server/display/VirtualDisplayAdapter;->dumpLocked(Ljava/io/PrintWriter;)V
-PLcom/android/server/display/VirtualDisplayAdapter;->getNextUniqueIndex(Ljava/lang/String;)I
+HPLcom/android/server/display/VirtualDisplayAdapter;->getNextUniqueIndex(Ljava/lang/String;)I
+PLcom/android/server/display/VirtualDisplayAdapter;->handleBinderDiedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/display/VirtualDisplayAdapter;->handleMediaProjectionStoppedLocked(Landroid/os/IBinder;)V
+PLcom/android/server/display/VirtualDisplayAdapter;->lambda$new$0(Ljava/lang/String;Z)Landroid/os/IBinder;
 HSPLcom/android/server/display/VirtualDisplayAdapter;->registerLocked()V
 PLcom/android/server/display/VirtualDisplayAdapter;->releaseVirtualDisplayLocked(Landroid/os/IBinder;)Lcom/android/server/display/DisplayDevice;
+PLcom/android/server/display/VirtualDisplayAdapter;->resizeVirtualDisplayLocked(Landroid/os/IBinder;III)V
 PLcom/android/server/display/VirtualDisplayAdapter;->setVirtualDisplayStateLocked(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/display/color/-$$Lambda$ColorDisplayService$3e7BuPerYILI5JPZm17hU11tDtY;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
-PLcom/android/server/display/color/AppSaturationController$SaturationController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/VirtualDisplayAdapter;->setVirtualDisplaySurfaceLocked(Landroid/os/IBinder;Landroid/view/Surface;)V
+HPLcom/android/server/display/color/-$$Lambda$ColorDisplayService$3e7BuPerYILI5JPZm17hU11tDtY;-><init>(Lcom/android/server/display/color/DisplayTransformManager;Lcom/android/server/display/color/TintController;)V
+HPLcom/android/server/display/color/-$$Lambda$ColorDisplayService$3e7BuPerYILI5JPZm17hU11tDtY;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+HSPLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>()V
+HSPLcom/android/server/display/color/AppSaturationController$SaturationController;-><init>(Lcom/android/server/display/color/AppSaturationController$1;)V
+HSPLcom/android/server/display/color/AppSaturationController$SaturationController;->access$000(Lcom/android/server/display/color/AppSaturationController$SaturationController;Ljava/lang/ref/WeakReference;)Z
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->access$100(Lcom/android/server/display/color/AppSaturationController$SaturationController;I)Z
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->access$200(Lcom/android/server/display/color/AppSaturationController$SaturationController;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/color/AppSaturationController$SaturationController;->addColorTransformController(Ljava/lang/ref/WeakReference;)Z
+HSPLcom/android/server/display/color/AppSaturationController$SaturationController;->clearExpiredReferences()V
+HPLcom/android/server/display/color/AppSaturationController$SaturationController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/color/AppSaturationController$SaturationController;->setSaturationLevel(I)Z
 PLcom/android/server/display/color/AppSaturationController$SaturationController;->updateState()Z
+HSPLcom/android/server/display/color/AppSaturationController;-><clinit>()V
+HSPLcom/android/server/display/color/AppSaturationController;-><init>()V
 HSPLcom/android/server/display/color/AppSaturationController;->addColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
 PLcom/android/server/display/color/AppSaturationController;->computeGrayscaleTransformMatrix(F[F)V
-PLcom/android/server/display/color/AppSaturationController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/color/AppSaturationController;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/color/AppSaturationController;->getOrCreateSaturationControllerLocked(Landroid/util/SparseArray;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
+HSPLcom/android/server/display/color/AppSaturationController;->getOrCreateUserIdMapLocked(Ljava/lang/String;)Landroid/util/SparseArray;
+HSPLcom/android/server/display/color/AppSaturationController;->getSaturationControllerLocked(Ljava/lang/String;I)Lcom/android/server/display/color/AppSaturationController$SaturationController;
 PLcom/android/server/display/color/AppSaturationController;->setSaturationLevel(Ljava/lang/String;II)Z
-HSPLcom/android/server/display/color/ColorDisplayService$2;->onChange(ZLandroid/net/Uri;)V
-HSPLcom/android/server/display/color/ColorDisplayService$3;->onAnimationCancel(Landroid/animation/Animator;)V
-HSPLcom/android/server/display/color/ColorDisplayService$3;->onAnimationEnd(Landroid/animation/Animator;)V
+PLcom/android/server/display/color/ColorDisplayService$1;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+PLcom/android/server/display/color/ColorDisplayService$1;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/display/color/ColorDisplayService$2;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Handler;)V
+PLcom/android/server/display/color/ColorDisplayService$2;->onChange(ZLandroid/net/Uri;)V
+HPLcom/android/server/display/color/ColorDisplayService$3;-><init>(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/TintController;[FLcom/android/server/display/color/DisplayTransformManager;)V
+HPLcom/android/server/display/color/ColorDisplayService$3;->onAnimationCancel(Landroid/animation/Animator;)V
+HPLcom/android/server/display/color/ColorDisplayService$3;->onAnimationEnd(Landroid/animation/Animator;)V
+HSPLcom/android/server/display/color/ColorDisplayService$BinderService;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
 PLcom/android/server/display/color/ColorDisplayService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/display/color/ColorDisplayService$BinderService;->getColorMode()I
-HSPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayAutoMode()I
-HSPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayAutoModeRaw()I
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayAutoMode()I
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayAutoModeRaw()I
 PLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayColorTemperature()I
-PLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayCustomEndTime()Landroid/hardware/display/Time;
-HSPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayCustomStartTime()Landroid/hardware/display/Time;
-PLcom/android/server/display/color/ColorDisplayService$BinderService;->getTransformCapabilities()I
-PLcom/android/server/display/color/ColorDisplayService$BinderService;->isDeviceColorManaged()Z
-HSPLcom/android/server/display/color/ColorDisplayService$BinderService;->isNightDisplayActivated()Z
-PLcom/android/server/display/color/ColorDisplayService$BinderService;->isSaturationActivated()Z
-PLcom/android/server/display/color/ColorDisplayService$BinderService;->setAppSaturationLevel(Ljava/lang/String;I)Z
-HSPLcom/android/server/display/color/ColorDisplayService$BinderService;->setSaturationLevel(I)Z
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayCustomEndTime()Landroid/hardware/display/Time;
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->getNightDisplayCustomStartTime()Landroid/hardware/display/Time;
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->isDeviceColorManaged()Z
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->isDisplayWhiteBalanceEnabled()Z
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->isNightDisplayActivated()Z
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->setAppSaturationLevel(Ljava/lang/String;I)Z
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->setColorMode(I)V
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->setDisplayWhiteBalanceEnabled(Z)Z
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->setNightDisplayActivated(Z)Z
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->setNightDisplayAutoMode(I)Z
+PLcom/android/server/display/color/ColorDisplayService$BinderService;->setNightDisplayColorTemperature(I)Z
+HPLcom/android/server/display/color/ColorDisplayService$BinderService;->setSaturationLevel(I)Z
+HSPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
 HSPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->attachColorTransformController(Ljava/lang/String;ILjava/lang/ref/WeakReference;)Z
+HSPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->isDisplayWhiteBalanceEnabled()Z
+HPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->resetDisplayWhiteBalanceColorTemperature()Z
+HPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->setDisplayWhiteBalanceColorTemperature(I)Z
+HSPLcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;->setDisplayWhiteBalanceListener(Lcom/android/server/display/color/ColorDisplayService$DisplayWhiteBalanceListener;)Z
+HSPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>()V
 HSPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;-><init>(Lcom/android/server/display/color/ColorDisplayService$1;)V
-HSPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;->evaluate(F[F[F)[F
-HSPLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->onActivated(Z)V
+HPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;->evaluate(FLjava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;->evaluate(F[F[F)[F
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode$1;-><init>(Lcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->access$2100(Lcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;)V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->onActivated(Z)V
 PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->onAlarm()V
-HSPLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->onStart()V
-HSPLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->updateActivated()V
-HSPLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->updateNextAlarm(Ljava/lang/Boolean;Ljava/time/LocalDateTime;)V
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->clampNightDisplayColorTemperature(I)I
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getColorTemperatureSetting()I
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getLevel()I
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getMatrix()[F
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->isActivatedSetting()Z
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->onActivated(Z)V
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setActivated(Ljava/lang/Boolean;)V
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setMatrix(I)V
-HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setUp(Landroid/content/Context;Z)V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->onStart()V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->updateActivated()V
+PLcom/android/server/display/color/ColorDisplayService$CustomNightDisplayAutoMode;->updateNextAlarm(Ljava/lang/Boolean;Ljava/time/LocalDateTime;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayAutoMode;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayAutoMode;-><init>(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$1;)V
+HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+HSPLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;-><init>(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$1;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->clampNightDisplayColorTemperature(I)I
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getColorTemperature()I
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getColorTemperatureSetting()I
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getLevel()I
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->getMatrix()[F
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->isActivatedSetting()Z
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->isAvailable(Landroid/content/Context;)Z
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->onActivated(Z)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->onColorTemperatureChanged(I)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setActivated(Ljava/lang/Boolean;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setActivated(Ljava/lang/Boolean;Ljava/time/LocalDateTime;)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setColorTemperature(I)Z
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setMatrix(I)V
+PLcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;->setUp(Landroid/content/Context;Z)V
+HSPLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;)V
+HSPLcom/android/server/display/color/ColorDisplayService$TintHandler;-><init>(Lcom/android/server/display/color/ColorDisplayService;Landroid/os/Looper;Lcom/android/server/display/color/ColorDisplayService$1;)V
 HSPLcom/android/server/display/color/ColorDisplayService$TintHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->onActivated(Z)V
-HSPLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->onStart()V
+HPLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;-><init>()V
+PLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;->getMax()[F
+PLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;->getMin()[F
+HPLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;->ofMatrix(Lcom/android/server/display/color/ColorDisplayService$ColorMatrixEvaluator;[Ljava/lang/Object;)Lcom/android/server/display/color/ColorDisplayService$TintValueAnimator;
+HPLcom/android/server/display/color/ColorDisplayService$TintValueAnimator;->updateMinMaxComponents()V
+PLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;-><init>(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->onActivated(Z)V
+PLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->onStart()V
 PLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->onTwilightStateChanged(Lcom/android/server/twilight/TwilightState;)V
-HSPLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->updateActivated(Lcom/android/server/twilight/TwilightState;)V
+PLcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;->updateActivated(Lcom/android/server/twilight/TwilightState;)V
+HSPLcom/android/server/display/color/ColorDisplayService;-><clinit>()V
 HSPLcom/android/server/display/color/ColorDisplayService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/display/color/ColorDisplayService;->applyTint(Lcom/android/server/display/color/TintController;Z)V
+PLcom/android/server/display/color/ColorDisplayService;->access$1000(Lcom/android/server/display/color/ColorDisplayService;I)V
+HPLcom/android/server/display/color/ColorDisplayService;->access$1100(Lcom/android/server/display/color/ColorDisplayService;)Landroid/hardware/display/Time;
+PLcom/android/server/display/color/ColorDisplayService;->access$1300(Lcom/android/server/display/color/ColorDisplayService;)Landroid/hardware/display/Time;
+PLcom/android/server/display/color/ColorDisplayService;->access$1500(Lcom/android/server/display/color/ColorDisplayService;)I
+PLcom/android/server/display/color/ColorDisplayService;->access$1600(Lcom/android/server/display/color/ColorDisplayService;I)V
+PLcom/android/server/display/color/ColorDisplayService;->access$2200(Lcom/android/server/display/color/ColorDisplayService;)Ljava/time/LocalDateTime;
+PLcom/android/server/display/color/ColorDisplayService;->access$2300(Lcom/android/server/display/color/ColorDisplayService;Ljava/lang/Class;)Ljava/lang/Object;
+PLcom/android/server/display/color/ColorDisplayService;->access$2400(Lcom/android/server/display/color/ColorDisplayService;)Landroid/os/Handler;
+PLcom/android/server/display/color/ColorDisplayService;->access$2500(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/ColorDisplayService$NightDisplayAutoMode;
+HSPLcom/android/server/display/color/ColorDisplayService;->access$2602(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/ColorDisplayService$DisplayWhiteBalanceListener;)Lcom/android/server/display/color/ColorDisplayService$DisplayWhiteBalanceListener;
+HSPLcom/android/server/display/color/ColorDisplayService;->access$2700(Lcom/android/server/display/color/ColorDisplayService;)Z
+HSPLcom/android/server/display/color/ColorDisplayService;->access$2800(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/AppSaturationController;
+PLcom/android/server/display/color/ColorDisplayService;->access$2900(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/TintController;
+PLcom/android/server/display/color/ColorDisplayService;->access$300(Lcom/android/server/display/color/ColorDisplayService;)I
+HPLcom/android/server/display/color/ColorDisplayService;->access$3000(Lcom/android/server/display/color/ColorDisplayService;Lcom/android/server/display/color/TintController;Z)V
+PLcom/android/server/display/color/ColorDisplayService;->access$3100(Lcom/android/server/display/color/ColorDisplayService;I)V
+PLcom/android/server/display/color/ColorDisplayService;->access$3200(Lcom/android/server/display/color/ColorDisplayService;)Z
+PLcom/android/server/display/color/ColorDisplayService;->access$3300(Lcom/android/server/display/color/ColorDisplayService;Ljava/lang/String;I)Z
+PLcom/android/server/display/color/ColorDisplayService;->access$3500(Lcom/android/server/display/color/ColorDisplayService;I)Z
+PLcom/android/server/display/color/ColorDisplayService;->access$3600(Lcom/android/server/display/color/ColorDisplayService;)I
+PLcom/android/server/display/color/ColorDisplayService;->access$3900(Lcom/android/server/display/color/ColorDisplayService;Z)Z
+PLcom/android/server/display/color/ColorDisplayService;->access$400(Landroid/content/ContentResolver;I)Z
+PLcom/android/server/display/color/ColorDisplayService;->access$4000(Lcom/android/server/display/color/ColorDisplayService;Ljava/io/PrintWriter;)V
+PLcom/android/server/display/color/ColorDisplayService;->access$700(Lcom/android/server/display/color/ColorDisplayService;)V
+PLcom/android/server/display/color/ColorDisplayService;->access$800(Lcom/android/server/display/color/ColorDisplayService;)Lcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;
+PLcom/android/server/display/color/ColorDisplayService;->access$900(Lcom/android/server/display/color/ColorDisplayService;)I
+HPLcom/android/server/display/color/ColorDisplayService;->applyTint(Lcom/android/server/display/color/TintController;Z)V
 PLcom/android/server/display/color/ColorDisplayService;->dumpInternal(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/display/color/ColorDisplayService;->getColorModeInternal()I
-HSPLcom/android/server/display/color/ColorDisplayService;->getCurrentColorModeFromSystemProperties()I
-HSPLcom/android/server/display/color/ColorDisplayService;->getDateTimeAfter(Ljava/time/LocalTime;Ljava/time/LocalDateTime;)Ljava/time/LocalDateTime;
-HSPLcom/android/server/display/color/ColorDisplayService;->getDateTimeBefore(Ljava/time/LocalTime;Ljava/time/LocalDateTime;)Ljava/time/LocalDateTime;
-HSPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayAutoModeInternal()I
-HSPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayCustomEndTimeInternal()Landroid/hardware/display/Time;
-HSPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayCustomStartTimeInternal()Landroid/hardware/display/Time;
-HSPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayLastActivatedTimeSetting()Ljava/time/LocalDateTime;
-PLcom/android/server/display/color/ColorDisplayService;->getTransformCapabilitiesInternal()I
-HSPLcom/android/server/display/color/ColorDisplayService;->onAccessibilityDaltonizerChanged()V
-HSPLcom/android/server/display/color/ColorDisplayService;->onAccessibilityInversionChanged()V
+PLcom/android/server/display/color/ColorDisplayService;->getColorModeInternal()I
+PLcom/android/server/display/color/ColorDisplayService;->getCompositionColorSpace(I)I
+PLcom/android/server/display/color/ColorDisplayService;->getCurrentColorModeFromSystemProperties()I
+PLcom/android/server/display/color/ColorDisplayService;->getDateTimeAfter(Ljava/time/LocalTime;Ljava/time/LocalDateTime;)Ljava/time/LocalDateTime;
+PLcom/android/server/display/color/ColorDisplayService;->getDateTimeBefore(Ljava/time/LocalTime;Ljava/time/LocalDateTime;)Ljava/time/LocalDateTime;
+HPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayAutoModeInternal()I
+HPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayAutoModeRawInternal()I
+HPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayCustomEndTimeInternal()Landroid/hardware/display/Time;
+HPLcom/android/server/display/color/ColorDisplayService;->getNightDisplayCustomStartTimeInternal()Landroid/hardware/display/Time;
+PLcom/android/server/display/color/ColorDisplayService;->getNightDisplayLastActivatedTimeSetting()Ljava/time/LocalDateTime;
+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;->isDeviceColorManagedInternal()Z
+HSPLcom/android/server/display/color/ColorDisplayService;->isDisplayWhiteBalanceSettingEnabled()Z
+HSPLcom/android/server/display/color/ColorDisplayService;->isUserSetupCompleted(Landroid/content/ContentResolver;I)Z
+HPLcom/android/server/display/color/ColorDisplayService;->lambda$applyTint$0(Lcom/android/server/display/color/DisplayTransformManager;Lcom/android/server/display/color/TintController;Landroid/animation/ValueAnimator;)V
+PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityDaltonizerChanged()V
+PLcom/android/server/display/color/ColorDisplayService;->onAccessibilityInversionChanged()V
 HSPLcom/android/server/display/color/ColorDisplayService;->onBootPhase(I)V
-HSPLcom/android/server/display/color/ColorDisplayService;->onDisplayColorModeChanged(I)V
-HSPLcom/android/server/display/color/ColorDisplayService;->onNightDisplayAutoModeChanged(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onDisplayColorModeChanged(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onNightDisplayAutoModeChanged(I)V
 HSPLcom/android/server/display/color/ColorDisplayService;->onStart()V
 HSPLcom/android/server/display/color/ColorDisplayService;->onStartUser(I)V
+PLcom/android/server/display/color/ColorDisplayService;->onStopUser(I)V
 HSPLcom/android/server/display/color/ColorDisplayService;->onUserChanged(I)V
-HSPLcom/android/server/display/color/ColorDisplayService;->setUp()V
-HSPLcom/android/server/display/color/ColorDisplayService;->updateDisplayWhiteBalanceStatus()V
+PLcom/android/server/display/color/ColorDisplayService;->setAppSaturationLevelInternal(Ljava/lang/String;I)Z
+PLcom/android/server/display/color/ColorDisplayService;->setColorModeInternal(I)V
+PLcom/android/server/display/color/ColorDisplayService;->setDisplayWhiteBalanceSettingEnabled(Z)Z
+PLcom/android/server/display/color/ColorDisplayService;->setNightDisplayAutoModeInternal(I)Z
+PLcom/android/server/display/color/ColorDisplayService;->setUp()V
+PLcom/android/server/display/color/ColorDisplayService;->setUpDisplayCompositionColorSpaces(Landroid/content/res/Resources;)V
+PLcom/android/server/display/color/ColorDisplayService;->updateDisplayWhiteBalanceStatus()V
+HSPLcom/android/server/display/color/DisplayTransformManager;-><clinit>()V
 HSPLcom/android/server/display/color/DisplayTransformManager;-><init>()V
-HSPLcom/android/server/display/color/DisplayTransformManager;->applyColorMatrix([F)V
-HSPLcom/android/server/display/color/DisplayTransformManager;->applySaturation(F)V
-HSPLcom/android/server/display/color/DisplayTransformManager;->computeColorMatrixLocked()[F
-HSPLcom/android/server/display/color/DisplayTransformManager;->getColorMatrix(I)[F
-PLcom/android/server/display/color/DisplayTransformManager;->isDeviceColorManaged()Z
-HSPLcom/android/server/display/color/DisplayTransformManager;->setColorMatrix(I[F)V
-HSPLcom/android/server/display/color/DisplayTransformManager;->setColorMode(I[F)Z
-HSPLcom/android/server/display/color/DisplayTransformManager;->setDaltonizerMode(I)V
-HSPLcom/android/server/display/color/DisplayTransformManager;->setDisplayColor(I)V
-HSPLcom/android/server/display/color/DisplayTransformManager;->updateConfiguration()V
-HSPLcom/android/server/display/color/DisplayWhiteBalanceTintController;->getLevel()I
-HSPLcom/android/server/display/color/DisplayWhiteBalanceTintController;->getMatrix()[F
-HSPLcom/android/server/display/color/GlobalSaturationTintController;->getLevel()I
-HSPLcom/android/server/display/color/GlobalSaturationTintController;->getMatrix()[F
+HPLcom/android/server/display/color/DisplayTransformManager;->applyColorMatrix([F)V
+PLcom/android/server/display/color/DisplayTransformManager;->applySaturation(F)V
+HPLcom/android/server/display/color/DisplayTransformManager;->computeColorMatrixLocked()[F
+HPLcom/android/server/display/color/DisplayTransformManager;->getColorMatrix(I)[F
+HPLcom/android/server/display/color/DisplayTransformManager;->isDeviceColorManaged()Z
+PLcom/android/server/display/color/DisplayTransformManager;->needsLinearColorMatrix()Z
+PLcom/android/server/display/color/DisplayTransformManager;->needsLinearColorMatrix(I)Z
+HPLcom/android/server/display/color/DisplayTransformManager;->setColorMatrix(I[F)V
+PLcom/android/server/display/color/DisplayTransformManager;->setColorMode(I[FI)Z
+PLcom/android/server/display/color/DisplayTransformManager;->setDaltonizerMode(I)V
+PLcom/android/server/display/color/DisplayTransformManager;->setDisplayColor(II)V
+PLcom/android/server/display/color/DisplayTransformManager;->updateConfiguration()V
+HSPLcom/android/server/display/color/DisplayWhiteBalanceTintController;-><init>()V
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->getDisplayColorSpaceFromSurfaceControl()Landroid/graphics/ColorSpace$Rgb;
+HPLcom/android/server/display/color/DisplayWhiteBalanceTintController;->getLevel()I
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->getMatrix()[F
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->isAvailable(Landroid/content/Context;)Z
+HPLcom/android/server/display/color/DisplayWhiteBalanceTintController;->isColorMatrixCoeffValid(F)Z
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->isColorMatrixValid([F)Z
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->makeRgbColorSpaceFromXYZ([F[F)Landroid/graphics/ColorSpace$Rgb;
+HPLcom/android/server/display/color/DisplayWhiteBalanceTintController;->setMatrix(I)V
+PLcom/android/server/display/color/DisplayWhiteBalanceTintController;->setUp(Landroid/content/Context;Z)V
+HSPLcom/android/server/display/color/GlobalSaturationTintController;-><init>()V
+HPLcom/android/server/display/color/GlobalSaturationTintController;->getLevel()I
+PLcom/android/server/display/color/GlobalSaturationTintController;->getMatrix()[F
 PLcom/android/server/display/color/GlobalSaturationTintController;->isAvailable(Landroid/content/Context;)Z
-HSPLcom/android/server/display/color/GlobalSaturationTintController;->setMatrix(I)V
-HSPLcom/android/server/display/color/TintController;->cancelAnimator()V
-HSPLcom/android/server/display/color/TintController;->getAnimator()Landroid/animation/ValueAnimator;
-PLcom/android/server/display/color/TintController;->isActivated()Z
+HPLcom/android/server/display/color/GlobalSaturationTintController;->setMatrix(I)V
+HSPLcom/android/server/display/color/TintController;-><init>()V
+PLcom/android/server/display/color/TintController;->cancelAnimator()V
+HSPLcom/android/server/display/color/TintController;->isActivated()Z
 PLcom/android/server/display/color/TintController;->isActivatedStateNotSet()Z
-HSPLcom/android/server/display/color/TintController;->setAnimator(Landroid/animation/ValueAnimator;)V
+HPLcom/android/server/display/color/TintController;->matrixToString([FI)Ljava/lang/String;
+PLcom/android/server/display/color/TintController;->setActivated(Ljava/lang/Boolean;)V
+PLcom/android/server/display/color/TintController;->setAnimator(Lcom/android/server/display/color/ColorDisplayService$TintValueAnimator;)V
+HSPLcom/android/server/display/config/DisplayConfiguration;-><init>()V
+HSPLcom/android/server/display/config/DisplayConfiguration;->getScreenBrightnessMap()Lcom/android/server/display/config/NitsMap;
+HSPLcom/android/server/display/config/DisplayConfiguration;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/display/config/DisplayConfiguration;
+HSPLcom/android/server/display/config/DisplayConfiguration;->setScreenBrightnessMap(Lcom/android/server/display/config/NitsMap;)V
+HSPLcom/android/server/display/config/NitsMap;-><init>()V
+HSPLcom/android/server/display/config/NitsMap;->getHighBrightnessStart()Ljava/math/BigDecimal;
+HSPLcom/android/server/display/config/NitsMap;->getPoint()Ljava/util/List;
+HSPLcom/android/server/display/config/NitsMap;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/display/config/NitsMap;
+HSPLcom/android/server/display/config/Point;-><init>()V
+HSPLcom/android/server/display/config/Point;->getNits()Ljava/math/BigDecimal;
+HSPLcom/android/server/display/config/Point;->getValue()Ljava/math/BigDecimal;
+HSPLcom/android/server/display/config/Point;->read(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/display/config/Point;
+HSPLcom/android/server/display/config/Point;->setNits(Ljava/math/BigDecimal;)V
+HSPLcom/android/server/display/config/Point;->setValue(Ljava/math/BigDecimal;)V
+HSPLcom/android/server/display/config/XmlParser;->read(Ljava/io/InputStream;)Lcom/android/server/display/config/DisplayConfiguration;
+HSPLcom/android/server/display/config/XmlParser;->readText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;-><init>(Ljava/lang/String;IF)V
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->antiderivative(F)F
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->calculateIntegral(FF)F
+PLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->filter(JLcom/android/server/display/utils/RollingBuffer;)F
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->getWeights(JLcom/android/server/display/utils/RollingBuffer;)[F
+HSPLcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;->validateArguments(F)V
+HSPLcom/android/server/display/utils/AmbientFilter;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/display/utils/AmbientFilter;->addValue(JF)Z
+PLcom/android/server/display/utils/AmbientFilter;->clear()V
+PLcom/android/server/display/utils/AmbientFilter;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/utils/AmbientFilter;->getEstimate(J)F
+HSPLcom/android/server/display/utils/AmbientFilter;->truncateOldValues(J)V
+HSPLcom/android/server/display/utils/AmbientFilter;->validateArguments(I)V
+HSPLcom/android/server/display/utils/AmbientFilterFactory;->createAmbientFilter(Ljava/lang/String;IF)Lcom/android/server/display/utils/AmbientFilter;
+HSPLcom/android/server/display/utils/AmbientFilterFactory;->createBrightnessFilter(Ljava/lang/String;Landroid/content/res/Resources;)Lcom/android/server/display/utils/AmbientFilter;
+HSPLcom/android/server/display/utils/AmbientFilterFactory;->createColorTemperatureFilter(Ljava/lang/String;Landroid/content/res/Resources;)Lcom/android/server/display/utils/AmbientFilter;
+HSPLcom/android/server/display/utils/AmbientFilterFactory;->getFloat(Landroid/content/res/Resources;I)F
+HSPLcom/android/server/display/utils/History;-><init>(I)V
+HSPLcom/android/server/display/utils/History;-><init>(ILjava/time/Clock;)V
+HPLcom/android/server/display/utils/History;->add(F)V
+HPLcom/android/server/display/utils/History;->toString()Ljava/lang/String;
+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;
+HSPLcom/android/server/display/utils/RollingBuffer;-><init>()V
+HSPLcom/android/server/display/utils/RollingBuffer;->add(JF)V
+HSPLcom/android/server/display/utils/RollingBuffer;->clear()V
+PLcom/android/server/display/utils/RollingBuffer;->expandBuffer()V
+HPLcom/android/server/display/utils/RollingBuffer;->getLatestIndexBefore(J)I
+HSPLcom/android/server/display/utils/RollingBuffer;->getTime(I)J
+HSPLcom/android/server/display/utils/RollingBuffer;->getValue(I)F
+HSPLcom/android/server/display/utils/RollingBuffer;->isEmpty()Z
+HSPLcom/android/server/display/utils/RollingBuffer;->offsetOf(I)I
+HSPLcom/android/server/display/utils/RollingBuffer;->size()I
+HPLcom/android/server/display/utils/RollingBuffer;->toString()Ljava/lang/String;
+HSPLcom/android/server/display/utils/RollingBuffer;->truncate(J)V
+HSPLcom/android/server/display/whitebalance/AmbientSensor$1;-><init>(Lcom/android/server/display/whitebalance/AmbientSensor;)V
+HPLcom/android/server/display/whitebalance/AmbientSensor$1;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
+HPLcom/android/server/display/whitebalance/AmbientSensor$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+PLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;->setCallbacks(Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor$Callbacks;)Z
+PLcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;->update(F)V
 HSPLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;-><init>(Landroid/os/Handler;Landroid/hardware/SensorManager;Ljava/lang/String;I)V
+PLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;->setCallbacks(Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor$Callbacks;)Z
+HPLcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;->update(F)V
 HSPLcom/android/server/display/whitebalance/AmbientSensor;-><init>(Ljava/lang/String;Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+HPLcom/android/server/display/whitebalance/AmbientSensor;->access$000(Lcom/android/server/display/whitebalance/AmbientSensor;F)V
+PLcom/android/server/display/whitebalance/AmbientSensor;->disable()Z
+PLcom/android/server/display/whitebalance/AmbientSensor;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/whitebalance/AmbientSensor;->enable()Z
+HPLcom/android/server/display/whitebalance/AmbientSensor;->handleNewEvent(F)V
+HPLcom/android/server/display/whitebalance/AmbientSensor;->setEnabled(Z)Z
+HPLcom/android/server/display/whitebalance/AmbientSensor;->startListening()V
+HPLcom/android/server/display/whitebalance/AmbientSensor;->stopListening()V
+HSPLcom/android/server/display/whitebalance/AmbientSensor;->validateArguments(Landroid/os/Handler;Landroid/hardware/SensorManager;I)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;-><init>(Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;Lcom/android/server/display/utils/AmbientFilter;Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;Lcom/android/server/display/utils/AmbientFilter;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;[F[FF[F[FF[F[F)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->disable()Z
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->enable()Z
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->onAmbientBrightnessChanged(F)V
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->onAmbientColorTemperatureChanged(F)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->setCallbacks(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController$Callbacks;)Z
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->setEnabled(Z)Z
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->updateAmbientColorTemperature()V
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->updateDisplayColorTemperature()V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceController;->validateArguments(Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;Lcom/android/server/display/utils/AmbientFilter;Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;Lcom/android/server/display/utils/AmbientFilter;Lcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;)V
 HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->create(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
-HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createBrightnessFilter(Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientFilter;
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createBrightnessSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createColorTemperatureSensor(Landroid/os/Handler;Landroid/hardware/SensorManager;Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->createThrottler(Landroid/content/res/Resources;)Lcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->getFloat(Landroid/content/res/Resources;I)F
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;->getFloatArray(Landroid/content/res/Resources;I)[F
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings$DisplayWhiteBalanceSettingsHandler;-><init>(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;Landroid/os/Looper;)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings$DisplayWhiteBalanceSettingsHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->access$000(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;Z)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->access$100(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;)Lcom/android/server/display/color/ColorDisplayService$ColorDisplayServiceInternal;
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->access$200(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;Z)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->isEnabled()Z
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->onDisplayWhiteBalanceStatusChanged(Z)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->setActive(Z)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->setCallbacks(Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController$Callbacks;)Z
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->setEnabled(Z)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;->validateArguments(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;-><init>(II[F[F[F)V
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->clear()V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->computeThresholds(F)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->getHighestIndexBefore(F[F)I
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->isValidMapping([F[F)Z
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->throttle(F)Z
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->tooClose(F)Z
+HPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->tooSoon(F)Z
+HSPLcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;->validateArguments(FF[F[F[F)V
+HPLcom/android/server/dreams/-$$Lambda$DreamManagerService$f7cEVKQvPKMm_Ir9dq0e6PSOkX8;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
 PLcom/android/server/dreams/-$$Lambda$DreamManagerService$f7cEVKQvPKMm_Ir9dq0e6PSOkX8;->run()V
-PLcom/android/server/dreams/-$$Lambda$gXC4nM2f5GMCBX0ED45DCQQjqv0;->run()V
-PLcom/android/server/dreams/DreamController$1;->run()V
-PLcom/android/server/dreams/DreamController$3;->run()V
+HPLcom/android/server/dreams/-$$Lambda$gXC4nM2f5GMCBX0ED45DCQQjqv0;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;)V
+HPLcom/android/server/dreams/-$$Lambda$gXC4nM2f5GMCBX0ED45DCQQjqv0;->run()V
+HSPLcom/android/server/dreams/DreamController$1;-><init>(Lcom/android/server/dreams/DreamController;)V
+HPLcom/android/server/dreams/DreamController$1;->run()V
+HSPLcom/android/server/dreams/DreamController$2;-><init>(Lcom/android/server/dreams/DreamController;)V
+PLcom/android/server/dreams/DreamController$2;->run()V
+HPLcom/android/server/dreams/DreamController$3;-><init>(Lcom/android/server/dreams/DreamController;Lcom/android/server/dreams/DreamController$DreamRecord;)V
+HPLcom/android/server/dreams/DreamController$3;->run()V
+PLcom/android/server/dreams/DreamController$DreamRecord$1;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;)V
 PLcom/android/server/dreams/DreamController$DreamRecord$1;->run()V
-PLcom/android/server/dreams/DreamController$DreamRecord$2;->run()V
+HPLcom/android/server/dreams/DreamController$DreamRecord$2;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;Landroid/os/IBinder;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord$2;->run()V
+PLcom/android/server/dreams/DreamController$DreamRecord$3;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;)V
 PLcom/android/server/dreams/DreamController$DreamRecord$3;->run()V
-PLcom/android/server/dreams/DreamController$DreamRecord$4;->sendResult(Landroid/os/Bundle;)V
-PLcom/android/server/dreams/DreamController$DreamRecord;-><init>(Lcom/android/server/dreams/DreamController;Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord$4;-><init>(Lcom/android/server/dreams/DreamController$DreamRecord;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord$4;->sendResult(Landroid/os/Bundle;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord;-><init>(Lcom/android/server/dreams/DreamController;Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
 PLcom/android/server/dreams/DreamController$DreamRecord;->binderDied()V
-PLcom/android/server/dreams/DreamController$DreamRecord;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/dreams/DreamController$DreamRecord;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HPLcom/android/server/dreams/DreamController$DreamRecord;->releaseWakeLockIfNeeded()V
 HSPLcom/android/server/dreams/DreamController;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/dreams/DreamController$Listener;)V
-PLcom/android/server/dreams/DreamController;->attach(Landroid/service/dreams/IDreamService;)V
-PLcom/android/server/dreams/DreamController;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/dreams/DreamController;->startDream(Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
-PLcom/android/server/dreams/DreamController;->stopDream(Z)V
+PLcom/android/server/dreams/DreamController;->access$000(Lcom/android/server/dreams/DreamController;)Lcom/android/server/dreams/DreamController$DreamRecord;
+PLcom/android/server/dreams/DreamController;->access$100(Lcom/android/server/dreams/DreamController;)Lcom/android/server/dreams/DreamController$Listener;
+PLcom/android/server/dreams/DreamController;->access$200(Lcom/android/server/dreams/DreamController;)Landroid/os/Handler;
+PLcom/android/server/dreams/DreamController;->access$300(Lcom/android/server/dreams/DreamController;Landroid/service/dreams/IDreamService;)V
+HPLcom/android/server/dreams/DreamController;->attach(Landroid/service/dreams/IDreamService;)V
+HPLcom/android/server/dreams/DreamController;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/dreams/DreamController;->startDream(Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
+HPLcom/android/server/dreams/DreamController;->stopDream(Z)V
+HSPLcom/android/server/dreams/DreamManagerService$1;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
 HSPLcom/android/server/dreams/DreamManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/dreams/DreamManagerService$2;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
 PLcom/android/server/dreams/DreamManagerService$2;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/dreams/DreamManagerService$3;->run()V
+HPLcom/android/server/dreams/DreamManagerService$3;-><init>(Lcom/android/server/dreams/DreamManagerService;Z)V
+HPLcom/android/server/dreams/DreamManagerService$3;->run()V
+HSPLcom/android/server/dreams/DreamManagerService$4;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
 PLcom/android/server/dreams/DreamManagerService$4;->onDreamStopped(Landroid/os/Binder;)V
-PLcom/android/server/dreams/DreamManagerService$BinderService;->awaken()V
+HSPLcom/android/server/dreams/DreamManagerService$5;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Handler;)V
+PLcom/android/server/dreams/DreamManagerService$5;->onChange(Z)V
+HSPLcom/android/server/dreams/DreamManagerService$6;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+HPLcom/android/server/dreams/DreamManagerService$6;->run()V
+HSPLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+HSPLcom/android/server/dreams/DreamManagerService$BinderService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$1;)V
+HPLcom/android/server/dreams/DreamManagerService$BinderService;->awaken()V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->dream()V
 PLcom/android/server/dreams/DreamManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/dreams/DreamManagerService$BinderService;->finishSelf(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/dreams/DreamManagerService$BinderService;->forceAmbientDisplayEnabled(Z)V
+HPLcom/android/server/dreams/DreamManagerService$BinderService;->finishSelf(Landroid/os/IBinder;Z)V
+PLcom/android/server/dreams/DreamManagerService$BinderService;->forceAmbientDisplayEnabled(Z)V
 PLcom/android/server/dreams/DreamManagerService$BinderService;->getDefaultDreamComponent()Landroid/content/ComponentName;
-PLcom/android/server/dreams/DreamManagerService$BinderService;->getDreamComponents()[Landroid/content/ComponentName;
-PLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z
-PLcom/android/server/dreams/DreamManagerService$BinderService;->startDozing(Landroid/os/IBinder;II)V
+HPLcom/android/server/dreams/DreamManagerService$BinderService;->getDreamComponents()[Landroid/content/ComponentName;
+HPLcom/android/server/dreams/DreamManagerService$BinderService;->isDreaming()Z
+PLcom/android/server/dreams/DreamManagerService$BinderService;->setDreamComponents([Landroid/content/ComponentName;)V
+HPLcom/android/server/dreams/DreamManagerService$BinderService;->startDozing(Landroid/os/IBinder;II)V
+HSPLcom/android/server/dreams/DreamManagerService$DreamHandler;-><init>(Lcom/android/server/dreams/DreamManagerService;Landroid/os/Looper;)V
+HSPLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;)V
+HSPLcom/android/server/dreams/DreamManagerService$LocalService;-><init>(Lcom/android/server/dreams/DreamManagerService;Lcom/android/server/dreams/DreamManagerService$1;)V
 HSPLcom/android/server/dreams/DreamManagerService$LocalService;->isDreaming()Z
-PLcom/android/server/dreams/DreamManagerService$LocalService;->startDream(Z)V
-PLcom/android/server/dreams/DreamManagerService$LocalService;->stopDream(Z)V
+HPLcom/android/server/dreams/DreamManagerService$LocalService;->startDream(Z)V
+HPLcom/android/server/dreams/DreamManagerService$LocalService;->stopDream(Z)V
 HSPLcom/android/server/dreams/DreamManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/dreams/DreamManagerService;->checkPermission(Ljava/lang/String;)V
-PLcom/android/server/dreams/DreamManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+HPLcom/android/server/dreams/DreamManagerService;->access$1000(Lcom/android/server/dreams/DreamManagerService;Ljava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService;->access$1100(Lcom/android/server/dreams/DreamManagerService;I)[Landroid/content/ComponentName;
+PLcom/android/server/dreams/DreamManagerService;->access$1200(Lcom/android/server/dreams/DreamManagerService;I[Landroid/content/ComponentName;)V
+PLcom/android/server/dreams/DreamManagerService;->access$1300(Lcom/android/server/dreams/DreamManagerService;I)Landroid/content/ComponentName;
+HSPLcom/android/server/dreams/DreamManagerService;->access$1400(Lcom/android/server/dreams/DreamManagerService;)Z
+PLcom/android/server/dreams/DreamManagerService;->access$1500(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService;->access$1700(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService;->access$1800(Lcom/android/server/dreams/DreamManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/dreams/DreamManagerService;->access$1900(Lcom/android/server/dreams/DreamManagerService;Landroid/os/IBinder;II)V
+HSPLcom/android/server/dreams/DreamManagerService;->access$200(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService;->access$2100(Lcom/android/server/dreams/DreamManagerService;Z)V
+PLcom/android/server/dreams/DreamManagerService;->access$2200(Lcom/android/server/dreams/DreamManagerService;Z)V
+PLcom/android/server/dreams/DreamManagerService;->access$2300(Lcom/android/server/dreams/DreamManagerService;Z)V
+HPLcom/android/server/dreams/DreamManagerService;->access$2400(Lcom/android/server/dreams/DreamManagerService;)Landroid/content/ComponentName;
+HPLcom/android/server/dreams/DreamManagerService;->access$2500(Lcom/android/server/dreams/DreamManagerService;)Z
+HPLcom/android/server/dreams/DreamManagerService;->access$2600(Lcom/android/server/dreams/DreamManagerService;)Landroid/content/ComponentName;
+HSPLcom/android/server/dreams/DreamManagerService;->access$300(Lcom/android/server/dreams/DreamManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/dreams/DreamManagerService;->access$400(Lcom/android/server/dreams/DreamManagerService;Z)V
+PLcom/android/server/dreams/DreamManagerService;->access$500(Lcom/android/server/dreams/DreamManagerService;)Lcom/android/server/dreams/DreamController;
+PLcom/android/server/dreams/DreamManagerService;->access$600(Lcom/android/server/dreams/DreamManagerService;)Landroid/os/Binder;
+PLcom/android/server/dreams/DreamManagerService;->access$700(Lcom/android/server/dreams/DreamManagerService;)V
+PLcom/android/server/dreams/DreamManagerService;->access$800(Lcom/android/server/dreams/DreamManagerService;)Landroid/content/Context;
+PLcom/android/server/dreams/DreamManagerService;->access$900(Lcom/android/server/dreams/DreamManagerService;Ljava/io/PrintWriter;)V
+HPLcom/android/server/dreams/DreamManagerService;->checkPermission(Ljava/lang/String;)V
+PLcom/android/server/dreams/DreamManagerService;->chooseDreamForUser(ZI)Landroid/content/ComponentName;
+HPLcom/android/server/dreams/DreamManagerService;->cleanupDreamLocked()V
+PLcom/android/server/dreams/DreamManagerService;->componentsFromString(Ljava/lang/String;)[Landroid/content/ComponentName;
+PLcom/android/server/dreams/DreamManagerService;->componentsToString([Landroid/content/ComponentName;)Ljava/lang/String;
+HPLcom/android/server/dreams/DreamManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
 PLcom/android/server/dreams/DreamManagerService;->finishSelfInternal(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/dreams/DreamManagerService;->forceAmbientDisplayEnabledInternal(Z)V
-PLcom/android/server/dreams/DreamManagerService;->getDreamComponentsForUser(I)[Landroid/content/ComponentName;
+PLcom/android/server/dreams/DreamManagerService;->forceAmbientDisplayEnabledInternal(Z)V
+PLcom/android/server/dreams/DreamManagerService;->getDefaultDreamComponentForUser(I)Landroid/content/ComponentName;
+HSPLcom/android/server/dreams/DreamManagerService;->getDozeComponent()Landroid/content/ComponentName;
+HSPLcom/android/server/dreams/DreamManagerService;->getDozeComponent(I)Landroid/content/ComponentName;
+HPLcom/android/server/dreams/DreamManagerService;->getDreamComponentsForUser(I)[Landroid/content/ComponentName;
 HSPLcom/android/server/dreams/DreamManagerService;->getServiceInfo(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
 HSPLcom/android/server/dreams/DreamManagerService;->isDreamingInternal()Z
+HPLcom/android/server/dreams/DreamManagerService;->lambda$startDreamLocked$0$DreamManagerService(Landroid/os/Binder;Landroid/content/ComponentName;ZZILandroid/os/PowerManager$WakeLock;)V
 HSPLcom/android/server/dreams/DreamManagerService;->onBootPhase(I)V
 HSPLcom/android/server/dreams/DreamManagerService;->onStart()V
-PLcom/android/server/dreams/DreamManagerService;->startDozingInternal(Landroid/os/IBinder;II)V
-PLcom/android/server/dreams/DreamManagerService;->startDreamInternal(Z)V
-PLcom/android/server/dreams/DreamManagerService;->startDreamLocked(Landroid/content/ComponentName;ZZI)V
-PLcom/android/server/dreams/DreamManagerService;->stopDreamInternal(Z)V
+HPLcom/android/server/dreams/DreamManagerService;->requestAwakenInternal()V
+PLcom/android/server/dreams/DreamManagerService;->requestDreamInternal()V
+PLcom/android/server/dreams/DreamManagerService;->setDreamComponentsForUser(I[Landroid/content/ComponentName;)V
+HPLcom/android/server/dreams/DreamManagerService;->startDozingInternal(Landroid/os/IBinder;II)V
+HPLcom/android/server/dreams/DreamManagerService;->startDreamInternal(Z)V
+HPLcom/android/server/dreams/DreamManagerService;->startDreamLocked(Landroid/content/ComponentName;ZZI)V
+HPLcom/android/server/dreams/DreamManagerService;->stopDreamInternal(Z)V
 HSPLcom/android/server/dreams/DreamManagerService;->stopDreamLocked(Z)V
 HSPLcom/android/server/dreams/DreamManagerService;->validateDream(Landroid/content/ComponentName;)Z
-HSPLcom/android/server/emergency/EmergencyAffordanceService$1;->onCellInfoChanged(Ljava/util/List;)V
-HSPLcom/android/server/emergency/EmergencyAffordanceService$1;->onCellLocationChanged(Landroid/telephony/CellLocation;)V
+HSPLcom/android/server/dreams/DreamManagerService;->writePulseGestureEnabled()V
+HSPLcom/android/server/emergency/EmergencyAffordanceService$1;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$1;->onCellInfoChanged(Ljava/util/List;)V
+PLcom/android/server/emergency/EmergencyAffordanceService$1;->onCellLocationChanged(Landroid/telephony/CellLocation;)V
+HSPLcom/android/server/emergency/EmergencyAffordanceService$2;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
 PLcom/android/server/emergency/EmergencyAffordanceService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/emergency/EmergencyAffordanceService$3;->onSubscriptionsChanged()V
+HSPLcom/android/server/emergency/EmergencyAffordanceService$3;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+HPLcom/android/server/emergency/EmergencyAffordanceService$3;->onSubscriptionsChanged()V
+HSPLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;-><init>(Lcom/android/server/emergency/EmergencyAffordanceService;Landroid/os/Looper;)V
 HSPLcom/android/server/emergency/EmergencyAffordanceService$MyHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/emergency/EmergencyAffordanceService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$000(Lcom/android/server/emergency/EmergencyAffordanceService;)Z
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$100(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$200(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$300(Lcom/android/server/emergency/EmergencyAffordanceService;)Lcom/android/server/emergency/EmergencyAffordanceService$MyHandler;
+HSPLcom/android/server/emergency/EmergencyAffordanceService;->access$400(Lcom/android/server/emergency/EmergencyAffordanceService;)V
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$500(Lcom/android/server/emergency/EmergencyAffordanceService;)Z
+PLcom/android/server/emergency/EmergencyAffordanceService;->access$600(Lcom/android/server/emergency/EmergencyAffordanceService;)Z
+HSPLcom/android/server/emergency/EmergencyAffordanceService;->handleInitializeState()V
 HSPLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateCellInfo()Z
 HSPLcom/android/server/emergency/EmergencyAffordanceService;->handleUpdateSimSubscriptionInfo()Z
-HSPLcom/android/server/emergency/EmergencyAffordanceService;->isEmergencyAffordanceNeeded()Z
+PLcom/android/server/emergency/EmergencyAffordanceService;->isEmergencyAffordanceNeeded()Z
+HPLcom/android/server/emergency/EmergencyAffordanceService;->mccRequiresEmergencyAffordance(I)Z
 HSPLcom/android/server/emergency/EmergencyAffordanceService;->onBootPhase(I)V
-HSPLcom/android/server/emergency/EmergencyAffordanceService;->onCellScanFinishedUnsuccessful()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->onCellScanFinishedUnsuccessful()V
 HSPLcom/android/server/emergency/EmergencyAffordanceService;->onStart()V
-HSPLcom/android/server/emergency/EmergencyAffordanceService;->setNetworkNeedsEmergencyAffordance(Z)V
-HSPLcom/android/server/emergency/EmergencyAffordanceService;->stopScanning()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->requestCellScan()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->setNetworkNeedsEmergencyAffordance(Z)V
+HSPLcom/android/server/emergency/EmergencyAffordanceService;->setSimNeedsEmergencyAffordance(Z)V
+HSPLcom/android/server/emergency/EmergencyAffordanceService;->simNeededAffordanceBefore()Z
+HSPLcom/android/server/emergency/EmergencyAffordanceService;->startScanning()V
+PLcom/android/server/emergency/EmergencyAffordanceService;->stopScanning()V
 HSPLcom/android/server/emergency/EmergencyAffordanceService;->updateEmergencyAffordanceNeeded()V
 HSPLcom/android/server/firewall/AndFilter$1;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/firewall/AndFilter;-><clinit>()V
+HSPLcom/android/server/firewall/AndFilter;-><init>()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/FilterList;-><init>()V
+HSPLcom/android/server/firewall/FilterList;->readChild(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/firewall/FilterList;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/firewall/FilterList;
+HSPLcom/android/server/firewall/IntentFirewall$FirewallHandler;-><init>(Lcom/android/server/firewall/IntentFirewall;Landroid/os/Looper;)V
+HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;-><init>(Lcom/android/server/firewall/IntentFirewall$Rule;)V
+PLcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;->access$200(Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;)Lcom/android/server/firewall/IntentFirewall$Rule;
+HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>()V
+HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;-><init>(Lcom/android/server/firewall/IntentFirewall$1;)V
+PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
+PLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->allowFilterResult(Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;Ljava/util/List;)Z
 HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
 HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->newArray(I)[Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;
 HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->queryByComponent(Landroid/content/ComponentName;Ljava/util/List;)V
 HSPLcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/firewall/IntentFirewall$Rule;-><init>()V
+HSPLcom/android/server/firewall/IntentFirewall$Rule;-><init>(Lcom/android/server/firewall/IntentFirewall$1;)V
 HSPLcom/android/server/firewall/IntentFirewall$Rule;->getComponentFilterCount()I
 HSPLcom/android/server/firewall/IntentFirewall$Rule;->getIntentFilter(I)Lcom/android/server/firewall/IntentFirewall$FirewallIntentFilter;
 HSPLcom/android/server/firewall/IntentFirewall$Rule;->getIntentFilterCount()I
 HSPLcom/android/server/firewall/IntentFirewall$Rule;->readChild(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/firewall/IntentFirewall$Rule;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/firewall/IntentFirewall$Rule;
+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
 HSPLcom/android/server/firewall/IntentFirewall;->checkBroadcast(Landroid/content/Intent;IILjava/lang/String;I)Z
 HSPLcom/android/server/firewall/IntentFirewall;->checkIntent(Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;Landroid/content/ComponentName;ILandroid/content/Intent;IILjava/lang/String;I)Z
 HSPLcom/android/server/firewall/IntentFirewall;->checkService(Landroid/content/ComponentName;Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
 HSPLcom/android/server/firewall/IntentFirewall;->checkStartActivity(Landroid/content/Intent;IILjava/lang/String;Landroid/content/pm/ApplicationInfo;)Z
+HSPLcom/android/server/firewall/IntentFirewall;->getRulesDir()Ljava/io/File;
 HSPLcom/android/server/firewall/IntentFirewall;->parseFilter(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/firewall/Filter;
 HSPLcom/android/server/firewall/IntentFirewall;->readRules(Ljava/io/File;[Lcom/android/server/firewall/IntentFirewall$FirewallIntentResolver;)V
 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
@@ -7092,91 +16201,256 @@
 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$EqualsFilter;-><init>(Lcom/android/server/firewall/StringFilter$ValueProvider;Ljava/lang/String;)V
+HSPLcom/android/server/firewall/StringFilter$ValueProvider;-><init>(Ljava/lang/String;)V
 HSPLcom/android/server/firewall/StringFilter$ValueProvider;->newFilter(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/firewall/Filter;
+HSPLcom/android/server/firewall/StringFilter;-><clinit>()V
+HSPLcom/android/server/firewall/StringFilter;-><init>(Lcom/android/server/firewall/StringFilter$ValueProvider;)V
+HSPLcom/android/server/firewall/StringFilter;-><init>(Lcom/android/server/firewall/StringFilter$ValueProvider;Lcom/android/server/firewall/StringFilter$1;)V
 HSPLcom/android/server/firewall/StringFilter;->getFilter(Lcom/android/server/firewall/StringFilter$ValueProvider;Lorg/xmlpull/v1/XmlPullParser;I)Lcom/android/server/firewall/StringFilter;
 HSPLcom/android/server/firewall/StringFilter;->readFromXml(Lcom/android/server/firewall/StringFilter$ValueProvider;Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/firewall/StringFilter;
-HSPLcom/android/server/gpu/GpuService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/gpu/GpuService$DeviceConfigListener;-><init>(Lcom/android/server/gpu/GpuService;)V
+PLcom/android/server/gpu/GpuService$DeviceConfigListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/gpu/GpuService$PackageReceiver;-><init>(Lcom/android/server/gpu/GpuService;)V
+HSPLcom/android/server/gpu/GpuService$PackageReceiver;-><init>(Lcom/android/server/gpu/GpuService;Lcom/android/server/gpu/GpuService$1;)V
+HPLcom/android/server/gpu/GpuService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/gpu/GpuService$SettingsObserver;-><init>(Lcom/android/server/gpu/GpuService;)V
 HSPLcom/android/server/gpu/GpuService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/gpu/GpuService;->assetToSettingsGlobal(Landroid/content/Context;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;)V
-HSPLcom/android/server/gpu/GpuService;->fetchGameDriverPackageProperties()V
+PLcom/android/server/gpu/GpuService;->access$100(Lcom/android/server/gpu/GpuService;)Landroid/content/ContentResolver;
+PLcom/android/server/gpu/GpuService;->access$300(Lcom/android/server/gpu/GpuService;)V
+PLcom/android/server/gpu/GpuService;->access$400(Lcom/android/server/gpu/GpuService;)Landroid/content/Context;
+PLcom/android/server/gpu/GpuService;->access$500(Lcom/android/server/gpu/GpuService;)Ljava/lang/Object;
+PLcom/android/server/gpu/GpuService;->access$600(Lcom/android/server/gpu/GpuService;Ljava/lang/String;)V
+PLcom/android/server/gpu/GpuService;->access$700(Lcom/android/server/gpu/GpuService;)Ljava/lang/String;
+PLcom/android/server/gpu/GpuService;->assetToSettingsGlobal(Landroid/content/Context;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/CharSequence;)V
+PLcom/android/server/gpu/GpuService;->fetchGameDriverPackageProperties()V
 HSPLcom/android/server/gpu/GpuService;->onBootPhase(I)V
 HSPLcom/android/server/gpu/GpuService;->onStart()V
-HSPLcom/android/server/gpu/GpuService;->processBlacklists()V
-HSPLcom/android/server/gpu/GpuService;->setBlacklist()V
+PLcom/android/server/gpu/GpuService;->parseBlacklists(Ljava/lang/String;)V
+PLcom/android/server/gpu/GpuService;->processBlacklists()V
+PLcom/android/server/gpu/GpuService;->setBlacklist()V
+PLcom/android/server/incident/-$$Lambda$PendingReports$42Ba6ZxAFxFmqtPlfnXNpuKHOXM;-><init>(Lcom/android/server/incident/PendingReports;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/-$$Lambda$PendingReports$42Ba6ZxAFxFmqtPlfnXNpuKHOXM;->run()V
+PLcom/android/server/incident/-$$Lambda$PendingReports$B2hwzQpyMfhPG0Cw6n_Xz1SrHR0;-><init>(Lcom/android/server/incident/PendingReports;Landroid/os/IIncidentAuthListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/incident/-$$Lambda$PendingReports$B2hwzQpyMfhPG0Cw6n_Xz1SrHR0;->binderDied()V
+PLcom/android/server/incident/-$$Lambda$PendingReports$h00dGfNWXgDmC4-YyxYy1CUoKw4;-><init>(Lcom/android/server/incident/PendingReports;Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/-$$Lambda$PendingReports$h00dGfNWXgDmC4-YyxYy1CUoKw4;->run()V
+HSPLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;)V
+HSPLcom/android/server/incident/IncidentCompanionService$BinderService;-><init>(Lcom/android/server/incident/IncidentCompanionService;Lcom/android/server/incident/IncidentCompanionService$1;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->approveReport(Ljava/lang/String;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->authorizeReport(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->cancelAuthorization(Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->deleteIncidentReports(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->denyReport(Ljava/lang/String;)V
 PLcom/android/server/incident/IncidentCompanionService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/incident/IncidentCompanionService$BinderService;->enforceAccessReportsPermissions(Ljava/lang/String;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->enforceAuthorizePermission()V
+HPLcom/android/server/incident/IncidentCompanionService$BinderService;->enforceCallerIsSameApp(Ljava/lang/String;)V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->enforceRequestAuthorizationPermission()V
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->getIncidentReport(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/os/IncidentManager$IncidentReport;
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->getIncidentReportList(Ljava/lang/String;Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/incident/IncidentCompanionService$BinderService;->getPendingReports()Ljava/util/List;
+HPLcom/android/server/incident/IncidentCompanionService$BinderService;->sendReportReadyBroadcast(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/incident/IncidentCompanionService;-><clinit>()V
 HSPLcom/android/server/incident/IncidentCompanionService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/incident/IncidentCompanionService;->access$000(Lcom/android/server/incident/IncidentCompanionService;)Lcom/android/server/incident/PendingReports;
+PLcom/android/server/incident/IncidentCompanionService;->access$100()[Ljava/lang/String;
+PLcom/android/server/incident/IncidentCompanionService;->access$200(Lcom/android/server/incident/IncidentCompanionService;)Landroid/os/IIncidentManager;
+PLcom/android/server/incident/IncidentCompanionService;->getAndValidateUser(Landroid/content/Context;)I
+PLcom/android/server/incident/IncidentCompanionService;->getIIncidentManager()Landroid/os/IIncidentManager;
 HSPLcom/android/server/incident/IncidentCompanionService;->onBootPhase(I)V
 HSPLcom/android/server/incident/IncidentCompanionService;->onStart()V
+PLcom/android/server/incident/PendingReports$PendingReportRec;-><init>(Lcom/android/server/incident/PendingReports;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports$PendingReportRec;->getUri()Landroid/net/Uri;
 HSPLcom/android/server/incident/PendingReports;-><init>(Landroid/content/Context;)V
+PLcom/android/server/incident/PendingReports;->access$008(Lcom/android/server/incident/PendingReports;)I
+PLcom/android/server/incident/PendingReports;->approveReport(Ljava/lang/String;)V
+PLcom/android/server/incident/PendingReports;->authorizeReport(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->authorizeReportImpl(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->cancelAuthorization(Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->cancelReportImpl(Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->cancelReportImpl(Landroid/os/IIncidentAuthListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/incident/PendingReports;->denyReport(Ljava/lang/String;)V
 PLcom/android/server/incident/PendingReports;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/incident/PendingReports;->onBootCompleted()V
-HSPLcom/android/server/incident/RequestQueue;->start()V
+PLcom/android/server/incident/PendingReports;->findAndRemovePendingReportRecLocked(Ljava/lang/String;)Lcom/android/server/incident/PendingReports$PendingReportRec;
+PLcom/android/server/incident/PendingReports;->getAndValidateUser()I
+PLcom/android/server/incident/PendingReports;->getApproverComponent(I)Landroid/content/ComponentName;
+PLcom/android/server/incident/PendingReports;->getPendingReports()Ljava/util/List;
+PLcom/android/server/incident/PendingReports;->isPackageInUid(ILjava/lang/String;)Z
+PLcom/android/server/incident/PendingReports;->lambda$authorizeReport$0$PendingReports(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->lambda$authorizeReportImpl$2$PendingReports(Landroid/os/IIncidentAuthListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/incident/PendingReports;->lambda$cancelAuthorization$1$PendingReports(Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->onBootCompleted()V
+PLcom/android/server/incident/PendingReports;->removePendingReportRecLocked(Landroid/os/IIncidentAuthListener;)V
+PLcom/android/server/incident/PendingReports;->sendBroadcast()V
+PLcom/android/server/incident/PendingReports;->sendBroadcast(Landroid/content/ComponentName;I)V
+HSPLcom/android/server/incident/RequestQueue$1;-><init>(Lcom/android/server/incident/RequestQueue;)V
+PLcom/android/server/incident/RequestQueue$1;->run()V
+PLcom/android/server/incident/RequestQueue$Rec;-><init>(Lcom/android/server/incident/RequestQueue;Landroid/os/IBinder;ZLjava/lang/Runnable;)V
+HSPLcom/android/server/incident/RequestQueue;-><init>(Landroid/os/Handler;)V
+PLcom/android/server/incident/RequestQueue;->access$000(Lcom/android/server/incident/RequestQueue;)Ljava/util/ArrayList;
+PLcom/android/server/incident/RequestQueue;->enqueue(Landroid/os/IBinder;ZLjava/lang/Runnable;)V
+PLcom/android/server/incident/RequestQueue;->start()V
+HSPLcom/android/server/incremental/IncrementalManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/incremental/IncrementalManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/incremental/IncrementalManagerService;->start(Landroid/content/Context;)Lcom/android/server/incremental/IncrementalManagerService;
+PLcom/android/server/incremental/IncrementalManagerService;->systemReady()V
+HPLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$1$TLhe3_2yHs5UB69Y7lf2s7OxJCo;-><init>(Ljava/lang/String;)V
 PLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$1$TLhe3_2yHs5UB69Y7lf2s7OxJCo;->visit(Ljava/lang/Object;)V
+HSPLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$_fKw-VUP0pSfcMMlgRqoT4OPhxw;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Ljava/lang/String;)V
 HSPLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$_fKw-VUP0pSfcMMlgRqoT4OPhxw;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
-PLcom/android/server/infra/AbstractMasterSystemService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-HSPLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageRemoved(Ljava/lang/String;I)V
-PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
-PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateStarted(Ljava/lang/String;I)V
+HSPLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$su3lJpEVIbL-C7doP4eboTpqjxU;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
+PLcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$su3lJpEVIbL-C7doP4eboTpqjxU;->onNameResolved(ILjava/lang/String;Z)V
+HSPLcom/android/server/infra/AbstractMasterSystemService$1;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->getActiveServicePackageNameLocked()Ljava/lang/String;
+PLcom/android/server/infra/AbstractMasterSystemService$1;->handleActiveServiceRestartedLocked(Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->handlePackageUpdateLocked(Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractMasterSystemService$1;->lambda$handlePackageUpdateLocked$0(Ljava/lang/String;Lcom/android/server/infra/AbstractPerUserSystemService;)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+PLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageDataCleared(Ljava/lang/String;I)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageRemoved(Ljava/lang/String;I)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateFinished(Ljava/lang/String;I)V
+HPLcom/android/server/infra/AbstractMasterSystemService$1;->onPackageUpdateStarted(Ljava/lang/String;I)V
 HSPLcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Landroid/os/Handler;)V
-HSPLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;Z)V
+PLcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;)V
+HSPLcom/android/server/infra/AbstractMasterSystemService;-><init>(Landroid/content/Context;Lcom/android/server/infra/ServiceNameResolver;Ljava/lang/String;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->access$000(Lcom/android/server/infra/AbstractMasterSystemService;)Landroid/util/SparseArray;
+PLcom/android/server/infra/AbstractMasterSystemService;->access$002(Lcom/android/server/infra/AbstractMasterSystemService;Landroid/util/SparseArray;)Landroid/util/SparseArray;
+PLcom/android/server/infra/AbstractMasterSystemService;->access$100(Lcom/android/server/infra/AbstractMasterSystemService;)Landroid/util/SparseArray;
+PLcom/android/server/infra/AbstractMasterSystemService;->access$200(Lcom/android/server/infra/AbstractMasterSystemService;)I
+HPLcom/android/server/infra/AbstractMasterSystemService;->assertCalledByPackageOwner(Ljava/lang/String;)V
 PLcom/android/server/infra/AbstractMasterSystemService;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
 HSPLcom/android/server/infra/AbstractMasterSystemService;->getServiceSettingsProperty()Ljava/lang/String;
-HSPLcom/android/server/infra/AbstractMasterSystemService;->isBindInstantServiceAllowed()Z
+HSPLcom/android/server/infra/AbstractMasterSystemService;->getSupportedUsers()Ljava/util/List;
+HSPLcom/android/server/infra/AbstractMasterSystemService;->getUserManagerInternal()Landroid/os/UserManagerInternal;
+PLcom/android/server/infra/AbstractMasterSystemService;->isBindInstantServiceAllowed()Z
 HSPLcom/android/server/infra/AbstractMasterSystemService;->isDisabledLocked(I)Z
+PLcom/android/server/infra/AbstractMasterSystemService;->lambda$new$0$AbstractMasterSystemService(ILjava/lang/String;Z)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->lambda$new$1$AbstractMasterSystemService(Ljava/lang/String;ILandroid/os/Bundle;Landroid/os/Bundle;)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->onBootPhase(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onCleanupUser(I)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->onServiceEnabledLocked(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onServiceNameChanged(ILjava/lang/String;Z)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onServicePackageRestartedLocked(I)V
 PLcom/android/server/infra/AbstractMasterSystemService;->onServicePackageUpdatedLocked(I)V
 PLcom/android/server/infra/AbstractMasterSystemService;->onServicePackageUpdatingLocked(I)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
-HSPLcom/android/server/infra/AbstractMasterSystemService;->onUnlockUser(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->onUnlockUser(I)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->peekServiceForUserLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
 HSPLcom/android/server/infra/AbstractMasterSystemService;->registerForExtraSettingsChanges(Landroid/content/ContentResolver;Landroid/database/ContentObserver;)V
-HSPLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceLocked(I)V
+HSPLcom/android/server/infra/AbstractMasterSystemService;->removeCachedServiceLocked(I)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/infra/AbstractMasterSystemService;->resetTemporaryService(I)V
+PLcom/android/server/infra/AbstractMasterSystemService;->setTemporaryService(ILjava/lang/String;I)V
+HSPLcom/android/server/infra/AbstractMasterSystemService;->startTrackingPackageChanges()V
+PLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceLocked(I)V
 HSPLcom/android/server/infra/AbstractMasterSystemService;->updateCachedServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
-PLcom/android/server/infra/AbstractMasterSystemService;->visitServicesLocked(Lcom/android/server/infra/AbstractMasterSystemService$Visitor;)V
+HPLcom/android/server/infra/AbstractMasterSystemService;->visitServicesLocked(Lcom/android/server/infra/AbstractMasterSystemService$Visitor;)V
+HSPLcom/android/server/infra/AbstractPerUserSystemService;-><init>(Lcom/android/server/infra/AbstractMasterSystemService;Ljava/lang/Object;I)V
 PLcom/android/server/infra/AbstractPerUserSystemService;->dumpLocked(Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/infra/AbstractPerUserSystemService;->getContext()Landroid/content/Context;
-HSPLcom/android/server/infra/AbstractPerUserSystemService;->getServiceComponentName()Landroid/content/ComponentName;
+HSPLcom/android/server/infra/AbstractPerUserSystemService;->getComponentNameLocked()Ljava/lang/String;
+HSPLcom/android/server/infra/AbstractPerUserSystemService;->getContext()Landroid/content/Context;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getMaster()Lcom/android/server/infra/AbstractMasterSystemService;
+HPLcom/android/server/infra/AbstractPerUserSystemService;->getServiceComponentName()Landroid/content/ComponentName;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceIconLocked()Landroid/graphics/drawable/Drawable;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceLabelLocked()Ljava/lang/CharSequence;
+HPLcom/android/server/infra/AbstractPerUserSystemService;->getServicePackageName()Ljava/lang/String;
+PLcom/android/server/infra/AbstractPerUserSystemService;->getServiceUidLocked()I
+PLcom/android/server/infra/AbstractPerUserSystemService;->getTargedSdkLocked()I
 PLcom/android/server/infra/AbstractPerUserSystemService;->handlePackageUpdateLocked(Ljava/lang/String;)V
+PLcom/android/server/infra/AbstractPerUserSystemService;->isDebug()Z
+HSPLcom/android/server/infra/AbstractPerUserSystemService;->isDisabledByUserRestrictionsLocked()Z
 HSPLcom/android/server/infra/AbstractPerUserSystemService;->isEnabledLocked()Z
+HSPLcom/android/server/infra/AbstractPerUserSystemService;->isSetupCompletedLocked()Z
+PLcom/android/server/infra/AbstractPerUserSystemService;->isTemporaryServiceSetLocked()Z
+PLcom/android/server/infra/AbstractPerUserSystemService;->isVerbose()Z
+PLcom/android/server/infra/AbstractPerUserSystemService;->removeSelfFromCacheLocked()V
+PLcom/android/server/infra/AbstractPerUserSystemService;->resetTemporaryServiceLocked()V
+HSPLcom/android/server/infra/AbstractPerUserSystemService;->updateIsSetupComplete(I)V
 HSPLcom/android/server/infra/AbstractPerUserSystemService;->updateLocked(Z)Z
 HSPLcom/android/server/infra/AbstractPerUserSystemService;->updateServiceInfoLocked()Landroid/content/ComponentName;
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver$1;-><init>(Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;Landroid/os/Looper;Landroid/os/Handler$Callback;ZI)V
+HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;-><clinit>()V
+HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;-><init>(Landroid/content/Context;I)V
 PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->dumpShort(Ljava/io/PrintWriter;)V
 PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->dumpShort(Ljava/io/PrintWriter;I)V
 HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->getDefaultServiceName(I)Ljava/lang/String;
 HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->getServiceName(I)Ljava/lang/String;
 HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->isTemporary(I)Z
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->notifyTemporaryServiceNameChangedLocked(ILjava/lang/String;Z)V
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->resetTemporaryService(I)V
 HSPLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->setOnTemporaryServiceNameChangedCallback(Lcom/android/server/infra/ServiceNameResolver$NameResolverListener;)V
+PLcom/android/server/infra/FrameworkResourcesServiceNameResolver;->setTemporaryService(ILjava/lang/String;I)V
+HSPLcom/android/server/infra/SecureSettingsServiceNameResolver;-><init>(Landroid/content/Context;Ljava/lang/String;)V
 PLcom/android/server/infra/SecureSettingsServiceNameResolver;->dumpShort(Ljava/io/PrintWriter;)V
 PLcom/android/server/infra/SecureSettingsServiceNameResolver;->dumpShort(Ljava/io/PrintWriter;I)V
 HSPLcom/android/server/infra/SecureSettingsServiceNameResolver;->getDefaultServiceName(I)Ljava/lang/String;
 HSPLcom/android/server/infra/ServiceNameResolver;->getServiceName(I)Ljava/lang/String;
 HSPLcom/android/server/infra/ServiceNameResolver;->setOnTemporaryServiceNameChangedCallback(Lcom/android/server/infra/ServiceNameResolver$NameResolverListener;)V
+HSPLcom/android/server/input/-$$Lambda$InputManagerService$P986LfJHWb-Wytu9J9I0HQIpodU;-><init>(Ljava/util/List;)V
+HSPLcom/android/server/input/-$$Lambda$InputManagerService$o1rqNjeoTO6WW7Ut-lKtY_eyNc8;-><init>(Ljava/util/List;)V
+HSPLcom/android/server/input/InputManagerService$10;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V
+PLcom/android/server/input/InputManagerService$10;->onChange(Z)V
+HSPLcom/android/server/input/InputManagerService$11;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/input/InputManagerService$1;-><init>(Lcom/android/server/input/InputManagerService;)V
 HSPLcom/android/server/input/InputManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/input/InputManagerService$2;-><init>(Lcom/android/server/input/InputManagerService;)V
+HPLcom/android/server/input/InputManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/input/InputManagerService$3;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/input/InputManagerService$5;-><init>(Lcom/android/server/input/InputManagerService;Ljava/util/HashSet;)V
 HSPLcom/android/server/input/InputManagerService$5;->visitKeyboardLayout(Landroid/content/res/Resources;ILandroid/hardware/input/KeyboardLayout;)V
-HSPLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V
-PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V
+HSPLcom/android/server/input/InputManagerService$9;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Handler;)V
+HPLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V
+PLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->binderDied()V
+HPLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;->notifyInputDevicesChanged([I)V
+PLcom/android/server/input/InputManagerService$InputFilterHost;-><init>(Lcom/android/server/input/InputManagerService;)V
+PLcom/android/server/input/InputManagerService$InputFilterHost;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$1;)V
+PLcom/android/server/input/InputManagerService$InputFilterHost;->disconnectLocked()V
+HPLcom/android/server/input/InputManagerService$InputFilterHost;->sendInputEvent(Landroid/view/InputEvent;I)V
+HSPLcom/android/server/input/InputManagerService$InputManagerHandler;-><init>(Lcom/android/server/input/InputManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/input/InputManagerService$InputManagerHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/input/InputManagerService$InputMonitorHost;-><init>(Lcom/android/server/input/InputManagerService;Landroid/view/InputChannel;)V
+PLcom/android/server/input/InputManagerService$InputMonitorHost;->dispose()V
+HPLcom/android/server/input/InputManagerService$InputMonitorHost;->pilferPointers()V
+HSPLcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;->format(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;)V
+HSPLcom/android/server/input/InputManagerService$LocalService;-><init>(Lcom/android/server/input/InputManagerService;Lcom/android/server/input/InputManagerService$1;)V
 HSPLcom/android/server/input/InputManagerService$LocalService;->setDisplayViewports(Ljava/util/List;)V
 PLcom/android/server/input/InputManagerService$LocalService;->setInteractive(Z)V
 HSPLcom/android/server/input/InputManagerService$LocalService;->setPulseGestureEnabled(Z)V
 HSPLcom/android/server/input/InputManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/input/InputManagerService;->access$100(Lcom/android/server/input/InputManagerService;)V
+HPLcom/android/server/input/InputManagerService;->access$1000(JLandroid/view/InputEvent;IIIII)I
+HPLcom/android/server/input/InputManagerService;->access$1100(JLandroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService;->access$1200(JLandroid/view/InputChannel;)V
+PLcom/android/server/input/InputManagerService;->access$1300(Lcom/android/server/input/InputManagerService;I)V
+HSPLcom/android/server/input/InputManagerService;->access$1500(Lcom/android/server/input/InputManagerService;Ljava/util/List;)V
+HPLcom/android/server/input/InputManagerService;->access$1700(JZ)V
+HSPLcom/android/server/input/InputManagerService;->access$1900(Lcom/android/server/input/InputManagerService;)Ljava/io/File;
+HSPLcom/android/server/input/InputManagerService;->access$200(Lcom/android/server/input/InputManagerService;)V
+HSPLcom/android/server/input/InputManagerService;->access$500(Lcom/android/server/input/InputManagerService;[Landroid/view/InputDevice;)V
+HPLcom/android/server/input/InputManagerService;->access$900(Lcom/android/server/input/InputManagerService;)J
 HSPLcom/android/server/input/InputManagerService;->canDispatchToDisplay(II)Z
-PLcom/android/server/input/InputManagerService;->checkInjectEventsPermission(II)Z
+HPLcom/android/server/input/InputManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/input/InputManagerService;->checkInjectEventsPermission(II)Z
 HSPLcom/android/server/input/InputManagerService;->deliverInputDevicesChanged([Landroid/view/InputDevice;)V
 PLcom/android/server/input/InputManagerService;->dispatchUnhandledKey(Landroid/os/IBinder;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
 PLcom/android/server/input/InputManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/input/InputManagerService;->dumpAssociations(Ljava/io/PrintWriter;)V
+HPLcom/android/server/input/InputManagerService;->filterInputEvent(Landroid/view/InputEvent;I)Z
+HSPLcom/android/server/input/InputManagerService;->flatten(Ljava/util/Map;)Ljava/util/List;
+HSPLcom/android/server/input/InputManagerService;->getContextForDisplay(I)Landroid/content/Context;
 HSPLcom/android/server/input/InputManagerService;->getCurrentKeyboardLayoutForInputDevice(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
 HSPLcom/android/server/input/InputManagerService;->getDeviceAlias(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/input/InputManagerService;->getDoubleTapTimeout()I
 HSPLcom/android/server/input/InputManagerService;->getExcludedDeviceNames()[Ljava/lang/String;
 HSPLcom/android/server/input/InputManagerService;->getHoverTapSlop()I
 HSPLcom/android/server/input/InputManagerService;->getHoverTapTimeout()I
-HSPLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice;
-HSPLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
+HPLcom/android/server/input/InputManagerService;->getInputDevice(I)Landroid/view/InputDevice;
+HPLcom/android/server/input/InputManagerService;->getInputDeviceIds()[I
 HSPLcom/android/server/input/InputManagerService;->getInputDevices()[Landroid/view/InputDevice;
 HSPLcom/android/server/input/InputManagerService;->getInputPortAssociations()[Ljava/lang/String;
 HSPLcom/android/server/input/InputManagerService;->getKeyCodeState(III)I
@@ -7184,185 +16458,353 @@
 HSPLcom/android/server/input/InputManagerService;->getKeyRepeatTimeout()I
 HSPLcom/android/server/input/InputManagerService;->getKeyboardLayoutOverlay(Landroid/hardware/input/InputDeviceIdentifier;)[Ljava/lang/String;
 HSPLcom/android/server/input/InputManagerService;->getLayoutDescriptor(Landroid/hardware/input/InputDeviceIdentifier;)Ljava/lang/String;
+HSPLcom/android/server/input/InputManagerService;->getLocalesFromLanguageTags(Ljava/lang/String;)Landroid/os/LocaleList;
 HSPLcom/android/server/input/InputManagerService;->getLongPressTimeout()I
 HSPLcom/android/server/input/InputManagerService;->getPointerDisplayId()I
+HSPLcom/android/server/input/InputManagerService;->getPointerIcon(I)Landroid/view/PointerIcon;
+HSPLcom/android/server/input/InputManagerService;->getPointerLayer()I
 HSPLcom/android/server/input/InputManagerService;->getPointerSpeedSetting()I
 HSPLcom/android/server/input/InputManagerService;->getScanCodeState(III)I
 HSPLcom/android/server/input/InputManagerService;->getShowTouchesSetting(I)I
 HSPLcom/android/server/input/InputManagerService;->getSwitchState(III)I
 HSPLcom/android/server/input/InputManagerService;->getTouchCalibrationForInputDevice(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
 HSPLcom/android/server/input/InputManagerService;->getVirtualKeyQuietTimeMillis()I
-PLcom/android/server/input/InputManagerService;->hasKeys(II[I[Z)Z
-PLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z
-PLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;I)Z
-PLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/input/InputManagerService;->hasKeys(II[I[Z)Z
+HPLcom/android/server/input/InputManagerService;->injectInputEvent(Landroid/view/InputEvent;I)Z
+HPLcom/android/server/input/InputManagerService;->injectInputEventInternal(Landroid/view/InputEvent;I)Z
+HPLcom/android/server/input/InputManagerService;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
 HSPLcom/android/server/input/InputManagerService;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
-PLcom/android/server/input/InputManagerService;->interceptMotionBeforeQueueingNonInteractive(IJI)I
-HSPLcom/android/server/input/InputManagerService;->monitor()V
+HPLcom/android/server/input/InputManagerService;->interceptMotionBeforeQueueingNonInteractive(IJI)I
+HSPLcom/android/server/input/InputManagerService;->isMicMuted()I
+HSPLcom/android/server/input/InputManagerService;->loadStaticInputPortAssociations()Ljava/util/Map;
+HPLcom/android/server/input/InputManagerService;->monitor()V
+HPLcom/android/server/input/InputManagerService;->monitorGestureInput(Ljava/lang/String;I)Landroid/view/InputMonitor;
 HSPLcom/android/server/input/InputManagerService;->monitorInput(Ljava/lang/String;I)Landroid/view/InputChannel;
+PLcom/android/server/input/InputManagerService;->notifyANR(Landroid/view/InputApplicationHandle;Landroid/os/IBinder;Ljava/lang/String;)J
 HSPLcom/android/server/input/InputManagerService;->notifyConfigurationChanged(J)V
-HSPLcom/android/server/input/InputManagerService;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+HPLcom/android/server/input/InputManagerService;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/input/InputManagerService;->notifyInputChannelBroken(Landroid/os/IBinder;)V
 HSPLcom/android/server/input/InputManagerService;->notifyInputDevicesChanged([Landroid/view/InputDevice;)V
+PLcom/android/server/input/InputManagerService;->notifySwitch(JII)V
 PLcom/android/server/input/InputManagerService;->onDisplayRemoved(I)V
-HSPLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V
-HSPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;Landroid/os/IBinder;)V
-HSPLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
+HPLcom/android/server/input/InputManagerService;->onInputDevicesChangedListenerDied(I)V
+HPLcom/android/server/input/InputManagerService;->onPointerDownOutsideFocus(Landroid/os/IBinder;)V
+HSPLcom/android/server/input/InputManagerService;->registerAccessibilityLargePointerSettingObserver()V
+HSPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;)V
+HPLcom/android/server/input/InputManagerService;->registerInputDevicesChangedListener(Landroid/hardware/input/IInputDevicesChangedListener;)V
+HSPLcom/android/server/input/InputManagerService;->registerPointerSpeedSettingObserver()V
+HSPLcom/android/server/input/InputManagerService;->registerShowTouchesSettingObserver()V
+HSPLcom/android/server/input/InputManagerService;->reloadDeviceAliases()V
+HSPLcom/android/server/input/InputManagerService;->reloadKeyboardLayouts()V
+HSPLcom/android/server/input/InputManagerService;->setDisplayViewportsInternal(Ljava/util/List;)V
 HSPLcom/android/server/input/InputManagerService;->setFocusedApplication(ILandroid/view/InputApplicationHandle;)V
 HSPLcom/android/server/input/InputManagerService;->setFocusedDisplay(I)V
-HSPLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V
-HSPLcom/android/server/input/InputManagerService;->setPointerCapture(Z)V
+HSPLcom/android/server/input/InputManagerService;->setInTouchMode(Z)V
+PLcom/android/server/input/InputManagerService;->setInputDispatchMode(ZZ)V
+PLcom/android/server/input/InputManagerService;->setInputFilter(Landroid/view/IInputFilter;)V
 PLcom/android/server/input/InputManagerService;->setPointerIconType(I)V
+HSPLcom/android/server/input/InputManagerService;->setPointerSpeedUnchecked(I)V
 HSPLcom/android/server/input/InputManagerService;->setSystemUiVisibility(I)V
 HSPLcom/android/server/input/InputManagerService;->setWindowManagerCallbacks(Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;)V
 HSPLcom/android/server/input/InputManagerService;->setWiredAccessoryCallbacks(Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;)V
 HSPLcom/android/server/input/InputManagerService;->start()V
 HSPLcom/android/server/input/InputManagerService;->systemRunning()V
-HSPLcom/android/server/input/InputManagerService;->unregisterInputChannel(Landroid/view/InputChannel;)V
+PLcom/android/server/input/InputManagerService;->transferTouchFocus(Landroid/view/InputChannel;Landroid/view/InputChannel;)Z
+HPLcom/android/server/input/InputManagerService;->unregisterInputChannel(Landroid/view/InputChannel;)V
 HSPLcom/android/server/input/InputManagerService;->updateAccessibilityLargePointerFromSettings()V
 HSPLcom/android/server/input/InputManagerService;->updateKeyboardLayouts()V
 HSPLcom/android/server/input/InputManagerService;->updatePointerSpeedFromSettings()V
 HSPLcom/android/server/input/InputManagerService;->updateShowTouchesFromSettings()V
 HSPLcom/android/server/input/InputManagerService;->visitAllKeyboardLayouts(Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V
 HSPLcom/android/server/input/InputManagerService;->visitKeyboardLayoutsInPackage(Landroid/content/pm/PackageManager;Landroid/content/pm/ActivityInfo;Ljava/lang/String;ILcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;)V
+HSPLcom/android/server/input/PersistentDataStore;-><init>()V
+HSPLcom/android/server/input/PersistentDataStore;->clearState()V
+HSPLcom/android/server/input/PersistentDataStore;->getCurrentKeyboardLayout(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/input/PersistentDataStore;->getInputDeviceState(Ljava/lang/String;Z)Lcom/android/server/input/PersistentDataStore$InputDeviceState;
+HSPLcom/android/server/input/PersistentDataStore;->getTouchCalibration(Ljava/lang/String;I)Landroid/hardware/input/TouchCalibration;
 HSPLcom/android/server/input/PersistentDataStore;->load()V
+HSPLcom/android/server/input/PersistentDataStore;->loadIfNeeded()V
 HSPLcom/android/server/input/PersistentDataStore;->removeUninstalledKeyboardLayouts(Ljava/util/Set;)Z
+HSPLcom/android/server/input/PersistentDataStore;->saveIfNeeded()V
+PLcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$MMyKF1SeotTOu5KNBltIfhafmb8;-><init>(Ljava/util/List;I)V
+HSPLcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$oxpSIwENeEjKtHbxqUXuaXD0Gn8;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$oxpSIwENeEjKtHbxqUXuaXD0Gn8;->displayCanShowIme(I)Z
+HSPLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getAdditionalSubtypeFile(Ljava/io/File;)Landroid/util/AtomicFile;
+HSPLcom/android/server/inputmethod/AdditionalSubtypeUtils;->getInputMethodDir(I)Ljava/io/File;
 HSPLcom/android/server/inputmethod/AdditionalSubtypeUtils;->load(Landroid/util/ArrayMap;I)V
 PLcom/android/server/inputmethod/AdditionalSubtypeUtils;->save(Landroid/util/ArrayMap;Landroid/util/ArrayMap;I)V
+PLcom/android/server/inputmethod/InputContentUriTokenHandler;-><init>(Landroid/net/Uri;ILjava/lang/String;II)V
+PLcom/android/server/inputmethod/InputContentUriTokenHandler;->doTakeLocked(Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputContentUriTokenHandler;->finalize()V
+PLcom/android/server/inputmethod/InputContentUriTokenHandler;->release()V
+PLcom/android/server/inputmethod/InputContentUriTokenHandler;->take()V
 HSPLcom/android/server/inputmethod/InputMethodManagerInternal$1;-><init>()V
+HSPLcom/android/server/inputmethod/InputMethodManagerInternal;-><clinit>()V
+HSPLcom/android/server/inputmethod/InputMethodManagerInternal;-><init>()V
+PLcom/android/server/inputmethod/InputMethodManagerInternal;->get()Lcom/android/server/inputmethod/InputMethodManagerInternal;
+HSPLcom/android/server/inputmethod/InputMethodManagerService$1;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$1;->onBindingDied(Landroid/content/ComponentName;)V
 PLcom/android/server/inputmethod/InputMethodManagerService$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$ClientDeathRecipient;->binderDied()V
+PLcom/android/server/inputmethod/InputMethodManagerService$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$2;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$2;->executeMessage(Landroid/os/Message;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$3;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$3;->onCancel(Landroid/content/DialogInterface;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$4;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$ImeSubtypeListAdapter;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$5;->onClick(Landroid/content/DialogInterface;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;Landroid/graphics/Matrix;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;->access$1300(Lcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;)Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;
+PLcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;->access$1400(Lcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;)Landroid/graphics/Matrix;
+HSPLcom/android/server/inputmethod/InputMethodManagerService$ClientDeathRecipient;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/internal/view/IInputMethodClient;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ClientDeathRecipient;->binderDied()V
 HSPLcom/android/server/inputmethod/InputMethodManagerService$ClientState;-><init>(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;IIILcom/android/server/inputmethod/InputMethodManagerService$ClientDeathRecipient;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$ClientState;->toString()Ljava/lang/String;
-HSPLcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;-><init>(Ljava/lang/String;Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;->value()Z
-PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForSystemUser;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$ClientState;->toString()Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;-><init>(Ljava/lang/String;Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;->value()Z
+PLcom/android/server/inputmethod/InputMethodManagerService$DebugFlags;-><clinit>()V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$HardKeyboardListener;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$1;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ImeSubtypeListAdapter;-><init>(Landroid/content/Context;ILjava/util/List;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ImeSubtypeListAdapter;->getView(ILandroid/view/View;Landroid/view/ViewGroup;)Landroid/view/View;
+HSPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$1;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForSystemUser;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForSystemUser;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/server/inputmethod/InputMethodManagerService$1;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForSystemUser;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->createInputContentUriToken(Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
 PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->hideMySoftInput(I)V
 PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->notifyUserAction()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportFullscreenMode(Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportStartInput(Landroid/os/IBinder;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->setImeWindowStatus(II)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportFullscreenMode(Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->reportStartInput(Landroid/os/IBinder;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->setImeWindowStatus(II)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->setInputMethodAndSubtype(Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
 PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->shouldOfferSwitchingToNextInputMethod()Z
 PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->showMySoftInput(I)V
 PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->switchToNextInputMethod(Z)Z
-PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->updateStatusIcon(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->switchToPreviousInputMethod()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;->updateStatusIcon(Ljava/lang/String;I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
 PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->getEnabledInputMethodListAsUser(I)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->getInputMethodListAsUser(I)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->hideCurrentInputMethod()V
-PLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->setInteractive(Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MethodCallback;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onBeginPackageChanges()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChangesInternal()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->hideCurrentInputMethod()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;->setInteractive(Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MethodCallback;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Lcom/android/internal/view/IInputMethod;Landroid/view/InputChannel;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MethodCallback;->sessionCreated(Lcom/android/internal/view/IInputMethodSession;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->addKnownImePackageNameLocked(Ljava/lang/String;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearKnownImePackageNamesLocked()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->clearPackageChangeState()V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->isChangingPackagesOfCurrentUserLocked()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onBeginPackageChanges()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onFinishPackageChanges()V
+HPLcom/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;->onPackageAppeared(Ljava/lang/String;I)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z
-PLcom/android/server/inputmethod/InputMethodManagerService$SessionState;->toString()Ljava/lang/String;
-HSPLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackageAppeared(Ljava/lang/String;I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackageDisappeared(Ljava/lang/String;I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackagesSuspended([Ljava/lang/String;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->onPackagesUnsuspended([Ljava/lang/String;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;->shouldRebuildInputMethodListLocked()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService$SessionState;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$SessionState;->toString()Ljava/lang/String;
+HSPLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/Handler;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->registerContentObserverLocked(I)V
 PLcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;->toString()Ljava/lang/String;
-HSPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
-PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/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$StartInputHistory$Entry;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;->set(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>()V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;-><init>(Lcom/android/server/inputmethod/InputMethodManagerService$1;)V
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->addEntry(Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;->getEntrySize()I
+PLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><clinit>()V
+HPLcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;-><init>(ILandroid/os/IBinder;ILjava/lang/String;IZIILandroid/os/IBinder;Landroid/view/inputmethod/EditorInfo;II)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$1500(Lcom/android/server/inputmethod/InputMethodManagerService;)[Landroid/view/inputmethod/InputMethodInfo;
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$1600(Lcom/android/server/inputmethod/InputMethodManagerService;)[I
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$1700(Lcom/android/server/inputmethod/InputMethodManagerService;I)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$1800(Lcom/android/server/inputmethod/InputMethodManagerService;I)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2500(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2500(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2600(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2600(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->access$2700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2800(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->access$2800(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2800(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2900(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$2900(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3000(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3100(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3200(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3300(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3300(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3400(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->access$3400(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3500(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3500(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3600(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3600(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;Z)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3700(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3800(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3800(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$3900(Lcom/android/server/inputmethod/InputMethodManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->access$400(Lcom/android/server/inputmethod/InputMethodManagerService;)Landroid/util/ArrayMap;
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->addClient(Lcom/android/internal/view/IInputMethodClient;Lcom/android/internal/view/IInputContext;I)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->bindCurrentInputMethodServiceLocked(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->attachNewInputLocked(IZ)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->bindCurrentInputMethodServiceLocked(Landroid/content/Intent;Landroid/content/ServiceConnection;I)Z
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->buildInputMethodListLocked(Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->calledFromValidUserLocked()Z
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->calledWithValidTokenLocked(Landroid/os/IBinder;)Z
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->clearCurMethodLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodList(I)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->calledFromValidUserLocked()Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->calledWithValidTokenLocked(Landroid/os/IBinder;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->canShowInputMethodPickerLocked(Lcom/android/internal/view/IInputMethodClient;)Z
+HSPLcom/android/server/inputmethod/InputMethodManagerService;->chooseNewDefaultIMELocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->clearClientSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->clearCurMethodLocked()V
+PLcom/android/server/inputmethod/InputMethodManagerService;->computeImeDisplayIdForTarget(ILcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;)I
+PLcom/android/server/inputmethod/InputMethodManagerService;->createInputContentUriToken(Landroid/os/IBinder;Landroid/net/Uri;Ljava/lang/String;)Lcom/android/internal/inputmethod/IInputContentUriToken;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->executeOrSendMessage(Landroid/os/IInterface;Landroid/os/Message;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->finishSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getActivityViewToScreenMatrixLocked(II)Landroid/graphics/Matrix;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getAppShowFlags()I
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentInputMethodSubtype()Landroid/view/inputmethod/InputMethodSubtype;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getCurrentInputMethodSubtypeLocked()Landroid/view/inputmethod/InputMethodSubtype;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodList(I)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListAsUser(I)Ljava/util/List;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListLocked(I)Ljava/util/List;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodSubtypeListLocked(Ljava/lang/String;ZI)Ljava/util/List;
-PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodList(I)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodListLocked(I)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodSubtypeList(Ljava/lang/String;Z)Ljava/util/List;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getEnabledInputMethodSubtypeListLocked(Ljava/lang/String;ZI)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodManagerService;->getImeShowFlags()I
+HPLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodList(I)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodListAsUser(I)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodManagerService;->getInputMethodListLocked(I)Ljava/util/List;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->handleSetInteractive(Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->handleMessage(Landroid/os/Message;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->handleSetInteractive(Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->hideCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
 PLcom/android/server/inputmethod/InputMethodManagerService;->hideInputMethodMenu()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->hideInputMethodMenuLocked()V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->hideInputMethodMenuLocked()V
 PLcom/android/server/inputmethod/InputMethodManagerService;->hideMySoftInput(Landroid/os/IBinder;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->hideSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->isKeyguardLocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->isScreenLocked()Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->lambda$new$0$InputMethodManagerService(I)Z
 PLcom/android/server/inputmethod/InputMethodManagerService;->notifyUserAction(Landroid/os/IBinder;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->onActionLocaleChanged()V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->onSessionCreated(Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onActionLocaleChanged()V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->onSessionCreated(Lcom/android/internal/view/IInputMethod;Lcom/android/internal/view/IInputMethodSession;Landroid/view/InputChannel;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->onUnlockUser(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->onUnlockUser(I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->queryInputMethodServicesInternal(Landroid/content/Context;ILandroid/util/ArrayMap;Landroid/util/ArrayMap;Ljava/util/ArrayList;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->reportStartInput(Landroid/os/IBinder;Landroid/os/IBinder;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->removeClient(Lcom/android/internal/view/IInputMethodClient;)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->reportActivityView(Lcom/android/internal/view/IInputMethodClient;I[F)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->reportFullscreenMode(Landroid/os/IBinder;Z)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->reportStartInput(Landroid/os/IBinder;Landroid/os/IBinder;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->requestClientSessionLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;)V
 PLcom/android/server/inputmethod/InputMethodManagerService;->resetCurrentMethodAndClient(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->resetDefaultImeLocked(Landroid/content/Context;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->resetSelectedInputMethodAndSubtypeLocked(Ljava/lang/String;)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setAdditionalInputMethodSubtypes(Ljava/lang/String;[Landroid/view/inputmethod/InputMethodSubtype;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->setEnabledSessionInMainThread(Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->setImeWindowStatus(Landroid/os/IBinder;II)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodAndSubtype(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodEnabledLocked(Ljava/lang/String;Z)Z
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodLocked(Ljava/lang/String;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->setInputMethodWithSubtypeIdLocked(Landroid/os/IBinder;Ljava/lang/String;I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->setSelectedInputMethodAndSubtypeLocked(Landroid/view/inputmethod/InputMethodInfo;IZ)V
 PLcom/android/server/inputmethod/InputMethodManagerService;->shouldOfferSwitchingToNextInputMethod(Landroid/os/IBinder;)Z
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->showCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->shouldShowImeSwitcherLocked(I)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->showCurrentInputLocked(ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->showCurrentInputLocked(Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z
+PLcom/android/server/inputmethod/InputMethodManagerService;->showInputMethodMenu(ZI)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->showInputMethodPickerFromClient(Lcom/android/internal/view/IInputMethodClient;I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->showInputMethodPickerFromSystem(Lcom/android/internal/view/IInputMethodClient;II)V
 PLcom/android/server/inputmethod/InputMethodManagerService;->showMySoftInput(Landroid/os/IBinder;I)V
-PLcom/android/server/inputmethod/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;II)Lcom/android/internal/view/InputBindResult;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocusInternalLocked(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;III)Lcom/android/internal/view/InputBindResult;
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->showSoftInput(Lcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;ILandroid/os/ResultReceiver;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocus(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;II)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputOrWindowGainedFocusInternalLocked(ILcom/android/internal/view/IInputMethodClient;Landroid/os/IBinder;IIILandroid/view/inputmethod/EditorInfo;Lcom/android/internal/view/IInputContext;III)Lcom/android/internal/view/InputBindResult;
+HPLcom/android/server/inputmethod/InputMethodManagerService;->startInputUncheckedLocked(Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;Lcom/android/internal/view/IInputContext;ILandroid/view/inputmethod/EditorInfo;II)Lcom/android/internal/view/InputBindResult;
 PLcom/android/server/inputmethod/InputMethodManagerService;->switchToNextInputMethod(Landroid/os/IBinder;Z)Z
-PLcom/android/server/inputmethod/InputMethodManagerService;->switchUserLocked(I)V
+PLcom/android/server/inputmethod/InputMethodManagerService;->switchToPreviousInputMethod(Landroid/os/IBinder;)Z
+HPLcom/android/server/inputmethod/InputMethodManagerService;->switchUserLocked(I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->systemRunning(Lcom/android/server/statusbar/StatusBarManagerService;)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentClientLocked(I)V
-HSPLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentMethodLocked()V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->unbindCurrentMethodLocked()V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->updateCurrentProfileIds()V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->updateFromSettingsLocked(Z)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->updateInputMethodsFromSettingsLocked(Z)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->updateKeyboardFromSettingsLocked()V
-PLcom/android/server/inputmethod/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
+HPLcom/android/server/inputmethod/InputMethodManagerService;->updateStatusIcon(Landroid/os/IBinder;Ljava/lang/String;I)V
 HSPLcom/android/server/inputmethod/InputMethodManagerService;->updateSystemUiLocked(II)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;-><init>(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)V
 HSPLcom/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;->dump(Landroid/util/Printer;)V
 HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->filterImeSubtypeList(Ljava/util/List;Z)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->getNextInputMethod(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;->onUserActionLocked(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><clinit>()V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;-><init>(Ljava/util/List;Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$1;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->access$100(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->dump(Landroid/util/Printer;Ljava/lang/String;)V
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->getNextInputMethodLocked(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->getUsageRank(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;->onUserAction(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
 HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;-><init>(Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/view/inputmethod/InputMethodInfo;ILjava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->compareTo(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;)I
-HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->compareNullableCharSequences(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)I
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->compareTo(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;)I
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->compareTo(Ljava/lang/Object;)I
 HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->parseLanguageFromLocaleString(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;->toString()Ljava/lang/String;
 HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;-><init>(Landroid/content/Context;Lcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;)V
 HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;->getSortedInputMethodAndSubtypeList(ZZ)Ljava/util/List;
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;-><init>(Ljava/util/List;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->access$300(Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;)Ljava/util/List;
 PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;->dump(Landroid/util/Printer;Ljava/lang/String;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><clinit>()V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;-><init>(Lcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;Landroid/content/Context;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->access$000(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->calculateSubtypeId(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)I
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->createInstanceLocked(Lcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;Landroid/content/Context;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->dump(Landroid/util/Printer;)V
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getNextInputMethodLocked(ZLandroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->getSortedInputMethodAndSubtypeListLocked(ZZ)Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->onUserActionLocked(Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)V
+HSPLcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;->resetCircularListLocked(Landroid/content/Context;)V
+HSPLcom/android/server/inputmethod/InputMethodSystemProperty;-><clinit>()V
+HSPLcom/android/server/inputmethod/InputMethodSystemProperty;->getMultiClientImeComponentName()Landroid/content/ComponentName;
 HSPLcom/android/server/inputmethod/InputMethodUtils$1;-><init>()V
-HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillAuxiliaryImes(Ljava/util/ArrayList;Landroid/content/Context;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
-HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillImes(Ljava/util/ArrayList;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodUtils$1;->get(Landroid/view/inputmethod/InputMethodSubtype;)Ljava/util/Locale;
+PLcom/android/server/inputmethod/InputMethodUtils$1;->get(Ljava/lang/Object;)Ljava/util/Locale;
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;-><init>()V
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;-><init>(Lcom/android/server/inputmethod/InputMethodUtils$1;)V
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->build()Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillAuxiliaryImes(Ljava/util/ArrayList;Landroid/content/Context;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->fillImes(Ljava/util/ArrayList;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;->isEmpty()Z
+HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;-><clinit>()V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;-><init>(Landroid/content/res/Resources;Landroid/content/ContentResolver;Landroid/util/ArrayMap;IZ)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->addSubtypeToHistory(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->appendAndPutEnabledInputMethodLocked(Ljava/lang/String;Z)V
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->appendAndPutEnabledInputMethodLocked(Ljava/lang/String;Z)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->buildInputMethodsAndSubtypeList(Ljava/lang/String;Landroid/text/TextUtils$SimpleStringSplitter;Landroid/text/TextUtils$SimpleStringSplitter;)Ljava/util/List;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->createEnabledInputMethodListLocked(Ljava/util/List;)Ljava/util/ArrayList;
 PLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->dumpLocked(Landroid/util/Printer;Ljava/lang/String;)V
+HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getBoolean(Ljava/lang/String;Z)Z
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getCurrentUserId()I
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodListLocked()Ljava/util/ArrayList;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodSubtypeListLocked(Landroid/content/Context;Landroid/view/inputmethod/InputMethodInfo;Z)Ljava/util/List;
@@ -7371,956 +16813,1607 @@
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledInputMethodsStr()Ljava/lang/String;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getEnabledSubtypeHashCodeForInputMethodAndSubtypeLocked(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getInt(Ljava/lang/String;I)I
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getLastInputMethodAndSubtypeLocked()Landroid/util/Pair;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getLastSubtypeForInputMethodLocked(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getLastSubtypeForInputMethodLockedInternal(Ljava/lang/String;)Landroid/util/Pair;
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethod()Ljava/lang/String;
+HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethodSubtypeHashCode()I
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getSelectedInputMethodSubtypeId(Ljava/lang/String;)I
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->isCurrentProfile(I)Z
+HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->getSubtypeHistoryStr()Ljava/lang/String;
+HPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->isCurrentProfile(I)Z
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->isShowImeWithHardKeyboardEnabled()Z
-HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->isSubtypeSelected()Z
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->isSubtypeSelected()Z
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->loadInputMethodAndSubtypeHistoryLocked()Ljava/util/List;
+PLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putEnabledInputMethodsStr(Ljava/lang/String;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putInt(Ljava/lang/String;I)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putSelectedInputMethod(Ljava/lang/String;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putSelectedSubtype(I)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putString(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->putSubtypeHistoryStr(Ljava/lang/String;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->saveCurrentInputMethodAndSubtypeToHistory(Ljava/lang/String;Landroid/view/inputmethod/InputMethodSubtype;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->saveSubtypeHistory(Ljava/util/List;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->setCurrentProfileIds([I)V
 HSPLcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;->switchCurrentUser(IZ)V
-HSPLcom/android/server/inputmethod/InputMethodUtils;->checkIfPackageBelongsToUid(Landroid/app/AppOpsManager;ILjava/lang/String;)Z
+HSPLcom/android/server/inputmethod/InputMethodUtils;-><clinit>()V
+PLcom/android/server/inputmethod/InputMethodUtils;->access$000(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->access$100(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z
+HSPLcom/android/server/inputmethod/InputMethodUtils;->access$300()Ljava/lang/String;
+HSPLcom/android/server/inputmethod/InputMethodUtils;->canAddToLastInputMethod(Landroid/view/inputmethod/InputMethodSubtype;)Z
+HPLcom/android/server/inputmethod/InputMethodUtils;->checkIfPackageBelongsToUid(Landroid/app/AppOpsManager;ILjava/lang/String;)Z
 HSPLcom/android/server/inputmethod/InputMethodUtils;->containsSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Ljava/util/Locale;ZLjava/lang/String;)Z
-HSPLcom/android/server/inputmethod/InputMethodUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/ArrayList;Z)Ljava/util/ArrayList;
-HSPLcom/android/server/inputmethod/InputMethodUtils;->getFallbackLocaleForDefaultIme(Ljava/util/ArrayList;Landroid/content/Context;)Ljava/util/Locale;
-PLcom/android/server/inputmethod/InputMethodUtils;->getImeAndSubtypeDisplayName(Landroid/content/Context;Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Ljava/lang/CharSequence;
+HPLcom/android/server/inputmethod/InputMethodUtils;->findLastResortApplicableSubtypeLocked(Landroid/content/res/Resources;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;Z)Landroid/view/inputmethod/InputMethodSubtype;
+PLcom/android/server/inputmethod/InputMethodUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodUtils;->getDefaultEnabledImes(Landroid/content/Context;Ljava/util/ArrayList;Z)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodUtils;->getFallbackLocaleForDefaultIme(Ljava/util/ArrayList;Landroid/content/Context;)Ljava/util/Locale;
+HPLcom/android/server/inputmethod/InputMethodUtils;->getImeAndSubtypeDisplayName(Landroid/content/Context;Landroid/view/inputmethod/InputMethodInfo;Landroid/view/inputmethod/InputMethodSubtype;)Ljava/lang/CharSequence;
 HSPLcom/android/server/inputmethod/InputMethodUtils;->getImplicitlyApplicableSubtypesLocked(Landroid/content/res/Resources;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
 HSPLcom/android/server/inputmethod/InputMethodUtils;->getImplicitlyApplicableSubtypesLockedImpl(Landroid/content/res/Resources;Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
-HSPLcom/android/server/inputmethod/InputMethodUtils;->getMinimumKeyboardSetWithSystemLocale(Ljava/util/ArrayList;Landroid/content/Context;Ljava/util/Locale;Ljava/util/Locale;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
+HSPLcom/android/server/inputmethod/InputMethodUtils;->getLanguageFromLocaleString(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/inputmethod/InputMethodUtils;->getMinimumKeyboardSetWithSystemLocale(Ljava/util/ArrayList;Landroid/content/Context;Ljava/util/Locale;Ljava/util/Locale;)Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
 HSPLcom/android/server/inputmethod/InputMethodUtils;->getMostApplicableDefaultIME(Ljava/util/List;)Landroid/view/inputmethod/InputMethodInfo;
-HSPLcom/android/server/inputmethod/InputMethodUtils;->getSystemLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale;
-HSPLcom/android/server/inputmethod/InputMethodUtils;->isSystemAuxilialyImeThatHasAutomaticSubtype(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z
-HSPLcom/android/server/inputmethod/InputMethodUtils;->resolveUserId(IILjava/io/PrintWriter;)[I
+HSPLcom/android/server/inputmethod/InputMethodUtils;->getSubtypeIdFromHashCode(Landroid/view/inputmethod/InputMethodInfo;I)I
+HSPLcom/android/server/inputmethod/InputMethodUtils;->getSubtypes(Landroid/view/inputmethod/InputMethodInfo;)Ljava/util/ArrayList;
+PLcom/android/server/inputmethod/InputMethodUtils;->getSystemLocaleFromContext(Landroid/content/Context;)Ljava/util/Locale;
+PLcom/android/server/inputmethod/InputMethodUtils;->isSoftInputModeStateVisibleAllowed(II)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->isSystemAuxilialyImeThatHasAutomaticSubtype(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;Z)Z
+PLcom/android/server/inputmethod/InputMethodUtils;->isSystemImeThatHasSubtypeOf(Landroid/view/inputmethod/InputMethodInfo;Landroid/content/Context;ZLjava/util/Locale;ZLjava/lang/String;)Z
+HPLcom/android/server/inputmethod/InputMethodUtils;->isValidSubtypeId(Landroid/view/inputmethod/InputMethodInfo;I)Z
+HPLcom/android/server/inputmethod/InputMethodUtils;->resolveUserId(IILjava/io/PrintWriter;)[I
 HSPLcom/android/server/inputmethod/InputMethodUtils;->setDisabledUntilUsed(Landroid/content/pm/IPackageManager;Ljava/lang/String;ILjava/lang/String;)V
 HSPLcom/android/server/inputmethod/InputMethodUtils;->setNonSelectedSystemImesDisabledUntilUsed(Landroid/content/pm/IPackageManager;Ljava/util/List;ILjava/lang/String;)V
-HSPLcom/android/server/inputmethod/LocaleUtils;->filterByLanguage(Ljava/util/List;Lcom/android/server/inputmethod/LocaleUtils$LocaleExtractor;Landroid/os/LocaleList;Ljava/util/ArrayList;)V
-PLcom/android/server/job/-$$Lambda$JobConcurrencyManager$5dmb0pQscXPwEG6SBnhs7aCwpSs;->run()V
-HSPLcom/android/server/job/-$$Lambda$JobSchedulerService$AauD0it1BcgWldVm_V1m2Jo7_Zc;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/job/-$$Lambda$JobSchedulerService$Lfddr1PhKRLtm92W7niRGMWO69M;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/-$$Lambda$JobSchedulerService$V6_ZmVmzJutg4w0s0LktDOsRAss;-><init>()V
-PLcom/android/server/job/-$$Lambda$JobSchedulerService$V6_ZmVmzJutg4w0s0LktDOsRAss;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/job/-$$Lambda$JobSchedulerService$e8zIA2HHN2tnGMuc6TZ2xWw_c20;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/-$$Lambda$JobSchedulerService$rARZcsrvtM2sYbF4SrEE2BXDQ3U;-><init>(I)V
-PLcom/android/server/job/-$$Lambda$JobSchedulerService$rARZcsrvtM2sYbF4SrEE2BXDQ3U;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/job/-$$Lambda$JobStore$1$Wgepg1oHZp0-Q01q1baIVZKWujU;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/-$$Lambda$JobStore$JobSet$D9839QVHHu4X-hnxouyIMkP5NWA;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/job/-$$Lambda$JobStore$JobSet$id1Y3Yh8Y9sEb-njlNCUNay6U9k;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/JobConcurrencyManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->canJobStart(Z)Z
-PLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->getFgRunningJobCountToNote()I
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->getTotalRunningJobCountToNote()I
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->incrementPendingJobCount(Z)V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->incrementRunningJobCount(Z)V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->logStatus()V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->onCountDone()V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->onStartingNewJob(Z)V
-HSPLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->reset(III)V
-PLcom/android/server/job/JobConcurrencyManager$JobCountTracker;->toString()Ljava/lang/String;
-HSPLcom/android/server/job/JobConcurrencyManager;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsInternalLocked()V
-HSPLcom/android/server/job/JobConcurrencyManager;->assignJobsToContextsLocked()V
-PLcom/android/server/job/JobConcurrencyManager;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;JJ)V
-PLcom/android/server/job/JobConcurrencyManager;->dumpProtoLocked(Landroid/util/proto/ProtoOutputStream;JJJ)V
-HSPLcom/android/server/job/JobConcurrencyManager;->onInteractiveStateChanged(Z)V
-HSPLcom/android/server/job/JobConcurrencyManager;->onSystemReady()V
-PLcom/android/server/job/JobConcurrencyManager;->rampUpForScreenOff()V
-HSPLcom/android/server/job/JobConcurrencyManager;->refreshSystemStateLocked()V
-HSPLcom/android/server/job/JobConcurrencyManager;->updateMaxCountsLocked()V
-HSPLcom/android/server/job/JobPackageTracker$DataSet;-><init>()V
-PLcom/android/server/job/JobPackageTracker$DataSet;->addTo(Lcom/android/server/job/JobPackageTracker$DataSet;J)V
-HSPLcom/android/server/job/JobPackageTracker$DataSet;->decActive(ILjava/lang/String;JI)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->decActiveTop(ILjava/lang/String;JI)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->dump(Landroid/util/proto/ProtoOutputStream;JJJI)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;JJI)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->finish(Lcom/android/server/job/JobPackageTracker$DataSet;J)V
-HSPLcom/android/server/job/JobPackageTracker$DataSet;->getOrCreateEntry(ILjava/lang/String;)Lcom/android/server/job/JobPackageTracker$PackageEntry;
-PLcom/android/server/job/JobPackageTracker$DataSet;->printDuration(Ljava/io/PrintWriter;JJILjava/lang/String;)V
-PLcom/android/server/job/JobPackageTracker$DataSet;->printPackageEntryState(Landroid/util/proto/ProtoOutputStream;JJI)V
-HSPLcom/android/server/job/JobPackageTracker;-><init>()V
-HSPLcom/android/server/job/JobPackageTracker;->addEvent(IILjava/lang/String;IILjava/lang/String;)V
-PLcom/android/server/job/JobPackageTracker;->dump(Landroid/util/proto/ProtoOutputStream;JI)V
-PLcom/android/server/job/JobPackageTracker;->dump(Ljava/io/PrintWriter;Ljava/lang/String;I)V
-PLcom/android/server/job/JobPackageTracker;->dumpHistory(Landroid/util/proto/ProtoOutputStream;JI)V
-PLcom/android/server/job/JobPackageTracker;->dumpHistory(Ljava/io/PrintWriter;Ljava/lang/String;I)Z
-HSPLcom/android/server/job/JobPackageTracker;->getLoadFactor(Lcom/android/server/job/controllers/JobStatus;)F
-HSPLcom/android/server/job/JobPackageTracker;->noteActive(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobPackageTracker;->noteInactive(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)V
-HSPLcom/android/server/job/JobPackageTracker;->rebatchIfNeeded(J)V
-HSPLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;-><init>(Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;)V
-HSPLcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;->toString()Ljava/lang/String;
-HSPLcom/android/server/job/JobSchedulerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/job/JobSchedulerService$2;->onUidActive(I)V
-HSPLcom/android/server/job/JobSchedulerService$2;->onUidGone(IZ)V
-HSPLcom/android/server/job/JobSchedulerService$2;->onUidIdle(IZ)V
-HSPLcom/android/server/job/JobSchedulerService$2;->onUidStateChanged(IIJ)V
-PLcom/android/server/job/JobSchedulerService$4;->compare(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)I
-PLcom/android/server/job/JobSchedulerService$4;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/job/JobSchedulerService$Constants;-><init>()V
-PLcom/android/server/job/JobSchedulerService$Constants;->dump(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/job/JobSchedulerService$Constants;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/job/JobSchedulerService$Constants;->updateConstantsLocked(Ljava/lang/String;)V
-HSPLcom/android/server/job/JobSchedulerService$ConstantsObserver;->start(Landroid/content/ContentResolver;)V
-HSPLcom/android/server/job/JobSchedulerService$ConstantsObserver;->updateConstants()V
-HSPLcom/android/server/job/JobSchedulerService$JobHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->canPersistJobs(II)Z
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancel(I)V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->cancelAll()V
-PLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enforceValidJobRequest(ILandroid/app/job/JobInfo;)V
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->enqueue(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;)I
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getAllPendingJobs()Ljava/util/List;
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->getPendingJob(I)Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->schedule(Landroid/app/job/JobInfo;)I
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->scheduleAsPackage(Landroid/app/job/JobInfo;Ljava/lang/String;ILjava/lang/String;)I
-HSPLcom/android/server/job/JobSchedulerService$JobSchedulerStub;->validateJobFlags(Landroid/app/job/JobInfo;I)V
-PLcom/android/server/job/JobSchedulerService$LocalService;->addBackingUpUid(I)V
-HSPLcom/android/server/job/JobSchedulerService$LocalService;->baseHeartbeatForApp(Ljava/lang/String;II)J
-HSPLcom/android/server/job/JobSchedulerService$LocalService;->currentHeartbeat()J
-HSPLcom/android/server/job/JobSchedulerService$LocalService;->getPersistStats()Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
-HSPLcom/android/server/job/JobSchedulerService$LocalService;->getSystemScheduledPendingJobs()Ljava/util/List;
-HSPLcom/android/server/job/JobSchedulerService$LocalService;->noteJobStart(Ljava/lang/String;I)V
-PLcom/android/server/job/JobSchedulerService$LocalService;->removeBackingUpUid(I)V
-PLcom/android/server/job/JobSchedulerService$MaxJobCounts;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService$MaxJobCounts;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/job/JobSchedulerService$MaxJobCounts;->getMaxBg()I
-HSPLcom/android/server/job/JobSchedulerService$MaxJobCounts;->getMaxTotal()I
-HSPLcom/android/server/job/JobSchedulerService$MaxJobCounts;->getMinBg()I
-HSPLcom/android/server/job/JobSchedulerService$MaxJobCounts;->parse(Landroid/util/KeyValueListParser;)V
-PLcom/android/server/job/JobSchedulerService$MaxJobCountsPerMemoryTrimLevel;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;->postProcess()V
-HSPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;->postProcess()V
-HSPLcom/android/server/job/JobSchedulerService$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/job/JobSchedulerService$StandbyTracker;->onParoleStateChanged(Z)V
-HSPLcom/android/server/job/JobSchedulerService$StandbyTracker;->onUserInteractionStarted(Ljava/lang/String;I)V
-HSPLcom/android/server/job/JobSchedulerService$ThermalStatusListener;->onStatusChange(I)V
-HSPLcom/android/server/job/JobSchedulerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/job/JobSchedulerService;->areComponentsInPlaceLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobSchedulerService;->areUsersStartedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobSchedulerService;->cancelJob(III)Z
-HSPLcom/android/server/job/JobSchedulerService;->cancelJobImplLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Ljava/lang/String;)V
-HSPLcom/android/server/job/JobSchedulerService;->cancelJobsForNonExistentUsers()V
-HSPLcom/android/server/job/JobSchedulerService;->cancelJobsForPackageAndUid(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/job/JobSchedulerService;->cancelJobsForUid(ILjava/lang/String;)Z
-PLcom/android/server/job/JobSchedulerService;->dumpInternal(Lcom/android/internal/util/IndentingPrintWriter;I)V
-PLcom/android/server/job/JobSchedulerService;->dumpInternalProto(Ljava/io/FileDescriptor;I)V
-HSPLcom/android/server/job/JobSchedulerService;->evaluateJobPriorityLocked(Lcom/android/server/job/controllers/JobStatus;)I
-HSPLcom/android/server/job/JobSchedulerService;->getConstants()Lcom/android/server/job/JobSchedulerService$Constants;
-HSPLcom/android/server/job/JobSchedulerService;->getCurrentHeartbeat()J
-HSPLcom/android/server/job/JobSchedulerService;->getJobStore()Lcom/android/server/job/JobStore;
-HSPLcom/android/server/job/JobSchedulerService;->getLock()Ljava/lang/Object;
-HSPLcom/android/server/job/JobSchedulerService;->getPendingJob(II)Landroid/app/job/JobInfo;
-HSPLcom/android/server/job/JobSchedulerService;->getPendingJobs(I)Ljava/util/List;
-HSPLcom/android/server/job/JobSchedulerService;->getRescheduleJobForFailureLocked(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobSchedulerService;->getRescheduleJobForPeriodic(Lcom/android/server/job/controllers/JobStatus;)Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobSchedulerService;->getTestableContext()Landroid/content/Context;
-PLcom/android/server/job/JobSchedulerService;->heartbeatWhenJobsLastRun(Lcom/android/server/job/controllers/JobStatus;)J
-HSPLcom/android/server/job/JobSchedulerService;->heartbeatWhenJobsLastRun(Ljava/lang/String;I)J
-HSPLcom/android/server/job/JobSchedulerService;->isChainedAttributionEnabled()Z
-HSPLcom/android/server/job/JobSchedulerService;->isComponentUsable(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobSchedulerService;->isCurrentlyActiveLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobSchedulerService;->isReadyToBeExecutedLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobSchedulerService;->lambda$onBootPhase$2$JobSchedulerService(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobSchedulerService;->maybeQueueReadyJobsForExecutionLocked()V
-HSPLcom/android/server/job/JobSchedulerService;->maybeRunPendingJobsLocked()V
-HSPLcom/android/server/job/JobSchedulerService;->noteJobsNonpending(Ljava/util/List;)V
-HSPLcom/android/server/job/JobSchedulerService;->noteJobsPending(Ljava/util/List;)V
-HSPLcom/android/server/job/JobSchedulerService;->onBootPhase(I)V
-HSPLcom/android/server/job/JobSchedulerService;->onControllerStateChanged()V
-PLcom/android/server/job/JobSchedulerService;->onDeviceIdleStateChanged(Z)V
-HSPLcom/android/server/job/JobSchedulerService;->onJobCompletedLocked(Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/JobSchedulerService;->onRunJobNow(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobSchedulerService;->onStart()V
-HSPLcom/android/server/job/JobSchedulerService;->onStartUser(I)V
-HSPLcom/android/server/job/JobSchedulerService;->onUnlockUser(I)V
-HSPLcom/android/server/job/JobSchedulerService;->queueReadyJobsForExecutionLocked()V
-HSPLcom/android/server/job/JobSchedulerService;->reportActiveLocked()V
-HSPLcom/android/server/job/JobSchedulerService;->scheduleAsPackage(Landroid/app/job/JobInfo;Landroid/app/job/JobWorkItem;ILjava/lang/String;ILjava/lang/String;)I
-HSPLcom/android/server/job/JobSchedulerService;->setLastJobHeartbeatLocked(Ljava/lang/String;IJ)V
-PLcom/android/server/job/JobSchedulerService;->sortJobs(Ljava/util/List;)V
-HSPLcom/android/server/job/JobSchedulerService;->standbyBucketForPackage(Ljava/lang/String;IJ)I
-HSPLcom/android/server/job/JobSchedulerService;->startTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobSchedulerService;->stopJobOnServiceContextLocked(Lcom/android/server/job/controllers/JobStatus;ILjava/lang/String;)Z
-HSPLcom/android/server/job/JobSchedulerService;->stopNonReadyActiveJobsLocked()V
-HSPLcom/android/server/job/JobSchedulerService;->stopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)Z
-HSPLcom/android/server/job/JobSchedulerService;->updateUidState(II)V
-HSPLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStartMessage(IZ)V
-PLcom/android/server/job/JobServiceContext$JobCallback;->acknowledgeStopMessage(IZ)V
-HSPLcom/android/server/job/JobServiceContext$JobCallback;->completeWork(II)Z
-HSPLcom/android/server/job/JobServiceContext$JobCallback;->dequeueWork(I)Landroid/app/job/JobWorkItem;
-HSPLcom/android/server/job/JobServiceContext$JobCallback;->jobFinished(IZ)V
-HSPLcom/android/server/job/JobServiceContext$JobServiceHandler;-><init>(Lcom/android/server/job/JobServiceContext;Landroid/os/Looper;)V
-PLcom/android/server/job/JobServiceContext$JobServiceHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/job/JobServiceContext;->assertCallerLocked(Lcom/android/server/job/JobServiceContext$JobCallback;)V
-HSPLcom/android/server/job/JobServiceContext;->closeAndCleanupJobLocked(ZLjava/lang/String;)V
-HSPLcom/android/server/job/JobServiceContext;->deriveWorkSource(Lcom/android/server/job/controllers/JobStatus;)Landroid/os/WorkSource;
-HSPLcom/android/server/job/JobServiceContext;->doCallback(Lcom/android/server/job/JobServiceContext$JobCallback;ZLjava/lang/String;)V
-HSPLcom/android/server/job/JobServiceContext;->doCallbackLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->doCancelLocked(ILjava/lang/String;)V
-HSPLcom/android/server/job/JobServiceContext;->doCompleteWork(Lcom/android/server/job/JobServiceContext$JobCallback;II)Z
-HSPLcom/android/server/job/JobServiceContext;->doDequeueWork(Lcom/android/server/job/JobServiceContext$JobCallback;I)Landroid/app/job/JobWorkItem;
-HSPLcom/android/server/job/JobServiceContext;->executeRunnableJob(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/JobServiceContext;->handleCancelLocked(Ljava/lang/String;)V
-HSPLcom/android/server/job/JobServiceContext;->handleFinishedLocked(ZLjava/lang/String;)V
-PLcom/android/server/job/JobServiceContext;->handleOpTimeoutLocked()V
-HSPLcom/android/server/job/JobServiceContext;->handleServiceBoundLocked()V
-HSPLcom/android/server/job/JobServiceContext;->handleStartedLocked(Z)V
-HSPLcom/android/server/job/JobServiceContext;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/job/JobServiceContext;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/job/JobServiceContext;->scheduleOpTimeOutLocked()V
-PLcom/android/server/job/JobServiceContext;->sendStopMessageLocked(Ljava/lang/String;)V
-HSPLcom/android/server/job/JobStore$1;->addAttributesToJobTag(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobStore$1;->deepCopyBundle(Landroid/os/PersistableBundle;I)Landroid/os/PersistableBundle;
-HSPLcom/android/server/job/JobStore$1;->run()V
-HSPLcom/android/server/job/JobStore$1;->writeConstraintsToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobStore$1;->writeExecutionCriteriaToXml(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/JobStore$1;->writeJobsMapImpl(Ljava/util/List;)V
-HSPLcom/android/server/job/JobStore$JobSet;->add(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobStore$JobSet;->countJobsForUid(I)I
-HSPLcom/android/server/job/JobStore$JobSet;->forEachJob(Ljava/util/function/Predicate;Ljava/util/function/Consumer;)V
-HSPLcom/android/server/job/JobStore$JobSet;->get(II)Lcom/android/server/job/controllers/JobStatus;
-PLcom/android/server/job/JobStore$JobSet;->getAllJobs()Ljava/util/List;
-HSPLcom/android/server/job/JobStore$JobSet;->remove(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobStore$JobSet;->removeAll(Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildBuilderFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/job/JobInfo$Builder;
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildConstraintsFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->buildRtcExecutionTimesFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/Pair;
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->maybeBuildBackoffPolicyFromXml(Landroid/app/job/JobInfo$Builder;Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->readJobMapImpl(Ljava/io/FileInputStream;Z)Ljava/util/List;
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->restoreJobFromXml(ZLorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;->run()V
-HSPLcom/android/server/job/JobStore;-><init>(Landroid/content/Context;Ljava/lang/Object;Ljava/io/File;)V
-HSPLcom/android/server/job/JobStore;->access$000()Z
-HSPLcom/android/server/job/JobStore;->access$500(Landroid/util/Pair;J)Landroid/util/Pair;
-HSPLcom/android/server/job/JobStore;->add(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/JobStore;->convertRtcBoundsToElapsed(Landroid/util/Pair;J)Landroid/util/Pair;
-HSPLcom/android/server/job/JobStore;->initAndGet(Lcom/android/server/job/JobSchedulerService;)Lcom/android/server/job/JobStore;
-HSPLcom/android/server/job/JobStore;->maybeWriteStatusToDiskAsync()V
-HSPLcom/android/server/job/JobStore;->remove(Lcom/android/server/job/controllers/JobStatus;Z)Z
-PLcom/android/server/job/JobStore;->size()I
-PLcom/android/server/job/controllers/-$$Lambda$BackgroundJobsController$5YoufKSiImueGHv9obiMns19gXE;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/-$$Lambda$BackgroundJobsController$ypgNv91qX_67RP8z3Z9CsC0SRRs;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/-$$Lambda$DeviceIdleJobsController$JMszgdQK87AK2bjaiI_rwQuTKpc;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/-$$Lambda$DeviceIdleJobsController$essc-q8XD1L8ojfbmN1Aow_AVPk;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/-$$Lambda$QuotaController$Nr0Q3oPwHBGHfHSdpzIm80t7M7s;->run()V
-PLcom/android/server/job/controllers/-$$Lambda$QuotaController$RcL2StPbPl63Y4Q9VfiLaVPPkvk;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/-$$Lambda$QuotaController$StandbyTracker$HBosnPX15xU_maD6xbBsC7aJqOU;->run()V
-HSPLcom/android/server/job/controllers/-$$Lambda$QuotaController$StandbyTracker$UNCXPiY4xGPFhTnC-LuVzvqiAl4;->run()V
-PLcom/android/server/job/controllers/-$$Lambda$QuotaController$Sy3xZVkjJSYUVy4yBTZGfwQdAZ8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/-$$Lambda$QuotaController$kay8hdd-QD_Zt4NzUkXKjbZmoQI;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController$1;->updateAllJobs()V
-HSPLcom/android/server/job/controllers/BackgroundJobsController$1;->updateJobsForUid(IZ)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->lambda$dumpControllerStateLocked$0$BackgroundJobsController(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/BackgroundJobsController;->lambda$dumpControllerStateLocked$1$BackgroundJobsController(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateJobRestrictionsLocked(II)V
-HSPLcom/android/server/job/controllers/BackgroundJobsController;->updateSingleJobRestrictionLocked(Lcom/android/server/job/controllers/JobStatus;I)Z
-HSPLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/job/controllers/BatteryController$ChargingTracker;->onReceiveInternal(Landroid/content/Intent;)V
-HSPLcom/android/server/job/controllers/BatteryController$ChargingTracker;->startTracking()V
-PLcom/android/server/job/controllers/BatteryController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/BatteryController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/BatteryController;->maybeReportNewChargingStateLocked()V
-HSPLcom/android/server/job/controllers/BatteryController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/BatteryController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/ConnectivityController$1;->onAvailable(Landroid/net/Network;)V
-HSPLcom/android/server/job/controllers/ConnectivityController$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/job/controllers/ConnectivityController$1;->onLost(Landroid/net/Network;)V
-HSPLcom/android/server/job/controllers/ConnectivityController$2;->onUidRulesChanged(II)V
-HSPLcom/android/server/job/controllers/ConnectivityController$CcHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/ConnectivityController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/ConnectivityController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->isInsane(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z
-HSPLcom/android/server/job/controllers/ConnectivityController;->isNetworkAvailable(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/controllers/ConnectivityController;->isRelaxedSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;Lcom/android/server/job/JobSchedulerService$Constants;)Z
-HSPLcom/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
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeRevokeStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->onAppRemovedLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->onConstantsUpdatedLocked()V
-HSPLcom/android/server/job/controllers/ConnectivityController;->reevaluateStateLocked(I)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->requestStandbyExceptionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->revokeStandbyExceptionLocked(I)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->updateConstraintsSatisfied(Lcom/android/server/job/controllers/JobStatus;Landroid/net/Network;Landroid/net/NetworkCapabilities;)Z
-HSPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobs(ILandroid/net/Network;)V
-HSPLcom/android/server/job/controllers/ConnectivityController;->updateTrackedJobsLocked(Landroid/util/ArraySet;Landroid/net/Network;Landroid/util/SparseArray;)Z
-HSPLcom/android/server/job/controllers/ConnectivityController;->wouldBeReadyWithConnectivityLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/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$JobInstance;->detachLocked()V
-PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->scheduleLocked()V
-PLcom/android/server/job/controllers/ContentObserverController$JobInstance;->trigger()V
-PLcom/android/server/job/controllers/ContentObserverController$ObserverInstance;->onChange(ZLandroid/net/Uri;)V
-PLcom/android/server/job/controllers/ContentObserverController$TriggerRunnable;->run()V
-PLcom/android/server/job/controllers/ContentObserverController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/ContentObserverController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ContentObserverController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/ContentObserverController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/ContentObserverController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleJobsDelayHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->lambda$dumpControllerStateLocked$0$DeviceIdleJobsController(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->lambda$dumpControllerStateLocked$1$DeviceIdleJobsController(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->setUidActiveLocked(IZ)V
-PLcom/android/server/job/controllers/DeviceIdleJobsController;->updateIdleMode(Z)V
-HSPLcom/android/server/job/controllers/DeviceIdleJobsController;->updateTaskStateLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/IdleController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/IdleController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/IdleController;->initIdleStateTracking(Landroid/content/Context;)V
-HSPLcom/android/server/job/controllers/IdleController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/IdleController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-PLcom/android/server/job/controllers/IdleController;->reportNewIdleState(Z)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;IILjava/lang/String;IIJLjava/lang/String;IJJJJI)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Landroid/app/job/JobInfo;ILjava/lang/String;IIJLjava/lang/String;JJJJLandroid/util/Pair;I)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/JobStatus;-><init>(Lcom/android/server/job/controllers/JobStatus;JJJIJJ)V
-PLcom/android/server/job/controllers/JobStatus;->bucketName(I)Ljava/lang/String;
-HSPLcom/android/server/job/controllers/JobStatus;->completeWorkLocked(Landroid/app/IActivityManager;I)Z
-HSPLcom/android/server/job/controllers/JobStatus;->computeEstimatedNetworkBytesLocked()J
-HSPLcom/android/server/job/controllers/JobStatus;->createFromJobInfo(Landroid/app/job/JobInfo;ILjava/lang/String;ILjava/lang/String;)Lcom/android/server/job/controllers/JobStatus;
-HSPLcom/android/server/job/controllers/JobStatus;->dequeueWorkLocked()Landroid/app/job/JobWorkItem;
-PLcom/android/server/job/controllers/JobStatus;->dump(Landroid/util/proto/ProtoOutputStream;JZJ)V
-PLcom/android/server/job/controllers/JobStatus;->dump(Ljava/io/PrintWriter;Ljava/lang/String;ZJ)V
-PLcom/android/server/job/controllers/JobStatus;->dumpConstraints(Landroid/util/proto/ProtoOutputStream;JI)V
-PLcom/android/server/job/controllers/JobStatus;->dumpConstraints(Ljava/io/PrintWriter;I)V
-PLcom/android/server/job/controllers/JobStatus;->dumpJobWorkItem(Landroid/util/proto/ProtoOutputStream;JLandroid/app/job/JobWorkItem;)V
-PLcom/android/server/job/controllers/JobStatus;->dumpJobWorkItem(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/app/job/JobWorkItem;I)V
-HSPLcom/android/server/job/controllers/JobStatus;->enqueueWorkLocked(Landroid/app/IActivityManager;Landroid/app/job/JobWorkItem;)V
-HSPLcom/android/server/job/controllers/JobStatus;->getProtoConstraint(I)I
-PLcom/android/server/job/controllers/JobStatus;->getServiceComponent()Landroid/content/ComponentName;
-PLcom/android/server/job/controllers/JobStatus;->getUserId()I
-PLcom/android/server/job/controllers/JobStatus;->isReady()Z
-HSPLcom/android/server/job/controllers/JobStatus;->maybeAddForegroundExemption(Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/JobStatus;->prepareLocked(Landroid/app/IActivityManager;)V
-HSPLcom/android/server/job/controllers/JobStatus;->resolveTargetSdkVersion(Landroid/app/job/JobInfo;)I
-HSPLcom/android/server/job/controllers/JobStatus;->setConstraintSatisfied(IZ)Z
-HSPLcom/android/server/job/controllers/JobStatus;->stopTrackingJobLocked(Landroid/app/IActivityManager;Lcom/android/server/job/controllers/JobStatus;)V
-PLcom/android/server/job/controllers/JobStatus;->toShortString()Ljava/lang/String;
-HSPLcom/android/server/job/controllers/JobStatus;->unprepareLocked(Landroid/app/IActivityManager;)V
-HSPLcom/android/server/job/controllers/JobStatus;->updateEstimatedNetworkBytesLocked()V
-HSPLcom/android/server/job/controllers/JobStatus;->wouldBeReadyWithConstraint(I)Z
-PLcom/android/server/job/controllers/JobStatus;->writeToShortProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/job/controllers/QuotaController$1;->onAlarm()V
-HSPLcom/android/server/job/controllers/QuotaController$2;->onUidStateChanged(IIJ)V
-HSPLcom/android/server/job/controllers/QuotaController$ChargingTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/job/controllers/QuotaController$ChargingTracker;->startTracking()V
-PLcom/android/server/job/controllers/QuotaController$DeleteTimingSessionsFunctor$1;->test(Lcom/android/server/job/controllers/QuotaController$TimingSession;)Z
-PLcom/android/server/job/controllers/QuotaController$DeleteTimingSessionsFunctor$1;->test(Ljava/lang/Object;)Z
-PLcom/android/server/job/controllers/QuotaController$DeleteTimingSessionsFunctor;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;->accept(Ljava/lang/Object;)V
-PLcom/android/server/job/controllers/QuotaController$Package;->toString()Ljava/lang/String;
-PLcom/android/server/job/controllers/QuotaController$QcAlarmListener;->getTriggerTimeElapsed()J
-PLcom/android/server/job/controllers/QuotaController$QcAlarmListener;->isWaiting()Z
-PLcom/android/server/job/controllers/QuotaController$QcAlarmListener;->onAlarm()V
-PLcom/android/server/job/controllers/QuotaController$QcAlarmListener;->setTriggerTime(J)V
-HSPLcom/android/server/job/controllers/QuotaController$QcHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->lambda$onAppIdleStateChanged$0$QuotaController$StandbyTracker(IILjava/lang/String;)V
-HSPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->lambda$onParoleStateChanged$1$QuotaController$StandbyTracker()V
-HSPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/job/controllers/QuotaController$StandbyTracker;->onParoleStateChanged(Z)V
-PLcom/android/server/job/controllers/QuotaController$Timer;->dump(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/QuotaController$Timer;->dump(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->emitSessionLocked(J)V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->getBgJobCount()I
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->getCurrentDuration(J)J
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->isActive()Z
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->onStateChanged(JZ)V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->scheduleCutoff()V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->startTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/QuotaController$Timer;->stopTrackingJob(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/QuotaController$TimingSession;-><init>(JJI)V
-PLcom/android/server/job/controllers/QuotaController$TimingSession;->dump(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/job/controllers/QuotaController$TimingSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->postProcess()V
-HSPLcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;->reset()V
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->add(ILjava/lang/String;Ljava/lang/Object;)V
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->clear()V
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->delete(ILjava/lang/String;)V
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->forEach(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->get(ILjava/lang/String;)Ljava/lang/Object;
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->indexOfKey(I)I
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->keyAt(I)I
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->keyAt(II)Ljava/lang/String;
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->numPackagesForUser(I)I
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->numUsers()I
-HSPLcom/android/server/job/controllers/QuotaController$UserPackageMap;->valueAt(II)Ljava/lang/Object;
-HSPLcom/android/server/job/controllers/QuotaController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-PLcom/android/server/job/controllers/QuotaController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/QuotaController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/QuotaController;->getExecutionStatsLocked(ILjava/lang/String;IZ)Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
-HSPLcom/android/server/job/controllers/QuotaController;->handleNewChargingStateLocked()V
-HSPLcom/android/server/job/controllers/QuotaController;->incrementJobCount(ILjava/lang/String;I)V
-HSPLcom/android/server/job/controllers/QuotaController;->isUidInForeground(I)Z
-HSPLcom/android/server/job/controllers/QuotaController;->isUnderJobCountQuotaLocked(Lcom/android/server/job/controllers/QuotaController$ExecutionStats;I)Z
-HSPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(ILjava/lang/String;I)Z
-HSPLcom/android/server/job/controllers/QuotaController;->isWithinQuotaLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-PLcom/android/server/job/controllers/QuotaController;->lambda$dumpControllerStateLocked$2$QuotaController(Ljava/util/function/Predicate;Lcom/android/internal/util/IndentingPrintWriter;Landroid/util/ArraySet;)V
-PLcom/android/server/job/controllers/QuotaController;->lambda$dumpControllerStateLocked$3$QuotaController(Ljava/util/function/Predicate;Landroid/util/proto/ProtoOutputStream;Landroid/util/ArraySet;)V
-HSPLcom/android/server/job/controllers/QuotaController;->lambda$onConstantsUpdatedLocked$0$QuotaController()V
-HSPLcom/android/server/job/controllers/QuotaController;->maybeScheduleCleanupAlarmLocked()V
-PLcom/android/server/job/controllers/QuotaController;->maybeScheduleStartAlarmLocked(ILjava/lang/String;I)V
-HSPLcom/android/server/job/controllers/QuotaController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/QuotaController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateAllConstraintsLocked()V
-HSPLcom/android/server/job/controllers/QuotaController;->maybeUpdateConstraintForPkgLocked(ILjava/lang/String;)Z
-HSPLcom/android/server/job/controllers/QuotaController;->onAppRemovedLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/job/controllers/QuotaController;->onConstantsUpdatedLocked()V
-HSPLcom/android/server/job/controllers/QuotaController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/QuotaController;->saveTimingSession(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$TimingSession;)V
-HSPLcom/android/server/job/controllers/QuotaController;->updateExecutionStatsLocked(ILjava/lang/String;Lcom/android/server/job/controllers/QuotaController$ExecutionStats;)V
-HSPLcom/android/server/job/controllers/StateController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/StateController;->onAppRemovedLocked(Ljava/lang/String;I)V
-HSPLcom/android/server/job/controllers/StateController;->onConstantsUpdatedLocked()V
-HSPLcom/android/server/job/controllers/StateController;->prepareForExecutionLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/StateController;->reevaluateStateLocked(I)V
-HSPLcom/android/server/job/controllers/StateController;->rescheduleForFailureLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/StateController;->wouldBeReadyWithConstraintLocked(Lcom/android/server/job/controllers/JobStatus;I)Z
-PLcom/android/server/job/controllers/StorageController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/StorageController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/StorageController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/StorageController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-PLcom/android/server/job/controllers/TimeController$1;->onAlarm()V
-HSPLcom/android/server/job/controllers/TimeController$2;->onAlarm()V
-HSPLcom/android/server/job/controllers/TimeController;-><init>(Lcom/android/server/job/JobSchedulerService;)V
-HSPLcom/android/server/job/controllers/TimeController;->canStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;)Z
-HSPLcom/android/server/job/controllers/TimeController;->checkExpiredDeadlinesAndResetAlarm()V
-HSPLcom/android/server/job/controllers/TimeController;->checkExpiredDelaysAndResetAlarm()V
-HSPLcom/android/server/job/controllers/TimeController;->deriveWorkSource(ILjava/lang/String;)Landroid/os/WorkSource;
-PLcom/android/server/job/controllers/TimeController;->dumpControllerStateLocked(Landroid/util/proto/ProtoOutputStream;JLjava/util/function/Predicate;)V
-PLcom/android/server/job/controllers/TimeController;->dumpControllerStateLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/function/Predicate;)V
-HSPLcom/android/server/job/controllers/TimeController;->evaluateStateLocked(Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/TimeController;->maybeStartTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;)V
-HSPLcom/android/server/job/controllers/TimeController;->maybeStopTrackingJobLocked(Lcom/android/server/job/controllers/JobStatus;Lcom/android/server/job/controllers/JobStatus;Z)V
-HSPLcom/android/server/job/controllers/TimeController;->onConstantsUpdatedLocked()V
-HSPLcom/android/server/job/controllers/TimeController;->reevaluateStateLocked(I)V
-HSPLcom/android/server/job/controllers/TimeController;->updateAlarmWithListenerLocked(Ljava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;JLandroid/os/WorkSource;)V
-PLcom/android/server/job/controllers/idle/-$$Lambda$DeviceIdlenessTracker$-H1-ZwZAJ-vh10A0PeYXaZLj_R0;->onAlarm()V
-PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->handleIdleTrigger()V
-HSPLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->isIdle()Z
-PLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/job/controllers/idle/DeviceIdlenessTracker;->startTracking(Landroid/content/Context;Lcom/android/server/job/controllers/idle/IdlenessListener;)V
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;-><init>([BI)V
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;->compare([B[B)I
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;->compareTo(Lcom/android/server/inputmethod/LocaleUtils$ScoreEntry;)I
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;->compareTo(Ljava/lang/Object;)I
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;->set([BI)V
+PLcom/android/server/inputmethod/LocaleUtils$ScoreEntry;->updateIfBetter([BI)V
+HPLcom/android/server/inputmethod/LocaleUtils;->calculateMatchingSubScore(Landroid/icu/util/ULocale;Landroid/icu/util/ULocale;)B
+HPLcom/android/server/inputmethod/LocaleUtils;->filterByLanguage(Ljava/util/List;Lcom/android/server/inputmethod/LocaleUtils$LocaleExtractor;Landroid/os/LocaleList;Ljava/util/ArrayList;)V
+PLcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$1$AQicMJqZVSufBnAD8HJ81gPtf7Y;-><init>(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;Landroid/content/Intent;)V
+PLcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$1$AQicMJqZVSufBnAD8HJ81gPtf7Y;->run()V
+PLcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$uoiTatxA4aGwrlfDx0m8FP_FtCo;-><init>(Ljava/lang/String;)V
+PLcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$uoiTatxA4aGwrlfDx0m8FP_FtCo;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/integrity/AppIntegrityManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/integrity/AppIntegrityManagerService;->onStart()V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;-><init>(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;)V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;->lambda$onReceive$0$AppIntegrityManagerServiceImpl$1(Landroid/content/Intent;)V
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><clinit>()V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/integrity/engine/RuleEvaluationEngine;Lcom/android/server/integrity/IntegrityFileManager;Landroid/os/Handler;)V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManagerInternal;Lcom/android/server/integrity/engine/RuleEvaluationEngine;Lcom/android/server/integrity/IntegrityFileManager;Landroid/os/Handler;Z)V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->access$000(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;)Landroid/os/Handler;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->access$100(Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;Landroid/content/Intent;)V
+HSPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->create(Landroid/content/Context;)Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getAllowedInstallers(Landroid/content/pm/PackageInfo;)Ljava/util/Map;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getAllowedRuleProviders()Ljava/util/List;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getCertificateFingerprint(Landroid/content/pm/PackageInfo;)Ljava/lang/String;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getFingerprint(Landroid/content/pm/Signature;)Ljava/lang/String;
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getInstallationPath(Landroid/net/Uri;)Ljava/io/File;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getInstallerCertificateFingerprint(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getInstallerPackageName(Landroid/content/Intent;)Ljava/lang/String;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getLoggingResponse(Lcom/android/server/integrity/model/IntegrityCheckResult;)I
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getMultiApkInfo(Ljava/io/File;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getPackageArchiveInfo(Landroid/net/Uri;)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getPackageNameNormalized(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->getSignature(Landroid/content/pm/PackageInfo;)Landroid/content/pm/Signature;
+HPLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->handleIntegrityVerification(Landroid/content/Intent;)V
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->isCausedByAppCertRule(Lcom/android/server/integrity/model/IntegrityCheckResult;)Z
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->isCausedByInstallerRule(Lcom/android/server/integrity/model/IntegrityCheckResult;)Z
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->isRuleProvider(Ljava/lang/String;)Z
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->isSystemApp(Ljava/lang/String;)Z
+PLcom/android/server/integrity/AppIntegrityManagerServiceImpl;->lambda$isRuleProvider$1(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/integrity/IntegrityFileManager;-><clinit>()V
+HSPLcom/android/server/integrity/IntegrityFileManager;-><init>()V
+HSPLcom/android/server/integrity/IntegrityFileManager;-><init>(Lcom/android/server/integrity/parser/RuleParser;Lcom/android/server/integrity/serializer/RuleSerializer;Ljava/io/File;)V
+HSPLcom/android/server/integrity/IntegrityFileManager;->getInstance()Lcom/android/server/integrity/IntegrityFileManager;
+PLcom/android/server/integrity/IntegrityFileManager;->initialized()Z
+HSPLcom/android/server/integrity/IntegrityFileManager;->updateRuleIndexingController()V
+PLcom/android/server/integrity/engine/-$$Lambda$I1P1n5zkAf1R76LNtLXDmbu8DuM;-><init>(Ljava/util/List;)V
+PLcom/android/server/integrity/engine/-$$Lambda$RuleEvaluator$_b_bnHZ6Lv_0UPoz1qRhvn2moQI;-><clinit>()V
+PLcom/android/server/integrity/engine/-$$Lambda$RuleEvaluator$_b_bnHZ6Lv_0UPoz1qRhvn2moQI;-><init>()V
+PLcom/android/server/integrity/engine/-$$Lambda$RuleEvaluator$_yl214m5sWGIgjBG_8qMT_pIqSI;-><clinit>()V
+PLcom/android/server/integrity/engine/-$$Lambda$RuleEvaluator$_yl214m5sWGIgjBG_8qMT_pIqSI;-><init>()V
+PLcom/android/server/integrity/engine/-$$Lambda$RuleEvaluator$unAwA1sQfXbWYCFQp7qIaNkgC10;-><init>(Landroid/content/integrity/AppInstallMetadata;)V
+HSPLcom/android/server/integrity/engine/RuleEvaluationEngine;-><init>(Lcom/android/server/integrity/IntegrityFileManager;)V
+PLcom/android/server/integrity/engine/RuleEvaluationEngine;->allowedInstallersRule(Ljava/util/Map;)Ljava/util/Optional;
+PLcom/android/server/integrity/engine/RuleEvaluationEngine;->evaluate(Landroid/content/integrity/AppInstallMetadata;Ljava/util/Map;)Lcom/android/server/integrity/model/IntegrityCheckResult;
+HSPLcom/android/server/integrity/engine/RuleEvaluationEngine;->getRuleEvaluationEngine()Lcom/android/server/integrity/engine/RuleEvaluationEngine;
+PLcom/android/server/integrity/engine/RuleEvaluationEngine;->loadRules(Landroid/content/integrity/AppInstallMetadata;)Ljava/util/List;
+HPLcom/android/server/integrity/engine/RuleEvaluator;->evaluateRules(Ljava/util/List;Landroid/content/integrity/AppInstallMetadata;)Lcom/android/server/integrity/model/IntegrityCheckResult;
+PLcom/android/server/integrity/model/-$$Lambda$IntegrityCheckResult$Cdma_yQnvj3lcPg1ximae51_zEo;-><clinit>()V
+PLcom/android/server/integrity/model/-$$Lambda$IntegrityCheckResult$Cdma_yQnvj3lcPg1ximae51_zEo;-><init>()V
+PLcom/android/server/integrity/model/-$$Lambda$IntegrityCheckResult$uw4WN-XjK2pJvNXIEB_RL21qEcg;-><clinit>()V
+PLcom/android/server/integrity/model/-$$Lambda$IntegrityCheckResult$uw4WN-XjK2pJvNXIEB_RL21qEcg;-><init>()V
+PLcom/android/server/integrity/model/IntegrityCheckResult$Effect;-><clinit>()V
+PLcom/android/server/integrity/model/IntegrityCheckResult$Effect;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/integrity/model/IntegrityCheckResult;-><init>(Lcom/android/server/integrity/model/IntegrityCheckResult$Effect;Landroid/content/integrity/Rule;)V
+PLcom/android/server/integrity/model/IntegrityCheckResult;-><init>(Lcom/android/server/integrity/model/IntegrityCheckResult$Effect;Ljava/util/List;)V
+PLcom/android/server/integrity/model/IntegrityCheckResult;->allow()Lcom/android/server/integrity/model/IntegrityCheckResult;
+PLcom/android/server/integrity/model/IntegrityCheckResult;->getEffect()Lcom/android/server/integrity/model/IntegrityCheckResult$Effect;
+PLcom/android/server/integrity/model/IntegrityCheckResult;->getLoggingResponse()I
+PLcom/android/server/integrity/model/IntegrityCheckResult;->getMatchedRules()Ljava/util/List;
+PLcom/android/server/integrity/model/IntegrityCheckResult;->getRule()Landroid/content/integrity/Rule;
+PLcom/android/server/integrity/model/IntegrityCheckResult;->isCausedByAppCertRule()Z
+PLcom/android/server/integrity/model/IntegrityCheckResult;->isCausedByInstallerRule()Z
+HSPLcom/android/server/integrity/parser/RuleBinaryParser;-><clinit>()V
+HSPLcom/android/server/integrity/parser/RuleBinaryParser;-><init>()V
+HSPLcom/android/server/integrity/serializer/RuleBinarySerializer;-><init>()V
+HSPLcom/android/server/lights/Light;-><init>()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/Light;
+HSPLcom/android/server/lights/LightsService$1;->getLight(I)Lcom/android/server/lights/LogicalLight;
+HSPLcom/android/server/lights/LightsService$2;-><init>(Lcom/android/server/lights/LightsService;)V
 HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;I)V
+HSPLcom/android/server/lights/LightsService$LightImpl;-><init>(Lcom/android/server/lights/LightsService;Landroid/content/Context;ILcom/android/server/lights/LightsService$1;)V
+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$1;)V
+HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(FII)V
 HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(I)V
 HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightness(II)V
+HSPLcom/android/server/lights/LightsService$LightImpl;->setBrightnessFloat(F)V
 HSPLcom/android/server/lights/LightsService$LightImpl;->setColor(I)V
-HSPLcom/android/server/lights/LightsService$LightImpl;->setFlashing(IIII)V
+HPLcom/android/server/lights/LightsService$LightImpl;->setFlashing(IIII)V
 HSPLcom/android/server/lights/LightsService$LightImpl;->setLightLocked(IIIII)V
+HSPLcom/android/server/lights/LightsService$LightImpl;->setLightUnchecked(IIIII)V
+HSPLcom/android/server/lights/LightsService$LightImpl;->shouldBeInLowPersistenceMode()Z
 HSPLcom/android/server/lights/LightsService$LightImpl;->turnOff()V
+HSPLcom/android/server/lights/LightsService$LightsManagerBinderService;-><init>(Lcom/android/server/lights/LightsService;)V
+HSPLcom/android/server/lights/LightsService$LightsManagerBinderService;-><init>(Lcom/android/server/lights/LightsService;Lcom/android/server/lights/LightsService$1;)V
 HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/lights/LightsService;-><init>(Landroid/content/Context;Landroid/hardware/light/ILights;Landroid/os/Looper;)V
+HSPLcom/android/server/lights/LightsService;->access$600(Lcom/android/server/lights/LightsService;)Landroid/hardware/light/ILights;
+HSPLcom/android/server/lights/LightsService;->access$900(Lcom/android/server/lights/LightsService;)[Lcom/android/server/lights/LightsService$LightImpl;
 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/LogicalLight;-><init>()V
+HSPLcom/android/server/location/-$$Lambda$5U-_NhZgxqnYDZhpyacq4qBxh8k;-><init>(Lcom/android/server/location/GnssSatelliteBlacklistHelper;)V
 HSPLcom/android/server/location/-$$Lambda$5U-_NhZgxqnYDZhpyacq4qBxh8k;->run()V
+PLcom/android/server/location/-$$Lambda$7zgzwOWgEFtr6DuyW9EYKot7bHU;-><init>(Lcom/android/server/location/NtpTimeHelper;)V
+PLcom/android/server/location/-$$Lambda$7zgzwOWgEFtr6DuyW9EYKot7bHU;->run()V
+PLcom/android/server/location/-$$Lambda$AbstractLocationProvider$3HtpTaeZPwUqdVjGVtj1KqJeRWw;-><init>(Lcom/android/server/location/AbstractLocationProvider;IILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/location/-$$Lambda$AbstractLocationProvider$3HtpTaeZPwUqdVjGVtj1KqJeRWw;->run()V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$Cz0MzfhYL-KpWWW0XmxsZTNwnI0;-><init>(Ljava/util/Set;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$Cz0MzfhYL-KpWWW0XmxsZTNwnI0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$FRdWEbu93JPBpviTG1AkogCflNc;-><init>(Lcom/android/server/location/AbstractLocationProvider;Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$FRdWEbu93JPBpviTG1AkogCflNc;->run()V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$I29l5_Y-rKhaHygNa-fvF70mzA0;-><init>(Lcom/android/server/location/AbstractLocationProvider$State;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$I29l5_Y-rKhaHygNa-fvF70mzA0;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$diUZq3K1KUpjC4EqB0SQY_fHHGM;-><init>(Lcom/android/server/location/AbstractLocationProvider$Listener;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$diUZq3K1KUpjC4EqB0SQY_fHHGM;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$kFGsZg9Hx50h6WYQeAMQABkRKNU;-><init>(Ljava/util/function/UnaryOperator;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$kFGsZg9Hx50h6WYQeAMQABkRKNU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$s_g7M1EFAxoisWC6LYYgN-hWTwc;-><init>(Z)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$s_g7M1EFAxoisWC6LYYgN-hWTwc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$tT5Ydpt2Xk0BtGNe34XjfHM0Bks;-><init>(Z)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$tT5Ydpt2Xk0BtGNe34XjfHM0Bks;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$wZCGZbIMAspHRG64AcKlNjhWJEk;-><init>(Lcom/android/internal/location/ProviderProperties;)V
+HSPLcom/android/server/location/-$$Lambda$AbstractLocationProvider$wZCGZbIMAspHRG64AcKlNjhWJEk;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/location/-$$Lambda$ActivityRecognitionProxy$1$d2hvjp-Sk2zwb2N0mtEiubZ0jBE;-><init>(Lcom/android/server/location/ActivityRecognitionProxy;)V
 PLcom/android/server/location/-$$Lambda$ActivityRecognitionProxy$1$d2hvjp-Sk2zwb2N0mtEiubZ0jBE;->run(Landroid/os/IBinder;)V
-HSPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$CFacmt7807NhDDkp6CgbkeGnMvQ;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+HSPLcom/android/server/location/-$$Lambda$AppForegroundHelper$7asxY_maANt1D_AUTchqbCjktH0;-><init>(Lcom/android/server/location/AppForegroundHelper;IZ)V
+HSPLcom/android/server/location/-$$Lambda$AppForegroundHelper$7asxY_maANt1D_AUTchqbCjktH0;->run()V
+HSPLcom/android/server/location/-$$Lambda$AppForegroundHelper$gltDhiWDJwfMNZ8gJdumXZH8_Hg;-><init>(Lcom/android/server/location/AppForegroundHelper;)V
+HSPLcom/android/server/location/-$$Lambda$AppForegroundHelper$gltDhiWDJwfMNZ8gJdumXZH8_Hg;->onUidImportance(II)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$7Uwy0RpQUtRsDYbocrZ-WuXEVJQ;-><init>(Lcom/android/server/location/ContextHubClientBroker;J)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$CFacmt7807NhDDkp6CgbkeGnMvQ;-><init>(Landroid/hardware/location/NanoAppMessage;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$CFacmt7807NhDDkp6CgbkeGnMvQ;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$NOnZ9Z0Vw11snzPmdVOE1pPrZ_4;-><init>(Lcom/android/server/location/ContextHubClientBroker;J)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$P9IUEzaG4gP8jALe00of9jdlrGw;-><init>(Lcom/android/server/location/ContextHubClientBroker;Landroid/hardware/location/NanoAppMessage;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$P9IUEzaG4gP8jALe00of9jdlrGw;->get()Ljava/lang/Object;
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$iBGtMeLZ6k5dYJZb_VEUfBBYh9s;-><init>(J)V
 PLcom/android/server/location/-$$Lambda$ContextHubClientBroker$iBGtMeLZ6k5dYJZb_VEUfBBYh9s;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientBroker$ykmLCadaR6NcV4R42i4K8zw4AWs;-><init>(J)V
 PLcom/android/server/location/-$$Lambda$ContextHubClientBroker$ykmLCadaR6NcV4R42i4K8zw4AWs;->accept(Landroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/-$$Lambda$ContextHubClientManager$VPD5ebhe8Z67S8QKuTR4KzeshK8;-><init>(J)V
 PLcom/android/server/location/-$$Lambda$ContextHubClientManager$VPD5ebhe8Z67S8QKuTR4KzeshK8;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/location/-$$Lambda$ContextHubClientManager$f15OSYbsSONpkXn7GinnrBPeumw;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientManager$f15OSYbsSONpkXn7GinnrBPeumw;-><init>(Landroid/hardware/location/NanoAppMessage;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubClientManager$f15OSYbsSONpkXn7GinnrBPeumw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/-$$Lambda$ContextHubClientManager$gN_vRogwyzr9qBjrQpKwwHzrFAo;-><init>(J)V
 PLcom/android/server/location/-$$Lambda$ContextHubClientManager$gN_vRogwyzr9qBjrQpKwwHzrFAo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/-$$Lambda$ContextHubService$CF_XmCHU9Bf2P5yun6nYrbm6Fpk;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/location/-$$Lambda$ContextHubService$CF_XmCHU9Bf2P5yun6nYrbm6Fpk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/-$$Lambda$ContextHubService$HPGvKluemttyVfAcSog-eXiJyHE;-><init>(Ljava/io/PrintWriter;)V
 PLcom/android/server/location/-$$Lambda$ContextHubService$HPGvKluemttyVfAcSog-eXiJyHE;->accept(Ljava/lang/Object;)V
-PLcom/android/server/location/-$$Lambda$ContextHubService$yrt4Ybb62ufyqsQQMJoTJ2JMw_4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/location/-$$Lambda$ContextHubService$yrt4Ybb62ufyqsQQMJoTJ2JMw_4;-><init>(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;)V
+HPLcom/android/server/location/-$$Lambda$ContextHubService$yrt4Ybb62ufyqsQQMJoTJ2JMw_4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/location/-$$Lambda$ContextHubTransactionManager$sHbjr4TaLEATkCX_yhD2L7ebuxE;-><init>(Lcom/android/server/location/ContextHubTransactionManager;Lcom/android/server/location/ContextHubServiceTransaction;)V
+HPLcom/android/server/location/-$$Lambda$GeocoderProxy$jfLn3HL2BzwsKdoI6ZZeFfEe10k;-><init>(DDILandroid/location/GeocoderParams;Ljava/util/List;)V
 PLcom/android/server/location/-$$Lambda$GeocoderProxy$jfLn3HL2BzwsKdoI6ZZeFfEe10k;->run(Landroid/os/IBinder;)Ljava/lang/Object;
+PLcom/android/server/location/-$$Lambda$GeocoderProxy$l4GRjTzjcqxZJILrVLX5qayXBE0;-><init>(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)V
+PLcom/android/server/location/-$$Lambda$GeocoderProxy$l4GRjTzjcqxZJILrVLX5qayXBE0;->run(Landroid/os/IBinder;)Ljava/lang/Object;
+PLcom/android/server/location/-$$Lambda$GeofenceProxy$GeofenceProxyServiceConnection$zlbg9IPCIuzTl4MNd_aO2VH84CU;-><init>(Lcom/android/server/location/GeofenceProxy;)V
+PLcom/android/server/location/-$$Lambda$GeofenceProxy$GeofenceProxyServiceConnection$zlbg9IPCIuzTl4MNd_aO2VH84CU;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$GeofenceProxy$hIfaTtsg4NqVfDRkaCxUg6rx90I;-><init>(Lcom/android/server/location/GeofenceProxy;)V
+PLcom/android/server/location/-$$Lambda$GeofenceProxy$hIfaTtsg4NqVfDRkaCxUg6rx90I;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$GeofenceProxy$nfSKchjbT2ANT9GbYwyAcTjzBwQ;-><init>(Lcom/android/server/location/GeofenceProxy;)V
 PLcom/android/server/location/-$$Lambda$GeofenceProxy$nfSKchjbT2ANT9GbYwyAcTjzBwQ;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$384RrX20Mx6OJsRiqsQcSxYdcZc;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$384RrX20Mx6OJsRiqsQcSxYdcZc;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$384RrX20Mx6OJsRiqsQcSxYdcZc;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$5tBf0Ru8L994vqKbXOeOBj2A-CA;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$5tBf0Ru8L994vqKbXOeOBj2A-CA;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$5tBf0Ru8L994vqKbXOeOBj2A-CA;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$8lp2ukEzg_Agf73p3ka-dqhWUpE;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$8lp2ukEzg_Agf73p3ka-dqhWUpE;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$8lp2ukEzg_Agf73p3ka-dqhWUpE;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$9cfNUAWKKutp5KSqhvHSGJNe0ao;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$9cfNUAWKKutp5KSqhvHSGJNe0ao;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$9cfNUAWKKutp5KSqhvHSGJNe0ao;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$aaV8BigB_1Oil1H82EHUb0zvWPo;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$aaV8BigB_1Oil1H82EHUb0zvWPo;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$aaV8BigB_1Oil1H82EHUb0zvWPo;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$rRu0NBMB8DgPt3DY5__6u_WNl7A;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$rRu0NBMB8DgPt3DY5__6u_WNl7A;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$rRu0NBMB8DgPt3DY5__6u_WNl7A;->set(I)Z
+HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$sKzdHBM7V7DxdhcWx1u8hipJYFo;-><clinit>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$sKzdHBM7V7DxdhcWx1u8hipJYFo;-><init>()V
 HSPLcom/android/server/location/-$$Lambda$GnssConfiguration$1$sKzdHBM7V7DxdhcWx1u8hipJYFo;->set(I)Z
-HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$66Ps_H__HqfpDfa8sAGZy2xaKsc;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$7an4_QLRsGpd_GYEEX9o8MWsh5g;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$AqYK7fn42KqHmtzfEEHCId_ucqc;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$OlaPfB60MVaXRIn-eVwZiybyWF4;->run()V
-HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$Q6M8z_ZBiD7BNs3kvNmVrqoHSng;->onNetworkAvailable()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$UbVMf2XkqNujf6ZZYbD3ITfhy98;->run()V
-HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$WbIUWqWbiKrZx6NHwSpsFU1pHKI;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$ii5CD-UWWm-fq57JzZZBF3Nxnic;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$oV78CWPlpzb195CgVgv-_YipNWw;->run()V
-PLcom/android/server/location/-$$Lambda$GnssLocationProvider$rE3aXybVXWDfHPxCjEXzxG9bPmo;->getGnssMetricsAsProtoString()Ljava/lang/String;
-PLcom/android/server/location/-$$Lambda$GnssMeasurementsProvider$Qlkb-fzzYggD17FlZmrylRJr2vE;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/-$$Lambda$GnssLocationProvider$3-p6UujuU3pwMrR_jYW3uvQiXNM;-><init>(Lcom/android/server/location/GnssLocationProvider;ILandroid/location/Location;)V
+PLcom/android/server/location/-$$Lambda$GnssLocationProvider$3-p6UujuU3pwMrR_jYW3uvQiXNM;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$Q6M8z_ZBiD7BNs3kvNmVrqoHSng;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/-$$Lambda$GnssLocationProvider$Q6M8z_ZBiD7BNs3kvNmVrqoHSng;->onNetworkAvailable()V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$_xEBoJSNGaiPvO5kj-sfJB7tZYk;-><init>(Lcom/android/server/location/GnssLocationProvider;[I[I)V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$_xEBoJSNGaiPvO5kj-sfJB7tZYk;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$adAUsgD5mK9uoxw0KEjaMYtp_Ro;-><init>(Lcom/android/server/location/GnssLocationProvider;II)V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$adAUsgD5mK9uoxw0KEjaMYtp_Ro;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$cSSwMZHkxTRwFeOp8gWaG_qGZ5A;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/-$$Lambda$GnssLocationProvider$cSSwMZHkxTRwFeOp8gWaG_qGZ5A;->onDeviceStationaryChanged(Z)V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$ecDMZdWsEh2URVlhxaEdh1Ifjc8;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/-$$Lambda$GnssLocationProvider$ecDMZdWsEh2URVlhxaEdh1Ifjc8;->getGnssMetricsAsProtoString()Ljava/lang/String;
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$iKRZ4-bb3otAVYEgv859Z4uWXAo;-><init>(Lcom/android/server/location/GnssLocationProvider;ILandroid/location/Location;IJ)V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$iKRZ4-bb3otAVYEgv859Z4uWXAo;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$jmXMIeP-Oz1yyVRIDOicfl2ucfI;-><init>(Lcom/android/server/location/GnssLocationProvider;I)V
+HSPLcom/android/server/location/-$$Lambda$GnssLocationProvider$jmXMIeP-Oz1yyVRIDOicfl2ucfI;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$nZP4qF7PEET3HrkcVZAYhG3Bm0c;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/location/GnssMeasurementsEvent;)V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$nZP4qF7PEET3HrkcVZAYhG3Bm0c;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$rgfO__O6aj3JBohawF88T-AfsaY;-><init>(Lcom/android/server/location/GnssLocationProvider;II)V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$rgfO__O6aj3JBohawF88T-AfsaY;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$zDU-4stA5kbnbj2CmSK2PauyroM;-><init>(Lcom/android/server/location/GnssLocationProvider$LocationChangeListener;Ljava/lang/String;Landroid/location/LocationManager;)V
+HPLcom/android/server/location/-$$Lambda$GnssLocationProvider$zDU-4stA5kbnbj2CmSK2PauyroM;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssMeasurementsProvider$Qlkb-fzzYggD17FlZmrylRJr2vE;-><init>(Lcom/android/server/location/GnssMeasurementsProvider;Landroid/location/GnssMeasurementsEvent;)V
+HPLcom/android/server/location/-$$Lambda$GnssMeasurementsProvider$Qlkb-fzzYggD17FlZmrylRJr2vE;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$YEGTN3glQ7Hr1FK-xXGbC4KcmJY;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler;)V
 PLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$YEGTN3glQ7Hr1FK-xXGbC4KcmJY;->run()V
-HSPLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$aTyNcuGLHmJGtXKl9qoZpMmhfBY;->run()V
-HSPLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$axxNnxmo3KqgsSDot69yokC4KVE;->run()V
-PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$68FOYPQxCAVSdtoWmmZNfYGGIJE;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$aTyNcuGLHmJGtXKl9qoZpMmhfBY;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler;Ljava/lang/Runnable;)V
+HPLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$aTyNcuGLHmJGtXKl9qoZpMmhfBY;->run()V
+PLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$axxNnxmo3KqgsSDot69yokC4KVE;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler;I[B)V
+PLcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$axxNnxmo3KqgsSDot69yokC4KVE;->run()V
+PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$0MNjUouf1HJVcFD10rzoJIkzCrw;-><init>(I)V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$0MNjUouf1HJVcFD10rzoJIkzCrw;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$6s2HBSMgP5pXrugfCvtIf9QHndI;-><clinit>()V
 PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$6s2HBSMgP5pXrugfCvtIf9QHndI;-><init>()V
-PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$AtHI8E6PAjonHH1N0ZGabW0VF6c;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
-HSPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$H9Tg_OtCE9BSJiAQYs_ITHFpiHU;-><init>()V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$6s2HBSMgP5pXrugfCvtIf9QHndI;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$AtHI8E6PAjonHH1N0ZGabW0VF6c;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;JLjava/lang/String;)V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$AtHI8E6PAjonHH1N0ZGabW0VF6c;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$H9Tg_OtCE9BSJiAQYs_ITHFpiHU;-><clinit>()V
+PLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$H9Tg_OtCE9BSJiAQYs_ITHFpiHU;-><init>()V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$H9Tg_OtCE9BSJiAQYs_ITHFpiHU;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$WA8CUTRQeFIyZhMJFtziHItmYNA;-><init>(Lcom/android/server/location/GnssStatusListenerHelper;I[I[F[F[F[F[F)V
+HPLcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$WA8CUTRQeFIyZhMJFtziHItmYNA;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$FLGfeDaxF8J3CE9m-TcOXh5j6ow;-><init>(Lcom/android/server/location/GnssVisibilityControl;)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$FLGfeDaxF8J3CE9m-TcOXh5j6ow;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$WNe_V-oiVnZtOTinPJBWWgUSctQ;-><init>(Lcom/android/server/location/GnssVisibilityControl;Z)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$WNe_V-oiVnZtOTinPJBWWgUSctQ;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$YLPk0FuuEUrv7lfRNYvhNb6uKic;-><init>(Lcom/android/server/location/GnssVisibilityControl;Ljava/util/List;)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$YLPk0FuuEUrv7lfRNYvhNb6uKic;->run()V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$cq648s0kLZajRjefd-RR_iUZoiQ;-><init>(Lcom/android/server/location/GnssVisibilityControl;)V
+HPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$cq648s0kLZajRjefd-RR_iUZoiQ;->onPermissionsChanged(I)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$ezKd0QctWKgyrEvPFQUXWNBxlNg;-><init>(Lcom/android/server/location/GnssVisibilityControl;Ljava/lang/Runnable;)V
+HSPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$ezKd0QctWKgyrEvPFQUXWNBxlNg;->run()V
+HPLcom/android/server/location/-$$Lambda$GnssVisibilityControl$nmfWkQtbYmj8KoGmFncGZnuzWS0;-><init>(Lcom/android/server/location/GnssVisibilityControl;I)V
+PLcom/android/server/location/-$$Lambda$GnssVisibilityControl$nmfWkQtbYmj8KoGmFncGZnuzWS0;->run()V
+PLcom/android/server/location/-$$Lambda$GnssVisibilityControl$rgPyvoFYNphS-9zV3fbeQCNLxa8;-><init>(Lcom/android/server/location/GnssVisibilityControl;Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V
+PLcom/android/server/location/-$$Lambda$GnssVisibilityControl$rgPyvoFYNphS-9zV3fbeQCNLxa8;->run()V
+HSPLcom/android/server/location/-$$Lambda$HardwareActivityRecognitionProxy$Z7jbekKm-LTVAz47zPN0h1VYfjo;-><init>(Lcom/android/server/location/HardwareActivityRecognitionProxy;)V
+PLcom/android/server/location/-$$Lambda$HardwareActivityRecognitionProxy$Z7jbekKm-LTVAz47zPN0h1VYfjo;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$2$QT3uzVX4fLIc1b7F_cP9P1hzluA;-><init>(Lcom/android/server/location/LocationProviderProxy;)V
 HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$2$QT3uzVX4fLIc1b7F_cP9P1hzluA;->run(Landroid/os/IBinder;)V
-HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$p3DjIvk7Of_sUF4Dc9plMNfdklc;->run(Landroid/os/IBinder;)V
-HSPLcom/android/server/location/-$$Lambda$NtpTimeHelper$xPxgficKWFyuwUj60WMuiGEEjdg;->run()V
-HSPLcom/android/server/location/-$$Lambda$NtpTimeHelper$xWqlqJuq4jBJ5-xhFLCwEKGVB0k;->run()V
-HSPLcom/android/server/location/-$$Lambda$RemoteListenerHelper$0Rlnad83RE1JdiVK0ULOLm530JM;->run()V
-HSPLcom/android/server/location/AbstractLocationProvider;->getProviderPackages()Ljava/util/List;
-PLcom/android/server/location/AbstractLocationProvider;->reportLocation(Landroid/location/Location;)V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$26d2FFhpYis1Ws92o2khDXr7LzU;-><init>(Lcom/android/server/location/LocationProviderProxy;)V
+PLcom/android/server/location/-$$Lambda$LocationProviderProxy$26d2FFhpYis1Ws92o2khDXr7LzU;->run()V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$3wGALcuMWaMkkBRL1d0LQ_QqoCk;-><init>(Lcom/android/server/location/LocationProviderProxy;)V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$3wGALcuMWaMkkBRL1d0LQ_QqoCk;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$DolK0RPdYvNbDbCY51eoLe2SJLw;-><init>(Lcom/android/server/location/LocationProviderProxy;Lcom/android/internal/location/ProviderRequest;)V
+HPLcom/android/server/location/-$$Lambda$LocationProviderProxy$DolK0RPdYvNbDbCY51eoLe2SJLw;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$LocationProviderProxy$Uez3oEpu2OhUykPUhHZnDv6UWJI;-><init>(Lcom/android/internal/location/ProviderRequest;)V
+HPLcom/android/server/location/-$$Lambda$LocationProviderProxy$Uez3oEpu2OhUykPUhHZnDv6UWJI;->run(Landroid/os/IBinder;)V
+HPLcom/android/server/location/-$$Lambda$LocationProviderProxy$ogMhKVFSASoXJPyFn-xsjSkNpe0;-><init>(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HPLcom/android/server/location/-$$Lambda$LocationProviderProxy$ogMhKVFSASoXJPyFn-xsjSkNpe0;->run(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/-$$Lambda$LocationSettingsStore$FSM6khNR8gXmFeTsAWvdXgk6aYY;-><clinit>()V
+HSPLcom/android/server/location/-$$Lambda$LocationSettingsStore$FSM6khNR8gXmFeTsAWvdXgk6aYY;-><init>()V
+PLcom/android/server/location/-$$Lambda$LocationSettingsStore$FSM6khNR8gXmFeTsAWvdXgk6aYY;->get()Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$LocationSettingsStore$k_IS3lfsliNZ8moQnq2NpYztkWE;-><clinit>()V
+HSPLcom/android/server/location/-$$Lambda$LocationSettingsStore$k_IS3lfsliNZ8moQnq2NpYztkWE;-><init>()V
+PLcom/android/server/location/-$$Lambda$LocationSettingsStore$k_IS3lfsliNZ8moQnq2NpYztkWE;->get()Ljava/lang/Object;
+PLcom/android/server/location/-$$Lambda$NtpTimeHelper$xPxgficKWFyuwUj60WMuiGEEjdg;-><init>(Lcom/android/server/location/NtpTimeHelper;JJJ)V
+PLcom/android/server/location/-$$Lambda$NtpTimeHelper$xPxgficKWFyuwUj60WMuiGEEjdg;->run()V
+PLcom/android/server/location/-$$Lambda$NtpTimeHelper$xWqlqJuq4jBJ5-xhFLCwEKGVB0k;-><init>(Lcom/android/server/location/NtpTimeHelper;)V
+PLcom/android/server/location/-$$Lambda$NtpTimeHelper$xWqlqJuq4jBJ5-xhFLCwEKGVB0k;->run()V
+HPLcom/android/server/location/-$$Lambda$RemoteListenerHelper$0Rlnad83RE1JdiVK0ULOLm530JM;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V
+HPLcom/android/server/location/-$$Lambda$RemoteListenerHelper$0Rlnad83RE1JdiVK0ULOLm530JM;->run()V
+HSPLcom/android/server/location/-$$Lambda$SettingsHelper$DVmNGa9ypltgL35WVwJuSTIxRS8;-><clinit>()V
+HSPLcom/android/server/location/-$$Lambda$SettingsHelper$DVmNGa9ypltgL35WVwJuSTIxRS8;-><init>()V
+PLcom/android/server/location/-$$Lambda$SettingsHelper$DVmNGa9ypltgL35WVwJuSTIxRS8;->get()Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$SettingsHelper$Ez8giHaZAPYwS7zICeUtrlXPpBo;-><clinit>()V
+HSPLcom/android/server/location/-$$Lambda$SettingsHelper$Ez8giHaZAPYwS7zICeUtrlXPpBo;-><init>()V
+PLcom/android/server/location/-$$Lambda$SettingsHelper$Ez8giHaZAPYwS7zICeUtrlXPpBo;->get()Ljava/lang/Object;
+HSPLcom/android/server/location/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;-><clinit>()V
+HSPLcom/android/server/location/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;-><init>()V
+HSPLcom/android/server/location/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;-><init>(Lcom/android/server/location/AbstractLocationProvider$Listener;Lcom/android/server/location/AbstractLocationProvider$State;)V
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;-><init>(Lcom/android/server/location/AbstractLocationProvider$Listener;Lcom/android/server/location/AbstractLocationProvider$State;Lcom/android/server/location/AbstractLocationProvider$1;)V
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->access$400(Lcom/android/server/location/AbstractLocationProvider$InternalState;Ljava/util/function/UnaryOperator;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->access$500(Lcom/android/server/location/AbstractLocationProvider$InternalState;Lcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->access$600(Lcom/android/server/location/AbstractLocationProvider$InternalState;Lcom/android/server/location/AbstractLocationProvider$Listener;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->withListener(Lcom/android/server/location/AbstractLocationProvider$Listener;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->withState(Lcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$InternalState;->withState(Ljava/util/function/UnaryOperator;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider$State;-><clinit>()V
+HSPLcom/android/server/location/AbstractLocationProvider$State;-><init>(ZLcom/android/internal/location/ProviderProperties;Ljava/util/Set;)V
+HSPLcom/android/server/location/AbstractLocationProvider$State;->access$000(Lcom/android/server/location/AbstractLocationProvider$State;Ljava/util/Set;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->access$200(Lcom/android/server/location/AbstractLocationProvider$State;Lcom/android/internal/location/ProviderProperties;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->access$300(Lcom/android/server/location/AbstractLocationProvider$State;Z)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/location/AbstractLocationProvider$State;->withAllowed(Z)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->withEnabled(Z)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->withProperties(Lcom/android/internal/location/ProviderProperties;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider$State;->withProviderPackageNames(Ljava/util/Set;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;)V
+HSPLcom/android/server/location/AbstractLocationProvider;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;)V
+HSPLcom/android/server/location/AbstractLocationProvider;-><init>(Landroid/content/Context;Ljava/util/concurrent/Executor;Ljava/util/Set;)V
+HSPLcom/android/server/location/AbstractLocationProvider;-><init>(Ljava/util/concurrent/Executor;Landroid/content/Context;)V
+HSPLcom/android/server/location/AbstractLocationProvider;-><init>(Ljava/util/concurrent/Executor;Ljava/util/Set;)V
+PLcom/android/server/location/AbstractLocationProvider;->getProviderPackages()Ljava/util/List;
+HSPLcom/android/server/location/AbstractLocationProvider;->getState()Lcom/android/server/location/AbstractLocationProvider$State;
+PLcom/android/server/location/AbstractLocationProvider;->lambda$sendExtraCommand$7$AbstractLocationProvider(IILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setAllowed$3(ZLcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setEnabled$3(ZLcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setListener$0(Lcom/android/server/location/AbstractLocationProvider$Listener;Lcom/android/server/location/AbstractLocationProvider$InternalState;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setPackageNames$5(Ljava/util/Set;Lcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setProperties$4(Lcom/android/internal/location/ProviderProperties;Lcom/android/server/location/AbstractLocationProvider$State;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setRequest$6$AbstractLocationProvider(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setState$1(Lcom/android/server/location/AbstractLocationProvider$State;Lcom/android/server/location/AbstractLocationProvider$InternalState;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HSPLcom/android/server/location/AbstractLocationProvider;->lambda$setState$2(Ljava/util/function/UnaryOperator;Lcom/android/server/location/AbstractLocationProvider$InternalState;)Lcom/android/server/location/AbstractLocationProvider$InternalState;
+HPLcom/android/server/location/AbstractLocationProvider;->reportLocation(Landroid/location/Location;)V
+PLcom/android/server/location/AbstractLocationProvider;->sendExtraCommand(IILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->setAllowed(Z)V
 HSPLcom/android/server/location/AbstractLocationProvider;->setEnabled(Z)V
+HSPLcom/android/server/location/AbstractLocationProvider;->setListener(Lcom/android/server/location/AbstractLocationProvider$Listener;)Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/AbstractLocationProvider;->setPackageNames(Ljava/util/Set;)V
 HSPLcom/android/server/location/AbstractLocationProvider;->setProperties(Lcom/android/internal/location/ProviderProperties;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->setState(Lcom/android/server/location/AbstractLocationProvider$State;)V
+HSPLcom/android/server/location/AbstractLocationProvider;->setState(Ljava/util/function/UnaryOperator;)V
+HSPLcom/android/server/location/ActivityRecognitionProxy$1;-><init>(Lcom/android/server/location/ActivityRecognitionProxy;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)V
+PLcom/android/server/location/ActivityRecognitionProxy$1;->lambda$onBind$0(Lcom/android/server/location/ActivityRecognitionProxy;Landroid/os/IBinder;)V
 PLcom/android/server/location/ActivityRecognitionProxy$1;->onBind()V
 HSPLcom/android/server/location/ActivityRecognitionProxy;-><init>(Landroid/content/Context;ZLandroid/hardware/location/ActivityRecognitionHardware;III)V
+PLcom/android/server/location/ActivityRecognitionProxy;->access$000(Lcom/android/server/location/ActivityRecognitionProxy;Landroid/os/IBinder;)V
 HSPLcom/android/server/location/ActivityRecognitionProxy;->createAndBind(Landroid/content/Context;ZLandroid/hardware/location/ActivityRecognitionHardware;III)Lcom/android/server/location/ActivityRecognitionProxy;
 PLcom/android/server/location/ActivityRecognitionProxy;->initializeService(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/AppForegroundHelper;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/AppForegroundHelper;->addListener(Lcom/android/server/location/AppForegroundHelper$AppForegroundListener;)V
+HSPLcom/android/server/location/AppForegroundHelper;->getImportance(I)I
+HSPLcom/android/server/location/AppForegroundHelper;->isAppForeground(I)Z
+HSPLcom/android/server/location/AppForegroundHelper;->isForeground(I)Z
+HSPLcom/android/server/location/AppForegroundHelper;->lambda$gltDhiWDJwfMNZ8gJdumXZH8_Hg(Lcom/android/server/location/AppForegroundHelper;II)V
+HSPLcom/android/server/location/AppForegroundHelper;->lambda$onAppForegroundChanged$0$AppForegroundHelper(IZ)V
+HSPLcom/android/server/location/AppForegroundHelper;->onAppForegroundChanged(II)V
+HSPLcom/android/server/location/AppForegroundHelper;->onSystemReady()V
+HSPLcom/android/server/location/CallerIdentity;-><init>(IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/location/ComprehensiveCountryDetector$1;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
 PLcom/android/server/location/ComprehensiveCountryDetector$1;->onCountryDetected(Landroid/location/Country;)V
-HSPLcom/android/server/location/ComprehensiveCountryDetector$2;->run()V
-PLcom/android/server/location/ComprehensiveCountryDetector$4;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
+HPLcom/android/server/location/ComprehensiveCountryDetector$2;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;Landroid/location/Country;ZZ)V
+HPLcom/android/server/location/ComprehensiveCountryDetector$2;->run()V
+PLcom/android/server/location/ComprehensiveCountryDetector$3;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/ComprehensiveCountryDetector$3;->run()V
+PLcom/android/server/location/ComprehensiveCountryDetector$4;-><init>(Lcom/android/server/location/ComprehensiveCountryDetector;)V
+HPLcom/android/server/location/ComprehensiveCountryDetector$4;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
 HSPLcom/android/server/location/ComprehensiveCountryDetector;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->addPhoneStateListener()V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V
-PLcom/android/server/location/ComprehensiveCountryDetector;->cancelLocationRefresh()V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->createLocationBasedCountryDetector()Lcom/android/server/location/CountryDetectorBase;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->detectCountry()Landroid/location/Country;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->getLastKnownLocationBasedCountry()Landroid/location/Country;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->getLocaleCountry()Landroid/location/Country;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->getNetworkBasedCountry()Landroid/location/Country;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->getSimBasedCountry()Landroid/location/Country;
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->isAirplaneModeOff()Z
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z
+PLcom/android/server/location/ComprehensiveCountryDetector;->access$002(Lcom/android/server/location/ComprehensiveCountryDetector;Landroid/location/Country;)Landroid/location/Country;
+HPLcom/android/server/location/ComprehensiveCountryDetector;->access$100(Lcom/android/server/location/ComprehensiveCountryDetector;ZZ)Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->access$200(Lcom/android/server/location/ComprehensiveCountryDetector;)V
+PLcom/android/server/location/ComprehensiveCountryDetector;->access$308(Lcom/android/server/location/ComprehensiveCountryDetector;)I
+PLcom/android/server/location/ComprehensiveCountryDetector;->access$408(Lcom/android/server/location/ComprehensiveCountryDetector;)I
+HPLcom/android/server/location/ComprehensiveCountryDetector;->access$500(Lcom/android/server/location/ComprehensiveCountryDetector;)Z
+PLcom/android/server/location/ComprehensiveCountryDetector;->addPhoneStateListener()V
+HPLcom/android/server/location/ComprehensiveCountryDetector;->addToLogs(Landroid/location/Country;)V
+HPLcom/android/server/location/ComprehensiveCountryDetector;->cancelLocationRefresh()V
+PLcom/android/server/location/ComprehensiveCountryDetector;->createLocationBasedCountryDetector()Lcom/android/server/location/CountryDetectorBase;
+PLcom/android/server/location/ComprehensiveCountryDetector;->detectCountry()Landroid/location/Country;
+HPLcom/android/server/location/ComprehensiveCountryDetector;->detectCountry(ZZ)Landroid/location/Country;
+HPLcom/android/server/location/ComprehensiveCountryDetector;->getCountry()Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->getLastKnownLocationBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->getLocaleCountry()Landroid/location/Country;
+HPLcom/android/server/location/ComprehensiveCountryDetector;->getNetworkBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->getSimBasedCountry()Landroid/location/Country;
+PLcom/android/server/location/ComprehensiveCountryDetector;->isAirplaneModeOff()Z
+PLcom/android/server/location/ComprehensiveCountryDetector;->isGeoCoderImplemented()Z
+HPLcom/android/server/location/ComprehensiveCountryDetector;->isNetworkCountryCodeAvailable()Z
+HPLcom/android/server/location/ComprehensiveCountryDetector;->notifyIfCountryChanged(Landroid/location/Country;Landroid/location/Country;)V
 PLcom/android/server/location/ComprehensiveCountryDetector;->removePhoneStateListener()V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->scheduleLocationRefresh()V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V
-HSPLcom/android/server/location/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V
-PLcom/android/server/location/ComprehensiveCountryDetector;->stopLocationBasedDetector()V
+HPLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetection(Landroid/location/Country;Landroid/location/Country;ZZ)V
+HPLcom/android/server/location/ComprehensiveCountryDetector;->runAfterDetectionAsync(Landroid/location/Country;Landroid/location/Country;ZZ)V
+PLcom/android/server/location/ComprehensiveCountryDetector;->scheduleLocationRefresh()V
+PLcom/android/server/location/ComprehensiveCountryDetector;->setCountryListener(Landroid/location/CountryListener;)V
+PLcom/android/server/location/ComprehensiveCountryDetector;->startLocationBasedDetector(Landroid/location/CountryListener;)V
+HPLcom/android/server/location/ComprehensiveCountryDetector;->stopLocationBasedDetector()V
+HSPLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;-><init>(Lcom/android/server/location/ContextHubClientBroker;)V
+PLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;-><init>(Lcom/android/server/location/ContextHubClientBroker;Landroid/app/PendingIntent;J)V
 PLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->clear()V
-HSPLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->hasPendingIntent()Z
-HSPLcom/android/server/location/ContextHubClientBroker;->binderDied()V
+PLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->getNanoAppId()J
+PLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->getPendingIntent()Landroid/app/PendingIntent;
+HPLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->hasPendingIntent()Z
+HSPLcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;->isValid()Z
+PLcom/android/server/location/ContextHubClientBroker;-><init>(Landroid/content/Context;Landroid/hardware/contexthub/V1_0/IContexthub;Lcom/android/server/location/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/app/PendingIntent;J)V
+HSPLcom/android/server/location/ContextHubClientBroker;-><init>(Landroid/content/Context;Landroid/hardware/contexthub/V1_0/IContexthub;Lcom/android/server/location/ContextHubClientManager;Landroid/hardware/location/ContextHubInfo;SLandroid/hardware/location/IContextHubClientCallback;)V
+HSPLcom/android/server/location/ContextHubClientBroker;->attachDeathRecipient()V
+PLcom/android/server/location/ContextHubClientBroker;->binderDied()V
 PLcom/android/server/location/ContextHubClientBroker;->close()V
+HPLcom/android/server/location/ContextHubClientBroker;->createIntent(I)Landroid/content/Intent;
+HPLcom/android/server/location/ContextHubClientBroker;->createIntent(IJ)Landroid/content/Intent;
+HPLcom/android/server/location/ContextHubClientBroker;->doSendPendingIntent(Landroid/app/PendingIntent;Landroid/content/Intent;)V
+PLcom/android/server/location/ContextHubClientBroker;->dump(Landroid/util/proto/ProtoOutputStream;)V
 HSPLcom/android/server/location/ContextHubClientBroker;->getAttachedContextHubId()I
-HSPLcom/android/server/location/ContextHubClientBroker;->invokeCallback(Lcom/android/server/location/ContextHubClientBroker$CallbackConsumer;)V
-HSPLcom/android/server/location/ContextHubClientBroker;->isRegistered()Z
-HSPLcom/android/server/location/ContextHubClientBroker;->onClientExit()V
+HSPLcom/android/server/location/ContextHubClientBroker;->getHostEndPointId()S
+HPLcom/android/server/location/ContextHubClientBroker;->hasPendingIntent(Landroid/app/PendingIntent;J)Z
+HPLcom/android/server/location/ContextHubClientBroker;->invokeCallback(Lcom/android/server/location/ContextHubClientBroker$CallbackConsumer;)V
+PLcom/android/server/location/ContextHubClientBroker;->isPendingIntentCancelled()Z
+HPLcom/android/server/location/ContextHubClientBroker;->isRegistered()Z
+PLcom/android/server/location/ContextHubClientBroker;->lambda$onNanoAppLoaded$2(JLandroid/hardware/location/IContextHubClientCallback;)V
+PLcom/android/server/location/ContextHubClientBroker;->lambda$onNanoAppUnloaded$4(JLandroid/hardware/location/IContextHubClientCallback;)V
+HPLcom/android/server/location/ContextHubClientBroker;->lambda$sendMessageToClient$0(Landroid/hardware/location/NanoAppMessage;Landroid/hardware/location/IContextHubClientCallback;)V
+HPLcom/android/server/location/ContextHubClientBroker;->lambda$sendMessageToClient$1$ContextHubClientBroker(Landroid/hardware/location/NanoAppMessage;)Landroid/content/Intent;
+PLcom/android/server/location/ContextHubClientBroker;->onClientExit()V
 PLcom/android/server/location/ContextHubClientBroker;->onNanoAppLoaded(J)V
 PLcom/android/server/location/ContextHubClientBroker;->onNanoAppUnloaded(J)V
-HSPLcom/android/server/location/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;)V
-HSPLcom/android/server/location/ContextHubClientBroker;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
-HSPLcom/android/server/location/ContextHubClientBroker;->sendPendingIntent(Ljava/util/function/Supplier;J)V
-HSPLcom/android/server/location/ContextHubClientManager;->forEachClientOfHub(ILjava/util/function/Consumer;)V
+HPLcom/android/server/location/ContextHubClientBroker;->sendMessageToClient(Landroid/hardware/location/NanoAppMessage;)V
+HPLcom/android/server/location/ContextHubClientBroker;->sendMessageToNanoApp(Landroid/hardware/location/NanoAppMessage;)I
+HPLcom/android/server/location/ContextHubClientBroker;->sendPendingIntent(Ljava/util/function/Supplier;J)V
+HSPLcom/android/server/location/ContextHubClientBroker;->toString()Ljava/lang/String;
+HSPLcom/android/server/location/ContextHubClientManager$ConcurrentLinkedEvictingDeque;-><init>(Lcom/android/server/location/ContextHubClientManager;I)V
+HSPLcom/android/server/location/ContextHubClientManager$ConcurrentLinkedEvictingDeque;->add(Ljava/lang/Object;)Z
+HSPLcom/android/server/location/ContextHubClientManager$RegistrationRecord;-><init>(Lcom/android/server/location/ContextHubClientManager;Ljava/lang/String;I)V
+PLcom/android/server/location/ContextHubClientManager$RegistrationRecord;->dump(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/location/ContextHubClientManager$RegistrationRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/location/ContextHubClientManager;-><clinit>()V
+HSPLcom/android/server/location/ContextHubClientManager;-><init>(Landroid/content/Context;Landroid/hardware/contexthub/V1_0/IContexthub;)V
+PLcom/android/server/location/ContextHubClientManager;->access$000()Ljava/text/DateFormat;
+HPLcom/android/server/location/ContextHubClientManager;->broadcastMessage(ILandroid/hardware/location/NanoAppMessage;)V
+PLcom/android/server/location/ContextHubClientManager;->dump(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/location/ContextHubClientManager;->forEachClientOfHub(ILjava/util/function/Consumer;)V
+HPLcom/android/server/location/ContextHubClientManager;->getClientBroker(ILandroid/app/PendingIntent;J)Lcom/android/server/location/ContextHubClientBroker;
 HSPLcom/android/server/location/ContextHubClientManager;->getHostEndPointId()S
-HSPLcom/android/server/location/ContextHubClientManager;->onMessageFromNanoApp(ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)V
+HPLcom/android/server/location/ContextHubClientManager;->lambda$broadcastMessage$4(Landroid/hardware/location/NanoAppMessage;Lcom/android/server/location/ContextHubClientBroker;)V
+PLcom/android/server/location/ContextHubClientManager;->lambda$onNanoAppLoaded$0(JLcom/android/server/location/ContextHubClientBroker;)V
+PLcom/android/server/location/ContextHubClientManager;->lambda$onNanoAppUnloaded$1(JLcom/android/server/location/ContextHubClientBroker;)V
+HPLcom/android/server/location/ContextHubClientManager;->onMessageFromNanoApp(ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)V
 PLcom/android/server/location/ContextHubClientManager;->onNanoAppLoaded(IJ)V
 PLcom/android/server/location/ContextHubClientManager;->onNanoAppUnloaded(IJ)V
+HPLcom/android/server/location/ContextHubClientManager;->registerClient(Landroid/hardware/location/ContextHubInfo;Landroid/app/PendingIntent;J)Landroid/hardware/location/IContextHubClient;
 HSPLcom/android/server/location/ContextHubClientManager;->registerClient(Landroid/hardware/location/ContextHubInfo;Landroid/hardware/location/IContextHubClientCallback;)Landroid/hardware/location/IContextHubClient;
-HSPLcom/android/server/location/ContextHubClientManager;->unregisterClient(S)V
-HSPLcom/android/server/location/ContextHubService$1;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
+HPLcom/android/server/location/ContextHubClientManager;->toString()Ljava/lang/String;
+HPLcom/android/server/location/ContextHubClientManager;->unregisterClient(S)V
+HSPLcom/android/server/location/ContextHubService$1;-><init>(Lcom/android/server/location/ContextHubService;I)V
+HPLcom/android/server/location/ContextHubService$1;->onMessageFromNanoApp(Landroid/hardware/location/NanoAppMessage;)V
 PLcom/android/server/location/ContextHubService$1;->onNanoAppLoaded(J)V
 PLcom/android/server/location/ContextHubService$1;->onNanoAppUnloaded(J)V
+PLcom/android/server/location/ContextHubService$2;-><init>(Lcom/android/server/location/ContextHubService;ILandroid/hardware/location/NanoAppBinary;)V
 PLcom/android/server/location/ContextHubService$2;->onTransactionComplete(I)V
+PLcom/android/server/location/ContextHubService$3;-><init>(Lcom/android/server/location/ContextHubService;I)V
 PLcom/android/server/location/ContextHubService$3;->onTransactionComplete(I)V
+HSPLcom/android/server/location/ContextHubService$4;-><init>(Lcom/android/server/location/ContextHubService;I)V
 HSPLcom/android/server/location/ContextHubService$4;->onQueryResponse(ILjava/util/List;)V
+HSPLcom/android/server/location/ContextHubService$ContextHubServiceCallback;-><init>(Lcom/android/server/location/ContextHubService;I)V
 HSPLcom/android/server/location/ContextHubService$ContextHubServiceCallback;->handleAppsInfo(Ljava/util/ArrayList;)V
-HSPLcom/android/server/location/ContextHubService$ContextHubServiceCallback;->handleClientMsg(Landroid/hardware/contexthub/V1_0/ContextHubMsg;)V
+HPLcom/android/server/location/ContextHubService$ContextHubServiceCallback;->handleClientMsg(Landroid/hardware/contexthub/V1_0/ContextHubMsg;)V
 PLcom/android/server/location/ContextHubService$ContextHubServiceCallback;->handleTxnResult(II)V
 HSPLcom/android/server/location/ContextHubService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/location/ContextHubService;->checkHalProxyAndContextHubId(ILandroid/hardware/location/IContextHubTransactionCallback;I)Z
-HSPLcom/android/server/location/ContextHubService;->createClient(ILandroid/hardware/location/IContextHubClientCallback;)Landroid/hardware/location/IContextHubClient;
+HPLcom/android/server/location/ContextHubService;->access$000(Lcom/android/server/location/ContextHubService;ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)V
+PLcom/android/server/location/ContextHubService;->access$100(Lcom/android/server/location/ContextHubService;III)V
+HSPLcom/android/server/location/ContextHubService;->access$400(Lcom/android/server/location/ContextHubService;ILjava/util/List;)V
+PLcom/android/server/location/ContextHubService;->access$500(Lcom/android/server/location/ContextHubService;)Lcom/android/server/location/NanoAppStateManager;
+HSPLcom/android/server/location/ContextHubService;->access$600(Lcom/android/server/location/ContextHubService;III[B)I
+PLcom/android/server/location/ContextHubService;->access$700(Lcom/android/server/location/ContextHubService;IILandroid/hardware/location/NanoAppBinary;)V
+PLcom/android/server/location/ContextHubService;->access$800(Lcom/android/server/location/ContextHubService;II)V
+HPLcom/android/server/location/ContextHubService;->checkHalProxyAndContextHubId(ILandroid/hardware/location/IContextHubTransactionCallback;I)Z
+HPLcom/android/server/location/ContextHubService;->checkPermissions()V
+HPLcom/android/server/location/ContextHubService;->createClient(ILandroid/hardware/location/IContextHubClientCallback;)Landroid/hardware/location/IContextHubClient;
+HSPLcom/android/server/location/ContextHubService;->createDefaultClientCallback(I)Landroid/hardware/location/IContextHubClientCallback;
+PLcom/android/server/location/ContextHubService;->createLoadTransactionCallback(ILandroid/hardware/location/NanoAppBinary;)Landroid/hardware/location/IContextHubTransactionCallback;
+HPLcom/android/server/location/ContextHubService;->createPendingIntentClient(ILandroid/app/PendingIntent;J)Landroid/hardware/location/IContextHubClient;
+HSPLcom/android/server/location/ContextHubService;->createQueryTransactionCallback(I)Landroid/hardware/location/IContextHubTransactionCallback;
+PLcom/android/server/location/ContextHubService;->createUnloadTransactionCallback(I)Landroid/hardware/location/IContextHubTransactionCallback;
+PLcom/android/server/location/ContextHubService;->dump(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/location/ContextHubService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
+HPLcom/android/server/location/ContextHubService;->findNanoAppOnHub(ILandroid/hardware/location/NanoAppFilter;)[I
 PLcom/android/server/location/ContextHubService;->getContextHubHandles()[I
 PLcom/android/server/location/ContextHubService;->getContextHubInfo(I)Landroid/hardware/location/ContextHubInfo;
 HSPLcom/android/server/location/ContextHubService;->getContextHubProxy()Landroid/hardware/contexthub/V1_0/IContexthub;
-HSPLcom/android/server/location/ContextHubService;->getContextHubs()Ljava/util/List;
-PLcom/android/server/location/ContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
-PLcom/android/server/location/ContextHubService;->handleLoadResponseOldApi(IILandroid/hardware/location/NanoAppBinary;)V
+PLcom/android/server/location/ContextHubService;->getContextHubs()Ljava/util/List;
+HPLcom/android/server/location/ContextHubService;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
+HPLcom/android/server/location/ContextHubService;->handleClientMessageCallback(ILandroid/hardware/contexthub/V1_0/ContextHubMsg;)V
+HPLcom/android/server/location/ContextHubService;->handleLoadResponseOldApi(IILandroid/hardware/location/NanoAppBinary;)V
+HSPLcom/android/server/location/ContextHubService;->handleQueryAppsCallback(ILjava/util/List;)V
+PLcom/android/server/location/ContextHubService;->handleTransactionResultCallback(III)V
+PLcom/android/server/location/ContextHubService;->handleUnloadResponseOldApi(II)V
+HPLcom/android/server/location/ContextHubService;->isValidContextHubId(I)Z
+PLcom/android/server/location/ContextHubService;->lambda$dump$1(Ljava/io/PrintWriter;Landroid/hardware/location/NanoAppInstanceInfo;)V
+PLcom/android/server/location/ContextHubService;->lambda$dump$2(Landroid/util/proto/ProtoOutputStream;Landroid/hardware/location/ContextHubInfo;)V
+HPLcom/android/server/location/ContextHubService;->lambda$findNanoAppOnHub$0(Landroid/hardware/location/NanoAppFilter;Ljava/util/ArrayList;Landroid/hardware/location/NanoAppInstanceInfo;)V
 PLcom/android/server/location/ContextHubService;->loadNanoApp(ILandroid/hardware/location/NanoApp;)I
+PLcom/android/server/location/ContextHubService;->loadNanoAppOnHub(ILandroid/hardware/location/IContextHubTransactionCallback;Landroid/hardware/location/NanoAppBinary;)V
 HSPLcom/android/server/location/ContextHubService;->onMessageReceiptOldApi(III[B)I
-HSPLcom/android/server/location/ContextHubService;->queryNanoApps(ILandroid/hardware/location/IContextHubTransactionCallback;)V
-HSPLcom/android/server/location/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I
-PLcom/android/server/location/ContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
+HPLcom/android/server/location/ContextHubService;->queryNanoApps(ILandroid/hardware/location/IContextHubTransactionCallback;)V
+HSPLcom/android/server/location/ContextHubService;->queryNanoAppsInternal(I)I
+HPLcom/android/server/location/ContextHubService;->registerCallback(Landroid/hardware/location/IContextHubCallback;)I
+HPLcom/android/server/location/ContextHubService;->sendMessage(IILandroid/hardware/location/ContextHubMessage;)I
 PLcom/android/server/location/ContextHubService;->unloadNanoApp(I)I
+PLcom/android/server/location/ContextHubService;->unloadNanoAppFromHub(ILandroid/hardware/location/IContextHubTransactionCallback;J)V
+HSPLcom/android/server/location/ContextHubServiceTransaction;-><init>(II)V
 HSPLcom/android/server/location/ContextHubServiceTransaction;->getTimeout(Ljava/util/concurrent/TimeUnit;)J
 PLcom/android/server/location/ContextHubServiceTransaction;->getTransactionId()I
 HSPLcom/android/server/location/ContextHubServiceTransaction;->getTransactionType()I
 HSPLcom/android/server/location/ContextHubServiceTransaction;->setComplete()V
+HPLcom/android/server/location/ContextHubServiceUtil;->checkPermissions(Landroid/content/Context;)V
+HPLcom/android/server/location/ContextHubServiceUtil;->copyToByteArrayList([BLjava/util/ArrayList;)V
 HSPLcom/android/server/location/ContextHubServiceUtil;->createContextHubInfoMap(Ljava/util/List;)Ljava/util/HashMap;
-PLcom/android/server/location/ContextHubServiceUtil;->createHidlNanoAppBinary(Landroid/hardware/location/NanoAppBinary;)Landroid/hardware/contexthub/V1_0/NanoAppBinary;
+HPLcom/android/server/location/ContextHubServiceUtil;->createHidlContextHubMessage(SLandroid/hardware/location/NanoAppMessage;)Landroid/hardware/contexthub/V1_0/ContextHubMsg;
+HPLcom/android/server/location/ContextHubServiceUtil;->createHidlNanoAppBinary(Landroid/hardware/location/NanoAppBinary;)Landroid/hardware/contexthub/V1_0/NanoAppBinary;
+HPLcom/android/server/location/ContextHubServiceUtil;->createNanoAppMessage(Landroid/hardware/contexthub/V1_0/ContextHubMsg;)Landroid/hardware/location/NanoAppMessage;
 HSPLcom/android/server/location/ContextHubServiceUtil;->createNanoAppStateList(Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/location/ContextHubServiceUtil;->createPrimitiveIntArray(Ljava/util/Collection;)[I
+HPLcom/android/server/location/ContextHubServiceUtil;->createPrimitiveByteArray(Ljava/util/ArrayList;)[B
+HPLcom/android/server/location/ContextHubServiceUtil;->createPrimitiveIntArray(Ljava/util/Collection;)[I
+HPLcom/android/server/location/ContextHubServiceUtil;->toTransactionResult(I)I
+PLcom/android/server/location/ContextHubTransactionManager$1;-><init>(Lcom/android/server/location/ContextHubTransactionManager;IILandroid/hardware/location/NanoAppBinary;ILandroid/hardware/location/IContextHubTransactionCallback;)V
 PLcom/android/server/location/ContextHubTransactionManager$1;->onTransact()I
 PLcom/android/server/location/ContextHubTransactionManager$1;->onTransactionComplete(I)V
+PLcom/android/server/location/ContextHubTransactionManager$2;-><init>(Lcom/android/server/location/ContextHubTransactionManager;IIIJLandroid/hardware/location/IContextHubTransactionCallback;)V
 PLcom/android/server/location/ContextHubTransactionManager$2;->onTransact()I
 PLcom/android/server/location/ContextHubTransactionManager$2;->onTransactionComplete(I)V
+HSPLcom/android/server/location/ContextHubTransactionManager$5;-><init>(Lcom/android/server/location/ContextHubTransactionManager;IIILandroid/hardware/location/IContextHubTransactionCallback;)V
 HSPLcom/android/server/location/ContextHubTransactionManager$5;->onQueryResponse(ILjava/util/List;)V
 HSPLcom/android/server/location/ContextHubTransactionManager$5;->onTransact()I
 HSPLcom/android/server/location/ContextHubTransactionManager;-><init>(Landroid/hardware/contexthub/V1_0/IContexthub;Lcom/android/server/location/ContextHubClientManager;Lcom/android/server/location/NanoAppStateManager;)V
+HSPLcom/android/server/location/ContextHubTransactionManager;->access$000(Lcom/android/server/location/ContextHubTransactionManager;)Landroid/hardware/contexthub/V1_0/IContexthub;
+PLcom/android/server/location/ContextHubTransactionManager;->access$100(Lcom/android/server/location/ContextHubTransactionManager;)Lcom/android/server/location/NanoAppStateManager;
+PLcom/android/server/location/ContextHubTransactionManager;->access$200(Lcom/android/server/location/ContextHubTransactionManager;)Lcom/android/server/location/ContextHubClientManager;
 HSPLcom/android/server/location/ContextHubTransactionManager;->addTransaction(Lcom/android/server/location/ContextHubServiceTransaction;)V
 PLcom/android/server/location/ContextHubTransactionManager;->createLoadTransaction(ILandroid/hardware/location/NanoAppBinary;Landroid/hardware/location/IContextHubTransactionCallback;)Lcom/android/server/location/ContextHubServiceTransaction;
 HSPLcom/android/server/location/ContextHubTransactionManager;->createQueryTransaction(ILandroid/hardware/location/IContextHubTransactionCallback;)Lcom/android/server/location/ContextHubServiceTransaction;
 PLcom/android/server/location/ContextHubTransactionManager;->createUnloadTransaction(IJLandroid/hardware/location/IContextHubTransactionCallback;)Lcom/android/server/location/ContextHubServiceTransaction;
 HSPLcom/android/server/location/ContextHubTransactionManager;->onQueryResponse(Ljava/util/List;)V
 PLcom/android/server/location/ContextHubTransactionManager;->onTransactionResponse(II)V
+HSPLcom/android/server/location/ContextHubTransactionManager;->removeTransactionAndStartNext()V
 HSPLcom/android/server/location/ContextHubTransactionManager;->startNextTransaction()V
+HSPLcom/android/server/location/CountryDetectorBase;-><init>(Landroid/content/Context;)V
 PLcom/android/server/location/CountryDetectorBase;->notifyListener(Landroid/location/Country;)V
-HSPLcom/android/server/location/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V
-HSPLcom/android/server/location/ExponentialBackOff;->reset()V
+PLcom/android/server/location/CountryDetectorBase;->setCountryListener(Landroid/location/CountryListener;)V
+HSPLcom/android/server/location/ExponentialBackOff;-><init>(JJ)V
+PLcom/android/server/location/ExponentialBackOff;->nextBackoffMillis()J
+PLcom/android/server/location/ExponentialBackOff;->reset()V
+HSPLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/GeocoderProxy;-><init>(Landroid/content/Context;III)V
+HSPLcom/android/server/location/GeocoderProxy;->bind()Z
 HSPLcom/android/server/location/GeocoderProxy;->createAndBind(Landroid/content/Context;III)Lcom/android/server/location/GeocoderProxy;
+HSPLcom/android/server/location/GeocoderProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/GeocoderProxy;
 PLcom/android/server/location/GeocoderProxy;->getFromLocation(DDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
-HSPLcom/android/server/location/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationBlacklist;)V
+PLcom/android/server/location/GeocoderProxy;->getFromLocationName(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;)Ljava/lang/String;
+HPLcom/android/server/location/GeocoderProxy;->lambda$getFromLocation$0(DDILandroid/location/GeocoderParams;Ljava/util/List;Landroid/os/IBinder;)Ljava/lang/String;
+PLcom/android/server/location/GeocoderProxy;->lambda$getFromLocationName$1(Ljava/lang/String;DDDDILandroid/location/GeocoderParams;Ljava/util/List;Landroid/os/IBinder;)Ljava/lang/String;
+HSPLcom/android/server/location/GeocoderProxy;->register()Z
+HSPLcom/android/server/location/GeofenceManager$GeofenceHandler;-><init>(Lcom/android/server/location/GeofenceManager;Landroid/os/Looper;)V
+HSPLcom/android/server/location/GeofenceManager$GeofenceHandler;-><init>(Lcom/android/server/location/GeofenceManager;Landroid/os/Looper;Lcom/android/server/location/GeofenceManager$1;)V
+PLcom/android/server/location/GeofenceManager$GeofenceHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/location/GeofenceManager;-><clinit>()V
+HSPLcom/android/server/location/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/LocationSettingsStore;)V
+HSPLcom/android/server/location/GeofenceManager;-><init>(Landroid/content/Context;Lcom/android/server/location/SettingsHelper;)V
+PLcom/android/server/location/GeofenceManager;->access$100(Lcom/android/server/location/GeofenceManager;)V
+PLcom/android/server/location/GeofenceManager;->addFence(Landroid/location/LocationRequest;Landroid/location/Geofence;Landroid/app/PendingIntent;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/location/GeofenceManager;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/location/GeofenceManager;->getFreshLocationLocked()Landroid/location/Location;
+PLcom/android/server/location/GeofenceManager;->onProviderDisabled(Ljava/lang/String;)V
+PLcom/android/server/location/GeofenceManager;->onProviderEnabled(Ljava/lang/String;)V
+PLcom/android/server/location/GeofenceManager;->removeExpiredFencesLocked()V
+PLcom/android/server/location/GeofenceManager;->scheduleUpdateFencesLocked()V
+PLcom/android/server/location/GeofenceManager;->updateFences()V
+HSPLcom/android/server/location/GeofenceProxy$1;-><init>(Lcom/android/server/location/GeofenceProxy;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)V
 PLcom/android/server/location/GeofenceProxy$1;->onBind()V
+HSPLcom/android/server/location/GeofenceProxy$GeofenceProxyServiceConnection;-><init>(Lcom/android/server/location/GeofenceProxy;)V
+HSPLcom/android/server/location/GeofenceProxy$GeofenceProxyServiceConnection;-><init>(Lcom/android/server/location/GeofenceProxy;Lcom/android/server/location/GeofenceProxy$1;)V
+PLcom/android/server/location/GeofenceProxy$GeofenceProxyServiceConnection;->lambda$onServiceConnected$0(Lcom/android/server/location/GeofenceProxy;Landroid/os/IBinder;)V
 HSPLcom/android/server/location/GeofenceProxy$GeofenceProxyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 HSPLcom/android/server/location/GeofenceProxy;-><init>(Landroid/content/Context;IIILandroid/location/IGpsGeofenceHardware;Landroid/location/IFusedGeofenceHardware;)V
+HSPLcom/android/server/location/GeofenceProxy;-><init>(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)V
+HSPLcom/android/server/location/GeofenceProxy;->access$000(Lcom/android/server/location/GeofenceProxy;)Lcom/android/server/ServiceWatcher$BinderRunner;
+PLcom/android/server/location/GeofenceProxy;->access$100(Lcom/android/server/location/GeofenceProxy;)Landroid/location/IGpsGeofenceHardware;
+HSPLcom/android/server/location/GeofenceProxy;->access$200(Lcom/android/server/location/GeofenceProxy;)Landroid/location/IGpsGeofenceHardware;
+PLcom/android/server/location/GeofenceProxy;->access$202(Lcom/android/server/location/GeofenceProxy;Landroid/hardware/location/IGeofenceHardware;)Landroid/hardware/location/IGeofenceHardware;
+HSPLcom/android/server/location/GeofenceProxy;->access$300(Lcom/android/server/location/GeofenceProxy;)Landroid/location/IFusedGeofenceHardware;
+PLcom/android/server/location/GeofenceProxy;->access$300(Lcom/android/server/location/GeofenceProxy;)Lcom/android/server/ServiceWatcher;
+PLcom/android/server/location/GeofenceProxy;->access$400(Lcom/android/server/location/GeofenceProxy;Landroid/os/IBinder;)V
+HSPLcom/android/server/location/GeofenceProxy;->access$402(Lcom/android/server/location/GeofenceProxy;Landroid/hardware/location/IGeofenceHardware;)Landroid/hardware/location/IGeofenceHardware;
+HSPLcom/android/server/location/GeofenceProxy;->access$500(Lcom/android/server/location/GeofenceProxy;)Lcom/android/server/ServiceWatcher;
+HSPLcom/android/server/location/GeofenceProxy;->bind()Z
 HSPLcom/android/server/location/GeofenceProxy;->createAndBind(Landroid/content/Context;IIILandroid/location/IGpsGeofenceHardware;Landroid/location/IFusedGeofenceHardware;)Lcom/android/server/location/GeofenceProxy;
+HSPLcom/android/server/location/GeofenceProxy;->createAndBind(Landroid/content/Context;Landroid/location/IGpsGeofenceHardware;)Lcom/android/server/location/GeofenceProxy;
+PLcom/android/server/location/GeofenceProxy;->lambda$hIfaTtsg4NqVfDRkaCxUg6rx90I(Lcom/android/server/location/GeofenceProxy;Landroid/os/IBinder;)V
 PLcom/android/server/location/GeofenceProxy;->lambda$new$0$GeofenceProxy(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/GeofenceProxy;->register(Landroid/content/Context;)Z
+PLcom/android/server/location/GeofenceProxy;->updateGeofenceHardware(Landroid/os/IBinder;)V
+PLcom/android/server/location/GeofenceState;-><init>(Landroid/location/Geofence;JIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/app/PendingIntent;)V
+HSPLcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;-><init>()V
 PLcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;->cleanupBatching()V
 HSPLcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;->initBatching()Z
 PLcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;->stopBatch()Z
+HSPLcom/android/server/location/GnssBatchingProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssBatchingProvider;-><init>()V
+HSPLcom/android/server/location/GnssBatchingProvider;-><init>(Lcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;)V
+PLcom/android/server/location/GnssBatchingProvider;->access$300()Z
+HSPLcom/android/server/location/GnssBatchingProvider;->access$400()Z
+PLcom/android/server/location/GnssBatchingProvider;->access$500()V
 PLcom/android/server/location/GnssBatchingProvider;->disable()V
 HSPLcom/android/server/location/GnssBatchingProvider;->enable()V
 HSPLcom/android/server/location/GnssBatchingProvider;->resumeIfStarted()V
 PLcom/android/server/location/GnssBatchingProvider;->stop()Z
+HSPLcom/android/server/location/GnssCapabilitiesProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssCapabilitiesProvider;-><init>()V
+PLcom/android/server/location/GnssCapabilitiesProvider;->getGnssCapabilities()J
+HSPLcom/android/server/location/GnssCapabilitiesProvider;->hasCapability(II)Z
+HSPLcom/android/server/location/GnssCapabilitiesProvider;->setTopHalCapabilities(I)V
 HSPLcom/android/server/location/GnssConfiguration$1;-><init>(Lcom/android/server/location/GnssConfiguration;Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)V
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$0(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$1(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$2(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$3(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$4(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$5(I)Z
+HSPLcom/android/server/location/GnssConfiguration$1;->lambda$new$6(I)Z
 HSPLcom/android/server/location/GnssConfiguration$HalInterfaceVersion;-><init>(II)V
+HSPLcom/android/server/location/GnssConfiguration;-><clinit>()V
+HSPLcom/android/server/location/GnssConfiguration;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/GnssConfiguration;->access$000(Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$100(Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$200(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$300(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$400(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$500(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$600(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$700(I)Z
+HSPLcom/android/server/location/GnssConfiguration;->access$800(I)Z
 HSPLcom/android/server/location/GnssConfiguration;->getC2KHost()Ljava/lang/String;
 HSPLcom/android/server/location/GnssConfiguration;->getC2KPort(I)I
 HSPLcom/android/server/location/GnssConfiguration;->getEsExtensionSec()I
 HSPLcom/android/server/location/GnssConfiguration;->getIntConfig(Ljava/lang/String;I)I
-HSPLcom/android/server/location/GnssConfiguration;->getLppProfile()Ljava/lang/String;
+PLcom/android/server/location/GnssConfiguration;->getLppProfile()Ljava/lang/String;
+HSPLcom/android/server/location/GnssConfiguration;->getProxyApps()Ljava/util/List;
 HSPLcom/android/server/location/GnssConfiguration;->getRangeCheckedConfigEsExtensionSec()I
 HSPLcom/android/server/location/GnssConfiguration;->getSuplEs(I)I
 HSPLcom/android/server/location/GnssConfiguration;->getSuplHost()Ljava/lang/String;
 HSPLcom/android/server/location/GnssConfiguration;->getSuplMode(I)I
 HSPLcom/android/server/location/GnssConfiguration;->getSuplPort(I)I
+HSPLcom/android/server/location/GnssConfiguration;->isConfigEsExtensionSecSupported(Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)Z
+HSPLcom/android/server/location/GnssConfiguration;->isConfigGpsLockSupported(Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)Z
+HSPLcom/android/server/location/GnssConfiguration;->isConfigSuplEsSupported(Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;)Z
 HSPLcom/android/server/location/GnssConfiguration;->loadPropertiesFromCarrierConfig()V
 HSPLcom/android/server/location/GnssConfiguration;->loadPropertiesFromGpsDebugConfig(Ljava/util/Properties;)V
 HSPLcom/android/server/location/GnssConfiguration;->logConfigurations()V
 HSPLcom/android/server/location/GnssConfiguration;->reloadGpsProperties()V
 HSPLcom/android/server/location/GnssConfiguration;->setSatelliteBlacklist([I[I)V
+HPLcom/android/server/location/GnssGeofenceProvider$GeofenceEntry;-><init>()V
+HPLcom/android/server/location/GnssGeofenceProvider$GeofenceEntry;-><init>(Lcom/android/server/location/GnssGeofenceProvider$1;)V
+HSPLcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;-><init>()V
 PLcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;->addGeofence(IDDDIIII)Z
 HSPLcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;->isGeofenceSupported()Z
 PLcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;->removeGeofence(I)Z
-PLcom/android/server/location/GnssGeofenceProvider;->addCircularHardwareGeofence(IDDDIIII)Z
+HSPLcom/android/server/location/GnssGeofenceProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssGeofenceProvider;-><init>()V
+HSPLcom/android/server/location/GnssGeofenceProvider;-><init>(Lcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;)V
+HSPLcom/android/server/location/GnssGeofenceProvider;->access$100()Z
+HPLcom/android/server/location/GnssGeofenceProvider;->access$200(IDDDIIII)Z
+HPLcom/android/server/location/GnssGeofenceProvider;->access$300(I)Z
+HPLcom/android/server/location/GnssGeofenceProvider;->addCircularHardwareGeofence(IDDDIIII)Z
 HSPLcom/android/server/location/GnssGeofenceProvider;->isHardwareGeofenceSupported()Z
-PLcom/android/server/location/GnssGeofenceProvider;->removeHardwareGeofence(I)Z
+HPLcom/android/server/location/GnssGeofenceProvider;->removeHardwareGeofence(I)Z
 HSPLcom/android/server/location/GnssGeofenceProvider;->resumeIfStarted()V
-HSPLcom/android/server/location/GnssLocationProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/location/GnssLocationProvider$2;->onSubscriptionsChanged()V
-PLcom/android/server/location/GnssLocationProvider$3;->isAvailableInPlatform()Z
-PLcom/android/server/location/GnssLocationProvider$3;->isGpsEnabled()Z
+HSPLcom/android/server/location/GnssLocationProvider$1;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HPLcom/android/server/location/GnssLocationProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/location/GnssLocationProvider$2;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/location/GnssLocationProvider$2;->isAvailableInPlatform()Z
+PLcom/android/server/location/GnssLocationProvider$2;->isGpsEnabled()Z
+HSPLcom/android/server/location/GnssLocationProvider$3;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/location/GnssLocationProvider$3;->isGpsEnabled()Z
+HSPLcom/android/server/location/GnssLocationProvider$4;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/location/GnssLocationProvider$4;->isGpsEnabled()Z
-HSPLcom/android/server/location/GnssLocationProvider$5;->isGpsEnabled()Z
-HSPLcom/android/server/location/GnssLocationProvider$7;->onChange(Z)V
-HSPLcom/android/server/location/GnssLocationProvider$LocationChangeListener;->onProviderDisabled(Ljava/lang/String;)V
+HSPLcom/android/server/location/GnssLocationProvider$5;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/GnssLocationProvider$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/location/GnssLocationProvider$6;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Handler;)V
+HSPLcom/android/server/location/GnssLocationProvider$6;->onChange(Z)V
+HSPLcom/android/server/location/GnssLocationProvider$7;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider$8;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider$FusedLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider$FusedLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$1;)V
+HSPLcom/android/server/location/GnssLocationProvider$GpsRequest;-><init>(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/location/GnssLocationProvider$LocationChangeListener;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider$LocationChangeListener;-><init>(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$1;)V
+PLcom/android/server/location/GnssLocationProvider$LocationChangeListener;->access$1206(Lcom/android/server/location/GnssLocationProvider$LocationChangeListener;)I
+PLcom/android/server/location/GnssLocationProvider$LocationChangeListener;->access$1208(Lcom/android/server/location/GnssLocationProvider$LocationChangeListener;)I
+PLcom/android/server/location/GnssLocationProvider$LocationChangeListener;->onProviderDisabled(Ljava/lang/String;)V
 PLcom/android/server/location/GnssLocationProvider$LocationChangeListener;->onProviderEnabled(Ljava/lang/String;)V
-PLcom/android/server/location/GnssLocationProvider$LocationExtras;->getBundle()Landroid/os/Bundle;
-HSPLcom/android/server/location/GnssLocationProvider$LocationExtras;->reset()V
-HSPLcom/android/server/location/GnssLocationProvider$LocationExtras;->set(III)V
-HSPLcom/android/server/location/GnssLocationProvider$LocationExtras;->setBundle(Landroid/os/Bundle;)V
-PLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->onLocationChanged(Landroid/location/Location;)V
+HSPLcom/android/server/location/GnssLocationProvider$LocationExtras;-><init>()V
+HPLcom/android/server/location/GnssLocationProvider$LocationExtras;->getBundle()Landroid/os/Bundle;
+HPLcom/android/server/location/GnssLocationProvider$LocationExtras;->reset()V
+HPLcom/android/server/location/GnssLocationProvider$LocationExtras;->set(III)V
+HPLcom/android/server/location/GnssLocationProvider$LocationExtras;->setBundle(Landroid/os/Bundle;)V
+HSPLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;-><init>(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$1;)V
+HPLcom/android/server/location/GnssLocationProvider$NetworkLocationListener;->onLocationChanged(Landroid/location/Location;)V
+HSPLcom/android/server/location/GnssLocationProvider$ProviderHandler;-><init>(Lcom/android/server/location/GnssLocationProvider;Landroid/os/Looper;)V
 HSPLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleInitialize()V
 HSPLcom/android/server/location/GnssLocationProvider$ProviderHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;-><init>()V
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;-><init>(Lcom/android/server/location/GnssLocationProvider$1;)V
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1400(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)I
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1402(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;I)I
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1500(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[I
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1502(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[I)[I
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1600(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[F
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1602(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[F)[F
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1700(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[F
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1702(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[F)[F
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1800(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[F
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1802(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[F)[F
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1900(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[F
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$1902(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[F)[F
+HPLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$2000(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)[F
+PLcom/android/server/location/GnssLocationProvider$SvStatusInfo;->access$2002(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;[F)[F
+HSPLcom/android/server/location/GnssLocationProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssLocationProvider;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/GnssLocationProvider;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/location/GnssLocationProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;Landroid/os/Looper;)V
+PLcom/android/server/location/GnssLocationProvider;->access$1002(Lcom/android/server/location/GnssLocationProvider;Z)Z
+HSPLcom/android/server/location/GnssLocationProvider;->access$1100(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$200()Z
+HSPLcom/android/server/location/GnssLocationProvider;->access$2500(Lcom/android/server/location/GnssLocationProvider;Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+PLcom/android/server/location/GnssLocationProvider;->access$2600(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/NtpTimeHelper;
+PLcom/android/server/location/GnssLocationProvider;->access$2700(Lcom/android/server/location/GnssLocationProvider;ZZ)V
+HPLcom/android/server/location/GnssLocationProvider;->access$3000(Lcom/android/server/location/GnssLocationProvider;ZLandroid/location/Location;)V
+HPLcom/android/server/location/GnssLocationProvider;->access$3100(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)V
+PLcom/android/server/location/GnssLocationProvider;->access$3200(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$3300(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager$WakeLock;
+HSPLcom/android/server/location/GnssLocationProvider;->access$3500(Lcom/android/server/location/GnssLocationProvider;Z)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$3600()Z
+HSPLcom/android/server/location/GnssLocationProvider;->access$3702(Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/GnssVisibilityControl;)Lcom/android/server/location/GnssVisibilityControl;
+HSPLcom/android/server/location/GnssLocationProvider;->access$3800(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/Context;
+HSPLcom/android/server/location/GnssLocationProvider;->access$3800(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Looper;
+HSPLcom/android/server/location/GnssLocationProvider;->access$3900(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Looper;
+HSPLcom/android/server/location/GnssLocationProvider;->access$3900(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/internal/location/GpsNetInitiatedHandler;
+HSPLcom/android/server/location/GnssLocationProvider;->access$4000(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/internal/location/GpsNetInitiatedHandler;
+HSPLcom/android/server/location/GnssLocationProvider;->access$4000(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$4100(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/BroadcastReceiver;
+HSPLcom/android/server/location/GnssLocationProvider;->access$4100(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$4200(Lcom/android/server/location/GnssLocationProvider;)Landroid/content/BroadcastReceiver;
+HSPLcom/android/server/location/GnssLocationProvider;->access$4200(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssNetworkConnectivityHandler;
+HSPLcom/android/server/location/GnssLocationProvider;->access$4300(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/location/GnssNetworkConnectivityHandler;
+PLcom/android/server/location/GnssLocationProvider;->access$4400(Lcom/android/server/location/GnssLocationProvider;Landroid/location/Location;)V
+PLcom/android/server/location/GnssLocationProvider;->access$4500(Lcom/android/server/location/GnssLocationProvider;Landroid/location/Location;)V
+PLcom/android/server/location/GnssLocationProvider;->access$500(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/PowerManager;
+PLcom/android/server/location/GnssLocationProvider;->access$600(Lcom/android/server/location/GnssLocationProvider;)Lcom/android/server/DeviceIdleInternal$StationaryListener;
+PLcom/android/server/location/GnssLocationProvider;->access$700(Lcom/android/server/location/GnssLocationProvider;)Landroid/os/Handler;
+PLcom/android/server/location/GnssLocationProvider;->access$800(Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/GnssLocationProvider;->access$900(Lcom/android/server/location/GnssLocationProvider;)Z
 PLcom/android/server/location/GnssLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/location/GnssLocationProvider;->getGeofenceStatus(I)I
+HSPLcom/android/server/location/GnssLocationProvider;->ensureInitialized()V
+HPLcom/android/server/location/GnssLocationProvider;->getGeofenceStatus(I)I
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssBatchingProvider()Lcom/android/server/location/GnssBatchingProvider;
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssCapabilitiesProvider()Lcom/android/server/location/GnssCapabilitiesProvider;
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssMeasurementCorrectionsProvider()Lcom/android/server/location/GnssMeasurementCorrectionsProvider;
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssMeasurementsProvider()Lcom/android/server/location/GnssMeasurementsProvider;
 HSPLcom/android/server/location/GnssLocationProvider;->getGnssMetricsProvider()Lcom/android/server/location/GnssLocationProvider$GnssMetricsProvider;
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssNavigationMessageProvider()Lcom/android/server/location/GnssNavigationMessageProvider;
+HSPLcom/android/server/location/GnssLocationProvider;->getGnssStatusProvider()Lcom/android/server/location/GnssStatusListenerHelper;
 HSPLcom/android/server/location/GnssLocationProvider;->getGnssSystemInfoProvider()Lcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider;
-PLcom/android/server/location/GnssLocationProvider;->handleDisableLocked()V
-HSPLcom/android/server/location/GnssLocationProvider;->handleEnableLocked()V
-PLcom/android/server/location/GnssLocationProvider;->handleReportLocation(ZLandroid/location/Location;)V
-PLcom/android/server/location/GnssLocationProvider;->handleReportSvStatus(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)V
-HSPLcom/android/server/location/GnssLocationProvider;->handleRequestLocation(ZZ)V
-HSPLcom/android/server/location/GnssLocationProvider;->injectTime(JJI)V
-HSPLcom/android/server/location/GnssLocationProvider;->isEnabled()Z
+HSPLcom/android/server/location/GnssLocationProvider;->getGpsGeofenceProxy()Landroid/location/IGpsGeofenceHardware;
+HSPLcom/android/server/location/GnssLocationProvider;->getNetInitiatedListener()Landroid/location/INetInitiatedListener;
+PLcom/android/server/location/GnssLocationProvider;->getSuplMode(Z)I
+HPLcom/android/server/location/GnssLocationProvider;->handleDisable()V
+HSPLcom/android/server/location/GnssLocationProvider;->handleEnable()V
+HPLcom/android/server/location/GnssLocationProvider;->handleReportLocation(ZLandroid/location/Location;)V
+HPLcom/android/server/location/GnssLocationProvider;->handleReportSvStatus(Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;)V
+HPLcom/android/server/location/GnssLocationProvider;->handleRequestLocation(ZZ)V
+HSPLcom/android/server/location/GnssLocationProvider;->handleSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/location/GnssLocationProvider;->hasCapability(I)Z
+HPLcom/android/server/location/GnssLocationProvider;->injectLocation(Landroid/location/Location;)V
+PLcom/android/server/location/GnssLocationProvider;->injectTime(JJI)V
+HSPLcom/android/server/location/GnssLocationProvider;->isGpsEnabled()Z
+PLcom/android/server/location/GnssLocationProvider;->isRequestLocationRateLimited()Z
 HSPLcom/android/server/location/GnssLocationProvider;->isSupported()Z
-PLcom/android/server/location/GnssLocationProvider;->lambda$getGnssMetricsProvider$8$GnssLocationProvider()Ljava/lang/String;
-HSPLcom/android/server/location/GnssLocationProvider;->lambda$onUpdateSatelliteBlacklist$0$GnssLocationProvider([I[I)V
-PLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceAddStatus$11$GnssLocationProvider(II)V
-PLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceRemoveStatus$12$GnssLocationProvider(II)V
-PLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceStatus$10$GnssLocationProvider(ILandroid/location/Location;)V
-PLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceTransition$9$GnssLocationProvider(ILandroid/location/Location;IJ)V
-PLcom/android/server/location/GnssLocationProvider;->lambda$reportMeasurementData$3$GnssLocationProvider(Landroid/location/GnssMeasurementsEvent;)V
-HSPLcom/android/server/location/GnssLocationProvider;->lambda$setEngineCapabilities$5$GnssLocationProvider(IZ)V
+PLcom/android/server/location/GnssLocationProvider;->lambda$Q6M8z_ZBiD7BNs3kvNmVrqoHSng(Lcom/android/server/location/GnssLocationProvider;)V
+PLcom/android/server/location/GnssLocationProvider;->lambda$getGnssMetricsProvider$9$GnssLocationProvider()Ljava/lang/String;
+HPLcom/android/server/location/GnssLocationProvider;->lambda$handleRequestLocation$2(Lcom/android/server/location/GnssLocationProvider$LocationChangeListener;Ljava/lang/String;Landroid/location/LocationManager;)V
+PLcom/android/server/location/GnssLocationProvider;->lambda$new$0$GnssLocationProvider(Z)V
+HSPLcom/android/server/location/GnssLocationProvider;->lambda$onUpdateSatelliteBlacklist$1$GnssLocationProvider([I[I)V
+HPLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceAddStatus$12$GnssLocationProvider(II)V
+HPLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceRemoveStatus$13$GnssLocationProvider(II)V
+PLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceStatus$11$GnssLocationProvider(ILandroid/location/Location;)V
+HPLcom/android/server/location/GnssLocationProvider;->lambda$reportGeofenceTransition$10$GnssLocationProvider(ILandroid/location/Location;IJ)V
+HPLcom/android/server/location/GnssLocationProvider;->lambda$reportMeasurementData$4$GnssLocationProvider(Landroid/location/GnssMeasurementsEvent;)V
+HSPLcom/android/server/location/GnssLocationProvider;->lambda$setTopHalCapabilities$6$GnssLocationProvider(I)V
+PLcom/android/server/location/GnssLocationProvider;->onExtraCommand(IILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/location/GnssLocationProvider;->onNetworkAvailable()V
+HSPLcom/android/server/location/GnssLocationProvider;->onSetRequest(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/GnssLocationProvider;->onSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
 HSPLcom/android/server/location/GnssLocationProvider;->onUpdateSatelliteBlacklist([I[I)V
 HSPLcom/android/server/location/GnssLocationProvider;->reloadGpsProperties()V
-HSPLcom/android/server/location/GnssLocationProvider;->reportAGpsStatus(II[B)V
-PLcom/android/server/location/GnssLocationProvider;->reportGeofenceAddStatus(II)V
-PLcom/android/server/location/GnssLocationProvider;->reportGeofenceRemoveStatus(II)V
+HPLcom/android/server/location/GnssLocationProvider;->reportAGpsStatus(II[B)V
+HPLcom/android/server/location/GnssLocationProvider;->reportGeofenceAddStatus(II)V
+HPLcom/android/server/location/GnssLocationProvider;->reportGeofenceRemoveStatus(II)V
 PLcom/android/server/location/GnssLocationProvider;->reportGeofenceStatus(ILandroid/location/Location;)V
-PLcom/android/server/location/GnssLocationProvider;->reportGeofenceTransition(ILandroid/location/Location;IJ)V
-PLcom/android/server/location/GnssLocationProvider;->reportLocation(ZLandroid/location/Location;)V
-PLcom/android/server/location/GnssLocationProvider;->reportMeasurementData(Landroid/location/GnssMeasurementsEvent;)V
-HSPLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V
-HSPLcom/android/server/location/GnssLocationProvider;->reportStatus(I)V
-PLcom/android/server/location/GnssLocationProvider;->reportSvStatus(I[I[F[F[F[F)V
-HSPLcom/android/server/location/GnssLocationProvider;->requestLocation(ZZ)V
+HPLcom/android/server/location/GnssLocationProvider;->reportGeofenceTransition(ILandroid/location/Location;IJ)V
+HPLcom/android/server/location/GnssLocationProvider;->reportLocation(ZLandroid/location/Location;)V
+HPLcom/android/server/location/GnssLocationProvider;->reportMeasurementData(Landroid/location/GnssMeasurementsEvent;)V
+PLcom/android/server/location/GnssLocationProvider;->reportNfwNotification(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V
+HPLcom/android/server/location/GnssLocationProvider;->reportNmea(J)V
+HPLcom/android/server/location/GnssLocationProvider;->reportStatus(I)V
+HPLcom/android/server/location/GnssLocationProvider;->reportSvStatus(I[I[F[F[F[F[F)V
+HPLcom/android/server/location/GnssLocationProvider;->requestLocation(ZZ)V
+PLcom/android/server/location/GnssLocationProvider;->requestUtcTime()V
+HSPLcom/android/server/location/GnssLocationProvider;->restartLocationRequest()V
+HSPLcom/android/server/location/GnssLocationProvider;->restartRequests()V
 HSPLcom/android/server/location/GnssLocationProvider;->sendMessage(IILjava/lang/Object;)V
-HSPLcom/android/server/location/GnssLocationProvider;->setEngineCapabilities(IZ)V
 HSPLcom/android/server/location/GnssLocationProvider;->setGnssHardwareModelName(Ljava/lang/String;)V
 HSPLcom/android/server/location/GnssLocationProvider;->setGnssYearOfHardware(I)V
-HSPLcom/android/server/location/GnssLocationProvider;->setPositionMode(IIIIIZ)Z
-HSPLcom/android/server/location/GnssLocationProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HSPLcom/android/server/location/GnssLocationProvider;->setGpsEnabled(Z)V
+HPLcom/android/server/location/GnssLocationProvider;->setPositionMode(IIIIIZ)Z
+HSPLcom/android/server/location/GnssLocationProvider;->setStarted(Z)V
 HSPLcom/android/server/location/GnssLocationProvider;->setSuplHostPort()V
-HSPLcom/android/server/location/GnssLocationProvider;->startNavigating()V
+HSPLcom/android/server/location/GnssLocationProvider;->setTopHalCapabilities(I)V
+HSPLcom/android/server/location/GnssLocationProvider;->setupNativeGnssService(Z)V
+HPLcom/android/server/location/GnssLocationProvider;->startNavigating()V
 HSPLcom/android/server/location/GnssLocationProvider;->stopNavigating()V
-HSPLcom/android/server/location/GnssLocationProvider;->subscriptionOrCarrierConfigChanged(Landroid/content/Context;)V
+HPLcom/android/server/location/GnssLocationProvider;->subscriptionOrCarrierConfigChanged()V
 HSPLcom/android/server/location/GnssLocationProvider;->updateClientUids(Landroid/os/WorkSource;)V
 HSPLcom/android/server/location/GnssLocationProvider;->updateEnabled()V
-HSPLcom/android/server/location/GnssLocationProvider;->updateLowPowerMode()V
+HPLcom/android/server/location/GnssLocationProvider;->updateLowPowerMode()V
 HSPLcom/android/server/location/GnssLocationProvider;->updateRequirements()V
-PLcom/android/server/location/GnssMeasurementCorrectionsProvider$GnssMeasurementCorrectionsProviderNative;->isMeasurementCorrectionsSupported()Z
-PLcom/android/server/location/GnssMeasurementCorrectionsProvider;->isAvailableInPlatform()Z
+HSPLcom/android/server/location/GnssMeasurementCorrectionsProvider$GnssMeasurementCorrectionsProviderNative;-><init>()V
+HSPLcom/android/server/location/GnssMeasurementCorrectionsProvider;-><init>(Landroid/os/Handler;)V
+HSPLcom/android/server/location/GnssMeasurementCorrectionsProvider;-><init>(Landroid/os/Handler;Lcom/android/server/location/GnssMeasurementCorrectionsProvider$GnssMeasurementCorrectionsProviderNative;)V
+PLcom/android/server/location/GnssMeasurementCorrectionsProvider;->injectGnssMeasurementCorrections(Landroid/location/GnssMeasurementCorrections;)V
+PLcom/android/server/location/GnssMeasurementCorrectionsProvider;->isCapabilitiesReceived()Z
+HSPLcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;-><init>()V
 HSPLcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;->isMeasurementSupported()Z
 PLcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;->startMeasurementCollection(Z)Z
 PLcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;->stopMeasurementCollection()Z
+PLcom/android/server/location/GnssMeasurementsProvider$StatusChangedOperation;-><init>(I)V
 PLcom/android/server/location/GnssMeasurementsProvider$StatusChangedOperation;->execute(Landroid/location/IGnssMeasurementsListener;Lcom/android/server/location/CallerIdentity;)V
 PLcom/android/server/location/GnssMeasurementsProvider$StatusChangedOperation;->execute(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+HSPLcom/android/server/location/GnssMeasurementsProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssMeasurementsProvider;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/location/GnssMeasurementsProvider;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;)V
+HSPLcom/android/server/location/GnssMeasurementsProvider;->access$000()Z
+PLcom/android/server/location/GnssMeasurementsProvider;->access$100(Z)Z
+PLcom/android/server/location/GnssMeasurementsProvider;->access$200()Z
 PLcom/android/server/location/GnssMeasurementsProvider;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;
 HSPLcom/android/server/location/GnssMeasurementsProvider;->isAvailableInPlatform()Z
-PLcom/android/server/location/GnssMeasurementsProvider;->lambda$onMeasurementsAvailable$0$GnssMeasurementsProvider(Landroid/location/GnssMeasurementsEvent;Landroid/location/IGnssMeasurementsListener;Lcom/android/server/location/CallerIdentity;)V
-HSPLcom/android/server/location/GnssMeasurementsProvider;->onCapabilitiesUpdated(IZ)V
+HPLcom/android/server/location/GnssMeasurementsProvider;->lambda$onMeasurementsAvailable$0$GnssMeasurementsProvider(Landroid/location/GnssMeasurementsEvent;Landroid/location/IGnssMeasurementsListener;Lcom/android/server/location/CallerIdentity;)V
+HSPLcom/android/server/location/GnssMeasurementsProvider;->onCapabilitiesUpdated(Z)V
 HSPLcom/android/server/location/GnssMeasurementsProvider;->onGpsEnabledChanged()V
-PLcom/android/server/location/GnssMeasurementsProvider;->onMeasurementsAvailable(Landroid/location/GnssMeasurementsEvent;)V
+HPLcom/android/server/location/GnssMeasurementsProvider;->onMeasurementsAvailable(Landroid/location/GnssMeasurementsEvent;)V
 PLcom/android/server/location/GnssMeasurementsProvider;->registerWithService()I
 HSPLcom/android/server/location/GnssMeasurementsProvider;->resumeIfStarted()V
 PLcom/android/server/location/GnssMeasurementsProvider;->unregisterFromService()V
+HSPLcom/android/server/location/GnssNavigationMessageProvider$GnssNavigationMessageProviderNative;-><init>()V
 HSPLcom/android/server/location/GnssNavigationMessageProvider$GnssNavigationMessageProviderNative;->isNavigationMessageSupported()Z
+HSPLcom/android/server/location/GnssNavigationMessageProvider$StatusChangedOperation;-><init>(I)V
+HSPLcom/android/server/location/GnssNavigationMessageProvider;-><clinit>()V
+HSPLcom/android/server/location/GnssNavigationMessageProvider;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/location/GnssNavigationMessageProvider;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/location/GnssNavigationMessageProvider$GnssNavigationMessageProviderNative;)V
+HSPLcom/android/server/location/GnssNavigationMessageProvider;->access$000()Z
 HSPLcom/android/server/location/GnssNavigationMessageProvider;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;
 HSPLcom/android/server/location/GnssNavigationMessageProvider;->isAvailableInPlatform()Z
-HSPLcom/android/server/location/GnssNavigationMessageProvider;->onCapabilitiesUpdated(IZ)V
+HSPLcom/android/server/location/GnssNavigationMessageProvider;->onCapabilitiesUpdated(Z)V
 HSPLcom/android/server/location/GnssNavigationMessageProvider;->onGpsEnabledChanged()V
 HSPLcom/android/server/location/GnssNavigationMessageProvider;->resumeIfStarted()V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/location/GnssNetworkConnectivityHandler$1;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/location/GnssNetworkConnectivityHandler$1;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler;)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$1;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$1;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/location/GnssNetworkConnectivityHandler$2;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler;)V
 PLcom/android/server/location/GnssNetworkConnectivityHandler$2;->onAvailable(Landroid/net/Network;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler$2;->onLost(Landroid/net/Network;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler$2;->onUnavailable()V
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;-><init>()V
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;-><init>(Lcom/android/server/location/GnssNetworkConnectivityHandler$1;)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$000(Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;)Z
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$1000(Landroid/net/NetworkCapabilities;)S
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$700(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;)Ljava/lang/String;
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$702(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$800(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;)I
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$802(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;I)I
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$900(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;)Landroid/net/NetworkCapabilities;
+PLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->access$902(Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;Landroid/net/NetworkCapabilities;)Landroid/net/NetworkCapabilities;
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->getCapabilityFlags(Landroid/net/NetworkCapabilities;)S
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->hasCapabilitiesChanged(Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;)Z
+HPLcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;->hasCapabilityChanged(Landroid/net/NetworkCapabilities;Landroid/net/NetworkCapabilities;I)Z
+HSPLcom/android/server/location/GnssNetworkConnectivityHandler;-><clinit>()V
 HSPLcom/android/server/location/GnssNetworkConnectivityHandler;-><init>(Landroid/content/Context;Lcom/android/server/location/GnssNetworkConnectivityHandler$GnssNetworkListener;Landroid/os/Looper;)V
-PLcom/android/server/location/GnssNetworkConnectivityHandler;->getApnIpType(Ljava/lang/String;)I
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->getNetworkCapability(I)I
-PLcom/android/server/location/GnssNetworkConnectivityHandler;->handleReleaseSuplConnection(I)V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->handleRequestSuplConnection(I[B)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$100()Z
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$200()Z
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$300(Lcom/android/server/location/GnssNetworkConnectivityHandler;)Lcom/android/server/location/GnssNetworkConnectivityHandler$GnssNetworkListener;
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$400(Lcom/android/server/location/GnssNetworkConnectivityHandler;Landroid/net/Network;ZLandroid/net/NetworkCapabilities;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$500(Lcom/android/server/location/GnssNetworkConnectivityHandler;Landroid/net/Network;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->access$600(Lcom/android/server/location/GnssNetworkConnectivityHandler;I)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->agpsDataConnStateAsString()Ljava/lang/String;
+HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->createNetworkConnectivityCallback()Landroid/net/ConnectivityManager$NetworkCallback;
+HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->createSuplConnectivityCallback()Landroid/net/ConnectivityManager$NetworkCallback;
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->ensureInHandlerThread()V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->getApnIpType(Ljava/lang/String;)I
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->getNetworkCapability(I)I
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->handleReleaseSuplConnection(I)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->handleRequestSuplConnection(I[B)V
 PLcom/android/server/location/GnssNetworkConnectivityHandler;->handleSuplConnectionAvailable(Landroid/net/Network;)V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->handleUpdateNetworkState(Landroid/net/Network;ZLandroid/net/NetworkCapabilities;)V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->lambda$onReportAGpsStatus$0$GnssNetworkConnectivityHandler(I[B)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->handleUpdateNetworkState(Landroid/net/Network;ZLandroid/net/NetworkCapabilities;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->lambda$onReportAGpsStatus$0$GnssNetworkConnectivityHandler(I[B)V
 PLcom/android/server/location/GnssNetworkConnectivityHandler;->lambda$onReportAGpsStatus$1$GnssNetworkConnectivityHandler()V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->lambda$runEventAndReleaseWakeLock$2$GnssNetworkConnectivityHandler(Ljava/lang/Runnable;)V
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->onReportAGpsStatus(II[B)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->lambda$runEventAndReleaseWakeLock$2$GnssNetworkConnectivityHandler(Ljava/lang/Runnable;)V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->onReportAGpsStatus(II[B)V
 HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->registerNetworkCallbacks()V
-PLcom/android/server/location/GnssNetworkConnectivityHandler;->setRouting()V
+PLcom/android/server/location/GnssNetworkConnectivityHandler;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->runOnHandler(Ljava/lang/Runnable;)V
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->setRouting()V
 PLcom/android/server/location/GnssNetworkConnectivityHandler;->translateToApnIpType(Ljava/lang/String;Ljava/lang/String;)I
-HSPLcom/android/server/location/GnssNetworkConnectivityHandler;->updateTrackedNetworksState(ZLandroid/net/Network;Landroid/net/NetworkCapabilities;)Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;
-PLcom/android/server/location/GnssPositionMode;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/location/GnssNetworkConnectivityHandler;->updateTrackedNetworksState(ZLandroid/net/Network;Landroid/net/NetworkCapabilities;)Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;
+HPLcom/android/server/location/GnssPositionMode;-><init>(IIIIIZ)V
+HPLcom/android/server/location/GnssPositionMode;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/location/GnssSatelliteBlacklistHelper$1;-><init>(Lcom/android/server/location/GnssSatelliteBlacklistHelper;Landroid/os/Handler;)V
 PLcom/android/server/location/GnssSatelliteBlacklistHelper$1;->onChange(Z)V
 HSPLcom/android/server/location/GnssSatelliteBlacklistHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/GnssSatelliteBlacklistHelper$GnssSatelliteBlacklistCallback;)V
 HSPLcom/android/server/location/GnssSatelliteBlacklistHelper;->parseSatelliteBlacklist(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/location/GnssSatelliteBlacklistHelper;->updateSatelliteBlacklist()V
+HSPLcom/android/server/location/GnssStatusListenerHelper;-><clinit>()V
+HSPLcom/android/server/location/GnssStatusListenerHelper;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 PLcom/android/server/location/GnssStatusListenerHelper;->getHandlerOperation(I)Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;
-PLcom/android/server/location/GnssStatusListenerHelper;->lambda$onNmeaReceived$4$GnssStatusListenerHelper(JLjava/lang/String;Landroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
-PLcom/android/server/location/GnssStatusListenerHelper;->lambda$onSvStatusChanged$3$GnssStatusListenerHelper(I[I[F[F[F[FLandroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->lambda$onFirstFix$2(ILandroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->lambda$onNmeaReceived$4$GnssStatusListenerHelper(JLjava/lang/String;Landroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->lambda$onStatusChanged$0(Landroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->lambda$onStatusChanged$1(Landroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->lambda$onSvStatusChanged$3$GnssStatusListenerHelper(I[I[F[F[F[F[FLandroid/location/IGnssStatusListener;Lcom/android/server/location/CallerIdentity;)V
 PLcom/android/server/location/GnssStatusListenerHelper;->onFirstFix(I)V
-HSPLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V
-HSPLcom/android/server/location/GnssStatusListenerHelper;->onStatusChanged(Z)V
-PLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->onNmeaReceived(JLjava/lang/String;)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->onStatusChanged(Z)V
+HPLcom/android/server/location/GnssStatusListenerHelper;->onSvStatusChanged(I[I[F[F[F[F[F)V
 PLcom/android/server/location/GnssStatusListenerHelper;->registerWithService()I
+PLcom/android/server/location/GnssStatusListenerHelper;->unregisterFromService()V
+HSPLcom/android/server/location/GnssVisibilityControl$1;-><init>(Lcom/android/server/location/GnssVisibilityControl;)V
+HPLcom/android/server/location/GnssVisibilityControl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;-><init>(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;-><init>(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZLcom/android/server/location/GnssVisibilityControl$1;)V
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1000(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)B
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1100(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1200(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)B
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1300(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1400(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)B
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1500(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$1600(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$400(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$500(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$600(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$700(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$800(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->access$900(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->getResponseTypeAsString()Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->isEmergencyRequestNotification()Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->isLocationProvided()Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->isRequestAccepted()Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->isRequestAttributedToProxyApp()Z
+PLcom/android/server/location/GnssVisibilityControl$NfwNotification;->toString()Ljava/lang/String;
+PLcom/android/server/location/GnssVisibilityControl$ProxyAppState;-><init>(Z)V
+PLcom/android/server/location/GnssVisibilityControl$ProxyAppState;-><init>(ZLcom/android/server/location/GnssVisibilityControl$1;)V
+PLcom/android/server/location/GnssVisibilityControl$ProxyAppState;->access$100(Lcom/android/server/location/GnssVisibilityControl$ProxyAppState;)Z
+PLcom/android/server/location/GnssVisibilityControl$ProxyAppState;->access$300(Lcom/android/server/location/GnssVisibilityControl$ProxyAppState;)Z
+HSPLcom/android/server/location/GnssVisibilityControl;-><clinit>()V
+HSPLcom/android/server/location/GnssVisibilityControl;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/internal/location/GpsNetInitiatedHandler;)V
+PLcom/android/server/location/GnssVisibilityControl;->access$000(Lcom/android/server/location/GnssVisibilityControl;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/GnssVisibilityControl;->disableNfwLocationAccess()V
+HSPLcom/android/server/location/GnssVisibilityControl;->getLocationPermissionEnabledProxyApps()[Ljava/lang/String;
+HPLcom/android/server/location/GnssVisibilityControl;->getProxyAppInfo(Ljava/lang/String;)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/location/GnssVisibilityControl;->handleGpsEnabledChanged(Z)V
+HSPLcom/android/server/location/GnssVisibilityControl;->handleInitialize()V
+PLcom/android/server/location/GnssVisibilityControl;->handleNfwNotification(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)V
+HPLcom/android/server/location/GnssVisibilityControl;->handlePermissionsChanged(I)V
+HPLcom/android/server/location/GnssVisibilityControl;->handleProxyAppPackageUpdate(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/location/GnssVisibilityControl;->handleUpdateProxyApps(Ljava/util/List;)V
+PLcom/android/server/location/GnssVisibilityControl;->hasLocationPermission(Ljava/lang/String;)Z
+PLcom/android/server/location/GnssVisibilityControl;->isPermissionMismatched(Lcom/android/server/location/GnssVisibilityControl$ProxyAppState;Lcom/android/server/location/GnssVisibilityControl$NfwNotification;)Z
+PLcom/android/server/location/GnssVisibilityControl;->isProxyAppInstalled(Ljava/lang/String;)Z
+HSPLcom/android/server/location/GnssVisibilityControl;->isProxyAppListUpdated(Ljava/util/List;)Z
+HSPLcom/android/server/location/GnssVisibilityControl;->lambda$FLGfeDaxF8J3CE9m-TcOXh5j6ow(Lcom/android/server/location/GnssVisibilityControl;)V
+HPLcom/android/server/location/GnssVisibilityControl;->lambda$new$0$GnssVisibilityControl(I)V
+PLcom/android/server/location/GnssVisibilityControl;->lambda$new$1$GnssVisibilityControl(I)V
+HSPLcom/android/server/location/GnssVisibilityControl;->lambda$onConfigurationUpdated$4$GnssVisibilityControl(Ljava/util/List;)V
+HSPLcom/android/server/location/GnssVisibilityControl;->lambda$onGpsEnabledChanged$2$GnssVisibilityControl(Z)V
+PLcom/android/server/location/GnssVisibilityControl;->lambda$reportNfwNotification$3$GnssVisibilityControl(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V
+HSPLcom/android/server/location/GnssVisibilityControl;->lambda$runEventAndReleaseWakeLock$6$GnssVisibilityControl(Ljava/lang/Runnable;)V
+HSPLcom/android/server/location/GnssVisibilityControl;->listenForProxyAppsPackageUpdates()V
+PLcom/android/server/location/GnssVisibilityControl;->logEvent(Lcom/android/server/location/GnssVisibilityControl$NfwNotification;Z)V
+HSPLcom/android/server/location/GnssVisibilityControl;->onConfigurationUpdated(Lcom/android/server/location/GnssConfiguration;)V
+HSPLcom/android/server/location/GnssVisibilityControl;->onGpsEnabledChanged(Z)V
+PLcom/android/server/location/GnssVisibilityControl;->reportNfwNotification(Ljava/lang/String;BLjava/lang/String;BLjava/lang/String;BZZ)V
+PLcom/android/server/location/GnssVisibilityControl;->resetProxyAppsState()V
+HSPLcom/android/server/location/GnssVisibilityControl;->runEventAndReleaseWakeLock(Ljava/lang/Runnable;)Ljava/lang/Runnable;
+HSPLcom/android/server/location/GnssVisibilityControl;->runOnHandler(Ljava/lang/Runnable;)V
+HSPLcom/android/server/location/GnssVisibilityControl;->setNfwLocationAccessProxyAppsInGnssHal([Ljava/lang/String;)V
+PLcom/android/server/location/GnssVisibilityControl;->shouldEnableLocationPermissionInGnssHal(Ljava/lang/String;)Z
+PLcom/android/server/location/GnssVisibilityControl;->updateNfwLocationAccessProxyAppsInGnssHal()V
+HSPLcom/android/server/location/HardwareActivityRecognitionProxy;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/HardwareActivityRecognitionProxy;->createAndRegister(Landroid/content/Context;)Lcom/android/server/location/HardwareActivityRecognitionProxy;
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->lambda$Z7jbekKm-LTVAz47zPN0h1VYfjo(Lcom/android/server/location/HardwareActivityRecognitionProxy;Landroid/os/IBinder;)V
+PLcom/android/server/location/HardwareActivityRecognitionProxy;->onBind(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/HardwareActivityRecognitionProxy;->register()Z
+PLcom/android/server/location/LocationBasedCountryDetector$1;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V
 PLcom/android/server/location/LocationBasedCountryDetector$1;->onLocationChanged(Landroid/location/Location;)V
+PLcom/android/server/location/LocationBasedCountryDetector$2;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;)V
+PLcom/android/server/location/LocationBasedCountryDetector$2;->run()V
+PLcom/android/server/location/LocationBasedCountryDetector$3;-><init>(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V
 PLcom/android/server/location/LocationBasedCountryDetector$3;->run()V
-HSPLcom/android/server/location/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country;
+PLcom/android/server/location/LocationBasedCountryDetector;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/LocationBasedCountryDetector;->access$000(Lcom/android/server/location/LocationBasedCountryDetector;Landroid/location/Location;)V
+PLcom/android/server/location/LocationBasedCountryDetector;->detectCountry()Landroid/location/Country;
 PLcom/android/server/location/LocationBasedCountryDetector;->getCountryFromLocation(Landroid/location/Location;)Ljava/lang/String;
-HSPLcom/android/server/location/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List;
+PLcom/android/server/location/LocationBasedCountryDetector;->getEnabledProviders()Ljava/util/List;
 PLcom/android/server/location/LocationBasedCountryDetector;->getLastKnownLocation()Landroid/location/Location;
-HSPLcom/android/server/location/LocationBasedCountryDetector;->getQueryLocationTimeout()J
-HSPLcom/android/server/location/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z
+PLcom/android/server/location/LocationBasedCountryDetector;->getQueryLocationTimeout()J
+PLcom/android/server/location/LocationBasedCountryDetector;->isAcceptableProvider(Ljava/lang/String;)Z
 PLcom/android/server/location/LocationBasedCountryDetector;->queryCountryCode(Landroid/location/Location;)V
-HSPLcom/android/server/location/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V
+PLcom/android/server/location/LocationBasedCountryDetector;->registerListener(Ljava/lang/String;Landroid/location/LocationListener;)V
 PLcom/android/server/location/LocationBasedCountryDetector;->stop()V
 PLcom/android/server/location/LocationBasedCountryDetector;->unregisterListener(Landroid/location/LocationListener;)V
-PLcom/android/server/location/LocationBlacklist;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/location/LocationBlacklist;->getStringArrayLocked(Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/location/LocationBlacklist;->isBlacklisted(Ljava/lang/String;)Z
-HSPLcom/android/server/location/LocationBlacklist;->reloadBlacklist()V
-HSPLcom/android/server/location/LocationBlacklist;->reloadBlacklistLocked()V
-HSPLcom/android/server/location/LocationBlacklist;->switchUser(I)V
+HSPLcom/android/server/location/LocationFudger$1;-><init>(Lcom/android/server/location/LocationFudger;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationFudger;-><clinit>()V
 HSPLcom/android/server/location/LocationFudger;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
-PLcom/android/server/location/LocationFudger;->createCoarseLocked(Landroid/location/Location;)Landroid/location/Location;
+PLcom/android/server/location/LocationFudger;->addCoarseLocationExtraLocked(Landroid/location/Location;)Landroid/location/Location;
+HPLcom/android/server/location/LocationFudger;->createCoarseLocked(Landroid/location/Location;)Landroid/location/Location;
 PLcom/android/server/location/LocationFudger;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/location/LocationFudger;->getOrCreate(Landroid/location/Location;)Landroid/location/Location;
+HPLcom/android/server/location/LocationFudger;->getOrCreate(Landroid/location/Location;)Landroid/location/Location;
 HSPLcom/android/server/location/LocationFudger;->loadCoarseAccuracy()F
-PLcom/android/server/location/LocationFudger;->updateRandomOffsetLocked()V
-PLcom/android/server/location/LocationProviderProxy$1;->onReportLocation(Landroid/location/Location;)V
+PLcom/android/server/location/LocationFudger;->metersToDegreesLatitude(D)D
+HPLcom/android/server/location/LocationFudger;->metersToDegreesLongitude(DD)D
+HSPLcom/android/server/location/LocationFudger;->nextOffsetLocked()D
+HSPLcom/android/server/location/LocationFudger;->setAccuracyInMetersLocked(F)V
+HPLcom/android/server/location/LocationFudger;->updateRandomOffsetLocked()V
+PLcom/android/server/location/LocationFudger;->wrapLatitude(D)D
+PLcom/android/server/location/LocationFudger;->wrapLongitude(D)D
+HPLcom/android/server/location/LocationPermissionUtil;->doesCallerReportToAppOps(Landroid/content/Context;Lcom/android/server/location/CallerIdentity;)Z
+HPLcom/android/server/location/LocationPermissionUtil;->hasPermissionLocationHardware(Landroid/content/Context;Lcom/android/server/location/CallerIdentity;)Z
+HPLcom/android/server/location/LocationPermissionUtil;->hasPermissionUpdateAppOpsStats(Landroid/content/Context;Lcom/android/server/location/CallerIdentity;)Z
+HSPLcom/android/server/location/LocationProviderProxy$1;-><init>(Lcom/android/server/location/LocationProviderProxy;)V
+HPLcom/android/server/location/LocationProviderProxy$1;->onReportLocation(Landroid/location/Location;)V
+HSPLcom/android/server/location/LocationProviderProxy$1;->onSetAllowed(Z)V
 HSPLcom/android/server/location/LocationProviderProxy$1;->onSetEnabled(Z)V
 HSPLcom/android/server/location/LocationProviderProxy$1;->onSetProperties(Lcom/android/internal/location/ProviderProperties;)V
+HSPLcom/android/server/location/LocationProviderProxy$2;-><init>(Lcom/android/server/location/LocationProviderProxy;Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;IIILandroid/os/Handler;)V
+HSPLcom/android/server/location/LocationProviderProxy$2;->lambda$onBind$0(Lcom/android/server/location/LocationProviderProxy;Landroid/os/IBinder;)V
 HSPLcom/android/server/location/LocationProviderProxy$2;->onBind()V
 PLcom/android/server/location/LocationProviderProxy$2;->onUnbind()V
+HSPLcom/android/server/location/LocationProviderProxy;-><clinit>()V
+HSPLcom/android/server/location/LocationProviderProxy;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;III)V
 HSPLcom/android/server/location/LocationProviderProxy;-><init>(Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;Ljava/lang/String;III)V
+HSPLcom/android/server/location/LocationProviderProxy;-><init>(Landroid/content/Context;Ljava/lang/String;II)V
+HSPLcom/android/server/location/LocationProviderProxy;->access$100(Lcom/android/server/location/LocationProviderProxy;)Ljava/lang/Object;
+HSPLcom/android/server/location/LocationProviderProxy;->access$100(Lcom/android/server/location/LocationProviderProxy;Landroid/os/IBinder;)V
+PLcom/android/server/location/LocationProviderProxy;->access$200(Lcom/android/server/location/LocationProviderProxy;)Ljava/lang/Object;
+HSPLcom/android/server/location/LocationProviderProxy;->access$200(Lcom/android/server/location/LocationProviderProxy;)Z
+PLcom/android/server/location/LocationProviderProxy;->access$200(Lcom/android/server/location/LocationProviderProxy;Landroid/os/IBinder;)V
+PLcom/android/server/location/LocationProviderProxy;->access$300(Lcom/android/server/location/LocationProviderProxy;)Z
+HSPLcom/android/server/location/LocationProviderProxy;->bind()Z
 HSPLcom/android/server/location/LocationProviderProxy;->createAndBind(Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;Ljava/lang/String;III)Lcom/android/server/location/LocationProviderProxy;
+HSPLcom/android/server/location/LocationProviderProxy;->createAndBind(Landroid/content/Context;Ljava/lang/String;III)Lcom/android/server/location/LocationProviderProxy;
+HSPLcom/android/server/location/LocationProviderProxy;->createAndRegister(Landroid/content/Context;Ljava/lang/String;II)Lcom/android/server/location/LocationProviderProxy;
 PLcom/android/server/location/LocationProviderProxy;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/location/LocationProviderProxy;->getProviderPackages()Ljava/util/List;
+PLcom/android/server/location/LocationProviderProxy;->getProviderPackages()Ljava/util/List;
 HSPLcom/android/server/location/LocationProviderProxy;->initializeService(Landroid/os/IBinder;)V
-HSPLcom/android/server/location/LocationProviderProxy;->resetProviderPackages(Ljava/util/List;)V
-HSPLcom/android/server/location/LocationProviderProxy;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-HSPLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/location/LocationProviderProxy;->lambda$26d2FFhpYis1Ws92o2khDXr7LzU(Lcom/android/server/location/LocationProviderProxy;)V
+HSPLcom/android/server/location/LocationProviderProxy;->lambda$3wGALcuMWaMkkBRL1d0LQ_QqoCk(Lcom/android/server/location/LocationProviderProxy;Landroid/os/IBinder;)V
+HPLcom/android/server/location/LocationProviderProxy;->lambda$onSetRequest$0$LocationProviderProxy(Lcom/android/internal/location/ProviderRequest;Landroid/os/IBinder;)V
+HPLcom/android/server/location/LocationProviderProxy;->lambda$onSetRequest$0(Lcom/android/internal/location/ProviderRequest;Landroid/os/IBinder;)V
+HPLcom/android/server/location/LocationProviderProxy;->lambda$onSetRequest$0(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;Landroid/os/IBinder;)V
+HSPLcom/android/server/location/LocationProviderProxy;->onBind(Landroid/os/IBinder;)V
+HSPLcom/android/server/location/LocationProviderProxy;->onSetRequest(Lcom/android/internal/location/ProviderRequest;)V
+HPLcom/android/server/location/LocationProviderProxy;->onSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+PLcom/android/server/location/LocationProviderProxy;->onUnbind()V
+HSPLcom/android/server/location/LocationProviderProxy;->register()Z
+PLcom/android/server/location/LocationProviderProxy;->resetProviderPackages(Ljava/util/List;)V
+HSPLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->compareTo(Lcom/android/server/location/LocationRequestStatistics$PackageProviderKey;)I
+PLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/location/LocationRequestStatistics$PackageProviderKey;->hashCode()I
+HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;-><init>()V
+HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;-><init>(Lcom/android/server/location/LocationRequestStatistics$1;)V
+HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->access$100(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;J)V
+HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->access$200(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;Z)V
+PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->access$300(Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;)V
 PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->getDurationMs()J
 PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->getForegroundDurationMs()J
 PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->getTimeSinceFirstRequestMs()J
 PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->getTimeSinceLastRequestStoppedMs()J
 PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->isActive()Z
 HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->startRequesting(J)V
-PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->stopRequesting()V
-PLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->toString()Ljava/lang/String;
+HPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->stopRequesting()V
+HPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->toString()Ljava/lang/String;
+HSPLcom/android/server/location/LocationRequestStatistics$PackageStatistics;->updateForeground(Z)V
+HSPLcom/android/server/location/LocationRequestStatistics$RequestSummary;-><init>(Ljava/lang/String;Ljava/lang/String;J)V
+HPLcom/android/server/location/LocationRequestStatistics$RequestSummary;->dump(Lcom/android/internal/util/IndentingPrintWriter;J)V
+HSPLcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;-><init>()V
+HSPLcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;->addRequest(Ljava/lang/String;Ljava/lang/String;J)V
+HSPLcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;->addRequestSummary(Lcom/android/server/location/LocationRequestStatistics$RequestSummary;)V
+HPLcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;->removeRequest(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/location/LocationRequestStatistics;-><init>()V
 HSPLcom/android/server/location/LocationRequestStatistics;->startRequesting(Ljava/lang/String;Ljava/lang/String;JZ)V
-PLcom/android/server/location/LocationRequestStatistics;->stopRequesting(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/location/LocationRequestStatistics;->stopRequesting(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/location/LocationRequestStatistics;->updateForeground(Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/location/LocationSettingsStore$GlobalSettingChangedListener;->onSettingChanged(I)V
+HSPLcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/LocationSettingsStore$1;)V
+HSPLcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;->access$400(Lcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;)V
+HSPLcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;->getValueForUser(II)I
+HSPLcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;->register()V
+HSPLcom/android/server/location/LocationSettingsStore$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/LocationSettingsStore$1;)V
+HSPLcom/android/server/location/LocationSettingsStore$LongGlobalSetting;->getValue(J)J
+HSPLcom/android/server/location/LocationSettingsStore$LongGlobalSetting;->register()V
+HSPLcom/android/server/location/LocationSettingsStore$ObservingSetting;-><init>(Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore$ObservingSetting;-><init>(Landroid/os/Handler;Lcom/android/server/location/LocationSettingsStore$1;)V
+HSPLcom/android/server/location/LocationSettingsStore$ObservingSetting;->addListener(Lcom/android/server/location/LocationSettingsStore$UserSettingChangedListener;)V
+HPLcom/android/server/location/LocationSettingsStore$ObservingSetting;->isRegistered()Z
+HSPLcom/android/server/location/LocationSettingsStore$ObservingSetting;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/location/LocationSettingsStore$ObservingSetting;->register(Landroid/content/Context;Landroid/net/Uri;)V
+HSPLcom/android/server/location/LocationSettingsStore$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/LocationSettingsStore$1;)V
+HPLcom/android/server/location/LocationSettingsStore$StringListCachedSecureSetting;->getValueForUser(I)Ljava/util/List;
+HSPLcom/android/server/location/LocationSettingsStore$StringListCachedSecureSetting;->register()V
+HSPLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;Lcom/android/server/location/LocationSettingsStore$1;)V
+HPLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;->getValue()Ljava/util/Set;
+PLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;->invalidate()V
+PLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;->register()V
+HSPLcom/android/server/location/LocationSettingsStore;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/location/LocationSettingsStore;->addOnBackgroundThrottleIntervalChangedListener(Lcom/android/server/location/LocationSettingsStore$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/LocationSettingsStore;->addOnBackgroundThrottlePackageWhitelistChangedListener(Lcom/android/server/location/LocationSettingsStore$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/LocationSettingsStore;->addOnIgnoreSettingsPackageWhitelistChangedListener(Lcom/android/server/location/LocationSettingsStore$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/LocationSettingsStore;->addOnLocationEnabledChangedListener(Lcom/android/server/location/LocationSettingsStore$UserSettingChangedListener;)V
+PLcom/android/server/location/LocationSettingsStore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/location/LocationSettingsStore;->getBackgroundThrottleIntervalMs()J
+PLcom/android/server/location/LocationSettingsStore;->getBackgroundThrottlePackageWhitelist()Ljava/util/Set;
+PLcom/android/server/location/LocationSettingsStore;->getBackgroundThrottleProximityAlertIntervalMs()J
+HPLcom/android/server/location/LocationSettingsStore;->getMaxLastLocationAgeMs()J
+HSPLcom/android/server/location/LocationSettingsStore;->isLocationEnabled(I)Z
+HPLcom/android/server/location/LocationSettingsStore;->isLocationPackageBlacklisted(ILjava/lang/String;)Z
+PLcom/android/server/location/LocationSettingsStore;->lambda$new$0()Landroid/util/ArraySet;
+PLcom/android/server/location/LocationSettingsStore;->lambda$new$1()Landroid/util/ArraySet;
+HSPLcom/android/server/location/LocationSettingsStore;->onSystemReady()V
+HSPLcom/android/server/location/LocationSettingsStore;->setLocationProviderAllowed(Ljava/lang/String;ZI)V
+HSPLcom/android/server/location/LocationUsageLogger;-><init>()V
+HSPLcom/android/server/location/LocationUsageLogger;->bucketizeDistance(F)I
+HSPLcom/android/server/location/LocationUsageLogger;->bucketizeExpireIn(J)I
+HSPLcom/android/server/location/LocationUsageLogger;->bucketizeInterval(J)I
+HSPLcom/android/server/location/LocationUsageLogger;->bucketizeProvider(Ljava/lang/String;)I
+PLcom/android/server/location/LocationUsageLogger;->bucketizeRadius(F)I
+HSPLcom/android/server/location/LocationUsageLogger;->categorizeActivityImportance(I)I
+HSPLcom/android/server/location/LocationUsageLogger;->getCallbackType(IZZ)I
+HSPLcom/android/server/location/LocationUsageLogger;->hitApiUsageLogCap()Z
+PLcom/android/server/location/LocationUsageLogger;->logLocationApiUsage(IILjava/lang/String;)V
+HSPLcom/android/server/location/LocationUsageLogger;->logLocationApiUsage(IILjava/lang/String;Landroid/location/LocationRequest;ZZLandroid/location/Geofence;I)V
+HSPLcom/android/server/location/MockableLocationProvider$ListenerWrapper;-><init>(Lcom/android/server/location/MockableLocationProvider;Lcom/android/server/location/AbstractLocationProvider;)V
+HSPLcom/android/server/location/MockableLocationProvider$ListenerWrapper;-><init>(Lcom/android/server/location/MockableLocationProvider;Lcom/android/server/location/AbstractLocationProvider;Lcom/android/server/location/MockableLocationProvider$1;)V
+HPLcom/android/server/location/MockableLocationProvider$ListenerWrapper;->onReportLocation(Landroid/location/Location;)V
+HSPLcom/android/server/location/MockableLocationProvider$ListenerWrapper;->onStateChanged(Lcom/android/server/location/AbstractLocationProvider$State;Lcom/android/server/location/AbstractLocationProvider$State;)V
+HSPLcom/android/server/location/MockableLocationProvider;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/location/AbstractLocationProvider$Listener;)V
+HSPLcom/android/server/location/MockableLocationProvider;-><init>(Ljava/lang/Object;Lcom/android/server/location/AbstractLocationProvider$Listener;)V
+HSPLcom/android/server/location/MockableLocationProvider;->access$100(Lcom/android/server/location/MockableLocationProvider;)Ljava/lang/Object;
+HSPLcom/android/server/location/MockableLocationProvider;->access$200(Lcom/android/server/location/MockableLocationProvider;)Lcom/android/server/location/AbstractLocationProvider;
+PLcom/android/server/location/MockableLocationProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/location/MockableLocationProvider;->getProvider()Lcom/android/server/location/AbstractLocationProvider;
+HSPLcom/android/server/location/MockableLocationProvider;->getState()Lcom/android/server/location/AbstractLocationProvider$State;
+HSPLcom/android/server/location/MockableLocationProvider;->isMock()Z
+PLcom/android/server/location/MockableLocationProvider;->onExtraCommand(IILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/location/MockableLocationProvider;->onSetRequest(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/MockableLocationProvider;->setProviderLocked(Lcom/android/server/location/AbstractLocationProvider;)V
+HSPLcom/android/server/location/MockableLocationProvider;->setRealProvider(Lcom/android/server/location/AbstractLocationProvider;)V
+HSPLcom/android/server/location/NanoAppStateManager;-><init>()V
 HSPLcom/android/server/location/NanoAppStateManager;->addNanoAppInstance(IJI)V
-PLcom/android/server/location/NanoAppStateManager;->foreachNanoAppInstanceInfo(Ljava/util/function/Consumer;)V
+HPLcom/android/server/location/NanoAppStateManager;->foreachNanoAppInstanceInfo(Ljava/util/function/Consumer;)V
 HSPLcom/android/server/location/NanoAppStateManager;->getNanoAppHandle(IJ)I
-PLcom/android/server/location/NanoAppStateManager;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
+HPLcom/android/server/location/NanoAppStateManager;->getNanoAppInstanceInfo(I)Landroid/hardware/location/NanoAppInstanceInfo;
 HSPLcom/android/server/location/NanoAppStateManager;->handleQueryAppEntry(IJI)V
 HSPLcom/android/server/location/NanoAppStateManager;->removeNanoAppInstance(IJ)V
 HSPLcom/android/server/location/NanoAppStateManager;->updateCache(ILjava/util/List;)V
+HSPLcom/android/server/location/NtpTimeHelper;-><clinit>()V
+HSPLcom/android/server/location/NtpTimeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/NtpTimeHelper$InjectNtpTimeCallback;)V
 HSPLcom/android/server/location/NtpTimeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/location/NtpTimeHelper$InjectNtpTimeCallback;Landroid/util/NtpTrustedTime;)V
-HSPLcom/android/server/location/NtpTimeHelper;->blockingGetNtpTimeAndInject()V
-HSPLcom/android/server/location/NtpTimeHelper;->lambda$blockingGetNtpTimeAndInject$0$NtpTimeHelper(JJJ)V
-HSPLcom/android/server/location/NtpTimeHelper;->onNetworkAvailable()V
-HSPLcom/android/server/location/NtpTimeHelper;->retrieveAndInjectNtpTime()V
+PLcom/android/server/location/NtpTimeHelper;->blockingGetNtpTimeAndInject()V
+PLcom/android/server/location/NtpTimeHelper;->isNetworkConnected()Z
+PLcom/android/server/location/NtpTimeHelper;->lambda$blockingGetNtpTimeAndInject$0$NtpTimeHelper(JJJ)V
+PLcom/android/server/location/NtpTimeHelper;->lambda$xWqlqJuq4jBJ5-xhFLCwEKGVB0k(Lcom/android/server/location/NtpTimeHelper;)V
+PLcom/android/server/location/NtpTimeHelper;->onNetworkAvailable()V
+PLcom/android/server/location/NtpTimeHelper;->retrieveAndInjectNtpTime()V
+HSPLcom/android/server/location/PassiveProvider;-><clinit>()V
+HSPLcom/android/server/location/PassiveProvider;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/location/PassiveProvider;-><init>(Landroid/content/Context;Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;)V
 PLcom/android/server/location/PassiveProvider;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/location/PassiveProvider;->setRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
-PLcom/android/server/location/PassiveProvider;->updateLocation(Landroid/location/Location;)V
+HSPLcom/android/server/location/PassiveProvider;->onSetRequest(Lcom/android/internal/location/ProviderRequest;)V
+HSPLcom/android/server/location/PassiveProvider;->onSetRequest(Lcom/android/internal/location/ProviderRequest;Landroid/os/WorkSource;)V
+HPLcom/android/server/location/PassiveProvider;->updateLocation(Landroid/location/Location;)V
+PLcom/android/server/location/RemoteListenerHelper$1;-><init>(Lcom/android/server/location/RemoteListenerHelper;)V
 PLcom/android/server/location/RemoteListenerHelper$1;->run()V
-PLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V
+HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;-><init>(Lcom/android/server/location/RemoteListenerHelper;Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;Lcom/android/server/location/RemoteListenerHelper$1;)V
+HPLcom/android/server/location/RemoteListenerHelper$HandlerRunnable;->run()V
+PLcom/android/server/location/RemoteListenerHelper$IdentifiedListener;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/RemoteListenerHelper$IdentifiedListener;-><init>(Lcom/android/server/location/RemoteListenerHelper;Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;Lcom/android/server/location/RemoteListenerHelper$1;)V
+HPLcom/android/server/location/RemoteListenerHelper$IdentifiedListener;->access$500(Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;)Landroid/os/IInterface;
+HPLcom/android/server/location/RemoteListenerHelper$IdentifiedListener;->access$600(Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;)Lcom/android/server/location/CallerIdentity;
 HSPLcom/android/server/location/RemoteListenerHelper;-><init>(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;)V
-PLcom/android/server/location/RemoteListenerHelper;->addListener(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
+PLcom/android/server/location/RemoteListenerHelper;->access$200(Lcom/android/server/location/RemoteListenerHelper;)Z
+PLcom/android/server/location/RemoteListenerHelper;->access$202(Lcom/android/server/location/RemoteListenerHelper;Z)Z
+HPLcom/android/server/location/RemoteListenerHelper;->access$700(Lcom/android/server/location/RemoteListenerHelper;)Ljava/lang/String;
+HPLcom/android/server/location/RemoteListenerHelper;->addListener(Landroid/os/IInterface;Lcom/android/server/location/CallerIdentity;)V
 HSPLcom/android/server/location/RemoteListenerHelper;->calculateCurrentResultUnsafe()I
-HSPLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
-PLcom/android/server/location/RemoteListenerHelper;->hasPermission(Landroid/content/Context;Lcom/android/server/location/CallerIdentity;)Z
+HPLcom/android/server/location/RemoteListenerHelper;->foreach(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HSPLcom/android/server/location/RemoteListenerHelper;->foreachUnsafe(Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper;->hasPermission(Landroid/content/Context;Lcom/android/server/location/CallerIdentity;)Z
 PLcom/android/server/location/RemoteListenerHelper;->isRegistered()Z
-HSPLcom/android/server/location/RemoteListenerHelper;->lambda$tryUnregister$0$RemoteListenerHelper()V
-PLcom/android/server/location/RemoteListenerHelper;->removeListener(Landroid/os/IInterface;)V
+PLcom/android/server/location/RemoteListenerHelper;->lambda$tryUnregister$0$RemoteListenerHelper()V
+HPLcom/android/server/location/RemoteListenerHelper;->post(Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;)V
+HPLcom/android/server/location/RemoteListenerHelper;->removeListener(Landroid/os/IInterface;)V
 HSPLcom/android/server/location/RemoteListenerHelper;->setSupported(Z)V
+PLcom/android/server/location/RemoteListenerHelper;->tryRegister()V
+HPLcom/android/server/location/RemoteListenerHelper;->tryUnregister()V
 HSPLcom/android/server/location/RemoteListenerHelper;->tryUpdateRegistrationWithService()V
 HSPLcom/android/server/location/RemoteListenerHelper;->updateResult()V
-PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$Hh44Kcp05cKI6Hc6dJfQupn4QY8;-><init>(Lcom/android/server/locksettings/LockSettingsService;Landroid/app/admin/PasswordMetrics;I)V
-PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$Hh44Kcp05cKI6Hc6dJfQupn4QY8;->run()V
-PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$lWTrcqR9gZxL-pxwBbtvTGqAifU;->run()V
+PLcom/android/server/location/SettingsHelper$GlobalSettingChangedListener;->onSettingChanged(I)V
+HSPLcom/android/server/location/SettingsHelper$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper$IntegerSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/SettingsHelper$1;)V
+HSPLcom/android/server/location/SettingsHelper$IntegerSecureSetting;->access$400(Lcom/android/server/location/SettingsHelper$IntegerSecureSetting;)V
+HSPLcom/android/server/location/SettingsHelper$IntegerSecureSetting;->getValueForUser(II)I
+HSPLcom/android/server/location/SettingsHelper$IntegerSecureSetting;->register()V
+HSPLcom/android/server/location/SettingsHelper$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper$LongGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/SettingsHelper$1;)V
+HSPLcom/android/server/location/SettingsHelper$LongGlobalSetting;->getValue(J)J
+HSPLcom/android/server/location/SettingsHelper$LongGlobalSetting;->register()V
+HSPLcom/android/server/location/SettingsHelper$ObservingSetting;-><init>(Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper$ObservingSetting;-><init>(Landroid/os/Handler;Lcom/android/server/location/SettingsHelper$1;)V
+HSPLcom/android/server/location/SettingsHelper$ObservingSetting;->addListener(Lcom/android/server/location/SettingsHelper$UserSettingChangedListener;)V
+HPLcom/android/server/location/SettingsHelper$ObservingSetting;->isRegistered()Z
+HPLcom/android/server/location/SettingsHelper$ObservingSetting;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/location/SettingsHelper$ObservingSetting;->register(Landroid/content/Context;Landroid/net/Uri;)V
+HSPLcom/android/server/location/SettingsHelper$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper$StringListCachedSecureSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Landroid/os/Handler;Lcom/android/server/location/SettingsHelper$1;)V
+HPLcom/android/server/location/SettingsHelper$StringListCachedSecureSetting;->getValueForUser(I)Ljava/util/List;
+HSPLcom/android/server/location/SettingsHelper$StringListCachedSecureSetting;->register()V
+HSPLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/util/function/Supplier;Landroid/os/Handler;Lcom/android/server/location/SettingsHelper$1;)V
+HPLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;->getValue()Ljava/util/Set;
+PLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;->invalidate()V
+PLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;->register()V
+HSPLcom/android/server/location/SettingsHelper;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/location/SettingsHelper;->addOnBackgroundThrottleIntervalChangedListener(Lcom/android/server/location/SettingsHelper$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/SettingsHelper;->addOnBackgroundThrottlePackageWhitelistChangedListener(Lcom/android/server/location/SettingsHelper$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/SettingsHelper;->addOnIgnoreSettingsPackageWhitelistChangedListener(Lcom/android/server/location/SettingsHelper$GlobalSettingChangedListener;)V
+HSPLcom/android/server/location/SettingsHelper;->addOnLocationEnabledChangedListener(Lcom/android/server/location/SettingsHelper$UserSettingChangedListener;)V
+PLcom/android/server/location/SettingsHelper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/location/SettingsHelper;->getBackgroundThrottleIntervalMs()J
+HPLcom/android/server/location/SettingsHelper;->getBackgroundThrottlePackageWhitelist()Ljava/util/Set;
+HPLcom/android/server/location/SettingsHelper;->getMaxLastLocationAgeMs()J
+HSPLcom/android/server/location/SettingsHelper;->isLocationEnabled(I)Z
+HPLcom/android/server/location/SettingsHelper;->isLocationPackageBlacklisted(ILjava/lang/String;)Z
+PLcom/android/server/location/SettingsHelper;->lambda$new$0()Landroid/util/ArraySet;
+PLcom/android/server/location/SettingsHelper;->lambda$new$1()Landroid/util/ArraySet;
+HSPLcom/android/server/location/SettingsHelper;->onSystemReady()V
+HSPLcom/android/server/location/SettingsHelper;->setLocationProviderAllowed(Ljava/lang/String;ZI)V
+HSPLcom/android/server/location/UserInfoHelper$1;-><init>(Lcom/android/server/location/UserInfoHelper;)V
+PLcom/android/server/location/UserInfoHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/location/UserInfoHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/location/UserInfoHelper;->access$000(Lcom/android/server/location/UserInfoHelper;I)V
+PLcom/android/server/location/UserInfoHelper;->access$100(Lcom/android/server/location/UserInfoHelper;)V
+HSPLcom/android/server/location/UserInfoHelper;->addListener(Lcom/android/server/location/UserInfoHelper$UserChangedListener;)V
+PLcom/android/server/location/UserInfoHelper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/location/UserInfoHelper;->getCurrentUserId()I
+HSPLcom/android/server/location/UserInfoHelper;->getParentUserId(I)I
+HSPLcom/android/server/location/UserInfoHelper;->getProfileUserIdsForParentUser(I)[I
+HSPLcom/android/server/location/UserInfoHelper;->isCurrentUserOrProfile(I)Z
+HSPLcom/android/server/location/UserInfoHelper;->onSystemReady()V
+PLcom/android/server/location/UserInfoHelper;->onUserChanged(I)V
+PLcom/android/server/location/UserInfoHelper;->onUserProfilesChanged()V
+HSPLcom/android/server/location/UserInfoStore$1;-><init>(Lcom/android/server/location/UserInfoStore;)V
+HSPLcom/android/server/location/UserInfoStore$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/location/UserInfoStore;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/location/UserInfoStore;->access$000(Lcom/android/server/location/UserInfoStore;I)V
+PLcom/android/server/location/UserInfoStore;->access$100(Lcom/android/server/location/UserInfoStore;)V
+HSPLcom/android/server/location/UserInfoStore;->addListener(Lcom/android/server/location/UserInfoStore$UserChangedListener;)V
+PLcom/android/server/location/UserInfoStore;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/location/UserInfoStore;->getCurrentUserId()I
+HSPLcom/android/server/location/UserInfoStore;->getParentUserId(I)I
+HSPLcom/android/server/location/UserInfoStore;->getProfileUserIdsForParentUser(I)[I
+HSPLcom/android/server/location/UserInfoStore;->isCurrentUserOrProfile(I)Z
+HSPLcom/android/server/location/UserInfoStore;->onSystemReady()V
+HSPLcom/android/server/location/UserInfoStore;->onUserChanged(I)V
+PLcom/android/server/location/UserInfoStore;->onUserProfilesChanged()V
+PLcom/android/server/location/gnss/-$$Lambda$FxAranobP2o6eVcPEOp8tzZYyLY;-><init>(Lcom/android/server/location/gnss/GnssManagerService;)V
+PLcom/android/server/location/gnss/-$$Lambda$FxAranobP2o6eVcPEOp8tzZYyLY;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$UdLm78gS4fBvCkzR5_od9MCx3_M;-><init>(Lcom/android/server/location/gnss/GnssManagerService;)V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$UdLm78gS4fBvCkzR5_od9MCx3_M;->onUidImportance(II)V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$Xb7pwmWy3YdCevK1MZL3c-zTOco;-><init>(Lcom/android/server/location/gnss/GnssManagerService;II)V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$Xb7pwmWy3YdCevK1MZL3c-zTOco;->run()V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$de6v4jWKxQDC9J4FdGGrfKg2phA;-><init>(Lcom/android/server/location/gnss/GnssManagerService;)V
+HSPLcom/android/server/location/gnss/-$$Lambda$GnssManagerService$de6v4jWKxQDC9J4FdGGrfKg2phA;->onAppForegroundChanged(IZ)V
+HSPLcom/android/server/location/gnss/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;-><clinit>()V
+HSPLcom/android/server/location/gnss/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;-><init>()V
+PLcom/android/server/location/gnss/-$$Lambda$WsssLeTVg_jaQ16K-SvqbRc0TV8;-><init>(Lcom/android/server/location/gnss/GnssManagerService;)V
+PLcom/android/server/location/gnss/-$$Lambda$WsssLeTVg_jaQ16K-SvqbRc0TV8;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/location/gnss/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;-><clinit>()V
+HSPLcom/android/server/location/gnss/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;-><init>()V
+HPLcom/android/server/location/gnss/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/gnss/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;-><clinit>()V
+HSPLcom/android/server/location/gnss/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;-><init>()V
+PLcom/android/server/location/gnss/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/location/gnss/GnssManagerService;-><clinit>()V
+HSPLcom/android/server/location/gnss/GnssManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/SettingsHelper;Lcom/android/server/location/AppForegroundHelper;Lcom/android/server/location/LocationUsageLogger;)V
+HSPLcom/android/server/location/gnss/GnssManagerService;-><init>(Landroid/content/Context;Lcom/android/server/location/SettingsHelper;Lcom/android/server/location/AppForegroundHelper;Lcom/android/server/location/LocationUsageLogger;Lcom/android/server/location/GnssLocationProvider;)V
+HSPLcom/android/server/location/gnss/GnssManagerService;-><init>(Lcom/android/server/LocationManagerService;Landroid/content/Context;Lcom/android/server/location/GnssLocationProvider;Lcom/android/server/location/LocationUsageLogger;)V
+HSPLcom/android/server/location/gnss/GnssManagerService;-><init>(Lcom/android/server/LocationManagerService;Landroid/content/Context;Lcom/android/server/location/LocationUsageLogger;)V
+HPLcom/android/server/location/gnss/GnssManagerService;->addGnssDataListenerLocked(Landroid/os/IInterface;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;Ljava/util/function/Consumer;)Z
+PLcom/android/server/location/gnss/GnssManagerService;->addGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/location/gnss/GnssManagerService;->checkLocationAppOp(Ljava/lang/String;)Z
+PLcom/android/server/location/gnss/GnssManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/location/gnss/GnssManagerService;->getGnssCapabilities(Ljava/lang/String;)J
+HSPLcom/android/server/location/gnss/GnssManagerService;->getGnssLocationProvider()Lcom/android/server/location/GnssLocationProvider;
+HSPLcom/android/server/location/gnss/GnssManagerService;->getGpsGeofenceProxy()Landroid/location/IGpsGeofenceHardware;
+HPLcom/android/server/location/gnss/GnssManagerService;->hasGnssPermissions(Ljava/lang/String;)Z
+PLcom/android/server/location/gnss/GnssManagerService;->injectGnssMeasurementCorrections(Landroid/location/GnssMeasurementCorrections;Ljava/lang/String;)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->isGnssSupported()Z
+HPLcom/android/server/location/gnss/GnssManagerService;->isThrottlingExempt(Lcom/android/server/location/CallerIdentity;)Z
+HSPLcom/android/server/location/gnss/GnssManagerService;->lambda$de6v4jWKxQDC9J4FdGGrfKg2phA(Lcom/android/server/location/gnss/GnssManagerService;IZ)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->lambda$registerUidListener$1$GnssManagerService(II)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->lambda$registerUidListener$2$GnssManagerService(II)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->onAppForegroundChanged(IZ)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->onForegroundChanged(IZ)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->onSystemReady()V
+PLcom/android/server/location/gnss/GnssManagerService;->registerGnssStatusCallback(Landroid/location/IGnssStatusListener;Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/location/gnss/GnssManagerService;->registerUidListener()V
+HPLcom/android/server/location/gnss/GnssManagerService;->removeGnssDataListener(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;)V
+PLcom/android/server/location/gnss/GnssManagerService;->removeGnssDataListenerLocked(Landroid/os/IInterface;Lcom/android/server/location/RemoteListenerHelper;Landroid/util/ArrayMap;)V
+PLcom/android/server/location/gnss/GnssManagerService;->removeGnssMeasurementsListener(Landroid/location/IGnssMeasurementsListener;)V
+PLcom/android/server/location/gnss/GnssManagerService;->unregisterGnssStatusCallback(Landroid/location/IGnssStatusListener;)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->updateListenersOnForegroundChangedLocked(Landroid/util/ArrayMap;Lcom/android/server/location/RemoteListenerHelper;Ljava/util/function/Function;IZ)V
+HSPLcom/android/server/location/gnss/GnssManagerService;->updateListenersOnForegroundChangedLocked(Ljava/util/Map;Lcom/android/server/location/RemoteListenerHelper;Ljava/util/function/Function;IZ)V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$25VQEBWGuGqdc4Xjn9m8HXt9ZTI;-><init>(Lcom/android/server/locksettings/LockSettingsService;Ljava/util/ArrayList;I)V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$25VQEBWGuGqdc4Xjn9m8HXt9ZTI;->run()V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$6ZJNEvi0AXsP3F_UD8F01RaIg3M;-><init>(I)V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$6ZJNEvi0AXsP3F_UD8F01RaIg3M;->run()V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$uLUdo5pAFhnR0hn-L5FUgWTjl70;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/-$$Lambda$LockSettingsService$uLUdo5pAFhnR0hn-L5FUgWTjl70;->run()V
+HSPLcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$WjMV-qfQ1YUbeAiLzyAhyepqPFI;-><init>(Lcom/android/server/locksettings/SyntheticPasswordManager;)V
 HSPLcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$WjMV-qfQ1YUbeAiLzyAhyepqPFI;->onValues(ILandroid/hardware/weaver/V1_0/WeaverConfig;)V
+PLcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$aWnbfYziDTrRrLqWFePMTj6-dy0;-><init>([Lcom/android/internal/widget/VerifyCredentialResponse;I)V
 PLcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$aWnbfYziDTrRrLqWFePMTj6-dy0;->onValues(ILandroid/hardware/weaver/V1_0/WeaverReadResponse;)V
-HSPLcom/android/server/locksettings/LockSettingsService$1;->run()V
+PLcom/android/server/locksettings/LockSettingsService$1;-><init>(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService$1;->run()V
+HSPLcom/android/server/locksettings/LockSettingsService$2;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
 HSPLcom/android/server/locksettings/LockSettingsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/locksettings/LockSettingsService$3;->onFinished(ILandroid/os/Bundle;)V
+PLcom/android/server/locksettings/LockSettingsService$3;-><init>(Lcom/android/server/locksettings/LockSettingsService;Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/locksettings/LockSettingsService$3;->onFinished(ILandroid/os/Bundle;)V
 PLcom/android/server/locksettings/LockSettingsService$3;->onProgress(IILandroid/os/Bundle;)V
 PLcom/android/server/locksettings/LockSettingsService$3;->onStarted(ILandroid/os/Bundle;)V
+HSPLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+HSPLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->isProvisioned()Z
+PLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onChange(ZLandroid/net/Uri;I)V
 HSPLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->onSystemReady()V
 HSPLcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;->updateRegistration()V
+HSPLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+HSPLcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$1;)V
+HSPLcom/android/server/locksettings/LockSettingsService$Injector$1;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;Lcom/android/server/locksettings/LockSettingsStorage;)V
+HSPLcom/android/server/locksettings/LockSettingsService$Injector;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getActivityManager()Landroid/app/IActivityManager;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getContext()Landroid/content/Context;
 PLcom/android/server/locksettings/LockSettingsService$Injector;->getDevicePolicyManager()Landroid/app/admin/DevicePolicyManager;
-HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getHandler()Landroid/os/Handler;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getDeviceStateCache()Landroid/app/admin/DeviceStateCache;
+HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getHandler(Lcom/android/server/ServiceThread;)Landroid/os/Handler;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getKeyStore()Landroid/security/KeyStore;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getManagedProfilePasswordCache()Lcom/android/server/locksettings/ManagedProfilePasswordCache;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getNotificationManager()Landroid/app/NotificationManager;
+HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getRebootEscrowManager(Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/RebootEscrowManager;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getRecoverableKeyStoreManager(Landroid/security/KeyStore;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
+HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getServiceThread()Lcom/android/server/ServiceThread;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getStorage()Lcom/android/server/locksettings/LockSettingsStorage;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getStorageManager()Landroid/os/storage/IStorageManager;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuth()Lcom/android/server/locksettings/LockSettingsStrongAuth;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getStrongAuthTracker()Lcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getSyntheticPasswordManager(Lcom/android/server/locksettings/LockSettingsStorage;)Lcom/android/server/locksettings/SyntheticPasswordManager;
 HSPLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/locksettings/LockSettingsService$Injector;->hasBiometrics()Z
+PLcom/android/server/locksettings/LockSettingsService$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
+PLcom/android/server/locksettings/LockSettingsService$Injector;->hasEnrolledBiometrics(I)Z
 PLcom/android/server/locksettings/LockSettingsService$Injector;->isGsiRunning()Z
 HSPLcom/android/server/locksettings/LockSettingsService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onBootPhase(I)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStart()V
 HSPLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onStartUser(I)V
-HSPLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/locksettings/LockSettingsService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+HSPLcom/android/server/locksettings/LockSettingsService$LocalService;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$1;)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->addEscrowToken([BILcom/android/internal/widget/LockPatternUtils$EscrowTokenStateChangeCallback;)J
+HPLcom/android/server/locksettings/LockSettingsService$LocalService;->getUserPasswordMetrics(I)Landroid/app/admin/PasswordMetrics;
 PLcom/android/server/locksettings/LockSettingsService$LocalService;->isEscrowTokenActive(JI)Z
-HSPLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->getStrongAuthForUser(I)I
-HSPLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->handleStrongAuthRequiredChanged(II)V
+PLcom/android/server/locksettings/LockSettingsService$LocalService;->prepareRebootEscrow()V
+HSPLcom/android/server/locksettings/LockSettingsService$LocalService;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
+PLcom/android/server/locksettings/LockSettingsService$PendingResetLockout;-><init>(Lcom/android/server/locksettings/LockSettingsService;I[B)V
+HSPLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;)V
+HSPLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;-><init>(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/LockSettingsService$1;)V
+HSPLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;->isUserSecure(I)Z
+PLcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;->onRebootEscrowRestored(B[BI)V
+HSPLcom/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
 HSPLcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;->register(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V
+HSPLcom/android/server/locksettings/LockSettingsService;-><clinit>()V
+HSPLcom/android/server/locksettings/LockSettingsService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/locksettings/LockSettingsService;-><init>(Lcom/android/server/locksettings/LockSettingsService$Injector;)V
-PLcom/android/server/locksettings/LockSettingsService;->activateEscrowTokens(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)V
-HSPLcom/android/server/locksettings/LockSettingsService;->checkCredential([BIILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
+HSPLcom/android/server/locksettings/LockSettingsService;->access$000(Lcom/android/server/locksettings/LockSettingsService;)V
+HSPLcom/android/server/locksettings/LockSettingsService;->access$1000(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context;
+HSPLcom/android/server/locksettings/LockSettingsService;->access$1100(Lcom/android/server/locksettings/LockSettingsService;)Landroid/content/Context;
+PLcom/android/server/locksettings/LockSettingsService;->access$1200(Lcom/android/server/locksettings/LockSettingsService;[BILcom/android/internal/widget/LockPatternUtils$EscrowTokenStateChangeCallback;)J
+PLcom/android/server/locksettings/LockSettingsService;->access$1400(Lcom/android/server/locksettings/LockSettingsService;JI)Z
+PLcom/android/server/locksettings/LockSettingsService;->access$1700(Lcom/android/server/locksettings/LockSettingsService;I)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->access$1800(Lcom/android/server/locksettings/LockSettingsService;)Lcom/android/server/locksettings/RebootEscrowManager;
+PLcom/android/server/locksettings/LockSettingsService;->access$1900(Lcom/android/server/locksettings/LockSettingsService;)Lcom/android/server/locksettings/LockSettingsStrongAuth;
+PLcom/android/server/locksettings/LockSettingsService;->access$200(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->access$2000(Lcom/android/server/locksettings/LockSettingsService;Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;IJLjava/util/ArrayList;I)V
+PLcom/android/server/locksettings/LockSettingsService;->access$300(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->access$400(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->access$400(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->access$500(Lcom/android/server/locksettings/LockSettingsService;)Landroid/os/UserManager;
+PLcom/android/server/locksettings/LockSettingsService;->access$500(Lcom/android/server/locksettings/LockSettingsService;Landroid/os/UserHandle;)V
+PLcom/android/server/locksettings/LockSettingsService;->access$600(Lcom/android/server/locksettings/LockSettingsService;)Landroid/os/UserManager;
+PLcom/android/server/locksettings/LockSettingsService;->access$600(Lcom/android/server/locksettings/LockSettingsService;I)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->access$700(Lcom/android/server/locksettings/LockSettingsService;I)Z
+PLcom/android/server/locksettings/LockSettingsService;->access$800(Lcom/android/server/locksettings/LockSettingsService;I)V
+PLcom/android/server/locksettings/LockSettingsService;->access$900(Lcom/android/server/locksettings/LockSettingsService;IZ)V
+HPLcom/android/server/locksettings/LockSettingsService;->activateEscrowTokens(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)V
+PLcom/android/server/locksettings/LockSettingsService;->addEscrowToken([BILcom/android/internal/widget/LockPatternUtils$EscrowTokenStateChangeCallback;)J
+PLcom/android/server/locksettings/LockSettingsService;->addUserKeyAuth(I[B[B)V
+HPLcom/android/server/locksettings/LockSettingsService;->callToAuthSecretIfNeeded(ILcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;)V
+PLcom/android/server/locksettings/LockSettingsService;->checkCredential(Lcom/android/internal/widget/LockscreenCredential;ILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
 HSPLcom/android/server/locksettings/LockSettingsService;->checkPasswordHavePermission(I)V
+HSPLcom/android/server/locksettings/LockSettingsService;->checkPasswordReadPermission(I)V
 HSPLcom/android/server/locksettings/LockSettingsService;->checkReadPermission(Ljava/lang/String;I)V
-HSPLcom/android/server/locksettings/LockSettingsService;->checkVoldPassword(I)Z
-PLcom/android/server/locksettings/LockSettingsService;->disableEscrowTokenOnNonManagedDevicesIfNeeded(I)V
-HSPLcom/android/server/locksettings/LockSettingsService;->doVerifyCredential([BIZJILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
+HPLcom/android/server/locksettings/LockSettingsService;->checkVoldPassword(I)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->checkWritePermission(I)V
+PLcom/android/server/locksettings/LockSettingsService;->cleanupDataForReusedUserIdIfNecessary(I)V
+PLcom/android/server/locksettings/LockSettingsService;->clearUserKeyProtection(I)V
+PLcom/android/server/locksettings/LockSettingsService;->clearUserKeyProtection(I[B)V
+HPLcom/android/server/locksettings/LockSettingsService;->disableEscrowTokenOnNonManagedDevicesIfNeeded(I)V
+PLcom/android/server/locksettings/LockSettingsService;->doVerifyCredential(Lcom/android/internal/widget/LockscreenCredential;IJILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/LockSettingsService;->doVerifyCredential(Lcom/android/internal/widget/LockscreenCredential;IJILcom/android/internal/widget/ICheckCredentialProgressCallback;Ljava/util/ArrayList;)Lcom/android/internal/widget/VerifyCredentialResponse;
 PLcom/android/server/locksettings/LockSettingsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/locksettings/LockSettingsService;->ensureProfileKeystoreUnlocked(I)V
+PLcom/android/server/locksettings/LockSettingsService;->ensureProfileKeystoreUnlocked(I)V
+PLcom/android/server/locksettings/LockSettingsService;->fixateNewestUserKeyAuth(I)V
+PLcom/android/server/locksettings/LockSettingsService;->gateKeeperClearSecureUserId(I)V
 PLcom/android/server/locksettings/LockSettingsService;->generateKey(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsService;->generateRandomProfilePassword()Lcom/android/internal/widget/LockscreenCredential;
+HSPLcom/android/server/locksettings/LockSettingsService;->getAuthSecretHal()V
 HSPLcom/android/server/locksettings/LockSettingsService;->getBoolean(Ljava/lang/String;ZI)Z
-PLcom/android/server/locksettings/LockSettingsService;->getDecryptedPasswordForTiedProfile(I)[B
+HSPLcom/android/server/locksettings/LockSettingsService;->getBooleanUnchecked(Ljava/lang/String;ZI)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->getCredentialType(I)I
+HSPLcom/android/server/locksettings/LockSettingsService;->getCredentialTypeInternal(I)I
+HPLcom/android/server/locksettings/LockSettingsService;->getDecryptedPasswordForTiedProfile(I)Lcom/android/internal/widget/LockscreenCredential;
 HSPLcom/android/server/locksettings/LockSettingsService;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
-PLcom/android/server/locksettings/LockSettingsService;->getKey(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsService;->getHashFactor(Lcom/android/internal/widget/LockscreenCredential;I)[B
+PLcom/android/server/locksettings/LockSettingsService;->getIntUnchecked(Ljava/lang/String;II)I
+HPLcom/android/server/locksettings/LockSettingsService;->getKey(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/locksettings/LockSettingsService;->getKeyChainSnapshot()Landroid/security/keystore/recovery/KeyChainSnapshot;
+HSPLcom/android/server/locksettings/LockSettingsService;->getKeyguardStoredQuality(I)I
 HSPLcom/android/server/locksettings/LockSettingsService;->getLong(Ljava/lang/String;JI)J
+HSPLcom/android/server/locksettings/LockSettingsService;->getLongUnchecked(Ljava/lang/String;JI)J
+HPLcom/android/server/locksettings/LockSettingsService;->getProfilesWithSameLockScreen(I)Ljava/util/Set;
 PLcom/android/server/locksettings/LockSettingsService;->getRecoverySecretTypes()[I
-PLcom/android/server/locksettings/LockSettingsService;->getRecoveryStatus()Ljava/util/Map;
+HPLcom/android/server/locksettings/LockSettingsService;->getRecoveryStatus()Ljava/util/Map;
 HSPLcom/android/server/locksettings/LockSettingsService;->getSeparateProfileChallengeEnabled(I)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->getSeparateProfileChallengeEnabledInternal(I)Z
 HSPLcom/android/server/locksettings/LockSettingsService;->getString(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsService;->getStringUnchecked(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
 PLcom/android/server/locksettings/LockSettingsService;->getStrongAuthForUser(I)I
-HSPLcom/android/server/locksettings/LockSettingsService;->havePassword(I)Z
-HSPLcom/android/server/locksettings/LockSettingsService;->havePattern(I)Z
+HSPLcom/android/server/locksettings/LockSettingsService;->getSyntheticPasswordHandleLocked(I)J
+HPLcom/android/server/locksettings/LockSettingsService;->getUserPasswordMetrics(I)Landroid/app/admin/PasswordMetrics;
+PLcom/android/server/locksettings/LockSettingsService;->hasPendingEscrowToken(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->hasSecureLockScreen()Z
+PLcom/android/server/locksettings/LockSettingsService;->hasUnifiedChallenge(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->hideEncryptionNotification(Landroid/os/UserHandle;)V
 PLcom/android/server/locksettings/LockSettingsService;->initRecoveryServiceWithSigFile(Ljava/lang/String;[B[B)V
+PLcom/android/server/locksettings/LockSettingsService;->initializeSyntheticPasswordLocked([BLcom/android/internal/widget/LockscreenCredential;I)Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;
 PLcom/android/server/locksettings/LockSettingsService;->isEscrowTokenActive(JI)Z
+HPLcom/android/server/locksettings/LockSettingsService;->isManagedProfileWithSeparatedLock(I)Z
+HPLcom/android/server/locksettings/LockSettingsService;->isManagedProfileWithUnifiedLock(I)Z
 HSPLcom/android/server/locksettings/LockSettingsService;->isSyntheticPasswordBasedCredentialLocked(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->isUserKeyUnlocked(I)Z
 HSPLcom/android/server/locksettings/LockSettingsService;->isUserSecure(I)Z
-PLcom/android/server/locksettings/LockSettingsService;->lambda$notifyActivePasswordMetricsAvailable$0$LockSettingsService(Landroid/app/admin/PasswordMetrics;I)V
-PLcom/android/server/locksettings/LockSettingsService;->lambda$tryRemoveUserFromSpCacheLater$2$LockSettingsService(I)V
+PLcom/android/server/locksettings/LockSettingsService;->lambda$notifyPasswordChanged$2$LockSettingsService(I)V
+PLcom/android/server/locksettings/LockSettingsService;->lambda$notifySeparateProfileChallengeChanged$0(I)V
+HPLcom/android/server/locksettings/LockSettingsService;->lambda$unlockUser$1$LockSettingsService(Ljava/util/ArrayList;I)V
 HSPLcom/android/server/locksettings/LockSettingsService;->maybeShowEncryptionNotificationForUser(I)V
 HSPLcom/android/server/locksettings/LockSettingsService;->migrateOldData()V
 HSPLcom/android/server/locksettings/LockSettingsService;->migrateOldDataAfterSystemReady()V
+PLcom/android/server/locksettings/LockSettingsService;->notifyPasswordChanged(I)V
+PLcom/android/server/locksettings/LockSettingsService;->notifySeparateProfileChallengeChanged(I)V
 PLcom/android/server/locksettings/LockSettingsService;->onAuthTokenKnownForUser(ILcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;)V
+PLcom/android/server/locksettings/LockSettingsService;->onCleanupUser(I)V
+HPLcom/android/server/locksettings/LockSettingsService;->onCredentialVerified(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;IJLjava/util/ArrayList;I)V
 HSPLcom/android/server/locksettings/LockSettingsService;->onStartUser(I)V
-HSPLcom/android/server/locksettings/LockSettingsService;->onUnlockUser(I)V
+PLcom/android/server/locksettings/LockSettingsService;->onUnlockUser(I)V
+HSPLcom/android/server/locksettings/LockSettingsService;->pinOrPasswordQualityToCredentialType(I)I
 HSPLcom/android/server/locksettings/LockSettingsService;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsService;->removeKey(Ljava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->removeKeystoreProfileKey(I)V
+PLcom/android/server/locksettings/LockSettingsService;->removeUser(IZ)V
 PLcom/android/server/locksettings/LockSettingsService;->requireStrongAuth(II)V
+PLcom/android/server/locksettings/LockSettingsService;->sendCredentialsOnChangeIfRequired(Lcom/android/internal/widget/LockscreenCredential;IZ)V
+HPLcom/android/server/locksettings/LockSettingsService;->sendCredentialsOnUnlockIfRequired(Lcom/android/internal/widget/LockscreenCredential;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setAuthlessUserKeyProtection(I[B)V
 PLcom/android/server/locksettings/LockSettingsService;->setBoolean(Ljava/lang/String;ZI)V
+PLcom/android/server/locksettings/LockSettingsService;->setDeviceUnlockedForUser(I)V
+PLcom/android/server/locksettings/LockSettingsService;->setIntUnchecked(Ljava/lang/String;II)V
+PLcom/android/server/locksettings/LockSettingsService;->setKeystorePassword([BI)V
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredential(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/internal/widget/LockscreenCredential;I)Z
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialInternal(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/internal/widget/LockscreenCredential;IZ)Z
+PLcom/android/server/locksettings/LockSettingsService;->setLockCredentialWithAuthTokenLocked(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)J
+PLcom/android/server/locksettings/LockSettingsService;->setLong(Ljava/lang/String;JI)V
+PLcom/android/server/locksettings/LockSettingsService;->setLongUnchecked(Ljava/lang/String;JI)V
 PLcom/android/server/locksettings/LockSettingsService;->setRecoverySecretTypes([I)V
 PLcom/android/server/locksettings/LockSettingsService;->setRecoveryStatus(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabled(IZLcom/android/internal/widget/LockscreenCredential;)V
+PLcom/android/server/locksettings/LockSettingsService;->setSeparateProfileChallengeEnabledLocked(IZLcom/android/internal/widget/LockscreenCredential;)V
 PLcom/android/server/locksettings/LockSettingsService;->setServerParams([B)V
 PLcom/android/server/locksettings/LockSettingsService;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V
-HSPLcom/android/server/locksettings/LockSettingsService;->setString(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/locksettings/LockSettingsService;->shouldCacheSpForUser(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->setString(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsService;->setStringUnchecked(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsService;->setSyntheticPasswordHandleLocked(JI)V
+PLcom/android/server/locksettings/LockSettingsService;->setUserPasswordMetrics(Lcom/android/internal/widget/LockscreenCredential;I)V
+PLcom/android/server/locksettings/LockSettingsService;->shouldMigrateToSyntheticPasswordLocked(I)Z
 PLcom/android/server/locksettings/LockSettingsService;->showEncryptionNotification(Landroid/os/UserHandle;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Ljava/lang/CharSequence;Landroid/app/PendingIntent;)V
 PLcom/android/server/locksettings/LockSettingsService;->showEncryptionNotificationForProfile(Landroid/os/UserHandle;)V
-PLcom/android/server/locksettings/LockSettingsService;->spBasedDoVerifyCredential([BIZJILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/internal/widget/VerifyCredentialResponse;
+HPLcom/android/server/locksettings/LockSettingsService;->spBasedDoVerifyCredential(Lcom/android/internal/widget/LockscreenCredential;IJILcom/android/internal/widget/ICheckCredentialProgressCallback;Ljava/util/ArrayList;)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/LockSettingsService;->spBasedSetLockCredentialInternalLocked(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/internal/widget/LockscreenCredential;IZ)Z
+PLcom/android/server/locksettings/LockSettingsService;->synchronizeUnifiedWorkChallengeForProfiles(ILjava/util/Map;)V
 HSPLcom/android/server/locksettings/LockSettingsService;->systemReady()V
-PLcom/android/server/locksettings/LockSettingsService;->tieManagedProfileLockIfNecessary(I[B)V
-PLcom/android/server/locksettings/LockSettingsService;->tiedManagedProfileReadyToUnlock(Landroid/content/pm/UserInfo;)Z
-HSPLcom/android/server/locksettings/LockSettingsService;->tryDeriveAuthTokenForUnsecuredPrimaryUser(I)V
-PLcom/android/server/locksettings/LockSettingsService;->unlockChildProfile(IZ)V
-PLcom/android/server/locksettings/LockSettingsService;->unlockUser(I[B[B)V
-HSPLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V
+PLcom/android/server/locksettings/LockSettingsService;->tieManagedProfileLockIfNecessary(ILcom/android/internal/widget/LockscreenCredential;)V
+PLcom/android/server/locksettings/LockSettingsService;->tieProfileLockToParent(ILcom/android/internal/widget/LockscreenCredential;)V
+HPLcom/android/server/locksettings/LockSettingsService;->tiedManagedProfileReadyToUnlock(Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/locksettings/LockSettingsService;->timestampToString(J)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsService;->tryDeriveAuthTokenForUnsecuredPrimaryUser(I)V
+PLcom/android/server/locksettings/LockSettingsService;->tryUnlockWithCachedUnifiedChallenge(I)Z
+PLcom/android/server/locksettings/LockSettingsService;->unlockChildProfile(IZIJLjava/util/ArrayList;)V
+PLcom/android/server/locksettings/LockSettingsService;->unlockKeystore([BI)V
+HPLcom/android/server/locksettings/LockSettingsService;->unlockUser(I[B[BIJLjava/util/ArrayList;)V
+HPLcom/android/server/locksettings/LockSettingsService;->userPresent(I)V
+PLcom/android/server/locksettings/LockSettingsService;->verifyCredential(Lcom/android/internal/widget/LockscreenCredential;JI)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/LockSettingsService;->verifyTiedProfileChallenge(Lcom/android/internal/widget/LockscreenCredential;JI)Lcom/android/internal/widget/VerifyCredentialResponse;
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>()V
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$1;)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->hashCode()I
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;->set(ILjava/lang/String;I)Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>()V
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;-><init>(Lcom/android/server/locksettings/LockSettingsStorage$1;)V
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->access$100(Lcom/android/server/locksettings/LockSettingsStorage$Cache;)I
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->contains(ILjava/lang/String;I)Z
+HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->copyOf([B)[B
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->getVersion()I
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasFile(Ljava/lang/String;)Z
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->hasKeyValue(Ljava/lang/String;I)Z
@@ -8328,27 +18421,41 @@
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peek(ILjava/lang/String;I)Ljava/lang/Object;
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekFile(Ljava/lang/String;)[B
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->peekKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->purgePath(Ljava/lang/String;)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->put(ILjava/lang/String;Ljava/lang/Object;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFile(Ljava/lang/String;[B)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putFileIfUnchanged(Ljava/lang/String;[BI)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putIfUnchanged(ILjava/lang/String;Ljava/lang/Object;II)V
-HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->putKeyValueIfUnchanged(Ljava/lang/String;Ljava/lang/Object;II)V
+PLcom/android/server/locksettings/LockSettingsStorage$Cache;->removeUser(I)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$Cache;->setFetched(I)V
-HSPLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;-><init>([BIIZ)V
+HSPLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;-><init>([BI)V
+HSPLcom/android/server/locksettings/LockSettingsStorage$CredentialHash;->createEmptyHash()Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
+HSPLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;->setCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
-PLcom/android/server/locksettings/LockSettingsStorage;->deleteSyntheticPasswordState(IJLjava/lang/String;)V
-HSPLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/lang/String;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPasswordFilename(I)Ljava/lang/String;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->getLegacyLockPatternFilename(I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;-><clinit>()V
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;-><init>(III[B)V
+PLcom/android/server/locksettings/LockSettingsStorage$PersistentData;->toBytes(III[B)[B
+HSPLcom/android/server/locksettings/LockSettingsStorage;-><clinit>()V
+HSPLcom/android/server/locksettings/LockSettingsStorage;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/locksettings/LockSettingsStorage;->access$400()Ljava/lang/Object;
+PLcom/android/server/locksettings/LockSettingsStorage;->deleteFile(Ljava/lang/String;)V
+HPLcom/android/server/locksettings/LockSettingsStorage;->deleteSyntheticPasswordState(IJLjava/lang/String;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->ensureSyntheticPasswordDirectoryForUser(I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->fsyncDirectory(Ljava/io/File;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->getChildProfileLockFile(I)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->getLockCredentialFilePathForUser(ILjava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->getLockPasswordFilename(I)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->getLockPatternFilename(I)Ljava/lang/String;
+PLcom/android/server/locksettings/LockSettingsStorage;->getPersistentDataBlockManager()Lcom/android/server/PersistentDataBlockManagerInternal;
+HSPLcom/android/server/locksettings/LockSettingsStorage;->getRebootEscrowFile(I)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->getSynthenticPasswordStateFilePathForUser(IJLjava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->getSyntheticPasswordDirectoryForUser(I)Ljava/io/File;
-HSPLcom/android/server/locksettings/LockSettingsStorage;->hasChildProfileLock(I)Z
-HSPLcom/android/server/locksettings/LockSettingsStorage;->hasCredential(I)Z
-HSPLcom/android/server/locksettings/LockSettingsStorage;->hasPassword(I)Z
-HSPLcom/android/server/locksettings/LockSettingsStorage;->hasPattern(I)Z
+PLcom/android/server/locksettings/LockSettingsStorage;->hasChildProfileLock(I)Z
+HSPLcom/android/server/locksettings/LockSettingsStorage;->hasFile(Ljava/lang/String;)Z
+HSPLcom/android/server/locksettings/LockSettingsStorage;->hasRebootEscrow(I)Z
 HSPLcom/android/server/locksettings/LockSettingsStorage;->listSyntheticPasswordHandlesForAllUsers(Ljava/lang/String;)Ljava/util/Map;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->listSyntheticPasswordHandlesForUser(Ljava/lang/String;I)Ljava/util/List;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->prefetchUser(I)V
@@ -8358,79 +18465,225 @@
 HSPLcom/android/server/locksettings/LockSettingsStorage;->readKeyValue(Ljava/lang/String;Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->readPasswordHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
 HSPLcom/android/server/locksettings/LockSettingsStorage;->readPatternHashIfExists(I)Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
+PLcom/android/server/locksettings/LockSettingsStorage;->readRebootEscrow(I)[B
 HSPLcom/android/server/locksettings/LockSettingsStorage;->readSyntheticPasswordState(IJLjava/lang/String;)[B
-HSPLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->removeChildProfileLock(I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->removeRebootEscrow(I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->removeUser(I)V
+HSPLcom/android/server/locksettings/LockSettingsStorage;->setDatabaseOnCreateCallback(Lcom/android/server/locksettings/LockSettingsStorage$Callback;)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeChildProfileLock(I[B)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeFile(Ljava/lang/String;[B)V
+HPLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeKeyValue(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writePersistentDataBlock(III[B)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeRebootEscrow(I[B)V
+PLcom/android/server/locksettings/LockSettingsStorage;->writeSyntheticPasswordState(IJLjava/lang/String;[B)V
+HSPLcom/android/server/locksettings/LockSettingsStrongAuth$1;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;)V
 HSPLcom/android/server/locksettings/LockSettingsStrongAuth$1;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth$StrongAuthTimeoutAlarmListener;-><init>(Lcom/android/server/locksettings/LockSettingsStrongAuth;I)V
 PLcom/android/server/locksettings/LockSettingsStrongAuth$StrongAuthTimeoutAlarmListener;->onAlarm()V
 HSPLcom/android/server/locksettings/LockSettingsStrongAuth;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->access$000(Lcom/android/server/locksettings/LockSettingsStrongAuth;Landroid/app/trust/IStrongAuthTracker;)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->access$200(Lcom/android/server/locksettings/LockSettingsStrongAuth;II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->access$300(Lcom/android/server/locksettings/LockSettingsStrongAuth;I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->access$400(Lcom/android/server/locksettings/LockSettingsStrongAuth;I)V
 HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->handleAddStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleScheduleStrongAuthTimeout(I)V
-HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrackers(II)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRemoveUser(I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuth(II)V
+HPLcom/android/server/locksettings/LockSettingsStrongAuth;->handleRequireStrongAuthOneUser(II)V
+HPLcom/android/server/locksettings/LockSettingsStrongAuth;->handleScheduleStrongAuthTimeout(I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->notifyStrongAuthTrackers(II)V
 HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->registerStrongAuthTracker(Landroid/app/trust/IStrongAuthTracker;)V
-PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportSuccessfulStrongAuthUnlock(I)V
-HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V
-HSPLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V
-HSPLcom/android/server/locksettings/PasswordSlotManager;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/locksettings/PasswordSlotManager;->getGsiImageNumber()I
-HSPLcom/android/server/locksettings/PasswordSlotManager;->getSlotMapDir()Ljava/lang/String;
-HSPLcom/android/server/locksettings/PasswordSlotManager;->loadSlotMap()Ljava/util/Map;
-HSPLcom/android/server/locksettings/PasswordSlotManager;->loadSlotMap(Ljava/io/InputStream;)Ljava/util/Map;
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->removeUser(I)V
+HPLcom/android/server/locksettings/LockSettingsStrongAuth;->reportSuccessfulStrongAuthUnlock(I)V
+PLcom/android/server/locksettings/LockSettingsStrongAuth;->reportUnlock(I)V
+HPLcom/android/server/locksettings/LockSettingsStrongAuth;->requireStrongAuth(II)V
+HSPLcom/android/server/locksettings/ManagedProfilePasswordCache;-><clinit>()V
+HSPLcom/android/server/locksettings/ManagedProfilePasswordCache;-><init>(Ljava/security/KeyStore;Landroid/os/UserManager;)V
+PLcom/android/server/locksettings/ManagedProfilePasswordCache;->getEncryptionKeyName(I)Ljava/lang/String;
+PLcom/android/server/locksettings/ManagedProfilePasswordCache;->retrievePassword(I)Lcom/android/internal/widget/LockscreenCredential;
+PLcom/android/server/locksettings/ManagedProfilePasswordCache;->storePassword(ILcom/android/internal/widget/LockscreenCredential;)V
+HSPLcom/android/server/locksettings/PasswordSlotManager;-><init>()V
+PLcom/android/server/locksettings/PasswordSlotManager;->ensureSlotMapLoaded()V
+PLcom/android/server/locksettings/PasswordSlotManager;->getGsiImageNumber()I
+PLcom/android/server/locksettings/PasswordSlotManager;->getMode()Ljava/lang/String;
+PLcom/android/server/locksettings/PasswordSlotManager;->getSlotMapDir()Ljava/lang/String;
+PLcom/android/server/locksettings/PasswordSlotManager;->getSlotMapFile()Ljava/io/File;
+PLcom/android/server/locksettings/PasswordSlotManager;->getUsedSlots()Ljava/util/Set;
+PLcom/android/server/locksettings/PasswordSlotManager;->loadSlotMap()Ljava/util/Map;
+PLcom/android/server/locksettings/PasswordSlotManager;->loadSlotMap(Ljava/io/InputStream;)Ljava/util/Map;
+PLcom/android/server/locksettings/PasswordSlotManager;->markSlotDeleted(I)V
+PLcom/android/server/locksettings/PasswordSlotManager;->markSlotInUse(I)V
 HSPLcom/android/server/locksettings/PasswordSlotManager;->refreshActiveSlots(Ljava/util/Set;)V
-HSPLcom/android/server/locksettings/PasswordSlotManager;->saveSlotMap()V
-HSPLcom/android/server/locksettings/PasswordSlotManager;->saveSlotMap(Ljava/io/OutputStream;)V
-PLcom/android/server/locksettings/SP800Derive;->getMac()Ljavax/crypto/Mac;
-PLcom/android/server/locksettings/SP800Derive;->withContext([B[B)[B
-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/PasswordSlotManager;->saveSlotMap()V
+PLcom/android/server/locksettings/PasswordSlotManager;->saveSlotMap(Ljava/io/OutputStream;)V
+PLcom/android/server/locksettings/RebootEscrowData;-><init>(B[B[B[B[B)V
+PLcom/android/server/locksettings/RebootEscrowData;->fromEncryptedData(Ljavax/crypto/spec/SecretKeySpec;[B)Lcom/android/server/locksettings/RebootEscrowData;
+HSPLcom/android/server/locksettings/RebootEscrowData;->fromKeyBytes([B)Ljavax/crypto/spec/SecretKeySpec;
+PLcom/android/server/locksettings/RebootEscrowData;->fromSyntheticPassword(B[B)Lcom/android/server/locksettings/RebootEscrowData;
+PLcom/android/server/locksettings/RebootEscrowData;->getBlob()[B
+PLcom/android/server/locksettings/RebootEscrowData;->getSpVersion()B
+PLcom/android/server/locksettings/RebootEscrowData;->getSyntheticPassword()[B
+HSPLcom/android/server/locksettings/RebootEscrowManager$Injector;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/locksettings/RebootEscrowManager$Injector;->getRebootEscrow()Landroid/hardware/rebootescrow/IRebootEscrow;
+HSPLcom/android/server/locksettings/RebootEscrowManager$Injector;->getUserManager()Landroid/os/UserManager;
+HSPLcom/android/server/locksettings/RebootEscrowManager;-><init>(Landroid/content/Context;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;)V
+HSPLcom/android/server/locksettings/RebootEscrowManager;-><init>(Lcom/android/server/locksettings/RebootEscrowManager$Injector;Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;Lcom/android/server/locksettings/LockSettingsStorage;)V
+PLcom/android/server/locksettings/RebootEscrowManager;->callToRebootEscrowIfNeeded(IB[B)V
+PLcom/android/server/locksettings/RebootEscrowManager;->clearRebootEscrowIfNeeded()V
+PLcom/android/server/locksettings/RebootEscrowManager;->getAndClearRebootEscrowKey()Ljavax/crypto/spec/SecretKeySpec;
+HSPLcom/android/server/locksettings/RebootEscrowManager;->loadRebootEscrowDataIfAvailable()V
+PLcom/android/server/locksettings/RebootEscrowManager;->prepareRebootEscrow()Z
+HSPLcom/android/server/locksettings/RebootEscrowManager;->restoreRebootEscrowForUser(ILjavax/crypto/spec/SecretKeySpec;)V
+PLcom/android/server/locksettings/RebootEscrowManager;->restoreRebootEscrowForUser(ILjavax/crypto/spec/SecretKeySpec;)Z
+HSPLcom/android/server/locksettings/RebootEscrowManager;->setRebootEscrowListener(Lcom/android/internal/widget/RebootEscrowListener;)V
+PLcom/android/server/locksettings/RebootEscrowManager;->setRebootEscrowReady(Z)V
+HPLcom/android/server/locksettings/SP800Derive;-><init>([B)V
+HPLcom/android/server/locksettings/SP800Derive;->getMac()Ljavax/crypto/Mac;
+HPLcom/android/server/locksettings/SP800Derive;->update32(Ljavax/crypto/Mac;I)V
+HPLcom/android/server/locksettings/SP800Derive;->withContext([B[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;-><clinit>()V
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->createBlob(Ljava/lang/String;[B[BJ)[B
+HPLcom/android/server/locksettings/SyntheticPasswordCrypto;->decrypt(Ljavax/crypto/SecretKey;[B)[B
+HPLcom/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;->personalisedHash([B[[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->destroyBlobKey(Ljava/lang/String;)V
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->encrypt(Ljavax/crypto/SecretKey;[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordCrypto;->encrypt([B[B[B)[B
+HPLcom/android/server/locksettings/SyntheticPasswordCrypto;->personalisedHash([B[[B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;-><init>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;-><init>(B)V
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->access$1000(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->access$1100(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;)B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->access$900(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->create()Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;
 PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->deriveDiskEncryptionKey()[B
 PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->deriveGkPassword()[B
 PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->deriveKeyStorePassword()[B
-PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->derivePassword([B)[B
+HPLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->derivePassword([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->derivePasswordHashFactor()[B
 PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->deriveVendorAuthSecret()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->getEscrowSecret()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->getSyntheticPassword()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->getVersion()B
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->recreate([B[B)V
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->recreateDirectly([B)V
+PLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;->setEscrowData([B[B)V
+HSPLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;-><init>()V
+PLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;->create(I)Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;
 HSPLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;->fromBytes([B)Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;
-PLcom/android/server/locksettings/SyntheticPasswordManager;->bytesToHex([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;->toBytes()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager$TokenData;-><init>()V
+HSPLcom/android/server/locksettings/SyntheticPasswordManager;-><clinit>()V
+HSPLcom/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;->access$000()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$100()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$200([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$300()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$400()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$500()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$600()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$700()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->access$800()[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->activateTokenBasedSyntheticPassword(JLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)Z
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->bytesToHex([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->clearSidForUser(I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->computePasswordToken(Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createPasswordBasedSyntheticPassword(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/internal/widget/LockscreenCredential;Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)J
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createSPBlob(Ljava/lang/String;[B[BJ)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createSyntheticPasswordBlob(JBLcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;[BJI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->createTokenBasedSyntheticPassword([BILcom/android/internal/widget/LockPatternUtils$EscrowTokenStateChangeCallback;)J
 PLcom/android/server/locksettings/SyntheticPasswordManager;->decryptSPBlob(Ljava/lang/String;[B[B)[B
 PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyEscrowData(I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyPasswordBasedSyntheticPassword(JI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroySPBlobKey(Ljava/lang/String;)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyState(Ljava/lang/String;JI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroySyntheticPassword(JI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->destroyWeaverSlot(JI)V
 PLcom/android/server/locksettings/SyntheticPasswordManager;->existsHandle(JI)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->fakeUid(I)I
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->fromByteArrayList(Ljava/util/ArrayList;)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->generateHandle()J
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->getCredentialType(JI)I
-PLcom/android/server/locksettings/SyntheticPasswordManager;->getPendingTokensForUser(I)Ljava/util/Set;
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->getHandleName(J)Ljava/lang/String;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->getNextAvailableWeaverSlot()I
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->getPendingTokensForUser(I)Ljava/util/Set;
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->getUsedWeaverSlots()Ljava/util/Set;
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->getWeaverService()Landroid/hardware/weaver/V1_0/IWeaver;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->hasEscrowData(I)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->hasSidForUser(I)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->hasState(Ljava/lang/String;JI)Z
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->initWeaverService()V
 PLcom/android/server/locksettings/SyntheticPasswordManager;->isWeaverAvailable()Z
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->lambda$initWeaverService$0$SyntheticPasswordManager(ILandroid/hardware/weaver/V1_0/WeaverConfig;)V
 PLcom/android/server/locksettings/SyntheticPasswordManager;->lambda$weaverVerify$1([Lcom/android/internal/widget/VerifyCredentialResponse;IILandroid/hardware/weaver/V1_0/WeaverReadResponse;)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadEscrowData(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)Z
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSecdiscardable(JI)[B
+HSPLcom/android/server/locksettings/SyntheticPasswordManager;->loadState(Ljava/lang/String;JI)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->loadSyntheticPasswordHandle(I)[B
 HSPLcom/android/server/locksettings/SyntheticPasswordManager;->loadWeaverSlot(JI)I
+PLcom/android/server/locksettings/SyntheticPasswordManager;->newSidForUser(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->newSyntheticPasswordAndSid(Landroid/service/gatekeeper/IGateKeeperService;[BLcom/android/internal/widget/LockscreenCredential;I)Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->passwordTokenToGkInput([B)[B
 PLcom/android/server/locksettings/SyntheticPasswordManager;->passwordTokenToWeaverKey([B)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->removeUser(I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveEscrowData(Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;I)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveSecdiscardable(J[BI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveState(Ljava/lang/String;[BJI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveSyntheticPasswordHandle([BI)V
+PLcom/android/server/locksettings/SyntheticPasswordManager;->saveWeaverSlot(IJI)V
 PLcom/android/server/locksettings/SyntheticPasswordManager;->scrypt([B[BIIII)[B
-PLcom/android/server/locksettings/SyntheticPasswordManager;->unwrapPasswordBasedSyntheticPassword(Landroid/service/gatekeeper/IGateKeeperService;J[BILcom/android/internal/widget/ICheckCredentialProgressCallback;)Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->secureRandom(I)[B
+PLcom/android/server/locksettings/SyntheticPasswordManager;->sidFromPasswordHandle([B)J
+PLcom/android/server/locksettings/SyntheticPasswordManager;->synchronizeWeaverFrpPassword(Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;III)V
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->toByteArrayList([B)Ljava/util/ArrayList;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->transformUnderSecdiscardable([B[B)[B
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->transformUnderWeaverSecret([B[B)[B
+HPLcom/android/server/locksettings/SyntheticPasswordManager;->unwrapPasswordBasedSyntheticPassword(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$AuthenticationToken;
 PLcom/android/server/locksettings/SyntheticPasswordManager;->verifyChallenge(Landroid/service/gatekeeper/IGateKeeperService;Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;JI)Lcom/android/internal/widget/VerifyCredentialResponse;
+PLcom/android/server/locksettings/SyntheticPasswordManager;->weaverEnroll(I[B[B)[B
 PLcom/android/server/locksettings/SyntheticPasswordManager;->weaverVerify(I[B)Lcom/android/internal/widget/VerifyCredentialResponse;
+HSPLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;-><init>(Ljava/security/KeyStore;)V
 PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->containsAlias(Ljava/lang/String;)Z
+PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->deleteEntry(Ljava/lang/String;)V
 HSPLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
 PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->getKey(Ljava/lang/String;[C)Ljava/security/Key;
 PLcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;->setEntry(Ljava/lang/String;Ljava/security/KeyStore$Entry;Ljava/security/KeyStore$ProtectionParameter;)V
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;II[BZLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;Lcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;Landroid/security/Scrypt;)V
-PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->createApplicationKeyEntries(Ljava/util/Map;Ljava/util/Map;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->createApplicationKeyEntries(Ljava/util/Map;Ljava/util/Map;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->generateAndStoreCounterId(I)J
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->generateRecoveryKey()Ljavax/crypto/SecretKey;
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->generateSalt()[B
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getKeysToSync(I)Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getSnapshotVersion(IZ)I
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->getUiFormat(I)I
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->hashCredentialsBySaltedSha256([B[B)[B
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->hashCredentialsByScrypt([B[B)[B
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->isCustomLockScreen()Z
+HPLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->newInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;II[BZ)Lcom/android/server/locksettings/recoverablekeystore/KeySyncTask;
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->run()V
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->shouldCreateSnapshot(I)Z
-PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->syncKeys()V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->shouldUseScryptToHashCredential()Z
+HPLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->syncKeys()V
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncTask;->syncKeysForAgent(I)V
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;-><clinit>()V
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->calculateThmKfHash([B)[B
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->concat([[B)[B
-PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->encryptKeysWithRecoveryKey(Ljavax/crypto/SecretKey;Ljava/util/Map;)Ljava/util/Map;
+HPLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->encryptKeysWithRecoveryKey(Ljavax/crypto/SecretKey;Ljava/util/Map;)Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->locallyEncryptRecoveryKey([BLjavax/crypto/SecretKey;)[B
 PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->packVaultParams(Ljava/security/PublicKey;JI[B)[B
+PLcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;->thmEncryptRecoveryKey(Ljava/security/PublicKey;[B[BLjavax/crypto/SecretKey;)[B
+PLcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;-><init>(ILandroid/security/keystore/AndroidKeyStoreSecretKey;)V
 PLcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;->getGenerationId()I
 PLcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;->getKey()Landroid/security/keystore/AndroidKeyStoreSecretKey;
+PLcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;-><init>(ILandroid/security/keystore/AndroidKeyStoreSecretKey;)V
 PLcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;->getGenerationId()I
 PLcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;->getKey()Landroid/security/keystore/AndroidKeyStoreSecretKey;
+HSPLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;-><clinit>()V
+HSPLcom/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;->ensureDecryptionKeyIsValid(ILcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;)V
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->generateAesKey()Ljavax/crypto/SecretKey;
 PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->generateAndLoadKey(II)V
 HSPLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getAndLoadAndroidKeyStore()Ljava/security/KeyStore;
 PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getDecryptAlias(II)Ljava/lang/String;
@@ -8441,735 +18694,1780 @@
 PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getEncryptKeyInternal(I)Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;
 PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getGateKeeperService()Landroid/service/gatekeeper/IGateKeeperService;
 PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getGenerationId(I)I
-PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->getInstance(Landroid/content/Context;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;
+HSPLcom/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/PlatformKeyManager;->init(I)V
-PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->isAvailable(I)Z
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->isDeviceLocked(I)Z
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->isKeyLoaded(II)Z
+PLcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;->setGenerationId(II)V
+HSPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;-><init>(Ljavax/crypto/KeyGenerator;Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;->generateAndStoreKey(Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;IILjava/lang/String;[B)[B
+HSPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;->newInstance(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;
 HSPLcom/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/ExecutorService;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;)V
-PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->checkRecoverKeyStorePermission()V
+HSPLcom/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;)V
+HPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->checkRecoverKeyStorePermission()V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->generateKey(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->generateKeyWithMetadata(Ljava/lang/String;[B)Ljava/lang/String;
+HPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getAlias(IILjava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getInstance(Landroid/content/Context;Landroid/security/KeyStore;)Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
-PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getKey(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getKey(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getKeyChainSnapshot()Landroid/security/keystore/recovery/KeyChainSnapshot;
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getRecoverySecretTypes()[I
-PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getRecoveryStatus()Ljava/util/Map;
+HPLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->getRecoveryStatus()Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->initRecoveryService(Ljava/lang/String;[B)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->initRecoveryServiceWithSigFile(Ljava/lang/String;[B[B)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->lockScreenSecretAvailable(I[BI)V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->lockScreenSecretChanged(I[BI)V
+PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->removeKey(Ljava/lang/String;)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->setRecoverySecretTypes([I)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->setRecoveryStatus(Ljava/lang/String;I)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->setServerParams([B)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;->setSnapshotCreatedPendingIntent(Landroid/app/PendingIntent;)V
+HSPLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;-><init>()V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;->recoverySnapshotAvailable(I)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;->setSnapshotListener(ILandroid/app/PendingIntent;)V
 PLcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;->tryToSendIntent(ILandroid/app/PendingIntent;)V
+PLcom/android/server/locksettings/recoverablekeystore/SecureBox$AesGcmOperation;-><clinit>()V
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox$AesGcmOperation;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/locksettings/recoverablekeystore/SecureBox;-><clinit>()V
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->aesGcmEncrypt(Ljavax/crypto/SecretKey;[B[B[B)[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->aesGcmInternal(Lcom/android/server/locksettings/recoverablekeystore/SecureBox$AesGcmOperation;Ljavax/crypto/SecretKey;[B[B[B)[B
-PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->concat([[B)[B
+HPLcom/android/server/locksettings/recoverablekeystore/SecureBox;->concat([[B)[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->dhComputeSecret(Ljava/security/PrivateKey;Ljava/security/PublicKey;)[B
+PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->emptyByteArrayIfNull([B)[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->encodePublicKey(Ljava/security/PublicKey;)[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->encrypt(Ljava/security/PublicKey;[B[B[B)[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->genKeyPair()Ljava/security/KeyPair;
+PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->genRandomNonce()[B
 PLcom/android/server/locksettings/recoverablekeystore/SecureBox;->hkdfDeriveKey([B[B[B)Ljavax/crypto/SecretKey;
-PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;-><init>()V
+HSPLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;-><init>()V
 PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->getDefaultCertificateAliasIfEmpty(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->getRootCertificate(Ljava/lang/String;)Ljava/security/cert/X509Certificate;
 PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->isTestOnlyCertificateAlias(Ljava/lang/String;)Z
 PLcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;->isValidRootCertificateAlias(Ljava/lang/String;)Z
+PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;-><init>([B[B[BII)V
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->fromSecretKey(Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;Ljavax/crypto/SecretKey;[B)Lcom/android/server/locksettings/recoverablekeystore/WrappedKey;
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->getKeyMaterial()[B
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->getKeyMetadata()[B
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->getNonce()[B
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->getPlatformKeyGenerationId()I
 PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->getRecoveryStatus()I
-PLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->unwrapKeys(Lcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;Ljava/util/Map;)Ljava/util/Map;
+HPLcom/android/server/locksettings/recoverablekeystore/WrappedKey;->unwrapKeys(Lcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;Ljava/util/Map;)Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->buildCertPath(Ljava/security/cert/PKIXParameters;)Ljava/security/cert/CertPath;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->buildPkixParams(Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/util/List;Ljava/security/cert/X509Certificate;)Ljava/security/cert/PKIXParameters;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->decodeBase64(Ljava/lang/String;)[B
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->decodeCert(Ljava/io/InputStream;)Ljava/security/cert/X509Certificate;
-PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlDirectChildren(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlNodeContents(ILorg/w3c/dom/Element;[Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->decodeCert([B)Ljava/security/cert/X509Certificate;
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlDirectChildren(Lorg/w3c/dom/Element;Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlNodeContents(ILorg/w3c/dom/Element;[Ljava/lang/String;)Ljava/util/List;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->getXmlRootNode([B)Lorg/w3c/dom/Element;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->validateCert(Ljava/util/Date;Ljava/security/cert/X509Certificate;Ljava/util/List;Ljava/security/cert/X509Certificate;)Ljava/security/cert/CertPath;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;->verifyRsaSha256Signature(Ljava/security/PublicKey;[B[B)V
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;-><init>(JLjava/util/List;Ljava/util/List;)V
-PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parseEndpointCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
-PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parseIntermediateCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->getEndpointCert(ILjava/util/Date;Ljava/security/cert/X509Certificate;)Ljava/security/cert/CertPath;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->getRandomEndpointCert(Ljava/security/cert/X509Certificate;)Ljava/security/cert/CertPath;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->getSerial()J
+PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parse([B)Lcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parseEndpointCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parseIntermediateCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
 PLcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;->parseSerial(Lorg/w3c/dom/Element;)J
-PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parseIntermediateCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;-><init>(Ljava/util/List;Ljava/security/cert/X509Certificate;[B)V
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parse([B)Lcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parseFileSignature(Lorg/w3c/dom/Element;)[B
+HPLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parseIntermediateCerts(Lorg/w3c/dom/Element;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->parseSignerCert(Lorg/w3c/dom/Element;)Ljava/security/cert/X509Certificate;
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->verifyFileSignature(Ljava/security/cert/X509Certificate;[B)V
+PLcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;->verifyFileSignature(Ljava/security/cert/X509Certificate;[BLjava/util/Date;)V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->deserialize(Ljava/io/InputStream;)Landroid/security/keystore/recovery/KeyChainSnapshot;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->deserializeInternal(Ljava/io/InputStream;)Landroid/security/keystore/recovery/KeyChainSnapshot;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readBlobTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)[B
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->deserializeInternal(Ljava/io/InputStream;)Landroid/security/keystore/recovery/KeyChainSnapshot;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readBlobTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)[B
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readCertPathTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/security/cert/CertPath;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readIntTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyChainProtectionParams(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/KeyChainProtectionParams;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyChainProtectionParamsList(Lorg/xmlpull/v1/XmlPullParser;)Ljava/util/List;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyDerivationParams(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/KeyDerivationParams;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readLongTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readWrappedApplicationKey(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/WrappedApplicationKey;
-PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readWrappedApplicationKeys(Lorg/xmlpull/v1/XmlPullParser;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readIntTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyChainProtectionParams(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/KeyChainProtectionParams;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyChainProtectionParamsList(Lorg/xmlpull/v1/XmlPullParser;)Ljava/util/List;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readKeyDerivationParams(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/KeyDerivationParams;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readLongTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readStringTag(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readText(Lorg/xmlpull/v1/XmlPullParser;)Ljava/lang/String;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readWrappedApplicationKey(Lorg/xmlpull/v1/XmlPullParser;)Landroid/security/keystore/recovery/WrappedApplicationKey;
+HPLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;->readWrappedApplicationKeys(Lorg/xmlpull/v1/XmlPullParser;)Ljava/util/List;
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSchema;-><clinit>()V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->serialize(Landroid/security/keystore/recovery/KeyChainSnapshot;Ljava/io/OutputStream;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeApplicationKeyProperties(Lorg/xmlpull/v1/XmlSerializer;Landroid/security/keystore/recovery/WrappedApplicationKey;)V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeApplicationKeys(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeKeyChainProtectionParams(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeKeyChainProtectionParamsProperties(Lorg/xmlpull/v1/XmlSerializer;Landroid/security/keystore/recovery/KeyChainProtectionParams;)V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeKeyChainSnapshotProperties(Lorg/xmlpull/v1/XmlSerializer;Landroid/security/keystore/recovery/KeyChainSnapshot;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeKeyDerivationParams(Lorg/xmlpull/v1/XmlSerializer;Landroid/security/keystore/recovery/KeyDerivationParams;)V
 PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writeKeyDerivationParamsProperties(Lorg/xmlpull/v1/XmlSerializer;Landroid/security/keystore/recovery/KeyDerivationParams;)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getGrantAlias(IILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/security/cert/CertPath;)V
+PLcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;->writePropertyTag(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;[B)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/-$$Lambda$RecoverableKeyStoreDb$knfkhmVPS_11tGWkGt87bH4xjYg;-><init>(Ljava/util/StringJoiner;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/-$$Lambda$RecoverableKeyStoreDb$knfkhmVPS_11tGWkGt87bH4xjYg;->accept(I)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;-><init>(Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;Landroid/security/KeyStore;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->deleteEntry(IILjava/lang/String;)V
+HPLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getGrantAlias(IILjava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getInstance(Landroid/security/KeyStore;)Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;
+HPLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->getInternalAlias(IILjava/lang/String;)Ljava/lang/String;
 PLcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;->setSymmetricKeyEntry(IILjava/lang/String;[B)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->registerRecoveryAgent(II)V
-HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->storeUserSerialNumber(IJ)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager$1;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;-><init>(Landroid/content/Context;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
+HSPLcom/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;
+HPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->registerRecoveryAgent(II)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->removeAllKeysForRecoveryAgent(II)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->removeDataForUser(I)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->storeUserSerialNumber(IJ)V
 HSPLcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;->verifyKnownUsers()V
-HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;-><init>(Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;)V
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->decodeCertPath([B)Ljava/security/cert/CertPath;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureRecoveryServiceMetadataEntryExists(II)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureRootOfTrustEntryExists(IILjava/lang/String;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->ensureUserMetadataEntryExists(I)V
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getActiveRootOfTrust(II)Ljava/lang/String;
 HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getAllKeys(III)Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getBytes(IILjava/lang/String;)[B
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getBytes(IILjava/lang/String;Ljava/lang/String;)[B
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getCounterId(II)Ljava/lang/Long;
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getLong(IILjava/lang/String;)Ljava/lang/Long;
+HPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getLong(IILjava/lang/String;)Ljava/lang/Long;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getLong(IILjava/lang/String;Ljava/lang/String;)Ljava/lang/Long;
 HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getPlatformKeyGenerationId(I)I
 HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoveryAgents(I)Ljava/util/List;
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoverySecretTypes(II)[I
+HPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoverySecretTypes(II)[I
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoveryServiceCertPath(IILjava/lang/String;)Ljava/security/cert/CertPath;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getRecoveryServiceCertSerial(IILjava/lang/String;)Ljava/lang/Long;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getServerParams(II)[B
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getShouldCreateSnapshot(II)Z
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getSnapshotVersion(II)Ljava/lang/Long;
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getStatusForAllKeys(I)Ljava/util/Map;
+HPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getStatusForAllKeys(I)Ljava/util/Map;
 HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->getUserSerialNumbers()Ljava/util/Map;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->insertKey(IILjava/lang/String;Lcom/android/server/locksettings/recoverablekeystore/WrappedKey;)J
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->invalidateKeysWithOldGenerationId(II)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->invalidateKeysForUser(I)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->lambda$setRecoverySecretTypes$0(Ljava/util/StringJoiner;I)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->newInstance(Landroid/content/Context;)Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeKey(ILjava/lang/String;)Z
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeUserFromAllTables(I)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeUserFromKeysTable(I)Z
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeUserFromRecoveryServiceMetadataTable(I)Z
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeUserFromRootOfTrustTable(I)Z
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->removeUserFromUserMetadataTable(I)Z
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setActiveRootOfTrust(IILjava/lang/String;)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setBytes(IILjava/lang/String;Ljava/lang/String;[B)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setBytes(IILjava/lang/String;[B)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setCounterId(IIJ)J
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setLong(IILjava/lang/String;J)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setLong(IILjava/lang/String;Ljava/lang/String;J)J
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setPlatformKeyGenerationId(II)J
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryStatus(ILjava/lang/String;I)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoverySecretTypes(II[I)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryServiceCertPath(IILjava/lang/String;Ljava/security/cert/CertPath;)J
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryServiceCertSerial(IILjava/lang/String;J)J
+HPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setRecoveryStatus(ILjava/lang/String;I)I
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setServerParams(II[B)J
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setShouldCreateSnapshot(IIZ)J
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setSnapshotVersion(IIJ)J
-HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setUserSerialNumber(IJ)J
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;->addColumnToTable(Landroid/database/sqlite/SQLiteDatabase;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V
-PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;->setUserSerialNumber(IJ)J
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;-><init>()V
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;-><init>(Ljava/io/File;)V
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->get(I)Landroid/security/keystore/recovery/KeyChainSnapshot;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->getSnapshotFile(I)Ljava/io/File;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->getSnapshotFileName(I)Ljava/lang/String;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->getStorageFolder()Ljava/io/File;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->newInstance()Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->put(ILandroid/security/keystore/recovery/KeyChainSnapshot;)V
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->readFromDisk(I)Landroid/security/keystore/recovery/KeyChainSnapshot;
+HSPLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->remove(I)V
 PLcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;->writeToDisk(ILandroid/security/keystore/recovery/KeyChainSnapshot;)V
-PLcom/android/server/media/-$$Lambda$MediaSessionServiceImpl$a3VtB0CQuvV4UG4nWgvCgkL6hec;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
-PLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/media/AudioPlayerStateMonitor;-><init>()V
-PLcom/android/server/media/AudioPlayerStateMonitor;->cleanUpAudioPlaybackUids(I)V
-HSPLcom/android/server/media/AudioPlayerStateMonitor;->dispatchPlaybackConfigChange(Ljava/util/List;Z)V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$M94FQn7LGXpV3kApGJU9Bnp0RRk;-><clinit>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$M94FQn7LGXpV3kApGJU9Bnp0RRk;-><init>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$M94FQn7LGXpV3kApGJU9Bnp0RRk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$QRE0IkqsUP_uX7kD-TOn1pE7uWc;-><clinit>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$QRE0IkqsUP_uX7kD-TOn1pE7uWc;-><init>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$QRE0IkqsUP_uX7kD-TOn1pE7uWc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$2y9vqtJzX1LpgQmc7mf5RQXEtqk;-><clinit>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$2y9vqtJzX1LpgQmc7mf5RQXEtqk;-><init>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$2y9vqtJzX1LpgQmc7mf5RQXEtqk;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$pb5SX6gBlgZXLZp0t4uVjgjp3EE;-><clinit>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$pb5SX6gBlgZXLZp0t4uVjgjp3EE;-><init>()V
+PLcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UserHandler$pb5SX6gBlgZXLZp0t4uVjgjp3EE;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/media/-$$Lambda$MediaSessionService$za_9dlUSlnaiZw6eCdPVEZq0XLw;-><init>(Lcom/android/server/media/MediaSessionService;)V
+HPLcom/android/server/media/-$$Lambda$MediaSessionService$za_9dlUSlnaiZw6eCdPVEZq0XLw;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
+HSPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;)V
+HSPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;-><init>(Lcom/android/server/media/AudioPlayerStateMonitor;Lcom/android/server/media/AudioPlayerStateMonitor$1;)V
+HPLcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;->onPlaybackConfigChanged(Ljava/util/List;)V
+HSPLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;-><init>(Landroid/os/Looper;Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;)V
+HPLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;->sendAudioPlayerActiveStateChangedMessage(Landroid/media/AudioPlaybackConfiguration;Z)V
+HSPLcom/android/server/media/AudioPlayerStateMonitor;-><clinit>()V
+HSPLcom/android/server/media/AudioPlayerStateMonitor;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/AudioPlayerStateMonitor;->access$100(Lcom/android/server/media/AudioPlayerStateMonitor;)Ljava/lang/Object;
+PLcom/android/server/media/AudioPlayerStateMonitor;->access$200()Z
+PLcom/android/server/media/AudioPlayerStateMonitor;->access$400(Lcom/android/server/media/AudioPlayerStateMonitor;Landroid/media/AudioPlaybackConfiguration;Z)V
+HPLcom/android/server/media/AudioPlayerStateMonitor;->cleanUpAudioPlaybackUids(I)V
 PLcom/android/server/media/AudioPlayerStateMonitor;->dump(Landroid/content/Context;Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/media/AudioPlayerStateMonitor;->getInstance(Landroid/content/Context;)Lcom/android/server/media/AudioPlayerStateMonitor;
 HSPLcom/android/server/media/AudioPlayerStateMonitor;->getSortedAudioPlaybackClientUids()Landroid/util/IntArray;
 HSPLcom/android/server/media/AudioPlayerStateMonitor;->isPlaybackActive(I)Z
 HSPLcom/android/server/media/AudioPlayerStateMonitor;->registerListener(Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;Landroid/os/Handler;)V
-HSPLcom/android/server/media/AudioPlayerStateMonitor;->registerSelfIntoAudioServiceIfNeeded(Landroid/media/IAudioService;)V
-PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->getPackageNamesFromPid(I)[Ljava/lang/String;
-PLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->notifyResourceGranted(II)V
+HPLcom/android/server/media/AudioPlayerStateMonitor;->sendAudioPlayerActiveStateChangedMessageLocked(Landroid/media/AudioPlaybackConfiguration;Z)V
+HSPLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;-><init>(Lcom/android/server/media/MediaResourceMonitorService;)V
+HPLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->getPackageNamesFromPid(I)[Ljava/lang/String;
+HPLcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;->notifyResourceGranted(II)V
+HSPLcom/android/server/media/MediaResourceMonitorService;-><clinit>()V
 HSPLcom/android/server/media/MediaResourceMonitorService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/MediaResourceMonitorService;->access$000()Z
 HSPLcom/android/server/media/MediaResourceMonitorService;->onStart()V
+PLcom/android/server/media/MediaRoute2Provider;-><init>(Landroid/content/ComponentName;)V
+PLcom/android/server/media/MediaRoute2Provider;->getProviderInfo()Landroid/media/MediaRoute2ProviderInfo;
+PLcom/android/server/media/MediaRoute2Provider;->getUniqueId()Ljava/lang/String;
+PLcom/android/server/media/MediaRoute2Provider;->setAndNotifyProviderState(Landroid/media/MediaRoute2ProviderInfo;Ljava/util/List;)V
+PLcom/android/server/media/MediaRoute2Provider;->setCallback(Lcom/android/server/media/MediaRoute2Provider$Callback;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$1;-><init>(Lcom/android/server/media/MediaRoute2ProviderWatcher;)V
 PLcom/android/server/media/MediaRoute2ProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/media/MediaRoute2ProviderWatcher$2;->run()V
-HSPLcom/android/server/media/MediaRoute2ProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/MediaRoute2ProviderWatcher$Callback;Landroid/os/Handler;I)V
-HSPLcom/android/server/media/MediaRoute2ProviderWatcher;->scanPackages()V
-HSPLcom/android/server/media/MediaRoute2ProviderWatcher;->start()V
-PLcom/android/server/media/MediaRouterService$1$1;->run()V
-PLcom/android/server/media/MediaRouterService$1;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
-HSPLcom/android/server/media/MediaRouterService$2;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$2;-><init>(Lcom/android/server/media/MediaRoute2ProviderWatcher;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher$2;->run()V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;-><clinit>()V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/MediaRoute2ProviderWatcher$Callback;Landroid/os/Handler;I)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;->access$000()Z
+PLcom/android/server/media/MediaRoute2ProviderWatcher;->access$100(Lcom/android/server/media/MediaRoute2ProviderWatcher;)V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;->scanPackages()V
+PLcom/android/server/media/MediaRoute2ProviderWatcher;->start()V
+PLcom/android/server/media/MediaRouter2ServiceImpl$ManagerRecord;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;Landroid/media/IMediaRouter2Manager;IILjava/lang/String;Z)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$ManagerRecord;->dispose()V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->access$400(Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->access$800(Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;Landroid/media/IMediaRouter2Manager;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->getClients()Ljava/util/List;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->getManagers()Ljava/util/List;
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->getProviderInfoIndex(Ljava/lang/String;)I
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->lambda$2y9vqtJzX1LpgQmc7mf5RQXEtqk(Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->lambda$pb5SX6gBlgZXLZp0t4uVjgjp3EE(Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;Lcom/android/server/media/MediaRoute2Provider;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesAddedToClients(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesAddedToManagers(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesChangedToClients(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesChangedToManagers(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesRemovedToClients(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesRemovedToManagers(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->notifyRoutesToManager(Landroid/media/IMediaRouter2Manager;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->onProviderStateChanged(Lcom/android/server/media/MediaRoute2Provider;)V
+HPLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->onProviderStateChangedOnHandler(Lcom/android/server/media/MediaRoute2Provider;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;->start()V
+PLcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;-><init>(Lcom/android/server/media/MediaRouter2ServiceImpl;I)V
+HSPLcom/android/server/media/MediaRouter2ServiceImpl;-><clinit>()V
+HSPLcom/android/server/media/MediaRouter2ServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->access$200(Lcom/android/server/media/MediaRouter2ServiceImpl;)Landroid/content/Context;
+PLcom/android/server/media/MediaRouter2ServiceImpl;->access$300(Lcom/android/server/media/MediaRouter2ServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/media/MediaRouter2ServiceImpl;->disposeUserIfNeededLocked(Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->getOrCreateUserRecordLocked(I)Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;
+PLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$getOrCreateUserRecordLocked$16(Ljava/lang/Object;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->lambda$registerManagerLocked$12(Ljava/lang/Object;Landroid/media/IMediaRouter2Manager;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->registerManager(Landroid/media/IMediaRouter2Manager;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->registerManagerLocked(Landroid/media/IMediaRouter2Manager;IILjava/lang/String;IZ)V
+HSPLcom/android/server/media/MediaRouter2ServiceImpl;->switchUser()V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->unregisterManager(Landroid/media/IMediaRouter2Manager;)V
+PLcom/android/server/media/MediaRouter2ServiceImpl;->unregisterManagerLocked(Landroid/media/IMediaRouter2Manager;Z)V
+HSPLcom/android/server/media/MediaRouterService$1$1;-><init>(Lcom/android/server/media/MediaRouterService$1;)V
+HPLcom/android/server/media/MediaRouterService$1$1;->run()V
+HSPLcom/android/server/media/MediaRouterService$1;-><init>(Lcom/android/server/media/MediaRouterService;)V
+HPLcom/android/server/media/MediaRouterService$1;->onAudioPlayerActiveStateChanged(Landroid/media/AudioPlaybackConfiguration;Z)V
+HSPLcom/android/server/media/MediaRouterService$2;-><init>(Lcom/android/server/media/MediaRouterService;)V
+HPLcom/android/server/media/MediaRouterService$2;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
+HSPLcom/android/server/media/MediaRouterService$3;-><init>(Lcom/android/server/media/MediaRouterService;)V
 HSPLcom/android/server/media/MediaRouterService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V
-PLcom/android/server/media/MediaRouterService$ClientRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/media/MediaRouterService$ClientRecord;->toString()Ljava/lang/String;
-HSPLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/MediaRouterService$ClientGroup;-><init>(Lcom/android/server/media/MediaRouterService;)V
+HSPLcom/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
+HPLcom/android/server/media/MediaRouterService$ClientRecord;->binderDied()V
+HPLcom/android/server/media/MediaRouterService$ClientRecord;->dispose()V
+HPLcom/android/server/media/MediaRouterService$ClientRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/media/MediaRouterService$ClientRecord;->getState()Landroid/media/MediaRouterClientState;
+HPLcom/android/server/media/MediaRouterService$ClientRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;-><init>(Lcom/android/server/media/MediaRouterService;)V
+HPLcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
+HPLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->appendClientState(Landroid/media/MediaRouterClientState;)V
+PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->assignRouteUniqueId(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->findRouteByDescriptorId(Ljava/lang/String;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->findRouteByUniqueId(Ljava/lang/String;)Lcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;
+PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->getProvider()Lcom/android/server/media/RemoteDisplayProviderProxy;
 PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->toString()Ljava/lang/String;
-PLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->updateDescriptor(Landroid/media/RemoteDisplayState;)Z
+HPLcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;->updateDescriptor(Landroid/media/RemoteDisplayState;)Z
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;-><init>(Lcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeDescription(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)Ljava/lang/String;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeEnabled(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)Z
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeName(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)Ljava/lang/String;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computePlaybackStream(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computePlaybackType(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computePresentationDisplayId(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeStatusCode(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeSupportedTypes(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeVolume(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeVolumeHandling(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->computeVolumeMax(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->getDescriptorId()Ljava/lang/String;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->getInfo()Landroid/media/MediaRouterClientState$RouteInfo;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->getProvider()Lcom/android/server/media/RemoteDisplayProviderProxy;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->getStatus()I
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->getUniqueId()Ljava/lang/String;
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->isEnabled()Z
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->isValid()Z
+PLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;->updateDescriptor(Landroid/media/RemoteDisplayState$RemoteDisplayInfo;)Z
 HSPLcom/android/server/media/MediaRouterService$UserHandler;-><init>(Lcom/android/server/media/MediaRouterService;Lcom/android/server/media/MediaRouterService$UserRecord;)V
 PLcom/android/server/media/MediaRouterService$UserHandler;->addProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
-PLcom/android/server/media/MediaRouterService$UserHandler;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->checkSelectedRouteState()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->connectionTimedOut()V
+HPLcom/android/server/media/MediaRouterService$UserHandler;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->findProviderRecord(Lcom/android/server/media/RemoteDisplayProviderProxy;)I
+PLcom/android/server/media/MediaRouterService$UserHandler;->findRouteRecord(Ljava/lang/String;)Lcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;
+PLcom/android/server/media/MediaRouterService$UserHandler;->getConnectionPhase(I)I
 HSPLcom/android/server/media/MediaRouterService$UserHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/media/MediaRouterService$UserHandler;->updateClientState()V
-PLcom/android/server/media/MediaRouterService$UserHandler;->updateDiscoveryRequest()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->onDisplayStateChanged(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->scheduleUpdateClientState()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->selectRoute(Ljava/lang/String;)V
+HSPLcom/android/server/media/MediaRouterService$UserHandler;->start()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->unselectRoute(Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserHandler;->unselectSelectedRoute()V
+HPLcom/android/server/media/MediaRouterService$UserHandler;->updateClientState()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->updateConnectionTimeout(I)V
+HPLcom/android/server/media/MediaRouterService$UserHandler;->updateDiscoveryRequest()V
+PLcom/android/server/media/MediaRouterService$UserHandler;->updateProvider(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/RemoteDisplayState;)V
+HPLcom/android/server/media/MediaRouterService$UserHandler;->updateSelectedRoute(Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserRecord$1;-><init>(Lcom/android/server/media/MediaRouterService$UserRecord;Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/media/MediaRouterService$UserRecord$1;->run()V
+HSPLcom/android/server/media/MediaRouterService$UserRecord;-><init>(Lcom/android/server/media/MediaRouterService;I)V
+PLcom/android/server/media/MediaRouterService$UserRecord;->access$500(Lcom/android/server/media/MediaRouterService$UserRecord;)Landroid/util/ArrayMap;
+PLcom/android/server/media/MediaRouterService$UserRecord;->addToGroup(Ljava/lang/String;Lcom/android/server/media/MediaRouterService$ClientRecord;)V
 PLcom/android/server/media/MediaRouterService$UserRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/MediaRouterService$UserRecord;->removeFromGroup(Ljava/lang/String;Lcom/android/server/media/MediaRouterService$ClientRecord;)V
 PLcom/android/server/media/MediaRouterService$UserRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/media/MediaRouterService;-><clinit>()V
 HSPLcom/android/server/media/MediaRouterService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/media/MediaRouterService;->clientDied(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
-HSPLcom/android/server/media/MediaRouterService;->disposeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;Z)V
-HSPLcom/android/server/media/MediaRouterService;->disposeUserIfNeededLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
+HPLcom/android/server/media/MediaRouterService;->access$000(Lcom/android/server/media/MediaRouterService;)Landroid/util/IntArray;
+PLcom/android/server/media/MediaRouterService;->access$100(Lcom/android/server/media/MediaRouterService;)Landroid/util/IntArray;
+PLcom/android/server/media/MediaRouterService;->access$200(Lcom/android/server/media/MediaRouterService;)Landroid/os/Handler;
+PLcom/android/server/media/MediaRouterService;->access$300()Z
+PLcom/android/server/media/MediaRouterService;->access$400(Lcom/android/server/media/MediaRouterService;)Ljava/lang/Object;
+HSPLcom/android/server/media/MediaRouterService;->access$600(Lcom/android/server/media/MediaRouterService;)Landroid/content/Context;
+HPLcom/android/server/media/MediaRouterService;->clientDied(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
+HPLcom/android/server/media/MediaRouterService;->disposeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;Z)V
+HPLcom/android/server/media/MediaRouterService;->disposeUserIfNeededLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
 PLcom/android/server/media/MediaRouterService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/media/MediaRouterService;->getState(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
+HSPLcom/android/server/media/MediaRouterService;->getStateLocked(Landroid/media/IMediaRouterClient;)Landroid/media/MediaRouterClientState;
+HSPLcom/android/server/media/MediaRouterService;->initializeClientLocked(Lcom/android/server/media/MediaRouterService$ClientRecord;)V
 HSPLcom/android/server/media/MediaRouterService;->initializeUserLocked(Lcom/android/server/media/MediaRouterService$UserRecord;)V
 HSPLcom/android/server/media/MediaRouterService;->isPlaybackActive(Landroid/media/IMediaRouterClient;)Z
-HSPLcom/android/server/media/MediaRouterService;->monitor()V
+HPLcom/android/server/media/MediaRouterService;->monitor()V
 HSPLcom/android/server/media/MediaRouterService;->registerClientAsUser(Landroid/media/IMediaRouterClient;Ljava/lang/String;I)V
+HPLcom/android/server/media/MediaRouterService;->registerClientGroupId(Landroid/media/IMediaRouterClient;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaRouterService;->registerClientGroupIdLocked(Landroid/media/IMediaRouterClient;Ljava/lang/String;)V
 HSPLcom/android/server/media/MediaRouterService;->registerClientLocked(Landroid/media/IMediaRouterClient;IILjava/lang/String;IZ)V
-PLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V
-PLcom/android/server/media/MediaRouterService;->restoreRoute(I)V
+PLcom/android/server/media/MediaRouterService;->registerManager(Landroid/media/IMediaRouter2Manager;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaRouterService;->restoreBluetoothA2dp()V
+HPLcom/android/server/media/MediaRouterService;->restoreRoute(I)V
 HSPLcom/android/server/media/MediaRouterService;->setDiscoveryRequest(Landroid/media/IMediaRouterClient;IZ)V
 HSPLcom/android/server/media/MediaRouterService;->setDiscoveryRequestLocked(Landroid/media/IMediaRouterClient;IZ)V
 HSPLcom/android/server/media/MediaRouterService;->setSelectedRoute(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
 HSPLcom/android/server/media/MediaRouterService;->setSelectedRouteLocked(Landroid/media/IMediaRouterClient;Ljava/lang/String;Z)V
 HSPLcom/android/server/media/MediaRouterService;->switchUser()V
 HSPLcom/android/server/media/MediaRouterService;->systemRunning()V
+HPLcom/android/server/media/MediaRouterService;->unregisterClientLocked(Landroid/media/IMediaRouterClient;Z)V
+PLcom/android/server/media/MediaRouterService;->unregisterManager(Landroid/media/IMediaRouter2Manager;)V
 HSPLcom/android/server/media/MediaRouterService;->validatePackageName(ILjava/lang/String;)Z
-PLcom/android/server/media/MediaSessionRecord$2;->run()V
+HPLcom/android/server/media/MediaSessionRecord$2;-><init>(Lcom/android/server/media/MediaSessionRecord;ZIIILjava/lang/String;II)V
+HPLcom/android/server/media/MediaSessionRecord$2;->run()V
+HSPLcom/android/server/media/MediaSessionRecord$3;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
 PLcom/android/server/media/MediaSessionRecord$3;->run()V
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getExtras()Landroid/os/Bundle;
+HSPLcom/android/server/media/MediaSessionRecord$ControllerStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->fastForward(Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getExtras()Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getFlags()J
 PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getLaunchPendingIntent()Landroid/app/PendingIntent;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueue()Landroid/media/MediaParceledListSlice;
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getMetadata()Landroid/media/MediaMetadata;
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getPlaybackState()Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueue()Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getQueueTitle()Ljava/lang/CharSequence;
 PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getRatingType()I
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->pause(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallback(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendCommand(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendMediaButton(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;Landroid/view/KeyEvent;)Z
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->stop(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
-PLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallback(Landroid/media/session/ISessionControllerCallback;)V
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->next(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->pause(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->play(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->playFromMediaId(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->playFromUri(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->prepareFromUri(Ljava/lang/String;Landroid/net/Uri;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->previous(Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->registerCallback(Ljava/lang/String;Landroid/media/session/ISessionControllerCallback;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->rewind(Ljava/lang/String;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->seekTo(Ljava/lang/String;J)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendCommand(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendCustomAction(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->sendMediaButton(Ljava/lang/String;Landroid/view/KeyEvent;)Z
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->setVolumeTo(Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->skipToQueueItem(Ljava/lang/String;J)V
+PLcom/android/server/media/MediaSessionRecord$ControllerStub;->stop(Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$ControllerStub;->unregisterCallback(Landroid/media/session/ISessionControllerCallback;)V
+HPLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;Ljava/lang/String;I)V
+PLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;->access$300(Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;)Ljava/lang/String;
+HPLcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;->access$400(Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;)Landroid/media/session/ISessionControllerCallback;
+HSPLcom/android/server/media/MediaSessionRecord$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Looper;)V
 HSPLcom/android/server/media/MediaSessionRecord$MessageHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(I)V
 HSPLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(ILjava/lang/Object;)V
 PLcom/android/server/media/MediaSessionRecord$MessageHandler;->post(ILjava/lang/Object;Landroid/os/Bundle;)V
-PLcom/android/server/media/MediaSessionRecord$SessionCb;->pause(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)V
-PLcom/android/server/media/MediaSessionRecord$SessionCb;->sendCommand(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;Ljava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
-PLcom/android/server/media/MediaSessionRecord$SessionCb;->sendMediaButton(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;ZLandroid/view/KeyEvent;)Z
+HSPLcom/android/server/media/MediaSessionRecord$SessionCb;-><init>(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionCallback;)V
+HSPLcom/android/server/media/MediaSessionRecord$SessionCb;->access$100(Lcom/android/server/media/MediaSessionRecord$SessionCb;)Landroid/media/session/ISessionCallback;
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->adjustVolume(Ljava/lang/String;IIZI)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->createMediaButtonIntent(Landroid/view/KeyEvent;)Landroid/content/Intent;
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->fastForward(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->next(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->pause(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->play(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->playFromMediaId(Ljava/lang/String;IILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->playFromUri(Ljava/lang/String;IILandroid/net/Uri;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->prepareFromUri(Ljava/lang/String;IILandroid/net/Uri;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->previous(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->rewind(Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->seekTo(Ljava/lang/String;IIJ)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->sendCommand(Ljava/lang/String;IILjava/lang/String;Landroid/os/Bundle;Landroid/os/ResultReceiver;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionCb;->sendCustomAction(Ljava/lang/String;IILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->sendMediaButton(Ljava/lang/String;IIZLandroid/view/KeyEvent;)Z
 PLcom/android/server/media/MediaSessionRecord$SessionCb;->sendMediaButton(Ljava/lang/String;IIZLandroid/view/KeyEvent;ILandroid/os/ResultReceiver;)Z
-PLcom/android/server/media/MediaSessionRecord$SessionCb;->stop(Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->destroySession()V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->setVolumeTo(Ljava/lang/String;III)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->skipToTrack(Ljava/lang/String;IIJ)V
+PLcom/android/server/media/MediaSessionRecord$SessionCb;->stop(Ljava/lang/String;II)V
+HSPLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionRecord$SessionStub;-><init>(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord$1;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->destroySession()V
 HSPLcom/android/server/media/MediaSessionRecord$SessionStub;->getController()Landroid/media/session/ISessionController;
 PLcom/android/server/media/MediaSessionRecord$SessionStub;->sendEvent(Ljava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setCurrentVolume(I)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setExtras(Landroid/os/Bundle;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setActive(Z)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setCurrentVolume(I)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setExtras(Landroid/os/Bundle;)V
 HSPLcom/android/server/media/MediaSessionRecord$SessionStub;->setFlags(I)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;JLjava/lang/String;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setLaunchPendingIntent(Landroid/app/PendingIntent;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setMediaButtonReceiver(Landroid/app/PendingIntent;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setMetadata(Landroid/media/MediaMetadata;JLjava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackState(Landroid/media/session/PlaybackState;)V
 HSPLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToLocal(Landroid/media/AudioAttributes;)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToRemote(II)V
-PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueue(Landroid/media/MediaParceledListSlice;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToRemote(II)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setPlaybackToRemote(IILjava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueue(Landroid/content/pm/ParceledListSlice;)V
 PLcom/android/server/media/MediaSessionRecord$SessionStub;->setQueueTitle(Ljava/lang/CharSequence;)V
 PLcom/android/server/media/MediaSessionRecord$SessionStub;->setRatingType(I)V
-HSPLcom/android/server/media/MediaSessionRecord;-><init>(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;Lcom/android/server/media/MediaSessionService$ServiceImpl;Landroid/os/Looper;)V
+HSPLcom/android/server/media/MediaSessionRecord;-><clinit>()V
+HSPLcom/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;)V
+HPLcom/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
+HSPLcom/android/server/media/MediaSessionRecord;->access$1000(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$ControllerStub;
+PLcom/android/server/media/MediaSessionRecord;->access$1102(Lcom/android/server/media/MediaSessionRecord;Z)Z
+PLcom/android/server/media/MediaSessionRecord;->access$1200(Lcom/android/server/media/MediaSessionRecord;)J
+HSPLcom/android/server/media/MediaSessionRecord;->access$1202(Lcom/android/server/media/MediaSessionRecord;J)J
+PLcom/android/server/media/MediaSessionRecord;->access$1300(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$1302(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord;->access$1400(Lcom/android/server/media/MediaSessionRecord;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord;->access$1402(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionRecord;->access$1500(Lcom/android/server/media/MediaSessionRecord;)Landroid/app/PendingIntent;
+HSPLcom/android/server/media/MediaSessionRecord;->access$1500(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionRecord;->access$1502(Lcom/android/server/media/MediaSessionRecord;Landroid/app/PendingIntent;)Landroid/app/PendingIntent;
+HPLcom/android/server/media/MediaSessionRecord;->access$1600(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/MediaMetadata;
+HPLcom/android/server/media/MediaSessionRecord;->access$1600(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionRecord;->access$1602(Lcom/android/server/media/MediaSessionRecord;Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata;
+HPLcom/android/server/media/MediaSessionRecord;->access$1700(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/MediaMetadata;
+PLcom/android/server/media/MediaSessionRecord;->access$1702(Lcom/android/server/media/MediaSessionRecord;J)J
+PLcom/android/server/media/MediaSessionRecord;->access$1702(Lcom/android/server/media/MediaSessionRecord;Landroid/media/MediaMetadata;)Landroid/media/MediaMetadata;
+PLcom/android/server/media/MediaSessionRecord;->access$1802(Lcom/android/server/media/MediaSessionRecord;J)J
+PLcom/android/server/media/MediaSessionRecord;->access$1802(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$1900(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->access$1902(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/PlaybackState;)Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->access$1902(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$200(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/AudioManagerInternal;
+PLcom/android/server/media/MediaSessionRecord;->access$2000()Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2000(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->access$2000(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2002(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/PlaybackState;)Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->access$2002(Lcom/android/server/media/MediaSessionRecord;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2100()Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2102(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+PLcom/android/server/media/MediaSessionRecord;->access$2200()Ljava/util/List;
+HPLcom/android/server/media/MediaSessionRecord;->access$2200(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2202(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Bundle;)Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord;->access$2202(Lcom/android/server/media/MediaSessionRecord;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2300(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/CharSequence;
+HPLcom/android/server/media/MediaSessionRecord;->access$2300(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2302(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2302(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+PLcom/android/server/media/MediaSessionRecord;->access$2302(Lcom/android/server/media/MediaSessionRecord;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/media/MediaSessionRecord;->access$2400(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$2400(Lcom/android/server/media/MediaSessionRecord;)Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord;->access$2400(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/CharSequence;
+PLcom/android/server/media/MediaSessionRecord;->access$2402(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2402(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Bundle;)Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord;->access$2402(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+PLcom/android/server/media/MediaSessionRecord;->access$2500(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$2500(Lcom/android/server/media/MediaSessionRecord;)Landroid/os/Bundle;
+PLcom/android/server/media/MediaSessionRecord;->access$2502(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2502(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes;
+PLcom/android/server/media/MediaSessionRecord;->access$2502(Lcom/android/server/media/MediaSessionRecord;Landroid/os/Bundle;)Landroid/os/Bundle;
+HSPLcom/android/server/media/MediaSessionRecord;->access$2600(Lcom/android/server/media/MediaSessionRecord;)I
+HSPLcom/android/server/media/MediaSessionRecord;->access$2602(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2700(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$2702(Lcom/android/server/media/MediaSessionRecord;I)I
+HSPLcom/android/server/media/MediaSessionRecord;->access$2702(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes;
+PLcom/android/server/media/MediaSessionRecord;->access$2702(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$2802(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2802(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes;
+PLcom/android/server/media/MediaSessionRecord;->access$2802(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$2902(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$2902(Lcom/android/server/media/MediaSessionRecord;Landroid/media/AudioAttributes;)Landroid/media/AudioAttributes;
+PLcom/android/server/media/MediaSessionRecord;->access$3000(Lcom/android/server/media/MediaSessionRecord;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionRecord;->access$3000(Lcom/android/server/media/MediaSessionRecord;)Z
+PLcom/android/server/media/MediaSessionRecord;->access$3002(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$3100(Lcom/android/server/media/MediaSessionRecord;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionRecord;->access$3100(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$SessionCb;
+PLcom/android/server/media/MediaSessionRecord;->access$3100(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
+PLcom/android/server/media/MediaSessionRecord;->access$3102(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$3200(Lcom/android/server/media/MediaSessionRecord;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionRecord;->access$3200(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$SessionCb;
+PLcom/android/server/media/MediaSessionRecord;->access$3200(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionRecord;->access$3200(Lcom/android/server/media/MediaSessionRecord;)Z
+PLcom/android/server/media/MediaSessionRecord;->access$3300()Z
+PLcom/android/server/media/MediaSessionRecord;->access$3300(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$SessionCb;
+PLcom/android/server/media/MediaSessionRecord;->access$3300(Lcom/android/server/media/MediaSessionRecord;)Z
+PLcom/android/server/media/MediaSessionRecord;->access$3300(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
+PLcom/android/server/media/MediaSessionRecord;->access$3400(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$3400(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionRecord;->access$3400(Lcom/android/server/media/MediaSessionRecord;)Z
+HPLcom/android/server/media/MediaSessionRecord;->access$3400(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
+PLcom/android/server/media/MediaSessionRecord;->access$3500()Z
+PLcom/android/server/media/MediaSessionRecord;->access$3500(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/ArrayList;
+HPLcom/android/server/media/MediaSessionRecord;->access$3500(Lcom/android/server/media/MediaSessionRecord;Landroid/media/session/ISessionControllerCallback;)I
+PLcom/android/server/media/MediaSessionRecord;->access$3600()Z
+PLcom/android/server/media/MediaSessionRecord;->access$3600(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$3600(Lcom/android/server/media/MediaSessionRecord;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionRecord;->access$3700()Z
+PLcom/android/server/media/MediaSessionRecord;->access$3700(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord;->access$3700(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String;
+HPLcom/android/server/media/MediaSessionRecord;->access$3800(Lcom/android/server/media/MediaSessionRecord;)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionRecord;->access$3900(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord;->access$3900(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionRecord;->access$4000(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/MediaController$PlaybackInfo;
+PLcom/android/server/media/MediaSessionRecord;->access$4000(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionRecord;->access$4100(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/MediaController$PlaybackInfo;
+HPLcom/android/server/media/MediaSessionRecord;->access$4100(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+PLcom/android/server/media/MediaSessionRecord;->access$4100(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4100(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;Ljava/lang/String;IIII)V
+HPLcom/android/server/media/MediaSessionRecord;->access$4200(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionRecord;->access$4200(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionRecord;->access$4300(Lcom/android/server/media/MediaSessionRecord;)Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionRecord;->access$4300(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionRecord;->access$4400(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionRecord;->access$4500(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4600(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4700(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4700(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4800(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4800(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4900(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$4900(Lcom/android/server/media/MediaSessionRecord;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionRecord;->access$500(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$5000(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionRecord;->access$502(Lcom/android/server/media/MediaSessionRecord;I)I
+PLcom/android/server/media/MediaSessionRecord;->access$600(Lcom/android/server/media/MediaSessionRecord;)I
+PLcom/android/server/media/MediaSessionRecord;->access$602(Lcom/android/server/media/MediaSessionRecord;I)I
+HPLcom/android/server/media/MediaSessionRecord;->access$700(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionRecord;->access$800(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionService;
+HSPLcom/android/server/media/MediaSessionRecord;->access$900(Lcom/android/server/media/MediaSessionRecord;)Lcom/android/server/media/MediaSessionRecord$MessageHandler;
 PLcom/android/server/media/MediaSessionRecord;->adjustVolume(Ljava/lang/String;Ljava/lang/String;IILandroid/media/session/ISessionControllerCallback;ZIIZ)V
+HPLcom/android/server/media/MediaSessionRecord;->adjustVolume(Ljava/lang/String;Ljava/lang/String;IIZIIZ)V
 PLcom/android/server/media/MediaSessionRecord;->binderDied()V
-PLcom/android/server/media/MediaSessionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionRecord;->checkPlaybackActiveState(Z)Z
+HPLcom/android/server/media/MediaSessionRecord;->close()V
+HPLcom/android/server/media/MediaSessionRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/media/MediaSessionRecord;->getCallback()Landroid/media/session/ISessionCallback;
-PLcom/android/server/media/MediaSessionRecord;->getControllerBinder()Landroid/media/session/ISessionController;
-PLcom/android/server/media/MediaSessionRecord;->getControllerHolderIndexForCb(Landroid/media/session/ISessionControllerCallback;)I
+HPLcom/android/server/media/MediaSessionRecord;->getControllerHolderIndexForCb(Landroid/media/session/ISessionControllerCallback;)I
 PLcom/android/server/media/MediaSessionRecord;->getFlags()J
 PLcom/android/server/media/MediaSessionRecord;->getMediaButtonReceiver()Landroid/app/PendingIntent;
 PLcom/android/server/media/MediaSessionRecord;->getPackageName()Ljava/lang/String;
-PLcom/android/server/media/MediaSessionRecord;->getPlaybackState()Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord;->getPlaybackType()I
 HSPLcom/android/server/media/MediaSessionRecord;->getSessionBinder()Landroid/media/session/ISession;
+HPLcom/android/server/media/MediaSessionRecord;->getSessionPolicies()I
 PLcom/android/server/media/MediaSessionRecord;->getSessionToken()Landroid/media/session/MediaSession$Token;
-PLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState;
-PLcom/android/server/media/MediaSessionRecord;->getUid()I
+HPLcom/android/server/media/MediaSessionRecord;->getStateWithUpdatedPosition()Landroid/media/session/PlaybackState;
+HPLcom/android/server/media/MediaSessionRecord;->getUid()I
 HSPLcom/android/server/media/MediaSessionRecord;->getUserId()I
-PLcom/android/server/media/MediaSessionRecord;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
-PLcom/android/server/media/MediaSessionRecord;->hasFlag(I)Z
+HPLcom/android/server/media/MediaSessionRecord;->getVolumeAttributes()Landroid/media/session/MediaController$PlaybackInfo;
+HPLcom/android/server/media/MediaSessionRecord;->getVolumeStream(Landroid/media/AudioAttributes;)I
 HSPLcom/android/server/media/MediaSessionRecord;->isActive()Z
-PLcom/android/server/media/MediaSessionRecord;->isPlaybackActive()Z
-PLcom/android/server/media/MediaSessionRecord;->logCallbackException(Ljava/lang/String;Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;Ljava/lang/Exception;)V
+PLcom/android/server/media/MediaSessionRecord;->isClosed()Z
+PLcom/android/server/media/MediaSessionRecord;->isPlaybackLocal()Z
+PLcom/android/server/media/MediaSessionRecord;->isPlaybackTypeLocal()Z
+PLcom/android/server/media/MediaSessionRecord;->isSystemPriority()Z
+HPLcom/android/server/media/MediaSessionRecord;->logCallbackException(Ljava/lang/String;Lcom/android/server/media/MediaSessionRecord$ISessionControllerCallbackHolder;Ljava/lang/Exception;)V
 PLcom/android/server/media/MediaSessionRecord;->onDestroy()V
-PLcom/android/server/media/MediaSessionRecord;->postAdjustLocalVolume(IIILjava/lang/String;IIZZI)V
+HPLcom/android/server/media/MediaSessionRecord;->postAdjustLocalVolume(IIILjava/lang/String;IIZZI)V
 PLcom/android/server/media/MediaSessionRecord;->pushEvent(Ljava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/media/MediaSessionRecord;->pushExtrasUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushMetadataUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushPlaybackStateUpdate()V
+HPLcom/android/server/media/MediaSessionRecord;->pushExtrasUpdate()V
+HPLcom/android/server/media/MediaSessionRecord;->pushMetadataUpdate()V
+HPLcom/android/server/media/MediaSessionRecord;->pushPlaybackStateUpdate()V
 PLcom/android/server/media/MediaSessionRecord;->pushQueueTitleUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushQueueUpdate()V
-PLcom/android/server/media/MediaSessionRecord;->pushSessionDestroyed()V
-PLcom/android/server/media/MediaSessionRecord;->pushVolumeUpdate()V
+HPLcom/android/server/media/MediaSessionRecord;->pushQueueUpdate()V
+HPLcom/android/server/media/MediaSessionRecord;->pushSessionDestroyed()V
+HPLcom/android/server/media/MediaSessionRecord;->pushVolumeUpdate()V
 PLcom/android/server/media/MediaSessionRecord;->sendMediaButton(Ljava/lang/String;IIZLandroid/view/KeyEvent;ILandroid/os/ResultReceiver;)Z
+PLcom/android/server/media/MediaSessionRecord;->setVolumeTo(Ljava/lang/String;Ljava/lang/String;IIII)V
 HSPLcom/android/server/media/MediaSessionRecord;->toString()Ljava/lang/String;
+PLcom/android/server/media/MediaSessionService$FullUserRecord$CallbackRecord;-><init>(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/ICallback;I)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$OnMediaKeyEventSessionChangedListenerRecord;->binderDied()V
+HSPLcom/android/server/media/MediaSessionService$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionService;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$1700(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Ljava/util/HashMap;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$1800(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Ljava/util/HashMap;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$200(Lcom/android/server/media/MediaSessionService$FullUserRecord;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$2800(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnMediaKeyListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$2802(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnMediaKeyListener;)Landroid/media/session/IOnMediaKeyListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$2900(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnMediaKeyListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$2902(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnMediaKeyListener;)Landroid/media/session/IOnMediaKeyListener;
+HSPLcom/android/server/media/MediaSessionService$FullUserRecord;->access$300(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionStack;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3000(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnMediaKeyListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3100(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3102(Lcom/android/server/media/MediaSessionService$FullUserRecord;I)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3200(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3202(Lcom/android/server/media/MediaSessionService$FullUserRecord;I)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3300(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3302(Lcom/android/server/media/MediaSessionService$FullUserRecord;I)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3400(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3402(Lcom/android/server/media/MediaSessionService$FullUserRecord;I)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3500(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/view/KeyEvent;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3502(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/view/KeyEvent;)Landroid/view/KeyEvent;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3600(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3602(Lcom/android/server/media/MediaSessionService$FullUserRecord;I)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3700(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Z
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$3702(Lcom/android/server/media/MediaSessionService$FullUserRecord;Z)Z
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$400(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4300(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4500(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4500(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4600(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/content/ComponentName;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4600(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4700(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4700(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4800(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4800(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/content/ComponentName;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4900(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$4900(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/app/PendingIntent;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$500(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnVolumeKeyLongPressListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$500(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/util/SparseIntArray;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$5000(Lcom/android/server/media/MediaSessionService$FullUserRecord;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$5000(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/content/ComponentName;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$502(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnVolumeKeyLongPressListener;)Landroid/media/session/IOnVolumeKeyLongPressListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$600(Lcom/android/server/media/MediaSessionService$FullUserRecord;)Landroid/media/session/IOnVolumeKeyLongPressListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->access$602(Lcom/android/server/media/MediaSessionService$FullUserRecord;Landroid/media/session/IOnVolumeKeyLongPressListener;)Landroid/media/session/IOnVolumeKeyLongPressListener;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->addOnMediaKeyEventSessionChangedListenerLocked(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->destroySessionsForUserLocked(I)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->getComponentType(Landroid/content/ComponentName;)I
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->getMediaButtonSessionLocked()Lcom/android/server/media/MediaSessionRecordImpl;
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecordImpl;Lcom/android/server/media/MediaSessionRecordImpl;)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked()V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked(Landroid/media/session/ICallback;)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->pushAddressedPlayerChangedLocked(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->registerCallbackLocked(Landroid/media/session/ICallback;I)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->removeOnMediaKeyEventSessionChangedListener(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;)V
+PLcom/android/server/media/MediaSessionService$FullUserRecord;->unregisterCallbackLocked(Landroid/media/session/ICallback;)V
+HSPLcom/android/server/media/MediaSessionService$MessageHandler;-><init>(Lcom/android/server/media/MediaSessionService;)V
+HSPLcom/android/server/media/MediaSessionService$MessageHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(I)V
+HSPLcom/android/server/media/MediaSessionService$MessageHandler;->postSessionsChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$1;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Lcom/android/server/media/MediaSessionService$FullUserRecord;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$2;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Lcom/android/server/media/MediaSessionService$FullUserRecord;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$3;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;ZLjava/lang/String;IIIILjava/lang/String;)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl$3;->run()V
+HSPLcom/android/server/media/MediaSessionService$SessionManagerImpl$4;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;)V
+HSPLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Landroid/os/Handler;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->access$4400(Lcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;)I
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->access$4600(Lcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;)I
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->aquireWakeLockLocked()V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->onReceiveResult(ILandroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;->releaseWakeLockLocked()V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$MediaKeyListenerResultReceiver;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$MediaKeyListenerResultReceiver;-><init>(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Ljava/lang/String;IIZLandroid/view/KeyEvent;ZLcom/android/server/media/MediaSessionService$1;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$MediaKeyListenerResultReceiver;->dispatchMediaKeyEvent()V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl$MediaKeyListenerResultReceiver;->onReceiveResult(ILandroid/os/Bundle;)V
+HSPLcom/android/server/media/MediaSessionService$SessionManagerImpl;-><init>(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->access$5400(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;I)Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->access$5500(Lcom/android/server/media/MediaSessionService$SessionManagerImpl;Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addOnMediaKeyEventSessionChangedListener(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
+HSPLcom/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;->dispatchAdjustVolume(Ljava/lang/String;Ljava/lang/String;III)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchAdjustVolumeLocked(Ljava/lang/String;Ljava/lang/String;IIZIII)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchMediaKeyEvent(Ljava/lang/String;ZLandroid/view/KeyEvent;Z)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchMediaKeyEventLocked(Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEvent(Ljava/lang/String;Ljava/lang/String;ZLandroid/view/KeyEvent;IZ)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEventLocked(Ljava/lang/String;Ljava/lang/String;IIZLandroid/view/KeyEvent;IZ)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dispatchVolumeKeyEventToSessionAsSystemService(Ljava/lang/String;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/view/KeyEvent;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->handleVoiceKeyEventLocked(Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->hasMediaControlPermission(II)Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isGlobalPriorityActive()Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isUserSetupComplete()Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isValidLocalStreamType(I)Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->isVoiceKey(I)Z
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->registerCallback(Landroid/media/session/ICallback;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->removeOnMediaKeyEventSessionChangedListener(Landroid/media/session/IOnMediaKeyEventSessionChangedListener;)V
+HPLcom/android/server/media/MediaSessionService$SessionManagerImpl;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setOnMediaKeyListener(Landroid/media/session/IOnMediaKeyListener;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->setOnVolumeKeyLongPressListener(Landroid/media/session/IOnVolumeKeyLongPressListener;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->startVoiceInput(Z)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->unregisterCallback(Landroid/media/session/ICallback;)V
+PLcom/android/server/media/MediaSessionService$SessionManagerImpl;->unregisterRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
+HPLcom/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$SessionsListenerRecord;->binderDied()V
+HSPLcom/android/server/media/MediaSessionService$SettingsObserver;-><init>(Lcom/android/server/media/MediaSessionService;)V
+HSPLcom/android/server/media/MediaSessionService$SettingsObserver;-><init>(Lcom/android/server/media/MediaSessionService;Lcom/android/server/media/MediaSessionService$1;)V
+HSPLcom/android/server/media/MediaSessionService$SettingsObserver;->access$100(Lcom/android/server/media/MediaSessionService$SettingsObserver;)V
+HSPLcom/android/server/media/MediaSessionService$SettingsObserver;->observe()V
+HSPLcom/android/server/media/MediaSessionService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/media/MediaSessionService;-><clinit>()V
 HSPLcom/android/server/media/MediaSessionService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/media/MediaSessionService;->monitor()V
+PLcom/android/server/media/MediaSessionService;->access$1000(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseIntArray;
+PLcom/android/server/media/MediaSessionService;->access$1000(Lcom/android/server/media/MediaSessionService;I)Ljava/lang/String;
+PLcom/android/server/media/MediaSessionService;->access$1100(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseArray;
+PLcom/android/server/media/MediaSessionService;->access$1100(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionService;->access$1100(Lcom/android/server/media/MediaSessionService;I)Ljava/lang/String;
+HSPLcom/android/server/media/MediaSessionService;->access$1200(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler;
+PLcom/android/server/media/MediaSessionService;->access$1200(Lcom/android/server/media/MediaSessionService;)Ljava/lang/Object;
+PLcom/android/server/media/MediaSessionService;->access$1300(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+HSPLcom/android/server/media/MediaSessionService;->access$1300(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$MessageHandler;
+PLcom/android/server/media/MediaSessionService;->access$1400(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->access$1400(Lcom/android/server/media/MediaSessionService;)Z
+PLcom/android/server/media/MediaSessionService;->access$1500(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$1500(Lcom/android/server/media/MediaSessionService;)Z
+PLcom/android/server/media/MediaSessionService;->access$1600(Lcom/android/server/media/MediaSessionService;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionService;->access$1600(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$1700(Lcom/android/server/media/MediaSessionService;)Landroid/content/Context;
+PLcom/android/server/media/MediaSessionService;->access$1900(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
+PLcom/android/server/media/MediaSessionService;->access$2000(Lcom/android/server/media/MediaSessionService;)Ljava/util/ArrayList;
+HSPLcom/android/server/media/MediaSessionService;->access$2100(Lcom/android/server/media/MediaSessionService;)V
+PLcom/android/server/media/MediaSessionService;->access$2200(Lcom/android/server/media/MediaSessionService;)V
+HSPLcom/android/server/media/MediaSessionService;->access$2200(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;I)V
+HSPLcom/android/server/media/MediaSessionService;->access$2300(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;->access$2300(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;I)V
+PLcom/android/server/media/MediaSessionService;->access$2400(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/SessionPolicyProvider;
+PLcom/android/server/media/MediaSessionService;->access$2400(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->access$2400(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService;->access$2400(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;->access$2500(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+HPLcom/android/server/media/MediaSessionService;->access$2500(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService;->access$2500(Lcom/android/server/media/MediaSessionService;IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;I)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$2500(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->access$2600(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+HPLcom/android/server/media/MediaSessionService;->access$2600(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionService;->access$2600(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->access$2700(Lcom/android/server/media/MediaSessionService;I)Ljava/util/List;
+HPLcom/android/server/media/MediaSessionService;->access$2700(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->access$2800(Lcom/android/server/media/MediaSessionService;Landroid/media/session/IActiveSessionsListener;)I
+PLcom/android/server/media/MediaSessionService;->access$3000(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->access$3000(Lcom/android/server/media/MediaSessionService;Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$3100(Lcom/android/server/media/MediaSessionService;I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->access$3100(Lcom/android/server/media/MediaSessionService;Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$3200(Lcom/android/server/media/MediaSessionService;II)Z
+PLcom/android/server/media/MediaSessionService;->access$3200(Lcom/android/server/media/MediaSessionService;Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->access$3300(Lcom/android/server/media/MediaSessionService;II)Z
+PLcom/android/server/media/MediaSessionService;->access$3800(Lcom/android/server/media/MediaSessionService;)I
+PLcom/android/server/media/MediaSessionService;->access$3800(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionService;->access$3900(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseArray;
+PLcom/android/server/media/MediaSessionService;->access$3900(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionService;->access$4000(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseArray;
+HPLcom/android/server/media/MediaSessionService;->access$4000(Lcom/android/server/media/MediaSessionService;Landroid/content/ComponentName;III)V
+PLcom/android/server/media/MediaSessionService;->access$4000(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionService;->access$4100(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseArray;
+PLcom/android/server/media/MediaSessionService;->access$4100(Lcom/android/server/media/MediaSessionService;Landroid/content/ComponentName;III)V
+PLcom/android/server/media/MediaSessionService;->access$4100(Lcom/android/server/media/MediaSessionService;Ljava/lang/String;II)V
+PLcom/android/server/media/MediaSessionService;->access$4200(Lcom/android/server/media/MediaSessionService;)Landroid/media/AudioManagerInternal;
+PLcom/android/server/media/MediaSessionService;->access$4200(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseArray;
+HPLcom/android/server/media/MediaSessionService;->access$4200(Lcom/android/server/media/MediaSessionService;Landroid/content/ComponentName;III)V
+PLcom/android/server/media/MediaSessionService;->access$4300(Lcom/android/server/media/MediaSessionService;)Landroid/media/AudioManagerInternal;
+PLcom/android/server/media/MediaSessionService;->access$4300(Lcom/android/server/media/MediaSessionService;Landroid/content/ComponentName;III)V
+PLcom/android/server/media/MediaSessionService;->access$4400(Lcom/android/server/media/MediaSessionService;)Landroid/media/AudioManagerInternal;
+PLcom/android/server/media/MediaSessionService;->access$4500(Lcom/android/server/media/MediaSessionService;)Landroid/media/AudioManagerInternal;
+PLcom/android/server/media/MediaSessionService;->access$4700(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/MediaKeyDispatcher;
+PLcom/android/server/media/MediaSessionService;->access$4900(Lcom/android/server/media/MediaSessionService;)Landroid/app/KeyguardManager;
+PLcom/android/server/media/MediaSessionService;->access$5000(Lcom/android/server/media/MediaSessionService;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/media/MediaSessionService;->access$5100(Lcom/android/server/media/MediaSessionService;)Z
+PLcom/android/server/media/MediaSessionService;->access$5200(Lcom/android/server/media/MediaSessionService;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/media/MediaSessionService;->access$5300(Lcom/android/server/media/MediaSessionService;)Z
+PLcom/android/server/media/MediaSessionService;->access$5500(Lcom/android/server/media/MediaSessionService;)Z
+HSPLcom/android/server/media/MediaSessionService;->access$5500(Lcom/android/server/media/MediaSessionService;I)V
+PLcom/android/server/media/MediaSessionService;->access$5600(Lcom/android/server/media/MediaSessionService;I)V
+HPLcom/android/server/media/MediaSessionService;->access$5700(Lcom/android/server/media/MediaSessionService;I)V
+HPLcom/android/server/media/MediaSessionService;->access$5900(Lcom/android/server/media/MediaSessionService;I)V
+HSPLcom/android/server/media/MediaSessionService;->access$600(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlayerStateMonitor;
+HSPLcom/android/server/media/MediaSessionService;->access$700(Lcom/android/server/media/MediaSessionService;)Landroid/content/ContentResolver;
+HSPLcom/android/server/media/MediaSessionService;->access$700(Lcom/android/server/media/MediaSessionService;)Lcom/android/server/media/AudioPlayerStateMonitor;
+HSPLcom/android/server/media/MediaSessionService;->access$800(Lcom/android/server/media/MediaSessionService;)Landroid/content/ContentResolver;
+PLcom/android/server/media/MediaSessionService;->access$800(Lcom/android/server/media/MediaSessionService;Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionService;->access$900(Lcom/android/server/media/MediaSessionService;)Landroid/util/SparseIntArray;
+PLcom/android/server/media/MediaSessionService;->access$900(Lcom/android/server/media/MediaSessionService;Lcom/android/server/media/MediaSessionRecordImpl;)V
+HSPLcom/android/server/media/MediaSessionService;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
+HPLcom/android/server/media/MediaSessionService;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;I)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->createSessionLocked(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->destroySession(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService;->destroySessionLocked(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService;->destroySessionLocked(Lcom/android/server/media/MediaSessionRecordImpl;)V
+HPLcom/android/server/media/MediaSessionService;->enforceMediaPermissions(Landroid/content/ComponentName;III)V
+HSPLcom/android/server/media/MediaSessionService;->enforcePackageName(Ljava/lang/String;I)V
+HSPLcom/android/server/media/MediaSessionService;->enforcePhoneStatePermission(II)V
+PLcom/android/server/media/MediaSessionService;->enforceStatusBarServicePermission(Ljava/lang/String;II)V
+HPLcom/android/server/media/MediaSessionService;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I
+HSPLcom/android/server/media/MediaSessionService;->getActiveSessionsLocked(I)Ljava/util/List;
+HSPLcom/android/server/media/MediaSessionService;->getAudioService()Landroid/media/IAudioService;
+PLcom/android/server/media/MediaSessionService;->getCallingPackageName(I)Ljava/lang/String;
+HSPLcom/android/server/media/MediaSessionService;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionService$FullUserRecord;
+PLcom/android/server/media/MediaSessionService;->getMediaSessionRecordLocked(Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionService;->hasMediaControlPermission(II)Z
+HPLcom/android/server/media/MediaSessionService;->hasStatusBarServicePermission(II)Z
+HPLcom/android/server/media/MediaSessionService;->isEnabledNotificationListener(Landroid/content/ComponentName;II)Z
+HSPLcom/android/server/media/MediaSessionService;->isGlobalPriorityActiveLocked()Z
+HPLcom/android/server/media/MediaSessionService;->lambda$onStart$0$MediaSessionService(Landroid/media/AudioPlaybackConfiguration;Z)V
+HPLcom/android/server/media/MediaSessionService;->monitor()V
+PLcom/android/server/media/MediaSessionService;->notifyRemoteVolumeChanged(ILcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionService;->onMediaButtonReceiverChanged(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService;->onMediaButtonReceiverChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+HPLcom/android/server/media/MediaSessionService;->onSessionActiveStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
+HPLcom/android/server/media/MediaSessionService;->onSessionDied(Lcom/android/server/media/MediaSessionRecordImpl;)V
+HPLcom/android/server/media/MediaSessionService;->onSessionPlaybackStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;Z)V
+HPLcom/android/server/media/MediaSessionService;->onSessionPlaybackTypeChanged(Lcom/android/server/media/MediaSessionRecord;)V
+HPLcom/android/server/media/MediaSessionService;->onSessionPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V
 HSPLcom/android/server/media/MediaSessionService;->onStart()V
 HSPLcom/android/server/media/MediaSessionService;->onStartUser(I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;-><init>(Lcom/android/server/media/MediaSessionServiceImpl;I)V
-PLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;->getComponentType(Landroid/content/ComponentName;)I
-PLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;->onMediaButtonSessionChanged(Lcom/android/server/media/MediaSessionRecord;Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;->pushAddressedPlayerChangedLocked()V
-PLcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;->rememberMediaButtonReceiverLocked(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$MessageHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$1;->binderDied()V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$4;->run()V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$KeyEventWakeLockReceiver;->onReceiveResult(ILandroid/os/Bundle;)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$KeyEventWakeLockReceiver;->onSendFinished(Landroid/app/PendingIntent;Landroid/content/Intent;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->addSessionsListener(Landroid/media/session/IActiveSessionsListener;Landroid/content/ComponentName;I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->createSession(Ljava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;I)Landroid/media/session/ISession;
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchAdjustVolumeLocked(Ljava/lang/String;Ljava/lang/String;IIZIII)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchMediaKeyEvent(Ljava/lang/String;ZLandroid/view/KeyEvent;Z)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchMediaKeyEventLocked(Ljava/lang/String;IIZLandroid/view/KeyEvent;Z)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchVolumeKeyEvent(Ljava/lang/String;Ljava/lang/String;ZLandroid/view/KeyEvent;IZ)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchVolumeKeyEventLocked(Ljava/lang/String;Ljava/lang/String;IIZLandroid/view/KeyEvent;IZ)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dispatchVolumeKeyEventToSessionAsSystemService(Ljava/lang/String;Ljava/lang/String;Landroid/media/session/MediaSession$Token;Landroid/view/KeyEvent;)V
-PLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->getSessions(Landroid/content/ComponentName;I)Ljava/util/List;
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->registerRemoteVolumeController(Landroid/media/IRemoteVolumeController;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->removeSessionsListener(Landroid/media/session/IActiveSessionsListener;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;->setCallback(Landroid/media/session/ICallback;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl$SessionsListenerRecord;->binderDied()V
-PLcom/android/server/media/MediaSessionServiceImpl$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->access$2100(Lcom/android/server/media/MediaSessionServiceImpl;Ljava/lang/String;I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->access$3800(Lcom/android/server/media/MediaSessionServiceImpl;Ljava/lang/String;II)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->access$4000(Lcom/android/server/media/MediaSessionServiceImpl;Landroid/content/ComponentName;III)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->createSessionInternal(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
-HSPLcom/android/server/media/MediaSessionServiceImpl;->createSessionLocked(IIILjava/lang/String;Landroid/media/session/ISessionCallback;Ljava/lang/String;Landroid/os/Bundle;)Lcom/android/server/media/MediaSessionRecord;
-PLcom/android/server/media/MediaSessionServiceImpl;->destroySession(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->destroySessionLocked(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->enforceMediaPermissions(Landroid/content/ComponentName;III)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->enforcePackageName(Ljava/lang/String;I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->enforcePhoneStatePermission(II)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->findIndexOfSessionsListenerLocked(Landroid/media/session/IActiveSessionsListener;)I
-HSPLcom/android/server/media/MediaSessionServiceImpl;->getActiveSessionsLocked(I)Ljava/util/List;
-HSPLcom/android/server/media/MediaSessionServiceImpl;->getContext()Landroid/content/Context;
-PLcom/android/server/media/MediaSessionServiceImpl;->getFullUserRecordLocked(I)Lcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;
-HSPLcom/android/server/media/MediaSessionServiceImpl;->getServiceBinder()Landroid/os/IBinder;
-PLcom/android/server/media/MediaSessionServiceImpl;->isEnabledNotificationListener(Landroid/content/ComponentName;II)Z
-PLcom/android/server/media/MediaSessionServiceImpl;->isGlobalPriorityActiveLocked()Z
-PLcom/android/server/media/MediaSessionServiceImpl;->lambda$onStart$0$MediaSessionServiceImpl(Landroid/media/AudioPlaybackConfiguration;Z)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->monitor()V
-PLcom/android/server/media/MediaSessionServiceImpl;->notifyRemoteVolumeChanged(ILcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->onMediaButtonReceiverChanged(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->onSessionPlaybackTypeChanged(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->onSessionPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->onStart()V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->onStartUser(I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->pushRemoteVolumeUpdateLocked(I)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->pushSessionsChanged(I)V
-PLcom/android/server/media/MediaSessionServiceImpl;->sessionDied(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->setGlobalPrioritySession(Lcom/android/server/media/MediaSessionRecord;)V
-PLcom/android/server/media/MediaSessionServiceImpl;->updateActiveSessionListeners()V
-PLcom/android/server/media/MediaSessionServiceImpl;->updateSession(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionServiceImpl;->updateUser()V
-HSPLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecord;)Z
+PLcom/android/server/media/MediaSessionService;->onStopUser(I)V
+HSPLcom/android/server/media/MediaSessionService;->pushRemoteVolumeUpdateLocked(I)V
+HSPLcom/android/server/media/MediaSessionService;->pushSession1Changed(I)V
+HPLcom/android/server/media/MediaSessionService;->pushSessionsChanged(I)V
+PLcom/android/server/media/MediaSessionService;->sessionDied(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionService;->setGlobalPrioritySession(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionService;->updateActiveSessionListeners()V
+HPLcom/android/server/media/MediaSessionService;->updateSession(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionService;->updateUser()V
+HSPLcom/android/server/media/MediaSessionStack;-><clinit>()V
+HSPLcom/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/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionStack;->addSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
+HSPLcom/android/server/media/MediaSessionStack;->clearCache(I)V
+PLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecord;)Z
+HSPLcom/android/server/media/MediaSessionStack;->contains(Lcom/android/server/media/MediaSessionRecordImpl;)Z
+PLcom/android/server/media/MediaSessionStack;->containsState(I[I)Z
 PLcom/android/server/media/MediaSessionStack;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecord;
-HSPLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/ArrayList;
-HSPLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecord;
+HPLcom/android/server/media/MediaSessionStack;->findMediaButtonSession(I)Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/ArrayList;
+HSPLcom/android/server/media/MediaSessionStack;->getActiveSessions(I)Ljava/util/List;
+PLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecord;
+HSPLcom/android/server/media/MediaSessionStack;->getDefaultRemoteSession(I)Lcom/android/server/media/MediaSessionRecordImpl;
 PLcom/android/server/media/MediaSessionStack;->getDefaultVolumeSession()Lcom/android/server/media/MediaSessionRecord;
-HSPLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecord;
-PLcom/android/server/media/MediaSessionStack;->getMediaSessionRecord(Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
-HSPLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList;
+HPLcom/android/server/media/MediaSessionStack;->getDefaultVolumeSession()Lcom/android/server/media/MediaSessionRecordImpl;
+PLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionStack;->getMediaButtonSession()Lcom/android/server/media/MediaSessionRecordImpl;
+HPLcom/android/server/media/MediaSessionStack;->getMediaSessionRecord(Landroid/media/session/MediaSession$Token;)Lcom/android/server/media/MediaSessionRecord;
+PLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/ArrayList;
+HSPLcom/android/server/media/MediaSessionStack;->getPriorityList(ZI)Ljava/util/List;
+HPLcom/android/server/media/MediaSessionStack;->onPlaybackStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;Z)V
 PLcom/android/server/media/MediaSessionStack;->onPlaystateChanged(Lcom/android/server/media/MediaSessionRecord;II)V
+PLcom/android/server/media/MediaSessionStack;->onSessionActiveStateChanged(Lcom/android/server/media/MediaSessionRecordImpl;)V
 PLcom/android/server/media/MediaSessionStack;->onSessionStateChange(Lcom/android/server/media/MediaSessionRecord;)V
-HSPLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecord;)V
+PLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecord;)V
+HSPLcom/android/server/media/MediaSessionStack;->removeSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
+PLcom/android/server/media/MediaSessionStack;->shouldUpdatePriority(II)Z
+PLcom/android/server/media/MediaSessionStack;->updateMediaButtonSession(Lcom/android/server/media/MediaSessionRecordImpl;)V
 HSPLcom/android/server/media/MediaSessionStack;->updateMediaButtonSessionIfNeeded()V
-PLcom/android/server/media/RemoteDisplayProviderProxy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$1;->run()V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection$1;->run()V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection$3;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection$3;->run()V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy;Landroid/media/IRemoteDisplayProvider;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->connect(Ljava/lang/String;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->disconnect(Ljava/lang/String;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->dispose()V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->postStateChanged(Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->register()Z
+PLcom/android/server/media/RemoteDisplayProviderProxy$Connection;->setDiscoveryMode(I)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$ProviderCallback;-><init>(Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy$ProviderCallback;->dispose()V
+PLcom/android/server/media/RemoteDisplayProviderProxy$ProviderCallback;->onStateChanged(Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;-><clinit>()V
+PLcom/android/server/media/RemoteDisplayProviderProxy;-><init>(Landroid/content/Context;Landroid/content/ComponentName;I)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$002(Lcom/android/server/media/RemoteDisplayProviderProxy;Z)Z
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$100(Lcom/android/server/media/RemoteDisplayProviderProxy;)Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$200(Lcom/android/server/media/RemoteDisplayProviderProxy;)Landroid/media/RemoteDisplayState;
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$300(Lcom/android/server/media/RemoteDisplayProviderProxy;Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$400(Lcom/android/server/media/RemoteDisplayProviderProxy;)Landroid/os/Handler;
+PLcom/android/server/media/RemoteDisplayProviderProxy;->access$600(Lcom/android/server/media/RemoteDisplayProviderProxy;Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->bind()V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->disconnect()V
+HPLcom/android/server/media/RemoteDisplayProviderProxy;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->getDisplayState()Landroid/media/RemoteDisplayState;
+PLcom/android/server/media/RemoteDisplayProviderProxy;->getFlattenedComponentName()Ljava/lang/String;
+HPLcom/android/server/media/RemoteDisplayProviderProxy;->hasComponentName(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/media/RemoteDisplayProviderProxy;->onConnectionReady(Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->onDisplayStateChanged(Lcom/android/server/media/RemoteDisplayProviderProxy$Connection;Landroid/media/RemoteDisplayState;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->rebindIfDisconnected()V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->setCallback(Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->setDiscoveryMode(I)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->setDisplayState(Landroid/media/RemoteDisplayState;)V
 PLcom/android/server/media/RemoteDisplayProviderProxy;->setSelectedDisplay(Ljava/lang/String;)V
-PLcom/android/server/media/RemoteDisplayProviderProxy;->start()V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->shouldBind()Z
+HPLcom/android/server/media/RemoteDisplayProviderProxy;->start()V
 PLcom/android/server/media/RemoteDisplayProviderProxy;->unbind()V
-PLcom/android/server/media/RemoteDisplayProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/media/RemoteDisplayProviderProxy;->updateBinding()V
+HSPLcom/android/server/media/RemoteDisplayProviderWatcher$1;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
+HPLcom/android/server/media/RemoteDisplayProviderWatcher$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/media/RemoteDisplayProviderWatcher$2;-><init>(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
 HSPLcom/android/server/media/RemoteDisplayProviderWatcher$2;->run()V
+HSPLcom/android/server/media/RemoteDisplayProviderWatcher;-><clinit>()V
 HSPLcom/android/server/media/RemoteDisplayProviderWatcher;-><init>(Landroid/content/Context;Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;Landroid/os/Handler;I)V
+PLcom/android/server/media/RemoteDisplayProviderWatcher;->access$000()Z
+HSPLcom/android/server/media/RemoteDisplayProviderWatcher;->access$100(Lcom/android/server/media/RemoteDisplayProviderWatcher;)V
 PLcom/android/server/media/RemoteDisplayProviderWatcher;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/media/RemoteDisplayProviderWatcher;->findProvider(Ljava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/media/RemoteDisplayProviderWatcher;->scanPackages()V
 HSPLcom/android/server/media/RemoteDisplayProviderWatcher;->start()V
-PLcom/android/server/media/RemoteDisplayProviderWatcher;->verifyServiceTrusted(Landroid/content/pm/ServiceInfo;)Z
-HSPLcom/android/server/media/projection/MediaProjectionManagerService$2;->binderDied()V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+HPLcom/android/server/media/RemoteDisplayProviderWatcher;->verifyServiceTrusted(Landroid/content/pm/ServiceInfo;)Z
+PLcom/android/server/media/SystemMediaRoute2Provider$1$1;-><init>(Lcom/android/server/media/SystemMediaRoute2Provider$1;Landroid/media/AudioRoutesInfo;)V
+PLcom/android/server/media/SystemMediaRoute2Provider$1$1;->run()V
+PLcom/android/server/media/SystemMediaRoute2Provider$1;-><init>(Lcom/android/server/media/SystemMediaRoute2Provider;)V
+PLcom/android/server/media/SystemMediaRoute2Provider$1;->dispatchAudioRoutesChanged(Landroid/media/AudioRoutesInfo;)V
+PLcom/android/server/media/SystemMediaRoute2Provider;-><clinit>()V
+PLcom/android/server/media/SystemMediaRoute2Provider;-><init>(Landroid/content/Context;Lcom/android/server/media/MediaRoute2Provider$Callback;)V
+PLcom/android/server/media/SystemMediaRoute2Provider;->access$000(Lcom/android/server/media/SystemMediaRoute2Provider;)Landroid/os/Handler;
+PLcom/android/server/media/SystemMediaRoute2Provider;->initializeRoutes()V
+PLcom/android/server/media/SystemMediaRoute2Provider;->publishRoutes()V
+PLcom/android/server/media/SystemMediaRoute2Provider;->updateAudioRoutes(Landroid/media/AudioRoutesInfo;)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundActivitiesChanged(IIZ)V
+HPLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundServicesChanged(III)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$1;->onProcessDied(II)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$2;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$2;->binderDied()V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$1;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->checkPermission(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->createProjection(ILjava/lang/String;IZ)Landroid/media/projection/IMediaProjection;
 PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->hasProjectionPermission(ILjava/lang/String;)Z
+PLcom/android/server/media/projection/MediaProjectionManagerService$BinderService;->isValidMediaProjection(Landroid/media/projection/IMediaProjection;)Z
 HSPLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;-><init>()V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->add(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->remove(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->add(Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->add(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->dispatchStart(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->dispatchStop(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->remove(Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;->remove(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$ClientStopCallback;-><init>(Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$ClientStopCallback;->run()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection$1;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;IILjava/lang/String;IZ)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->applyVirtualDisplayFlags(I)I
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->canProjectSecureVideo()Z
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->canProjectVideo()Z
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->getProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->registerCallback(Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->requiresForegroundService()Z
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->start(Landroid/media/projection/IMediaProjectionCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->stop()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;->unregisterCallback(Landroid/media/projection/IMediaProjectionCallback;)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;)V
+HSPLcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;-><init>(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$1;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$WatcherStartCallback;-><init>(Landroid/media/projection/MediaProjectionInfo;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$WatcherStartCallback;->run()V
+PLcom/android/server/media/projection/MediaProjectionManagerService$WatcherStopCallback;-><init>(Landroid/media/projection/MediaProjectionInfo;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService$WatcherStopCallback;->run()V
 HSPLcom/android/server/media/projection/MediaProjectionManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1000(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1100(Lcom/android/server/media/projection/MediaProjectionManagerService;Ljava/io/PrintWriter;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1200(Lcom/android/server/media/projection/MediaProjectionManagerService;)Ljava/lang/Object;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1400(Lcom/android/server/media/projection/MediaProjectionManagerService;)Lcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1500(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$1600(Lcom/android/server/media/projection/MediaProjectionManagerService;Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$200(Lcom/android/server/media/projection/MediaProjectionManagerService;III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$300(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$400(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/app/AppOpsManager;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$500(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/content/Context;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$600(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$700(Lcom/android/server/media/projection/MediaProjectionManagerService;Landroid/os/IBinder;)Z
+PLcom/android/server/media/projection/MediaProjectionManagerService;->access$800(Lcom/android/server/media/projection/MediaProjectionManagerService;)Landroid/media/projection/MediaProjectionInfo;
+PLcom/android/server/media/projection/MediaProjectionManagerService;->addCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->dispatchStart(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->dispatchStop(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
 PLcom/android/server/media/projection/MediaProjectionManagerService;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
-HSPLcom/android/server/media/projection/MediaProjectionManagerService;->linkDeathRecipientLocked(Landroid/media/projection/IMediaProjectionWatcherCallback;Landroid/os/IBinder$DeathRecipient;)V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->getActiveProjectionInfo()Landroid/media/projection/MediaProjectionInfo;
+HPLcom/android/server/media/projection/MediaProjectionManagerService;->handleForegroundServicesChanged(III)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->isValidMediaProjection(Landroid/os/IBinder;)Z
+PLcom/android/server/media/projection/MediaProjectionManagerService;->linkDeathRecipientLocked(Landroid/media/projection/IMediaProjectionWatcherCallback;Landroid/os/IBinder$DeathRecipient;)V
+HPLcom/android/server/media/projection/MediaProjectionManagerService;->monitor()V
 HSPLcom/android/server/media/projection/MediaProjectionManagerService;->onStart()V
-HSPLcom/android/server/media/projection/MediaProjectionManagerService;->removeCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->removeCallback(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->startProjectionLocked(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->stopProjectionLocked(Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;)V
+PLcom/android/server/media/projection/MediaProjectionManagerService;->unlinkDeathRecipientLocked(Landroid/media/projection/IMediaProjectionWatcherCallback;)V
+HSPLcom/android/server/midi/MidiService$1;-><init>(Lcom/android/server/midi/MidiService;)V
 PLcom/android/server/midi/MidiService$1;->onPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/midi/MidiService$1;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/midi/MidiService$1;->onPackageModified(Ljava/lang/String;)V
 PLcom/android/server/midi/MidiService$1;->onPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/midi/MidiService$Device;-><init>(Lcom/android/server/midi/MidiService;Landroid/media/midi/IMidiDeviceServer;Landroid/media/midi/MidiDeviceInfo;Landroid/content/pm/ServiceInfo;I)V
+PLcom/android/server/midi/MidiService$Device;->getPackageName()Ljava/lang/String;
+PLcom/android/server/midi/MidiService$Device;->setDeviceServer(Landroid/media/midi/IMidiDeviceServer;)V
 HSPLcom/android/server/midi/MidiService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/midi/MidiService$Lifecycle;->onStart()V
-HSPLcom/android/server/midi/MidiService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/midi/MidiService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/midi/MidiService;-><clinit>()V
 HSPLcom/android/server/midi/MidiService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V
-PLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V
+PLcom/android/server/midi/MidiService;->access$000(Lcom/android/server/midi/MidiService;)V
+HPLcom/android/server/midi/MidiService;->access$100(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V
+PLcom/android/server/midi/MidiService;->access$200(Lcom/android/server/midi/MidiService;Ljava/lang/String;)V
+PLcom/android/server/midi/MidiService;->addDeviceLocked(III[Ljava/lang/String;[Ljava/lang/String;Landroid/os/Bundle;Landroid/media/midi/IMidiDeviceServer;Landroid/content/pm/ServiceInfo;ZI)Landroid/media/midi/MidiDeviceInfo;
+HPLcom/android/server/midi/MidiService;->addPackageDeviceServer(Landroid/content/pm/ServiceInfo;)V
+HPLcom/android/server/midi/MidiService;->addPackageDeviceServers(Ljava/lang/String;)V
 PLcom/android/server/midi/MidiService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/midi/MidiService;->onUnlockUser()V
-PLcom/android/server/midi/MidiService;->removePackageDeviceServers(Ljava/lang/String;)V
+PLcom/android/server/midi/MidiService;->onUnlockUser()V
+HPLcom/android/server/midi/MidiService;->removePackageDeviceServers(Ljava/lang/String;)V
+HSPLcom/android/server/net/-$$Lambda$NetworkPolicyManagerService$HDTUqowtgL-W_V0Kq6psXLWC9ws;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/concurrent/CountDownLatch;)V
 HSPLcom/android/server/net/-$$Lambda$NetworkPolicyManagerService$HDTUqowtgL-W_V0Kq6psXLWC9ws;->run()V
+HSPLcom/android/server/net/-$$Lambda$NetworkStatsService$KVH4Y9nH53_gEfrhunDFp_O6ExY;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HPLcom/android/server/net/-$$Lambda$NetworkStatsService$KVH4Y9nH53_gEfrhunDFp_O6ExY;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/net/-$$Lambda$NetworkStatsService$NetworkStatsManagerInternalImpl$5TwpV7cRVx_8Ch3sTJ1XxcGYaFo;-><init>(Ljava/lang/String;J)V
+HPLcom/android/server/net/-$$Lambda$NetworkStatsService$NetworkStatsManagerInternalImpl$5TwpV7cRVx_8Ch3sTJ1XxcGYaFo;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/net/-$$Lambda$NetworkStatsService$rLCnfQluyJtbXZ2vSn6SQAdNPMc;-><init>(Landroid/net/NetworkStats;I)V
+HPLcom/android/server/net/-$$Lambda$NetworkStatsService$rLCnfQluyJtbXZ2vSn6SQAdNPMc;->accept(Ljava/lang/Object;)V
+PLcom/android/server/net/-$$Lambda$NetworkStatsService$xfTbcb80CcmFJlvul1xYQmewxlg;-><clinit>()V
+PLcom/android/server/net/-$$Lambda$NetworkStatsService$xfTbcb80CcmFJlvul1xYQmewxlg;-><init>()V
+HPLcom/android/server/net/-$$Lambda$NetworkStatsService$xfTbcb80CcmFJlvul1xYQmewxlg;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/net/DelayedDiskWrite;-><init>()V
 HSPLcom/android/server/net/IpConfigStore;-><init>()V
+HSPLcom/android/server/net/IpConfigStore;-><init>(Lcom/android/server/net/DelayedDiskWrite;)V
+HSPLcom/android/server/net/IpConfigStore;->loge(Ljava/lang/String;)V
 HSPLcom/android/server/net/IpConfigStore;->readIpConfigurations(Ljava/lang/String;)Landroid/util/ArrayMap;
+HSPLcom/android/server/net/LockdownVpnTracker;->isEnabled()Z
+HPLcom/android/server/net/NetworkIdentitySet;-><init>()V
 HSPLcom/android/server/net/NetworkIdentitySet;-><init>(Ljava/io/DataInputStream;)V
-HSPLcom/android/server/net/NetworkIdentitySet;->areAllMembersOnDefaultNetwork()Z
-PLcom/android/server/net/NetworkIdentitySet;->compareTo(Lcom/android/server/net/NetworkIdentitySet;)I
-HSPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberMetered()Z
-HSPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberRoaming()Z
-PLcom/android/server/net/NetworkIdentitySet;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/net/NetworkIdentitySet;->writeToStream(Ljava/io/DataOutputStream;)V
+HPLcom/android/server/net/NetworkIdentitySet;->areAllMembersOnDefaultNetwork()Z
+HPLcom/android/server/net/NetworkIdentitySet;->compareTo(Lcom/android/server/net/NetworkIdentitySet;)I
+HPLcom/android/server/net/NetworkIdentitySet;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberMetered()Z
+HPLcom/android/server/net/NetworkIdentitySet;->isAnyMemberRoaming()Z
+HSPLcom/android/server/net/NetworkIdentitySet;->readOptionalString(Ljava/io/DataInputStream;)Ljava/lang/String;
+HPLcom/android/server/net/NetworkIdentitySet;->writeOptionalString(Ljava/io/DataOutputStream;Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkIdentitySet;->writeToStream(Ljava/io/DataOutputStream;)V
 HSPLcom/android/server/net/NetworkPolicyLogger$Data;-><init>()V
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->getContent(Lcom/android/server/net/NetworkPolicyLogger$Data;)Ljava/lang/String;
-PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->reverseDump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/net/NetworkPolicyLogger$Data;->reset()V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><clinit>()V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;-><init>(I)V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->appIdleStateChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->appIdleWlChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->deviceIdleModeEnabled(Z)V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->event(Ljava/lang/String;)V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->firewallChainEnabled(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->formatDate(J)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->getContent(Lcom/android/server/net/NetworkPolicyLogger$Data;)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->meterednessChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->networkBlocked(II)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->restrictBackgroundChanged(ZZ)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->reverseDump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->tempPowerSaveWlChanged(IZ)V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidFirewallRuleChanged(III)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidPolicyChanged(III)V
+HSPLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->uidStateChanged(IIJ)V
+PLcom/android/server/net/NetworkPolicyLogger$LogBuffer;->userRemoved(I)V
+HSPLcom/android/server/net/NetworkPolicyLogger;-><clinit>()V
 HSPLcom/android/server/net/NetworkPolicyLogger;-><init>()V
+PLcom/android/server/net/NetworkPolicyLogger;->access$000(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$1000(III)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$1100(IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$200(IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$500(Z)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$600(IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$700(IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->access$900(IZ)Ljava/lang/String;
 HSPLcom/android/server/net/NetworkPolicyLogger;->appIdleStateChanged(IZ)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->appIdleWlChanged(IZ)V
-PLcom/android/server/net/NetworkPolicyLogger;->deviceIdleModeEnabled(Z)V
+HPLcom/android/server/net/NetworkPolicyLogger;->appIdleWlChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger;->deviceIdleModeEnabled(Z)V
 PLcom/android/server/net/NetworkPolicyLogger;->dumpLogs(Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/net/NetworkPolicyLogger;->firewallChainEnabled(IZ)V
 HSPLcom/android/server/net/NetworkPolicyLogger;->firewallRulesChanged(I[I[I)V
-PLcom/android/server/net/NetworkPolicyLogger;->getBlockedReason(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getAppIdleChangedLog(IZ)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger;->getAppIdleWlChangedLog(IZ)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger;->getBlockedReason(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getDeviceIdleModeEnabled(Z)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getFirewallChainEnabledLog(IZ)Ljava/lang/String;
+HSPLcom/android/server/net/NetworkPolicyLogger;->getFirewallChainName(I)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getFirewallRuleName(I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger;->getMeterednessChangedLog(IZ)Ljava/lang/String;
+PLcom/android/server/net/NetworkPolicyLogger;->getTempPowerSaveWlChangedLog(IZ)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyLogger;->getUidFirewallRuleChangedLog(III)Ljava/lang/String;
 HSPLcom/android/server/net/NetworkPolicyLogger;->meteredRestrictedPkgsChanged(Ljava/util/Set;)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->meterednessChanged(IZ)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->networkBlocked(II)V
-HSPLcom/android/server/net/NetworkPolicyLogger;->paroleStateChanged(Z)V
-PLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger;->meterednessChanged(IZ)V
+HPLcom/android/server/net/NetworkPolicyLogger;->networkBlocked(II)V
+PLcom/android/server/net/NetworkPolicyLogger;->removingUserState(I)V
+PLcom/android/server/net/NetworkPolicyLogger;->restrictBackgroundChanged(ZZ)V
+HPLcom/android/server/net/NetworkPolicyLogger;->tempPowerSaveWlChanged(IZ)V
 HSPLcom/android/server/net/NetworkPolicyLogger;->uidFirewallRuleChanged(III)V
+PLcom/android/server/net/NetworkPolicyLogger;->uidPolicyChanged(III)V
 HSPLcom/android/server/net/NetworkPolicyLogger;->uidStateChanged(IIJ)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$13;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
-PLcom/android/server/net/NetworkPolicyManagerService$14;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$15;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$16;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerInternal;-><init>()V
+HPLcom/android/server/net/NetworkPolicyManagerInternal;->isUidNetworkingBlocked(IIZZ)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService$10;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$11;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$12;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$13;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$13;->onCapabilitiesChanged(Landroid/net/Network;Landroid/net/NetworkCapabilities;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$14;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$14;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$15;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$15;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$16;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$16;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$17;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService$17;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService$18;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService$18;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService$1;->getServiceType()I
-HSPLcom/android/server/net/NetworkPolicyManagerService$1;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$2;->getServiceType()I
-HSPLcom/android/server/net/NetworkPolicyManagerService$2;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$3;->onSubscriptionsChanged()V
+HSPLcom/android/server/net/NetworkPolicyManagerService$1;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$1;->getServiceType()I
+PLcom/android/server/net/NetworkPolicyManagerService$1;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$2;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$2;->getServiceType()I
+PLcom/android/server/net/NetworkPolicyManagerService$2;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$3;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/os/Looper;)V
+PLcom/android/server/net/NetworkPolicyManagerService$3;->onSubscriptionsChanged()V
+HSPLcom/android/server/net/NetworkPolicyManagerService$4;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidGone(IZ)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJ)V
-PLcom/android/server/net/NetworkPolicyManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;->onParoleStateChanged(Z)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->getSubscriptionOpportunisticQuota(Landroid/net/Network;I)J
-HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->getSubscriptionPlan(Landroid/net/NetworkTemplate;)Landroid/telephony/SubscriptionPlan;
-HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidNetworkingBlocked(ILjava/lang/String;)Z
-PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidRestrictedOnMeteredNetworks(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService$4;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$5;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$6;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$7;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$8;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+PLcom/android/server/net/NetworkPolicyManagerService$8;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$9;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$1;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Lcom/android/server/net/NetworkPolicyManagerService$1;)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->getSubscriptionOpportunisticQuota(Landroid/net/Network;I)J
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->getSubscriptionPlan(Landroid/net/NetworkTemplate;)Landroid/telephony/SubscriptionPlan;
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidNetworkingBlocked(ILjava/lang/String;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->isUidRestrictedOnMeteredNetworks(I)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onAdminDataAvailable()V
-PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZ)V
-HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setAppIdleWhitelist(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->onTempPowerSaveWhitelistChange(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setAppIdleWhitelist(IZ)V
+PLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setMeteredRestrictedPackages(Ljava/util/Set;I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;->setMeteredRestrictedPackagesAsync(Ljava/util/Set;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NotificationId;-><init>(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/NetworkPolicy;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService$NotificationId;->buildNotificationTag(Landroid/net/NetworkPolicy;I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyManagerService$NotificationId;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/net/NetworkPolicyManagerService$NotificationId;->getId()I
+PLcom/android/server/net/NetworkPolicyManagerService$NotificationId;->getTag()Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyManagerService$NotificationId;->hashCode()I
+HSPLcom/android/server/net/NetworkPolicyManagerService;-><clinit>()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;-><init>(Landroid/content/Context;Landroid/app/IActivityManager;Landroid/os/INetworkManagementService;Landroid/content/pm/IPackageManager;Ljava/time/Clock;Ljava/io/File;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$100()Z
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1000(Lcom/android/server/net/NetworkPolicyManagerService;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1100(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$1200(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/content/Context;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1300(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$1400(Landroid/util/SparseBooleanArray;ZLandroid/net/Network;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1500(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$1600(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkPolicyLogger;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1700(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1800(Lcom/android/server/net/NetworkPolicyManagerService;ILjava/lang/String;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->access$1900(Lcom/android/server/net/NetworkPolicyManagerService;ILjava/lang/String;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->access$200(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$2000(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$2100(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/os/RemoteCallbackList;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$2200(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;II)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$2300(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$2400(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$2400(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkStatsManagerInternal;
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$2500(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/ArraySet;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$2500(Lcom/android/server/net/NetworkPolicyManagerService;)Lcom/android/server/net/NetworkStatsManagerInternal;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$2600(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$2900(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$3000(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/lang/String;J)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$3100(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$3300(Lcom/android/server/net/NetworkPolicyManagerService;Ljava/util/Set;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$3400(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/NetworkTemplate;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$3500(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/INetworkPolicyListener;I[Landroid/telephony/SubscriptionPlan;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$3600(II)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$3700(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$3800(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$3900(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/Network;)I
+PLcom/android/server/net/NetworkPolicyManagerService;->access$400(Lcom/android/server/net/NetworkPolicyManagerService;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$4000(Lcom/android/server/net/NetworkPolicyManagerService;I)Landroid/telephony/SubscriptionPlan;
+HPLcom/android/server/net/NetworkPolicyManagerService;->access$4100(Lcom/android/server/net/NetworkPolicyManagerService;Landroid/net/NetworkTemplate;)I
+HSPLcom/android/server/net/NetworkPolicyManagerService;->access$4200(Lcom/android/server/net/NetworkPolicyManagerService;)Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$500()Z
+PLcom/android/server/net/NetworkPolicyManagerService;->access$600(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$700(Lcom/android/server/net/NetworkPolicyManagerService;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->access$800(Lcom/android/server/net/NetworkPolicyManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/net/NetworkPolicyManagerService;->access$900(Lcom/android/server/net/NetworkPolicyManagerService;I)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL()Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->addDefaultRestrictBackgroundWhitelistUidsUL(I)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService;->addNetworkPolicyAL(Landroid/net/NetworkPolicy;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->addNetworkPolicyAL(Landroid/net/NetworkPolicy;)V
 PLcom/android/server/net/NetworkPolicyManagerService;->addUidPolicy(II)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->bindConnectivityManager(Landroid/net/IConnectivityManager;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->buildDefaultMobilePolicy(ILjava/lang/String;)Landroid/net/NetworkPolicy;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->collectIfaces(Landroid/util/ArraySet;Landroid/net/NetworkState;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->defeatNullable([Landroid/net/NetworkState;)[Landroid/net/NetworkState;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->dispatchMeteredIfacesChanged(Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->buildDefaultMobilePolicy(ILjava/lang/String;)Landroid/net/NetworkPolicy;
+HPLcom/android/server/net/NetworkPolicyManagerService;->buildSnoozeWarningIntent(Landroid/net/NetworkTemplate;)Landroid/content/Intent;
+HPLcom/android/server/net/NetworkPolicyManagerService;->buildViewDataUsageIntent(Landroid/content/res/Resources;Landroid/net/NetworkTemplate;)Landroid/content/Intent;
+PLcom/android/server/net/NetworkPolicyManagerService;->cancelNotification(Lcom/android/server/net/NetworkPolicyManagerService$NotificationId;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->checkAnyPermissionOf([Ljava/lang/String;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->collectIfaces(Landroid/util/ArraySet;Landroid/net/NetworkState;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->collectKeys(Landroid/util/SparseIntArray;Landroid/util/SparseBooleanArray;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->defeatNullable([Landroid/net/NetworkState;)[Landroid/net/NetworkState;
+HPLcom/android/server/net/NetworkPolicyManagerService;->dispatchMeteredIfacesChanged(Landroid/net/INetworkPolicyListener;[Ljava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->dispatchRestrictBackgroundChanged(Landroid/net/INetworkPolicyListener;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->dispatchSubscriptionPlansChanged(Landroid/net/INetworkPolicyListener;I[Landroid/telephony/SubscriptionPlan;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidPoliciesChanged(Landroid/net/INetworkPolicyListener;II)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->dispatchUidRulesChanged(Landroid/net/INetworkPolicyListener;II)V
-PLcom/android/server/net/NetworkPolicyManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->enableFirewallChainUL(IZ)V
-PLcom/android/server/net/NetworkPolicyManagerService;->enforceSubscriptionPlanAccess(IILjava/lang/String;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL()V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL(ILjava/lang/String;)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->enforceAnyPermissionOf([Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->enforceSubscriptionPlanAccess(IILjava/lang/String;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->enforceSubscriptionPlanValidity([Landroid/telephony/SubscriptionPlan;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->enqueueNotification(Landroid/net/NetworkPolicy;IJLandroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->ensureActiveMobilePolicyAL(ILjava/lang/String;)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->findRelevantSubIdNL(Landroid/net/NetworkTemplate;)I
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getBooleanDefeatingNullable(Landroid/os/PersistableBundle;Ljava/lang/String;Z)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getCycleDayFromCarrierConfig(Landroid/os/PersistableBundle;I)I
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getLimitBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getPrimarySubscriptionPlanLocked(I)Landroid/telephony/SubscriptionPlan;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackground()Z
-PLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundByCaller()I
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getSubIdLocked(Landroid/net/Network;)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->getBooleanDefeatingNullable(Landroid/os/PersistableBundle;Ljava/lang/String;Z)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->getCycleDayFromCarrierConfig(Landroid/os/PersistableBundle;I)I
+HSPLcom/android/server/net/NetworkPolicyManagerService;->getDefaultClock()Ljava/time/Clock;
+HSPLcom/android/server/net/NetworkPolicyManagerService;->getDefaultSystemDir()Ljava/io/File;
+PLcom/android/server/net/NetworkPolicyManagerService;->getLimitBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
+HPLcom/android/server/net/NetworkPolicyManagerService;->getNetworkPolicies(Ljava/lang/String;)[Landroid/net/NetworkPolicy;
+HPLcom/android/server/net/NetworkPolicyManagerService;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J
+PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultLimitBytes()J
+PLcom/android/server/net/NetworkPolicyManagerService;->getPlatformDefaultWarningBytes()J
+HPLcom/android/server/net/NetworkPolicyManagerService;->getPrimarySubscriptionPlanLocked(I)Landroid/telephony/SubscriptionPlan;
+HPLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackground()Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->getRestrictBackgroundByCaller()I
+HPLcom/android/server/net/NetworkPolicyManagerService;->getSubIdLocked(Landroid/net/Network;)I
 PLcom/android/server/net/NetworkPolicyManagerService;->getSubscriptionPlans(ILjava/lang/String;)[Landroid/telephony/SubscriptionPlan;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getTotalBytes(Landroid/net/NetworkTemplate;JJ)J
-PLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I
+PLcom/android/server/net/NetworkPolicyManagerService;->getSubscriptionPlansOwner(I)Ljava/lang/String;
+HPLcom/android/server/net/NetworkPolicyManagerService;->getTotalBytes(Landroid/net/NetworkTemplate;JJ)J
+HPLcom/android/server/net/NetworkPolicyManagerService;->getUidPolicy(I)I
 PLcom/android/server/net/NetworkPolicyManagerService;->getUidsWithPolicy(I)[I
-HSPLcom/android/server/net/NetworkPolicyManagerService;->getWarningBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
-HSPLcom/android/server/net/NetworkPolicyManagerService;->handleNetworkPoliciesUpdateAL(Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->getWarningBytesFromCarrierConfig(Landroid/os/PersistableBundle;J)J
+PLcom/android/server/net/NetworkPolicyManagerService;->handleNetworkPoliciesUpdateAL(Z)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->handleRestrictedPackagesChangeUL(Ljava/util/Set;Ljava/util/Set;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->handleUidChanged(IIJ)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->handleUidGone(I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->hasInternetPermissions(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->hasRule(II)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->initService(Ljava/util/concurrent/CountDownLatch;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isBandwidthControlEnabled()Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isRestrictedByAdminUL(I)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isSystem(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictBackgroundUL(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidForegroundOnRestrictPowerUL(I)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidIdle(I)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlockedInternal(IIZZLcom/android/server/net/NetworkPolicyLogger;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->isUidNetworkingBlockedInternal(IIZZLcom/android/server/net/NetworkPolicyLogger;)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidStateForeground(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForBlacklistRules(I)Z
+HSPLcom/android/server/net/NetworkPolicyManagerService;->isUidValidForWhitelistRules(I)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->isWhitelistedFromPowerSaveUL(IZ)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->lambda$networkScoreAndNetworkManagementServiceReady$0$NetworkPolicyManagerService(Ljava/util/concurrent/CountDownLatch;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->maybeUpdateMobilePolicyCycleAL(ILjava/lang/String;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->maybeUpdateMobilePolicyCycleAL(ILjava/lang/String;)Z
 HSPLcom/android/server/net/NetworkPolicyManagerService;->networkScoreAndNetworkManagementServiceReady()Ljava/util/concurrent/CountDownLatch;
-HSPLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->notifyUnderLimitNL(Landroid/net/NetworkTemplate;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->onTetheringChanged(Ljava/lang/String;Z)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->onUidDeletedUL(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->parseSubId(Landroid/net/NetworkState;)I
+HPLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->normalizePoliciesNL([Landroid/net/NetworkPolicy;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->notifyUnderLimitNL(Landroid/net/NetworkTemplate;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->onTetheringChanged(Ljava/lang/String;Z)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->onUidDeletedUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->parseSubId(Landroid/net/NetworkState;)I
+PLcom/android/server/net/NetworkPolicyManagerService;->performSnooze(Landroid/net/NetworkTemplate;I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->readPolicyAL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->registerListener(Landroid/net/INetworkPolicyListener;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->removeInterfaceQuota(Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->removeInterfaceQuotaAsync(Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->resetUidFirewallRules(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setAppIdleWhitelist(IZ)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setDeviceIdleMode(Z)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setInterfaceQuota(Ljava/lang/String;J)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setInterfaceQuotaAsync(Ljava/lang/String;J)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkWhitelist(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->removeInterfaceQuota(Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->removeInterfaceQuotaAsync(Ljava/lang/String;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->removeUserStateUL(IZ)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->resetUidFirewallRules(I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->sendRestrictBackgroundChangedMsg()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setAppIdleWhitelist(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setDeviceIdleMode(Z)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setInterfaceQuota(Ljava/lang/String;J)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setInterfaceQuotaAsync(Ljava/lang/String;J)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkBlacklist(IZ)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredNetworkWhitelist(IZ)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->setMeteredRestrictedPackagesInternal(Ljava/util/Set;I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setNetworkPolicies([Landroid/net/NetworkPolicy;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->setNetworkTemplateEnabledInner(Landroid/net/NetworkTemplate;Z)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setNetworkPolicies([Landroid/net/NetworkPolicy;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setNetworkTemplateEnabled(Landroid/net/NetworkTemplate;Z)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->setNetworkTemplateEnabledInner(Landroid/net/NetworkTemplate;Z)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->setRestrictBackgroundUL(Z)V
 PLcom/android/server/net/NetworkPolicyManagerService;->setSubscriptionPlans(I[Landroid/telephony/SubscriptionPlan;Ljava/lang/String;)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRule(III)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidFirewallRulesUL(ILandroid/util/SparseIntArray;I)V
+PLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIIZ)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->setUidPolicyUncheckedUL(IIZ)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->systemReady(Ljava/util/concurrent/CountDownLatch;)V
-PLcom/android/server/net/NetworkPolicyManagerService;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateDefaultMobilePolicyAL(ILandroid/net/NetworkPolicy;)Z
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->unregisterListener(Landroid/net/INetworkPolicyListener;)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateCapabilityChange(Landroid/util/SparseBooleanArray;ZLandroid/net/Network;)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->updateDefaultMobilePolicyAL(ILandroid/net/NetworkPolicy;)Z
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkEnabledNL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkRulesNL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworkStats(IZ)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworksInternal()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateNetworksInternal()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateNotificationsNL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updatePowerSaveWhitelistUL()V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundByLowPowerModeUL(Landroid/os/PowerSaveState;)V
+PLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundByLowPowerModeUL(Landroid/os/PowerSaveState;)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictBackgroundRulesOnUidStatusChangedUL(III)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRestrictionRulesForUidUL(I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForAppIdleUL(I)V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForDeviceIdleUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRuleForRestrictPowerUL(I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAllAppsUL(I)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleParoleUL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForAppIdleUL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsUL(I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDataUsageRestrictionsULInner(I)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForDeviceIdleUL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForGlobalChangeAL(Z)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(IIZ)I
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(IIZ)I
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(I)V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsUL(II)I
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(II)I
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerSaveUL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictBackgroundUL()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForRestrictPowerUL()V
-PLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForTempWhitelistChangeUL(I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedAppIds(Landroid/util/SparseIntArray;Landroid/util/SparseBooleanArray;I)V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(IZI)V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForWhitelistedPowerSaveUL(ZILandroid/util/SparseIntArray;)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateSubscriptions()V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(II)V
-HSPLcom/android/server/net/NetworkPolicyManagerService;->upgradeWifiMeteredOverrideAL()V
+HPLcom/android/server/net/NetworkPolicyManagerService;->updateSubscriptions()V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->updateUidStateUL(II)Z
+PLcom/android/server/net/NetworkPolicyManagerService;->upgradeWifiMeteredOverrideAL()V
+HSPLcom/android/server/net/NetworkPolicyManagerService;->waitForAdminData()V
 HSPLcom/android/server/net/NetworkPolicyManagerService;->writePolicyAL()V
-HSPLcom/android/server/net/NetworkStatsAccess;->checkAccessLevel(Landroid/content/Context;ILjava/lang/String;)I
-PLcom/android/server/net/NetworkStatsAccess;->hasAppOpsPermission(Landroid/content/Context;ILjava/lang/String;)Z
-HSPLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z
+HPLcom/android/server/net/NetworkStatsAccess;->checkAccessLevel(Landroid/content/Context;ILjava/lang/String;)I
+HPLcom/android/server/net/NetworkStatsAccess;->hasAppOpsPermission(Landroid/content/Context;ILjava/lang/String;)Z
+HPLcom/android/server/net/NetworkStatsAccess;->isAccessibleToUser(III)Z
 HSPLcom/android/server/net/NetworkStatsCollection$Key;-><init>(Lcom/android/server/net/NetworkIdentitySet;III)V
-PLcom/android/server/net/NetworkStatsCollection$Key;->compareTo(Lcom/android/server/net/NetworkStatsCollection$Key;)I
-PLcom/android/server/net/NetworkStatsCollection$Key;->compareTo(Ljava/lang/Object;)I
+HPLcom/android/server/net/NetworkStatsCollection$Key;->compareTo(Lcom/android/server/net/NetworkStatsCollection$Key;)I
+HPLcom/android/server/net/NetworkStatsCollection$Key;->compareTo(Ljava/lang/Object;)I
 HSPLcom/android/server/net/NetworkStatsCollection$Key;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/net/NetworkStatsCollection$Key;->hashCode()I
-HSPLcom/android/server/net/NetworkStatsCollection;->clearDirty()V
-PLcom/android/server/net/NetworkStatsCollection;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/net/NetworkStatsCollection;-><init>(J)V
+PLcom/android/server/net/NetworkStatsCollection;->clearDirty()V
+HPLcom/android/server/net/NetworkStatsCollection;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/net/NetworkStatsCollection;->dumpCheckin(Ljava/io/PrintWriter;JJ)V
-PLcom/android/server/net/NetworkStatsCollection;->dumpCheckin(Ljava/io/PrintWriter;JJLandroid/net/NetworkTemplate;Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkStatsCollection;->findOrCreateHistory(Lcom/android/server/net/NetworkIdentitySet;III)Landroid/net/NetworkStatsHistory;
-HSPLcom/android/server/net/NetworkStatsCollection;->getHistory(Landroid/net/NetworkTemplate;Landroid/telephony/SubscriptionPlan;IIIIJJII)Landroid/net/NetworkStatsHistory;
+HPLcom/android/server/net/NetworkStatsCollection;->dumpCheckin(Ljava/io/PrintWriter;JJLandroid/net/NetworkTemplate;Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkStatsCollection;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/net/NetworkStatsCollection;->findOrCreateHistory(Lcom/android/server/net/NetworkIdentitySet;III)Landroid/net/NetworkStatsHistory;
+HPLcom/android/server/net/NetworkStatsCollection;->getHistory(Landroid/net/NetworkTemplate;Landroid/telephony/SubscriptionPlan;IIIIJJII)Landroid/net/NetworkStatsHistory;
 PLcom/android/server/net/NetworkStatsCollection;->getRelevantUids(I)[I
-PLcom/android/server/net/NetworkStatsCollection;->getRelevantUids(II)[I
-HSPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJII)Landroid/net/NetworkStats;
-HSPLcom/android/server/net/NetworkStatsCollection;->getTotalBytes()J
-HSPLcom/android/server/net/NetworkStatsCollection;->isDirty()Z
+HPLcom/android/server/net/NetworkStatsCollection;->getRelevantUids(II)[I
+PLcom/android/server/net/NetworkStatsCollection;->getSortedKeys()Ljava/util/ArrayList;
+HPLcom/android/server/net/NetworkStatsCollection;->getSummary(Landroid/net/NetworkTemplate;JJII)Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsCollection;->getTotalBytes()J
+HPLcom/android/server/net/NetworkStatsCollection;->isDirty()Z
+HSPLcom/android/server/net/NetworkStatsCollection;->noteRecordedHistory(JJJ)V
 HSPLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/DataInputStream;)V
 HSPLcom/android/server/net/NetworkStatsCollection;->read(Ljava/io/InputStream;)V
-HSPLcom/android/server/net/NetworkStatsCollection;->recordData(Lcom/android/server/net/NetworkIdentitySet;IIIJJLandroid/net/NetworkStats$Entry;)V
+HSPLcom/android/server/net/NetworkStatsCollection;->recordCollection(Lcom/android/server/net/NetworkStatsCollection;)V
+HPLcom/android/server/net/NetworkStatsCollection;->recordData(Lcom/android/server/net/NetworkIdentitySet;IIIJJLandroid/net/NetworkStats$Entry;)V
 HSPLcom/android/server/net/NetworkStatsCollection;->recordHistory(Lcom/android/server/net/NetworkStatsCollection$Key;Landroid/net/NetworkStatsHistory;)V
-HSPLcom/android/server/net/NetworkStatsCollection;->removeUids([I)V
+HPLcom/android/server/net/NetworkStatsCollection;->removeUids([I)V
 HSPLcom/android/server/net/NetworkStatsCollection;->reset()V
-HSPLcom/android/server/net/NetworkStatsCollection;->templateMatches(Landroid/net/NetworkTemplate;Lcom/android/server/net/NetworkIdentitySet;)Z
-HSPLcom/android/server/net/NetworkStatsCollection;->write(Ljava/io/DataOutputStream;)V
-PLcom/android/server/net/NetworkStatsCollection;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/net/NetworkStatsCollection;->templateMatches(Landroid/net/NetworkTemplate;Lcom/android/server/net/NetworkIdentitySet;)Z
+HPLcom/android/server/net/NetworkStatsCollection;->write(Ljava/io/DataOutputStream;)V
+HSPLcom/android/server/net/NetworkStatsFactory;-><init>()V
+HSPLcom/android/server/net/NetworkStatsFactory;-><init>(Ljava/io/File;Z)V
+HSPLcom/android/server/net/NetworkStatsFactory;->adjustForTunAnd464Xlat(Landroid/net/NetworkStats;Landroid/net/NetworkStats;[Lcom/android/internal/net/VpnInfo;)Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsFactory;->apply464xlatAdjustments(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Z)V
+HPLcom/android/server/net/NetworkStatsFactory;->augmentWithStackedInterfaces([Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/net/NetworkStatsFactory;->noteStackedIface(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/net/NetworkStatsFactory;->readBpfNetworkStatsDev()Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsFactory;->readNetworkStatsDetail(I[Ljava/lang/String;I)Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsFactory;->readNetworkStatsSummaryDev()Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsFactory;->readNetworkStatsSummaryXt()Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsFactory;->requestSwapActiveStatsMapLocked()V
+HPLcom/android/server/net/NetworkStatsFactory;->updateVpnInfos([Lcom/android/internal/net/VpnInfo;)V
+HSPLcom/android/server/net/NetworkStatsManagerInternal;-><init>()V
+HSPLcom/android/server/net/NetworkStatsObservers$1;-><init>(Lcom/android/server/net/NetworkStatsObservers;)V
 HSPLcom/android/server/net/NetworkStatsObservers$1;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;->checkStats()Z
-HSPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;->recordSample(Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
-HSPLcom/android/server/net/NetworkStatsObservers$RequestInfo;-><init>(Lcom/android/server/net/NetworkStatsObservers;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)V
-PLcom/android/server/net/NetworkStatsObservers$RequestInfo;->callCallback(I)V
-HSPLcom/android/server/net/NetworkStatsObservers;->buildRequest(Landroid/net/DataUsageRequest;)Landroid/net/DataUsageRequest;
-HSPLcom/android/server/net/NetworkStatsObservers;->buildRequestInfo(Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)Lcom/android/server/net/NetworkStatsObservers$RequestInfo;
+HPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;-><init>(Lcom/android/server/net/NetworkStatsObservers;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)V
+HPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;->checkStats()Z
+HPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;->getTotalBytesForNetwork(Landroid/net/NetworkTemplate;)J
+HPLcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;->recordSample(Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;-><init>(Lcom/android/server/net/NetworkStatsObservers;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)V
+PLcom/android/server/net/NetworkStatsObservers$RequestInfo;->access$300(Lcom/android/server/net/NetworkStatsObservers$RequestInfo;)V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;->access$400(Lcom/android/server/net/NetworkStatsObservers$RequestInfo;I)V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;->access$500(Lcom/android/server/net/NetworkStatsObservers$RequestInfo;Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
+PLcom/android/server/net/NetworkStatsObservers$RequestInfo;->binderDied()V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;->callCallback(I)V
+PLcom/android/server/net/NetworkStatsObservers$RequestInfo;->resetRecorder()V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;->unlinkDeathRecipient()V
+HPLcom/android/server/net/NetworkStatsObservers$RequestInfo;->updateStats(Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
+HSPLcom/android/server/net/NetworkStatsObservers$StatsContext;-><init>(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/util/ArrayMap;Landroid/util/ArrayMap;J)V
+HSPLcom/android/server/net/NetworkStatsObservers;-><init>()V
+PLcom/android/server/net/NetworkStatsObservers;->access$000(Lcom/android/server/net/NetworkStatsObservers;Lcom/android/server/net/NetworkStatsObservers$RequestInfo;)V
+PLcom/android/server/net/NetworkStatsObservers;->access$100(Lcom/android/server/net/NetworkStatsObservers;Landroid/net/DataUsageRequest;I)V
+HSPLcom/android/server/net/NetworkStatsObservers;->access$200(Lcom/android/server/net/NetworkStatsObservers;Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
+HPLcom/android/server/net/NetworkStatsObservers;->buildRequest(Landroid/net/DataUsageRequest;)Landroid/net/DataUsageRequest;
+HPLcom/android/server/net/NetworkStatsObservers;->buildRequestInfo(Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)Lcom/android/server/net/NetworkStatsObservers$RequestInfo;
 HSPLcom/android/server/net/NetworkStatsObservers;->getHandler()Landroid/os/Handler;
 HSPLcom/android/server/net/NetworkStatsObservers;->getHandlerLooperLocked()Landroid/os/Looper;
-PLcom/android/server/net/NetworkStatsObservers;->handleUnregister(Landroid/net/DataUsageRequest;I)V
+HPLcom/android/server/net/NetworkStatsObservers;->handleRegister(Lcom/android/server/net/NetworkStatsObservers$RequestInfo;)V
+HPLcom/android/server/net/NetworkStatsObservers;->handleUnregister(Landroid/net/DataUsageRequest;I)V
 HSPLcom/android/server/net/NetworkStatsObservers;->handleUpdateStats(Lcom/android/server/net/NetworkStatsObservers$StatsContext;)V
-HSPLcom/android/server/net/NetworkStatsObservers;->register(Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)Landroid/net/DataUsageRequest;
-PLcom/android/server/net/NetworkStatsObservers;->unregister(Landroid/net/DataUsageRequest;I)V
-HSPLcom/android/server/net/NetworkStatsObservers;->updateStats(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/util/ArrayMap;Landroid/util/ArrayMap;[Lcom/android/internal/net/VpnInfo;J)V
-PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->read(Ljava/io/InputStream;)V
-PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->reset()V
-PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->shouldWrite()Z
-PLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->write(Ljava/io/OutputStream;)V
-HSPLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->read(Ljava/io/InputStream;)V
-HSPLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->reset()V
-HSPLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->shouldWrite()Z
-HSPLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->write(Ljava/io/OutputStream;)V
-HSPLcom/android/server/net/NetworkStatsRecorder;-><init>()V
+HPLcom/android/server/net/NetworkStatsObservers;->register(Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;II)Landroid/net/DataUsageRequest;
+HPLcom/android/server/net/NetworkStatsObservers;->unregister(Landroid/net/DataUsageRequest;I)V
+HSPLcom/android/server/net/NetworkStatsObservers;->updateStats(Landroid/net/NetworkStats;Landroid/net/NetworkStats;Landroid/util/ArrayMap;Landroid/util/ArrayMap;J)V
+HSPLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;-><init>(Lcom/android/server/net/NetworkStatsCollection;)V
+HPLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->read(Ljava/io/InputStream;)V
+HPLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->reset()V
+HPLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->shouldWrite()Z
+HPLcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;->write(Ljava/io/OutputStream;)V
+PLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;-><init>(J[I)V
+PLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->read(Ljava/io/InputStream;)V
+PLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->reset()V
+PLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->shouldWrite()Z
+PLcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;->write(Ljava/io/OutputStream;)V
+HPLcom/android/server/net/NetworkStatsRecorder;-><init>()V
 HSPLcom/android/server/net/NetworkStatsRecorder;-><init>(Lcom/android/internal/util/FileRotator;Landroid/net/NetworkStats$NonMonotonicObserver;Landroid/os/DropBoxManager;Ljava/lang/String;JZ)V
 PLcom/android/server/net/NetworkStatsRecorder;->dumpCheckin(Ljava/io/PrintWriter;JJ)V
+PLcom/android/server/net/NetworkStatsRecorder;->dumpDebugLocked(Landroid/util/proto/ProtoOutputStream;J)V
 PLcom/android/server/net/NetworkStatsRecorder;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;Z)V
-PLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V
+HPLcom/android/server/net/NetworkStatsRecorder;->forcePersistLocked(J)V
 HSPLcom/android/server/net/NetworkStatsRecorder;->getOrLoadCompleteLocked()Lcom/android/server/net/NetworkStatsCollection;
 PLcom/android/server/net/NetworkStatsRecorder;->getOrLoadPartialLocked(JJ)Lcom/android/server/net/NetworkStatsCollection;
-HSPLcom/android/server/net/NetworkStatsRecorder;->getSinceBoot()Lcom/android/server/net/NetworkStatsCollection;
-HSPLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry;
+PLcom/android/server/net/NetworkStatsRecorder;->getSinceBoot()Lcom/android/server/net/NetworkStatsCollection;
+HPLcom/android/server/net/NetworkStatsRecorder;->getTotalSinceBootLocked(Landroid/net/NetworkTemplate;)Landroid/net/NetworkStats$Entry;
 HSPLcom/android/server/net/NetworkStatsRecorder;->loadLocked(JJ)Lcom/android/server/net/NetworkStatsCollection;
-HSPLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V
-HSPLcom/android/server/net/NetworkStatsRecorder;->recordSnapshotLocked(Landroid/net/NetworkStats;Ljava/util/Map;[Lcom/android/internal/net/VpnInfo;J)V
-HSPLcom/android/server/net/NetworkStatsRecorder;->removeUidsLocked([I)V
+HPLcom/android/server/net/NetworkStatsRecorder;->maybePersistLocked(J)V
+HSPLcom/android/server/net/NetworkStatsRecorder;->recordSnapshotLocked(Landroid/net/NetworkStats;Ljava/util/Map;J)V
+HPLcom/android/server/net/NetworkStatsRecorder;->removeUidsLocked([I)V
 HSPLcom/android/server/net/NetworkStatsRecorder;->setPersistThreshold(J)V
-PLcom/android/server/net/NetworkStatsRecorder;->writeToProtoLocked(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/net/NetworkStatsService$1;->close()V
+HPLcom/android/server/net/NetworkStatsService$1;-><init>(Lcom/android/server/net/NetworkStatsService;ILjava/lang/String;I)V
+HPLcom/android/server/net/NetworkStatsService$1;->close()V
 PLcom/android/server/net/NetworkStatsService$1;->getDeviceSummaryForNetwork(Landroid/net/NetworkTemplate;JJ)Landroid/net/NetworkStats;
 PLcom/android/server/net/NetworkStatsService$1;->getHistoryForNetwork(Landroid/net/NetworkTemplate;I)Landroid/net/NetworkStatsHistory;
 PLcom/android/server/net/NetworkStatsService$1;->getHistoryForUid(Landroid/net/NetworkTemplate;IIII)Landroid/net/NetworkStatsHistory;
-PLcom/android/server/net/NetworkStatsService$1;->getHistoryIntervalForUid(Landroid/net/NetworkTemplate;IIIIJJ)Landroid/net/NetworkStatsHistory;
+HPLcom/android/server/net/NetworkStatsService$1;->getHistoryIntervalForUid(Landroid/net/NetworkTemplate;IIIIJJ)Landroid/net/NetworkStatsHistory;
 PLcom/android/server/net/NetworkStatsService$1;->getRelevantUids()[I
-PLcom/android/server/net/NetworkStatsService$1;->getSummaryForAllUid(Landroid/net/NetworkTemplate;JJZ)Landroid/net/NetworkStats;
-PLcom/android/server/net/NetworkStatsService$1;->getUidComplete()Lcom/android/server/net/NetworkStatsCollection;
-PLcom/android/server/net/NetworkStatsService$1;->getUidTagComplete()Lcom/android/server/net/NetworkStatsCollection;
-HSPLcom/android/server/net/NetworkStatsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkStatsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/net/NetworkStatsService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/net/NetworkStatsService$7;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getAugmentEnabled()Z
+HPLcom/android/server/net/NetworkStatsService$1;->getSummaryForAllUid(Landroid/net/NetworkTemplate;JJZ)Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsService$1;->getUidComplete()Lcom/android/server/net/NetworkStatsCollection;
+HPLcom/android/server/net/NetworkStatsService$1;->getUidTagComplete()Lcom/android/server/net/NetworkStatsCollection;
+HSPLcom/android/server/net/NetworkStatsService$2;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HPLcom/android/server/net/NetworkStatsService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkStatsService$3;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+PLcom/android/server/net/NetworkStatsService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkStatsService$4;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+PLcom/android/server/net/NetworkStatsService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkStatsService$5;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+PLcom/android/server/net/NetworkStatsService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkStatsService$6;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+PLcom/android/server/net/NetworkStatsService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/net/NetworkStatsService$7;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HPLcom/android/server/net/NetworkStatsService$7;->limitReached(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getAugmentEnabled()Z
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getDevConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getDevPersistBytes(J)J
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalAlertBytes(J)J
+HPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalBoolean(Ljava/lang/String;Z)Z
+HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getGlobalLong(Ljava/lang/String;J)J
+PLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getPollDelay()J
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getPollInterval()J
-HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getSampleEnabled()Z
+HPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getSampleEnabled()Z
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidPersistBytes(J)J
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidTagConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getUidTagPersistBytes(J)J
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getXtConfig()Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
 HSPLcom/android/server/net/NetworkStatsService$DefaultNetworkStatsSettings;->getXtPersistBytes(J)J
-HSPLcom/android/server/net/NetworkStatsService$HandlerCallback;->handleMessage(Landroid/os/Message;)Z
-HSPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->advisePersistThreshold(J)V
-HSPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J
+HSPLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HSPLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;-><init>(Lcom/android/server/net/NetworkStatsService;Lcom/android/server/net/NetworkStatsService$1;)V
+PLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILandroid/net/NetworkStats;ILjava/lang/Object;)V
+HPLcom/android/server/net/NetworkStatsService$DropBoxNonMonotonicObserver;->foundNonMonotonic(Landroid/net/NetworkStats;ILandroid/net/NetworkStats;ILjava/lang/String;)V
+HSPLcom/android/server/net/NetworkStatsService$HandlerCallback;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HPLcom/android/server/net/NetworkStatsService$HandlerCallback;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/net/NetworkStatsService$NetworkStatsHandler;-><init>(Landroid/os/Looper;Landroid/os/Handler$Callback;)V
+HSPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkStatsService;)V
+HSPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;-><init>(Lcom/android/server/net/NetworkStatsService;Lcom/android/server/net/NetworkStatsService$1;)V
+PLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->advisePersistThreshold(J)V
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->lambda$setStatsProviderLimit$0(Ljava/lang/String;JLcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;)V
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->setStatsProviderLimit(Ljava/lang/String;J)V
 HSPLcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;->setUidForeground(IZ)V
-HSPLcom/android/server/net/NetworkStatsService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/app/AlarmManager;Landroid/os/PowerManager$WakeLock;Ljava/time/Clock;Landroid/telephony/TelephonyManager;Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings;Lcom/android/server/net/NetworkStatsObservers;Ljava/io/File;Ljava/io/File;)V
-HSPLcom/android/server/net/NetworkStatsService;->advisePersistThreshold(J)V
-HSPLcom/android/server/net/NetworkStatsService;->assertBandwidthControlEnabled()V
-HSPLcom/android/server/net/NetworkStatsService;->assertSystemReady()V
+HSPLcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;-><init>(Ljava/lang/String;Landroid/net/netstats/provider/INetworkStatsProvider;Landroid/net/INetworkManagementEventObserver;Landroid/os/RemoteCallbackList;)V
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;->getCachedStats(I)Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;->onStatsUpdated(ILandroid/net/NetworkStats;Landroid/net/NetworkStats;)V
+HSPLcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;-><init>(JJJ)V
+HSPLcom/android/server/net/NetworkStatsService;-><clinit>()V
+HSPLcom/android/server/net/NetworkStatsService;-><init>(Landroid/content/Context;Landroid/os/INetworkManagementService;Landroid/app/AlarmManager;Landroid/os/PowerManager$WakeLock;Ljava/time/Clock;Landroid/telephony/TelephonyManager;Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings;Lcom/android/server/net/NetworkStatsFactory;Lcom/android/server/net/NetworkStatsObservers;Ljava/io/File;Ljava/io/File;)V
+PLcom/android/server/net/NetworkStatsService;->access$1000(Lcom/android/server/net/NetworkStatsService;)Landroid/os/PowerManager$WakeLock;
+PLcom/android/server/net/NetworkStatsService;->access$1100(Lcom/android/server/net/NetworkStatsService;[I)V
+PLcom/android/server/net/NetworkStatsService;->access$1200(Lcom/android/server/net/NetworkStatsService;I)V
+PLcom/android/server/net/NetworkStatsService;->access$1300(Lcom/android/server/net/NetworkStatsService;)V
+PLcom/android/server/net/NetworkStatsService;->access$1400(Lcom/android/server/net/NetworkStatsService;)Landroid/content/Context;
+PLcom/android/server/net/NetworkStatsService;->access$1500(Lcom/android/server/net/NetworkStatsService;)Landroid/os/Handler;
+PLcom/android/server/net/NetworkStatsService;->access$1600(Lcom/android/server/net/NetworkStatsService;)Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings;
+PLcom/android/server/net/NetworkStatsService;->access$1600(Lcom/android/server/net/NetworkStatsService;Landroid/net/NetworkTemplate;JJ)J
+HPLcom/android/server/net/NetworkStatsService;->access$1700(Lcom/android/server/net/NetworkStatsService;Landroid/net/NetworkTemplate;JJ)J
+PLcom/android/server/net/NetworkStatsService;->access$1800(Lcom/android/server/net/NetworkStatsService;J)V
+PLcom/android/server/net/NetworkStatsService;->access$1900(Lcom/android/server/net/NetworkStatsService;J)V
+HPLcom/android/server/net/NetworkStatsService;->access$200(Lcom/android/server/net/NetworkStatsService;Ljava/lang/String;)I
+HPLcom/android/server/net/NetworkStatsService;->access$2000(Lcom/android/server/net/NetworkStatsService;Lcom/android/server/net/NetworkStatsService$ThrowingConsumer;)V
+HPLcom/android/server/net/NetworkStatsService;->access$300(Lcom/android/server/net/NetworkStatsService;)Ljava/lang/Object;
+HPLcom/android/server/net/NetworkStatsService;->access$400(Lcom/android/server/net/NetworkStatsService;)Lcom/android/server/net/NetworkStatsRecorder;
+HPLcom/android/server/net/NetworkStatsService;->access$500(Lcom/android/server/net/NetworkStatsService;)Lcom/android/server/net/NetworkStatsRecorder;
+HPLcom/android/server/net/NetworkStatsService;->access$600(Lcom/android/server/net/NetworkStatsService;Landroid/net/NetworkTemplate;IJJII)Landroid/net/NetworkStats;
+PLcom/android/server/net/NetworkStatsService;->access$700(Lcom/android/server/net/NetworkStatsService;Landroid/net/NetworkTemplate;IIII)Landroid/net/NetworkStatsHistory;
+HPLcom/android/server/net/NetworkStatsService;->access$800(Lcom/android/server/net/NetworkStatsService;I)V
+HPLcom/android/server/net/NetworkStatsService;->access$900(Lcom/android/server/net/NetworkStatsService;)V
+HPLcom/android/server/net/NetworkStatsService;->advisePersistThreshold(J)V
+HPLcom/android/server/net/NetworkStatsService;->assertSystemReady()V
 HSPLcom/android/server/net/NetworkStatsService;->bootstrapStatsLocked()V
 HSPLcom/android/server/net/NetworkStatsService;->buildRecorder(Ljava/lang/String;Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;Z)Lcom/android/server/net/NetworkStatsRecorder;
+HPLcom/android/server/net/NetworkStatsService;->checkAccessLevel(Ljava/lang/String;)I
+HPLcom/android/server/net/NetworkStatsService;->checkBpfStatsEnable()Z
 HSPLcom/android/server/net/NetworkStatsService;->create(Landroid/content/Context;Landroid/os/INetworkManagementService;)Lcom/android/server/net/NetworkStatsService;
-PLcom/android/server/net/NetworkStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkStatsService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/net/NetworkStatsService;->dumpInterfaces(Landroid/util/proto/ProtoOutputStream;JLandroid/util/ArrayMap;)V
 PLcom/android/server/net/NetworkStatsService;->dumpProtoLocked(Ljava/io/FileDescriptor;)V
-HSPLcom/android/server/net/NetworkStatsService;->forceUpdateIfaces([Landroid/net/Network;[Lcom/android/internal/net/VpnInfo;[Landroid/net/NetworkState;Ljava/lang/String;)V
-PLcom/android/server/net/NetworkStatsService;->getDetailedUidStats([Ljava/lang/String;)Landroid/net/NetworkStats;
-HSPLcom/android/server/net/NetworkStatsService;->getIfaceStats(Ljava/lang/String;I)J
-HSPLcom/android/server/net/NetworkStatsService;->getMobileIfaces()[Ljava/lang/String;
+HPLcom/android/server/net/NetworkStatsService;->findOrCreateNetworkIdentitySet(Landroid/util/ArrayMap;Ljava/lang/Object;)Lcom/android/server/net/NetworkIdentitySet;
+PLcom/android/server/net/NetworkStatsService;->forceUpdate()V
+HPLcom/android/server/net/NetworkStatsService;->forceUpdateIfaces([Landroid/net/Network;[Landroid/net/NetworkState;Ljava/lang/String;[Lcom/android/internal/net/VpnInfo;)V
+HSPLcom/android/server/net/NetworkStatsService;->getDefaultBaseDir()Ljava/io/File;
+HSPLcom/android/server/net/NetworkStatsService;->getDefaultClock()Ljava/time/Clock;
+HSPLcom/android/server/net/NetworkStatsService;->getDefaultSystemDir()Ljava/io/File;
+HPLcom/android/server/net/NetworkStatsService;->getDetailedUidStats([Ljava/lang/String;)Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsService;->getIfaceStats(Ljava/lang/String;I)J
+HPLcom/android/server/net/NetworkStatsService;->getMobileIfaces()[Ljava/lang/String;
+HSPLcom/android/server/net/NetworkStatsService;->getNetworkStatsFromProviders(I)Landroid/net/NetworkStats;
 HSPLcom/android/server/net/NetworkStatsService;->getNetworkStatsTethering(I)Landroid/net/NetworkStats;
 HSPLcom/android/server/net/NetworkStatsService;->getNetworkStatsUidDetail([Ljava/lang/String;)Landroid/net/NetworkStats;
-HSPLcom/android/server/net/NetworkStatsService;->getTetherStats(Ljava/lang/String;I)J
-PLcom/android/server/net/NetworkStatsService;->getTotalStats(I)J
-PLcom/android/server/net/NetworkStatsService;->getUidStats(II)J
-PLcom/android/server/net/NetworkStatsService;->incrementOperationCount(III)V
-HSPLcom/android/server/net/NetworkStatsService;->internalGetHistoryForNetwork(Landroid/net/NetworkTemplate;IIII)Landroid/net/NetworkStatsHistory;
-HSPLcom/android/server/net/NetworkStatsService;->internalGetSummaryForNetwork(Landroid/net/NetworkTemplate;IJJII)Landroid/net/NetworkStats;
-HSPLcom/android/server/net/NetworkStatsService;->isBandwidthControlEnabled()Z
-PLcom/android/server/net/NetworkStatsService;->isRateLimitedForPoll(I)Z
+HSPLcom/android/server/net/NetworkStatsService;->getNetworkStatsXt()Landroid/net/NetworkStats;
+HPLcom/android/server/net/NetworkStatsService;->getNetworkTotalBytes(Landroid/net/NetworkTemplate;JJ)J
+HPLcom/android/server/net/NetworkStatsService;->getTetherStats(Ljava/lang/String;I)J
+HPLcom/android/server/net/NetworkStatsService;->getTotalStats(I)J
+HPLcom/android/server/net/NetworkStatsService;->getUidStats(II)J
+HPLcom/android/server/net/NetworkStatsService;->incrementOperationCount(III)V
+HPLcom/android/server/net/NetworkStatsService;->internalGetHistoryForNetwork(Landroid/net/NetworkTemplate;IIII)Landroid/net/NetworkStatsHistory;
+HPLcom/android/server/net/NetworkStatsService;->internalGetSummaryForNetwork(Landroid/net/NetworkTemplate;IJJII)Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsService;->invokeForAllStatsProviderCallbacks(Lcom/android/server/net/NetworkStatsService$ThrowingConsumer;)V
+HPLcom/android/server/net/NetworkStatsService;->isRateLimitedForPoll(I)Z
+HPLcom/android/server/net/NetworkStatsService;->lambda$getNetworkStatsFromProviders$2(Landroid/net/NetworkStats;ILcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;)V
+HPLcom/android/server/net/NetworkStatsService;->lambda$performPollLocked$1(Lcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;)V
+PLcom/android/server/net/NetworkStatsService;->lambda$registerGlobalAlert$0$NetworkStatsService(Lcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;)V
 HSPLcom/android/server/net/NetworkStatsService;->maybeUpgradeLegacyStatsLocked()V
 PLcom/android/server/net/NetworkStatsService;->openSession()Landroid/net/INetworkStatsSession;
-PLcom/android/server/net/NetworkStatsService;->openSessionForUsageStats(ILjava/lang/String;)Landroid/net/INetworkStatsSession;
-PLcom/android/server/net/NetworkStatsService;->openSessionInternal(ILjava/lang/String;)Landroid/net/INetworkStatsSession;
-HSPLcom/android/server/net/NetworkStatsService;->performPoll(I)V
-HSPLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V
-HSPLcom/android/server/net/NetworkStatsService;->performSampleLocked()V
+HPLcom/android/server/net/NetworkStatsService;->openSessionForUsageStats(ILjava/lang/String;)Landroid/net/INetworkStatsSession;
+HPLcom/android/server/net/NetworkStatsService;->openSessionInternal(ILjava/lang/String;)Landroid/net/INetworkStatsSession;
+HPLcom/android/server/net/NetworkStatsService;->performPoll(I)V
+HPLcom/android/server/net/NetworkStatsService;->performPollLocked(I)V
+HPLcom/android/server/net/NetworkStatsService;->performSampleLocked()V
+HSPLcom/android/server/net/NetworkStatsService;->readNetworkStatsSummaryDev()Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsService;->readNetworkStatsSummaryXt()Landroid/net/NetworkStats;
+HSPLcom/android/server/net/NetworkStatsService;->readNetworkStatsUidDetail(I[Ljava/lang/String;I)Landroid/net/NetworkStats;
 HSPLcom/android/server/net/NetworkStatsService;->recordSnapshotLocked(J)V
 HSPLcom/android/server/net/NetworkStatsService;->registerGlobalAlert()V
-HSPLcom/android/server/net/NetworkStatsService;->registerPollAlarmLocked()V
-HSPLcom/android/server/net/NetworkStatsService;->registerUsageCallback(Ljava/lang/String;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/DataUsageRequest;
-HSPLcom/android/server/net/NetworkStatsService;->removeUidsLocked([I)V
-HSPLcom/android/server/net/NetworkStatsService;->resolveSubscriptionPlan(Landroid/net/NetworkTemplate;I)Landroid/telephony/SubscriptionPlan;
+HSPLcom/android/server/net/NetworkStatsService;->registerLocalService()V
+HSPLcom/android/server/net/NetworkStatsService;->registerNetworkStatsProvider(Ljava/lang/String;Landroid/net/netstats/provider/INetworkStatsProvider;)Landroid/net/netstats/provider/INetworkStatsProviderCallback;
+HPLcom/android/server/net/NetworkStatsService;->registerUsageCallback(Ljava/lang/String;Landroid/net/DataUsageRequest;Landroid/os/Messenger;Landroid/os/IBinder;)Landroid/net/DataUsageRequest;
+PLcom/android/server/net/NetworkStatsService;->removeUidsLocked([I)V
+HPLcom/android/server/net/NetworkStatsService;->removeUserLocked(I)V
+HPLcom/android/server/net/NetworkStatsService;->resolveSubscriptionPlan(Landroid/net/NetworkTemplate;I)Landroid/telephony/SubscriptionPlan;
+HSPLcom/android/server/net/NetworkStatsService;->setHandler(Landroid/os/Handler;Landroid/os/Handler$Callback;)V
 HSPLcom/android/server/net/NetworkStatsService;->setUidForeground(IZ)V
+PLcom/android/server/net/NetworkStatsService;->shutdownLocked()V
 HSPLcom/android/server/net/NetworkStatsService;->systemReady()V
-PLcom/android/server/net/NetworkStatsService;->unregisterUsageRequest(Landroid/net/DataUsageRequest;)V
-HSPLcom/android/server/net/NetworkStatsService;->updateIfaces([Landroid/net/Network;[Lcom/android/internal/net/VpnInfo;[Landroid/net/NetworkState;Ljava/lang/String;)V
-HSPLcom/android/server/net/NetworkStatsService;->updateIfacesLocked([Landroid/net/Network;[Landroid/net/NetworkState;)V
+HPLcom/android/server/net/NetworkStatsService;->unregisterUsageRequest(Landroid/net/DataUsageRequest;)V
+HPLcom/android/server/net/NetworkStatsService;->updateIfaces([Landroid/net/Network;[Landroid/net/NetworkState;Ljava/lang/String;)V
+HPLcom/android/server/net/NetworkStatsService;->updateIfacesLocked([Landroid/net/Network;[Landroid/net/NetworkState;)V
 HSPLcom/android/server/net/NetworkStatsService;->updatePersistThresholdsLocked()V
+HSPLcom/android/server/net/watchlist/-$$Lambda$WatchlistLoggingHandler$GBD0dX6RhipHIkM0Z_B5jLlwfHQ;-><init>(Lcom/android/server/net/watchlist/WatchlistLoggingHandler;I)V
 HSPLcom/android/server/net/watchlist/-$$Lambda$WatchlistLoggingHandler$GBD0dX6RhipHIkM0Z_B5jLlwfHQ;->apply(Ljava/lang/Object;)Ljava/lang/Object;
 HSPLcom/android/server/net/watchlist/DigestUtils;->getSha256Hash(Ljava/io/File;)[B
+HSPLcom/android/server/net/watchlist/DigestUtils;->getSha256Hash(Ljava/io/InputStream;)[B
+HSPLcom/android/server/net/watchlist/HarmfulCrcs;-><init>(Ljava/util/List;)V
+HPLcom/android/server/net/watchlist/HarmfulCrcs;->contains(I)Z
+HPLcom/android/server/net/watchlist/HarmfulCrcs;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/net/watchlist/HarmfulDigests;-><init>(Ljava/util/List;)V
-HSPLcom/android/server/net/watchlist/HarmfulDigests;->contains([B)Z
-HSPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onConnectEvent(Ljava/lang/String;IJI)V
-HSPLcom/android/server/net/watchlist/NetworkWatchlistService$1;->onDnsEvent(IIILjava/lang/String;[Ljava/lang/String;IJI)V
+HPLcom/android/server/net/watchlist/HarmfulDigests;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService$1;-><init>(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+HPLcom/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
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;->onStart()V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;-><clinit>()V
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->access$100(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->access$200(Lcom/android/server/net/watchlist/NetworkWatchlistService;)V
+HPLcom/android/server/net/watchlist/NetworkWatchlistService;->access$300(Lcom/android/server/net/watchlist/NetworkWatchlistService;)Z
 PLcom/android/server/net/watchlist/NetworkWatchlistService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->enforceWatchlistLoggingPermission()V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->init()V
+HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->initIpConnectivityMetrics()V
 PLcom/android/server/net/watchlist/NetworkWatchlistService;->reportWatchlistIfNecessary()V
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLogging()Z
 HSPLcom/android/server/net/watchlist/NetworkWatchlistService;->startWatchlistLoggingImpl()Z
-PLcom/android/server/net/watchlist/PrivacyUtils;->createDpEncodedReportMap(Z[BLjava/util/List;Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)Ljava/util/Map;
-PLcom/android/server/net/watchlist/PrivacyUtils;->createLongitudinalReportingConfig(Ljava/lang/String;)Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;
-PLcom/android/server/net/watchlist/ReportEncoder;->serializeReport(Lcom/android/server/net/watchlist/WatchlistConfig;Ljava/util/Map;)[B
+HPLcom/android/server/net/watchlist/PrivacyUtils;->createDpEncodedReportMap(Z[BLjava/util/List;Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)Ljava/util/Map;
+HPLcom/android/server/net/watchlist/PrivacyUtils;->createLongitudinalReportingConfig(Ljava/lang/String;)Landroid/privacy/internal/longitudinalreporting/LongitudinalReportingConfig;
+HPLcom/android/server/net/watchlist/PrivacyUtils;->createSecureDPEncoder([BLjava/lang/String;)Landroid/privacy/DifferentialPrivacyEncoder;
+PLcom/android/server/net/watchlist/ReportEncoder;->encodeWatchlistReport(Lcom/android/server/net/watchlist/WatchlistConfig;[BLjava/util/List;Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)[B
+HPLcom/android/server/net/watchlist/ReportEncoder;->serializeReport(Lcom/android/server/net/watchlist/WatchlistConfig;Ljava/util/Map;)[B
+HSPLcom/android/server/net/watchlist/ReportWatchlistJobService;-><clinit>()V
 PLcom/android/server/net/watchlist/ReportWatchlistJobService;-><init>()V
 PLcom/android/server/net/watchlist/ReportWatchlistJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/net/watchlist/ReportWatchlistJobService;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/net/watchlist/ReportWatchlistJobService;->schedule(Landroid/content/Context;)V
+HSPLcom/android/server/net/watchlist/WatchlistConfig$CrcShaDigests;-><init>(Lcom/android/server/net/watchlist/HarmfulCrcs;Lcom/android/server/net/watchlist/HarmfulDigests;)V
+HSPLcom/android/server/net/watchlist/WatchlistConfig;-><clinit>()V
 HSPLcom/android/server/net/watchlist/WatchlistConfig;-><init>()V
-HSPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
-HSPLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
+HSPLcom/android/server/net/watchlist/WatchlistConfig;-><init>(Ljava/io/File;)V
+HPLcom/android/server/net/watchlist/WatchlistConfig;->containsDomain(Ljava/lang/String;)Z
+HPLcom/android/server/net/watchlist/WatchlistConfig;->containsIp(Ljava/lang/String;)Z
 PLcom/android/server/net/watchlist/WatchlistConfig;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/net/watchlist/WatchlistConfig;->getCrc32(Ljava/lang/String;)[B
+HPLcom/android/server/net/watchlist/WatchlistConfig;->getCrc32(Ljava/lang/String;)I
+HSPLcom/android/server/net/watchlist/WatchlistConfig;->getInstance()Lcom/android/server/net/watchlist/WatchlistConfig;
 PLcom/android/server/net/watchlist/WatchlistConfig;->getWatchlistConfigHash()[B
 PLcom/android/server/net/watchlist/WatchlistConfig;->isConfigSecure()Z
 HSPLcom/android/server/net/watchlist/WatchlistConfig;->parseHashes(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/util/List;)V
 HSPLcom/android/server/net/watchlist/WatchlistConfig;->reloadConfig()V
 HSPLcom/android/server/net/watchlist/WatchlistConfig;->removeTestModeConfig()V
+HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><clinit>()V
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V
+PLcom/android/server/net/watchlist/WatchlistLoggingHandler;->addEncodedReportToDropBox([B)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->asyncNetworkEvent(Ljava/lang/String;[Ljava/lang/String;I)V
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllDigestsForReport(Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;)Ljava/util/List;
-HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getAllSubDomains(Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getDigestFromUid(I)[B
+HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getLastMidnightTime()J
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getMidnightTimestamp(I)J
+HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->getPrimaryUserId()I
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleNetworkEvent(Ljava/lang/String;[Ljava/lang/String;IJ)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->handleNetworkEvent(Ljava/lang/String;[Ljava/lang/String;IJ)V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isHostInWatchlist(Ljava/lang/String;)Z
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->isIpInWatchlist(Ljava/lang/String;)Z
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->lambda$getDigestFromUid$0$WatchlistLoggingHandler(ILjava/lang/Integer;)[B
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->reportWatchlistIfNecessary()V
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchAllSubDomainsInWatchlist(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->searchIpInWatchlist([Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->shouldReportNetworkWatchlist(J)Z
 HSPLcom/android/server/net/watchlist/WatchlistLoggingHandler;->tryAggregateRecords(J)V
+HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;-><init>(Ljava/util/Set;Ljava/lang/String;Ljava/util/HashMap;)V
+HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><clinit>()V
+HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;->cleanup(J)Z
 HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getAggregatedRecords(J)Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;
 HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getInstance(Landroid/content/Context;)Lcom/android/server/net/watchlist/WatchlistReportDbHelper;
+HSPLcom/android/server/net/watchlist/WatchlistReportDbHelper;->getSystemWatchlistDbFile()Ljava/io/File;
+HSPLcom/android/server/net/watchlist/WatchlistSettings;-><clinit>()V
 HSPLcom/android/server/net/watchlist/WatchlistSettings;-><init>()V
 HSPLcom/android/server/net/watchlist/WatchlistSettings;-><init>(Ljava/io/File;)V
+HSPLcom/android/server/net/watchlist/WatchlistSettings;->getInstance()Lcom/android/server/net/watchlist/WatchlistSettings;
 PLcom/android/server/net/watchlist/WatchlistSettings;->getPrivacySecretKey()[B
+HSPLcom/android/server/net/watchlist/WatchlistSettings;->getSystemWatchlistFile()Ljava/io/File;
 HSPLcom/android/server/net/watchlist/WatchlistSettings;->parseSecretKey(Lorg/xmlpull/v1/XmlPullParser;)[B
 HSPLcom/android/server/net/watchlist/WatchlistSettings;->reloadSettings()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$10$BRIIoO5T43uig1Sv3P_yA2lc3LA;-><init>(Lcom/android/server/notification/NotificationManagerService$10;Ljava/lang/String;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$10$BRIIoO5T43uig1Sv3P_yA2lc3LA;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$11$JotEN8cxCghuwRUNQKNwudTtDmM;-><init>(Lcom/android/server/notification/NotificationManagerService$11;Ljava/lang/String;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$11$JotEN8cxCghuwRUNQKNwudTtDmM;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$11$zVdn9N0ybkMxz8xM8Qa1AXowlic;-><init>(Lcom/android/server/notification/NotificationManagerService$11;Ljava/lang/String;II)V
 PLcom/android/server/notification/-$$Lambda$NotificationManagerService$11$zVdn9N0ybkMxz8xM8Qa1AXowlic;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$12$-k8J5tgk6UDzy6Im2nYiWZgVEDI;-><init>(Lcom/android/server/notification/NotificationManagerService$12;Ljava/lang/String;II)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$12$-k8J5tgk6UDzy6Im2nYiWZgVEDI;->run()V
+HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$12gEiRp5yhg_vLn2NsMtnAkm3GI;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$12gEiRp5yhg_vLn2NsMtnAkm3GI;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
 HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$14$hWnH6mjUAxwVmpU3QRoPHh5_FyI;-><init>(II)V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$14$hWnH6mjUAxwVmpU3QRoPHh5_FyI;->apply(I)Z
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$abFvb_HauetvHhQ-f76bsAGew0s;-><init>()V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$abFvb_HauetvHhQ-f76bsAGew0s;->apply(I)Z
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$8Pjq1sh4PByau66KrVt7XTs1eXA;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/CharSequence;)V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$8Pjq1sh4PByau66KrVt7XTs1eXA;->runOrThrow()V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$Ehw7Jxsy3ZIwTcAa2DFsHjIULas;->run()V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$IYb2LsvzgH956pBM2VntPM0-21A;->run()V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$03ForXNcU0L8j72c6kqcuawuSgg;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$8526LUpwQ8eBesZREQSLe_J-CfQ;->run()V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$FeL2M_vNfZUM3ReF-ma0lRPyBKs;->run()V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$RolhaooirdwiAboxLhPcVG4eq7Y;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$TvLOVwAcs9019WRaYp9FxzKF5IE;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$cPE_ZmWqkchox5ocNJyIa3vlbAU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$yo8elBmcIwdMbMVaigHxvG4j5zc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$3bretMyG2YyNFKU5plLQgmxuGr0;->run()V
-PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$Srt8NNqA1xJUAp_7nDU6CBZJm_0;->run()V
-HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$T5BM1IF40aMGtqZZRr6BWGjzNxA;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$14$hWnH6mjUAxwVmpU3QRoPHh5_FyI;->apply(I)Z
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$U436K_bi4RF3tuE3ATVdL4kLpsQ;-><init>(I)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$U436K_bi4RF3tuE3ATVdL4kLpsQ;->apply(I)Z
+HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$wXaTmmz_lG6grUqU8upk0686eXA;-><init>(II)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$15$wXaTmmz_lG6grUqU8upk0686eXA;->apply(I)Z
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$16$zTgrLv-fwhUBKBfo6G4cZaGAhWs;-><init>(I)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$16$zTgrLv-fwhUBKBfo6G4cZaGAhWs;->apply(I)Z
+HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$1IFJYiXNBcQVsabIke0xY_TgCZI;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/os/VibrationEffect;)V
+HSPLcom/android/server/notification/-$$Lambda$NotificationManagerService$1IFJYiXNBcQVsabIke0xY_TgCZI;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$CancelNotificationRunnable$1i8BOFS2Ap_BvazcwqssFxW6U1U;-><clinit>()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$CancelNotificationRunnable$1i8BOFS2Ap_BvazcwqssFxW6U1U;-><init>()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$CancelNotificationRunnable$1i8BOFS2Ap_BvazcwqssFxW6U1U;->apply(I)Z
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$-pTtydmbKR53sVGAi5B-_cGeLDo;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;Ljava/lang/CharSequence;Z)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$-pTtydmbKR53sVGAi5B-_cGeLDo;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$2uJN0X0VDgKmWRoJqYsux0bhlYo;-><init>(Ljava/util/function/BiConsumer;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$2uJN0X0VDgKmWRoJqYsux0bhlYo;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$3ktx5hfF9rabi25qaQLZ-YvqPO4;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;Ljava/lang/CharSequence;Z)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$3ktx5hfF9rabi25qaQLZ-YvqPO4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$6E04T6AkRfKEIjCw7jopFAFGv30;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$6E04T6AkRfKEIjCw7jopFAFGv30;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$FrOqX0VMAS0gs6vhrmVEabwpi2k;-><init>(Ljava/util/function/BiConsumer;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$FrOqX0VMAS0gs6vhrmVEabwpi2k;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$Rqv2CeOOOVMkVDRSXa6GcHvi5Vc;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;Landroid/app/Notification$Action;Z)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$Rqv2CeOOOVMkVDRSXa6GcHvi5Vc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$S2EUT9RRW0P4hWLU4YD7mrnGPII;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;ZLcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$S2EUT9RRW0P4hWLU4YD7mrnGPII;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$fguXa8ZWUwjg4Css0w9IvLwqTno;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;Z)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$fguXa8ZWUwjg4Css0w9IvLwqTno;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$h7WPxGy6WExnaTHJZiTUqSURFAU;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;ZZ)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$h7WPxGy6WExnaTHJZiTUqSURFAU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$hdUZ_hmwLutGkIKdq7dHKjQLP4E;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$hdUZ_hmwLutGkIKdq7dHKjQLP4E;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$j__6VKF3Ej58Ecwq9KDrcYMRydI;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$j__6VKF3Ej58Ecwq9KDrcYMRydI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$ou_FTabXQDrMmZWvZYfT09jSrKI;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;ZZ)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$ou_FTabXQDrMmZWvZYfT09jSrKI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$pzk58E_uhN8zWEPqtMQoUZpAM4k;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$pzk58E_uhN8zWEPqtMQoUZpAM4k;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$qNPzonSecZ4lX0Og0m8NERBS_UQ;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$qNPzonSecZ4lX0Og0m8NERBS_UQ;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$uDzVB3NwVCerv0Z5si1fGXZkZu4;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Ljava/lang/String;Landroid/app/Notification$Action;Z)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$uDzVB3NwVCerv0Z5si1fGXZkZu4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$xFD5w0lXKCfWgU2f03eJAOPQABs;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;ZLcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$xFD5w0lXKCfWgU2f03eJAOPQABs;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$3bretMyG2YyNFKU5plLQgmxuGr0;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$3bretMyG2YyNFKU5plLQgmxuGr0;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$Srt8NNqA1xJUAp_7nDU6CBZJm_0;-><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/-$$Lambda$NotificationManagerService$NotificationListeners$Srt8NNqA1xJUAp_7nDU6CBZJm_0;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$T5BM1IF40aMGtqZZRr6BWGjzNxA;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$T5BM1IF40aMGtqZZRr6BWGjzNxA;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$PostNotificationRunnable$9JuPmiaA-c5lGdegev6EaTigwWc;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$PostNotificationRunnable$9JuPmiaA-c5lGdegev6EaTigwWc;->run()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$msGTh8UV2euOI6xhjY-rx_tZTLM;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/UserInfo;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$msGTh8UV2euOI6xhjY-rx_tZTLM;->run()V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$qSGWKI1fXQ1cTJ2fD072f_33txY;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/CharSequence;)V
+HPLcom/android/server/notification/-$$Lambda$NotificationManagerService$qSGWKI1fXQ1cTJ2fD072f_33txY;->runOrThrow()V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$qbzDjihCkTumQH-EnAW4i5wobvM;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/UserInfo;)V
+PLcom/android/server/notification/-$$Lambda$NotificationManagerService$qbzDjihCkTumQH-EnAW4i5wobvM;->run()V
+HSPLcom/android/server/notification/-$$Lambda$NotificationRecord$XgkrZGcjOHPHem34oE9qLGy3siA;-><init>(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/-$$Lambda$NotificationRecord$XgkrZGcjOHPHem34oE9qLGy3siA;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/notification/-$$Lambda$SnoozeHelper$333G5Hgba3G7RU9lYp0HmgKJBvA;-><init>(JLorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/notification/-$$Lambda$SnoozeHelper$333G5Hgba3G7RU9lYp0HmgKJBvA;->insert(Ljava/lang/Object;)V
+HSPLcom/android/server/notification/-$$Lambda$SnoozeHelper$uY_yjjODxoDQVadkBTGNFqh7pco;-><init>(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/notification/-$$Lambda$V4J7df5A6vhSIuw7Ym9xgkfahto;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
 HSPLcom/android/server/notification/-$$Lambda$V4J7df5A6vhSIuw7Ym9xgkfahto;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLcom/android/server/notification/AlertRateLimiter;-><init>()V
 HSPLcom/android/server/notification/AlertRateLimiter;->shouldRateLimitAlert(J)Z
 HSPLcom/android/server/notification/BadgeExtractor;-><init>()V
 HSPLcom/android/server/notification/BadgeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
@@ -9181,18 +20479,26 @@
 HSPLcom/android/server/notification/BubbleExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/BubbleExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/BubbleExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/CalendarTracker$1;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/notification/CalendarTracker$1;-><init>(Lcom/android/server/notification/CalendarTracker;Landroid/os/Handler;)V
+HPLcom/android/server/notification/CalendarTracker$1;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/notification/CalendarTracker$CheckEventResult;-><init>()V
+HSPLcom/android/server/notification/CalendarTracker;-><clinit>()V
+HSPLcom/android/server/notification/CalendarTracker;-><init>(Landroid/content/Context;Landroid/content/Context;)V
+PLcom/android/server/notification/CalendarTracker;->access$000()Z
+PLcom/android/server/notification/CalendarTracker;->access$200(Lcom/android/server/notification/CalendarTracker;)Lcom/android/server/notification/CalendarTracker$Callback;
 HSPLcom/android/server/notification/CalendarTracker;->checkEvent(Landroid/service/notification/ZenModeConfig$EventInfo;J)Lcom/android/server/notification/CalendarTracker$CheckEventResult;
 PLcom/android/server/notification/CalendarTracker;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/notification/CalendarTracker;->getCalendarsWithAccess()Landroid/util/ArraySet;
-PLcom/android/server/notification/CalendarTracker;->meetsAttendee(Landroid/service/notification/ZenModeConfig$EventInfo;ILjava/lang/String;)Z
+HPLcom/android/server/notification/CalendarTracker;->meetsAttendee(Landroid/service/notification/ZenModeConfig$EventInfo;ILjava/lang/String;)Z
+PLcom/android/server/notification/CalendarTracker;->meetsReply(II)Z
 HSPLcom/android/server/notification/CalendarTracker;->setCallback(Lcom/android/server/notification/CalendarTracker$Callback;)V
 HSPLcom/android/server/notification/CalendarTracker;->setRegistered(Z)V
+HSPLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;)V
+HSPLcom/android/server/notification/ConditionProviders$ConditionRecord;-><init>(Landroid/net/Uri;Landroid/content/ComponentName;Lcom/android/server/notification/ConditionProviders$1;)V
 PLcom/android/server/notification/ConditionProviders$ConditionRecord;->toString()Ljava/lang/String;
 HSPLcom/android/server/notification/ConditionProviders;-><init>(Landroid/content/Context;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
 HSPLcom/android/server/notification/ConditionProviders;->addSystemProvider(Lcom/android/server/notification/SystemConditionProviderService;)V
-HSPLcom/android/server/notification/ConditionProviders;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/notification/ConditionProviders;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
 HSPLcom/android/server/notification/ConditionProviders;->checkServiceToken(Landroid/service/notification/IConditionProvider;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 PLcom/android/server/notification/ConditionProviders;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/ConditionProviders;->ensureRecordExists(Landroid/content/ComponentName;Landroid/net/Uri;Landroid/service/notification/IConditionProvider;)V
@@ -9206,34 +20512,67 @@
 PLcom/android/server/notification/ConditionProviders;->isValidEntry(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/ConditionProviders;->notifyConditions(Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
 HSPLcom/android/server/notification/ConditionProviders;->onBootPhaseAppsCanStart()V
-HSPLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/ConditionProviders;->onPackagesChanged(Z[Ljava/lang/String;[I)V
 HSPLcom/android/server/notification/ConditionProviders;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HSPLcom/android/server/notification/ConditionProviders;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/ConditionProviders;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
 HSPLcom/android/server/notification/ConditionProviders;->onUserSwitched(I)V
+HSPLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)Landroid/service/notification/IConditionProvider;
+HSPLcom/android/server/notification/ConditionProviders;->provider(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/IConditionProvider;
 HSPLcom/android/server/notification/ConditionProviders;->removeDuplicateConditions(Ljava/lang/String;[Landroid/service/notification/Condition;)[Landroid/service/notification/Condition;
+PLcom/android/server/notification/ConditionProviders;->resetPackage(Ljava/lang/String;I)Z
+HSPLcom/android/server/notification/ConditionProviders;->safeSet([Ljava/lang/Object;)Landroid/util/ArraySet;
 HSPLcom/android/server/notification/ConditionProviders;->setCallback(Lcom/android/server/notification/ConditionProviders$Callback;)V
 HSPLcom/android/server/notification/ConditionProviders;->subscribeIfNecessary(Landroid/content/ComponentName;Landroid/net/Uri;)Z
 HSPLcom/android/server/notification/ConditionProviders;->subscribeLocked(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V
+PLcom/android/server/notification/ConditionProviders;->unsubscribeIfNecessary(Landroid/content/ComponentName;Landroid/net/Uri;)V
+PLcom/android/server/notification/ConditionProviders;->unsubscribeLocked(Lcom/android/server/notification/ConditionProviders$ConditionRecord;)V
+HSPLcom/android/server/notification/ConditionProviders;->writeDefaults(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;)V
+HSPLcom/android/server/notification/CountdownConditionProvider$Receiver;-><init>(Lcom/android/server/notification/CountdownConditionProvider;Lcom/android/server/notification/CountdownConditionProvider$1;)V
+PLcom/android/server/notification/CountdownConditionProvider$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/CountdownConditionProvider;-><clinit>()V
+HSPLcom/android/server/notification/CountdownConditionProvider;-><init>()V
+PLcom/android/server/notification/CountdownConditionProvider;->access$100()Ljava/lang/String;
+PLcom/android/server/notification/CountdownConditionProvider;->access$200()Z
+PLcom/android/server/notification/CountdownConditionProvider;->access$300(JZI)Landroid/service/notification/Condition;
 HSPLcom/android/server/notification/CountdownConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
 HSPLcom/android/server/notification/CountdownConditionProvider;->attachBase(Landroid/content/Context;)V
 PLcom/android/server/notification/CountdownConditionProvider;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/CountdownConditionProvider;->getComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/notification/CountdownConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/CountdownConditionProvider;->newCondition(JZI)Landroid/service/notification/Condition;
 HSPLcom/android/server/notification/CountdownConditionProvider;->onBootComplete()V
 HSPLcom/android/server/notification/CountdownConditionProvider;->onConnected()V
+PLcom/android/server/notification/CountdownConditionProvider;->onSubscribe(Landroid/net/Uri;)V
+PLcom/android/server/notification/CountdownConditionProvider;->onUnsubscribe(Landroid/net/Uri;)V
 PLcom/android/server/notification/CountdownConditionProvider;->tryParseDescription(Landroid/net/Uri;)Ljava/lang/String;
 HSPLcom/android/server/notification/CriticalNotificationExtractor;-><init>()V
 HSPLcom/android/server/notification/CriticalNotificationExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/CriticalNotificationExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/CriticalNotificationExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/CriticalNotificationExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
-PLcom/android/server/notification/EventConditionProvider$2;->onChanged()V
-HSPLcom/android/server/notification/EventConditionProvider$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/CriticalNotificationExtractor;->supportsCriticalNotifications(Landroid/content/Context;)Z
+HSPLcom/android/server/notification/EventConditionProvider$1;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/EventConditionProvider$2;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
+HPLcom/android/server/notification/EventConditionProvider$2;->onChanged()V
+HSPLcom/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
+HSPLcom/android/server/notification/EventConditionProvider$4;-><init>(Lcom/android/server/notification/EventConditionProvider;)V
 HSPLcom/android/server/notification/EventConditionProvider$4;->run()V
+HSPLcom/android/server/notification/EventConditionProvider;-><clinit>()V
 HSPLcom/android/server/notification/EventConditionProvider;-><init>()V
+PLcom/android/server/notification/EventConditionProvider;->access$000(Lcom/android/server/notification/EventConditionProvider;)V
+PLcom/android/server/notification/EventConditionProvider;->access$100()Z
+HPLcom/android/server/notification/EventConditionProvider;->access$200(Lcom/android/server/notification/EventConditionProvider;)Ljava/lang/Runnable;
+HPLcom/android/server/notification/EventConditionProvider;->access$300(Lcom/android/server/notification/EventConditionProvider;)Landroid/os/Handler;
+PLcom/android/server/notification/EventConditionProvider;->access$400(Lcom/android/server/notification/EventConditionProvider;)V
+HSPLcom/android/server/notification/EventConditionProvider;->access$500(Lcom/android/server/notification/EventConditionProvider;)V
 HSPLcom/android/server/notification/EventConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
 HSPLcom/android/server/notification/EventConditionProvider;->attachBase(Landroid/content/Context;)V
+HSPLcom/android/server/notification/EventConditionProvider;->createCondition(Landroid/net/Uri;I)Landroid/service/notification/Condition;
 PLcom/android/server/notification/EventConditionProvider;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HSPLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptions()V
 HSPLcom/android/server/notification/EventConditionProvider;->evaluateSubscriptionsW()V
 HSPLcom/android/server/notification/EventConditionProvider;->getComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/notification/EventConditionProvider;->getContextForUser(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/content/Context;
@@ -9244,85 +20583,124 @@
 HSPLcom/android/server/notification/EventConditionProvider;->reloadTrackers()V
 HSPLcom/android/server/notification/EventConditionProvider;->rescheduleAlarm(JJ)V
 HSPLcom/android/server/notification/EventConditionProvider;->setRegistered(Z)V
-HSPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
-HSPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/notification/GroupHelper;->adjustNotificationBundling(Ljava/util/List;Z)V
-HSPLcom/android/server/notification/GroupHelper;->maybeUngroup(Landroid/service/notification/StatusBarNotification;ZI)V
+HSPLcom/android/server/notification/GlobalSortKeyComparator;-><init>()V
+HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/GlobalSortKeyComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/notification/GroupHelper;-><clinit>()V
+HSPLcom/android/server/notification/GroupHelper;-><init>(ILcom/android/server/notification/GroupHelper$Callback;)V
+HPLcom/android/server/notification/GroupHelper;->addToOngoingGroupCount(Landroid/service/notification/StatusBarNotification;Z)V
+PLcom/android/server/notification/GroupHelper;->adjustAutogroupingSummary(ILjava/lang/String;Ljava/lang/String;Z)V
+HPLcom/android/server/notification/GroupHelper;->adjustNotificationBundling(Ljava/util/List;Z)V
+HPLcom/android/server/notification/GroupHelper;->generatePackageGroupKey(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/GroupHelper;->maybeUngroup(Landroid/service/notification/StatusBarNotification;ZI)V
 HSPLcom/android/server/notification/GroupHelper;->onNotificationPosted(Landroid/service/notification/StatusBarNotification;Z)V
-HSPLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/GroupHelper;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;)V
+HPLcom/android/server/notification/GroupHelper;->onNotificationUpdated(Landroid/service/notification/StatusBarNotification;Z)V
 HSPLcom/android/server/notification/ImportanceExtractor;-><init>()V
 HSPLcom/android/server/notification/ImportanceExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/ImportanceExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/ImportanceExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/ImportanceExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ManagedServices$1$1;-><init>(Lcom/android/server/notification/ManagedServices$1;Landroid/content/ComponentName;)V
 PLcom/android/server/notification/ManagedServices$1$1;->run()V
-HSPLcom/android/server/notification/ManagedServices$1;->onBindingDied(Landroid/content/ComponentName;)V
-HSPLcom/android/server/notification/ManagedServices$1;->onNullBinding(Landroid/content/ComponentName;)V
+HSPLcom/android/server/notification/ManagedServices$1;-><init>(Lcom/android/server/notification/ManagedServices;ILandroid/util/Pair;ZI)V
+PLcom/android/server/notification/ManagedServices$1;->onBindingDied(Landroid/content/ComponentName;)V
+PLcom/android/server/notification/ManagedServices$1;->onNullBinding(Landroid/content/ComponentName;)V
 HSPLcom/android/server/notification/ManagedServices$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/notification/ManagedServices$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HSPLcom/android/server/notification/ManagedServices$Config;-><init>()V
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;-><init>(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)V
-HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->binderDied()V
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->binderDied()V
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/notification/ManagedServices;)V
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->enabledAndUserMatches(I)Z
-HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getOwner()Lcom/android/server/notification/ManagedServices;
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->getOwner()Lcom/android/server/notification/ManagedServices;
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->hashCode()I
 HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isEnabledForCurrentProfiles()Z
-HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isGuest(Lcom/android/server/notification/ManagedServices;)Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isPermittedForProfile(I)Z
-HSPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->supportsProfiles()Z
-PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->writeToProto(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/notification/ManagedServices;)V
+PLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isGuest(Lcom/android/server/notification/ManagedServices;)Z
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isPermittedForProfile(I)Z
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->isSameUser(I)Z
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->supportsProfiles()Z
+HPLcom/android/server/notification/ManagedServices$ManagedServiceInfo;->toString()Ljava/lang/String;
+HSPLcom/android/server/notification/ManagedServices$UserProfiles;-><init>()V
 HSPLcom/android/server/notification/ManagedServices$UserProfiles;->getCurrentProfileIds()Landroid/util/IntArray;
-PLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z
+HPLcom/android/server/notification/ManagedServices$UserProfiles;->isCurrentProfile(I)Z
 HSPLcom/android/server/notification/ManagedServices$UserProfiles;->isManagedProfile(I)Z
 HSPLcom/android/server/notification/ManagedServices$UserProfiles;->updateCache(Landroid/content/Context;)V
 HSPLcom/android/server/notification/ManagedServices;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/notification/ManagedServices$UserProfiles;Landroid/content/pm/IPackageManager;)V
+HSPLcom/android/server/notification/ManagedServices;->access$000(Lcom/android/server/notification/ManagedServices;)Ljava/lang/String;
+HSPLcom/android/server/notification/ManagedServices;->access$100(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+HSPLcom/android/server/notification/ManagedServices;->access$1000(Lcom/android/server/notification/ManagedServices;)Landroid/util/ArraySet;
+HSPLcom/android/server/notification/ManagedServices;->access$200(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+HSPLcom/android/server/notification/ManagedServices;->access$300(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
+PLcom/android/server/notification/ManagedServices;->access$400(Lcom/android/server/notification/ManagedServices;Landroid/content/ServiceConnection;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->access$500(Lcom/android/server/notification/ManagedServices;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->access$600(Lcom/android/server/notification/ManagedServices;)Landroid/os/Handler;
+PLcom/android/server/notification/ManagedServices;->access$700(Lcom/android/server/notification/ManagedServices;)Ljava/util/ArrayList;
+HPLcom/android/server/notification/ManagedServices;->access$800(Lcom/android/server/notification/ManagedServices;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+PLcom/android/server/notification/ManagedServices;->access$900(Lcom/android/server/notification/ManagedServices;Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 HSPLcom/android/server/notification/ManagedServices;->addApprovedList(Ljava/lang/String;IZ)V
 HSPLcom/android/server/notification/ManagedServices;->bindToServices(Landroid/util/SparseArray;)V
+HSPLcom/android/server/notification/ManagedServices;->checkNotNull(Landroid/os/IInterface;)V
 HSPLcom/android/server/notification/ManagedServices;->checkServiceTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-PLcom/android/server/notification/ManagedServices;->dump(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
-PLcom/android/server/notification/ManagedServices;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/ManagedServices;->dump(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/ManagedServices;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/ManagedServices;->getAllowedComponents(I)Ljava/util/List;
 HSPLcom/android/server/notification/ManagedServices;->getAllowedComponents(Landroid/util/IntArray;)Landroid/util/SparseArray;
 HSPLcom/android/server/notification/ManagedServices;->getAllowedPackages()Ljava/util/Set;
+PLcom/android/server/notification/ManagedServices;->getAllowedPackages(I)Ljava/util/List;
+HSPLcom/android/server/notification/ManagedServices;->getApprovedValue(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/notification/ManagedServices;->getBindFlags()I
+HSPLcom/android/server/notification/ManagedServices;->getCaption()Ljava/lang/String;
+HSPLcom/android/server/notification/ManagedServices;->getDefaultComponents()Landroid/util/ArraySet;
 HSPLcom/android/server/notification/ManagedServices;->getPackageName(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/notification/ManagedServices;->getRemovableConnectedServices()Ljava/util/Set;
 HSPLcom/android/server/notification/ManagedServices;->getServiceFromTokenLocked(Landroid/os/IInterface;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 HSPLcom/android/server/notification/ManagedServices;->getServices()Ljava/util/List;
+PLcom/android/server/notification/ManagedServices;->hasMatchingServices(Ljava/lang/String;I)Z
 PLcom/android/server/notification/ManagedServices;->isComponentEnabledForCurrentProfiles(Landroid/content/ComponentName;)Z
-HSPLcom/android/server/notification/ManagedServices;->isComponentEnabledForPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/ManagedServices;->isPackageAllowed(Ljava/lang/String;I)Z
+PLcom/android/server/notification/ManagedServices;->isComponentEnabledForPackage(Ljava/lang/String;)Z
+PLcom/android/server/notification/ManagedServices;->isDefaultComponentOrPackage(Ljava/lang/String;)Z
+HPLcom/android/server/notification/ManagedServices;->isPackageAllowed(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/ManagedServices;->isPackageOrComponentAllowed(Ljava/lang/String;I)Z
-HSPLcom/android/server/notification/ManagedServices;->isSameUser(Landroid/os/IInterface;I)Z
-HSPLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z
+HPLcom/android/server/notification/ManagedServices;->isSameUser(Landroid/os/IInterface;I)Z
+HPLcom/android/server/notification/ManagedServices;->isServiceTokenValidLocked(Landroid/os/IInterface;)Z
 PLcom/android/server/notification/ManagedServices;->isValidEntry(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/ManagedServices;->loadComponentNamesFromValues(Landroid/util/ArraySet;I)Landroid/util/ArraySet;
+HSPLcom/android/server/notification/ManagedServices;->newServiceInfo(Landroid/os/IInterface;Landroid/content/ComponentName;IZLandroid/content/ServiceConnection;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 HSPLcom/android/server/notification/ManagedServices;->onBootPhaseAppsCanStart()V
-HSPLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/ManagedServices;->onPackagesChanged(Z[Ljava/lang/String;[I)V
+PLcom/android/server/notification/ManagedServices;->onUserRemoved(I)V
 HSPLcom/android/server/notification/ManagedServices;->onUserSwitched(I)V
-HSPLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V
+PLcom/android/server/notification/ManagedServices;->onUserUnlocked(I)V
 HSPLcom/android/server/notification/ManagedServices;->populateComponentsToBind(Landroid/util/SparseArray;Landroid/util/IntArray;Landroid/util/SparseArray;)V
 HSPLcom/android/server/notification/ManagedServices;->populateComponentsToUnbind(ZLjava/util/Set;Landroid/util/SparseArray;Landroid/util/SparseArray;)V
 HSPLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;I)Ljava/util/Set;
-HSPLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Ljava/util/Set;
+HSPLcom/android/server/notification/ManagedServices;->queryPackageForServices(Ljava/lang/String;II)Landroid/util/ArraySet;
+HSPLcom/android/server/notification/ManagedServices;->readDefaults(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/notification/ManagedServices;->readExtraAttributes(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;I)V
 HSPLcom/android/server/notification/ManagedServices;->readXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/internal/util/function/TriPredicate;ZI)V
 HSPLcom/android/server/notification/ManagedServices;->rebindServices(ZI)V
 HSPLcom/android/server/notification/ManagedServices;->registerGuestService(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
 HSPLcom/android/server/notification/ManagedServices;->registerService(Landroid/content/ComponentName;I)V
 HSPLcom/android/server/notification/ManagedServices;->registerService(Landroid/os/IInterface;Landroid/content/ComponentName;I)V
+HSPLcom/android/server/notification/ManagedServices;->registerServiceImpl(Landroid/os/IInterface;Landroid/content/ComponentName;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
 HSPLcom/android/server/notification/ManagedServices;->registerServiceImpl(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
+HSPLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;I)V
 HSPLcom/android/server/notification/ManagedServices;->registerServiceLocked(Landroid/content/ComponentName;IZ)V
-HSPLcom/android/server/notification/ManagedServices;->removeServiceImpl(Landroid/os/IInterface;I)Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
-HSPLcom/android/server/notification/ManagedServices;->removeUninstalledItemsFromApprovedLists(ILjava/lang/String;)Z
-HSPLcom/android/server/notification/ManagedServices;->setComponentState(Landroid/content/ComponentName;Z)V
+HPLcom/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;
+HPLcom/android/server/notification/ManagedServices;->removeUninstalledItemsFromApprovedLists(ILjava/lang/String;)Z
+PLcom/android/server/notification/ManagedServices;->resetComponents(Ljava/lang/String;I)Landroid/util/ArrayMap;
+HPLcom/android/server/notification/ManagedServices;->setComponentState(Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/notification/ManagedServices;->setPackageOrComponentEnabled(Ljava/lang/String;IZZ)V
-PLcom/android/server/notification/ManagedServices;->trimApprovedListsAccordingToInstalledServices(I)V
+HPLcom/android/server/notification/ManagedServices;->trimApprovedListsAccordingToInstalledServices(I)V
 HSPLcom/android/server/notification/ManagedServices;->unbindFromServices(Landroid/util/SparseArray;)V
-HSPLcom/android/server/notification/ManagedServices;->unbindService(Landroid/content/ServiceConnection;Landroid/content/ComponentName;I)V
-HSPLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/content/ComponentName;I)V
-HSPLcom/android/server/notification/ManagedServices;->unregisterService(Landroid/os/IInterface;I)V
-HSPLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/ManagedServices;->unbindService(Landroid/content/ServiceConnection;Landroid/content/ComponentName;I)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
+HPLcom/android/server/notification/ManagedServices;->unregisterServiceLocked(Landroid/content/ComponentName;I)V
+HSPLcom/android/server/notification/ManagedServices;->writeDefaults(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/notification/ManagedServices;->writeExtraAttributes(Lorg/xmlpull/v1/XmlSerializer;I)V
 HSPLcom/android/server/notification/ManagedServices;->writeExtraXmlTags(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/notification/ManagedServices;->writeXml(Lorg/xmlpull/v1/XmlSerializer;ZI)V
@@ -9336,156 +20714,397 @@
 HSPLcom/android/server/notification/NotificationChannelExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/NotificationChannelExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/NotificationChannelExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/NotificationComparator$1;-><init>(Lcom/android/server/notification/NotificationComparator;)V
+PLcom/android/server/notification/NotificationComparator$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/notification/NotificationComparator;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
-HSPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/notification/NotificationComparator;->isDefaultPhoneApp(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
-HSPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
-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/NotificationComparator;->access$002(Lcom/android/server/notification/NotificationComparator;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/notification/NotificationComparator;->compare(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/NotificationComparator;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/notification/NotificationComparator;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isDefaultPhoneApp(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantColorized(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantMessaging(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantOngoing(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isImportantPeople(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isMediaNotification(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationComparator;->isOngoing(Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationHistoryManager;Landroid/os/Handler;)V
+HSPLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->observe()V
+HSPLcom/android/server/notification/NotificationHistoryManager$SettingsObserver;->update(Landroid/net/Uri;I)V
+HSPLcom/android/server/notification/NotificationHistoryManager;-><clinit>()V
+HSPLcom/android/server/notification/NotificationHistoryManager;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/notification/NotificationHistoryManager;->access$000(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/content/Context;
+HSPLcom/android/server/notification/NotificationHistoryManager;->access$100(Lcom/android/server/notification/NotificationHistoryManager;)Ljava/lang/Object;
+HSPLcom/android/server/notification/NotificationHistoryManager;->access$200(Lcom/android/server/notification/NotificationHistoryManager;)Landroid/os/UserManager;
+HSPLcom/android/server/notification/NotificationHistoryManager;->addNotification(Landroid/app/NotificationHistory$HistoricalNotification;)V
+HSPLcom/android/server/notification/NotificationHistoryManager;->getUserHistoryAndInitializeIfNeededLocked(I)Lcom/android/server/notification/NotificationHistoryDatabase;
+HSPLcom/android/server/notification/NotificationHistoryManager;->onBootPhaseAppsCanStart()V
+HSPLcom/android/server/notification/NotificationHistoryManager;->onHistoryEnabledChanged(IZ)V
+HPLcom/android/server/notification/NotificationHistoryManager;->onPackageRemoved(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationHistoryManager;->onUserRemoved(I)V
+PLcom/android/server/notification/NotificationHistoryManager;->onUserStopped(I)V
+PLcom/android/server/notification/NotificationHistoryManager;->onUserUnlocked(I)V
+HSPLcom/android/server/notification/NotificationIntrusivenessExtractor$1;-><init>(Lcom/android/server/notification/NotificationIntrusivenessExtractor;Ljava/lang/String;J)V
+HPLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationIntrusivenessExtractor$1;->work()V
+HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;-><clinit>()V
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;-><init>()V
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/NotificationIntrusivenessExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/NotificationManagerService$10$1;-><init>(Lcom/android/server/notification/NotificationManagerService$10;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
 HSPLcom/android/server/notification/NotificationManagerService$10$1;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$10;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->addAutoGroup(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$10;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$10;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String;
 PLcom/android/server/notification/NotificationManagerService$10;->applyAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
-PLcom/android/server/notification/NotificationManagerService$10;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+PLcom/android/server/notification/NotificationManagerService$10;->areBubblesAllowed(Ljava/lang/String;)Z
 PLcom/android/server/notification/NotificationManagerService$10;->areBubblesAllowedForPackage(Ljava/lang/String;I)Z
-HSPLcom/android/server/notification/NotificationManagerService$10;->areNotificationsEnabled(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/NotificationManagerService$10;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->areNotificationsEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/NotificationManagerService$10;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/notification/NotificationManagerService$10;->canShowBadge(Ljava/lang/String;I)Z
-HSPLcom/android/server/notification/NotificationManagerService$10;->cancelAllNotifications(Ljava/lang/String;I)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;II)V
-PLcom/android/server/notification/NotificationManagerService$10;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->checkPolicyAccess(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationManagerService$10;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/notification/NotificationManagerService$10;->cancelAllNotifications(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$10;->cancelNotificationFromListenerLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/notification/NotificationManagerService$10;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$10;->cancelNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->cancelToast(Ljava/lang/String;Landroid/app/ITransientNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->checkPackagePolicyAccess(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->checkPolicyAccess(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->clearData(Ljava/lang/String;IZ)V
+HPLcom/android/server/notification/NotificationManagerService$10;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
 PLcom/android/server/notification/NotificationManagerService$10;->createNotificationChannelsForPackage(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$10;->deleteNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->deleteNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$10;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->enforcePolicyAccess(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$10;->enforcePolicyAccess(ILjava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$10;->enforcePolicyAccess(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$10;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationManagerService$10;->enforceSystemOrSystemUI(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
+HPLcom/android/server/notification/NotificationManagerService$10;->enqueueTextToast(Ljava/lang/String;Landroid/app/ITransientNotification;II)V
 PLcom/android/server/notification/NotificationManagerService$10;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;II)V
-PLcom/android/server/notification/NotificationManagerService$10;->finishToken(Ljava/lang/String;Landroid/app/ITransientNotification;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$10;->getAllowedNotificationAssistant()Landroid/content/ComponentName;
+HPLcom/android/server/notification/NotificationManagerService$10;->enqueueToast(Ljava/lang/String;Landroid/app/ITransientNotification;IIZ)V
+HPLcom/android/server/notification/NotificationManagerService$10;->finishToken(Ljava/lang/String;Landroid/app/ITransientNotification;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$10;->getAllowedAssistantAdjustments(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/notification/NotificationManagerService$10;->getAllowedNotificationAssistant()Landroid/content/ComponentName;
 PLcom/android/server/notification/NotificationManagerService$10;->getAllowedNotificationAssistantForUser(I)Landroid/content/ComponentName;
-HSPLcom/android/server/notification/NotificationManagerService$10;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$10;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/notification/NotificationManagerService$10;->getAppsBypassingDndCount(I)I
-HSPLcom/android/server/notification/NotificationManagerService$10;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;
+PLcom/android/server/notification/NotificationManagerService$10;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;
 PLcom/android/server/notification/NotificationManagerService$10;->getBackupPayload(I)[B
+PLcom/android/server/notification/NotificationManagerService$10;->getBlockedAppCount(I)I
 PLcom/android/server/notification/NotificationManagerService$10;->getBlockedChannelCount(Ljava/lang/String;I)I
 HSPLcom/android/server/notification/NotificationManagerService$10;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
-HSPLcom/android/server/notification/NotificationManagerService$10;->getEffectsSuppressor()Landroid/content/ComponentName;
+HSPLcom/android/server/notification/NotificationManagerService$10;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$10;->getDeletedChannelCount(Ljava/lang/String;I)I
+PLcom/android/server/notification/NotificationManagerService$10;->getEffectsSuppressor()Landroid/content/ComponentName;
+PLcom/android/server/notification/NotificationManagerService$10;->getEnabledNotificationListenerPackages()Ljava/util/List;
+HPLcom/android/server/notification/NotificationManagerService$10;->getHintsFromListener(Landroid/service/notification/INotificationListener;)I
 PLcom/android/server/notification/NotificationManagerService$10;->getInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;)I
 HSPLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;
+HPLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;
 PLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroupForPackage(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup;
-PLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/notification/NotificationManagerService$10;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy;
+HPLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannelGroupsForPackage(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$10;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$10;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy;
 PLcom/android/server/notification/NotificationManagerService$10;->getNumNotificationChannelsForPackage(Ljava/lang/String;IZ)I
 PLcom/android/server/notification/NotificationManagerService$10;->getPackageImportance(Ljava/lang/String;)I
-HSPLcom/android/server/notification/NotificationManagerService$10;->getPrivateNotificationsAllowed()Z
+PLcom/android/server/notification/NotificationManagerService$10;->getPrivateNotificationsAllowed()Z
 HSPLcom/android/server/notification/NotificationManagerService$10;->getZenMode()I
 HSPLcom/android/server/notification/NotificationManagerService$10;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
-HSPLcom/android/server/notification/NotificationManagerService$10;->getZenRules()Ljava/util/List;
-PLcom/android/server/notification/NotificationManagerService$10;->isNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;I)Z
-HSPLcom/android/server/notification/NotificationManagerService$10;->isNotificationPolicyAccessGranted(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->getZenRules()Ljava/util/List;
+HPLcom/android/server/notification/NotificationManagerService$10;->isNotificationListenerAccessGranted(Landroid/content/ComponentName;)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->isNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->isNotificationPolicyAccessGranted(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->isNotificationPolicyAccessGrantedForPackage(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$10;->isPackagePaused(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->lambda$enqueueToast$0$NotificationManagerService$10(Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$10;->matchesCallFilter(Landroid/os/Bundle;)Z
 HSPLcom/android/server/notification/NotificationManagerService$10;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->removeAutomaticZenRules(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->onlyHasDefaultChannel(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$10;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/NotificationManagerService$10;->removeAutoGroup(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->removeAutoGroupSummary(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$10;->removeAutomaticZenRule(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->removeAutomaticZenRules(Ljava/lang/String;)Z
 PLcom/android/server/notification/NotificationManagerService$10;->requestBindListener(Landroid/content/ComponentName;)V
 PLcom/android/server/notification/NotificationManagerService$10;->requestBindProvider(Landroid/content/ComponentName;)V
 PLcom/android/server/notification/NotificationManagerService$10;->requestHintsFromListener(Landroid/service/notification/INotificationListener;I)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->requestUnbindProvider(Landroid/service/notification/IConditionProvider;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$10;->requestInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;I)V
+PLcom/android/server/notification/NotificationManagerService$10;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V
+PLcom/android/server/notification/NotificationManagerService$10;->requestUnbindProvider(Landroid/service/notification/IConditionProvider;)V
+HPLcom/android/server/notification/NotificationManagerService$10;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$10;->setAutomaticZenRuleState(Ljava/lang/String;Landroid/service/notification/Condition;)V
 PLcom/android/server/notification/NotificationManagerService$10;->setInterruptionFilter(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$10;->setNotificationListenerAccessGranted(Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V
 PLcom/android/server/notification/NotificationManagerService$10;->setNotificationPolicy(Ljava/lang/String;Landroid/app/NotificationManager$Policy;)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V
 HSPLcom/android/server/notification/NotificationManagerService$10;->setNotificationPolicyAccessGrantedForUser(Ljava/lang/String;IZ)V
-PLcom/android/server/notification/NotificationManagerService$10;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$10;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V
+HPLcom/android/server/notification/NotificationManagerService$10;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$10;->setPrivateNotificationsAllowed(Z)V
 PLcom/android/server/notification/NotificationManagerService$10;->setZenMode(ILandroid/net/Uri;Ljava/lang/String;)V
-HSPLcom/android/server/notification/NotificationManagerService$10;->shouldHideSilentStatusIcons(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/NotificationManagerService$10;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->shouldHideSilentStatusIcons(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$10;->silenceNotificationSound()V
+PLcom/android/server/notification/NotificationManagerService$10;->snoozeNotificationUntilFromListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;J)V
+HPLcom/android/server/notification/NotificationManagerService$10;->updateAutogroupSummary(Ljava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService$10;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;)Z
 PLcom/android/server/notification/NotificationManagerService$10;->updateNotificationChannelForPackage(Ljava/lang/String;ILandroid/app/NotificationChannel;)V
-PLcom/android/server/notification/NotificationManagerService$11;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
+HSPLcom/android/server/notification/NotificationManagerService$11$1;-><init>(Lcom/android/server/notification/NotificationManagerService$11;Ljava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;[Landroid/service/notification/Condition;)V
+HPLcom/android/server/notification/NotificationManagerService$11$1;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$11;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$11;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;)Ljava/lang/String;
+PLcom/android/server/notification/NotificationManagerService$11;->applyAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->applyAdjustmentsFromAssistant(Landroid/service/notification/INotificationListener;Ljava/util/List;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->applyEnqueuedAdjustmentFromAssistant(Landroid/service/notification/INotificationListener;Landroid/service/notification/Adjustment;)V
+PLcom/android/server/notification/NotificationManagerService$11;->areBubblesAllowed(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->areBubblesAllowedForPackage(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->areNotificationsEnabled(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->areNotificationsEnabledForPackage(Ljava/lang/String;I)Z
+HSPLcom/android/server/notification/NotificationManagerService$11;->canNotifyAsPackage(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$11;->canShowBadge(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->cancelAllNotifications(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->cancelNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$11;->cancelNotificationFromListenerLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->cancelNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$11;->cancelNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->cancelToast(Ljava/lang/String;Landroid/os/IBinder;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->checkPackagePolicyAccess(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->checkPolicyAccess(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$11;->clearData(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationManagerService$11;->createConversationNotificationChannelForPackage(Ljava/lang/String;ILjava/lang/String;Landroid/app/NotificationChannel;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->createNotificationChannelGroups(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->createNotificationChannels(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/notification/NotificationManagerService$11;->createNotificationChannelsForPackage(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->createNotificationChannelsImpl(Ljava/lang/String;ILandroid/content/pm/ParceledListSlice;)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->deleteNotificationChannel(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->deleteNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$11;->disallowAssistantAdjustment(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$11;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enforcePolicyAccess(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$11;->enforcePolicyAccess(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->enforceSystemOrSystemUI(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enforceSystemOrSystemUIOrSamePackage(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enqueueNotificationWithTag(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->enqueueTextToast(Ljava/lang/String;Landroid/os/IBinder;Landroid/app/ITransientNotification;II)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enqueueTextToast(Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;IILandroid/app/ITransientNotificationCallback;)V
+PLcom/android/server/notification/NotificationManagerService$11;->enqueueToast(Ljava/lang/String;Landroid/os/IBinder;Landroid/app/ITransientNotification;II)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enqueueToast(Ljava/lang/String;Landroid/os/IBinder;Landroid/app/ITransientNotification;IIZ)V
+HPLcom/android/server/notification/NotificationManagerService$11;->enqueueToast(Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/app/ITransientNotification;IILandroid/app/ITransientNotificationCallback;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->finishToken(Ljava/lang/String;Landroid/os/IBinder;)V
+PLcom/android/server/notification/NotificationManagerService$11;->getActiveNotifications(Ljava/lang/String;)[Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationManagerService$11;->getActiveNotificationsFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$11;->getAllowedAssistantAdjustments(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/notification/NotificationManagerService$11;->getAllowedNotificationAssistant()Landroid/content/ComponentName;
+HPLcom/android/server/notification/NotificationManagerService$11;->getAllowedNotificationAssistantForUser(I)Landroid/content/ComponentName;
+HPLcom/android/server/notification/NotificationManagerService$11;->getAppActiveNotifications(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$11;->getAppsBypassingDndCount(I)I
+PLcom/android/server/notification/NotificationManagerService$11;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;
+PLcom/android/server/notification/NotificationManagerService$11;->getBackupPayload(I)[B
+PLcom/android/server/notification/NotificationManagerService$11;->getBlockedAppCount(I)I
+PLcom/android/server/notification/NotificationManagerService$11;->getBlockedChannelCount(Ljava/lang/String;I)I
+HSPLcom/android/server/notification/NotificationManagerService$11;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
+HSPLcom/android/server/notification/NotificationManagerService$11;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZLjava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$11;->getDeletedChannelCount(Ljava/lang/String;I)I
+HPLcom/android/server/notification/NotificationManagerService$11;->getEffectsSuppressor()Landroid/content/ComponentName;
+PLcom/android/server/notification/NotificationManagerService$11;->getEnabledNotificationListenerPackages()Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService$11;->getHintsFromListener(Landroid/service/notification/INotificationListener;)I
+PLcom/android/server/notification/NotificationManagerService$11;->getHistoricalNotifications(Ljava/lang/String;I)[Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$11;->getInterruptionFilterFromListener(Landroid/service/notification/INotificationListener;)I
 PLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;)Landroid/app/NotificationChannel;
+HSPLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannelForPackage(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;)Landroid/app/NotificationChannelGroup;
+PLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannelGroupForPackage(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup;
+HPLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannelGroups(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannelGroupsForPackage(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$11;->getNotificationChannels(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/NotificationManagerService$11;->getNotificationPolicy(Ljava/lang/String;)Landroid/app/NotificationManager$Policy;
+HPLcom/android/server/notification/NotificationManagerService$11;->getNumNotificationChannelsForPackage(Ljava/lang/String;IZ)I
+PLcom/android/server/notification/NotificationManagerService$11;->getPackageImportance(Ljava/lang/String;)I
+PLcom/android/server/notification/NotificationManagerService$11;->getPrivateNotificationsAllowed()Z
+HSPLcom/android/server/notification/NotificationManagerService$11;->getZenMode()I
+HSPLcom/android/server/notification/NotificationManagerService$11;->getZenModeConfig()Landroid/service/notification/ZenModeConfig;
+PLcom/android/server/notification/NotificationManagerService$11;->getZenRules()Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService$11;->isNotificationListenerAccessGranted(Landroid/content/ComponentName;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->isNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;I)Z
+PLcom/android/server/notification/NotificationManagerService$11;->isNotificationPolicyAccessGranted(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$11;->isNotificationPolicyAccessGrantedForPackage(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->isPackagePaused(Ljava/lang/String;)Z
+PLcom/android/server/notification/NotificationManagerService$11;->lambda$enqueueToast$0$NotificationManagerService$11(Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$11;->lambda$removeForegroundServiceFlagFromNotification$0$NotificationManagerService$11(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$11;->matchesCallFilter(Landroid/os/Bundle;)Z
+HSPLcom/android/server/notification/NotificationManagerService$11;->notifyConditions(Ljava/lang/String;Landroid/service/notification/IConditionProvider;[Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/NotificationManagerService$11;->onlyHasDefaultChannel(Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService$11;->registerListener(Landroid/service/notification/INotificationListener;Landroid/content/ComponentName;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->removeAutomaticZenRule(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->removeAutomaticZenRules(Ljava/lang/String;)Z
 PLcom/android/server/notification/NotificationManagerService$11;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V
-HSPLcom/android/server/notification/NotificationManagerService$13;->run()V
+PLcom/android/server/notification/NotificationManagerService$11;->removeForegroundServiceFlagLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$11;->requestBindListener(Landroid/content/ComponentName;)V
+PLcom/android/server/notification/NotificationManagerService$11;->requestBindProvider(Landroid/content/ComponentName;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->requestHintsFromListener(Landroid/service/notification/INotificationListener;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->requestUnbindListener(Landroid/service/notification/INotificationListener;)V
+PLcom/android/server/notification/NotificationManagerService$11;->requestUnbindProvider(Landroid/service/notification/IConditionProvider;)V
+HPLcom/android/server/notification/NotificationManagerService$11;->sanitizeSbn(Ljava/lang/String;ILandroid/service/notification/StatusBarNotification;)Landroid/service/notification/StatusBarNotification;
+PLcom/android/server/notification/NotificationManagerService$11;->setInterruptionFilter(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->setNotificationListenerAccessGranted(Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->setNotificationListenerAccessGrantedForUser(Landroid/content/ComponentName;IZ)V
+PLcom/android/server/notification/NotificationManagerService$11;->setNotificationPolicy(Ljava/lang/String;Landroid/app/NotificationManager$Policy;)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->setNotificationPolicyAccessGranted(Ljava/lang/String;Z)V
+HSPLcom/android/server/notification/NotificationManagerService$11;->setNotificationPolicyAccessGrantedForUser(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/NotificationManagerService$11;->setNotificationsEnabledForPackage(Ljava/lang/String;IZ)V
+HPLcom/android/server/notification/NotificationManagerService$11;->setNotificationsShownFromListener(Landroid/service/notification/INotificationListener;[Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$11;->setPrivateNotificationsAllowed(Z)V
+PLcom/android/server/notification/NotificationManagerService$11;->setZenMode(ILandroid/net/Uri;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$11;->shouldHideSilentStatusIcons(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$11;->silenceNotificationSound()V
+PLcom/android/server/notification/NotificationManagerService$11;->snoozeNotificationUntilFromListener(Landroid/service/notification/INotificationListener;Ljava/lang/String;J)V
+PLcom/android/server/notification/NotificationManagerService$11;->unregisterListener(Landroid/service/notification/INotificationListener;I)V
+PLcom/android/server/notification/NotificationManagerService$11;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;)Z
+PLcom/android/server/notification/NotificationManagerService$11;->updateNotificationChannelForPackage(Ljava/lang/String;ILandroid/app/NotificationChannel;)V
+HSPLcom/android/server/notification/NotificationManagerService$12;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$12;->cancelNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;II)V
+HPLcom/android/server/notification/NotificationManagerService$12;->enqueueNotification(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
+HPLcom/android/server/notification/NotificationManagerService$12;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;)Landroid/app/NotificationChannel;
+PLcom/android/server/notification/NotificationManagerService$12;->lambda$removeForegroundServiceFlagFromNotification$0$NotificationManagerService$12(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$12;->removeForegroundServiceFlagFromNotification(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationManagerService$12;->removeForegroundServiceFlagLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$12;->run()V
+PLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$13;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService$13;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$14;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$14;->lambda$run$0(III)Z
 HSPLcom/android/server/notification/NotificationManagerService$14;->run()V
-PLcom/android/server/notification/NotificationManagerService$15;->run()V
-PLcom/android/server/notification/NotificationManagerService$1;->clearEffects()V
+PLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IIIIZ)V
+HSPLcom/android/server/notification/NotificationManagerService$15;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IILjava/lang/String;IIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$15;->lambda$run$0(II)Z
+PLcom/android/server/notification/NotificationManagerService$15;->lambda$run$0(III)Z
+HSPLcom/android/server/notification/NotificationManagerService$15;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$16;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$16;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;IIIIZ)V
+PLcom/android/server/notification/NotificationManagerService$16;->lambda$run$0(II)Z
+PLcom/android/server/notification/NotificationManagerService$16;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$17;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService$1;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$1;->clearEffects()V
+HPLcom/android/server/notification/NotificationManagerService$1;->clearInlineReplyUriPermissions(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationManagerService$1;->onBubbleNotificationSuppressionChanged(Ljava/lang/String;Z)V
 PLcom/android/server/notification/NotificationManagerService$1;->onClearAll(III)V
 PLcom/android/server/notification/NotificationManagerService$1;->onNotificationActionClick(IILjava/lang/String;ILandroid/app/Notification$Action;Lcom/android/internal/statusbar/NotificationVisibility;Z)V
-PLcom/android/server/notification/NotificationManagerService$1;->onNotificationClear(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
-PLcom/android/server/notification/NotificationManagerService$1;->onNotificationClick(IILjava/lang/String;Lcom/android/internal/statusbar/NotificationVisibility;)V
+PLcom/android/server/notification/NotificationManagerService$1;->onNotificationBubbleChanged(Ljava/lang/String;Z)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onNotificationClear(IILjava/lang/String;Ljava/lang/String;IILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onNotificationClick(IILjava/lang/String;Lcom/android/internal/statusbar/NotificationVisibility;)V
 PLcom/android/server/notification/NotificationManagerService$1;->onNotificationDirectReplied(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService$1;->onNotificationExpansionChanged(Ljava/lang/String;ZZI)V
+PLcom/android/server/notification/NotificationManagerService$1;->onNotificationError(IILjava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onNotificationExpansionChanged(Ljava/lang/String;ZZI)V
+PLcom/android/server/notification/NotificationManagerService$1;->onNotificationSettingsViewed(Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$1;->onNotificationSmartReplySent(Ljava/lang/String;ILjava/lang/CharSequence;IZ)V
-PLcom/android/server/notification/NotificationManagerService$1;->onNotificationSmartSuggestionsAdded(Ljava/lang/String;IIZZ)V
-PLcom/android/server/notification/NotificationManagerService$1;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V
-HSPLcom/android/server/notification/NotificationManagerService$1;->onPanelHidden()V
-HSPLcom/android/server/notification/NotificationManagerService$1;->onPanelRevealed(ZI)V
-HSPLcom/android/server/notification/NotificationManagerService$1;->onSetDisabled(I)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onNotificationSmartSuggestionsAdded(Ljava/lang/String;IIZZ)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V
+HPLcom/android/server/notification/NotificationManagerService$1;->onPanelHidden()V
+HPLcom/android/server/notification/NotificationManagerService$1;->onPanelRevealed(ZI)V
+PLcom/android/server/notification/NotificationManagerService$1;->onSetDisabled(I)V
+HSPLcom/android/server/notification/NotificationManagerService$2;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
 HSPLcom/android/server/notification/NotificationManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/notification/NotificationManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/NotificationManagerService$3;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService$4;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/NotificationManagerService$5;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/NotificationManagerService$6;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
 HSPLcom/android/server/notification/NotificationManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/notification/NotificationManagerService$7;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$7;->onAutomaticRuleStatusChanged(ILjava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/notification/NotificationManagerService$7;->onConfigChanged()V
 HSPLcom/android/server/notification/NotificationManagerService$7;->onPolicyChanged()V
-HSPLcom/android/server/notification/NotificationManagerService$7;->onZenModeChanged()V
+PLcom/android/server/notification/NotificationManagerService$7;->onZenModeChanged()V
+HSPLcom/android/server/notification/NotificationManagerService$8;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService$8;->onAutomaticRuleStatusChanged(ILjava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/notification/NotificationManagerService$8;->onConfigChanged()V
+HSPLcom/android/server/notification/NotificationManagerService$8;->onPolicyChanged()V
+HSPLcom/android/server/notification/NotificationManagerService$8;->onZenModeChanged()V
+PLcom/android/server/notification/NotificationManagerService$8;->repost(ILcom/android/server/notification/NotificationRecord;)V
+HSPLcom/android/server/notification/NotificationManagerService$9;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
 PLcom/android/server/notification/NotificationManagerService$9;->addAutoGroup(Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$9;->addAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$9;->removeAutoGroup(Ljava/lang/String;)V
-HSPLcom/android/server/notification/NotificationManagerService$9;->removeAutoGroupSummary(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$9;->removeAutoGroupSummary(ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$9;->repost(ILcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService$9;->updateAutogroupSummary(Ljava/lang/String;Z)V
 HSPLcom/android/server/notification/NotificationManagerService$Archive;-><init>(I)V
 PLcom/android/server/notification/NotificationManagerService$Archive;->descendingIterator()Ljava/util/Iterator;
-HSPLcom/android/server/notification/NotificationManagerService$Archive;->record(Landroid/service/notification/StatusBarNotification;)V
+PLcom/android/server/notification/NotificationManagerService$Archive;->getArray(I)[Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationManagerService$Archive;->record(Landroid/service/notification/StatusBarNotification;)V
 PLcom/android/server/notification/NotificationManagerService$Archive;->toString()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->lambda$run$0(I)Z
 HSPLcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$DumpFilter;-><init>()V
+PLcom/android/server/notification/NotificationManagerService$DumpFilter;->matches(Landroid/content/ComponentName;)Z
 PLcom/android/server/notification/NotificationManagerService$DumpFilter;->matches(Landroid/service/notification/StatusBarNotification;)Z
+HPLcom/android/server/notification/NotificationManagerService$DumpFilter;->matches(Ljava/lang/String;)Z
 PLcom/android/server/notification/NotificationManagerService$DumpFilter;->parseFromArguments([Ljava/lang/String;)Lcom/android/server/notification/NotificationManagerService$DumpFilter;
+HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;ILcom/android/server/notification/NotificationRecord;Z)V
 HSPLcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;->run()V
 HSPLcom/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;->access$7800(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->access$7900(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->access$8100(Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->disallowAdjustmentType(Ljava/lang/String;)V
 PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getAllowedAssistantAdjustments()Ljava/util/List;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->getRequiredPermission()Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->hasUserSet(I)Z
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isAdjustmentAllowed(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isAdjustmentAllowed(Ljava/lang/String;)Z
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isEnabled()Z
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantActionClicked$5$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Landroid/app/Notification$Action;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantExpansionChangedLocked$2$NotificationManagerService$NotificationAssistants(Ljava/lang/String;ZZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantNotificationDirectReplyLocked$3$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantSuggestedReplySent$4$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Ljava/lang/CharSequence;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onNotificationEnqueuedLocked$1$NotificationManagerService$NotificationAssistants(ZLcom/android/server/notification/NotificationRecord;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onNotificationsSeenLocked$0$NotificationManagerService$NotificationAssistants(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->isVerboseLogEnabled()Z
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$disallowAdjustmentType$1$NotificationManagerService$NotificationAssistants(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantActionClicked$10$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Landroid/app/Notification$Action;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantActionClicked$7$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Landroid/app/Notification$Action;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantExpansionChangedLocked$4$NotificationManagerService$NotificationAssistants(Ljava/lang/String;ZZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantExpansionChangedLocked$7$NotificationManagerService$NotificationAssistants(Ljava/lang/String;ZZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantLocked$12(Ljava/util/function/BiConsumer;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantLocked$9(Ljava/util/function/BiConsumer;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantNotificationDirectReplyLocked$8$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantSuggestedReplySent$6$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Ljava/lang/CharSequence;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantSuggestedReplySent$9$NotificationManagerService$NotificationAssistants(Ljava/lang/String;Ljava/lang/CharSequence;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$notifyAssistantVisibilityChangedLocked$6$NotificationManagerService$NotificationAssistants(Ljava/lang/String;ZLandroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onNotificationEnqueuedLocked$3$NotificationManagerService$NotificationAssistants(ZLcom/android/server/notification/NotificationRecord;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onNotificationEnqueuedLocked$5$NotificationManagerService$NotificationAssistants(ZLcom/android/server/notification/NotificationRecord;Landroid/service/notification/INotificationListener;Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onNotificationsSeenLocked$2$NotificationManagerService$NotificationAssistants(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onPanelHidden$4$NotificationManagerService$NotificationAssistants(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->lambda$onPanelRevealed$3$NotificationManagerService$NotificationAssistants(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
 PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantActionClicked(Landroid/service/notification/StatusBarNotification;ILandroid/app/Notification$Action;Z)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantExpansionChangedLocked(Landroid/service/notification/StatusBarNotification;ZZ)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantLocked(Landroid/service/notification/StatusBarNotification;ZLjava/util/function/BiConsumer;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantExpansionChangedLocked(Landroid/service/notification/StatusBarNotification;ZZ)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantLocked(Landroid/service/notification/StatusBarNotification;ZLjava/util/function/BiConsumer;)V
 PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantNotificationDirectReplyLocked(Landroid/service/notification/StatusBarNotification;)V
 PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantSuggestedReplySent(Landroid/service/notification/StatusBarNotification;Ljava/lang/CharSequence;Z)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifySeen(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationsSeenLocked(Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyAssistantVisibilityChangedLocked(Landroid/service/notification/StatusBarNotification;Z)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifyCapabilitiesChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->notifySeen(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationEnqueuedLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onNotificationsSeenLocked(Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onPanelHidden()V
+HPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onPanelRevealed(I)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onUserUnlocked(I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->onUserUnlocked(I)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->readExtraAttributes(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;I)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->readExtraTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->resetDefaultAssistantsIfNecessary()V
@@ -9493,156 +21112,497 @@
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->setUserSet(IZ)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->writeExtraAttributes(Lorg/xmlpull/v1/XmlSerializer;I)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationAssistants;->writeExtraXmlTags(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners$2;->run()V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$4;->run()V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners$5;->run()V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners$6;->run()V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$3;->run()V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$4;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$4;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$5;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$5;->run()V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners$6;-><init>(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners$6;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/content/pm/IPackageManager;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10000(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10000(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10000(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;->access$10100(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10100(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10100(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10200(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10200(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10200(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10300(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10300(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;->access$10400(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10400(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10500(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$10600(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$9700(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$9800(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$9800(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$9900(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->access$9900(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;->access$9900(Lcom/android/server/notification/NotificationManagerService$NotificationListeners;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->asInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->checkType(Landroid/os/IInterface;)Z
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getBindFlags()I
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getConfig()Lcom/android/server/notification/ManagedServices$Config;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getOnNotificationPostedTrim(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)I
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->getRequiredPermission()Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->isListenerPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelChanged$2$NotificationManagerService$NotificationListeners(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelGroupChanged$3$NotificationManagerService$NotificationListeners(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyRemovedLocked$1$NotificationManagerService$NotificationListeners(Lcom/android/server/notification/NotificationRecord;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyInterruptionFilterChanged(I)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyInterruptionFilterChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)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
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelChanged$2$NotificationManagerService$NotificationListeners(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->lambda$notifyNotificationChannelGroupChanged$3$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;->lambda$notifyRemovedLocked$1$NotificationManagerService$NotificationListeners(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyHiddenLocked(Ljava/util/List;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyInterruptionFilterChanged(I)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyInterruptionFilterChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyListenerHintsChangedLocked(I)V
 PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelChanged(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannel;I)V
 HSPLcom/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
-PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyNotificationChannelGroupChanged(Ljava/lang/String;Landroid/os/UserHandle;Landroid/app/NotificationChannelGroup;I)V
+HPLcom/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
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPosted(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyPostedLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Z)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
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Lcom/android/server/notification/NotificationRecord;ILandroid/service/notification/NotificationStats;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdate(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/NotificationRankingUpdate;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRankingUpdateLocked(Ljava/util/List;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemoved(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationRankingUpdate;Landroid/service/notification/NotificationStats;I)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyRemovedLocked(Lcom/android/server/notification/NotificationRecord;ILandroid/service/notification/NotificationStats;)V
+HPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->notifyUnhiddenLocked(Ljava/util/List;)V
 HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceAdded(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HSPLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+PLcom/android/server/notification/NotificationManagerService$NotificationListeners;->onServiceRemovedLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;-><init>(Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;Landroid/service/notification/StatusBarNotification;)V
 HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;->run()V
+HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->lambda$run$0$NotificationManagerService$PostNotificationRunnable(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/StatusBarNotification;)V
 HSPLcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;->run()V
 HSPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestReconsideration(Lcom/android/server/notification/RankingReconsideration;)V
 HSPLcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;->requestSort()V
+HSPLcom/android/server/notification/NotificationManagerService$RoleObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/app/role/RoleManager;Landroid/content/pm/IPackageManager;Ljava/util/concurrent/Executor;)V
+HSPLcom/android/server/notification/NotificationManagerService$RoleObserver;->getUidForPackage(Ljava/lang/String;I)I
+HSPLcom/android/server/notification/NotificationManagerService$RoleObserver;->init()V
+PLcom/android/server/notification/NotificationManagerService$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$1;)V
+HSPLcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;->run()V
 HSPLcom/android/server/notification/NotificationManagerService$SettingsObserver;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Handler;)V
 HSPLcom/android/server/notification/NotificationManagerService$SettingsObserver;->observe()V
+PLcom/android/server/notification/NotificationManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/notification/NotificationManagerService$SettingsObserver;->update(Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationManagerService$SnoozeNotificationRunnable;-><init>(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;JLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService$SnoozeNotificationRunnable;->run()V
+PLcom/android/server/notification/NotificationManagerService$SnoozeNotificationRunnable;->snoozeLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService$SnoozeNotificationRunnable;->snoozeNotificationLocked(Lcom/android/server/notification/NotificationRecord;)V
+HSPLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;-><init>(Landroid/service/notification/StatusBarNotification;)V
 HSPLcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;->get()Landroid/service/notification/StatusBarNotification;
+HPLcom/android/server/notification/NotificationManagerService$ToastRecord;-><init>(ILjava/lang/String;Landroid/app/ITransientNotification;ILandroid/os/Binder;I)V
+PLcom/android/server/notification/NotificationManagerService$ToastRecord;-><init>(ILjava/lang/String;Landroid/os/IBinder;Landroid/app/ITransientNotification;ILandroid/os/Binder;I)V
+PLcom/android/server/notification/NotificationManagerService$ToastRecord;->update(I)V
+HSPLcom/android/server/notification/NotificationManagerService$TrimCache;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)V
 HSPLcom/android/server/notification/NotificationManagerService$TrimCache;->ForListener(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/StatusBarNotification;
 HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;-><init>(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleCancelNotification(Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;)V
-HSPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleOnPackageChanged(ZI[Ljava/lang/String;[I)V
-PLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleSendRankingUpdate()V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleOnPackageChanged(ZI[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/NotificationManagerService$WorkerHandler;->scheduleSendRankingUpdate()V
+HSPLcom/android/server/notification/NotificationManagerService;-><clinit>()V
 HSPLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/notification/NotificationManagerService;->access$1300(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager;
-HSPLcom/android/server/notification/NotificationManagerService;->access$1400()I
-HSPLcom/android/server/notification/NotificationManagerService;->access$1500()I
-HSPLcom/android/server/notification/NotificationManagerService;->access$1600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
-PLcom/android/server/notification/NotificationManagerService;->access$200(Lcom/android/server/notification/NotificationManagerService;)V
-HSPLcom/android/server/notification/NotificationManagerService;->access$3600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
-HSPLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
-PLcom/android/server/notification/NotificationManagerService;->addAutoGroupAdjustment(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->addAutogroupKeyLocked(Ljava/lang/String;)V
-HSPLcom/android/server/notification/NotificationManagerService;->applyAdjustment(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+HSPLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationRecordLogger;)V
+HSPLcom/android/server/notification/NotificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/notification/NotificationRecordLogger;Lcom/android/internal/logging/InstanceIdSequence;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$100(Lcom/android/server/notification/NotificationManagerService;)Landroid/util/AtomicFile;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1000(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
+HPLcom/android/server/notification/NotificationManagerService;->access$10000(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->access$10100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->access$1100(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager;
+HPLcom/android/server/notification/NotificationManagerService;->access$1200(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/IPackageManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/PreferencesHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/PreferencesHelper;
+PLcom/android/server/notification/NotificationManagerService;->access$1700()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1700(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1700(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
+PLcom/android/server/notification/NotificationManagerService;->access$1800()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1800(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ConditionProviders;
+PLcom/android/server/notification/NotificationManagerService;->access$1800(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->access$1900()I
+PLcom/android/server/notification/NotificationManagerService;->access$1900(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->access$200(Lcom/android/server/notification/NotificationManagerService;Ljava/io/OutputStream;ZI)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$2000()I
+HSPLcom/android/server/notification/NotificationManagerService;->access$2100()I
+HPLcom/android/server/notification/NotificationManagerService;->access$2100(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2200()I
+HSPLcom/android/server/notification/NotificationManagerService;->access$2200(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2200(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$2300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light;
+PLcom/android/server/notification/NotificationManagerService;->access$2300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/LogicalLight;
+PLcom/android/server/notification/NotificationManagerService;->access$2300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
+PLcom/android/server/notification/NotificationManagerService;->access$2300(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$2400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+PLcom/android/server/notification/NotificationManagerService;->access$2400(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$2500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/lights/Light;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/ManagedServices$UserProfiles;
+PLcom/android/server/notification/NotificationManagerService;->access$2600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationHistoryManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+PLcom/android/server/notification/NotificationManagerService;->access$2700(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2800(Lcom/android/server/notification/NotificationManagerService;)F
+HPLcom/android/server/notification/NotificationManagerService;->access$2800(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$2802(Lcom/android/server/notification/NotificationManagerService;F)F
+HSPLcom/android/server/notification/NotificationManagerService;->access$2900(Lcom/android/server/notification/NotificationManagerService;)F
+HSPLcom/android/server/notification/NotificationManagerService;->access$2900(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$2902(Lcom/android/server/notification/NotificationManagerService;F)F
+PLcom/android/server/notification/NotificationManagerService;->access$3000(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$3000(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$302(Lcom/android/server/notification/NotificationManagerService;Z)Z
+HSPLcom/android/server/notification/NotificationManagerService;->access$3100(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3100(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3200(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3200(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3300(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager;
+PLcom/android/server/notification/NotificationManagerService;->access$3300(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/compat/IPlatformCompat;
+PLcom/android/server/notification/NotificationManagerService;->access$3500(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Handler;
+HPLcom/android/server/notification/NotificationManagerService;->access$3600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+HPLcom/android/server/notification/NotificationManagerService;->access$3700(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/app/ITransientNotification;ILandroid/os/Binder;ILandroid/app/ITransientNotificationCallback;)Lcom/android/server/notification/toast/ToastRecord;
+HSPLcom/android/server/notification/NotificationManagerService;->access$3700(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$3800(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$3800(Lcom/android/server/notification/NotificationManagerService;I)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$3900(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$400(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
+HPLcom/android/server/notification/NotificationManagerService;->access$4000(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$4000(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$4100(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/PackageManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$4100(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$4200(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/PackageManager;
+PLcom/android/server/notification/NotificationManagerService;->access$4200(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
+HPLcom/android/server/notification/NotificationManagerService;->access$4200(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$4300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->access$4400(Lcom/android/server/notification/NotificationManagerService;)Landroid/content/pm/PackageManager;
+HPLcom/android/server/notification/NotificationManagerService;->access$4400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
+PLcom/android/server/notification/NotificationManagerService;->access$4400(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$4500(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$4500(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$4600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/SnoozeHelper;
+PLcom/android/server/notification/NotificationManagerService;->access$4700(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$4700(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$4800(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/AppOpsManager;
+HPLcom/android/server/notification/NotificationManagerService;->access$4800(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$4800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$4900(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$Archive;
+PLcom/android/server/notification/NotificationManagerService;->access$4900(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$4900(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$500(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5000(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$5000(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$5100(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$5100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->access$5200(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->access$5200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->access$5300(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->access$5300(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5300(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->access$5400(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->access$5400(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)V
+PLcom/android/server/notification/NotificationManagerService;->access$5500(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->access$5500(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/admin/DevicePolicyManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->access$5500(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+PLcom/android/server/notification/NotificationManagerService;->access$5600(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->access$5600(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/admin/DevicePolicyManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->access$5600(Lcom/android/server/notification/NotificationManagerService;Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5700(Lcom/android/server/notification/NotificationManagerService;)I
+PLcom/android/server/notification/NotificationManagerService;->access$5700(Lcom/android/server/notification/NotificationManagerService;Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5800(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/admin/DevicePolicyManagerInternal;
+PLcom/android/server/notification/NotificationManagerService;->access$5800(Lcom/android/server/notification/NotificationManagerService;Ljava/io/FileDescriptor;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5900(Lcom/android/server/notification/NotificationManagerService;Ljava/io/FileDescriptor;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/NotificationManagerService;->access$5900(Lcom/android/server/notification/NotificationManagerService;Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
+PLcom/android/server/notification/NotificationManagerService;->access$6000(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->access$6000(Lcom/android/server/notification/NotificationManagerService;Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$6100(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper;
+PLcom/android/server/notification/NotificationManagerService;->access$6100(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->access$6100(Lcom/android/server/notification/NotificationManagerService;Ljava/io/FileDescriptor;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$6200(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6200(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$6200(Lcom/android/server/notification/NotificationManagerService;Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$6300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/util/function/TriPredicate;
+PLcom/android/server/notification/NotificationManagerService;->access$6300(Lcom/android/server/notification/NotificationManagerService;)Ljava/util/List;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6300(Lcom/android/server/notification/NotificationManagerService;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$6400(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/UserManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/util/function/TriPredicate;
+HPLcom/android/server/notification/NotificationManagerService;->access$6400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/RankingHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6500(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/UserManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6500(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$6500(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$6600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/util/function/TriPredicate;
+PLcom/android/server/notification/NotificationManagerService;->access$6600(Lcom/android/server/notification/NotificationManagerService;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$6600(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$6700(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/UserManager;
+HSPLcom/android/server/notification/NotificationManagerService;->access$6700(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/NotificationManagerService;->access$6700(Lcom/android/server/notification/NotificationManagerService;)Z
+HPLcom/android/server/notification/NotificationManagerService;->access$6800(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/NotificationManagerService;->access$6800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+PLcom/android/server/notification/NotificationManagerService;->access$6800(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->access$6900(Lcom/android/server/notification/NotificationManagerService;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->access$6900(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->access$6900(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->access$700(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$7000(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/NotificationManagerService;->access$7000(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->access$7000(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->access$7100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$7100(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/notification/NotificationManagerService;->access$7200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$7200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$7200(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->access$7300(Lcom/android/server/notification/NotificationManagerService;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->access$7400(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$7400(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7500(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7500(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7500(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7600(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$7600(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$7700(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+PLcom/android/server/notification/NotificationManagerService;->access$7700(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->access$7700(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+PLcom/android/server/notification/NotificationManagerService;->access$7800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$7900(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->access$7900(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->access$800(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/logging/MetricsLogger;
+HSPLcom/android/server/notification/NotificationManagerService;->access$8000(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->access$8000(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$8100(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->access$8200(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+HPLcom/android/server/notification/NotificationManagerService;->access$8200(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+HPLcom/android/server/notification/NotificationManagerService;->access$8200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8300(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/internal/logging/InstanceIdSequence;
+PLcom/android/server/notification/NotificationManagerService;->access$8300(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+PLcom/android/server/notification/NotificationManagerService;->access$8300(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8302(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Binder;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;)Landroid/net/Uri;
+PLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationRecordLogger;
+HPLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8400(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8402(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Binder;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8500(Lcom/android/server/notification/NotificationManagerService;)Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationManagerService;->access$8500(Lcom/android/server/notification/NotificationManagerService;)Landroid/net/Uri;
+HPLcom/android/server/notification/NotificationManagerService;->access$8500(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+HPLcom/android/server/notification/NotificationManagerService;->access$8500(Lcom/android/server/notification/NotificationManagerService;Landroid/service/notification/StatusBarNotification;)Z
+PLcom/android/server/notification/NotificationManagerService;->access$8600(Lcom/android/server/notification/NotificationManagerService;)F
+PLcom/android/server/notification/NotificationManagerService;->access$8600(Lcom/android/server/notification/NotificationManagerService;)Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationManagerService;->access$8600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/GroupHelper;
+HPLcom/android/server/notification/NotificationManagerService;->access$8600(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationRecordLogger;
+PLcom/android/server/notification/NotificationManagerService;->access$8700(Lcom/android/server/notification/NotificationManagerService;)F
+PLcom/android/server/notification/NotificationManagerService;->access$8700(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8700(Lcom/android/server/notification/NotificationManagerService;)Lcom/android/server/notification/NotificationRecordLogger;
+PLcom/android/server/notification/NotificationManagerService;->access$8700(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->access$8702(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Binder;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8800(Lcom/android/server/notification/NotificationManagerService;)Landroid/net/Uri;
+PLcom/android/server/notification/NotificationManagerService;->access$8800(Lcom/android/server/notification/NotificationManagerService;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->access$8802(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Binder;)Landroid/os/Binder;
+PLcom/android/server/notification/NotificationManagerService;->access$8900(Lcom/android/server/notification/NotificationManagerService;)Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationManagerService;->access$8900(Lcom/android/server/notification/NotificationManagerService;)Landroid/net/Uri;
+PLcom/android/server/notification/NotificationManagerService;->access$8900(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$8900(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->access$900(Lcom/android/server/notification/NotificationManagerService;)Landroid/app/ActivityManager;
+PLcom/android/server/notification/NotificationManagerService;->access$9000(Lcom/android/server/notification/NotificationManagerService;)F
+PLcom/android/server/notification/NotificationManagerService;->access$9000(Lcom/android/server/notification/NotificationManagerService;)Landroid/media/AudioAttributes;
+PLcom/android/server/notification/NotificationManagerService;->access$9000(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9000(Lcom/android/server/notification/NotificationManagerService;I)V
+PLcom/android/server/notification/NotificationManagerService;->access$9000(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9100(Lcom/android/server/notification/NotificationManagerService;)F
+PLcom/android/server/notification/NotificationManagerService;->access$9100(Lcom/android/server/notification/NotificationManagerService;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9100(Lcom/android/server/notification/NotificationManagerService;I)V
+PLcom/android/server/notification/NotificationManagerService;->access$9100(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/toast/ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9200(Lcom/android/server/notification/NotificationManagerService;I)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9200(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9200(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/toast/ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9300(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9300(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService;->access$9300(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/toast/ToastRecord;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$9300(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService;->access$9400(Lcom/android/server/notification/NotificationManagerService;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9400(Lcom/android/server/notification/NotificationManagerService;I)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9400(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9400(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService;->access$9500(Lcom/android/server/notification/NotificationManagerService;I)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9500(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+PLcom/android/server/notification/NotificationManagerService;->access$9600(Lcom/android/server/notification/NotificationManagerService;I)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9600(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+HSPLcom/android/server/notification/NotificationManagerService;->access$9600(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->access$9700(Lcom/android/server/notification/NotificationManagerService;Landroid/os/Message;)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9700(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HSPLcom/android/server/notification/NotificationManagerService;->access$9700(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+HPLcom/android/server/notification/NotificationManagerService;->access$9800(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
+HPLcom/android/server/notification/NotificationManagerService;->access$9800(Lcom/android/server/notification/NotificationManagerService;Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
+HPLcom/android/server/notification/NotificationManagerService;->addAutoGroupAdjustment(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->addAutogroupKeyLocked(Ljava/lang/String;)V
+HPLcom/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
+HSPLcom/android/server/notification/NotificationManagerService;->allowAssistant(ILandroid/content/ComponentName;)Z
+HPLcom/android/server/notification/NotificationManagerService;->applyAdjustment(Lcom/android/server/notification/NotificationRecord;Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationManagerService;->applyFlagBubble(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
+HPLcom/android/server/notification/NotificationManagerService;->applyZenModeLocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)I
 HSPLcom/android/server/notification/NotificationManagerService;->buzzBeepBlinkLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->calculateHints()I
+HPLcom/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;->callStateToString(I)Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService;->canBubble(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;I)Z
+PLcom/android/server/notification/NotificationManagerService;->canLaunchInActivityView(Landroid/content/Context;Landroid/app/PendingIntent;Ljava/lang/String;)Z
 HSPLcom/android/server/notification/NotificationManagerService;->canShowLightsLocked(Lcom/android/server/notification/NotificationRecord;Z)Z
 HSPLcom/android/server/notification/NotificationManagerService;->canUseManagedServices(Ljava/lang/String;Ljava/lang/Integer;Ljava/lang/String;)Z
 PLcom/android/server/notification/NotificationManagerService;->cancelAllLocked(IIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;Z)V
 HSPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsByListLocked(Ljava/util/ArrayList;IILjava/lang/String;ZLjava/lang/String;Lcom/android/server/notification/NotificationManagerService$FlagChecker;ZIZILjava/lang/String;Z)V
 HSPLcom/android/server/notification/NotificationManagerService;->cancelAllNotificationsInt(IILjava/lang/String;Ljava/lang/String;IIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
-HSPLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenByListLocked(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelGroupChildrenLocked(Lcom/android/server/notification/NotificationRecord;IILjava/lang/String;ZLcom/android/server/notification/NotificationManagerService$FlagChecker;)V
 HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIIIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
 HSPLcom/android/server/notification/NotificationManagerService;->cancelNotification(IILjava/lang/String;Ljava/lang/String;IIIZIILcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
-HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V
+HSPLcom/android/server/notification/NotificationManagerService;->cancelNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;II)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIIIZLjava/lang/String;)V
+PLcom/android/server/notification/NotificationManagerService;->cancelNotificationLocked(Lcom/android/server/notification/NotificationRecord;ZIZLjava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->cancelToastLocked(I)V
+HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSameApp(Ljava/lang/String;II)V
 HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystem()V
+HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrShell()V
+HPLcom/android/server/notification/NotificationManagerService;->checkCallerIsSystemOrSystemUiOrShell()V
 HSPLcom/android/server/notification/NotificationManagerService;->checkDisqualifyingFeatures(IIILjava/lang/String;Lcom/android/server/notification/NotificationRecord;Z)Z
+HSPLcom/android/server/notification/NotificationManagerService;->checkRemoteViews(Ljava/lang/String;Ljava/lang/String;ILandroid/app/Notification;)V
 HSPLcom/android/server/notification/NotificationManagerService;->checkRestrictedCategories(Landroid/app/Notification;)V
-HSPLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->clearSoundLocked()V
-PLcom/android/server/notification/NotificationManagerService;->clearVibrateLocked()V
-PLcom/android/server/notification/NotificationManagerService;->createAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationManagerService;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+HSPLcom/android/server/notification/NotificationManagerService;->clamp(III)I
+HPLcom/android/server/notification/NotificationManagerService;->clearAutogroupSummaryLocked(ILjava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->clearLightsLocked()V
+HPLcom/android/server/notification/NotificationManagerService;->clearSoundLocked()V
+HPLcom/android/server/notification/NotificationManagerService;->clearVibrateLocked()V
+HPLcom/android/server/notification/NotificationManagerService;->createAutoGroupSummary(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;ZZ)V
+HPLcom/android/server/notification/NotificationManagerService;->destroyPermissionOwner(Landroid/os/IBinder;ILjava/lang/String;)V
 HSPLcom/android/server/notification/NotificationManagerService;->disableNotificationEffects(Lcom/android/server/notification/NotificationRecord;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationManagerService;->dumpImpl(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationManagerService;->doChannelWarningToast(Ljava/lang/CharSequence;)V
+HPLcom/android/server/notification/NotificationManagerService;->dumpImpl(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/NotificationManagerService;->dumpJson(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/NotificationManagerService;->dumpNotificationRecords(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/NotificationManagerService;->dumpProto(Ljava/io/FileDescriptor;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/NotificationManagerService;->enqueueNotificationInternal(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;ILandroid/app/Notification;I)V
 PLcom/android/server/notification/NotificationManagerService;->exitIdle()V
-HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->findInCurrentAndSnoozedNotificationByKeyLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+PLcom/android/server/notification/NotificationManagerService;->findNotificationByKeyLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;)Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationManagerService;->findNotificationByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
 HSPLcom/android/server/notification/NotificationManagerService;->findNotificationLocked(Ljava/lang/String;Ljava/lang/String;II)Lcom/android/server/notification/NotificationRecord;
-PLcom/android/server/notification/NotificationManagerService;->findNotificationsByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationRecordIndexLocked(Lcom/android/server/notification/NotificationRecord;)I
+HPLcom/android/server/notification/NotificationManagerService;->findNotificationsByListLocked(Ljava/util/ArrayList;Ljava/lang/String;Ljava/lang/String;II)Ljava/util/List;
 PLcom/android/server/notification/NotificationManagerService;->finishTokenLocked(Landroid/os/IBinder;I)V
-HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;I)V
-HSPLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager;
+PLcom/android/server/notification/NotificationManagerService;->finishWindowTokenLocked(Landroid/os/IBinder;I)V
+HSPLcom/android/server/notification/NotificationManagerService;->fixNotification(Landroid/app/Notification;Ljava/lang/String;Ljava/lang/String;II)V
+HSPLcom/android/server/notification/NotificationManagerService;->flagNotificationForBubbles(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
+PLcom/android/server/notification/NotificationManagerService;->getCompanionManager()Landroid/companion/ICompanionDeviceManager;
+HSPLcom/android/server/notification/NotificationManagerService;->getGroupHelper()Lcom/android/server/notification/GroupHelper;
+HSPLcom/android/server/notification/NotificationManagerService;->getHistoryText(Landroid/content/Context;Landroid/app/Notification;)Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationManagerService;->getHistoryTitle(Landroid/app/Notification;)Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationManagerService;->getLongArray(Landroid/content/res/Resources;II[J)[J
-HSPLcom/android/server/notification/NotificationManagerService;->getNotificationCountLocked(Ljava/lang/String;IILjava/lang/String;)I
-PLcom/android/server/notification/NotificationManagerService;->getSuppressors()Ljava/util/ArrayList;
-HSPLcom/android/server/notification/NotificationManagerService;->grantUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
+HPLcom/android/server/notification/NotificationManagerService;->getNotificationCountLocked(Ljava/lang/String;IILjava/lang/String;)I
+HSPLcom/android/server/notification/NotificationManagerService;->getRealUserId(I)I
+HPLcom/android/server/notification/NotificationManagerService;->getSuppressors()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationManagerService;->getToastRecord(ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/app/ITransientNotification;ILandroid/os/Binder;ILandroid/app/ITransientNotificationCallback;)Lcom/android/server/notification/toast/ToastRecord;
+HPLcom/android/server/notification/NotificationManagerService;->grantUriPermission(Landroid/os/IBinder;Landroid/net/Uri;ILjava/lang/String;I)V
 PLcom/android/server/notification/NotificationManagerService;->handleDurationReached(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->handleDurationReached(Lcom/android/server/notification/toast/ToastRecord;)V
 HSPLcom/android/server/notification/NotificationManagerService;->handleGroupedNotificationLocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
 PLcom/android/server/notification/NotificationManagerService;->handleKillTokenTimeout(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->handleListenerHintsChanged(I)V
-HSPLcom/android/server/notification/NotificationManagerService;->handleListenerInterruptionFilterChanged(I)V
-PLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V
+PLcom/android/server/notification/NotificationManagerService;->handleKillTokenTimeout(Lcom/android/server/notification/toast/ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->handleListenerHintsChanged(I)V
+PLcom/android/server/notification/NotificationManagerService;->handleListenerInterruptionFilterChanged(I)V
+HPLcom/android/server/notification/NotificationManagerService;->handleOnPackageChanged(ZI[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/NotificationManagerService;->handleRankingReconsideration(Landroid/os/Message;)V
 HSPLcom/android/server/notification/NotificationManagerService;->handleRankingSort()V
 HSPLcom/android/server/notification/NotificationManagerService;->handleSavePolicyFile()V
-PLcom/android/server/notification/NotificationManagerService;->handleSendRankingUpdate()V
-HSPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+HPLcom/android/server/notification/NotificationManagerService;->handleSendRankingUpdate()V
+HSPLcom/android/server/notification/NotificationManagerService;->hasAutoGroupSummaryLocked(Landroid/service/notification/StatusBarNotification;)Z
+HPLcom/android/server/notification/NotificationManagerService;->hasCompanionDevice(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+PLcom/android/server/notification/NotificationManagerService;->hideNotificationsForPackages([Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationManagerService;->indexOfNotificationLocked(Ljava/lang/String;)I
-PLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/app/ITransientNotification;)I
-HSPLcom/android/server/notification/NotificationManagerService;->init(Landroid/os/Looper;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;Landroid/app/usage/UsageStatsManagerInternal;Landroid/app/admin/DevicePolicyManagerInternal;Landroid/app/IUriGrantsManager;Lcom/android/server/uri/UriGrantsManagerInternal;Landroid/app/AppOpsManager;)V
+HPLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/app/ITransientNotification;)I
+HPLcom/android/server/notification/NotificationManagerService;->indexOfToastLocked(Ljava/lang/String;Landroid/os/IBinder;)I
+HSPLcom/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;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;)V
 HSPLcom/android/server/notification/NotificationManagerService;->isBlocked(Lcom/android/server/notification/NotificationRecord;)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isBlocked(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationUsageStats;)Z
-HSPLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(II)Z
+HSPLcom/android/server/notification/NotificationManagerService;->isCallerAndroid(Ljava/lang/String;I)Z
+HPLcom/android/server/notification/NotificationManagerService;->isCallerInstantApp(II)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isCallerSameApp(Ljava/lang/String;II)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isCallerSystemOrPhone()Z
 HSPLcom/android/server/notification/NotificationManagerService;->isCallingUidSystem()Z
+HSPLcom/android/server/notification/NotificationManagerService;->isCritical(Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->isInCall()Z
+HSPLcom/android/server/notification/NotificationManagerService;->isLoopingRingtoneNotification(Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->isNotificationAppropriateToBubble(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/NotificationManagerService;->isNotificationAppropriateToBubble(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isNotificationForCurrentUser(Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->isPackagePausedOrSuspended(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isUidSystemOrPhone(I)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isVisibleToListener(Landroid/service/notification/StatusBarNotification;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
 HSPLcom/android/server/notification/NotificationManagerService;->isVisuallyInterruptive(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationManagerService;->keepProcessAliveIfNeededLocked(I)V
-PLcom/android/server/notification/NotificationManagerService;->lambda$doChannelWarningToast$2$NotificationManagerService(Ljava/lang/CharSequence;)V
-HSPLcom/android/server/notification/NotificationManagerService;->lambda$handleSavePolicyFile$0$NotificationManagerService()V
-PLcom/android/server/notification/NotificationManagerService;->lambda$playVibration$3$NotificationManagerService(Lcom/android/server/notification/NotificationRecord;Landroid/os/VibrationEffect;)V
+HPLcom/android/server/notification/NotificationManagerService;->keepProcessAliveForToastIfNeededLocked(I)V
+HPLcom/android/server/notification/NotificationManagerService;->keepProcessAliveIfNeededLocked(I)V
+HPLcom/android/server/notification/NotificationManagerService;->lambda$doChannelWarningToast$3$NotificationManagerService(Ljava/lang/CharSequence;)V
+PLcom/android/server/notification/NotificationManagerService;->lambda$onStopUser$2$NotificationManagerService(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/notification/NotificationManagerService;->lambda$onUnlockUser$1$NotificationManagerService(Landroid/content/pm/UserInfo;)V
+HSPLcom/android/server/notification/NotificationManagerService;->lambda$playVibration$4$NotificationManagerService(Lcom/android/server/notification/NotificationRecord;Landroid/os/VibrationEffect;)V
+PLcom/android/server/notification/NotificationManagerService;->lambda$registerDeviceConfigChange$0$NotificationManagerService(Landroid/provider/DeviceConfig$Properties;)V
 HSPLcom/android/server/notification/NotificationManagerService;->listenForCallState()V
 HSPLcom/android/server/notification/NotificationManagerService;->loadPolicyFile()V
-HSPLcom/android/server/notification/NotificationManagerService;->logRecentLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->logSmartSuggestionsVisible(Lcom/android/server/notification/NotificationRecord;I)V
+HPLcom/android/server/notification/NotificationManagerService;->logSmartSuggestionsVisible(Lcom/android/server/notification/NotificationRecord;I)V
 HSPLcom/android/server/notification/NotificationManagerService;->makeRankingUpdateLocked(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Landroid/service/notification/NotificationRankingUpdate;
 PLcom/android/server/notification/NotificationManagerService;->maybeNotifyChannelOwner(Ljava/lang/String;ILandroid/app/NotificationChannel;Landroid/app/NotificationChannel;)V
 HSPLcom/android/server/notification/NotificationManagerService;->maybeRecordInterruptionLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z
+PLcom/android/server/notification/NotificationManagerService;->notificationMatchesCurrentProfiles(Lcom/android/server/notification/NotificationRecord;I)Z
+HPLcom/android/server/notification/NotificationManagerService;->notificationMatchesUserId(Lcom/android/server/notification/NotificationRecord;I)Z
 HSPLcom/android/server/notification/NotificationManagerService;->onBootPhase(I)V
 HSPLcom/android/server/notification/NotificationManagerService;->onStart()V
+PLcom/android/server/notification/NotificationManagerService;->onStopUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/notification/NotificationManagerService;->onUnlockUser(Landroid/content/pm/UserInfo;)V
 PLcom/android/server/notification/NotificationManagerService;->playInCallNotification()V
 HSPLcom/android/server/notification/NotificationManagerService;->playSound(Lcom/android/server/notification/NotificationRecord;Landroid/net/Uri;)Z
-PLcom/android/server/notification/NotificationManagerService;->playVibration(Lcom/android/server/notification/NotificationRecord;[JZ)Z
+HSPLcom/android/server/notification/NotificationManagerService;->playVibration(Lcom/android/server/notification/NotificationRecord;[JZ)Z
 HSPLcom/android/server/notification/NotificationManagerService;->readPolicyXml(Ljava/io/InputStream;ZI)V
+PLcom/android/server/notification/NotificationManagerService;->recordCallerLocked(Lcom/android/server/notification/NotificationRecord;)V
+HSPLcom/android/server/notification/NotificationManagerService;->registerDeviceConfigChange()V
 PLcom/android/server/notification/NotificationManagerService;->removeAutogroupKeyLocked(Ljava/lang/String;)V
-HSPLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
-HSPLcom/android/server/notification/NotificationManagerService;->removeFromNotificationListsLocked(Lcom/android/server/notification/NotificationRecord;)Z
-PLcom/android/server/notification/NotificationManagerService;->reportSeen(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)Z
+HPLcom/android/server/notification/NotificationManagerService;->removeDisabledHints(Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;I)Z
+HPLcom/android/server/notification/NotificationManagerService;->removeFromNotificationListsLocked(Lcom/android/server/notification/NotificationRecord;)Z
+HSPLcom/android/server/notification/NotificationManagerService;->removeRemoteView(Ljava/lang/String;Ljava/lang/String;ILandroid/widget/RemoteViews;)Z
+HPLcom/android/server/notification/NotificationManagerService;->reportSeen(Lcom/android/server/notification/NotificationRecord;)V
 PLcom/android/server/notification/NotificationManagerService;->reportUserInteraction(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationManagerService;->resolveNotificationUid(Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/notification/NotificationManagerService;->scheduleDurationReachedLocked(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->revokeUriPermission(Landroid/os/IBinder;Landroid/net/Uri;I)V
+HSPLcom/android/server/notification/NotificationManagerService;->safeBoolean(Ljava/lang/String;Z)Z
+HPLcom/android/server/notification/NotificationManagerService;->scheduleDurationReachedLocked(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->scheduleDurationReachedLocked(Lcom/android/server/notification/toast/ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->scheduleInterruptionFilterChanged(I)V
+HPLcom/android/server/notification/NotificationManagerService;->scheduleKillTokenTimeout(Lcom/android/server/notification/NotificationManagerService$ToastRecord;)V
+PLcom/android/server/notification/NotificationManagerService;->scheduleKillTokenTimeout(Lcom/android/server/notification/toast/ToastRecord;)V
+HPLcom/android/server/notification/NotificationManagerService;->scheduleListenerHintsChanged(I)V
 HSPLcom/android/server/notification/NotificationManagerService;->scheduleTimeoutLocked(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationManagerService;->sendAccessibilityEvent(Landroid/app/Notification;Ljava/lang/CharSequence;)V
 HSPLcom/android/server/notification/NotificationManagerService;->sendRegisteredOnlyBroadcast(Ljava/lang/String;)V
@@ -9650,14 +21610,24 @@
 HSPLcom/android/server/notification/NotificationManagerService;->setNotificationAssistantAccessGrantedForUserInternal(Landroid/content/ComponentName;IZ)V
 HSPLcom/android/server/notification/NotificationManagerService;->shouldMuteNotificationLocked(Lcom/android/server/notification/NotificationRecord;)Z
 PLcom/android/server/notification/NotificationManagerService;->showNextToastLocked()V
-PLcom/android/server/notification/NotificationManagerService;->updateEffectsSuppressorLocked()V
+PLcom/android/server/notification/NotificationManagerService;->snoozeNotificationInt(Ljava/lang/String;JLjava/lang/String;Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;)V
+HPLcom/android/server/notification/NotificationManagerService;->unhideNotificationsForPackages([Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationManagerService;->updateAutobundledSummaryFlags(ILjava/lang/String;ZZ)V
+HPLcom/android/server/notification/NotificationManagerService;->updateEffectsSuppressorLocked()V
+HSPLcom/android/server/notification/NotificationManagerService;->updateInterruptionFilterLocked()V
 HSPLcom/android/server/notification/NotificationManagerService;->updateLightsLocked()V
+PLcom/android/server/notification/NotificationManagerService;->updateListenerHintsLocked()V
+HPLcom/android/server/notification/NotificationManagerService;->updateNotificationBubbleFlags(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;ILcom/android/server/notification/NotificationRecord;Z)V
 PLcom/android/server/notification/NotificationManagerService;->updateNotificationChannelInt(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
 HSPLcom/android/server/notification/NotificationManagerService;->updateNotificationPulse()V
 HSPLcom/android/server/notification/NotificationManagerService;->updateUriPermissions(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;I)V
 HSPLcom/android/server/notification/NotificationManagerService;->writePolicyXml(Ljava/io/OutputStream;ZI)V
+HSPLcom/android/server/notification/NotificationManagerService;->writeSecureNotificationsPolicy(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/notification/NotificationRecord$Light;-><init>(III)V
+PLcom/android/server/notification/NotificationRecord$Light;->toString()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;-><clinit>()V
 HSPLcom/android/server/notification/NotificationRecord;-><init>(Landroid/content/Context;Landroid/service/notification/StatusBarNotification;Landroid/app/NotificationChannel;)V
-HSPLcom/android/server/notification/NotificationRecord;->addAdjustment(Landroid/service/notification/Adjustment;)V
+HPLcom/android/server/notification/NotificationRecord;->addAdjustment(Landroid/service/notification/Adjustment;)V
 HSPLcom/android/server/notification/NotificationRecord;->applyAdjustments()V
 HSPLcom/android/server/notification/NotificationRecord;->calculateAttributes()Landroid/media/AudioAttributes;
 HSPLcom/android/server/notification/NotificationRecord;->calculateGrantableUris()V
@@ -9668,27 +21638,130 @@
 HSPLcom/android/server/notification/NotificationRecord;->calculateSound()Landroid/net/Uri;
 HSPLcom/android/server/notification/NotificationRecord;->calculateUserSentiment()V
 HSPLcom/android/server/notification/NotificationRecord;->calculateVibration()[J
-HSPLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationRecord;->dump(Landroid/util/proto/ProtoOutputStream;JZI)V
-PLcom/android/server/notification/NotificationRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/Context;Z)V
+HSPLcom/android/server/notification/NotificationRecord;->canBubble()Z
+HSPLcom/android/server/notification/NotificationRecord;->canShowBadge()Z
+HPLcom/android/server/notification/NotificationRecord;->copyRankingInformation(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationRecord;->dump(Landroid/util/proto/ProtoOutputStream;JZI)V
+HPLcom/android/server/notification/NotificationRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/Context;Z)V
 PLcom/android/server/notification/NotificationRecord;->formatRemoteViews(Landroid/widget/RemoteViews;)Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
-PLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
+PLcom/android/server/notification/NotificationRecord;->getAdjustmentIssuer()Ljava/lang/String;
+PLcom/android/server/notification/NotificationRecord;->getAssistantImportance()I
+HSPLcom/android/server/notification/NotificationRecord;->getAudioAttributes()Landroid/media/AudioAttributes;
+HSPLcom/android/server/notification/NotificationRecord;->getAuthoritativeRank()I
+HSPLcom/android/server/notification/NotificationRecord;->getChannel()Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/NotificationRecord;->getContactAffinity()F
+HSPLcom/android/server/notification/NotificationRecord;->getCriticality()I
+PLcom/android/server/notification/NotificationRecord;->getEditChoicesBeforeSending()Z
+HSPLcom/android/server/notification/NotificationRecord;->getExposureMs(J)I
+HPLcom/android/server/notification/NotificationRecord;->getFlags()I
+HSPLcom/android/server/notification/NotificationRecord;->getFreshnessMs(J)I
+HPLcom/android/server/notification/NotificationRecord;->getGlobalSortKey()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;->getGrantableUris()Landroid/util/ArraySet;
+HSPLcom/android/server/notification/NotificationRecord;->getGroupKey()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;->getImportance()I
 HSPLcom/android/server/notification/NotificationRecord;->getImportanceExplanation()Ljava/lang/CharSequence;
-PLcom/android/server/notification/NotificationRecord;->getItemLogMaker()Landroid/metrics/LogMaker;
+PLcom/android/server/notification/NotificationRecord;->getImportanceExplanationCode()I
+PLcom/android/server/notification/NotificationRecord;->getInitialImportance()I
+PLcom/android/server/notification/NotificationRecord;->getInitialImportanceExplanationCode()I
+HSPLcom/android/server/notification/NotificationRecord;->getInterruptionMs(J)I
+PLcom/android/server/notification/NotificationRecord;->getIsAppImportanceLocked()Z
+HPLcom/android/server/notification/NotificationRecord;->getItemLogMaker()Landroid/metrics/LogMaker;
+HSPLcom/android/server/notification/NotificationRecord;->getKey()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;->getLastAudiblyAlertedMs()J
+HPLcom/android/server/notification/NotificationRecord;->getLastIntrusive()J
+HSPLcom/android/server/notification/NotificationRecord;->getLifespanMs(J)I
+PLcom/android/server/notification/NotificationRecord;->getLight()Lcom/android/server/notification/NotificationRecord$Light;
+HSPLcom/android/server/notification/NotificationRecord;->getLogMaker()Landroid/metrics/LogMaker;
 HSPLcom/android/server/notification/NotificationRecord;->getLogMaker(J)Landroid/metrics/LogMaker;
 HSPLcom/android/server/notification/NotificationRecord;->getNotification()Landroid/app/Notification;
-PLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
-PLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationRecord;->getNumSmartActionsAdded()I
+HPLcom/android/server/notification/NotificationRecord;->getNumSmartRepliesAdded()I
+HPLcom/android/server/notification/NotificationRecord;->getPackagePriority()I
+HSPLcom/android/server/notification/NotificationRecord;->getPackageVisibilityOverride()I
+HSPLcom/android/server/notification/NotificationRecord;->getPeopleOverride()Ljava/util/ArrayList;
+HPLcom/android/server/notification/NotificationRecord;->getRankingScore()F
+HPLcom/android/server/notification/NotificationRecord;->getRankingTimeMs()J
+HPLcom/android/server/notification/NotificationRecord;->getSbn()Landroid/service/notification/StatusBarNotification;
+HSPLcom/android/server/notification/NotificationRecord;->getSmartReplies()Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationRecord;->getSnoozeCriteria()Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationRecord;->getSound()Landroid/net/Uri;
+HPLcom/android/server/notification/NotificationRecord;->getStats()Landroid/service/notification/NotificationStats;
+PLcom/android/server/notification/NotificationRecord;->getSuggestionsGeneratedByAssistant()Z
+HSPLcom/android/server/notification/NotificationRecord;->getSuppressedVisualEffects()I
+HSPLcom/android/server/notification/NotificationRecord;->getSystemGeneratedSmartActions()Ljava/util/ArrayList;
+HSPLcom/android/server/notification/NotificationRecord;->getUid()I
+HSPLcom/android/server/notification/NotificationRecord;->getUser()Landroid/os/UserHandle;
 HSPLcom/android/server/notification/NotificationRecord;->getUserId()I
-PLcom/android/server/notification/NotificationRecord;->idDebugString(Landroid/content/Context;Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z
+HSPLcom/android/server/notification/NotificationRecord;->getUserSentiment()I
+HSPLcom/android/server/notification/NotificationRecord;->getVibration()[J
+HPLcom/android/server/notification/NotificationRecord;->hasBeenVisiblyExpanded()Z
+HSPLcom/android/server/notification/NotificationRecord;->hasRecordedInterruption()Z
+PLcom/android/server/notification/NotificationRecord;->hasSeenSmartReplies()Z
+HSPLcom/android/server/notification/NotificationRecord;->hasUndecoratedRemoteView()Z
+HPLcom/android/server/notification/NotificationRecord;->isAudioAttributesUsage(I)Z
+HPLcom/android/server/notification/NotificationRecord;->isCategory(Ljava/lang/String;)Z
+HPLcom/android/server/notification/NotificationRecord;->isConversation()Z
+HSPLcom/android/server/notification/NotificationRecord;->isHidden()Z
+HSPLcom/android/server/notification/NotificationRecord;->isIntercepted()Z
+HSPLcom/android/server/notification/NotificationRecord;->isInterruptive()Z
+PLcom/android/server/notification/NotificationRecord;->isNewEnoughForAlerting(J)Z
+HSPLcom/android/server/notification/NotificationRecord;->isPreChannelsNotification()Z
+HPLcom/android/server/notification/NotificationRecord;->isProxied()Z
+HSPLcom/android/server/notification/NotificationRecord;->isRecentlyIntrusive()Z
+HPLcom/android/server/notification/NotificationRecord;->isSeen()Z
+HSPLcom/android/server/notification/NotificationRecord;->lambda$calculateGrantableUris$0$NotificationRecord(Landroid/net/Uri;)V
+PLcom/android/server/notification/NotificationRecord;->recordDirectReplied()V
 PLcom/android/server/notification/NotificationRecord;->recordDismissalSentiment(I)V
 PLcom/android/server/notification/NotificationRecord;->recordDismissalSurface(I)V
+PLcom/android/server/notification/NotificationRecord;->recordExpanded()V
+PLcom/android/server/notification/NotificationRecord;->recordSnoozed()V
+PLcom/android/server/notification/NotificationRecord;->recordViewedSettings()V
+HSPLcom/android/server/notification/NotificationRecord;->setAllowBubble(Z)V
+PLcom/android/server/notification/NotificationRecord;->setAssistantImportance(I)V
+HSPLcom/android/server/notification/NotificationRecord;->setAudiblyAlerted(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setAuthoritativeRank(I)V
+HSPLcom/android/server/notification/NotificationRecord;->setContactAffinity(F)V
+PLcom/android/server/notification/NotificationRecord;->setEditChoicesBeforeSending(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setGlobalSortKey(Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationRecord;->setHidden(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setIntercepted(Z)Z
 HSPLcom/android/server/notification/NotificationRecord;->setInterruptive(Z)V
-PLcom/android/server/notification/NotificationRecord;->setVisibility(ZII)V
-PLcom/android/server/notification/NotificationRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;->setIsAppImportanceLocked(Z)V
+PLcom/android/server/notification/NotificationRecord;->setNumSmartActionsAdded(I)V
+PLcom/android/server/notification/NotificationRecord;->setNumSmartRepliesAdded(I)V
+PLcom/android/server/notification/NotificationRecord;->setOverrideGroupKey(Ljava/lang/String;)V
+HSPLcom/android/server/notification/NotificationRecord;->setPackagePriority(I)V
+HSPLcom/android/server/notification/NotificationRecord;->setPackageVisibilityOverride(I)V
+HSPLcom/android/server/notification/NotificationRecord;->setRecentlyIntrusive(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setRecordedInterruption(Z)V
+HPLcom/android/server/notification/NotificationRecord;->setSeen()V
+PLcom/android/server/notification/NotificationRecord;->setSeenSmartReplies(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setShowBadge(Z)V
+PLcom/android/server/notification/NotificationRecord;->setSmartReplies(Ljava/util/ArrayList;)V
+PLcom/android/server/notification/NotificationRecord;->setSuggestionsGeneratedByAssistant(Z)V
+HSPLcom/android/server/notification/NotificationRecord;->setSuppressedVisualEffects(I)V
+PLcom/android/server/notification/NotificationRecord;->setSystemGeneratedSmartActions(Ljava/util/ArrayList;)V
+HPLcom/android/server/notification/NotificationRecord;->setSystemImportance(I)V
+HPLcom/android/server/notification/NotificationRecord;->setTextChanged(Z)V
+HPLcom/android/server/notification/NotificationRecord;->setVisibility(ZII)V
+HPLcom/android/server/notification/NotificationRecord;->toString()Ljava/lang/String;
+HSPLcom/android/server/notification/NotificationRecord;->updateNotificationChannel(Landroid/app/NotificationChannel;)V
 HSPLcom/android/server/notification/NotificationRecord;->visitGrantableUri(Landroid/net/Uri;Z)V
+HPLcom/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;->getInstanceId()I
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople()I
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getNumPeople(Landroid/os/Bundle;)I
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle()I
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getStyle(Landroid/os/Bundle;)I
+PLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->getUiEvent()Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvents;
+HPLcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;->shouldLog(I)Z
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvents;-><clinit>()V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvents;-><init>(Ljava/lang/String;II)V
+PLcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvents;->getId()I
+HSPLcom/android/server/notification/NotificationRecordLoggerImpl;-><init>()V
+HPLcom/android/server/notification/NotificationRecordLoggerImpl;->logNotificationReported(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;II)V
+HSPLcom/android/server/notification/NotificationUsageStats$1;-><init>(Lcom/android/server/notification/NotificationUsageStats;Landroid/os/Looper;)V
 PLcom/android/server/notification/NotificationUsageStats$1;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;-><init>(Landroid/content/Context;Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->countApiUse(Lcom/android/server/notification/NotificationRecord;)V
@@ -9696,138 +21769,183 @@
 PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->dumpJson()Lorg/json/JSONObject;
 PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->emit()V
 PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate()F
-HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate(J)F
+HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getEnqueueRate(J)F
 PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->getPrevious()Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
 HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->isAlertRateLimited()Z
 PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->maybeCount(Ljava/lang/String;I)V
+PLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->maybePut(Lorg/json/JSONObject;Ljava/lang/String;F)V
+HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->maybePut(Lorg/json/JSONObject;Ljava/lang/String;I)V
 HPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->toStringWithIndent(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/notification/NotificationUsageStats$AggregatedStats;->updateInterarrivalEstimate(J)V
+HSPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><clinit>()V
 HSPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;-><init>(Landroid/content/Context;Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->increment(I)V
 PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->maybeCount(Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;)V
 PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->maybePut(Lorg/json/JSONObject;Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;)V
-PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->toString()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->toString()Ljava/lang/String;
 PLcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;->update(Lcom/android/server/notification/NotificationUsageStats$ImportanceHistogram;)V
+HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/os/Looper;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;-><init>(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;Landroid/content/Context;Ljava/lang/String;Landroid/database/sqlite/SQLiteDatabase$CursorFactory;I)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;->onConfigure(Landroid/database/sqlite/SQLiteDatabase;)V
-HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
+PLcom/android/server/notification/NotificationUsageStats$SQLiteLog$2;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->access$000(Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;JILcom/android/server/notification/NotificationRecord;)V
 PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->dumpJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONObject;
 PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->getMidnightMs()J
-PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->jsonPostFrequencies(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONArray;
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->jsonPostFrequencies(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONArray;
 PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logClicked(Lcom/android/server/notification/NotificationRecord;)V
 PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logDismissed(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logPosted(Lcom/android/server/notification/NotificationRecord;)V
-HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logRemoved(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->printPostFrequencies(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->logRemoved(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->printPostFrequencies(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->pruneIfNecessary(Landroid/database/sqlite/SQLiteDatabase;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationDetails(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
-HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putPosttimeVisibility(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
+HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putNotificationIdentifiers(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
+HPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->putPosttimeVisibility(Lcom/android/server/notification/NotificationRecord;Landroid/content/ContentValues;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SQLiteLog;->writeEvent(JILcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;-><init>()V
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->finish()V
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeExpandedMs()J
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeMs()J
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentPosttimeMs()J
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->finish()V
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeExpandedMs()J
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentAirtimeMs()J
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->getCurrentPosttimeMs()J
 PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->hasBeenVisiblyExpanded()Z
 PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onClick()V
 PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onDismiss()V
 PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onExpansionChanged(ZZ)V
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onRemoved()V
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onVisibilityChanged(Z)V
-PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->toString()Ljava/lang/String;
-HSPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V
-PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateVisiblyExpandedStats()V
+PLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onRemoved()V
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->onVisibilityChanged(Z)V
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->toString()Ljava/lang/String;
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateFrom(Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;)V
+HPLcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;->updateVisiblyExpandedStats()V
+HSPLcom/android/server/notification/NotificationUsageStats;-><clinit>()V
 HSPLcom/android/server/notification/NotificationUsageStats;-><init>(Landroid/content/Context;)V
-PLcom/android/server/notification/NotificationUsageStats;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/NotificationUsageStats;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/NotificationUsageStats;->dumpJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONObject;
-PLcom/android/server/notification/NotificationUsageStats;->emit()V
-HSPLcom/android/server/notification/NotificationUsageStats;->getAppEnqueueRate(Ljava/lang/String;)F
+HPLcom/android/server/notification/NotificationUsageStats;->emit()V
+HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Lcom/android/server/notification/NotificationRecord;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HSPLcom/android/server/notification/NotificationUsageStats;->getAggregatedStatsLocked(Ljava/lang/String;)[Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
+HPLcom/android/server/notification/NotificationUsageStats;->getAppEnqueueRate(Ljava/lang/String;)F
+HSPLcom/android/server/notification/NotificationUsageStats;->getOrCreateAggregatedStatsLocked(Ljava/lang/String;)Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
 HSPLcom/android/server/notification/NotificationUsageStats;->isAlertRateLimited(Ljava/lang/String;)Z
-PLcom/android/server/notification/NotificationUsageStats;->registerBlocked(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerBlocked(Lcom/android/server/notification/NotificationRecord;)V
 PLcom/android/server/notification/NotificationUsageStats;->registerClickedByUser(Lcom/android/server/notification/NotificationRecord;)V
 PLcom/android/server/notification/NotificationUsageStats;->registerDismissedByUser(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/NotificationUsageStats;->registerEnqueuedByApp(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerOverCountQuota(Ljava/lang/String;)V
-PLcom/android/server/notification/NotificationUsageStats;->registerOverRateQuota(Ljava/lang/String;)V
+PLcom/android/server/notification/NotificationUsageStats;->registerImageRemoved(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerOverCountQuota(Ljava/lang/String;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerOverRateQuota(Ljava/lang/String;)V
 HSPLcom/android/server/notification/NotificationUsageStats;->registerPeopleAffinity(Lcom/android/server/notification/NotificationRecord;ZZZ)V
 HSPLcom/android/server/notification/NotificationUsageStats;->registerPostedByApp(Lcom/android/server/notification/NotificationRecord;)V
-HSPLcom/android/server/notification/NotificationUsageStats;->registerRemovedByApp(Lcom/android/server/notification/NotificationRecord;)V
-HSPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerRemovedByApp(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/NotificationUsageStats;->registerSuspendedByAdmin(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/NotificationUsageStats;->registerUpdatedByApp(Lcom/android/server/notification/NotificationRecord;Lcom/android/server/notification/NotificationRecord;)V
+HSPLcom/android/server/notification/NotificationUsageStats;->releaseAggregatedStatsLocked([Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;)V
 HSPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>()V
+HSPLcom/android/server/notification/PreferencesHelper$PackagePreferences;-><init>(Lcom/android/server/notification/PreferencesHelper$1;)V
+PLcom/android/server/notification/PreferencesHelper$PackagePreferences;->isValidDelegate(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/PreferencesHelper;-><init>(Landroid/content/Context;Landroid/content/pm/PackageManager;Lcom/android/server/notification/RankingHandler;Lcom/android/server/notification/ZenModeHelper;)V
 HSPLcom/android/server/notification/PreferencesHelper;->areBubblesAllowed(Ljava/lang/String;I)Z
 HSPLcom/android/server/notification/PreferencesHelper;->badgingEnabled(Landroid/os/UserHandle;)Z
-HSPLcom/android/server/notification/PreferencesHelper;->bubblesEnabled(Landroid/os/UserHandle;)Z
+HSPLcom/android/server/notification/PreferencesHelper;->bubblesEnabled()Z
 HSPLcom/android/server/notification/PreferencesHelper;->canShowBadge(Ljava/lang/String;I)Z
-HSPLcom/android/server/notification/PreferencesHelper;->clearLockedFields(Landroid/app/NotificationChannel;)V
-HSPLcom/android/server/notification/PreferencesHelper;->createDefaultChannelIfNeeded(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)V
-HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZ)V
-PLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V
+HSPLcom/android/server/notification/PreferencesHelper;->channelIsLiveLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Landroid/app/NotificationChannel;)Z
+PLcom/android/server/notification/PreferencesHelper;->clearData(Ljava/lang/String;I)V
+PLcom/android/server/notification/PreferencesHelper;->clearLockedFieldsLocked(Landroid/app/NotificationChannel;)V
+HSPLcom/android/server/notification/PreferencesHelper;->createDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+HSPLcom/android/server/notification/PreferencesHelper;->createNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;ZZ)Z
+HPLcom/android/server/notification/PreferencesHelper;->createNotificationChannelGroup(Ljava/lang/String;ILandroid/app/NotificationChannelGroup;Z)V
+HSPLcom/android/server/notification/PreferencesHelper;->deleteDefaultChannelIfNeededLocked(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
 HSPLcom/android/server/notification/PreferencesHelper;->deleteNotificationChannel(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/notification/PreferencesHelper;->deleteNotificationChannelGroup(Ljava/lang/String;ILjava/lang/String;)Ljava/util/List;
+HPLcom/android/server/notification/PreferencesHelper;->deleteNotificationChannelGroup(Ljava/lang/String;ILjava/lang/String;)Ljava/util/List;
 PLcom/android/server/notification/PreferencesHelper;->dump(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/PreferencesHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 PLcom/android/server/notification/PreferencesHelper;->dumpBansJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONArray;
-PLcom/android/server/notification/PreferencesHelper;->dumpChannelsJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONArray;
-PLcom/android/server/notification/PreferencesHelper;->dumpJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONObject;
-PLcom/android/server/notification/PreferencesHelper;->dumpPackagePreferencess(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
-PLcom/android/server/notification/PreferencesHelper;->dumpPackagePreferencess(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
-PLcom/android/server/notification/PreferencesHelper;->getAppsBypassingDndCount(I)I
-PLcom/android/server/notification/PreferencesHelper;->getBlockedChannelCount(Ljava/lang/String;I)I
+HPLcom/android/server/notification/PreferencesHelper;->dumpChannelsJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONArray;
+HPLcom/android/server/notification/PreferencesHelper;->dumpJson(Lcom/android/server/notification/NotificationManagerService$DumpFilter;)Lorg/json/JSONObject;
+HPLcom/android/server/notification/PreferencesHelper;->dumpPackagePreferencesLocked(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
+HPLcom/android/server/notification/PreferencesHelper;->dumpPackagePreferencesLocked(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;Landroid/util/ArrayMap;)V
+HPLcom/android/server/notification/PreferencesHelper;->findConversationChannel(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;Ljava/lang/String;Ljava/lang/String;Z)Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/PreferencesHelper;->getAppsBypassingDndCount(I)I
+HPLcom/android/server/notification/PreferencesHelper;->getBlockedAppCount(I)I
+HPLcom/android/server/notification/PreferencesHelper;->getBlockedChannelCount(Ljava/lang/String;I)I
+PLcom/android/server/notification/PreferencesHelper;->getChannelGroupLog(Ljava/lang/String;Ljava/lang/String;)Landroid/metrics/LogMaker;
 HSPLcom/android/server/notification/PreferencesHelper;->getChannelLog(Landroid/app/NotificationChannel;Ljava/lang/String;)Landroid/metrics/LogMaker;
+HSPLcom/android/server/notification/PreferencesHelper;->getConversationNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ZZ)Landroid/app/NotificationChannel;
+HPLcom/android/server/notification/PreferencesHelper;->getDeletedChannelCount(Ljava/lang/String;I)I
 HSPLcom/android/server/notification/PreferencesHelper;->getImportance(Ljava/lang/String;I)I
 HSPLcom/android/server/notification/PreferencesHelper;->getIsAppImportanceLocked(Ljava/lang/String;I)Z
+HSPLcom/android/server/notification/PreferencesHelper;->getNotificationChannel(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Z)Landroid/app/NotificationChannel;
 HSPLcom/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;
-PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;
-PLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZ)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferences(Ljava/lang/String;IIIIZZ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
-PLcom/android/server/notification/PreferencesHelper;->getPackageBans()Ljava/util/Map;
-PLcom/android/server/notification/PreferencesHelper;->getPackageChannels()Ljava/util/Map;
-HSPLcom/android/server/notification/PreferencesHelper;->getPackagePreferences(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroup(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/NotificationChannelGroup;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroupWithChannels(Ljava/lang/String;ILjava/lang/String;Z)Landroid/app/NotificationChannelGroup;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannelGroups(Ljava/lang/String;IZZZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/notification/PreferencesHelper;->getNotificationChannels(Ljava/lang/String;IZ)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HSPLcom/android/server/notification/PreferencesHelper;->getOrCreatePackagePreferencesLocked(Ljava/lang/String;IIIIIZZ)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+HPLcom/android/server/notification/PreferencesHelper;->getPackageBans()Ljava/util/Map;
+HPLcom/android/server/notification/PreferencesHelper;->getPackageChannels()Ljava/util/Map;
+HSPLcom/android/server/notification/PreferencesHelper;->getPackagePreferencesLocked(Ljava/lang/String;I)Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
+PLcom/android/server/notification/PreferencesHelper;->isDelegateAllowed(Ljava/lang/String;ILjava/lang/String;I)Z
 HSPLcom/android/server/notification/PreferencesHelper;->isGroupBlocked(Ljava/lang/String;ILjava/lang/String;)Z
 HSPLcom/android/server/notification/PreferencesHelper;->lockChannelsForOEM([Ljava/lang/String;)V
-PLcom/android/server/notification/PreferencesHelper;->lockFieldsForUpdate(Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;)V
+PLcom/android/server/notification/PreferencesHelper;->lockFieldsForUpdateLocked(Landroid/app/NotificationChannel;Landroid/app/NotificationChannel;)V
 HSPLcom/android/server/notification/PreferencesHelper;->onLocaleChanged(Landroid/content/Context;I)V
-HSPLcom/android/server/notification/PreferencesHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)V
+HPLcom/android/server/notification/PreferencesHelper;->onPackagesChanged(ZI[Ljava/lang/String;[I)Z
+PLcom/android/server/notification/PreferencesHelper;->onUserRemoved(I)V
 HSPLcom/android/server/notification/PreferencesHelper;->onUserSwitched(I)V
-HSPLcom/android/server/notification/PreferencesHelper;->onUserUnlocked(I)V
-PLcom/android/server/notification/PreferencesHelper;->onlyHasDefaultChannel(Ljava/lang/String;I)Z
+PLcom/android/server/notification/PreferencesHelper;->onUserUnlocked(I)V
+HPLcom/android/server/notification/PreferencesHelper;->onlyHasDefaultChannel(Ljava/lang/String;I)Z
+HSPLcom/android/server/notification/PreferencesHelper;->packagePreferencesKey(Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/notification/PreferencesHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;ZI)V
-HSPLcom/android/server/notification/PreferencesHelper;->shouldHideSilentStatusIcons()Z
+PLcom/android/server/notification/PreferencesHelper;->setEnabled(Ljava/lang/String;IZ)V
+PLcom/android/server/notification/PreferencesHelper;->setImportance(Ljava/lang/String;II)V
+HSPLcom/android/server/notification/PreferencesHelper;->shouldHaveDefaultChannel(Lcom/android/server/notification/PreferencesHelper$PackagePreferences;)Z
+PLcom/android/server/notification/PreferencesHelper;->shouldHideSilentStatusIcons()Z
+HSPLcom/android/server/notification/PreferencesHelper;->syncChannelsBypassingDnd(I)V
+HPLcom/android/server/notification/PreferencesHelper;->unrestoredPackageKey(Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/notification/PreferencesHelper;->updateBadgingEnabled()V
 HSPLcom/android/server/notification/PreferencesHelper;->updateBubblesEnabled()V
 HSPLcom/android/server/notification/PreferencesHelper;->updateChannelsBypassingDnd(I)V
-PLcom/android/server/notification/PreferencesHelper;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
+HSPLcom/android/server/notification/PreferencesHelper;->updateConfig()V
+HSPLcom/android/server/notification/PreferencesHelper;->updateDefaultApps(ILandroid/util/ArraySet;Landroid/util/ArraySet;)V
+HPLcom/android/server/notification/PreferencesHelper;->updateNotificationChannel(Ljava/lang/String;ILandroid/app/NotificationChannel;Z)V
+PLcom/android/server/notification/PreferencesHelper;->updateZenPolicy(Z)V
+HSPLcom/android/server/notification/PreferencesHelper;->wasBadgingForcedTrue(Landroid/content/Context;)Z
 HSPLcom/android/server/notification/PreferencesHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;ZI)V
 HSPLcom/android/server/notification/PriorityExtractor;-><init>()V
 HSPLcom/android/server/notification/PriorityExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/PriorityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/PriorityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/PriorityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/PropConfig;->getStringArray(Landroid/content/Context;Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/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;->dump(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
-PLcom/android/server/notification/RankingHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HPLcom/android/server/notification/RankingHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/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;->indexOf(Ljava/util/ArrayList;Lcom/android/server/notification/NotificationRecord;)I
 HSPLcom/android/server/notification/RankingHelper;->sort(Ljava/util/ArrayList;)V
-PLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V
+HSPLcom/android/server/notification/RankingReconsideration;-><init>(Ljava/lang/String;J)V
 HSPLcom/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
-HSPLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
-HSPLcom/android/server/notification/RateEstimator;->getRate(J)F
+HPLcom/android/server/notification/RankingReconsideration;->getKey()Ljava/lang/String;
+HPLcom/android/server/notification/RankingReconsideration;->run()V
+HSPLcom/android/server/notification/RateEstimator;-><init>()V
+HPLcom/android/server/notification/RateEstimator;->getInterarrivalEstimate(J)D
+HPLcom/android/server/notification/RateEstimator;->getRate(J)F
 HSPLcom/android/server/notification/RateEstimator;->update(J)F
-HSPLcom/android/server/notification/ScheduleConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/ScheduleConditionProvider$1;-><init>(Lcom/android/server/notification/ScheduleConditionProvider;)V
+HPLcom/android/server/notification/ScheduleConditionProvider$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/ScheduleConditionProvider;-><clinit>()V
 HSPLcom/android/server/notification/ScheduleConditionProvider;-><init>()V
+PLcom/android/server/notification/ScheduleConditionProvider;->access$000(Lcom/android/server/notification/ScheduleConditionProvider;)Landroid/util/ArrayMap;
+PLcom/android/server/notification/ScheduleConditionProvider;->access$100(Lcom/android/server/notification/ScheduleConditionProvider;)V
 PLcom/android/server/notification/ScheduleConditionProvider;->addSnoozed(Landroid/net/Uri;)V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->asInterface()Landroid/service/notification/IConditionProvider;
 HSPLcom/android/server/notification/ScheduleConditionProvider;->attachBase(Landroid/content/Context;)V
-HSPLcom/android/server/notification/ScheduleConditionProvider;->conditionSnoozed(Landroid/net/Uri;)Z
+PLcom/android/server/notification/ScheduleConditionProvider;->conditionSnoozed(Landroid/net/Uri;)Z
 HSPLcom/android/server/notification/ScheduleConditionProvider;->createCondition(Landroid/net/Uri;ILjava/lang/String;)Landroid/service/notification/Condition;
 PLcom/android/server/notification/ScheduleConditionProvider;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->evaluateSubscriptionLocked(Landroid/net/Uri;Landroid/service/notification/ScheduleCalendar;JJ)Landroid/service/notification/Condition;
@@ -9835,36 +21953,88 @@
 HSPLcom/android/server/notification/ScheduleConditionProvider;->getComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/notification/ScheduleConditionProvider;->getNextAlarm()J
 HSPLcom/android/server/notification/ScheduleConditionProvider;->isValidConditionId(Landroid/net/Uri;)Z
+PLcom/android/server/notification/ScheduleConditionProvider;->meetsSchedule(Landroid/service/notification/ScheduleCalendar;J)Z
 HSPLcom/android/server/notification/ScheduleConditionProvider;->onBootComplete()V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->onConnected()V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->onSubscribe(Landroid/net/Uri;)V
+PLcom/android/server/notification/ScheduleConditionProvider;->onUnsubscribe(Landroid/net/Uri;)V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->readSnoozed()V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->removeSnoozed(Landroid/net/Uri;)V
+HSPLcom/android/server/notification/ScheduleConditionProvider;->saveSnoozedLocked()V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->setRegistered(Z)V
 HSPLcom/android/server/notification/ScheduleConditionProvider;->updateAlarm(JJ)V
+HSPLcom/android/server/notification/SnoozeHelper$1;-><init>(Lcom/android/server/notification/SnoozeHelper;)V
+PLcom/android/server/notification/SnoozeHelper$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/notification/SnoozeHelper;-><clinit>()V
 HSPLcom/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;->access$000()Z
+PLcom/android/server/notification/SnoozeHelper;->access$100()Ljava/lang/String;
 HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;)Z
 HSPLcom/android/server/notification/SnoozeHelper;->cancel(ILjava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/notification/SnoozeHelper;->cancel(IZ)Z
+PLcom/android/server/notification/SnoozeHelper;->clearData(ILjava/lang/String;)V
+PLcom/android/server/notification/SnoozeHelper;->createPendingIntent(Ljava/lang/String;Ljava/lang/String;I)Landroid/app/PendingIntent;
 PLcom/android/server/notification/SnoozeHelper;->dump(Ljava/io/PrintWriter;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+HSPLcom/android/server/notification/SnoozeHelper;->getSnoozeContextForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/notification/SnoozeHelper;->getSnoozeTimeForUnpostedNotification(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Long;
 PLcom/android/server/notification/SnoozeHelper;->getSnoozed()Ljava/util/List;
-HSPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
+HPLcom/android/server/notification/SnoozeHelper;->getSnoozed(ILjava/lang/String;)Ljava/util/Collection;
 HSPLcom/android/server/notification/SnoozeHelper;->isSnoozed(ILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/notification/SnoozeHelper;->lambda$writeXml$0(JLorg/xmlpull/v1/XmlSerializer;Ljava/lang/Long;)V
+HSPLcom/android/server/notification/SnoozeHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/notification/SnoozeHelper;->removeRecord(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Landroid/util/ArrayMap;)Ljava/lang/Object;
+PLcom/android/server/notification/SnoozeHelper;->repost(Ljava/lang/String;I)V
+HPLcom/android/server/notification/SnoozeHelper;->repostGroupSummary(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/notification/SnoozeHelper;->scheduleRepost(Ljava/lang/String;Ljava/lang/String;IJ)V
+PLcom/android/server/notification/SnoozeHelper;->snooze(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/SnoozeHelper;->snooze(Lcom/android/server/notification/NotificationRecord;J)V
+PLcom/android/server/notification/SnoozeHelper;->storeRecord(Ljava/lang/String;Ljava/lang/String;Ljava/lang/Integer;Landroid/util/ArrayMap;Ljava/lang/Object;)V
+PLcom/android/server/notification/SnoozeHelper;->update(ILcom/android/server/notification/NotificationRecord;)V
+HSPLcom/android/server/notification/SnoozeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/notification/SnoozeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Landroid/util/ArrayMap;Ljava/lang/String;Lcom/android/server/notification/SnoozeHelper$Inserter;)V
+HSPLcom/android/server/notification/SystemConditionProviderService;-><init>()V
 PLcom/android/server/notification/SystemConditionProviderService;->dumpUpcomingTime(Ljava/io/PrintWriter;Ljava/lang/String;JJ)V
+HSPLcom/android/server/notification/SystemConditionProviderService;->formatDuration(J)Ljava/lang/String;
+HSPLcom/android/server/notification/SystemConditionProviderService;->ts(J)Ljava/lang/String;
+HSPLcom/android/server/notification/ValidateNotificationPeople$1;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/os/Handler;)V
 PLcom/android/server/notification/ValidateNotificationPeople$1;->onChange(ZLandroid/net/Uri;I)V
-PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->getAffinity()F
-PLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->mergeContact(Landroid/database/Cursor;)V
-PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->setRecord(Lcom/android/server/notification/NotificationRecord;)V
-PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->work()V
+PLcom/android/server/notification/ValidateNotificationPeople$2;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;Ljava/util/concurrent/Semaphore;)V
+PLcom/android/server/notification/ValidateNotificationPeople$2;->run()V
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;-><init>()V
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->access$400(Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;)Z
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->getAffinity()F
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->isExpired()Z
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->isInvalid()Z
+HPLcom/android/server/notification/ValidateNotificationPeople$LookupResult;->mergeContact(Landroid/database/Cursor;)V
+HPLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Ljava/lang/String;Ljava/util/LinkedList;)V
+HPLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;-><init>(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Ljava/lang/String;Ljava/util/LinkedList;Lcom/android/server/notification/ValidateNotificationPeople$1;)V
+HPLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->applyChangesLocked(Lcom/android/server/notification/NotificationRecord;)V
+PLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->getContactAffinity()F
+HPLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->setRecord(Lcom/android/server/notification/NotificationRecord;)V
+HPLcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;->work()V
+HSPLcom/android/server/notification/ValidateNotificationPeople;-><clinit>()V
 HSPLcom/android/server/notification/ValidateNotificationPeople;-><init>()V
+PLcom/android/server/notification/ValidateNotificationPeople;->access$000()Z
+PLcom/android/server/notification/ValidateNotificationPeople;->access$100(Lcom/android/server/notification/ValidateNotificationPeople;)I
+PLcom/android/server/notification/ValidateNotificationPeople;->access$1000(Lcom/android/server/notification/ValidateNotificationPeople;)Lcom/android/server/notification/NotificationUsageStats;
+PLcom/android/server/notification/ValidateNotificationPeople;->access$108(Lcom/android/server/notification/ValidateNotificationPeople;)I
+PLcom/android/server/notification/ValidateNotificationPeople;->access$200()Z
+PLcom/android/server/notification/ValidateNotificationPeople;->access$300(Lcom/android/server/notification/ValidateNotificationPeople;)Landroid/util/LruCache;
+PLcom/android/server/notification/ValidateNotificationPeople;->access$600(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+PLcom/android/server/notification/ValidateNotificationPeople;->access$700(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+PLcom/android/server/notification/ValidateNotificationPeople;->access$800(Lcom/android/server/notification/ValidateNotificationPeople;Landroid/content/Context;Landroid/net/Uri;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+HPLcom/android/server/notification/ValidateNotificationPeople;->access$900(Lcom/android/server/notification/ValidateNotificationPeople;ILjava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/notification/ValidateNotificationPeople;->combineLists([Ljava/lang/String;[Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/notification/ValidateNotificationPeople;->getCacheKey(ILjava/lang/String;)Ljava/lang/String;
+PLcom/android/server/notification/ValidateNotificationPeople;->getContactAffinity(Landroid/os/UserHandle;Landroid/os/Bundle;IF)F
 HSPLcom/android/server/notification/ValidateNotificationPeople;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeople(Landroid/os/Bundle;)[Ljava/lang/String;
 HSPLcom/android/server/notification/ValidateNotificationPeople;->getExtraPeopleForKey(Landroid/os/Bundle;Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/server/notification/ValidateNotificationPeople;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/ValidateNotificationPeople;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
-PLcom/android/server/notification/ValidateNotificationPeople;->searchContacts(Landroid/content/Context;Landroid/net/Uri;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+HPLcom/android/server/notification/ValidateNotificationPeople;->resolveEmailContact(Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+PLcom/android/server/notification/ValidateNotificationPeople;->resolvePhoneContact(Landroid/content/Context;Ljava/lang/String;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+HPLcom/android/server/notification/ValidateNotificationPeople;->searchContacts(Landroid/content/Context;Landroid/net/Uri;)Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
 HSPLcom/android/server/notification/ValidateNotificationPeople;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/ValidateNotificationPeople;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
 HSPLcom/android/server/notification/ValidateNotificationPeople;->validatePeople(Landroid/content/Context;Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
@@ -9874,559 +22044,1441 @@
 HSPLcom/android/server/notification/VisibilityExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/VisibilityExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/VisibilityExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/ZenLog;-><clinit>()V
 HSPLcom/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;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/notification/ZenLog;->componentListToString(Ljava/util/List;)Ljava/lang/String;
+PLcom/android/server/notification/ZenLog;->componentToString(Landroid/content/ComponentName;)Ljava/lang/String;
+HPLcom/android/server/notification/ZenLog;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/notification/ZenLog;->hintsToString(I)Ljava/lang/String;
+HSPLcom/android/server/notification/ZenLog;->ringerModeToString(I)Ljava/lang/String;
+HSPLcom/android/server/notification/ZenLog;->subscribeResult(Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)Ljava/lang/String;
 HSPLcom/android/server/notification/ZenLog;->traceConfig(Ljava/lang/String;Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig;)V
-PLcom/android/server/notification/ZenLog;->traceEffectsSuppressorChanged(Ljava/util/List;Ljava/util/List;J)V
-HSPLcom/android/server/notification/ZenLog;->traceIntercepted(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
-PLcom/android/server/notification/ZenLog;->traceListenerHintsChanged(III)V
-HSPLcom/android/server/notification/ZenLog;->traceNotIntercepted(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+HPLcom/android/server/notification/ZenLog;->traceDisableEffects(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+HPLcom/android/server/notification/ZenLog;->traceEffectsSuppressorChanged(Ljava/util/List;Ljava/util/List;J)V
+HPLcom/android/server/notification/ZenLog;->traceIntercepted(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+HPLcom/android/server/notification/ZenLog;->traceListenerHintsChanged(III)V
+HPLcom/android/server/notification/ZenLog;->traceNotIntercepted(Lcom/android/server/notification/NotificationRecord;Ljava/lang/String;)V
+HSPLcom/android/server/notification/ZenLog;->traceSetConsolidatedZenPolicy(Landroid/app/NotificationManager$Policy;Ljava/lang/String;)V
 PLcom/android/server/notification/ZenLog;->traceSetNotificationPolicy(Ljava/lang/String;ILandroid/app/NotificationManager$Policy;)V
+PLcom/android/server/notification/ZenLog;->traceSetRingerModeExternal(IILjava/lang/String;II)V
 HSPLcom/android/server/notification/ZenLog;->traceSetRingerModeInternal(IILjava/lang/String;II)V
+HSPLcom/android/server/notification/ZenLog;->traceSetZenMode(ILjava/lang/String;)V
+HSPLcom/android/server/notification/ZenLog;->traceSubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V
+PLcom/android/server/notification/ZenLog;->traceUnsubscribe(Landroid/net/Uri;Landroid/service/notification/IConditionProvider;Landroid/os/RemoteException;)V
 PLcom/android/server/notification/ZenLog;->typeToString(I)Ljava/lang/String;
+HSPLcom/android/server/notification/ZenLog;->zenModeToString(I)Ljava/lang/String;
+HSPLcom/android/server/notification/ZenModeConditions;-><clinit>()V
 HSPLcom/android/server/notification/ZenModeConditions;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ConditionProviders;)V
 PLcom/android/server/notification/ZenModeConditions;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/notification/ZenModeConditions;->evaluateConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/notification/ZenModeConditions;->evaluateRule(Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/util/ArraySet;Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/notification/ZenModeConditions;->onBootComplete()V
 HSPLcom/android/server/notification/ZenModeConditions;->onConditionChanged(Landroid/net/Uri;Landroid/service/notification/Condition;)V
-HSPLcom/android/server/notification/ZenModeConditions;->onServiceAdded(Landroid/content/ComponentName;)V
+PLcom/android/server/notification/ZenModeConditions;->onServiceAdded(Landroid/content/ComponentName;)V
 HSPLcom/android/server/notification/ZenModeConditions;->onUserSwitched()V
 HSPLcom/android/server/notification/ZenModeConditions;->updateSnoozing(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
+HSPLcom/android/server/notification/ZenModeExtractor;-><clinit>()V
 HSPLcom/android/server/notification/ZenModeExtractor;-><init>()V
 HSPLcom/android/server/notification/ZenModeExtractor;->initialize(Landroid/content/Context;Lcom/android/server/notification/NotificationUsageStats;)V
 HSPLcom/android/server/notification/ZenModeExtractor;->process(Lcom/android/server/notification/NotificationRecord;)Lcom/android/server/notification/RankingReconsideration;
 HSPLcom/android/server/notification/ZenModeExtractor;->setConfig(Lcom/android/server/notification/RankingConfig;)V
 HSPLcom/android/server/notification/ZenModeExtractor;->setZenHelper(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>()V
 HSPLcom/android/server/notification/ZenModeFiltering$RepeatCallers;-><init>(Lcom/android/server/notification/ZenModeFiltering$1;)V
-PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->cleanUp(Landroid/util/ArrayMap;J)V
-PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->isRepeat(Landroid/content/Context;Landroid/os/Bundle;)Z
-PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->peopleString(Landroid/os/Bundle;)Ljava/lang/String;
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->access$100(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;)I
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->access$200(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;)Landroid/util/ArrayMap;
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->access$300(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;Landroid/content/Context;Landroid/os/Bundle;)Z
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->access$400(Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;Landroid/content/Context;Landroid/os/Bundle;)V
+HPLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->cleanUp(Landroid/util/ArrayMap;J)V
+HPLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->isRepeat(Landroid/content/Context;Landroid/os/Bundle;)Z
+HPLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->peopleString(Landroid/os/Bundle;)Ljava/lang/String;
 PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->recordCall(Landroid/content/Context;Landroid/os/Bundle;)V
-PLcom/android/server/notification/ZenModeFiltering;->audienceMatches(IF)Z
+PLcom/android/server/notification/ZenModeFiltering$RepeatCallers;->setThresholdMinutes(Landroid/content/Context;)V
+HSPLcom/android/server/notification/ZenModeFiltering;-><clinit>()V
+HSPLcom/android/server/notification/ZenModeFiltering;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/notification/ZenModeFiltering;->audienceMatches(IF)Z
 PLcom/android/server/notification/ZenModeFiltering;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
-HSPLcom/android/server/notification/ZenModeFiltering;->isDefaultPhoneApp(Ljava/lang/String;)Z
-HSPLcom/android/server/notification/ZenModeFiltering;->isMedia(Lcom/android/server/notification/NotificationRecord;)Z
-HSPLcom/android/server/notification/ZenModeFiltering;->isMessage(Lcom/android/server/notification/NotificationRecord;)Z
-HSPLcom/android/server/notification/ZenModeFiltering;->isSystem(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->extras(Lcom/android/server/notification/NotificationRecord;)Landroid/os/Bundle;
+HPLcom/android/server/notification/ZenModeFiltering;->isAlarm(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isCritical(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isDefaultPhoneApp(Ljava/lang/String;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isEvent(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isMedia(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isMessage(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isReminder(Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->isSystem(Lcom/android/server/notification/NotificationRecord;)Z
 PLcom/android/server/notification/ZenModeFiltering;->matchesCallFilter(Landroid/content/Context;ILandroid/app/NotificationManager$Policy;Landroid/os/UserHandle;Landroid/os/Bundle;Lcom/android/server/notification/ValidateNotificationPeople;IF)Z
 PLcom/android/server/notification/ZenModeFiltering;->recordCall(Lcom/android/server/notification/NotificationRecord;)V
 HSPLcom/android/server/notification/ZenModeFiltering;->shouldIntercept(ILandroid/app/NotificationManager$Policy;Lcom/android/server/notification/NotificationRecord;)Z
+HPLcom/android/server/notification/ZenModeFiltering;->shouldInterceptAudience(ILcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeFiltering;->ts(J)Ljava/lang/String;
+HSPLcom/android/server/notification/ZenModeHelper$Callback;-><init>()V
+PLcom/android/server/notification/ZenModeHelper$Callback;->onAutomaticRuleStatusChanged(ILjava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/notification/ZenModeHelper$Callback;->onConsolidatedPolicyChanged()V
 HSPLcom/android/server/notification/ZenModeHelper$Callback;->onPolicyChanged()V
+HSPLcom/android/server/notification/ZenModeHelper$H$ConfigMessageData;-><init>(Lcom/android/server/notification/ZenModeHelper$H;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;)V
+HSPLcom/android/server/notification/ZenModeHelper$H;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Looper;Lcom/android/server/notification/ZenModeHelper$1;)V
+HSPLcom/android/server/notification/ZenModeHelper$H;->access$200(Lcom/android/server/notification/ZenModeHelper$H;)V
+HSPLcom/android/server/notification/ZenModeHelper$H;->access$300(Lcom/android/server/notification/ZenModeHelper$H;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/ZenModeHelper$H;->access$400(Lcom/android/server/notification/ZenModeHelper$H;)V
 HSPLcom/android/server/notification/ZenModeHelper$H;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/notification/ZenModeHelper$H;->postApplyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/ZenModeHelper$H;->postDispatchOnZenModeChanged()V
+HSPLcom/android/server/notification/ZenModeHelper$H;->postMetricsTimer()V
+HSPLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
+HSPLcom/android/server/notification/ZenModeHelper$Metrics;-><init>(Lcom/android/server/notification/ZenModeHelper;Lcom/android/server/notification/ZenModeHelper$1;)V
+PLcom/android/server/notification/ZenModeHelper$Metrics;->access$1200(Lcom/android/server/notification/ZenModeHelper$Metrics;)V
+HSPLcom/android/server/notification/ZenModeHelper$Metrics;->emit()V
 HSPLcom/android/server/notification/ZenModeHelper$Metrics;->emitDndType()V
 HSPLcom/android/server/notification/ZenModeHelper$Metrics;->emitRules()V
 HSPLcom/android/server/notification/ZenModeHelper$Metrics;->emitZenMode()V
 HSPLcom/android/server/notification/ZenModeHelper$Metrics;->onConfigChanged()V
 HSPLcom/android/server/notification/ZenModeHelper$Metrics;->onZenModeChanged()V
+HSPLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;-><init>(Lcom/android/server/notification/ZenModeHelper;)V
 HSPLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->getRingerModeAffectedStreams(I)I
+PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->onSetRingerModeExternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
 HSPLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->onSetRingerModeInternal(IILjava/lang/String;ILandroid/media/VolumePolicy;)I
 PLcom/android/server/notification/ZenModeHelper$RingerModeDelegate;->toString()Ljava/lang/String;
-HSPLcom/android/server/notification/ZenModeHelper$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/notification/ZenModeHelper$SettingsObserver;-><init>(Lcom/android/server/notification/ZenModeHelper;Landroid/os/Handler;)V
+HSPLcom/android/server/notification/ZenModeHelper$SettingsObserver;->observe()V
+PLcom/android/server/notification/ZenModeHelper$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/notification/ZenModeHelper$SettingsObserver;->update(Landroid/net/Uri;)V
+HSPLcom/android/server/notification/ZenModeHelper;-><clinit>()V
 HSPLcom/android/server/notification/ZenModeHelper;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/notification/ConditionProviders;)V
+HSPLcom/android/server/notification/ZenModeHelper;->access$1000(Lcom/android/server/notification/ZenModeHelper;)V
+PLcom/android/server/notification/ZenModeHelper;->access$1100(Lcom/android/server/notification/ZenModeHelper;)Lcom/android/server/notification/ZenModeHelper$Metrics;
+HSPLcom/android/server/notification/ZenModeHelper;->access$1300(Lcom/android/server/notification/ZenModeHelper;Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/ZenModeHelper;->access$500(Lcom/android/server/notification/ZenModeHelper;Ljava/lang/Integer;)V
+HSPLcom/android/server/notification/ZenModeHelper;->access$700(Lcom/android/server/notification/ZenModeHelper;)Landroid/content/Context;
+PLcom/android/server/notification/ZenModeHelper;->access$800(Lcom/android/server/notification/ZenModeHelper;)I
+HSPLcom/android/server/notification/ZenModeHelper;->access$900(Lcom/android/server/notification/ZenModeHelper;)Lcom/android/server/notification/ZenModeHelper$H;
+PLcom/android/server/notification/ZenModeHelper;->addAutomaticZenRule(Landroid/app/AutomaticZenRule;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/notification/ZenModeHelper;->addCallback(Lcom/android/server/notification/ZenModeHelper$Callback;)V
+HSPLcom/android/server/notification/ZenModeHelper;->applyConfig(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/notification/ZenModeHelper;->applyCustomPolicy(Landroid/service/notification/ZenPolicy;Landroid/service/notification/ZenModeConfig$ZenRule;)V
 HSPLcom/android/server/notification/ZenModeHelper;->applyRestrictions()V
-HSPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZI)V
-HSPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZII)V
+HSPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZI)V
+HSPLcom/android/server/notification/ZenModeHelper;->applyRestrictions(ZZII)V
 HSPLcom/android/server/notification/ZenModeHelper;->applyZenToRingerMode()V
-HSPLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
+HPLcom/android/server/notification/ZenModeHelper;->canManageAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->cleanUpZenRules()V
 HSPLcom/android/server/notification/ZenModeHelper;->computeZenMode()I
-HSPLcom/android/server/notification/ZenModeHelper;->createAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Landroid/app/AutomaticZenRule;
+PLcom/android/server/notification/ZenModeHelper;->createAutomaticZenRule(Landroid/service/notification/ZenModeConfig$ZenRule;)Landroid/app/AutomaticZenRule;
+PLcom/android/server/notification/ZenModeHelper;->dispatchOnAutomaticRuleStatusChanged(ILjava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/notification/ZenModeHelper;->dispatchOnConfigChanged()V
+HSPLcom/android/server/notification/ZenModeHelper;->dispatchOnConsolidatedPolicyChanged()V
+HSPLcom/android/server/notification/ZenModeHelper;->dispatchOnPolicyChanged()V
+HSPLcom/android/server/notification/ZenModeHelper;->dispatchOnZenModeChanged()V
 PLcom/android/server/notification/ZenModeHelper;->dump(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/notification/ZenModeHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/notification/ZenModeHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/service/notification/ZenModeConfig;)V
+HPLcom/android/server/notification/ZenModeHelper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/service/notification/ZenModeConfig;)V
 HSPLcom/android/server/notification/ZenModeHelper;->evaluateZenMode(Ljava/lang/String;Z)V
 HSPLcom/android/server/notification/ZenModeHelper;->findMatchingRule(Landroid/service/notification/ZenModeConfig;Landroid/net/Uri;Landroid/service/notification/Condition;)Landroid/service/notification/ZenModeConfig$ZenRule;
-HSPLcom/android/server/notification/ZenModeHelper;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;
+HPLcom/android/server/notification/ZenModeHelper;->getAutomaticZenRule(Ljava/lang/String;)Landroid/app/AutomaticZenRule;
 HSPLcom/android/server/notification/ZenModeHelper;->getConfig()Landroid/service/notification/ZenModeConfig;
 HSPLcom/android/server/notification/ZenModeHelper;->getConsolidatedNotificationPolicy()Landroid/app/NotificationManager$Policy;
+PLcom/android/server/notification/ZenModeHelper;->getCurrentInstanceCount(Landroid/content/ComponentName;)I
 HSPLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy()Landroid/app/NotificationManager$Policy;
+HSPLcom/android/server/notification/ZenModeHelper;->getNotificationPolicy(Landroid/service/notification/ZenModeConfig;)Landroid/app/NotificationManager$Policy;
+PLcom/android/server/notification/ZenModeHelper;->getPreviousRingerModeSetting()I
+PLcom/android/server/notification/ZenModeHelper;->getServiceInfo(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
 PLcom/android/server/notification/ZenModeHelper;->getSuppressedEffects()J
 HSPLcom/android/server/notification/ZenModeHelper;->getZenMode()I
 HSPLcom/android/server/notification/ZenModeHelper;->getZenModeListenerInterruptionFilter()I
-HSPLcom/android/server/notification/ZenModeHelper;->getZenRules()Ljava/util/List;
+PLcom/android/server/notification/ZenModeHelper;->getZenModeSetting()I
+HPLcom/android/server/notification/ZenModeHelper;->getZenRules()Ljava/util/List;
 HSPLcom/android/server/notification/ZenModeHelper;->initZenMode()V
-HSPLcom/android/server/notification/ZenModeHelper;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeHelper;->isCall(Lcom/android/server/notification/NotificationRecord;)Z
+PLcom/android/server/notification/ZenModeHelper;->isSystemRule(Landroid/app/AutomaticZenRule;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->loadConfigForUser(ILjava/lang/String;)V
 PLcom/android/server/notification/ZenModeHelper;->matchesCallFilter(Landroid/os/UserHandle;Landroid/os/Bundle;Lcom/android/server/notification/ValidateNotificationPeople;IF)Z
 HSPLcom/android/server/notification/ZenModeHelper;->onSystemReady()V
+PLcom/android/server/notification/ZenModeHelper;->onUserRemoved(I)V
 HSPLcom/android/server/notification/ZenModeHelper;->onUserSwitched(I)V
-HSPLcom/android/server/notification/ZenModeHelper;->onUserUnlocked(I)V
-HSPLcom/android/server/notification/ZenModeHelper;->populateZenRule(Landroid/app/AutomaticZenRule;Landroid/service/notification/ZenModeConfig$ZenRule;Z)V
+PLcom/android/server/notification/ZenModeHelper;->onUserUnlocked(I)V
+PLcom/android/server/notification/ZenModeHelper;->populateZenRule(Landroid/app/AutomaticZenRule;Landroid/service/notification/ZenModeConfig$ZenRule;Z)V
 HSPLcom/android/server/notification/ZenModeHelper;->readDefaultConfig(Landroid/content/res/Resources;)Landroid/service/notification/ZenModeConfig;
 HSPLcom/android/server/notification/ZenModeHelper;->readXml(Lorg/xmlpull/v1/XmlPullParser;ZI)V
 PLcom/android/server/notification/ZenModeHelper;->recordCaller(Lcom/android/server/notification/NotificationRecord;)V
-HSPLcom/android/server/notification/ZenModeHelper;->removeAutomaticZenRules(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/notification/ZenModeHelper;->removeAutomaticZenRule(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/notification/ZenModeHelper;->removeAutomaticZenRules(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/notification/ZenModeHelper;->requestFromListener(Landroid/content/ComponentName;I)V
+HSPLcom/android/server/notification/ZenModeHelper;->ruleMatches(Landroid/net/Uri;Landroid/service/notification/Condition;Landroid/service/notification/ZenModeConfig$ZenRule;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleState(Landroid/net/Uri;Landroid/service/notification/Condition;)V
-HSPLcom/android/server/notification/ZenModeHelper;->setConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Ljava/lang/String;)V
+PLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleState(Ljava/lang/String;Landroid/service/notification/Condition;)V
+HSPLcom/android/server/notification/ZenModeHelper;->setAutomaticZenRuleStateLocked(Landroid/service/notification/ZenModeConfig;Landroid/service/notification/ZenModeConfig$ZenRule;Landroid/service/notification/Condition;)V
+PLcom/android/server/notification/ZenModeHelper;->setConfig(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Ljava/lang/String;)V
 HSPLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Landroid/content/ComponentName;Ljava/lang/String;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->setConfigLocked(Landroid/service/notification/ZenModeConfig;Ljava/lang/String;Landroid/content/ComponentName;Z)Z
 PLcom/android/server/notification/ZenModeHelper;->setManualZenMode(ILandroid/net/Uri;Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/notification/ZenModeHelper;->setManualZenMode(ILandroid/net/Uri;Ljava/lang/String;Ljava/lang/String;Z)V
 PLcom/android/server/notification/ZenModeHelper;->setNotificationPolicy(Landroid/app/NotificationManager$Policy;)V
-PLcom/android/server/notification/ZenModeHelper;->setSuppressedEffects(J)V
+HSPLcom/android/server/notification/ZenModeHelper;->setPreviousRingerModeSetting(Ljava/lang/Integer;)V
+HSPLcom/android/server/notification/ZenModeHelper;->setPriorityOnlyDndExemptPackages([Ljava/lang/String;)V
+HPLcom/android/server/notification/ZenModeHelper;->setSuppressedEffects(J)V
 HSPLcom/android/server/notification/ZenModeHelper;->setZenModeSetting(I)V
 HSPLcom/android/server/notification/ZenModeHelper;->shouldIntercept(Lcom/android/server/notification/NotificationRecord;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->showZenUpgradeNotification(I)V
-HSPLcom/android/server/notification/ZenModeHelper;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;Ljava/lang/String;)Z
+HPLcom/android/server/notification/ZenModeHelper;->updateAutomaticZenRule(Ljava/lang/String;Landroid/app/AutomaticZenRule;Ljava/lang/String;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->updateConsolidatedPolicy(Ljava/lang/String;)V
 HSPLcom/android/server/notification/ZenModeHelper;->updateDefaultAutomaticRuleNames()V
 HSPLcom/android/server/notification/ZenModeHelper;->updateDefaultZenRules()V
+HSPLcom/android/server/notification/ZenModeHelper;->updateRingerModeAffectedStreams()V
 HSPLcom/android/server/notification/ZenModeHelper;->updateSnoozing(Landroid/service/notification/ZenModeConfig$ZenRule;)Z
 HSPLcom/android/server/notification/ZenModeHelper;->writeXml(Lorg/xmlpull/v1/XmlSerializer;ZLjava/lang/Integer;I)V
+HSPLcom/android/server/notification/ZenModeHelper;->zenSeverity(I)I
+PLcom/android/server/notification/toast/CustomToastRecord;-><init>(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;Landroid/os/IBinder;Landroid/app/ITransientNotification;ILandroid/os/Binder;I)V
+PLcom/android/server/notification/toast/CustomToastRecord;->hide()V
+PLcom/android/server/notification/toast/CustomToastRecord;->show()Z
+HPLcom/android/server/notification/toast/TextToastRecord;-><init>(Lcom/android/server/notification/NotificationManagerService;Lcom/android/server/statusbar/StatusBarManagerInternal;ILjava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;ILandroid/os/Binder;ILandroid/app/ITransientNotificationCallback;)V
+PLcom/android/server/notification/toast/TextToastRecord;->hide()V
+PLcom/android/server/notification/toast/TextToastRecord;->show()Z
+PLcom/android/server/notification/toast/TextToastRecord;->toString()Ljava/lang/String;
+HPLcom/android/server/notification/toast/ToastRecord;-><init>(Lcom/android/server/notification/NotificationManagerService;ILjava/lang/String;Landroid/os/IBinder;ILandroid/os/Binder;I)V
+PLcom/android/server/notification/toast/ToastRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/notification/NotificationManagerService$DumpFilter;)V
+PLcom/android/server/notification/toast/ToastRecord;->getDuration()I
+PLcom/android/server/notification/toast/ToastRecord;->update(I)V
+PLcom/android/server/oemlock/-$$Lambda$VendorLock$8zNsLj4Jt-s5XEEk_KIC2zQR29g;-><init>([Ljava/lang/Integer;[Ljava/lang/Boolean;)V
+PLcom/android/server/oemlock/-$$Lambda$VendorLock$8zNsLj4Jt-s5XEEk_KIC2zQR29g;->onValues(IZ)V
+PLcom/android/server/oemlock/-$$Lambda$VendorLock$HjegvthxXAHFarV_FukbaMGePGU;-><init>([Ljava/lang/Integer;[Ljava/lang/Boolean;)V
 PLcom/android/server/oemlock/-$$Lambda$VendorLock$HjegvthxXAHFarV_FukbaMGePGU;->onValues(IZ)V
+HSPLcom/android/server/oemlock/OemLock;-><init>()V
+HSPLcom/android/server/oemlock/OemLockService$1;-><init>(Lcom/android/server/oemlock/OemLockService;)V
 HSPLcom/android/server/oemlock/OemLockService$1;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/oemlock/OemLockService$2;-><init>(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService$2;->isDeviceOemUnlocked()Z
+PLcom/android/server/oemlock/OemLockService$2;->isOemUnlockAllowed()Z
 PLcom/android/server/oemlock/OemLockService$2;->isOemUnlockAllowedByCarrier()Z
 PLcom/android/server/oemlock/OemLockService$2;->setOemUnlockAllowedByCarrier(Z[B)V
 HSPLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/oemlock/OemLockService;-><init>(Landroid/content/Context;Lcom/android/server/oemlock/OemLock;)V
+PLcom/android/server/oemlock/OemLockService;->access$000(Lcom/android/server/oemlock/OemLockService;)Lcom/android/server/oemlock/OemLock;
+PLcom/android/server/oemlock/OemLockService;->access$100(Lcom/android/server/oemlock/OemLockService;Z)V
+PLcom/android/server/oemlock/OemLockService;->access$200(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService;->access$300(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService;->access$600(Lcom/android/server/oemlock/OemLockService;)V
+PLcom/android/server/oemlock/OemLockService;->enforceManageCarrierOemUnlockPermission()V
+PLcom/android/server/oemlock/OemLockService;->enforceOemUnlockReadPermission()V
 PLcom/android/server/oemlock/OemLockService;->enforceUserIsAdmin()V
+HSPLcom/android/server/oemlock/OemLockService;->getOemLock(Landroid/content/Context;)Lcom/android/server/oemlock/OemLock;
 HSPLcom/android/server/oemlock/OemLockService;->onStart()V
+PLcom/android/server/oemlock/OemLockService;->setPersistentDataBlockOemUnlockAllowedBit(Z)V
+HSPLcom/android/server/oemlock/VendorLock;-><init>(Landroid/content/Context;Landroid/hardware/oemlock/V1_0/IOemLock;)V
 HSPLcom/android/server/oemlock/VendorLock;->getOemLockHalService()Landroid/hardware/oemlock/V1_0/IOemLock;
 PLcom/android/server/oemlock/VendorLock;->isOemUnlockAllowedByCarrier()Z
+PLcom/android/server/oemlock/VendorLock;->isOemUnlockAllowedByDevice()Z
+PLcom/android/server/oemlock/VendorLock;->lambda$isOemUnlockAllowedByCarrier$1([Ljava/lang/Integer;[Ljava/lang/Boolean;IZ)V
+PLcom/android/server/oemlock/VendorLock;->lambda$isOemUnlockAllowedByDevice$2([Ljava/lang/Integer;[Ljava/lang/Boolean;IZ)V
 PLcom/android/server/oemlock/VendorLock;->setOemUnlockAllowedByCarrier(Z[B)V
-HSPLcom/android/server/om/-$$Lambda$OverlayManagerService$OverlayChangeListener$u9oeN2C0PDMo0pYiLqfMBkwuMNA;->run()V
+HPLcom/android/server/oemlock/VendorLock;->toByteArrayList([B)Ljava/util/ArrayList;
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$Connection$4U-n0RSv1BPv15mvu8B8zXARcpk;-><init>(Lcom/android/server/om/IdmapDaemon$Connection;)V
+PLcom/android/server/om/-$$Lambda$IdmapDaemon$Connection$4U-n0RSv1BPv15mvu8B8zXARcpk;->run()V
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$hZvlb8B5bMAnD3h9mHLjOQXKSTI;-><clinit>()V
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$hZvlb8B5bMAnD3h9mHLjOQXKSTI;-><init>()V
+PLcom/android/server/om/-$$Lambda$IdmapDaemon$hZvlb8B5bMAnD3h9mHLjOQXKSTI;->binderDied()V
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$u_1qfM2VGzol3UUX0R4mwNZs9gY;-><clinit>()V
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$u_1qfM2VGzol3UUX0R4mwNZs9gY;-><init>()V
+HSPLcom/android/server/om/-$$Lambda$IdmapDaemon$u_1qfM2VGzol3UUX0R4mwNZs9gY;->call()Ljava/lang/Object;
+PLcom/android/server/om/-$$Lambda$OverlayManagerService$OverlayChangeListener$u9oeN2C0PDMo0pYiLqfMBkwuMNA;-><init>(Lcom/android/server/om/OverlayManagerService$OverlayChangeListener;ILjava/lang/String;)V
+PLcom/android/server/om/-$$Lambda$OverlayManagerService$OverlayChangeListener$u9oeN2C0PDMo0pYiLqfMBkwuMNA;->run()V
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerService$_WGEV7N0qhntbqqDW3A1O-TVv5o;-><init>(Lcom/android/server/om/OverlayManagerService;)V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerService$_WGEV7N0qhntbqqDW3A1O-TVv5o;->run()V
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$ATr0DZmWpSWdKD0COw4t2qS-DRk;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$ATr0DZmWpSWdKD0COw4t2qS-DRk;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$ATr0DZmWpSWdKD0COw4t2qS-DRk;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$Fjt465P6G89HQZERZFsOEjMbtXI;-><init>(I)V
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$Fjt465P6G89HQZERZFsOEjMbtXI;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$IkswmT9ZZJXmNAztGRVrD3hODMw;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$IkswmT9ZZJXmNAztGRVrD3hODMw;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$IkswmT9ZZJXmNAztGRVrD3hODMw;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$L_Sj43p2Txm_KH-wT0lseBTVzh8;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$L_Sj43p2Txm_KH-wT0lseBTVzh8;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$WYtPK6Ebqjgxm8_8Cot-ijv_z_8;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$WYtPK6Ebqjgxm8_8Cot-ijv_z_8;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$WYtPK6Ebqjgxm8_8Cot-ijv_z_8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$bX7CTrJVR3B_eQmD43OOHtRIxgw;->test(Ljava/lang/Object;)Z
+PLcom/android/server/om/-$$Lambda$OverlayManagerSettings$Xr3l7ivgTflBmPTqf9hbG3i0H_I;-><init>(Lcom/android/server/om/OverlayManagerSettings;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/om/-$$Lambda$OverlayManagerSettings$Xr3l7ivgTflBmPTqf9hbG3i0H_I;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$jZUujzDxrP0hpAqUxnqEf-b-nQc;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$jZUujzDxrP0hpAqUxnqEf-b-nQc;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$jZUujzDxrP0hpAqUxnqEf-b-nQc;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$mq-CHAn1jQBVquxuOUv0eQANHIY;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$sx0Nyvq91kCH_A-4Ctf09G_0u9M;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$sx0Nyvq91kCH_A-4Ctf09G_0u9M;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$sx0Nyvq91kCH_A-4Ctf09G_0u9M;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$vXm2C4y9Q-F5yYZNimB-Lr6w-oI;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$vXm2C4y9Q-F5yYZNimB-Lr6w-oI;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$OverlayManagerSettings$vXm2C4y9Q-F5yYZNimB-Lr6w-oI;->applyAsInt(Ljava/lang/Object;)I
+HSPLcom/android/server/om/-$$Lambda$bXuJGR0fITXNwGnQfQHv9KS-XgY;-><clinit>()V
 HSPLcom/android/server/om/-$$Lambda$bXuJGR0fITXNwGnQfQHv9KS-XgY;-><init>()V
 HSPLcom/android/server/om/-$$Lambda$bXuJGR0fITXNwGnQfQHv9KS-XgY;->get()Ljava/lang/Object;
+PLcom/android/server/om/DumpState;-><init>()V
+PLcom/android/server/om/DumpState;->getField()Ljava/lang/String;
+PLcom/android/server/om/DumpState;->getPackageName()Ljava/lang/String;
+PLcom/android/server/om/DumpState;->getUserId()I
+PLcom/android/server/om/DumpState;->isVerbose()Z
+PLcom/android/server/om/DumpState;->setUserId(I)V
+HSPLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;)V
+HSPLcom/android/server/om/IdmapDaemon$Connection;-><init>(Lcom/android/server/om/IdmapDaemon;Lcom/android/server/om/IdmapDaemon$1;)V
+HSPLcom/android/server/om/IdmapDaemon$Connection;->close()V
+PLcom/android/server/om/IdmapDaemon$Connection;->lambda$close$0$IdmapDaemon$Connection()V
+HSPLcom/android/server/om/IdmapDaemon;-><clinit>()V
+HSPLcom/android/server/om/IdmapDaemon;-><init>()V
+HSPLcom/android/server/om/IdmapDaemon;->access$000()Ljava/lang/Object;
+HSPLcom/android/server/om/IdmapDaemon;->access$100(Lcom/android/server/om/IdmapDaemon;)Ljava/util/concurrent/atomic/AtomicInteger;
+PLcom/android/server/om/IdmapDaemon;->access$200(Lcom/android/server/om/IdmapDaemon;)Landroid/os/IIdmap2;
+PLcom/android/server/om/IdmapDaemon;->access$202(Lcom/android/server/om/IdmapDaemon;Landroid/os/IIdmap2;)Landroid/os/IIdmap2;
+PLcom/android/server/om/IdmapDaemon;->access$300()V
+HSPLcom/android/server/om/IdmapDaemon;->connect()Lcom/android/server/om/IdmapDaemon$Connection;
+HSPLcom/android/server/om/IdmapDaemon;->createIdmap(Ljava/lang/String;Ljava/lang/String;IZI)Ljava/lang/String;
+HSPLcom/android/server/om/IdmapDaemon;->getIdmapPath(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/om/IdmapDaemon;->getInstance()Lcom/android/server/om/IdmapDaemon;
+HSPLcom/android/server/om/IdmapDaemon;->lambda$connect$0()Landroid/os/IBinder;
+PLcom/android/server/om/IdmapDaemon;->lambda$connect$1()V
+PLcom/android/server/om/IdmapDaemon;->removeIdmap(Ljava/lang/String;I)Z
+HSPLcom/android/server/om/IdmapDaemon;->startIdmapService()V
+PLcom/android/server/om/IdmapDaemon;->stopIdmapService()V
+HSPLcom/android/server/om/IdmapDaemon;->verifyIdmap(Ljava/lang/String;IZI)Z
+HSPLcom/android/server/om/IdmapManager;-><clinit>()V
+HSPLcom/android/server/om/IdmapManager;-><init>(Lcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;)V
 HSPLcom/android/server/om/IdmapManager;->calculateFulfilledPolicies(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)I
-HSPLcom/android/server/om/IdmapManager;->connectToIdmap2d()V
 HSPLcom/android/server/om/IdmapManager;->createIdmap(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;I)Z
 HSPLcom/android/server/om/IdmapManager;->enforceOverlayable(Landroid/content/pm/PackageInfo;)Z
 HSPLcom/android/server/om/IdmapManager;->getIdmapPath(Ljava/lang/String;I)Ljava/lang/String;
 PLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/om/OverlayInfo;)Z
 HSPLcom/android/server/om/IdmapManager;->idmapExists(Landroid/content/pm/PackageInfo;I)Z
 PLcom/android/server/om/IdmapManager;->removeIdmap(Landroid/content/om/OverlayInfo;I)Z
+PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><clinit>()V
+PLcom/android/server/om/OverlayActorEnforcer$ActorState;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/om/OverlayActorEnforcer;-><init>(Lcom/android/server/om/OverlayActorEnforcer$VerifyCallback;)V
+PLcom/android/server/om/OverlayActorEnforcer;->enforceActor(Landroid/content/om/OverlayInfo;Ljava/lang/String;II)V
+PLcom/android/server/om/OverlayActorEnforcer;->isAllowedActor(Ljava/lang/String;Landroid/content/om/OverlayInfo;II)Lcom/android/server/om/OverlayActorEnforcer$ActorState;
+HSPLcom/android/server/om/OverlayManagerService$1;-><init>(Lcom/android/server/om/OverlayManagerService;)V
 PLcom/android/server/om/OverlayManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$1;->enforceActor(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerService$1;->enforceDumpPermission(Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$1;->getDefaultOverlayPackages()[Ljava/lang/String;
 PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerService$1;->getOverlayInfosForTarget(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerService$1;->getOverlayInfosForTarget(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/om/OverlayManagerService$1;->handleIncomingUser(ILjava/lang/String;)I
 PLcom/android/server/om/OverlayManagerService$1;->setEnabled(Ljava/lang/String;ZI)Z
-HSPLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->lambda$onOverlaysChanged$0$OverlayManagerService$OverlayChangeListener(ILjava/lang/String;)V
-HSPLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->onOverlaysChanged(Ljava/lang/String;I)V
-PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->dump(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/om/OverlayManagerService$1;->setEnabledExclusiveInCategory(Ljava/lang/String;I)Z
+HSPLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+HSPLcom/android/server/om/OverlayManagerService$OverlayChangeListener;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$1;)V
+HPLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->lambda$onOverlaysChanged$0$OverlayManagerService$OverlayChangeListener(ILjava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$OverlayChangeListener;->onOverlaysChanged(Ljava/lang/String;I)V
+HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->cachePackageInfo(Ljava/lang/String;ILandroid/content/pm/PackageInfo;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->doesTargetDefineOverlayable(Ljava/lang/String;I)Z
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->dump(Ljava/io/PrintWriter;Lcom/android/server/om/DumpState;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->enforcePermission(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->forgetAllPackageInfos(I)V
+HPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->forgetPackageInfo(Ljava/lang/String;I)V
+HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getCachedPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getOverlayPackages(I)Ljava/util/List;
 HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+PLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->getPackagesForUid(I)[Ljava/lang/String;
 HSPLcom/android/server/om/OverlayManagerService$PackageManagerHelper;->signaturesMatching(Ljava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageAdded(Ljava/lang/String;[I)V
-HSPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageChanged(Ljava/lang/String;[I)V
-HSPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageRemoved(Ljava/lang/String;[I)V
-PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgraded(Ljava/lang/String;[I)V
-PLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageUpgrading(Ljava/lang/String;[I)V
-HSPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;)V
+HSPLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+HSPLcom/android/server/om/OverlayManagerService$PackageReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$1;)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageAdded(Ljava/lang/String;[I)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageChanged(Ljava/lang/String;[I)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageRemoved(Ljava/lang/String;[I)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageReplaced(Ljava/lang/String;[I)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onPackageReplacing(Ljava/lang/String;[I)V
+HPLcom/android/server/om/OverlayManagerService$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;)V
+HSPLcom/android/server/om/OverlayManagerService$UserReceiver;-><init>(Lcom/android/server/om/OverlayManagerService;Lcom/android/server/om/OverlayManagerService$1;)V
+PLcom/android/server/om/OverlayManagerService$UserReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/om/OverlayManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/om/OverlayManagerService;->access$1000(Lcom/android/server/om/OverlayManagerService;ILjava/lang/String;)V
+PLcom/android/server/om/OverlayManagerService;->access$400(Lcom/android/server/om/OverlayManagerService;)Ljava/lang/Object;
+PLcom/android/server/om/OverlayManagerService;->access$500(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerService$PackageManagerHelper;
+PLcom/android/server/om/OverlayManagerService;->access$600(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayManagerServiceImpl;
+PLcom/android/server/om/OverlayManagerService;->access$700(Lcom/android/server/om/OverlayManagerService;ILjava/util/List;)Ljava/util/ArrayList;
+PLcom/android/server/om/OverlayManagerService;->access$700(Lcom/android/server/om/OverlayManagerService;ILjava/util/List;)V
+PLcom/android/server/om/OverlayManagerService;->access$800(Lcom/android/server/om/OverlayManagerService;)Lcom/android/server/om/OverlayActorEnforcer;
+PLcom/android/server/om/OverlayManagerService;->access$900(Lcom/android/server/om/OverlayManagerService;)V
 HSPLcom/android/server/om/OverlayManagerService;->getDefaultOverlayPackages()[Ljava/lang/String;
 HSPLcom/android/server/om/OverlayManagerService;->initIfNeeded()V
 HSPLcom/android/server/om/OverlayManagerService;->lambda$schedulePersistSettings$0$OverlayManagerService()V
 HSPLcom/android/server/om/OverlayManagerService;->onStart()V
 HSPLcom/android/server/om/OverlayManagerService;->onSwitchUser(I)V
 HSPLcom/android/server/om/OverlayManagerService;->restoreSettings()V
+HSPLcom/android/server/om/OverlayManagerService;->schedulePersistSettings()V
+PLcom/android/server/om/OverlayManagerService;->updateAssets(ILjava/lang/String;)V
 HSPLcom/android/server/om/OverlayManagerService;->updateAssets(ILjava/util/List;)V
+HSPLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)Ljava/util/ArrayList;
 HSPLcom/android/server/om/OverlayManagerService;->updateOverlayPaths(ILjava/util/List;)V
+HSPLcom/android/server/om/OverlayManagerServiceImpl;-><init>(Lcom/android/server/om/OverlayManagerServiceImpl$PackageManagerHelper;Lcom/android/server/om/IdmapManager;Lcom/android/server/om/OverlayManagerSettings;[Ljava/lang/String;Lcom/android/server/om/OverlayManagerServiceImpl$OverlayChangeListener;)V
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->calculateNewState(Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;II)I
+PLcom/android/server/om/OverlayManagerServiceImpl;->dump(Ljava/io/PrintWriter;Lcom/android/server/om/DumpState;)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->getDefaultOverlayPackages()[Ljava/lang/String;
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->getEnabledOverlayPackageNames(Ljava/lang/String;I)Ljava/util/List;
-HSPLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
+PLcom/android/server/om/OverlayManagerServiceImpl;->getOverlayInfosForTarget(Ljava/lang/String;I)Ljava/util/List;
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->mustReinitializeOverlay(Landroid/content/pm/PackageInfo;Landroid/content/om/OverlayInfo;)Z
-PLcom/android/server/om/OverlayManagerServiceImpl;->onDump(Ljava/io/PrintWriter;)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onTargetPackageReplaced(Ljava/lang/String;I)V
+PLcom/android/server/om/OverlayManagerServiceImpl;->onUserRemoved(I)V
 PLcom/android/server/om/OverlayManagerServiceImpl;->removeIdmapIfPossible(Landroid/content/om/OverlayInfo;)V
 PLcom/android/server/om/OverlayManagerServiceImpl;->setEnabled(Ljava/lang/String;ZI)Z
-HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateAllOverlaysForTarget(Ljava/lang/String;II)Z
+HPLcom/android/server/om/OverlayManagerServiceImpl;->setEnabledExclusive(Ljava/lang/String;ZI)Z
+HPLcom/android/server/om/OverlayManagerServiceImpl;->updateAndRefreshOverlaysForTarget(Ljava/lang/String;II)V
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateOverlaysForUser(I)Ljava/util/ArrayList;
 HSPLcom/android/server/om/OverlayManagerServiceImpl;->updateState(Ljava/lang/String;Ljava/lang/String;II)Z
+HSPLcom/android/server/om/OverlayManagerSettings$BadKeyException;-><init>(Ljava/lang/String;I)V
 HSPLcom/android/server/om/OverlayManagerSettings$Serializer;->persist(Ljava/util/ArrayList;Ljava/io/OutputStream;)V
 HSPLcom/android/server/om/OverlayManagerSettings$Serializer;->persistRow(Lcom/android/internal/util/FastXmlSerializer;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
 HSPLcom/android/server/om/OverlayManagerSettings$Serializer;->restore(Ljava/util/ArrayList;Ljava/io/InputStream;)V
 HSPLcom/android/server/om/OverlayManagerSettings$Serializer;->restoreRow(Lorg/xmlpull/v1/XmlPullParser;I)Lcom/android/server/om/OverlayManagerSettings$SettingsItem;
 HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IZZILjava/lang/String;)V
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;)V
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$000(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Z)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$100(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1000(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1100(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1200(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1300(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1400(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1500(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1600(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1700(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1800(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$1900(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$200(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$2000(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$2100(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$300(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Landroid/content/om/OverlayInfo;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$400(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$500(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;Ljava/lang/String;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$600(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$700(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$800(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;I)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->access$900(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getBaseCodePath()Ljava/lang/String;
 HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getOverlayInfo()Landroid/content/om/OverlayInfo;
-PLcom/android/server/om/OverlayManagerSettings;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getState()I
+PLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetOverlayableName()Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getTargetPackageName()Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->getUserId()I
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->invalidateCache()V
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isEnabled()Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->isStatic()Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setBaseCodePath(Ljava/lang/String;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setCategory(Ljava/lang/String;)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setEnabled(Z)Z
+HSPLcom/android/server/om/OverlayManagerSettings$SettingsItem;->setState(I)Z
+HSPLcom/android/server/om/OverlayManagerSettings;-><init>()V
+PLcom/android/server/om/OverlayManagerSettings;->dump(Ljava/io/PrintWriter;Lcom/android/server/om/DumpState;)V
+HPLcom/android/server/om/OverlayManagerSettings;->dumpSettingsItem(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+HSPLcom/android/server/om/OverlayManagerSettings;->getEnabled(Ljava/lang/String;I)Z
 HSPLcom/android/server/om/OverlayManagerSettings;->getOverlayInfo(Ljava/lang/String;I)Landroid/content/om/OverlayInfo;
+HSPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForTarget(Ljava/lang/String;I)Ljava/util/List;
 HSPLcom/android/server/om/OverlayManagerSettings;->getOverlaysForUser(I)Landroid/util/ArrayMap;
+HSPLcom/android/server/om/OverlayManagerSettings;->getState(Ljava/lang/String;I)I
+HSPLcom/android/server/om/OverlayManagerSettings;->getUsers()[I
 HSPLcom/android/server/om/OverlayManagerSettings;->init(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;)V
+PLcom/android/server/om/OverlayManagerSettings;->lambda$dump$9$OverlayManagerSettings(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)V
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForTarget$0(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForTarget$1(Ljava/lang/Object;)Landroid/content/om/OverlayInfo;
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForUser$2(Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForUser$3(Ljava/lang/Object;)Landroid/content/om/OverlayInfo;
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getOverlaysForUser$4(Landroid/content/om/OverlayInfo;)Ljava/lang/String;
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$getUsers$5(Ljava/lang/Object;)I
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereTarget$11(Ljava/lang/String;Lcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->lambda$selectWhereUser$10(ILcom/android/server/om/OverlayManagerSettings$SettingsItem;)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->persist(Ljava/io/OutputStream;)V
+HSPLcom/android/server/om/OverlayManagerSettings;->remove(Ljava/lang/String;I)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->removeUser(I)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->restore(Ljava/io/InputStream;)V
 HSPLcom/android/server/om/OverlayManagerSettings;->select(Ljava/lang/String;I)I
+HSPLcom/android/server/om/OverlayManagerSettings;->selectWhereTarget(Ljava/lang/String;I)Ljava/util/stream/Stream;
+HSPLcom/android/server/om/OverlayManagerSettings;->selectWhereUser(I)Ljava/util/stream/Stream;
+HSPLcom/android/server/om/OverlayManagerSettings;->setBaseCodePath(Ljava/lang/String;ILjava/lang/String;)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->setCategory(Ljava/lang/String;ILjava/lang/String;)Z
 PLcom/android/server/om/OverlayManagerSettings;->setEnabled(Ljava/lang/String;IZ)Z
+HSPLcom/android/server/om/OverlayManagerSettings;->setState(Ljava/lang/String;II)Z
+HSPLcom/android/server/om/OverlayReferenceMapper$1;-><init>(Lcom/android/server/om/OverlayReferenceMapper;)V
+HSPLcom/android/server/om/OverlayReferenceMapper$1;->getTargetToOverlayables(Landroid/content/pm/parsing/AndroidPackage;)Ljava/util/Map;
+HSPLcom/android/server/om/OverlayReferenceMapper;-><init>(ZLcom/android/server/om/OverlayReferenceMapper$Provider;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->addOverlay(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Map;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->addPkg(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Map;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->rebuild()V
+HSPLcom/android/server/om/OverlayReferenceMapper;->rebuildIfDeferred()V
+HSPLcom/android/server/om/OverlayReferenceMapper;->removeOverlay(Ljava/lang/String;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->removePkg(Ljava/lang/String;)V
+HSPLcom/android/server/om/OverlayReferenceMapper;->removeTarget(Ljava/lang/String;)V
+HSPLcom/android/server/os/-$$Lambda$SchedulingPolicyService$ao2OiSvvlyzmJ0li0c0nhHy-IDk;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
 HSPLcom/android/server/os/-$$Lambda$SchedulingPolicyService$ao2OiSvvlyzmJ0li0c0nhHy-IDk;->run()V
 HSPLcom/android/server/os/BugreportManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/os/BugreportManagerService;->onStart()V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;-><init>(Lcom/android/server/os/BugreportManagerServiceImpl;Landroid/os/IDumpstateListener;Landroid/os/IDumpstate;)V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->binderDied()V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->onError(I)V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->onFinished()V
+PLcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;->onProgress(I)V
 HSPLcom/android/server/os/BugreportManagerServiceImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->access$000(Lcom/android/server/os/BugreportManagerServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/os/BugreportManagerServiceImpl;->cancelBugreport()V
+PLcom/android/server/os/BugreportManagerServiceImpl;->ensureIsPrimaryUser()V
+PLcom/android/server/os/BugreportManagerServiceImpl;->isDumpstateBinderServiceRunningLocked()Z
+PLcom/android/server/os/BugreportManagerServiceImpl;->reportError(Landroid/os/IDumpstateListener;I)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->startAndGetDumpstateBinderServiceLocked()Landroid/os/IDumpstate;
+PLcom/android/server/os/BugreportManagerServiceImpl;->startBugreport(ILjava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;ILandroid/os/IDumpstateListener;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->startBugreportLocked(ILjava/lang/String;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;ILandroid/os/IDumpstateListener;)V
+PLcom/android/server/os/BugreportManagerServiceImpl;->validateBugreportMode(I)V
+HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerial()Ljava/lang/String;
-PLcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;->getSerialForPackage(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/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
+HSPLcom/android/server/os/SchedulingPolicyService$1;-><init>(Lcom/android/server/os/SchedulingPolicyService;)V
+HSPLcom/android/server/os/SchedulingPolicyService;-><clinit>()V
 HSPLcom/android/server/os/SchedulingPolicyService;-><init>()V
 HSPLcom/android/server/os/SchedulingPolicyService;->disableCpusetBoost(I)I
+HSPLcom/android/server/os/SchedulingPolicyService;->isPermitted()Z
 HSPLcom/android/server/os/SchedulingPolicyService;->lambda$new$0$SchedulingPolicyService()V
 HSPLcom/android/server/os/SchedulingPolicyService;->requestPriority(IIIZ)I
-PLcom/android/server/pm/-$$Lambda$ApexManager$fDbC18mNN6grw85kgXXSUd-qPFA;-><init>()V
-PLcom/android/server/pm/-$$Lambda$ApexManager$fDbC18mNN6grw85kgXXSUd-qPFA;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/people/PeopleService$LocalService;-><init>(Lcom/android/server/people/PeopleService;)V
+PLcom/android/server/people/PeopleService$LocalService;->backupConversationInfos(I)[B
+HSPLcom/android/server/people/PeopleService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/people/PeopleService;->onBootPhase(I)V
+HSPLcom/android/server/people/PeopleService;->onStart()V
+PLcom/android/server/people/PeopleService;->onStopUser(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/people/PeopleService;->onUnlockUser(Lcom/android/server/SystemService$TargetUser;)V
+HSPLcom/android/server/people/PeopleServiceInternal;-><init>()V
+PLcom/android/server/people/data/-$$Lambda$DataManager$CallLogContentObserver$F795P2fXEZGvzLUih_SIpFcsyic;-><init>(Ljava/lang/String;Lcom/android/server/people/data/Event;)V
+PLcom/android/server/people/data/-$$Lambda$DataManager$CallLogContentObserver$F795P2fXEZGvzLUih_SIpFcsyic;->accept(Ljava/lang/Object;)V
+PLcom/android/server/people/data/-$$Lambda$DataManager$ContactsContentObserver$wv19gIIQIhM79fILSTcdGXPmrF0;-><init>(Landroid/net/Uri;Lcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;)V
+PLcom/android/server/people/data/-$$Lambda$DataManager$MmsSmsContentObserver$UfeTRftTDIcNo1iUJLeOD5s_XmM;-><init>(Ljava/lang/String;Lcom/android/server/people/data/Event;)V
+PLcom/android/server/people/data/-$$Lambda$DataManager$MmsSmsContentObserver$UfeTRftTDIcNo1iUJLeOD5s_XmM;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/people/data/-$$Lambda$DataManager$ShortcutServiceListener$emB0GKXSexwJTzSWLUKYnAGbCCg;-><init>(Lcom/android/server/people/data/DataManager$ShortcutServiceListener;Ljava/lang/String;I)V
+HPLcom/android/server/people/data/-$$Lambda$DataManager$ShortcutServiceListener$emB0GKXSexwJTzSWLUKYnAGbCCg;->run()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/CallLogQueryHelper;->addEvent(Ljava/lang/String;JJI)Z
+PLcom/android/server/people/data/CallLogQueryHelper;->getLastCallTimestamp()J
+PLcom/android/server/people/data/CallLogQueryHelper;->querySince(J)Z
+PLcom/android/server/people/data/CallLogQueryHelper;->validateEvent(Ljava/lang/String;JI)Z
+PLcom/android/server/people/data/ContactsQueryHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/people/data/ContactsQueryHelper;->getContactUri()Landroid/net/Uri;
+HPLcom/android/server/people/data/ContactsQueryHelper;->queryContact(Landroid/net/Uri;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Z
+HPLcom/android/server/people/data/ContactsQueryHelper;->queryPhoneNumber(Ljava/lang/String;)Z
+PLcom/android/server/people/data/ContactsQueryHelper;->querySince(J)Z
+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$1;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->accept(Ljava/lang/String;Lcom/android/server/people/data/Event;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->lambda$accept$0(Ljava/lang/String;Lcom/android/server/people/data/Event;Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager$CallLogContentObserver;->onChange(Z)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;-><init>(Lcom/android/server/people/data/DataManager$ContactsContentObserver;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;-><init>(Lcom/android/server/people/data/DataManager$ContactsContentObserver;Lcom/android/server/people/data/DataManager$1;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;->access$1100(Lcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;)Lcom/android/server/people/data/ConversationInfo;
+PLcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;->access$900(Lcom/android/server/people/data/DataManager$ContactsContentObserver$ConversationSelector;)Lcom/android/server/people/data/ConversationInfo;
+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$1;)V
+PLcom/android/server/people/data/DataManager$ContactsContentObserver;->onChange(ZLandroid/net/Uri;I)V
+HSPLcom/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;->createContactsQueryHelper(Landroid/content/Context;)Lcom/android/server/people/data/ContactsQueryHelper;
+PLcom/android/server/people/data/DataManager$Injector;->createMmsQueryHelper(Landroid/content/Context;Ljava/util/function/BiConsumer;)Lcom/android/server/people/data/MmsQueryHelper;
+HSPLcom/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;
+HPLcom/android/server/people/data/DataManager$Injector;->getCallingUserId()I
+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$1;)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;->accept(Ljava/lang/String;Lcom/android/server/people/data/Event;)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;->lambda$accept$0(Ljava/lang/String;Lcom/android/server/people/data/Event;Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager$MmsSmsContentObserver;->onChange(Z)V
+PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$1;)V
+PLcom/android/server/people/data/DataManager$NotificationListener;->onNotificationRemoved(Landroid/service/notification/StatusBarNotification;Landroid/service/notification/NotificationListenerService$RankingMap;I)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$1;)V
+HPLcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/people/data/DataManager$ShortcutServiceListener;-><init>(Lcom/android/server/people/data/DataManager;)V
+HSPLcom/android/server/people/data/DataManager$ShortcutServiceListener;-><init>(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/DataManager$1;)V
+HPLcom/android/server/people/data/DataManager$ShortcutServiceListener;->lambda$onShortcutChanged$0$DataManager$ShortcutServiceListener(Ljava/lang/String;I)V
+HPLcom/android/server/people/data/DataManager$ShortcutServiceListener;->onShortcutChanged(Ljava/lang/String;I)V
+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$1;)V
+HPLcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;->run()V
+HSPLcom/android/server/people/data/DataManager;-><clinit>()V
+HSPLcom/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;)V
+PLcom/android/server/people/data/DataManager;->access$1000(Lcom/android/server/people/data/DataManager;I)Lcom/android/server/people/data/UserData;
+PLcom/android/server/people/data/DataManager;->access$1100(Lcom/android/server/people/data/DataManager;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+PLcom/android/server/people/data/DataManager;->access$1200(Lcom/android/server/people/data/DataManager;Landroid/service/notification/StatusBarNotification;)Lcom/android/server/people/data/EventHistoryImpl;
+PLcom/android/server/people/data/DataManager;->access$1300(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager;->access$1300(Lcom/android/server/people/data/DataManager;Ljava/util/function/Consumer;)V
+PLcom/android/server/people/data/DataManager;->access$1400(Lcom/android/server/people/data/DataManager;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+PLcom/android/server/people/data/DataManager;->access$1500(Lcom/android/server/people/data/DataManager;Landroid/service/notification/StatusBarNotification;)Lcom/android/server/people/data/EventHistoryImpl;
+PLcom/android/server/people/data/DataManager;->access$1600(Lcom/android/server/people/data/DataManager;Lcom/android/server/people/data/UserData;)V
+PLcom/android/server/people/data/DataManager;->access$500(Lcom/android/server/people/data/DataManager;)Landroid/content/Context;
+PLcom/android/server/people/data/DataManager;->access$600(Lcom/android/server/people/data/DataManager;)Lcom/android/server/people/data/DataManager$Injector;
+PLcom/android/server/people/data/DataManager;->access$700(Lcom/android/server/people/data/DataManager;)Landroid/content/Context;
+PLcom/android/server/people/data/DataManager;->access$800(Lcom/android/server/people/data/DataManager;)Lcom/android/server/people/data/DataManager$Injector;
+PLcom/android/server/people/data/DataManager;->access$800(Lcom/android/server/people/data/DataManager;I)Lcom/android/server/people/data/UserData;
+HPLcom/android/server/people/data/DataManager;->forAllUnlockedUsers(Ljava/util/function/Consumer;)V
+PLcom/android/server/people/data/DataManager;->getEventHistoryIfEligible(Landroid/service/notification/StatusBarNotification;)Lcom/android/server/people/data/EventHistoryImpl;
+HPLcom/android/server/people/data/DataManager;->getPackage(Ljava/lang/String;I)Lcom/android/server/people/data/PackageData;
+HPLcom/android/server/people/data/DataManager;->getPackageData(Ljava/lang/String;I)Lcom/android/server/people/data/PackageData;
+HPLcom/android/server/people/data/DataManager;->getShortcuts(Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+HPLcom/android/server/people/data/DataManager;->getUnlockedUserData(I)Lcom/android/server/people/data/UserData;
+HSPLcom/android/server/people/data/DataManager;->initialize()V
+HPLcom/android/server/people/data/DataManager;->onShortcutAddedOrUpdated(Landroid/content/pm/ShortcutInfo;)V
+PLcom/android/server/people/data/DataManager;->onUserStopped(I)V
+PLcom/android/server/people/data/DataManager;->onUserUnlocked(I)V
+HPLcom/android/server/people/data/DataManager;->queryUsageStatsService(IJJ)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/Event$Builder;-><init>(JI)V
+PLcom/android/server/people/data/Event$Builder;->access$000(Lcom/android/server/people/data/Event$Builder;)J
+PLcom/android/server/people/data/Event$Builder;->access$100(Lcom/android/server/people/data/Event$Builder;)I
+PLcom/android/server/people/data/Event$Builder;->access$200(Lcom/android/server/people/data/Event$Builder;)Lcom/android/server/people/data/Event$CallDetails;
+PLcom/android/server/people/data/Event$Builder;->build()Lcom/android/server/people/data/Event;
+PLcom/android/server/people/data/Event$Builder;->setCallDetails(Lcom/android/server/people/data/Event$CallDetails;)Lcom/android/server/people/data/Event$Builder;
+PLcom/android/server/people/data/Event$CallDetails;-><init>(J)V
+PLcom/android/server/people/data/Event;-><clinit>()V
+PLcom/android/server/people/data/Event;-><init>(JI)V
+PLcom/android/server/people/data/Event;-><init>(Lcom/android/server/people/data/Event$Builder;)V
+PLcom/android/server/people/data/Event;-><init>(Lcom/android/server/people/data/Event$Builder;Lcom/android/server/people/data/Event$1;)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/MmsQueryHelper;->addEvent(Ljava/lang/String;JI)Z
+PLcom/android/server/people/data/MmsQueryHelper;->getLastMessageTimestamp()J
+PLcom/android/server/people/data/MmsQueryHelper;->getMmsAddress(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/people/data/MmsQueryHelper;->querySince(J)Z
+PLcom/android/server/people/data/MmsQueryHelper;->validateEvent(Ljava/lang/String;JI)Z
+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/SmsQueryHelper;->addEvent(Ljava/lang/String;JI)Z
+PLcom/android/server/people/data/SmsQueryHelper;->getLastMessageTimestamp()J
+HPLcom/android/server/people/data/SmsQueryHelper;->querySince(J)Z
+PLcom/android/server/people/data/SmsQueryHelper;->validateEvent(Ljava/lang/String;JI)Z
+PLcom/android/server/people/data/UserData;-><init>(I)V
+PLcom/android/server/people/data/UserData;->forAllPackages(Ljava/util/function/Consumer;)V
+PLcom/android/server/people/data/UserData;->getDefaultDialer()Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/UserData;->getDefaultSmsApp()Lcom/android/server/people/data/PackageData;
+HPLcom/android/server/people/data/UserData;->getPackageData(Ljava/lang/String;)Lcom/android/server/people/data/PackageData;
+PLcom/android/server/people/data/UserData;->getUserId()I
+HPLcom/android/server/people/data/UserData;->isUnlocked()Z
+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;->setUserStopped()V
+PLcom/android/server/people/data/UserData;->setUserUnlocked()V
+PLcom/android/server/people/data/Utils;->getCurrentCountryIso(Landroid/content/Context;)Ljava/lang/String;
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$1$dbgKSgcSW-enjqvNAbeI3zvdw_E;-><init>(Lcom/android/server/pm/ApexManager$ApexManagerImpl$1;)V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$1$dbgKSgcSW-enjqvNAbeI3zvdw_E;->run()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$48iOSmygOXJ0TezZTiFdfMqA4-U;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$48iOSmygOXJ0TezZTiFdfMqA4-U;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$48iOSmygOXJ0TezZTiFdfMqA4-U;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$ZSnyvqMou1dicjDEP1s6HfI9AtM;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$ZSnyvqMou1dicjDEP1s6HfI9AtM;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$ZSnyvqMou1dicjDEP1s6HfI9AtM;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$o0S1o3gtXHOOZT_0tmoPlF2FOdI;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$o0S1o3gtXHOOZT_0tmoPlF2FOdI;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$o0S1o3gtXHOOZT_0tmoPlF2FOdI;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$pQnjdbWgnVRvdOuYJTmevPGwE8s;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$pQnjdbWgnVRvdOuYJTmevPGwE8s;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$pQnjdbWgnVRvdOuYJTmevPGwE8s;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$q1ttlIbEI3KHg5wkhDwkpDn2qCU;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$q1ttlIbEI3KHg5wkhDwkpDn2qCU;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$q1ttlIbEI3KHg5wkhDwkpDn2qCU;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$tz3TLW-UaMjqz-wkojT7H_pVbZU;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$tz3TLW-UaMjqz-wkojT7H_pVbZU;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$tz3TLW-UaMjqz-wkojT7H_pVbZU;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$zKFrzIK0lAT7V4Fl0Pv5KKt1Gu0;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$zKFrzIK0lAT7V4Fl0Pv5KKt1Gu0;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$zKFrzIK0lAT7V4Fl0Pv5KKt1Gu0;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$AppsFilter$FeatureConfigImpl$n15whgPRX7bGimHq6-7mgAskIKs;-><init>(Lcom/android/server/pm/AppsFilter$FeatureConfigImpl;)V
+PLcom/android/server/pm/-$$Lambda$AppsFilter$FeatureConfigImpl$n15whgPRX7bGimHq6-7mgAskIKs;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/pm/-$$Lambda$AppsFilter$irFGkuh4mJ419pXBYKSj13ADTtA;-><init>(Landroid/util/SparseArray;Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/-$$Lambda$BWZi0Aa35BwEPzNacDfE_69TPS8;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$BWZi0Aa35BwEPzNacDfE_69TPS8;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$BWZi0Aa35BwEPzNacDfE_69TPS8;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/-$$Lambda$BackgroundDexOptService$-KiE2NsUP--OYmoSDt9BwEQICZw;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)V
 PLcom/android/server/pm/-$$Lambda$BackgroundDexOptService$-KiE2NsUP--OYmoSDt9BwEQICZw;->get()Ljava/lang/Object;
+HPLcom/android/server/pm/-$$Lambda$BackgroundDexOptService$TAsfDUuoxt92xKFoSCfpMUmY2Es;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/dex/DexoptOptions;)V
 PLcom/android/server/pm/-$$Lambda$BackgroundDexOptService$TAsfDUuoxt92xKFoSCfpMUmY2Es;->get()Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$ComponentResolver$PuHbZd5KEOMGjkH8xDOhOwfLtC0;-><clinit>()V
 HSPLcom/android/server/pm/-$$Lambda$ComponentResolver$PuHbZd5KEOMGjkH8xDOhOwfLtC0;-><init>()V
 HSPLcom/android/server/pm/-$$Lambda$ComponentResolver$PuHbZd5KEOMGjkH8xDOhOwfLtC0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/-$$Lambda$FW40Da1L1EZJ_usDX0ew1qRMmtc;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$FW40Da1L1EZJ_usDX0ew1qRMmtc;-><init>()V
 PLcom/android/server/pm/-$$Lambda$FW40Da1L1EZJ_usDX0ew1qRMmtc;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$InstantAppRegistry$BuKCbLr_MGBazMPl54-pWTuGHYY;-><init>(J)V
+HPLcom/android/server/pm/-$$Lambda$InstantAppRegistry$BuKCbLr_MGBazMPl54-pWTuGHYY;-><init>(J)V
+PLcom/android/server/pm/-$$Lambda$InstantAppRegistry$R7XSXckXZJx-7zO-lFkgYY_-lWA;-><init>(Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/-$$Lambda$InstantAppRegistry$eaYsiecM_Rq6dliDvliwVtj695o;-><init>(Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$InstantAppResolverConnection$D-JKXi4qrYjnPQMOwj8UtfZenps;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
 PLcom/android/server/pm/-$$Lambda$InstantAppResolverConnection$D-JKXi4qrYjnPQMOwj8UtfZenps;->run()V
+PLcom/android/server/pm/-$$Lambda$K2g8Oho05j5S7zVOkoQrHzM_Gig;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$K2g8Oho05j5S7zVOkoQrHzM_Gig;-><init>()V
 PLcom/android/server/pm/-$$Lambda$K2g8Oho05j5S7zVOkoQrHzM_Gig;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$eTair5Mvr14v4M0nq9aQEW2cp-Y;->run()V
+HPLcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$eTair5Mvr14v4M0nq9aQEW2cp-Y;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;Ljava/lang/String;I)V
+HPLcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$eTair5Mvr14v4M0nq9aQEW2cp-Y;->run()V
+PLcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$PR6SMHDNFTsnoL92MFZskM-zN8k;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;)V
+HPLcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$PR6SMHDNFTsnoL92MFZskM-zN8k;->test(I)Z
+PLcom/android/server/pm/-$$Lambda$OtaDexoptService$sAE9PLBjWsXDVkiiC_uzr0kwQ4k;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$OtaDexoptService$sAE9PLBjWsXDVkiiC_uzr0kwQ4k;-><init>()V
+PLcom/android/server/pm/-$$Lambda$OtaDexoptService$sAE9PLBjWsXDVkiiC_uzr0kwQ4k;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerService$vra5ZkE3juVvcgDBu5xv0wVzno8;-><init>(I)V
 PLcom/android/server/pm/-$$Lambda$PackageInstallerService$vra5ZkE3juVvcgDBu5xv0wVzno8;->test(I)Z
-PLcom/android/server/pm/-$$Lambda$PackageManagerService$4R9Zu2zflm9xqt9wOD23IIJnqLs;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$5hSpumAE5maEOgUlkeKZ3EJQUOU;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$9ZEk0HhVZsj2KQghpPxi82zlVQA;->runOrThrow()V
-PLcom/android/server/pm/-$$Lambda$PackageManagerService$Iz1l7RVtATr5Ybl_zHeYuCbGMvA;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$JUo3M6zuPH65x1voKjSOJvOMHRw;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$JUo3M6zuPH65x1voKjSOJvOMHRw;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$O5iApY07YeJyXA8KUFVcxpCf1NI;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$PackageParserCallback$xinvBJUpQse3J1IBBKjvYTIW8MQ;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$PackageParserCallback$xinvBJUpQse3J1IBBKjvYTIW8MQ;->applyAsInt(Ljava/lang/Object;)I
-PLcom/android/server/pm/-$$Lambda$PackageManagerService$S4WxZjKnT0iu1kmEXSrs7BiizN4;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$ThH5vuBggVL5a6g8JW6gf8x0jT8;->runOrThrow()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$YHri1Lu_7U5nzv2NPItDUIuocnY;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$flUQp0qTsxUQY0aupDT6UsHb48I;->run()V
-PLcom/android/server/pm/-$$Lambda$PackageManagerService$gBfmUwr3vJpLKJEYBEtR1vtJL-Q;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$gOdSzzOoHvFHJbKlJkAgg4fzOH8;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$gOdSzzOoHvFHJbKlJkAgg4fzOH8;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$rBFEstQVW677jj2Z8w3Ei9Li_HQ;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$sJ5w9GfSftnZPyv5hBDxQkxDJMU;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;I)V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$sJ5w9GfSftnZPyv5hBDxQkxDJMU;->run()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xJ_pDKPvSH0lgOwva8xeI2zJ2ns;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xKFHvZAUir1Y_lClMWZh87peKs8;-><init>()V
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$QMV-UHbRIK26QMZL5iM27MchX7U;-><init>()V
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$QMV-UHbRIK26QMZL5iM27MchX7U;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ePZ6rsJ05hJ2glmOqcq1_jX6J8w;-><init>()V
-HPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ePZ6rsJ05hJ2glmOqcq1_jX6J8w;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$fMBP3pPR7BB2hICieRxkdNG-3H8;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$nPt0Hym3GvYeWA2vwfOLFDxZmCE;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$p5q19y4-2x-i747j_hTNL1EMzt0;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$whx96xO50U3fax1NRe1upTcx9jc;-><init>()V
-PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$whx96xO50U3fax1NRe1upTcx9jc;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$0MwsfMSD_PrEtElmOWjbhM7455A;-><init>(Ljava/io/FileFilter;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$0MwsfMSD_PrEtElmOWjbhM7455A;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$0Oqu1oanLjaOBEcFPtJVCRQ0lHs;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/system/Int64Ref;)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$0Oqu1oanLjaOBEcFPtJVCRQ0lHs;->onProgress(J)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$1hK7f4fIb3Je8SK1lZHBTWREMrU;-><init>(Ljava/io/FileFilter;)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$1hK7f4fIb3Je8SK1lZHBTWREMrU;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$ChildStatusIntentReceiver$CIWymiEKCzNknV3an6tFtcz5-Mc;-><init>(Lcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;Landroid/content/Intent;)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$ChildStatusIntentReceiver$CIWymiEKCzNknV3an6tFtcz5-Mc;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$Jldeo0ihCZqsZyrchyGGrBvBFhI;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/system/Int64Ref;)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$Jldeo0ihCZqsZyrchyGGrBvBFhI;->onProgress(J)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$O9LdsceQY8NfkziFc8PltN3Zew4;-><init>(Ljava/io/File;)V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$O9LdsceQY8NfkziFc8PltN3Zew4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$Q84DQuKTSKG_oVZkTd4otsUSsIE;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$Q84DQuKTSKG_oVZkTd4otsUSsIE;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$Q84DQuKTSKG_oVZkTd4otsUSsIE;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$WxRUCOlFBsKbwiMNBR7ysMEZKp4;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$WxRUCOlFBsKbwiMNBR7ysMEZKp4;-><init>()V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$WxRUCOlFBsKbwiMNBR7ysMEZKp4;->apply(I)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$gIaZyqaw0zETPQMxuRW3BVLMZ-Y;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$gIaZyqaw0zETPQMxuRW3BVLMZ-Y;-><init>()V
+PLcom/android/server/pm/-$$Lambda$PackageInstallerSession$gIaZyqaw0zETPQMxuRW3BVLMZ-Y;->apply(I)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$iyfVEu9LbUOK_cEGZ3wXC81wsgs;-><init>(Ljava/io/File;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$iyfVEu9LbUOK_cEGZ3wXC81wsgs;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$yEAIQbVnbSznJVW9xPXv9WGuzI0;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$yEAIQbVnbSznJVW9xPXv9WGuzI0;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageInstallerSession$yEAIQbVnbSznJVW9xPXv9WGuzI0;->apply(I)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$-SI_LHw6Eiq8VNiFLLjJdCbGgSQ;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;I)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$-SI_LHw6Eiq8VNiFLLjJdCbGgSQ;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$0Regyd5pBrcIdGN2_jpl21L-KWw;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$0Regyd5pBrcIdGN2_jpl21L-KWw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$3TlqkUBuVM7NyAg7uqJCni92WOU;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/content/IntentSender;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$3TlqkUBuVM7NyAg7uqJCni92WOU;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$3yxDU_uSU2kkdLuKkfPYVKvXKGw;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$3yxDU_uSU2kkdLuKkfPYVKvXKGw;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$3yxDU_uSU2kkdLuKkfPYVKvXKGw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$4lr9R3-Rfzq-VEptx-WWeRaSpd4;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$4lr9R3-Rfzq-VEptx-WWeRaSpd4;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$EQHzRzxse-rtXNIoVfzT15c8LHI;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$EQHzRzxse-rtXNIoVfzT15c8LHI;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$EQHzRzxse-rtXNIoVfzT15c8LHI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$FFJwRezEfCP4utcPN2U9pjn2hIo;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$FFJwRezEfCP4utcPN2U9pjn2hIo;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$FFJwRezEfCP4utcPN2U9pjn2hIo;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$J0eEFDuLDZBCGkS0UBLQaQGBMN8;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$J0eEFDuLDZBCGkS0UBLQaQGBMN8;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$JQITabyRBc2Nst0hnvtDUIYPLkk;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$JQITabyRBc2Nst0hnvtDUIYPLkk;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$JqISwjRG4Nrwn7K19yITMU1WH5g;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/-$$Lambda$PackageManagerService$KUTG4a_t__F9-jF9uKK4m5M6ED0;-><init>(I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$KUTG4a_t__F9-jF9uKK4m5M6ED0;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$QEXaCTQ54nCy5aHUAa6mkt0WtpM;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$QEXaCTQ54nCy5aHUAa6mkt0WtpM;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$RfqRmQ8KNtYywzf-EIm7VG5PHj8;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$RfqRmQ8KNtYywzf-EIm7VG5PHj8;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$PackageManagerService$RoklvvEqbb0_WAziY4NuUNhrlUA;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V
+HPLcom/android/server/pm/-$$Lambda$PackageManagerService$RoklvvEqbb0_WAziY4NuUNhrlUA;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$U47f17sf-Z0eef3W2xgzUB-ecR4;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$U47f17sf-Z0eef3W2xgzUB-ecR4;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$UqTOzDNpKPiIlaG4_AUlesB9I1E;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$UqTOzDNpKPiIlaG4_AUlesB9I1E;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$Wnf5zZuMJLUQ4GfjHtUww4l7YUg;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$Wnf5zZuMJLUQ4GfjHtUww4l7YUg;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$Wnf5zZuMJLUQ4GfjHtUww4l7YUg;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$YHVD9fSfoszBkmlqzmswh1u_y_M;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$YHVD9fSfoszBkmlqzmswh1u_y_M;-><init>()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$Ze0Xh0iBIll5jkJ4VcmUxBuZyI8;-><init>(Lcom/android/server/pm/PackageManagerService;ZI[Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$Ze0Xh0iBIll5jkJ4VcmUxBuZyI8;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$_CMCXnVAsgXUrfmWq_KOQ0-d17c;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IZZJII[ILandroid/content/pm/IPackageDeleteObserver2;Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$_CMCXnVAsgXUrfmWq_KOQ0-d17c;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$aXPYjiloRwQataUrx041SxBr5us;-><init>(Lcom/android/server/pm/PackageManagerService;ZLjava/util/List;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$aXPYjiloRwQataUrx041SxBr5us;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$aptgkdXtM4g66mNvfWDFzI6FQyI;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$aptgkdXtM4g66mNvfWDFzI6FQyI;->onInitialized(I)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$cHQqBPj5vgOw-P7yhrKC9Ssq27g;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$cHQqBPj5vgOw-P7yhrKC9Ssq27g;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$ccz4PCOSG7fKRFBAMJv8GMQMI08;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$ccz4PCOSG7fKRFBAMJv8GMQMI08;->onInitialized(I)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$djQQrdclAlQ8ILip1OVPcBDTkW4;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$djQQrdclAlQ8ILip1OVPcBDTkW4;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$djQQrdclAlQ8ILip1OVPcBDTkW4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$f5l1_UOwACQPN6qixqBmzSJzDMw;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$f5l1_UOwACQPN6qixqBmzSJzDMw;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$fQjXY6S0s38rWZ-Tv1PTQvrgJb4;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/parsing/AndroidPackage;IIILandroid/content/pm/IPackageDataObserver;Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$fQjXY6S0s38rWZ-Tv1PTQvrgJb4;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$hlGRKJu3cTGpEnG-hyOT3QbrXxY;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IZZJII[ILandroid/content/pm/IPackageDeleteObserver2;Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$hlGRKJu3cTGpEnG-hyOT3QbrXxY;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$i2wY1QKIZAfMEAymOPPs8KS2G5c;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$i2wY1QKIZAfMEAymOPPs8KS2G5c;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$i6CpetYRHYknkq8R3n1zFsH2Qng;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$i6CpetYRHYknkq8R3n1zFsH2Qng;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$imyTLGZ0HLyacORSu0iPTteivzY;-><init>(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$imyTLGZ0HLyacORSu0iPTteivzY;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$kUm15OrlWJD9K-LIlM_rBtX-g4Q;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$kUm15OrlWJD9K-LIlM_rBtX-g4Q;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$kdqJJNrm44ZfCpYgQsRrZy7nM38;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/parsing/AndroidPackage;IIILandroid/content/pm/IPackageDataObserver;Ljava/lang/String;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$kdqJJNrm44ZfCpYgQsRrZy7nM38;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$mozSqBaYzz4jQjwZjKIapdRXflc;-><init>(I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$mozSqBaYzz4jQjwZjKIapdRXflc;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$ms4g2QGGQv1AIanhd1siLhoElkI;-><init>(Lcom/android/server/pm/PackageManagerService;I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$ms4g2QGGQv1AIanhd1siLhoElkI;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$pVdeIe13BPz2j1-uK6W_NugHu2Q;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$pVdeIe13BPz2j1-uK6W_NugHu2Q;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$rLdmTQLwnuPeDuWTeDB-0S1Ku4I;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$rLdmTQLwnuPeDuWTeDB-0S1Ku4I;->onInitialized(I)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$rcVfdsXa_dlub2enxT5rL0nTx7I;-><init>(Lcom/android/server/pm/PackageManagerService;[ILjava/lang/String;Z)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$rcVfdsXa_dlub2enxT5rL0nTx7I;->run()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$vPmwW10Lr1Zc8YoNadc7v4xmIWo;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/-$$Lambda$PackageManagerService$vPmwW10Lr1Zc8YoNadc7v4xmIWo;->run()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xKD6SB7pISjc29qfmXIq5O_3OJw;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;ZLjava/lang/Object;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xKD6SB7pISjc29qfmXIq5O_3OJw;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xZAAMOZCDrDe-FJUcRmxesa8h7c;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$xZAAMOZCDrDe-FJUcRmxesa8h7c;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$zCuBGosGB1OGJ7ya2EB4X5V2jBk;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$zCuBGosGB1OGJ7ya2EB4X5V2jBk;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerService$zCuBGosGB1OGJ7ya2EB4X5V2jBk;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$JqfeXEVVj9qyD-t5TtAWP5dUo_Q;-><init>(Lcom/android/server/pm/dex/DexManager;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$JqfeXEVVj9qyD-t5TtAWP5dUo_Q;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$WqWSiwN-039OE_mRd8x6F_ORqRU;-><init>(Landroid/util/ArraySet;)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$WqWSiwN-039OE_mRd8x6F_ORqRU;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ZEbcK7yQgHqG-8Z65v9KNo4jBgU;-><init>(J)V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ZEbcK7yQgHqG-8Z65v9KNo4jBgU;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$_LUs2lN_dtgmbhOTm2Ear0f91Qg;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$_LUs2lN_dtgmbhOTm2Ear0f91Qg;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$_LUs2lN_dtgmbhOTm2Ear0f91Qg;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$eMhMS_ozPxLQedSFcYUWkqe3DH4;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$eMhMS_ozPxLQedSFcYUWkqe3DH4;-><init>()V
+PLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$eMhMS_ozPxLQedSFcYUWkqe3DH4;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$pak5uFueWVDXpeD0raY40AD6lPY;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$pak5uFueWVDXpeD0raY40AD6lPY;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$pak5uFueWVDXpeD0raY40AD6lPY;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$qCP9hzvvo1JqZQ7mV-34TucIk2o;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$qCP9hzvvo1JqZQ7mV-34TucIk2o;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$qCP9hzvvo1JqZQ7mV-34TucIk2o;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/-$$Lambda$ParallelPackageParser$FTtinPrp068lVeI7K6bC1tNE3iM;-><init>(Lcom/android/server/pm/ParallelPackageParser;Ljava/io/File;I)V
 HSPLcom/android/server/pm/-$$Lambda$ParallelPackageParser$FTtinPrp068lVeI7K6bC1tNE3iM;->run()V
-PLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$AUDgG57FGyGDUVDAjL-7cuiE0pM;->run()V
-PLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$xgjvZfaiKXavxgGCSta_eIdVBnk;->run()V
+HSPLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$AUDgG57FGyGDUVDAjL-7cuiE0pM;-><init>(Lcom/android/server/pm/ShortcutBitmapSaver;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$AUDgG57FGyGDUVDAjL-7cuiE0pM;->run()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$xgjvZfaiKXavxgGCSta_eIdVBnk;-><init>(Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$xgjvZfaiKXavxgGCSta_eIdVBnk;->run()V
+PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$rwmVVp6PnQCcurF7D6VzrdNqEdk;-><init>([B)V
 PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$rwmVVp6PnQCcurF7D6VzrdNqEdk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$stGgHzhh-NVWPgDSwmH2ybAWRE8;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$stGgHzhh-NVWPgDSwmH2ybAWRE8;-><init>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$stGgHzhh-NVWPgDSwmH2ybAWRE8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$v6wMz6MRa9pgSnEDM_9bjvrLaKY;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$v6wMz6MRa9pgSnEDM_9bjvrLaKY;-><init>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$v6wMz6MRa9pgSnEDM_9bjvrLaKY;->accept(Ljava/io/File;)Z
-HSPLcom/android/server/pm/-$$Lambda$ShortcutPackage$ZN-r6tS0M7WKGK6nbXyJZPwNRGc;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;-><init>()V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/pm/-$$Lambda$ShortcutPackage$ibOAVgfKWMZFYSeVV_hLNx6jogk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutPackage$ZN-r6tS0M7WKGK6nbXyJZPwNRGc;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutPackage$ZN-r6tS0M7WKGK6nbXyJZPwNRGc;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/pm/-$$Lambda$ShortcutPackage$ibOAVgfKWMZFYSeVV_hLNx6jogk;-><init>(Lcom/android/server/pm/ShortcutPackage;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutPackage$ibOAVgfKWMZFYSeVV_hLNx6jogk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$2mjLrqafL_ZPftw5bIS-yyK7PxI;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$2mjLrqafL_ZPftw5bIS-yyK7PxI;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$ShortcutService$3$WghiV-HLnzJqZabObC5uHCmb960;-><init>(Lcom/android/server/pm/ShortcutService$3;I)V
 HSPLcom/android/server/pm/-$$Lambda$ShortcutService$3$WghiV-HLnzJqZabObC5uHCmb960;->run()V
+HSPLcom/android/server/pm/-$$Lambda$ShortcutService$3$n_VdEzyBcjs0pGZO8GnB0FoTgR0;-><init>(Lcom/android/server/pm/ShortcutService$3;II)V
 HSPLcom/android/server/pm/-$$Lambda$ShortcutService$3$n_VdEzyBcjs0pGZO8GnB0FoTgR0;->run()V
-PLcom/android/server/pm/-$$Lambda$ShortcutService$DzwraUeMWDwA0XDfFxd3sGOsA0E;->run()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$DzwraUeMWDwA0XDfFxd3sGOsA0E;-><init>(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$DzwraUeMWDwA0XDfFxd3sGOsA0E;->run()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$EE8aJ-V-lThNgd-x9utgJTk3K50;-><init>(I)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$EE8aJ-V-lThNgd-x9utgJTk3K50;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ShortcutService$H1HFyb1U9E1-y03suEsi37_w-t0;-><init>(Ljava/util/List;Landroid/content/IntentFilter;)V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$H1HFyb1U9E1-y03suEsi37_w-t0;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$Q0t7aDuDFJ8HWAf1NHW1dGQjOf8;-><init>(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$Q0t7aDuDFJ8HWAf1NHW1dGQjOf8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$HrjNihAM4odnSGPLxsJbI33JkwE;-><init>(Ljava/util/List;Landroid/content/IntentFilter;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$HrjNihAM4odnSGPLxsJbI33JkwE;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$Q0t7aDuDFJ8HWAf1NHW1dGQjOf8;-><init>(Lcom/android/server/pm/ShortcutService$LocalService;ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$Q0t7aDuDFJ8HWAf1NHW1dGQjOf8;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ZxpFznY3OrD6IbNkC12YhV8h3J4;-><init>(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZ)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ZxpFznY3OrD6IbNkC12YhV8h3J4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$a6cj3oQpS-Z6FB4DytB0FytYmiM;-><init>(Ljava/lang/String;)V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$a6cj3oQpS-Z6FB4DytB0FytYmiM;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ltDE7qm9grkumxffFI8cLCFpNqU;-><init>(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZ)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ltDE7qm9grkumxffFI8cLCFpNqU;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$QFWliMhWloedhnaZCwVKaqKPVb4;->run()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ltDE7qm9grkumxffFI8cLCFpNqU;-><init>(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZ)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ltDE7qm9grkumxffFI8cLCFpNqU;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$ShortcutService$M_jA5rlnfqs19yyXen7WvF8EFdQ;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$M_jA5rlnfqs19yyXen7WvF8EFdQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$NdP-8QRYjvDVSScw7cBKt85dbWQ;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$NdP-8QRYjvDVSScw7cBKt85dbWQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$Ot_p1CCuELDP1Emv4jTa8vvA09A;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$Ot_p1CCuELDP1Emv4jTa8vvA09A;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$Ot_p1CCuELDP1Emv4jTa8vvA09A;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$QFWliMhWloedhnaZCwVKaqKPVb4;-><init>(Lcom/android/server/pm/ShortcutService;JI)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$QFWliMhWloedhnaZCwVKaqKPVb4;->run()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$SjK_0i78sIpSTGJKpeLWOhhhsiA;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$SjK_0i78sIpSTGJKpeLWOhhhsiA;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$SjK_0i78sIpSTGJKpeLWOhhhsiA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$TAtLoMHHFYLITi_4Sj-ZTHx6ELo;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;IZ)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$TAtLoMHHFYLITi_4Sj-ZTHx6ELo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$TUT0CJsDhxqkpcseduaAriOs6bg;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$TUT0CJsDhxqkpcseduaAriOs6bg;-><init>()V
-PLcom/android/server/pm/-$$Lambda$ShortcutService$TUT0CJsDhxqkpcseduaAriOs6bg;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$TUT0CJsDhxqkpcseduaAriOs6bg;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$TVqBA9DN_h90eIcwrnmy7Mkl6jo;-><init>(Ljava/lang/String;I)V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$TVqBA9DN_h90eIcwrnmy7Mkl6jo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$exGcjcSQADxpLL30XenIn9sDxlI;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$exGcjcSQADxpLL30XenIn9sDxlI;-><init>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$exGcjcSQADxpLL30XenIn9sDxlI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$fCl_JbVpr187Fh4_6N-IxgnU68c;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$fCl_JbVpr187Fh4_6N-IxgnU68c;-><init>()V
-PLcom/android/server/pm/-$$Lambda$ShortcutService$fCl_JbVpr187Fh4_6N-IxgnU68c;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$io6aQoSP1ibWQCoayRXJaxbmJvA;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$fCl_JbVpr187Fh4_6N-IxgnU68c;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$io6aQoSP1ibWQCoayRXJaxbmJvA;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$io6aQoSP1ibWQCoayRXJaxbmJvA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$l8T8kXBB-Gktym0FoX_WiKj2Glc;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$l8T8kXBB-Gktym0FoX_WiKj2Glc;-><init>()V
-PLcom/android/server/pm/-$$Lambda$ShortcutService$l8T8kXBB-Gktym0FoX_WiKj2Glc;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$l8T8kXBB-Gktym0FoX_WiKj2Glc;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$lYluTnTRdTOcpwtJusvYEvlkMjQ;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$lYluTnTRdTOcpwtJusvYEvlkMjQ;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$lYluTnTRdTOcpwtJusvYEvlkMjQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$oes_dY8CJz5MllJiOggarpV9YkA;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$oes_dY8CJz5MllJiOggarpV9YkA;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$oes_dY8CJz5MllJiOggarpV9YkA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$s11VOofRVMGkuwyyqnMY7eAyb5k;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$s11VOofRVMGkuwyyqnMY7eAyb5k;-><init>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$s11VOofRVMGkuwyyqnMY7eAyb5k;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutService$t1am7miIbc4iP6CfSL0gFgEsO0Y;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;IZ)V
 PLcom/android/server/pm/-$$Lambda$ShortcutService$t1am7miIbc4iP6CfSL0gFgEsO0Y;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutService$y1mZhNAWeEp6GCbsOBAt4g-DS3s;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$uvknhLDPo5JAtmXalM9P3rrx9e4;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;I)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$uvknhLDPo5JAtmXalM9P3rrx9e4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$y1mZhNAWeEp6GCbsOBAt4g-DS3s;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;I)V
+PLcom/android/server/pm/-$$Lambda$ShortcutService$y1mZhNAWeEp6GCbsOBAt4g-DS3s;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutUser$6rBk7xJFaM9dXyyKHFs-DCus0iM;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutUser$6rBk7xJFaM9dXyyKHFs-DCus0iM;-><init>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutUser$6rBk7xJFaM9dXyyKHFs-DCus0iM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutUser$XHWlvjfCvG1SoVwGHi3envhmtfM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$ShortcutUser$bsc89E_40a5X2amehalpqawQ5hY;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$ShortcutUser$XHWlvjfCvG1SoVwGHi3envhmtfM;-><init>(ILjava/lang/String;Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/-$$Lambda$ShortcutUser$XHWlvjfCvG1SoVwGHi3envhmtfM;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$ShortcutUser$bsc89E_40a5X2amehalpqawQ5hY;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$ShortcutUser$bsc89E_40a5X2amehalpqawQ5hY;-><init>()V
 PLcom/android/server/pm/-$$Lambda$ShortcutUser$bsc89E_40a5X2amehalpqawQ5hY;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/pm/-$$Lambda$jZzCUQd1whVIqs_s1XMLbFqTP_E;->run()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$-_ny3FTrU2IsbpZjLW2h29O5auM;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$-_ny3FTrU2IsbpZjLW2h29O5auM;-><init>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$-_ny3FTrU2IsbpZjLW2h29O5auM;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$StagingManager$HKgsX1m7APD_7T6AtjHR5IBpKOg;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/-$$Lambda$StagingManager$HKgsX1m7APD_7T6AtjHR5IBpKOg;->apply(I)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$StagingManager$UAHmD_dya6rWSylrk_h2BGFBKcA;-><init>(Lcom/android/server/pm/StagingManager;Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/-$$Lambda$StagingManager$UAHmD_dya6rWSylrk_h2BGFBKcA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$StagingManager$ZgsDW9nz_GRyhJblDPqTcQpERKw;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$ZgsDW9nz_GRyhJblDPqTcQpERKw;-><init>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$ZgsDW9nz_GRyhJblDPqTcQpERKw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$StagingManager$d5wng09Aqg6kD7IttyYM7c0-S_s;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/-$$Lambda$StagingManager$d5wng09Aqg6kD7IttyYM7c0-S_s;->apply(I)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$StagingManager$khHJXt_K9cdI6PMA3kOt_alWSgA;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$khHJXt_K9cdI6PMA3kOt_alWSgA;-><init>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$khHJXt_K9cdI6PMA3kOt_alWSgA;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$StagingManager$klDFpL8kmOtsqN6EenDYGj-WaZA;-><init>(Ljava/util/function/Predicate;)V
+PLcom/android/server/pm/-$$Lambda$StagingManager$klDFpL8kmOtsqN6EenDYGj-WaZA;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$StagingManager$l7fa-k0J9C50Vr9mDKn9MKzrXEI;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$l7fa-k0J9C50Vr9mDKn9MKzrXEI;-><init>()V
+PLcom/android/server/pm/-$$Lambda$StagingManager$l7fa-k0J9C50Vr9mDKn9MKzrXEI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/-$$Lambda$UserManagerService$1$DQ_02g7kZ7QrJXO6aCATwE6DYCE;-><init>(Lcom/android/server/pm/UserManagerService$1;ILandroid/content/IntentSender;)V
+PLcom/android/server/pm/-$$Lambda$UserManagerService$1$DQ_02g7kZ7QrJXO6aCATwE6DYCE;->run()V
+HSPLcom/android/server/pm/-$$Lambda$UserManagerService$s1AxethOTPU7NQ5LXxyP4etLk7E;-><init>(Landroid/os/IUserRestrictionsListener;)V
+HSPLcom/android/server/pm/-$$Lambda$UserManagerService$s1AxethOTPU7NQ5LXxyP4etLk7E;->onUserRestrictionsChanged(ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/pm/-$$Lambda$UserSystemPackageInstaller$qgQhYPPVJE0ZGQMRr6lmVdZZll0;-><init>(Lcom/android/server/pm/UserSystemPackageInstaller;Ljava/util/Set;ZLjava/util/Set;)V
+PLcom/android/server/pm/-$$Lambda$UserSystemPackageInstaller$qgQhYPPVJE0ZGQMRr6lmVdZZll0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;-><clinit>()V
+PLcom/android/server/pm/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;-><init>()V
+HPLcom/android/server/pm/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/pm/-$$Lambda$g4P9K8aMR8DqEu0xx3BuQNeuJDI;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$g4P9K8aMR8DqEu0xx3BuQNeuJDI;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$g4P9K8aMR8DqEu0xx3BuQNeuJDI;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$jZzCUQd1whVIqs_s1XMLbFqTP_E;-><init>(Lcom/android/server/pm/ShortcutService;)V
+HPLcom/android/server/pm/-$$Lambda$jZzCUQd1whVIqs_s1XMLbFqTP_E;->run()V
+HSPLcom/android/server/pm/-$$Lambda$k1GFoI6SobyVJslBym5uZjmuRFs;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$k1GFoI6SobyVJslBym5uZjmuRFs;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$k1GFoI6SobyVJslBym5uZjmuRFs;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$o-ZLavkSzPWqIqo9vLXCsdj4Pgg;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$o-ZLavkSzPWqIqo9vLXCsdj4Pgg;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$o-ZLavkSzPWqIqo9vLXCsdj4Pgg;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/-$$Lambda$p0TiQPw2ryHKkedVkMgvUcGADDo;-><clinit>()V
+HSPLcom/android/server/pm/-$$Lambda$p0TiQPw2ryHKkedVkMgvUcGADDo;-><init>()V
+HSPLcom/android/server/pm/-$$Lambda$p0TiQPw2ryHKkedVkMgvUcGADDo;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/pm/-$$Lambda$vv6Ko6L2p38nn3EYcL5PZxcyRyk;-><clinit>()V
 PLcom/android/server/pm/-$$Lambda$vv6Ko6L2p38nn3EYcL5PZxcyRyk;-><init>()V
-PLcom/android/server/pm/-$$Lambda$vv6Ko6L2p38nn3EYcL5PZxcyRyk;->test(Ljava/lang/Object;)Z
-PLcom/android/server/pm/AbstractStatsBase$1;->run()V
+HPLcom/android/server/pm/-$$Lambda$vv6Ko6L2p38nn3EYcL5PZxcyRyk;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/AbstractStatsBase$1;-><init>(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/String;Ljava/lang/Object;)V
+HPLcom/android/server/pm/AbstractStatsBase$1;->run()V
 HSPLcom/android/server/pm/AbstractStatsBase;-><init>(Ljava/lang/String;Ljava/lang/String;Z)V
+PLcom/android/server/pm/AbstractStatsBase;->access$000(Lcom/android/server/pm/AbstractStatsBase;Ljava/lang/Object;)V
+PLcom/android/server/pm/AbstractStatsBase;->access$100(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicLong;
+PLcom/android/server/pm/AbstractStatsBase;->access$200(Lcom/android/server/pm/AbstractStatsBase;)Ljava/util/concurrent/atomic/AtomicBoolean;
 HSPLcom/android/server/pm/AbstractStatsBase;->getFile()Landroid/util/AtomicFile;
 HSPLcom/android/server/pm/AbstractStatsBase;->maybeWriteAsync(Ljava/lang/Object;)Z
 HSPLcom/android/server/pm/AbstractStatsBase;->read(Ljava/lang/Object;)V
 PLcom/android/server/pm/AbstractStatsBase;->writeImpl(Ljava/lang/Object;)V
-PLcom/android/server/pm/ApexManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/pm/ApexManager;-><init>(Landroid/content/Context;)V
-PLcom/android/server/pm/ApexManager;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/pm/ApexManager;->getActivePackage(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/ApexManager;->getActivePackages()Ljava/util/Collection;
-PLcom/android/server/pm/ApexManager;->onBootCompleted()V
-PLcom/android/server/pm/ApexManager;->populateActivePackagesCacheIfNeeded()V
-HSPLcom/android/server/pm/ApexManager;->systemReady()V
+PLcom/android/server/pm/AbstractStatsBase;->writeNow(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>(Landroid/apex/ApexInfo;Lcom/android/server/pm/ApexManager$1;)V
+HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Ljava/io/File;Ljava/io/File;)V
+HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Ljava/io/File;Ljava/io/File;Lcom/android/server/pm/ApexManager$1;)V
+HSPLcom/android/server/pm/ApexManager$ActiveApexInfo;-><init>(Ljava/lang/String;Ljava/io/File;Ljava/io/File;)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl$1;-><init>(Lcom/android/server/pm/ApexManager$ApexManagerImpl;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl$1;->lambda$onReceive$0$ApexManager$ApexManagerImpl$1()V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;-><init>(Landroid/apex/IApexService;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->abortStagedSession(I)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->access$100(Lcom/android/server/pm/ApexManager$ApexManagerImpl;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->access$200(Lcom/android/server/pm/ApexManager$ApexManagerImpl;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->dumpFromPackagesCache(Ljava/util/List;Ljava/lang/String;Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActiveApexInfos()Ljava/util/List;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getActivePackages()Ljava/util/List;
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApexModuleNameForPackageName(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getApksInApex(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getFactoryPackages()Ljava/util/List;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getInactivePackages()Ljava/util/List;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->getStagedSessionInfo(I)Landroid/apex/ApexSessionInfo;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->isActive(Landroid/content/pm/PackageInfo;)Z
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->isApexPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->isApexSupported()Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->isFactory(Landroid/content/pm/PackageInfo;)Z
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getActiveApexInfos$0(Landroid/apex/ApexInfo;)Lcom/android/server/pm/ApexManager$ActiveApexInfo;
+HPLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getActivePackages$0(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getActivePackages$1(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getFactoryPackages$1(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getFactoryPackages$2(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getInactivePackages$2(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->lambda$getInactivePackages$3(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->markStagedSessionReady(I)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->markStagedSessionSuccessful(I)V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->populateAllPackagesCacheIfNeeded()V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->populatePackageNameToApexModuleNameIfNeeded()V
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->registerApkInApex(Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/ApexManager$ApexManagerImpl;->submitStagedSession(Landroid/apex/ApexSessionParams;)Landroid/apex/ApexInfoList;
+HSPLcom/android/server/pm/ApexManager$ApexManagerImpl;->systemReady(Landroid/content/Context;)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;
+HSPLcom/android/server/pm/AppsFilter$FeatureConfigImpl;-><init>(Lcom/android/server/pm/PackageManagerService$Injector;)V
+HSPLcom/android/server/pm/AppsFilter$FeatureConfigImpl;-><init>(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/AppsFilter$1;)V
+HSPLcom/android/server/pm/AppsFilter$FeatureConfigImpl;->isGloballyEnabled()Z
+PLcom/android/server/pm/AppsFilter$FeatureConfigImpl;->lambda$onSystemReady$0$AppsFilter$FeatureConfigImpl(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/pm/AppsFilter$FeatureConfigImpl;->onSystemReady()V
+HSPLcom/android/server/pm/AppsFilter;-><init>(Lcom/android/server/pm/AppsFilter$FeatureConfig;[Ljava/lang/String;Z)V
+HSPLcom/android/server/pm/AppsFilter;-><init>(Lcom/android/server/pm/AppsFilter$FeatureConfig;[Ljava/lang/String;ZLcom/android/server/om/OverlayReferenceMapper$Provider;)V
+HSPLcom/android/server/pm/AppsFilter;->addPackage(Lcom/android/server/pm/PackageSetting;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/AppsFilter;->canQueryAsInstaller(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppsFilter;->canQueryViaIntent(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppsFilter;->canQueryViaPackage(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/AppsFilter;->create(Lcom/android/server/pm/PackageManagerService$Injector;)Lcom/android/server/pm/AppsFilter;
+HPLcom/android/server/pm/AppsFilter;->dumpQueries(Ljava/io/PrintWriter;Lcom/android/server/pm/PackageManagerService;Ljava/lang/Integer;Lcom/android/server/pm/DumpState;[I)V
+HSPLcom/android/server/pm/AppsFilter;->grantImplicitAccess(II)V
+PLcom/android/server/pm/AppsFilter;->isSystemSigned(Landroid/content/pm/PackageParser$SigningDetails;Lcom/android/server/pm/PackageSetting;)Z
+HSPLcom/android/server/pm/AppsFilter;->onSystemReady()V
+HSPLcom/android/server/pm/AppsFilter;->removePackage(Lcom/android/server/pm/PackageSetting;[ILandroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/AppsFilter;->shouldFilterApplication(ILcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;I)Z
+HSPLcom/android/server/pm/AppsFilter;->shouldFilterApplicationInternal(ILcom/android/server/pm/SettingBase;Lcom/android/server/pm/PackageSetting;I)Z
+PLcom/android/server/pm/BackgroundDexOptService$1;-><init>(Lcom/android/server/pm/BackgroundDexOptService;Ljava/lang/String;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
 PLcom/android/server/pm/BackgroundDexOptService$1;->run()V
+PLcom/android/server/pm/BackgroundDexOptService$2;-><init>(Lcom/android/server/pm/BackgroundDexOptService;Ljava/lang/String;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;Landroid/app/job/JobParameters;)V
 PLcom/android/server/pm/BackgroundDexOptService$2;->run()V
+HSPLcom/android/server/pm/BackgroundDexOptService;-><clinit>()V
 PLcom/android/server/pm/BackgroundDexOptService;-><init>()V
-PLcom/android/server/pm/BackgroundDexOptService;->abortIdleOptimizations(J)I
-PLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I
+HPLcom/android/server/pm/BackgroundDexOptService;->abortIdleOptimizations(J)I
+PLcom/android/server/pm/BackgroundDexOptService;->access$000(Lcom/android/server/pm/BackgroundDexOptService;Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
+PLcom/android/server/pm/BackgroundDexOptService;->access$100(Lcom/android/server/pm/BackgroundDexOptService;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;Landroid/content/Context;)I
+HPLcom/android/server/pm/BackgroundDexOptService;->getBatteryLevel()I
 HSPLcom/android/server/pm/BackgroundDexOptService;->getDowngradeUnusedAppsThresholdInMillis()J
+PLcom/android/server/pm/BackgroundDexOptService;->getLowStorageThreshold(Landroid/content/Context;)J
 PLcom/android/server/pm/BackgroundDexOptService;->idleOptimization(Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;Landroid/content/Context;)I
+PLcom/android/server/pm/BackgroundDexOptService;->idleOptimizePackages(Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;J)I
+HSPLcom/android/server/pm/BackgroundDexOptService;->isBackgroundDexoptDisabled()Z
+HPLcom/android/server/pm/BackgroundDexOptService;->lambda$performDexOptPrimary$0(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Ljava/lang/Integer;
 PLcom/android/server/pm/BackgroundDexOptService;->notifyPackageChanged(Ljava/lang/String;)V
 PLcom/android/server/pm/BackgroundDexOptService;->notifyPinService(Landroid/util/ArraySet;)V
 PLcom/android/server/pm/BackgroundDexOptService;->onStartJob(Landroid/app/job/JobParameters;)Z
 PLcom/android/server/pm/BackgroundDexOptService;->onStopJob(Landroid/app/job/JobParameters;)Z
-PLcom/android/server/pm/BackgroundDexOptService;->optimizePackages(Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;JZ)I
-PLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
-PLcom/android/server/pm/BackgroundDexOptService;->reconcileSecondaryDexFiles(Lcom/android/server/pm/dex/DexManager;)I
+PLcom/android/server/pm/BackgroundDexOptService;->optimizePackage(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Z)Z
+HPLcom/android/server/pm/BackgroundDexOptService;->optimizePackages(Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;JZLandroid/util/ArraySet;)I
+HPLcom/android/server/pm/BackgroundDexOptService;->performDexOptPrimary(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Z
+HPLcom/android/server/pm/BackgroundDexOptService;->performDexOptSecondary(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Z
+HPLcom/android/server/pm/BackgroundDexOptService;->postBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)V
+HPLcom/android/server/pm/BackgroundDexOptService;->reconcileSecondaryDexFiles(Lcom/android/server/pm/dex/DexManager;)I
+PLcom/android/server/pm/BackgroundDexOptService;->runIdleOptimization(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)Z
+PLcom/android/server/pm/BackgroundDexOptService;->runPostBootUpdate(Landroid/app/job/JobParameters;Lcom/android/server/pm/PackageManagerService;Landroid/util/ArraySet;)Z
 HSPLcom/android/server/pm/BackgroundDexOptService;->schedule(Landroid/content/Context;)V
-PLcom/android/server/pm/BackgroundDexOptService;->trackPerformDexOpt(Ljava/lang/String;ZLjava/util/function/Supplier;)I
-PLcom/android/server/pm/CompilerStats$PackageStats;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/pm/BackgroundDexOptService;->shouldDowngrade(J)Z
+PLcom/android/server/pm/BackgroundDexOptService;->supportSecondaryDex()Z
+HPLcom/android/server/pm/BackgroundDexOptService;->trackPerformDexOpt(Ljava/lang/String;ZLjava/util/function/Supplier;)I
+HSPLcom/android/server/pm/CompilerStats$PackageStats;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/pm/CompilerStats$PackageStats;->access$000(Lcom/android/server/pm/CompilerStats$PackageStats;)Ljava/util/Map;
+HPLcom/android/server/pm/CompilerStats$PackageStats;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/pm/CompilerStats$PackageStats;->getPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/CompilerStats$PackageStats;->getStoredPathFromCodePath(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/CompilerStats$PackageStats;->setCompileTime(Ljava/lang/String;J)V
 HSPLcom/android/server/pm/CompilerStats;-><init>()V
 HSPLcom/android/server/pm/CompilerStats;->createPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
 HSPLcom/android/server/pm/CompilerStats;->getOrCreatePackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z
+HPLcom/android/server/pm/CompilerStats;->getPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HSPLcom/android/server/pm/CompilerStats;->maybeWriteAsync()Z
 HSPLcom/android/server/pm/CompilerStats;->read()V
 HSPLcom/android/server/pm/CompilerStats;->read(Ljava/io/Reader;)Z
 HSPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/CompilerStats;->readInternal(Ljava/lang/Void;)V
-PLcom/android/server/pm/CompilerStats;->write(Ljava/io/Writer;)V
+HPLcom/android/server/pm/CompilerStats;->write(Ljava/io/Writer;)V
 PLcom/android/server/pm/CompilerStats;->writeInternal(Ljava/lang/Object;)V
 PLcom/android/server/pm/CompilerStats;->writeInternal(Ljava/lang/Void;)V
-HSPLcom/android/server/pm/ComponentResolver$ActionIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
-HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->addActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/pm/CompilerStats;->writeNow()V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;-><init>()V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;-><init>(Lcom/android/server/pm/ComponentResolver$1;)V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->access$400(Lcom/android/server/pm/ComponentResolver$ActivityIntentResolver;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->access$700(Lcom/android/server/pm/ComponentResolver$ActivityIntentResolver;Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;Ljava/lang/String;Ljava/util/List;)V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->access$800(Lcom/android/server/pm/ComponentResolver$ActivityIntentResolver;Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->addActivity(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;Ljava/lang/String;Ljava/util/List;)V
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/util/List;)Z
-PLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
-PLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->allowFilterResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;Ljava/util/List;)Z
+HPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
+HPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
+HPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->filterToLabel(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Ljava/lang/Object;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->getResolveList(Landroid/content/pm/parsing/AndroidPackage;)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
-HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->isFilterStopped(Landroid/content/pm/PackageParser$ActivityIntentInfo;I)Z
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->isFilterStopped(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;I)Z
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Z
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->newArray(I)[Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->newResult(Landroid/content/pm/PackageParser$ActivityIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->newResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->removeActivity(Landroid/content/pm/PackageParser$Activity;Ljava/lang/String;)V
+HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->removeActivity(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;Ljava/lang/String;)V
 HSPLcom/android/server/pm/ComponentResolver$ActivityIntentResolver;->sortResults(Ljava/util/List;)V
-HSPLcom/android/server/pm/ComponentResolver$AuthoritiesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
-HSPLcom/android/server/pm/ComponentResolver$CategoriesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
-PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->filterResults(Ljava/util/List;)V
-PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->addProvider(Landroid/content/pm/PackageParser$Provider;)V
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ProviderIntentInfo;Ljava/util/List;)Z
-PLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
-PLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
-PLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;-><init>()V
+HPLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->filterResults(Ljava/util/List;)V
+HPLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->newArray(I)[Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;
+PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
+PLcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;->newResult(Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;II)Landroid/content/pm/AuxiliaryResolveInfo$AuxiliaryFilter;
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;-><init>()V
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;-><init>(Lcom/android/server/pm/ComponentResolver$1;)V
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->access$500(Lcom/android/server/pm/ComponentResolver$ProviderIntentResolver;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->addProvider(Landroid/content/pm/parsing/ComponentParseUtils$ParsedProvider;)V
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->allowFilterResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedProviderIntentInfo;Ljava/util/List;)Z
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
+PLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->filterToLabel(Landroid/content/pm/parsing/ComponentParseUtils$ParsedProviderIntentInfo;)Ljava/lang/Object;
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/parsing/ComponentParseUtils$ParsedProviderIntentInfo;)Z
 HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newResult(Landroid/content/pm/PackageParser$ProviderIntentInfo;II)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->removeProvider(Landroid/content/pm/PackageParser$Provider;)V
-HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->sortResults(Ljava/util/List;)V
-HSPLcom/android/server/pm/ComponentResolver$SchemesIterGenerator;->generate(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Ljava/util/Iterator;
-HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->addService(Landroid/content/pm/PackageParser$Service;)V
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newArray(I)[Landroid/content/pm/parsing/ComponentParseUtils$ParsedProviderIntentInfo;
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->newResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedProviderIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
+HSPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->removeProvider(Landroid/content/pm/parsing/ComponentParseUtils$ParsedProvider;)V
+HPLcom/android/server/pm/ComponentResolver$ProviderIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/pm/ComponentResolver$ReceiverIntentResolver;-><init>()V
+HSPLcom/android/server/pm/ComponentResolver$ReceiverIntentResolver;-><init>(Lcom/android/server/pm/ComponentResolver$1;)V
+HSPLcom/android/server/pm/ComponentResolver$ReceiverIntentResolver;->getResolveList(Landroid/content/pm/parsing/AndroidPackage;)Ljava/util/List;
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;-><init>()V
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;-><init>(Lcom/android/server/pm/ComponentResolver$1;)V
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->access$600(Lcom/android/server/pm/ComponentResolver$ServiceIntentResolver;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->addService(Landroid/content/pm/parsing/ComponentParseUtils$ParsedService;)V
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/content/IntentFilter;Ljava/util/List;)Z
-HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;Ljava/util/List;)Z
-PLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
-PLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
-PLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
-PLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isFilterStopped(Landroid/content/pm/PackageParser$ServiceIntentInfo;I)Z
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->allowFilterResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;Ljava/util/List;)Z
+HPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->dumpFilterLabel(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;I)V
+HPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->filterToLabel(Landroid/content/IntentFilter;)Ljava/lang/Object;
+PLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->filterToLabel(Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;)Ljava/lang/Object;
+HPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isFilterStopped(Landroid/content/IntentFilter;I)Z
+HPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isFilterStopped(Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;I)Z
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;)Z
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->newArray(I)[Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->newResult(Landroid/content/pm/PackageParser$ServiceIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->newResult(Landroid/content/pm/parsing/ComponentParseUtils$ParsedServiceIntentInfo;II)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->queryIntent(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->queryIntentForPackage(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->removeService(Landroid/content/pm/PackageParser$Service;)V
+HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->removeService(Landroid/content/pm/parsing/ComponentParseUtils$ParsedService;)V
 HSPLcom/android/server/pm/ComponentResolver$ServiceIntentResolver;->sortResults(Ljava/util/List;)V
+HSPLcom/android/server/pm/ComponentResolver;-><clinit>()V
 HSPLcom/android/server/pm/ComponentResolver;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/content/pm/PackageManagerInternal;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/ComponentResolver;->addActivitiesLocked(Landroid/content/pm/PackageParser$Package;Ljava/util/List;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->addAllComponents(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->addProvidersLocked(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->addReceiversLocked(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->addServicesLocked(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/lang/String;)V
-PLcom/android/server/pm/ComponentResolver;->assertProvidersNotDefined(Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/ComponentResolver;->assertProvidersNotDefinedLocked(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/ComponentResolver;->access$1000()Landroid/content/pm/PackageManagerInternal;
+HSPLcom/android/server/pm/ComponentResolver;->access$900()Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/ComponentResolver;->addActivitiesLocked(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/List;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->addAllComponents(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->addProvidersLocked(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->addReceiversLocked(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->addServicesLocked(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->adjustPriority(Ljava/util/List;Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;Ljava/lang/String;)V
+PLcom/android/server/pm/ComponentResolver;->assertProvidersNotDefined(Landroid/content/pm/parsing/AndroidPackage;)V
+HPLcom/android/server/pm/ComponentResolver;->assertProvidersNotDefinedLocked(Landroid/content/pm/parsing/AndroidPackage;)V
 PLcom/android/server/pm/ComponentResolver;->dumpActivityResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/ComponentResolver;->dumpContentProviders(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/ComponentResolver;->dumpContentProviders(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
 PLcom/android/server/pm/ComponentResolver;->dumpProviderResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
 PLcom/android/server/pm/ComponentResolver;->dumpReceiverResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-PLcom/android/server/pm/ComponentResolver;->dumpServicePermissions(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
+HPLcom/android/server/pm/ComponentResolver;->dumpServicePermissions(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
 PLcom/android/server/pm/ComponentResolver;->dumpServiceResolvers(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;Ljava/lang/String;)V
-HSPLcom/android/server/pm/ComponentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/ActivityInfo;)Landroid/content/pm/PackageParser$Activity;
+HSPLcom/android/server/pm/ComponentResolver;->findMatchingActivity(Ljava/util/List;Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;)Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;
 HSPLcom/android/server/pm/ComponentResolver;->fixProtectedFilterPriorities()V
-HSPLcom/android/server/pm/ComponentResolver;->getActivity(Landroid/content/ComponentName;)Landroid/content/pm/PackageParser$Activity;
-HSPLcom/android/server/pm/ComponentResolver;->getIntentListSubset(Ljava/util/List;Lcom/android/server/pm/ComponentResolver$IterGenerator;Ljava/util/Iterator;)V
-PLcom/android/server/pm/ComponentResolver;->getProvider(Landroid/content/ComponentName;)Landroid/content/pm/PackageParser$Provider;
-HSPLcom/android/server/pm/ComponentResolver;->getReceiver(Landroid/content/ComponentName;)Landroid/content/pm/PackageParser$Activity;
-HSPLcom/android/server/pm/ComponentResolver;->getService(Landroid/content/ComponentName;)Landroid/content/pm/PackageParser$Service;
+HSPLcom/android/server/pm/ComponentResolver;->getActivity(Landroid/content/ComponentName;)Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;
+HSPLcom/android/server/pm/ComponentResolver;->getIntentListSubset(Ljava/util/List;Ljava/util/function/Function;Ljava/util/Iterator;)V
+HPLcom/android/server/pm/ComponentResolver;->getProvider(Landroid/content/ComponentName;)Landroid/content/pm/parsing/ComponentParseUtils$ParsedProvider;
+HSPLcom/android/server/pm/ComponentResolver;->getReceiver(Landroid/content/ComponentName;)Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivity;
+HSPLcom/android/server/pm/ComponentResolver;->getService(Landroid/content/ComponentName;)Landroid/content/pm/parsing/ComponentParseUtils$ParsedService;
 HSPLcom/android/server/pm/ComponentResolver;->isActivityDefined(Landroid/content/ComponentName;)Z
+HSPLcom/android/server/pm/ComponentResolver;->isProtectedAction(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Z
 HSPLcom/android/server/pm/ComponentResolver;->lambda$static$0(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
 HSPLcom/android/server/pm/ComponentResolver;->queryActivities(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryActivities(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
-HSPLcom/android/server/pm/ComponentResolver;->queryProviders(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/ComponentResolver;->queryProviders(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 PLcom/android/server/pm/ComponentResolver;->queryProviders(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryProviders(Ljava/lang/String;Ljava/lang/String;III)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryReceivers(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryReceivers(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryServices(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/ComponentResolver;->queryServices(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Ljava/util/List;
-HSPLcom/android/server/pm/ComponentResolver;->removeAllComponents(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/ComponentResolver;->removeAllComponentsLocked(Landroid/content/pm/PackageParser$Package;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->removeAllComponents(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/ComponentResolver;->removeAllComponentsLocked(Landroid/content/pm/parsing/AndroidPackage;Z)V
 HSPLcom/android/server/pm/CrossProfileAppsService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/pm/CrossProfileAppsService;->onStart()V
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->clearCallingIdentity()J
+HSPLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->clearCallingIdentity()J
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getActivityTaskManagerInternal()Lcom/android/server/wm/ActivityTaskManagerInternal;
 PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getAppOpsManager()Landroid/app/AppOpsManager;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getCallingUid()I
+PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getCallingPid()I
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getCallingUid()I
 PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getCallingUserId()I
 PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getPackageManagerInternal()Landroid/content/pm/PackageManagerInternal;
 PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->getUserManager()Landroid/os/UserManager;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->restoreCallingIdentity(J)V
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl$InjectorImpl;->restoreCallingIdentity(J)V
+HSPLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/CrossProfileAppsServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/pm/CrossProfileAppsServiceImpl$Injector;)V
 PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfiles(Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/pm/CrossProfileAppsServiceImpl;->getTargetUserProfilesUnchecked(Ljava/lang/String;I)Ljava/util/List;
 PLcom/android/server/pm/CrossProfileAppsServiceImpl;->isPackageEnabled(Ljava/lang/String;I)Z
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;IZ)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->verifyActivityCanHandleIntentAndExported(Landroid/content/Intent;Landroid/content/ComponentName;II)V
+PLcom/android/server/pm/CrossProfileAppsServiceImpl;->verifyCallingPackage(Ljava/lang/String;)V
+HPLcom/android/server/pm/CrossProfileIntentFilter;-><init>(Landroid/content/IntentFilter;Ljava/lang/String;II)V
 HSPLcom/android/server/pm/CrossProfileIntentFilter;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
+PLcom/android/server/pm/CrossProfileIntentFilter;->equalsIgnoreFilter(Lcom/android/server/pm/CrossProfileIntentFilter;)Z
 HSPLcom/android/server/pm/CrossProfileIntentFilter;->getFlags()I
 HSPLcom/android/server/pm/CrossProfileIntentFilter;->getIntFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
 PLcom/android/server/pm/CrossProfileIntentFilter;->getOwnerPackage()Ljava/lang/String;
 HSPLcom/android/server/pm/CrossProfileIntentFilter;->getStringFromXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/CrossProfileIntentFilter;->getTargetUserId()I
 HSPLcom/android/server/pm/CrossProfileIntentFilter;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/pm/CrossProfileIntentResolver;-><init>()V
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->newArray(I)[Lcom/android/server/pm/CrossProfileIntentFilter;
 HSPLcom/android/server/pm/CrossProfileIntentResolver;->sortResults(Ljava/util/List;)V
-PLcom/android/server/pm/DumpState;-><init>()V
+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
+HPLcom/android/server/pm/DumpState;-><init>()V
 PLcom/android/server/pm/DumpState;->getTitlePrinted()Z
-PLcom/android/server/pm/DumpState;->isDumping(I)Z
-PLcom/android/server/pm/DumpState;->onTitlePrinted()Z
+HPLcom/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;->setTitlePrinted(Z)V
-PLcom/android/server/pm/DynamicCodeLoggingService$AuditWatchingThread;->processAuditEvents()Z
+PLcom/android/server/pm/DynamicCodeLoggingService$AuditWatchingThread;-><init>(Lcom/android/server/pm/DynamicCodeLoggingService;Landroid/app/job/JobParameters;)V
+HPLcom/android/server/pm/DynamicCodeLoggingService$AuditWatchingThread;->processAuditEvents()Z
 PLcom/android/server/pm/DynamicCodeLoggingService$AuditWatchingThread;->run()V
+PLcom/android/server/pm/DynamicCodeLoggingService$IdleLoggingThread;-><init>(Lcom/android/server/pm/DynamicCodeLoggingService;Landroid/app/job/JobParameters;)V
 PLcom/android/server/pm/DynamicCodeLoggingService$IdleLoggingThread;->run()V
+HSPLcom/android/server/pm/DynamicCodeLoggingService;-><clinit>()V
 PLcom/android/server/pm/DynamicCodeLoggingService;-><init>()V
+PLcom/android/server/pm/DynamicCodeLoggingService;->access$000()Lcom/android/server/pm/dex/DynamicCodeLogger;
+PLcom/android/server/pm/DynamicCodeLoggingService;->access$100(Lcom/android/server/pm/DynamicCodeLoggingService;)Z
+PLcom/android/server/pm/DynamicCodeLoggingService;->access$200()Ljava/lang/String;
+HPLcom/android/server/pm/DynamicCodeLoggingService;->access$300(Lcom/android/server/pm/DynamicCodeLoggingService;)Z
+PLcom/android/server/pm/DynamicCodeLoggingService;->access$400()Ljava/util/regex/Pattern;
+PLcom/android/server/pm/DynamicCodeLoggingService;->getDynamicCodeLogger()Lcom/android/server/pm/dex/DynamicCodeLogger;
 PLcom/android/server/pm/DynamicCodeLoggingService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/pm/DynamicCodeLoggingService;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/pm/DynamicCodeLoggingService;->schedule(Landroid/content/Context;)V
-HSPLcom/android/server/pm/Installer$InstallerException;->from(Ljava/lang/Exception;)Lcom/android/server/pm/Installer$InstallerException;
+HSPLcom/android/server/pm/InstallSource;-><clinit>()V
+HSPLcom/android/server/pm/InstallSource;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/pm/InstallSource;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLcom/android/server/pm/PackageSignatures;)V
+HSPLcom/android/server/pm/InstallSource;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->create(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->createInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Z)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->createInternal(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZLcom/android/server/pm/PackageSignatures;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->intern(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/InstallSource;->setInitiatingPackageSignatures(Lcom/android/server/pm/PackageSignatures;)Lcom/android/server/pm/InstallSource;
+PLcom/android/server/pm/InstallSource;->setInstallerPackage(Ljava/lang/String;)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/InstallSource;->setIsOrphaned(Z)Lcom/android/server/pm/InstallSource;
+HSPLcom/android/server/pm/Installer$1;-><init>(Lcom/android/server/pm/Installer;)V
+HPLcom/android/server/pm/Installer$InstallerException;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/pm/Installer$InstallerException;->from(Ljava/lang/Exception;)Lcom/android/server/pm/Installer$InstallerException;
 HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/pm/Installer;-><init>(Landroid/content/Context;Z)V
 HSPLcom/android/server/pm/Installer;->assertFsverityRootHashMatches(Ljava/lang/String;[B)V
 HSPLcom/android/server/pm/Installer;->assertValidInstructionSet(Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->checkBeforeRemote()Z
-HSPLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
+HPLcom/android/server/pm/Installer;->clearAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
 HSPLcom/android/server/pm/Installer;->clearAppProfiles(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->connect()V
 PLcom/android/server/pm/Installer;->copySystemProfile(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/server/pm/Installer;->createAppData(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)J
 PLcom/android/server/pm/Installer;->createOatDir(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/pm/Installer;->createProfileSnapshot(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V
+PLcom/android/server/pm/Installer;->createUserData(Ljava/lang/String;III)V
+HPLcom/android/server/pm/Installer;->deleteOdex(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->destroyAppData(Ljava/lang/String;Ljava/lang/String;IIJ)V
-HSPLcom/android/server/pm/Installer;->destroyAppDataSnapshot(Ljava/lang/String;IJII)Z
-HSPLcom/android/server/pm/Installer;->destroyAppProfiles(Ljava/lang/String;)V
+PLcom/android/server/pm/Installer;->destroyAppProfiles(Ljava/lang/String;)V
 PLcom/android/server/pm/Installer;->destroyProfileSnapshot(Ljava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/Installer;->destroyUserData(Ljava/lang/String;II)V
+HSPLcom/android/server/pm/Installer;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->fixupAppData(Ljava/lang/String;I)V
-PLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V
+HPLcom/android/server/pm/Installer;->freeCache(Ljava/lang/String;JJI)V
+HPLcom/android/server/pm/Installer;->getAppSize(Ljava/lang/String;[Ljava/lang/String;III[J[Ljava/lang/String;Landroid/content/pm/PackageStats;)V
 PLcom/android/server/pm/Installer;->getExternalSize(Ljava/lang/String;II[I)[J
-PLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V
-PLcom/android/server/pm/Installer;->hashSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)[B
-HSPLcom/android/server/pm/Installer;->idmap(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/Installer;->getUserSize(Ljava/lang/String;II[ILandroid/content/pm/PackageStats;)V
+HPLcom/android/server/pm/Installer;->hashSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;I)[B
 PLcom/android/server/pm/Installer;->installApkVerity(Ljava/lang/String;Ljava/io/FileDescriptor;I)V
 HSPLcom/android/server/pm/Installer;->invalidateMounts()V
-PLcom/android/server/pm/Installer;->isQuotaSupported(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/pm/Installer;->markBootComplete(Ljava/lang/String;)V
-PLcom/android/server/pm/Installer;->mergeProfiles(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/pm/Installer;->isQuotaSupported(Ljava/lang/String;)Z
+PLcom/android/server/pm/Installer;->linkFile(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/Installer;->linkNativeLibraryDirectory(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/Installer;->markBootComplete(Ljava/lang/String;)V
+HPLcom/android/server/pm/Installer;->mergeProfiles(ILjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/pm/Installer;->migrateLegacyObbData()Z
 HPLcom/android/server/pm/Installer;->moveAb(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->onStart()V
-HSPLcom/android/server/pm/Installer;->prepareAppProfile(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/pm/Installer;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/pm/Installer;->prepareAppProfile(Ljava/lang/String;IILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/pm/Installer;->reconcileSecondaryDexFile(Ljava/lang/String;Ljava/lang/String;I[Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/pm/Installer;->restoreAppDataSnapshot(Ljava/lang/String;ILjava/lang/String;III)Z
 HSPLcom/android/server/pm/Installer;->rmPackageDir(Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->rmdex(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Installer;->setAppQuota(Ljava/lang/String;IIJ)V
 HSPLcom/android/server/pm/Installer;->setWarnIfHeld(Ljava/lang/Object;)V
+PLcom/android/server/pm/Installer;->snapshotAppData(Ljava/lang/String;III)J
+HSPLcom/android/server/pm/InstantAppRegistry$CookiePersistence;-><init>(Lcom/android/server/pm/InstantAppRegistry;Landroid/os/Looper;)V
+PLcom/android/server/pm/InstantAppRegistry$CookiePersistence;->cancelPendingPersistLPw(Landroid/content/pm/parsing/AndroidPackage;I)V
+PLcom/android/server/pm/InstantAppRegistry$CookiePersistence;->removePendingPersistCookieLPr(Landroid/content/pm/parsing/AndroidPackage;I)Lcom/android/internal/os/SomeArgs;
 HSPLcom/android/server/pm/InstantAppRegistry;-><init>(Lcom/android/server/pm/PackageManagerService;)V
 HSPLcom/android/server/pm/InstantAppRegistry;->addInstantAppLPw(II)V
-PLcom/android/server/pm/InstantAppRegistry;->getInstalledInstantApplicationsLPr(I)Ljava/util/List;
-PLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationsDir(I)Ljava/io/File;
+PLcom/android/server/pm/InstantAppRegistry;->createInstantAppInfoForPackage(Landroid/content/pm/parsing/AndroidPackage;IZ)Landroid/content/pm/InstantAppInfo;
+PLcom/android/server/pm/InstantAppRegistry;->deleteDir(Ljava/io/File;)V
+PLcom/android/server/pm/InstantAppRegistry;->deleteInstantApplicationMetadataLPw(Ljava/lang/String;I)V
+HPLcom/android/server/pm/InstantAppRegistry;->getInstalledInstantApplicationsLPr(I)Ljava/util/List;
+HPLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationDir(Ljava/lang/String;I)Ljava/io/File;
+HPLcom/android/server/pm/InstantAppRegistry;->getInstantApplicationsDir(I)Ljava/io/File;
 PLcom/android/server/pm/InstantAppRegistry;->getInstantAppsLPr(I)Ljava/util/List;
 PLcom/android/server/pm/InstantAppRegistry;->getUninstalledInstantAppStatesLPr(I)Ljava/util/List;
 PLcom/android/server/pm/InstantAppRegistry;->getUninstalledInstantApplicationsLPr(I)Ljava/util/List;
-HSPLcom/android/server/pm/InstantAppRegistry;->grantInstantAccessLPw(ILandroid/content/Intent;II)V
-HSPLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z
-PLcom/android/server/pm/InstantAppRegistry;->onPackageInstalledLPw(Landroid/content/pm/PackageParser$Package;[I)V
-HSPLcom/android/server/pm/InstantAppRegistry;->onPackageUninstalledLPw(Landroid/content/pm/PackageParser$Package;[I)V
+PLcom/android/server/pm/InstantAppRegistry;->hasInstantAppMetadataLPr(Ljava/lang/String;I)Z
+PLcom/android/server/pm/InstantAppRegistry;->hasInstantApplicationMetadataLPr(Ljava/lang/String;I)Z
+PLcom/android/server/pm/InstantAppRegistry;->hasUninstalledInstantAppStateLPr(Ljava/lang/String;I)Z
+PLcom/android/server/pm/InstantAppRegistry;->isInstantAccessGranted(III)Z
+HPLcom/android/server/pm/InstantAppRegistry;->onPackageInstalledLPw(Landroid/content/pm/parsing/AndroidPackage;[I)V
+HPLcom/android/server/pm/InstantAppRegistry;->onPackageUninstalledLPw(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageSetting;[I)V
+PLcom/android/server/pm/InstantAppRegistry;->onPackageUninstalledLPw(Landroid/content/pm/parsing/AndroidPackage;[I)V
+PLcom/android/server/pm/InstantAppRegistry;->onUserRemovedLPw(I)V
 PLcom/android/server/pm/InstantAppRegistry;->parseMetadataFile(Ljava/io/File;)Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState;
-PLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(Ljava/lang/String;I)Ljava/io/File;
+HPLcom/android/server/pm/InstantAppRegistry;->peekInstantCookieFile(Ljava/lang/String;I)Ljava/io/File;
 PLcom/android/server/pm/InstantAppRegistry;->peekOrParseUninstalledInstantAppInfo(Ljava/lang/String;I)Landroid/content/pm/InstantAppInfo;
-PLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Landroid/content/pm/PackageParser$Package;I)V
+HPLcom/android/server/pm/InstantAppRegistry;->propagateInstantAppPermissionsIfNeeded(Landroid/content/pm/parsing/AndroidPackage;I)V
+PLcom/android/server/pm/InstantAppRegistry;->pruneInstalledInstantApps(JJ)Z
 PLcom/android/server/pm/InstantAppRegistry;->pruneInstantApps()V
-PLcom/android/server/pm/InstantAppRegistry;->pruneInstantApps(JJJ)Z
-PLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(Ljava/util/function/Predicate;I)V
-PLcom/android/server/pm/InstantAppResolver;->computeResolveFilters(Landroid/content/Intent;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/InstantAppResolveInfo;)Ljava/util/List;
-PLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Lcom/android/server/pm/InstantAppResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo;
+HPLcom/android/server/pm/InstantAppRegistry;->pruneInstantApps(JJJ)Z
+PLcom/android/server/pm/InstantAppRegistry;->pruneUninstalledInstantApps(JJ)Z
+PLcom/android/server/pm/InstantAppRegistry;->removeAppLPw(II)V
+HPLcom/android/server/pm/InstantAppRegistry;->removeUninstalledInstantAppStateLPw(Ljava/util/function/Predicate;I)V
+PLcom/android/server/pm/InstantAppResolver;-><clinit>()V
+HPLcom/android/server/pm/InstantAppResolver;->buildRequestInfo(Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/InstantAppRequestInfo;
+HPLcom/android/server/pm/InstantAppResolver;->computeResolveFilters(Landroid/content/Intent;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/InstantAppResolveInfo;)Ljava/util/List;
+PLcom/android/server/pm/InstantAppResolver;->createFailureIntent(Landroid/content/Intent;Ljava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/pm/InstantAppResolver;->doInstantAppResolutionPhaseOne(Lcom/android/server/pm/InstantAppResolverConnection;Landroid/content/pm/InstantAppRequest;)Landroid/content/pm/AuxiliaryResolveInfo;
 PLcom/android/server/pm/InstantAppResolver;->filterInstantAppIntent(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;ILjava/lang/String;Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;Ljava/lang/String;)Landroid/content/pm/AuxiliaryResolveInfo;
+HPLcom/android/server/pm/InstantAppResolver;->filterInstantAppIntent(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;[I)Landroid/content/pm/AuxiliaryResolveInfo;
+PLcom/android/server/pm/InstantAppResolver;->getLogger()Lcom/android/internal/logging/MetricsLogger;
 PLcom/android/server/pm/InstantAppResolver;->logMetrics(IJLjava/lang/String;I)V
-PLcom/android/server/pm/InstantAppResolver;->sanitizeIntent(Landroid/content/Intent;)Landroid/content/Intent;
-PLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V
+HPLcom/android/server/pm/InstantAppResolver;->parseDigest(Landroid/content/Intent;)Landroid/content/pm/InstantAppResolveInfo$InstantAppDigest;
+HPLcom/android/server/pm/InstantAppResolver;->sanitizeIntent(Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/pm/InstantAppResolverConnection$ConnectionException;-><init>(I)V
+HSPLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;-><init>(Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;)V
+HPLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;->sendResult(Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;-><init>()V
+HPLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;->access$700(Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;Ljava/lang/Object;I)V
+HPLcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;->getInstantAppResolveInfoList(Landroid/app/IInstantAppResolver;Landroid/content/pm/InstantAppRequestInfo;)Ljava/util/List;
+HSPLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;)V
+HSPLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;-><init>(Lcom/android/server/pm/InstantAppResolverConnection;Lcom/android/server/pm/InstantAppResolverConnection$1;)V
 PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+HSPLcom/android/server/pm/InstantAppResolverConnection;-><clinit>()V
 HSPLcom/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;->access$100()Z
+PLcom/android/server/pm/InstantAppResolverConnection;->access$200(Lcom/android/server/pm/InstantAppResolverConnection;)Ljava/lang/Object;
+PLcom/android/server/pm/InstantAppResolverConnection;->access$302(Lcom/android/server/pm/InstantAppResolverConnection;Landroid/app/IInstantAppResolver;)Landroid/app/IInstantAppResolver;
+PLcom/android/server/pm/InstantAppResolverConnection;->access$400(Lcom/android/server/pm/InstantAppResolverConnection;)I
+PLcom/android/server/pm/InstantAppResolverConnection;->access$402(Lcom/android/server/pm/InstantAppResolverConnection;I)I
+PLcom/android/server/pm/InstantAppResolverConnection;->access$500(Lcom/android/server/pm/InstantAppResolverConnection;)V
+HSPLcom/android/server/pm/InstantAppResolverConnection;->access$600()J
+HPLcom/android/server/pm/InstantAppResolverConnection;->bind(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
 PLcom/android/server/pm/InstantAppResolverConnection;->binderDied()V
 PLcom/android/server/pm/InstantAppResolverConnection;->getInstantAppResolveInfoList(Landroid/content/Intent;[IILjava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/InstantAppResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
+HPLcom/android/server/pm/InstantAppResolverConnection;->getInstantAppResolveInfoList(Landroid/content/pm/InstantAppRequestInfo;)Ljava/util/List;
+HPLcom/android/server/pm/InstantAppResolverConnection;->getRemoteInstanceLazy(Ljava/lang/String;)Landroid/app/IInstantAppResolver;
 PLcom/android/server/pm/InstantAppResolverConnection;->handleBinderDiedLocked()V
 PLcom/android/server/pm/InstantAppResolverConnection;->lambda$optimisticBind$0$InstantAppResolverConnection()V
-PLcom/android/server/pm/InstantAppResolverConnection;->waitForBindLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/InstantAppResolverConnection;->optimisticBind()V
+HPLcom/android/server/pm/InstantAppResolverConnection;->throwIfCalledOnMainThread()V
+HPLcom/android/server/pm/InstantAppResolverConnection;->waitForBindLocked(Ljava/lang/String;)V
+HSPLcom/android/server/pm/InstructionSets;-><clinit>()V
 HSPLcom/android/server/pm/InstructionSets;->getAllDexCodeInstructionSets()[Ljava/lang/String;
-PLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String;
-HSPLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Lcom/android/server/pm/PackageSetting;)[Ljava/lang/String;
+HSPLcom/android/server/pm/InstructionSets;->getAppDexInstructionSets(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSet(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/InstructionSets;->getDexCodeInstructionSets([Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/server/pm/InstructionSets;->getPreferredInstructionSet()Ljava/lang/String;
-PLcom/android/server/pm/IntentFilterVerificationState;->addFilter(Landroid/content/pm/PackageParser$ActivityIntentInfo;)V
+HSPLcom/android/server/pm/InstructionSets;->getPrimaryInstructionSet(Lcom/android/server/pm/PackageAbiHelper$Abis;)Ljava/lang/String;
+PLcom/android/server/pm/IntentFilterVerificationResponse;-><init>(IILjava/util/List;)V
+PLcom/android/server/pm/IntentFilterVerificationState;-><clinit>()V
+PLcom/android/server/pm/IntentFilterVerificationState;-><init>(IILjava/lang/String;)V
+HPLcom/android/server/pm/IntentFilterVerificationState;->addFilter(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)V
 PLcom/android/server/pm/IntentFilterVerificationState;->getFilters()Ljava/util/ArrayList;
-PLcom/android/server/pm/IntentFilterVerificationState;->getHostsString()Ljava/lang/String;
+HPLcom/android/server/pm/IntentFilterVerificationState;->getHostsString()Ljava/lang/String;
 PLcom/android/server/pm/IntentFilterVerificationState;->getPackageName()Ljava/lang/String;
 PLcom/android/server/pm/IntentFilterVerificationState;->getUserId()I
 PLcom/android/server/pm/IntentFilterVerificationState;->isVerificationComplete()Z
 PLcom/android/server/pm/IntentFilterVerificationState;->isVerified()Z
+PLcom/android/server/pm/IntentFilterVerificationState;->setPendingState()V
 PLcom/android/server/pm/IntentFilterVerificationState;->setState(I)V
 PLcom/android/server/pm/IntentFilterVerificationState;->setVerifierResponse(II)Z
+HSPLcom/android/server/pm/KeySetHandle;-><init>(J)V
+HSPLcom/android/server/pm/KeySetHandle;-><init>(JI)V
 HSPLcom/android/server/pm/KeySetHandle;->decrRefCountLPw()I
 HSPLcom/android/server/pm/KeySetHandle;->getId()J
 HSPLcom/android/server/pm/KeySetHandle;->getRefCountLPr()I
 HSPLcom/android/server/pm/KeySetHandle;->incrRefCountLPw()V
 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$1;)V
+HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;-><init>(Lcom/android/server/pm/KeySetManagerService;JLjava/security/PublicKey;)V
 HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->decrRefCountLPw()J
 HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->getKey()Ljava/security/PublicKey;
 HSPLcom/android/server/pm/KeySetManagerService$PublicKeyHandle;->incrRefCountLPw()V
 HSPLcom/android/server/pm/KeySetManagerService;-><init>(Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/KeySetManagerService;->addDefinedKeySetsToPackageLPw(Lcom/android/server/pm/PackageSetting;Ljava/util/Map;)V
 HSPLcom/android/server/pm/KeySetManagerService;->addKeySetLPw(Landroid/util/ArraySet;)Lcom/android/server/pm/KeySetHandle;
 HSPLcom/android/server/pm/KeySetManagerService;->addPublicKeyLPw(Ljava/security/PublicKey;)J
 HSPLcom/android/server/pm/KeySetManagerService;->addRefCountsFromSavedPackagesLPw(Landroid/util/ArrayMap;)V
-HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/KeySetManagerService;->addScannedPackageLPw(Landroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/KeySetManagerService;->addSigningKeySetToPackageLPw(Lcom/android/server/pm/PackageSetting;Landroid/util/ArraySet;)V
-HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/KeySetManagerService;->assertScannedPackageValid(Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/KeySetManagerService;->clearPackageKeySetDataLPw(Lcom/android/server/pm/PackageSetting;)V
 HSPLcom/android/server/pm/KeySetManagerService;->decrementKeySetLPw(J)V
-PLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
+HSPLcom/android/server/pm/KeySetManagerService;->decrementPublicKeyLPw(J)V
+HPLcom/android/server/pm/KeySetManagerService;->dumpLPr(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/DumpState;)V
 HSPLcom/android/server/pm/KeySetManagerService;->encodePublicKey(Ljava/security/PublicKey;)Ljava/lang/String;
+HSPLcom/android/server/pm/KeySetManagerService;->getFreeKeySetIDLPw()J
+HSPLcom/android/server/pm/KeySetManagerService;->getFreePublicKeyIdLPw()J
 HSPLcom/android/server/pm/KeySetManagerService;->getIdForPublicKeyLPr(Ljava/security/PublicKey;)J
 HSPLcom/android/server/pm/KeySetManagerService;->getIdFromKeyIdsLPr(Ljava/util/Set;)J
 HSPLcom/android/server/pm/KeySetManagerService;->getPublicKeysFromKeySetLPr(J)Landroid/util/ArraySet;
@@ -10434,206 +23486,437 @@
 HSPLcom/android/server/pm/KeySetManagerService;->readKeySetsLPw(Lorg/xmlpull/v1/XmlPullParser;Landroid/util/ArrayMap;)V
 HSPLcom/android/server/pm/KeySetManagerService;->readKeysLPw(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/KeySetManagerService;->readPublicKeyLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/KeySetManagerService;->removeAppKeySetDataLPw(Ljava/lang/String;)V
+HPLcom/android/server/pm/KeySetManagerService;->removeAppKeySetDataLPw(Ljava/lang/String;)V
 HSPLcom/android/server/pm/KeySetManagerService;->shouldCheckUpgradeKeySetLocked(Lcom/android/server/pm/PackageSettingBase;I)Z
 HSPLcom/android/server/pm/KeySetManagerService;->writeKeySetManagerServiceLPr(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/pm/KeySetManagerService;->writeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/pm/KeySetManagerService;->writePublicKeysLPr(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$onShortcutChanged$0$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$BroadcastCookie;-><init>(Landroid/os/UserHandle;Ljava/lang/String;II)V
+HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
+HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Lcom/android/server/pm/LauncherAppsService$1;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->lambda$onShortcutChanged$0$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor(Ljava/lang/String;I)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackagesSuspended([Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onPackagesUnsuspended([Ljava/lang/String;)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
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;->onShortcutChangedInner(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;-><init>(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)V
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;->onCallbackDied(Landroid/os/IInterface;Ljava/lang/Object;)V
 HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->access$100(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->access$200(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->access$300(Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;)Landroid/content/pm/ShortcutServiceInternal;
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->addOnAppsChangedListener(Ljava/lang/String;Landroid/content/pm/IOnAppsChangedListener;)V
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->canAccessProfile(ILjava/lang/String;)Z
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->checkCallbackCount()V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getAppUsageLimit(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/LauncherApps$AppUsageLimit;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getHiddenAppActivityInfo(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ResolveInfo;
-HSPLcom/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;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->ensureShortcutPermission(Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getAllSessions(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getAppUsageLimit(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/LauncherApps$AppUsageLimit;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getApplicationInfo(Ljava/lang/String;Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getCallingUserId()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getHiddenAppActivityInfo(Ljava/lang/String;ILandroid/os/UserHandle;)Landroid/content/pm/ResolveInfo;
+HPLcom/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;->getPackageInstallerService()Lcom/android/server/pm/PackageInstallerService;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutConfigActivities(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcutIconFd(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasApplicationDeclaredActivities(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasComponentsAndRequestsPermissions(Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasShortcutHostPermission(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isManagedProfileAdmin(Landroid/os/UserHandle;Ljava/lang/String;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldShowSyntheticActivity(Landroid/os/UserHandle;Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->getShortcuts(Ljava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;ILandroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasDefaultEnableLauncherActivity(Ljava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->hasShortcutHostPermission(Ljava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingPid()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectBinderCallingUid()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectCallingUserId()I
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectClearCallingIdentity()J
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->injectRestoreCallingIdentity(J)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isActivityEnabled(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isEnabledProfileOf(Landroid/os/UserHandle;Landroid/os/UserHandle;Ljava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isManagedProfileAdmin(Landroid/os/UserHandle;Ljava/lang/String;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->isPackageEnabled(Ljava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->lambda$registerPackageInstallerCallback$0$LauncherAppsService$LauncherAppsImpl(Landroid/os/UserHandle;I)Z
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->pinShortcuts(Ljava/lang/String;Ljava/lang/String;Ljava/util/List;Landroid/os/UserHandle;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->postToPackageMonitorHandler(Ljava/lang/Runnable;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->queryActivitiesForUser(Ljava/lang/String;Landroid/content/Intent;Landroid/os/UserHandle;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->registerPackageInstallerCallback(Ljava/lang/String;Landroid/content/pm/IPackageInstallerCallback;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->requestsPermissions(Landroid/content/pm/parsing/AndroidPackage;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->resolveActivity(Ljava/lang/String;Landroid/content/ComponentName;Landroid/os/UserHandle;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldHideFromSuggestions(Ljava/lang/String;Landroid/os/UserHandle;)Z
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->shouldShowSyntheticActivity(Landroid/os/UserHandle;Landroid/content/pm/ApplicationInfo;)Z
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->showAppDetailsAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
-PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/ComponentName;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startSessionDetailsActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/pm/PackageInstaller$SessionInfo;Landroid/graphics/Rect;Landroid/os/Bundle;Landroid/os/UserHandle;)V
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startShortcut(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;Landroid/os/Bundle;I)Z
 PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startShortcutIntentsAsPublisher([Landroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;I)Z
-HSPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->startWatchingPackageBroadcasts()V
+PLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->stopWatchingPackageBroadcasts()V
+HPLcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;->verifyCallingPackage(Ljava/lang/String;)V
 HSPLcom/android/server/pm/LauncherAppsService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/pm/LauncherAppsService;->onStart()V
 HSPLcom/android/server/pm/ModuleInfoProvider;-><init>(Landroid/content/Context;Landroid/content/pm/IPackageManager;)V
-PLcom/android/server/pm/ModuleInfoProvider;->getInstalledModules(I)Ljava/util/List;
-HSPLcom/android/server/pm/ModuleInfoProvider;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+HPLcom/android/server/pm/ModuleInfoProvider;->getInstalledModules(I)Ljava/util/List;
+HPLcom/android/server/pm/ModuleInfoProvider;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+PLcom/android/server/pm/ModuleInfoProvider;->getPackageName()Ljava/lang/String;
 HSPLcom/android/server/pm/ModuleInfoProvider;->loadModuleMetadata(Landroid/content/res/XmlResourceParser;Landroid/content/res/Resources;)V
 HSPLcom/android/server/pm/ModuleInfoProvider;->systemReady()V
+PLcom/android/server/pm/OtaDexoptService$1;-><init>(Lcom/android/server/pm/OtaDexoptService;Landroid/content/Context;ZLjava/util/List;)V
+HPLcom/android/server/pm/OtaDexoptService$1;->dexopt(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/OtaDexoptService$1;->encodeParameter(Ljava/lang/StringBuilder;Ljava/lang/Object;)V
+PLcom/android/server/pm/OtaDexoptService$OTADexoptPackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;)V
+HSPLcom/android/server/pm/OtaDexoptService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/OtaDexoptService;->cleanup()V
+HPLcom/android/server/pm/OtaDexoptService;->generatePackageDexopts(Landroid/content/pm/parsing/AndroidPackage;I)Ljava/util/List;
+HPLcom/android/server/pm/OtaDexoptService;->getAvailableSpace()J
+HPLcom/android/server/pm/OtaDexoptService;->getMainLowSpaceThreshold()J
+HPLcom/android/server/pm/OtaDexoptService;->getProgress()F
+PLcom/android/server/pm/OtaDexoptService;->inMegabytes(J)I
+HPLcom/android/server/pm/OtaDexoptService;->isDone()Z
+PLcom/android/server/pm/OtaDexoptService;->lambda$prepare$0(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;)I
+HSPLcom/android/server/pm/OtaDexoptService;->main(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/OtaDexoptService;
 HSPLcom/android/server/pm/OtaDexoptService;->moveAbArtifacts(Lcom/android/server/pm/Installer;)V
+HPLcom/android/server/pm/OtaDexoptService;->nextDexoptCommand()Ljava/lang/String;
+HPLcom/android/server/pm/OtaDexoptService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
+PLcom/android/server/pm/OtaDexoptService;->performMetricsLogging()V
+HPLcom/android/server/pm/OtaDexoptService;->prepare()V
+PLcom/android/server/pm/OtaDexoptService;->prepareMetricsLogging(IIJJ)V
+HPLcom/android/server/pm/OtaDexoptShellCommand;-><init>(Lcom/android/server/pm/OtaDexoptService;)V
+HPLcom/android/server/pm/OtaDexoptShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/pm/OtaDexoptShellCommand;->runOtaCleanup()I
+PLcom/android/server/pm/OtaDexoptShellCommand;->runOtaDone()I
+PLcom/android/server/pm/OtaDexoptShellCommand;->runOtaNext()I
+PLcom/android/server/pm/OtaDexoptShellCommand;->runOtaPrepare()I
+PLcom/android/server/pm/OtaDexoptShellCommand;->runOtaProgress()I
+HSPLcom/android/server/pm/PackageAbiHelper$Abis;-><init>(Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageAbiHelper$Abis;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageAbiHelper$Abis;->applyTo(Landroid/content/pm/parsing/ParsedPackage;)V
+HSPLcom/android/server/pm/PackageAbiHelper$Abis;->applyTo(Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;-><init>(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;->applyTo(Landroid/content/pm/parsing/ParsedPackage;)V
+HSPLcom/android/server/pm/PackageAbiHelperImpl;-><init>()V
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->derivePackageAbi(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;Z)Landroid/util/Pair;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->getAdjustedAbiForSharedUser(Ljava/util/Set;Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->getBundledAppAbi(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/PackageAbiHelper$Abis;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->getBundledAppAbis(Landroid/content/pm/parsing/AndroidPackage;)Lcom/android/server/pm/PackageAbiHelper$Abis;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->getNativeLibraryPaths(Landroid/content/pm/parsing/AndroidPackage;Ljava/io/File;)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->getNativeLibraryPaths(Lcom/android/server/pm/PackageAbiHelper$Abis;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;ZZ)Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+HSPLcom/android/server/pm/PackageAbiHelperImpl;->maybeThrowExceptionForMultiArchCopy(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;-><init>(Lcom/android/server/pm/PackageDexOptimizer;)V
+PLcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;->adjustDexoptFlags(I)I
+PLcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;->adjustDexoptNeeded(I)I
 HSPLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptFlags(I)I
-PLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptNeeded(I)I
-PLcom/android/server/pm/PackageDexOptimizer;->createOatDirIfSupported(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;ZLjava/lang/String;Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageDexOptimizer;-><init>(Lcom/android/server/pm/PackageDexOptimizer;)V
+HSPLcom/android/server/pm/PackageDexOptimizer;->acquireWakeLockLI(I)J
+HSPLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptFlags(I)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->adjustDexoptNeeded(I)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->canOptimizePackage(Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/PackageDexOptimizer;->dexOptPath(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZLjava/lang/String;IILcom/android/server/pm/CompilerStats$PackageStats;ZLjava/lang/String;Ljava/lang/String;I)I
 PLcom/android/server/pm/PackageDexOptimizer;->dexOptSecondaryDexPath(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
 PLcom/android/server/pm/PackageDexOptimizer;->dexOptSecondaryDexPathLI(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
-PLcom/android/server/pm/PackageDexOptimizer;->getAugmentedReasonName(IZ)Ljava/lang/String;
+HPLcom/android/server/pm/PackageDexOptimizer;->dumpDexoptState(Lcom/android/internal/util/IndentingPrintWriter;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
+HSPLcom/android/server/pm/PackageDexOptimizer;->getAugmentedReasonName(IZ)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(IILandroid/util/SparseArray;ZLjava/lang/String;Lcom/android/server/pm/dex/DexoptOptions;)I
 PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->getDexFlags(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;Lcom/android/server/pm/dex/DexoptOptions;)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->getDexoptNeeded(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ZZ)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->getOatDir(Ljava/io/File;)Ljava/io/File;
+HSPLcom/android/server/pm/PackageDexOptimizer;->getPackageOatDirIfSupported(Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
 PLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;Z)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->isProfileUpdated(Landroid/content/pm/PackageParser$Package;ILjava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/SharedLibraryInfo;[Ljava/lang/String;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/PackageParser$Package;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageDexOptimizer;->printDexoptFlags(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V
+HSPLcom/android/server/pm/PackageDexOptimizer;->getRealCompilerFilter(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;Z)Ljava/lang/String;
+HPLcom/android/server/pm/PackageDexOptimizer;->isAppImageEnabled()Z
+HPLcom/android/server/pm/PackageDexOptimizer;->isProfileUpdated(Landroid/content/pm/parsing/AndroidPackage;ILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageDexOptimizer;->performDexOpt(Landroid/content/pm/parsing/AndroidPackage;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->performDexOptLI(Landroid/content/pm/parsing/AndroidPackage;[Ljava/lang/String;Lcom/android/server/pm/CompilerStats$PackageStats;Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/DexoptOptions;)I
+HSPLcom/android/server/pm/PackageDexOptimizer;->printDexoptFlags(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageDexOptimizer;->releaseWakeLockLI(J)V
 HSPLcom/android/server/pm/PackageDexOptimizer;->systemReady()V
 HSPLcom/android/server/pm/PackageInstallerService$1;-><init>()V
 HSPLcom/android/server/pm/PackageInstallerService$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerService$2;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
 PLcom/android/server/pm/PackageInstallerService$2;->run()V
+HSPLcom/android/server/pm/PackageInstallerService$Callbacks;-><init>(Landroid/os/Looper;)V
 PLcom/android/server/pm/PackageInstallerService$Callbacks;->access$200(Lcom/android/server/pm/PackageInstallerService$Callbacks;II)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->access$500(Lcom/android/server/pm/PackageInstallerService$Callbacks;II)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->access$700(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIZ)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->access$800(Lcom/android/server/pm/PackageInstallerService$Callbacks;IIF)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->invokeCallback(Landroid/content/pm/IPackageInstallerCallback;Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionActiveChanged(IIZ)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionBadgingChanged(II)V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionCreated(II)V
 PLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionFinished(IIZ)V
+HPLcom/android/server/pm/PackageInstallerService$Callbacks;->notifySessionProgressChanged(IIF)V
 HSPLcom/android/server/pm/PackageInstallerService$Callbacks;->register(Landroid/content/pm/IPackageInstallerCallback;Ljava/util/function/IntPredicate;)V
-PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V
+PLcom/android/server/pm/PackageInstallerService$Callbacks;->unregister(Landroid/content/pm/IPackageInstallerCallback;)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback$1;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Lcom/android/server/pm/PackageInstallerSession;Z)V
+HPLcom/android/server/pm/PackageInstallerService$InternalCallback$1;->run()V
+HSPLcom/android/server/pm/PackageInstallerService$InternalCallback;-><init>(Lcom/android/server/pm/PackageInstallerService;)V
 PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionActiveChanged(Lcom/android/server/pm/PackageInstallerSession;Z)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionBadgingChanged(Lcom/android/server/pm/PackageInstallerSession;)V
 PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionFinished(Lcom/android/server/pm/PackageInstallerSession;Z)V
 PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionPrepared(Lcom/android/server/pm/PackageInstallerSession;)V
 PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionProgressChanged(Lcom/android/server/pm/PackageInstallerSession;F)V
 PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onSessionSealedBlocking(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerService$InternalCallback;->onStagedSessionChanged(Lcom/android/server/pm/PackageInstallerSession;)V
 PLcom/android/server/pm/PackageInstallerService$PackageDeleteObserverAdapter;-><init>(Landroid/content/Context;Landroid/content/IntentSender;Ljava/lang/String;ZI)V
 PLcom/android/server/pm/PackageInstallerService$PackageDeleteObserverAdapter;->onPackageDeleted(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/pm/PackageInstallerService$PackageInstallObserverAdapter;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/PackageInstallerService;-><clinit>()V
+HSPLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;)V
 HSPLcom/android/server/pm/PackageInstallerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/ApexManager;)V
 PLcom/android/server/pm/PackageInstallerService;->abandonSession(I)V
-HSPLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerService;->access$000(Lcom/android/server/pm/PackageInstallerService;)Landroid/util/SparseArray;
+HPLcom/android/server/pm/PackageInstallerService;->access$100(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService;->access$1000(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageManagerService;
+PLcom/android/server/pm/PackageInstallerService;->access$1100(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/StagingManager;
+PLcom/android/server/pm/PackageInstallerService;->access$1200(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerService;->access$1300(Lcom/android/server/pm/PackageInstallerService;I)Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerService;->access$1400(Lcom/android/server/pm/PackageInstallerService;)Landroid/os/Handler;
+PLcom/android/server/pm/PackageInstallerService;->access$400(Lcom/android/server/pm/PackageInstallerService;)Lcom/android/server/pm/PackageInstallerService$Callbacks;
+PLcom/android/server/pm/PackageInstallerService;->access$600(Lcom/android/server/pm/PackageInstallerService;)V
+PLcom/android/server/pm/PackageInstallerService;->access$900(Lcom/android/server/pm/PackageInstallerService;)Z
+HPLcom/android/server/pm/PackageInstallerService;->addHistoricalSessionLocked(Lcom/android/server/pm/PackageInstallerSession;)V
 PLcom/android/server/pm/PackageInstallerService;->allocateSessionIdLocked()I
+HSPLcom/android/server/pm/PackageInstallerService;->buildAppIconFile(I)Ljava/io/File;
 PLcom/android/server/pm/PackageInstallerService;->buildSessionDir(ILandroid/content/pm/PackageInstaller$SessionParams;)Ljava/io/File;
-PLcom/android/server/pm/PackageInstallerService;->buildTmpSessionDir(ILjava/lang/String;)Ljava/io/File;
+HPLcom/android/server/pm/PackageInstallerService;->buildTmpSessionDir(ILjava/lang/String;)Ljava/io/File;
 PLcom/android/server/pm/PackageInstallerService;->createSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageInstallerService;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageInstallerService;->getSessionCount(Landroid/util/SparseArray;I)I
-HSPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerService;->createSessionInternal(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageInstallerService;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/pm/PackageInstallerService;->getAllSessions(I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageInstallerService;->getMySessions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/PackageInstallerService;->getSession(I)Lcom/android/server/pm/PackageInstallerSession;
+HPLcom/android/server/pm/PackageInstallerService;->getSessionCount(Landroid/util/SparseArray;I)I
+HPLcom/android/server/pm/PackageInstallerService;->getSessionInfo(I)Landroid/content/pm/PackageInstaller$SessionInfo;
 PLcom/android/server/pm/PackageInstallerService;->getStagedSessions()Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/PackageInstallerService;->getTmpSessionDir(Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerService;->installExistingPackage(Ljava/lang/String;IILandroid/content/IntentSender;ILjava/util/List;)V
+PLcom/android/server/pm/PackageInstallerService;->isCallingUidOwner(Lcom/android/server/pm/PackageInstallerSession;)Z
 HSPLcom/android/server/pm/PackageInstallerService;->isStageName(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageInstallerService;->lambda$registerCallback$0(II)Z
+HSPLcom/android/server/pm/PackageInstallerService;->newArraySet([Ljava/lang/Object;)Landroid/util/ArraySet;
 PLcom/android/server/pm/PackageInstallerService;->okToSendBroadcasts()Z
 PLcom/android/server/pm/PackageInstallerService;->openSession(I)Landroid/content/pm/IPackageInstallerSession;
 PLcom/android/server/pm/PackageInstallerService;->openSessionInternal(I)Landroid/content/pm/IPackageInstallerSession;
-PLcom/android/server/pm/PackageInstallerService;->prepareStageDir(Ljava/io/File;)V
+HPLcom/android/server/pm/PackageInstallerService;->prepareStageDir(Ljava/io/File;)V
 HSPLcom/android/server/pm/PackageInstallerService;->readSessionsLocked()V
 HSPLcom/android/server/pm/PackageInstallerService;->reconcileStagesLocked(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;I)V
 HSPLcom/android/server/pm/PackageInstallerService;->registerCallback(Landroid/content/pm/IPackageInstallerCallback;Ljava/util/function/IntPredicate;)V
 HSPLcom/android/server/pm/PackageInstallerService;->restoreAndApplyStagedSessionIfNeeded()V
+HPLcom/android/server/pm/PackageInstallerService;->sendOnPackageInstalled(Landroid/content/Context;Landroid/content/IntentSender;IZILjava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerService;->sendOnUserActionRequired(Landroid/content/Context;Landroid/content/IntentSender;ILandroid/content/Intent;)V
+PLcom/android/server/pm/PackageInstallerService;->setPermissionsResult(IZ)V
 HSPLcom/android/server/pm/PackageInstallerService;->systemReady()V
-PLcom/android/server/pm/PackageInstallerService;->uninstall(Landroid/content/pm/VersionedPackage;Ljava/lang/String;ILandroid/content/IntentSender;I)V
+HPLcom/android/server/pm/PackageInstallerService;->uninstall(Landroid/content/pm/VersionedPackage;Ljava/lang/String;ILandroid/content/IntentSender;I)V
+PLcom/android/server/pm/PackageInstallerService;->unregisterCallback(Landroid/content/pm/IPackageInstallerCallback;)V
+PLcom/android/server/pm/PackageInstallerService;->updateSessionAppIcon(ILandroid/graphics/Bitmap;)V
+HPLcom/android/server/pm/PackageInstallerService;->updateSessionAppLabel(ILjava/lang/String;)V
 PLcom/android/server/pm/PackageInstallerService;->writeSessionsAsync()V
 HSPLcom/android/server/pm/PackageInstallerService;->writeSessionsLocked()V
 HSPLcom/android/server/pm/PackageInstallerSession$1;-><init>()V
 HSPLcom/android/server/pm/PackageInstallerSession$1;->accept(Ljava/io/File;)Z
 HSPLcom/android/server/pm/PackageInstallerSession$2;-><init>()V
-HSPLcom/android/server/pm/PackageInstallerSession$2;->accept(Ljava/io/File;)Z
+PLcom/android/server/pm/PackageInstallerSession$2;->accept(Ljava/io/File;)Z
+HSPLcom/android/server/pm/PackageInstallerSession$3;-><init>()V
 HSPLcom/android/server/pm/PackageInstallerSession$3;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+HPLcom/android/server/pm/PackageInstallerSession$3;->accept(Ljava/io/File;)Z
 PLcom/android/server/pm/PackageInstallerSession$3;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/pm/PackageInstallerSession$4;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+HPLcom/android/server/pm/PackageInstallerSession$4;->handleMessage(Landroid/os/Message;)Z
 PLcom/android/server/pm/PackageInstallerSession$4;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSessionProvider;Landroid/os/Looper;Lcom/android/server/pm/StagingManager;IILjava/lang/String;ILandroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;ZZZ[IIZZZILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession$5;-><init>(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession$5;->onPackageInstalled(Ljava/lang/String;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver$1;-><init>(Lcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/util/SparseIntArray;Landroid/content/IntentSender;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;-><init>(Lcom/android/server/pm/PackageInstallerSession;Landroid/util/SparseIntArray;Landroid/content/IntentSender;Lcom/android/server/pm/PackageInstallerSession$1;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;->lambda$statusUpdate$0$PackageInstallerSession$ChildStatusIntentReceiver(Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;->statusUpdate(Landroid/content/Intent;)V
+HSPLcom/android/server/pm/PackageInstallerSession;-><clinit>()V
+HPLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSessionProvider;Landroid/os/Looper;Lcom/android/server/pm/StagingManager;IIILcom/android/server/pm/InstallSource;Landroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;ZZZ[IIZZZILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageInstallerSession;-><init>(Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSessionProvider;Landroid/os/Looper;Lcom/android/server/pm/StagingManager;IIILcom/android/server/pm/InstallSource;Landroid/content/pm/PackageInstaller$SessionParams;JLjava/io/File;Ljava/lang/String;[Lcom/android/server/pm/PackageInstallerSession$FileInfo;ZZZ[IIZZZILjava/lang/String;)V
 PLcom/android/server/pm/PackageInstallerSession;->abandon()V
+PLcom/android/server/pm/PackageInstallerSession;->access$000(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$000(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/IntentSender;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$100(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$200(Lcom/android/server/pm/PackageInstallerSession;)Landroid/content/Context;
+PLcom/android/server/pm/PackageInstallerSession;->access$200(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$300(Lcom/android/server/pm/PackageInstallerSession;)Landroid/content/Context;
+PLcom/android/server/pm/PackageInstallerSession;->access$300(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/PackageInstallerSession;->access$400(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/PackageInstallerSession;->access$600(Lcom/android/server/pm/PackageInstallerSession;)Landroid/os/Handler;
+PLcom/android/server/pm/PackageInstallerSession;->access$700(Lcom/android/server/pm/PackageInstallerSession;)Landroid/os/Handler;
+PLcom/android/server/pm/PackageInstallerSession;->access$700(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$800(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$800(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession;->access$900(Lcom/android/server/pm/PackageInstallerSession;ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession;->addChildSessionId(I)V
+PLcom/android/server/pm/PackageInstallerSession;->addChildSessionIdInternal(I)V
 PLcom/android/server/pm/PackageInstallerSession;->addClientProgress(F)V
-HSPLcom/android/server/pm/PackageInstallerSession;->assertApkConsistentLocked(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V
-PLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->assertApkConsistentLocked(Ljava/lang/String;Landroid/content/pm/PackageParser$ApkLite;)V
+HPLcom/android/server/pm/PackageInstallerSession;->assertCallerIsOwnerOrRootLocked()V
+HPLcom/android/server/pm/PackageInstallerSession;->assertCanBeCommitted(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->assertCanWrite(Z)V
+HSPLcom/android/server/pm/PackageInstallerSession;->assertConsistencyWithLocked(Lcom/android/server/pm/PackageInstallerSession;)V
+HSPLcom/android/server/pm/PackageInstallerSession;->assertMultiPackageConsistencyLocked(Ljava/util/List;)V
 HSPLcom/android/server/pm/PackageInstallerSession;->assertNoWriteFileTransfersOpenLocked()V
 PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotCommittedOrDestroyedLocked(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotDestroyedLocked(Ljava/lang/String;)V
 PLcom/android/server/pm/PackageInstallerSession;->assertPreparedAndNotSealedLocked(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->assertShellOrSystemCalling(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageInstallerSession;->buildAppIconFile(ILjava/io/File;)Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerSession;->cleanStageDir()V
 PLcom/android/server/pm/PackageInstallerSession;->close()V
 PLcom/android/server/pm/PackageInstallerSession;->closeInternal(Z)V
 PLcom/android/server/pm/PackageInstallerSession;->commit(Landroid/content/IntentSender;Z)V
 PLcom/android/server/pm/PackageInstallerSession;->commitNonStagedLocked(Ljava/util/List;)V
-PLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V
-HSPLcom/android/server/pm/PackageInstallerSession;->destroyInternal()V
-PLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V
-PLcom/android/server/pm/PackageInstallerSession;->doWriteInternal(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)Landroid/os/ParcelFileDescriptor;
-HSPLcom/android/server/pm/PackageInstallerSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-HSPLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/pm/PackageInstallerSession;->computeProgressLocked(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->createOatDirs(Ljava/util/List;Ljava/io/File;)V
+HPLcom/android/server/pm/PackageInstallerSession;->destroyInternal()V
+HPLcom/android/server/pm/PackageInstallerSession;->dispatchSessionFinished(ILjava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageInstallerSession;->dispatchStreamAndValidate()V
+PLcom/android/server/pm/PackageInstallerSession;->dispatchStreamValidateAndCommit()V
+HPLcom/android/server/pm/PackageInstallerSession;->doWriteInternal(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageInstallerSession;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/pm/PackageInstallerSession;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/pm/PackageInstallerSession;->extractNativeLibraries(Ljava/io/File;Ljava/lang/String;Z)V
+HPLcom/android/server/pm/PackageInstallerSession;->filterFiles(Ljava/io/File;[Ljava/lang/String;Ljava/io/FileFilter;)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PackageInstallerSession;->filterFiles(Ljava/io/File;[Ljava/lang/String;Ljava/io/FileFilter;)[Ljava/io/File;
 PLcom/android/server/pm/PackageInstallerSession;->generateInfo()Landroid/content/pm/PackageInstaller$SessionInfo;
-PLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo;
+HPLcom/android/server/pm/PackageInstallerSession;->generateInfo(Z)Landroid/content/pm/PackageInstaller$SessionInfo;
+PLcom/android/server/pm/PackageInstallerSession;->getAddedApksLocked()Ljava/util/List;
+HSPLcom/android/server/pm/PackageInstallerSession;->getAddedApksLocked()[Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerSession;->getAddedFilesLocked()[Ljava/io/File;
 HSPLcom/android/server/pm/PackageInstallerSession;->getChildSessionIds()[I
-HSPLcom/android/server/pm/PackageInstallerSession;->getInstallerUid()I
+HSPLcom/android/server/pm/PackageInstallerSession;->getChildSessions()Ljava/util/List;
+PLcom/android/server/pm/PackageInstallerSession;->getInstallSource()Lcom/android/server/pm/InstallSource;
+PLcom/android/server/pm/PackageInstallerSession;->getInstallerPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageInstallerSession;->getInstallerUid()I
 PLcom/android/server/pm/PackageInstallerSession;->getNames()[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageInstallerSession;->getNamesLocked()[Ljava/lang/String;
+HPLcom/android/server/pm/PackageInstallerSession;->getPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageInstallerSession;->getParentSessionId()I
+PLcom/android/server/pm/PackageInstallerSession;->getRelativePath(Ljava/io/File;Ljava/io/File;)Ljava/lang/String;
+PLcom/android/server/pm/PackageInstallerSession;->getRemovedFilesLocked()Ljava/util/List;
+PLcom/android/server/pm/PackageInstallerSession;->getRemovedFilesLocked()[Ljava/io/File;
+HSPLcom/android/server/pm/PackageInstallerSession;->getUpdatedMillis()J
 PLcom/android/server/pm/PackageInstallerSession;->handleCommit()V
+PLcom/android/server/pm/PackageInstallerSession;->handleInstall()V
+PLcom/android/server/pm/PackageInstallerSession;->handleSeal(Landroid/content/IntentSender;)V
+PLcom/android/server/pm/PackageInstallerSession;->handleStreamAndValidate()V
+PLcom/android/server/pm/PackageInstallerSession;->handleStreamValidateAndCommit()V
 HSPLcom/android/server/pm/PackageInstallerSession;->hasParentSessionId()Z
+PLcom/android/server/pm/PackageInstallerSession;->installNonStagedLocked(Ljava/util/List;)V
+HSPLcom/android/server/pm/PackageInstallerSession;->isApexInstallation()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->isCommitted()Z
-PLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerOrAffiliatedProfileOwnerLocked()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isDataLoaderInstallation()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isIncrementalInstallation()Z
+HPLcom/android/server/pm/PackageInstallerSession;->isInstallerDeviceOwnerOrAffiliatedProfileOwnerLocked()Z
+PLcom/android/server/pm/PackageInstallerSession;->isLinkPossible(Ljava/util/List;Ljava/io/File;)Z
 HSPLcom/android/server/pm/PackageInstallerSession;->isMultiPackage()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->isPrepared()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->isSealed()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->isStaged()Z
-PLcom/android/server/pm/PackageInstallerSession;->makeSessionActiveLocked()Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;
-PLcom/android/server/pm/PackageInstallerSession;->markAsCommitted(Landroid/content/IntentSender;Z)Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isStagedAndInTerminalState()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isStagedSessionApplied()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isStagedSessionFailed()Z
+PLcom/android/server/pm/PackageInstallerSession;->isStagedSessionReady()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isStagedSessionStateValid(ZZZ)Z
+HSPLcom/android/server/pm/PackageInstallerSession;->isStreamingInstallation()Z
+PLcom/android/server/pm/PackageInstallerSession;->lambda$doWriteInternal$0$PackageInstallerSession(Landroid/system/Int64Ref;J)V
+HPLcom/android/server/pm/PackageInstallerSession;->lambda$doWriteInternal$5$PackageInstallerSession(Landroid/system/Int64Ref;J)V
+PLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$0(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$1(Ljava/io/FileFilter;Ljava/io/File;)Z
+PLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$2(I)[Ljava/io/File;
+HSPLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$2(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+HSPLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$3(Ljava/io/FileFilter;Ljava/io/File;)Z
+HSPLcom/android/server/pm/PackageInstallerSession;->lambda$filterFiles$4(I)[Ljava/io/File;
+PLcom/android/server/pm/PackageInstallerSession;->lambda$readFromXml$10(I)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageInstallerSession;->lambda$readFromXml$11(Ljava/lang/Integer;)I
+PLcom/android/server/pm/PackageInstallerSession;->linkFiles(Ljava/util/List;Ljava/io/File;Ljava/io/File;)V
+HPLcom/android/server/pm/PackageInstallerSession;->makeSessionActiveLocked()Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;
+PLcom/android/server/pm/PackageInstallerSession;->markAsCommitted()Z
+PLcom/android/server/pm/PackageInstallerSession;->markAsCommitted(Landroid/content/IntentSender;)Z
+PLcom/android/server/pm/PackageInstallerSession;->markAsSealed(Landroid/content/IntentSender;)Z
+PLcom/android/server/pm/PackageInstallerSession;->markAsSealed(Landroid/content/IntentSender;Z)Z
+PLcom/android/server/pm/PackageInstallerSession;->markUpdated()V
+PLcom/android/server/pm/PackageInstallerSession;->mayInheritNativeLibs()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->maybeRenameFile(Ljava/io/File;Ljava/io/File;)V
-PLcom/android/server/pm/PackageInstallerSession;->needToAskForPermissionsLocked()Z
+HPLcom/android/server/pm/PackageInstallerSession;->needToAskForPermissionsLocked()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->onAfterSessionRead()V
 PLcom/android/server/pm/PackageInstallerSession;->open()V
 PLcom/android/server/pm/PackageInstallerSession;->openWrite(Ljava/lang/String;JJ)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/pm/PackageInstallerSession;->prepareDataLoader()V
+PLcom/android/server/pm/PackageInstallerSession;->prepareDataLoaderLocked()Z
 HSPLcom/android/server/pm/PackageInstallerSession;->readFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageInstallerService$InternalCallback;Landroid/content/Context;Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;Lcom/android/server/pm/StagingManager;Ljava/io/File;Lcom/android/server/pm/PackageSessionProvider;)Lcom/android/server/pm/PackageInstallerSession;
 HSPLcom/android/server/pm/PackageInstallerSession;->resolveAndStageFile(Ljava/io/File;Ljava/io/File;)V
-HSPLcom/android/server/pm/PackageInstallerSession;->resolveStageDirLocked()Ljava/io/File;
-HSPLcom/android/server/pm/PackageInstallerSession;->sealAndValidateLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->resolveInheritedFile(Ljava/io/File;)V
+HSPLcom/android/server/pm/PackageInstallerSession;->sealAndValidateIfNecessary()V
+HSPLcom/android/server/pm/PackageInstallerSession;->sealAndValidateLocked(Ljava/util/List;)V
+PLcom/android/server/pm/PackageInstallerSession;->sealIfNecessary()V
+HSPLcom/android/server/pm/PackageInstallerSession;->sealLocked(Ljava/util/List;)V
 PLcom/android/server/pm/PackageInstallerSession;->setClientProgress(F)V
-HSPLcom/android/server/pm/PackageInstallerSession;->validateApkInstallLocked(Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/pm/PackageInstallerSession;->setClientProgressLocked(F)V
+PLcom/android/server/pm/PackageInstallerSession;->setParentSessionId(I)V
+PLcom/android/server/pm/PackageInstallerSession;->setPermissionsResult(Z)V
+PLcom/android/server/pm/PackageInstallerSession;->setStagedSessionApplied()V
+PLcom/android/server/pm/PackageInstallerSession;->setStagedSessionFailed(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageInstallerSession;->setStagedSessionReady()V
+HSPLcom/android/server/pm/PackageInstallerSession;->streamAndValidateLocked()V
+PLcom/android/server/pm/PackageInstallerSession;->streamAndValidateLocked()Z
+PLcom/android/server/pm/PackageInstallerSession;->streamValidateAndCommit()Z
+HSPLcom/android/server/pm/PackageInstallerSession;->validateApexInstallLocked()V
+HPLcom/android/server/pm/PackageInstallerSession;->validateApkInstallLocked(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/PackageInstallerSession;->write(Ljava/lang/String;JJLandroid/os/ParcelFileDescriptor;)V
 HSPLcom/android/server/pm/PackageInstallerSession;->write(Lorg/xmlpull/v1/XmlSerializer;Ljava/io/File;)V
+HSPLcom/android/server/pm/PackageInstallerSession;->writeGrantedRuntimePermissionsLocked(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageInstallerSession;->writeWhitelistedRestrictedPermissionsLocked(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
 HSPLcom/android/server/pm/PackageKeySetData;-><init>()V
-HSPLcom/android/server/pm/PackageKeySetData;->addDefinedKeySet(JLjava/lang/String;)V
-HSPLcom/android/server/pm/PackageKeySetData;->addUpgradeKeySetById(J)V
 HSPLcom/android/server/pm/PackageKeySetData;->getAliases()Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/PackageKeySetData;->getProperSigningKeySet()J
-HSPLcom/android/server/pm/PackageKeySetData;->getUpgradeKeySets()[J
-PLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z
+HPLcom/android/server/pm/PackageKeySetData;->isUsingDefinedKeySets()Z
 HSPLcom/android/server/pm/PackageKeySetData;->isUsingUpgradeKeySets()Z
 HSPLcom/android/server/pm/PackageKeySetData;->removeAllDefinedKeySets()V
 HSPLcom/android/server/pm/PackageKeySetData;->removeAllUpgradeKeySets()V
+HSPLcom/android/server/pm/PackageKeySetData;->setAliases(Ljava/util/Map;)V
 HSPLcom/android/server/pm/PackageKeySetData;->setProperSigningKeySet(J)V
+HSPLcom/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/PackageList;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageList;->onPackageChanged(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageList;->onPackageRemoved(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerException;-><init>(ILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerException;-><init>(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageManagerService$1;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$1;->onPermissionGranted(II)V
-HSPLcom/android/server/pm/PackageManagerService$1;->onPermissionRevoked(II)V
-HSPLcom/android/server/pm/PackageManagerService$1;->onPermissionUpdated([IZ)V
-HSPLcom/android/server/pm/PackageManagerService$2;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$2;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
-HSPLcom/android/server/pm/PackageManagerService$3;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-PLcom/android/server/pm/PackageManagerService$3;->onDefaultRuntimePermissionsGranted(I)V
-PLcom/android/server/pm/PackageManagerService$4;->onPermissionChanged()V
-HSPLcom/android/server/pm/PackageManagerService$6;->onChange(Z)V
-PLcom/android/server/pm/PackageManagerService$8;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getInstallerPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/pm/PackageManagerService$2;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;)V
+HPLcom/android/server/pm/PackageManagerService$2;->writeElement(Landroid/content/IntentFilter;Landroid/os/Parcel;I)V
+HPLcom/android/server/pm/PackageManagerService$2;->writeElement(Ljava/lang/Object;Landroid/os/Parcel;I)V
+PLcom/android/server/pm/PackageManagerService$3;-><init>(Lcom/android/server/pm/PackageManagerService;ZLjava/lang/String;ILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService$3;->run()V
+HSPLcom/android/server/pm/PackageManagerService$4;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Handler;Landroid/content/ContentResolver;)V
+HSPLcom/android/server/pm/PackageManagerService$4;->onChange(Z)V
+HSPLcom/android/server/pm/PackageManagerService$5;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$6;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+PLcom/android/server/pm/PackageManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/pm/PackageManagerService$7;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/PackageManagerService$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;-><init>(Ljava/lang/String;Ljava/io/File;Landroid/content/pm/IPackageInstallObserver2;Landroid/content/pm/PackageInstaller$SessionParams;ILcom/android/server/pm/InstallSource;Landroid/os/UserHandle;Landroid/content/pm/PackageParser$SigningDetails;)V
+PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getInstallSource()Lcom/android/server/pm/InstallSource;
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getInstallerUid()I
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getObserver()Landroid/content/pm/IPackageInstallObserver2;
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getSessionParams()Landroid/content/pm/PackageInstaller$SessionParams;
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getSigningDetails()Landroid/content/pm/PackageParser$SigningDetails;
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getStagedDir()Ljava/io/File;
 PLcom/android/server/pm/PackageManagerService$ActiveInstallSession;->getUser()Landroid/os/UserHandle;
+PLcom/android/server/pm/PackageManagerService$CommitRequest;-><init>(Ljava/util/Map;[I)V
+PLcom/android/server/pm/PackageManagerService$CommitRequest;-><init>(Ljava/util/Map;[ILcom/android/server/pm/PackageManagerService$1;)V
+PLcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;-><init>()V
+PLcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;-><init>(Lcom/android/server/pm/PackageManagerService$1;)V
+PLcom/android/server/pm/PackageManagerService$DeletePackageAction;-><init>(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ILandroid/os/UserHandle;)V
+PLcom/android/server/pm/PackageManagerService$DeletePackageAction;-><init>(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ILandroid/os/UserHandle;Lcom/android/server/pm/PackageManagerService$1;)V
 PLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)V
 HSPLcom/android/server/pm/PackageManagerService$FileInstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageManagerService$FileInstallArgs;->cleanUp()Z
@@ -10643,258 +23926,496 @@
 PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostDeleteLI(Z)Z
 PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPostInstall(II)I
 PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doPreInstall(I)I
-PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/PackageParser$Package;)Z
+HPLcom/android/server/pm/PackageManagerService$FileInstallArgs;->doRename(ILandroid/content/pm/parsing/ParsedPackage;)Z
 PLcom/android/server/pm/PackageManagerService$FileInstallArgs;->getCodePath()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$HandlerParams;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/PackageManagerService$HandlerParams;->getRollbackUser()Landroid/os/UserHandle;
 PLcom/android/server/pm/PackageManagerService$HandlerParams;->getUser()Landroid/os/UserHandle;
-HSPLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/String;ILandroid/content/pm/PackageParser$SigningDetails;ILcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;)V
+PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceCookie(I)Lcom/android/server/pm/PackageManagerService$HandlerParams;
+PLcom/android/server/pm/PackageManagerService$HandlerParams;->setTraceMethod(Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$HandlerParams;
+PLcom/android/server/pm/PackageManagerService$HandlerParams;->startCopy()V
+PLcom/android/server/pm/PackageManagerService$IFVerificationParams;-><init>(Ljava/lang/String;ZLjava/util/List;ZII)V
+HSPLcom/android/server/pm/PackageManagerService$Injector$LocalServicesProducer;-><init>(Ljava/lang/Class;)V
+HSPLcom/android/server/pm/PackageManagerService$Injector$LocalServicesProducer;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$Injector$Singleton;-><init>(Lcom/android/server/pm/PackageManagerService$Injector$Producer;)V
+HSPLcom/android/server/pm/PackageManagerService$Injector$Singleton;->get(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$Injector$SystemServiceProducer;-><init>(Ljava/lang/Class;)V
+HSPLcom/android/server/pm/PackageManagerService$Injector$SystemServiceProducer;->produce(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$Injector;-><init>(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/pm/Installer;Ljava/lang/Object;Lcom/android/server/pm/PackageAbiHelper;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;Lcom/android/server/pm/PackageManagerService$Injector$Producer;)V
+HSPLcom/android/server/pm/PackageManagerService$Injector;->bootstrap(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getAbiHelper()Lcom/android/server/pm/PackageAbiHelper;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getActivityTaskManagerInternal()Lcom/android/server/wm/ActivityTaskManagerInternal;
+PLcom/android/server/pm/PackageManagerService$Injector;->getAppOpsManager()Landroid/app/AppOpsManager;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getAppsFilter()Lcom/android/server/pm/AppsFilter;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getCompatibility()Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getComponentResolver()Lcom/android/server/pm/ComponentResolver;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getContext()Landroid/content/Context;
+PLcom/android/server/pm/PackageManagerService$Injector;->getDeviceStorageMonitorInternal()Lcom/android/server/storage/DeviceStorageMonitorInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getDisplayManager()Landroid/hardware/display/DisplayManager;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getInstallLock()Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getInstaller()Lcom/android/server/pm/Installer;
+PLcom/android/server/pm/PackageManagerService$Injector;->getLocalDeviceIdleController()Lcom/android/server/DeviceIdleInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getLock()Ljava/lang/Object;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getPermissionManagerServiceInternal()Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getPermissionPolicyInternal()Lcom/android/server/policy/PermissionPolicyInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getSettings()Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getStorageManager()Landroid/os/storage/StorageManager;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getStorageManagerInternal()Landroid/os/storage/StorageManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getUserManagerInternal()Landroid/os/UserManagerInternal;
+HSPLcom/android/server/pm/PackageManagerService$Injector;->getUserManagerService()Lcom/android/server/pm/UserManagerService;
+PLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;)V
+HSPLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILcom/android/server/pm/InstallSource;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ILandroid/content/pm/PackageParser$SigningDetails;ILcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;)V
+HSPLcom/android/server/pm/PackageManagerService$InstallArgs;-><init>(Lcom/android/server/pm/PackageManagerService$OriginInfo;Lcom/android/server/pm/PackageManagerService$MoveInfo;Landroid/content/pm/IPackageInstallObserver2;ILcom/android/server/pm/InstallSource;Ljava/lang/String;Landroid/os/UserHandle;[Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/util/List;Ljava/lang/String;ILandroid/content/pm/PackageParser$SigningDetails;IZLcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;)V
 PLcom/android/server/pm/PackageManagerService$InstallArgs;->getUser()Landroid/os/UserHandle;
 PLcom/android/server/pm/PackageManagerService$InstallParams$1;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;I)V
 PLcom/android/server/pm/PackageManagerService$InstallParams$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageManagerService$InstallParams$2;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;I)V
+HPLcom/android/server/pm/PackageManagerService$InstallParams$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/PackageManagerService$InstallParams$3;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;I)V
+HPLcom/android/server/pm/PackageManagerService$InstallParams$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 PLcom/android/server/pm/PackageManagerService$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;)V
+PLcom/android/server/pm/PackageManagerService$InstallParams;->access$800(Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
+PLcom/android/server/pm/PackageManagerService$InstallParams;->handleIntegrityVerificationFinished()V
 PLcom/android/server/pm/PackageManagerService$InstallParams;->handleReturnCode()V
+PLcom/android/server/pm/PackageManagerService$InstallParams;->handleRollbackEnabled()V
 PLcom/android/server/pm/PackageManagerService$InstallParams;->handleStartCopy()V
 PLcom/android/server/pm/PackageManagerService$InstallParams;->handleVerificationFinished()V
 PLcom/android/server/pm/PackageManagerService$InstallParams;->installLocationPolicy(Landroid/content/pm/PackageInfoLite;)I
+PLcom/android/server/pm/PackageManagerService$InstallParams;->populateInstallerExtras(Landroid/content/Intent;)V
+HPLcom/android/server/pm/PackageManagerService$InstallParams;->sendIntegrityVerificationRequest(ILandroid/content/pm/PackageInfoLite;Lcom/android/server/pm/PackageVerificationState;)V
+HPLcom/android/server/pm/PackageManagerService$InstallParams;->sendPackageVerificationRequest(ILandroid/content/pm/PackageInfoLite;Lcom/android/server/pm/PackageVerificationState;)I
 PLcom/android/server/pm/PackageManagerService$InstallParams;->setReturnCode(I)V
+PLcom/android/server/pm/PackageManagerService$InstallRequest;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
+PLcom/android/server/pm/PackageManagerService$InstallRequest;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$1;)V
 HSPLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/content/Context;Landroid/content/ComponentName;)V
 PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->addOneIntentFilterVerification(IIILandroid/content/IntentFilter;Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->addOneIntentFilterVerification(IIILandroid/content/pm/PackageParser$ActivityIntentInfo;Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->addOneIntentFilterVerification(IIILandroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;Ljava/lang/String;)Z
 PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->createDomainVerificationState(IIILjava/lang/String;)Lcom/android/server/pm/IntentFilterVerificationState;
+PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->getDefaultScheme()Ljava/lang/String;
 PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->receiveVerificationResponse(I)V
 PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->sendVerificationRequest(ILcom/android/server/pm/IntentFilterVerificationState;)V
-PLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->startVerifications(I)V
+HPLcom/android/server/pm/PackageManagerService$IntentVerifierProxy;->startVerifications(I)V
 HSPLcom/android/server/pm/PackageManagerService$MoveCallbacks;-><init>(Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageManagerService$MoveCallbacks;->register(Landroid/content/pm/IPackageMoveObserver;)V
-HSPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V
-HSPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;->handleOnPermissionsChanged(I)V
-HSPLcom/android/server/pm/PackageManagerService$PackageFreezer;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageFreezer;->close()V
-HSPLcom/android/server/pm/PackageManagerService$PackageFreezer;->finalize()V
+PLcom/android/server/pm/PackageManagerService$MoveCallbacks;->register(Landroid/content/pm/IPackageMoveObserver;)V
+PLcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;Ljava/util/List;)V
+PLcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;->handleReturnCode()V
+PLcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;->handleStartCopy()V
+PLcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;->tryProcessInstallRequest(Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V
+HSPLcom/android/server/pm/PackageManagerService$OriginInfo;-><init>(Ljava/io/File;ZZ)V
+HSPLcom/android/server/pm/PackageManagerService$OriginInfo;->fromNothing()Lcom/android/server/pm/PackageManagerService$OriginInfo;
+PLcom/android/server/pm/PackageManagerService$OriginInfo;->fromStagedFile(Ljava/io/File;)Lcom/android/server/pm/PackageManagerService$OriginInfo;
+PLcom/android/server/pm/PackageManagerService$PackageFreezer;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HPLcom/android/server/pm/PackageManagerService$PackageFreezer;-><init>(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService$PackageFreezer;->close()V
+HPLcom/android/server/pm/PackageManagerService$PackageFreezer;->finalize()V
 HSPLcom/android/server/pm/PackageManagerService$PackageHandler;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/os/Looper;)V
-PLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageManagerService$PackageHandler;->doHandleMessage(Landroid/os/Message;)V
+HPLcom/android/server/pm/PackageManagerService$PackageHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;-><init>()V
+PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setError(ILjava/lang/String;)V
 PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setReturnCode(I)V
+PLcom/android/server/pm/PackageManagerService$PackageInstalledInfo;->setReturnMessage(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$1;)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->addIsolatedUid(II)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->areDefaultRuntimePermissionsGranted(I)Z
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessComponent(ILandroid/content/ComponentName;I)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->filterAppAccess(Landroid/content/pm/PackageParser$Package;II)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->canAccessInstantApps(II)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->filterAppAccess(Landroid/content/pm/parsing/AndroidPackage;II)Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->filterAppAccess(Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->filterOnlySystemPackages([Ljava/lang/String;)[Ljava/lang/String;
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->finishPackageInstall(IZ)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->forEachInstalledPackage(Ljava/util/function/Consumer;I)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->forEachPackage(Ljava/util/function/Consumer;)V
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->freeStorage(Ljava/lang/String;JI)V
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getActivityInfo(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApksInApex(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationEnabledState(Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationInfo(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getAppsWithSharedUserIds()Landroid/util/SparseArray;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getApplicationInfo(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getCeDataInode(Ljava/lang/String;I)J
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDefaultHomeActivity(I)Landroid/content/ComponentName;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledSystemPackage(Ljava/lang/String;)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledSystemPackage(Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDisabledSystemPackageName(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDistractingPackageRestrictions(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getDistractingPackageRestrictions(Ljava/lang/String;I)I
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getEnabledComponents(Ljava/lang/String;I)Landroid/util/ArraySet;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getInstalledApplications(III)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getInstantAppPackageName(I)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getKnownPackageName(II)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getNameForUid(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getKnownPackageNames(II)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getKnownPackageNamesInternal(II)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getNameForUid(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getOverlayPackages(I)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackage(Ljava/lang/String;)Landroid/content/pm/PackageParser$Package;
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageList(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)Landroid/content/pm/PackageList;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackage(I)Landroid/content/pm/parsing/AndroidPackage;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackage(Ljava/lang/String;)Landroid/content/pm/parsing/AndroidPackage;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageInfo(Ljava/lang/String;III)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageList(Landroid/content/pm/PackageManagerInternal$PackageListObserver;)Lcom/android/server/pm/PackageList;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageSetting(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageSetting(Ljava/lang/String;)Ljava/lang/Object;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageTargetSdkVersion(Ljava/lang/String;)I
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageUid(Ljava/lang/String;II)I
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackageUidInternal(Ljava/lang/String;II)I
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getPackagesForSharedUserId(Ljava/lang/String;I)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getProcessesForUid(I)Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSetupWizardPackageName()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSharedUserIdForPackage(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSharedUserPackagesForPackage(Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSigningDetails(I)Landroid/content/pm/PackageParser$SigningDetails;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSigningDetails(Ljava/lang/String;)Landroid/content/pm/PackageParser$SigningDetails;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendedDialogInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/SuspendDialogInfo;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendedPackageLauncherExtras(Ljava/lang/String;I)Landroid/os/Bundle;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSuspendingPackage(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getSystemUiServiceComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getTargetPackageNames(I)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->getUidTargetSdkVersion(I)I
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantEphemeralAccess(ILandroid/content/Intent;II)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->grantImplicitAccess(ILandroid/content/Intent;II)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasInstantApplicationMetadata(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->hasSignatureCapability(III)Z
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isEnabledAndMatches(Landroid/content/pm/ComponentInfo;II)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isApexPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isCallerInstallerOfRecord(Landroid/content/pm/parsing/AndroidPackage;I)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isDataRestoreSafe(Landroid/content/pm/Signature;Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isDataRestoreSafe([BLjava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isEnabledAndMatches(Landroid/content/pm/parsing/ComponentParseUtils$ParsedComponent;II)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isInstantApp(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isInstantAppInstallerComponent(Landroid/content/ComponentName;)Z
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isOnlyCoreApps()Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isInstantAppInstallerComponent(Landroid/content/ComponentName;)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isOnlyCoreApps()Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageDataProtected(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageEphemeral(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackagePersistent(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageStateProtected(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPackageSuspended(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPermissionsReviewRequired(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isPlatformSigned(Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isResolveActivityComponent(Landroid/content/pm/ComponentInfo;)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->isResolveActivityComponent(Landroid/content/pm/ComponentInfo;)Z
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->migrateLegacyObbData()V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->notifyPackageUse(Ljava/lang/String;I)V
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->pruneInstantApps()V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;III)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;III)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->removeIsolatedUid(I)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->removeLegacyDefaultBrowserPackageName(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->resolveService(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDefaultBrowserProvider(Landroid/content/pm/PackageManagerInternal$DefaultBrowserProvider;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDefaultHomeProvider(Landroid/content/pm/PackageManagerInternal$DefaultHomeProvider;)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setDeviceOwnerProtectedPackages(Ljava/util/List;)V
+PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnableRollbackCode(II)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setEnabledOverlayPackages(ILjava/lang/String;Ljava/util/List;Ljava/util/Collection;)Z
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setExternalSourcesPolicy(Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setLocationExtraPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setSyncAdapterPackagesprovider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setUseOpenWifiAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
+HPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setIntegrityVerificationResult(II)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setKeepUninstalledPackages(Ljava/util/List;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->setRuntimePermissionsFingerPrint(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->userNeedsBadging(I)Z
 PLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->wasPackageEverLaunched(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->writePermissionSettings([IZ)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerInternalImpl;->writeSettings(Z)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;-><init>(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$1;)V
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getInstallerForPackage(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getLocationFlags(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getModuleMetadataPackageName()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getNamesForUids([I)[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getVersionCodeForPackage(Ljava/lang/String;)J
-HSPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->isAudioPlaybackCaptureAllowed([Ljava/lang/String;)[Z
+HPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getTargetSdkVersionForPackage(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerService$PackageManagerNative;->getVersionCodeForPackage(Ljava/lang/String;)J
+HPLcom/android/server/pm/PackageManagerService$PackageManagerNative;->isAudioPlaybackCaptureAllowed([Ljava/lang/String;)[Z
 HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayApks(Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPackages(Ljava/util/Collection;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->getStaticOverlayPaths(Ljava/util/List;Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService$PackageParserCallback;->hasFeature(Ljava/lang/String;)Z
 PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;-><init>(Lcom/android/server/pm/PackageSender;)V
-PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->populateUsers([ILcom/android/server/pm/PackageSetting;)V
-HSPLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcastInternal(Z)V
+HPLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->populateUsers([ILcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcastInternal(Z)V
 PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendPackageRemovedBroadcasts(Z)V
-HSPLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendSystemPackageAppearedBroadcasts()V
-HSPLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendSystemPackageUpdatedBroadcasts()V
-HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;-><init>(Lcom/android/server/pm/PackageManagerService;)V
-HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->findStaticOverlayPackages()V
-HSPLcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;->getStaticOverlayPaths(Ljava/lang/String;Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendSystemPackageAppearedBroadcasts()V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendSystemPackageUpdatedBroadcasts()V
+PLcom/android/server/pm/PackageManagerService$PackageRemovedInfo;->sendSystemPackageUpdatedBroadcastsInternal()V
 HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;-><init>()V
-PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->clear()V
-HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->get(ILjava/lang/String;)Ljava/util/ArrayList;
-PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->packagesForUserId(I)Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->put(ILjava/lang/String;Ljava/util/ArrayList;)V
-HSPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->remove(ILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->size()I
-PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdAt(I)I
-PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdCount()I
-PLcom/android/server/pm/PackageManagerService$PrepareResult;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;ZIILandroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;ZZLjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageFreezer;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;[Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageManagerService$PrepareResult;-><init>(ILjava/lang/String;Ljava/lang/String;Landroid/os/UserHandle;ZIILandroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;ZZLjava/lang/String;Lcom/android/server/pm/PackageManagerService$PackageFreezer;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;[Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$1;)V
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->clear()V
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->get(ILjava/lang/String;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->getOrAllocate(I)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->packagesForUserId(I)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->put(ILjava/lang/String;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->remove(I)V
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->remove(ILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->size()I
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdAt(I)I
+HPLcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;->userIdCount()I
+PLcom/android/server/pm/PackageManagerService$PostInstallData;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Ljava/lang/Runnable;)V
+PLcom/android/server/pm/PackageManagerService$PrepareFailure;-><init>(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService$PrepareFailure;->conflictsWithExistingPermission(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$PrepareFailure;
+PLcom/android/server/pm/PackageManagerService$PrepareResult;-><init>(ZIILandroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/ParsedPackage;ZZLcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService$PrepareResult;-><init>(ZIILandroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/ParsedPackage;ZZLcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$1;)V
+HSPLcom/android/server/pm/PackageManagerService$ReconcileRequest;-><init>(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
 HSPLcom/android/server/pm/PackageManagerService$ReconcileRequest;-><init>(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/PackageManagerService$1;)V
 HSPLcom/android/server/pm/PackageManagerService$ReconcileRequest;-><init>(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)V
-HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;-><init>(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$PrepareResult;Lcom/android/server/pm/PackageManagerService$ScanResult;Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Ljava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZLcom/android/server/pm/PackageManagerService$1;)V
-HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;->hasDynamicSharedLibraries()Z
-HSPLcom/android/server/pm/PackageManagerService$ScanRequest;-><init>(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/SharedUserSetting;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;)V
+PLcom/android/server/pm/PackageManagerService$ReconcileRequest;-><init>(Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;Lcom/android/server/pm/PackageManagerService$1;)V
+HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;-><init>(Lcom/android/server/pm/PackageManagerService$ReconcileRequest;Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$PrepareResult;Lcom/android/server/pm/PackageManagerService$ScanResult;Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Ljava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZ)V
+HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;-><init>(Lcom/android/server/pm/PackageManagerService$ReconcileRequest;Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$PrepareResult;Lcom/android/server/pm/PackageManagerService$ScanResult;Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Ljava/util/List;Landroid/content/pm/PackageParser$SigningDetails;ZZLcom/android/server/pm/PackageManagerService$1;)V
+HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;->access$2000(Lcom/android/server/pm/PackageManagerService$ReconciledPackage;)Ljava/util/Map;
+HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;->access$2100(Lcom/android/server/pm/PackageManagerService$ReconciledPackage;)Ljava/util/Map;
+HSPLcom/android/server/pm/PackageManagerService$ReconciledPackage;->getCombinedAvailablePackages()Ljava/util/Map;
+HSPLcom/android/server/pm/PackageManagerService$ScanRequest;-><init>(Landroid/content/pm/parsing/ParsedPackage;Lcom/android/server/pm/SharedUserSetting;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Ljava/lang/String;IIZLandroid/os/UserHandle;)V
 HSPLcom/android/server/pm/PackageManagerService$ScanResult;-><init>(Lcom/android/server/pm/PackageManagerService$ScanRequest;ZLcom/android/server/pm/PackageSetting;Ljava/util/List;ZLandroid/content/pm/SharedLibraryInfo;Ljava/util/List;)V
-HSPLcom/android/server/pm/PackageManagerService;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/pm/PackageManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)V
-PLcom/android/server/pm/PackageManagerService;->access$000(Lcom/android/server/pm/PackageManagerService;)J
-PLcom/android/server/pm/PackageManagerService;->access$100(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/DeviceIdleController$LocalService;
-PLcom/android/server/pm/PackageManagerService;->access$2300()Z
-PLcom/android/server/pm/PackageManagerService;->access$2700(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
-PLcom/android/server/pm/PackageManagerService;->access$2800(Lcom/android/server/pm/PackageManagerService;III)Z
-PLcom/android/server/pm/PackageManagerService;->access$2900(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService$SystemPartition;-><init>(Ljava/io/File;IZ)V
+HSPLcom/android/server/pm/PackageManagerService$SystemPartition;-><init>(Ljava/io/File;IZLcom/android/server/pm/PackageManagerService$1;)V
+PLcom/android/server/pm/PackageManagerService$SystemPartition;->containsPath(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService$SystemPartition;->containsPrivPath(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService$SystemPartition;->shouldScanPrivApps(I)Z
+HSPLcom/android/server/pm/PackageManagerService$SystemPartition;->toCanonical(Ljava/io/File;)Ljava/io/File;
+PLcom/android/server/pm/PackageManagerService$VerificationInfo;-><init>(Landroid/net/Uri;Landroid/net/Uri;II)V
+HSPLcom/android/server/pm/PackageManagerService;-><clinit>()V
+HSPLcom/android/server/pm/PackageManagerService;-><init>(Lcom/android/server/pm/PackageManagerService$Injector;ZZ)V
+PLcom/android/server/pm/PackageManagerService;->access$100(Lcom/android/server/pm/PackageManagerService;)J
+PLcom/android/server/pm/PackageManagerService;->access$1000(Lcom/android/server/pm/PackageManagerService;ILandroid/net/Uri;ILandroid/os/UserHandle;)V
+PLcom/android/server/pm/PackageManagerService;->access$1100(Lcom/android/server/pm/PackageManagerService;IIZLjava/lang/String;ZLjava/util/List;)V
+PLcom/android/server/pm/PackageManagerService;->access$1200(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$IntentFilterVerifier;
+PLcom/android/server/pm/PackageManagerService;->access$1200(Lcom/android/server/pm/PackageManagerService;IIZLjava/lang/String;ZLjava/util/List;)V
+PLcom/android/server/pm/PackageManagerService;->access$1300(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$IntentFilterVerifier;
+PLcom/android/server/pm/PackageManagerService;->access$200(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/PackageManagerService$Injector;
+PLcom/android/server/pm/PackageManagerService;->access$2300(Lcom/android/server/pm/PackageManagerService;I)Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;
+PLcom/android/server/pm/PackageManagerService;->access$2400(Lcom/android/server/pm/PackageManagerService;ZLjava/util/List;)V
+PLcom/android/server/pm/PackageManagerService;->access$2500()Z
+PLcom/android/server/pm/PackageManagerService;->access$2600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)I
+PLcom/android/server/pm/PackageManagerService;->access$2700(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/PackageInfoLite;)V
+PLcom/android/server/pm/PackageManagerService;->access$2800(Landroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/PackageManagerService;->access$2800(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
+PLcom/android/server/pm/PackageManagerService;->access$2900(Lcom/android/server/pm/PackageManagerService;III)Z
+PLcom/android/server/pm/PackageManagerService;->access$2900(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
+PLcom/android/server/pm/PackageManagerService;->access$300(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Z
+PLcom/android/server/pm/PackageManagerService;->access$3000(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
 PLcom/android/server/pm/PackageManagerService;->access$3008(Lcom/android/server/pm/PackageManagerService;)I
-PLcom/android/server/pm/PackageManagerService;->access$3100(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->access$3200(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->access$3108(Lcom/android/server/pm/PackageManagerService;)I
+PLcom/android/server/pm/PackageManagerService;->access$3200(Lcom/android/server/pm/PackageManagerService;)Z
+PLcom/android/server/pm/PackageManagerService;->access$3200(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$3300(Lcom/android/server/pm/PackageManagerService;III)Z
+PLcom/android/server/pm/PackageManagerService;->access$3300(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->access$3400(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$3500(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$3600(Lcom/android/server/pm/PackageManagerService;Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/PackageManagerService;->access$3600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->access$3700(Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
+PLcom/android/server/pm/PackageManagerService;->access$3700(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V
+PLcom/android/server/pm/PackageManagerService;->access$3800(Lcom/android/server/pm/PackageManagerService;Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+HSPLcom/android/server/pm/PackageManagerService;->access$3900(Lcom/android/server/pm/PackageManagerService;)Landroid/os/incremental/IncrementalManager;
+HPLcom/android/server/pm/PackageManagerService;->access$400(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZLjava/util/ArrayList;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->access$4400()[I
+PLcom/android/server/pm/PackageManagerService;->access$4700(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$4800(Lcom/android/server/pm/PackageManagerService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/pm/PackageManagerService;->access$4800(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/InstantAppRegistry;
+PLcom/android/server/pm/PackageManagerService;->access$500(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;Ljava/util/List;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
+HSPLcom/android/server/pm/PackageManagerService;->access$5000(Lcom/android/server/pm/PackageManagerService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/pm/PackageManagerService;->access$5100(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->access$5600(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
+PLcom/android/server/pm/PackageManagerService;->access$5700(Lcom/android/server/pm/PackageManagerService;III)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$5800(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ModuleInfoProvider;
+HSPLcom/android/server/pm/PackageManagerService;->access$5800(Lcom/android/server/pm/PackageManagerService;I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$5900(Lcom/android/server/pm/PackageManagerService;III)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->access$5900(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Z
+PLcom/android/server/pm/PackageManagerService;->access$600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->access$6000(Lcom/android/server/pm/PackageManagerService;I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$6000(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;J)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$6100(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerService;->access$6100(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$6200(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/PackageManagerService;->access$6200(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;J)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$6300(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerService;->access$6400(Lcom/android/server/pm/PackageManagerService;[Ljava/lang/String;)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$6500(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+PLcom/android/server/pm/PackageManagerService;->access$6500(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;JIII)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$6600(Lcom/android/server/pm/PackageManagerService;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->access$6600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$6602(Lcom/android/server/pm/PackageManagerService;Ljava/util/List;)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$6700(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/pm/PackageManagerService;->access$6800(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->access$6800(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;JIII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$6900(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)I
+HPLcom/android/server/pm/PackageManagerService;->access$6900(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$700(Lcom/android/server/pm/PackageManagerService;)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerService;->access$7000(Lcom/android/server/pm/PackageManagerService;I)Landroid/content/ComponentName;
+HPLcom/android/server/pm/PackageManagerService;->access$7000(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$7000(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$7100(Lcom/android/server/pm/PackageManagerService;I)Z
+HPLcom/android/server/pm/PackageManagerService;->access$7100(Lcom/android/server/pm/PackageManagerService;Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$7100(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->access$7200(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$7300(Lcom/android/server/pm/PackageManagerService;I)Landroid/content/ComponentName;
+HSPLcom/android/server/pm/PackageManagerService;->access$7300(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$7400(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilter;
+PLcom/android/server/pm/PackageManagerService;->access$7400(Lcom/android/server/pm/PackageManagerService;I)Landroid/content/ComponentName;
+HSPLcom/android/server/pm/PackageManagerService;->access$7400(Lcom/android/server/pm/PackageManagerService;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$7500(Lcom/android/server/pm/PackageManagerService;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$7600(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$7600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$7700(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilter;
+PLcom/android/server/pm/PackageManagerService;->access$7700(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$7700(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$7800(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilter;
+HSPLcom/android/server/pm/PackageManagerService;->access$7800(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$7900(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$7900(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+PLcom/android/server/pm/PackageManagerService;->access$8000(Lcom/android/server/pm/PackageManagerService;I)I
+HPLcom/android/server/pm/PackageManagerService;->access$8000(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8000(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;II)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8000(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8100(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8100(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/SharedLibraryInfo;II)Ljava/util/List;
+PLcom/android/server/pm/PackageManagerService;->access$8100(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;)I
+HSPLcom/android/server/pm/PackageManagerService;->access$8100(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$8200(Lcom/android/server/pm/PackageManagerService;II)Z
+HPLcom/android/server/pm/PackageManagerService;->access$8200(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8200(Lcom/android/server/pm/PackageManagerService;Landroid/content/pm/SharedLibraryInfo;II)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->access$8200(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8300(Lcom/android/server/pm/PackageManagerService;I)I
+HSPLcom/android/server/pm/PackageManagerService;->access$8300(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HPLcom/android/server/pm/PackageManagerService;->access$8300(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8400(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8400(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;)I
+HSPLcom/android/server/pm/PackageManagerService;->access$8400(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->access$8400(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8500(Lcom/android/server/pm/PackageManagerService;I)I
+HPLcom/android/server/pm/PackageManagerService;->access$8500(Lcom/android/server/pm/PackageManagerService;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$8500(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/pm/PackageManagerService;->access$8600(Lcom/android/server/pm/PackageManagerService;I)I
+HPLcom/android/server/pm/PackageManagerService;->access$8600(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;)I
+HPLcom/android/server/pm/PackageManagerService;->access$8700(Lcom/android/server/pm/PackageManagerService;II)Z
+HPLcom/android/server/pm/PackageManagerService;->access$8700(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;)I
+HSPLcom/android/server/pm/PackageManagerService;->access$8700(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->access$8700(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->access$8800(Lcom/android/server/pm/PackageManagerService;II)Z
+PLcom/android/server/pm/PackageManagerService;->access$8800(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z
+PLcom/android/server/pm/PackageManagerService;->access$8900(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->access$8900(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->access$8900(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->access$900(Lcom/android/server/pm/PackageManagerService;Landroid/os/UserHandle;)I
+HSPLcom/android/server/pm/PackageManagerService;->access$9000(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->access$9100(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->access$9200(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->access$9300(Lcom/android/server/pm/PackageManagerService;II)V
+PLcom/android/server/pm/PackageManagerService;->access$9400(Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ApexManager;
+PLcom/android/server/pm/PackageManagerService;->activitySupportsIntent(Landroid/content/ComponentName;Landroid/content/Intent;Ljava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService;->addBuiltInSharedLibraryLocked(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;Ljava/lang/String;III)V
-HSPLcom/android/server/pm/PackageManagerService;->addForInitLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
-HSPLcom/android/server/pm/PackageManagerService;->addOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
+HPLcom/android/server/pm/PackageManagerService;->addCrossProfileIntentFilter(Landroid/content/IntentFilter;Ljava/lang/String;III)V
+HSPLcom/android/server/pm/PackageManagerService;->addForInitLI(Landroid/content/pm/parsing/ParsedPackage;IIJLandroid/os/UserHandle;)Landroid/content/pm/parsing/AndroidPackage;
 HSPLcom/android/server/pm/PackageManagerService;->addPackageHoldingPermissions(Ljava/util/ArrayList;Lcom/android/server/pm/PackageSetting;[Ljava/lang/String;[ZII)V
-PLcom/android/server/pm/PackageManagerService;->addPermissionAsync(Landroid/content/pm/PermissionInfo;)Z
 PLcom/android/server/pm/PackageManagerService;->addPreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
-HSPLcom/android/server/pm/PackageManagerService;->addPreferredActivityInternal(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;ZILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/content/pm/PackageParser$Package;Ljava/util/Set;Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/PackageParser$Package;)V
+PLcom/android/server/pm/PackageManagerService;->addPreferredActivityInternal(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;ZILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->addSharedLibraryLPr(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Set;Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageManagerService;->addSharedLibraryToPackageVersionMap(Ljava/util/Map;Landroid/content/pm/SharedLibraryInfo;)Z
-HSPLcom/android/server/pm/PackageManagerService;->adjustCpuAbisForSharedUserLPw(Ljava/util/Set;Landroid/content/pm/PackageParser$Package;)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->adjustScanFlags(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;Landroid/content/pm/PackageParser$Package;)I
+HSPLcom/android/server/pm/PackageManagerService;->adjustScanFlags(ILcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;Landroid/content/pm/parsing/AndroidPackage;)I
+PLcom/android/server/pm/PackageManagerService;->allHavePackage(Ljava/util/List;Ljava/lang/String;)Z
 PLcom/android/server/pm/PackageManagerService;->apkHasCode(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/PackageManagerService;->applyDefiningSharedLibraryUpdateLocked(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/SharedLibraryInfo;Ljava/util/function/BiConsumer;)V
-HSPLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/PackageParser$Package;IILandroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/PackageManagerService;->applyPostContentProviderResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->applyAdjustedAbiToSharedUser(Lcom/android/server/pm/SharedUserSetting;Landroid/content/pm/parsing/ParsedPackage;Ljava/lang/String;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->applyDefiningSharedLibraryUpdateLocked(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/SharedLibraryInfo;Ljava/util/function/BiConsumer;)V
+HSPLcom/android/server/pm/PackageManagerService;->applyPolicy(Landroid/content/pm/parsing/ParsedPackage;IILandroid/content/pm/parsing/AndroidPackage;)V
+HPLcom/android/server/pm/PackageManagerService;->applyPostContentProviderResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->applyPostResolutionFilter(Ljava/util/List;Ljava/lang/String;ZIZILandroid/content/Intent;)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->applyPostServiceResolutionFilter(Ljava/util/List;Ljava/lang/String;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->arrayToString([I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->assertCodePolicy(Landroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/PackageParser$Package;II)V
+HPLcom/android/server/pm/PackageManagerService;->areWebInstantAppsDisabled(I)Z
+HPLcom/android/server/pm/PackageManagerService;->arrayToString([I)Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->assertCodePolicy(Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageManagerService;->assertPackageIsValid(Landroid/content/pm/parsing/AndroidPackage;II)V
 HSPLcom/android/server/pm/PackageManagerService;->assertPackageKnownAndInstalled(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->bestDomainVerificationStatus(II)I
 PLcom/android/server/pm/PackageManagerService;->broadcastPackageVerified(ILandroid/net/Uri;ILandroid/os/UserHandle;)V
-HSPLcom/android/server/pm/PackageManagerService;->calculateBundledApkRoot(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/pm/PackageManagerService;->canForwardTo(Landroid/content/Intent;Ljava/lang/String;II)Z
+PLcom/android/server/pm/PackageManagerService;->canRequestPackageInstalls(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->canRequestPackageInstallsInternal(Ljava/lang/String;IIZ)Z
 HSPLcom/android/server/pm/PackageManagerService;->canSkipForcedApkVerification(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/PackageManagerService;->canSkipForcedPackageVerification(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->canSuspendPackageForUserInternal([Ljava/lang/String;I)[Z
+HSPLcom/android/server/pm/PackageManagerService;->canSkipForcedPackageVerification(Landroid/content/pm/parsing/AndroidPackage;)Z
+HPLcom/android/server/pm/PackageManagerService;->canSuspendPackageForUserInternal([Ljava/lang/String;I)[Z
 HSPLcom/android/server/pm/PackageManagerService;->canViewInstantApps(II)Z
 HSPLcom/android/server/pm/PackageManagerService;->canonicalToCurrentPackageNames([Ljava/lang/String;)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->checkDowngrade(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageInfoLite;)V
+HPLcom/android/server/pm/PackageManagerService;->checkDowngrade(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/PackageInfoLite;)V
 PLcom/android/server/pm/PackageManagerService;->checkPackageFrozen(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageManagerService;->checkPackageStartable(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
 HSPLcom/android/server/pm/PackageManagerService;->checkSignatures(Ljava/lang/String;Ljava/lang/String;)I
 HSPLcom/android/server/pm/PackageManagerService;->checkUidPermission(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/PackageManagerService;->checkUidPermissionImpl(Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageManagerService;->checkUidSignatures(II)I
+HPLcom/android/server/pm/PackageManagerService;->checkUidSignatures(II)I
 HSPLcom/android/server/pm/PackageManagerService;->chooseBestActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;I)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/PackageManagerService;->cleanPackageDataStructuresLILPw(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/PackageManagerService;->clearAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->clearAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->clearAppProfilesLIF(Landroid/content/pm/PackageParser$Package;I)V
-PLcom/android/server/pm/PackageManagerService;->clearCrossProfileIntentFilters(ILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->cleanPackageDataStructuresLILPw(Landroid/content/pm/parsing/AndroidPackage;Z)V
+PLcom/android/server/pm/PackageManagerService;->cleanUpUser(Lcom/android/server/pm/UserManagerService;I)V
+HPLcom/android/server/pm/PackageManagerService;->clearAppDataLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HPLcom/android/server/pm/PackageManagerService;->clearAppDataLeafLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HSPLcom/android/server/pm/PackageManagerService;->clearAppProfilesLIF(Landroid/content/pm/parsing/AndroidPackage;I)V
+PLcom/android/server/pm/PackageManagerService;->clearApplicationUserData(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;I)V
+PLcom/android/server/pm/PackageManagerService;->clearApplicationUserDataLIF(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/PackageManagerService;->clearCrossProfileIntentFilters(ILjava/lang/String;)V
 PLcom/android/server/pm/PackageManagerService;->clearDefaultBrowserIfNeeded(Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->clearDefaultBrowserIfNeededForUser(Ljava/lang/String;I)V
 PLcom/android/server/pm/PackageManagerService;->clearIntentFilterVerificationsLPw(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->clearPackagePreferredActivitiesLPw(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->clearPackagePreferredActivitiesLPw(Ljava/lang/String;ZI)Z
-HSPLcom/android/server/pm/PackageManagerService;->clearPackageStateForUserLIF(Lcom/android/server/pm/PackageSetting;ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;I)V
+HPLcom/android/server/pm/PackageManagerService;->clearPackagePreferredActivitiesLPw(Ljava/lang/String;Landroid/util/SparseBooleanArray;I)V
+PLcom/android/server/pm/PackageManagerService;->clearPackageStateForUserLIF(Lcom/android/server/pm/PackageSetting;ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;I)V
 HSPLcom/android/server/pm/PackageManagerService;->collectAbsoluteCodePaths()Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;ZZ)V
-HSPLcom/android/server/pm/PackageManagerService;->collectSharedLibraryInfos(Landroid/content/pm/PackageParser$Package;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/PackageManagerService;->collectCertificatesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/parsing/ParsedPackage;ZZ)V
+HSPLcom/android/server/pm/PackageManagerService;->collectSharedLibraryInfos(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
 HSPLcom/android/server/pm/PackageManagerService;->collectSharedLibraryInfos(Ljava/util/List;[J[[Ljava/lang/String;Ljava/lang/String;ZILjava/util/ArrayList;Ljava/util/Map;Ljava/util/Map;Ljava/util/Map;)Ljava/util/ArrayList;
-HSPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;IZLcom/android/server/pm/PackageManagerService$ReconciledPackage;)V
-PLcom/android/server/pm/PackageManagerService;->commitPackagesLocked(Lcom/android/server/pm/PackageManagerService$CommitRequest;)V
-HSPLcom/android/server/pm/PackageManagerService;->commitReconciledScanResultLocked(Lcom/android/server/pm/PackageManagerService$ReconciledPackage;)V
+HSPLcom/android/server/pm/PackageManagerService;->commitPackageSettings(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageSetting;IZLcom/android/server/pm/PackageManagerService$ReconciledPackage;)V
+HPLcom/android/server/pm/PackageManagerService;->commitPackagesLocked(Lcom/android/server/pm/PackageManagerService$CommitRequest;)V
+HSPLcom/android/server/pm/PackageManagerService;->commitReconciledScanResultLocked(Lcom/android/server/pm/PackageManagerService$ReconciledPackage;)Landroid/content/pm/parsing/AndroidPackage;
 HSPLcom/android/server/pm/PackageManagerService;->commitSharedLibraryInfoLocked(Landroid/content/pm/SharedLibraryInfo;)V
+HSPLcom/android/server/pm/PackageManagerService;->configurePackageComponents(Landroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageManagerService;->createForwardingResolveInfo(Lcom/android/server/pm/CrossProfileIntentFilter;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->createForwardingResolveInfoUnchecked(Landroid/content/IntentFilter;II)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService;->createInstallArgs(Lcom/android/server/pm/PackageManagerService$InstallParams;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
 HSPLcom/android/server/pm/PackageManagerService;->createInstallArgsForExisting(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$InstallArgs;
-PLcom/android/server/pm/PackageManagerService;->currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->decompressSystemApplications(Ljava/util/List;I)V
-PLcom/android/server/pm/PackageManagerService;->deleteInstalledPackageLIF(Lcom/android/server/pm/PackageSetting;ZI[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/PackageManagerService;->deletePackageLIF(Ljava/lang/String;Landroid/os/UserHandle;Z[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/PackageParser$Package;)Z
-HSPLcom/android/server/pm/PackageManagerService;->deletePackageVersioned(Landroid/content/pm/VersionedPackage;Landroid/content/pm/IPackageDeleteObserver2;II)V
-HSPLcom/android/server/pm/PackageManagerService;->deletePackageX(Ljava/lang/String;JII)I
+PLcom/android/server/pm/PackageManagerService;->createNewUser(ILjava/util/Set;[Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->createPackageInstalledInfo(I)Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;
+HPLcom/android/server/pm/PackageManagerService;->currentToCanonicalPackageNames([Ljava/lang/String;)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->decompressPackage(Ljava/lang/String;Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/PackageManagerService;->deleteApplicationCacheFiles(Ljava/lang/String;Landroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService;->deleteApplicationCacheFilesAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService;->deleteInstalledPackageLIF(Lcom/android/server/pm/PackageSetting;ZI[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;Z)V
+HPLcom/android/server/pm/PackageManagerService;->deleteOatArtifactsOfPackage(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->deletePackageAsUser(Ljava/lang/String;ILandroid/content/pm/IPackageDeleteObserver;II)V
+PLcom/android/server/pm/PackageManagerService;->deletePackageLIF(Ljava/lang/String;Landroid/os/UserHandle;Z[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;ZLandroid/content/pm/parsing/ParsedPackage;)Z
+HPLcom/android/server/pm/PackageManagerService;->deletePackageVersioned(Landroid/content/pm/VersionedPackage;Landroid/content/pm/IPackageDeleteObserver2;II)V
+HPLcom/android/server/pm/PackageManagerService;->deletePackageX(Ljava/lang/String;JII)I
+PLcom/android/server/pm/PackageManagerService;->deleteSystemPackageLIF(Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Lcom/android/server/pm/PackageSetting;[IILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;Z)V
 HSPLcom/android/server/pm/PackageManagerService;->deleteTempPackageFiles()V
-HSPLcom/android/server/pm/PackageManagerService;->deriveCodePathName(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->derivePackageAbi(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Z)V
-HSPLcom/android/server/pm/PackageManagerService;->destroyAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->destroyAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->destroyAppProfilesLIF(Landroid/content/pm/PackageParser$Package;I)V
-HSPLcom/android/server/pm/PackageManagerService;->destroyAppProfilesLeafLIF(Landroid/content/pm/PackageParser$Package;)V
+PLcom/android/server/pm/PackageManagerService;->destroyAppDataLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HPLcom/android/server/pm/PackageManagerService;->destroyAppDataLeafLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+PLcom/android/server/pm/PackageManagerService;->destroyAppProfilesLIF(Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/PackageManagerService;->destroyAppProfilesLeafLIF(Landroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageManagerService;->disableSkuSpecificApps()V
-PLcom/android/server/pm/PackageManagerService;->disableSystemPackageLPw(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Z
-HSPLcom/android/server/pm/PackageManagerService;->doSendBroadcast(Landroid/app/IActivityManager;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[IZ)V
-PLcom/android/server/pm/PackageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->dumpCompilerStatsLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->dumpDexoptStateLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->dumpDomainString(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->dumpFeaturesProto(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/pm/PackageManagerService;->disableSystemPackageLPw(Landroid/content/pm/parsing/AndroidPackage;)Z
+HPLcom/android/server/pm/PackageManagerService;->doSendBroadcast(Landroid/app/IActivityManager;Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[IZ)V
+HSPLcom/android/server/pm/PackageManagerService;->dropNonSystemPackages([Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpCompilerStatsLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpDexoptStateLPr(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpDomainString(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->dumpFeaturesProto(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/pm/PackageManagerService;->dumpProto(Ljava/io/FileDescriptor;)V
-PLcom/android/server/pm/PackageManagerService;->dumpSharedLibrariesProto(Landroid/util/proto/ProtoOutputStream;)V
-HSPLcom/android/server/pm/PackageManagerService;->enableSystemUserPackages()V
-PLcom/android/server/pm/PackageManagerService;->enforceOwnerRights(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->enforceSystemOrPhoneCaller(Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->executeDeletePackageLIF(Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Ljava/lang/String;Z[IZLandroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->executePostCommitSteps(Lcom/android/server/pm/PackageManagerService$CommitRequest;)V
-HSPLcom/android/server/pm/PackageManagerService;->executeSharedLibrariesUpdateLPr(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;)V
+HPLcom/android/server/pm/PackageManagerService;->dumpSharedLibrariesProto(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/pm/PackageManagerService;->enableSystemPackageLPw(Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/PackageManagerService;->enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->enforceCanSetPackagesSuspendedAsUser(Ljava/lang/String;IILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->enforceOwnerRights(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->enforceSystemOrRoot(Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->ensureSystemPackageName(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->ensureSystemPackageNames([Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->executeDeletePackageLIF(Lcom/android/server/pm/PackageManagerService$DeletePackageAction;Ljava/lang/String;Z[IZLandroid/content/pm/parsing/ParsedPackage;)V
+HPLcom/android/server/pm/PackageManagerService;->executePostCommitSteps(Lcom/android/server/pm/PackageManagerService$CommitRequest;)V
+HSPLcom/android/server/pm/PackageManagerService;->executeSharedLibrariesUpdateLPr(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;)V
 PLcom/android/server/pm/PackageManagerService;->extendVerificationTimeout(IIJ)V
 PLcom/android/server/pm/PackageManagerService;->extrasForInstallResult(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Landroid/os/Bundle;
-HSPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;II)Z
-HSPLcom/android/server/pm/PackageManagerService;->filterAppAccessLPr(Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z
-HSPLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->filterCandidatesWithDomainPreferredActivitiesLPr(Landroid/content/Intent;ILjava/util/List;Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;I)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->filterIfNotSystemUser(Ljava/util/List;I)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->filterSharedLibPackageLPr(Lcom/android/server/pm/PackageSetting;III)Z
+HPLcom/android/server/pm/PackageManagerService;->findPersistentPreferredActivity(Landroid/content/Intent;I)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->findPersistentPreferredActivityLP(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;ZI)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/PackageManagerService;->findPreferredActivity(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;IZZZI)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/PackageManagerService;->findSharedLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List;
-HPLcom/android/server/pm/PackageManagerService;->findSharedLibrariesRecursive(Landroid/content/pm/SharedLibraryInfo;Ljava/util/ArrayList;Ljava/util/Set;)V
-PLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/PackageParser$Package;)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->finishPackageInstall(IZ)V
+HSPLcom/android/server/pm/PackageManagerService;->findPreferredActivityNotLocked(Landroid/content/Intent;Ljava/lang/String;ILjava/util/List;IZZZI)Landroid/content/pm/ResolveInfo;
+HSPLcom/android/server/pm/PackageManagerService;->findSharedLibraries(Landroid/content/pm/parsing/AndroidPackage;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->findSharedLibrariesRecursive(Landroid/content/pm/SharedLibraryInfo;Ljava/util/ArrayList;Ljava/util/Set;)V
+HSPLcom/android/server/pm/PackageManagerService;->findSharedNonSystemLibraries(Landroid/content/pm/parsing/AndroidPackage;)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->finishPackageInstall(IZ)V
+HSPLcom/android/server/pm/PackageManagerService;->fixProcessName(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/pm/PackageManagerService;->fixUpInstallReason(Ljava/lang/String;II)I
+HSPLcom/android/server/pm/PackageManagerService;->forEachInstalledPackage(Ljava/util/function/Consumer;I)V
 HSPLcom/android/server/pm/PackageManagerService;->forEachPackage(Ljava/util/function/Consumer;)V
-PLcom/android/server/pm/PackageManagerService;->freeStorage(Ljava/lang/String;JI)V
-PLcom/android/server/pm/PackageManagerService;->freeStorageAndNotify(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
-HSPLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
-HSPLcom/android/server/pm/PackageManagerService;->freezePackageForDelete(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
+HPLcom/android/server/pm/PackageManagerService;->freeStorage(Ljava/lang/String;JI)V
+HPLcom/android/server/pm/PackageManagerService;->freeStorageAndNotify(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
+PLcom/android/server/pm/PackageManagerService;->freezePackage(Ljava/lang/String;Ljava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
+PLcom/android/server/pm/PackageManagerService;->freezePackageForDelete(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
 PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;IILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
 PLcom/android/server/pm/PackageManagerService;->freezePackageForInstall(Ljava/lang/String;ILjava/lang/String;)Lcom/android/server/pm/PackageManagerService$PackageFreezer;
 HSPLcom/android/server/pm/PackageManagerService;->generateApplicationInfoFromSettingsLPw(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
@@ -10902,464 +24423,726 @@
 PLcom/android/server/pm/PackageManagerService;->getActiveLauncherPackageName(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getActivityInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getActivityInfoInternal(Landroid/content/ComponentName;III)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/PackageManagerService;->getAllIntentFilters(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/pm/PackageManagerService;->getAllPermissionGroups(I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->getAllIntentFilters(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getAllowedSharedLibInfos(Lcom/android/server/pm/PackageManagerService$ScanResult;Ljava/util/Map;)Ljava/util/List;
 PLcom/android/server/pm/PackageManagerService;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getAppPredictionServicePackageName()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getApplicationEnabledSetting(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerService;->getApplicationHiddenSettingAsUser(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService;->getApplicationInfo(Ljava/lang/String;II)Landroid/content/pm/ApplicationInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getApplicationInfoInternal(Ljava/lang/String;III)Landroid/content/pm/ApplicationInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getAppsWithSharedUserIdsLocked()Landroid/util/SparseArray;
 PLcom/android/server/pm/PackageManagerService;->getArtManager()Landroid/content/pm/dex/IArtManager;
-HSPLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUser(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
+HSPLcom/android/server/pm/PackageManagerService;->getAttentionServicePackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUser(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->getBlockUninstallForUsers(Ljava/lang/String;[I)[I
+HPLcom/android/server/pm/PackageManagerService;->getChangedPackages(II)Landroid/content/pm/ChangedPackages;
 PLcom/android/server/pm/PackageManagerService;->getCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
 HSPLcom/android/server/pm/PackageManagerService;->getComponentEnabledSetting(Landroid/content/ComponentName;I)I
-PLcom/android/server/pm/PackageManagerService;->getCrossProfileDomainPreferredLpr(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getDeclaredSharedLibraries(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/PackageManagerService;->getContentCaptureServicePackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getCrossProfileDomainPreferredLpr(Landroid/content/Intent;Ljava/lang/String;III)Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;
+HPLcom/android/server/pm/PackageManagerService;->getDeclaredSharedLibraries(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/pm/PackageManagerService;->getDefaultAppsBackup(I)[B
-HSPLcom/android/server/pm/PackageManagerService;->getDefaultBrowserPackageName(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getDefaultDialerPackageName(I)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/content/Context;Landroid/util/DisplayMetrics;)V
+HSPLcom/android/server/pm/PackageManagerService;->getDefaultDisplayMetrics(Landroid/hardware/display/DisplayManager;Landroid/util/DisplayMetrics;)V
 HSPLcom/android/server/pm/PackageManagerService;->getDefaultHomeActivity(I)Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getDexManager()Lcom/android/server/pm/dex/DexManager;
+PLcom/android/server/pm/PackageManagerService;->getDefaultTextClassifierPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getDefaultVerificationResponse(Landroid/os/UserHandle;)I
+HSPLcom/android/server/pm/PackageManagerService;->getDeviceConfiguratorPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getDexManager()Lcom/android/server/pm/dex/DexManager;
 HSPLcom/android/server/pm/PackageManagerService;->getDocumenterPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getDomainVerificationStatusLPr(Lcom/android/server/pm/PackageSetting;I)J
+HPLcom/android/server/pm/PackageManagerService;->getDomainVerificationStatusLPr(Lcom/android/server/pm/PackageSetting;I)J
 HSPLcom/android/server/pm/PackageManagerService;->getHarmfulAppWarning(Ljava/lang/String;I)Ljava/lang/CharSequence;
-PLcom/android/server/pm/PackageManagerService;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
+HPLcom/android/server/pm/PackageManagerService;->getHomeActivities(Ljava/util/List;)Landroid/content/ComponentName;
 HSPLcom/android/server/pm/PackageManagerService;->getHomeActivitiesAsUser(Ljava/util/List;I)Landroid/content/ComponentName;
+HSPLcom/android/server/pm/PackageManagerService;->getHomeIntent()Landroid/content/Intent;
 HSPLcom/android/server/pm/PackageManagerService;->getIncidentReportApproverPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getInstallReason(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/PackageManagerService;->getInstallSourceLocked(Ljava/lang/String;I)Lcom/android/server/pm/InstallSource;
 HSPLcom/android/server/pm/PackageManagerService;->getInstalledApplications(II)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getInstalledApplicationsListInternal(III)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->getInstalledModules(I)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->getInstalledModules(I)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->getInstalledPackages(II)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getInstallerPackageName(Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getInstantAppAndroidId(Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getInstantAppInstallerLPr()Landroid/content/pm/ActivityInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getInstantAppPackageName(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getInstantAppResolverLPr()Landroid/util/Pair;
 PLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsComponent()Landroid/content/ComponentName;
 HSPLcom/android/server/pm/PackageManagerService;->getInstantAppResolverSettingsLPr(Landroid/content/ComponentName;)Landroid/content/ComponentName;
 PLcom/android/server/pm/PackageManagerService;->getInstantApps(I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->getInstrumentationInfo(Landroid/content/ComponentName;I)Landroid/content/pm/InstrumentationInfo;
 PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerificationBackup(I)[B
-PLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifications(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifications(Ljava/lang/String;)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getIntentFilterVerifierComponentNameLPr()Landroid/content/ComponentName;
-PLcom/android/server/pm/PackageManagerService;->getIntentVerificationStatus(Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerService;->getIntentVerificationStatus(Ljava/lang/String;I)I
 PLcom/android/server/pm/PackageManagerService;->getLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;I)Landroid/content/pm/ResolveInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getLatestSharedLibraVersionLPr(Landroid/content/pm/PackageParser$Package;)Landroid/content/pm/SharedLibraryInfo;
+HSPLcom/android/server/pm/PackageManagerService;->getLatestSharedLibraVersionLPr(Landroid/content/pm/parsing/AndroidPackage;)Landroid/content/pm/SharedLibraryInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getMatchingCrossProfileIntentFilters(Landroid/content/Intent;Ljava/lang/String;I)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
+HPLcom/android/server/pm/PackageManagerService;->getModuleInfo(Ljava/lang/String;I)Landroid/content/pm/ModuleInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getNameForUid(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getNamesForUids([I)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
-PLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/CompilerStats$PackageStats;
-PLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
-HSPLcom/android/server/pm/PackageManagerService;->getOriginalPackageLocked(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageManagerService;->getNextCodePath(Ljava/io/File;Ljava/lang/String;)Ljava/io/File;
+PLcom/android/server/pm/PackageManagerService;->getOatDir(Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getOptimizablePackages()Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Landroid/content/pm/parsing/AndroidPackage;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HSPLcom/android/server/pm/PackageManagerService;->getOrCreateCompilerPackageStats(Ljava/lang/String;)Lcom/android/server/pm/CompilerStats$PackageStats;
+HSPLcom/android/server/pm/PackageManagerService;->getOriginalPackageLocked(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/PackageManagerService;->getPackageGids(Ljava/lang/String;II)[I
 HSPLcom/android/server/pm/PackageManagerService;->getPackageInfo(Ljava/lang/String;II)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getPackageInfoInternal(Ljava/lang/String;JIII)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/PackageManagerService;->getPackageInfoVersioned(Landroid/content/pm/VersionedPackage;II)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getPackageInstaller()Landroid/content/pm/IPackageInstaller;
+PLcom/android/server/pm/PackageManagerService;->getPackageInstallerPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getPackageSetting(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/PackageManagerService;->getPackageTargetSdkVersionLockedLPr(Ljava/lang/String;)I
 HSPLcom/android/server/pm/PackageManagerService;->getPackageUid(Ljava/lang/String;II)I
+HSPLcom/android/server/pm/PackageManagerService;->getPackageUidInternal(Ljava/lang/String;III)I
 PLcom/android/server/pm/PackageManagerService;->getPackages()Ljava/util/Collection;
+HPLcom/android/server/pm/PackageManagerService;->getPackagesForSharedUserIdLocked(Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getPackagesForUid(I)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getPackagesHoldingPermissions([Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->getParentOrChildPackageChangedSharedUser(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getPackagesUsingSharedLibraryLPr(Landroid/content/pm/SharedLibraryInfo;II)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->getPermissionControllerPackageName()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageManagerService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getPersistentApplications(I)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getPersistentApplicationsInternal(I)Ljava/util/List;
-PLcom/android/server/pm/PackageManagerService;->getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I
+HPLcom/android/server/pm/PackageManagerService;->getPrebuildProfilePath(Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getPreferredActivities(Ljava/util/List;Ljava/util/List;Ljava/lang/String;)I
 PLcom/android/server/pm/PackageManagerService;->getPreferredActivityBackup(I)[B
-HSPLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/PackageManagerService;->getProviderInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ProviderInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getRealPackageName(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getProcessesForUidLocked(I)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/PackageManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/PackageManagerService;->getProviderInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/pm/PackageManagerService;->getRealPackageName(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getReceiverInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ActivityInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getRequiredButNotReallyRequiredVerifierLPr()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getRequiredInstallerLPr()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getRequiredPermissionControllerLPr()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getRequiredServicesExtensionPackageLPr()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getRequiredSharedLibraryLPr(Ljava/lang/String;I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getRequiredUninstallerLPr()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getRetailDemoPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getRuntimePermissionsVersion(I)I
 HSPLcom/android/server/pm/PackageManagerService;->getServiceInfo(Landroid/content/ComponentName;II)Landroid/content/pm/ServiceInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getServicesSystemSharedLibraryPackageName()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/PackageParser$Package;)Lcom/android/server/pm/Settings$VersionInfo;
+HSPLcom/android/server/pm/PackageManagerService;->getSettingsVersionForPackage(Landroid/content/pm/parsing/AndroidPackage;)Lcom/android/server/pm/Settings$VersionInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getSetupWizardPackageNameImpl()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getSharedLibLatestVersionSetting(Lcom/android/server/pm/PackageManagerService$ScanResult;)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/PackageManagerService;->getSharedLibraries(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->getSharedLibraryInfo(Ljava/lang/String;JLjava/util/Map;Ljava/util/Map;)Landroid/content/pm/SharedLibraryInfo;
 HSPLcom/android/server/pm/PackageManagerService;->getSharedLibraryInfoLPr(Ljava/lang/String;J)Landroid/content/pm/SharedLibraryInfo;
-HSPLcom/android/server/pm/PackageManagerService;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->getSharedSystemSharedLibraryPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getSharedUserPackagesForPackageLocked(Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getStorageManagerPackageName()Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getSuspendedPackageAppExtrasInternal(Ljava/lang/String;I)Landroid/os/Bundle;
+HPLcom/android/server/pm/PackageManagerService;->getSystemAvailableFeatures()Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/PackageManagerService;->getSystemCaptionsServicePackageName()Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getSystemSharedLibraryNames()[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getSystemTextClassifierPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getSystemTextClassifierPackages()[Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->getTelephonyPackageNames()[Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->getUidTargetSdkVersionLockedLPr(I)I
 PLcom/android/server/pm/PackageManagerService;->getUnknownSourcesSettings()I
-PLcom/android/server/pm/PackageManagerService;->getUnsuspendablePackagesForUser([Ljava/lang/String;I)[Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerService;->getUnusedPackages(J)Ljava/util/Set;
+HPLcom/android/server/pm/PackageManagerService;->getUnsuspendablePackagesForUser([Ljava/lang/String;I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerService;->getUnusedPackages(J)Ljava/util/Set;
+HPLcom/android/server/pm/PackageManagerService;->getVerificationTimeout()J
 HSPLcom/android/server/pm/PackageManagerService;->getWellbeingPackageName()Ljava/lang/String;
-HSPLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledCarrierApps([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
+HPLcom/android/server/pm/PackageManagerService;->handlePackagePostInstall(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;ZZZ[Ljava/lang/String;Ljava/util/List;ZLjava/lang/String;Landroid/content/pm/IPackageInstallObserver2;)V
+PLcom/android/server/pm/PackageManagerService;->hasDomainURLs(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->hasNonNegativePriority(Ljava/util/List;)Z
+HPLcom/android/server/pm/PackageManagerService;->hasString(Ljava/util/List;Ljava/util/List;)Z
 HSPLcom/android/server/pm/PackageManagerService;->hasSystemFeature(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageManagerService;->hasSystemUidErrors()Z
-PLcom/android/server/pm/PackageManagerService;->hasTargetSdkInUidLowerThan(II)Z
-PLcom/android/server/pm/PackageManagerService;->installExistingPackageAsUser(Ljava/lang/String;III)I
-PLcom/android/server/pm/PackageManagerService;->installExistingPackageAsUser(Ljava/lang/String;IIILandroid/content/IntentSender;)I
-PLcom/android/server/pm/PackageManagerService;->installPackagesLI(Ljava/util/List;)V
+HPLcom/android/server/pm/PackageManagerService;->hasValidDomains(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Z
+HPLcom/android/server/pm/PackageManagerService;->installExistingPackageAsUser(Ljava/lang/String;IIILjava/util/List;)I
+HPLcom/android/server/pm/PackageManagerService;->installExistingPackageAsUser(Ljava/lang/String;IIILjava/util/List;Landroid/content/IntentSender;)I
+PLcom/android/server/pm/PackageManagerService;->installPackageFromSystemLIF(Ljava/lang/String;[I[ILcom/android/server/pm/permission/PermissionsState;Z)Landroid/content/pm/parsing/AndroidPackage;
+HPLcom/android/server/pm/PackageManagerService;->installPackagesLI(Ljava/util/List;)V
 PLcom/android/server/pm/PackageManagerService;->installPackagesTracedLI(Ljava/util/List;)V
-PLcom/android/server/pm/PackageManagerService;->installStage(Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;)V
+HPLcom/android/server/pm/PackageManagerService;->installStage(Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;)V
+PLcom/android/server/pm/PackageManagerService;->installStage(Ljava/util/List;)V
+PLcom/android/server/pm/PackageManagerService;->installStubPackageLI(Landroid/content/pm/parsing/AndroidPackage;II)Landroid/content/pm/parsing/AndroidPackage;
+HSPLcom/android/server/pm/PackageManagerService;->installSystemStubPackages(Ljava/util/List;I)V
+HSPLcom/android/server/pm/PackageManagerService;->installWhitelistedSystemPackages()V
 PLcom/android/server/pm/PackageManagerService;->isCallerAllowedToSilentlyUninstall(ILjava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isCallerSameApp(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->isCallerVerifier(I)Z
+PLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isCompatSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
-HSPLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/PackageParser$Package;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isDeviceUpgrading()Z
+HSPLcom/android/server/pm/PackageManagerService;->isExternal(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isExternal(Lcom/android/server/pm/PackageSetting;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isFirstBoot()Z
-PLcom/android/server/pm/PackageManagerService;->isHistoricalPackageUsageAvailable()Z
+HSPLcom/android/server/pm/PackageManagerService;->isHistoricalPackageUsageAvailable()Z
 HSPLcom/android/server/pm/PackageManagerService;->isHomeIntent(Landroid/content/Intent;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isInstantApp(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->isInstantAppInternal(Ljava/lang/String;II)Z
 HSPLcom/android/server/pm/PackageManagerService;->isInstantAppResolutionAllowed(Landroid/content/Intent;Ljava/util/List;IZ)Z
-PLcom/android/server/pm/PackageManagerService;->isOemApp(Landroid/content/pm/PackageParser$Package;)Z
+PLcom/android/server/pm/PackageManagerService;->isIntegrityVerificationEnabled()Z
+PLcom/android/server/pm/PackageManagerService;->isOdmApp(Landroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/PackageManagerService;->isOemApp(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isOnlyCoreApps()Z
-HSPLcom/android/server/pm/PackageManagerService;->isOrphaned(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->isOrphaned(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isPackageAvailable(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->isPackageDeviceAdmin(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->isPackageRenamed(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService;->isPackageDeviceAdmin(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->isPackageDeviceAdminOnAnyUser(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->isPackageRenamed(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isPackageSuspendedForUser(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/PackageManagerService;->isProductApp(Landroid/content/pm/PackageParser$Package;)Z
+PLcom/android/server/pm/PackageManagerService;->isPrivilegedApp(Landroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/PackageManagerService;->isProductApp(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isProtectedBroadcast(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isRecentsAccessingChildProfiles(II)Z
-PLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/PackageParser$Package;)Z
+PLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Landroid/content/pm/parsing/AndroidPackage;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isRecoverSignatureUpdateNeeded(Lcom/android/server/pm/Settings$VersionInfo;)Z
-PLcom/android/server/pm/PackageManagerService;->isSafeMode()Z
+HSPLcom/android/server/pm/PackageManagerService;->isSafeMode()Z
 PLcom/android/server/pm/PackageManagerService;->isStorageLow()Z
-HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/PackageParser$Package;)Z
-HSPLcom/android/server/pm/PackageManagerService;->isUidPrivileged(I)Z
-HSPLcom/android/server/pm/PackageManagerService;->isUpgrade()Z
+HSPLcom/android/server/pm/PackageManagerService;->isSystemApp(Landroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/PackageManagerService;->isSystemApp(Lcom/android/server/pm/PackageSetting;)Z
+HPLcom/android/server/pm/PackageManagerService;->isUidPrivileged(I)Z
+PLcom/android/server/pm/PackageManagerService;->isUpdatedSystemApp(Lcom/android/server/pm/PackageSetting;)Z
 HSPLcom/android/server/pm/PackageManagerService;->isUserEnabled(I)Z
-HSPLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z
-PLcom/android/server/pm/PackageManagerService;->isVendorApp(Landroid/content/pm/PackageParser$Package;)Z
+HPLcom/android/server/pm/PackageManagerService;->isUserRestricted(ILjava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->isVendorApp(Landroid/content/pm/parsing/AndroidPackage;)Z
 PLcom/android/server/pm/PackageManagerService;->isVerificationEnabled(III)Z
-HSPLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->killUid(IILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$commitPackageSettings$6$PackageManagerService(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$deletePackageVersioned$19$PackageManagerService(Ljava/lang/String;IZZJII[ILandroid/content/pm/IPackageDeleteObserver2;Ljava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->lambda$freeStorageAndNotify$1$PackageManagerService(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$grantDefaultPermissionsToEnabledTelephonyDataServices$33$PackageManagerService([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$new$0$PackageManagerService(Ljava/util/List;I)V
-PLcom/android/server/pm/PackageManagerService;->lambda$notifyFirstLaunch$14$PackageManagerService(Ljava/lang/String;ILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$postPreferredActivityChangedBroadcast$23(I)V
-PLcom/android/server/pm/PackageManagerService;->lambda$processInstallRequestsAsync$13$PackageManagerService(ZLjava/util/List;)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$revokeDefaultPermissionsFromDisabledTelephonyDataServices$34$PackageManagerService([Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->lambda$sendPackageAddedForNewUsers$9$PackageManagerService([ILjava/lang/String;Z)V
-HSPLcom/android/server/pm/PackageManagerService;->lambda$sendPackageBroadcast$7$PackageManagerService([ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V
-HSPLcom/android/server/pm/PackageManagerService;->locationIsPrivileged(Ljava/lang/String;)Z
+HPLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;IILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->killApplication(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$commitPackageSettings$15$PackageManagerService(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$deleteApplicationCacheFilesAsUser$28$PackageManagerService(Landroid/content/pm/parsing/AndroidPackage;IIILandroid/content/pm/IPackageDataObserver;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$deleteApplicationCacheFilesAsUser$29$PackageManagerService(Landroid/content/pm/parsing/AndroidPackage;IIILandroid/content/pm/IPackageDataObserver;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$deletePackageVersioned$26$PackageManagerService(Ljava/lang/String;IZZJII[ILandroid/content/pm/IPackageDeleteObserver2;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$deletePackageVersioned$27$PackageManagerService(Ljava/lang/String;IZZJII[ILandroid/content/pm/IPackageDeleteObserver2;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerService;->lambda$executeSharedLibrariesUpdateLPr$14(Landroid/content/pm/SharedLibraryInfo;Landroid/content/pm/SharedLibraryInfo;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$freeStorageAndNotify$10$PackageManagerService(Ljava/lang/String;JILandroid/content/pm/IPackageDataObserver;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$installExistingPackageAsUser$19$PackageManagerService(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/content/IntentSender;)V
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$0(Ljava/lang/Object;Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/ComponentResolver;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$1(Landroid/content/Context;Ljava/lang/Object;Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$2(Landroid/content/Context;Lcom/android/server/pm/Installer;Ljava/lang/Object;ZLjava/lang/Object;Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/UserManagerService;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$3(Ljava/lang/Object;Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/Settings;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$4(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/pm/AppsFilter;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$main$5(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageManagerService;)Lcom/android/server/compat/PlatformCompat;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$new$35$PackageManagerService(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->lambda$new$36$PackageManagerService(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->lambda$new$7(Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/PackageManagerService$SystemPartition;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$new$8(Lcom/android/server/pm/PackageManagerService$SystemPartition;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerService;->lambda$new$9$PackageManagerService(Ljava/util/List;I)V
+PLcom/android/server/pm/PackageManagerService;->lambda$notifyFirstLaunch$22$PackageManagerService(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$postPreferredActivityChangedBroadcast$29(I)V
+HPLcom/android/server/pm/PackageManagerService;->lambda$postPreferredActivityChangedBroadcast$30(I)V
+HPLcom/android/server/pm/PackageManagerService;->lambda$processInstallRequestsAsync$21$PackageManagerService(ZLjava/util/List;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$removePackageDataLIF$28$PackageManagerService(Lcom/android/server/pm/PackageSetting;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$removeUnusedPackagesLPw$43$PackageManagerService(Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->lambda$sendMyPackageSuspendedOrUnsuspended$20$PackageManagerService(ZI[Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$sendPackageAddedForNewUsers$18$PackageManagerService([ILjava/lang/String;Z)V
+HPLcom/android/server/pm/PackageManagerService;->lambda$sendPackageBroadcast$16$PackageManagerService([ILjava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I)V
+HSPLcom/android/server/pm/PackageManagerService;->lambda$static$17(Landroid/content/pm/ProviderInfo;Landroid/content/pm/ProviderInfo;)I
+HSPLcom/android/server/pm/PackageManagerService;->lambda$systemReady$36$PackageManagerService(I)V
+PLcom/android/server/pm/PackageManagerService;->lambda$systemReady$37$PackageManagerService(I)V
+HSPLcom/android/server/pm/PackageManagerService;->lambda$systemReady$38$PackageManagerService(I)V
+PLcom/android/server/pm/PackageManagerService;->lambda$updateDefaultHomeNotLocked$33$PackageManagerService(ILjava/lang/Boolean;)V
+PLcom/android/server/pm/PackageManagerService;->lambda$updateDefaultHomeNotLocked$34$PackageManagerService(ILjava/lang/Boolean;)V
 HSPLcom/android/server/pm/PackageManagerService;->logAppProcessStartIfNeeded(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService;->main(Landroid/content/Context;Lcom/android/server/pm/Installer;ZZ)Lcom/android/server/pm/PackageManagerService;
-HSPLcom/android/server/pm/PackageManagerService;->markPackageUninstalledForUserLPw(Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;)V
-PLcom/android/server/pm/PackageManagerService;->matchComponentForVerifier(Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/pm/PackageManagerService;->markPackageUninstalledForUserLPw(Lcom/android/server/pm/PackageSetting;Landroid/os/UserHandle;)V
+HPLcom/android/server/pm/PackageManagerService;->matchComponentForVerifier(Ljava/lang/String;Ljava/util/List;)Landroid/content/ComponentName;
 PLcom/android/server/pm/PackageManagerService;->matchVerifiers(Landroid/content/pm/PackageInfoLite;Ljava/util/List;Lcom/android/server/pm/PackageVerificationState;)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->mayDeletePackageLocked(Lcom/android/server/pm/PackageManagerService$PackageRemovedInfo;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;[Lcom/android/server/pm/PackageSetting;ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerService$DeletePackageAction;
+PLcom/android/server/pm/PackageManagerService;->mayDeletePackageLocked(Lcom/android/server/pm/PackageManagerService$PackageRemovedInfo;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;ILandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerService$DeletePackageAction;
 PLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->maybeClearProfilesForUpgradesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/PackageParser$Package;I)Z
-HSPLcom/android/server/pm/PackageManagerService;->maybeThrowExceptionForMultiArchCopy(Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->needsNetworkVerificationLPr(Landroid/content/pm/PackageParser$ActivityIntentInfo;)Z
+HPLcom/android/server/pm/PackageManagerService;->maybeAddInstantAppInstaller(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZZ)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerService;->maybeClearProfilesForUpgradesLI(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageManagerService;->maybeMigrateAppDataLIF(Landroid/content/pm/parsing/AndroidPackage;I)Z
+PLcom/android/server/pm/PackageManagerService;->needsNetworkVerificationLPr(Landroid/content/pm/parsing/ComponentParseUtils$ParsedActivityIntentInfo;)Z
+HSPLcom/android/server/pm/PackageManagerService;->nonStaticSharedLibExistsLocked(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->normalizePackageNameLPr(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->notifyDexLoad(Ljava/lang/String;Ljava/util/List;Ljava/util/List;Ljava/lang/String;)V
 PLcom/android/server/pm/PackageManagerService;->notifyFirstLaunch(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->notifyPackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/pm/PackageManagerService;->notifyPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->notifyInstallObserver(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/content/pm/IPackageInstallObserver2;)V
+PLcom/android/server/pm/PackageManagerService;->notifyInstallObserver(Ljava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->notifyPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageManagerService;->notifyPackageChanged(Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->notifyPackageRemoved(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService;->notifyPackageUse(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->notifyPackageUseLocked(Ljava/lang/String;I)V
+HPLcom/android/server/pm/PackageManagerService;->notifyPackagesReplacedReceived([Ljava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->onNewUserCreated(I)V
+PLcom/android/server/pm/PackageManagerService;->onRestoreComplete(ILandroid/content/Context;Landroid/content/IntentSender;)V
 HSPLcom/android/server/pm/PackageManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
 HSPLcom/android/server/pm/PackageManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/pm/PackageManagerService;->packageIsBrowser(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/PackageManagerService;->optimisticallyRegisterAppId(Lcom/android/server/pm/PackageManagerService$ScanResult;)Z
+HPLcom/android/server/pm/PackageManagerService;->packageIsBrowser(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageManagerService;->performBackupManagerRestore(IILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Z
 PLcom/android/server/pm/PackageManagerService;->performDexOpt(Lcom/android/server/pm/dex/DexoptOptions;)Z
-PLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Lcom/android/server/pm/dex/DexoptOptions;)I
-PLcom/android/server/pm/PackageManagerService;->performDexOptUpgrade(Ljava/util/List;ZIZ)[I
+HSPLcom/android/server/pm/PackageManagerService;->performDexOptInternal(Lcom/android/server/pm/dex/DexoptOptions;)I
+HSPLcom/android/server/pm/PackageManagerService;->performDexOptInternalWithDependenciesLI(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/dex/DexoptOptions;)I
+PLcom/android/server/pm/PackageManagerService;->performDexOptMode(Ljava/lang/String;ZLjava/lang/String;ZZLjava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerService;->performDexOptTraced(Lcom/android/server/pm/dex/DexoptOptions;)I
+HSPLcom/android/server/pm/PackageManagerService;->performDexOptUpgrade(Ljava/util/List;ZIZ)[I
 PLcom/android/server/pm/PackageManagerService;->performDexOptWithStatus(Lcom/android/server/pm/dex/DexoptOptions;)I
 HSPLcom/android/server/pm/PackageManagerService;->performFstrimIfNeeded()V
-PLcom/android/server/pm/PackageManagerService;->prepareAppDataAfterInstallLIF(Landroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/PackageParser$Package;IIZ)V
-HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/PackageParser$Package;II)V
-PLcom/android/server/pm/PackageManagerService;->preparePackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Lcom/android/server/pm/PackageManagerService$PrepareResult;
+HPLcom/android/server/pm/PackageManagerService;->performRollbackManagerRestore(IILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$PostInstallData;)Z
+PLcom/android/server/pm/PackageManagerService;->postPreferredActivityChangedBroadcast(I)V
+HPLcom/android/server/pm/PackageManagerService;->prepareAppDataAfterInstallLIF(Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataAndMigrateLIF(Landroid/content/pm/parsing/AndroidPackage;IIZ)V
+PLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataContentsLeafLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HSPLcom/android/server/pm/PackageManagerService;->prepareAppDataLeafLIF(Landroid/content/pm/parsing/AndroidPackage;II)V
+HPLcom/android/server/pm/PackageManagerService;->preparePackageLI(Lcom/android/server/pm/PackageManagerService$InstallArgs;Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)Lcom/android/server/pm/PackageManagerService$PrepareResult;
 HSPLcom/android/server/pm/PackageManagerService;->preparePackageParserCache()Ljava/io/File;
-HSPLcom/android/server/pm/PackageManagerService;->prepareScanResultLocked(Lcom/android/server/pm/PackageManagerService$ScanResult;)V
+HPLcom/android/server/pm/PackageManagerService;->primeDomainVerificationsLPw(I)V
+PLcom/android/server/pm/PackageManagerService;->processInstallRequestsAsync(ZLjava/util/List;)V
 PLcom/android/server/pm/PackageManagerService;->processPendingInstall(Lcom/android/server/pm/PackageManagerService$InstallArgs;I)V
+HPLcom/android/server/pm/PackageManagerService;->pruneUnusedStaticSharedLibraries(JJ)Z
 HSPLcom/android/server/pm/PackageManagerService;->queryContentProviders(Ljava/lang/String;IILjava/lang/String;)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->queryCrossProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;IIZ)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService;->queryInstrumentation(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/PackageManagerService;->queryInstrumentationInternal(Ljava/lang/String;I)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivities(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentActivitiesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZZ)Ljava/util/List;
 PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptions(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/pm/PackageManagerService;->queryIntentActivityOptionsInternal(Landroid/content/ComponentName;[Landroid/content/Intent;[Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentContentProviders(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/PackageManagerService;->queryIntentContentProvidersInternal(Landroid/content/Intent;Ljava/lang/String;II)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentReceivers(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentReceiversInternal(Landroid/content/Intent;Ljava/lang/String;IIZ)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentServices(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->queryIntentServicesInternal(Landroid/content/Intent;Ljava/lang/String;IIIZ)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->queryPermissionsByGroup(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/pm/PackageManagerService;->querySkipCurrentProfileIntents(Ljava/util/List;Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->reconcileApps(Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->reconcileAppsData(IIZ)V
+PLcom/android/server/pm/PackageManagerService;->reconcileAppsData(IIZ)V
+PLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZ)V
 HSPLcom/android/server/pm/PackageManagerService;->reconcileAppsDataLI(Ljava/lang/String;IIZZ)Ljava/util/List;
 HSPLcom/android/server/pm/PackageManagerService;->reconcilePackagesLocked(Lcom/android/server/pm/PackageManagerService$ReconcileRequest;Lcom/android/server/pm/KeySetManagerService;)Ljava/util/Map;
-HSPLcom/android/server/pm/PackageManagerService;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V
+PLcom/android/server/pm/PackageManagerService;->registerMoveCallback(Landroid/content/pm/IPackageMoveObserver;)V
 HSPLcom/android/server/pm/PackageManagerService;->removeCodePathLI(Ljava/io/File;)V
 HSPLcom/android/server/pm/PackageManagerService;->removeDexFiles(Ljava/util/List;[Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->removeKeystoreDataIfNeeded(II)V
-PLcom/android/server/pm/PackageManagerService;->removeOnPermissionsChangeListener(Landroid/content/pm/IOnPermissionsChangeListener;)V
-PLcom/android/server/pm/PackageManagerService;->removePackageDataLIF(Lcom/android/server/pm/PackageSetting;[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;IZ)V
-HSPLcom/android/server/pm/PackageManagerService;->removePackageLI(Landroid/content/pm/PackageParser$Package;Z)V
+PLcom/android/server/pm/PackageManagerService;->removeKeystoreDataIfNeeded(Landroid/os/UserManagerInternal;II)V
+PLcom/android/server/pm/PackageManagerService;->removeNativeBinariesLI(Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/PackageManagerService;->removePackageDataLIF(Lcom/android/server/pm/PackageSetting;[ILcom/android/server/pm/PackageManagerService$PackageRemovedInfo;IZ)V
+HSPLcom/android/server/pm/PackageManagerService;->removePackageLI(Landroid/content/pm/parsing/AndroidPackage;Z)V
 HSPLcom/android/server/pm/PackageManagerService;->removePackageLI(Ljava/lang/String;Z)V
-PLcom/android/server/pm/PackageManagerService;->removeSharedLibraryLPw(Ljava/lang/String;J)Z
-HSPLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
+HSPLcom/android/server/pm/PackageManagerService;->removeSharedLibraryLPw(Ljava/lang/String;J)Z
+HPLcom/android/server/pm/PackageManagerService;->removeUnusedPackagesLPw(Lcom/android/server/pm/UserManagerService;I)V
+HSPLcom/android/server/pm/PackageManagerService;->renameStaticSharedLibraryPackage(Landroid/content/pm/parsing/ParsedPackage;)V
+HPLcom/android/server/pm/PackageManagerService;->replacePreferredActivity(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;I)V
 HSPLcom/android/server/pm/PackageManagerService;->reportSettingsProblem(ILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->resetUserChangesToRuntimePermissionsAndFlagsLPw(Lcom/android/server/pm/PackageSetting;I)V
+HSPLcom/android/server/pm/PackageManagerService;->resolveApexToSystemPartition(Lcom/android/server/pm/ApexManager$ActiveApexInfo;)Lcom/android/server/pm/PackageManagerService$SystemPartition;
 HSPLcom/android/server/pm/PackageManagerService;->resolveContentProvider(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
 HSPLcom/android/server/pm/PackageManagerService;->resolveContentProviderInternal(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
+HSPLcom/android/server/pm/PackageManagerService;->resolveExternalPackageNameLPr(Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->resolveIntentInternal(Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->resolveInternalPackageNameLPr(Ljava/lang/String;J)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerService;->resolveService(Landroid/content/Intent;Ljava/lang/String;II)Landroid/content/pm/ResolveInfo;
 HSPLcom/android/server/pm/PackageManagerService;->resolveServiceInternal(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/pm/PackageManagerService;->resolveUserIds(I)[I
 PLcom/android/server/pm/PackageManagerService;->restoreAndPostInstall(ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Lcom/android/server/pm/PackageManagerService$PostInstallData;)V
-HSPLcom/android/server/pm/PackageManagerService;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/PackageManagerService;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJ)V
+HSPLcom/android/server/pm/PackageManagerService;->scanDirLI(Ljava/io/File;IIJLandroid/content/pm/PackageParser;Ljava/util/concurrent/ExecutorService;)V
 HSPLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJ)V
-HSPLcom/android/server/pm/PackageManagerService;->scanPackageChildLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Landroid/content/pm/PackageParser$Package;
-HSPLcom/android/server/pm/PackageManagerService;->scanPackageNewLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerService$ScanResult;
-HSPLcom/android/server/pm/PackageManagerService;->scanPackageOnlyLI(Lcom/android/server/pm/PackageManagerService$ScanRequest;ZJ)Lcom/android/server/pm/PackageManagerService$ScanResult;
-PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Landroid/content/pm/PackageParser$Package;IIJLandroid/os/UserHandle;)Ljava/util/List;
-HSPLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(I)V
-HSPLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(Landroid/os/UserHandle;)V
-PLcom/android/server/pm/PackageManagerService;->scheduleWriteSettingsLocked()V
+HSPLcom/android/server/pm/PackageManagerService;->scanDirTracedLI(Ljava/io/File;IIJLandroid/content/pm/PackageParser;Ljava/util/concurrent/ExecutorService;)V
+PLcom/android/server/pm/PackageManagerService;->scanPackageLI(Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/parsing/AndroidPackage;
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageNewLI(Landroid/content/pm/parsing/ParsedPackage;IIJLandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerService$ScanResult;
+HSPLcom/android/server/pm/PackageManagerService;->scanPackageOnlyLI(Lcom/android/server/pm/PackageManagerService$ScanRequest;Lcom/android/server/pm/PackageManagerService$Injector;ZJ)Lcom/android/server/pm/PackageManagerService$ScanResult;
+PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Landroid/content/pm/parsing/ParsedPackage;IIJLandroid/os/UserHandle;)Lcom/android/server/pm/PackageManagerService$ScanResult;
+PLcom/android/server/pm/PackageManagerService;->scanPackageTracedLI(Ljava/io/File;IIJLandroid/os/UserHandle;)Landroid/content/pm/parsing/AndroidPackage;
+PLcom/android/server/pm/PackageManagerService;->scheduleDeferredNoKillInstallObserver(Lcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/content/pm/IPackageInstallObserver2;)V
+PLcom/android/server/pm/PackageManagerService;->scheduleDeferredNoKillPostDelete(Lcom/android/server/pm/PackageManagerService$InstallArgs;)V
+PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageListLocked(I)V
+HPLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(I)V
+PLcom/android/server/pm/PackageManagerService;->scheduleWritePackageRestrictionsLocked(Landroid/os/UserHandle;)V
+HSPLcom/android/server/pm/PackageManagerService;->scheduleWriteSettingsLocked()V
 PLcom/android/server/pm/PackageManagerService;->sendBootCompletedBroadcastToSystemApp(Ljava/lang/String;ZI)V
+PLcom/android/server/pm/PackageManagerService;->sendFirstLaunchBroadcast(Ljava/lang/String;Ljava/lang/String;[I[I)V
+PLcom/android/server/pm/PackageManagerService;->sendMyPackageSuspendedOrUnsuspended([Ljava/lang/String;ZI)V
 PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForNewUsers(Ljava/lang/String;ZZI[I[I)V
 PLcom/android/server/pm/PackageManagerService;->sendPackageAddedForUser(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;I)V
-HSPLcom/android/server/pm/PackageManagerService;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I[I)V
-HSPLcom/android/server/pm/PackageManagerService;->sendPackageChangedBroadcast(Ljava/lang/String;ZLjava/util/ArrayList;I)V
-PLcom/android/server/pm/PackageManagerService;->sendSessionCommitBroadcast(Landroid/content/pm/PackageInstaller$SessionInfo;I)V
-PLcom/android/server/pm/PackageManagerService;->setApplicationCategoryHint(Ljava/lang/String;ILjava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->setBlockUninstallForUser(Ljava/lang/String;ZI)Z
-HSPLcom/android/server/pm/PackageManagerService;->setBundledAppAbi(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerService;->setBundledAppAbisAndRoots(Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/PackageManagerService;->sendPackageBroadcast(Ljava/lang/String;Ljava/lang/String;Landroid/os/Bundle;ILjava/lang/String;Landroid/content/IIntentReceiver;[I[I)V
+HPLcom/android/server/pm/PackageManagerService;->sendPackageChangedBroadcast(Ljava/lang/String;ZLjava/util/ArrayList;ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->sendPackagesSuspendedForUser([Ljava/lang/String;[IIZ)V
+HPLcom/android/server/pm/PackageManagerService;->sendSessionCommitBroadcast(Landroid/content/pm/PackageInstaller$SessionInfo;I)V
+PLcom/android/server/pm/PackageManagerService;->sendSessionUpdatedBroadcast(Landroid/content/pm/PackageInstaller$SessionInfo;I)V
+HPLcom/android/server/pm/PackageManagerService;->setApplicationCategoryHint(Ljava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/pm/PackageManagerService;->setApplicationEnabledSetting(Ljava/lang/String;IIILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerService;->setApplicationHiddenSettingAsUser(Ljava/lang/String;ZI)Z
+HPLcom/android/server/pm/PackageManagerService;->setBlockUninstallForUser(Ljava/lang/String;ZI)Z
 HSPLcom/android/server/pm/PackageManagerService;->setComponentEnabledSetting(Landroid/content/ComponentName;III)V
+PLcom/android/server/pm/PackageManagerService;->setDistractingPackageRestrictionsAsUser([Ljava/lang/String;II)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->setEnableRollbackCode(II)V
 HSPLcom/android/server/pm/PackageManagerService;->setEnabledSetting(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;)V
-PLcom/android/server/pm/PackageManagerService;->setInstallAndUpdateTime(Landroid/content/pm/PackageParser$Package;JJ)V
-HSPLcom/android/server/pm/PackageManagerService;->setInstantAppForUser(Lcom/android/server/pm/PackageSetting;IZZ)V
+HSPLcom/android/server/pm/PackageManagerService;->setInstantAppForUser(Lcom/android/server/pm/PackageManagerService$Injector;Lcom/android/server/pm/PackageSetting;IZZ)V
 PLcom/android/server/pm/PackageManagerService;->setLastChosenActivity(Landroid/content/Intent;Ljava/lang/String;ILandroid/content/IntentFilter;ILandroid/content/ComponentName;)V
-HSPLcom/android/server/pm/PackageManagerService;->setNativeLibraryPaths(Landroid/content/pm/PackageParser$Package;Ljava/io/File;)V
 HSPLcom/android/server/pm/PackageManagerService;->setPackageStoppedState(Ljava/lang/String;ZI)V
+HPLcom/android/server/pm/PackageManagerService;->setPackagesSuspendedAsUser([Ljava/lang/String;ZLandroid/os/PersistableBundle;Landroid/os/PersistableBundle;Landroid/content/pm/SuspendDialogInfo;Ljava/lang/String;I)[Ljava/lang/String;
+PLcom/android/server/pm/PackageManagerService;->setRuntimePermissionsVersion(II)V
 HSPLcom/android/server/pm/PackageManagerService;->setSystemAppHiddenUntilInstalled(Ljava/lang/String;Z)V
 HSPLcom/android/server/pm/PackageManagerService;->setSystemAppInstallState(Ljava/lang/String;ZI)Z
-PLcom/android/server/pm/PackageManagerService;->setUpFsVerityIfPossible(Landroid/content/pm/PackageParser$Package;)V
+HPLcom/android/server/pm/PackageManagerService;->setUpFsVerityIfPossible(Landroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageManagerService;->setUpInstantAppInstallerActivityLP(Landroid/content/pm/ActivityInfo;)V
-PLcom/android/server/pm/PackageManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageManagerService;->startIntentFilterVerifications(IZLandroid/content/pm/PackageParser$Package;)V
+PLcom/android/server/pm/PackageManagerService;->setUpdateAvailable(Ljava/lang/String;Z)V
+HSPLcom/android/server/pm/PackageManagerService;->sharedLibExists(Ljava/lang/String;JLjava/util/Map;)Z
+HSPLcom/android/server/pm/PackageManagerService;->shouldFilterApplicationLocked(Lcom/android/server/pm/PackageSetting;II)Z
+HSPLcom/android/server/pm/PackageManagerService;->shouldFilterApplicationLocked(Lcom/android/server/pm/PackageSetting;ILandroid/content/ComponentName;II)Z
+PLcom/android/server/pm/PackageManagerService;->shouldKeepUninstalledPackageLPr(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerService;->shutdown()V
+HPLcom/android/server/pm/PackageManagerService;->startIntentFilterVerifications(IZLandroid/content/pm/parsing/AndroidPackage;)V
 HSPLcom/android/server/pm/PackageManagerService;->systemReady()V
-HSPLcom/android/server/pm/PackageManagerService;->unsuspendForNonSystemSuspendingPackages(Landroid/util/ArraySet;)V
-HSPLcom/android/server/pm/PackageManagerService;->unsuspendForSuspendingPackages(Ljava/util/function/Predicate;I)V
-HSPLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLPw(Landroid/content/pm/PackageParser$Package;)Ljava/util/ArrayList;
-HSPLcom/android/server/pm/PackageManagerService;->updateDefaultHomeLPw(I)V
-HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForPackage(IILjava/lang/Object;)I
-HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZ)I
-HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IILandroid/content/Intent;IZZ)I
+HPLcom/android/server/pm/PackageManagerService;->unsuspendForSuspendingPackage(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/PackageManagerService;->updateAllSharedLibrariesLocked(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Map;)Ljava/util/ArrayList;
+HPLcom/android/server/pm/PackageManagerService;->updateDefaultHomeNotLocked(I)Z
+HSPLcom/android/server/pm/PackageManagerService;->updateFlags(II)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForApplication(II)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForComponent(II)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForPackage(II)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IIIZ)I
+HSPLcom/android/server/pm/PackageManagerService;->updateFlagsForResolve(IIIZZ)I
 HSPLcom/android/server/pm/PackageManagerService;->updateInstantAppInstallerLocked(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageManagerService;->updateIntentForResolve(Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/pm/PackageManagerService;->updateIntentVerificationStatus(Ljava/lang/String;II)Z
 HSPLcom/android/server/pm/PackageManagerService;->updatePackagesIfNeeded()V
-HSPLcom/android/server/pm/PackageManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZI)V
-HSPLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V
-PLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[I[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V
-PLcom/android/server/pm/PackageManagerService;->updateSettingsLI(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;Landroid/os/UserHandle;I)V
+HPLcom/android/server/pm/PackageManagerService;->updateSequenceNumberLP(Lcom/android/server/pm/PackageSetting;[I)V
+HPLcom/android/server/pm/PackageManagerService;->updateSettingsInternalLI(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageManagerService$InstallArgs;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
+PLcom/android/server/pm/PackageManagerService;->updateSettingsLI(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageManagerService$InstallArgs;[ILcom/android/server/pm/PackageManagerService$PackageInstalledInfo;)V
+HSPLcom/android/server/pm/PackageManagerService;->updateSharedLibrariesLocked(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Map;)V
 HSPLcom/android/server/pm/PackageManagerService;->userNeedsBadging(I)Z
 PLcom/android/server/pm/PackageManagerService;->verifyIntentFilter(IILjava/util/List;)V
-PLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLandroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/PackageManagerService;->verifyPendingInstall(II)V
+HPLcom/android/server/pm/PackageManagerService;->verifyIntentFiltersIfNeeded(IIZLjava/lang/String;ZLjava/util/List;)V
+HPLcom/android/server/pm/PackageManagerService;->verifyPendingInstall(II)V
 HSPLcom/android/server/pm/PackageManagerService;->waitForAppDataPrepared()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;
-PLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getReasonName(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getCompilerFilterForReason(I)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getReasonName(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->getSystemPropertyName(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerServiceUtils;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HPLcom/android/server/pm/PackageManagerServiceUtils;->applyPackageFilter(Ljava/util/function/Predicate;Ljava/util/Collection;Ljava/util/Collection;Ljava/util/List;Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerServiceCompilerMapping;->isFilterAllowedForReason(ILjava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils$1;-><init>()V
+HSPLcom/android/server/pm/PackageManagerServiceUtils$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->applyPackageFilter(Ljava/util/function/Predicate;Ljava/util/Collection;Ljava/util/Collection;Ljava/util/List;Lcom/android/server/pm/PackageManagerService;)V
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->checkISA(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->compareSignatures([Landroid/content/pm/Signature;[Landroid/content/pm/Signature;)I
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->compressedFileExists(Ljava/lang/String;)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->decompressFile(Ljava/io/File;Ljava/io/File;)I
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->deriveAbiOverride(Ljava/lang/String;Lcom/android/server/pm/PackageSetting;)Ljava/lang/String;
-PLcom/android/server/pm/PackageManagerServiceUtils;->dumpCriticalInfo(Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/pm/PackageManagerServiceUtils;->dumpCriticalInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Ljava/lang/String;II)V
+HPLcom/android/server/pm/PackageManagerServiceUtils;->dumpCriticalInfo(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/pm/PackageManagerServiceUtils;->dumpCriticalInfo(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Landroid/os/UserManagerInternal;Ljava/lang/String;II)V
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->enforceSystemOrPhoneCaller(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->getCompressedFiles(Ljava/lang/String;)[Ljava/io/File;
-HSPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Landroid/content/pm/PackageParser$Package;)J
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getLastModifiedTime(Landroid/content/pm/parsing/AndroidPackage;)J
 PLcom/android/server/pm/PackageManagerServiceUtils;->getMinimalPackageInfo(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;)Landroid/content/pm/PackageInfoLite;
-PLcom/android/server/pm/PackageManagerServiceUtils;->getPackageNamesForIntent(Landroid/content/Intent;I)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageManagerServiceUtils;->getPackagesForDexopt(Ljava/util/Collection;Lcom/android/server/pm/PackageManagerService;Z)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getPackageNamesForIntent(Landroid/content/Intent;I)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getPackagesForDexopt(Ljava/util/Collection;Lcom/android/server/pm/PackageManagerService;)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getPackagesForDexopt(Ljava/util/Collection;Lcom/android/server/pm/PackageManagerService;Z)Ljava/util/List;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getPermissionsState(Landroid/content/pm/PackageManagerInternal;Landroid/content/pm/parsing/AndroidPackage;)Lcom/android/server/pm/permission/PermissionsState;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->getSettingsProblemFile()Ljava/io/File;
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->isApkVerificationForced(Lcom/android/server/pm/PackageSetting;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->isApkVerityEnabled()Z
 PLcom/android/server/pm/PackageManagerServiceUtils;->isDowngradePermitted(II)Z
-PLcom/android/server/pm/PackageManagerServiceUtils;->isUnusedSinceTimeInMillis(JJJLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;JJ)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->isLegacyApkVerityEnabled()Z
+HPLcom/android/server/pm/PackageManagerServiceUtils;->isUnusedSinceTimeInMillis(JJJLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;JJ)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$1(Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$2(Landroid/util/ArraySet;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$3(Lcom/android/server/pm/dex/DexManager;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$4(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;)I
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$5(JLandroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/PackageManagerServiceUtils;->lambda$getPackagesForDexopt$7(Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->lambda$sortPackagesByUsageDate$0(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;)I
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->logCriticalInfo(ILjava/lang/String;)V
+PLcom/android/server/pm/PackageManagerServiceUtils;->makeDirRecursive(Ljava/io/File;I)V
+HPLcom/android/server/pm/PackageManagerServiceUtils;->packagesToString(Ljava/util/Collection;)Ljava/lang/String;
+HSPLcom/android/server/pm/PackageManagerServiceUtils;->sortPackagesByUsageDate(Ljava/util/List;Lcom/android/server/pm/PackageManagerService;)V
 HSPLcom/android/server/pm/PackageManagerServiceUtils;->verifySignatures(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$SigningDetails;ZZ)Z
+PLcom/android/server/pm/PackageManagerShellCommand$2;-><init>(Lcom/android/server/pm/PackageManagerShellCommand;)V
+PLcom/android/server/pm/PackageManagerShellCommand$ClearDataObserver;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$ClearDataObserver;->onRemoveCompleted(Ljava/lang/String;Z)V
+PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$InstallParams;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$1;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>()V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;-><init>(Lcom/android/server/pm/PackageManagerShellCommand$1;)V
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->access$600(Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;)Ljava/util/concurrent/LinkedBlockingQueue;
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;->getResult()Landroid/content/Intent;
+HSPLcom/android/server/pm/PackageManagerShellCommand;-><clinit>()V
+HSPLcom/android/server/pm/PackageManagerShellCommand;-><init>(Lcom/android/server/pm/PackageManagerService;Landroid/permission/IPermissionManager;)V
+HPLcom/android/server/pm/PackageManagerShellCommand;->checkAbiArgument(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/PackageManagerShellCommand;->displayPackageFilePath(Ljava/lang/String;I)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doAbandonSession(IZ)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doCommitSession(IZ)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doCreateSession(Landroid/content/pm/PackageInstaller$SessionParams;Ljava/lang/String;I)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->doRunInstall(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;)I
+PLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplit(ILjava/lang/String;JLjava/lang/String;Z)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->doWriteSplits(ILjava/util/ArrayList;JZ)I
+HPLcom/android/server/pm/PackageManagerShellCommand;->getRemainingArgs()Ljava/util/ArrayList;
+HPLcom/android/server/pm/PackageManagerShellCommand;->makeInstallParams()Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;
 HSPLcom/android/server/pm/PackageManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/pm/PackageManagerShellCommand;->runClear()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runCompile()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstall()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstallCommit()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstallCreate()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runInstallWrite()I
 HSPLcom/android/server/pm/PackageManagerShellCommand;->runList()I
+PLcom/android/server/pm/PackageManagerShellCommand;->runListInstrumentation()I
 HSPLcom/android/server/pm/PackageManagerShellCommand;->runListPackages(Z)I
+PLcom/android/server/pm/PackageManagerShellCommand;->runPath()I
+HPLcom/android/server/pm/PackageManagerShellCommand;->runUninstall()I
+HPLcom/android/server/pm/PackageManagerShellCommand;->setParamsSize(Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;Ljava/util/List;)V
+HSPLcom/android/server/pm/PackageManagerShellCommand;->translateUserId(IILjava/lang/String;)I
 HSPLcom/android/server/pm/PackageSetting;-><init>(Lcom/android/server/pm/PackageSetting;)V
-HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILjava/lang/String;Ljava/util/List;I[Ljava/lang/String;[J)V
+HSPLcom/android/server/pm/PackageSetting;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIII[Ljava/lang/String;[J)V
+HSPLcom/android/server/pm/PackageSetting;->areInstallPermissionsFixed()Z
+HSPLcom/android/server/pm/PackageSetting;->doCopy(Lcom/android/server/pm/PackageSetting;)V
+HPLcom/android/server/pm/PackageSetting;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JLjava/util/List;)V
+HSPLcom/android/server/pm/PackageSetting;->getAppId()I
 HSPLcom/android/server/pm/PackageSetting;->getPermissionsState()Lcom/android/server/pm/permission/PermissionsState;
-PLcom/android/server/pm/PackageSetting;->isSharedUser()Z
+PLcom/android/server/pm/PackageSetting;->getSharedUser()Lcom/android/server/pm/SharedUserSetting;
+HSPLcom/android/server/pm/PackageSetting;->getSharedUserId()I
+HSPLcom/android/server/pm/PackageSetting;->isPrivileged()Z
+HSPLcom/android/server/pm/PackageSetting;->isSharedUser()Z
+HSPLcom/android/server/pm/PackageSetting;->isSystem()Z
+HSPLcom/android/server/pm/PackageSetting;->isUpdatedSystem()Z
+HSPLcom/android/server/pm/PackageSetting;->setAndroidPackage(Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/PackageSetting;->setInstallPermissionsFixed(Z)V
 HSPLcom/android/server/pm/PackageSetting;->toString()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageSetting;->updateFrom(Lcom/android/server/pm/PackageSetting;)V
-PLcom/android/server/pm/PackageSetting;->writeToProto(Landroid/util/proto/ProtoOutputStream;JLjava/util/List;)V
-HSPLcom/android/server/pm/PackageSettingBase;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[J)V
+HSPLcom/android/server/pm/PackageSettingBase;-><clinit>()V
+HSPLcom/android/server/pm/PackageSettingBase;-><init>(Lcom/android/server/pm/PackageSettingBase;Ljava/lang/String;)V
+HSPLcom/android/server/pm/PackageSettingBase;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JII[Ljava/lang/String;[J)V
+PLcom/android/server/pm/PackageSettingBase;->addOrUpdateSuspension(Ljava/lang/String;Landroid/content/pm/SuspendDialogInfo;Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;I)V
+PLcom/android/server/pm/PackageSettingBase;->clearDomainVerificationStatusForUser(I)V
 HSPLcom/android/server/pm/PackageSettingBase;->disableComponentLPw(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/PackageSettingBase;->doCopy(Lcom/android/server/pm/PackageSettingBase;)V
 HSPLcom/android/server/pm/PackageSettingBase;->enableComponentLPw(Ljava/lang/String;I)Z
-PLcom/android/server/pm/PackageSettingBase;->getCeDataInode(I)J
+HSPLcom/android/server/pm/PackageSettingBase;->getCeDataInode(I)J
 HSPLcom/android/server/pm/PackageSettingBase;->getCurrentEnabledStateLPr(Ljava/lang/String;I)I
-PLcom/android/server/pm/PackageSettingBase;->getDisabledComponents(I)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageSettingBase;->getDomainVerificationStatusForUser(I)J
+HSPLcom/android/server/pm/PackageSettingBase;->getDisabledComponents(I)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageSettingBase;->getDistractionFlags(I)I
+HPLcom/android/server/pm/PackageSettingBase;->getDomainVerificationStatusForUser(I)J
 HSPLcom/android/server/pm/PackageSettingBase;->getEnabled(I)I
-PLcom/android/server/pm/PackageSettingBase;->getEnabledComponents(I)Landroid/util/ArraySet;
-PLcom/android/server/pm/PackageSettingBase;->getHarmfulAppWarning(I)Ljava/lang/String;
-PLcom/android/server/pm/PackageSettingBase;->getHidden(I)Z
-PLcom/android/server/pm/PackageSettingBase;->getInstallReason(I)I
+HSPLcom/android/server/pm/PackageSettingBase;->getEnabledComponents(I)Landroid/util/ArraySet;
+HSPLcom/android/server/pm/PackageSettingBase;->getHarmfulAppWarning(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->getHidden(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getInstallReason(I)I
 HSPLcom/android/server/pm/PackageSettingBase;->getInstalled(I)Z
 HSPLcom/android/server/pm/PackageSettingBase;->getInstantApp(I)Z
-PLcom/android/server/pm/PackageSettingBase;->getIntentFilterVerificationInfo()Landroid/content/pm/IntentFilterVerificationInfo;
-PLcom/android/server/pm/PackageSettingBase;->getLastDisabledAppCaller(I)Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->getIntentFilterVerificationInfo()Landroid/content/pm/IntentFilterVerificationInfo;
+HPLcom/android/server/pm/PackageSettingBase;->getLastDisabledAppCaller(I)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageSettingBase;->getNotInstalledUserIds()[I
-PLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z
-PLcom/android/server/pm/PackageSettingBase;->getOverlayPaths(I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->getNotLaunched(I)Z
+HPLcom/android/server/pm/PackageSettingBase;->getOverlayPaths(I)[Ljava/lang/String;
+HPLcom/android/server/pm/PackageSettingBase;->getOverlayPathsForLibrary(I)Ljava/util/Map;
+HSPLcom/android/server/pm/PackageSettingBase;->getPermissionsState()Lcom/android/server/pm/permission/PermissionsState;
 HSPLcom/android/server/pm/PackageSettingBase;->getSigningDetails()Landroid/content/pm/PackageParser$SigningDetails;
-PLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z
-PLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z
+HSPLcom/android/server/pm/PackageSettingBase;->getStopped(I)Z
+HSPLcom/android/server/pm/PackageSettingBase;->getSuspended(I)Z
 HSPLcom/android/server/pm/PackageSettingBase;->getVirtulalPreload(I)Z
-HSPLcom/android/server/pm/PackageSettingBase;->init(Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
+PLcom/android/server/pm/PackageSettingBase;->isAnyInstalled([I)Z
 HSPLcom/android/server/pm/PackageSettingBase;->modifyUserState(I)Landroid/content/pm/PackageUserState;
 HSPLcom/android/server/pm/PackageSettingBase;->modifyUserStateComponents(IZZ)Landroid/content/pm/PackageUserState;
-HSPLcom/android/server/pm/PackageSettingBase;->queryInstalledUsers([IZ)[I
+HPLcom/android/server/pm/PackageSettingBase;->queryInstalledUsers([IZ)[I
 HSPLcom/android/server/pm/PackageSettingBase;->readUserState(I)Landroid/content/pm/PackageUserState;
+HPLcom/android/server/pm/PackageSettingBase;->removeSuspension(Ljava/lang/String;I)V
+PLcom/android/server/pm/PackageSettingBase;->removeUser(I)V
 HSPLcom/android/server/pm/PackageSettingBase;->restoreComponentLPw(Ljava/lang/String;I)Z
+PLcom/android/server/pm/PackageSettingBase;->setCeDataInode(JI)V
+PLcom/android/server/pm/PackageSettingBase;->setDomainVerificationStatusForUser(III)V
 HSPLcom/android/server/pm/PackageSettingBase;->setEnabled(IILjava/lang/String;)V
+PLcom/android/server/pm/PackageSettingBase;->setHidden(ZI)V
+PLcom/android/server/pm/PackageSettingBase;->setInstallReason(II)V
+PLcom/android/server/pm/PackageSettingBase;->setInstallSource(Lcom/android/server/pm/InstallSource;)V
+HSPLcom/android/server/pm/PackageSettingBase;->setInstalled(ZI)V
+PLcom/android/server/pm/PackageSettingBase;->setInstallerPackageName(Ljava/lang/String;)V
 HSPLcom/android/server/pm/PackageSettingBase;->setIntentFilterVerificationInfo(Landroid/content/pm/IntentFilterVerificationInfo;)V
-HSPLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZIZLjava/lang/String;Landroid/content/pm/SuspendDialogInfo;Landroid/os/PersistableBundle;Landroid/os/PersistableBundle;ZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;IIILjava/lang/String;)V
+HSPLcom/android/server/pm/PackageSettingBase;->setIsOrphaned(Z)V
+PLcom/android/server/pm/PackageSettingBase;->setNotLaunched(ZI)V
+HSPLcom/android/server/pm/PackageSettingBase;->setOverlayPaths(Ljava/util/List;I)V
+HSPLcom/android/server/pm/PackageSettingBase;->setOverlayPathsForLibrary(Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/PackageSettingBase;->setStopped(ZI)V
+HSPLcom/android/server/pm/PackageSettingBase;->setTimeStamp(J)V
+PLcom/android/server/pm/PackageSettingBase;->setUpdateAvailable(Z)V
+HSPLcom/android/server/pm/PackageSettingBase;->setUserState(IJIZZZZIZLandroid/util/ArrayMap;ZZLjava/lang/String;Landroid/util/ArraySet;Landroid/util/ArraySet;IIILjava/lang/String;)V
 HSPLcom/android/server/pm/PackageSettingBase;->updateFrom(Lcom/android/server/pm/PackageSettingBase;)Lcom/android/server/pm/PackageSettingBase;
-PLcom/android/server/pm/PackageSettingBase;->writeUsersInfoToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/pm/PackageSettingBase;->writeUsersInfoToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/pm/PackageSignatures;-><init>()V
 HSPLcom/android/server/pm/PackageSignatures;->readCertsListXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/ArrayList;Ljava/util/ArrayList;IZLandroid/content/pm/PackageParser$SigningDetails$Builder;)I
 HSPLcom/android/server/pm/PackageSignatures;->readXml(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/ArrayList;)V
-PLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String;
+HPLcom/android/server/pm/PackageSignatures;->toString()Ljava/lang/String;
 HSPLcom/android/server/pm/PackageSignatures;->writeCertsListXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/ArrayList;[Landroid/content/pm/Signature;Z)V
 HSPLcom/android/server/pm/PackageSignatures;->writeXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/util/ArrayList;)V
 HSPLcom/android/server/pm/PackageUsage;-><init>()V
-PLcom/android/server/pm/PackageUsage;->isHistoricalPackageUsageAvailable()Z
+HSPLcom/android/server/pm/PackageUsage;->isHistoricalPackageUsageAvailable()Z
 HSPLcom/android/server/pm/PackageUsage;->parseAsLong(Ljava/lang/String;)J
 HSPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/PackageUsage;->readInternal(Ljava/util/Map;)V
+HSPLcom/android/server/pm/PackageUsage;->readLine(Ljava/io/InputStream;Ljava/lang/StringBuffer;)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageUsage;->readToken(Ljava/io/InputStream;Ljava/lang/StringBuffer;C)Ljava/lang/String;
 HSPLcom/android/server/pm/PackageUsage;->readVersion1LP(Ljava/util/Map;Ljava/io/InputStream;Ljava/lang/StringBuffer;)V
 PLcom/android/server/pm/PackageUsage;->writeInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/PackageUsage;->writeInternal(Ljava/util/Map;)V
+HPLcom/android/server/pm/PackageUsage;->writeInternal(Ljava/util/Map;)V
+PLcom/android/server/pm/PackageVerificationResponse;-><init>(II)V
 PLcom/android/server/pm/PackageVerificationState;-><init>(ILcom/android/server/pm/PackageManagerService$InstallParams;)V
+PLcom/android/server/pm/PackageVerificationState;-><init>(Lcom/android/server/pm/PackageManagerService$InstallParams;)V
+PLcom/android/server/pm/PackageVerificationState;->areAllVerificationsComplete()Z
 PLcom/android/server/pm/PackageVerificationState;->extendTimeout()V
 PLcom/android/server/pm/PackageVerificationState;->getInstallParams()Lcom/android/server/pm/PackageManagerService$InstallParams;
 PLcom/android/server/pm/PackageVerificationState;->isInstallAllowed()Z
+PLcom/android/server/pm/PackageVerificationState;->isIntegrityVerificationComplete()Z
 PLcom/android/server/pm/PackageVerificationState;->isVerificationComplete()Z
+PLcom/android/server/pm/PackageVerificationState;->setIntegrityVerificationResult(I)V
+PLcom/android/server/pm/PackageVerificationState;->setRequiredVerifierUid(I)V
 PLcom/android/server/pm/PackageVerificationState;->setVerifierResponse(II)Z
 PLcom/android/server/pm/PackageVerificationState;->timeoutExtended()Z
+HSPLcom/android/server/pm/ParallelPackageParser$ParseResult;-><init>()V
+HSPLcom/android/server/pm/ParallelPackageParser;-><init>(Landroid/content/pm/PackageParser;Ljava/util/concurrent/ExecutorService;)V
 HSPLcom/android/server/pm/ParallelPackageParser;-><init>([Ljava/lang/String;ZLandroid/util/DisplayMetrics;Ljava/io/File;Landroid/content/pm/PackageParser$Callback;)V
 HSPLcom/android/server/pm/ParallelPackageParser;->close()V
 HSPLcom/android/server/pm/ParallelPackageParser;->lambda$submit$0$ParallelPackageParser(Ljava/io/File;I)V
-HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/PackageParser$Package;
+HSPLcom/android/server/pm/ParallelPackageParser;->makeExecutorService()Ljava/util/concurrent/ExecutorService;
+HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Landroid/content/pm/PackageParser;Ljava/io/File;I)Landroid/content/pm/parsing/ParsedPackage;
+HSPLcom/android/server/pm/ParallelPackageParser;->parsePackage(Ljava/io/File;I)Landroid/content/pm/parsing/ParsedPackage;
+HSPLcom/android/server/pm/ParallelPackageParser;->submit(Ljava/io/File;I)V
 HSPLcom/android/server/pm/ParallelPackageParser;->take()Lcom/android/server/pm/ParallelPackageParser$ParseResult;
 HSPLcom/android/server/pm/PersistentPreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/PersistentPreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/pm/PersistentPreferredIntentResolver;-><init>()V
 HSPLcom/android/server/pm/PersistentPreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
 HSPLcom/android/server/pm/PersistentPreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PersistentPreferredActivity;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;-><init>()V
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->access$000(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->access$100(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Set;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->access$200(Lcom/android/server/pm/Policy$PolicyBuilder;)Ljava/util/Map;
 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;->getMatchedSeInfo(Landroid/content/pm/PackageParser$Package;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy$PolicyBuilder;->validateValue(Ljava/lang/String;)Z
+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$1;)V
+HSPLcom/android/server/pm/Policy;->access$400(Lcom/android/server/pm/Policy;)Ljava/util/Set;
+HSPLcom/android/server/pm/Policy;->access$500(Lcom/android/server/pm/Policy;)Ljava/lang/String;
+HSPLcom/android/server/pm/Policy;->access$600(Lcom/android/server/pm/Policy;)Ljava/util/Map;
+HSPLcom/android/server/pm/Policy;->getMatchedSeInfo(Landroid/content/pm/parsing/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/PreferredActivity;-><init>(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/pm/PolicyComparator;->foundDuplicate()Z
+PLcom/android/server/pm/PreferredActivity;-><init>(Landroid/content/IntentFilter;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/pm/PreferredActivity;-><init>(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/PreferredActivity;->onReadTag(Ljava/lang/String;Lorg/xmlpull/v1/XmlPullParser;)Z
 HSPLcom/android/server/pm/PreferredActivity;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-HSPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
+PLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;I[Landroid/content/ComponentName;Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/pm/PreferredComponent;-><init>(Lcom/android/server/pm/PreferredComponent$Callbacks;Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/pm/PreferredComponent;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/pm/PreferredComponent;->discardObsoleteComponents(Ljava/util/List;)[Landroid/content/ComponentName;
+HPLcom/android/server/pm/PreferredComponent;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/Object;)V
 HSPLcom/android/server/pm/PreferredComponent;->getParseError()Ljava/lang/String;
-HSPLcom/android/server/pm/PreferredComponent;->isSuperset(Ljava/util/List;Z)Z
+PLcom/android/server/pm/PreferredComponent;->isSuperset(Ljava/util/List;Z)Z
 HSPLcom/android/server/pm/PreferredComponent;->sameSet(Ljava/util/List;Z)Z
-HSPLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z
+HPLcom/android/server/pm/PreferredComponent;->sameSet([Landroid/content/ComponentName;)Z
 HSPLcom/android/server/pm/PreferredComponent;->writeToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HSPLcom/android/server/pm/PreferredIntentResolver;-><init>()V
 PLcom/android/server/pm/PreferredIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/content/IntentFilter;)V
 PLcom/android/server/pm/PreferredIntentResolver;->dumpFilter(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)V
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
+PLcom/android/server/pm/PreferredIntentResolver;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/pm/PreferredActivity;)Z
 HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Landroid/content/IntentFilter;
 HSPLcom/android/server/pm/PreferredIntentResolver;->newArray(I)[Lcom/android/server/pm/PreferredActivity;
 HSPLcom/android/server/pm/ProcessLoggingHandler;-><init>()V
 HSPLcom/android/server/pm/ProcessLoggingHandler;->computeHashOfApkFile(Ljava/lang/String;)[B
 HSPLcom/android/server/pm/ProcessLoggingHandler;->computeStringHashOfApk(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/ProcessLoggingHandler;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/pm/ProcessLoggingHandler;->invalidateProcessLoggingBaseApkHash(Ljava/lang/String;)V
+HPLcom/android/server/pm/ProcessLoggingHandler;->invalidateProcessLoggingBaseApkHash(Ljava/lang/String;)V
 HSPLcom/android/server/pm/ProtectedPackages;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/ProtectedPackages;->getDeviceOwnerOrProfileOwnerPackage(I)Ljava/lang/String;
 HSPLcom/android/server/pm/ProtectedPackages;->hasDeviceOwnerOrProfileOwner(ILjava/lang/String;)Z
+PLcom/android/server/pm/ProtectedPackages;->isPackageDataProtected(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/ProtectedPackages;->isPackageStateProtected(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/ProtectedPackages;->isProtectedPackage(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/ProtectedPackages;->setDeviceAndProfileOwnerPackages(ILjava/lang/String;Landroid/util/SparseArray;)V
-HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Landroid/content/pm/PackageParser$Package;ZII)Ljava/lang/String;
+HSPLcom/android/server/pm/ProtectedPackages;->setDeviceOwnerProtectedPackages(Ljava/util/List;)V
+HSPLcom/android/server/pm/SELinuxMMAC;-><clinit>()V
+HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/SharedUserSetting;Lcom/android/server/compat/PlatformCompat;)Ljava/lang/String;
+HSPLcom/android/server/pm/SELinuxMMAC;->getSeInfo(Landroid/content/pm/parsing/AndroidPackage;ZI)Ljava/lang/String;
+HSPLcom/android/server/pm/SELinuxMMAC;->getTargetSdkVersionForSeInfo(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/SharedUserSetting;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;
 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;->copyFrom(Lcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/pm/SettingBase;->doCopy(Lcom/android/server/pm/SettingBase;)V
+HSPLcom/android/server/pm/SettingBase;->getPermissionsState()Lcom/android/server/pm/permission/PermissionsState;
 HSPLcom/android/server/pm/SettingBase;->setFlags(I)V
 HSPLcom/android/server/pm/SettingBase;->setPrivateFlags(I)V
+HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>()V
+HSPLcom/android/server/pm/Settings$KernelPackageState;-><init>(Lcom/android/server/pm/Settings$1;)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;-><init>(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence$MyHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;-><init>(Lcom/android/server/pm/Settings;Ljava/lang/Object;)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->access$100(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->access$300(Lcom/android/server/pm/Settings$RuntimePermissionPersistence;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->areDefaultRuntimePermissionsGrantedLPr(I)Z
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getPermissionsFromPermissionsState(Lcom/android/server/pm/permission/PermissionsState;I)Ljava/util/List;
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->getVersionLPr(I)I
+HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->onUserRemovedLPw(I)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parsePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/permission/PermissionsState;I)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->parseRuntimePermissionsLPr(Lorg/xmlpull/v1/XmlPullParser;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readLegacyStateForUserSyncLPr(I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readPermissionsStateLpr(Ljava/util/List;Lcom/android/server/pm/permission/PermissionsState;I)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->readStateForUserSyncLPr(I)V
+HPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->revokeRuntimePermissionsAndClearFlags(Lcom/android/server/pm/SettingBase;I)V
+HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->setRuntimePermissionsFingerPrintLPr(Ljava/lang/String;I)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->setVersionLPr(II)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissions(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserAsyncLPr(I)V
+PLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsForUserSyncLPr(I)V
 HSPLcom/android/server/pm/Settings$RuntimePermissionPersistence;->writePermissionsSync(I)V
+HSPLcom/android/server/pm/Settings$VersionInfo;-><init>()V
+HSPLcom/android/server/pm/Settings;-><clinit>()V
 HSPLcom/android/server/pm/Settings;-><init>(Ljava/io/File;Lcom/android/server/pm/permission/PermissionSettings;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/Settings;->access$200(Lcom/android/server/pm/Settings;I)Ljava/io/File;
 HSPLcom/android/server/pm/Settings;->acquireAndRegisterNewAppIdLPw(Lcom/android/server/pm/SettingBase;)I
-HSPLcom/android/server/pm/Settings;->addPackageLPw(Ljava/lang/String;Ljava/lang/String;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJIILjava/lang/String;Ljava/util/List;[Ljava/lang/String;[J)Lcom/android/server/pm/PackageSetting;
+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;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IJII[Ljava/lang/String;[J)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;
-HSPLcom/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/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILandroid/os/UserHandle;ZZZLjava/lang/String;Ljava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/Settings;->applyDefaultPreferredAppsLPw(I)V
+HSPLcom/android/server/pm/Settings;->areDefaultRuntimePermissionsGrantedLPr(I)Z
+PLcom/android/server/pm/Settings;->createIntentFilterVerificationIfNeededLPw(Ljava/lang/String;Landroid/util/ArraySet;)Landroid/content/pm/IntentFilterVerificationInfo;
+HSPLcom/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/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JIILandroid/os/UserHandle;ZZZLcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J)Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/Settings;->createNewUserLI(Lcom/android/server/pm/PackageManagerService;Lcom/android/server/pm/Installer;ILjava/util/Set;[Ljava/lang/String;)V
 HSPLcom/android/server/pm/Settings;->disableSystemPackageLPw(Ljava/lang/String;Z)Z
-PLcom/android/server/pm/Settings;->dumpGidsLPr(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
-PLcom/android/server/pm/Settings;->dumpInstallPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/permission/PermissionsState;)V
-PLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;Ljava/text/SimpleDateFormat;Ljava/util/Date;Ljava/util/List;ZZ)V
-PLcom/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;->dumpPackagesProto(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/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/PermissionsState;)V
+HPLcom/android/server/pm/Settings;->dumpPackageLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/PackageSetting;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
+HPLcom/android/server/pm/Settings;->dumpPackagesProto(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/pm/Settings;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;)V
 PLcom/android/server/pm/Settings;->dumpReadMessagesLPr(Ljava/io/PrintWriter;Lcom/android/server/pm/DumpState;)V
-PLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Z)V
-PLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
-PLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Landroid/content/pm/PackageParser$Package;)V
-PLcom/android/server/pm/Settings;->dumpVersionLPr(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/pm/Settings;->dumpRuntimePermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Ljava/util/List;Z)V
+HPLcom/android/server/pm/Settings;->dumpSharedUsersLPr(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;Lcom/android/server/pm/DumpState;Z)V
+PLcom/android/server/pm/Settings;->dumpSharedUsersProto(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/pm/Settings;->dumpSplitNames(Ljava/io/PrintWriter;Landroid/content/pm/parsing/AndroidPackage;)V
+HPLcom/android/server/pm/Settings;->dumpVersionLPr(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/pm/Settings;->editCrossProfileIntentResolverLPw(I)Lcom/android/server/pm/CrossProfileIntentResolver;
+HSPLcom/android/server/pm/Settings;->editPersistentPreferredActivitiesLPw(I)Lcom/android/server/pm/PersistentPreferredIntentResolver;
+HSPLcom/android/server/pm/Settings;->editPreferredActivitiesLPw(I)Lcom/android/server/pm/PreferredIntentResolver;
 HSPLcom/android/server/pm/Settings;->enableSystemPackageLPw(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
+HSPLcom/android/server/pm/Settings;->findOrCreateVersion(Ljava/lang/String;)Lcom/android/server/pm/Settings$VersionInfo;
 HSPLcom/android/server/pm/Settings;->getAllSharedUsersLPw()Ljava/util/Collection;
 HSPLcom/android/server/pm/Settings;->getAllUsers(Lcom/android/server/pm/UserManagerService;)Ljava/util/List;
 HSPLcom/android/server/pm/Settings;->getApplicationEnabledSettingLPr(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/Settings;->getChildSettingsLPr(Lcom/android/server/pm/PackageSetting;)[Lcom/android/server/pm/PackageSetting;
+HPLcom/android/server/pm/Settings;->getBlockUninstallLPr(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/Settings;->getComponentEnabledSettingLPr(Landroid/content/ComponentName;I)I
+HSPLcom/android/server/pm/Settings;->getDefaultRuntimePermissionsVersionLPr(I)I
 PLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Lcom/android/server/pm/PackageSetting;)Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/Settings;->getDisabledSystemPkgLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/Settings;->getHarmfulAppWarningLPr(Ljava/lang/String;I)Ljava/lang/String;
-HSPLcom/android/server/pm/Settings;->getInstallerPackageNameLPr(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/Settings;->getIntentFilterVerificationsLPr(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/pm/Settings;->getIntentFilterVerificationLPr(Ljava/lang/String;)Landroid/content/pm/IntentFilterVerificationInfo;
+PLcom/android/server/pm/Settings;->getIntentFilterVerificationStatusLPr(Ljava/lang/String;I)I
+HPLcom/android/server/pm/Settings;->getIntentFilterVerificationsLPr(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/pm/Settings;->getInternalVersion()Lcom/android/server/pm/Settings$VersionInfo;
 HSPLcom/android/server/pm/Settings;->getPackageLPr(Ljava/lang/String;)Lcom/android/server/pm/PackageSetting;
 HSPLcom/android/server/pm/Settings;->getRenamedPackageLPr(Ljava/lang/String;)Ljava/lang/String;
@@ -11367,12 +25150,17 @@
 HSPLcom/android/server/pm/Settings;->getSharedUserLPw(Ljava/lang/String;IIZ)Lcom/android/server/pm/SharedUserSetting;
 HSPLcom/android/server/pm/Settings;->getUserPackagesStateBackupFile(I)Ljava/io/File;
 HSPLcom/android/server/pm/Settings;->getUserPackagesStateFile(I)Ljava/io/File;
+HSPLcom/android/server/pm/Settings;->getUserRuntimePermissionsFile(I)Ljava/io/File;
+HSPLcom/android/server/pm/Settings;->getUsers(Lcom/android/server/pm/UserManagerService;Z)Ljava/util/List;
 HSPLcom/android/server/pm/Settings;->getVolumePackagesLPr(Ljava/lang/String;)Ljava/util/List;
-HSPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/Settings;->insertPackageSettingLPw(Lcom/android/server/pm/PackageSetting;Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/Settings;->isAdbInstallDisallowed(Lcom/android/server/pm/UserManagerService;I)Z
 HSPLcom/android/server/pm/Settings;->isDisabledSystemPackageLPr(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/Settings;->isOrphaned(Ljava/lang/String;)Z
-PLcom/android/server/pm/Settings;->permissionFlagsToString(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/Settings;->printFlags(Ljava/io/PrintWriter;I[Ljava/lang/Object;)V
+HSPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/ComponentInfo;II)Z
+HSPLcom/android/server/pm/Settings;->isEnabledAndMatchLPr(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/ComponentParseUtils$ParsedComponent;II)Z
+PLcom/android/server/pm/Settings;->isOrphaned(Ljava/lang/String;)Z
+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
 HSPLcom/android/server/pm/Settings;->pruneSharedUsersLPw()V
 HSPLcom/android/server/pm/Settings;->readBlockUninstallPackagesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
 HSPLcom/android/server/pm/Settings;->readComponentsLPr(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet;
@@ -11388,738 +25176,1553 @@
 HSPLcom/android/server/pm/Settings;->readPreferredActivitiesLPw(Lorg/xmlpull/v1/XmlPullParser;I)V
 HSPLcom/android/server/pm/Settings;->readRestoredIntentFilterVerifications(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/Settings;->readSharedUserLPw(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/pm/Settings;->registerAppIdLPw(Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->readUsesStaticLibLPw(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->registerAppIdLPw(Lcom/android/server/pm/PackageSetting;)Z
 HSPLcom/android/server/pm/Settings;->registerExistingAppIdLPw(ILcom/android/server/pm/SettingBase;Ljava/lang/Object;)Z
+PLcom/android/server/pm/Settings;->removeAppIdLPw(I)V
+PLcom/android/server/pm/Settings;->removeCrossProfileIntentFiltersLPw(I)V
+PLcom/android/server/pm/Settings;->removeDefaultBrowserPackageNameLPw(I)Ljava/lang/String;
+PLcom/android/server/pm/Settings;->removeDisabledSystemPackageLPw(Ljava/lang/String;)V
 PLcom/android/server/pm/Settings;->removeInstallerPackageStatus(Ljava/lang/String;)V
+PLcom/android/server/pm/Settings;->removeIntentFilterVerificationLPw(Ljava/lang/String;I)Z
+PLcom/android/server/pm/Settings;->removeIntentFilterVerificationLPw(Ljava/lang/String;[I)Z
 PLcom/android/server/pm/Settings;->removePackageLPw(Ljava/lang/String;)I
-PLcom/android/server/pm/Settings;->setBlockUninstallLPw(ILjava/lang/String;Z)V
+HPLcom/android/server/pm/Settings;->removeUserLPw(I)V
+HPLcom/android/server/pm/Settings;->setBlockUninstallLPw(ILjava/lang/String;Z)V
+PLcom/android/server/pm/Settings;->setDefaultRuntimePermissionsVersionLPr(II)V
+PLcom/android/server/pm/Settings;->setFirstAvailableUid(I)V
+PLcom/android/server/pm/Settings;->setInstallerPackageName(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/pm/Settings;->setPackageStoppedStateLPw(Lcom/android/server/pm/PackageManagerService;Ljava/lang/String;ZZII)Z
+HSPLcom/android/server/pm/Settings;->setRuntimePermissionsFingerPrintLPr(Ljava/lang/String;I)V
 PLcom/android/server/pm/Settings;->updateIntentFilterVerificationStatusLPw(Ljava/lang/String;II)Z
-HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILjava/util/List;Lcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J)V
+HSPLcom/android/server/pm/Settings;->updatePackageSetting(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/SharedUserSetting;Ljava/io/File;Ljava/io/File;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;IILcom/android/server/pm/UserManagerService;[Ljava/lang/String;[J)V
+PLcom/android/server/pm/Settings;->updateSharedUserPermsLPw(Lcom/android/server/pm/PackageSetting;I)I
 PLcom/android/server/pm/Settings;->wasPackageEverLaunchedLPr(Ljava/lang/String;I)Z
-PLcom/android/server/pm/Settings;->writeAllDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
+HPLcom/android/server/pm/Settings;->writeAllDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
+HSPLcom/android/server/pm/Settings;->writeAllRuntimePermissionsLPr()V
 HSPLcom/android/server/pm/Settings;->writeAllUsersPackageRestrictionsLPr()V
 HSPLcom/android/server/pm/Settings;->writeBlockUninstallPackagesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
-HSPLcom/android/server/pm/Settings;->writeChildPackagesLPw(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
 HSPLcom/android/server/pm/Settings;->writeCrossProfileIntentFiltersLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
 HSPLcom/android/server/pm/Settings;->writeDefaultAppsLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
 HSPLcom/android/server/pm/Settings;->writeDisabledSysPackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->writeDomainVerificationsLPr(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/IntentFilterVerificationInfo;)V
 HSPLcom/android/server/pm/Settings;->writeIntToFile(Ljava/io/File;I)V
 HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr()V
 HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Lcom/android/server/pm/PackageSetting;)V
 HSPLcom/android/server/pm/Settings;->writeKernelMappingLPr(Ljava/lang/String;I[I)V
+PLcom/android/server/pm/Settings;->writeKernelRemoveUserLPr(I)V
 HSPLcom/android/server/pm/Settings;->writeKeySetAliasesLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
 HSPLcom/android/server/pm/Settings;->writeLPr()V
 HSPLcom/android/server/pm/Settings;->writePackageLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/Settings;->writePackageListLPr()V
 HSPLcom/android/server/pm/Settings;->writePackageListLPr(I)V
+HSPLcom/android/server/pm/Settings;->writePackageListLPrInternal(I)V
 HSPLcom/android/server/pm/Settings;->writePackageRestrictionsLPr(I)V
 HSPLcom/android/server/pm/Settings;->writePermissionsLPr(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;)V
 HSPLcom/android/server/pm/Settings;->writePersistentPreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;I)V
 HSPLcom/android/server/pm/Settings;->writePreferredActivitiesLPr(Lorg/xmlpull/v1/XmlSerializer;IZ)V
+HSPLcom/android/server/pm/Settings;->writeRuntimePermissionsForUserLPr(IZ)V
+HSPLcom/android/server/pm/Settings;->writeSigningKeySetLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
 HSPLcom/android/server/pm/Settings;->writeUpgradeKeySetsLPr(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/PackageKeySetData;)V
 HSPLcom/android/server/pm/Settings;->writeUserRestrictionsLPw(Lcom/android/server/pm/PackageSetting;Lcom/android/server/pm/PackageSetting;)V
 HSPLcom/android/server/pm/Settings;->writeUsesStaticLibLPw(Lorg/xmlpull/v1/XmlSerializer;[Ljava/lang/String;[J)V
+HPLcom/android/server/pm/ShareTargetInfo$TargetData;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ShareTargetInfo;-><init>([Lcom/android/server/pm/ShareTargetInfo$TargetData;Ljava/lang/String;[Ljava/lang/String;)V
+HPLcom/android/server/pm/ShareTargetInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/ShareTargetInfo;
+PLcom/android/server/pm/ShareTargetInfo;->parseTargetData(Lorg/xmlpull/v1/XmlPullParser;)Lcom/android/server/pm/ShareTargetInfo$TargetData;
+HPLcom/android/server/pm/ShareTargetInfo;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/pm/SharedUserSetting;-><init>(Ljava/lang/String;II)V
 HSPLcom/android/server/pm/SharedUserSetting;->addPackage(Lcom/android/server/pm/PackageSetting;)V
+HSPLcom/android/server/pm/SharedUserSetting;->addProcesses(Landroid/util/ArrayMap;)V
+PLcom/android/server/pm/SharedUserSetting;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/pm/SharedUserSetting;->fixSeInfoLocked()V
-HSPLcom/android/server/pm/SharedUserSetting;->getNotInstalledUserIds()[I
 HSPLcom/android/server/pm/SharedUserSetting;->getPackages()Ljava/util/List;
+HSPLcom/android/server/pm/SharedUserSetting;->getPermissionsState()Lcom/android/server/pm/permission/PermissionsState;
 HSPLcom/android/server/pm/SharedUserSetting;->isPrivileged()Z
-HSPLcom/android/server/pm/SharedUserSetting;->removePackage(Lcom/android/server/pm/PackageSetting;)Z
-PLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String;
+PLcom/android/server/pm/SharedUserSetting;->removePackage(Lcom/android/server/pm/PackageSetting;)Z
+HPLcom/android/server/pm/SharedUserSetting;->toString()Ljava/lang/String;
+HSPLcom/android/server/pm/SharedUserSetting;->updateProcesses()V
+HPLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[B)V
+HPLcom/android/server/pm/ShortcutBitmapSaver$PendingItem;-><init>(Landroid/content/pm/ShortcutInfo;[BLcom/android/server/pm/ShortcutBitmapSaver$1;)V
 HSPLcom/android/server/pm/ShortcutBitmapSaver;-><init>(Lcom/android/server/pm/ShortcutService;)V
 PLcom/android/server/pm/ShortcutBitmapSaver;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/pm/ShortcutBitmapSaver;->getBitmapPathMayWaitLocked(Landroid/content/pm/ShortcutInfo;)Ljava/lang/String;
 PLcom/android/server/pm/ShortcutBitmapSaver;->lambda$new$1$ShortcutBitmapSaver()V
-PLcom/android/server/pm/ShortcutBitmapSaver;->processPendingItems()Z
+HPLcom/android/server/pm/ShortcutBitmapSaver;->lambda$waitForAllSavesLocked$0(Ljava/util/concurrent/CountDownLatch;)V
+HPLcom/android/server/pm/ShortcutBitmapSaver;->processPendingItems()Z
 PLcom/android/server/pm/ShortcutBitmapSaver;->removeIcon(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutBitmapSaver;->saveBitmapLocked(Landroid/content/pm/ShortcutInfo;ILandroid/graphics/Bitmap$CompressFormat;I)V
-PLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z
-PLcom/android/server/pm/ShortcutDumpFiles;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-PLcom/android/server/pm/ShortcutDumpFiles;->dumpAll(Ljava/io/PrintWriter;)V
+HPLcom/android/server/pm/ShortcutBitmapSaver;->saveBitmapLocked(Landroid/content/pm/ShortcutInfo;ILandroid/graphics/Bitmap$CompressFormat;I)V
+HPLcom/android/server/pm/ShortcutBitmapSaver;->waitForAllSavesLocked()Z
+HSPLcom/android/server/pm/ShortcutDumpFiles;-><init>(Lcom/android/server/pm/ShortcutService;)V
+HPLcom/android/server/pm/ShortcutDumpFiles;->dumpAll(Ljava/io/PrintWriter;)V
+PLcom/android/server/pm/ShortcutDumpFiles;->lambda$dumpAll$1(Ljava/io/File;)Z
+PLcom/android/server/pm/ShortcutDumpFiles;->lambda$dumpAll$2(Ljava/io/File;)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutDumpFiles;->lambda$save$0([BLjava/io/PrintWriter;)V
 PLcom/android/server/pm/ShortcutDumpFiles;->save(Ljava/lang/String;Ljava/util/function/Consumer;)Z
 PLcom/android/server/pm/ShortcutDumpFiles;->save(Ljava/lang/String;[B)Z
+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;->cleanUpPackage(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutLauncher;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+PLcom/android/server/pm/ShortcutLauncher;->addPinnedShortcut(Ljava/lang/String;ILjava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutLauncher;->cleanUpPackage(Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ShortcutLauncher;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
 PLcom/android/server/pm/ShortcutLauncher;->ensurePackageInfo()V
 PLcom/android/server/pm/ShortcutLauncher;->getOwnerUserId()I
-HSPLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;
+HPLcom/android/server/pm/ShortcutLauncher;->getPinnedShortcutIds(Ljava/lang/String;I)Landroid/util/ArraySet;
+PLcom/android/server/pm/ShortcutLauncher;->hasPinned(Landroid/content/pm/ShortcutInfo;)Z
 PLcom/android/server/pm/ShortcutLauncher;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/pm/ShortcutUser;IZ)Lcom/android/server/pm/ShortcutLauncher;
-PLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutLauncher;->pinShortcuts(ILjava/lang/String;Ljava/util/List;Z)V
+HPLcom/android/server/pm/ShortcutLauncher;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutNonPersistentUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V
 PLcom/android/server/pm/ShortcutNonPersistentUser;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
 PLcom/android/server/pm/ShortcutNonPersistentUser;->getUserId()I
-PLcom/android/server/pm/ShortcutNonPersistentUser;->hasHostPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/ShortcutNonPersistentUser;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
-PLcom/android/server/pm/ShortcutPackage;->addOrReplaceDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V
-HSPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
-PLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z
-PLcom/android/server/pm/ShortcutPackage;->clearAllImplicitRanks()V
-PLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts(Z)V
+HPLcom/android/server/pm/ShortcutNonPersistentUser;->hasHostPackage(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutNonPersistentUser;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;)V
+HPLcom/android/server/pm/ShortcutPackage;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+HPLcom/android/server/pm/ShortcutPackage;->addOrReplaceDynamicShortcut(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutPackage;->adjustRanks()V
+HPLcom/android/server/pm/ShortcutPackage;->areAllActivitiesStillEnabled()Z
+PLcom/android/server/pm/ShortcutPackage;->canRestoreAnyVersion()Z
+HPLcom/android/server/pm/ShortcutPackage;->clearAllImplicitRanks()V
+HPLcom/android/server/pm/ShortcutPackage;->deleteAllDynamicShortcuts(Z)V
 PLcom/android/server/pm/ShortcutPackage;->deleteDynamicWithId(Ljava/lang/String;Z)Z
 PLcom/android/server/pm/ShortcutPackage;->deleteOrDisableWithId(Ljava/lang/String;ZZZI)Landroid/content/pm/ShortcutInfo;
-PLcom/android/server/pm/ShortcutPackage;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
-PLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(Ljava/util/List;I)V
-PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;Z)V
-PLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncludedWithIds(Ljava/util/List;Z)V
+PLcom/android/server/pm/ShortcutPackage;->disableDynamicWithId(Ljava/lang/String;ZI)Z
+PLcom/android/server/pm/ShortcutPackage;->disableWithId(Ljava/lang/String;Ljava/lang/String;IZZI)V
+HPLcom/android/server/pm/ShortcutPackage;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+PLcom/android/server/pm/ShortcutPackage;->enableWithId(Ljava/lang/String;)V
+HPLcom/android/server/pm/ShortcutPackage;->enforceShortcutCountsBeforeOperation(Ljava/util/List;I)V
+HPLcom/android/server/pm/ShortcutPackage;->ensureImmutableShortcutsNotIncluded(Ljava/util/List;Z)V
+HPLcom/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;->findAll(Ljava/util/List;Ljava/util/function/Predicate;I)V
-HSPLcom/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;->getApiCallCount(Z)I
-PLcom/android/server/pm/ShortcutPackage;->getMatchingShareTargets(Landroid/content/IntentFilter;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I
+HPLcom/android/server/pm/ShortcutPackage;->ensureNotImmutable(Ljava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;I)V
+HPLcom/android/server/pm/ShortcutPackage;->findAll(Ljava/util/List;Ljava/util/function/Predicate;ILjava/lang/String;IZ)V
+HPLcom/android/server/pm/ShortcutPackage;->findShortcutById(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutPackage;->forceDeleteShortcutInner(Ljava/lang/String;)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutPackage;->forceReplaceShortcutInner(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutPackage;->getApiCallCount(Z)I
+HPLcom/android/server/pm/ShortcutPackage;->getFileName(Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutPackage;->getMatchingShareTargets(Landroid/content/IntentFilter;)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutPackage;->getOwnerUserId()I
 PLcom/android/server/pm/ShortcutPackage;->getPackageResources()Landroid/content/res/Resources;
-PLcom/android/server/pm/ShortcutPackage;->getUsedBitmapFiles()Landroid/util/ArraySet;
-PLcom/android/server/pm/ShortcutPackage;->hasShareTargets()Z
+HPLcom/android/server/pm/ShortcutPackage;->getSharingShortcutCount()I
+HPLcom/android/server/pm/ShortcutPackage;->getUsedBitmapFiles()Landroid/util/ArraySet;
+HPLcom/android/server/pm/ShortcutPackage;->hasShareTargets()Z
+HPLcom/android/server/pm/ShortcutPackage;->incrementCountForActivity(Landroid/util/ArrayMap;Landroid/content/ComponentName;I)V
 PLcom/android/server/pm/ShortcutPackage;->isShortcutExistsAndVisibleToPublisher(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/ShortcutPackage;->lambda$new$2(Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;)I
-PLcom/android/server/pm/ShortcutPackage;->lambda$refreshPinnedFlags$0$ShortcutPackage(Lcom/android/server/pm/ShortcutLauncher;)V
-HSPLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
-HSPLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
-HSPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
-HSPLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z
-HSPLcom/android/server/pm/ShortcutPackage;->pushOutExcessShortcuts()Z
-PLcom/android/server/pm/ShortcutPackage;->refreshPinnedFlags()V
-PLcom/android/server/pm/ShortcutPackage;->removeOrphans()V
-HSPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
+HPLcom/android/server/pm/ShortcutPackage;->lambda$new$2(Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;)I
+HPLcom/android/server/pm/ShortcutPackage;->lambda$refreshPinnedFlags$0$ShortcutPackage(Lcom/android/server/pm/ShortcutLauncher;)V
+HPLcom/android/server/pm/ShortcutPackage;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutUser;Lorg/xmlpull/v1/XmlPullParser;Z)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutPackage;->onRestored(I)V
+HPLcom/android/server/pm/ShortcutPackage;->parseIntent(Lorg/xmlpull/v1/XmlPullParser;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutPackage;->parseShortcut(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutPackage;->publishManifestShortcuts(Ljava/util/List;)Z
+HPLcom/android/server/pm/ShortcutPackage;->pushOutExcessShortcuts()Z
+HPLcom/android/server/pm/ShortcutPackage;->refreshPinnedFlags()V
+HPLcom/android/server/pm/ShortcutPackage;->removeOrphans()V
+HPLcom/android/server/pm/ShortcutPackage;->rescanPackageIfNeeded(ZZ)Z
 PLcom/android/server/pm/ShortcutPackage;->resetRateLimiting()V
 PLcom/android/server/pm/ShortcutPackage;->resetRateLimitingForCommandLineNoSaving()V
 PLcom/android/server/pm/ShortcutPackage;->resolveResourceStrings()V
-PLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V
-PLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-HSPLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
+HPLcom/android/server/pm/ShortcutPackage;->saveShortcut(Lorg/xmlpull/v1/XmlSerializer;Landroid/content/pm/ShortcutInfo;ZZ)V
+HPLcom/android/server/pm/ShortcutPackage;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+HPLcom/android/server/pm/ShortcutPackage;->sortShortcutsToActivities()Landroid/util/ArrayMap;
 PLcom/android/server/pm/ShortcutPackage;->tryApiCall(Z)Z
-HSPLcom/android/server/pm/ShortcutPackageInfo;-><init>(JJLjava/util/ArrayList;Z)V
-PLcom/android/server/pm/ShortcutPackageInfo;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/pm/ShortcutPackageInfo;-><init>(JJLjava/util/ArrayList;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->canRestoreTo(Lcom/android/server/pm/ShortcutService;Landroid/content/pm/PackageInfo;Z)I
+HPLcom/android/server/pm/ShortcutPackageInfo;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/pm/ShortcutPackageInfo;->getLastUpdateTime()J
-HSPLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()J
-PLcom/android/server/pm/ShortcutPackageInfo;->isBackupAllowed()Z
-HSPLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
-HSPLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->getVersionCode()J
+PLcom/android/server/pm/ShortcutPackageInfo;->hasSignatures()Z
+HPLcom/android/server/pm/ShortcutPackageInfo;->isBackupAllowed()Z
+HPLcom/android/server/pm/ShortcutPackageInfo;->isShadow()Z
+HPLcom/android/server/pm/ShortcutPackageInfo;->loadFromXml(Lorg/xmlpull/v1/XmlPullParser;Z)V
+HPLcom/android/server/pm/ShortcutPackageInfo;->newEmpty()Lcom/android/server/pm/ShortcutPackageInfo;
 PLcom/android/server/pm/ShortcutPackageInfo;->refreshSignature(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutPackageItem;)V
-PLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlSerializer;Z)V
-HSPLcom/android/server/pm/ShortcutPackageInfo;->updateFromPackageInfo(Landroid/content/pm/PackageInfo;)V
-HSPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
-HSPLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
-HSPLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
+HPLcom/android/server/pm/ShortcutPackageInfo;->saveToXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->setShadow(Z)V
+PLcom/android/server/pm/ShortcutPackageInfo;->updateFromPackageInfo(Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/pm/ShortcutPackageItem;-><init>(Lcom/android/server/pm/ShortcutUser;ILjava/lang/String;Lcom/android/server/pm/ShortcutPackageInfo;)V
+HPLcom/android/server/pm/ShortcutPackageItem;->attemptToRestoreIfNeededAndSave()V
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageInfo()Lcom/android/server/pm/ShortcutPackageInfo;
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageName()Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutPackageItem;->getPackageUserId()I
 PLcom/android/server/pm/ShortcutPackageItem;->getUser()Lcom/android/server/pm/ShortcutUser;
 PLcom/android/server/pm/ShortcutPackageItem;->refreshPackageSignatureAndSave()V
 PLcom/android/server/pm/ShortcutPackageItem;->replaceUser(Lcom/android/server/pm/ShortcutUser;)V
-HSPLcom/android/server/pm/ShortcutParser;->createShortcutFromManifest(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;IIIIIZ)Landroid/content/pm/ShortcutInfo;
-HSPLcom/android/server/pm/ShortcutParser;->parseCategories(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;)Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo;
-HSPLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
-HSPLcom/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;->getRequestPinConfirmationActivity(II)Landroid/util/Pair;
-PLcom/android/server/pm/ShortcutRequestPinProcessor;->isRequestPinItemSupported(II)Z
+HPLcom/android/server/pm/ShortcutParser;->createShortcutFromManifest(Lcom/android/server/pm/ShortcutService;ILjava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;IIIIIZ)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutParser;->parseCategories(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutParser;->parseCategory(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutParser;->parseShareTargetAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;)Lcom/android/server/pm/ShareTargetInfo;
+HPLcom/android/server/pm/ShortcutParser;->parseShareTargetData(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;)Lcom/android/server/pm/ShareTargetInfo$TargetData;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcutAttributes(Lcom/android/server/pm/ShortcutService;Landroid/util/AttributeSet;Ljava/lang/String;Landroid/content/ComponentName;II)Landroid/content/pm/ShortcutInfo;
+HPLcom/android/server/pm/ShortcutParser;->parseShortcuts(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;ILjava/util/List;)Ljava/util/List;
+HPLcom/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$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;I)V
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/IntentSender;ILcom/android/server/pm/ShortcutRequestPinProcessor$1;)V
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->accept(Landroid/os/Bundle;)Z
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->isCallerValid()Z
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;->isValid()Z
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZ)V
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;-><init>(Lcom/android/server/pm/ShortcutRequestPinProcessor;Landroid/content/pm/ShortcutInfo;Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Ljava/lang/String;IIZLcom/android/server/pm/ShortcutRequestPinProcessor$1;)V
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->getShortcutInfo()Landroid/content/pm/ShortcutInfo;
+PLcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;->tryAccept()Z
+HSPLcom/android/server/pm/ShortcutRequestPinProcessor;-><init>(Lcom/android/server/pm/ShortcutService;Ljava/lang/Object;)V
+PLcom/android/server/pm/ShortcutRequestPinProcessor;->createShortcutResultIntent(Landroid/content/pm/ShortcutInfo;I)Landroid/content/Intent;
+PLcom/android/server/pm/ShortcutRequestPinProcessor;->directPinShortcut(Lcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;)Z
+HPLcom/android/server/pm/ShortcutRequestPinProcessor;->getRequestPinConfirmationActivity(II)Landroid/util/Pair;
+PLcom/android/server/pm/ShortcutRequestPinProcessor;->isCallerUid(I)Z
+HPLcom/android/server/pm/ShortcutRequestPinProcessor;->isRequestPinItemSupported(II)Z
+PLcom/android/server/pm/ShortcutRequestPinProcessor;->requestPinShortcutLocked(Landroid/content/pm/ShortcutInfo;Landroid/content/IntentSender;Landroid/util/Pair;)Landroid/content/pm/LauncherApps$PinItemRequest;
+PLcom/android/server/pm/ShortcutRequestPinProcessor;->sendResultIntent(Landroid/content/IntentSender;Landroid/content/Intent;)V
 HSPLcom/android/server/pm/ShortcutService$1;-><init>()V
-HSPLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z
-HSPLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$1;->test(Landroid/content/pm/ResolveInfo;)Z
+HPLcom/android/server/pm/ShortcutService$1;->test(Ljava/lang/Object;)Z
 HSPLcom/android/server/pm/ShortcutService$2;-><init>()V
-HSPLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
-HSPLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
+PLcom/android/server/pm/ShortcutService$2;->test(Landroid/content/pm/PackageInfo;)Z
+HPLcom/android/server/pm/ShortcutService$2;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/pm/ShortcutService$3;-><init>(Lcom/android/server/pm/ShortcutService;)V
 HSPLcom/android/server/pm/ShortcutService$3;->lambda$onUidGone$1$ShortcutService$3(I)V
 HSPLcom/android/server/pm/ShortcutService$3;->lambda$onUidStateChanged$0$ShortcutService$3(II)V
 HSPLcom/android/server/pm/ShortcutService$3;->onUidGone(IZ)V
-HSPLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJ)V
+HSPLcom/android/server/pm/ShortcutService$3;->onUidStateChanged(IIJI)V
+HSPLcom/android/server/pm/ShortcutService$4;-><init>(Lcom/android/server/pm/ShortcutService;)V
 HSPLcom/android/server/pm/ShortcutService$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/pm/ShortcutService$DumpFilter;->isPackageMatch(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/ShortcutService$5;-><init>(Lcom/android/server/pm/ShortcutService;)V
+HPLcom/android/server/pm/ShortcutService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/ShortcutService$DumpFilter;-><init>()V
+HPLcom/android/server/pm/ShortcutService$DumpFilter;->isPackageMatch(Ljava/lang/String;)Z
 PLcom/android/server/pm/ShortcutService$DumpFilter;->isUserMatch(I)Z
+PLcom/android/server/pm/ShortcutService$DumpFilter;->setDumpFiles(Z)V
+PLcom/android/server/pm/ShortcutService$DumpFilter;->setDumpUid(Z)V
 PLcom/android/server/pm/ShortcutService$DumpFilter;->shouldDumpCheckIn()Z
 PLcom/android/server/pm/ShortcutService$DumpFilter;->shouldDumpDetails()Z
 PLcom/android/server/pm/ShortcutService$DumpFilter;->shouldDumpFiles()Z
 PLcom/android/server/pm/ShortcutService$DumpFilter;->shouldDumpMain()Z
 PLcom/android/server/pm/ShortcutService$DumpFilter;->shouldDumpUid()Z
+HPLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;-><init>(Ljava/io/File;)V
 PLcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;->getFile()Ljava/io/File;
 HSPLcom/android/server/pm/ShortcutService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/pm/ShortcutService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/pm/ShortcutService$Lifecycle;->onStart()V
-HSPLcom/android/server/pm/ShortcutService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/pm/ShortcutService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/pm/ShortcutService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;)V
+HSPLcom/android/server/pm/ShortcutService$LocalService;-><init>(Lcom/android/server/pm/ShortcutService;Lcom/android/server/pm/ShortcutService$1;)V
 HSPLcom/android/server/pm/ShortcutService$LocalService;->addListener(Landroid/content/pm/ShortcutServiceInternal$ShortcutChangeListener;)V
 PLcom/android/server/pm/ShortcutService$LocalService;->createShortcutIntents(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;III)[Landroid/content/Intent;
 PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutIconFd(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Landroid/os/ParcelFileDescriptor;
 PLcom/android/server/pm/ShortcutService$LocalService;->getShortcutInfoLocked(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;IZ)Landroid/content/pm/ShortcutInfo;
-HSPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;
-HSPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
-HSPLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;II)Z
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcuts(ILjava/lang/String;JLjava/lang/String;Ljava/util/List;Landroid/content/ComponentName;IIII)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService$LocalService;->getShortcutsInnerLocked(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;III)V
+HPLcom/android/server/pm/ShortcutService$LocalService;->hasShortcutHostPermission(ILjava/lang/String;II)Z
+PLcom/android/server/pm/ShortcutService$LocalService;->isForegroundDefaultLauncher(Ljava/lang/String;I)Z
 PLcom/android/server/pm/ShortcutService$LocalService;->isPinnedByCaller(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcuts$0$ShortcutService$LocalService(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
-HSPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcutsInnerLocked$1(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZLandroid/content/pm/ShortcutInfo;)Z
-HSPLcom/android/server/pm/ShortcutService$LocalService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService$LocalService;->isRequestPinItemSupported(II)Z
+PLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcutInfoLocked$2(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcuts$0$ShortcutService$LocalService(ILjava/lang/String;Ljava/util/List;JLandroid/content/ComponentName;IILjava/util/ArrayList;IIILcom/android/server/pm/ShortcutPackage;)V
+HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcutsInnerLocked$1(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZLandroid/content/pm/ShortcutInfo;)Z
+HPLcom/android/server/pm/ShortcutService$LocalService;->lambda$getShortcutsInnerLocked$1(JLandroid/util/ArraySet;Landroid/content/ComponentName;ZZZZZLandroid/content/pm/ShortcutInfo;)Z
+PLcom/android/server/pm/ShortcutService$LocalService;->pinShortcuts(ILjava/lang/String;Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/ShortcutService$LocalService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/ShortcutService;-><clinit>()V
+HSPLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/pm/ShortcutService;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
+PLcom/android/server/pm/ShortcutService;->access$000(Landroid/content/pm/PackageInfo;)Z
+PLcom/android/server/pm/ShortcutService;->access$1000(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->access$1100(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->access$1200(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
 HSPLcom/android/server/pm/ShortcutService;->access$200(Lcom/android/server/pm/ShortcutService;)Ljava/lang/Object;
-HSPLcom/android/server/pm/ShortcutService;->access$300(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-HSPLcom/android/server/pm/ShortcutService;->canSeeAnyPinnedShortcut(Ljava/lang/String;III)Z
-HSPLcom/android/server/pm/ShortcutService;->checkPackageChanges(I)V
+HPLcom/android/server/pm/ShortcutService;->access$300(Lcom/android/server/pm/ShortcutService;Ljava/util/List;)Ljava/util/List;
+HSPLcom/android/server/pm/ShortcutService;->access$400(Lcom/android/server/pm/ShortcutService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/ShortcutService;->access$500(Lcom/android/server/pm/ShortcutService;)Lcom/android/server/pm/ShortcutBitmapSaver;
+HSPLcom/android/server/pm/ShortcutService;->access$700(Lcom/android/server/pm/ShortcutService;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/pm/ShortcutService;->access$800(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->access$900(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+HPLcom/android/server/pm/ShortcutService;->addDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
+HPLcom/android/server/pm/ShortcutService;->assignImplicitRanks(Ljava/util/List;)V
+HPLcom/android/server/pm/ShortcutService;->canSeeAnyPinnedShortcut(Ljava/lang/String;III)Z
+PLcom/android/server/pm/ShortcutService;->checkPackageChanges(I)V
 PLcom/android/server/pm/ShortcutService;->cleanUpPackageForAllLoadedUsers(Ljava/lang/String;IZ)V
-PLcom/android/server/pm/ShortcutService;->cleanUpPackageLocked(Ljava/lang/String;IIZ)V
-PLcom/android/server/pm/ShortcutService;->cleanupBitmapsForPackage(ILjava/lang/String;)V
-PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapDirectoriesLocked(I)V
-PLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapFilesLocked(ILcom/android/server/pm/ShortcutUser;Ljava/lang/String;Ljava/io/File;)V
-PLcom/android/server/pm/ShortcutService;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V
+HPLcom/android/server/pm/ShortcutService;->cleanUpPackageLocked(Ljava/lang/String;IIZ)V
+HPLcom/android/server/pm/ShortcutService;->cleanupBitmapsForPackage(ILjava/lang/String;)V
+HPLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapDirectoriesLocked(I)V
+HPLcom/android/server/pm/ShortcutService;->cleanupDanglingBitmapFilesLocked(ILcom/android/server/pm/ShortcutUser;Ljava/lang/String;Ljava/io/File;)V
+PLcom/android/server/pm/ShortcutService;->createShortcutResultIntent(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;I)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutService;->disableShortcuts(Ljava/lang/String;Ljava/util/List;Ljava/lang/CharSequence;II)V
 PLcom/android/server/pm/ShortcutService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/pm/ShortcutService;->dumpDumpFiles(Ljava/io/PrintWriter;)V
-PLcom/android/server/pm/ShortcutService;->dumpInner(Ljava/io/PrintWriter;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+HPLcom/android/server/pm/ShortcutService;->dumpInner(Ljava/io/PrintWriter;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
 PLcom/android/server/pm/ShortcutService;->dumpNoCheck(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutService;->dumpUid(Ljava/io/PrintWriter;)V
+HPLcom/android/server/pm/ShortcutService;->dumpUid(Ljava/io/PrintWriter;)V
 PLcom/android/server/pm/ShortcutService;->enableShortcuts(Ljava/lang/String;Ljava/util/List;I)V
+PLcom/android/server/pm/ShortcutService;->enforceCallingOrSelfPermission(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/pm/ShortcutService;->enforceMaxActivityShortcuts(I)V
-PLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V
-PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V
-HSPLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutService;->forEachLoadedUserLocked(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutService;->enforceResetThrottlingPermission()V
+PLcom/android/server/pm/ShortcutService;->enforceSystem()V
+HPLcom/android/server/pm/ShortcutService;->fillInDefaultActivity(Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;Z)V
+HPLcom/android/server/pm/ShortcutService;->fixUpIncomingShortcutInfo(Landroid/content/pm/ShortcutInfo;ZZ)V
+HPLcom/android/server/pm/ShortcutService;->fixUpShortcutResourceNamesAndValues(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutService;->forEachLoadedUserLocked(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutService;->forUpdatedPackages(IJZLjava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutService;->formatTime(J)Ljava/lang/String;
+PLcom/android/server/pm/ShortcutService;->getActivityInfoWithMetadata(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ShortcutService;->getApplicationInfo(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
 PLcom/android/server/pm/ShortcutService;->getBackupPayload(I)[B
-PLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Landroid/content/ComponentName;
+HSPLcom/android/server/pm/ShortcutService;->getBaseStateFile()Landroid/util/AtomicFile;
+HPLcom/android/server/pm/ShortcutService;->getDefaultLauncher(I)Landroid/content/ComponentName;
 PLcom/android/server/pm/ShortcutService;->getDumpPath()Ljava/io/File;
-PLcom/android/server/pm/ShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ShortcutService;->getDynamicShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/pm/ShortcutService;->getIconMaxDimensions(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List;
+PLcom/android/server/pm/ShortcutService;->getInstalledPackages(I)Ljava/util/List;
 HSPLcom/android/server/pm/ShortcutService;->getLastResetTimeLocked()J
-HSPLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
-PLcom/android/server/pm/ShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/pm/ShortcutService;->getMaxActivityShortcuts()I
-PLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ShortcutService;->getLauncherShortcutsLocked(Ljava/lang/String;II)Lcom/android/server/pm/ShortcutLauncher;
+HPLcom/android/server/pm/ShortcutService;->getMainActivityIntent()Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutService;->getManifestShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/ShortcutService;->getMaxActivityShortcuts()I
+HPLcom/android/server/pm/ShortcutService;->getMaxShortcutCountPerActivity(Ljava/lang/String;I)I
 PLcom/android/server/pm/ShortcutService;->getNextResetTimeLocked()J
-HSPLcom/android/server/pm/ShortcutService;->getNonPersistentUserLocked(I)Lcom/android/server/pm/ShortcutNonPersistentUser;
-PLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/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;
+HPLcom/android/server/pm/ShortcutService;->getPackageInfo(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+PLcom/android/server/pm/ShortcutService;->getPackageInfoWithSignatures(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ShortcutService;->getPackageShortcutsForPublisherLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
 PLcom/android/server/pm/ShortcutService;->getPackageShortcutsLocked(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutPackage;
 PLcom/android/server/pm/ShortcutService;->getParentOrSelfUserId(I)I
-PLcom/android/server/pm/ShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/pm/ShortcutService;->getRemainingCallCount(Ljava/lang/String;I)I
+HPLcom/android/server/pm/ShortcutService;->getPinnedShortcuts(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ShortcutService;->getRemainingCallCount(Ljava/lang/String;I)I
 PLcom/android/server/pm/ShortcutService;->getShareTargets(Ljava/lang/String;Landroid/content/IntentFilter;I)Landroid/content/pm/ParceledListSlice;
-HSPLcom/android/server/pm/ShortcutService;->getStatStartTime()J
+HPLcom/android/server/pm/ShortcutService;->getShortcuts(Ljava/lang/String;II)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ShortcutService;->getShortcutsWithQueryLocked(Ljava/lang/String;IILjava/util/function/Predicate;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/pm/ShortcutService;->getStatStartTime()J
 PLcom/android/server/pm/ShortcutService;->getUidLastForegroundElapsedTimeLocked(I)J
-PLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File;
-HSPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutService;->getUserBitmapFilePath(I)Ljava/io/File;
+HPLcom/android/server/pm/ShortcutService;->getUserFile(I)Ljava/io/File;
+HPLcom/android/server/pm/ShortcutService;->getUserShortcutsLocked(I)Lcom/android/server/pm/ShortcutUser;
+PLcom/android/server/pm/ShortcutService;->handleLocaleChanged()V
 HSPLcom/android/server/pm/ShortcutService;->handleOnUidStateChanged(II)V
 PLcom/android/server/pm/ShortcutService;->handlePackageAdded(Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->handlePackageChanged(Ljava/lang/String;I)V
+HPLcom/android/server/pm/ShortcutService;->handlePackageChanged(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->handlePackageDataCleared(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->handlePackageRemoved(Ljava/lang/String;I)V
 PLcom/android/server/pm/ShortcutService;->handlePackageUpdateFinished(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V
-PLcom/android/server/pm/ShortcutService;->hasShareTargets(Ljava/lang/String;Ljava/lang/String;I)Z
-HSPLcom/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;->handleStopUser(I)V
+PLcom/android/server/pm/ShortcutService;->handleUnlockUser(I)V
+HPLcom/android/server/pm/ShortcutService;->hasShareTargets(Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/pm/ShortcutService;->hasShortcutHostPermission(Ljava/lang/String;III)Z
+HPLcom/android/server/pm/ShortcutService;->hasShortcutHostPermissionInner(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/ShortcutService;->initialize()V
-HSPLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
-PLcom/android/server/pm/ShortcutService;->injectBinderCallingPid()I
-PLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
-HSPLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
+HPLcom/android/server/pm/ShortcutService;->injectApplicationInfoWithUninstalled(Ljava/lang/String;I)Landroid/content/pm/ApplicationInfo;
+HPLcom/android/server/pm/ShortcutService;->injectBinderCallingPid()I
+HPLcom/android/server/pm/ShortcutService;->injectBinderCallingUid()I
+PLcom/android/server/pm/ShortcutService;->injectBuildFingerprint()Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutService;->injectClearCallingIdentity()J
 HSPLcom/android/server/pm/ShortcutService;->injectCurrentTimeMillis()J
 HSPLcom/android/server/pm/ShortcutService;->injectDipToPixel(I)I
 HSPLcom/android/server/pm/ShortcutService;->injectElapsedRealtime()J
 PLcom/android/server/pm/ShortcutService;->injectEnforceCallingPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/pm/ShortcutService;->injectGetDefaultMainActivity(Ljava/lang/String;I)Landroid/content/ComponentName;
-PLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List;
-HSPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List;
-PLcom/android/server/pm/ShortcutService;->injectGetPinConfirmationActivity(Ljava/lang/String;II)Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
-HSPLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z
-PLcom/android/server/pm/ShortcutService;->injectHasUnlimitedShortcutsApiCallsPermission(II)Z
-PLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z
+HPLcom/android/server/pm/ShortcutService;->injectGetActivityInfoWithMetadataWithUninstalled(Landroid/content/ComponentName;I)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/pm/ShortcutService;->injectGetDefaultMainActivity(Ljava/lang/String;I)Landroid/content/ComponentName;
+HPLcom/android/server/pm/ShortcutService;->injectGetLocaleTagsForUser(I)Ljava/lang/String;
+HPLcom/android/server/pm/ShortcutService;->injectGetMainActivities(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->injectGetPackageUid(Ljava/lang/String;I)I
+PLcom/android/server/pm/ShortcutService;->injectGetPackagesWithUninstalled(I)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->injectGetPinConfirmationActivity(Ljava/lang/String;II)Landroid/content/ComponentName;
+HPLcom/android/server/pm/ShortcutService;->injectGetResourcesForApplicationAsUser(Ljava/lang/String;I)Landroid/content/res/Resources;
+HPLcom/android/server/pm/ShortcutService;->injectHasAccessShortcutsPermission(II)Z
+HPLcom/android/server/pm/ShortcutService;->injectHasUnlimitedShortcutsApiCallsPermission(II)Z
+HPLcom/android/server/pm/ShortcutService;->injectIsActivityEnabledAndExported(Landroid/content/ComponentName;I)Z
 HSPLcom/android/server/pm/ShortcutService;->injectIsLowRamDevice()Z
-PLcom/android/server/pm/ShortcutService;->injectIsMainActivity(Landroid/content/ComponentName;I)Z
-HSPLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z
-HSPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
+HPLcom/android/server/pm/ShortcutService;->injectIsMainActivity(Landroid/content/ComponentName;I)Z
+PLcom/android/server/pm/ShortcutService;->injectIsSafeModeEnabled()Z
+HPLcom/android/server/pm/ShortcutService;->injectPackageInfoWithUninstalled(Ljava/lang/String;IZ)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/pm/ShortcutService;->injectPostToHandler(Ljava/lang/Runnable;)V
 HSPLcom/android/server/pm/ShortcutService;->injectRegisterUidObserver(Landroid/app/IUidObserver;I)V
-HSPLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
-HSPLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V
+HPLcom/android/server/pm/ShortcutService;->injectRestoreCallingIdentity(J)V
+PLcom/android/server/pm/ShortcutService;->injectRunOnNewThread(Ljava/lang/Runnable;)V
+PLcom/android/server/pm/ShortcutService;->injectSendIntentSender(Landroid/content/IntentSender;Landroid/content/Intent;)V
 HSPLcom/android/server/pm/ShortcutService;->injectShortcutManagerConstants()Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z
+PLcom/android/server/pm/ShortcutService;->injectShouldPerformVerification()Z
 HSPLcom/android/server/pm/ShortcutService;->injectSystemDataPath()Ljava/io/File;
-HSPLcom/android/server/pm/ShortcutService;->injectUserDataPath(I)Ljava/io/File;
-PLcom/android/server/pm/ShortcutService;->injectValidateIconResPackage(Landroid/content/pm/ShortcutInfo;Landroid/graphics/drawable/Icon;)V
-HSPLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
+HPLcom/android/server/pm/ShortcutService;->injectUserDataPath(I)Ljava/io/File;
+HPLcom/android/server/pm/ShortcutService;->injectValidateIconResPackage(Landroid/content/pm/ShortcutInfo;Landroid/graphics/drawable/Icon;)V
+PLcom/android/server/pm/ShortcutService;->injectXmlMetaData(Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Landroid/content/res/XmlResourceParser;
+HPLcom/android/server/pm/ShortcutService;->isCallerSystem()Z
+HSPLcom/android/server/pm/ShortcutService;->isClockValid(J)Z
+PLcom/android/server/pm/ShortcutService;->isDummyMainActivity(Landroid/content/ComponentName;)Z
+HPLcom/android/server/pm/ShortcutService;->isEphemeralApp(Landroid/content/pm/ApplicationInfo;)Z
 PLcom/android/server/pm/ShortcutService;->isEphemeralApp(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/PackageInfo;)Z
-HSPLcom/android/server/pm/ShortcutService;->isPackageInstalled(Ljava/lang/String;I)Z
-PLcom/android/server/pm/ShortcutService;->isRequestPinItemSupported(II)Z
-PLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z
-HSPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
-HSPLcom/android/server/pm/ShortcutService;->lambda$checkPackageChanges$7$ShortcutService(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ActivityInfo;)Z
+HPLcom/android/server/pm/ShortcutService;->isInstalled(Landroid/content/pm/ApplicationInfo;)Z
+HPLcom/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
+HSPLcom/android/server/pm/ShortcutService;->isProcessStateForeground(I)Z
+HPLcom/android/server/pm/ShortcutService;->isRequestPinItemSupported(II)Z
+HPLcom/android/server/pm/ShortcutService;->isUidForegroundLocked(I)Z
+HPLcom/android/server/pm/ShortcutService;->isUserLoadedLocked(I)Z
+HPLcom/android/server/pm/ShortcutService;->isUserUnlockedL(I)Z
+PLcom/android/server/pm/ShortcutService;->lambda$checkPackageChanges$7$ShortcutService(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->lambda$checkPackageChanges$8$ShortcutService(Ljava/util/ArrayList;Lcom/android/server/pm/ShortcutPackageItem;)V
 PLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageForAllLoadedUsers$3$ShortcutService(Ljava/lang/String;IZLcom/android/server/pm/ShortcutUser;)V
-HSPLcom/android/server/pm/ShortcutService;->lambda$handleUnlockUser$0$ShortcutService(JI)V
-PLcom/android/server/pm/ShortcutService;->lambda$notifyListeners$1$ShortcutService(ILjava/lang/String;)V
-HSPLcom/android/server/pm/ShortcutService;->lambda$rescanUpdatedPackagesLocked$8$ShortcutService(Lcom/android/server/pm/ShortcutUser;ILandroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageForAllLoadedUsers$4$ShortcutService(Ljava/lang/String;IZLcom/android/server/pm/ShortcutUser;)V
+PLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageLocked$4(Ljava/lang/String;ILcom/android/server/pm/ShortcutLauncher;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageLocked$5(Lcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageLocked$5(Ljava/lang/String;ILcom/android/server/pm/ShortcutLauncher;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$cleanUpPackageLocked$6(Lcom/android/server/pm/ShortcutPackage;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$10(Lcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$10(Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$11(Lcom/android/server/pm/ShortcutLauncher;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$11(Lcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$12(Lcom/android/server/pm/ShortcutLauncher;)V
+PLcom/android/server/pm/ShortcutService;->lambda$getBackupPayload$9(Lcom/android/server/pm/ShortcutPackageItem;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$getShareTargets$2(Ljava/util/List;Landroid/content/IntentFilter;Lcom/android/server/pm/ShortcutPackage;)V
+HPLcom/android/server/pm/ShortcutService;->lambda$getShareTargets$3(Ljava/util/List;Landroid/content/IntentFilter;Lcom/android/server/pm/ShortcutPackage;)V
+PLcom/android/server/pm/ShortcutService;->lambda$getShortcuts$2(ILandroid/content/pm/ShortcutInfo;)Z
+PLcom/android/server/pm/ShortcutService;->lambda$handleLocaleChanged$6(Lcom/android/server/pm/ShortcutUser;)V
+PLcom/android/server/pm/ShortcutService;->lambda$handleUnlockUser$0$ShortcutService(JI)V
+HPLcom/android/server/pm/ShortcutService;->lambda$notifyListeners$1$ShortcutService(ILjava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->lambda$rescanUpdatedPackagesLocked$8$ShortcutService(Lcom/android/server/pm/ShortcutUser;ILandroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/pm/ShortcutService;->lambda$rescanUpdatedPackagesLocked$9$ShortcutService(Lcom/android/server/pm/ShortcutUser;ILandroid/content/pm/ApplicationInfo;)V
 HSPLcom/android/server/pm/ShortcutService;->loadBaseStateLocked()V
-HSPLcom/android/server/pm/ShortcutService;->loadUserInternal(ILjava/io/InputStream;Z)Lcom/android/server/pm/ShortcutUser;
-HSPLcom/android/server/pm/ShortcutService;->loadUserLocked(I)Lcom/android/server/pm/ShortcutUser;
-HSPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
+HSPLcom/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;
+HPLcom/android/server/pm/ShortcutService;->logDurationStat(IJ)V
+HPLcom/android/server/pm/ShortcutService;->notifyListeners(Ljava/lang/String;I)V
 PLcom/android/server/pm/ShortcutService;->onApplicationActive(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/ShortcutService;->onBootPhase(I)V
-PLcom/android/server/pm/ShortcutService;->openIconFileForWrite(ILandroid/content/pm/ShortcutInfo;)Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;
-HSPLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName;
+HPLcom/android/server/pm/ShortcutService;->openIconFileForWrite(ILandroid/content/pm/ShortcutInfo;)Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;
+PLcom/android/server/pm/ShortcutService;->packageShortcutsChanged(Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutService;->parseBooleanAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Z)Z
+HPLcom/android/server/pm/ShortcutService;->parseComponentNameAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/ComponentName;
 PLcom/android/server/pm/ShortcutService;->parseDumpArgs([Ljava/lang/String;)Lcom/android/server/pm/ShortcutService$DumpFilter;
-HSPLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
-HSPLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)I
+PLcom/android/server/pm/ShortcutService;->parseIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
+PLcom/android/server/pm/ShortcutService;->parseIntentAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
+HPLcom/android/server/pm/ShortcutService;->parseIntentAttributeNoDefault(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Landroid/content/Intent;
 HSPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)J
 HSPLcom/android/server/pm/ShortcutService;->parseLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
 HSPLcom/android/server/pm/ShortcutService;->parseStringAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;)Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
-HSPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;IZ)Ljava/util/List;
+HPLcom/android/server/pm/ShortcutService;->queryActivities(Landroid/content/Intent;Ljava/lang/String;Landroid/content/ComponentName;I)Ljava/util/List;
 PLcom/android/server/pm/ShortcutService;->removeAllDynamicShortcuts(Ljava/lang/String;I)V
 PLcom/android/server/pm/ShortcutService;->removeDynamicShortcuts(Ljava/lang/String;Ljava/util/List;I)V
 PLcom/android/server/pm/ShortcutService;->removeIconLocked(Landroid/content/pm/ShortcutInfo;)V
 PLcom/android/server/pm/ShortcutService;->reportShortcutUsed(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
-HSPLcom/android/server/pm/ShortcutService;->saveBaseStateLocked()V
-HSPLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V
-HSPLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Landroid/content/pm/ShortcutInfo;)V
-PLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(ILjava/io/OutputStream;Z)V
-PLcom/android/server/pm/ShortcutService;->saveUserLocked(I)V
+PLcom/android/server/pm/ShortcutService;->rescanUpdatedPackagesLocked(IJ)V
+PLcom/android/server/pm/ShortcutService;->saveBaseStateLocked()V
+HPLcom/android/server/pm/ShortcutService;->saveDirtyInfo()V
+HPLcom/android/server/pm/ShortcutService;->saveIconAndFixUpShortcutLocked(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutService;->saveUserInternalLocked(ILjava/io/OutputStream;Z)V
+HPLcom/android/server/pm/ShortcutService;->saveUserLocked(I)V
+HSPLcom/android/server/pm/ShortcutService;->scheduleSaveBaseState()V
 HSPLcom/android/server/pm/ShortcutService;->scheduleSaveInner(I)V
-HSPLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V
-PLcom/android/server/pm/ShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
-HSPLcom/android/server/pm/ShortcutService;->setShortcutHostPackage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->shrinkBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
-HSPLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
+HPLcom/android/server/pm/ShortcutService;->scheduleSaveUser(I)V
+HPLcom/android/server/pm/ShortcutService;->setDynamicShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
+HPLcom/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
+HPLcom/android/server/pm/ShortcutService;->shrinkBitmap(Landroid/graphics/Bitmap;I)Landroid/graphics/Bitmap;
+HPLcom/android/server/pm/ShortcutService;->throwIfUserLockedL(I)V
+PLcom/android/server/pm/ShortcutService;->unloadUserLocked(I)V
 HSPLcom/android/server/pm/ShortcutService;->updateConfigurationLocked(Ljava/lang/String;)Z
-PLcom/android/server/pm/ShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
+HPLcom/android/server/pm/ShortcutService;->updateShortcuts(Ljava/lang/String;Landroid/content/pm/ParceledListSlice;I)Z
 HSPLcom/android/server/pm/ShortcutService;->updateTimesLocked()V
-PLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
-PLcom/android/server/pm/ShortcutService;->verifyShortcutInfoPackage(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;)V
-HSPLcom/android/server/pm/ShortcutUser$PackageWithUser;->equals(Ljava/lang/Object;)Z
-HSPLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I
-HSPLcom/android/server/pm/ShortcutUser;->attemptToRestoreIfNeededAndSave(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
+PLcom/android/server/pm/ShortcutService;->validateShortcutForPinRequest(Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutService;->verifyCaller(Ljava/lang/String;I)V
+HPLcom/android/server/pm/ShortcutService;->verifyShortcutInfoPackage(Ljava/lang/String;Landroid/content/pm/ShortcutInfo;)V
+HPLcom/android/server/pm/ShortcutService;->verifyShortcutInfoPackages(Ljava/lang/String;Ljava/util/List;)V
+PLcom/android/server/pm/ShortcutService;->verifyStates()V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/Intent;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/CharSequence;)V
+HPLcom/android/server/pm/ShortcutService;->writeAttr(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutService;->writeTagExtra(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/os/PersistableBundle;)V
+PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;J)V
+PLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Landroid/content/ComponentName;)V
+HPLcom/android/server/pm/ShortcutService;->writeTagValue(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->wtf(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutService;->wtf(Ljava/lang/String;Ljava/lang/Throwable;)V
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->hashCode()I
+HPLcom/android/server/pm/ShortcutUser$PackageWithUser;->of(ILjava/lang/String;)Lcom/android/server/pm/ShortcutUser$PackageWithUser;
+PLcom/android/server/pm/ShortcutUser;-><init>(Lcom/android/server/pm/ShortcutService;I)V
+PLcom/android/server/pm/ShortcutUser;->addLauncher(Lcom/android/server/pm/ShortcutLauncher;)V
+PLcom/android/server/pm/ShortcutUser;->attemptToRestoreIfNeededAndSave(Lcom/android/server/pm/ShortcutService;Ljava/lang/String;I)V
 PLcom/android/server/pm/ShortcutUser;->clearLauncher()V
-PLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V
-PLcom/android/server/pm/ShortcutUser;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
-PLcom/android/server/pm/ShortcutUser;->dumpDirectorySize(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/io/File;)V
-HSPLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/pm/ShortcutUser;->forPackageItem(Ljava/lang/String;ILjava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutUser;->detectLocaleChange()V
+HPLcom/android/server/pm/ShortcutUser;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Lcom/android/server/pm/ShortcutService$DumpFilter;)V
+HPLcom/android/server/pm/ShortcutUser;->dumpDirectorySize(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/io/File;)V
+HPLcom/android/server/pm/ShortcutUser;->forAllLaunchers(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutUser;->forAllPackageItems(Ljava/util/function/Consumer;)V
+HPLcom/android/server/pm/ShortcutUser;->forAllPackages(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/ShortcutUser;->forPackageItem(Ljava/lang/String;ILjava/util/function/Consumer;)V
 PLcom/android/server/pm/ShortcutUser;->getCachedLauncher()Landroid/content/ComponentName;
-HSPLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String;
-HSPLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J
-HSPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
-HSPLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
-HSPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
-HSPLcom/android/server/pm/ShortcutUser;->getUserId()I
-PLcom/android/server/pm/ShortcutUser;->hasPackage(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser;
-PLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V
-PLcom/android/server/pm/ShortcutUser;->removeLauncher(ILjava/lang/String;)Lcom/android/server/pm/ShortcutLauncher;
+PLcom/android/server/pm/ShortcutUser;->getLastAppScanOsFingerprint()Ljava/lang/String;
+PLcom/android/server/pm/ShortcutUser;->getLastAppScanTime()J
+PLcom/android/server/pm/ShortcutUser;->getLastKnownLauncher()Landroid/content/ComponentName;
+HPLcom/android/server/pm/ShortcutUser;->getLauncherShortcuts(Ljava/lang/String;I)Lcom/android/server/pm/ShortcutLauncher;
+HPLcom/android/server/pm/ShortcutUser;->getPackageShortcuts(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+HPLcom/android/server/pm/ShortcutUser;->getPackageShortcutsIfExists(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
+PLcom/android/server/pm/ShortcutUser;->getUserId()I
+HPLcom/android/server/pm/ShortcutUser;->hasPackage(Ljava/lang/String;)Z
+PLcom/android/server/pm/ShortcutUser;->lambda$attemptToRestoreIfNeededAndSave$2(Lcom/android/server/pm/ShortcutPackageItem;)V
+PLcom/android/server/pm/ShortcutUser;->lambda$detectLocaleChange$1(Lcom/android/server/pm/ShortcutPackage;)V
+HPLcom/android/server/pm/ShortcutUser;->lambda$forPackageItem$0(ILjava/lang/String;Ljava/util/function/Consumer;Lcom/android/server/pm/ShortcutPackageItem;)V
+HPLcom/android/server/pm/ShortcutUser;->loadFromXml(Lcom/android/server/pm/ShortcutService;Lorg/xmlpull/v1/XmlPullParser;IZ)Lcom/android/server/pm/ShortcutUser;
+HPLcom/android/server/pm/ShortcutUser;->logSharingShortcutStats(Lcom/android/internal/logging/MetricsLogger;)V
+HPLcom/android/server/pm/ShortcutUser;->onCalledByPublisher(Ljava/lang/String;)V
+HPLcom/android/server/pm/ShortcutUser;->removeLauncher(ILjava/lang/String;)Lcom/android/server/pm/ShortcutLauncher;
 PLcom/android/server/pm/ShortcutUser;->removePackage(Ljava/lang/String;)Lcom/android/server/pm/ShortcutPackage;
-HSPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
-PLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
-HSPLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V
-HSPLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V
+HPLcom/android/server/pm/ShortcutUser;->rescanPackageIfNeeded(Ljava/lang/String;Z)V
+HPLcom/android/server/pm/ShortcutUser;->saveShortcutPackageItem(Lorg/xmlpull/v1/XmlSerializer;Lcom/android/server/pm/ShortcutPackageItem;Z)V
+HPLcom/android/server/pm/ShortcutUser;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Z)V
+PLcom/android/server/pm/ShortcutUser;->setLastAppScanOsFingerprint(Ljava/lang/String;)V
+PLcom/android/server/pm/ShortcutUser;->setLastAppScanTime(J)V
 PLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;)V
+HPLcom/android/server/pm/ShortcutUser;->setLauncher(Landroid/content/ComponentName;Z)V
+HSPLcom/android/server/pm/StagingManager$1;-><init>(Lcom/android/server/pm/StagingManager;)V
+PLcom/android/server/pm/StagingManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverAsync$1;-><init>(Lcom/android/server/pm/StagingManager$LocalIntentReceiverAsync;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverAsync$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverAsync;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverAsync;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync$1;-><init>(Lcom/android/server/pm/StagingManager$LocalIntentReceiverSync;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync;-><init>()V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync;-><init>(Lcom/android/server/pm/StagingManager$1;)V
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync;->access$400(Lcom/android/server/pm/StagingManager$LocalIntentReceiverSync;)Ljava/util/concurrent/LinkedBlockingQueue;
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/pm/StagingManager$LocalIntentReceiverSync;->getResult()Landroid/content/Intent;
+HSPLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;-><init>(Lcom/android/server/pm/StagingManager;Landroid/os/Looper;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->access$000(Lcom/android/server/pm/StagingManager$PreRebootVerificationHandler;I)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->access$1300(Lcom/android/server/pm/StagingManager$PreRebootVerificationHandler;I)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->access$300(Lcom/android/server/pm/StagingManager$PreRebootVerificationHandler;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->handlePreRebootVerification_Apex(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->handlePreRebootVerification_Apk(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->handlePreRebootVerification_End(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->handlePreRebootVerification_Start(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->notifyPreRebootVerification_Apex_Complete(I)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->notifyPreRebootVerification_Apk_Complete(I)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->notifyPreRebootVerification_Start_Complete(I)V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->readyToStart()V
+PLcom/android/server/pm/StagingManager$PreRebootVerificationHandler;->startPreRebootVerification(I)V
+HSPLcom/android/server/pm/StagingManager;-><init>(Lcom/android/server/pm/PackageInstallerService;Landroid/content/Context;)V
+HSPLcom/android/server/pm/StagingManager;-><init>(Lcom/android/server/pm/PackageInstallerService;Lcom/android/server/pm/ApexManager;Landroid/content/Context;)V
+PLcom/android/server/pm/StagingManager;->abortCommittedSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->abortSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->access$1000(Lcom/android/server/pm/StagingManager;Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->access$1100(Lcom/android/server/pm/StagingManager;Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->access$1200(Lcom/android/server/pm/StagingManager;)Lcom/android/server/pm/ApexManager;
+PLcom/android/server/pm/StagingManager;->access$200(Lcom/android/server/pm/StagingManager;)Lcom/android/server/pm/StagingManager$PreRebootVerificationHandler;
+PLcom/android/server/pm/StagingManager;->access$500(Lcom/android/server/pm/StagingManager;)Landroid/util/SparseArray;
+PLcom/android/server/pm/StagingManager;->access$600(Lcom/android/server/pm/StagingManager;)Landroid/util/SparseIntArray;
+PLcom/android/server/pm/StagingManager;->access$700(Lcom/android/server/pm/StagingManager;Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->access$800(Lcom/android/server/pm/StagingManager;Lcom/android/server/pm/PackageInstallerSession;)Ljava/util/List;
+PLcom/android/server/pm/StagingManager;->access$900(Lcom/android/server/pm/StagingManager;Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/StagingManager;->checkDowngrade(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/PackageInfo;Landroid/content/pm/PackageInfo;)V
+HPLcom/android/server/pm/StagingManager;->checkNonOverlappingWithStagedSessions(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->checkRequiredVersionCode(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/pm/PackageInfo;)V
+HSPLcom/android/server/pm/StagingManager;->checkStateAndResume(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->commitSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->createAndWriteApkSession(Lcom/android/server/pm/PackageInstallerSession;Z)Lcom/android/server/pm/PackageInstallerSession;
 PLcom/android/server/pm/StagingManager;->createSession(Lcom/android/server/pm/PackageInstallerSession;)V
-PLcom/android/server/pm/StagingManager;->getSessions()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/StagingManager;->extractApksInSession(Lcom/android/server/pm/PackageInstallerSession;Z)Lcom/android/server/pm/PackageInstallerSession;
+PLcom/android/server/pm/StagingManager;->findAPKsInDir(Ljava/io/File;)Ljava/util/List;
+HPLcom/android/server/pm/StagingManager;->getSessions()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/pm/StagingManager;->installApksInSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->isApexSession(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->isApexSessionFailed(Landroid/apex/ApexSessionInfo;)Z
+PLcom/android/server/pm/StagingManager;->isApexSessionFinalized(Landroid/apex/ApexSessionInfo;)Z
+HSPLcom/android/server/pm/StagingManager;->isMultiPackageSessionComplete(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->lambda$extractApksInSession$5$StagingManager(I)Lcom/android/server/pm/PackageInstallerSession;
+PLcom/android/server/pm/StagingManager;->lambda$extractApksInSession$6(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->lambda$sessionContains$1$StagingManager(I)Lcom/android/server/pm/PackageInstallerSession;
+PLcom/android/server/pm/StagingManager;->lambda$sessionContains$2(Ljava/util/function/Predicate;Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->lambda$sessionContainsApex$3(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->lambda$sessionContainsApk$4(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->lambda$submitSessionToApexService$0(Landroid/content/pm/PackageInfo;)Ljava/lang/String;
+PLcom/android/server/pm/StagingManager;->lambda$verifyApksInSession$7$StagingManager(Lcom/android/server/pm/PackageInstallerSession;Landroid/content/Intent;)V
+PLcom/android/server/pm/StagingManager;->needsCheckpoint()Z
+HSPLcom/android/server/pm/StagingManager;->restoreSession(Lcom/android/server/pm/PackageInstallerSession;Z)V
+PLcom/android/server/pm/StagingManager;->resumeSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->retrieveRollbackIdForCommitSession(I)I
+PLcom/android/server/pm/StagingManager;->sessionContains(Lcom/android/server/pm/PackageInstallerSession;Ljava/util/function/Predicate;)Z
+PLcom/android/server/pm/StagingManager;->sessionContainsApex(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->sessionContainsApk(Lcom/android/server/pm/PackageInstallerSession;)Z
+PLcom/android/server/pm/StagingManager;->snapshotAndRestoreApkInApexUserData(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->snapshotAndRestoreApkInApexUserData(Ljava/lang/String;)V
+PLcom/android/server/pm/StagingManager;->submitSessionToApexService(Lcom/android/server/pm/PackageInstallerSession;)Ljava/util/List;
+PLcom/android/server/pm/StagingManager;->supportsCheckpoint()Z
+HSPLcom/android/server/pm/StagingManager;->systemReady()V
+PLcom/android/server/pm/StagingManager;->updateStoredSession(Lcom/android/server/pm/PackageInstallerSession;)V
+PLcom/android/server/pm/StagingManager;->validateApexSignature(Landroid/content/pm/PackageInfo;)V
+PLcom/android/server/pm/StagingManager;->verifyApksInSession(Lcom/android/server/pm/PackageInstallerSession;)V
 HSPLcom/android/server/pm/UserDataPreparer;-><init>(Lcom/android/server/pm/Installer;Ljava/lang/Object;Landroid/content/Context;Z)V
+PLcom/android/server/pm/UserDataPreparer;->destroyUserData(II)V
+PLcom/android/server/pm/UserDataPreparer;->destroyUserDataLI(Ljava/lang/String;II)V
 HSPLcom/android/server/pm/UserDataPreparer;->enforceSerialNumber(Ljava/io/File;I)V
-HSPLcom/android/server/pm/UserDataPreparer;->getDataSystemCeDirectory(I)Ljava/io/File;
-HSPLcom/android/server/pm/UserDataPreparer;->getDataSystemDeDirectory(I)Ljava/io/File;
-HSPLcom/android/server/pm/UserDataPreparer;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File;
-HSPLcom/android/server/pm/UserDataPreparer;->getDataUserDeDirectory(Ljava/lang/String;I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getDataSystemCeDirectory(I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getDataSystemDeDirectory(I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getDataUserCeDirectory(Ljava/lang/String;I)Ljava/io/File;
+PLcom/android/server/pm/UserDataPreparer;->getDataUserDeDirectory(Ljava/lang/String;I)Ljava/io/File;
 HSPLcom/android/server/pm/UserDataPreparer;->getSerialNumber(Ljava/io/File;)I
+PLcom/android/server/pm/UserDataPreparer;->getUserSystemDirectory(I)Ljava/io/File;
 HSPLcom/android/server/pm/UserDataPreparer;->isFileEncryptedEmulatedOnly()Z
-HSPLcom/android/server/pm/UserDataPreparer;->prepareUserData(III)V
-HSPLcom/android/server/pm/UserDataPreparer;->prepareUserDataLI(Ljava/lang/String;IIIZ)V
+PLcom/android/server/pm/UserDataPreparer;->prepareUserData(III)V
+PLcom/android/server/pm/UserDataPreparer;->prepareUserDataLI(Ljava/lang/String;IIIZ)V
 HSPLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;)V
 HSPLcom/android/server/pm/UserDataPreparer;->reconcileUsers(Ljava/lang/String;Ljava/util/List;Ljava/util/List;)V
 HSPLcom/android/server/pm/UserDataPreparer;->setSerialNumber(Ljava/io/File;I)V
+HSPLcom/android/server/pm/UserManagerService$1;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$1;->lambda$onReceive$0$UserManagerService$1(ILandroid/content/IntentSender;)V
+PLcom/android/server/pm/UserManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/pm/UserManagerService$2;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/os/Bundle;I)V
 HSPLcom/android/server/pm/UserManagerService$2;->run()V
+HSPLcom/android/server/pm/UserManagerService$3;-><init>(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;Landroid/os/Bundle;)V
 HSPLcom/android/server/pm/UserManagerService$3;->run()V
+PLcom/android/server/pm/UserManagerService$4;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$4;->run()V
+PLcom/android/server/pm/UserManagerService$5;-><init>(Lcom/android/server/pm/UserManagerService;)V
+PLcom/android/server/pm/UserManagerService$5;->userStopped(I)V
+PLcom/android/server/pm/UserManagerService$6$1;-><init>(Lcom/android/server/pm/UserManagerService$6;)V
+PLcom/android/server/pm/UserManagerService$6$1;->run()V
+PLcom/android/server/pm/UserManagerService$6;-><init>(Lcom/android/server/pm/UserManagerService;I)V
+PLcom/android/server/pm/UserManagerService$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/pm/UserManagerService$DisableQuietModeUserUnlockedCallback;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/content/IntentSender;)V
+PLcom/android/server/pm/UserManagerService$DisableQuietModeUserUnlockedCallback;->onFinished(ILandroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService$DisableQuietModeUserUnlockedCallback;->onProgress(IILandroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService$DisableQuietModeUserUnlockedCallback;->onStarted(ILandroid/os/Bundle;)V
 HSPLcom/android/server/pm/UserManagerService$LifeCycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/pm/UserManagerService$LifeCycle;->onBootPhase(I)V
 HSPLcom/android/server/pm/UserManagerService$LifeCycle;->onStart()V
 HSPLcom/android/server/pm/UserManagerService$LifeCycle;->onStartUser(I)V
-HSPLcom/android/server/pm/UserManagerService$LifeCycle;->onUnlockUser(I)V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onStopUser(I)V
+PLcom/android/server/pm/UserManagerService$LifeCycle;->onUnlockUser(I)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$1;)V
 HSPLcom/android/server/pm/UserManagerService$LocalService;->addUserRestrictionsListener(Landroid/os/UserManagerInternal$UserRestrictionsListener;)V
 HSPLcom/android/server/pm/UserManagerService$LocalService;->exists(I)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->getProfileParentId(I)I
+HPLcom/android/server/pm/UserManagerService$LocalService;->getProfileParentId(I)I
 HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserIds()[I
+HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfo(I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserInfos()[Landroid/content/pm/UserInfo;
 HSPLcom/android/server/pm/UserManagerService$LocalService;->getUserRestriction(ILjava/lang/String;)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z
-HSPLcom/android/server/pm/UserManagerService$LocalService;->isSettingRestrictedForUser(Ljava/lang/String;ILjava/lang/String;I)Z
-PLcom/android/server/pm/UserManagerService$LocalService;->isUserInitialized(I)Z
+HSPLcom/android/server/pm/UserManagerService$LocalService;->hasUserRestriction(Ljava/lang/String;I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isDeviceManaged()Z
+HPLcom/android/server/pm/UserManagerService$LocalService;->isProfileAccessible(IILjava/lang/String;Z)Z
+HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserInitialized(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->isUserManaged(I)Z
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserRunning(I)Z
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlocked(I)Z
 HSPLcom/android/server/pm/UserManagerService$LocalService;->isUserUnlockingOrUnlocked(I)Z
+PLcom/android/server/pm/UserManagerService$LocalService;->removeUserState(I)V
 HSPLcom/android/server/pm/UserManagerService$LocalService;->setDeviceManaged(Z)V
-HSPLcom/android/server/pm/UserManagerService$LocalService;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;ZI)V
+HSPLcom/android/server/pm/UserManagerService$LocalService;->setDevicePolicyUserRestrictions(ILandroid/os/Bundle;I)V
 HSPLcom/android/server/pm/UserManagerService$LocalService;->setForceEphemeralUsers(Z)V
 HSPLcom/android/server/pm/UserManagerService$LocalService;->setUserManaged(IZ)V
-HSPLcom/android/server/pm/UserManagerService$LocalService;->setUserState(II)V
-HSPLcom/android/server/pm/UserManagerService$MainHandler;->handleMessage(Landroid/os/Message;)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$UserData;-><init>()V
-HSPLcom/android/server/pm/UserManagerService$UserData;->getLastRequestQuietModeEnabledMillis()J
+PLcom/android/server/pm/UserManagerService$UserData;->getLastRequestQuietModeEnabledMillis()J
+HSPLcom/android/server/pm/UserManagerService$UserData;->setLastRequestQuietModeEnabledMillis(J)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;)V
+PLcom/android/server/pm/UserManagerService;->access$000(Lcom/android/server/pm/UserManagerService;IZLandroid/content/IntentSender;Ljava/lang/String;)V
+HSPLcom/android/server/pm/UserManagerService;->access$100(Lcom/android/server/pm/UserManagerService;)Landroid/content/Context;
+PLcom/android/server/pm/UserManagerService;->access$1000(Lcom/android/server/pm/UserManagerService;I)V
+PLcom/android/server/pm/UserManagerService;->access$1100(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/UserManagerService;->access$1200(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/UserManagerService;->access$1200(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+PLcom/android/server/pm/UserManagerService;->access$1300(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+PLcom/android/server/pm/UserManagerService;->access$1300(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
+HSPLcom/android/server/pm/UserManagerService;->access$1400(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService;->access$1400(Lcom/android/server/pm/UserManagerService;Lcom/android/server/pm/UserManagerService$UserData;)V
+HSPLcom/android/server/pm/UserManagerService;->access$1500(Lcom/android/server/pm/UserManagerService;ILandroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService;->access$1800(Lcom/android/server/pm/UserManagerService;)Z
+HSPLcom/android/server/pm/UserManagerService;->access$1802(Lcom/android/server/pm/UserManagerService;Z)Z
+HSPLcom/android/server/pm/UserManagerService;->access$1900(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/pm/UserManagerService;->access$1900(Lcom/android/server/pm/UserManagerService;)Z
+HSPLcom/android/server/pm/UserManagerService;->access$1902(Lcom/android/server/pm/UserManagerService;Z)Z
+HSPLcom/android/server/pm/UserManagerService;->access$200(Lcom/android/server/pm/UserManagerService;)Lcom/android/server/pm/PackageManagerService;
+HSPLcom/android/server/pm/UserManagerService;->access$200(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/UserManagerService;->access$2000(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/pm/UserManagerService;->access$2202(Lcom/android/server/pm/UserManagerService;Z)Z
+HSPLcom/android/server/pm/UserManagerService;->access$2302(Lcom/android/server/pm/UserManagerService;Z)Z
+HPLcom/android/server/pm/UserManagerService;->access$2500(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->access$2600(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->access$2800(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/pm/UserManagerService;->access$2900(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/pm/UserManagerService;->access$2900(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->access$300(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/UserManagerService;->access$300(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->access$3000(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HPLcom/android/server/pm/UserManagerService;->access$3100(Lcom/android/server/pm/UserManagerService;I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->access$3100(Lcom/android/server/pm/UserManagerService;I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserManagerService;->access$3200(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/pm/UserManagerService;->access$3200(Lcom/android/server/pm/UserManagerService;I)Landroid/os/Bundle;
+HSPLcom/android/server/pm/UserManagerService;->access$3300(Lcom/android/server/pm/UserManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/pm/UserManagerService;->access$400(Lcom/android/server/pm/UserManagerService;I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->access$500()Landroid/os/IBinder;
+HSPLcom/android/server/pm/UserManagerService;->access$600()Landroid/os/IBinder;
+HSPLcom/android/server/pm/UserManagerService;->access$600(Lcom/android/server/pm/UserManagerService;)Lcom/android/internal/app/IAppOpsService;
+HSPLcom/android/server/pm/UserManagerService;->access$700(Lcom/android/server/pm/UserManagerService;)Lcom/android/internal/app/IAppOpsService;
+HSPLcom/android/server/pm/UserManagerService;->access$700(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/UserManagerService;->access$800(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/UserManagerService;->access$800(Lcom/android/server/pm/UserManagerService;)Ljava/util/ArrayList;
+PLcom/android/server/pm/UserManagerService;->access$900(Lcom/android/server/pm/UserManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/UserManagerService;->addRemovingUserIdLocked(I)V
+HSPLcom/android/server/pm/UserManagerService;->addUserRestrictionsListener(Landroid/os/IUserRestrictionsListener;)V
+PLcom/android/server/pm/UserManagerService;->applyUserRestrictionsForAllUsersLR()V
 HSPLcom/android/server/pm/UserManagerService;->applyUserRestrictionsLR(I)V
+PLcom/android/server/pm/UserManagerService;->broadcastProfileAvailabilityChanges(Landroid/os/UserHandle;Landroid/os/UserHandle;Z)V
 PLcom/android/server/pm/UserManagerService;->canAddMoreManagedProfiles(IZ)Z
+PLcom/android/server/pm/UserManagerService;->canAddMoreProfilesToUser(Ljava/lang/String;IZ)Z
+PLcom/android/server/pm/UserManagerService;->canAddMoreUsersOfType(Lcom/android/server/pm/UserTypeDetails;)Z
 PLcom/android/server/pm/UserManagerService;->canHaveRestrictedProfile(I)Z
+PLcom/android/server/pm/UserManagerService;->checkManageOrCreateUsersPermission(I)V
+HSPLcom/android/server/pm/UserManagerService;->checkManageOrCreateUsersPermission(Ljava/lang/String;)V
 HSPLcom/android/server/pm/UserManagerService;->checkManageOrInteractPermIfCallerInOtherProfileGroup(ILjava/lang/String;)V
-HSPLcom/android/server/pm/UserManagerService;->checkManageUserAndAcrossUsersFullPermission(Ljava/lang/String;)V
-PLcom/android/server/pm/UserManagerService;->checkSystemOrRoot(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkManageUserAndAcrossUsersFullPermission(Ljava/lang/String;)V
+HSPLcom/android/server/pm/UserManagerService;->checkManageUsersPermission(Ljava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->checkSystemOrRoot(Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->checkUserTypeConsistency(I)Z
 HSPLcom/android/server/pm/UserManagerService;->cleanupPartialUsers()V
+PLcom/android/server/pm/UserManagerService;->cleanupPreCreatedUsers()V
 HSPLcom/android/server/pm/UserManagerService;->computeEffectiveUserRestrictionsLR(I)Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->createProfileForUserEvenWhenDisallowed(Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->createProfileForUserEvenWhenDisallowedWithThrow(Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->createUserInternalUnchecked(Ljava/lang/String;Ljava/lang/String;IIZ[Ljava/lang/String;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->createUserInternalUncheckedNoTracing(Ljava/lang/String;Ljava/lang/String;IIZ[Ljava/lang/String;Lcom/android/server/utils/TimingsTraceAndSlog;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->dispatchUserAddedIntent(Landroid/content/pm/UserInfo;)V
+HPLcom/android/server/pm/UserManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/pm/UserManagerService;->dumpTimeAgo(Ljava/io/PrintWriter;Ljava/lang/StringBuilder;JJ)V
+PLcom/android/server/pm/UserManagerService;->ensureCanModifyQuietMode(Ljava/lang/String;IIZ)V
 HSPLcom/android/server/pm/UserManagerService;->exists(I)Z
-HSPLcom/android/server/pm/UserManagerService;->findCurrentGuestUser()Landroid/content/pm/UserInfo;
-PLcom/android/server/pm/UserManagerService;->getAliveUsersExcludingGuestsCountLU()I
-HSPLcom/android/server/pm/UserManagerService;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
-HSPLcom/android/server/pm/UserManagerService;->getApplicationRestrictionsForUser(Ljava/lang/String;I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->finishRemoveUser(I)V
+HPLcom/android/server/pm/UserManagerService;->getAliveUsersExcludingGuestsCountLU()I
+HPLcom/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;->getCreationTime()J
 HSPLcom/android/server/pm/UserManagerService;->getCredentialOwnerProfile(I)I
 HSPLcom/android/server/pm/UserManagerService;->getEffectiveUserRestrictions(I)Landroid/os/Bundle;
+PLcom/android/server/pm/UserManagerService;->getEnforcingUserLocked(I)Landroid/os/UserManager$EnforcingUser;
+PLcom/android/server/pm/UserManagerService;->getFreeProfileBadgeLU(ILjava/lang/String;)I
 HSPLcom/android/server/pm/UserManagerService;->getInstance()Lcom/android/server/pm/UserManagerService;
-PLcom/android/server/pm/UserManagerService;->getManagedProfileBadge(I)I
+HSPLcom/android/server/pm/UserManagerService;->getInternalForInjectorOnly()Landroid/os/UserManagerInternal;
+PLcom/android/server/pm/UserManagerService;->getMaxUsersOfTypePerParent(Lcom/android/server/pm/UserTypeDetails;)I
+PLcom/android/server/pm/UserManagerService;->getMaxUsersOfTypePerParent(Ljava/lang/String;)I
+PLcom/android/server/pm/UserManagerService;->getNextAvailableId()I
+HSPLcom/android/server/pm/UserManagerService;->getOwnerName()Ljava/lang/String;
 HSPLcom/android/server/pm/UserManagerService;->getPrimaryUser()Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->getProfileIds(ILjava/lang/String;Z)[I
 HSPLcom/android/server/pm/UserManagerService;->getProfileIds(IZ)[I
-HSPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(IZ)Landroid/util/IntArray;
+HSPLcom/android/server/pm/UserManagerService;->getProfileIdsLU(ILjava/lang/String;Z)Landroid/util/IntArray;
 HSPLcom/android/server/pm/UserManagerService;->getProfileParent(I)Landroid/content/pm/UserInfo;
+HSPLcom/android/server/pm/UserManagerService;->getProfileParentLU(I)Landroid/content/pm/UserInfo;
 HSPLcom/android/server/pm/UserManagerService;->getProfiles(IZ)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService;->getProfilesLU(IZZ)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
-HSPLcom/android/server/pm/UserManagerService;->getUserAccount(I)Ljava/lang/String;
-PLcom/android/server/pm/UserManagerService;->getUserCreationTime(I)J
-HSPLcom/android/server/pm/UserManagerService;->getUserDataNoChecks(I)Lcom/android/server/pm/UserManagerService$UserData;
+HSPLcom/android/server/pm/UserManagerService;->getProfilesLU(ILjava/lang/String;ZZ)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->getSeedAccountType()Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->getUidForPackage(Ljava/lang/String;)I
+PLcom/android/server/pm/UserManagerService;->getUserAccount(I)Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->getUserBadgeColorResId(I)I
+HPLcom/android/server/pm/UserManagerService;->getUserBadgeLabelResId(I)I
+HPLcom/android/server/pm/UserManagerService;->getUserBadgeNoBackgroundResId(I)I
+PLcom/android/server/pm/UserManagerService;->getUserBadgeResId(I)I
+HPLcom/android/server/pm/UserManagerService;->getUserCreationTime(I)J
+HSPLcom/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;->getUserHandle(I)I
-HSPLcom/android/server/pm/UserManagerService;->getUserIcon(I)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/pm/UserManagerService;->getUserIcon(I)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/pm/UserManagerService;->getUserIconBadgeResId(I)I
 HSPLcom/android/server/pm/UserManagerService;->getUserIds()[I
 HSPLcom/android/server/pm/UserManagerService;->getUserInfo(I)Landroid/content/pm/UserInfo;
 HSPLcom/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;->getUserRestrictionSource(Ljava/lang/String;I)I
-HSPLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List;
+PLcom/android/server/pm/UserManagerService;->getUserName()Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->getUserRestrictionSource(Ljava/lang/String;I)I
+HPLcom/android/server/pm/UserManagerService;->getUserRestrictionSources(Ljava/lang/String;I)Ljava/util/List;
 HSPLcom/android/server/pm/UserManagerService;->getUserRestrictions(I)Landroid/os/Bundle;
 HSPLcom/android/server/pm/UserManagerService;->getUserSerialNumber(I)I
-PLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J
-PLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J
+HPLcom/android/server/pm/UserManagerService;->getUserStartRealtime()J
+HPLcom/android/server/pm/UserManagerService;->getUserTypeDetails(Landroid/content/pm/UserInfo;)Lcom/android/server/pm/UserTypeDetails;
+HPLcom/android/server/pm/UserManagerService;->getUserTypeDetailsNoChecks(I)Lcom/android/server/pm/UserTypeDetails;
+HPLcom/android/server/pm/UserManagerService;->getUserTypeNoChecks(I)Ljava/lang/String;
+HPLcom/android/server/pm/UserManagerService;->getUserUnlockRealtime()J
 HSPLcom/android/server/pm/UserManagerService;->getUsers(Z)Ljava/util/List;
-HSPLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/UserManagerService;->getUsers(ZZZ)Ljava/util/List;
+HPLcom/android/server/pm/UserManagerService;->hasBadge(I)Z
+HPLcom/android/server/pm/UserManagerService;->hasBaseUserRestriction(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/UserManagerService;->hasManageOrCreateUsersPermission()Z
 HSPLcom/android/server/pm/UserManagerService;->hasManageUsersOrPermission(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserManagerService;->hasManageUsersPermission()Z
 HSPLcom/android/server/pm/UserManagerService;->hasManagedProfile(I)Z
+HSPLcom/android/server/pm/UserManagerService;->hasPermissionGranted(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/UserManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
-PLcom/android/server/pm/UserManagerService;->hasUserRestrictionOnAnyUser(Ljava/lang/String;)Z
+HPLcom/android/server/pm/UserManagerService;->hasUserRestrictionOnAnyUser(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/UserManagerService;->initDefaultGuestRestrictions()V
-HSPLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z
+HSPLcom/android/server/pm/UserManagerService;->installWhitelistedSystemPackages(ZZ)Z
+PLcom/android/server/pm/UserManagerService;->isAtMostOneFlag(I)Z
+HPLcom/android/server/pm/UserManagerService;->isDemoUser(I)Z
 HSPLcom/android/server/pm/UserManagerService;->isManagedProfile(I)Z
+PLcom/android/server/pm/UserManagerService;->isPreCreated(I)Z
+HSPLcom/android/server/pm/UserManagerService;->isProfile(I)Z
+HSPLcom/android/server/pm/UserManagerService;->isProfileOf(Landroid/content/pm/UserInfo;Landroid/content/pm/UserInfo;)Z
 HSPLcom/android/server/pm/UserManagerService;->isQuietModeEnabled(I)Z
-HSPLcom/android/server/pm/UserManagerService;->isRestricted()Z
-HSPLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z
+HPLcom/android/server/pm/UserManagerService;->isRestricted()Z
+HPLcom/android/server/pm/UserManagerService;->isSameProfileGroup(II)Z
 HSPLcom/android/server/pm/UserManagerService;->isSameProfileGroupNoChecks(II)Z
+HSPLcom/android/server/pm/UserManagerService;->isSettingRestrictedForUser(Ljava/lang/String;ILjava/lang/String;I)Z
+HPLcom/android/server/pm/UserManagerService;->isUserLimitReached()Z
 HSPLcom/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
 HSPLcom/android/server/pm/UserManagerService;->isUserUnlocked(I)Z
 HSPLcom/android/server/pm/UserManagerService;->isUserUnlockingOrUnlocked(I)Z
-HSPLcom/android/server/pm/UserManagerService;->onBeforeStartUser(I)V
-HSPLcom/android/server/pm/UserManagerService;->onBeforeUnlockUser(I)V
-HSPLcom/android/server/pm/UserManagerService;->onUserLoggedIn(I)V
-HSPLcom/android/server/pm/UserManagerService;->readApplicationRestrictionsLAr(Landroid/util/AtomicFile;)Landroid/os/Bundle;
-PLcom/android/server/pm/UserManagerService;->readEntry(Landroid/os/Bundle;Ljava/util/ArrayList;Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/pm/UserManagerService;->lambda$addUserRestrictionsListener$0(Landroid/os/IUserRestrictionsListener;ILandroid/os/Bundle;Landroid/os/Bundle;)V
+PLcom/android/server/pm/UserManagerService;->logQuietModeEnabled(IZLjava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->makeInitialized(I)V
+PLcom/android/server/pm/UserManagerService;->onBeforeStartUser(I)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;
+HSPLcom/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;
+HPLcom/android/server/pm/UserManagerService;->readEntry(Landroid/os/Bundle;Ljava/util/ArrayList;Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/UserManagerService;->readIntAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
 HSPLcom/android/server/pm/UserManagerService;->readLongAttribute(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;J)J
 HSPLcom/android/server/pm/UserManagerService;->readUserLP(I)Lcom/android/server/pm/UserManagerService$UserData;
 HSPLcom/android/server/pm/UserManagerService;->readUserLP(ILjava/io/InputStream;)Lcom/android/server/pm/UserManagerService$UserData;
 HSPLcom/android/server/pm/UserManagerService;->readUserListLP()V
 HSPLcom/android/server/pm/UserManagerService;->reconcileUsers(Ljava/lang/String;)V
-PLcom/android/server/pm/UserManagerService;->setApplicationRestrictions(Ljava/lang/String;Landroid/os/Bundle;I)V
-HSPLcom/android/server/pm/UserManagerService;->setDevicePolicyUserRestrictionsInner(ILandroid/os/Bundle;ZI)V
+PLcom/android/server/pm/UserManagerService;->removeUser(I)Z
+PLcom/android/server/pm/UserManagerService;->removeUserState(I)V
+PLcom/android/server/pm/UserManagerService;->removeUserUnchecked(I)Z
+PLcom/android/server/pm/UserManagerService;->requestQuietModeEnabled(Ljava/lang/String;ZILandroid/content/IntentSender;)Z
+PLcom/android/server/pm/UserManagerService;->requestQuietModeEnabled(Ljava/lang/String;ZILandroid/content/IntentSender;I)Z
+PLcom/android/server/pm/UserManagerService;->scanNextAvailableIdLocked()I
+PLcom/android/server/pm/UserManagerService;->scheduleWriteUser(Lcom/android/server/pm/UserManagerService$UserData;)V
+PLcom/android/server/pm/UserManagerService;->sendProfileRemovedBroadcast(II)V
+HPLcom/android/server/pm/UserManagerService;->setApplicationRestrictions(Ljava/lang/String;Landroid/os/Bundle;I)V
+HSPLcom/android/server/pm/UserManagerService;->setDevicePolicyUserRestrictionsInner(ILandroid/os/Bundle;I)V
+PLcom/android/server/pm/UserManagerService;->setQuietModeEnabled(IZLandroid/content/IntentSender;Ljava/lang/String;)V
+PLcom/android/server/pm/UserManagerService;->setUserEnabled(I)V
 HSPLcom/android/server/pm/UserManagerService;->setUserRestriction(Ljava/lang/String;ZI)V
+PLcom/android/server/pm/UserManagerService;->showConfirmCredentialToDisableQuietMode(ILandroid/content/IntentSender;)V
 HSPLcom/android/server/pm/UserManagerService;->systemReady()V
+HSPLcom/android/server/pm/UserManagerService;->updateRestrictionsIfNeededLR(ILandroid/os/Bundle;Landroid/util/SparseArray;)Z
 HSPLcom/android/server/pm/UserManagerService;->updateUserIds()V
 HSPLcom/android/server/pm/UserManagerService;->updateUserRestrictionsInternalLR(Landroid/os/Bundle;I)V
 HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;)V
-PLcom/android/server/pm/UserManagerService;->writeApplicationRestrictionsLAr(Landroid/os/Bundle;Landroid/util/AtomicFile;)V
-PLcom/android/server/pm/UserManagerService;->writeBundle(Landroid/os/Bundle;Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;)V
-HSPLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
+HSPLcom/android/server/pm/UserManagerService;->upgradeIfNecessaryLP(Landroid/os/Bundle;I)V
+HSPLcom/android/server/pm/UserManagerService;->userWithName(Landroid/content/pm/UserInfo;)Landroid/content/pm/UserInfo;
+PLcom/android/server/pm/UserManagerService;->verifyCallingPackage(Ljava/lang/String;I)V
+HPLcom/android/server/pm/UserManagerService;->writeApplicationRestrictionsLAr(Landroid/os/Bundle;Landroid/util/AtomicFile;)V
+HPLcom/android/server/pm/UserManagerService;->writeApplicationRestrictionsLAr(Ljava/lang/String;Landroid/os/Bundle;I)V
+HPLcom/android/server/pm/UserManagerService;->writeBundle(Landroid/os/Bundle;Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;)V
+PLcom/android/server/pm/UserManagerService;->writeUserLP(Lcom/android/server/pm/UserManagerService$UserData;Ljava/io/OutputStream;)V
+PLcom/android/server/pm/UserManagerService;->writeUserListLP()V
+HSPLcom/android/server/pm/UserRestrictionsUtils;-><clinit>()V
 HSPLcom/android/server/pm/UserRestrictionsUtils;->applyUserRestriction(Landroid/content/Context;ILjava/lang/String;Z)V
 HSPLcom/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
-HSPLcom/android/server/pm/UserRestrictionsUtils;->dumpRestrictions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/UserRestrictionsUtils;->isGlobal(ZLjava/lang/String;)Z
+HPLcom/android/server/pm/UserRestrictionsUtils;->canDeviceOwnerChange(Ljava/lang/String;)Z
+HPLcom/android/server/pm/UserRestrictionsUtils;->canProfileOwnerChange(Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/UserRestrictionsUtils;->clone(Landroid/os/Bundle;)Landroid/os/Bundle;
+PLcom/android/server/pm/UserRestrictionsUtils;->contains(Landroid/os/Bundle;Ljava/lang/String;)Z
+HPLcom/android/server/pm/UserRestrictionsUtils;->dumpRestrictions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserRestrictionsUtils;->getDefaultEnabledForManagedProfiles()Ljava/util/Set;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->getNewUserRestrictionSetting(Landroid/content/Context;ILjava/lang/String;Z)I
+HSPLcom/android/server/pm/UserRestrictionsUtils;->isEmpty(Landroid/os/Bundle;)Z
+HSPLcom/android/server/pm/UserRestrictionsUtils;->isGlobal(ILjava/lang/String;)Z
 HSPLcom/android/server/pm/UserRestrictionsUtils;->isSettingRestrictedForUser(Landroid/content/Context;Ljava/lang/String;ILjava/lang/String;I)Z
+PLcom/android/server/pm/UserRestrictionsUtils;->isSystemApp(I[Ljava/lang/String;)Z
 HSPLcom/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;->mergeAll(Landroid/util/SparseArray;)Landroid/os/Bundle;
 HSPLcom/android/server/pm/UserRestrictionsUtils;->newSetWithUniqueCheck([Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/pm/UserRestrictionsUtils;->nonNull(Landroid/os/Bundle;)Landroid/os/Bundle;
 HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;)Landroid/os/Bundle;
 HSPLcom/android/server/pm/UserRestrictionsUtils;->readRestrictions(Lorg/xmlpull/v1/XmlPullParser;Landroid/os/Bundle;)V
-HSPLcom/android/server/pm/UserRestrictionsUtils;->sortToGlobalAndLocal(Landroid/os/Bundle;ZILandroid/os/Bundle;Landroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserRestrictionsUtils;->restrictionsChanged(Landroid/os/Bundle;Landroid/os/Bundle;[Ljava/lang/String;)Z
+HSPLcom/android/server/pm/UserRestrictionsUtils;->setInstallMarketAppsRestriction(Landroid/content/ContentResolver;II)V
+HSPLcom/android/server/pm/UserRestrictionsUtils;->sortToGlobalAndLocal(Landroid/os/Bundle;ILandroid/os/Bundle;Landroid/os/Bundle;)V
 HSPLcom/android/server/pm/UserRestrictionsUtils;->writeRestrictions(Lorg/xmlpull/v1/XmlSerializer;Landroid/os/Bundle;Ljava/lang/String;)V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;-><init>(Lcom/android/server/pm/UserManagerService;Landroid/util/ArrayMap;)V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->checkWhitelistedSystemPackages(I)V
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->determineWhitelistedPackagesForUserTypes(Lcom/android/server/SystemConfig;)Landroid/util/ArrayMap;
+HPLcom/android/server/pm/UserSystemPackageInstaller;->dump(Ljava/io/PrintWriter;)V
+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;->getInstallablePackagesForUserType(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getTypesBitSet(Ljava/lang/Iterable;Ljava/util/Map;)J
+PLcom/android/server/pm/UserSystemPackageInstaller;->getUserTypeMask(Ljava/lang/String;)J
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistMode()I
+PLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistedPackagesForUserType(Ljava/lang/String;)Ljava/util/Set;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->getWhitelistedSystemPackages()Ljava/util/Set;
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->installWhitelistedSystemPackages(ZZ)Z
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->isEnforceMode(I)Z
+PLcom/android/server/pm/UserSystemPackageInstaller;->isIgnoreOtaMode(I)Z
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->isImplicitWhitelistMode(I)Z
+HSPLcom/android/server/pm/UserSystemPackageInstaller;->isLogMode(I)Z
+HPLcom/android/server/pm/UserSystemPackageInstaller;->lambda$getInstallablePackagesForUserType$2$UserSystemPackageInstaller(Ljava/util/Set;ZLjava/util/Set;Landroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/pm/UserSystemPackageInstaller;->shouldInstallPackage(Landroid/content/pm/parsing/AndroidPackage;Landroid/util/ArrayMap;Ljava/util/Set;Z)Z
+HSPLcom/android/server/pm/UserTypeDetails$Builder;-><init>()V
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->createUserTypeDetails()Lcom/android/server/pm/UserTypeDetails;
+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;->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;->setDefaultRestrictions(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;->setIconBadge(I)Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeDetails$Builder;->setLabel(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;-><init>(Ljava/lang/String;ZIIIIIIII[I[ILandroid/os/Bundle;)V
+HSPLcom/android/server/pm/UserTypeDetails;-><init>(Ljava/lang/String;ZIIIIIIII[I[ILandroid/os/Bundle;Lcom/android/server/pm/UserTypeDetails$1;)V
+HSPLcom/android/server/pm/UserTypeDetails;->addDefaultRestrictionsTo(Landroid/os/Bundle;)V
+HPLcom/android/server/pm/UserTypeDetails;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/pm/UserTypeDetails;->getBadgeColor(I)I
+HPLcom/android/server/pm/UserTypeDetails;->getBadgeLabel(I)I
+HPLcom/android/server/pm/UserTypeDetails;->getBadgeNoBackground()I
+PLcom/android/server/pm/UserTypeDetails;->getBadgePlain()I
+PLcom/android/server/pm/UserTypeDetails;->getDefaultUserInfoFlags()I
+PLcom/android/server/pm/UserTypeDetails;->getIconBadge()I
+PLcom/android/server/pm/UserTypeDetails;->getMaxAllowed()I
+PLcom/android/server/pm/UserTypeDetails;->getMaxAllowedPerParent()I
+HPLcom/android/server/pm/UserTypeDetails;->hasBadge()Z
+HSPLcom/android/server/pm/UserTypeDetails;->isFull()Z
+PLcom/android/server/pm/UserTypeDetails;->isManagedProfile()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;->getDefaultGuestUserRestrictions()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;->getDefaultTypeProfileManaged()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getDefaultTypeSystemHeadless()Lcom/android/server/pm/UserTypeDetails$Builder;
+HSPLcom/android/server/pm/UserTypeFactory;->getUserTypes()Landroid/util/ArrayMap;
+PLcom/android/server/pm/dex/-$$Lambda$ArtManagerService$MEVzU-orlv4msZVF-bA5NLti04g;-><init>(Landroid/os/ParcelFileDescriptor;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
 PLcom/android/server/pm/dex/-$$Lambda$ArtManagerService$MEVzU-orlv4msZVF-bA5NLti04g;->run()V
+PLcom/android/server/pm/dex/-$$Lambda$ArtManagerService$_rD0Y6OPSJHMdjTIOtucoGQ1xag;-><init>(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;ILjava/lang/String;)V
 PLcom/android/server/pm/dex/-$$Lambda$ArtManagerService$_rD0Y6OPSJHMdjTIOtucoGQ1xag;->run()V
-HSPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
+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$1;)V
+HPLcom/android/server/pm/dex/ArtManagerService$ArtManagerInternalImpl;->getPackageOptimizationInfo(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;)Landroid/content/pm/dex/PackageOptimizationInfo;
+HSPLcom/android/server/pm/dex/ArtManagerService;-><clinit>()V
 HSPLcom/android/server/pm/dex/ArtManagerService;-><init>(Landroid/content/Context;Landroid/content/pm/IPackageManager;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
-PLcom/android/server/pm/dex/ArtManagerService;->checkAndroidPermissions(ILjava/lang/String;)Z
+PLcom/android/server/pm/dex/ArtManagerService;->access$100(Ljava/lang/String;)I
+PLcom/android/server/pm/dex/ArtManagerService;->access$200(Ljava/lang/String;)I
+HPLcom/android/server/pm/dex/ArtManagerService;->checkAndroidPermissions(ILjava/lang/String;)Z
 PLcom/android/server/pm/dex/ArtManagerService;->checkShellPermissions(ILjava/lang/String;I)Z
-HSPLcom/android/server/pm/dex/ArtManagerService;->clearAppProfiles(Landroid/content/pm/PackageParser$Package;)V
+HSPLcom/android/server/pm/dex/ArtManagerService;->clearAppProfiles(Landroid/content/pm/parsing/AndroidPackage;)V
 PLcom/android/server/pm/dex/ArtManagerService;->createProfileSnapshot(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;ILandroid/content/pm/dex/ISnapshotRuntimeProfileCallback;)V
 PLcom/android/server/pm/dex/ArtManagerService;->destroyProfileSnapshot(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/pm/dex/ArtManagerService;->getCompilationFilterTronValue(Ljava/lang/String;)I
+HPLcom/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;->getPackageProfileNames(Landroid/content/pm/PackageParser$Package;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/dex/ArtManagerService;->getPackageProfileNames(Landroid/content/pm/parsing/AndroidPackage;)Landroid/util/ArrayMap;
 PLcom/android/server/pm/dex/ArtManagerService;->isRuntimeProfilingEnabled(ILjava/lang/String;)Z
 PLcom/android/server/pm/dex/ArtManagerService;->lambda$postError$0(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;ILjava/lang/String;)V
 PLcom/android/server/pm/dex/ArtManagerService;->lambda$postSuccess$1(Landroid/os/ParcelFileDescriptor;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
 PLcom/android/server/pm/dex/ArtManagerService;->postError(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;I)V
 PLcom/android/server/pm/dex/ArtManagerService;->postSuccess(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;)V
-HSPLcom/android/server/pm/dex/ArtManagerService;->prepareAppProfiles(Landroid/content/pm/PackageParser$Package;IZ)V
-PLcom/android/server/pm/dex/ArtManagerService;->prepareAppProfiles(Landroid/content/pm/PackageParser$Package;[IZ)V
+HPLcom/android/server/pm/dex/ArtManagerService;->prepareAppProfiles(Landroid/content/pm/parsing/AndroidPackage;IZ)V
+PLcom/android/server/pm/dex/ArtManagerService;->prepareAppProfiles(Landroid/content/pm/parsing/AndroidPackage;[IZ)V
 PLcom/android/server/pm/dex/ArtManagerService;->snapshotAppProfile(Ljava/lang/String;Ljava/lang/String;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;)V
 PLcom/android/server/pm/dex/ArtManagerService;->snapshotBootImageProfile(Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;)V
 PLcom/android/server/pm/dex/ArtManagerService;->snapshotRuntimeProfile(ILjava/lang/String;Ljava/lang/String;Landroid/content/pm/dex/ISnapshotRuntimeProfileCallback;Ljava/lang/String;)V
 HSPLcom/android/server/pm/dex/ArtManagerService;->verifyTronLoggingConstants()V
+HSPLcom/android/server/pm/dex/DexManager$DexSearchResult;-><init>(Lcom/android/server/pm/dex/DexManager;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/dex/DexManager$DexSearchResult;->access$000(Lcom/android/server/pm/dex/DexManager$DexSearchResult;)I
+HSPLcom/android/server/pm/dex/DexManager$DexSearchResult;->access$100(Lcom/android/server/pm/dex/DexManager$DexSearchResult;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Landroid/content/pm/ApplicationInfo;I)V
+HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;-><init>(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
+HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->access$200(Lcom/android/server/pm/dex/DexManager$PackageCodeLocations;)Ljava/lang/String;
 HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->mergeAppDataDirs(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->searchDex(Ljava/lang/String;I)I
 HSPLcom/android/server/pm/dex/DexManager$PackageCodeLocations;->updateCodeLocation(Ljava/lang/String;[Ljava/lang/String;)V
+HSPLcom/android/server/pm/dex/DexManager;-><clinit>()V
 HSPLcom/android/server/pm/dex/DexManager;-><init>(Landroid/content/Context;Landroid/content/pm/IPackageManager;Lcom/android/server/pm/PackageDexOptimizer;Lcom/android/server/pm/Installer;Ljava/lang/Object;)V
+HSPLcom/android/server/pm/dex/DexManager;->access$300(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/pm/dex/DexManager;->access$400()I
+HSPLcom/android/server/pm/dex/DexManager;->access$500()I
+PLcom/android/server/pm/dex/DexManager;->access$600()I
+HPLcom/android/server/pm/dex/DexManager;->access$700()I
 HSPLcom/android/server/pm/dex/DexManager;->cachePackageCodeLocation(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;[Ljava/lang/String;I)V
+HSPLcom/android/server/pm/dex/DexManager;->cachePackageInfo(Landroid/content/pm/PackageInfo;I)V
 PLcom/android/server/pm/dex/DexManager;->dexoptSecondaryDex(Lcom/android/server/pm/dex/DexoptOptions;)Z
 PLcom/android/server/pm/dex/DexManager;->getAllPackagesWithSecondaryDexFiles()Ljava/util/Set;
 HSPLcom/android/server/pm/dex/DexManager;->getDexPackage(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;I)Lcom/android/server/pm/dex/DexManager$DexSearchResult;
 PLcom/android/server/pm/dex/DexManager;->getDynamicCodeLogger()Lcom/android/server/pm/dex/DynamicCodeLogger;
-PLcom/android/server/pm/dex/DexManager;->getPackageUseInfoOrDefault(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HSPLcom/android/server/pm/dex/DexManager;->getPackageUseInfoOrDefault(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HSPLcom/android/server/pm/dex/DexManager;->isPackageSelectedToRunOob(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/dex/DexManager;->isPackageSelectedToRunOob(Ljava/util/Collection;)Z
-HSPLcom/android/server/pm/dex/DexManager;->isPackageSelectedToRunOobInternal(ZLjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Collection;)Z
+HSPLcom/android/server/pm/dex/DexManager;->isPackageSelectedToRunOobInternal(ZLjava/lang/String;Ljava/util/Collection;)Z
 HSPLcom/android/server/pm/dex/DexManager;->load(Ljava/util/Map;)V
 HSPLcom/android/server/pm/dex/DexManager;->loadInternal(Ljava/util/Map;)V
 HSPLcom/android/server/pm/dex/DexManager;->notifyDexLoad(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V
 HSPLcom/android/server/pm/dex/DexManager;->notifyDexLoadInternal(Landroid/content/pm/ApplicationInfo;Ljava/util/List;Ljava/util/List;Ljava/lang/String;I)V
-HSPLcom/android/server/pm/dex/DexManager;->notifyPackageDataDestroyed(Ljava/lang/String;I)V
+PLcom/android/server/pm/dex/DexManager;->notifyPackageDataDestroyed(Ljava/lang/String;I)V
 PLcom/android/server/pm/dex/DexManager;->notifyPackageInstalled(Landroid/content/pm/PackageInfo;I)V
 PLcom/android/server/pm/dex/DexManager;->notifyPackageUpdated(Ljava/lang/String;Ljava/lang/String;[Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DexManager;->reconcileSecondaryDexFiles(Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/dex/DexManager;->putIfAbsent(Ljava/util/Map;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/pm/dex/DexManager;->reconcileSecondaryDexFiles(Ljava/lang/String;)V
+PLcom/android/server/pm/dex/DexManager;->writePackageDexUsageNow()V
+HSPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;II)V
+HSPLcom/android/server/pm/dex/DexoptOptions;-><init>(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/dex/DexoptOptions;->getCompilationReason()I
+HSPLcom/android/server/pm/dex/DexoptOptions;->getCompilerFilter()Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptOptions;->getFlags()I
+HSPLcom/android/server/pm/dex/DexoptOptions;->getPackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptOptions;->getSplitName()Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptOptions;->isBootComplete()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isCheckForProfileUpdates()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isDexoptAsSharedLibrary()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isDexoptIdleBackgroundJob()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isDexoptInstallWithDexMetadata()Z
+HPLcom/android/server/pm/dex/DexoptOptions;->isDexoptOnlySecondaryDex()Z
+PLcom/android/server/pm/dex/DexoptOptions;->isDexoptOnlySharedDex()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isDowngrade()Z
+HSPLcom/android/server/pm/dex/DexoptOptions;->isForce()Z
+HSPLcom/android/server/pm/dex/DexoptUtils;-><clinit>()V
 HSPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoader(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoader(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/dex/DexoptUtils;->encodeClassLoaderChain(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/dex/DexoptUtils;->encodeClasspath([Ljava/lang/String;)Ljava/lang/String;
-HPLcom/android/server/pm/dex/DexoptUtils;->encodeSharedLibraries(Ljava/util/List;)Ljava/lang/String;
-PLcom/android/server/pm/dex/DexoptUtils;->encodeSharedLibrary(Landroid/content/pm/SharedLibraryInfo;)Ljava/lang/String;
-PLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContext(Landroid/content/pm/SharedLibraryInfo;)Ljava/lang/String;
-PLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContexts(Landroid/content/pm/ApplicationInfo;Ljava/util/List;[Z)[Ljava/lang/String;
-PLcom/android/server/pm/dex/DexoptUtils;->getSplitRelativeCodePaths(Landroid/content/pm/ApplicationInfo;)[Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptUtils;->encodeSharedLibraries(Ljava/util/List;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptUtils;->encodeSharedLibrary(Landroid/content/pm/SharedLibraryInfo;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/DexoptUtils;->getClassLoaderContexts(Landroid/content/pm/parsing/AndroidPackage;Ljava/util/List;[Z)[Ljava/lang/String;
+HPLcom/android/server/pm/dex/DexoptUtils;->getSplitRelativeCodePaths(Landroid/content/pm/parsing/AndroidPackage;)[Ljava/lang/String;
 HSPLcom/android/server/pm/dex/DexoptUtils;->processContextForDexLoad(Ljava/util/List;Ljava/util/List;)[Ljava/lang/String;
-PLcom/android/server/pm/dex/DynamicCodeLogger;->fileIsUnder(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/dex/DynamicCodeLogger;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/Installer;)V
+HSPLcom/android/server/pm/dex/DynamicCodeLogger;-><init>(Landroid/content/pm/IPackageManager;Lcom/android/server/pm/Installer;Lcom/android/server/pm/dex/PackageDynamicCodeLoading;)V
+HPLcom/android/server/pm/dex/DynamicCodeLogger;->fileIsUnder(Ljava/lang/String;Ljava/lang/String;)Z
 PLcom/android/server/pm/dex/DynamicCodeLogger;->getAllPackagesWithDynamicCodeLoading()Ljava/util/Set;
 PLcom/android/server/pm/dex/DynamicCodeLogger;->getPackageDynamicCodeInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;
-PLcom/android/server/pm/dex/DynamicCodeLogger;->logDynamicCodeLoading(Ljava/lang/String;)V
+HPLcom/android/server/pm/dex/DynamicCodeLogger;->logDynamicCodeLoading(Ljava/lang/String;)V
 HSPLcom/android/server/pm/dex/DynamicCodeLogger;->readAndSync(Ljava/util/Map;)V
-HSPLcom/android/server/pm/dex/DynamicCodeLogger;->recordDex(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/dex/DynamicCodeLogger;->recordNative(ILjava/lang/String;)V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->recordDex(ILjava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/pm/dex/DynamicCodeLogger;->recordNative(ILjava/lang/String;)V
 PLcom/android/server/pm/dex/DynamicCodeLogger;->removePackage(Ljava/lang/String;)V
-HSPLcom/android/server/pm/dex/DynamicCodeLogger;->removeUserPackage(Ljava/lang/String;I)V
-PLcom/android/server/pm/dex/DynamicCodeLogger;->writeDclEvent(Ljava/lang/String;ILjava/lang/String;)V
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->removeUserPackage(Ljava/lang/String;I)V
+HPLcom/android/server/pm/dex/DynamicCodeLogger;->writeDclEvent(Ljava/lang/String;ILjava/lang/String;)V
+PLcom/android/server/pm/dex/DynamicCodeLogger;->writeNow()V
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$1;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;-><init>(ZILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->access$200(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set;
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->access$300(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)I
+HPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->access$400(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
+PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->access$600(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
+HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->access$700(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Ljava/util/Set;
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getClassLoaderContext()Ljava/lang/String;
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoaderIsas()Ljava/util/Set;
-PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getLoadingPackages()Ljava/util/Set;
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->getOwnerUserId()I
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isUnknownClassLoaderContext()Z
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isUsedByOtherApps()Z
 PLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->isVariableClassLoaderContext()Z
-HSPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->merge(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
+HPLcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;->merge(Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;)Z
 HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>()V
-HPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;-><init>(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Lcom/android/server/pm/dex/PackageDexUsage$1;)V
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->access$000(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->access$100(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map;
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->access$500(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Ljava/util/Map;
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->access$800(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;)Z
 PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->clearCodePathUsedByOtherApps()Z
 PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getDexUseInfoMap()Ljava/util/Map;
 PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->getLoadingPackages(Ljava/lang/String;)Ljava/util/Set;
 HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isAnyCodePathUsedByOtherApps()Z
-PLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->isUsedByOtherApps(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;->mergeCodePathUsedByOtherApps(Ljava/lang/String;ZLjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/dex/PackageDexUsage;-><init>()V
 PLcom/android/server/pm/dex/PackageDexUsage;->clearUsedByOtherApps(Ljava/lang/String;)Z
-PLcom/android/server/pm/dex/PackageDexUsage;->clonePackageUseInfoMap()Ljava/util/Map;
-PLcom/android/server/pm/dex/PackageDexUsage;->getAllPackagesWithSecondaryDexFiles()Ljava/util/Set;
-PLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HPLcom/android/server/pm/dex/PackageDexUsage;->clonePackageUseInfoMap()Ljava/util/Map;
+HPLcom/android/server/pm/dex/PackageDexUsage;->getAllPackagesWithSecondaryDexFiles()Ljava/util/Set;
+HSPLcom/android/server/pm/dex/PackageDexUsage;->getPackageUseInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
+HSPLcom/android/server/pm/dex/PackageDexUsage;->isSupportedVersion(I)Z
+HPLcom/android/server/pm/dex/PackageDexUsage;->maybeAddLoadingPackage(Ljava/lang/String;Ljava/lang/String;Ljava/util/Set;)Z
+HSPLcom/android/server/pm/dex/PackageDexUsage;->maybeReadClassLoaderContext(Ljava/io/BufferedReader;I)Ljava/lang/String;
 HSPLcom/android/server/pm/dex/PackageDexUsage;->maybeReadLoadingPackages(Ljava/io/BufferedReader;I)Ljava/util/Set;
-HSPLcom/android/server/pm/dex/PackageDexUsage;->maybeWriteAsync()V
+PLcom/android/server/pm/dex/PackageDexUsage;->maybeWriteAsync()V
 HSPLcom/android/server/pm/dex/PackageDexUsage;->read()V
 HSPLcom/android/server/pm/dex/PackageDexUsage;->read(Ljava/io/Reader;)V
 HSPLcom/android/server/pm/dex/PackageDexUsage;->readBoolean(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/dex/PackageDexUsage;->readInternal(Ljava/lang/Void;)V
 HSPLcom/android/server/pm/dex/PackageDexUsage;->record(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;ZZLjava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->removeDexFile(Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;Ljava/lang/String;I)Z
 PLcom/android/server/pm/dex/PackageDexUsage;->removeDexFile(Ljava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/pm/dex/PackageDexUsage;->removePackage(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/dex/PackageDexUsage;->removeUserPackage(Ljava/lang/String;I)Z
+PLcom/android/server/pm/dex/PackageDexUsage;->removeUserPackage(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/dex/PackageDexUsage;->syncData(Ljava/util/Map;Ljava/util/Map;)V
-PLcom/android/server/pm/dex/PackageDexUsage;->write(Ljava/io/Writer;)V
+HPLcom/android/server/pm/dex/PackageDexUsage;->write(Ljava/io/Writer;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->writeBoolean(Z)Ljava/lang/String;
 PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Object;)V
-PLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Void;)V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;)V
-HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->add(Ljava/lang/String;CILjava/lang/String;)Z
+HPLcom/android/server/pm/dex/PackageDexUsage;->writeInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/dex/PackageDexUsage;->writeNow()V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;-><init>(CI[Ljava/lang/String;)V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;-><init>(CI[Ljava/lang/String;Lcom/android/server/pm/dex/PackageDynamicCodeLoading$1;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;Lcom/android/server/pm/dex/PackageDynamicCodeLoading$1;)V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;-><init>()V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$1;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;-><init>(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;Lcom/android/server/pm/dex/PackageDynamicCodeLoading$1;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->access$100(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;Ljava/lang/String;CILjava/lang/String;)Z
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->access$400(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->access$500(Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;Ljava/util/Map;Ljava/util/Set;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->add(Ljava/lang/String;CILjava/lang/String;)Z
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->removeFile(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;->syncData(Ljava/util/Map;Ljava/util/Set;)V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->escape(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><clinit>()V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;-><init>()V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->escape(Ljava/lang/String;)Ljava/lang/String;
 PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->getAllPackagesWithDynamicCodeLoading()Ljava/util/Set;
 PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->getPackageDynamicCodeInfo(Ljava/lang/String;)Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;
-HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->maybeWriteAsync()V
+HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->isValidFileType(I)Z
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->maybeWriteAsync()V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read()V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read(Ljava/io/InputStream;)V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->read(Ljava/io/InputStream;Ljava/util/Map;)V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readFileInfo(Ljava/lang/String;Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;)V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->readInternal(Ljava/lang/Void;)V
-HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->record(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)Z
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->removeFile(Ljava/lang/String;Ljava/lang/String;I)Z
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->record(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)Z
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->removeFile(Ljava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->removePackage(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->removeUserPackage(Ljava/lang/String;I)Z
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->removeUserPackage(Ljava/lang/String;I)Z
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->syncData(Ljava/util/Map;)V
 HSPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->unescape(Ljava/lang/String;)Ljava/lang/String;
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->write(Ljava/io/OutputStream;)V
-PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->write(Ljava/io/OutputStream;Ljava/util/Map;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->write(Ljava/io/OutputStream;)V
+HPLcom/android/server/pm/dex/PackageDynamicCodeLoading;->write(Ljava/io/OutputStream;Ljava/util/Map;)V
 PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->writeInternal(Ljava/lang/Object;)V
 PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->writeInternal(Ljava/lang/Void;)V
+PLcom/android/server/pm/dex/PackageDynamicCodeLoading;->writeNow()V
 HSPLcom/android/server/pm/dex/ViewCompiler;-><init>(Ljava/lang/Object;Lcom/android/server/pm/Installer;)V
+HSPLcom/android/server/pm/permission/-$$Lambda$DefaultPermissionGrantPolicy$SHfHTWKpfBf_vZtWArm-FlNBI8k;-><clinit>()V
 HSPLcom/android/server/pm/permission/-$$Lambda$DefaultPermissionGrantPolicy$SHfHTWKpfBf_vZtWArm-FlNBI8k;-><init>()V
-PLcom/android/server/pm/permission/-$$Lambda$DefaultPermissionGrantPolicy$SHfHTWKpfBf_vZtWArm-FlNBI8k;->apply(I)Ljava/lang/Object;
-PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$KZ0-FIR02GsOfMAAOdWzIbkVHHM;->accept(Ljava/lang/Object;)V
-PLcom/android/server/pm/permission/-$$Lambda$js2BSmz1ucAEj8fgl3jw5trxIjw;->onGetRuntimePermissionsBackup([B)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$6-ufctMfTfrbd3URDMlB0Ywd8Ik;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$6-ufctMfTfrbd3URDMlB0Ywd8Ik;->onUidImportance(II)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$SVoloDDAPWRycmaRhugBlXuSVeI;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$SVoloDDAPWRycmaRhugBlXuSVeI;->onUidImportance(II)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$jL3jeghSTeL6RfIu1pUGSzWgTuc;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;)V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$jL3jeghSTeL6RfIu1pUGSzWgTuc;->run()V
+PLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$lKEtuzRRYU8MegOihXQiXrZ0ZaM;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;)V
+HPLcom/android/server/pm/permission/-$$Lambda$OneTimePermissionUserManager$PackageInactivityListener$lKEtuzRRYU8MegOihXQiXrZ0ZaM;->onUidImportance(II)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$1$7A2ffMA57G4PvFD5RbG2mRh2Q_8;-><init>(II)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$1$7A2ffMA57G4PvFD5RbG2mRh2Q_8;->run()V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$5wIJaBo3ATYcr96ofI23sjuUqoA;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/os/UserHandle;)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$5wIJaBo3ATYcr96ofI23sjuUqoA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$BEPoV9HmbUN2-ZgCcIqC6xfzvew;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$BEPoV9HmbUN2-ZgCcIqC6xfzvew;->runOrThrow()V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$E0rM1FNIqzKUZzqphmkzeY3ZdTk;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$E0rM1FNIqzKUZzqphmkzeY3ZdTk;->runOrThrow()V
+HPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$JcWw5txStfnrnbvcFd2durv6YOo;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$JcWw5txStfnrnbvcFd2durv6YOo;->runOrThrow()V
+HSPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$NPd9St1HBvGAtg1uhMV2Upfww4g;-><clinit>()V
+HSPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$NPd9St1HBvGAtg1uhMV2Upfww4g;-><init>()V
+HSPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$NPd9St1HBvGAtg1uhMV2Upfww4g;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$QU_UFF-9J77Mq118FLJUiLh4ARI;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/BasePermission;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$QU_UFF-9J77Mq118FLJUiLh4ARI;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$T4uCZ9__oEXYpzLBYEW1T_BN3SU;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$T4uCZ9__oEXYpzLBYEW1T_BN3SU;->runOrThrow()V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$aQWnOfCuKK-rSxzDPI_dUOtzv8I;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;[Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$aQWnOfCuKK-rSxzDPI_dUOtzv8I;->runOrThrow()V
+HSPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$g9Bo5gFpLYyPOsp3K8Aik5xseDI;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;ZLjava/lang/String;Ljava/lang/String;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$g9Bo5gFpLYyPOsp3K8Aik5xseDI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$igfYI7thImnYrDxs3qWtqs2SCRk;-><init>(II)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$igfYI7thImnYrDxs3qWtqs2SCRk;->run()V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$oG7YD8MVgcqcPbx_HXQ04PEUOXM;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$oG7YD8MVgcqcPbx_HXQ04PEUOXM;->runOrThrow()V
+PLcom/android/server/pm/permission/-$$Lambda$oynlBn0BbcU0KODvfUDDUHb5LKY;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/pm/permission/-$$Lambda$oynlBn0BbcU0KODvfUDDUHb5LKY;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/pm/permission/BasePermission;-><init>(Ljava/lang/String;Ljava/lang/String;I)V
 PLcom/android/server/pm/permission/BasePermission;->addToTree(ILandroid/content/pm/PermissionInfo;Lcom/android/server/pm/permission/BasePermission;)Z
-PLcom/android/server/pm/permission/BasePermission;->comparePermissionInfos(Landroid/content/pm/PermissionInfo;Landroid/content/pm/PermissionInfo;)Z
-HSPLcom/android/server/pm/permission/BasePermission;->createOrUpdate(Lcom/android/server/pm/permission/BasePermission;Landroid/content/pm/PackageParser$Permission;Landroid/content/pm/PackageParser$Package;Ljava/util/Collection;Z)Lcom/android/server/pm/permission/BasePermission;
-PLcom/android/server/pm/permission/BasePermission;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Set;ZZLcom/android/server/pm/DumpState;)Z
-HSPLcom/android/server/pm/permission/BasePermission;->enforceDeclaredUsedAndRuntimeOrDevelopment(Landroid/content/pm/PackageParser$Package;)V
+PLcom/android/server/pm/permission/BasePermission;->comparePermissionInfos(Landroid/content/pm/parsing/ComponentParseUtils$ParsedPermission;Landroid/content/pm/PermissionInfo;)Z
+HPLcom/android/server/pm/permission/BasePermission;->compareStrings(Ljava/lang/CharSequence;Ljava/lang/CharSequence;)Z
+HSPLcom/android/server/pm/permission/BasePermission;->computeGids(I)[I
+HSPLcom/android/server/pm/permission/BasePermission;->createOrUpdate(Landroid/content/pm/PackageManagerInternal;Lcom/android/server/pm/permission/BasePermission;Landroid/content/pm/parsing/ComponentParseUtils$ParsedPermission;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/Collection;Z)Lcom/android/server/pm/permission/BasePermission;
+HPLcom/android/server/pm/permission/BasePermission;->dumpPermissionsLPr(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Set;ZZLcom/android/server/pm/DumpState;)Z
+HSPLcom/android/server/pm/permission/BasePermission;->enforceDeclaredUsedAndRuntimeOrDevelopment(Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/PackageSetting;)V
 PLcom/android/server/pm/permission/BasePermission;->enforcePermissionTree(Ljava/util/Collection;Ljava/lang/String;I)Lcom/android/server/pm/permission/BasePermission;
 HSPLcom/android/server/pm/permission/BasePermission;->findPermissionTree(Ljava/util/Collection;Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
 HSPLcom/android/server/pm/permission/BasePermission;->generatePermissionInfo(II)Landroid/content/pm/PermissionInfo;
-HSPLcom/android/server/pm/permission/BasePermission;->generatePermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
-PLcom/android/server/pm/permission/BasePermission;->getSourcePackageName()Ljava/lang/String;
-HPLcom/android/server/pm/permission/BasePermission;->getSourcePackageSetting()Lcom/android/server/pm/PackageSettingBase;
-PLcom/android/server/pm/permission/BasePermission;->isRuntime()Z
+HPLcom/android/server/pm/permission/BasePermission;->generatePermissionInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/pm/permission/BasePermission;->getName()Ljava/lang/String;
+HSPLcom/android/server/pm/permission/BasePermission;->getProtectionLevel()I
+HSPLcom/android/server/pm/permission/BasePermission;->getSourcePackageName()Ljava/lang/String;
+HSPLcom/android/server/pm/permission/BasePermission;->getSourcePackageSetting()Lcom/android/server/pm/PackageSettingBase;
+HSPLcom/android/server/pm/permission/BasePermission;->isAppOp()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isAppPredictor()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isCompanion()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isConfigurator()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isDevelopment()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isDocumenter()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isDynamic()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isHardOrSoftRestricted()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isHardRestricted()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isImmutablyRestricted()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isIncidentReportApprover()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isInstaller()Z
+PLcom/android/server/pm/permission/BasePermission;->isInstant()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isNormal()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isOEM()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isPermission(Landroid/content/pm/parsing/ComponentParseUtils$ParsedPermission;)Z
+HSPLcom/android/server/pm/permission/BasePermission;->isPre23()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isPreInstalled()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isPrivileged()Z
+PLcom/android/server/pm/permission/BasePermission;->isRemoved()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isRetailDemo()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isRuntime()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isRuntimeOnly()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isSetup()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isSignature()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isSoftRestricted()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isSystemTextClassifier()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isTelephony()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isVendorPrivileged()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isVerifier()Z
+HSPLcom/android/server/pm/permission/BasePermission;->isWellbeing()Z
 HSPLcom/android/server/pm/permission/BasePermission;->readInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;Ljava/lang/String;I)I
 HSPLcom/android/server/pm/permission/BasePermission;->readLPw(Ljava/util/Map;Lorg/xmlpull/v1/XmlPullParser;)Z
+HSPLcom/android/server/pm/permission/BasePermission;->setGids([IZ)V
+HSPLcom/android/server/pm/permission/BasePermission;->setPermission(Landroid/content/pm/parsing/ComponentParseUtils$ParsedPermission;)V
+HSPLcom/android/server/pm/permission/BasePermission;->setSourcePackageSetting(Lcom/android/server/pm/PackageSettingBase;)V
 HSPLcom/android/server/pm/permission/BasePermission;->updateDynamicPermission(Ljava/util/Collection;)V
 HSPLcom/android/server/pm/permission/BasePermission;->writeLPr(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;-><init>(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/os/Looper;)V
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrantedCallback;Lcom/android/server/pm/permission/PermissionManagerService;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrant;-><init>(Ljava/lang/String;ZZ)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><clinit>()V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;-><init>(Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/pm/permission/PermissionManagerService;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->access$000(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Ljava/lang/Object;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->access$100(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->access$102(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->access$200(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;)Landroid/util/ArrayMap;
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->doesPackageSupportRuntimePermissions(Landroid/content/pm/PackageInfo;)Z
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getBackgroundPermission(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultPermissionFiles()[Ljava/io/File;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultProviderAuthorityPackage(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackage(Landroid/content/Intent;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackage(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackageForCategory(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerServicePackage(Landroid/content/Intent;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerServicePackage(Ljava/lang/String;I)Ljava/lang/String;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getHeadlessSyncAdapterPackages([Ljava/lang/String;I)Ljava/util/ArrayList;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getKnownPackage(II)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultProviderAuthorityPackage(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackage(Landroid/content/Intent;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackage(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerActivityPackageForCategory(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerServicePackage(Landroid/content/Intent;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getDefaultSystemHandlerServicePackage(Ljava/lang/String;I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getHeadlessSyncAdapterPackages([Ljava/lang/String;I)Ljava/util/ArrayList;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getKnownPackages(II)[Ljava/lang/String;
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getPackageInfo(Ljava/lang/String;I)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getSystemPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionExceptions(I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->getSystemPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionExceptions(I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissions(I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToActiveLuiApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultBrowser(Ljava/lang/String;I)V
 PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSimCallManager(Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSmsApp(Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSystemDialerApp(Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSystemSmsApp(Ljava/lang/String;I)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledCarrierApps([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultSystemHandlerPermissions(I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionToEachSystemPackage(Ljava/util/ArrayList;I[Ljava/util/Set;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Ljava/lang/String;IZ[Ljava/util/Set;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSysComponentsAndPrivApps(I)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Ljava/lang/String;I[Ljava/util/Set;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZI)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissionsForSystemPackage(ILandroid/content/pm/PackageInfo;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantSystemFixedPermissionsToSystemPackage(Ljava/lang/String;I[Ljava/util/Set;)V
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isPermissionDangerous(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSystemDialerApp(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSystemSmsApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultSystemUseOpenWifiApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToDefaultUseOpenWifiApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledCarrierApps([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantDefaultSystemHandlerPermissions(I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantIgnoringSystemPackage(Ljava/lang/String;I[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionToEachSystemPackage(Ljava/util/ArrayList;I[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Landroid/content/pm/PackageInfo;IZZZ[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToPackage(Ljava/lang/String;IZZ[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSysComponentsAndPrivApps(I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Ljava/lang/String;IZ[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantPermissionsToSystemPackage(Ljava/lang/String;I[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Landroid/content/pm/PackageInfo;Ljava/util/Set;ZI)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissions(Landroid/content/pm/PackageInfo;Ljava/util/Set;ZZZI)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantRuntimePermissionsForSystemPackage(ILandroid/content/pm/PackageInfo;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->grantSystemFixedPermissionsToSystemPackage(Ljava/lang/String;I[Ljava/util/Set;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isFixedOrUserSet(I)Z
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isPermissionDangerous(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isPermissionRestricted(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSysComponentOrPersistentPlatformSignedPrivApp(Landroid/content/pm/PackageInfo;)Z
-PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSystemPackage(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSystemPackage(Landroid/content/pm/PackageInfo;)Z
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->isSystemPackage(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parse(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;)V
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parseExceptions(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/Map;)V
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->parsePermission(Lorg/xmlpull/v1/XmlPullParser;Ljava/util/List;)V
 HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->readDefaultPermissionExceptionsLocked()Landroid/util/ArrayMap;
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setDialerAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationExtraPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSimCallManagerPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSmsAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesProvider(Landroid/content/pm/PackageManagerInternal$SyncAdapterPackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setUseOpenWifiAppPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProvider(Landroid/content/pm/PackageManagerInternal$PackagesProvider;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addAllPermissionGroups(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addAllPermissions(Landroid/content/pm/PackageParser$Package;Z)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addDynamicPermission(Landroid/content/pm/PermissionInfo;ZILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)Z
+HPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->revokeDefaultPermissionsFromLuiApps([Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->scheduleReadDefaultPermissionExceptions()V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setLocationPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$SyncAdapterPackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/DefaultPermissionGrantPolicy;->wereDefaultPermissionsGrantedSinceBoot(I)Z
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager;ILjava/lang/String;JII)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;-><init>(Lcom/android/server/pm/permission/OneTimePermissionUserManager;ILjava/lang/String;JIILcom/android/server/pm/permission/OneTimePermissionUserManager$1;)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->cancelAlarmLocked()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->lambda$new$0$OneTimePermissionUserManager$PackageInactivityListener(II)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->lambda$new$1$OneTimePermissionUserManager$PackageInactivityListener(II)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->lambda$new$2$OneTimePermissionUserManager$PackageInactivityListener(II)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->lambda$onPackageInactiveLocked$3$OneTimePermissionUserManager$PackageInactivityListener()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->onAlarm()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->onImportanceChanged(II)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->onPackageInactiveLocked()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager$PackageInactivityListener;->setAlarmLocked()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;-><clinit>()V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$200(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Landroid/app/ActivityManager;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$300()Ljava/lang/String;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$400(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Landroid/content/Context;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$500(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Landroid/app/AlarmManager;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$600(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Ljava/lang/Object;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$700(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Landroid/util/SparseArray;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->access$800(Lcom/android/server/pm/permission/OneTimePermissionUserManager;)Landroid/permission/PermissionControllerManager;
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->startPackageOneTimeSession(Ljava/lang/String;JII)V
+PLcom/android/server/pm/permission/OneTimePermissionUserManager;->stopPackageOneTimeSession(Ljava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$1;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;)V
+PLcom/android/server/pm/permission/PermissionManagerService$1;->lambda$onPermissionRevoked$1(II)V
+PLcom/android/server/pm/permission/PermissionManagerService$1;->onInstallPermissionGranted()V
+PLcom/android/server/pm/permission/PermissionManagerService$1;->onInstallPermissionRevoked()V
+HSPLcom/android/server/pm/permission/PermissionManagerService$1;->onPermissionGranted(II)V
+PLcom/android/server/pm/permission/PermissionManagerService$1;->onPermissionRevoked(II)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$1;->onPermissionUpdated([IZ)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$1;->onPermissionUpdatedNotifyListener([IZI)V
+PLcom/android/server/pm/permission/PermissionManagerService$2;-><init>(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/util/ArraySet;Landroid/util/IntArray;Landroid/util/IntArray;[Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$2;->onPermissionGranted(II)V
+PLcom/android/server/pm/permission/PermissionManagerService$2;->onPermissionRevoked(II)V
+PLcom/android/server/pm/permission/PermissionManagerService$2;->onPermissionUpdated([IZ)V
+PLcom/android/server/pm/permission/PermissionManagerService$2;->onPermissionUpdatedNotifyListener([IZI)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;-><init>(Landroid/os/Looper;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;->addListenerLocked(Landroid/permission/IOnPermissionsChangeListener;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;->handleOnPermissionsChanged(I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;->onPermissionsChanged(I)V
+PLcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;->removeListenerLocked(Landroid/permission/IOnPermissionsChangeListener;)V
+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$1;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addAllPermissionGroups(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addAllPermissions(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->addOnRuntimePermissionStateChangedListener(Landroid/permission/PermissionManagerInternal$OnRuntimePermissionStateChangedListener;)V
 PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->backupRuntimePermissions(Landroid/os/UserHandle;)[B
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkPermission(Ljava/lang/String;Ljava/lang/String;II)I
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->checkUidPermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;II)I
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->enforceCrossUserPermission(IIZZLjava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionGroups(II)Ljava/util/List;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultPermissionGrantPolicy()Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionGroupInfo(Ljava/lang/String;II)Landroid/content/pm/PermissionGroupInfo;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;II)Landroid/content/pm/PermissionInfo;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionInfoByGroup(Ljava/lang/String;II)Ljava/util/List;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAllPermissionWithProtection(I)Ljava/util/ArrayList;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getAppOpPermissionPackages(Ljava/lang/String;I)[Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultBrowser(I)Ljava/lang/String;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultDialer(I)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getDefaultHome(I)Ljava/lang/String;
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionSettings()Lcom/android/server/pm/permission/PermissionSettings;
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionTEMP(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->grantRequestedRuntimePermissions(Landroid/content/pm/PackageParser$Package;[I[Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->isPermissionsReviewRequired(Landroid/content/pm/PackageParser$Package;I)Z
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->removeAllPermissions(Landroid/content/pm/PackageParser$Package;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->getPermissionTEMP(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->grantDefaultPermissionsToDefaultSimCallManager(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->grantDefaultPermissionsToDefaultUseOpenWifiApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->grantRequestedRuntimePermissions(Landroid/content/pm/parsing/AndroidPackage;[I[Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->isPermissionsReviewRequired(Landroid/content/pm/parsing/AndroidPackage;I)Z
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->onNewUserCreated(I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->removeAllPermissions(Landroid/content/pm/parsing/AndroidPackage;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->resetRuntimePermissions(Landroid/content/pm/parsing/AndroidPackage;I)V
 PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->restoreDelayedRuntimePermissions(Ljava/lang/String;Landroid/os/UserHandle;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->revokeRuntimePermissionsIfGroupChanged(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->revokeRuntimePermissionsIfGroupChanged(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setCheckPermissionDelegate(Landroid/permission/PermissionManagerInternal$CheckPermissionDelegate;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDefaultBrowser(Ljava/lang/String;ZZI)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDefaultBrowserProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDefaultDialerProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDefaultHome(Ljava/lang/String;ILjava/util/function/Consumer;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDefaultHomeProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setDialerAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setLocationExtraPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setLocationPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setSimCallManagerPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setSmsAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setSyncAdapterPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$SyncAdapterPackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setUseOpenWifiAppPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setVoiceInteractionPackagesProvider(Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setWhitelistedRestrictedPermissions(Landroid/content/pm/parsing/AndroidPackage;[ILjava/util/List;II)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->setWhitelistedRestrictedPermissions(Ljava/lang/String;Ljava/util/List;II)V
 HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->systemReady()V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->updateAllPermissions(Ljava/lang/String;ZZLjava/util/Collection;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIIIZLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->updatePermissions(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZLjava/util/Collection;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;-><init>(Landroid/content/Context;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrantedCallback;Ljava/lang/Object;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->addAllPermissionGroups(Landroid/content/pm/PackageParser$Package;Z)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->addAllPermissions(Landroid/content/pm/PackageParser$Package;Z)V
-PLcom/android/server/pm/permission/PermissionManagerService;->addDynamicPermission(Landroid/content/pm/PermissionInfo;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->updateAllPermissions(Ljava/lang/String;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->updatePermissions(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;->wereDefaultPermissionsGrantedSinceBoot(I)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;-><clinit>()V
+HSPLcom/android/server/pm/permission/PermissionManagerService;-><init>(Landroid/content/Context;Ljava/lang/Object;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$000(Lcom/android/server/pm/permission/PermissionManagerService;)Landroid/os/Handler;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$100(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$1000(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;Z)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1100(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;[I[Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1200(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;ILjava/util/List;IILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1300(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;Ljava/util/List;II)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1400(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$1500(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;ZLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1600(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$1700(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;I)[Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$1800(Lcom/android/server/pm/permission/PermissionManagerService;IIZZZLjava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$1900(Lcom/android/server/pm/permission/PermissionManagerService;IIZZLjava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$200(Lcom/android/server/pm/permission/PermissionManagerService;)Landroid/content/pm/PackageManagerInternal;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2000(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionSettings;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2100(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionSettings;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2100(Lcom/android/server/pm/permission/PermissionManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2200(Lcom/android/server/pm/permission/PermissionManagerService;)Ljava/lang/Object;
+PLcom/android/server/pm/permission/PermissionManagerService;->access$2300(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/os/UserHandle;)[B
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2500(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/permission/PermissionManagerInternal$OnRuntimePermissionStateChangedListener;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->access$2500(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2600(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/permission/PermissionManagerInternal$OnRuntimePermissionStateChangedListener;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2800(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;
+PLcom/android/server/pm/permission/PermissionManagerService;->access$2802(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/permission/PermissionManagerInternal$CheckPermissionDelegate;)Landroid/permission/PermissionManagerInternal$CheckPermissionDelegate;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2802(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2900(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$2902(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;
+PLcom/android/server/pm/permission/PermissionManagerService;->access$3000(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;
+PLcom/android/server/pm/permission/PermissionManagerService;->access$3000(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;ZZI)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3002(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;
+PLcom/android/server/pm/permission/PermissionManagerService;->access$3100(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3100(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3102(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3102(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3200(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
+HPLcom/android/server/pm/permission/PermissionManagerService;->access$3200(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3202(Lcom/android/server/pm/permission/PermissionManagerService;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$3300(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$400(Lcom/android/server/pm/permission/PermissionManagerService;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$500(Lcom/android/server/pm/permission/PermissionManagerService;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$600(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;I)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->access$700(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$800(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->access$900(Lcom/android/server/pm/permission/PermissionManagerService;Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->addAllPermissionGroups(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->addAllPermissions(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->addOnRuntimePermissionStateChangedListener(Landroid/permission/PermissionManagerInternal$OnRuntimePermissionStateChangedListener;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->addPermission(Landroid/content/pm/PermissionInfo;Z)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->addWhitelistedRestrictedPermission(Ljava/lang/String;Ljava/lang/String;II)Z
 HSPLcom/android/server/pm/permission/PermissionManagerService;->adjustPermissionProtectionFlagsLocked(ILjava/lang/String;I)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->applyLegacyStoragePermissionModel(Lcom/android/server/pm/permission/PermissionsState;Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/PackageParser$Package;[I)[I
 PLcom/android/server/pm/permission/PermissionManagerService;->backupRuntimePermissions(Landroid/os/UserHandle;)[B
-HSPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;II)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;II)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->create(Landroid/content/Context;Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrantedCallback;Ljava/lang/Object;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+PLcom/android/server/pm/permission/PermissionManagerService;->buildInvalidCrossUserPermissionMessage(Ljava/lang/String;Z)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->cacheBackgroundToForegoundPermissionMapping()V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkExistsAndEnforceCannotModifyImmutablyRestrictedPermission(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkIfLegacyStorageOpsNeedToBeUpdated(Landroid/content/pm/parsing/AndroidPackage;Z[I)[I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkPermission(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkPermissionImpl(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkPermissionInternal(Landroid/content/pm/parsing/AndroidPackage;ZLjava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkSinglePermissionInternal(ILcom/android/server/pm/permission/PermissionsState;Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkSingleUidPermissionInternal(ILjava/lang/String;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermission(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermissionImpl(Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->checkUidPermissionInternal(Landroid/content/pm/parsing/AndroidPackage;ILjava/lang/String;)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->create(Landroid/content/Context;Ljava/lang/Object;)Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->doNotifyRuntimePermissionStateChanged(Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->enforceCrossUserOrProfilePermission(IIZZLjava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionManagerService;->enforceCrossUserPermission(IIZZZLjava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionManagerService;->enforceGrantRevokeGetRuntimePermissionPermissions(Ljava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionManagerService;->enforceGrantRevokeRuntimePermissionPermissions(Ljava/lang/String;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->getAllPermissionGroups(II)Ljava/util/List;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getAllPermissionGroups(I)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/pm/permission/PermissionManagerService;->getAppOpPermissionPackages(Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/pm/permission/PermissionManagerService;->getAppOpPermissionPackagesInternal(Ljava/lang/String;I)[Ljava/lang/String;
 HSPLcom/android/server/pm/permission/PermissionManagerService;->getBackgroundPermissions()Landroid/util/ArrayMap;
-PLcom/android/server/pm/permission/PermissionManagerService;->getPermission(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
-HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;II)I
-PLcom/android/server/pm/permission/PermissionManagerService;->getPermissionGroupInfo(Ljava/lang/String;II)Landroid/content/pm/PermissionGroupInfo;
-HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;II)Landroid/content/pm/PermissionInfo;
-HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfoByGroup(Ljava/lang/String;II)Ljava/util/List;
-PLcom/android/server/pm/permission/PermissionManagerService;->grantRequestedRuntimePermissionsForUser(Landroid/content/pm/PackageParser$Package;I[Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Lcom/android/server/pm/permission/BasePermission;Lcom/android/server/pm/permission/PermissionsState;)Z
-PLcom/android/server/pm/permission/PermissionManagerService;->hasPermission(Landroid/content/pm/PackageParser$Package;Ljava/lang/String;)Z
-HSPLcom/android/server/pm/permission/PermissionManagerService;->hasPrivappWhitelistEntry(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z
-HSPLcom/android/server/pm/permission/PermissionManagerService;->inheritPermissionStateToNewImplicitPermissionLocked(Landroid/util/ArraySet;Ljava/lang/String;Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/PackageParser$Package;I)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;)Z
-PLcom/android/server/pm/permission/PermissionManagerService;->lambda$restoreDelayedRuntimePermissions$0$PermissionManagerService(Landroid/os/UserHandle;Ljava/lang/Boolean;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->removeAllPermissions(Landroid/content/pm/PackageParser$Package;Z)V
-PLcom/android/server/pm/permission/PermissionManagerService;->restoreDelayedRuntimePermissions(Ljava/lang/String;Landroid/os/UserHandle;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->restorePermissionState(Landroid/content/pm/PackageParser$Package;ZLjava/lang/String;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->revokePermissionsNoLongerImplicitLocked(Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/PackageParser$Package;[I)[I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->revokeRuntimePermissionsIfGroupChanged(Landroid/content/pm/PackageParser$Package;Landroid/content/pm/PackageParser$Package;Ljava/util/ArrayList;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-PLcom/android/server/pm/permission/PermissionManagerService;->revokeUnusedSharedUserPermissionsLocked(Lcom/android/server/pm/SharedUserSetting;[I)[I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->setAppOpMode(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;II)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->setAppOpsLocked(Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->setInitialGrantForNewImplicitPermissionsLocked(Lcom/android/server/pm/permission/PermissionsState;Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/PackageParser$Package;[I)[I
+PLcom/android/server/pm/permission/PermissionManagerService;->getDefaultBrowser(I)Ljava/lang/String;
+PLcom/android/server/pm/permission/PermissionManagerService;->getOneTimePermissionUserManager(I)Lcom/android/server/pm/permission/OneTimePermissionUserManager;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermission(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlags(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionFlagsInternal(Ljava/lang/String;Ljava/lang/String;II)I
+HPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionGroupInfo(Ljava/lang/String;I)Landroid/content/pm/PermissionGroupInfo;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getPermissionInfo(Ljava/lang/String;Ljava/lang/String;I)Landroid/content/pm/PermissionInfo;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getSplitPermissions()Ljava/util/List;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getVolumeUuidForPackage(Landroid/content/pm/parsing/AndroidPackage;)Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->getWhitelistedRestrictedPermissions(Ljava/lang/String;II)Ljava/util/List;
+PLcom/android/server/pm/permission/PermissionManagerService;->grantDefaultPermissionsToActiveLuiApp(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->grantDefaultPermissionsToEnabledCarrierApps([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->grantDefaultPermissionsToEnabledImsServices([Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->grantDefaultPermissionsToEnabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->grantRequestedRuntimePermissions(Landroid/content/pm/parsing/AndroidPackage;[I[Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->grantRequestedRuntimePermissionsForUser(Landroid/content/pm/parsing/AndroidPackage;I[Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->grantRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->grantRuntimePermissionInternal(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->grantSignaturePermission(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/permission/BasePermission;Lcom/android/server/pm/permission/PermissionsState;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->hasCrossUserPermission(IIIZZ)Z
+HPLcom/android/server/pm/permission/PermissionManagerService;->hasPermission(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;)Z
+HPLcom/android/server/pm/permission/PermissionManagerService;->hasPermission(Ljava/lang/String;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->hasPrivappWhitelistEntry(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->inheritPermissionStateToNewImplicitPermissionLocked(Landroid/util/ArraySet;Ljava/lang/String;Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/parsing/AndroidPackage;I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->isNewPlatformPermissionForPackage(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->isPackageRequestingPermission(Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;)Z
+HPLcom/android/server/pm/permission/PermissionManagerService;->isPermissionRevokedByPolicy(Ljava/lang/String;Ljava/lang/String;I)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->isPermissionsReviewRequired(Landroid/content/pm/parsing/AndroidPackage;I)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->killUid(IILjava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->lambda$NPd9St1HBvGAtg1uhMV2Upfww4g(Lcom/android/server/pm/permission/PermissionManagerService;Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$grantDefaultPermissionsToActiveLuiApp$7$PermissionManagerService(Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$grantDefaultPermissionsToEnabledCarrierApps$3$PermissionManagerService([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$grantDefaultPermissionsToEnabledImsServices$4$PermissionManagerService([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$grantDefaultPermissionsToEnabledTelephonyDataServices$5$PermissionManagerService([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$resetRuntimePermissionsInternal$2(II)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$restoreDelayedRuntimePermissions$9$PermissionManagerService(Landroid/os/UserHandle;Ljava/lang/Boolean;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$revokeDefaultPermissionsFromDisabledTelephonyDataServices$6$PermissionManagerService([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->lambda$revokeDefaultPermissionsFromLuiApps$8$PermissionManagerService([Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->lambda$updatePermissionSourcePackage$11$PermissionManagerService(Lcom/android/server/pm/permission/BasePermission;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->lambda$updatePermissions$10$PermissionManagerService(Landroid/content/pm/parsing/AndroidPackage;ZLjava/lang/String;Ljava/lang/String;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->logPermission(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->notifyRuntimePermissionStateChanged(Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->queryPermissionsByGroup(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HSPLcom/android/server/pm/permission/PermissionManagerService;->removeAllPermissions(Landroid/content/pm/parsing/AndroidPackage;Z)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->removeOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
+PLcom/android/server/pm/permission/PermissionManagerService;->removeWhitelistedRestrictedPermission(Ljava/lang/String;Ljava/lang/String;II)Z
+HPLcom/android/server/pm/permission/PermissionManagerService;->resetRuntimePermissionsInternal(Landroid/content/pm/parsing/AndroidPackage;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->restoreDelayedRuntimePermissions(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->restorePermissionState(Landroid/content/pm/parsing/AndroidPackage;ZLjava/lang/String;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->revokeDefaultPermissionsFromDisabledTelephonyDataServices([Ljava/lang/String;I)V
+PLcom/android/server/pm/permission/PermissionManagerService;->revokeDefaultPermissionsFromLuiApps([Ljava/lang/String;I)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->revokePermissionsNoLongerImplicitLocked(Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/parsing/AndroidPackage;[I)[I
+PLcom/android/server/pm/permission/PermissionManagerService;->revokeRuntimePermission(Ljava/lang/String;Ljava/lang/String;I)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->revokeRuntimePermissionInternal(Ljava/lang/String;Ljava/lang/String;ZIILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->revokeRuntimePermissionsIfGroupChanged(Landroid/content/pm/parsing/AndroidPackage;Landroid/content/pm/parsing/AndroidPackage;Ljava/util/ArrayList;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HPLcom/android/server/pm/permission/PermissionManagerService;->revokeUnusedSharedUserPermissionsLocked(Lcom/android/server/pm/SharedUserSetting;[I)[I
+PLcom/android/server/pm/permission/PermissionManagerService;->setDefaultBrowser(Ljava/lang/String;I)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->setDefaultBrowserInternal(Ljava/lang/String;ZZI)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->setInitialGrantForNewImplicitPermissionsLocked(Lcom/android/server/pm/permission/PermissionsState;Lcom/android/server/pm/permission/PermissionsState;Landroid/content/pm/parsing/AndroidPackage;Landroid/util/ArraySet;[I)[I
+HSPLcom/android/server/pm/permission/PermissionManagerService;->setWhitelistedRestrictedPermissionsForUser(Landroid/content/pm/parsing/AndroidPackage;ILjava/util/List;IILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->setWhitelistedRestrictedPermissionsInternal(Ljava/lang/String;Ljava/util/List;II)Z
+HPLcom/android/server/pm/permission/PermissionManagerService;->shouldShowRequestPermissionRationale(Ljava/lang/String;Ljava/lang/String;I)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->startOneTimePermissionSession(Ljava/lang/String;IJII)V
+PLcom/android/server/pm/permission/PermissionManagerService;->stopOneTimePermissionSession(Ljava/lang/String;I)V
 HSPLcom/android/server/pm/permission/PermissionManagerService;->systemReady()V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updateAllPermissions(Ljava/lang/String;ZZLjava/util/Collection;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIIIZLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionTrees(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;I)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissions(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;I)I
-HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissions(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;Ljava/lang/String;ILjava/util/Collection;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
-PLcom/android/server/pm/permission/PermissionManagerService;->updatePermissions(Ljava/lang/String;Landroid/content/pm/PackageParser$Package;ZLjava/util/Collection;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updateAllPermissions(Ljava/lang/String;ZLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlags(Ljava/lang/String;Ljava/lang/String;IIZI)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionFlagsInternal(Ljava/lang/String;Ljava/lang/String;IIIIZLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionSourcePackage(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)Z
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissionTreeSourcePackage(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;)Z
+PLcom/android/server/pm/permission/PermissionManagerService;->updatePermissions(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerService;->updatePermissions(Ljava/lang/String;Landroid/content/pm/parsing/AndroidPackage;Ljava/lang/String;ILcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;)V
+HSPLcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;-><init>()V
+HSPLcom/android/server/pm/permission/PermissionManagerServiceInternal;-><init>()V
 HSPLcom/android/server/pm/permission/PermissionSettings;-><init>(Ljava/lang/Object;)V
 HSPLcom/android/server/pm/permission/PermissionSettings;->addAppOpPackage(Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/pm/permission/PermissionSettings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;ZLcom/android/server/pm/DumpState;)V
+HPLcom/android/server/pm/permission/PermissionSettings;->dumpPermissions(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArraySet;ZLcom/android/server/pm/DumpState;)V
 PLcom/android/server/pm/permission/PermissionSettings;->enforcePermissionTree(Ljava/lang/String;I)Lcom/android/server/pm/permission/BasePermission;
 HSPLcom/android/server/pm/permission/PermissionSettings;->getAllPermissionTreesLocked()Ljava/util/Collection;
 HSPLcom/android/server/pm/permission/PermissionSettings;->getAllPermissionsLocked()Ljava/util/Collection;
@@ -12127,7 +26730,7 @@
 HSPLcom/android/server/pm/permission/PermissionSettings;->getPermissionLocked(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
 HSPLcom/android/server/pm/permission/PermissionSettings;->getPermissionTreeLocked(Ljava/lang/String;)Lcom/android/server/pm/permission/BasePermission;
 HSPLcom/android/server/pm/permission/PermissionSettings;->isPermissionAppOp(Ljava/lang/String;)Z
-HSPLcom/android/server/pm/permission/PermissionSettings;->isPermissionInstant(Ljava/lang/String;)Z
+HPLcom/android/server/pm/permission/PermissionSettings;->isPermissionInstant(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/permission/PermissionSettings;->putPermissionLocked(Ljava/lang/String;Lcom/android/server/pm/permission/BasePermission;)V
 HSPLcom/android/server/pm/permission/PermissionSettings;->putPermissionTreeLocked(Ljava/lang/String;Lcom/android/server/pm/permission/BasePermission;)V
 HSPLcom/android/server/pm/permission/PermissionSettings;->readPermissionTrees(Lorg/xmlpull/v1/XmlPullParser;)V
@@ -12135,17 +26738,41 @@
 HSPLcom/android/server/pm/permission/PermissionSettings;->readPermissions(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/pm/permission/PermissionSettings;->writePermissionTrees(Lorg/xmlpull/v1/XmlSerializer;)V
 HSPLcom/android/server/pm/permission/PermissionSettings;->writePermissions(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/permission/BasePermission;)V
 HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;-><init>(Lcom/android/server/pm/permission/PermissionsState$PermissionData;)V
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->computeGids(I)[I
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->getFlags(I)I
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->getPermissionState(I)Lcom/android/server/pm/permission/PermissionsState$PermissionState;
 HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->grant(I)Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->isCompatibleUserId(I)Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->isDefault()Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->isGranted(I)Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->isInstallPermission()Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->isInstallPermissionKey(I)Z
 HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->revoke(I)Z
 HSPLcom/android/server/pm/permission/PermissionsState$PermissionData;->updateFlags(III)Z
-PLcom/android/server/pm/permission/PermissionsState;-><init>(Lcom/android/server/pm/permission/PermissionsState;)V
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;-><init>(Lcom/android/server/pm/permission/PermissionsState$PermissionState;)V
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->access$000(Lcom/android/server/pm/permission/PermissionsState$PermissionState;)Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->access$002(Lcom/android/server/pm/permission/PermissionsState$PermissionState;Z)Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->access$100(Lcom/android/server/pm/permission/PermissionsState$PermissionState;)I
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->access$102(Lcom/android/server/pm/permission/PermissionsState$PermissionState;I)I
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->getFlags()I
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->getName()Ljava/lang/String;
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->isDefault()Z
+HSPLcom/android/server/pm/permission/PermissionsState$PermissionState;->isGranted()Z
+HSPLcom/android/server/pm/permission/PermissionsState;-><clinit>()V
+HSPLcom/android/server/pm/permission/PermissionsState;-><init>()V
+HPLcom/android/server/pm/permission/PermissionsState;-><init>(Lcom/android/server/pm/permission/PermissionsState;)V
+HSPLcom/android/server/pm/permission/PermissionsState;->appendInts([I[I)[I
 HSPLcom/android/server/pm/permission/PermissionsState;->computeGids(I)[I
+HSPLcom/android/server/pm/permission/PermissionsState;->computeGids([I)[I
 HSPLcom/android/server/pm/permission/PermissionsState;->copyFrom(Lcom/android/server/pm/permission/PermissionsState;)V
 HSPLcom/android/server/pm/permission/PermissionsState;->enforceValidUserId(I)V
 HSPLcom/android/server/pm/permission/PermissionsState;->ensureNoPermissionData(Ljava/lang/String;)V
 HSPLcom/android/server/pm/permission/PermissionsState;->ensurePermissionData(Lcom/android/server/pm/permission/BasePermission;)Lcom/android/server/pm/permission/PermissionsState$PermissionData;
 HSPLcom/android/server/pm/permission/PermissionsState;->getInstallPermissionState(Ljava/lang/String;)Lcom/android/server/pm/permission/PermissionsState$PermissionState;
+HSPLcom/android/server/pm/permission/PermissionsState;->getInstallPermissionStates()Ljava/util/List;
 HSPLcom/android/server/pm/permission/PermissionsState;->getPermissionFlags(Ljava/lang/String;I)I
 HSPLcom/android/server/pm/permission/PermissionsState;->getPermissionState(Ljava/lang/String;I)Lcom/android/server/pm/permission/PermissionsState$PermissionState;
 HSPLcom/android/server/pm/permission/PermissionsState;->getPermissionStatesInternal(I)Ljava/util/List;
@@ -12157,143 +26784,375 @@
 HSPLcom/android/server/pm/permission/PermissionsState;->grantRuntimePermission(Lcom/android/server/pm/permission/BasePermission;I)I
 HSPLcom/android/server/pm/permission/PermissionsState;->hasInstallPermission(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/permission/PermissionsState;->hasPermission(Ljava/lang/String;I)Z
-HSPLcom/android/server/pm/permission/PermissionsState;->hasPermissionRequiringReview(I)Z
+PLcom/android/server/pm/permission/PermissionsState;->hasPermissionRequiringReview(I)Z
 HSPLcom/android/server/pm/permission/PermissionsState;->hasRequestedPermission(Landroid/util/ArraySet;)Z
+HSPLcom/android/server/pm/permission/PermissionsState;->hasRequestedPermission(Ljava/lang/String;)Z
 HSPLcom/android/server/pm/permission/PermissionsState;->hasRuntimePermission(Ljava/lang/String;I)Z
+PLcom/android/server/pm/permission/PermissionsState;->isPermissionReviewRequired(I)Z
 PLcom/android/server/pm/permission/PermissionsState;->reset()V
 HSPLcom/android/server/pm/permission/PermissionsState;->revokeInstallPermission(Lcom/android/server/pm/permission/BasePermission;)I
 HSPLcom/android/server/pm/permission/PermissionsState;->revokePermission(Lcom/android/server/pm/permission/BasePermission;I)I
+PLcom/android/server/pm/permission/PermissionsState;->revokeRuntimePermission(Lcom/android/server/pm/permission/BasePermission;I)I
 HSPLcom/android/server/pm/permission/PermissionsState;->setGlobalGids([I)V
 HSPLcom/android/server/pm/permission/PermissionsState;->updatePermissionFlags(Lcom/android/server/pm/permission/BasePermission;III)Z
-PLcom/android/server/policy/-$$Lambda$oXa0y3A-00RiQs6-KTPBgpkGtgw;->run()V
+PLcom/android/server/policy/-$$Lambda$LegacyGlobalActions$MdLN6qUJHty5FwMejjTE2cTYSvc;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/-$$Lambda$LegacyGlobalActions$MdLN6qUJHty5FwMejjTE2cTYSvc;->getAsBoolean()Z
+PLcom/android/server/policy/-$$Lambda$LegacyGlobalActions$wqp7aD3DxIVGmy_uGo-yxhtwmQk;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/-$$Lambda$LegacyGlobalActions$wqp7aD3DxIVGmy_uGo-yxhtwmQk;->getAsBoolean()Z
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$8D9Zbki65ND_Q20M-Trexl6cHcQ;-><init>(Ljava/util/concurrent/CountDownLatch;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$8D9Zbki65ND_Q20M-Trexl6cHcQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$EOXe1_laAw9FFgJquDg6Qy2DagQ;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$EOXe1_laAw9FFgJquDg6Qy2DagQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$RYery4oeHNcS8uZ6BgM2MtZIvKw;-><clinit>()V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$RYery4oeHNcS8uZ6BgM2MtZIvKw;-><init>()V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$RYery4oeHNcS8uZ6BgM2MtZIvKw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$V2gOjn4rTBH_rbxagOz-eOTvNfc;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+HSPLcom/android/server/policy/-$$Lambda$PermissionPolicyService$V2gOjn4rTBH_rbxagOz-eOTvNfc;->onRuntimePermissionStateChanged(Ljava/lang/String;I)V
+PLcom/android/server/policy/-$$Lambda$PermissionPolicyService$enZnky8NIhd5B9lAhmYeFn1Y6mk;-><init>(Lcom/android/internal/infra/AndroidFuture;I)V
+PLcom/android/server/policy/-$$Lambda$PermissionPolicyService$enZnky8NIhd5B9lAhmYeFn1Y6mk;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/policy/-$$Lambda$PhoneWindowManager$DisplayHomeButtonHandler$ljCIzo7y96OZCYYMVaAi6LAwRAE;-><init>(Lcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;)V
+HPLcom/android/server/policy/-$$Lambda$PhoneWindowManager$DisplayHomeButtonHandler$ljCIzo7y96OZCYYMVaAi6LAwRAE;->run()V
+PLcom/android/server/policy/-$$Lambda$j_3GF7S52oSV__e_mYWlY5TeyiM;-><init>(Lcom/android/server/policy/GlobalActions;)V
+PLcom/android/server/policy/-$$Lambda$j_3GF7S52oSV__e_mYWlY5TeyiM;->run()V
+HPLcom/android/server/policy/-$$Lambda$oXa0y3A-00RiQs6-KTPBgpkGtgw;-><init>(Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+HPLcom/android/server/policy/-$$Lambda$oXa0y3A-00RiQs6-KTPBgpkGtgw;->run()V
+HPLcom/android/server/policy/EventLogTags;->writeInterceptPower(Ljava/lang/String;II)V
+HSPLcom/android/server/policy/EventLogTags;->writeScreenToggled(I)V
+PLcom/android/server/policy/GlobalActions$1;-><init>(Lcom/android/server/policy/GlobalActions;)V
+PLcom/android/server/policy/GlobalActions$1;->run()V
 PLcom/android/server/policy/GlobalActions;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+PLcom/android/server/policy/GlobalActions;->access$000(Lcom/android/server/policy/GlobalActions;)V
+PLcom/android/server/policy/GlobalActions;->access$100(Lcom/android/server/policy/GlobalActions;)Z
+PLcom/android/server/policy/GlobalActions;->access$200(Lcom/android/server/policy/GlobalActions;)Z
+PLcom/android/server/policy/GlobalActions;->access$300(Lcom/android/server/policy/GlobalActions;)Lcom/android/server/policy/LegacyGlobalActions;
+PLcom/android/server/policy/GlobalActions;->ensureLegacyCreated()V
 PLcom/android/server/policy/GlobalActions;->onGlobalActionsAvailableChanged(Z)V
 PLcom/android/server/policy/GlobalActions;->onGlobalActionsDismissed()V
 PLcom/android/server/policy/GlobalActions;->onGlobalActionsShown()V
 PLcom/android/server/policy/GlobalActions;->showDialog(ZZ)V
-HSPLcom/android/server/policy/GlobalKeyManager;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z
+HSPLcom/android/server/policy/GlobalKeyManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/policy/GlobalKeyManager;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/policy/GlobalKeyManager;->handleGlobalKey(Landroid/content/Context;ILandroid/view/KeyEvent;)Z
 HSPLcom/android/server/policy/GlobalKeyManager;->loadGlobalKeys(Landroid/content/Context;)V
+HPLcom/android/server/policy/GlobalKeyManager;->shouldHandleGlobalKey(ILandroid/view/KeyEvent;)Z
 HSPLcom/android/server/policy/IconUtilities;-><init>(Landroid/content/Context;)V
 PLcom/android/server/policy/IconUtilities;->createIconBitmap(Landroid/graphics/drawable/Drawable;)Landroid/graphics/Bitmap;
 PLcom/android/server/policy/IconUtilities;->getDisabledColorFilter()Landroid/graphics/ColorFilter;
-PLcom/android/server/policy/LogDecelerateInterpolator;->getInterpolation(F)F
+PLcom/android/server/policy/LegacyGlobalActions$10;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions$10;->onServiceStateChanged(Landroid/telephony/ServiceState;)V
+PLcom/android/server/policy/LegacyGlobalActions$11;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/policy/LegacyGlobalActions$12;-><init>(Lcom/android/server/policy/LegacyGlobalActions;Landroid/os/Handler;)V
+PLcom/android/server/policy/LegacyGlobalActions$13;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+HPLcom/android/server/policy/LegacyGlobalActions$13;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/policy/LegacyGlobalActions$1;-><init>(Lcom/android/server/policy/LegacyGlobalActions;IIIII)V
+PLcom/android/server/policy/LegacyGlobalActions$2;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions$7;-><init>(Lcom/android/server/policy/LegacyGlobalActions;II)V
+PLcom/android/server/policy/LegacyGlobalActions$7;->showDuringKeyguard()Z
+PLcom/android/server/policy/LegacyGlobalActions$9;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+HPLcom/android/server/policy/LegacyGlobalActions$9;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction$1;-><init>(Lcom/android/server/policy/LegacyGlobalActions$BugReportAction;)V
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction$1;->run()V
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction;-><init>(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction;->getStatus()Ljava/lang/String;
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction;->onPress()V
+PLcom/android/server/policy/LegacyGlobalActions$BugReportAction;->showDuringKeyguard()Z
+PLcom/android/server/policy/LegacyGlobalActions$SilentModeTriStateAction;-><init>(Landroid/content/Context;Landroid/media/AudioManager;Landroid/os/Handler;)V
+PLcom/android/server/policy/LegacyGlobalActions;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;Ljava/lang/Runnable;)V
+PLcom/android/server/policy/LegacyGlobalActions;->access$000(Lcom/android/server/policy/LegacyGlobalActions;)Z
+PLcom/android/server/policy/LegacyGlobalActions;->access$1100(Lcom/android/server/policy/LegacyGlobalActions;)Lcom/android/internal/globalactions/ActionsDialog;
+PLcom/android/server/policy/LegacyGlobalActions;->access$1102(Lcom/android/server/policy/LegacyGlobalActions;Lcom/android/internal/globalactions/ActionsDialog;)Lcom/android/internal/globalactions/ActionsDialog;
+PLcom/android/server/policy/LegacyGlobalActions;->access$1200(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions;->access$1300(Lcom/android/server/policy/LegacyGlobalActions;)V
+PLcom/android/server/policy/LegacyGlobalActions;->access$200(Lcom/android/server/policy/LegacyGlobalActions;)Landroid/content/Context;
+PLcom/android/server/policy/LegacyGlobalActions;->access$400(Lcom/android/server/policy/LegacyGlobalActions;)Lcom/android/internal/globalactions/ToggleAction$State;
+PLcom/android/server/policy/LegacyGlobalActions;->access$402(Lcom/android/server/policy/LegacyGlobalActions;Lcom/android/internal/globalactions/ToggleAction$State;)Lcom/android/internal/globalactions/ToggleAction$State;
+PLcom/android/server/policy/LegacyGlobalActions;->access$500(Lcom/android/server/policy/LegacyGlobalActions;)Lcom/android/internal/globalactions/ActionsAdapter;
+PLcom/android/server/policy/LegacyGlobalActions;->access$600(Lcom/android/server/policy/LegacyGlobalActions;)Landroid/os/Handler;
+PLcom/android/server/policy/LegacyGlobalActions;->access$900(Lcom/android/server/policy/LegacyGlobalActions;)Lcom/android/internal/globalactions/ToggleAction;
+PLcom/android/server/policy/LegacyGlobalActions;->awakenIfNecessary()V
+PLcom/android/server/policy/LegacyGlobalActions;->createDialog()Lcom/android/internal/globalactions/ActionsDialog;
+PLcom/android/server/policy/LegacyGlobalActions;->getCurrentUser()Landroid/content/pm/UserInfo;
+PLcom/android/server/policy/LegacyGlobalActions;->getLockdownAction()Lcom/android/internal/globalactions/Action;
+PLcom/android/server/policy/LegacyGlobalActions;->handleShow()V
+PLcom/android/server/policy/LegacyGlobalActions;->isCurrentUserOwner()Z
+PLcom/android/server/policy/LegacyGlobalActions;->lambda$createDialog$0$LegacyGlobalActions()Z
+PLcom/android/server/policy/LegacyGlobalActions;->lambda$createDialog$1$LegacyGlobalActions()Z
+PLcom/android/server/policy/LegacyGlobalActions;->onAirplaneModeChanged()V
+PLcom/android/server/policy/LegacyGlobalActions;->onClick(Landroid/content/DialogInterface;I)V
+PLcom/android/server/policy/LegacyGlobalActions;->onDismiss(Landroid/content/DialogInterface;)V
+PLcom/android/server/policy/LegacyGlobalActions;->prepareDialog()V
+PLcom/android/server/policy/LegacyGlobalActions;->refreshSilentMode()V
+PLcom/android/server/policy/LegacyGlobalActions;->showDialog(ZZ)V
+HSPLcom/android/server/policy/LogDecelerateInterpolator;-><init>(II)V
+HSPLcom/android/server/policy/LogDecelerateInterpolator;->computeLog(FII)F
+HPLcom/android/server/policy/LogDecelerateInterpolator;->getInterpolation(F)F
+HSPLcom/android/server/policy/PermissionPolicyInternal;-><init>()V
+HSPLcom/android/server/policy/PermissionPolicyService$1;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+PLcom/android/server/policy/PermissionPolicyService$1;->onPackageAdded(Ljava/lang/String;I)V
+PLcom/android/server/policy/PermissionPolicyService$1;->onPackageChanged(Ljava/lang/String;I)V
+PLcom/android/server/policy/PermissionPolicyService$1;->onPackageRemoved(Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService$2;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+HSPLcom/android/server/policy/PermissionPolicyService$2;->opChanged(IILjava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;)V
+HSPLcom/android/server/policy/PermissionPolicyService$Internal;-><init>(Lcom/android/server/policy/PermissionPolicyService;Lcom/android/server/policy/PermissionPolicyService$1;)V
+HSPLcom/android/server/policy/PermissionPolicyService$Internal;->checkStartActivity(Landroid/content/Intent;ILjava/lang/String;)Z
+HPLcom/android/server/policy/PermissionPolicyService$Internal;->isActionRemovedForCallingPackage(Landroid/content/Intent;ILjava/lang/String;)Z
+HSPLcom/android/server/policy/PermissionPolicyService$Internal;->isInitialized(I)Z
+HSPLcom/android/server/policy/PermissionPolicyService$Internal;->setOnInitializedCallback(Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser$OpToChange;-><init>(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;ILjava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;-><init>(Lcom/android/server/policy/PermissionPolicyService;Landroid/content/Context;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->access$400(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addAppOps(Landroid/content/pm/PackageInfo;Ljava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addExtraAppOp(Landroid/content/pm/PackageInfo;Landroid/content/pm/PermissionInfo;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPackage(Ljava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->addPermissionAppOp(Landroid/content/pm/PackageInfo;Landroid/content/pm/PermissionInfo;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidMode(IIILjava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeAllowed(IILjava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeForeground(IILjava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeIgnored(IILjava/lang/String;)V
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->setUidModeIgnoredIfNotAllowed(IILjava/lang/String;)Z
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->shouldGrantAppOp(Landroid/content/pm/PackageInfo;Landroid/content/pm/PermissionInfo;)Z
+HSPLcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;->syncPackages()V
+HSPLcom/android/server/policy/PermissionPolicyService;-><clinit>()V
+HSPLcom/android/server/policy/PermissionPolicyService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/policy/PermissionPolicyService;->access$100(Lcom/android/server/policy/PermissionPolicyService;I)Z
+PLcom/android/server/policy/PermissionPolicyService;->access$200(Lcom/android/server/policy/PermissionPolicyService;Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->access$300(Lcom/android/server/policy/PermissionPolicyService;Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->access$500(Ljava/lang/String;)I
+PLcom/android/server/policy/PermissionPolicyService;->access$600(Lcom/android/server/policy/PermissionPolicyService;)Lcom/android/internal/app/IAppOpsCallback;
+HSPLcom/android/server/policy/PermissionPolicyService;->access$700(Lcom/android/server/policy/PermissionPolicyService;)Ljava/lang/Object;
+PLcom/android/server/policy/PermissionPolicyService;->access$800(Lcom/android/server/policy/PermissionPolicyService;)Ljava/lang/Object;
+HSPLcom/android/server/policy/PermissionPolicyService;->access$802(Lcom/android/server/policy/PermissionPolicyService;Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;)Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;
+PLcom/android/server/policy/PermissionPolicyService;->access$902(Lcom/android/server/policy/PermissionPolicyService;Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;)Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;
+HSPLcom/android/server/policy/PermissionPolicyService;->getSwitchOp(Ljava/lang/String;)I
+HSPLcom/android/server/policy/PermissionPolicyService;->getUserContext(Landroid/content/Context;Landroid/os/UserHandle;)Landroid/content/Context;
+HSPLcom/android/server/policy/PermissionPolicyService;->grantOrUpgradeDefaultRuntimePermissionsIfNeeded(I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->isStarted(I)Z
+HSPLcom/android/server/policy/PermissionPolicyService;->lambda$RYery4oeHNcS8uZ6BgM2MtZIvKw(Lcom/android/server/policy/PermissionPolicyService;Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->lambda$V2gOjn4rTBH_rbxagOz-eOTvNfc(Lcom/android/server/policy/PermissionPolicyService;Ljava/lang/String;I)V
+PLcom/android/server/policy/PermissionPolicyService;->lambda$grantOrUpgradeDefaultRuntimePermissionsIfNeeded$0(Lcom/android/internal/infra/AndroidFuture;ILjava/lang/Boolean;)V
+HSPLcom/android/server/policy/PermissionPolicyService;->lambda$grantOrUpgradeDefaultRuntimePermissionsIfNeeded$0(Ljava/util/concurrent/CountDownLatch;Ljava/lang/Boolean;)V
+HSPLcom/android/server/policy/PermissionPolicyService;->lambda$synchronizePermissionsAndAppOpsForUser$1(Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;Landroid/content/pm/parsing/AndroidPackage;)V
+HSPLcom/android/server/policy/PermissionPolicyService;->onBootPhase(I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->onStart()V
+HSPLcom/android/server/policy/PermissionPolicyService;->onStartUser(I)V
+PLcom/android/server/policy/PermissionPolicyService;->onStopUser(I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->synchronizePackagePermissionsAndAppOpsAsyncForUser(Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->synchronizePackagePermissionsAndAppOpsForUser(Ljava/lang/String;I)V
+HSPLcom/android/server/policy/PermissionPolicyService;->synchronizePermissionsAndAppOpsForUser(I)V
+HSPLcom/android/server/policy/PhoneWindowManager$10;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
 PLcom/android/server/policy/PhoneWindowManager$10;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/policy/PhoneWindowManager$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/policy/PhoneWindowManager$11;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager$11;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/policy/PhoneWindowManager$12;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
 HSPLcom/android/server/policy/PhoneWindowManager$12;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/policy/PhoneWindowManager$13;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
 HSPLcom/android/server/policy/PhoneWindowManager$13;->run()V
-HSPLcom/android/server/policy/PhoneWindowManager$1;->run()V
-HSPLcom/android/server/policy/PhoneWindowManager$2;->onDrawn()V
-HSPLcom/android/server/policy/PhoneWindowManager$7;->onAppTransitionCancelledLocked(I)V
+HSPLcom/android/server/policy/PhoneWindowManager$1;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager$1;->run()V
+HSPLcom/android/server/policy/PhoneWindowManager$2;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager$2;->onDrawn()V
+HSPLcom/android/server/policy/PhoneWindowManager$3;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HSPLcom/android/server/policy/PhoneWindowManager$4;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HSPLcom/android/server/policy/PhoneWindowManager$5;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$5;->run()V
+HSPLcom/android/server/policy/PhoneWindowManager$6;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HSPLcom/android/server/policy/PhoneWindowManager$7;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$7;->onAppTransitionCancelledLocked(I)V
 HSPLcom/android/server/policy/PhoneWindowManager$7;->onAppTransitionStartingLocked(IJJJ)I
-HSPLcom/android/server/policy/PhoneWindowManager$8;->onShowingChanged()V
-HSPLcom/android/server/policy/PhoneWindowManager$8;->onTrustedChanged()V
+HSPLcom/android/server/policy/PhoneWindowManager$8;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager$8;->onShowingChanged()V
+PLcom/android/server/policy/PhoneWindowManager$8;->onTrustedChanged()V
+PLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler$1;-><init>(Lcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;)V
 PLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;I)V
-PLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;->handleHomeButton(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;)I
+HPLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;->handleHomeButton(Landroid/os/IBinder;Landroid/view/KeyEvent;)I
+PLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;->lambda$handleHomeButton$0$PhoneWindowManager$DisplayHomeButtonHandler()V
 PLcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;->toString()Ljava/lang/String;
-HSPLcom/android/server/policy/PhoneWindowManager$HdmiVideoExtconUEventObserver;->init()Z
-HSPLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/content/Context;Landroid/os/Handler;)V
+HSPLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HSPLcom/android/server/policy/PhoneWindowManager$PolicyHandler;-><init>(Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager$1;)V
+HPLcom/android/server/policy/PhoneWindowManager$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager$ScreenLockTimeout;->run()V
+HSPLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;-><init>(Lcom/android/server/policy/PhoneWindowManager;)V
+HSPLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;-><init>(Lcom/android/server/policy/PhoneWindowManager;Lcom/android/server/policy/PhoneWindowManager$1;)V
 PLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;->run()V
 PLcom/android/server/policy/PhoneWindowManager$ScreenshotRunnable;->setScreenshotType(I)V
+HSPLcom/android/server/policy/PhoneWindowManager$SettingsObserver;-><init>(Lcom/android/server/policy/PhoneWindowManager;Landroid/os/Handler;)V
 HSPLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->observe()V
 HSPLcom/android/server/policy/PhoneWindowManager$SettingsObserver;->onChange(Z)V
+HSPLcom/android/server/policy/PhoneWindowManager;-><clinit>()V
 HSPLcom/android/server/policy/PhoneWindowManager;-><init>()V
-PLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
-PLcom/android/server/policy/PhoneWindowManager;->addSplashscreenContent(Lcom/android/internal/policy/PhoneWindow;Landroid/content/Context;)V
+PLcom/android/server/policy/PhoneWindowManager;->access$000(Lcom/android/server/policy/PhoneWindowManager;Z)V
+PLcom/android/server/policy/PhoneWindowManager;->access$100(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->access$1200(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->access$1500(Lcom/android/server/policy/PhoneWindowManager;I)V
+PLcom/android/server/policy/PhoneWindowManager;->access$1700(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->access$200(Lcom/android/server/policy/PhoneWindowManager;)V
+HPLcom/android/server/policy/PhoneWindowManager;->access$2700(Lcom/android/server/policy/PhoneWindowManager;I)V
+PLcom/android/server/policy/PhoneWindowManager;->access$2800(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->access$2900(Lcom/android/server/policy/PhoneWindowManager;)I
+PLcom/android/server/policy/PhoneWindowManager;->access$3000()[I
+HSPLcom/android/server/policy/PhoneWindowManager;->access$3500(Lcom/android/server/policy/PhoneWindowManager;IJ)I
+PLcom/android/server/policy/PhoneWindowManager;->access$3600(Lcom/android/server/policy/PhoneWindowManager;IJ)I
+PLcom/android/server/policy/PhoneWindowManager;->access$800(Lcom/android/server/policy/PhoneWindowManager;)V
+PLcom/android/server/policy/PhoneWindowManager;->accessibilityShortcutActivated()V
+HPLcom/android/server/policy/PhoneWindowManager;->addSplashScreen(Landroid/os/IBinder;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;I)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
+HPLcom/android/server/policy/PhoneWindowManager;->addSplashscreenContent(Lcom/android/internal/policy/PhoneWindow;Landroid/content/Context;)V
 HSPLcom/android/server/policy/PhoneWindowManager;->adjustConfigurationLw(Landroid/content/res/Configuration;II)V
 HSPLcom/android/server/policy/PhoneWindowManager;->applyKeyguardPolicyLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
-HSPLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V
+PLcom/android/server/policy/PhoneWindowManager;->applyLidSwitchState()V
 PLcom/android/server/policy/PhoneWindowManager;->awakenDreams()V
 HSPLcom/android/server/policy/PhoneWindowManager;->bindKeyguard()V
 HSPLcom/android/server/policy/PhoneWindowManager;->canBeHiddenByKeyguardLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)Z
 HSPLcom/android/server/policy/PhoneWindowManager;->canDismissBootAnimation()Z
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPendingAccessibilityShortcutAction()V
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPendingBackKeyAction()V
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPendingPowerKeyAction()V
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPendingRingerToggleChordAction()V
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPendingScreenshotChordAction()V
+HPLcom/android/server/policy/PhoneWindowManager;->cancelPossibleVeryLongPressReboot()V
+PLcom/android/server/policy/PhoneWindowManager;->cancelPreloadRecentApps()V
 HSPLcom/android/server/policy/PhoneWindowManager;->checkAddPermission(Landroid/view/WindowManager$LayoutParams;[I)I
-HSPLcom/android/server/policy/PhoneWindowManager;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z
-PLcom/android/server/policy/PhoneWindowManager;->createHiddenByKeyguardExit(ZZ)Landroid/view/animation/Animation;
+PLcom/android/server/policy/PhoneWindowManager;->checkShowToOwnerOnly(Landroid/view/WindowManager$LayoutParams;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->createHiddenByKeyguardExit(ZZZ)Landroid/view/animation/Animation;
 PLcom/android/server/policy/PhoneWindowManager;->createHomeDockIntent()Landroid/content/Intent;
 PLcom/android/server/policy/PhoneWindowManager;->createKeyguardWallpaperExit(Z)Landroid/view/animation/Animation;
 PLcom/android/server/policy/PhoneWindowManager;->dismissKeyguardLw(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
-PLcom/android/server/policy/PhoneWindowManager;->dispatchUnhandledKey(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
-HSPLcom/android/server/policy/PhoneWindowManager;->dump(Ljava/lang/String;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/policy/PhoneWindowManager;->dispatchMediaKeyRepeatWithWakeLock(Landroid/view/KeyEvent;)V
+PLcom/android/server/policy/PhoneWindowManager;->dispatchMediaKeyWithWakeLock(Landroid/view/KeyEvent;)V
+PLcom/android/server/policy/PhoneWindowManager;->dispatchMediaKeyWithWakeLockToAudioService(Landroid/view/KeyEvent;)V
+PLcom/android/server/policy/PhoneWindowManager;->dispatchUnhandledKey(Landroid/os/IBinder;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
+PLcom/android/server/policy/PhoneWindowManager;->doubleTapOnHomeBehaviorToString(I)Ljava/lang/String;
+HPLcom/android/server/policy/PhoneWindowManager;->dump(Ljava/lang/String;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/policy/PhoneWindowManager;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/policy/PhoneWindowManager;->enableKeyguard(Z)V
-HSPLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V
-HSPLcom/android/server/policy/PhoneWindowManager;->endcallBehaviorToString(I)Ljava/lang/String;
-HSPLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V
-HSPLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V
-PLcom/android/server/policy/PhoneWindowManager;->finishedGoingToSleep(I)V
-PLcom/android/server/policy/PhoneWindowManager;->finishedWakingUp(I)V
+PLcom/android/server/policy/PhoneWindowManager;->enableScreenAfterBoot()V
+PLcom/android/server/policy/PhoneWindowManager;->endcallBehaviorToString(I)Ljava/lang/String;
+HPLcom/android/server/policy/PhoneWindowManager;->finishKeyguardDrawn()V
+HPLcom/android/server/policy/PhoneWindowManager;->finishPowerKeyPress()V
+HPLcom/android/server/policy/PhoneWindowManager;->finishScreenTurningOn()V
+PLcom/android/server/policy/PhoneWindowManager;->finishWindowsDrawn()V
+HPLcom/android/server/policy/PhoneWindowManager;->finishedGoingToSleep(I)V
+HSPLcom/android/server/policy/PhoneWindowManager;->finishedWakingUp(I)V
+PLcom/android/server/policy/PhoneWindowManager;->getAccessibilityShortcutTimeout()J
+PLcom/android/server/policy/PhoneWindowManager;->getAudioManagerInternal()Landroid/media/AudioManagerInternal;
+HPLcom/android/server/policy/PhoneWindowManager;->getAudioService()Landroid/media/IAudioService;
 PLcom/android/server/policy/PhoneWindowManager;->getDisplayContext(Landroid/content/Context;I)Landroid/content/Context;
+HPLcom/android/server/policy/PhoneWindowManager;->getDreamManager()Landroid/service/dreams/IDreamManager;
 PLcom/android/server/policy/PhoneWindowManager;->getHdmiControl()Lcom/android/server/policy/PhoneWindowManager$HdmiControl;
+HSPLcom/android/server/policy/PhoneWindowManager;->getKeyguardDrawnTimeout()J
+HSPLcom/android/server/policy/PhoneWindowManager;->getLidBehavior()I
+HSPLcom/android/server/policy/PhoneWindowManager;->getLongIntArray(Landroid/content/res/Resources;I)[J
+PLcom/android/server/policy/PhoneWindowManager;->getMaxMultiPressPowerCount()I
+HPLcom/android/server/policy/PhoneWindowManager;->getNotificationService()Landroid/app/NotificationManager;
+PLcom/android/server/policy/PhoneWindowManager;->getResolvedLongPressOnPowerBehavior()I
+PLcom/android/server/policy/PhoneWindowManager;->getRingerToggleChordDelay()J
 PLcom/android/server/policy/PhoneWindowManager;->getScreenshotChordLongPressDelay()J
+PLcom/android/server/policy/PhoneWindowManager;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
 PLcom/android/server/policy/PhoneWindowManager;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
-PLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager;
+HPLcom/android/server/policy/PhoneWindowManager;->getTelecommService()Landroid/telecom/TelecomManager;
 HSPLcom/android/server/policy/PhoneWindowManager;->getUiMode()I
-PLcom/android/server/policy/PhoneWindowManager;->getVibrationEffect(I)Landroid/os/VibrationEffect;
-HSPLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z
+HPLcom/android/server/policy/PhoneWindowManager;->getVibrationEffect(I)Landroid/os/VibrationEffect;
+PLcom/android/server/policy/PhoneWindowManager;->goToSleep(JII)V
+HPLcom/android/server/policy/PhoneWindowManager;->goToSleepFromPowerButton(JI)Z
+PLcom/android/server/policy/PhoneWindowManager;->handleRingerChordGesture()V
+HPLcom/android/server/policy/PhoneWindowManager;->handleShortPressOnHome(I)V
+HSPLcom/android/server/policy/PhoneWindowManager;->handleStartTransitionForKeyguardLw(IJ)I
+PLcom/android/server/policy/PhoneWindowManager;->hasLongPressOnBackBehavior()Z
+PLcom/android/server/policy/PhoneWindowManager;->hasLongPressOnPowerBehavior()Z
+HPLcom/android/server/policy/PhoneWindowManager;->hasVeryLongPressOnPowerBehavior()Z
+HPLcom/android/server/policy/PhoneWindowManager;->inKeyguardRestrictedKeyInputMode()Z
+PLcom/android/server/policy/PhoneWindowManager;->incallBackBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->incallPowerBehaviorToString(I)Ljava/lang/String;
 HSPLcom/android/server/policy/PhoneWindowManager;->init(Landroid/content/Context;Landroid/view/IWindowManager;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
 HSPLcom/android/server/policy/PhoneWindowManager;->initializeHdmiState()V
 HSPLcom/android/server/policy/PhoneWindowManager;->initializeHdmiStateInternal()V
-PLcom/android/server/policy/PhoneWindowManager;->interceptAccessibilityShortcutChord()V
-PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyDown()V
-PLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyUp(Landroid/view/KeyEvent;)Z
-PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
-PLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatchingInner(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/policy/PhoneWindowManager;->interceptAccessibilityShortcutChord()V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyDown()V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptBackKeyUp(Landroid/view/KeyEvent;)Z
+PLcom/android/server/policy/PhoneWindowManager;->interceptFallback(Landroid/os/IBinder;Landroid/view/KeyEvent;I)Z
+HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
+HPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeDispatchingInner(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
 HSPLcom/android/server/policy/PhoneWindowManager;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
-PLcom/android/server/policy/PhoneWindowManager;->interceptMotionBeforeQueueingNonInteractive(IJI)I
-PLcom/android/server/policy/PhoneWindowManager;->interceptPowerKeyDown(Landroid/view/KeyEvent;Z)V
-PLcom/android/server/policy/PhoneWindowManager;->interceptPowerKeyUp(Landroid/view/KeyEvent;ZZ)V
-PLcom/android/server/policy/PhoneWindowManager;->interceptRingerToggleChord()V
-PLcom/android/server/policy/PhoneWindowManager;->interceptScreenshotChord()V
-HSPLcom/android/server/policy/PhoneWindowManager;->interceptSystemNavigationKey(Landroid/view/KeyEvent;)V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptMotionBeforeQueueingNonInteractive(IJI)I
+HPLcom/android/server/policy/PhoneWindowManager;->interceptPowerKeyDown(Landroid/view/KeyEvent;Z)V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptPowerKeyUp(Landroid/view/KeyEvent;ZZ)V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptRingerToggleChord()V
+HPLcom/android/server/policy/PhoneWindowManager;->interceptScreenshotChord()V
+PLcom/android/server/policy/PhoneWindowManager;->interceptSystemNavigationKey(Landroid/view/KeyEvent;)V
 PLcom/android/server/policy/PhoneWindowManager;->isDeviceProvisioned()Z
-HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardDrawnLw()Z
-HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z
+PLcom/android/server/policy/PhoneWindowManager;->isKeyguardDrawnLw()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isKeyguardHostWindow(Landroid/view/WindowManager$LayoutParams;)Z
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardLocked()Z
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardOccluded()Z
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardSecure(I)Z
+HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowing()Z
 HSPLcom/android/server/policy/PhoneWindowManager;->isKeyguardShowingAndNotOccluded()Z
 PLcom/android/server/policy/PhoneWindowManager;->isKeyguardTrustedLw()Z
 HSPLcom/android/server/policy/PhoneWindowManager;->isScreenOn()Z
-PLcom/android/server/policy/PhoneWindowManager;->isTheaterModeEnabled()Z
-HSPLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isTheaterModeEnabled()Z
+HPLcom/android/server/policy/PhoneWindowManager;->isUserSetupComplete()Z
 PLcom/android/server/policy/PhoneWindowManager;->isValidGlobalKey(I)Z
+PLcom/android/server/policy/PhoneWindowManager;->isWakeKeyWhenScreenOff(I)Z
 PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStartedLw()V
 PLcom/android/server/policy/PhoneWindowManager;->keepScreenOnStoppedLw()V
 HSPLcom/android/server/policy/PhoneWindowManager;->keyguardOn()Z
 PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(I)V
-PLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(IZZ)V
-HSPLcom/android/server/policy/PhoneWindowManager;->okToAnimate()Z
+HPLcom/android/server/policy/PhoneWindowManager;->launchHomeFromHotKey(IZZ)V
+PLcom/android/server/policy/PhoneWindowManager;->lidBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->lockNow(Landroid/os/Bundle;)V
+PLcom/android/server/policy/PhoneWindowManager;->longPressOnBackBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->longPressOnHomeBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->longPressOnPowerBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->multiPressOnPowerBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->notifyLidSwitchChanged(JZ)V
+HPLcom/android/server/policy/PhoneWindowManager;->okToAnimate()Z
 HSPLcom/android/server/policy/PhoneWindowManager;->onDefaultDisplayFocusChangedLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
 PLcom/android/server/policy/PhoneWindowManager;->onKeyguardOccludedChangedLw(Z)V
 HSPLcom/android/server/policy/PhoneWindowManager;->onSystemUiStarted()V
-PLcom/android/server/policy/PhoneWindowManager;->performHapticFeedback(ILjava/lang/String;IZLjava/lang/String;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->performHapticFeedback(ILjava/lang/String;IZLjava/lang/String;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->performHapticFeedback(IZLjava/lang/String;)Z
 PLcom/android/server/policy/PhoneWindowManager;->powerLongPress()V
-PLcom/android/server/policy/PhoneWindowManager;->powerPress(JZI)V
+HPLcom/android/server/policy/PhoneWindowManager;->powerPress(JZI)V
+HSPLcom/android/server/policy/PhoneWindowManager;->readCameraLensCoverState()V
 HSPLcom/android/server/policy/PhoneWindowManager;->readConfigurationDependentBehaviors()V
 HSPLcom/android/server/policy/PhoneWindowManager;->readLidState()V
-HSPLcom/android/server/policy/PhoneWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
-PLcom/android/server/policy/PhoneWindowManager;->screenTurnedOff()V
+PLcom/android/server/policy/PhoneWindowManager;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
+HSPLcom/android/server/policy/PhoneWindowManager;->reportScreenStateToVrManager(Z)V
+HPLcom/android/server/policy/PhoneWindowManager;->schedulePossibleVeryLongPressReboot()V
+HPLcom/android/server/policy/PhoneWindowManager;->screenTurnedOff()V
 HSPLcom/android/server/policy/PhoneWindowManager;->screenTurnedOn()V
-PLcom/android/server/policy/PhoneWindowManager;->screenTurningOff(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
+HPLcom/android/server/policy/PhoneWindowManager;->screenTurningOff(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
 HSPLcom/android/server/policy/PhoneWindowManager;->screenTurningOn(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
-PLcom/android/server/policy/PhoneWindowManager;->sendCloseSystemWindows(Ljava/lang/String;)V
-PLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBar(I)V
+HPLcom/android/server/policy/PhoneWindowManager;->sendCloseSystemWindows(Ljava/lang/String;)V
+HPLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBar(I)V
+HPLcom/android/server/policy/PhoneWindowManager;->sendSystemKeyToStatusBarAsync(I)V
 HSPLcom/android/server/policy/PhoneWindowManager;->setAllowLockscreenWhenOn(IZ)V
-HSPLcom/android/server/policy/PhoneWindowManager;->setAodShowing(Z)Z
+PLcom/android/server/policy/PhoneWindowManager;->setAodShowing(Z)Z
 HSPLcom/android/server/policy/PhoneWindowManager;->setDefaultDisplay(Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;)V
-PLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V
-HSPLcom/android/server/policy/PhoneWindowManager;->setKeyguardCandidateLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
-HSPLcom/android/server/policy/PhoneWindowManager;->setKeyguardOccludedLw(ZZ)Z
-HSPLcom/android/server/policy/PhoneWindowManager;->setNavBarVirtualKeyHapticFeedbackEnabledLw(Z)V
+HPLcom/android/server/policy/PhoneWindowManager;->setDismissImeOnBackKeyPressed(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->setKeyguardCandidateLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)V
+PLcom/android/server/policy/PhoneWindowManager;->setKeyguardOccludedLw(ZZ)Z
+PLcom/android/server/policy/PhoneWindowManager;->setNavBarVirtualKeyHapticFeedbackEnabledLw(Z)V
 PLcom/android/server/policy/PhoneWindowManager;->setPipVisibilityLw(Z)V
 HSPLcom/android/server/policy/PhoneWindowManager;->setSafeMode(Z)V
 HSPLcom/android/server/policy/PhoneWindowManager;->setTopFocusedDisplay(I)V
-HSPLcom/android/server/policy/PhoneWindowManager;->shortPressOnPowerBehaviorToString(I)Ljava/lang/String;
-HSPLcom/android/server/policy/PhoneWindowManager;->shouldBeHiddenByKeyguard(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/policy/WindowManagerPolicy$WindowState;)Z
-PLcom/android/server/policy/PhoneWindowManager;->shouldDispatchInputWhenNonInteractive(II)Z
+PLcom/android/server/policy/PhoneWindowManager;->shortPressOnPowerBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->shortPressOnSleepBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->shortPressOnWindowBehaviorToString(I)Ljava/lang/String;
+HPLcom/android/server/policy/PhoneWindowManager;->shouldBeHiddenByKeyguard(Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/policy/WindowManagerPolicy$WindowState;)Z
+HPLcom/android/server/policy/PhoneWindowManager;->shouldDispatchInputWhenNonInteractive(II)Z
 HSPLcom/android/server/policy/PhoneWindowManager;->shouldEnableWakeGestureLp()Z
 PLcom/android/server/policy/PhoneWindowManager;->showGlobalActionsInternal()V
-PLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(IZZ)V
+PLcom/android/server/policy/PhoneWindowManager;->showRecentApps()V
+PLcom/android/server/policy/PhoneWindowManager;->showRecentApps(Z)V
+PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/Bundle;Landroid/os/UserHandle;)V
+PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/Bundle;Landroid/os/UserHandle;Z)V
+PLcom/android/server/policy/PhoneWindowManager;->startActivityAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
+HPLcom/android/server/policy/PhoneWindowManager;->startDockOrHome(IZZ)V
 PLcom/android/server/policy/PhoneWindowManager;->startKeyguardExitAnimation(JJ)V
 PLcom/android/server/policy/PhoneWindowManager;->startedGoingToSleep(I)V
 HSPLcom/android/server/policy/PhoneWindowManager;->startedWakingUp(I)V
@@ -12301,52 +27160,112 @@
 HSPLcom/android/server/policy/PhoneWindowManager;->systemReady()V
 HSPLcom/android/server/policy/PhoneWindowManager;->updateLockScreenTimeout()V
 HSPLcom/android/server/policy/PhoneWindowManager;->updateRotation(Z)V
+HSPLcom/android/server/policy/PhoneWindowManager;->updateScreenOffSleepToken(Z)V
 HSPLcom/android/server/policy/PhoneWindowManager;->updateSettings()V
 HSPLcom/android/server/policy/PhoneWindowManager;->updateUiMode()V
+HSPLcom/android/server/policy/PhoneWindowManager;->updateWakeGestureListenerLp()V
 HSPLcom/android/server/policy/PhoneWindowManager;->userActivity()V
-PLcom/android/server/policy/PhoneWindowManager;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/policy/PhoneWindowManager;->veryLongPressOnPowerBehaviorToString(I)Ljava/lang/String;
+PLcom/android/server/policy/PhoneWindowManager;->wakeUp(JZILjava/lang/String;)Z
+PLcom/android/server/policy/PhoneWindowManager;->wakeUpFromPowerKey(J)V
+PLcom/android/server/policy/PowerAction;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+PLcom/android/server/policy/PowerAction;->showDuringKeyguard()Z
+PLcom/android/server/policy/RestartAction;-><init>(Landroid/content/Context;Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;)V
+PLcom/android/server/policy/RestartAction;->onPress()V
+PLcom/android/server/policy/RestartAction;->showDuringKeyguard()Z
+HSPLcom/android/server/policy/ShortcutManager$ShortcutInfo;-><init>(Ljava/lang/String;Landroid/content/Intent;)V
+HSPLcom/android/server/policy/ShortcutManager;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/policy/ShortcutManager;->loadShortcuts()V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$1;-><init>()V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;-><init>(ZIZZ)V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;-><init>(ZIZZZ)V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->getExtraAppOpCode()I
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayAllowExtraAppOp()Z
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayDenyExtraAppOpIfGranted()Z
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$2;->mayGrantPermission()Z
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;-><init>(ZI)V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy$3;->mayGrantPermission()Z
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><clinit>()V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;-><init>()V
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->forPermission(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/os/UserHandle;Ljava/lang/String;)Lcom/android/server/policy/SoftRestrictedPermissionPolicy;
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getExtraAppOpCode()I
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->getMinimumTargetSDK(Landroid/content/Context;Landroid/content/pm/ApplicationInfo;Landroid/os/UserHandle;)I
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasUidRequestedLegacyExternalStorage(ILandroid/content/Context;)Z
+HSPLcom/android/server/policy/SoftRestrictedPermissionPolicy;->hasWriteMediaStorageGrantedForUid(ILandroid/content/Context;)Z
 PLcom/android/server/policy/SplashScreenSurface;-><init>(Landroid/view/View;Landroid/os/IBinder;)V
 PLcom/android/server/policy/SplashScreenSurface;->remove()V
+HSPLcom/android/server/policy/WakeGestureListener$1;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
+HSPLcom/android/server/policy/WakeGestureListener$2;-><init>(Lcom/android/server/policy/WakeGestureListener;)V
 HSPLcom/android/server/policy/WakeGestureListener;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/policy/WakeGestureListener;->cancelWakeUpTrigger()V
-HSPLcom/android/server/policy/WakeGestureListener;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/policy/WakeGestureListener;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/policy/WakeGestureListener;->isSupported()Z
-PLcom/android/server/policy/WindowManagerPolicy;->getSubWindowLayerFromTypeLw(I)I
+PLcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;->cameraLensStateToString(I)Ljava/lang/String;
+HSPLcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;->lidStateToString(I)Ljava/lang/String;
+HPLcom/android/server/policy/WindowManagerPolicy;->getSubWindowLayerFromTypeLw(I)I
 HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(I)I
 HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerFromTypeLw(IZ)I
 HSPLcom/android/server/policy/WindowManagerPolicy;->getWindowLayerLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)I
+HSPLcom/android/server/policy/WindowManagerPolicy;->userRotationModeToString(I)Ljava/lang/String;
+HSPLcom/android/server/policy/WindowOrientationListener$OrientationJudge;-><init>(Lcom/android/server/policy/WindowOrientationListener;)V
+HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge$1;-><init>(Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;)V
 PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge$1;->run()V
-PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->getProposedRotationLocked()I
-HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
-HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onSensorChanged(Landroid/hardware/SensorEvent;)V
-PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchEndLocked(J)V
-HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchStartLocked()V
-HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->resetLocked(Z)V
-PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->scheduleRotationEvaluationIfNecessaryLocked(J)V
+HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;-><init>(Lcom/android/server/policy/WindowOrientationListener;)V
+PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->access$402(Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;Z)Z
+HSPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->evaluateRotationChangeLocked()I
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->getProposedRotationLocked()I
+PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->isDesiredRotationAcceptableLocked(J)Z
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onAccuracyChanged(Landroid/hardware/Sensor;I)V
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchEndLocked(J)V
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->onTouchStartLocked()V
+PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->resetLocked(Z)V
+HPLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->scheduleRotationEvaluationIfNecessaryLocked(J)V
+PLcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;->unscheduleRotationEvaluationLocked()V
+HSPLcom/android/server/policy/WindowOrientationListener;-><clinit>()V
+HSPLcom/android/server/policy/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;)V
 HSPLcom/android/server/policy/WindowOrientationListener;-><init>(Landroid/content/Context;Landroid/os/Handler;I)V
+PLcom/android/server/policy/WindowOrientationListener;->access$000(Lcom/android/server/policy/WindowOrientationListener;)Ljava/lang/Object;
+PLcom/android/server/policy/WindowOrientationListener;->access$100()Z
+PLcom/android/server/policy/WindowOrientationListener;->access$300(Lcom/android/server/policy/WindowOrientationListener;)Landroid/os/Handler;
 HSPLcom/android/server/policy/WindowOrientationListener;->canDetectOrientation()Z
-HSPLcom/android/server/policy/WindowOrientationListener;->disable()V
-PLcom/android/server/policy/WindowOrientationListener;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/policy/WindowOrientationListener;->enable(Z)V
-HSPLcom/android/server/policy/WindowOrientationListener;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/policy/WindowOrientationListener;->getProposedRotation()I
-PLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V
-HSPLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V
+HPLcom/android/server/policy/WindowOrientationListener;->disable()V
+HSPLcom/android/server/policy/WindowOrientationListener;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/policy/WindowOrientationListener;->enable(Z)V
+PLcom/android/server/policy/WindowOrientationListener;->getHandler()Landroid/os/Handler;
+HPLcom/android/server/policy/WindowOrientationListener;->getProposedRotation()I
+HPLcom/android/server/policy/WindowOrientationListener;->onTouchEnd()V
+HPLcom/android/server/policy/WindowOrientationListener;->onTouchStart()V
 HSPLcom/android/server/policy/WindowOrientationListener;->setCurrentRotation(I)V
-HSPLcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;-><init>()V
-HSPLcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;->run()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->lambda$onServiceDisconnected$0()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;->onDrawn()V
+PLcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;-><clinit>()V
+PLcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;-><init>()V
+PLcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;->run()V
+HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;-><init>(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->lambda$onServiceDisconnected$0()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;->onServiceDisconnected(Landroid/content/ComponentName;)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
+HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;-><init>()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->access$400(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;)V
+HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;->reset()V
+HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;-><init>(Landroid/content/Context;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$000(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Landroid/content/Context;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$100(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$200(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$300(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$302(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;)Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->access$500(Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;)Landroid/os/Handler;
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->bindService(Landroid/content/Context;)V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->dismiss(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->doKeyguardTimeout(Landroid/os/Bundle;)V
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasKeyguard()Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasLockscreenWallpaper()Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->hasLockscreenWallpaper()Z
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->interactiveStateToString(I)Ljava/lang/String;
+HPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isInputRestricted()Z
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isSecure(I)Z
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isShowing()Z
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->isTrusted()Z
@@ -12354,7 +27273,7 @@
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onDreamingStarted()V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onDreamingStopped()V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onFinishedGoingToSleep(IZ)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onFinishedWakingUp()V
+HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onFinishedWakingUp()V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOff()V
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurnedOn()V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onScreenTurningOff()V
@@ -12362,89 +27281,143 @@
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedGoingToSleep(I)V
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onStartedWakingUp()V
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->onSystemReady()V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->screenStateToString(I)Ljava/lang/String;
 HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setKeyguardEnabled(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setOccluded(ZZ)V
+PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->setOccluded(ZZ)V
 PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->startKeyguardExitAnimation(JJ)V
-PLcom/android/server/policy/keyguard/KeyguardServiceDelegate;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)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;->dismiss(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->doKeyguardTimeout(Landroid/os/Bundle;)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->hasLockscreenWallpaper()Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isInputRestricted()Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isSecure(I)Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->isShowing()Z
+HPLcom/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;->isTrusted()Z
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onBootCompleted()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onBootCompleted()V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onDreamingStarted()V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onDreamingStopped()V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onFinishedGoingToSleep(IZ)V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onFinishedWakingUp()V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOff()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurnedOn()V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOff()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
-PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedGoingToSleep(I)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onScreenTurningOn(Lcom/android/internal/policy/IKeyguardDrawnCallback;)V
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedGoingToSleep(I)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onStartedWakingUp()V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->onSystemReady()V
+HPLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setKeyguardEnabled(Z)V
+PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->setOccluded(ZZ)V
 PLcom/android/server/policy/keyguard/KeyguardServiceWrapper;->startKeyguardExitAnimation(JJ)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;-><init>(Landroid/content/Context;Lcom/android/internal/policy/IKeyguardService;Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)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;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->hasLockscreenWallpaper()Z
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isInputRestricted()Z
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isSecure(I)Z
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->isShowing()Z
+HPLcom/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;->isTrusted()Z
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onHasLockscreenWallpaperChanged(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onSimSecureStateChanged(Z)V
-HSPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onTrustedChanged(Z)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onHasLockscreenWallpaperChanged(Z)V
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onInputRestrictedStateChanged(Z)V
+HPLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onShowingStateChanged(Z)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onSimSecureStateChanged(Z)V
+PLcom/android/server/policy/keyguard/KeyguardStateMonitor;->onTrustedChanged(Z)V
 HSPLcom/android/server/policy/role/LegacyRoleResolutionPolicy;-><init>(Landroid/content/Context;)V
-PLcom/android/server/policy/role/LegacyRoleResolutionPolicy;->getRoleHolders(Ljava/lang/String;I)Ljava/util/List;
-HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$9JFHCKCwrnUIYoXDsqNamhlY5VU;->onValues(Landroid/os/Temperature;)V
+HPLcom/android/server/policy/role/LegacyRoleResolutionPolicy;->getRoleHolders(Ljava/lang/String;I)Ljava/util/List;
+HPLcom/android/server/policy/role/LegacyRoleResolutionPolicy;->isSettingsApplication(Ljava/lang/String;I)Z
+HSPLcom/android/server/power/-$$Lambda$PowerManagerService$FUW_os-Z9SregUE_DR9vDwaRuXo;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/-$$Lambda$PowerManagerService$FUW_os-Z9SregUE_DR9vDwaRuXo;->run()V
+HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$9JFHCKCwrnUIYoXDsqNamhlY5VU;-><init>(Lcom/android/server/power/ThermalManagerService;)V
+PLcom/android/server/power/-$$Lambda$ThermalManagerService$9JFHCKCwrnUIYoXDsqNamhlY5VU;->onValues(Landroid/os/Temperature;)V
+HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$R9S8YWn8x1F3V2TOvXtmky1V44Q;-><init>(Ljava/util/List;)V
 HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$R9S8YWn8x1F3V2TOvXtmky1V44Q;->onValues(Landroid/hardware/thermal/V1_0/ThermalStatus;Ljava/util/ArrayList;)V
+HPLcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$dRsq86SXVH7z342fbs2U36cr67I;-><init>(Ljava/util/List;)V
+HPLcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$dRsq86SXVH7z342fbs2U36cr67I;->onValues(Landroid/hardware/thermal/V1_0/ThermalStatus;Ljava/util/ArrayList;)V
+HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$ZPQKzo9ZjU-hL4QYH693hWuTqjk;-><init>(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
 HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$ZPQKzo9ZjU-hL4QYH693hWuTqjk;->run()V
+HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$x5obtNvJKZxnpguOiQsFBDmBZ4k;-><init>(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
 HSPLcom/android/server/power/-$$Lambda$ThermalManagerService$x5obtNvJKZxnpguOiQsFBDmBZ4k;->run()V
+HSPLcom/android/server/power/AttentionDetector$1;-><init>(Lcom/android/server/power/AttentionDetector;Landroid/os/Handler;Landroid/content/Context;)V
+PLcom/android/server/power/AttentionDetector$1;->onChange(Z)V
+PLcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;-><init>(Lcom/android/server/power/AttentionDetector;I)V
+PLcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;->onFailure(I)V
+PLcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;->onSuccess(IJ)V
+HSPLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;)V
+HSPLcom/android/server/power/AttentionDetector$UserSwitchObserver;-><init>(Lcom/android/server/power/AttentionDetector;Lcom/android/server/power/AttentionDetector$1;)V
 HSPLcom/android/server/power/AttentionDetector;-><init>(Ljava/lang/Runnable;Ljava/lang/Object;)V
-PLcom/android/server/power/AttentionDetector;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/power/AttentionDetector;->isAttentionServiceSupported()Z
+PLcom/android/server/power/AttentionDetector;->access$100(Lcom/android/server/power/AttentionDetector;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/power/AttentionDetector;->access$200(Lcom/android/server/power/AttentionDetector;)Ljava/lang/Object;
+PLcom/android/server/power/AttentionDetector;->access$300(Lcom/android/server/power/AttentionDetector;)I
+PLcom/android/server/power/AttentionDetector;->access$400(Lcom/android/server/power/AttentionDetector;)Ljava/lang/Runnable;
+PLcom/android/server/power/AttentionDetector;->access$500(Lcom/android/server/power/AttentionDetector;)V
+HSPLcom/android/server/power/AttentionDetector;->cancelCurrentRequestIfAny()V
+HPLcom/android/server/power/AttentionDetector;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/AttentionDetector;->getPostDimCheckDurationMillis(J)J
+HPLcom/android/server/power/AttentionDetector;->getPreDimCheckDurationMillis()J
+PLcom/android/server/power/AttentionDetector;->isAttentionServiceSupported()Z
 HSPLcom/android/server/power/AttentionDetector;->onUserActivity(JI)I
 PLcom/android/server/power/AttentionDetector;->onWakefulnessChangeStarted(I)V
+HSPLcom/android/server/power/AttentionDetector;->resetConsecutiveExtensionCount()V
+HPLcom/android/server/power/AttentionDetector;->serviceHasSufficientPermissions()Z
 HSPLcom/android/server/power/AttentionDetector;->systemReady(Landroid/content/Context;)V
 HSPLcom/android/server/power/AttentionDetector;->updateEnabledFromSettings(Landroid/content/Context;)V
-HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(J)J
-PLcom/android/server/power/Notifier$1;->run()V
-PLcom/android/server/power/Notifier$2;->run()V
-PLcom/android/server/power/Notifier$3;->run()V
-PLcom/android/server/power/Notifier$4;->run()V
-PLcom/android/server/power/Notifier$5;->run()V
-PLcom/android/server/power/Notifier$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/power/Notifier$8;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/AttentionDetector;->updateUserActivity(JJ)J
+HSPLcom/android/server/power/InattentiveSleepWarningController;-><init>()V
+HSPLcom/android/server/power/InattentiveSleepWarningController;->isShown()Z
+HPLcom/android/server/power/Notifier$1;-><init>(Lcom/android/server/power/Notifier;I)V
+HPLcom/android/server/power/Notifier$1;->run()V
+HPLcom/android/server/power/Notifier$2;-><init>(Lcom/android/server/power/Notifier;)V
+HPLcom/android/server/power/Notifier$2;->run()V
+HPLcom/android/server/power/Notifier$3;-><init>(Lcom/android/server/power/Notifier;I)V
+HPLcom/android/server/power/Notifier$3;->run()V
+HPLcom/android/server/power/Notifier$4;-><init>(Lcom/android/server/power/Notifier;II)V
+HPLcom/android/server/power/Notifier$4;->run()V
+HPLcom/android/server/power/Notifier$5;-><init>(Lcom/android/server/power/Notifier;II)V
+HPLcom/android/server/power/Notifier$5;->run()V
+HSPLcom/android/server/power/Notifier$6;-><init>(Lcom/android/server/power/Notifier;)V
+HPLcom/android/server/power/Notifier$6;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/Notifier$7;-><init>(Lcom/android/server/power/Notifier;)V
+HPLcom/android/server/power/Notifier$7;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/Notifier$NotifierHandler;-><init>(Lcom/android/server/power/Notifier;Landroid/os/Looper;)V
 HSPLcom/android/server/power/Notifier$NotifierHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/power/Notifier;-><clinit>()V
 HSPLcom/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;)V
+PLcom/android/server/power/Notifier;->access$000(Lcom/android/server/power/Notifier;)Landroid/app/ActivityManagerInternal;
+PLcom/android/server/power/Notifier;->access$100(Lcom/android/server/power/Notifier;)I
+PLcom/android/server/power/Notifier;->access$200(I)I
+PLcom/android/server/power/Notifier;->access$300(Lcom/android/server/power/Notifier;)Lcom/android/server/policy/WindowManagerPolicy;
+PLcom/android/server/power/Notifier;->access$400(Lcom/android/server/power/Notifier;)J
+PLcom/android/server/power/Notifier;->access$500(Lcom/android/server/power/Notifier;)V
+HSPLcom/android/server/power/Notifier;->access$600(Lcom/android/server/power/Notifier;)V
+PLcom/android/server/power/Notifier;->access$700(Lcom/android/server/power/Notifier;II)V
+PLcom/android/server/power/Notifier;->access$900(Lcom/android/server/power/Notifier;I)V
+PLcom/android/server/power/Notifier;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/Notifier;->finishPendingBroadcastLocked()V
 HSPLcom/android/server/power/Notifier;->getBatteryStatsWakeLockMonitorType(I)I
-PLcom/android/server/power/Notifier;->handleEarlyInteractiveChange()V
-PLcom/android/server/power/Notifier;->handleLateInteractiveChange()V
+HPLcom/android/server/power/Notifier;->handleEarlyInteractiveChange()V
+HPLcom/android/server/power/Notifier;->handleLateInteractiveChange()V
 PLcom/android/server/power/Notifier;->isChargingFeedbackEnabled(I)Z
-PLcom/android/server/power/Notifier;->onLongPartialWakeLockFinish(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/Notifier;->onLongPartialWakeLockStart(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/Notifier;->onLongPartialWakeLockFinish(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
+HPLcom/android/server/power/Notifier;->onLongPartialWakeLockStart(Ljava/lang/String;ILandroid/os/WorkSource;Ljava/lang/String;)V
 HSPLcom/android/server/power/Notifier;->onUserActivity(II)V
 HSPLcom/android/server/power/Notifier;->onWakeLockAcquired(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
 HSPLcom/android/server/power/Notifier;->onWakeLockChanging(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
 HSPLcom/android/server/power/Notifier;->onWakeLockReleased(ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
-PLcom/android/server/power/Notifier;->onWakeUp(ILjava/lang/String;ILjava/lang/String;I)V
+HPLcom/android/server/power/Notifier;->onWakeUp(ILjava/lang/String;ILjava/lang/String;I)V
 PLcom/android/server/power/Notifier;->onWakefulnessChangeFinished()V
-PLcom/android/server/power/Notifier;->onWakefulnessChangeStarted(IIJ)V
+HPLcom/android/server/power/Notifier;->onWakefulnessChangeStarted(IIJ)V
 PLcom/android/server/power/Notifier;->onWiredChargingStarted(I)V
 PLcom/android/server/power/Notifier;->onWirelessChargingStarted(II)V
-PLcom/android/server/power/Notifier;->playChargingStartedFeedback(I)V
-PLcom/android/server/power/Notifier;->playChargingStartedVibration(I)V
-PLcom/android/server/power/Notifier;->sendGoToSleepBroadcast()V
-PLcom/android/server/power/Notifier;->sendNextBroadcast()V
+HPLcom/android/server/power/Notifier;->playChargingStartedFeedback(IZ)V
+HPLcom/android/server/power/Notifier;->sendGoToSleepBroadcast()V
+HPLcom/android/server/power/Notifier;->sendNextBroadcast()V
 HSPLcom/android/server/power/Notifier;->sendUserActivity()V
-PLcom/android/server/power/Notifier;->sendWakeUpBroadcast()V
-PLcom/android/server/power/Notifier;->updatePendingBroadcastLocked()V
+HPLcom/android/server/power/Notifier;->sendWakeUpBroadcast()V
+PLcom/android/server/power/Notifier;->showWiredChargingStarted(I)V
+PLcom/android/server/power/Notifier;->showWirelessChargingStarted(II)V
+PLcom/android/server/power/Notifier;->translateOffReason(I)I
+PLcom/android/server/power/Notifier;->translateOnReason(I)I
+HPLcom/android/server/power/Notifier;->updatePendingBroadcastLocked()V
+HSPLcom/android/server/power/PowerManagerService$1;-><init>(Lcom/android/server/power/PowerManagerService;)V
 HSPLcom/android/server/power/PowerManagerService$1;->acquireSuspendBlocker()V
 HSPLcom/android/server/power/PowerManagerService$1;->onDisplayStateChange(I)V
 PLcom/android/server/power/PowerManagerService$1;->onProximityNegative()V
@@ -12452,43 +27425,71 @@
 HSPLcom/android/server/power/PowerManagerService$1;->onStateChanged()V
 HSPLcom/android/server/power/PowerManagerService$1;->releaseSuspendBlocker()V
 PLcom/android/server/power/PowerManagerService$1;->toString()Ljava/lang/String;
+PLcom/android/server/power/PowerManagerService$2;-><init>(Lcom/android/server/power/PowerManagerService;IZLjava/lang/String;)V
+PLcom/android/server/power/PowerManagerService$2;->run()V
+HSPLcom/android/server/power/PowerManagerService$4;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$BatteryReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
 HSPLcom/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;)V
 HSPLcom/android/server/power/PowerManagerService$BinderService;->acquireWakeLock(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;)V
 PLcom/android/server/power/PowerManagerService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I
+PLcom/android/server/power/PowerManagerService$BinderService;->getLastShutdownReason()I
+PLcom/android/server/power/PowerManagerService$BinderService;->getPowerSaveModeTrigger()I
 HSPLcom/android/server/power/PowerManagerService$BinderService;->getPowerSaveState(I)Landroid/os/PowerSaveState;
-PLcom/android/server/power/PowerManagerService$BinderService;->goToSleep(JII)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->goToSleep(JII)V
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isDeviceIdleMode()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isInteractive()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isLightDeviceIdleMode()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isPowerSaveMode()Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->isWakeLockLevelSupported(I)Z
+PLcom/android/server/power/PowerManagerService$BinderService;->nap(J)V
+PLcom/android/server/power/PowerManagerService$BinderService;->reboot(ZLjava/lang/String;Z)V
 HSPLcom/android/server/power/PowerManagerService$BinderService;->releaseWakeLock(Landroid/os/IBinder;I)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->setAdaptivePowerSaveEnabled(Z)Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->setAdaptivePowerSavePolicy(Landroid/os/BatterySaverPolicyConfig;)Z
 HSPLcom/android/server/power/PowerManagerService$BinderService;->setDozeAfterScreenOff(Z)V
-PLcom/android/server/power/PowerManagerService$BinderService;->setDynamicPowerSaveHint(ZI)Z
+HPLcom/android/server/power/PowerManagerService$BinderService;->setDynamicPowerSaveHint(ZI)Z
+PLcom/android/server/power/PowerManagerService$BinderService;->setPowerSaveModeEnabled(Z)Z
+PLcom/android/server/power/PowerManagerService$BinderService;->shutdown(ZLjava/lang/String;Z)V
 HSPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockUids(Landroid/os/IBinder;[I)V
 HSPLcom/android/server/power/PowerManagerService$BinderService;->updateWakeLockWorkSource(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;)V
-HSPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V
-PLcom/android/server/power/PowerManagerService$BinderService;->wakeUp(JILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/power/PowerManagerService$BinderService;->userActivity(JII)V
+HPLcom/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;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/power/PowerManagerService$Constants;->dumpProto(Landroid/util/proto/ProtoOutputStream;)V
+HSPLcom/android/server/power/PowerManagerService$Constants;->start(Landroid/content/ContentResolver;)V
 HSPLcom/android/server/power/PowerManagerService$Constants;->updateConstants()V
-PLcom/android/server/power/PowerManagerService$DreamReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$DockReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$1;)V
+HSPLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$DreamReceiver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$1;)V
+HPLcom/android/server/power/PowerManagerService$DreamReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;-><init>(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$1;)V
 PLcom/android/server/power/PowerManagerService$ForegroundProfileObserver;->onForegroundProfileSwitch(I)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;
+HSPLcom/android/server/power/PowerManagerService$Injector$1;->set(Ljava/lang/String;Ljava/lang/String;)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;->createBatterySaverPolicy(Ljava/lang/Object;Landroid/content/Context;Lcom/android/server/power/batterysaver/BatterySavingStats;)Lcom/android/server/power/batterysaver/BatterySaverPolicy;
+HSPLcom/android/server/power/PowerManagerService$Injector;->createInattentiveSleepWarningController()Lcom/android/server/power/InattentiveSleepWarningController;
 HSPLcom/android/server/power/PowerManagerService$Injector;->createNativeWrapper()Lcom/android/server/power/PowerManagerService$NativeWrapper;
 HSPLcom/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/Notifier;
 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;
 HSPLcom/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$LocalService;-><init>(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService$LocalService;->getLastWakeup()Landroid/os/PowerManager$WakeData;
 HSPLcom/android/server/power/PowerManagerService$LocalService;->getLowPowerState(I)Landroid/os/PowerSaveState;
 HSPLcom/android/server/power/PowerManagerService$LocalService;->powerHint(II)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->registerLowPowerModeObserver(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
-HSPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleMode(Z)Z
-PLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleMode(Z)Z
+HPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleTempWhitelist([I)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->setDeviceIdleWhitelist([I)V
-PLcom/android/server/power/PowerManagerService$LocalService;->setDozeOverrideFromDreamManager(II)V
-HSPLcom/android/server/power/PowerManagerService$LocalService;->setLightDeviceIdleMode(Z)Z
+HPLcom/android/server/power/PowerManagerService$LocalService;->setDozeOverrideFromDreamManager(II)V
+HPLcom/android/server/power/PowerManagerService$LocalService;->setLightDeviceIdleMode(Z)Z
 HSPLcom/android/server/power/PowerManagerService$LocalService;->setMaximumScreenOffTimeoutFromDeviceAdmin(IJ)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->setScreenBrightnessOverrideFromWindowManager(I)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->setUserActivityTimeoutOverrideFromWindowManager(J)V
@@ -12496,6 +27497,7 @@
 HSPLcom/android/server/power/PowerManagerService$LocalService;->uidGone(I)V
 HSPLcom/android/server/power/PowerManagerService$LocalService;->uidIdle(I)V
 HSPLcom/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
 HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeReleaseSuspendBlocker(Ljava/lang/String;)V
@@ -12503,79 +27505,180 @@
 HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetAutoSuspend(Z)V
 HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetFeature(II)V
 HSPLcom/android/server/power/PowerManagerService$NativeWrapper;->nativeSetInteractive(Z)V
+HSPLcom/android/server/power/PowerManagerService$PowerManagerHandler;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Looper;)V
 HSPLcom/android/server/power/PowerManagerService$PowerManagerHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/power/PowerManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+HSPLcom/android/server/power/PowerManagerService$SettingsObserver;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/Handler;)V
+PLcom/android/server/power/PowerManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)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
+PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->release()V
 PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->toString()Ljava/lang/String;
-PLcom/android/server/power/PowerManagerService$SuspendBlockerImpl;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/power/PowerManagerService$UidState;-><init>(I)V
+HSPLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;-><init>(Lcom/android/server/power/PowerManagerService;)V
 HSPLcom/android/server/power/PowerManagerService$UserSwitchedReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/power/PowerManagerService$WakeLock;->binderDied()V
+HSPLcom/android/server/power/PowerManagerService$WakeLock;-><init>(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;IILcom/android/server/power/PowerManagerService$UidState;)V
+PLcom/android/server/power/PowerManagerService$WakeLock;->binderDied()V
+PLcom/android/server/power/PowerManagerService$WakeLock;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 PLcom/android/server/power/PowerManagerService$WakeLock;->getLockFlagsString()Ljava/lang/String;
 PLcom/android/server/power/PowerManagerService$WakeLock;->getLockLevelString()Ljava/lang/String;
+HSPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameProperties(ILjava/lang/String;Landroid/os/WorkSource;II)Z
 HSPLcom/android/server/power/PowerManagerService$WakeLock;->hasSameWorkSource(Landroid/os/WorkSource;)Z
-PLcom/android/server/power/PowerManagerService$WakeLock;->toString()Ljava/lang/String;
-PLcom/android/server/power/PowerManagerService$WakeLock;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/power/PowerManagerService$WakeLock;->toString()Ljava/lang/String;
+HSPLcom/android/server/power/PowerManagerService$WakeLock;->updateWorkSource(Landroid/os/WorkSource;)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
-HSPLcom/android/server/power/PowerManagerService;->access$3400(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HSPLcom/android/server/power/PowerManagerService;->access$000(Lcom/android/server/power/PowerManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/power/PowerManagerService;->access$1000(II)V
+HSPLcom/android/server/power/PowerManagerService;->access$1200(Lcom/android/server/power/PowerManagerService;)Ljava/util/ArrayList;
+HSPLcom/android/server/power/PowerManagerService;->access$1676(Lcom/android/server/power/PowerManagerService;I)I
+HSPLcom/android/server/power/PowerManagerService;->access$1700(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService;->access$1802(Lcom/android/server/power/PowerManagerService;Z)Z
+PLcom/android/server/power/PowerManagerService;->access$1900(Lcom/android/server/power/PowerManagerService;JIII)Z
+HSPLcom/android/server/power/PowerManagerService;->access$2000(Lcom/android/server/power/PowerManagerService;)Z
+PLcom/android/server/power/PowerManagerService;->access$202(Lcom/android/server/power/PowerManagerService;I)I
+HSPLcom/android/server/power/PowerManagerService;->access$2200(Lcom/android/server/power/PowerManagerService;)Z
+HSPLcom/android/server/power/PowerManagerService;->access$2400(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/SuspendBlocker;
+HSPLcom/android/server/power/PowerManagerService;->access$2500(Lcom/android/server/power/PowerManagerService;)V
+PLcom/android/server/power/PowerManagerService;->access$2600(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->access$2700(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->access$2900(Lcom/android/server/power/PowerManagerService;II)V
+PLcom/android/server/power/PowerManagerService;->access$300(Lcom/android/server/power/PowerManagerService;J)V
+PLcom/android/server/power/PowerManagerService;->access$3100(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->access$3200(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->access$3500(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+PLcom/android/server/power/PowerManagerService;->access$3600(Lcom/android/server/power/PowerManagerService;Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HSPLcom/android/server/power/PowerManagerService;->access$3700(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/PowerManagerService$NativeWrapper;
+HSPLcom/android/server/power/PowerManagerService;->access$3900(Lcom/android/server/power/PowerManagerService;)Landroid/content/Context;
+HSPLcom/android/server/power/PowerManagerService;->access$400(Lcom/android/server/power/PowerManagerService;)V
+HSPLcom/android/server/power/PowerManagerService;->access$4000(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V
+HSPLcom/android/server/power/PowerManagerService;->access$4100(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;I)V
+HSPLcom/android/server/power/PowerManagerService;->access$4200(Lcom/android/server/power/PowerManagerService;Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
+HSPLcom/android/server/power/PowerManagerService;->access$4300(Lcom/android/server/power/PowerManagerService;I)Z
+PLcom/android/server/power/PowerManagerService;->access$4400(Lcom/android/server/power/PowerManagerService;)J
+PLcom/android/server/power/PowerManagerService;->access$4402(Lcom/android/server/power/PowerManagerService;J)J
+HPLcom/android/server/power/PowerManagerService;->access$4500(Lcom/android/server/power/PowerManagerService;JIII)V
+PLcom/android/server/power/PowerManagerService;->access$4600(Lcom/android/server/power/PowerManagerService;JILjava/lang/String;ILjava/lang/String;I)V
+PLcom/android/server/power/PowerManagerService;->access$4700(Lcom/android/server/power/PowerManagerService;JIII)V
+PLcom/android/server/power/PowerManagerService;->access$4800(Lcom/android/server/power/PowerManagerService;JI)V
+HSPLcom/android/server/power/PowerManagerService;->access$4900(Lcom/android/server/power/PowerManagerService;)Z
+HSPLcom/android/server/power/PowerManagerService;->access$500(Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService;->access$5000(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/batterysaver/BatterySaverController;
+HSPLcom/android/server/power/PowerManagerService;->access$5100(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/batterysaver/BatterySaverPolicy;
+PLcom/android/server/power/PowerManagerService;->access$5200(Lcom/android/server/power/PowerManagerService;Z)Z
+PLcom/android/server/power/PowerManagerService;->access$5300(Lcom/android/server/power/PowerManagerService;)Lcom/android/server/power/batterysaver/BatterySaverStateMachine;
+PLcom/android/server/power/PowerManagerService;->access$5500(Lcom/android/server/power/PowerManagerService;IZLjava/lang/String;Z)V
+HSPLcom/android/server/power/PowerManagerService;->access$5800(Lcom/android/server/power/PowerManagerService;Z)V
+HSPLcom/android/server/power/PowerManagerService;->access$600(Ljava/lang/String;)V
+PLcom/android/server/power/PowerManagerService;->access$6200(Lcom/android/server/power/PowerManagerService;Ljava/io/FileDescriptor;)V
+PLcom/android/server/power/PowerManagerService;->access$6300(Lcom/android/server/power/PowerManagerService;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/power/PowerManagerService;->access$6400(Lcom/android/server/power/PowerManagerService;I)V
+PLcom/android/server/power/PowerManagerService;->access$6500(Lcom/android/server/power/PowerManagerService;II)V
+PLcom/android/server/power/PowerManagerService;->access$6600(Lcom/android/server/power/PowerManagerService;Ljava/io/FileDescriptor;)V
+HSPLcom/android/server/power/PowerManagerService;->access$6700(Lcom/android/server/power/PowerManagerService;J)V
+PLcom/android/server/power/PowerManagerService;->access$6700(Lcom/android/server/power/PowerManagerService;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/power/PowerManagerService;->access$6800(Lcom/android/server/power/PowerManagerService;I)V
+PLcom/android/server/power/PowerManagerService;->access$6900(Lcom/android/server/power/PowerManagerService;)Landroid/os/PowerManager$WakeData;
+HPLcom/android/server/power/PowerManagerService;->access$6900(Lcom/android/server/power/PowerManagerService;II)V
+HSPLcom/android/server/power/PowerManagerService;->access$700(Z)V
+HSPLcom/android/server/power/PowerManagerService;->access$7100(Lcom/android/server/power/PowerManagerService;J)V
+PLcom/android/server/power/PowerManagerService;->access$7300(Lcom/android/server/power/PowerManagerService;)Landroid/os/PowerManager$WakeData;
+HSPLcom/android/server/power/PowerManagerService;->access$800(Z)V
+HSPLcom/android/server/power/PowerManagerService;->access$900(II)V
 HSPLcom/android/server/power/PowerManagerService;->acquireWakeLockInternal(Landroid/os/IBinder;ILjava/lang/String;Ljava/lang/String;Landroid/os/WorkSource;Ljava/lang/String;II)V
 HSPLcom/android/server/power/PowerManagerService;->adjustWakeLockSummaryLocked(I)I
 HSPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnAcquireLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
-PLcom/android/server/power/PowerManagerService;->canDreamLocked()Z
-PLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
-PLcom/android/server/power/PowerManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
-PLcom/android/server/power/PowerManagerService;->dumpProto(Ljava/io/FileDescriptor;)V
+HSPLcom/android/server/power/PowerManagerService;->applyWakeLockFlagsOnReleaseLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+PLcom/android/server/power/PowerManagerService;->canDozeLocked()Z
+HPLcom/android/server/power/PowerManagerService;->canDreamLocked()Z
+HPLcom/android/server/power/PowerManagerService;->checkForLongWakeLocks()V
+HSPLcom/android/server/power/PowerManagerService;->copyWorkSource(Landroid/os/WorkSource;)Landroid/os/WorkSource;
+HPLcom/android/server/power/PowerManagerService;->dumpInternal(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/PowerManagerService;->dumpProto(Ljava/io/FileDescriptor;)V
+HSPLcom/android/server/power/PowerManagerService;->enqueueNotifyLongMsgLocked(J)V
+HSPLcom/android/server/power/PowerManagerService;->findWakeLockIndexLocked(Landroid/os/IBinder;)I
 HSPLcom/android/server/power/PowerManagerService;->finishWakefulnessChangeIfNeededLocked()V
+HSPLcom/android/server/power/PowerManagerService;->getAttentiveTimeoutLocked()J
 HSPLcom/android/server/power/PowerManagerService;->getDesiredScreenPolicyLocked()I
-HSPLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal(Ljava/lang/String;)I
+PLcom/android/server/power/PowerManagerService;->getFirstNonEmptyWorkChain(Landroid/os/WorkSource;)Landroid/os/WorkSource$WorkChain;
+PLcom/android/server/power/PowerManagerService;->getLastShutdownReasonInternal()I
+PLcom/android/server/power/PowerManagerService;->getLastWakeupInternal()Landroid/os/PowerManager$WakeData;
 HSPLcom/android/server/power/PowerManagerService;->getNextProfileTimeoutLocked(J)J
-PLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(J)J
-HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(J)J
-PLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked()J
+HSPLcom/android/server/power/PowerManagerService;->getScreenDimDurationLocked(J)J
+HSPLcom/android/server/power/PowerManagerService;->getScreenOffTimeoutLocked(JJ)J
+HSPLcom/android/server/power/PowerManagerService;->getSleepTimeoutLocked(J)J
 HSPLcom/android/server/power/PowerManagerService;->getWakeLockSummaryFlags(Lcom/android/server/power/PowerManagerService$WakeLock;)I
-PLcom/android/server/power/PowerManagerService;->goToSleepInternal(JIII)V
-PLcom/android/server/power/PowerManagerService;->goToSleepNoUpdateLocked(JIII)Z
+HPLcom/android/server/power/PowerManagerService;->goToSleepInternal(JIII)V
+HPLcom/android/server/power/PowerManagerService;->goToSleepNoUpdateLocked(JIII)Z
+HSPLcom/android/server/power/PowerManagerService;->handleBatteryStateChangedLocked()V
 HSPLcom/android/server/power/PowerManagerService;->handleSandman()V
-HSPLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V
-HSPLcom/android/server/power/PowerManagerService;->handleWakeLockDeath(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+HSPLcom/android/server/power/PowerManagerService;->handleSettingsChangedLocked()V
+HPLcom/android/server/power/PowerManagerService;->handleUidStateChangeLocked()V
+HPLcom/android/server/power/PowerManagerService;->handleUserActivityTimeout()V
+HPLcom/android/server/power/PowerManagerService;->handleWakeLockDeath(Lcom/android/server/power/PowerManagerService$WakeLock;)V
 HSPLcom/android/server/power/PowerManagerService;->incrementBootCount()V
+HPLcom/android/server/power/PowerManagerService;->isAttentiveTimeoutExpired(J)Z
+HPLcom/android/server/power/PowerManagerService;->isBeingKeptAwakeLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->isDeviceIdleModeInternal()Z
 HSPLcom/android/server/power/PowerManagerService;->isInteractiveInternal()Z
+HSPLcom/android/server/power/PowerManagerService;->isItBedTimeYetLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->isLightDeviceIdleModeInternal()Z
-PLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
+HSPLcom/android/server/power/PowerManagerService;->isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked()Z
+PLcom/android/server/power/PowerManagerService;->isScreenLock(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
+HPLcom/android/server/power/PowerManagerService;->isValidBrightness(I)Z
 HSPLcom/android/server/power/PowerManagerService;->isWakeLockLevelSupportedInternal(I)Z
-HSPLcom/android/server/power/PowerManagerService;->monitor()V
+PLcom/android/server/power/PowerManagerService;->lambda$FUW_os-Z9SregUE_DR9vDwaRuXo(Lcom/android/server/power/PowerManagerService;)V
+HPLcom/android/server/power/PowerManagerService;->logSleepTimeoutRecapturedLocked()V
+HSPLcom/android/server/power/PowerManagerService;->maybeHideInattentiveSleepWarningLocked(JJ)Z
+HSPLcom/android/server/power/PowerManagerService;->maybeUpdateForegroundProfileLastActivityLocked(J)V
+HPLcom/android/server/power/PowerManagerService;->monitor()V
+PLcom/android/server/power/PowerManagerService;->napInternal(JI)V
+HPLcom/android/server/power/PowerManagerService;->napNoUpdateLocked(JI)Z
 HSPLcom/android/server/power/PowerManagerService;->needDisplaySuspendBlockerLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockAcquiredLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
 HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockChangingLocked(Lcom/android/server/power/PowerManagerService$WakeLock;ILjava/lang/String;Ljava/lang/String;IILandroid/os/WorkSource;Ljava/lang/String;)V
+HSPLcom/android/server/power/PowerManagerService;->notifyWakeLockLongFinishedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
+PLcom/android/server/power/PowerManagerService;->notifyWakeLockLongStartedLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
 HSPLcom/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;->onUserAttention()V
+HSPLcom/android/server/power/PowerManagerService;->powerHintInternal(II)V
 HSPLcom/android/server/power/PowerManagerService;->readConfigurationLocked()V
 PLcom/android/server/power/PowerManagerService;->reallyGoToSleepNoUpdateLocked(JI)Z
 HSPLcom/android/server/power/PowerManagerService;->releaseWakeLockInternal(Landroid/os/IBinder;I)V
 HSPLcom/android/server/power/PowerManagerService;->removeWakeLockLocked(Lcom/android/server/power/PowerManagerService$WakeLock;I)V
 HSPLcom/android/server/power/PowerManagerService;->restartNofifyLongTimerLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)V
-HSPLcom/android/server/power/PowerManagerService;->setDeviceIdleModeInternal(Z)Z
-PLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V
+HSPLcom/android/server/power/PowerManagerService;->scheduleSandmanLocked()V
+HSPLcom/android/server/power/PowerManagerService;->scheduleUserInactivityTimeout(J)V
+PLcom/android/server/power/PowerManagerService;->setDeviceIdleModeInternal(Z)Z
+HPLcom/android/server/power/PowerManagerService;->setDeviceIdleTempWhitelistInternal([I)V
 HSPLcom/android/server/power/PowerManagerService;->setDeviceIdleWhitelistInternal([I)V
 HSPLcom/android/server/power/PowerManagerService;->setDozeAfterScreenOffInternal(Z)V
-PLcom/android/server/power/PowerManagerService;->setDozeOverrideFromDreamManagerInternal(II)V
+HPLcom/android/server/power/PowerManagerService;->setDozeOverrideFromDreamManagerInternal(II)V
 HSPLcom/android/server/power/PowerManagerService;->setHalAutoSuspendModeLocked(Z)V
 HSPLcom/android/server/power/PowerManagerService;->setHalInteractiveModeLocked(Z)V
-HSPLcom/android/server/power/PowerManagerService;->setLightDeviceIdleModeInternal(Z)Z
+PLcom/android/server/power/PowerManagerService;->setLightDeviceIdleModeInternal(Z)Z
+PLcom/android/server/power/PowerManagerService;->setLowPowerModeInternal(Z)Z
 HSPLcom/android/server/power/PowerManagerService;->setMaximumScreenOffTimeoutFromDeviceAdminInternal(IJ)V
 HSPLcom/android/server/power/PowerManagerService;->setScreenBrightnessOverrideFromWindowManagerInternal(I)V
 HSPLcom/android/server/power/PowerManagerService;->setUserActivityTimeoutOverrideFromWindowManagerInternal(J)V
 HSPLcom/android/server/power/PowerManagerService;->setWakeLockDisabledStateLocked(Lcom/android/server/power/PowerManagerService$WakeLock;)Z
+HPLcom/android/server/power/PowerManagerService;->setWakefulnessLocked(IIJ)V
+HSPLcom/android/server/power/PowerManagerService;->shouldBoostScreenBrightness()Z
+PLcom/android/server/power/PowerManagerService;->shouldNapAtBedTimeLocked()Z
+HSPLcom/android/server/power/PowerManagerService;->shouldUseProximitySensorLocked()Z
 HSPLcom/android/server/power/PowerManagerService;->shouldWakeUpWhenPluggedOrUnpluggedLocked(ZIZ)Z
+PLcom/android/server/power/PowerManagerService;->shutdownOrRebootInternal(IZLjava/lang/String;Z)V
 HSPLcom/android/server/power/PowerManagerService;->systemReady(Lcom/android/internal/app/IAppOpsService;)V
 HSPLcom/android/server/power/PowerManagerService;->uidActiveInternal(I)V
 HSPLcom/android/server/power/PowerManagerService;->uidGoneInternal(I)V
 HSPLcom/android/server/power/PowerManagerService;->uidIdleInternal(I)V
+HSPLcom/android/server/power/PowerManagerService;->updateAttentiveStateLocked(JI)V
 HSPLcom/android/server/power/PowerManagerService;->updateDisplayPowerStateLocked(I)Z
+HSPLcom/android/server/power/PowerManagerService;->updateDreamLocked(IZ)V
 HSPLcom/android/server/power/PowerManagerService;->updateIsPoweredLocked(I)V
+HSPLcom/android/server/power/PowerManagerService;->updatePowerRequestFromBatterySaverPolicy(Landroid/hardware/display/DisplayManagerInternal$DisplayPowerRequest;)V
 HSPLcom/android/server/power/PowerManagerService;->updatePowerStateLocked()V
 HSPLcom/android/server/power/PowerManagerService;->updateProfilesLocked(J)V
 HSPLcom/android/server/power/PowerManagerService;->updateScreenBrightnessBoostLocked(I)V
@@ -12584,28 +27687,82 @@
 HSPLcom/android/server/power/PowerManagerService;->updateSuspendBlockerLocked()V
 HSPLcom/android/server/power/PowerManagerService;->updateUidProcStateInternal(II)V
 HSPLcom/android/server/power/PowerManagerService;->updateUserActivitySummaryLocked(JI)V
-HSPLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V
+HPLcom/android/server/power/PowerManagerService;->updateWakeLockDisabledStatesLocked()V
 HSPLcom/android/server/power/PowerManagerService;->updateWakeLockSummaryLocked(I)V
 HSPLcom/android/server/power/PowerManagerService;->updateWakeLockWorkSourceInternal(Landroid/os/IBinder;Landroid/os/WorkSource;Ljava/lang/String;I)V
 HSPLcom/android/server/power/PowerManagerService;->updateWakefulnessLocked(I)Z
 HSPLcom/android/server/power/PowerManagerService;->userActivityFromNative(JII)V
 HSPLcom/android/server/power/PowerManagerService;->userActivityInternal(JIII)V
 HSPLcom/android/server/power/PowerManagerService;->userActivityNoUpdateLocked(JIII)Z
-PLcom/android/server/power/PowerManagerService;->wakeUpInternal(JILjava/lang/String;ILjava/lang/String;I)V
+HPLcom/android/server/power/PowerManagerService;->wakeUpInternal(JILjava/lang/String;ILjava/lang/String;I)V
 HSPLcom/android/server/power/PowerManagerService;->wakeUpNoUpdateLocked(JILjava/lang/String;ILjava/lang/String;I)Z
+PLcom/android/server/power/ShutdownThread$2;-><init>()V
+PLcom/android/server/power/ShutdownThread$3;-><init>(Lcom/android/server/power/ShutdownThread;)V
+PLcom/android/server/power/ShutdownThread$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/power/ShutdownThread$5;-><init>(Lcom/android/server/power/ShutdownThread;JI[Z)V
+PLcom/android/server/power/ShutdownThread$5;->run()V
+PLcom/android/server/power/ShutdownThread;-><clinit>()V
+PLcom/android/server/power/ShutdownThread;-><init>()V
+PLcom/android/server/power/ShutdownThread;->access$1000()Landroid/util/ArrayMap;
+PLcom/android/server/power/ShutdownThread;->access$200()Landroid/util/TimingsTraceLog;
+PLcom/android/server/power/ShutdownThread;->access$300(Lcom/android/server/power/ShutdownThread;)Landroid/content/Context;
+PLcom/android/server/power/ShutdownThread;->access$400()Ljava/lang/String;
+PLcom/android/server/power/ShutdownThread;->access$500(Ljava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->access$600()Z
+PLcom/android/server/power/ShutdownThread;->access$900(Ljava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->actionDone()V
+PLcom/android/server/power/ShutdownThread;->beginShutdownSequence(Landroid/content/Context;)V
+PLcom/android/server/power/ShutdownThread;->metricEnded(Ljava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->metricShutdownStart()V
+PLcom/android/server/power/ShutdownThread;->metricStarted(Ljava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->newTimingsLog()Landroid/util/TimingsTraceLog;
+PLcom/android/server/power/ShutdownThread;->reboot(Landroid/content/Context;Ljava/lang/String;Z)V
+PLcom/android/server/power/ShutdownThread;->rebootOrShutdown(Landroid/content/Context;ZLjava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->run()V
+PLcom/android/server/power/ShutdownThread;->saveMetrics(ZLjava/lang/String;)V
+PLcom/android/server/power/ShutdownThread;->showShutdownDialog(Landroid/content/Context;)Landroid/app/ProgressDialog;
+PLcom/android/server/power/ShutdownThread;->showSysuiReboot()Z
+PLcom/android/server/power/ShutdownThread;->shutdown(Landroid/content/Context;Ljava/lang/String;Z)V
+PLcom/android/server/power/ShutdownThread;->shutdownInner(Landroid/content/Context;Z)V
+PLcom/android/server/power/ShutdownThread;->shutdownRadios(I)V
+HSPLcom/android/server/power/ThermalManagerService$1;-><init>(Lcom/android/server/power/ThermalManagerService;)V
 PLcom/android/server/power/ThermalManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/power/ThermalManagerService$1;->getCurrentTemperatures()Ljava/util/List;
-HSPLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListenerWithType(Landroid/os/IThermalEventListener;I)Z
+HPLcom/android/server/power/ThermalManagerService$1;->dumpItemsLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Collection;)V
+HPLcom/android/server/power/ThermalManagerService$1;->getCurrentCoolingDevices()Ljava/util/List;
+HPLcom/android/server/power/ThermalManagerService$1;->getCurrentTemperatures()Ljava/util/List;
+HPLcom/android/server/power/ThermalManagerService$1;->getCurrentThermalStatus()I
+HSPLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListener(Landroid/os/IThermalEventListener;)Z
+PLcom/android/server/power/ThermalManagerService$1;->registerThermalEventListenerWithType(Landroid/os/IThermalEventListener;I)Z
 HSPLcom/android/server/power/ThermalManagerService$1;->registerThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
-HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper$1;->notifyThrottling(Landroid/hardware/thermal/V2_0/Temperature;)V
+HPLcom/android/server/power/ThermalManagerService$1;->unregisterThermalStatusListener(Landroid/os/IThermalStatusListener;)Z
+HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper$1;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;)V
+PLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper$1;->notifyThrottling(Landroid/hardware/thermal/V2_0/Temperature;)V
+HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;-><init>()V
 HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->connectToHal()Z
 PLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->getCurrentCoolingDevices(ZI)Ljava/util/List;
 HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->getCurrentTemperatures(ZI)Ljava/util/List;
+HPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->lambda$getCurrentCoolingDevices$1(Ljava/util/List;Landroid/hardware/thermal/V1_0/ThermalStatus;Ljava/util/ArrayList;)V
 HSPLcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;->lambda$getCurrentTemperatures$0(Ljava/util/List;Landroid/hardware/thermal/V1_0/ThermalStatus;Ljava/util/ArrayList;)V
+HSPLcom/android/server/power/ThermalManagerService$ThermalHalWrapper$DeathRecipient;-><init>(Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;)V
+HSPLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><clinit>()V
+HSPLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;-><init>()V
 HSPLcom/android/server/power/ThermalManagerService$ThermalHalWrapper;->setCallback(Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$TemperatureChangedCallback;)V
+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;->dumpTemperaturesLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/util/Collection;)V
+HSPLcom/android/server/power/ThermalManagerService;->access$000(Lcom/android/server/power/ThermalManagerService;)Ljava/lang/Object;
+HSPLcom/android/server/power/ThermalManagerService;->access$100(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/power/ThermalManagerService;->access$1000(Lcom/android/server/power/ThermalManagerService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/power/ThermalManagerService;->access$200(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
+PLcom/android/server/power/ThermalManagerService;->access$300(Lcom/android/server/power/ThermalManagerService;)Ljava/util/concurrent/atomic/AtomicBoolean;
+PLcom/android/server/power/ThermalManagerService;->access$400(Lcom/android/server/power/ThermalManagerService;)Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
+HSPLcom/android/server/power/ThermalManagerService;->access$500(Lcom/android/server/power/ThermalManagerService;)Landroid/os/RemoteCallbackList;
+HSPLcom/android/server/power/ThermalManagerService;->access$600(Lcom/android/server/power/ThermalManagerService;Landroid/os/IThermalStatusListener;)V
+PLcom/android/server/power/ThermalManagerService;->access$700(Lcom/android/server/power/ThermalManagerService;)I
+PLcom/android/server/power/ThermalManagerService;->access$800()Ljava/lang/String;
+PLcom/android/server/power/ThermalManagerService;->access$900(Lcom/android/server/power/ThermalManagerService;)Z
+PLcom/android/server/power/ThermalManagerService;->lambda$9JFHCKCwrnUIYoXDsqNamhlY5VU(Lcom/android/server/power/ThermalManagerService;Landroid/os/Temperature;)V
 HSPLcom/android/server/power/ThermalManagerService;->lambda$postEventListener$1(Landroid/os/IThermalEventListener;Landroid/os/Temperature;)V
 HSPLcom/android/server/power/ThermalManagerService;->lambda$postStatusListener$0$ThermalManagerService(Landroid/os/IThermalStatusListener;)V
 HSPLcom/android/server/power/ThermalManagerService;->notifyEventListenersLocked(Landroid/os/Temperature;)V
@@ -12614,610 +27771,2225 @@
 HSPLcom/android/server/power/ThermalManagerService;->onBootPhase(I)V
 HSPLcom/android/server/power/ThermalManagerService;->onStart()V
 HSPLcom/android/server/power/ThermalManagerService;->onTemperatureChanged(Landroid/os/Temperature;Z)V
-HSPLcom/android/server/power/ThermalManagerService;->onTemperatureChangedCallback(Landroid/os/Temperature;)V
+PLcom/android/server/power/ThermalManagerService;->onTemperatureChangedCallback(Landroid/os/Temperature;)V
 HSPLcom/android/server/power/ThermalManagerService;->onTemperatureMapChangedLocked()V
 HSPLcom/android/server/power/ThermalManagerService;->postEventListener(Landroid/os/Temperature;Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
 HSPLcom/android/server/power/ThermalManagerService;->postEventListenerCurrentTemperatures(Landroid/os/IThermalEventListener;Ljava/lang/Integer;)V
+HSPLcom/android/server/power/ThermalManagerService;->postStatusListener(Landroid/os/IThermalStatusListener;)V
+HSPLcom/android/server/power/ThermalManagerService;->setStatusLocked(I)V
 HSPLcom/android/server/power/ThermalManagerService;->shutdownIfNeeded(Landroid/os/Temperature;)V
-HSPLcom/android/server/power/WirelessChargerDetector$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V
-HSPLcom/android/server/power/WirelessChargerDetector$2;->run()V
+HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;-><init>(Lcom/android/server/power/WakeLockLog$TagDatabase;)V
+HPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->fromBytes([BJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;
+HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->getRelativeTime(JJ)I
+HSPLcom/android/server/power/WakeLockLog$EntryByteTranslator;->toBytes(Lcom/android/server/power/WakeLockLog$LogEntry;[BJ)I
+HSPLcom/android/server/power/WakeLockLog$Injector;-><init>()V
+HSPLcom/android/server/power/WakeLockLog$Injector;->currentTimeMillis()J
+HSPLcom/android/server/power/WakeLockLog$Injector;->getDateFormat()Ljava/text/SimpleDateFormat;
+HSPLcom/android/server/power/WakeLockLog$Injector;->getLogSize()I
+HSPLcom/android/server/power/WakeLockLog$Injector;->getLooper()Landroid/os/Looper;
+HSPLcom/android/server/power/WakeLockLog$Injector;->getTagDatabaseSize()I
+HPLcom/android/server/power/WakeLockLog$LogEntry;-><init>()V
+HSPLcom/android/server/power/WakeLockLog$LogEntry;-><init>(JILcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$LogEntry;->dump(Ljava/io/PrintWriter;Ljava/text/SimpleDateFormat;)V
+HPLcom/android/server/power/WakeLockLog$LogEntry;->flagsToString(Ljava/lang/StringBuilder;)V
+HSPLcom/android/server/power/WakeLockLog$LogEntry;->set(JILcom/android/server/power/WakeLockLog$TagData;I)V
+HPLcom/android/server/power/WakeLockLog$LogEntry;->toStringInternal(Ljava/text/SimpleDateFormat;)Ljava/lang/String;
+HSPLcom/android/server/power/WakeLockLog$TagData;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/power/WakeLockLog$TagData;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;-><init>(Lcom/android/server/power/WakeLockLog$Injector;)V
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->findOrCreateTag(Ljava/lang/String;IZ)Lcom/android/server/power/WakeLockLog$TagData;
+HPLcom/android/server/power/WakeLockLog$TagDatabase;->getTag(I)Lcom/android/server/power/WakeLockLog$TagData;
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->getTagIndex(Lcom/android/server/power/WakeLockLog$TagData;)I
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->setCallback(Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;)V
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->setToIndex(Lcom/android/server/power/WakeLockLog$TagData;I)V
+HSPLcom/android/server/power/WakeLockLog$TagDatabase;->updateTagTime(Lcom/android/server/power/WakeLockLog$TagData;J)V
+HSPLcom/android/server/power/WakeLockLog$TheLog$1;-><init>(Lcom/android/server/power/WakeLockLog$TheLog;)V
+PLcom/android/server/power/WakeLockLog$TheLog$2;-><init>(Lcom/android/server/power/WakeLockLog$TheLog;Lcom/android/server/power/WakeLockLog$LogEntry;)V
+HPLcom/android/server/power/WakeLockLog$TheLog$2;->checkState()V
+HPLcom/android/server/power/WakeLockLog$TheLog$2;->hasNext()Z
+HPLcom/android/server/power/WakeLockLog$TheLog$2;->next()Lcom/android/server/power/WakeLockLog$LogEntry;
+HPLcom/android/server/power/WakeLockLog$TheLog$2;->next()Ljava/lang/Object;
+HSPLcom/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
+PLcom/android/server/power/WakeLockLog$TheLog;->access$300(Lcom/android/server/power/WakeLockLog$TheLog;)I
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$400(Lcom/android/server/power/WakeLockLog$TheLog;)J
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$500(Lcom/android/server/power/WakeLockLog$TheLog;)J
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$600(Lcom/android/server/power/WakeLockLog$TheLog;)I
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$700(Lcom/android/server/power/WakeLockLog$TheLog;IJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$800(Lcom/android/server/power/WakeLockLog$TheLog;)Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
+HPLcom/android/server/power/WakeLockLog$TheLog;->access$900(Lcom/android/server/power/WakeLockLog$TheLog;)[B
+HSPLcom/android/server/power/WakeLockLog$TheLog;->addEntry(Lcom/android/server/power/WakeLockLog$LogEntry;)V
+PLcom/android/server/power/WakeLockLog$TheLog;->getAllItems(Lcom/android/server/power/WakeLockLog$LogEntry;)Ljava/util/Iterator;
+HSPLcom/android/server/power/WakeLockLog$TheLog;->getAvailableSpace()I
+PLcom/android/server/power/WakeLockLog$TheLog;->getUsedBufferSize()I
+HSPLcom/android/server/power/WakeLockLog$TheLog;->isBufferEmpty()Z
+HSPLcom/android/server/power/WakeLockLog$TheLog;->makeSpace(I)Z
+HPLcom/android/server/power/WakeLockLog$TheLog;->readEntryAt(IJLcom/android/server/power/WakeLockLog$LogEntry;)Lcom/android/server/power/WakeLockLog$LogEntry;
+HPLcom/android/server/power/WakeLockLog$TheLog;->removeOldestItem()V
+HPLcom/android/server/power/WakeLockLog$TheLog;->removeTagIndex(I)V
+HSPLcom/android/server/power/WakeLockLog$TheLog;->writeBytesAt(I[BI)V
+PLcom/android/server/power/WakeLockLog$TheLog;->writeEntryAt(ILcom/android/server/power/WakeLockLog$LogEntry;J)V
+HSPLcom/android/server/power/WakeLockLog$WakeLockLogHandler;-><init>(Lcom/android/server/power/WakeLockLog;Landroid/os/Looper;)V
+HSPLcom/android/server/power/WakeLockLog$WakeLockLogHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/power/WakeLockLog;-><clinit>()V
+HSPLcom/android/server/power/WakeLockLog;-><init>()V
+HSPLcom/android/server/power/WakeLockLog;-><init>(Lcom/android/server/power/WakeLockLog$Injector;)V
+HSPLcom/android/server/power/WakeLockLog;->access$000()Ljava/text/SimpleDateFormat;
+HPLcom/android/server/power/WakeLockLog;->access$100()[Ljava/lang/String;
+HSPLcom/android/server/power/WakeLockLog;->access$1000(Lcom/android/server/power/WakeLockLog;ILjava/lang/String;IIJ)V
+PLcom/android/server/power/WakeLockLog;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/WakeLockLog;->dump(Ljava/io/PrintWriter;Z)V
+HSPLcom/android/server/power/WakeLockLog;->handleWakeLockEventInternal(ILjava/lang/String;IIJ)V
+HSPLcom/android/server/power/WakeLockLog;->onWakeLockAcquired(Ljava/lang/String;II)V
+HSPLcom/android/server/power/WakeLockLog;->onWakeLockEvent(ILjava/lang/String;II)V
+HSPLcom/android/server/power/WakeLockLog;->onWakeLockReleased(Ljava/lang/String;I)V
+HSPLcom/android/server/power/WakeLockLog;->tagNameReducer(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/power/WakeLockLog;->translateFlagsFromPowerManager(I)I
+HSPLcom/android/server/power/WirelessChargerDetector$1;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
+HPLcom/android/server/power/WirelessChargerDetector$1;->onSensorChanged(Landroid/hardware/SensorEvent;)V
+HSPLcom/android/server/power/WirelessChargerDetector$2;-><init>(Lcom/android/server/power/WirelessChargerDetector;)V
+PLcom/android/server/power/WirelessChargerDetector$2;->run()V
+HSPLcom/android/server/power/WirelessChargerDetector;-><clinit>()V
 HSPLcom/android/server/power/WirelessChargerDetector;-><init>(Landroid/hardware/SensorManager;Lcom/android/server/power/SuspendBlocker;Landroid/os/Handler;)V
-PLcom/android/server/power/WirelessChargerDetector;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/power/WirelessChargerDetector;->finishDetectionLocked()V
-HSPLcom/android/server/power/WirelessChargerDetector;->hasMoved(FFFFFF)Z
-HSPLcom/android/server/power/WirelessChargerDetector;->processSampleLocked(FFF)V
+PLcom/android/server/power/WirelessChargerDetector;->access$000(Lcom/android/server/power/WirelessChargerDetector;)Ljava/lang/Object;
+PLcom/android/server/power/WirelessChargerDetector;->access$100(Lcom/android/server/power/WirelessChargerDetector;FFF)V
+PLcom/android/server/power/WirelessChargerDetector;->access$200(Lcom/android/server/power/WirelessChargerDetector;)V
+PLcom/android/server/power/WirelessChargerDetector;->clearAtRestLocked()V
+HPLcom/android/server/power/WirelessChargerDetector;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/power/WirelessChargerDetector;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/power/WirelessChargerDetector;->finishDetectionLocked()V
+HPLcom/android/server/power/WirelessChargerDetector;->hasMoved(FFFFFF)Z
+HPLcom/android/server/power/WirelessChargerDetector;->processSampleLocked(FFF)V
 HSPLcom/android/server/power/WirelessChargerDetector;->startDetectionLocked()V
 HSPLcom/android/server/power/WirelessChargerDetector;->update(ZI)Z
-PLcom/android/server/power/WirelessChargerDetector;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$rfw31Sb8JX1OVD2rGHGtCXyfop8;->onAccessibilityStateChanged(Z)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$7a-wfvqpjaa389r6FVZsJX98cd8;-><init>(Lcom/android/server/power/batterysaver/BatterySaverPolicy;[Lcom/android/server/power/batterysaver/BatterySaverPolicy$BatterySaverPolicyListener;)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$7a-wfvqpjaa389r6FVZsJX98cd8;->run()V
+HSPLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$rfw31Sb8JX1OVD2rGHGtCXyfop8;-><init>(Lcom/android/server/power/batterysaver/BatterySaverPolicy;)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$rfw31Sb8JX1OVD2rGHGtCXyfop8;->onAccessibilityStateChanged(Z)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$66yeetZVz7IbzEr9gw2J77hoMVI;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;I)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$66yeetZVz7IbzEr9gw2J77hoMVI;->run()V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$KPPqeIS8QIZneCCBkN31dB4SR6U;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$KPPqeIS8QIZneCCBkN31dB4SR6U;->run()V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$QXh4KHnoFaNqEkr199qR1vIeCpo;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$QXh4KHnoFaNqEkr199qR1vIeCpo;->run()V
+HSPLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$SSfmWJrD4RBoVg8A8loZrS-jhAo;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)V
 PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$SSfmWJrD4RBoVg8A8loZrS-jhAo;->run()V
-PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$WGmfDqFGirqPfth6R7MtcSK-Gvs;->run()V
-HSPLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$fEidyt_9TXlXBpF6D2lhOOrfOC4;->run()V
-HSPLcom/android/server/power/batterysaver/-$$Lambda$FileUpdater$NUmipjKCJwbgmFbIcGS3uaz3QFk;->run()V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$fEidyt_9TXlXBpF6D2lhOOrfOC4;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)V
+PLcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$fEidyt_9TXlXBpF6D2lhOOrfOC4;->run()V
+HSPLcom/android/server/power/batterysaver/-$$Lambda$FileUpdater$NUmipjKCJwbgmFbIcGS3uaz3QFk;-><init>(Lcom/android/server/power/batterysaver/FileUpdater;)V
+HPLcom/android/server/power/batterysaver/-$$Lambda$FileUpdater$NUmipjKCJwbgmFbIcGS3uaz3QFk;->run()V
+HSPLcom/android/server/power/batterysaver/BatterySaverController$1;-><init>(Lcom/android/server/power/batterysaver/BatterySaverController;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverController$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/power/batterysaver/BatterySaverController$MyHandler;-><init>(Lcom/android/server/power/batterysaver/BatterySaverController;Landroid/os/Looper;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverController$MyHandler;->dispatchMessage(Landroid/os/Message;)V
-HSPLcom/android/server/power/batterysaver/BatterySaverController$MyHandler;->postStateChanged(ZI)V
+HPLcom/android/server/power/batterysaver/BatterySaverController$MyHandler;->postStateChanged(ZI)V
 HSPLcom/android/server/power/batterysaver/BatterySaverController$MyHandler;->postSystemReady()V
 HSPLcom/android/server/power/batterysaver/BatterySaverController;-><init>(Ljava/lang/Object;Landroid/content/Context;Landroid/os/Looper;Lcom/android/server/power/batterysaver/BatterySaverPolicy;Lcom/android/server/power/batterysaver/BatterySavingStats;)V
+PLcom/android/server/power/batterysaver/BatterySaverController;->access$000(Lcom/android/server/power/batterysaver/BatterySaverController;)Z
+HSPLcom/android/server/power/batterysaver/BatterySaverController;->access$100(Lcom/android/server/power/batterysaver/BatterySaverController;)V
+PLcom/android/server/power/batterysaver/BatterySaverController;->access$200(Lcom/android/server/power/batterysaver/BatterySaverController;)Lcom/android/server/power/batterysaver/BatterySaverController$MyHandler;
+HSPLcom/android/server/power/batterysaver/BatterySaverController;->access$300(Lcom/android/server/power/batterysaver/BatterySaverController;)Ljava/lang/Object;
+HSPLcom/android/server/power/batterysaver/BatterySaverController;->access$402(Lcom/android/server/power/batterysaver/BatterySaverController;Z)Z
+HSPLcom/android/server/power/batterysaver/BatterySaverController;->access$500(Lcom/android/server/power/batterysaver/BatterySaverController;)[Lcom/android/server/power/batterysaver/BatterySaverController$Plugin;
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->addListener(Landroid/os/PowerManagerInternal$LowPowerModeListener;)V
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->enableBatterySaver(ZI)V
+PLcom/android/server/power/batterysaver/BatterySaverController;->enableBatterySaver(ZI)V
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->getBatterySaverPolicy()Lcom/android/server/power/batterysaver/BatterySaverPolicy;
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->handleBatterySaverStateChanged(ZI)V
+HSPLcom/android/server/power/batterysaver/BatterySaverController;->getPowerManager()Landroid/os/PowerManager;
+HPLcom/android/server/power/batterysaver/BatterySaverController;->handleBatterySaverStateChanged(ZI)V
 PLcom/android/server/power/batterysaver/BatterySaverController;->isAdaptiveEnabled()Z
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->isEnabled()Z
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->isFullEnabled()Z
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->isInteractive()Z
+PLcom/android/server/power/batterysaver/BatterySaverController;->isFullEnabled()Z
+PLcom/android/server/power/batterysaver/BatterySaverController;->isInteractive()Z
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->isLaunchBoostDisabled()Z
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->isPolicyEnabled()Z
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->reasonToString(I)Ljava/lang/String;
+PLcom/android/server/power/batterysaver/BatterySaverController;->onBatterySaverPolicyChanged(Lcom/android/server/power/batterysaver/BatterySaverPolicy;)V
+PLcom/android/server/power/batterysaver/BatterySaverController;->reasonToString(I)Ljava/lang/String;
 PLcom/android/server/power/batterysaver/BatterySaverController;->resetAdaptivePolicyLocked(I)Z
-HSPLcom/android/server/power/batterysaver/BatterySaverController;->setAdaptivePolicyEnabledLocked(ZI)Z
+PLcom/android/server/power/batterysaver/BatterySaverController;->setAdaptivePolicyEnabledLocked(ZI)Z
+HPLcom/android/server/power/batterysaver/BatterySaverController;->setAdaptivePolicyLocked(Landroid/os/BatterySaverPolicyConfig;I)Z
+HPLcom/android/server/power/batterysaver/BatterySaverController;->setAdaptivePolicyLocked(Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;I)Z
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->systemReady()V
 HSPLcom/android/server/power/batterysaver/BatterySaverController;->updateBatterySavingStats()V
-HSPLcom/android/server/power/batterysaver/BatterySaverLocationPlugin;->onBatterySaverChanged(Lcom/android/server/power/batterysaver/BatterySaverController;)V
+PLcom/android/server/power/batterysaver/BatterySaverController;->updatePolicyLevelLocked()Z
+HSPLcom/android/server/power/batterysaver/BatterySaverLocationPlugin;-><init>(Landroid/content/Context;)V
+PLcom/android/server/power/batterysaver/BatterySaverLocationPlugin;->onBatterySaverChanged(Lcom/android/server/power/batterysaver/BatterySaverController;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverLocationPlugin;->onSystemReady(Lcom/android/server/power/batterysaver/BatterySaverController;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverLocationPlugin;->updateLocationState(Lcom/android/server/power/batterysaver/BatterySaverController;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;-><init>(FZZZZZZZZZZZZZZLandroid/util/ArrayMap;Landroid/util/ArrayMap;ZZI)V
 PLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;->fromConfig(Landroid/os/BatterySaverPolicyConfig;)Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;->fromSettings(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;)Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;
+HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;-><clinit>()V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;-><init>(Ljava/lang/Object;Landroid/content/Context;Lcom/android/server/power/batterysaver/BatterySavingStats;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->addListener(Lcom/android/server/power/batterysaver/BatterySaverPolicy$BatterySaverPolicyListener;)V
-PLcom/android/server/power/batterysaver/BatterySaverPolicy;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/batterysaver/BatterySaverPolicy;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/power/batterysaver/BatterySaverPolicy;->dumpMap(Ljava/io/PrintWriter;Ljava/lang/String;Landroid/util/ArrayMap;)V
-PLcom/android/server/power/batterysaver/BatterySaverPolicy;->dumpPolicyLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;)V
+HPLcom/android/server/power/batterysaver/BatterySaverPolicy;->dumpPolicyLocked(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getBatterySaverPolicy(I)Landroid/os/PowerSaveState;
+HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getCurrentPolicyLocked()Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getDeviceSpecificConfigResId()I
-HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getFileValues(Z)Landroid/util/ArrayMap;
+PLcom/android/server/power/batterysaver/BatterySaverPolicy;->getFileValues(Z)Landroid/util/ArrayMap;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getGlobalSetting(Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->getGpsMode()I
 PLcom/android/server/power/batterysaver/BatterySaverPolicy;->isLaunchBoostDisabled()Z
-HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->lambda$systemReady$0$BatterySaverPolicy(Z)V
+PLcom/android/server/power/batterysaver/BatterySaverPolicy;->lambda$refreshSettings$1$BatterySaverPolicy([Lcom/android/server/power/batterysaver/BatterySaverPolicy$BatterySaverPolicyListener;)V
+PLcom/android/server/power/batterysaver/BatterySaverPolicy;->lambda$systemReady$0$BatterySaverPolicy(Z)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->refreshSettings()V
 PLcom/android/server/power/batterysaver/BatterySaverPolicy;->resetAdaptivePolicyLocked()Z
 PLcom/android/server/power/batterysaver/BatterySaverPolicy;->setAdaptivePolicyLocked(Lcom/android/server/power/batterysaver/BatterySaverPolicy$Policy;)Z
-HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->setPolicyLevel(I)Z
-PLcom/android/server/power/batterysaver/BatterySaverPolicy;->shouldAdvertiseIsEnabled()Z
+PLcom/android/server/power/batterysaver/BatterySaverPolicy;->setPolicyLevel(I)Z
+HPLcom/android/server/power/batterysaver/BatterySaverPolicy;->shouldAdvertiseIsEnabled()Z
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->systemReady()V
-HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->toEventLogString()Ljava/lang/String;
+PLcom/android/server/power/batterysaver/BatterySaverPolicy;->toEventLogString()Ljava/lang/String;
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->updateConstantsLocked(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/server/power/batterysaver/BatterySaverPolicy;->updatePolicyDependenciesLocked()V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine$1;->onChange(Z)V
+HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine$1;-><init>(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;Landroid/os/Handler;)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine$1;->onChange(Z)V
 HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;-><init>(Ljava/lang/Object;Landroid/content/Context;Lcom/android/server/power/batterysaver/BatterySaverController;)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->access$000(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)Ljava/lang/Object;
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->access$100(Lcom/android/server/power/batterysaver/BatterySaverStateMachine;)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->buildNotification(Ljava/lang/String;IILjava/lang/String;)Landroid/app/Notification;
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->buildNotification(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/Notification;
 HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->doAutoBatterySaverLocked()V
-PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->dumpProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->enableBatterySaverLocked(ZZILjava/lang/String;)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->getGlobalSetting(Ljava/lang/String;I)I
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->enableBatterySaverLocked(ZZI)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->enableBatterySaverLocked(ZZILjava/lang/String;)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->ensureNotificationChannelExists(Landroid/app/NotificationManager;Ljava/lang/String;I)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->getGlobalSetting(Ljava/lang/String;I)I
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->hideDynamicModeNotification()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->hideNotification(I)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->hideStickyDisabledNotification()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->isAutomaticModeActiveLocked()Z
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->isDynamicModeActiveLocked()Z
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->isInAutomaticLowZoneLocked()Z
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->isInDynamicLowZoneLocked()Z
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$hideNotification$4$BatterySaverStateMachine(I)V
 PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$new$1$BatterySaverStateMachine()V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$onBootCompleted$0$BatterySaverStateMachine()V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->onBootCompleted()V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->putGlobalSetting(Ljava/lang/String;I)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->refreshSettingsLocked()V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->runOnBgThread(Ljava/lang/Runnable;)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->runOnBgThreadLazy(Ljava/lang/Runnable;I)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$onBootCompleted$0$BatterySaverStateMachine()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$triggerDynamicModeNotification$2$BatterySaverStateMachine()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->lambda$triggerStickyDisabledNotification$3$BatterySaverStateMachine()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->onBootCompleted()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->putGlobalSetting(Ljava/lang/String;I)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->refreshSettingsLocked()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->runOnBgThread(Ljava/lang/Runnable;)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->runOnBgThreadLazy(Ljava/lang/Runnable;I)V
+HPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setAdaptiveBatterySaverEnabled(Z)Z
+HPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setAdaptiveBatterySaverPolicy(Landroid/os/BatterySaverPolicyConfig;)Z
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setBatterySaverEnabledManually(Z)V
 HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setBatteryStatus(ZIZ)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setSettingsLocked(ZZIZIIZI)V
-HSPLcom/android/server/power/batterysaver/BatterySaverStateMachine;->updateStateLocked(ZZ)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setSettingsLocked(ZZIZIIZI)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->setStickyActive(Z)V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->triggerDynamicModeNotification()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->triggerStickyDisabledNotification()V
+PLcom/android/server/power/batterysaver/BatterySaverStateMachine;->updateStateLocked(ZZ)V
+HSPLcom/android/server/power/batterysaver/BatterySavingStats$BatterySaverState;->fromIndex(I)I
+HPLcom/android/server/power/batterysaver/BatterySavingStats$DozeState;->fromIndex(I)I
+HPLcom/android/server/power/batterysaver/BatterySavingStats$InteractiveState;->fromIndex(I)I
+HSPLcom/android/server/power/batterysaver/BatterySavingStats$Stat;-><init>()V
 PLcom/android/server/power/batterysaver/BatterySavingStats$Stat;->drainPerHour()D
 PLcom/android/server/power/batterysaver/BatterySavingStats$Stat;->totalMinutes()J
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;-><init>(Ljava/lang/Object;)V
-PLcom/android/server/power/batterysaver/BatterySavingStats;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/power/batterysaver/BatterySavingStats;->dumpLineLocked(Ljava/io/PrintWriter;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/power/batterysaver/BatterySavingStats;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/power/batterysaver/BatterySavingStats;->dumpLineLocked(Ljava/io/PrintWriter;Ljava/lang/String;ILjava/lang/String;ILjava/lang/String;)V
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->endLastStateLocked(JII)V
+HSPLcom/android/server/power/batterysaver/BatterySavingStats;->getBatteryManagerInternal()Landroid/os/BatteryManagerInternal;
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->getStat(I)Lcom/android/server/power/batterysaver/BatterySavingStats$Stat;
+PLcom/android/server/power/batterysaver/BatterySavingStats;->getStat(III)Lcom/android/server/power/batterysaver/BatterySavingStats$Stat;
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->injectBatteryLevel()I
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->injectBatteryPercent()I
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->injectCurrentTime()J
-HSPLcom/android/server/power/batterysaver/BatterySavingStats;->startCharging()V
+HPLcom/android/server/power/batterysaver/BatterySavingStats;->startCharging()V
+HSPLcom/android/server/power/batterysaver/BatterySavingStats;->startNewStateLocked(IJII)V
+HSPLcom/android/server/power/batterysaver/BatterySavingStats;->statesToIndex(III)I
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->transitionState(III)V
 HSPLcom/android/server/power/batterysaver/BatterySavingStats;->transitionStateLocked(I)V
 HSPLcom/android/server/power/batterysaver/CpuFrequencies;-><init>()V
 HSPLcom/android/server/power/batterysaver/CpuFrequencies;->addToSysFileMap(Ljava/util/Map;)V
 HSPLcom/android/server/power/batterysaver/CpuFrequencies;->parseString(Ljava/lang/String;)Lcom/android/server/power/batterysaver/CpuFrequencies;
 HSPLcom/android/server/power/batterysaver/CpuFrequencies;->toSysFileMap()Landroid/util/ArrayMap;
+HSPLcom/android/server/power/batterysaver/FileUpdater;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/power/batterysaver/FileUpdater;-><init>(Landroid/content/Context;Landroid/os/Looper;II)V
-HSPLcom/android/server/power/batterysaver/FileUpdater;->handleWriteOnHandler()V
+PLcom/android/server/power/batterysaver/FileUpdater;->cloneMap(Landroid/util/ArrayMap;)Landroid/util/ArrayMap;
+PLcom/android/server/power/batterysaver/FileUpdater;->doWtf(Ljava/lang/String;)V
+HPLcom/android/server/power/batterysaver/FileUpdater;->ensureDefaultLoaded(Ljava/lang/String;)Z
+PLcom/android/server/power/batterysaver/FileUpdater;->getKeysString(Ljava/util/Map;)Ljava/lang/String;
+HPLcom/android/server/power/batterysaver/FileUpdater;->handleWriteOnHandler()V
 HSPLcom/android/server/power/batterysaver/FileUpdater;->injectDefaultValuesFilename()Ljava/io/File;
-HSPLcom/android/server/power/batterysaver/FileUpdater;->lambda$new$0$FileUpdater()V
+PLcom/android/server/power/batterysaver/FileUpdater;->injectReadFromFileTrimmed(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/power/batterysaver/FileUpdater;->injectShouldSkipWrite()Z
+HPLcom/android/server/power/batterysaver/FileUpdater;->injectWriteToFile(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/power/batterysaver/FileUpdater;->injectWtf(Ljava/lang/String;Ljava/lang/Throwable;)V
+HPLcom/android/server/power/batterysaver/FileUpdater;->lambda$new$0$FileUpdater()V
 HSPLcom/android/server/power/batterysaver/FileUpdater;->loadDefaultValuesLocked()Z
-HSPLcom/android/server/power/batterysaver/FileUpdater;->restoreDefault()V
+HPLcom/android/server/power/batterysaver/FileUpdater;->restoreDefault()V
+PLcom/android/server/power/batterysaver/FileUpdater;->saveDefaultValuesLocked()V
+HPLcom/android/server/power/batterysaver/FileUpdater;->scheduleRetry()V
 HSPLcom/android/server/power/batterysaver/FileUpdater;->systemReady(Z)V
-HSPLcom/android/server/power/batterysaver/FileUpdater;->writeFiles(Landroid/util/ArrayMap;)V
+HPLcom/android/server/power/batterysaver/FileUpdater;->writeFiles(Landroid/util/ArrayMap;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$1cbVOJkW_ULFS1xH-T-tbALCzHI;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$1cbVOJkW_ULFS1xH-T-tbALCzHI;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$1cbVOJkW_ULFS1xH-T-tbALCzHI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$FH95Crnc6zH421SxRw9RxPyl0YY;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$FH95Crnc6zH421SxRw9RxPyl0YY;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$FH95Crnc6zH421SxRw9RxPyl0YY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$KGsYx3sHW6vGymod4UmBTazYSks;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$KGsYx3sHW6vGymod4UmBTazYSks;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$KGsYx3sHW6vGymod4UmBTazYSks;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$L2EQSyIHled1ZVO5GCaBXmvtCQQ;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$L2EQSyIHled1ZVO5GCaBXmvtCQQ;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$L2EQSyIHled1ZVO5GCaBXmvtCQQ;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$aHc-cJYzTXxafcxxvfW2janFHIc;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$aHc-cJYzTXxafcxxvfW2janFHIc;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$aHc-cJYzTXxafcxxvfW2janFHIc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$jrFOjxtIoMNm8S0KNTqIDHuv4oY;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$jrFOjxtIoMNm8S0KNTqIDHuv4oY;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$jrFOjxtIoMNm8S0KNTqIDHuv4oY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$pgSurbN2geCgHp9vfTAIFm5XvgQ;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$pgSurbN2geCgHp9vfTAIFm5XvgQ;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$pgSurbN2geCgHp9vfTAIFm5XvgQ;->accept(Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$ru7USNI_O2DIDwflMPlEsqA_IY4;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$ru7USNI_O2DIDwflMPlEsqA_IY4;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$ru7USNI_O2DIDwflMPlEsqA_IY4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$tI07K2u4Z5L72sd1hvSEunGclrg;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$tI07K2u4Z5L72sd1hvSEunGclrg;-><init>()V
+PLcom/android/server/print/-$$Lambda$RemotePrintService$tI07K2u4Z5L72sd1hvSEunGclrg;->accept(Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$LdWYUAKz4cbWqoxOD4oZ_ZslKdg;-><clinit>()V
 PLcom/android/server/print/-$$Lambda$UserState$LdWYUAKz4cbWqoxOD4oZ_ZslKdg;-><init>()V
 PLcom/android/server/print/-$$Lambda$UserState$LdWYUAKz4cbWqoxOD4oZ_ZslKdg;->accept(Ljava/lang/Object;)V
-PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hadPrintService(Lcom/android/server/print/UserState;Ljava/lang/String;)Z
-PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hasPrintService(Ljava/lang/String;)Z
-PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-PLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageRemoved(Ljava/lang/String;I)V
-HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->run()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$CjemUQP8s7wG-dq-pIggj9Oze6I;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$CjemUQP8s7wG-dq-pIggj9Oze6I;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$CjemUQP8s7wG-dq-pIggj9Oze6I;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$MT8AtQ4cegoEAucY7Fm8C8TCrjo;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$MT8AtQ4cegoEAucY7Fm8C8TCrjo;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$MT8AtQ4cegoEAucY7Fm8C8TCrjo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$Ou3LUs53hzSrIma0FHPj2g3gePc;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$Ou3LUs53hzSrIma0FHPj2g3gePc;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$Ou3LUs53hzSrIma0FHPj2g3gePc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TAWPnRTK22Veu2-mmKNSJCvnBoU;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TAWPnRTK22Veu2-mmKNSJCvnBoU;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TAWPnRTK22Veu2-mmKNSJCvnBoU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TNeLGO1RKf0CucB-BMQ_M0UyoRs;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TNeLGO1RKf0CucB-BMQ_M0UyoRs;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$TNeLGO1RKf0CucB-BMQ_M0UyoRs;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$_XymASnzhemmGwK4Nu5RUIT0ahk;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$_XymASnzhemmGwK4Nu5RUIT0ahk;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$_XymASnzhemmGwK4Nu5RUIT0ahk;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$iQrjLK8luujjjp1uW3VGCsAZK_g;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$iQrjLK8luujjjp1uW3VGCsAZK_g;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$iQrjLK8luujjjp1uW3VGCsAZK_g;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$lfSsgTy_1NLRRkjOH_yL2Tk_x2w;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$lfSsgTy_1NLRRkjOH_yL2Tk_x2w;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$PrinterDiscoverySessionMediator$lfSsgTy_1NLRRkjOH_yL2Tk_x2w;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$d-WQxYwbHYb6N0le5ohwQsWVdjw;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$d-WQxYwbHYb6N0le5ohwQsWVdjw;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$d-WQxYwbHYb6N0le5ohwQsWVdjw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/print/-$$Lambda$UserState$f3loorfBpq9Tu3Vl5vt4Ul321ok;-><clinit>()V
+PLcom/android/server/print/-$$Lambda$UserState$f3loorfBpq9Tu3Vl5vt4Ul321ok;-><init>()V
+PLcom/android/server/print/-$$Lambda$UserState$f3loorfBpq9Tu3Vl5vt4Ul321ok;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl$1;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;Landroid/os/Handler;Landroid/net/Uri;)V
+HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)V
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hadPrintService(Lcom/android/server/print/UserState;Ljava/lang/String;)Z
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->hasPrintService(Ljava/lang/String;)Z
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl$2;->onPackageRemoved(Ljava/lang/String;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl$3;->run()V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl$4;-><init>(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl$4;->run()V
 HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl;-><init>(Lcom/android/server/print/PrintManagerService;Landroid/content/Context;)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$000(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$100(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$200(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Ljava/lang/Object;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$300(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Landroid/util/SparseArray;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$400(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Landroid/content/Context;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$500(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;)Landroid/os/UserManager;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->access$600(Lcom/android/server/print/PrintManagerService$PrintManagerImpl;IZZ)Lcom/android/server/print/UserState;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->addPrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;II)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->addPrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->addPrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->createPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->destroyPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;I)V
 PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/util/ArrayList;)V
 PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getOrCreateUserStateLocked(IZZ)Lcom/android/server/print/UserState;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getCurrentUserId()I
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getOrCreateUserStateLocked(IZ)Lcom/android/server/print/UserState;
+HPLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getOrCreateUserStateLocked(IZZ)Lcom/android/server/print/UserState;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getPrintJobInfos(II)Ljava/util/List;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getPrintServiceRecommendations(I)Ljava/util/List;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->getPrintServices(II)Ljava/util/List;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->handleUserStopped(I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->handleUserUnlocked(I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->isPrintingEnabled()Z
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->print(Ljava/lang/String;Landroid/print/IPrintDocumentAdapter;Landroid/print/PrintAttributes;Ljava/lang/String;II)Landroid/os/Bundle;
+HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl;->registerBroadcastReceivers()V
+HSPLcom/android/server/print/PrintManagerService$PrintManagerImpl;->registerContentObservers()V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->removePrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->removePrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->removePrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->resolveCallingAppEnforcingPermissions(I)I
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->resolveCallingPackageNameEnforcingSecurity(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->resolveCallingProfileParentLocked(I)I
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->resolveCallingUserEnforcingPermissions(I)I
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->startPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->startPrinterStateTracking(Landroid/print/PrinterId;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->stopPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;I)V
+PLcom/android/server/print/PrintManagerService$PrintManagerImpl;->stopPrinterStateTracking(Landroid/print/PrinterId;I)V
 HSPLcom/android/server/print/PrintManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/print/PrintManagerService;->onStart()V
-HSPLcom/android/server/print/PrintManagerService;->onUnlockUser(I)V
+PLcom/android/server/print/PrintManagerService;->onStopUser(I)V
+PLcom/android/server/print/PrintManagerService;->onUnlockUser(I)V
+PLcom/android/server/print/RemotePrintService$4;-><init>(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService$4;->run()V
+PLcom/android/server/print/RemotePrintService$6;-><init>(Lcom/android/server/print/RemotePrintService;Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService$6;->run()V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;-><init>(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->getPrintJobInfo(Landroid/print/PrintJobId;)Landroid/print/PrintJobInfo;
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->onPrintersAdded(Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->onPrintersRemoved(Landroid/content/pm/ParceledListSlice;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->setPrintJobState(Landroid/print/PrintJobId;ILjava/lang/String;)Z
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->throwIfPrinterIdTampered(Landroid/content/ComponentName;Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->throwIfPrinterIdsForPrinterInfoTampered(Landroid/content/ComponentName;Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->throwIfPrinterIdsTampered(Landroid/content/ComponentName;Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService$RemotePrintServiceClient;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V
+PLcom/android/server/print/RemotePrintService$RemoteServiceConneciton;-><init>(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService$RemoteServiceConneciton;-><init>(Lcom/android/server/print/RemotePrintService;Lcom/android/server/print/RemotePrintService$1;)V
+PLcom/android/server/print/RemotePrintService$RemoteServiceConneciton;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/print/RemotePrintService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;ILcom/android/server/print/RemotePrintSpooler;Lcom/android/server/print/RemotePrintService$PrintServiceCallbacks;)V
+PLcom/android/server/print/RemotePrintService;->access$1100(Lcom/android/server/print/RemotePrintService;)Z
+PLcom/android/server/print/RemotePrintService;->access$1200(Lcom/android/server/print/RemotePrintService;)Z
+PLcom/android/server/print/RemotePrintService;->access$1202(Lcom/android/server/print/RemotePrintService;Z)Z
+PLcom/android/server/print/RemotePrintService;->access$1500(Lcom/android/server/print/RemotePrintService;)Landroid/printservice/IPrintService;
+PLcom/android/server/print/RemotePrintService;->access$1502(Lcom/android/server/print/RemotePrintService;Landroid/printservice/IPrintService;)Landroid/printservice/IPrintService;
+PLcom/android/server/print/RemotePrintService;->access$1700(Lcom/android/server/print/RemotePrintService;)Lcom/android/server/print/RemotePrintService$RemotePrintServiceClient;
+PLcom/android/server/print/RemotePrintService;->access$1800(Lcom/android/server/print/RemotePrintService;)Z
+PLcom/android/server/print/RemotePrintService;->access$1802(Lcom/android/server/print/RemotePrintService;Z)Z
+PLcom/android/server/print/RemotePrintService;->access$1900(Lcom/android/server/print/RemotePrintService;)Z
+PLcom/android/server/print/RemotePrintService;->access$2100(Lcom/android/server/print/RemotePrintService;)Ljava/lang/Object;
+PLcom/android/server/print/RemotePrintService;->access$2300(Lcom/android/server/print/RemotePrintService;)Ljava/util/List;
+PLcom/android/server/print/RemotePrintService;->access$2600(Lcom/android/server/print/RemotePrintService;)Landroid/content/ComponentName;
+PLcom/android/server/print/RemotePrintService;->access$2700(Lcom/android/server/print/RemotePrintService;)Lcom/android/server/print/RemotePrintSpooler;
+PLcom/android/server/print/RemotePrintService;->access$2800(Lcom/android/server/print/RemotePrintService;)Lcom/android/server/print/RemotePrintService$PrintServiceCallbacks;
+PLcom/android/server/print/RemotePrintService;->access$400(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->access$600(Lcom/android/server/print/RemotePrintService;Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService;->createPrinterDiscoverySession()V
+PLcom/android/server/print/RemotePrintService;->destroy()V
+PLcom/android/server/print/RemotePrintService;->destroyPrinterDiscoverySession()V
 PLcom/android/server/print/RemotePrintService;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
+PLcom/android/server/print/RemotePrintService;->ensureBound()V
+PLcom/android/server/print/RemotePrintService;->ensureUnbound()V
+PLcom/android/server/print/RemotePrintService;->getComponentName()Landroid/content/ComponentName;
+PLcom/android/server/print/RemotePrintService;->handleCreatePrinterDiscoverySession()V
+PLcom/android/server/print/RemotePrintService;->handleDestroy()V
+PLcom/android/server/print/RemotePrintService;->handleDestroyPrinterDiscoverySession()V
+PLcom/android/server/print/RemotePrintService;->handleOnAllPrintJobsHandled()V
+PLcom/android/server/print/RemotePrintService;->handleOnPrintJobQueued(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintService;->handleStartPrinterDiscovery(Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService;->handleStartPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->handleStopPrinterDiscovery()V
+PLcom/android/server/print/RemotePrintService;->handleStopPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->isBound()Z
+PLcom/android/server/print/RemotePrintService;->lambda$1cbVOJkW_ULFS1xH-T-tbALCzHI(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->lambda$FH95Crnc6zH421SxRw9RxPyl0YY(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->lambda$KGsYx3sHW6vGymod4UmBTazYSks(Lcom/android/server/print/RemotePrintService;Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintService;->lambda$L2EQSyIHled1ZVO5GCaBXmvtCQQ(Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->lambda$aHc-cJYzTXxafcxxvfW2janFHIc(Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->lambda$jrFOjxtIoMNm8S0KNTqIDHuv4oY(Lcom/android/server/print/RemotePrintService;Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService;->lambda$pgSurbN2geCgHp9vfTAIFm5XvgQ(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->lambda$ru7USNI_O2DIDwflMPlEsqA_IY4(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->lambda$tI07K2u4Z5L72sd1hvSEunGclrg(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/RemotePrintService;->onAllPrintJobsHandled()V
+PLcom/android/server/print/RemotePrintService;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintService;->startPrinterDiscovery(Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintService;->startPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->stopPrinterDiscovery()V
+PLcom/android/server/print/RemotePrintService;->stopPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/RemotePrintService;->stopTrackingAllPrinters()V
+PLcom/android/server/print/RemotePrintServiceRecommendationService$Connection$1;-><init>(Lcom/android/server/print/RemotePrintServiceRecommendationService$Connection;)V
+PLcom/android/server/print/RemotePrintServiceRecommendationService$Connection$1;->onRecommendationsUpdated(Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintServiceRecommendationService$Connection;-><init>(Lcom/android/server/print/RemotePrintServiceRecommendationService;Lcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks;)V
+PLcom/android/server/print/RemotePrintServiceRecommendationService$Connection;->access$300(Lcom/android/server/print/RemotePrintServiceRecommendationService$Connection;)Lcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks;
+PLcom/android/server/print/RemotePrintServiceRecommendationService$Connection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/print/RemotePrintServiceRecommendationService;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks;)V
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->access$000(Lcom/android/server/print/RemotePrintServiceRecommendationService;)Ljava/lang/Object;
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->access$100(Lcom/android/server/print/RemotePrintServiceRecommendationService;)Landroid/printservice/recommendation/IRecommendationService;
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->access$102(Lcom/android/server/print/RemotePrintServiceRecommendationService;Landroid/printservice/recommendation/IRecommendationService;)Landroid/printservice/recommendation/IRecommendationService;
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->access$200(Lcom/android/server/print/RemotePrintServiceRecommendationService;)Z
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->close()V
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->finalize()V
+PLcom/android/server/print/RemotePrintServiceRecommendationService;->getServiceIntent(Landroid/os/UserHandle;)Landroid/content/Intent;
+PLcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$BasePrintSpoolerServiceCallbacks;-><init>(Lcom/android/server/print/RemotePrintSpooler$1;)V
+PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller$1;->customPrinterIconCacheCleared(I)V
+PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;->access$1100(Lcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;Ljava/lang/Object;I)V
+PLcom/android/server/print/RemotePrintSpooler$ClearCustomPrinterIconCacheCaller;->clearCustomPrinterIconCache(Landroid/print/IPrintSpooler;)Ljava/lang/Void;
+PLcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$GetCustomPrinterIconCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller$1;->onGetPrintJobInfoResult(Landroid/print/PrintJobInfo;I)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;->access$700(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;Ljava/lang/Object;I)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfoCaller;->getPrintJobInfo(Landroid/print/IPrintSpooler;Landroid/print/PrintJobId;I)Landroid/print/PrintJobInfo;
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller$1;->onGetPrintJobInfosResult(Ljava/util/List;I)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;->access$600(Lcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;Ljava/lang/Object;I)V
+PLcom/android/server/print/RemotePrintSpooler$GetPrintJobInfosCaller;->getPrintJobInfos(Landroid/print/IPrintSpooler;Landroid/content/ComponentName;II)Ljava/util/List;
+PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;-><init>(Lcom/android/server/print/RemotePrintSpooler;)V
+PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;-><init>(Lcom/android/server/print/RemotePrintSpooler;Lcom/android/server/print/RemotePrintSpooler$1;)V
 PLcom/android/server/print/RemotePrintSpooler$MyServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$OnCustomPrinterIconLoadedCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;-><init>(Lcom/android/server/print/RemotePrintSpooler;)V
+PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V
 PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->onAllPrintJobsHandled()V
-HSPLcom/android/server/print/RemotePrintSpooler;-><init>(Landroid/content/Context;IZLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;)V
-HSPLcom/android/server/print/RemotePrintSpooler;->bindLocked()V
+PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller$1;->onSetPrintJobStateResult(ZI)V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;->access$800(Lcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;Ljava/lang/Object;I)V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobStateCaller;->setPrintJobState(Landroid/print/IPrintSpooler;Landroid/print/PrintJobId;ILjava/lang/String;)Z
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller$1;-><init>(Lcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller;)V
+PLcom/android/server/print/RemotePrintSpooler$SetPrintJobTagCaller;-><init>()V
+PLcom/android/server/print/RemotePrintSpooler;-><clinit>()V
+PLcom/android/server/print/RemotePrintSpooler;-><init>(Landroid/content/Context;IZLcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;)V
+PLcom/android/server/print/RemotePrintSpooler;->access$100(Lcom/android/server/print/RemotePrintSpooler;)Ljava/lang/Object;
+PLcom/android/server/print/RemotePrintSpooler;->access$1300(Lcom/android/server/print/RemotePrintSpooler;)Lcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;
+PLcom/android/server/print/RemotePrintSpooler;->access$1400(Lcom/android/server/print/RemotePrintSpooler;)V
+PLcom/android/server/print/RemotePrintSpooler;->access$1500(Lcom/android/server/print/RemotePrintSpooler;Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintSpooler;->access$202(Lcom/android/server/print/RemotePrintSpooler;Landroid/print/IPrintSpooler;)Landroid/print/IPrintSpooler;
+PLcom/android/server/print/RemotePrintSpooler;->access$300(Lcom/android/server/print/RemotePrintSpooler;)V
+PLcom/android/server/print/RemotePrintSpooler;->bindLocked()V
 PLcom/android/server/print/RemotePrintSpooler;->clearClientLocked()V
+PLcom/android/server/print/RemotePrintSpooler;->clearCustomPrinterIconCache()V
+PLcom/android/server/print/RemotePrintSpooler;->destroy()V
 PLcom/android/server/print/RemotePrintSpooler;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
-HSPLcom/android/server/print/RemotePrintSpooler;->getRemoteInstanceLazy()Landroid/print/IPrintSpooler;
-PLcom/android/server/print/RemotePrintSpooler;->increasePriority()V
+PLcom/android/server/print/RemotePrintSpooler;->getPrintJobInfo(Landroid/print/PrintJobId;I)Landroid/print/PrintJobInfo;
+PLcom/android/server/print/RemotePrintSpooler;->getPrintJobInfos(Landroid/content/ComponentName;II)Ljava/util/List;
+PLcom/android/server/print/RemotePrintSpooler;->getRemoteInstanceLazy()Landroid/print/IPrintSpooler;
+HPLcom/android/server/print/RemotePrintSpooler;->increasePriority()V
 PLcom/android/server/print/RemotePrintSpooler;->onAllPrintJobsHandled()V
-HSPLcom/android/server/print/RemotePrintSpooler;->pruneApprovedPrintServices(Ljava/util/List;)V
+PLcom/android/server/print/RemotePrintSpooler;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/RemotePrintSpooler;->pruneApprovedPrintServices(Ljava/util/List;)V
 PLcom/android/server/print/RemotePrintSpooler;->removeObsoletePrintJobs()V
 PLcom/android/server/print/RemotePrintSpooler;->setClientLocked()V
-HSPLcom/android/server/print/RemotePrintSpooler;->throwIfDestroyedLocked()V
+PLcom/android/server/print/RemotePrintSpooler;->setPrintJobState(Landroid/print/PrintJobId;ILjava/lang/String;)Z
+PLcom/android/server/print/RemotePrintSpooler;->throwIfCalledOnMainThread()V
+PLcom/android/server/print/RemotePrintSpooler;->throwIfDestroyedLocked()V
 PLcom/android/server/print/RemotePrintSpooler;->unbindLocked()V
+PLcom/android/server/print/RemotePrintSpooler;->writePrintJobData(Landroid/os/ParcelFileDescriptor;Landroid/print/PrintJobId;)V
+PLcom/android/server/print/UserState$1;-><init>(Lcom/android/server/print/UserState;)V
+PLcom/android/server/print/UserState$1;->onDestroyed()V
+PLcom/android/server/print/UserState$2;-><init>(Lcom/android/server/print/UserState;Landroid/print/IPrintJobStateChangeListener;I)V
+PLcom/android/server/print/UserState$3;-><init>(Lcom/android/server/print/UserState;Landroid/print/IPrintServicesChangeListener;)V
+PLcom/android/server/print/UserState$4;-><init>(Lcom/android/server/print/UserState;Landroid/printservice/recommendation/IRecommendationsChangeListener;)V
+PLcom/android/server/print/UserState$ListenerRecord;-><init>(Lcom/android/server/print/UserState;Landroid/os/IInterface;)V
+PLcom/android/server/print/UserState$ListenerRecord;->destroy()V
+PLcom/android/server/print/UserState$PrintJobForAppCache$1;-><init>(Lcom/android/server/print/UserState$PrintJobForAppCache;Landroid/os/IBinder;I)V
+PLcom/android/server/print/UserState$PrintJobForAppCache$1;->binderDied()V
+PLcom/android/server/print/UserState$PrintJobForAppCache;-><init>(Lcom/android/server/print/UserState;)V
+PLcom/android/server/print/UserState$PrintJobForAppCache;-><init>(Lcom/android/server/print/UserState;Lcom/android/server/print/UserState$1;)V
+PLcom/android/server/print/UserState$PrintJobForAppCache;->access$1000(Lcom/android/server/print/UserState$PrintJobForAppCache;)Landroid/util/SparseArray;
 PLcom/android/server/print/UserState$PrintJobForAppCache;->dumpLocked(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
-HSPLcom/android/server/print/UserState;-><init>(Landroid/content/Context;ILjava/lang/Object;Z)V
+PLcom/android/server/print/UserState$PrintJobForAppCache;->getPrintJobs(I)Ljava/util/List;
+PLcom/android/server/print/UserState$PrintJobForAppCache;->onPrintJobCreated(Landroid/os/IBinder;ILandroid/print/PrintJobInfo;)Z
+PLcom/android/server/print/UserState$PrintJobForAppCache;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/UserState$PrintJobStateChangeListenerRecord;-><init>(Lcom/android/server/print/UserState;Landroid/print/IPrintJobStateChangeListener;I)V
+PLcom/android/server/print/UserState$PrintJobStateChangeListenerRecord;->destroy()V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator$1;-><init>(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;-><init>(Lcom/android/server/print/UserState;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->addObserverLocked(Landroid/print/IPrinterDiscoveryObserver;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->destroyLocked()V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchCreatePrinterDiscoverySession(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchDestroyPrinterDiscoverySession(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchPrintersAdded(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchPrintersRemoved(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchStartPrinterDiscovery(Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleDispatchStopPrinterDiscovery(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handlePrintersAdded(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handlePrintersRemoved(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleStartPrinterStateTracking(Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->handleStopPrinterStateTracking(Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$CjemUQP8s7wG-dq-pIggj9Oze6I(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$MT8AtQ4cegoEAucY7Fm8C8TCrjo(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$Ou3LUs53hzSrIma0FHPj2g3gePc(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$TAWPnRTK22Veu2-mmKNSJCvnBoU(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$TNeLGO1RKf0CucB-BMQ_M0UyoRs(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$_XymASnzhemmGwK4Nu5RUIT0ahk(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$iQrjLK8luujjjp1uW3VGCsAZK_g(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Lcom/android/server/print/RemotePrintService;Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->lambda$lfSsgTy_1NLRRkjOH_yL2Tk_x2w(Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->onPrintersAddedLocked(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->onPrintersRemovedLocked(Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->removeObserverLocked(Landroid/print/IPrinterDiscoveryObserver;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->startPrinterDiscoveryLocked(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->startPrinterStateTrackingLocked(Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->stopPrinterDiscoveryLocked(Landroid/print/IPrinterDiscoveryObserver;)V
+PLcom/android/server/print/UserState$PrinterDiscoverySessionMediator;->stopPrinterStateTrackingLocked(Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState;-><init>(Landroid/content/Context;ILjava/lang/Object;Z)V
+PLcom/android/server/print/UserState;->access$102(Lcom/android/server/print/UserState;Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;)Lcom/android/server/print/UserState$PrinterDiscoverySessionMediator;
+PLcom/android/server/print/UserState;->access$200(Lcom/android/server/print/UserState;)Ljava/lang/Object;
+PLcom/android/server/print/UserState;->access$600(Lcom/android/server/print/UserState;)Landroid/util/ArrayMap;
+PLcom/android/server/print/UserState;->addPrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;I)V
+PLcom/android/server/print/UserState;->addPrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;)V
+PLcom/android/server/print/UserState;->addPrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;)V
+PLcom/android/server/print/UserState;->addServiceLocked(Lcom/android/server/print/RemotePrintService;)V
+PLcom/android/server/print/UserState;->createPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;)V
+PLcom/android/server/print/UserState;->destroyLocked()V
+PLcom/android/server/print/UserState;->destroyPrinterDiscoverySession(Landroid/print/IPrinterDiscoveryObserver;)V
 PLcom/android/server/print/UserState;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
-HSPLcom/android/server/print/UserState;->getInstalledComponents()Ljava/util/ArrayList;
-PLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List;
+PLcom/android/server/print/UserState;->getInstalledComponents()Ljava/util/ArrayList;
+PLcom/android/server/print/UserState;->getPrintJobInfos(I)Ljava/util/List;
+PLcom/android/server/print/UserState;->getPrintServiceRecommendations()Ljava/util/List;
+HPLcom/android/server/print/UserState;->getPrintServices(I)Ljava/util/List;
+PLcom/android/server/print/UserState;->handleDispatchPrintJobStateChanged(Landroid/print/PrintJobId;Ljava/util/function/IntSupplier;)V
+PLcom/android/server/print/UserState;->handleDispatchPrintServiceRecommendationsUpdated(Ljava/util/List;)V
 PLcom/android/server/print/UserState;->handleDispatchPrintServicesChanged()V
+HPLcom/android/server/print/UserState;->increasePriority()V
+PLcom/android/server/print/UserState;->lambda$LdWYUAKz4cbWqoxOD4oZ_ZslKdg(Lcom/android/server/print/UserState;)V
+PLcom/android/server/print/UserState;->lambda$d-WQxYwbHYb6N0le5ohwQsWVdjw(Lcom/android/server/print/UserState;Landroid/print/PrintJobId;Ljava/util/function/IntSupplier;)V
+PLcom/android/server/print/UserState;->lambda$f3loorfBpq9Tu3Vl5vt4Ul321ok(Lcom/android/server/print/UserState;Ljava/util/List;)V
+PLcom/android/server/print/UserState;->onAllPrintJobsForServiceHandled(Landroid/content/ComponentName;)V
 PLcom/android/server/print/UserState;->onConfigurationChanged()V
 PLcom/android/server/print/UserState;->onConfigurationChangedLocked()V
-HSPLcom/android/server/print/UserState;->prunePrintServices()V
-HSPLcom/android/server/print/UserState;->readInstalledPrintServicesLocked()V
-HSPLcom/android/server/print/UserState;->readPrintServicesFromSettingLocked(Ljava/lang/String;Ljava/util/Set;)V
+PLcom/android/server/print/UserState;->onPrintJobQueued(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/UserState;->onPrintJobStateChanged(Landroid/print/PrintJobInfo;)V
+PLcom/android/server/print/UserState;->onPrintServiceRecommendationsUpdated(Ljava/util/List;)V
+PLcom/android/server/print/UserState;->onPrintServicesChanged()V
+PLcom/android/server/print/UserState;->onPrintersAdded(Ljava/util/List;)V
+PLcom/android/server/print/UserState;->onPrintersRemoved(Ljava/util/List;)V
+PLcom/android/server/print/UserState;->print(Ljava/lang/String;Landroid/print/IPrintDocumentAdapter;Landroid/print/PrintAttributes;Ljava/lang/String;I)Landroid/os/Bundle;
+PLcom/android/server/print/UserState;->prunePrintServices()V
+PLcom/android/server/print/UserState;->readConfigurationLocked()V
+PLcom/android/server/print/UserState;->readDisabledPrintServicesLocked()V
+PLcom/android/server/print/UserState;->readInstalledPrintServicesLocked()V
+PLcom/android/server/print/UserState;->readPrintServicesFromSettingLocked(Ljava/lang/String;Ljava/util/Set;)V
+PLcom/android/server/print/UserState;->removeObsoletePrintJobs()V
+PLcom/android/server/print/UserState;->removePrintJobStateChangeListener(Landroid/print/IPrintJobStateChangeListener;)V
+PLcom/android/server/print/UserState;->removePrintServiceRecommendationsChangeListener(Landroid/printservice/recommendation/IRecommendationsChangeListener;)V
+PLcom/android/server/print/UserState;->removePrintServicesChangeListener(Landroid/print/IPrintServicesChangeListener;)V
+PLcom/android/server/print/UserState;->startPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;Ljava/util/List;)V
+PLcom/android/server/print/UserState;->startPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState;->stopPrinterDiscovery(Landroid/print/IPrinterDiscoveryObserver;)V
+PLcom/android/server/print/UserState;->stopPrinterStateTracking(Landroid/print/PrinterId;)V
+PLcom/android/server/print/UserState;->throwIfDestroyedLocked()V
 PLcom/android/server/print/UserState;->updateIfNeededLocked()V
-HSPLcom/android/server/print/UserState;->upgradePersistentStateIfNeeded()V
-HSPLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
+PLcom/android/server/print/UserState;->upgradePersistentStateIfNeeded()V
+PLcom/android/server/protolog/-$$Lambda$PfxMAktVLMbQMPp_FRkrQxibSKE;-><clinit>()V
+PLcom/android/server/protolog/-$$Lambda$PfxMAktVLMbQMPp_FRkrQxibSKE;-><init>()V
+PLcom/android/server/protolog/-$$Lambda$PfxMAktVLMbQMPp_FRkrQxibSKE;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$G6yKiHAdF7lI4aTCybTMCes5zyI;-><clinit>()V
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$G6yKiHAdF7lI4aTCybTMCes5zyI;-><init>()V
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$G6yKiHAdF7lI4aTCybTMCes5zyI;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$W1-9aFv3AkmuxF_FKhP3IYl2IMA;-><clinit>()V
+HSPLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$W1-9aFv3AkmuxF_FKhP3IYl2IMA;-><init>()V
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$dhk0iBKAK3ywNSTqD4XUL3Oq0hM;-><clinit>()V
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$dhk0iBKAK3ywNSTqD4XUL3Oq0hM;-><init>()V
+PLcom/android/server/protolog/-$$Lambda$ProtoLogImpl$dhk0iBKAK3ywNSTqD4XUL3Oq0hM;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/protolog/-$$Lambda$QtQzaT3jZ03CdC3RGYitrH7aUYo;-><clinit>()V
+HSPLcom/android/server/protolog/-$$Lambda$QtQzaT3jZ03CdC3RGYitrH7aUYo;-><init>()V
+HSPLcom/android/server/protolog/ProtoLog$Cache;-><clinit>()V
+HSPLcom/android/server/protolog/ProtoLog$Cache;->update()V
+HSPLcom/android/server/protolog/ProtoLogImpl$1;-><clinit>()V
+HSPLcom/android/server/protolog/ProtoLogImpl$LogLevel;-><clinit>()V
+HSPLcom/android/server/protolog/ProtoLogImpl$LogLevel;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/protolog/ProtoLogImpl$LogLevel;->values()[Lcom/android/server/protolog/ProtoLogImpl$LogLevel;
+HSPLcom/android/server/protolog/ProtoLogImpl;-><clinit>()V
+HSPLcom/android/server/protolog/ProtoLogImpl;-><init>(Ljava/io/File;ILcom/android/server/protolog/ProtoLogViewerConfigReader;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->addLogGroupEnum([Lcom/android/server/protolog/common/IProtoLogGroup;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->getSingleInstance()Lcom/android/server/protolog/ProtoLogImpl;
+PLcom/android/server/protolog/ProtoLogImpl;->getStatus()Ljava/lang/String;
+HSPLcom/android/server/protolog/ProtoLogImpl;->i(Lcom/android/server/protolog/common/IProtoLogGroup;IILjava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->isEnabled(Lcom/android/server/protolog/common/IProtoLogGroup;)Z
+HSPLcom/android/server/protolog/ProtoLogImpl;->isProtoEnabled()Z
+PLcom/android/server/protolog/ProtoLogImpl;->lambda$getStatus$3(Lcom/android/server/protolog/common/IProtoLogGroup;)Z
+PLcom/android/server/protolog/ProtoLogImpl;->lambda$getStatus$4(Lcom/android/server/protolog/common/IProtoLogGroup;)Z
+HSPLcom/android/server/protolog/ProtoLogImpl;->log(Lcom/android/server/protolog/ProtoLogImpl$LogLevel;Lcom/android/server/protolog/common/IProtoLogGroup;IILjava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->logToLogcat(Ljava/lang/String;Lcom/android/server/protolog/ProtoLogImpl$LogLevel;ILjava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->logToProto(II[Ljava/lang/Object;)V
+HSPLcom/android/server/protolog/ProtoLogImpl;->passToLogcat(Ljava/lang/String;Lcom/android/server/protolog/ProtoLogImpl$LogLevel;Ljava/lang/String;)V
+PLcom/android/server/protolog/ProtoLogImpl;->w(Lcom/android/server/protolog/common/IProtoLogGroup;IILjava/lang/String;[Ljava/lang/Object;)V
+HSPLcom/android/server/protolog/ProtoLogViewerConfigReader;-><init>()V
+PLcom/android/server/protolog/ProtoLogViewerConfigReader;->knownViewerStringsNumber()I
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService$Injector;->getContext()Landroid/content/Context;
+HSPLcom/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;-><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$1;)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;-><init>(Lcom/android/server/recoverysystem/RecoverySystemService$Injector;)V
+PLcom/android/server/recoverysystem/RecoverySystemService;->onPreparedForReboot(Z)V
+HSPLcom/android/server/recoverysystem/RecoverySystemService;->onSystemServicesReady()V
+PLcom/android/server/recoverysystem/RecoverySystemService;->rebootWithLskf(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/recoverysystem/RecoverySystemService;->requestLskf(Ljava/lang/String;Landroid/content/IntentSender;)Z
+PLcom/android/server/recoverysystem/RecoverySystemService;->sendPreparedForRebootIntentIfNeeded()V
+HSPLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;-><init>(Lcom/android/server/restrictions/RestrictionsManagerService;Landroid/content/Context;)V
+HPLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->getApplicationRestrictions(Ljava/lang/String;)Landroid/os/Bundle;
 PLcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;->hasRestrictionsProvider()Z
 HSPLcom/android/server/restrictions/RestrictionsManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/restrictions/RestrictionsManagerService;->access$000(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
+HSPLcom/android/server/restrictions/RestrictionsManagerService;->access$100(Lcom/android/server/restrictions/RestrictionsManagerService;Ljava/lang/String;)Landroid/os/IBinder;
 HSPLcom/android/server/restrictions/RestrictionsManagerService;->onStart()V
-HSPLcom/android/server/role/-$$Lambda$RoleManagerService$AXCXpHePiVLmuonnO-Vwoq0TpKQ;->accept(Ljava/lang/Object;)V
-PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultHomeProvider$XNZIxv1rt576FrXWCq2-pm3TJPg;->onResult(Landroid/os/Bundle;)V
-HSPLcom/android/server/role/-$$Lambda$RoleManagerService$fFhedpUuSpSjKJZ9TlWFGJ-_xeo;-><init>()V
-HSPLcom/android/server/role/-$$Lambda$RoleManagerService$fFhedpUuSpSjKJZ9TlWFGJ-_xeo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/role/-$$Lambda$RoleManagerService$rhPnAyxD4OKoR2nprS9wiayfZjw;->acceptOrThrow(Ljava/lang/Object;)V
-HSPLcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;-><init>()V
-HSPLcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/role/RoleManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/role/-$$Lambda$RoleManagerService$4FcQsmMH6Dhstzx5gl80tO2TkTw;-><init>(Lcom/android/server/role/RoleUserState;Ljava/lang/String;Lcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$4FcQsmMH6Dhstzx5gl80tO2TkTw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$X3gMGYlhUgmYMuqj0K5NlCALn5E;-><init>(Lcom/android/internal/infra/AndroidFuture;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$X3gMGYlhUgmYMuqj0K5NlCALn5E;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$cU2Hhx52nmVnJXJvHuAnRTzxST0;-><init>(Ljava/lang/String;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$cU2Hhx52nmVnJXJvHuAnRTzxST0;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultHomeProvider$9eeqZaqhD2FohE8PZOcBaWBSZu4;-><init>(Ljava/lang/String;Ljava/util/function/Consumer;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$DefaultHomeProvider$9eeqZaqhD2FohE8PZOcBaWBSZu4;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$TCTA4I2bhEypguZihxs4ezif6t0;-><clinit>()V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$TCTA4I2bhEypguZihxs4ezif6t0;-><init>()V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$TCTA4I2bhEypguZihxs4ezif6t0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/role/-$$Lambda$RoleManagerService$p0uu3WH3gz96-kAWnyu6IUHMtCg;-><init>(Lcom/android/server/role/RoleManagerService;I)V
+HPLcom/android/server/role/-$$Lambda$RoleManagerService$p0uu3WH3gz96-kAWnyu6IUHMtCg;->run()V
+HSPLcom/android/server/role/-$$Lambda$RoleManagerService$wh1KtBLaCUo52_0EzVI0n0nL1ng;-><init>(Ljava/io/ByteArrayOutputStream;Landroid/content/pm/PackageManagerInternal;I)V
+HSPLcom/android/server/role/-$$Lambda$RoleManagerService$wh1KtBLaCUo52_0EzVI0n0nL1ng;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;-><clinit>()V
+PLcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;-><init>()V
+HPLcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/role/RoleManagerInternal;-><init>()V
+HSPLcom/android/server/role/RoleManagerService$1;-><init>(Lcom/android/server/role/RoleManagerService;)V
+PLcom/android/server/role/RoleManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/role/RoleManagerService$2;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HPLcom/android/server/role/RoleManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HSPLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;-><init>(Lcom/android/server/role/RoleManagerService;Lcom/android/server/role/RoleManagerService$1;)V
 HSPLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;->getDefaultBrowser(I)Ljava/lang/String;
+PLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;->lambda$setDefaultBrowser$0(Lcom/android/internal/infra/AndroidFuture;Landroid/os/Bundle;)V
+PLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;->lambda$setDefaultBrowserAsync$1(Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;->setDefaultBrowser(Ljava/lang/String;I)Z
+PLcom/android/server/role/RoleManagerService$DefaultBrowserProvider;->setDefaultBrowserAsync(Ljava/lang/String;I)V
+HSPLcom/android/server/role/RoleManagerService$DefaultDialerProvider;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HSPLcom/android/server/role/RoleManagerService$DefaultDialerProvider;-><init>(Lcom/android/server/role/RoleManagerService;Lcom/android/server/role/RoleManagerService$1;)V
+PLcom/android/server/role/RoleManagerService$DefaultDialerProvider;->getDefaultDialer(I)Ljava/lang/String;
+HSPLcom/android/server/role/RoleManagerService$DefaultHomeProvider;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HSPLcom/android/server/role/RoleManagerService$DefaultHomeProvider;-><init>(Lcom/android/server/role/RoleManagerService;Lcom/android/server/role/RoleManagerService$1;)V
 HSPLcom/android/server/role/RoleManagerService$DefaultHomeProvider;->getDefaultHome(I)Ljava/lang/String;
-PLcom/android/server/role/RoleManagerService$DefaultHomeProvider;->setDefaultHomeAsync(Ljava/lang/String;I)V
+PLcom/android/server/role/RoleManagerService$DefaultHomeProvider;->lambda$setDefaultHomeAsync$0(Ljava/lang/String;Ljava/util/function/Consumer;Landroid/os/Bundle;)V
+PLcom/android/server/role/RoleManagerService$DefaultHomeProvider;->setDefaultHomeAsync(Ljava/lang/String;ILjava/util/function/Consumer;)V
+HSPLcom/android/server/role/RoleManagerService$Internal;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HSPLcom/android/server/role/RoleManagerService$Internal;-><init>(Lcom/android/server/role/RoleManagerService;Lcom/android/server/role/RoleManagerService$1;)V
+HSPLcom/android/server/role/RoleManagerService$Stub;-><init>(Lcom/android/server/role/RoleManagerService;)V
+HSPLcom/android/server/role/RoleManagerService$Stub;-><init>(Lcom/android/server/role/RoleManagerService;Lcom/android/server/role/RoleManagerService$1;)V
 HSPLcom/android/server/role/RoleManagerService$Stub;->addOnRoleHoldersChangedListenerAsUser(Landroid/app/role/IOnRoleHoldersChangedListener;I)V
-HSPLcom/android/server/role/RoleManagerService$Stub;->addRoleHolderFromController(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/role/RoleManagerService$Stub;->addRoleHolderAsUser(Ljava/lang/String;Ljava/lang/String;IILandroid/os/RemoteCallback;)V
+PLcom/android/server/role/RoleManagerService$Stub;->addRoleHolderFromController(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/role/RoleManagerService$Stub;->clearRoleHoldersAsUser(Ljava/lang/String;IILandroid/os/RemoteCallback;)V
 PLcom/android/server/role/RoleManagerService$Stub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/role/RoleManagerService$Stub;->getDefaultSmsPackage(I)Ljava/lang/String;
-HSPLcom/android/server/role/RoleManagerService$Stub;->getHeldRolesFromController(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/role/RoleManagerService$Stub;->getHeldRolesFromController(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/role/RoleManagerService$Stub;->getRoleHoldersAsUser(Ljava/lang/String;I)Ljava/util/List;
+HSPLcom/android/server/role/RoleManagerService$Stub;->handleIncomingUser(IZLjava/lang/String;)I
 HSPLcom/android/server/role/RoleManagerService$Stub;->isRoleAvailable(Ljava/lang/String;)Z
-HSPLcom/android/server/role/RoleManagerService$Stub;->removeRoleHolderFromController(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/role/RoleManagerService$Stub;->setRoleNamesFromController(Ljava/util/List;)V
+HPLcom/android/server/role/RoleManagerService$Stub;->isRoleHeld(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/role/RoleManagerService$Stub;->removeOnRoleHoldersChangedListenerAsUser(Landroid/app/role/IOnRoleHoldersChangedListener;I)V
+PLcom/android/server/role/RoleManagerService$Stub;->removeRoleHolderFromController(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/role/RoleManagerService$Stub;->setRoleNamesFromController(Ljava/util/List;)V
+HSPLcom/android/server/role/RoleManagerService;-><clinit>()V
 HSPLcom/android/server/role/RoleManagerService;-><init>(Landroid/content/Context;Lcom/android/server/role/RoleManagerService$RoleHoldersResolver;)V
+PLcom/android/server/role/RoleManagerService;->access$1000()Ljava/lang/String;
+PLcom/android/server/role/RoleManagerService;->access$1100(Lcom/android/server/role/RoleManagerService;I)Landroid/app/role/RoleControllerManager;
+HSPLcom/android/server/role/RoleManagerService;->access$1200(Lcom/android/server/role/RoleManagerService;I)Landroid/os/RemoteCallbackList;
+PLcom/android/server/role/RoleManagerService;->access$1300(Lcom/android/server/role/RoleManagerService;I)Landroid/os/RemoteCallbackList;
+PLcom/android/server/role/RoleManagerService;->access$400(Lcom/android/server/role/RoleManagerService;I)V
+PLcom/android/server/role/RoleManagerService;->access$600(Lcom/android/server/role/RoleManagerService;I)V
+HSPLcom/android/server/role/RoleManagerService;->access$700(Lcom/android/server/role/RoleManagerService;I)Lcom/android/server/role/RoleUserState;
+PLcom/android/server/role/RoleManagerService;->access$800(Lcom/android/server/role/RoleManagerService;)Landroid/app/AppOpsManager;
+HSPLcom/android/server/role/RoleManagerService;->access$900(Lcom/android/server/role/RoleManagerService;)Landroid/os/UserManagerInternal;
 HSPLcom/android/server/role/RoleManagerService;->computeComponentStateHash(I)Ljava/lang/String;
-HSPLcom/android/server/role/RoleManagerService;->getListeners(I)Landroid/os/RemoteCallbackList;
-HSPLcom/android/server/role/RoleManagerService;->getOrCreateControllerService(I)Landroid/app/role/RoleControllerManager;
+PLcom/android/server/role/RoleManagerService;->getListeners(I)Landroid/os/RemoteCallbackList;
+HPLcom/android/server/role/RoleManagerService;->getOrCreateController(I)Landroid/app/role/RoleControllerManager;
 HSPLcom/android/server/role/RoleManagerService;->getOrCreateListeners(I)Landroid/os/RemoteCallbackList;
 HSPLcom/android/server/role/RoleManagerService;->getOrCreateUserState(I)Lcom/android/server/role/RoleUserState;
-HSPLcom/android/server/role/RoleManagerService;->lambda$computeComponentStateHash$1(Ljava/io/ByteArrayOutputStream;Landroid/content/pm/PackageManagerInternal;ILandroid/content/pm/PackageParser$Package;)V
-HSPLcom/android/server/role/RoleManagerService;->migrateRoleIfNecessary(Ljava/lang/String;I)V
-HSPLcom/android/server/role/RoleManagerService;->notifyRoleHoldersChangedForListeners(Landroid/os/RemoteCallbackList;Ljava/lang/String;I)V
-HSPLcom/android/server/role/RoleManagerService;->onRoleHoldersChanged(Ljava/lang/String;I)V
+PLcom/android/server/role/RoleManagerService;->lambda$TCTA4I2bhEypguZihxs4ezif6t0(Lcom/android/server/role/RoleManagerService;Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/role/RoleManagerService;->lambda$computeComponentStateHash$2(Ljava/io/ByteArrayOutputStream;Landroid/content/pm/PackageManagerInternal;ILandroid/content/pm/parsing/AndroidPackage;)V
+PLcom/android/server/role/RoleManagerService;->lambda$maybeGrantDefaultRolesAsync$0$RoleManagerService(I)V
+HPLcom/android/server/role/RoleManagerService;->lambda$maybeGrantDefaultRolesInternal$1(Lcom/android/server/role/RoleUserState;Ljava/lang/String;Lcom/android/internal/infra/AndroidFuture;Ljava/lang/Boolean;)V
+HPLcom/android/server/role/RoleManagerService;->maybeGrantDefaultRolesAsync(I)V
+HSPLcom/android/server/role/RoleManagerService;->maybeGrantDefaultRolesInternal(I)Lcom/android/internal/infra/AndroidFuture;
+HSPLcom/android/server/role/RoleManagerService;->maybeGrantDefaultRolesSync(I)V
+HPLcom/android/server/role/RoleManagerService;->maybeMigrateRole(Ljava/lang/String;I)V
+HPLcom/android/server/role/RoleManagerService;->notifyRoleHoldersChanged(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/role/RoleManagerService;->notifyRoleHoldersChangedForListeners(Landroid/os/RemoteCallbackList;Ljava/lang/String;I)V
+PLcom/android/server/role/RoleManagerService;->onRemoveUser(I)V
+HPLcom/android/server/role/RoleManagerService;->onRoleHoldersChanged(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/role/RoleManagerService;->onStart()V
 HSPLcom/android/server/role/RoleManagerService;->onStartUser(I)V
-HSPLcom/android/server/role/RoleManagerService;->performInitialGrantsIfNecessary(I)V
+HSPLcom/android/server/role/RoleManagerService;->registerUserRemovedReceiver()V
+HSPLcom/android/server/role/RoleUserState;-><clinit>()V
 HSPLcom/android/server/role/RoleUserState;-><init>(ILcom/android/server/role/RoleUserState$Callback;)V
-HSPLcom/android/server/role/RoleUserState;->addRoleHolder(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/role/RoleUserState;->addRoleName(Ljava/lang/String;)Z
-PLcom/android/server/role/RoleUserState;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
-HSPLcom/android/server/role/RoleUserState;->getHeldRoles(Ljava/lang/String;)Ljava/util/List;
+PLcom/android/server/role/RoleUserState;->addRoleHolder(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/role/RoleUserState;->addRoleName(Ljava/lang/String;)Z
+PLcom/android/server/role/RoleUserState;->destroy()V
+HPLcom/android/server/role/RoleUserState;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+HSPLcom/android/server/role/RoleUserState;->getFile(I)Ljava/io/File;
+HPLcom/android/server/role/RoleUserState;->getHeldRoles(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/role/RoleUserState;->getPackagesHash()Ljava/lang/String;
 HSPLcom/android/server/role/RoleUserState;->getRoleHolders(Ljava/lang/String;)Landroid/util/ArraySet;
 HSPLcom/android/server/role/RoleUserState;->isRoleAvailable(Ljava/lang/String;)Z
+PLcom/android/server/role/RoleUserState;->lambda$e8W_Zaq_FyocW_DX1qcbN0ld0co(Lcom/android/server/role/RoleUserState;)V
 HSPLcom/android/server/role/RoleUserState;->parseRoleHoldersLocked(Lorg/xmlpull/v1/XmlPullParser;)Landroid/util/ArraySet;
 HSPLcom/android/server/role/RoleUserState;->parseRolesLocked(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/role/RoleUserState;->parseXmlLocked(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/role/RoleUserState;->readFile()V
-HSPLcom/android/server/role/RoleUserState;->removeRoleHolder(Ljava/lang/String;Ljava/lang/String;)Z
-HSPLcom/android/server/role/RoleUserState;->scheduleWriteFileLocked()V
-HSPLcom/android/server/role/RoleUserState;->serializeRoles(Lorg/xmlpull/v1/XmlSerializer;ILjava/lang/String;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/role/RoleUserState;->setPackagesHash(Ljava/lang/String;)V
-HSPLcom/android/server/role/RoleUserState;->setRoleNames(Ljava/util/List;)V
-HSPLcom/android/server/role/RoleUserState;->snapshotRolesLocked()Landroid/util/ArrayMap;
-HSPLcom/android/server/role/RoleUserState;->throwIfDestroyedLocked()V
-HSPLcom/android/server/role/RoleUserState;->writeFile()V
-HSPLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$2_NDf9EpLcTKkJVpkadZhudKips;->run()V
-HSPLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$5VimxC3UlEV_IzyoBdYlrATzYd8;->run()V
-HSPLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$7mIH_4Cm4A-tqsIceQEQSUp2ycU;->run()V
-HSPLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$dWP3a0DA6Sn9vs01tikxWWbZIZs;->run()V
-PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$mJNIXm_c6MQdH60jiRiYOGk2vQs;->run()V
-HSPLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$pS5jbfXLgvSVqxzjSkJaMnydaOY;->run()V
-HSPLcom/android/server/rollback/AppDataRollbackHelper;->commitPendingBackupAndRestoreForUser(ILjava/util/List;)Ljava/util/Set;
-HSPLcom/android/server/rollback/AppDataRollbackHelper;->computePendingBackups(ILjava/util/Map;Ljava/util/List;)Ljava/util/List;
-HSPLcom/android/server/rollback/AppDataRollbackHelper;->computePendingRestores(ILjava/util/Map;Ljava/util/List;)Ljava/util/List;
-HSPLcom/android/server/rollback/AppDataRollbackHelper;->destroyAppDataSnapshot(ILandroid/content/rollback/PackageRollbackInfo;I)V
-HSPLcom/android/server/rollback/RollbackData;->isStaged()Z
-HSPLcom/android/server/rollback/RollbackData;->rollbackStateFromString(Ljava/lang/String;)I
-HSPLcom/android/server/rollback/RollbackData;->rollbackStateToString(I)Ljava/lang/String;
+PLcom/android/server/role/RoleUserState;->readLegacyFileLocked()V
+PLcom/android/server/role/RoleUserState;->removeRoleHolder(Ljava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/role/RoleUserState;->scheduleWriteFileLocked()V
+HPLcom/android/server/role/RoleUserState;->serializeRoleHolders(Lorg/xmlpull/v1/XmlSerializer;Landroid/util/ArraySet;)V
+HPLcom/android/server/role/RoleUserState;->serializeRoles(Lorg/xmlpull/v1/XmlSerializer;ILjava/lang/String;Landroid/util/ArrayMap;)V
+HPLcom/android/server/role/RoleUserState;->setPackagesHash(Ljava/lang/String;)V
+HPLcom/android/server/role/RoleUserState;->setRoleNames(Ljava/util/List;)V
+HPLcom/android/server/role/RoleUserState;->snapshotRolesLocked()Landroid/util/ArrayMap;
+HPLcom/android/server/role/RoleUserState;->writeFile()V
+PLcom/android/server/rollback/-$$Lambda$Rollback$EvT1BaUrjWsJaVTizSu77MCfRBs;-><init>(Lcom/android/server/rollback/Rollback;Landroid/content/Context;Landroid/content/IntentSender;Ljava/util/List;)V
+PLcom/android/server/rollback/-$$Lambda$Rollback$EvT1BaUrjWsJaVTizSu77MCfRBs;->accept(Ljava/lang/Object;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$1$QPIiLceItKZOKeHshAhrcNkM3m8;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl$1;ILjava/io/File;II)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$1$QPIiLceItKZOKeHshAhrcNkM3m8;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$58BbNzpzWX_z-GzhKXpdGPwKcIU;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$58BbNzpzWX_z-GzhKXpdGPwKcIU;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$5VimxC3UlEV_IzyoBdYlrATzYd8;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$5VimxC3UlEV_IzyoBdYlrATzYd8;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$9jRyv0ATJ7l2lc6xAd3tmkVmx7g;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$9jRyv0ATJ7l2lc6xAd3tmkVmx7g;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Be1hJgd8PbSLFX_uKif2yCGhtKo;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;ILjava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Be1hJgd8PbSLFX_uKif2yCGhtKo;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$EebLQVAY8_XZdz3mG6qTmlJupzA;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/String;[IILjava/lang/String;I)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$EebLQVAY8_XZdz3mG6qTmlJupzA;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Qz1-TYGVImHAonyKgh8LjWx_ub0;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;ILjava/util/concurrent/LinkedBlockingQueue;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Qz1-TYGVImHAonyKgh8LjWx_ub0;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$UZ6heBvW792l5X1X86VJbao61T4;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$UZ6heBvW792l5X1X86VJbao61T4;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$bhmKnyhoneBLazCFC2rxxtRypFI;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;ILandroid/content/pm/ParceledListSlice;Ljava/lang/String;Landroid/content/IntentSender;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$bhmKnyhoneBLazCFC2rxxtRypFI;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$pjR6RZoFE_-Nf6Dqbrc5-qATSwY;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;II)V
+PLcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$pjR6RZoFE_-Nf6Dqbrc5-qATSwY;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$IamLzWoD8UIw0nYBYf04E_MUT8U;-><init>(Lcom/android/server/rollback/RollbackPackageHealthObserver;Landroid/content/rollback/RollbackInfo;Landroid/content/rollback/RollbackManager;Landroid/content/pm/VersionedPackage;ILjava/lang/String;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$IamLzWoD8UIw0nYBYf04E_MUT8U;->accept(Ljava/lang/Object;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$_CTueeoAyZZbpbCYMvJ3rbtIF94;-><init>(Landroid/content/rollback/RollbackManager;Landroid/content/rollback/RollbackInfo;Landroid/content/pm/VersionedPackage;Lcom/android/server/rollback/LocalIntentReceiver;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$_CTueeoAyZZbpbCYMvJ3rbtIF94;->run()V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$pi_OhdsKzJHdXoHHtYauaWDdX5A;-><init>(Lcom/android/server/rollback/RollbackPackageHealthObserver;)V
+PLcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$pi_OhdsKzJHdXoHHtYauaWDdX5A;->run()V
+HSPLcom/android/server/rollback/AppDataRollbackHelper;-><init>(Lcom/android/server/pm/Installer;)V
+PLcom/android/server/rollback/AppDataRollbackHelper;->commitPendingBackupAndRestoreForUser(ILcom/android/server/rollback/Rollback;)Z
+PLcom/android/server/rollback/AppDataRollbackHelper;->isUserCredentialLocked(I)Z
+PLcom/android/server/rollback/AppDataRollbackHelper;->restoreAppData(ILandroid/content/rollback/PackageRollbackInfo;IILjava/lang/String;)Z
+PLcom/android/server/rollback/AppDataRollbackHelper;->snapshotAppData(ILandroid/content/rollback/PackageRollbackInfo;[I)V
+PLcom/android/server/rollback/LocalIntentReceiver$1;-><init>(Lcom/android/server/rollback/LocalIntentReceiver;)V
+PLcom/android/server/rollback/LocalIntentReceiver$1;->send(ILandroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Landroid/content/IIntentReceiver;Ljava/lang/String;Landroid/os/Bundle;)V
+PLcom/android/server/rollback/LocalIntentReceiver;-><init>(Ljava/util/function/Consumer;)V
+PLcom/android/server/rollback/LocalIntentReceiver;->getIntentSender()Landroid/content/IntentSender;
+PLcom/android/server/rollback/Rollback;-><init>(ILjava/io/File;IILjava/lang/String;[I)V
+HSPLcom/android/server/rollback/Rollback;-><init>(Landroid/content/rollback/RollbackInfo;Ljava/io/File;Ljava/time/Instant;IIIZILjava/lang/String;)V
+PLcom/android/server/rollback/Rollback;->commit(Landroid/content/Context;Ljava/util/List;Ljava/lang/String;Landroid/content/IntentSender;)V
+PLcom/android/server/rollback/Rollback;->commitPendingBackupAndRestoreForUser(ILcom/android/server/rollback/AppDataRollbackHelper;)V
+PLcom/android/server/rollback/Rollback;->delete(Lcom/android/server/rollback/AppDataRollbackHelper;)V
+PLcom/android/server/rollback/Rollback;->enableForPackage(Ljava/lang/String;JJZLjava/lang/String;[Ljava/lang/String;I)Z
+PLcom/android/server/rollback/Rollback;->enableForPackageInApex(Ljava/lang/String;JI)Z
+PLcom/android/server/rollback/Rollback;->getApexPackageNames()Ljava/util/List;
+PLcom/android/server/rollback/Rollback;->getApkSessionId()I
+PLcom/android/server/rollback/Rollback;->getBackupDir()Ljava/io/File;
+PLcom/android/server/rollback/Rollback;->getInstallerPackageName()Ljava/lang/String;
+PLcom/android/server/rollback/Rollback;->getPackageCount(I)I
+PLcom/android/server/rollback/Rollback;->getPackageNames()Ljava/util/List;
+PLcom/android/server/rollback/Rollback;->getPackageSessionIdCount()I
+PLcom/android/server/rollback/Rollback;->getStagedSessionId()I
+PLcom/android/server/rollback/Rollback;->getStateAsString()Ljava/lang/String;
+PLcom/android/server/rollback/Rollback;->getTimestamp()Ljava/time/Instant;
+PLcom/android/server/rollback/Rollback;->getUserId()I
+HPLcom/android/server/rollback/Rollback;->includesPackageWithDifferentVersion(Ljava/lang/String;J)Z
+PLcom/android/server/rollback/Rollback;->isAvailable()Z
+PLcom/android/server/rollback/Rollback;->isCommitted()Z
+PLcom/android/server/rollback/Rollback;->isDeleted()Z
+PLcom/android/server/rollback/Rollback;->isEnabling()Z
+PLcom/android/server/rollback/Rollback;->isRestoreUserDataInProgress()Z
+PLcom/android/server/rollback/Rollback;->isStaged()Z
+PLcom/android/server/rollback/Rollback;->lambda$commit$0$Rollback(Landroid/content/Context;Landroid/content/IntentSender;Ljava/util/List;Landroid/content/Intent;)V
+PLcom/android/server/rollback/Rollback;->makeAvailable()V
+PLcom/android/server/rollback/Rollback;->restoreUserDataForPackageIfInProgress(Ljava/lang/String;[IILjava/lang/String;Lcom/android/server/rollback/AppDataRollbackHelper;)Z
+HSPLcom/android/server/rollback/Rollback;->rollbackStateFromString(Ljava/lang/String;)I
+PLcom/android/server/rollback/Rollback;->rollbackStateToString(I)Ljava/lang/String;
+PLcom/android/server/rollback/Rollback;->saveRollback()V
+PLcom/android/server/rollback/Rollback;->setApkSessionId(I)V
+PLcom/android/server/rollback/Rollback;->setRestoreUserDataInProgress(Z)V
+PLcom/android/server/rollback/Rollback;->setTimestamp(Ljava/time/Instant;)V
+PLcom/android/server/rollback/Rollback;->snapshotUserData(Ljava/lang/String;[ILcom/android/server/rollback/AppDataRollbackHelper;)V
 HSPLcom/android/server/rollback/RollbackManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/rollback/RollbackManagerService;->onBootPhase(I)V
 HSPLcom/android/server/rollback/RollbackManagerService;->onStart()V
-HSPLcom/android/server/rollback/RollbackManagerService;->onUnlockUser(I)V
+PLcom/android/server/rollback/RollbackManagerService;->onUnlockUser(I)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$1;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$1;->lambda$onReceive$0$RollbackManagerServiceImpl$1(ILjava/io/File;II)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$2;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$3;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$4;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+HPLcom/android/server/rollback/RollbackManagerServiceImpl$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$5;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$NewRollback;-><init>(Lcom/android/server/rollback/Rollback;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;-><init>(Lcom/android/server/rollback/RollbackManagerServiceImpl;Lcom/android/server/rollback/RollbackManagerServiceImpl$1;)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onActiveChanged(IZ)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onBadgingChanged(I)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onCreated(I)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onFinished(IZ)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onProgressChanged(IF)V
+HPLcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;->onProgressChanged(IF)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;-><clinit>()V
 HSPLcom/android/server/rollback/RollbackManagerServiceImpl;-><init>(Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->completeEnableRollback(IZ)Lcom/android/server/rollback/RollbackData;
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->deleteRollback(Lcom/android/server/rollback/RollbackData;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$000(Lcom/android/server/rollback/RollbackManagerServiceImpl;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$100(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Landroid/os/Handler;
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1000()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1000(Lcom/android/server/rollback/RollbackManagerServiceImpl;)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1000(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/String;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1002(Lcom/android/server/rollback/RollbackManagerServiceImpl;J)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1100()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1100(Lcom/android/server/rollback/RollbackManagerServiceImpl;)J
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1100(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1102(Lcom/android/server/rollback/RollbackManagerServiceImpl;J)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1200()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1200(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1300(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1400(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1500(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$1600(Lcom/android/server/rollback/RollbackManagerServiceImpl;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$200(Lcom/android/server/rollback/RollbackManagerServiceImpl;ILjava/io/File;II)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$300()Z
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->access$300(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$400(Lcom/android/server/rollback/RollbackManagerServiceImpl;)Ljava/lang/Object;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$600(Lcom/android/server/rollback/RollbackManagerServiceImpl;Landroid/os/UserHandle;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$700(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/String;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$800(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/String;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->access$900(Lcom/android/server/rollback/RollbackManagerServiceImpl;)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->access$900(Lcom/android/server/rollback/RollbackManagerServiceImpl;Ljava/lang/String;)V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->access$902(Lcom/android/server/rollback/RollbackManagerServiceImpl;J)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->allocateRollbackIdLocked()I
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->calculateRelativeBootTime()J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->commitRollback(ILandroid/content/pm/ParceledListSlice;Ljava/lang/String;Landroid/content/IntentSender;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->commitRollbackInternal(ILjava/util/List;Ljava/lang/String;Landroid/content/IntentSender;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->completeEnableRollback(Lcom/android/server/rollback/RollbackManagerServiceImpl$NewRollback;)Lcom/android/server/rollback/Rollback;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->createNewRollbackLocked(Landroid/content/pm/PackageInstaller$SessionInfo;)Lcom/android/server/rollback/RollbackManagerServiceImpl$NewRollback;
 PLcom/android/server/rollback/RollbackManagerServiceImpl;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->enableRollback(ILjava/io/File;II)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->enableRollbackAllowed(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->enableRollbackForPackageSession(Lcom/android/server/rollback/Rollback;Landroid/content/pm/PackageInstaller$SessionInfo;)Z
 PLcom/android/server/rollback/RollbackManagerServiceImpl;->enforceManageRollbacks(Ljava/lang/String;)V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->ensureRollbackDataLoaded()V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->expireRollbackForPackage(Ljava/lang/String;)V
+HPLcom/android/server/rollback/RollbackManagerServiceImpl;->expireRollbackForPackage(Ljava/lang/String;)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl;->getAvailableRollbacks()Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->getInstalledPackageVersion(Ljava/lang/String;)Landroid/content/pm/VersionedPackage;
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$new$0$RollbackManagerServiceImpl()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$6$RollbackManagerServiceImpl()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$7$RollbackManagerServiceImpl()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$5$RollbackManagerServiceImpl(I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$restoreUserData$9$RollbackManagerServiceImpl(Ljava/lang/String;[IIJLjava/lang/String;I)V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$scheduleExpiration$8$RollbackManagerServiceImpl()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->loadAllRollbackDataLocked()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->onBootCompleted()V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->getContextAsUser(Landroid/os/UserHandle;)Landroid/content/Context;
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->getHandler()Landroid/os/Handler;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getInstalledPackageVersion(Ljava/lang/String;)J
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getNewRollbackForPackageSessionLocked(I)Lcom/android/server/rollback/Rollback;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getNewRollbackForPackageSessionLocked(I)Lcom/android/server/rollback/RollbackManagerServiceImpl$NewRollback;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getPackageInfo(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getRecentlyCommittedRollbacks()Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->getRollbackForId(I)Lcom/android/server/rollback/Rollback;
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->isModule(Ljava/lang/String;)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->isRollbackWhitelisted(Ljava/lang/String;)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$commitRollback$0$RollbackManagerServiceImpl(ILandroid/content/pm/ParceledListSlice;Ljava/lang/String;Landroid/content/IntentSender;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$notifyStagedApkSession$10$RollbackManagerServiceImpl(II)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$notifyStagedSession$9$RollbackManagerServiceImpl(ILjava/util/concurrent/LinkedBlockingQueue;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$5$RollbackManagerServiceImpl()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$5$RollbackManagerServiceImpl(Landroid/provider/DeviceConfig$Properties;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onBootCompleted$6$RollbackManagerServiceImpl()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$onUnlockUser$4$RollbackManagerServiceImpl(ILjava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$scheduleExpiration$7$RollbackManagerServiceImpl()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->lambda$snapshotAndRestoreUserData$8$RollbackManagerServiceImpl(Ljava/lang/String;[IILjava/lang/String;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->makeRollbackAvailable(Lcom/android/server/rollback/Rollback;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->notifyStagedApkSession(II)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->notifyStagedSession(I)I
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onBootCompleted()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onPackageFullyRemoved(Ljava/lang/String;)V
 PLcom/android/server/rollback/RollbackManagerServiceImpl;->onPackageReplaced(Ljava/lang/String;)V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->onUnlockUser(I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->restoreUserData(Ljava/lang/String;[IIJLjava/lang/String;I)V
-PLcom/android/server/rollback/RollbackManagerServiceImpl;->restoreUserDataInternal(Ljava/lang/String;[IIJLjava/lang/String;I)V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpiration()V
-HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->saveRollbackData(Lcom/android/server/rollback/RollbackData;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->onUnlockUser(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->queueSleepIfNeeded()V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->registerTimeChangeReceiver()V
+HSPLcom/android/server/rollback/RollbackManagerServiceImpl;->registerUserCallbacks(Landroid/os/UserHandle;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->removeRollbackForPackageSessionId(I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->restoreUserDataInternal(Ljava/lang/String;[IILjava/lang/String;)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->runExpiration()V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->scheduleExpiration(J)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->sessionMatchesForEnableRollback(Landroid/content/pm/PackageInstaller$SessionInfo;ILjava/io/File;)Z
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->snapshotAndRestoreUserData(Ljava/lang/String;[IIJLjava/lang/String;I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->snapshotUserDataInternal(Ljava/lang/String;[I)V
+PLcom/android/server/rollback/RollbackManagerServiceImpl;->updateRollbackLifetimeDurationInMillis()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver$1;-><init>(Lcom/android/server/rollback/RollbackPackageHealthObserver;Landroid/content/rollback/RollbackManager;ILandroid/content/pm/VersionedPackage;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/rollback/RollbackPackageHealthObserver;-><init>(Landroid/content/Context;)V
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->execute(Landroid/content/pm/VersionedPackage;)Z
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->getAvailableRollback(Landroid/content/rollback/RollbackManager;Landroid/content/pm/VersionedPackage;Landroid/content/pm/VersionedPackage;)Landroid/util/Pair;
-PLcom/android/server/rollback/RollbackPackageHealthObserver;->getModuleMetadataPackage()Landroid/content/pm/VersionedPackage;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->access$000(Lcom/android/server/rollback/RollbackPackageHealthObserver;Landroid/content/rollback/RollbackManager;ILandroid/content/BroadcastReceiver;Landroid/content/pm/VersionedPackage;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->execute(Landroid/content/pm/VersionedPackage;I)Z
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->getAvailableRollback(Landroid/content/pm/VersionedPackage;)Landroid/content/rollback/RollbackInfo;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->getModuleMetadataPackageName()Ljava/lang/String;
 HSPLcom/android/server/rollback/RollbackPackageHealthObserver;->getName()Ljava/lang/String;
-HSPLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompleted()V
-HSPLcom/android/server/rollback/RollbackPackageHealthObserver;->popLastStagedRollbackId()I
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->handleStagedSessionChange(Landroid/content/rollback/RollbackManager;ILandroid/content/BroadcastReceiver;Landroid/content/pm/VersionedPackage;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->isModule(Ljava/lang/String;)Z
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->isPendingStagedSessionsEmpty()Z
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->lambda$onBootCompletedAsync$0$RollbackPackageHealthObserver()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->lambda$rollbackPackage$1$RollbackPackageHealthObserver(Landroid/content/rollback/RollbackInfo;Landroid/content/rollback/RollbackManager;Landroid/content/pm/VersionedPackage;ILjava/lang/String;Landroid/content/Intent;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->lambda$rollbackPackage$2(Landroid/content/rollback/RollbackManager;Landroid/content/rollback/RollbackInfo;Landroid/content/pm/VersionedPackage;Lcom/android/server/rollback/LocalIntentReceiver;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->listenForStagedSessionReady(Landroid/content/rollback/RollbackManager;ILandroid/content/pm/VersionedPackage;)Landroid/content/BroadcastReceiver;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->logEvent(Landroid/content/pm/VersionedPackage;IILjava/lang/String;)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->mapFailureReasonToMetric(I)I
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->markStagedSessionHandled(I)Z
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompleted()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->onBootCompletedAsync()V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->onHealthCheckFailed(Landroid/content/pm/VersionedPackage;I)I
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->popLastStagedRollbackId()I
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->popLastStagedRollbackIds()Ljava/util/List;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->rollbackPackage(Landroid/content/rollback/RollbackInfo;Landroid/content/pm/VersionedPackage;I)V
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->rollbackReasonToString(I)Ljava/lang/String;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->rollbackTypeToString(I)Ljava/lang/String;
+PLcom/android/server/rollback/RollbackPackageHealthObserver;->startObservingHealth(Ljava/util/List;J)V
+HSPLcom/android/server/rollback/RollbackStore;-><init>(Ljava/io/File;)V
+PLcom/android/server/rollback/RollbackStore;->backupPackageCodePath(Lcom/android/server/rollback/Rollback;Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/rollback/RollbackStore;->ceSnapshotInodesFromJson(Lorg/json/JSONArray;)Landroid/util/SparseLongArray;
-HSPLcom/android/server/rollback/RollbackStore;->ceSnapshotInodesToJson(Landroid/util/SparseLongArray;)Lorg/json/JSONArray;
+PLcom/android/server/rollback/RollbackStore;->ceSnapshotInodesToJson(Landroid/util/SparseLongArray;)Lorg/json/JSONArray;
 HSPLcom/android/server/rollback/RollbackStore;->convertToIntArray(Lorg/json/JSONArray;)Landroid/util/IntArray;
-HSPLcom/android/server/rollback/RollbackStore;->convertToJsonArray(Ljava/util/List;)Lorg/json/JSONArray;
+PLcom/android/server/rollback/RollbackStore;->convertToJsonArray(Landroid/util/IntArray;)Lorg/json/JSONArray;
+HPLcom/android/server/rollback/RollbackStore;->convertToJsonArray(Ljava/util/List;)Lorg/json/JSONArray;
 HSPLcom/android/server/rollback/RollbackStore;->convertToRestoreInfoArray(Lorg/json/JSONArray;)Ljava/util/ArrayList;
-HSPLcom/android/server/rollback/RollbackStore;->deleteRollbackData(Lcom/android/server/rollback/RollbackData;)V
-HSPLcom/android/server/rollback/RollbackStore;->loadAllRollbackData()Ljava/util/List;
-HSPLcom/android/server/rollback/RollbackStore;->loadRollbackData(Ljava/io/File;)Lcom/android/server/rollback/RollbackData;
+PLcom/android/server/rollback/RollbackStore;->createStagedRollback(IIILjava/lang/String;[I)Lcom/android/server/rollback/Rollback;
+PLcom/android/server/rollback/RollbackStore;->deletePackageCodePaths(Lcom/android/server/rollback/Rollback;)V
+PLcom/android/server/rollback/RollbackStore;->deleteRollback(Lcom/android/server/rollback/Rollback;)V
+PLcom/android/server/rollback/RollbackStore;->getPackageCodePaths(Lcom/android/server/rollback/Rollback;Ljava/lang/String;)[Ljava/io/File;
+HSPLcom/android/server/rollback/RollbackStore;->loadRollback(Ljava/io/File;)Lcom/android/server/rollback/Rollback;
+HSPLcom/android/server/rollback/RollbackStore;->loadRollbacks()Ljava/util/List;
 HSPLcom/android/server/rollback/RollbackStore;->packageRollbackInfoFromJson(Lorg/json/JSONObject;)Landroid/content/rollback/PackageRollbackInfo;
+HSPLcom/android/server/rollback/RollbackStore;->packageRollbackInfosFromJson(Lorg/json/JSONArray;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackStore;->removeFile(Ljava/io/File;)V
+HSPLcom/android/server/rollback/RollbackStore;->rollbackFromJson(Lorg/json/JSONObject;Ljava/io/File;)Lcom/android/server/rollback/Rollback;
 HSPLcom/android/server/rollback/RollbackStore;->rollbackInfoFromJson(Lorg/json/JSONObject;)Landroid/content/rollback/RollbackInfo;
-HSPLcom/android/server/rollback/RollbackStore;->rollbackInfoToJson(Landroid/content/rollback/RollbackInfo;)Lorg/json/JSONObject;
-HSPLcom/android/server/rollback/RollbackStore;->saveRollbackData(Lcom/android/server/rollback/RollbackData;)V
-HSPLcom/android/server/rollback/RollbackStore;->toJson(Landroid/content/rollback/PackageRollbackInfo;)Lorg/json/JSONObject;
-HSPLcom/android/server/search/SearchManagerService$Lifecycle$1;->run()V
+PLcom/android/server/rollback/RollbackStore;->rollbackInfoToJson(Landroid/content/rollback/RollbackInfo;)Lorg/json/JSONObject;
+PLcom/android/server/rollback/RollbackStore;->saveRollback(Lcom/android/server/rollback/Rollback;)V
+PLcom/android/server/rollback/RollbackStore;->toJson(Landroid/content/pm/VersionedPackage;)Lorg/json/JSONObject;
+HPLcom/android/server/rollback/RollbackStore;->toJson(Landroid/content/rollback/PackageRollbackInfo;)Lorg/json/JSONObject;
+HPLcom/android/server/rollback/RollbackStore;->toJson(Ljava/util/List;)Lorg/json/JSONArray;
+HSPLcom/android/server/rollback/RollbackStore;->versionedPackageFromJson(Lorg/json/JSONObject;)Landroid/content/pm/VersionedPackage;
+HSPLcom/android/server/rollback/RollbackStore;->versionedPackagesFromJson(Lorg/json/JSONArray;)Ljava/util/List;
+PLcom/android/server/rollback/RollbackStore;->versionedPackagesToJson(Ljava/util/List;)Lorg/json/JSONArray;
+HSPLcom/android/server/search/SearchManagerService$GlobalSearchProviderObserver;-><init>(Lcom/android/server/search/SearchManagerService;Landroid/content/ContentResolver;)V
+PLcom/android/server/search/SearchManagerService$Lifecycle$1;-><init>(Lcom/android/server/search/SearchManagerService$Lifecycle;I)V
+PLcom/android/server/search/SearchManagerService$Lifecycle$1;->run()V
 HSPLcom/android/server/search/SearchManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+PLcom/android/server/search/SearchManagerService$Lifecycle;->access$000(Lcom/android/server/search/SearchManagerService$Lifecycle;)Lcom/android/server/search/SearchManagerService;
+PLcom/android/server/search/SearchManagerService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/search/SearchManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/search/SearchManagerService$Lifecycle;->onUnlockUser(I)V
-HSPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onSomePackagesChanged()V
-HSPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V
+PLcom/android/server/search/SearchManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/search/SearchManagerService$MyPackageMonitor;-><init>(Lcom/android/server/search/SearchManagerService;)V
+HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->onSomePackagesChanged()V
+HPLcom/android/server/search/SearchManagerService$MyPackageMonitor;->updateSearchables()V
 HSPLcom/android/server/search/SearchManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/search/SearchManagerService;->access$100(Lcom/android/server/search/SearchManagerService;I)V
+PLcom/android/server/search/SearchManagerService;->access$200(Lcom/android/server/search/SearchManagerService;I)V
+PLcom/android/server/search/SearchManagerService;->access$300(Lcom/android/server/search/SearchManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/search/SearchManagerService;->access$400(Lcom/android/server/search/SearchManagerService;)Landroid/content/Context;
 PLcom/android/server/search/SearchManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/search/SearchManagerService;->getGlobalSearchActivity()Landroid/content/ComponentName;
 PLcom/android/server/search/SearchManagerService;->getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;
-HSPLcom/android/server/search/SearchManagerService;->getSearchables(IZ)Lcom/android/server/search/Searchables;
-HSPLcom/android/server/search/SearchManagerService;->onUnlockUser(I)V
-HSPLcom/android/server/search/Searchables$1;-><init>()V
-PLcom/android/server/search/Searchables;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName;
-HSPLcom/android/server/search/Searchables;->getDefaultGlobalSearchProvider(Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/search/SearchManagerService;->getSearchables(I)Lcom/android/server/search/Searchables;
+PLcom/android/server/search/SearchManagerService;->getSearchables(IZ)Lcom/android/server/search/Searchables;
+PLcom/android/server/search/SearchManagerService;->getSearchablesInGlobalSearch()Ljava/util/List;
+PLcom/android/server/search/SearchManagerService;->getWebSearchActivity()Landroid/content/ComponentName;
+PLcom/android/server/search/SearchManagerService;->onCleanupUser(I)V
+PLcom/android/server/search/SearchManagerService;->onUnlockUser(I)V
+PLcom/android/server/search/Searchables$1;-><init>()V
+PLcom/android/server/search/Searchables$1;->compare(Landroid/content/pm/ResolveInfo;Landroid/content/pm/ResolveInfo;)I
+PLcom/android/server/search/Searchables$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/search/Searchables;-><clinit>()V
+PLcom/android/server/search/Searchables;-><init>(Landroid/content/Context;I)V
+PLcom/android/server/search/Searchables;->access$000(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/search/Searchables;->createFilterdSearchableInfoList(Ljava/util/List;)Ljava/util/ArrayList;
+HPLcom/android/server/search/Searchables;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/search/Searchables;->findGlobalSearchActivities()Ljava/util/List;
+HPLcom/android/server/search/Searchables;->findGlobalSearchActivity(Ljava/util/List;)Landroid/content/ComponentName;
+HPLcom/android/server/search/Searchables;->findWebSearchActivity(Landroid/content/ComponentName;)Landroid/content/ComponentName;
+HPLcom/android/server/search/Searchables;->getDefaultGlobalSearchProvider(Ljava/util/List;)Landroid/content/ComponentName;
+PLcom/android/server/search/Searchables;->getGlobalSearchActivity()Landroid/content/ComponentName;
+HPLcom/android/server/search/Searchables;->getGlobalSearchProviderSetting()Ljava/lang/String;
 PLcom/android/server/search/Searchables;->getSearchableInfo(Landroid/content/ComponentName;)Landroid/app/SearchableInfo;
-HSPLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
-HSPLcom/android/server/search/Searchables;->updateSearchableList()V
+PLcom/android/server/search/Searchables;->getSearchablesInGlobalSearchList()Ljava/util/ArrayList;
+PLcom/android/server/search/Searchables;->getWebSearchActivity()Landroid/content/ComponentName;
+PLcom/android/server/search/Searchables;->isSystemApp(Landroid/content/pm/ResolveInfo;)Z
+HPLcom/android/server/search/Searchables;->queryIntentActivities(Landroid/content/Intent;I)Ljava/util/List;
+HPLcom/android/server/search/Searchables;->updateSearchableList()V
+HSPLcom/android/server/security/FileIntegrityService$1;-><init>(Lcom/android/server/security/FileIntegrityService;)V
+HSPLcom/android/server/security/FileIntegrityService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/security/FileIntegrityService;->loadAllCertificates()V
+HSPLcom/android/server/security/FileIntegrityService;->loadCertificatesFromDirectory(Ljava/lang/String;)V
+HSPLcom/android/server/security/FileIntegrityService;->loadCertificatesFromKeystore(Landroid/security/KeyStore;)V
+HSPLcom/android/server/security/FileIntegrityService;->onStart()V
 HSPLcom/android/server/security/KeyAttestationApplicationIdProviderService;-><init>(Landroid/content/Context;)V
 PLcom/android/server/security/KeyAttestationApplicationIdProviderService;->getKeyAttestationApplicationId(I)Landroid/security/keymaster/KeyAttestationApplicationId;
-HSPLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/security/KeyChainSystemService$1;-><init>(Lcom/android/server/security/KeyChainSystemService;)V
+HPLcom/android/server/security/KeyChainSystemService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/security/KeyChainSystemService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/security/KeyChainSystemService;->access$000(Lcom/android/server/security/KeyChainSystemService;Landroid/content/Intent;Landroid/os/UserHandle;)V
 HSPLcom/android/server/security/KeyChainSystemService;->onStart()V
-PLcom/android/server/security/KeyChainSystemService;->startServiceInBackgroundAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
+HPLcom/android/server/security/KeyChainSystemService;->startServiceInBackgroundAsUser(Landroid/content/Intent;Landroid/os/UserHandle;)V
+PLcom/android/server/security/VerityUtils$SetupResult;-><init>(ILjava/io/FileDescriptor;I)V
 PLcom/android/server/security/VerityUtils$SetupResult;->getContentSize()I
 PLcom/android/server/security/VerityUtils$SetupResult;->getUnownedFileDescriptor()Ljava/io/FileDescriptor;
 PLcom/android/server/security/VerityUtils$SetupResult;->isFailed()Z
 PLcom/android/server/security/VerityUtils$SetupResult;->isOk()Z
+PLcom/android/server/security/VerityUtils$SetupResult;->ok(Ljava/io/FileDescriptor;I)Lcom/android/server/security/VerityUtils$SetupResult;
+PLcom/android/server/security/VerityUtils$SetupResult;->skipped()Lcom/android/server/security/VerityUtils$SetupResult;
+PLcom/android/server/security/VerityUtils$TrackedShmBufferFactory;-><init>()V
+PLcom/android/server/security/VerityUtils$TrackedShmBufferFactory;-><init>(Lcom/android/server/security/VerityUtils$1;)V
 PLcom/android/server/security/VerityUtils$TrackedShmBufferFactory;->create(I)Ljava/nio/ByteBuffer;
+PLcom/android/server/security/VerityUtils$TrackedShmBufferFactory;->getBufferLimit()I
+PLcom/android/server/security/VerityUtils$TrackedShmBufferFactory;->releaseSharedMemory()Landroid/os/SharedMemory;
+HSPLcom/android/server/security/VerityUtils;->generateApkVerityRootHash(Ljava/lang/String;)[B
 PLcom/android/server/security/VerityUtils;->generateApkVeritySetupData(Ljava/lang/String;)Lcom/android/server/security/VerityUtils$SetupResult;
 PLcom/android/server/security/VerityUtils;->generateFsVerityIntoSharedMemory(Ljava/lang/String;[B)Landroid/util/Pair;
+HSPLcom/android/server/security/VerityUtils;->getFsveritySignatureFilePath(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/security/VerityUtils;->hasFsverity(Ljava/lang/String;)Z
+HSPLcom/android/server/security/VerityUtils;->isFsveritySignatureFile(Ljava/io/File;)Z
+PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;-><clinit>()V
+PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;-><init>(Landroid/content/Context;Ljava/lang/String;Lcom/android/server/signedconfig/SignedConfigEvent;)V
 PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;->applyConfig(Ljava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;->checkSignature(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;->getCurrentConfigVersion()I
 PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;->makeMap([Ljava/lang/Object;)Ljava/util/Map;
-PLcom/android/server/signedconfig/GlobalSettingsConfigApplicator;->updateCurrentConfig(ILjava/util/Map;)V
+PLcom/android/server/signedconfig/SignatureVerifier;-><init>(Lcom/android/server/signedconfig/SignedConfigEvent;)V
 PLcom/android/server/signedconfig/SignatureVerifier;->createKey(Ljava/lang/String;)Ljava/security/PublicKey;
 PLcom/android/server/signedconfig/SignatureVerifier;->verifySignature(Ljava/lang/String;Ljava/lang/String;)Z
-PLcom/android/server/signedconfig/SignedConfig;->getMatchingConfig(I)Lcom/android/server/signedconfig/SignedConfig$PerSdkConfig;
+PLcom/android/server/signedconfig/SignatureVerifier;->verifyWithPublicKey(Ljava/security/PublicKey;[B[B)Z
+PLcom/android/server/signedconfig/SignedConfig$PerSdkConfig;-><init>(IILjava/util/Map;)V
+PLcom/android/server/signedconfig/SignedConfig;-><init>(ILjava/util/List;)V
 PLcom/android/server/signedconfig/SignedConfig;->parse(Ljava/lang/String;Ljava/util/Set;Ljava/util/Map;)Lcom/android/server/signedconfig/SignedConfig;
 PLcom/android/server/signedconfig/SignedConfig;->parsePerSdkConfig(Lorg/json/JSONObject;Ljava/util/Set;Ljava/util/Map;)Lcom/android/server/signedconfig/SignedConfig$PerSdkConfig;
+PLcom/android/server/signedconfig/SignedConfigEvent;-><init>()V
+PLcom/android/server/signedconfig/SignedConfigEvent;->send()V
+HSPLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>()V
+HSPLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;-><init>(Lcom/android/server/signedconfig/SignedConfigService$1;)V
 PLcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/signedconfig/SignedConfigService;-><init>(Landroid/content/Context;)V
 PLcom/android/server/signedconfig/SignedConfigService;->handlePackageBroadcast(Landroid/content/Intent;)V
 HSPLcom/android/server/signedconfig/SignedConfigService;->registerUpdateReceiver(Landroid/content/Context;)V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;-><init>()V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$KzxFkvfomRuMb5PD8_pIHDIhUUE;->binderDied()V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$TZdoqC_LDA8If7sQ7WXz9LM6VHg;->run()V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$j_JfEZwPCa729MjgsTSd8MAItIw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$t5Vl61Ns1u_83c4ri7920sczEu0;->run()V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;-><init>()V
-HSPLcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;->apply(I)Ljava/lang/Object;
-HSPLcom/android/server/slice/-$$Lambda$SliceManagerService$LkusK1jmu9JKJTiMRWqWxNGEGbY;->get()Ljava/lang/Object;
-HSPLcom/android/server/slice/-$$Lambda$SliceManagerService$ic_PW16x_KcVi-NszMwHhErqI0s;->get()Ljava/lang/Object;
-HSPLcom/android/server/slice/-$$Lambda$SliceManagerService$pJ39TkC3AEVezLFEPuJgSQSTDJM;->run()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;-><clinit>()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;-><init>()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$KzxFkvfomRuMb5PD8_pIHDIhUUE;-><init>(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$KzxFkvfomRuMb5PD8_pIHDIhUUE;->binderDied()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$TZdoqC_LDA8If7sQ7WXz9LM6VHg;-><init>(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$TZdoqC_LDA8If7sQ7WXz9LM6VHg;->run()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$j_JfEZwPCa729MjgsTSd8MAItIw;-><init>(Lcom/android/server/slice/PinnedSliceState;[Landroid/app/slice/SliceSpec;)V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$j_JfEZwPCa729MjgsTSd8MAItIw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$t5Vl61Ns1u_83c4ri7920sczEu0;-><init>(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$t5Vl61Ns1u_83c4ri7920sczEu0;->run()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;-><clinit>()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;-><init>()V
+PLcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;->apply(I)Ljava/lang/Object;
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$EsoJb3dNe0G_qzoQixj72OS5gnw;-><init>(I)V
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$EsoJb3dNe0G_qzoQixj72OS5gnw;->test(Ljava/lang/Object;)Z
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$LkusK1jmu9JKJTiMRWqWxNGEGbY;-><init>(Lcom/android/server/slice/SliceManagerService;I)V
+HPLcom/android/server/slice/-$$Lambda$SliceManagerService$LkusK1jmu9JKJTiMRWqWxNGEGbY;->get()Ljava/lang/Object;
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$ic_PW16x_KcVi-NszMwHhErqI0s;-><init>(Lcom/android/server/slice/SliceManagerService;I)V
+HPLcom/android/server/slice/-$$Lambda$SliceManagerService$ic_PW16x_KcVi-NszMwHhErqI0s;->get()Ljava/lang/Object;
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$pJ39TkC3AEVezLFEPuJgSQSTDJM;-><init>(Lcom/android/server/slice/SliceManagerService;Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/slice/-$$Lambda$SliceManagerService$pJ39TkC3AEVezLFEPuJgSQSTDJM;->run()V
+PLcom/android/server/slice/-$$Lambda$SlicePermissionManager$y3Tun5dTftw8s8sky62syeWR34U;-><clinit>()V
 PLcom/android/server/slice/-$$Lambda$SlicePermissionManager$y3Tun5dTftw8s8sky62syeWR34U;-><init>()V
-HSPLcom/android/server/slice/PinnedSliceState;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/slice/PinnedSliceState;-><init>(Lcom/android/server/slice/SliceManagerService;Landroid/net/Uri;Ljava/lang/String;)V
-HSPLcom/android/server/slice/PinnedSliceState;->destroy()V
-HSPLcom/android/server/slice/PinnedSliceState;->getClient()Landroid/content/ContentProviderClient;
-HSPLcom/android/server/slice/PinnedSliceState;->getPkg()Ljava/lang/String;
-HSPLcom/android/server/slice/PinnedSliceState;->getSpecs()[Landroid/app/slice/SliceSpec;
-HSPLcom/android/server/slice/PinnedSliceState;->getUri()Landroid/net/Uri;
-HSPLcom/android/server/slice/PinnedSliceState;->handleRecheckListeners()V
-HSPLcom/android/server/slice/PinnedSliceState;->handleSendPinned()V
-HSPLcom/android/server/slice/PinnedSliceState;->handleSendUnpinned()V
-HSPLcom/android/server/slice/PinnedSliceState;->hasPinOrListener()Z
-HSPLcom/android/server/slice/PinnedSliceState;->lambda$mergeSpecs$0$PinnedSliceState([Landroid/app/slice/SliceSpec;Landroid/app/slice/SliceSpec;)Landroid/app/slice/SliceSpec;
-HSPLcom/android/server/slice/PinnedSliceState;->mergeSpecs([Landroid/app/slice/SliceSpec;)V
-HSPLcom/android/server/slice/PinnedSliceState;->pin(Ljava/lang/String;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
-HSPLcom/android/server/slice/PinnedSliceState;->setSlicePinned(Z)V
-HSPLcom/android/server/slice/PinnedSliceState;->unpin(Ljava/lang/String;Landroid/os/IBinder;)Z
-PLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V
-PLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->hasPermission(Ljava/util/List;)Z
-PLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->readFrom(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/slice/SliceClientPermissions;->clear()V
-HSPLcom/android/server/slice/SliceClientPermissions;->createFrom(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/slice/DirtyTracker;)Lcom/android/server/slice/SliceClientPermissions;
-HSPLcom/android/server/slice/SliceClientPermissions;->getAuthority(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;
+PLcom/android/server/slice/PinnedSliceState$ListenerInfo;-><init>(Lcom/android/server/slice/PinnedSliceState;Landroid/os/IBinder;Ljava/lang/String;ZII)V
+PLcom/android/server/slice/PinnedSliceState$ListenerInfo;->access$000(Lcom/android/server/slice/PinnedSliceState$ListenerInfo;)Landroid/os/IBinder;
+HPLcom/android/server/slice/PinnedSliceState;-><init>(Lcom/android/server/slice/SliceManagerService;Landroid/net/Uri;Ljava/lang/String;)V
+PLcom/android/server/slice/PinnedSliceState;->checkSelfRemove()V
+PLcom/android/server/slice/PinnedSliceState;->destroy()V
+HPLcom/android/server/slice/PinnedSliceState;->findSpec([Landroid/app/slice/SliceSpec;Ljava/lang/String;)Landroid/app/slice/SliceSpec;
+HPLcom/android/server/slice/PinnedSliceState;->getClient()Landroid/content/ContentProviderClient;
+PLcom/android/server/slice/PinnedSliceState;->getPkg()Ljava/lang/String;
+PLcom/android/server/slice/PinnedSliceState;->getSpecs()[Landroid/app/slice/SliceSpec;
+PLcom/android/server/slice/PinnedSliceState;->getUri()Landroid/net/Uri;
+PLcom/android/server/slice/PinnedSliceState;->handleRecheckListeners()V
+PLcom/android/server/slice/PinnedSliceState;->handleSendPinned()V
+PLcom/android/server/slice/PinnedSliceState;->handleSendUnpinned()V
+PLcom/android/server/slice/PinnedSliceState;->hasPinOrListener()Z
+PLcom/android/server/slice/PinnedSliceState;->lambda$KzxFkvfomRuMb5PD8_pIHDIhUUE(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/PinnedSliceState;->lambda$TZdoqC_LDA8If7sQ7WXz9LM6VHg(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/PinnedSliceState;->lambda$mergeSpecs$0$PinnedSliceState([Landroid/app/slice/SliceSpec;Landroid/app/slice/SliceSpec;)Landroid/app/slice/SliceSpec;
+PLcom/android/server/slice/PinnedSliceState;->lambda$mergeSpecs$1(Landroid/app/slice/SliceSpec;)Z
+PLcom/android/server/slice/PinnedSliceState;->lambda$mergeSpecs$2(I)[Landroid/app/slice/SliceSpec;
+PLcom/android/server/slice/PinnedSliceState;->lambda$t5Vl61Ns1u_83c4ri7920sczEu0(Lcom/android/server/slice/PinnedSliceState;)V
+PLcom/android/server/slice/PinnedSliceState;->mergeSpecs([Landroid/app/slice/SliceSpec;)V
+HPLcom/android/server/slice/PinnedSliceState;->pin(Ljava/lang/String;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
+HPLcom/android/server/slice/PinnedSliceState;->setSlicePinned(Z)V
+PLcom/android/server/slice/PinnedSliceState;->unpin(Ljava/lang/String;Landroid/os/IBinder;)Z
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;-><init>(Ljava/lang/String;Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/DirtyTracker;)V
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->access$000(Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;)Ljava/lang/String;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->access$100(Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;)Lcom/android/server/slice/SlicePermissionManager$PkgUser;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->addPath(Ljava/util/List;)V
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->decodeSegments(Ljava/lang/String;)[Ljava/lang/String;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->encodeSegments([Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->getAuthority()Ljava/lang/String;
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->hasPermission(Ljava/util/List;)Z
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->isPathPrefixMatch([Ljava/lang/String;[Ljava/lang/String;)Z
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->readFrom(Lorg/xmlpull/v1/XmlPullParser;)V
+HPLcom/android/server/slice/SliceClientPermissions$SliceAuthority;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/slice/SliceClientPermissions;-><clinit>()V
+PLcom/android/server/slice/SliceClientPermissions;-><init>(Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/DirtyTracker;)V
+PLcom/android/server/slice/SliceClientPermissions;->access$200()Ljava/lang/String;
+PLcom/android/server/slice/SliceClientPermissions;->clear()V
+HPLcom/android/server/slice/SliceClientPermissions;->createFrom(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/slice/DirtyTracker;)Lcom/android/server/slice/SliceClientPermissions;
+HPLcom/android/server/slice/SliceClientPermissions;->getAuthority(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;
 PLcom/android/server/slice/SliceClientPermissions;->getFileName()Ljava/lang/String;
-PLcom/android/server/slice/SliceClientPermissions;->getOrCreateAuthority(Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;
-PLcom/android/server/slice/SliceClientPermissions;->grantUri(Landroid/net/Uri;Lcom/android/server/slice/SlicePermissionManager$PkgUser;)V
-HSPLcom/android/server/slice/SliceClientPermissions;->hasFullAccess()Z
-HSPLcom/android/server/slice/SliceClientPermissions;->hasPermission(Landroid/net/Uri;I)Z
+PLcom/android/server/slice/SliceClientPermissions;->getFileName(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Ljava/lang/String;
+HPLcom/android/server/slice/SliceClientPermissions;->getOrCreateAuthority(Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;
+HPLcom/android/server/slice/SliceClientPermissions;->grantUri(Landroid/net/Uri;Lcom/android/server/slice/SlicePermissionManager$PkgUser;)V
+HPLcom/android/server/slice/SliceClientPermissions;->hasFullAccess()Z
+HPLcom/android/server/slice/SliceClientPermissions;->hasPermission(Landroid/net/Uri;I)Z
 PLcom/android/server/slice/SliceClientPermissions;->onPersistableDirty(Lcom/android/server/slice/DirtyTracker$Persistable;)V
-PLcom/android/server/slice/SliceClientPermissions;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/slice/SliceManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/slice/SliceClientPermissions;->removeAuthority(Ljava/lang/String;I)V
+HPLcom/android/server/slice/SliceClientPermissions;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/slice/SliceManagerService$1;-><init>(Lcom/android/server/slice/SliceManagerService;)V
+HPLcom/android/server/slice/SliceManagerService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/slice/SliceManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/slice/SliceManagerService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/slice/SliceManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/slice/SliceManagerService$Lifecycle;->onUnlockUser(I)V
-HSPLcom/android/server/slice/SliceManagerService$PackageMatchingCache;->matches(Ljava/lang/String;)Z
+PLcom/android/server/slice/SliceManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/slice/SliceManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/slice/SliceManagerService$PackageMatchingCache;-><init>(Ljava/util/function/Supplier;)V
+HPLcom/android/server/slice/SliceManagerService$PackageMatchingCache;->matches(Ljava/lang/String;)Z
+HSPLcom/android/server/slice/SliceManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/slice/SliceManagerService;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
-HSPLcom/android/server/slice/SliceManagerService;->checkAccess(Ljava/lang/String;Landroid/net/Uri;II)I
-HSPLcom/android/server/slice/SliceManagerService;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)I
-HSPLcom/android/server/slice/SliceManagerService;->createPinnedSlice(Landroid/net/Uri;Ljava/lang/String;)Lcom/android/server/slice/PinnedSliceState;
-HSPLcom/android/server/slice/SliceManagerService;->enforceAccess(Ljava/lang/String;Landroid/net/Uri;)V
-PLcom/android/server/slice/SliceManagerService;->enforceOwner(Ljava/lang/String;Landroid/net/Uri;I)V
+PLcom/android/server/slice/SliceManagerService;->access$000(Lcom/android/server/slice/SliceManagerService;)Lcom/android/server/slice/SlicePermissionManager;
+HSPLcom/android/server/slice/SliceManagerService;->access$100(Lcom/android/server/slice/SliceManagerService;)V
+PLcom/android/server/slice/SliceManagerService;->access$200(Lcom/android/server/slice/SliceManagerService;I)V
+PLcom/android/server/slice/SliceManagerService;->access$300(Lcom/android/server/slice/SliceManagerService;I)V
+HPLcom/android/server/slice/SliceManagerService;->checkAccess(Ljava/lang/String;Landroid/net/Uri;II)I
+HPLcom/android/server/slice/SliceManagerService;->checkSlicePermission(Landroid/net/Uri;Ljava/lang/String;Ljava/lang/String;II[Ljava/lang/String;)I
+HSPLcom/android/server/slice/SliceManagerService;->createHandler()Lcom/android/server/ServiceThread;
+PLcom/android/server/slice/SliceManagerService;->createPinnedSlice(Landroid/net/Uri;Ljava/lang/String;)Lcom/android/server/slice/PinnedSliceState;
+HPLcom/android/server/slice/SliceManagerService;->enforceAccess(Ljava/lang/String;Landroid/net/Uri;)V
+HPLcom/android/server/slice/SliceManagerService;->enforceCrossUser(Ljava/lang/String;Landroid/net/Uri;)V
+HPLcom/android/server/slice/SliceManagerService;->enforceOwner(Ljava/lang/String;Landroid/net/Uri;I)V
+HPLcom/android/server/slice/SliceManagerService;->getAssistant(I)Ljava/lang/String;
+HPLcom/android/server/slice/SliceManagerService;->getAssistantMatcher(I)Lcom/android/server/slice/SliceManagerService$PackageMatchingCache;
 PLcom/android/server/slice/SliceManagerService;->getBackupPayload(I)[B
-HSPLcom/android/server/slice/SliceManagerService;->getContext()Landroid/content/Context;
-HSPLcom/android/server/slice/SliceManagerService;->getDefaultHome(I)Ljava/lang/String;
-HSPLcom/android/server/slice/SliceManagerService;->getHandler()Landroid/os/Handler;
-HSPLcom/android/server/slice/SliceManagerService;->getLock()Ljava/lang/Object;
-HSPLcom/android/server/slice/SliceManagerService;->getOrCreatePinnedSlice(Landroid/net/Uri;Ljava/lang/String;)Lcom/android/server/slice/PinnedSliceState;
-HSPLcom/android/server/slice/SliceManagerService;->getPinnedSlice(Landroid/net/Uri;)Lcom/android/server/slice/PinnedSliceState;
-HSPLcom/android/server/slice/SliceManagerService;->getPinnedSlices(Ljava/lang/String;)[Landroid/net/Uri;
-HSPLcom/android/server/slice/SliceManagerService;->getPinnedSpecs(Landroid/net/Uri;Ljava/lang/String;)[Landroid/app/slice/SliceSpec;
-HSPLcom/android/server/slice/SliceManagerService;->getProviderPkg(Landroid/net/Uri;I)Ljava/lang/String;
-PLcom/android/server/slice/SliceManagerService;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
-HSPLcom/android/server/slice/SliceManagerService;->hasFullSliceAccess(Ljava/lang/String;I)Z
-HSPLcom/android/server/slice/SliceManagerService;->lambda$getAssistantMatcher$2$SliceManagerService(I)Ljava/lang/String;
-HSPLcom/android/server/slice/SliceManagerService;->lambda$getHomeMatcher$3$SliceManagerService(I)Ljava/lang/String;
-HSPLcom/android/server/slice/SliceManagerService;->lambda$pinSlice$1$SliceManagerService(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/slice/SliceManagerService;->pinSlice(Ljava/lang/String;Landroid/net/Uri;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
-HSPLcom/android/server/slice/SliceManagerService;->removePinnedSlice(Landroid/net/Uri;)V
-HSPLcom/android/server/slice/SliceManagerService;->unpinSlice(Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)V
-PLcom/android/server/slice/SlicePermissionManager$H;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/slice/SlicePermissionManager$ParserHolder;->close()V
-HSPLcom/android/server/slice/SlicePermissionManager$PkgUser;-><init>(Ljava/lang/String;)V
-HSPLcom/android/server/slice/SlicePermissionManager$PkgUser;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/slice/SliceManagerService;->getContext()Landroid/content/Context;
+HPLcom/android/server/slice/SliceManagerService;->getDefaultHome(I)Ljava/lang/String;
+PLcom/android/server/slice/SliceManagerService;->getHandler()Landroid/os/Handler;
+HPLcom/android/server/slice/SliceManagerService;->getHomeMatcher(I)Lcom/android/server/slice/SliceManagerService$PackageMatchingCache;
+PLcom/android/server/slice/SliceManagerService;->getLock()Ljava/lang/Object;
+HPLcom/android/server/slice/SliceManagerService;->getOrCreatePinnedSlice(Landroid/net/Uri;Ljava/lang/String;)Lcom/android/server/slice/PinnedSliceState;
+HPLcom/android/server/slice/SliceManagerService;->getPinnedSlice(Landroid/net/Uri;)Lcom/android/server/slice/PinnedSliceState;
+HPLcom/android/server/slice/SliceManagerService;->getPinnedSlices(Ljava/lang/String;)[Landroid/net/Uri;
+HPLcom/android/server/slice/SliceManagerService;->getPinnedSpecs(Landroid/net/Uri;Ljava/lang/String;)[Landroid/app/slice/SliceSpec;
+HPLcom/android/server/slice/SliceManagerService;->getProviderPkg(Landroid/net/Uri;I)Ljava/lang/String;
+HPLcom/android/server/slice/SliceManagerService;->grantSlicePermission(Ljava/lang/String;Ljava/lang/String;Landroid/net/Uri;)V
+HPLcom/android/server/slice/SliceManagerService;->hasFullSliceAccess(Ljava/lang/String;I)Z
+HPLcom/android/server/slice/SliceManagerService;->isAssistant(Ljava/lang/String;I)Z
+HPLcom/android/server/slice/SliceManagerService;->isDefaultHomeApp(Ljava/lang/String;I)Z
+HPLcom/android/server/slice/SliceManagerService;->isGrantedFullAccess(Ljava/lang/String;I)Z
+HPLcom/android/server/slice/SliceManagerService;->lambda$getAssistantMatcher$2$SliceManagerService(I)Ljava/lang/String;
+HPLcom/android/server/slice/SliceManagerService;->lambda$getHomeMatcher$3$SliceManagerService(I)Ljava/lang/String;
+PLcom/android/server/slice/SliceManagerService;->lambda$onStopUser$0(ILcom/android/server/slice/PinnedSliceState;)Z
+PLcom/android/server/slice/SliceManagerService;->lambda$pinSlice$1$SliceManagerService(Ljava/lang/String;Ljava/lang/String;I)V
+PLcom/android/server/slice/SliceManagerService;->onStopUser(I)V
+PLcom/android/server/slice/SliceManagerService;->onUnlockUser(I)V
+HPLcom/android/server/slice/SliceManagerService;->pinSlice(Ljava/lang/String;Landroid/net/Uri;[Landroid/app/slice/SliceSpec;Landroid/os/IBinder;)V
+PLcom/android/server/slice/SliceManagerService;->removePinnedSlice(Landroid/net/Uri;)V
+HSPLcom/android/server/slice/SliceManagerService;->systemReady()V
+HPLcom/android/server/slice/SliceManagerService;->unpinSlice(Ljava/lang/String;Landroid/net/Uri;Landroid/os/IBinder;)V
+HPLcom/android/server/slice/SliceManagerService;->verifyCaller(Ljava/lang/String;)V
+HSPLcom/android/server/slice/SlicePermissionManager$H;-><init>(Lcom/android/server/slice/SlicePermissionManager;Landroid/os/Looper;)V
+HPLcom/android/server/slice/SlicePermissionManager$H;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/slice/SlicePermissionManager$ParserHolder;-><init>(Lcom/android/server/slice/SlicePermissionManager;)V
+PLcom/android/server/slice/SlicePermissionManager$ParserHolder;-><init>(Lcom/android/server/slice/SlicePermissionManager;Lcom/android/server/slice/SlicePermissionManager$1;)V
+PLcom/android/server/slice/SlicePermissionManager$ParserHolder;->access$100(Lcom/android/server/slice/SlicePermissionManager$ParserHolder;)Lorg/xmlpull/v1/XmlPullParser;
+PLcom/android/server/slice/SlicePermissionManager$ParserHolder;->access$102(Lcom/android/server/slice/SlicePermissionManager$ParserHolder;Lorg/xmlpull/v1/XmlPullParser;)Lorg/xmlpull/v1/XmlPullParser;
+PLcom/android/server/slice/SlicePermissionManager$ParserHolder;->access$300(Lcom/android/server/slice/SlicePermissionManager$ParserHolder;)Ljava/io/InputStream;
+PLcom/android/server/slice/SlicePermissionManager$ParserHolder;->access$302(Lcom/android/server/slice/SlicePermissionManager$ParserHolder;Ljava/io/InputStream;)Ljava/io/InputStream;
+HPLcom/android/server/slice/SlicePermissionManager$ParserHolder;->close()V
+HPLcom/android/server/slice/SlicePermissionManager$PkgUser;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/slice/SlicePermissionManager$PkgUser;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->equals(Ljava/lang/Object;)Z
 PLcom/android/server/slice/SlicePermissionManager$PkgUser;->getPkg()Ljava/lang/String;
 PLcom/android/server/slice/SlicePermissionManager$PkgUser;->getUserId()I
-HSPLcom/android/server/slice/SlicePermissionManager$PkgUser;->hashCode()I
-HSPLcom/android/server/slice/SlicePermissionManager$PkgUser;->toString()Ljava/lang/String;
-HSPLcom/android/server/slice/SlicePermissionManager;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
+HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->hashCode()I
+HPLcom/android/server/slice/SlicePermissionManager$PkgUser;->toString()Ljava/lang/String;
+HSPLcom/android/server/slice/SlicePermissionManager;-><init>(Landroid/content/Context;Landroid/os/Looper;)V
 HSPLcom/android/server/slice/SlicePermissionManager;-><init>(Landroid/content/Context;Landroid/os/Looper;Ljava/io/File;)V
-HSPLcom/android/server/slice/SlicePermissionManager;->getClient(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions;
-HSPLcom/android/server/slice/SlicePermissionManager;->getParser(Ljava/lang/String;)Lcom/android/server/slice/SlicePermissionManager$ParserHolder;
-HSPLcom/android/server/slice/SlicePermissionManager;->getProvider(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceProviderPermissions;
-PLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V
+PLcom/android/server/slice/SlicePermissionManager;->access$400(Lcom/android/server/slice/SlicePermissionManager;)Landroid/util/ArraySet;
+PLcom/android/server/slice/SlicePermissionManager;->access$600(Lcom/android/server/slice/SlicePermissionManager;)Landroid/util/ArrayMap;
+PLcom/android/server/slice/SlicePermissionManager;->access$700(Lcom/android/server/slice/SlicePermissionManager;)Landroid/util/ArrayMap;
+HPLcom/android/server/slice/SlicePermissionManager;->getClient(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceClientPermissions;
+HPLcom/android/server/slice/SlicePermissionManager;->getFile(Ljava/lang/String;)Landroid/util/AtomicFile;
+HPLcom/android/server/slice/SlicePermissionManager;->getParser(Ljava/lang/String;)Lcom/android/server/slice/SlicePermissionManager$ParserHolder;
+HPLcom/android/server/slice/SlicePermissionManager;->getProvider(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Lcom/android/server/slice/SliceProviderPermissions;
+HPLcom/android/server/slice/SlicePermissionManager;->grantSliceAccess(Ljava/lang/String;ILjava/lang/String;ILandroid/net/Uri;)V
 PLcom/android/server/slice/SlicePermissionManager;->handlePersist()V
-HSPLcom/android/server/slice/SlicePermissionManager;->hasFullAccess(Ljava/lang/String;I)Z
-HSPLcom/android/server/slice/SlicePermissionManager;->hasPermission(Ljava/lang/String;ILandroid/net/Uri;)Z
-PLcom/android/server/slice/SlicePermissionManager;->onPersistableDirty(Lcom/android/server/slice/DirtyTracker$Persistable;)V
-HSPLcom/android/server/slice/SlicePermissionManager;->removePkg(Ljava/lang/String;I)V
-PLcom/android/server/slice/SlicePermissionManager;->writeBackup(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->addPkg(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)V
-PLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->readFrom(Lorg/xmlpull/v1/XmlPullParser;)V
-PLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/slice/SliceProviderPermissions;->createFrom(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/slice/DirtyTracker;)Lcom/android/server/slice/SliceProviderPermissions;
-HSPLcom/android/server/slice/SliceProviderPermissions;->getAuthorities()Ljava/util/Collection;
+HPLcom/android/server/slice/SlicePermissionManager;->hasFullAccess(Ljava/lang/String;I)Z
+HPLcom/android/server/slice/SlicePermissionManager;->hasPermission(Ljava/lang/String;ILandroid/net/Uri;)Z
+HPLcom/android/server/slice/SlicePermissionManager;->onPersistableDirty(Lcom/android/server/slice/DirtyTracker$Persistable;)V
+HPLcom/android/server/slice/SlicePermissionManager;->removePkg(Ljava/lang/String;I)V
+HPLcom/android/server/slice/SlicePermissionManager;->writeBackup(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;-><init>(Ljava/lang/String;Lcom/android/server/slice/DirtyTracker;)V
+PLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->access$000(Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;)Ljava/lang/String;
+HPLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->addPkg(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)V
+HPLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->getAuthority()Ljava/lang/String;
+PLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->getPkgs()Ljava/util/Collection;
+HPLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->readFrom(Lorg/xmlpull/v1/XmlPullParser;)V
+HPLcom/android/server/slice/SliceProviderPermissions$SliceAuthority;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
+PLcom/android/server/slice/SliceProviderPermissions;-><clinit>()V
+HPLcom/android/server/slice/SliceProviderPermissions;-><init>(Lcom/android/server/slice/SlicePermissionManager$PkgUser;Lcom/android/server/slice/DirtyTracker;)V
+HPLcom/android/server/slice/SliceProviderPermissions;->access$100()Ljava/lang/String;
+HPLcom/android/server/slice/SliceProviderPermissions;->createFrom(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/slice/DirtyTracker;)Lcom/android/server/slice/SliceProviderPermissions;
+HPLcom/android/server/slice/SliceProviderPermissions;->getAuthorities()Ljava/util/Collection;
 PLcom/android/server/slice/SliceProviderPermissions;->getFileName()Ljava/lang/String;
-PLcom/android/server/slice/SliceProviderPermissions;->getOrCreateAuthority(Ljava/lang/String;)Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;
+PLcom/android/server/slice/SliceProviderPermissions;->getFileName(Lcom/android/server/slice/SlicePermissionManager$PkgUser;)Ljava/lang/String;
+HPLcom/android/server/slice/SliceProviderPermissions;->getOrCreateAuthority(Ljava/lang/String;)Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;
 PLcom/android/server/slice/SliceProviderPermissions;->onPersistableDirty(Lcom/android/server/slice/DirtyTracker$Persistable;)V
-PLcom/android/server/slice/SliceProviderPermissions;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
-PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$F-iA254xzDfAHrQW86c2oSqXfwI;->run(ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
+HPLcom/android/server/slice/SliceProviderPermissions;->writeTo(Lorg/xmlpull/v1/XmlSerializer;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$F-iA254xzDfAHrQW86c2oSqXfwI;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$F-iA254xzDfAHrQW86c2oSqXfwI;->run(ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$crQZgbDmIG6q92Mrkm49T2yqrs0;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;I)V
 PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$crQZgbDmIG6q92Mrkm49T2yqrs0;->run(ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
-PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$t5mBYXswwLAAdm47WS10stLjYng;->run()V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$pFqiq_C9KJsoa_HQOdj7lmMixsI;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$t5mBYXswwLAAdm47WS10stLjYng;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$t5mBYXswwLAAdm47WS10stLjYng;->run()V
+PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$wfDlqQ7aPvu9qZCZ24jJu4tfUMY;-><clinit>()V
 PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$wfDlqQ7aPvu9qZCZ24jJu4tfUMY;-><init>()V
-PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$wfDlqQ7aPvu9qZCZ24jJu4tfUMY;->accept(Ljava/lang/Object;)V
-PLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$yqLMvkOmrO13yWrggtSaVrLgsWo;->run()V
-PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->deleteGenericSoundModel(Ljava/util/UUID;)Z
-PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->getGenericSoundModel(Ljava/util/UUID;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->clearCallback()V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$wfDlqQ7aPvu9qZCZ24jJu4tfUMY;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$yqLMvkOmrO13yWrggtSaVrLgsWo;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)V
+HPLcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$yqLMvkOmrO13yWrggtSaVrLgsWo;->run()V
+HSPLcom/android/server/soundtrigger/SoundTriggerDbHelper;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/soundtrigger/SoundTriggerDbHelper;->deleteGenericSoundModel(Ljava/util/UUID;)Z
+PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/soundtrigger/SoundTriggerDbHelper;->getGenericSoundModel(Ljava/util/UUID;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
+PLcom/android/server/soundtrigger/SoundTriggerDbHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V
+HPLcom/android/server/soundtrigger/SoundTriggerDbHelper;->updateGenericSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;-><init>(Ljava/util/UUID;I)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->callbackToString()Ljava/lang/String;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->clearCallback()V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->clearState()V
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getCallback()Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getHandle()I
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getModelId()Ljava/util/UUID;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->createGenericModelData(Ljava/util/UUID;)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->createKeyphraseModelData(Ljava/util/UUID;)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getCallback()Landroid/hardware/soundtrigger/IRecognitionStatusCallback;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getHandle()I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getModelId()Ljava/util/UUID;
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getRecognitionConfig()Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getSoundModel()Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isGenericModel()Z
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->getSoundModel()Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isGenericModel()Z
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isKeyphraseModel()Z
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelLoaded()Z
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelLoaded()Z
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelNotLoaded()Z
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelStarted()Z
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isModelStarted()Z
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->isRequested()Z
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setCallback(Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->modelTypeToString()Ljava/lang/String;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->requestedToString()Ljava/lang/String;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setCallback(Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setHandle(I)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setLoaded()V
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setRecognitionConfig(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setRequested(Z)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setRecognitionConfig(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setRequested(Z)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setStarted()V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->setStopped()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->stateToString()Ljava/lang/String;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->toString()Ljava/lang/String;
+PLcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;->uuidToString()Ljava/lang/String;
+HSPLcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;->onCallStateChanged(ILjava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper$PowerSaveModeListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper$PowerSaveModeListener;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/soundtrigger/SoundTriggerHelper;-><init>(Landroid/content/Context;)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->computeRecognitionRunningLocked()Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->access$000(Lcom/android/server/soundtrigger/SoundTriggerHelper;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->access$100(Lcom/android/server/soundtrigger/SoundTriggerHelper;Z)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->access$200(Lcom/android/server/soundtrigger/SoundTriggerHelper;)Landroid/os/PowerManager;
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->access$300(Lcom/android/server/soundtrigger/SoundTriggerHelper;Z)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->computeRecognitionRequestedLocked()Z
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->createKeyphraseModelDataLocked(Ljava/util/UUID;I)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->forceStopAndUnloadModelLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Ljava/lang/Exception;)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->forceStopAndUnloadModelLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Ljava/lang/Exception;Ljava/util/Iterator;)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->getGenericModelState(Ljava/util/UUID;)I
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->getKeyphraseIdFromEvent(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->getKeyphraseModelDataLocked(I)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->getModelDataForLocked(I)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->getOrCreateGenericModelDataLocked(Ljava/util/UUID;)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->initializeTelephonyAndPowerStateListeners()V
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->internalClearGlobalStateLocked()V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->getOrCreateGenericModelDataLocked(Ljava/util/UUID;)Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->initializeTelephonyAndPowerStateListeners()V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->internalClearGlobalStateLocked()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->internalClearModelStateLocked()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->isKeyphraseRecognitionEvent(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)Z
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->isRecognitionAllowed()Z
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->isRecognitionRequested(Ljava/util/UUID;)Z
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->onGenericRecognitionSuccessLocked(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->onKeyphraseRecognitionSuccessLocked(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onCallStateChangedLocked(Z)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->onGenericRecognitionSuccessLocked(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->onKeyphraseRecognitionSuccessLocked(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseRecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onPowerSaveModeChangedLocked(Z)V
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->onRecognition(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->onRecognitionAbortLocked(Landroid/hardware/soundtrigger/SoundTrigger$RecognitionEvent;)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onServiceDied()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onServiceDiedLocked()V
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->onServiceStateChange(I)V
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->startGenericRecognition(Ljava/util/UUID;Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->startKeyphraseRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->startRecognition(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;I)I
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->startRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Z)I
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopAndUnloadDeadModelsLocked()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->onServiceStateChangedLocked(Z)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->removeKeyphraseModelLocked(I)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->sendErrorCallbacksToAllLocked(I)V
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->startGenericRecognition(Ljava/util/UUID;Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->startKeyphraseRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->startRecognition(Landroid/hardware/soundtrigger/SoundTrigger$SoundModel;Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;I)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->startRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Z)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->stopAndUnloadDeadModelsLocked()V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopGenericRecognition(Ljava/util/UUID;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopKeyphraseRecognition(ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopRecognition(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->stopRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;Z)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->tryStopAndUnloadLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;ZZ)I
-PLcom/android/server/soundtrigger/SoundTriggerHelper;->unloadGenericSoundModel(Ljava/util/UUID;)I
+HPLcom/android/server/soundtrigger/SoundTriggerHelper;->unloadGenericSoundModel(Ljava/util/UUID;)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->unloadKeyphraseSoundModel(I)I
 PLcom/android/server/soundtrigger/SoundTriggerHelper;->updateAllRecognitionsLocked(Z)V
+PLcom/android/server/soundtrigger/SoundTriggerHelper;->updateRecognitionLocked(Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;ZZ)I
+HSPLcom/android/server/soundtrigger/SoundTriggerInternal;-><init>()V
+PLcom/android/server/soundtrigger/SoundTriggerLogger$Event;-><clinit>()V
+HPLcom/android/server/soundtrigger/SoundTriggerLogger$Event;-><init>()V
+HPLcom/android/server/soundtrigger/SoundTriggerLogger$Event;->toString()Ljava/lang/String;
+HPLcom/android/server/soundtrigger/SoundTriggerLogger$StringEvent;-><init>(Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerLogger$StringEvent;->eventToString()Ljava/lang/String;
+HSPLcom/android/server/soundtrigger/SoundTriggerLogger;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/soundtrigger/SoundTriggerLogger;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/soundtrigger/SoundTriggerLogger;->log(Lcom/android/server/soundtrigger/SoundTriggerLogger$Event;)V
+HSPLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Landroid/content/Context;)V
 PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->getModuleProperties()Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
 PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->isInitialized()Z
 HSPLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->setSoundTriggerHelper(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->startRecognition(ILandroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
 PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->stopRecognition(ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
 PLcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;->unloadKeyphraseModel(I)I
-PLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->addOp(J)V
-PLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->clearOldOps(J)V
-PLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->getOpsAdded()I
+PLcom/android/server/soundtrigger/SoundTriggerService$NumOps;-><init>()V
+PLcom/android/server/soundtrigger/SoundTriggerService$NumOps;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$1;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->addOp(J)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->clearOldOps(J)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$NumOps;->getOpsAdded()I
+HPLcom/android/server/soundtrigger/SoundTriggerService$Operation;-><init>(Ljava/lang/Runnable;Lcom/android/server/soundtrigger/SoundTriggerService$Operation$ExecuteOp;Ljava/lang/Runnable;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$Operation;-><init>(Ljava/lang/Runnable;Lcom/android/server/soundtrigger/SoundTriggerService$Operation$ExecuteOp;Ljava/lang/Runnable;Lcom/android/server/soundtrigger/SoundTriggerService$1;)V
 PLcom/android/server/soundtrigger/SoundTriggerService$Operation;->drop()V
 PLcom/android/server/soundtrigger/SoundTriggerService$Operation;->run(ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService$1;->onOpFinished(I)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Ljava/util/UUID;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->bind()V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->destroy()V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->disconnectLocked()V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onError$3$SoundTriggerService$RemoteSoundTriggerDetectionService()V
+PLcom/android/server/soundtrigger/SoundTriggerService$Operation;->setup()V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService$1;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;Lcom/android/server/soundtrigger/SoundTriggerService;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService$1;->onOpFinished(I)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;Ljava/util/UUID;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/os/UserHandle;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->access$1200(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->access$1300(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)Landroid/util/ArraySet;
+PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->access$1400(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)Ljava/util/ArrayList;
+PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->access$1500(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)Z
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->access$1600(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->bind()V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->destroy()V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->disconnectLocked()V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onError$3$SoundTriggerService$RemoteSoundTriggerDetectionService()V
 PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onError$4$SoundTriggerService$RemoteSoundTriggerDetectionService(IILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onGenericSoundTriggerDetected$0$SoundTriggerService$RemoteSoundTriggerDetectionService()V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onGenericSoundTriggerDetected$1$SoundTriggerService$RemoteSoundTriggerDetectionService(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onError(I)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onGenericSoundTriggerDetected(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onGenericSoundTriggerDetected$0$SoundTriggerService$RemoteSoundTriggerDetectionService()V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$onGenericSoundTriggerDetected$1$SoundTriggerService$RemoteSoundTriggerDetectionService(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;ILandroid/media/soundtrigger/ISoundTriggerDetectionService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->lambda$wfDlqQ7aPvu9qZCZ24jJu4tfUMY(Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onError(I)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onGenericSoundTriggerDetected(Landroid/hardware/soundtrigger/SoundTrigger$GenericRecognitionEvent;)V
 PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onRecognitionPaused()V
 PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onRecognitionResumed()V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->pingBinder()Z
-PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->runOrAddOperation(Lcom/android/server/soundtrigger/SoundTriggerService$Operation;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->pingBinder()Z
+HPLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->runOrAddOperation(Lcom/android/server/soundtrigger/SoundTriggerService$Operation;)V
 PLcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;->stopAllPendingOperations()V
-PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->deleteSoundModel(Landroid/os/ParcelUuid;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker$SoundModelStat;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;)V
+HSPLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;->onStart(Ljava/util/UUID;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;->onStop(Ljava/util/UUID;)V
+HSPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;-><init>(Lcom/android/server/soundtrigger/SoundTriggerService;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->deleteSoundModel(Landroid/os/ParcelUuid;)V
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->getModelState(Landroid/os/ParcelUuid;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->getSoundModel(Landroid/os/ParcelUuid;)Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;
 PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->isRecognitionActive(Landroid/os/ParcelUuid;)Z
-PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->loadGenericSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)I
-PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->startRecognitionForService(Landroid/os/ParcelUuid;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->loadGenericSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->startRecognition(Landroid/os/ParcelUuid;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->startRecognitionForService(Landroid/os/ParcelUuid;Landroid/os/Bundle;Landroid/content/ComponentName;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+PLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->stopRecognition(Landroid/os/ParcelUuid;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
+HPLcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;->updateSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$GenericSoundModel;)V
+HSPLcom/android/server/soundtrigger/SoundTriggerService;-><clinit>()V
 HSPLcom/android/server/soundtrigger/SoundTriggerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$000(Lcom/android/server/soundtrigger/SoundTriggerService;Ljava/lang/String;)V
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$100(Lcom/android/server/soundtrigger/SoundTriggerService;)Z
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$1000(Lcom/android/server/soundtrigger/SoundTriggerService;)Landroid/util/ArrayMap;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$200()Lcom/android/server/soundtrigger/SoundTriggerLogger;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$300(Lcom/android/server/soundtrigger/SoundTriggerService;)Lcom/android/server/soundtrigger/SoundTriggerHelper;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$400(Lcom/android/server/soundtrigger/SoundTriggerService;)Lcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$500(Lcom/android/server/soundtrigger/SoundTriggerService;)Lcom/android/server/soundtrigger/SoundTriggerDbHelper;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$600(Lcom/android/server/soundtrigger/SoundTriggerService;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$700(Lcom/android/server/soundtrigger/SoundTriggerService;)Ljava/util/TreeMap;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$800(Lcom/android/server/soundtrigger/SoundTriggerService;)Ljava/lang/Object;
+PLcom/android/server/soundtrigger/SoundTriggerService;->access$900(Lcom/android/server/soundtrigger/SoundTriggerService;)Ljava/util/TreeMap;
+HPLcom/android/server/soundtrigger/SoundTriggerService;->enforceCallingPermission(Ljava/lang/String;)V
 HSPLcom/android/server/soundtrigger/SoundTriggerService;->initSoundTriggerHelper()V
-PLcom/android/server/soundtrigger/SoundTriggerService;->isInitialized()Z
+HPLcom/android/server/soundtrigger/SoundTriggerService;->isInitialized()Z
 HSPLcom/android/server/soundtrigger/SoundTriggerService;->onBootPhase(I)V
 HSPLcom/android/server/soundtrigger/SoundTriggerService;->onStart()V
 HSPLcom/android/server/soundtrigger/SoundTriggerService;->onStartUser(I)V
-PLcom/android/server/stats/-$$Lambda$StatsCompanionService$NHd5PvhbQidUUj9jg6uXxw6FMs0;->onUidCpuTime(ILjava/lang/Object;)V
-PLcom/android/server/stats/StatsCompanionService$AnomalyAlarmListener;->onAlarm()V
-HSPLcom/android/server/stats/StatsCompanionService$AppUpdateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/stats/StatsCompanionService$ConnectivityStatsCallback;->onAvailable(Landroid/net/Network;)V
-PLcom/android/server/stats/StatsCompanionService$ConnectivityStatsCallback;->onLost(Landroid/net/Network;)V
-HSPLcom/android/server/stats/StatsCompanionService$Lifecycle;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/stats/StatsCompanionService$Lifecycle;->onBootPhase(I)V
-HSPLcom/android/server/stats/StatsCompanionService$Lifecycle;->onStart()V
-HSPLcom/android/server/stats/StatsCompanionService$PeriodicAlarmListener;->onAlarm()V
-HSPLcom/android/server/stats/StatsCompanionService$PullingAlarmListener;->onAlarm()V
-HSPLcom/android/server/stats/StatsCompanionService$ThermalEventListener;->notifyThrottling(Landroid/os/Temperature;)V
-HSPLcom/android/server/stats/StatsCompanionService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/stats/StatsCompanionService;->addNetworkStats(ILjava/util/List;Landroid/net/NetworkStats;Z)V
-HSPLcom/android/server/stats/StatsCompanionService;->cancelAlarmForSubscriberTriggering()V
-HSPLcom/android/server/stats/StatsCompanionService;->cancelAnomalyAlarm()V
-PLcom/android/server/stats/StatsCompanionService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/stats/StatsCompanionService;->enforceCallingPermission()V
-HSPLcom/android/server/stats/StatsCompanionService;->informAllUidsLocked(Landroid/content/Context;)V
-PLcom/android/server/stats/StatsCompanionService;->pullBinderCallsStats(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullCpuTimePerThreadFreq(IJJLjava/util/List;)V
-HSPLcom/android/server/stats/StatsCompanionService;->pullData(I)[Landroid/os/StatsLogEventWrapper;
-HSPLcom/android/server/stats/StatsCompanionService;->pullDebugElapsedClock(IJJLjava/util/List;)V
-HSPLcom/android/server/stats/StatsCompanionService;->pullDebugFailingElapsedClock(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullLooperStats(IJJLjava/util/List;)V
-HSPLcom/android/server/stats/StatsCompanionService;->pullMobileBytesTransferByFgBg(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullNativeProcessMemoryState(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullNumBiometricsEnrolled(IIJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullProcessMemoryHighWaterMark(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->pullProcessMemoryState(IJJLjava/util/List;)V
-HSPLcom/android/server/stats/StatsCompanionService;->pullTemperature(IJJLjava/util/List;)V
-PLcom/android/server/stats/StatsCompanionService;->rollupNetworkStatsByFGBG(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
-HSPLcom/android/server/stats/StatsCompanionService;->sayHiToStatsd()V
-PLcom/android/server/stats/StatsCompanionService;->sendDataBroadcast(Landroid/os/IBinder;J)V
-PLcom/android/server/stats/StatsCompanionService;->sendSubscriberBroadcast(Landroid/os/IBinder;JJJJ[Ljava/lang/String;Landroid/os/StatsDimensionsValue;)V
-HSPLcom/android/server/stats/StatsCompanionService;->setAlarmForSubscriberTriggering(J)V
-HSPLcom/android/server/stats/StatsCompanionService;->setAnomalyAlarm(J)V
-HSPLcom/android/server/stats/StatsCompanionService;->setPullingAlarm(J)V
-HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$Ex4WQoiXjzWDsRHD7oXCkXIQBB4;->run()V
-HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$QO0p6KVnf0wFwF8hglhodfvx26s;->run()V
-HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$UR67Ud0NgV9VHyelUmYzZNtR6O4;->run()V
-HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$hFIYx92VN4dEb4589FKdmNsCofc;->run()V
-HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$yr21OX4Hyd_XfExwnVnVIn3Jfe4;->run()V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionCancelled(I)V
+HPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$-_QZ-VR2645z-GkbokL_T8I__48;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
+PLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$-_QZ-VR2645z-GkbokL_T8I__48;->onValues(II)V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$TgbC0Y00RFANX4qn5-S2zqA0RJU;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicReference;)V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$TgbC0Y00RFANX4qn5-S2zqA0RJU;->onValues(ILandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)V
+PLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$ewHo6fX75Dw1073KIePOuh3oLIE;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;)V
+PLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$ewHo6fX75Dw1073KIePOuh3oLIE;->onValues(II)V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$fbvBJLiyU152ejAJj5a9PvFEhUI;-><init>(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicReference;)V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$fbvBJLiyU152ejAJj5a9PvFEhUI;->onValues(ILandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerMiddlewareService$Lifecycle$-t8UndY0AHGyM6n9ce2y6qok3Ho;-><clinit>()V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerMiddlewareService$Lifecycle$-t8UndY0AHGyM6n9ce2y6qok3Ho;-><init>()V
+HSPLcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerMiddlewareService$Lifecycle$-t8UndY0AHGyM6n9ce2y6qok3Ho;->create()Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HSPLcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;-><init>()V
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlPhrase(Landroid/media/soundtrigger_middleware/Phrase;)Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Phrase;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlPhraseRecognitionExtra(Landroid/media/soundtrigger_middleware/PhraseRecognitionExtra;)Landroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlPhraseSoundModel(Landroid/media/soundtrigger_middleware/PhraseSoundModel;)Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlRecognitionConfig(Landroid/media/soundtrigger_middleware/RecognitionConfig;)Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlRecognitionConfig(Landroid/media/soundtrigger_middleware/RecognitionConfig;)Landroid/hardware/soundtrigger/V2_3/RecognitionConfig;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlRecognitionModes(I)I
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlSoundModel(Landroid/media/soundtrigger_middleware/SoundModel;)Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlSoundModelType(I)I
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->aidl2hidlUuid(Ljava/lang/String;)Landroid/hardware/audio/common/V2_0/Uuid;
+HSPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlAudioCapabilities(I)I
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlAudioConfig(Landroid/hardware/audio/common/V2_0/AudioConfig;)Landroid/media/audio/common/AudioConfig;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlConfidenceLevel(Landroid/hardware/soundtrigger/V2_0/ConfidenceLevel;)Landroid/media/soundtrigger_middleware/ConfidenceLevel;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlOffloadInfo(Landroid/hardware/audio/common/V2_0/AudioOffloadInfo;)Landroid/media/audio/common/AudioOffloadInfo;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlPhraseRecognitionEvent(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;)Landroid/media/soundtrigger_middleware/PhraseRecognitionEvent;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlPhraseRecognitionExtra(Landroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;)Landroid/media/soundtrigger_middleware/PhraseRecognitionExtra;
+HSPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlProperties(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)Landroid/media/soundtrigger_middleware/SoundTriggerModuleProperties;
+HSPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlProperties(Landroid/hardware/soundtrigger/V2_3/Properties;)Landroid/media/soundtrigger_middleware/SoundTriggerModuleProperties;
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionEvent(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;)Landroid/media/soundtrigger_middleware/RecognitionEvent;
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionEvent(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;)Landroid/media/soundtrigger_middleware/RecognitionEvent;
+HSPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionModes(I)I
+HPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlRecognitionStatus(I)I
+PLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlSoundModelType(I)I
+HSPLcom/android/server/soundtrigger_middleware/ConversionUtil;->hidl2aidlUuid(Landroid/hardware/audio/common/V2_0/Uuid;)Ljava/lang/String;
+PLcom/android/server/soundtrigger_middleware/HalException;-><init>(ILjava/lang/String;)V
+HPLcom/android/server/soundtrigger_middleware/HalException;->toString()Ljava/lang/String;
+HSPLcom/android/server/soundtrigger_middleware/Hw2CompatUtil;->convertProperties_2_0_to_2_3(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)Landroid/hardware/soundtrigger/V2_3/Properties;
+PLcom/android/server/soundtrigger_middleware/Hw2CompatUtil;->convertRecognitionConfig_2_3_to_2_1(Landroid/hardware/soundtrigger/V2_3/RecognitionConfig;)Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;
+HPLcom/android/server/soundtrigger_middleware/InternalServerError;-><init>(Ljava/lang/Throwable;)V
+HPLcom/android/server/soundtrigger_middleware/RecoverableException;-><init>(ILjava/lang/String;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$NotSupported;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$SoundTriggerCallback;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$SoundTriggerCallback;-><init>(Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$1;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$SoundTriggerCallback;->phraseRecognitionCallback_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$SoundTriggerCallback;->recognitionCallback_2_1(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;I)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;-><init>(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;-><init>(Landroid/os/IHwBinder;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->as2_0()Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->as2_1()Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->as2_2()Landroid/hardware/soundtrigger/V2_2/ISoundTriggerHw;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->as2_3()Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->getModelState(I)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->getProperties()Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->getProperties()Landroid/hardware/soundtrigger/V2_3/Properties;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->getProperties_2_0()Landroid/hardware/soundtrigger/V2_3/Properties;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->handleHalStatus(ILjava/lang/String;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->lambda$getProperties$0(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicReference;ILandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->lambda$getProperties_2_0$5(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicReference;ILandroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->lambda$loadPhraseSoundModel$2(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;II)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->lambda$loadSoundModel$1(Ljava/util/concurrent/atomic/AtomicInteger;Ljava/util/concurrent/atomic/AtomicInteger;II)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->linkToDeath(Landroid/os/IHwBinder$DeathRecipient;J)Z
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->loadPhraseSoundModel(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;I)I
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->loadSoundModel(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;I)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->startRecognition(ILandroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->startRecognition(ILandroid/hardware/soundtrigger/V2_3/RecognitionConfig;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->startRecognition_2_1(ILandroid/hardware/soundtrigger/V2_3/RecognitionConfig;Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->stopRecognition(I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;->unloadSoundModel(I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider$AudioSession;-><init>(III)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;-><init>()V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;-><init>([Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
+HSPLcom/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/SoundTriggerMiddlewareImpl;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;->setExternalCaptureState(Z)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;->lambda$onStart$0()Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;->onStart()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModelState$Activity;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModelState$Activity;-><init>(Ljava/lang/String;I)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModelState;-><init>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->attach(Landroid/media/soundtrigger_middleware/ISoundTriggerModule;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->detach()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->forceRecognitionEvent(I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->loadModel(Landroid/media/soundtrigger_middleware/SoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->loadPhraseModel(Landroid/media/soundtrigger_middleware/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->onModuleDied()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->onPhraseRecognition(ILandroid/media/soundtrigger_middleware/PhraseRecognitionEvent;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->onRecognition(ILandroid/media/soundtrigger_middleware/RecognitionEvent;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->onRecognitionAvailabilityChange(Z)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->startRecognition(ILandroid/media/soundtrigger_middleware/RecognitionConfig;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->stopRecognition(I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;->unloadModel(I)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerMiddlewareService;Landroid/content/Context;)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;-><init>(Landroid/media/soundtrigger_middleware/ISoundTriggerMiddlewareService;Landroid/content/Context;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$1;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->access$100(Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->access$200(Ljava/lang/Exception;)Ljava/lang/RuntimeException;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->attach(ILandroid/media/soundtrigger_middleware/ISoundTriggerCallback;)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->checkPermissions()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->checkPreemptPermissions()V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->enforcePermission(Ljava/lang/String;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->handleException(Ljava/lang/Exception;)Ljava/lang/RuntimeException;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->listModules()[Landroid/media/soundtrigger_middleware/SoundTriggerModuleDescriptor;
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;->setExternalCaptureState(Z)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;-><clinit>()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;-><init>(Ljava/lang/String;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$1;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1000(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1000(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1100(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1100(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1200(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$1300(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$700(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/SoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$800(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$800(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/SoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$900(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->access$900(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;Landroid/media/soundtrigger_middleware/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->forceRecognitionEvent()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->getState()Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->load(Landroid/media/soundtrigger_middleware/PhraseSoundModel;)I
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->load(Landroid/media/soundtrigger_middleware/SoundModel;)I
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->phraseRecognitionCallback(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->recognitionCallback(Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->setState(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$ModelState;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->startRecognition(Landroid/media/soundtrigger_middleware/RecognitionConfig;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->stopRecognition()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session$Model;->unload()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;-><init>(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$1;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->access$2000(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)Ljava/util/Map;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->access$2100(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->access$2100(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)Ljava/util/Map;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->access$2200(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->access$300(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->checkValid()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->forceRecognitionEvent(I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->loadModel(Landroid/media/soundtrigger_middleware/SoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->loadPhraseModel(Landroid/media/soundtrigger_middleware/PhraseSoundModel;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->moduleDied()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->notifyRecognitionAvailability()V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->startRecognition(ILandroid/media/soundtrigger_middleware/RecognitionConfig;)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->stopRecognition(I)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;->unloadModel(I)V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerModule;-><clinit>()V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerModule;-><init>(Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;)V
+HSPLcom/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;->access$1700(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Z
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$1800(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$1800(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Z
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$1900(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$1900(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$2000(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$400(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$400(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$404(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$406(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$500(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$500(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Landroid/media/soundtrigger_middleware/SoundTriggerModuleProperties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$504(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$506(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)I
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->access$600(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;)Landroid/media/soundtrigger_middleware/SoundTriggerModuleProperties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->attach(Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)Landroid/media/soundtrigger_middleware/ISoundTriggerModule;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->attach(Landroid/media/soundtrigger_middleware/ISoundTriggerCallback;)Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->attachToHal()V
+HSPLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->getProperties()Landroid/media/soundtrigger_middleware/SoundTriggerModuleProperties;
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->removeSession(Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;)V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->reset()V
+PLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->serviceDied(J)V
+HPLcom/android/server/soundtrigger_middleware/SoundTriggerModule;->setExternalCaptureState(Z)V
+PLcom/android/server/soundtrigger_middleware/UuidUtil;-><clinit>()V
+HPLcom/android/server/soundtrigger_middleware/ValidationUtil;->validateGenericModel(Landroid/media/soundtrigger_middleware/SoundModel;)V
+HPLcom/android/server/soundtrigger_middleware/ValidationUtil;->validateModel(Landroid/media/soundtrigger_middleware/SoundModel;I)V
+HPLcom/android/server/soundtrigger_middleware/ValidationUtil;->validatePhraseModel(Landroid/media/soundtrigger_middleware/PhraseSoundModel;)V
+HPLcom/android/server/soundtrigger_middleware/ValidationUtil;->validateRecognitionConfig(Landroid/media/soundtrigger_middleware/RecognitionConfig;)V
+HPLcom/android/server/soundtrigger_middleware/ValidationUtil;->validateUuid(Ljava/lang/String;)V
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$EbRlEjVa52EZqvTktBrsVz_xiQc;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$EbRlEjVa52EZqvTktBrsVz_xiQc;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$J0XbDHzcNTw46LNg2i54ecFZHmo;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$J0XbDHzcNTw46LNg2i54ecFZHmo;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$LXlSF9hVw5xJWZeE9MueVeGuYlE;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$SuO7HJ54GUnG0kWIGHl94Gs0AlM;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$SuO7HJ54GUnG0kWIGHl94Gs0AlM;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$VacoZ2wbIeAc9JIIYvmytuwBEKQ;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$WYL8jwEtrR3YxQtIXV6asRHqKLI;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$WYL8jwEtrR3YxQtIXV6asRHqKLI;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$fvH7sIVZhG6jdyiuwvkwrEA6Ma8;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$fvH7sIVZhG6jdyiuwvkwrEA6Ma8;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$rfnm7rXB2YTVbgaO43K28w78oKk;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$rfnm7rXB2YTVbgaO43K28w78oKk;->run()V
+HSPLcom/android/server/stats/-$$Lambda$StatsPullAtomService$ut-c4lKIS9fPnUOWESOzEKZZwUk;-><init>(Lcom/android/server/stats/StatsPullAtomService;)V
+PLcom/android/server/stats/-$$Lambda$StatsPullAtomService$ut-c4lKIS9fPnUOWESOzEKZZwUk;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/IonMemoryUtil$IonAllocations;-><init>()V
+PLcom/android/server/stats/IonMemoryUtil;-><clinit>()V
+HPLcom/android/server/stats/IonMemoryUtil;->parseIonHeapSizeFromDebugfs(Ljava/lang/String;)J
+HPLcom/android/server/stats/IonMemoryUtil;->parseProcessIonHeapSizesFromDebugfs(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/stats/IonMemoryUtil;->readFile(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/stats/IonMemoryUtil;->readProcessSystemIonHeapSizesFromDebugfs()Ljava/util/List;
+PLcom/android/server/stats/IonMemoryUtil;->readSystemIonHeapSizeFromDebugfs()J
+HPLcom/android/server/stats/ProcfsMemoryUtil$MemorySnapshot;-><init>()V
+PLcom/android/server/stats/ProcfsMemoryUtil;-><clinit>()V
+HPLcom/android/server/stats/ProcfsMemoryUtil;->forEachPid(Ljava/util/function/BiConsumer;)V
+HPLcom/android/server/stats/ProcfsMemoryUtil;->readCmdlineFromProcfs(I)Ljava/lang/String;
+HPLcom/android/server/stats/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/ProcfsMemoryUtil$MemorySnapshot;
+HSPLcom/android/server/stats/StatsPullAtomService;-><init>(Landroid/content/Context;)V
+HPLcom/android/server/stats/StatsPullAtomService;->addNetworkStats(ILjava/util/List;Landroid/net/NetworkStats;Z)V
+PLcom/android/server/stats/StatsPullAtomService;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
+PLcom/android/server/stats/StatsPullAtomService;->fetchBluetoothData()Landroid/bluetooth/BluetoothActivityEnergyInfo;
+PLcom/android/server/stats/StatsPullAtomService;->getINetworkStatsService()Landroid/net/INetworkStatsService;
+HSPLcom/android/server/stats/StatsPullAtomService;->lambda$onBootPhase$0$StatsPullAtomService()V
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerBluetoothActivityInfo$8$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerBluetoothBytesTransfer$7$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerMobileBytesTransfer$5$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerMobileBytesTransferBackground$6$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerWifiBytesTransfer$3$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->lambda$registerWifiBytesTransferBackground$4$StatsPullAtomService(ILjava/util/List;)I
+HSPLcom/android/server/stats/StatsPullAtomService;->onBootPhase(I)V
+HSPLcom/android/server/stats/StatsPullAtomService;->onStart()V
+PLcom/android/server/stats/StatsPullAtomService;->pullBluetoothActivityInfo(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->pullBluetoothBytesTransfer(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->pullMobileBytesTransfer(ILjava/util/List;)I
+HPLcom/android/server/stats/StatsPullAtomService;->pullMobileBytesTransferBackground(ILjava/util/List;)I
+HPLcom/android/server/stats/StatsPullAtomService;->pullWifiBytesTransfer(ILjava/util/List;)I
+PLcom/android/server/stats/StatsPullAtomService;->pullWifiBytesTransferBackground(ILjava/util/List;)I
+HSPLcom/android/server/stats/StatsPullAtomService;->registerAllPullers()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerAppOps()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerAppSize()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerAppsOnExternalStorageInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBatteryCycleCount()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBatteryLevel()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBatteryVoltage()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBinderCalls()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBinderCallsExceptions()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBluetoothActivityInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBluetoothBytesTransfer()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerBuildInformation()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCategorySize()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCoolingDevice()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuActiveTime()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuClusterTime()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuTimePerFreq()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuTimePerThreadFreq()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuTimePerUid()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerCpuTimePerUidFreq()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDangerousPermissionState()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDangerousPermissionStateSampled()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDebugElapsedClock()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDebugFailingElapsedClock()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDeviceCalculatedPowerBlameOther()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDeviceCalculatedPowerBlameUid()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDeviceCalculatedPowerUse()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDirectoryUsage()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDiskIO()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerDiskStats()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerExternalStorageInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerFaceSettings()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerFullBatteryCapacity()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerKernelWakelock()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerLooperStats()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerMobileBytesTransfer()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerMobileBytesTransferBackground()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerModemActivityInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerNotificationRemoteViews()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerNumFacesEnrolled()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerNumFingerprintsEnrolled()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerPowerProfile()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcStats()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcStatsPkgProc()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcessCpuTime()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcessMemoryHighWaterMark()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcessMemorySnapshot()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcessMemoryState()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerProcessSystemIonHeapSize()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerRemainingBatteryCapacity()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerRoleHolder()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerSystemElapsedRealtime()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerSystemIonHeapSize()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerSystemUptime()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerTemperature()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerTimeZoneDataInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerWifiActivityInfo()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerWifiBytesTransfer()V
+HSPLcom/android/server/stats/StatsPullAtomService;->registerWifiBytesTransferBackground()V
+HPLcom/android/server/stats/StatsPullAtomService;->rollupNetworkStatsByFGBG(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$-PhCvl52WhUMdMnxVAqihfFHthA;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$0P4nZ-nE165g-Q5g9CoYyB1Byw4;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$0P4nZ-nE165g-Q5g9CoYyB1Byw4;->onPullAtom(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$1pxf28Ik2lMu276JUeacrtqOJzc;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$1pxf28Ik2lMu276JUeacrtqOJzc;->onUidCpuTime(ILjava/lang/Object;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$1tOYlDsL-P_KhgklFe6EqdCi9Yk;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$2Fp18gjakqm8R81qgIOHaDrmsU0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$2Fp18gjakqm8R81qgIOHaDrmsU0;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$30xS0mVfwQjdpwkeyHDi7Bx6u60;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$30xS0mVfwQjdpwkeyHDi7Bx6u60;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$3OXuKaMjWs_ET87IAgknuvoqC8U;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$3OXuKaMjWs_ET87IAgknuvoqC8U;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$3qrx8WI68Lm0XGBBfW4gzODU9yk;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7UAUwQTlDkqBQjoyOoessLYxCH0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7UAUwQTlDkqBQjoyOoessLYxCH0;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7hfhsUfLzXxgbvx0G5m-nXfuhtE;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7jldJaULxe_82vcFrliUbHpA5lE;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7jldJaULxe_82vcFrliUbHpA5lE;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7xMtizDmeMIdTUoXvmAJ9__a1H8;-><init>(ILjava/util/List;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7xMtizDmeMIdTUoXvmAJ9__a1H8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AJY7IPMD64l6eMvl-4Yk1PNJTC8;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AJY7IPMD64l6eMvl-4Yk1PNJTC8;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AbytlHPB_renx2JnIl7w0EkN8Ms;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AiS8ePl8e1Vo_1hXDcyJiYZVEak;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AiS8ePl8e1Vo_1hXDcyJiYZVEak;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DD__7RQZDPvJeL9pnb_7J1voUNE;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DD__7RQZDPvJeL9pnb_7J1voUNE;->run()V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DaTIT3haxTQC9hsnPFM6rU5N88A;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DaTIT3haxTQC9hsnPFM6rU5N88A;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ErlITMC3hXYvJk7H-BuZWp0l5ko;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$GT9G5Edej6G4xpQClwAG4i73Ml8;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$GT9G5Edej6G4xpQClwAG4i73Ml8;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Gu78SpEIgqYCwZEn1wrkHRIhYfw;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Gu78SpEIgqYCwZEn1wrkHRIhYfw;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$H5--fOxGaHVjnFaRkyzvBX76HOE;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$HX4G1hDcJMKgszczqxpSHdoDK_s;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$HoKaYjaEIOIRXJyDFklY-rgc_cw;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$HoKaYjaEIOIRXJyDFklY-rgc_cw;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$I9d0JaNY8gTVS5nJ3bvbDlp2yu0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$I9d0JaNY8gTVS5nJ3bvbDlp2yu0;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$IB4WDvYz1DDpmLMD3gEZhLRa46s;-><init>(Landroid/util/SparseArray;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$IB4WDvYz1DDpmLMD3gEZhLRa46s;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ITU8q06caEdamlLZPazkHB2M8iE;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ITU8q06caEdamlLZPazkHB2M8iE;->onValues(ILandroid/hardware/health/V2_0/HealthInfo;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$KQag3_StEOzx9XWRUKksVrW-B4o;-><init>(ILjava/util/List;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$KQag3_StEOzx9XWRUKksVrW-B4o;->onValues(ILandroid/hardware/health/V2_0/HealthInfo;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$LX85szVlyRD-qrhFa1vvBo3yiHI;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$LX85szVlyRD-qrhFa1vvBo3yiHI;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$M5tfOmnyD25Ws5xFmcaNZmCcWv4;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$M5tfOmnyD25Ws5xFmcaNZmCcWv4;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Myxd926lI020RejJAC3J7xJBf-M;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Myxd926lI020RejJAC3J7xJBf-M;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$O-i_qJRna30dOvZwoceUXgRcdmM;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$O-i_qJRna30dOvZwoceUXgRcdmM;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ODMP0J94F-i0lScEZVqBmBZetGs;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$OnuY6QGq5IcThy5OPAdG5C6fFrU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$PXO4cqN_PpXkJgCq2SHpV_sY50E;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$PXO4cqN_PpXkJgCq2SHpV_sY50E;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$QQcMZJIXQd5YLqJodYJFOwUBv0c;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$QQcMZJIXQd5YLqJodYJFOwUBv0c;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$QjQnTX1PdNCoFkVsVjiS8xeDDC8;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$RJwHYKCxBtI76CmPqdZceiz3WOc;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$RPju9l8LZxvj1kR9SO_j3YArLwk;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Sf77fvy4SVd9GzRqpAUUydeJGQI;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Sf77fvy4SVd9GzRqpAUUydeJGQI;->onPullAtom(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$T3eGvsVXN09Gi-BtBQXR4zdDBEg;-><init>(Landroid/util/SparseArray;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$T3eGvsVXN09Gi-BtBQXR4zdDBEg;->accept(Ljava/lang/Object;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$T4pO_UW2jhPPRWvYxUe66agQ9_U;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$T4pO_UW2jhPPRWvYxUe66agQ9_U;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$TbCE6UdFHnpFKs5GJ5OeGvkZR3w;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$TbCE6UdFHnpFKs5GJ5OeGvkZR3w;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$U0On1Mn47-Y0rxvEemY9d5CvB7A;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$UzadvADZjWad2cUMtKWnDa-bkao;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$UzadvADZjWad2cUMtKWnDa-bkao;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$VuGEpDG3j9NcXTay60birJz1dKw;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$VuGEpDG3j9NcXTay60birJz1dKw;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$W16O4qsBRa22kMF_rGhLALJrDX0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$WI1rTiStFbJ3m4p9d8AvyRXzTXU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$WI1rTiStFbJ3m4p9d8AvyRXzTXU;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZUW2WJxdpx34RXfmAZzvaSioIaI;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZUW2WJxdpx34RXfmAZzvaSioIaI;->onPullAtom(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZcA3hS41MDSLP3tvbVw7ycWV2Uk;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZcA3hS41MDSLP3tvbVw7ycWV2Uk;->onUidCpuTime(ILjava/lang/Object;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$azxbjQftB2lwBb_UEHTETFb5urU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$azxbjQftB2lwBb_UEHTETFb5urU;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bGdd1XQKPBSlirlhMqL7Kyr4dKU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bVYBhIENPiTPrSDw3qDtspWRc68;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bncFYZhYtBOc8H2sC7RT_uK4VQc;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bncFYZhYtBOc8H2sC7RT_uK4VQc;->onUidStorageStats(IJJJJJJJJJJ)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$cD_BSMC6DqR-o7gxzB0mTMww2pc;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$cD_BSMC6DqR-o7gxzB0mTMww2pc;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$dvk2NfS9657o0VC9lBgVa8gpvlQ;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$dvk2NfS9657o0VC9lBgVa8gpvlQ;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$eKQ59cCrSM0iXjIA64vCoqEuTaQ;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$eKQ59cCrSM0iXjIA64vCoqEuTaQ;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ew5jVI8ng1800NuFBR9nuVqZhEA;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fktJbqJAvHUrt48VRPzhsYMAbE4;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fktJbqJAvHUrt48VRPzhsYMAbE4;->onUidCpuTime(ILjava/lang/Object;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fl3y2rQNVEsKV4HvhEyC2k3aSW4;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fl3y2rQNVEsKV4HvhEyC2k3aSW4;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$h23-vyYl4vByordF3qxCf47oQcY;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$h23-vyYl4vByordF3qxCf47oQcY;->onUidStorageStats(IJJJJJJJJJJ)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hIAQYRkW-2p4zc6JTn5OwHqbM5M;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hIAQYRkW-2p4zc6JTn5OwHqbM5M;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hKgCHOcWWjhlKa_oJzU15Zt0JUY;-><init>(Landroid/os/SynchronousResultReceiver;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hKgCHOcWWjhlKa_oJzU15Zt0JUY;->onWifiActivityEnergyInfo(Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hPsC5VFMB0pUxEe6YNkhn5cdnB8;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hPsC5VFMB0pUxEe6YNkhn5cdnB8;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$iWJKUaJRDKWP6Tm1GOLkhBCdoSw;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$iWJKUaJRDKWP6Tm1GOLkhBCdoSw;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$jQfeAT-DDHk5j0nn54uyxEQ-1qo;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$jQfeAT-DDHk5j0nn54uyxEQ-1qo;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$kbyq1Jaw0bLtz4QZ0dHLQDBcS84;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$lXlXj5VhcAmBNund256UqZwrUcQ;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$lXlXj5VhcAmBNund256UqZwrUcQ;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$n5Z40V94ruxObttUmeeT9hJ2lwU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$n5Z40V94ruxObttUmeeT9hJ2lwU;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ndKYmfQrhE59wBrqdr_J4mR9XeQ;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ndKYmfQrhE59wBrqdr_J4mR9XeQ;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$q64SJPz4qOJVhsbLkSd-TefRkz4;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$q64SJPz4qOJVhsbLkSd-TefRkz4;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$qv-qUoYV_cdRHv47l_lHeb43i84;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$roxBOSLRvrWWGOq4tg7SrKcwYkM;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$sHsQqf-uX2oC0xi9S65s-8cl6w0;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$sHsQqf-uX2oC0xi9S65s-8cl6w0;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$sN2JKQjhqafdV9iBufFp7wWmkBg;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$tgrBI__GVejUkinaoMC5NY-7TjM;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$uAEfAOa33shUMp3_0vxKUg1a16s;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$uAEfAOa33shUMp3_0vxKUg1a16s;->onPullAtom(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$u_a4BjhN7rx49bnJveS1mjwhkb8;-><init>(ILjava/util/List;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$u_a4BjhN7rx49bnJveS1mjwhkb8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ufk9iL1tEj0A5bia0nI_H6pWIHE;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ufk9iL1tEj0A5bia0nI_H6pWIHE;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$vXSqtIKAG3al1X91EB3FoH96cWo;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$vXSqtIKAG3al1X91EB3FoH96cWo;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$yHqXLPks8Cf6arciMxSh7owd6sU;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$yHqXLPks8Cf6arciMxSh7owd6sU;->onPullAtom(ILjava/util/List;)I
+PLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$z9YxSZJALshcZpXiGJxNWlLa2ME;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$zkqK-r9QsJBeVy1sojo4bOB8YhY;-><init>(ILjava/util/List;)V
+HPLcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$zkqK-r9QsJBeVy1sojo4bOB8YhY;->onUidCpuTime(ILjava/lang/Object;)V
+PLcom/android/server/stats/pull/-$$Lambda$wPejPqIRC0ueiw9uak8ULakT1R8;-><init>(Ljava/util/concurrent/CompletableFuture;)V
+PLcom/android/server/stats/pull/-$$Lambda$wPejPqIRC0ueiw9uak8ULakT1R8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/stats/pull/IonMemoryUtil$IonAllocations;-><init>()V
+PLcom/android/server/stats/pull/IonMemoryUtil;-><clinit>()V
+HPLcom/android/server/stats/pull/IonMemoryUtil;->parseIonHeapSizeFromDebugfs(Ljava/lang/String;)J
+HPLcom/android/server/stats/pull/IonMemoryUtil;->parseProcessIonHeapSizesFromDebugfs(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/stats/pull/IonMemoryUtil;->readFile(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/stats/pull/IonMemoryUtil;->readProcessSystemIonHeapSizesFromDebugfs()Ljava/util/List;
+PLcom/android/server/stats/pull/IonMemoryUtil;->readSystemIonHeapSizeFromDebugfs()J
+HPLcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;-><init>()V
+PLcom/android/server/stats/pull/ProcfsMemoryUtil;-><clinit>()V
+HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->forEachPid(Ljava/util/function/BiConsumer;)V
+HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->getProcessCmdlines()Landroid/util/SparseArray;
+HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->readCmdlineFromProcfs(I)Ljava/lang/String;
+HPLcom/android/server/stats/pull/ProcfsMemoryUtil;->readMemorySnapshotFromProcfs(I)Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;
+PLcom/android/server/stats/pull/StatsPullAtomService$1;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+PLcom/android/server/stats/pull/StatsPullAtomService$1;->execute(Ljava/lang/Runnable;)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$1;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;->onAvailable(Landroid/net/Network;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;->onLost(Landroid/net/Network;)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService;Lcom/android/server/stats/pull/StatsPullAtomService$1;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;->onPullAtom(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;-><init>(Lcom/android/server/stats/pull/StatsPullAtomService$1;)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;->notifyThrottling(Landroid/os/Temperature;)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;-><clinit>()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->access$000(Lcom/android/server/stats/pull/StatsPullAtomService;IILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->addNetworkStats(ILjava/util/List;Landroid/net/NetworkStats;Z)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->awaitControllerInfo(Landroid/os/SynchronousResultReceiver;)Landroid/os/Parcelable;
+PLcom/android/server/stats/pull/StatsPullAtomService;->fetchBluetoothData()Landroid/bluetooth/BluetoothActivityEnergyInfo;
+HPLcom/android/server/stats/pull/StatsPullAtomService;->getINetworkStatsService()Landroid/net/INetworkStatsService;
+PLcom/android/server/stats/pull/StatsPullAtomService;->getIStoragedService()Landroid/os/IStoraged;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->getIThermalService()Landroid/os/IThermalService;
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->initializePullersState()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->isAppUid(I)Z
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$onBootPhase$0$StatsPullAtomService()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullBatteryLevel$15(ILjava/util/List;ILandroid/hardware/health/V2_0/HealthInfo;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullCpuTimePerUid$14(ILjava/util/List;I[J)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullCpuTimePerUid$6(ILjava/util/List;I[J)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullCpuTimeperUidFreq$16(ILjava/util/List;I[J)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullCpuTimeperUidFreq$7(ILjava/util/List;I[J)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullDiskIO$14(ILjava/util/List;IJJJJJJJJJJ)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullDiskIO$50(ILjava/util/List;IJJJJJJJJJJ)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullHealthHal$15(ILjava/util/List;ILandroid/hardware/health/V2_0/HealthInfo;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullProcessMemoryHighWaterMark$11(Landroid/util/SparseArray;Landroid/app/ProcessMemoryState;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullProcessMemoryHighWaterMark$29(ILjava/util/List;Ljava/lang/Integer;Ljava/lang/String;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullProcessMemorySnapshot$12(Landroid/util/SparseArray;Landroid/app/ProcessMemoryState;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullProcessMemorySnapshot$31(ILjava/util/List;Ljava/lang/Integer;Ljava/lang/String;)V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullWifiActivityInfo$10(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$pullWifiActivityInfo$22(Landroid/os/SynchronousResultReceiver;Landroid/os/connectivity/WifiActivityEnergyInfo;)V
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerAppOps$64$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerAppOps$66$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerAppsOnExternalStorageInfo$62$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerAppsOnExternalStorageInfo$64$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerBinderCallsStats$37$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerBluetoothActivityInfo$24$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerBluetoothBytesTransfer$10$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerCategorySize$43$StatsPullAtomService(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerCoolingDevice$36$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerCpuTimePerThreadFreq$53$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerCpuTimePerUid$13$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerCpuTimePerUidFreq$15$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDangerousPermissionState$59$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDangerousPermissionState$61$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDangerousPermissionStateSampled$68$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDebugElapsedClock$57$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDebugFailingElapsedClock$58$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDirectoryUsage$41$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDiskIO$49$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerDiskStats$40$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerExternalStorageInfo$61$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerExternalStorageInfo$63$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerFaceSettings$63$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerFaceSettings$65$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerIonHeapSize$33$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerKernelWakelock$11$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerLooperStats$39$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerMobileBytesTransfer$8$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerMobileBytesTransferBackground$9$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerModemActivityInfo$23$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerNumFacesEnrolled$45$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerNumFingerprintsEnrolled$44$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerProcessCpuTime$52$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerProcessMemoryHighWaterMark$28$StatsPullAtomService(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerProcessMemorySnapshot$30$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerProcessSystemIonHeapSize$34$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerSystemIonHeapSize$32$StatsPullAtomService(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerSystemUptime$26$StatsPullAtomService(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerTemperature$35$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerTimeZoneDataInfo$62$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerWifiActivityInfo$21$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerWifiBytesTransfer$6$StatsPullAtomService(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->lambda$registerWifiBytesTransferBackground$7$StatsPullAtomService(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->onBootPhase(I)V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->onStart()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullAppOps(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullAppsOnExternalStorageInfo(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullBatteryLevel(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullBinderCallsStats(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullBluetoothActivityInfo(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullBluetoothBytesTransfer(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCategorySize(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCooldownDevice(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuTimePerThreadFreq(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuTimePerUid(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullCpuTimeperUidFreq(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDangerousPermissionState(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDebugElapsedClock(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDebugFailingElapsedClock(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDirectoryUsage(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullDiskIO(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullDiskStats(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullExternalStorageInfo(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullFaceSettings(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullHealthHal(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullIonHeapSize(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullKernelWakelock(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullLooperStats(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullMobileBytesTransfer(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullMobileBytesTransferBackground(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullModemActivityInfo(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullNumBiometricsEnrolled(IILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessCpuTime(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemoryHighWaterMark(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessMemorySnapshot(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullProcessSystemIonHeapSize(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullSystemIonHeapSize(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullSystemUptime(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullTemperature(ILjava/util/List;)I
+PLcom/android/server/stats/pull/StatsPullAtomService;->pullTimeZoneDataInfo(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullWifiActivityInfo(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullWifiBytesTransfer(ILjava/util/List;)I
+HPLcom/android/server/stats/pull/StatsPullAtomService;->pullWifiBytesTransferBackground(ILjava/util/List;)I
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerAllPullers()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerAppOps()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerAppSize()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerAppsOnExternalStorageInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryCycleCount()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryLevel()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBatteryVoltage()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStats()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBinderCallsStatsExceptions()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothActivityInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBluetoothBytesTransfer()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerBuildInformation()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCategorySize()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCoolingDevice()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuActiveTime()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuClusterTime()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerFreq()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerThreadFreq()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUid()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerCpuTimePerUidFreq()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionState()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDangerousPermissionStateSampled()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugElapsedClock()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDebugFailingElapsedClock()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDeviceCalculatedPowerBlameOther()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDeviceCalculatedPowerBlameUid()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDeviceCalculatedPowerUse()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDirectoryUsage()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskIO()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerDiskStats()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerEventListeners()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerExternalStorageInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerFaceSettings()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerFullBatteryCapacity()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerIonHeapSize()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerKernelWakelock()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerLooperStats()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransfer()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerMobileBytesTransferBackground()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerModemActivityInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerNotificationRemoteViews()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFacesEnrolled()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerNumFingerprintsEnrolled()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerPowerProfile()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStats()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcStatsPkgProc()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessCpuTime()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryHighWaterMark()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemorySnapshot()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessMemoryState()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerProcessSystemIonHeapSize()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerRemainingBatteryCapacity()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerRoleHolder()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemElapsedRealtime()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemIonHeapSize()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerSystemUptime()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerTemperature()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerTimeZoneDataInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiActivityInfo()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransfer()V
+HSPLcom/android/server/stats/pull/StatsPullAtomService;->registerWifiBytesTransferBackground()V
+HPLcom/android/server/stats/pull/StatsPullAtomService;->rollupNetworkStatsByFGBG(Landroid/net/NetworkStats;)Landroid/net/NetworkStats;
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$E67OP8P-DuCzmX46ISCwIyOv93Q;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$E67OP8P-DuCzmX46ISCwIyOv93Q;->run()V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$KPqmL9kxt0YFCz4dBAFkiUMRWw8;-><clinit>()V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$KPqmL9kxt0YFCz4dBAFkiUMRWw8;-><init>()V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$KPqmL9kxt0YFCz4dBAFkiUMRWw8;->run()V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$P3yc6y5R6oqIuxbUK14JNoV_hJM;-><init>(Z)V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$P3yc6y5R6oqIuxbUK14JNoV_hJM;->run()V
+HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$dQguzfF4tEgBOj3Pr8MpGRN8HT0;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZZ)V
+HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$dQguzfF4tEgBOj3Pr8MpGRN8HT0;->run()V
+HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$uF0ibEnnXe7Lxunxb98QQLJjgZM;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IZZ)V
+HSPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$uF0ibEnnXe7Lxunxb98QQLJjgZM;->run()V
+PLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$yr21OX4Hyd_XfExwnVnVIn3Jfe4;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;I)V
+HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$yr21OX4Hyd_XfExwnVnVIn3Jfe4;->run()V
+HSPLcom/android/server/statusbar/StatusBarManagerService$1;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->abortTransient(I[I)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionCancelled(I)V
 HSPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionFinished(I)V
 HSPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionPending(I)V
 HSPLcom/android/server/statusbar/StatusBarManagerService$1;->appTransitionStarting(IJJ)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->hideToast(Ljava/lang/String;Landroid/os/IBinder;)V
 PLcom/android/server/statusbar/StatusBarManagerService$1;->onCameraLaunchGestureDetected(I)V
 PLcom/android/server/statusbar/StatusBarManagerService$1;->onDisplayReady(I)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->onProposedRotationChanged(IZ)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->onProposedRotationChanged(IZ)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->onRecentsAnimationStateChanged(Z)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$1;->onSystemBarAppearanceChanged(II[Lcom/android/internal/view/AppearanceRegion;Z)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$1;->setDisableFlags(IILjava/lang/String;)V
 HSPLcom/android/server/statusbar/StatusBarManagerService$1;->setNotificationDelegate(Lcom/android/server/notification/NotificationDelegate;)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->setWindowState(III)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->setTopAppHidesStatusBar(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService$1;->setWindowState(III)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->showAssistDisclosure()V
 PLcom/android/server/statusbar/StatusBarManagerService$1;->showChargingAnimation(I)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(IZ)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->showRecentApps(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->showShutdownUi(ZLjava/lang/String;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$1;->showToast(Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/CharSequence;Landroid/os/IBinder;ILandroid/app/ITransientNotificationCallback;)V
+PLcom/android/server/statusbar/StatusBarManagerService$1;->showTransient(I[I)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(IZZ)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$2;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
 PLcom/android/server/statusbar/StatusBarManagerService$2;->isGlobalActionsDisabled()Z
 PLcom/android/server/statusbar/StatusBarManagerService$2;->setGlobalActionsListener(Lcom/android/server/policy/GlobalActionsProvider$GlobalActionsListener;)V
 PLcom/android/server/statusbar/StatusBarManagerService$2;->showGlobalActions()V
-HSPLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->binderDied()V
-HSPLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->linkToDeath()V
+HSPLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$1;)V
+PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->binderDied()V
+PLcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;->linkToDeath()V
 HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->binderDied()V
+PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->binderDied()V
 HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->getFlags(I)I
 HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->isEmpty()Z
 HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->setFlags(IILjava/lang/String;)V
-HSPLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->toString()Ljava/lang/String;
+PLcom/android/server/statusbar/StatusBarManagerService$DisableRecord;->toString()Ljava/lang/String;
 HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/statusbar/StatusBarManagerService$1;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1200(Lcom/android/server/statusbar/StatusBarManagerService$UiState;I[Lcom/android/internal/view/AppearanceRegion;Z)Z
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1300(Lcom/android/server/statusbar/StatusBarManagerService$UiState;I[Lcom/android/internal/view/AppearanceRegion;Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1400(Lcom/android/server/statusbar/StatusBarManagerService$UiState;[I)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1500(Lcom/android/server/statusbar/StatusBarManagerService$UiState;[I)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1700(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1900(Lcom/android/server/statusbar/StatusBarManagerService$UiState;II)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2000(Lcom/android/server/statusbar/StatusBarManagerService$UiState;II)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2100(Lcom/android/server/statusbar/StatusBarManagerService$UiState;Z)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2200(Lcom/android/server/statusbar/StatusBarManagerService$UiState;Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2300(Lcom/android/server/statusbar/StatusBarManagerService$UiState;IIZLandroid/os/IBinder;)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2400(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Landroid/util/ArraySet;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2500(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2600(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)[Lcom/android/internal/view/AppearanceRegion;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2700(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2800(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$2900(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$3000(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Landroid/os/IBinder;
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$3100(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$3200(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$3300(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$3400(Lcom/android/server/statusbar/StatusBarManagerService$UiState;)I
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->appearanceEquals(I[Lcom/android/internal/view/AppearanceRegion;Z)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->clearTransient([I)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->disableEquals(II)Z
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->getDisabled1()I
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->getDisabled2()I
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setAppearance(I[Lcom/android/internal/view/AppearanceRegion;Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setDisabled(II)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setFullscreen(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->setImeWindowState(IIZLandroid/os/IBinder;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setImmersive(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService$UiState;->showTransient([I)V
+HSPLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/statusbar/StatusBarManagerService;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->clearNotificationEffects()V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->disable2ForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$100(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/internal/statusbar/IStatusBar;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$1000(Lcom/android/server/statusbar/StatusBarManagerService;)Landroid/content/Context;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$102(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/internal/statusbar/IStatusBar;)Lcom/android/internal/statusbar/IStatusBar;
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$1100(Lcom/android/server/statusbar/StatusBarManagerService;I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$1600(Lcom/android/server/statusbar/StatusBarManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$1800(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/policy/GlobalActionsProvider$GlobalActionsListener;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$1802(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/policy/GlobalActionsProvider$GlobalActionsListener;)Lcom/android/server/policy/GlobalActionsProvider$GlobalActionsListener;
+PLcom/android/server/statusbar/StatusBarManagerService;->access$200(Lcom/android/server/statusbar/StatusBarManagerService;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->access$300(Lcom/android/server/statusbar/StatusBarManagerService;)Lcom/android/server/statusbar/StatusBarManagerService$DeathRecipient;
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$502(Lcom/android/server/statusbar/StatusBarManagerService;Lcom/android/server/notification/NotificationDelegate;)Lcom/android/server/notification/NotificationDelegate;
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$600(Lcom/android/server/statusbar/StatusBarManagerService;IZZ)V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$700(Lcom/android/server/statusbar/StatusBarManagerService;IILjava/lang/String;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->access$800(Lcom/android/server/statusbar/StatusBarManagerService;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->clearInlineReplyUriPermissions(Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->clearNotificationEffects()V
+PLcom/android/server/statusbar/StatusBarManagerService;->collapsePanels()V
+PLcom/android/server/statusbar/StatusBarManagerService;->disable(ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->disable2(ILandroid/os/IBinder;Ljava/lang/String;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->disable2ForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->disableForUser(ILandroid/os/IBinder;Ljava/lang/String;I)V
 HSPLcom/android/server/statusbar/StatusBarManagerService;->disableLocked(IIILandroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/statusbar/StatusBarManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceBiometricDialog()V
+HPLcom/android/server/statusbar/StatusBarManagerService;->enforceExpandStatusBar()V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
+PLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarOrShell()V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBarService()V
 HSPLcom/android/server/statusbar/StatusBarManagerService;->findMatchingRecordLocked(Landroid/os/IBinder;I)Landroid/util/Pair;
 HSPLcom/android/server/statusbar/StatusBarManagerService;->gatherDisableActionsLocked(II)I
-PLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(I)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$disableLocked$0$StatusBarManagerService(I)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$4$StatusBarManagerService()V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$setImeWindowStatus$2$StatusBarManagerService(Landroid/os/IBinder;IIZ)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$topAppWindowChanged$1$StatusBarManagerService(IZ)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$updateUiVisibilityLocked$3$StatusBarManagerService(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->getDisableFlags(Landroid/os/IBinder;I)[I
+PLcom/android/server/statusbar/StatusBarManagerService;->getUiContext()Landroid/content/Context;
+HSPLcom/android/server/statusbar/StatusBarManagerService;->getUiState(I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
+HPLcom/android/server/statusbar/StatusBarManagerService;->handleSystemKey(I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->hideAuthenticationDialog()V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$disableLocked$0$StatusBarManagerService(I)V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$notifyBarAttachChanged$3$StatusBarManagerService()V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$reboot$5(Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->lambda$setImeWindowStatus$2$StatusBarManagerService(ILandroid/os/IBinder;IIZZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->lambda$shutdown$4()V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->lambda$topAppWindowChanged$1$StatusBarManagerService(IZZ)V
 HSPLcom/android/server/statusbar/StatusBarManagerService;->manageDisableListLocked(IILandroid/os/IBinder;Ljava/lang/String;I)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onBiometricAuthenticated(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService;->notifyBarAttachChanged()V
+PLcom/android/server/statusbar/StatusBarManagerService;->onBiometricAuthenticated()V
+PLcom/android/server/statusbar/StatusBarManagerService;->onBiometricError(III)V
+PLcom/android/server/statusbar/StatusBarManagerService;->onBubbleNotificationSuppressionChanged(Ljava/lang/String;Z)V
 PLcom/android/server/statusbar/StatusBarManagerService;->onClearAllNotifications(I)V
 PLcom/android/server/statusbar/StatusBarManagerService;->onDisplayAdded(I)V
 HSPLcom/android/server/statusbar/StatusBarManagerService;->onDisplayChanged(I)V
@@ -13225,593 +29997,1247 @@
 PLcom/android/server/statusbar/StatusBarManagerService;->onGlobalActionsHidden()V
 PLcom/android/server/statusbar/StatusBarManagerService;->onGlobalActionsShown()V
 PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationActionClick(Ljava/lang/String;ILandroid/app/Notification$Action;Lcom/android/internal/statusbar/NotificationVisibility;Z)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationClear(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationClick(Ljava/lang/String;Lcom/android/internal/statusbar/NotificationVisibility;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationBubbleChanged(Ljava/lang/String;Z)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onNotificationClear(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;IILcom/android/internal/statusbar/NotificationVisibility;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onNotificationClick(Ljava/lang/String;Lcom/android/internal/statusbar/NotificationVisibility;)V
 PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationDirectReplied(Ljava/lang/String;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationExpansionChanged(Ljava/lang/String;ZZI)V
+PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationError(Ljava/lang/String;Ljava/lang/String;IIILjava/lang/String;I)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onNotificationExpansionChanged(Ljava/lang/String;ZZI)V
+PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationSettingsViewed(Ljava/lang/String;)V
 PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationSmartReplySent(Ljava/lang/String;ILjava/lang/CharSequence;IZ)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationSmartSuggestionsAdded(Ljava/lang/String;IIZZ)V
-PLcom/android/server/statusbar/StatusBarManagerService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->onPanelHidden()V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->onPanelRevealed(ZI)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;Ljava/util/List;Ljava/util/List;[ILjava/util/List;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onNotificationSmartSuggestionsAdded(Ljava/lang/String;IIZZ)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onNotificationVisibilityChanged([Lcom/android/internal/statusbar/NotificationVisibility;[Lcom/android/internal/statusbar/NotificationVisibility;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onPanelHidden()V
+HPLcom/android/server/statusbar/StatusBarManagerService;->onPanelRevealed(ZI)V
+PLcom/android/server/statusbar/StatusBarManagerService;->reboot(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService;->registerStatusBar(Lcom/android/internal/statusbar/IStatusBar;)Lcom/android/internal/statusbar/RegisterStatusBarResult;
 PLcom/android/server/statusbar/StatusBarManagerService;->remTile(Landroid/content/ComponentName;)V
 PLcom/android/server/statusbar/StatusBarManagerService;->removeIcon(Ljava/lang/String;)V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->setDisableFlags(IILjava/lang/String;)V
 PLcom/android/server/statusbar/StatusBarManagerService;->setIcon(Ljava/lang/String;Ljava/lang/String;IILjava/lang/String;)V
 HSPLcom/android/server/statusbar/StatusBarManagerService;->setIconVisibility(Ljava/lang/String;Z)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(Landroid/os/IBinder;IIZ)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;Ljava/lang/String;)V
-PLcom/android/server/statusbar/StatusBarManagerService;->showBiometricDialog(Landroid/os/Bundle;Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;IZI)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(IZ)V
-HSPLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/storage/AppCollector$BackgroundHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(ILandroid/os/IBinder;IIZZ)V
+PLcom/android/server/statusbar/StatusBarManagerService;->showAuthenticationDialog(Landroid/os/Bundle;Landroid/hardware/biometrics/IBiometricServiceReceiverInternal;IZILjava/lang/String;)V
+PLcom/android/server/statusbar/StatusBarManagerService;->showPinningEnterExitToast(Z)V
+PLcom/android/server/statusbar/StatusBarManagerService;->showPinningEscapeToast()V
+PLcom/android/server/statusbar/StatusBarManagerService;->shutdown()V
+HSPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(IZZ)V
+PLcom/android/server/storage/-$$Lambda$StorageUserConnection$ActiveConnection$2ECT20JMDVk3s2c7JRifxIdFISs;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/storage/-$$Lambda$StorageUserConnection$ActiveConnection$2ECT20JMDVk3s2c7JRifxIdFISs;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/storage/-$$Lambda$StorageUserConnection$ActiveConnection$uMm3Ei4cCV446R_LJOCKr8R8AU8;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Ljava/util/concurrent/CountDownLatch;)V
+PLcom/android/server/storage/-$$Lambda$StorageUserConnection$ActiveConnection$uMm3Ei4cCV446R_LJOCKr8R8AU8;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/storage/AppCollector$BackgroundHandler;-><init>(Lcom/android/server/storage/AppCollector;Landroid/os/Looper;Landroid/os/storage/VolumeInfo;Landroid/content/pm/PackageManager;Landroid/os/UserManager;Landroid/app/usage/StorageStatsManager;)V
+HPLcom/android/server/storage/AppCollector$BackgroundHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/storage/AppCollector;-><clinit>()V
 PLcom/android/server/storage/AppCollector;-><init>(Landroid/content/Context;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/AppCollector;->access$100(Lcom/android/server/storage/AppCollector;)Ljava/util/concurrent/CompletableFuture;
 PLcom/android/server/storage/AppCollector;->getPackageStats(J)Ljava/util/List;
-PLcom/android/server/storage/AppFuseBridge$MountScope;->setMountResultLocked(Z)V
+HPLcom/android/server/storage/AppFuseBridge$MountScope;-><init>(II)V
+HPLcom/android/server/storage/AppFuseBridge$MountScope;->setMountResultLocked(Z)V
 PLcom/android/server/storage/AppFuseBridge$MountScope;->waitForMount()Z
-PLcom/android/server/storage/AppFuseBridge;->addBridge(Lcom/android/server/storage/AppFuseBridge$MountScope;)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/storage/AppFuseBridge;->onClosed(I)V
-PLcom/android/server/storage/AppFuseBridge;->onMount(I)V
-PLcom/android/server/storage/AppFuseBridge;->openFile(III)Landroid/os/ParcelFileDescriptor;
-PLcom/android/server/storage/AppFuseBridge;->run()V
-HSPLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V
-HSPLcom/android/server/storage/CacheQuotaStrategy$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/storage/AppFuseBridge;-><init>()V
+HPLcom/android/server/storage/AppFuseBridge;->addBridge(Lcom/android/server/storage/AppFuseBridge$MountScope;)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/storage/AppFuseBridge;->onClosed(I)V
+HPLcom/android/server/storage/AppFuseBridge;->onMount(I)V
+HPLcom/android/server/storage/AppFuseBridge;->openFile(III)Landroid/os/ParcelFileDescriptor;
+HPLcom/android/server/storage/AppFuseBridge;->run()V
+PLcom/android/server/storage/CacheQuotaStrategy$1$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy$1;Landroid/os/IBinder;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1$1;->run()V
+PLcom/android/server/storage/CacheQuotaStrategy$1;-><init>(Lcom/android/server/storage/CacheQuotaStrategy;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/storage/CacheQuotaStrategy$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
 HSPLcom/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;->access$000(Lcom/android/server/storage/CacheQuotaStrategy;)Ljava/lang/Object;
+PLcom/android/server/storage/CacheQuotaStrategy;->access$100(Lcom/android/server/storage/CacheQuotaStrategy;)Landroid/app/usage/ICacheQuotaService;
+PLcom/android/server/storage/CacheQuotaStrategy;->access$102(Lcom/android/server/storage/CacheQuotaStrategy;Landroid/app/usage/ICacheQuotaService;)Landroid/app/usage/ICacheQuotaService;
+PLcom/android/server/storage/CacheQuotaStrategy;->access$200(Lcom/android/server/storage/CacheQuotaStrategy;)Ljava/util/List;
+PLcom/android/server/storage/CacheQuotaStrategy;->createServiceConnection()V
+HSPLcom/android/server/storage/CacheQuotaStrategy;->disconnectService()V
 HSPLcom/android/server/storage/CacheQuotaStrategy;->getRequestFromXml(Lorg/xmlpull/v1/XmlPullParser;)Landroid/app/usage/CacheQuotaHint;
-HSPLcom/android/server/storage/CacheQuotaStrategy;->getServiceComponentName()Landroid/content/ComponentName;
-HSPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;
-HSPLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V
+PLcom/android/server/storage/CacheQuotaStrategy;->getServiceComponentName()Landroid/content/ComponentName;
+HPLcom/android/server/storage/CacheQuotaStrategy;->getUnfulfilledRequests()Ljava/util/List;
+HSPLcom/android/server/storage/CacheQuotaStrategy;->insertIntoQuotaMap(Ljava/lang/String;IIJ)V
+PLcom/android/server/storage/CacheQuotaStrategy;->onResult(Landroid/os/Bundle;)V
 HSPLcom/android/server/storage/CacheQuotaStrategy;->pushProcessedQuotas(Ljava/util/List;)V
 HSPLcom/android/server/storage/CacheQuotaStrategy;->readFromXml(Ljava/io/InputStream;)Landroid/util/Pair;
-HSPLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;J)V
+PLcom/android/server/storage/CacheQuotaStrategy;->recalculateQuotas()V
+HPLcom/android/server/storage/CacheQuotaStrategy;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;Ljava/util/List;J)V
 HSPLcom/android/server/storage/CacheQuotaStrategy;->setupQuotasFromFile()J
-HSPLcom/android/server/storage/CacheQuotaStrategy;->writeXmlToFile(Ljava/util/List;)V
+PLcom/android/server/storage/CacheQuotaStrategy;->writeXmlToFile(Ljava/util/List;)V
+HSPLcom/android/server/storage/DeviceStorageMonitorService$1;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;Landroid/os/Looper;)V
 HSPLcom/android/server/storage/DeviceStorageMonitorService$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/storage/DeviceStorageMonitorService$2;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$2;->checkMemory()V
 PLcom/android/server/storage/DeviceStorageMonitorService$2;->getMemoryLowThreshold()J
 PLcom/android/server/storage/DeviceStorageMonitorService$2;->isMemoryLow()Z
+HSPLcom/android/server/storage/DeviceStorageMonitorService$3;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService;)V
 PLcom/android/server/storage/DeviceStorageMonitorService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;-><init>()V
 HSPLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>()V
+HSPLcom/android/server/storage/DeviceStorageMonitorService$State;-><init>(Lcom/android/server/storage/DeviceStorageMonitorService$1;)V
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->access$300(I)Ljava/lang/String;
+HSPLcom/android/server/storage/DeviceStorageMonitorService$State;->access$400(III)Z
+HSPLcom/android/server/storage/DeviceStorageMonitorService$State;->access$500(III)Z
+HSPLcom/android/server/storage/DeviceStorageMonitorService$State;->isEntering(III)Z
+HSPLcom/android/server/storage/DeviceStorageMonitorService$State;->isLeaving(III)Z
+PLcom/android/server/storage/DeviceStorageMonitorService$State;->levelToString(I)Ljava/lang/String;
+HSPLcom/android/server/storage/DeviceStorageMonitorService;-><clinit>()V
 HSPLcom/android/server/storage/DeviceStorageMonitorService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/storage/DeviceStorageMonitorService;->access$100(Lcom/android/server/storage/DeviceStorageMonitorService;)V
+PLcom/android/server/storage/DeviceStorageMonitorService;->access$200(Lcom/android/server/storage/DeviceStorageMonitorService;)Landroid/os/Handler;
 HSPLcom/android/server/storage/DeviceStorageMonitorService;->check()V
 PLcom/android/server/storage/DeviceStorageMonitorService;->dumpImpl(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/storage/DeviceStorageMonitorService;->findOrCreateState(Ljava/util/UUID;)Lcom/android/server/storage/DeviceStorageMonitorService$State;
+HSPLcom/android/server/storage/DeviceStorageMonitorService;->isBootImageOnDisk()Z
 HSPLcom/android/server/storage/DeviceStorageMonitorService;->onStart()V
 HSPLcom/android/server/storage/DeviceStorageMonitorService;->updateBroadcasts(Landroid/os/storage/VolumeInfo;III)V
 HSPLcom/android/server/storage/DeviceStorageMonitorService;->updateNotifications(Landroid/os/storage/VolumeInfo;II)V
-PLcom/android/server/storage/DiskStatsFileLogger;->addAppsToJson(Lorg/json/JSONObject;)V
-PLcom/android/server/storage/DiskStatsFileLogger;->filterOnlyPrimaryUser()Landroid/util/ArrayMap;
+PLcom/android/server/storage/DiskStatsFileLogger;-><init>(Lcom/android/server/storage/FileCollector$MeasurementResult;Lcom/android/server/storage/FileCollector$MeasurementResult;Ljava/util/List;J)V
+HPLcom/android/server/storage/DiskStatsFileLogger;->addAppsToJson(Lorg/json/JSONObject;)V
+PLcom/android/server/storage/DiskStatsFileLogger;->dumpToFile(Ljava/io/File;)V
+HPLcom/android/server/storage/DiskStatsFileLogger;->filterOnlyPrimaryUser()Landroid/util/ArrayMap;
 PLcom/android/server/storage/DiskStatsFileLogger;->getJsonRepresentation()Lorg/json/JSONObject;
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;-><clinit>()V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;-><init>()V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->finishJob(Z)V
 PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->logToFile(Lcom/android/server/storage/FileCollector$MeasurementResult;Lcom/android/server/storage/FileCollector$MeasurementResult;Ljava/util/List;J)V
 PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->run()V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setAppCollector(Lcom/android/server/storage/AppCollector;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setContext(Landroid/content/Context;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setDownloadsDirectory(Ljava/io/File;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setJobService(Landroid/app/job/JobService;Landroid/app/job/JobParameters;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setLogOutputFile(Ljava/io/File;)V
+PLcom/android/server/storage/DiskStatsLoggingService$LogRunnable;->setSystemSize(J)V
+HSPLcom/android/server/storage/DiskStatsLoggingService;-><clinit>()V
 PLcom/android/server/storage/DiskStatsLoggingService;-><init>()V
+PLcom/android/server/storage/DiskStatsLoggingService;->isCharging(Landroid/content/Context;)Z
+PLcom/android/server/storage/DiskStatsLoggingService;->isDumpsysTaskEnabled(Landroid/content/ContentResolver;)Z
 PLcom/android/server/storage/DiskStatsLoggingService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/storage/DiskStatsLoggingService;->onStopJob(Landroid/app/job/JobParameters;)Z
 HSPLcom/android/server/storage/DiskStatsLoggingService;->schedule(Landroid/content/Context;)V
+PLcom/android/server/storage/FileCollector$MeasurementResult;-><init>()V
 PLcom/android/server/storage/FileCollector$MeasurementResult;->totalAccountedSize()J
+PLcom/android/server/storage/FileCollector;-><clinit>()V
 PLcom/android/server/storage/FileCollector;->collectFiles(Ljava/io/File;Lcom/android/server/storage/FileCollector$MeasurementResult;)Lcom/android/server/storage/FileCollector$MeasurementResult;
 PLcom/android/server/storage/FileCollector;->getMeasurementResult(Landroid/content/Context;)Lcom/android/server/storage/FileCollector$MeasurementResult;
+PLcom/android/server/storage/FileCollector;->getMeasurementResult(Ljava/io/File;)Lcom/android/server/storage/FileCollector$MeasurementResult;
 PLcom/android/server/storage/FileCollector;->getSystemSize(Landroid/content/Context;)J
-PLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$-gelHWcVU9jWWZhCeN99A3Sudtw;->getPackages(I)[Ljava/lang/String;
-PLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$VVmvEgI0M6umDuBUYKUoUMO7-l0;->getPackages(I)[Ljava/lang/String;
-PLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$lBXoYxesURvEmfzumX9uIBbg66M;->getPackages(I)[Ljava/lang/String;
-HSPLcom/android/server/telecom/TelecomLoaderService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/storage/StorageSessionController$ExternalStorageServiceException;-><init>(Ljava/lang/String;Ljava/lang/Throwable;)V
+HSPLcom/android/server/storage/StorageSessionController;-><init>(Landroid/content/Context;Z)V
+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;->killExternalStorageService(I)V
+PLcom/android/server/storage/StorageSessionController;->onReset(Landroid/os/IVold;Landroid/os/Handler;)V
+PLcom/android/server/storage/StorageSessionController;->onUnlockUser(I)V
+PLcom/android/server/storage/StorageSessionController;->onUserStopping(I)V
+PLcom/android/server/storage/StorageSessionController;->onVolumeMount(Landroid/os/ParcelFileDescriptor;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/StorageSessionController;->onVolumeMount(Ljava/io/FileDescriptor;Landroid/os/storage/VolumeInfo;)V
+PLcom/android/server/storage/StorageSessionController;->onVolumeRemove(Landroid/os/storage/VolumeInfo;)Lcom/android/server/storage/StorageUserConnection;
+PLcom/android/server/storage/StorageSessionController;->shouldHandle(Landroid/os/storage/VolumeInfo;)Z
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;-><init>(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->handleConnection(Landroid/os/IBinder;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->handleDisconnection()V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onBindingDied(Landroid/content/ComponentName;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onNullBinding(Landroid/content/ComponentName;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection$1;->onServiceDisconnected(Landroid/content/ComponentName;)V
+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$1;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->access$600(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;)Z
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->access$602(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Z)Z
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->access$702(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;Landroid/service/storage/IExternalStorageService;)Landroid/service/storage/IExternalStorageService;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->access$800(Lcom/android/server/storage/StorageUserConnection$ActiveConnection;)Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->bind()Ljava/util/concurrent/CountDownLatch;
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->close()V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->endSessionLocked(Lcom/android/server/storage/StorageUserConnection$Session;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->isActiveLocked(Lcom/android/server/storage/StorageUserConnection$Session;)Z
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$endSessionLocked$1$StorageUserConnection$ActiveConnection(Ljava/util/concurrent/CountDownLatch;Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->lambda$startSessionLocked$0$StorageUserConnection$ActiveConnection(Ljava/util/concurrent/CountDownLatch;Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->maybeThrowExceptionLocked()V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->setResultLocked(Ljava/util/concurrent/CountDownLatch;Landroid/os/Bundle;)V
+PLcom/android/server/storage/StorageUserConnection$ActiveConnection;->startSessionLocked(Lcom/android/server/storage/StorageUserConnection$Session;Landroid/os/ParcelFileDescriptor;)V
+PLcom/android/server/storage/StorageUserConnection$Session;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/storage/StorageUserConnection$Session;->isInitialisedLocked()Z
+PLcom/android/server/storage/StorageUserConnection$Session;->toString()Ljava/lang/String;
+PLcom/android/server/storage/StorageUserConnection;-><init>(Landroid/content/Context;ILcom/android/server/storage/StorageSessionController;)V
+PLcom/android/server/storage/StorageUserConnection;->access$100(Lcom/android/server/storage/StorageUserConnection;)Ljava/lang/Object;
+PLcom/android/server/storage/StorageUserConnection;->access$200(Lcom/android/server/storage/StorageUserConnection;)I
+PLcom/android/server/storage/StorageUserConnection;->access$300(Lcom/android/server/storage/StorageUserConnection;)Landroid/content/Context;
+PLcom/android/server/storage/StorageUserConnection;->access$400(Lcom/android/server/storage/StorageUserConnection;Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;)V
+PLcom/android/server/storage/StorageUserConnection;->access$500(Lcom/android/server/storage/StorageUserConnection;)Lcom/android/server/storage/StorageSessionController;
+PLcom/android/server/storage/StorageUserConnection;->close()V
+PLcom/android/server/storage/StorageUserConnection;->getAllSessionIds()Ljava/util/Set;
+PLcom/android/server/storage/StorageUserConnection;->prepareRemote()V
+PLcom/android/server/storage/StorageUserConnection;->removeAllSessions()V
+PLcom/android/server/storage/StorageUserConnection;->removeSession(Ljava/lang/String;)Lcom/android/server/storage/StorageUserConnection$Session;
+PLcom/android/server/storage/StorageUserConnection;->removeSessionAndWait(Ljava/lang/String;)V
+PLcom/android/server/storage/StorageUserConnection;->resetUserSessions()V
+PLcom/android/server/storage/StorageUserConnection;->startSession(Ljava/lang/String;Landroid/os/ParcelFileDescriptor;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/storage/StorageUserConnection;->waitForLatch(Ljava/util/concurrent/CountDownLatch;Ljava/lang/String;)V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService$RemoteServiceConnection;-><init>(Lcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;)V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService$RemoteServiceConnection;-><init>(Lcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;Lcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService$1;)V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;-><clinit>()V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;-><init>(Landroid/content/Context;Landroid/content/ComponentName;IZ)V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;->destroy()V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;->ensureBound()V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;->ensureUnboundLocked()V
+PLcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;->initialize()V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;-><clinit>()V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;-><init>(Lcom/android/server/systemcaptions/SystemCaptionsManagerService;Ljava/lang/Object;ZI)V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;->destroyLocked()V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;->getRemoteServiceLocked()Lcom/android/server/systemcaptions/RemoteSystemCaptionsManagerService;
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;->initializeLocked()V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;->newServiceInfoLocked(Landroid/content/ComponentName;)Landroid/content/pm/ServiceInfo;
+HSPLcom/android/server/systemcaptions/SystemCaptionsManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerService;->newServiceLocked(IZ)Lcom/android/server/infra/AbstractPerUserSystemService;
+PLcom/android/server/systemcaptions/SystemCaptionsManagerService;->newServiceLocked(IZ)Lcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;
+PLcom/android/server/systemcaptions/SystemCaptionsManagerService;->onServiceRemoved(Lcom/android/server/infra/AbstractPerUserSystemService;I)V
+PLcom/android/server/systemcaptions/SystemCaptionsManagerService;->onServiceRemoved(Lcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;I)V
+HSPLcom/android/server/systemcaptions/SystemCaptionsManagerService;->onStart()V
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$4O6PYSHBsC0Q5H-Y3LkvD32Vcjk;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$4O6PYSHBsC0Q5H-Y3LkvD32Vcjk;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$Dg9me3bEFl3t0NGOPYwXIoF34FY;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$Dg9me3bEFl3t0NGOPYwXIoF34FY;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$jGqhqH8bl_lWotJlrzraXplioIw;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+PLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$jGqhqH8bl_lWotJlrzraXplioIw;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$v_RQMbGOOwc6kjxGSNUrOugH8pw;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+HSPLcom/android/server/telecom/-$$Lambda$TelecomLoaderService$v_RQMbGOOwc6kjxGSNUrOugH8pw;->getPackages(I)[Ljava/lang/String;
+HSPLcom/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
+HSPLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1;-><init>(Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;)V
+HSPLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;)V
+HSPLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;-><init>(Lcom/android/server/telecom/TelecomLoaderService;Lcom/android/server/telecom/TelecomLoaderService$1;)V
 HSPLcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HSPLcom/android/server/telecom/TelecomLoaderService;-><clinit>()V
 HSPLcom/android/server/telecom/TelecomLoaderService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/telecom/TelecomLoaderService;->access$100(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/content/Context;
+HSPLcom/android/server/telecom/TelecomLoaderService;->access$200(Lcom/android/server/telecom/TelecomLoaderService;)Ljava/lang/Object;
+HSPLcom/android/server/telecom/TelecomLoaderService;->access$300(Lcom/android/server/telecom/TelecomLoaderService;)Landroid/util/IntArray;
+PLcom/android/server/telecom/TelecomLoaderService;->access$500(Lcom/android/server/telecom/TelecomLoaderService;I)V
 HSPLcom/android/server/telecom/TelecomLoaderService;->connectToTelecom()V
-PLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$0$TelecomLoaderService(I)[Ljava/lang/String;
-PLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$1$TelecomLoaderService(I)[Ljava/lang/String;
-PLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$2$TelecomLoaderService(I)[Ljava/lang/String;
+PLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppNotifier$3$TelecomLoaderService(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$0$TelecomLoaderService(I)[Ljava/lang/String;
+HSPLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$1$TelecomLoaderService(I)[Ljava/lang/String;
+HSPLcom/android/server/telecom/TelecomLoaderService;->lambda$registerDefaultAppProviders$2$TelecomLoaderService(I)[Ljava/lang/String;
 HSPLcom/android/server/telecom/TelecomLoaderService;->onBootPhase(I)V
 HSPLcom/android/server/telecom/TelecomLoaderService;->onStart()V
+HSPLcom/android/server/telecom/TelecomLoaderService;->registerCarrierConfigChangedReceiver()V
 HSPLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppNotifier()V
-HSPLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;I)V
+HSPLcom/android/server/telecom/TelecomLoaderService;->registerDefaultAppProviders()V
+HPLcom/android/server/telecom/TelecomLoaderService;->updateSimCallManagerPermissions(I)V
+HSPLcom/android/server/testharness/TestHarnessModeService$1;-><init>(Lcom/android/server/testharness/TestHarnessModeService;)V
+HSPLcom/android/server/testharness/TestHarnessModeService;-><clinit>()V
 HSPLcom/android/server/testharness/TestHarnessModeService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/testharness/TestHarnessModeService;->configureSettings()V
+PLcom/android/server/testharness/TestHarnessModeService;->completeTestHarnessModeSetup()V
+HSPLcom/android/server/testharness/TestHarnessModeService;->getPersistentDataBlock()Lcom/android/server/PersistentDataBlockManagerInternal;
+HSPLcom/android/server/testharness/TestHarnessModeService;->getTestHarnessModeData()[B
 HSPLcom/android/server/testharness/TestHarnessModeService;->onBootPhase(I)V
 HSPLcom/android/server/testharness/TestHarnessModeService;->onStart()V
 HSPLcom/android/server/testharness/TestHarnessModeService;->setUpTestHarnessMode()V
-HSPLcom/android/server/testharness/TestHarnessModeService;->showNotification()V
-PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$1N5hVEv-gYS5VzkBAP5HLq01CQI;->runOrThrow()V
-PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$8JdB0qZEYu-RmsTmNRpxWLWnRgs;->runOrThrow()V
-PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$R4aPVSf5_OfouCzD96pPpSsbUOs;->accept(Ljava/lang/Object;)V
+PLcom/android/server/testharness/TestHarnessModeService;->showNotificationIfEnabled()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$2sJrwO1jPjEX_2E7aDk6t5666lk;-><init>(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$2sJrwO1jPjEX_2E7aDk6t5666lk;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$64mAXU9GjFt2f69p_xdhRl7xXFQ;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/view/textclassifier/TextClassificationSessionId;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$64mAXU9GjFt2f69p_xdhRl7xXFQ;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$C6b5fl8vcOQ42djzSJ_03hDc6yA;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$C6b5fl8vcOQ42djzSJ_03hDc6yA;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$CB4TRod_LBt48w0zNWgHd_0r5tU;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$CB4TRod_LBt48w0zNWgHd_0r5tU;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LbKHscWPDUIjKzR4a1gANqdMY6c;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LbKHscWPDUIjKzR4a1gANqdMY6c;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LgTaKgUnkwyysO9lmBSO8HNViFU;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;I)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LgTaKgUnkwyysO9lmBSO8HNViFU;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Mu95ZECYMawAFTgaMzQ9kasDiKU;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Mu95ZECYMawAFTgaMzQ9kasDiKU;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$NrhR3cz8qMQshjDDQuBK6HtZpyc;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$NrhR3cz8qMQshjDDQuBK6HtZpyc;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$XSRTA8JOHnkYT6Nx-j6ZQZBVb1k;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$XSRTA8JOHnkYT6Nx-j6ZQZBVb1k;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$YncBiGXrmV9iVRg9N6un11UZvEM;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$YncBiGXrmV9iVRg9N6un11UZvEM;->runOrThrow()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Zo3yKbNMpKbAhJ7coUzTv5c-zZI;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Zo3yKbNMpKbAhJ7coUzTv5c-zZI;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$bskC2PS7oOlLzDJkBbOVEdfy1Gg;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$bskC2PS7oOlLzDJkBbOVEdfy1Gg;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$dSVln_o2_pbF3ORGnBQ8z407M10;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$dSVln_o2_pbF3ORGnBQ8z407M10;->acceptOrThrow(Ljava/lang/Object;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$e1UWpNtFzY7M9iYeMHhCrNauxak;-><init>(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$e1UWpNtFzY7M9iYeMHhCrNauxak;->runOrThrow()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$eHPAXa73mXK1X6ykNeph3K0mXtg;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$eHPAXa73mXK1X6ykNeph3K0mXtg;->acceptOrThrow(Ljava/lang/Object;)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$f_vDZ7EFXK9b8SQpksrEkEWKPq8;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;I)V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$f_vDZ7EFXK9b8SQpksrEkEWKPq8;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$kUVQfCEBNt6jzkS89Io4xSHSuIs;-><init>(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$kUVQfCEBNt6jzkS89Io4xSHSuIs;->acceptOrThrow(Ljava/lang/Object;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mKOJpfoN0qgghwbMeUHqGFHaCDg;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mKOJpfoN0qgghwbMeUHqGFHaCDg;->runOrThrow()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mLzk2wMmEjV5zvq4IRM6g-PyeAk;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mLzk2wMmEjV5zvq4IRM6g-PyeAk;->runOrThrow()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$nMkPNkAsWr8y9ybbpmHncJ2R2Aw;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$nMkPNkAsWr8y9ybbpmHncJ2R2Aw;->runOrThrow()V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$s1d_iMop8cVfXdi-T-chBEHa9ek;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$s1d_iMop8cVfXdi-T-chBEHa9ek;->runOrThrow()V
+HPLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$x-GZDBev2pMmhyvF3nP65PH7VPo;-><init>(Ljava/lang/String;)V
+PLcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$x-GZDBev2pMmhyvF3nP65PH7VPo;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/textclassifier/-$$Lambda$k-7KcqZH2A0AukChaKa6Xru13_Q;-><init>(Landroid/service/textclassifier/ITextClassifierCallback;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$1;-><init>()V
+HPLcom/android/server/textclassifier/TextClassificationManagerService$1;->asBinder()Landroid/os/IBinder;
 HSPLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onStart()V
 HSPLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onStartUser(I)V
-HSPLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->onUnlockUser(I)V
 HSPLcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;->processAnyPendingWork(I)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;-><init>(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Landroid/os/IBinder;Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->init(Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;-><init>(Ljava/lang/String;Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Landroid/os/IBinder;Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;I)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;-><init>(Ljava/lang/String;Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Landroid/os/IBinder;Lcom/android/server/textclassifier/TextClassificationManagerService;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;I)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1200(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)I
+HPLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1300(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Ljava/lang/String;
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1400(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)I
+HPLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1400(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Ljava/lang/Runnable;
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1500(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Ljava/lang/String;
+HPLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1600(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Landroid/os/IBinder;
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1600(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Ljava/lang/Runnable;
+PLcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;->access$1800(Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;)Landroid/os/IBinder;
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;->init(Landroid/service/textclassifier/ITextClassifierService;Landroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState$TextClassifierServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)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$1;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->access$1200(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->access$2100(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;ILandroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->access$2200(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->access$500(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->access$600(Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;ILjava/lang/String;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->bindIfHasPendingRequestsLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->bindLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->checkRequestAcceptedLocked(ILjava/lang/String;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->getTextClassifierServiceComponent()Landroid/content/ComponentName;
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->handlePendingRequestsLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->isBoundLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;->updateServiceInfoLocked(ILandroid/content/ComponentName;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;Landroid/content/Context;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;->registerObserver()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->cleanupService()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->init(Landroid/service/textclassifier/ITextClassifierService;Landroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->onBindingDied(Landroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->onNullBinding(Landroid/content/ComponentName;)V
 PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(ILandroid/content/Context;Ljava/lang/Object;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;I)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILandroid/content/Context;Ljava/lang/Object;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILandroid/content/Context;Ljava/lang/Object;Lcom/android/server/textclassifier/TextClassificationManagerService$1;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;-><init>(Lcom/android/server/textclassifier/TextClassificationManagerService;ILcom/android/server/textclassifier/TextClassificationManagerService$1;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$1000(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$1700(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)Ljava/lang/Object;
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$1800(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;ILandroid/content/ComponentName;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$1900(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$400(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$500(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)Z
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$600(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;ILjava/lang/String;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$600(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$700(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)Z
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$800(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;ILjava/lang/String;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$800(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->access$900(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/content/ComponentName;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindIfHasPendingRequestsLocked()V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindIfHasPendingRequestsLocked()Z
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->bindLocked()Z
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->checkRequestAcceptedLocked(ILjava/lang/String;)Z
 PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->handlePendingRequestsLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getAllServiceStatesLocked()Ljava/util/List;
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getServiceStateLocked(Z)Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->getServiceUid(Landroid/content/ComponentName;I)I
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->handlePendingRequestsLocked()V
+HPLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->isBoundLocked()Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->isCurrentlyBoundToComponentLocked(Landroid/content/ComponentName;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->isDefaultTrustService(Landroid/content/ComponentName;)Z
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->unbindLocked()V
+PLcom/android/server/textclassifier/TextClassificationManagerService$UserState;->updateServiceInfoLocked(ILandroid/content/ComponentName;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;-><clinit>()V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;-><init>(Landroid/content/Context;Lcom/android/server/textclassifier/TextClassificationManagerService$1;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;->access$100(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$1000(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$1100(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/lang/String;)Ljava/lang/Runnable;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$1100(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/view/textclassifier/TextClassificationConstants;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$1900(Lcom/android/server/textclassifier/TextClassificationManagerService;)Landroid/content/Context;
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;->access$200(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/Object;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$2000(Lcom/android/server/textclassifier/TextClassificationManagerService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$2000(Lcom/android/server/textclassifier/TextClassificationManagerService;Ljava/lang/String;I)I
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;->access$300(Lcom/android/server/textclassifier/TextClassificationManagerService;I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$700(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/lang/String;)Ljava/lang/Runnable;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->access$800(Lcom/android/server/textclassifier/TextClassificationManagerService;)Ljava/lang/String;
 PLcom/android/server/textclassifier/TextClassificationManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$logOnFailure$9(Ljava/lang/String;Ljava/lang/Throwable;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onClassifyText(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onCreateTextClassificationSession(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onDestroyTextClassificationSession(Landroid/view/textclassifier/TextClassificationSessionId;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onSelectionEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onSuggestConversationActions(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;->getUserStateLocked(I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->handleRequest(ILjava/lang/String;ZLcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Ljava/lang/String;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->handleRequest(ILjava/lang/String;ZZLcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Ljava/lang/String;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$dump$9$TextClassificationManagerService(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$handleRequest$10(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Lcom/android/server/textclassifier/TextClassificationManagerService$ServiceState;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$handleRequest$10(Lcom/android/internal/util/FunctionalUtils$ThrowingConsumer;Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$logOnFailure$10(Ljava/lang/String;Ljava/lang/Throwable;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$logOnFailure$11(Ljava/lang/String;Ljava/lang/Throwable;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onClassifyText$1(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onClassifyText$1(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onCreateTextClassificationSession$7$TextClassificationManagerService(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;ILandroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onCreateTextClassificationSession$7$TextClassificationManagerService(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/service/textclassifier/ITextClassifierService;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onCreateTextClassificationSession$7$TextClassificationManagerService(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;I)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onDestroyTextClassificationSession$8$TextClassificationManagerService(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onDestroyTextClassificationSession$8$TextClassificationManagerService(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onGenerateLinks$2(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onGenerateLinks$2(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSelectionEvent$3(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSelectionEvent$3(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSuggestConversationActions$6(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSuggestConversationActions$6(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSuggestSelection$0(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextClassifierCallback;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onSuggestSelection$0(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onTextClassifierEvent$4(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;Landroid/service/textclassifier/ITextClassifierService;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->lambda$onTextClassifierEvent$4(Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->logOnFailure(Lcom/android/internal/util/FunctionalUtils$ThrowingRunnable;Ljava/lang/String;)Ljava/lang/Runnable;
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onClassifyText(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassification$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onCreateTextClassificationSession(Landroid/view/textclassifier/TextClassificationContext;Landroid/view/textclassifier/TextClassificationSessionId;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onDestroyTextClassificationSession(Landroid/view/textclassifier/TextClassificationSessionId;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onGenerateLinks(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextLinks$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onSelectionEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/SelectionEvent;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onSuggestConversationActions(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/ConversationActions$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
 PLcom/android/server/textclassifier/TextClassificationManagerService;->onSuggestSelection(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextSelection$Request;Landroid/service/textclassifier/ITextClassifierCallback;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
-PLcom/android/server/textclassifier/TextClassificationManagerService;->validateInput(Landroid/content/Context;Ljava/lang/String;)V
-HSPLcom/android/server/textservices/-$$Lambda$TextServicesManagerService$otJ1a5fe5mYJvLrIEr3o1Ia1kSo;->applyAsInt(I)I
-HSPLcom/android/server/textservices/LocaleUtils;->getSuitableLocalesForSpellChecker(Ljava/util/Locale;)Ljava/util/ArrayList;
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->onTextClassifierEvent(Landroid/view/textclassifier/TextClassificationSessionId;Landroid/view/textclassifier/TextClassifierEvent;)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->peekUserStateLocked(I)Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
+PLcom/android/server/textclassifier/TextClassificationManagerService;->resolvePackageToUid(Ljava/lang/String;I)I
+HSPLcom/android/server/textclassifier/TextClassificationManagerService;->startListenSettings()V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->unbindServiceIfNecessary()V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->validateCallingPackage(Ljava/lang/String;)V
+HPLcom/android/server/textclassifier/TextClassificationManagerService;->validateInput(Landroid/content/Context;Ljava/lang/String;I)V
+PLcom/android/server/textclassifier/TextClassificationManagerService;->validateUser(I)V
+HPLcom/android/server/textservices/-$$Lambda$TextServicesManagerService$SpellCheckerBindGroup$H2umvFNjpgILSC1ZJmUoLxzCdSk;-><init>(Landroid/os/IBinder;)V
+PLcom/android/server/textservices/-$$Lambda$TextServicesManagerService$SpellCheckerBindGroup$H2umvFNjpgILSC1ZJmUoLxzCdSk;->test(Ljava/lang/Object;)Z
+PLcom/android/server/textservices/LocaleUtils;->getSuitableLocalesForSpellChecker(Ljava/util/Locale;)Ljava/util/ArrayList;
 HSPLcom/android/server/textservices/TextServicesManagerInternal$1;-><init>()V
-PLcom/android/server/textservices/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;-><init>(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;)V
+HSPLcom/android/server/textservices/TextServicesManagerInternal;-><clinit>()V
+HSPLcom/android/server/textservices/TextServicesManagerInternal;-><init>()V
+HSPLcom/android/server/textservices/TextServicesManagerInternal;->get()Lcom/android/server/textservices/TextServicesManagerInternal;
+HPLcom/android/server/textservices/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;-><init>(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;)V
 PLcom/android/server/textservices/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;)V
+HPLcom/android/server/textservices/TextServicesManagerService$InternalDeathRecipients;-><init>(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)V
 PLcom/android/server/textservices/TextServicesManagerService$InternalDeathRecipients;->onCallbackDied(Landroid/os/IInterface;)V
+PLcom/android/server/textservices/TextServicesManagerService$InternalDeathRecipients;->onCallbackDied(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
+HPLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Ljava/lang/String;Ljava/util/HashMap;)V
+PLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->access$2100(Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;)Ljava/util/HashMap;
+PLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->access$2200(Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;)Ljava/lang/String;
 PLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+HPLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->onServiceConnectedInnerLocked(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;->onServiceDisconnectedInnerLocked(Landroid/content/ComponentName;)V
+HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;-><init>(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)V
 HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;->getCurrentSpellCheckerForUser(I)Landroid/view/textservice/SpellCheckerInfo;
 HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->access$800(Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;)Lcom/android/server/textservices/TextServicesManagerService;
 HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onUnlockUser(I)V
-PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;)V
-PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->cleanLocked()V
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/textservices/TextServicesManagerService$Lifecycle;->onUnlockUser(I)V
+HPLcom/android/server/textservices/TextServicesManagerService$SessionRequest;-><init>(ILjava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
+HPLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;)V
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$100(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$200(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/internal/textservice/ISpellCheckerService;
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$300(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Z
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$400(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Z
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$500(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Ljava/util/ArrayList;
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$600(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Ljava/util/ArrayList;
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->access$700(Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;)Lcom/android/server/textservices/TextServicesManagerService$InternalDeathRecipients;
+HPLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->cleanLocked()V
 PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->getISpellCheckerSessionOrQueueLocked(Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;)V
-PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->onServiceConnectedLocked(Lcom/android/internal/textservice/ISpellCheckerService;)V
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->lambda$removeListener$0(Landroid/os/IBinder;Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;)Z
+HPLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->onServiceConnectedLocked(Lcom/android/internal/textservice/ISpellCheckerService;)V
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->onServiceDisconnectedLocked()V
 PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->onSessionCreated(Lcom/android/internal/textservice/ISpellCheckerSession;Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;)V
-PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->removeListener(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
-HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;-><init>(ILandroid/content/Context;)V
+PLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->removeAllLocked()V
+HPLcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;->removeListener(Lcom/android/internal/textservice/ISpellCheckerSessionListener;)V
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;-><init>(ILandroid/content/Context;)V
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$1100(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$1600(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Ljava/util/HashMap;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$1700(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Ljava/util/ArrayList;
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$1800(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Ljava/util/HashMap;
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$1900(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)I
+PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->access$2000(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;Ljava/io/PrintWriter;)V
 PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->dump(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellCheckerSubtype(I)I
-HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->initializeTextServicesData()V
-PLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->isSpellCheckerEnabled()Z
-HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->setCurrentSpellChecker(Landroid/view/textservice/SpellCheckerInfo;)V
-HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;->onSomePackagesChanged()V
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getBoolean(Ljava/lang/String;Z)Z
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getCurrentSpellChecker()Landroid/view/textservice/SpellCheckerInfo;
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getInt(Ljava/lang/String;I)I
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellChecker()Ljava/lang/String;
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getSelectedSpellCheckerSubtype(I)I
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->getString(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->initializeTextServicesData()V
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesData;->isSpellCheckerEnabled()Z
+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
+HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;)V
+HSPLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;-><init>(Lcom/android/server/textservices/TextServicesManagerService;Lcom/android/server/textservices/TextServicesManagerService$1;)V
+HPLcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;->onSomePackagesChanged()V
+HSPLcom/android/server/textservices/TextServicesManagerService;-><clinit>()V
 HSPLcom/android/server/textservices/TextServicesManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/textservices/TextServicesManagerService;->access$1200(Lcom/android/server/textservices/TextServicesManagerService;)Ljava/lang/Object;
+PLcom/android/server/textservices/TextServicesManagerService;->access$1300(Lcom/android/server/textservices/TextServicesManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/textservices/TextServicesManagerService;->access$2300(Lcom/android/server/textservices/TextServicesManagerService;)Landroid/content/Context;
+HSPLcom/android/server/textservices/TextServicesManagerService;->access$900(Lcom/android/server/textservices/TextServicesManagerService;I)Landroid/view/textservice/SpellCheckerInfo;
 PLcom/android/server/textservices/TextServicesManagerService;->bindCurrentSpellCheckerService(Landroid/content/Intent;Landroid/content/ServiceConnection;II)Z
 PLcom/android/server/textservices/TextServicesManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/textservices/TextServicesManagerService;->findAvailSystemSpellCheckerLocked(Ljava/lang/String;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Landroid/view/textservice/SpellCheckerInfo;
-PLcom/android/server/textservices/TextServicesManagerService;->finishSpellCheckerService(ILcom/android/internal/textservice/ISpellCheckerSessionListener;)V
-PLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellChecker(ILjava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
+PLcom/android/server/textservices/TextServicesManagerService;->findAvailSystemSpellCheckerLocked(Ljava/lang/String;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Landroid/view/textservice/SpellCheckerInfo;
+HPLcom/android/server/textservices/TextServicesManagerService;->finishSpellCheckerService(ILcom/android/internal/textservice/ISpellCheckerSessionListener;)V
+HPLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellChecker(ILjava/lang/String;)Landroid/view/textservice/SpellCheckerInfo;
 HSPLcom/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;->getSpellCheckerService(ILjava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
-HSPLcom/android/server/textservices/TextServicesManagerService;->initializeInternalStateLocked(I)V
-PLcom/android/server/textservices/TextServicesManagerService;->isSpellCheckerEnabled(I)Z
-HSPLcom/android/server/textservices/TextServicesManagerService;->lambda$new$0$TextServicesManagerService(I)I
-HSPLcom/android/server/textservices/TextServicesManagerService;->onUnlockUser(I)V
-HSPLcom/android/server/textservices/TextServicesManagerService;->setCurrentSpellCheckerLocked(Landroid/view/textservice/SpellCheckerInfo;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
+HPLcom/android/server/textservices/TextServicesManagerService;->getCurrentSpellCheckerSubtype(IZ)Landroid/view/textservice/SpellCheckerSubtype;
+HPLcom/android/server/textservices/TextServicesManagerService;->getDataFromCallingUserIdLocked(I)Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;
+HPLcom/android/server/textservices/TextServicesManagerService;->getSpellCheckerService(ILjava/lang/String;Ljava/lang/String;Lcom/android/internal/textservice/ITextServicesSessionListener;Lcom/android/internal/textservice/ISpellCheckerSessionListener;Landroid/os/Bundle;)V
+PLcom/android/server/textservices/TextServicesManagerService;->initializeInternalStateLocked(I)V
+HPLcom/android/server/textservices/TextServicesManagerService;->isSpellCheckerEnabled(I)Z
+PLcom/android/server/textservices/TextServicesManagerService;->onStopUser(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;->startSpellCheckerServiceInnerLocked(Landroid/view/textservice/SpellCheckerInfo;Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;
-PLcom/android/server/textservices/TextServicesManagerService;->verifyUser(I)V
-HSPLcom/android/server/timedetector/SimpleTimeDetectorStrategy;->adjustAndSetDeviceSystemClock(Landroid/util/TimestampedValue;ZJJLjava/lang/String;)V
-PLcom/android/server/timedetector/SimpleTimeDetectorStrategy;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/timedetector/SimpleTimeDetectorStrategy;->setSystemClockIfRequired(Landroid/util/TimestampedValue;Z)V
-HSPLcom/android/server/timedetector/SimpleTimeDetectorStrategy;->suggestTime(Landroid/app/timedetector/TimeSignal;)V
-HSPLcom/android/server/timedetector/SimpleTimeDetectorStrategy;->validateNewNitzTime(Landroid/util/TimestampedValue;Landroid/util/TimestampedValue;)Z
+PLcom/android/server/textservices/TextServicesManagerService;->unbindServiceLocked(Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;)V
+HPLcom/android/server/textservices/TextServicesManagerService;->verifyUser(I)V
+HPLcom/android/server/timedetector/-$$Lambda$TimeDetectorService$CIVCmMHYHAlLayNvm792RTW8F3U;-><init>(Lcom/android/server/timedetector/TimeDetectorService;Landroid/app/timedetector/PhoneTimeSuggestion;)V
+HPLcom/android/server/timedetector/-$$Lambda$TimeDetectorService$CIVCmMHYHAlLayNvm792RTW8F3U;->run()V
+PLcom/android/server/timedetector/-$$Lambda$TimeDetectorService$nU2ruOeSUWWPVvB4A7i7qaumT4s;-><init>(Lcom/android/server/timedetector/TimeDetectorService;Landroid/app/timedetector/NetworkTimeSuggestion;)V
+PLcom/android/server/timedetector/-$$Lambda$TimeDetectorService$nU2ruOeSUWWPVvB4A7i7qaumT4s;->run()V
+PLcom/android/server/timedetector/-$$Lambda$lkjIbFi2SczFhCGbzNmkRxmPS0M;-><init>(Lcom/android/server/timedetector/TimeDetectorStrategy;)V
+PLcom/android/server/timedetector/-$$Lambda$lkjIbFi2SczFhCGbzNmkRxmPS0M;->run()V
+HSPLcom/android/server/timedetector/TimeDetectorService$1;-><init>(Landroid/os/Handler;Lcom/android/server/timedetector/TimeDetectorService;)V
+PLcom/android/server/timedetector/TimeDetectorService$1;->onChange(Z)V
 HSPLcom/android/server/timedetector/TimeDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/timedetector/TimeDetectorService$Lifecycle;->onStart()V
-HSPLcom/android/server/timedetector/TimeDetectorService;-><init>(Landroid/content/Context;Lcom/android/server/timedetector/TimeDetectorStrategy$Callback;Lcom/android/server/timedetector/TimeDetectorStrategy;)V
+HSPLcom/android/server/timedetector/TimeDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timedetector/TimeDetectorStrategy;)V
+HSPLcom/android/server/timedetector/TimeDetectorService;->access$000(Landroid/content/Context;)Lcom/android/server/timedetector/TimeDetectorService;
 HSPLcom/android/server/timedetector/TimeDetectorService;->create(Landroid/content/Context;)Lcom/android/server/timedetector/TimeDetectorService;
 PLcom/android/server/timedetector/TimeDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-HSPLcom/android/server/timedetector/TimeDetectorService;->suggestTime(Landroid/app/timedetector/TimeSignal;)V
+PLcom/android/server/timedetector/TimeDetectorService;->enforceSuggestNetworkTimePermission()V
+HPLcom/android/server/timedetector/TimeDetectorService;->enforceSuggestPhoneTimePermission()V
+PLcom/android/server/timedetector/TimeDetectorService;->handleAutoTimeDetectionToggle()V
+PLcom/android/server/timedetector/TimeDetectorService;->lambda$suggestNetworkTime$2$TimeDetectorService(Landroid/app/timedetector/NetworkTimeSuggestion;)V
+PLcom/android/server/timedetector/TimeDetectorService;->lambda$suggestPhoneTime$0$TimeDetectorService(Landroid/app/timedetector/PhoneTimeSuggestion;)V
+PLcom/android/server/timedetector/TimeDetectorService;->suggestNetworkTime(Landroid/app/timedetector/NetworkTimeSuggestion;)V
+HPLcom/android/server/timedetector/TimeDetectorService;->suggestPhoneTime(Landroid/app/timedetector/PhoneTimeSuggestion;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategy;->getTimeAt(Landroid/os/TimestampedValue;J)J
+PLcom/android/server/timedetector/TimeDetectorStrategy;->getTimeAt(Landroid/util/TimestampedValue;J)J
 HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->acquireWakeLock()V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->checkWakeLockHeld()V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->elapsedRealtimeMillis()J
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->isTimeDetectionEnabled()Z
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->releaseWakeLock()V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->sendStickyBroadcast(Landroid/content/Intent;)V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->setSystemClock(J)V
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->systemClockMillis()J
-HSPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->systemClockUpdateThresholdMillis()I
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->acquireWakeLock()V
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->checkWakeLockHeld()V
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->elapsedRealtimeMillis()J
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->isAutoTimeDetectionEnabled()Z
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->releaseWakeLock()V
+PLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->sendStickyBroadcast(Landroid/content/Intent;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->setSystemClock(J)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->systemClockMillis()J
+PLcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;->systemClockUpdateThresholdMillis()I
+HSPLcom/android/server/timedetector/TimeDetectorStrategyImpl;-><init>()V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->doAutoTimeDetection(Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->dump(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->findBestPhoneSuggestion()Landroid/app/timedetector/PhoneTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->findLatestValidNetworkSuggestion()Landroid/app/timedetector/NetworkTimeSuggestion;
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->handleAutoTimeDetectionChanged()V
+HSPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->initialize(Lcom/android/server/timedetector/TimeDetectorStrategy$Callback;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->isOriginAutomatic(I)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->scorePhoneSuggestion(JLandroid/app/timedetector/PhoneTimeSuggestion;)I
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->setSystemClockIfRequired(ILandroid/os/TimestampedValue;Ljava/lang/String;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->setSystemClockIfRequired(ILandroid/util/TimestampedValue;Ljava/lang/String;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->setSystemClockUnderWakeLock(ILandroid/os/TimestampedValue;Ljava/lang/Object;)V
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->setSystemClockUnderWakeLock(ILandroid/util/TimestampedValue;Ljava/lang/Object;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->suggestNetworkTime(Landroid/app/timedetector/NetworkTimeSuggestion;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->suggestPhoneTime(Landroid/app/timedetector/PhoneTimeSuggestion;)V
+HPLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateAndStorePhoneSuggestion(Landroid/app/timedetector/PhoneTimeSuggestion;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionTime(Landroid/os/TimestampedValue;Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionTime(Landroid/util/TimestampedValue;Ljava/lang/Object;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionUtcTime(JLandroid/os/TimestampedValue;)Z
+PLcom/android/server/timedetector/TimeDetectorStrategyImpl;->validateSuggestionUtcTime(JLandroid/util/TimestampedValue;)Z
+PLcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$9xvncY35tAcP2eoRcnDHHViAoZw;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$9xvncY35tAcP2eoRcnDHHViAoZw;->run()V
+PLcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$UdeBqzyBZX1S4jHLM7d2cKvE_-U;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorService;Landroid/app/timezonedetector/ManualTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$UdeBqzyBZX1S4jHLM7d2cKvE_-U;->run()V
+HSPLcom/android/server/timezonedetector/ArrayMapWithHistory;-><init>(I)V
+PLcom/android/server/timezonedetector/ArrayMapWithHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/timezonedetector/ArrayMapWithHistory;->get(Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/timezonedetector/ArrayMapWithHistory;->keyAt(I)Ljava/lang/Object;
+HPLcom/android/server/timezonedetector/ArrayMapWithHistory;->put(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/timezonedetector/ArrayMapWithHistory;->size()I
+HPLcom/android/server/timezonedetector/ArrayMapWithHistory;->valueAt(I)Ljava/lang/Object;
+HSPLcom/android/server/timezonedetector/ReferenceWithHistory;-><init>(I)V
+HPLcom/android/server/timezonedetector/ReferenceWithHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/timezonedetector/ReferenceWithHistory;->get()Ljava/lang/Object;
+HPLcom/android/server/timezonedetector/ReferenceWithHistory;->getHistoryCount()I
+HPLcom/android/server/timezonedetector/ReferenceWithHistory;->set(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/timezonedetector/ReferenceWithHistory;->toString()Ljava/lang/String;
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;-><init>(Landroid/content/Context;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;->getDeviceTimeZone()Ljava/lang/String;
+HPLcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;->isAutoTimeZoneDetectionEnabled()Z
+HPLcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;->isDeviceTimeZoneInitialized()Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;->setDeviceTimeZone(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$1;-><init>(Landroid/os/Handler;Lcom/android/server/timezonedetector/TimeZoneDetectorService;)V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService$1;-><init>(Landroid/os/Handler;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService$1;->onChange(Z)V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;->onStart()V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;)V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService;->access$000(Landroid/content/Context;)Lcom/android/server/timezonedetector/TimeZoneDetectorService;
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorService;->create(Landroid/content/Context;)Lcom/android/server/timezonedetector/TimeZoneDetectorService;
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->enforceSuggestManualTimeZonePermission()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->enforceSuggestPhoneTimeZonePermission()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->lambda$suggestManualTimeZone$0$TimeZoneDetectorService(Landroid/app/timezonedetector/ManualTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->lambda$suggestPhoneTimeZone$1$TimeZoneDetectorService(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorService;->suggestManualTimeZone(Landroid/app/timezonedetector/ManualTimeZoneSuggestion;)V
+HPLcom/android/server/timezonedetector/TimeZoneDetectorService;->suggestPhoneTimeZone(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy$QualifiedPhoneTimeZoneSuggestion;-><init>(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;I)V
+HPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy$QualifiedPhoneTimeZoneSuggestion;->toString()Ljava/lang/String;
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy$Callback;)V
+HSPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->create(Landroid/content/Context;)Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;
+HPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->doAutoTimeZoneDetection(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->dumpState(Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->findBestPhoneSuggestion()Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy$QualifiedPhoneTimeZoneSuggestion;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->handleAutoTimeZoneDetectionChange()V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->isOriginAutomatic(I)Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->scorePhoneSuggestion(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)I
+HPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->setDeviceTimeZoneIfRequired(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->suggestManualTimeZone(Landroid/app/timezonedetector/ManualTimeZoneSuggestion;)V
+HPLcom/android/server/timezonedetector/TimeZoneDetectorStrategy;->suggestPhoneTimeZone(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedPhoneTimeZoneSuggestion;-><init>(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;I)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedPhoneTimeZoneSuggestion;->toString()Ljava/lang/String;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;-><init>(Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$Callback;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->create(Landroid/content/Context;)Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->doAutoTimeZoneDetection(Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->findBestPhoneSuggestion()Lcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl$QualifiedPhoneTimeZoneSuggestion;
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->isOriginAutomatic(I)Z
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->scorePhoneSuggestion(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)I
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->setDeviceTimeZoneIfRequired(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/timezonedetector/TimeZoneDetectorStrategyImpl;->suggestPhoneTimeZone(Landroid/app/timezonedetector/PhoneTimeZoneSuggestion;)V
+HSPLcom/android/server/trust/-$$Lambda$TrustManagerService$1$98HKBkg-C1PLlz_Q1vJz1OJtw4c;-><clinit>()V
 HSPLcom/android/server/trust/-$$Lambda$TrustManagerService$1$98HKBkg-C1PLlz_Q1vJz1OJtw4c;-><init>()V
-HSPLcom/android/server/trust/-$$Lambda$TrustManagerService$1$98HKBkg-C1PLlz_Q1vJz1OJtw4c;->run()V
+HPLcom/android/server/trust/-$$Lambda$TrustManagerService$1$98HKBkg-C1PLlz_Q1vJz1OJtw4c;->run()V
+PLcom/android/server/trust/TrustAgentWrapper$1;-><init>(Lcom/android/server/trust/TrustAgentWrapper;)V
+PLcom/android/server/trust/TrustAgentWrapper$2;-><init>(Lcom/android/server/trust/TrustAgentWrapper;)V
 PLcom/android/server/trust/TrustAgentWrapper$2;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/trust/TrustAgentWrapper$3;-><init>(Lcom/android/server/trust/TrustAgentWrapper;)V
 PLcom/android/server/trust/TrustAgentWrapper$3;->grantTrust(Ljava/lang/CharSequence;JI)V
 PLcom/android/server/trust/TrustAgentWrapper$3;->revokeTrust()V
 PLcom/android/server/trust/TrustAgentWrapper$3;->setManagingTrust(Z)V
+PLcom/android/server/trust/TrustAgentWrapper$4;-><init>(Lcom/android/server/trust/TrustAgentWrapper;)V
 PLcom/android/server/trust/TrustAgentWrapper$4;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/trust/TrustAgentWrapper$4;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/trust/TrustAgentWrapper;-><clinit>()V
 PLcom/android/server/trust/TrustAgentWrapper;-><init>(Landroid/content/Context;Lcom/android/server/trust/TrustManagerService;Landroid/content/Intent;Landroid/os/UserHandle;)V
+PLcom/android/server/trust/TrustAgentWrapper;->access$000(Lcom/android/server/trust/TrustAgentWrapper;)Landroid/content/ComponentName;
+PLcom/android/server/trust/TrustAgentWrapper;->access$100(Lcom/android/server/trust/TrustAgentWrapper;)Landroid/os/Handler;
+HPLcom/android/server/trust/TrustAgentWrapper;->access$1000(Lcom/android/server/trust/TrustAgentWrapper;)I
+HPLcom/android/server/trust/TrustAgentWrapper;->access$1100(Lcom/android/server/trust/TrustAgentWrapper;)Lcom/android/server/trust/TrustManagerService;
+PLcom/android/server/trust/TrustAgentWrapper;->access$1302(Lcom/android/server/trust/TrustAgentWrapper;Landroid/os/IBinder;)Landroid/os/IBinder;
+PLcom/android/server/trust/TrustAgentWrapper;->access$1500(Lcom/android/server/trust/TrustAgentWrapper;)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$1502(Lcom/android/server/trust/TrustAgentWrapper;Z)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$1602(Lcom/android/server/trust/TrustAgentWrapper;Landroid/service/trust/ITrustAgentService;)Landroid/service/trust/ITrustAgentService;
+PLcom/android/server/trust/TrustAgentWrapper;->access$1800(Lcom/android/server/trust/TrustAgentWrapper;)Landroid/service/trust/ITrustAgentServiceCallback;
+PLcom/android/server/trust/TrustAgentWrapper;->access$1900(Lcom/android/server/trust/TrustAgentWrapper;Landroid/service/trust/ITrustAgentServiceCallback;)V
+PLcom/android/server/trust/TrustAgentWrapper;->access$2000(Lcom/android/server/trust/TrustAgentWrapper;)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$2002(Lcom/android/server/trust/TrustAgentWrapper;Z)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$202(Lcom/android/server/trust/TrustAgentWrapper;Z)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$2100(Lcom/android/server/trust/TrustAgentWrapper;)Z
+PLcom/android/server/trust/TrustAgentWrapper;->access$2200(Lcom/android/server/trust/TrustAgentWrapper;)V
+PLcom/android/server/trust/TrustAgentWrapper;->access$300(Lcom/android/server/trust/TrustAgentWrapper;)Ljava/lang/CharSequence;
+PLcom/android/server/trust/TrustAgentWrapper;->access$302(Lcom/android/server/trust/TrustAgentWrapper;Ljava/lang/CharSequence;)Ljava/lang/CharSequence;
+PLcom/android/server/trust/TrustAgentWrapper;->access$500()Z
 PLcom/android/server/trust/TrustAgentWrapper;->destroy()V
+PLcom/android/server/trust/TrustAgentWrapper;->getMessage()Ljava/lang/CharSequence;
+PLcom/android/server/trust/TrustAgentWrapper;->getScheduledRestartUptimeMillis()J
 PLcom/android/server/trust/TrustAgentWrapper;->isBound()Z
-PLcom/android/server/trust/TrustAgentWrapper;->isConnected()Z
+HPLcom/android/server/trust/TrustAgentWrapper;->isConnected()Z
 PLcom/android/server/trust/TrustAgentWrapper;->isManagingTrust()Z
 PLcom/android/server/trust/TrustAgentWrapper;->isTrusted()Z
-PLcom/android/server/trust/TrustAgentWrapper;->onDeviceLocked()V
-PLcom/android/server/trust/TrustAgentWrapper;->onDeviceUnlocked()V
+HPLcom/android/server/trust/TrustAgentWrapper;->onDeviceLocked()V
+HPLcom/android/server/trust/TrustAgentWrapper;->onDeviceUnlocked()V
+PLcom/android/server/trust/TrustAgentWrapper;->onError(Ljava/lang/Exception;)V
 PLcom/android/server/trust/TrustAgentWrapper;->onUnlockAttempt(Z)V
+PLcom/android/server/trust/TrustAgentWrapper;->onUnlockLockout(I)V
+PLcom/android/server/trust/TrustAgentWrapper;->scheduleRestart()V
 PLcom/android/server/trust/TrustAgentWrapper;->setCallback(Landroid/service/trust/ITrustAgentServiceCallback;)V
-PLcom/android/server/trust/TrustAgentWrapper;->updateDevicePolicyFeatures()Z
+HPLcom/android/server/trust/TrustAgentWrapper;->updateDevicePolicyFeatures()Z
+HPLcom/android/server/trust/TrustArchive$Event;-><init>(IILandroid/content/ComponentName;Ljava/lang/String;JIZ)V
+HPLcom/android/server/trust/TrustArchive$Event;-><init>(IILandroid/content/ComponentName;Ljava/lang/String;JIZLcom/android/server/trust/TrustArchive$1;)V
+HSPLcom/android/server/trust/TrustArchive;-><init>()V
+HPLcom/android/server/trust/TrustArchive;->addEvent(Lcom/android/server/trust/TrustArchive$Event;)V
 PLcom/android/server/trust/TrustArchive;->dump(Ljava/io/PrintWriter;IILjava/lang/String;Z)V
+PLcom/android/server/trust/TrustArchive;->dumpGrantFlags(I)Ljava/lang/String;
 PLcom/android/server/trust/TrustArchive;->dumpType(I)Ljava/lang/String;
+PLcom/android/server/trust/TrustArchive;->formatDuration(J)Ljava/lang/String;
+PLcom/android/server/trust/TrustArchive;->formatElapsed(J)Ljava/lang/String;
+PLcom/android/server/trust/TrustArchive;->getSimpleName(Landroid/content/ComponentName;)Ljava/lang/String;
 PLcom/android/server/trust/TrustArchive;->logAgentConnected(ILandroid/content/ComponentName;)V
 PLcom/android/server/trust/TrustArchive;->logAgentDied(ILandroid/content/ComponentName;)V
 PLcom/android/server/trust/TrustArchive;->logAgentStopped(ILandroid/content/ComponentName;)V
-PLcom/android/server/trust/TrustArchive;->logDevicePolicyChanged()V
+HPLcom/android/server/trust/TrustArchive;->logDevicePolicyChanged()V
 PLcom/android/server/trust/TrustArchive;->logGrantTrust(ILandroid/content/ComponentName;Ljava/lang/String;JI)V
 PLcom/android/server/trust/TrustArchive;->logManagingTrust(ILandroid/content/ComponentName;Z)V
 PLcom/android/server/trust/TrustArchive;->logRevokeTrust(ILandroid/content/ComponentName;)V
+PLcom/android/server/trust/TrustManagerService$1$1;-><init>(Lcom/android/server/trust/TrustManagerService$1;Ljava/io/PrintWriter;Ljava/util/List;)V
 PLcom/android/server/trust/TrustManagerService$1$1;->run()V
-PLcom/android/server/trust/TrustManagerService$1;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V
+HSPLcom/android/server/trust/TrustManagerService$1;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+PLcom/android/server/trust/TrustManagerService$1;->access$900(Lcom/android/server/trust/TrustManagerService$1;Ljava/io/PrintWriter;Landroid/content/pm/UserInfo;Z)V
+HPLcom/android/server/trust/TrustManagerService$1;->clearAllBiometricRecognized(Landroid/hardware/biometrics/BiometricSourceType;)V
 PLcom/android/server/trust/TrustManagerService$1;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/trust/TrustManagerService$1;->dumpBool(Z)Ljava/lang/String;
+PLcom/android/server/trust/TrustManagerService$1;->dumpHex(I)Ljava/lang/String;
 PLcom/android/server/trust/TrustManagerService$1;->dumpUser(Ljava/io/PrintWriter;Landroid/content/pm/UserInfo;Z)V
-PLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z
-HSPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z
+HSPLcom/android/server/trust/TrustManagerService$1;->enforceListenerPermission()V
+HSPLcom/android/server/trust/TrustManagerService$1;->enforceReportPermission()V
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceLocked(I)Z
+HPLcom/android/server/trust/TrustManagerService$1;->isDeviceSecure(I)Z
 HSPLcom/android/server/trust/TrustManagerService$1;->isTrustUsuallyManaged(I)Z
+PLcom/android/server/trust/TrustManagerService$1;->lambda$reportKeyguardShowingChanged$0()V
 HSPLcom/android/server/trust/TrustManagerService$1;->registerTrustListener(Landroid/app/trust/ITrustListener;)V
-HSPLcom/android/server/trust/TrustManagerService$1;->reportEnabledTrustAgentsChanged(I)V
+PLcom/android/server/trust/TrustManagerService$1;->reportEnabledTrustAgentsChanged(I)V
 HSPLcom/android/server/trust/TrustManagerService$1;->reportKeyguardShowingChanged()V
-PLcom/android/server/trust/TrustManagerService$1;->reportUnlockAttempt(ZI)V
-PLcom/android/server/trust/TrustManagerService$1;->unlockedByBiometricForUser(ILandroid/hardware/biometrics/BiometricSourceType;)V
+HPLcom/android/server/trust/TrustManagerService$1;->reportUnlockAttempt(ZI)V
+PLcom/android/server/trust/TrustManagerService$1;->reportUnlockLockout(II)V
+PLcom/android/server/trust/TrustManagerService$1;->setDeviceLockedForUser(IZ)V
+HPLcom/android/server/trust/TrustManagerService$1;->unlockedByBiometricForUser(ILandroid/hardware/biometrics/BiometricSourceType;)V
+HSPLcom/android/server/trust/TrustManagerService$2;-><init>(Lcom/android/server/trust/TrustManagerService;)V
 HSPLcom/android/server/trust/TrustManagerService$2;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/trust/TrustManagerService$3;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
-HSPLcom/android/server/trust/TrustManagerService$3;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/server/trust/TrustManagerService$3;->onSomePackagesChanged()V
-PLcom/android/server/trust/TrustManagerService$AgentInfo;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/trust/TrustManagerService$3;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+HPLcom/android/server/trust/TrustManagerService$3;->onPackageChanged(Ljava/lang/String;I[Ljava/lang/String;)Z
+PLcom/android/server/trust/TrustManagerService$3;->onPackageDisappeared(Ljava/lang/String;I)V
+HPLcom/android/server/trust/TrustManagerService$3;->onSomePackagesChanged()V
+HSPLcom/android/server/trust/TrustManagerService$AgentInfo;-><init>()V
+HSPLcom/android/server/trust/TrustManagerService$AgentInfo;-><init>(Lcom/android/server/trust/TrustManagerService$1;)V
+HPLcom/android/server/trust/TrustManagerService$AgentInfo;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/trust/TrustManagerService$AgentInfo;->hashCode()I
+HSPLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;)V
+HSPLcom/android/server/trust/TrustManagerService$Receiver;-><init>(Lcom/android/server/trust/TrustManagerService;Lcom/android/server/trust/TrustManagerService$1;)V
+PLcom/android/server/trust/TrustManagerService$Receiver;->getUserId(Landroid/content/Intent;)I
 HSPLcom/android/server/trust/TrustManagerService$Receiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/trust/TrustManagerService$Receiver;->register(Landroid/content/Context;)V
+HSPLcom/android/server/trust/TrustManagerService$SettingsAttrs;-><init>(Landroid/content/ComponentName;Z)V
 HSPLcom/android/server/trust/TrustManagerService$SettingsObserver;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/os/Handler;)V
+PLcom/android/server/trust/TrustManagerService$SettingsObserver;->getLockWhenTrustLost()Z
+HSPLcom/android/server/trust/TrustManagerService$SettingsObserver;->getTrustAgentsExtendUnlock()Z
 HSPLcom/android/server/trust/TrustManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
 HSPLcom/android/server/trust/TrustManagerService$SettingsObserver;->updateContentObserver()V
+HSPLcom/android/server/trust/TrustManagerService$StrongAuthTracker;-><init>(Lcom/android/server/trust/TrustManagerService;Landroid/content/Context;)V
 PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->allowTrustFromUnlock(I)V
-PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->canAgentsRunForUser(I)Z
-HSPLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
+HPLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->canAgentsRunForUser(I)Z
+PLcom/android/server/trust/TrustManagerService$StrongAuthTracker;->onStrongAuthRequiredChanged(I)V
+PLcom/android/server/trust/TrustManagerService$TrustTimeoutAlarmListener;-><init>(Lcom/android/server/trust/TrustManagerService;I)V
 PLcom/android/server/trust/TrustManagerService$TrustTimeoutAlarmListener;->isQueued()Z
 PLcom/android/server/trust/TrustManagerService$TrustTimeoutAlarmListener;->onAlarm()V
 PLcom/android/server/trust/TrustManagerService$TrustTimeoutAlarmListener;->setQueued(Z)V
+HSPLcom/android/server/trust/TrustManagerService;-><clinit>()V
 HSPLcom/android/server/trust/TrustManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/trust/TrustManagerService;->access$100(Lcom/android/server/trust/TrustManagerService;)I
+PLcom/android/server/trust/TrustManagerService;->access$1000(Lcom/android/server/trust/TrustManagerService;I)Z
+PLcom/android/server/trust/TrustManagerService;->access$1100(Lcom/android/server/trust/TrustManagerService;I)Z
+PLcom/android/server/trust/TrustManagerService;->access$1200(Lcom/android/server/trust/TrustManagerService;)Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;
+PLcom/android/server/trust/TrustManagerService;->access$1300(Lcom/android/server/trust/TrustManagerService;)Landroid/util/ArraySet;
+PLcom/android/server/trust/TrustManagerService;->access$1400(Lcom/android/server/trust/TrustManagerService;)Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/trust/TrustManagerService;->access$1500(Lcom/android/server/trust/TrustManagerService;I)Z
+PLcom/android/server/trust/TrustManagerService;->access$1600(Lcom/android/server/trust/TrustManagerService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/trust/TrustManagerService;->access$1700(Lcom/android/server/trust/TrustManagerService;)Lcom/android/server/trust/TrustManagerService$SettingsObserver;
+HSPLcom/android/server/trust/TrustManagerService;->access$1800(Lcom/android/server/trust/TrustManagerService;Landroid/app/trust/ITrustListener;)V
+PLcom/android/server/trust/TrustManagerService;->access$2000(Lcom/android/server/trust/TrustManagerService;ZI)V
+PLcom/android/server/trust/TrustManagerService;->access$2100(Lcom/android/server/trust/TrustManagerService;II)V
+HPLcom/android/server/trust/TrustManagerService;->access$2200(Lcom/android/server/trust/TrustManagerService;I)V
+PLcom/android/server/trust/TrustManagerService;->access$2300(Lcom/android/server/trust/TrustManagerService;IZ)V
+PLcom/android/server/trust/TrustManagerService;->access$2400(Lcom/android/server/trust/TrustManagerService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/trust/TrustManagerService;->access$2500(Lcom/android/server/trust/TrustManagerService;IIZ)V
+PLcom/android/server/trust/TrustManagerService;->access$2600(Lcom/android/server/trust/TrustManagerService;II)V
+PLcom/android/server/trust/TrustManagerService;->access$2700(Lcom/android/server/trust/TrustManagerService;Ljava/lang/String;)V
+PLcom/android/server/trust/TrustManagerService;->access$2800(Lcom/android/server/trust/TrustManagerService;Lcom/android/internal/widget/LockPatternUtils;I)V
+PLcom/android/server/trust/TrustManagerService;->access$2900(Lcom/android/server/trust/TrustManagerService;)Landroid/util/SparseBooleanArray;
+HSPLcom/android/server/trust/TrustManagerService;->access$300(Lcom/android/server/trust/TrustManagerService;)Landroid/os/Handler;
+PLcom/android/server/trust/TrustManagerService;->access$3000(Lcom/android/server/trust/TrustManagerService;)Landroid/util/ArrayMap;
+PLcom/android/server/trust/TrustManagerService;->access$3100(Lcom/android/server/trust/TrustManagerService;)Landroid/app/AlarmManager;
+PLcom/android/server/trust/TrustManagerService;->access$3200(Lcom/android/server/trust/TrustManagerService;I)V
+HPLcom/android/server/trust/TrustManagerService;->access$400(Lcom/android/server/trust/TrustManagerService;)Lcom/android/internal/widget/LockPatternUtils;
+HPLcom/android/server/trust/TrustManagerService;->access$500(Lcom/android/server/trust/TrustManagerService;I)I
+HSPLcom/android/server/trust/TrustManagerService;->access$600(Lcom/android/server/trust/TrustManagerService;)Landroid/content/Context;
+PLcom/android/server/trust/TrustManagerService;->access$700(Lcom/android/server/trust/TrustManagerService;)Z
+PLcom/android/server/trust/TrustManagerService;->access$800(Lcom/android/server/trust/TrustManagerService;)Landroid/os/UserManager;
 HSPLcom/android/server/trust/TrustManagerService;->addListener(Landroid/app/trust/ITrustListener;)V
 HSPLcom/android/server/trust/TrustManagerService;->aggregateIsTrustManaged(I)Z
 HSPLcom/android/server/trust/TrustManagerService;->aggregateIsTrusted(I)Z
-HSPLcom/android/server/trust/TrustManagerService;->dispatchDeviceLocked(IZ)V
+HPLcom/android/server/trust/TrustManagerService;->dispatchDeviceLocked(IZ)V
 HSPLcom/android/server/trust/TrustManagerService;->dispatchOnTrustChanged(ZII)V
 HSPLcom/android/server/trust/TrustManagerService;->dispatchOnTrustManagedChanged(ZI)V
-PLcom/android/server/trust/TrustManagerService;->dispatchUnlockAttempt(ZI)V
+HPLcom/android/server/trust/TrustManagerService;->dispatchUnlockAttempt(ZI)V
+PLcom/android/server/trust/TrustManagerService;->dispatchUnlockLockout(II)V
+HSPLcom/android/server/trust/TrustManagerService;->getComponentName(Landroid/content/pm/ResolveInfo;)Landroid/content/ComponentName;
+PLcom/android/server/trust/TrustManagerService;->getDefaultFactoryTrustAgent(Landroid/content/Context;)Landroid/content/ComponentName;
 HSPLcom/android/server/trust/TrustManagerService;->getSettingsAttrs(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)Lcom/android/server/trust/TrustManagerService$SettingsAttrs;
 PLcom/android/server/trust/TrustManagerService;->handleScheduleTrustTimeout(II)V
 HSPLcom/android/server/trust/TrustManagerService;->isDeviceLockedInner(I)Z
 HSPLcom/android/server/trust/TrustManagerService;->isTrustUsuallyManagedInternal(I)Z
-HSPLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(Lcom/android/internal/widget/LockPatternUtils;I)V
+PLcom/android/server/trust/TrustManagerService;->maybeEnableFactoryTrustAgents(Lcom/android/internal/widget/LockPatternUtils;I)V
 PLcom/android/server/trust/TrustManagerService;->maybeLockScreen(I)V
 HSPLcom/android/server/trust/TrustManagerService;->onBootPhase(I)V
+PLcom/android/server/trust/TrustManagerService;->onCleanupUser(I)V
 HSPLcom/android/server/trust/TrustManagerService;->onStart()V
 HSPLcom/android/server/trust/TrustManagerService;->onStartUser(I)V
-HSPLcom/android/server/trust/TrustManagerService;->onUnlockUser(I)V
+PLcom/android/server/trust/TrustManagerService;->onStopUser(I)V
+PLcom/android/server/trust/TrustManagerService;->onUnlockUser(I)V
 HSPLcom/android/server/trust/TrustManagerService;->refreshAgentList(I)V
 HSPLcom/android/server/trust/TrustManagerService;->refreshDeviceLockedForUser(I)V
-HSPLcom/android/server/trust/TrustManagerService;->removeAgentsOfPackage(Ljava/lang/String;)V
+HPLcom/android/server/trust/TrustManagerService;->removeAgentsOfPackage(Ljava/lang/String;)V
+PLcom/android/server/trust/TrustManagerService;->resetAgent(Landroid/content/ComponentName;I)V
 HSPLcom/android/server/trust/TrustManagerService;->resolveAllowedTrustAgents(Landroid/content/pm/PackageManager;I)Ljava/util/List;
-HSPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
+HPLcom/android/server/trust/TrustManagerService;->resolveProfileParent(I)I
+PLcom/android/server/trust/TrustManagerService;->scheduleTrustTimeout(IZ)V
 HSPLcom/android/server/trust/TrustManagerService;->setDeviceLockedForUser(IZ)V
 HSPLcom/android/server/trust/TrustManagerService;->updateDevicePolicyFeatures()V
 HSPLcom/android/server/trust/TrustManagerService;->updateTrust(II)V
 HSPLcom/android/server/trust/TrustManagerService;->updateTrust(IIZ)V
+HSPLcom/android/server/trust/TrustManagerService;->updateTrustAll()V
 PLcom/android/server/trust/TrustManagerService;->updateTrustUsuallyManaged(IZ)V
+HSPLcom/android/server/tv/TvInputHal;-><clinit>()V
+PLcom/android/server/twilight/-$$Lambda$QlMS1hfADW-S9aqM_RavcEKO3N0;-><init>(Lcom/android/server/twilight/TwilightService;)V
+PLcom/android/server/twilight/-$$Lambda$QlMS1hfADW-S9aqM_RavcEKO3N0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/twilight/-$$Lambda$TwilightService$stdw4-ZXNiEaXmDt9g9s8D1zEQU;-><init>(Lcom/android/server/twilight/TwilightListener;Lcom/android/server/twilight/TwilightState;)V
+PLcom/android/server/twilight/-$$Lambda$TwilightService$stdw4-ZXNiEaXmDt9g9s8D1zEQU;->run()V
+HSPLcom/android/server/twilight/TwilightService$1;-><init>(Lcom/android/server/twilight/TwilightService;)V
 HSPLcom/android/server/twilight/TwilightService$1;->getLastTwilightState()Lcom/android/server/twilight/TwilightState;
 HSPLcom/android/server/twilight/TwilightService$1;->registerListener(Lcom/android/server/twilight/TwilightListener;Landroid/os/Handler;)V
 HSPLcom/android/server/twilight/TwilightService$1;->unregisterListener(Lcom/android/server/twilight/TwilightListener;)V
-HSPLcom/android/server/twilight/TwilightService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/twilight/TwilightService$3;->run()V
+PLcom/android/server/twilight/TwilightService$2;-><init>(Lcom/android/server/twilight/TwilightService;)V
+PLcom/android/server/twilight/TwilightService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/twilight/TwilightService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/twilight/TwilightService;->calculateTwilightState(Landroid/location/Location;J)Lcom/android/server/twilight/TwilightState;
-HSPLcom/android/server/twilight/TwilightService;->handleMessage(Landroid/os/Message;)Z
+HSPLcom/android/server/twilight/TwilightService;->access$000(Lcom/android/server/twilight/TwilightService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/twilight/TwilightService;->access$100(Lcom/android/server/twilight/TwilightService;)Landroid/os/Handler;
+PLcom/android/server/twilight/TwilightService;->access$200(Lcom/android/server/twilight/TwilightService;)V
+PLcom/android/server/twilight/TwilightService;->calculateTwilightState(Landroid/location/Location;J)Lcom/android/server/twilight/TwilightState;
+PLcom/android/server/twilight/TwilightService;->handleMessage(Landroid/os/Message;)Z
+PLcom/android/server/twilight/TwilightService;->lambda$updateTwilightState$0(Lcom/android/server/twilight/TwilightListener;Lcom/android/server/twilight/TwilightState;)V
 PLcom/android/server/twilight/TwilightService;->onAlarm()V
 HSPLcom/android/server/twilight/TwilightService;->onBootPhase(I)V
-PLcom/android/server/twilight/TwilightService;->onLocationChanged(Landroid/location/Location;)V
+HPLcom/android/server/twilight/TwilightService;->onLocationChanged(Landroid/location/Location;)V
 PLcom/android/server/twilight/TwilightService;->onProviderDisabled(Ljava/lang/String;)V
 PLcom/android/server/twilight/TwilightService;->onProviderEnabled(Ljava/lang/String;)V
 HSPLcom/android/server/twilight/TwilightService;->onStart()V
-HSPLcom/android/server/twilight/TwilightService;->startListening()V
-HSPLcom/android/server/twilight/TwilightService;->updateTwilightState()V
+PLcom/android/server/twilight/TwilightService;->startListening()V
+PLcom/android/server/twilight/TwilightService;->stopListening()V
+HPLcom/android/server/twilight/TwilightService;->updateTwilightState()V
+PLcom/android/server/twilight/TwilightState;-><init>(JJ)V
+PLcom/android/server/twilight/TwilightState;->equals(Lcom/android/server/twilight/TwilightState;)Z
 PLcom/android/server/twilight/TwilightState;->equals(Ljava/lang/Object;)Z
-PLcom/android/server/uri/GrantUri;->equals(Ljava/lang/Object;)Z
+HPLcom/android/server/twilight/TwilightState;->isNight()Z
+PLcom/android/server/twilight/TwilightState;->sunrise()Ljava/time/LocalDateTime;
+PLcom/android/server/twilight/TwilightState;->sunriseTimeMillis()J
+PLcom/android/server/twilight/TwilightState;->sunset()Ljava/time/LocalDateTime;
+PLcom/android/server/twilight/TwilightState;->sunsetTimeMillis()J
+PLcom/android/server/twilight/TwilightState;->toString()Ljava/lang/String;
+PLcom/android/server/updates/CertPinInstallReceiver;-><init>()V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver$1;-><init>(Lcom/android/server/updates/ConfigUpdateInstallReceiver;Landroid/content/Intent;Landroid/content/Context;)V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver$1;->run()V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;-><init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$000(Lcom/android/server/updates/ConfigUpdateInstallReceiver;Landroid/content/Intent;)I
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$100(Lcom/android/server/updates/ConfigUpdateInstallReceiver;Landroid/content/Intent;)Ljava/lang/String;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$200(Lcom/android/server/updates/ConfigUpdateInstallReceiver;)I
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$300(Lcom/android/server/updates/ConfigUpdateInstallReceiver;)[B
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$400([B)Ljava/lang/String;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$500(Lcom/android/server/updates/ConfigUpdateInstallReceiver;Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->access$600(Lcom/android/server/updates/ConfigUpdateInstallReceiver;Landroid/content/Context;Landroid/content/Intent;)Ljava/io/BufferedInputStream;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getAltContent(Landroid/content/Context;Landroid/content/Intent;)Ljava/io/BufferedInputStream;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getContentFromIntent(Landroid/content/Intent;)Landroid/net/Uri;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getCurrentContent()[B
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getCurrentHash([B)Ljava/lang/String;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getCurrentVersion()I
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getRequiredHashFromIntent(Landroid/content/Intent;)Ljava/lang/String;
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->getVersionFromIntent(Landroid/content/Intent;)I
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->install(Ljava/io/InputStream;I)V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->postInstall(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->verifyPreviousHash(Ljava/lang/String;Ljava/lang/String;)Z
+PLcom/android/server/updates/ConfigUpdateInstallReceiver;->verifyVersion(II)Z
+HPLcom/android/server/updates/ConfigUpdateInstallReceiver;->writeUpdate(Ljava/io/File;Ljava/io/File;Ljava/io/InputStream;)V
+PLcom/android/server/updates/ConversationActionsInstallReceiver;-><init>()V
+PLcom/android/server/updates/ConversationActionsInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/EmergencyNumberDbInstallReceiver;-><init>()V
+PLcom/android/server/updates/LangIdInstallReceiver;-><init>()V
+PLcom/android/server/updates/LangIdInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/SmartSelectionInstallReceiver;-><init>()V
+PLcom/android/server/updates/SmartSelectionInstallReceiver;->verifyVersion(II)Z
+PLcom/android/server/updates/SmsShortCodesInstallReceiver;-><init>()V
+HSPLcom/android/server/uri/GrantUri;-><init>(ILandroid/net/Uri;Z)V
+HPLcom/android/server/uri/GrantUri;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/uri/GrantUri;->hashCode()I
-HSPLcom/android/server/uri/GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/uri/GrantUri;
-PLcom/android/server/uri/GrantUri;->toString()Ljava/lang/String;
+HPLcom/android/server/uri/GrantUri;->resolve(ILandroid/net/Uri;)Lcom/android/server/uri/GrantUri;
+PLcom/android/server/uri/GrantUri;->toSafeString()Ljava/lang/String;
+HPLcom/android/server/uri/GrantUri;->toString()Ljava/lang/String;
+PLcom/android/server/uri/NeededUriGrants;-><init>(Ljava/lang/String;II)V
+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;->onStart()V
-HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
-HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
+HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;-><init>(Lcom/android/server/uri/UriGrantsManagerService;)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkGrantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;I)Lcom/android/server/uri/NeededUriGrants;
-HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->dump(Ljava/io/PrintWriter;ZLjava/lang/String;)V
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->dump(Ljava/io/PrintWriter;ZLjava/lang/String;)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
 PLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;I)V
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/uri/UriPermissionOwner;I)V
 PLcom/android/server/uri/UriGrantsManagerService$LocalService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->newUriPermissionOwner(Ljava/lang/String;)Landroid/os/IBinder;
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->onActivityManagerInternalAdded()V
 HSPLcom/android/server/uri/UriGrantsManagerService$LocalService;->onSystemReady()V
-PLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionIfNeeded(Lcom/android/server/uri/UriPermission;)V
-HSPLcom/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;II)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionIfNeeded(Lcom/android/server/uri/UriPermission;)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->removeUriPermissionsForPackage(Ljava/lang/String;IZZ)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+HPLcom/android/server/uri/UriGrantsManagerService$LocalService;->revokeUriPermissionFromOwner(Landroid/os/IBinder;Landroid/net/Uri;II)V
 HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I
+HSPLcom/android/server/uri/UriGrantsManagerService;-><init>(Landroid/content/Context;Lcom/android/server/uri/UriGrantsManagerService$1;)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->access$100(Lcom/android/server/uri/UriGrantsManagerService;)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->access$300(Lcom/android/server/uri/UriGrantsManagerService;)Ljava/lang/Object;
+PLcom/android/server/uri/UriGrantsManagerService;->access$400(Lcom/android/server/uri/UriGrantsManagerService;Lcom/android/server/uri/UriPermission;)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->access$500(Lcom/android/server/uri/UriGrantsManagerService;Ljava/lang/String;)V
+PLcom/android/server/uri/UriGrantsManagerService;->access$600(Lcom/android/server/uri/UriGrantsManagerService;)Landroid/util/SparseArray;
+HPLcom/android/server/uri/UriGrantsManagerService;->checkAuthorityGrants(ILandroid/content/pm/ProviderInfo;IZ)Z
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermission(ILjava/lang/String;Landroid/net/Uri;II)I
+HPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;II)I
 HSPLcom/android/server/uri/UriGrantsManagerService;->checkGrantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;ILcom/android/server/uri/NeededUriGrants;I)Lcom/android/server/uri/NeededUriGrants;
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternal(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z
-HSPLcom/android/server/uri/UriGrantsManagerService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
+HPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissions(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;II)Z
+HPLcom/android/server/uri/UriGrantsManagerService;->checkHoldingPermissionsInternal(Landroid/content/pm/IPackageManager;Landroid/content/pm/ProviderInfo;Lcom/android/server/uri/GrantUri;IIZ)Z
+HPLcom/android/server/uri/UriGrantsManagerService;->checkUriPermission(Lcom/android/server/uri/GrantUri;II)Z
 HSPLcom/android/server/uri/UriGrantsManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
 HSPLcom/android/server/uri/UriGrantsManagerService;->findOrCreateUriPermission(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
-PLcom/android/server/uri/UriGrantsManagerService;->getPersistedUriPermissions(Ljava/lang/String;ZZ)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/uri/UriGrantsManagerService;->findUriPermissionLocked(ILcom/android/server/uri/GrantUri;)Lcom/android/server/uri/UriPermission;
+PLcom/android/server/uri/UriGrantsManagerService;->getGrantedUriPermissions(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 HSPLcom/android/server/uri/UriGrantsManagerService;->getProviderInfo(Ljava/lang/String;II)Landroid/content/pm/ProviderInfo;
-HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
+HPLcom/android/server/uri/UriGrantsManagerService;->getUriPermissions(Ljava/lang/String;ZZ)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermission(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;I)V
 HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromIntent(ILjava/lang/String;Landroid/content/Intent;Lcom/android/server/uri/UriPermissionOwner;I)V
-HSPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
-PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUnchecked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;)V
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionFromOwner(Landroid/os/IBinder;ILjava/lang/String;Landroid/net/Uri;III)V
+HPLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUnchecked(ILjava/lang/String;Lcom/android/server/uri/GrantUri;ILcom/android/server/uri/UriPermissionOwner;)V
 PLcom/android/server/uri/UriGrantsManagerService;->grantUriPermissionUncheckedFromIntent(Lcom/android/server/uri/NeededUriGrants;Lcom/android/server/uri/UriPermissionOwner;)V
 PLcom/android/server/uri/UriGrantsManagerService;->matchesProvider(Landroid/net/Uri;Landroid/content/pm/ProviderInfo;)Z
+PLcom/android/server/uri/UriGrantsManagerService;->maybePrunePersistedUriGrants(I)Z
 HSPLcom/android/server/uri/UriGrantsManagerService;->onActivityManagerInternalAdded()V
 HSPLcom/android/server/uri/UriGrantsManagerService;->readGrantedUriPermissions()V
-PLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionIfNeeded(Lcom/android/server/uri/UriPermission;)V
-HSPLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionsForPackage(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;->releasePersistableUriPermission(Landroid/net/Uri;ILjava/lang/String;I)V
+HPLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionIfNeeded(Lcom/android/server/uri/UriPermission;)V
+HPLcom/android/server/uri/UriGrantsManagerService;->removeUriPermissionsForPackage(Ljava/lang/String;IZZ)V
+HPLcom/android/server/uri/UriGrantsManagerService;->revokeUriPermission(Ljava/lang/String;ILcom/android/server/uri/GrantUri;I)V
+HSPLcom/android/server/uri/UriGrantsManagerService;->start()V
+PLcom/android/server/uri/UriGrantsManagerService;->takePersistableUriPermission(Landroid/net/Uri;ILjava/lang/String;I)V
 HSPLcom/android/server/uri/UriPermission;-><init>(Ljava/lang/String;Ljava/lang/String;ILcom/android/server/uri/GrantUri;)V
-PLcom/android/server/uri/UriPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-PLcom/android/server/uri/UriPermission;->grantModes(ILcom/android/server/uri/UriPermissionOwner;)V
-PLcom/android/server/uri/UriPermission;->removeReadOwner(Lcom/android/server/uri/UriPermissionOwner;)V
+HPLcom/android/server/uri/UriPermission;->addReadOwner(Lcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriPermission;->addWriteOwner(Lcom/android/server/uri/UriPermissionOwner;)V
+PLcom/android/server/uri/UriPermission;->buildPersistedPublicApiObject()Landroid/content/UriPermission;
+HPLcom/android/server/uri/UriPermission;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/uri/UriPermission;->getStrength(I)I
+HPLcom/android/server/uri/UriPermission;->grantModes(ILcom/android/server/uri/UriPermissionOwner;)V
+HSPLcom/android/server/uri/UriPermission;->initPersistedModes(IJ)V
+HPLcom/android/server/uri/UriPermission;->removeReadOwner(Lcom/android/server/uri/UriPermissionOwner;)V
 PLcom/android/server/uri/UriPermission;->removeWriteOwner(Lcom/android/server/uri/UriPermissionOwner;)V
-HSPLcom/android/server/uri/UriPermission;->revokeModes(IZ)Z
-PLcom/android/server/uri/UriPermission;->toString()Ljava/lang/String;
+HPLcom/android/server/uri/UriPermission;->revokeModes(IZ)Z
+PLcom/android/server/uri/UriPermission;->takePersistableModes(I)Z
+HPLcom/android/server/uri/UriPermission;->toString()Ljava/lang/String;
 HSPLcom/android/server/uri/UriPermission;->updateModeFlags()V
-HSPLcom/android/server/uri/UriPermissionOwner$ExternalToken;->getOwner()Lcom/android/server/uri/UriPermissionOwner;
-PLcom/android/server/uri/UriPermissionOwner;->addReadPermission(Lcom/android/server/uri/UriPermission;)V
+HSPLcom/android/server/uri/UriPermissionOwner$ExternalToken;-><init>(Lcom/android/server/uri/UriPermissionOwner;)V
+HPLcom/android/server/uri/UriPermissionOwner$ExternalToken;->getOwner()Lcom/android/server/uri/UriPermissionOwner;
+HSPLcom/android/server/uri/UriPermissionOwner;-><init>(Lcom/android/server/uri/UriGrantsManagerInternal;Ljava/lang/Object;)V
+HPLcom/android/server/uri/UriPermissionOwner;->addReadPermission(Lcom/android/server/uri/UriPermission;)V
 PLcom/android/server/uri/UriPermissionOwner;->addWritePermission(Lcom/android/server/uri/UriPermission;)V
-PLcom/android/server/uri/UriPermissionOwner;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/uri/UriPermissionOwner;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/uri/UriPermissionOwner;->fromExternalToken(Landroid/os/IBinder;)Lcom/android/server/uri/UriPermissionOwner;
+HSPLcom/android/server/uri/UriPermissionOwner;->getExternalToken()Landroid/os/Binder;
 PLcom/android/server/uri/UriPermissionOwner;->removeReadPermission(Lcom/android/server/uri/UriPermission;)V
-HSPLcom/android/server/uri/UriPermissionOwner;->removeUriPermission(Lcom/android/server/uri/GrantUri;I)V
-HSPLcom/android/server/uri/UriPermissionOwner;->removeUriPermissions()V
-HSPLcom/android/server/uri/UriPermissionOwner;->removeUriPermissions(I)V
+HPLcom/android/server/uri/UriPermissionOwner;->removeUriPermission(Lcom/android/server/uri/GrantUri;I)V
+PLcom/android/server/uri/UriPermissionOwner;->removeUriPermissions()V
+HPLcom/android/server/uri/UriPermissionOwner;->removeUriPermissions(I)V
 PLcom/android/server/uri/UriPermissionOwner;->toString()Ljava/lang/String;
-PLcom/android/server/usage/-$$Lambda$UserUsageStatsService$wWX7s9XZT5O4B7JcG_IB_VcPI9s;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
-HSPLcom/android/server/usage/AppIdleHistory;->clearUsage(Ljava/lang/String;I)V
-PLcom/android/server/usage/AppIdleHistory;->dump(Lcom/android/internal/util/IndentingPrintWriter;ILjava/lang/String;)V
-HSPLcom/android/server/usage/AppIdleHistory;->getAppStandbyBucket(Ljava/lang/String;IJ)I
-PLcom/android/server/usage/AppIdleHistory;->getAppStandbyBuckets(IZ)Ljava/util/ArrayList;
-HSPLcom/android/server/usage/AppIdleHistory;->getAppUsageHistory(Ljava/lang/String;IJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-HSPLcom/android/server/usage/AppIdleHistory;->getElapsedTime(J)J
-HSPLcom/android/server/usage/AppIdleHistory;->getPackageHistory(Landroid/util/ArrayMap;Ljava/lang/String;JZ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-HSPLcom/android/server/usage/AppIdleHistory;->getScreenOnTime(J)J
-HSPLcom/android/server/usage/AppIdleHistory;->getScreenOnTimeFile()Ljava/io/File;
-HSPLcom/android/server/usage/AppIdleHistory;->getThresholdIndex(Ljava/lang/String;IJ[J[J)I
-HSPLcom/android/server/usage/AppIdleHistory;->getTimeSinceLastJobRun(Ljava/lang/String;IJ)J
-HSPLcom/android/server/usage/AppIdleHistory;->getUserFile(I)Ljava/io/File;
-HSPLcom/android/server/usage/AppIdleHistory;->isIdle(Ljava/lang/String;IJ)Z
-HSPLcom/android/server/usage/AppIdleHistory;->readAppIdleTimes(ILandroid/util/ArrayMap;)V
-HSPLcom/android/server/usage/AppIdleHistory;->readScreenOnTime()V
-HSPLcom/android/server/usage/AppIdleHistory;->reportUsage(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;Ljava/lang/String;IIJJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-PLcom/android/server/usage/AppIdleHistory;->reportUsage(Ljava/lang/String;IIIJJ)Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-HSPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJII)V
-HSPLcom/android/server/usage/AppIdleHistory;->setAppStandbyBucket(Ljava/lang/String;IJIIZ)V
-HSPLcom/android/server/usage/AppIdleHistory;->setLastJobRunTime(Ljava/lang/String;IJ)V
-HSPLcom/android/server/usage/AppIdleHistory;->shouldInformListeners(Ljava/lang/String;IJI)Z
-HSPLcom/android/server/usage/AppIdleHistory;->updateDisplay(ZJ)V
-PLcom/android/server/usage/AppIdleHistory;->updateLastPrediction(Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;JI)V
-HSPLcom/android/server/usage/AppIdleHistory;->userFileExists(I)Z
-PLcom/android/server/usage/AppIdleHistory;->writeAppIdleDurations()V
-PLcom/android/server/usage/AppIdleHistory;->writeAppIdleTimes(I)V
-PLcom/android/server/usage/AppIdleHistory;->writeScreenOnTime()V
-PLcom/android/server/usage/AppStandbyController$2;->onDisplayAdded(I)V
-HSPLcom/android/server/usage/AppStandbyController$2;->onDisplayChanged(I)V
-PLcom/android/server/usage/AppStandbyController$2;->onDisplayRemoved(I)V
-HSPLcom/android/server/usage/AppStandbyController$AppStandbyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/usage/AppStandbyController$DeviceStateReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-PLcom/android/server/usage/AppStandbyController$Injector;->currentTimeMillis()J
-HSPLcom/android/server/usage/AppStandbyController$Injector;->elapsedRealtime()J
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getActiveNetworkScorer()Ljava/lang/String;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getAppIdleSettings()Ljava/lang/String;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getBootPhase()I
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getContext()Landroid/content/Context;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getDataSystemDirectory()Ljava/io/File;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getLooper()Landroid/os/Looper;
-HSPLcom/android/server/usage/AppStandbyController$Injector;->getRunningUserIds()[I
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isAppIdleEnabled()Z
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isBoundWidgetPackage(Landroid/appwidget/AppWidgetManager;Ljava/lang/String;I)Z
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isCharging()Z
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isDefaultDisplayOn()Z
-PLcom/android/server/usage/AppStandbyController$Injector;->isDeviceIdleMode()Z
-PLcom/android/server/usage/AppStandbyController$Injector;->isPackageEphemeral(ILjava/lang/String;)Z
-PLcom/android/server/usage/AppStandbyController$Injector;->isPackageInstalled(Ljava/lang/String;II)Z
-HSPLcom/android/server/usage/AppStandbyController$Injector;->isPowerSaveWhitelistExceptIdleApp(Ljava/lang/String;)Z
-HSPLcom/android/server/usage/AppStandbyController$Injector;->noteEvent(ILjava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController$Injector;->onBootPhase(I)V
-HSPLcom/android/server/usage/AppStandbyController$Injector;->registerDisplayListener(Landroid/hardware/display/DisplayManager$DisplayListener;Landroid/os/Handler;)V
-HSPLcom/android/server/usage/AppStandbyController$PackageReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/usage/AppStandbyController$SettingsObserver;->parseLongArray(Ljava/lang/String;[J)[J
-HSPLcom/android/server/usage/AppStandbyController$SettingsObserver;->registerObserver()V
-HSPLcom/android/server/usage/AppStandbyController$SettingsObserver;->updateSettings()V
-HSPLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->obtain(Ljava/lang/String;IIIZ)Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;
-HSPLcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;->recycle()V
-HSPLcom/android/server/usage/AppStandbyController;-><init>(Lcom/android/server/usage/AppStandbyController$Injector;)V
-HSPLcom/android/server/usage/AppStandbyController;->addListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V
-HSPLcom/android/server/usage/AppStandbyController;->checkAndUpdateStandbyState(Ljava/lang/String;IIJ)V
-HSPLcom/android/server/usage/AppStandbyController;->checkIdleStates(I)Z
-HSPLcom/android/server/usage/AppStandbyController;->clearAppIdleForPackage(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->clearCarrierPrivilegedApps()V
-PLcom/android/server/usage/AppStandbyController;->dumpState([Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/usage/AppStandbyController;->dumpUser(Lcom/android/internal/util/IndentingPrintWriter;ILjava/lang/String;)V
-PLcom/android/server/usage/AppStandbyController;->flushDurationsToDisk()V
-PLcom/android/server/usage/AppStandbyController;->flushToDisk(I)V
-PLcom/android/server/usage/AppStandbyController;->getAppId(Ljava/lang/String;)I
-HSPLcom/android/server/usage/AppStandbyController;->getAppStandbyBucket(Ljava/lang/String;IJZ)I
-PLcom/android/server/usage/AppStandbyController;->getAppStandbyBuckets(I)Ljava/util/List;
-HSPLcom/android/server/usage/AppStandbyController;->getBucketForLocked(Ljava/lang/String;IJ)I
-HSPLcom/android/server/usage/AppStandbyController;->getIdleUidsForUser(I)[I
-HSPLcom/android/server/usage/AppStandbyController;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
-HSPLcom/android/server/usage/AppStandbyController;->informListeners(Ljava/lang/String;IIIZ)V
-HSPLcom/android/server/usage/AppStandbyController;->informParoleStateChanged()V
-PLcom/android/server/usage/AppStandbyController;->initializeDefaultsForSystemApps(I)V
-HSPLcom/android/server/usage/AppStandbyController;->isActiveDeviceAdmin(Ljava/lang/String;I)Z
-HSPLcom/android/server/usage/AppStandbyController;->isAppIdleFiltered(Ljava/lang/String;IIJ)Z
-PLcom/android/server/usage/AppStandbyController;->isAppIdleFilteredOrParoled(Ljava/lang/String;IJZ)Z
-HSPLcom/android/server/usage/AppStandbyController;->isAppIdleUnfiltered(Ljava/lang/String;IJ)Z
-HSPLcom/android/server/usage/AppStandbyController;->isAppSpecial(Ljava/lang/String;II)Z
-HSPLcom/android/server/usage/AppStandbyController;->isCarrierApp(Ljava/lang/String;)Z
-HSPLcom/android/server/usage/AppStandbyController;->isDisplayOn()Z
-HSPLcom/android/server/usage/AppStandbyController;->isParoledOrCharging()Z
-HSPLcom/android/server/usage/AppStandbyController;->maybeInformListeners(Ljava/lang/String;IJIIZ)V
-HSPLcom/android/server/usage/AppStandbyController;->notifyBatteryStats(Ljava/lang/String;IZ)V
-HSPLcom/android/server/usage/AppStandbyController;->onAdminDataAvailable()V
-HSPLcom/android/server/usage/AppStandbyController;->onBootPhase(I)V
-PLcom/android/server/usage/AppStandbyController;->onDeviceIdleModeChanged()V
-HSPLcom/android/server/usage/AppStandbyController;->postCheckIdleStates(I)V
-HSPLcom/android/server/usage/AppStandbyController;->postOneTimeCheckIdleStates()V
-HSPLcom/android/server/usage/AppStandbyController;->postReportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-PLcom/android/server/usage/AppStandbyController;->postReportExemptedSyncStart(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->postReportSyncScheduled(Ljava/lang/String;IZ)V
-HSPLcom/android/server/usage/AppStandbyController;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->reportEvent(Landroid/app/usage/UsageEvents$Event;JI)V
-PLcom/android/server/usage/AppStandbyController;->reportExemptedSyncScheduled(Ljava/lang/String;I)V
-PLcom/android/server/usage/AppStandbyController;->reportExemptedSyncStart(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->reportUnexemptedSyncScheduled(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppStandbyController;->setActiveAdminApps(Ljava/util/Set;I)V
-HSPLcom/android/server/usage/AppStandbyController;->setAppIdleEnabled(Z)V
-PLcom/android/server/usage/AppStandbyController;->setAppIdleParoled(Z)V
-PLcom/android/server/usage/AppStandbyController;->setAppStandbyBucket(Ljava/lang/String;IIIJZ)V
-HSPLcom/android/server/usage/AppStandbyController;->setChargingState(Z)V
-HSPLcom/android/server/usage/AppStandbyController;->setLastJobRunTime(Ljava/lang/String;IJ)V
-PLcom/android/server/usage/AppStandbyController;->updateChargingStableState()V
-HSPLcom/android/server/usage/AppStandbyController;->usageEventToSubReason(I)I
+HPLcom/android/server/usage/-$$Lambda$StorageStatsService$2sUmj2KWW5zDR1eh9U7bRfiEbbQ;-><init>(Landroid/content/pm/PackageStats;Ljava/lang/String;ILjava/lang/String;)V
+HPLcom/android/server/usage/-$$Lambda$StorageStatsService$bqtERyu3o5aAlc4KluAfnmSEFLI;-><init>(Landroid/content/pm/PackageStats;ILjava/lang/String;)V
+HPLcom/android/server/usage/-$$Lambda$StorageStatsService$iSsicGWO2pdH7m9nkPc_jeZZgzE;-><init>(Landroid/content/pm/PackageStats;ILjava/lang/String;)V
+PLcom/android/server/usage/-$$Lambda$UsageStatsIdleService$RaU7JQt6BjPuOZETPRSrIe-Hdos;-><init>(Lcom/android/server/usage/UsageStatsIdleService;ILandroid/app/job/JobParameters;)V
+PLcom/android/server/usage/-$$Lambda$UsageStatsIdleService$RaU7JQt6BjPuOZETPRSrIe-Hdos;->run()V
+PLcom/android/server/usage/-$$Lambda$UserUsageStatsService$wWX7s9XZT5O4B7JcG_IB_VcPI9s;-><init>(JJLjava/lang/String;Landroid/util/ArraySet;Z)V
+HPLcom/android/server/usage/-$$Lambda$UserUsageStatsService$wWX7s9XZT5O4B7JcG_IB_VcPI9s;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+PLcom/android/server/usage/AppTimeLimitController$AppUsageGroup;-><init>(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UserData;Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;I[Ljava/lang/String;JLandroid/app/PendingIntent;)V
+PLcom/android/server/usage/AppTimeLimitController$AppUsageGroup;->remove()V
+PLcom/android/server/usage/AppTimeLimitController$AppUsageLimitGroup;-><init>(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UserData;Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;I[Ljava/lang/String;JJLandroid/app/PendingIntent;)V
+PLcom/android/server/usage/AppTimeLimitController$AppUsageLimitGroup;->getTotaUsageLimit()J
+PLcom/android/server/usage/AppTimeLimitController$AppUsageLimitGroup;->getUsageRemaining()J
+PLcom/android/server/usage/AppTimeLimitController$AppUsageLimitGroup;->remove()V
+HSPLcom/android/server/usage/AppTimeLimitController$Lock;-><init>()V
+HSPLcom/android/server/usage/AppTimeLimitController$Lock;-><init>(Lcom/android/server/usage/AppTimeLimitController$1;)V
+HSPLcom/android/server/usage/AppTimeLimitController$MyHandler;-><init>(Lcom/android/server/usage/AppTimeLimitController;Landroid/os/Looper;)V
 PLcom/android/server/usage/AppTimeLimitController$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;-><init>(Lcom/android/server/usage/AppTimeLimitController;I)V
 PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;-><init>(Lcom/android/server/usage/AppTimeLimitController;ILcom/android/server/usage/AppTimeLimitController$1;)V
-PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/usage/AppTimeLimitController$ObserverAppData;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;->removeAppUsageGroup(I)V
+PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;->removeAppUsageLimitGroup(I)V
+PLcom/android/server/usage/AppTimeLimitController$ObserverAppData;->removeSessionUsageGroup(I)V
+PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;-><init>(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UserData;Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;I[Ljava/lang/String;JLandroid/app/PendingIntent;JLandroid/app/PendingIntent;)V
+HPLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->dump(Ljava/io/PrintWriter;)V
 PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->noteUsageStart(JJ)V
 PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->noteUsageStop(J)V
 PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->onSessionEnd()V
+PLcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;->remove()V
 PLcom/android/server/usage/AppTimeLimitController$UsageGroup;-><init>(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UserData;Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;I[Ljava/lang/String;JLandroid/app/PendingIntent;)V
 PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->checkTimeout(J)V
-PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/usage/AppTimeLimitController$UsageGroup;->dump(Ljava/io/PrintWriter;)V
+PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->noteUsageStart(J)V
 PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->noteUsageStart(JJ)V
-PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->noteUsageStop(J)V
+HPLcom/android/server/usage/AppTimeLimitController$UsageGroup;->noteUsageStop(J)V
 PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->onLimitReached()V
-PLcom/android/server/usage/AppTimeLimitController$UserData;->addUsageGroup(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
-PLcom/android/server/usage/AppTimeLimitController$UserData;->dump(Ljava/io/PrintWriter;)V
-PLcom/android/server/usage/AppTimeLimitController$UserData;->isActive([Ljava/lang/String;)Z
+PLcom/android/server/usage/AppTimeLimitController$UsageGroup;->remove()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$1;)V
+PLcom/android/server/usage/AppTimeLimitController$UserData;->access$500(Lcom/android/server/usage/AppTimeLimitController$UserData;)I
+HPLcom/android/server/usage/AppTimeLimitController$UserData;->addUsageGroup(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+HPLcom/android/server/usage/AppTimeLimitController$UserData;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/usage/AppTimeLimitController$UserData;->isActive([Ljava/lang/String;)Z
+HPLcom/android/server/usage/AppTimeLimitController$UserData;->removeUsageGroup(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+HSPLcom/android/server/usage/AppTimeLimitController;-><clinit>()V
 HSPLcom/android/server/usage/AppTimeLimitController;-><init>(Lcom/android/server/usage/AppTimeLimitController$TimeLimitCallbackListener;Landroid/os/Looper;)V
+PLcom/android/server/usage/AppTimeLimitController;->access$100(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UsageGroup;J)V
+PLcom/android/server/usage/AppTimeLimitController;->access$200(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+PLcom/android/server/usage/AppTimeLimitController;->access$300(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+PLcom/android/server/usage/AppTimeLimitController;->access$400(Lcom/android/server/usage/AppTimeLimitController;)Lcom/android/server/usage/AppTimeLimitController$TimeLimitCallbackListener;
+PLcom/android/server/usage/AppTimeLimitController;->access$600(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;)V
+PLcom/android/server/usage/AppTimeLimitController;->access$700(Lcom/android/server/usage/AppTimeLimitController;Lcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;J)V
+PLcom/android/server/usage/AppTimeLimitController;->access$800(Lcom/android/server/usage/AppTimeLimitController;)Lcom/android/server/usage/AppTimeLimitController$Lock;
+PLcom/android/server/usage/AppTimeLimitController;->addAppUsageLimitObserver(II[Ljava/lang/String;JJLandroid/app/PendingIntent;I)V
+PLcom/android/server/usage/AppTimeLimitController;->addAppUsageObserver(II[Ljava/lang/String;JLandroid/app/PendingIntent;I)V
 PLcom/android/server/usage/AppTimeLimitController;->addUsageSessionObserver(II[Ljava/lang/String;JJLandroid/app/PendingIntent;Landroid/app/PendingIntent;I)V
-PLcom/android/server/usage/AppTimeLimitController;->dump([Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/usage/AppTimeLimitController;->getAppUsageLimit(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;
+HPLcom/android/server/usage/AppTimeLimitController;->cancelCheckTimeoutLocked(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+HPLcom/android/server/usage/AppTimeLimitController;->cancelInformSessionEndListener(Lcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;)V
+HPLcom/android/server/usage/AppTimeLimitController;->dump([Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/usage/AppTimeLimitController;->getAppUsageLimit(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;
+PLcom/android/server/usage/AppTimeLimitController;->getAppUsageLimitObserverPerUidLimit()J
+PLcom/android/server/usage/AppTimeLimitController;->getAppUsageObserverPerUidLimit()J
 PLcom/android/server/usage/AppTimeLimitController;->getMinTimeLimit()J
-HSPLcom/android/server/usage/AppTimeLimitController;->getUptimeMillis()J
+PLcom/android/server/usage/AppTimeLimitController;->getOrCreateObserverAppDataLocked(I)Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;
+HPLcom/android/server/usage/AppTimeLimitController;->getOrCreateUserDataLocked(I)Lcom/android/server/usage/AppTimeLimitController$UserData;
+HPLcom/android/server/usage/AppTimeLimitController;->getUptimeMillis()J
 PLcom/android/server/usage/AppTimeLimitController;->getUsageSessionObserverPerUidLimit()J
-HSPLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;IJ)V
-HSPLcom/android/server/usage/AppTimeLimitController;->noteUsageStop(Ljava/lang/String;I)V
-HSPLcom/android/server/usage/IntervalStats;-><init>()V
-HSPLcom/android/server/usage/IntervalStats;->addEvent(Landroid/app/usage/UsageEvents$Event;)V
-HSPLcom/android/server/usage/IntervalStats;->buildEvent(Landroid/util/proto/ProtoInputStream;Ljava/util/List;)Landroid/app/usage/UsageEvents$Event;
-HSPLcom/android/server/usage/IntervalStats;->commitTime(J)V
-HSPLcom/android/server/usage/IntervalStats;->getOrCreateConfigurationStats(Landroid/content/res/Configuration;)Landroid/app/usage/ConfigurationStats;
-HSPLcom/android/server/usage/IntervalStats;->getOrCreateUsageStats(Ljava/lang/String;)Landroid/app/usage/UsageStats;
-HSPLcom/android/server/usage/IntervalStats;->incrementAppLaunchCount(Ljava/lang/String;)V
-HSPLcom/android/server/usage/IntervalStats;->update(Ljava/lang/String;Ljava/lang/String;JII)V
+PLcom/android/server/usage/AppTimeLimitController;->noteActiveLocked(Lcom/android/server/usage/AppTimeLimitController$UserData;Lcom/android/server/usage/AppTimeLimitController$UsageGroup;J)V
+PLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;I)V
+HPLcom/android/server/usage/AppTimeLimitController;->noteUsageStart(Ljava/lang/String;IJ)V
+HPLcom/android/server/usage/AppTimeLimitController;->noteUsageStop(Ljava/lang/String;I)V
+PLcom/android/server/usage/AppTimeLimitController;->onUserRemoved(I)V
+HPLcom/android/server/usage/AppTimeLimitController;->postCheckTimeoutLocked(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;J)V
+PLcom/android/server/usage/AppTimeLimitController;->postInformLimitReachedListenerLocked(Lcom/android/server/usage/AppTimeLimitController$UsageGroup;)V
+PLcom/android/server/usage/AppTimeLimitController;->postInformSessionEndListenerLocked(Lcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;J)V
+PLcom/android/server/usage/AppTimeLimitController;->removeAppUsageLimitObserver(III)V
+PLcom/android/server/usage/AppTimeLimitController;->removeAppUsageObserver(III)V
+PLcom/android/server/usage/AppTimeLimitController;->removeUsageSessionObserver(III)V
+HPLcom/android/server/usage/IntervalStats$EventTracker;-><init>()V
+HPLcom/android/server/usage/IntervalStats$EventTracker;->commitTime(J)V
+HPLcom/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;->commitTime(J)V
+HPLcom/android/server/usage/IntervalStats;->deobfuscateData(Lcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/android/server/usage/IntervalStats;->deobfuscateEvents(Lcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/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;
+HPLcom/android/server/usage/IntervalStats;->incrementAppLaunchCount(Ljava/lang/String;)V
+HPLcom/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;->updateChooserCounts(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V
-HSPLcom/android/server/usage/IntervalStats;->updateKeyguardHidden(J)V
-HSPLcom/android/server/usage/IntervalStats;->updateKeyguardShown(J)V
-HSPLcom/android/server/usage/IntervalStats;->updateScreenInteractive(J)V
+HPLcom/android/server/usage/IntervalStats;->updateConfigurationStats(Landroid/content/res/Configuration;J)V
+PLcom/android/server/usage/IntervalStats;->updateKeyguardHidden(J)V
+PLcom/android/server/usage/IntervalStats;->updateKeyguardShown(J)V
+PLcom/android/server/usage/IntervalStats;->updateScreenInteractive(J)V
 PLcom/android/server/usage/IntervalStats;->updateScreenNonInteractive(J)V
-HSPLcom/android/server/usage/IntervalStats;->upgradeIfNeeded()V
-HSPLcom/android/server/usage/StorageStatsService$1;->onVolumeStateChanged(Landroid/os/storage/VolumeInfo;II)V
+PLcom/android/server/usage/PackagesTokenData;-><init>()V
+HPLcom/android/server/usage/PackagesTokenData;->getPackageString(I)Ljava/lang/String;
+HPLcom/android/server/usage/PackagesTokenData;->getPackageTokenOrAdd(Ljava/lang/String;J)I
+HPLcom/android/server/usage/PackagesTokenData;->getString(II)Ljava/lang/String;
+HPLcom/android/server/usage/PackagesTokenData;->getTokenOrAdd(ILjava/lang/String;Ljava/lang/String;)I
+HPLcom/android/server/usage/PackagesTokenData;->removePackage(Ljava/lang/String;J)I
+HSPLcom/android/server/usage/StorageStatsManagerInternal;-><init>()V
+HSPLcom/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
 HSPLcom/android/server/usage/StorageStatsService$H;-><init>(Lcom/android/server/usage/StorageStatsService;Landroid/os/Looper;)V
+HSPLcom/android/server/usage/StorageStatsService$H;->getInitializedStrategy()Lcom/android/server/storage/CacheQuotaStrategy;
 HSPLcom/android/server/usage/StorageStatsService$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/usage/StorageStatsService$H;->recalculateQuotas(Lcom/android/server/storage/CacheQuotaStrategy;)V
 HSPLcom/android/server/usage/StorageStatsService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/usage/StorageStatsService$Lifecycle;->onStart()V
+HSPLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;)V
+HSPLcom/android/server/usage/StorageStatsService$LocalService;-><init>(Lcom/android/server/usage/StorageStatsService;Lcom/android/server/usage/StorageStatsService$1;)V
+HSPLcom/android/server/usage/StorageStatsService;-><clinit>()V
 HSPLcom/android/server/usage/StorageStatsService;-><init>(Landroid/content/Context;)V
-PLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V
-PLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I
-PLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
-PLcom/android/server/usage/StorageStatsService;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J
-PLcom/android/server/usage/StorageStatsService;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J
-PLcom/android/server/usage/StorageStatsService;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J
+PLcom/android/server/usage/StorageStatsService;->access$000(Lcom/android/server/usage/StorageStatsService;)V
+HSPLcom/android/server/usage/StorageStatsService;->access$100(Lcom/android/server/usage/StorageStatsService;)Landroid/content/Context;
+HSPLcom/android/server/usage/StorageStatsService;->access$200(Lcom/android/server/usage/StorageStatsService;)Landroid/content/Context;
+HSPLcom/android/server/usage/StorageStatsService;->access$200(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer;
+HSPLcom/android/server/usage/StorageStatsService;->access$300(Lcom/android/server/usage/StorageStatsService;)Landroid/util/ArrayMap;
+HSPLcom/android/server/usage/StorageStatsService;->access$300(Lcom/android/server/usage/StorageStatsService;)Lcom/android/server/pm/Installer;
+HSPLcom/android/server/usage/StorageStatsService;->access$400(Lcom/android/server/usage/StorageStatsService;)Landroid/util/ArrayMap;
+HPLcom/android/server/usage/StorageStatsService;->enforcePermission(ILjava/lang/String;)V
+HPLcom/android/server/usage/StorageStatsService;->enforceStatsPermission(ILjava/lang/String;)V
+HPLcom/android/server/usage/StorageStatsService;->forEachStorageStatsAugmenter(Ljava/util/function/Consumer;Ljava/lang/String;)V
+HPLcom/android/server/usage/StorageStatsService;->getAppIds(I)[I
+HPLcom/android/server/usage/StorageStatsService;->getCacheBytes(Ljava/lang/String;Ljava/lang/String;)J
+HPLcom/android/server/usage/StorageStatsService;->getCacheQuotaBytes(Ljava/lang/String;ILjava/lang/String;)J
+HPLcom/android/server/usage/StorageStatsService;->getDefaultFlags()I
+HPLcom/android/server/usage/StorageStatsService;->getFreeBytes(Ljava/lang/String;Ljava/lang/String;)J
+HPLcom/android/server/usage/StorageStatsService;->getTotalBytes(Ljava/lang/String;Ljava/lang/String;)J
 HSPLcom/android/server/usage/StorageStatsService;->invalidateMounts()V
-PLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/usage/StorageStatsService;->isCacheQuotaCalculationsEnabled(Landroid/content/ContentResolver;)Z
+HPLcom/android/server/usage/StorageStatsService;->isQuotaSupported(Ljava/lang/String;Ljava/lang/String;)Z
 PLcom/android/server/usage/StorageStatsService;->notifySignificantDelta()V
 PLcom/android/server/usage/StorageStatsService;->queryExternalStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/ExternalStorageStats;
-PLcom/android/server/usage/StorageStatsService;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-PLcom/android/server/usage/StorageStatsService;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-PLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
-HSPLcom/android/server/usage/UnixCalendar;->addDays(I)V
-HSPLcom/android/server/usage/UnixCalendar;->addMonths(I)V
-HSPLcom/android/server/usage/UnixCalendar;->addWeeks(I)V
-HSPLcom/android/server/usage/UnixCalendar;->addYears(I)V
-HSPLcom/android/server/usage/UnixCalendar;->getTimeInMillis()J
-HSPLcom/android/server/usage/UnixCalendar;->setTimeInMillis(J)V
-HSPLcom/android/server/usage/UsageStatsDatabase$1;->accept(Ljava/io/File;Ljava/lang/String;)Z
-HSPLcom/android/server/usage/UsageStatsDatabase;->$closeResource(Ljava/lang/Throwable;Ljava/lang/AutoCloseable;)V
-HSPLcom/android/server/usage/UsageStatsDatabase;-><init>(Ljava/io/File;I)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->checkVersionAndBuildLocked()V
-PLcom/android/server/usage/UsageStatsDatabase;->checkinDailyFiles(Lcom/android/server/usage/UsageStatsDatabase$CheckinAction;)Z
-PLcom/android/server/usage/UsageStatsDatabase;->dump(Lcom/android/internal/util/IndentingPrintWriter;Z)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->findBestFitBucket(JJ)I
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForPackage(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForUid(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HPLcom/android/server/usage/StorageStatsService;->queryStatsForUser(Ljava/lang/String;ILjava/lang/String;)Landroid/app/usage/StorageStats;
+HPLcom/android/server/usage/StorageStatsService;->translate(Landroid/content/pm/PackageStats;)Landroid/app/usage/StorageStats;
+PLcom/android/server/usage/UnixCalendar;-><init>(J)V
+PLcom/android/server/usage/UnixCalendar;->addDays(I)V
+PLcom/android/server/usage/UnixCalendar;->addMonths(I)V
+PLcom/android/server/usage/UnixCalendar;->addWeeks(I)V
+PLcom/android/server/usage/UnixCalendar;->addYears(I)V
+HPLcom/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
+HPLcom/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
+HPLcom/android/server/usage/UsageStatsDatabase;->checkinDailyFiles(Lcom/android/server/usage/UsageStatsDatabase$CheckinAction;)Z
+PLcom/android/server/usage/UsageStatsDatabase;->doUpgradeLocked(I)V
+HPLcom/android/server/usage/UsageStatsDatabase;->dump(Lcom/android/internal/util/IndentingPrintWriter;Z)V
+HPLcom/android/server/usage/UsageStatsDatabase;->dumpMappings(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->filterStats(Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->findBestFitBucket(JJ)I
 PLcom/android/server/usage/UsageStatsDatabase;->getBackupPayload(Ljava/lang/String;)[B
-PLcom/android/server/usage/UsageStatsDatabase;->getBackupPayload(Ljava/lang/String;I)[B
-HSPLcom/android/server/usage/UsageStatsDatabase;->getBuildFingerprint()Ljava/lang/String;
-HSPLcom/android/server/usage/UsageStatsDatabase;->getLatestUsageStats(I)Lcom/android/server/usage/IntervalStats;
-HSPLcom/android/server/usage/UsageStatsDatabase;->indexFilesLocked()V
-HSPLcom/android/server/usage/UsageStatsDatabase;->init(J)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->isNewUpdate()Z
-HSPLcom/android/server/usage/UsageStatsDatabase;->onTimeChanged(J)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Ljava/io/File;)J
-HSPLcom/android/server/usage/UsageStatsDatabase;->prune(J)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->pruneChooserCountsOlderThan(Ljava/io/File;J)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->pruneFilesOlderThan(Ljava/io/File;J)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
-HSPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;I)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;I)V
-PLcom/android/server/usage/UsageStatsDatabase;->serializeIntervalStats(Lcom/android/server/usage/IntervalStats;I)[B
-PLcom/android/server/usage/UsageStatsDatabase;->writeIntervalStatsToStream(Ljava/io/DataOutputStream;Landroid/util/AtomicFile;I)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;I)V
-HSPLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;I)V
-HSPLcom/android/server/usage/UsageStatsProto;->loadChooserCounts(Landroid/util/proto/ProtoInputStream;Landroid/app/usage/UsageStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->loadConfigStats(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->loadCountAndTime(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats$EventTracker;)V
-HSPLcom/android/server/usage/UsageStatsProto;->loadCountsForAction(Landroid/util/proto/ProtoInputStream;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/usage/UsageStatsProto;->loadUsageStats(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats;Ljava/util/List;)V
-HSPLcom/android/server/usage/UsageStatsProto;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->readStringPool(Landroid/util/proto/ProtoInputStream;)Ljava/util/List;
-HSPLcom/android/server/usage/UsageStatsProto;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeConfigStats(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/usage/IntervalStats;Landroid/app/usage/ConfigurationStats;Z)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeCountsForAction(Landroid/util/proto/ProtoOutputStream;Landroid/util/ArrayMap;)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeEvent(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageEvents$Event;)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeStringPool(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/usage/IntervalStats;)V
-HSPLcom/android/server/usage/UsageStatsProto;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->getBackupPayload(Ljava/lang/String;I)[B
+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
+HPLcom/android/server/usage/UsageStatsDatabase;->obfuscateCurrentStats([Lcom/android/server/usage/IntervalStats;)V
+PLcom/android/server/usage/UsageStatsDatabase;->onPackageRemoved(Ljava/lang/String;J)I
+HPLcom/android/server/usage/UsageStatsDatabase;->onTimeChanged(J)V
+HPLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Landroid/util/AtomicFile;)J
+HPLcom/android/server/usage/UsageStatsDatabase;->parseBeginTime(Ljava/io/File;)J
+PLcom/android/server/usage/UsageStatsDatabase;->prune(J)V
+HPLcom/android/server/usage/UsageStatsDatabase;->pruneChooserCountsOlderThan(Ljava/io/File;J)V
+HPLcom/android/server/usage/UsageStatsDatabase;->pruneFilesOlderThan(Ljava/io/File;J)V
+PLcom/android/server/usage/UsageStatsDatabase;->pruneUninstalledPackagesData()Z
+HPLcom/android/server/usage/UsageStatsDatabase;->putUsageStats(ILcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->queryUsageStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
+HPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/android/server/usage/UsageStatsDatabase;->readLocked(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)Z
+HPLcom/android/server/usage/UsageStatsDatabase;->readMappingsLocked()V
+HPLcom/android/server/usage/UsageStatsDatabase;->sanitizeIntervalStatsForBackup(Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->serializeIntervalStats(Lcom/android/server/usage/IntervalStats;I)[B
+PLcom/android/server/usage/UsageStatsDatabase;->wasUpgradePerformed()Z
+HPLcom/android/server/usage/UsageStatsDatabase;->writeIntervalStatsToStream(Ljava/io/DataOutputStream;Landroid/util/AtomicFile;I)V
+HPLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Landroid/util/AtomicFile;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->writeLocked(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;ILcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsDatabase;->writeMappingsLocked()V
+PLcom/android/server/usage/UsageStatsIdleService;-><init>()V
+PLcom/android/server/usage/UsageStatsIdleService;->cancelJob(Landroid/content/Context;I)V
+PLcom/android/server/usage/UsageStatsIdleService;->lambda$onStartJob$0$UsageStatsIdleService(ILandroid/app/job/JobParameters;)V
+PLcom/android/server/usage/UsageStatsIdleService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/android/server/usage/UsageStatsIdleService;->scheduleJob(Landroid/content/Context;I)V
+PLcom/android/server/usage/UsageStatsProto;-><clinit>()V
+HPLcom/android/server/usage/UsageStatsProto;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsProto;->writeChooserCounts(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsProto;->writeCountAndTime(Landroid/util/proto/ProtoOutputStream;JIJ)V
+HPLcom/android/server/usage/UsageStatsProto;->writeCountsForAction(Landroid/util/proto/ProtoOutputStream;Landroid/util/ArrayMap;)V
+HPLcom/android/server/usage/UsageStatsProto;->writeStringPool(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsProto;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLcom/android/server/usage/IntervalStats;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadChooserCounts(Landroid/util/proto/ProtoInputStream;Landroid/app/usage/UsageStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadConfigStats(Landroid/util/proto/ProtoInputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadCountAndTime(Landroid/util/proto/ProtoInputStream;JLcom/android/server/usage/IntervalStats$EventTracker;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->loadCountsForAction(Landroid/util/proto/ProtoInputStream;Landroid/util/SparseIntArray;)V
+HPLcom/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;->parsePendingEvent(Landroid/util/proto/ProtoInputStream;)Landroid/app/usage/UsageEvents$Event;
+HPLcom/android/server/usage/UsageStatsProtoV2;->parseUsageStats(Landroid/util/proto/ProtoInputStream;J)Landroid/app/usage/UsageStats;
+HPLcom/android/server/usage/UsageStatsProtoV2;->read(Ljava/io/InputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->readObfuscatedData(Ljava/io/InputStream;Lcom/android/server/usage/PackagesTokenData;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->readPendingEvents(Ljava/io/InputStream;Ljava/util/LinkedList;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->write(Ljava/io/OutputStream;Lcom/android/server/usage/IntervalStats;)V
+HPLcom/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;->writeCountsForAction(Landroid/util/proto/ProtoOutputStream;Landroid/util/SparseIntArray;)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
+HPLcom/android/server/usage/UsageStatsProtoV2;->writePendingEvent(Landroid/util/proto/ProtoOutputStream;Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writePendingEvents(Ljava/io/OutputStream;Ljava/util/LinkedList;)V
+HPLcom/android/server/usage/UsageStatsProtoV2;->writeUsageStats(Landroid/util/proto/ProtoOutputStream;JLandroid/app/usage/UsageStats;)V
+HSPLcom/android/server/usage/UsageStatsService$1;-><init>(Lcom/android/server/usage/UsageStatsService;)V
 HSPLcom/android/server/usage/UsageStatsService$1;->onAppIdleStateChanged(Ljava/lang/String;IZII)V
-HSPLcom/android/server/usage/UsageStatsService$1;->onParoleStateChanged(Z)V
+HSPLcom/android/server/usage/UsageStatsService$2;-><init>(Lcom/android/server/usage/UsageStatsService;)V
 PLcom/android/server/usage/UsageStatsService$2;->onLimitReached(IIJJLandroid/app/PendingIntent;)V
 PLcom/android/server/usage/UsageStatsService$2;->onSessionEnd(IIJLandroid/app/PendingIntent;)V
+HSPLcom/android/server/usage/UsageStatsService$3;-><init>(Lcom/android/server/usage/UsageStatsService;)V
 HSPLcom/android/server/usage/UsageStatsService$3;->onUidGone(IZ)V
-HSPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJ)V
-PLcom/android/server/usage/UsageStatsService$BinderService;->checkCallerIsSameApp(Ljava/lang/String;)V
+HSPLcom/android/server/usage/UsageStatsService$3;->onUidStateChanged(IIJI)V
+HPLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/usage/UsageStatsService$ActivityData;-><init>(Ljava/lang/String;Ljava/lang/String;Lcom/android/server/usage/UsageStatsService$1;)V
+PLcom/android/server/usage/UsageStatsService$ActivityData;->access$600(Lcom/android/server/usage/UsageStatsService$ActivityData;)Ljava/lang/String;
+PLcom/android/server/usage/UsageStatsService$ActivityData;->access$700(Lcom/android/server/usage/UsageStatsService$ActivityData;)Ljava/lang/String;
+HSPLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HSPLcom/android/server/usage/UsageStatsService$BinderService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$1;)V
+HPLcom/android/server/usage/UsageStatsService$BinderService;->checkCallerIsSameApp(Ljava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->checkCallerIsSystemOrSameApp(Ljava/lang/String;)V
 PLcom/android/server/usage/UsageStatsService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I
-PLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBuckets(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBucket(Ljava/lang/String;Ljava/lang/String;I)I
+HPLcom/android/server/usage/UsageStatsService$BinderService;->getAppStandbyBuckets(Ljava/lang/String;I)Landroid/content/pm/ParceledListSlice;
 PLcom/android/server/usage/UsageStatsService$BinderService;->getUsageSource()I
 PLcom/android/server/usage/UsageStatsService$BinderService;->hasObserverPermission()Z
-PLcom/android/server/usage/UsageStatsService$BinderService;->hasPermission(Ljava/lang/String;)Z
-PLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;I)Z
-HSPLcom/android/server/usage/UsageStatsService$BinderService;->onCarrierPrivilegedAppsChanged()V
-PLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsForPackage(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsForPackageForUser(JJILjava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService$BinderService;->queryUsageStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->hasPermission(Ljava/lang/String;)Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->hasPermissions(Ljava/lang/String;[Ljava/lang/String;)Z
+HPLcom/android/server/usage/UsageStatsService$BinderService;->isAppInactive(Ljava/lang/String;I)Z
+HPLcom/android/server/usage/UsageStatsService$BinderService;->isCallingUidSystem()Z
+PLcom/android/server/usage/UsageStatsService$BinderService;->onCarrierPrivilegedAppsChanged()V
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEvents(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsForPackage(JJLjava/lang/String;)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsForPackageForUser(JJILjava/lang/String;Ljava/lang/String;)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService$BinderService;->queryEventsForUser(JJILjava/lang/String;)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService$BinderService;->queryUsageStats(IJJLjava/lang/String;)Landroid/content/pm/ParceledListSlice;
+PLcom/android/server/usage/UsageStatsService$BinderService;->registerAppUsageLimitObserver(I[Ljava/lang/String;JJLandroid/app/PendingIntent;Ljava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->registerAppUsageObserver(I[Ljava/lang/String;JLandroid/app/PendingIntent;Ljava/lang/String;)V
 PLcom/android/server/usage/UsageStatsService$BinderService;->registerUsageSessionObserver(I[Ljava/lang/String;JJLandroid/app/PendingIntent;Landroid/app/PendingIntent;Ljava/lang/String;)V
 PLcom/android/server/usage/UsageStatsService$BinderService;->reportChooserSelection(Ljava/lang/String;ILjava/lang/String;[Ljava/lang/String;Ljava/lang/String;)V
-PLcom/android/server/usage/UsageStatsService$BinderService;->setAppStandbyBuckets(Landroid/content/pm/ParceledListSlice;I)V
-PLcom/android/server/usage/UsageStatsService$BinderService;->whitelistAppTemporarily(Ljava/lang/String;JI)V
+HPLcom/android/server/usage/UsageStatsService$BinderService;->setAppStandbyBuckets(Landroid/content/pm/ParceledListSlice;I)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->unregisterAppUsageLimitObserver(ILjava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->unregisterAppUsageObserver(ILjava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService$BinderService;->unregisterUsageSessionObserver(ILjava/lang/String;)V
+HSPLcom/android/server/usage/UsageStatsService$H;-><init>(Lcom/android/server/usage/UsageStatsService;Landroid/os/Looper;)V
 HSPLcom/android/server/usage/UsageStatsService$H;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->addAppIdleStateChangeListener(Landroid/app/usage/UsageStatsManagerInternal$AppIdleStateChangeListener;)V
+HSPLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HSPLcom/android/server/usage/UsageStatsService$LocalService;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$1;)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->getAppStandbyBucket(Ljava/lang/String;IJ)I
-PLcom/android/server/usage/UsageStatsService$LocalService;->getAppUsageLimit(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;
+HPLcom/android/server/usage/UsageStatsService$LocalService;->getAppUsageLimit(Ljava/lang/String;Landroid/os/UserHandle;)Landroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;
 PLcom/android/server/usage/UsageStatsService$LocalService;->getBackupPayload(ILjava/lang/String;)[B
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->getIdleUidsForUser(I)[I
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
+PLcom/android/server/usage/UsageStatsService$LocalService;->getTimeSinceLastJobRun(Ljava/lang/String;I)J
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdle(Ljava/lang/String;II)Z
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->isAppIdleParoleOn()Z
+PLcom/android/server/usage/UsageStatsService$LocalService;->onActiveAdminAdded(Ljava/lang/String;I)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->onAdminDataAvailable()V
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->queryUsageStatsForUser(IIJJZ)Ljava/util/List;
+PLcom/android/server/usage/UsageStatsService$LocalService;->prepareForPossibleShutdown()V
+PLcom/android/server/usage/UsageStatsService$LocalService;->prepareShutdown()V
+PLcom/android/server/usage/UsageStatsService$LocalService;->pruneUninstalledPackagesData(I)Z
+HPLcom/android/server/usage/UsageStatsService$LocalService;->queryEventsForUser(IJJZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService$LocalService;->queryEventsForUser(IJJZZ)Landroid/app/usage/UsageEvents;
+PLcom/android/server/usage/UsageStatsService$LocalService;->queryUsageStatsForUser(IIJJZ)Ljava/util/List;
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportConfigurationChange(Landroid/content/res/Configuration;I)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportContentProviderUsage(Ljava/lang/String;Ljava/lang/String;I)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportEvent(Landroid/content/ComponentName;IIILandroid/content/ComponentName;)V
@@ -13819,328 +31245,834 @@
 PLcom/android/server/usage/UsageStatsService$LocalService;->reportExemptedSyncStart(Ljava/lang/String;I)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportInterruptiveNotification(Ljava/lang/String;Ljava/lang/String;I)V
 PLcom/android/server/usage/UsageStatsService$LocalService;->reportShortcutUsage(Ljava/lang/String;Ljava/lang/String;I)V
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->reportSyncScheduled(Ljava/lang/String;IZ)V
+PLcom/android/server/usage/UsageStatsService$LocalService;->reportSyncScheduled(Ljava/lang/String;IZ)V
 HSPLcom/android/server/usage/UsageStatsService$LocalService;->setActiveAdminApps(Ljava/util/Set;I)V
-HSPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V
+HPLcom/android/server/usage/UsageStatsService$LocalService;->setLastJobRunTime(Ljava/lang/String;IJ)V
+HSPLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HSPLcom/android/server/usage/UsageStatsService$MyPackageMonitor;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$1;)V
+HPLcom/android/server/usage/UsageStatsService$MyPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
+HSPLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;)V
+HSPLcom/android/server/usage/UsageStatsService$UserActionsReceiver;-><init>(Lcom/android/server/usage/UsageStatsService;Lcom/android/server/usage/UsageStatsService$1;)V
 HSPLcom/android/server/usage/UsageStatsService$UserActionsReceiver;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/usage/UsageStatsService;-><clinit>()V
 HSPLcom/android/server/usage/UsageStatsService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/usage/UsageStatsService;->checkAndGetTimeLocked()J
-HSPLcom/android/server/usage/UsageStatsService;->cleanUpRemovedUsersLocked()V
-PLcom/android/server/usage/UsageStatsService;->dump([Ljava/lang/String;Ljava/io/PrintWriter;)V
-PLcom/android/server/usage/UsageStatsService;->flushToDisk()V
-PLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V
-HSPLcom/android/server/usage/UsageStatsService;->getUserDataAndInitializeIfNeededLocked(IJ)Lcom/android/server/usage/UserUsageStatsService;
+HSPLcom/android/server/usage/UsageStatsService;->access$100(Lcom/android/server/usage/UsageStatsService;ILandroid/app/usage/UsageEvents$Event;)V
+HSPLcom/android/server/usage/UsageStatsService;->access$1000(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseIntArray;
+HSPLcom/android/server/usage/UsageStatsService;->access$1100()Ljava/io/File;
+PLcom/android/server/usage/UsageStatsService;->access$1200(Lcom/android/server/usage/UsageStatsService;)Landroid/app/admin/DevicePolicyManagerInternal;
+HPLcom/android/server/usage/UsageStatsService;->access$1300(Lcom/android/server/usage/UsageStatsService;II)Z
+PLcom/android/server/usage/UsageStatsService;->access$1400(Lcom/android/server/usage/UsageStatsService;ILjava/lang/String;II)Z
+PLcom/android/server/usage/UsageStatsService;->access$1500(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object;
+PLcom/android/server/usage/UsageStatsService;->access$1600(Lcom/android/server/usage/UsageStatsService;)Ljava/lang/Object;
+PLcom/android/server/usage/UsageStatsService;->access$1700(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/usage/UsageStatsService;->access$1800(Lcom/android/server/usage/UsageStatsService;)Landroid/util/SparseBooleanArray;
+PLcom/android/server/usage/UsageStatsService;->access$1800(Lcom/android/server/usage/UsageStatsService;I)Lcom/android/server/usage/UserUsageStatsService;
+PLcom/android/server/usage/UsageStatsService;->access$1900(Lcom/android/server/usage/UsageStatsService;I)Lcom/android/server/usage/UserUsageStatsService;
+PLcom/android/server/usage/UsageStatsService;->access$1900(Lcom/android/server/usage/UsageStatsService;I)Z
+PLcom/android/server/usage/UsageStatsService;->access$2000(Lcom/android/server/usage/UsageStatsService;I)Z
+PLcom/android/server/usage/UsageStatsService;->access$800(Lcom/android/server/usage/UsageStatsService;I)V
+PLcom/android/server/usage/UsageStatsService;->access$900(Lcom/android/server/usage/UsageStatsService;ILjava/lang/String;)V
+PLcom/android/server/usage/UsageStatsService;->deleteLegacyDir(I)V
+PLcom/android/server/usage/UsageStatsService;->deleteRecursively(Ljava/io/File;)V
+HPLcom/android/server/usage/UsageStatsService;->dump([Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/usage/UsageStatsService;->flushToDisk()V
+HPLcom/android/server/usage/UsageStatsService;->flushToDiskLocked()V
+HSPLcom/android/server/usage/UsageStatsService;->getDpmInternal()Landroid/app/admin/DevicePolicyManagerInternal;
+HPLcom/android/server/usage/UsageStatsService;->getInstalledPackages(I)Ljava/util/HashMap;
+HSPLcom/android/server/usage/UsageStatsService;->getShortcutServiceInternal()Landroid/content/pm/ShortcutServiceInternal;
+HPLcom/android/server/usage/UsageStatsService;->getUserUsageStatsServiceLocked(I)Lcom/android/server/usage/UserUsageStatsService;
+PLcom/android/server/usage/UsageStatsService;->initializeUserUsageStatsServiceLocked(IJLjava/util/HashMap;)V
+PLcom/android/server/usage/UsageStatsService;->loadPendingEventsLocked(ILjava/util/LinkedList;)V
+PLcom/android/server/usage/UsageStatsService;->migrateStatsToSystemCeIfNeededLocked(I)V
 HSPLcom/android/server/usage/UsageStatsService;->onBootPhase(I)V
 PLcom/android/server/usage/UsageStatsService;->onNewUpdate(I)V
+HPLcom/android/server/usage/UsageStatsService;->onPackageRemoved(ILjava/lang/String;)V
 HSPLcom/android/server/usage/UsageStatsService;->onStart()V
-HSPLcom/android/server/usage/UsageStatsService;->onStatsReloaded()V
-HSPLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V
-PLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZ)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UsageStatsService;->queryEventsForPackage(IJJLjava/lang/String;Z)Landroid/app/usage/UsageEvents;
-HSPLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List;
+HSPLcom/android/server/usage/UsageStatsService;->onStartUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/usage/UsageStatsService;->onStatsReloaded()V
+PLcom/android/server/usage/UsageStatsService;->onStatsUpdated()V
+PLcom/android/server/usage/UsageStatsService;->onStopUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/usage/UsageStatsService;->onUnlockUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/usage/UsageStatsService;->onUserRemoved(I)V
+HPLcom/android/server/usage/UsageStatsService;->onUserUnlocked(I)V
+HPLcom/android/server/usage/UsageStatsService;->persistPendingEventsLocked(I)V
+PLcom/android/server/usage/UsageStatsService;->prepareForPossibleShutdown()V
+PLcom/android/server/usage/UsageStatsService;->pruneUninstalledPackagesData(I)Z
+HPLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService;->queryEvents(IJJZZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService;->queryEventsForPackage(IJJLjava/lang/String;Z)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UsageStatsService;->queryUsageStats(IIJJZ)Ljava/util/List;
 HSPLcom/android/server/usage/UsageStatsService;->readUsageSourceSetting()V
+PLcom/android/server/usage/UsageStatsService;->registerAppUsageLimitObserver(II[Ljava/lang/String;JJLandroid/app/PendingIntent;I)V
+PLcom/android/server/usage/UsageStatsService;->registerAppUsageObserver(II[Ljava/lang/String;JLandroid/app/PendingIntent;I)V
 PLcom/android/server/usage/UsageStatsService;->registerUsageSessionObserver(II[Ljava/lang/String;JJLandroid/app/PendingIntent;Landroid/app/PendingIntent;I)V
-HSPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V
-PLcom/android/server/usage/UsageStatsService;->reportEventToAllUserId(Landroid/app/usage/UsageEvents$Event;)V
-HSPLcom/android/server/usage/UserUsageStatsService$1;-><init>()V
-HSPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
-HSPLcom/android/server/usage/UserUsageStatsService$2;-><init>()V
-HSPLcom/android/server/usage/UserUsageStatsService$3;-><init>()V
-PLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+HPLcom/android/server/usage/UsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;I)V
+HSPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UsageStatsService;->reportEventToAllUserId(Landroid/app/usage/UsageEvents$Event;)V
+PLcom/android/server/usage/UsageStatsService;->shouldHideShortcutInvocationEvents(ILjava/lang/String;II)Z
+HPLcom/android/server/usage/UsageStatsService;->shouldObfuscateInstantAppsForCaller(II)Z
+PLcom/android/server/usage/UsageStatsService;->shutdown()V
+PLcom/android/server/usage/UsageStatsService;->unregisterAppUsageLimitObserver(III)V
+PLcom/android/server/usage/UsageStatsService;->unregisterAppUsageObserver(III)V
+PLcom/android/server/usage/UsageStatsService;->unregisterUsageSessionObserver(III)V
+PLcom/android/server/usage/UserUsageStatsService$1;-><init>()V
+HPLcom/android/server/usage/UserUsageStatsService$1;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+PLcom/android/server/usage/UserUsageStatsService$2;-><init>()V
+PLcom/android/server/usage/UserUsageStatsService$3;-><init>()V
+HPLcom/android/server/usage/UserUsageStatsService$4;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZLandroid/util/ArraySet;)V
+HPLcom/android/server/usage/UserUsageStatsService$4;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJZZLandroid/util/ArraySet;)V
+HPLcom/android/server/usage/UserUsageStatsService$4;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+HPLcom/android/server/usage/UserUsageStatsService$5;-><init>(Lcom/android/server/usage/UserUsageStatsService;Lcom/android/internal/util/IndentingPrintWriter;)V
 PLcom/android/server/usage/UserUsageStatsService$5;->checkin(Lcom/android/server/usage/IntervalStats;)Z
-PLcom/android/server/usage/UserUsageStatsService$6;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
-HSPLcom/android/server/usage/UserUsageStatsService;-><init>(Landroid/content/Context;ILjava/io/File;Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;)V
+PLcom/android/server/usage/UserUsageStatsService$6;-><init>(Lcom/android/server/usage/UserUsageStatsService;JJLjava/lang/String;)V
+HPLcom/android/server/usage/UserUsageStatsService$6;->combine(Lcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+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
 PLcom/android/server/usage/UserUsageStatsService;->checkin(Lcom/android/internal/util/IndentingPrintWriter;)V
+HPLcom/android/server/usage/UserUsageStatsService;->convertToSystemTimeLocked(Landroid/app/usage/UsageEvents$Event;)V
 PLcom/android/server/usage/UserUsageStatsService;->dump(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Z)V
-PLcom/android/server/usage/UserUsageStatsService;->eventToString(I)Ljava/lang/String;
-PLcom/android/server/usage/UserUsageStatsService;->formatDateTime(JZ)Ljava/lang/String;
-PLcom/android/server/usage/UserUsageStatsService;->formatElapsedTime(JZ)Ljava/lang/String;
+HPLcom/android/server/usage/UserUsageStatsService;->eventToString(I)Ljava/lang/String;
+HPLcom/android/server/usage/UserUsageStatsService;->formatDateTime(JZ)Ljava/lang/String;
+HPLcom/android/server/usage/UserUsageStatsService;->formatElapsedTime(JZ)Ljava/lang/String;
 PLcom/android/server/usage/UserUsageStatsService;->getBackupPayload(Ljava/lang/String;)[B
-HSPLcom/android/server/usage/UserUsageStatsService;->init(J)V
-PLcom/android/server/usage/UserUsageStatsService;->lambda$queryEventsForPackage$0(JJLjava/lang/String;Landroid/util/ArraySet;ZLcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
-HSPLcom/android/server/usage/UserUsageStatsService;->loadActiveStats(J)V
-PLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
-HSPLcom/android/server/usage/UserUsageStatsService;->onTimeChanged(JJ)V
-HSPLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V
-PLcom/android/server/usage/UserUsageStatsService;->printEvent(Lcom/android/internal/util/IndentingPrintWriter;Landroid/app/usage/UsageEvents$Event;Z)V
-PLcom/android/server/usage/UserUsageStatsService;->printEventAggregation(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Lcom/android/server/usage/IntervalStats$EventTracker;Z)V
-PLcom/android/server/usage/UserUsageStatsService;->printIntervalStats(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usage/IntervalStats;ZZLjava/lang/String;)V
-PLcom/android/server/usage/UserUsageStatsService;->printLast24HrEvents(Lcom/android/internal/util/IndentingPrintWriter;ZLjava/lang/String;)V
-PLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZ)Landroid/app/usage/UsageEvents;
-PLcom/android/server/usage/UserUsageStatsService;->queryEventsForPackage(JJLjava/lang/String;Z)Landroid/app/usage/UsageEvents;
-HSPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
-HSPLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List;
-HSPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V
-HSPLcom/android/server/usage/UserUsageStatsService;->rolloverStats(J)V
-HSPLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V
+PLcom/android/server/usage/UserUsageStatsService;->init(JLjava/util/HashMap;)V
+PLcom/android/server/usage/UserUsageStatsService;->intervalToString(I)Ljava/lang/String;
+HPLcom/android/server/usage/UserUsageStatsService;->lambda$queryEventsForPackage$0(JJLjava/lang/String;Landroid/util/ArraySet;ZLcom/android/server/usage/IntervalStats;ZLjava/util/List;)V
+PLcom/android/server/usage/UserUsageStatsService;->loadActiveStats(J)V
+PLcom/android/server/usage/UserUsageStatsService;->notifyNewUpdate()V
+HPLcom/android/server/usage/UserUsageStatsService;->notifyStatsChanged()V
+PLcom/android/server/usage/UserUsageStatsService;->onPackageRemoved(Ljava/lang/String;J)I
+PLcom/android/server/usage/UserUsageStatsService;->onTimeChanged(JJ)V
+HPLcom/android/server/usage/UserUsageStatsService;->persistActiveStats()V
+HPLcom/android/server/usage/UserUsageStatsService;->printEvent(Lcom/android/internal/util/IndentingPrintWriter;Landroid/app/usage/UsageEvents$Event;Z)V
+HPLcom/android/server/usage/UserUsageStatsService;->printEventAggregation(Lcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;Lcom/android/server/usage/IntervalStats$EventTracker;Z)V
+HPLcom/android/server/usage/UserUsageStatsService;->printIntervalStats(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usage/IntervalStats;ZZLjava/lang/String;)V
+HPLcom/android/server/usage/UserUsageStatsService;->printLast24HrEvents(Lcom/android/internal/util/IndentingPrintWriter;ZLjava/lang/String;)V
+PLcom/android/server/usage/UserUsageStatsService;->pruneUninstalledPackagesData()Z
+HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryEvents(JJZZ)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryEventsForPackage(JJLjava/lang/String;Z)Landroid/app/usage/UsageEvents;
+HPLcom/android/server/usage/UserUsageStatsService;->queryStats(IJJLcom/android/server/usage/UsageStatsDatabase$StatCombiner;)Ljava/util/List;
+HPLcom/android/server/usage/UserUsageStatsService;->queryUsageStats(IJJ)Ljava/util/List;
+PLcom/android/server/usage/UserUsageStatsService;->readPackageMappingsLocked(Ljava/util/HashMap;)V
+HPLcom/android/server/usage/UserUsageStatsService;->reportEvent(Landroid/app/usage/UsageEvents$Event;)V
+HPLcom/android/server/usage/UserUsageStatsService;->rolloverStats(J)V
+HPLcom/android/server/usage/UserUsageStatsService;->updatePackageMappingsLocked(Ljava/util/HashMap;)V
+PLcom/android/server/usage/UserUsageStatsService;->updateRolloverDeadline()V
+PLcom/android/server/usage/UserUsageStatsService;->userStopped()V
+HPLcom/android/server/usage/UserUsageStatsService;->validRange(JJJ)Z
+HSPLcom/android/server/usb/-$$Lambda$UsbHostManager$XT3F5aQci4H6VWSBYBQQNSzpnvs;-><init>(Lcom/android/server/usb/UsbHostManager;)V
 HSPLcom/android/server/usb/-$$Lambda$UsbHostManager$XT3F5aQci4H6VWSBYBQQNSzpnvs;->run()V
+HSPLcom/android/server/usb/-$$Lambda$UsbPortManager$FUqGOOupcl6RrRkZBk-BnrRQyPI;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/content/Intent;)V
 HSPLcom/android/server/usb/-$$Lambda$UsbPortManager$FUqGOOupcl6RrRkZBk-BnrRQyPI;->run()V
+HSPLcom/android/server/usb/-$$Lambda$UsbProfileGroupSettingsManager$IQKTzU0q3lyaW9nLL_sbxJPW8ME;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/-$$Lambda$UsbProfileGroupSettingsManager$_G1PjxMa22pAIRMzYCwyomX8uhk;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/-$$Lambda$UsbProfileGroupSettingsManager$_G1PjxMa22pAIRMzYCwyomX8uhk;->run()V
+HSPLcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$KjOG0MXO3C0J-L5Ymrj6FnSwXwQ;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
+HSPLcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$KjOG0MXO3C0J-L5Ymrj6FnSwXwQ;->run()V
+HSPLcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$sV0bZ5BCi6DR9FlGZbY2PyYUP58;-><init>(Lcom/android/server/usb/UsbService$Lifecycle;)V
+HSPLcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$sV0bZ5BCi6DR9FlGZbY2PyYUP58;->run()V
+HSPLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;)V
+HSPLcom/android/server/usb/MtpNotificationManager$Receiver;-><init>(Lcom/android/server/usb/MtpNotificationManager;Lcom/android/server/usb/MtpNotificationManager$1;)V
+HSPLcom/android/server/usb/MtpNotificationManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;)V
 PLcom/android/server/usb/MtpNotificationManager;->hideNotification(I)V
-HSPLcom/android/server/usb/MtpNotificationManager;->isMtpDevice(Landroid/hardware/usb/UsbDevice;)Z
-HSPLcom/android/server/usb/UsbAlsaDevice;->getAlsaCardDeviceString()Ljava/lang/String;
-HSPLcom/android/server/usb/UsbAlsaDevice;->isInputJackConnected()Z
-HSPLcom/android/server/usb/UsbAlsaDevice;->isOutputJackConnected()Z
-HSPLcom/android/server/usb/UsbAlsaDevice;->setDeviceNameAndDescription(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/usb/UsbAlsaDevice;->start()V
-HSPLcom/android/server/usb/UsbAlsaDevice;->startJackDetect()V
+PLcom/android/server/usb/MtpNotificationManager;->isMtpDevice(Landroid/hardware/usb/UsbDevice;)Z
+PLcom/android/server/usb/MtpNotificationManager;->shouldShowNotification(Landroid/content/pm/PackageManager;Landroid/hardware/usb/UsbDevice;)Z
+PLcom/android/server/usb/UsbAlsaDevice;-><init>(Landroid/media/IAudioService;IILjava/lang/String;ZZZZ)V
+PLcom/android/server/usb/UsbAlsaDevice;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbAlsaDevice;->getAlsaCardDeviceString()Ljava/lang/String;
+PLcom/android/server/usb/UsbAlsaDevice;->getCardNum()I
+PLcom/android/server/usb/UsbAlsaDevice;->getDeviceAddress()Ljava/lang/String;
+PLcom/android/server/usb/UsbAlsaDevice;->isInputJackConnected()Z
+PLcom/android/server/usb/UsbAlsaDevice;->isOutputJackConnected()Z
+PLcom/android/server/usb/UsbAlsaDevice;->setDeviceNameAndDescription(Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/usb/UsbAlsaDevice;->start()V
+PLcom/android/server/usb/UsbAlsaDevice;->startJackDetect()V
 PLcom/android/server/usb/UsbAlsaDevice;->stop()V
 PLcom/android/server/usb/UsbAlsaDevice;->stopJackDetect()V
 PLcom/android/server/usb/UsbAlsaDevice;->toString()Ljava/lang/String;
-HSPLcom/android/server/usb/UsbAlsaDevice;->updateWiredDeviceConnectionState(Z)V
+PLcom/android/server/usb/UsbAlsaDevice;->updateWiredDeviceConnectionState(Z)V
+PLcom/android/server/usb/UsbAlsaJackDetector;-><init>(Lcom/android/server/usb/UsbAlsaDevice;)V
+PLcom/android/server/usb/UsbAlsaJackDetector;->isInputJackConnected()Z
+PLcom/android/server/usb/UsbAlsaJackDetector;->isOutputJackConnected()Z
+PLcom/android/server/usb/UsbAlsaJackDetector;->jackDetectCallback()Z
+PLcom/android/server/usb/UsbAlsaJackDetector;->pleaseStop()V
+PLcom/android/server/usb/UsbAlsaJackDetector;->run()V
+PLcom/android/server/usb/UsbAlsaJackDetector;->startJackDetect(Lcom/android/server/usb/UsbAlsaDevice;)Lcom/android/server/usb/UsbAlsaJackDetector;
+HSPLcom/android/server/usb/UsbAlsaManager$BlackListEntry;-><init>(III)V
+HSPLcom/android/server/usb/UsbAlsaManager;-><clinit>()V
 HSPLcom/android/server/usb/UsbAlsaManager;-><init>(Landroid/content/Context;)V
 PLcom/android/server/usb/UsbAlsaManager;->deselectAlsaDevice()V
 PLcom/android/server/usb/UsbAlsaManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
 PLcom/android/server/usb/UsbAlsaManager;->getAlsaDeviceListIndexFor(Ljava/lang/String;)I
-HSPLcom/android/server/usb/UsbAlsaManager;->selectAlsaDevice(Lcom/android/server/usb/UsbAlsaDevice;)V
-HSPLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V
-HSPLcom/android/server/usb/UsbAlsaManager;->usbDeviceAdded(Ljava/lang/String;Landroid/hardware/usb/UsbDevice;Lcom/android/server/usb/descriptors/UsbDescriptorParser;)V
+PLcom/android/server/usb/UsbAlsaManager;->isDeviceBlacklisted(III)Z
+PLcom/android/server/usb/UsbAlsaManager;->logDevices(Ljava/lang/String;)V
+PLcom/android/server/usb/UsbAlsaManager;->removeAlsaDeviceFromList(Ljava/lang/String;)Lcom/android/server/usb/UsbAlsaDevice;
+PLcom/android/server/usb/UsbAlsaManager;->selectAlsaDevice(Lcom/android/server/usb/UsbAlsaDevice;)V
+PLcom/android/server/usb/UsbAlsaManager;->selectDefaultDevice()Lcom/android/server/usb/UsbAlsaDevice;
+PLcom/android/server/usb/UsbAlsaManager;->setPeripheralMidiState(ZII)V
+HSPLcom/android/server/usb/UsbAlsaManager;->systemReady()V
+PLcom/android/server/usb/UsbAlsaManager;->usbDeviceAdded(Ljava/lang/String;Landroid/hardware/usb/UsbDevice;Lcom/android/server/usb/descriptors/UsbDescriptorParser;)V
 PLcom/android/server/usb/UsbAlsaManager;->usbDeviceRemoved(Ljava/lang/String;)V
+HSPLcom/android/server/usb/UsbDeviceManager$1;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
 HSPLcom/android/server/usb/UsbDeviceManager$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/usb/UsbDeviceManager$2;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
 HSPLcom/android/server/usb/UsbDeviceManager$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/usb/UsbDeviceManager$3;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+PLcom/android/server/usb/UsbDeviceManager$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/usb/UsbDeviceManager$4;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
 HSPLcom/android/server/usb/UsbDeviceManager$4;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
-HSPLcom/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/UsbSettingsManager;)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler$AdbTransport;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandler;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler$AdbTransport;->onAdbEnabled(Z)V
+HSPLcom/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;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
 PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->dumpFunctions(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;JJ)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->finishBoot()V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getAppliedFunctions(J)J
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getChargingFunctions()J
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getAppliedFunctions(J)J
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getChargingFunctions()J
 PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getCurrentAccessory()Landroid/hardware/usb/UsbAccessory;
 PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getEnabledFunctions()J
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getPinnedSharedPrefs(Landroid/content/Context;)Landroid/content/SharedPreferences;
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->getSystemProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isAdbEnabled()Z
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isTv()Z
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbDataTransferActive(J)Z
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(ILjava/lang/Object;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbStateChanged(Landroid/content/Intent;)Z
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->isUsbTransferAllowed()Z
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->notifyAccessoryModeExit()V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(ILjava/lang/Object;)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(ILjava/lang/Object;Z)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessage(IZ)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendStickyBroadcast(Landroid/content/Intent;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendMessageDelayed(IZJ)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->sendStickyBroadcast(Landroid/content/Intent;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setAdbEnabled(Z)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setScreenUnlockedFunctions()V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->setSystemProperty(Ljava/lang/String;Ljava/lang/String;)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateAdbNotification(Z)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateCurrentAccessory()V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateHostState(Landroid/hardware/usb/UsbPort;Landroid/hardware/usb/UsbPortStatus;)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateMidiFunction()V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateState(Ljava/lang/String;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbFunctions()V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbNotification(Z)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(J)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandler;->updateUsbStateBroadcastIfNeeded(J)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$ServiceNotification;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$ServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;)V
+PLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;IJZ)V
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;->getCurrentUsbFunctionsCb(JI)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;->setCurrentUsbFunctionsCb(JI)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;-><init>(Landroid/os/Looper;Landroid/content/Context;Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;->setCurrentUsbFunctionsCb(JI)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetDeathRecipient;-><init>(Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;-><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$UsbHandlerHal;->access$700(Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;)I
 HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->setEnabledFunctions(JZ)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->setUsbConfig(JZ)V
-HSPLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;->onUEvent(Landroid/os/UEventObserver$UEvent;)V
-HSPLcom/android/server/usb/UsbDeviceManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V
-HSPLcom/android/server/usb/UsbDeviceManager;->bootCompleted()V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->setEnabledFunctions(JZ)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;->setUsbConfig(JZ)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;)V
+HSPLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;-><init>(Lcom/android/server/usb/UsbDeviceManager;Lcom/android/server/usb/UsbDeviceManager$1;)V
+HPLcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;->onUEvent(Landroid/os/UEventObserver$UEvent;)V
+HSPLcom/android/server/usb/UsbDeviceManager;-><clinit>()V
+HSPLcom/android/server/usb/UsbDeviceManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbPermissionManager;)V
+HSPLcom/android/server/usb/UsbDeviceManager;->access$000(Lcom/android/server/usb/UsbDeviceManager;)Lcom/android/server/usb/UsbDeviceManager$UsbHandler;
+PLcom/android/server/usb/UsbDeviceManager;->access$100(Lcom/android/server/usb/UsbDeviceManager;)V
+HSPLcom/android/server/usb/UsbDeviceManager;->access$300()Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager;->access$400()Ljava/util/Set;
+PLcom/android/server/usb/UsbDeviceManager;->bootCompleted()V
 PLcom/android/server/usb/UsbDeviceManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbDeviceManager;->getAccessoryStrings()[Ljava/lang/String;
+PLcom/android/server/usb/UsbDeviceManager;->getControlFd(J)Landroid/os/ParcelFileDescriptor;
 PLcom/android/server/usb/UsbDeviceManager;->getCurrentAccessory()Landroid/hardware/usb/UsbAccessory;
 PLcom/android/server/usb/UsbDeviceManager;->getCurrentFunctions()J
+PLcom/android/server/usb/UsbDeviceManager;->getCurrentSettings()Lcom/android/server/usb/UsbProfileGroupSettingsManager;
 HSPLcom/android/server/usb/UsbDeviceManager;->initRndisAddress()V
-PLcom/android/server/usb/UsbDeviceManager;->onAwakeStateChanged(Z)V
-HSPLcom/android/server/usb/UsbDeviceManager;->onKeyguardStateChanged(Z)V
-HSPLcom/android/server/usb/UsbDeviceManager;->onUnlockUser(I)V
-HSPLcom/android/server/usb/UsbDeviceManager;->setCurrentFunctions(J)V
+HPLcom/android/server/usb/UsbDeviceManager;->onAwakeStateChanged(Z)V
+HPLcom/android/server/usb/UsbDeviceManager;->onKeyguardStateChanged(Z)V
+PLcom/android/server/usb/UsbDeviceManager;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbDeviceManager;->openAccessory(Landroid/hardware/usb/UsbAccessory;Lcom/android/server/usb/UsbUserPermissionManager;I)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/usb/UsbDeviceManager;->setCurrentFunctions(J)V
 HSPLcom/android/server/usb/UsbDeviceManager;->setCurrentUser(ILcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+PLcom/android/server/usb/UsbDeviceManager;->startAccessoryMode()V
 HSPLcom/android/server/usb/UsbDeviceManager;->systemReady()V
 HSPLcom/android/server/usb/UsbDeviceManager;->updateUserRestrictions()V
-HSPLcom/android/server/usb/UsbHostManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbSettingsManager;)V
-HSPLcom/android/server/usb/UsbHostManager;->addConnectionRecord(Ljava/lang/String;I[B)V
-HSPLcom/android/server/usb/UsbHostManager;->checkUsbInterfacesBlackListed(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Z
+HSPLcom/android/server/usb/UsbHandlerManager;-><clinit>()V
+HSPLcom/android/server/usb/UsbHandlerManager;-><init>(Landroid/content/Context;)V
+PLcom/android/server/usb/UsbHandlerManager;->confirmUsbHandler(Landroid/content/pm/ResolveInfo;Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbHandlerManager;->createDialogIntent()Landroid/content/Intent;
+PLcom/android/server/usb/UsbHandlerManager;->selectUsbHandler(Ljava/util/ArrayList;Landroid/os/UserHandle;Landroid/content/Intent;)V
+PLcom/android/server/usb/UsbHostManager$ConnectionRecord;-><init>(Lcom/android/server/usb/UsbHostManager;Ljava/lang/String;I[B)V
+PLcom/android/server/usb/UsbHostManager$ConnectionRecord;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+HSPLcom/android/server/usb/UsbHostManager;-><clinit>()V
+HSPLcom/android/server/usb/UsbHostManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbAlsaManager;Lcom/android/server/usb/UsbPermissionManager;)V
+PLcom/android/server/usb/UsbHostManager;->addConnectionRecord(Ljava/lang/String;I[B)V
+PLcom/android/server/usb/UsbHostManager;->checkUsbInterfacesBlackListed(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Z
 PLcom/android/server/usb/UsbHostManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
-HSPLcom/android/server/usb/UsbHostManager;->getCurrentUserSettings()Lcom/android/server/usb/UsbProfileGroupSettingsManager;
+PLcom/android/server/usb/UsbHostManager;->getCurrentUserSettings()Lcom/android/server/usb/UsbProfileGroupSettingsManager;
 HSPLcom/android/server/usb/UsbHostManager;->getDeviceList(Landroid/os/Bundle;)V
-HSPLcom/android/server/usb/UsbHostManager;->getUsbDeviceConnectionHandler()Landroid/content/ComponentName;
-HSPLcom/android/server/usb/UsbHostManager;->logUsbDevice(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)V
+PLcom/android/server/usb/UsbHostManager;->getUsbDeviceConnectionHandler()Landroid/content/ComponentName;
+PLcom/android/server/usb/UsbHostManager;->isBlackListed(II)Z
+PLcom/android/server/usb/UsbHostManager;->isBlackListed(Ljava/lang/String;)Z
+HSPLcom/android/server/usb/UsbHostManager;->lambda$XT3F5aQci4H6VWSBYBQQNSzpnvs(Lcom/android/server/usb/UsbHostManager;)V
+PLcom/android/server/usb/UsbHostManager;->logUsbDevice(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)V
+PLcom/android/server/usb/UsbHostManager;->openDevice(Ljava/lang/String;Lcom/android/server/usb/UsbUserPermissionManager;Ljava/lang/String;II)Landroid/os/ParcelFileDescriptor;
 HSPLcom/android/server/usb/UsbHostManager;->setCurrentUserSettings(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
 HSPLcom/android/server/usb/UsbHostManager;->setUsbDeviceConnectionHandler(Landroid/content/ComponentName;)V
 HSPLcom/android/server/usb/UsbHostManager;->systemReady()V
-HSPLcom/android/server/usb/UsbHostManager;->usbDeviceAdded(Ljava/lang/String;II[B)Z
+PLcom/android/server/usb/UsbHostManager;->usbDeviceAdded(Ljava/lang/String;II[B)Z
 PLcom/android/server/usb/UsbHostManager;->usbDeviceRemoved(Ljava/lang/String;)V
-HSPLcom/android/server/usb/UsbPermissionManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;)V
-PLcom/android/server/usb/UsbPermissionManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;)V
-PLcom/android/server/usb/UsbPermissionManager;->removeDevicePermissions(Landroid/hardware/usb/UsbDevice;)V
+HSPLcom/android/server/usb/UsbPermissionManager;-><clinit>()V
+HSPLcom/android/server/usb/UsbPermissionManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
+PLcom/android/server/usb/UsbPermissionManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbPermissionManager;->getPermissionsForUser(I)Lcom/android/server/usb/UsbUserPermissionManager;
+PLcom/android/server/usb/UsbPermissionManager;->usbAccessoryRemoved(Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbPermissionManager;->usbDeviceRemoved(Landroid/hardware/usb/UsbDevice;)V
+HSPLcom/android/server/usb/UsbPortManager$1;-><init>(Lcom/android/server/usb/UsbPortManager;Landroid/os/Looper;)V
 HSPLcom/android/server/usb/UsbPortManager$1;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/usb/UsbPortManager$DeathRecipient;-><init>(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/usb/UsbPortManager$HALCallback;-><init>(Lcom/android/internal/util/IndentingPrintWriter;Lcom/android/server/usb/UsbPortManager;)V
 HSPLcom/android/server/usb/UsbPortManager$HALCallback;->notifyPortStatusChange_1_1(Ljava/util/ArrayList;I)V
+HSPLcom/android/server/usb/UsbPortManager$HALCallback;->notifyPortStatusChange_1_2(Ljava/util/ArrayList;I)V
 HSPLcom/android/server/usb/UsbPortManager$PortInfo;-><init>(Landroid/hardware/usb/UsbManager;Ljava/lang/String;IIZZ)V
 PLcom/android/server/usb/UsbPortManager$PortInfo;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
 HSPLcom/android/server/usb/UsbPortManager$PortInfo;->setStatus(IZIZIZIII)Z
 HSPLcom/android/server/usb/UsbPortManager$PortInfo;->toString()Ljava/lang/String;
 HSPLcom/android/server/usb/UsbPortManager$RawPortInfo$1;-><init>()V
+HSPLcom/android/server/usb/UsbPortManager$RawPortInfo;-><clinit>()V
+HSPLcom/android/server/usb/UsbPortManager$RawPortInfo;-><init>(Ljava/lang/String;IIIZIZIZZIZI)V
+HSPLcom/android/server/usb/UsbPortManager$ServiceNotification;-><init>(Lcom/android/server/usb/UsbPortManager;)V
 HSPLcom/android/server/usb/UsbPortManager$ServiceNotification;->onRegistration(Ljava/lang/String;Ljava/lang/String;Z)V
+HSPLcom/android/server/usb/UsbPortManager;-><clinit>()V
 HSPLcom/android/server/usb/UsbPortManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/usb/UsbPortManager;->access$000(Lcom/android/server/usb/UsbPortManager;)Z
+HSPLcom/android/server/usb/UsbPortManager;->access$100(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/usb/UsbPortManager;->access$200(Lcom/android/server/usb/UsbPortManager;)Landroid/os/Handler;
+HSPLcom/android/server/usb/UsbPortManager;->access$300(Lcom/android/server/usb/UsbPortManager;)Ljava/lang/Object;
+HSPLcom/android/server/usb/UsbPortManager;->access$500(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/usb/UsbPortManager;->access$600(Lcom/android/server/usb/UsbPortManager;Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V
+HSPLcom/android/server/usb/UsbPortManager;->access$702(Lcom/android/server/usb/UsbPortManager;Landroid/app/NotificationManager;)Landroid/app/NotificationManager;
+HSPLcom/android/server/usb/UsbPortManager;->access$800(Lcom/android/server/usb/UsbPortManager;)Landroid/content/Context;
 HSPLcom/android/server/usb/UsbPortManager;->addOrUpdatePortLocked(Ljava/lang/String;IIIZIZIZZIZILcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/usb/UsbPortManager;->connectToProxy(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/usb/UsbPortManager;->convertContaminantDetectionStatusToProto(I)I
 PLcom/android/server/usb/UsbPortManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
-HSPLcom/android/server/usb/UsbPortManager;->enableContaminantDetectionIfNeeded(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->enableContaminantDetection(Ljava/lang/String;ZLcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->enableContaminantDetectionIfNeeded(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/usb/UsbPortManager;->getPortStatus(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus;
 HSPLcom/android/server/usb/UsbPortManager;->getPorts()[Landroid/hardware/usb/UsbPort;
+HSPLcom/android/server/usb/UsbPortManager;->handlePortAddedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/usb/UsbPortManager;->handlePortChangedLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/usb/UsbPortManager;->handlePortLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/usb/UsbPortManager;->lambda$sendPortChangedBroadcastLocked$0$UsbPortManager(Landroid/content/Intent;)V
+HSPLcom/android/server/usb/UsbPortManager;->logAndPrint(ILcom/android/internal/util/IndentingPrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/usb/UsbPortManager;->logToStatsd(Lcom/android/server/usb/UsbPortManager$PortInfo;Lcom/android/internal/util/IndentingPrintWriter;)V
 HSPLcom/android/server/usb/UsbPortManager;->sendPortChangedBroadcastLocked(Lcom/android/server/usb/UsbPortManager$PortInfo;)V
 HSPLcom/android/server/usb/UsbPortManager;->systemReady()V
 HSPLcom/android/server/usb/UsbPortManager;->updateContaminantNotification()V
 HSPLcom/android/server/usb/UsbPortManager;->updatePortsLocked(Lcom/android/internal/util/IndentingPrintWriter;Ljava/util/ArrayList;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)V
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;-><init>(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$1;)V
+HPLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageAdded(Ljava/lang/String;I)V
+HPLcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;->onPackageRemoved(Ljava/lang/String;I)V
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;)V
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;-><init>(Ljava/lang/String;Landroid/os/UserHandle;Lcom/android/server/usb/UsbProfileGroupSettingsManager$1;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;->equals(Ljava/lang/Object;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;->toString()Ljava/lang/String;
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;-><clinit>()V
 HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbSettingsManager;Lcom/android/server/usb/UsbHandlerManager;)V
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->clearDefaults(Ljava/lang/String;Landroid/os/UserHandle;)V
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->clearPackageDefaultsLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)Z
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->deviceAttached(Landroid/hardware/usb/UsbDevice;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->access$000(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserHandle;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->access$100(Lcom/android/server/usb/UsbProfileGroupSettingsManager;)Landroid/os/UserManager;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->access$300(Lcom/android/server/usb/UsbProfileGroupSettingsManager;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->accessoryAttached(Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->clearCompatibleMatchesLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/hardware/usb/DeviceFilter;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->clearDefaults(Ljava/lang/String;Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->clearPackageDefaultsLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->createDeviceAttachedIntent(Landroid/hardware/usb/UsbDevice;)Landroid/content/Intent;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->deviceAttached(Landroid/hardware/usb/UsbDevice;)V
 PLcom/android/server/usb/UsbProfileGroupSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
 PLcom/android/server/usb/UsbProfileGroupSettingsManager;->getAccessoryFilters(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDefaultActivityLocked(Ljava/util/ArrayList;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)Landroid/content/pm/ActivityInfo;
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDeviceFilters(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDeviceMatchesLocked(Landroid/hardware/usb/UsbDevice;Landroid/content/Intent;)Ljava/util/ArrayList;
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAdded(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
-PLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAddedLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->getAccessoryMatchesLocked(Landroid/hardware/usb/UsbAccessory;Landroid/content/Intent;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDefaultActivityLocked(Ljava/util/ArrayList;Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)Landroid/content/pm/ActivityInfo;
+HPLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDeviceFilters(Landroid/content/pm/PackageManager;Landroid/content/pm/ResolveInfo;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->getDeviceMatchesLocked(Landroid/hardware/usb/UsbDevice;Landroid/content/Intent;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->getSerial(Landroid/os/UserHandle;)I
+HPLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAdded(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;)V
+HPLcom/android/server/usb/UsbProfileGroupSettingsManager;->handlePackageAddedLocked(Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;Landroid/content/pm/ActivityInfo;Ljava/lang/String;)Z
 PLcom/android/server/usb/UsbProfileGroupSettingsManager;->hasDefaults(Ljava/lang/String;Landroid/os/UserHandle;)Z
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->packageMatchesLocked(Landroid/content/pm/ResolveInfo;Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;)Z
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->preferHighPriority(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->queryIntentActivitiesForAllProfiles(Landroid/content/Intent;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->isForwardMatch(Landroid/content/pm/ResolveInfo;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->lambda$scheduleWriteSettingsLocked$1$UsbProfileGroupSettingsManager()V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->packageMatchesLocked(Landroid/content/pm/ResolveInfo;Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;)Z
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->preferHighPriority(Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->queryIntentActivitiesForAllProfiles(Landroid/content/Intent;)Ljava/util/ArrayList;
+HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->readPreference(Lorg/xmlpull/v1/XmlPullParser;)V
 HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->readSettingsLocked()V
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->removeForwardIntentIfNotNeeded(Ljava/util/ArrayList;)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->resolveActivity(Landroid/content/Intent;Landroid/hardware/usb/UsbDevice;Z)V
-HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->resolveActivity(Landroid/content/Intent;Ljava/util/ArrayList;Landroid/content/pm/ActivityInfo;Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->removeForwardIntentIfNotNeeded(Ljava/util/ArrayList;)Ljava/util/ArrayList;
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->removeUser(Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->resolveActivity(Landroid/content/Intent;Landroid/hardware/usb/UsbDevice;Z)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->resolveActivity(Landroid/content/Intent;Ljava/util/ArrayList;Landroid/content/pm/ActivityInfo;Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->scheduleWriteSettingsLocked()V
+PLcom/android/server/usb/UsbProfileGroupSettingsManager;->setDevicePackage(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Landroid/os/UserHandle;)V
 HSPLcom/android/server/usb/UsbProfileGroupSettingsManager;->upgradeSingleUserLocked()V
 PLcom/android/server/usb/UsbProfileGroupSettingsManager;->usbDeviceRemoved(Landroid/hardware/usb/UsbDevice;)V
-PLcom/android/server/usb/UsbSerialReader;->enforcePackageBelongsToUid(ILjava/lang/String;)V
-HSPLcom/android/server/usb/UsbSerialReader;->getSerial(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usb/UsbSerialReader;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbPermissionManager;Ljava/lang/String;)V
+HPLcom/android/server/usb/UsbSerialReader;->enforcePackageBelongsToUid(ILjava/lang/String;)V
+HPLcom/android/server/usb/UsbSerialReader;->getSerial(Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/usb/UsbSerialReader;->setDevice(Ljava/lang/Object;)V
+HSPLcom/android/server/usb/UsbService$1;-><init>(Lcom/android/server/usb/UsbService;)V
 HSPLcom/android/server/usb/UsbService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/usb/UsbService$Lifecycle;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/usb/UsbService$Lifecycle;->lambda$onBootPhase$1$UsbService$Lifecycle()V
+HSPLcom/android/server/usb/UsbService$Lifecycle;->lambda$onStart$0$UsbService$Lifecycle()V
 HSPLcom/android/server/usb/UsbService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/usb/UsbService$Lifecycle;->onStart()V
-HSPLcom/android/server/usb/UsbService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbService$Lifecycle;->onStopUser(I)V
+PLcom/android/server/usb/UsbService$Lifecycle;->onStopUser(Lcom/android/server/SystemService$TargetUser;)V
+PLcom/android/server/usb/UsbService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbService$Lifecycle;->onUnlockUser(Lcom/android/server/SystemService$TargetUser;)V
 HSPLcom/android/server/usb/UsbService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/usb/UsbService;->bootCompleted()V
+PLcom/android/server/usb/UsbService;->access$000(Lcom/android/server/usb/UsbService;Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbService;->access$100(Lcom/android/server/usb/UsbService;Landroid/os/UserHandle;)V
+HSPLcom/android/server/usb/UsbService;->access$200(Lcom/android/server/usb/UsbService;)Lcom/android/server/usb/UsbDeviceManager;
+PLcom/android/server/usb/UsbService;->bootCompleted()V
 PLcom/android/server/usb/UsbService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/usb/UsbService;->getControlFd(J)Landroid/os/ParcelFileDescriptor;
 PLcom/android/server/usb/UsbService;->getCurrentAccessory()Landroid/hardware/usb/UsbAccessory;
 PLcom/android/server/usb/UsbService;->getCurrentFunctions()J
 HSPLcom/android/server/usb/UsbService;->getDeviceList(Landroid/os/Bundle;)V
+PLcom/android/server/usb/UsbService;->getPermissionsForUser(I)Lcom/android/server/usb/UsbUserPermissionManager;
 HSPLcom/android/server/usb/UsbService;->getPortStatus(Ljava/lang/String;)Landroid/hardware/usb/UsbPortStatus;
 HSPLcom/android/server/usb/UsbService;->getPorts()Ljava/util/List;
-PLcom/android/server/usb/UsbService;->hasDefaults(Ljava/lang/String;I)Z
+PLcom/android/server/usb/UsbService;->getSettingsForUser(I)Lcom/android/server/usb/UsbUserSettingsManager;
+PLcom/android/server/usb/UsbService;->grantDevicePermission(Landroid/hardware/usb/UsbDevice;I)V
+PLcom/android/server/usb/UsbService;->hasAccessoryPermission(Landroid/hardware/usb/UsbAccessory;)Z
+HPLcom/android/server/usb/UsbService;->hasDefaults(Ljava/lang/String;I)Z
+PLcom/android/server/usb/UsbService;->hasDevicePermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;)Z
+PLcom/android/server/usb/UsbService;->onStopUser(Landroid/os/UserHandle;)V
 HSPLcom/android/server/usb/UsbService;->onSwitchUser(I)V
-HSPLcom/android/server/usb/UsbService;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbService;->onUnlockUser(I)V
+PLcom/android/server/usb/UsbService;->openAccessory(Landroid/hardware/usb/UsbAccessory;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/usb/UsbService;->openDevice(Ljava/lang/String;Ljava/lang/String;)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/usb/UsbService;->requestDevicePermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Landroid/app/PendingIntent;)V
+PLcom/android/server/usb/UsbService;->setCurrentFunctions(J)V
+PLcom/android/server/usb/UsbService;->setDevicePackage(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;I)V
 HSPLcom/android/server/usb/UsbService;->systemReady()V
-HSPLcom/android/server/usb/UsbSettingsManager;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/usb/UsbSettingsManager;-><clinit>()V
+HSPLcom/android/server/usb/UsbSettingsManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbService;)V
 PLcom/android/server/usb/UsbSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
 HSPLcom/android/server/usb/UsbSettingsManager;->getSettingsForProfileGroup(Landroid/os/UserHandle;)Lcom/android/server/usb/UsbProfileGroupSettingsManager;
-HSPLcom/android/server/usb/UsbSettingsManager;->getSettingsForUser(I)Lcom/android/server/usb/UsbUserSettingsManager;
-PLcom/android/server/usb/UsbSettingsManager;->usbDeviceRemoved(Landroid/hardware/usb/UsbDevice;)V
-HSPLcom/android/server/usb/UsbUserSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbPermissionManager;)V
-PLcom/android/server/usb/UsbUserSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
-HSPLcom/android/server/usb/UsbUserSettingsManager;->queryIntentActivities(Landroid/content/Intent;)Ljava/util/List;
-PLcom/android/server/usb/UsbUserSettingsManager;->removeDevicePermissions(Landroid/hardware/usb/UsbDevice;)V
-HSPLcom/android/server/usb/descriptors/ByteStream;->advance(I)V
-HSPLcom/android/server/usb/descriptors/Usb10ACHeader;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/Usb10ACInputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/Usb10ACMixerUnit;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/Usb10ACOutputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/Usb10ASFormatI;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/Usb10ASGeneral;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbACAudioStreamEndpoint;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbACEndpoint;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;IB)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbACInterface;->allocAudioControlDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbACInterface;->allocAudioStreamingDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbACInterface;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IB)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbACInterface;->getSubclass()I
-HSPLcom/android/server/usb/descriptors/UsbACInterface;->getSubtype()B
-HSPLcom/android/server/usb/descriptors/UsbACMixerUnit;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbACTerminal;->getTerminalType()I
-HSPLcom/android/server/usb/descriptors/UsbASFormat;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbConfigDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbConfigDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbConfiguration;
-HSPLcom/android/server/usb/descriptors/UsbDescriptor;-><init>(IB)V
-HSPLcom/android/server/usb/descriptors/UsbDescriptor;->getType()B
-HSPLcom/android/server/usb/descriptors/UsbDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbDescriptor;->postParse(Lcom/android/server/usb/descriptors/ByteStream;)V
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->allocDescriptor(Lcom/android/server/usb/descriptors/ByteStream;)Lcom/android/server/usb/descriptors/UsbDescriptor;
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getACInterfaceDescriptors(BI)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getInputHeadsetProbability()F
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getInterfaceDescriptorsForClass(I)Ljava/util/ArrayList;
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getOutputHeadsetProbability()F
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasInput()Z
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasMIDIInterface()Z
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasMic()Z
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasOutput()Z
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasSpeaker()Z
-HSPLcom/android/server/usb/descriptors/UsbDescriptorParser;->parseDescriptors([B)V
-HSPLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getDeviceReleaseString()Ljava/lang/String;
-HSPLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbDevice$Builder;
-HSPLcom/android/server/usb/descriptors/UsbEndpointDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbEndpointDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbEndpoint;
-HSPLcom/android/server/usb/descriptors/UsbHIDDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->addEndpointDescriptor(Lcom/android/server/usb/descriptors/UsbEndpointDescriptor;)V
-HSPLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->getUsbClass()I
-HSPLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->getUsbSubclass()I
-HSPLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
-HSPLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbInterface;
-HSPLcom/android/server/utils/PriorityDump;->dump(Lcom/android/server/utils/PriorityDump$PriorityDumper;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/usb/UsbSettingsManager;->getSettingsForUser(I)Lcom/android/server/usb/UsbUserSettingsManager;
+PLcom/android/server/usb/UsbSettingsManager;->remove(Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbUserPermissionManager;-><clinit>()V
+PLcom/android/server/usb/UsbUserPermissionManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;Lcom/android/server/usb/UsbUserSettingsManager;)V
+PLcom/android/server/usb/UsbUserPermissionManager;-><init>(Landroid/content/Context;Lcom/android/server/usb/UsbUserSettingsManager;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->checkPermission(Landroid/hardware/usb/UsbAccessory;I)V
+PLcom/android/server/usb/UsbUserPermissionManager;->checkPermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;II)V
+PLcom/android/server/usb/UsbUserPermissionManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbUserPermissionManager;->grantAccessoryPermission(Landroid/hardware/usb/UsbAccessory;I)V
+PLcom/android/server/usb/UsbUserPermissionManager;->grantDevicePermission(Landroid/hardware/usb/UsbDevice;I)V
+PLcom/android/server/usb/UsbUserPermissionManager;->hasPermission(Landroid/hardware/usb/UsbAccessory;I)Z
+PLcom/android/server/usb/UsbUserPermissionManager;->hasPermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;II)Z
+PLcom/android/server/usb/UsbUserPermissionManager;->isCameraDevicePresent(Landroid/hardware/usb/UsbDevice;)Z
+PLcom/android/server/usb/UsbUserPermissionManager;->readPermissionsLocked()V
+PLcom/android/server/usb/UsbUserPermissionManager;->removeAccessoryPermissions(Landroid/hardware/usb/UsbAccessory;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->removeDevicePermissions(Landroid/hardware/usb/UsbDevice;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->requestPermission(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;Landroid/app/PendingIntent;II)V
+PLcom/android/server/usb/UsbUserPermissionManager;->requestPermissionDialog(Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;ZLjava/lang/String;ILandroid/content/Context;Landroid/app/PendingIntent;)V
+PLcom/android/server/usb/UsbUserPermissionManager;->requestPermissionDialog(Landroid/hardware/usb/UsbDevice;Landroid/hardware/usb/UsbAccessory;ZLjava/lang/String;Landroid/app/PendingIntent;I)V
+PLcom/android/server/usb/UsbUserSettingsManager;-><clinit>()V
+PLcom/android/server/usb/UsbUserSettingsManager;-><init>(Landroid/content/Context;Landroid/os/UserHandle;)V
+PLcom/android/server/usb/UsbUserSettingsManager;->canBeDefault(Landroid/hardware/usb/UsbDevice;Ljava/lang/String;)Z
+HPLcom/android/server/usb/UsbUserSettingsManager;->dump(Lcom/android/internal/util/dump/DualDumpOutputStream;Ljava/lang/String;J)V
+PLcom/android/server/usb/UsbUserSettingsManager;->getPackageActivities(Ljava/lang/String;)[Landroid/content/pm/ActivityInfo;
+PLcom/android/server/usb/UsbUserSettingsManager;->queryIntentActivities(Landroid/content/Intent;)Ljava/util/List;
+PLcom/android/server/usb/descriptors/ByteStream;-><init>([B)V
+PLcom/android/server/usb/descriptors/ByteStream;->advance(I)V
+HPLcom/android/server/usb/descriptors/ByteStream;->available()I
+HPLcom/android/server/usb/descriptors/ByteStream;->getByte()B
+PLcom/android/server/usb/descriptors/ByteStream;->getReadCount()I
+HPLcom/android/server/usb/descriptors/ByteStream;->getUnsignedByte()I
+PLcom/android/server/usb/descriptors/ByteStream;->resetReadCount()V
+PLcom/android/server/usb/descriptors/ByteStream;->unpackUsbInt()I
+PLcom/android/server/usb/descriptors/ByteStream;->unpackUsbShort()I
+PLcom/android/server/usb/descriptors/ByteStream;->unpackUsbTriple()I
+PLcom/android/server/usb/descriptors/Usb10ACHeader;-><init>(IBBII)V
+PLcom/android/server/usb/descriptors/Usb10ACHeader;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb10ACInputTerminal;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb10ACInputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb10ACMixerUnit;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb10ACMixerUnit;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb10ACOutputTerminal;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb10ACOutputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb10ASFormatI;-><init>(IBBBI)V
+PLcom/android/server/usb/descriptors/Usb10ASFormatI;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb10ASGeneral;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb10ASGeneral;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ACHeader;-><init>(IBBII)V
+PLcom/android/server/usb/descriptors/Usb20ACHeader;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ACInputTerminal;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb20ACInputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ACMixerUnit;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb20ACMixerUnit;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ACOutputTerminal;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb20ACOutputTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ASFormatI;-><init>(IBBBI)V
+PLcom/android/server/usb/descriptors/Usb20ASFormatI;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/Usb20ASGeneral;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/Usb20ASGeneral;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbACAudioStreamEndpoint;-><init>(IBI)V
+PLcom/android/server/usb/descriptors/UsbACAudioStreamEndpoint;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbACEndpoint;-><init>(IBI)V
+PLcom/android/server/usb/descriptors/UsbACEndpoint;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;IB)Lcom/android/server/usb/descriptors/UsbDescriptor;
+PLcom/android/server/usb/descriptors/UsbACEndpoint;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbACFeatureUnit;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/UsbACHeaderInterface;-><init>(IBBII)V
+PLcom/android/server/usb/descriptors/UsbACInterface;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/UsbACInterface;->allocAudioControlDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
+PLcom/android/server/usb/descriptors/UsbACInterface;->allocAudioStreamingDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
+PLcom/android/server/usb/descriptors/UsbACInterface;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IB)Lcom/android/server/usb/descriptors/UsbDescriptor;
+PLcom/android/server/usb/descriptors/UsbACInterface;->getSubclass()I
+PLcom/android/server/usb/descriptors/UsbACInterface;->getSubtype()B
+PLcom/android/server/usb/descriptors/UsbACInterfaceUnparsed;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/UsbACMixerUnit;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/UsbACMixerUnit;->calcControlArraySize(II)I
+PLcom/android/server/usb/descriptors/UsbACMixerUnit;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbACTerminal;-><init>(IBBI)V
+PLcom/android/server/usb/descriptors/UsbACTerminal;->getTerminalType()I
+PLcom/android/server/usb/descriptors/UsbACTerminal;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbASFormat;-><init>(IBBBI)V
+PLcom/android/server/usb/descriptors/UsbASFormat;->allocDescriptor(Lcom/android/server/usb/descriptors/UsbDescriptorParser;Lcom/android/server/usb/descriptors/ByteStream;IBBI)Lcom/android/server/usb/descriptors/UsbDescriptor;
+PLcom/android/server/usb/descriptors/UsbConfigDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbConfigDescriptor;->addInterfaceDescriptor(Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;)V
+PLcom/android/server/usb/descriptors/UsbConfigDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbConfigDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbConfiguration;
+PLcom/android/server/usb/descriptors/UsbDescriptor;-><clinit>()V
+HPLcom/android/server/usb/descriptors/UsbDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbDescriptor;->getLength()I
+HPLcom/android/server/usb/descriptors/UsbDescriptor;->getType()B
+PLcom/android/server/usb/descriptors/UsbDescriptor;->logDescriptorName(BI)V
+PLcom/android/server/usb/descriptors/UsbDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbDescriptor;->postParse(Lcom/android/server/usb/descriptors/ByteStream;)V
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;-><init>(Ljava/lang/String;[B)V
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->allocDescriptor(Lcom/android/server/usb/descriptors/ByteStream;)Lcom/android/server/usb/descriptors/UsbDescriptor;
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getACInterfaceDescriptors(BI)Ljava/util/ArrayList;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getACInterfaceSpec()I
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getCurInterface()Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getDescriptorString(I)Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getDescriptors()Ljava/util/ArrayList;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getDeviceAddr()Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getDeviceDescriptor()Lcom/android/server/usb/descriptors/UsbDeviceDescriptor;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getInputHeadsetProbability()F
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->getInterfaceDescriptorsForClass(I)Ljava/util/ArrayList;
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getOutputHeadsetProbability()F
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->getRawDescriptors()[B
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasAudioCapture()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasAudioInterface()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasAudioPlayback()Z
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasAudioTerminal(I)Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasHIDInterface()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasInput()Z
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasMIDIInterface()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasMic()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasOutput()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasSpeaker()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasStorageInterface()Z
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasVideoCapture()Z
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->hasVideoPlayback()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->isInputHeadset()Z
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->isOutputHeadset()Z
+HPLcom/android/server/usb/descriptors/UsbDescriptorParser;->parseDescriptors([B)V
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->setACInterfaceSpec(I)V
+PLcom/android/server/usb/descriptors/UsbDescriptorParser;->toAndroidUsbDeviceBuilder()Landroid/hardware/usb/UsbDevice$Builder;
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->addConfigDescriptor(Lcom/android/server/usb/descriptors/UsbConfigDescriptor;)V
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getDeviceReleaseString()Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getMfgString(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getProductID()I
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getProductString(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getSerialString(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Ljava/lang/String;
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->getVendorID()I
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbDeviceDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbDevice$Builder;
+PLcom/android/server/usb/descriptors/UsbEndpointDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbEndpointDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbEndpointDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbEndpoint;
+PLcom/android/server/usb/descriptors/UsbHIDDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbHIDDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbInterfaceAssoc;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbInterfaceAssoc;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;-><init>(IB)V
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->addEndpointDescriptor(Lcom/android/server/usb/descriptors/UsbEndpointDescriptor;)V
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->getUsbClass()I
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->getUsbSubclass()I
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->parseRawDescriptors(Lcom/android/server/usb/descriptors/ByteStream;)I
+PLcom/android/server/usb/descriptors/UsbInterfaceDescriptor;->toAndroid(Lcom/android/server/usb/descriptors/UsbDescriptorParser;)Landroid/hardware/usb/UsbInterface;
+PLcom/android/server/usb/descriptors/UsbUnknown;-><init>(IB)V
+PLcom/android/server/utils/AppInstallerUtil;->createIntent(Landroid/content/Context;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/utils/AppInstallerUtil;->createIntent(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;)Landroid/content/Intent;
+PLcom/android/server/utils/AppInstallerUtil;->getInstallerPackageName(Landroid/content/Context;Ljava/lang/String;)Ljava/lang/String;
+PLcom/android/server/utils/AppInstallerUtil;->resolveIntent(Landroid/content/Context;Landroid/content/Intent;)Landroid/content/Intent;
+PLcom/android/server/utils/FlagNamespaceUtils;-><clinit>()V
+PLcom/android/server/utils/FlagNamespaceUtils;->addToKnownResetNamespaces(Ljava/lang/String;)V
+PLcom/android/server/utils/FlagNamespaceUtils;->addToKnownResetNamespaces(Ljava/util/List;)V
+PLcom/android/server/utils/FlagNamespaceUtils;->incrementAndRetrieveResetNamespacesFlagCounter()I
+PLcom/android/server/utils/FlagNamespaceUtils;->resetDeviceConfig(ILjava/util/List;)V
+PLcom/android/server/utils/PriorityDump$PriorityDumper;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/utils/PriorityDump$PriorityDumper;->dumpHigh(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/utils/PriorityDump$PriorityDumper;->dumpNormal(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HPLcom/android/server/utils/PriorityDump;->dump(Lcom/android/server/utils/PriorityDump$PriorityDumper;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 PLcom/android/server/utils/PriorityDump;->getPriorityType(Ljava/lang/String;)I
-HSPLcom/android/server/utils/UserTokenWatcher;->isAcquired(I)Z
-PLcom/android/server/voiceinteraction/DatabaseHelper;->getArrayForCommaSeparatedString(Ljava/lang/String;)[I
+HSPLcom/android/server/utils/TimingsTraceAndSlog;-><init>()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
+HSPLcom/android/server/utils/TraceBuffer;-><init>(I)V
+PLcom/android/server/utils/TraceBuffer;->getStatus()Ljava/lang/String;
+HSPLcom/android/server/utils/TraceBuffer;->resetBuffer()V
+HSPLcom/android/server/utils/TraceBuffer;->setCapacity(I)V
+PLcom/android/server/utils/UserTokenWatcher$InnerTokenWatcher;-><init>(Lcom/android/server/utils/UserTokenWatcher;ILandroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/utils/UserTokenWatcher$InnerTokenWatcher;-><init>(Lcom/android/server/utils/UserTokenWatcher;ILandroid/os/Handler;Ljava/lang/String;Lcom/android/server/utils/UserTokenWatcher$1;)V
+PLcom/android/server/utils/UserTokenWatcher$InnerTokenWatcher;->acquired()V
+PLcom/android/server/utils/UserTokenWatcher$InnerTokenWatcher;->released()V
+HSPLcom/android/server/utils/UserTokenWatcher;-><init>(Lcom/android/server/utils/UserTokenWatcher$Callback;Landroid/os/Handler;Ljava/lang/String;)V
+PLcom/android/server/utils/UserTokenWatcher;->access$100(Lcom/android/server/utils/UserTokenWatcher;)Lcom/android/server/utils/UserTokenWatcher$Callback;
+PLcom/android/server/utils/UserTokenWatcher;->access$200(Lcom/android/server/utils/UserTokenWatcher;)Landroid/util/SparseArray;
+PLcom/android/server/utils/UserTokenWatcher;->acquire(Landroid/os/IBinder;Ljava/lang/String;I)V
+PLcom/android/server/utils/UserTokenWatcher;->isAcquired(I)Z
+PLcom/android/server/utils/UserTokenWatcher;->release(Landroid/os/IBinder;I)V
+HSPLcom/android/server/utils/quota/-$$Lambda$Categorizer$7ez64bqBH_7ftnL6e10WcD6kHMA;-><clinit>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$Categorizer$7ez64bqBH_7ftnL6e10WcD6kHMA;-><init>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$Categorizer$7ez64bqBH_7ftnL6e10WcD6kHMA;->getCategory(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$JPiaaEfenxacor9EsTZts7yjmfo;-><init>(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$JPiaaEfenxacor9EsTZts7yjmfo;->accept(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$V8_P5m4uQVKMpyfUCyH32qDbyt4;-><clinit>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$V8_P5m4uQVKMpyfUCyH32qDbyt4;-><init>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$V8_P5m4uQVKMpyfUCyH32qDbyt4;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$YGSPs4eBXm5g9fUsluToPq543sk;-><init>(J)V
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$cN0cbPv_XamMCffwzXBT1y5wiSs;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$cN0cbPv_XamMCffwzXBT1y5wiSs;->accept(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$gcuaahwgCbmI2MO_9858jGPxPGM;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
+HPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$gcuaahwgCbmI2MO_9858jGPxPGM;->onAlarm()V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$giodBFjkV0qAORwrWZQrMAgSRaY;-><clinit>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$giodBFjkV0qAORwrWZQrMAgSRaY;-><init>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$giodBFjkV0qAORwrWZQrMAgSRaY;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$txEUpjjjfBHHIwaoIrBUanoDtpI;-><init>(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$txEUpjjjfBHHIwaoIrBUanoDtpI;->accept(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$AlarmQueue$9XqssygjZyzGRYPaPGM34LNECH0;-><clinit>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$AlarmQueue$9XqssygjZyzGRYPaPGM34LNECH0;-><init>()V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$QGqhRiGVlazdG76r-Ich6VZnho4;-><init>(Lcom/android/server/utils/quota/QuotaTracker;IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$QGqhRiGVlazdG76r-Ich6VZnho4;->run()V
+HPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$XRuiZQg4lOmWE1kXJjjkatdBgB8;-><init>(Lcom/android/server/utils/quota/QuotaTracker;ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$XRuiZQg4lOmWE1kXJjjkatdBgB8;->run()V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$cKEDVJtC0LHULuSrH0-B6zQBe3g;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$QuotaTracker$cKEDVJtC0LHULuSrH0-B6zQBe3g;->run()V
+HSPLcom/android/server/utils/quota/-$$Lambda$UptcMap$VIYMMrjbnqShO606s52uuyAgdlU;-><init>(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/utils/quota/-$$Lambda$UptcMap$VIYMMrjbnqShO606s52uuyAgdlU;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/Categorizer;-><clinit>()V
+HSPLcom/android/server/utils/quota/Categorizer;->lambda$static$0(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/Category;
+HSPLcom/android/server/utils/quota/Category;-><clinit>()V
+HSPLcom/android/server/utils/quota/Category;-><init>(Ljava/lang/String;)V
+PLcom/android/server/utils/quota/Category;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/utils/quota/Category;->equals(Ljava/lang/Object;)Z
+HSPLcom/android/server/utils/quota/Category;->hashCode()I
+PLcom/android/server/utils/quota/Category;->toString()Ljava/lang/String;
+HSPLcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Landroid/os/Looper;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker;Lcom/android/server/utils/quota/CountQuotaTracker$1;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->accept(Landroid/util/LongArrayQueue;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->access$000(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->access$100(Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;)J
+HSPLcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;->updateMaxPeriod()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;-><init>(Lcom/android/server/utils/quota/CountQuotaTracker$1;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Landroid/util/LongArrayQueue;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;->reset()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;-><init>()V
+HPLcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;->toString()Ljava/lang/String;
+HSPLcom/android/server/utils/quota/CountQuotaTracker;-><clinit>()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;-><init>(Landroid/content/Context;Lcom/android/server/utils/quota/Categorizer;Lcom/android/server/utils/quota/QuotaTracker$Injector;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->access$300(Lcom/android/server/utils/quota/CountQuotaTracker;)Landroid/util/ArrayMap;
+PLcom/android/server/utils/quota/CountQuotaTracker;->deleteObsoleteEventsLocked()V
+PLcom/android/server/utils/quota/CountQuotaTracker;->dump(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->getExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+HSPLcom/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;->handleRemovedAppLocked(Ljava/lang/String;I)V
+PLcom/android/server/utils/quota/CountQuotaTracker;->handleRemovedUserLocked(I)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->invalidateAllExecutionStatsLocked()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->isUnderCountQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(ILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->isWithinQuotaLocked(Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)Z
+HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$dump$6(Lcom/android/internal/util/IndentingPrintWriter;ILjava/lang/String;Ljava/lang/String;Landroid/util/LongArrayQueue;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$dump$7(Lcom/android/internal/util/IndentingPrintWriter;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$dump$8$CountQuotaTracker(Landroid/util/proto/ProtoOutputStream;ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
+HPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$0$CountQuotaTracker()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$4(Ljava/lang/Void;)Landroid/util/LongArrayQueue;
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->lambda$new$5(Ljava/lang/Void;)Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->maybeScheduleCleanupAlarmLocked()V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->noteEvent(ILjava/lang/String;Ljava/lang/String;)Z
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->setCountLimit(Lcom/android/server/utils/quota/Category;IJ)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->setEnabled(Z)V
+HSPLcom/android/server/utils/quota/CountQuotaTracker;->updateExecutionStatsLocked(ILjava/lang/String;Ljava/lang/String;Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;)V
+HSPLcom/android/server/utils/quota/QuotaTracker$1;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
+PLcom/android/server/utils/quota/QuotaTracker$1;->getPackageName(Landroid/content/Intent;)Ljava/lang/String;
+HPLcom/android/server/utils/quota/QuotaTracker$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/utils/quota/QuotaTracker$AlarmQueue;-><init>()V
+HSPLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;-><init>(Lcom/android/server/utils/quota/QuotaTracker;)V
+HSPLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;-><init>(Lcom/android/server/utils/quota/QuotaTracker;Lcom/android/server/utils/quota/QuotaTracker$1;)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;->dumpLocked(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;->dumpLocked(Lcom/android/internal/util/IndentingPrintWriter;)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;->removeAlarmsLocked(I)V
+PLcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;->removeAlarmsLocked(ILjava/lang/String;)V
+HSPLcom/android/server/utils/quota/QuotaTracker$Injector;-><init>()V
+HSPLcom/android/server/utils/quota/QuotaTracker$Injector;->getElapsedRealtime()J
+HSPLcom/android/server/utils/quota/QuotaTracker$Injector;->isAlarmManagerReady()Z
+HSPLcom/android/server/utils/quota/QuotaTracker;-><clinit>()V
+HSPLcom/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;->access$200(Lcom/android/server/utils/quota/QuotaTracker;Ljava/lang/String;I)V
+PLcom/android/server/utils/quota/QuotaTracker;->access$300(Lcom/android/server/utils/quota/QuotaTracker;I)V
+PLcom/android/server/utils/quota/QuotaTracker;->dump(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/utils/quota/QuotaTracker;->dump(Lcom/android/internal/util/IndentingPrintWriter;)V
+HSPLcom/android/server/utils/quota/QuotaTracker;->isEnabledLocked()Z
+PLcom/android/server/utils/quota/QuotaTracker;->isIndividualQuotaFreeLocked(ILjava/lang/String;)Z
+HSPLcom/android/server/utils/quota/QuotaTracker;->isQuotaFreeLocked(ILjava/lang/String;)Z
+HSPLcom/android/server/utils/quota/QuotaTracker;->isWithinQuota(ILjava/lang/String;Ljava/lang/String;)Z
+HPLcom/android/server/utils/quota/QuotaTracker;->lambda$postQuotaStatusChanged$3$QuotaTracker(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleAlarm$0$QuotaTracker(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+HSPLcom/android/server/utils/quota/QuotaTracker;->lambda$scheduleQuotaCheck$2$QuotaTracker()V
+HPLcom/android/server/utils/quota/QuotaTracker;->onAppRemovedLocked(Ljava/lang/String;I)V
+PLcom/android/server/utils/quota/QuotaTracker;->onUserRemovedLocked(I)V
+PLcom/android/server/utils/quota/QuotaTracker;->postQuotaStatusChanged(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/utils/quota/QuotaTracker;->scheduleAlarm(IJLjava/lang/String;Landroid/app/AlarmManager$OnAlarmListener;)V
+HSPLcom/android/server/utils/quota/QuotaTracker;->scheduleQuotaCheck()V
+HSPLcom/android/server/utils/quota/QuotaTracker;->setEnabled(Z)V
+HPLcom/android/server/utils/quota/Uptc;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/utils/quota/Uptc;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/utils/quota/Uptc;->string(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/utils/quota/UptcMap;-><init>()V
+HSPLcom/android/server/utils/quota/UptcMap;->add(ILjava/lang/String;Ljava/lang/String;Ljava/lang/Object;)V
+PLcom/android/server/utils/quota/UptcMap;->delete(I)V
+HPLcom/android/server/utils/quota/UptcMap;->delete(ILjava/lang/String;)Landroid/util/ArrayMap;
+HPLcom/android/server/utils/quota/UptcMap;->forEach(Lcom/android/server/utils/quota/UptcMap$UptcDataConsumer;)V
+HSPLcom/android/server/utils/quota/UptcMap;->forEach(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/utils/quota/UptcMap;->get(ILjava/lang/String;Ljava/lang/String;)Ljava/lang/Object;
+HSPLcom/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;->getPackageNameAtIndex(II)Ljava/lang/String;
+HPLcom/android/server/utils/quota/UptcMap;->getTagAtIndex(III)Ljava/lang/String;
+PLcom/android/server/utils/quota/UptcMap;->getUserIdAtIndex(I)I
+HSPLcom/android/server/utils/quota/UptcMap;->lambda$forEach$0(Ljava/util/function/Consumer;Landroid/util/ArrayMap;)V
+PLcom/android/server/utils/quota/UptcMap;->packageCountForUser(I)I
+HPLcom/android/server/utils/quota/UptcMap;->tagCountForUserAndPackage(ILjava/lang/String;)I
+PLcom/android/server/utils/quota/UptcMap;->userCount()I
+PLcom/android/server/voiceinteraction/-$$Lambda$VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2$_YjGqp96fW1i83gthgQe_rVHY5s;-><clinit>()V
+PLcom/android/server/voiceinteraction/-$$Lambda$VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2$_YjGqp96fW1i83gthgQe_rVHY5s;-><init>()V
+PLcom/android/server/voiceinteraction/-$$Lambda$VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2$_YjGqp96fW1i83gthgQe_rVHY5s;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/voiceinteraction/DatabaseHelper;-><init>(Landroid/content/Context;)V
+PLcom/android/server/voiceinteraction/DatabaseHelper;->deleteKeyphraseSoundModel(IILjava/lang/String;)Z
+PLcom/android/server/voiceinteraction/DatabaseHelper;->dump(Ljava/io/PrintWriter;)V
+HPLcom/android/server/voiceinteraction/DatabaseHelper;->getArrayForCommaSeparatedString(Ljava/lang/String;)[I
 PLcom/android/server/voiceinteraction/DatabaseHelper;->getCommaSeparatedString([I)Ljava/lang/String;
-PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(IILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
-PLcom/android/server/voiceinteraction/DatabaseHelper;->onCreate(Landroid/database/sqlite/SQLiteDatabase;)V
+HPLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(IILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->getKeyphraseSoundModel(Ljava/lang/String;ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+HPLcom/android/server/voiceinteraction/DatabaseHelper;->getValidKeyphraseSoundModelForUser(Ljava/lang/String;I)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
+PLcom/android/server/voiceinteraction/DatabaseHelper;->onUpgrade(Landroid/database/sqlite/SQLiteDatabase;II)V
 PLcom/android/server/voiceinteraction/DatabaseHelper;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)Z
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;->getPackages(I)[Ljava/lang/String;
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->lambda$onHandleForceStop$0(Ljava/lang/Boolean;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onSomePackagesChanged()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onHandleUserStop(Landroid/content/Intent;I)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;->onSomePackagesChanged()V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Ljava/util/concurrent/Executor;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;->getDefaultRecognizer(Landroid/os/UserHandle;)Ljava/lang/String;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;->getDefaultRecognizer(Landroid/os/UserHandle;)Ljava/lang/String;
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;->onRoleHoldersChanged(Ljava/lang/String;Landroid/os/UserHandle;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;->onChange(Z)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->activeServiceSupportsLaunchFromKeyguard()Z
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Landroid/os/Handler;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;->onChange(Z)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->access$400(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->access$500(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->access$500(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->access$600(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;)I
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->closeSystemDialogs(Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->deleteKeyphraseSoundModel(ILjava/lang/String;)I
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->deliverNewSession(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceCallingPermission(Ljava/lang/String;)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceIsCurrentVoiceInteractionService(Landroid/service/voice/IVoiceInteractionService;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->findAvailInteractor(ILjava/lang/String;)Landroid/service/voice/VoiceInteractionServiceInfo;
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->enforceIsCurrentVoiceInteractionService(Landroid/service/voice/IVoiceInteractionService;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->findAvailInteractor(ILjava/lang/String;)Landroid/service/voice/VoiceInteractionServiceInfo;
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->findAvailRecognizer(Ljava/lang/String;I)Landroid/content/ComponentName;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->finish(Landroid/os/IBinder;)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getActiveServiceComponentName()Landroid/content/ComponentName;
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurAssistant(I)Landroid/content/ComponentName;
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurAssistant(I)Landroid/content/ComponentName;
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurInteractor(I)Landroid/content/ComponentName;
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getCurRecognizer(I)Landroid/content/ComponentName;
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getDspModuleProperties(Landroid/service/voice/IVoiceInteractionService;)Landroid/hardware/soundtrigger/SoundTrigger$ModuleProperties;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getEnrolledKeyphraseMetadata(Landroid/service/voice/IVoiceInteractionService;Ljava/lang/String;Ljava/lang/String;)Landroid/hardware/soundtrigger/KeyphraseMetadata;
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getForceVoiceInteractionServicePackage(Landroid/content/res/Resources;)Ljava/lang/String;
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getKeyphraseSoundModel(ILjava/lang/String;)Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getUserDisabledShowContext()I
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->getUserDisabledShowContext()I
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->hideCurrentSession()V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->hideSessionFromSession(Landroid/os/IBinder;)Z
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->hideSessionFromSession(Landroid/os/IBinder;)Z
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUser(I)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->initForUserNoTracing(I)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->isEnrolledForKeyphrase(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->isSessionRunning()Z
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onLockscreenShown()V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onLockscreenShown()V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onSessionHidden()V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onSessionShown()V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurInteractor(Landroid/content/ComponentName;I)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurRecognizer(Landroid/content/ComponentName;I)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->registerVoiceInteractionSessionListener(Lcom/android/internal/app/IVoiceInteractionSessionListener;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->requestDirectActions(Landroid/os/IBinder;ILandroid/os/IBinder;Landroid/os/RemoteCallback;Landroid/os/RemoteCallback;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->resetCurAssistant(I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurInteractor(Landroid/content/ComponentName;I)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurRecognizer(Landroid/content/ComponentName;I)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setCurrentUserLocked(I)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setDisabledShowContext(I)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setImplLocked(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->setUiHints(Landroid/service/voice/IVoiceInteractionService;Landroid/os/Bundle;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->shouldEnableService(Landroid/content/Context;)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->showSession(Landroid/service/voice/IVoiceInteractionService;Landroid/os/Bundle;I)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->showSessionForActiveService(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;Landroid/os/IBinder;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->showSessionFromSession(Landroid/os/IBinder;Landroid/os/Bundle;I)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->startAssistantActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->startRecognition(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->stopRecognition(Landroid/service/voice/IVoiceInteractionService;ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->startRecognition(Landroid/service/voice/IVoiceInteractionService;ILjava/lang/String;Landroid/hardware/soundtrigger/IRecognitionStatusCallback;Landroid/hardware/soundtrigger/SoundTrigger$RecognitionConfig;)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->startVoiceActivity(Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->stopRecognition(Landroid/service/voice/IVoiceInteractionService;ILandroid/hardware/soundtrigger/IRecognitionStatusCallback;)I
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeeded(Z)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededLocked(Z)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->switchImplementationIfNeededNoTracingLocked(Z)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->systemRunning(Z)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->unloadAllKeyphraseModels()V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;->updateKeyphraseSoundModel(Landroid/hardware/soundtrigger/SoundTrigger$KeyphraseSoundModel;)I
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->access$000(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->access$100(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Landroid/os/RemoteCallbackList;
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->access$100(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;Landroid/content/pm/UserInfo;)Z
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->access$200(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->access$300(Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isSupported(Landroid/content/pm/UserInfo;)Z
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->isSupportedUser(Lcom/android/server/SystemService$TargetUser;)Z
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onBootPhase(I)V
 HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStart()V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStartUser(I)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUnlockUser(I)V
-PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onStartUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerService;->onUnlockUser(Landroid/content/pm/UserInfo;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;ILandroid/content/ComponentName;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->closeSystemDialogsLocked(Landroid/os/IBinder;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->deliverNewSessionLocked(Landroid/os/IBinder;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->dumpLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
@@ -14150,19 +32082,31 @@
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->notifySoundModelsChangedLocked()V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->onSessionHidden(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->onSessionShown(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->requestDirectActionsLocked(Landroid/os/IBinder;ILandroid/os/IBinder;Landroid/os/RemoteCallback;Landroid/os/RemoteCallback;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->sessionConnectionGone(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->setDisabledShowContextLocked(II)V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->showSessionLocked(Landroid/os/Bundle;ILcom/android/internal/app/IVoiceInteractionSessionShowCallback;Landroid/os/IBinder;)Z
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->shutdownLocked()V
 PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startAssistantActivityLocked(IILandroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
-HSPLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startLocked()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startLocked()V
+PLcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;->startVoiceActivityLocked(IILandroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;)I
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1;->onShown()V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$3;-><init>(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$3;->run()V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;-><init>(Ljava/lang/Object;Landroid/content/ComponentName;ILandroid/content/Context;Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;ILandroid/os/Handler;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->access$100(Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->canHandleReceivedAssistDataLocked()Z
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->cancelLocked(Z)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->deliverNewSessionLocked(Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Z
-PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->getUserDisabledShowContextLocked()I
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->getUserDisabledShowContextLocked()I
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->grantClipDataItemPermission(Landroid/content/ClipData$Item;IIILjava/lang/String;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->grantClipDataPermissions(Landroid/content/ClipData;IIILjava/lang/String;)V
+PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->grantUriPermission(Landroid/net/Uri;IIILjava/lang/String;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->hideLocked()Z
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->notifyPendingShowCallbacksShownLocked()V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onAssistDataReceivedLocked(Landroid/os/Bundle;II)V
@@ -14170,157 +32114,310 @@
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
 PLcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;->showLocked(Landroid/os/Bundle;IILcom/android/internal/app/IVoiceInteractionSessionShowCallback;Ljava/util/List;)Z
+HSPLcom/android/server/vr/EnabledComponentsObserver$1;-><init>(Lcom/android/server/vr/EnabledComponentsObserver;)V
 PLcom/android/server/vr/EnabledComponentsObserver$1;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-HSPLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageDisappeared(Ljava/lang/String;I)V
-HSPLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageModified(Ljava/lang/String;)V
-HSPLcom/android/server/vr/EnabledComponentsObserver$1;->onSomePackagesChanged()V
+PLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageDisappeared(Ljava/lang/String;I)V
+HPLcom/android/server/vr/EnabledComponentsObserver$1;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/vr/EnabledComponentsObserver$1;->onSomePackagesChanged()V
+HSPLcom/android/server/vr/EnabledComponentsObserver;-><clinit>()V
 HSPLcom/android/server/vr/EnabledComponentsObserver;-><init>(Landroid/content/Context;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)V
 HSPLcom/android/server/vr/EnabledComponentsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;Landroid/os/Looper;Ljava/lang/String;Ljava/lang/String;Ljava/lang/Object;Ljava/util/Collection;)Lcom/android/server/vr/EnabledComponentsObserver;
+HSPLcom/android/server/vr/EnabledComponentsObserver;->getCurrentProfileIds()[I
 HSPLcom/android/server/vr/EnabledComponentsObserver;->getEnabled(I)Landroid/util/ArraySet;
 PLcom/android/server/vr/EnabledComponentsObserver;->getInstalled(I)Landroid/util/ArraySet;
-PLcom/android/server/vr/EnabledComponentsObserver;->isValid(Landroid/content/ComponentName;I)I
+HPLcom/android/server/vr/EnabledComponentsObserver;->isValid(Landroid/content/ComponentName;I)I
 HSPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNames(Landroid/content/pm/PackageManager;ILjava/lang/String;Ljava/lang/String;)Landroid/util/ArraySet;
+HSPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesForUser(I)Landroid/util/ArraySet;
 HSPLcom/android/server/vr/EnabledComponentsObserver;->loadComponentNamesFromSetting(Ljava/lang/String;I)Landroid/util/ArraySet;
-HSPLcom/android/server/vr/EnabledComponentsObserver;->onPackagesChanged()V
+HPLcom/android/server/vr/EnabledComponentsObserver;->onPackagesChanged()V
 HSPLcom/android/server/vr/EnabledComponentsObserver;->onUsersChanged()V
 HSPLcom/android/server/vr/EnabledComponentsObserver;->rebuildAll()V
+HSPLcom/android/server/vr/EnabledComponentsObserver;->sendSettingChanged()V
+HSPLcom/android/server/vr/SettingsObserver$1;-><init>(Lcom/android/server/vr/SettingsObserver;Ljava/lang/String;)V
+HSPLcom/android/server/vr/SettingsObserver$2;-><init>(Lcom/android/server/vr/SettingsObserver;Landroid/os/Handler;Landroid/net/Uri;)V
 HSPLcom/android/server/vr/SettingsObserver;-><init>(Landroid/content/Context;Landroid/os/Handler;Landroid/net/Uri;Ljava/lang/String;)V
+HSPLcom/android/server/vr/SettingsObserver;->addListener(Lcom/android/server/vr/SettingsObserver$SettingChangeListener;)V
+HSPLcom/android/server/vr/SettingsObserver;->build(Landroid/content/Context;Landroid/os/Handler;Ljava/lang/String;)Lcom/android/server/vr/SettingsObserver;
+HSPLcom/android/server/vr/Vr2dDisplay$1;-><init>(Lcom/android/server/vr/Vr2dDisplay;)V
 HSPLcom/android/server/vr/Vr2dDisplay;-><init>(Landroid/hardware/display/DisplayManager;Landroid/app/ActivityManagerInternal;Lcom/android/server/wm/WindowManagerInternal;Landroid/service/vr/IVrManager;)V
 HSPLcom/android/server/vr/Vr2dDisplay;->init(Landroid/content/Context;Z)V
+HSPLcom/android/server/vr/Vr2dDisplay;->startDebugOnlyBroadcastReceiver(Landroid/content/Context;)V
 HSPLcom/android/server/vr/Vr2dDisplay;->startVrModeListener()V
+HSPLcom/android/server/vr/VrManagerInternal;-><init>()V
+HSPLcom/android/server/vr/VrManagerService$1;-><init>(Lcom/android/server/vr/VrManagerService;)V
+HSPLcom/android/server/vr/VrManagerService$2;-><init>(Lcom/android/server/vr/VrManagerService;)V
 HSPLcom/android/server/vr/VrManagerService$3;-><init>()V
-PLcom/android/server/vr/VrManagerService$4;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/vr/VrManagerService$4;-><init>(Lcom/android/server/vr/VrManagerService;)V
+HPLcom/android/server/vr/VrManagerService$4;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
 HSPLcom/android/server/vr/VrManagerService$4;->getVrModeState()Z
 HSPLcom/android/server/vr/VrManagerService$4;->registerListener(Landroid/service/vr/IVrStateCallbacks;)V
 HSPLcom/android/server/vr/VrManagerService$4;->registerPersistentVrStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
-HSPLcom/android/server/vr/VrManagerService$4;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V
-HSPLcom/android/server/vr/VrManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+PLcom/android/server/vr/VrManagerService$4;->unregisterListener(Landroid/service/vr/IVrStateCallbacks;)V
+HSPLcom/android/server/vr/VrManagerService$5;-><init>(Lcom/android/server/vr/VrManagerService;)V
+PLcom/android/server/vr/VrManagerService$5;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;)V
+HSPLcom/android/server/vr/VrManagerService$LocalService;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$1;)V
 HSPLcom/android/server/vr/VrManagerService$LocalService;->addPersistentVrModeStateListener(Landroid/service/vr/IPersistentVrStateCallbacks;)V
-HSPLcom/android/server/vr/VrManagerService$LocalService;->isCurrentVrListener(Ljava/lang/String;I)Z
+PLcom/android/server/vr/VrManagerService$LocalService;->isCurrentVrListener(Ljava/lang/String;I)Z
 HSPLcom/android/server/vr/VrManagerService$LocalService;->onScreenStateChanged(Z)V
 HSPLcom/android/server/vr/VrManagerService$LocalService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HSPLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;)V
+HSPLcom/android/server/vr/VrManagerService$NotificationAccessManager;-><init>(Lcom/android/server/vr/VrManagerService;Lcom/android/server/vr/VrManagerService$1;)V
 HSPLcom/android/server/vr/VrManagerService$NotificationAccessManager;->update(Ljava/util/Collection;)V
+HSPLcom/android/server/vr/VrManagerService$VrState;-><init>(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HSPLcom/android/server/vr/VrManagerService;-><clinit>()V
 HSPLcom/android/server/vr/VrManagerService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/vr/VrManagerService;->access$1000(Lcom/android/server/vr/VrManagerService;)Landroid/os/RemoteCallbackList;
+HSPLcom/android/server/vr/VrManagerService;->access$1400(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/vr/VrManagerService;->access$1500(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/vr/VrManagerService;->access$1600(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)V
+HSPLcom/android/server/vr/VrManagerService;->access$1700(Lcom/android/server/vr/VrManagerService;[Ljava/lang/String;)V
+HSPLcom/android/server/vr/VrManagerService;->access$1800(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V
+PLcom/android/server/vr/VrManagerService;->access$1900(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IVrStateCallbacks;)V
+HSPLcom/android/server/vr/VrManagerService;->access$2000(Lcom/android/server/vr/VrManagerService;Landroid/service/vr/IPersistentVrStateCallbacks;)V
+HSPLcom/android/server/vr/VrManagerService;->access$2200(Lcom/android/server/vr/VrManagerService;)Z
+PLcom/android/server/vr/VrManagerService;->access$2700(Lcom/android/server/vr/VrManagerService;)Landroid/content/Context;
+PLcom/android/server/vr/VrManagerService;->access$2800(Lcom/android/server/vr/VrManagerService;)Z
+PLcom/android/server/vr/VrManagerService;->access$2900(Lcom/android/server/vr/VrManagerService;)Lcom/android/server/utils/ManagedApplicationService;
+PLcom/android/server/vr/VrManagerService;->access$300(Lcom/android/server/vr/VrManagerService;)Lcom/android/server/utils/ManagedApplicationService;
+PLcom/android/server/vr/VrManagerService;->access$3000(Lcom/android/server/vr/VrManagerService;Ljava/io/PrintWriter;)V
+PLcom/android/server/vr/VrManagerService;->access$3100(Lcom/android/server/vr/VrManagerService;)I
+PLcom/android/server/vr/VrManagerService;->access$3200(Lcom/android/server/vr/VrManagerService;)Lcom/android/server/vr/EnabledComponentsObserver;
+HSPLcom/android/server/vr/VrManagerService;->access$3300(Lcom/android/server/vr/VrManagerService;ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
+HSPLcom/android/server/vr/VrManagerService;->access$3400(Lcom/android/server/vr/VrManagerService;Z)V
+PLcom/android/server/vr/VrManagerService;->access$3500(Lcom/android/server/vr/VrManagerService;Ljava/lang/String;I)Z
+PLcom/android/server/vr/VrManagerService;->access$3800(Lcom/android/server/vr/VrManagerService;)V
+PLcom/android/server/vr/VrManagerService;->access$700(Lcom/android/server/vr/VrManagerService;)Landroid/os/RemoteCallbackList;
+PLcom/android/server/vr/VrManagerService;->access$800(Lcom/android/server/vr/VrManagerService;)Z
+HSPLcom/android/server/vr/VrManagerService;->addPersistentStateCallback(Landroid/service/vr/IPersistentVrStateCallbacks;)V
+HSPLcom/android/server/vr/VrManagerService;->addStateCallback(Landroid/service/vr/IVrStateCallbacks;)V
 PLcom/android/server/vr/VrManagerService;->consumeAndApplyPendingStateLocked(Z)V
 PLcom/android/server/vr/VrManagerService;->dumpStateTransitions(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/vr/VrManagerService;->enforceCallerPermissionAnyOf([Ljava/lang/String;)V
 HSPLcom/android/server/vr/VrManagerService;->getVrMode()Z
 HSPLcom/android/server/vr/VrManagerService;->grantCoarseLocationPermissionIfNeeded(Ljava/lang/String;I)V
 HSPLcom/android/server/vr/VrManagerService;->grantNotificationListenerAccess(Ljava/lang/String;I)V
-HSPLcom/android/server/vr/VrManagerService;->isCurrentVrListener(Ljava/lang/String;I)Z
+HSPLcom/android/server/vr/VrManagerService;->grantNotificationPolicyAccess(Ljava/lang/String;)V
+PLcom/android/server/vr/VrManagerService;->isCurrentVrListener(Ljava/lang/String;I)Z
 HSPLcom/android/server/vr/VrManagerService;->isDefaultAllowed(Ljava/lang/String;)Z
+HSPLcom/android/server/vr/VrManagerService;->isPermissionUserUpdated(Ljava/lang/String;Ljava/lang/String;I)Z
 PLcom/android/server/vr/VrManagerService;->onAwakeStateChanged(Z)V
 HSPLcom/android/server/vr/VrManagerService;->onBootPhase(I)V
+PLcom/android/server/vr/VrManagerService;->onCleanupUser(I)V
 HSPLcom/android/server/vr/VrManagerService;->onEnabledComponentChanged()V
-HSPLcom/android/server/vr/VrManagerService;->onKeyguardStateChanged(Z)V
+HPLcom/android/server/vr/VrManagerService;->onKeyguardStateChanged(Z)V
 HSPLcom/android/server/vr/VrManagerService;->onStart()V
 HSPLcom/android/server/vr/VrManagerService;->onStartUser(I)V
+PLcom/android/server/vr/VrManagerService;->onStopUser(I)V
+PLcom/android/server/vr/VrManagerService;->removeStateCallback(Landroid/service/vr/IVrStateCallbacks;)V
 PLcom/android/server/vr/VrManagerService;->setPersistentModeAndNotifyListenersLocked(Z)V
+HSPLcom/android/server/vr/VrManagerService;->setScreenOn(Z)V
 HSPLcom/android/server/vr/VrManagerService;->setSystemState(IZ)V
-HSPLcom/android/server/vr/VrManagerService;->setUserUnlocked()V
+PLcom/android/server/vr/VrManagerService;->setUserUnlocked()V
 HSPLcom/android/server/vr/VrManagerService;->setVrMode(ZLandroid/content/ComponentName;IILandroid/content/ComponentName;)V
-PLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)Z
+HPLcom/android/server/vr/VrManagerService;->updateCurrentVrServiceLocked(ZZLandroid/content/ComponentName;IILandroid/content/ComponentName;)Z
 HSPLcom/android/server/vr/VrManagerService;->updateVrModeAllowedLocked()V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$-BqUtvsdVGS3ye_UHe7qFnTZPn4;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$-BqUtvsdVGS3ye_UHe7qFnTZPn4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$1tPkxHr3PHUgpfvv03vRyPzY3uM;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$1tPkxHr3PHUgpfvv03vRyPzY3uM;->run()V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$4phuz9MKBqoKfDMu8M8EBVJyI2I;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$93YXv2Z9dcGnT0Vr4Zebgn1qyVM;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$93YXv2Z9dcGnT0Vr4Zebgn1qyVM;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$SxaUJpgTTfzUoz6u3AWuAOQdoNw;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
 HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$SxaUJpgTTfzUoz6u3AWuAOQdoNw;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$UhAlBGB5jhuZrLndUPRmIvoHRZc;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$VlOcXJ2BasDkYqNidSTRvw-HBpM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;-><init>()V
-HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$VUhQWq8Flr0dsQqeVHhHT8jU7qY;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$VUhQWq8Flr0dsQqeVHhHT8jU7qY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;-><clinit>()V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;-><init>()V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$NrNkceFJLqjCb8eAxErUhpLd5c8;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
 HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$NrNkceFJLqjCb8eAxErUhpLd5c8;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Yk86TTURTI5B9DzxOzMQGDq7aQU;->run()V
-PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$fLM_YLhVBfWS7QM0ta-qHXvJ4Uc;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$QhODF3v-swnwSYvDbeEhU85gOBw;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$QhODF3v-swnwSYvDbeEhU85gOBw;->run()V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Y6NUt3jeHQDhNJsATtXxO4MiWJ0;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Yk86TTURTI5B9DzxOzMQGDq7aQU;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Yk86TTURTI5B9DzxOzMQGDq7aQU;->run()V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$ZY5r01reAnoB4Dl2bo4au8KMz3Y;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$ZY5r01reAnoB4Dl2bo4au8KMz3Y;->run()V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$la7x4YHA-l88Cd6HFTscnLBbKfI;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
 HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$la7x4YHA-l88Cd6HFTscnLBbKfI;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$xeJGAwCI8tssclwKFf8jMsYdoKQ;->run()V
+HSPLcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$tRb4SPHGj0pcxb3p7arcqKFqs08;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)V
+PLcom/android/server/wallpaper/-$$Lambda$havGP5uMdRgWQrLydPeIOu1qDGE;-><clinit>()V
 PLcom/android/server/wallpaper/-$$Lambda$havGP5uMdRgWQrLydPeIOu1qDGE;-><init>()V
 PLcom/android/server/wallpaper/-$$Lambda$havGP5uMdRgWQrLydPeIOu1qDGE;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wallpaper/GLHelper;-><clinit>()V
+PLcom/android/server/wallpaper/GLHelper;->getMaxTextureSize()I
+PLcom/android/server/wallpaper/GLHelper;->retrieveTextureSizeFromGL()I
+HSPLcom/android/server/wallpaper/WallpaperManagerInternal;-><init>()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$1;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
 PLcom/android/server/wallpaper/WallpaperManagerService$1;->onDisplayAdded(I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$1;->onDisplayChanged(I)V
 PLcom/android/server/wallpaper/WallpaperManagerService$1;->onDisplayRemoved(I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$5;->run()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$2;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$3;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$3;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$4;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$DisplayData;-><init>(I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;-><init>(Landroid/content/Context;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onBootPhase(I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUnlockUser(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$LocalService;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$1;)V
 PLcom/android/server/wallpaper/WallpaperManagerService$LocalService;->onDisplayReady(I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z
+HSPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+HPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->doPackagesChangedLocked(ZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z
 PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onHandleForceStop(Landroid/content/Intent;[Ljava/lang/String;IZ)Z
-HSPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
+HPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageModified(Ljava/lang/String;)V
 PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateFinished(Ljava/lang/String;I)V
 PLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onPackageUpdateStarted(Ljava/lang/String;I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V
+HPLcom/android/server/wallpaper/WallpaperManagerService$MyPackageMonitor;->onSomePackagesChanged()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;->connectLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
 PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;->disconnectLocked()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;->ensureStatusHandled()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/app/WallpaperInfo;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->access$1300(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Landroid/util/SparseArray;
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->access$1400(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Ljava/util/function/Predicate;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->access$2700(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Ljava/lang/Runnable;
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->access$3100(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->appendConnectorWithCondition(Ljava/util/function/Predicate;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->attachEngine(Landroid/service/wallpaper/IWallpaperEngine;I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->containsDisplay(I)Z
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->engineShown(Landroid/service/wallpaper/IWallpaperEngine;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->forEachDisplayConnector(Ljava/util/function/Consumer;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->getDisplayConnectorOrCreate(I)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->initDisplayState()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->isUsableDisplay(Landroid/view/Display;)Z
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->lambda$onServiceDisconnected$2$WallpaperManagerService$WallpaperConnection()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->lambda$NrNkceFJLqjCb8eAxErUhpLd5c8(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->lambda$new$0$WallpaperManagerService$WallpaperConnection()V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->lambda$onServiceDisconnected$1(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->lambda$onServiceDisconnected$2$WallpaperManagerService$WallpaperConnection()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceConnected(Landroid/content/ComponentName;Landroid/os/IBinder;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->processDisconnect(Landroid/content/ServiceConnection;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;-><init>(ILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onServiceDisconnected(Landroid/content/ComponentName;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->onWallpaperColorsChanged(Landroid/app/WallpaperColors;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->processDisconnect(Landroid/content/ServiceConnection;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->scheduleTimeoutLocked()V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;->tryToRebind()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;-><init>(ILjava/io/File;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->access$3000(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Landroid/os/RemoteCallbackList;
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->cropExists()Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;->sourceExists()Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;-><init>(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->dataForEvent(ZZ)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
 HSPLcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;->onEvent(ILjava/lang/String;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;-><clinit>()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;-><init>(Landroid/content/Context;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$000(Lcom/android/server/wallpaper/WallpaperManagerService;)Ljava/lang/Object;
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$100(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1000(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1500(Lcom/android/server/wallpaper/WallpaperManagerService;I)Lcom/android/server/wallpaper/WallpaperManagerService$DisplayData;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1600(Lcom/android/server/wallpaper/WallpaperManagerService;)Lcom/android/server/wm/WindowManagerInternal;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1700(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1800(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/hardware/display/DisplayManager;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$1900(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$200(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$2000(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/Context;
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2100(Lcom/android/server/wallpaper/WallpaperManagerService;)I
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2200(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/ComponentName;
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2300(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;II)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->access$2400(Lcom/android/server/wallpaper/WallpaperManagerService;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2500(Lcom/android/server/wallpaper/WallpaperManagerService;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2502(Lcom/android/server/wallpaper/WallpaperManagerService;Z)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2600(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$2900(Lcom/android/server/wallpaper/WallpaperManagerService;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$300(Lcom/android/server/wallpaper/WallpaperManagerService;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$400(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$500(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$700(Lcom/android/server/wallpaper/WallpaperManagerService;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$800(Lcom/android/server/wallpaper/WallpaperManagerService;)Landroid/content/ComponentName;
+PLcom/android/server/wallpaper/WallpaperManagerService;->access$900(Lcom/android/server/wallpaper/WallpaperManagerService;Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)Z
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->attachServiceLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->bindWallpaperComponentLocked(Landroid/content/ComponentName;ZZLcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)Z
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->changingToSame(Landroid/content/ComponentName;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->checkPermission(Ljava/lang/String;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaper(Ljava/lang/String;II)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperComponentLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->clearWallpaperLocked(ZIILandroid/os/IRemoteCallback;)V
 PLcom/android/server/wallpaper/WallpaperManagerService;->detachWallpaperLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
-PLcom/android/server/wallpaper/WallpaperManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HPLcom/android/server/wallpaper/WallpaperManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->emptyCallbackList(Landroid/os/RemoteCallbackList;)Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->ensureSaneWallpaperData(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->ensureSaneWallpaperDisplaySize(Lcom/android/server/wallpaper/WallpaperManagerService$DisplayData;I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->extractColors(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->extractDefaultImageWallpaperColors()Landroid/app/WallpaperColors;
+PLcom/android/server/wallpaper/WallpaperManagerService;->extractDefaultImageWallpaperColors()Landroid/app/WallpaperColors;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->findWallpaperAtDisplay(II)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
 PLcom/android/server/wallpaper/WallpaperManagerService;->forEachDisplayData(Ljava/util/function/Consumer;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->generateCrop(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->getAttributeInt(Lorg/xmlpull/v1/XmlPullParser;Ljava/lang/String;I)I
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->getDisplayDataOrCreate(I)Lcom/android/server/wallpaper/WallpaperManagerService$DisplayData;
 PLcom/android/server/wallpaper/WallpaperManagerService;->getHeightHint(I)I
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->getMaximumSizeDimension(I)I
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaper(Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperCallbacks(II)Landroid/os/RemoteCallbackList;
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperColors(III)Landroid/app/WallpaperColors;
-PLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperIdForUser(II)I
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfo(I)Landroid/app/WallpaperInfo;
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperDir(I)Ljava/io/File;
+HPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperIdForUser(II)I
+HPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperInfo(I)Landroid/app/WallpaperInfo;
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperSafeLocked(II)Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
+HPLcom/android/server/wallpaper/WallpaperManagerService;->getWallpaperWithFeature(Ljava/lang/String;Ljava/lang/String;Landroid/app/IWallpaperManagerCallback;ILandroid/os/Bundle;I)Landroid/os/ParcelFileDescriptor;
 PLcom/android/server/wallpaper/WallpaperManagerService;->getWidthHint(I)I
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->initialize()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->initializeFallbackWallpaper()V
-PLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z
+HPLcom/android/server/wallpaper/WallpaperManagerService;->isSetWallpaperAllowed(Ljava/lang/String;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->isValidDisplay(I)Z
 PLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperBackupEligible(II)Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->isWallpaperSupported(Ljava/lang/String;)Z
-PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$dump$6(Ljava/io/PrintWriter;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayData;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->lambda$attachServiceLocked$6(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$dump$7(Ljava/io/PrintWriter;Lcom/android/server/wallpaper/WallpaperManagerService$DisplayData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$dump$8(Ljava/io/PrintWriter;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->lambda$notifyWallpaperColorsChanged$0$WallpaperManagerService(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;ILcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection$DisplayConnector;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->lambda$switchUser$4$WallpaperManagerService(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->lambda$onUnlockUser$4$WallpaperManagerService(I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->lambda$switchUser$5$WallpaperManagerService(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->lambda$updateFallbackConnection$2(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;Landroid/view/Display;)Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->loadSettingsLocked(IZ)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->makeJournaledFile(I)Lcom/android/internal/util/JournaledFile;
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->makeWallpaperIdLocked()I
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->migrateFromOld()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->migrateSystemToLockWallpaperLocked(I)V
 PLcom/android/server/wallpaper/WallpaperManagerService;->notifyCallbacksLocked(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->notifyColorListeners(Landroid/app/WallpaperColors;III)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyColorListeners(Landroid/app/WallpaperColors;III)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->notifyLockWallpaperChanged()V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChanged(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->notifyWallpaperColorsChangedOnDisplay(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;II)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->onBootPhase(I)V
 PLcom/android/server/wallpaper/WallpaperManagerService;->onDisplayReadyInternal(I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->onRemoveUser(I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->onUnlockUser(I)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->parseWallpaperAttributes(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Z)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->registerWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->saveSettingsLocked(I)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->setInAmbientMode(ZJ)V
-HSPLcom/android/server/wallpaper/WallpaperManagerService;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z
+HPLcom/android/server/wallpaper/WallpaperManagerService;->setInAmbientMode(ZJ)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->setLockWallpaperCallback(Landroid/app/IWallpaperManagerCallback;)Z
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaper(Ljava/lang/String;Ljava/lang/String;Landroid/graphics/Rect;ZLandroid/os/Bundle;ILandroid/app/IWallpaperManagerCallback;I)Landroid/os/ParcelFileDescriptor;
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponent(Landroid/content/ComponentName;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->setWallpaperComponentChecked(Landroid/content/ComponentName;Ljava/lang/String;I)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->stopObserver(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+PLcom/android/server/wallpaper/WallpaperManagerService;->stopObserversLocked(I)V
+HSPLcom/android/server/wallpaper/WallpaperManagerService;->supportsMultiDisplay(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperConnection;)Z
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->switchUser(ILandroid/os/IRemoteCallback;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->switchWallpaper(Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/IRemoteCallback;)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->systemReady()V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->unregisterWallpaperColorsCallback(Landroid/app/IWallpaperManagerCallback;II)V
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->updateFallbackConnection()V
+PLcom/android/server/wallpaper/WallpaperManagerService;->updateWallpaperBitmapLocked(Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;Landroid/os/Bundle;)Landroid/os/ParcelFileDescriptor;
 HSPLcom/android/server/wallpaper/WallpaperManagerService;->writeWallpaperAttributes(Lorg/xmlpull/v1/XmlSerializer;Ljava/lang/String;Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;)V
+HSPLcom/android/server/webkit/-$$Lambda$lAUGMGZZth095wGxrAtUYbmlIJY;-><init>(Lcom/android/server/webkit/WebViewUpdateServiceImpl;)V
+HSPLcom/android/server/webkit/-$$Lambda$lAUGMGZZth095wGxrAtUYbmlIJY;->run()V
+HSPLcom/android/server/webkit/SystemImpl$LazyHolder;-><clinit>()V
+HSPLcom/android/server/webkit/SystemImpl$LazyHolder;->access$100()Lcom/android/server/webkit/SystemImpl;
+HSPLcom/android/server/webkit/SystemImpl;-><clinit>()V
 HSPLcom/android/server/webkit/SystemImpl;-><init>()V
 HSPLcom/android/server/webkit/SystemImpl;-><init>(Lcom/android/server/webkit/SystemImpl$1;)V
+HSPLcom/android/server/webkit/SystemImpl;->ensureZygoteStarted()V
 HSPLcom/android/server/webkit/SystemImpl;->getFactoryPackageVersion(Ljava/lang/String;)J
+HSPLcom/android/server/webkit/SystemImpl;->getInstance()Lcom/android/server/webkit/SystemImpl;
 HSPLcom/android/server/webkit/SystemImpl;->getMultiProcessSetting(Landroid/content/Context;)I
 HSPLcom/android/server/webkit/SystemImpl;->getPackageInfoForProvider(Landroid/webkit/WebViewProviderInfo;)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/webkit/SystemImpl;->getPackageInfoForProviderAllUsers(Landroid/content/Context;Landroid/webkit/WebViewProviderInfo;)Ljava/util/List;
@@ -14332,808 +32429,2207 @@
 HSPLcom/android/server/webkit/SystemImpl;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)I
 HSPLcom/android/server/webkit/SystemImpl;->readSignatures(Landroid/content/res/XmlResourceParser;)[Ljava/lang/String;
 HSPLcom/android/server/webkit/SystemImpl;->systemIsDebuggable()Z
-HSPLcom/android/server/webkit/SystemImpl;->updateUserSetting(Landroid/content/Context;Ljava/lang/String;)V
+HSPLcom/android/server/webkit/WebViewUpdateService$1;-><init>(Lcom/android/server/webkit/WebViewUpdateService;)V
 HSPLcom/android/server/webkit/WebViewUpdateService$1;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
+HSPLcom/android/server/webkit/WebViewUpdateService$BinderService;-><init>(Lcom/android/server/webkit/WebViewUpdateService;)V
+HSPLcom/android/server/webkit/WebViewUpdateService$BinderService;-><init>(Lcom/android/server/webkit/WebViewUpdateService;Lcom/android/server/webkit/WebViewUpdateService$1;)V
 PLcom/android/server/webkit/WebViewUpdateService$BinderService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
-PLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
-PLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackageName()Ljava/lang/String;
-PLcom/android/server/webkit/WebViewUpdateService$BinderService;->isFallbackPackage(Ljava/lang/String;)Z
-PLcom/android/server/webkit/WebViewUpdateService$BinderService;->isMultiProcessEnabled()Z
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->getCurrentWebViewPackageName()Ljava/lang/String;
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->grantVisibilityToCaller(Ljava/lang/String;I)V
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->isMultiProcessEnabled()Z
 HSPLcom/android/server/webkit/WebViewUpdateService$BinderService;->notifyRelroCreationCompleted()V
-PLcom/android/server/webkit/WebViewUpdateService$BinderService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
+HPLcom/android/server/webkit/WebViewUpdateService$BinderService;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
 HSPLcom/android/server/webkit/WebViewUpdateService;-><init>(Landroid/content/Context;)V
+PLcom/android/server/webkit/WebViewUpdateService;->access$000(Landroid/content/Intent;)Ljava/lang/String;
+HSPLcom/android/server/webkit/WebViewUpdateService;->access$100(Lcom/android/server/webkit/WebViewUpdateService;)Lcom/android/server/webkit/WebViewUpdateServiceImpl;
+PLcom/android/server/webkit/WebViewUpdateService;->entirePackageChanged(Landroid/content/Intent;)Z
 HSPLcom/android/server/webkit/WebViewUpdateService;->onStart()V
+PLcom/android/server/webkit/WebViewUpdateService;->packageNameFromIntent(Landroid/content/Intent;)Ljava/lang/String;
 HSPLcom/android/server/webkit/WebViewUpdateService;->prepareWebViewInSystemServer()V
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;-><clinit>()V
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V
 PLcom/android/server/webkit/WebViewUpdateServiceImpl;->dumpState(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->existsValidNonFallbackProvider([Landroid/webkit/WebViewProviderInfo;)Z
-PLcom/android/server/webkit/WebViewUpdateServiceImpl;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->getWebViewPackages()[Landroid/webkit/WebViewProviderInfo;
 HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleNewUser(I)V
-PLcom/android/server/webkit/WebViewUpdateServiceImpl;->isFallbackPackage(Ljava/lang/String;)Z
+PLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleUserChange()V
+PLcom/android/server/webkit/WebViewUpdateServiceImpl;->handleUserRemoved(I)V
 HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->isMultiProcessEnabled()Z
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->migrateFallbackStateOnBoot()V
 HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->notifyRelroCreationCompleted()V
-HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->packageStateChanged(Ljava/lang/String;II)V
+PLcom/android/server/webkit/WebViewUpdateServiceImpl;->packageStateChanged(Ljava/lang/String;II)V
 HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->prepareWebViewInSystemServer()V
-HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackState([Landroid/webkit/WebViewProviderInfo;)V
-HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->updateFallbackStateOnPackageChange(Ljava/lang/String;I)V
-PLcom/android/server/webkit/WebViewUpdateServiceImpl;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->startZygoteWhenReady()V
+HSPLcom/android/server/webkit/WebViewUpdateServiceImpl;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
+HSPLcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;-><init>(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)V
+HSPLcom/android/server/webkit/WebViewUpdater;-><clinit>()V
 HSPLcom/android/server/webkit/WebViewUpdater;-><init>(Landroid/content/Context;Lcom/android/server/webkit/SystemInterface;)V
 HSPLcom/android/server/webkit/WebViewUpdater;->checkIfRelrosDoneLocked()V
 PLcom/android/server/webkit/WebViewUpdater;->dumpAllPackageInformationLocked(Ljava/io/PrintWriter;)V
 PLcom/android/server/webkit/WebViewUpdater;->dumpState(Ljava/io/PrintWriter;)V
 HSPLcom/android/server/webkit/WebViewUpdater;->findPreferredWebViewPackage()Landroid/content/pm/PackageInfo;
-PLcom/android/server/webkit/WebViewUpdater;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
+HSPLcom/android/server/webkit/WebViewUpdater;->getCurrentWebViewPackage()Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/webkit/WebViewUpdater;->getMinimumVersionCode()J
 HSPLcom/android/server/webkit/WebViewUpdater;->getValidWebViewPackagesAndInfos()[Lcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;
 HSPLcom/android/server/webkit/WebViewUpdater;->isInstalledAndEnabledForAllUsers(Ljava/util/List;)Z
 HSPLcom/android/server/webkit/WebViewUpdater;->isValidProvider(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)Z
 HSPLcom/android/server/webkit/WebViewUpdater;->notifyRelroCreationCompleted()V
 HSPLcom/android/server/webkit/WebViewUpdater;->onWebViewProviderChanged(Landroid/content/pm/PackageInfo;)V
-HSPLcom/android/server/webkit/WebViewUpdater;->packageStateChanged(Ljava/lang/String;I)V
+PLcom/android/server/webkit/WebViewUpdater;->packageStateChanged(Ljava/lang/String;I)V
 HSPLcom/android/server/webkit/WebViewUpdater;->prepareWebViewInSystemServer()V
 HSPLcom/android/server/webkit/WebViewUpdater;->providerHasValidSignature(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;Lcom/android/server/webkit/SystemInterface;)Z
 PLcom/android/server/webkit/WebViewUpdater;->updateCurrentWebViewPackage(Ljava/lang/String;)Landroid/content/pm/PackageInfo;
 HSPLcom/android/server/webkit/WebViewUpdater;->validityResult(Landroid/webkit/WebViewProviderInfo;Landroid/content/pm/PackageInfo;)I
-PLcom/android/server/webkit/WebViewUpdater;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
-PLcom/android/server/wm/-$$Lambda$-OevXHSXgaSE351ZqRnMoA024MM;->run()V
+HSPLcom/android/server/webkit/WebViewUpdater;->versionCodeGE(JJ)Z
+HSPLcom/android/server/webkit/WebViewUpdater;->waitForAndGetProvider()Landroid/webkit/WebViewProviderResponse;
+HSPLcom/android/server/webkit/WebViewUpdater;->webViewIsReadyLocked()Z
+HPLcom/android/server/wm/-$$Lambda$-OevXHSXgaSE351ZqRnMoA024MM;-><init>(Lcom/android/server/wm/TaskSnapshotSurface;)V
+HPLcom/android/server/wm/-$$Lambda$-OevXHSXgaSE351ZqRnMoA024MM;->run()V
+PLcom/android/server/wm/-$$Lambda$-gsVbWDnbYC49FhjWBEWQbbGfCo;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$-gsVbWDnbYC49FhjWBEWQbbGfCo;-><init>()V
+PLcom/android/server/wm/-$$Lambda$-gsVbWDnbYC49FhjWBEWQbbGfCo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$-hxY8aP13MItXHILC9K9vyNQgr4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$-hxY8aP13MItXHILC9K9vyNQgr4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$-hxY8aP13MItXHILC9K9vyNQgr4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$2KrtdmjrY7Nagc4IRqzCk9gDuQU;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$3W4Y_XVQUddVKzLjibuHW7h0R1g;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$3W4Y_XVQUddVKzLjibuHW7h0R1g;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$6DEhn1zqxqV5_Ytb_NyzMW23Ano;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$6DEhn1zqxqV5_Ytb_NyzMW23Ano;->make()Landroid/view/Surface;
+HPLcom/android/server/wm/-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$1Hjf_Nn5x4aIy9rIBTwVrtrzWFA;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$1Hjf_Nn5x4aIy9rIBTwVrtrzWFA;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$1Hjf_Nn5x4aIy9rIBTwVrtrzWFA;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$1uR2GodW3-TXQGLlsV_nCi1hRIE;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$1uR2GodW3-TXQGLlsV_nCi1hRIE;-><init>()V
+PLcom/android/server/wm/-$$Lambda$1uR2GodW3-TXQGLlsV_nCi1hRIE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$1z_bkwouqOBIC89HKBNNqb1FoaY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$1z_bkwouqOBIC89HKBNNqb1FoaY;-><init>()V
+PLcom/android/server/wm/-$$Lambda$1z_bkwouqOBIC89HKBNNqb1FoaY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$2KrtdmjrY7Nagc4IRqzCk9gDuQU;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/-$$Lambda$2KrtdmjrY7Nagc4IRqzCk9gDuQU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$5JqEQmkxeln8TugmxHRkbeL4kzY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$5JqEQmkxeln8TugmxHRkbeL4kzY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$5JqEQmkxeln8TugmxHRkbeL4kzY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$5zunxFfSXQYpejvFiP3lO5a4GDY;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$5zunxFfSXQYpejvFiP3lO5a4GDY;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$5zunxFfSXQYpejvFiP3lO5a4GDY;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$5zz5Ugt4wxIXoNE3lZS6NA9z_Jk;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$5zz5Ugt4wxIXoNE3lZS6NA9z_Jk;-><init>()V
+PLcom/android/server/wm/-$$Lambda$5zz5Ugt4wxIXoNE3lZS6NA9z_Jk;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$6P_D-ul93Vzg9xx2hvWUdYrHVXg;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$6P_D-ul93Vzg9xx2hvWUdYrHVXg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$6P_D-ul93Vzg9xx2hvWUdYrHVXg;->get()Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$7nuK7cv058ES7c7refBFgc-jagk;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$7nuK7cv058ES7c7refBFgc-jagk;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$7nuK7cv058ES7c7refBFgc-jagk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$8ew6SY_v_7ex9pwFGDswbkGWuXc;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$8ew6SY_v_7ex9pwFGDswbkGWuXc;-><init>()V
+PLcom/android/server/wm/-$$Lambda$8ew6SY_v_7ex9pwFGDswbkGWuXc;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$99XNq73vh8e4HVH9BuxFhbLxKVY;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$99XNq73vh8e4HVH9BuxFhbLxKVY;-><init>()V
-PLcom/android/server/wm/-$$Lambda$99XNq73vh8e4HVH9BuxFhbLxKVY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$99XNq73vh8e4HVH9BuxFhbLxKVY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;->get()Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$ABB1r3i-Ua4IQKhbebsmnEGpWd8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ABB1r3i-Ua4IQKhbebsmnEGpWd8;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ABB1r3i-Ua4IQKhbebsmnEGpWd8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ADNhW0r9Skcs9ezrOGURijI-lyQ;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$ADNhW0r9Skcs9ezrOGURijI-lyQ;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$ADNhW0r9Skcs9ezrOGURijI-lyQ;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$vRhBz0DqTZWNemKfoIyId7HacTk;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$0lYHhsj1ibZMP6eUAxlwT_URn-4;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$DGh4oiUM74EvEwFf0Up59dk2u_I;->run()V
-PLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$xxgDrxthXaC_M25gC-YvHOsQ6yE;->run()V
+PLcom/android/server/wm/-$$Lambda$AccessibilityController$DisplayMagnifier$MagnifiedViewport$ZNyFGy-UXiWV1D2yZGvH-9qN0AA;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;Landroid/util/SparseArray;)V
+HPLcom/android/server/wm/-$$Lambda$AccessibilityController$DisplayMagnifier$MagnifiedViewport$ZNyFGy-UXiWV1D2yZGvH-9qN0AA;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$2C1tADzS58YZU_H5KqoEnZ2M57I;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$2C1tADzS58YZU_H5KqoEnZ2M57I;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$gS9b6G5QkV-2hX2iGcgQl5HPWws;-><init>(Ljava/util/List;)V
+HPLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$gS9b6G5QkV-2hX2iGcgQl5HPWws;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$n5Rg8WjCeBbjXNbZvPUlKzhx8Nw;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Ljava/util/List;)V
+HPLcom/android/server/wm/-$$Lambda$AccessibilityController$WindowsForAccessibilityObserver$n5Rg8WjCeBbjXNbZvPUlKzhx8Nw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$3JeUkmbe0mtunyS6P4HpkAkfKIY;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$3JeUkmbe0mtunyS6P4HpkAkfKIY;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$9gqV7SOtv0dBXWMri6Jpu47OdLc;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$9gqV7SOtv0dBXWMri6Jpu47OdLc;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$9gqV7SOtv0dBXWMri6Jpu47OdLc;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$MEjrvbJugXgttKs3lnAk7x7tVPc;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$MEjrvbJugXgttKs3lnAk7x7tVPc;->run()V
+HPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$fTBXciy3VZJ2vTW_ZJXaKfUj7_I;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$fTBXciy3VZJ2vTW_ZJXaKfUj7_I;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$l0oslVb5YyQhsmr7OXWV2whbXYU;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$l0oslVb5YyQhsmr7OXWV2whbXYU;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$sZFHZi7b6t6yjfx5mx3RtECSlEU;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$sZFHZi7b6t6yjfx5mx3RtECSlEU;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$sZFHZi7b6t6yjfx5mx3RtECSlEU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$HCzV5lDTWOurUvy4cOGaHiRsYqY;-><init>(Lcom/android/server/wm/ActivityRecord;[F[F)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$HCzV5lDTWOurUvy4cOGaHiRsYqY;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$QP-eHsXODaflS0pyRnr8fdoF6BU;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$QP-eHsXODaflS0pyRnr8fdoF6BU;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$QP-eHsXODaflS0pyRnr8fdoF6BU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$TmL40hmGhjc2_QavTI0gwtolvY8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$TmL40hmGhjc2_QavTI0gwtolvY8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$TmL40hmGhjc2_QavTI0gwtolvY8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$XnMxHSlbhK9x7qGQcZpHSkPOQvQ;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$XnMxHSlbhK9x7qGQcZpHSkPOQvQ;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$XnMxHSlbhK9x7qGQcZpHSkPOQvQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$YSVwd546vKWMiMYy7MFzg1qRiio;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$YSVwd546vKWMiMYy7MFzg1qRiio;->applyAppSaturation([F[F)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$YY5kCNb4uWg5W_2lbH3ZOqirP1g;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$YY5kCNb4uWg5W_2lbH3ZOqirP1g;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$YY5kCNb4uWg5W_2lbH3ZOqirP1g;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$gHNTxsqqXHTV3N7vXQjmY818XQI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$gHNTxsqqXHTV3N7vXQjmY818XQI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$gHNTxsqqXHTV3N7vXQjmY818XQI;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$jAKnTXYErEwplxJ5lQgj44-M9_c;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$jAKnTXYErEwplxJ5lQgj44-M9_c;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$jAKnTXYErEwplxJ5lQgj44-M9_c;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$lyqdJlA4QOn1CXj7zglxNJxDy9o;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/-$$Lambda$ActivityRecord$lyqdJlA4QOn1CXj7zglxNJxDy9o;->get()Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$prAsqx_JQJTqW1jNxmkuU3AV8AU;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$prAsqx_JQJTqW1jNxmkuU3AV8AU;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$prAsqx_JQJTqW1jNxmkuU3AV8AU;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$tt99EJHW_Nk5qgU9galJBIm5wXg;-><init>(Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityRecord$tt99EJHW_Nk5qgU9galJBIm5wXg;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$viEGm2vZbJCQ4-hdkomJCNYJiHU;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$viEGm2vZbJCQ4-hdkomJCNYJiHU;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityRecord$viEGm2vZbJCQ4-hdkomJCNYJiHU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityServiceConnectionsHolder$3WnpJbbvyxcEr6D6eCp22ebnxPk;-><init>(Lcom/android/server/wm/ActivityServiceConnectionsHolder;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityServiceConnectionsHolder$3WnpJbbvyxcEr6D6eCp22ebnxPk;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityServiceConnectionsHolder$E9W1qwLXBAwoppLfYj6pecVF_x8;-><init>(Lcom/android/server/wm/ActivityServiceConnectionsHolder;)V
 PLcom/android/server/wm/-$$Lambda$ActivityServiceConnectionsHolder$E9W1qwLXBAwoppLfYj6pecVF_x8;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityStack$7heVv97BezfdSlHS0oo3lugbypI;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityStack$zyjitBLHAavfEuJlAxXAMomewgA;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$0bNPw28X3N2biqQIdsnZuX7xaP4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$0bNPw28X3N2biqQIdsnZuX7xaP4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$0bNPw28X3N2biqQIdsnZuX7xaP4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$2g-Gmexz3kbCg6lRcnM6dKBTDYc;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/DisplayContent;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZI)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$2g-Gmexz3kbCg6lRcnM6dKBTDYc;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$4eA3orAXlhwXqOJQ8sydb6lzW_4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$4eA3orAXlhwXqOJQ8sydb6lzW_4;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$4eA3orAXlhwXqOJQ8sydb6lzW_4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$5VekJIJoJIh5JMUz2PkEx2YRfmo;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$5VekJIJoJIh5JMUz2PkEx2YRfmo;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$5VekJIJoJIh5JMUz2PkEx2YRfmo;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$8rl8kos6nVh_HCoMLzbQatFXfQM;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$8rl8kos6nVh_HCoMLzbQatFXfQM;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$8rl8kos6nVh_HCoMLzbQatFXfQM;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$9LPSm49BYrWURHV0f_s9bnJYnVk;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$9LPSm49BYrWURHV0f_s9bnJYnVk;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$9LPSm49BYrWURHV0f_s9bnJYnVk;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$BmRNRfPY9eDs_h7lUVkDfKuzXrA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$BmRNRfPY9eDs_h7lUVkDfKuzXrA;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$BmRNRfPY9eDs_h7lUVkDfKuzXrA;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$BqE10FCv9how7gdM55red1ApUGs;-><init>(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$BqE10FCv9how7gdM55red1ApUGs;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$Bw4s_aT8NefvklvOlavSngajM-8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$Bw4s_aT8NefvklvOlavSngajM-8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$Bw4s_aT8NefvklvOlavSngajM-8;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$CheckBehindFullscreenActivityHelper$hxEhv3lodv2mTq0c1tG208T2TSs;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$CheckBehindFullscreenActivityHelper$hxEhv3lodv2mTq0c1tG208T2TSs;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$CheckBehindFullscreenActivityHelper$hxEhv3lodv2mTq0c1tG208T2TSs;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$FkaZkaRIeozTqSdHkmYZNbNtF1I;-><init>(Lcom/android/server/wm/ActivityStack;IZZZZZ)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$FkaZkaRIeozTqSdHkmYZNbNtF1I;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$FmEEyG-_GV_nB2HunZ086MlsGbw;-><init>(Lcom/android/server/wm/ActivityRecord;[I[Landroid/content/Intent;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$FmEEyG-_GV_nB2HunZ086MlsGbw;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$ActivityStack$GDPUuzTvyfp2z6wYxqAF0vhMJK8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$GDPUuzTvyfp2z6wYxqAF0vhMJK8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$GDPUuzTvyfp2z6wYxqAF0vhMJK8;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$LjKdRo1XcwS4pEMN4TDnJTwl_Xs;-><init>(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$LjKdRo1XcwS4pEMN4TDnJTwl_Xs;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$MbOt7bGpxw9wmjZ8kOCkYcDCqMQ;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$MbOt7bGpxw9wmjZ8kOCkYcDCqMQ;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$MbOt7bGpxw9wmjZ8kOCkYcDCqMQ;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$McNymlK649VA6OMbsDYgFAkVJo8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$McNymlK649VA6OMbsDYgFAkVJo8;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$N2PfGF62p6Y1TYGt9lvFtsW9LmQ;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$N2PfGF62p6Y1TYGt9lvFtsW9LmQ;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$N2PfGF62p6Y1TYGt9lvFtsW9LmQ;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$ActivityStack$NfjvUUwVOB3bYUF_fHSaW6oHS94;-><init>(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$NfjvUUwVOB3bYUF_fHSaW6oHS94;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$RemoveHistoryRecordsForApp$8j2ZFLAwkXnwDAxiTFN7mMDLhjU;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$RemoveHistoryRecordsForApp$8j2ZFLAwkXnwDAxiTFN7mMDLhjU;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$RemoveHistoryRecordsForApp$8j2ZFLAwkXnwDAxiTFN7mMDLhjU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$TtiWgYBlSmpdH3zrFrJGnJ3IEn8;-><init>(Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$TtiWgYBlSmpdH3zrFrJGnJ3IEn8;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$U5MWhpArTVT_b8W6GtTa1Ao8HFs;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStack$U5MWhpArTVT_b8W6GtTa1Ao8HFs;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$U5MWhpArTVT_b8W6GtTa1Ao8HFs;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$VIuWlCdKwIo4qqRlevMLniedZ7o;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$VIuWlCdKwIo4qqRlevMLniedZ7o;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$VIuWlCdKwIo4qqRlevMLniedZ7o;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$W1rlXKcoaLb8UYskrF3gqMvOkRU;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$W1rlXKcoaLb8UYskrF3gqMvOkRU;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$W1rlXKcoaLb8UYskrF3gqMvOkRU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YAQEcQUrLqR06xiJJApMvOPIxhg;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YAQEcQUrLqR06xiJJApMvOPIxhg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$YAQEcQUrLqR06xiJJApMvOPIxhg;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YtJbVURmslxye4JS4EFo6X31Vv0;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YtJbVURmslxye4JS4EFo6X31Vv0;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YtJbVURmslxye4JS4EFo6X31Vv0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YwFMIPNkUBnV2uIqB9sZ47M__Og;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YwFMIPNkUBnV2uIqB9sZ47M__Og;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$YwFMIPNkUBnV2uIqB9sZ47M__Og;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$ZeqjtPeTSrJ3k2l6y2bUmw5uqo0;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$ZeqjtPeTSrJ3k2l6y2bUmw5uqo0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$bz2cGPwYAKpE4bX0VyxJRH8LJRE;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$bz2cGPwYAKpE4bX0VyxJRH8LJRE;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$bzlcMWlmDol-PMxBdUW69zw6n4Q;-><init>(ZLjava/io/PrintWriter;Ljava/io/FileDescriptor;ZZLjava/lang/String;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$bzlcMWlmDol-PMxBdUW69zw6n4Q;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$ccf0sRiFvFeqRiJQ6iXIEF1eN1Q;-><init>(Lcom/android/server/wm/ActivityStack;ZLjava/io/PrintWriter;Ljava/io/FileDescriptor;ZZLjava/lang/String;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityStack$ccf0sRiFvFeqRiJQ6iXIEF1eN1Q;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$dhfbladKtxXwwdCS2dFdAfUfBN4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$dhfbladKtxXwwdCS2dFdAfUfBN4;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$dhfbladKtxXwwdCS2dFdAfUfBN4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$n-w1s4z47M3zxF8atJ8fDCrw2CA;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/BoundsAnimationController;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$n-w1s4z47M3zxF8atJ8fDCrw2CA;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$vLTEw6nwtjcZ-ZyMktx8L5MR_TA;-><init>(Landroid/content/ComponentName;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$vLTEw6nwtjcZ-ZyMktx8L5MR_TA;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ActivityStack$xrtErRAEnS21CI3h4SKc_WzJFDA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStack$xrtErRAEnS21CI3h4SKc_WzJFDA;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$0u1RcpeZ6m0BHDGGv8EXroS3KyE;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStack;)V
 PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$0u1RcpeZ6m0BHDGGv8EXroS3KyE;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$28Zuzbi6usdgbDcOi8hrJg6nZO0;->run()V
-PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$PHIj4FpzoLIwUTmMRMOYA9us0rc;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$28Zuzbi6usdgbDcOi8hrJg6nZO0;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$28Zuzbi6usdgbDcOi8hrJg6nZO0;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$BFgD0ahFSDg4CqQNytqWrPRgFII;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$BFgD0ahFSDg4CqQNytqWrPRgFII;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$BFgD0ahFSDg4CqQNytqWrPRgFII;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$MoveTaskToFullscreenHelper$n0VOwWNM3mud17SnHip7XMiWlWE;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$MoveTaskToFullscreenHelper$n0VOwWNM3mud17SnHip7XMiWlWE;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$MoveTaskToFullscreenHelper$n0VOwWNM3mud17SnHip7XMiWlWE;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$PKLpVoHaca7ZAS9IjUCkoGIBtDw;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStack;Z)V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$PKLpVoHaca7ZAS9IjUCkoGIBtDw;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$iNb1-M_lYtbDycAXODgbDkmI9ww;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$iNb1-M_lYtbDycAXODgbDkmI9ww;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$mLKHIIzkTAK9QSlSxia8-84y15M;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$mLKHIIzkTAK9QSlSxia8-84y15M;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$mLKHIIzkTAK9QSlSxia8-84y15M;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityStartController$6bTAPCVeDq_D4Y53Y5WNfMK4xBE;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$ActivityStartController$6bTAPCVeDq_D4Y53Y5WNfMK4xBE;-><init>()V
-PLcom/android/server/wm/-$$Lambda$ActivityStarter$Zh66L6L9t3q506-4rrDCffLoOU8;-><init>(Lcom/android/server/wm/ActivityStarter;Ljava/lang/String;)V
-PLcom/android/server/wm/-$$Lambda$ActivityStarter$Zh66L6L9t3q506-4rrDCffLoOU8;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$-xFyZDUKMraVkermSJGXQdN3oJ4;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
 HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$-xFyZDUKMraVkermSJGXQdN3oJ4;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$3DTHgCAeEd5OOF7ACeXoCk8mmrQ;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$3DTHgCAeEd5OOF7ACeXoCk8mmrQ;-><init>()V
 PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$3DTHgCAeEd5OOF7ACeXoCk8mmrQ;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7Ia1bmRpPHHSNlbH8cuLw8dKG04;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7Ia1bmRpPHHSNlbH8cuLw8dKG04;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7ieG0s-7Zp4H2bLiWdOgB6MqhcI;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7ieG0s-7Zp4H2bLiWdOgB6MqhcI;-><init>()V
 PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7ieG0s-7Zp4H2bLiWdOgB6MqhcI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$BXul1K8BX6JEv_ff3NT76qpeZGQ;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$BXul1K8BX6JEv_ff3NT76qpeZGQ;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$Uli7s8UWTEj0IpBUtoST5bmgvKk;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$iduseKQrjIWQYD0hJ8Q5DMmuSfE;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$Uli7s8UWTEj0IpBUtoST5bmgvKk;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+HPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$Uli7s8UWTEj0IpBUtoST5bmgvKk;->run()V
+HPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$iduseKQrjIWQYD0hJ8Q5DMmuSfE;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+HPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$iduseKQrjIWQYD0hJ8Q5DMmuSfE;->run()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$js0zprxhKzo_Mx9ozR8logP_1-c;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityRecord;Landroid/app/PictureInPictureParams;)V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$js0zprxhKzo_Mx9ozR8logP_1-c;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$oP6xxIfnD4kb4JN7aSJU073ULR4;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZZ)V
 HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$oP6xxIfnD4kb4JN7aSJU073ULR4;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$p4I6RZJqLXjaEjdISFyNzjAe4HE;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ZLcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$p4I6RZJqLXjaEjdISFyNzjAe4HE;->run()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$AlertWindowNotification$ZuqSYML-X-nkNVTba_yeIT9hJ1s;-><init>(Lcom/android/server/wm/AlertWindowNotification;Z)V
 PLcom/android/server/wm/-$$Lambda$AlertWindowNotification$ZuqSYML-X-nkNVTba_yeIT9hJ1s;->run()V
+PLcom/android/server/wm/-$$Lambda$AlertWindowNotification$iVtcJMb6VtqtAgEtGUDCkGay0tM;-><init>(Lcom/android/server/wm/AlertWindowNotification;)V
 PLcom/android/server/wm/-$$Lambda$AlertWindowNotification$iVtcJMb6VtqtAgEtGUDCkGay0tM;->run()V
+PLcom/android/server/wm/-$$Lambda$AppTransition$9JtLlCXlArIsRNjLJ0_3RWFSHts;-><init>(Lcom/android/server/wm/AppTransition;Landroid/view/IAppTransitionAnimationSpecsFuture;)V
+PLcom/android/server/wm/-$$Lambda$AppTransition$9JtLlCXlArIsRNjLJ0_3RWFSHts;->run()V
+PLcom/android/server/wm/-$$Lambda$AppTransition$B95jxKE2FnT5RNLStTafenhEYj4;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$AppTransition$B95jxKE2FnT5RNLStTafenhEYj4;-><init>()V
 PLcom/android/server/wm/-$$Lambda$AppTransition$B95jxKE2FnT5RNLStTafenhEYj4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$AppTransition$xrq-Gwel_FcpfDvO2DrCfGN_3bk;-><init>(Lcom/android/server/wm/AppTransition;)V
 PLcom/android/server/wm/-$$Lambda$AppTransition$xrq-Gwel_FcpfDvO2DrCfGN_3bk;->run()V
-HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$ESsBJ2royCDDfelW3z7cgYH5q2I;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$ESsBJ2royCDDfelW3z7cgYH5q2I;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$YfQg1m68hbvcHoXbvzomyslzuaU;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$j4jrKo6PKtYRjRfPVQMMiQB02jg;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$j4jrKo6PKtYRjRfPVQMMiQB02jg;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$-fbAn0RqOBB6FcyKBQMt-QpZ1Ec;->run()V
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$JR7Cr936i7DlrzcjMaXdnVHq3NU;->run()V
-HSPLcom/android/server/wm/-$$Lambda$AppWindowToken$NwyjcPHhaxqkEKaJxeRVkzuWYXc;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$AppWindowToken$NwyjcPHhaxqkEKaJxeRVkzuWYXc;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$cwsF3cyeJjO4UiuaM07w8TBc698;->applyAppSaturation([F[F)V
-HSPLcom/android/server/wm/-$$Lambda$AppWindowToken$jUUD3GIacKfmiVanGs_Dyy3FFqI;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$AppWindowToken$jUUD3GIacKfmiVanGs_Dyy3FFqI;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$nF85SgNnIhRmVDk5ZRCmd3hL2jU;->get()Ljava/lang/Object;
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$q4coBLJ_h6za5tXaFxh-mXEdx0M;-><init>()V
-PLcom/android/server/wm/-$$Lambda$AppWindowToken$q4coBLJ_h6za5tXaFxh-mXEdx0M;->apply(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$KP68kgUCojUmpcFh_s6uhO2M93o;-><init>(Ljava/util/ArrayList;)V
+PLcom/android/server/wm/-$$Lambda$AppTransitionController$KP68kgUCojUmpcFh_s6uhO2M93o;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$ZU-2ppbyGJ7-UsXREbcW1x9TJH0;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$ZU-2ppbyGJ7-UsXREbcW1x9TJH0;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$ZU-2ppbyGJ7-UsXREbcW1x9TJH0;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$fJATtpiRgHjEgZVznt1dzW5Mwt0;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$fJATtpiRgHjEgZVznt1dzW5Mwt0;->run()V
+HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$o_nkoN7a-ZHaSAgJCQZcboKz9Ig;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$o_nkoN7a-ZHaSAgJCQZcboKz9Ig;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$o_nkoN7a-ZHaSAgJCQZcboKz9Ig;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$AppTransitionController$wKDCdmYJWN9Qk9bjArILV5j7lEY;-><init>(Lcom/android/server/wm/AppTransitionController;)V
+PLcom/android/server/wm/-$$Lambda$AppTransitionController$wKDCdmYJWN9Qk9bjArILV5j7lEY;->run()V
+HSPLcom/android/server/wm/-$$Lambda$AppTransitionController$z5kCoexPNTWFncmRBfeXr6HA2JA;-><init>(ILandroid/util/ArraySet;)V
+HPLcom/android/server/wm/-$$Lambda$AppTransitionController$z5kCoexPNTWFncmRBfeXr6HA2JA;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$B16jdo1lKUkQ4B7iWXwPKs2MAdg;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$B16jdo1lKUkQ4B7iWXwPKs2MAdg;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$B16jdo1lKUkQ4B7iWXwPKs2MAdg;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$B58NKEOrr2mhFWeS3bqpaZnd11o;-><init>(Lcom/android/server/wm/WindowManagerService$SettingsObserver;)V
 HSPLcom/android/server/wm/-$$Lambda$B58NKEOrr2mhFWeS3bqpaZnd11o;->run()V
+PLcom/android/server/wm/-$$Lambda$BEx3OWenCvYAaV5h_J2ZkZXhEcY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$BEx3OWenCvYAaV5h_J2ZkZXhEcY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$BEx3OWenCvYAaV5h_J2ZkZXhEcY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$BoundsAnimationController$3-yWz6AXIW5r1KElGtHEgHZdi5Q;-><init>(Lcom/android/server/wm/BoundsAnimationController;Landroid/animation/AnimationHandler;)V
 HSPLcom/android/server/wm/-$$Lambda$BoundsAnimationController$3-yWz6AXIW5r1KElGtHEgHZdi5Q;->run()V
+PLcom/android/server/wm/-$$Lambda$BoundsAnimationController$BoundsAnimator$eIPNx9WcD7moTPCByy2XhPMSdCs;-><init>(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)V
+PLcom/android/server/wm/-$$Lambda$BoundsAnimationController$BoundsAnimator$eIPNx9WcD7moTPCByy2XhPMSdCs;->run()V
+HPLcom/android/server/wm/-$$Lambda$BoundsAnimationController$MoVv_WhxoMrTVo-xz1qu2FMcYrM;-><init>(Lcom/android/server/wm/BoundsAnimationController;)V
 PLcom/android/server/wm/-$$Lambda$BoundsAnimationController$MoVv_WhxoMrTVo-xz1qu2FMcYrM;->run()V
-HSPLcom/android/server/wm/-$$Lambda$DZzr1xJVO2dSdamoKdlelCfv9o4;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$DZzr1xJVO2dSdamoKdlelCfv9o4;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$Dimmer$DimState$QYvwJex5H10MFMe0LEzEUs1b2G0;->run()V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$-XeeexVnAosqA0zfHVCT_Txqwl8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$05CtqlkxQvjLanO8D5BmaCdILKQ;-><init>()V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$05CtqlkxQvjLanO8D5BmaCdILKQ;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$0yxrqH9eGY2qTjH1u_BvaVrXCSA;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$1C_-u_mpQFfKL_O8K1VFzBgPg50;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$2HHBX1R6lnY5GedkE9LUBwsCPoE;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$2VlyMN8z2sOPqE9-yf-z3-peRMI;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$3g7y7M5XrDR3cz8tOp9f3pwWbyQ;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$5D_ifLpk7QwG-e9ZLZynNnDca9g;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$5D_ifLpk7QwG-e9ZLZynNnDca9g;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$DisplayContent$68_t-1mHyvN9aDP5Tt_BKUPoYT8;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$CD-g9zNm970tG9hCSQ-1BiBOrwY;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$CD-g9zNm970tG9hCSQ-1BiBOrwY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$CD-g9zNm970tG9hCSQ-1BiBOrwY;->applyAsInt(Ljava/lang/Object;)I
+PLcom/android/server/wm/-$$Lambda$CkqCuQmAGdLOVExbosZfF3sXdHQ;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$CkqCuQmAGdLOVExbosZfF3sXdHQ;->get()Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$CvWmQaXToMTllLb80KQ9WdJHYXo;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$CvWmQaXToMTllLb80KQ9WdJHYXo;->run()V
+HSPLcom/android/server/wm/-$$Lambda$DLUVMr0q4HDD6VD11G3xgCuJfHo;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$DLUVMr0q4HDD6VD11G3xgCuJfHo;-><init>()V
+PLcom/android/server/wm/-$$Lambda$DLUVMr0q4HDD6VD11G3xgCuJfHo;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DaFwIyqZTBVKE2y-TN2iE7CD-r8;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$DaFwIyqZTBVKE2y-TN2iE7CD-r8;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$DaFwIyqZTBVKE2y-TN2iE7CD-r8;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DeprecatedTargetSdkVersionDialog$TaeLH3pyy18K9h_WuSYLeQFy9Io;-><init>(Lcom/android/server/wm/DeprecatedTargetSdkVersionDialog;Lcom/android/server/wm/AppWarnings;)V
+PLcom/android/server/wm/-$$Lambda$DeprecatedTargetSdkVersionDialog$TaeLH3pyy18K9h_WuSYLeQFy9Io;->onClick(Landroid/content/DialogInterface;I)V
+PLcom/android/server/wm/-$$Lambda$DeprecatedTargetSdkVersionDialog$ZkWArfvd086vsF78_zwSd67uSUs;-><init>(Landroid/content/Context;Landroid/content/Intent;)V
+HPLcom/android/server/wm/-$$Lambda$Dimmer$DimState$QYvwJex5H10MFMe0LEzEUs1b2G0;-><init>(Lcom/android/server/wm/Dimmer$DimState;Lcom/android/server/wm/Dimmer$DimAnimatable;)V
+PLcom/android/server/wm/-$$Lambda$Dimmer$DimState$QYvwJex5H10MFMe0LEzEUs1b2G0;->run()V
+PLcom/android/server/wm/-$$Lambda$Dimmer$DimState$wU1YjYaM1_enRLsRLQ25SnC1ECw;-><init>(Lcom/android/server/wm/Dimmer$DimState;Lcom/android/server/wm/Dimmer$DimAnimatable;)V
+PLcom/android/server/wm/-$$Lambda$Dimmer$DimState$wU1YjYaM1_enRLsRLQ25SnC1ECw;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayArea$Tokens$m3rhEbIWQl888W_2uGBIkkXLdlA;-><init>(Lcom/android/server/wm/DisplayArea$Tokens;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayArea$Tokens$m3rhEbIWQl888W_2uGBIkkXLdlA;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$-t02M5j-NY8t_HMWggKym0SrI5k;-><init>([I[ILandroid/graphics/Region;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$-t02M5j-NY8t_HMWggKym0SrI5k;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$0DHYqZExqV37Iiw4M0GSqxCijHE;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$0DHYqZExqV37Iiw4M0GSqxCijHE;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$0gBMuAOGNBEAnJdXST73Nf88i7E;-><init>(Landroid/view/SurfaceControl$Transaction;IIZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$0gBMuAOGNBEAnJdXST73Nf88i7E;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$0yxrqH9eGY2qTjH1u_BvaVrXCSA;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$0yxrqH9eGY2qTjH1u_BvaVrXCSA;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$2VlyMN8z2sOPqE9-yf-z3-peRMI;-><init>(I)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$2VlyMN8z2sOPqE9-yf-z3-peRMI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayContent$4EwMMjZ5_EoQtEZ4VPJm9XUauJY;-><init>(Lcom/android/server/policy/WindowManagerPolicy;ZZZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$4EwMMjZ5_EoQtEZ4VPJm9XUauJY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$7Z9gsguOLtfXssJUALjgEsOLZoE;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$7Z9gsguOLtfXssJUALjgEsOLZoE;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$7Z9gsguOLtfXssJUALjgEsOLZoE;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayContent$7alf4NuxocTwmtWRy0_MvBepKoE;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$7alf4NuxocTwmtWRy0_MvBepKoE;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$7uZtakUXzuXqF_Qht5Uq7LUvubI;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$7uZtakUXzuXqF_Qht5Uq7LUvubI;->apply(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$7voe_dEKk2BYMriCvPuvaznb9WQ;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$7voe_dEKk2BYMriCvPuvaznb9WQ;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$BgTlvHbVclnASz-MrvERWxyMV-A;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$GuCKVzKP141d6J0gfRAjKtuBJUU;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$GuCKVzKP141d6J0gfRAjKtuBJUU;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$JYsrGdifTPH6ASJDC3B9YWMD2pw;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$BvG_N-oQ9idqqb6Bo2x0dq7gI5g;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$BvG_N-oQ9idqqb6Bo2x0dq7gI5g;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$D0QJUvhaQkGgoMtOmjw5foY9F8M;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$D0QJUvhaQkGgoMtOmjw5foY9F8M;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$Dg1quneQgytca0GgzUkUIFT67mk;-><init>(Landroid/view/SurfaceControl$Transaction;IIZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$Dg1quneQgytca0GgzUkUIFT67mk;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$DjwkABhnEVEEFPHXKA0QFcHdb2w;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$Ei1gEKrsGOVbEpUtkye4DxvMrow;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$Ei1gEKrsGOVbEpUtkye4DxvMrow;-><init>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$Ei1gEKrsGOVbEpUtkye4DxvMrow;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$GdYfLI7hkBs2XfGJkN6DbdzEs8U;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$GdYfLI7hkBs2XfGJkN6DbdzEs8U;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$Gs1I9c16qswnvvDSPXoEhteQcFM;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$Gs1I9c16qswnvvDSPXoEhteQcFM;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$JKV50ExZuoi3fuNRue0nZXh8ijA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$JKV50ExZuoi3fuNRue0nZXh8ijA;-><init>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$JKV50ExZuoi3fuNRue0nZXh8ijA;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayContent$JYsrGdifTPH6ASJDC3B9YWMD2pw;-><init>(I)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$JYsrGdifTPH6ASJDC3B9YWMD2pw;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$JibsaX4YnJd0ta_wiDDdSp-PjQk;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$JibsaX4YnJd0ta_wiDDdSp-PjQk;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$MTOrQ0uso5p3wixTLmDsYyck6h4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$MTOrQ0uso5p3wixTLmDsYyck6h4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$MTOrQ0uso5p3wixTLmDsYyck6h4;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$FI_O7m2qEDfIRZef3D32AxG-rcs;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$FI_O7m2qEDfIRZef3D32AxG-rcs;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$FI_O7m2qEDfIRZef3D32AxG-rcs;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$nqCymC3xR9b3qaeohnnJJpSiajc;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/wm/-$$Lambda$DisplayContent$TPj3OjTsuIg5GTLb5nMmFqIghA4;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$rQnI0Y8R9ptQ09cGHwbCHDiG2FY;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$_XfE1uZ9VUv6i0SxWUvqu69FNb4;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$FI_O7m2qEDfIRZef3D32AxG-rcs;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$m2B7QqNQSZc7N5DejF0qGwn6Pck;-><init>(Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$m2B7QqNQSZc7N5DejF0qGwn6Pck;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$nqCymC3xR9b3qaeohnnJJpSiajc;-><init>(Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$nqCymC3xR9b3qaeohnnJJpSiajc;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/-$$Lambda$DisplayContent$O9XflhhULqGeDab0OHXXGq_DSlU;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$O9XflhhULqGeDab0OHXXGq_DSlU;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$O9XflhhULqGeDab0OHXXGq_DSlU;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$SeHNTr4WUVpGmQniHULUi1ST7k8;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$SeHNTr4WUVpGmQniHULUi1ST7k8;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$TPj3OjTsuIg5GTLb5nMmFqIghA4;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$TPj3OjTsuIg5GTLb5nMmFqIghA4;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$O93kVOZBPruBUoIqFi--Pvv3DF0;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$O93kVOZBPruBUoIqFi--Pvv3DF0;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$sOc7NEp-0tqs2Dj7F4JTNjgQacU;-><init>(Lcom/android/server/wm/DisplayContent$TaskContainers;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$sOc7NEp-0tqs2Dj7F4JTNjgQacU;->onPreAssignChildLayers()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskForResizePointSearchResult$1FHFJXiYTNFcgi5tiBrxzbmjdWw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskForResizePointSearchResult$1FHFJXiYTNFcgi5tiBrxzbmjdWw;-><init>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskForResizePointSearchResult$1FHFJXiYTNFcgi5tiBrxzbmjdWw;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$5H3Kr211kTMg-C28tapuQGzkwN8;-><init>(Lcom/android/server/wm/DisplayContent$TaskStackContainers;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$5H3Kr211kTMg-C28tapuQGzkwN8;->onPreAssignChildLayers()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$rQnI0Y8R9ptQ09cGHwbCHDiG2FY;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$rQnI0Y8R9ptQ09cGHwbCHDiG2FY;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$Ufn2ZjVS0i1L8aeQ8GZMJNJfmcY;-><init>(Lcom/android/server/policy/WindowManagerPolicy;ZZZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$Ufn2ZjVS0i1L8aeQ8GZMJNJfmcY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$YcKsbDd5rrFH1MI8pTOCMIM0mNY;-><init>([III)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$YcKsbDd5rrFH1MI8pTOCMIM0mNY;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$_XfE1uZ9VUv6i0SxWUvqu69FNb4;-><init>(Lcom/android/server/wm/DisplayContent;II)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$_XfE1uZ9VUv6i0SxWUvqu69FNb4;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$a4EkCBfpZNIl1xfYgm2ktgndF8w;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$a4EkCBfpZNIl1xfYgm2ktgndF8w;->apply(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$cDcvMzGxc6XW13Q8FrU5X4DagqE;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$cDcvMzGxc6XW13Q8FrU5X4DagqE;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$cDcvMzGxc6XW13Q8FrU5X4DagqE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$dcSGCWAJtdQoc69foFpUzYoTn2I;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;[I)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$dcSGCWAJtdQoc69foFpUzYoTn2I;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$eJsj3GR1HdCnOJrZ8_oaLP52jg0;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$eJsj3GR1HdCnOJrZ8_oaLP52jg0;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$fiC19lMy-d_-rvza7hhOSw6bOM8;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$fiC19lMy-d_-rvza7hhOSw6bOM8;->compute(Ljava/lang/Object;I)Ljava/lang/Object;
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$hRKjZwmneu0T85LNNY6_Zcs4gKM;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$iSsga4uJnJzBuUddn6uWEUo6xO8;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$jJlRHCiYzTPceX3tUkQ_1wUz71E;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$DisplayContent$oqhmXZMcpcvgI50swQTzosAcjac;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$gpAoT7pBNdi6jYEHs_L3kzaRF0g;-><init>([I[ILandroid/graphics/Region;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$gpAoT7pBNdi6jYEHs_L3kzaRF0g;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$hRKjZwmneu0T85LNNY6_Zcs4gKM;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$hRKjZwmneu0T85LNNY6_Zcs4gKM;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$k7ctHGhg6DCeupTBZO8cyEJDjLM;-><init>(Lcom/android/server/wm/DisplayContent;Z)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$k7ctHGhg6DCeupTBZO8cyEJDjLM;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$mRojqgB8byVtZRzyTl2qSRFPgIo;-><init>(I)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$mRojqgB8byVtZRzyTl2qSRFPgIo;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayContent$n90JauAfTfQVesyRzx0-TX7s1LM;-><init>([III)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$n90JauAfTfQVesyRzx0-TX7s1LM;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$nUI_QDRGnWH0dX0j3xt2TTkrvZw;-><init>(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$nUI_QDRGnWH0dX0j3xt2TTkrvZw;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$olEtDzkJbp6PCECUFtRISV0LCpk;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$olEtDzkJbp6PCECUFtRISV0LCpk;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$qT01Aq6xt_ZOs86A1yDQe-qmPFQ;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$qT01Aq6xt_ZOs86A1yDQe-qmPFQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$qxt4izS31fb0LF2uo_OF9DMa7gc;-><init>(Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/-$$Lambda$DisplayContent$qxt4izS31fb0LF2uo_OF9DMa7gc;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayContent$vn2WRFHoZv7DB3bbwsmraKDpl0I;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$DisplayPolicy$2k2wF7mmwjs9mN1gLPMFOf0lfXY;->run()V
-PLcom/android/server/wm/-$$Lambda$DisplayPolicy$YTG-tgpIgw-tXxRzJfeZhHP--Ag;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
-HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$n40v5T_KP7EALj7NP3i_hv76V5o;->run()V
-HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$xlVRxCROc8UPmV4pH747oZzvS58;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$sYPOy6TL-QiWuU_jcEHYn4HeFnQ;-><init>(II)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$sYPOy6TL-QiWuU_jcEHYn4HeFnQ;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$vehcSAr5hQ3Q5gWBUB0K8yByHXQ;-><init>(Lcom/android/server/wm/DisplayContent;Z)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$vehcSAr5hQ3Q5gWBUB0K8yByHXQ;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$w9ep5dwa3CsKsu0rpKSQwF-60A4;-><init>(II)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$w9ep5dwa3CsKsu0rpKSQwF-60A4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$x9QSHnWitjvGOC1SnurRP5ASz48;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/util/SparseBooleanArray;)V
+PLcom/android/server/wm/-$$Lambda$DisplayContent$x9QSHnWitjvGOC1SnurRP5ASz48;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$DisplayContent$xDPfsCNl85pDNmgsKEQVqdUehiA;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayContent$xDPfsCNl85pDNmgsKEQVqdUehiA;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$-jer63nl4BagHUaTYzlDJxk8xIU;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$-jer63nl4BagHUaTYzlDJxk8xIU;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$-jer63nl4BagHUaTYzlDJxk8xIU;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$3MnyIKSHFLqhfUifWEQPNp_-J6A;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$3MnyIKSHFLqhfUifWEQPNp_-J6A;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$9Q7foUL8MStILLFmJNfN48-WaJM;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$9Q7foUL8MStILLFmJNfN48-WaJM;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$AdQlGK4do0LfpQJmOnIuKqDwp0Y;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$AdQlGK4do0LfpQJmOnIuKqDwp0Y;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$DaI-u7gKDqJtPizmW-_eQ3hO-BU;-><init>(Lcom/android/server/wm/DisplayPolicy;ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$DaI-u7gKDqJtPizmW-_eQ3hO-BU;->run()V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$FpQuLkFb2EnHvk4Uzhr9G5Rn_xI;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$FpQuLkFb2EnHvk4Uzhr9G5Rn_xI;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$HbdRZfPpJ53Wnk7_Ueb0ycyz_AQ;-><init>(Lcom/android/server/wm/DisplayPolicy;ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$HbdRZfPpJ53Wnk7_Ueb0ycyz_AQ;->run()V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$IOyP8YVRG92tn9u1muYWZgBbgc0;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$IOyP8YVRG92tn9u1muYWZgBbgc0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$J8sIwXJvltUaPM3jEGO948Bx9ig;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$J8sIwXJvltUaPM3jEGO948Bx9ig;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$LFEaXRr2IF3nhPJdP5h3swIhnus;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$LFEaXRr2IF3nhPJdP5h3swIhnus;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$LkHee4mchNXMwNt7HLgsMzHofeE;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$LkHee4mchNXMwNt7HLgsMzHofeE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$P8D337iYIcX04InNbwQCJWD0nmU;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$P8D337iYIcX04InNbwQCJWD0nmU;->run()V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$QDPgWUhyEOraWnf6a-u4mTBttdw;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$QDPgWUhyEOraWnf6a-u4mTBttdw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$XssW_Qm0L7CsznkQYKBfWrF7PU4;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$XssW_Qm0L7CsznkQYKBfWrF7PU4;->run()V
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$_FsvHpVUi-gbWmSpT009cJNNmgM;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$bT9mjfT_DJVx_BBfkRPXHf6mfWE;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$bT9mjfT_DJVx_BBfkRPXHf6mfWE;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$j3sY1jb4WFF_F3wOT9D2fB2mOts;-><init>(Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/WindowManagerService;I)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$m-UPXUZKrPpeFUjrauzoJMNbYjM;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$m-UPXUZKrPpeFUjrauzoJMNbYjM;->run()V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$nrBrmKRLvJQjdv_P6oPT7D0GGW8;-><init>(Lcom/android/server/wm/DisplayPolicy;ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$nrBrmKRLvJQjdv_P6oPT7D0GGW8;->run()V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$pqtzqy0ti-csynvTP9P1eQUE-gE;-><init>(I)V
+HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$pqtzqy0ti-csynvTP9P1eQUE-gE;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$rio2so8uuvIt5iXObo83p1LyRwA;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$rio2so8uuvIt5iXObo83p1LyRwA;->run()V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$rkGhPuV8zWnPuCUXhzLY40zhjLk;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/-$$Lambda$DisplayPolicy$rkGhPuV8zWnPuCUXhzLY40zhjLk;->createInputEventReceiver(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$wrdG81IaCZoCL0YqumBunZu5DyM;-><init>(Lcom/android/server/wm/DisplayPolicy;ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HSPLcom/android/server/wm/-$$Lambda$DisplayPolicy$wrdG81IaCZoCL0YqumBunZu5DyM;->run()V
+PLcom/android/server/wm/-$$Lambda$DisplayRotation$2$pp3jOG1BWDI3rPQ3oFXammeS5Tg;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayRotation$2$pp3jOG1BWDI3rPQ3oFXammeS5Tg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayRotation$2$pp3jOG1BWDI3rPQ3oFXammeS5Tg;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayRotation$UvDbz_yyBKmo2Ump2uc0fobRTmg;-><init>(Lcom/android/server/wm/DisplayRotation;[Z)V
+HPLcom/android/server/wm/-$$Lambda$DisplayRotation$UvDbz_yyBKmo2Ump2uc0fobRTmg;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DisplayRotation$q2wjcSMbrixEIlIR6-WoSLJ1j-g;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$DisplayRotation$q2wjcSMbrixEIlIR6-WoSLJ1j-g;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$DisplayRotation$q2wjcSMbrixEIlIR6-WoSLJ1j-g;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$DragState$-yUFIMrhYYccZ0gwd6eVcpAE93o;-><init>(Lcom/android/server/wm/DragState;FF)V
 PLcom/android/server/wm/-$$Lambda$DragState$-yUFIMrhYYccZ0gwd6eVcpAE93o;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$DragState$4E4tzlfJ9AKYEiVk7F8SFlBLwPc;-><init>(Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/-$$Lambda$DragState$4E4tzlfJ9AKYEiVk7F8SFlBLwPc;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ERD-2J5ieyabZSu134oI85tDnME;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$ERD-2J5ieyabZSu134oI85tDnME;-><init>()V
+PLcom/android/server/wm/-$$Lambda$ERD-2J5ieyabZSu134oI85tDnME;->startAnimation(Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/-$$Lambda$EmbeddedWindowController$Q0HHIdTKm8MX4DsCYgzZ2UOUXPQ;-><init>(Lcom/android/server/wm/EmbeddedWindowController;Landroid/os/IBinder;)V
+HSPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$uAeEWwx5d0xk6FKOvvR9CXZS6Bg;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$uAeEWwx5d0xk6FKOvvR9CXZS6Bg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$uAeEWwx5d0xk6FKOvvR9CXZS6Bg;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$FvpUGL5umwa8cY7p8SB7VV6jxQU;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$FvpUGL5umwa8cY7p8SB7VV6jxQU;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$FvpUGL5umwa8cY7p8SB7VV6jxQU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$G7MFeOBgoCefJGCDIl_j8uFkMZI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$G7MFeOBgoCefJGCDIl_j8uFkMZI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$G7MFeOBgoCefJGCDIl_j8uFkMZI;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$HLz_SQuxQoIiuaK5SB5xJ6FnoxY;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$HLz_SQuxQoIiuaK5SB5xJ6FnoxY;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$HLz_SQuxQoIiuaK5SB5xJ6FnoxY;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$HtepUMgqPLKO-76U6SMEmchALsM;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$HtepUMgqPLKO-76U6SMEmchALsM;-><init>()V
+PLcom/android/server/wm/-$$Lambda$HtepUMgqPLKO-76U6SMEmchALsM;->startAnimation(Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZLjava/lang/Runnable;)V
+PLcom/android/server/wm/-$$Lambda$IamNNBZp056cXLajnE4zHKSqj-c;-><init>(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/-$$Lambda$IamNNBZp056cXLajnE4zHKSqj-c;->get()Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$InputMonitor$ew_vdS116C6DH9LxWaTuVXJYZPE;-><init>(Lcom/android/server/wm/InputMonitor;)V
+PLcom/android/server/wm/-$$Lambda$InputMonitor$ew_vdS116C6DH9LxWaTuVXJYZPE;->run()V
+PLcom/android/server/wm/-$$Lambda$InsetsPolicy$LCR2QgJZxbNat6Qb0Be-JDpy3i0;-><init>(Lcom/android/server/wm/InsetsPolicy;)V
+PLcom/android/server/wm/-$$Lambda$InsetsPolicy$rhM012fDRQZs2vWOctMZZ_uSXvc;-><init>(Lcom/android/server/wm/InsetsPolicy;)V
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$1JYO8QVhePzczEaYmXV0veAcadI;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$1JYO8QVhePzczEaYmXV0veAcadI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$InsetsStateController$EieWndHHWtNpBtJoK2U-TZ_RU2A;-><init>(Lcom/android/server/wm/InsetsStateController;)V
+PLcom/android/server/wm/-$$Lambda$InsetsStateController$EieWndHHWtNpBtJoK2U-TZ_RU2A;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$c8m0K1Ykk6OHrDEJKWFPmp5WxKU;-><init>(Lcom/android/server/wm/InsetsStateController;)V
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$c8m0K1Ykk6OHrDEJKWFPmp5WxKU;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$pXoYGy4X5aPw1QFi0iIWKiTMlDg;-><init>(Lcom/android/server/wm/InsetsStateController;)V
 HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$pXoYGy4X5aPw1QFi0iIWKiTMlDg;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$sIYEJIR4ztgffCLMi5Z1RvdxyYs;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$sIYEJIR4ztgffCLMi5Z1RvdxyYs;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$InsetsStateController$sIYEJIR4ztgffCLMi5Z1RvdxyYs;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$LYW1ECaEajjYgarzgKdTZ4O1fi0;->run()V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$InsetsStateController$sIYEJIR4ztgffCLMi5Z1RvdxyYs;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$JTKQBRuxxgBAO5y04IFnI4psyA4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$JTKQBRuxxgBAO5y04IFnI4psyA4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$JTKQBRuxxgBAO5y04IFnI4psyA4;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$LYW1ECaEajjYgarzgKdTZ4O1fi0;-><init>(Landroid/app/ActivityManagerInternal;)V
+HPLcom/android/server/wm/-$$Lambda$LYW1ECaEajjYgarzgKdTZ4O1fi0;->run()V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$FhvLqBbd_XMsJK45WV5Mlt8JSYM;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$FhvLqBbd_XMsJK45WV5Mlt8JSYM;-><init>()V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$FhvLqBbd_XMsJK45WV5Mlt8JSYM;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$UGY1OclnLIQLMEL9B55qjERFf4o;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$UGY1OclnLIQLMEL9B55qjERFf4o;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$UGY1OclnLIQLMEL9B55qjERFf4o;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$iVXZh14_jAo_Gegs5q3ygQDW-ow;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$iVXZh14_jAo_Gegs5q3ygQDW-ow;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$kM3MnXbSpyNkUV4eUyr4OwWCqqA;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$kM3MnXbSpyNkUV4eUyr4OwWCqqA;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$lAGPwfsXJvBWsyG2rbEfo3sTv34;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$lAGPwfsXJvBWsyG2rbEfo3sTv34;-><init>()V
 PLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$lAGPwfsXJvBWsyG2rbEfo3sTv34;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$X--EomqUvw4qy89IeeTFTH7aCMo;->run()V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$pWUDt4Ot3BWLJOTAhXMkkhHUhpc;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$pWUDt4Ot3BWLJOTAhXMkkhHUhpc;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$pWUDt4Ot3BWLJOTAhXMkkhHUhpc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$veRn_GhgLZLlOHOJ0ZYT6KcfYqo;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$veRn_GhgLZLlOHOJ0ZYT6KcfYqo;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$veRn_GhgLZLlOHOJ0ZYT6KcfYqo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$LaunchParamsPersister$Rc1cXPLhXa2WPSr18Q9-Xc7SdV8;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$X--EomqUvw4qy89IeeTFTH7aCMo;-><init>(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$X--EomqUvw4qy89IeeTFTH7aCMo;->run()V
+HPLcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$zbLki1x5Fhwh-g7q-dA43aw6Y4M;-><init>(Lcom/android/server/wm/LocalAnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+HPLcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$zbLki1x5Fhwh-g7q-dA43aw6Y4M;->run()V
+PLcom/android/server/wm/-$$Lambda$LockTaskController$NMEqFdnoSJ8A7QRxQO-ZoqXOmVc;-><init>(Lcom/android/server/wm/LockTaskController;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/-$$Lambda$LockTaskController$NMEqFdnoSJ8A7QRxQO-ZoqXOmVc;->run()V
+PLcom/android/server/wm/-$$Lambda$LockTaskController$mYEdosOvuhEWdcYLQrOC83U4Wms;-><init>(Lcom/android/server/wm/LockTaskController;Landroid/content/Intent;Lcom/android/server/wm/Task;I)V
+PLcom/android/server/wm/-$$Lambda$LockTaskController$mYEdosOvuhEWdcYLQrOC83U4Wms;->run()V
+PLcom/android/server/wm/-$$Lambda$MGgYXq0deCsjjGP-28PM6ahiI2U;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$MGgYXq0deCsjjGP-28PM6ahiI2U;-><init>()V
+PLcom/android/server/wm/-$$Lambda$MGgYXq0deCsjjGP-28PM6ahiI2U;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$OPdXuZQLetMnocdH6XV32JbNQ3I;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$OPdXuZQLetMnocdH6XV32JbNQ3I;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$OPdXuZQLetMnocdH6XV32JbNQ3I;->getSystemDirectoryForUser(I)Ljava/io/File;
+HPLcom/android/server/wm/-$$Lambda$OPdXuZQLetMnocdH6XV32JbNQ3I;->getSystemDirectoryForUser(I)Ljava/io/File;
+HSPLcom/android/server/wm/-$$Lambda$OuObUsm0bB9g5X0kIXYkBYHvodY;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$OuObUsm0bB9g5X0kIXYkBYHvodY;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$OuObUsm0bB9g5X0kIXYkBYHvodY;->apply(I)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$OuObUsm0bB9g5X0kIXYkBYHvodY;->apply(I)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$PendingRemoteAnimationRegistry$Entry$giivzkMgzIxukCXvO2EVzLb0oxo;-><init>(Lcom/android/server/wm/PendingRemoteAnimationRegistry$Entry;Ljava/lang/String;)V
 PLcom/android/server/wm/-$$Lambda$PendingRemoteAnimationRegistry$Entry$giivzkMgzIxukCXvO2EVzLb0oxo;->run()V
+HSPLcom/android/server/wm/-$$Lambda$PersisterQueue$HOTPBvinkMOqT3zxV3gRm6Y9Wi4;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$PersisterQueue$HOTPBvinkMOqT3zxV3gRm6Y9Wi4;-><init>()V
 PLcom/android/server/wm/-$$Lambda$PersisterQueue$HOTPBvinkMOqT3zxV3gRm6Y9Wi4;->process()V
-HSPLcom/android/server/wm/-$$Lambda$PinnedStackController$PinnedStackControllerCallback$MdGjZinCTxKrX3GJTl1CXkAuFro;->run()V
-HSPLcom/android/server/wm/-$$Lambda$RecentTasks$KPkDUQ9KJ-vmXlmV8HHAucQJJdQ;-><init>()V
-PLcom/android/server/wm/-$$Lambda$RecentsAnimation$-wmjRW3SbUL05VbZ7U49czED0C0;->run()V
-PLcom/android/server/wm/-$$Lambda$RecentsAnimation$e3kosml-870P6Bh_K_Z_6yyLHZk;->run()V
-PLcom/android/server/wm/-$$Lambda$RecentsAnimation$maWFdp-vN04gpjsVfJu49wyo8hQ;->run()V
-PLcom/android/server/wm/-$$Lambda$RemoteAnimationController$f_Hsu4PN7pGOiq9Nl8vxzEA3wa0;->run()V
+PLcom/android/server/wm/-$$Lambda$Pl4__K9hqf4p4lme99AnaMrbXe0;-><init>(Landroid/app/ActivityManagerInternal;)V
+PLcom/android/server/wm/-$$Lambda$Pl4__K9hqf4p4lme99AnaMrbXe0;->run()V
+PLcom/android/server/wm/-$$Lambda$PyL9QAXbv8yta3wX2VTGq8fFFo4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$PyL9QAXbv8yta3wX2VTGq8fFFo4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$PyL9QAXbv8yta3wX2VTGq8fFFo4;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$QEISWTQzWbgxRMT5rMnIEzpsKpc;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$QEISWTQzWbgxRMT5rMnIEzpsKpc;-><init>()V
+PLcom/android/server/wm/-$$Lambda$QEISWTQzWbgxRMT5rMnIEzpsKpc;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$RecentTasks$1$yqVuu6fkQgjlTTs6kgJbxqq3Hng;-><init>(Lcom/android/server/wm/RecentTasks$1;III)V
+PLcom/android/server/wm/-$$Lambda$RecentTasks$1$yqVuu6fkQgjlTTs6kgJbxqq3Hng;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RecentTasks$eaeTjEEoVsLAhHFPccdtbbB3Lrk;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RecentTasks$eaeTjEEoVsLAhHFPccdtbbB3Lrk;-><init>()V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimation$L-oo1O0uvOIOr4MDh9QYSeVU09U;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimation$L-oo1O0uvOIOr4MDh9QYSeVU09U;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimation$L-oo1O0uvOIOr4MDh9QYSeVU09U;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimation$reh_wG2afVmsOkGOZzt-QbWe4gE;-><init>(Lcom/android/server/wm/RecentsAnimation;IZLcom/android/server/wm/RecentsAnimationController;)V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimation$reh_wG2afVmsOkGOZzt-QbWe4gE;->run()V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimationController$4jQqaDgSmtGCjbUJiVoDh_jr9rY;-><init>(Lcom/android/server/wm/RecentsAnimationController;)V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$4jQqaDgSmtGCjbUJiVoDh_jr9rY;->run()V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$EI4Oe4vlsDKieYi6iTTlm_g_DcI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$EI4Oe4vlsDKieYi6iTTlm_g_DcI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimationController$EI4Oe4vlsDKieYi6iTTlm_g_DcI;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$e-cTibokWXD_fkqfXQhiQOEXBkQ;-><init>(Lcom/android/server/wm/RecentsAnimationController;I)V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$e-cTibokWXD_fkqfXQhiQOEXBkQ;->run()V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimationController$j5cfzBzoc-2KFpZ5MiHSgWihq-Y;-><init>(Lcom/android/server/wm/RecentsAnimationController;)V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$j5cfzBzoc-2KFpZ5MiHSgWihq-Y;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$jw5vdNcR7ME-ta1B7JaOAiF7wKw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RecentsAnimationController$jw5vdNcR7ME-ta1B7JaOAiF7wKw;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RecentsAnimationController$jw5vdNcR7ME-ta1B7JaOAiF7wKw;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$74uuXaM2TqjkzYi0b8LqJdbycxA;-><init>(Lcom/android/server/wm/RemoteAnimationController;[Landroid/view/RemoteAnimationTarget;[Landroid/view/RemoteAnimationTarget;)V
+HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$74uuXaM2TqjkzYi0b8LqJdbycxA;->run()V
+HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$dP8qDptNigoqhzVtIudsX5naGu4;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
+PLcom/android/server/wm/-$$Lambda$RemoteAnimationController$dP8qDptNigoqhzVtIudsX5naGu4;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$uQS8vaPKQ-E3x_9G8NCxPQmw1fw;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
 PLcom/android/server/wm/-$$Lambda$RemoteAnimationController$uQS8vaPKQ-E3x_9G8NCxPQmw1fw;->run()V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$23pwwW6UxTvkQOxdAnZ9yLl8pS0;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$52o5lSf6FWvRXCAmDBM_O5nRSXM;-><init>()V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$52o5lSf6FWvRXCAmDBM_O5nRSXM;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$IlD1lD49ui7gQmU2NkxgnXIhlOo;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$APiSnEpUwnLFg5o4cp87NyJw4j4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$APiSnEpUwnLFg5o4cp87NyJw4j4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$APiSnEpUwnLFg5o4cp87NyJw4j4;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$O-Gmp4WswvLHsJ0Qd1g0pv2tF14;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$O-Gmp4WswvLHsJ0Qd1g0pv2tF14;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$O-Gmp4WswvLHsJ0Qd1g0pv2tF14;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$-T1KVP2TtHv3l0Zlmfrn4vxoQQc;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$-T1KVP2TtHv3l0Zlmfrn4vxoQQc;-><init>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$-T1KVP2TtHv3l0Zlmfrn4vxoQQc;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$9O6SlwnVdOQOeIhS3piXF8cKYuc;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$9O6SlwnVdOQOeIhS3piXF8cKYuc;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$9O6SlwnVdOQOeIhS3piXF8cKYuc;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$FinishDisabledPackageActivitiesHelper$9-v97dlGzOZFE2uue1WUlIhpevA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$FinishDisabledPackageActivitiesHelper$9-v97dlGzOZFE2uue1WUlIhpevA;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$FinishDisabledPackageActivitiesHelper$9-v97dlGzOZFE2uue1WUlIhpevA;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$RootActivityContainer$eTBwQBLMAzyK1I2vbgH_wbrf5n0;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootActivityContainer$eTBwQBLMAzyK1I2vbgH_wbrf5n0;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$eTBwQBLMAzyK1I2vbgH_wbrf5n0;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$fHk49MMjn6AhjkanMrllHlVnoy0;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$fHk49MMjn6AhjkanMrllHlVnoy0;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$fHk49MMjn6AhjkanMrllHlVnoy0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$kAsUts9ICoBFeiu2wLtN3N0jVY4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$kAsUts9ICoBFeiu2wLtN3N0jVY4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$kAsUts9ICoBFeiu2wLtN3N0jVY4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootActivityContainer$m1XaUaXYDseEoG-rccxbUydXgO8;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootActivityContainer$m1XaUaXYDseEoG-rccxbUydXgO8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$m1XaUaXYDseEoG-rccxbUydXgO8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$xJQTdvTIrdue_psRt_XJNwTCmzA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootActivityContainer$xJQTdvTIrdue_psRt_XJNwTCmzA;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootActivityContainer$xJQTdvTIrdue_psRt_XJNwTCmzA;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$-XbbIpkF4p2mF3v0qeXeat-_w3E;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$-XbbIpkF4p2mF3v0qeXeat-_w3E;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$-XbbIpkF4p2mF3v0qeXeat-_w3E;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$0ZupnQyxl7yZKgMmf2zwvykG50s;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$0ZupnQyxl7yZKgMmf2zwvykG50s;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$0ZupnQyxl7yZKgMmf2zwvykG50s;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$0aCEx04eIvMHmZVtI4ucsiK5s9I;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$0aCEx04eIvMHmZVtI4ucsiK5s9I;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$0aCEx04eIvMHmZVtI4ucsiK5s9I;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$3VVFoec4x74e1MMAq03gYI9kKjo;-><init>(IZ)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$3VVFoec4x74e1MMAq03gYI9kKjo;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$5fbF65VSmaJkPHxEhceOGTat7JE;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$5fbF65VSmaJkPHxEhceOGTat7JE;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$5fbF65VSmaJkPHxEhceOGTat7JE;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$7XcqfZjQLAbjpIyed3iDnVtZro4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$7XcqfZjQLAbjpIyed3iDnVtZro4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$7XcqfZjQLAbjpIyed3iDnVtZro4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$9Gi6QLDM5W-SF-EH_zfgZZvIlo0;-><init>(Landroid/util/ArraySet;Z)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$9Gi6QLDM5W-SF-EH_zfgZZvIlo0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$FinishDisabledPackageActivitiesHelper$XWfRTrqNP6c1kx7wtT2Pvy6K9-c;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$FinishDisabledPackageActivitiesHelper$XWfRTrqNP6c1kx7wtT2Pvy6K9-c;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$FinishDisabledPackageActivitiesHelper$XWfRTrqNP6c1kx7wtT2Pvy6K9-c;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$FtQd5Yte3ooh7jQ1sV_WSAmocV8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$FtQd5Yte3ooh7jQ1sV_WSAmocV8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$FtQd5Yte3ooh7jQ1sV_WSAmocV8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$GNZWuoiMNi2XGPa9C70en5XvGQU;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$GNZWuoiMNi2XGPa9C70en5XvGQU;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$IlD1lD49ui7gQmU2NkxgnXIhlOo;-><init>(I)V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$IlD1lD49ui7gQmU2NkxgnXIhlOo;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$JVx5SVc0AsTnwnLxXYLgV6AKHPg;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$JVx5SVc0AsTnwnLxXYLgV6AKHPg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$JVx5SVc0AsTnwnLxXYLgV6AKHPg;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$JZALJLRYsvQWgNnzHdoTfj_f3QY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$JZALJLRYsvQWgNnzHdoTfj_f3QY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$JZALJLRYsvQWgNnzHdoTfj_f3QY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$SVJucJygDtyF-4eKB9wPXWaNBDM;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$SVJucJygDtyF-4eKB9wPXWaNBDM;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$SVJucJygDtyF-4eKB9wPXWaNBDM;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$Vvv8jzH2oSE9-eakZwTuKd5NpsU;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$Vvv8jzH2oSE9-eakZwTuKd5NpsU;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$Vvv8jzH2oSE9-eakZwTuKd5NpsU;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$agHn20_TMrqiBYlvGhKD53sU-R8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$auMc5HUrsvttHP3CYY9dttuuvi8;-><init>()V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$auMc5HUrsvttHP3CYY9dttuuvi8;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$RootWindowContainer$qT2ficAmvrvFcBdiJIGNKxJ8Z9Q;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$vMW2dyMvZQ0PDhptvNKN5WXpK_w;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$zN9AhOirpieCrP6YNeTmpaApULQ;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$zN9AhOirpieCrP6YNeTmpaApULQ;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$RunningTasks$B8bQN-i7MO0XIePhmkVnejRGNp0;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$RunningTasks$B8bQN-i7MO0XIePhmkVnejRGNp0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$bRRfWu3QSW54eS51jCvFD02TPt8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$bRRfWu3QSW54eS51jCvFD02TPt8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$bRRfWu3QSW54eS51jCvFD02TPt8;->test(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$fL0RxmEBMlnXFmjHLkBJ9jk9drs;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$fL0RxmEBMlnXFmjHLkBJ9jk9drs;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$fL0RxmEBMlnXFmjHLkBJ9jk9drs;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$iBTaizkGPVUfwWK0hFvdR5mseLI;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$iBTaizkGPVUfwWK0hFvdR5mseLI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$ipFw3PwG_VSG45EGVCDfJfHk29I;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$ipFw3PwG_VSG45EGVCDfJfHk29I;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$ipFw3PwG_VSG45EGVCDfJfHk29I;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$jHLZ5ssJOPMd9KJ4tf6FHZ8ZLXI;-><init>(Landroid/util/ArraySet;Z)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$jHLZ5ssJOPMd9KJ4tf6FHZ8ZLXI;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$nRMSe8o9Vhp4MBHMJJoyb6ObTQ0;-><init>(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZ)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$nRMSe8o9Vhp4MBHMJJoyb6ObTQ0;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RootWindowContainer$qT2ficAmvrvFcBdiJIGNKxJ8Z9Q;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$qT2ficAmvrvFcBdiJIGNKxJ8Z9Q;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$smSIq2r4GMdbTUsLaRS4KHth6DY;-><init>(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$smSIq2r4GMdbTUsLaRS4KHth6DY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$vMW2dyMvZQ0PDhptvNKN5WXpK_w;-><init>(IZ)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$vMW2dyMvZQ0PDhptvNKN5WXpK_w;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$y9wG_endhUBCwGznyjN4RSIYTyg;-><init>(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZ)V
+PLcom/android/server/wm/-$$Lambda$RootWindowContainer$y9wG_endhUBCwGznyjN4RSIYTyg;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$RunningTasks$MPCBAZpSXKx53M7vrqtvLfftJOc;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$RunningTasks$MPCBAZpSXKx53M7vrqtvLfftJOc;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RunningTasks$MPCBAZpSXKx53M7vrqtvLfftJOc;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/-$$Lambda$RunningTasks$hR_Ryk91b0B2BdJN9eCfQfPwC3g;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$RunningTasks$hR_Ryk91b0B2BdJN9eCfQfPwC3g;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$RunningTasks$hR_Ryk91b0B2BdJN9eCfQfPwC3g;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$ScreenRotationAnimation$SurfaceRotationAnimationController$R3Rh3gcwK_nBUAZq4hlWwmQXjXA;-><init>(Lcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;)V
+HPLcom/android/server/wm/-$$Lambda$ScreenRotationAnimation$SurfaceRotationAnimationController$R3Rh3gcwK_nBUAZq4hlWwmQXjXA;->run()V
+PLcom/android/server/wm/-$$Lambda$ScreenRotationAnimation$SurfaceRotationAnimationController$mryOPi3UUpYZkQThzDJyjGBpl5c;-><init>(Lcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;)V
+PLcom/android/server/wm/-$$Lambda$ScreenRotationAnimation$SurfaceRotationAnimationController$mryOPi3UUpYZkQThzDJyjGBpl5c;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/-$$Lambda$Session$15hO_YO9_yR6FTMdPPe87fZzL1c;-><init>(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/-$$Lambda$Session$15hO_YO9_yR6FTMdPPe87fZzL1c;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$Session$zgdcs0nAb8hCdS-6ugnFMadbhU8;-><init>(FFFF)V
+HPLcom/android/server/wm/-$$Lambda$Session$zgdcs0nAb8hCdS-6ugnFMadbhU8;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$3FiQ0kybPCSlgcNJkCsNm5M12iA;-><init>(Lcom/android/server/wm/StatusBarController$1;)V
 HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$3FiQ0kybPCSlgcNJkCsNm5M12iA;->run()V
-HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$CizMeoiz6ZVrkt6kAKpSV5htmyc;->run()V
+HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$CizMeoiz6ZVrkt6kAKpSV5htmyc;-><init>(Lcom/android/server/wm/StatusBarController$1;)V
+PLcom/android/server/wm/-$$Lambda$StatusBarController$1$CizMeoiz6ZVrkt6kAKpSV5htmyc;->run()V
+HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$t71qcQIBSxRShk0Xohf1lk53bOw;-><init>(Lcom/android/server/wm/StatusBarController$1;JJ)V
 HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$t71qcQIBSxRShk0Xohf1lk53bOw;->run()V
+HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$x4q7e0Eysf0ynMSdT1A-JN_ucuI;-><init>(Lcom/android/server/wm/StatusBarController$1;)V
 HSPLcom/android/server/wm/-$$Lambda$StatusBarController$1$x4q7e0Eysf0ynMSdT1A-JN_ucuI;->run()V
-HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$9Wa9MhcrSX12liOouHtYXEkDU60;->doFrame(J)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$9Wa9MhcrSX12liOouHtYXEkDU60;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$9Wa9MhcrSX12liOouHtYXEkDU60;->doFrame(J)V
+PLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$SGOilG6qRe0XTsTJRQqQKhta0pA;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
 PLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$SGOilG6qRe0XTsTJRQqQKhta0pA;->run()V
-HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$lSzwjoKEGADoEFOzdEnwriAk0T4;->run()V
-HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$puhYAP5tF0mSSJva-eUz59HnrkA;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
-HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$we7K92eAl3biB_bzyqbv5xCmasE;->makeAnimator()Landroid/animation/ValueAnimator;
+HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$lSzwjoKEGADoEFOzdEnwriAk0T4;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$lSzwjoKEGADoEFOzdEnwriAk0T4;->run()V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$puhYAP5tF0mSSJva-eUz59HnrkA;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$puhYAP5tF0mSSJva-eUz59HnrkA;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$we7K92eAl3biB_bzyqbv5xCmasE;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$we7K92eAl3biB_bzyqbv5xCmasE;->makeAnimator()Landroid/animation/ValueAnimator;
+HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$xDyZdsMrcbp64p4BQmOGPvVnSWA;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
 HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$xDyZdsMrcbp64p4BQmOGPvVnSWA;->run()V
-PLcom/android/server/wm/-$$Lambda$SurfaceAnimator$SIBia0mND666K8lMCPsoid8pUTI;->run()V
-HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$vdRZk66hQVbQCvVXEaQCT1kVmFc;->onAnimationFinished(Lcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$M9kRDTUpVS03LTqe-QLQz3DnMhk;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$M9kRDTUpVS03LTqe-QLQz3DnMhk;->run()V
+HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$Y4hCTFZUnyoMqrbq2rxOWj68ccg;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$Y4hCTFZUnyoMqrbq2rxOWj68ccg;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$qxm0Z0Ve0b3lKnyQQMgWVQfTP3Q;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$qxm0Z0Ve0b3lKnyQQMgWVQfTP3Q;->run()V
+HSPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$vdRZk66hQVbQCvVXEaQCT1kVmFc;-><init>(Lcom/android/server/wm/SurfaceAnimator;Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$vdRZk66hQVbQCvVXEaQCT1kVmFc;->onAnimationFinished(Lcom/android/server/wm/AnimationAdapter;)V
+HSPLcom/android/server/wm/-$$Lambda$SystemGesturesPointerEventListener$9Iw39fjTtjXO5kacgrpdxfxjuSY;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
+HSPLcom/android/server/wm/-$$Lambda$SystemGesturesPointerEventListener$9Iw39fjTtjXO5kacgrpdxfxjuSY;->run()V
+PLcom/android/server/wm/-$$Lambda$TDUtW_T9flkdwvGQ9AliNjGyzdY;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/-$$Lambda$TDUtW_T9flkdwvGQ9AliNjGyzdY;->run()V
+PLcom/android/server/wm/-$$Lambda$Task$2Dfz5yY09PC4DNoGpbJL4lMbjDo;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$2Dfz5yY09PC4DNoGpbJL4lMbjDo;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$2Dfz5yY09PC4DNoGpbJL4lMbjDo;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$Task$2iqUThjTmuPJNPgunW5qcBmNa3E;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$2iqUThjTmuPJNPgunW5qcBmNa3E;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$2iqUThjTmuPJNPgunW5qcBmNa3E;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$AFigK9DV4TJX-I6KGr1B5GhkxBQ;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/-$$Lambda$Task$BP51Xfr33NBfsJ4rKO04RomX2Tg;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$BP51Xfr33NBfsJ4rKO04RomX2Tg;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$BP51Xfr33NBfsJ4rKO04RomX2Tg;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$CKQ9RLMNPYajktwO1VrUoQGHF_8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$CKQ9RLMNPYajktwO1VrUoQGHF_8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$CKQ9RLMNPYajktwO1VrUoQGHF_8;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$Task$FindRootHelper$sIea0VfMPIGsR0Xwg7rABysHwZ4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$FindRootHelper$sIea0VfMPIGsR0Xwg7rABysHwZ4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$FindRootHelper$sIea0VfMPIGsR0Xwg7rABysHwZ4;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$Task$HQ9aJbE-z0XuxiYHPMxxaMHkKFY;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/-$$Lambda$Task$HQ9aJbE-z0XuxiYHPMxxaMHkKFY;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$Task$N2dM5PIhuaw--o5HD3NnXAFoPzg;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/-$$Lambda$Task$N2dM5PIhuaw--o5HD3NnXAFoPzg;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$Task$N6swnhdrHvxOfp81yUqye9AbX7A;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$N6swnhdrHvxOfp81yUqye9AbX7A;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$N6swnhdrHvxOfp81yUqye9AbX7A;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$OQmaRDKXdgA0v6VfNwTX7wOkwBs;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$OQmaRDKXdgA0v6VfNwTX7wOkwBs;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$OQmaRDKXdgA0v6VfNwTX7wOkwBs;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/-$$Lambda$Task$SRt5iDqxFMzfuMULgjnmoyWp73o;-><init>(Ljava/io/PrintWriter;Ljava/lang/String;[ILjava/lang/String;Z)V
+HPLcom/android/server/wm/-$$Lambda$Task$SRt5iDqxFMzfuMULgjnmoyWp73o;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$Task$TUGPkEKamN60PF6hJQxUwDBjU-M;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$TUGPkEKamN60PF6hJQxUwDBjU-M;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$TUGPkEKamN60PF6hJQxUwDBjU-M;->apply(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$Task$UZHgJINsQMxoLLbKNADHN5xbji8;-><init>(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/-$$Lambda$Task$UZHgJINsQMxoLLbKNADHN5xbji8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$Task$V2nwgQi-xYvgAjezrWRsKUB2nLI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$V2nwgQi-xYvgAjezrWRsKUB2nLI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$V2nwgQi-xYvgAjezrWRsKUB2nLI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$WFXOGUsP9k2SctNXpn2eb_XUKP0;-><init>(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/-$$Lambda$Task$WFXOGUsP9k2SctNXpn2eb_XUKP0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$Task$XRtJRRfvaa_neQ0BbpDvRIqXzf4;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$XRtJRRfvaa_neQ0BbpDvRIqXzf4;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$XRtJRRfvaa_neQ0BbpDvRIqXzf4;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$Task$a4C-owFvQJqPsf8C48fgcmCjd6M;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$a4C-owFvQJqPsf8C48fgcmCjd6M;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$a4C-owFvQJqPsf8C48fgcmCjd6M;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$Task$eHH2M2yJE6epk3eXzGcOuu6WMt8;-><init>(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/-$$Lambda$Task$eHH2M2yJE6epk3eXzGcOuu6WMt8;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$Task$hJlIVNsWJQJ_mIrVCbuZDn-cUwE;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$hJlIVNsWJQJ_mIrVCbuZDn-cUwE;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$hJlIVNsWJQJ_mIrVCbuZDn-cUwE;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$Task$lqGdYR9ABiPuG3_68w1VS6hrr8c;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$lqGdYR9ABiPuG3_68w1VS6hrr8c;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$lqGdYR9ABiPuG3_68w1VS6hrr8c;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$Task$s9wiZSThkGOKye0Zl5MRKv-8Iq0;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$Task$s9wiZSThkGOKye0Zl5MRKv-8Iq0;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$Task$s9wiZSThkGOKye0Zl5MRKv-8Iq0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$wJrggGO94VQWnIMvq8QrsNZ1LZk;-><init>(Ljava/lang/String;)V
+HPLcom/android/server/wm/-$$Lambda$Task$wJrggGO94VQWnIMvq8QrsNZ1LZk;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$Task$xh_oQC7HZKaIUa_hEyntZO3NQcs;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$xh_oQC7HZKaIUa_hEyntZO3NQcs;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$Task$xh_oQC7HZKaIUa_hEyntZO3NQcs;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$Task$zTlXbC5QcSokVoyim7UHGu8aFek;-><init>(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/-$$Lambda$Task$zTlXbC5QcSokVoyim7UHGu8aFek;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$0m_-qN9QkcgkoWun2Biw8le4l1Y;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$0m_-qN9QkcgkoWun2Biw8le4l1Y;-><init>()V
+PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$0m_-qN9QkcgkoWun2Biw8le4l1Y;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$1ziXgnyLi0gQjqMGJAbSzs0-dmE;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$1ziXgnyLi0gQjqMGJAbSzs0-dmE;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$1ziXgnyLi0gQjqMGJAbSzs0-dmE;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$9ngbiJ2r3x2ASHwN59tUFO2-2BQ;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$9ngbiJ2r3x2ASHwN59tUFO2-2BQ;-><init>()V
 PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$9ngbiJ2r3x2ASHwN59tUFO2-2BQ;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Dvvt1gNNfFRVEKlSCdL_9VnilUE;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Dvvt1gNNfFRVEKlSCdL_9VnilUE;-><init>()V
 PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Dvvt1gNNfFRVEKlSCdL_9VnilUE;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Ge3jFevRwpndz6qRSLDXODq2VjE;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Ge3jFevRwpndz6qRSLDXODq2VjE;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Ge3jFevRwpndz6qRSLDXODq2VjE;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Kz-Od_gLhLbMtGka4r78W0Gmzgo;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Kz-Od_gLhLbMtGka4r78W0Gmzgo;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Kz-Od_gLhLbMtGka4r78W0Gmzgo;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$M2NSB3SSVJR2Tu4vihNfsIL31s4;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$M2NSB3SSVJR2Tu4vihNfsIL31s4;-><init>()V
 PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$M2NSB3SSVJR2Tu4vihNfsIL31s4;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$MS67FdGix7tWO0Od9imcaKVXL7I;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$MS67FdGix7tWO0Od9imcaKVXL7I;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$MS67FdGix7tWO0Od9imcaKVXL7I;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$MS67FdGix7tWO0Od9imcaKVXL7I;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$NLoKy9SbVr1EJpEjznsKi7yAlpg;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$NLoKy9SbVr1EJpEjznsKi7yAlpg;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$NLoKy9SbVr1EJpEjznsKi7yAlpg;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$NLoKy9SbVr1EJpEjznsKi7yAlpg;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$PSFFTNiSSqx5-emiM-hoY62N04M;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$PSFFTNiSSqx5-emiM-hoY62N04M;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$PSFFTNiSSqx5-emiM-hoY62N04M;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SAbrujQOZNUflKs1FAg2mBnjx3A;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SAbrujQOZNUflKs1FAg2mBnjx3A;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SAbrujQOZNUflKs1FAg2mBnjx3A;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SAbrujQOZNUflKs1FAg2mBnjx3A;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SByuGj5tpcCpjTH9lf5zHHv2gNM;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SByuGj5tpcCpjTH9lf5zHHv2gNM;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SByuGj5tpcCpjTH9lf5zHHv2gNM;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$UexNbaqPy0mc3VxTw2coCctHho8;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$UexNbaqPy0mc3VxTw2coCctHho8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$UexNbaqPy0mc3VxTw2coCctHho8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$VuvWLQaLHifVGvurVv75MXCukH0;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$VuvWLQaLHifVGvurVv75MXCukH0;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$VuvWLQaLHifVGvurVv75MXCukH0;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ZLPZtiEvD_F4WUgH7BD4KPpdAWM;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ZLPZtiEvD_F4WUgH7BD4KPpdAWM;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ZLPZtiEvD_F4WUgH7BD4KPpdAWM;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ZLPZtiEvD_F4WUgH7BD4KPpdAWM;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$byMDuIFUN4cQ1lT9jVjMwLhaLDw;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$byMDuIFUN4cQ1lT9jVjMwLhaLDw;-><init>()V
+PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$byMDuIFUN4cQ1lT9jVjMwLhaLDw;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$cFUeUwnRjuOQKcg2c4PnDS0ImTw;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$cFUeUwnRjuOQKcg2c4PnDS0ImTw;-><init>()V
+PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$cFUeUwnRjuOQKcg2c4PnDS0ImTw;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$k0FXXC-HcWJhmtm6-Kruo6nGeXI;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$k0FXXC-HcWJhmtm6-Kruo6nGeXI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$k0FXXC-HcWJhmtm6-Kruo6nGeXI;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$kss8MGli3T9b_Y-QDzR2cB843y8;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$kss8MGli3T9b_Y-QDzR2cB843y8;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$kss8MGli3T9b_Y-QDzR2cB843y8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$kss8MGli3T9b_Y-QDzR2cB843y8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ncM_yje7-m7HuiJvorBIH_C8Ou4;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ncM_yje7-m7HuiJvorBIH_C8Ou4;-><init>()V
 PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ncM_yje7-m7HuiJvorBIH_C8Ou4;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$qONfw3ssOxjb_iMuO2oMzCbXfrg;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$qONfw3ssOxjb_iMuO2oMzCbXfrg;-><init>()V
+PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$qONfw3ssOxjb_iMuO2oMzCbXfrg;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sS6OHbZtuWHjzmkm8bleSWZWFqA;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sS6OHbZtuWHjzmkm8bleSWZWFqA;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sS6OHbZtuWHjzmkm8bleSWZWFqA;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sdBP_U6BS8zRbtZp-gZ0BmFW8bs;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sdBP_U6BS8zRbtZp-gZ0BmFW8bs;-><init>()V
+PLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sdBP_U6BS8zRbtZp-gZ0BmFW8bs;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$wuBjs4dj7gB_MI4dIdt2gV2Osus;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$wuBjs4dj7gB_MI4dIdt2gV2Osus;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$yaW9HlZsz3L55CTQ4b7y33IGo94;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$yaW9HlZsz3L55CTQ4b7y33IGo94;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskPersister$8TcnoL7JFvpj8NzBRg91ns5JOBw;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$TaskPersister$8MhgCrM41UuyRqTjWwKtfifKRLo;-><init>(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/-$$Lambda$TaskPersister$8MhgCrM41UuyRqTjWwKtfifKRLo;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$TaskPersister$mW0HULrR8EtZ9La-pL9kLTnHSzk;-><init>(Ljava/lang/String;)V
 PLcom/android/server/wm/-$$Lambda$TaskPersister$mW0HULrR8EtZ9La-pL9kLTnHSzk;->test(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$TaskPersister$xdLXwftXa6l84QTg1zpxMnmtQ0g;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$TaskPersister$piHtCTZMpbHMTXAk2o7OdlK4Xvc;-><init>(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/-$$Lambda$TaskPersister$piHtCTZMpbHMTXAk2o7OdlK4Xvc;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$TaskPositioningController$u0oAwi82C-bAGo2JAsAc_9ZLi70;-><init>(Lcom/android/server/wm/TaskPositioningController;Lcom/android/server/wm/DisplayContent;II)V
 PLcom/android/server/wm/-$$Lambda$TaskPositioningController$u0oAwi82C-bAGo2JAsAc_9ZLi70;->run()V
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$Tj7bQvjfkzsOjJOdJXBpqCZnW1Q;-><init>(Lcom/android/server/wm/TaskSnapshotController;Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$Tj7bQvjfkzsOjJOdJXBpqCZnW1Q;->run()V
+PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$b7mc92hqzbRpmpc99dYS4wKuL6Y;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$b7mc92hqzbRpmpc99dYS4wKuL6Y;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$b7mc92hqzbRpmpc99dYS4wKuL6Y;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$ewi-Dm2ws6pdTXd1elso7FtoLKw;->accept(Ljava/lang/Object;)V
-PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$q-BG2kMqHK9gvuY43J0TfS4aSVU;->run()V
-PLcom/android/server/wm/-$$Lambda$TaskStack$JFAlC6OMp1fc_hlvoNIZagoMK1U;->run()V
-PLcom/android/server/wm/-$$Lambda$TaskStack$n0sDe5GcitIQB-Orca4W45Hcc98;-><init>()V
-PLcom/android/server/wm/-$$Lambda$TaskStack$n0sDe5GcitIQB-Orca4W45Hcc98;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$TaskTapPointerEventListener$Qq8YAj6yai3RMz5wJNKGVJNqsPM;->run()V
-HSPLcom/android/server/wm/-$$Lambda$UB90fpYUkajpKCLGR93ZDlgDhyw;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$UB90fpYUkajpKCLGR93ZDlgDhyw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$UnknownAppVisibilityController$FYhcjOhYWVp6HX5hr3GGaPg67Gc;->run()V
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$b7mc92hqzbRpmpc99dYS4wKuL6Y;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$eY4HzOpxvBAchhbObndnIDQqsVs;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$TaskSnapshotController$eY4HzOpxvBAchhbObndnIDQqsVs;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$eY4HzOpxvBAchhbObndnIDQqsVs;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$pF831VjVO7J7eXZhalKp1CJKNC4;-><init>(Lcom/android/server/wm/TaskSnapshotController;)V
+HPLcom/android/server/wm/-$$Lambda$TaskSnapshotController$pF831VjVO7J7eXZhalKp1CJKNC4;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$U9zpYh1OwxC9FZcjOfUJl0HQSho;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$U9zpYh1OwxC9FZcjOfUJl0HQSho;-><init>()V
+PLcom/android/server/wm/-$$Lambda$U9zpYh1OwxC9FZcjOfUJl0HQSho;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$UZl9uqUNteVgplGGEK6TMzf-7zk;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$UZl9uqUNteVgplGGEK6TMzf-7zk;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$UZl9uqUNteVgplGGEK6TMzf-7zk;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$UnknownAppVisibilityController$FYhcjOhYWVp6HX5hr3GGaPg67Gc;-><init>(Lcom/android/server/wm/UnknownAppVisibilityController;)V
+PLcom/android/server/wm/-$$Lambda$UnknownAppVisibilityController$FYhcjOhYWVp6HX5hr3GGaPg67Gc;->run()V
+PLcom/android/server/wm/-$$Lambda$VDG7MoD_7v7qIdkguJXls8nmhGU;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$VDG7MoD_7v7qIdkguJXls8nmhGU;-><init>()V
+PLcom/android/server/wm/-$$Lambda$VDG7MoD_7v7qIdkguJXls8nmhGU;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$VY87MmFWaCLMkNa2qHGaPrThyrI;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$VY87MmFWaCLMkNa2qHGaPrThyrI;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$VY87MmFWaCLMkNa2qHGaPrThyrI;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$VYR_ckkt7281-Ti8Ps0f0Tx3ljY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$VYR_ckkt7281-Ti8Ps0f0Tx3ljY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$VYR_ckkt7281-Ti8Ps0f0Tx3ljY;->test(Ljava/lang/Object;Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$WallpaperAnimationAdapter$-EwtM9NXnIMpRq_OzBHTdmhakaM;-><init>(JJLjava/util/function/Consumer;Ljava/util/ArrayList;Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/-$$Lambda$WallpaperAnimationAdapter$-EwtM9NXnIMpRq_OzBHTdmhakaM;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$WallpaperController$6pruPGLeSJAwNl9vGfC87eso21w;-><init>(Lcom/android/server/wm/WallpaperController;)V
 HSPLcom/android/server/wm/-$$Lambda$WallpaperController$6pruPGLeSJAwNl9vGfC87eso21w;->apply(Ljava/lang/Object;)Z
-PLcom/android/server/wm/-$$Lambda$WallpaperController$Gy7houdzET4VmpY0QJ2v-NX1b7k;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;->get()Ljava/lang/Object;
+PLcom/android/server/wm/-$$Lambda$WallpaperController$Gy7houdzET4VmpY0QJ2v-NX1b7k;-><init>(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/-$$Lambda$WallpaperController$Gy7houdzET4VmpY0QJ2v-NX1b7k;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;->get()Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$WindowAnimator$U3Fu5_RzEyNo8Jt6zTb2ozdXiqM;-><init>(Lcom/android/server/wm/WindowAnimator;)V
 HSPLcom/android/server/wm/-$$Lambda$WindowAnimator$U3Fu5_RzEyNo8Jt6zTb2ozdXiqM;->run()V
+HSPLcom/android/server/wm/-$$Lambda$WindowAnimator$ddXU8gK8rmDqri0OZVMNa3Y4GHk;-><init>(Lcom/android/server/wm/WindowAnimator;)V
 HSPLcom/android/server/wm/-$$Lambda$WindowAnimator$ddXU8gK8rmDqri0OZVMNa3Y4GHk;->doFrame(J)V
-PLcom/android/server/wm/-$$Lambda$WindowManagerService$CbEzJbdxOpfZ-AMUAcOVQZxepOo;->run()V
-PLcom/android/server/wm/-$$Lambda$WindowManagerService$TSkDaJxgP1soTkEMmzPpB3NLYUk;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$WindowManagerService$WNGTdzsJPsW8aUuJwsBZFDJuOo0;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$WindowManagerService$wGh8jzmWqrd_7ruovSXZoiIk1s0;->run()V
-HSPLcom/android/server/wm/-$$Lambda$WindowSurfacePlacer$4Hbamt-LFcbu8AoZBoOZN_LveKQ;->run()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$-A4y17DMfFWJcsomzkr9vLbjQAE;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$-A4y17DMfFWJcsomzkr9vLbjQAE;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$-A4y17DMfFWJcsomzkr9vLbjQAE;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$2rGzqVQd2W3E16Whknxg9bmDzTY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$2rGzqVQd2W3E16Whknxg9bmDzTY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$2rGzqVQd2W3E16Whknxg9bmDzTY;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$4sX6UUtugZXD_J917yuWIm58Q9M;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$4sX6UUtugZXD_J917yuWIm58Q9M;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$4sX6UUtugZXD_J917yuWIm58Q9M;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$7u99Gj9w15XaOTtX23LKq-yXn5o;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$7u99Gj9w15XaOTtX23LKq-yXn5o;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$7u99Gj9w15XaOTtX23LKq-yXn5o;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$Gpo6ayyekClulCV4pWn8r_9sFj8;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$Gpo6ayyekClulCV4pWn8r_9sFj8;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$Gpo6ayyekClulCV4pWn8r_9sFj8;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$LBjDP_WAw_7yWAmt8ZHABKob-8M;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$LBjDP_WAw_7yWAmt8ZHABKob-8M;-><init>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$LBjDP_WAw_7yWAmt8ZHABKob-8M;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$MJv6PFywp2VpmiV3-w1JgxopvP0;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$MJv6PFywp2VpmiV3-w1JgxopvP0;-><init>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$MJv6PFywp2VpmiV3-w1JgxopvP0;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$Nezf9LuhT9GSLKWzqEWp7WKs5W8;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$Nezf9LuhT9GSLKWzqEWp7WKs5W8;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$TQFCJtak2E5nTjAEG9Q24yp-Oi8;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$TQFCJtak2E5nTjAEG9Q24yp-Oi8;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$TQFCJtak2E5nTjAEG9Q24yp-Oi8;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$WskrGbNwLeexLlAXUNUyGLhHEWA;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$WskrGbNwLeexLlAXUNUyGLhHEWA;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$WskrGbNwLeexLlAXUNUyGLhHEWA;->test(Ljava/lang/Object;)Z
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$a-4AX8BeEa4UpmUmPJfszEypbe8;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$a-4AX8BeEa4UpmUmPJfszEypbe8;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$aOnsenmCzcAbVIVfb4GaJb6lURI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$aOnsenmCzcAbVIVfb4GaJb6lURI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$aOnsenmCzcAbVIVfb4GaJb6lURI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$bIb_8MdCB21XDQtqSZBnQ6UsdVY;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$bIb_8MdCB21XDQtqSZBnQ6UsdVY;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$bIb_8MdCB21XDQtqSZBnQ6UsdVY;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$dnx35h_Pw7Bg2H7Ehkb7sSfFoyI;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$dnx35h_Pw7Bg2H7Ehkb7sSfFoyI;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$dnx35h_Pw7Bg2H7Ehkb7sSfFoyI;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$fQfr0FFMMdeUY3lZFLkiF4glOP0;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/policy/WindowManagerPolicy;)V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$fQfr0FFMMdeUY3lZFLkiF4glOP0;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$hEnPtnCJ_pCrhm4O_2UvgVpB0HQ;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$hEnPtnCJ_pCrhm4O_2UvgVpB0HQ;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$hEnPtnCJ_pCrhm4O_2UvgVpB0HQ;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$hIGRJSXS2_nuTiN5-y-qjXv-Wwk;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$hIGRJSXS2_nuTiN5-y-qjXv-Wwk;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$hIGRJSXS2_nuTiN5-y-qjXv-Wwk;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$k_PpuHAHKhi1gqk1dQsXNnYX7Ok;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$k_PpuHAHKhi1gqk1dQsXNnYX7Ok;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$k_PpuHAHKhi1gqk1dQsXNnYX7Ok;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$lJjjxJS1wJFikrxN0jFMgNna43g;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$lJjjxJS1wJFikrxN0jFMgNna43g;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$WindowContainer$lJjjxJS1wJFikrxN0jFMgNna43g;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$qSbR9_kgF0JT89cFcOglSsU0Y94;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$qSbR9_kgF0JT89cFcOglSsU0Y94;-><init>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$qSbR9_kgF0JT89cFcOglSsU0Y94;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainer$sh5zVifGKSmT1fuGQxK_5_eAZ20;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowContainer$sh5zVifGKSmT1fuGQxK_5_eAZ20;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$WindowContainer$sh5zVifGKSmT1fuGQxK_5_eAZ20;->test(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$WindowContainerThumbnail$TAAowaUKTiUY1j0FFlQQfUHXn0U;-><init>(Lcom/android/server/wm/WindowContainerThumbnail;)V
+PLcom/android/server/wm/-$$Lambda$WindowContainerThumbnail$TAAowaUKTiUY1j0FFlQQfUHXn0U;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/-$$Lambda$WindowContainerThumbnail$eaIKGhnBPQly7snIrFjjw1Gda8k;-><init>(Lcom/android/server/wm/WindowContainerThumbnail;)V
+PLcom/android/server/wm/-$$Lambda$WindowContainerThumbnail$eaIKGhnBPQly7snIrFjjw1Gda8k;->run()V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerConstants$H0Vnr9H2xLD72_22unzb68d1fSM;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerConstants$YOsWod8qOtbBnduZqPrYHSwyJ5E;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerConstants$vqhvZbTPHnj84vQKH9wjAhgVP44;-><init>(Lcom/android/server/wm/WindowManagerConstants;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerService$-84S7IuSlM65nKgepHJEvVFHdC8;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$-84S7IuSlM65nKgepHJEvVFHdC8;->binderDied()V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$76as6dijPl5n2m0AtZPbXLM-ukM;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$76as6dijPl5n2m0AtZPbXLM-ukM;-><init>()V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$76as6dijPl5n2m0AtZPbXLM-ukM;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$8ua71O53dXrMSZy5W0bAg3kK7ho;-><init>(Z)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$8ua71O53dXrMSZy5W0bAg3kK7ho;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$_nYJRiVOgbON7mI191FIzNAk4Xs;-><init>(Ljava/lang/String;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$_nYJRiVOgbON7mI191FIzNAk4Xs;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$rEGrcIRCgYp-4kzr5xA12LKQX0E;-><init>(Ljava/lang/String;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$rEGrcIRCgYp-4kzr5xA12LKQX0E;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$Zv37mcLTUXyG89YznyHzluaKNE0;-><init>(Landroid/app/IAssistDataReceiver;Landroid/graphics/Bitmap;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$Zv37mcLTUXyG89YznyHzluaKNE0;->run()V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$eaG2e7SQKd8e2ZcXySkFGa1yxFk;-><init>(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerService$eaG2e7SQKd8e2ZcXySkFGa1yxFk;->accept(Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$pUqz7rqEpzd4geO4TXsDyOVZCOc;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/-$$Lambda$WindowManagerService$pUqz7rqEpzd4geO4TXsDyOVZCOc;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerService$qCWPyJrU0wwX4tP-_QpfmersCVc;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+HSPLcom/android/server/wm/-$$Lambda$WindowManagerService$qCWPyJrU0wwX4tP-_QpfmersCVc;->run()V
+PLcom/android/server/wm/-$$Lambda$WindowManagerShellCommand$prjQFpVCgSa5hzjzlwN4oL9HnaI;-><init>(Ljava/util/ArrayList;)V
+PLcom/android/server/wm/-$$Lambda$WindowManagerShellCommand$prjQFpVCgSa5hzjzlwN4oL9HnaI;->accept(Ljava/lang/Object;)V
 HSPLcom/android/server/wm/-$$Lambda$WindowToken$tFLHn4S6WuSXW1gp1kvT_sp7WC0;-><init>(Lcom/android/server/wm/WindowToken;)V
-HSPLcom/android/server/wm/-$$Lambda$WindowToken$tFLHn4S6WuSXW1gp1kvT_sp7WC0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-HSPLcom/android/server/wm/-$$Lambda$XZ-U3HlCFtHp_gydNmNMeRmQMCI;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$XZ-U3HlCFtHp_gydNmNMeRmQMCI;->make(Landroid/view/SurfaceSession;)Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/-$$Lambda$WindowToken$tFLHn4S6WuSXW1gp1kvT_sp7WC0;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/wm/-$$Lambda$WindowTracing$lz89IHzR4nKO_ZtXtwyNGkRleMY;-><init>(Lcom/android/server/wm/WindowTracing;)V
+HSPLcom/android/server/wm/-$$Lambda$Z9QEXZevRsInPMEXX0zFWg8YGMQ;-><init>(Lcom/android/server/wm/RecentTasks;)V
+PLcom/android/server/wm/-$$Lambda$Z9QEXZevRsInPMEXX0zFWg8YGMQ;->run()V
+HSPLcom/android/server/wm/-$$Lambda$_-mEZ6EASUAbbjgZj87dfvxRN64;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$_-mEZ6EASUAbbjgZj87dfvxRN64;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$_-mEZ6EASUAbbjgZj87dfvxRN64;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$_jL5KNK44AQYPj1d8Hd3FYO0W-M;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$_jL5KNK44AQYPj1d8Hd3FYO0W-M;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$_jL5KNK44AQYPj1d8Hd3FYO0W-M;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$cJE-iQ28Rv-ThCcuht9wXeFzPgo;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$cJE-iQ28Rv-ThCcuht9wXeFzPgo;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$cJE-iQ28Rv-ThCcuht9wXeFzPgo;->accept(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$hBnABSAsqXWvQ0zKwHWE4BZ3Mc0;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$hBnABSAsqXWvQ0zKwHWE4BZ3Mc0;->make()Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/-$$Lambda$hOONSPF2N4ZIr-bSc1utsg8aP-c;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$hOONSPF2N4ZIr-bSc1utsg8aP-c;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/-$$Lambda$h-x5kpt7iRsCHGk24gs4Sab2qLw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$h-x5kpt7iRsCHGk24gs4Sab2qLw;-><init>()V
+PLcom/android/server/wm/-$$Lambda$h-x5kpt7iRsCHGk24gs4Sab2qLw;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+PLcom/android/server/wm/-$$Lambda$hD1GQddqK6sJaBtwVBGHwmleilc;-><init>(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/-$$Lambda$hD1GQddqK6sJaBtwVBGHwmleilc;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$hT1kyMEAhvB1-Uxr0DFAlnuU3cQ;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$hT1kyMEAhvB1-Uxr0DFAlnuU3cQ;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$hT1kyMEAhvB1-Uxr0DFAlnuU3cQ;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$hwQLWout8wOWvnHXCxS5LJZGGvw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$hwQLWout8wOWvnHXCxS5LJZGGvw;-><init>()V
+PLcom/android/server/wm/-$$Lambda$hwQLWout8wOWvnHXCxS5LJZGGvw;->apply(Ljava/lang/Object;Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/-$$Lambda$iQxeP_PsHHArcPSFabJ3FXyPKNc;-><init>(Lcom/android/server/wm/WindowManagerService$SettingsObserver;)V
 HSPLcom/android/server/wm/-$$Lambda$iQxeP_PsHHArcPSFabJ3FXyPKNc;->run()V
+HSPLcom/android/server/wm/-$$Lambda$ibmQVLjaQW2x74Wk8TcE0Og2MJM;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$ibmQVLjaQW2x74Wk8TcE0Og2MJM;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$ibmQVLjaQW2x74Wk8TcE0Og2MJM;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$j9nJq2XXOKyN4f0dfDaTjqmQRvg;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$j9nJq2XXOKyN4f0dfDaTjqmQRvg;-><init>()V
 PLcom/android/server/wm/-$$Lambda$j9nJq2XXOKyN4f0dfDaTjqmQRvg;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$l7wsAiYkcvlUYlIkk2IImQzEY8Q;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$l7wsAiYkcvlUYlIkk2IImQzEY8Q;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$p4YgPONtKWpvUwa_nwQPB8_Za6I;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$p4YgPONtKWpvUwa_nwQPB8_Za6I;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$pAuPvwUqsKCejIrAPrx0ARZSqeY;->test(Ljava/lang/Object;)Z
-HSPLcom/android/server/wm/-$$Lambda$pOh7At8PXGw9JWVkfdjoNb7hsIg;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$pOh7At8PXGw9JWVkfdjoNb7hsIg;->accept(Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$ju_KnYxEFekr6LzoWamCeaO5FHQ;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/-$$Lambda$ju_KnYxEFekr6LzoWamCeaO5FHQ;->binderDied()V
+PLcom/android/server/wm/-$$Lambda$lnLU7X2Jo6KLxEmrQlMdzuxHhJA;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$lnLU7X2Jo6KLxEmrQlMdzuxHhJA;-><init>()V
+PLcom/android/server/wm/-$$Lambda$lnLU7X2Jo6KLxEmrQlMdzuxHhJA;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$oZvG727evJMxIwK1im7QJjcltfo;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$oZvG727evJMxIwK1im7QJjcltfo;-><init>()V
+PLcom/android/server/wm/-$$Lambda$oZvG727evJMxIwK1im7QJjcltfo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HPLcom/android/server/wm/-$$Lambda$pAuPvwUqsKCejIrAPrx0ARZSqeY;-><init>(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;)V
+PLcom/android/server/wm/-$$Lambda$pAuPvwUqsKCejIrAPrx0ARZSqeY;->test(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/-$$Lambda$qMFJUmfG50ZSjk7Tac67xBia0d4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$qMFJUmfG50ZSjk7Tac67xBia0d4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$qMFJUmfG50ZSjk7Tac67xBia0d4;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$swA_sUfSJdP8eC8AA9Iby3-SuOY;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$swA_sUfSJdP8eC8AA9Iby3-SuOY;-><init>()V
 HSPLcom/android/server/wm/-$$Lambda$swA_sUfSJdP8eC8AA9Iby3-SuOY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$uwO6wQlqU3CG7OTdH7NBCKnHs64;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$uwO6wQlqU3CG7OTdH7NBCKnHs64;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$uwO6wQlqU3CG7OTdH7NBCKnHs64;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$vhwCX-wzYksBgFM46tASKUCeQRc;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$vhwCX-wzYksBgFM46tASKUCeQRc;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$vhwCX-wzYksBgFM46tASKUCeQRc;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$x6Ib5GIrsWZg48HsPUVGxKBQJS4;-><clinit>()V
+HSPLcom/android/server/wm/-$$Lambda$x6Ib5GIrsWZg48HsPUVGxKBQJS4;-><init>()V
+HSPLcom/android/server/wm/-$$Lambda$x6Ib5GIrsWZg48HsPUVGxKBQJS4;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/-$$Lambda$yACUZqn1Ak-GL14-Nu3kHUSaLX0;-><clinit>()V
 HSPLcom/android/server/wm/-$$Lambda$yACUZqn1Ak-GL14-Nu3kHUSaLX0;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$yACUZqn1Ak-GL14-Nu3kHUSaLX0;->startAnimation(Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
-HSPLcom/android/server/wm/-$$Lambda$yIIsPVyXvnU3Rv8mcliit-gIpSs;->run()V
-HSPLcom/android/server/wm/-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM;->run()V
+PLcom/android/server/wm/-$$Lambda$yACUZqn1Ak-GL14-Nu3kHUSaLX0;->startAnimation(Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
+HSPLcom/android/server/wm/-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM;->run()V
+PLcom/android/server/wm/-$$Lambda$z5j5fiv3cZuY5AODkt3H3rhKimk;-><clinit>()V
 PLcom/android/server/wm/-$$Lambda$z5j5fiv3cZuY5AODkt3H3rhKimk;-><init>()V
 PLcom/android/server/wm/-$$Lambda$z5j5fiv3cZuY5AODkt3H3rhKimk;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;-><init>()V
-HSPLcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->cacheWindows(Ljava/util/List;)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows(Z)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeWindowBoundsInScreen(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->isReportedWindowType(I)Z
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->updateUnaccountedSpace(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;Landroid/graphics/Region;Ljava/util/HashSet;)V
-PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowChangedNoLayer(Landroid/view/WindowInfo;Landroid/view/WindowInfo;)Z
-HSPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToAccessibility(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;Landroid/graphics/Region;Ljava/util/HashSet;)Z
-HSPLcom/android/server/wm/AccessibilityController;->onWindowFocusChangedNotLocked()V
-HSPLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNotLocked(Z)V
-HSPLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallback(Lcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
-HSPLcom/android/server/wm/ActivityDisplay;-><init>(Lcom/android/server/wm/RootActivityContainer;Landroid/view/Display;)V
-HSPLcom/android/server/wm/ActivityDisplay;->addChild(Lcom/android/server/wm/ActivityStack;I)V
-HSPLcom/android/server/wm/ActivityDisplay;->addStackReferenceIfNeeded(Lcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/ActivityDisplay;->allResumedActivitiesComplete()Z
-PLcom/android/server/wm/ActivityDisplay;->continueUpdateImeTarget()V
-HSPLcom/android/server/wm/ActivityDisplay;->createDisplayContent()Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/ActivityDisplay;->createStack(IIZ)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->createStackUnchecked(IIIZ)Lcom/android/server/wm/ActivityStack;
-PLcom/android/server/wm/ActivityDisplay;->deferUpdateImeTarget()V
-HSPLcom/android/server/wm/ActivityDisplay;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityDisplay;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZZ)V
-HSPLcom/android/server/wm/ActivityDisplay;->findTaskLocked(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/RootActivityContainer$FindTaskResult;)V
-HSPLcom/android/server/wm/ActivityDisplay;->getChildAt(I)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
-HSPLcom/android/server/wm/ActivityDisplay;->getChildCount()I
-HSPLcom/android/server/wm/ActivityDisplay;->getFocusedStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getHomeActivity()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityDisplay;->getHomeActivityForUser(I)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityDisplay;->getHomeStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getIndexOf(Lcom/android/server/wm/ActivityStack;)I
-HSPLcom/android/server/wm/ActivityDisplay;->getLastFocusedStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getNextFocusableStack(Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getNextStackId()I
-HSPLcom/android/server/wm/ActivityDisplay;->getOrCreateStack(IIZ)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getOrCreateStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;IZ)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getParent()Lcom/android/server/wm/ConfigurationContainer;
-PLcom/android/server/wm/ActivityDisplay;->getPinnedStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityDisplay;->getSplitScreenPrimaryStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getStack(I)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getStack(II)Lcom/android/server/wm/ActivityStack;
-PLcom/android/server/wm/ActivityDisplay;->getStackAbove(Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->getTopInsertPosition(Lcom/android/server/wm/ActivityStack;I)I
-HSPLcom/android/server/wm/ActivityDisplay;->getTopStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityDisplay;->handleActivitySizeCompatModeIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityDisplay;->hasPinnedStack()Z
-HSPLcom/android/server/wm/ActivityDisplay;->hasSplitScreenPrimaryStack()Z
-HSPLcom/android/server/wm/ActivityDisplay;->isPrivate()Z
-HSPLcom/android/server/wm/ActivityDisplay;->isRemoved()Z
-HSPLcom/android/server/wm/ActivityDisplay;->isSingleTaskInstance()Z
-HSPLcom/android/server/wm/ActivityDisplay;->isSleeping()Z
-HSPLcom/android/server/wm/ActivityDisplay;->isTopNotPinnedStack(Lcom/android/server/wm/ActivityStack;)Z
-HSPLcom/android/server/wm/ActivityDisplay;->isTopStack(Lcom/android/server/wm/ActivityStack;)Z
-HSPLcom/android/server/wm/ActivityDisplay;->isWindowingModeSupported(IZZZZI)Z
-HSPLcom/android/server/wm/ActivityDisplay;->moveHomeActivityToTop(Ljava/lang/String;)Z
-HSPLcom/android/server/wm/ActivityDisplay;->moveHomeStackToFront(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityDisplay;->moveStackBehindBottomMostVisibleStack(Lcom/android/server/wm/ActivityStack;)V
-PLcom/android/server/wm/ActivityDisplay;->moveStackBehindStack(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/ActivityDisplay;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/ActivityDisplay;->onDisplayChanged()V
-HSPLcom/android/server/wm/ActivityDisplay;->onInitializeOverrideConfiguration(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/ActivityDisplay;->onLockTaskPackagesUpdated()V
-HSPLcom/android/server/wm/ActivityDisplay;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/ActivityDisplay;->onStackWindowingModeChanged(Lcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/ActivityDisplay;->pauseBackStacks(ZLcom/android/server/wm/ActivityRecord;Z)Z
-HSPLcom/android/server/wm/ActivityDisplay;->positionChildAt(Lcom/android/server/wm/ActivityStack;IZLjava/lang/String;)V
-HSPLcom/android/server/wm/ActivityDisplay;->positionChildAtBottom(Lcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/ActivityDisplay;->positionChildAtBottom(Lcom/android/server/wm/ActivityStack;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityDisplay;->positionChildAtTop(Lcom/android/server/wm/ActivityStack;Z)V
-HSPLcom/android/server/wm/ActivityDisplay;->positionChildAtTop(Lcom/android/server/wm/ActivityStack;ZLjava/lang/String;)V
-PLcom/android/server/wm/ActivityDisplay;->registerStackOrderChangedListener(Lcom/android/server/wm/ActivityDisplay$OnStackOrderChangedListener;)V
-PLcom/android/server/wm/ActivityDisplay;->releaseSelfIfNeeded()V
-PLcom/android/server/wm/ActivityDisplay;->remove()V
-PLcom/android/server/wm/ActivityDisplay;->removeChild(Lcom/android/server/wm/ActivityStack;)V
-PLcom/android/server/wm/ActivityDisplay;->removeStacksInWindowingModes([I)V
-PLcom/android/server/wm/ActivityDisplay;->resolveWindowingMode(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;I)I
-HSPLcom/android/server/wm/ActivityDisplay;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;Z)V
-HSPLcom/android/server/wm/ActivityDisplay;->setIsSleeping(Z)V
-PLcom/android/server/wm/ActivityDisplay;->shouldDestroyContentOnRemove()Z
-HSPLcom/android/server/wm/ActivityDisplay;->shouldSleep()Z
-HSPLcom/android/server/wm/ActivityDisplay;->supportsSystemDecorations()Z
-PLcom/android/server/wm/ActivityDisplay;->toString()Ljava/lang/String;
-HSPLcom/android/server/wm/ActivityDisplay;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityDisplay;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityDisplay;->unregisterStackOrderChangedListener(Lcom/android/server/wm/ActivityDisplay$OnStackOrderChangedListener;)V
-HSPLcom/android/server/wm/ActivityDisplay;->validateWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;I)I
-PLcom/android/server/wm/ActivityDisplay;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HSPLcom/android/server/wm/ActivityMetricsLogger$H;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;Lcom/android/server/wm/ActivityRecord;I)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Landroid/content/Context;Landroid/os/Looper;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->checkVisibility(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->getTransitionType(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;)I
-HSPLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionMultiEvents$0$ActivityMetricsLogger(IILcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionMultiEvents$1$ActivityMetricsLogger(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionReportedDrawn$2$ActivityMetricsLogger(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAbortedBgActivityStart(Landroid/content/Intent;Lcom/android/server/wm/WindowProcessController;ILjava/lang/String;IZIIZZ)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppDisplayed(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppStartMemoryStateCapture(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransition(IILcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionCancel(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionMultiEvents()V
-PLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionReportedDrawn(Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;
-HSPLcom/android/server/wm/ActivityMetricsLogger;->logWindowState()V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(ILcom/android/server/wm/ActivityRecord;ZZ)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;)V
+PLcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/-$$Lambda$zuO3rEvETpKsuJLTTdIHB2ijeho;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$zuO3rEvETpKsuJLTTdIHB2ijeho;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$zuO3rEvETpKsuJLTTdIHB2ijeho;->apply(Ljava/lang/Object;)Z
+PLcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;-><clinit>()V
+PLcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;-><init>()V
+HPLcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow$AnimationController;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;Landroid/content/Context;Landroid/os/Looper;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;Landroid/content/Context;)V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->drawIfNeeded(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->invalidate(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->releaseSurface()V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->setBounds(Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->setShown(ZZ)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport$ViewportWindow;->updateSize(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->access$1200(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;)Landroid/graphics/Point;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->access$1300(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;)F
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->access$1400(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;)Landroid/view/WindowManager;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->destroyWindow()V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->drawWindowIfNeededLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->getLetterboxBounds(Lcom/android/server/wm/WindowState;)Landroid/graphics/Region;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->getMagnificationRegionLocked(Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->getMagnificationSpecLocked()Landroid/view/MagnificationSpec;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->isMagnifyingLocked()Z
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->lambda$populateWindowsOnScreenLocked$0$AccessibilityController$DisplayMagnifier$MagnifiedViewport(Landroid/util/SparseArray;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->onRotationChangedLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->populateWindowsOnScreenLocked(Landroid/util/SparseArray;)V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->recomputeBoundsLocked()V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->setMagnifiedRegionBorderShownLocked(ZZ)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MagnifiedViewport;->updateMagnificationSpecLocked(Landroid/view/MagnificationSpec;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;Landroid/os/Looper;)V
+HPLcom/android/server/wm/AccessibilityController$DisplayMagnifier$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Landroid/view/Display;Lcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$000(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/content/Context;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$100(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/view/Display;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$1000(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$1100(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$1600(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Lcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$200(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/os/Handler;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$300(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/graphics/Region;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$400(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/graphics/Region;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$600(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/graphics/Region;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$700(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/graphics/Rect;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->access$800(Lcom/android/server/wm/AccessibilityController$DisplayMagnifier;)Landroid/graphics/Region;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->destroyLocked()V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->drawMagnifiedRegionBorderIfNeededLocked(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->getMagnificationRegionLocked(Landroid/graphics/Region;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->getMagnificationSpecForWindowLocked(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec;
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->isForceShowingMagnifiableBoundsLocked()Z
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->onAppWindowTransitionLocked(II)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->onRectangleOnScreenRequestedLocked(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->onRotationChangedLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->onWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V
+PLcom/android/server/wm/AccessibilityController$DisplayMagnifier;->setMagnificationSpecLocked(Landroid/view/MagnificationSpec;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;-><init>(Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;Landroid/os/Looper;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;-><init>(Lcom/android/server/wm/WindowManagerService;ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->addPopulatedWindowInfo(Lcom/android/server/wm/WindowState;Landroid/graphics/Region;Ljava/util/List;Ljava/util/Set;)V
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->clearAndRecycleWindows(Ljava/util/List;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeChangedWindows(Z)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->computeWindowRegionInScreen(Lcom/android/server/wm/WindowState;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->findRootDisplayParentWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->getTopFocusWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->isReportedWindowType(I)Z
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$computeWindowRegionInScreen$0$AccessibilityController$WindowsForAccessibilityObserver(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;Landroid/graphics/Region;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$populateVisibleWindowsOnScreenLocked$1(Ljava/util/List;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->lambda$populateVisibleWindowsOnScreenLocked$2$AccessibilityController$WindowsForAccessibilityObserver(Ljava/util/List;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->performComputeChangedWindowsNotLocked(Z)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->populateVisibleWindowsOnScreenLocked(Landroid/util/SparseArray;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->scheduleComputeChangedWindowsLocked()V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->updateUnaccountedSpace(Lcom/android/server/wm/WindowState;Landroid/graphics/Region;Landroid/graphics/Region;Ljava/util/HashSet;)V
+HPLcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;->windowMattersToAccessibility(Lcom/android/server/wm/WindowState;Landroid/graphics/Region;Landroid/graphics/Region;Ljava/util/HashSet;)Z
+PLcom/android/server/wm/AccessibilityController;-><clinit>()V
+PLcom/android/server/wm/AccessibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/AccessibilityController;->access$500(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/AccessibilityController;->drawMagnifiedRegionBorderIfNeededLocked(ILandroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/AccessibilityController;->getMagnificationRegionLocked(ILandroid/graphics/Region;)V
+HPLcom/android/server/wm/AccessibilityController;->getMagnificationSpecForWindowLocked(Lcom/android/server/wm/WindowState;)Landroid/view/MagnificationSpec;
+PLcom/android/server/wm/AccessibilityController;->hasCallbacksLocked()Z
+HPLcom/android/server/wm/AccessibilityController;->onAppWindowTransitionLocked(II)V
+HPLcom/android/server/wm/AccessibilityController;->onRectangleOnScreenRequestedLocked(ILandroid/graphics/Rect;)V
+PLcom/android/server/wm/AccessibilityController;->onRotationChangedLocked(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/AccessibilityController;->onSomeWindowResizedOrMovedLocked([I)V
+HPLcom/android/server/wm/AccessibilityController;->onWindowFocusChangedNotLocked(I)V
+HPLcom/android/server/wm/AccessibilityController;->onWindowTransitionLocked(Lcom/android/server/wm/WindowState;I)V
+HPLcom/android/server/wm/AccessibilityController;->performComputeChangedWindowsNotLocked(IZ)V
+PLcom/android/server/wm/AccessibilityController;->populateTransformationMatrixLocked(Lcom/android/server/wm/WindowState;Landroid/graphics/Matrix;)V
+PLcom/android/server/wm/AccessibilityController;->setMagnificationCallbacksLocked(ILcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)Z
+PLcom/android/server/wm/AccessibilityController;->setMagnificationSpecLocked(ILandroid/view/MagnificationSpec;)V
+PLcom/android/server/wm/AccessibilityController;->setWindowsForAccessibilityCallbackLocked(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)Z
+HSPLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;-><init>()V
+HSPLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->access$000(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;)J
+HSPLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->access$002(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;J)J
+HSPLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->access$100(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+HSPLcom/android/server/wm/ActivityMetricsLogger$LaunchingState;->access$102(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;IZZ)V
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->allDrawn()Z
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateCurrentDelay()I
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->calculateDelay(J)I
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->contains(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->create(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;ZZI)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->isInterestingToLoggerAndObserver()Z
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->removePendingDrawActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;->setLatestLaunchedActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;-><init>(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityMetricsLogger$1;)V
+HSPLcom/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$1;)V
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$1100(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$1200(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$300(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$400(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$500(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$600(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$700(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$800(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)I
+PLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->access$900(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;->getLaunchState()I
+HSPLcom/android/server/wm/ActivityMetricsLogger;-><clinit>()V
+HSPLcom/android/server/wm/ActivityMetricsLogger;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->abort(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Ljava/lang/String;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->checkVisibility(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->convertActivityRecordToProto(Lcom/android/server/wm/ActivityRecord;)[B
+PLcom/android/server/wm/ActivityMetricsLogger;->convertAppStartTransitionType(I)I
+HSPLcom/android/server/wm/ActivityMetricsLogger;->convertTransitionTypeToLaunchObserverTemperature(I)I
+HPLcom/android/server/wm/ActivityMetricsLogger;->done(ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Ljava/lang/String;J)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->getActiveTransitionInfo(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+PLcom/android/server/wm/ActivityMetricsLogger;->getArtManagerInternal()Landroid/content/pm/dex/ArtManagerInternal;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->getLastDrawnDelayMs(Lcom/android/server/wm/ActivityRecord;)I
+HSPLcom/android/server/wm/ActivityMetricsLogger;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->hasActivityToBeDrawn(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/ActivityMetricsLogger;->lambda$9gqV7SOtv0dBXWMri6Jpu47OdLc(Lcom/android/server/wm/ActivityMetricsLogger;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->lambda$hasActivityToBeDrawn$0(Lcom/android/server/wm/ActivityRecord;)Ljava/lang/Boolean;
+HPLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionFinished$1$ActivityMetricsLogger(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionFinished$2$ActivityMetricsLogger(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionReportedDrawn$3$ActivityMetricsLogger(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->lambda$logAppTransitionReportedDrawn$4$ActivityMetricsLogger(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunchCancelled(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunchFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;J)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyIntentFailed()V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/wm/ActivityMetricsLogger;->launchObserverNotifyReportFullyDrawn(Lcom/android/server/wm/ActivityRecord;J)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAbortedBgActivityStart(Landroid/content/Intent;Lcom/android/server/wm/WindowProcessController;ILjava/lang/String;IZIIZZ)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppDisplayed(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppFullyDrawn(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppStartMemoryStateCapture(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransition(IILcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionCancel(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionFinished(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->logAppTransitionReportedDrawn(Lcom/android/server/wm/ActivityRecord;Z)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
+HPLcom/android/server/wm/ActivityMetricsLogger;->logWindowState()V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunched(Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;ILcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityLaunching(Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyActivityRemoved(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyBindApplication(Landroid/content/pm/ApplicationInfo;)V
-PLcom/android/server/wm/ActivityMetricsLogger;->notifyStartingWindowDrawn(IJ)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/SparseIntArray;J)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->notifyStartingWindowDrawn(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyTransitionStarting(Landroid/util/ArrayMap;)V
 HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyVisibilityChanged(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyWindowsDrawn(IJ)Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfoSnapshot;
-HSPLcom/android/server/wm/ActivityMetricsLogger;->reset(ZLcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->startTraces(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;)V
-HSPLcom/android/server/wm/ActivityMetricsLogger;->stopLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;)V
-HSPLcom/android/server/wm/ActivityRecord$Token;-><init>(Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;)V
-PLcom/android/server/wm/ActivityRecord$Token;->getName()Ljava/lang/String;
-HSPLcom/android/server/wm/ActivityRecord$Token;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->notifyWindowsDrawn(Lcom/android/server/wm/ActivityRecord;J)Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
+HSPLcom/android/server/wm/ActivityMetricsLogger;->startLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+HPLcom/android/server/wm/ActivityMetricsLogger;->stopLaunchTrace(Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;)V
+PLcom/android/server/wm/ActivityRecord$1;-><clinit>()V
+HSPLcom/android/server/wm/ActivityRecord$1;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityRecord$1;->run()V
+HSPLcom/android/server/wm/ActivityRecord$2;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityRecord$2;->run()V
+HSPLcom/android/server/wm/ActivityRecord$3;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$3;->run()V
+HSPLcom/android/server/wm/ActivityRecord$4;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityRecord$4;->run()V
+PLcom/android/server/wm/ActivityRecord$5;-><clinit>()V
+HSPLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$1;)V
+HPLcom/android/server/wm/ActivityRecord$AddStartingWindow;->run()V
+PLcom/android/server/wm/ActivityRecord$AppSaturationInfo;-><init>()V
+PLcom/android/server/wm/ActivityRecord$AppSaturationInfo;-><init>(Lcom/android/server/wm/ActivityRecord$1;)V
+PLcom/android/server/wm/ActivityRecord$AppSaturationInfo;->setSaturation([F[F)V
+HPLcom/android/server/wm/ActivityRecord$CompatDisplayInsets;-><init>(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/ActivityRecord$CompatDisplayInsets;->getDisplayBoundsByRotation(Landroid/graphics/Rect;I)V
+HPLcom/android/server/wm/ActivityRecord$CompatDisplayInsets;->getFrameByOrientation(Landroid/graphics/Rect;I)V
+HSPLcom/android/server/wm/ActivityRecord$Token;-><init>(Landroid/content/Intent;)V
+PLcom/android/server/wm/ActivityRecord$Token;->access$000(Lcom/android/server/wm/ActivityRecord$Token;)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord$Token;->access$100(Lcom/android/server/wm/ActivityRecord$Token;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord$Token;->access$100(Lcom/android/server/wm/ActivityRecord$Token;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityRecord$Token;->access$200(Lcom/android/server/wm/ActivityRecord$Token;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityRecord$Token;->attach(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityRecord$Token;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/ActivityRecord$Token;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityRecord$Token;->tokenToActivityRecordLocked(Lcom/android/server/wm/ActivityRecord$Token;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowProcessController;IILjava/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/ActivityStackSupervisor;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/ActivityRecord;->access$000(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->activityPaused(Z)V
+HSPLcom/android/server/wm/ActivityRecord;->activityResumedLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityRecord;->activityStopped(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/ActivityRecord;->activityStoppedLocked(Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/wm/ActivityRecord;->addNewIntentLocked(Lcom/android/internal/content/ReferrerIntent;)V
+HPLcom/android/server/wm/ActivityRecord;->addResultLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
 HSPLcom/android/server/wm/ActivityRecord;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z
+HPLcom/android/server/wm/ActivityRecord;->addToFinishingAndWaitForIdle()Z
+HPLcom/android/server/wm/ActivityRecord;->addToStopping(ZZLjava/lang/String;)V
+HSPLcom/android/server/wm/ActivityRecord;->addWindow(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/ActivityRecord;->allDrawnStatesConsidered()Z
+HSPLcom/android/server/wm/ActivityRecord;->allowMoveToFront()Z
 HSPLcom/android/server/wm/ActivityRecord;->allowTaskSnapshot()Z
+HPLcom/android/server/wm/ActivityRecord;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZ)Z
+PLcom/android/server/wm/ActivityRecord;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZLcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Z
+PLcom/android/server/wm/ActivityRecord;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZLjava/lang/Runnable;)Z
+HSPLcom/android/server/wm/ActivityRecord;->applyAspectRatio(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/ActivityRecord;->applyOptionsLocked()V
 HSPLcom/android/server/wm/ActivityRecord;->applyOptionsLocked(Landroid/app/ActivityOptions;Landroid/content/Intent;)V
+HSPLcom/android/server/wm/ActivityRecord;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->attachCrossProfileAppsThumbnailAnimation()V
+PLcom/android/server/wm/ActivityRecord;->attachThumbnailAnimation()V
 HSPLcom/android/server/wm/ActivityRecord;->attachedToProcess()Z
-HSPLcom/android/server/wm/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityRecord;->calculateCompatBoundsTransformation(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/ActivityRecord;->canBeLaunchedOnDisplay(I)Z
+HSPLcom/android/server/wm/ActivityRecord;->canBeTopRunning()Z
+PLcom/android/server/wm/ActivityRecord;->canLaunchAssistActivity(Ljava/lang/String;)Z
+PLcom/android/server/wm/ActivityRecord;->canLaunchHomeActivity(ILcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/ActivityRecord;->canResumeByCompat()Z
 HSPLcom/android/server/wm/ActivityRecord;->canShowWhenLocked()Z
-HSPLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z
-HSPLcom/android/server/wm/ActivityRecord;->clearOptionsLocked()V
+HSPLcom/android/server/wm/ActivityRecord;->canShowWindows()Z
+HSPLcom/android/server/wm/ActivityRecord;->canTurnScreenOn()Z
+HPLcom/android/server/wm/ActivityRecord;->cancelAnimation()V
+PLcom/android/server/wm/ActivityRecord;->cancelAnimationOnly()V
+HPLcom/android/server/wm/ActivityRecord;->cancelInitializing()V
+HSPLcom/android/server/wm/ActivityRecord;->checkAppWindowsReadyToShow()V
+HSPLcom/android/server/wm/ActivityRecord;->checkCompleteDeferredRemoval()Z
+HPLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureAppOpsState()Z
+HPLcom/android/server/wm/ActivityRecord;->checkEnterPictureInPictureState(Ljava/lang/String;Z)Z
+HSPLcom/android/server/wm/ActivityRecord;->checkKeyguardFlagsChanged()V
+HPLcom/android/server/wm/ActivityRecord;->cleanUp(ZZ)V
+PLcom/android/server/wm/ActivityRecord;->cleanUpActivityServices()V
+HSPLcom/android/server/wm/ActivityRecord;->clearAllDrawn()V
+HPLcom/android/server/wm/ActivityRecord;->clearAnimatingFlags()V
+HPLcom/android/server/wm/ActivityRecord;->clearChangeLeash(Landroid/view/SurfaceControl$Transaction;Z)V
+HPLcom/android/server/wm/ActivityRecord;->clearOptionsLocked()V
+HSPLcom/android/server/wm/ActivityRecord;->clearOptionsLocked(Z)V
+PLcom/android/server/wm/ActivityRecord;->clearRelaunching()V
+HSPLcom/android/server/wm/ActivityRecord;->clearThumbnail()V
+HSPLcom/android/server/wm/ActivityRecord;->commitVisibility(ZZ)V
+HPLcom/android/server/wm/ActivityRecord;->completeFinishing(Ljava/lang/String;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->completeResumeLocked()V
-HSPLcom/android/server/wm/ActivityRecord;->computeBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/ActivityRecord;->continueLaunchTickingLocked()Z
-HSPLcom/android/server/wm/ActivityRecord;->createAppWindow(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZ)Lcom/android/server/wm/AppWindowToken;
-HSPLcom/android/server/wm/ActivityRecord;->createAppWindowToken()V
-PLcom/android/server/wm/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z
+HSPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z
+HSPLcom/android/server/wm/ActivityRecord;->containsTurnScreenOnWindow()Z
+HSPLcom/android/server/wm/ActivityRecord;->continueLaunchTicking()Z
+PLcom/android/server/wm/ActivityRecord;->continueLaunchTickingLocked()Z
+HPLcom/android/server/wm/ActivityRecord;->createAnimationBoundsLayer(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/ActivityRecord;->createImageFilename(JI)Ljava/lang/String;
+HPLcom/android/server/wm/ActivityRecord;->createRemoteAnimationTarget(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;)Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/ActivityRecord;->createSnapshot(Landroid/app/ActivityManager$TaskSnapshot;)Z
+PLcom/android/server/wm/ActivityRecord;->crossesHorizontalSizeThreshold(II)Z
+PLcom/android/server/wm/ActivityRecord;->crossesSizeThreshold([III)Z
+PLcom/android/server/wm/ActivityRecord;->crossesSmallestSizeThreshold(II)Z
+PLcom/android/server/wm/ActivityRecord;->crossesVerticalSizeThreshold(II)Z
+PLcom/android/server/wm/ActivityRecord;->currentLaunchCanTurnScreenOn()Z
+HPLcom/android/server/wm/ActivityRecord;->deliverNewIntentLocked(ILandroid/content/Intent;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityRecord;->destroyIfPossible(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ActivityRecord;->destroyImmediately(ZLjava/lang/String;)Z
+HPLcom/android/server/wm/ActivityRecord;->destroySurfaces()V
+HPLcom/android/server/wm/ActivityRecord;->destroySurfaces(Z)V
+HPLcom/android/server/wm/ActivityRecord;->destroyed(Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityRecord;->detachChildren()V
+HPLcom/android/server/wm/ActivityRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HSPLcom/android/server/wm/ActivityRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/ActivityRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;I)V
+HPLcom/android/server/wm/ActivityRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/ActivityRecord;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/ActivityRecord;->ensureActivityConfiguration(IZ)Z
 HSPLcom/android/server/wm/ActivityRecord;->ensureActivityConfiguration(IZZ)Z
-PLcom/android/server/wm/ActivityRecord;->finishLaunchTickingLocked()V
+HSPLcom/android/server/wm/ActivityRecord;->fillsParent()Z
+HSPLcom/android/server/wm/ActivityRecord;->findMainWindow()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/ActivityRecord;->finishActivityResults(ILandroid/content/Intent;)V
+HPLcom/android/server/wm/ActivityRecord;->finishIfPossible(ILandroid/content/Intent;Ljava/lang/String;Z)I
+PLcom/android/server/wm/ActivityRecord;->finishIfPossible(Ljava/lang/String;Z)I
+PLcom/android/server/wm/ActivityRecord;->finishIfSameAffinity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->finishIfSubActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)V
+HSPLcom/android/server/wm/ActivityRecord;->finishLaunchTickingLocked()V
+PLcom/android/server/wm/ActivityRecord;->finishRelaunching()V
+HSPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Consumer;Z)V
+HSPLcom/android/server/wm/ActivityRecord;->forAllActivities(Ljava/util/function/Function;Z)Z
+HSPLcom/android/server/wm/ActivityRecord;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/ActivityRecord;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z
 HSPLcom/android/server/wm/ActivityRecord;->forTokenLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->freezeBounds()V
+HSPLcom/android/server/wm/ActivityRecord;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityRecord;->getActivityStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityRecord;->getChildCount()I
+HPLcom/android/server/wm/ActivityRecord;->getAnimationBounds(I)Landroid/graphics/Rect;
+HPLcom/android/server/wm/ActivityRecord;->getAnimationFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityRecord;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/ActivityRecord;->getAppAnimationLayer()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/ActivityRecord;->getBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/ActivityRecord;->getConfigurationChanges(Landroid/content/res/Configuration;)I
-HSPLcom/android/server/wm/ActivityRecord;->getDisplay()Lcom/android/server/wm/ActivityDisplay;
+HSPLcom/android/server/wm/ActivityRecord;->getDisplay()Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/ActivityRecord;->getDisplayId()I
-HSPLcom/android/server/wm/ActivityRecord;->getParent()Lcom/android/server/wm/ConfigurationContainer;
-HSPLcom/android/server/wm/ActivityRecord;->getRequestedConfigurationOrientation()I
+HSPLcom/android/server/wm/ActivityRecord;->getDisplayedBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityRecord;->getHighestAnimLayerWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/ActivityRecord;->getImeTargetBelowWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/ActivityRecord;->getLetterboxInnerBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityRecord;->getLetterboxInsets()Landroid/graphics/Rect;
+HSPLcom/android/server/wm/ActivityRecord;->getLockTaskLaunchMode(Landroid/content/pm/ActivityInfo;Landroid/app/ActivityOptions;)I
+HSPLcom/android/server/wm/ActivityRecord;->getOrientation(I)I
+HSPLcom/android/server/wm/ActivityRecord;->getPersistentSavedState()Landroid/os/PersistableBundle;
+HPLcom/android/server/wm/ActivityRecord;->getPid()I
+HSPLcom/android/server/wm/ActivityRecord;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ActivityRecord;->getRemoteAnimationDefinition()Landroid/view/RemoteAnimationDefinition;
+HSPLcom/android/server/wm/ActivityRecord;->getRequestedOrientation()I
+HSPLcom/android/server/wm/ActivityRecord;->getRootTask()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/ActivityRecord;->getRootTaskId()I
+HSPLcom/android/server/wm/ActivityRecord;->getSavedState()Landroid/os/Bundle;
+HPLcom/android/server/wm/ActivityRecord;->getSizeCompatScale()F
+HSPLcom/android/server/wm/ActivityRecord;->getStack()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/ActivityRecord;->getStackId()I
+HSPLcom/android/server/wm/ActivityRecord;->getStackLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/ActivityRecord;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I
+HPLcom/android/server/wm/ActivityRecord;->getState()Lcom/android/server/wm/ActivityStack$ActivityState;
+HSPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityRecord;->getTaskForActivityLocked(Landroid/os/IBinder;Z)I
+HPLcom/android/server/wm/ActivityRecord;->getTopFullscreenOpaqueWindow()Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/ActivityRecord;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/ActivityRecord;->getTransit()I
+PLcom/android/server/wm/ActivityRecord;->getTransitFlags()I
+HSPLcom/android/server/wm/ActivityRecord;->getTurnScreenOnFlag()Z
+PLcom/android/server/wm/ActivityRecord;->getUid()I
 HSPLcom/android/server/wm/ActivityRecord;->getUriPermissionsLocked()Lcom/android/server/uri/UriPermissionOwner;
-HSPLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()Z
+PLcom/android/server/wm/ActivityRecord;->getWaitingHistoryRecordLocked()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()V
+HSPLcom/android/server/wm/ActivityRecord;->hasActivity()Z
+PLcom/android/server/wm/ActivityRecord;->hasNonDefaultColorWindow()Z
+HSPLcom/android/server/wm/ActivityRecord;->hasProcess()Z
+PLcom/android/server/wm/ActivityRecord;->hasResizeChange(I)Z
+PLcom/android/server/wm/ActivityRecord;->hasSavedState()Z
+HSPLcom/android/server/wm/ActivityRecord;->hasSizeCompatBounds()Z
+HPLcom/android/server/wm/ActivityRecord;->hasStartingWindow()Z
 HSPLcom/android/server/wm/ActivityRecord;->inSizeCompatMode()Z
+HSPLcom/android/server/wm/ActivityRecord;->isAlwaysFocusable()Z
+HSPLcom/android/server/wm/ActivityRecord;->isClientVisible()Z
+HPLcom/android/server/wm/ActivityRecord;->isClosingOrEnteringPip()Z
+PLcom/android/server/wm/ActivityRecord;->isConfigurationCompatible(Landroid/content/res/Configuration;)Z
+PLcom/android/server/wm/ActivityRecord;->isDestroyable()Z
+PLcom/android/server/wm/ActivityRecord;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/ActivityRecord;->isFocusable()Z
+HSPLcom/android/server/wm/ActivityRecord;->isFreezingScreen()Z
 HSPLcom/android/server/wm/ActivityRecord;->isHomeIntent(Landroid/content/Intent;)Z
-PLcom/android/server/wm/ActivityRecord;->isInStackLocked()Z
-PLcom/android/server/wm/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z
+HSPLcom/android/server/wm/ActivityRecord;->isInChangeTransition()Z
+PLcom/android/server/wm/ActivityRecord;->isInHistory()Z
+HPLcom/android/server/wm/ActivityRecord;->isInStackLocked()Z
+HSPLcom/android/server/wm/ActivityRecord;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityRecord;->isInVrUiMode(Landroid/content/res/Configuration;)Z
+PLcom/android/server/wm/ActivityRecord;->isInterestingToUserLocked()Z
+PLcom/android/server/wm/ActivityRecord;->isLastWindow(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/ActivityRecord;->isLetterboxOverlappingWith(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/ActivityRecord;->isMainIntent(Landroid/content/Intent;)Z
+HPLcom/android/server/wm/ActivityRecord;->isNoHistory()Z
+PLcom/android/server/wm/ActivityRecord;->isNonResizableOrForcedResizable(I)Z
+HSPLcom/android/server/wm/ActivityRecord;->isPersistable()Z
 HSPLcom/android/server/wm/ActivityRecord;->isProcessRunning()Z
+HSPLcom/android/server/wm/ActivityRecord;->isRelaunching()Z
+PLcom/android/server/wm/ActivityRecord;->isResizeOnlyChange(I)Z
+HSPLcom/android/server/wm/ActivityRecord;->isResizeable()Z
+HSPLcom/android/server/wm/ActivityRecord;->isResolverActivity(Ljava/lang/String;)Z
 PLcom/android/server/wm/ActivityRecord;->isResolverOrChildActivity()Z
+HSPLcom/android/server/wm/ActivityRecord;->isResolverOrDelegateActivity()Z
+PLcom/android/server/wm/ActivityRecord;->isResumedActivityOnDisplay()Z
+HSPLcom/android/server/wm/ActivityRecord;->isRootOfTask()Z
+HPLcom/android/server/wm/ActivityRecord;->isSleeping()Z
+HSPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+PLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+HSPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+HPLcom/android/server/wm/ActivityRecord;->isState(Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;Lcom/android/server/wm/ActivityStack$ActivityState;)Z
+PLcom/android/server/wm/ActivityRecord;->isSurfaceShowing()Z
+HSPLcom/android/server/wm/ActivityRecord;->isTaskOverlay()Z
+HSPLcom/android/server/wm/ActivityRecord;->isTopRunningActivity()Z
+PLcom/android/server/wm/ActivityRecord;->isUid(I)Z
+HSPLcom/android/server/wm/ActivityRecord;->isVisible()Z
+HSPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z
+PLcom/android/server/wm/ActivityRecord;->keyDispatchingTimedOut(Ljava/lang/String;I)Z
+HSPLcom/android/server/wm/ActivityRecord;->lambda$applyOptionsLocked$5(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityRecord;->lambda$hasNonDefaultColorWindow$4(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/ActivityRecord;->lambda$jAKnTXYErEwplxJ5lQgj44-M9_c(Lcom/android/server/wm/ActivityRecord;I)V
+PLcom/android/server/wm/ActivityRecord;->lambda$layoutLetterbox$2$ActivityRecord()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/ActivityRecord;->lambda$new$0$ActivityRecord([F[F)V
+PLcom/android/server/wm/ActivityRecord;->lambda$new$1$ActivityRecord([F[F)V
+HPLcom/android/server/wm/ActivityRecord;->lambda$postApplyAnimation$7(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/ActivityRecord;->lambda$prAsqx_JQJTqW1jNxmkuU3AV8AU(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->lambda$removeStartingWindow$3(Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;)V
+PLcom/android/server/wm/ActivityRecord;->lambda$setVisibility$6(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->lambda$shouldUseAppThemeSnapshot$8(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/ActivityRecord;->lambda$showAllWindowsLocked$9(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/ActivityRecord;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->loadThumbnailAnimation(Landroid/graphics/GraphicBuffer;)Landroid/view/animation/Animation;
+HSPLcom/android/server/wm/ActivityRecord;->logStartActivity(ILcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/ActivityRecord;->makeActiveIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/ActivityRecord;->makeClientVisible()V
-HSPLcom/android/server/wm/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
-HSPLcom/android/server/wm/ActivityRecord;->moveFocusableActivityToTop(Ljava/lang/String;)Z
-HSPLcom/android/server/wm/ActivityRecord;->notifyAppResumed(Z)V
-HSPLcom/android/server/wm/ActivityRecord;->notifyUnknownVisibilityLaunched()V
+PLcom/android/server/wm/ActivityRecord;->makeClientVisible()V
+PLcom/android/server/wm/ActivityRecord;->makeFinishingLocked()V
+HPLcom/android/server/wm/ActivityRecord;->makeInvisible()V
+HPLcom/android/server/wm/ActivityRecord;->makeVisibleIfNeeded(Lcom/android/server/wm/ActivityRecord;Z)V
+HSPLcom/android/server/wm/ActivityRecord;->matchParentBounds()Z
+HSPLcom/android/server/wm/ActivityRecord;->mayFreezeScreenLocked()Z
+HSPLcom/android/server/wm/ActivityRecord;->mayFreezeScreenLocked(Lcom/android/server/wm/WindowProcessController;)Z
+HPLcom/android/server/wm/ActivityRecord;->moveFocusableActivityToTop(Ljava/lang/String;)Z
+HSPLcom/android/server/wm/ActivityRecord;->needsZBoost()Z
+HPLcom/android/server/wm/ActivityRecord;->notifyAppResumed(Z)V
+HPLcom/android/server/wm/ActivityRecord;->notifyAppStopped()V
+HSPLcom/android/server/wm/ActivityRecord;->notifyUnknownVisibilityLaunchedForKeyguardTransition()V
+HSPLcom/android/server/wm/ActivityRecord;->occludesParent()Z
 HSPLcom/android/server/wm/ActivityRecord;->okToShowLocked()Z
 HSPLcom/android/server/wm/ActivityRecord;->onAnimationFinished()V
+HPLcom/android/server/wm/ActivityRecord;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/ActivityRecord;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/ActivityRecord;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/ActivityRecord;->onAppFreezeTimeout()V
 HSPLcom/android/server/wm/ActivityRecord;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->onStartingWindowDrawn(J)V
+HSPLcom/android/server/wm/ActivityRecord;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/ActivityRecord;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
+HSPLcom/android/server/wm/ActivityRecord;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HPLcom/android/server/wm/ActivityRecord;->onRemovedFromDisplay()V
+PLcom/android/server/wm/ActivityRecord;->onWindowReplacementTimeout()V
 HSPLcom/android/server/wm/ActivityRecord;->onWindowsDrawn(ZJ)V
-HSPLcom/android/server/wm/ActivityRecord;->onWindowsGone()V
+PLcom/android/server/wm/ActivityRecord;->onWindowsGone()V
 HSPLcom/android/server/wm/ActivityRecord;->onWindowsVisible()V
-HSPLcom/android/server/wm/ActivityRecord;->pauseKeyDispatchingLocked()V
+PLcom/android/server/wm/ActivityRecord;->onlyVrUiModeChanged(ILandroid/content/res/Configuration;)Z
+HPLcom/android/server/wm/ActivityRecord;->pauseKeyDispatchingLocked()V
+HSPLcom/android/server/wm/ActivityRecord;->postApplyAnimation(Z)V
+HPLcom/android/server/wm/ActivityRecord;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityRecord;->prepareActivityHideTransitionAnimation(I)V
+PLcom/android/server/wm/ActivityRecord;->prepareActivityHideTransitionAnimationIfOvarlay(I)V
+HSPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V
 PLcom/android/server/wm/ActivityRecord;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V
-HSPLcom/android/server/wm/ActivityRecord;->relaunchActivityLocked(ZZ)V
+HPLcom/android/server/wm/ActivityRecord;->relaunchActivityLocked(Z)V
+HPLcom/android/server/wm/ActivityRecord;->removeAppTokenFromDisplay()V
+HPLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/ActivityRecord;->removeDeadWindows()V
+HPLcom/android/server/wm/ActivityRecord;->removeDestroyTimeout()V
+HPLcom/android/server/wm/ActivityRecord;->removeFromHistory(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->removeIfPossible()V
+PLcom/android/server/wm/ActivityRecord;->removeImmediately()V
+HSPLcom/android/server/wm/ActivityRecord;->removeLaunchTickRunnable()V
+HPLcom/android/server/wm/ActivityRecord;->removePauseTimeout()V
+HSPLcom/android/server/wm/ActivityRecord;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/ActivityRecord;->removeResultsLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)V
-HSPLcom/android/server/wm/ActivityRecord;->removeWindowContainer()V
+HSPLcom/android/server/wm/ActivityRecord;->removeStartingWindow()V
+HPLcom/android/server/wm/ActivityRecord;->removeStopTimeout()V
+HPLcom/android/server/wm/ActivityRecord;->removeTimeouts()V
+HPLcom/android/server/wm/ActivityRecord;->removeUriPermissionsLocked()V
+PLcom/android/server/wm/ActivityRecord;->reparent(Lcom/android/server/wm/Task;ILjava/lang/String;)V
+PLcom/android/server/wm/ActivityRecord;->reparentSurfaceControl(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HSPLcom/android/server/wm/ActivityRecord;->reportDescendantOrientationChangeIfNeeded()V
+PLcom/android/server/wm/ActivityRecord;->reportFullyDrawnLocked(Z)V
+HSPLcom/android/server/wm/ActivityRecord;->requestUpdateWallpaperIfNeeded()V
 HSPLcom/android/server/wm/ActivityRecord;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/ActivityRecord;->resolveSizeCompatModeConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->resolveSizeCompatModeConfiguration(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/ActivityRecord;->resumeKeyDispatchingLocked()V
-HSPLcom/android/server/wm/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityRecord;->savePinnedStackBounds()V
+PLcom/android/server/wm/ActivityRecord;->scheduleActivityMovedToDisplay(ILandroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->scheduleAddStartingWindow()V
+HPLcom/android/server/wm/ActivityRecord;->scheduleConfigurationChanged(Landroid/content/res/Configuration;)V
 PLcom/android/server/wm/ActivityRecord;->scheduleMultiWindowModeChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->schedulePauseTimeout()V
 PLcom/android/server/wm/ActivityRecord;->schedulePictureInPictureModeChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)V
+HSPLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)Z
+PLcom/android/server/wm/ActivityRecord;->sendResult(ILjava/lang/String;IILandroid/content/Intent;)V
 HSPLcom/android/server/wm/ActivityRecord;->setActivityType(ZILandroid/content/Intent;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityRecord;->setAppLayoutChanges(ILjava/lang/String;)V
+HSPLcom/android/server/wm/ActivityRecord;->setClientVisible(Z)V
+PLcom/android/server/wm/ActivityRecord;->setCurrentLaunchCanTurnScreenOn(Z)V
+PLcom/android/server/wm/ActivityRecord;->setDeferHidingClient(Z)V
 PLcom/android/server/wm/ActivityRecord;->setDisablePreviewScreenshots(Z)V
+HSPLcom/android/server/wm/ActivityRecord;->setLastReportedConfiguration(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/ActivityRecord;->setLastReportedConfiguration(Landroid/util/MergedConfiguration;)V
-PLcom/android/server/wm/ActivityRecord;->setOrientation(IZ)V
+HSPLcom/android/server/wm/ActivityRecord;->setLastReportedGlobalConfiguration(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityRecord;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/ActivityRecord;->setMainWindowOpaque(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setOccludesParent(Z)Z
+HPLcom/android/server/wm/ActivityRecord;->setOrientation(IZ)V
 HSPLcom/android/server/wm/ActivityRecord;->setProcess(Lcom/android/server/wm/WindowProcessController;)V
-HSPLcom/android/server/wm/ActivityRecord;->setSleeping(ZZ)V
+HPLcom/android/server/wm/ActivityRecord;->setRequestedOrientation(I)V
+HSPLcom/android/server/wm/ActivityRecord;->setSavedState(Landroid/os/Bundle;)V
+PLcom/android/server/wm/ActivityRecord;->setShowWhenLocked(Z)V
+HSPLcom/android/server/wm/ActivityRecord;->setSizeConfigurations([I[I[I)V
+HSPLcom/android/server/wm/ActivityRecord;->setSleeping(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setSleeping(ZZ)V
 HSPLcom/android/server/wm/ActivityRecord;->setState(Lcom/android/server/wm/ActivityStack$ActivityState;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityRecord;->setTask(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/ActivityRecord;->setTask(Lcom/android/server/wm/TaskRecord;Z)V
 HSPLcom/android/server/wm/ActivityRecord;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
+PLcom/android/server/wm/ActivityRecord;->setTaskForReuse(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityRecord;->setTaskOverlay(Z)V
+PLcom/android/server/wm/ActivityRecord;->setTurnScreenOn(Z)V
 HSPLcom/android/server/wm/ActivityRecord;->setVisibility(Z)V
-HSPLcom/android/server/wm/ActivityRecord;->setWillCloseOrEnterPip(Z)V
-HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisible(Z)Z
+HSPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V
+HSPLcom/android/server/wm/ActivityRecord;->setVisible(Z)V
+HPLcom/android/server/wm/ActivityRecord;->setWillCloseOrEnterPip(Z)V
+PLcom/android/server/wm/ActivityRecord;->setWillReplaceChildWindows()V
+HPLcom/android/server/wm/ActivityRecord;->shouldApplyAnimation(Z)Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldBeResumed(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisible()Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldBeVisible(ZZ)Z
+HPLcom/android/server/wm/ActivityRecord;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+PLcom/android/server/wm/ActivityRecord;->shouldFreezeBounds()Z
 HSPLcom/android/server/wm/ActivityRecord;->shouldMakeActive(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/ActivityRecord;->shouldRelaunchLocked(ILandroid/content/res/Configuration;)Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldPauseActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityRecord;->shouldRelaunchLocked(ILandroid/content/res/Configuration;)Z
 HSPLcom/android/server/wm/ActivityRecord;->shouldResumeActivity(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldStartActivity()Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldStartChangeTransition(II)Z
+HSPLcom/android/server/wm/ActivityRecord;->shouldUpdateConfigForDisplayChanged()Z
+HPLcom/android/server/wm/ActivityRecord;->shouldUseAppThemeSnapshot()Z
 HSPLcom/android/server/wm/ActivityRecord;->shouldUseSizeCompatMode()Z
+HSPLcom/android/server/wm/ActivityRecord;->showAllWindowsLocked()V
 HSPLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZ)V
 HSPLcom/android/server/wm/ActivityRecord;->showStartingWindow(Lcom/android/server/wm/ActivityRecord;ZZZ)V
+HSPLcom/android/server/wm/ActivityRecord;->showToCurrentUser()Z
+HPLcom/android/server/wm/ActivityRecord;->snapshotOrientationSameAsTask(Landroid/app/ActivityManager$TaskSnapshot;)Z
+HPLcom/android/server/wm/ActivityRecord;->startFreezingScreen()V
+HSPLcom/android/server/wm/ActivityRecord;->startFreezingScreenLocked(I)V
 HSPLcom/android/server/wm/ActivityRecord;->startFreezingScreenLocked(Lcom/android/server/wm/WindowProcessController;I)V
 HSPLcom/android/server/wm/ActivityRecord;->startLaunchTickingLocked()V
-PLcom/android/server/wm/ActivityRecord;->startingWindowStateToString(I)Ljava/lang/String;
+PLcom/android/server/wm/ActivityRecord;->startRelaunching()V
+HPLcom/android/server/wm/ActivityRecord;->startingWindowStateToString(I)Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityRecord;->stopFreezingScreen(ZZ)V
+HSPLcom/android/server/wm/ActivityRecord;->stopFreezingScreenLocked(Z)V
+HPLcom/android/server/wm/ActivityRecord;->stopIfPossible()V
+HSPLcom/android/server/wm/ActivityRecord;->supportsFreeform()Z
+HSPLcom/android/server/wm/ActivityRecord;->supportsPictureInPicture()Z
+HSPLcom/android/server/wm/ActivityRecord;->supportsResizeableMultiWindow()Z
+HSPLcom/android/server/wm/ActivityRecord;->supportsSplitScreenWindowingMode()Z
+HPLcom/android/server/wm/ActivityRecord;->takeFromHistory()V
+HSPLcom/android/server/wm/ActivityRecord;->takeOptionsLocked(Z)Landroid/app/ActivityOptions;
 HSPLcom/android/server/wm/ActivityRecord;->toString()Ljava/lang/String;
-PLcom/android/server/wm/ActivityRecord;->updateMultiWindowMode()V
-HSPLcom/android/server/wm/ActivityRecord;->updateOverrideConfiguration()V
+HPLcom/android/server/wm/ActivityRecord;->transferStartingWindow(Landroid/os/IBinder;)Z
+HSPLcom/android/server/wm/ActivityRecord;->transferStartingWindow(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityRecord;->transferStartingWindowFromHiddenAboveTokenIfNeeded()V
+HPLcom/android/server/wm/ActivityRecord;->unfreezeBounds()V
+PLcom/android/server/wm/ActivityRecord;->unregisterRemoteAnimations()V
+HSPLcom/android/server/wm/ActivityRecord;->updateAllDrawn()V
+PLcom/android/server/wm/ActivityRecord;->updateApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
+HSPLcom/android/server/wm/ActivityRecord;->updateColorTransform()V
+HSPLcom/android/server/wm/ActivityRecord;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/ActivityRecord;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/ActivityRecord;->updateMultiWindowMode()V
+PLcom/android/server/wm/ActivityRecord;->updateOptionsLocked(Landroid/app/ActivityOptions;)V
 PLcom/android/server/wm/ActivityRecord;->updatePictureInPictureMode(Landroid/graphics/Rect;Z)V
+HSPLcom/android/server/wm/ActivityRecord;->updateReportedVisibilityLocked()V
+HSPLcom/android/server/wm/ActivityRecord;->updateSizeCompatMode()V
+PLcom/android/server/wm/ActivityRecord;->updateTaskDescription(Ljava/lang/CharSequence;)V
+HSPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable()Z
+HSPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable(Z)Z
 HSPLcom/android/server/wm/ActivityRecord;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/wm/ActivityRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;)V
-PLcom/android/server/wm/ActivityServiceConnectionsHolder;->addConnection(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/ActivityRecord;->writeNameToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/ActivityResult;-><init>(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityServiceConnectionsHolder;->addConnection(Ljava/lang/Object;)V
 PLcom/android/server/wm/ActivityServiceConnectionsHolder;->disconnectActivityFromServices()V
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/wm/ActivityServiceConnectionsHolder;->forEachConnection(Ljava/util/function/Consumer;)V
-PLcom/android/server/wm/ActivityServiceConnectionsHolder;->isActivityVisible()Z
+HPLcom/android/server/wm/ActivityServiceConnectionsHolder;->getActivityPid()I
+HPLcom/android/server/wm/ActivityServiceConnectionsHolder;->isActivityVisible()Z
 PLcom/android/server/wm/ActivityServiceConnectionsHolder;->lambda$disconnectActivityFromServices$0$ActivityServiceConnectionsHolder()V
-PLcom/android/server/wm/ActivityServiceConnectionsHolder;->removeConnection(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;->lambda$disconnectActivityFromServices$0$ActivityServiceConnectionsHolder(Ljava/lang/Object;)V
+HPLcom/android/server/wm/ActivityServiceConnectionsHolder;->removeConnection(Ljava/lang/Object;)V
+PLcom/android/server/wm/ActivityServiceConnectionsHolder;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityStack$ActivityStackHandler;-><init>(Lcom/android/server/wm/ActivityStack;Landroid/os/Looper;)V
+PLcom/android/server/wm/ActivityStack$ActivityStackHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/ActivityStack$ActivityState;-><clinit>()V
 HSPLcom/android/server/wm/ActivityStack$ActivityState;-><init>(Ljava/lang/String;I)V
-HSPLcom/android/server/wm/ActivityStack$ActivityState;->values()[Lcom/android/server/wm/ActivityStack$ActivityState;
-HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/ActivityDisplay;ILcom/android/server/wm/ActivityStackSupervisor;IIZ)V
-HSPLcom/android/server/wm/ActivityStack;->activityDestroyedLocked(Landroid/os/IBinder;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->activityDestroyedLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V
-PLcom/android/server/wm/ActivityStack;->addStartingWindowsForVisibleActivities(Z)V
-HSPLcom/android/server/wm/ActivityStack;->addTask(Lcom/android/server/wm/TaskRecord;IZLjava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->addTask(Lcom/android/server/wm/TaskRecord;ZLjava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->addToStopping(Lcom/android/server/wm/ActivityRecord;ZZ)V
-HSPLcom/android/server/wm/ActivityStack;->adjustFocusToNextFocusableStack(Ljava/lang/String;)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityStack;->adjustFocusToNextFocusableStack(Ljava/lang/String;Z)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityStack;->adjustFocusedActivityStack(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityStack;->affectedBySplitScreenResize()Z
+PLcom/android/server/wm/ActivityStack$ActivityState;->values()[Lcom/android/server/wm/ActivityStack$ActivityState;
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;-><init>(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityStack$1;)V
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;->lambda$hxEhv3lodv2mTq0c1tG208T2TSs(Lcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;->process(Lcom/android/server/wm/ActivityRecord;Ljava/util/function/Consumer;)Z
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;->reset(Lcom/android/server/wm/ActivityRecord;Ljava/util/function/Consumer;)V
+HSPLcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;-><init>(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityStack$1;)V
+HPLcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;->process(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;->reset(Z)V
+HSPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;-><init>(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;-><init>(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityStack$1;)V
+HSPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;->addActivityToRemove(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;->lambda$8j2ZFLAwkXnwDAxiTFN7mMDLhjU(Lcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;->process(Lcom/android/server/wm/WindowProcessController;)Z
+HPLcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;->processActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack;-><clinit>()V
+HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/DisplayContent;ILcom/android/server/wm/ActivityStackSupervisor;I)V
+HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/DisplayContent;ILcom/android/server/wm/ActivityStackSupervisor;IIZ)V
+HSPLcom/android/server/wm/ActivityStack;-><init>(Lcom/android/server/wm/DisplayContent;ILcom/android/server/wm/ActivityStackSupervisor;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;)V
+PLcom/android/server/wm/ActivityStack;->activityPausedLocked(Landroid/os/IBinder;Z)V
+HSPLcom/android/server/wm/ActivityStack;->addChild(Lcom/android/server/wm/Task;IZZ)V
+HSPLcom/android/server/wm/ActivityStack;->addChild(Lcom/android/server/wm/Task;ZZ)V
+PLcom/android/server/wm/ActivityStack;->addChild(Lcom/android/server/wm/WindowContainer;I)V
+HSPLcom/android/server/wm/ActivityStack;->addChild(Lcom/android/server/wm/WindowContainer;IZ)V
+HSPLcom/android/server/wm/ActivityStack;->addChild(Lcom/android/server/wm/WindowContainer;ZZ)V
+PLcom/android/server/wm/ActivityStack;->adjustFocusToNextFocusableStack(Ljava/lang/String;)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/ActivityStack;->adjustFocusToNextFocusableStack(Ljava/lang/String;Z)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/ActivityStack;->adjustForIME(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/ActivityStack;->affectedBySplitScreenResize()Z
 PLcom/android/server/wm/ActivityStack;->animateResizePinnedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)V
-HSPLcom/android/server/wm/ActivityStack;->awakeFromSleepingLocked()V
-HSPLcom/android/server/wm/ActivityStack;->canEnterPipOnTaskSwitch(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+PLcom/android/server/wm/ActivityStack;->applyAdjustForImeIfNeeded(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ActivityStack;->awakeFromSleepingLocked()V
+PLcom/android/server/wm/ActivityStack;->beginImeAdjustAnimation()V
+PLcom/android/server/wm/ActivityStack;->calculateDockedBoundsForConfigChange(Landroid/content/res/Configuration;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->calculatePinnedBoundsForConfigChange(Landroid/graphics/Rect;)Z
+HSPLcom/android/server/wm/ActivityStack;->canEnterPipOnTaskSwitch(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
 HSPLcom/android/server/wm/ActivityStack;->canShowWithInsecureKeyguard()Z
+PLcom/android/server/wm/ActivityStack;->canSpecifyOrientation()Z
 HSPLcom/android/server/wm/ActivityStack;->cancelInitializingActivities()V
+HSPLcom/android/server/wm/ActivityStack;->checkBehindFullscreenActivity(Lcom/android/server/wm/ActivityRecord;Ljava/util/function/Consumer;)Z
+HSPLcom/android/server/wm/ActivityStack;->checkCompleteDeferredRemoval()Z
 HSPLcom/android/server/wm/ActivityStack;->checkKeyguardVisibility(Lcom/android/server/wm/ActivityRecord;ZZ)Z
 HSPLcom/android/server/wm/ActivityStack;->checkReadyForSleep()V
-HSPLcom/android/server/wm/ActivityStack;->cleanUpActivityLocked(Lcom/android/server/wm/ActivityRecord;ZZ)V
-PLcom/android/server/wm/ActivityStack;->closeSystemDialogsLocked()V
-HSPLcom/android/server/wm/ActivityStack;->completePauseLocked(ZLcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack;->checkTranslucentActivityWaiting(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStack;->clearLaunchTime(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStack;->completePauseLocked(ZLcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack;->computeMinPosition(II)I
+HPLcom/android/server/wm/ActivityStack;->containsActivityFromStack(Ljava/util/List;)Z
 HSPLcom/android/server/wm/ActivityStack;->continueUpdateBounds()V
 PLcom/android/server/wm/ActivityStack;->convertActivityToTranslucent(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->createTaskRecord(ILandroid/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/TaskRecord;
-HSPLcom/android/server/wm/ActivityStack;->createTaskStack(IZLandroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->createTask(ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Z)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/ActivityStack;->createTask(ILandroid/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/ActivityStack;->createTask(ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Z)Lcom/android/server/wm/Task;
 PLcom/android/server/wm/ActivityStack;->deferScheduleMultiWindowModeChanged()Z
-HSPLcom/android/server/wm/ActivityStack;->destroyActivityLocked(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)Z
+PLcom/android/server/wm/ActivityStack;->deferUpdateBounds()V
+HPLcom/android/server/wm/ActivityStack;->dim(F)V
+PLcom/android/server/wm/ActivityStack;->dismissPip()V
 HSPLcom/android/server/wm/ActivityStack;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;Z)Z
-HSPLcom/android/server/wm/ActivityStack;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;Z)Z
-HSPLcom/android/server/wm/ActivityStack;->ensureActivitiesVisibleLocked(Lcom/android/server/wm/ActivityRecord;IZZ)V
-PLcom/android/server/wm/ActivityStack;->ensureVisibleActivitiesConfigurationLocked(Lcom/android/server/wm/ActivityRecord;Z)V
-HSPLcom/android/server/wm/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V
-PLcom/android/server/wm/ActivityStack;->findActivityLocked(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStack;->findTaskLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/RootActivityContainer$FindTaskResult;)V
-PLcom/android/server/wm/ActivityStack;->finishActivityAffinityLocked(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/ActivityStack;->finishActivityLocked(Lcom/android/server/wm/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;Z)Z
-HSPLcom/android/server/wm/ActivityStack;->finishActivityLocked(Lcom/android/server/wm/ActivityRecord;ILandroid/content/Intent;Ljava/lang/String;ZZ)Z
-HSPLcom/android/server/wm/ActivityStack;->finishActivityResultsLocked(Lcom/android/server/wm/ActivityRecord;ILandroid/content/Intent;)V
-HSPLcom/android/server/wm/ActivityStack;->finishCurrentActivityLocked(Lcom/android/server/wm/ActivityRecord;IZLjava/lang/String;)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStack;->finishDisabledPackageActivitiesLocked(Ljava/lang/String;Ljava/util/Set;ZZI)Z
-HSPLcom/android/server/wm/ActivityStack;->finishTopCrashedActivityLocked(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)Lcom/android/server/wm/TaskRecord;
-PLcom/android/server/wm/ActivityStack;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
-HSPLcom/android/server/wm/ActivityStack;->getAdjustedPositionForTask(Lcom/android/server/wm/TaskRecord;ILcom/android/server/wm/ActivityRecord;)I
-HSPLcom/android/server/wm/ActivityStack;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V
-HSPLcom/android/server/wm/ActivityStack;->getAllTasks()Ljava/util/ArrayList;
+HSPLcom/android/server/wm/ActivityStack;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HSPLcom/android/server/wm/ActivityStack;->dumpActivities(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;Z)Z
+HPLcom/android/server/wm/ActivityStack;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/ActivityStack;->dumpDebugInnerStackOnly(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/ActivityStack;->endImeAdjustAnimation()V
+HPLcom/android/server/wm/ActivityStack;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZ)V
+HSPLcom/android/server/wm/ActivityStack;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZZ)V
+PLcom/android/server/wm/ActivityStack;->ensureVisibleActivitiesConfiguration(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/ActivityStack;->executeAppTransition(Landroid/app/ActivityOptions;)V
+HPLcom/android/server/wm/ActivityStack;->fillsParent()Z
+HSPLcom/android/server/wm/ActivityStack;->findPositionForTask(Lcom/android/server/wm/Task;I)I
+HPLcom/android/server/wm/ActivityStack;->findPositionForTask(Lcom/android/server/wm/Task;IZ)I
+PLcom/android/server/wm/ActivityStack;->finishAllActivitiesImmediately()V
+PLcom/android/server/wm/ActivityStack;->finishIfVoiceActivity(Lcom/android/server/wm/ActivityRecord;Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityStack;->finishIfVoiceTask(Lcom/android/server/wm/Task;Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityStack;->finishTopCrashedActivityLocked(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityStack;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
+HSPLcom/android/server/wm/ActivityStack;->getAnimatingActivityRegistry()Lcom/android/server/wm/AnimatingActivityRegistry;
 PLcom/android/server/wm/ActivityStack;->getAnimationOrCurrentBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/ActivityStack;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
-HSPLcom/android/server/wm/ActivityStack;->getChildAt(I)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/ActivityStack;->getChildCount()I
-PLcom/android/server/wm/ActivityStack;->getDefaultPictureInPictureBounds(F)Landroid/graphics/Rect;
-HSPLcom/android/server/wm/ActivityStack;->getDisplay()Lcom/android/server/wm/ActivityDisplay;
+HSPLcom/android/server/wm/ActivityStack;->getBounds()Landroid/graphics/Rect;
+HSPLcom/android/server/wm/ActivityStack;->getBounds(Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/ActivityStack;->getDimBounds(Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/ActivityStack;->getDisplay()Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/ActivityStack;->getDisplayId()I
+HPLcom/android/server/wm/ActivityStack;->getDockSide()I
+HPLcom/android/server/wm/ActivityStack;->getDockSide(Landroid/content/res/Configuration;Landroid/graphics/Rect;)I
+HPLcom/android/server/wm/ActivityStack;->getDockSide(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;Landroid/graphics/Rect;)I
+PLcom/android/server/wm/ActivityStack;->getDockSideForDisplay(Lcom/android/server/wm/DisplayContent;)I
 PLcom/android/server/wm/ActivityStack;->getDumpActivitiesLocked(Ljava/lang/String;)Ljava/util/ArrayList;
-HSPLcom/android/server/wm/ActivityStack;->getParent()Lcom/android/server/wm/ActivityDisplay;
-HSPLcom/android/server/wm/ActivityStack;->getParent()Lcom/android/server/wm/ConfigurationContainer;
+PLcom/android/server/wm/ActivityStack;->getFinalAnimationBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityStack;->getMinTopStackBottom(Landroid/graphics/Rect;I)I
+HSPLcom/android/server/wm/ActivityStack;->getName()Ljava/lang/String;
+PLcom/android/server/wm/ActivityStack;->getOrientation()I
+HSPLcom/android/server/wm/ActivityStack;->getRawBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityStack;->getRawBounds(Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/ActivityStack;->getRelativeDisplayedPosition(Landroid/graphics/Point;)V
 HSPLcom/android/server/wm/ActivityStack;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStack;->getRunningTasks(Ljava/util/List;IIIZ)V
-HSPLcom/android/server/wm/ActivityStack;->getStackId()I
-HSPLcom/android/server/wm/ActivityStack;->getTaskStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/ActivityStack;->getTopActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityStack;->getStackDockedModeBounds(Landroid/content/res/Configuration;ZLandroid/graphics/Rect;Landroid/graphics/Rect;IZ)V
+HPLcom/android/server/wm/ActivityStack;->getStackDockedModeBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->getStackId()I
+HSPLcom/android/server/wm/ActivityStack;->getStackOutset()I
+HSPLcom/android/server/wm/ActivityStack;->getTile()Lcom/android/server/wm/TaskTile;
 HSPLcom/android/server/wm/ActivityStack;->getTopDismissingKeyguardActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityStack;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityStack;->getVisibility(Lcom/android/server/wm/ActivityRecord;)I
-HSPLcom/android/server/wm/ActivityStack;->getWindowContainerBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/ActivityStack;->goToSleep()V
-HSPLcom/android/server/wm/ActivityStack;->goToSleepIfPossible(Z)Z
-PLcom/android/server/wm/ActivityStack;->handleAppCrash(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityStack;->goToSleep()V
+HPLcom/android/server/wm/ActivityStack;->goToSleepIfPossible(Z)Z
+HSPLcom/android/server/wm/ActivityStack;->handleAppDied(Lcom/android/server/wm/WindowProcessController;)Z
 HSPLcom/android/server/wm/ActivityStack;->handleAppDiedLocked(Lcom/android/server/wm/WindowProcessController;)Z
-PLcom/android/server/wm/ActivityStack;->isAnimatingBoundsToFullscreen()Z
+PLcom/android/server/wm/ActivityStack;->inLruList(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityStack;->isAdjustedForIme()Z
+HSPLcom/android/server/wm/ActivityStack;->isAdjustedForMinimizedDockedStack()Z
+HSPLcom/android/server/wm/ActivityStack;->isAnimatingBounds()Z
+HPLcom/android/server/wm/ActivityStack;->isAnimatingBoundsToFullscreen()Z
+PLcom/android/server/wm/ActivityStack;->isAnimatingForIme()Z
 HSPLcom/android/server/wm/ActivityStack;->isAttached()Z
 HSPLcom/android/server/wm/ActivityStack;->isCompatible(II)Z
+PLcom/android/server/wm/ActivityStack;->isControlledByTaskOrganizer()Z
 HSPLcom/android/server/wm/ActivityStack;->isFocusable()Z
 HSPLcom/android/server/wm/ActivityStack;->isFocusableAndVisible()Z
 HSPLcom/android/server/wm/ActivityStack;->isFocusedStackOnDisplay()Z
+HSPLcom/android/server/wm/ActivityStack;->isForceScaled()Z
+HSPLcom/android/server/wm/ActivityStack;->isHomeOrRecentsStack()Z
 HSPLcom/android/server/wm/ActivityStack;->isInStackLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityStack;->isInStackLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStack;->isInStackLocked(Lcom/android/server/wm/TaskRecord;)Z
+HSPLcom/android/server/wm/ActivityStack;->isMinimizedDockAndHomeStackResizable()Z
+HPLcom/android/server/wm/ActivityStack;->isOnHomeDisplay()Z
+HPLcom/android/server/wm/ActivityStack;->isOpaqueActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/ActivityStack;->isSingleTaskInstance()Z
 HSPLcom/android/server/wm/ActivityStack;->isStackTranslucent(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->isTaskAnimating()Z
+HSPLcom/android/server/wm/ActivityStack;->isTaskSwitch(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityStack;->isTopActivityFocusable()Z
+HPLcom/android/server/wm/ActivityStack;->isTopActivityVisible()Z
+HPLcom/android/server/wm/ActivityStack;->isTopRunningNonDelayed(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityStack;->isTopSplitScreenStack()Z
 HSPLcom/android/server/wm/ActivityStack;->isTopStackOnDisplay()Z
-HSPLcom/android/server/wm/ActivityStack;->lambda$resumeTopActivityInNextFocusableStack$1$ActivityStack(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->lambda$setWindowingMode$0$ActivityStack(IZZZZZ)V
-HSPLcom/android/server/wm/ActivityStack;->logStartActivity(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->makeInvisible(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->makeVisibleAndRestartIfNeeded(Lcom/android/server/wm/ActivityRecord;IZZLcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->isTransientWindowingMode(I)Z
+HPLcom/android/server/wm/ActivityStack;->lambda$GDPUuzTvyfp2z6wYxqAF0vhMJK8(Lcom/android/server/wm/Task;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityStack;->lambda$MbOt7bGpxw9wmjZ8kOCkYcDCqMQ(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$N2PfGF62p6Y1TYGt9lvFtsW9LmQ(Lcom/android/server/wm/ActivityRecord;Landroid/os/IBinder;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$U5MWhpArTVT_b8W6GtTa1Ao8HFs(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$VIuWlCdKwIo4qqRlevMLniedZ7o(Lcom/android/server/wm/Task;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->lambda$YAQEcQUrLqR06xiJJApMvOPIxhg(Lcom/android/server/wm/Task;Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityStack;->lambda$animateResizePinnedStack$15$ActivityStack(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZI)V
+HPLcom/android/server/wm/ActivityStack;->lambda$awakeFromSleepingLocked$5(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->lambda$beginImeAdjustAnimation$18(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->lambda$calculatePinnedBoundsForConfigChange$17$ActivityStack(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/ActivityStack;->lambda$dhfbladKtxXwwdCS2dFdAfUfBN4(Lcom/android/server/wm/Task;Landroid/view/ITaskOrganizer;)V
+PLcom/android/server/wm/ActivityStack;->lambda$dismissPip$16$ActivityStack()V
+HPLcom/android/server/wm/ActivityStack;->lambda$dumpActivities$13$ActivityStack(ZLjava/io/PrintWriter;Ljava/io/FileDescriptor;ZZLjava/lang/String;Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ActivityStack;->lambda$dumpActivities$13(ZLjava/io/PrintWriter;Ljava/io/FileDescriptor;ZZLjava/lang/String;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->lambda$dumpDebug$21(Landroid/util/proto/ProtoOutputStream;ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->lambda$dumpDebugInnerStackOnly$22(Landroid/util/proto/ProtoOutputStream;ILcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->lambda$endImeAdjustAnimation$19(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->lambda$finishAllActivitiesImmediately$9(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->lambda$finishIfVoiceTask$8(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->lambda$getDumpActivitiesLocked$14(Lcom/android/server/am/ActivityManagerService$ItemMatcher;Ljava/util/ArrayList;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStack;->lambda$goToSleep$6(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->lambda$navigateUpTo$10(Landroid/content/ComponentName;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$navigateUpTo$11(Lcom/android/server/wm/ActivityRecord;[I[Landroid/content/Intent;Lcom/android/server/wm/ActivityRecord;)Ljava/lang/Boolean;
+PLcom/android/server/wm/ActivityStack;->lambda$onAnimationStart$20(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityStack;->lambda$onConfigurationChanged$0(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/ActivityStack;->lambda$resetCurrentBoundsAnimation$17$ActivityStack(Lcom/android/server/wm/BoundsAnimationController;)V
+HSPLcom/android/server/wm/ActivityStack;->lambda$setWindowingMode$1$ActivityStack(IZZZZZ)V
+HSPLcom/android/server/wm/ActivityStack;->lambda$topRunningActivity$2(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$topRunningNonOverlayTaskActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->lambda$willActivityBeVisible$12(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityStack;->lastAnimatingBoundsWasToFullscreen()Z
 HSPLcom/android/server/wm/ActivityStack;->minimalResumeActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityStack;->moveTaskToBackLocked(I)Z
-PLcom/android/server/wm/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/wm/TaskRecord;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityStack;->moveToBack(Ljava/lang/String;Lcom/android/server/wm/TaskRecord;)V
+PLcom/android/server/wm/ActivityStack;->moveHomeStackToFrontIfNeeded(ZLcom/android/server/wm/DisplayContent;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityStack;->moveTaskToBack(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/wm/Task;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityStack;->moveTaskToFrontLocked(Lcom/android/server/wm/Task;ZLandroid/app/ActivityOptions;Lcom/android/server/am/AppTimeTracker;ZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityStack;->moveToBack(Ljava/lang/String;Lcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/ActivityStack;->moveToFront(Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/wm/TaskRecord;)V
+HSPLcom/android/server/wm/ActivityStack;->moveToFront(Ljava/lang/String;Lcom/android/server/wm/Task;)V
 PLcom/android/server/wm/ActivityStack;->moveToFrontAndResumeStateIfNeeded(Lcom/android/server/wm/ActivityRecord;ZZZLjava/lang/String;)V
-PLcom/android/server/wm/ActivityStack;->navigateUpToLocked(Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;ILandroid/content/Intent;)Z
+PLcom/android/server/wm/ActivityStack;->navigateUpTo(Lcom/android/server/wm/ActivityRecord;Landroid/content/Intent;ILandroid/content/Intent;)Z
 HSPLcom/android/server/wm/ActivityStack;->notifyActivityDrawnLocked(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->numActivities()I
 HSPLcom/android/server/wm/ActivityStack;->onActivityAddedToStack(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->onActivityRemovedFromStack(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStack;->onActivityRemovedFromStack(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityStack;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack$ActivityState;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStack;->onAllWindowsDrawn()V
+HPLcom/android/server/wm/ActivityStack;->onAnimationEnd(ZLandroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/ActivityStack;->onAnimationStart(ZZI)Z
+HSPLcom/android/server/wm/ActivityStack;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/ActivityStack;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/ActivityStack;->onLockTaskPackagesUpdated()V
-PLcom/android/server/wm/ActivityStack;->onParentChanged()V
-PLcom/android/server/wm/ActivityStack;->onPipAnimationEndResize()V
-PLcom/android/server/wm/ActivityStack;->positionChildWindowContainerAtBottom(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->positionChildWindowContainerAtTop(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/ActivityStack;->postAddTask(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityStack;Z)V
-PLcom/android/server/wm/ActivityStack;->prepareFreezingTaskBounds()V
-HSPLcom/android/server/wm/ActivityStack;->rankTaskLayers(I)I
-PLcom/android/server/wm/ActivityStack;->remove()V
-HSPLcom/android/server/wm/ActivityStack;->removeActivityFromHistoryLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStack;->removeHistoryRecordsForAppLocked(Lcom/android/server/wm/WindowProcessController;)Z
-HSPLcom/android/server/wm/ActivityStack;->removeTask(Lcom/android/server/wm/TaskRecord;Ljava/lang/String;I)V
-PLcom/android/server/wm/ActivityStack;->resetTargetTaskIfNeededLocked(Lcom/android/server/wm/TaskRecord;Z)Landroid/app/ActivityOptions;
-PLcom/android/server/wm/ActivityStack;->resetTaskIfNeededLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityStack;->resize(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/ActivityStack;->resumeTopActivityInNextFocusableStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Ljava/lang/String;)Z
+HSPLcom/android/server/wm/ActivityStack;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/ActivityStack;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HPLcom/android/server/wm/ActivityStack;->onPipAnimationEndResize()V
+HPLcom/android/server/wm/ActivityStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)I
+HSPLcom/android/server/wm/ActivityStack;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/ActivityStack;->positionChildAtBottom(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->positionChildAtBottom(Lcom/android/server/wm/Task;Z)V
+HSPLcom/android/server/wm/ActivityStack;->positionChildAtTop(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStack;->postReparent()V
+HSPLcom/android/server/wm/ActivityStack;->prepareFreezingTaskBounds()V
+HSPLcom/android/server/wm/ActivityStack;->prepareSurfaces()V
+HPLcom/android/server/wm/ActivityStack;->processTaskResizeBounds(Lcom/android/server/wm/Task;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/ActivityStack;->removeChild(Lcom/android/server/wm/WindowContainer;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStack;->removeDestroyTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStack;->removeHistoryRecordsForApp(Lcom/android/server/wm/WindowProcessController;)Z
+HSPLcom/android/server/wm/ActivityStack;->removeHistoryRecordsForApp(Ljava/util/ArrayList;Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStack;->removeIfPossible()V
+PLcom/android/server/wm/ActivityStack;->removeImmediately()V
+HSPLcom/android/server/wm/ActivityStack;->removeLaunchTickMessages()V
+PLcom/android/server/wm/ActivityStack;->removePauseTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->removeStopTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->removeTimeoutsForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->repositionSplitScreenStackAfterRotation(Landroid/content/res/Configuration;ZLandroid/graphics/Rect;)V
+HSPLcom/android/server/wm/ActivityStack;->resetAdjustedForIme(Z)V
+PLcom/android/server/wm/ActivityStack;->resetCurrentBoundsAnimation(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityStack;->resetTaskIfNeeded(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/ActivityStack;->resize(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V
+HSPLcom/android/server/wm/ActivityStack;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityStack;->resumeNextFocusableActivityWhenStackIsEmpty(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
 HSPLcom/android/server/wm/ActivityStack;->resumeTopActivityInnerLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
 HSPLcom/android/server/wm/ActivityStack;->resumeTopActivityUncheckedLocked(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
-HSPLcom/android/server/wm/ActivityStack;->returnsToHomeStack()Z
-PLcom/android/server/wm/ActivityStack;->sendActivityResultLocked(ILcom/android/server/wm/ActivityRecord;Ljava/lang/String;IILandroid/content/Intent;)V
-PLcom/android/server/wm/ActivityStack;->setBounds(Landroid/graphics/Rect;)I
-HSPLcom/android/server/wm/ActivityStack;->setParent(Lcom/android/server/wm/ActivityDisplay;)V
+HPLcom/android/server/wm/ActivityStack;->returnsToHomeStack()Z
+PLcom/android/server/wm/ActivityStack;->scheduleDestroyTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->scheduleLaunchTickForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->schedulePauseTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStack;->scheduleStopTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStack;->setAdjustedBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityStack;->setAdjustedForIme(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/ActivityStack;->setAnimationFinalBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
+HSPLcom/android/server/wm/ActivityStack;->setBounds(Landroid/graphics/Rect;)I
+HSPLcom/android/server/wm/ActivityStack;->setBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)I
 PLcom/android/server/wm/ActivityStack;->setPictureInPictureActions(Ljava/util/List;)V
-PLcom/android/server/wm/ActivityStack;->setPictureInPictureAspectRatio(F)V
+HPLcom/android/server/wm/ActivityStack;->setPictureInPictureAspectRatio(F)V
+HPLcom/android/server/wm/ActivityStack;->setPinnedStackAlpha(F)Z
+HPLcom/android/server/wm/ActivityStack;->setPinnedStackSize(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
+HSPLcom/android/server/wm/ActivityStack;->setResumedActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStack;->setTaskBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->setTaskBounds(Lcom/android/server/wm/Task;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStack;->setTaskDisplayedBounds(Landroid/graphics/Rect;)V
 PLcom/android/server/wm/ActivityStack;->setWindowingMode(I)V
 HSPLcom/android/server/wm/ActivityStack;->setWindowingMode(IZZZZZ)V
 HSPLcom/android/server/wm/ActivityStack;->setWindowingModeInSurfaceTransaction(IZZZZZ)V
 HSPLcom/android/server/wm/ActivityStack;->shouldBeVisible(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->shouldDeferStartOnMoveToFullscreen()Z
+HSPLcom/android/server/wm/ActivityStack;->shouldIgnoreInput()Z
 HSPLcom/android/server/wm/ActivityStack;->shouldSleepActivities()Z
 HSPLcom/android/server/wm/ActivityStack;->shouldSleepOrShutDownActivities()Z
 PLcom/android/server/wm/ActivityStack;->shouldUpRecreateTaskLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)Z
+PLcom/android/server/wm/ActivityStack;->snapDockedStackAfterRotation(Landroid/content/res/Configuration;Landroid/view/DisplayCutout;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/ActivityStack;->startActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ZZLandroid/app/ActivityOptions;)V
-HSPLcom/android/server/wm/ActivityStack;->startPausingLocked(ZZLcom/android/server/wm/ActivityRecord;Z)Z
-HSPLcom/android/server/wm/ActivityStack;->stopActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityStack;->supportsSplitScreenWindowingMode()Z
-HSPLcom/android/server/wm/ActivityStack;->taskForIdLocked(I)Lcom/android/server/wm/TaskRecord;
+HPLcom/android/server/wm/ActivityStack;->startPausingLocked(ZZLcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->stopDimming()V
+HSPLcom/android/server/wm/ActivityStack;->toShortString()Ljava/lang/String;
 HSPLcom/android/server/wm/ActivityStack;->toString()Ljava/lang/String;
 HSPLcom/android/server/wm/ActivityStack;->topActivityOccludesKeyguard()Z
-HSPLcom/android/server/wm/ActivityStack;->topRunningActivityLocked()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStack;->topRunningActivityLocked(Z)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityStack;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/ActivityStack;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/ActivityStack;->topRunningNonDelayedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
 PLcom/android/server/wm/ActivityStack;->topRunningNonOverlayTaskActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityStack;->updateActivityApplicationInfoLocked(Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/wm/ActivityStack;->transferSingleTaskToOrganizer(Lcom/android/server/wm/Task;Landroid/view/ITaskOrganizer;)V
+PLcom/android/server/wm/ActivityStack;->transferToTaskOrganizer(Landroid/view/ITaskOrganizer;)V
+HPLcom/android/server/wm/ActivityStack;->updateAdjustForIme(FFZ)Z
+HPLcom/android/server/wm/ActivityStack;->updateAdjustedBounds()V
 PLcom/android/server/wm/ActivityStack;->updateBoundsAllowed(Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/ActivityStack;->updateLRUListLocked(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/ActivityStack;->updateDisplayedBoundsAllowed(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/ActivityStack;->updateLruList(Lcom/android/server/wm/ActivityRecord;)Z
 PLcom/android/server/wm/ActivityStack;->updatePictureInPictureModeForPinnedStackAnimation(Landroid/graphics/Rect;Z)V
-PLcom/android/server/wm/ActivityStack;->updateTransitLocked(ILandroid/app/ActivityOptions;)V
-PLcom/android/server/wm/ActivityStack;->willActivityBeVisibleLocked(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/ActivityStack;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HSPLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;Z)V
+HSPLcom/android/server/wm/ActivityStack;->updateSurfaceBounds()V
+HSPLcom/android/server/wm/ActivityStack;->updateSurfaceSize(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/ActivityStack;->updateTaskOrganizerState()V
+HPLcom/android/server/wm/ActivityStack;->updateTransitLocked(ILandroid/app/ActivityOptions;)V
+PLcom/android/server/wm/ActivityStack;->willActivityBeVisible(Landroid/os/IBinder;)Z
+HSPLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Landroid/os/Looper;)V
+HPLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleFromMessage(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;Z)V
 HSPLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;->handleMessageInner(Landroid/os/Message;)Z
+HSPLcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStackSupervisor$1;)V
+PLcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;->lambda$n0VOwWNM3mud17SnHip7XMiWlWE(Lcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;->process(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/DisplayContent;ZZ)V
+PLcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;->processTask(Lcom/android/server/wm/Task;)V
 PLcom/android/server/wm/ActivityStackSupervisor$PendingActivityLaunch;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityStack;Lcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;-><clinit>()V
 HSPLcom/android/server/wm/ActivityStackSupervisor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Looper;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->acquireLaunchWakelock()V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/ActivityStackSupervisor;->activityRelaunchedLocked(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->activityRelaunchingLocked(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->activitySleptLocked(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->access$100(Lcom/android/server/wm/ActivityStackSupervisor;)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/ActivityStackSupervisor;->access$200(Lcom/android/server/wm/ActivityStackSupervisor;)Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityStackSupervisor;->access$300(Lcom/android/server/wm/ActivityStackSupervisor;)Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityStackSupervisor;->access$400(Lcom/android/server/wm/ActivityStackSupervisor;)Landroid/graphics/Rect;
+PLcom/android/server/wm/ActivityStackSupervisor;->access$500(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->access$600(Lcom/android/server/wm/ActivityStackSupervisor;)Lcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;
+PLcom/android/server/wm/ActivityStackSupervisor;->access$600(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->access$700(Lcom/android/server/wm/ActivityStackSupervisor;)Lcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;
+HPLcom/android/server/wm/ActivityStackSupervisor;->acquireLaunchWakelock()V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->activityIdleInternal(Lcom/android/server/wm/ActivityRecord;ZZLandroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->activityIdleInternalLocked(Landroid/os/IBinder;ZZLandroid/content/res/Configuration;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityStackSupervisor;->activityRelaunchedLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->activitySleptLocked(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->addToMultiWindowModeChangedList(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->addToPipModeChangedList(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->beginDeferResume()V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->canPlaceEntityOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->canUseActivityOptionsLaunchBounds(Landroid/app/ActivityOptions;)Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->checkFinishBootingLocked()Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->checkReadyForSleepLocked(Z)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->checkReadyForSleepLocked(Z)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->checkStartAnyActivityPermission(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIILjava/lang/String;ZZLcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack;)Z
-PLcom/android/server/wm/ActivityStackSupervisor;->cleanUpRemovedTaskLocked(Lcom/android/server/wm/TaskRecord;ZZ)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->cleanupActivity(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->comeOutOfSleepIfNeededLocked()V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->createRunningTasks()Lcom/android/server/wm/RunningTasks;
+HPLcom/android/server/wm/ActivityStackSupervisor;->cleanUpRemovedTaskLocked(Lcom/android/server/wm/Task;ZZ)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->cleanupActivity(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->comeOutOfSleepIfNeededLocked()V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->continueUpdateRecentsHomeStackBounds()V
+PLcom/android/server/wm/ActivityStackSupervisor;->deferUpdateRecentsHomeStackBounds()V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;ZLjava/lang/String;Lcom/android/server/wm/TaskRecord;)Z
+HSPLcom/android/server/wm/ActivityStackSupervisor;->dumpHistoryList(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/util/List;Ljava/lang/String;Ljava/lang/String;ZZZLjava/lang/String;ZLjava/lang/String;Lcom/android/server/wm/Task;)Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->endDeferResume()V
-PLcom/android/server/wm/ActivityStackSupervisor;->findTaskToMoveToFront(Lcom/android/server/wm/TaskRecord;ILandroid/app/ActivityOptions;Ljava/lang/String;Z)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;II)I
+HPLcom/android/server/wm/ActivityStackSupervisor;->findTaskToMoveToFront(Lcom/android/server/wm/Task;ILandroid/app/ActivityOptions;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->getActionRestrictionForCallingPackage(Ljava/lang/String;Ljava/lang/String;II)I
 HSPLcom/android/server/wm/ActivityStackSupervisor;->getActivityMetricsLogger()Lcom/android/server/wm/ActivityMetricsLogger;
-HSPLcom/android/server/wm/ActivityStackSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIZ)I
+HPLcom/android/server/wm/ActivityStackSupervisor;->getComponentRestrictionForCallingPackage(Landroid/content/pm/ActivityInfo;Ljava/lang/String;IIZ)I
 HSPLcom/android/server/wm/ActivityStackSupervisor;->getKeyguardController()Lcom/android/server/wm/KeyguardController;
 HSPLcom/android/server/wm/ActivityStackSupervisor;->getLaunchParamsController()Lcom/android/server/wm/LaunchParamsController;
-HSPLcom/android/server/wm/ActivityStackSupervisor;->getNextTaskIdForUserLocked(I)I
-PLcom/android/server/wm/ActivityStackSupervisor;->getReparentTargetStack(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/ActivityStackSupervisor;->getNextTaskIdForUser()I
+HSPLcom/android/server/wm/ActivityStackSupervisor;->getNextTaskIdForUser(I)I
+PLcom/android/server/wm/ActivityStackSupervisor;->getNextTaskIdForUserLocked(I)I
+PLcom/android/server/wm/ActivityStackSupervisor;->getReparentTargetStack(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/ActivityStackSupervisor;->getRunningTasks()Lcom/android/server/wm/RunningTasks;
+HSPLcom/android/server/wm/ActivityStackSupervisor;->getSystemChooserActivity()Landroid/content/ComponentName;
 PLcom/android/server/wm/ActivityStackSupervisor;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HSPLcom/android/server/wm/ActivityStackSupervisor;->goingToSleepLocked()V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/TaskRecord;IILcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/TaskRecord;IILcom/android/server/wm/ActivityStack;Z)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->handleTopResumedStateReleased(Z)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->goingToSleepLocked()V
+HPLcom/android/server/wm/ActivityStackSupervisor;->handleForcedResizableTaskIfNeeded(Lcom/android/server/wm/Task;I)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->handleLaunchTaskBehindCompleteLocked(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;IILcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->handleNonResizableTaskIfNeeded(Lcom/android/server/wm/Task;IILcom/android/server/wm/ActivityStack;Z)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->handleTopResumedStateReleased(Z)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->initPowerManagement()V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->initialize()V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->isCallerAllowedToLaunchOnDisplay(IIILandroid/content/pm/ActivityInfo;)Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->isCurrentProfileLocked(I)Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->lambda$activityIdleInternalLocked$0$ActivityStackSupervisor()V
-PLcom/android/server/wm/ActivityStackSupervisor;->lambda$moveTasksToFullscreenStackLocked$1$ActivityStackSupervisor(Lcom/android/server/wm/ActivityStack;IZ)V
+PLcom/android/server/wm/ActivityStackSupervisor;->isStoppingNoHistoryActivity()Z
+PLcom/android/server/wm/ActivityStackSupervisor;->lambda$BFgD0ahFSDg4CqQNytqWrPRgFII(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->lambda$activityIdleInternal$0$ActivityStackSupervisor()V
+PLcom/android/server/wm/ActivityStackSupervisor;->lambda$activityIdleInternalLocked$0$ActivityStackSupervisor()V
+PLcom/android/server/wm/ActivityStackSupervisor;->lambda$mLKHIIzkTAK9QSlSxia8-84y15M(Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->lambda$moveTasksToFullscreenStackLocked$1$ActivityStackSupervisor(Lcom/android/server/wm/ActivityStack;Z)V
 PLcom/android/server/wm/ActivityStackSupervisor;->lambda$removeStack$2$ActivityStackSupervisor(Lcom/android/server/wm/ActivityStack;)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->logIfTransactionTooLarge(Landroid/content/Intent;Landroid/os/Bundle;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->logStackState()V
+PLcom/android/server/wm/ActivityStackSupervisor;->logStackState()V
+HPLcom/android/server/wm/ActivityStackSupervisor;->moveHomeStackToFrontIfNeeded(ILcom/android/server/wm/DisplayContent;Ljava/lang/String;)V
 PLcom/android/server/wm/ActivityStackSupervisor;->moveTasksToFullscreenStackInSurfaceTransaction(Lcom/android/server/wm/ActivityStack;IZ)V
-PLcom/android/server/wm/ActivityStackSupervisor;->moveTasksToFullscreenStackLocked(Lcom/android/server/wm/ActivityStack;IZ)V
 PLcom/android/server/wm/ActivityStackSupervisor;->moveTasksToFullscreenStackLocked(Lcom/android/server/wm/ActivityStack;Z)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->nextTaskIdForUser(II)I
 HSPLcom/android/server/wm/ActivityStackSupervisor;->notifyAppTransitionDone()V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->onRecentTaskAdded(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->onRecentTaskRemoved(Lcom/android/server/wm/TaskRecord;ZZ)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->onRecentTaskAdded(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->onRecentTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->onSystemReady()V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->onUserUnlocked(I)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/wm/ActivityRecord;ZZ)Ljava/util/ArrayList;
+PLcom/android/server/wm/ActivityStackSupervisor;->onUserUnlocked(I)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->printThisActivity(Ljava/io/PrintWriter;Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;ZLjava/lang/String;)Z
+PLcom/android/server/wm/ActivityStackSupervisor;->processStoppingActivities(Lcom/android/server/wm/ActivityRecord;ZZLjava/lang/String;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->processStoppingActivitiesLocked(Lcom/android/server/wm/ActivityRecord;ZZ)Ljava/util/ArrayList;
+HSPLcom/android/server/wm/ActivityStackSupervisor;->processStoppingAndFinishingActivities(Lcom/android/server/wm/ActivityRecord;ZLjava/lang/String;)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->readyToResume()Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->realStartActivityLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;ZZ)Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->removeSleepTimeouts()V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->removeHistoryRecords(Lcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->removeHistoryRecords(Ljava/util/ArrayList;Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->removeIdleTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->removeSleepTimeouts()V
 PLcom/android/server/wm/ActivityStackSupervisor;->removeStack(Lcom/android/server/wm/ActivityStack;)V
 PLcom/android/server/wm/ActivityStackSupervisor;->removeStackInSurfaceTransaction(Lcom/android/server/wm/ActivityStack;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->removeTaskByIdLocked(IZZLjava/lang/String;)Z
-PLcom/android/server/wm/ActivityStackSupervisor;->removeTaskByIdLocked(IZZZLjava/lang/String;)Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->removeTask(Lcom/android/server/wm/Task;ZZLjava/lang/String;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->removeTaskById(IZZLjava/lang/String;)Z
+PLcom/android/server/wm/ActivityStackSupervisor;->removeTimeoutsForActivityLocked(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->reportActivityLaunchedLocked(ZLcom/android/server/wm/ActivityRecord;JI)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->reportResumedActivityLocked(Lcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/ActivityStackSupervisor;->reportWaitingActivityLaunchedIfNeeded(Lcom/android/server/wm/ActivityRecord;I)V
-PLcom/android/server/wm/ActivityStackSupervisor;->resizePinnedStackLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/ActivityStackSupervisor;->resizeDockedStackLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->resizeDockedStackLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZ)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->resizePinnedStackLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;ILandroid/app/ProfilerInfo;)Landroid/content/pm/ActivityInfo;
 PLcom/android/server/wm/ActivityStackSupervisor;->resolveActivity(Landroid/content/Intent;Ljava/lang/String;ILandroid/app/ProfilerInfo;II)Landroid/content/pm/ActivityInfo;
-HSPLcom/android/server/wm/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
-PLcom/android/server/wm/ActivityStackSupervisor;->restoreRecentTaskLocked(Lcom/android/server/wm/TaskRecord;Landroid/app/ActivityOptions;Z)Z
-HSPLcom/android/server/wm/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdateMultiWindowMode(Lcom/android/server/wm/TaskRecord;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdatePictureInPictureModeIfNeeded(Lcom/android/server/wm/TaskRecord;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdatePictureInPictureModeIfNeeded(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityStack;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->resolveIntent(Landroid/content/Intent;Ljava/lang/String;III)Landroid/content/pm/ResolveInfo;
+PLcom/android/server/wm/ActivityStackSupervisor;->restoreRecentTaskLocked(Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Z)Z
+HPLcom/android/server/wm/ActivityStackSupervisor;->scheduleIdle()V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleIdleLocked()V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->scheduleIdleTimeout(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleIdleTimeoutLocked(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->scheduleLaunchTaskBehindComplete(Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleProcessStoppingAndFinishingActivities()V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleResumeTopActivities()V
+HPLcom/android/server/wm/ActivityStackSupervisor;->scheduleSleepTimeout()V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->scheduleTopResumedActivityStateIfNeeded()V
+HPLcom/android/server/wm/ActivityStackSupervisor;->scheduleTopResumedStateLossTimeout(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdateMultiWindowMode(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdatePictureInPictureModeIfNeeded(Lcom/android/server/wm/Task;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->scheduleUpdatePictureInPictureModeIfNeeded(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityStack;)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->setLaunchSource(I)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->setNextTaskIdForUserLocked(II)V
+PLcom/android/server/wm/ActivityStackSupervisor;->setNextTaskIdForUser(II)V
+PLcom/android/server/wm/ActivityStackSupervisor;->setNextTaskIdForUserLocked(II)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
-HSPLcom/android/server/wm/ActivityStackSupervisor;->setSplitScreenResizing(Z)V
+PLcom/android/server/wm/ActivityStackSupervisor;->setResizingDuringAnimation(Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->setRunningTasks(Lcom/android/server/wm/RunningTasks;)V
+PLcom/android/server/wm/ActivityStackSupervisor;->setSplitScreenResizing(Z)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->startActivityFromRecents(IIILcom/android/server/wm/SafeActivityOptions;)I
-HSPLcom/android/server/wm/ActivityStackSupervisor;->startSpecificActivityLocked(Lcom/android/server/wm/ActivityRecord;ZZ)V
+PLcom/android/server/wm/ActivityStackSupervisor;->shutdownLocked(I)Z
+HPLcom/android/server/wm/ActivityStackSupervisor;->startActivityFromRecents(IIILcom/android/server/wm/SafeActivityOptions;)I
+HSPLcom/android/server/wm/ActivityStackSupervisor;->startSpecificActivity(Lcom/android/server/wm/ActivityRecord;ZZ)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->stopWaitingForActivityVisible(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStackSupervisor;->stopWaitingForActivityVisible(Lcom/android/server/wm/ActivityRecord;J)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->updateHomeProcess(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityStackSupervisor;->updatePictureInPictureMode(Lcom/android/server/wm/TaskRecord;Landroid/graphics/Rect;Z)V
+PLcom/android/server/wm/ActivityStackSupervisor;->updatePictureInPictureMode(Lcom/android/server/wm/Task;Landroid/graphics/Rect;Z)V
 HSPLcom/android/server/wm/ActivityStackSupervisor;->updateTopResumedActivityIfNeeded()V
 PLcom/android/server/wm/ActivityStackSupervisor;->wakeUp(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityStartController$StartHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/ActivityStartController$StartHandler;-><init>(Lcom/android/server/wm/ActivityStartController;Landroid/os/Looper;)V
+HPLcom/android/server/wm/ActivityStartController$StartHandler;->handleMessage(Landroid/os/Message;)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/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStarter$Factory;)V
+PLcom/android/server/wm/ActivityStartController;->access$000(Lcom/android/server/wm/ActivityStartController;)Lcom/android/server/wm/ActivityTaskManagerService;
 PLcom/android/server/wm/ActivityStartController;->addPendingActivityLaunch(Lcom/android/server/wm/ActivityStackSupervisor$PendingActivityLaunch;)V
-HSPLcom/android/server/wm/ActivityStartController;->checkTargetUser(IZIILjava/lang/String;)I
-HSPLcom/android/server/wm/ActivityStartController;->clearPendingActivityLaunches(Ljava/lang/String;)Z
+PLcom/android/server/wm/ActivityStartController;->checkTargetUser(IZIILjava/lang/String;)I
+HPLcom/android/server/wm/ActivityStartController;->clearPendingActivityLaunches(Ljava/lang/String;)Z
 HSPLcom/android/server/wm/ActivityStartController;->doPendingActivityLaunches(Z)V
 PLcom/android/server/wm/ActivityStartController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStartController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/wm/ActivityStartController;->getPendingRemoteAnimationRegistry()Lcom/android/server/wm/PendingRemoteAnimationRegistry;
 HSPLcom/android/server/wm/ActivityStartController;->obtainStarter(Landroid/content/Intent;Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
 HSPLcom/android/server/wm/ActivityStartController;->onExecutionComplete(Lcom/android/server/wm/ActivityStarter;)V
 PLcom/android/server/wm/ActivityStartController;->postStartActivityProcessingForLastStarter(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityStack;)V
 PLcom/android/server/wm/ActivityStartController;->registerRemoteAnimationForNextActivityStart(Ljava/lang/String;Landroid/view/RemoteAnimationAdapter;)V
-PLcom/android/server/wm/ActivityStartController;->schedulePendingActivityLaunches(J)V
-PLcom/android/server/wm/ActivityStartController;->startActivities(Landroid/app/IApplicationThread;IIILjava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/wm/SafeActivityOptions;ILjava/lang/String;Lcom/android/server/am/PendingIntentRecord;Z)I
+HPLcom/android/server/wm/ActivityStartController;->schedulePendingActivityLaunches(J)V
+HPLcom/android/server/wm/ActivityStartController;->startActivities(Landroid/app/IApplicationThread;IIILjava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/wm/SafeActivityOptions;ILjava/lang/String;Lcom/android/server/am/PendingIntentRecord;Z)I
 PLcom/android/server/wm/ActivityStartController;->startActivitiesInPackage(IIILjava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/wm/SafeActivityOptions;IZLcom/android/server/am/PendingIntentRecord;Z)I
-PLcom/android/server/wm/ActivityStartController;->startActivityInPackage(IIILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;ILcom/android/server/wm/TaskRecord;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
+PLcom/android/server/wm/ActivityStartController;->startActivitiesInPackage(ILjava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/wm/SafeActivityOptions;IZLcom/android/server/am/PendingIntentRecord;Z)I
+HPLcom/android/server/wm/ActivityStartController;->startActivityInPackage(IIILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;ILcom/android/server/wm/Task;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
 HSPLcom/android/server/wm/ActivityStartController;->startHomeActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Ljava/lang/String;I)V
 HSPLcom/android/server/wm/ActivityStartController;->startSetupActivity()V
-PLcom/android/server/wm/ActivityStartController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/wm/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/TaskRecord;IILandroid/app/ActivityOptions;)Z
+HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;)V
+HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/RootActivityContainer;Landroid/content/Context;)V
+HSPLcom/android/server/wm/ActivityStartInterceptor;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/RootWindowContainer;Landroid/content/Context;)V
+PLcom/android/server/wm/ActivityStartInterceptor;->createIntentSenderForOriginalIntent(II)Landroid/content/IntentSender;
+PLcom/android/server/wm/ActivityStartInterceptor;->deferCrossProfileAppsAnimationIfNecessary()Landroid/os/Bundle;
+PLcom/android/server/wm/ActivityStartInterceptor;->hasCrossProfileAnimation()Z
+HSPLcom/android/server/wm/ActivityStartInterceptor;->intercept(Landroid/content/Intent;Landroid/content/pm/ResolveInfo;Landroid/content/pm/ActivityInfo;Ljava/lang/String;Lcom/android/server/wm/Task;IILandroid/app/ActivityOptions;)Z
 HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptHarmfulAppIfNeeded()Z
+HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptLockTaskModeViolationPackageIfNeeded()Z
 HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptQuietProfileIfNeeded()Z
 HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptSuspendedPackageIfNeeded()Z
 HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptWithConfirmCredentialsIfNeeded(Landroid/content/pm/ActivityInfo;I)Landroid/content/Intent;
 HSPLcom/android/server/wm/ActivityStartInterceptor;->interceptWorkProfileChallengeIfNeeded()Z
 HSPLcom/android/server/wm/ActivityStartInterceptor;->setStates(IIIILjava/lang/String;)V
+HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
 HSPLcom/android/server/wm/ActivityStarter$DefaultFactory;->obtain()Lcom/android/server/wm/ActivityStarter;
 HSPLcom/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
+HSPLcom/android/server/wm/ActivityStarter$Request;-><init>()V
 HSPLcom/android/server/wm/ActivityStarter$Request;->reset()V
+HPLcom/android/server/wm/ActivityStarter$Request;->resolveActivity(Lcom/android/server/wm/ActivityStackSupervisor;)V
 HSPLcom/android/server/wm/ActivityStarter$Request;->set(Lcom/android/server/wm/ActivityStarter$Request;)V
 HSPLcom/android/server/wm/ActivityStarter;-><init>(Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStartInterceptor;)V
-HSPLcom/android/server/wm/ActivityStarter;->addOrReparentStartingActivity(Lcom/android/server/wm/TaskRecord;Ljava/lang/String;)V
+HSPLcom/android/server/wm/ActivityStarter;->addOrReparentStartingActivity(Lcom/android/server/wm/Task;Ljava/lang/String;)V
 HSPLcom/android/server/wm/ActivityStarter;->adjustLaunchFlagsToDocumentMode(Lcom/android/server/wm/ActivityRecord;ZZI)I
+PLcom/android/server/wm/ActivityStarter;->canLaunchIntoFocusedStack(Lcom/android/server/wm/ActivityRecord;Z)Z
+HPLcom/android/server/wm/ActivityStarter;->complyActivityFlags(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStarter;->computeLaunchParams(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/ActivityStarter;->computeLaunchingTaskFlags()V
+PLcom/android/server/wm/ActivityStarter;->computeResolveFilterUid(III)I
 HSPLcom/android/server/wm/ActivityStarter;->computeSourceStack()V
-HSPLcom/android/server/wm/ActivityStarter;->computeStackFocus(Lcom/android/server/wm/ActivityRecord;ZILandroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityStack;
-PLcom/android/server/wm/ActivityStarter;->deliverNewIntent(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityStarter;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityStarter;->computeStackFocus(Lcom/android/server/wm/ActivityRecord;ZILandroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/ActivityStarter;->computeTargetTask()Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/ActivityStarter;->deliverNewIntent(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/ActivityStarter;->deliverToCurrentTopIfNeeded(Lcom/android/server/wm/ActivityStack;)I
+HPLcom/android/server/wm/ActivityStarter;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/ActivityStarter;->execute()I
-HSPLcom/android/server/wm/ActivityStarter;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/TaskRecord;Landroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityStarter;->getReusableIntentActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityStarter;->lambda$startActivity$0$ActivityStarter(Ljava/lang/String;)V
+HSPLcom/android/server/wm/ActivityStarter;->executeRequest(Lcom/android/server/wm/ActivityStarter$Request;)I
+HSPLcom/android/server/wm/ActivityStarter;->getExternalResult(I)I
+HSPLcom/android/server/wm/ActivityStarter;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/Task;Landroid/app/ActivityOptions;)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/ActivityStarter;->getReusableTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/ActivityStarter;->handleBackgroundActivityAbort(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/ActivityStarter;->handleStartResult(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/ActivityStarter;->isAllowedToStart(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/Task;)I
+PLcom/android/server/wm/ActivityStarter;->isDocumentLaunchesIntoExisting(I)Z
+PLcom/android/server/wm/ActivityStarter;->isLaunchModeOneOf(II)Z
+HSPLcom/android/server/wm/ActivityStarter;->onExecutionComplete()V
 HSPLcom/android/server/wm/ActivityStarter;->postStartActivityProcessing(Lcom/android/server/wm/ActivityRecord;ILcom/android/server/wm/ActivityStack;)V
+HPLcom/android/server/wm/ActivityStarter;->recycleTask(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;)I
 HSPLcom/android/server/wm/ActivityStarter;->reset(Z)V
-PLcom/android/server/wm/ActivityStarter;->resumeTargetStackIfNeeded()V
+HSPLcom/android/server/wm/ActivityStarter;->resolveToHeavyWeightSwitcherIfNeeded()I
+HPLcom/android/server/wm/ActivityStarter;->resumeTargetStackIfNeeded()V
 HSPLcom/android/server/wm/ActivityStarter;->sendNewTaskResultRequestIfNeeded()V
 HSPLcom/android/server/wm/ActivityStarter;->set(Lcom/android/server/wm/ActivityStarter;)V
 HSPLcom/android/server/wm/ActivityStarter;->setActivityInfo(Landroid/content/pm/ActivityInfo;)Lcom/android/server/wm/ActivityStarter;
@@ -15141,143 +34637,215 @@
 HSPLcom/android/server/wm/ActivityStarter;->setActivityOptions(Lcom/android/server/wm/SafeActivityOptions;)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setAllowBackgroundActivityStart(Z)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setAllowPendingRemoteAnimationRegistryLookup(Z)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setCaller(Landroid/app/IApplicationThread;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCaller(Landroid/app/IApplicationThread;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setCallingPackage(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setCallingPid(I)Lcom/android/server/wm/ActivityStarter;
 HSPLcom/android/server/wm/ActivityStarter;->setCallingUid(I)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setComponentSpecified(Z)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setFilterCallingUid(I)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setGlobalConfiguration(Landroid/content/res/Configuration;)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setIgnoreTargetSecurity(Z)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setInTask(Lcom/android/server/wm/TaskRecord;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setInitialState(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;ZILcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V
+PLcom/android/server/wm/ActivityStarter;->setInTask(Lcom/android/server/wm/Task;)Lcom/android/server/wm/ActivityStarter;
+HSPLcom/android/server/wm/ActivityStarter;->setInitialState(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;ZILcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Z)V
 HSPLcom/android/server/wm/ActivityStarter;->setIntent(Landroid/content/Intent;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setMayWait(I)Lcom/android/server/wm/ActivityStarter;
+HSPLcom/android/server/wm/ActivityStarter;->setNewTask(Lcom/android/server/wm/Task;)V
 PLcom/android/server/wm/ActivityStarter;->setOriginatingPendingIntent(Lcom/android/server/am/PendingIntentRecord;)Lcom/android/server/wm/ActivityStarter;
 HSPLcom/android/server/wm/ActivityStarter;->setOutActivity([Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setProfilerInfo(Landroid/app/ProfilerInfo;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setProfilerInfo(Landroid/app/ProfilerInfo;)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setRealCallingPid(I)Lcom/android/server/wm/ActivityStarter;
 PLcom/android/server/wm/ActivityStarter;->setRealCallingUid(I)Lcom/android/server/wm/ActivityStarter;
 HSPLcom/android/server/wm/ActivityStarter;->setReason(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setRequestCode(I)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setResolvedType(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setResultTo(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setResultWho(Ljava/lang/String;)Lcom/android/server/wm/ActivityStarter;
-HSPLcom/android/server/wm/ActivityStarter;->setStartFlags(I)Lcom/android/server/wm/ActivityStarter;
-PLcom/android/server/wm/ActivityStarter;->setTargetStackAndMoveToFrontIfNeeded(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/ActivityStarter;->setTaskFromInTask()I
-PLcom/android/server/wm/ActivityStarter;->setTaskFromIntentActivity(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/ActivityStarter;->setTaskFromReuseOrCreateNewTask(Lcom/android/server/wm/TaskRecord;)I
-HSPLcom/android/server/wm/ActivityStarter;->setTaskFromSourceRecord()I
+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;
+HPLcom/android/server/wm/ActivityStarter;->setTargetStackIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/ActivityStarter;->setUserId(I)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setVoiceInteractor(Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/ActivityStarter;
+PLcom/android/server/wm/ActivityStarter;->setVoiceSession(Landroid/service/voice/IVoiceInteractionSession;)Lcom/android/server/wm/ActivityStarter;
 HSPLcom/android/server/wm/ActivityStarter;->shouldAbortBackgroundActivityStart(IILjava/lang/String;IILcom/android/server/wm/WindowProcessController;Lcom/android/server/am/PendingIntentRecord;ZLandroid/content/Intent;)Z
-HSPLcom/android/server/wm/ActivityStarter;->startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILcom/android/server/wm/SafeActivityOptions;ZZ[Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
-HSPLcom/android/server/wm/ActivityStarter;->startActivity(Landroid/app/IApplicationThread;Landroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Landroid/content/pm/ActivityInfo;Landroid/content/pm/ResolveInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IIILjava/lang/String;IIILcom/android/server/wm/SafeActivityOptions;ZZ[Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;ZLcom/android/server/am/PendingIntentRecord;Z)I
-HSPLcom/android/server/wm/ActivityStarter;->startActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;[Lcom/android/server/wm/ActivityRecord;)I
-HSPLcom/android/server/wm/ActivityStarter;->startActivityMayWait(Landroid/app/IApplicationThread;ILjava/lang/String;IILandroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/app/WaitResult;Landroid/content/res/Configuration;Lcom/android/server/wm/SafeActivityOptions;ZILcom/android/server/wm/TaskRecord;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
-HSPLcom/android/server/wm/ActivityStarter;->startActivityUnchecked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;[Lcom/android/server/wm/ActivityRecord;)I
-PLcom/android/server/wm/ActivityStarter;->startResolvedActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;[Lcom/android/server/wm/ActivityRecord;)I
-HSPLcom/android/server/wm/ActivityStarter;->updateBounds(Lcom/android/server/wm/TaskRecord;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/ActivityStarter;->startActivityInner(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Z)I
+HSPLcom/android/server/wm/ActivityStarter;->startActivityUnchecked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/Task;Z)I
+PLcom/android/server/wm/ActivityStarter;->startResolvedActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/ActivityStarter;->updateBounds(Lcom/android/server/wm/Task;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;-><init>(Lcom/android/server/wm/ActivityTaskManagerInternal;Landroid/os/IBinder;Landroid/os/IBinder;Landroid/app/IApplicationThread;)V
+PLcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;->getActivityToken()Landroid/os/IBinder;
+PLcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;->getApplicationThread()Landroid/app/IApplicationThread;
+PLcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;->getAssistToken()Landroid/os/IBinder;
+HPLcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;-><init>()V
+HSPLcom/android/server/wm/ActivityTaskManagerInternal;-><init>()V
+HSPLcom/android/server/wm/ActivityTaskManagerService$1;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$1;->run()V
+PLcom/android/server/wm/ActivityTaskManagerService$2;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/ActivityTaskManagerService$2;->onDismissSucceeded()V
 HSPLcom/android/server/wm/ActivityTaskManagerService$FontScaleSettingObserver;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService$FontScaleSettingObserver;->onChange(ZLandroid/net/Uri;I)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;
+PLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onCleanupUser(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onStart()V
-HSPLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onUnlockUser(I)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->acquireSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
+PLcom/android/server/wm/ActivityTaskManagerService$Lifecycle;->onUnlockUser(I)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->acquireSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->canGcNow()Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->canShowErrorDialogs()Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->cleanupDisabledPackageComponents(Ljava/lang/String;Ljava/util/Set;IZ)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->canGcNow()Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->canShowErrorDialogs()Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->cleanupDisabledPackageComponents(Ljava/lang/String;Ljava/util/Set;IZ)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->closeSystemDialogs(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearPendingResultForActivity(Landroid/os/IBinder;Ljava/lang/ref/WeakReference;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->clearSavedANRState()V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->closeSystemDialogs(Ljava/lang/String;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->compatibilityInfoForPackage(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dump(Ljava/lang/String;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)V
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZ)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->dumpForProcesses(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZLjava/lang/String;IZZI)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->enableScreenAfterBoot(Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->enforceCallerIsRecentsOrHasPermission(Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->finishTopCrashedActivities(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)I
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->enforceCallerIsRecentsOrHasPermission(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->finishTopCrashedActivities(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)I
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getHomeIntent()Landroid/content/Intent;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getHomeProcess()Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getIntentSender(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getPreviousProcess()Lcom/android/server/wm/WindowProcessController;
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getServiceConnectionsHolder(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityServiceConnectionsHolder;
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getServiceConnectionsHolder(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityServiceConnectionsHolder;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTaskSnapshotNoRestore(IZ)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopActivityForTask(I)Lcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopApp()Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopProcessState()I
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->getTopVisibleActivities()Ljava/util/List;
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppCrashInActivityController(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/Runnable;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppCrashInActivityController(Ljava/lang/String;ILjava/lang/String;Ljava/lang/String;JLjava/lang/String;Ljava/lang/Runnable;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->handleAppDied(Lcom/android/server/wm/WindowProcessController;ZLjava/lang/Runnable;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isCallerRecents(I)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isFactoryTestProcess(Lcom/android/server/wm/WindowProcessController;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isGetTasksAllowed(Ljava/lang/String;II)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isHeavyWeightProcess(Lcom/android/server/wm/WindowProcessController;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isShuttingDown()Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isRecentsComponentHomeActivity(I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isShuttingDown()Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isSleeping()Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->loadRecentTasksForUser(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->isUidForeground(I)Z
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->loadRecentTasksForUser(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyActiveVoiceInteractionServiceChanged(Landroid/content/ComponentName;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyAppTransitionCancelled()V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyAppTransitionCancelled()V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyAppTransitionFinished()V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyAppTransitionStarting(Landroid/util/SparseIntArray;J)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyDockedStackMinimizedChanged(Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;I)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyKeyguardTrustedChanged()V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyDockedStackMinimizedChanged(Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyKeyguardTrustedChanged()V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifyLockedProfile(II)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->notifySingleTaskDisplayDrawn(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onCleanUpApplicationRecord(Lcom/android/server/wm/WindowProcessController;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onForceStopPackage(Ljava/lang/String;ZZI)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onHandleAppCrash(Lcom/android/server/wm/WindowProcessController;)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onImeWindowSetOnDisplay(II)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageAdded(Ljava/lang/String;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageReplaced(Landroid/content/pm/ApplicationInfo;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageUninstalled(Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onForceStopPackage(Ljava/lang/String;ZZI)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onHandleAppCrash(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onImeWindowSetOnDisplay(II)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageAdded(Ljava/lang/String;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageDataCleared(Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageReplaced(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackageUninstalled(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onPackagesSuspendedChanged([Ljava/lang/String;ZI)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessAdded(Lcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessMapped(ILcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessRemoved(Ljava/lang/String;I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onProcessUnMapped(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidActive(II)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidAddedToPendingTempWhitelist(ILjava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidAddedToPendingTempWhitelist(ILjava/lang/String;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidInactive(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidProcStateChanged(II)V
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidRemovedFromPendingTempWhitelist(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUidRemovedFromPendingTempWhitelist(I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->onUserStopped(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->preBindApplication(Lcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->rankTaskLayersIfNeeded()V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->registerScreenObserver(Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->removeRecentTasksByPackageName(Ljava/lang/String;I)V
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->removeRecentTasksByPackageName(Ljava/lang/String;I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->removeUser(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->resumeTopActivities(Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAllowAppSwitches(Ljava/lang/String;II)V
-HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setDeviceOwnerPackageName(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->saveANRState(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->sendActivityResult(ILandroid/os/IBinder;Ljava/lang/String;IILandroid/content/Intent;)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setAllowAppSwitches(Ljava/lang/String;II)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setCompanionAppPackages(ILjava/util/Set;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setDeviceOwnerUid(I)V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->setFocusedActivity(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->showSystemReadyErrorDialogsIfNeeded()V
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->shuttingDown(ZI)Z
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startActivitiesAsPackage(Ljava/lang/String;I[Landroid/content/Intent;Landroid/os/Bundle;)I
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startActivitiesInPackage(IIILjava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Lcom/android/server/wm/SafeActivityOptions;IZLcom/android/server/am/PendingIntentRecord;Z)I
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Landroid/os/Bundle;I)I
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startActivityInPackage(IIILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;ILcom/android/server/wm/TaskRecord;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startActivityInPackage(IIILjava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;ILcom/android/server/wm/Task;Ljava/lang/String;ZLcom/android/server/am/PendingIntentRecord;Z)I
+PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeActivity(ILjava/lang/String;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeOnAllDisplays(ILjava/lang/String;)Z
-PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
+HPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService$LocalService;->updateTopComponentForFactoryTest()V
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->writeActivitiesToProto(Landroid/util/proto/ProtoOutputStream;)V
 PLcom/android/server/wm/ActivityTaskManagerService$LocalService;->writeProcessesToProto(Landroid/util/proto/ProtoOutputStream;Ljava/lang/String;IZ)V
 PLcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityRecord;Landroid/os/Bundle;Landroid/content/Intent;Ljava/lang/String;Landroid/app/IAssistDataReceiver;Landroid/os/Bundle;I)V
 PLcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;->run()V
+HSPLcom/android/server/wm/ActivityTaskManagerService$UiHandler;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;-><init>()V
 HSPLcom/android/server/wm/ActivityTaskManagerService;-><init>(Landroid/content/Context;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->acquireSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activityDestroyed(Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$000(Lcom/android/server/wm/ActivityTaskManagerService;I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1000(Lcom/android/server/wm/ActivityTaskManagerService;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1000(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1100(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/util/proto/ProtoOutputStream;IZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1100(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->access$1200(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/MirrorActiveUids;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1200(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/util/proto/ProtoOutputStream;IZ)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1300(Lcom/android/server/wm/ActivityTaskManagerService;)Landroid/util/SparseArray;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->access$1300(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/MirrorActiveUids;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1400(Lcom/android/server/wm/ActivityTaskManagerService;)Landroid/util/SparseArray;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1400(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/RecentTasks;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1500(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/RecentTasks;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1600(Lcom/android/server/wm/ActivityTaskManagerService;IZZ)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1700(Lcom/android/server/wm/ActivityTaskManagerService;)Ljava/util/Map;
+HPLcom/android/server/wm/ActivityTaskManagerService;->access$1700(Lcom/android/server/wm/ActivityTaskManagerService;IZZ)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$1800(Lcom/android/server/wm/ActivityTaskManagerService;)Ljava/util/Map;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->access$200(Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$300(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$500(Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/TaskChangeNotificationController;
+PLcom/android/server/wm/ActivityTaskManagerService;->access$600(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/app/IApplicationThread;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;->access$600(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$700(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$700(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->access$800(Lcom/android/server/wm/ActivityTaskManagerService;)Z
+HSPLcom/android/server/wm/ActivityTaskManagerService;->access$800(Lcom/android/server/wm/ActivityTaskManagerService;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->access$900(Lcom/android/server/wm/ActivityTaskManagerService;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->acquireSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
+HPLcom/android/server/wm/ActivityTaskManagerService;->activityDestroyed(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->activityIdle(Landroid/os/IBinder;Landroid/content/res/Configuration;Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activityPaused(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activityRelaunched(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->activityPaused(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->activityRelaunched(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->activityResumed(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activitySlept(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->activityTopResumedStateLost()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->activitySlept(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->activityStopped(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/os/PersistableBundle;Ljava/lang/CharSequence;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->activityTopResumedStateLost()V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->addWindowLayoutReasons(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->animateResizePinnedStack(ILandroid/graphics/Rect;I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->applyContainerTransaction(Landroid/view/WindowContainerTransaction;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->applyUpdateLockStateLocked(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->applyUpdateVrModeLocked(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->cancelRecentsAnimation(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->applyWindowContainerChange(Lcom/android/server/wm/ConfigurationContainer;Landroid/view/WindowContainerTransaction$Change;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->applyWindowContainerChange(Lcom/android/server/wm/ConfigurationContainer;Landroid/view/WindowContainerTransaction$Change;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->applyWindowContainerChange(Lcom/android/server/wm/WindowContainer;Landroid/view/WindowContainerTransaction$Change;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->assertPackageMatchesCallingUid(Ljava/lang/String;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->buildAssistBundleLocked(Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;Landroid/os/Bundle;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->cancelRecentsAnimation(Z)V
 PLcom/android/server/wm/ActivityTaskManagerService;->checkAllowAppSwitchUid(I)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->checkAppSwitchAllowedLocked(IIIILjava/lang/String;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->checkGetTasksPermission(Ljava/lang/String;II)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->checkCallingPermission(Ljava/lang/String;)I
+HSPLcom/android/server/wm/ActivityTaskManagerService;->checkComponentPermission(Ljava/lang/String;IIIZ)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->checkGetTasksPermission(Ljava/lang/String;II)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->checkPermission(Ljava/lang/String;II)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->clearHeavyWeightProcessIfEquals(Lcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
-PLcom/android/server/wm/ActivityTaskManagerService;->convertFromTranslucent(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->convertToTranslucent(Landroid/os/IBinder;Landroid/os/Bundle;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->createRecentTasks()Lcom/android/server/wm/RecentTasks;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->constructResumedTraceName(Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->convertFromTranslucent(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->convertToTranslucent(Landroid/os/IBinder;Landroid/os/Bundle;)Z
+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;->createStackSupervisor()Lcom/android/server/wm/ActivityStackSupervisor;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V
 PLcom/android/server/wm/ActivityTaskManagerService;->dismissKeyguard(Landroid/os/IBinder;Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->dismissPip(ZI)V
+PLcom/android/server/wm/ActivityTaskManagerService;->dismissSplitScreenMode(Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->dumpActivitiesLocked(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;IZZLjava/lang/String;Ljava/lang/String;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->dumpActivity(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;Ljava/lang/String;[Ljava/lang/String;IZZZ)Z
@@ -15285,36 +34853,46 @@
 PLcom/android/server/wm/ActivityTaskManagerService;->dumpActivityContainersLocked(Ljava/io/PrintWriter;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->dumpActivityStarterLocked(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->dumpLastANRLocked(Ljava/io/PrintWriter;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->enqueueAssistContext(ILandroid/content/Intent;Ljava/lang/String;Landroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZILandroid/os/Bundle;JI)Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->enforceCallerIsRecentsOrHasPermission(Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->enforceNotIsolatedCaller(Ljava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->enqueueAssistContext(ILandroid/content/Intent;Ljava/lang/String;Landroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZILandroid/os/Bundle;JI)Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/wm/ActivityRecord;I)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->ensureValidPictureInPictureActivityParamsLocked(Ljava/lang/String;Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)Lcom/android/server/wm/ActivityRecord;
 PLcom/android/server/wm/ActivityTaskManagerService;->enterPictureInPictureMode(Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->expireStartAsCallerTokenMsg(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->finishActivity(Landroid/os/IBinder;ILandroid/content/Intent;I)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->finishActivityAffinity(Landroid/os/IBinder;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->finishRunningVoiceLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->finishSubActivity(Landroid/os/IBinder;Ljava/lang/String;I)V
 PLcom/android/server/wm/ActivityTaskManagerService;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->getActivityClassForToken(Landroid/os/IBinder;)Landroid/content/ComponentName;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getActivityDisplayId(Landroid/os/IBinder;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->forgetStartAsCallerTokenMsg(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->getActivityClassForToken(Landroid/os/IBinder;)Landroid/content/ComponentName;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getActivityOptions(Landroid/os/IBinder;)Landroid/os/Bundle;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getActivityStartController()Lcom/android/server/wm/ActivityStartController;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getAllStackInfosOnDisplay(I)Ljava/util/List;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getAppInfoForUser(Landroid/content/pm/ApplicationInfo;I)Landroid/content/pm/ApplicationInfo;
 PLcom/android/server/wm/ActivityTaskManagerService;->getAppOpsService()Lcom/android/server/appop/AppOpsService;
-PLcom/android/server/wm/ActivityTaskManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getAppTasks(Ljava/lang/String;)Ljava/util/List;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getAppWarningsLocked()Lcom/android/server/wm/AppWarnings;
-PLcom/android/server/wm/ActivityTaskManagerService;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
+PLcom/android/server/wm/ActivityTaskManagerService;->getAssistContextExtras(I)Landroid/os/Bundle;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getCallingActivity(Landroid/os/IBinder;)Landroid/content/ComponentName;
 PLcom/android/server/wm/ActivityTaskManagerService;->getCallingPackage(Landroid/os/IBinder;)Ljava/lang/String;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getConfiguration()Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getCurrentUserId()I
-PLcom/android/server/wm/ActivityTaskManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getFilteredTasks(III)Ljava/util/List;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getFocusedStackInfo()Landroid/app/ActivityManager$StackInfo;
+PLcom/android/server/wm/ActivityTaskManagerService;->getCallingRecordLocked(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/ActivityTaskManagerService;->getConfiguration()Landroid/content/res/Configuration;
+PLcom/android/server/wm/ActivityTaskManagerService;->getCurrentUserId()I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getDeviceConfigurationInfo()Landroid/content/pm/ConfigurationInfo;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getDisplayId(Landroid/os/IBinder;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getFilteredTasks(III)Ljava/util/List;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getFocusedStackInfo()Landroid/app/ActivityManager$StackInfo;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfiguration()Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForCallingPid()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForCallingPid()Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalConfigurationForPid(I)Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getGlobalLock()Lcom/android/server/wm/WindowManagerGlobalLock;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getHomeIntent()Landroid/content/Intent;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getInputDispatchingTimeoutLocked(Lcom/android/server/wm/ActivityRecord;)J
 PLcom/android/server/wm/ActivityTaskManagerService;->getIntentSenderLocked(ILjava/lang/String;IILandroid/os/IBinder;Ljava/lang/String;I[Landroid/content/Intent;[Ljava/lang/String;ILandroid/os/Bundle;)Landroid/content/IIntentSender;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getLastResumedActivityUserId()I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getLastResumedActivityUserId()I
+PLcom/android/server/wm/ActivityTaskManagerService;->getLastStopAppSwitchesTime()J
 PLcom/android/server/wm/ActivityTaskManagerService;->getLaunchedFromPackage(Landroid/os/IBinder;)Ljava/lang/String;
 PLcom/android/server/wm/ActivityTaskManagerService;->getLaunchedFromUid(Landroid/os/IBinder;)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getLifecycleManager()Lcom/android/server/wm/ClientLifecycleManager;
@@ -15323,431 +34901,471 @@
 PLcom/android/server/wm/ActivityTaskManagerService;->getMaxNumPictureInPictureActions(Landroid/os/IBinder;)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getPackageManager()Landroid/content/pm/IPackageManager;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getPackageManagerInternalLocked()Landroid/content/pm/PackageManagerInternal;
-PLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(II)Lcom/android/server/wm/WindowProcessController;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Landroid/app/IApplicationThread;)Lcom/android/server/wm/WindowProcessController;
+HSPLcom/android/server/wm/ActivityTaskManagerService;->getPermissionPolicyInternal()Lcom/android/server/policy/PermissionPolicyInternal;
+HSPLcom/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;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getProcessController(Ljava/lang/String;I)Lcom/android/server/wm/WindowProcessController;
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks()Lcom/android/server/wm/RecentTasks;
-PLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/wm/ActivityTaskManagerService;->getRequestedOrientation(Landroid/os/IBinder;)I
-PLcom/android/server/wm/ActivityTaskManagerService;->getSecondaryHomeIntent(Ljava/lang/String;)Landroid/content/Intent;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getRecentTasks(III)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getRequestedOrientation(Landroid/os/IBinder;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
+HPLcom/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;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap;
-PLcom/android/server/wm/ActivityTaskManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I
-PLcom/android/server/wm/ActivityTaskManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(I)Ljava/util/List;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getTopDisplayFocusedStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->getUidState(I)I
+PLcom/android/server/wm/ActivityTaskManagerService;->getTaskDescription(I)Landroid/app/ActivityManager$TaskDescription;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskDescriptionIcon(Ljava/lang/String;I)Landroid/graphics/Bitmap;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskForActivity(Landroid/os/IBinder;Z)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskSnapshot(IZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskSnapshot(IZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTasks(I)Ljava/util/List;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getTopDisplayFocusedStack()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/ActivityTaskManagerService;->getUidState(I)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->getUserManager()Lcom/android/server/pm/UserManagerService;
-HSPLcom/android/server/wm/ActivityTaskManagerService;->handleIncomingUser(IIILjava/lang/String;)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->handleIncomingUser(IIILjava/lang/String;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->hasSystemAlertWindowPermission(IILjava/lang/String;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->hasUserRestriction(Ljava/lang/String;I)Z
 HSPLcom/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
 HSPLcom/android/server/wm/ActivityTaskManagerService;->installSystemProviders()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->invalidateHomeTaskSnapshot(Landroid/os/IBinder;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->isActivityStartsLoggingEnabled()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isAssistDataAllowedOnCurrentActivity()Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isAssistDataAllowedOnCurrentActivity()Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isAssociatedCompanionApp(II)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->isBackgroundActivityStartsEnabled()Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->isBooted()Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->isBooting()Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->isControllerAMonkey()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isDeviceOwner(Ljava/lang/String;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isControllerAMonkey()Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isCrossUserAllowed(II)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->isDeviceOwner(I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isGetTasksAllowed(Ljava/lang/String;II)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->isInLockTaskMode()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isInPictureInPictureMode(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isInPictureInPictureMode(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isInMultiWindowMode(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isInPictureInPictureMode(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isInPictureInPictureMode(Lcom/android/server/wm/ActivityRecord;)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->isKeyguardLocked()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isPackageNameWhitelistedForBgActivityStarts(Ljava/lang/String;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isSameApp(ILjava/lang/String;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->isSleepingLocked()Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->isSleepingOrShuttingDownLocked()Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isTopOfTask(Landroid/os/IBinder;)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->isUidForeground(I)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->keyguardGoingAway(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->isSleepingOrShuttingDownLocked()Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isTopOfTask(Landroid/os/IBinder;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->isUidForeground(I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->keyguardGoingAway(I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$3DTHgCAeEd5OOF7ACeXoCk8mmrQ(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$7ieG0s-7Zp4H2bLiWdOgB6MqhcI(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$U6g1UdnOPnEF9wX1OTm9nKVXY5k(Lcom/android/server/wm/ActivityTaskManagerService;Ljava/util/Locale;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$applyUpdateLockStateLocked$0$ActivityTaskManagerService(ZLcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$applyUpdateVrModeLocked$5$ActivityTaskManagerService(Lcom/android/server/wm/ActivityRecord;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->lambda$enterPictureInPictureMode$4$ActivityTaskManagerService(Lcom/android/server/wm/ActivityRecord;Landroid/app/PictureInPictureParams;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$notifyEnterAnimationComplete$1$ActivityTaskManagerService(Landroid/os/IBinder;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->lambda$onScreenAwakeChanged$3$ActivityTaskManagerService(Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->lambda$onScreenAwakeChanged$3$ActivityTaskManagerService(Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$postFinishBooting$6$ActivityTaskManagerService(ZZ)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$scheduleAppGcsLocked$7$ActivityTaskManagerService()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$2$ActivityTaskManagerService(Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->logAppTooSlow(Lcom/android/server/wm/WindowProcessController;JLjava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->lambda$setLockScreenShown$2$ActivityTaskManagerService(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->lambda$yP9TbBmrgQ4lrgcxb-8oL1pBAs4(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->logAppTooSlow(Lcom/android/server/wm/WindowProcessController;JLjava/lang/String;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->logPictureInPictureArgs(Landroid/app/PictureInPictureParams;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
-PLcom/android/server/wm/ActivityTaskManagerService;->moveTaskToFrontLocked(IILcom/android/server/wm/SafeActivityOptions;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->moveTasksToFullscreenStack(IZ)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->moveActivityTaskToBack(Landroid/os/IBinder;Z)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->moveTaskToFrontLocked(Landroid/app/IApplicationThread;Ljava/lang/String;IILcom/android/server/wm/SafeActivityOptions;Z)V
 PLcom/android/server/wm/ActivityTaskManagerService;->navigateUpTo(Landroid/os/IBinder;Landroid/content/Intent;ILandroid/content/Intent;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->notifyActivityDrawn(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->notifyEnterAnimationComplete(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->notifyLaunchTaskBehindComplete(Landroid/os/IBinder;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->notifyPinnedStackAnimationEnded()V
 PLcom/android/server/wm/ActivityTaskManagerService;->notifyPinnedStackAnimationStarted()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->notifyTaskPersisterLocked(Lcom/android/server/wm/TaskRecord;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->notifySingleTaskDisplayEmpty(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
 PLcom/android/server/wm/ActivityTaskManagerService;->offsetPinnedStackBounds(ILandroid/graphics/Rect;III)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->onActivityManagerInternalAdded()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->onBackPressedOnTaskRoot(Landroid/os/IBinder;Landroid/app/IRequestFinishCallback;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->onInitPowerManagement()V
-PLcom/android/server/wm/ActivityTaskManagerService;->onScreenAwakeChanged(Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->onScreenAwakeChanged(Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->onStartActivitySetDidAppSwitch()V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->onSystemReady()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->overridePendingTransition(Landroid/os/IBinder;Ljava/lang/String;II)V
 PLcom/android/server/wm/ActivityTaskManagerService;->pendingAssistExtrasTimedOut(Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;ZI)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->postFinishBooting(ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService;->registerRemoteAnimationForNextActivityStart(Ljava/lang/String;Landroid/view/RemoteAnimationAdapter;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->registerRemoteAnimationForNextActivityStart(Ljava/lang/String;Landroid/view/RemoteAnimationAdapter;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->registerRemoteAnimations(Landroid/os/IBinder;Landroid/view/RemoteAnimationDefinition;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->relaunchReasonToString(I)Ljava/lang/String;
+PLcom/android/server/wm/ActivityTaskManagerService;->releaseActivityInstance(Landroid/os/IBinder;)Z
+PLcom/android/server/wm/ActivityTaskManagerService;->releaseSomeActivities(Landroid/app/IApplicationThread;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->removeAllVisibleRecentTasks()V
 PLcom/android/server/wm/ActivityTaskManagerService;->removeStacksInWindowingModes([I)V
-PLcom/android/server/wm/ActivityTaskManagerService;->removeTask(I)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->removeTask(I)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->reportActivityFullyDrawn(Landroid/os/IBinder;Z)V
-PLcom/android/server/wm/ActivityTaskManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->reportAssistContextExtras(Landroid/os/IBinder;Landroid/os/Bundle;Landroid/app/assist/AssistStructure;Landroid/app/assist/AssistContent;Landroid/net/Uri;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->reportSizeConfigurations(Landroid/os/IBinder;[I[I[I)V
 PLcom/android/server/wm/ActivityTaskManagerService;->requestAssistContextExtras(ILandroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;ZZ)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->requestAutofillData(Landroid/app/IAssistDataReceiver;Landroid/os/Bundle;Landroid/os/IBinder;I)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->requestStartActivityPermissionToken(Landroid/os/IBinder;)Landroid/os/IBinder;
-PLcom/android/server/wm/ActivityTaskManagerService;->resizePinnedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->resizeStack(ILandroid/graphics/Rect;ZZZI)V
-PLcom/android/server/wm/ActivityTaskManagerService;->resumeAppSwitches()V
+HPLcom/android/server/wm/ActivityTaskManagerService;->resizeDockedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->resizePinnedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->resizePinnedStackIfNeeded(Lcom/android/server/wm/ConfigurationContainer;IILandroid/content/res/Configuration;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->resumeAppSwitches()V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->retrieveSettings(Landroid/content/ContentResolver;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->sanitizeAndApplyChange(Lcom/android/server/wm/ConfigurationContainer;Landroid/view/WindowContainerTransaction$Change;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->sanitizeAndApplyChange(Lcom/android/server/wm/WindowContainer;Landroid/view/WindowContainerTransaction$Change;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->sanitizeAndApplyConfigChange(Lcom/android/server/wm/ConfigurationContainer;Landroid/view/WindowContainerTransaction$Change;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->scheduleAppGcsLocked()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->sendLocaleToMountDaemonMsg(Ljava/util/Locale;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->sendLocaleToMountDaemonMsg(Ljava/util/Locale;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->sendPutConfigurationForUserMsg(ILandroid/content/res/Configuration;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setActivityController(Landroid/app/IActivityController;Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setBooted(Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setBooting(Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->setDeviceOwnerPackageName(Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->setDeviceOwnerUid(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setDisablePreviewScreenshots(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setDisplayToSingleTaskInstance(I)V
 PLcom/android/server/wm/ActivityTaskManagerService;->setFocusedTask(I)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->setLockScreenShown(ZZ)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setPictureInPictureParams(Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V
+PLcom/android/server/wm/ActivityTaskManagerService;->setImmersive(Landroid/os/IBinder;Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setLockScreenShown(ZZ)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setPictureInPictureParams(Landroid/os/IBinder;Landroid/app/PictureInPictureParams;)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->setRecentTasks(Lcom/android/server/wm/RecentTasks;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setRequestedOrientation(Landroid/os/IBinder;I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setResumedActivityUncheckLocked(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->setShowWhenLocked(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->setSplitScreenResizing(Z)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->setSplitScreenResizing(Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setTaskDescription(Landroid/os/IBinder;Landroid/app/ActivityManager$TaskDescription;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->setTurnScreenOn(Landroid/os/IBinder;Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setUsageStatsManager(Landroid/app/usage/UsageStatsManagerInternal;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
 PLcom/android/server/wm/ActivityTaskManagerService;->shouldDisableNonVrUiLocked()Z
 PLcom/android/server/wm/ActivityTaskManagerService;->shouldUpRecreateTask(Landroid/os/IBinder;Ljava/lang/String;)Z
+HSPLcom/android/server/wm/ActivityTaskManagerService;->start()V
 PLcom/android/server/wm/ActivityTaskManagerService;->startActivities(Landroid/app/IApplicationThread;Ljava/lang/String;[Landroid/content/Intent;[Ljava/lang/String;Landroid/os/IBinder;Landroid/os/Bundle;I)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->startActivity(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivity(Landroid/app/IApplicationThread;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;->startActivityAsCaller(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;Landroid/os/IBinder;ZI)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
-HSPLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;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;->startActivityFromRecents(ILandroid/os/Bundle;)I
-PLcom/android/server/wm/ActivityTaskManagerService;->startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
+PLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivityAsUser(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/app/ProfilerInfo;Landroid/os/Bundle;IZ)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivityFromRecents(ILandroid/os/Bundle;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivityIntentSender(Landroid/app/IApplicationThread;Landroid/content/IIntentSender;Landroid/os/IBinder;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->startActivityWithConfig(Landroid/app/IApplicationThread;Ljava/lang/String;Landroid/content/Intent;Ljava/lang/String;Landroid/os/IBinder;Ljava/lang/String;IILandroid/content/res/Configuration;Landroid/os/Bundle;I)I
 PLcom/android/server/wm/ActivityTaskManagerService;->startAssistantActivity(Ljava/lang/String;IILandroid/content/Intent;Ljava/lang/String;Landroid/os/Bundle;I)I
-PLcom/android/server/wm/ActivityTaskManagerService;->startRecentsActivity(Landroid/content/Intent;Landroid/app/IAssistDataReceiver;Landroid/view/IRecentsAnimationRunner;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->stopAppSwitches()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->startLockTaskModeLocked(Lcom/android/server/wm/Task;Z)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->startProcessAsync(Lcom/android/server/wm/ActivityRecord;ZZLjava/lang/String;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->startRecentsActivity(Landroid/content/Intent;Landroid/app/IAssistDataReceiver;Landroid/view/IRecentsAnimationRunner;)V
+PLcom/android/server/wm/ActivityTaskManagerService;->startSystemLockTaskMode(I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->startTimeTrackingFocusedActivityLocked()V
+PLcom/android/server/wm/ActivityTaskManagerService;->startVoiceActivity(Ljava/lang/String;IILandroid/content/Intent;Ljava/lang/String;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;ILandroid/app/ProfilerInfo;Landroid/os/Bundle;I)I
+HPLcom/android/server/wm/ActivityTaskManagerService;->stopAppSwitches()V
+PLcom/android/server/wm/ActivityTaskManagerService;->stopLockTaskModeInternal(Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->stopSystemLockTaskMode()V
+PLcom/android/server/wm/ActivityTaskManagerService;->unregisterRemoteAnimations(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateActivityUsageStats(Lcom/android/server/wm/ActivityRecord;I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateBatteryStats(Lcom/android/server/wm/ActivityRecord;Z)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateConfiguration(Landroid/content/res/Configuration;)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;Z)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZ)Z
+HSPLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZIZ)Z
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZZIZLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updateCpuStats()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updateDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZI)Z
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZILcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;)Z
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateCpuStats()V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->updateEventDispatchingLocked(Z)V
+PLcom/android/server/wm/ActivityTaskManagerService;->updateFontScaleIfNeeded(I)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateGlobalConfigurationLocked(Landroid/content/res/Configuration;ZZIZ)I
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateLockTaskFeatures(II)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateLockTaskPackages(I[Ljava/lang/String;)V
-PLcom/android/server/wm/ActivityTaskManagerService;->updateOomAdj()V
-HSPLcom/android/server/wm/ActivityTaskManagerService;->updatePersistentConfiguration(Landroid/content/res/Configuration;I)V
+HPLcom/android/server/wm/ActivityTaskManagerService;->updateOomAdj()V
+PLcom/android/server/wm/ActivityTaskManagerService;->updatePersistentConfiguration(Landroid/content/res/Configuration;I)V
+HSPLcom/android/server/wm/ActivityTaskManagerService;->updateResumedAppTrace(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateShouldShowDialogsLocked(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/ActivityTaskManagerService;->updateSleepIfNeededLocked()V
 PLcom/android/server/wm/ActivityTaskManagerService;->willActivityBeVisible(Landroid/os/IBinder;)Z
 PLcom/android/server/wm/ActivityTaskManagerService;->writeSleepStateToProto(Landroid/util/proto/ProtoOutputStream;IZ)V
-PLcom/android/server/wm/AlertWindowNotification;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;)V
+PLcom/android/server/wm/AlertWindowNotification;-><clinit>()V
+HPLcom/android/server/wm/AlertWindowNotification;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;)V
 PLcom/android/server/wm/AlertWindowNotification;->cancel(Z)V
 PLcom/android/server/wm/AlertWindowNotification;->createNotificationChannel(Landroid/content/Context;Ljava/lang/String;)V
 PLcom/android/server/wm/AlertWindowNotification;->getApplicationInfo(Landroid/content/pm/PackageManager;Ljava/lang/String;)Landroid/content/pm/ApplicationInfo;
+PLcom/android/server/wm/AlertWindowNotification;->getContentIntent(Landroid/content/Context;Ljava/lang/String;)Landroid/app/PendingIntent;
 PLcom/android/server/wm/AlertWindowNotification;->lambda$cancel$0$AlertWindowNotification(Z)V
+PLcom/android/server/wm/AlertWindowNotification;->lambda$iVtcJMb6VtqtAgEtGUDCkGay0tM(Lcom/android/server/wm/AlertWindowNotification;)V
+PLcom/android/server/wm/AlertWindowNotification;->onCancelNotification(Z)V
 PLcom/android/server/wm/AlertWindowNotification;->onPostNotification()V
 PLcom/android/server/wm/AlertWindowNotification;->post()V
-PLcom/android/server/wm/AnimatingAppWindowTokenRegistry;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/wm/AnimatingAppWindowTokenRegistry;->endDeferringFinished()V
-PLcom/android/server/wm/AnimatingAppWindowTokenRegistry;->notifyAboutToFinish(Lcom/android/server/wm/AppWindowToken;Ljava/lang/Runnable;)Z
-HSPLcom/android/server/wm/AnimatingAppWindowTokenRegistry;->notifyFinished(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/AnimatingAppWindowTokenRegistry;->notifyStarting(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/AppTaskImpl;->checkCaller()V
+HSPLcom/android/server/wm/AnimatingActivityRegistry;-><init>()V
+HSPLcom/android/server/wm/AnimatingActivityRegistry;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wm/AnimatingActivityRegistry;->endDeferringFinished()V
+HPLcom/android/server/wm/AnimatingActivityRegistry;->notifyAboutToFinish(Lcom/android/server/wm/ActivityRecord;Ljava/lang/Runnable;)Z
+HPLcom/android/server/wm/AnimatingActivityRegistry;->notifyFinished(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/AnimatingActivityRegistry;->notifyStarting(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/AnimationAdapter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/AppTaskImpl;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;II)V
+HPLcom/android/server/wm/AppTaskImpl;->checkCaller()V
 PLcom/android/server/wm/AppTaskImpl;->finishAndRemoveTask()V
-PLcom/android/server/wm/AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
-PLcom/android/server/wm/AppTaskImpl;->setExcludeFromRecents(Z)V
+HPLcom/android/server/wm/AppTaskImpl;->getTaskInfo()Landroid/app/ActivityManager$RecentTaskInfo;
+PLcom/android/server/wm/AppTaskImpl;->moveToFront(Landroid/app/IApplicationThread;Ljava/lang/String;)V
+HPLcom/android/server/wm/AppTaskImpl;->setExcludeFromRecents(Z)V
+HSPLcom/android/server/wm/AppTransition$1;-><init>(Lcom/android/server/wm/AppTransition;)V
+HSPLcom/android/server/wm/AppTransition$2;-><init>(Lcom/android/server/wm/AppTransition;)V
+PLcom/android/server/wm/AppTransition$2;->getInterpolation(F)F
+HSPLcom/android/server/wm/AppTransition;-><clinit>()V
 HSPLcom/android/server/wm/AppTransition;-><init>(Landroid/content/Context;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/AppTransition;->access$100(Lcom/android/server/wm/AppTransition;)Landroid/view/animation/Interpolator;
 PLcom/android/server/wm/AppTransition;->calculateClipRevealTransitionDuration(ZFFLandroid/graphics/Rect;)J
-PLcom/android/server/wm/AppTransition;->canSkipFirstFrame()Z
+HPLcom/android/server/wm/AppTransition;->canOverridePendingAppTransition()Z
+HPLcom/android/server/wm/AppTransition;->canSkipFirstFrame()Z
 HSPLcom/android/server/wm/AppTransition;->clear()V
+PLcom/android/server/wm/AppTransition;->computePivot(IF)F
+PLcom/android/server/wm/AppTransition;->createAspectScaledThumbnailEnterExitAnimationLocked(IIIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLcom/android/server/wm/WindowContainer;)Landroid/view/animation/Animation;
 PLcom/android/server/wm/AppTransition;->createClipRevealAnimationLocked(IZLandroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->createCrossProfileAppsThumbnail(ILandroid/graphics/Rect;)Landroid/graphics/GraphicBuffer;
+PLcom/android/server/wm/AppTransition;->createCrossProfileAppsThumbnailAnimationLocked(Landroid/graphics/Rect;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->createCurvedMotion(FFFF)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->createCurvedPath(FFFF)Landroid/graphics/Path;
+PLcom/android/server/wm/AppTransition;->createScaleUpAnimationLocked(IZLandroid/graphics/Rect;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->createThumbnailAspectScaleAnimationLocked(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/GraphicBuffer;Lcom/android/server/wm/WindowContainer;II)Landroid/view/animation/Animation;
 PLcom/android/server/wm/AppTransition;->doAnimationCallback(Landroid/os/IRemoteCallback;)V
-HSPLcom/android/server/wm/AppTransition;->freeze()V
-HSPLcom/android/server/wm/AppTransition;->getAppStackClipMode()I
+PLcom/android/server/wm/AppTransition;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/AppTransition;->fetchAppTransitionSpecsFromFuture()V
+PLcom/android/server/wm/AppTransition;->freeze()V
+PLcom/android/server/wm/AppTransition;->getAnimationStyleResId(Landroid/view/WindowManager$LayoutParams;)I
+PLcom/android/server/wm/AppTransition;->getAppStackClipMode()I
 HSPLcom/android/server/wm/AppTransition;->getAppTransition()I
-HSPLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry;
+PLcom/android/server/wm/AppTransition;->getAppTransitionThumbnailHeader(Lcom/android/server/wm/WindowContainer;)Landroid/graphics/GraphicBuffer;
+PLcom/android/server/wm/AppTransition;->getAspectScaleDuration()J
+PLcom/android/server/wm/AppTransition;->getAspectScaleInterpolator()Landroid/view/animation/Interpolator;
+HPLcom/android/server/wm/AppTransition;->getCachedAnimations(Landroid/view/WindowManager$LayoutParams;)Lcom/android/server/AttributeCache$Entry;
+HPLcom/android/server/wm/AppTransition;->getCachedAnimations(Ljava/lang/String;I)Lcom/android/server/AttributeCache$Entry;
 PLcom/android/server/wm/AppTransition;->getDefaultNextAppTransitionStartRect(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/AppTransition;->getRemoteAnimationController()Lcom/android/server/wm/RemoteAnimationController;
+PLcom/android/server/wm/AppTransition;->getLastClipRevealTransitionDuration()J
+PLcom/android/server/wm/AppTransition;->getNextAppTransitionStartRect(Lcom/android/server/wm/WindowContainer;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/AppTransition;->getRemoteAnimationController()Lcom/android/server/wm/RemoteAnimationController;
+PLcom/android/server/wm/AppTransition;->getThumbnailTransitionState(Z)I
 HSPLcom/android/server/wm/AppTransition;->getTransitFlags()I
-HSPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/AppWindowToken;Landroid/util/ArraySet;)I
+HSPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/ActivityRecord;Landroid/util/ArraySet;)I
+PLcom/android/server/wm/AppTransition;->hadClipRevealAnimation()Z
 PLcom/android/server/wm/AppTransition;->handleAppTransitionTimeout()V
+PLcom/android/server/wm/AppTransition;->isActivityTransit(I)Z
+HSPLcom/android/server/wm/AppTransition;->isChangeTransit(I)Z
 HSPLcom/android/server/wm/AppTransition;->isFetchingAppTransitionsSpecs()Z
-HSPLcom/android/server/wm/AppTransition;->isNextAppTransitionOpenCrossProfileApps()Z
-HSPLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailDown()Z
-HSPLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailUp()Z
+HSPLcom/android/server/wm/AppTransition;->isKeyguardGoingAwayTransit(I)Z
+HSPLcom/android/server/wm/AppTransition;->isKeyguardTransit(I)Z
+PLcom/android/server/wm/AppTransition;->isNextAppTransitionOpenCrossProfileApps()Z
+PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailDown()Z
+PLcom/android/server/wm/AppTransition;->isNextAppTransitionThumbnailUp()Z
 HSPLcom/android/server/wm/AppTransition;->isReady()Z
 HSPLcom/android/server/wm/AppTransition;->isRunning()Z
+HSPLcom/android/server/wm/AppTransition;->isTaskOpenTransit(I)Z
+HSPLcom/android/server/wm/AppTransition;->isTaskTransit(I)Z
 HSPLcom/android/server/wm/AppTransition;->isTimeout()Z
 HSPLcom/android/server/wm/AppTransition;->isTransitionEqual(I)Z
 HSPLcom/android/server/wm/AppTransition;->isTransitionSet()Z
+PLcom/android/server/wm/AppTransition;->lambda$B95jxKE2FnT5RNLStTafenhEYj4(Landroid/os/IRemoteCallback;)V
+PLcom/android/server/wm/AppTransition;->lambda$fetchAppTransitionSpecsFromFuture$1$AppTransition(Landroid/view/IAppTransitionAnimationSpecsFuture;)V
 PLcom/android/server/wm/AppTransition;->lambda$new$0$AppTransition()V
-HSPLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZI)Landroid/view/animation/Animation;
-HSPLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;II)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZIILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZLcom/android/server/wm/WindowContainer;)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->loadAnimationAttr(Landroid/view/WindowManager$LayoutParams;II)Landroid/view/animation/Animation;
 PLcom/android/server/wm/AppTransition;->loadAnimationRes(Landroid/view/WindowManager$LayoutParams;I)Landroid/view/animation/Animation;
 PLcom/android/server/wm/AppTransition;->loadAnimationRes(Ljava/lang/String;I)Landroid/view/animation/Animation;
-HSPLcom/android/server/wm/AppTransition;->loadAnimationSafely(Landroid/content/Context;I)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/AppTransition;->loadAnimationSafely(Landroid/content/Context;I)Landroid/view/animation/Animation;
 PLcom/android/server/wm/AppTransition;->loadKeyguardExitAnimation(I)Landroid/view/animation/Animation;
+HSPLcom/android/server/wm/AppTransition;->needsBoosting()Z
+PLcom/android/server/wm/AppTransition;->notifyAppTransitionCancelledLocked(I)V
 HSPLcom/android/server/wm/AppTransition;->notifyAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+HSPLcom/android/server/wm/AppTransition;->notifyAppTransitionPendingLocked()V
 HSPLcom/android/server/wm/AppTransition;->notifyAppTransitionStartingLocked(IJJJ)I
-HSPLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransition(Ljava/lang/String;IILandroid/os/IRemoteCallback;)V
 PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionClipReveal(IIII)V
-PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumb([Landroid/view/AppTransitionAnimationSpec;Landroid/os/IRemoteCallback;Landroid/os/IRemoteCallback;Z)V
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;Z)V
+HPLcom/android/server/wm/AppTransition;->overridePendingAppTransitionRemote(Landroid/view/RemoteAnimationAdapter;)V
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionScaleUp(IIII)V
+PLcom/android/server/wm/AppTransition;->overridePendingAppTransitionStartCrossProfileApps()V
 HSPLcom/android/server/wm/AppTransition;->postAnimationCallback()V
+HSPLcom/android/server/wm/AppTransition;->prepare()Z
 HSPLcom/android/server/wm/AppTransition;->prepareAppTransitionLocked(IZIZ)Z
+PLcom/android/server/wm/AppTransition;->prepareThumbnailAnimationWithDuration(Landroid/view/animation/Animation;IIJLandroid/view/animation/Interpolator;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/AppTransition;->putDefaultNextAppTransitionCoordinates(IIIILandroid/graphics/GraphicBuffer;)V
 HSPLcom/android/server/wm/AppTransition;->registerListenerLocked(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
 HSPLcom/android/server/wm/AppTransition;->removeAppTransitionTimeoutCallbacks()V
+HSPLcom/android/server/wm/AppTransition;->setAppTransition(II)V
+HSPLcom/android/server/wm/AppTransition;->setAppTransitionState(I)V
 HSPLcom/android/server/wm/AppTransition;->setIdle()V
-HSPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;Lcom/android/server/wm/AppWindowToken;)V
+HSPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/AppTransition;->setReady()V
 PLcom/android/server/wm/AppTransition;->setTimeout()V
-PLcom/android/server/wm/AppTransition;->unregisterListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
+PLcom/android/server/wm/AppTransition;->shouldScaleDownThumbnailTransition(II)Z
+HPLcom/android/server/wm/AppTransition;->unregisterListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
 HSPLcom/android/server/wm/AppTransition;->updateBooster()V
-PLcom/android/server/wm/AppTransition;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/AppTransition;->updateToTranslucentAnimIfNeeded(II)I
+HSPLcom/android/server/wm/AppTransitionController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/AppTransitionController;->applyAnimations(Landroid/util/ArraySet;IZLandroid/view/WindowManager$LayoutParams;Z)V
+HSPLcom/android/server/wm/AppTransitionController;->applyAnimations(Landroid/util/ArraySet;Landroid/util/ArraySet;ILandroid/view/WindowManager$LayoutParams;Z)V
+HPLcom/android/server/wm/AppTransitionController;->applyAnimations(Landroid/util/ArraySet;Landroid/util/ArraySet;IZLandroid/view/WindowManager$LayoutParams;Z)V
+HSPLcom/android/server/wm/AppTransitionController;->canBeWallpaperTarget(Landroid/util/ArraySet;)Z
 HSPLcom/android/server/wm/AppTransitionController;->collectActivityTypes(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;)Landroid/util/ArraySet;
-HSPLcom/android/server/wm/AppTransitionController;->findAnimLayoutParamsToken(ILandroid/util/ArraySet;)Lcom/android/server/wm/AppWindowToken;
-HSPLcom/android/server/wm/AppTransitionController;->getRemoteAnimationOverride(Lcom/android/server/wm/AppWindowToken;ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
-HSPLcom/android/server/wm/AppTransitionController;->getTopApp(Landroid/util/ArraySet;Z)Lcom/android/server/wm/AppWindowToken;
+HSPLcom/android/server/wm/AppTransitionController;->containsVoiceInteraction(Landroid/util/ArraySet;)Z
+HSPLcom/android/server/wm/AppTransitionController;->findAnimLayoutParamsToken(ILandroid/util/ArraySet;)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/AppTransitionController;->getAnimLp(Lcom/android/server/wm/ActivityRecord;)Landroid/view/WindowManager$LayoutParams;
+HPLcom/android/server/wm/AppTransitionController;->getAnimationTargets(Landroid/util/ArraySet;Landroid/util/ArraySet;Z)Landroid/util/ArraySet;
+PLcom/android/server/wm/AppTransitionController;->getRemoteAnimationOverride(Lcom/android/server/wm/ActivityRecord;ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
+HSPLcom/android/server/wm/AppTransitionController;->getTopApp(Landroid/util/ArraySet;Z)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/AppTransitionController;->handleAppTransitionReady()V
-HSPLcom/android/server/wm/AppTransitionController;->handleChangingApps(ILandroid/view/WindowManager$LayoutParams;Z)V
-HSPLcom/android/server/wm/AppTransitionController;->handleClosingApps(ILandroid/view/WindowManager$LayoutParams;Z)V
+HSPLcom/android/server/wm/AppTransitionController;->handleChangingApps(I)V
+HSPLcom/android/server/wm/AppTransitionController;->handleClosingApps()V
 HSPLcom/android/server/wm/AppTransitionController;->handleNonAppWindowsInTransition(II)V
-HSPLcom/android/server/wm/AppTransitionController;->handleOpeningApps(ILandroid/view/WindowManager$LayoutParams;Z)V
-PLcom/android/server/wm/AppTransitionController;->isTransitWithinTask(ILcom/android/server/wm/Task;)Z
-HSPLcom/android/server/wm/AppTransitionController;->lookForHighestTokenWithFilter(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/function/Predicate;)Lcom/android/server/wm/AppWindowToken;
+HSPLcom/android/server/wm/AppTransitionController;->handleOpeningApps()V
+HPLcom/android/server/wm/AppTransitionController;->isTransitWithinTask(ILcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/AppTransitionController;->lambda$applyAnimations$4(Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/AppTransitionController;->lambda$applyAnimations$4(Ljava/util/ArrayList;ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/AppTransitionController;->lambda$findAnimLayoutParamsToken$1(ILandroid/util/ArraySet;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/AppTransitionController;->lambda$findAnimLayoutParamsToken$2(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/AppTransitionController;->lambda$findAnimLayoutParamsToken$3(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/AppTransitionController;->lambda$handleAppTransitionReady$0$AppTransitionController()V
+HSPLcom/android/server/wm/AppTransitionController;->lookForHighestTokenWithFilter(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/AppTransitionController;->maybeUpdateTransitToTranslucentAnim(I)I
 HSPLcom/android/server/wm/AppTransitionController;->maybeUpdateTransitToWallpaper(IZZ)I
-HSPLcom/android/server/wm/AppTransitionController;->transitionGoodToGo(Landroid/util/ArraySet;Landroid/util/SparseIntArray;)Z
+HSPLcom/android/server/wm/AppTransitionController;->overrideWithRemoteAnimationIfSet(Lcom/android/server/wm/ActivityRecord;ILandroid/util/ArraySet;)V
+HSPLcom/android/server/wm/AppTransitionController;->transitionGoodToGo(Landroid/util/ArraySet;Landroid/util/ArrayMap;)Z
+HSPLcom/android/server/wm/AppWarnings$ConfigHandler;-><init>(Lcom/android/server/wm/AppWarnings;Landroid/os/Looper;)V
 PLcom/android/server/wm/AppWarnings$ConfigHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/AppWarnings$ConfigHandler;->scheduleWrite()V
+HSPLcom/android/server/wm/AppWarnings$UiHandler;-><init>(Lcom/android/server/wm/AppWarnings;Landroid/os/Looper;)V
 HSPLcom/android/server/wm/AppWarnings$UiHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/AppWarnings$UiHandler;->hideDialogsForPackage(Ljava/lang/String;)V
+HSPLcom/android/server/wm/AppWarnings$UiHandler;->hideUnsupportedDisplaySizeDialog()V
+PLcom/android/server/wm/AppWarnings$UiHandler;->showDeprecatedTargetDialog(Lcom/android/server/wm/ActivityRecord;)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
+HSPLcom/android/server/wm/AppWarnings;->access$100(Lcom/android/server/wm/AppWarnings;)V
+PLcom/android/server/wm/AppWarnings;->access$300(Lcom/android/server/wm/AppWarnings;Ljava/lang/String;)V
+PLcom/android/server/wm/AppWarnings;->access$400(Lcom/android/server/wm/AppWarnings;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->access$500(Lcom/android/server/wm/AppWarnings;)V
 PLcom/android/server/wm/AppWarnings;->getPackageFlags(Ljava/lang/String;)I
 PLcom/android/server/wm/AppWarnings;->hasPackageFlag(Ljava/lang/String;I)Z
-HSPLcom/android/server/wm/AppWarnings;->hideDialogsForPackageUiThread(Ljava/lang/String;)V
+PLcom/android/server/wm/AppWarnings;->hideDialogsForPackageUiThread(Ljava/lang/String;)V
+HSPLcom/android/server/wm/AppWarnings;->hideUnsupportedDisplaySizeDialogUiThread()V
 HSPLcom/android/server/wm/AppWarnings;->onDensityChanged()V
-HSPLcom/android/server/wm/AppWarnings;->onPackageUninstalled(Ljava/lang/String;)V
-HSPLcom/android/server/wm/AppWarnings;->onResumeActivity(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/AppWarnings;->onPackageDataCleared(Ljava/lang/String;)V
+PLcom/android/server/wm/AppWarnings;->onPackageUninstalled(Ljava/lang/String;)V
+HPLcom/android/server/wm/AppWarnings;->onResumeActivity(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/AppWarnings;->onStartActivity(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/AppWarnings;->readConfigFromFileAmsThread()V
-HSPLcom/android/server/wm/AppWarnings;->removePackageAndHideDialogs(Ljava/lang/String;)V
+PLcom/android/server/wm/AppWarnings;->removePackageAndHideDialogs(Ljava/lang/String;)V
+PLcom/android/server/wm/AppWarnings;->setPackageFlag(Ljava/lang/String;IZ)V
 HSPLcom/android/server/wm/AppWarnings;->showDeprecatedTargetDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 PLcom/android/server/wm/AppWarnings;->showDeprecatedTargetSdkDialogUiThread(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/AppWarnings;->showUnsupportedCompileSdkDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/AppWarnings;->showUnsupportedDisplaySizeDialogIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 PLcom/android/server/wm/AppWarnings;->writeConfigToFileAmsThread()V
-PLcom/android/server/wm/AppWindowToken$1;->run()V
-PLcom/android/server/wm/AppWindowToken$AppSaturationInfo;->setSaturation([F[F)V
-HSPLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;Landroid/content/ComponentName;ZLcom/android/server/wm/DisplayContent;JZZIIIIZZLcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/AppWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IApplicationToken;Landroid/content/ComponentName;ZLcom/android/server/wm/DisplayContent;Z)V
-HSPLcom/android/server/wm/AppWindowToken;->addStartingWindow(Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/os/IBinder;ZZZZZZ)Z
-HSPLcom/android/server/wm/AppWindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->allDrawnStatesConsidered()Z
-HSPLcom/android/server/wm/AppWindowToken;->applyAnimationLocked(Landroid/view/WindowManager$LayoutParams;IZZ)Z
-HSPLcom/android/server/wm/AppWindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken;
-PLcom/android/server/wm/AppWindowToken;->calculateCompatBoundsTransformation(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/AppWindowToken;->canShowWindows()Z
-HSPLcom/android/server/wm/AppWindowToken;->canTurnScreenOn()Z
-HSPLcom/android/server/wm/AppWindowToken;->cancelAnimation()V
-HSPLcom/android/server/wm/AppWindowToken;->cancelAnimationOnly()V
-HSPLcom/android/server/wm/AppWindowToken;->checkAppWindowsReadyToShow()V
-HSPLcom/android/server/wm/AppWindowToken;->checkCompleteDeferredRemoval()Z
-HSPLcom/android/server/wm/AppWindowToken;->checkKeyguardFlagsChanged()V
-HSPLcom/android/server/wm/AppWindowToken;->clearAllDrawn()V
-HSPLcom/android/server/wm/AppWindowToken;->clearAnimatingFlags()V
-HSPLcom/android/server/wm/AppWindowToken;->clearChangeLeash(Landroid/view/SurfaceControl$Transaction;Z)V
-HSPLcom/android/server/wm/AppWindowToken;->clearRelaunching()V
-HSPLcom/android/server/wm/AppWindowToken;->commitVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z
-HSPLcom/android/server/wm/AppWindowToken;->containsDismissKeyguardWindow()Z
-HSPLcom/android/server/wm/AppWindowToken;->containsShowWhenLockedWindow()Z
-PLcom/android/server/wm/AppWindowToken;->createAnimationBoundsLayer(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
-PLcom/android/server/wm/AppWindowToken;->createSnapshot(Landroid/app/ActivityManager$TaskSnapshot;)Z
-HSPLcom/android/server/wm/AppWindowToken;->destroySurfaces()V
-HSPLcom/android/server/wm/AppWindowToken;->destroySurfaces(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->detachChildren()V
-PLcom/android/server/wm/AppWindowToken;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-HSPLcom/android/server/wm/AppWindowToken;->fillsParent()Z
-HSPLcom/android/server/wm/AppWindowToken;->findMainWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/AppWindowToken;->findMainWindow(Z)Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/AppWindowToken;->finishRelaunching()V
-HSPLcom/android/server/wm/AppWindowToken;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HSPLcom/android/server/wm/AppWindowToken;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-PLcom/android/server/wm/AppWindowToken;->getAnimationLeashParent()Landroid/view/SurfaceControl;
-PLcom/android/server/wm/AppWindowToken;->getAppAnimationLayer()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/AppWindowToken;->getBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/AppWindowToken;->getDisplayedBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/AppWindowToken;->getHighestAnimLayerWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/AppWindowToken;->getImeTargetBelowWindow(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/AppWindowToken;->getLetterboxInsets()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/AppWindowToken;->getOrientation(I)I
-HSPLcom/android/server/wm/AppWindowToken;->getOrientationIgnoreVisibility()I
-HSPLcom/android/server/wm/AppWindowToken;->getRemoteAnimationDefinition()Landroid/view/RemoteAnimationDefinition;
-HSPLcom/android/server/wm/AppWindowToken;->getResolvedOverrideBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/AppWindowToken;->getStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/AppWindowToken;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I
-HSPLcom/android/server/wm/AppWindowToken;->getTask()Lcom/android/server/wm/Task;
-PLcom/android/server/wm/AppWindowToken;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/AppWindowToken;->getTransit()I
-PLcom/android/server/wm/AppWindowToken;->getTransitFlags()I
-PLcom/android/server/wm/AppWindowToken;->hasWindowsAlive()Z
-HSPLcom/android/server/wm/AppWindowToken;->inSizeCompatMode()Z
-HSPLcom/android/server/wm/AppWindowToken;->isAppAnimating()Z
-HSPLcom/android/server/wm/AppWindowToken;->isClientHidden()Z
-PLcom/android/server/wm/AppWindowToken;->isClosingOrEnteringPip()Z
-PLcom/android/server/wm/AppWindowToken;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/AppWindowToken;->isFreezingScreen()Z
-PLcom/android/server/wm/AppWindowToken;->isLastWindow(Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/AppWindowToken;->isLetterboxOverlappingWith(Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/AppWindowToken;->isRelaunching()Z
-HSPLcom/android/server/wm/AppWindowToken;->isSelfAnimating()Z
-HSPLcom/android/server/wm/AppWindowToken;->isSurfaceShowing()Z
-HSPLcom/android/server/wm/AppWindowToken;->isVisible()Z
-HSPLcom/android/server/wm/AppWindowToken;->isWaitingForTransitionStart()Z
-PLcom/android/server/wm/AppWindowToken;->lambda$layoutLetterbox$2$AppWindowToken()Landroid/view/SurfaceControl$Builder;
-PLcom/android/server/wm/AppWindowToken;->lambda$new$0$AppWindowToken([F[F)V
-PLcom/android/server/wm/AppWindowToken;->lambda$new$1$AppWindowToken([F[F)V
-PLcom/android/server/wm/AppWindowToken;->lambda$removeStartingWindow$3(Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;)V
-HSPLcom/android/server/wm/AppWindowToken;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZZ)Landroid/view/animation/Animation;
-HSPLcom/android/server/wm/AppWindowToken;->matchParentBounds()Z
-HSPLcom/android/server/wm/AppWindowToken;->needsZBoost()Z
-HSPLcom/android/server/wm/AppWindowToken;->notifyAppResumed(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->notifyAppStopped()V
-HSPLcom/android/server/wm/AppWindowToken;->onAnimationFinished()V
-PLcom/android/server/wm/AppWindowToken;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/AppWindowToken;->onAnimationLeashDestroyed(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/AppWindowToken;->onAppFreezeTimeout()V
-HSPLcom/android/server/wm/AppWindowToken;->onAppTransitionDone()V
-HSPLcom/android/server/wm/AppWindowToken;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/AppWindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/AppWindowToken;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
-HSPLcom/android/server/wm/AppWindowToken;->onParentChanged()V
-HSPLcom/android/server/wm/AppWindowToken;->onRemovedFromDisplay()V
-HSPLcom/android/server/wm/AppWindowToken;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->prepareSurfaces()V
-PLcom/android/server/wm/AppWindowToken;->registerRemoteAnimations(Landroid/view/RemoteAnimationDefinition;)V
-HSPLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-HSPLcom/android/server/wm/AppWindowToken;->removeChild(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->removeDeadWindows()V
-HSPLcom/android/server/wm/AppWindowToken;->removeIfPossible()V
-HSPLcom/android/server/wm/AppWindowToken;->removeImmediately()V
-HSPLcom/android/server/wm/AppWindowToken;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->removeStartingWindow()V
-HSPLcom/android/server/wm/AppWindowToken;->reportDescendantOrientationChangeIfNeeded()V
-HSPLcom/android/server/wm/AppWindowToken;->requestUpdateWallpaperIfNeeded()V
-PLcom/android/server/wm/AppWindowToken;->scheduleAddStartingWindow()V
-HSPLcom/android/server/wm/AppWindowToken;->setAppLayoutChanges(ILjava/lang/String;)V
-HSPLcom/android/server/wm/AppWindowToken;->setCanTurnScreenOn(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->setClientHidden(Z)V
-PLcom/android/server/wm/AppWindowToken;->setDisablePreviewScreenshots(Z)V
-PLcom/android/server/wm/AppWindowToken;->setFillsParent(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->setHidden(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
-HSPLcom/android/server/wm/AppWindowToken;->setVisibility(ZZ)V
-HSPLcom/android/server/wm/AppWindowToken;->setWillCloseOrEnterPip(Z)V
-HSPLcom/android/server/wm/AppWindowToken;->shouldAnimate(I)Z
-PLcom/android/server/wm/AppWindowToken;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
-HSPLcom/android/server/wm/AppWindowToken;->shouldFreezeBounds()Z
-HSPLcom/android/server/wm/AppWindowToken;->shouldStartChangeTransition(II)Z
-HSPLcom/android/server/wm/AppWindowToken;->shouldUseAppThemeSnapshot()Z
-HSPLcom/android/server/wm/AppWindowToken;->showAllWindowsLocked()V
-HSPLcom/android/server/wm/AppWindowToken;->startFreezingScreen()V
-HSPLcom/android/server/wm/AppWindowToken;->startRelaunching()V
-HSPLcom/android/server/wm/AppWindowToken;->stopFreezingScreen(ZZ)V
-HSPLcom/android/server/wm/AppWindowToken;->toString()Ljava/lang/String;
-PLcom/android/server/wm/AppWindowToken;->transferStartingWindow(Landroid/os/IBinder;)Z
-HSPLcom/android/server/wm/AppWindowToken;->transferStartingWindowFromHiddenAboveTokenIfNeeded()V
-HSPLcom/android/server/wm/AppWindowToken;->unfreezeBounds()V
-HSPLcom/android/server/wm/AppWindowToken;->updateAllDrawn()V
-HSPLcom/android/server/wm/AppWindowToken;->updateDrawnWindowStates(Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/AppWindowToken;->updateLetterboxSurface(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/AppWindowToken;->updateReportedVisibilityLocked()V
-HSPLcom/android/server/wm/AppWindowToken;->windowsAreFocusable()Z
-PLcom/android/server/wm/AppWindowToken;->writeNameToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/wm/AppWindowToken;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HSPLcom/android/server/wm/BarController$1;->run()V
-HSPLcom/android/server/wm/BarController$BarHandler;->handleMessage(Landroid/os/Message;)V
-HSPLcom/android/server/wm/BarController;-><init>(Ljava/lang/String;IIIIII)V
+HPLcom/android/server/wm/BarController$1;-><init>(Lcom/android/server/wm/BarController;I)V
+HPLcom/android/server/wm/BarController$1;->run()V
+HSPLcom/android/server/wm/BarController$BarHandler;-><init>(Lcom/android/server/wm/BarController;)V
+PLcom/android/server/wm/BarController$BarHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/BarController;-><init>(Ljava/lang/String;IIIIIII)V
+PLcom/android/server/wm/BarController;->access$000(Lcom/android/server/wm/BarController;)I
+PLcom/android/server/wm/BarController;->access$100(Lcom/android/server/wm/BarController;)Lcom/android/server/wm/BarController$OnBarVisibilityChangedListener;
 HSPLcom/android/server/wm/BarController;->adjustSystemUiVisibilityLw(II)V
 HSPLcom/android/server/wm/BarController;->applyTranslucentFlagLw(Lcom/android/server/wm/WindowState;II)I
-HSPLcom/android/server/wm/BarController;->checkHiddenLw()Z
-HSPLcom/android/server/wm/BarController;->checkShowTransientBarLw()Z
-HSPLcom/android/server/wm/BarController;->computeStateLw(ZZLcom/android/server/wm/WindowState;Z)I
-PLcom/android/server/wm/BarController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/BarController;->checkHiddenLw()Z
+HPLcom/android/server/wm/BarController;->checkShowTransientBarLw()Z
+HPLcom/android/server/wm/BarController;->computeStateLw(ZZLcom/android/server/wm/WindowState;Z)I
+HSPLcom/android/server/wm/BarController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/BarController;->getStatusBarInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
 HSPLcom/android/server/wm/BarController;->isTransientShowRequested()Z
-HSPLcom/android/server/wm/BarController;->isTransientShowing()Z
+HPLcom/android/server/wm/BarController;->isTransientShowing()Z
 HSPLcom/android/server/wm/BarController;->isTransparentAllowed(Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/BarController;->setBarShowingLw(Z)Z
-HSPLcom/android/server/wm/BarController;->setContentFrame(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/wm/BarController$OnBarVisibilityChangedListener;Z)V
-HSPLcom/android/server/wm/BarController;->setShowTransparent(Z)V
-HSPLcom/android/server/wm/BarController;->setWindow(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/BarController;->showTransient()V
-HSPLcom/android/server/wm/BarController;->skipAnimation()Z
+HPLcom/android/server/wm/BarController;->setBarShowingLw(Z)Z
+HPLcom/android/server/wm/BarController;->setContentFrame(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/BarController;->setOnBarVisibilityChangedListener(Lcom/android/server/wm/BarController$OnBarVisibilityChangedListener;Z)V
+HPLcom/android/server/wm/BarController;->setShowTransparent(Z)V
+PLcom/android/server/wm/BarController;->setTransientBarState(I)V
+PLcom/android/server/wm/BarController;->setWindow(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/BarController;->showTransient()V
+HPLcom/android/server/wm/BarController;->skipAnimation()Z
 PLcom/android/server/wm/BarController;->transientBarStateToString(I)Ljava/lang/String;
+HPLcom/android/server/wm/BarController;->updateStateLw(I)Z
 HSPLcom/android/server/wm/BarController;->updateVisibilityLw(ZII)I
-HSPLcom/android/server/wm/BarController;->wasRecentlyTranslucent()Z
-HSPLcom/android/server/wm/BlackFrame$BlackSurface;-><init>(Lcom/android/server/wm/BlackFrame;Landroid/view/SurfaceControl$Transaction;IIIIILcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/BlackFrame$BlackSurface;->setMatrix(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Matrix;)V
-HSPLcom/android/server/wm/BlackFrame;-><init>(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Rect;Landroid/graphics/Rect;ILcom/android/server/wm/DisplayContent;Z)V
-HSPLcom/android/server/wm/BlackFrame;->kill()V
-HSPLcom/android/server/wm/BlackFrame;->setMatrix(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/BarController;->wasRecentlyTranslucent()Z
+HPLcom/android/server/wm/BlackFrame$BlackSurface;-><init>(Landroid/view/SurfaceControl$Transaction;IIIIILcom/android/server/wm/DisplayContent;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/BlackFrame;-><init>(Ljava/util/function/Supplier;Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Rect;Landroid/graphics/Rect;ILcom/android/server/wm/DisplayContent;ZLandroid/view/SurfaceControl;)V
+PLcom/android/server/wm/BlackFrame;->kill()V
+HSPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;)V
+HSPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;-><init>(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationController$1;)V
+HSPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->animationFinished()V
 HSPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
-PLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->run()V
-PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;-><init>(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZLandroid/graphics/Rect;)V
+HPLcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;->run()V
+HPLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;-><init>(Lcom/android/server/wm/BoundsAnimationController;Lcom/android/server/wm/BoundsAnimationTarget;ILandroid/graphics/Rect;Landroid/graphics/Rect;IIZZLandroid/graphics/Rect;)V
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$1000(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)I
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$1100(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)I
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$1200(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)I
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$1300(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)I
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$700(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)V
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$800(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)Z
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->access$900(Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;)Z
+HPLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->animatingToLargerSize()Z
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->cancel()V
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->cancelAndCallAnimationEnd()V
 PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->isAnimatingTo(Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->lambda$new$0$BoundsAnimationController$BoundsAnimator()V
 PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->onAnimationCancel(Landroid/animation/Animator;)V
 PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->onAnimationEnd(Landroid/animation/Animator;)V
 PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->onAnimationStart(Landroid/animation/Animator;)V
-PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+HPLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->pause()V
+PLcom/android/server/wm/BoundsAnimationController$BoundsAnimator;->resume()V
 HSPLcom/android/server/wm/BoundsAnimationController;-><init>(Landroid/content/Context;Lcom/android/server/wm/AppTransition;Landroid/os/Handler;Landroid/animation/AnimationHandler;)V
-PLcom/android/server/wm/BoundsAnimationController;->animateBounds(Lcom/android/server/wm/BoundsAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZ)V
-PLcom/android/server/wm/BoundsAnimationController;->animateBoundsImpl(Lcom/android/server/wm/BoundsAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZ)Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;
+HSPLcom/android/server/wm/BoundsAnimationController;->access$000(Lcom/android/server/wm/BoundsAnimationController;)Z
+PLcom/android/server/wm/BoundsAnimationController;->access$002(Lcom/android/server/wm/BoundsAnimationController;Z)Z
+PLcom/android/server/wm/BoundsAnimationController;->access$100(Lcom/android/server/wm/BoundsAnimationController;)Landroid/os/Handler;
+PLcom/android/server/wm/BoundsAnimationController;->access$200(Lcom/android/server/wm/BoundsAnimationController;)Landroid/util/ArrayMap;
+PLcom/android/server/wm/BoundsAnimationController;->access$400(Lcom/android/server/wm/BoundsAnimationController;)V
+PLcom/android/server/wm/BoundsAnimationController;->access$500(Lcom/android/server/wm/BoundsAnimationController;)Lcom/android/server/wm/AppTransition;
+PLcom/android/server/wm/BoundsAnimationController;->access$600(Lcom/android/server/wm/BoundsAnimationController;)Landroid/animation/AnimationHandler;
+PLcom/android/server/wm/BoundsAnimationController;->animateBounds(Lcom/android/server/wm/BoundsAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZI)V
+HPLcom/android/server/wm/BoundsAnimationController;->animateBoundsImpl(Lcom/android/server/wm/BoundsAnimationTarget;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZI)Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;
+PLcom/android/server/wm/BoundsAnimationController;->cancel(Lcom/android/server/wm/BoundsAnimationTarget;)V
+PLcom/android/server/wm/BoundsAnimationController;->getAnimationType()I
 PLcom/android/server/wm/BoundsAnimationController;->getHandler()Landroid/os/Handler;
+PLcom/android/server/wm/BoundsAnimationController;->isRunningFadeInAnimation(Lcom/android/server/wm/BoundsAnimationTarget;)Z
+PLcom/android/server/wm/BoundsAnimationController;->lambda$MoVv_WhxoMrTVo-xz1qu2FMcYrM(Lcom/android/server/wm/BoundsAnimationController;)V
 HSPLcom/android/server/wm/BoundsAnimationController;->lambda$new$0$BoundsAnimationController(Landroid/animation/AnimationHandler;)V
 PLcom/android/server/wm/BoundsAnimationController;->onAllWindowsDrawn()V
+PLcom/android/server/wm/BoundsAnimationController;->resume()V
+PLcom/android/server/wm/BoundsAnimationController;->setAnimationType(I)V
 PLcom/android/server/wm/BoundsAnimationController;->updateBooster()V
+HSPLcom/android/server/wm/ClientLifecycleManager;-><init>()V
 HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/IApplicationThread;Landroid/app/servertransaction/ClientTransactionItem;)V
-HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/servertransaction/ActivityLifecycleItem;)V
+HPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/servertransaction/ActivityLifecycleItem;)V
 HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/servertransaction/ClientTransactionItem;)V
 HSPLcom/android/server/wm/ClientLifecycleManager;->scheduleTransaction(Landroid/app/servertransaction/ClientTransaction;)V
+HSPLcom/android/server/wm/ClientLifecycleManager;->transactionWithCallback(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/servertransaction/ClientTransactionItem;)Landroid/app/servertransaction/ClientTransaction;
+HPLcom/android/server/wm/ClientLifecycleManager;->transactionWithState(Landroid/app/IApplicationThread;Landroid/os/IBinder;Landroid/app/servertransaction/ActivityLifecycleItem;)Landroid/app/servertransaction/ClientTransaction;
+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
-PLcom/android/server/wm/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V
+HSPLcom/android/server/wm/CompatModePackages;->compatibilityInfoForPackageLocked(Landroid/content/pm/ApplicationInfo;)Landroid/content/res/CompatibilityInfo;
+HSPLcom/android/server/wm/CompatModePackages;->getPackageFlags(Ljava/lang/String;)I
+PLcom/android/server/wm/CompatModePackages;->getPackages()Ljava/util/HashMap;
+HPLcom/android/server/wm/CompatModePackages;->handlePackageAddedLocked(Ljava/lang/String;Z)V
+PLcom/android/server/wm/CompatModePackages;->handlePackageDataClearedLocked(Ljava/lang/String;)V
+PLcom/android/server/wm/CompatModePackages;->handlePackageUninstalledLocked(Ljava/lang/String;)V
+PLcom/android/server/wm/CompatModePackages;->removePackage(Ljava/lang/String;)V
+HSPLcom/android/server/wm/ConfigurationContainer$RemoteToken;-><init>(Lcom/android/server/wm/ConfigurationContainer;)V
+PLcom/android/server/wm/ConfigurationContainer$RemoteToken;->fromBinder(Landroid/os/IBinder;)Lcom/android/server/wm/ConfigurationContainer$RemoteToken;
+PLcom/android/server/wm/ConfigurationContainer$RemoteToken;->getContainer()Lcom/android/server/wm/ConfigurationContainer;
 HSPLcom/android/server/wm/ConfigurationContainer;-><init>()V
+HSPLcom/android/server/wm/ConfigurationContainer;->containsListener(Lcom/android/server/wm/ConfigurationContainerListener;)Z
 HSPLcom/android/server/wm/ConfigurationContainer;->diffRequestedOverrideBounds(Landroid/graphics/Rect;)I
-PLcom/android/server/wm/ConfigurationContainer;->dumpChildrenNames(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/ConfigurationContainer;->dumpChildrenNames(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/ConfigurationContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
 HSPLcom/android/server/wm/ConfigurationContainer;->equivalentBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
 HSPLcom/android/server/wm/ConfigurationContainer;->equivalentRequestedOverrideBounds(Landroid/graphics/Rect;)Z
 HSPLcom/android/server/wm/ConfigurationContainer;->getActivityType()I
 HSPLcom/android/server/wm/ConfigurationContainer;->getBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/ConfigurationContainer;->getBounds(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->getConfiguration()Landroid/content/res/Configuration;
-PLcom/android/server/wm/ConfigurationContainer;->getLastOverrideConfigurationChanges()I
 HSPLcom/android/server/wm/ConfigurationContainer;->getMergedOverrideConfiguration()Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/ConfigurationContainer;->getName()Ljava/lang/String;
-PLcom/android/server/wm/ConfigurationContainer;->getPosition(Landroid/graphics/Point;)V
+HPLcom/android/server/wm/ConfigurationContainer;->getPosition(Landroid/graphics/Point;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideConfiguration()Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/ConfigurationContainer;->getRequestedOverrideWindowingMode()I
+HSPLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/ConfigurationContainer;->getResolvedOverrideConfiguration()Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/ConfigurationContainer;->getWindowConfiguration()Landroid/app/WindowConfiguration;
 HSPLcom/android/server/wm/ConfigurationContainer;->getWindowingMode()I
-HSPLcom/android/server/wm/ConfigurationContainer;->hasOverrideBounds()Z
+HSPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z
+HSPLcom/android/server/wm/ConfigurationContainer;->hasCompatibleActivityType(Lcom/android/server/wm/ConfigurationContainer;)Z
+HPLcom/android/server/wm/ConfigurationContainer;->hasOverrideBounds()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->inFreeformWindowingMode()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->inMultiWindowMode()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->inPinnedWindowingMode()Z
@@ -15761,1447 +35379,2862 @@
 HSPLcom/android/server/wm/ConfigurationContainer;->isActivityTypeStandardOrUndefined()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->isAlwaysOnTop()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->isCompatible(II)Z
+HSPLcom/android/server/wm/ConfigurationContainer;->isFocusable()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->matchParentBounds()Z
 HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/ConfigurationContainer;->onConfigurationChanged(Landroid/content/res/Configuration;Z)V
 HSPLcom/android/server/wm/ConfigurationContainer;->onMergedOverrideConfigurationChanged()V
+HSPLcom/android/server/wm/ConfigurationContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->registerConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/ConfigurationContainer;->setActivityType(I)V
+PLcom/android/server/wm/ConfigurationContainer;->setAlwaysOnTop(Z)V
 HSPLcom/android/server/wm/ConfigurationContainer;->setBounds(IIII)I
 HSPLcom/android/server/wm/ConfigurationContainer;->setBounds(Landroid/graphics/Rect;)I
-HSPLcom/android/server/wm/ConfigurationContainer;->unregisterConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
-HSPLcom/android/server/wm/ConfigurationContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HSPLcom/android/server/wm/Dimmer$AlphaAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
-HSPLcom/android/server/wm/Dimmer$AlphaAnimationSpec;->getDuration()J
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getAnimationLeashParent()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getParentSurfaceControl()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceControl()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceHeight()I
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceWidth()I
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/Dimmer$DimAnimatable;->onAnimationLeashDestroyed(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/Dimmer$DimState;-><init>(Lcom/android/server/wm/Dimmer;Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/Dimmer$DimState;->lambda$new$0$Dimmer$DimState(Lcom/android/server/wm/Dimmer$DimAnimatable;)V
-HSPLcom/android/server/wm/Dimmer;->dim(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;IF)V
-HSPLcom/android/server/wm/Dimmer;->dimBelow(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;F)V
+HSPLcom/android/server/wm/ConfigurationContainer;->setDisplayWindowingMode(I)V
+HSPLcom/android/server/wm/ConfigurationContainer;->setWindowingMode(I)V
+HSPLcom/android/server/wm/ConfigurationContainer;->supportsSplitScreenWindowingMode()Z
+HPLcom/android/server/wm/ConfigurationContainer;->unregisterConfigurationChangeListener(Lcom/android/server/wm/ConfigurationContainerListener;)V
+PLcom/android/server/wm/DeprecatedTargetSdkVersionDialog;-><init>(Lcom/android/server/wm/AppWarnings;Landroid/content/Context;Landroid/content/pm/ApplicationInfo;)V
+PLcom/android/server/wm/DeprecatedTargetSdkVersionDialog;->dismiss()V
+PLcom/android/server/wm/DeprecatedTargetSdkVersionDialog;->lambda$new$0$DeprecatedTargetSdkVersionDialog(Lcom/android/server/wm/AppWarnings;Landroid/content/DialogInterface;I)V
+PLcom/android/server/wm/DeprecatedTargetSdkVersionDialog;->show()V
+HPLcom/android/server/wm/Dimmer$AlphaAnimationSpec;-><init>(FFJ)V
+HPLcom/android/server/wm/Dimmer$AlphaAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
+HPLcom/android/server/wm/Dimmer$AlphaAnimationSpec;->getDuration()J
+PLcom/android/server/wm/Dimmer$DimAnimatable;-><init>(Lcom/android/server/wm/Dimmer;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Dimmer$DimAnimatable;-><init>(Lcom/android/server/wm/Dimmer;Landroid/view/SurfaceControl;Lcom/android/server/wm/Dimmer$1;)V
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceHeight()I
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->getSurfaceWidth()I
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Dimmer$DimAnimatable;->removeSurface()V
+HPLcom/android/server/wm/Dimmer$DimState;-><init>(Lcom/android/server/wm/Dimmer;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Dimmer$DimState;->lambda$new$0$Dimmer$DimState(Lcom/android/server/wm/Dimmer$DimAnimatable;)V
+PLcom/android/server/wm/Dimmer$DimState;->lambda$new$0$Dimmer$DimState(Lcom/android/server/wm/Dimmer$DimAnimatable;ILcom/android/server/wm/AnimationAdapter;)V
+HSPLcom/android/server/wm/Dimmer;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/Dimmer;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/Dimmer$SurfaceAnimatorStarter;)V
+PLcom/android/server/wm/Dimmer;->access$000(Lcom/android/server/wm/Dimmer;)Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/Dimmer;->dim(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;IF)V
+HPLcom/android/server/wm/Dimmer;->dimAbove(Landroid/view/SurfaceControl$Transaction;F)V
+HPLcom/android/server/wm/Dimmer;->dimBelow(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;F)V
 PLcom/android/server/wm/Dimmer;->dontAnimateExit()V
-HSPLcom/android/server/wm/Dimmer;->getDimState(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Dimmer$DimState;
-HSPLcom/android/server/wm/Dimmer;->makeDimLayer()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/Dimmer;->getDimDuration(Lcom/android/server/wm/WindowContainer;)J
+HPLcom/android/server/wm/Dimmer;->getDimState(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/Dimmer$DimState;
+HPLcom/android/server/wm/Dimmer;->makeDimLayer()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/Dimmer;->resetDimStates()V
+HPLcom/android/server/wm/Dimmer;->startAnim(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;FF)V
+PLcom/android/server/wm/Dimmer;->startDimEnter(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Dimmer;->startDimExit(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/SurfaceAnimator;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Dimmer;->stopDim(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/Dimmer;->updateDims(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Rect;)Z
+HSPLcom/android/server/wm/DisplayArea$1;-><clinit>()V
+HSPLcom/android/server/wm/DisplayArea$Root;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/DisplayArea$Root;->getDimmer()Lcom/android/server/wm/Dimmer;
+HSPLcom/android/server/wm/DisplayArea$Root;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/DisplayArea$Root;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/DisplayArea$Root;->getSurfaceHeight()I
+PLcom/android/server/wm/DisplayArea$Root;->getSurfaceWidth()I
+PLcom/android/server/wm/DisplayArea$Root;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HSPLcom/android/server/wm/DisplayArea$Root;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/DisplayArea$Root;->prepareSurfaces()V
+HSPLcom/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;->addChild(Lcom/android/server/wm/WindowToken;)V
+HSPLcom/android/server/wm/DisplayArea$Tokens;->getOrientation(I)I
+HSPLcom/android/server/wm/DisplayArea$Tokens;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+HSPLcom/android/server/wm/DisplayArea$Tokens;->getSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/DisplayArea$Tokens;->lambda$new$0$DisplayArea$Tokens(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/DisplayArea$Tokens;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/DisplayArea$Type;-><clinit>()V
+HSPLcom/android/server/wm/DisplayArea$Type;-><init>(Ljava/lang/String;I)V
+HSPLcom/android/server/wm/DisplayArea$Type;->checkChild(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
+HSPLcom/android/server/wm/DisplayArea$Type;->checkSiblings(Lcom/android/server/wm/DisplayArea$Type;Lcom/android/server/wm/DisplayArea$Type;)V
+HSPLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/DisplayArea$Type;
+HPLcom/android/server/wm/DisplayArea$Type;->typeOf(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayArea$Type;
+HSPLcom/android/server/wm/DisplayArea$Type;->values()[Lcom/android/server/wm/DisplayArea$Type;
+HSPLcom/android/server/wm/DisplayArea;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayArea$Type;Ljava/lang/String;)V
+PLcom/android/server/wm/DisplayArea;->commitPendingTransaction()V
+HPLcom/android/server/wm/DisplayArea;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/DisplayArea;->fillsParent()Z
+PLcom/android/server/wm/DisplayArea;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayArea;->getName()Ljava/lang/String;
+PLcom/android/server/wm/DisplayArea;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayArea;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+HSPLcom/android/server/wm/DisplayArea;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/DisplayArea;->getSurfaceHeight()I
+PLcom/android/server/wm/DisplayArea;->getSurfaceWidth()I
+PLcom/android/server/wm/DisplayArea;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/DisplayArea;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/DisplayArea;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/DisplayArea;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/DisplayArea;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayAreaPolicy$1;-><clinit>()V
+HSPLcom/android/server/wm/DisplayAreaPolicy$Default;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayArea$Root;Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$TaskContainers;)V
+HPLcom/android/server/wm/DisplayAreaPolicy$Default;->addWindow(Lcom/android/server/wm/WindowToken;)V
+HSPLcom/android/server/wm/DisplayAreaPolicy$Default;->attachDisplayAreas()V
+HSPLcom/android/server/wm/DisplayAreaPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayArea$Root;Lcom/android/server/wm/DisplayArea;Lcom/android/server/wm/DisplayContent$TaskContainers;)V
+HSPLcom/android/server/wm/DisplayContent$AboveAppWindowContainers;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/DisplayContent$AboveAppWindowContainers;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/DisplayContent$AboveAppWindowContainers;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;)V
-HSPLcom/android/server/wm/DisplayContent$AboveAppWindowContainers;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayContent$AboveAppWindowContainers;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
+HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>()V
+HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;-><init>(Lcom/android/server/wm/DisplayContent$1;)V
+HSPLcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;->reset()V
+HSPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->fillsParent()Z
+PLcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;->isVisible()Z
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
+HPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindowForce(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->getOrientation(I)I
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->setNeedsLayer()V
+HSPLcom/android/server/wm/DisplayContent$ImeContainer;->skipImeWindowsDuringTraversal(Lcom/android/server/wm/DisplayContent;)Z
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->addChild(Lcom/android/server/wm/WindowToken;)V
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getDimmer()Lcom/android/server/wm/Dimmer;
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getName()Ljava/lang/String;
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation()I
-HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$new$0$DisplayContent$NonAppWindowContainers(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I
+HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->getOrientation(I)I
+HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$new$0$DisplayContent$NonAppWindowContainers(Lcom/android/server/wm/WindowToken;Lcom/android/server/wm/WindowToken;)I
+HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$new$1$DisplayContent$NonAppWindowContainers(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->lambda$new$1(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayContent$NonAppWindowContainers;->prepareSurfaces()V
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->addStackReferenceIfNeeded(Lcom/android/server/wm/TaskStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->addChild(Lcom/android/server/wm/ActivityStack;I)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->addStackReferenceIfNeeded(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->assignStackOrdering(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->findPositionForStack(ILcom/android/server/wm/ActivityStack;Z)I
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->forAllExitingAppTokenWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+PLcom/android/server/wm/DisplayContent$TaskContainers;->getAppAnimationLayer(I)Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getIndexOf(Lcom/android/server/wm/ActivityStack;)I
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getOrientation(I)I
+HPLcom/android/server/wm/DisplayContent$TaskContainers;->getRootHomeTask()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getRootPinnedTask()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getRootSplitScreenPrimaryTask()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent$TaskContainers;->getSplitScreenDividerAnchor()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getStack(II)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->getTopStack()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent$TaskContainers;->getVisibleTasks()Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayContent$TaskContainers;->lambda$getVisibleTasks$0(Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->lambda$onParentChanged$1$DisplayContent$TaskContainers()V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->onStackWindowingModeChanged(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->positionChildAt(ILcom/android/server/wm/ActivityStack;Z)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/DisplayContent$TaskContainers;->removeChild(Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/DisplayContent$TaskContainers;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->removeExistingAppTokensIfPossible()V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->removeStackReferenceIfNeeded(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskContainers;->setExitingTokensHasVisible(Z)V
+HSPLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;-><init>()V
+PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->lambda$1FHFJXiYTNFcgi5tiBrxzbmjdWw(Lcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->process(Lcom/android/server/wm/WindowContainer;III)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;->processTask(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;-><init>(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->addChild(Lcom/android/server/wm/ActivityStack;I)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->addStackReferenceIfNeeded(Lcom/android/server/wm/ActivityStack;)V
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->assignStackOrdering(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/TaskStack;Z)I
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->findPositionForStack(ILcom/android/server/wm/ActivityStack;Z)I
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllExitingAppTokenWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->getAppAnimationLayer(I)Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getHomeStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getStack(II)Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getTopStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->onParentChanged()V
-HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/TaskStack;Z)V
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getAppAnimationLayer(I)Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getHomeStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getIndexOf(Lcom/android/server/wm/ActivityStack;)I
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getOrientation()I
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getPinnedStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getRecentsStack()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent$TaskStackContainers;->getSplitScreenDividerAnchor()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getSplitScreenPrimaryStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getStack(II)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->getTopStack()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent$TaskStackContainers;->getVisibleTasks()Ljava/util/ArrayList;
+HPLcom/android/server/wm/DisplayContent$TaskStackContainers;->lambda$getVisibleTasks$0(Ljava/util/ArrayList;Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->lambda$onParentChanged$1$DisplayContent$TaskStackContainers()V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->onStackWindowingModeChanged(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/ActivityStack;Z)V
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeChild(Lcom/android/server/wm/ActivityStack;)V
 PLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeChild(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeExistingAppTokensIfPossible()V
-PLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeStackReferenceIfNeeded(Lcom/android/server/wm/TaskStack;)V
+HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->removeStackReferenceIfNeeded(Lcom/android/server/wm/ActivityStack;)V
 HSPLcom/android/server/wm/DisplayContent$TaskStackContainers;->setExitingTokensHasVisible(Z)V
-HSPLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityDisplay;)V
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;-><init>(Lcom/android/server/wm/DisplayContent;Ljava/lang/String;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->addChildren()V
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->getName()Ljava/lang/String;
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HSPLcom/android/server/wm/DisplayContent$WindowContainers;->skipTraverseChild(Lcom/android/server/wm/WindowContainer;)Z
+HSPLcom/android/server/wm/DisplayContent;-><clinit>()V
+HSPLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/RootActivityContainer;)V
+HSPLcom/android/server/wm/DisplayContent;-><init>(Landroid/view/Display;Lcom/android/server/wm/RootWindowContainer;)V
+HSPLcom/android/server/wm/DisplayContent;->access$100(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$TaskStackContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$1002(Lcom/android/server/wm/DisplayContent;I)I
+HSPLcom/android/server/wm/DisplayContent;->access$200(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$TaskContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$200(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$TaskStackContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$200(Lcom/android/server/wm/DisplayContent;)Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->access$300(Lcom/android/server/wm/DisplayContent;)Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->access$400(Lcom/android/server/wm/DisplayContent;)Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->access$500(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$500(Lcom/android/server/wm/DisplayContent;)Ljava/util/ArrayList;
+HSPLcom/android/server/wm/DisplayContent;->access$600(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$AboveAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$600(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$ImeContainer;
+HSPLcom/android/server/wm/DisplayContent;->access$600(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$700(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayArea$Root;
+HSPLcom/android/server/wm/DisplayContent;->access$700(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$AboveAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$700(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$800(Lcom/android/server/wm/DisplayContent;)I
+HSPLcom/android/server/wm/DisplayContent;->access$800(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayAreaPolicy;
+HSPLcom/android/server/wm/DisplayContent;->access$800(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$AboveAppWindowContainers;
+HSPLcom/android/server/wm/DisplayContent;->access$800(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;
+PLcom/android/server/wm/DisplayContent;->access$802(Lcom/android/server/wm/DisplayContent;I)I
+HSPLcom/android/server/wm/DisplayContent;->access$900(Lcom/android/server/wm/DisplayContent;)I
+HSPLcom/android/server/wm/DisplayContent;->access$902(Lcom/android/server/wm/DisplayContent;I)I
+HSPLcom/android/server/wm/DisplayContent;->addStack(Lcom/android/server/wm/ActivityStack;I)V
+HPLcom/android/server/wm/DisplayContent;->addToGlobalAndConsumeLimit(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Rect;ILcom/android/server/wm/WindowState;I)I
 HSPLcom/android/server/wm/DisplayContent;->addWindowToken(Landroid/os/IBinder;Lcom/android/server/wm/WindowToken;)V
 HSPLcom/android/server/wm/DisplayContent;->adjustDisplaySizeRanges(Landroid/view/DisplayInfo;IIII)V
 HSPLcom/android/server/wm/DisplayContent;->adjustForImeIfNeeded()V
+HSPLcom/android/server/wm/DisplayContent;->allResumedActivitiesComplete()Z
+HSPLcom/android/server/wm/DisplayContent;->alwaysCreateStack(II)Z
 HSPLcom/android/server/wm/DisplayContent;->amendWindowTapExcludeRegion(Landroid/graphics/Region;)V
-HSPLcom/android/server/wm/DisplayContent;->applyRotationLocked(II)V
+HPLcom/android/server/wm/DisplayContent;->animateForIme(FFF)Z
+PLcom/android/server/wm/DisplayContent;->applyMagnificationSpec(Landroid/view/MagnificationSpec;)V
+HPLcom/android/server/wm/DisplayContent;->applyRotationLocked(II)V
 HSPLcom/android/server/wm/DisplayContent;->applySurfaceChangesTransaction(Z)V
 HSPLcom/android/server/wm/DisplayContent;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/DisplayContent;->assignStackOrdering()V
+HPLcom/android/server/wm/DisplayContent;->assignStackOrdering()V
 HSPLcom/android/server/wm/DisplayContent;->assignWindowLayers(Z)V
+HPLcom/android/server/wm/DisplayContent;->beginImeAdjustAnimation()V
 HSPLcom/android/server/wm/DisplayContent;->calculateBounds(Landroid/view/DisplayInfo;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotation(I)Lcom/android/server/wm/utils/WmDisplayCutout;
 HSPLcom/android/server/wm/DisplayContent;->calculateDisplayCutoutForRotationUncached(Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
-PLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z
+HPLcom/android/server/wm/DisplayContent;->calculateSystemGestureExclusion(Landroid/graphics/Region;Landroid/graphics/Region;)Z
+HPLcom/android/server/wm/DisplayContent;->canAddToastWindowForUid(I)Z
+PLcom/android/server/wm/DisplayContent;->canShowIme()Z
+PLcom/android/server/wm/DisplayContent;->canUpdateImeTarget()Z
 HSPLcom/android/server/wm/DisplayContent;->checkCompleteDeferredRemoval()Z
-HSPLcom/android/server/wm/DisplayContent;->checkWaitingForWindows()Z
+HPLcom/android/server/wm/DisplayContent;->clearImeAdjustAnimation()Z
+HSPLcom/android/server/wm/DisplayContent;->clearLayoutNeeded()V
 HSPLcom/android/server/wm/DisplayContent;->computeCompatSmallestWidth(ZIIILandroid/view/DisplayCutout;)I
-PLcom/android/server/wm/DisplayContent;->computeImeParent()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/DisplayContent;->computeImeControlTarget()Lcom/android/server/wm/InsetsControlTarget;
+HPLcom/android/server/wm/DisplayContent;->computeImeParent()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/DisplayContent;->computeImeTarget(Z)Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->computeImeTargetIfNeeded(Lcom/android/server/wm/AppWindowToken;)V
+HSPLcom/android/server/wm/DisplayContent;->computeImeTargetIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/DisplayContent;->computeScreenConfiguration(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/DisplayContent;->computeSizeRangesAndScreenLayout(Landroid/view/DisplayInfo;ZIIIFLandroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/DisplayContent;->configureDisplayPolicy()V
-PLcom/android/server/wm/DisplayContent;->continueUpdateImeTarget()V
+HPLcom/android/server/wm/DisplayContent;->continueUpdateImeTarget()V
 PLcom/android/server/wm/DisplayContent;->convertCropForSurfaceFlinger(Landroid/graphics/Rect;III)V
+PLcom/android/server/wm/DisplayContent;->createPortalWindowHandle(Ljava/lang/String;)Landroid/view/InputWindowHandle;
+HPLcom/android/server/wm/DisplayContent;->createRotationMatrix(IFFFFLandroid/graphics/Matrix;)V
+PLcom/android/server/wm/DisplayContent;->createRotationMatrix(IFFLandroid/graphics/Matrix;)V
+HSPLcom/android/server/wm/DisplayContent;->createStack(IIZ)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->createStack(IIZLandroid/content/pm/ActivityInfo;Landroid/content/Intent;)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->createStackUnchecked(IIIZ)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->createStackUnchecked(IIIZLandroid/content/pm/ActivityInfo;Landroid/content/Intent;)Lcom/android/server/wm/ActivityStack;
 PLcom/android/server/wm/DisplayContent;->deferUpdateImeTarget()V
-PLcom/android/server/wm/DisplayContent;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayContent;->deltaRotation(II)I
+HSPLcom/android/server/wm/DisplayContent;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+PLcom/android/server/wm/DisplayContent;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/DisplayContent;->dumpDebugInner(Landroid/util/proto/ProtoOutputStream;JI)V
 PLcom/android/server/wm/DisplayContent;->dumpTokens(Ljava/io/PrintWriter;Z)V
 PLcom/android/server/wm/DisplayContent;->dumpWindowAnimators(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/DisplayContent;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZZ)V
 HSPLcom/android/server/wm/DisplayContent;->executeAppTransition()V
 HSPLcom/android/server/wm/DisplayContent;->findFocusedWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayContent;->findFocusedWindowIfNeeded()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->findFocusedWindowIfNeeded(I)Lcom/android/server/wm/WindowState;
 PLcom/android/server/wm/DisplayContent;->findTaskForResizePoint(II)Lcom/android/server/wm/Task;
-PLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HSPLcom/android/server/wm/DisplayContent;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HSPLcom/android/server/wm/DisplayContent;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken;
-HSPLcom/android/server/wm/DisplayContent;->getBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->findTaskLocked(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/RootActivityContainer$FindTaskResult;)V
+HSPLcom/android/server/wm/DisplayContent;->findTaskLocked(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/RootWindowContainer$FindTaskResult;)V
+HPLcom/android/server/wm/DisplayContent;->forAllImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/DisplayContent;->getActivityRecord(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->getBounds(Landroid/graphics/Rect;I)V
+PLcom/android/server/wm/DisplayContent;->getCurrentOverrideConfigurationChanges()I
 HSPLcom/android/server/wm/DisplayContent;->getDisplay()Landroid/view/Display;
 HSPLcom/android/server/wm/DisplayContent;->getDisplayId()I
 HSPLcom/android/server/wm/DisplayContent;->getDisplayInfo()Landroid/view/DisplayInfo;
 HSPLcom/android/server/wm/DisplayContent;->getDisplayMetrics()Landroid/util/DisplayMetrics;
 HSPLcom/android/server/wm/DisplayContent;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
 HSPLcom/android/server/wm/DisplayContent;->getDisplayRotation()Lcom/android/server/wm/DisplayRotation;
+PLcom/android/server/wm/DisplayContent;->getDisplayUiContext()Landroid/content/Context;
 HSPLcom/android/server/wm/DisplayContent;->getDockedDividerController()Lcom/android/server/wm/DockedStackDividerController;
-HSPLcom/android/server/wm/DisplayContent;->getHomeStack()Lcom/android/server/wm/TaskStack;
+HSPLcom/android/server/wm/DisplayContent;->getFocusedStack()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent;->getHomeActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->getHomeActivityForUser(I)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/DisplayContent;->getHomeStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getIndexOf(Lcom/android/server/wm/ActivityStack;)I
 HSPLcom/android/server/wm/DisplayContent;->getInputMonitor()Lcom/android/server/wm/InputMonitor;
-HSPLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
+PLcom/android/server/wm/DisplayContent;->getInsetsStateController()Lcom/android/server/wm/InsetsStateController;
+HSPLcom/android/server/wm/DisplayContent;->getLastFocusedStack()Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/DisplayContent;->getLastHasContent()Z
-PLcom/android/server/wm/DisplayContent;->getLastOrientation()I
+HSPLcom/android/server/wm/DisplayContent;->getLastOrientation()I
 PLcom/android/server/wm/DisplayContent;->getLastWindowForcedOrientation()I
+PLcom/android/server/wm/DisplayContent;->getLocationInParentDisplay()Landroid/graphics/Point;
+PLcom/android/server/wm/DisplayContent;->getLocationInParentWindow()Landroid/graphics/Point;
 HSPLcom/android/server/wm/DisplayContent;->getMetricsLogger()Lcom/android/internal/logging/MetricsLogger;
-HSPLcom/android/server/wm/DisplayContent;->getNaturalOrientation()I
-HSPLcom/android/server/wm/DisplayContent;->getNeedsMenu(Lcom/android/server/wm/WindowState;Lcom/android/server/policy/WindowManagerPolicy$WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->getName()Ljava/lang/String;
+PLcom/android/server/wm/DisplayContent;->getNaturalOrientation()I
+HPLcom/android/server/wm/DisplayContent;->getNextFocusableStack(Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getNextStackId()I
+HSPLcom/android/server/wm/DisplayContent;->getOrCreateStack(IIZ)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent;->getOrCreateStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;IZ)Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/DisplayContent;->getOrientation()I
-HSPLcom/android/server/wm/DisplayContent;->getPinnedStack()Lcom/android/server/wm/TaskStack;
+PLcom/android/server/wm/DisplayContent;->getOverlayLayer()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent;->getParentWindow()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->getPinnedStack()Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/DisplayContent;->getPinnedStackController()Lcom/android/server/wm/PinnedStackController;
+HPLcom/android/server/wm/DisplayContent;->getPresentUIDs()Landroid/util/IntArray;
+HSPLcom/android/server/wm/DisplayContent;->getRecentsStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->getRootHomeTask()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getRootPinnedTask()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getRootSplitScreenPrimaryTask()Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/DisplayContent;->getRotation()I
+HSPLcom/android/server/wm/DisplayContent;->getRotationAnimation()Lcom/android/server/wm/ScreenRotationAnimation;
 HSPLcom/android/server/wm/DisplayContent;->getSession()Landroid/view/SurfaceSession;
-HSPLcom/android/server/wm/DisplayContent;->getSplitScreenPrimaryStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent;->getSplitScreenPrimaryStackIgnoringVisibility()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent;->getStack(II)Lcom/android/server/wm/TaskStack;
+PLcom/android/server/wm/DisplayContent;->getSplitScreenDividerAnchor()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent;->getSplitScreenPrimaryStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getSplitScreenPrimaryStackIgnoringVisibility()Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/DisplayContent;->getStableRect(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->getStack(I)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getStack(II)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/DisplayContent;->getStackAbove(Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getStackAt(I)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getStackCount()I
 HSPLcom/android/server/wm/DisplayContent;->getStacks()Lcom/android/server/wm/WindowList;
-HSPLcom/android/server/wm/DisplayContent;->getTopStack()Lcom/android/server/wm/TaskStack;
-HSPLcom/android/server/wm/DisplayContent;->getTopStackInWindowingMode(I)Lcom/android/server/wm/TaskStack;
-PLcom/android/server/wm/DisplayContent;->getTouchableWinAtPointLocked(FF)Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayContent;->getTopStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/DisplayContent;->getTopStackInWindowingMode(I)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/DisplayContent;->getTouchableWinAtPointLocked(FF)Lcom/android/server/wm/WindowState;
 PLcom/android/server/wm/DisplayContent;->getVisibleTasks()Ljava/util/ArrayList;
+PLcom/android/server/wm/DisplayContent;->getWindowCornerRadius()F
 HSPLcom/android/server/wm/DisplayContent;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/DisplayContent;->getWindowingLayer()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/DisplayContent;->handleActivitySizeCompatModeIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/DisplayContent;->handleAnimatingStoppedAndTransition()V
 HSPLcom/android/server/wm/DisplayContent;->handlesOrientationChangeFromDescendant()Z
 HSPLcom/android/server/wm/DisplayContent;->hasAccess(I)Z
-HSPLcom/android/server/wm/DisplayContent;->hasSecureWindowOnScreen()Z
-PLcom/android/server/wm/DisplayContent;->hasSplitScreenPrimaryStack()Z
+HPLcom/android/server/wm/DisplayContent;->hasAlertWindowSurfaces()Z
+HSPLcom/android/server/wm/DisplayContent;->hasPinnedStack()Z
+HSPLcom/android/server/wm/DisplayContent;->hasPinnedTask()Z
+PLcom/android/server/wm/DisplayContent;->hasSecureWindowOnScreen()Z
+HSPLcom/android/server/wm/DisplayContent;->hasSplitScreenPrimaryStack()Z
+HSPLcom/android/server/wm/DisplayContent;->hasSplitScreenPrimaryTask()Z
+PLcom/android/server/wm/DisplayContent;->hideTransientBars()V
 HSPLcom/android/server/wm/DisplayContent;->initializeDisplayBaseInfo()V
-HSPLcom/android/server/wm/DisplayContent;->isInputMethodClientFocus(II)Z
+PLcom/android/server/wm/DisplayContent;->isAnyNonToastWindowVisibleForPid(I)Z
+PLcom/android/server/wm/DisplayContent;->isHomeActivityForUser(Lcom/android/server/wm/ActivityRecord;I)Z
+HPLcom/android/server/wm/DisplayContent;->isImeAttachedToApp()Z
+HPLcom/android/server/wm/DisplayContent;->isInputMethodClientFocus(II)Z
 HSPLcom/android/server/wm/DisplayContent;->isLayoutNeeded()Z
 HSPLcom/android/server/wm/DisplayContent;->isNextTransitionForward()Z
+HSPLcom/android/server/wm/DisplayContent;->isNonDecorDisplayCloseToSquare(III)Z
+HSPLcom/android/server/wm/DisplayContent;->isPrivate()Z
 HSPLcom/android/server/wm/DisplayContent;->isReady()Z
+HSPLcom/android/server/wm/DisplayContent;->isRemoved()Z
+PLcom/android/server/wm/DisplayContent;->isRemoving()Z
+HSPLcom/android/server/wm/DisplayContent;->isSingleTaskInstance()Z
+HSPLcom/android/server/wm/DisplayContent;->isSleeping()Z
 HSPLcom/android/server/wm/DisplayContent;->isStackVisible(I)Z
+HSPLcom/android/server/wm/DisplayContent;->isTopNotPinnedStack(Lcom/android/server/wm/ActivityStack;)Z
+HSPLcom/android/server/wm/DisplayContent;->isTopStack(Lcom/android/server/wm/ActivityStack;)Z
+PLcom/android/server/wm/DisplayContent;->isUidPresent(I)Z
+HSPLcom/android/server/wm/DisplayContent;->isUntrustedVirtualDisplay()Z
 PLcom/android/server/wm/DisplayContent;->isVisible()Z
-HSPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$10$DisplayContent(IIZLcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$11$DisplayContent(ZLcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$checkWaitingForWindows$20$DisplayContent(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$dumpWindowAnimators$18(Ljava/io/PrintWriter;Ljava/lang/String;[ILcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$getNeedsMenu$17$DisplayContent(Lcom/android/server/wm/WindowState;Lcom/android/server/policy/WindowManagerPolicy$WindowState;Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayContent;->lambda$getTouchableWinAtPointLocked$13$DisplayContent(IILcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$0$DisplayContent(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$1(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$new$2$DisplayContent(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/DisplayContent;->isWindowingModeSupported(IZZZZI)Z
+PLcom/android/server/wm/DisplayContent;->lambda$JKV50ExZuoi3fuNRue0nZXh8ijA(Lcom/android/server/wm/ActivityRecord;I)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$addToGlobalAndConsumeLimit$24([I[ILandroid/graphics/Region;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$addToGlobalAndConsumeLimit$25([I[ILandroid/graphics/Region;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$adjustForImeIfNeeded$12(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$10$DisplayContent(ZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$8(Landroid/view/SurfaceControl$Transaction;IIZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$9$DisplayContent(ZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$applyRotationLocked$9(Landroid/view/SurfaceControl$Transaction;IIZLcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/DisplayContent;->lambda$cDcvMzGxc6XW13Q8FrU5X4DagqE(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;I)V
+HPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$23$DisplayContent(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$calculateSystemGestureExclusion$24$DisplayContent(Landroid/graphics/Region;Landroid/graphics/Region;Landroid/graphics/Region;[ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$canAddToastWindowForUid$13(ILcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$canAddToastWindowForUid$14(ILcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$canAddToastWindowForUid$15(ILcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$dumpWindowAnimators$16(Ljava/io/PrintWriter;Ljava/lang/String;[ILcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$dumpWindowAnimators$17(Ljava/io/PrintWriter;Ljava/lang/String;[ILcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/DisplayContent;->lambda$fiC19lMy-d_-rvza7hhOSw6bOM8(Lcom/android/server/wm/DisplayContent;Landroid/view/DisplayCutout;I)Lcom/android/server/wm/utils/WmDisplayCutout;
+HPLcom/android/server/wm/DisplayContent;->lambda$getTouchableWinAtPointLocked$13$DisplayContent(IILcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$hasSecureWindowOnScreen$19(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$hasSecureWindowOnScreen$20(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$new$0$DisplayContent(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/DisplayContent;->lambda$new$1$DisplayContent(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$2$DisplayContent(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$2$DisplayContent(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$new$3$DisplayContent(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/DisplayContent;->lambda$new$3$DisplayContent(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayContent;->lambda$new$4$DisplayContent(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/DisplayContent;->lambda$new$5$DisplayContent(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$new$6$DisplayContent(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$new$5$DisplayContent(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$new$6$DisplayContent(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$new$6$DisplayContent(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayContent;->lambda$new$7$DisplayContent(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/DisplayContent;->lambda$new$8$DisplayContent(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$onSeamlessRotationTimeout$25$DisplayContent(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DisplayContent;->lambda$onWindowFreezeTimeout$23$DisplayContent(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$updateSystemUiVisibility$22(IILcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->lambda$waitForAllWindowsDrawn$24$DisplayContent(Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$notifyLocationInParentDisplayChanged$23(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$onWindowFreezeTimeout$21$DisplayContent(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$onWindowFreezeTimeout$22$DisplayContent(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->lambda$pointWithinAppWindow$10([IIILcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$pointWithinAppWindow$11([IIILcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/DisplayContent;->lambda$shouldWaitForSystemDecorWindowsOnBoot$18$DisplayContent(Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayContent;->lambda$shouldWaitForSystemDecorWindowsOnBoot$19$DisplayContent(Landroid/util/SparseBooleanArray;Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayContent;->lambda$startKeyguardExitOnNonAppWindows$17(Lcom/android/server/policy/WindowManagerPolicy;ZZZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$startKeyguardExitOnNonAppWindows$18(Lcom/android/server/policy/WindowManagerPolicy;ZZZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->lambda$updateSystemUiVisibility$20(IILcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/DisplayContent;->lambda$updateSystemUiVisibility$21(IILcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/DisplayContent;->layoutAndAssignWindowLayersIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->logsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayContent;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
-HSPLcom/android/server/wm/DisplayContent;->makeOverlay()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/DisplayContent;->makeOverlay()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/DisplayContent;->moveHomeActivityToTop(Ljava/lang/String;)V
+HPLcom/android/server/wm/DisplayContent;->moveHomeStackToFront(Ljava/lang/String;)V
+HPLcom/android/server/wm/DisplayContent;->moveStackBehindBottomMostVisibleStack(Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/DisplayContent;->moveStackBehindStack(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityStack;)V
+HPLcom/android/server/wm/DisplayContent;->needsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;I)Z
+PLcom/android/server/wm/DisplayContent;->notifyLocationInParentDisplayChanged()V
 HSPLcom/android/server/wm/DisplayContent;->okToAnimate()Z
+HSPLcom/android/server/wm/DisplayContent;->okToAnimate(Z)Z
 HSPLcom/android/server/wm/DisplayContent;->okToDisplay()Z
+HSPLcom/android/server/wm/DisplayContent;->okToDisplay(Z)Z
 HSPLcom/android/server/wm/DisplayContent;->onAppTransitionDone()V
 HSPLcom/android/server/wm/DisplayContent;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/DisplayContent;->onDescendantOrientationChanged(Landroid/os/IBinder;Lcom/android/server/wm/ConfigurationContainer;)Z
-HSPLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V
-HSPLcom/android/server/wm/DisplayContent;->onParentChanged()V
-PLcom/android/server/wm/DisplayContent;->onSeamlessRotationTimeout()V
-PLcom/android/server/wm/DisplayContent;->onStackWindowingModeChanged(Lcom/android/server/wm/TaskStack;)V
+HPLcom/android/server/wm/DisplayContent;->onDescendantOverrideConfigurationChanged()V
+HSPLcom/android/server/wm/DisplayContent;->onDisplayChanged()V
+HSPLcom/android/server/wm/DisplayContent;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/DisplayContent;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/DisplayContent;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/DisplayContent;->onSplitScreenModeActivated()V
+PLcom/android/server/wm/DisplayContent;->onSplitScreenModeDismissed()V
+HSPLcom/android/server/wm/DisplayContent;->onStackOrderChanged(Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/DisplayContent;->onStackRemoved(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent;->onStackWindowingModeChanged(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/DisplayContent;->onWindowFocusChanged(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/DisplayContent;->onWindowFreezeTimeout()V
-PLcom/android/server/wm/DisplayContent;->pauseRotationLocked()V
+HSPLcom/android/server/wm/DisplayContent;->pauseBackStacks(ZLcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/DisplayContent;->performDisplayOverrideConfigUpdate(Landroid/content/res/Configuration;Z)I
 HSPLcom/android/server/wm/DisplayContent;->performLayout(ZZ)V
+HSPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V
+HPLcom/android/server/wm/DisplayContent;->pointWithinAppWindow(II)Z
 HSPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;Z)V
 HSPLcom/android/server/wm/DisplayContent;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
-HSPLcom/android/server/wm/DisplayContent;->positionStackAt(ILcom/android/server/wm/TaskStack;Z)V
+HSPLcom/android/server/wm/DisplayContent;->positionDisplayAt(IZ)V
+HSPLcom/android/server/wm/DisplayContent;->positionStackAt(ILcom/android/server/wm/ActivityStack;Z)V
+HSPLcom/android/server/wm/DisplayContent;->positionStackAt(Lcom/android/server/wm/ActivityStack;I)V
+HSPLcom/android/server/wm/DisplayContent;->positionStackAt(Lcom/android/server/wm/ActivityStack;IZLjava/lang/String;)V
+PLcom/android/server/wm/DisplayContent;->positionStackAtBottom(Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/DisplayContent;->positionStackAtBottom(Lcom/android/server/wm/ActivityStack;Ljava/lang/String;)V
+PLcom/android/server/wm/DisplayContent;->positionStackAtTop(Lcom/android/server/wm/ActivityStack;Z)V
+HSPLcom/android/server/wm/DisplayContent;->positionStackAtTop(Lcom/android/server/wm/ActivityStack;ZLjava/lang/String;)V
 HSPLcom/android/server/wm/DisplayContent;->preOnConfigurationChanged()V
 HSPLcom/android/server/wm/DisplayContent;->prepareAppTransition(IZ)V
 HSPLcom/android/server/wm/DisplayContent;->prepareAppTransition(IZIZ)V
 HSPLcom/android/server/wm/DisplayContent;->prepareFreezingTaskBounds()V
 HSPLcom/android/server/wm/DisplayContent;->prepareSurfaces()V
+HSPLcom/android/server/wm/DisplayContent;->processTaskForTouchExcludeRegion(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;I)V
 HSPLcom/android/server/wm/DisplayContent;->reParentWindowToken(Lcom/android/server/wm/WindowToken;)V
 HSPLcom/android/server/wm/DisplayContent;->reapplyMagnificationSpec()V
+HSPLcom/android/server/wm/DisplayContent;->reconfigureDisplayLocked()V
 HSPLcom/android/server/wm/DisplayContent;->reduceCompatConfigWidthSize(IIILandroid/util/DisplayMetrics;IILandroid/view/DisplayCutout;)I
 HSPLcom/android/server/wm/DisplayContent;->reduceConfigLayout(IIFIIILandroid/view/DisplayCutout;)I
-HSPLcom/android/server/wm/DisplayContent;->reevaluateStatusBarVisibility()V
+HPLcom/android/server/wm/DisplayContent;->reevaluateStatusBarVisibility()V
 HSPLcom/android/server/wm/DisplayContent;->registerPointerEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
-HSPLcom/android/server/wm/DisplayContent;->removeAppToken(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/DisplayContent;->registerStackOrderChangedListener(Lcom/android/server/wm/DisplayContent$OnStackOrderChangedListener;)V
+PLcom/android/server/wm/DisplayContent;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;)V
+HPLcom/android/server/wm/DisplayContent;->releaseSelfIfNeeded()V
+HPLcom/android/server/wm/DisplayContent;->remove()V
+HPLcom/android/server/wm/DisplayContent;->removeAppToken(Landroid/os/IBinder;)V
 PLcom/android/server/wm/DisplayContent;->removeChild(Lcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;)V
 PLcom/android/server/wm/DisplayContent;->removeChild(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/DisplayContent;->removeExistingTokensIfPossible()V
 PLcom/android/server/wm/DisplayContent;->removeIfPossible()V
-PLcom/android/server/wm/DisplayContent;->removeImmediately()V
-HSPLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+HPLcom/android/server/wm/DisplayContent;->removeImmediately()V
+PLcom/android/server/wm/DisplayContent;->removeStacksInWindowingModes([I)V
+HPLcom/android/server/wm/DisplayContent;->removeWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
+PLcom/android/server/wm/DisplayContent;->reparentDisplayContent(Lcom/android/server/wm/WindowState;Landroid/view/SurfaceControl;)V
 PLcom/android/server/wm/DisplayContent;->reparentToOverlay(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/DisplayContent;->resumeRotationLocked()V
-PLcom/android/server/wm/DisplayContent;->rotationNeedsUpdate()Z
+HPLcom/android/server/wm/DisplayContent;->resolveWindowingMode(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;I)I
+PLcom/android/server/wm/DisplayContent;->rotateBounds(IILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayContent;->rotateBounds(Landroid/graphics/Rect;IILandroid/graphics/Rect;)V
 HSPLcom/android/server/wm/DisplayContent;->scheduleToastWindowsTimeoutIfNeededLocked(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/DisplayContent;->screenshotDisplayLocked(Landroid/graphics/Bitmap$Config;)Landroid/graphics/Bitmap;
 HSPLcom/android/server/wm/DisplayContent;->sendNewConfiguration()V
+PLcom/android/server/wm/DisplayContent;->setDisplayToSingleTaskInstance()V
 HSPLcom/android/server/wm/DisplayContent;->setExitingTokensHasVisible(Z)V
-HSPLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/AppWindowToken;)Z
-PLcom/android/server/wm/DisplayContent;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayContent;->setInsetProvider(ILcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;)V
+HSPLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/DisplayContent;->setForwardedInsets(Landroid/graphics/Insets;)V
+HSPLcom/android/server/wm/DisplayContent;->setInputMethodTarget(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/DisplayContent;->setInputMethodWindowLocked(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayContent;->setInsetProvider(ILcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;)V
+PLcom/android/server/wm/DisplayContent;->setInsetProvider(ILcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;Lcom/android/internal/util/function/TriConsumer;)V
+PLcom/android/server/wm/DisplayContent;->setIsSleeping(Z)V
 HSPLcom/android/server/wm/DisplayContent;->setLayoutNeeded()V
-HSPLcom/android/server/wm/DisplayContent;->setStackOnDisplay(IZLcom/android/server/wm/TaskStack;)V
+PLcom/android/server/wm/DisplayContent;->setRotationAnimation(Lcom/android/server/wm/ScreenRotationAnimation;)V
+HSPLcom/android/server/wm/DisplayContent;->setStackOnDisplay(Lcom/android/server/wm/ActivityStack;I)V
 HSPLcom/android/server/wm/DisplayContent;->setWindowingMode(I)V
-PLcom/android/server/wm/DisplayContent;->startKeyguardExitOnNonAppWindows(ZZ)V
+PLcom/android/server/wm/DisplayContent;->shouldDestroyContentOnRemove()Z
+HSPLcom/android/server/wm/DisplayContent;->shouldSleep()Z
+PLcom/android/server/wm/DisplayContent;->shouldWaitForSystemDecorWindowsOnBoot()Z
+HPLcom/android/server/wm/DisplayContent;->startKeyguardExitOnNonAppWindows(ZZZ)V
 HSPLcom/android/server/wm/DisplayContent;->statusBarVisibilityChanged(I)V
-HSPLcom/android/server/wm/DisplayContent;->supportsSystemDecorations()Z
-PLcom/android/server/wm/DisplayContent;->taskForTapOutside(II)I
-HSPLcom/android/server/wm/DisplayContent;->updateBackgroundForAnimator()V
+HPLcom/android/server/wm/DisplayContent;->supportsSystemDecorations()Z
+HSPLcom/android/server/wm/DisplayContent;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/DisplayContent;->topRunningActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/DisplayContent;->unregisterStackOrderChangedListener(Lcom/android/server/wm/DisplayContent$OnStackOrderChangedListener;)V
+PLcom/android/server/wm/DisplayContent;->unregisterSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;)V
 HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetrics(III)V
 HSPLcom/android/server/wm/DisplayContent;->updateBaseDisplayMetricsIfNeeded()V
 HSPLcom/android/server/wm/DisplayContent;->updateBounds()V
-HSPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(I)Landroid/view/DisplayInfo;
+HSPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(ILandroid/content/res/Configuration;)Landroid/view/DisplayInfo;
 HSPLcom/android/server/wm/DisplayContent;->updateDisplayInfo()V
-HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZ)Z
-HSPLcom/android/server/wm/DisplayContent;->updateOrientationFromAppTokens()Z
-HSPLcom/android/server/wm/DisplayContent;->updateOrientationFromAppTokens(Landroid/content/res/Configuration;Landroid/os/IBinder;Z)Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/DisplayContent;->updateRotationAndSendNewConfigIfNeeded()Z
+HSPLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked()Z
+HSPLcom/android/server/wm/DisplayContent;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;)Z
+HSPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z
+PLcom/android/server/wm/DisplayContent;->updateImeControlTarget(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayContent;->updateImeParent()V
+PLcom/android/server/wm/DisplayContent;->updateLocation(Lcom/android/server/wm/WindowState;II)V
+HSPLcom/android/server/wm/DisplayContent;->updateOrientation()Z
+HSPLcom/android/server/wm/DisplayContent;->updateOrientation(Landroid/content/res/Configuration;Landroid/os/IBinder;Z)Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/DisplayContent;->updateRotationUnchecked()Z
-HSPLcom/android/server/wm/DisplayContent;->updateRotationUnchecked(Z)Z
+HSPLcom/android/server/wm/DisplayContent;->updateStatusBarVisibilityLocked(I)Z
 HSPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusion()Z
+HSPLcom/android/server/wm/DisplayContent;->updateSystemGestureExclusionLimit()V
 HSPLcom/android/server/wm/DisplayContent;->updateSystemUiVisibility(II)V
 HSPLcom/android/server/wm/DisplayContent;->updateTouchExcludeRegion()V
 HSPLcom/android/server/wm/DisplayContent;->updateWindowsForAnimator()V
-HSPLcom/android/server/wm/DisplayContent;->waitForAllWindowsDrawn()V
-PLcom/android/server/wm/DisplayContent;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/DisplayContent;->validateWindowingMode(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;I)I
 HSPLcom/android/server/wm/DisplayFrames;-><init>(ILandroid/view/DisplayInfo;Lcom/android/server/wm/utils/WmDisplayCutout;)V
-PLcom/android/server/wm/DisplayFrames;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/DisplayFrames;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/DisplayFrames;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/DisplayFrames;->dumpFrame(Landroid/graphics/Rect;Ljava/lang/String;Ljava/lang/String;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/wm/DisplayFrames;->getInputMethodWindowVisibleHeight()I
 HSPLcom/android/server/wm/DisplayFrames;->onBeginLayout()V
 HSPLcom/android/server/wm/DisplayFrames;->onDisplayInfoUpdated(Landroid/view/DisplayInfo;Lcom/android/server/wm/utils/WmDisplayCutout;)V
-PLcom/android/server/wm/DisplayFrames;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/wm/DisplayPolicy$1;->onBarVisibilityChanged(Z)V
+HSPLcom/android/server/wm/DisplayPolicy$1;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$1;->onBarVisibilityChanged(Z)V
+HSPLcom/android/server/wm/DisplayPolicy$2;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$2;->getOrientationListener()Lcom/android/server/policy/WindowOrientationListener;
 PLcom/android/server/wm/DisplayPolicy$2;->onDebug()V
-HSPLcom/android/server/wm/DisplayPolicy$2;->onDown()V
+PLcom/android/server/wm/DisplayPolicy$2;->onDown()V
 PLcom/android/server/wm/DisplayPolicy$2;->onFling(I)V
-HSPLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromBottom()V
-PLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromLeft()V
-PLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromRight()V
+PLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromBottom()V
+HPLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromLeft()V
+HPLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromRight()V
 PLcom/android/server/wm/DisplayPolicy$2;->onSwipeFromTop()V
 PLcom/android/server/wm/DisplayPolicy$2;->onUpOrCancel()V
-HSPLcom/android/server/wm/DisplayPolicy$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/DisplayPolicy$3;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$3;->run()V
+HSPLcom/android/server/wm/DisplayPolicy$4;-><init>(Lcom/android/server/wm/DisplayPolicy;)V
+PLcom/android/server/wm/DisplayPolicy$4;->run()V
+PLcom/android/server/wm/DisplayPolicy$HideNavInputEventReceiver;-><init>(Lcom/android/server/wm/DisplayPolicy;Landroid/view/InputChannel;Landroid/os/Looper;)V
+PLcom/android/server/wm/DisplayPolicy$HideNavInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
+HSPLcom/android/server/wm/DisplayPolicy$PolicyHandler;-><init>(Lcom/android/server/wm/DisplayPolicy;Landroid/os/Looper;)V
+PLcom/android/server/wm/DisplayPolicy$PolicyHandler;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/DisplayPolicy;-><clinit>()V
 HSPLcom/android/server/wm/DisplayPolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/DisplayPolicy;->access$000(Lcom/android/server/wm/DisplayPolicy;)Landroid/view/accessibility/AccessibilityManager;
+PLcom/android/server/wm/DisplayPolicy;->access$100(Lcom/android/server/wm/DisplayPolicy;Z)V
+PLcom/android/server/wm/DisplayPolicy;->access$1000(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/DisplayPolicy;->access$1100(Lcom/android/server/wm/DisplayPolicy;)Z
+PLcom/android/server/wm/DisplayPolicy;->access$1200(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/SystemGesturesPointerEventListener;
+HPLcom/android/server/wm/DisplayPolicy;->access$1300(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/DisplayPolicy;->access$1400(Lcom/android/server/wm/DisplayPolicy;)Landroid/os/Handler;
+PLcom/android/server/wm/DisplayPolicy;->access$1500(Lcom/android/server/wm/DisplayPolicy;)I
+PLcom/android/server/wm/DisplayPolicy;->access$1502(Lcom/android/server/wm/DisplayPolicy;I)I
+PLcom/android/server/wm/DisplayPolicy;->access$1572(Lcom/android/server/wm/DisplayPolicy;I)I
+PLcom/android/server/wm/DisplayPolicy;->access$1600(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;
+PLcom/android/server/wm/DisplayPolicy;->access$1700(Lcom/android/server/wm/DisplayPolicy;)I
+PLcom/android/server/wm/DisplayPolicy;->access$1702(Lcom/android/server/wm/DisplayPolicy;I)I
+PLcom/android/server/wm/DisplayPolicy;->access$1800(Lcom/android/server/wm/DisplayPolicy;)Ljava/lang/Runnable;
+PLcom/android/server/wm/DisplayPolicy;->access$1902(Lcom/android/server/wm/DisplayPolicy;J)J
+PLcom/android/server/wm/DisplayPolicy;->access$200(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->access$2000(I)Z
+PLcom/android/server/wm/DisplayPolicy;->access$2100(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/BarController;
+PLcom/android/server/wm/DisplayPolicy;->access$300(Lcom/android/server/wm/DisplayPolicy;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/DisplayPolicy;->access$400(Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->access$500(Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;)V
+PLcom/android/server/wm/DisplayPolicy;->access$800(Lcom/android/server/wm/DisplayPolicy;)I
+PLcom/android/server/wm/DisplayPolicy;->access$900(Lcom/android/server/wm/DisplayPolicy;)Ljava/lang/Object;
+HSPLcom/android/server/wm/DisplayPolicy;->addWindowLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)V
 HSPLcom/android/server/wm/DisplayPolicy;->adjustSystemUiVisibilityLw(I)I
-HSPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Z)V
+HSPLcom/android/server/wm/DisplayPolicy;->adjustWindowParamsLw(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;II)V
 HSPLcom/android/server/wm/DisplayPolicy;->allowAppAnimationsLw()Z
 HSPLcom/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
 HSPLcom/android/server/wm/DisplayPolicy;->applyStableConstraints(IILandroid/graphics/Rect;Lcom/android/server/wm/DisplayFrames;)V
 HSPLcom/android/server/wm/DisplayPolicy;->areSystemBarsForcedShownLw(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayPolicy;->beginLayoutLw(Lcom/android/server/wm/DisplayFrames;I)V
 HSPLcom/android/server/wm/DisplayPolicy;->beginPostLayoutPolicyLw()V
-HSPLcom/android/server/wm/DisplayPolicy;->canReceiveInput(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/DisplayPolicy;->canHideNavigationBar()Z
+HPLcom/android/server/wm/DisplayPolicy;->canReceiveInput(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->canToastShowWhenLocked(I)Z
 HSPLcom/android/server/wm/DisplayPolicy;->chooseNavigationColorWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;I)Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/DisplayPolicy;->clearClearableFlagsLw()V
-HSPLcom/android/server/wm/DisplayPolicy;->configure(III)V
-HSPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZZ)I
+HPLcom/android/server/wm/DisplayPolicy;->clearClearableFlagsLw()V
+HSPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZZZZ)I
+HSPLcom/android/server/wm/DisplayPolicy;->convertNonDecorInsetsToStableInsets(Landroid/graphics/Rect;I)V
+PLcom/android/server/wm/DisplayPolicy;->disposeInputConsumer(Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;)V
+HSPLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/BarController;I)Z
+HSPLcom/android/server/wm/DisplayPolicy;->drawsNavigationBarBackground(ILcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayPolicy;->drawsStatusBarBackground(ILcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/DisplayPolicy;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
-HSPLcom/android/server/wm/DisplayPolicy;->finishKeyguardDrawn()Z
+HSPLcom/android/server/wm/DisplayPolicy;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/DisplayPolicy;->enablePointerLocation()V
+PLcom/android/server/wm/DisplayPolicy;->finishKeyguardDrawn()Z
 HSPLcom/android/server/wm/DisplayPolicy;->finishPostLayoutPolicyLw()I
-HSPLcom/android/server/wm/DisplayPolicy;->finishScreenTurningOn()Z
-HSPLcom/android/server/wm/DisplayPolicy;->finishWindowsDrawn()Z
+PLcom/android/server/wm/DisplayPolicy;->finishScreenTurningOn()Z
+HPLcom/android/server/wm/DisplayPolicy;->finishWindowsDrawn()Z
 HSPLcom/android/server/wm/DisplayPolicy;->focusChangedLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
 HSPLcom/android/server/wm/DisplayPolicy;->getConfigDisplayHeight(IIIILandroid/view/DisplayCutout;)I
 HSPLcom/android/server/wm/DisplayPolicy;->getConfigDisplayWidth(IIIILandroid/view/DisplayCutout;)I
-HSPLcom/android/server/wm/DisplayPolicy;->getDockMode()I
+HSPLcom/android/server/wm/DisplayPolicy;->getCurrentUserResources()Landroid/content/res/Resources;
+HSPLcom/android/server/wm/DisplayPolicy;->getDisplayId()I
+HPLcom/android/server/wm/DisplayPolicy;->getDockMode()I
+PLcom/android/server/wm/DisplayPolicy;->getForwardedInsets()Landroid/graphics/Insets;
 HSPLcom/android/server/wm/DisplayPolicy;->getImpliedSysUiFlagsForLayout(Landroid/view/WindowManager$LayoutParams;)I
-HSPLcom/android/server/wm/DisplayPolicy;->getLayoutHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;Lcom/android/server/wm/DisplayFrames;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;)Z
+HSPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
+HSPLcom/android/server/wm/DisplayPolicy;->getLayoutHintLw(Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;Lcom/android/server/wm/DisplayFrames;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;)Z
 HSPLcom/android/server/wm/DisplayPolicy;->getLidState()I
-HSPLcom/android/server/wm/DisplayPolicy;->getNavBarPosition()I
+PLcom/android/server/wm/DisplayPolicy;->getNavBarPosition()I
+HSPLcom/android/server/wm/DisplayPolicy;->getNavigationBarFrameHeight(II)I
+HSPLcom/android/server/wm/DisplayPolicy;->getNavigationBarHeight(II)I
+HSPLcom/android/server/wm/DisplayPolicy;->getNavigationBarWidth(II)I
 HSPLcom/android/server/wm/DisplayPolicy;->getNonDecorDisplayHeight(IIIILandroid/view/DisplayCutout;)I
 HSPLcom/android/server/wm/DisplayPolicy;->getNonDecorDisplayWidth(IIIILandroid/view/DisplayCutout;)I
 HSPLcom/android/server/wm/DisplayPolicy;->getNonDecorInsetsLw(IIILandroid/view/DisplayCutout;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/DisplayPolicy;->getScreenOnListener()Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;
+HSPLcom/android/server/wm/DisplayPolicy;->getNotificationShade()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
+PLcom/android/server/wm/DisplayPolicy;->getScreenOnListener()Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;
 HSPLcom/android/server/wm/DisplayPolicy;->getStableInsetsLw(IIILandroid/view/DisplayCutout;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/DisplayPolicy;->getStatusBar()Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/DisplayPolicy;->getStatusBarHeight(Lcom/android/server/wm/DisplayFrames;)I
 HSPLcom/android/server/wm/DisplayPolicy;->getStatusBarManagerInternal()Lcom/android/server/statusbar/StatusBarManagerInternal;
 HSPLcom/android/server/wm/DisplayPolicy;->getSystemUiContext()Landroid/content/Context;
+HSPLcom/android/server/wm/DisplayPolicy;->getTopFullscreenOpaqueWindow()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/DisplayPolicy;->getTransientState(II)Landroid/util/Pair;
+HSPLcom/android/server/wm/DisplayPolicy;->getWindowCornerRadius()F
 HSPLcom/android/server/wm/DisplayPolicy;->hasNavigationBar()Z
 HSPLcom/android/server/wm/DisplayPolicy;->hasStatusBar()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isAwake()Z
-HSPLcom/android/server/wm/DisplayPolicy;->isCarDockEnablesAccelerometer()Z
-HSPLcom/android/server/wm/DisplayPolicy;->isDeskDockEnablesAccelerometer()Z
-HSPLcom/android/server/wm/DisplayPolicy;->isHdmiPlugged()Z
+HPLcom/android/server/wm/DisplayPolicy;->isCarDockEnablesAccelerometer()Z
+HPLcom/android/server/wm/DisplayPolicy;->isDeskDockEnablesAccelerometer()Z
+HPLcom/android/server/wm/DisplayPolicy;->isHdmiPlugged()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isImmersiveMode(I)Z
 HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardDrawComplete()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardOccluded()Z
-HSPLcom/android/server/wm/DisplayPolicy;->isPersistentVrModeEnabled()Z
+HSPLcom/android/server/wm/DisplayPolicy;->isKeyguardShowing()Z
+PLcom/android/server/wm/DisplayPolicy;->isNavBarEmpty(I)Z
+HPLcom/android/server/wm/DisplayPolicy;->isPersistentVrModeEnabled()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isScreenOnEarly()Z
-PLcom/android/server/wm/DisplayPolicy;->isScreenOnFully()Z
+HSPLcom/android/server/wm/DisplayPolicy;->isScreenOnFully()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isShowingDreamLw()Z
 HSPLcom/android/server/wm/DisplayPolicy;->isStatusBarKeyguard()Z
+PLcom/android/server/wm/DisplayPolicy;->isTopLayoutFullscreen()Z
+HSPLcom/android/server/wm/DisplayPolicy;->isWindowExcludedFromContent(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/DisplayPolicy;->isWindowManagerDrawComplete()Z
-PLcom/android/server/wm/DisplayPolicy;->lambda$beginLayoutLw$3$DisplayPolicy(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
-PLcom/android/server/wm/DisplayPolicy;->lambda$notifyDisplayReady$4$DisplayPolicy()V
-HSPLcom/android/server/wm/DisplayPolicy;->lambda$prepareAddWindowLw$2$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$5$DisplayPolicy(IIILandroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$3$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$4$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$5$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$5(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$6$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$7$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$8$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$9$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/DisplayPolicy;->lambda$beginLayoutLw$10$DisplayPolicy(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+PLcom/android/server/wm/DisplayPolicy;->lambda$beginLayoutLw$12$DisplayPolicy(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+PLcom/android/server/wm/DisplayPolicy;->lambda$beginLayoutLw$8$DisplayPolicy(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+PLcom/android/server/wm/DisplayPolicy;->lambda$beginLayoutLw$9$DisplayPolicy(Landroid/view/InputChannel;Landroid/os/Looper;)Landroid/view/InputEventReceiver;
+HPLcom/android/server/wm/DisplayPolicy;->lambda$canToastShowWhenLocked$2(ILcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/DisplayPolicy;->lambda$notifyDisplayReady$10$DisplayPolicy()V
+PLcom/android/server/wm/DisplayPolicy;->lambda$notifyDisplayReady$11$DisplayPolicy()V
+PLcom/android/server/wm/DisplayPolicy;->lambda$notifyDisplayReady$13$DisplayPolicy()V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$notifyDisplayReady$9$DisplayPolicy()V
+HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$10$DisplayPolicy(ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HSPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$11$DisplayPolicy(ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$12$DisplayPolicy(ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
+HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$14$DisplayPolicy(ILjava/lang/String;Landroid/util/Pair;I[Lcom/android/internal/view/AppearanceRegion;ZZZ)V
 HSPLcom/android/server/wm/DisplayPolicy;->layoutNavigationBar(Lcom/android/server/wm/DisplayFrames;IZZZZ)Z
+HSPLcom/android/server/wm/DisplayPolicy;->layoutNavigationBar(Lcom/android/server/wm/DisplayFrames;IZZZZZ)Z
 HSPLcom/android/server/wm/DisplayPolicy;->layoutScreenDecorWindows(Lcom/android/server/wm/DisplayFrames;)V
+HSPLcom/android/server/wm/DisplayPolicy;->layoutScreenDecorWindows(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowFrames;)V
 HSPLcom/android/server/wm/DisplayPolicy;->layoutStatusBar(Lcom/android/server/wm/DisplayFrames;IZ)Z
-HSPLcom/android/server/wm/DisplayPolicy;->layoutWallpaper(Lcom/android/server/wm/DisplayFrames;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/DisplayPolicy;->layoutWallpaper(Lcom/android/server/wm/DisplayFrames;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/DisplayPolicy;->layoutWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
 HSPLcom/android/server/wm/DisplayPolicy;->navigationBarCanMove()Z
 HSPLcom/android/server/wm/DisplayPolicy;->navigationBarPosition(III)I
 PLcom/android/server/wm/DisplayPolicy;->notifyDisplayReady()V
-PLcom/android/server/wm/DisplayPolicy;->offsetInputMethodWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
+HPLcom/android/server/wm/DisplayPolicy;->offsetInputMethodWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
+HPLcom/android/server/wm/DisplayPolicy;->offsetVoiceInputWindowLw(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/DisplayFrames;)V
 HSPLcom/android/server/wm/DisplayPolicy;->onConfigurationChanged()V
-PLcom/android/server/wm/DisplayPolicy;->onPowerKeyDown(Z)V
-HSPLcom/android/server/wm/DisplayPolicy;->validateAddingWindowLw(Landroid/view/WindowManager$LayoutParams;)I
-HSPLcom/android/server/wm/DisplayPolicy;->removeWindowLw(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/DisplayPolicy;->requestTransientBars(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayPolicy;->onLockTaskStateChangedLw(I)V
+PLcom/android/server/wm/DisplayPolicy;->onOverlayChangedLw()V
+HPLcom/android/server/wm/DisplayPolicy;->onPowerKeyDown(Z)V
+HSPLcom/android/server/wm/DisplayPolicy;->postAdjustDisplayFrames(Lcom/android/server/wm/DisplayFrames;)V
+HPLcom/android/server/wm/DisplayPolicy;->removeWindowLw(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/DisplayPolicy;->requestTransientBars(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/DisplayPolicy;->resetSystemUiVisibilityLw()V
 PLcom/android/server/wm/DisplayPolicy;->screenTurnedOff()V
 HSPLcom/android/server/wm/DisplayPolicy;->screenTurnedOn(Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;)V
-HSPLcom/android/server/wm/DisplayPolicy;->selectAnimationLw(Lcom/android/server/wm/WindowState;I)I
-HSPLcom/android/server/wm/DisplayPolicy;->selectRotationAnimationLw([I)V
-PLcom/android/server/wm/DisplayPolicy;->setAttachedWindowFrames(Lcom/android/server/wm/WindowState;IILcom/android/server/wm/WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/DisplayFrames;)V
+HPLcom/android/server/wm/DisplayPolicy;->selectAnimation(Lcom/android/server/wm/WindowState;I)I
+PLcom/android/server/wm/DisplayPolicy;->selectDockedDividerAnimation(Lcom/android/server/wm/WindowState;I)I
+HPLcom/android/server/wm/DisplayPolicy;->setAttachedWindowFrames(Lcom/android/server/wm/WindowState;IILcom/android/server/wm/WindowState;ZLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Lcom/android/server/wm/DisplayFrames;)V
 HSPLcom/android/server/wm/DisplayPolicy;->setAwake(Z)V
+PLcom/android/server/wm/DisplayPolicy;->setForwardedInsets(Landroid/graphics/Insets;)V
 HSPLcom/android/server/wm/DisplayPolicy;->setHdmiPlugged(ZZ)V
 HSPLcom/android/server/wm/DisplayPolicy;->setLidState(I)V
-HSPLcom/android/server/wm/DisplayPolicy;->shouldRotateSeamlessly(Lcom/android/server/wm/DisplayRotation;II)Z
-HSPLcom/android/server/wm/DisplayPolicy;->shouldUseOutsets(Landroid/view/WindowManager$LayoutParams;I)Z
+PLcom/android/server/wm/DisplayPolicy;->setNavBarOpaqueFlag(I)I
+HSPLcom/android/server/wm/DisplayPolicy;->setNavBarTransparentFlag(I)I
+PLcom/android/server/wm/DisplayPolicy;->setPointerLocationEnabled(Z)V
+PLcom/android/server/wm/DisplayPolicy;->supportsPointerLocation()Z
 HSPLcom/android/server/wm/DisplayPolicy;->systemReady()V
 PLcom/android/server/wm/DisplayPolicy;->takeScreenshot(I)V
-HSPLcom/android/server/wm/DisplayPolicy;->updateConfigurationDependentBehaviors()V
+HPLcom/android/server/wm/DisplayPolicy;->topAppHidesStatusBar()Z
+HSPLcom/android/server/wm/DisplayPolicy;->updateConfigurationAndScreenSizeDependentBehaviors()V
+HSPLcom/android/server/wm/DisplayPolicy;->updateCurrentUserResources()V
+PLcom/android/server/wm/DisplayPolicy;->updateDreamingSleepToken(Z)V
 HSPLcom/android/server/wm/DisplayPolicy;->updateLightNavigationBarLw(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-HSPLcom/android/server/wm/DisplayPolicy;->updateLightStatusBarLw(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;II)I
+HSPLcom/android/server/wm/DisplayPolicy;->updateLightStatusBarAppearanceLw(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
+HSPLcom/android/server/wm/DisplayPolicy;->updateSystemBarsLw(Lcom/android/server/wm/WindowState;II)Landroid/util/Pair;
 HSPLcom/android/server/wm/DisplayPolicy;->updateSystemUiVisibilityLw()I
+HSPLcom/android/server/wm/DisplayPolicy;->updateTransientState(IIIILandroid/util/IntArray;Landroid/util/IntArray;)V
 HSPLcom/android/server/wm/DisplayPolicy;->updateWindowSleepToken()V
-HSPLcom/android/server/wm/DisplayPolicy;->validateRotationAnimationLw(IIZ)Z
-HSPLcom/android/server/wm/DisplayRotation$OrientationListener$UpdateRunnable;->run()V
-HSPLcom/android/server/wm/DisplayRotation$OrientationListener;->disable()V
-HSPLcom/android/server/wm/DisplayRotation$OrientationListener;->enable(Z)V
-HSPLcom/android/server/wm/DisplayRotation$OrientationListener;->onProposedRotationChanged(I)V
+HSPLcom/android/server/wm/DisplayPolicy;->validateAddingWindowLw(Landroid/view/WindowManager$LayoutParams;)I
+HSPLcom/android/server/wm/DisplayRotation$1;-><init>(Lcom/android/server/wm/DisplayRotation;)V
+PLcom/android/server/wm/DisplayRotation$1;->run()V
+HSPLcom/android/server/wm/DisplayRotation$2;-><init>(Lcom/android/server/wm/DisplayRotation;)V
+HPLcom/android/server/wm/DisplayRotation$2;->continueRotateDisplay(ILandroid/view/WindowContainerTransaction;)V
+PLcom/android/server/wm/DisplayRotation$2;->lambda$continueRotateDisplay$0(Ljava/lang/Object;ILandroid/view/WindowContainerTransaction;)V
+PLcom/android/server/wm/DisplayRotation$OrientationListener$UpdateRunnable;-><init>(Lcom/android/server/wm/DisplayRotation$OrientationListener;I)V
+HPLcom/android/server/wm/DisplayRotation$OrientationListener$UpdateRunnable;->run()V
+HSPLcom/android/server/wm/DisplayRotation$OrientationListener;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/content/Context;Landroid/os/Handler;)V
+PLcom/android/server/wm/DisplayRotation$OrientationListener;->disable()V
+PLcom/android/server/wm/DisplayRotation$OrientationListener;->enable(Z)V
+HPLcom/android/server/wm/DisplayRotation$OrientationListener;->onProposedRotationChanged(I)V
+HSPLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>()V
+HSPLcom/android/server/wm/DisplayRotation$RotationAnimationPair;-><init>(Lcom/android/server/wm/DisplayRotation$1;)V
+HSPLcom/android/server/wm/DisplayRotation$SettingsObserver;-><init>(Lcom/android/server/wm/DisplayRotation;Landroid/os/Handler;)V
 HSPLcom/android/server/wm/DisplayRotation$SettingsObserver;->observe()V
 HSPLcom/android/server/wm/DisplayRotation$SettingsObserver;->onChange(Z)V
+HSPLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/DisplayRotation;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/DisplayPolicy;Lcom/android/server/wm/DisplayWindowSettings;Landroid/content/Context;Ljava/lang/Object;)V
+PLcom/android/server/wm/DisplayRotation;->access$100(Lcom/android/server/wm/DisplayRotation;)I
+PLcom/android/server/wm/DisplayRotation;->access$200(Lcom/android/server/wm/DisplayRotation;ILandroid/view/WindowContainerTransaction;)V
+PLcom/android/server/wm/DisplayRotation;->access$300(Lcom/android/server/wm/DisplayRotation;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/DisplayRotation;->access$400(Lcom/android/server/wm/DisplayRotation;)I
+PLcom/android/server/wm/DisplayRotation;->access$500(Lcom/android/server/wm/DisplayRotation;I)Z
+PLcom/android/server/wm/DisplayRotation;->access$600(Lcom/android/server/wm/DisplayRotation;I)Z
+PLcom/android/server/wm/DisplayRotation;->access$700(Lcom/android/server/wm/DisplayRotation;IZ)V
+HSPLcom/android/server/wm/DisplayRotation;->access$800(Lcom/android/server/wm/DisplayRotation;)Landroid/content/Context;
+HSPLcom/android/server/wm/DisplayRotation;->access$900(Lcom/android/server/wm/DisplayRotation;)Z
+HSPLcom/android/server/wm/DisplayRotation;->allowAllRotationsToString(I)Ljava/lang/String;
+PLcom/android/server/wm/DisplayRotation;->applyCurrentRotation(I)V
 HSPLcom/android/server/wm/DisplayRotation;->configure(IIII)V
-PLcom/android/server/wm/DisplayRotation;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
-HSPLcom/android/server/wm/DisplayRotation;->freezeRotation(I)V
+HPLcom/android/server/wm/DisplayRotation;->continueRotation(ILandroid/view/WindowContainerTransaction;)V
+HSPLcom/android/server/wm/DisplayRotation;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/DisplayRotation;->freezeRotation(I)V
 PLcom/android/server/wm/DisplayRotation;->getCurrentAppOrientation()I
 HSPLcom/android/server/wm/DisplayRotation;->getDisplayPolicy()Lcom/android/server/wm/DisplayPolicy;
 HSPLcom/android/server/wm/DisplayRotation;->getLandscapeRotation()I
-HSPLcom/android/server/wm/DisplayRotation;->getOrientationListener()Lcom/android/server/policy/WindowOrientationListener;
+HSPLcom/android/server/wm/DisplayRotation;->getLastOrientation()I
+PLcom/android/server/wm/DisplayRotation;->getOrientationListener()Lcom/android/server/policy/WindowOrientationListener;
 HSPLcom/android/server/wm/DisplayRotation;->getPortraitRotation()I
+HSPLcom/android/server/wm/DisplayRotation;->getRotation()I
 HSPLcom/android/server/wm/DisplayRotation;->getSeascapeRotation()I
 HSPLcom/android/server/wm/DisplayRotation;->getUpsideDownRotation()I
 PLcom/android/server/wm/DisplayRotation;->getUserRotation()I
 PLcom/android/server/wm/DisplayRotation;->getUserRotationMode()I
+PLcom/android/server/wm/DisplayRotation;->isAnyPortrait(I)Z
 HSPLcom/android/server/wm/DisplayRotation;->isFixedToUserRotation()Z
-HSPLcom/android/server/wm/DisplayRotation;->isNonDecorDisplayCloseToSquare(III)Z
-HSPLcom/android/server/wm/DisplayRotation;->isRotationChoicePossible(I)Z
-HSPLcom/android/server/wm/DisplayRotation;->isValidRotationChoice(I)Z
-HSPLcom/android/server/wm/DisplayRotation;->needSensorRunning()Z
+PLcom/android/server/wm/DisplayRotation;->isLandscapeOrSeascape(I)Z
+HSPLcom/android/server/wm/DisplayRotation;->isRotatingSeamlessly()Z
+PLcom/android/server/wm/DisplayRotation;->isRotationChoicePossible(I)Z
+PLcom/android/server/wm/DisplayRotation;->isRotationFrozen()Z
+PLcom/android/server/wm/DisplayRotation;->isValidRotationChoice(I)Z
+HSPLcom/android/server/wm/DisplayRotation;->isWaitingForRemoteRotation()Z
+PLcom/android/server/wm/DisplayRotation;->lambda$onSeamlessRotationTimeout$1$DisplayRotation([ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DisplayRotation;->lambda$shouldRotateSeamlessly$0(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DisplayRotation;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/DisplayRotation;->needSensorRunning()Z
+PLcom/android/server/wm/DisplayRotation;->needsUpdate()Z
+PLcom/android/server/wm/DisplayRotation;->onSeamlessRotationTimeout()V
 HSPLcom/android/server/wm/DisplayRotation;->onUserSwitch()V
+PLcom/android/server/wm/DisplayRotation;->pause()V
+HSPLcom/android/server/wm/DisplayRotation;->prepareNormalRotationAnimation()V
+PLcom/android/server/wm/DisplayRotation;->prepareSeamlessRotation()V
 HSPLcom/android/server/wm/DisplayRotation;->readRotation(I)I
 HSPLcom/android/server/wm/DisplayRotation;->respectAppRequestedOrientation()Z
 HSPLcom/android/server/wm/DisplayRotation;->restoreSettings(III)V
-HSPLcom/android/server/wm/DisplayRotation;->rotationForOrientation(II)I
-HSPLcom/android/server/wm/DisplayRotation;->setCurrentOrientation(I)V
-HSPLcom/android/server/wm/DisplayRotation;->setRotation(I)V
-HSPLcom/android/server/wm/DisplayRotation;->setUserRotation(II)V
+PLcom/android/server/wm/DisplayRotation;->resume()V
+HPLcom/android/server/wm/DisplayRotation;->rotationForOrientation(II)I
+HSPLcom/android/server/wm/DisplayRotation;->selectRotationAnimation()Lcom/android/server/wm/DisplayRotation$RotationAnimationPair;
+PLcom/android/server/wm/DisplayRotation;->sendProposedRotationChangeToStatusBarInternal(IZ)V
+PLcom/android/server/wm/DisplayRotation;->setUserRotation(II)V
+HPLcom/android/server/wm/DisplayRotation;->shouldRotateSeamlessly(IIZ)Z
+HPLcom/android/server/wm/DisplayRotation;->startRemoteRotation(II)V
+PLcom/android/server/wm/DisplayRotation;->thawRotation()V
+HSPLcom/android/server/wm/DisplayRotation;->updateOrientation(IZ)Z
 HSPLcom/android/server/wm/DisplayRotation;->updateOrientationListener()V
 HSPLcom/android/server/wm/DisplayRotation;->updateOrientationListenerLw()V
+PLcom/android/server/wm/DisplayRotation;->updateRotationAndSendNewConfigIfChanged()Z
+HSPLcom/android/server/wm/DisplayRotation;->updateRotationUnchecked(Z)Z
 HSPLcom/android/server/wm/DisplayRotation;->updateSettings()Z
+HSPLcom/android/server/wm/DisplayRotation;->updateUserDependentConfiguration(Landroid/content/res/Resources;)V
+PLcom/android/server/wm/DisplayRotation;->validateRotationAnimation(IIZ)Z
+HSPLcom/android/server/wm/DisplayWindowListenerController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayAdded(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayChanged(Lcom/android/server/wm/DisplayContent;Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/DisplayWindowListenerController;->dispatchDisplayRemoved(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/DisplayWindowListenerController;->registerListener(Landroid/view/IDisplayWindowListener;)V
+HSPLcom/android/server/wm/DisplayWindowSettings$AtomicFileStorage;-><init>()V
+HSPLcom/android/server/wm/DisplayWindowSettings$AtomicFileStorage;->copyVendorSettings(Ljava/io/File;)V
+HSPLcom/android/server/wm/DisplayWindowSettings$AtomicFileStorage;->openRead()Ljava/io/InputStream;
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;-><init>(Ljava/lang/String;)V
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;-><init>(Ljava/lang/String;Lcom/android/server/wm/DisplayWindowSettings$1;)V
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$1000(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$300(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$400(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$500(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$700(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$800(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
+HSPLcom/android/server/wm/DisplayWindowSettings$Entry;->access$900(Lcom/android/server/wm/DisplayWindowSettings$Entry;)I
 HSPLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/io/File;)V
+HSPLcom/android/server/wm/DisplayWindowSettings;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayWindowSettings$SettingPersister;)V
 HSPLcom/android/server/wm/DisplayWindowSettings;->applySettingsToDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/DisplayWindowSettings;->getEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$Entry;
+HSPLcom/android/server/wm/DisplayWindowSettings;->getIdentifier(Landroid/view/DisplayInfo;)Ljava/lang/String;
+HSPLcom/android/server/wm/DisplayWindowSettings;->getOrCreateEntry(Landroid/view/DisplayInfo;)Lcom/android/server/wm/DisplayWindowSettings$Entry;
 HSPLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayContent;)I
 HSPLcom/android/server/wm/DisplayWindowSettings;->getWindowingModeLocked(Lcom/android/server/wm/DisplayWindowSettings$Entry;I)I
 HSPLcom/android/server/wm/DisplayWindowSettings;->readSettings()V
-HSPLcom/android/server/wm/DisplayWindowSettings;->shouldShowSystemDecorsLocked(Lcom/android/server/wm/DisplayContent;)Z
+HPLcom/android/server/wm/DisplayWindowSettings;->shouldShowSystemDecorsLocked(Lcom/android/server/wm/DisplayContent;)Z
 HSPLcom/android/server/wm/DisplayWindowSettings;->updateSettingsForDisplay(Lcom/android/server/wm/DisplayContent;)Z
+HSPLcom/android/server/wm/DockedStackDividerController;-><clinit>()V
 HSPLcom/android/server/wm/DockedStackDividerController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/DockedStackDividerController;->animate(J)Z
+HPLcom/android/server/wm/DockedStackDividerController;->animateForIme(J)Z
+HPLcom/android/server/wm/DockedStackDividerController;->canPrimaryStackDockTo(ILandroid/graphics/Rect;I)Z
 HSPLcom/android/server/wm/DockedStackDividerController;->checkMinimizeChanged(Z)V
-PLcom/android/server/wm/DockedStackDividerController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/DockedStackDividerController;->clearImeAdjustAnimation()Z
+PLcom/android/server/wm/DockedStackDividerController;->containsAppInDockedStack(Landroid/util/ArraySet;)Z
+HSPLcom/android/server/wm/DockedStackDividerController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/DockedStackDividerController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/DockedStackDividerController;->getClipRevealMeetFraction(Lcom/android/server/wm/ActivityStack;)F
+PLcom/android/server/wm/DockedStackDividerController;->getContentInsets()I
 HSPLcom/android/server/wm/DockedStackDividerController;->getContentWidth()I
-PLcom/android/server/wm/DockedStackDividerController;->getHomeStackBoundsInDockedMode(Landroid/content/res/Configuration;ILandroid/graphics/Rect;)V
+PLcom/android/server/wm/DockedStackDividerController;->getContentWidthInactive()I
+HPLcom/android/server/wm/DockedStackDividerController;->getDockSide(Landroid/graphics/Rect;Landroid/graphics/Rect;II)I
+HPLcom/android/server/wm/DockedStackDividerController;->getHomeStackBoundsInDockedMode(Landroid/content/res/Configuration;ILandroid/graphics/Rect;)V
 PLcom/android/server/wm/DockedStackDividerController;->getImeHeightAdjustedFor()I
+PLcom/android/server/wm/DockedStackDividerController;->getInterpolatedAnimationValue(F)F
+PLcom/android/server/wm/DockedStackDividerController;->getInterpolatedDividerValue(F)F
+HPLcom/android/server/wm/DockedStackDividerController;->getSmallestWidthDpForBounds(Landroid/graphics/Rect;)I
 HSPLcom/android/server/wm/DockedStackDividerController;->initSnapAlgorithmForRotations()V
-HSPLcom/android/server/wm/DockedStackDividerController;->isHomeStackResizable()Z
+PLcom/android/server/wm/DockedStackDividerController;->isAnimationMaximizing()Z
+PLcom/android/server/wm/DockedStackDividerController;->isDockSideAllowed(IIIZ)Z
+PLcom/android/server/wm/DockedStackDividerController;->isHomeStackResizable()Z
 PLcom/android/server/wm/DockedStackDividerController;->isImeHideRequested()Z
 HSPLcom/android/server/wm/DockedStackDividerController;->isMinimizedDock()Z
 HSPLcom/android/server/wm/DockedStackDividerController;->isResizing()Z
+HPLcom/android/server/wm/DockedStackDividerController;->isWithinDisplay(Lcom/android/server/wm/Task;)Z
 HSPLcom/android/server/wm/DockedStackDividerController;->loadDimens()V
-HSPLcom/android/server/wm/DockedStackDividerController;->notifyAdjustedForImeChanged(ZJ)V
+PLcom/android/server/wm/DockedStackDividerController;->notifyAdjustedForImeChanged(ZJ)V
 HSPLcom/android/server/wm/DockedStackDividerController;->notifyAppTransitionStarting(Landroid/util/ArraySet;I)V
 HSPLcom/android/server/wm/DockedStackDividerController;->notifyAppVisibilityChanged()V
-HSPLcom/android/server/wm/DockedStackDividerController;->notifyDockedDividerVisibilityChanged(Z)V
-HSPLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackExistsChanged(Z)V
-HSPLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackMinimizedChanged(ZZZ)V
+PLcom/android/server/wm/DockedStackDividerController;->notifyDockSideChanged(I)V
+PLcom/android/server/wm/DockedStackDividerController;->notifyDockedDividerVisibilityChanged(Z)V
+PLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackExistsChanged(Z)V
+HPLcom/android/server/wm/DockedStackDividerController;->notifyDockedStackMinimizedChanged(ZZZ)V
 HSPLcom/android/server/wm/DockedStackDividerController;->onConfigurationChanged()V
-HSPLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/DockedStackDividerController;->positionDockedStackedDivider(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/DockedStackDividerController;->reevaluateVisibility(Z)V
-HSPLcom/android/server/wm/DockedStackDividerController;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
+PLcom/android/server/wm/DockedStackDividerController;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
+PLcom/android/server/wm/DockedStackDividerController;->resetDragResizingChangeReported()V
 PLcom/android/server/wm/DockedStackDividerController;->resetImeHideRequested()V
 HSPLcom/android/server/wm/DockedStackDividerController;->setAdjustedForIme(ZZZLcom/android/server/wm/WindowState;I)V
-HSPLcom/android/server/wm/DockedStackDividerController;->setMinimizedDockedStack(ZZ)V
-HSPLcom/android/server/wm/DockedStackDividerController;->setTouchRegion(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/DockedStackDividerController;->setWindow(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/DockedStackDividerController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/DockedStackDividerController;->setMinimizedDockedStack(ZZ)V
+HPLcom/android/server/wm/DockedStackDividerController;->setResizeDimLayer(ZIF)V
+PLcom/android/server/wm/DockedStackDividerController;->setResizing(Z)V
+PLcom/android/server/wm/DockedStackDividerController;->setTouchRegion(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/DockedStackDividerController;->setWindow(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DockedStackDividerController;->startImeAdjustAnimation(ZZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DockedStackDividerController;->wasVisible()Z
+HSPLcom/android/server/wm/DragDropController$1;-><init>(Lcom/android/server/wm/DragDropController;)V
+HSPLcom/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$DragHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/wm/DragDropController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/Looper;)V
+PLcom/android/server/wm/DragDropController;->access$000(Lcom/android/server/wm/DragDropController;)Lcom/android/server/wm/DragState;
 HSPLcom/android/server/wm/DragDropController;->dragDropActiveLocked()Z
 PLcom/android/server/wm/DragDropController;->dragRecipientEntered(Landroid/view/IWindow;)V
-PLcom/android/server/wm/DragDropController;->handleMotionEvent(ZFF)V
+PLcom/android/server/wm/DragDropController;->dragRecipientExited(Landroid/view/IWindow;)V
+HPLcom/android/server/wm/DragDropController;->handleMotionEvent(ZFF)V
 PLcom/android/server/wm/DragDropController;->onDragStateClosedLocked(Lcom/android/server/wm/DragState;)V
 PLcom/android/server/wm/DragDropController;->performDrag(Landroid/view/SurfaceSession;IILandroid/view/IWindow;ILandroid/view/SurfaceControl;IFFFFLandroid/content/ClipData;)Landroid/os/IBinder;
 PLcom/android/server/wm/DragDropController;->reportDropResult(Landroid/view/IWindow;Z)V
 PLcom/android/server/wm/DragDropController;->sendHandlerMessage(ILjava/lang/Object;)V
 PLcom/android/server/wm/DragDropController;->sendTimeoutMessage(ILjava/lang/Object;)V
-PLcom/android/server/wm/DragInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
+PLcom/android/server/wm/DragInputEventReceiver;-><init>(Landroid/view/InputChannel;Landroid/os/Looper;Lcom/android/server/wm/DragDropController;)V
+HPLcom/android/server/wm/DragInputEventReceiver;->onInputEvent(Landroid/view/InputEvent;)V
+PLcom/android/server/wm/DragResizeMode;->isModeAllowedForStack(Lcom/android/server/wm/ActivityStack;I)Z
+PLcom/android/server/wm/DragState$AnimationListener;-><init>(Lcom/android/server/wm/DragState;)V
+PLcom/android/server/wm/DragState$AnimationListener;-><init>(Lcom/android/server/wm/DragState;Lcom/android/server/wm/DragState$1;)V
+PLcom/android/server/wm/DragState$AnimationListener;->onAnimationEnd(Landroid/animation/Animator;)V
+PLcom/android/server/wm/DragState$AnimationListener;->onAnimationStart(Landroid/animation/Animator;)V
+PLcom/android/server/wm/DragState$AnimationListener;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
 PLcom/android/server/wm/DragState$InputInterceptor;-><init>(Lcom/android/server/wm/DragState;Landroid/view/Display;)V
 PLcom/android/server/wm/DragState$InputInterceptor;->tearDown()V
 PLcom/android/server/wm/DragState;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DragDropController;Landroid/os/IBinder;Landroid/view/SurfaceControl;ILandroid/os/IBinder;)V
+PLcom/android/server/wm/DragState;->access$000(Lcom/android/server/wm/DragState;)Landroid/graphics/Point;
 PLcom/android/server/wm/DragState;->broadcastDragStartedLocked(FF)V
 PLcom/android/server/wm/DragState;->closeLocked()V
+PLcom/android/server/wm/DragState;->createReturnAnimationLocked()Landroid/animation/ValueAnimator;
 PLcom/android/server/wm/DragState;->endDragLocked()V
-PLcom/android/server/wm/DragState;->getDragLayerLocked()I
+PLcom/android/server/wm/DragState;->getInputChannel()Landroid/view/InputChannel;
 PLcom/android/server/wm/DragState;->getInputWindowHandle()Landroid/view/InputWindowHandle;
 PLcom/android/server/wm/DragState;->isClosing()Z
+PLcom/android/server/wm/DragState;->isFromSource(I)Z
 PLcom/android/server/wm/DragState;->isInProgress()Z
 PLcom/android/server/wm/DragState;->isValidDropTarget(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/DragState;->isWindowNotified(Lcom/android/server/wm/WindowState;)Z
 PLcom/android/server/wm/DragState;->lambda$broadcastDragStartedLocked$0$DragState(FFLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/DragState;->lambda$createReturnAnimationLocked$1(Landroid/animation/ValueAnimator;)V
 PLcom/android/server/wm/DragState;->notifyDropLocked(FF)V
-PLcom/android/server/wm/DragState;->notifyLocationLocked(FF)V
-PLcom/android/server/wm/DragState;->notifyMoveLocked(FF)V
+HPLcom/android/server/wm/DragState;->notifyLocationLocked(FF)V
+HPLcom/android/server/wm/DragState;->notifyMoveLocked(FF)V
+HPLcom/android/server/wm/DragState;->obtainDragEvent(Lcom/android/server/wm/WindowState;IFFLjava/lang/Object;Landroid/content/ClipDescription;Landroid/content/ClipData;Lcom/android/internal/view/IDragAndDropPermissions;Z)Landroid/view/DragEvent;
 PLcom/android/server/wm/DragState;->overridePointerIconLocked(I)V
 PLcom/android/server/wm/DragState;->register(Landroid/view/Display;)V
+PLcom/android/server/wm/DragState;->sendDragStartedIfNeededLocked(Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/DragState;->sendDragStartedLocked(Lcom/android/server/wm/WindowState;FFLandroid/content/ClipDescription;)V
 PLcom/android/server/wm/DragState;->showInputSurface()V
-HSPLcom/android/server/wm/ImmersiveModeConfirmation$H;->handleMessage(Landroid/os/Message;)V
+PLcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;-><init>(Landroid/view/IWindow;Lcom/android/server/wm/WindowState;II)V
+HSPLcom/android/server/wm/EmbeddedWindowController;-><init>(Ljava/lang/Object;)V
+PLcom/android/server/wm/EmbeddedWindowController;->add(Landroid/os/IBinder;Landroid/view/IWindow;Lcom/android/server/wm/WindowState;II)V
+PLcom/android/server/wm/EmbeddedWindowController;->getHostWindow(Landroid/os/IBinder;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/EmbeddedWindowController;->remove(Landroid/view/IWindow;)V
+HPLcom/android/server/wm/EmbeddedWindowController;->removeWindowsWithHost(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;-><init>(Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->lambda$Bbb3nMFa3F8er_OBuKA7-SpeSKo(Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->lambda$uAeEWwx5d0xk6FKOvvR9CXZS6Bg(Lcom/android/server/wm/EnsureActivitiesVisibleHelper;Lcom/android/server/wm/ActivityRecord;Z)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->makeVisibleAndRestartIfNeeded(Lcom/android/server/wm/ActivityRecord;IZZLcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->process(Lcom/android/server/wm/ActivityRecord;IZZ)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->reset(Lcom/android/server/wm/ActivityRecord;IZZ)V
+HSPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/EnsureActivitiesVisibleHelper;->setActivityVisibilityState(Lcom/android/server/wm/ActivityRecord;Z)V
+HPLcom/android/server/wm/EventLogTags;->writeWmAddToStopping(IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmBootAnimationDone(J)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmCreateTask(II)V
+HPLcom/android/server/wm/EventLogTags;->writeWmDestroyActivity(IIILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmFailedToPause(IILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmFinishActivity(IIILjava/lang/String;Ljava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmFocusedStack(IIIILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmPauseActivity(IILjava/lang/String;Ljava/lang/String;)V
+PLcom/android/server/wm/EventLogTags;->writeWmRelaunchActivity(IIILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmRelaunchResumeActivity(IIILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmRemoveTask(II)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmRestartActivity(IIILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmResumeActivity(IIILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmSetKeyguardShown(IIILjava/lang/String;)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmSetResumedActivity(ILjava/lang/String;Ljava/lang/String;)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmStackCreated(I)V
+HPLcom/android/server/wm/EventLogTags;->writeWmStackRemoved(I)V
+HPLcom/android/server/wm/EventLogTags;->writeWmStopActivity(IILjava/lang/String;)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmTaskCreated(II)V
+HSPLcom/android/server/wm/EventLogTags;->writeWmTaskMoved(III)V
+HPLcom/android/server/wm/EventLogTags;->writeWmTaskRemoved(ILjava/lang/String;)V
+HPLcom/android/server/wm/EventLogTags;->writeWmTaskToFront(II)V
+HSPLcom/android/server/wm/HighRefreshRateBlacklist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateBlacklist;)V
+HSPLcom/android/server/wm/HighRefreshRateBlacklist$OnPropertiesChangedListener;-><init>(Lcom/android/server/wm/HighRefreshRateBlacklist;Lcom/android/server/wm/HighRefreshRateBlacklist$1;)V
+PLcom/android/server/wm/HighRefreshRateBlacklist$OnPropertiesChangedListener;->onPropertiesChanged(Landroid/provider/DeviceConfig$Properties;)V
+HSPLcom/android/server/wm/HighRefreshRateBlacklist;-><init>(Landroid/content/res/Resources;Lcom/android/server/wm/utils/DeviceConfigInterface;)V
+HSPLcom/android/server/wm/HighRefreshRateBlacklist;->create(Landroid/content/res/Resources;)Lcom/android/server/wm/HighRefreshRateBlacklist;
+PLcom/android/server/wm/HighRefreshRateBlacklist;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/HighRefreshRateBlacklist;->isBlacklisted(Ljava/lang/String;)Z
+HSPLcom/android/server/wm/HighRefreshRateBlacklist;->updateBlacklist(Ljava/lang/String;)V
+HSPLcom/android/server/wm/ImeInsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/ImeInsetsSourceProvider;->checkShowImePostLayout()V
+HSPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostInsetsDispatched()V
+HSPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostLayout()V
+HSPLcom/android/server/wm/ImmersiveModeConfirmation$1;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$1;->run()V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$1;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$2;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$2;->onComputeInternalInsets(Landroid/view/ViewTreeObserver$InternalInsetsInfo;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$3;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$4;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$4;->onClick(Landroid/view/View;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$5$1;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$5;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$5$1;->onAnimationUpdate(Landroid/animation/ValueAnimator;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$5;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;Landroid/view/View;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView$5;->run()V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;Landroid/content/Context;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$000(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/view/ViewGroup;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$300(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Ljava/lang/Runnable;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$400(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/view/animation/Interpolator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$400(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Ljava/lang/Runnable;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$500(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$500(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/view/animation/Interpolator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$502(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$600(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$600(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/graphics/drawable/ColorDrawable;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$602(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;Landroid/animation/ValueAnimator;)Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->access$700(Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;)Landroid/graphics/drawable/ColorDrawable;
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->onAttachedToWindow()V
+PLcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;->onDetachedFromWindow()V
+HSPLcom/android/server/wm/ImmersiveModeConfirmation$H;-><init>(Lcom/android/server/wm/ImmersiveModeConfirmation;Landroid/os/Looper;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation$H;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/wm/ImmersiveModeConfirmation;-><init>(Landroid/content/Context;Landroid/os/Looper;Z)V
-HSPLcom/android/server/wm/ImmersiveModeConfirmation;->confirmCurrentPrompt()V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$100(Lcom/android/server/wm/ImmersiveModeConfirmation;)Landroid/widget/FrameLayout$LayoutParams;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$1000(Landroid/content/Context;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$1000(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$1100(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$1200(Lcom/android/server/wm/ImmersiveModeConfirmation;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$300(Lcom/android/server/wm/ImmersiveModeConfirmation;)Landroid/view/WindowManager;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$700()Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$702(Z)Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$800()Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$800(Lcom/android/server/wm/ImmersiveModeConfirmation;)Landroid/content/Context;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$802(Z)Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$900(Landroid/content/Context;)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->access$900(Lcom/android/server/wm/ImmersiveModeConfirmation;)Landroid/content/Context;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->confirmCurrentPrompt()V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->getBubbleLayoutParams()Landroid/widget/FrameLayout$LayoutParams;
+PLcom/android/server/wm/ImmersiveModeConfirmation;->getClingWindowLayoutParams()Landroid/view/WindowManager$LayoutParams;
+HSPLcom/android/server/wm/ImmersiveModeConfirmation;->getNavBarExitDuration()J
+PLcom/android/server/wm/ImmersiveModeConfirmation;->getWindowManager()Landroid/view/WindowManager;
 HSPLcom/android/server/wm/ImmersiveModeConfirmation;->getWindowToken()Landroid/os/IBinder;
-HSPLcom/android/server/wm/ImmersiveModeConfirmation;->immersiveModeChangedLw(Ljava/lang/String;ZZZ)V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->handleHide()V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->handleShow()V
+HPLcom/android/server/wm/ImmersiveModeConfirmation;->immersiveModeChangedLw(Ljava/lang/String;ZZZ)V
 HSPLcom/android/server/wm/ImmersiveModeConfirmation;->loadSetting(ILandroid/content/Context;)Z
+PLcom/android/server/wm/ImmersiveModeConfirmation;->onLockTaskModeChangedLw(I)V
 PLcom/android/server/wm/ImmersiveModeConfirmation;->onPowerKeyDown(ZJZZ)Z
-HSPLcom/android/server/wm/InputConsumerImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;Ljava/lang/String;Landroid/view/InputChannel;ILandroid/os/UserHandle;I)V
-HSPLcom/android/server/wm/InputConsumerImpl;->binderDied()V
-HSPLcom/android/server/wm/InputConsumerImpl;->disposeChannelsLw()V
+PLcom/android/server/wm/ImmersiveModeConfirmation;->saveSetting(Landroid/content/Context;)V
+PLcom/android/server/wm/InputConsumerImpl;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;Ljava/lang/String;Landroid/view/InputChannel;ILandroid/os/UserHandle;I)V
+PLcom/android/server/wm/InputConsumerImpl;->binderDied()V
+PLcom/android/server/wm/InputConsumerImpl;->disposeChannelsLw()V
 PLcom/android/server/wm/InputConsumerImpl;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Ljava/lang/String;)V
-HSPLcom/android/server/wm/InputConsumerImpl;->hide(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/InputConsumerImpl;->layout(Landroid/view/SurfaceControl$Transaction;II)V
-PLcom/android/server/wm/InputConsumerImpl;->layout(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/InputConsumerImpl;->linkToDeathRecipient()V
-PLcom/android/server/wm/InputConsumerImpl;->show(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/InputConsumerImpl;->unlinkFromDeathRecipient()V
+PLcom/android/server/wm/InputConsumerImpl;->getLayerLw(I)I
+HPLcom/android/server/wm/InputConsumerImpl;->hide(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/InputConsumerImpl;->layout(Landroid/view/SurfaceControl$Transaction;II)V
+HPLcom/android/server/wm/InputConsumerImpl;->layout(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/InputConsumerImpl;->linkToDeathRecipient()V
+HPLcom/android/server/wm/InputConsumerImpl;->show(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/InputConsumerImpl;->unlinkFromDeathRecipient()V
+PLcom/android/server/wm/InputManagerCallback$1;-><init>(Lcom/android/server/wm/InputManagerCallback;Ljava/lang/Runnable;Ljava/util/concurrent/CountDownLatch;JLjava/lang/String;[Z)V
+PLcom/android/server/wm/InputManagerCallback$1;->run()V
+HSPLcom/android/server/wm/InputManagerCallback;-><clinit>()V
 HSPLcom/android/server/wm/InputManagerCallback;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/InputManagerCallback;->access$000()J
+HPLcom/android/server/wm/InputManagerCallback;->dispatchPointerCaptureChanged(Landroid/view/IWindow;Z)Z
 PLcom/android/server/wm/InputManagerCallback;->dispatchUnhandledKey(Landroid/os/IBinder;Landroid/view/KeyEvent;I)Landroid/view/KeyEvent;
+PLcom/android/server/wm/InputManagerCallback;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/InputManagerCallback;->freezeInputDispatchingLw()V
 HSPLcom/android/server/wm/InputManagerCallback;->getPointerDisplayId()I
-PLcom/android/server/wm/InputManagerCallback;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
+HSPLcom/android/server/wm/InputManagerCallback;->getPointerLayer()I
+HPLcom/android/server/wm/InputManagerCallback;->interceptKeyBeforeDispatching(Landroid/os/IBinder;Landroid/view/KeyEvent;I)J
 HSPLcom/android/server/wm/InputManagerCallback;->interceptKeyBeforeQueueing(Landroid/view/KeyEvent;I)I
-PLcom/android/server/wm/InputManagerCallback;->interceptMotionBeforeQueueingNonInteractive(IJI)I
+HPLcom/android/server/wm/InputManagerCallback;->interceptMotionBeforeQueueingNonInteractive(IJI)I
+PLcom/android/server/wm/InputManagerCallback;->isWindowAboveSystem(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/InputManagerCallback;->notifyANR(Landroid/view/InputApplicationHandle;Landroid/os/IBinder;Ljava/lang/String;)J
 HSPLcom/android/server/wm/InputManagerCallback;->notifyConfigurationChanged()V
+HPLcom/android/server/wm/InputManagerCallback;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)Z
+PLcom/android/server/wm/InputManagerCallback;->notifyInputChannelBroken(Landroid/os/IBinder;)V
+PLcom/android/server/wm/InputManagerCallback;->notifyLidSwitchChanged(JZ)V
+HPLcom/android/server/wm/InputManagerCallback;->onPointerDownOutsideFocus(Landroid/os/IBinder;)V
+PLcom/android/server/wm/InputManagerCallback;->preDumpIfLockTooSlow()V
+PLcom/android/server/wm/InputManagerCallback;->setEventDispatchingLw(Z)V
+PLcom/android/server/wm/InputManagerCallback;->thawInputDispatchingLw()V
+PLcom/android/server/wm/InputManagerCallback;->updateInputDispatchModeLw()V
 HSPLcom/android/server/wm/InputManagerCallback;->waitForInputDevicesReady(J)Z
-HSPLcom/android/server/wm/InputMonitor$1;->run()V
+PLcom/android/server/wm/InputMonitor$EventReceiverInputConsumer;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/InputMonitor;Landroid/os/Looper;Ljava/lang/String;Landroid/view/InputEventReceiver$Factory;ILandroid/os/UserHandle;I)V
 PLcom/android/server/wm/InputMonitor$EventReceiverInputConsumer;->dismiss()V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;)V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$1;)V
 HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->access$700(Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;Z)V
 HSPLcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;->updateInputWindows(Z)V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;)V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputWindows;-><init>(Lcom/android/server/wm/InputMonitor;Lcom/android/server/wm/InputMonitor$1;)V
+HSPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V
 HSPLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;I)V
-HSPLcom/android/server/wm/InputMonitor;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/InputChannel;ILandroid/os/UserHandle;)V
+HSPLcom/android/server/wm/InputMonitor;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/InputMonitor;->access$000(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/InputMonitor;->access$1000(Lcom/android/server/wm/InputMonitor;)Landroid/graphics/Rect;
+HSPLcom/android/server/wm/InputMonitor;->access$102(Lcom/android/server/wm/InputMonitor;Z)Z
+PLcom/android/server/wm/InputMonitor;->access$1100(Lcom/android/server/wm/InputMonitor;)Z
+HSPLcom/android/server/wm/InputMonitor;->access$1102(Lcom/android/server/wm/InputMonitor;Z)Z
+HSPLcom/android/server/wm/InputMonitor;->access$1200(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/InputMonitor;->access$1300(Lcom/android/server/wm/InputMonitor;)Z
+HSPLcom/android/server/wm/InputMonitor;->access$202(Lcom/android/server/wm/InputMonitor;Z)Z
+HSPLcom/android/server/wm/InputMonitor;->access$300(Lcom/android/server/wm/InputMonitor;)Z
+HSPLcom/android/server/wm/InputMonitor;->access$400(Lcom/android/server/wm/InputMonitor;)Landroid/view/SurfaceControl$Transaction;
+HSPLcom/android/server/wm/InputMonitor;->access$500(Lcom/android/server/wm/InputMonitor;)I
+HSPLcom/android/server/wm/InputMonitor;->access$600(Lcom/android/server/wm/InputMonitor;)Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;
+PLcom/android/server/wm/InputMonitor;->addInputConsumer(Ljava/lang/String;Lcom/android/server/wm/InputConsumerImpl;)V
+PLcom/android/server/wm/InputMonitor;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;Landroid/view/InputChannel;ILandroid/os/UserHandle;)V
 PLcom/android/server/wm/InputMonitor;->createInputConsumer(Landroid/os/Looper;Ljava/lang/String;Landroid/view/InputEventReceiver$Factory;)Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;
-PLcom/android/server/wm/InputMonitor;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/InputMonitor;->destroyInputConsumer(Ljava/lang/String;)Z
+PLcom/android/server/wm/InputMonitor;->disposeInputConsumer(Lcom/android/server/wm/InputConsumerImpl;)Z
+HSPLcom/android/server/wm/InputMonitor;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/InputMonitor;->getInputConsumer(Ljava/lang/String;)Lcom/android/server/wm/InputConsumerImpl;
+PLcom/android/server/wm/InputMonitor;->lambda$onDisplayRemoved$0$InputMonitor()V
+HSPLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
+PLcom/android/server/wm/InputMonitor;->onDisplayRemoved()V
+HPLcom/android/server/wm/InputMonitor;->pauseDispatchingLw(Lcom/android/server/wm/WindowToken;)V
 HSPLcom/android/server/wm/InputMonitor;->populateInputWindowHandle(Landroid/view/InputWindowHandle;Lcom/android/server/wm/WindowState;IIZZZ)V
-HSPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
+HSPLcom/android/server/wm/InputMonitor;->resetInputConsumers(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/InputMonitor;->resumeDispatchingLw(Lcom/android/server/wm/WindowToken;)V
+HSPLcom/android/server/wm/InputMonitor;->scheduleUpdateInputWindows()V
+HSPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/InputMonitor;->setInputFocusLw(Lcom/android/server/wm/WindowState;Z)V
 HSPLcom/android/server/wm/InputMonitor;->setUpdateInputWindowsNeededLw()V
 HSPLcom/android/server/wm/InputMonitor;->updateInputWindowsLw(Z)V
+HSPLcom/android/server/wm/InsetsPolicy$BarWindow;-><init>(Lcom/android/server/wm/InsetsPolicy;I)V
+PLcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener$InsetsPolicyAnimationControlCallbacks;-><init>(Lcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener;Lcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener;)V
+PLcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener$InsetsPolicyAnimationControlCallbacks;->access$200(Lcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener$InsetsPolicyAnimationControlCallbacks;ILandroid/util/SparseArray;Z)V
+PLcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener$InsetsPolicyAnimationControlCallbacks;->controlAnimationUnchecked(ILandroid/util/SparseArray;Z)V
+PLcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener;-><init>(Lcom/android/server/wm/InsetsPolicy;ZLjava/lang/Runnable;)V
+HSPLcom/android/server/wm/InsetsPolicy$TransientControlTarget;-><init>(Lcom/android/server/wm/InsetsPolicy;)V
+HSPLcom/android/server/wm/InsetsPolicy$TransientControlTarget;-><init>(Lcom/android/server/wm/InsetsPolicy;Lcom/android/server/wm/InsetsPolicy$1;)V
+HSPLcom/android/server/wm/InsetsPolicy;-><init>(Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/InsetsPolicy;->areSystemBarsForciblyVisible()Z
+HPLcom/android/server/wm/InsetsPolicy;->checkAbortTransient(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;)V
+PLcom/android/server/wm/InsetsPolicy;->controlAnimationUnchecked(ILandroid/util/SparseArray;ZLjava/lang/Runnable;)V
+HSPLcom/android/server/wm/InsetsPolicy;->getFakeNavControlTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+HSPLcom/android/server/wm/InsetsPolicy;->getFakeStatusControlTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+HSPLcom/android/server/wm/InsetsPolicy;->getInsetsForDispatch(Lcom/android/server/wm/WindowState;)Landroid/view/InsetsState;
+HSPLcom/android/server/wm/InsetsPolicy;->getNavControlTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+HSPLcom/android/server/wm/InsetsPolicy;->getStatusControlTarget(Lcom/android/server/wm/WindowState;)Lcom/android/server/wm/InsetsControlTarget;
+PLcom/android/server/wm/InsetsPolicy;->hideTransient()V
+HPLcom/android/server/wm/InsetsPolicy;->isHidden(I)Z
+HSPLcom/android/server/wm/InsetsPolicy;->isKeyguardOrStatusBarForciblyVisible()Z
+HSPLcom/android/server/wm/InsetsPolicy;->isNavBarForciblyVisible()Z
+HSPLcom/android/server/wm/InsetsPolicy;->isStatusBarForciblyVisible()Z
+HPLcom/android/server/wm/InsetsPolicy;->isTransient(I)Z
+HPLcom/android/server/wm/InsetsPolicy;->onInsetsModified(Lcom/android/server/wm/WindowState;Landroid/view/InsetsState;)V
+PLcom/android/server/wm/InsetsPolicy;->showTransient(Landroid/util/IntArray;)V
+PLcom/android/server/wm/InsetsPolicy;->startAnimation(Landroid/util/IntArray;ZLjava/lang/Runnable;)V
+HSPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/InsetsSourceProvider;-><init>(Landroid/view/InsetsSource;Lcom/android/server/wm/InsetsStateController;Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
-HSPLcom/android/server/wm/InsetsSourceProvider;->isClientVisible()Z
-HSPLcom/android/server/wm/InsetsSourceProvider;->isControllable()Z
+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;
+HPLcom/android/server/wm/InsetsSourceProvider;->getSource()Landroid/view/InsetsSource;
+HPLcom/android/server/wm/InsetsSourceProvider;->hasWindow()Z
+HPLcom/android/server/wm/InsetsSourceProvider;->isControllable()Z
 HSPLcom/android/server/wm/InsetsSourceProvider;->onPostLayout()V
-HSPLcom/android/server/wm/InsetsSourceProvider;->setWindow(Lcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->setServerVisible(Z)V
+HPLcom/android/server/wm/InsetsSourceProvider;->setWindow(Lcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->setWindow(Lcom/android/server/wm/WindowState;Lcom/android/internal/util/function/TriConsumer;Lcom/android/internal/util/function/TriConsumer;)V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateSourceFrame()V
+HPLcom/android/server/wm/InsetsSourceProvider;->updateVisibility()V
 HSPLcom/android/server/wm/InsetsStateController;-><init>(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/InsetsStateController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/InsetsStateController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;
 HSPLcom/android/server/wm/InsetsStateController;->getInsetsForDispatch(Lcom/android/server/wm/WindowState;)Landroid/view/InsetsState;
 HSPLcom/android/server/wm/InsetsStateController;->getSourceProvider(I)Lcom/android/server/wm/InsetsSourceProvider;
+PLcom/android/server/wm/InsetsStateController;->isFakeTarget(ILcom/android/server/wm/InsetsControlTarget;)Z
 HSPLcom/android/server/wm/InsetsStateController;->lambda$getSourceProvider$1$InsetsStateController(Ljava/lang/Integer;)Lcom/android/server/wm/InsetsSourceProvider;
-HSPLcom/android/server/wm/InsetsStateController;->onBarControllingWindowChanged(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/InsetsStateController;->onControlChanged(ILcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/InsetsStateController;->onImeTargetChanged(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/InsetsStateController;->lambda$getSourceProvider$2$InsetsStateController(Ljava/lang/Integer;)Lcom/android/server/wm/InsetsSourceProvider;
+PLcom/android/server/wm/InsetsStateController;->lambda$getSourceProvider$3$InsetsStateController(Ljava/lang/Integer;)Lcom/android/server/wm/InsetsSourceProvider;
+HPLcom/android/server/wm/InsetsStateController;->lambda$new$0(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/InsetsStateController;->notifyInsetsChanged()V
+HSPLcom/android/server/wm/InsetsStateController;->notifyPendingInsetsControlChanged()V
+HSPLcom/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
+HSPLcom/android/server/wm/InsetsStateController;->onControlChanged(ILcom/android/server/wm/InsetsControlTarget;)V
+HSPLcom/android/server/wm/InsetsStateController;->onControlFakeTargetChanged(ILcom/android/server/wm/InsetsControlTarget;)V
+HPLcom/android/server/wm/InsetsStateController;->onImeControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;)V
+HPLcom/android/server/wm/InsetsStateController;->onImeTargetChanged(Lcom/android/server/wm/InsetsControlTarget;)V
+HPLcom/android/server/wm/InsetsStateController;->onInsetsModified(Lcom/android/server/wm/InsetsControlTarget;Landroid/view/InsetsState;)V
 HSPLcom/android/server/wm/InsetsStateController;->onPostLayout()V
-HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->acquiredSleepToken()V
+HPLcom/android/server/wm/InsetsStateController;->peekSourceProvider(I)Lcom/android/server/wm/InsetsSourceProvider;
+HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;I)V
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->access$000(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->access$100(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+HPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->access$200(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Z
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->access$300(Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->acquiredSleepToken()V
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->dumpStatus(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->getStackForControllingOccluding(Lcom/android/server/wm/DisplayContent;)Lcom/android/server/wm/ActivityStack;
 PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->onRemoved()V
-HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->releaseSleepToken()V
-HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->visibilitiesUpdated(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/ActivityDisplay;)V
-PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->releaseSleepToken()V
+HSPLcom/android/server/wm/KeyguardController$KeyguardDisplayState;->visibilitiesUpdated(Lcom/android/server/wm/KeyguardController;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/KeyguardController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;)V
+PLcom/android/server/wm/KeyguardController;->access$400(Lcom/android/server/wm/KeyguardController;I)V
+PLcom/android/server/wm/KeyguardController;->access$500(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/ActivityTaskManagerService;
+PLcom/android/server/wm/KeyguardController;->access$600(Lcom/android/server/wm/KeyguardController;)Lcom/android/server/wm/WindowManagerService;
 HSPLcom/android/server/wm/KeyguardController;->beginActivityVisibilityUpdate()V
 PLcom/android/server/wm/KeyguardController;->canDismissKeyguard()Z
-HSPLcom/android/server/wm/KeyguardController;->canShowActivityWhileKeyguardShowing(Lcom/android/server/wm/ActivityRecord;Z)Z
+HPLcom/android/server/wm/KeyguardController;->canShowActivityWhileKeyguardShowing(Lcom/android/server/wm/ActivityRecord;Z)Z
 PLcom/android/server/wm/KeyguardController;->canShowWhileOccluded(ZZ)Z
-HSPLcom/android/server/wm/KeyguardController;->dismissDockedStackIfNeeded()V
+PLcom/android/server/wm/KeyguardController;->convertTransitFlags(I)I
+HPLcom/android/server/wm/KeyguardController;->dismissDockedStackIfNeeded()V
 PLcom/android/server/wm/KeyguardController;->dismissKeyguard(Landroid/os/IBinder;Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
 HSPLcom/android/server/wm/KeyguardController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/KeyguardController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/KeyguardController;->dumpDisplayStates(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/KeyguardController;->endActivityVisibilityUpdate()V
+HSPLcom/android/server/wm/KeyguardController;->getDisplay(I)Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;
 PLcom/android/server/wm/KeyguardController;->handleDismissKeyguard()V
-PLcom/android/server/wm/KeyguardController;->handleOccludedChanged()V
+HPLcom/android/server/wm/KeyguardController;->handleOccludedChanged(I)V
+HPLcom/android/server/wm/KeyguardController;->isDisplayOccluded(I)Z
 HSPLcom/android/server/wm/KeyguardController;->isKeyguardGoingAway()Z
 HSPLcom/android/server/wm/KeyguardController;->isKeyguardLocked()Z
 HSPLcom/android/server/wm/KeyguardController;->isKeyguardOrAodShowing(I)Z
-HSPLcom/android/server/wm/KeyguardController;->isKeyguardShowing(I)Z
-HSPLcom/android/server/wm/KeyguardController;->isKeyguardUnoccludedOrAodShowing(I)Z
-PLcom/android/server/wm/KeyguardController;->keyguardGoingAway(I)V
+PLcom/android/server/wm/KeyguardController;->isKeyguardShowing(I)Z
+HPLcom/android/server/wm/KeyguardController;->isKeyguardUnoccludedOrAodShowing(I)Z
+HPLcom/android/server/wm/KeyguardController;->keyguardGoingAway(I)V
 PLcom/android/server/wm/KeyguardController;->onDisplayRemoved(I)V
 PLcom/android/server/wm/KeyguardController;->resolveOccludeTransit()I
-HSPLcom/android/server/wm/KeyguardController;->setKeyguardShown(ZZ)V
+PLcom/android/server/wm/KeyguardController;->setKeyguardGoingAway(Z)V
+HPLcom/android/server/wm/KeyguardController;->setKeyguardShown(ZZ)V
 HSPLcom/android/server/wm/KeyguardController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/KeyguardController;->updateKeyguardSleepToken()V
+HPLcom/android/server/wm/KeyguardController;->updateKeyguardSleepToken()V
+HPLcom/android/server/wm/KeyguardController;->updateKeyguardSleepToken(I)V
 HSPLcom/android/server/wm/KeyguardController;->visibilitiesUpdated()V
-PLcom/android/server/wm/KeyguardController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/KeyguardController;->writeDisplayStatesToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/KeyguardDisableHandler$1;-><init>(Lcom/android/server/wm/KeyguardDisableHandler;)V
+PLcom/android/server/wm/KeyguardDisableHandler$1;->acquired(I)V
+PLcom/android/server/wm/KeyguardDisableHandler$1;->released(I)V
+HSPLcom/android/server/wm/KeyguardDisableHandler$2;-><init>(Lcom/android/server/policy/WindowManagerPolicy;Landroid/os/UserManagerInternal;)V
 HSPLcom/android/server/wm/KeyguardDisableHandler$2;->dpmRequiresPassword(I)Z
 HSPLcom/android/server/wm/KeyguardDisableHandler$2;->enableKeyguard(Z)V
+PLcom/android/server/wm/KeyguardDisableHandler$2;->getProfileParentId(I)I
 HSPLcom/android/server/wm/KeyguardDisableHandler$2;->isKeyguardSecure(I)Z
 HSPLcom/android/server/wm/KeyguardDisableHandler;-><init>(Lcom/android/server/wm/KeyguardDisableHandler$Injector;Landroid/os/Handler;)V
 HSPLcom/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/KeyguardDisableHandler;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;II)V
+PLcom/android/server/wm/KeyguardDisableHandler;->reenableKeyguard(Landroid/os/IBinder;II)V
 HSPLcom/android/server/wm/KeyguardDisableHandler;->shouldKeyguardBeEnabled(I)Z
 HSPLcom/android/server/wm/KeyguardDisableHandler;->updateKeyguardEnabled(I)V
+HSPLcom/android/server/wm/KeyguardDisableHandler;->updateKeyguardEnabledLocked(I)V
+PLcom/android/server/wm/KeyguardDisableHandler;->watcherForCallingUid(Landroid/os/IBinder;I)Lcom/android/server/utils/UserTokenWatcher;
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;-><init>(Landroid/os/Looper;)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunchCancelled([B)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunchFinished([BJ)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnActivityLaunched([BI)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnIntentFailed()V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnIntentStarted(Landroid/content/Intent;J)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleOnReportFullyDrawn([BJ)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->handleRegisterLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$FhvLqBbd_XMsJK45WV5Mlt8JSYM(Lcom/android/server/wm/LaunchObserverRegistryImpl;[BJ)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$KukKmVpn5W_1xSV6Dnp8wW2H2Ks(Lcom/android/server/wm/LaunchObserverRegistryImpl;)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$QcawcFcJtEX4EhYptq_Vb4j368Y(Lcom/android/server/wm/LaunchObserverRegistryImpl;[BJ)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$UGY1OclnLIQLMEL9B55qjERFf4o(Lcom/android/server/wm/LaunchObserverRegistryImpl;[BI)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$lAGPwfsXJvBWsyG2rbEfo3sTv34(Lcom/android/server/wm/LaunchObserverRegistryImpl;[B)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$pWUDt4Ot3BWLJOTAhXMkkhHUhpc(Lcom/android/server/wm/LaunchObserverRegistryImpl;Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->lambda$veRn_GhgLZLlOHOJ0ZYT6KcfYqo(Lcom/android/server/wm/LaunchObserverRegistryImpl;Landroid/content/Intent;J)V
 PLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchCancelled([B)V
-HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchFinished([B)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchFinished([BJ)V
 HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunched([BI)V
-HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentFailed()V
-HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentStarted(Landroid/content/Intent;)V
+HPLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentFailed()V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/android/server/wm/LaunchObserverRegistryImpl;->onReportFullyDrawn([BJ)V
+HSPLcom/android/server/wm/LaunchObserverRegistryImpl;->registerLaunchObserver(Lcom/android/server/wm/ActivityMetricsLaunchObserver;)V
+HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;-><init>()V
 HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;->hasPreferredDisplay()Z
 HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;->hasWindowingMode()Z
 HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;->isEmpty()Z
 HSPLcom/android/server/wm/LaunchParamsController$LaunchParams;->reset()V
 HSPLcom/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
-HSPLcom/android/server/wm/LaunchParamsController;->calculate(Lcom/android/server/wm/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ILcom/android/server/wm/LaunchParamsController$LaunchParams;)V
-HSPLcom/android/server/wm/LaunchParamsController;->layoutTask(Lcom/android/server/wm/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HSPLcom/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;ILcom/android/server/wm/LaunchParamsController$LaunchParams;)V
+HSPLcom/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/ActivityStackSupervisor;)V
 HSPLcom/android/server/wm/LaunchParamsController;->registerModifier(Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;)V
+PLcom/android/server/wm/LaunchParamsPersister$CleanUpComponentQueueItem;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Ljava/util/List;)V
+PLcom/android/server/wm/LaunchParamsPersister$CleanUpComponentQueueItem;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Ljava/util/List;Lcom/android/server/wm/LaunchParamsPersister$1;)V
 PLcom/android/server/wm/LaunchParamsPersister$CleanUpComponentQueueItem;->process()V
-HSPLcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;->matches(Lcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;)Z
-HSPLcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;->matches(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;)Z
-HSPLcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;->process()V
-HSPLcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;->saveParamsToXml()Ljava/io/StringWriter;
+HSPLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;)V
+HSPLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Lcom/android/server/wm/LaunchParamsPersister$1;)V
 PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;->onPackageAdded(Ljava/lang/String;I)V
 PLcom/android/server/wm/LaunchParamsPersister$PackageListObserver;->onPackageRemoved(Ljava/lang/String;I)V
-HSPLcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
-HSPLcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/wm/LaunchParamsPersister;->getLaunchParams(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)V
-HSPLcom/android/server/wm/LaunchParamsPersister;->getParamFile(Ljava/io/File;Landroid/content/ComponentName;)Ljava/io/File;
-HSPLcom/android/server/wm/LaunchParamsPersister;->loadLaunchParams(I)V
+HPLcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;-><init>(Lcom/android/server/wm/LaunchParamsPersister;)V
+PLcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;-><init>(Lcom/android/server/wm/LaunchParamsPersister;Lcom/android/server/wm/LaunchParamsPersister$1;)V
+HPLcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;)V
+HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityStackSupervisor;)V
+HSPLcom/android/server/wm/LaunchParamsPersister;-><init>(Lcom/android/server/wm/PersisterQueue;Lcom/android/server/wm/ActivityStackSupervisor;Ljava/util/function/IntFunction;)V
+PLcom/android/server/wm/LaunchParamsPersister;->getLaunchParamFolder(I)Ljava/io/File;
+HSPLcom/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;->getParamFile(Ljava/io/File;Landroid/content/ComponentName;)Ljava/io/File;
+HPLcom/android/server/wm/LaunchParamsPersister;->loadLaunchParams(I)V
+PLcom/android/server/wm/LaunchParamsPersister;->onCleanupUser(I)V
 HSPLcom/android/server/wm/LaunchParamsPersister;->onSystemReady()V
-HSPLcom/android/server/wm/LaunchParamsPersister;->onUnlockUser(I)V
-PLcom/android/server/wm/LaunchParamsPersister;->removeRecordForPackage(Ljava/lang/String;)V
-HSPLcom/android/server/wm/LaunchParamsPersister;->saveTask(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/LaunchParamsPersister;->saveTaskToLaunchParam(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;)Z
-PLcom/android/server/wm/Letterbox$InputInterceptor;-><init>(Ljava/lang/String;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/LaunchParamsPersister;->onUnlockUser(I)V
+HPLcom/android/server/wm/LaunchParamsPersister;->removeRecordForPackage(Ljava/lang/String;)V
+HPLcom/android/server/wm/Letterbox$InputInterceptor$SimpleInputReceiver;-><init>(Landroid/view/InputChannel;)V
+HPLcom/android/server/wm/Letterbox$InputInterceptor;-><init>(Ljava/lang/String;Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/Letterbox$InputInterceptor;->dispose()V
-PLcom/android/server/wm/Letterbox$InputInterceptor;->updateTouchableRegion(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->applySurfaceChanges(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->attachInput(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->createSurface()V
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->getHeight()I
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->getWidth()I
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->isOverlappingWith(Landroid/graphics/Rect;)Z
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->layout(IIIILandroid/graphics/Point;)V
-PLcom/android/server/wm/Letterbox$LetterboxSurface;->needsApplySurfaceChanges()Z
+HPLcom/android/server/wm/Letterbox$InputInterceptor;->updateTouchableRegion(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;-><init>(Lcom/android/server/wm/Letterbox;Ljava/lang/String;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->applySurfaceChanges(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->attachInput(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->createSurface(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->getHeight()I
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->getWidth()I
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->isOverlappingWith(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->layout(IIIILandroid/graphics/Point;)V
+HPLcom/android/server/wm/Letterbox$LetterboxSurface;->needsApplySurfaceChanges()Z
 PLcom/android/server/wm/Letterbox$LetterboxSurface;->remove()V
-PLcom/android/server/wm/Letterbox;-><init>(Ljava/util/function/Supplier;)V
-PLcom/android/server/wm/Letterbox;->applySurfaceChanges(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/Letterbox;-><clinit>()V
+PLcom/android/server/wm/Letterbox;-><init>(Ljava/util/function/Supplier;Ljava/util/function/Supplier;)V
+PLcom/android/server/wm/Letterbox;->access$100(Lcom/android/server/wm/Letterbox;)Ljava/util/function/Supplier;
+PLcom/android/server/wm/Letterbox;->access$200(Lcom/android/server/wm/Letterbox;)Ljava/util/function/Supplier;
+HPLcom/android/server/wm/Letterbox;->applySurfaceChanges(Landroid/view/SurfaceControl$Transaction;)V
 PLcom/android/server/wm/Letterbox;->attachInput(Lcom/android/server/wm/WindowState;)V
 PLcom/android/server/wm/Letterbox;->destroy()V
+HPLcom/android/server/wm/Letterbox;->getInnerFrame()Landroid/graphics/Rect;
 PLcom/android/server/wm/Letterbox;->getInsets()Landroid/graphics/Rect;
-PLcom/android/server/wm/Letterbox;->hide()V
-PLcom/android/server/wm/Letterbox;->isOverlappingWith(Landroid/graphics/Rect;)Z
-PLcom/android/server/wm/Letterbox;->layout(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Point;)V
-PLcom/android/server/wm/Letterbox;->needsApplySurfaceChanges()Z
-HSPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->canSkipFirstFrame()Z
-PLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->getBackgroundColor()I
-HSPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->needsEarlyWakeup()Z
-HSPLcom/android/server/wm/LocalAnimationAdapter;->getBackgroundColor()I
-HSPLcom/android/server/wm/LocalAnimationAdapter;->getDurationHint()J
-PLcom/android/server/wm/LocalAnimationAdapter;->getShowWallpaper()Z
+HPLcom/android/server/wm/Letterbox;->hide()V
+HPLcom/android/server/wm/Letterbox;->isOverlappingWith(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/Letterbox;->layout(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Point;)V
+HPLcom/android/server/wm/Letterbox;->needsApplySurfaceChanges()Z
+HPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->canSkipFirstFrame()Z
+HPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->needsEarlyWakeup()Z
+HPLcom/android/server/wm/LocalAnimationAdapter;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Lcom/android/server/wm/SurfaceAnimationRunner;)V
+PLcom/android/server/wm/LocalAnimationAdapter;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/LocalAnimationAdapter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/LocalAnimationAdapter;->getDurationHint()J
+HPLcom/android/server/wm/LocalAnimationAdapter;->getShowWallpaper()Z
 PLcom/android/server/wm/LocalAnimationAdapter;->getStatusBarTransitionsStartTime()J
-HSPLcom/android/server/wm/LocalAnimationAdapter;->lambda$startAnimation$0$LocalAnimationAdapter(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/LocalAnimationAdapter;->lambda$startAnimation$0$LocalAnimationAdapter(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/LocalAnimationAdapter;->lambda$startAnimation$0$LocalAnimationAdapter(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
 PLcom/android/server/wm/LocalAnimationAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/LocalAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/LocalAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/LocalAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/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$1;)V
+HSPLcom/android/server/wm/LockTaskController;-><clinit>()V
 HSPLcom/android/server/wm/LockTaskController;-><init>(Landroid/content/Context;Lcom/android/server/wm/ActivityStackSupervisor;Landroid/os/Handler;)V
-HSPLcom/android/server/wm/LockTaskController;->activityBlockedFromFinish(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/LockTaskController;->canMoveTaskToBack(Lcom/android/server/wm/TaskRecord;)Z
-HSPLcom/android/server/wm/LockTaskController;->clearLockedTask(Lcom/android/server/wm/TaskRecord;)V
+HPLcom/android/server/wm/LockTaskController;->activityBlockedFromFinish(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/LockTaskController;->canMoveTaskToBack(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/LockTaskController;->clearLockedTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/LockTaskController;->clearLockedTasks(Ljava/lang/String;)V
 HSPLcom/android/server/wm/LockTaskController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/LockTaskController;->getDevicePolicyManager()Landroid/app/admin/IDevicePolicyManager;
+PLcom/android/server/wm/LockTaskController;->getLockPatternUtils()Lcom/android/internal/widget/LockPatternUtils;
+HSPLcom/android/server/wm/LockTaskController;->getLockTaskFeaturesForUser(I)I
 HSPLcom/android/server/wm/LockTaskController;->getLockTaskModeState()I
-HSPLcom/android/server/wm/LockTaskController;->getRootTask()Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolation(Lcom/android/server/wm/TaskRecord;)Z
-HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolation(Lcom/android/server/wm/TaskRecord;Z)Z
-HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolationInternal(Lcom/android/server/wm/TaskRecord;Z)Z
+HPLcom/android/server/wm/LockTaskController;->getRootTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/LockTaskController;->getStatusBarService()Lcom/android/internal/statusbar/IStatusBarService;
+HSPLcom/android/server/wm/LockTaskController;->isActivityAllowed(ILjava/lang/String;I)Z
+HSPLcom/android/server/wm/LockTaskController;->isKeyguardAllowed(I)Z
+HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolation(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolation(Lcom/android/server/wm/Task;Z)Z
+HSPLcom/android/server/wm/LockTaskController;->isLockTaskModeViolationInternal(Lcom/android/server/wm/Task;Z)Z
 HSPLcom/android/server/wm/LockTaskController;->isPackageWhitelisted(ILjava/lang/String;)Z
-HSPLcom/android/server/wm/LockTaskController;->isTaskLocked(Lcom/android/server/wm/TaskRecord;)Z
-HSPLcom/android/server/wm/LockTaskController;->isTaskWhitelisted(Lcom/android/server/wm/TaskRecord;)Z
+PLcom/android/server/wm/LockTaskController;->isRecentsAllowed(I)Z
+PLcom/android/server/wm/LockTaskController;->isRootTask(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/LockTaskController;->isTaskLocked(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/LockTaskController;->isTaskWhitelisted(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/LockTaskController;->lambda$removeLockedTask$0$LockTaskController(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/LockTaskController;->lambda$setLockTaskMode$1$LockTaskController(Landroid/content/Intent;Lcom/android/server/wm/Task;I)V
+PLcom/android/server/wm/LockTaskController;->lockKeyguardIfNeeded()V
 HSPLcom/android/server/wm/LockTaskController;->lockTaskModeToString()Ljava/lang/String;
+PLcom/android/server/wm/LockTaskController;->performStartLockTask(Ljava/lang/String;II)V
+PLcom/android/server/wm/LockTaskController;->performStopLockTask(I)V
+PLcom/android/server/wm/LockTaskController;->removeLockedTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/LockTaskController;->setKeyguardState(II)V
+PLcom/android/server/wm/LockTaskController;->setLockTaskMode(Lcom/android/server/wm/Task;ILjava/lang/String;Z)V
+PLcom/android/server/wm/LockTaskController;->setStatusBarState(II)V
 HSPLcom/android/server/wm/LockTaskController;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/LockTaskController;->shouldLockKeyguard()Z
+PLcom/android/server/wm/LockTaskController;->showLockTaskToast()V
+PLcom/android/server/wm/LockTaskController;->startLockTaskMode(Lcom/android/server/wm/Task;ZI)V
+PLcom/android/server/wm/LockTaskController;->stopLockTaskMode(Lcom/android/server/wm/Task;ZI)V
 HSPLcom/android/server/wm/LockTaskController;->updateLockTaskFeatures(II)V
 HSPLcom/android/server/wm/LockTaskController;->updateLockTaskPackages(I[Ljava/lang/String;)V
-HSPLcom/android/server/wm/MirrorActiveUids;->getUidState(I)I
+HSPLcom/android/server/wm/MirrorActiveUids;-><init>()V
+HPLcom/android/server/wm/MirrorActiveUids;->getUidState(I)I
 HSPLcom/android/server/wm/MirrorActiveUids;->onUidActive(II)V
 HSPLcom/android/server/wm/MirrorActiveUids;->onUidInactive(I)V
 HSPLcom/android/server/wm/MirrorActiveUids;->onUidProcStateChanged(II)V
-HSPLcom/android/server/wm/NavigationBarExperiments;->getNavigationBarFrameHeight()I
-HSPLcom/android/server/wm/NavigationBarExperiments;->getNavigationBarFrameWidth()I
-HSPLcom/android/server/wm/NavigationBarExperiments;->getNavigationBarHeight()I
-PLcom/android/server/wm/NavigationBarExperiments;->getNavigationBarWidth()I
-HSPLcom/android/server/wm/NavigationBarExperiments;->offsetWindowFramesForNavBar(ILcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/NavigationBarExperiments;->onConfigurationChanged(Landroid/content/Context;)V
+HPLcom/android/server/wm/PendingRemoteAnimationRegistry$Entry;-><init>(Lcom/android/server/wm/PendingRemoteAnimationRegistry;Ljava/lang/String;Landroid/view/RemoteAnimationAdapter;)V
 PLcom/android/server/wm/PendingRemoteAnimationRegistry$Entry;->lambda$new$0$PendingRemoteAnimationRegistry$Entry(Ljava/lang/String;)V
+HSPLcom/android/server/wm/PendingRemoteAnimationRegistry;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Landroid/os/Handler;)V
+HSPLcom/android/server/wm/PendingRemoteAnimationRegistry;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Landroid/os/Handler;)V
+PLcom/android/server/wm/PendingRemoteAnimationRegistry;->access$000(Lcom/android/server/wm/PendingRemoteAnimationRegistry;)Landroid/os/Handler;
+PLcom/android/server/wm/PendingRemoteAnimationRegistry;->access$100(Lcom/android/server/wm/PendingRemoteAnimationRegistry;)Lcom/android/server/wm/WindowManagerGlobalLock;
+PLcom/android/server/wm/PendingRemoteAnimationRegistry;->access$200(Lcom/android/server/wm/PendingRemoteAnimationRegistry;)Landroid/util/ArrayMap;
 PLcom/android/server/wm/PendingRemoteAnimationRegistry;->addPendingAnimation(Ljava/lang/String;Landroid/view/RemoteAnimationAdapter;)V
 HSPLcom/android/server/wm/PendingRemoteAnimationRegistry;->overrideOptionsIfNeeded(Ljava/lang/String;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
-HSPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;->run()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$1;)V
+HPLcom/android/server/wm/PersisterQueue$LazyTaskWriterThread;->run()V
+HSPLcom/android/server/wm/PersisterQueue;-><clinit>()V
+HSPLcom/android/server/wm/PersisterQueue;-><init>()V
 HSPLcom/android/server/wm/PersisterQueue;-><init>(JJ)V
-HSPLcom/android/server/wm/PersisterQueue;->addItem(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;Z)V
+PLcom/android/server/wm/PersisterQueue;->access$100(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/PersisterQueue;->access$200(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/PersisterQueue;->access$300(Lcom/android/server/wm/PersisterQueue;)V
+HPLcom/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
-HSPLcom/android/server/wm/PersisterQueue;->findLastItem(Ljava/util/function/Predicate;Ljava/lang/Class;)Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
-HSPLcom/android/server/wm/PersisterQueue;->processNextItem()V
-PLcom/android/server/wm/PersisterQueue;->removeItems(Ljava/util/function/Predicate;Ljava/lang/Class;)V
-HSPLcom/android/server/wm/PersisterQueue;->startPersisting()V
-HSPLcom/android/server/wm/PersisterQueue;->updateLastOrAddItem(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;Z)V
-HSPLcom/android/server/wm/PersisterQueue;->yieldIfQueueTooDeep()V
-HSPLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->lambda$setMinEdgeSize$1$PinnedStackController$PinnedStackControllerCallback(I)V
-HSPLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->setMinEdgeSize(I)V
-HSPLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;->binderDied()V
+HPLcom/android/server/wm/PersisterQueue;->findLastItem(Ljava/util/function/Predicate;Ljava/lang/Class;)Lcom/android/server/wm/PersisterQueue$WriteQueueItem;
+PLcom/android/server/wm/PersisterQueue;->lambda$static$0()V
+HPLcom/android/server/wm/PersisterQueue;->processNextItem()V
+HPLcom/android/server/wm/PersisterQueue;->removeItems(Ljava/util/function/Predicate;Ljava/lang/Class;)V
+PLcom/android/server/wm/PersisterQueue;->startPersisting()V
+HPLcom/android/server/wm/PersisterQueue;->updateLastOrAddItem(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;Z)V
+HPLcom/android/server/wm/PersisterQueue;->yieldIfQueueTooDeep()V
+HSPLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;)V
+HSPLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;-><init>(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$1;)V
+PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->getDisplayRotation()I
+PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->reportBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->resetBoundsAnimation(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;->startAnimation(Landroid/graphics/Rect;Landroid/graphics/Rect;I)V
+HSPLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedStackController;)V
+HSPLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;-><init>(Lcom/android/server/wm/PinnedStackController;Lcom/android/server/wm/PinnedStackController$1;)V
+PLcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;->binderDied()V
 HSPLcom/android/server/wm/PinnedStackController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/PinnedStackController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/PinnedStackController;->access$1000(Lcom/android/server/wm/PinnedStackController;)Lcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;
+PLcom/android/server/wm/PinnedStackController;->access$300(Lcom/android/server/wm/PinnedStackController;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/PinnedStackController;->access$400(Lcom/android/server/wm/PinnedStackController;)Landroid/view/DisplayInfo;
+PLcom/android/server/wm/PinnedStackController;->access$500(Lcom/android/server/wm/PinnedStackController;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/PinnedStackController;->access$600(Lcom/android/server/wm/PinnedStackController;)Landroid/graphics/Rect;
+PLcom/android/server/wm/PinnedStackController;->access$700(Lcom/android/server/wm/PinnedStackController;)Landroid/graphics/Rect;
+PLcom/android/server/wm/PinnedStackController;->access$700(Lcom/android/server/wm/PinnedStackController;)Landroid/view/IPinnedStackListener;
+PLcom/android/server/wm/PinnedStackController;->access$702(Lcom/android/server/wm/PinnedStackController;Landroid/view/IPinnedStackListener;)Landroid/view/IPinnedStackListener;
+PLcom/android/server/wm/PinnedStackController;->access$800(Lcom/android/server/wm/PinnedStackController;)Lcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;
+PLcom/android/server/wm/PinnedStackController;->access$900(Lcom/android/server/wm/PinnedStackController;)Landroid/view/IPinnedStackListener;
+PLcom/android/server/wm/PinnedStackController;->access$902(Lcom/android/server/wm/PinnedStackController;Landroid/view/IPinnedStackListener;)Landroid/view/IPinnedStackListener;
+HSPLcom/android/server/wm/PinnedStackController;->dpToPx(FLandroid/util/DisplayMetrics;)I
+HSPLcom/android/server/wm/PinnedStackController;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/PinnedStackController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 PLcom/android/server/wm/PinnedStackController;->getAspectRatio()F
 HSPLcom/android/server/wm/PinnedStackController;->getDefaultBounds(F)Landroid/graphics/Rect;
-PLcom/android/server/wm/PinnedStackController;->getDefaultOrLastSavedBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/PinnedStackController;->getInsetBounds(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;)Landroid/graphics/Rect;
-HSPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;ZZ)Landroid/graphics/Rect;
-HSPLcom/android/server/wm/PinnedStackController;->isValidPictureInPictureAspectRatio(F)Z
-HSPLcom/android/server/wm/PinnedStackController;->notifyActionsChanged(Ljava/util/List;)V
-HSPLcom/android/server/wm/PinnedStackController;->notifyImeVisibilityChanged(ZI)V
-HSPLcom/android/server/wm/PinnedStackController;->notifyMinimizeChanged(Z)V
+HSPLcom/android/server/wm/PinnedStackController;->getMovementBounds(Landroid/graphics/Rect;Z)Landroid/graphics/Rect;
+PLcom/android/server/wm/PinnedStackController;->isSameDimensionAndRotation(Landroid/view/DisplayInfo;Landroid/view/DisplayInfo;)Z
+PLcom/android/server/wm/PinnedStackController;->isValidPictureInPictureAspectRatio(F)Z
+PLcom/android/server/wm/PinnedStackController;->notifyActionsChanged(Ljava/util/List;)V
+PLcom/android/server/wm/PinnedStackController;->notifyAspectRatioChanged(F)V
+HSPLcom/android/server/wm/PinnedStackController;->notifyDisplayInfoChanged(Landroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/PinnedStackController;->notifyImeVisibilityChanged(ZI)V
+PLcom/android/server/wm/PinnedStackController;->notifyMinimizeChanged(Z)V
 HSPLcom/android/server/wm/PinnedStackController;->notifyMovementBoundsChanged(ZZ)V
-HSPLcom/android/server/wm/PinnedStackController;->notifyShelfVisibilityChanged(ZI)V
+PLcom/android/server/wm/PinnedStackController;->notifyPrepareAnimation(Landroid/graphics/Rect;FLandroid/graphics/Rect;)V
 HSPLcom/android/server/wm/PinnedStackController;->onConfigurationChanged()V
 HSPLcom/android/server/wm/PinnedStackController;->onDisplayInfoChanged(Landroid/view/DisplayInfo;)V
 PLcom/android/server/wm/PinnedStackController;->onTaskStackBoundsChanged(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/PinnedStackController;->registerPinnedStackListener(Landroid/view/IPinnedStackListener;)V
+PLcom/android/server/wm/PinnedStackController;->prepareAnimation(Landroid/graphics/Rect;FLandroid/graphics/Rect;)V
+PLcom/android/server/wm/PinnedStackController;->registerPinnedStackListener(Landroid/view/IPinnedStackListener;)V
 HSPLcom/android/server/wm/PinnedStackController;->reloadResources()V
-HSPLcom/android/server/wm/PinnedStackController;->resetReentrySnapFraction(Lcom/android/server/wm/AppWindowToken;)V
-PLcom/android/server/wm/PinnedStackController;->saveReentrySnapFraction(Lcom/android/server/wm/AppWindowToken;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/PinnedStackController;->resetReentryBounds(Landroid/content/ComponentName;)V
+PLcom/android/server/wm/PinnedStackController;->saveReentryBounds(Landroid/content/ComponentName;Landroid/graphics/Rect;)V
 PLcom/android/server/wm/PinnedStackController;->setActions(Ljava/util/List;)V
 HSPLcom/android/server/wm/PinnedStackController;->setAdjustedForIme(ZI)V
-PLcom/android/server/wm/PinnedStackController;->setAdjustedForShelf(ZI)V
 PLcom/android/server/wm/PinnedStackController;->setAspectRatio(F)V
-HSPLcom/android/server/wm/PinnedStackController;->transformBoundsToAspectRatio(Landroid/graphics/Rect;FZ)Landroid/graphics/Rect;
-PLcom/android/server/wm/PinnedStackController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/PinnedStackController;->setDisplayInfo(Landroid/view/DisplayInfo;)V
+HSPLcom/android/server/wm/PointerEventDispatcher;-><init>(Landroid/view/InputChannel;)V
 PLcom/android/server/wm/PointerEventDispatcher;->dispose()V
-HSPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V
+HPLcom/android/server/wm/PointerEventDispatcher;->onInputEvent(Landroid/view/InputEvent;)V
 HSPLcom/android/server/wm/PointerEventDispatcher;->registerInputEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
+PLcom/android/server/wm/PointerEventDispatcher;->unregisterInputEventListener(Landroid/view/WindowManagerPolicyConstants$PointerEventListener;)V
+PLcom/android/server/wm/PolicyControl;->disableImmersiveConfirmation(Ljava/lang/String;)Z
+PLcom/android/server/wm/PolicyControl;->dump(Ljava/lang/String;Lcom/android/server/wm/PolicyControl$Filter;Ljava/lang/String;Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/PolicyControl;->dump(Ljava/lang/String;Ljava/io/PrintWriter;)V
 HSPLcom/android/server/wm/PolicyControl;->getSystemUiVisibility(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)I
 HSPLcom/android/server/wm/PolicyControl;->getWindowFlags(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;)I
 HSPLcom/android/server/wm/PolicyControl;->reloadFromSetting(Landroid/content/Context;)Z
-HSPLcom/android/server/wm/RecentTasks$1;->onPointerEvent(Landroid/view/MotionEvent;)V
+HSPLcom/android/server/wm/ProtoLogGroup;-><clinit>()V
+HSPLcom/android/server/wm/ProtoLogGroup;-><init>(Ljava/lang/String;IZZZLjava/lang/String;)V
+HSPLcom/android/server/wm/ProtoLogGroup;->getTag()Ljava/lang/String;
+PLcom/android/server/wm/ProtoLogGroup;->isEnabled()Z
+PLcom/android/server/wm/ProtoLogGroup;->isLogToAny()Z
+HSPLcom/android/server/wm/ProtoLogGroup;->isLogToLogcat()Z
+HSPLcom/android/server/wm/ProtoLogGroup;->isLogToProto()Z
+HSPLcom/android/server/wm/ProtoLogGroup;->values()[Lcom/android/server/wm/ProtoLogGroup;
+HSPLcom/android/server/wm/RecentTasks$1;-><init>(Lcom/android/server/wm/RecentTasks;)V
+HPLcom/android/server/wm/RecentTasks$1;->lambda$onPointerEvent$0$RecentTasks$1(IIILjava/lang/Object;)V
+HPLcom/android/server/wm/RecentTasks$1;->onPointerEvent(Landroid/view/MotionEvent;)V
+HSPLcom/android/server/wm/RecentTasks;-><clinit>()V
 HSPLcom/android/server/wm/RecentTasks;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;)V
-HSPLcom/android/server/wm/RecentTasks;->add(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/RecentTasks;->cleanupDisabledPackageTasksLocked(Ljava/lang/String;Ljava/util/Set;I)V
-HSPLcom/android/server/wm/RecentTasks;->cleanupLocked(I)V
+HPLcom/android/server/wm/RecentTasks;->access$000(Lcom/android/server/wm/RecentTasks;)Z
+PLcom/android/server/wm/RecentTasks;->access$100(Lcom/android/server/wm/RecentTasks;)Lcom/android/server/wm/ActivityTaskManagerService;
+HSPLcom/android/server/wm/RecentTasks;->add(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RecentTasks;->cleanupDisabledPackageTasksLocked(Ljava/lang/String;Ljava/util/Set;I)V
+PLcom/android/server/wm/RecentTasks;->cleanupLocked(I)V
 HSPLcom/android/server/wm/RecentTasks;->containsTaskId(II)Z
-PLcom/android/server/wm/RecentTasks;->createRecentTaskInfo(Lcom/android/server/wm/TaskRecord;)Landroid/app/ActivityManager$RecentTaskInfo;
-PLcom/android/server/wm/RecentTasks;->dump(Ljava/io/PrintWriter;ZLjava/lang/String;)V
-HSPLcom/android/server/wm/RecentTasks;->findRemoveIndexForAddTask(Lcom/android/server/wm/TaskRecord;)I
-PLcom/android/server/wm/RecentTasks;->getAppTasksList(ILjava/lang/String;)Ljava/util/ArrayList;
+HPLcom/android/server/wm/RecentTasks;->createRecentTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$RecentTaskInfo;
+HPLcom/android/server/wm/RecentTasks;->dump(Ljava/io/PrintWriter;ZLjava/lang/String;)V
+HSPLcom/android/server/wm/RecentTasks;->findRemoveIndexForAddTask(Lcom/android/server/wm/Task;)I
+HPLcom/android/server/wm/RecentTasks;->getAppTasksList(ILjava/lang/String;)Ljava/util/ArrayList;
 HSPLcom/android/server/wm/RecentTasks;->getCurrentProfileIds()[I
 HSPLcom/android/server/wm/RecentTasks;->getInputListener()Landroid/view/WindowManagerPolicyConstants$PointerEventListener;
-HSPLcom/android/server/wm/RecentTasks;->getPersistableTaskIds(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/RecentTasks;->getProfileIds(I)Ljava/util/Set;
-PLcom/android/server/wm/RecentTasks;->getRecentTaskIds()Landroid/util/SparseBooleanArray;
-PLcom/android/server/wm/RecentTasks;->getRecentTasks(IIZZII)Landroid/content/pm/ParceledListSlice;
-PLcom/android/server/wm/RecentTasks;->getRecentTasksImpl(IIZZII)Ljava/util/ArrayList;
+HPLcom/android/server/wm/RecentTasks;->getPersistableTaskIds(Landroid/util/ArraySet;)V
+HPLcom/android/server/wm/RecentTasks;->getProfileIds(I)Ljava/util/Set;
+HPLcom/android/server/wm/RecentTasks;->getRecentTaskIds()Landroid/util/SparseBooleanArray;
+HPLcom/android/server/wm/RecentTasks;->getRecentTasks(IIZZII)Landroid/content/pm/ParceledListSlice;
+HPLcom/android/server/wm/RecentTasks;->getRecentTasksImpl(IIZZII)Ljava/util/ArrayList;
 PLcom/android/server/wm/RecentTasks;->getRecentsComponent()Landroid/content/ComponentName;
 PLcom/android/server/wm/RecentTasks;->getRecentsComponentUid()I
-HSPLcom/android/server/wm/RecentTasks;->getTask(I)Lcom/android/server/wm/TaskRecord;
+HSPLcom/android/server/wm/RecentTasks;->getTask(I)Lcom/android/server/wm/Task;
 PLcom/android/server/wm/RecentTasks;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap;
-HSPLcom/android/server/wm/RecentTasks;->getTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
+HPLcom/android/server/wm/RecentTasks;->getTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
 HSPLcom/android/server/wm/RecentTasks;->getUserInfo(I)Landroid/content/pm/UserInfo;
-HSPLcom/android/server/wm/RecentTasks;->hasCompatibleActivityTypeAndWindowingMode(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/TaskRecord;)Z
-HSPLcom/android/server/wm/RecentTasks;->isActiveRecentTask(Lcom/android/server/wm/TaskRecord;Landroid/util/SparseBooleanArray;)Z
+HPLcom/android/server/wm/RecentTasks;->hasCompatibleActivityTypeAndWindowingMode(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/RecentTasks;->isActiveRecentTask(Lcom/android/server/wm/Task;Landroid/util/SparseBooleanArray;)Z
 HSPLcom/android/server/wm/RecentTasks;->isCallerRecents(I)Z
-HSPLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/TaskRecord;IZ)Z
-HSPLcom/android/server/wm/RecentTasks;->isRecentsComponent(Landroid/content/ComponentName;I)Z
+PLcom/android/server/wm/RecentTasks;->isFreezeTaskListReorderingSet()Z
+HPLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/Task;IIZ)Z
+HPLcom/android/server/wm/RecentTasks;->isRecentsComponent(Landroid/content/ComponentName;I)Z
 HSPLcom/android/server/wm/RecentTasks;->isRecentsComponentHomeActivity(I)Z
-PLcom/android/server/wm/RecentTasks;->isTrimmable(Lcom/android/server/wm/TaskRecord;)Z
+HPLcom/android/server/wm/RecentTasks;->isTrimmable(Lcom/android/server/wm/Task;)Z
 PLcom/android/server/wm/RecentTasks;->isUserRunning(II)Z
-HSPLcom/android/server/wm/RecentTasks;->isVisibleRecentTask(Lcom/android/server/wm/TaskRecord;)Z
+HSPLcom/android/server/wm/RecentTasks;->isVisibleRecentTask(Lcom/android/server/wm/Task;)Z
 HSPLcom/android/server/wm/RecentTasks;->loadParametersFromResources(Landroid/content/res/Resources;)V
 HSPLcom/android/server/wm/RecentTasks;->loadPersistedTaskIdsForUserLocked(I)V
 HSPLcom/android/server/wm/RecentTasks;->loadRecentsComponent(Landroid/content/res/Resources;)V
-HSPLcom/android/server/wm/RecentTasks;->loadUserRecentsLocked(I)V
-HSPLcom/android/server/wm/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/wm/TaskRecord;Z)V
+HPLcom/android/server/wm/RecentTasks;->loadUserRecentsLocked(I)V
+HSPLcom/android/server/wm/RecentTasks;->notifyTaskAdded(Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/RecentTasks;->notifyTaskPersisterLocked(Lcom/android/server/wm/Task;Z)V
+HPLcom/android/server/wm/RecentTasks;->notifyTaskRemoved(Lcom/android/server/wm/Task;ZZ)V
+PLcom/android/server/wm/RecentTasks;->onLockTaskModeStateChanged(II)V
+HPLcom/android/server/wm/RecentTasks;->onPackagesSuspendedChanged([Ljava/lang/String;ZI)V
 HSPLcom/android/server/wm/RecentTasks;->onSystemReadyLocked()V
-HSPLcom/android/server/wm/RecentTasks;->processNextAffiliateChainLocked(I)I
+PLcom/android/server/wm/RecentTasks;->processNextAffiliateChainLocked(I)I
 HSPLcom/android/server/wm/RecentTasks;->registerCallback(Lcom/android/server/wm/RecentTasks$Callbacks;)V
-HSPLcom/android/server/wm/RecentTasks;->remove(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/RecentTasks;->removeTasksByPackageName(Ljava/lang/String;I)V
-PLcom/android/server/wm/RecentTasks;->resetFreezeTaskListReordering(Lcom/android/server/wm/TaskRecord;)V
+HPLcom/android/server/wm/RecentTasks;->remove(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RecentTasks;->removeAllVisibleTasks(I)V
+HSPLcom/android/server/wm/RecentTasks;->removeForAddTask(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RecentTasks;->removeTasksByPackageName(Ljava/lang/String;I)V
+PLcom/android/server/wm/RecentTasks;->removeTasksForUserLocked(I)V
+PLcom/android/server/wm/RecentTasks;->removeUnreachableHiddenTasks(I)V
+HPLcom/android/server/wm/RecentTasks;->resetFreezeTaskListReordering(Lcom/android/server/wm/Task;)V
 PLcom/android/server/wm/RecentTasks;->resetFreezeTaskListReorderingOnTimeout()V
-HSPLcom/android/server/wm/RecentTasks;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
-PLcom/android/server/wm/RecentTasks;->syncPersistentTaskIdsLocked()V
+PLcom/android/server/wm/RecentTasks;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
+PLcom/android/server/wm/RecentTasks;->setFreezeTaskListReordering()V
+HPLcom/android/server/wm/RecentTasks;->shouldPersistTaskLocked(Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/RecentTasks;->syncPersistentTaskIdsLocked()V
 HSPLcom/android/server/wm/RecentTasks;->trimInactiveRecentTasks()V
-HSPLcom/android/server/wm/RecentTasks;->usersWithRecentsLoadedLocked()[I
-PLcom/android/server/wm/RecentsAnimation$2;->canHandleReceivedAssistDataLocked()Z
-PLcom/android/server/wm/RecentsAnimation$2;->onAssistDataReceivedLocked(Landroid/os/Bundle;II)V
-PLcom/android/server/wm/RecentsAnimation;->finishAnimation(I)V
-PLcom/android/server/wm/RecentsAnimation;->getTargetActivity(Lcom/android/server/wm/ActivityStack;Landroid/content/ComponentName;)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/RecentsAnimation;->lambda$finishAnimation$1$RecentsAnimation()V
-PLcom/android/server/wm/RecentsAnimation;->lambda$finishAnimation$2$RecentsAnimation(I)V
-PLcom/android/server/wm/RecentsAnimation;->lambda$startRecentsActivity$0$RecentsAnimation()V
+PLcom/android/server/wm/RecentTasks;->unloadUserDataFromMemoryLocked(I)V
+HPLcom/android/server/wm/RecentTasks;->usersWithRecentsLoadedLocked()[I
+PLcom/android/server/wm/RecentsAnimation;-><clinit>()V
+HPLcom/android/server/wm/RecentsAnimation;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityStartController;Lcom/android/server/wm/WindowManagerService;Landroid/content/Intent;Landroid/content/ComponentName;ILcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/RecentsAnimation;->finishAnimation(IZ)V
+HPLcom/android/server/wm/RecentsAnimation;->getTargetActivity(Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/RecentsAnimation;->getTopNonAlwaysOnTopStack()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/RecentsAnimation;->lambda$L-oo1O0uvOIOr4MDh9QYSeVU09U(Lcom/android/server/wm/RecentsAnimation;Lcom/android/server/wm/Task;)Z
+HPLcom/android/server/wm/RecentsAnimation;->lambda$finishAnimation$0$RecentsAnimation(IZLcom/android/server/wm/RecentsAnimationController;)V
+HPLcom/android/server/wm/RecentsAnimation;->matchesTarget(Lcom/android/server/wm/Task;)Z
 PLcom/android/server/wm/RecentsAnimation;->notifyAnimationCancelBeforeStart(Landroid/view/IRecentsAnimationRunner;)V
 PLcom/android/server/wm/RecentsAnimation;->onAnimationFinished(IZ)V
 PLcom/android/server/wm/RecentsAnimation;->onStackOrderChanged(Lcom/android/server/wm/ActivityStack;)V
-PLcom/android/server/wm/RecentsAnimation;->requestAssistData(Landroid/content/ComponentName;ILandroid/app/IAssistDataReceiver;)V
-PLcom/android/server/wm/RecentsAnimation;->startRecentsActivity(Landroid/content/Intent;Landroid/view/IRecentsAnimationRunner;Landroid/content/ComponentName;ILandroid/app/IAssistDataReceiver;)V
+PLcom/android/server/wm/RecentsAnimation;->preloadRecentsActivity()V
+HPLcom/android/server/wm/RecentsAnimation;->startRecentsActivity(Landroid/view/IRecentsAnimationRunner;)V
+PLcom/android/server/wm/RecentsAnimation;->startRecentsActivityInBackground(Ljava/lang/String;)V
+HPLcom/android/server/wm/RecentsAnimationController$1;-><init>(Lcom/android/server/wm/RecentsAnimationController;)V
+PLcom/android/server/wm/RecentsAnimationController$1;->continueDeferredCancel()V
+PLcom/android/server/wm/RecentsAnimationController$1;->onAppTransitionCancelledLocked(I)V
 PLcom/android/server/wm/RecentsAnimationController$1;->onAppTransitionStartingLocked(IJJJ)I
-PLcom/android/server/wm/RecentsAnimationController$2;->finish(Z)V
-PLcom/android/server/wm/RecentsAnimationController$2;->hideCurrentInputMethod()V
-PLcom/android/server/wm/RecentsAnimationController$2;->screenshotTask(I)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/RecentsAnimationController$2;->setAnimationTargetsBehindSystemBars(Z)V
-PLcom/android/server/wm/RecentsAnimationController$2;->setCancelWithDeferredScreenshot(Z)V
-PLcom/android/server/wm/RecentsAnimationController$2;->setInputConsumerEnabled(Z)V
-PLcom/android/server/wm/RecentsAnimationController$2;->setSplitScreenMinimized(Z)V
-PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;-><init>(Lcom/android/server/wm/RecentsAnimationController;Lcom/android/server/wm/Task;Z)V
-PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->createRemoteAnimationApp()Landroid/view/RemoteAnimationTarget;
-PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-PLcom/android/server/wm/RecentsAnimationController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRecentsAnimationRunner;Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;I)V
-PLcom/android/server/wm/RecentsAnimationController;->addAnimation(Lcom/android/server/wm/Task;Z)Lcom/android/server/wm/AnimationAdapter;
-PLcom/android/server/wm/RecentsAnimationController;->cancelAnimation(IZZLjava/lang/String;)V
-PLcom/android/server/wm/RecentsAnimationController;->cancelAnimationSynchronously(ILjava/lang/String;)V
-PLcom/android/server/wm/RecentsAnimationController;->checkAnimationReady(Lcom/android/server/wm/WallpaperController;)V
-PLcom/android/server/wm/RecentsAnimationController;->cleanupAnimation(I)V
-PLcom/android/server/wm/RecentsAnimationController;->initialize(ILandroid/util/SparseBooleanArray;)V
-PLcom/android/server/wm/RecentsAnimationController;->initialize(Lcom/android/server/wm/DisplayContent;ILandroid/util/SparseBooleanArray;)V
-PLcom/android/server/wm/RecentsAnimationController;->isAnimatingApp(Lcom/android/server/wm/AppWindowToken;)Z
-PLcom/android/server/wm/RecentsAnimationController;->isAnimatingTask(Lcom/android/server/wm/Task;)Z
-PLcom/android/server/wm/RecentsAnimationController;->isTargetApp(Lcom/android/server/wm/AppWindowToken;)Z
-PLcom/android/server/wm/RecentsAnimationController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
-PLcom/android/server/wm/RecentsAnimationController;->onTransitionStart()V
-PLcom/android/server/wm/RecentsAnimationController;->removeAnimation(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)V
+HPLcom/android/server/wm/RecentsAnimationController$2;-><init>(Lcom/android/server/wm/RecentsAnimationController;)V
+PLcom/android/server/wm/RecentsAnimationController$2;->cleanupScreenshot()V
+HPLcom/android/server/wm/RecentsAnimationController$2;->finish(ZZ)V
+HPLcom/android/server/wm/RecentsAnimationController$2;->hideCurrentInputMethod()V
+HPLcom/android/server/wm/RecentsAnimationController$2;->screenshotTask(I)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/RecentsAnimationController$2;->setAnimationTargetsBehindSystemBars(Z)V
+PLcom/android/server/wm/RecentsAnimationController$2;->setDeferCancelUntilNextTransition(ZZ)V
+HPLcom/android/server/wm/RecentsAnimationController$2;->setInputConsumerEnabled(Z)V
+HPLcom/android/server/wm/RecentsAnimationController$2;->setSplitScreenMinimized(Z)V
+PLcom/android/server/wm/RecentsAnimationController$2;->setWillFinishToHome(Z)V
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;-><init>(Lcom/android/server/wm/RecentsAnimationController;Lcom/android/server/wm/Task;Z)V
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->access$1200(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)I
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->access$1200(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->access$1300(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->access$600(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->createRemoteAnimationTarget()Landroid/view/RemoteAnimationTarget;
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->getDurationHint()J
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->getShowWallpaper()Z
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->getStatusBarTransitionsStartTime()J
+PLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+PLcom/android/server/wm/RecentsAnimationController;-><clinit>()V
+HPLcom/android/server/wm/RecentsAnimationController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRecentsAnimationRunner;Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;I)V
+HPLcom/android/server/wm/RecentsAnimationController;->access$000(Lcom/android/server/wm/RecentsAnimationController;)Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/RecentsAnimationController;->access$100(Lcom/android/server/wm/RecentsAnimationController;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->access$1002(Lcom/android/server/wm/RecentsAnimationController;Z)Z
+PLcom/android/server/wm/RecentsAnimationController;->access$1102(Lcom/android/server/wm/RecentsAnimationController;Z)Z
+HPLcom/android/server/wm/RecentsAnimationController;->access$1300(Lcom/android/server/wm/RecentsAnimationController;)Landroid/graphics/Rect;
+PLcom/android/server/wm/RecentsAnimationController;->access$1400(Lcom/android/server/wm/RecentsAnimationController;)Landroid/graphics/Rect;
+PLcom/android/server/wm/RecentsAnimationController;->access$200(Lcom/android/server/wm/RecentsAnimationController;)Z
+PLcom/android/server/wm/RecentsAnimationController;->access$202(Lcom/android/server/wm/RecentsAnimationController;Z)Z
+PLcom/android/server/wm/RecentsAnimationController;->access$300(Lcom/android/server/wm/RecentsAnimationController;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->access$400(Lcom/android/server/wm/RecentsAnimationController;)Lcom/android/server/wm/WindowManagerService;
+HPLcom/android/server/wm/RecentsAnimationController;->access$500(Lcom/android/server/wm/RecentsAnimationController;)Ljava/util/ArrayList;
+PLcom/android/server/wm/RecentsAnimationController;->access$700(Lcom/android/server/wm/RecentsAnimationController;)Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;
+HPLcom/android/server/wm/RecentsAnimationController;->access$800(Lcom/android/server/wm/RecentsAnimationController;)I
+HPLcom/android/server/wm/RecentsAnimationController;->access$902(Lcom/android/server/wm/RecentsAnimationController;Z)Z
+HPLcom/android/server/wm/RecentsAnimationController;->addAnimation(Lcom/android/server/wm/Task;Z)Lcom/android/server/wm/AnimationAdapter;
+PLcom/android/server/wm/RecentsAnimationController;->binderDied()V
+HPLcom/android/server/wm/RecentsAnimationController;->cancelAnimation(ILjava/lang/String;)V
+HPLcom/android/server/wm/RecentsAnimationController;->cancelAnimation(IZLjava/lang/String;)V
+PLcom/android/server/wm/RecentsAnimationController;->cancelAnimationWithScreenshot(Z)V
+HPLcom/android/server/wm/RecentsAnimationController;->checkAnimationReady(Lcom/android/server/wm/WallpaperController;)V
+HPLcom/android/server/wm/RecentsAnimationController;->cleanupAnimation(I)V
+HPLcom/android/server/wm/RecentsAnimationController;->createAppAnimations()[Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/RecentsAnimationController;->createWallpaperAnimations()[Landroid/view/RemoteAnimationTarget;
+PLcom/android/server/wm/RecentsAnimationController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/RecentsAnimationController;->initialize(ILandroid/util/SparseBooleanArray;Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/RecentsAnimationController;->isAnimatingApp(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->isAnimatingTask(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/RecentsAnimationController;->isSplitScreenMinimized()Z
+HPLcom/android/server/wm/RecentsAnimationController;->isTargetApp(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->isTargetOverWallpaper()Z
+HPLcom/android/server/wm/RecentsAnimationController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/RecentsAnimationController;->lambda$createWallpaperAnimations$3$RecentsAnimationController(Lcom/android/server/wm/WallpaperAnimationAdapter;)V
+HPLcom/android/server/wm/RecentsAnimationController;->lambda$initialize$1(Lcom/android/server/wm/Task;Ljava/util/ArrayList;)V
+HPLcom/android/server/wm/RecentsAnimationController;->lambda$isAnimatingApp$5(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Ljava/lang/Boolean;
+PLcom/android/server/wm/RecentsAnimationController;->lambda$new$0$RecentsAnimationController()V
+PLcom/android/server/wm/RecentsAnimationController;->lambda$screenshotRecentTask$4$RecentsAnimationController(I)V
+PLcom/android/server/wm/RecentsAnimationController;->linkToDeathOfRunner()V
+HPLcom/android/server/wm/RecentsAnimationController;->removeAnimation(Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;)V
+HPLcom/android/server/wm/RecentsAnimationController;->removeWallpaperAnimation(Lcom/android/server/wm/WallpaperAnimationAdapter;)V
 PLcom/android/server/wm/RecentsAnimationController;->scheduleFailsafe()V
-PLcom/android/server/wm/RecentsAnimationController;->setCancelWithDeferredScreenshotLocked(Z)V
-PLcom/android/server/wm/RecentsAnimationController;->shouldApplyInputConsumer(Lcom/android/server/wm/AppWindowToken;)Z
-PLcom/android/server/wm/RecentsAnimationController;->shouldCancelWithDeferredScreenshot()Z
-PLcom/android/server/wm/RecentsAnimationController;->startAnimation()V
-PLcom/android/server/wm/RecentsAnimationController;->updateInputConsumerForApp(Landroid/view/InputWindowHandle;Z)Z
-PLcom/android/server/wm/RemoteAnimationController$FinishedCallback;->onAnimationFinished()V
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;-><init>(Lcom/android/server/wm/RemoteAnimationController;Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;Landroid/graphics/Point;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getBackgroundColor()I
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getDurationHint()J
+PLcom/android/server/wm/RecentsAnimationController;->screenshotRecentTask(Lcom/android/server/wm/Task;I)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/RecentsAnimationController;->setCancelOnNextTransitionStart()V
+PLcom/android/server/wm/RecentsAnimationController;->setDeferredCancel(ZZ)V
+HPLcom/android/server/wm/RecentsAnimationController;->shouldApplyInputConsumer(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->shouldDeferCancelUntilNextTransition()Z
+PLcom/android/server/wm/RecentsAnimationController;->shouldDeferCancelWithScreenshot()Z
+HPLcom/android/server/wm/RecentsAnimationController;->shouldIgnoreForAccessibility(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/RecentsAnimationController;->startAnimation()V
+HPLcom/android/server/wm/RecentsAnimationController;->unlinkToDeathOfRunner()V
+HSPLcom/android/server/wm/RefreshRatePolicy;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/DisplayInfo;Lcom/android/server/wm/HighRefreshRateBlacklist;)V
+HPLcom/android/server/wm/RefreshRatePolicy;->addNonHighRefreshRatePackage(Ljava/lang/String;)V
+HSPLcom/android/server/wm/RefreshRatePolicy;->calculatePriority(Lcom/android/server/wm/WindowState;)I
+HSPLcom/android/server/wm/RefreshRatePolicy;->findLowRefreshRateModeId(Landroid/view/DisplayInfo;)I
+HSPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I
+HPLcom/android/server/wm/RefreshRatePolicy;->removeNonHighRefreshRatePackage(Ljava/lang/String;)V
+HPLcom/android/server/wm/RemoteAnimationController$FinishedCallback;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
+HPLcom/android/server/wm/RemoteAnimationController$FinishedCallback;->onAnimationFinished()V
+HPLcom/android/server/wm/RemoteAnimationController$FinishedCallback;->release()V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;-><init>(Lcom/android/server/wm/RemoteAnimationController;Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;Landroid/graphics/Point;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->access$000(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->access$100(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;)I
+PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getDurationHint()J
 PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getShowWallpaper()Z
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getStatusBarTransitionsStartTime()J
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;-><init>(Lcom/android/server/wm/RemoteAnimationController;Lcom/android/server/wm/AppWindowToken;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;->createRemoteAnimationTarget()Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->getStatusBarTransitionsStartTime()J
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;-><init>(Lcom/android/server/wm/RemoteAnimationController;Lcom/android/server/wm/WindowContainer;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;->createRemoteAnimationTarget()Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;->getMode()I
+HPLcom/android/server/wm/RemoteAnimationController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/RemoteAnimationAdapter;Landroid/os/Handler;)V
+HPLcom/android/server/wm/RemoteAnimationController;->access$100(Lcom/android/server/wm/RemoteAnimationController;)V
+PLcom/android/server/wm/RemoteAnimationController;->access$200(Lcom/android/server/wm/RemoteAnimationController;)V
+HPLcom/android/server/wm/RemoteAnimationController;->access$300(Lcom/android/server/wm/RemoteAnimationController;)Landroid/view/RemoteAnimationAdapter;
+PLcom/android/server/wm/RemoteAnimationController;->access$400(Lcom/android/server/wm/RemoteAnimationController;)Landroid/view/RemoteAnimationAdapter;
+PLcom/android/server/wm/RemoteAnimationController;->access$400(Lcom/android/server/wm/RemoteAnimationController;)Ljava/util/ArrayList;
+PLcom/android/server/wm/RemoteAnimationController;->access$500(Lcom/android/server/wm/RemoteAnimationController;)Ljava/util/ArrayList;
 PLcom/android/server/wm/RemoteAnimationController;->binderDied()V
 PLcom/android/server/wm/RemoteAnimationController;->cancelAnimation(Ljava/lang/String;)V
-PLcom/android/server/wm/RemoteAnimationController;->createAnimations()[Landroid/view/RemoteAnimationTarget;
-PLcom/android/server/wm/RemoteAnimationController;->createRemoteAnimationRecord(Lcom/android/server/wm/AppWindowToken;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;
-PLcom/android/server/wm/RemoteAnimationController;->goodToGo()V
+HPLcom/android/server/wm/RemoteAnimationController;->createAppAnimations()[Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/RemoteAnimationController;->createRemoteAnimationRecord(Lcom/android/server/wm/WindowContainer;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;
+HPLcom/android/server/wm/RemoteAnimationController;->createWallpaperAnimations()[Landroid/view/RemoteAnimationTarget;
+HPLcom/android/server/wm/RemoteAnimationController;->goodToGo()V
 PLcom/android/server/wm/RemoteAnimationController;->invokeAnimationCancelled()V
-PLcom/android/server/wm/RemoteAnimationController;->lambda$goodToGo$1$RemoteAnimationController([Landroid/view/RemoteAnimationTarget;)V
+HPLcom/android/server/wm/RemoteAnimationController;->lambda$createWallpaperAnimations$2$RemoteAnimationController(Lcom/android/server/wm/WallpaperAnimationAdapter;)V
+HPLcom/android/server/wm/RemoteAnimationController;->lambda$goodToGo$1$RemoteAnimationController([Landroid/view/RemoteAnimationTarget;[Landroid/view/RemoteAnimationTarget;)V
 PLcom/android/server/wm/RemoteAnimationController;->lambda$new$0$RemoteAnimationController()V
-PLcom/android/server/wm/RemoteAnimationController;->onAnimationFinished()V
-HSPLcom/android/server/wm/RootActivityContainer$FindTaskResult;->clear()V
+HPLcom/android/server/wm/RemoteAnimationController;->linkToDeathOfRunner()V
+HPLcom/android/server/wm/RemoteAnimationController;->onAnimationFinished()V
+HPLcom/android/server/wm/RemoteAnimationController;->releaseFinishedCallback()V
+HPLcom/android/server/wm/RemoteAnimationController;->setRunningRemoteAnimation(Z)V
+HPLcom/android/server/wm/RemoteAnimationController;->unlinkToDeathOfRunner()V
+HSPLcom/android/server/wm/ResetTargetTaskHelper;-><init>()V
+PLcom/android/server/wm/ResetTargetTaskHelper;->finishActivities(Ljava/util/ArrayList;Ljava/lang/String;)V
+HPLcom/android/server/wm/ResetTargetTaskHelper;->lambda$APiSnEpUwnLFg5o4cp87NyJw4j4(Lcom/android/server/wm/ResetTargetTaskHelper;Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ResetTargetTaskHelper;->lambda$O-Gmp4WswvLHsJ0Qd1g0pv2tF14(Lcom/android/server/wm/ResetTargetTaskHelper;Lcom/android/server/wm/ActivityRecord;Z)Z
+PLcom/android/server/wm/ResetTargetTaskHelper;->process(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/Task;Z)Landroid/app/ActivityOptions;
+HPLcom/android/server/wm/ResetTargetTaskHelper;->process(Lcom/android/server/wm/Task;Z)Landroid/app/ActivityOptions;
+HPLcom/android/server/wm/ResetTargetTaskHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;Z)Z
+PLcom/android/server/wm/ResetTargetTaskHelper;->processCreatedTasks()V
+HPLcom/android/server/wm/ResetTargetTaskHelper;->processPendingReparentActivities()V
+PLcom/android/server/wm/ResetTargetTaskHelper;->processResultActivities(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;IZZ)V
+HPLcom/android/server/wm/ResetTargetTaskHelper;->processTask(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/ResetTargetTaskHelper;->reset(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/ResetTargetTaskHelper;->takeOption(Lcom/android/server/wm/ActivityRecord;Z)Z
+HSPLcom/android/server/wm/RootActivityContainer$FindTaskResult;-><init>()V
+HPLcom/android/server/wm/RootActivityContainer$FindTaskResult;->apply(Lcom/android/server/wm/Task;)Ljava/lang/Boolean;
+HPLcom/android/server/wm/RootActivityContainer$FindTaskResult;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+PLcom/android/server/wm/RootActivityContainer$FindTaskResult;->clear()V
+HPLcom/android/server/wm/RootActivityContainer$FindTaskResult;->process(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack;)V
 PLcom/android/server/wm/RootActivityContainer$FindTaskResult;->setTo(Lcom/android/server/wm/RootActivityContainer$FindTaskResult;)V
-HSPLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;->release()V
-HSPLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;-><init>(Lcom/android/server/wm/RootActivityContainer;)V
+PLcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;->lambda$9-v97dlGzOZFE2uue1WUlIhpevA(Lcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;->process(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+HPLcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;->reset(Ljava/lang/String;Ljava/util/Set;ZZI)V
+PLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;-><init>(Lcom/android/server/wm/RootActivityContainer;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;->access$000(Lcom/android/server/wm/RootActivityContainer$SleepTokenImpl;)I
+PLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;->release()V
+PLcom/android/server/wm/RootActivityContainer$SleepTokenImpl;->toString()Ljava/lang/String;
 HSPLcom/android/server/wm/RootActivityContainer;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
-HSPLcom/android/server/wm/RootActivityContainer;->addChild(Lcom/android/server/wm/ActivityDisplay;I)V
-PLcom/android/server/wm/RootActivityContainer;->addStartingWindowsForVisibleActivities(Z)V
-HSPLcom/android/server/wm/RootActivityContainer;->allPausedActivitiesComplete()Z
-HSPLcom/android/server/wm/RootActivityContainer;->allResumedActivitiesIdle()Z
-HSPLcom/android/server/wm/RootActivityContainer;->allResumedActivitiesVisible()Z
-PLcom/android/server/wm/RootActivityContainer;->anyTaskForId(I)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/RootActivityContainer;->anyTaskForId(II)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/RootActivityContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/TaskRecord;
+PLcom/android/server/wm/RootActivityContainer;->access$100(Lcom/android/server/wm/RootActivityContainer;Lcom/android/server/wm/RootActivityContainer$SleepTokenImpl;)V
+HSPLcom/android/server/wm/RootActivityContainer;->addChild(Lcom/android/server/wm/DisplayContent;I)V
+PLcom/android/server/wm/RootActivityContainer;->addStartingWindowsForVisibleActivities()V
+HPLcom/android/server/wm/RootActivityContainer;->allPausedActivitiesComplete()Z
+PLcom/android/server/wm/RootActivityContainer;->allResumedActivitiesIdle()Z
+HPLcom/android/server/wm/RootActivityContainer;->allResumedActivitiesVisible()Z
+PLcom/android/server/wm/RootActivityContainer;->anyTaskForId(I)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/RootActivityContainer;->anyTaskForId(II)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/RootActivityContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/RootActivityContainer;->applySleepTokens(Z)V
 HSPLcom/android/server/wm/RootActivityContainer;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
-HSPLcom/android/server/wm/RootActivityContainer;->canStartHomeOnDisplay(Landroid/content/pm/ActivityInfo;IZ)Z
-HSPLcom/android/server/wm/RootActivityContainer;->cancelInitializingActivities()V
-PLcom/android/server/wm/RootActivityContainer;->closeSystemDialogs()V
-HSPLcom/android/server/wm/RootActivityContainer;->continueUpdateBounds(I)V
-HSPLcom/android/server/wm/RootActivityContainer;->createSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
+HSPLcom/android/server/wm/RootActivityContainer;->calculateDefaultMinimalSizeOfResizeableTasks()V
+PLcom/android/server/wm/RootActivityContainer;->canLaunchOnDisplay(Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/RootActivityContainer;->canStartHomeOnDisplay(Landroid/content/pm/ActivityInfo;IZ)Z
+HPLcom/android/server/wm/RootActivityContainer;->cancelInitializingActivities()V
+PLcom/android/server/wm/RootActivityContainer;->continueUpdateBounds(I)V
+PLcom/android/server/wm/RootActivityContainer;->createSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
 HSPLcom/android/server/wm/RootActivityContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/RootActivityContainer;->dumpActivities(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;)Z
+PLcom/android/server/wm/RootActivityContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
 HSPLcom/android/server/wm/RootActivityContainer;->dumpDisplayConfigs(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/RootActivityContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZ)V
 HSPLcom/android/server/wm/RootActivityContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZZ)V
-HSPLcom/android/server/wm/RootActivityContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;IZZ)Z
-HSPLcom/android/server/wm/RootActivityContainer;->executeAppTransitionForAllDisplay()V
+PLcom/android/server/wm/RootActivityContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;IZZ)Z
+PLcom/android/server/wm/RootActivityContainer;->executeAppTransitionForAllDisplay()V
 PLcom/android/server/wm/RootActivityContainer;->findActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/RootActivityContainer;->findTask(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/RootActivityContainer;->finishDisabledPackageActivities(Ljava/lang/String;Ljava/util/Set;ZZI)Z
-HSPLcom/android/server/wm/RootActivityContainer;->finishTopCrashedActivities(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)I
+PLcom/android/server/wm/RootActivityContainer;->findStackBehind(Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootActivityContainer;->findTask(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootActivityContainer;->finishDisabledPackageActivities(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+PLcom/android/server/wm/RootActivityContainer;->finishTopCrashedActivities(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)I
 PLcom/android/server/wm/RootActivityContainer;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
-HSPLcom/android/server/wm/RootActivityContainer;->getActivityDisplay(I)Lcom/android/server/wm/ActivityDisplay;
-HSPLcom/android/server/wm/RootActivityContainer;->getActivityDisplay(Ljava/lang/String;)Lcom/android/server/wm/ActivityDisplay;
-HSPLcom/android/server/wm/RootActivityContainer;->getActivityDisplayOrCreate(I)Lcom/android/server/wm/ActivityDisplay;
-HSPLcom/android/server/wm/RootActivityContainer;->getChildAt(I)Lcom/android/server/wm/ActivityDisplay;
 HSPLcom/android/server/wm/RootActivityContainer;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
+HSPLcom/android/server/wm/RootActivityContainer;->getChildAt(I)Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/RootActivityContainer;->getChildCount()I
-HSPLcom/android/server/wm/RootActivityContainer;->getDefaultDisplay()Lcom/android/server/wm/ActivityDisplay;
-HSPLcom/android/server/wm/RootActivityContainer;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration;
+HSPLcom/android/server/wm/RootActivityContainer;->getDefaultDisplay()Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/RootActivityContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootActivityContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootActivityContainer;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration;
 PLcom/android/server/wm/RootActivityContainer;->getDumpActivities(Ljava/lang/String;ZZ)Ljava/util/ArrayList;
-PLcom/android/server/wm/RootActivityContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;Z)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/RootActivityContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/RootActivityContainer;->getNextFocusableStack(Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/RootActivityContainer;->getRunningTasks(ILjava/util/List;IIIZ)V
-HSPLcom/android/server/wm/RootActivityContainer;->getStack(I)Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/RootActivityContainer;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo;
-HSPLcom/android/server/wm/RootActivityContainer;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
-HSPLcom/android/server/wm/RootActivityContainer;->getStackInfo(Lcom/android/server/wm/ActivityStack;)Landroid/app/ActivityManager$StackInfo;
+PLcom/android/server/wm/RootActivityContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Z)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootActivityContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;II)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootActivityContainer;->getNextFocusableStack(Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootActivityContainer;->getRunningTasks(ILjava/util/List;IIIZZLandroid/util/ArraySet;)V
+PLcom/android/server/wm/RootActivityContainer;->getStack(I)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootActivityContainer;->getStack(II)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/RootActivityContainer;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo;
+PLcom/android/server/wm/RootActivityContainer;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/wm/RootActivityContainer;->getStackInfo(Lcom/android/server/wm/ActivityStack;)Landroid/app/ActivityManager$StackInfo;
 HSPLcom/android/server/wm/RootActivityContainer;->getTopDisplayFocusedStack()Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/RootActivityContainer;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
 PLcom/android/server/wm/RootActivityContainer;->getTopVisibleActivities()Ljava/util/List;
-HSPLcom/android/server/wm/RootActivityContainer;->getValidLaunchStackOnDisplay(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/TaskRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)Lcom/android/server/wm/ActivityStack;
-PLcom/android/server/wm/RootActivityContainer;->handleAppCrash(Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/RootActivityContainer;->getValidLaunchStackOnDisplay(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/RootActivityContainer;->handleAppDied(Lcom/android/server/wm/WindowProcessController;)Z
 HSPLcom/android/server/wm/RootActivityContainer;->hasAwakeDisplay()Z
-HSPLcom/android/server/wm/RootActivityContainer;->invalidateTaskLayers()V
-HSPLcom/android/server/wm/RootActivityContainer;->isDisplayAdded(I)Z
+PLcom/android/server/wm/RootActivityContainer;->invalidateTaskLayers()V
 HSPLcom/android/server/wm/RootActivityContainer;->isFocusable(Lcom/android/server/wm/ConfigurationContainer;Z)Z
-HSPLcom/android/server/wm/RootActivityContainer;->isInAnyStack(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/RootActivityContainer;->isTopDisplayFocusedStack(Lcom/android/server/wm/ActivityStack;)Z
-HSPLcom/android/server/wm/RootActivityContainer;->isValidLaunchStack(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/RootActivityContainer;->isInAnyStack(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootActivityContainer;->isTopDisplayFocusedStack(Lcom/android/server/wm/ActivityStack;)Z
+PLcom/android/server/wm/RootActivityContainer;->isValidLaunchStack(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/RootActivityContainer;->lambda$-T1KVP2TtHv3l0Zlmfrn4vxoQQc(Lcom/android/server/wm/ActivityRecord;IZLandroid/content/Intent;Landroid/content/ComponentName;)Z
+PLcom/android/server/wm/RootActivityContainer;->lambda$addStartingWindowsForVisibleActivities$0(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootActivityContainer;->lambda$closeSystemDialogs$1(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootActivityContainer;->lambda$eTBwQBLMAzyK1I2vbgH_wbrf5n0(Lcom/android/server/wm/RootActivityContainer;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootActivityContainer;->lambda$kAsUts9ICoBFeiu2wLtN3N0jVY4(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$StackInfo;[I)V
+HPLcom/android/server/wm/RootActivityContainer;->lambda$m1XaUaXYDseEoG-rccxbUydXgO8(Lcom/android/server/wm/RootActivityContainer;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootActivityContainer;->lambda$xJQTdvTIrdue_psRt_XJNwTCmzA(Lcom/android/server/wm/ActivityRecord;Landroid/content/pm/ApplicationInfo;ILjava/lang/String;)V
+PLcom/android/server/wm/RootActivityContainer;->matchesActivity(Lcom/android/server/wm/ActivityRecord;IZLandroid/content/Intent;Landroid/content/ComponentName;)Z
 PLcom/android/server/wm/RootActivityContainer;->moveActivityToPinnedStack(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;FLjava/lang/String;)V
-HSPLcom/android/server/wm/RootActivityContainer;->onChildPositionChanged(Lcom/android/server/wm/ActivityDisplay;I)V
-PLcom/android/server/wm/RootActivityContainer;->onDisplayAdded(I)V
+PLcom/android/server/wm/RootActivityContainer;->onChildPositionChanged(Lcom/android/server/wm/DisplayContent;I)V
 HSPLcom/android/server/wm/RootActivityContainer;->onDisplayChanged(I)V
-PLcom/android/server/wm/RootActivityContainer;->onDisplayRemoved(I)V
-HSPLcom/android/server/wm/RootActivityContainer;->positionChildAt(Lcom/android/server/wm/ActivityDisplay;I)V
-HSPLcom/android/server/wm/RootActivityContainer;->putStacksToSleep(ZZ)Z
+HSPLcom/android/server/wm/RootActivityContainer;->positionChildAt(Lcom/android/server/wm/DisplayContent;I)V
+HPLcom/android/server/wm/RootActivityContainer;->processTaskForStackInfo(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$StackInfo;[I)V
+HPLcom/android/server/wm/RootActivityContainer;->putStacksToSleep(ZZ)Z
+HPLcom/android/server/wm/RootActivityContainer;->rankTaskLayerForActivity(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/RootActivityContainer;->rankTaskLayersIfNeeded()V
-PLcom/android/server/wm/RootActivityContainer;->removeChild(Lcom/android/server/wm/ActivityDisplay;)V
-HSPLcom/android/server/wm/RootActivityContainer;->removeSleepToken(Lcom/android/server/wm/RootActivityContainer$SleepTokenImpl;)V
-PLcom/android/server/wm/RootActivityContainer;->removeStacksInWindowingModes([I)V
-PLcom/android/server/wm/RootActivityContainer;->resizeStack(Lcom/android/server/wm/ActivityStack;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZZZ)V
-PLcom/android/server/wm/RootActivityContainer;->resolveActivities(ILandroid/content/Intent;)Ljava/util/List;
-HSPLcom/android/server/wm/RootActivityContainer;->resolveActivityType(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;)I
-HSPLcom/android/server/wm/RootActivityContainer;->resolveHomeActivity(ILandroid/content/Intent;)Landroid/content/pm/ActivityInfo;
-PLcom/android/server/wm/RootActivityContainer;->resolveSecondaryHomeActivity(II)Landroid/util/Pair;
-HSPLcom/android/server/wm/RootActivityContainer;->resumeFocusedStacksTopActivities()Z
-HSPLcom/android/server/wm/RootActivityContainer;->resumeFocusedStacksTopActivities(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
-HSPLcom/android/server/wm/RootActivityContainer;->resumeHomeActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
-HSPLcom/android/server/wm/RootActivityContainer;->sendPowerHintForLaunchEndIfNeeded()V
-HSPLcom/android/server/wm/RootActivityContainer;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/RootActivityContainer;->setDisplayOverrideConfiguration(Landroid/content/res/Configuration;I)V
-HSPLcom/android/server/wm/RootActivityContainer;->setDockedStackMinimized(Z)V
-HSPLcom/android/server/wm/RootActivityContainer;->setWindowContainer(Lcom/android/server/wm/RootWindowContainer;)V
+PLcom/android/server/wm/RootActivityContainer;->removeSleepToken(Lcom/android/server/wm/RootActivityContainer$SleepTokenImpl;)V
+PLcom/android/server/wm/RootActivityContainer;->resolveActivityType(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/RootActivityContainer;->resolveHomeActivity(ILandroid/content/Intent;)Landroid/content/pm/ActivityInfo;
+PLcom/android/server/wm/RootActivityContainer;->resumeFocusedStacksTopActivities()Z
+HPLcom/android/server/wm/RootActivityContainer;->resumeFocusedStacksTopActivities(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+PLcom/android/server/wm/RootActivityContainer;->resumeHomeActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
+PLcom/android/server/wm/RootActivityContainer;->sendPowerHintForLaunchEndIfNeeded()V
+PLcom/android/server/wm/RootActivityContainer;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootActivityContainer;->setDockedStackMinimized(Z)V
 HSPLcom/android/server/wm/RootActivityContainer;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/RootActivityContainer;->startHomeOnAllDisplays(ILjava/lang/String;)Z
-HSPLcom/android/server/wm/RootActivityContainer;->startHomeOnDisplay(ILjava/lang/String;I)Z
-HSPLcom/android/server/wm/RootActivityContainer;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
-HSPLcom/android/server/wm/RootActivityContainer;->startHomeOnEmptyDisplays(Ljava/lang/String;)V
+HPLcom/android/server/wm/RootActivityContainer;->startActivityForAttachedApplicationIfNeeded(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootActivityContainer;->startHomeOnAllDisplays(ILjava/lang/String;)Z
+PLcom/android/server/wm/RootActivityContainer;->startHomeOnDisplay(ILjava/lang/String;I)Z
+PLcom/android/server/wm/RootActivityContainer;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
+PLcom/android/server/wm/RootActivityContainer;->startHomeOnEmptyDisplays(Ljava/lang/String;)V
 HSPLcom/android/server/wm/RootActivityContainer;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
 PLcom/android/server/wm/RootActivityContainer;->updateActivityApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
-HSPLcom/android/server/wm/RootActivityContainer;->updatePreviousProcess(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootActivityContainer;->updateActivityApplicationInfo(Lcom/android/server/wm/ActivityRecord;Landroid/content/pm/ApplicationInfo;ILjava/lang/String;)V
+PLcom/android/server/wm/RootActivityContainer;->updatePreviousProcess(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/RootActivityContainer;->updateUIDsPresentOnDisplay()V
-HSPLcom/android/server/wm/RootActivityContainer;->updateUserStack(ILcom/android/server/wm/ActivityStack;)V
-PLcom/android/server/wm/RootActivityContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/RootActivityContainer;->updateUserStack(ILcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/RootWindowContainer$1;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+HSPLcom/android/server/wm/RootWindowContainer$FindTaskResult;-><init>()V
+HSPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->apply(Lcom/android/server/wm/Task;)Ljava/lang/Boolean;
+HSPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->apply(Ljava/lang/Object;)Ljava/lang/Object;
+HSPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->clear()V
+HSPLcom/android/server/wm/RootWindowContainer$FindTaskResult;->process(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack;)V
+PLcom/android/server/wm/RootWindowContainer$FindTaskResult;->setTo(Lcom/android/server/wm/RootWindowContainer$FindTaskResult;)V
+HSPLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;-><init>(Lcom/android/server/wm/RootWindowContainer;)V
+HPLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->lambda$XWfRTrqNP6c1kx7wtT2Pvy6K9-c(Lcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->process(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+HPLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;->reset(Ljava/lang/String;Ljava/util/Set;ZZI)V
+HSPLcom/android/server/wm/RootWindowContainer$MyHandler;-><init>(Lcom/android/server/wm/RootWindowContainer;Landroid/os/Looper;)V
 HSPLcom/android/server/wm/RootWindowContainer$MyHandler;->handleMessage(Landroid/os/Message;)V
+HPLcom/android/server/wm/RootWindowContainer$SleepTokenImpl;-><init>(Lcom/android/server/wm/RootWindowContainer;Ljava/lang/String;I)V
+PLcom/android/server/wm/RootWindowContainer$SleepTokenImpl;->access$100(Lcom/android/server/wm/RootWindowContainer$SleepTokenImpl;)I
+HPLcom/android/server/wm/RootWindowContainer$SleepTokenImpl;->release()V
+PLcom/android/server/wm/RootWindowContainer$SleepTokenImpl;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/RootWindowContainer;-><clinit>()V
 HSPLcom/android/server/wm/RootWindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/RootWindowContainer;->access$200(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/RootWindowContainer$SleepTokenImpl;)V
+HPLcom/android/server/wm/RootWindowContainer;->addStartingWindowsForVisibleActivities()V
+HSPLcom/android/server/wm/RootWindowContainer;->allPausedActivitiesComplete()Z
+HSPLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesIdle()Z
+HPLcom/android/server/wm/RootWindowContainer;->allResumedActivitiesVisible()Z
+PLcom/android/server/wm/RootWindowContainer;->anyTaskForId(I)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/RootWindowContainer;->anyTaskForId(II)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/RootWindowContainer;->anyTaskForId(IILandroid/app/ActivityOptions;Z)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/RootWindowContainer;->applySleepTokens(Z)V
 HSPLcom/android/server/wm/RootWindowContainer;->applySurfaceChangesTransaction(Z)V
+HSPLcom/android/server/wm/RootWindowContainer;->attachApplication(Lcom/android/server/wm/WindowProcessController;)Z
+HSPLcom/android/server/wm/RootWindowContainer;->calculateDefaultMinimalSizeOfResizeableTasks()V
+HSPLcom/android/server/wm/RootWindowContainer;->canLaunchOnDisplay(Lcom/android/server/wm/ActivityRecord;I)Z
+HSPLcom/android/server/wm/RootWindowContainer;->canStartHomeOnDisplay(Landroid/content/pm/ActivityInfo;IZ)Z
+HSPLcom/android/server/wm/RootWindowContainer;->cancelInitializingActivities()V
 HSPLcom/android/server/wm/RootWindowContainer;->checkAppTransitionReady(Lcom/android/server/wm/WindowSurfacePlacer;)V
-PLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs(Ljava/lang/String;)V
+HPLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs()V
+HPLcom/android/server/wm/RootWindowContainer;->closeSystemDialogs(Ljava/lang/String;)V
+HSPLcom/android/server/wm/RootWindowContainer;->continueUpdateBounds(I)V
 HSPLcom/android/server/wm/RootWindowContainer;->copyAnimToLayoutParams()Z
-HSPLcom/android/server/wm/RootWindowContainer;->createDisplayContent(Landroid/view/Display;Lcom/android/server/wm/ActivityDisplay;)Lcom/android/server/wm/DisplayContent;
+HPLcom/android/server/wm/RootWindowContainer;->createSleepToken(Ljava/lang/String;I)Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
+PLcom/android/server/wm/RootWindowContainer;->deferUpdateBounds(I)V
+PLcom/android/server/wm/RootWindowContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/RootWindowContainer;->dumpActivities(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;ZZLjava/lang/String;)Z
+PLcom/android/server/wm/RootWindowContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/RootWindowContainer;->dumpDebugInner(Landroid/util/proto/ProtoOutputStream;JI)V
+PLcom/android/server/wm/RootWindowContainer;->dumpDisplayConfigs(Ljava/io/PrintWriter;Ljava/lang/String;)V
 PLcom/android/server/wm/RootWindowContainer;->dumpDisplayContents(Ljava/io/PrintWriter;)V
 PLcom/android/server/wm/RootWindowContainer;->dumpLayoutNeededDisplayIds(Ljava/io/PrintWriter;)V
 PLcom/android/server/wm/RootWindowContainer;->dumpTokens(Ljava/io/PrintWriter;Z)V
 PLcom/android/server/wm/RootWindowContainer;->dumpTopFocusedDisplayId(Ljava/io/PrintWriter;)V
 PLcom/android/server/wm/RootWindowContainer;->dumpWindowsNoHeader(Ljava/io/PrintWriter;ZLjava/util/ArrayList;)V
+HSPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZ)V
+HSPLcom/android/server/wm/RootWindowContainer;->ensureActivitiesVisible(Lcom/android/server/wm/ActivityRecord;IZZ)V
+HSPLcom/android/server/wm/RootWindowContainer;->ensureVisibilityAndConfig(Lcom/android/server/wm/ActivityRecord;IZZ)Z
+HSPLcom/android/server/wm/RootWindowContainer;->executeAppTransitionForAllDisplay()V
+HPLcom/android/server/wm/RootWindowContainer;->findActivity(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Z)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->findStackBehind(Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/RootWindowContainer;->findTask(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/RootWindowContainer;->finishDisabledPackageActivities(Ljava/lang/String;Ljava/util/Set;ZZI)Z
+HPLcom/android/server/wm/RootWindowContainer;->finishTopCrashedActivities(Lcom/android/server/wm/WindowProcessController;Ljava/lang/String;)I
+HPLcom/android/server/wm/RootWindowContainer;->finishVoiceTask(Landroid/service/voice/IVoiceInteractionSession;)V
 HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplayPolicies(Ljava/util/function/Consumer;)V
 HSPLcom/android/server/wm/RootWindowContainer;->forAllDisplays(Ljava/util/function/Consumer;)V
-HSPLcom/android/server/wm/RootWindowContainer;->getAppWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/AppWindowToken;
+HSPLcom/android/server/wm/RootWindowContainer;->getActivityRecord(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/RootWindowContainer;->getAllStackInfos(I)Ljava/util/ArrayList;
 HSPLcom/android/server/wm/RootWindowContainer;->getCurrentInputMethodWindow()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/RootWindowContainer;->getDefaultDisplay()Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(I)Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/RootWindowContainer;->getStack(II)Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/RootWindowContainer;->getDisplayContent(Ljava/lang/String;)Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/RootWindowContainer;->getDisplayContentOrCreate(I)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->getDisplayContextsWithNonToastVisibleWindows(ILjava/util/List;)V
+HSPLcom/android/server/wm/RootWindowContainer;->getDisplayOverrideConfiguration(I)Landroid/content/res/Configuration;
+PLcom/android/server/wm/RootWindowContainer;->getDisplayUiContext(I)Landroid/content/Context;
+PLcom/android/server/wm/RootWindowContainer;->getDumpActivities(Ljava/lang/String;ZZ)Ljava/util/ArrayList;
+PLcom/android/server/wm/RootWindowContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;Z)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/RootWindowContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;II)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootWindowContainer;->getName()Ljava/lang/String;
+HPLcom/android/server/wm/RootWindowContainer;->getNextFocusableStack(Lcom/android/server/wm/ActivityStack;Z)Lcom/android/server/wm/ActivityStack;
+PLcom/android/server/wm/RootWindowContainer;->getRunningTasks(ILjava/util/List;IIIZZLandroid/util/ArraySet;)V
+HPLcom/android/server/wm/RootWindowContainer;->getStack(I)Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/RootWindowContainer;->getStack(II)Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/RootWindowContainer;->getStackInfo(I)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/wm/RootWindowContainer;->getStackInfo(II)Landroid/app/ActivityManager$StackInfo;
+HPLcom/android/server/wm/RootWindowContainer;->getStackInfo(Lcom/android/server/wm/ActivityStack;)Landroid/app/ActivityManager$StackInfo;
+HSPLcom/android/server/wm/RootWindowContainer;->getTopDisplayFocusedStack()Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/RootWindowContainer;->getTopFocusedDisplayContent()Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/RootWindowContainer;->getTopResumedActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/RootWindowContainer;->getTopVisibleActivities()Ljava/util/List;
+HSPLcom/android/server/wm/RootWindowContainer;->getValidLaunchStackOnDisplay(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)Lcom/android/server/wm/ActivityStack;
 HSPLcom/android/server/wm/RootWindowContainer;->getWindowToken(Landroid/os/IBinder;)Lcom/android/server/wm/WindowToken;
 HSPLcom/android/server/wm/RootWindowContainer;->getWindowTokenDisplay(Lcom/android/server/wm/WindowToken;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/RootWindowContainer;->handleAppCrash(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;)V
+HPLcom/android/server/wm/RootWindowContainer;->handleAppCrash(Lcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/RootWindowContainer;->handleAppDied(Lcom/android/server/wm/WindowProcessController;)Z
 HSPLcom/android/server/wm/RootWindowContainer;->handleNotObscuredLocked(Lcom/android/server/wm/WindowState;ZZ)Z
 HSPLcom/android/server/wm/RootWindowContainer;->handleResizingWindows()V
+HSPLcom/android/server/wm/RootWindowContainer;->hasAwakeDisplay()Z
 HSPLcom/android/server/wm/RootWindowContainer;->hasPendingLayoutChanges(Lcom/android/server/wm/WindowAnimator;)Z
-HSPLcom/android/server/wm/RootWindowContainer;->isAnyNonToastWindowVisibleForUid(I)Z
+HSPLcom/android/server/wm/RootWindowContainer;->invalidateTaskLayers()V
+HPLcom/android/server/wm/RootWindowContainer;->isAnyNonToastWindowVisibleForUid(I)Z
+HSPLcom/android/server/wm/RootWindowContainer;->isFocusable(Lcom/android/server/wm/ConfigurationContainer;Z)Z
+HSPLcom/android/server/wm/RootWindowContainer;->isInAnyStack(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/RootWindowContainer;->isLayoutNeeded()Z
-PLcom/android/server/wm/RootWindowContainer;->lambda$dumpWindowsNoHeader$11(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZLcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/RootWindowContainer;->lambda$new$0$RootWindowContainer(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/RootWindowContainer;->onChildPositionChanged()V
+HSPLcom/android/server/wm/RootWindowContainer;->isOnTop()Z
+HSPLcom/android/server/wm/RootWindowContainer;->isTopDisplayFocusedStack(Lcom/android/server/wm/ActivityStack;)Z
+HSPLcom/android/server/wm/RootWindowContainer;->isValidLaunchStack(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;I)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$0ZupnQyxl7yZKgMmf2zwvykG50s(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$5fbF65VSmaJkPHxEhceOGTat7JE(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/RootWindowContainer;->lambda$JVx5SVc0AsTnwnLxXYLgV6AKHPg(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/Task;I)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$JZALJLRYsvQWgNnzHdoTfj_f3QY(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$StackInfo;[I)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$SVJucJygDtyF-4eKB9wPXWaNBDM(Lcom/android/server/wm/RootWindowContainer;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$addStartingWindowsForVisibleActivities$11(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$bRRfWu3QSW54eS51jCvFD02TPt8(Lcom/android/server/wm/ActivityRecord;IZLandroid/content/Intent;Landroid/content/ComponentName;)Z
+HPLcom/android/server/wm/RootWindowContainer;->lambda$closeSystemDialogs$12(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$dumpDebug$10(Landroid/util/proto/ProtoOutputStream;ILcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$dumpDebug$11(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$dumpDebugInner$10(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$dumpWindowsNoHeader$10(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$dumpWindowsNoHeader$9(Ljava/util/ArrayList;Ljava/io/PrintWriter;[IZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$fL0RxmEBMlnXFmjHLkBJ9jk9drs(Lcom/android/server/wm/ActivityRecord;Landroid/content/pm/ApplicationInfo;ILjava/lang/String;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$isAnyNonToastWindowVisibleForUid$3(ILcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/RootWindowContainer;->lambda$new$0$RootWindowContainer(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$8(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$performSurfacePlacementNoTrace$9(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$setSecureSurfaceState$3(IZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$setSecureSurfaceState$4(IZLcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/RootWindowContainer;->lambda$static$1(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$updateAppOpsState$5(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lambda$updateHiddenWhileSuspendedState$4(Landroid/util/ArraySet;ZLcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/RootWindowContainer;->lambda$updateHiddenWhileSuspendedState$5(Landroid/util/ArraySet;ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/RootWindowContainer;->lockAllProfileTasks(I)V
+HPLcom/android/server/wm/RootWindowContainer;->matchesActivity(Lcom/android/server/wm/ActivityRecord;IZLandroid/content/Intent;Landroid/content/ComponentName;)Z
+PLcom/android/server/wm/RootWindowContainer;->moveActivityToPinnedStack(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;FLjava/lang/String;)V
+HSPLcom/android/server/wm/RootWindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/RootWindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/RootWindowContainer;->onDisplayAdded(I)V
+HSPLcom/android/server/wm/RootWindowContainer;->onDisplayChanged(I)V
+HPLcom/android/server/wm/RootWindowContainer;->onDisplayRemoved(I)V
 HSPLcom/android/server/wm/RootWindowContainer;->onSettingsRetrieved()V
 HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacement(Z)V
+HSPLcom/android/server/wm/RootWindowContainer;->performSurfacePlacementNoTrace(Z)V
 HSPLcom/android/server/wm/RootWindowContainer;->positionChildAt(ILcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/RootWindowContainer;->positionChildAt(ILcom/android/server/wm/DisplayContent;Z)V
 HSPLcom/android/server/wm/RootWindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+PLcom/android/server/wm/RootWindowContainer;->prepareForShutdown()V
+HSPLcom/android/server/wm/RootWindowContainer;->prepareFreezingTaskBounds()V
+HPLcom/android/server/wm/RootWindowContainer;->processTaskForStackInfo(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$StackInfo;[I)V
+HPLcom/android/server/wm/RootWindowContainer;->putStacksToSleep(ZZ)Z
+HSPLcom/android/server/wm/RootWindowContainer;->rankTaskLayerForActivity(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/RootWindowContainer;->rankTaskLayersIfNeeded()V
 PLcom/android/server/wm/RootWindowContainer;->removeChild(Lcom/android/server/wm/DisplayContent;)V
 PLcom/android/server/wm/RootWindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/RootWindowContainer;->removeReplacedWindows()V
+HPLcom/android/server/wm/RootWindowContainer;->removeSleepToken(Lcom/android/server/wm/RootWindowContainer$SleepTokenImpl;)V
+PLcom/android/server/wm/RootWindowContainer;->removeStacksInWindowingModes([I)V
+PLcom/android/server/wm/RootWindowContainer;->removeUser(I)V
+HSPLcom/android/server/wm/RootWindowContainer;->resolveActivityType(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/Task;)I
+HSPLcom/android/server/wm/RootWindowContainer;->resolveHomeActivity(ILandroid/content/Intent;)Landroid/content/pm/ActivityInfo;
+HSPLcom/android/server/wm/RootWindowContainer;->resumeFocusedStacksTopActivities()Z
+HSPLcom/android/server/wm/RootWindowContainer;->resumeFocusedStacksTopActivities(Lcom/android/server/wm/ActivityStack;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;)Z
+HPLcom/android/server/wm/RootWindowContainer;->resumeHomeActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;I)Z
 HSPLcom/android/server/wm/RootWindowContainer;->scheduleAnimation()V
+HSPLcom/android/server/wm/RootWindowContainer;->sendPowerHintForLaunchEndIfNeeded()V
+HSPLcom/android/server/wm/RootWindowContainer;->sendPowerHintForLaunchStartIfNeeded(ZLcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/RootWindowContainer;->setDisplayOverrideConfigurationIfNeeded(Landroid/content/res/Configuration;Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->setDockedStackMinimized(Z)V
 HSPLcom/android/server/wm/RootWindowContainer;->setRootActivityContainer(Lcom/android/server/wm/RootActivityContainer;)V
 HSPLcom/android/server/wm/RootWindowContainer;->setSecureSurfaceState(IZ)V
+HSPLcom/android/server/wm/RootWindowContainer;->setWindowManager(Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/RootWindowContainer;->shouldPlaceSecondaryHomeOnDisplay(I)Z
+HSPLcom/android/server/wm/RootWindowContainer;->startActivityForAttachedApplicationIfNeeded(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/RootWindowContainer;->startHomeOnAllDisplays(ILjava/lang/String;)Z
+HSPLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;I)Z
+HSPLcom/android/server/wm/RootWindowContainer;->startHomeOnDisplay(ILjava/lang/String;IZZ)Z
+HSPLcom/android/server/wm/RootWindowContainer;->startHomeOnEmptyDisplays(Ljava/lang/String;)V
+HPLcom/android/server/wm/RootWindowContainer;->startSystemDecorations(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/RootWindowContainer;->taskTopActivityIsUser(Lcom/android/server/wm/Task;I)V
+HPLcom/android/server/wm/RootWindowContainer;->toBrightnessOverride(F)I
+HSPLcom/android/server/wm/RootWindowContainer;->topRunningActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/RootWindowContainer;->updateActivityApplicationInfo(Landroid/content/pm/ApplicationInfo;)V
+HPLcom/android/server/wm/RootWindowContainer;->updateActivityApplicationInfo(Lcom/android/server/wm/ActivityRecord;Landroid/content/pm/ApplicationInfo;ILjava/lang/String;)V
 PLcom/android/server/wm/RootWindowContainer;->updateAppOpsState()V
 HSPLcom/android/server/wm/RootWindowContainer;->updateFocusedWindowLocked(IZ)Z
-HSPLcom/android/server/wm/RootWindowContainer;->updateRotationUnchecked()Z
-PLcom/android/server/wm/RootWindowContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HSPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;IILjava/util/ArrayList;IZ)V
+PLcom/android/server/wm/RootWindowContainer;->updateHiddenWhileSuspendedState(Landroid/util/ArraySet;Z)V
+HPLcom/android/server/wm/RootWindowContainer;->updatePreviousProcess(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/RootWindowContainer;->updateUIDsPresentOnDisplay()V
+HSPLcom/android/server/wm/RootWindowContainer;->updateUserStack(ILcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/RunningTasks;-><clinit>()V
+HSPLcom/android/server/wm/RunningTasks;-><init>()V
+HPLcom/android/server/wm/RunningTasks;->createRunningTaskInfo(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$RunningTaskInfo;
+HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;IILcom/android/server/wm/RootActivityContainer;IZZLandroid/util/ArraySet;)V
+HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;IILcom/android/server/wm/RootWindowContainer;IZZLandroid/util/ArraySet;)V
+HPLcom/android/server/wm/RunningTasks;->lambda$hR_Ryk91b0B2BdJN9eCfQfPwC3g(Lcom/android/server/wm/RunningTasks;Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/RunningTasks;->lambda$static$0(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;)I
+HPLcom/android/server/wm/RunningTasks;->processTask(Lcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/SafeActivityOptions;-><init>(Landroid/app/ActivityOptions;)V
+PLcom/android/server/wm/SafeActivityOptions;->abort()V
+PLcom/android/server/wm/SafeActivityOptions;->abort(Lcom/android/server/wm/SafeActivityOptions;)V
 HSPLcom/android/server/wm/SafeActivityOptions;->checkPermissions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityStackSupervisor;Landroid/app/ActivityOptions;II)V
 HSPLcom/android/server/wm/SafeActivityOptions;->fromBundle(Landroid/os/Bundle;)Lcom/android/server/wm/SafeActivityOptions;
 HSPLcom/android/server/wm/SafeActivityOptions;->getOptions(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;Lcom/android/server/wm/WindowProcessController;Lcom/android/server/wm/ActivityStackSupervisor;)Landroid/app/ActivityOptions;
+PLcom/android/server/wm/SafeActivityOptions;->getOptions(Lcom/android/server/wm/ActivityRecord;)Landroid/app/ActivityOptions;
 PLcom/android/server/wm/SafeActivityOptions;->getOptions(Lcom/android/server/wm/ActivityStackSupervisor;)Landroid/app/ActivityOptions;
 HSPLcom/android/server/wm/SafeActivityOptions;->mergeActivityOptions(Landroid/app/ActivityOptions;Landroid/app/ActivityOptions;)Landroid/app/ActivityOptions;
 HSPLcom/android/server/wm/SafeActivityOptions;->popAppVerificationBundle()Landroid/os/Bundle;
-HSPLcom/android/server/wm/ScreenRotationAnimation;-><init>(Landroid/content/Context;Lcom/android/server/wm/DisplayContent;ZZLcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/ScreenRotationAnimation;->createRotationMatrix(IIILandroid/graphics/Matrix;)V
-HSPLcom/android/server/wm/ScreenRotationAnimation;->dismiss(Landroid/view/SurfaceControl$Transaction;JFIIII)Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation;
-HSPLcom/android/server/wm/ScreenRotationAnimation;->hasScreenshot()Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->isRotating()Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->kill()V
-HSPLcom/android/server/wm/ScreenRotationAnimation;->setRotation(Landroid/view/SurfaceControl$Transaction;IJFII)Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->setSnapshotTransform(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Matrix;F)V
-HSPLcom/android/server/wm/ScreenRotationAnimation;->startAnimation(Landroid/view/SurfaceControl$Transaction;JFIIZII)Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->stepAnimation(J)Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->stepAnimationLocked(J)Z
-HSPLcom/android/server/wm/ScreenRotationAnimation;->updateSurfaces(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/SeamlessRotator;-><init>(IILandroid/view/DisplayInfo;)V
-HSPLcom/android/server/wm/SeamlessRotator;->finish(Lcom/android/server/wm/WindowState;Z)V
-HSPLcom/android/server/wm/SeamlessRotator;->unrotate(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/SafeActivityOptions;->setCallerOptions(Landroid/app/ActivityOptions;)V
+HSPLcom/android/server/wm/SafeActivityOptions;->setCallingPidUidForRemoteAnimationAdapter(Landroid/app/ActivityOptions;II)V
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController$1;-><init>(Lcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;JLandroid/animation/ArgbEvaluator;II[FI)V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController$1;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController$1;->getDuration()J
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;-><init>(Lcom/android/server/wm/ScreenRotationAnimation;)V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->cancel()V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->createWindowAnimationSpec(Landroid/view/animation/Animation;)Lcom/android/server/wm/WindowAnimationSpec;
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->initializeBuilder()Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->isAnimating()Z
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->lambda$R3Rh3gcwK_nBUAZq4hlWwmQXjXA(Lcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;)V
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->lambda$mryOPi3UUpYZkQThzDJyjGBpl5c(Lcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->onAnimationEnd()V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->onAnimationEnd(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startAnimation()V
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startAnimation(Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Lcom/android/server/wm/SurfaceAnimator;
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startAnimation(Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Ljava/lang/Runnable;)Lcom/android/server/wm/SurfaceAnimator;
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startColorAnimation()V
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startCustomAnimation()V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startDisplayRotation()Lcom/android/server/wm/SurfaceAnimator;
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startEnterBlackFrameAnimation()Lcom/android/server/wm/SurfaceAnimator;
+PLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startScreenRotationAnimation()V
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startScreenshotAlphaAnimation()Lcom/android/server/wm/SurfaceAnimator;
+HPLcom/android/server/wm/ScreenRotationAnimation$SurfaceRotationAnimationController;->startScreenshotRotationAnimation()Lcom/android/server/wm/SurfaceAnimator;
+HPLcom/android/server/wm/ScreenRotationAnimation;-><init>(Landroid/content/Context;Lcom/android/server/wm/DisplayContent;ZZLcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/ScreenRotationAnimation;->access$000(Lcom/android/server/wm/ScreenRotationAnimation;)Lcom/android/server/wm/BlackFrame;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$000(Lcom/android/server/wm/ScreenRotationAnimation;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$100(Lcom/android/server/wm/ScreenRotationAnimation;)Lcom/android/server/wm/BlackFrame;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1000(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/content/Context;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1000(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1100(Lcom/android/server/wm/ScreenRotationAnimation;)F
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1100(Lcom/android/server/wm/ScreenRotationAnimation;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1200(Lcom/android/server/wm/ScreenRotationAnimation;)F
+PLcom/android/server/wm/ScreenRotationAnimation;->access$1300(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$200(Lcom/android/server/wm/ScreenRotationAnimation;)Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$300(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$400(Lcom/android/server/wm/ScreenRotationAnimation;)I
+PLcom/android/server/wm/ScreenRotationAnimation;->access$500(Lcom/android/server/wm/ScreenRotationAnimation;)I
+PLcom/android/server/wm/ScreenRotationAnimation;->access$600(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$700(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$700(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$800(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$800(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$900(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/ScreenRotationAnimation;->access$900(Lcom/android/server/wm/ScreenRotationAnimation;)Landroid/view/animation/Animation;
+PLcom/android/server/wm/ScreenRotationAnimation;->createRotationMatrix(IIILandroid/graphics/Matrix;)V
+PLcom/android/server/wm/ScreenRotationAnimation;->dismiss(Landroid/view/SurfaceControl$Transaction;JFIIII)Z
+PLcom/android/server/wm/ScreenRotationAnimation;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/ScreenRotationAnimation;->getEnterTransformation()Landroid/view/animation/Transformation;
+PLcom/android/server/wm/ScreenRotationAnimation;->hasScreenshot()Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->isAnimating()Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->isRotating()Z
+HPLcom/android/server/wm/ScreenRotationAnimation;->kill()V
+HPLcom/android/server/wm/ScreenRotationAnimation;->printTo(Ljava/lang/String;Ljava/io/PrintWriter;)V
+HPLcom/android/server/wm/ScreenRotationAnimation;->setRotation(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/ScreenRotationAnimation;->setRotationTransform(Landroid/view/SurfaceControl$Transaction;Landroid/graphics/Matrix;)V
+HPLcom/android/server/wm/ScreenRotationAnimation;->startAnimation(Landroid/view/SurfaceControl$Transaction;JFIIII)Z
+HPLcom/android/server/wm/SeamlessRotator;-><init>(IILandroid/view/DisplayInfo;)V
+HPLcom/android/server/wm/SeamlessRotator;->finish(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/SeamlessRotator;->getOldRotation()I
+HPLcom/android/server/wm/SeamlessRotator;->unrotate(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/Session;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IWindowSessionCallback;)V
-HSPLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
-HSPLcom/android/server/wm/Session;->binderDied()V
+HPLcom/android/server/wm/Session;->actionOnWallpaper(Landroid/os/IBinder;Ljava/util/function/BiConsumer;)V
+HSPLcom/android/server/wm/Session;->addToDisplay(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
+HPLcom/android/server/wm/Session;->binderDied()V
+PLcom/android/server/wm/Session;->cancelAlertWindowNotification()V
 PLcom/android/server/wm/Session;->dragRecipientEntered(Landroid/view/IWindow;)V
-PLcom/android/server/wm/Session;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;)V
-PLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Session;->dragRecipientExited(Landroid/view/IWindow;)V
+HPLcom/android/server/wm/Session;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/Session;->getDisplayFrame(Landroid/view/IWindow;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/Session;->getInTouchMode()Z
-PLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
-PLcom/android/server/wm/Session;->hasAlertWindowSurfaces()Z
-HSPLcom/android/server/wm/Session;->killSessionLocked()V
-HSPLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Session;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
+PLcom/android/server/wm/Session;->grantInputChannel(ILandroid/view/SurfaceControl;Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/InputChannel;)V
+HPLcom/android/server/wm/Session;->hasAlertWindowSurfaces(Lcom/android/server/wm/DisplayContent;)Z
+HPLcom/android/server/wm/Session;->insetsModified(Landroid/view/IWindow;Landroid/view/InsetsState;)V
+HPLcom/android/server/wm/Session;->killSessionLocked()V
+HPLcom/android/server/wm/Session;->lambda$setWallpaperPosition$0(FFFFLcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/Session;->lambda$wallpaperOffsetsComplete$1(Landroid/os/IBinder;Lcom/android/server/wm/WallpaperController;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/Session;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/Session;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLcom/android/server/wm/Session;->onWindowSurfaceVisibilityChanged(Lcom/android/server/wm/WindowSurfaceController;ZI)V
 PLcom/android/server/wm/Session;->performDrag(Landroid/view/IWindow;ILandroid/view/SurfaceControl;IFFFFLandroid/content/ClipData;)Landroid/os/IBinder;
-PLcom/android/server/wm/Session;->performHapticFeedback(IZ)Z
-PLcom/android/server/wm/Session;->pokeDrawLock(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;)I
-HSPLcom/android/server/wm/Session;->remove(Landroid/view/IWindow;)V
+HPLcom/android/server/wm/Session;->performHapticFeedback(IZ)Z
+HPLcom/android/server/wm/Session;->pokeDrawLock(Landroid/os/IBinder;)V
+PLcom/android/server/wm/Session;->prepareToReplaceWindows(Landroid/os/IBinder;Z)V
+HSPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;)I
+HPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/graphics/Point;)I
+HSPLcom/android/server/wm/Session;->relayout(Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/graphics/Point;Landroid/view/SurfaceControl;)I
+HPLcom/android/server/wm/Session;->remove(Landroid/view/IWindow;)V
+PLcom/android/server/wm/Session;->reparentDisplayContent(Landroid/view/IWindow;Landroid/view/SurfaceControl;I)V
 PLcom/android/server/wm/Session;->reportDropResult(Landroid/view/IWindow;Z)V
+HPLcom/android/server/wm/Session;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
 PLcom/android/server/wm/Session;->sendWallpaperCommand(Landroid/os/IBinder;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;
-HSPLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
-PLcom/android/server/wm/Session;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
-PLcom/android/server/wm/Session;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V
+HPLcom/android/server/wm/Session;->setHasOverlayUi(Z)V
+PLcom/android/server/wm/Session;->setInTouchMode(Z)V
+HPLcom/android/server/wm/Session;->setInsets(Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/Session;->setTransparentRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/Session;->setWallpaperPosition(Landroid/os/IBinder;FFFF)V
 PLcom/android/server/wm/Session;->toString()Ljava/lang/String;
-PLcom/android/server/wm/Session;->updatePointerIcon(Landroid/view/IWindow;)V
-PLcom/android/server/wm/Session;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
+PLcom/android/server/wm/Session;->updateDisplayContentLocation(Landroid/view/IWindow;III)V
+HPLcom/android/server/wm/Session;->updatePointerIcon(Landroid/view/IWindow;)V
+PLcom/android/server/wm/Session;->updateTapExcludeRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/Session;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/Session;->windowAddedLocked(Ljava/lang/String;)V
-HSPLcom/android/server/wm/Session;->windowRemovedLocked()V
-PLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
+PLcom/android/server/wm/Session;->windowRemovedLocked()V
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;-><init>()V
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$000(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)I
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$100(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)I
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$1000(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/util/function/Supplier;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$1100(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/util/function/Consumer;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$200(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Z
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$300(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$400(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$500(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$600(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/lang/Runnable;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$700(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/util/function/Supplier;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$800(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/util/function/BiConsumer;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->access$900(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)Ljava/util/function/Consumer;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->build()Lcom/android/server/wm/SurfaceAnimator$Animatable;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setAnimationLeashParent(Landroid/view/SurfaceControl;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setAnimationLeashSupplier(Ljava/util/function/Supplier;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setCommitTransactionRunnable(Ljava/lang/Runnable;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setHeight(I)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setParentSurfaceControl(Landroid/view/SurfaceControl;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setPendingTransactionSupplier(Ljava/util/function/Supplier;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setSurfaceControl(Landroid/view/SurfaceControl;)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+PLcom/android/server/wm/SimpleSurfaceAnimatable$Builder;->setWidth(I)Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;-><init>(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;)V
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;-><init>(Lcom/android/server/wm/SimpleSurfaceAnimatable$Builder;Lcom/android/server/wm/SimpleSurfaceAnimatable$1;)V
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->commitPendingTransaction()V
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getSurfaceHeight()I
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->getSurfaceWidth()I
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/SimpleSurfaceAnimatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+HPLcom/android/server/wm/SnapshotStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/app/ActivityManager$TaskSnapshot;)V
+HPLcom/android/server/wm/SnapshotStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
 PLcom/android/server/wm/SplashScreenStartingData;-><init>(Lcom/android/server/wm/WindowManagerService;Ljava/lang/String;ILandroid/content/res/CompatibilityInfo;Ljava/lang/CharSequence;IIIILandroid/content/res/Configuration;)V
-PLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
+HPLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
+HPLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/StatusBarController$1;-><init>(Lcom/android/server/wm/StatusBarController;)V
 HSPLcom/android/server/wm/StatusBarController$1;->lambda$$0$StatusBarController$1()V
-HSPLcom/android/server/wm/StatusBarController$1;->lambda$$1$StatusBarController$1()V
+PLcom/android/server/wm/StatusBarController$1;->lambda$$1$StatusBarController$1()V
 HSPLcom/android/server/wm/StatusBarController$1;->lambda$$2$StatusBarController$1()V
 HSPLcom/android/server/wm/StatusBarController$1;->lambda$onAppTransitionStartingLocked$3$StatusBarController$1(JJ)V
-HSPLcom/android/server/wm/StatusBarController$1;->onAppTransitionCancelledLocked(I)V
+PLcom/android/server/wm/StatusBarController$1;->onAppTransitionCancelledLocked(I)V
 HSPLcom/android/server/wm/StatusBarController$1;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/StatusBarController$1;->onAppTransitionPendingLocked()V
 HSPLcom/android/server/wm/StatusBarController$1;->onAppTransitionStartingLocked(IJJJ)I
+HSPLcom/android/server/wm/StatusBarController;-><init>(I)V
 HSPLcom/android/server/wm/StatusBarController;->getAppTransitionListener()Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;
-HSPLcom/android/server/wm/StatusBarController;->setTopAppHidesStatusBar(Z)V
-HSPLcom/android/server/wm/StatusBarController;->skipAnimation()Z
-HSPLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationEnd(Landroid/animation/Animator;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationStart(Landroid/animation/Animator;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
+HPLcom/android/server/wm/StatusBarController;->setTopAppHidesStatusBar(Z)V
+HPLcom/android/server/wm/StatusBarController;->skipAnimation()Z
+HPLcom/android/server/wm/SurfaceAnimationRunner$1;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationEnd(Landroid/animation/Animator;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner$1;->onAnimationStart(Landroid/animation/Animator;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;-><init>(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;->access$000(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)Z
+PLcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;->access$002(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Z)Z
+HPLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimationRunner;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner$SfValueAnimator;->getAnimationHandler()Landroid/animation/AnimationHandler;
 HSPLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Landroid/animation/AnimationHandler$AnimationFrameCallbackProvider;Lcom/android/server/wm/SurfaceAnimationRunner$AnimatorFactory;Landroid/view/SurfaceControl$Transaction;Landroid/os/PowerManagerInternal;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Landroid/os/PowerManagerInternal;)V
+HSPLcom/android/server/wm/SurfaceAnimationRunner;-><init>(Ljava/util/function/Supplier;Landroid/os/PowerManagerInternal;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->access$100(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
+PLcom/android/server/wm/SurfaceAnimationRunner;->access$200(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/SurfaceAnimationRunner;->access$300(Lcom/android/server/wm/SurfaceAnimationRunner;)Ljava/lang/Object;
+PLcom/android/server/wm/SurfaceAnimationRunner;->access$400(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/AnimationHandler;
+PLcom/android/server/wm/SurfaceAnimationRunner;->access$400(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/os/Handler;
+HPLcom/android/server/wm/SurfaceAnimationRunner;->access$500(Lcom/android/server/wm/SurfaceAnimationRunner;)Landroid/animation/AnimationHandler;
+HPLcom/android/server/wm/SurfaceAnimationRunner;->applyTransaction()V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->applyTransformation(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/view/SurfaceControl$Transaction;J)V
 HSPLcom/android/server/wm/SurfaceAnimationRunner;->continueStartingAnimations()V
 HSPLcom/android/server/wm/SurfaceAnimationRunner;->deferStartingAnimations()V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$9Wa9MhcrSX12liOouHtYXEkDU60(Lcom/android/server/wm/SurfaceAnimationRunner;J)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$lSzwjoKEGADoEFOzdEnwriAk0T4(Lcom/android/server/wm/SurfaceAnimationRunner;)V
 HSPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$0$SurfaceAnimationRunner()V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$1$SurfaceAnimationRunner()Landroid/animation/ValueAnimator;
+PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$new$1$SurfaceAnimationRunner()Landroid/animation/ValueAnimator;
 PLcom/android/server/wm/SurfaceAnimationRunner;->lambda$onAnimationCancelled$2$SurfaceAnimationRunner(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$startAnimationLocked$3$SurfaceAnimationRunner(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
-PLcom/android/server/wm/SurfaceAnimationRunner;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimation(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Ljava/lang/Runnable;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimationLocked(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
-HSPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimations(J)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->lambda$startAnimationLocked$3$SurfaceAnimationRunner(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;Landroid/animation/ValueAnimator;Landroid/animation/ValueAnimator;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->scheduleApplyTransaction()V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimation(Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimationLocked(Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;)V
+HPLcom/android/server/wm/SurfaceAnimationRunner;->startAnimations(J)V
+HPLcom/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;
-HSPLcom/android/server/wm/SurfaceAnimator$Animatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
-HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation()V
-HSPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V
-HSPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIZ)Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/SurfaceAnimator$Animatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
+HSPLcom/android/server/wm/SurfaceAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimator$Animatable;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/SurfaceAnimator;-><init>(Lcom/android/server/wm/SurfaceAnimator$Animatable;Ljava/lang/Runnable;Lcom/android/server/wm/WindowManagerService;)V
+HPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation()V
+HPLcom/android/server/wm/SurfaceAnimator;->cancelAnimation(Landroid/view/SurfaceControl$Transaction;ZZ)V
+HPLcom/android/server/wm/SurfaceAnimator;->createAnimationLeash(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;IIZ)Landroid/view/SurfaceControl;
+PLcom/android/server/wm/SurfaceAnimator;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/SurfaceAnimator;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 PLcom/android/server/wm/SurfaceAnimator;->endDelayingAnimationStart()V
-HSPLcom/android/server/wm/SurfaceAnimator;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
+HPLcom/android/server/wm/SurfaceAnimator;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
+HSPLcom/android/server/wm/SurfaceAnimator;->getFinishedCallback(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+HSPLcom/android/server/wm/SurfaceAnimator;->getFinishedCallback(Ljava/lang/Runnable;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
 HSPLcom/android/server/wm/SurfaceAnimator;->hasLeash()Z
 HSPLcom/android/server/wm/SurfaceAnimator;->isAnimating()Z
 PLcom/android/server/wm/SurfaceAnimator;->isAnimationStartDelayed()Z
-HSPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0$SurfaceAnimator(Ljava/lang/Runnable;)V
-HSPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$1$SurfaceAnimator(Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0$SurfaceAnimator(Lcom/android/server/wm/AnimationAdapter;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;I)V
+HPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0$SurfaceAnimator(Lcom/android/server/wm/AnimationAdapter;Ljava/lang/Runnable;)V
+HPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$1$SurfaceAnimator(Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$1$SurfaceAnimator(Ljava/lang/Runnable;Lcom/android/server/wm/AnimationAdapter;)V
 PLcom/android/server/wm/SurfaceAnimator;->reparent(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V
+HPLcom/android/server/wm/SurfaceAnimator;->reset(Landroid/view/SurfaceControl$Transaction;Z)V
 HSPLcom/android/server/wm/SurfaceAnimator;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/wm/SurfaceAnimator;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
-HSPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
+HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
+PLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZI)V
+HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/SurfaceAnimator;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZLjava/lang/Runnable;)V
 PLcom/android/server/wm/SurfaceAnimator;->transferAnimation(Lcom/android/server/wm/SurfaceAnimator;)V
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
-PLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener$1;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;Landroid/content/Context;Landroid/view/GestureDetector$OnGestureListener;Landroid/os/Handler;)V
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;-><init>(Lcom/android/server/wm/SystemGesturesPointerEventListener;)V
+HPLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onFling(Landroid/view/MotionEvent;Landroid/view/MotionEvent;FF)Z
+HPLcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;->onSingleTapUp(Landroid/view/MotionEvent;)Z
 HSPLcom/android/server/wm/SystemGesturesPointerEventListener;-><init>(Landroid/content/Context;Landroid/os/Handler;Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;)V
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->findIndex(I)I
-HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->access$000(Lcom/android/server/wm/SystemGesturesPointerEventListener;)Landroid/content/Context;
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->access$100(Lcom/android/server/wm/SystemGesturesPointerEventListener;)J
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->access$102(Lcom/android/server/wm/SystemGesturesPointerEventListener;J)J
+PLcom/android/server/wm/SystemGesturesPointerEventListener;->access$200(Lcom/android/server/wm/SystemGesturesPointerEventListener;)Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->captureDown(Landroid/view/MotionEvent;I)V
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->checkNull(Ljava/lang/String;Ljava/lang/Object;)Ljava/lang/Object;
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->currentGestureStartedInRegion(Landroid/graphics/Region;)Z
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(IJFF)I
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->detectSwipe(Landroid/view/MotionEvent;)I
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->findIndex(I)I
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->lambda$systemReady$0$SystemGesturesPointerEventListener()V
+HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->onConfigurationChanged()V
+HPLcom/android/server/wm/SystemGesturesPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
 HSPLcom/android/server/wm/SystemGesturesPointerEventListener;->systemReady()V
-HSPLcom/android/server/wm/Task;-><init>(ILcom/android/server/wm/TaskStack;ILcom/android/server/wm/WindowManagerService;IZLandroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/AppWindowToken;I)V
+HSPLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/Task$FindRootHelper;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task$1;)V
+HSPLcom/android/server/wm/Task$FindRootHelper;->clear()V
+HSPLcom/android/server/wm/Task$FindRootHelper;->findRoot(ZZ)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task$FindRootHelper;->lambda$sIea0VfMPIGsR0Xwg7rABysHwZ4(Lcom/android/server/wm/Task$FindRootHelper;Lcom/android/server/wm/ActivityRecord;ZZ)Z
+HSPLcom/android/server/wm/Task$FindRootHelper;->processActivity(Lcom/android/server/wm/ActivityRecord;ZZ)Z
+HSPLcom/android/server/wm/Task$TaskActivitiesReport;-><init>()V
+HSPLcom/android/server/wm/Task$TaskActivitiesReport;->accept(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task$TaskActivitiesReport;->accept(Ljava/lang/Object;)V
+HSPLcom/android/server/wm/Task$TaskActivitiesReport;->reset()V
+HSPLcom/android/server/wm/Task$TaskFactory;-><init>()V
+PLcom/android/server/wm/Task$TaskFactory;->create(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZIILcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task$TaskFactory;->create(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task$TaskFactory;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wm/ActivityStackSupervisor;)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task$TaskToken;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/Task$TaskToken;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/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;ZZZIILjava/lang/String;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/Task;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/app/ActivityManager$TaskDescription;Lcom/android/server/wm/ActivityStack;)V
+HSPLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/WindowContainer;I)V
 HSPLcom/android/server/wm/Task;->adjustBoundsForDisplayChangeIfNeeded(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/Task;->adjustForMinimalTaskDimensions(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Task;->alignToAdjustedBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
+HSPLcom/android/server/wm/Task;->asTask()Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->autoRemoveFromRecents()Z
+HSPLcom/android/server/wm/Task;->calculateInsetFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayInfo;)V
 HSPLcom/android/server/wm/Task;->canAffectSystemUiFlags()Z
+PLcom/android/server/wm/Task;->canBeLaunchedOnDisplay(I)Z
+PLcom/android/server/wm/Task;->canResizeToBounds(Landroid/graphics/Rect;)Z
+HPLcom/android/server/wm/Task;->cleanUpActivityReferences(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/Task;->cleanUpResourcesForDestroy()V
+HPLcom/android/server/wm/Task;->cleanUpResourcesForDestroy(Lcom/android/server/wm/ConfigurationContainer;)V
 PLcom/android/server/wm/Task;->clearPreserveNonFloatingState()V
+HSPLcom/android/server/wm/Task;->clearRootProcess()V
+HPLcom/android/server/wm/Task;->closeRecentsChain()V
+HSPLcom/android/server/wm/Task;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/Task;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;)V
+HSPLcom/android/server/wm/Task;->computeFullscreenBounds(Landroid/graphics/Rect;Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;I)V
+HSPLcom/android/server/wm/Task;->computeMinUserPosition(II)I
+HSPLcom/android/server/wm/Task;->computeScreenLayoutOverride(III)I
+HSPLcom/android/server/wm/Task;->create(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Lcom/android/server/wm/ActivityStack;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/Task;->createRemoteAnimationTarget(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;)Landroid/view/RemoteAnimationTarget;
 HSPLcom/android/server/wm/Task;->cropWindowsToStackBounds()Z
+HPLcom/android/server/wm/Task;->dim(F)V
 PLcom/android/server/wm/Task;->dontAnimateDimExit()V
-PLcom/android/server/wm/Task;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/Task;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/Task;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/Task;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/Task;->dumpDebugInner(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/Task;->dumpDebugInnerTaskOnly(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/Task;->fillTaskInfo(Landroid/app/TaskInfo;)V
 HSPLcom/android/server/wm/Task;->fillsParent()Z
-PLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/Task;->findActivityInHistory(Landroid/content/ComponentName;)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->finishActivityAbove(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Consumer;Z)V
+HSPLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Consumer;ZLcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/Task;->forAllTasks(Ljava/util/function/Function;)Z
 HSPLcom/android/server/wm/Task;->forceWindowsScaleable(Z)V
-HSPLcom/android/server/wm/Task;->getAdjustedAddPosition(I)I
-PLcom/android/server/wm/Task;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/Task;->getActivityType()I
+HSPLcom/android/server/wm/Task;->getAdjustedAddPosition(Lcom/android/server/wm/ActivityRecord;I)I
+HSPLcom/android/server/wm/Task;->getAdjustedChildPosition(Lcom/android/server/wm/WindowContainer;I)I
+PLcom/android/server/wm/Task;->getAnimationBounds(I)Landroid/graphics/Rect;
+PLcom/android/server/wm/Task;->getAnimationFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/Task;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/Task;->getBaseIntent()Landroid/content/Intent;
+HPLcom/android/server/wm/Task;->getDescendantTaskCount()I
 HSPLcom/android/server/wm/Task;->getDimBounds(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/Task;->getDimmer()Lcom/android/server/wm/Dimmer;
 HSPLcom/android/server/wm/Task;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/Task;->getDisplayId()I
 HSPLcom/android/server/wm/Task;->getDisplayedBounds()Landroid/graphics/Rect;
+PLcom/android/server/wm/Task;->getDragResizeMode()I
+HPLcom/android/server/wm/Task;->getInactiveDuration()J
+HSPLcom/android/server/wm/Task;->getLaunchBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/Task;->getName()Ljava/lang/String;
+HSPLcom/android/server/wm/Task;->getNumRunningActivities(Lcom/android/server/wm/Task$TaskActivitiesReport;)V
 HSPLcom/android/server/wm/Task;->getOverrideDisplayedBounds()Landroid/graphics/Rect;
-PLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription;
-PLcom/android/server/wm/Task;->getTopFullscreenAppToken()Lcom/android/server/wm/AppWindowToken;
-PLcom/android/server/wm/Task;->getTopVisibleAppMainWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/Task;->getTopVisibleAppToken()Lcom/android/server/wm/AppWindowToken;
-HSPLcom/android/server/wm/Task;->isDragResizing()Z
+HSPLcom/android/server/wm/Task;->getRelativeDisplayedPosition(Landroid/graphics/Point;)V
+HSPLcom/android/server/wm/Task;->getResumedActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getRootActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getRootActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getRootActivity(ZZ)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getRootTask()Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->getRootTaskId()I
+HPLcom/android/server/wm/Task;->getSmallestScreenWidthDpForDockedBounds(Landroid/graphics/Rect;)I
+PLcom/android/server/wm/Task;->getSnapshot(ZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HSPLcom/android/server/wm/Task;->getStack()Lcom/android/server/wm/ActivityStack;
+HSPLcom/android/server/wm/Task;->getStackId()I
+HSPLcom/android/server/wm/Task;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/Task;->getTaskDescription()Landroid/app/ActivityManager$TaskDescription;
+HSPLcom/android/server/wm/Task;->getTaskFactory()Lcom/android/server/wm/Task$TaskFactory;
+HSPLcom/android/server/wm/Task;->getTaskInfo()Landroid/app/ActivityManager$RunningTaskInfo;
+HPLcom/android/server/wm/Task;->getTaskStack()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/Task;->getTopFullscreenActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getTopNonFinishingActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getTopNonFinishingActivity(Z)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/Task;->getTopVisibleAppMainWindow()Lcom/android/server/wm/WindowState;
+HSPLcom/android/server/wm/Task;->intersectWithInsetsIfFits(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Task;->isClearingToReuseTask()Z
+HSPLcom/android/server/wm/Task;->isControlledByTaskOrganizer()Z
+HPLcom/android/server/wm/Task;->isDragResizing()Z
 HSPLcom/android/server/wm/Task;->isFloating()Z
+PLcom/android/server/wm/Task;->isFocused()Z
+HPLcom/android/server/wm/Task;->isOpaqueActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/Task;->isResizeable()Z
-HSPLcom/android/server/wm/Task;->isTaskAnimating()Z
+HSPLcom/android/server/wm/Task;->isResizeable(Z)Z
+HSPLcom/android/server/wm/Task;->isRootTask()Z
+HPLcom/android/server/wm/Task;->isSameIntentFilter(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->isTaskAnimating()Z
+HSPLcom/android/server/wm/Task;->isTaskId(I)Z
+HPLcom/android/server/wm/Task;->isTranslucent(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->isUidPresent(I)Z
+PLcom/android/server/wm/Task;->lambda$BP51Xfr33NBfsJ4rKO04RomX2Tg(Lcom/android/server/wm/ActivityRecord;Landroid/content/ComponentName;)Z
+HPLcom/android/server/wm/Task;->lambda$CKQ9RLMNPYajktwO1VrUoQGHF_8(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$OQmaRDKXdgA0v6VfNwTX7wOkwBs(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lorg/xmlpull/v1/XmlSerializer;)Z
+HSPLcom/android/server/wm/Task;->lambda$TUGPkEKamN60PF6hJQxUwDBjU-M(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskDescription;)Z
+HPLcom/android/server/wm/Task;->lambda$dump$9(Ljava/io/PrintWriter;Ljava/lang/String;[ILjava/lang/String;ZLcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$dumpDebug$10(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$dumpDebugInner$11(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$dumpDebugInnerTaskOnly$8(Landroid/util/proto/ProtoOutputStream;ILcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$dumpDebugInnerTaskOnly$9(Landroid/util/proto/ProtoOutputStream;ILcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/Task;->lambda$dumpDebugInnerTaskOnly$9(Landroid/util/proto/ProtoOutputStream;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->lambda$getAdjustedAddPosition$5(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->lambda$getDescendantTaskCount$5(Lcom/android/server/wm/Task;[I)V
+HPLcom/android/server/wm/Task;->lambda$getTopFullscreenActivity$6(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->lambda$getTopFullscreenActivity$7(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/Task;->lambda$getTopVisibleActivity$7(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/Task;->lambda$getTopVisibleActivity$8(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->lambda$isTaskAnimating$6$Task(Lcom/android/server/wm/Task;)Ljava/lang/Boolean;
+PLcom/android/server/wm/Task;->lambda$lqGdYR9ABiPuG3_68w1VS6hrr8c(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$onlyHasTaskOverlayActivities$1(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lambda$onlyHasTaskOverlayActivities$2(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/Task;->lambda$performClearTaskAtIndexLocked$4(Ljava/lang/String;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->lambda$topRunningActivityWithStartingWindowLocked$0(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/Task;->lockTaskAuthToString()Ljava/lang/String;
 HSPLcom/android/server/wm/Task;->makeSurface()Landroid/view/SurfaceControl$Builder;
+HPLcom/android/server/wm/Task;->matchesActivityInHistory(Lcom/android/server/wm/ActivityRecord;Landroid/content/ComponentName;)Z
+PLcom/android/server/wm/Task;->moveActivityToFrontLocked(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack$ActivityState;Ljava/lang/String;)V
+HPLcom/android/server/wm/Task;->onAnimationFinished()V
+HSPLcom/android/server/wm/Task;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/Task;->onDescendantOrientationChanged(Landroid/os/IBinder;Lcom/android/server/wm/ConfigurationContainer;)Z
 HSPLcom/android/server/wm/Task;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/Task;->onParentChanged()V
+HSPLcom/android/server/wm/Task;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
 PLcom/android/server/wm/Task;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V
-HSPLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/AppWindowToken;Z)V
-HSPLcom/android/server/wm/Task;->positionChildAt(Lcom/android/server/wm/AppWindowToken;I)V
+HSPLcom/android/server/wm/Task;->onWindowFocusChanged(Z)V
+HPLcom/android/server/wm/Task;->onlyHasTaskOverlayActivities(Z)Z
+HPLcom/android/server/wm/Task;->performClearTaskAtIndexLocked(Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->performClearTaskForReuseLocked(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
+PLcom/android/server/wm/Task;->performClearTaskLocked()V
+HPLcom/android/server/wm/Task;->performClearTaskLocked(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
+HSPLcom/android/server/wm/Task;->positionChildAt(Lcom/android/server/wm/ActivityRecord;I)V
+HSPLcom/android/server/wm/Task;->positionChildAtTop(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/Task;->prepareFreezingBounds()V
 HSPLcom/android/server/wm/Task;->prepareSurfaces()V
-HSPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-HSPLcom/android/server/wm/Task;->removeIfPossible()V
-HSPLcom/android/server/wm/Task;->removeImmediately()V
-PLcom/android/server/wm/Task;->reparent(Lcom/android/server/wm/TaskStack;IZ)V
+HPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/WindowContainer;Ljava/lang/String;)V
+HPLcom/android/server/wm/Task;->removeIfPossible()V
+HPLcom/android/server/wm/Task;->removeImmediately()V
+PLcom/android/server/wm/Task;->removeTaskActivitiesLocked(Ljava/lang/String;)V
+PLcom/android/server/wm/Task;->removedFromRecents()V
+PLcom/android/server/wm/Task;->reparent(Lcom/android/server/wm/ActivityStack;IIZZZLjava/lang/String;)Z
+PLcom/android/server/wm/Task;->reparent(Lcom/android/server/wm/ActivityStack;IZLjava/lang/String;)V
+PLcom/android/server/wm/Task;->reparent(Lcom/android/server/wm/ActivityStack;ZIZZLjava/lang/String;)Z
+PLcom/android/server/wm/Task;->reparent(Lcom/android/server/wm/ActivityStack;ZIZZZLjava/lang/String;)Z
+PLcom/android/server/wm/Task;->reparentSurfaceControl(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/Task;->replaceWindowsOnTaskMove(II)Z
+PLcom/android/server/wm/Task;->resize(Landroid/graphics/Rect;IZZ)Z
 PLcom/android/server/wm/Task;->resize(ZZ)V
+HSPLcom/android/server/wm/Task;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
+PLcom/android/server/wm/Task;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wm/ActivityStackSupervisor;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/Task;->returnsToHomeStack()Z
+HPLcom/android/server/wm/Task;->saveActivityToXml(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lorg/xmlpull/v1/XmlSerializer;)Z
+HSPLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded()V
+HSPLcom/android/server/wm/Task;->saveLaunchingStateIfNeeded(Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/Task;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
+HSPLcom/android/server/wm/Task;->sendTaskAppeared()V
 HSPLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;)I
 PLcom/android/server/wm/Task;->setBounds(Landroid/graphics/Rect;Z)I
 PLcom/android/server/wm/Task;->setCanAffectSystemUiFlags(Z)V
-HSPLcom/android/server/wm/Task;->setOverrideDisplayedBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/Task;->setSendingToBottom(Z)V
+PLcom/android/server/wm/Task;->setDragResizing(ZI)V
+HSPLcom/android/server/wm/Task;->setForceShowForAllUsers(Z)V
+HSPLcom/android/server/wm/Task;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
+HSPLcom/android/server/wm/Task;->setIntent(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->setLockTaskAuth()V
+HSPLcom/android/server/wm/Task;->setLockTaskAuth(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/Task;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V
+PLcom/android/server/wm/Task;->setNextAffiliate(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/Task;->setOverrideDisplayedBounds(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/Task;->setPrevAffiliate(Lcom/android/server/wm/Task;)V
+HSPLcom/android/server/wm/Task;->setResumedActivity(Lcom/android/server/wm/ActivityRecord;Ljava/lang/String;)V
+HSPLcom/android/server/wm/Task;->setRootProcess(Lcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/Task;->setSurfaceControl(Landroid/view/SurfaceControl;)V
 HSPLcom/android/server/wm/Task;->setTaskDescription(Landroid/app/ActivityManager$TaskDescription;)V
-HSPLcom/android/server/wm/Task;->shouldDeferRemoval()Z
+HSPLcom/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;->setTaskDockedResizing(Z)V
+HSPLcom/android/server/wm/Task;->setTaskFactory(Lcom/android/server/wm/Task$TaskFactory;)V
+HSPLcom/android/server/wm/Task;->setTaskOrganizer(Landroid/view/ITaskOrganizer;)V
+PLcom/android/server/wm/Task;->setWindowingMode(I)V
+HPLcom/android/server/wm/Task;->shouldDeferRemoval()Z
 HSPLcom/android/server/wm/Task;->showForAllUsers()Z
-HSPLcom/android/server/wm/Task;->toShortString()Ljava/lang/String;
-PLcom/android/server/wm/Task;->toString()Ljava/lang/String;
-PLcom/android/server/wm/Task;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/Task;->showToCurrentUser()Z
+HPLcom/android/server/wm/Task;->stopDimming()V
+HSPLcom/android/server/wm/Task;->supportsSplitScreenWindowingMode()Z
+HSPLcom/android/server/wm/Task;->supportsSplitScreenWindowingModeInner()Z
+HPLcom/android/server/wm/Task;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/Task;->topRunningActivityLocked()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->topRunningActivityWithStartingWindowLocked()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/Task;->touchActiveTime()V
+HSPLcom/android/server/wm/Task;->updateEffectiveIntent()V
+HSPLcom/android/server/wm/Task;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
+HSPLcom/android/server/wm/Task;->updateShadowsRadius(ZLandroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/Task;->updateSurfaceCrop()V
+HSPLcom/android/server/wm/Task;->updateSurfacePosition()V
+HSPLcom/android/server/wm/Task;->updateTaskDescription()V
+HSPLcom/android/server/wm/Task;->updateTaskMovement(Z)V
+HSPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;-><init>(Lcom/android/server/wm/TaskChangeNotificationController;Landroid/os/Looper;)V
 HSPLcom/android/server/wm/TaskChangeNotificationController$MainHandler;->handleMessage(Landroid/os/Message;)V
 HSPLcom/android/server/wm/TaskChangeNotificationController;-><init>(Ljava/lang/Object;Lcom/android/server/wm/ActivityStackSupervisor;Landroid/os/Handler;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->access$000(Lcom/android/server/wm/TaskChangeNotificationController;)Ljava/lang/Object;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$100(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/ActivityStackSupervisor;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1000(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1100(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1300(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1400(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1600(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$1900(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$200(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$2000(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$2100(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+HSPLcom/android/server/wm/TaskChangeNotificationController;->access$2500(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+HSPLcom/android/server/wm/TaskChangeNotificationController;->access$2600(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$2700(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+HSPLcom/android/server/wm/TaskChangeNotificationController;->access$300(Lcom/android/server/wm/TaskChangeNotificationController;Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->access$400(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$500(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$600(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+HSPLcom/android/server/wm/TaskChangeNotificationController;->access$700(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$800(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
+PLcom/android/server/wm/TaskChangeNotificationController;->access$900(Lcom/android/server/wm/TaskChangeNotificationController;)Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
 HSPLcom/android/server/wm/TaskChangeNotificationController;->forAllLocalListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
 HSPLcom/android/server/wm/TaskChangeNotificationController;->forAllRemoteListeners(Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$0(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$1(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$10(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$11(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$12(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$13(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$14(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$17(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$18(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$19(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$2(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$21(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$22(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$23(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$24(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$3(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$4(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$6(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$7(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$8(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->lambda$new$9(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityDismissingDockedStack()V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityForcedResizable(IILjava/lang/String;)V
 PLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityPinned(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityRequestedOrientationChanged(II)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityRequestedOrientationChanged(II)V
 PLcom/android/server/wm/TaskChangeNotificationController;->notifyActivityUnpinned()V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyPinnedActivityRestartAttempt(Z)V
 PLcom/android/server/wm/TaskChangeNotificationController;->notifyPinnedStackAnimationEnded()V
 PLcom/android/server/wm/TaskChangeNotificationController;->notifyPinnedStackAnimationStarted()V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifySingleTaskDisplayDrawn(I)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifySingleTaskDisplayEmpty(I)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifySizeCompatModeActivityChanged(ILandroid/os/IBinder;)V
 HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskCreated(ILandroid/content/ComponentName;)V
 HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDescriptionChanged(Landroid/app/TaskInfo;)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskMovedToFront(Landroid/app/TaskInfo;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskRemovalStarted(Landroid/app/ActivityManager$RunningTaskInfo;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskRemoved(I)V
-PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskStackChanged()V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskDisplayChanged(II)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskListFrozen(Z)V
+HSPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskListUpdated()V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskMovedToFront(Landroid/app/TaskInfo;)V
+PLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskProfileLocked(II)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskRemovalStarted(Landroid/app/ActivityManager$RunningTaskInfo;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskRemoved(I)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskSnapshotChanged(ILandroid/app/ActivityManager$TaskSnapshot;)V
+HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskStackChanged()V
 HSPLcom/android/server/wm/TaskChangeNotificationController;->registerTaskStackListener(Landroid/app/ITaskStackListener;)V
-HSPLcom/android/server/wm/TaskChangeNotificationController;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
-HSPLcom/android/server/wm/TaskLaunchParamsModifier;->calculate(Lcom/android/server/wm/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
-HSPLcom/android/server/wm/TaskLaunchParamsModifier;->canApplyFreeformWindowPolicy(Lcom/android/server/wm/ActivityDisplay;I)Z
-HSPLcom/android/server/wm/TaskLaunchParamsModifier;->getPreferredLaunchDisplay(Lcom/android/server/wm/TaskRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
-HSPLcom/android/server/wm/TaskLaunchParamsModifier;->getTaskBounds(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityDisplay;Landroid/content/pm/ActivityInfo$WindowLayout;IZLandroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskLaunchParamsModifier;->onCalculate(Lcom/android/server/wm/TaskRecord;Landroid/content/pm/ActivityInfo$WindowLayout;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
-HSPLcom/android/server/wm/TaskPersister$1;->compare(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/TaskRecord;)I
-HSPLcom/android/server/wm/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
-PLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->matches(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;)Z
-PLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->matches(Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;)Z
-HSPLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->process()V
+HPLcom/android/server/wm/TaskChangeNotificationController;->unregisterTaskStackListener(Landroid/app/ITaskStackListener;)V
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;-><init>(Lcom/android/server/wm/ActivityStackSupervisor;)V
+HSPLcom/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;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;->canApplyFreeformWindowPolicy(Lcom/android/server/wm/DisplayContent;I)Z
+HPLcom/android/server/wm/TaskLaunchParamsModifier;->canInheritWindowingModeFromSource(Lcom/android/server/wm/DisplayContent;Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;->getPreferredLaunchDisplay(Lcom/android/server/wm/Task;Landroid/app/ActivityOptions;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;->initLogBuilder(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/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;ILcom/android/server/wm/LaunchParamsController$LaunchParams;Lcom/android/server/wm/LaunchParamsController$LaunchParams;)I
+HSPLcom/android/server/wm/TaskLaunchParamsModifier;->outputLog()V
+HSPLcom/android/server/wm/TaskOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;)V
+HSPLcom/android/server/wm/TaskOrganizerController;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/WindowManagerGlobalLock;)V
+HPLcom/android/server/wm/TaskOrganizerController;->applyContainerTransaction(Landroid/view/WindowContainerTransaction;)V
+PLcom/android/server/wm/TaskOrganizerController;->applyWindowContainerChange(Lcom/android/server/wm/WindowContainer;Landroid/view/WindowContainerTransaction$Change;)I
+HSPLcom/android/server/wm/TaskOrganizerController;->dispatchPendingTaskInfoChanges()V
+PLcom/android/server/wm/TaskOrganizerController;->enforceStackPermission(Ljava/lang/String;)V
+HSPLcom/android/server/wm/TaskOrganizerController;->getTaskOrganizer(I)Landroid/view/ITaskOrganizer;
+PLcom/android/server/wm/TaskOrganizerController;->resizePinnedStackIfNeeded(Lcom/android/server/wm/ConfigurationContainer;IILandroid/content/res/Configuration;)V
+PLcom/android/server/wm/TaskOrganizerController;->sanitizeAndApplyChange(Lcom/android/server/wm/WindowContainer;Landroid/view/WindowContainerTransaction$Change;)I
+PLcom/android/server/wm/TaskPersister$1;-><init>(Lcom/android/server/wm/TaskPersister;)V
+PLcom/android/server/wm/TaskPersister$1;->compare(Lcom/android/server/wm/Task;Lcom/android/server/wm/Task;)I
+PLcom/android/server/wm/TaskPersister$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HPLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;-><init>(Ljava/lang/String;Landroid/graphics/Bitmap;)V
+HPLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->matches(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;)Z
+HPLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->matches(Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;)Z
+HPLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->process()V
 PLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->updateFrom(Lcom/android/server/wm/PersisterQueue$WriteQueueItem;)V
 PLcom/android/server/wm/TaskPersister$ImageWriteQueueItem;->updateFrom(Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;)V
-PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->process()V
-PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->saveToXml(Lcom/android/server/wm/TaskRecord;)Ljava/io/StringWriter;
+HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/wm/Task;Lcom/android/server/wm/ActivityTaskManagerService;)V
+PLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->access$200(Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Lcom/android/server/wm/Task;
+HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->process()V
+HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->saveToXml(Lcom/android/server/wm/Task;)Ljava/io/StringWriter;
 HSPLcom/android/server/wm/TaskPersister;-><init>(Ljava/io/File;Lcom/android/server/wm/ActivityStackSupervisor;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/RecentTasks;Lcom/android/server/wm/PersisterQueue;)V
+HPLcom/android/server/wm/TaskPersister;->access$000(I)Ljava/io/File;
+PLcom/android/server/wm/TaskPersister;->access$100(Ljava/lang/String;)Z
+HPLcom/android/server/wm/TaskPersister;->createParentDirectory(Ljava/lang/String;)Z
+PLcom/android/server/wm/TaskPersister;->getImageFromWriteQueue(Ljava/lang/String;)Landroid/graphics/Bitmap;
 PLcom/android/server/wm/TaskPersister;->getTaskDescriptionIcon(Ljava/lang/String;)Landroid/graphics/Bitmap;
+HPLcom/android/server/wm/TaskPersister;->getUserImagesDir(I)Ljava/io/File;
 HSPLcom/android/server/wm/TaskPersister;->getUserPersistedTaskIdsFile(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskPersister;->getUserTasksDir(I)Ljava/io/File;
+PLcom/android/server/wm/TaskPersister;->lambda$getImageFromWriteQueue$2(Ljava/lang/String;Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;)Z
+PLcom/android/server/wm/TaskPersister;->lambda$removeThumbnails$0(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;)Z
+PLcom/android/server/wm/TaskPersister;->lambda$wakeup$1(Lcom/android/server/wm/Task;Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Z
 HSPLcom/android/server/wm/TaskPersister;->loadPersistedTaskIdsForUser(I)Landroid/util/SparseBooleanArray;
-HSPLcom/android/server/wm/TaskPersister;->onPreProcessItem(Z)V
-HSPLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
-HSPLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[Ljava/io/File;)V
-HSPLcom/android/server/wm/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
-HSPLcom/android/server/wm/TaskPersister;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/wm/TaskRecord;
-PLcom/android/server/wm/TaskPersister;->wakeup(Lcom/android/server/wm/TaskRecord;Z)V
-PLcom/android/server/wm/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
-HSPLcom/android/server/wm/TaskPersister;->writeTaskIdsFiles()V
+HPLcom/android/server/wm/TaskPersister;->onPreProcessItem(Z)V
+HPLcom/android/server/wm/TaskPersister;->removeObsoleteFiles(Landroid/util/ArraySet;)V
+HPLcom/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;->restoreImage(Ljava/lang/String;)Landroid/graphics/Bitmap;
+HPLcom/android/server/wm/TaskPersister;->restoreTasksForUserLocked(ILandroid/util/SparseBooleanArray;)Ljava/util/List;
+PLcom/android/server/wm/TaskPersister;->saveImage(Landroid/graphics/Bitmap;Ljava/lang/String;)V
+PLcom/android/server/wm/TaskPersister;->taskIdToTask(ILjava/util/ArrayList;)Lcom/android/server/wm/Task;
+PLcom/android/server/wm/TaskPersister;->unloadUserDataFromMemory(I)V
+HPLcom/android/server/wm/TaskPersister;->wakeup(Lcom/android/server/wm/Task;Z)V
+HPLcom/android/server/wm/TaskPersister;->writePersistedTaskIdsForUser(Landroid/util/SparseBooleanArray;I)V
+HPLcom/android/server/wm/TaskPersister;->writeTaskIdsFiles()V
 HSPLcom/android/server/wm/TaskPositioningController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/input/InputManagerService;Landroid/app/IActivityTaskManager;Landroid/os/Looper;)V
 PLcom/android/server/wm/TaskPositioningController;->handleTapOutsideTask(Lcom/android/server/wm/DisplayContent;II)V
 HSPLcom/android/server/wm/TaskPositioningController;->hideInputSurface(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/wm/TaskPositioningController;->isPositioningLocked()Z
 PLcom/android/server/wm/TaskPositioningController;->lambda$handleTapOutsideTask$0$TaskPositioningController(Lcom/android/server/wm/DisplayContent;II)V
-HSPLcom/android/server/wm/TaskRecord$TaskActivitiesReport;-><init>()V
-HSPLcom/android/server/wm/TaskRecord$TaskActivitiesReport;->reset()V
-HSPLcom/android/server/wm/TaskRecord$TaskRecordFactory;->create(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIILjava/lang/String;Ljava/util/ArrayList;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZII)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/TaskRecord$TaskRecordFactory;->create(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/TaskRecord$TaskRecordFactory;->restoreFromXml(Lorg/xmlpull/v1/XmlPullParser;Lcom/android/server/wm/ActivityStackSupervisor;)Lcom/android/server/wm/TaskRecord;
-HSPLcom/android/server/wm/TaskRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIILjava/lang/String;Ljava/util/ArrayList;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZII)V
-HSPLcom/android/server/wm/TaskRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V
-HSPLcom/android/server/wm/TaskRecord;->addActivityAtIndex(ILcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/TaskRecord;->addActivityToTop(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/TaskRecord;->addStartingWindowsForVisibleActivities(Z)V
-PLcom/android/server/wm/TaskRecord;->adjustForMinimalTaskDimensions(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskRecord;->autoRemoveFromRecents()Z
-PLcom/android/server/wm/TaskRecord;->calculateInsetFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayInfo;)V
-PLcom/android/server/wm/TaskRecord;->canBeLaunchedOnDisplay(I)Z
-PLcom/android/server/wm/TaskRecord;->canResizeToBounds(Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/TaskRecord;->cleanUpResourcesForDestroy()V
-HSPLcom/android/server/wm/TaskRecord;->clearAllPendingOptions()V
-HSPLcom/android/server/wm/TaskRecord;->clearRootProcess()V
-PLcom/android/server/wm/TaskRecord;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/TaskRecord;->computeConfigResourceOverrides(Landroid/content/res/Configuration;Landroid/content/res/Configuration;Z)V
-HSPLcom/android/server/wm/TaskRecord;->createTask(ZZ)V
-HSPLcom/android/server/wm/TaskRecord;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskRecord;->fillTaskInfo(Landroid/app/TaskInfo;)V
-PLcom/android/server/wm/TaskRecord;->findActivityInHistoryLocked(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->findEffectiveRootIndex()I
-HSPLcom/android/server/wm/TaskRecord;->getActivityType()I
-HSPLcom/android/server/wm/TaskRecord;->getAllRunningVisibleActivitiesLocked(Ljava/util/ArrayList;)V
-HSPLcom/android/server/wm/TaskRecord;->getBaseIntent()Landroid/content/Intent;
-HSPLcom/android/server/wm/TaskRecord;->getChildAt(I)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
-HSPLcom/android/server/wm/TaskRecord;->getChildCount()I
-HSPLcom/android/server/wm/TaskRecord;->getInactiveDuration()J
-HSPLcom/android/server/wm/TaskRecord;->getLaunchBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskRecord;->getNumRunningActivities(Lcom/android/server/wm/TaskRecord$TaskActivitiesReport;)V
-HSPLcom/android/server/wm/TaskRecord;->getParent()Lcom/android/server/wm/ConfigurationContainer;
-HSPLcom/android/server/wm/TaskRecord;->getRootActivity()Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/TaskRecord;->getSnapshot(Z)Landroid/app/ActivityManager$TaskSnapshot;
-HSPLcom/android/server/wm/TaskRecord;->getStack()Lcom/android/server/wm/ActivityStack;
-HSPLcom/android/server/wm/TaskRecord;->getStackId()I
-HSPLcom/android/server/wm/TaskRecord;->getTask()Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskRecord;->getTaskInfo()Landroid/app/ActivityManager$RunningTaskInfo;
-HSPLcom/android/server/wm/TaskRecord;->getTaskRecordFactory()Lcom/android/server/wm/TaskRecord$TaskRecordFactory;
-HSPLcom/android/server/wm/TaskRecord;->getTopActivity()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->getTopActivity(Z)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->getWindowContainerBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskRecord;->intersectWithInsetsIfFits(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskRecord;->isClearingToReuseTask()Z
-HSPLcom/android/server/wm/TaskRecord;->isResizeable()Z
-PLcom/android/server/wm/TaskRecord;->isSameIntentFilter(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/TaskRecord;->lockTaskAuthToString()Ljava/lang/String;
-HSPLcom/android/server/wm/TaskRecord;->okToShowLocked()Z
-HSPLcom/android/server/wm/TaskRecord;->onActivityStateChanged(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityStack$ActivityState;Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskRecord;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/TaskRecord;->onParentChanged()V
-PLcom/android/server/wm/TaskRecord;->onSnapshotChanged(Landroid/app/ActivityManager$TaskSnapshot;)V
-HSPLcom/android/server/wm/TaskRecord;->onlyHasTaskOverlayActivities(Z)Z
-PLcom/android/server/wm/TaskRecord;->performClearTaskAtIndexLocked(IZLjava/lang/String;)V
-PLcom/android/server/wm/TaskRecord;->performClearTaskForReuseLocked(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
-PLcom/android/server/wm/TaskRecord;->performClearTaskLocked()V
-HSPLcom/android/server/wm/TaskRecord;->performClearTaskLocked(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->removeActivity(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/TaskRecord;->removeActivity(Lcom/android/server/wm/ActivityRecord;Z)Z
-PLcom/android/server/wm/TaskRecord;->removeTaskActivitiesLocked(ZLjava/lang/String;)V
-HSPLcom/android/server/wm/TaskRecord;->removeWindowContainer()V
-HSPLcom/android/server/wm/TaskRecord;->removedFromRecents()V
-PLcom/android/server/wm/TaskRecord;->reparent(Lcom/android/server/wm/ActivityStack;IIZZZLjava/lang/String;)Z
-PLcom/android/server/wm/TaskRecord;->reparent(Lcom/android/server/wm/ActivityStack;ZIZZZLjava/lang/String;)Z
-PLcom/android/server/wm/TaskRecord;->resize(Landroid/graphics/Rect;IZZ)Z
-HSPLcom/android/server/wm/TaskRecord;->resolveOverrideConfiguration(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/TaskRecord;->returnsToHomeStack()Z
-HSPLcom/android/server/wm/TaskRecord;->saveLaunchingStateIfNeeded()V
-PLcom/android/server/wm/TaskRecord;->saveToXml(Lorg/xmlpull/v1/XmlSerializer;)V
-HSPLcom/android/server/wm/TaskRecord;->setDisplayedBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskRecord;->setFrontOfTask()V
-HSPLcom/android/server/wm/TaskRecord;->setIntent(Landroid/content/Intent;Landroid/content/pm/ActivityInfo;)V
-HSPLcom/android/server/wm/TaskRecord;->setIntent(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/TaskRecord;->setLockTaskAuth()V
-HSPLcom/android/server/wm/TaskRecord;->setLockTaskAuth(Lcom/android/server/wm/ActivityRecord;)V
-HSPLcom/android/server/wm/TaskRecord;->setNextAffiliate(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/TaskRecord;->setPrevAffiliate(Lcom/android/server/wm/TaskRecord;)V
-HSPLcom/android/server/wm/TaskRecord;->setRootProcess(Lcom/android/server/wm/WindowProcessController;)V
-HSPLcom/android/server/wm/TaskRecord;->setStack(Lcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/TaskRecord;->supportsSplitScreenWindowingMode()Z
-HSPLcom/android/server/wm/TaskRecord;->toString()Ljava/lang/String;
-HSPLcom/android/server/wm/TaskRecord;->topRunningActivityLocked()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->topRunningActivityWithStartingWindowLocked()Lcom/android/server/wm/ActivityRecord;
-HSPLcom/android/server/wm/TaskRecord;->touchActiveTime()V
-HSPLcom/android/server/wm/TaskRecord;->updateEffectiveIntent()V
-HSPLcom/android/server/wm/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/TaskRecord;->updateOverrideConfiguration(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/TaskRecord;->updateOverrideConfigurationFromLaunchBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskRecord;->updateTaskDescription()V
-PLcom/android/server/wm/TaskRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-PLcom/android/server/wm/TaskSnapshotCache;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
-PLcom/android/server/wm/TaskSnapshotCache;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/TaskSnapshotCache;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/TaskSnapshotCache;->onTaskRemoved(I)V
-PLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V
+PLcom/android/server/wm/TaskScreenshotAnimatable;-><init>(Ljava/util/function/Function;Lcom/android/server/wm/Task;Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;)V
+PLcom/android/server/wm/TaskScreenshotAnimatable;->commitPendingTransaction()V
+PLcom/android/server/wm/TaskScreenshotAnimatable;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/TaskScreenshotAnimatable;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/TaskScreenshotAnimatable;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/TaskScreenshotAnimatable;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/TaskScreenshotAnimatable;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/TaskScreenshotAnimatable;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/TaskSnapshotCache$CacheEntry;-><init>(Landroid/app/ActivityManager$TaskSnapshot;Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/TaskSnapshotCache;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotLoader;)V
+HSPLcom/android/server/wm/TaskSnapshotCache;->clearRunningCache()V
+HPLcom/android/server/wm/TaskSnapshotCache;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/TaskSnapshotCache;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotCache;->onAppDied(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/TaskSnapshotCache;->onAppRemoved(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/TaskSnapshotCache;->onTaskRemoved(I)V
+HPLcom/android/server/wm/TaskSnapshotCache;->putSnapshot(Lcom/android/server/wm/Task;Landroid/app/ActivityManager$TaskSnapshot;)V
+HPLcom/android/server/wm/TaskSnapshotCache;->removeRunningEntry(I)V
+PLcom/android/server/wm/TaskSnapshotCache;->tryRestoreFromDisk(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
 HSPLcom/android/server/wm/TaskSnapshotController;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-PLcom/android/server/wm/TaskSnapshotController;->addSkipClosingAppSnapshotTasks(Landroid/util/ArraySet;)V
-PLcom/android/server/wm/TaskSnapshotController;->createStartingSurface(Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
-PLcom/android/server/wm/TaskSnapshotController;->drawAppThemeSnapshot(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->addSkipClosingAppSnapshotTasks(Landroid/util/ArraySet;)V
+HSPLcom/android/server/wm/TaskSnapshotController;->clearSnapshotCache()V
+HPLcom/android/server/wm/TaskSnapshotController;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
+HPLcom/android/server/wm/TaskSnapshotController;->createTaskSnapshot(Lcom/android/server/wm/Task;FI)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
+HPLcom/android/server/wm/TaskSnapshotController;->drawAppThemeSnapshot(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
 PLcom/android/server/wm/TaskSnapshotController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/TaskSnapshotController;->findAppTokenForSnapshot(Lcom/android/server/wm/Task;)Lcom/android/server/wm/AppWindowToken;
+HPLcom/android/server/wm/TaskSnapshotController;->findAppTokenForSnapshot(Lcom/android/server/wm/Task;)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/TaskSnapshotController;->getClosingTasks(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
-HSPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
-HSPLcom/android/server/wm/TaskSnapshotController;->getSnapshotMode(Lcom/android/server/wm/Task;)I
-PLcom/android/server/wm/TaskSnapshotController;->lambda$screenTurningOff$1$TaskSnapshotController(Lcom/android/server/wm/Task;)V
-PLcom/android/server/wm/TaskSnapshotController;->lambda$screenTurningOff$2$TaskSnapshotController(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
-PLcom/android/server/wm/TaskSnapshotController;->minRect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskSnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/AppWindowToken;Z)V
-HSPLcom/android/server/wm/TaskSnapshotController;->notifyTaskRemovedFromRecents(II)V
-PLcom/android/server/wm/TaskSnapshotController;->onAppDied(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/TaskSnapshotController;->onAppRemoved(Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/TaskSnapshotController;->getInsets(Lcom/android/server/wm/WindowState;)Landroid/graphics/Rect;
+HPLcom/android/server/wm/TaskSnapshotController;->getSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->getSnapshotMode(Lcom/android/server/wm/Task;)I
+HPLcom/android/server/wm/TaskSnapshotController;->getSystemUiVisibility(Lcom/android/server/wm/Task;)I
+HSPLcom/android/server/wm/TaskSnapshotController;->handleClosingApps(Landroid/util/ArraySet;)V
+PLcom/android/server/wm/TaskSnapshotController;->lambda$findAppTokenForSnapshot$0(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/TaskSnapshotController;->lambda$findAppTokenForSnapshot$1(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/TaskSnapshotController;->lambda$screenTurningOff$2$TaskSnapshotController(Lcom/android/server/wm/Task;)V
+HPLcom/android/server/wm/TaskSnapshotController;->lambda$screenTurningOff$3$TaskSnapshotController(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
+HPLcom/android/server/wm/TaskSnapshotController;->minRect(Landroid/graphics/Rect;Landroid/graphics/Rect;)Landroid/graphics/Rect;
+HSPLcom/android/server/wm/TaskSnapshotController;->notifyAppVisibilityChanged(Lcom/android/server/wm/ActivityRecord;Z)V
+PLcom/android/server/wm/TaskSnapshotController;->notifyTaskRemovedFromRecents(II)V
+PLcom/android/server/wm/TaskSnapshotController;->onAppDied(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/TaskSnapshotController;->onAppRemoved(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/TaskSnapshotController;->onTransitionStarting(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
-PLcom/android/server/wm/TaskSnapshotController;->screenTurningOff(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
-HSPLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V
-HSPLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->prepareTaskSnapshot(Lcom/android/server/wm/Task;FILandroid/app/ActivityManager$TaskSnapshot$Builder;)Z
+PLcom/android/server/wm/TaskSnapshotController;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+PLcom/android/server/wm/TaskSnapshotController;->removeSnapshotCache(I)V
+HPLcom/android/server/wm/TaskSnapshotController;->screenTurningOff(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
+PLcom/android/server/wm/TaskSnapshotController;->setPersisterPaused(Z)V
+HSPLcom/android/server/wm/TaskSnapshotController;->shouldDisableSnapshots()Z
+PLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;)Landroid/app/ActivityManager$TaskSnapshot;
+HPLcom/android/server/wm/TaskSnapshotController;->snapshotTask(Lcom/android/server/wm/Task;FI)Landroid/app/ActivityManager$TaskSnapshot;
 HSPLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;)V
+HSPLcom/android/server/wm/TaskSnapshotController;->snapshotTasks(Landroid/util/ArraySet;Z)V
 HSPLcom/android/server/wm/TaskSnapshotController;->systemReady()V
-PLcom/android/server/wm/TaskSnapshotLoader;->loadTask(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
+HSPLcom/android/server/wm/TaskSnapshotLoader;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V
+HPLcom/android/server/wm/TaskSnapshotLoader;->loadTask(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
+HSPLcom/android/server/wm/TaskSnapshotPersister$1;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Ljava/lang/String;)V
 HSPLcom/android/server/wm/TaskSnapshotPersister$1;->run()V
-HSPLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->write()V
-PLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
-HSPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
+PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;II)V
+PLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;->write()V
+HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Landroid/util/ArraySet;[I)V
+HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->getTaskId(Ljava/lang/String;)I
+HPLcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;->write()V
+PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;IILandroid/app/ActivityManager$TaskSnapshot;)V
+PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->access$000(Lcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;)I
 PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onDequeuedLocked()V
-PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->write()V
-PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z
-PLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z
-HSPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onDequeuedLocked()V
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onQueuedLocked()V
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->write()V
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeBuffer()Z
+HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->writeProto()Z
+HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;)V
+HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;Lcom/android/server/wm/TaskSnapshotPersister$1;)V
+PLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onDequeuedLocked()V
+HPLcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;->onQueuedLocked()V
+HSPLcom/android/server/wm/TaskSnapshotPersister;-><clinit>()V
 HSPLcom/android/server/wm/TaskSnapshotPersister;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;)V
-HSPLcom/android/server/wm/TaskSnapshotPersister;->ensureStoreQueueDepthLocked()V
-HSPLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File;
-HSPLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File;
-HSPLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File;
+HSPLcom/android/server/wm/TaskSnapshotPersister;->access$100(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object;
+PLcom/android/server/wm/TaskSnapshotPersister;->access$1000(Lcom/android/server/wm/TaskSnapshotPersister;)F
+PLcom/android/server/wm/TaskSnapshotPersister;->access$1100(Lcom/android/server/wm/TaskSnapshotPersister;)Landroid/util/ArraySet;
+HSPLcom/android/server/wm/TaskSnapshotPersister;->access$200(Lcom/android/server/wm/TaskSnapshotPersister;)Z
+HSPLcom/android/server/wm/TaskSnapshotPersister;->access$300(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
+HSPLcom/android/server/wm/TaskSnapshotPersister;->access$402(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z
+PLcom/android/server/wm/TaskSnapshotPersister;->access$600(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
+PLcom/android/server/wm/TaskSnapshotPersister;->access$700(Lcom/android/server/wm/TaskSnapshotPersister;I)Z
+HPLcom/android/server/wm/TaskSnapshotPersister;->access$800(Lcom/android/server/wm/TaskSnapshotPersister;I)Ljava/io/File;
+PLcom/android/server/wm/TaskSnapshotPersister;->access$900(Lcom/android/server/wm/TaskSnapshotPersister;II)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->createDirectory(I)Z
+HPLcom/android/server/wm/TaskSnapshotPersister;->deleteSnapshot(II)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->ensureStoreQueueDepthLocked()V
+HPLcom/android/server/wm/TaskSnapshotPersister;->getBitmapFile(II)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getDirectory(I)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getProtoFile(II)Ljava/io/File;
+HPLcom/android/server/wm/TaskSnapshotPersister;->getReducedResolutionBitmapFile(II)Ljava/io/File;
 PLcom/android/server/wm/TaskSnapshotPersister;->getReducedScale()F
-HSPLcom/android/server/wm/TaskSnapshotPersister;->onTaskRemovedFromRecents(II)V
-PLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/app/ActivityManager$TaskSnapshot;)V
-HSPLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V
-HSPLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->onTaskRemovedFromRecents(II)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->persistSnapshot(IILandroid/app/ActivityManager$TaskSnapshot;)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->removeObsoleteFiles(Landroid/util/ArraySet;[I)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->sendToQueueLocked(Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;)V
+HPLcom/android/server/wm/TaskSnapshotPersister;->setPaused(Z)V
 HSPLcom/android/server/wm/TaskSnapshotPersister;->start()V
+PLcom/android/server/wm/TaskSnapshotPersister;->use16BitFormat()Z
 PLcom/android/server/wm/TaskSnapshotSurface$1;-><init>(Landroid/os/Looper;)V
 PLcom/android/server/wm/TaskSnapshotSurface$1;->handleMessage(Landroid/os/Message;)V
-PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;-><init>(IIIII)V
+HPLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;-><init>(IIILandroid/app/ActivityManager$TaskDescription;FLandroid/view/InsetsState;)V
 PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawDecors(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawNavigationBarBackground(Landroid/graphics/Canvas;)V
+HPLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawNavigationBarBackground(Landroid/graphics/Canvas;)V
 PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->drawStatusBarBackground(Landroid/graphics/Canvas;Landroid/graphics/Rect;I)V
 PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->getStatusBarColorViewHeight()I
-PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->setInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskSnapshotSurface$Window;-><init>()V
-PLcom/android/server/wm/TaskSnapshotSurface$Window;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
-PLcom/android/server/wm/TaskSnapshotSurface;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotSurface$Window;Landroid/view/SurfaceControl;Landroid/app/ActivityManager$TaskSnapshot;Ljava/lang/CharSequence;IIIIIILandroid/graphics/Rect;I)V
+PLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->isNavigationBarColorViewVisible()Z
+HPLcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;->setInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/TaskSnapshotSurface$Window;-><init>()V
+HPLcom/android/server/wm/TaskSnapshotSurface$Window;->resized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;Landroid/graphics/Rect;ZZILandroid/view/DisplayCutout$ParcelableWrapper;)V
+PLcom/android/server/wm/TaskSnapshotSurface$Window;->setOuter(Lcom/android/server/wm/TaskSnapshotSurface;)V
+PLcom/android/server/wm/TaskSnapshotSurface;-><clinit>()V
+HPLcom/android/server/wm/TaskSnapshotSurface;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/TaskSnapshotSurface$Window;Landroid/view/SurfaceControl;Landroid/app/ActivityManager$TaskSnapshot;Ljava/lang/CharSequence;Landroid/app/ActivityManager$TaskDescription;IIILandroid/graphics/Rect;ILandroid/view/InsetsState;)V
+PLcom/android/server/wm/TaskSnapshotSurface;->access$000(Lcom/android/server/wm/TaskSnapshotSurface;)Lcom/android/server/wm/WindowManagerService;
+PLcom/android/server/wm/TaskSnapshotSurface;->access$100(Lcom/android/server/wm/TaskSnapshotSurface;)Z
+PLcom/android/server/wm/TaskSnapshotSurface;->access$200(Lcom/android/server/wm/TaskSnapshotSurface;)V
+PLcom/android/server/wm/TaskSnapshotSurface;->access$300(Lcom/android/server/wm/TaskSnapshotSurface;)I
+PLcom/android/server/wm/TaskSnapshotSurface;->access$400()Landroid/os/Handler;
 PLcom/android/server/wm/TaskSnapshotSurface;->calculateSnapshotCrop()Landroid/graphics/Rect;
 PLcom/android/server/wm/TaskSnapshotSurface;->calculateSnapshotFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect;
-PLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/AppWindowToken;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface;
+HPLcom/android/server/wm/TaskSnapshotSurface;->create(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityManager$TaskSnapshot;)Lcom/android/server/wm/TaskSnapshotSurface;
 PLcom/android/server/wm/TaskSnapshotSurface;->drawBackgroundAndBars(Landroid/graphics/Canvas;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskSnapshotSurface;->drawSizeMismatchSnapshot(Landroid/graphics/GraphicBuffer;)V
-PLcom/android/server/wm/TaskSnapshotSurface;->drawSnapshot()V
-PLcom/android/server/wm/TaskSnapshotSurface;->remove()V
-PLcom/android/server/wm/TaskSnapshotSurface;->reportDrawn()V
-PLcom/android/server/wm/TaskSnapshotSurface;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskStack;-><init>(Lcom/android/server/wm/WindowManagerService;ILcom/android/server/wm/ActivityStack;)V
-HSPLcom/android/server/wm/TaskStack;->addTask(Lcom/android/server/wm/Task;IZZ)V
-PLcom/android/server/wm/TaskStack;->animateResizePinnedStack(Landroid/graphics/Rect;Landroid/graphics/Rect;IZ)V
-PLcom/android/server/wm/TaskStack;->calculatePinnedBoundsForConfigChange(Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/TaskStack;->checkCompleteDeferredRemoval()Z
-PLcom/android/server/wm/TaskStack;->compareTo(Lcom/android/server/wm/WindowContainer;)I
-HSPLcom/android/server/wm/TaskStack;->computeMinPosition(II)I
-PLcom/android/server/wm/TaskStack;->deferScheduleMultiWindowModeChanged()Z
-PLcom/android/server/wm/TaskStack;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-HSPLcom/android/server/wm/TaskStack;->fillsParent()Z
-HSPLcom/android/server/wm/TaskStack;->findHomeTask()Lcom/android/server/wm/Task;
-HSPLcom/android/server/wm/TaskStack;->findPositionForTask(Lcom/android/server/wm/Task;IZZ)I
-HSPLcom/android/server/wm/TaskStack;->getAnimatingAppWindowTokenRegistry()Lcom/android/server/wm/AnimatingAppWindowTokenRegistry;
-PLcom/android/server/wm/TaskStack;->getAnimationOrCurrentBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskStack;->getBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskStack;->getBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskStack;->getDimBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskStack;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
-PLcom/android/server/wm/TaskStack;->getFinalAnimationBounds(Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskStack;->getFinalAnimationSourceHintBounds(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/TaskStack;->getName()Ljava/lang/String;
-HSPLcom/android/server/wm/TaskStack;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
-PLcom/android/server/wm/TaskStack;->getPictureInPictureBounds(FLandroid/graphics/Rect;)Landroid/graphics/Rect;
-PLcom/android/server/wm/TaskStack;->getRawBounds()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/TaskStack;->getRelativeDisplayedPosition(Landroid/graphics/Point;)V
-HSPLcom/android/server/wm/TaskStack;->getStackOutset()I
-HSPLcom/android/server/wm/TaskStack;->getSurfaceControl()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/TaskStack;->isAdjustedForIme()Z
-HSPLcom/android/server/wm/TaskStack;->isAdjustedForMinimizedDockedStack()Z
-HSPLcom/android/server/wm/TaskStack;->isAnimatingBounds()Z
-PLcom/android/server/wm/TaskStack;->isAnimatingBoundsToFullscreen()Z
-PLcom/android/server/wm/TaskStack;->isAttached()Z
-HSPLcom/android/server/wm/TaskStack;->isForceScaled()Z
-HSPLcom/android/server/wm/TaskStack;->isTaskAnimating()Z
-PLcom/android/server/wm/TaskStack;->lambda$animateResizePinnedStack$2$TaskStack(Lcom/android/server/wm/DisplayContent;Landroid/graphics/Rect;Landroid/graphics/Rect;IIZZ)V
-PLcom/android/server/wm/TaskStack;->lastAnimatingBoundsWasToFullscreen()Z
-PLcom/android/server/wm/TaskStack;->onAllWindowsDrawn()V
-PLcom/android/server/wm/TaskStack;->onAnimationEnd(ZLandroid/graphics/Rect;Z)V
-PLcom/android/server/wm/TaskStack;->onAnimationStart(ZZ)Z
-HSPLcom/android/server/wm/TaskStack;->onConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/TaskStack;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/TaskStack;->onParentChanged()V
-PLcom/android/server/wm/TaskStack;->onPipAnimationEndResize()V
-HSPLcom/android/server/wm/TaskStack;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-PLcom/android/server/wm/TaskStack;->pinnedStackResizeDisallowed()Z
-HSPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;Z)V
-HSPLcom/android/server/wm/TaskStack;->positionChildAt(ILcom/android/server/wm/Task;ZZ)V
-PLcom/android/server/wm/TaskStack;->positionChildAtBottom(Lcom/android/server/wm/Task;Z)V
-HSPLcom/android/server/wm/TaskStack;->positionChildAtTop(Lcom/android/server/wm/Task;Z)V
-HSPLcom/android/server/wm/TaskStack;->prepareFreezingTaskBounds()V
-HSPLcom/android/server/wm/TaskStack;->prepareSurfaces()V
-HSPLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/Task;)V
-HSPLcom/android/server/wm/TaskStack;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-PLcom/android/server/wm/TaskStack;->removeIfPossible()V
-PLcom/android/server/wm/TaskStack;->removeImmediately()V
-HSPLcom/android/server/wm/TaskStack;->resetAdjustedForIme(Z)V
-HSPLcom/android/server/wm/TaskStack;->resetAnimationBackgroundAnimator()V
-PLcom/android/server/wm/TaskStack;->setAnimationBackground(Lcom/android/server/wm/WindowStateAnimator;I)V
-PLcom/android/server/wm/TaskStack;->setAnimationFinalBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Z)V
-PLcom/android/server/wm/TaskStack;->setPictureInPictureActions(Ljava/util/List;)V
-PLcom/android/server/wm/TaskStack;->setPictureInPictureAspectRatio(F)V
-PLcom/android/server/wm/TaskStack;->setPinnedStackSize(Landroid/graphics/Rect;Landroid/graphics/Rect;)Z
-HSPLcom/android/server/wm/TaskStack;->setTouchExcludeRegion(Lcom/android/server/wm/Task;ILandroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/TaskStack;->shouldDeferStartOnMoveToFullscreen()Z
-HSPLcom/android/server/wm/TaskStack;->shouldIgnoreInput()Z
-PLcom/android/server/wm/TaskStack;->showAnimationSurface(F)V
-PLcom/android/server/wm/TaskStack;->taskIdFromPoint(II)I
-HSPLcom/android/server/wm/TaskStack;->toShortString()Ljava/lang/String;
-HSPLcom/android/server/wm/TaskStack;->updateSurfaceSize(Landroid/view/SurfaceControl$Transaction;)V
-PLcom/android/server/wm/TaskStack;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/TaskSnapshotSurface;->drawSizeMismatchSnapshot()V
+HPLcom/android/server/wm/TaskSnapshotSurface;->drawSnapshot()V
+HPLcom/android/server/wm/TaskSnapshotSurface;->remove()V
+HPLcom/android/server/wm/TaskSnapshotSurface;->reportDrawn()V
+HPLcom/android/server/wm/TaskSnapshotSurface;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/TaskTapPointerEventListener;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/TaskTapPointerEventListener;->lambda$new$0$TaskTapPointerEventListener()V
-HSPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
+HPLcom/android/server/wm/TaskTapPointerEventListener;->onPointerEvent(Landroid/view/MotionEvent;)V
 HSPLcom/android/server/wm/TaskTapPointerEventListener;->setTouchExcludeRegion(Landroid/graphics/Region;)V
+HSPLcom/android/server/wm/UnknownAppVisibilityController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/UnknownAppVisibilityController;->allResolved()Z
-HSPLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/AppWindowToken;)V
+HPLcom/android/server/wm/UnknownAppVisibilityController;->appRemovedOrHidden(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/UnknownAppVisibilityController;->clear()V
 PLcom/android/server/wm/UnknownAppVisibilityController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyLaunched(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyVisibilitiesUpdated()V
+PLcom/android/server/wm/UnknownAppVisibilityController;->lambda$FYhcjOhYWVp6HX5hr3GGaPg67Gc(Lcom/android/server/wm/UnknownAppVisibilityController;)V
+HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyLaunched(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyVisibilitiesUpdated()V
+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
 HSPLcom/android/server/wm/VrController;->changeVrModeLocked(ZLcom/android/server/wm/WindowProcessController;)Z
+HSPLcom/android/server/wm/VrController;->clearVrRenderThreadLocked(Z)V
+PLcom/android/server/wm/VrController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HPLcom/android/server/wm/VrController;->hasPersistentVrFlagSet()Z
+HPLcom/android/server/wm/VrController;->inVrMode()Z
+HSPLcom/android/server/wm/VrController;->onSystemReady()V
+HSPLcom/android/server/wm/VrController;->onTopProcChangedLocked(Lcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/VrController;->onVrModeChanged(Lcom/android/server/wm/ActivityRecord;)Z
-HSPLcom/android/server/wm/VrController;->setVrRenderThreadLocked(IIZ)I
+HPLcom/android/server/wm/VrController;->setVrRenderThreadLocked(IIZ)I
+PLcom/android/server/wm/VrController;->shouldDisableNonVrUiLocked()Z
 HSPLcom/android/server/wm/VrController;->toString()Ljava/lang/String;
-PLcom/android/server/wm/VrController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/VrController;->updateVrRenderThreadLocked(IZ)I
+HPLcom/android/server/wm/WallpaperAnimationAdapter;-><init>(Lcom/android/server/wm/WallpaperWindowToken;JJLjava/util/function/Consumer;)V
+HPLcom/android/server/wm/WallpaperAnimationAdapter;->createRemoteAnimationTarget()Landroid/view/RemoteAnimationTarget;
+PLcom/android/server/wm/WallpaperAnimationAdapter;->dumpDebug(Landroid/util/proto/ProtoOutputStream;)V
+PLcom/android/server/wm/WallpaperAnimationAdapter;->getLastAnimationType()I
+PLcom/android/server/wm/WallpaperAnimationAdapter;->getLeash()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WallpaperAnimationAdapter;->getLeashFinishedCallback()Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
+HPLcom/android/server/wm/WallpaperAnimationAdapter;->lambda$startWallpaperAnimations$0(JJLjava/util/function/Consumer;Ljava/util/ArrayList;Ljava/util/ArrayList;Lcom/android/server/wm/WallpaperWindowToken;)V
+PLcom/android/server/wm/WallpaperAnimationAdapter;->onAnimationCancelled(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WallpaperAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;ILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/WallpaperAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/WallpaperAnimationAdapter;->startWallpaperAnimations(Lcom/android/server/wm/WindowManagerService;JJLjava/util/function/Consumer;Ljava/util/ArrayList;)[Landroid/view/RemoteAnimationTarget;
+HSPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>()V
+HSPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;-><init>(Lcom/android/server/wm/WallpaperController$1;)V
+HSPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->reset()V
+HSPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setTopWallpaper(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setUseTopWallpaperAsTarget(Z)V
+HSPLcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;->setWallpaperTarget(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/WallpaperController;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/WallpaperController;->addWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V
 HSPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindows()V
 HSPLcom/android/server/wm/WallpaperController;->adjustWallpaperWindowsForAppTransitionIfNeeded(Landroid/util/ArraySet;Landroid/util/ArraySet;)V
 HSPLcom/android/server/wm/WallpaperController;->clearLastWallpaperTimeoutTime()V
-PLcom/android/server/wm/WallpaperController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HSPLcom/android/server/wm/WallpaperController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/WallpaperController;->findWallpaperTarget()V
 HSPLcom/android/server/wm/WallpaperController;->getWallpaperTarget()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WallpaperController;->hideDeferredWallpapersIfNeeded()V
-HSPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WallpaperController;->hideWallpapers(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WallpaperController;->isBelowWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->isFullscreen(Landroid/view/WindowManager$LayoutParams;)Z
 HSPLcom/android/server/wm/WallpaperController;->isWallpaperTarget(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/WallpaperController;->isWallpaperTargetAnimating()Z
 HSPLcom/android/server/wm/WallpaperController;->isWallpaperVisible()Z
 HSPLcom/android/server/wm/WallpaperController;->isWallpaperVisible(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/WallpaperController;->lambda$new$0$WallpaperController(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WallpaperController;->lambda$updateWallpaperWindowsTarget$1(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
 PLcom/android/server/wm/WallpaperController;->processWallpaperDrawPendingTimeout()Z
 PLcom/android/server/wm/WallpaperController;->removeWallpaperToken(Lcom/android/server/wm/WallpaperWindowToken;)V
 PLcom/android/server/wm/WallpaperController;->sendWindowWallpaperCommand(Lcom/android/server/wm/WindowState;Ljava/lang/String;IIILandroid/os/Bundle;Z)Landroid/os/Bundle;
-PLcom/android/server/wm/WallpaperController;->setWindowWallpaperPosition(Lcom/android/server/wm/WindowState;FFFF)V
+HPLcom/android/server/wm/WallpaperController;->setWindowWallpaperPosition(Lcom/android/server/wm/WindowState;FFFF)V
 PLcom/android/server/wm/WallpaperController;->startWallpaperAnimation(Landroid/view/animation/Animation;)V
 HSPLcom/android/server/wm/WallpaperController;->updateWallpaperOffset(Lcom/android/server/wm/WindowState;IIZ)Z
-PLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V
+HPLcom/android/server/wm/WallpaperController;->updateWallpaperOffsetLocked(Lcom/android/server/wm/WindowState;Z)V
 HSPLcom/android/server/wm/WallpaperController;->updateWallpaperTokens(Z)V
 PLcom/android/server/wm/WallpaperController;->updateWallpaperVisibility()V
 HSPLcom/android/server/wm/WallpaperController;->updateWallpaperWindowsTarget(Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;)V
-PLcom/android/server/wm/WallpaperController;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z
+HPLcom/android/server/wm/WallpaperController;->wallpaperOffsetsComplete(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WallpaperController;->wallpaperTransitionReady()Z
 HSPLcom/android/server/wm/WallpaperVisibilityListeners;-><init>()V
 HSPLcom/android/server/wm/WallpaperVisibilityListeners;->notifyWallpaperVisibilityChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
-HSPLcom/android/server/wm/WallpaperVisibilityListeners;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
-HSPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z
-HSPLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V
+PLcom/android/server/wm/WallpaperVisibilityListeners;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
+PLcom/android/server/wm/WallpaperVisibilityListeners;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
+HSPLcom/android/server/wm/WallpaperWindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;ZLcom/android/server/wm/DisplayContent;Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->forAllWallpaperWindows(Ljava/util/function/Consumer;)V
+HPLcom/android/server/wm/WallpaperWindowToken;->hasVisibleNotDrawnWallpaper()Z
+HPLcom/android/server/wm/WallpaperWindowToken;->hideWallpaperToken(ZLjava/lang/String;)V
 PLcom/android/server/wm/WallpaperWindowToken;->sendWindowWallpaperCommand(Ljava/lang/String;IIILandroid/os/Bundle;Z)V
 PLcom/android/server/wm/WallpaperWindowToken;->setExiting()V
 PLcom/android/server/wm/WallpaperWindowToken;->startAnimation(Landroid/view/animation/Animation;)V
 HSPLcom/android/server/wm/WallpaperWindowToken;->toString()Ljava/lang/String;
-PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(IIZ)V
-PLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperVisibility(Z)V
+HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperOffset(IIZ)V
+HPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperVisibility(Z)V
 HSPLcom/android/server/wm/WallpaperWindowToken;->updateWallpaperWindows(Z)V
-HSPLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;Landroid/graphics/Rect;ZIZF)V
-HSPLcom/android/server/wm/WindowAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
-PLcom/android/server/wm/WindowAnimationSpec;->calculateStatusBarTransitionStartTime()J
-HSPLcom/android/server/wm/WindowAnimationSpec;->canSkipFirstFrame()Z
-PLcom/android/server/wm/WindowAnimationSpec;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
-HSPLcom/android/server/wm/WindowAnimationSpec;->getBackgroundColor()I
-HSPLcom/android/server/wm/WindowAnimationSpec;->getDuration()J
-PLcom/android/server/wm/WindowAnimationSpec;->getShowWallpaper()Z
-HSPLcom/android/server/wm/WindowAnimationSpec;->needsEarlyWakeup()Z
+HPLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>()V
+HPLcom/android/server/wm/WindowAnimationSpec$TmpValues;-><init>(Lcom/android/server/wm/WindowAnimationSpec$1;)V
+HPLcom/android/server/wm/WindowAnimationSpec;-><init>(Landroid/view/animation/Animation;Landroid/graphics/Point;Landroid/graphics/Rect;ZIZF)V
+HPLcom/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
+HPLcom/android/server/wm/WindowAnimationSpec;->calculateStatusBarTransitionStartTime()J
+HPLcom/android/server/wm/WindowAnimationSpec;->canSkipFirstFrame()Z
+PLcom/android/server/wm/WindowAnimationSpec;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowAnimationSpec;->dumpDebugInner(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/WindowAnimationSpec;->findAlmostThereFraction(Landroid/view/animation/Interpolator;)F
+HPLcom/android/server/wm/WindowAnimationSpec;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
+HPLcom/android/server/wm/WindowAnimationSpec;->getDuration()J
+HPLcom/android/server/wm/WindowAnimationSpec;->getShowWallpaper()Z
+HPLcom/android/server/wm/WindowAnimationSpec;->lambda$new$0()Lcom/android/server/wm/WindowAnimationSpec$TmpValues;
+HPLcom/android/server/wm/WindowAnimationSpec;->needsEarlyWakeup()Z
+HSPLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;)V
+HSPLcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;-><init>(Lcom/android/server/wm/WindowAnimator;Lcom/android/server/wm/WindowAnimator$1;)V
 HSPLcom/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;->addAfterPrepareSurfacesRunnable(Ljava/lang/Runnable;)V
 HSPLcom/android/server/wm/WindowAnimator;->addDisplayLocked(I)V
 HSPLcom/android/server/wm/WindowAnimator;->animate(J)V
+PLcom/android/server/wm/WindowAnimator;->bulkUpdateParamsToString(I)Ljava/lang/String;
+HSPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
 PLcom/android/server/wm/WindowAnimator;->dumpLocked(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
 HSPLcom/android/server/wm/WindowAnimator;->executeAfterPrepareSurfacesRunnables()V
 HSPLcom/android/server/wm/WindowAnimator;->getDisplayContentsAnimatorLocked(I)Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;
-HSPLcom/android/server/wm/WindowAnimator;->getPendingLayoutChanges(I)I
-HSPLcom/android/server/wm/WindowAnimator;->getScreenRotationAnimationLocked(I)Lcom/android/server/wm/ScreenRotationAnimation;
 PLcom/android/server/wm/WindowAnimator;->isAnimating()Z
 PLcom/android/server/wm/WindowAnimator;->isAnimationScheduled()Z
 HSPLcom/android/server/wm/WindowAnimator;->lambda$new$0$WindowAnimator()V
@@ -17211,115 +38244,237 @@
 PLcom/android/server/wm/WindowAnimator;->removeDisplayLocked(I)V
 HSPLcom/android/server/wm/WindowAnimator;->requestRemovalOfReplacedWindows(Lcom/android/server/wm/WindowState;)V
 HSPLcom/android/server/wm/WindowAnimator;->scheduleAnimation()V
-HSPLcom/android/server/wm/WindowAnimator;->setAnimating(Z)V
-HSPLcom/android/server/wm/WindowAnimator;->setPendingLayoutChanges(II)V
-HSPLcom/android/server/wm/WindowAnimator;->setScreenRotationAnimationLocked(ILcom/android/server/wm/ScreenRotationAnimation;)V
+HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$1;)V
+HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->apply(Ljava/lang/Object;)Z
+HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->release()V
+HSPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;->setConsumer(Ljava/util/function/Consumer;)V
+HSPLcom/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;
 HSPLcom/android/server/wm/WindowContainer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+HSPLcom/android/server/wm/WindowContainer;->access$100(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
 HSPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;I)V
 HSPLcom/android/server/wm/WindowContainer;->addChild(Lcom/android/server/wm/WindowContainer;Ljava/util/Comparator;)V
+HPLcom/android/server/wm/WindowContainer;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZ)Z
+HPLcom/android/server/wm/WindowContainer;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZLcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)Z
+HPLcom/android/server/wm/WindowContainer;->applyAnimation(Landroid/view/WindowManager$LayoutParams;IZZLjava/lang/Runnable;)Z
+HSPLcom/android/server/wm/WindowContainer;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->asTask()Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/WindowContainer;->assignChildLayers()V
 HSPLcom/android/server/wm/WindowContainer;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/WindowContainer;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/wm/WindowContainer;->assignRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
-HSPLcom/android/server/wm/WindowContainer;->cancelAnimation()V
+HPLcom/android/server/wm/WindowContainer;->cancelAnimation()V
 HSPLcom/android/server/wm/WindowContainer;->checkAppWindowsReadyToShow()V
 HSPLcom/android/server/wm/WindowContainer;->checkCompleteDeferredRemoval()Z
-HSPLcom/android/server/wm/WindowContainer;->commitPendingTransaction()V
+HPLcom/android/server/wm/WindowContainer;->clearMagnificationSpec(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->commitPendingTransaction()V
 HSPLcom/android/server/wm/WindowContainer;->compareTo(Lcom/android/server/wm/WindowContainer;)I
-PLcom/android/server/wm/WindowContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-PLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/wm/WindowContainer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HSPLcom/android/server/wm/WindowContainer;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
+HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Consumer;Z)V
+HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Function;)Z
+PLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Function;Lcom/android/server/wm/WindowContainer;ZZ)Z
+HPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Function;Lcom/android/server/wm/WindowContainer;ZZ[Z)Z
+HSPLcom/android/server/wm/WindowContainer;->forAllActivities(Ljava/util/function/Function;Z)Z
+HSPLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;)V
+HSPLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Consumer;Z)V
+HSPLcom/android/server/wm/WindowContainer;->forAllTasks(Ljava/util/function/Function;)Z
+HPLcom/android/server/wm/WindowContainer;->forAllWallpaperWindows(Ljava/util/function/Consumer;)V
 HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
 HSPLcom/android/server/wm/WindowContainer;->forAllWindows(Ljava/util/function/Consumer;Z)V
 PLcom/android/server/wm/WindowContainer;->forceWindowsScaleableInTransaction(Z)V
-HSPLcom/android/server/wm/WindowContainer;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
-HSPLcom/android/server/wm/WindowContainer;->getAnimationLeashParent()Landroid/view/SurfaceControl;
-PLcom/android/server/wm/WindowContainer;->getAppAnimationLayer(I)Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Lcom/android/server/wm/WindowContainer;ZZ[Z)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getActivity(Ljava/util/function/Predicate;ZLcom/android/server/wm/WindowContainer;)Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getActivityAbove(Lcom/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;
+HSPLcom/android/server/wm/WindowContainer;->getAnimatingContainer()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getAnimation()Lcom/android/server/wm/AnimationAdapter;
+HPLcom/android/server/wm/WindowContainer;->getAnimationAdapter(Landroid/view/WindowManager$LayoutParams;IZZ)Landroid/util/Pair;
+HPLcom/android/server/wm/WindowContainer;->getAnimationBounds(I)Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowContainer;->getAnimationFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowContainer;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowContainer;->getAppAnimationLayer(I)Landroid/view/SurfaceControl;
+HSPLcom/android/server/wm/WindowContainer;->getBottomMostActivity()Lcom/android/server/wm/ActivityRecord;
+HPLcom/android/server/wm/WindowContainer;->getBottomMostTask()Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/ConfigurationContainer;
 HSPLcom/android/server/wm/WindowContainer;->getChildAt(I)Lcom/android/server/wm/WindowContainer;
 HSPLcom/android/server/wm/WindowContainer;->getChildCount()I
 HSPLcom/android/server/wm/WindowContainer;->getDimmer()Lcom/android/server/wm/Dimmer;
+HSPLcom/android/server/wm/WindowContainer;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
 HSPLcom/android/server/wm/WindowContainer;->getDisplayedBounds()Landroid/graphics/Rect;
+HSPLcom/android/server/wm/WindowContainer;->getOrientation()I
 HSPLcom/android/server/wm/WindowContainer;->getOrientation(I)I
 HSPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/ConfigurationContainer;
 HSPLcom/android/server/wm/WindowContainer;->getParent()Lcom/android/server/wm/WindowContainer;
-HSPLcom/android/server/wm/WindowContainer;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowContainer;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+HPLcom/android/server/wm/WindowContainer;->getParents(Ljava/util/LinkedList;)V
 HSPLcom/android/server/wm/WindowContainer;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
-HSPLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex()I
-HSPLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex(Lcom/android/server/wm/WindowContainer;)I
+HPLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex()I
+HPLcom/android/server/wm/WindowContainer;->getPrefixOrderIndex(Lcom/android/server/wm/WindowContainer;)I
 HSPLcom/android/server/wm/WindowContainer;->getRelativeDisplayedPosition(Landroid/graphics/Point;)V
+HSPLcom/android/server/wm/WindowContainer;->getRequestedConfigurationOrientation()I
 HSPLcom/android/server/wm/WindowContainer;->getSession()Landroid/view/SurfaceSession;
+PLcom/android/server/wm/WindowContainer;->getSurfaceAnimationRunner()Lcom/android/server/wm/SurfaceAnimationRunner;
 HSPLcom/android/server/wm/WindowContainer;->getSurfaceControl()Landroid/view/SurfaceControl;
-HSPLcom/android/server/wm/WindowContainer;->getSurfaceHeight()I
-HSPLcom/android/server/wm/WindowContainer;->getSurfaceWidth()I
+HPLcom/android/server/wm/WindowContainer;->getSurfaceHeight()I
+HPLcom/android/server/wm/WindowContainer;->getSurfaceWidth()I
+HSPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/WindowContainer;->getTask(Ljava/util/function/Predicate;Z)Lcom/android/server/wm/Task;
+HSPLcom/android/server/wm/WindowContainer;->getTopActivity(ZZ)Lcom/android/server/wm/ActivityRecord;
 HSPLcom/android/server/wm/WindowContainer;->getTopChild()Lcom/android/server/wm/WindowContainer;
+HPLcom/android/server/wm/WindowContainer;->getTopMostActivity()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowContainer;->getTopMostTask()Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/WindowContainer;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowContainer;->handlesOrientationChangeFromDescendant()Z
+HSPLcom/android/server/wm/WindowContainer;->hasActivity()Z
+HSPLcom/android/server/wm/WindowContainer;->hasChild(Lcom/android/server/wm/WindowContainer;)Z
 PLcom/android/server/wm/WindowContainer;->hasCommittedReparentToAnimationLeash()Z
 HSPLcom/android/server/wm/WindowContainer;->hasContentToDisplay()Z
 HSPLcom/android/server/wm/WindowContainer;->isAnimating()Z
-HSPLcom/android/server/wm/WindowContainer;->isAppAnimating()Z
-HSPLcom/android/server/wm/WindowContainer;->isSelfAnimating()Z
-HSPLcom/android/server/wm/WindowContainer;->isSelfOrChildAnimating()Z
+HSPLcom/android/server/wm/WindowContainer;->isAnimating(I)Z
+HSPLcom/android/server/wm/WindowContainer;->isAppTransitioning()Z
+HPLcom/android/server/wm/WindowContainer;->isDescendantOf(Lcom/android/server/wm/WindowContainer;)Z
+HSPLcom/android/server/wm/WindowContainer;->isFocusable()Z
+HSPLcom/android/server/wm/WindowContainer;->isOnTop()Z
 HSPLcom/android/server/wm/WindowContainer;->isVisible()Z
-HSPLcom/android/server/wm/WindowContainer;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+HSPLcom/android/server/wm/WindowContainer;->isWaitingForTransitionStart()Z
+HPLcom/android/server/wm/WindowContainer;->lambda$getActivityAbove$1(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getActivityAbove$2(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getActivityBelow$2(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getActivityBelow$3(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/WindowContainer;->lambda$getBottomMostActivity$3(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getBottomMostActivity$4(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getBottomMostTask$11(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getBottomMostTask$12(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/WindowContainer;->lambda$getTopActivity$7(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getTopActivity$8(Lcom/android/server/wm/ActivityRecord;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getTopActivity$9(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$getTopMostActivity$5(Lcom/android/server/wm/ActivityRecord;)Z
+HSPLcom/android/server/wm/WindowContainer;->lambda$getTopMostTask$12(Lcom/android/server/wm/Task;)Z
+PLcom/android/server/wm/WindowContainer;->lambda$getTopMostTask$13(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/WindowContainer;->lambda$isAppTransitioning$0(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/WindowContainer;->lambda$isAppTransitioning$1(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/WindowContainer;->lambda$isWaitingForTransitionStart$0(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/WindowContainer;->lambda$waitForAllWindowsDrawn$13$WindowContainer(Lcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowContainer;->lambda$waitForAllWindowsDrawn$13$WindowContainer(Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowContainer;->lambda$waitForAllWindowsDrawn$14$WindowContainer(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowContainer;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZZ)Landroid/view/animation/Animation;
+HPLcom/android/server/wm/WindowContainer;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
 HSPLcom/android/server/wm/WindowContainer;->makeChildSurface(Lcom/android/server/wm/WindowContainer;)Landroid/view/SurfaceControl$Builder;
 HSPLcom/android/server/wm/WindowContainer;->makeSurface()Landroid/view/SurfaceControl$Builder;
 HSPLcom/android/server/wm/WindowContainer;->needsZBoost()Z
-PLcom/android/server/wm/WindowContainer;->onAnimationFinished()V
-PLcom/android/server/wm/WindowContainer;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-PLcom/android/server/wm/WindowContainer;->onAnimationLeashDestroyed(Landroid/view/SurfaceControl$Transaction;)V
+HSPLcom/android/server/wm/WindowContainer;->obtainConsumerWrapper(Ljava/util/function/Consumer;)Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
+HPLcom/android/server/wm/WindowContainer;->okToAnimate()Z
+HSPLcom/android/server/wm/WindowContainer;->okToAnimate(Z)Z
+HSPLcom/android/server/wm/WindowContainer;->okToDisplay()Z
+HSPLcom/android/server/wm/WindowContainer;->onAnimationFinished()V
+HPLcom/android/server/wm/WindowContainer;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/WindowContainer;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowContainer;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/WindowContainer;->onAppTransitionDone()V
-HSPLcom/android/server/wm/WindowContainer;->onChildPositionChanged()V
+HSPLcom/android/server/wm/WindowContainer;->onChildAdded(Lcom/android/server/wm/WindowContainer;)V
+HSPLcom/android/server/wm/WindowContainer;->onChildPositionChanged(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->onChildRemoved(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/WindowContainer;->onConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/WindowContainer;->onDescendantOrientationChanged(Landroid/os/IBinder;Lcom/android/server/wm/ConfigurationContainer;)Z
 HSPLcom/android/server/wm/WindowContainer;->onDescendantOverrideConfigurationChanged()V
 HSPLcom/android/server/wm/WindowContainer;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowContainer;->onMovedByResize()V
-HSPLcom/android/server/wm/WindowContainer;->onParentChanged()V
-HSPLcom/android/server/wm/WindowContainer;->onParentResize()V
+HPLcom/android/server/wm/WindowContainer;->onMovedByResize()V
+HSPLcom/android/server/wm/WindowContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/WindowContainer;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/WindowContainer$PreAssignChildLayersCallback;)V
+HPLcom/android/server/wm/WindowContainer;->onParentResize()V
 HSPLcom/android/server/wm/WindowContainer;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/WindowContainer;->onResize()V
 HSPLcom/android/server/wm/WindowContainer;->positionChildAt(ILcom/android/server/wm/WindowContainer;Z)V
 HSPLcom/android/server/wm/WindowContainer;->prepareSurfaces()V
-HSPLcom/android/server/wm/WindowContainer;->reassignLayer(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-HSPLcom/android/server/wm/WindowContainer;->removeImmediately()V
+HPLcom/android/server/wm/WindowContainer;->processForAllActivitiesWithBoundary(Ljava/util/function/Function;Lcom/android/server/wm/WindowContainer;ZZ[ZLcom/android/server/wm/WindowContainer;)Z
+HSPLcom/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;
+HPLcom/android/server/wm/WindowContainer;->reassignLayer(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowContainer;->removeChild(Lcom/android/server/wm/WindowContainer;)V
+HPLcom/android/server/wm/WindowContainer;->removeIfPossible()V
+HPLcom/android/server/wm/WindowContainer;->removeImmediately()V
+PLcom/android/server/wm/WindowContainer;->reparent(Lcom/android/server/wm/WindowContainer;I)V
 PLcom/android/server/wm/WindowContainer;->reparentSurfaceControl(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowContainer;->resetDragResizingChangeReported()V
 HSPLcom/android/server/wm/WindowContainer;->scheduleAnimation()V
-HSPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
+HPLcom/android/server/wm/WindowContainer;->sendAppVisibilityToClients()V
 HSPLcom/android/server/wm/WindowContainer;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/wm/WindowContainer;->setOrientation(I)V
 HSPLcom/android/server/wm/WindowContainer;->setOrientation(ILandroid/os/IBinder;Lcom/android/server/wm/ConfigurationContainer;)V
+HSPLcom/android/server/wm/WindowContainer;->setParent(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/WindowContainer;->setRelativeLayer(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;I)V
-HSPLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
+HSPLcom/android/server/wm/WindowContainer;->setSurfaceControl(Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowContainer;->setWaitingForDrawnIfResizingChanged()V
+HPLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;Z)V
+PLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZI)V
+HPLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZILcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
+HPLcom/android/server/wm/WindowContainer;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;ZLjava/lang/Runnable;)V
 PLcom/android/server/wm/WindowContainer;->transferAnimation(Lcom/android/server/wm/WindowContainer;)V
 HSPLcom/android/server/wm/WindowContainer;->updateSurfacePosition()V
-PLcom/android/server/wm/WindowContainer;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/WindowContainer;->waitForAllWindowsDrawn()V
+PLcom/android/server/wm/WindowContainerThumbnail;-><init>(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/graphics/GraphicBuffer;ZLandroid/view/Surface;Lcom/android/server/wm/SurfaceAnimator;)V
+PLcom/android/server/wm/WindowContainerThumbnail;-><init>(Ljava/util/function/Supplier;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/graphics/GraphicBuffer;)V
+PLcom/android/server/wm/WindowContainerThumbnail;-><init>(Ljava/util/function/Supplier;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/WindowContainer;Landroid/graphics/GraphicBuffer;Z)V
+PLcom/android/server/wm/WindowContainerThumbnail;->commitPendingTransaction()V
+PLcom/android/server/wm/WindowContainerThumbnail;->destroy()V
+PLcom/android/server/wm/WindowContainerThumbnail;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+PLcom/android/server/wm/WindowContainerThumbnail;->getAnimationLeashParent()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainerThumbnail;->getParentSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainerThumbnail;->getPendingTransaction()Landroid/view/SurfaceControl$Transaction;
+PLcom/android/server/wm/WindowContainerThumbnail;->getSurfaceControl()Landroid/view/SurfaceControl;
+PLcom/android/server/wm/WindowContainerThumbnail;->getSurfaceHeight()I
+PLcom/android/server/wm/WindowContainerThumbnail;->getSurfaceWidth()I
+PLcom/android/server/wm/WindowContainerThumbnail;->lambda$TAAowaUKTiUY1j0FFlQQfUHXn0U(Lcom/android/server/wm/WindowContainerThumbnail;ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->lambda$eaIKGhnBPQly7snIrFjjw1Gda8k(Lcom/android/server/wm/WindowContainerThumbnail;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->makeAnimationLeash()Landroid/view/SurfaceControl$Builder;
+PLcom/android/server/wm/WindowContainerThumbnail;->onAnimationFinished()V
+PLcom/android/server/wm/WindowContainerThumbnail;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->setShowing(Landroid/view/SurfaceControl$Transaction;Z)V
+PLcom/android/server/wm/WindowContainerThumbnail;->startAnimation(Landroid/view/SurfaceControl$Transaction;Landroid/view/animation/Animation;)V
+PLcom/android/server/wm/WindowContainerThumbnail;->startAnimation(Landroid/view/SurfaceControl$Transaction;Landroid/view/animation/Animation;Landroid/graphics/Point;)V
+HSPLcom/android/server/wm/WindowFrames;-><clinit>()V
 HSPLcom/android/server/wm/WindowFrames;-><init>()V
-HSPLcom/android/server/wm/WindowFrames;->calculateDockedDividerInsets(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowFrames;->calculateDockedDividerInsets(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowFrames;->calculateInsets(ZZLandroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowFrames;->calculateOutsets()V
 HSPLcom/android/server/wm/WindowFrames;->didFrameSizeChange()Z
-PLcom/android/server/wm/WindowFrames;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowFrames;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowFrames;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/wm/WindowFrames;->hasContentChanged()Z
 HSPLcom/android/server/wm/WindowFrames;->offsetFrames(II)V
 HSPLcom/android/server/wm/WindowFrames;->parentFrameWasClippedByDisplayCutout()Z
-HSPLcom/android/server/wm/WindowFrames;->resetInsetsChanged()V
-HSPLcom/android/server/wm/WindowFrames;->resetLastContentInsets()V
+PLcom/android/server/wm/WindowFrames;->resetInsetsChanged()V
+HPLcom/android/server/wm/WindowFrames;->resetLastContentInsets()V
+HPLcom/android/server/wm/WindowFrames;->scaleInsets(F)V
 HSPLcom/android/server/wm/WindowFrames;->setContentChanged(Z)V
 HSPLcom/android/server/wm/WindowFrames;->setDisplayCutout(Lcom/android/server/wm/utils/WmDisplayCutout;)V
-HSPLcom/android/server/wm/WindowFrames;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowFrames;->setHasOutsets(Z)V
+HPLcom/android/server/wm/WindowFrames;->setFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowFrames;->setParentFrameWasClippedByDisplayCutout(Z)V
 HSPLcom/android/server/wm/WindowFrames;->setReportResizeHints()Z
 HSPLcom/android/server/wm/WindowFrames;->updateLastInsetValues()V
-PLcom/android/server/wm/WindowFrames;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/wm/WindowHashMap;-><init>()V
-PLcom/android/server/wm/WindowList;->addFirst(Ljava/lang/Object;)V
-HSPLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object;
+HSPLcom/android/server/wm/WindowList;-><init>()V
+HPLcom/android/server/wm/WindowList;->addFirst(Ljava/lang/Object;)V
+HPLcom/android/server/wm/WindowList;->peekFirst()Ljava/lang/Object;
 HSPLcom/android/server/wm/WindowList;->peekLast()Ljava/lang/Object;
-HSPLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionCancelledLocked(I)V
+HSPLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerGlobalLock;Ljava/lang/Runnable;Lcom/android/server/wm/utils/DeviceConfigInterface;)V
+HSPLcom/android/server/wm/WindowManagerConstants;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/utils/DeviceConfigInterface;)V
+PLcom/android/server/wm/WindowManagerConstants;->dump(Ljava/io/PrintWriter;)V
+HSPLcom/android/server/wm/WindowManagerConstants;->start(Ljava/util/concurrent/Executor;)V
+HSPLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExcludedByPreQStickyImmersive()V
+HSPLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLimitDp()V
+HSPLcom/android/server/wm/WindowManagerConstants;->updateSystemGestureExclusionLogDebounceMillis()V
+HSPLcom/android/server/wm/WindowManagerGlobalLock;-><init>()V
+HSPLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;-><init>()V
+PLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionCancelledLocked(I)V
 HSPLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
 HSPLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionPendingLocked()V
 HSPLcom/android/server/wm/WindowManagerInternal$AppTransitionListener;->onAppTransitionStartingLocked(IJJJ)I
@@ -17328,253 +38483,380 @@
 PLcom/android/server/wm/WindowManagerInternal$IDragDropCallback;->prePerformDrag(Landroid/view/IWindow;Landroid/os/IBinder;IFFFFLandroid/content/ClipData;)Z
 PLcom/android/server/wm/WindowManagerInternal$IDragDropCallback;->preReportDropResult(Landroid/view/IWindow;Z)V
 PLcom/android/server/wm/WindowManagerInternal$IDragDropCallback;->registerInputChannel(Lcom/android/server/wm/DragState;Landroid/view/Display;Lcom/android/server/input/InputManagerService;Landroid/view/InputChannel;)Z
-HSPLcom/android/server/wm/WindowManagerService$10;->binderDied()V
+HSPLcom/android/server/wm/WindowManagerInternal;-><init>()V
+PLcom/android/server/wm/WindowManagerService$10;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService$10;->binderDied()V
 HSPLcom/android/server/wm/WindowManagerService$1;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService$2;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/wm/WindowManagerService$3;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowManagerService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowManagerService$3;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/wm/WindowManagerService$3;->dumpCritical(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 HSPLcom/android/server/wm/WindowManagerService$4;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowManagerService$4;->onAppTransitionCancelledLocked(I)V
+PLcom/android/server/wm/WindowManagerService$4;->onAppTransitionCancelledLocked(I)V
 HSPLcom/android/server/wm/WindowManagerService$4;->onAppTransitionFinishedLocked(Landroid/os/IBinder;)V
+HSPLcom/android/server/wm/WindowManagerService$5;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService$5;->run()V
 HSPLcom/android/server/wm/WindowManagerService$6;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowManagerService$6;->getServiceType()I
-HSPLcom/android/server/wm/WindowManagerService$6;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
+PLcom/android/server/wm/WindowManagerService$6;->getServiceType()I
+PLcom/android/server/wm/WindowManagerService$6;->onLowPowerModeChanged(Landroid/os/PowerSaveState;)V
 HSPLcom/android/server/wm/WindowManagerService$7;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 PLcom/android/server/wm/WindowManagerService$7;->onOpChanged(ILjava/lang/String;)V
 HSPLcom/android/server/wm/WindowManagerService$8;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$8;->onReceive(Landroid/content/Context;Landroid/content/Intent;)V
 HSPLcom/android/server/wm/WindowManagerService$H;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService$H;->handleMessage(Landroid/os/Message;)V
+HSPLcom/android/server/wm/WindowManagerService$H;->sendNewMessageDelayed(ILjava/lang/Object;J)V
+HSPLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService$LocalService;-><init>(Lcom/android/server/wm/WindowManagerService;Lcom/android/server/wm/WindowManagerService$1;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->addNonHighRefreshRatePackage(Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowManagerService$LocalService;->addWindowToken(Landroid/os/IBinder;II)V
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility()V
-PLcom/android/server/wm/WindowManagerService$LocalService;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec;
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->getDisplayIdForWindow(Landroid/os/IBinder;)I
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowToken()Landroid/os/IBinder;
-PLcom/android/server/wm/WindowManagerService$LocalService;->isHardKeyboardAvailable()Z
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->isInputMethodClientFocus(III)Z
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisible(I)Z
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->isUidAllowedOnDisplay(II)Z
-PLcom/android/server/wm/WindowManagerService$LocalService;->isUidFocused(I)Z
+HSPLcom/android/server/wm/WindowManagerService$LocalService;->clearSnapshotCache()V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->computeWindowsForAccessibility(I)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getCompatibleMagnificationSpecForWindow(Landroid/os/IBinder;)Landroid/view/MagnificationSpec;
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getDisplayIdForWindow(Landroid/os/IBinder;)I
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getFocusedWindowToken()Landroid/os/IBinder;
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getKeyInterceptionInfoFromToken(Landroid/os/IBinder;)Lcom/android/internal/policy/KeyInterceptionInfo;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getMagnificationRegion(ILandroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->getTopFocusedDisplayId()I
+PLcom/android/server/wm/WindowManagerService$LocalService;->getTopFocusedDisplayUiContext()Landroid/content/Context;
+PLcom/android/server/wm/WindowManagerService$LocalService;->getWindowOwnerUserId(Landroid/os/IBinder;)I
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isHardKeyboardAvailable()Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isInputMethodClientFocus(III)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->isKeyguardShowingAndNotOccluded()Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisibleLw(I)Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isUidAllowedOnDisplay(II)Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->isUidFocused(I)Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->lambda$addNonHighRefreshRatePackage$0(Ljava/lang/String;Lcom/android/server/wm/DisplayContent;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->lambda$removeNonHighRefreshRatePackage$1(Ljava/lang/String;Lcom/android/server/wm/DisplayContent;)V
 HSPLcom/android/server/wm/WindowManagerService$LocalService;->registerAppTransitionListener(Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;)V
-PLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZI)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->removeNonHighRefreshRatePackage(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->removeWindowToken(Landroid/os/IBinder;ZI)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->reportPasswordChanged(I)V
 HSPLcom/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;->setInputFilter(Landroid/view/IInputFilter;)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setMagnificationCallbacks(ILcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->setMagnificationSpec(ILandroid/view/MagnificationSpec;)V
 HSPLcom/android/server/wm/WindowManagerService$LocalService;->setOnHardKeyboardStatusChangeListener(Lcom/android/server/wm/WindowManagerInternal$OnHardKeyboardStatusChangeListener;)V
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(Lcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)V
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodTargetWindow(Landroid/os/IBinder;Landroid/os/IBinder;)V
-PLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZ)V
-HSPLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Ljava/lang/Runnable;J)V
+PLcom/android/server/wm/WindowManagerService$LocalService;->setWindowsForAccessibilityCallback(ILcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->shouldShowIme(I)Z
+PLcom/android/server/wm/WindowManagerService$LocalService;->shouldShowSystemDecorOnDisplay(I)Z
+HPLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodTargetWindow(Landroid/os/IBinder;Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->updateInputMethodWindowStatus(Landroid/os/IBinder;ZZ)V
+HPLcom/android/server/wm/WindowManagerService$LocalService;->waitForAllWindowsDrawn(Ljava/lang/Runnable;JI)V
+HSPLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>()V
 HSPLcom/android/server/wm/WindowManagerService$MousePositionTracker;-><init>(Lcom/android/server/wm/WindowManagerService$1;)V
-HSPLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V
+PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->access$1700(Lcom/android/server/wm/WindowManagerService$MousePositionTracker;)Z
+PLcom/android/server/wm/WindowManagerService$MousePositionTracker;->access$1800(Lcom/android/server/wm/WindowManagerService$MousePositionTracker;)Z
+HPLcom/android/server/wm/WindowManagerService$MousePositionTracker;->onPointerEvent(Landroid/view/MotionEvent;)V
+PLcom/android/server/wm/WindowManagerService$RotationWatcher;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/IRotationWatcher;Landroid/os/IBinder$DeathRecipient;I)V
 HSPLcom/android/server/wm/WindowManagerService$SettingsObserver;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->onChange(ZLandroid/net/Uri;)V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateForceDesktopModeOnExternalDisplays()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateForceResizableTasks()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateFreeformWindowManagement()V
 HSPLcom/android/server/wm/WindowManagerService$SettingsObserver;->updatePointerLocation()V
+PLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateSizeCompatFreeform()V
 HSPLcom/android/server/wm/WindowManagerService$SettingsObserver;->updateSystemUiSettings()V
-HSPLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Lcom/android/server/wm/TransactionFactory;)V
+HSPLcom/android/server/wm/WindowManagerService;-><clinit>()V
+HSPLcom/android/server/wm/WindowManagerService;-><init>(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+HSPLcom/android/server/wm/WindowManagerService;->access$000(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/KeyguardDisableHandler;
+PLcom/android/server/wm/WindowManagerService;->access$100(Lcom/android/server/wm/WindowManagerService;Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowManagerService;->access$1000(Lcom/android/server/wm/WindowManagerService;)V
 HSPLcom/android/server/wm/WindowManagerService;->access$1100(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowManagerService;->access$1400(Lcom/android/server/wm/WindowManagerService;)Z
-PLcom/android/server/wm/WindowManagerService;->access$1500(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/RecentsAnimationController;
+PLcom/android/server/wm/WindowManagerService;->access$1300(Lcom/android/server/wm/WindowManagerService;)Z
+HPLcom/android/server/wm/WindowManagerService;->access$1400(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/RecentsAnimationController;
+PLcom/android/server/wm/WindowManagerService;->access$1400(Lcom/android/server/wm/WindowManagerService;)Z
+HPLcom/android/server/wm/WindowManagerService;->access$1500(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/RecentsAnimationController;
+HPLcom/android/server/wm/WindowManagerService;->access$1500(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->access$1600(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V
+PLcom/android/server/wm/WindowManagerService;->access$200(Lcom/android/server/wm/WindowManagerService;)Z
+HPLcom/android/server/wm/WindowManagerService;->access$2000(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowManagerService;->access$2100(Lcom/android/server/wm/WindowManagerService;)Lcom/android/server/wm/WindowState;
+PLcom/android/server/wm/WindowManagerService;->access$300(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->access$300(Lcom/android/server/wm/WindowManagerService;)Z
+PLcom/android/server/wm/WindowManagerService;->access$400(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->access$400(Lcom/android/server/wm/WindowManagerService;Landroid/util/ArraySet;Z)V
+PLcom/android/server/wm/WindowManagerService;->access$500(Lcom/android/server/wm/WindowManagerService;Landroid/util/ArraySet;Z)V
+HSPLcom/android/server/wm/WindowManagerService;->access$600(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerService;->access$700(Lcom/android/server/wm/WindowManagerService;)F
 HSPLcom/android/server/wm/WindowManagerService;->access$700(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
+PLcom/android/server/wm/WindowManagerService;->access$702(Lcom/android/server/wm/WindowManagerService;F)F
+PLcom/android/server/wm/WindowManagerService;->access$800(Lcom/android/server/wm/WindowManagerService;)F
+PLcom/android/server/wm/WindowManagerService;->access$802(Lcom/android/server/wm/WindowManagerService;F)F
+PLcom/android/server/wm/WindowManagerService;->access$900(Lcom/android/server/wm/WindowManagerService;)F
+PLcom/android/server/wm/WindowManagerService;->access$902(Lcom/android/server/wm/WindowManagerService;F)F
+HSPLcom/android/server/wm/WindowManagerService;->addWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/view/InputChannel;Landroid/view/InsetsState;)I
+HPLcom/android/server/wm/WindowManagerService;->addWindowContextToken(Landroid/os/IBinder;IILjava/lang/String;)I
 HSPLcom/android/server/wm/WindowManagerService;->addWindowToken(Landroid/os/IBinder;II)V
+HPLcom/android/server/wm/WindowManagerService;->addWindowTokenWithOptions(Landroid/os/IBinder;IILandroid/os/Bundle;Ljava/lang/String;)I
 HSPLcom/android/server/wm/WindowManagerService;->applyForcedPropertiesForDefaultDisplay()Z
+PLcom/android/server/wm/WindowManagerService;->applyMagnificationSpecLocked(ILandroid/view/MagnificationSpec;)V
 HSPLcom/android/server/wm/WindowManagerService;->boostPriorityForLockedSection()V
-PLcom/android/server/wm/WindowManagerService;->canStartRecentsAnimation()Z
-PLcom/android/server/wm/WindowManagerService;->cancelRecentsAnimationSynchronously(ILjava/lang/String;)V
+HPLcom/android/server/wm/WindowManagerService;->canStartRecentsAnimation()Z
+PLcom/android/server/wm/WindowManagerService;->cancelRecentsAnimation(ILjava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->checkBootAnimationCompleteLocked()Z
+PLcom/android/server/wm/WindowManagerService;->checkCallerOwnsDisplay(I)V
 HSPLcom/android/server/wm/WindowManagerService;->checkCallingPermission(Ljava/lang/String;Ljava/lang/String;)Z
 HSPLcom/android/server/wm/WindowManagerService;->checkDrawnWindowsLocked()V
-PLcom/android/server/wm/WindowManagerService;->checkSplitScreenMinimizedChanged(Z)V
-PLcom/android/server/wm/WindowManagerService;->cleanupRecentsAnimation(I)V
+HPLcom/android/server/wm/WindowManagerService;->checkSplitScreenMinimizedChanged(Z)V
+HPLcom/android/server/wm/WindowManagerService;->cleanupRecentsAnimation(I)V
 HSPLcom/android/server/wm/WindowManagerService;->closeSurfaceTransaction(Ljava/lang/String;)V
-PLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowManagerService;->closeSystemDialogs(Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowManagerService;->computeNewConfiguration(I)Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/WindowManagerService;->continueSurfaceLayout()V
-HSPLcom/android/server/wm/WindowManagerService;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;ILandroid/view/InputChannel;)V
+HSPLcom/android/server/wm/WindowManagerService;->computeNewConfigurationLocked(I)Landroid/content/res/Configuration;
+PLcom/android/server/wm/WindowManagerService;->createInputConsumer(Landroid/os/IBinder;Ljava/lang/String;ILandroid/view/InputChannel;)V
 PLcom/android/server/wm/WindowManagerService;->createInputConsumer(Landroid/os/Looper;Ljava/lang/String;Landroid/view/InputEventReceiver$Factory;I)Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;
 HSPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/SurfaceControl;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
-HSPLcom/android/server/wm/WindowManagerService;->createWatermarkInTransaction()V
-HSPLcom/android/server/wm/WindowManagerService;->deferSurfaceLayout()V
-HSPLcom/android/server/wm/WindowManagerService;->destroyInputConsumer(Ljava/lang/String;I)Z
+HSPLcom/android/server/wm/WindowManagerService;->createSurfaceControl(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl;ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)I
+HSPLcom/android/server/wm/WindowManagerService;->createWatermark()V
+PLcom/android/server/wm/WindowManagerService;->destroyInputConsumer(Ljava/lang/String;I)Z
 HSPLcom/android/server/wm/WindowManagerService;->destroyPreservedSurfaceLocked()V
 HSPLcom/android/server/wm/WindowManagerService;->detectSafeMode()Z
+HSPLcom/android/server/wm/WindowManagerService;->dipToPixel(ILandroid/util/DisplayMetrics;)I
+PLcom/android/server/wm/WindowManagerService;->disableKeyguard(Landroid/os/IBinder;Ljava/lang/String;I)V
 PLcom/android/server/wm/WindowManagerService;->dismissKeyguard(Lcom/android/internal/policy/IKeyguardDismissCallback;Ljava/lang/CharSequence;)V
+PLcom/android/server/wm/WindowManagerService;->dispatchNewAnimatorScaleLocked(Lcom/android/server/wm/Session;)V
 HSPLcom/android/server/wm/WindowManagerService;->displayReady()V
-HSPLcom/android/server/wm/WindowManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
-PLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/WindowManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->doDump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowManagerService;->doesAddToastWindowRequireToken(Ljava/lang/String;ILcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WindowManagerService;->dontOverrideDisplayInfo(I)V
+PLcom/android/server/wm/WindowManagerService;->dump(Ljava/io/FileDescriptor;Ljava/io/PrintWriter;[Ljava/lang/String;)V
+PLcom/android/server/wm/WindowManagerService;->dumpAnimatorLocked(Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpDebugLocked(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/WindowManagerService;->dumpHighRefreshRateBlacklist(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpLastANRLocked(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpLogStatus(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpPolicyLocked(Ljava/io/PrintWriter;[Ljava/lang/String;Z)V
 PLcom/android/server/wm/WindowManagerService;->dumpSessionsLocked(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpTokensLocked(Ljava/io/PrintWriter;Z)V
+PLcom/android/server/wm/WindowManagerService;->dumpTraceStatus(Ljava/io/PrintWriter;)V
+PLcom/android/server/wm/WindowManagerService;->dumpWindowsLocked(Ljava/io/PrintWriter;ZLjava/util/ArrayList;)V
 PLcom/android/server/wm/WindowManagerService;->dumpWindowsNoHeaderLocked(Ljava/io/PrintWriter;ZLjava/util/ArrayList;)V
 HSPLcom/android/server/wm/WindowManagerService;->enableScreenAfterBoot()V
-HSPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V
+PLcom/android/server/wm/WindowManagerService;->enableScreenIfNeeded()V
 HSPLcom/android/server/wm/WindowManagerService;->enableScreenIfNeededLocked()V
 HSPLcom/android/server/wm/WindowManagerService;->excludeWindowTypeFromTapOutTask(I)Z
-PLcom/android/server/wm/WindowManagerService;->executeAppTransition()V
-HSPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
-PLcom/android/server/wm/WindowManagerService;->finishSeamlessRotation()V
-HSPLcom/android/server/wm/WindowManagerService;->freezeDisplayRotation(II)V
-HSPLcom/android/server/wm/WindowManagerService;->freezeRotation(I)V
+HPLcom/android/server/wm/WindowManagerService;->executeAppTransition()V
+HSPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;)V
+PLcom/android/server/wm/WindowManagerService;->fixScale(F)F
+PLcom/android/server/wm/WindowManagerService;->freezeDisplayRotation(II)V
+PLcom/android/server/wm/WindowManagerService;->freezeRotation(I)V
+PLcom/android/server/wm/WindowManagerService;->getAnimationScale(I)F
+PLcom/android/server/wm/WindowManagerService;->getBaseDisplayDensity(I)I
 HSPLcom/android/server/wm/WindowManagerService;->getBaseDisplaySize(ILandroid/graphics/Point;)V
 HSPLcom/android/server/wm/WindowManagerService;->getCameraLensCoverState()I
 HSPLcom/android/server/wm/WindowManagerService;->getCurrentAnimatorScale()F
 HSPLcom/android/server/wm/WindowManagerService;->getDefaultDisplayContentLocked()Lcom/android/server/wm/DisplayContent;
+PLcom/android/server/wm/WindowManagerService;->getDefaultDisplayRotation()I
 HSPLcom/android/server/wm/WindowManagerService;->getDisplayContentOrCreate(ILandroid/os/IBinder;)Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowManagerService;->getDockedStackSide()I
+HPLcom/android/server/wm/WindowManagerService;->getDockedStackSide()I
+HPLcom/android/server/wm/WindowManagerService;->getFocusedWindowLocked()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowManagerService;->getForcedDisplayDensityForUserLocked(I)I
-HSPLcom/android/server/wm/WindowManagerService;->getImeFocusStackLocked()Lcom/android/server/wm/TaskStack;
-PLcom/android/server/wm/WindowManagerService;->getInitialDisplayDensity(I)I
-HSPLcom/android/server/wm/WindowManagerService;->getInitialDisplaySize(ILandroid/graphics/Point;)V
+HSPLcom/android/server/wm/WindowManagerService;->getImeFocusStackLocked()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/WindowManagerService;->getInTouchMode()Z
+HPLcom/android/server/wm/WindowManagerService;->getInitialDisplayDensity(I)I
+PLcom/android/server/wm/WindowManagerService;->getInitialDisplaySize(ILandroid/graphics/Point;)V
 HSPLcom/android/server/wm/WindowManagerService;->getInputManagerCallback()Lcom/android/server/wm/InputManagerCallback;
 HSPLcom/android/server/wm/WindowManagerService;->getLidState()I
-HSPLcom/android/server/wm/WindowManagerService;->getNavBarPosition(I)I
+PLcom/android/server/wm/WindowManagerService;->getNavBarPosition(I)I
 HSPLcom/android/server/wm/WindowManagerService;->getRecentsAnimationController()Lcom/android/server/wm/RecentsAnimationController;
-HSPLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->getStableInsets(ILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->getStableInsetsLocked(ILandroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowManagerService;->getStackBounds(IILandroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZ)Landroid/app/ActivityManager$TaskSnapshot;
-HSPLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F
-HSPLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F
-PLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowManagerService;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
+HPLcom/android/server/wm/WindowManagerService;->getTaskSnapshot(IIZZ)Landroid/app/ActivityManager$TaskSnapshot;
+PLcom/android/server/wm/WindowManagerService;->getTransitionAnimationScaleLocked()F
+PLcom/android/server/wm/WindowManagerService;->getWindowAnimationScaleLocked()F
+HPLcom/android/server/wm/WindowManagerService;->getWindowDisplayFrame(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->getWindowId(Landroid/os/IBinder;)Landroid/view/IWindowId;
+HSPLcom/android/server/wm/WindowManagerService;->getWindowInsets(Landroid/view/WindowManager$LayoutParams;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;)V
 HSPLcom/android/server/wm/WindowManagerService;->getWindowManagerLock()Ljava/lang/Object;
+PLcom/android/server/wm/WindowManagerService;->grantInputChannel(IIILandroid/view/SurfaceControl;Landroid/view/IWindow;Landroid/os/IBinder;Landroid/view/InputChannel;)V
+HPLcom/android/server/wm/WindowManagerService;->handleTaskFocusChange(Lcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/WindowManagerService;->hasHdrSupport()Z
 HSPLcom/android/server/wm/WindowManagerService;->hasNavigationBar(I)Z
+PLcom/android/server/wm/WindowManagerService;->hasStatusBarPermission(II)Z
 HSPLcom/android/server/wm/WindowManagerService;->hasWideColorGamutSupport()Z
 HSPLcom/android/server/wm/WindowManagerService;->hideBootMessagesLocked()V
+PLcom/android/server/wm/WindowManagerService;->hideTransientBars(I)V
 HSPLcom/android/server/wm/WindowManagerService;->inSurfaceTransaction(Ljava/lang/Runnable;)V
-PLcom/android/server/wm/WindowManagerService;->initializeRecentsAnimation(ILandroid/view/IRecentsAnimationRunner;Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;ILandroid/util/SparseBooleanArray;)V
-HSPLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z
+HSPLcom/android/server/wm/WindowManagerService;->initPolicy()V
+HPLcom/android/server/wm/WindowManagerService;->initializeRecentsAnimation(ILandroid/view/IRecentsAnimationRunner;Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;ILandroid/util/SparseBooleanArray;Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/WindowManagerService;->intersectDisplayInsetBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowManagerService;->isCurrentProfile(I)Z
+PLcom/android/server/wm/WindowManagerService;->isCurrentProfileLocked(I)Z
+PLcom/android/server/wm/WindowManagerService;->isDisplayRotationFrozen(I)Z
 HSPLcom/android/server/wm/WindowManagerService;->isKeyguardLocked()Z
-PLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z
-HSPLcom/android/server/wm/WindowManagerService;->isKeyguardShowingAndNotOccluded()Z
-PLcom/android/server/wm/WindowManagerService;->isKeyguardTrusted()Z
-HSPLcom/android/server/wm/WindowManagerService;->isRotatingSeamlessly()Z
-HSPLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardSecure(I)Z
+HPLcom/android/server/wm/WindowManagerService;->isKeyguardShowingAndNotOccluded()Z
+PLcom/android/server/wm/WindowManagerService;->isRotationFrozen()Z
+PLcom/android/server/wm/WindowManagerService;->isSafeModeEnabled()Z
 HSPLcom/android/server/wm/WindowManagerService;->isSecureLocked(Lcom/android/server/wm/WindowState;)Z
-HSPLcom/android/server/wm/WindowManagerService;->isShowingDream()Z
 PLcom/android/server/wm/WindowManagerService;->isValidPictureInPictureAspectRatio(IF)Z
-PLcom/android/server/wm/WindowManagerService;->lambda$requestAssistScreenshot$2(Landroid/app/IAssistDataReceiver;Landroid/graphics/Bitmap;)V
+PLcom/android/server/wm/WindowManagerService;->isValidPictureInPictureAspectRatio(Lcom/android/server/wm/DisplayContent;F)Z
+PLcom/android/server/wm/WindowManagerService;->isWindowTraceEnabled()Z
+HPLcom/android/server/wm/WindowManagerService;->lambda$checkDrawnWindowsLocked$7$WindowManagerService(Lcom/android/server/wm/WindowContainer;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/WindowManagerService;->lambda$dumpWindowsNoHeaderLocked$9(Ljava/io/PrintWriter;Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/WindowManagerService;->lambda$main$1(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Function;)V
+PLcom/android/server/wm/WindowManagerService;->lambda$new$0$WindowManagerService()V
+PLcom/android/server/wm/WindowManagerService;->lambda$onOverlayChanged$12(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowManagerService;->lambda$requestAssistScreenshot$3(Landroid/app/IAssistDataReceiver;Landroid/graphics/Bitmap;)V
+HPLcom/android/server/wm/WindowManagerService;->lambda$updateNonSystemOverlayWindowsVisibilityIfNeeded$13(ZLcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowManagerService;->lockNow(Landroid/os/Bundle;)V
 HSPLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;)Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/WindowManagerService;->main(Landroid/content/Context;Lcom/android/server/input/InputManagerService;ZZLcom/android/server/policy/WindowManagerPolicy;Lcom/android/server/wm/ActivityTaskManagerService;Ljava/util/function/Supplier;Ljava/util/function/Supplier;Ljava/util/function/Function;)Lcom/android/server/wm/WindowManagerService;
 HSPLcom/android/server/wm/WindowManagerService;->makeSurfaceBuilder(Landroid/view/SurfaceSession;)Landroid/view/SurfaceControl$Builder;
 HSPLcom/android/server/wm/WindowManagerService;->makeWindowFreezingScreenIfNeededLocked(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/WindowManagerService;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
-HSPLcom/android/server/wm/WindowManagerService;->monitor()V
-HSPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchesCleared(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunching(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/WindowManagerService;->notifyAppRelaunchingFinished(Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/WindowManagerService;->notifyAppResumedFinished(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->monitor()V
 HSPLcom/android/server/wm/WindowManagerService;->notifyFocusChanged()V
-HSPLcom/android/server/wm/WindowManagerService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;I)V
-HSPLcom/android/server/wm/WindowManagerService;->notifyKeyguardTrustedChanged()V
-HSPLcom/android/server/wm/WindowManagerService;->notifyTaskRemovedFromRecents(II)V
+PLcom/android/server/wm/WindowManagerService;->notifyKeyguardFlagsChanged(Ljava/lang/Runnable;I)V
+PLcom/android/server/wm/WindowManagerService;->notifyKeyguardTrustedChanged()V
+PLcom/android/server/wm/WindowManagerService;->notifyShowingDreamChanged()V
 HSPLcom/android/server/wm/WindowManagerService;->onAnimationFinished()V
 HSPLcom/android/server/wm/WindowManagerService;->onInitReady()V
-PLcom/android/server/wm/WindowManagerService;->onKeyguardOccludedChanged(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->onKeyguardShowingAndNotOccludedChanged()V
-PLcom/android/server/wm/WindowManagerService;->onPowerKeyDown(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->onKeyguardShowingAndNotOccludedChanged()V
+PLcom/android/server/wm/WindowManagerService;->onLockTaskStateChanged(I)V
+PLcom/android/server/wm/WindowManagerService;->onOverlayChanged()V
+HPLcom/android/server/wm/WindowManagerService;->onPointerDownOutsideFocusLocked(Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->onPowerKeyDown(Z)V
+HPLcom/android/server/wm/WindowManagerService;->onRectangleOnScreenRequested(Landroid/os/IBinder;Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowManagerService;->onShellCommand(Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;Ljava/io/FileDescriptor;[Ljava/lang/String;Landroid/os/ShellCallback;Landroid/os/ResultReceiver;)V
 HSPLcom/android/server/wm/WindowManagerService;->onSystemUiStarted()V
 HSPLcom/android/server/wm/WindowManagerService;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
 HSPLcom/android/server/wm/WindowManagerService;->onUserSwitched()V
 HSPLcom/android/server/wm/WindowManagerService;->openSession(Landroid/view/IWindowSessionCallback;)Landroid/view/IWindowSession;
 HSPLcom/android/server/wm/WindowManagerService;->openSurfaceTransaction()V
+PLcom/android/server/wm/WindowManagerService;->overridePendingAppTransitionMultiThumbFuture(Landroid/view/IAppTransitionAnimationSpecsFuture;Landroid/os/IRemoteCallback;ZI)V
 PLcom/android/server/wm/WindowManagerService;->performBootTimeout()V
 HSPLcom/android/server/wm/WindowManagerService;->performEnableScreen()V
-PLcom/android/server/wm/WindowManagerService;->pokeDrawLock(Lcom/android/server/wm/Session;Landroid/os/IBinder;)V
-HSPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
-PLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V
-HSPLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/AppWindowToken;)V
-HSPLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/AppWindowToken;)Z
+HPLcom/android/server/wm/WindowManagerService;->pokeDrawLock(Lcom/android/server/wm/Session;Landroid/os/IBinder;)V
+HPLcom/android/server/wm/WindowManagerService;->postWindowRemoveCleanupLocked(Lcom/android/server/wm/WindowState;)V
+HPLcom/android/server/wm/WindowManagerService;->prepareAppTransition(IZ)V
+HSPLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/ActivityRecord;)V
+HSPLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/WindowManagerService;->queryHdrSupport()Z
 HSPLcom/android/server/wm/WindowManagerService;->queryWideColorGamutSupport()Z
-HSPLcom/android/server/wm/WindowManagerService;->reconfigureDisplayLocked(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowManagerService;->reboot(Z)V
+PLcom/android/server/wm/WindowManagerService;->reenableKeyguard(Landroid/os/IBinder;I)V
 HSPLcom/android/server/wm/WindowManagerService;->refreshScreenCaptureDisabled(I)V
-HSPLcom/android/server/wm/WindowManagerService;->registerAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
-HSPLcom/android/server/wm/WindowManagerService;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
-HSPLcom/android/server/wm/WindowManagerService;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V
-HSPLcom/android/server/wm/WindowManagerService;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
-HSPLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
-HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;)I
-HSPLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
-HSPLcom/android/server/wm/WindowManagerService;->removeRotationWatcher(Landroid/view/IRotationWatcher;)V
-HSPLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
-PLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V
+PLcom/android/server/wm/WindowManagerService;->registerAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
+HSPLcom/android/server/wm/WindowManagerService;->registerDisplayWindowListener(Landroid/view/IDisplayWindowListener;)V
+PLcom/android/server/wm/WindowManagerService;->registerDockedStackListener(Landroid/view/IDockedStackListener;)V
+PLcom/android/server/wm/WindowManagerService;->registerPinnedStackListener(ILandroid/view/IPinnedStackListener;)V
+PLcom/android/server/wm/WindowManagerService;->registerShortcutKey(JLcom/android/internal/policy/IShortcutService;)V
+PLcom/android/server/wm/WindowManagerService;->registerSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;I)V
+PLcom/android/server/wm/WindowManagerService;->registerWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)Z
+HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;)I
+HPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/graphics/Point;)I
+HSPLcom/android/server/wm/WindowManagerService;->relayoutWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/view/WindowManager$LayoutParams;IIIIJLandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/view/DisplayCutout$ParcelableWrapper;Landroid/util/MergedConfiguration;Landroid/view/SurfaceControl;Landroid/view/InsetsState;Landroid/graphics/Point;Landroid/view/SurfaceControl;)I
+HPLcom/android/server/wm/WindowManagerService;->removeObsoleteTaskFiles(Landroid/util/ArraySet;[I)V
+HPLcom/android/server/wm/WindowManagerService;->removeRotationWatcher(Landroid/view/IRotationWatcher;)V
+HPLcom/android/server/wm/WindowManagerService;->removeWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;)V
+HPLcom/android/server/wm/WindowManagerService;->removeWindowToken(Landroid/os/IBinder;I)V
+PLcom/android/server/wm/WindowManagerService;->reparentDisplayContent(Landroid/view/IWindow;Landroid/view/SurfaceControl;I)V
+HPLcom/android/server/wm/WindowManagerService;->reportSystemGestureExclusionChanged(Lcom/android/server/wm/Session;Landroid/view/IWindow;Ljava/util/List;)V
 PLcom/android/server/wm/WindowManagerService;->requestAssistScreenshot(Landroid/app/IAssistDataReceiver;)Z
 HSPLcom/android/server/wm/WindowManagerService;->requestTraversal()V
 HSPLcom/android/server/wm/WindowManagerService;->resetPriorityAfterLockedSection()V
+PLcom/android/server/wm/WindowManagerService;->saveANRStateLocked(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/WindowState;Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowManagerService;->scheduleAnimationLocked()V
+PLcom/android/server/wm/WindowManagerService;->scheduleClearWillReplaceWindows(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/WindowManagerService;->scheduleWindowReplacementTimeouts(Lcom/android/server/wm/ActivityRecord;)V
 PLcom/android/server/wm/WindowManagerService;->screenTurningOff(Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;)V
-HSPLcom/android/server/wm/WindowManagerService;->sendNewConfiguration(I)V
-PLcom/android/server/wm/WindowManagerService;->sendSetRunningRemoteAnimation(IZ)V
+PLcom/android/server/wm/WindowManagerService;->setAnimationScale(IF)V
 HSPLcom/android/server/wm/WindowManagerService;->setAnimatorDurationScale(F)V
-HSPLcom/android/server/wm/WindowManagerService;->setAodShowing(Z)V
-PLcom/android/server/wm/WindowManagerService;->setAppFullscreen(Landroid/os/IBinder;Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setCurrentProfileIds([I)V
-HSPLcom/android/server/wm/WindowManagerService;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->setAodShowing(Z)V
+PLcom/android/server/wm/WindowManagerService;->setCurrentProfileIds([I)V
+HSPLcom/android/server/wm/WindowManagerService;->setDisplayWindowRotationController(Landroid/view/IDisplayWindowRotationController;)V
+PLcom/android/server/wm/WindowManagerService;->setDockedStackCreateStateLocked(ILandroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowManagerService;->setDockedStackDividerTouchRegion(Landroid/graphics/Rect;)V
+PLcom/android/server/wm/WindowManagerService;->setDockedStackResizing(Z)V
 HSPLcom/android/server/wm/WindowManagerService;->setEventDispatching(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setForceResizableTasks(Z)V
+PLcom/android/server/wm/WindowManagerService;->setForwardedInsets(ILandroid/graphics/Insets;)V
+HSPLcom/android/server/wm/WindowManagerService;->setGlobalShadowSettings()V
 HSPLcom/android/server/wm/WindowManagerService;->setHoldScreenLocked(Lcom/android/server/wm/Session;)V
-HSPLcom/android/server/wm/WindowManagerService;->setInsetsWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;ILandroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Region;)V
-HSPLcom/android/server/wm/WindowManagerService;->setIsPc(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setKeyguardGoingAway(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setKeyguardOrAodShowingOnDefaultDisplay(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V
+PLcom/android/server/wm/WindowManagerService;->setInTouchMode(Z)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
+HPLcom/android/server/wm/WindowManagerService;->setKeyguardGoingAway(Z)V
+HPLcom/android/server/wm/WindowManagerService;->setKeyguardOrAodShowingOnDefaultDisplay(Z)V
+PLcom/android/server/wm/WindowManagerService;->setNavBarVirtualKeyHapticFeedbackEnabled(Z)V
 HSPLcom/android/server/wm/WindowManagerService;->setNewDisplayOverrideConfiguration(Landroid/content/res/Configuration;Lcom/android/server/wm/DisplayContent;)V
 PLcom/android/server/wm/WindowManagerService;->setPipVisibility(Z)V
-PLcom/android/server/wm/WindowManagerService;->setShelfHeight(ZI)V
-HSPLcom/android/server/wm/WindowManagerService;->setSupportsFreeformWindowManagement(Z)V
-HSPLcom/android/server/wm/WindowManagerService;->setSupportsPictureInPicture(Z)V
-PLcom/android/server/wm/WindowManagerService;->setTransparentRegionWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Region;)V
-PLcom/android/server/wm/WindowManagerService;->setWindowOpaque(Landroid/os/IBinder;Z)V
+HPLcom/android/server/wm/WindowManagerService;->setResizeDimLayer(ZIF)V
+HSPLcom/android/server/wm/WindowManagerService;->setShadowRenderer()V
+PLcom/android/server/wm/WindowManagerService;->setStrictModeVisualIndicatorPreference(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowManagerService;->setTransparentRegionWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/graphics/Region;)V
+PLcom/android/server/wm/WindowManagerService;->setWillReplaceWindows(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/WindowManagerService;->setWindowOpaqueLocked(Landroid/os/IBinder;Z)V
+PLcom/android/server/wm/WindowManagerService;->shouldShowIme(I)Z
+PLcom/android/server/wm/WindowManagerService;->shouldShowSystemDecors(I)Z
 HSPLcom/android/server/wm/WindowManagerService;->showEmulatorDisplayOverlayIfNeeded()V
+PLcom/android/server/wm/WindowManagerService;->showRecentApps()V
 HSPLcom/android/server/wm/WindowManagerService;->startFreezingDisplayLocked(IILcom/android/server/wm/DisplayContent;)V
-PLcom/android/server/wm/WindowManagerService;->startSeamlessRotation()V
-HSPLcom/android/server/wm/WindowManagerService;->statusBarVisibilityChanged(II)V
 HSPLcom/android/server/wm/WindowManagerService;->stopFreezingDisplayLocked()V
 HSPLcom/android/server/wm/WindowManagerService;->systemReady()V
-PLcom/android/server/wm/WindowManagerService;->triggerAnimationFailsafe()V
-HSPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;Z)Z
-HSPLcom/android/server/wm/WindowManagerService;->unregisterAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
-HSPLcom/android/server/wm/WindowManagerService;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
+PLcom/android/server/wm/WindowManagerService;->thawDisplayRotation(I)V
+PLcom/android/server/wm/WindowManagerService;->thawRotation()V
+HPLcom/android/server/wm/WindowManagerService;->triggerAnimationFailsafe()V
+HPLcom/android/server/wm/WindowManagerService;->tryStartExitingAnimation(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;Z)Z
+HPLcom/android/server/wm/WindowManagerService;->unprivilegedAppCanCreateTokenWith(Lcom/android/server/wm/WindowState;IIILandroid/os/IBinder;Ljava/lang/String;)Z
+PLcom/android/server/wm/WindowManagerService;->unregisterAppFreezeListener(Lcom/android/server/wm/WindowManagerService$AppFreezeListener;)V
+PLcom/android/server/wm/WindowManagerService;->unregisterSystemGestureExclusionListener(Landroid/view/ISystemGestureExclusionListener;I)V
+PLcom/android/server/wm/WindowManagerService;->unregisterWallpaperVisibilityListener(Landroid/view/IWallpaperVisibilityListener;I)V
 PLcom/android/server/wm/WindowManagerService;->updateAppOpsState()V
-HSPLcom/android/server/wm/WindowManagerService;->updateCircularDisplayMaskIfNeeded()V
+HPLcom/android/server/wm/WindowManagerService;->updateDisplayContentLocation(Landroid/view/IWindow;III)V
 HSPLcom/android/server/wm/WindowManagerService;->updateFocusedWindowLocked(IZ)Z
+PLcom/android/server/wm/WindowManagerService;->updateHiddenWhileSuspendedState(Landroid/util/ArraySet;Z)V
 HSPLcom/android/server/wm/WindowManagerService;->updateNonSystemOverlayWindowsVisibilityIfNeeded(Lcom/android/server/wm/WindowState;Z)V
 PLcom/android/server/wm/WindowManagerService;->updatePointerIcon(Landroid/view/IWindow;)V
 HSPLcom/android/server/wm/WindowManagerService;->updateRotation(ZZ)V
 HSPLcom/android/server/wm/WindowManagerService;->updateRotationUnchecked(ZZ)V
-HSPLcom/android/server/wm/WindowManagerService;->watchRotation(Landroid/view/IRotationWatcher;I)I
+PLcom/android/server/wm/WindowManagerService;->updateTapExcludeRegion(Landroid/view/IWindow;Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowManagerService;->watchRotation(Landroid/view/IRotationWatcher;I)I
 HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/os/IBinder;Z)Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowManagerService;->windowForClientLocked(Lcom/android/server/wm/Session;Landroid/view/IWindow;Z)Lcom/android/server/wm/WindowState;
-PLcom/android/server/wm/WindowManagerService;->writeToProtoLocked(Landroid/util/proto/ProtoOutputStream;I)V
+PLcom/android/server/wm/WindowManagerShellCommand;-><init>(Lcom/android/server/wm/WindowManagerService;)V
+PLcom/android/server/wm/WindowManagerShellCommand;->getDisplayId(Ljava/lang/String;)I
+PLcom/android/server/wm/WindowManagerShellCommand;->lambda$runDumpVisibleWindowViews$0(Ljava/util/ArrayList;Lcom/android/server/wm/WindowState;)V
+PLcom/android/server/wm/WindowManagerShellCommand;->onCommand(Ljava/lang/String;)I
+PLcom/android/server/wm/WindowManagerShellCommand;->printInitialDisplayDensity(Ljava/io/PrintWriter;I)V
+PLcom/android/server/wm/WindowManagerShellCommand;->runDismissKeyguard(Ljava/io/PrintWriter;)I
+PLcom/android/server/wm/WindowManagerShellCommand;->runDisplayDensity(Ljava/io/PrintWriter;)I
+PLcom/android/server/wm/WindowManagerShellCommand;->runDumpVisibleWindowViews(Ljava/io/PrintWriter;)I
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;-><init>()V
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->boost()V
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->reset()V
 HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setAppTransitionRunning(Z)V
 PLcom/android/server/wm/WindowManagerThreadPriorityBooster;->setBoundsAnimationRunning(Z)V
+HSPLcom/android/server/wm/WindowManagerThreadPriorityBooster;->updatePriorityLocked()V
 HSPLcom/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
 HSPLcom/android/server/wm/WindowProcessController;->addActivityIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
 HSPLcom/android/server/wm/WindowProcessController;->addPackage(Ljava/lang/String;)V
-HSPLcom/android/server/wm/WindowProcessController;->addPackage(Ljava/lang/String;J)V
-HSPLcom/android/server/wm/WindowProcessController;->addRecentTask(Lcom/android/server/wm/TaskRecord;)V
-PLcom/android/server/wm/WindowProcessController;->appEarlyNotResponding(Ljava/lang/String;Ljava/lang/Runnable;)V
+PLcom/android/server/wm/WindowProcessController;->addRecentTask(Lcom/android/server/wm/Task;)V
+PLcom/android/server/wm/WindowProcessController;->appDied()V
+PLcom/android/server/wm/WindowProcessController;->appDied(Ljava/lang/String;)V
+HPLcom/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
 PLcom/android/server/wm/WindowProcessController;->areBackgroundActivityStartsAllowed()Z
 HSPLcom/android/server/wm/WindowProcessController;->clearActivities()V
-HSPLcom/android/server/wm/WindowProcessController;->clearPackageList()V
+HPLcom/android/server/wm/WindowProcessController;->clearPackageList()V
 HSPLcom/android/server/wm/WindowProcessController;->clearRecentTasks()V
-HSPLcom/android/server/wm/WindowProcessController;->clearWaitingToKill()V
-HSPLcom/android/server/wm/WindowProcessController;->computeOomAdjFromActivities(ILcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;)I
-HSPLcom/android/server/wm/WindowProcessController;->computeRelaunchReason()I
-PLcom/android/server/wm/WindowProcessController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowProcessController;->computeOomAdjFromActivities(ILcom/android/server/wm/WindowProcessController$ComputeOomAdjCallback;)I
+HPLcom/android/server/wm/WindowProcessController;->computeRelaunchReason()I
+HSPLcom/android/server/wm/WindowProcessController;->createProfilerInfoIfNeeded()Landroid/app/ProfilerInfo;
+HSPLcom/android/server/wm/WindowProcessController;->dispatchConfigurationChange(Landroid/content/res/Configuration;)V
+HPLcom/android/server/wm/WindowProcessController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowProcessController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/wm/WindowProcessController;->getChildCount()I
 HSPLcom/android/server/wm/WindowProcessController;->getCpuTime()J
 PLcom/android/server/wm/WindowProcessController;->getCurrentProcState()I
 HSPLcom/android/server/wm/WindowProcessController;->getCurrentSchedulingGroup()I
+PLcom/android/server/wm/WindowProcessController;->getDisplayContextsWithErrorDialogs(Ljava/util/List;)V
 PLcom/android/server/wm/WindowProcessController;->getFgInteractionTime()J
+PLcom/android/server/wm/WindowProcessController;->getInputDispatchingTimeout()J
 PLcom/android/server/wm/WindowProcessController;->getInteractionEventTime()J
-PLcom/android/server/wm/WindowProcessController;->getParent()Lcom/android/server/wm/ConfigurationContainer;
+HSPLcom/android/server/wm/WindowProcessController;->getParent()Lcom/android/server/wm/ConfigurationContainer;
 HSPLcom/android/server/wm/WindowProcessController;->getPid()I
 HSPLcom/android/server/wm/WindowProcessController;->getReportedProcState()I
 HSPLcom/android/server/wm/WindowProcessController;->getRequiredAbi()Ljava/lang/String;
@@ -17582,35 +38864,45 @@
 PLcom/android/server/wm/WindowProcessController;->getWhenUnimportant()J
 HSPLcom/android/server/wm/WindowProcessController;->hasActivities()Z
 HSPLcom/android/server/wm/WindowProcessController;->hasActivitiesOrRecentTasks()Z
+HPLcom/android/server/wm/WindowProcessController;->hasActivityInVisibleTask()Z
 PLcom/android/server/wm/WindowProcessController;->hasClientActivities()Z
 PLcom/android/server/wm/WindowProcessController;->hasForegroundActivities()Z
 PLcom/android/server/wm/WindowProcessController;->hasForegroundServices()Z
 PLcom/android/server/wm/WindowProcessController;->hasOverlayUi()Z
 PLcom/android/server/wm/WindowProcessController;->hasPendingUiClean()Z
 HSPLcom/android/server/wm/WindowProcessController;->hasRecentTasks()Z
-HSPLcom/android/server/wm/WindowProcessController;->hasStartedActivity(Lcom/android/server/wm/ActivityRecord;)Z
+HPLcom/android/server/wm/WindowProcessController;->hasStartedActivity(Lcom/android/server/wm/ActivityRecord;)Z
 HSPLcom/android/server/wm/WindowProcessController;->hasThread()Z
 PLcom/android/server/wm/WindowProcessController;->hasTopUi()Z
 HSPLcom/android/server/wm/WindowProcessController;->hasVisibleActivities()Z
+PLcom/android/server/wm/WindowProcessController;->isBoundByForegroundUid()Z
 HSPLcom/android/server/wm/WindowProcessController;->isCrashing()Z
 HSPLcom/android/server/wm/WindowProcessController;->isHomeProcess()Z
 HSPLcom/android/server/wm/WindowProcessController;->isInstrumenting()Z
-PLcom/android/server/wm/WindowProcessController;->isInstrumentingWithBackgroundActivityStartPrivileges()Z
-HSPLcom/android/server/wm/WindowProcessController;->isInterestingToUser()Z
+HPLcom/android/server/wm/WindowProcessController;->isInterestingToUser()Z
 HSPLcom/android/server/wm/WindowProcessController;->isNotResponding()Z
 PLcom/android/server/wm/WindowProcessController;->isPerceptible()Z
+PLcom/android/server/wm/WindowProcessController;->isPersistent()Z
 HSPLcom/android/server/wm/WindowProcessController;->isPreviousProcess()Z
 HSPLcom/android/server/wm/WindowProcessController;->isRemoved()Z
+PLcom/android/server/wm/WindowProcessController;->isUsingWrapper()Z
 PLcom/android/server/wm/WindowProcessController;->makeFinishingForProcessRemoved()V
 HSPLcom/android/server/wm/WindowProcessController;->onConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/WindowProcessController;->onMergedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
+HSPLcom/android/server/wm/WindowProcessController;->onProcCachedStateChanged(Z)V
 PLcom/android/server/wm/WindowProcessController;->onRequestedOverrideConfigurationChanged(Landroid/content/res/Configuration;)V
-HSPLcom/android/server/wm/WindowProcessController;->onStartActivity(I)Landroid/app/ProfilerInfo;
+HSPLcom/android/server/wm/WindowProcessController;->onStartActivity(ILandroid/content/pm/ActivityInfo;)V
 HSPLcom/android/server/wm/WindowProcessController;->onTopProcChanged()V
-HSPLcom/android/server/wm/WindowProcessController;->postPendingUiCleanMsg(Z)V
-PLcom/android/server/wm/WindowProcessController;->registerDisplayConfigurationListenerLocked(Lcom/android/server/wm/ActivityDisplay;)V
-HSPLcom/android/server/wm/WindowProcessController;->removeActivity(Lcom/android/server/wm/ActivityRecord;)V
-PLcom/android/server/wm/WindowProcessController;->removeRecentTask(Lcom/android/server/wm/TaskRecord;)V
+HPLcom/android/server/wm/WindowProcessController;->postPendingUiCleanMsg(Z)V
+HSPLcom/android/server/wm/WindowProcessController;->registerActivityConfigurationListener(Lcom/android/server/wm/ActivityRecord;)V
+PLcom/android/server/wm/WindowProcessController;->registerDisplayConfigurationListener(Lcom/android/server/wm/DisplayContent;)V
+PLcom/android/server/wm/WindowProcessController;->registerDisplayConfigurationListenerLocked(Lcom/android/server/wm/DisplayContent;)V
+HSPLcom/android/server/wm/WindowProcessController;->registeredForDisplayConfigChanges()Z
+PLcom/android/server/wm/WindowProcessController;->releaseSomeActivities(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowProcessController;->removeActivity(Lcom/android/server/wm/ActivityRecord;)V
+HPLcom/android/server/wm/WindowProcessController;->removeRecentTask(Lcom/android/server/wm/Task;)V
 HSPLcom/android/server/wm/WindowProcessController;->setAllowBackgroundActivityStarts(Z)V
+HSPLcom/android/server/wm/WindowProcessController;->setBoundClientUids(Landroid/util/ArraySet;)V
 HSPLcom/android/server/wm/WindowProcessController;->setCrashing(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setCurrentProcState(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setCurrentSchedulingGroup(I)V
@@ -17618,48 +38910,84 @@
 HSPLcom/android/server/wm/WindowProcessController;->setFgInteractionTime(J)V
 HSPLcom/android/server/wm/WindowProcessController;->setHasClientActivities(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setHasForegroundActivities(Z)V
-HSPLcom/android/server/wm/WindowProcessController;->setHasForegroundServices(Z)V
+PLcom/android/server/wm/WindowProcessController;->setHasForegroundServices(Z)V
 PLcom/android/server/wm/WindowProcessController;->setHasOverlayUi(Z)V
-HSPLcom/android/server/wm/WindowProcessController;->setHasTopUi(Z)V
+PLcom/android/server/wm/WindowProcessController;->setHasTopUi(Z)V
+PLcom/android/server/wm/WindowProcessController;->setInstrumenting(ZZ)V
 HSPLcom/android/server/wm/WindowProcessController;->setInteractionEventTime(J)V
+PLcom/android/server/wm/WindowProcessController;->setLastActivityFinishTimeIfNeeded(J)V
+HSPLcom/android/server/wm/WindowProcessController;->setLastActivityLaunchTime(J)V
+HSPLcom/android/server/wm/WindowProcessController;->setLastReportedConfiguration(Landroid/content/res/Configuration;)V
 HSPLcom/android/server/wm/WindowProcessController;->setNotResponding(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setPendingUiClean(Z)V
-HSPLcom/android/server/wm/WindowProcessController;->setPendingUiCleanAndForceProcessStateUpTo(I)V
+HPLcom/android/server/wm/WindowProcessController;->setPendingUiCleanAndForceProcessStateUpTo(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setPerceptible(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setPersistent(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setPid(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setReportedProcState(I)V
 HSPLcom/android/server/wm/WindowProcessController;->setRequiredAbi(Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowProcessController;->setRunningRecentsAnimation(Z)V
+HPLcom/android/server/wm/WindowProcessController;->setRunningRemoteAnimation(Z)V
 HSPLcom/android/server/wm/WindowProcessController;->setThread(Landroid/app/IApplicationThread;)V
 HSPLcom/android/server/wm/WindowProcessController;->setUsingWrapper(Z)V
-HSPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
-PLcom/android/server/wm/WindowProcessController;->shouldKillProcessForRemovedTask(Lcom/android/server/wm/TaskRecord;)Z
-HSPLcom/android/server/wm/WindowProcessController;->stopFreezingActivities()V
-HSPLcom/android/server/wm/WindowProcessController;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowProcessController;->setWhenUnimportant(J)V
+HPLcom/android/server/wm/WindowProcessController;->shouldKillProcessForRemovedTask(Lcom/android/server/wm/Task;)Z
+HSPLcom/android/server/wm/WindowProcessController;->shouldSetProfileProc()Z
+HPLcom/android/server/wm/WindowProcessController;->stopFreezingActivities()V
+HPLcom/android/server/wm/WindowProcessController;->toString()Ljava/lang/String;
+HSPLcom/android/server/wm/WindowProcessController;->unregisterActivityConfigurationListener()V
+HSPLcom/android/server/wm/WindowProcessController;->unregisterDisplayConfigurationListener()V
 PLcom/android/server/wm/WindowProcessController;->unregisterDisplayConfigurationListenerLocked()V
+HSPLcom/android/server/wm/WindowProcessController;->updateActivityConfigurationListener()V
 HSPLcom/android/server/wm/WindowProcessController;->updateConfiguration()V
-HSPLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZZ)V
+HPLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZ)V
+HPLcom/android/server/wm/WindowProcessController;->updateRunningRemoteOrRecentsAnimation()V
 HSPLcom/android/server/wm/WindowProcessController;->updateServiceConnectionActivities()V
 HSPLcom/android/server/wm/WindowProcessController;->updateTopResumingActivityInProcessIfNeeded(Lcom/android/server/wm/ActivityRecord;)Z
-PLcom/android/server/wm/WindowProcessController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/WindowProcessControllerMap;-><init>()V
+HSPLcom/android/server/wm/WindowProcessControllerMap;->getPidMap()Landroid/util/SparseArray;
+HSPLcom/android/server/wm/WindowProcessControllerMap;->getProcess(I)Lcom/android/server/wm/WindowProcessController;
+PLcom/android/server/wm/WindowProcessControllerMap;->getProcesses(I)Landroid/util/ArraySet;
+HSPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V
+HSPLcom/android/server/wm/WindowProcessControllerMap;->remove(I)V
+HSPLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V
 HSPLcom/android/server/wm/WindowState$1;-><init>()V
 PLcom/android/server/wm/WindowState$1;->compare(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
 PLcom/android/server/wm/WindowState$1;->compare(Ljava/lang/Object;Ljava/lang/Object;)I
+HSPLcom/android/server/wm/WindowState$2;-><init>(Lcom/android/server/wm/WindowManagerService;)V
 PLcom/android/server/wm/WindowState$2;->isInteractive()Z
 PLcom/android/server/wm/WindowState$2;->wakeUp(JILjava/lang/String;)V
-HSPLcom/android/server/wm/WindowState$3;->run()V
+PLcom/android/server/wm/WindowState$3;-><init>(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZILandroid/view/DisplayCutout;)V
+PLcom/android/server/wm/WindowState$3;->run()V
 HSPLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/WindowState$DeathRecipient;->binderDied()V
-PLcom/android/server/wm/WindowState$MoveAnimationSpec;-><init>(Lcom/android/server/wm/WindowState;IIII)V
-PLcom/android/server/wm/WindowState$MoveAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
-PLcom/android/server/wm/WindowState$MoveAnimationSpec;->getDuration()J
+HSPLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$1;)V
+HPLcom/android/server/wm/WindowState$DeathRecipient;->binderDied()V
+HPLcom/android/server/wm/WindowState$MoveAnimationSpec;-><init>(Lcom/android/server/wm/WindowState;IIII)V
+HPLcom/android/server/wm/WindowState$MoveAnimationSpec;-><init>(Lcom/android/server/wm/WindowState;IIIILcom/android/server/wm/WindowState$1;)V
+HPLcom/android/server/wm/WindowState$MoveAnimationSpec;->apply(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;J)V
+PLcom/android/server/wm/WindowState$MoveAnimationSpec;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
+PLcom/android/server/wm/WindowState$MoveAnimationSpec;->dumpDebugInner(Landroid/util/proto/ProtoOutputStream;)V
+HPLcom/android/server/wm/WindowState$MoveAnimationSpec;->getDuration()J
+HSPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V
+HSPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;->reset()V
 HSPLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;)V
+HSPLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$1;)V
+PLcom/android/server/wm/WindowState$WindowId;->isFocused()Z
+HSPLcom/android/server/wm/WindowState;-><clinit>()V
 HSPLcom/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;IILandroid/view/WindowManager$LayoutParams;IIZ)V
 HSPLcom/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;IILandroid/view/WindowManager$LayoutParams;IIZLcom/android/server/wm/WindowState$PowerManagerWrapper;)V
+PLcom/android/server/wm/WindowState;->access$200(Lcom/android/server/wm/WindowState;)Z
+PLcom/android/server/wm/WindowState;->access$300(Lcom/android/server/wm/WindowState;Z)V
+PLcom/android/server/wm/WindowState;->access$400(Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZILandroid/view/DisplayCutout;)V
+PLcom/android/server/wm/WindowState;->addEmbeddedDisplayContent(Lcom/android/server/wm/DisplayContent;)Z
 HSPLcom/android/server/wm/WindowState;->adjustStartingWindowFlags()V
 HSPLcom/android/server/wm/WindowState;->applyAdjustForImeIfNeeded()V
 HSPLcom/android/server/wm/WindowState;->applyDims(Lcom/android/server/wm/Dimmer;)V
 HSPLcom/android/server/wm/WindowState;->applyGravityAndUpdateFrame(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->applyGravityAndUpdateFrame(Lcom/android/server/wm/WindowFrames;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowState;->applyImeWindowsIfNeeded(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HSPLcom/android/server/wm/WindowState;->applyInOrderWithImeWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
+HPLcom/android/server/wm/WindowState;->applyInsets(Landroid/graphics/Region;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->assignChildLayers(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/WindowState;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
 HSPLcom/android/server/wm/WindowState;->attach()V
@@ -17667,329 +38995,420 @@
 HSPLcom/android/server/wm/WindowState;->calculateSystemDecorRect(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->canAddInternalSystemWindow()Z
 HSPLcom/android/server/wm/WindowState;->canAffectSystemUiFlags()Z
-PLcom/android/server/wm/WindowState;->canBeImeTarget()Z
+HPLcom/android/server/wm/WindowState;->canBeImeTarget()Z
 HSPLcom/android/server/wm/WindowState;->canReceiveKeys()Z
-PLcom/android/server/wm/WindowState;->canShowWhenLocked()Z
+HSPLcom/android/server/wm/WindowState;->canReceiveKeys(Z)Z
+HPLcom/android/server/wm/WindowState;->canShowWhenLocked()Z
 HSPLcom/android/server/wm/WindowState;->cantReceiveTouchInput()Z
-HSPLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
-HSPLcom/android/server/wm/WindowState;->clearAnimatingFlags()Z
+HPLcom/android/server/wm/WindowState;->checkPolicyVisibilityChange()V
+HPLcom/android/server/wm/WindowState;->clearAnimatingFlags()Z
+PLcom/android/server/wm/WindowState;->clearPolicyVisibilityFlag(I)V
 HSPLcom/android/server/wm/WindowState;->computeDragResizing()Z
+HPLcom/android/server/wm/WindowState;->computeFrame(Lcom/android/server/wm/DisplayFrames;)V
 HSPLcom/android/server/wm/WindowState;->computeFrameLw()V
-HSPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
-HSPLcom/android/server/wm/WindowState;->destroySurfaceUnchecked()V
-HSPLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZILandroid/view/DisplayCutout;)V
+HSPLcom/android/server/wm/WindowState;->cropRegionToStackBoundsIfNeeded(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->destroySurface(ZZ)Z
+PLcom/android/server/wm/WindowState;->destroySurfaceUnchecked()V
+HPLcom/android/server/wm/WindowState;->dispatchResized(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;ZLandroid/util/MergedConfiguration;ZILandroid/view/DisplayCutout;)V
 HSPLcom/android/server/wm/WindowState;->dispatchWallpaperVisibility(Z)V
-HSPLcom/android/server/wm/WindowState;->disposeInputChannel()V
-PLcom/android/server/wm/WindowState;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowState;->disposeInputChannel()V
+HPLcom/android/server/wm/WindowState;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowState;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
 HSPLcom/android/server/wm/WindowState;->expandForSurfaceInsets(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowState;->fillsDisplay()Z
+HPLcom/android/server/wm/WindowState;->fillsDisplay()Z
 HSPLcom/android/server/wm/WindowState;->finishSeamlessRotation(Z)V
-PLcom/android/server/wm/WindowState;->forAllWindowBottomToTop(Lcom/android/internal/util/ToBooleanFunction;)Z
-PLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z
+HPLcom/android/server/wm/WindowState;->forAllWindowBottomToTop(Lcom/android/internal/util/ToBooleanFunction;)Z
+HPLcom/android/server/wm/WindowState;->forAllWindowTopToBottom(Lcom/android/internal/util/ToBooleanFunction;)Z
 HSPLcom/android/server/wm/WindowState;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
 PLcom/android/server/wm/WindowState;->forceWindowsScaleableInTransaction(Z)V
-PLcom/android/server/wm/WindowState;->frameCoversEntireAppTokenBounds()Z
+HPLcom/android/server/wm/WindowState;->frameCoversEntireAppTokenBounds()Z
+HPLcom/android/server/wm/WindowState;->getAnimationFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->getAppToken()Landroid/view/IApplicationToken;
 HSPLcom/android/server/wm/WindowState;->getAttrs()Landroid/view/WindowManager$LayoutParams;
 HSPLcom/android/server/wm/WindowState;->getBackdropFrame(Landroid/graphics/Rect;)Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getBaseType()I
 HSPLcom/android/server/wm/WindowState;->getBounds()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getClientInsetsState()Landroid/view/InsetsState;
 HSPLcom/android/server/wm/WindowState;->getCompatFrame(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->getCompatFrameSize(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->getConfiguration()Landroid/content/res/Configuration;
-HSPLcom/android/server/wm/WindowState;->getContainingFrame()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->getContentFrameLw()Landroid/graphics/Rect;
+PLcom/android/server/wm/WindowState;->getContainingFrame()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getContentFrameLw()Landroid/graphics/Rect;
 PLcom/android/server/wm/WindowState;->getContentInsets()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->getContentInsets(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->getContentInsets(Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowState;->getControllableInsetProvider()Lcom/android/server/wm/InsetsSourceProvider;
+PLcom/android/server/wm/WindowState;->getDeferTransactionBarrier()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/WindowState;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
-HSPLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getDisplayFrameLw()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getDisplayId()I
-HSPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;
-PLcom/android/server/wm/WindowState;->getDisplayedBounds()Landroid/graphics/Rect;
+HPLcom/android/server/wm/WindowState;->getDisplayInfo()Landroid/view/DisplayInfo;
+HPLcom/android/server/wm/WindowState;->getDisplayedBounds()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getDrawnStateEvaluated()Z
+HPLcom/android/server/wm/WindowState;->getEffectiveTouchableRegion(Landroid/graphics/Region;)V
 HSPLcom/android/server/wm/WindowState;->getFrameLw()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->getFrameNumber()J
+PLcom/android/server/wm/WindowState;->getFrameNumber()J
 PLcom/android/server/wm/WindowState;->getGivenContentInsetsLw()Landroid/graphics/Rect;
-PLcom/android/server/wm/WindowState;->getGivenInsetsPendingLw()Z
+HPLcom/android/server/wm/WindowState;->getGivenInsetsPendingLw()Z
 PLcom/android/server/wm/WindowState;->getGivenVisibleInsetsLw()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getInputDispatchingTimeoutNanos()J
-HSPLcom/android/server/wm/WindowState;->getInsetProvider()Lcom/android/server/wm/InsetsSourceProvider;
-HSPLcom/android/server/wm/WindowState;->getInsetsForRelayout(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowState;->getLastReportedMergedConfiguration(Landroid/util/MergedConfiguration;)V
+HSPLcom/android/server/wm/WindowState;->getInsetsForRelayout(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowState;->getKeyInterceptionInfo()Lcom/android/internal/policy/KeyInterceptionInfo;
+HSPLcom/android/server/wm/WindowState;->getLastReportedConfiguration()Landroid/content/res/Configuration;
+HPLcom/android/server/wm/WindowState;->getLastReportedMergedConfiguration(Landroid/util/MergedConfiguration;)V
+HPLcom/android/server/wm/WindowState;->getLayoutingWindowFrames()Lcom/android/server/wm/WindowFrames;
 HSPLcom/android/server/wm/WindowState;->getMergedConfiguration(Landroid/util/MergedConfiguration;)V
 HSPLcom/android/server/wm/WindowState;->getName()Ljava/lang/String;
-HSPLcom/android/server/wm/WindowState;->getNeedsMenuLw(Lcom/android/server/policy/WindowManagerPolicy$WindowState;)Z
 HSPLcom/android/server/wm/WindowState;->getOrientationChanging()Z
-PLcom/android/server/wm/WindowState;->getOverscanFrameLw()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getOwningPackage()Ljava/lang/String;
 HSPLcom/android/server/wm/WindowState;->getOwningUid()I
-PLcom/android/server/wm/WindowState;->getParentFrame()Landroid/graphics/Rect;
 HSPLcom/android/server/wm/WindowState;->getParentWindow()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getProcessGlobalConfiguration()Landroid/content/res/Configuration;
 HSPLcom/android/server/wm/WindowState;->getReplacingWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowState;->getRotationAnimationHint()I
+PLcom/android/server/wm/WindowState;->getRequestedInsetsState()Landroid/view/InsetsState;
+PLcom/android/server/wm/WindowState;->getResizeMode()I
+HSPLcom/android/server/wm/WindowState;->getRootTask()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/WindowState;->getRootTaskId()I
+PLcom/android/server/wm/WindowState;->getRotationAnimationHint()I
 HSPLcom/android/server/wm/WindowState;->getSession()Landroid/view/SurfaceSession;
 PLcom/android/server/wm/WindowState;->getStableFrameLw()Landroid/graphics/Rect;
 PLcom/android/server/wm/WindowState;->getStableInsets()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->getStableInsets(Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowState;->getStack()Lcom/android/server/wm/TaskStack;
+HPLcom/android/server/wm/WindowState;->getStableInsets(Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowState;->getStack()Lcom/android/server/wm/ActivityStack;
+HPLcom/android/server/wm/WindowState;->getStackId()I
 PLcom/android/server/wm/WindowState;->getSurfaceLayer()I
-HSPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/graphics/Region;I)I
+HSPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/view/InputWindowHandle;I)I
+HPLcom/android/server/wm/WindowState;->getSystemGestureExclusion()Ljava/util/List;
 HSPLcom/android/server/wm/WindowState;->getSystemUiVisibility()I
+HPLcom/android/server/wm/WindowState;->getTapExcludeRegion(Landroid/graphics/Region;)V
 HSPLcom/android/server/wm/WindowState;->getTask()Lcom/android/server/wm/Task;
 HSPLcom/android/server/wm/WindowState;->getTopParentWindow()Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getTouchableRegion(Landroid/graphics/Region;)V
-HSPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V
-PLcom/android/server/wm/WindowState;->getVisibleBounds(Landroid/graphics/Rect;)V
+HPLcom/android/server/wm/WindowState;->getTransformationMatrix([FLandroid/graphics/Matrix;)V
+HPLcom/android/server/wm/WindowState;->getVisibleBounds(Landroid/graphics/Rect;)V
 PLcom/android/server/wm/WindowState;->getVisibleFrameLw()Landroid/graphics/Rect;
-HSPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
+HPLcom/android/server/wm/WindowState;->getWindow(Ljava/util/function/Predicate;)Lcom/android/server/wm/WindowState;
 HSPLcom/android/server/wm/WindowState;->getWindowFrames()Lcom/android/server/wm/WindowFrames;
-HSPLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo;
+HPLcom/android/server/wm/WindowState;->getWindowInfo()Landroid/view/WindowInfo;
 HSPLcom/android/server/wm/WindowState;->getWindowTag()Ljava/lang/CharSequence;
 HSPLcom/android/server/wm/WindowState;->getWmDisplayCutout()Lcom/android/server/wm/utils/WmDisplayCutout;
 HSPLcom/android/server/wm/WindowState;->handleWindowMovedIfNeeded()V
 PLcom/android/server/wm/WindowState;->hasAppShownWindows()Z
 HSPLcom/android/server/wm/WindowState;->hasContentToDisplay()Z
-HSPLcom/android/server/wm/WindowState;->hasDrawnLw()Z
+PLcom/android/server/wm/WindowState;->hasDrawnLw()Z
 HSPLcom/android/server/wm/WindowState;->hasMoved()Z
-HSPLcom/android/server/wm/WindowState;->hasVisibleNotDrawnWallpaper()Z
-HSPLcom/android/server/wm/WindowState;->hideLw(Z)Z
-HSPLcom/android/server/wm/WindowState;->hideLw(ZZ)Z
+HPLcom/android/server/wm/WindowState;->hasTapExcludeRegion()Z
+HPLcom/android/server/wm/WindowState;->hasVisibleNotDrawnWallpaper()Z
+HPLcom/android/server/wm/WindowState;->hideLw(Z)Z
+HPLcom/android/server/wm/WindowState;->hideLw(ZZ)Z
 HSPLcom/android/server/wm/WindowState;->hideNonSystemOverlayWindowsWhenVisible()Z
 PLcom/android/server/wm/WindowState;->hidePermanentlyLw()V
-HSPLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V
+HPLcom/android/server/wm/WindowState;->hideWallpaperWindow(ZLjava/lang/String;)V
+HSPLcom/android/server/wm/WindowState;->inAppWindowThatMatchesParentBounds()Z
 HSPLcom/android/server/wm/WindowState;->inSizeCompatMode()Z
 HSPLcom/android/server/wm/WindowState;->initAppOpsState()V
+HSPLcom/android/server/wm/WindowState;->initExclusionRestrictions()V
+HPLcom/android/server/wm/WindowState;->isAnimating(I)Z
 HSPLcom/android/server/wm/WindowState;->isAnimatingLw()Z
+PLcom/android/server/wm/WindowState;->isAnimatingToRecents()Z
 HSPLcom/android/server/wm/WindowState;->isChildWindow()Z
 PLcom/android/server/wm/WindowState;->isClosing()Z
-HSPLcom/android/server/wm/WindowState;->isConfigChanged()Z
-HSPLcom/android/server/wm/WindowState;->isDefaultDisplay()Z
 HSPLcom/android/server/wm/WindowState;->isDimming()Z
 HSPLcom/android/server/wm/WindowState;->isDisplayedLw()Z
 HSPLcom/android/server/wm/WindowState;->isDockedResizing()Z
 HSPLcom/android/server/wm/WindowState;->isDragResizeChanged()Z
 HSPLcom/android/server/wm/WindowState;->isDragResizing()Z
+PLcom/android/server/wm/WindowState;->isDragResizingChangeReported()Z
 HSPLcom/android/server/wm/WindowState;->isDrawFinishedLw()Z
 HSPLcom/android/server/wm/WindowState;->isDrawnLw()Z
 HSPLcom/android/server/wm/WindowState;->isFocused()Z
+HSPLcom/android/server/wm/WindowState;->isFullyTransparent()Z
 HSPLcom/android/server/wm/WindowState;->isGoneForLayoutLw()Z
-HSPLcom/android/server/wm/WindowState;->isHiddenFromUserLocked()Z
+HPLcom/android/server/wm/WindowState;->isHiddenFromUserLocked()Z
+HPLcom/android/server/wm/WindowState;->isImplicitlyExcludingAllSystemGestures()Z
 HSPLcom/android/server/wm/WindowState;->isInputMethodTarget()Z
-HSPLcom/android/server/wm/WindowState;->isInputMethodWindow()Z
+HPLcom/android/server/wm/WindowState;->isInputMethodWindow()Z
 HSPLcom/android/server/wm/WindowState;->isInteresting()Z
 HSPLcom/android/server/wm/WindowState;->isLaidOut()Z
+HSPLcom/android/server/wm/WindowState;->isLastConfigReportedToClient()Z
+HPLcom/android/server/wm/WindowState;->isLegacyPolicyVisibility()Z
 HSPLcom/android/server/wm/WindowState;->isLetterboxedAppWindow()Z
 HSPLcom/android/server/wm/WindowState;->isLetterboxedForDisplayCutoutLw()Z
 HSPLcom/android/server/wm/WindowState;->isLetterboxedOverlappingWith(Landroid/graphics/Rect;)Z
+PLcom/android/server/wm/WindowState;->isNonToastOrStarting()Z
+PLcom/android/server/wm/WindowState;->isNonToastWindowVisibleForPid(I)Z
+HPLcom/android/server/wm/WindowState;->isNonToastWindowVisibleForUid(I)Z
 HSPLcom/android/server/wm/WindowState;->isObscuringDisplay()Z
 HSPLcom/android/server/wm/WindowState;->isOnScreen()Z
 HSPLcom/android/server/wm/WindowState;->isOpaqueDrawn()Z
+HSPLcom/android/server/wm/WindowState;->isParentWindowGoneForLayout()Z
 HSPLcom/android/server/wm/WindowState;->isParentWindowHidden()Z
 PLcom/android/server/wm/WindowState;->isPotentialDragTarget()Z
 HSPLcom/android/server/wm/WindowState;->isReadyForDisplay()Z
+HSPLcom/android/server/wm/WindowState;->isRecentsAnimationConsumingAppInput()Z
 HSPLcom/android/server/wm/WindowState;->isRtl()Z
-HSPLcom/android/server/wm/WindowState;->isSelfOrAncestorWindowAnimatingExit()Z
+HPLcom/android/server/wm/WindowState;->isSelfOrAncestorWindowAnimatingExit()Z
 HSPLcom/android/server/wm/WindowState;->isVisible()Z
+HSPLcom/android/server/wm/WindowState;->isVisibleByPolicy()Z
 HSPLcom/android/server/wm/WindowState;->isVisibleLw()Z
-HSPLcom/android/server/wm/WindowState;->isVisibleNow()Z
+HPLcom/android/server/wm/WindowState;->isVisibleNow()Z
 HSPLcom/android/server/wm/WindowState;->isVisibleOrAdding()Z
 HSPLcom/android/server/wm/WindowState;->isVoiceInteraction()Z
-HSPLcom/android/server/wm/WindowState;->isWinVisibleLw()Z
-PLcom/android/server/wm/WindowState;->layoutInParentFrame()Z
+HPLcom/android/server/wm/WindowState;->isWinVisibleLw()Z
+HPLcom/android/server/wm/WindowState;->layoutInParentFrame()Z
+HPLcom/android/server/wm/WindowState;->logExclusionRestrictions(I)V
+HSPLcom/android/server/wm/WindowState;->logPerformShow(Ljava/lang/String;)V
+HSPLcom/android/server/wm/WindowState;->matchesDisplayBounds()Z
 HSPLcom/android/server/wm/WindowState;->mightAffectAllDrawn()Z
 HSPLcom/android/server/wm/WindowState;->needsRelativeLayeringToIme()Z
 HSPLcom/android/server/wm/WindowState;->needsZBoost()Z
-HSPLcom/android/server/wm/WindowState;->notifyInsetsChanged()V
-HSPLcom/android/server/wm/WindowState;->onAnimationFinished()V
-HSPLcom/android/server/wm/WindowState;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-HSPLcom/android/server/wm/WindowState;->onAnimationLeashDestroyed(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)Z
+HPLcom/android/server/wm/WindowState;->notifyInsetsChanged()V
+HPLcom/android/server/wm/WindowState;->onAnimationFinished()V
+HPLcom/android/server/wm/WindowState;->onAnimationFinished(ILcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/WindowState;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
+HPLcom/android/server/wm/WindowState;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowState;->onAppVisibilityChanged(ZZ)V
 HSPLcom/android/server/wm/WindowState;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/WindowState;->onExitAnimationDone()V
-PLcom/android/server/wm/WindowState;->onMovedByResize()V
-HSPLcom/android/server/wm/WindowState;->onParentChanged()V
-HSPLcom/android/server/wm/WindowState;->onResize()V
+HPLcom/android/server/wm/WindowState;->onExitAnimationDone()V
+HSPLcom/android/server/wm/WindowState;->onMergedOverrideConfigurationChanged()V
+HPLcom/android/server/wm/WindowState;->onMovedByResize()V
+HSPLcom/android/server/wm/WindowState;->onParentChanged(Lcom/android/server/wm/ConfigurationContainer;Lcom/android/server/wm/ConfigurationContainer;)V
+HPLcom/android/server/wm/WindowState;->onResize()V
 PLcom/android/server/wm/WindowState;->onSetAppExiting()Z
-HSPLcom/android/server/wm/WindowState;->onStartFreezingScreen()V
-HSPLcom/android/server/wm/WindowState;->onStopFreezingScreen()Z
+PLcom/android/server/wm/WindowState;->onStartFreezingScreen()V
+PLcom/android/server/wm/WindowState;->onStopFreezingScreen()Z
+HSPLcom/android/server/wm/WindowState;->onSurfaceShownChanged(Z)V
+PLcom/android/server/wm/WindowState;->onUnfreezeBounds()V
+PLcom/android/server/wm/WindowState;->onWindowReplacementTimeout()V
 HSPLcom/android/server/wm/WindowState;->openInputChannel(Landroid/view/InputChannel;)V
 PLcom/android/server/wm/WindowState;->orientationChangeTimedOut()V
 HSPLcom/android/server/wm/WindowState;->performShowLocked()Z
-PLcom/android/server/wm/WindowState;->pokeDrawLockLw(J)V
+HPLcom/android/server/wm/WindowState;->pokeDrawLockLw(J)V
 HSPLcom/android/server/wm/WindowState;->prelayout()V
 HSPLcom/android/server/wm/WindowState;->prepareSurfaces()V
 HSPLcom/android/server/wm/WindowState;->prepareWindowToDisplayDuringRelayout(Z)V
-HSPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(III)I
-HSPLcom/android/server/wm/WindowState;->removeIfPossible()V
-HSPLcom/android/server/wm/WindowState;->removeIfPossible(Z)V
-HSPLcom/android/server/wm/WindowState;->removeImmediately()V
+HSPLcom/android/server/wm/WindowState;->registeredForDisplayConfigChanges()Z
+HSPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(II)I
+PLcom/android/server/wm/WindowState;->removeEmbeddedDisplayContent(Lcom/android/server/wm/DisplayContent;)Z
+HPLcom/android/server/wm/WindowState;->removeIfPossible()V
+HPLcom/android/server/wm/WindowState;->removeIfPossible(Z)V
+HPLcom/android/server/wm/WindowState;->removeImmediately()V
 HSPLcom/android/server/wm/WindowState;->removeReplacedWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
+HSPLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(Z)V
 HSPLcom/android/server/wm/WindowState;->reportFocusChangedSerialized(ZZ)V
-HSPLcom/android/server/wm/WindowState;->reportResized()V
-HSPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
-HSPLcom/android/server/wm/WindowState;->resetAppOpsState()V
+HPLcom/android/server/wm/WindowState;->reportResized()V
+HPLcom/android/server/wm/WindowState;->requestDrawIfNeeded(Ljava/util/List;)V
+HPLcom/android/server/wm/WindowState;->requestUpdateWallpaperIfNeeded()V
+PLcom/android/server/wm/WindowState;->resetAppOpsState()V
 HSPLcom/android/server/wm/WindowState;->resetContentChanged()V
-HSPLcom/android/server/wm/WindowState;->resetLastContentInsets()V
-HSPLcom/android/server/wm/WindowState;->seamlesslyRotateIfAllowed(Landroid/view/SurfaceControl$Transaction;IIZ)V
-HSPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
+PLcom/android/server/wm/WindowState;->resetDragResizingChangeReported()V
+PLcom/android/server/wm/WindowState;->resetLastContentInsets()V
+HPLcom/android/server/wm/WindowState;->seamlesslyRotateIfAllowed(Landroid/view/SurfaceControl$Transaction;IIZ)V
+HPLcom/android/server/wm/WindowState;->sendAppVisibilityToClients()V
+PLcom/android/server/wm/WindowState;->setAppOpVisibilityLw(Z)V
 HSPLcom/android/server/wm/WindowState;->setDisplayLayoutNeeded()V
+HPLcom/android/server/wm/WindowState;->setDragResizing()V
 HSPLcom/android/server/wm/WindowState;->setDrawnStateEvaluated(Z)V
 HSPLcom/android/server/wm/WindowState;->setForceHideNonSystemOverlayWindowIfNeeded(Z)V
 HSPLcom/android/server/wm/WindowState;->setFrameNumber(J)V
 HSPLcom/android/server/wm/WindowState;->setHasSurface(Z)V
 HSPLcom/android/server/wm/WindowState;->setHiddenWhileSuspended(Z)V
-HSPLcom/android/server/wm/WindowState;->setInsetProvider(Lcom/android/server/wm/InsetsSourceProvider;)V
+HPLcom/android/server/wm/WindowState;->setLastExclusionHeights(III)V
 HSPLcom/android/server/wm/WindowState;->setLastReportedMergedConfiguration(Landroid/util/MergedConfiguration;)V
 HSPLcom/android/server/wm/WindowState;->setOrientationChanging(Z)V
+PLcom/android/server/wm/WindowState;->setPolicyVisibilityFlag(I)V
 HSPLcom/android/server/wm/WindowState;->setReplacementWindowIfNeeded(Lcom/android/server/wm/WindowState;)Z
 HSPLcom/android/server/wm/WindowState;->setReportResizeHints()Z
 HSPLcom/android/server/wm/WindowState;->setRequestedSize(II)V
-HSPLcom/android/server/wm/WindowState;->setShowToOwnerOnlyLocked(Z)V
+PLcom/android/server/wm/WindowState;->setShowToOwnerOnlyLocked(Z)V
+HPLcom/android/server/wm/WindowState;->setSystemGestureExclusion(Ljava/util/List;)Z
+HSPLcom/android/server/wm/WindowState;->setTouchableRegionCropIfNeeded(Landroid/view/InputWindowHandle;)V
+PLcom/android/server/wm/WindowState;->setWaitingForDrawnIfResizingChanged()V
+PLcom/android/server/wm/WindowState;->setWillReplaceChildWindows()V
+PLcom/android/server/wm/WindowState;->setWillReplaceWindow(Z)V
 HSPLcom/android/server/wm/WindowState;->setWindowScale(II)V
-PLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V
-HSPLcom/android/server/wm/WindowState;->shouldKeepVisibleDeadAppWindow()Z
-HSPLcom/android/server/wm/WindowState;->showLw(Z)Z
-HSPLcom/android/server/wm/WindowState;->showLw(ZZ)Z
-HSPLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/animation/Animation;)V
-PLcom/android/server/wm/WindowState;->startMoveAnimation(II)V
-PLcom/android/server/wm/WindowState;->subtractInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HSPLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
+HPLcom/android/server/wm/WindowState;->setupWindowForRemoveOnExit()V
+PLcom/android/server/wm/WindowState;->shouldBeReplacedWithChildren()Z
+PLcom/android/server/wm/WindowState;->shouldKeepVisibleDeadAppWindow()Z
+HPLcom/android/server/wm/WindowState;->shouldMagnify()Z
+HSPLcom/android/server/wm/WindowState;->showForAllUsers()Z
+HPLcom/android/server/wm/WindowState;->showLw(Z)Z
+HPLcom/android/server/wm/WindowState;->showLw(ZZ)Z
+HSPLcom/android/server/wm/WindowState;->showToCurrentUser()Z
+HSPLcom/android/server/wm/WindowState;->skipDecorCrop()Z
+PLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/AnimationAdapter;)V
+HPLcom/android/server/wm/WindowState;->startAnimation(Landroid/view/animation/Animation;)V
+HPLcom/android/server/wm/WindowState;->startMoveAnimation(II)V
+HPLcom/android/server/wm/WindowState;->subtractInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
+HSPLcom/android/server/wm/WindowState;->subtractTouchExcludeRegionIfNeeded(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->surfaceInsetsChanging()Z
 HSPLcom/android/server/wm/WindowState;->toString()Ljava/lang/String;
 HSPLcom/android/server/wm/WindowState;->transformClipRectFromScreenToSurfaceSpace(Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowState;->transformFrameToSurfacePosition(IILandroid/graphics/Point;)V
 HSPLcom/android/server/wm/WindowState;->transformSurfaceInsetsPosition(Landroid/graphics/Point;Landroid/graphics/Rect;)V
-PLcom/android/server/wm/WindowState;->translateToWindowX(F)F
-PLcom/android/server/wm/WindowState;->translateToWindowY(F)F
-PLcom/android/server/wm/WindowState;->updateAppOpsState()V
+HPLcom/android/server/wm/WindowState;->translateToWindowX(F)F
+HPLcom/android/server/wm/WindowState;->translateToWindowY(F)F
+HPLcom/android/server/wm/WindowState;->updateAppOpsState()V
+HSPLcom/android/server/wm/WindowState;->updateFrameRateSelectionPriorityIfNeeded()V
+HSPLcom/android/server/wm/WindowState;->updateLastFrames()V
 HSPLcom/android/server/wm/WindowState;->updateLastInsetValues()V
+HSPLcom/android/server/wm/WindowState;->updateLocationInParentDisplayIfNeeded()V
+HSPLcom/android/server/wm/WindowState;->updateRegionForModalActivityWindow(Landroid/graphics/Region;)V
 HSPLcom/android/server/wm/WindowState;->updateReportedVisibility(Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;)V
+HPLcom/android/server/wm/WindowState;->updateRequestedInsetsState(Landroid/view/InsetsState;)V
 HSPLcom/android/server/wm/WindowState;->updateResizingWindowIfNeeded()V
 HSPLcom/android/server/wm/WindowState;->updateSurfacePosition()V
 HSPLcom/android/server/wm/WindowState;->updateSurfacePosition(Landroid/view/SurfaceControl$Transaction;)V
-HSPLcom/android/server/wm/WindowState;->waitingForReplacement()Z
+HPLcom/android/server/wm/WindowState;->updateTapExcludeRegion(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowState;->waitingForReplacement()Z
 HSPLcom/android/server/wm/WindowState;->wouldBeVisibleIfPolicyIgnored()Z
-PLcom/android/server/wm/WindowState;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
-PLcom/android/server/wm/WindowState;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
+HPLcom/android/server/wm/WindowState;->writeIdentifierToProto(Landroid/util/proto/ProtoOutputStream;J)V
 HSPLcom/android/server/wm/WindowStateAnimator;-><init>(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
+HPLcom/android/server/wm/WindowStateAnimator;->applyAnimationLocked(IZ)Z
+HSPLcom/android/server/wm/WindowStateAnimator;->applyCrop(Landroid/graphics/Rect;Z)V
 HSPLcom/android/server/wm/WindowStateAnimator;->applyEnterAnimationLocked()V
 HSPLcom/android/server/wm/WindowStateAnimator;->calculateCrop(Landroid/graphics/Rect;)Z
 HSPLcom/android/server/wm/WindowStateAnimator;->calculateSurfaceBounds(Lcom/android/server/wm/WindowState;Landroid/view/WindowManager$LayoutParams;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/WindowStateAnimator;->commitFinishDrawingLocked()Z
 HSPLcom/android/server/wm/WindowStateAnimator;->computeShownFrameLocked()V
 HSPLcom/android/server/wm/WindowStateAnimator;->createSurfaceLocked(II)Lcom/android/server/wm/WindowSurfaceController;
-HSPLcom/android/server/wm/WindowStateAnimator;->destroyDeferredSurfaceLocked()V
-HSPLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V
-HSPLcom/android/server/wm/WindowStateAnimator;->destroySurface()V
-HSPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V
-HSPLcom/android/server/wm/WindowStateAnimator;->detachChildren()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroyDeferredSurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroyPreservedSurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurface()V
+HPLcom/android/server/wm/WindowStateAnimator;->destroySurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->detachChildren()V
 PLcom/android/server/wm/WindowStateAnimator;->drawStateToString()Ljava/lang/String;
-PLcom/android/server/wm/WindowStateAnimator;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-HSPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked()Z
+HPLcom/android/server/wm/WindowStateAnimator;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked(Landroid/view/SurfaceControl$Transaction;)Z
+HPLcom/android/server/wm/WindowStateAnimator;->getDeferTransactionBarrier()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/WindowStateAnimator;->getShown()Z
 HSPLcom/android/server/wm/WindowStateAnimator;->hasSurface()Z
 HSPLcom/android/server/wm/WindowStateAnimator;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowStateAnimator;->hide(Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowStateAnimator;->isForceScaled()Z
 HSPLcom/android/server/wm/WindowStateAnimator;->markPreservedSurfaceForDestroy()V
-HSPLcom/android/server/wm/WindowStateAnimator;->onAnimationFinished()V
+HPLcom/android/server/wm/WindowStateAnimator;->onAnimationFinished()V
 HSPLcom/android/server/wm/WindowStateAnimator;->prepareSurfaceLocked(Z)V
-PLcom/android/server/wm/WindowStateAnimator;->preserveSurfaceLocked()V
+HPLcom/android/server/wm/WindowStateAnimator;->preserveSurfaceLocked()V
 HSPLcom/android/server/wm/WindowStateAnimator;->resetDrawState()V
-HSPLcom/android/server/wm/WindowStateAnimator;->setColorSpaceAgnosticLocked(Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->setColorSpaceAgnosticLocked(Z)V
 HSPLcom/android/server/wm/WindowStateAnimator;->setOffsetPositionForStackResize(Z)V
-HSPLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V
+HPLcom/android/server/wm/WindowStateAnimator;->setOpaqueLocked(Z)V
 HSPLcom/android/server/wm/WindowStateAnimator;->setSecureLocked(Z)V
 HSPLcom/android/server/wm/WindowStateAnimator;->setSurfaceBoundariesLocked(Z)V
 PLcom/android/server/wm/WindowStateAnimator;->setTransparentRegionHintLocked(Landroid/graphics/Region;)V
 HSPLcom/android/server/wm/WindowStateAnimator;->setWallpaperOffset(II)Z
 HSPLcom/android/server/wm/WindowStateAnimator;->showSurfaceRobustlyLocked()Z
-PLcom/android/server/wm/WindowStateAnimator;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowStateAnimator;->toString()Ljava/lang/String;
 PLcom/android/server/wm/WindowStateAnimator;->tryChangeFormatInPlaceLocked()Z
-PLcom/android/server/wm/WindowStateAnimator;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HSPLcom/android/server/wm/WindowSurfaceController;-><init>(Landroid/view/SurfaceSession;Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V
+HSPLcom/android/server/wm/WindowSurfaceController;-><init>(Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V
 HSPLcom/android/server/wm/WindowSurfaceController;->clearCropInTransaction(Z)V
-PLcom/android/server/wm/WindowSurfaceController;->deferTransactionUntil(Landroid/os/IBinder;J)V
-HSPLcom/android/server/wm/WindowSurfaceController;->destroyNotInTransaction()V
-HSPLcom/android/server/wm/WindowSurfaceController;->detachChildren()V
-PLcom/android/server/wm/WindowSurfaceController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->destroyNotInTransaction()V
+HPLcom/android/server/wm/WindowSurfaceController;->detachChildren()V
+HPLcom/android/server/wm/WindowSurfaceController;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->dumpDebug(Landroid/util/proto/ProtoOutputStream;J)V
 PLcom/android/server/wm/WindowSurfaceController;->forceScaleableInTransaction(Z)V
-HSPLcom/android/server/wm/WindowSurfaceController;->getHandle()Landroid/os/IBinder;
+HSPLcom/android/server/wm/WindowSurfaceController;->getBLASTSurfaceControl(Landroid/view/SurfaceControl;)V
+PLcom/android/server/wm/WindowSurfaceController;->getDeferTransactionBarrier()Landroid/view/SurfaceControl;
 HSPLcom/android/server/wm/WindowSurfaceController;->getHeight()I
 HSPLcom/android/server/wm/WindowSurfaceController;->getShown()Z
 HSPLcom/android/server/wm/WindowSurfaceController;->getSurfaceControl(Landroid/view/SurfaceControl;)V
 HSPLcom/android/server/wm/WindowSurfaceController;->getWidth()I
 HSPLcom/android/server/wm/WindowSurfaceController;->hasSurface()Z
-HSPLcom/android/server/wm/WindowSurfaceController;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
-HSPLcom/android/server/wm/WindowSurfaceController;->hideSurface(Landroid/view/SurfaceControl$Transaction;)V
+HPLcom/android/server/wm/WindowSurfaceController;->hide(Landroid/view/SurfaceControl$Transaction;Ljava/lang/String;)V
+HPLcom/android/server/wm/WindowSurfaceController;->hideSurface(Landroid/view/SurfaceControl$Transaction;)V
 HSPLcom/android/server/wm/WindowSurfaceController;->prepareToShowInTransaction(FFFFFZ)Z
-HSPLcom/android/server/wm/WindowSurfaceController;->setBufferSizeInTransaction(IIZ)Z
+HPLcom/android/server/wm/WindowSurfaceController;->setBufferSizeInTransaction(IIZ)Z
 HSPLcom/android/server/wm/WindowSurfaceController;->setColorSpaceAgnostic(Z)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setCropInTransaction(Landroid/graphics/Rect;Z)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setMatrix(Landroid/view/SurfaceControl$Transaction;FFFFZ)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setMatrixInTransaction(FFFFZ)V
-HSPLcom/android/server/wm/WindowSurfaceController;->setOpaque(Z)V
+HPLcom/android/server/wm/WindowSurfaceController;->setOpaque(Z)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setPosition(Landroid/view/SurfaceControl$Transaction;FFZ)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setPositionInTransaction(FFZ)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setSecure(Z)V
 HSPLcom/android/server/wm/WindowSurfaceController;->setShown(Z)V
-PLcom/android/server/wm/WindowSurfaceController;->setTransparentRegionHint(Landroid/graphics/Region;)V
+HPLcom/android/server/wm/WindowSurfaceController;->setTransparentRegionHint(Landroid/graphics/Region;)V
 HSPLcom/android/server/wm/WindowSurfaceController;->showRobustlyInTransaction()Z
 HSPLcom/android/server/wm/WindowSurfaceController;->showSurface()Z
+HPLcom/android/server/wm/WindowSurfaceController;->toString()Ljava/lang/String;
 HSPLcom/android/server/wm/WindowSurfaceController;->updateVisibility()Z
-PLcom/android/server/wm/WindowSurfaceController;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
+HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;)V
+HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;-><init>(Lcom/android/server/wm/WindowSurfacePlacer;Lcom/android/server/wm/WindowSurfacePlacer$1;)V
+HSPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V
 HSPLcom/android/server/wm/WindowSurfacePlacer;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HSPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout()V
+HSPLcom/android/server/wm/WindowSurfacePlacer;->access$000(Lcom/android/server/wm/WindowSurfacePlacer;)Lcom/android/server/wm/WindowManagerService;
+HSPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
 HSPLcom/android/server/wm/WindowSurfacePlacer;->deferLayout()V
 PLcom/android/server/wm/WindowSurfacePlacer;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HSPLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z
-HSPLcom/android/server/wm/WindowSurfacePlacer;->lambda$new$0$WindowSurfacePlacer()V
-PLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
+PLcom/android/server/wm/WindowSurfacePlacer;->isInLayout()Z
+HSPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
+HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement()V
 HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacement(Z)V
 HSPLcom/android/server/wm/WindowSurfacePlacer;->performSurfacePlacementLoop()V
 HSPLcom/android/server/wm/WindowSurfacePlacer;->requestTraversal()V
+HSPLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V
 HSPLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;ZZ)V
 HSPLcom/android/server/wm/WindowToken;->addWindow(Lcom/android/server/wm/WindowState;)V
-HSPLcom/android/server/wm/WindowToken;->asAppWindowToken()Lcom/android/server/wm/AppWindowToken;
-HSPLcom/android/server/wm/WindowToken;->canLayerAboveSystemBars()Z
-PLcom/android/server/wm/WindowToken;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
-HSPLcom/android/server/wm/WindowToken;->getDisplayContent()Lcom/android/server/wm/DisplayContent;
+HSPLcom/android/server/wm/WindowToken;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
+HSPLcom/android/server/wm/WindowToken;->assignLayer(Landroid/view/SurfaceControl$Transaction;I)V
+HPLcom/android/server/wm/WindowToken;->canLayerAboveSystemBars()Z
+HPLcom/android/server/wm/WindowToken;->dump(Ljava/io/PrintWriter;Ljava/lang/String;Z)V
+HSPLcom/android/server/wm/WindowToken;->dumpDebug(Landroid/util/proto/ProtoOutputStream;JI)V
 HSPLcom/android/server/wm/WindowToken;->getName()Ljava/lang/String;
 HSPLcom/android/server/wm/WindowToken;->getReplacingWindow()Lcom/android/server/wm/WindowState;
-HSPLcom/android/server/wm/WindowToken;->isEmpty()Z
-HSPLcom/android/server/wm/WindowToken;->isHidden()Z
-HSPLcom/android/server/wm/WindowToken;->lambda$new$0$WindowToken(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-HSPLcom/android/server/wm/WindowToken;->okToAnimate()Z
-HSPLcom/android/server/wm/WindowToken;->okToDisplay()Z
+HPLcom/android/server/wm/WindowToken;->getWindowLayerFromType()I
+HPLcom/android/server/wm/WindowToken;->isEmpty()Z
+PLcom/android/server/wm/WindowToken;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
+HPLcom/android/server/wm/WindowToken;->lambda$new$0$WindowToken(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
+HSPLcom/android/server/wm/WindowToken;->makeSurface()Landroid/view/SurfaceControl$Builder;
 HSPLcom/android/server/wm/WindowToken;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HSPLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V
-HSPLcom/android/server/wm/WindowToken;->removeImmediately()V
-HSPLcom/android/server/wm/WindowToken;->setExiting()V
-HSPLcom/android/server/wm/WindowToken;->setHidden(Z)V
-HSPLcom/android/server/wm/WindowToken;->toString()Ljava/lang/String;
-HSPLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
-PLcom/android/server/wm/WindowToken;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-PLcom/android/server/wm/WindowTraceBuffer;->getStatus()Ljava/lang/String;
-HSPLcom/android/server/wm/WindowTraceBuffer;->resetBuffer()V
-HSPLcom/android/server/wm/WindowTraceBuffer;->setCapacity(I)V
+HPLcom/android/server/wm/WindowToken;->removeAllWindowsIfPossible()V
+HPLcom/android/server/wm/WindowToken;->removeImmediately()V
+HPLcom/android/server/wm/WindowToken;->setExiting()V
+HPLcom/android/server/wm/WindowToken;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/WindowToken;->windowsCanBeWallpaperTarget()Z
+HSPLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;I)V
 HSPLcom/android/server/wm/WindowTracing;-><init>(Ljava/io/File;Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;Lcom/android/server/wm/WindowManagerGlobalLock;I)V
 HSPLcom/android/server/wm/WindowTracing;->createDefaultAndStartLooper(Lcom/android/server/wm/WindowManagerService;Landroid/view/Choreographer;)Lcom/android/server/wm/WindowTracing;
 PLcom/android/server/wm/WindowTracing;->getStatus()Ljava/lang/String;
 HSPLcom/android/server/wm/WindowTracing;->isEnabled()Z
+HSPLcom/android/server/wm/WindowTracing;->logAndPrintln(Ljava/io/PrintWriter;Ljava/lang/String;)V
 HSPLcom/android/server/wm/WindowTracing;->logState(Ljava/lang/String;)V
+HSPLcom/android/server/wm/WindowTracing;->setBufferCapacity(ILjava/io/PrintWriter;)V
 HSPLcom/android/server/wm/WindowTracing;->setLogLevel(ILjava/io/PrintWriter;)V
 PLcom/android/server/wm/animation/ClipRectLRAnimation;-><init>(IIII)V
 PLcom/android/server/wm/animation/ClipRectLRAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
 PLcom/android/server/wm/animation/ClipRectTBAnimation;-><init>(IIIIIILandroid/view/animation/Interpolator;)V
-PLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
-PLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z
-HSPLcom/android/server/wm/utils/CoordinateTransforms;->transformLogicalToPhysicalCoordinates(IIILandroid/graphics/Matrix;)V
+HPLcom/android/server/wm/animation/ClipRectTBAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
+HPLcom/android/server/wm/animation/ClipRectTBAnimation;->getTransformation(JLandroid/view/animation/Transformation;)Z
+PLcom/android/server/wm/animation/CurvedTranslateAnimation;-><init>(Landroid/graphics/Path;)V
+PLcom/android/server/wm/animation/CurvedTranslateAnimation;->applyTransformation(FLandroid/view/animation/Transformation;)V
+PLcom/android/server/wm/utils/CoordinateTransforms;->transformLogicalToPhysicalCoordinates(IIILandroid/graphics/Matrix;)V
 HSPLcom/android/server/wm/utils/CoordinateTransforms;->transformPhysicalToLogicalCoordinates(IIILandroid/graphics/Matrix;)V
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;-><init>()V
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;->addOnPropertiesChangedListener(Ljava/lang/String;Ljava/util/concurrent/Executor;Landroid/provider/DeviceConfig$OnPropertiesChangedListener;)V
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;->getBoolean(Ljava/lang/String;Ljava/lang/String;Z)Z
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;->getInt(Ljava/lang/String;Ljava/lang/String;I)I
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;->getLong(Ljava/lang/String;Ljava/lang/String;J)J
+HSPLcom/android/server/wm/utils/DeviceConfigInterface$1;->getProperty(Ljava/lang/String;Ljava/lang/String;)Ljava/lang/String;
+HSPLcom/android/server/wm/utils/DeviceConfigInterface;-><clinit>()V
+HSPLcom/android/server/wm/utils/DisplayRotationUtil;-><init>()V
+HSPLcom/android/server/wm/utils/DisplayRotationUtil;->getBoundIndexFromRotation(II)I
 HSPLcom/android/server/wm/utils/DisplayRotationUtil;->getRotatedBounds([Landroid/graphics/Rect;III)[Landroid/graphics/Rect;
+HSPLcom/android/server/wm/utils/DisplayRotationUtil;->getRotationToBoundsOffset(I)I
+PLcom/android/server/wm/utils/InsetUtils;->addInsets(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/utils/InsetUtils;->insetsBetweenFrames(Landroid/graphics/Rect;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
 HSPLcom/android/server/wm/utils/InsetUtils;->rotateInsets(Landroid/graphics/Rect;I)V
+HPLcom/android/server/wm/utils/RegionUtils;->forEachRect(Landroid/graphics/Region;Ljava/util/function/Consumer;)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/RotationAnimationUtils;->createRotationMatrix(IIILandroid/graphics/Matrix;)V
+HPLcom/android/server/wm/utils/RotationAnimationUtils;->getAvgBorderLuma(Landroid/graphics/GraphicBuffer;Landroid/graphics/ColorSpace;)F
+PLcom/android/server/wm/utils/RotationAnimationUtils;->getLumaOfSurfaceControl(Landroid/view/Display;Landroid/view/SurfaceControl;)F
+HSPLcom/android/server/wm/utils/RotationCache;-><init>(Lcom/android/server/wm/utils/RotationCache$RotationDependentComputation;)V
 HSPLcom/android/server/wm/utils/RotationCache;->getOrCompute(Ljava/lang/Object;I)Ljava/lang/Object;
+HSPLcom/android/server/wm/utils/WmDisplayCutout;-><clinit>()V
 HSPLcom/android/server/wm/utils/WmDisplayCutout;-><init>(Landroid/view/DisplayCutout;Landroid/util/Size;)V
 HSPLcom/android/server/wm/utils/WmDisplayCutout;->calculateRelativeTo(Landroid/graphics/Rect;)Lcom/android/server/wm/utils/WmDisplayCutout;
 HSPLcom/android/server/wm/utils/WmDisplayCutout;->computeSafeInsets(Landroid/util/Size;Landroid/view/DisplayCutout;)Landroid/graphics/Rect;
@@ -17997,16 +39416,162 @@
 HSPLcom/android/server/wm/utils/WmDisplayCutout;->equals(Ljava/lang/Object;)Z
 HSPLcom/android/server/wm/utils/WmDisplayCutout;->findInsetForSide(Landroid/util/Size;Ljava/util/List;I)I
 HSPLcom/android/server/wm/utils/WmDisplayCutout;->getDisplayCutout()Landroid/view/DisplayCutout;
-HSPLcom/android/server/wm/utils/WmDisplayCutout;->inset(IIII)Lcom/android/server/wm/utils/WmDisplayCutout;
-PLcom/android/server/wm/utils/WmDisplayCutout;->toString()Ljava/lang/String;
+HPLcom/android/server/wm/utils/WmDisplayCutout;->inset(IIII)Lcom/android/server/wm/utils/WmDisplayCutout;
+HSPLcom/android/server/wm/utils/WmDisplayCutout;->toString()Ljava/lang/String;
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$6ikxM-3KospNGDidAY7yA-rECHw;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;Landroid/content/Intent;J)V
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$6ikxM-3KospNGDidAY7yA-rECHw;->run(Lcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$B9wq4q5y7qahY6TuLMO_s8nPIwY;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;[BI)V
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$B9wq4q5y7qahY6TuLMO_s8nPIwY;->run(Lcom/google/android/startop/iorap/IIorap;)V
+HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$J1AHa-Qs75WQr3stjbN97THbudE;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;[BJ)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$J1AHa-Qs75WQr3stjbN97THbudE;->run(Lcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$bprgjb2FWBxwWDJr-Q4ViVP0aJc;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;[BJ)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$bprgjb2FWBxwWDJr-Q4ViVP0aJc;->run(Lcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$elqG7IabJdUOCjFWiPV8vgrXnVI;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;[B)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$elqG7IabJdUOCjFWiPV8vgrXnVI;->run(Lcom/google/android/startop/iorap/IIorap;)V
+HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$qed0q0aplGsIh0O7dSm6JWk8wZI;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;)V
+HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$qed0q0aplGsIh0O7dSm6JWk8wZI;->run(Lcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$IorapdJobService$LUEcmjVFTNORsDoHk5dk5OHflTU;-><init>(Lcom/google/android/startop/iorap/RequestId;Landroid/app/job/JobParameters;)V
+PLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$IorapdJobService$LUEcmjVFTNORsDoHk5dk5OHflTU;->run(Lcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$miQO-RJhHA7C1W4BujwCS9blXFc;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;)V
+HSPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$miQO-RJhHA7C1W4BujwCS9blXFc;->run(Lcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$1;-><init>()V
+PLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchCancelled;-><init>(J[B)V
+PLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchCancelled;->writeToParcelImpl(Landroid/os/Parcel;I)V
+HPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchFinished;-><init>(J[BJ)V
+HPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchFinished;->writeToParcelImpl(Landroid/os/Parcel;I)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunched;-><init>(J[BI)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunched;->writeToParcelImpl(Landroid/os/Parcel;I)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityRecordProtoParcelable;->write(Landroid/os/Parcel;[BI)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$BaseWithActivityRecordData;-><init>(J[B)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$BaseWithActivityRecordData;->writeToParcelImpl(Landroid/os/Parcel;I)V
+PLcom/google/android/startop/iorap/AppLaunchEvent$IntentFailed;-><init>(J)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$IntentProtoParcelable;->write(Landroid/os/Parcel;Landroid/content/Intent;I)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$IntentStarted;-><init>(JLandroid/content/Intent;J)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent$IntentStarted;->writeToParcelImpl(Landroid/os/Parcel;I)V
+PLcom/google/android/startop/iorap/AppLaunchEvent$ReportFullyDrawn;-><init>(J[BJ)V
+PLcom/google/android/startop/iorap/AppLaunchEvent$ReportFullyDrawn;->writeToParcelImpl(Landroid/os/Parcel;I)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent;-><clinit>()V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent;-><init>(J)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent;->getTypeIndex()I
+HSPLcom/google/android/startop/iorap/AppLaunchEvent;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLcom/google/android/startop/iorap/AppLaunchEvent;->writeToParcelImpl(Landroid/os/Parcel;I)V
+PLcom/google/android/startop/iorap/CheckHelpers;->checkStateInRange(II)V
+PLcom/google/android/startop/iorap/CheckHelpers;->checkTypeInRange(II)V
+HSPLcom/google/android/startop/iorap/EventSequenceValidator$State;-><clinit>()V
+HSPLcom/google/android/startop/iorap/EventSequenceValidator$State;-><init>(Ljava/lang/String;I)V
+HSPLcom/google/android/startop/iorap/EventSequenceValidator;-><init>()V
+HPLcom/google/android/startop/iorap/EventSequenceValidator;->decAccIntentStartedEvents()V
+HPLcom/google/android/startop/iorap/EventSequenceValidator;->incAccIntentStartedEvents()V
+PLcom/google/android/startop/iorap/EventSequenceValidator;->onActivityLaunchCancelled([B)V
+HPLcom/google/android/startop/iorap/EventSequenceValidator;->onActivityLaunchFinished([BJ)V
+HSPLcom/google/android/startop/iorap/EventSequenceValidator;->onActivityLaunched([BI)V
+HPLcom/google/android/startop/iorap/EventSequenceValidator;->onIntentFailed()V
+HSPLcom/google/android/startop/iorap/EventSequenceValidator;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/google/android/startop/iorap/EventSequenceValidator;->onReportFullyDrawn([BJ)V
+HSPLcom/google/android/startop/iorap/IIorap$Stub$Proxy;-><init>(Landroid/os/IBinder;)V
+HSPLcom/google/android/startop/iorap/IIorap$Stub$Proxy;->asBinder()Landroid/os/IBinder;
+HSPLcom/google/android/startop/iorap/IIorap$Stub$Proxy;->onAppLaunchEvent(Lcom/google/android/startop/iorap/RequestId;Lcom/google/android/startop/iorap/AppLaunchEvent;)V
+PLcom/google/android/startop/iorap/IIorap$Stub$Proxy;->onJobScheduledEvent(Lcom/google/android/startop/iorap/RequestId;Lcom/google/android/startop/iorap/JobScheduledEvent;)V
+HSPLcom/google/android/startop/iorap/IIorap$Stub$Proxy;->setTaskListener(Lcom/google/android/startop/iorap/ITaskListener;)V
+HSPLcom/google/android/startop/iorap/IIorap$Stub;->asInterface(Landroid/os/IBinder;)Lcom/google/android/startop/iorap/IIorap;
+HSPLcom/google/android/startop/iorap/ITaskListener$Stub;-><init>()V
+HSPLcom/google/android/startop/iorap/ITaskListener$Stub;->asBinder()Landroid/os/IBinder;
+PLcom/google/android/startop/iorap/ITaskListener$Stub;->onTransact(ILandroid/os/Parcel;Landroid/os/Parcel;I)Z
+HSPLcom/google/android/startop/iorap/IorapForwardingService$1;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$1;->binderDied()V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;Lcom/google/android/startop/iorap/IorapForwardingService$1;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onActivityLaunchCancelled$3$IorapForwardingService$AppLaunchObserver([BLcom/google/android/startop/iorap/IIorap;)V
+HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onActivityLaunchFinished$4$IorapForwardingService$AppLaunchObserver([BJLcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onActivityLaunched$2$IorapForwardingService$AppLaunchObserver([BILcom/google/android/startop/iorap/IIorap;)V
+HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onIntentFailed$1$IorapForwardingService$AppLaunchObserver(Lcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onIntentStarted$0$IorapForwardingService$AppLaunchObserver(Landroid/content/Intent;JLcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onReportFullyDrawn$5$IorapForwardingService$AppLaunchObserver([BJLcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onActivityLaunchCancelled([B)V
+HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onActivityLaunchFinished([BJ)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onActivityLaunched([BI)V
+HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onIntentFailed()V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onIntentStarted(Landroid/content/Intent;J)V
+PLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onReportFullyDrawn([BJ)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$BinderConnectionHandler;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;Landroid/os/Looper;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$BinderConnectionHandler;->handleMessage(Landroid/os/Message;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;Landroid/content/Context;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;->bindProxy(Lcom/google/android/startop/iorap/IorapForwardingService$IorapdJobServiceProxy;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;->lambda$onStartJob$0(Lcom/google/android/startop/iorap/RequestId;Landroid/app/job/JobParameters;Lcom/google/android/startop/iorap/IIorap;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;->onIorapdDisconnected()V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;->onIorapdTaskCompleted(Lcom/google/android/startop/iorap/RequestId;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;->onStartJob(Landroid/app/job/JobParameters;)Z
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobServiceProxy;-><init>()V
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobServiceProxy;->getActualIorapdJobService()Lcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;
+PLcom/google/android/startop/iorap/IorapForwardingService$IorapdJobServiceProxy;->onStartJob(Landroid/app/job/JobParameters;)Z
+HSPLcom/google/android/startop/iorap/IorapForwardingService$RemoteTaskListener;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService$RemoteTaskListener;-><init>(Lcom/google/android/startop/iorap/IorapForwardingService;Lcom/google/android/startop/iorap/IorapForwardingService$1;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$RemoteTaskListener;->onComplete(Lcom/google/android/startop/iorap/RequestId;Lcom/google/android/startop/iorap/TaskResult;)V
+PLcom/google/android/startop/iorap/IorapForwardingService$RemoteTaskListener;->onProgress(Lcom/google/android/startop/iorap/RequestId;Lcom/google/android/startop/iorap/TaskResult;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService;-><clinit>()V
 HSPLcom/google/android/startop/iorap/IorapForwardingService;-><init>(Landroid/content/Context;)V
+PLcom/google/android/startop/iorap/IorapForwardingService;->access$000(Lcom/google/android/startop/iorap/IorapForwardingService;I)Z
+PLcom/google/android/startop/iorap/IorapForwardingService;->access$100(Lcom/google/android/startop/iorap/IorapForwardingService;)Lcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->access$300(Lcom/google/android/startop/iorap/IorapForwardingService;)Lcom/google/android/startop/iorap/IIorap;
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->access$400(Lcom/google/android/startop/iorap/IIorap;Lcom/google/android/startop/iorap/IorapForwardingService$RemoteRunnable;)Z
+PLcom/google/android/startop/iorap/IorapForwardingService;->access$500()Lcom/google/android/startop/iorap/IorapForwardingService;
 HSPLcom/google/android/startop/iorap/IorapForwardingService;->connectToRemoteAndConfigure()Z
 HSPLcom/google/android/startop/iorap/IorapForwardingService;->connectToRemoteAndConfigureLocked()Z
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->encodeEnglishAlphabetStringIntoInt(Ljava/lang/String;)I
+PLcom/google/android/startop/iorap/IorapForwardingService;->handleRemoteError(Ljava/lang/Throwable;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->invokeRemote(Lcom/google/android/startop/iorap/IIorap;Lcom/google/android/startop/iorap/IorapForwardingService$RemoteRunnable;)Z
 HSPLcom/google/android/startop/iorap/IorapForwardingService;->isIorapEnabled()Z
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->lambda$connectToRemoteAndConfigureLocked$0$IorapForwardingService(Lcom/google/android/startop/iorap/IIorap;)V
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->onBootPhase(I)V
 HSPLcom/google/android/startop/iorap/IorapForwardingService;->onStart()V
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->provideDeathRecipient()Landroid/os/IBinder$DeathRecipient;
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->provideIorapRemote()Lcom/google/android/startop/iorap/IIorap;
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->provideLaunchObserverRegistry()Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
+HSPLcom/google/android/startop/iorap/IorapForwardingService;->registerInProcessListenersLocked()V
 HSPLcom/google/android/startop/iorap/IorapForwardingService;->retryConnectToRemoteAndConfigure(I)Z
+PLcom/google/android/startop/iorap/JobScheduledEvent$1;-><init>()V
+PLcom/google/android/startop/iorap/JobScheduledEvent;-><clinit>()V
+PLcom/google/android/startop/iorap/JobScheduledEvent;-><init>(III)V
+PLcom/google/android/startop/iorap/JobScheduledEvent;->checkConstructorArguments()V
+PLcom/google/android/startop/iorap/JobScheduledEvent;->createIdleMaintenance(ILandroid/app/job/JobParameters;)Lcom/google/android/startop/iorap/JobScheduledEvent;
+PLcom/google/android/startop/iorap/JobScheduledEvent;->writeToParcel(Landroid/os/Parcel;I)V
+HSPLcom/google/android/startop/iorap/RequestId$1;-><init>()V
+PLcom/google/android/startop/iorap/RequestId$1;->createFromParcel(Landroid/os/Parcel;)Lcom/google/android/startop/iorap/RequestId;
+PLcom/google/android/startop/iorap/RequestId$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+HSPLcom/google/android/startop/iorap/RequestId;-><clinit>()V
+HSPLcom/google/android/startop/iorap/RequestId;-><init>(J)V
+PLcom/google/android/startop/iorap/RequestId;-><init>(Landroid/os/Parcel;)V
+PLcom/google/android/startop/iorap/RequestId;-><init>(Landroid/os/Parcel;Lcom/google/android/startop/iorap/RequestId$1;)V
+HSPLcom/google/android/startop/iorap/RequestId;->checkConstructorArguments()V
+PLcom/google/android/startop/iorap/RequestId;->equals(Lcom/google/android/startop/iorap/RequestId;)Z
+PLcom/google/android/startop/iorap/RequestId;->equals(Ljava/lang/Object;)Z
+PLcom/google/android/startop/iorap/RequestId;->hashCode()I
+HSPLcom/google/android/startop/iorap/RequestId;->nextValueForSequence()Lcom/google/android/startop/iorap/RequestId;
+HSPLcom/google/android/startop/iorap/RequestId;->writeToParcel(Landroid/os/Parcel;I)V
+PLcom/google/android/startop/iorap/TaskResult$1;-><init>()V
+PLcom/google/android/startop/iorap/TaskResult$1;->createFromParcel(Landroid/os/Parcel;)Lcom/google/android/startop/iorap/TaskResult;
+PLcom/google/android/startop/iorap/TaskResult$1;->createFromParcel(Landroid/os/Parcel;)Ljava/lang/Object;
+PLcom/google/android/startop/iorap/TaskResult;-><clinit>()V
+PLcom/google/android/startop/iorap/TaskResult;-><init>(Landroid/os/Parcel;)V
+PLcom/google/android/startop/iorap/TaskResult;-><init>(Landroid/os/Parcel;Lcom/google/android/startop/iorap/TaskResult$1;)V
+PLcom/google/android/startop/iorap/TaskResult;->checkConstructorArguments()V
+Landroid/app/usage/UsageStatsManagerInternal$AppUsageLimitData;
+Landroid/app/usage/UsageStatsManagerInternal;
+Landroid/content/pm/PackageManagerInternal$ExternalSourcesPolicy;
+Landroid/content/pm/PackageManagerInternal$PackageListObserver;
+Landroid/content/pm/PackageManagerInternal;
+Landroid/hardware/audio/common/V2_0/AudioConfig;
+Landroid/hardware/audio/common/V2_0/AudioOffloadInfo;
+Landroid/hardware/audio/common/V2_0/Uuid;
 Landroid/hardware/authsecret/V1_0/IAuthSecret$Proxy;
 Landroid/hardware/authsecret/V1_0/IAuthSecret;
+Landroid/hardware/biometrics/face/V1_0/IBiometricsFace$Proxy;
+Landroid/hardware/biometrics/face/V1_0/IBiometricsFace;
+Landroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback$Stub;
+Landroid/hardware/biometrics/face/V1_0/IBiometricsFaceClientCallback;
+Landroid/hardware/biometrics/face/V1_0/OptionalBool;
+Landroid/hardware/biometrics/face/V1_0/OptionalUint64;
+Landroid/hardware/biometrics/face/V1_0/Status;
 Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint$Proxy;
 Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprint;
 Landroid/hardware/biometrics/fingerprint/V2_1/IBiometricsFingerprintClientCallback$Stub;
@@ -18014,157 +39579,406 @@
 Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs$Proxy;
 Landroid/hardware/configstore/V1_0/ISurfaceFlingerConfigs;
 Landroid/hardware/configstore/V1_0/OptionalBool;
+Landroid/hardware/configstore/V1_0/OptionalInt64;
+Landroid/hardware/configstore/V1_0/OptionalUInt64;
+Landroid/hardware/health/V1_0/BatteryHealth;
+Landroid/hardware/health/V1_0/BatteryStatus;
 Landroid/hardware/health/V1_0/HealthInfo;
 Landroid/hardware/health/V2_0/DiskStats;
 Landroid/hardware/health/V2_0/HealthInfo;
 Landroid/hardware/health/V2_0/IHealth$Proxy;
+Landroid/hardware/health/V2_0/IHealth$getCapacityCallback;
+Landroid/hardware/health/V2_0/IHealth$getChargeCounterCallback;
+Landroid/hardware/health/V2_0/IHealth$getChargeStatusCallback;
+Landroid/hardware/health/V2_0/IHealth$getCurrentAverageCallback;
+Landroid/hardware/health/V2_0/IHealth$getCurrentNowCallback;
+Landroid/hardware/health/V2_0/IHealth$getDiskStatsCallback;
+Landroid/hardware/health/V2_0/IHealth$getEnergyCounterCallback;
+Landroid/hardware/health/V2_0/IHealth$getHealthInfoCallback;
+Landroid/hardware/health/V2_0/IHealth$getStorageInfoCallback;
 Landroid/hardware/health/V2_0/IHealth;
 Landroid/hardware/health/V2_0/IHealthInfoCallback$Stub;
 Landroid/hardware/health/V2_0/IHealthInfoCallback;
+Landroid/hardware/health/V2_0/Result;
 Landroid/hardware/health/V2_0/StorageAttribute;
 Landroid/hardware/health/V2_0/StorageInfo;
+Landroid/hardware/light/HwLight$1;
+Landroid/hardware/light/HwLight;
+Landroid/hardware/light/HwLightState;
+Landroid/hardware/light/ILights$Stub$Proxy;
+Landroid/hardware/light/ILights$Stub;
+Landroid/hardware/light/ILights;
 Landroid/hardware/oemlock/V1_0/IOemLock$Proxy;
+Landroid/hardware/oemlock/V1_0/IOemLock$getNameCallback;
+Landroid/hardware/oemlock/V1_0/IOemLock$isOemUnlockAllowedByCarrierCallback;
+Landroid/hardware/oemlock/V1_0/IOemLock$isOemUnlockAllowedByDeviceCallback;
 Landroid/hardware/oemlock/V1_0/IOemLock;
+Landroid/hardware/rebootescrow/IRebootEscrow$Stub$Proxy;
+Landroid/hardware/rebootescrow/IRebootEscrow$Stub;
+Landroid/hardware/rebootescrow/IRebootEscrow;
+Landroid/hardware/soundtrigger/V2_0/ConfidenceLevel;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Phrase;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$PhraseSoundModel;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Properties;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$Proxy;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$RecognitionConfig;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$SoundModel;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$getPropertiesCallback;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$loadPhraseSoundModelCallback;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw$loadSoundModelCallback;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHw;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$PhraseRecognitionEvent;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback$RecognitionEvent;
+Landroid/hardware/soundtrigger/V2_0/ISoundTriggerHwCallback;
+Landroid/hardware/soundtrigger/V2_0/PhraseRecognitionExtra;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$PhraseSoundModel;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$RecognitionConfig;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$SoundModel;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$loadPhraseSoundModel_2_1Callback;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw$loadSoundModel_2_1Callback;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHw;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$PhraseRecognitionEvent;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$RecognitionEvent;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback$Stub;
+Landroid/hardware/soundtrigger/V2_1/ISoundTriggerHwCallback;
+Landroid/hardware/soundtrigger/V2_2/ISoundTriggerHw$Proxy;
+Landroid/hardware/soundtrigger/V2_2/ISoundTriggerHw;
+Landroid/hardware/soundtrigger/V2_3/AudioCapabilities;
+Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$Proxy;
+Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$getParameterCallback;
+Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$getProperties_2_3Callback;
+Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw$queryParameterCallback;
+Landroid/hardware/soundtrigger/V2_3/ISoundTriggerHw;
+Landroid/hardware/soundtrigger/V2_3/ModelParameterRange;
+Landroid/hardware/soundtrigger/V2_3/OptionalModelParameterRange;
+Landroid/hardware/soundtrigger/V2_3/Properties;
+Landroid/hardware/soundtrigger/V2_3/RecognitionConfig;
 Landroid/hardware/usb/V1_0/IUsb$Proxy;
 Landroid/hardware/usb/V1_0/IUsb;
 Landroid/hardware/usb/V1_0/IUsbCallback;
+Landroid/hardware/usb/V1_0/PortDataRole;
+Landroid/hardware/usb/V1_0/PortMode;
+Landroid/hardware/usb/V1_0/PortPowerRole;
+Landroid/hardware/usb/V1_0/PortRole;
 Landroid/hardware/usb/V1_0/PortStatus;
+Landroid/hardware/usb/V1_1/IUsb;
 Landroid/hardware/usb/V1_1/IUsbCallback;
+Landroid/hardware/usb/V1_1/PortMode_1_1;
 Landroid/hardware/usb/V1_1/PortStatus_1_1;
+Landroid/hardware/usb/V1_2/ContaminantDetectionStatus;
+Landroid/hardware/usb/V1_2/ContaminantProtectionMode;
+Landroid/hardware/usb/V1_2/ContaminantProtectionStatus;
+Landroid/hardware/usb/V1_2/IUsb;
 Landroid/hardware/usb/V1_2/IUsbCallback$Stub;
 Landroid/hardware/usb/V1_2/IUsbCallback;
+Landroid/hardware/usb/V1_2/PortStatus;
+Landroid/hardware/usb/gadget/V1_1/IUsbGadget;
 Landroid/hardware/weaver/V1_0/IWeaver$Proxy;
 Landroid/hardware/weaver/V1_0/IWeaver$getConfigCallback;
+Landroid/hardware/weaver/V1_0/IWeaver$readCallback;
 Landroid/hardware/weaver/V1_0/IWeaver;
 Landroid/hardware/weaver/V1_0/WeaverConfig;
+Landroid/hardware/weaver/V1_0/WeaverReadResponse;
+Landroid/hidl/base/V1_0/DebugInfo$Architecture;
+Landroid/hidl/base/V1_0/DebugInfo;
 Landroid/hidl/base/V1_0/IBase;
+Landroid/hidl/manager/V1_0/IServiceManager$InstanceDebugInfo;
 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/hidl/manager/V1_1/IServiceManager;
+Landroid/hidl/manager/V1_2/IClientCallback;
 Landroid/hidl/manager/V1_2/IServiceManager$Proxy;
 Landroid/hidl/manager/V1_2/IServiceManager;
+Landroid/net/-$$Lambda$NetworkFactory$quULWy1SjqmEQiqq5nzlBuGzTss;
+Landroid/net/-$$Lambda$NetworkStackClient$8Y7GJyozK7_xixdmgfHS4QSif-A;
 Landroid/net/-$$Lambda$NetworkStackClient$EsrnifYD8E-HxTwVQsf45HJKvtM;
 Landroid/net/-$$Lambda$NetworkStackClient$qInwLPrclXOFvKSYRjcCaCSeEhw;
+Landroid/net/-$$Lambda$NetworkStackClient$tuv4lz5fwSxR2XuU69pB4cKkltA;
+Landroid/net/ConnectivityModuleConnector$1;
+Landroid/net/ConnectivityModuleConnector$ConnectivityModuleHealthListener;
+Landroid/net/ConnectivityModuleConnector$Dependencies;
+Landroid/net/ConnectivityModuleConnector$DependenciesImpl;
+Landroid/net/ConnectivityModuleConnector$ModuleServiceCallback;
+Landroid/net/ConnectivityModuleConnector$ModuleServiceConnection;
+Landroid/net/ConnectivityModuleConnector;
+Landroid/net/DhcpResultsParcelable$1;
+Landroid/net/DhcpResultsParcelable;
+Landroid/net/IDnsResolver$Stub$Proxy;
+Landroid/net/IDnsResolver$Stub;
+Landroid/net/IDnsResolver;
 Landroid/net/IIpMemoryStore$Stub$Proxy;
+Landroid/net/IIpMemoryStore;
 Landroid/net/IIpMemoryStoreCallbacks$Stub;
 Landroid/net/IIpMemoryStoreCallbacks;
 Landroid/net/INetd$Stub$Proxy;
 Landroid/net/INetd$Stub;
 Landroid/net/INetd;
+Landroid/net/INetdUnsolicitedEventListener$Stub$Proxy;
 Landroid/net/INetdUnsolicitedEventListener$Stub;
 Landroid/net/INetdUnsolicitedEventListener;
+Landroid/net/INetworkMonitor$Stub$Proxy;
 Landroid/net/INetworkMonitor;
+Landroid/net/INetworkMonitorCallbacks$Stub;
+Landroid/net/INetworkMonitorCallbacks;
 Landroid/net/INetworkStackConnector$Stub$Proxy;
 Landroid/net/INetworkStackConnector$Stub;
 Landroid/net/INetworkStackConnector;
+Landroid/net/ITetheringConnector;
+Landroid/net/InterfaceConfigurationParcel$1;
+Landroid/net/InterfaceConfigurationParcel;
 Landroid/net/IpMemoryStore$1;
+Landroid/net/IpMemoryStore;
 Landroid/net/IpMemoryStoreClient;
+Landroid/net/Layer2PacketParcelable;
+Landroid/net/MarkMaskParcel;
+Landroid/net/NetworkMonitorManager;
+Landroid/net/NetworkStackClient$1;
+Landroid/net/NetworkStackClient$Dependencies;
+Landroid/net/NetworkStackClient$DependenciesImpl;
 Landroid/net/NetworkStackClient$NetworkStackCallback;
 Landroid/net/NetworkStackClient$NetworkStackConnection;
 Landroid/net/NetworkStackClient;
+Landroid/net/PrivateDnsConfigParcel$1;
+Landroid/net/PrivateDnsConfigParcel;
+Landroid/net/ProvisioningConfigurationParcelable$1;
 Landroid/net/ProvisioningConfigurationParcelable;
-Landroid/net/dhcp/IDhcpServer;
+Landroid/net/ResolverParamsParcel;
+Landroid/net/RouteInfoParcel;
+Landroid/net/TcpKeepalivePacketData;
+Landroid/net/TcpKeepalivePacketDataParcelable;
+Landroid/net/TetherConfigParcel;
+Landroid/net/TetherStatsParcel$1;
+Landroid/net/TetherStatsParcel;
+Landroid/net/TetheringManager$TetheringConnection;
+Landroid/net/TetheringManager;
+Landroid/net/UidRangeParcel;
+Landroid/net/dhcp/DhcpServingParamsParcel;
+Landroid/net/dhcp/IDhcpServerCallbacks;
 Landroid/net/ip/IIpClient$Stub$Proxy;
 Landroid/net/ip/IIpClient$Stub;
 Landroid/net/ip/IIpClient;
+Landroid/net/ip/IIpClientCallbacks$Stub$Proxy;
 Landroid/net/ip/IIpClientCallbacks$Stub;
 Landroid/net/ip/IIpClientCallbacks;
-Landroid/net/ip/InterfaceController;
 Landroid/net/ip/IpClientCallbacks;
+Landroid/net/ip/IpClientManager;
 Landroid/net/ip/IpClientUtil$IpClientCallbacksProxy;
 Landroid/net/ip/IpClientUtil;
-Landroid/net/ip/IpServer$BaseServingState;
-Landroid/net/ip/IpServer$Callback;
-Landroid/net/ip/IpServer$Dependencies;
-Landroid/net/ip/IpServer$InitialState;
-Landroid/net/ip/IpServer$LocalHotspotState;
-Landroid/net/ip/IpServer$TetheredState;
-Landroid/net/ip/IpServer$UnavailableState;
-Landroid/net/ip/IpServer;
-Landroid/net/ip/RouterAdvertisementDaemon$RaParams;
-Landroid/net/ip/RouterAdvertisementDaemon;
 Landroid/net/ipmemorystore/Blob;
 Landroid/net/ipmemorystore/IOnBlobRetrievedListener$Default;
 Landroid/net/ipmemorystore/IOnBlobRetrievedListener;
-Landroid/net/ipmemorystore/IOnStatusListener;
+Landroid/net/ipmemorystore/OnBlobRetrievedListener;
+Landroid/net/ipmemorystore/OnStatusListener;
+Landroid/net/metrics/INetdEventListener$Stub$Proxy;
 Landroid/net/metrics/INetdEventListener$Stub;
 Landroid/net/metrics/INetdEventListener;
+Landroid/net/netlink/InetDiagMessage;
+Landroid/net/netlink/NetlinkMessage;
+Landroid/net/shared/-$$Lambda$OsobWheG5dMvEj_cOJtueqUBqBI;
+Landroid/net/shared/-$$Lambda$SYWvjOUPlAZ_O2Z6yfFU9np1858;
+Landroid/net/shared/IpConfigurationParcelableUtil;
 Landroid/net/shared/LinkPropertiesParcelableUtil;
+Landroid/net/shared/NetdUtils;
+Landroid/net/shared/NetworkMonitorUtils;
+Landroid/net/shared/ParcelableUtil;
 Landroid/net/shared/PrivateDnsConfig;
 Landroid/net/shared/ProvisioningConfiguration$Builder;
 Landroid/net/shared/ProvisioningConfiguration;
-Landroid/net/util/InterfaceParams;
-Landroid/net/util/InterfaceSet;
+Landroid/net/shared/RouteUtils$ModifyOperation;
+Landroid/net/shared/RouteUtils;
+Landroid/net/util/NetdService$NetdCommand;
 Landroid/net/util/NetdService;
-Landroid/net/util/PrefixUtils;
 Landroid/net/util/SharedLog$Category;
 Landroid/net/util/SharedLog;
-Landroid/net/util/VersionedBroadcastListener$Receiver;
-Landroid/net/util/VersionedBroadcastListener;
+Landroid/os/BatteryStatsInternal;
 Landroid/os/IIdmap2$Stub$Proxy;
 Landroid/os/IIdmap2$Stub;
 Landroid/os/IIdmap2;
+Landroid/os/UserManagerInternal$UserRestrictionsListener;
+Landroid/os/UserManagerInternal;
 Lcom/android/server/-$$Lambda$1xUIIN0BU8izGcnYWT-VzczLBFU;
+Lcom/android/server/-$$Lambda$2rlj96lJ7chZc-A-SbtixW5GQdw;
+Lcom/android/server/-$$Lambda$AlarmManagerService$2$Eo-D98J-N9R2METkD-12gPs320c;
+Lcom/android/server/-$$Lambda$AlarmManagerService$3$jIkPWjqS66vG6aFVQoHxR2w4HPE;
+Lcom/android/server/-$$Lambda$AlarmManagerService$Batch$Xltkj5RTKUMuFVeuavpuY7-Ogzc;
+Lcom/android/server/-$$Lambda$AlarmManagerService$Kswc8z2_RnUW_V0bP_uNErDNN_4;
 Lcom/android/server/-$$Lambda$AlarmManagerService$ZVedZIeWdB3G6AGM0_-9P_GEO24;
+Lcom/android/server/-$$Lambda$AlarmManagerService$gKXZ864LsHRTGbnNeLAgHKL2YPk;
+Lcom/android/server/-$$Lambda$AlarmManagerService$lzZOWJB2te9UTLsLWoZ6M8xouQQ;
+Lcom/android/server/-$$Lambda$AlarmManagerService$nSJw2tKfoL3YIrKDtszoL44jcSM;
+Lcom/android/server/-$$Lambda$AlarmManagerService$nhEd_CDoc7mzdNLRwGUhwl9TaGk;
 Lcom/android/server/-$$Lambda$AlarmManagerService$qehVSjTLWvtJYPGgKh2mkJ6ePnk;
+Lcom/android/server/-$$Lambda$AnimationThread$mMqvPqhsYaiy1Cu67m4VbAgabsM;
 Lcom/android/server/-$$Lambda$AppStateTracker$zzioY8jvEm-1GnJ13CUiQGauPEE;
 Lcom/android/server/-$$Lambda$BatteryService$2x73lvpB0jctMSVP4qb9sHAqRPw;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$7Y-B9O7NDYgUY9hQvFzC2FQ2V5w;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$9z3zqgxtPzBN8Qoni5nHVb0m8EY;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$DM4ow6LC--JYWBfhHp2f1JW8nww;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$JTQ79fl14NyImudsJhx-Mp1dJI8;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$KZAu97wwr_7_MI0awCjQTzdIuAI;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$hInbvsihGvN2hXqvdcoFYzdeqHw;
+Lcom/android/server/-$$Lambda$BatteryService$BatteryPropertiesRegistrar$muNPoFqxU6pF6un7sF70iW4-Fus;
 Lcom/android/server/-$$Lambda$BatteryService$D1kwd7L7yyqN5niz3KWkTepVmUk;
+Lcom/android/server/-$$Lambda$BinderCallsStatsService$SettingsObserver$bif9uA0lzoT6htcKe6MNsrH_ha4;
+Lcom/android/server/-$$Lambda$ConnectivityService$3$_itgrpHpWu3QvA9Wb0gtsEYJWZY;
+Lcom/android/server/-$$Lambda$ConnectivityService$HGNmLJFn9hb5C4M_qIm2DAASfeY;
+Lcom/android/server/-$$Lambda$ConnectivityService$LEHWBvz4S-r8QDKRwIiJBgJlcRE;
+Lcom/android/server/-$$Lambda$ConnectivityService$OIhIcUZjeJ-ci4rP6veezE8o67U;
 Lcom/android/server/-$$Lambda$ConnectivityService$SFqiR4Pfksb1C7csMC3uNxCllR8;
+Lcom/android/server/-$$Lambda$ConnectivityService$_7E84WuW6fYNkhu0kZaWBpcTO58;
+Lcom/android/server/-$$Lambda$ConnectivityService$_NU7EIcPVS-uF_gWH_NWN_gBL4w;
+Lcom/android/server/-$$Lambda$ConnectivityService$ehBcQNERx6CsAuQn5W-xyVKZtXo;
+Lcom/android/server/-$$Lambda$ConnectivityService$iOdlQdHoQM14teTS-EPRH-RRL3k;
+Lcom/android/server/-$$Lambda$ConnectivityService$tyyIxrN1UBdbonRFAT6eEH4wVic;
+Lcom/android/server/-$$Lambda$ConnectivityService$uvmt4yGRo-ufWZED19neBxJaTNk;
+Lcom/android/server/-$$Lambda$ConnectivityService$vGRhfNpFTw0hellWUlmBolfzRy8;
 Lcom/android/server/-$$Lambda$ContextHubSystemService$q-5gSEKm3he-4vIHcay4DLtf85E;
-Lcom/android/server/-$$Lambda$DeviceIdleController$Lhneg3gOUCFQWz6Y-5S75AWemY8;
+Lcom/android/server/-$$Lambda$CountryDetectorService$ESi5ICoEixGJHWdY67G_J38VrJI;
+Lcom/android/server/-$$Lambda$CountryDetectorService$UdoYpHRrhGb-PF6QTwQ4SluOe20;
+Lcom/android/server/-$$Lambda$CountryDetectorService$YZWlE4qqoDuiwnkSrasi91p2-Tk;
+Lcom/android/server/-$$Lambda$CountryDetectorService$fFSTHORponDwFf2wlaJLUdUhirQ;
+Lcom/android/server/-$$Lambda$DisplayThread$f5MRs-rGyBEbIMjOX5lqvMSkf2g;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$6YGiVtgCnlJ0hMIeX5TzlFUaNrY;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$MJhpX-SveTcXQEYQTQa3k6RpjzU;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$NCzfilqDrFIbp6BuyCJrDsdAk5I;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$_PgTaUvckhKQczm_86P6Mowec48;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$fE2pZ6ZhwFEJPuOl0ochqPnSmyI;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$ucIBQc_IW2iYt6j4dngAncLT6nQ;
+Lcom/android/server/-$$Lambda$ExplicitHealthCheckController$x4g41SYVR_nHQxV-RQY6VIfh1zs;
+Lcom/android/server/-$$Lambda$GnssManagerService$-oEUAdznvSDH354TqspnOkB88T4;
+Lcom/android/server/-$$Lambda$GnssManagerService$a17GVVAgEci0VYD4EMvKwuPLhdQ;
+Lcom/android/server/-$$Lambda$GnssManagerService$mZAgy7PA5q3tB1aq7tHsX4xM14E;
 Lcom/android/server/-$$Lambda$GraphicsStatsService$2EDVu98hsJvSwNgKvijVLSR3IrQ;
 Lcom/android/server/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;
 Lcom/android/server/-$$Lambda$IpSecService$AnqunmSwm_yQvDDEPg-gokhVs5M;
-Lcom/android/server/-$$Lambda$LocationManagerService$5dIxyLSEBQpWtBou-Lju9O-NJOM;
-Lcom/android/server/-$$Lambda$LocationManagerService$LocationProvider$nsL4uwojBLPzs1TzMfpQIBSm7p0;
-Lcom/android/server/-$$Lambda$LocationManagerService$bojY6dMaI07zh6_sF7ERxgmk6U0;
-Lcom/android/server/-$$Lambda$LocationManagerService$c--nwJDEsjSPyI_6OK8sVC5iClY;
-Lcom/android/server/-$$Lambda$LocationManagerService$pUnNobtfzLC9eAlVqCMKySwbo3U;
-Lcom/android/server/-$$Lambda$LocationManagerService$ta09t47XwQMZdhPftO1K9zdy5Mk;
+Lcom/android/server/-$$Lambda$LocationManagerService$1$HAAnoF9DI9FvCHK_geH89--2z2I;
+Lcom/android/server/-$$Lambda$LocationManagerService$56u_uxjuANYKBEJg0XAb0TfpovM;
+Lcom/android/server/-$$Lambda$LocationManagerService$6axYIgaetwnztBT8L9-07FzvA1k;
+Lcom/android/server/-$$Lambda$LocationManagerService$7UVIPM1Ndi2blDc1rAeJdqMBvh8;
+Lcom/android/server/-$$Lambda$LocationManagerService$9-Bb7czX4njtJ272aPH91IsacAY;
+Lcom/android/server/-$$Lambda$LocationManagerService$AgevX9G4cx2TbNzr7MYT3YPtASs;
+Lcom/android/server/-$$Lambda$LocationManagerService$BQNQ1vKVv2dgsjR1d4p8xU8o1us;
+Lcom/android/server/-$$Lambda$LocationManagerService$BY2uqgE48i0Shvo1FGLa9toRxBA;
+Lcom/android/server/-$$Lambda$LocationManagerService$DJ4kMod0tVB-vqSawrWCXTCoPAM;
+Lcom/android/server/-$$Lambda$LocationManagerService$EWYAKDMwH-ZXy5A8J9erCTIUqKY;
+Lcom/android/server/-$$Lambda$LocationManagerService$GnHas6J3gXGjXx6KfNuV_GzNl9w;
+Lcom/android/server/-$$Lambda$LocationManagerService$HZIPtgYCt4b4zdEJtC8qjcHStVE;
+Lcom/android/server/-$$Lambda$LocationManagerService$KXKNxpIZDrysWhFilQxLdYekB3M;
+Lcom/android/server/-$$Lambda$LocationManagerService$LocationProviderManager$neXVKsR0MS1O6DaHXSdf3TVC-rc;
+Lcom/android/server/-$$Lambda$LocationManagerService$Nht7c6P7I1-MJqXp4qiS_HUIjzY;
+Lcom/android/server/-$$Lambda$LocationManagerService$QVf9Y4g7BmVBQBlkUO5oHLmMW2o;
+Lcom/android/server/-$$Lambda$LocationManagerService$V3FRncuMEn-4R6Dd2zsTs4m0dWM;
+Lcom/android/server/-$$Lambda$LocationManagerService$XWulT08IueAbw1NBjxLvw-T5cfc;
+Lcom/android/server/-$$Lambda$LocationManagerService$cH8JMN3scBU_51q5WfUtASFQZJ0;
+Lcom/android/server/-$$Lambda$LocationManagerService$dMJ6CgaZhEyiV2592-lxxrexZAQ;
+Lcom/android/server/-$$Lambda$LocationManagerService$es-cu7rp_R0xbJzDRj4qpZNL7vc;
+Lcom/android/server/-$$Lambda$LocationManagerService$fWSrYiKaBfOFmdeiwC9Lx7S68B4;
+Lcom/android/server/-$$Lambda$LocationManagerService$nxs_FejUjcjw2UUIeDY3TYTRJs4;
+Lcom/android/server/-$$Lambda$LocationManagerService$oIimlThgbbmKRAN80H4tpnruGtk;
+Lcom/android/server/-$$Lambda$LocationManagerService$qbZh8GXCTpZ1wNP3qw1VXZxlKQg;
 Lcom/android/server/-$$Lambda$LockGuard$C107ImDhsfBAwlfWxZPBoVXIl_4;
+Lcom/android/server/-$$Lambda$LooperStatsService$Byo6QAxZpVXDCMtjrcYJc6YLAks;
+Lcom/android/server/-$$Lambda$LooperStatsService$Vzysuo2tO86qjfcWeh1Rdb47NQQ;
+Lcom/android/server/-$$Lambda$LooperStatsService$XjYmSR91xdWG1Xgt-Gj9GBZZbjk;
+Lcom/android/server/-$$Lambda$LooperStatsService$XtFJEDeyYRT79ZkVP96XkHribxg;
+Lcom/android/server/-$$Lambda$NetworkManagementService$15DusjG2gzn5UASV-lMS3BUUn9c;
+Lcom/android/server/-$$Lambda$NetworkManagementService$D43p3Tqq7B3qaMs9AGb_3j0KZd0;
+Lcom/android/server/-$$Lambda$NetworkManagementService$FsR_UD5xfj4hgrwGdX74wq881Bk;
+Lcom/android/server/-$$Lambda$NetworkManagementService$Hs4ibiwzKmd9u0PZ04vysXRExho;
 Lcom/android/server/-$$Lambda$NetworkManagementService$JKmkb4AIm_PPzQp1XOHOgPPRswo;
+Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$0xWa9DGxTnoGVHppsM-nng2PygE;
+Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$CY9DSIbzpOaZKmi1MIGhBkJBJV0;
 Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$KpFpi2qBs2OPscTclZ3JRRr-G-g;
+Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$L7i_Z-ii6zMptHCt2_Igy3iBvKk;
 Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$QjjL0oku3yfQh6xuCG2xu7lWiSM;
+Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$h2iz-IbnHpQ97mlJ7G62W2mmanw;
+Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$hh3pIkVnnzeRGeDRAOOmVvc6VxE;
 Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$ne4qDQiQuX7-WNuF8Q_c7HnWnG0;
 Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$pOV71EYm5PphEVG1PGQnV_c6XiA;
 Lcom/android/server/-$$Lambda$NetworkManagementService$NetdUnsolicitedEventListener$praKgcnQG9FTHNMGfCVPTVY8mK8;
+Lcom/android/server/-$$Lambda$NetworkManagementService$RVCc8O9RWjyrynN9cyM7inAv-fk;
 Lcom/android/server/-$$Lambda$NetworkManagementService$VhSl9D6THA_3jE0unleMmkHavJ0;
+Lcom/android/server/-$$Lambda$NetworkManagementService$YKgmK-4MuJjN-VLuMBhmJy1eWj4;
 Lcom/android/server/-$$Lambda$NetworkManagementService$Yw12yNgo43yul34SibAKDtttAK8;
 Lcom/android/server/-$$Lambda$NetworkManagementService$_L953cbquVj0BMBP1MZlSTm0Umg;
+Lcom/android/server/-$$Lambda$NetworkManagementService$fl14NirBlFUd6eJkGcL0QWd5-w0;
 Lcom/android/server/-$$Lambda$NetworkManagementService$hs6djmKbGd8sG4u1TMglrogNP_s;
 Lcom/android/server/-$$Lambda$NetworkManagementService$vX8dVVYxxv3YT9jQuN34bgGgRa8;
-Lcom/android/server/-$$Lambda$PackageWatchdog$a9_AwAvl6vknTazIAvycouLJHwo;
+Lcom/android/server/-$$Lambda$NetworkManagementService$xer7k2RLU4mODjrkZqaX89S9gD8;
+Lcom/android/server/-$$Lambda$NetworkScoreService$vwytA23Qz3U83FJaKiA52aJ1mts;
+Lcom/android/server/-$$Lambda$OiriEnuntH0IJYDPdRjKdzSjR0o;
+Lcom/android/server/-$$Lambda$PackageWatchdog$07YAng9lcuyRJuBYy9Jk3p2pWVY;
+Lcom/android/server/-$$Lambda$PackageWatchdog$9whbrgN2UsbVDUUSdkrctYqoh5M;
+Lcom/android/server/-$$Lambda$PackageWatchdog$CQuOnXthwwBaxcS5WoAlJJAz8Tk;
+Lcom/android/server/-$$Lambda$PackageWatchdog$Q0WI2EJpRFO1jF_7_YDaj1eGHas;
+Lcom/android/server/-$$Lambda$PackageWatchdog$VAW1s9zLN90OWS2gosDw9xdVjr8;
+Lcom/android/server/-$$Lambda$PackageWatchdog$hFdPWF73rahpzi1hJ-d9hNfUNrY;
+Lcom/android/server/-$$Lambda$PackageWatchdog$ib8X74W4PjX4xo1uv-QgOpcuf4o;
+Lcom/android/server/-$$Lambda$PackageWatchdog$nOS9OaZO4hPsSe0I8skPT1UgQoo;
+Lcom/android/server/-$$Lambda$PackageWatchdog$oAoA92I4TtJeqztFu3XBOLEs7gE;
+Lcom/android/server/-$$Lambda$PackageWatchdog$pCeN8Lr1-8Uwvg-VmBTEDs1Ak0w;
+Lcom/android/server/-$$Lambda$PackageWatchdog$uFI2R7Ip9Bh1wQPJqJ5H5A0soVU;
+Lcom/android/server/-$$Lambda$PackageWatchdog$vRKcIrucEj03dz6ypRVINZtns1s;
 Lcom/android/server/-$$Lambda$PersistentDataBlockService$EZl9OYaT2eNL7kfSr2nKUBjxidk;
 Lcom/android/server/-$$Lambda$PinnerService$3$3Ta6TX4Jq9YbpUYE5Y0r8Xt8rBw;
 Lcom/android/server/-$$Lambda$PinnerService$3$RQBbrt9b8esLBxJImxDgVTsP34I;
+Lcom/android/server/-$$Lambda$PinnerService$6bekYOn4YXi0x7vYNWO40QyA-s8;
 Lcom/android/server/-$$Lambda$PinnerService$GeEX-8XoHeV0LEszxat7jOSlrs4;
+Lcom/android/server/-$$Lambda$PruneInstantAppsJobService$i4sLSJdxcTXdgPAQZFbP66ZRprE;
+Lcom/android/server/-$$Lambda$QDIfseHi3OqlANfwpoMGUUJDtAQ;
 Lcom/android/server/-$$Lambda$QTLvklqCTz22VSzZPEWJs-o0bv4;
+Lcom/android/server/-$$Lambda$RescueParty$M16YDzk6heHIMmIiCwHVSe9Y_o8;
+Lcom/android/server/-$$Lambda$SensorPrivacyService$SensorPrivacyHandler$ctW6BcqPnLm_33mG1WatsFwFT7w;
 Lcom/android/server/-$$Lambda$ServiceWatcher$IP3HV4ye72eH3YxzGb9dMfcGWPE;
+Lcom/android/server/-$$Lambda$ServiceWatcher$K66HPJls7ga1t3t859fKACfAgZc;
+Lcom/android/server/-$$Lambda$ServiceWatcher$b1z9OeL-1VpQ_8p47qz7nMNUpsE;
 Lcom/android/server/-$$Lambda$ServiceWatcher$gVk2fFkq2-aamIua2kIpukAFtf8;
+Lcom/android/server/-$$Lambda$ServiceWatcher$uCZpuTwrOz-CS9PQS2NY1ZXaU8U;
 Lcom/android/server/-$$Lambda$ServiceWatcher$uru7j1zD-GiN8rndFZ3KWaTrxYo;
-Lcom/android/server/-$$Lambda$StorageManagerService$o2Z_M70khUX2rrLNnknKPHIZ0_A;
+Lcom/android/server/-$$Lambda$StorageManagerService$QRLVSwX20a_sSZQkOpiBHRVs3Cs;
+Lcom/android/server/-$$Lambda$StorageManagerService$iQEwQayMYzs9Ew4L6Gk7kRIO9wM;
+Lcom/android/server/-$$Lambda$StorageManagerService$js3bHvdd2Mf8gztNxvL27JoT034;
+Lcom/android/server/-$$Lambda$StorageManagerService$rphiUwXTDSwqMt8xpkOYwsKQc5w;
+Lcom/android/server/-$$Lambda$StorageManagerService$wW-xFR_FbxcgCZR-2zxBZdtJhr8;
+Lcom/android/server/-$$Lambda$SystemServer$5qLn3pqt3aoGcHIU3L45PwnW0vI;
+Lcom/android/server/-$$Lambda$SystemServer$72PvntN28skIthlRYR9w5EhsdX8;
 Lcom/android/server/-$$Lambda$SystemServer$NlJmG18aPrQduhRqASIdcn7G0z8;
-Lcom/android/server/-$$Lambda$SystemServer$RIWNR87PnJ4Y6VHItRXU0J6ocqQ;
+Lcom/android/server/-$$Lambda$SystemServer$RfxLu1RawR4j0S9lEwPzwtODxaE;
+Lcom/android/server/-$$Lambda$SystemServer$TEbRm_G0ejorrajBEvke8XmHuQU;
 Lcom/android/server/-$$Lambda$SystemServer$UyrPns7R814g-ZEylCbDKhe8It4;
 Lcom/android/server/-$$Lambda$SystemServer$VBGb9VpEls6bUcVBPwYLtX7qDTs;
 Lcom/android/server/-$$Lambda$SystemServer$Y1gEdKr_Hb7K7cbTDAo_WOJ-SYI;
-Lcom/android/server/-$$Lambda$SystemServerInitThreadPool$7wfLGkZF7FvYZv7xj3ghvuiJJGk;
+Lcom/android/server/-$$Lambda$SystemServer$c50amMOcae1K0NdkHHoWNGvSMJQ;
+Lcom/android/server/-$$Lambda$SystemServer$zn6ji6g70a_qrK5QZEPCaarZSik;
+Lcom/android/server/-$$Lambda$SystemServerInitThreadPool$o2_GLo0lnkotYmRdTfg66UETEwQ;
+Lcom/android/server/-$$Lambda$TelephonyRegistry$1bce8MzlZGgWfCoSiX5udUvFDQ0;
 Lcom/android/server/-$$Lambda$TelephonyRegistry$ANYH01Imb6dMua6cgKvMEl4kD3I;
 Lcom/android/server/-$$Lambda$TelephonyRegistry$KwKYEFoKdijV5jZbDqX1IUV4CzY;
+Lcom/android/server/-$$Lambda$UiModeManagerService$10$s3H4QPM2YRtAd9qa2Ja54k7yJO0;
+Lcom/android/server/-$$Lambda$UiModeManagerService$9$ytrifY2iawCLCBtYLrmL70q1UhI;
+Lcom/android/server/-$$Lambda$UiModeManagerService$AwUHdh7CYhroUMaGm35a4uvZcnY;
+Lcom/android/server/-$$Lambda$UiModeManagerService$bGpxq9ta5GBYtiUBAOy4iNtThus;
 Lcom/android/server/-$$Lambda$UiModeManagerService$vYS4_RzjAavNRF50rrGN0tXI5JM;
 Lcom/android/server/-$$Lambda$UiModeManagerService$vuGxqIEDBezs_Xyz-NAh0Bonp5g;
+Lcom/android/server/-$$Lambda$UiModeManagerService$wttJpnJnECgc-2ud4hu2A5dSOPg;
 Lcom/android/server/-$$Lambda$YWiwiKm_Qgqb55C6tTuq_n2JzdY;
+Lcom/android/server/-$$Lambda$gdjkrlx9BXIj8-f75-NKd_zMxPs;
+Lcom/android/server/-$$Lambda$htemI6hNv3kq1UVGrXpRlPIVXRU;
 Lcom/android/server/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;
+Lcom/android/server/-$$Lambda$jMDA_C1bkT6orVkYqrEdgiGSDI0;
 Lcom/android/server/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;
+Lcom/android/server/-$$Lambda$u6uWKONNslLDvDcMfFfe2etQmKg;
 Lcom/android/server/AlarmManagerInternal$InFlightListener;
 Lcom/android/server/AlarmManagerInternal;
 Lcom/android/server/AlarmManagerService$1;
 Lcom/android/server/AlarmManagerService$2;
 Lcom/android/server/AlarmManagerService$3;
+Lcom/android/server/AlarmManagerService$4;
+Lcom/android/server/AlarmManagerService$5;
 Lcom/android/server/AlarmManagerService$6;
+Lcom/android/server/AlarmManagerService$7;
 Lcom/android/server/AlarmManagerService$Alarm;
 Lcom/android/server/AlarmManagerService$AlarmHandler;
 Lcom/android/server/AlarmManagerService$AlarmThread;
@@ -18173,6 +39987,7 @@
 Lcom/android/server/AlarmManagerService$Batch;
 Lcom/android/server/AlarmManagerService$BatchTimeOrder;
 Lcom/android/server/AlarmManagerService$BroadcastStats;
+Lcom/android/server/AlarmManagerService$ChargingReceiver;
 Lcom/android/server/AlarmManagerService$ClockReceiver;
 Lcom/android/server/AlarmManagerService$Constants;
 Lcom/android/server/AlarmManagerService$DeliveryTracker;
@@ -18183,18 +39998,13 @@
 Lcom/android/server/AlarmManagerService$InteractiveStateReceiver;
 Lcom/android/server/AlarmManagerService$LocalService;
 Lcom/android/server/AlarmManagerService$PriorityClass;
+Lcom/android/server/AlarmManagerService$ShellCmd;
 Lcom/android/server/AlarmManagerService$UidObserver;
 Lcom/android/server/AlarmManagerService$UninstallReceiver;
+Lcom/android/server/AlarmManagerService$WakeupEvent;
 Lcom/android/server/AlarmManagerService;
 Lcom/android/server/AnimationThread;
-Lcom/android/server/AnyMotionDetector$1;
-Lcom/android/server/AnyMotionDetector$2;
-Lcom/android/server/AnyMotionDetector$3;
-Lcom/android/server/AnyMotionDetector$4;
-Lcom/android/server/AnyMotionDetector$DeviceIdleCallback;
-Lcom/android/server/AnyMotionDetector$RunningSignalStats;
-Lcom/android/server/AnyMotionDetector$Vector3;
-Lcom/android/server/AnyMotionDetector;
+Lcom/android/server/AppStateTracker$1;
 Lcom/android/server/AppStateTracker$AppOpsWatcher;
 Lcom/android/server/AppStateTracker$FeatureFlagsObserver;
 Lcom/android/server/AppStateTracker$Listener;
@@ -18206,14 +40016,21 @@
 Lcom/android/server/AttributeCache$Entry;
 Lcom/android/server/AttributeCache$Package;
 Lcom/android/server/AttributeCache;
+Lcom/android/server/BatteryService$10;
+Lcom/android/server/BatteryService$1;
 Lcom/android/server/BatteryService$2;
 Lcom/android/server/BatteryService$3;
 Lcom/android/server/BatteryService$4;
+Lcom/android/server/BatteryService$5;
+Lcom/android/server/BatteryService$6;
+Lcom/android/server/BatteryService$7;
 Lcom/android/server/BatteryService$8;
 Lcom/android/server/BatteryService$9;
 Lcom/android/server/BatteryService$BatteryPropertiesRegistrar;
 Lcom/android/server/BatteryService$BinderService;
 Lcom/android/server/BatteryService$HealthHalCallback;
+Lcom/android/server/BatteryService$HealthServiceWrapper$1;
+Lcom/android/server/BatteryService$HealthServiceWrapper$2;
 Lcom/android/server/BatteryService$HealthServiceWrapper$Callback;
 Lcom/android/server/BatteryService$HealthServiceWrapper$IHealthSupplier;
 Lcom/android/server/BatteryService$HealthServiceWrapper$IServiceManagerSupplier;
@@ -18222,12 +40039,18 @@
 Lcom/android/server/BatteryService$HealthServiceWrapper;
 Lcom/android/server/BatteryService$Led;
 Lcom/android/server/BatteryService$LocalService;
+Lcom/android/server/BatteryService$Shell;
 Lcom/android/server/BatteryService;
 Lcom/android/server/BinderCallsStatsService$AuthorizedWorkSourceProvider;
 Lcom/android/server/BinderCallsStatsService$Internal;
 Lcom/android/server/BinderCallsStatsService$LifeCycle;
 Lcom/android/server/BinderCallsStatsService$SettingsObserver;
 Lcom/android/server/BinderCallsStatsService;
+Lcom/android/server/BluetoothAirplaneModeListener$1;
+Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper$1;
+Lcom/android/server/BluetoothAirplaneModeListener$AirplaneModeHelper;
+Lcom/android/server/BluetoothAirplaneModeListener$BluetoothAirplaneModeHandler;
+Lcom/android/server/BluetoothAirplaneModeListener;
 Lcom/android/server/BluetoothManagerService$1;
 Lcom/android/server/BluetoothManagerService$2;
 Lcom/android/server/BluetoothManagerService$3;
@@ -18236,11 +40059,13 @@
 Lcom/android/server/BluetoothManagerService$ActiveLog;
 Lcom/android/server/BluetoothManagerService$BluetoothHandler;
 Lcom/android/server/BluetoothManagerService$BluetoothServiceConnection;
+Lcom/android/server/BluetoothManagerService$ClientDeathRecipient;
 Lcom/android/server/BluetoothManagerService$ProfileServiceConnections;
 Lcom/android/server/BluetoothManagerService;
 Lcom/android/server/BluetoothService;
 Lcom/android/server/CachedDeviceStateService$1;
 Lcom/android/server/CachedDeviceStateService;
+Lcom/android/server/CertBlacklister$BlacklistObserver$1;
 Lcom/android/server/CertBlacklister$BlacklistObserver;
 Lcom/android/server/CertBlacklister;
 Lcom/android/server/ConnectivityService$1;
@@ -18250,34 +40075,32 @@
 Lcom/android/server/ConnectivityService$5;
 Lcom/android/server/ConnectivityService$6;
 Lcom/android/server/ConnectivityService$7;
+Lcom/android/server/ConnectivityService$CaptivePortalImpl;
+Lcom/android/server/ConnectivityService$ConnectivityDiagnosticsCallbackInfo;
+Lcom/android/server/ConnectivityService$ConnectivityDiagnosticsHandler;
+Lcom/android/server/ConnectivityService$Dependencies;
 Lcom/android/server/ConnectivityService$InternalHandler;
 Lcom/android/server/ConnectivityService$LegacyTypeTracker;
 Lcom/android/server/ConnectivityService$NetworkFactoryInfo;
+Lcom/android/server/ConnectivityService$NetworkMonitorCallbacks;
+Lcom/android/server/ConnectivityService$NetworkProviderInfo;
+Lcom/android/server/ConnectivityService$NetworkReassignment$NetworkBgStatePair;
+Lcom/android/server/ConnectivityService$NetworkReassignment$RequestReassignment;
+Lcom/android/server/ConnectivityService$NetworkReassignment;
 Lcom/android/server/ConnectivityService$NetworkRequestInfo;
 Lcom/android/server/ConnectivityService$NetworkStateTrackerHandler;
+Lcom/android/server/ConnectivityService$ReapUnvalidatedNetworks;
 Lcom/android/server/ConnectivityService$SettingsObserver;
+Lcom/android/server/ConnectivityService$ShellCmd;
+Lcom/android/server/ConnectivityService$UnneededFor;
 Lcom/android/server/ConnectivityService;
 Lcom/android/server/ConsumerIrService;
 Lcom/android/server/ContextHubSystemService;
+Lcom/android/server/CountryDetectorService$1$1;
 Lcom/android/server/CountryDetectorService$1;
 Lcom/android/server/CountryDetectorService$2;
+Lcom/android/server/CountryDetectorService$Receiver;
 Lcom/android/server/CountryDetectorService;
-Lcom/android/server/DeviceIdleController$1;
-Lcom/android/server/DeviceIdleController$2;
-Lcom/android/server/DeviceIdleController$3;
-Lcom/android/server/DeviceIdleController$4;
-Lcom/android/server/DeviceIdleController$5;
-Lcom/android/server/DeviceIdleController$6;
-Lcom/android/server/DeviceIdleController$7;
-Lcom/android/server/DeviceIdleController$8;
-Lcom/android/server/DeviceIdleController$9;
-Lcom/android/server/DeviceIdleController$BinderService;
-Lcom/android/server/DeviceIdleController$Constants;
-Lcom/android/server/DeviceIdleController$Injector;
-Lcom/android/server/DeviceIdleController$LocalService;
-Lcom/android/server/DeviceIdleController$MotionListener;
-Lcom/android/server/DeviceIdleController$MyHandler;
-Lcom/android/server/DeviceIdleController;
 Lcom/android/server/DiskStatsService;
 Lcom/android/server/DisplayThread;
 Lcom/android/server/DockObserver$1;
@@ -18288,15 +40111,18 @@
 Lcom/android/server/DropBoxManagerService$1;
 Lcom/android/server/DropBoxManagerService$2;
 Lcom/android/server/DropBoxManagerService$3;
-Lcom/android/server/DropBoxManagerService$4;
+Lcom/android/server/DropBoxManagerService$DropBoxManagerBroadcastHandler;
 Lcom/android/server/DropBoxManagerService$EntryFile;
 Lcom/android/server/DropBoxManagerService$FileList;
+Lcom/android/server/DropBoxManagerService$ShellCmd;
 Lcom/android/server/DropBoxManagerService;
 Lcom/android/server/DynamicSystemService;
 Lcom/android/server/EntropyMixer$1;
 Lcom/android/server/EntropyMixer$2;
 Lcom/android/server/EntropyMixer;
 Lcom/android/server/EventLogTags;
+Lcom/android/server/ExplicitHealthCheckController$1;
+Lcom/android/server/ExplicitHealthCheckController;
 Lcom/android/server/ExtconStateObserver;
 Lcom/android/server/ExtconUEventObserver$ExtconInfo;
 Lcom/android/server/ExtconUEventObserver;
@@ -18306,9 +40132,11 @@
 Lcom/android/server/GestureLauncherService$CameraLiftTriggerEventListener;
 Lcom/android/server/GestureLauncherService$GestureEventListener;
 Lcom/android/server/GestureLauncherService;
+Lcom/android/server/GnssManagerService;
 Lcom/android/server/GraphicsStatsService$1;
 Lcom/android/server/GraphicsStatsService$ActiveBuffer;
 Lcom/android/server/GraphicsStatsService$BufferInfo;
+Lcom/android/server/GraphicsStatsService$HistoricalBuffer;
 Lcom/android/server/GraphicsStatsService;
 Lcom/android/server/HardwarePropertiesManagerService;
 Lcom/android/server/INativeDaemonConnectorCallbacks;
@@ -18317,28 +40145,40 @@
 Lcom/android/server/IntentResolver;
 Lcom/android/server/IoThread;
 Lcom/android/server/IpSecService$1;
+Lcom/android/server/IpSecService$EncapSocketRecord;
+Lcom/android/server/IpSecService$IResource;
 Lcom/android/server/IpSecService$IpSecServiceConfiguration$1;
 Lcom/android/server/IpSecService$IpSecServiceConfiguration;
+Lcom/android/server/IpSecService$OwnedResourceRecord;
+Lcom/android/server/IpSecService$RefcountedResource;
+Lcom/android/server/IpSecService$RefcountedResourceArray;
+Lcom/android/server/IpSecService$ResourceTracker;
+Lcom/android/server/IpSecService$SpiRecord;
+Lcom/android/server/IpSecService$TransformRecord;
+Lcom/android/server/IpSecService$TunnelInterfaceRecord;
 Lcom/android/server/IpSecService$UidFdTagger;
+Lcom/android/server/IpSecService$UserRecord;
 Lcom/android/server/IpSecService$UserResourceTracker;
 Lcom/android/server/IpSecService;
 Lcom/android/server/LocationManagerService$1;
 Lcom/android/server/LocationManagerService$2;
 Lcom/android/server/LocationManagerService$3;
-Lcom/android/server/LocationManagerService$4;
-Lcom/android/server/LocationManagerService$5;
-Lcom/android/server/LocationManagerService$6;
-Lcom/android/server/LocationManagerService$7;
-Lcom/android/server/LocationManagerService$8;
-Lcom/android/server/LocationManagerService$LinkedListenerBase;
-Lcom/android/server/LocationManagerService$LocationProvider;
+Lcom/android/server/LocationManagerService$Lifecycle;
+Lcom/android/server/LocationManagerService$LocalService;
+Lcom/android/server/LocationManagerService$LocationProviderManager;
+Lcom/android/server/LocationManagerService$PassiveLocationProviderManager;
 Lcom/android/server/LocationManagerService$Receiver;
 Lcom/android/server/LocationManagerService$UpdateRecord;
 Lcom/android/server/LocationManagerService;
+Lcom/android/server/LocationManagerServiceUtils$LinkedListener;
+Lcom/android/server/LocationManagerServiceUtils$LinkedListenerBase;
+Lcom/android/server/LocationManagerServiceUtils;
 Lcom/android/server/LockGuard$1;
 Lcom/android/server/LockGuard$LockInfo;
 Lcom/android/server/LockGuard;
+Lcom/android/server/LooperStatsService$1;
 Lcom/android/server/LooperStatsService$Lifecycle;
+Lcom/android/server/LooperStatsService$LooperShellCommand;
 Lcom/android/server/LooperStatsService$SettingsObserver;
 Lcom/android/server/LooperStatsService;
 Lcom/android/server/MmsServiceBroker$1;
@@ -18346,11 +40186,24 @@
 Lcom/android/server/MmsServiceBroker$3;
 Lcom/android/server/MmsServiceBroker$BinderService;
 Lcom/android/server/MmsServiceBroker;
+Lcom/android/server/MountServiceIdler$1;
 Lcom/android/server/MountServiceIdler;
+Lcom/android/server/NativeDaemonConnector$1;
+Lcom/android/server/NativeDaemonConnector$Command;
+Lcom/android/server/NativeDaemonConnector$NativeDaemonArgumentException;
+Lcom/android/server/NativeDaemonConnector$NativeDaemonFailureException;
+Lcom/android/server/NativeDaemonConnector$ResponseQueue$PendingCmd;
 Lcom/android/server/NativeDaemonConnector$ResponseQueue;
+Lcom/android/server/NativeDaemonConnector$SensitiveArg;
 Lcom/android/server/NativeDaemonConnector;
 Lcom/android/server/NativeDaemonConnectorException;
+Lcom/android/server/NativeDaemonEvent;
+Lcom/android/server/NativeDaemonTimeoutException;
+Lcom/android/server/NetIdManager;
 Lcom/android/server/NetworkManagementInternal;
+Lcom/android/server/NetworkManagementService$1;
+Lcom/android/server/NetworkManagementService$IdleTimerParams;
+Lcom/android/server/NetworkManagementService$Injector;
 Lcom/android/server/NetworkManagementService$LocalService;
 Lcom/android/server/NetworkManagementService$NetdTetheringStatsProvider;
 Lcom/android/server/NetworkManagementService$NetdUnsolicitedEventListener;
@@ -18361,23 +40214,37 @@
 Lcom/android/server/NetworkScoreService$2;
 Lcom/android/server/NetworkScoreService$3;
 Lcom/android/server/NetworkScoreService$4;
-Lcom/android/server/NetworkScoreService$5;
+Lcom/android/server/NetworkScoreService$CurrentNetworkScoreCacheFilter;
 Lcom/android/server/NetworkScoreService$DispatchingContentObserver;
+Lcom/android/server/NetworkScoreService$FilteringCacheUpdatingConsumer;
 Lcom/android/server/NetworkScoreService$Lifecycle;
+Lcom/android/server/NetworkScoreService$NetworkScorerPackageMonitor;
+Lcom/android/server/NetworkScoreService$ScanResultsScoreCacheFilter;
+Lcom/android/server/NetworkScoreService$ScanResultsSupplier;
+Lcom/android/server/NetworkScoreService$ScoringServiceConnection;
 Lcom/android/server/NetworkScoreService$ServiceHandler;
 Lcom/android/server/NetworkScoreService;
 Lcom/android/server/NetworkScorerAppManager$SettingsFacade;
 Lcom/android/server/NetworkScorerAppManager;
+Lcom/android/server/NetworkTimeUpdateService$1;
+Lcom/android/server/NetworkTimeUpdateService$AutoTimeSettingObserver;
+Lcom/android/server/NetworkTimeUpdateService$MyHandler;
+Lcom/android/server/NetworkTimeUpdateService$NetworkTimeUpdateCallback;
 Lcom/android/server/NetworkTimeUpdateService;
-Lcom/android/server/NewNetworkTimeUpdateService$1;
-Lcom/android/server/NewNetworkTimeUpdateService$2;
-Lcom/android/server/NewNetworkTimeUpdateService$MyHandler;
-Lcom/android/server/NewNetworkTimeUpdateService$NetworkTimeUpdateCallback;
-Lcom/android/server/NewNetworkTimeUpdateService$SettingsObserver;
-Lcom/android/server/NewNetworkTimeUpdateService;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$1;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$2;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$AutoTimeSettingObserver;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$MyHandler;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$NetworkTimeUpdateCallback;
+Lcom/android/server/NetworkTimeUpdateServiceImpl$SettingsObserver;
+Lcom/android/server/NetworkTimeUpdateServiceImpl;
+Lcom/android/server/NsdService$1;
+Lcom/android/server/NsdService$ClientInfo;
 Lcom/android/server/NsdService$DaemonConnection;
 Lcom/android/server/NsdService$DaemonConnectionSupplier;
 Lcom/android/server/NsdService$NativeCallbackReceiver;
+Lcom/android/server/NsdService$NativeEvent;
+Lcom/android/server/NsdService$NativeResponseCode;
 Lcom/android/server/NsdService$NsdSettings$1;
 Lcom/android/server/NsdService$NsdSettings;
 Lcom/android/server/NsdService$NsdStateMachine$1;
@@ -18386,10 +40253,14 @@
 Lcom/android/server/NsdService$NsdStateMachine$EnabledState;
 Lcom/android/server/NsdService$NsdStateMachine;
 Lcom/android/server/NsdService;
+Lcom/android/server/PackageWatchdog$1;
+Lcom/android/server/PackageWatchdog$BootThreshold;
 Lcom/android/server/PackageWatchdog$MonitoredPackage;
 Lcom/android/server/PackageWatchdog$ObserverInternal;
 Lcom/android/server/PackageWatchdog$PackageHealthObserver;
+Lcom/android/server/PackageWatchdog$SystemClock;
 Lcom/android/server/PackageWatchdog;
+Lcom/android/server/PendingIntentUtils;
 Lcom/android/server/PersistentDataBlockManagerInternal;
 Lcom/android/server/PersistentDataBlockService$1;
 Lcom/android/server/PersistentDataBlockService$2;
@@ -18408,11 +40279,9 @@
 Lcom/android/server/PinnerService;
 Lcom/android/server/PruneInstantAppsJobService;
 Lcom/android/server/RandomBlock;
-Lcom/android/server/RecoverySystemService$1;
-Lcom/android/server/RecoverySystemService$BinderService;
-Lcom/android/server/RecoverySystemService;
 Lcom/android/server/RescueParty$AppThreshold;
 Lcom/android/server/RescueParty$BootThreshold;
+Lcom/android/server/RescueParty$RescuePartyObserver;
 Lcom/android/server/RescueParty$Threshold;
 Lcom/android/server/RescueParty;
 Lcom/android/server/RuntimeService;
@@ -18426,24 +40295,39 @@
 Lcom/android/server/ServiceWatcher$1;
 Lcom/android/server/ServiceWatcher$2;
 Lcom/android/server/ServiceWatcher$BinderRunner;
+Lcom/android/server/ServiceWatcher$BlockingBinderRunner;
+Lcom/android/server/ServiceWatcher$ServiceInfo;
 Lcom/android/server/ServiceWatcher;
+Lcom/android/server/StorageManagerService$10;
+Lcom/android/server/StorageManagerService$11;
 Lcom/android/server/StorageManagerService$12;
+Lcom/android/server/StorageManagerService$13;
 Lcom/android/server/StorageManagerService$1;
 Lcom/android/server/StorageManagerService$2;
 Lcom/android/server/StorageManagerService$3;
 Lcom/android/server/StorageManagerService$4;
 Lcom/android/server/StorageManagerService$5;
 Lcom/android/server/StorageManagerService$6;
+Lcom/android/server/StorageManagerService$7;
 Lcom/android/server/StorageManagerService$8;
+Lcom/android/server/StorageManagerService$9;
+Lcom/android/server/StorageManagerService$AppFuseMountScope;
 Lcom/android/server/StorageManagerService$Callbacks;
 Lcom/android/server/StorageManagerService$Lifecycle;
+Lcom/android/server/StorageManagerService$MountObbAction;
+Lcom/android/server/StorageManagerService$ObbAction;
 Lcom/android/server/StorageManagerService$ObbActionHandler;
+Lcom/android/server/StorageManagerService$ObbState;
 Lcom/android/server/StorageManagerService$StorageManagerInternalImpl;
 Lcom/android/server/StorageManagerService$StorageManagerServiceHandler;
+Lcom/android/server/StorageManagerService$UnmountObbAction;
 Lcom/android/server/StorageManagerService;
+Lcom/android/server/SystemConfigService$1;
+Lcom/android/server/SystemConfigService;
 Lcom/android/server/SystemServer$1;
 Lcom/android/server/SystemServer;
 Lcom/android/server/SystemServerInitThreadPool;
+Lcom/android/server/SystemService$TargetUser;
 Lcom/android/server/SystemService;
 Lcom/android/server/SystemServiceManager;
 Lcom/android/server/SystemUpdateManagerService;
@@ -18458,13 +40342,18 @@
 Lcom/android/server/ThreadPriorityBooster$PriorityState;
 Lcom/android/server/ThreadPriorityBooster;
 Lcom/android/server/UiModeManagerInternal;
+Lcom/android/server/UiModeManagerService$10;
 Lcom/android/server/UiModeManagerService$1;
 Lcom/android/server/UiModeManagerService$2;
 Lcom/android/server/UiModeManagerService$3;
 Lcom/android/server/UiModeManagerService$4;
 Lcom/android/server/UiModeManagerService$5;
 Lcom/android/server/UiModeManagerService$6;
+Lcom/android/server/UiModeManagerService$7;
+Lcom/android/server/UiModeManagerService$8;
+Lcom/android/server/UiModeManagerService$9;
 Lcom/android/server/UiModeManagerService$LocalService;
+Lcom/android/server/UiModeManagerService$Shell;
 Lcom/android/server/UiModeManagerService$UserSwitchedReceiver;
 Lcom/android/server/UiModeManagerService;
 Lcom/android/server/UiThread;
@@ -18475,9 +40364,14 @@
 Lcom/android/server/VibratorService$3;
 Lcom/android/server/VibratorService$4;
 Lcom/android/server/VibratorService$5;
+Lcom/android/server/VibratorService$ExternalVibratorService$ExternalVibrationDeathRecipient;
 Lcom/android/server/VibratorService$ExternalVibratorService;
 Lcom/android/server/VibratorService$ScaleLevel;
 Lcom/android/server/VibratorService$SettingsObserver;
+Lcom/android/server/VibratorService$VibrateThread;
+Lcom/android/server/VibratorService$Vibration;
+Lcom/android/server/VibratorService$VibrationInfo;
+Lcom/android/server/VibratorService$VibratorShellCommand;
 Lcom/android/server/VibratorService;
 Lcom/android/server/Watchdog$1;
 Lcom/android/server/Watchdog$BinderThreadMonitor;
@@ -18492,85 +40386,241 @@
 Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver$UEventInfo;
 Lcom/android/server/WiredAccessoryManager$WiredAccessoryObserver;
 Lcom/android/server/WiredAccessoryManager;
+Lcom/android/server/ZramWriteback$1;
 Lcom/android/server/ZramWriteback;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$1$49HMbWlhAK8DBFFzhu5wH_-EQaM;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$1$J4pGG-UiTxhxH1VLNWBa7KLTh48;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4A2E7YnYuU3-mDj4eBvmxi8PEpA;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$4X8DTUSf9fNVgqvhoZcnlny0VlE;
 Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$5vwr6qV-eqdCr73CeDmVnsJlZHM;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$CNt8wbTQCYcsUnUkUCQHtKqr-tY;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$6XNVrFpXInVgMbrXSPlonG0skYM;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BB160fzAC7iBy5jJ5MWjuD3DeD8;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$BX2CMQr5jU9WhPYx7Aaae4zgxf4;
 Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$Gu-W_dQ2mWyy8l4tm19TzFxGbeM;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$K4sS36agT2_B03tVUTy8mldugxY;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$RFkfb_W9wnTTs_gy8Dg3k2uQOYQ;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$_rvRsbhZRBJitXrpMqI0NptLUa8;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$INvzqadejxj-XxBJAa177LZwIDQ;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$LBcFUTzQoOf533NwD2ZIwFqFJYg;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$NCeV24lEcO5W6ZZr1GqGK-ylU9g;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$PPQodQ1oFD7RLj5c4axXJBoCbR8;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ZdgJH-YGWmUCqtsR2uYpejEExzw;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$bNCuysjTCG2afhYMHuqu25CfY5g;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$dXg1wGgz3WXjndENJncsiVH2imE;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$eskhivxnBVBZCLZ0d5oWdhYVtfs;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$fHb6jcCpfXvxrnf-dXJngiIFuoo;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$he8-7PL6YxfY9L7x0CLg6DATNxg;
 Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$heq1MRdQjg8BGWFbpV3PEpnDVcg;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mAPLBShddfLlktd9Q8jVo04VVXo;
-Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$w0ifSldCn8nADYgU7v1foSdmfe0;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$iCLwAtq-px2o256DhoyM-0_S-Uc;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$ifdWn5KwwehtrFVplnBr1oDsgh8;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$j2QeVWedl6n56ZCByHdIyOcYsHw;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$lq56M7RYVQWgwiIOT5tX2Qhveeg;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$luI_C3QiJWsM08i8m3lx484SyyY;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$mu7O1RAujG8e8HXPylcZ6hd_kNU;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$pRLk3Ywnu7AW5-78BwVI1fvOwX0;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$vOsKAMFlSRp8W9N5pJiqJ7ToRQA;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$zXJtauhUptSkQJSF-M55-grAVbo;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityManagerService$zwk7AhIUkEPGJ4AonEk70rQ3Bl4;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityServiceConnection$ASP9bmSvpeD7ZE_uJ8sm-9hCwiU;
+Lcom/android/server/accessibility/-$$Lambda$AccessibilityWindowManager$Ky3Q5Gg_NEaXwBlFb7wxyjIUci0;
+Lcom/android/server/accessibility/-$$Lambda$X8i00nfnUx_qUoIgZixkfu6ddSY;
+Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$1;
 Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection$SystemSupport;
 Lcom/android/server/accessibility/AbstractAccessibilityServiceConnection;
+Lcom/android/server/accessibility/AccessibilityInputFilter;
 Lcom/android/server/accessibility/AccessibilityManagerService$1;
 Lcom/android/server/accessibility/AccessibilityManagerService$2;
+Lcom/android/server/accessibility/AccessibilityManagerService$3;
+Lcom/android/server/accessibility/AccessibilityManagerService$4;
 Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityContentObserver;
 Lcom/android/server/accessibility/AccessibilityManagerService$AccessibilityDisplayListener;
 Lcom/android/server/accessibility/AccessibilityManagerService$Client;
+Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge$1;
+Lcom/android/server/accessibility/AccessibilityManagerService$InteractionBridge;
 Lcom/android/server/accessibility/AccessibilityManagerService$Lifecycle;
 Lcom/android/server/accessibility/AccessibilityManagerService$MainHandler;
-Lcom/android/server/accessibility/AccessibilityManagerService$RemoteAccessibilityConnection;
-Lcom/android/server/accessibility/AccessibilityManagerService$SecurityPolicy;
-Lcom/android/server/accessibility/AccessibilityManagerService$UserState;
 Lcom/android/server/accessibility/AccessibilityManagerService;
+Lcom/android/server/accessibility/AccessibilitySecurityPolicy$AccessibilityUserManager;
+Lcom/android/server/accessibility/AccessibilitySecurityPolicy;
 Lcom/android/server/accessibility/AccessibilityServiceConnection;
+Lcom/android/server/accessibility/AccessibilityShellCommand;
+Lcom/android/server/accessibility/AccessibilityUserState$ServiceInfoChangeListener;
+Lcom/android/server/accessibility/AccessibilityUserState;
+Lcom/android/server/accessibility/AccessibilityWindowManager$AccessibilityEventSender;
+Lcom/android/server/accessibility/AccessibilityWindowManager$DisplayWindowsObserver;
+Lcom/android/server/accessibility/AccessibilityWindowManager$RemoteAccessibilityConnection;
+Lcom/android/server/accessibility/AccessibilityWindowManager;
+Lcom/android/server/accessibility/BaseEventStreamTransformation;
+Lcom/android/server/accessibility/EventStreamTransformation;
 Lcom/android/server/accessibility/FingerprintGestureDispatcher$FingerprintGestureClient;
-Lcom/android/server/accessibility/GlobalActionPerformer;
+Lcom/android/server/accessibility/FingerprintGestureDispatcher;
 Lcom/android/server/accessibility/KeyEventDispatcher$KeyEventFilter;
+Lcom/android/server/accessibility/KeyEventDispatcher;
+Lcom/android/server/accessibility/MagnificationController;
+Lcom/android/server/accessibility/MotionEventInjector;
+Lcom/android/server/accessibility/SystemActionPerformer$SystemActionsChangedListener;
+Lcom/android/server/accessibility/SystemActionPerformer;
 Lcom/android/server/accessibility/UiAutomationManager$1;
+Lcom/android/server/accessibility/UiAutomationManager$UiAutomationService;
 Lcom/android/server/accessibility/UiAutomationManager;
+Lcom/android/server/accessibility/magnification/WindowMagnificationManager;
+Lcom/android/server/accounts/-$$Lambda$AccountManagerService$b-wmW_X7TIC2Bc_zEKaPtyELmHY;
 Lcom/android/server/accounts/-$$Lambda$AccountManagerService$c6GExIY3Vh2fORdBziuAPJbExac;
+Lcom/android/server/accounts/-$$Lambda$AccountManagerService$lqbNdAUKUSipmpqby9oIO8JlNTQ;
+Lcom/android/server/accounts/-$$Lambda$AccountManagerService$nCdu9dc3c8qBwJIwS0ZQk2waXfY;
+Lcom/android/server/accounts/-$$Lambda$AccountManagerService$ncg6hlXg7I0Ee1EZqbXw8fQH9bY;
+Lcom/android/server/accounts/AccountAuthenticatorCache$1;
 Lcom/android/server/accounts/AccountAuthenticatorCache$MySerializer;
 Lcom/android/server/accounts/AccountAuthenticatorCache;
+Lcom/android/server/accounts/AccountManagerBackupHelper;
 Lcom/android/server/accounts/AccountManagerService$1$1;
+Lcom/android/server/accounts/AccountManagerService$10;
+Lcom/android/server/accounts/AccountManagerService$11;
+Lcom/android/server/accounts/AccountManagerService$12;
+Lcom/android/server/accounts/AccountManagerService$13;
+Lcom/android/server/accounts/AccountManagerService$14;
+Lcom/android/server/accounts/AccountManagerService$15;
+Lcom/android/server/accounts/AccountManagerService$16;
+Lcom/android/server/accounts/AccountManagerService$17;
+Lcom/android/server/accounts/AccountManagerService$18;
+Lcom/android/server/accounts/AccountManagerService$19;
 Lcom/android/server/accounts/AccountManagerService$1;
+Lcom/android/server/accounts/AccountManagerService$1LogRecordTask;
 Lcom/android/server/accounts/AccountManagerService$2;
 Lcom/android/server/accounts/AccountManagerService$3;
 Lcom/android/server/accounts/AccountManagerService$4;
+Lcom/android/server/accounts/AccountManagerService$5;
+Lcom/android/server/accounts/AccountManagerService$6;
+Lcom/android/server/accounts/AccountManagerService$7;
+Lcom/android/server/accounts/AccountManagerService$8;
+Lcom/android/server/accounts/AccountManagerService$9;
 Lcom/android/server/accounts/AccountManagerService$AccountManagerInternalImpl;
+Lcom/android/server/accounts/AccountManagerService$GetAccountsByTypeAndFeatureSession;
 Lcom/android/server/accounts/AccountManagerService$Injector;
 Lcom/android/server/accounts/AccountManagerService$Lifecycle;
 Lcom/android/server/accounts/AccountManagerService$MessageHandler;
+Lcom/android/server/accounts/AccountManagerService$NotificationId;
+Lcom/android/server/accounts/AccountManagerService$RemoveAccountSession;
+Lcom/android/server/accounts/AccountManagerService$Session;
+Lcom/android/server/accounts/AccountManagerService$StartAccountSession;
+Lcom/android/server/accounts/AccountManagerService$TestFeaturesSession;
 Lcom/android/server/accounts/AccountManagerService$UserAccounts;
 Lcom/android/server/accounts/AccountManagerService;
+Lcom/android/server/accounts/AccountManagerServiceShellCommand;
+Lcom/android/server/accounts/AccountsDb$1;
+Lcom/android/server/accounts/AccountsDb$CeDatabaseHelper;
 Lcom/android/server/accounts/AccountsDb$DeDatabaseHelper;
+Lcom/android/server/accounts/AccountsDb$PreNDatabaseHelper;
 Lcom/android/server/accounts/AccountsDb;
+Lcom/android/server/accounts/CryptoHelper;
 Lcom/android/server/accounts/IAccountAuthenticatorCache;
+Lcom/android/server/accounts/TokenCache$Key;
+Lcom/android/server/accounts/TokenCache$TokenLruCache$Evictor;
 Lcom/android/server/accounts/TokenCache$TokenLruCache;
+Lcom/android/server/accounts/TokenCache$Value;
 Lcom/android/server/accounts/TokenCache;
+Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler$1;
 Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingHandler;
 Lcom/android/server/adb/AdbDebuggingManager$AdbDebuggingThread;
 Lcom/android/server/adb/AdbDebuggingManager$AdbKeyStore;
 Lcom/android/server/adb/AdbDebuggingManager;
+Lcom/android/server/adb/AdbService$1;
 Lcom/android/server/adb/AdbService$AdbHandler;
 Lcom/android/server/adb/AdbService$AdbManagerInternalImpl;
 Lcom/android/server/adb/AdbService$AdbSettingsObserver;
 Lcom/android/server/adb/AdbService$Lifecycle;
 Lcom/android/server/adb/AdbService;
+Lcom/android/server/am/-$$Lambda$4tnGzleKvf7Rqiq5-S70R8ME1NY;
 Lcom/android/server/am/-$$Lambda$5hokEl5hcign5FXeGZdl53qh2zg;
+Lcom/android/server/am/-$$Lambda$7toxTvZDSEytL0rCkoEfGilPDWM;
+Lcom/android/server/am/-$$Lambda$8usf6utdff9V7wtRbjhmjrLif-w;
+Lcom/android/server/am/-$$Lambda$ActiveServices$0WENDXD5vmtSS6wlQjMNWJNWoHA;
+Lcom/android/server/am/-$$Lambda$ActivityManagerConstants$PMWuxGp7r583rXDgas6HMH5Lce8;
 Lcom/android/server/am/-$$Lambda$ActivityManagerService$2afaFERxNQEnSdevJxY5plp1fS4;
-Lcom/android/server/am/-$$Lambda$ActivityManagerService$30I5N5ZS7997YvRBJqVkTZMPd6M;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$5$BegFiGFfKLYS7VRmiWluczgOC5k;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$Fbs0C_KjUpE0imxFftpdBfeTJpg;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$LocalService$4G_pzvRw9NHuN5SCKHrZRQVBK5M;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$LocalService$4TwTxLxI0dJRfxaapqjRJ92DO9c;
 Lcom/android/server/am/-$$Lambda$ActivityManagerService$Z3G4KWA2tlTOhqhFtAvVby1SjyQ;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$dLQ66dH4nIti4hweaVJTGHj2tMU;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$eFxS8Z-_MXzP9a8ro45rBMHy3bk;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$edxAPEC3muKzJql6X4RKsKcgmvo;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$fS1-94oynjazWAe2OWfx5p-HXUQ;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$qLjSm9VDxOdlZwBZT-qc8uDXM_o;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$sgcouPmrltwdDp2DCHkd89xkLZ4;
+Lcom/android/server/am/-$$Lambda$ActivityManagerService$w5jCshLsk1jfv4UDTmEfq_HU0OQ;
+Lcom/android/server/am/-$$Lambda$AppErrors$1aFX_-j-MSc0clpKk9XdlBZz9lU;
+Lcom/android/server/am/-$$Lambda$AppErrors$Ziph9zXnTzhEV6frMYJe_IEvvfY;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$-wbGBZV07-3wEpce4OUXCzlzxWg;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$4HqbaQvHgSDp9GydRzwaw14dV_s;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$8RmxBGb9aEc0feL90j1NR9guFlc;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$RLhS-SmRlSPkWGNtIw3PWkm5huk;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UGYjMlfjNQLNoNs9jB0lra88GDI;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoContainer$UJh7jNVpjR6lqMYBGte4jdTlSE0;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$AppExitInfoExternalSource$lEw-U7omc69c99jUnvgjDvhihE8;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$DgW09rn1xYgswF2bIX-IptVkNqg;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$LrV5fgRdrB2bonNSZZAbUAXpryI;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$M7pmR3pU58DetrzQsI3M2-go5XU;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$S0H7kzxKRRmRG78Gu7uuZcjMtTs;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$UhdolDh03szrz0tHY4ggJ2c_9IQ;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$Yc6vluAEWPBi2TSflPrFu351ztU;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$c5_NOVUCRvAgISOc2oOk7DGF5Vc;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$e3RqpmVvDTV44W327x1Bbxd4Iqc;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$eDSFQ6mRzgNt-3VDBtVv4kawCFk;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$qwGPfYnVeHBuD9CPCUYvgLTIWQA;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$ykvdMbwZILd9oyb6cyIe3GfomwU;
+Lcom/android/server/am/-$$Lambda$AppExitInfoTracker$ytE2dVTxZ9YlyeVmm3AXBFxNqAw;
+Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$MJXTdtPzBwRCdTjCDCE77VXPHBk;
 Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ML8sXrbYk0MflPvsY2cfCYlcU0w;
 Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$PpNEY15dspg9oLlkg1OsyjrPTqw;
 Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$ddVY5lmqswnSjXppAxPTOHbuzzQ;
 Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$r3x3xYmhrLG8kgeNVPXl5EILHwU;
+Lcom/android/server/am/-$$Lambda$BatteryExternalStatsWorker$xR3yCbbVfCo3oq_xPiH7j5l5uac;
 Lcom/android/server/am/-$$Lambda$BatteryStatsService$ZxbqtJ7ozYmzYFkkNV3m_QRd0Sk;
 Lcom/android/server/am/-$$Lambda$BatteryStatsService$rRONgIFHr4sujxPESRmo9P5RJ6w;
-Lcom/android/server/am/-$$Lambda$BroadcastQueue$UYhESkevIwvEc0Mcevy6z7vfzgY;
+Lcom/android/server/am/-$$Lambda$BroadcastQueue$-Rc4kAs41vmqWweLcJR0YLxZ0dM;
+Lcom/android/server/am/-$$Lambda$CoreSettingsObserver$IEGGdL9JzvkvDo5ePJ2OAMEVAVs;
+Lcom/android/server/am/-$$Lambda$F5A5p7evh-7maWNW7K80NbTRjbM;
 Lcom/android/server/am/-$$Lambda$HKoBBTwYfMTyX1rzuzxIXu0s2cc;
-Lcom/android/server/am/-$$Lambda$OomAdjProfiler$5x1ooCPxPmlzbXvtcEuYDu_6Uz4;
+Lcom/android/server/am/-$$Lambda$OomAdjProfiler$oLbVP84ACmxo_1QlnwlSuhi91W4;
+Lcom/android/server/am/-$$Lambda$OomAdjuster$OVkqAAacT5-taN3pgDzyZj3Ymvk;
+Lcom/android/server/am/-$$Lambda$PendingIntentController$pDmmJDvS20vSAAXh9qdzbN0P8N0;
+Lcom/android/server/am/-$$Lambda$PendingIntentController$sPmaborOkBSSEP2wiimxXw-eYDQ;
 Lcom/android/server/am/-$$Lambda$PendingIntentRecord$hlEHdgdG_SS5n3v7IRr7e6QZgLQ;
-Lcom/android/server/am/-$$Lambda$ProcessList$Clv-1gpwGcZ-lQ1Ghdh2VzSdPZ4;
-Lcom/android/server/am/-$$Lambda$SettingsToPropertiesMapper$Rzo06OjarvWLxZlB1l32KTp3emA;
-Lcom/android/server/am/-$$Lambda$UserController$O8GIT-HtdCM0CCjYajdW2AFcrWQ;
+Lcom/android/server/am/-$$Lambda$PersistentConnection$rkvbuN0FQdQUv1hqSwDvmwwh6Uk;
+Lcom/android/server/am/-$$Lambda$ProcessList$-WIJmGtIk6c8jVr9HT6EdC2Qnzg;
+Lcom/android/server/am/-$$Lambda$ProcessList$hjUwwFAIhoht4KRKnKeUve_Kcto;
+Lcom/android/server/am/-$$Lambda$ProcessList$vtq7LF5jIHO4t5NE03c8g7BT7Jc;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$1qn6-pj5yWgiSnKANZpVz3gwd30;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$2DImTokd0AWNTECl3WgBxJkOOqs;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$Cb3MKja7_iTlaFQrvQTzPvLyoT8;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$Pxxn90rYyxqzAxLE-3U2iU5qX6M;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$W-AQD6Azm5daJOusD9r1R26WGBo;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$pOUTBc6k6s3-ZuZYLsjopLU9JWw;
+Lcom/android/server/am/-$$Lambda$ProcessRecord$ErrorDialogController$yEOzfx-KIitetidLDudmF3WIN9Y;
+Lcom/android/server/am/-$$Lambda$ServiceRecord$LibDrdWU9t_vgStZ6swd0FNzHXc;
+Lcom/android/server/am/-$$Lambda$SettingsToPropertiesMapper$oP9A7vTPRZcZgLdy43KKEveF4zQ;
+Lcom/android/server/am/-$$Lambda$UserController$2SW3yysxmLLBBPZQ1P-qHVFL46g;
+Lcom/android/server/am/-$$Lambda$UserController$5-I-mDc6HrA5Dg_nAZlw5yKDAA0;
+Lcom/android/server/am/-$$Lambda$UserController$G0WJmqt4X_QG30fRlvXobn18mrE;
+Lcom/android/server/am/-$$Lambda$UserController$I0p0bKjuvsSPLZB71mKQFfdUjZ4;
+Lcom/android/server/am/-$$Lambda$UserController$Injector$MYTLl7MOQKjyMJknWdxPeBLoPCc;
+Lcom/android/server/am/-$$Lambda$UserController$K71HFCIuD0iCwrDTKYnIUDyAeWg;
+Lcom/android/server/am/-$$Lambda$UserController$QAvDazb_bK3Biqbrt7rtbU_i_EQ;
+Lcom/android/server/am/-$$Lambda$UserController$TdNZVHdOPNd598N3S_XTdc7pt7o;
+Lcom/android/server/am/-$$Lambda$UserController$WUEqPFGA7TEsxb4dlgZAmMu5O-s;
+Lcom/android/server/am/-$$Lambda$UserController$avTAix2Aub5zSKSBBofMYY2qXyk;
+Lcom/android/server/am/-$$Lambda$UserController$f2F3ceAG58MOmBJm9cmZ7HhYcmE;
+Lcom/android/server/am/-$$Lambda$UserController$fU2mcMYCcCOsyUuGHKIUB-nSo1Y;
+Lcom/android/server/am/-$$Lambda$UserController$stQk1028ON105v_u-VMykVjcxLk;
 Lcom/android/server/am/-$$Lambda$Y_KRxxoOXfy-YceuDG7WHd46Y_I;
+Lcom/android/server/am/-$$Lambda$cC4f0pNQX9_D9f8AXLmKk2sArGY;
 Lcom/android/server/am/-$$Lambda$gATL8uvTPRd405IfefK1RL9bNqA;
+Lcom/android/server/am/-$$Lambda$nvO8eEA3_tju6oGhhJ2BoQfYghg;
+Lcom/android/server/am/-$$Lambda$uR36okKz1QISfNZZ4VonU8JRVDE;
+Lcom/android/server/am/-$$Lambda$wajKhQOjpilT0K4j-1sLOJKYftw;
+Lcom/android/server/am/-$$Lambda$yk1Ms9fVlF6PvprMwF2rru-dw4Q;
 Lcom/android/server/am/ActiveInstrumentation;
 Lcom/android/server/am/ActiveServices$1;
 Lcom/android/server/am/ActiveServices$2;
+Lcom/android/server/am/ActiveServices$3;
 Lcom/android/server/am/ActiveServices$4;
 Lcom/android/server/am/ActiveServices$ActiveForegroundApp;
 Lcom/android/server/am/ActiveServices$ForcedStandbyListener;
@@ -18583,7 +40633,10 @@
 Lcom/android/server/am/ActivityManagerConstants$1;
 Lcom/android/server/am/ActivityManagerConstants;
 Lcom/android/server/am/ActivityManagerService$10;
+Lcom/android/server/am/ActivityManagerService$11;
 Lcom/android/server/am/ActivityManagerService$12;
+Lcom/android/server/am/ActivityManagerService$13;
+Lcom/android/server/am/ActivityManagerService$14;
 Lcom/android/server/am/ActivityManagerService$15;
 Lcom/android/server/am/ActivityManagerService$16;
 Lcom/android/server/am/ActivityManagerService$17;
@@ -18593,10 +40646,14 @@
 Lcom/android/server/am/ActivityManagerService$20;
 Lcom/android/server/am/ActivityManagerService$21;
 Lcom/android/server/am/ActivityManagerService$22;
+Lcom/android/server/am/ActivityManagerService$23;
+Lcom/android/server/am/ActivityManagerService$24;
+Lcom/android/server/am/ActivityManagerService$25;
 Lcom/android/server/am/ActivityManagerService$2;
 Lcom/android/server/am/ActivityManagerService$3;
 Lcom/android/server/am/ActivityManagerService$4;
 Lcom/android/server/am/ActivityManagerService$5;
+Lcom/android/server/am/ActivityManagerService$6;
 Lcom/android/server/am/ActivityManagerService$7;
 Lcom/android/server/am/ActivityManagerService$8;
 Lcom/android/server/am/ActivityManagerService$9;
@@ -18609,6 +40666,7 @@
 Lcom/android/server/am/ActivityManagerService$GraphicsBinder;
 Lcom/android/server/am/ActivityManagerService$HiddenApiSettings;
 Lcom/android/server/am/ActivityManagerService$Identity;
+Lcom/android/server/am/ActivityManagerService$ImportanceToken;
 Lcom/android/server/am/ActivityManagerService$Injector;
 Lcom/android/server/am/ActivityManagerService$IntentFirewallInterface;
 Lcom/android/server/am/ActivityManagerService$ItemMatcher;
@@ -18625,25 +40683,52 @@
 Lcom/android/server/am/ActivityManagerService$PendingTempWhitelist;
 Lcom/android/server/am/ActivityManagerService$PermissionController;
 Lcom/android/server/am/ActivityManagerService$PidMap;
+Lcom/android/server/am/ActivityManagerService$ProcStatsRunnable;
 Lcom/android/server/am/ActivityManagerService$ProcessChangeItem;
 Lcom/android/server/am/ActivityManagerService$ProcessInfoService;
 Lcom/android/server/am/ActivityManagerService$ProfileData;
+Lcom/android/server/am/ActivityManagerService$RecordPssRunnable;
+Lcom/android/server/am/ActivityManagerService$ShellDelegate;
+Lcom/android/server/am/ActivityManagerService$StartActivityRunnable;
 Lcom/android/server/am/ActivityManagerService$UiHandler;
 Lcom/android/server/am/ActivityManagerService$UidObserverRegistration;
 Lcom/android/server/am/ActivityManagerService;
+Lcom/android/server/am/ActivityManagerShellCommand$1;
+Lcom/android/server/am/ActivityManagerShellCommand$IntentReceiver;
+Lcom/android/server/am/ActivityManagerShellCommand;
 Lcom/android/server/am/AppBindRecord;
-Lcom/android/server/am/CachedAppOptimizer$1;
-Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;
-Lcom/android/server/am/CachedAppOptimizer;
+Lcom/android/server/am/AppCompactor$1;
+Lcom/android/server/am/AppCompactor$2;
+Lcom/android/server/am/AppCompactor$LastCompactionStats;
+Lcom/android/server/am/AppCompactor$MemCompactionHandler;
+Lcom/android/server/am/AppCompactor$PropertyChangedCallbackForTest;
+Lcom/android/server/am/AppCompactor;
+Lcom/android/server/am/AppErrorDialog$1;
 Lcom/android/server/am/AppErrorDialog$Data;
+Lcom/android/server/am/AppErrorDialog;
 Lcom/android/server/am/AppErrorResult;
 Lcom/android/server/am/AppErrors$BadProcessInfo;
 Lcom/android/server/am/AppErrors;
+Lcom/android/server/am/AppExitInfoTracker$1;
+Lcom/android/server/am/AppExitInfoTracker$2;
+Lcom/android/server/am/AppExitInfoTracker$AppExitInfoContainer;
+Lcom/android/server/am/AppExitInfoTracker$AppExitInfoExternalSource;
+Lcom/android/server/am/AppExitInfoTracker$IsolatedUidRecords;
+Lcom/android/server/am/AppExitInfoTracker$KillHandler;
+Lcom/android/server/am/AppExitInfoTracker$LmkdKillListener;
+Lcom/android/server/am/AppExitInfoTracker;
 Lcom/android/server/am/AppNotRespondingDialog$Data;
+Lcom/android/server/am/AppNotRespondingDialog;
 Lcom/android/server/am/AppTimeTracker;
+Lcom/android/server/am/AppWaitingForDebuggerDialog;
+Lcom/android/server/am/AssistDataRequester$AssistDataRequesterCallbacks;
+Lcom/android/server/am/AssistDataRequester;
 Lcom/android/server/am/BackupRecord;
+Lcom/android/server/am/BaseErrorDialog$1;
+Lcom/android/server/am/BaseErrorDialog;
 Lcom/android/server/am/BatteryExternalStatsWorker$1;
 Lcom/android/server/am/BatteryExternalStatsWorker$2;
+Lcom/android/server/am/BatteryExternalStatsWorker$3;
 Lcom/android/server/am/BatteryExternalStatsWorker;
 Lcom/android/server/am/BatteryStatsService$1;
 Lcom/android/server/am/BatteryStatsService$LocalService;
@@ -18653,6 +40738,8 @@
 Lcom/android/server/am/BroadcastConstants;
 Lcom/android/server/am/BroadcastDispatcher$1;
 Lcom/android/server/am/BroadcastDispatcher$2;
+Lcom/android/server/am/BroadcastDispatcher$Deferrals;
+Lcom/android/server/am/BroadcastDispatcher$Dumper;
 Lcom/android/server/am/BroadcastDispatcher;
 Lcom/android/server/am/BroadcastFilter;
 Lcom/android/server/am/BroadcastQueue$1;
@@ -18665,20 +40752,39 @@
 Lcom/android/server/am/BroadcastStats$PackageEntry;
 Lcom/android/server/am/BroadcastStats$ViolationEntry;
 Lcom/android/server/am/BroadcastStats;
+Lcom/android/server/am/BugReportHandlerUtil;
+Lcom/android/server/am/CachedAppOptimizer$1;
+Lcom/android/server/am/CachedAppOptimizer$2;
+Lcom/android/server/am/CachedAppOptimizer$FreezeHandler;
+Lcom/android/server/am/CachedAppOptimizer$LastCompactionStats;
+Lcom/android/server/am/CachedAppOptimizer$MemCompactionHandler;
+Lcom/android/server/am/CachedAppOptimizer$PropertyChangedCallbackForTest;
+Lcom/android/server/am/CachedAppOptimizer;
+Lcom/android/server/am/CarUserSwitchingDialog;
 Lcom/android/server/am/ConnectionRecord;
 Lcom/android/server/am/ContentProviderConnection;
+Lcom/android/server/am/ContentProviderRecord$ExternalProcessHandle;
 Lcom/android/server/am/ContentProviderRecord;
+Lcom/android/server/am/CoreSettingsObserver$DeviceConfigEntry;
 Lcom/android/server/am/CoreSettingsObserver;
-Lcom/android/server/am/DumpHeapProvider;
 Lcom/android/server/am/EventLogTags;
 Lcom/android/server/am/HealthStatsBatteryStatsWriter;
+Lcom/android/server/am/HostingRecord;
 Lcom/android/server/am/InstrumentationReporter$MyThread;
 Lcom/android/server/am/InstrumentationReporter$Report;
 Lcom/android/server/am/InstrumentationReporter;
 Lcom/android/server/am/IntentBindRecord;
+Lcom/android/server/am/LmkdConnection$1;
+Lcom/android/server/am/LmkdConnection$LmkdConnectionListener;
+Lcom/android/server/am/LmkdConnection;
+Lcom/android/server/am/LowMemDetector$1;
+Lcom/android/server/am/LowMemDetector$LowMemThread;
+Lcom/android/server/am/LowMemDetector;
 Lcom/android/server/am/MemoryStatUtil$MemoryStat;
 Lcom/android/server/am/MemoryStatUtil;
+Lcom/android/server/am/NativeCrashListener$NativeCrashReporter;
 Lcom/android/server/am/NativeCrashListener;
+Lcom/android/server/am/OomAdjProfiler$1;
 Lcom/android/server/am/OomAdjProfiler$CpuTimes;
 Lcom/android/server/am/OomAdjProfiler;
 Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;
@@ -18687,37 +40793,65 @@
 Lcom/android/server/am/PendingIntentRecord$Key;
 Lcom/android/server/am/PendingIntentRecord;
 Lcom/android/server/am/PendingTempWhitelists;
+Lcom/android/server/am/PersistentConnection$1;
 Lcom/android/server/am/PersistentConnection;
+Lcom/android/server/am/PreBootBroadcaster$1;
+Lcom/android/server/am/PreBootBroadcaster;
+Lcom/android/server/am/ProcessList$1;
+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$LmkdKillListener;
 Lcom/android/server/am/ProcessList$MyProcessMap;
 Lcom/android/server/am/ProcessList$ProcStateMemTracker;
 Lcom/android/server/am/ProcessList;
 Lcom/android/server/am/ProcessMemInfo;
+Lcom/android/server/am/ProcessRecord$ErrorDialogController;
 Lcom/android/server/am/ProcessRecord$PackageList;
 Lcom/android/server/am/ProcessRecord;
 Lcom/android/server/am/ProcessStatsService$1;
 Lcom/android/server/am/ProcessStatsService$2;
 Lcom/android/server/am/ProcessStatsService$3;
+Lcom/android/server/am/ProcessStatsService$4;
 Lcom/android/server/am/ProcessStatsService;
 Lcom/android/server/am/ProviderMap;
 Lcom/android/server/am/ReceiverList;
+Lcom/android/server/am/ServiceRecord$1;
+Lcom/android/server/am/ServiceRecord$2;
+Lcom/android/server/am/ServiceRecord$3;
 Lcom/android/server/am/ServiceRecord$StartItem;
 Lcom/android/server/am/ServiceRecord;
 Lcom/android/server/am/SettingsToPropertiesMapper$1;
 Lcom/android/server/am/SettingsToPropertiesMapper;
+Lcom/android/server/am/StrictModeViolationDialog;
 Lcom/android/server/am/UidRecord$ChangeItem;
 Lcom/android/server/am/UidRecord;
+Lcom/android/server/am/UserController$1;
+Lcom/android/server/am/UserController$2;
+Lcom/android/server/am/UserController$3;
+Lcom/android/server/am/UserController$4;
+Lcom/android/server/am/UserController$5;
+Lcom/android/server/am/UserController$6;
+Lcom/android/server/am/UserController$7;
+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$KeyEvictedCallback;
 Lcom/android/server/am/UserState;
+Lcom/android/server/am/UserSwitchingDialog;
+Lcom/android/server/appbinding/-$$Lambda$AppBindingService$C9KbqX5cmsR3luJhFKt2Gpj0uLc;
 Lcom/android/server/appbinding/-$$Lambda$AppBindingService$D_3boeCn8eAANOp2ZDk6OC2rNaI;
+Lcom/android/server/appbinding/-$$Lambda$AppBindingService$_RrDLXlhUGfI3nzAdSavPUgy7uo;
+Lcom/android/server/appbinding/-$$Lambda$AppBindingService$ecbTIkvVpOcufbjzWWh2_dn3hSo;
 Lcom/android/server/appbinding/-$$Lambda$xkEFYM78dwFMyAjWJXkB7AxgA2c;
 Lcom/android/server/appbinding/AppBindingConstants;
 Lcom/android/server/appbinding/AppBindingService$1;
 Lcom/android/server/appbinding/AppBindingService$2;
+Lcom/android/server/appbinding/AppBindingService$AppServiceConnection;
 Lcom/android/server/appbinding/AppBindingService$Injector;
 Lcom/android/server/appbinding/AppBindingService$Lifecycle;
 Lcom/android/server/appbinding/AppBindingService;
@@ -18725,39 +40859,128 @@
 Lcom/android/server/appbinding/finders/-$$Lambda$CarrierMessagingClientServiceFinder$HEVyQ3IEZ8Eseze74Vyp3NHEREg;
 Lcom/android/server/appbinding/finders/AppServiceFinder;
 Lcom/android/server/appbinding/finders/CarrierMessagingClientServiceFinder;
+Lcom/android/server/appop/-$$Lambda$6fg-14Ev2L834_Mi1dl7XNuM-aI;
+Lcom/android/server/appop/-$$Lambda$9PbhNRcJKpFejdnfSDhPa_VHrMY;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$6bQNsBhQYyNmBpWP1n_r2kLsLYY;
 Lcom/android/server/appop/-$$Lambda$AppOpsService$AfBLuTvVESlqN91IyRX84hMV5nE;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$ClientRestrictionState$uMVYManZlOG3nljcsmHU5SaC48k;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$FYLTtxqrHmv8Y5UdZ9ybXKsSJhs;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$FeatureOp$MYCtEUxKOBmIqr2Vx8cxdcUBE8E;
 Lcom/android/server/appop/-$$Lambda$AppOpsService$GUeKjlbzT65s86vaxy5gvOajuhw;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$JHjaGTUaQHugMX7TLydyaTrbPFw;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$NDUi03ZZuuR42-RDEIQ0UELKycc;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$ac4Ra3Yhj0OQzvkaL2dLbsuLAmQ;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$gQy7GOuCV6GbjQtdNhNG6xld8I4;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$mWtZBFm5Ggi69Tx6HVKXLYiPWt4;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$mfUWTdGevxEoIUv1cEPEFG0qAaI;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$vmE_L3936m2CQ4j7sCtdACCvHGk;
+Lcom/android/server/appop/-$$Lambda$AppOpsService$zN6prp9KCBI96qJ_QVmqGh-kpB8;
+Lcom/android/server/appop/-$$Lambda$HistoricalRegistry$dJrtb4M71TzV6sx9vPEImQG_akU;
+Lcom/android/server/appop/-$$Lambda$ztf_FWUCLkjfRoVMTTWb7ZsjhNk;
+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$5;
+Lcom/android/server/appop/AppOpsService$6;
 Lcom/android/server/appop/AppOpsService$ActiveCallback;
 Lcom/android/server/appop/AppOpsService$AppOpsManagerInternalImpl;
+Lcom/android/server/appop/AppOpsService$ChangeRec;
 Lcom/android/server/appop/AppOpsService$ClientRestrictionState;
 Lcom/android/server/appop/AppOpsService$ClientState;
 Lcom/android/server/appop/AppOpsService$Constants;
+Lcom/android/server/appop/AppOpsService$FeatureOp;
+Lcom/android/server/appop/AppOpsService$InProgressStartOpEvent;
+Lcom/android/server/appop/AppOpsService$InProgressStartOpEventPool;
 Lcom/android/server/appop/AppOpsService$ModeCallback;
 Lcom/android/server/appop/AppOpsService$NotedCallback;
 Lcom/android/server/appop/AppOpsService$Op;
+Lcom/android/server/appop/AppOpsService$OpEventProxyInfoPool;
 Lcom/android/server/appop/AppOpsService$Ops;
-Lcom/android/server/appop/AppOpsService$Restriction;
+Lcom/android/server/appop/AppOpsService$Shell;
 Lcom/android/server/appop/AppOpsService$UidState;
 Lcom/android/server/appop/AppOpsService;
+Lcom/android/server/appop/AudioRestrictionManager$1;
+Lcom/android/server/appop/AudioRestrictionManager$Restriction;
+Lcom/android/server/appop/AudioRestrictionManager;
 Lcom/android/server/appop/HistoricalRegistry$1;
 Lcom/android/server/appop/HistoricalRegistry$Persistence;
+Lcom/android/server/appop/HistoricalRegistry$StringDumpVisitor;
 Lcom/android/server/appop/HistoricalRegistry;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$3-HMCieo6-UZfG43p_6ip1hrL0k;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$40EK4qcr-rG55ENTthOaXAXWDA4;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$4yDhFef-19aMlJ-Y7O6RdjSAvnk;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$NmwmTMZXXS4S7viVNKzU2genXA8;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$gV-NT40YbIbIqIJKiNGjlZGVJjc;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$s2vrDOHz5x1TW_6jMihxp1iCAvg;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vSY20eQq5y5FXrxhhqOTcEmezTs;
+Lcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vWB3PdxOOvPr7p0_NmoqXeH8Ros;
+Lcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$9DCowUTEF8fYuBlWGxOmP5hTAWA;
+Lcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$Ikwq62LQ8mos7hCBmykUhqvUq2Y;
+Lcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$UaZoW5Y9AD8L3ktnyw-25jtnxhA;
+Lcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$qroIh2ewx0BLP-J9XIAX2CaX8J4;
+Lcom/android/server/appprediction/AppPredictionManagerService$1;
 Lcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;
 Lcom/android/server/appprediction/AppPredictionManagerService;
+Lcom/android/server/appprediction/AppPredictionManagerServiceShellCommand;
+Lcom/android/server/appprediction/AppPredictionPerUserService;
+Lcom/android/server/appprediction/RemoteAppPredictionService$RemoteAppPredictionServiceCallbacks;
+Lcom/android/server/appprediction/RemoteAppPredictionService;
+Lcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$7z3EwuT55saMxTVomcNfb1VOVL0;
+Lcom/android/server/appwidget/-$$Lambda$AppWidgetServiceImpl$TEG8Dmf_tnBoLQ8rTg9_1sFaVu8;
 Lcom/android/server/appwidget/AppWidgetService;
 Lcom/android/server/appwidget/AppWidgetServiceImpl$1;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$2;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$3;
 Lcom/android/server/appwidget/AppWidgetServiceImpl$AppWidgetManagerLocal;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController$RestoreUpdateRecord;
 Lcom/android/server/appwidget/AppWidgetServiceImpl$BackupRestoreController;
 Lcom/android/server/appwidget/AppWidgetServiceImpl$CallbackHandler;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$Host;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$HostId;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$LoadedWidgetState;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$Provider;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$ProviderId;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$SaveStateRunnable;
 Lcom/android/server/appwidget/AppWidgetServiceImpl$SecurityPolicy;
+Lcom/android/server/appwidget/AppWidgetServiceImpl$Widget;
 Lcom/android/server/appwidget/AppWidgetServiceImpl;
+Lcom/android/server/attention/-$$Lambda$AttentionManagerService$2UthIuCIdjigpPv1U5Dxw_fo4nY;
+Lcom/android/server/attention/AttentionManagerService$1;
+Lcom/android/server/attention/AttentionManagerService$AttentionCheck;
+Lcom/android/server/attention/AttentionManagerService$AttentionCheckCache;
+Lcom/android/server/attention/AttentionManagerService$AttentionCheckCacheBuffer;
+Lcom/android/server/attention/AttentionManagerService$AttentionHandler;
+Lcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand$TestableAttentionCallbackInternal;
+Lcom/android/server/attention/AttentionManagerService$AttentionManagerServiceShellCommand;
+Lcom/android/server/attention/AttentionManagerService$BinderService;
+Lcom/android/server/attention/AttentionManagerService$LocalService;
+Lcom/android/server/attention/AttentionManagerService$ScreenStateReceiver;
+Lcom/android/server/attention/AttentionManagerService$UserState$AttentionServiceConnection;
+Lcom/android/server/attention/AttentionManagerService$UserState;
 Lcom/android/server/attention/AttentionManagerService;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$2HRlO1Fuzgf97A2Y249yqOtNAlc;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$7CtpUHI2aS8Sdar40vc2ScvU1zA;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$7s2_dtMUrYgHtM2Mpc1sS0XgWCw;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$A06w_GDNkrLVK3IhlqiuSJkZdos;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$BF-h0pJdMg-xR5-FyHERBLWDjA0;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$BMFj2tw2PdB9dFQB6gMjDjefzwg;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Jg62meZgoWI_a0zxOvpWdJWRPfI;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Kq15BolmuFXaWWabjDNQiScRxjo;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$Nads7_S1eD53QDofbK9CuYO9Fok;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$OBWGV1RNEso-eo8dzWjaFhEjC0A;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$YxgcWZ4jspoxzltUgvW9l8k40io;
+Lcom/android/server/audio/-$$Lambda$AudioDeviceInventory$_CdHBhvBDErZWSm39GafCXJiOqQ;
+Lcom/android/server/audio/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;
+Lcom/android/server/audio/AudioDeviceBroker$1;
 Lcom/android/server/audio/AudioDeviceBroker$BrokerHandler;
 Lcom/android/server/audio/AudioDeviceBroker$BrokerThread;
+Lcom/android/server/audio/AudioDeviceBroker$BtDeviceConnectionInfo;
+Lcom/android/server/audio/AudioDeviceBroker$HearingAidDeviceConnectionInfo;
 Lcom/android/server/audio/AudioDeviceBroker;
+Lcom/android/server/audio/AudioDeviceInventory$DeviceInfo;
+Lcom/android/server/audio/AudioDeviceInventory$WiredDeviceConnectionState;
 Lcom/android/server/audio/AudioDeviceInventory;
 Lcom/android/server/audio/AudioEventLogger$Event;
 Lcom/android/server/audio/AudioEventLogger$StringEvent;
@@ -18766,88 +40989,349 @@
 Lcom/android/server/audio/AudioService$2;
 Lcom/android/server/audio/AudioService$3;
 Lcom/android/server/audio/AudioService$4;
+Lcom/android/server/audio/AudioService$5;
+Lcom/android/server/audio/AudioService$AsdProxy;
 Lcom/android/server/audio/AudioService$AudioHandler;
+Lcom/android/server/audio/AudioService$AudioPolicyProxy;
 Lcom/android/server/audio/AudioService$AudioServiceBroadcastReceiver;
 Lcom/android/server/audio/AudioService$AudioServiceInternal;
 Lcom/android/server/audio/AudioService$AudioServiceUserRestrictionsListener;
 Lcom/android/server/audio/AudioService$AudioSystemThread;
+Lcom/android/server/audio/AudioService$DeviceVolumeUpdate;
+Lcom/android/server/audio/AudioService$ForceControlStreamClient;
 Lcom/android/server/audio/AudioService$Lifecycle;
-Lcom/android/server/audio/AudioService$MyDisplayStatusCallback;
+Lcom/android/server/audio/AudioService$LoadSoundEffectReply;
+Lcom/android/server/audio/AudioService$MyHdmiControlStatusChangeListenerCallback;
+Lcom/android/server/audio/AudioService$RmtSbmxFullVolDeathHandler;
+Lcom/android/server/audio/AudioService$RoleObserver;
+Lcom/android/server/audio/AudioService$SetModeDeathHandler;
 Lcom/android/server/audio/AudioService$SettingsObserver;
-Lcom/android/server/audio/AudioService$SoundPoolCallback;
-Lcom/android/server/audio/AudioService$SoundPoolListenerThread;
+Lcom/android/server/audio/AudioService$StreamVolumeCommand;
 Lcom/android/server/audio/AudioService$VolumeController;
 Lcom/android/server/audio/AudioService$VolumeStreamState;
 Lcom/android/server/audio/AudioService;
 Lcom/android/server/audio/AudioServiceEvents$ForceUseEvent;
+Lcom/android/server/audio/AudioServiceEvents$PhoneStateEvent;
+Lcom/android/server/audio/AudioServiceEvents$VolumeEvent;
+Lcom/android/server/audio/AudioServiceEvents$WiredDevConnectEvent;
+Lcom/android/server/audio/AudioSystemAdapter$AudioSystemOkAdapter;
+Lcom/android/server/audio/AudioSystemAdapter;
 Lcom/android/server/audio/BtHelper$1;
+Lcom/android/server/audio/BtHelper$BluetoothA2dpDeviceInfo;
+Lcom/android/server/audio/BtHelper$ScoClient;
 Lcom/android/server/audio/BtHelper;
+Lcom/android/server/audio/FocusRequester;
+Lcom/android/server/audio/MediaFocusControl$1;
+Lcom/android/server/audio/MediaFocusControl$2;
+Lcom/android/server/audio/MediaFocusControl$AudioFocusDeathHandler;
 Lcom/android/server/audio/MediaFocusControl;
+Lcom/android/server/audio/PlaybackActivityMonitor$1;
+Lcom/android/server/audio/PlaybackActivityMonitor$AudioAttrEvent;
+Lcom/android/server/audio/PlaybackActivityMonitor$DuckEvent;
+Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager$DuckedApp;
 Lcom/android/server/audio/PlaybackActivityMonitor$DuckingManager;
 Lcom/android/server/audio/PlaybackActivityMonitor$NewPlayerEvent;
 Lcom/android/server/audio/PlaybackActivityMonitor$PlayMonitorClient;
+Lcom/android/server/audio/PlaybackActivityMonitor$PlayerEvent;
 Lcom/android/server/audio/PlaybackActivityMonitor$PlayerOpPlayAudioEvent;
 Lcom/android/server/audio/PlaybackActivityMonitor;
 Lcom/android/server/audio/PlayerFocusEnforcer;
 Lcom/android/server/audio/RecordingActivityMonitor$RecMonitorClient;
+Lcom/android/server/audio/RecordingActivityMonitor$RecorderDeathHandler;
+Lcom/android/server/audio/RecordingActivityMonitor$RecordingEvent;
+Lcom/android/server/audio/RecordingActivityMonitor$RecordingState;
 Lcom/android/server/audio/RecordingActivityMonitor;
 Lcom/android/server/audio/RotationHelper$AudioDisplayListener;
 Lcom/android/server/audio/RotationHelper;
-Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$HTAoqR1LxaXvx4-rCytnamMG1c0;
-Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$c0YMU8G8_dPl5mAdWaXDkWrgkEw;
+Lcom/android/server/audio/SoundEffectsHelper$1;
+Lcom/android/server/audio/SoundEffectsHelper$2;
+Lcom/android/server/audio/SoundEffectsHelper$3;
+Lcom/android/server/audio/SoundEffectsHelper$4;
+Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;
+Lcom/android/server/audio/SoundEffectsHelper$Resource;
+Lcom/android/server/audio/SoundEffectsHelper$SfxHandler$1;
+Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;
+Lcom/android/server/audio/SoundEffectsHelper$SfxWorker;
+Lcom/android/server/audio/SoundEffectsHelper$SoundPoolLoader;
+Lcom/android/server/audio/SoundEffectsHelper;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$1$1-WNu3tTkxodB_LsZ7dGIlvrPN0;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$6afarI-dhLaYDLGebVyDMPu2nok;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$AjdnAnVaegTp2pojE30m5yjqZx8;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$J4rMQC_cWRd6Td3UdzyhcfhT9xc;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$PR6iUwKxXatnzjgBDLARdxaGV3A;
+Lcom/android/server/autofill/-$$Lambda$AutofillManagerService$froT1eG0jUnRoVv7cbUMLtO1bho;
+Lcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$NQQgQ63vxhPkiwOWrnwRyuYSHTM;
+Lcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$cXTbqmCb6-V5mVc5dTOipqK5X_E;
+Lcom/android/server/autofill/-$$Lambda$FieldClassificationStrategy$vGIL1YGX_9ksoSV74T7gO4fkEBE;
+Lcom/android/server/autofill/-$$Lambda$Helper$laLKWmsGqkFIaRXW5rR6_s66Vsw;
+Lcom/android/server/autofill/-$$Lambda$Helper$nK3g_oXXf8NGajcUf0W5JsQzf3w;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$06SvcwAr_tZDEPuK1BK6VWFA4mE;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$W6vVk8kBkoWieb1Jw-BucQNBDsM;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$qEoykSLvIU1PeokaPDuPOb0M5U0;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$v9CqZP_PIroMsV929WlHTKMHOHM;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$yudIvtYKB9W2eb_t3RT2S1y3KiI;
+Lcom/android/server/autofill/-$$Lambda$RemoteAugmentedAutofillService$zt04rV6kTquQwdDYqT9tjLbRn14;
+Lcom/android/server/autofill/-$$Lambda$RemoteInlineSuggestionRenderService$qkXs53uHunrqzogLSpFo1NOYNnw;
+Lcom/android/server/autofill/-$$Lambda$Session$eVloK5PeyeuPZn1G52SC-fXIsjk;
+Lcom/android/server/autofill/-$$Lambda$Session$xw4trZ-LA7gCvZvpKJ93vf377ak;
+Lcom/android/server/autofill/-$$Lambda$knR7oLyPSG_CoFAxBA_nqSw3JBo;
+Lcom/android/server/autofill/-$$Lambda$sdnPz1IsKKVKSEXwI7z4h2-SxiM;
 Lcom/android/server/autofill/AutofillManagerService$1;
+Lcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;
 Lcom/android/server/autofill/AutofillManagerService$AutoFillManagerServiceStub;
 Lcom/android/server/autofill/AutofillManagerService$AutofillCompatState;
 Lcom/android/server/autofill/AutofillManagerService$LocalService;
+Lcom/android/server/autofill/AutofillManagerService$PackageCompatState;
 Lcom/android/server/autofill/AutofillManagerService;
+Lcom/android/server/autofill/AutofillManagerServiceImpl$1;
+Lcom/android/server/autofill/AutofillManagerServiceImpl$InlineSuggestionRenderCallbacksImpl;
+Lcom/android/server/autofill/AutofillManagerServiceImpl$PruneTask;
 Lcom/android/server/autofill/AutofillManagerServiceImpl;
+Lcom/android/server/autofill/AutofillManagerServiceShellCommand;
+Lcom/android/server/autofill/FieldClassificationStrategy$1;
+Lcom/android/server/autofill/FieldClassificationStrategy$Command;
+Lcom/android/server/autofill/FieldClassificationStrategy$MetadataParser;
 Lcom/android/server/autofill/FieldClassificationStrategy;
+Lcom/android/server/autofill/Helper$ViewNodeFilter;
 Lcom/android/server/autofill/Helper;
+Lcom/android/server/autofill/InlineSuggestionFactory$InlineSuggestionUiCallback;
+Lcom/android/server/autofill/InlineSuggestionFactory;
+Lcom/android/server/autofill/RemoteAugmentedAutofillService$1;
+Lcom/android/server/autofill/RemoteAugmentedAutofillService$RemoteAugmentedAutofillServiceCallbacks;
 Lcom/android/server/autofill/RemoteAugmentedAutofillService;
+Lcom/android/server/autofill/RemoteFillService$FillServiceCallbacks;
+Lcom/android/server/autofill/RemoteFillService;
+Lcom/android/server/autofill/RemoteInlineSuggestionRenderService$InlineSuggestionRenderCallbacks;
+Lcom/android/server/autofill/RemoteInlineSuggestionRenderService;
+Lcom/android/server/autofill/Session$1;
+Lcom/android/server/autofill/Session;
+Lcom/android/server/autofill/ViewState$Listener;
+Lcom/android/server/autofill/ViewState;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$56AC3ykfo4h_e2LSjdkJ3XQn370;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$DTy4Jc0XMA0Y3HhlZbnbed3GpWs;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$GsOszOMmizdASbReEM1r3Cvrp58;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$H0BWucCEHDp2_3FUpZ9-CLDtxYQ;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$HTgNHXKclzwJgKbCz3IEvPsgvvQ;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$L0vbjVRCF8SgWZO8ukcjgJYQgsI;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$LjywPhTUqjU0ZUlG1crxBg8qhRA;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$N1Kl8ql4a5Um06QDzh6Q59ZwYO4;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$R46Kz1SlDpiZBOYi-1HNH5FBjnU;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$S44U_U0PT4w7o-A7hRXjwt9pKXg;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$S8lqjy9BKKn2SSfu43iaVPGD6rg;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$VF2EbGE70QNyGDbklN9Uz5xHqyQ;
 Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$XWhvh2-Jd9NLMoEos-e8RkZdQaI;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$YlDsCvtP9vYV1RgccupdfUdv-PI;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$Z-Di7CGd-L0nOI4i7_RO1FYbhgU;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$_6s4RnleY3q9wMVHqQks_jl2KOA;
+Lcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$i7qTc5vqiej5Psbl-bIkD7js-Ao;
+Lcom/android/server/autofill/ui/-$$Lambda$E4J-3bUcyqJNd4ZlExSBhwy8Tx4;
+Lcom/android/server/autofill/ui/-$$Lambda$FillUi$AutofillWindowPresenter$N4xQe2B0oe5MBiqZlsy3Lb7vZTg;
+Lcom/android/server/autofill/ui/-$$Lambda$FillUi$FY016gv4LQ5AA6yOkKTH3EM5zaM;
+Lcom/android/server/autofill/ui/-$$Lambda$FillUi$ItemsAdapter$1$8s9zobTvKJVJjInaObtlx2flLMc;
+Lcom/android/server/autofill/ui/-$$Lambda$FillUi$QXIyKJs3cMApGd5ifauQkxdpdqk;
+Lcom/android/server/autofill/ui/-$$Lambda$FillUi$TUHYXtyYjvn8kBKxh1vyXjC9x84;
+Lcom/android/server/autofill/ui/AutoFillUI$1;
+Lcom/android/server/autofill/ui/AutoFillUI$2;
+Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;
 Lcom/android/server/autofill/ui/AutoFillUI;
+Lcom/android/server/autofill/ui/FillUi$AnchoredWindow;
+Lcom/android/server/autofill/ui/FillUi$AutofillWindowPresenter;
+Lcom/android/server/autofill/ui/FillUi$Callback;
+Lcom/android/server/autofill/ui/FillUi$ItemsAdapter$1;
+Lcom/android/server/autofill/ui/FillUi$ItemsAdapter;
+Lcom/android/server/autofill/ui/FillUi$ViewItem;
+Lcom/android/server/autofill/ui/FillUi;
+Lcom/android/server/autofill/ui/InlineSuggestionUi;
 Lcom/android/server/autofill/ui/OverlayControl;
+Lcom/android/server/autofill/ui/PendingUi;
+Lcom/android/server/autofill/ui/SaveUi$OnSaveListener;
+Lcom/android/server/autofill/ui/SaveUi;
+Lcom/android/server/backup/-$$Lambda$-xfpm33S8Jqv3KpU_-llxhj8ZPI;
+Lcom/android/server/backup/-$$Lambda$BackupManagerService$1$wNR2kL0jG0FP7rVncyt3YJRw1RI;
+Lcom/android/server/backup/-$$Lambda$BackupManagerService$6P4GQiH-FZ5t_w1XVcGR55OdSL4;
+Lcom/android/server/backup/-$$Lambda$BackupManagerService$PzvNLQ5gp1PWnFQ6Pxc6Lw6ubKU;
+Lcom/android/server/backup/-$$Lambda$TransportManager$4ND1hZMerK5gHU67okq6DZjKDQw;
+Lcom/android/server/backup/-$$Lambda$TransportManager$Qbutmzd17ICwZdy0UzRrO-3_VK0;
+Lcom/android/server/backup/-$$Lambda$TransportManager$Z9ckpFUW2V4jkdHnyXIEiLuAoBc;
+Lcom/android/server/backup/-$$Lambda$TransportManager$_dxJobf45tWiMkaNlKY-z26kB2Q;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$9w65wn45YYtTkXbyQZdj_7K5LSs;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$ICUfBQAK1UQkmGSsPDmR00etFBk;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$2$VpHOYQHCWBG618oharjEXEDr57U;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$9cuIH_XloqtNByp_6hXeGaVars8;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$TB8LUl0TwUK9CmmdepXioEU4Qxg;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$W51Aw9Pu9AOsFVYQgIZy31INmwI;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$_gNqJq9Ygtc0ZVwYhCSDKCUKrKY;
+Lcom/android/server/backup/-$$Lambda$UserBackupManagerService$sAYsrY5C5zAl7EgKgwo188kx6JE;
+Lcom/android/server/backup/-$$Lambda$pM_c5tVAGDtxjxLF_ONtACWWq6Q;
+Lcom/android/server/backup/BackupAgentTimeoutParameters;
+Lcom/android/server/backup/BackupManagerConstants;
+Lcom/android/server/backup/BackupManagerService$1;
 Lcom/android/server/backup/BackupManagerService$Lifecycle;
 Lcom/android/server/backup/BackupManagerService;
-Lcom/android/server/backup/Trampoline;
-Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$F4H2HbJPkB5kHnCG99RJzq63ETk;
-Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$HtA60PD2POS70xjo2Wkv9Ds3iIM;
-Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$d8jmYuo4MyZZpxoeouUPEq4DMII;
+Lcom/android/server/backup/BackupPasswordManager;
+Lcom/android/server/backup/BackupRestoreTask;
+Lcom/android/server/backup/BackupUtils;
+Lcom/android/server/backup/DataChangedJournal;
+Lcom/android/server/backup/FullBackupJob;
+Lcom/android/server/backup/KeyValueBackupJob;
+Lcom/android/server/backup/PackageManagerBackupAgent;
+Lcom/android/server/backup/ProcessedPackagesJournal;
+Lcom/android/server/backup/TransportManager;
+Lcom/android/server/backup/UserBackupManagerFilePersistedSettings;
+Lcom/android/server/backup/UserBackupManagerFiles;
+Lcom/android/server/backup/UserBackupManagerService$1;
+Lcom/android/server/backup/UserBackupManagerService$2;
+Lcom/android/server/backup/UserBackupManagerService$4;
+Lcom/android/server/backup/UserBackupManagerService;
+Lcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$SinglePackageBackupPreflight$hWbC3_rWMPrteAdbbM5aSW2SKD0;
+Lcom/android/server/backup/fullbackup/-$$Lambda$PerformFullTransportBackupTask$ymLoQLrsEpmGaMrcudrdAgsU1Zk;
+Lcom/android/server/backup/fullbackup/AppMetadataBackupWriter;
+Lcom/android/server/backup/fullbackup/FullBackupEngine$FullBackupRunner;
+Lcom/android/server/backup/fullbackup/FullBackupEngine;
+Lcom/android/server/backup/fullbackup/FullBackupEntry;
+Lcom/android/server/backup/fullbackup/FullBackupPreflight;
+Lcom/android/server/backup/fullbackup/FullBackupTask;
+Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupPreflight;
+Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask$SinglePackageBackupRunner;
+Lcom/android/server/backup/fullbackup/PerformFullTransportBackupTask;
+Lcom/android/server/backup/internal/-$$Lambda$BackupHandler$TJcRazGYTaUxjeiX6mPLlipfZUI;
+Lcom/android/server/backup/internal/BackupHandler;
+Lcom/android/server/backup/internal/OnTaskFinishedListener;
+Lcom/android/server/backup/internal/RunBackupReceiver;
+Lcom/android/server/backup/keyvalue/-$$Lambda$KeyValueBackupTask$NN2H32cNizGxrUxqHgqPqGldNsA;
+Lcom/android/server/backup/keyvalue/AgentException;
+Lcom/android/server/backup/keyvalue/BackupException;
+Lcom/android/server/backup/keyvalue/BackupRequest;
+Lcom/android/server/backup/keyvalue/KeyValueBackupReporter;
+Lcom/android/server/backup/keyvalue/KeyValueBackupTask;
+Lcom/android/server/backup/keyvalue/TaskException;
+Lcom/android/server/backup/remote/-$$Lambda$RemoteCall$UZaEiTGjS9e2j04YYkGl3Y2ltU4;
+Lcom/android/server/backup/remote/FutureBackupCallback;
+Lcom/android/server/backup/remote/RemoteCall;
+Lcom/android/server/backup/remote/RemoteCallable;
+Lcom/android/server/backup/remote/RemoteResult;
+Lcom/android/server/backup/restore/PerformUnifiedRestoreTask;
+Lcom/android/server/backup/restore/UnifiedRestoreState;
+Lcom/android/server/backup/transport/-$$Lambda$TransportClient$ciIUj0x0CRg93UETUpy2FB5aqCQ;
+Lcom/android/server/backup/transport/-$$Lambda$TransportClient$uc3fygwQjQIS_JT7mlt-yMBfJcE;
+Lcom/android/server/backup/transport/OnTransportRegisteredListener;
+Lcom/android/server/backup/transport/TransportClient$TransportConnection;
+Lcom/android/server/backup/transport/TransportClient;
+Lcom/android/server/backup/transport/TransportClientManager;
+Lcom/android/server/backup/transport/TransportConnectionListener;
+Lcom/android/server/backup/transport/TransportStats$Stats;
+Lcom/android/server/backup/transport/TransportStats;
+Lcom/android/server/backup/transport/TransportUtils;
+Lcom/android/server/backup/utils/AppBackupUtils;
+Lcom/android/server/backup/utils/BackupManagerMonitorUtils;
+Lcom/android/server/backup/utils/BackupObserverUtils;
+Lcom/android/server/backup/utils/DataStreamFileCodec;
+Lcom/android/server/backup/utils/FileUtils;
+Lcom/android/server/backup/utils/FullBackupUtils;
+Lcom/android/server/backup/utils/RandomAccessFileUtils;
+Lcom/android/server/biometrics/-$$Lambda$BiometricService$IIHhqSKogJZG56VmePRbTOf_5qo;
+Lcom/android/server/biometrics/-$$Lambda$BiometricService$PWa3w6AT62ogdb7_LTOZ5QOYAk4;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$5zE_f-JKSpUWsfwvdtw36YktZZ0;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$8-hCNL3jMZVMKItY0KyN7TBk6u8;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$B1PDNz5plOtQUbeZgXMkI_dh_yQ;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$VFT8WmkESkAnonaxJDq_GS_vB4E;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$Zy4OXo3HMpNNxU1x5VMDe_5Q3vI;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$iRNlDOJhMpMFOTQxuHjuZ0z5dlY;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$lM-Gght_XjLuQG2iY0xHchO8Xgk;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$rf3hjPI_nf4EvVsQV7gFCF1-HpI;
+Lcom/android/server/biometrics/-$$Lambda$BiometricServiceBase$yj0NG4umGnnyUerNM_EKxeka05A;
+Lcom/android/server/biometrics/AuthService$1;
+Lcom/android/server/biometrics/AuthService$AuthServiceImpl;
+Lcom/android/server/biometrics/AuthService$Injector;
+Lcom/android/server/biometrics/AuthService;
 Lcom/android/server/biometrics/AuthenticationClient;
 Lcom/android/server/biometrics/BiometricService$1;
 Lcom/android/server/biometrics/BiometricService$2;
 Lcom/android/server/biometrics/BiometricService$3;
-Lcom/android/server/biometrics/BiometricService$Authenticator;
+Lcom/android/server/biometrics/BiometricService$AuthSession;
+Lcom/android/server/biometrics/BiometricService$AuthenticatorWrapper;
 Lcom/android/server/biometrics/BiometricService$BiometricServiceWrapper;
-Lcom/android/server/biometrics/BiometricService$BiometricTaskStackListener;
 Lcom/android/server/biometrics/BiometricService$EnabledOnKeyguardCallback;
+Lcom/android/server/biometrics/BiometricService$Injector;
 Lcom/android/server/biometrics/BiometricService$SettingObserver;
 Lcom/android/server/biometrics/BiometricService;
 Lcom/android/server/biometrics/BiometricServiceBase$1;
+Lcom/android/server/biometrics/BiometricServiceBase$2;
 Lcom/android/server/biometrics/BiometricServiceBase$AuthenticationClientImpl;
+Lcom/android/server/biometrics/BiometricServiceBase$BiometricServiceListener;
 Lcom/android/server/biometrics/BiometricServiceBase$BiometricTaskStackListener;
 Lcom/android/server/biometrics/BiometricServiceBase$DaemonWrapper;
+Lcom/android/server/biometrics/BiometricServiceBase$EnrollClientImpl;
 Lcom/android/server/biometrics/BiometricServiceBase$H;
 Lcom/android/server/biometrics/BiometricServiceBase$InternalEnumerateClient;
+Lcom/android/server/biometrics/BiometricServiceBase$InternalRemovalClient;
+Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$1;
 Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor$2;
 Lcom/android/server/biometrics/BiometricServiceBase$LockoutResetMonitor;
 Lcom/android/server/biometrics/BiometricServiceBase$PerformanceStats;
 Lcom/android/server/biometrics/BiometricServiceBase$ResetClientStateRunnable;
 Lcom/android/server/biometrics/BiometricServiceBase$ServiceListener;
+Lcom/android/server/biometrics/BiometricServiceBase$UserTemplate;
 Lcom/android/server/biometrics/BiometricServiceBase;
+Lcom/android/server/biometrics/BiometricStrengthController;
 Lcom/android/server/biometrics/BiometricUserState$1;
 Lcom/android/server/biometrics/BiometricUserState;
 Lcom/android/server/biometrics/BiometricUtils;
 Lcom/android/server/biometrics/ClientMonitor;
+Lcom/android/server/biometrics/Constants;
+Lcom/android/server/biometrics/EnrollClient;
 Lcom/android/server/biometrics/EnumerateClient;
 Lcom/android/server/biometrics/LoggableMonitor;
-Lcom/android/server/biometrics/Metrics;
+Lcom/android/server/biometrics/RemovalClient;
+Lcom/android/server/biometrics/SensorConfig;
+Lcom/android/server/biometrics/Utils;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$7DzDQwoPfgYi40WuB8Xi0hA3qVQ;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$81olYJI06zsG8LvXV_gD76jaNyg;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$Dg7kqAVO92T8FbodjRCfn9vSkto;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$GcU4ZG1fdDLhKvSxuMwfPargEnI;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$OiHHyHFXrIcrZYUfSsf-E2as1qE;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$jaJb2y4UkoXOtV5wJimfIPNA_PM;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$1$s3kBxUsmTmDZC9YLbT5yPR3KOWo;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$A0dfsVDvPu3BDJsON7widXUriSs;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$1ZJGnsaJl1du-I_XjU-JKzIy49Q;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$6Efp5LtXdV1OgyOr4AaGf19hmLs;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$kw0BBGgTrFveHiSJWRbNG8sygqA;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$FaceServiceWrapper$oUY0TN9T4s4roMpe33Oc2nS7uzI;
+Lcom/android/server/biometrics/face/-$$Lambda$FaceService$rveb67MoYJ0egfY6LL-l05KvUz8;
+Lcom/android/server/biometrics/face/FaceAuthenticator;
+Lcom/android/server/biometrics/face/FaceConstants;
+Lcom/android/server/biometrics/face/FaceService$1;
+Lcom/android/server/biometrics/face/FaceService$2;
+Lcom/android/server/biometrics/face/FaceService$AuthenticationEvent;
+Lcom/android/server/biometrics/face/FaceService$BiometricPromptServiceListenerImpl;
+Lcom/android/server/biometrics/face/FaceService$FaceAuthClient;
+Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$1;
+Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$2;
+Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$3;
+Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper$4;
+Lcom/android/server/biometrics/face/FaceService$FaceServiceWrapper;
+Lcom/android/server/biometrics/face/FaceService$ServiceListenerImpl;
+Lcom/android/server/biometrics/face/FaceService$UsageStats;
+Lcom/android/server/biometrics/face/FaceService;
+Lcom/android/server/biometrics/face/FaceUserState;
+Lcom/android/server/biometrics/face/FaceUtils;
 Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$3I9ge5BoesXZUovbayCOCR754fc;
+Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7-RPI0PwwgOAZtsXq2j72pQWwMc;
+Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$7nMWCt41OE3k8ihjPNPqB0O8POU;
+Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$BJntfNoFTejPmUJ_45WFIwis8Nw;
+Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$N1Y2Zwqq-x5yDKQsDTj2KQ5q7g4;
+Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$1$cO88ecWuvWIBecLAEccxr5yeJK4;
 Lcom/android/server/biometrics/fingerprint/-$$Lambda$FingerprintService$YOMIOLvco2SvXVeJIulOSVKdX7A;
-Lcom/android/server/biometrics/fingerprint/FingerprintMetrics;
+Lcom/android/server/biometrics/fingerprint/FingerprintAuthenticator;
+Lcom/android/server/biometrics/fingerprint/FingerprintConstants;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$1;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$2;
+Lcom/android/server/biometrics/fingerprint/FingerprintService$BiometricPromptServiceListenerImpl;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintAuthClient;
+Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$1;
+Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$2;
+Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$3;
+Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper$4;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$FingerprintServiceWrapper;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$LockoutReceiver;
 Lcom/android/server/biometrics/fingerprint/FingerprintService$ResetFailedAttemptsForUserRunnable;
@@ -18855,7 +41339,10 @@
 Lcom/android/server/biometrics/fingerprint/FingerprintService;
 Lcom/android/server/biometrics/fingerprint/FingerprintUserState;
 Lcom/android/server/biometrics/fingerprint/FingerprintUtils;
+Lcom/android/server/biometrics/iris/IrisAuthenticator;
+Lcom/android/server/biometrics/iris/IrisService;
 Lcom/android/server/broadcastradio/BroadcastRadioService;
+Lcom/android/server/broadcastradio/hal1/-$$Lambda$-XcW_oxw3YwSco8d8bZQoqwUTnM;
 Lcom/android/server/broadcastradio/hal1/-$$Lambda$TunerCallback$-h4udaDmWtN-rprVGi_U0x7oSJc;
 Lcom/android/server/broadcastradio/hal1/-$$Lambda$TunerCallback$C_-9BcvTpHXxQ-jC-hu9LBHT0XU;
 Lcom/android/server/broadcastradio/hal1/-$$Lambda$TunerCallback$QNBMPvImBEGMe4jaw6iOF4QPjns;
@@ -18874,29 +41361,76 @@
 Lcom/android/server/broadcastradio/hal1/TunerCallback;
 Lcom/android/server/camera/CameraServiceProxy$1;
 Lcom/android/server/camera/CameraServiceProxy$2;
+Lcom/android/server/camera/CameraServiceProxy$CameraUsageEvent;
+Lcom/android/server/camera/CameraServiceProxy$EventWriterTask;
 Lcom/android/server/camera/CameraServiceProxy;
 Lcom/android/server/camera/CameraStatsJobService;
+Lcom/android/server/clipboard/ClipboardService$1;
 Lcom/android/server/clipboard/ClipboardService$ClipboardImpl;
+Lcom/android/server/clipboard/ClipboardService$ListenerInfo;
+Lcom/android/server/clipboard/ClipboardService$PerUserClipboard;
 Lcom/android/server/clipboard/ClipboardService;
+Lcom/android/server/clipboard/HostClipboardMonitor$HostClipboardCallback;
+Lcom/android/server/clipboard/HostClipboardMonitor;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$0VKz9ecFqvfFXzRrfaz-Pf5wW2s;
 Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$1$EelUlD0Ldboon98oq6H5kDCPW9I;
 Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$1$IwZz9SPheLuA45R-qkZX_v1sHV4;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$-LNsQ_6iDwt_SHib_WgAf70VWCI;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$2$dm_CTD4HzQO9qRu6lX0jCG6NMCM;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$2wb0ihDuJR-XM-iMwM4so23756E;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$NreYX1A7ahBgly9jo0iR-2otX-Q;
 Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$bdv3Vfadbb8b9nrSgkARO4oYOXU;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$m9NLTVY7N8yX_cTeQGMddCEpCU0;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$oYSpdTmzLHvD4Kqu1cDfzfZuvwo;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$CompanionDeviceManagerImpl$yIqg4YLiQouxnVJakZERWIZnPYU;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$IkTCYCPSwHv3PPP8etpa0xLh9Is;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$_wqnNKMj0AXNyFu-i6lXk6tA3xs;
 Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$bh5xRJq9-CRJoXvmerYRNjK1xEQ;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$d_RLJQyt7Hah5vpYlYLeoWXxACU;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$pG_kG2extKjHVEAFcCd4MLP2mkk;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wG7upTzVFwCMCLI1zfTZW4dftak;
+Lcom/android/server/companion/-$$Lambda$CompanionDeviceManagerService$wnUkAY8uXyjMGM59-bNpzLLMJ1I;
+Lcom/android/server/companion/-$$Lambda$dmgYbfK3c1MAswkxujxbcRtjs9A;
 Lcom/android/server/companion/CompanionDeviceManagerService$1;
+Lcom/android/server/companion/CompanionDeviceManagerService$2;
+Lcom/android/server/companion/CompanionDeviceManagerService$Association;
 Lcom/android/server/companion/CompanionDeviceManagerService$CompanionDeviceManagerImpl;
+Lcom/android/server/companion/CompanionDeviceManagerService$ShellCmd;
 Lcom/android/server/companion/CompanionDeviceManagerService;
+Lcom/android/server/compat/CompatChange$ChangeListener;
+Lcom/android/server/compat/CompatChange;
+Lcom/android/server/compat/CompatConfig;
+Lcom/android/server/compat/OverrideValidatorImpl;
+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/-$$Lambda$DnsManager$PrivateDnsValidationStatuses$_X4_M08nKysv-L4hDpqAsa4SBxI;
+Lcom/android/server/connectivity/-$$Lambda$DnsManager$Z_oEyRSp0wthIcVTcqKDoAJRe6Q;
 Lcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$B0oR30xfeM300kIzUVaV_zUNLCg;
+Lcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$S6t43cbsv7uQTbniMoTEFVB8Tfw;
+Lcom/android/server/connectivity/-$$Lambda$IpConnectivityMetrics$VClycNGAy74aP-7CTaYoRpoYsy4;
 Lcom/android/server/connectivity/-$$Lambda$MultipathPolicyTracker$2$dvyDLfu9d6g2XoEdL3QMHx7ut6k;
-Lcom/android/server/connectivity/-$$Lambda$Tethering$5JkghhOVq1MW7iK03DMZUSuLdFM;
-Lcom/android/server/connectivity/-$$Lambda$Tethering$CZZ1cyMeU7DUmSuQSKselF5XA5o;
-Lcom/android/server/connectivity/DataConnectionStats$1;
+Lcom/android/server/connectivity/-$$Lambda$Nat464Xlat$40jKHQd7R0zgcegyEyc9zPHKXVA;
+Lcom/android/server/connectivity/-$$Lambda$Nat464Xlat$PACHOP9HoYvr_jzHtIwFDy31Ud4;
+Lcom/android/server/connectivity/-$$Lambda$PermissionMonitor$h-GPsXXwaQ-Mfu5-dqCp_VIYNOM;
+Lcom/android/server/connectivity/-$$Lambda$TcpKeepaliveController$mLZJWrEAOnfgV5N3ZSa2J3iTmxE;
+Lcom/android/server/connectivity/DataConnectionStats$PhoneStateListenerImpl;
 Lcom/android/server/connectivity/DataConnectionStats;
 Lcom/android/server/connectivity/DefaultNetworkMetrics;
+Lcom/android/server/connectivity/DnsManager$1;
+Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses$ValidationStatus;
+Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationStatuses;
+Lcom/android/server/connectivity/DnsManager$PrivateDnsValidationUpdate;
 Lcom/android/server/connectivity/DnsManager;
+Lcom/android/server/connectivity/IpConnectivityEventBuilder;
+Lcom/android/server/connectivity/IpConnectivityMetrics$1;
 Lcom/android/server/connectivity/IpConnectivityMetrics$Impl;
 Lcom/android/server/connectivity/IpConnectivityMetrics$Logger;
 Lcom/android/server/connectivity/IpConnectivityMetrics$LoggerImpl;
 Lcom/android/server/connectivity/IpConnectivityMetrics;
+Lcom/android/server/connectivity/KeepaliveTracker$KeepaliveInfo;
 Lcom/android/server/connectivity/KeepaliveTracker;
 Lcom/android/server/connectivity/LingerMonitor;
 Lcom/android/server/connectivity/MockableSystemProperties;
@@ -18904,79 +41438,102 @@
 Lcom/android/server/connectivity/MultipathPolicyTracker$2;
 Lcom/android/server/connectivity/MultipathPolicyTracker$ConfigChangeReceiver;
 Lcom/android/server/connectivity/MultipathPolicyTracker$Dependencies;
+Lcom/android/server/connectivity/MultipathPolicyTracker$MultipathTracker;
 Lcom/android/server/connectivity/MultipathPolicyTracker$SettingsObserver;
 Lcom/android/server/connectivity/MultipathPolicyTracker;
+Lcom/android/server/connectivity/Nat464Xlat$State;
 Lcom/android/server/connectivity/Nat464Xlat;
 Lcom/android/server/connectivity/NetdEventListenerService$NetworkMetricsSnapshot;
 Lcom/android/server/connectivity/NetdEventListenerService;
+Lcom/android/server/connectivity/NetworkAgentInfo$1;
+Lcom/android/server/connectivity/NetworkAgentInfo$LingerTimer;
 Lcom/android/server/connectivity/NetworkAgentInfo;
+Lcom/android/server/connectivity/NetworkDiagnostics$DnsResponseCode;
+Lcom/android/server/connectivity/NetworkDiagnostics$DnsUdpCheck;
+Lcom/android/server/connectivity/NetworkDiagnostics$IcmpCheck;
+Lcom/android/server/connectivity/NetworkDiagnostics$Measurement;
+Lcom/android/server/connectivity/NetworkDiagnostics$SimpleSocketCheck;
+Lcom/android/server/connectivity/NetworkDiagnostics;
+Lcom/android/server/connectivity/NetworkNotificationManager$1;
+Lcom/android/server/connectivity/NetworkNotificationManager$NotificationType;
 Lcom/android/server/connectivity/NetworkNotificationManager;
 Lcom/android/server/connectivity/PacManager$1;
+Lcom/android/server/connectivity/PacManager$2;
+Lcom/android/server/connectivity/PacManager$3;
 Lcom/android/server/connectivity/PacManager$PacRefreshIntentReceiver;
 Lcom/android/server/connectivity/PacManager;
+Lcom/android/server/connectivity/PermissionMonitor$1;
 Lcom/android/server/connectivity/PermissionMonitor$PackageListObserver;
 Lcom/android/server/connectivity/PermissionMonitor;
 Lcom/android/server/connectivity/ProxyTracker;
 Lcom/android/server/connectivity/TcpKeepaliveController;
-Lcom/android/server/connectivity/Tethering$3;
-Lcom/android/server/connectivity/Tethering$StateReceiver;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$ErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$InitialState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$OffloadWrapper;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetDnsForwardersErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingDisabledErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$SetIpForwardingEnabledErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$StartTetheringErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$StopTetheringErrorState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM$TetherModeAliveState;
-Lcom/android/server/connectivity/Tethering$TetherMasterSM;
-Lcom/android/server/connectivity/Tethering$TetherState;
-Lcom/android/server/connectivity/Tethering$TetheringUserRestrictionListener;
-Lcom/android/server/connectivity/Tethering;
+Lcom/android/server/connectivity/Vpn$1;
 Lcom/android/server/connectivity/Vpn$2;
+Lcom/android/server/connectivity/Vpn$Connection;
+Lcom/android/server/connectivity/Vpn$LegacyVpnRunner;
 Lcom/android/server/connectivity/Vpn$SystemServices;
 Lcom/android/server/connectivity/Vpn;
-Lcom/android/server/connectivity/tethering/-$$Lambda$OffloadController$OffloadTetheringStatsProvider$3TF0NI3fE8A-xW0925oMv3YzAOk;
-Lcom/android/server/connectivity/tethering/EntitlementManager;
-Lcom/android/server/connectivity/tethering/IPv6TetheringCoordinator;
-Lcom/android/server/connectivity/tethering/OffloadController$OffloadTetheringStatsProvider;
-Lcom/android/server/connectivity/tethering/OffloadController;
-Lcom/android/server/connectivity/tethering/OffloadHardwareInterface$ForwardedStats;
-Lcom/android/server/connectivity/tethering/OffloadHardwareInterface;
-Lcom/android/server/connectivity/tethering/TetheringConfiguration;
-Lcom/android/server/connectivity/tethering/TetheringDependencies;
-Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor$UpstreamNetworkCallback;
-Lcom/android/server/connectivity/tethering/UpstreamNetworkMonitor;
+Lcom/android/server/content/-$$Lambda$ContentService$5-BNVxd6JTWU9ogp3u-0kfiqgbI;
+Lcom/android/server/content/-$$Lambda$SyncManager$4nklbtZn-JuPLOkU32f34xZoiug;
 Lcom/android/server/content/-$$Lambda$SyncManager$68MEyNkTh36YmYoFlURJoRa_-cY;
+Lcom/android/server/content/-$$Lambda$SyncManager$6y-gkGdDn-rSLmR9G8Pz_n9zy2A;
+Lcom/android/server/content/-$$Lambda$SyncManager$9EoLpTk5JrHZn9R-uS0lqCVrpRw;
+Lcom/android/server/content/-$$Lambda$SyncManager$BRG-YMU-C9QC6JWVXAvsoEZC6Zc;
 Lcom/android/server/content/-$$Lambda$SyncManager$CjX_2uO4O4xJPQnKzeqvGwd87Dc;
+Lcom/android/server/content/-$$Lambda$SyncManager$EMXCZP9LDjgUTYbLsEoVu9Ccntw;
 Lcom/android/server/content/-$$Lambda$SyncManager$HhiSFjEoPA_Hnv3xYZGfwkalc68;
+Lcom/android/server/content/-$$Lambda$SyncManager$SyncHandler$7-vThHsPImW4qB6AnVEnnD3dGhM;
+Lcom/android/server/content/-$$Lambda$SyncManager$XKEiBZ17uDgUCTwf_kh9_pH7usQ;
+Lcom/android/server/content/-$$Lambda$SyncManager$ag0YGuZ1oL06fytmNlyErbNyYcw;
 Lcom/android/server/content/-$$Lambda$SyncManager$bVs0A6OYdmGkOiq_lbp5MiBwelw;
+Lcom/android/server/content/-$$Lambda$SyncManager$pdoEVnuSkmOrvULQ9M7Ic-lU5vw;
+Lcom/android/server/content/-$$Lambda$SyncManager$rDUHWai3SU0BXk1TE0bLDap9gVc;
+Lcom/android/server/content/-$$Lambda$SyncManager$zZUXjd-GLFQgHtMQ3vq0EWHvir8;
 Lcom/android/server/content/-$$Lambda$SyncManagerConstants$qo5ldQVp10jCUY9aavBZDKP2k6Q;
 Lcom/android/server/content/ContentService$1;
-Lcom/android/server/content/ContentService$3;
+Lcom/android/server/content/ContentService$2;
 Lcom/android/server/content/ContentService$Lifecycle;
 Lcom/android/server/content/ContentService$ObserverCall;
 Lcom/android/server/content/ContentService$ObserverNode$ObserverEntry;
 Lcom/android/server/content/ContentService$ObserverNode;
 Lcom/android/server/content/ContentService;
+Lcom/android/server/content/ContentShellCommand;
+Lcom/android/server/content/SyncAdapterStateFetcher;
 Lcom/android/server/content/SyncJobService;
 Lcom/android/server/content/SyncLogger$RotatingFileLogger$MyHandler;
 Lcom/android/server/content/SyncLogger$RotatingFileLogger;
 Lcom/android/server/content/SyncLogger;
 Lcom/android/server/content/SyncManager$10;
 Lcom/android/server/content/SyncManager$11;
+Lcom/android/server/content/SyncManager$12;
+Lcom/android/server/content/SyncManager$13;
+Lcom/android/server/content/SyncManager$14;
+Lcom/android/server/content/SyncManager$15;
 Lcom/android/server/content/SyncManager$1;
 Lcom/android/server/content/SyncManager$2;
 Lcom/android/server/content/SyncManager$3;
 Lcom/android/server/content/SyncManager$4;
 Lcom/android/server/content/SyncManager$5;
 Lcom/android/server/content/SyncManager$6;
+Lcom/android/server/content/SyncManager$7;
 Lcom/android/server/content/SyncManager$8;
 Lcom/android/server/content/SyncManager$9;
+Lcom/android/server/content/SyncManager$AccountSyncStats;
+Lcom/android/server/content/SyncManager$ActiveSyncContext;
+Lcom/android/server/content/SyncManager$AuthoritySyncStats;
+Lcom/android/server/content/SyncManager$OnReadyCallback;
+Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck$1;
+Lcom/android/server/content/SyncManager$OnUnsyncableAccountCheck;
+Lcom/android/server/content/SyncManager$PrintTable;
+Lcom/android/server/content/SyncManager$ScheduleSyncMessagePayload;
+Lcom/android/server/content/SyncManager$ServiceConnectionData;
+Lcom/android/server/content/SyncManager$SyncFinishedOrCancelledMessagePayload;
 Lcom/android/server/content/SyncManager$SyncHandler;
 Lcom/android/server/content/SyncManager$SyncTimeTracker;
+Lcom/android/server/content/SyncManager$UpdatePeriodicSyncMessagePayload;
 Lcom/android/server/content/SyncManager;
 Lcom/android/server/content/SyncManagerConstants;
+Lcom/android/server/content/SyncOperation;
 Lcom/android/server/content/SyncStorageEngine$AccountAuthorityValidator;
 Lcom/android/server/content/SyncStorageEngine$AccountInfo;
 Lcom/android/server/content/SyncStorageEngine$AuthorityInfo;
@@ -18986,19 +41543,426 @@
 Lcom/android/server/content/SyncStorageEngine$OnAuthorityRemovedListener;
 Lcom/android/server/content/SyncStorageEngine$OnSyncRequestListener;
 Lcom/android/server/content/SyncStorageEngine$PeriodicSyncAddedListener;
+Lcom/android/server/content/SyncStorageEngine$SyncHistoryItem;
 Lcom/android/server/content/SyncStorageEngine;
-Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$mHKdlupOKTP3w3jJnNMhJi6ns5w;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$17qcaUpUsTMt5exVwDnmTmyrpJw;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$4nadnpI0ImgQseJYN0WTE4IJ4s4;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$6vI15KqJwo_ruaAABrGMvkwVRt4;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$Qe-DhsP4OR9GyoofNgVlcOk-1so;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$ContentCaptureManagerServiceStub$vyDTyUUAt356my5WVtp7QPYv5gY;
+Lcom/android/server/contentcapture/-$$Lambda$ContentCaptureManagerService$jCIcV2sgwD7QUkN-c6yfPd58T_U;
+Lcom/android/server/contentcapture/-$$Lambda$RemoteContentCaptureService$yRaGuMutdbjMq9h32e3TC2_1a_A;
 Lcom/android/server/contentcapture/ContentCaptureManagerInternal;
+Lcom/android/server/contentcapture/ContentCaptureManagerService$1;
 Lcom/android/server/contentcapture/ContentCaptureManagerService$ContentCaptureManagerServiceStub;
+Lcom/android/server/contentcapture/ContentCaptureManagerService$DataShareCallbackDelegate;
+Lcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;
 Lcom/android/server/contentcapture/ContentCaptureManagerService$LocalService;
 Lcom/android/server/contentcapture/ContentCaptureManagerService;
+Lcom/android/server/contentcapture/ContentCaptureManagerServiceShellCommand;
+Lcom/android/server/contentcapture/ContentCapturePerUserService$ContentCaptureServiceRemoteCallback;
 Lcom/android/server/contentcapture/ContentCapturePerUserService;
+Lcom/android/server/contentcapture/ContentCaptureServerSession;
 Lcom/android/server/contentcapture/RemoteContentCaptureService$ContentCaptureServiceCallbacks;
+Lcom/android/server/contentcapture/RemoteContentCaptureService;
+Lcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$Enqw46SYVKFK9F2xX4qUcIu5_3I;
+Lcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$VKh1DoMPNSPjPfnVGdsInmxuqzc;
+Lcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$eoGnQ2MDLLnW1UBX6wxNE1VBLAk;
+Lcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$yUTbcaYlZCYTmagCkNJ3i2VCkY4;
+Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService$1;
 Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService$ContentSuggestionsManagerStub;
 Lcom/android/server/contentsuggestions/ContentSuggestionsManagerService;
+Lcom/android/server/contentsuggestions/ContentSuggestionsManagerServiceShellCommand;
+Lcom/android/server/contentsuggestions/ContentSuggestionsPerUserService$1;
 Lcom/android/server/contentsuggestions/ContentSuggestionsPerUserService;
+Lcom/android/server/contentsuggestions/RemoteContentSuggestionsService$Callbacks;
+Lcom/android/server/contentsuggestions/RemoteContentSuggestionsService;
+Lcom/android/server/coverage/CoverageService$1;
+Lcom/android/server/coverage/CoverageService$CoverageCommand;
 Lcom/android/server/coverage/CoverageService;
+Lcom/android/server/devicepolicy/-$$Lambda$CertificateMonitor$nzwzuvk_fK7AIlili6jDKrKWLJM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-SLM70h2SesShbP-O5yYa1PYZVw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$-akc0-_Xpj7aIxkCmZXNOwZmfBo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$03gLgx7r9JVlctOr2Y2H2tmFv4c;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$08tAXus2zREPLhPWSJJMbXKP4Sg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$09_I4G_12aZDp0ahZnGtJryBYCg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0H5SdBGIQE77NlJ8chd0JlrtVZM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0YdFTQIxrgxkEfzJdhGZzP5z4eM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$0nS7EqUlxcoON_ZF5WsIciiV6f4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$17w9Erg0JBwVQsxp9tlvNXoHag8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$19j1Aw89Idv-1enlT4bK5AugL5A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1R0QiR_l4mLrk0FOixnnsUDLM1Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1XDDDftsFpFAuDCNfSCxMrNxbMk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1Xv08Aj_cK0tIZBpTLTZYh8Zs9s;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1Zyuyui_ku0ZdGgm9CrkOMuG9B8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1_463wML1lyyuhNEcH6YQZBNupk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1iJrvtbb8D-HC5dcMcu7FeZ0bls;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$1k_SpqyKkZIiqJdJjszs6AKXu5U;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2QHA45sHi3IUGkw9j4nqdP1d9f4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2T_rNBu9uZarOjRto1J4yaEXo9g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2abeHMpplaQvVBNJWjp-qJz5WVw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2dnwZdGuTZnM6wwcm6xROcqfwb0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$2oZRUqH8940wHaVi7eD5XbqxSUs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$30ERlBvVSEX3BNYniAbrkpzZMO8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3L30HmY-8WRZNE3mKrX3xDa7_k8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3ci-C-bvTQXBAy8k6mmH8aTckko;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3cl91AM3OrkyrKhqi6ZVDNTQKAA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3fkwqImXZBEqEcBcVdbEHhjgHpw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$3rzSAPGK2j1J59mql6CHDfj5_vM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$408nFvkwnZ8Zkn34fAB90_FIpuw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$40NnXYgLNWX1UOoSU-Z89B60qgw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$4ALlixN_yWTKyHgaHqgvFKb2Fys;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$4CiWL2iCMnRVnveuqpgZV0TEhrk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$4SlKpwMTE30yupnWmTMOjRy2qoU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5-nWFGyr7IsWb84Z7EeOMY-GKY4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5VQd88NWLFnS68z-nw7XjNBNv6A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5Xy1SW6FmfM4-7F8ZHPEFhBAJjs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$5_qqJuFUQctuq7MUOxfXoWw-5xg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6E7MK8TbNUybt8S9CwAdfdcn2x0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6K_0ypBXU-MxW25hBfVb_pa476Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6SGKr9VhDL9p5RwsHqFj4UpVZTQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6bRYy5LYRT2cwzrjgkdZcHBZJb0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6bgFhX4b-xoNuxSdFAd4tk1EzFE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$6g9CONRefKQHg446cfQoqfOE2Vk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7Cpvth9RknvcbwQxadY3QRMYuFU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7bcaEHXf3TCFcAmnNgQ3w5k52Do;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$7d4KuFVANhtDTCmi75jRXr1iwQg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8WEE00-ysyIE1NA6831vMvnUKA8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8XUqgbgdUcEUgLSotmYa65MlJU4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8ellpsdXYuR8VQfhf8jcttRtOvI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$8qCcR6mM8qspH7fQ8IbJXDcl-oE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$91lePGqcrxZc3CJvr3r82jo8pqU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9BBesRjvUOb0HylcboB6iBXa9rA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9R-Cd8_5zpYXgcD0dtPoPmXylac;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9ZcumXOv56Ei2C9SZ1rGCAWbFq0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9e1WD675Sk7q7eBur0QM_ABo6vQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$9slZPgx0YdlOIZDsP-rOhH7cf1I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$AijWRIktKOprZjv1bi4_G1772Mk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$BG5ucLiTHDdSlIiTv_4KUZ1x4-E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$BRpIBuCcPsCOsse3nSRZZGAN6zo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Bg95NheW5thmDvdD-hGXu4jgipE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Bioo-mDmIMMQbonuT-cTceZugBE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CAHsZjsjfTBjSCaXhAqawAZQxAs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CDHZdCsr9YgduzpjJeJZgy9m_78;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CFMQ1ykMHZEBAbCbIrxt0fG8F6Q;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CRiVj7LcEcD99tgHUWiVKaQNje0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CiK-O2Bv367FPc0wKJTNYLXtCuE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CpvrZCMW3zm0aad04_pjyy_0aZc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CtnVY1-sDsBzKJt5YVB4zyTnSFg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$CxwsOCiBBPip8s6Ob2djUNKClVQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$D4ztnD6BT25lWG-r4PUjRzNR1zs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$DGti-zSjoF-MLpb6ukDfHkXaJIQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Dkp34yebHBWf2q7_ZEs8MgnJZqA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E3l49EGA6UCGqdaOZqz6OFNlTrc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$E9awYavFY3fUvYuziaFPn187V2A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EJsqLPPVkijBKCgW-TLEHRRqyDI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ERuVso0xsJCwwC2166dqVBI8lYA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EXFPU7YOnkkc9OavMU_VthZbEIs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EXuB-2fI5CcnhtDXjFh3KBQt36U;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EbBXBUjOxgBkysUjLC5ARCskXTI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EbIZcVNy2OyF5PbYw2fTtScB9Zk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ElWamLudjuXKkng-z8ausIIf74E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EmW1vJQsSAWrjreihtc0C_PUzE8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$EuGKTMwvdflyo2gmfY_QNT1EMBo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$FmxOJlCc2MLPPP1wq6qLc9sJsjs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$FoRIQWHG7DAHSS17BPWMp1vOTtQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$G4W44ReWhy5Zf5FIX4LLR9Rz4wk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GLFaeQoYlGpw9LS1HfFdyYwmh6E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Gay72FJGh9jv-C5zoSYQgAwFMqE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Gd_Pd_RvM9VhMO0x9QLATLm3qOQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$GrJ2yAyrcr8_uJK0BCe9i4AcIYc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$H1JgNiSBhXsH1Qg5Bfg-nluQHLg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$H87e1pqSu1446VUE1hubyHp3hbY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$HiDFwQ00KZn2k7XjSY2W4AemAmo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$HoakbJWSKTWNgXqp-KqZUDQ2v3M;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Hv-tQz9yG7UQN-NW0Pun2vUKT00;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IEMjUYhA0mP8sRicHJTUcSHklKI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IFjmfnHIk0cwZ4cu_jTHWTsMxfc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IH37q4aCcb7fKvN7WNz4-JFtN1M;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IMrqSPgnQFlD9AquL6PEMeRT48A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ISVxczoeSB_OIc18VUJwvW1XWDw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IiTDvO4lH6i6MSEHWCEcAk85DDE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$IzlTyFucmXCd4PMovIDmqmmpJ_Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$J1D7mGzV3_Pe5CkN4SOHvBx0GQM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$J40SNkUbFjfJHtRZcSHYbhkkIpg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JBJyALwyQJsZ_dc_0yFxEbDWxjk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JE1PnTEmjhmAR-70siow09xiBRg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JGK9yG1wj3-orqdqBMnl7nMPLL4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Jd52Cn2ACBQ9fPq5K732aG_8iTY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JklCLZ8vzxbgTOI4Xt7ZbZsL0Dk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Jn1h0KwAOFO-2SLpickAr7b6UEI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$JtphNR0tnaOuEEn0ikwSL9fXD1M;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KOycIT0DtH49A4P5XWP73pI0dj4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KVBXyPBBtnY04KgNMY8kTUc8TDM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KnolhWMYD7G9f7e3KfTxyhi7Xjg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$KpzX_BpNOjdEddBwsYhu3UDTjU0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kt954vcIuhnBMcd-u6lDaLOaZfM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Kxt959fEmzAZCuTvdZLLr4ydBwg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L0UrX9eXuPfnxY8pUss60yr6d3E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L1BjBKCM4PsL1cN_5wbAOuBRIk8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$L3XzC2X57y8_uXrsW81Qk8KXQTA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Ld5sfZCEJNJ2WbpNqes0zQsde2I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LgaheO5I5mZ7xT2AeYYlkZKwrzU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LoHksgFKu14_Ln6PoeosRoDbwSw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LocalService$YxQa4ZcUPWKs76meOLw1c_tn1OU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$LoqX5KbgPsZw5lbWDX6YUnchwpU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MBTqJ13s-x_J2oljYVXrMdEJZ8o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MOLrAJRWCniZfP_bjE3gjYwLUTA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MRmEzbzRUozehYFykb5YqjHEt_s;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MTDdFPtPQJRYX737yGn0OzoNDCQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MW8w4Pd-7XMiVO9Fsi7HcnTblIo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MX3M3eTWWoV82PMImp1skv1Wm-I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MdCcLj6WQKJMyudRB0ePdeQg77k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$MviNnPMxpWJ3R18v9L0iG_mI4as;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$N18wt-LIW9paPKI_TTPbSWO6bBo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NQ8HQ2OEvYVwQcxv3HSGyE4pJg0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NV9-XJEdh3iVV_1FcyzVTLRWMMs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$NZ0oxk-Ik8VTdLKIQsEmJ4u8ge4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Nu-f7ZVLk0_egJ3zAQpMMR_T5ZE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$OL2XWo5c7ghltPdi2SyRK5POm-4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$OPWRB8NOzJI5iy7fnh0GBb93YAc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$OcqRV2qOJlY8E9xCUpwMhJGcmQM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Ohf5PJQmXjsarWisPAuPB8WECX8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$OmIywYg9v-MYZi3nGwhJlkHQU6U;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Onml4JIb-lgf_B0yniDhFL6SqPs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$P2nOCmk6UKsFCZPm0Fr5-8DwJKI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$P3h-UVT190ynE2bPKyoZs8z7pak;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PJ0C7ukpsSrXE-QKILsxBvc5f-U;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PbWvUymvyMNlDpwaJHqqjloqHY0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$PvWvjngN8JqJGeEwEDF8KNY9tDM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Q04hsrQ7laYfGd0a2yxfWGwUB2w;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Q26NV3WTVuMjxUPcG_Ce4APBYQQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Q2aFvXmF7YdOdbBObb4oqHGsO8k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Q9i_tyPkEfhioam4h9dIwd-X4Pg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Q9wyVuMahnMYX1BkwZ0hhT1S6cw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QQFWZYAphnYjdI68Fks2LdFuAgo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QSJKFWOoJ7s5g0HLgGWDuDCNelU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QSZZ_1yoXc0KadPc27uY1ijTXpM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QUJm_3fIWeaPInXzmBYpb8UWBEY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$QrMlHNz0PC-Ctzh_dDzUj8g5xm0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$R7jNGUHgN9uG5tT_PuItt7Vn00g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RB751AcDJaPqaU4DtTtgN1tidpA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RMYLQ6bxpyj9L88wy3v1nWqZ7Wg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RQLjmSc75b3yyzDq48EB60T-xJ0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RYzj0IXZ3UNMgwQnbenZ8i-9s60;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RaSE9sEzDuKpHnuwL4Ihn963J7g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$RgCXuyEFWhEba2UFAFFocJYLNYo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Rk6dbmkjZ2gQ7A2Eazn5ASwC3RU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Rt85y5wEY0DRLvRJ6XnzxsSF1eo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$SSPIfQ_rRI3lQvEj0ACrAZaUe6g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$SxNw2QtLreqUCvuB24woR-GjuMA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T-DYGQoYs3p1_NgKsVcKRX8fTnA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T4eSwgayOKOYwmmjCYnPFwO28Pw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$T7SRZQOZqOGELBG7YRAkVmxuJh4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$TSS9Yr-s-3wxWw1bzVWIxqNSkMk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$TSnfnLktaFMgNdIMhbxjbiz8gqA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$TcNgzWUAWtXQgb-e38C9PKE89Go;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Tf_SuyVihRcKkRFcIwGsSH6fYLU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$TistVIXPlboUC3QIj4JSWHtbCxQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ToBnODi9cmoTXsgBuVAERPdlksk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Tvjb8n7J2l26EpnkgMIAbjrhdu8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$TyEVpAcNrxbs_aScP7ydRC6JPq8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$U-CvSEcNqQJzFyxm9-WI72-937c;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$U1J_URN15ScrYGv9RfGM-uCj4pk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$U68n4iP9YZvCi9l_w8clW0ezl0E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UB9vMSrN5Y8UAmaQB2lj1M1M4hY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UGjCdSf2Rxgyqxv7KJhmrE1D48Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UPnhCNO69TKnF1hSXENMzK_2NSQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$UZoVWdpJJZwABGNhZWHbxPIvMO4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$VDIwg4X1iKAqFvQldV7uz3FQETk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Vg0S0XWRLxc15dP0DNjWoFnOlo4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$VqrEAorQ36H01_gtzS6luteYBs0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Vsgrnsu-JDIF867spjVbBkS6FtU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$W--TL5Jqd40HLcEvbX-xfRTBXg4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WClCPAIaYC1HcqeEWjZ5mwt9QEY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WPoBmlz33wJKdfRNgazaVqch_RI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WYP5q_IBba00XZnGp257U-5v_qM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WevGGQWsNzietlJkpgLAumbTjNU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$WtqYUfe7dJqIftHU4nTlehWlM1o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8P9YSbXKt6AGKQrPiFxyDc-HJQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$X8ssNAYCaueT78i6KH-xMYuutXA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XHdp-DhtN4kHoHFZDl3Q3ERAk4c;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XIgyjzk0MIew6CDVQI8Ae8JzYYY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XOdX3qkh6bxGtbYtcwPIQmfVatY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XnSMMFYuFPI3ne_otxnTw0Tx_Tk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XoA7qUoiMKNWGeLb0_PAA1GorHs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$Xtl9mqtvlMrCVZVtWJhb8BLKs4I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XxTvtDGjc65GwFaqkNXZsW63TPE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$XzyHMSPs-XjT8PmWp7Qpn7iczdw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$YA4XK8CPWPIZ24OqYJwgVT_5HYs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$YTkdlwrc6XAKuTn0p2mVi0oHrSM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$YzrBfeyVBmtTDtp-1wWRuGqpX1g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZFdrHPwd7Erny0jil4SeojoI0yE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZQ4kE3IfWore2zFzZG1Za8zcO2k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZX_ASbhDe3h4tTo7Tg94QibI20o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZazSf3xAT5dEmqVmEq4ScK7Em7s;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZjUzT0tdaozvbrToMBz5lXo_9gQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZnmDaAarGwYrOpGdw8hNrUXv7Zk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZplEHvL6OScKFb4GYIB1nKJqtd8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZpoQff3M1J7SHl-aNOO7YrgHMIw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ZyL5RaozhKx4pFmCb-n3LlH5zy8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_4WJ5_9h8DV0lHhL1rEl8TaHdxA;
 Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_Nw-YGl5ncBg-LJs8W81WNW6xoU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$_O5h-afqoPkhc8WaUr4EVDCDxU0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$__SFQBw4-nPdRkwUAOWlzeEXEDg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a2r02nyCVCgFWzutUK0956l0CYQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a30NURDJ7zRXLs68n_gcBSzFE40;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$a6N7YdVtFZPKYb2-gun76ulJ5fQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$aC4EXkkAMAWYv8qwbTvE24Kub28;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$b6NlDdKsoSylaG3SG2kID_T_mKI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$bouyOrED43n7AxQtiV7_tal36UY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$bt8Y4TXOqcLHPnaZVT6V787Lqhw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$byvbdSMbYMI25u0KJPfs_XsrYpM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cDpxDpKZ5POqE3OYBUq7OxTH9TU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cF-dIKd2XSk01iZ99bPAGkzvRQ8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cKidc1M10gM7lsDQq-dJXYRT7yM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cVXDr0Iu6R4M_ILrW6G7OOe40H8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ce_6_s-XSM555Wtht-tuaS4jh_Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cr-JLWKI9Q0W6mZziyfSq7n1Wxc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$crFaMQsO42AtLAJVGqKK5_OcRFY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cs7Jw_Ty60Ef1wUrMmzygNqwnKY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$cxqU3mrQvYaXt635Q0s7bc5lWXg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$d08rPNL3sI-Hx7ZpnR_dxsBLZmk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$dglutnmu9mKYgbZSpXZQbMKKvds;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$dhmKG9Egag2TPEwukGPiev6dT70;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$dnWqKdI2wwfbdJIvSwUGOiGJ_2U;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e2DzcGWRwnNdKo6blzNAob0HsSw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e3xcbpVR082uQMOIH1sFm-7ww_k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$e7c2huGjk3obVFka43jMbcJT0E8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eKrWywCP77ljwUZh-R1c8aoFHh4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eTztGRhk0T0d0Zt_QnBM1_amoPo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eV4vpckz4c7VE5pO-M0cZ315eUE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eZw4tgcZRgP2OCEUG4UMwL1KdZI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$el8xxlwPD9FXAFSeIFQoFZ6W4po;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$erIeDiO3NPFogMKpp4rw-CzQzyY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$evMMfIEOmotKwbweLAEWFf6tmk4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$eyzr70H-LIhamGl2lQJNuBnNUCg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fBEZoXFpOdFGTOWV_4afqn0J6Jo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fU0Evn2qWpzcawqc8Qu9d2hCcoA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fUEsKK2Ap8SOLg8jKKO8IWAOMHo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$fi3bp9Jg5MB-y7uy1juNXt4OgTY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$frL8-y9KUDCjvP_ukJ0uoU1Mk5k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$g3pjxXrKbnPToHF_egmYdr2f8-M;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$gUwTdpToc4b137uFTknYXprKx0I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$gbbZuAsRK_vXaCroy1gj9r0-V4o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$gyGQmraIFm9snTVcQs8v9x_oN2s;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$h5usYc0BlbipvFKYNcWISejzUxs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hN_ekQEl5DInXkKF8Q-qa6Pmb6E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hSkJUSDkGz1ZmNMPxLsgctH3Bx4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hVh-r9U8me62PnowMqWIYzsG__4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hWg24ME7nlaYglkgmkHI7VvIfWk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hX2NEWgF6rTNkdyJ6G_rvoL6TR0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$hohlWNRUxQL3ppUY1dM8mwNK67I;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$iJGFtbFrOPcW3nu2RGPHCHVu1-E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$imyf3XRXXjZCs-QgcGmDkyevO40;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$iojPtiJXnnFJDsa0P-LGE6gfikU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$j6r61e-hJc3TCg_zV4jTt3IZnPk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jDU7UhnyXuItN3e_DVSz6WUa7Qc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ja_JdZk-BJUe5rbQuU_LxLblBfM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jgsUvRSr_6U0Lrv4PXbJtZQe_Mk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$jqQoRiWmeM8a3MeBPfKE9lApkio;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$kRuvxF00uvZotgT3afXskSfAGzI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$l1-j9XdvuDdp7fQsY_n_Pv6CP3A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$l1OVi4X-0E2PRGCgmqaMDm9f37g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$l597rxoTSNqmNmqk6LNflbZy40g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lBH-DXXEe5fe_x6FRZ41LI-rdHY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lG9keASbSI5H2nDJOOi-80s_LvI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$liZQVQo5sYVwMOQlTlgxUF7fWMU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$lxepyUaTh9HejBaF0nHpaiCx0_s;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$m2h-vVM6u7Yweb_QNLSUAbWduj8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$m4rOeIPRBmiAyZePUlogYBlUqWg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mBqOqsTnwflzQ2R1u3HUeMrbjVI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mF6fAm3fr7FHqqfmNeO86iULgao;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mTtUOq0pM85nkOQibagz4NHu6gc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mkMQ9WtInWWL27eiU6IDs8Sol8Q;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mkvkdiyEMl05tI1rw6O3HygvaRY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$mxnMynV7fO8Pt3nYwwCODWeOMC8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nBM3fQ_95BD262BpQ3v_i1LTo9o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nDo4MxovM0DSBzOVm-GzbztXFFU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nJ1o9XvwkdXtKnTlJqUdmJP-79w;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$n_Z4yiCZPW15aN8wIrdQ-AZdONo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nbD4hzJ7SdekKDVJaFS0e_yoOtU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ng4tixim9kGp1JCPRZP6128y4Vs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ngRwwawqOGNh8B2G-2i4gOON3v8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nhnQ_4mt77CRywClA2_LCvN86-M;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$nkWVy9u7AzQNpu2s-LcA_ChoL_0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ntEsc6u7AnPDmT8-eKrNAgcP9-E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$o8yCHGIwCRCQbFYZ0lEmBtEJxg0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$oPL_fgeCfV3bjhOoeIBcgcoNzI4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$o_H-PxZs9hbF8cnz9neG6sE06E8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$p6M2CJuZlA3Rm0CLLTJMm5qd9vU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$pE7Amjgwpxhd3c82eV3sPlVpU7Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$pQr4-HeJd7F_DBrh2GLysG-VVqk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$pnGOhpYZbTior4-5l_ZVpjwHMlA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qLdZ0ebI9-VES2qOXxipAqDsLtg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qUFZingYce_mtufJ-COKvsGFldc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qVG_che5VZcjXofzxjKlurWwLu4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$qViz9I1AJUZv2wUBqL57ZuJyV6w;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$rIIGm_pcvT_tv88ID-sqKSFXqPU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$rP76VuxkDMpQvOKe_NhM7A9S5D0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$rU5IDfnRM1iicQF_3fSUkRMiJWs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$r_bhpqZN19zqo-UyWd_MN7sg9gk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$rg9PVcvT3UURAp6r5F9n-OzYW0o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$rgWIdVG-xIVE9DTQu1PoIuOkdEc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$s2hBmnk5DsUR6LzsI-hOmE3fbOI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$s7nsr83MiLj0X1p1Wlc_DLT8K_k;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$sKaiUCZhJCPEsQr9hbBm2BCLjFE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$sgJgS32ZNiiwGAfMZyTUvDVx3oE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$srUwh80IVWUvcHUY2qLiJl7DXbw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$stRgRygcW96CZ_aQdsj6efcedrw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$stYWAHQ1_37Oh1WhPMUK1JldOJ4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$sv3aqNyetv_Byb9X8ONZtlQZJG0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$swuqECN_oZ3Ck3YdyYEc6mtnat4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$sy2ThawNYz2_Mvwprqq7BkdyFPI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$szQlSNzC2ADtbjiyZ_BsctEeVvo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$t2IDLi9Z2kd4YgBQUweQjeF56So;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$t4_pjPJy5FQTNLdcE-DM8Y_3LFk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tAgDO0b7hXUD7MGkHfgPTDV4o6g;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tDS-z4u8kVI84TeTEN8vBdedFSA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tEq84x06yJ3TuolYQS3bpqsQnQ4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tWth7tXYQXpYp5Hzb8E7OMe1xQU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$tp-48y_8GxxZ_5HYpkvQSJUXCCs;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uBbMjDj76ovvi3SNe9WwB6bL1bg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uD3EtO2DK71MscaG7ykh6GMewyM;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$uX3N9oUyt7vAkRk62hfFpSIUfxU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ua0yrS5kFedpcAO57O20Vkmp_iU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ubKPRWVtvdZzQDW6CDEvggHJXRc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$v4runHJLxiL3Ks01Uqv-LIy69tA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vFs74BeiHI_1TW0yjvIUNhocv4w;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vR-RWtti8ewEGuhsA0IoU86GAmo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vbK5M-QMAlkZf1zA7KPOBiQxiAU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vmrMOPfGWyqGVGm4kjnJw9y43pg;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vsNaZOHvF-kWqLDfhyiTAaRLpQU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$vzueeb-BCfMYtgO3SeHI1YKhvCk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$w0sB6f-r2UXAh8dWEvNc-SAFTkY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wQUJoH3intmxV9FH1ypMmbuy0cQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wWlaczCw_V5Gjsu_Q1bzmhAPf4c;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wrebaRxLxzDXlP2L0mbsQk63W0Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$wynHOghqUtl8CTB8Lp1BnOlWruI;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xGPzaLfEk18lj3TzX73zjHkH5nE;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xJ8-hwvSE1cq8C5FtgXnoW_zBZU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xNEzeKxioITjjXluv5fVIH4Ral4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xSgT6QdDr4xnDwmWzibK-JrkVlk;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$x_XvH7NWMAoRsaUgVX92Cmco4J0;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xcgjFgZvtVsZvMCJ8GD7qseAgKw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xgC7PclKrFrtVX1O9t4fpDNgv0E;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xtNi-Fr5I3CYHdDTU1gC1K5Os44;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xt_J25l3ug-esItAoFFF6v_nxKc;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$xuhW_wd6YxaInBm76w-yoLWFE5o;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$y1mmEY6CDw01OUVh1NYq1BVWf2A;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$y4TmIIzrIWhefGZSS0RoexHhlYw;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$yeV2rhP1kSqkhwkWq2VA00I0Y6Y;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$ylqQ-0_BWKf5SNKi5IEZksGSyuU;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$yxbu3Ze4QwrYlONlYNa05wehYXA;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$z9w-PqXATVne7zR3PADeRtW0jf4;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$zErhxcsyTkaK2GsPBoPqruFzweQ;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$zhpBiZesw6vWyjay3oNmua6J6mY;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$zqWn6EZzfYDYc9JTg9Ag7SZ3qTo;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$zx-WdN6vyDW_q41Uj3Zg3ktwyG8;
+Lcom/android/server/devicepolicy/-$$Lambda$DevicePolicyManagerService$zyZhewRXB707f3cphuI380YTw64;
+Lcom/android/server/devicepolicy/-$$Lambda$NetworkLoggingHandler$VKC_fB9Ws13yQKJ8zNkiF3Wp0Jk;
+Lcom/android/server/devicepolicy/-$$Lambda$SecurityLogMonitor$y5Q3dMmmJ8bk5nBh8WR2MUroKrI;
+Lcom/android/server/devicepolicy/AbUpdateInstaller;
 Lcom/android/server/devicepolicy/BaseIDevicePolicyManager;
 Lcom/android/server/devicepolicy/CertificateMonitor$1;
 Lcom/android/server/devicepolicy/CertificateMonitor;
@@ -19010,8 +41974,14 @@
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$1;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$2;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$3;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$4$1;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$4;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$5;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$6;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$7;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$8;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$9;
+Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin$TrustAgentInfo;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$ActiveAdmin;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyConstantsObserver;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$DevicePolicyData;
@@ -19021,6 +41991,13 @@
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$RestrictionsListener;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService$SetupContentObserver;
 Lcom/android/server/devicepolicy/DevicePolicyManagerService;
+Lcom/android/server/devicepolicy/DeviceStateCacheImpl;
+Lcom/android/server/devicepolicy/NetworkLogger$1;
+Lcom/android/server/devicepolicy/NetworkLogger;
+Lcom/android/server/devicepolicy/NetworkLoggingHandler$1;
+Lcom/android/server/devicepolicy/NetworkLoggingHandler;
+Lcom/android/server/devicepolicy/NonAbUpdateInstaller;
+Lcom/android/server/devicepolicy/OverlayPackagesProvider$1;
 Lcom/android/server/devicepolicy/OverlayPackagesProvider$DefaultInjector;
 Lcom/android/server/devicepolicy/OverlayPackagesProvider$Injector;
 Lcom/android/server/devicepolicy/OverlayPackagesProvider;
@@ -19030,10 +42007,21 @@
 Lcom/android/server/devicepolicy/Owners$OwnerInfo;
 Lcom/android/server/devicepolicy/Owners$ProfileOwnerReadWriter;
 Lcom/android/server/devicepolicy/Owners;
+Lcom/android/server/devicepolicy/PersonalAppsSuspensionHelper;
+Lcom/android/server/devicepolicy/RemoteBugreportUtils;
 Lcom/android/server/devicepolicy/SecurityLogMonitor;
 Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Injector;
+Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager$Metadata;
 Lcom/android/server/devicepolicy/TransferOwnershipMetadataManager;
+Lcom/android/server/devicepolicy/UpdateInstaller;
 Lcom/android/server/display/-$$Lambda$AmbientBrightnessStatsTracker$vQZYn_dAhbvzT-Un4vvpuyIATII;
+Lcom/android/server/display/-$$Lambda$BrightnessTracker$_S_g5htVKYYPRPZzYSZzGdy7hM0;
+Lcom/android/server/display/-$$Lambda$BrightnessTracker$fmx2Mcw7OCEtRi9DwxxGQgA74fg;
+Lcom/android/server/display/-$$Lambda$DisplayAdapter$cOPGY8nGfp02WlhPeZ6ntLAXxvU;
+Lcom/android/server/display/-$$Lambda$DisplayAdapter$wRUuY3ELxjWqttjwkmhWSLcgkIA;
+Lcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$6tpawjjBXhlj4GSsJjStLZrwDUQ;
+Lcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$S4bSIp6drytTEiae37oiY_7m6ng;
+Lcom/android/server/display/-$$Lambda$LocalDisplayAdapter$LocalDisplayDevice$iXCIox7NAT3NknToX9AEwGueQjs;
 Lcom/android/server/display/-$$Lambda$VirtualDisplayAdapter$PFyqe-aYIEBicSVtuy5lL_bT8B0;
 Lcom/android/server/display/AmbientBrightnessStatsTracker$AmbientBrightnessStats;
 Lcom/android/server/display/AmbientBrightnessStatsTracker$Clock;
@@ -19045,11 +42033,15 @@
 Lcom/android/server/display/AutomaticBrightnessController$AmbientLightRingBuffer;
 Lcom/android/server/display/AutomaticBrightnessController$AutomaticBrightnessHandler;
 Lcom/android/server/display/AutomaticBrightnessController$Callbacks;
+Lcom/android/server/display/AutomaticBrightnessController$Injector;
 Lcom/android/server/display/AutomaticBrightnessController$TaskStackListenerImpl;
 Lcom/android/server/display/AutomaticBrightnessController;
 Lcom/android/server/display/BrightnessIdleJob;
+Lcom/android/server/display/BrightnessMappingStrategy$1;
 Lcom/android/server/display/BrightnessMappingStrategy$PhysicalMappingStrategy;
+Lcom/android/server/display/BrightnessMappingStrategy$SimpleMappingStrategy;
 Lcom/android/server/display/BrightnessMappingStrategy;
+Lcom/android/server/display/BrightnessTracker$1;
 Lcom/android/server/display/BrightnessTracker$BrightnessChangeValues;
 Lcom/android/server/display/BrightnessTracker$DisplayListener;
 Lcom/android/server/display/BrightnessTracker$Injector;
@@ -19059,6 +42051,7 @@
 Lcom/android/server/display/BrightnessTracker$SettingsObserver;
 Lcom/android/server/display/BrightnessTracker$TrackerHandler;
 Lcom/android/server/display/BrightnessTracker;
+Lcom/android/server/display/ColorFade$NaturalSurfaceLayout;
 Lcom/android/server/display/ColorFade;
 Lcom/android/server/display/DisplayAdapter$1;
 Lcom/android/server/display/DisplayAdapter$2;
@@ -19066,22 +42059,35 @@
 Lcom/android/server/display/DisplayAdapter;
 Lcom/android/server/display/DisplayBlanker;
 Lcom/android/server/display/DisplayDevice;
+Lcom/android/server/display/DisplayDeviceConfig;
 Lcom/android/server/display/DisplayDeviceInfo;
 Lcom/android/server/display/DisplayManagerService$1;
 Lcom/android/server/display/DisplayManagerService$AllowedDisplayModeObserver;
 Lcom/android/server/display/DisplayManagerService$BinderService;
 Lcom/android/server/display/DisplayManagerService$CallbackRecord;
+Lcom/android/server/display/DisplayManagerService$DesiredDisplayModeSpecsObserver;
 Lcom/android/server/display/DisplayManagerService$DisplayAdapterListener;
 Lcom/android/server/display/DisplayManagerService$DisplayManagerHandler;
 Lcom/android/server/display/DisplayManagerService$Injector;
 Lcom/android/server/display/DisplayManagerService$LocalService$1;
 Lcom/android/server/display/DisplayManagerService$LocalService;
+Lcom/android/server/display/DisplayManagerService$SettingsObserver;
 Lcom/android/server/display/DisplayManagerService$SyncRoot;
 Lcom/android/server/display/DisplayManagerService;
+Lcom/android/server/display/DisplayManagerShellCommand;
+Lcom/android/server/display/DisplayModeDirector$1;
 Lcom/android/server/display/DisplayModeDirector$AppRequestObserver;
+Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener$1;
+Lcom/android/server/display/DisplayModeDirector$BrightnessObserver$LightSensorEventListener;
+Lcom/android/server/display/DisplayModeDirector$BrightnessObserver;
+Lcom/android/server/display/DisplayModeDirector$DesiredDisplayConfigSpecs;
+Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecs;
+Lcom/android/server/display/DisplayModeDirector$DesiredDisplayModeSpecsListener;
+Lcom/android/server/display/DisplayModeDirector$DeviceConfigDisplaySettings;
 Lcom/android/server/display/DisplayModeDirector$DisplayModeDirectorHandler;
+Lcom/android/server/display/DisplayModeDirector$DisplayModeListener;
 Lcom/android/server/display/DisplayModeDirector$DisplayObserver;
-Lcom/android/server/display/DisplayModeDirector$Listener;
+Lcom/android/server/display/DisplayModeDirector$RefreshRateRange;
 Lcom/android/server/display/DisplayModeDirector$SettingsObserver;
 Lcom/android/server/display/DisplayModeDirector$Vote;
 Lcom/android/server/display/DisplayModeDirector;
@@ -19091,8 +42097,12 @@
 Lcom/android/server/display/DisplayPowerController$4;
 Lcom/android/server/display/DisplayPowerController$5;
 Lcom/android/server/display/DisplayPowerController$6;
+Lcom/android/server/display/DisplayPowerController$7;
 Lcom/android/server/display/DisplayPowerController$8;
+Lcom/android/server/display/DisplayPowerController$BrightnessReason;
 Lcom/android/server/display/DisplayPowerController$DisplayControllerHandler;
+Lcom/android/server/display/DisplayPowerController$ScreenOffUnblocker;
+Lcom/android/server/display/DisplayPowerController$ScreenOnUnblocker;
 Lcom/android/server/display/DisplayPowerController$SettingsObserver;
 Lcom/android/server/display/DisplayPowerController;
 Lcom/android/server/display/DisplayPowerState$1;
@@ -19110,7 +42120,10 @@
 Lcom/android/server/display/LogicalDisplay;
 Lcom/android/server/display/OverlayDisplayAdapter$1$1;
 Lcom/android/server/display/OverlayDisplayAdapter$1;
+Lcom/android/server/display/OverlayDisplayAdapter$OverlayDisplayHandle;
+Lcom/android/server/display/OverlayDisplayAdapter$OverlayMode;
 Lcom/android/server/display/OverlayDisplayAdapter;
+Lcom/android/server/display/OverlayDisplayWindow$Listener;
 Lcom/android/server/display/PersistentDataStore$1;
 Lcom/android/server/display/PersistentDataStore$BrightnessConfigurations;
 Lcom/android/server/display/PersistentDataStore$DisplayState;
@@ -19120,10 +42133,14 @@
 Lcom/android/server/display/RampAnimator$1;
 Lcom/android/server/display/RampAnimator$Listener;
 Lcom/android/server/display/RampAnimator;
+Lcom/android/server/display/VirtualDisplayAdapter$Callback;
+Lcom/android/server/display/VirtualDisplayAdapter$MediaProjectionCallback;
 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/color/-$$Lambda$ColorDisplayService$3e7BuPerYILI5JPZm17hU11tDtY;
+Lcom/android/server/display/color/AppSaturationController$1;
 Lcom/android/server/display/color/AppSaturationController$SaturationController;
 Lcom/android/server/display/color/AppSaturationController;
 Lcom/android/server/display/color/ColorDisplayService$1;
@@ -19139,31 +42156,51 @@
 Lcom/android/server/display/color/ColorDisplayService$NightDisplayAutoMode;
 Lcom/android/server/display/color/ColorDisplayService$NightDisplayTintController;
 Lcom/android/server/display/color/ColorDisplayService$TintHandler;
+Lcom/android/server/display/color/ColorDisplayService$TintValueAnimator;
+Lcom/android/server/display/color/ColorDisplayService$TwilightNightDisplayAutoMode;
 Lcom/android/server/display/color/ColorDisplayService;
 Lcom/android/server/display/color/DisplayTransformManager;
 Lcom/android/server/display/color/DisplayWhiteBalanceTintController;
 Lcom/android/server/display/color/GlobalSaturationTintController;
 Lcom/android/server/display/color/TintController;
+Lcom/android/server/display/config/DisplayConfiguration;
+Lcom/android/server/display/config/NitsMap;
+Lcom/android/server/display/config/Point;
+Lcom/android/server/display/config/XmlParser;
+Lcom/android/server/display/utils/AmbientFilter$WeightedMovingAverageAmbientFilter;
+Lcom/android/server/display/utils/AmbientFilter;
+Lcom/android/server/display/utils/AmbientFilterFactory;
 Lcom/android/server/display/utils/History;
 Lcom/android/server/display/utils/Plog$SystemPlog;
 Lcom/android/server/display/utils/Plog;
 Lcom/android/server/display/utils/RollingBuffer;
-Lcom/android/server/display/whitebalance/AmbientFilter$WeightedMovingAverageAmbientFilter;
-Lcom/android/server/display/whitebalance/AmbientFilter;
 Lcom/android/server/display/whitebalance/AmbientSensor$1;
+Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor$Callbacks;
 Lcom/android/server/display/whitebalance/AmbientSensor$AmbientBrightnessSensor;
+Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor$Callbacks;
 Lcom/android/server/display/whitebalance/AmbientSensor$AmbientColorTemperatureSensor;
 Lcom/android/server/display/whitebalance/AmbientSensor;
 Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController$Callbacks;
+Lcom/android/server/display/whitebalance/DisplayWhiteBalanceController;
 Lcom/android/server/display/whitebalance/DisplayWhiteBalanceFactory;
 Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings$DisplayWhiteBalanceSettingsHandler;
-Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings$SettingsObserver;
 Lcom/android/server/display/whitebalance/DisplayWhiteBalanceSettings;
+Lcom/android/server/display/whitebalance/DisplayWhiteBalanceThrottler;
+Lcom/android/server/dreams/-$$Lambda$DreamManagerService$f7cEVKQvPKMm_Ir9dq0e6PSOkX8;
+Lcom/android/server/dreams/-$$Lambda$gXC4nM2f5GMCBX0ED45DCQQjqv0;
 Lcom/android/server/dreams/DreamController$1;
 Lcom/android/server/dreams/DreamController$2;
+Lcom/android/server/dreams/DreamController$3;
+Lcom/android/server/dreams/DreamController$DreamRecord$1;
+Lcom/android/server/dreams/DreamController$DreamRecord$2;
+Lcom/android/server/dreams/DreamController$DreamRecord$3;
+Lcom/android/server/dreams/DreamController$DreamRecord$4;
+Lcom/android/server/dreams/DreamController$DreamRecord;
 Lcom/android/server/dreams/DreamController$Listener;
 Lcom/android/server/dreams/DreamController;
 Lcom/android/server/dreams/DreamManagerService$1;
+Lcom/android/server/dreams/DreamManagerService$2;
+Lcom/android/server/dreams/DreamManagerService$3;
 Lcom/android/server/dreams/DreamManagerService$4;
 Lcom/android/server/dreams/DreamManagerService$5;
 Lcom/android/server/dreams/DreamManagerService$6;
@@ -19225,26 +42262,44 @@
 Lcom/android/server/firewall/StringFilter$StartsWithFilter;
 Lcom/android/server/firewall/StringFilter$ValueProvider;
 Lcom/android/server/firewall/StringFilter;
+Lcom/android/server/gpu/GpuService$1;
+Lcom/android/server/gpu/GpuService$DeviceConfigListener;
 Lcom/android/server/gpu/GpuService$PackageReceiver;
 Lcom/android/server/gpu/GpuService$SettingsObserver;
 Lcom/android/server/gpu/GpuService;
 Lcom/android/server/hdmi/HdmiCecController;
 Lcom/android/server/hdmi/HdmiControlService;
+Lcom/android/server/incident/-$$Lambda$PendingReports$42Ba6ZxAFxFmqtPlfnXNpuKHOXM;
+Lcom/android/server/incident/-$$Lambda$PendingReports$B2hwzQpyMfhPG0Cw6n_Xz1SrHR0;
+Lcom/android/server/incident/-$$Lambda$PendingReports$h00dGfNWXgDmC4-YyxYy1CUoKw4;
+Lcom/android/server/incident/IncidentCompanionService$1;
 Lcom/android/server/incident/IncidentCompanionService$BinderService;
 Lcom/android/server/incident/IncidentCompanionService;
+Lcom/android/server/incident/PendingReports$PendingReportRec;
 Lcom/android/server/incident/PendingReports;
 Lcom/android/server/incident/RequestQueue$1;
+Lcom/android/server/incident/RequestQueue$Rec;
 Lcom/android/server/incident/RequestQueue;
-Lcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$D8HGGcjBX_RP_b5u02Ee0u4nYKM;
+Lcom/android/server/incremental/IncrementalManagerService;
+Lcom/android/server/incremental/IncrementalManagerShellCommand;
+Lcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$1$TLhe3_2yHs5UB69Y7lf2s7OxJCo;
 Lcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$_fKw-VUP0pSfcMMlgRqoT4OPhxw;
+Lcom/android/server/infra/-$$Lambda$AbstractMasterSystemService$su3lJpEVIbL-C7doP4eboTpqjxU;
 Lcom/android/server/infra/AbstractMasterSystemService$1;
 Lcom/android/server/infra/AbstractMasterSystemService$SettingsObserver;
+Lcom/android/server/infra/AbstractMasterSystemService$Visitor;
 Lcom/android/server/infra/AbstractMasterSystemService;
 Lcom/android/server/infra/AbstractPerUserSystemService;
+Lcom/android/server/infra/FrameworkResourcesServiceNameResolver$1;
 Lcom/android/server/infra/FrameworkResourcesServiceNameResolver;
 Lcom/android/server/infra/SecureSettingsServiceNameResolver;
 Lcom/android/server/infra/ServiceNameResolver$NameResolverListener;
 Lcom/android/server/infra/ServiceNameResolver;
+Lcom/android/server/input/-$$Lambda$InputManagerService$M0FF5e8p6FGyFBNFwEYoVAKqrhQ;
+Lcom/android/server/input/-$$Lambda$InputManagerService$P986LfJHWb-Wytu9J9I0HQIpodU;
+Lcom/android/server/input/-$$Lambda$InputManagerService$e8CLEFczq_4kLYCG30uaJDgK3rA;
+Lcom/android/server/input/-$$Lambda$InputManagerService$o1rqNjeoTO6WW7Ut-lKtY_eyNc8;
+Lcom/android/server/input/ConfigurationProcessor;
 Lcom/android/server/input/InputManagerService$10;
 Lcom/android/server/input/InputManagerService$11;
 Lcom/android/server/input/InputManagerService$12;
@@ -19257,29 +42312,52 @@
 Lcom/android/server/input/InputManagerService$7;
 Lcom/android/server/input/InputManagerService$8;
 Lcom/android/server/input/InputManagerService$9;
+Lcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;
+Lcom/android/server/input/InputManagerService$InputFilterHost;
 Lcom/android/server/input/InputManagerService$InputManagerHandler;
+Lcom/android/server/input/InputManagerService$InputMonitorHost;
 Lcom/android/server/input/InputManagerService$KeyboardLayoutDescriptor;
 Lcom/android/server/input/InputManagerService$KeyboardLayoutVisitor;
 Lcom/android/server/input/InputManagerService$LocalService;
+Lcom/android/server/input/InputManagerService$TabletModeChangedListenerRecord;
+Lcom/android/server/input/InputManagerService$VibratorToken;
 Lcom/android/server/input/InputManagerService$WindowManagerCallbacks;
 Lcom/android/server/input/InputManagerService$WiredAccessoryCallbacks;
 Lcom/android/server/input/InputManagerService;
+Lcom/android/server/input/PersistentDataStore$1;
 Lcom/android/server/input/PersistentDataStore$InputDeviceState;
 Lcom/android/server/input/PersistentDataStore;
-Lcom/android/server/inputmethod/-$$Lambda$BtVoYGfjUzT8tA4EGItlh1AhWS4;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$-9-NV9-J24Jr9m-wcbQnLu0hhjU;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$MMyKF1SeotTOu5KNBltIfhafmb8;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$SkFx0gCz5ltIh90rm1gl_N-wDWM;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$Ufznp6QtlvKmc-UE2qM5QE0C6tE;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$cbEjGgC40X7HsuUviRQkKGegQKg;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$fNiO49PxZWEh32vCF6nuqhrDtOw;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$i1_7vZfXoh5fbjEb2f7kLcAViOU;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$oxpSIwENeEjKtHbxqUXuaXD0Gn8;
+Lcom/android/server/inputmethod/-$$Lambda$InputMethodManagerService$yBUcRNgC_2SdMjBHdbSjb2l9-Rw;
+Lcom/android/server/inputmethod/-$$Lambda$Z2NtIIfW6UZqUgiVBM1fNETGPS8;
 Lcom/android/server/inputmethod/AdditionalSubtypeUtils;
+Lcom/android/server/inputmethod/InputContentUriTokenHandler;
 Lcom/android/server/inputmethod/InputMethodManagerInternal$1;
+Lcom/android/server/inputmethod/InputMethodManagerInternal$InputMethodListListener;
 Lcom/android/server/inputmethod/InputMethodManagerInternal;
 Lcom/android/server/inputmethod/InputMethodManagerService$1;
 Lcom/android/server/inputmethod/InputMethodManagerService$2;
+Lcom/android/server/inputmethod/InputMethodManagerService$3;
+Lcom/android/server/inputmethod/InputMethodManagerService$4;
+Lcom/android/server/inputmethod/InputMethodManagerService$5;
+Lcom/android/server/inputmethod/InputMethodManagerService$ActivityViewInfo;
 Lcom/android/server/inputmethod/InputMethodManagerService$ClientDeathRecipient;
 Lcom/android/server/inputmethod/InputMethodManagerService$ClientState;
 Lcom/android/server/inputmethod/InputMethodManagerService$DebugFlag;
 Lcom/android/server/inputmethod/InputMethodManagerService$DebugFlags;
 Lcom/android/server/inputmethod/InputMethodManagerService$HardKeyboardListener;
 Lcom/android/server/inputmethod/InputMethodManagerService$ImeDisplayValidator;
+Lcom/android/server/inputmethod/InputMethodManagerService$ImeSubtypeListAdapter;
 Lcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForAllUsers;
 Lcom/android/server/inputmethod/InputMethodManagerService$ImmsBroadcastReceiverForSystemUser;
+Lcom/android/server/inputmethod/InputMethodManagerService$InlineSuggestionsRequestCallbackDecorator;
 Lcom/android/server/inputmethod/InputMethodManagerService$InputMethodPrivilegedOperationsImpl;
 Lcom/android/server/inputmethod/InputMethodManagerService$Lifecycle;
 Lcom/android/server/inputmethod/InputMethodManagerService$LocalServiceImpl;
@@ -19287,113 +42365,112 @@
 Lcom/android/server/inputmethod/InputMethodManagerService$MyPackageMonitor;
 Lcom/android/server/inputmethod/InputMethodManagerService$SessionState;
 Lcom/android/server/inputmethod/InputMethodManagerService$SettingsObserver;
+Lcom/android/server/inputmethod/InputMethodManagerService$ShellCommandImpl;
 Lcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory$Entry;
 Lcom/android/server/inputmethod/InputMethodManagerService$StartInputHistory;
 Lcom/android/server/inputmethod/InputMethodManagerService$StartInputInfo;
 Lcom/android/server/inputmethod/InputMethodManagerService;
+Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$1;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ControllerImpl;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$DynamicRotationList;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$ImeSubtypeListItem;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$InputMethodAndSubtypeList;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController$StaticRotationList;
 Lcom/android/server/inputmethod/InputMethodSubtypeSwitchingController;
+Lcom/android/server/inputmethod/InputMethodSystemProperty;
 Lcom/android/server/inputmethod/InputMethodUtils$1;
+Lcom/android/server/inputmethod/InputMethodUtils$InputMethodListBuilder;
 Lcom/android/server/inputmethod/InputMethodUtils$InputMethodSettings;
 Lcom/android/server/inputmethod/InputMethodUtils;
 Lcom/android/server/inputmethod/LocaleUtils$LocaleExtractor;
-Lcom/android/server/job/-$$Lambda$JobConcurrencyManager$5dmb0pQscXPwEG6SBnhs7aCwpSs;
-Lcom/android/server/job/-$$Lambda$JobSchedulerService$AauD0it1BcgWldVm_V1m2Jo7_Zc;
-Lcom/android/server/job/-$$Lambda$JobSchedulerService$Lfddr1PhKRLtm92W7niRGMWO69M;
-Lcom/android/server/job/-$$Lambda$JobSchedulerService$V6_ZmVmzJutg4w0s0LktDOsRAss;
-Lcom/android/server/job/-$$Lambda$JobSchedulerService$nXpbkYDrU0yC5DuTafFiblXBdTY;
-Lcom/android/server/job/-$$Lambda$JobStore$JobSet$D9839QVHHu4X-hnxouyIMkP5NWA;
-Lcom/android/server/job/-$$Lambda$JobStore$JobSet$id1Y3Yh8Y9sEb-njlNCUNay6U9k;
-Lcom/android/server/job/JobCompletedListener;
-Lcom/android/server/job/JobConcurrencyManager$1;
-Lcom/android/server/job/JobConcurrencyManager$JobCountTracker;
-Lcom/android/server/job/JobConcurrencyManager;
-Lcom/android/server/job/JobPackageTracker$DataSet;
-Lcom/android/server/job/JobPackageTracker;
-Lcom/android/server/job/JobSchedulerInternal$JobStorePersistStats;
-Lcom/android/server/job/JobSchedulerInternal;
-Lcom/android/server/job/JobSchedulerService$1;
-Lcom/android/server/job/JobSchedulerService$2;
-Lcom/android/server/job/JobSchedulerService$3;
-Lcom/android/server/job/JobSchedulerService$Constants;
-Lcom/android/server/job/JobSchedulerService$ConstantsObserver;
-Lcom/android/server/job/JobSchedulerService$DeferredJobCounter;
-Lcom/android/server/job/JobSchedulerService$HeartbeatAlarmListener;
-Lcom/android/server/job/JobSchedulerService$JobHandler;
-Lcom/android/server/job/JobSchedulerService$JobSchedulerStub;
-Lcom/android/server/job/JobSchedulerService$LocalService;
-Lcom/android/server/job/JobSchedulerService$MaxJobCounts;
-Lcom/android/server/job/JobSchedulerService$MaxJobCountsPerMemoryTrimLevel;
-Lcom/android/server/job/JobSchedulerService$MaybeReadyJobQueueFunctor;
-Lcom/android/server/job/JobSchedulerService$ReadyJobQueueFunctor;
-Lcom/android/server/job/JobSchedulerService$StandbyTracker;
-Lcom/android/server/job/JobSchedulerService$ThermalStatusListener;
-Lcom/android/server/job/JobSchedulerService;
-Lcom/android/server/job/JobServiceContext$JobServiceHandler;
-Lcom/android/server/job/JobServiceContext;
-Lcom/android/server/job/JobStore$1;
-Lcom/android/server/job/JobStore$JobSet;
-Lcom/android/server/job/JobStore$ReadJobMapFromDiskRunnable;
-Lcom/android/server/job/JobStore;
-Lcom/android/server/job/StateChangedListener;
-Lcom/android/server/job/controllers/-$$Lambda$QuotaController$Nr0Q3oPwHBGHfHSdpzIm80t7M7s;
-Lcom/android/server/job/controllers/-$$Lambda$QuotaController$StandbyTracker$HBosnPX15xU_maD6xbBsC7aJqOU;
-Lcom/android/server/job/controllers/-$$Lambda$QuotaController$StandbyTracker$UNCXPiY4xGPFhTnC-LuVzvqiAl4;
-Lcom/android/server/job/controllers/BackgroundJobsController$1;
-Lcom/android/server/job/controllers/BackgroundJobsController$UpdateJobFunctor;
-Lcom/android/server/job/controllers/BackgroundJobsController;
-Lcom/android/server/job/controllers/BatteryController$ChargingTracker;
-Lcom/android/server/job/controllers/BatteryController;
-Lcom/android/server/job/controllers/ConnectivityController$1;
-Lcom/android/server/job/controllers/ConnectivityController$2;
-Lcom/android/server/job/controllers/ConnectivityController$CcHandler;
-Lcom/android/server/job/controllers/ConnectivityController;
-Lcom/android/server/job/controllers/ContentObserverController;
-Lcom/android/server/job/controllers/DeviceIdleJobsController$1;
-Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleJobsDelayHandler;
-Lcom/android/server/job/controllers/DeviceIdleJobsController$DeviceIdleUpdateFunctor;
-Lcom/android/server/job/controllers/DeviceIdleJobsController;
-Lcom/android/server/job/controllers/IdleController;
-Lcom/android/server/job/controllers/JobStatus;
-Lcom/android/server/job/controllers/QuotaController$1;
-Lcom/android/server/job/controllers/QuotaController$2;
-Lcom/android/server/job/controllers/QuotaController$ChargingTracker;
-Lcom/android/server/job/controllers/QuotaController$DeleteTimingSessionsFunctor$1;
-Lcom/android/server/job/controllers/QuotaController$DeleteTimingSessionsFunctor;
-Lcom/android/server/job/controllers/QuotaController$EarliestEndTimeFunctor;
-Lcom/android/server/job/controllers/QuotaController$ExecutionStats;
-Lcom/android/server/job/controllers/QuotaController$QcAlarmListener;
-Lcom/android/server/job/controllers/QuotaController$QcHandler;
-Lcom/android/server/job/controllers/QuotaController$StandbyTracker;
-Lcom/android/server/job/controllers/QuotaController$Timer;
-Lcom/android/server/job/controllers/QuotaController$UidConstraintUpdater;
-Lcom/android/server/job/controllers/QuotaController$UserPackageMap;
-Lcom/android/server/job/controllers/QuotaController;
-Lcom/android/server/job/controllers/StateController;
-Lcom/android/server/job/controllers/StorageController$StorageTracker;
-Lcom/android/server/job/controllers/StorageController;
-Lcom/android/server/job/controllers/TimeController$1;
-Lcom/android/server/job/controllers/TimeController$2;
-Lcom/android/server/job/controllers/TimeController;
-Lcom/android/server/job/controllers/idle/-$$Lambda$DeviceIdlenessTracker$-H1-ZwZAJ-vh10A0PeYXaZLj_R0;
-Lcom/android/server/job/controllers/idle/DeviceIdlenessTracker;
-Lcom/android/server/job/controllers/idle/IdlenessListener;
-Lcom/android/server/job/controllers/idle/IdlenessTracker;
+Lcom/android/server/inputmethod/LocaleUtils;
+Lcom/android/server/inputmethod/MultiClientInputMethodManagerService$Lifecycle;
+Lcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$1$AQicMJqZVSufBnAD8HJ81gPtf7Y;
+Lcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$mjGol37R4-F3yOIKIoAbde7yLk0;
+Lcom/android/server/integrity/-$$Lambda$AppIntegrityManagerServiceImpl$uoiTatxA4aGwrlfDx0m8FP_FtCo;
+Lcom/android/server/integrity/AppIntegrityManagerService;
+Lcom/android/server/integrity/AppIntegrityManagerServiceImpl$1;
+Lcom/android/server/integrity/AppIntegrityManagerServiceImpl;
+Lcom/android/server/integrity/IntegrityFileManager;
+Lcom/android/server/integrity/IntegrityUtils;
+Lcom/android/server/integrity/engine/-$$Lambda$I1P1n5zkAf1R76LNtLXDmbu8DuM;
+Lcom/android/server/integrity/engine/-$$Lambda$RuleEvaluationEngine$FG2m_EhrIHu0hqkBa5ri2WKDeuU;
+Lcom/android/server/integrity/engine/RuleEvaluationEngine;
+Lcom/android/server/integrity/engine/RuleEvaluator;
+Lcom/android/server/integrity/model/BitInputStream;
+Lcom/android/server/integrity/model/BitOutputStream;
+Lcom/android/server/integrity/model/BitTrackedInputStream;
+Lcom/android/server/integrity/model/ByteTrackedOutputStream;
+Lcom/android/server/integrity/model/IntegrityCheckResult$Effect;
+Lcom/android/server/integrity/model/IntegrityCheckResult;
+Lcom/android/server/integrity/model/RuleMetadata;
+Lcom/android/server/integrity/parser/BinaryFileOperations;
+Lcom/android/server/integrity/parser/LimitInputStream;
+Lcom/android/server/integrity/parser/RandomAccessInputStream;
+Lcom/android/server/integrity/parser/RandomAccessObject;
+Lcom/android/server/integrity/parser/RuleBinaryParser;
+Lcom/android/server/integrity/parser/RuleIndexRange;
+Lcom/android/server/integrity/parser/RuleIndexingController;
+Lcom/android/server/integrity/parser/RuleMetadataParser;
+Lcom/android/server/integrity/parser/RuleParseException;
+Lcom/android/server/integrity/parser/RuleParser;
+Lcom/android/server/integrity/serializer/-$$Lambda$RuleBinarySerializer$zQONQpJbeFriqC_n-BZzfoN_XZk;
+Lcom/android/server/integrity/serializer/-$$Lambda$UV1wDVoVlbcxpr8zevj_aMFtUGw;
+Lcom/android/server/integrity/serializer/RuleBinarySerializer;
+Lcom/android/server/integrity/serializer/RuleIndexingDetailsIdentifier;
+Lcom/android/server/integrity/serializer/RuleMetadataSerializer;
+Lcom/android/server/integrity/serializer/RuleSerializeException;
+Lcom/android/server/integrity/serializer/RuleSerializer;
+Lcom/android/server/lights/-$$Lambda$LightsService$LightImpl$0Tv691Vnph8HFbwps7sFDuvrhv0;
+Lcom/android/server/lights/-$$Lambda$LightsService$LightsManagerBinderService$8FmNnEggUQUk5aNo2TKU1g6SMDA;
 Lcom/android/server/lights/Light;
 Lcom/android/server/lights/LightsManager;
 Lcom/android/server/lights/LightsService$1;
 Lcom/android/server/lights/LightsService$2;
 Lcom/android/server/lights/LightsService$LightImpl;
+Lcom/android/server/lights/LightsService$LightsManagerBinderService$Session;
+Lcom/android/server/lights/LightsService$LightsManagerBinderService;
 Lcom/android/server/lights/LightsService;
+Lcom/android/server/lights/LogicalLight;
 Lcom/android/server/location/-$$Lambda$5U-_NhZgxqnYDZhpyacq4qBxh8k;
+Lcom/android/server/location/-$$Lambda$7zgzwOWgEFtr6DuyW9EYKot7bHU;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$3HtpTaeZPwUqdVjGVtj1KqJeRWw;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$7mcCTIOqvoJb2WvnMUdvA1Gicj4;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$Cz0MzfhYL-KpWWW0XmxsZTNwnI0;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$FRdWEbu93JPBpviTG1AkogCflNc;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$I29l5_Y-rKhaHygNa-fvF70mzA0;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$diUZq3K1KUpjC4EqB0SQY_fHHGM;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$kFGsZg9Hx50h6WYQeAMQABkRKNU;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$s_g7M1EFAxoisWC6LYYgN-hWTwc;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$tT5Ydpt2Xk0BtGNe34XjfHM0Bks;
+Lcom/android/server/location/-$$Lambda$AbstractLocationProvider$wZCGZbIMAspHRG64AcKlNjhWJEk;
+Lcom/android/server/location/-$$Lambda$ActivityRecognitionProxy$1$d2hvjp-Sk2zwb2N0mtEiubZ0jBE;
+Lcom/android/server/location/-$$Lambda$AppForegroundHelper$7asxY_maANt1D_AUTchqbCjktH0;
+Lcom/android/server/location/-$$Lambda$AppForegroundHelper$gltDhiWDJwfMNZ8gJdumXZH8_Hg;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$7Uwy0RpQUtRsDYbocrZ-WuXEVJQ;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$B9OxjmBvqPB3gqJ7VRMqEIw1cbY;
 Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$CFacmt7807NhDDkp6CgbkeGnMvQ;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$LSvRo4l-aTVqttfWfOHNw7uyb3Q;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$NOnZ9Z0Vw11snzPmdVOE1pPrZ_4;
 Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$P9IUEzaG4gP8jALe00of9jdlrGw;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$dhEakMhmIulMdmLMree-thpxPXU;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$euuUV-nmBEuGSQnmknMVANWcP88;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$iBGtMeLZ6k5dYJZb_VEUfBBYh9s;
+Lcom/android/server/location/-$$Lambda$ContextHubClientBroker$ykmLCadaR6NcV4R42i4K8zw4AWs;
+Lcom/android/server/location/-$$Lambda$ContextHubClientManager$VPD5ebhe8Z67S8QKuTR4KzeshK8;
+Lcom/android/server/location/-$$Lambda$ContextHubClientManager$WHzSH2f-YJ3FaiF7JXPP-7oX9EE;
+Lcom/android/server/location/-$$Lambda$ContextHubClientManager$aRAV9Gn84ao-4XOiN6tFizfZjHo;
 Lcom/android/server/location/-$$Lambda$ContextHubClientManager$f15OSYbsSONpkXn7GinnrBPeumw;
+Lcom/android/server/location/-$$Lambda$ContextHubClientManager$gN_vRogwyzr9qBjrQpKwwHzrFAo;
+Lcom/android/server/location/-$$Lambda$ContextHubService$CF_XmCHU9Bf2P5yun6nYrbm6Fpk;
+Lcom/android/server/location/-$$Lambda$ContextHubService$HPGvKluemttyVfAcSog-eXiJyHE;
+Lcom/android/server/location/-$$Lambda$ContextHubService$yrt4Ybb62ufyqsQQMJoTJ2JMw_4;
 Lcom/android/server/location/-$$Lambda$ContextHubTransactionManager$sHbjr4TaLEATkCX_yhD2L7ebuxE;
+Lcom/android/server/location/-$$Lambda$GeocoderProxy$jfLn3HL2BzwsKdoI6ZZeFfEe10k;
+Lcom/android/server/location/-$$Lambda$GeocoderProxy$l4GRjTzjcqxZJILrVLX5qayXBE0;
+Lcom/android/server/location/-$$Lambda$GeofenceProxy$GeofenceProxyServiceConnection$yPO-K2AUteHenF5MXfJoSnZURWI;
+Lcom/android/server/location/-$$Lambda$GeofenceProxy$GeofenceProxyServiceConnection$zlbg9IPCIuzTl4MNd_aO2VH84CU;
+Lcom/android/server/location/-$$Lambda$GeofenceProxy$hIfaTtsg4NqVfDRkaCxUg6rx90I;
 Lcom/android/server/location/-$$Lambda$GeofenceProxy$nfSKchjbT2ANT9GbYwyAcTjzBwQ;
 Lcom/android/server/location/-$$Lambda$GnssConfiguration$1$384RrX20Mx6OJsRiqsQcSxYdcZc;
 Lcom/android/server/location/-$$Lambda$GnssConfiguration$1$5tBf0Ru8L994vqKbXOeOBj2A-CA;
@@ -19402,31 +42479,92 @@
 Lcom/android/server/location/-$$Lambda$GnssConfiguration$1$aaV8BigB_1Oil1H82EHUb0zvWPo;
 Lcom/android/server/location/-$$Lambda$GnssConfiguration$1$rRu0NBMB8DgPt3DY5__6u_WNl7A;
 Lcom/android/server/location/-$$Lambda$GnssConfiguration$1$sKzdHBM7V7DxdhcWx1u8hipJYFo;
-Lcom/android/server/location/-$$Lambda$GnssLocationProvider$66Ps_H__HqfpDfa8sAGZy2xaKsc;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$3-p6UujuU3pwMrR_jYW3uvQiXNM;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$9MM35t5nvyDpqsn9eNpZKYoZgE4;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$EdWkocFV52YPVPhXR-8dHVOO94k;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$Mf3hti2G0vD9ZNlxSGs0q1o7fm4;
 Lcom/android/server/location/-$$Lambda$GnssLocationProvider$Q6M8z_ZBiD7BNs3kvNmVrqoHSng;
-Lcom/android/server/location/-$$Lambda$GnssLocationProvider$WbIUWqWbiKrZx6NHwSpsFU1pHKI;
-Lcom/android/server/location/-$$Lambda$GnssLocationProvider$rE3aXybVXWDfHPxCjEXzxG9bPmo;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$_xEBoJSNGaiPvO5kj-sfJB7tZYk;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$adAUsgD5mK9uoxw0KEjaMYtp_Ro;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$cSSwMZHkxTRwFeOp8gWaG_qGZ5A;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$ecDMZdWsEh2URVlhxaEdh1Ifjc8;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$iKRZ4-bb3otAVYEgv859Z4uWXAo;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$jmXMIeP-Oz1yyVRIDOicfl2ucfI;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$nZP4qF7PEET3HrkcVZAYhG3Bm0c;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$oOmW6rOO6xCNWQPEjj4mX2PxDsI;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$rgfO__O6aj3JBohawF88T-AfsaY;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$tViaOq3LA5BWjgBCpCz5nJIfQdI;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$yfrbw7SiyKDgHamyMz3bNbh47g8;
+Lcom/android/server/location/-$$Lambda$GnssLocationProvider$zDU-4stA5kbnbj2CmSK2PauyroM;
+Lcom/android/server/location/-$$Lambda$GnssMeasurementCorrectionsProvider$VUSA1ROgV90b6YMNVx53Jh7SSc8;
+Lcom/android/server/location/-$$Lambda$GnssMeasurementsProvider$Qlkb-fzzYggD17FlZmrylRJr2vE;
+Lcom/android/server/location/-$$Lambda$GnssNavigationMessageProvider$FPgP5DRMyheqM1CQ4z7jkoJwIFg;
+Lcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$YEGTN3glQ7Hr1FK-xXGbC4KcmJY;
+Lcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$aTyNcuGLHmJGtXKl9qoZpMmhfBY;
+Lcom/android/server/location/-$$Lambda$GnssNetworkConnectivityHandler$axxNnxmo3KqgsSDot69yokC4KVE;
+Lcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$0MNjUouf1HJVcFD10rzoJIkzCrw;
+Lcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$6s2HBSMgP5pXrugfCvtIf9QHndI;
+Lcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$AtHI8E6PAjonHH1N0ZGabW0VF6c;
+Lcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$H9Tg_OtCE9BSJiAQYs_ITHFpiHU;
+Lcom/android/server/location/-$$Lambda$GnssStatusListenerHelper$WA8CUTRQeFIyZhMJFtziHItmYNA;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$3hQO4NR8YgRdTo_ZUTbEKP4-TIU;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$FLGfeDaxF8J3CE9m-TcOXh5j6ow;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$WNe_V-oiVnZtOTinPJBWWgUSctQ;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$YLPk0FuuEUrv7lfRNYvhNb6uKic;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$cq648s0kLZajRjefd-RR_iUZoiQ;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$ezKd0QctWKgyrEvPFQUXWNBxlNg;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$nmfWkQtbYmj8KoGmFncGZnuzWS0;
+Lcom/android/server/location/-$$Lambda$GnssVisibilityControl$rgPyvoFYNphS-9zV3fbeQCNLxa8;
+Lcom/android/server/location/-$$Lambda$HardwareActivityRecognitionProxy$Z7jbekKm-LTVAz47zPN0h1VYfjo;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$-2Oydd5e411MBMGt3B1yw8f6h-Y;
 Lcom/android/server/location/-$$Lambda$LocationProviderProxy$2$QT3uzVX4fLIc1b7F_cP9P1hzluA;
-Lcom/android/server/location/-$$Lambda$LocationProviderProxy$p3DjIvk7Of_sUF4Dc9plMNfdklc;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$26d2FFhpYis1Ws92o2khDXr7LzU;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$3wGALcuMWaMkkBRL1d0LQ_QqoCk;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$DolK0RPdYvNbDbCY51eoLe2SJLw;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$Uez3oEpu2OhUykPUhHZnDv6UWJI;
+Lcom/android/server/location/-$$Lambda$LocationProviderProxy$yxlgGzrAmph8SqKppGMl5iNhd-0;
+Lcom/android/server/location/-$$Lambda$LocationSettingsStore$FSM6khNR8gXmFeTsAWvdXgk6aYY;
+Lcom/android/server/location/-$$Lambda$LocationSettingsStore$k_IS3lfsliNZ8moQnq2NpYztkWE;
+Lcom/android/server/location/-$$Lambda$NtpTimeHelper$xPxgficKWFyuwUj60WMuiGEEjdg;
+Lcom/android/server/location/-$$Lambda$NtpTimeHelper$xWqlqJuq4jBJ5-xhFLCwEKGVB0k;
 Lcom/android/server/location/-$$Lambda$RemoteListenerHelper$0Rlnad83RE1JdiVK0ULOLm530JM;
+Lcom/android/server/location/-$$Lambda$SettingsHelper$DVmNGa9ypltgL35WVwJuSTIxRS8;
+Lcom/android/server/location/-$$Lambda$SettingsHelper$Ez8giHaZAPYwS7zICeUtrlXPpBo;
+Lcom/android/server/location/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;
+Lcom/android/server/location/AbstractLocationProvider$1;
+Lcom/android/server/location/AbstractLocationProvider$InternalState;
+Lcom/android/server/location/AbstractLocationProvider$Listener;
 Lcom/android/server/location/AbstractLocationProvider$LocationProviderManager;
+Lcom/android/server/location/AbstractLocationProvider$State;
 Lcom/android/server/location/AbstractLocationProvider;
 Lcom/android/server/location/ActivityRecognitionProxy$1;
 Lcom/android/server/location/ActivityRecognitionProxy;
+Lcom/android/server/location/AppForegroundHelper$AppForegroundListener;
+Lcom/android/server/location/AppForegroundHelper;
 Lcom/android/server/location/CallerIdentity;
 Lcom/android/server/location/ComprehensiveCountryDetector$1;
 Lcom/android/server/location/ComprehensiveCountryDetector$2;
+Lcom/android/server/location/ComprehensiveCountryDetector$3;
+Lcom/android/server/location/ComprehensiveCountryDetector$4;
 Lcom/android/server/location/ComprehensiveCountryDetector;
 Lcom/android/server/location/ContextHubClientBroker$CallbackConsumer;
 Lcom/android/server/location/ContextHubClientBroker$PendingIntentRequest;
 Lcom/android/server/location/ContextHubClientBroker;
+Lcom/android/server/location/ContextHubClientManager$ConcurrentLinkedEvictingDeque;
+Lcom/android/server/location/ContextHubClientManager$RegistrationRecord;
 Lcom/android/server/location/ContextHubClientManager;
 Lcom/android/server/location/ContextHubService$1;
+Lcom/android/server/location/ContextHubService$2;
+Lcom/android/server/location/ContextHubService$3;
 Lcom/android/server/location/ContextHubService$4;
 Lcom/android/server/location/ContextHubService$ContextHubServiceCallback;
 Lcom/android/server/location/ContextHubService;
 Lcom/android/server/location/ContextHubServiceTransaction;
 Lcom/android/server/location/ContextHubServiceUtil;
+Lcom/android/server/location/ContextHubTransactionManager$1;
+Lcom/android/server/location/ContextHubTransactionManager$2;
+Lcom/android/server/location/ContextHubTransactionManager$3;
+Lcom/android/server/location/ContextHubTransactionManager$4;
 Lcom/android/server/location/ContextHubTransactionManager$5;
 Lcom/android/server/location/ContextHubTransactionManager;
 Lcom/android/server/location/CountryDetectorBase;
@@ -19438,12 +42576,16 @@
 Lcom/android/server/location/GeofenceProxy$1;
 Lcom/android/server/location/GeofenceProxy$GeofenceProxyServiceConnection;
 Lcom/android/server/location/GeofenceProxy;
+Lcom/android/server/location/GeofenceState;
 Lcom/android/server/location/GnssBatchingProvider$GnssBatchingProviderNative;
 Lcom/android/server/location/GnssBatchingProvider;
+Lcom/android/server/location/GnssCapabilitiesProvider;
 Lcom/android/server/location/GnssConfiguration$1;
 Lcom/android/server/location/GnssConfiguration$HalInterfaceVersion;
 Lcom/android/server/location/GnssConfiguration$SetCarrierProperty;
 Lcom/android/server/location/GnssConfiguration;
+Lcom/android/server/location/GnssGeofenceProvider$1;
+Lcom/android/server/location/GnssGeofenceProvider$GeofenceEntry;
 Lcom/android/server/location/GnssGeofenceProvider$GnssGeofenceProviderNative;
 Lcom/android/server/location/GnssGeofenceProvider;
 Lcom/android/server/location/GnssLocationProvider$1;
@@ -19454,7 +42596,6 @@
 Lcom/android/server/location/GnssLocationProvider$6;
 Lcom/android/server/location/GnssLocationProvider$7;
 Lcom/android/server/location/GnssLocationProvider$8;
-Lcom/android/server/location/GnssLocationProvider$9;
 Lcom/android/server/location/GnssLocationProvider$FusedLocationListener;
 Lcom/android/server/location/GnssLocationProvider$GnssMetricsProvider;
 Lcom/android/server/location/GnssLocationProvider$GnssSystemInfoProvider;
@@ -19463,10 +42604,12 @@
 Lcom/android/server/location/GnssLocationProvider$LocationExtras;
 Lcom/android/server/location/GnssLocationProvider$NetworkLocationListener;
 Lcom/android/server/location/GnssLocationProvider$ProviderHandler;
+Lcom/android/server/location/GnssLocationProvider$SvStatusInfo;
 Lcom/android/server/location/GnssLocationProvider;
 Lcom/android/server/location/GnssMeasurementCorrectionsProvider$GnssMeasurementCorrectionsProviderNative;
 Lcom/android/server/location/GnssMeasurementCorrectionsProvider;
 Lcom/android/server/location/GnssMeasurementsProvider$GnssMeasurementProviderNative;
+Lcom/android/server/location/GnssMeasurementsProvider$StatusChangedOperation;
 Lcom/android/server/location/GnssMeasurementsProvider;
 Lcom/android/server/location/GnssNavigationMessageProvider$GnssNavigationMessageProviderNative;
 Lcom/android/server/location/GnssNavigationMessageProvider$StatusChangedOperation;
@@ -19474,132 +42617,284 @@
 Lcom/android/server/location/GnssNetworkConnectivityHandler$1;
 Lcom/android/server/location/GnssNetworkConnectivityHandler$2;
 Lcom/android/server/location/GnssNetworkConnectivityHandler$GnssNetworkListener;
+Lcom/android/server/location/GnssNetworkConnectivityHandler$NetworkAttributes;
 Lcom/android/server/location/GnssNetworkConnectivityHandler;
+Lcom/android/server/location/GnssPositionMode;
 Lcom/android/server/location/GnssSatelliteBlacklistHelper$1;
 Lcom/android/server/location/GnssSatelliteBlacklistHelper$GnssSatelliteBlacklistCallback;
 Lcom/android/server/location/GnssSatelliteBlacklistHelper;
 Lcom/android/server/location/GnssStatusListenerHelper;
+Lcom/android/server/location/GnssVisibilityControl$1;
+Lcom/android/server/location/GnssVisibilityControl$NfwNotification;
+Lcom/android/server/location/GnssVisibilityControl$ProxyAppState;
 Lcom/android/server/location/GnssVisibilityControl;
+Lcom/android/server/location/GpsPsdsDownloader;
+Lcom/android/server/location/HardwareActivityRecognitionProxy;
+Lcom/android/server/location/LocationBasedCountryDetector$1;
+Lcom/android/server/location/LocationBasedCountryDetector$3;
 Lcom/android/server/location/LocationBasedCountryDetector;
-Lcom/android/server/location/LocationBlacklist;
 Lcom/android/server/location/LocationFudger$1;
 Lcom/android/server/location/LocationFudger;
+Lcom/android/server/location/LocationPermissionUtil;
 Lcom/android/server/location/LocationProviderProxy$1;
 Lcom/android/server/location/LocationProviderProxy$2;
 Lcom/android/server/location/LocationProviderProxy;
+Lcom/android/server/location/LocationRequestStatistics$1;
 Lcom/android/server/location/LocationRequestStatistics$PackageProviderKey;
 Lcom/android/server/location/LocationRequestStatistics$PackageStatistics;
+Lcom/android/server/location/LocationRequestStatistics$RequestSummary;
+Lcom/android/server/location/LocationRequestStatistics$RequestSummaryLimitedHistory;
 Lcom/android/server/location/LocationRequestStatistics;
+Lcom/android/server/location/LocationSettingsStore$1;
+Lcom/android/server/location/LocationSettingsStore$GlobalSettingChangedListener;
+Lcom/android/server/location/LocationSettingsStore$IntegerSecureSetting;
+Lcom/android/server/location/LocationSettingsStore$LongGlobalSetting;
+Lcom/android/server/location/LocationSettingsStore$ObservingSetting;
+Lcom/android/server/location/LocationSettingsStore$StringListCachedSecureSetting;
+Lcom/android/server/location/LocationSettingsStore$StringSetCachedGlobalSetting;
+Lcom/android/server/location/LocationSettingsStore$UserSettingChangedListener;
+Lcom/android/server/location/LocationSettingsStore;
+Lcom/android/server/location/LocationUsageLogger;
+Lcom/android/server/location/MockProvider;
+Lcom/android/server/location/MockableLocationProvider$1;
+Lcom/android/server/location/MockableLocationProvider$ListenerWrapper;
+Lcom/android/server/location/MockableLocationProvider;
 Lcom/android/server/location/NanoAppStateManager;
 Lcom/android/server/location/NtpTimeHelper$InjectNtpTimeCallback;
 Lcom/android/server/location/NtpTimeHelper;
 Lcom/android/server/location/PassiveProvider;
+Lcom/android/server/location/RemoteListenerHelper$1;
+Lcom/android/server/location/RemoteListenerHelper$HandlerRunnable;
+Lcom/android/server/location/RemoteListenerHelper$IdentifiedListener;
 Lcom/android/server/location/RemoteListenerHelper$ListenerOperation;
 Lcom/android/server/location/RemoteListenerHelper;
+Lcom/android/server/location/SettingsHelper$1;
+Lcom/android/server/location/SettingsHelper$GlobalSettingChangedListener;
+Lcom/android/server/location/SettingsHelper$IntegerSecureSetting;
+Lcom/android/server/location/SettingsHelper$LongGlobalSetting;
+Lcom/android/server/location/SettingsHelper$ObservingSetting;
+Lcom/android/server/location/SettingsHelper$StringListCachedSecureSetting;
+Lcom/android/server/location/SettingsHelper$StringSetCachedGlobalSetting;
+Lcom/android/server/location/SettingsHelper$UserSettingChangedListener;
+Lcom/android/server/location/SettingsHelper;
+Lcom/android/server/location/UserInfoHelper$1;
+Lcom/android/server/location/UserInfoHelper$UserChangedListener;
+Lcom/android/server/location/UserInfoHelper;
+Lcom/android/server/location/UserInfoStore$1;
+Lcom/android/server/location/UserInfoStore$UserChangedListener;
+Lcom/android/server/location/UserInfoStore;
+Lcom/android/server/location/gnss/-$$Lambda$139-CBKLG1EL-wg1T1KP8tgmIKg;
+Lcom/android/server/location/gnss/-$$Lambda$FxAranobP2o6eVcPEOp8tzZYyLY;
+Lcom/android/server/location/gnss/-$$Lambda$GnssManagerService$ADNn_wSsxu1352rEzpl8bNWHHIs;
+Lcom/android/server/location/gnss/-$$Lambda$GnssManagerService$UdLm78gS4fBvCkzR5_od9MCx3_M;
+Lcom/android/server/location/gnss/-$$Lambda$GnssManagerService$Xb7pwmWy3YdCevK1MZL3c-zTOco;
+Lcom/android/server/location/gnss/-$$Lambda$GnssManagerService$de6v4jWKxQDC9J4FdGGrfKg2phA;
+Lcom/android/server/location/gnss/-$$Lambda$HALkbmbB2IPr_wdFkPjiIWCzJsY;
+Lcom/android/server/location/gnss/-$$Lambda$WsssLeTVg_jaQ16K-SvqbRc0TV8;
+Lcom/android/server/location/gnss/-$$Lambda$hu439-4T6QBT8QyZnspMtXqICWs;
+Lcom/android/server/location/gnss/-$$Lambda$qoNbXUvSu3yuTPVXPUfZW_HDrTQ;
+Lcom/android/server/location/gnss/GnssManagerService;
+Lcom/android/server/locksettings/-$$Lambda$LockSettingsService$25VQEBWGuGqdc4Xjn9m8HXt9ZTI;
+Lcom/android/server/locksettings/-$$Lambda$LockSettingsService$3iCV7W6YQrxOv5dDGr5Cx3toXr0;
+Lcom/android/server/locksettings/-$$Lambda$LockSettingsService$6ZJNEvi0AXsP3F_UD8F01RaIg3M;
+Lcom/android/server/locksettings/-$$Lambda$LockSettingsService$uLUdo5pAFhnR0hn-L5FUgWTjl70;
 Lcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$WjMV-qfQ1YUbeAiLzyAhyepqPFI;
+Lcom/android/server/locksettings/-$$Lambda$SyntheticPasswordManager$aWnbfYziDTrRrLqWFePMTj6-dy0;
+Lcom/android/server/locksettings/LockSettingsService$1;
 Lcom/android/server/locksettings/LockSettingsService$2;
+Lcom/android/server/locksettings/LockSettingsService$3;
+Lcom/android/server/locksettings/LockSettingsService$4;
+Lcom/android/server/locksettings/LockSettingsService$5;
 Lcom/android/server/locksettings/LockSettingsService$DeviceProvisionedObserver;
 Lcom/android/server/locksettings/LockSettingsService$GateKeeperDiedRecipient;
 Lcom/android/server/locksettings/LockSettingsService$Injector$1;
 Lcom/android/server/locksettings/LockSettingsService$Injector;
 Lcom/android/server/locksettings/LockSettingsService$Lifecycle;
 Lcom/android/server/locksettings/LockSettingsService$LocalService;
+Lcom/android/server/locksettings/LockSettingsService$PendingResetLockout;
+Lcom/android/server/locksettings/LockSettingsService$RebootEscrowCallbacks;
 Lcom/android/server/locksettings/LockSettingsService$SynchronizedStrongAuthTracker;
 Lcom/android/server/locksettings/LockSettingsService;
+Lcom/android/server/locksettings/LockSettingsShellCommand;
+Lcom/android/server/locksettings/LockSettingsStorage$1;
 Lcom/android/server/locksettings/LockSettingsStorage$Cache$CacheKey;
 Lcom/android/server/locksettings/LockSettingsStorage$Cache;
 Lcom/android/server/locksettings/LockSettingsStorage$Callback;
 Lcom/android/server/locksettings/LockSettingsStorage$CredentialHash;
 Lcom/android/server/locksettings/LockSettingsStorage$DatabaseHelper;
+Lcom/android/server/locksettings/LockSettingsStorage$PersistentData;
 Lcom/android/server/locksettings/LockSettingsStorage;
 Lcom/android/server/locksettings/LockSettingsStrongAuth$1;
+Lcom/android/server/locksettings/LockSettingsStrongAuth$StrongAuthTimeoutAlarmListener;
 Lcom/android/server/locksettings/LockSettingsStrongAuth;
+Lcom/android/server/locksettings/ManagedProfilePasswordCache;
 Lcom/android/server/locksettings/PasswordSlotManager;
+Lcom/android/server/locksettings/RebootEscrowData;
+Lcom/android/server/locksettings/RebootEscrowKey;
+Lcom/android/server/locksettings/RebootEscrowManager$Callbacks;
+Lcom/android/server/locksettings/RebootEscrowManager$Injector;
+Lcom/android/server/locksettings/RebootEscrowManager;
+Lcom/android/server/locksettings/SP800Derive;
+Lcom/android/server/locksettings/SyntheticPasswordCrypto;
+Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationResult;
+Lcom/android/server/locksettings/SyntheticPasswordManager$AuthenticationToken;
 Lcom/android/server/locksettings/SyntheticPasswordManager$PasswordData;
+Lcom/android/server/locksettings/SyntheticPasswordManager$TokenData;
 Lcom/android/server/locksettings/SyntheticPasswordManager;
 Lcom/android/server/locksettings/recoverablekeystore/InsecureUserException;
 Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxy;
 Lcom/android/server/locksettings/recoverablekeystore/KeyStoreProxyImpl;
+Lcom/android/server/locksettings/recoverablekeystore/KeySyncTask;
+Lcom/android/server/locksettings/recoverablekeystore/KeySyncUtils;
+Lcom/android/server/locksettings/recoverablekeystore/PlatformDecryptionKey;
+Lcom/android/server/locksettings/recoverablekeystore/PlatformEncryptionKey;
 Lcom/android/server/locksettings/recoverablekeystore/PlatformKeyManager;
 Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyGenerator;
 Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStorageException;
 Lcom/android/server/locksettings/recoverablekeystore/RecoverableKeyStoreManager;
 Lcom/android/server/locksettings/recoverablekeystore/RecoverySnapshotListenersStorage;
+Lcom/android/server/locksettings/recoverablekeystore/SecureBox$AesGcmOperation;
+Lcom/android/server/locksettings/recoverablekeystore/SecureBox;
 Lcom/android/server/locksettings/recoverablekeystore/TestOnlyInsecureCertificateHelper;
+Lcom/android/server/locksettings/recoverablekeystore/WrappedKey;
 Lcom/android/server/locksettings/recoverablekeystore/certificate/CertParsingException;
+Lcom/android/server/locksettings/recoverablekeystore/certificate/CertUtils;
 Lcom/android/server/locksettings/recoverablekeystore/certificate/CertValidationException;
+Lcom/android/server/locksettings/recoverablekeystore/certificate/CertXml;
+Lcom/android/server/locksettings/recoverablekeystore/certificate/SigXml;
+Lcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotDeserializer;
 Lcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotParserException;
+Lcom/android/server/locksettings/recoverablekeystore/serialization/KeyChainSnapshotSerializer;
+Lcom/android/server/locksettings/recoverablekeystore/storage/-$$Lambda$RecoverableKeyStoreDb$knfkhmVPS_11tGWkGt87bH4xjYg;
+Lcom/android/server/locksettings/recoverablekeystore/storage/-$$Lambda$RecoverySessionStorage$1ayqf2qqdJH00fvbhBUKWso4cdc;
 Lcom/android/server/locksettings/recoverablekeystore/storage/ApplicationKeyStorage;
 Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager$1;
 Lcom/android/server/locksettings/recoverablekeystore/storage/CleanupManager;
 Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDb;
 Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverableKeyStoreDbHelper;
+Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage$Entry;
 Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySessionStorage;
 Lcom/android/server/locksettings/recoverablekeystore/storage/RecoverySnapshotStorage;
-Lcom/android/server/media/-$$Lambda$MediaSessionServiceImpl$a3VtB0CQuvV4UG4nWgvCgkL6hec;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$-0XFotLxZ8ck40Oe5LDds6S_Pxo;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$1JbhLbgzmpRe6Fh4FAkmF-x3WgE;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$1NkSmUAo7bqq-q9MYAtjjxnlxC0;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$4rh7ewjqL3KNJanh6qyjXqKofCc;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$65zW92mHmIRd5JBz9e4pjRubny8;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$6Riyrjlduscvk3ao_6ULVEacHqc;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$75Q69r2Bn2bjiCy1-gHOQ0wCMNM;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$BFwvUEm4uRPirj-zTGfOx3o1w-Y;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$G_zjJhMcdTbGVz2DuKqcOJmX0OU;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$M94FQn7LGXpV3kApGJU9Bnp0RRk;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$P6mZgg0_B1MQK6U6uDI4V8JUyy8;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$QRE0IkqsUP_uX7kD-TOn1pE7uWc;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$SDO87Krd1n1doHne7Euurb1tZWQ;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$UWIms6pHB4Lwnsbfj-b_9WI7INk;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$X4W6vrpULp0aMfJC9PBBz3m1MyM;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$XJkTc5hm1mMtQKQ92wWBqMIUe2M;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$aadBHil74jOePCRh7oROReTvBKI;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$fhyQV2I26eJq3ZCV6fT5gQCAC14;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$kz96Yiuiohyo_33N-2dNHLJ62qY;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$oNAsUj79BHHX4XoiqoHDYMKvTZc;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$xwrgJ0QIcy6O_xCDFBt_XQNI5DY;
+Lcom/android/server/media/-$$Lambda$MediaRouter2ServiceImpl$yPZ2ZN9TKRG_PR_HKi8QWy7YTV0;
+Lcom/android/server/media/-$$Lambda$MediaSessionService$za_9dlUSlnaiZw6eCdPVEZq0XLw;
+Lcom/android/server/media/AudioPlayerStateMonitor$1;
+Lcom/android/server/media/AudioPlayerStateMonitor$AudioManagerPlaybackListener;
 Lcom/android/server/media/AudioPlayerStateMonitor$MessageHandler;
 Lcom/android/server/media/AudioPlayerStateMonitor$OnAudioPlayerActiveStateChangedListener;
 Lcom/android/server/media/AudioPlayerStateMonitor;
 Lcom/android/server/media/MediaResourceMonitorService$MediaResourceMonitorImpl;
 Lcom/android/server/media/MediaResourceMonitorService;
-Lcom/android/server/media/MediaRoute2ProviderProxy$Callback;
+Lcom/android/server/media/MediaRoute2Provider$Callback;
+Lcom/android/server/media/MediaRoute2Provider;
 Lcom/android/server/media/MediaRoute2ProviderWatcher$1;
 Lcom/android/server/media/MediaRoute2ProviderWatcher$2;
 Lcom/android/server/media/MediaRoute2ProviderWatcher$Callback;
 Lcom/android/server/media/MediaRoute2ProviderWatcher;
+Lcom/android/server/media/MediaRouter2ServiceImpl$Client2Record;
+Lcom/android/server/media/MediaRouter2ServiceImpl$ManagerRecord;
+Lcom/android/server/media/MediaRouter2ServiceImpl$UserHandler;
+Lcom/android/server/media/MediaRouter2ServiceImpl$UserRecord;
+Lcom/android/server/media/MediaRouter2ServiceImpl;
 Lcom/android/server/media/MediaRouterService$1$1;
 Lcom/android/server/media/MediaRouterService$1;
 Lcom/android/server/media/MediaRouterService$2;
 Lcom/android/server/media/MediaRouterService$3;
+Lcom/android/server/media/MediaRouterService$ClientGroup;
 Lcom/android/server/media/MediaRouterService$ClientRecord;
 Lcom/android/server/media/MediaRouterService$MediaRouterServiceBroadcastReceiver;
+Lcom/android/server/media/MediaRouterService$UserHandler$ProviderRecord;
+Lcom/android/server/media/MediaRouterService$UserHandler$RouteRecord;
 Lcom/android/server/media/MediaRouterService$UserHandler;
+Lcom/android/server/media/MediaRouterService$UserRecord$1;
 Lcom/android/server/media/MediaRouterService$UserRecord;
 Lcom/android/server/media/MediaRouterService;
+Lcom/android/server/media/MediaSession2Record;
+Lcom/android/server/media/MediaSessionRecord$2;
 Lcom/android/server/media/MediaSessionRecord$3;
 Lcom/android/server/media/MediaSessionRecord$ControllerStub;
 Lcom/android/server/media/MediaSessionRecord$MessageHandler;
 Lcom/android/server/media/MediaSessionRecord$SessionCb;
 Lcom/android/server/media/MediaSessionRecord$SessionStub;
 Lcom/android/server/media/MediaSessionRecord;
-Lcom/android/server/media/MediaSessionService$ServiceImpl;
+Lcom/android/server/media/MediaSessionRecordImpl;
+Lcom/android/server/media/MediaSessionService$1;
+Lcom/android/server/media/MediaSessionService$Controller2Callback;
+Lcom/android/server/media/MediaSessionService$FullUserRecord$CallbackRecord;
+Lcom/android/server/media/MediaSessionService$FullUserRecord$OnMediaKeyEventDispatchedListenerRecord;
+Lcom/android/server/media/MediaSessionService$FullUserRecord$OnMediaKeyEventSessionChangedListenerRecord;
+Lcom/android/server/media/MediaSessionService$FullUserRecord;
+Lcom/android/server/media/MediaSessionService$MessageHandler;
+Lcom/android/server/media/MediaSessionService$Session2TokensListenerRecord;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$1;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$2;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$3;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$4;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$KeyEventWakeLockReceiver;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl$MediaKeyListenerResultReceiver;
+Lcom/android/server/media/MediaSessionService$SessionManagerImpl;
+Lcom/android/server/media/MediaSessionService$SessionsListenerRecord;
+Lcom/android/server/media/MediaSessionService$SettingsObserver;
 Lcom/android/server/media/MediaSessionService;
-Lcom/android/server/media/MediaSessionServiceImpl$1;
-Lcom/android/server/media/MediaSessionServiceImpl$Controller2Callback;
-Lcom/android/server/media/MediaSessionServiceImpl$FullUserRecord;
-Lcom/android/server/media/MediaSessionServiceImpl$MessageHandler;
-Lcom/android/server/media/MediaSessionServiceImpl$Session2TokensListenerRecord;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$1;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$2;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$3;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$4;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$5;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$KeyEventWakeLockReceiver;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl$MediaKeyListenerResultReceiver;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionManagerImpl;
-Lcom/android/server/media/MediaSessionServiceImpl$SessionsListenerRecord;
-Lcom/android/server/media/MediaSessionServiceImpl$SettingsObserver;
-Lcom/android/server/media/MediaSessionServiceImpl;
 Lcom/android/server/media/MediaSessionStack$OnMediaButtonSessionChangedListener;
 Lcom/android/server/media/MediaSessionStack;
+Lcom/android/server/media/MediaShellCommand;
 Lcom/android/server/media/RemoteDisplayProviderProxy$Callback;
+Lcom/android/server/media/RemoteDisplayProviderProxy;
 Lcom/android/server/media/RemoteDisplayProviderWatcher$1;
 Lcom/android/server/media/RemoteDisplayProviderWatcher$2;
 Lcom/android/server/media/RemoteDisplayProviderWatcher$Callback;
 Lcom/android/server/media/RemoteDisplayProviderWatcher;
+Lcom/android/server/media/SystemMediaRoute2Provider;
 Lcom/android/server/media/projection/MediaProjectionManagerService$1;
 Lcom/android/server/media/projection/MediaProjectionManagerService$2;
 Lcom/android/server/media/projection/MediaProjectionManagerService$BinderService;
 Lcom/android/server/media/projection/MediaProjectionManagerService$CallbackDelegate;
+Lcom/android/server/media/projection/MediaProjectionManagerService$ClientStopCallback;
+Lcom/android/server/media/projection/MediaProjectionManagerService$MediaProjection;
 Lcom/android/server/media/projection/MediaProjectionManagerService$MediaRouterCallback;
+Lcom/android/server/media/projection/MediaProjectionManagerService$WatcherStartCallback;
+Lcom/android/server/media/projection/MediaProjectionManagerService$WatcherStopCallback;
 Lcom/android/server/media/projection/MediaProjectionManagerService;
 Lcom/android/server/midi/MidiService$1;
+Lcom/android/server/midi/MidiService$Client;
+Lcom/android/server/midi/MidiService$Device;
 Lcom/android/server/midi/MidiService$Lifecycle;
 Lcom/android/server/midi/MidiService;
+Lcom/android/server/net/-$$Lambda$IpConfigStore$O2tmBZ0pfEt3xGZYo5ZrQq4edzM;
+Lcom/android/server/net/-$$Lambda$IpConfigStore$rFY3yG3j6RGRgrQey7yYfi0Yze0;
 Lcom/android/server/net/-$$Lambda$NetworkPolicyManagerService$HDTUqowtgL-W_V0Kq6psXLWC9ws;
+Lcom/android/server/net/-$$Lambda$NetworkPolicyManagerService$lv2qqWetKVoJzbe7z3LT5idTu54;
+Lcom/android/server/net/-$$Lambda$NetworkStatsService$KVH4Y9nH53_gEfrhunDFp_O6ExY;
+Lcom/android/server/net/-$$Lambda$NetworkStatsService$NetworkStatsManagerInternalImpl$5TwpV7cRVx_8Ch3sTJ1XxcGYaFo;
+Lcom/android/server/net/-$$Lambda$NetworkStatsService$rLCnfQluyJtbXZ2vSn6SQAdNPMc;
+Lcom/android/server/net/-$$Lambda$NetworkStatsService$xfTbcb80CcmFJlvul1xYQmewxlg;
+Lcom/android/server/net/DelayedDiskWrite$1;
 Lcom/android/server/net/DelayedDiskWrite$Writer;
 Lcom/android/server/net/DelayedDiskWrite;
+Lcom/android/server/net/IpConfigStore$1;
 Lcom/android/server/net/IpConfigStore;
+Lcom/android/server/net/LockdownVpnTracker$1;
 Lcom/android/server/net/LockdownVpnTracker;
 Lcom/android/server/net/NetworkIdentitySet;
 Lcom/android/server/net/NetworkPolicyLogger$Data;
@@ -19624,18 +42919,26 @@
 Lcom/android/server/net/NetworkPolicyManagerService$7;
 Lcom/android/server/net/NetworkPolicyManagerService$8;
 Lcom/android/server/net/NetworkPolicyManagerService$9;
-Lcom/android/server/net/NetworkPolicyManagerService$AppIdleStateChangeListener;
+Lcom/android/server/net/NetworkPolicyManagerService$NetPolicyAppIdleStateChangeListener;
 Lcom/android/server/net/NetworkPolicyManagerService$NetworkPolicyManagerInternalImpl;
+Lcom/android/server/net/NetworkPolicyManagerService$NotificationId;
 Lcom/android/server/net/NetworkPolicyManagerService;
+Lcom/android/server/net/NetworkPolicyManagerShellCommand;
 Lcom/android/server/net/NetworkStatsAccess;
 Lcom/android/server/net/NetworkStatsCollection$Key;
 Lcom/android/server/net/NetworkStatsCollection;
+Lcom/android/server/net/NetworkStatsFactory;
 Lcom/android/server/net/NetworkStatsManagerInternal;
 Lcom/android/server/net/NetworkStatsObservers$1;
+Lcom/android/server/net/NetworkStatsObservers$NetworkUsageRequestInfo;
+Lcom/android/server/net/NetworkStatsObservers$RequestInfo;
 Lcom/android/server/net/NetworkStatsObservers$StatsContext;
+Lcom/android/server/net/NetworkStatsObservers$UserUsageRequestInfo;
 Lcom/android/server/net/NetworkStatsObservers;
 Lcom/android/server/net/NetworkStatsRecorder$CombiningRewriter;
+Lcom/android/server/net/NetworkStatsRecorder$RemoveUidRewriter;
 Lcom/android/server/net/NetworkStatsRecorder;
+Lcom/android/server/net/NetworkStatsService$1;
 Lcom/android/server/net/NetworkStatsService$2;
 Lcom/android/server/net/NetworkStatsService$3;
 Lcom/android/server/net/NetworkStatsService$4;
@@ -19647,15 +42950,21 @@
 Lcom/android/server/net/NetworkStatsService$HandlerCallback;
 Lcom/android/server/net/NetworkStatsService$NetworkStatsHandler;
 Lcom/android/server/net/NetworkStatsService$NetworkStatsManagerInternalImpl;
+Lcom/android/server/net/NetworkStatsService$NetworkStatsProviderCallbackImpl;
 Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings$Config;
 Lcom/android/server/net/NetworkStatsService$NetworkStatsSettings;
+Lcom/android/server/net/NetworkStatsService$ThrowingConsumer;
 Lcom/android/server/net/NetworkStatsService;
 Lcom/android/server/net/watchlist/-$$Lambda$WatchlistLoggingHandler$GBD0dX6RhipHIkM0Z_B5jLlwfHQ;
 Lcom/android/server/net/watchlist/DigestUtils;
+Lcom/android/server/net/watchlist/HarmfulCrcs;
 Lcom/android/server/net/watchlist/HarmfulDigests;
 Lcom/android/server/net/watchlist/NetworkWatchlistService$1;
 Lcom/android/server/net/watchlist/NetworkWatchlistService$Lifecycle;
 Lcom/android/server/net/watchlist/NetworkWatchlistService;
+Lcom/android/server/net/watchlist/NetworkWatchlistShellCommand;
+Lcom/android/server/net/watchlist/PrivacyUtils;
+Lcom/android/server/net/watchlist/ReportEncoder;
 Lcom/android/server/net/watchlist/ReportWatchlistJobService;
 Lcom/android/server/net/watchlist/WatchlistConfig$CrcShaDigests;
 Lcom/android/server/net/watchlist/WatchlistConfig;
@@ -19663,11 +42972,39 @@
 Lcom/android/server/net/watchlist/WatchlistReportDbHelper$AggregatedResult;
 Lcom/android/server/net/watchlist/WatchlistReportDbHelper;
 Lcom/android/server/net/watchlist/WatchlistSettings;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$1$xhbVsydQBNNW5m21WjLTPrHQojA;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$10$BRIIoO5T43uig1Sv3P_yA2lc3LA;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$11$JotEN8cxCghuwRUNQKNwudTtDmM;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$11$zVdn9N0ybkMxz8xM8Qa1AXowlic;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$12$-k8J5tgk6UDzy6Im2nYiWZgVEDI;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$12gEiRp5yhg_vLn2NsMtnAkm3GI;
 Lcom/android/server/notification/-$$Lambda$NotificationManagerService$14$hWnH6mjUAxwVmpU3QRoPHh5_FyI;
-Lcom/android/server/notification/-$$Lambda$NotificationManagerService$Ehw7Jxsy3ZIwTcAa2DFsHjIULas;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$15$wXaTmmz_lG6grUqU8upk0686eXA;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$1IFJYiXNBcQVsabIke0xY_TgCZI;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$CancelNotificationRunnable$1i8BOFS2Ap_BvazcwqssFxW6U1U;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$-frFvBh01OajP_vj8nGNvXvmX1Y;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$2uJN0X0VDgKmWRoJqYsux0bhlYo;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$3ktx5hfF9rabi25qaQLZ-YvqPO4;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$6E04T6AkRfKEIjCw7jopFAFGv30;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$FsWpf1cmSi9GG7O4rBv1eLAEE9M;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$S2EUT9RRW0P4hWLU4YD7mrnGPII;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$fguXa8ZWUwjg4Css0w9IvLwqTno;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$hdUZ_hmwLutGkIKdq7dHKjQLP4E;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$j__6VKF3Ej58Ecwq9KDrcYMRydI;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$ou_FTabXQDrMmZWvZYfT09jSrKI;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$pzk58E_uhN8zWEPqtMQoUZpAM4k;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$qNPzonSecZ4lX0Og0m8NERBS_UQ;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationAssistants$uDzVB3NwVCerv0Z5si1fGXZkZu4;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$3bretMyG2YyNFKU5plLQgmxuGr0;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$Srt8NNqA1xJUAp_7nDU6CBZJm_0;
 Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$T5BM1IF40aMGtqZZRr6BWGjzNxA;
-Lcom/android/server/notification/-$$Lambda$NotificationManagerService$mkOVEu4VRfQOE4k1xkRpG9Mcl_U;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$NotificationListeners$Uven29tL9-XX5tMiwAHBwNumQKc;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$msGTh8UV2euOI6xhjY-rx_tZTLM;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$qSGWKI1fXQ1cTJ2fD072f_33txY;
+Lcom/android/server/notification/-$$Lambda$NotificationManagerService$qbzDjihCkTumQH-EnAW4i5wobvM;
 Lcom/android/server/notification/-$$Lambda$NotificationRecord$XgkrZGcjOHPHem34oE9qLGy3siA;
+Lcom/android/server/notification/-$$Lambda$SnoozeHelper$333G5Hgba3G7RU9lYp0HmgKJBvA;
+Lcom/android/server/notification/-$$Lambda$SnoozeHelper$uY_yjjODxoDQVadkBTGNFqh7pco;
 Lcom/android/server/notification/-$$Lambda$V4J7df5A6vhSIuw7Ym9xgkfahto;
 Lcom/android/server/notification/AlertRateLimiter;
 Lcom/android/server/notification/BadgeExtractor;
@@ -19676,9 +43013,11 @@
 Lcom/android/server/notification/CalendarTracker$Callback;
 Lcom/android/server/notification/CalendarTracker$CheckEventResult;
 Lcom/android/server/notification/CalendarTracker;
+Lcom/android/server/notification/ConditionProviders$1;
 Lcom/android/server/notification/ConditionProviders$Callback;
 Lcom/android/server/notification/ConditionProviders$ConditionRecord;
 Lcom/android/server/notification/ConditionProviders;
+Lcom/android/server/notification/CountdownConditionProvider$1;
 Lcom/android/server/notification/CountdownConditionProvider$Receiver;
 Lcom/android/server/notification/CountdownConditionProvider;
 Lcom/android/server/notification/CriticalNotificationExtractor;
@@ -19691,6 +43030,8 @@
 Lcom/android/server/notification/GroupHelper$Callback;
 Lcom/android/server/notification/GroupHelper;
 Lcom/android/server/notification/ImportanceExtractor;
+Lcom/android/server/notification/InlineReplyUriRecord;
+Lcom/android/server/notification/ManagedServices$1$1;
 Lcom/android/server/notification/ManagedServices$1;
 Lcom/android/server/notification/ManagedServices$Config;
 Lcom/android/server/notification/ManagedServices$ManagedServiceInfo;
@@ -19701,13 +43042,25 @@
 Lcom/android/server/notification/NotificationComparator$1;
 Lcom/android/server/notification/NotificationComparator;
 Lcom/android/server/notification/NotificationDelegate;
+Lcom/android/server/notification/NotificationHistoryDatabase$FileAttrProvider;
+Lcom/android/server/notification/NotificationHistoryDatabase$NotificationHistoryFileAttrProvider;
+Lcom/android/server/notification/NotificationHistoryDatabase;
+Lcom/android/server/notification/NotificationHistoryDatabaseFactory;
+Lcom/android/server/notification/NotificationHistoryManager$SettingsObserver;
+Lcom/android/server/notification/NotificationHistoryManager;
+Lcom/android/server/notification/NotificationIntrusivenessExtractor$1;
 Lcom/android/server/notification/NotificationIntrusivenessExtractor;
 Lcom/android/server/notification/NotificationManagerInternal;
 Lcom/android/server/notification/NotificationManagerService$10$1;
 Lcom/android/server/notification/NotificationManagerService$10;
+Lcom/android/server/notification/NotificationManagerService$11$1;
 Lcom/android/server/notification/NotificationManagerService$11;
+Lcom/android/server/notification/NotificationManagerService$12;
+Lcom/android/server/notification/NotificationManagerService$13;
 Lcom/android/server/notification/NotificationManagerService$14;
+Lcom/android/server/notification/NotificationManagerService$15;
 Lcom/android/server/notification/NotificationManagerService$16;
+Lcom/android/server/notification/NotificationManagerService$17;
 Lcom/android/server/notification/NotificationManagerService$1;
 Lcom/android/server/notification/NotificationManagerService$2;
 Lcom/android/server/notification/NotificationManagerService$3;
@@ -19719,20 +43072,36 @@
 Lcom/android/server/notification/NotificationManagerService$9;
 Lcom/android/server/notification/NotificationManagerService$Archive;
 Lcom/android/server/notification/NotificationManagerService$CancelNotificationRunnable;
+Lcom/android/server/notification/NotificationManagerService$DumpFilter;
 Lcom/android/server/notification/NotificationManagerService$EnqueueNotificationRunnable;
 Lcom/android/server/notification/NotificationManagerService$FlagChecker;
 Lcom/android/server/notification/NotificationManagerService$NotificationAssistants;
+Lcom/android/server/notification/NotificationManagerService$NotificationListeners$1;
 Lcom/android/server/notification/NotificationManagerService$NotificationListeners$2;
+Lcom/android/server/notification/NotificationManagerService$NotificationListeners$3;
+Lcom/android/server/notification/NotificationManagerService$NotificationListeners$4;
+Lcom/android/server/notification/NotificationManagerService$NotificationListeners$5;
+Lcom/android/server/notification/NotificationManagerService$NotificationListeners$6;
 Lcom/android/server/notification/NotificationManagerService$NotificationListeners;
 Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable$1;
 Lcom/android/server/notification/NotificationManagerService$PostNotificationRunnable;
 Lcom/android/server/notification/NotificationManagerService$RankingHandlerWorker;
+Lcom/android/server/notification/NotificationManagerService$RoleObserver;
+Lcom/android/server/notification/NotificationManagerService$SavePolicyFileRunnable;
 Lcom/android/server/notification/NotificationManagerService$SettingsObserver;
+Lcom/android/server/notification/NotificationManagerService$SnoozeNotificationRunnable;
 Lcom/android/server/notification/NotificationManagerService$StatusBarNotificationHolder;
+Lcom/android/server/notification/NotificationManagerService$ToastRecord;
 Lcom/android/server/notification/NotificationManagerService$TrimCache;
 Lcom/android/server/notification/NotificationManagerService$WorkerHandler;
 Lcom/android/server/notification/NotificationManagerService;
+Lcom/android/server/notification/NotificationRecord$Light;
 Lcom/android/server/notification/NotificationRecord;
+Lcom/android/server/notification/NotificationRecordLogger$NotificationRecordPair;
+Lcom/android/server/notification/NotificationRecordLogger$NotificationReportedEvents;
+Lcom/android/server/notification/NotificationRecordLogger;
+Lcom/android/server/notification/NotificationRecordLoggerImpl;
+Lcom/android/server/notification/NotificationShellCmd;
 Lcom/android/server/notification/NotificationSignalExtractor;
 Lcom/android/server/notification/NotificationUsageStats$1;
 Lcom/android/server/notification/NotificationUsageStats$AggregatedStats;
@@ -19742,28 +43111,38 @@
 Lcom/android/server/notification/NotificationUsageStats$SQLiteLog;
 Lcom/android/server/notification/NotificationUsageStats$SingleNotificationStats;
 Lcom/android/server/notification/NotificationUsageStats;
+Lcom/android/server/notification/PreferencesHelper$1;
+Lcom/android/server/notification/PreferencesHelper$Delegate;
 Lcom/android/server/notification/PreferencesHelper$PackagePreferences;
 Lcom/android/server/notification/PreferencesHelper;
 Lcom/android/server/notification/PriorityExtractor;
 Lcom/android/server/notification/PropConfig;
+Lcom/android/server/notification/PulledStats;
 Lcom/android/server/notification/RankingConfig;
 Lcom/android/server/notification/RankingHandler;
 Lcom/android/server/notification/RankingHelper;
+Lcom/android/server/notification/RankingReconsideration;
 Lcom/android/server/notification/RateEstimator;
 Lcom/android/server/notification/ScheduleConditionProvider$1;
 Lcom/android/server/notification/ScheduleConditionProvider;
 Lcom/android/server/notification/SnoozeHelper$1;
 Lcom/android/server/notification/SnoozeHelper$Callback;
+Lcom/android/server/notification/SnoozeHelper$Inserter;
 Lcom/android/server/notification/SnoozeHelper;
 Lcom/android/server/notification/SystemConditionProviderService;
 Lcom/android/server/notification/ValidateNotificationPeople$1;
+Lcom/android/server/notification/ValidateNotificationPeople$2;
+Lcom/android/server/notification/ValidateNotificationPeople$LookupResult;
+Lcom/android/server/notification/ValidateNotificationPeople$PeopleRankingReconsideration;
 Lcom/android/server/notification/ValidateNotificationPeople;
 Lcom/android/server/notification/VisibilityExtractor;
 Lcom/android/server/notification/ZenLog;
 Lcom/android/server/notification/ZenModeConditions;
 Lcom/android/server/notification/ZenModeExtractor;
+Lcom/android/server/notification/ZenModeFiltering$1;
 Lcom/android/server/notification/ZenModeFiltering$RepeatCallers;
 Lcom/android/server/notification/ZenModeFiltering;
+Lcom/android/server/notification/ZenModeHelper$1;
 Lcom/android/server/notification/ZenModeHelper$Callback;
 Lcom/android/server/notification/ZenModeHelper$H$ConfigMessageData;
 Lcom/android/server/notification/ZenModeHelper$H;
@@ -19771,24 +43150,44 @@
 Lcom/android/server/notification/ZenModeHelper$RingerModeDelegate;
 Lcom/android/server/notification/ZenModeHelper$SettingsObserver;
 Lcom/android/server/notification/ZenModeHelper;
+Lcom/android/server/notification/toast/CustomToastRecord;
+Lcom/android/server/notification/toast/TextToastRecord;
+Lcom/android/server/notification/toast/ToastRecord;
+Lcom/android/server/oemlock/-$$Lambda$VendorLock$8zNsLj4Jt-s5XEEk_KIC2zQR29g;
+Lcom/android/server/oemlock/-$$Lambda$VendorLock$HjegvthxXAHFarV_FukbaMGePGU;
+Lcom/android/server/oemlock/-$$Lambda$VendorLock$mE2wEMNMcvqMft72oSVABYa_mYs;
 Lcom/android/server/oemlock/OemLock;
 Lcom/android/server/oemlock/OemLockService$1;
 Lcom/android/server/oemlock/OemLockService$2;
 Lcom/android/server/oemlock/OemLockService;
+Lcom/android/server/oemlock/PersistentDataBlockLock;
 Lcom/android/server/oemlock/VendorLock;
+Lcom/android/server/om/-$$Lambda$IdmapDaemon$Connection$4U-n0RSv1BPv15mvu8B8zXARcpk;
+Lcom/android/server/om/-$$Lambda$IdmapDaemon$hZvlb8B5bMAnD3h9mHLjOQXKSTI;
+Lcom/android/server/om/-$$Lambda$IdmapDaemon$u_1qfM2VGzol3UUX0R4mwNZs9gY;
 Lcom/android/server/om/-$$Lambda$OverlayManagerService$OverlayChangeListener$u9oeN2C0PDMo0pYiLqfMBkwuMNA;
 Lcom/android/server/om/-$$Lambda$OverlayManagerService$_WGEV7N0qhntbqqDW3A1O-TVv5o;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$ATr0DZmWpSWdKD0COw4t2qS-DRk;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$BKNCDt6MBH2RSKr2mbIUnL_dIvA;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$Fjt465P6G89HQZERZFsOEjMbtXI;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$IkswmT9ZZJXmNAztGRVrD3hODMw;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$L_Sj43p2Txm_KH-wT0lseBTVzh8;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$WYtPK6Ebqjgxm8_8Cot-ijv_z_8;
-Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$bX7CTrJVR3B_eQmD43OOHtRIxgw;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$Xr3l7ivgTflBmPTqf9hbG3i0H_I;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$jZUujzDxrP0hpAqUxnqEf-b-nQc;
-Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$mq-CHAn1jQBVquxuOUv0eQANHIY;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$leWA95COTthWNYtDKcdKVChlc-c;
+Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$n3zAcJx5VlITl9U9fQatqN2KJyA;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$sx0Nyvq91kCH_A-4Ctf09G_0u9M;
 Lcom/android/server/om/-$$Lambda$OverlayManagerSettings$vXm2C4y9Q-F5yYZNimB-Lr6w-oI;
 Lcom/android/server/om/-$$Lambda$bXuJGR0fITXNwGnQfQHv9KS-XgY;
-Lcom/android/server/om/IdmapManager$1;
+Lcom/android/server/om/DumpState;
+Lcom/android/server/om/IdmapDaemon$1;
+Lcom/android/server/om/IdmapDaemon$Connection;
+Lcom/android/server/om/IdmapDaemon;
 Lcom/android/server/om/IdmapManager;
+Lcom/android/server/om/OverlayActorEnforcer$ActorState;
+Lcom/android/server/om/OverlayActorEnforcer$VerifyCallback;
+Lcom/android/server/om/OverlayActorEnforcer;
 Lcom/android/server/om/OverlayManagerService$1;
 Lcom/android/server/om/OverlayManagerService$OverlayChangeListener;
 Lcom/android/server/om/OverlayManagerService$PackageManagerHelper;
@@ -19802,63 +43201,268 @@
 Lcom/android/server/om/OverlayManagerSettings$Serializer;
 Lcom/android/server/om/OverlayManagerSettings$SettingsItem;
 Lcom/android/server/om/OverlayManagerSettings;
+Lcom/android/server/om/OverlayManagerShellCommand;
+Lcom/android/server/om/OverlayReferenceMapper$1;
+Lcom/android/server/om/OverlayReferenceMapper$Provider;
+Lcom/android/server/om/OverlayReferenceMapper;
 Lcom/android/server/os/-$$Lambda$SchedulingPolicyService$ao2OiSvvlyzmJ0li0c0nhHy-IDk;
 Lcom/android/server/os/BugreportManagerService;
+Lcom/android/server/os/BugreportManagerServiceImpl$DumpstateListener;
 Lcom/android/server/os/BugreportManagerServiceImpl;
 Lcom/android/server/os/DeviceIdentifiersPolicyService$DeviceIdentifiersPolicy;
 Lcom/android/server/os/DeviceIdentifiersPolicyService;
 Lcom/android/server/os/SchedulingPolicyService$1;
 Lcom/android/server/os/SchedulingPolicyService;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$3Qo6-WDOLNVaPTLQAF-EJxAGmxI;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$DA0r0rysK9_les70rzTEjoXDMIs;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$OkrAFIXTSUJ7ZEBAVexg7Fz8XuM;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$R86SOhwiEgxiryvdaimpXnymNC4;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$UGTAS6UjpowRtjdCWHwQ_4g5zsw;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$cmUgPk-YO6by7_XySWglEKwZh3E;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$fqMQSnT1vOGK2_fKsvWHTY9b7SQ;
+Lcom/android/server/people/-$$Lambda$PeopleService$LocalService$uZx_s9KkC6FGFW4bkELnUYtB08A;
+Lcom/android/server/people/PeopleService$LocalService;
+Lcom/android/server/people/PeopleService;
+Lcom/android/server/people/PeopleServiceInternal;
+Lcom/android/server/people/SessionInfo;
+Lcom/android/server/people/data/-$$Lambda$DataManager$ShortcutServiceListener$emB0GKXSexwJTzSWLUKYnAGbCCg;
+Lcom/android/server/people/data/ContactsQueryHelper;
+Lcom/android/server/people/data/ConversationInfo$Builder;
+Lcom/android/server/people/data/ConversationInfo;
+Lcom/android/server/people/data/ConversationStore;
+Lcom/android/server/people/data/DataManager$1;
+Lcom/android/server/people/data/DataManager$ContactsContentObserver;
+Lcom/android/server/people/data/DataManager$Injector;
+Lcom/android/server/people/data/DataManager$NotificationListener;
+Lcom/android/server/people/data/DataManager$PerUserBroadcastReceiver;
+Lcom/android/server/people/data/DataManager$ShortcutServiceListener;
+Lcom/android/server/people/data/DataManager$UsageStatsQueryRunnable;
+Lcom/android/server/people/data/DataManager;
+Lcom/android/server/people/data/Event;
+Lcom/android/server/people/data/EventHistory;
+Lcom/android/server/people/data/EventHistoryImpl;
+Lcom/android/server/people/data/EventStore;
+Lcom/android/server/people/data/PackageData;
+Lcom/android/server/people/data/UserData;
+Lcom/android/server/people/prediction/ConversationPredictor;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$1$dbgKSgcSW-enjqvNAbeI3zvdw_E;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$48iOSmygOXJ0TezZTiFdfMqA4-U;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$ZSnyvqMou1dicjDEP1s6HfI9AtM;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$o0S1o3gtXHOOZT_0tmoPlF2FOdI;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$pQnjdbWgnVRvdOuYJTmevPGwE8s;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$q1ttlIbEI3KHg5wkhDwkpDn2qCU;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$tz3TLW-UaMjqz-wkojT7H_pVbZU;
+Lcom/android/server/pm/-$$Lambda$ApexManager$ApexManagerImpl$zKFrzIK0lAT7V4Fl0Pv5KKt1Gu0;
+Lcom/android/server/pm/-$$Lambda$AppsFilter$FeatureConfigImpl$n15whgPRX7bGimHq6-7mgAskIKs;
+Lcom/android/server/pm/-$$Lambda$AppsFilter$irFGkuh4mJ419pXBYKSj13ADTtA;
+Lcom/android/server/pm/-$$Lambda$BWZi0Aa35BwEPzNacDfE_69TPS8;
+Lcom/android/server/pm/-$$Lambda$BackgroundDexOptService$-KiE2NsUP--OYmoSDt9BwEQICZw;
+Lcom/android/server/pm/-$$Lambda$BackgroundDexOptService$TAsfDUuoxt92xKFoSCfpMUmY2Es;
+Lcom/android/server/pm/-$$Lambda$CFSsMipQUq5_2T1_SDplRJCGzsQ;
 Lcom/android/server/pm/-$$Lambda$ComponentResolver$PuHbZd5KEOMGjkH8xDOhOwfLtC0;
+Lcom/android/server/pm/-$$Lambda$CrossProfileAppsServiceImpl$wMVevLD4FZ1cL73xmtbSkTJK9d8;
+Lcom/android/server/pm/-$$Lambda$EvXtX9FEb_c87yAlCmxSfLtExqQ;
+Lcom/android/server/pm/-$$Lambda$FW40Da1L1EZJ_usDX0ew1qRMmtc;
 Lcom/android/server/pm/-$$Lambda$Installer$SebeftIfAJ7KsTmM0tju6PfW4Pc;
 Lcom/android/server/pm/-$$Lambda$InstantAppRegistry$BuKCbLr_MGBazMPl54-pWTuGHYY;
+Lcom/android/server/pm/-$$Lambda$InstantAppRegistry$R7XSXckXZJx-7zO-lFkgYY_-lWA;
 Lcom/android/server/pm/-$$Lambda$InstantAppRegistry$UOn4sUy4zBQuofxUbY8RBYhkNSE;
 Lcom/android/server/pm/-$$Lambda$InstantAppRegistry$eaYsiecM_Rq6dliDvliwVtj695o;
-Lcom/android/server/pm/-$$Lambda$InstantAppRegistry$o-Qxi7Gaam-yhhMK-IMWv499oME;
+Lcom/android/server/pm/-$$Lambda$InstantAppResolverConnection$D-JKXi4qrYjnPQMOwj8UtfZenps;
+Lcom/android/server/pm/-$$Lambda$K2g8Oho05j5S7zVOkoQrHzM_Gig;
+Lcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$MyPackageMonitor$eTair5Mvr14v4M0nq9aQEW2cp-Y;
+Lcom/android/server/pm/-$$Lambda$LauncherAppsService$LauncherAppsImpl$PR6SMHDNFTsnoL92MFZskM-zN8k;
+Lcom/android/server/pm/-$$Lambda$OtaDexoptService$sAE9PLBjWsXDVkiiC_uzr0kwQ4k;
 Lcom/android/server/pm/-$$Lambda$PackageInstallerService$vra5ZkE3juVvcgDBu5xv0wVzno8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$5hSpumAE5maEOgUlkeKZ3EJQUOU;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$9ZEk0HhVZsj2KQghpPxi82zlVQA;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$Iz1l7RVtATr5Ybl_zHeYuCbGMvA;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$JUo3M6zuPH65x1voKjSOJvOMHRw;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$O5iApY07YeJyXA8KUFVcxpCf1NI;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$PackageParserCallback$xinvBJUpQse3J1IBBKjvYTIW8MQ;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$ThH5vuBggVL5a6g8JW6gf8x0jT8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$YHri1Lu_7U5nzv2NPItDUIuocnY;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$gOdSzzOoHvFHJbKlJkAgg4fzOH8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$gqdNHYJiYM0w_nIH0nGMWWU8yzQ;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$opO5L-t6aW9gAx6B5CGlW6sAaX8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$rBFEstQVW677jj2Z8w3Ei9Li_HQ;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$sJ5w9GfSftnZPyv5hBDxQkxDJMU;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$xJ_pDKPvSH0lgOwva8xeI2zJ2ns;
-Lcom/android/server/pm/-$$Lambda$PackageManagerService$xKFHvZAUir1Y_lClMWZh87peKs8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$Fz3elZ0VmMMv9-wl_G3AN15dUU8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$QMV-UHbRIK26QMZL5iM27MchX7U;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ePZ6rsJ05hJ2glmOqcq1_jX6J8w;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$fMBP3pPR7BB2hICieRxkdNG-3H8;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$hVRkjdaFuAMTY9J9JQ7JyWMYCHA;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$nPt0Hym3GvYeWA2vwfOLFDxZmCE;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$p5q19y4-2x-i747j_hTNL1EMzt0;
-Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$whx96xO50U3fax1NRe1upTcx9jc;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$0MwsfMSD_PrEtElmOWjbhM7455A;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$1Vn1SAhcCHhhsIQilx5inKAgWRM;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$8h1d-tE1jIyQL1g477wJngVHGm0;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$A1RHq3AVT8egu8DUw6cGBmsHEPc;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$I-m_B4h0BMOozr8LCZKwLk8jYwA;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$Jldeo0ihCZqsZyrchyGGrBvBFhI;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$LKX-RujkFnSgLnC0cYsTt3XfpMw;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$Q84DQuKTSKG_oVZkTd4otsUSsIE;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$RFRVvuZuSQwpU_8M3Ga1MzynP8I;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$ZZgozNNErmyn9Tirn9svDJQY2u4;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$ZoEZmTQxt8zSZ4xFr5F5KoJtKIk;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$gIaZyqaw0zETPQMxuRW3BVLMZ-Y;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$hcjzMyeJvQ7YhAw688UGz8W5_aU;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$iyfVEu9LbUOK_cEGZ3wXC81wsgs;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$lBx0EGMbjm-sO2YmD4xcKPdUC6g;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$rKtX6eBC-DOrX8wgZiUgIdje2Kc;
+Lcom/android/server/pm/-$$Lambda$PackageInstallerSession$yEAIQbVnbSznJVW9xPXv9WGuzI0;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$-SI_LHw6Eiq8VNiFLLjJdCbGgSQ;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$0Regyd5pBrcIdGN2_jpl21L-KWw;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$2LJuxrdU5DWIRpDkTbzKA8U7iIc;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$3TlqkUBuVM7NyAg7uqJCni92WOU;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$3yxDU_uSU2kkdLuKkfPYVKvXKGw;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$4lr9R3-Rfzq-VEptx-WWeRaSpd4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$BzRujGrz-3iO1VZDBUuSaqm63Go;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$DWomXCDpiVbZPOk7h4gWI0gNMDM;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$ECakc05vOVsUm8ydpi2Z-HghH4w;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$EQHzRzxse-rtXNIoVfzT15c8LHI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$FFJwRezEfCP4utcPN2U9pjn2hIo;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$I5XLVROcF2w_-cucMNuicHY0H0k;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$J0eEFDuLDZBCGkS0UBLQaQGBMN8;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$JQITabyRBc2Nst0hnvtDUIYPLkk;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$JqISwjRG4Nrwn7K19yITMU1WH5g;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$KUTG4a_t__F9-jF9uKK4m5M6ED0;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$Kv9_Hbk7M-eyDSHfPi1rrQzjiwc;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$Mtahsr42dH18eRuAJ0J6DzShLys;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$OchkDx-ijr5A5mGpkAil3XLu7Oo;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$PmwkzQu9rsYKerIyizl5HqTMOeY;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$PvuTB7Ihf5rmN0ByWpLv31cRa7s;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$QEXaCTQ54nCy5aHUAa6mkt0WtpM;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$RfqRmQ8KNtYywzf-EIm7VG5PHj8;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$RoklvvEqbb0_WAziY4NuUNhrlUA;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$U47f17sf-Z0eef3W2xgzUB-ecR4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$UqTOzDNpKPiIlaG4_AUlesB9I1E;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$VINGOt0rwLOHiIrsYfMP2VPHvl0;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$WLKCxynYP-nOLQg-OBNNc1w2Z18;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$Wnf5zZuMJLUQ4GfjHtUww4l7YUg;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$XBL5VfMu2aQcjyrc4spKskHsSJU;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$XrodqQtXF-63SFPD_WxRBB7sfa4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$YHVD9fSfoszBkmlqzmswh1u_y_M;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$Ze0Xh0iBIll5jkJ4VcmUxBuZyI8;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$_CMCXnVAsgXUrfmWq_KOQ0-d17c;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$aXPYjiloRwQataUrx041SxBr5us;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$aptgkdXtM4g66mNvfWDFzI6FQyI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$cHQqBPj5vgOw-P7yhrKC9Ssq27g;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$ccz4PCOSG7fKRFBAMJv8GMQMI08;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$djQQrdclAlQ8ILip1OVPcBDTkW4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$ey1rLNYtfJSvujRGt9gqdyMxIwI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$f5l1_UOwACQPN6qixqBmzSJzDMw;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$fQjXY6S0s38rWZ-Tv1PTQvrgJb4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$hLkpaH_y40nbOItNYjiR8EOZUgM;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$hlGRKJu3cTGpEnG-hyOT3QbrXxY;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$i2wY1QKIZAfMEAymOPPs8KS2G5c;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$i6CpetYRHYknkq8R3n1zFsH2Qng;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$imyTLGZ0HLyacORSu0iPTteivzY;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$kHFR9hPPJshGwQIlj0mPFAZIZSI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$kUm15OrlWJD9K-LIlM_rBtX-g4Q;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$kdqJJNrm44ZfCpYgQsRrZy7nM38;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$mozSqBaYzz4jQjwZjKIapdRXflc;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$ms4g2QGGQv1AIanhd1siLhoElkI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$pVdeIe13BPz2j1-uK6W_NugHu2Q;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$pzzC0ChZnM8yUb83hUS8pcZYU3A;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$qNpeCKStShTSYrHT0cclQGx1igI;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$r9dUYOfGzr26Di0nsqMuBl6nBJY;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$rAJdldFfFkjlsYiEzyWtJPRkHn8;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$rJEHTCbZuliP-AofB7kQxwDOX4I;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$rLdmTQLwnuPeDuWTeDB-0S1Ku4I;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$rcVfdsXa_dlub2enxT5rL0nTx7I;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$vPmwW10Lr1Zc8YoNadc7v4xmIWo;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$vyKDCUt14soSFqmBBfd52n5w5qM;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$xKD6SB7pISjc29qfmXIq5O_3OJw;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$xZAAMOZCDrDe-FJUcRmxesa8h7c;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$xv5zSGDUCMQ_E6mH4qgdkiJ5XtA;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$xwqiJpXPI0dDAZ1z9noew-rHViA;
+Lcom/android/server/pm/-$$Lambda$PackageManagerService$zCuBGosGB1OGJ7ya2EB4X5V2jBk;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$1RbkDa86pOg-5BavmgbPLLCoJCA;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$JqfeXEVVj9qyD-t5TtAWP5dUo_Q;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$WqWSiwN-039OE_mRd8x6F_ORqRU;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$ZEbcK7yQgHqG-8Z65v9KNo4jBgU;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$_LUs2lN_dtgmbhOTm2Ear0f91Qg;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$eMhMS_ozPxLQedSFcYUWkqe3DH4;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$pak5uFueWVDXpeD0raY40AD6lPY;
+Lcom/android/server/pm/-$$Lambda$PackageManagerServiceUtils$qCP9hzvvo1JqZQ7mV-34TucIk2o;
+Lcom/android/server/pm/-$$Lambda$PackageManagerShellCommand$-OZpz58K2HXVuHDuVYKnCu6oo4c;
+Lcom/android/server/pm/-$$Lambda$PackageManagerShellCommand$v3vXA2YvCwaE7J0QfR1IQ122iTI;
 Lcom/android/server/pm/-$$Lambda$ParallelPackageParser$FTtinPrp068lVeI7K6bC1tNE3iM;
+Lcom/android/server/pm/-$$Lambda$RIrciDUAm_lS8CbvRCW_P-ee_-4;
 Lcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$AUDgG57FGyGDUVDAjL-7cuiE0pM;
+Lcom/android/server/pm/-$$Lambda$ShortcutBitmapSaver$xgjvZfaiKXavxgGCSta_eIdVBnk;
+Lcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$rwmVVp6PnQCcurF7D6VzrdNqEdk;
+Lcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$stGgHzhh-NVWPgDSwmH2ybAWRE8;
+Lcom/android/server/pm/-$$Lambda$ShortcutDumpFiles$v6wMz6MRa9pgSnEDM_9bjvrLaKY;
+Lcom/android/server/pm/-$$Lambda$ShortcutPackage$ZN-r6tS0M7WKGK6nbXyJZPwNRGc;
+Lcom/android/server/pm/-$$Lambda$ShortcutPackage$hEXnzlESoRjagj8Pd9f4PrqudKE;
+Lcom/android/server/pm/-$$Lambda$ShortcutPackage$ibOAVgfKWMZFYSeVV_hLNx6jogk;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$2mjLrqafL_ZPftw5bIS-yyK7PxI;
 Lcom/android/server/pm/-$$Lambda$ShortcutService$3$WghiV-HLnzJqZabObC5uHCmb960;
 Lcom/android/server/pm/-$$Lambda$ShortcutService$3$n_VdEzyBcjs0pGZO8GnB0FoTgR0;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$DzwraUeMWDwA0XDfFxd3sGOsA0E;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$EE8aJ-V-lThNgd-x9utgJTk3K50;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$H1HFyb1U9E1-y03suEsi37_w-t0;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$HrjNihAM4odnSGPLxsJbI33JkwE;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$KOp4rgvJPqXwR4WftrrGcjb2qMQ;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$Q0t7aDuDFJ8HWAf1NHW1dGQjOf8;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ZxpFznY3OrD6IbNkC12YhV8h3J4;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$a6cj3oQpS-Z6FB4DytB0FytYmiM;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$LocalService$ltDE7qm9grkumxffFI8cLCFpNqU;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$M_jA5rlnfqs19yyXen7WvF8EFdQ;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$NdP-8QRYjvDVSScw7cBKt85dbWQ;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$Ot_p1CCuELDP1Emv4jTa8vvA09A;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$QFWliMhWloedhnaZCwVKaqKPVb4;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$SjK_0i78sIpSTGJKpeLWOhhhsiA;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$TAtLoMHHFYLITi_4Sj-ZTHx6ELo;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$TUT0CJsDhxqkpcseduaAriOs6bg;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$TVqBA9DN_h90eIcwrnmy7Mkl6jo;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$exGcjcSQADxpLL30XenIn9sDxlI;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$fCl_JbVpr187Fh4_6N-IxgnU68c;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$fqEqB5P0QHkQKJgSWuI8hNg-9pk;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$iFS9voxIL014PvOEV1G-QzjkDjk;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$io6aQoSP1ibWQCoayRXJaxbmJvA;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$l8T8kXBB-Gktym0FoX_WiKj2Glc;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$lYluTnTRdTOcpwtJusvYEvlkMjQ;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$nr2YpVwPOGGO8CME0IHeIUIo4yk;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$oes_dY8CJz5MllJiOggarpV9YkA;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$s11VOofRVMGkuwyyqnMY7eAyb5k;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$t1am7miIbc4iP6CfSL0gFgEsO0Y;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$uvknhLDPo5JAtmXalM9P3rrx9e4;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$vKI79Gf4pKq8ASWghBXV-NKhZwk;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$w7_ouiisHmMMzTkQ_HUAHbawlLY;
+Lcom/android/server/pm/-$$Lambda$ShortcutService$y1mZhNAWeEp6GCbsOBAt4g-DS3s;
+Lcom/android/server/pm/-$$Lambda$ShortcutUser$6rBk7xJFaM9dXyyKHFs-DCus0iM;
+Lcom/android/server/pm/-$$Lambda$ShortcutUser$XHWlvjfCvG1SoVwGHi3envhmtfM;
+Lcom/android/server/pm/-$$Lambda$ShortcutUser$bsc89E_40a5X2amehalpqawQ5hY;
+Lcom/android/server/pm/-$$Lambda$StagingManager$-_ny3FTrU2IsbpZjLW2h29O5auM;
+Lcom/android/server/pm/-$$Lambda$StagingManager$HKgsX1m7APD_7T6AtjHR5IBpKOg;
+Lcom/android/server/pm/-$$Lambda$StagingManager$UAHmD_dya6rWSylrk_h2BGFBKcA;
+Lcom/android/server/pm/-$$Lambda$StagingManager$ZgsDW9nz_GRyhJblDPqTcQpERKw;
+Lcom/android/server/pm/-$$Lambda$StagingManager$d5wng09Aqg6kD7IttyYM7c0-S_s;
+Lcom/android/server/pm/-$$Lambda$StagingManager$khHJXt_K9cdI6PMA3kOt_alWSgA;
+Lcom/android/server/pm/-$$Lambda$StagingManager$klDFpL8kmOtsqN6EenDYGj-WaZA;
+Lcom/android/server/pm/-$$Lambda$StagingManager$l7fa-k0J9C50Vr9mDKn9MKzrXEI;
 Lcom/android/server/pm/-$$Lambda$UserManagerService$1$DQ_02g7kZ7QrJXO6aCATwE6DYCE;
+Lcom/android/server/pm/-$$Lambda$UserManagerService$s1AxethOTPU7NQ5LXxyP4etLk7E;
+Lcom/android/server/pm/-$$Lambda$UserSystemPackageInstaller$G2PoxOZRnHC75k6Z6WIxO5_7BnU;
+Lcom/android/server/pm/-$$Lambda$UserSystemPackageInstaller$qgQhYPPVJE0ZGQMRr6lmVdZZll0;
+Lcom/android/server/pm/-$$Lambda$UserSystemPackageInstaller$sAb1bQVy3LvCkecpDpo9566E_WA;
+Lcom/android/server/pm/-$$Lambda$XAnWXMIiLhuW-IgC6QMv9mUZKLs;
+Lcom/android/server/pm/-$$Lambda$_14QHG018Z6p13d3hzJuGTWnNeo;
+Lcom/android/server/pm/-$$Lambda$aDS6mx4DkwptPe2nlJ1LiNnzsdA;
+Lcom/android/server/pm/-$$Lambda$g4P9K8aMR8DqEu0xx3BuQNeuJDI;
 Lcom/android/server/pm/-$$Lambda$jZzCUQd1whVIqs_s1XMLbFqTP_E;
+Lcom/android/server/pm/-$$Lambda$k1GFoI6SobyVJslBym5uZjmuRFs;
+Lcom/android/server/pm/-$$Lambda$lPF7xFSzcWOL7sNKaTqRz6Ju9JA;
+Lcom/android/server/pm/-$$Lambda$o-ZLavkSzPWqIqo9vLXCsdj4Pgg;
+Lcom/android/server/pm/-$$Lambda$p0TiQPw2ryHKkedVkMgvUcGADDo;
+Lcom/android/server/pm/-$$Lambda$sAnQjWlQDJoJcSwHDDCKcU2fneU;
+Lcom/android/server/pm/-$$Lambda$vv6Ko6L2p38nn3EYcL5PZxcyRyk;
 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$ApexManagerFlattenedApex;
+Lcom/android/server/pm/ApexManager$ApexManagerImpl$1;
+Lcom/android/server/pm/ApexManager$ApexManagerImpl;
 Lcom/android/server/pm/ApexManager;
+Lcom/android/server/pm/AppsFilter$1;
+Lcom/android/server/pm/AppsFilter$FeatureConfig;
+Lcom/android/server/pm/AppsFilter$FeatureConfigImpl;
+Lcom/android/server/pm/AppsFilter$ToString;
+Lcom/android/server/pm/AppsFilter;
+Lcom/android/server/pm/BackgroundDexOptService$1;
+Lcom/android/server/pm/BackgroundDexOptService$2;
 Lcom/android/server/pm/BackgroundDexOptService;
 Lcom/android/server/pm/CompilerStats$PackageStats;
 Lcom/android/server/pm/CompilerStats;
-Lcom/android/server/pm/ComponentResolver$ActionIterGenerator;
+Lcom/android/server/pm/ComponentResolver$1;
 Lcom/android/server/pm/ComponentResolver$ActivityIntentResolver;
-Lcom/android/server/pm/ComponentResolver$AuthoritiesIterGenerator;
-Lcom/android/server/pm/ComponentResolver$CategoriesIterGenerator;
-Lcom/android/server/pm/ComponentResolver$IterGenerator;
+Lcom/android/server/pm/ComponentResolver$InstantAppIntentResolver;
 Lcom/android/server/pm/ComponentResolver$ProviderIntentResolver;
-Lcom/android/server/pm/ComponentResolver$SchemesIterGenerator;
+Lcom/android/server/pm/ComponentResolver$ReceiverIntentResolver;
 Lcom/android/server/pm/ComponentResolver$ServiceIntentResolver;
 Lcom/android/server/pm/ComponentResolver;
 Lcom/android/server/pm/CrossProfileAppsService;
@@ -19867,8 +43471,14 @@
 Lcom/android/server/pm/CrossProfileAppsServiceImpl;
 Lcom/android/server/pm/CrossProfileIntentFilter;
 Lcom/android/server/pm/CrossProfileIntentResolver;
+Lcom/android/server/pm/DataLoaderManagerService$DataLoaderManagerBinderService;
+Lcom/android/server/pm/DataLoaderManagerService$DataLoaderServiceConnection;
+Lcom/android/server/pm/DataLoaderManagerService;
 Lcom/android/server/pm/DumpState;
+Lcom/android/server/pm/DynamicCodeLoggingService$AuditWatchingThread;
+Lcom/android/server/pm/DynamicCodeLoggingService$IdleLoggingThread;
 Lcom/android/server/pm/DynamicCodeLoggingService;
+Lcom/android/server/pm/InstallSource;
 Lcom/android/server/pm/Installer$1;
 Lcom/android/server/pm/Installer$InstallerException;
 Lcom/android/server/pm/Installer;
@@ -19876,10 +43486,12 @@
 Lcom/android/server/pm/InstantAppRegistry$UninstalledInstantAppState;
 Lcom/android/server/pm/InstantAppRegistry;
 Lcom/android/server/pm/InstantAppResolver;
+Lcom/android/server/pm/InstantAppResolverConnection$1;
 Lcom/android/server/pm/InstantAppResolverConnection$ConnectionException;
 Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller$1;
 Lcom/android/server/pm/InstantAppResolverConnection$GetInstantAppResolveInfoCaller;
 Lcom/android/server/pm/InstantAppResolverConnection$MyServiceConnection;
+Lcom/android/server/pm/InstantAppResolverConnection$PhaseTwoCallback;
 Lcom/android/server/pm/InstantAppResolverConnection;
 Lcom/android/server/pm/InstructionSets;
 Lcom/android/server/pm/IntentFilterVerificationResponse;
@@ -19888,24 +43500,44 @@
 Lcom/android/server/pm/KeySetManagerService$1;
 Lcom/android/server/pm/KeySetManagerService$PublicKeyHandle;
 Lcom/android/server/pm/KeySetManagerService;
+Lcom/android/server/pm/LauncherAppsService$1;
+Lcom/android/server/pm/LauncherAppsService$BroadcastCookie;
 Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$MyPackageMonitor;
 Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl$PackageCallbackList;
 Lcom/android/server/pm/LauncherAppsService$LauncherAppsImpl;
 Lcom/android/server/pm/LauncherAppsService;
 Lcom/android/server/pm/ModuleInfoProvider;
+Lcom/android/server/pm/OtaDexoptService$1;
+Lcom/android/server/pm/OtaDexoptService$OTADexoptPackageDexOptimizer;
 Lcom/android/server/pm/OtaDexoptService;
+Lcom/android/server/pm/OtaDexoptShellCommand;
+Lcom/android/server/pm/PackageAbiHelper$Abis;
+Lcom/android/server/pm/PackageAbiHelper$NativeLibraryPaths;
+Lcom/android/server/pm/PackageAbiHelper;
+Lcom/android/server/pm/PackageAbiHelperImpl;
 Lcom/android/server/pm/PackageDexOptimizer$ForcedUpdatePackageDexOptimizer;
 Lcom/android/server/pm/PackageDexOptimizer;
 Lcom/android/server/pm/PackageInstallerService$1;
 Lcom/android/server/pm/PackageInstallerService$2;
 Lcom/android/server/pm/PackageInstallerService$Callbacks;
+Lcom/android/server/pm/PackageInstallerService$InternalCallback$1;
 Lcom/android/server/pm/PackageInstallerService$InternalCallback;
+Lcom/android/server/pm/PackageInstallerService$PackageDeleteObserverAdapter;
 Lcom/android/server/pm/PackageInstallerService;
 Lcom/android/server/pm/PackageInstallerSession$1;
 Lcom/android/server/pm/PackageInstallerSession$2;
 Lcom/android/server/pm/PackageInstallerSession$3;
+Lcom/android/server/pm/PackageInstallerSession$4;
+Lcom/android/server/pm/PackageInstallerSession$5;
+Lcom/android/server/pm/PackageInstallerSession$6;
+Lcom/android/server/pm/PackageInstallerSession$ChildStatusIntentReceiver;
+Lcom/android/server/pm/PackageInstallerSession$FileInfo;
+Lcom/android/server/pm/PackageInstallerSession$FileSystemConnector;
+Lcom/android/server/pm/PackageInstallerSession$Notificator;
+Lcom/android/server/pm/PackageInstallerSession$StreamingException;
 Lcom/android/server/pm/PackageInstallerSession;
 Lcom/android/server/pm/PackageKeySetData;
+Lcom/android/server/pm/PackageList;
 Lcom/android/server/pm/PackageManagerException;
 Lcom/android/server/pm/PackageManagerService$1;
 Lcom/android/server/pm/PackageManagerService$2;
@@ -19915,20 +43547,30 @@
 Lcom/android/server/pm/PackageManagerService$6;
 Lcom/android/server/pm/PackageManagerService$7;
 Lcom/android/server/pm/PackageManagerService$8;
+Lcom/android/server/pm/PackageManagerService$9;
+Lcom/android/server/pm/PackageManagerService$ActiveInstallSession;
 Lcom/android/server/pm/PackageManagerService$BlobXmlRestorer;
+Lcom/android/server/pm/PackageManagerService$CommitRequest;
 Lcom/android/server/pm/PackageManagerService$CrossProfileDomainInfo;
 Lcom/android/server/pm/PackageManagerService$DeletePackageAction;
 Lcom/android/server/pm/PackageManagerService$FileInstallArgs;
 Lcom/android/server/pm/PackageManagerService$HandlerParams;
 Lcom/android/server/pm/PackageManagerService$IFVerificationParams;
+Lcom/android/server/pm/PackageManagerService$Injector$LocalServicesProducer;
+Lcom/android/server/pm/PackageManagerService$Injector$Producer;
+Lcom/android/server/pm/PackageManagerService$Injector$Singleton;
+Lcom/android/server/pm/PackageManagerService$Injector$SystemServiceProducer;
+Lcom/android/server/pm/PackageManagerService$Injector;
 Lcom/android/server/pm/PackageManagerService$InstallArgs;
+Lcom/android/server/pm/PackageManagerService$InstallParams$1;
 Lcom/android/server/pm/PackageManagerService$InstallParams;
+Lcom/android/server/pm/PackageManagerService$InstallRequest;
 Lcom/android/server/pm/PackageManagerService$IntentFilterVerifier;
 Lcom/android/server/pm/PackageManagerService$IntentVerifierProxy;
 Lcom/android/server/pm/PackageManagerService$MoveCallbacks;
 Lcom/android/server/pm/PackageManagerService$MoveInfo;
 Lcom/android/server/pm/PackageManagerService$MoveInstallArgs;
-Lcom/android/server/pm/PackageManagerService$OnPermissionChangeListeners;
+Lcom/android/server/pm/PackageManagerService$MultiPackageInstallParams;
 Lcom/android/server/pm/PackageManagerService$OriginInfo;
 Lcom/android/server/pm/PackageManagerService$PackageFreezer;
 Lcom/android/server/pm/PackageManagerService$PackageHandler;
@@ -19937,7 +43579,6 @@
 Lcom/android/server/pm/PackageManagerService$PackageManagerNative;
 Lcom/android/server/pm/PackageManagerService$PackageParserCallback;
 Lcom/android/server/pm/PackageManagerService$PackageRemovedInfo;
-Lcom/android/server/pm/PackageManagerService$ParallelPackageParserCallback;
 Lcom/android/server/pm/PackageManagerService$PendingPackageBroadcasts;
 Lcom/android/server/pm/PackageManagerService$PostInstallData;
 Lcom/android/server/pm/PackageManagerService$PrepareFailure;
@@ -19948,10 +43589,23 @@
 Lcom/android/server/pm/PackageManagerService$ScanRequest;
 Lcom/android/server/pm/PackageManagerService$ScanResult;
 Lcom/android/server/pm/PackageManagerService$SystemDeleteException;
+Lcom/android/server/pm/PackageManagerService$SystemPartition;
 Lcom/android/server/pm/PackageManagerService$VerificationInfo;
 Lcom/android/server/pm/PackageManagerService;
 Lcom/android/server/pm/PackageManagerServiceCompilerMapping;
+Lcom/android/server/pm/PackageManagerServiceUtils$1;
 Lcom/android/server/pm/PackageManagerServiceUtils;
+Lcom/android/server/pm/PackageManagerShellCommand$1;
+Lcom/android/server/pm/PackageManagerShellCommand$2;
+Lcom/android/server/pm/PackageManagerShellCommand$3;
+Lcom/android/server/pm/PackageManagerShellCommand$4;
+Lcom/android/server/pm/PackageManagerShellCommand$ClearDataObserver;
+Lcom/android/server/pm/PackageManagerShellCommand$InstallParams;
+Lcom/android/server/pm/PackageManagerShellCommand$LocalIntentReceiver;
+Lcom/android/server/pm/PackageManagerShellCommand$SessionDump;
+Lcom/android/server/pm/PackageManagerShellCommand$SnapshotRuntimeProfileCallback;
+Lcom/android/server/pm/PackageManagerShellCommand;
+Lcom/android/server/pm/PackageManagerShellCommandDataLoader;
 Lcom/android/server/pm/PackageSender;
 Lcom/android/server/pm/PackageSessionProvider;
 Lcom/android/server/pm/PackageSetting;
@@ -19983,30 +43637,61 @@
 Lcom/android/server/pm/Settings$VersionInfo;
 Lcom/android/server/pm/Settings;
 Lcom/android/server/pm/SharedUserSetting;
+Lcom/android/server/pm/ShortcutBitmapSaver$1;
+Lcom/android/server/pm/ShortcutBitmapSaver$PendingItem;
 Lcom/android/server/pm/ShortcutBitmapSaver;
 Lcom/android/server/pm/ShortcutDumpFiles;
+Lcom/android/server/pm/ShortcutLauncher;
+Lcom/android/server/pm/ShortcutNonPersistentUser;
+Lcom/android/server/pm/ShortcutPackage;
+Lcom/android/server/pm/ShortcutPackageInfo;
+Lcom/android/server/pm/ShortcutPackageItem;
+Lcom/android/server/pm/ShortcutParser;
+Lcom/android/server/pm/ShortcutRequestPinProcessor$1;
+Lcom/android/server/pm/ShortcutRequestPinProcessor$PinAppWidgetRequestInner;
+Lcom/android/server/pm/ShortcutRequestPinProcessor$PinItemRequestInner;
+Lcom/android/server/pm/ShortcutRequestPinProcessor$PinShortcutRequestInner;
 Lcom/android/server/pm/ShortcutRequestPinProcessor;
 Lcom/android/server/pm/ShortcutService$1;
 Lcom/android/server/pm/ShortcutService$2;
 Lcom/android/server/pm/ShortcutService$3;
 Lcom/android/server/pm/ShortcutService$4;
 Lcom/android/server/pm/ShortcutService$5;
+Lcom/android/server/pm/ShortcutService$DumpFilter;
+Lcom/android/server/pm/ShortcutService$FileOutputStreamWithPath;
 Lcom/android/server/pm/ShortcutService$InvalidFileFormatException;
 Lcom/android/server/pm/ShortcutService$Lifecycle;
 Lcom/android/server/pm/ShortcutService$LocalService;
+Lcom/android/server/pm/ShortcutService$MyShellCommand;
 Lcom/android/server/pm/ShortcutService;
+Lcom/android/server/pm/ShortcutUser$PackageWithUser;
+Lcom/android/server/pm/ShortcutUser;
+Lcom/android/server/pm/StagingManager$1;
+Lcom/android/server/pm/StagingManager$LocalIntentReceiverAsync;
+Lcom/android/server/pm/StagingManager$LocalIntentReceiverSync;
+Lcom/android/server/pm/StagingManager$PreRebootVerificationHandler;
 Lcom/android/server/pm/StagingManager;
 Lcom/android/server/pm/UserDataPreparer;
 Lcom/android/server/pm/UserManagerService$1;
 Lcom/android/server/pm/UserManagerService$2;
 Lcom/android/server/pm/UserManagerService$3;
 Lcom/android/server/pm/UserManagerService$4;
+Lcom/android/server/pm/UserManagerService$5;
+Lcom/android/server/pm/UserManagerService$6;
+Lcom/android/server/pm/UserManagerService$DisableQuietModeUserUnlockedCallback;
 Lcom/android/server/pm/UserManagerService$LifeCycle;
+Lcom/android/server/pm/UserManagerService$LocalService$1;
 Lcom/android/server/pm/UserManagerService$LocalService;
 Lcom/android/server/pm/UserManagerService$MainHandler;
+Lcom/android/server/pm/UserManagerService$Shell;
 Lcom/android/server/pm/UserManagerService$UserData;
 Lcom/android/server/pm/UserManagerService;
 Lcom/android/server/pm/UserRestrictionsUtils;
+Lcom/android/server/pm/UserSystemPackageInstaller;
+Lcom/android/server/pm/UserTypeDetails$1;
+Lcom/android/server/pm/UserTypeDetails$Builder;
+Lcom/android/server/pm/UserTypeDetails;
+Lcom/android/server/pm/UserTypeFactory;
 Lcom/android/server/pm/dex/-$$Lambda$ArtManagerService$MEVzU-orlv4msZVF-bA5NLti04g;
 Lcom/android/server/pm/dex/-$$Lambda$ArtManagerService$_rD0Y6OPSJHMdjTIOtucoGQ1xag;
 Lcom/android/server/pm/dex/ArtManagerService$1;
@@ -20019,35 +43704,84 @@
 Lcom/android/server/pm/dex/DexoptOptions;
 Lcom/android/server/pm/dex/DexoptUtils;
 Lcom/android/server/pm/dex/DynamicCodeLogger;
+Lcom/android/server/pm/dex/PackageDexUsage$1;
 Lcom/android/server/pm/dex/PackageDexUsage$DexUseInfo;
 Lcom/android/server/pm/dex/PackageDexUsage$PackageUseInfo;
 Lcom/android/server/pm/dex/PackageDexUsage;
+Lcom/android/server/pm/dex/PackageDynamicCodeLoading$1;
 Lcom/android/server/pm/dex/PackageDynamicCodeLoading$DynamicCodeFile;
 Lcom/android/server/pm/dex/PackageDynamicCodeLoading$PackageDynamicCode;
 Lcom/android/server/pm/dex/PackageDynamicCodeLoading;
 Lcom/android/server/pm/dex/ViewCompiler;
+Lcom/android/server/pm/permission/-$$Lambda$DefaultPermissionGrantPolicy$SHfHTWKpfBf_vZtWArm-FlNBI8k;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$1$7A2ffMA57G4PvFD5RbG2mRh2Q_8;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$1$QSCLyelVDMHZe8LrlYhYvfz5G2c;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$3_HObOA7SDQazRHAVI1qUUdGq_s;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$5wIJaBo3ATYcr96ofI23sjuUqoA;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$BEPoV9HmbUN2-ZgCcIqC6xfzvew;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$E0rM1FNIqzKUZzqphmkzeY3ZdTk;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$JcWw5txStfnrnbvcFd2durv6YOo;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$NPd9St1HBvGAtg1uhMV2Upfww4g;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$PermissionManagerServiceInternalImpl$u0m9fxQ1DzsHML4E-xlMAgH2gIE;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$QU_UFF-9J77Mq118FLJUiLh4ARI;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$T4uCZ9__oEXYpzLBYEW1T_BN3SU;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$aQWnOfCuKK-rSxzDPI_dUOtzv8I;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$eApyRxwI3JHTSVAxV9EbP43gFOo;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$g9Bo5gFpLYyPOsp3K8Aik5xseDI;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$igfYI7thImnYrDxs3qWtqs2SCRk;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$iwnRBDwjg4K5iRGbRU5_sVt0zaU;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$oG7YD8MVgcqcPbx_HXQ04PEUOXM;
+Lcom/android/server/pm/permission/-$$Lambda$PermissionManagerService$vxr3T148I1WcHTp-Fe7nK-xkT-E;
+Lcom/android/server/pm/permission/-$$Lambda$oynlBn0BbcU0KODvfUDDUHb5LKY;
 Lcom/android/server/pm/permission/BasePermission;
 Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$1;
 Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrant;
-Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy$DefaultPermissionGrantedCallback;
 Lcom/android/server/pm/permission/DefaultPermissionGrantPolicy;
+Lcom/android/server/pm/permission/OneTimePermissionUserManager;
 Lcom/android/server/pm/permission/PermissionManagerService$1;
+Lcom/android/server/pm/permission/PermissionManagerService$2;
+Lcom/android/server/pm/permission/PermissionManagerService$OnPermissionChangeListeners;
 Lcom/android/server/pm/permission/PermissionManagerService$PermissionManagerServiceInternalImpl;
 Lcom/android/server/pm/permission/PermissionManagerService;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultBrowserProvider;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultDialerProvider;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal$DefaultHomeProvider;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PackagesProvider;
 Lcom/android/server/pm/permission/PermissionManagerServiceInternal$PermissionCallback;
+Lcom/android/server/pm/permission/PermissionManagerServiceInternal$SyncAdapterPackagesProvider;
 Lcom/android/server/pm/permission/PermissionManagerServiceInternal;
 Lcom/android/server/pm/permission/PermissionSettings;
 Lcom/android/server/pm/permission/PermissionsState$PermissionData;
 Lcom/android/server/pm/permission/PermissionsState$PermissionState;
 Lcom/android/server/pm/permission/PermissionsState;
+Lcom/android/server/policy/-$$Lambda$PermissionPolicyService$8D9Zbki65ND_Q20M-Trexl6cHcQ;
+Lcom/android/server/policy/-$$Lambda$PermissionPolicyService$EOXe1_laAw9FFgJquDg6Qy2DagQ;
+Lcom/android/server/policy/-$$Lambda$PermissionPolicyService$RYery4oeHNcS8uZ6BgM2MtZIvKw;
+Lcom/android/server/policy/-$$Lambda$PermissionPolicyService$V2gOjn4rTBH_rbxagOz-eOTvNfc;
+Lcom/android/server/policy/-$$Lambda$PermissionPolicyService$enZnky8NIhd5B9lAhmYeFn1Y6mk;
+Lcom/android/server/policy/-$$Lambda$oXa0y3A-00RiQs6-KTPBgpkGtgw;
+Lcom/android/server/policy/BurnInProtectionHelper;
+Lcom/android/server/policy/DisplayFoldController;
+Lcom/android/server/policy/EventLogTags;
+Lcom/android/server/policy/GlobalActions;
+Lcom/android/server/policy/GlobalActionsProvider$GlobalActionsListener;
 Lcom/android/server/policy/GlobalActionsProvider;
 Lcom/android/server/policy/GlobalKeyManager;
 Lcom/android/server/policy/IconUtilities;
 Lcom/android/server/policy/LogDecelerateInterpolator;
+Lcom/android/server/policy/PermissionPolicyInternal$OnInitializedCallback;
+Lcom/android/server/policy/PermissionPolicyInternal;
+Lcom/android/server/policy/PermissionPolicyService$1;
+Lcom/android/server/policy/PermissionPolicyService$2;
+Lcom/android/server/policy/PermissionPolicyService$Internal;
+Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser$OpToChange;
+Lcom/android/server/policy/PermissionPolicyService$PermissionToOpSynchroniser;
+Lcom/android/server/policy/PermissionPolicyService;
 Lcom/android/server/policy/PhoneWindowManager$10;
 Lcom/android/server/policy/PhoneWindowManager$11;
 Lcom/android/server/policy/PhoneWindowManager$12;
 Lcom/android/server/policy/PhoneWindowManager$13;
+Lcom/android/server/policy/PhoneWindowManager$14;
 Lcom/android/server/policy/PhoneWindowManager$1;
 Lcom/android/server/policy/PhoneWindowManager$2;
 Lcom/android/server/policy/PhoneWindowManager$3;
@@ -20056,6 +43790,9 @@
 Lcom/android/server/policy/PhoneWindowManager$6;
 Lcom/android/server/policy/PhoneWindowManager$7;
 Lcom/android/server/policy/PhoneWindowManager$8;
+Lcom/android/server/policy/PhoneWindowManager$9;
+Lcom/android/server/policy/PhoneWindowManager$DisplayHomeButtonHandler;
+Lcom/android/server/policy/PhoneWindowManager$HdmiControl;
 Lcom/android/server/policy/PhoneWindowManager$HdmiVideoExtconUEventObserver;
 Lcom/android/server/policy/PhoneWindowManager$MyWakeGestureListener;
 Lcom/android/server/policy/PhoneWindowManager$PolicyHandler;
@@ -20065,19 +43802,32 @@
 Lcom/android/server/policy/PhoneWindowManager;
 Lcom/android/server/policy/ShortcutManager$ShortcutInfo;
 Lcom/android/server/policy/ShortcutManager;
+Lcom/android/server/policy/SoftRestrictedPermissionPolicy$1;
+Lcom/android/server/policy/SoftRestrictedPermissionPolicy$2;
+Lcom/android/server/policy/SoftRestrictedPermissionPolicy$3;
+Lcom/android/server/policy/SoftRestrictedPermissionPolicy;
+Lcom/android/server/policy/SplashScreenSurface;
 Lcom/android/server/policy/WakeGestureListener$1;
 Lcom/android/server/policy/WakeGestureListener$2;
 Lcom/android/server/policy/WakeGestureListener;
 Lcom/android/server/policy/WindowManagerPolicy$DisplayContentInfo;
+Lcom/android/server/policy/WindowManagerPolicy$InputConsumer;
+Lcom/android/server/policy/WindowManagerPolicy$OnKeyguardExitResult;
+Lcom/android/server/policy/WindowManagerPolicy$ScreenOffListener;
+Lcom/android/server/policy/WindowManagerPolicy$ScreenOnListener;
+Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
 Lcom/android/server/policy/WindowManagerPolicy$WindowManagerFuncs;
 Lcom/android/server/policy/WindowManagerPolicy$WindowState;
 Lcom/android/server/policy/WindowManagerPolicy;
+Lcom/android/server/policy/WindowOrientationListener$AccelSensorJudge;
 Lcom/android/server/policy/WindowOrientationListener$OrientationJudge;
 Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge$1;
 Lcom/android/server/policy/WindowOrientationListener$OrientationSensorJudge;
 Lcom/android/server/policy/WindowOrientationListener;
+Lcom/android/server/policy/keyguard/-$$Lambda$KeyguardServiceDelegate$1$ZQ5qG3EmC57J43br9oobeNISXyE;
 Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$1;
 Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$DrawnListener;
+Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardExitDelegate;
 Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardShowDelegate;
 Lcom/android/server/policy/keyguard/KeyguardServiceDelegate$KeyguardState;
 Lcom/android/server/policy/keyguard/KeyguardServiceDelegate;
@@ -20085,17 +43835,26 @@
 Lcom/android/server/policy/keyguard/KeyguardStateMonitor$StateCallback;
 Lcom/android/server/policy/keyguard/KeyguardStateMonitor;
 Lcom/android/server/policy/role/LegacyRoleResolutionPolicy;
+Lcom/android/server/power/-$$Lambda$InattentiveSleepWarningController$EjYRIermunwb9Ll5LMj3chPJN6k;
+Lcom/android/server/power/-$$Lambda$InattentiveSleepWarningController$fd5hIb5QJl3fTkCKcm9jEkrhnUU;
 Lcom/android/server/power/-$$Lambda$PowerManagerService$FUW_os-Z9SregUE_DR9vDwaRuXo;
 Lcom/android/server/power/-$$Lambda$ThermalManagerService$9JFHCKCwrnUIYoXDsqNamhlY5VU;
 Lcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$R9S8YWn8x1F3V2TOvXtmky1V44Q;
+Lcom/android/server/power/-$$Lambda$ThermalManagerService$ThermalHal20Wrapper$dRsq86SXVH7z342fbs2U36cr67I;
 Lcom/android/server/power/-$$Lambda$ThermalManagerService$ZPQKzo9ZjU-hL4QYH693hWuTqjk;
 Lcom/android/server/power/-$$Lambda$ThermalManagerService$x5obtNvJKZxnpguOiQsFBDmBZ4k;
 Lcom/android/server/power/AttentionDetector$1;
-Lcom/android/server/power/AttentionDetector$2;
+Lcom/android/server/power/AttentionDetector$AttentionCallbackInternalImpl;
+Lcom/android/server/power/AttentionDetector$UserSwitchObserver;
 Lcom/android/server/power/AttentionDetector;
+Lcom/android/server/power/InattentiveSleepWarningController;
+Lcom/android/server/power/Notifier$1;
+Lcom/android/server/power/Notifier$2;
+Lcom/android/server/power/Notifier$3;
+Lcom/android/server/power/Notifier$4;
+Lcom/android/server/power/Notifier$5;
 Lcom/android/server/power/Notifier$6;
 Lcom/android/server/power/Notifier$7;
-Lcom/android/server/power/Notifier$8;
 Lcom/android/server/power/Notifier$NotifierHandler;
 Lcom/android/server/power/Notifier;
 Lcom/android/server/power/PowerManagerService$1;
@@ -20108,6 +43867,7 @@
 Lcom/android/server/power/PowerManagerService$DockReceiver;
 Lcom/android/server/power/PowerManagerService$DreamReceiver;
 Lcom/android/server/power/PowerManagerService$ForegroundProfileObserver;
+Lcom/android/server/power/PowerManagerService$Injector$1;
 Lcom/android/server/power/PowerManagerService$Injector;
 Lcom/android/server/power/PowerManagerService$LocalService;
 Lcom/android/server/power/PowerManagerService$NativeWrapper;
@@ -20119,18 +43879,39 @@
 Lcom/android/server/power/PowerManagerService$UserSwitchedReceiver;
 Lcom/android/server/power/PowerManagerService$WakeLock;
 Lcom/android/server/power/PowerManagerService;
+Lcom/android/server/power/PowerManagerShellCommand;
+Lcom/android/server/power/ShutdownThread;
 Lcom/android/server/power/SuspendBlocker;
+Lcom/android/server/power/SystemPropertiesWrapper;
 Lcom/android/server/power/ThermalManagerService$1;
+Lcom/android/server/power/ThermalManagerService$ThermalHal10Wrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalHal11Wrapper;
 Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper$1;
 Lcom/android/server/power/ThermalManagerService$ThermalHal20Wrapper;
 Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$DeathRecipient;
 Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper$TemperatureChangedCallback;
 Lcom/android/server/power/ThermalManagerService$ThermalHalWrapper;
+Lcom/android/server/power/ThermalManagerService$ThermalShellCommand;
 Lcom/android/server/power/ThermalManagerService;
+Lcom/android/server/power/WakeLockLog$EntryByteTranslator;
+Lcom/android/server/power/WakeLockLog$Injector;
+Lcom/android/server/power/WakeLockLog$LogEntry;
+Lcom/android/server/power/WakeLockLog$TagData;
+Lcom/android/server/power/WakeLockLog$TagDatabase$Callback;
+Lcom/android/server/power/WakeLockLog$TagDatabase;
+Lcom/android/server/power/WakeLockLog$TheLog$1;
+Lcom/android/server/power/WakeLockLog$TheLog$2;
+Lcom/android/server/power/WakeLockLog$TheLog;
+Lcom/android/server/power/WakeLockLog$WakeLockLogHandler;
+Lcom/android/server/power/WakeLockLog;
 Lcom/android/server/power/WirelessChargerDetector$1;
 Lcom/android/server/power/WirelessChargerDetector$2;
 Lcom/android/server/power/WirelessChargerDetector;
+Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$7a-wfvqpjaa389r6FVZsJX98cd8;
 Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverPolicy$rfw31Sb8JX1OVD2rGHGtCXyfop8;
+Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$66yeetZVz7IbzEr9gw2J77hoMVI;
+Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$KPPqeIS8QIZneCCBkN31dB4SR6U;
+Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$QXh4KHnoFaNqEkr199qR1vIeCpo;
 Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$SSfmWJrD4RBoVg8A8loZrS-jhAo;
 Lcom/android/server/power/batterysaver/-$$Lambda$BatterySaverStateMachine$fEidyt_9TXlXBpF6D2lhOOrfOC4;
 Lcom/android/server/power/batterysaver/-$$Lambda$FileUpdater$NUmipjKCJwbgmFbIcGS3uaz3QFk;
@@ -20151,61 +43932,135 @@
 Lcom/android/server/power/batterysaver/BatterySavingStats;
 Lcom/android/server/power/batterysaver/CpuFrequencies;
 Lcom/android/server/power/batterysaver/FileUpdater;
+Lcom/android/server/print/-$$Lambda$UserState$LdWYUAKz4cbWqoxOD4oZ_ZslKdg;
 Lcom/android/server/print/PrintManagerService$PrintManagerImpl$1;
 Lcom/android/server/print/PrintManagerService$PrintManagerImpl$2;
+Lcom/android/server/print/PrintManagerService$PrintManagerImpl$3;
+Lcom/android/server/print/PrintManagerService$PrintManagerImpl$4;
 Lcom/android/server/print/PrintManagerService$PrintManagerImpl;
 Lcom/android/server/print/PrintManagerService;
+Lcom/android/server/print/PrintShellCommand;
+Lcom/android/server/print/RemotePrintService$PrintServiceCallbacks;
+Lcom/android/server/print/RemotePrintService;
+Lcom/android/server/print/RemotePrintServiceRecommendationService$RemotePrintServiceRecommendationServiceCallbacks;
+Lcom/android/server/print/RemotePrintSpooler$MyServiceConnection;
+Lcom/android/server/print/RemotePrintSpooler$PrintSpoolerCallbacks;
+Lcom/android/server/print/RemotePrintSpooler$PrintSpoolerClient;
+Lcom/android/server/print/RemotePrintSpooler;
+Lcom/android/server/print/UserState$PrintJobForAppCache;
+Lcom/android/server/print/UserState;
+Lcom/android/server/protolog/-$$Lambda$PfxMAktVLMbQMPp_FRkrQxibSKE;
+Lcom/android/server/protolog/-$$Lambda$ProtoLogImpl$G6yKiHAdF7lI4aTCybTMCes5zyI;
+Lcom/android/server/protolog/-$$Lambda$ProtoLogImpl$W1-9aFv3AkmuxF_FKhP3IYl2IMA;
+Lcom/android/server/protolog/-$$Lambda$ProtoLogImpl$dhk0iBKAK3ywNSTqD4XUL3Oq0hM;
+Lcom/android/server/protolog/-$$Lambda$ProtoLogImpl$mcAeBX3AFrWeIaIbVZQdFHsbH1E;
+Lcom/android/server/protolog/-$$Lambda$ProtoLogImpl$u2ST5Fi0HXPt_TWW4vWXOLOmOOU;
+Lcom/android/server/protolog/-$$Lambda$QtQzaT3jZ03CdC3RGYitrH7aUYo;
+Lcom/android/server/protolog/ProtoLog$Cache;
+Lcom/android/server/protolog/ProtoLogImpl$1;
+Lcom/android/server/protolog/ProtoLogImpl$LogLevel;
+Lcom/android/server/protolog/ProtoLogImpl;
+Lcom/android/server/protolog/ProtoLogViewerConfigReader;
+Lcom/android/server/protolog/common/IProtoLogGroup;
+Lcom/android/server/protolog/common/LogDataType;
+Lcom/android/server/recoverysystem/RecoverySystemService$1;
+Lcom/android/server/recoverysystem/RecoverySystemService$Injector;
+Lcom/android/server/recoverysystem/RecoverySystemService$Lifecycle;
+Lcom/android/server/recoverysystem/RecoverySystemService$UncryptSocket;
+Lcom/android/server/recoverysystem/RecoverySystemService;
+Lcom/android/server/recoverysystem/RecoverySystemShellCommand;
 Lcom/android/server/restrictions/RestrictionsManagerService$RestrictionsManagerImpl;
 Lcom/android/server/restrictions/RestrictionsManagerService;
-Lcom/android/server/role/-$$Lambda$RoleManagerService$AXCXpHePiVLmuonnO-Vwoq0TpKQ;
-Lcom/android/server/role/-$$Lambda$RoleManagerService$fFhedpUuSpSjKJZ9TlWFGJ-_xeo;
-Lcom/android/server/role/-$$Lambda$RoleManagerService$rhPnAyxD4OKoR2nprS9wiayfZjw;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$4FcQsmMH6Dhstzx5gl80tO2TkTw;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$X3gMGYlhUgmYMuqj0K5NlCALn5E;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$DefaultBrowserProvider$cU2Hhx52nmVnJXJvHuAnRTzxST0;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$DefaultHomeProvider$9eeqZaqhD2FohE8PZOcBaWBSZu4;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$TCTA4I2bhEypguZihxs4ezif6t0;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$p0uu3WH3gz96-kAWnyu6IUHMtCg;
+Lcom/android/server/role/-$$Lambda$RoleManagerService$wh1KtBLaCUo52_0EzVI0n0nL1ng;
 Lcom/android/server/role/-$$Lambda$RoleUserState$e8W_Zaq_FyocW_DX1qcbN0ld0co;
 Lcom/android/server/role/RoleManagerInternal;
 Lcom/android/server/role/RoleManagerService$1;
 Lcom/android/server/role/RoleManagerService$2;
-Lcom/android/server/role/RoleManagerService$3;
 Lcom/android/server/role/RoleManagerService$DefaultBrowserProvider;
+Lcom/android/server/role/RoleManagerService$DefaultDialerProvider;
 Lcom/android/server/role/RoleManagerService$DefaultHomeProvider;
 Lcom/android/server/role/RoleManagerService$Internal;
 Lcom/android/server/role/RoleManagerService$RoleHoldersResolver;
 Lcom/android/server/role/RoleManagerService$Stub;
 Lcom/android/server/role/RoleManagerService;
+Lcom/android/server/role/RoleManagerShellCommand;
 Lcom/android/server/role/RoleUserState$Callback;
 Lcom/android/server/role/RoleUserState;
-Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$2_NDf9EpLcTKkJVpkadZhudKips;
+Lcom/android/server/rollback/-$$Lambda$Rollback$EvT1BaUrjWsJaVTizSu77MCfRBs;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$1$QPIiLceItKZOKeHshAhrcNkM3m8;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$58BbNzpzWX_z-GzhKXpdGPwKcIU;
 Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$5VimxC3UlEV_IzyoBdYlrATzYd8;
-Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$7mIH_4Cm4A-tqsIceQEQSUp2ycU;
-Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$pS5jbfXLgvSVqxzjSkJaMnydaOY;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$9jRyv0ATJ7l2lc6xAd3tmkVmx7g;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Be1hJgd8PbSLFX_uKif2yCGhtKo;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$EebLQVAY8_XZdz3mG6qTmlJupzA;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$K_I_qP9ed2R4xbW7mnGjXH6B7Yc;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Oa5w5-KGpmVbVAVYjUwNItCBRqg;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$Qz1-TYGVImHAonyKgh8LjWx_ub0;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$UZ6heBvW792l5X1X86VJbao61T4;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$bhmKnyhoneBLazCFC2rxxtRypFI;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$mLT_D8xDNyND2xOtKDtfeJiTkqI;
+Lcom/android/server/rollback/-$$Lambda$RollbackManagerServiceImpl$pjR6RZoFE_-Nf6Dqbrc5-qATSwY;
+Lcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$IamLzWoD8UIw0nYBYf04E_MUT8U;
+Lcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$_CTueeoAyZZbpbCYMvJ3rbtIF94;
+Lcom/android/server/rollback/-$$Lambda$RollbackPackageHealthObserver$pi_OhdsKzJHdXoHHtYauaWDdX5A;
 Lcom/android/server/rollback/AppDataRollbackHelper;
-Lcom/android/server/rollback/RollbackData;
+Lcom/android/server/rollback/LocalIntentReceiver;
+Lcom/android/server/rollback/Rollback;
 Lcom/android/server/rollback/RollbackManagerService;
 Lcom/android/server/rollback/RollbackManagerServiceImpl$1;
 Lcom/android/server/rollback/RollbackManagerServiceImpl$2;
 Lcom/android/server/rollback/RollbackManagerServiceImpl$3;
+Lcom/android/server/rollback/RollbackManagerServiceImpl$4;
+Lcom/android/server/rollback/RollbackManagerServiceImpl$5;
+Lcom/android/server/rollback/RollbackManagerServiceImpl$NewRollback;
 Lcom/android/server/rollback/RollbackManagerServiceImpl$SessionCallback;
 Lcom/android/server/rollback/RollbackManagerServiceImpl;
+Lcom/android/server/rollback/RollbackPackageHealthObserver$1;
 Lcom/android/server/rollback/RollbackPackageHealthObserver;
 Lcom/android/server/rollback/RollbackStore;
+Lcom/android/server/rollback/WatchdogRollbackLogger;
 Lcom/android/server/search/SearchManagerService$GlobalSearchProviderObserver;
+Lcom/android/server/search/SearchManagerService$Lifecycle$1;
 Lcom/android/server/search/SearchManagerService$Lifecycle;
 Lcom/android/server/search/SearchManagerService$MyPackageMonitor;
 Lcom/android/server/search/SearchManagerService;
+Lcom/android/server/search/Searchables$1;
+Lcom/android/server/search/Searchables;
+Lcom/android/server/security/FileIntegrityService$1;
+Lcom/android/server/security/FileIntegrityService;
 Lcom/android/server/security/KeyAttestationApplicationIdProviderService;
 Lcom/android/server/security/KeyChainSystemService$1;
 Lcom/android/server/security/KeyChainSystemService;
+Lcom/android/server/security/VerityUtils$1;
 Lcom/android/server/security/VerityUtils$SetupResult;
+Lcom/android/server/security/VerityUtils$TrackedShmBufferFactory;
 Lcom/android/server/security/VerityUtils;
+Lcom/android/server/signedconfig/GlobalSettingsConfigApplicator;
+Lcom/android/server/signedconfig/SignatureVerifier;
+Lcom/android/server/signedconfig/SignedConfig;
+Lcom/android/server/signedconfig/SignedConfigEvent;
+Lcom/android/server/signedconfig/SignedConfigService$1;
 Lcom/android/server/signedconfig/SignedConfigService$UpdateReceiver;
 Lcom/android/server/signedconfig/SignedConfigService;
+Lcom/android/server/slice/-$$Lambda$PinnedSliceState$2PaYhOaggf1E5xg82LTTEwxmLE4;
 Lcom/android/server/slice/-$$Lambda$PinnedSliceState$KzxFkvfomRuMb5PD8_pIHDIhUUE;
 Lcom/android/server/slice/-$$Lambda$PinnedSliceState$TZdoqC_LDA8If7sQ7WXz9LM6VHg;
+Lcom/android/server/slice/-$$Lambda$PinnedSliceState$j_JfEZwPCa729MjgsTSd8MAItIw;
+Lcom/android/server/slice/-$$Lambda$PinnedSliceState$t5Vl61Ns1u_83c4ri7920sczEu0;
+Lcom/android/server/slice/-$$Lambda$PinnedSliceState$vxnx7v9Z67Tj9aywVmtdX48br1M;
+Lcom/android/server/slice/-$$Lambda$SliceManagerService$EsoJb3dNe0G_qzoQixj72OS5gnw;
 Lcom/android/server/slice/-$$Lambda$SliceManagerService$LkusK1jmu9JKJTiMRWqWxNGEGbY;
 Lcom/android/server/slice/-$$Lambda$SliceManagerService$ic_PW16x_KcVi-NszMwHhErqI0s;
 Lcom/android/server/slice/-$$Lambda$SliceManagerService$pJ39TkC3AEVezLFEPuJgSQSTDJM;
+Lcom/android/server/slice/-$$Lambda$SlicePermissionManager$y3Tun5dTftw8s8sky62syeWR34U;
 Lcom/android/server/slice/DirtyTracker$Persistable;
 Lcom/android/server/slice/DirtyTracker;
-Lcom/android/server/slice/PinnedSliceState$ListenerInfo;
 Lcom/android/server/slice/PinnedSliceState;
 Lcom/android/server/slice/SliceClientPermissions$SliceAuthority;
 Lcom/android/server/slice/SliceClientPermissions;
@@ -20213,33 +44068,181 @@
 Lcom/android/server/slice/SliceManagerService$Lifecycle;
 Lcom/android/server/slice/SliceManagerService$PackageMatchingCache;
 Lcom/android/server/slice/SliceManagerService;
+Lcom/android/server/slice/SlicePermissionManager$1;
 Lcom/android/server/slice/SlicePermissionManager$H;
 Lcom/android/server/slice/SlicePermissionManager$ParserHolder;
 Lcom/android/server/slice/SlicePermissionManager$PkgUser;
 Lcom/android/server/slice/SlicePermissionManager;
+Lcom/android/server/slice/SliceProviderPermissions$SliceAuthority;
 Lcom/android/server/slice/SliceProviderPermissions;
+Lcom/android/server/slice/SliceShellCommand;
+Lcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$F-iA254xzDfAHrQW86c2oSqXfwI;
+Lcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$crQZgbDmIG6q92Mrkm49T2yqrs0;
+Lcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$t5mBYXswwLAAdm47WS10stLjYng;
+Lcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$wfDlqQ7aPvu9qZCZ24jJu4tfUMY;
+Lcom/android/server/soundtrigger/-$$Lambda$SoundTriggerService$RemoteSoundTriggerDetectionService$yqLMvkOmrO13yWrggtSaVrLgsWo;
 Lcom/android/server/soundtrigger/SoundTriggerDbHelper;
+Lcom/android/server/soundtrigger/SoundTriggerHelper$ModelData;
 Lcom/android/server/soundtrigger/SoundTriggerHelper$MyCallStateListener;
+Lcom/android/server/soundtrigger/SoundTriggerHelper$PowerSaveModeListener;
 Lcom/android/server/soundtrigger/SoundTriggerHelper;
 Lcom/android/server/soundtrigger/SoundTriggerInternal;
+Lcom/android/server/soundtrigger/SoundTriggerLogger$Event;
+Lcom/android/server/soundtrigger/SoundTriggerLogger$StringEvent;
+Lcom/android/server/soundtrigger/SoundTriggerLogger;
 Lcom/android/server/soundtrigger/SoundTriggerService$LocalSoundTriggerService;
+Lcom/android/server/soundtrigger/SoundTriggerService$NumOps;
+Lcom/android/server/soundtrigger/SoundTriggerService$Operation$ExecuteOp;
+Lcom/android/server/soundtrigger/SoundTriggerService$Operation;
+Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService$1;
+Lcom/android/server/soundtrigger/SoundTriggerService$RemoteSoundTriggerDetectionService;
+Lcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker$SoundModelStat;
+Lcom/android/server/soundtrigger/SoundTriggerService$SoundModelStatTracker;
 Lcom/android/server/soundtrigger/SoundTriggerService$SoundTriggerServiceStub;
 Lcom/android/server/soundtrigger/SoundTriggerService;
-Lcom/android/server/stats/StatsCompanionService$1;
-Lcom/android/server/stats/StatsCompanionService$AnomalyAlarmListener;
-Lcom/android/server/stats/StatsCompanionService$AppUpdateReceiver;
-Lcom/android/server/stats/StatsCompanionService$CompanionHandler;
-Lcom/android/server/stats/StatsCompanionService$ConnectivityStatsCallback;
-Lcom/android/server/stats/StatsCompanionService$Lifecycle;
-Lcom/android/server/stats/StatsCompanionService$PeriodicAlarmListener;
-Lcom/android/server/stats/StatsCompanionService$PullingAlarmListener;
-Lcom/android/server/stats/StatsCompanionService$ShutdownEventReceiver;
-Lcom/android/server/stats/StatsCompanionService$StatsdDeathRecipient;
-Lcom/android/server/stats/StatsCompanionService$ThermalEventListener;
-Lcom/android/server/stats/StatsCompanionService;
-Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$Ex4WQoiXjzWDsRHD7oXCkXIQBB4;
-Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$QO0p6KVnf0wFwF8hglhodfvx26s;
-Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$UR67Ud0NgV9VHyelUmYzZNtR6O4;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$-_QZ-VR2645z-GkbokL_T8I__48;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$TgbC0Y00RFANX4qn5-S2zqA0RJU;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$U-QnBwfU2Eg5ANmLxegcyHjJw1M;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$X838A3db9kVMHQpQXa1dyFuUof0;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$d4MfUfrLxE-WfTBopivzvQedlJQ;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$ewHo6fX75Dw1073KIePOuh3oLIE;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$fbvBJLiyU152ejAJj5a9PvFEhUI;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$mz3ZN09XJCrlYM4uLTiT43iNlCQ;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerHw2Compat$zVVAAwHUfPftj_Egw5y5yBJZXPw;
+Lcom/android/server/soundtrigger_middleware/-$$Lambda$SoundTriggerMiddlewareService$Lifecycle$-t8UndY0AHGyM6n9ce2y6qok3Ho;
+Lcom/android/server/soundtrigger_middleware/AudioSessionProviderImpl;
+Lcom/android/server/soundtrigger_middleware/ConversionUtil;
+Lcom/android/server/soundtrigger_middleware/HalException;
+Lcom/android/server/soundtrigger_middleware/HalFactory;
+Lcom/android/server/soundtrigger_middleware/Hw2CompatUtil;
+Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2$Callback;
+Lcom/android/server/soundtrigger_middleware/ISoundTriggerHw2;
+Lcom/android/server/soundtrigger_middleware/InternalServerError;
+Lcom/android/server/soundtrigger_middleware/RecoverableException;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$1;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$NotSupported;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat$SoundTriggerCallback;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerHw2Compat;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl$AudioSessionProvider;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareImpl;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$1;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$Lifecycle;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService$ModuleService;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerMiddlewareService;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$1;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerModule$Session;
+Lcom/android/server/soundtrigger_middleware/SoundTriggerModule;
+Lcom/android/server/soundtrigger_middleware/UuidUtil;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$EbRlEjVa52EZqvTktBrsVz_xiQc;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$J0XbDHzcNTw46LNg2i54ecFZHmo;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$LXlSF9hVw5xJWZeE9MueVeGuYlE;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$SuO7HJ54GUnG0kWIGHl94Gs0AlM;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$VacoZ2wbIeAc9JIIYvmytuwBEKQ;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$WYL8jwEtrR3YxQtIXV6asRHqKLI;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$bdFry8Zk1wYxmQbrOxMR_Pp9960;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$fvH7sIVZhG6jdyiuwvkwrEA6Ma8;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$rfnm7rXB2YTVbgaO43K28w78oKk;
+Lcom/android/server/stats/-$$Lambda$StatsPullAtomService$ut-c4lKIS9fPnUOWESOzEKZZwUk;
+Lcom/android/server/stats/IonMemoryUtil$IonAllocations;
+Lcom/android/server/stats/IonMemoryUtil;
+Lcom/android/server/stats/ProcfsMemoryUtil$MemorySnapshot;
+Lcom/android/server/stats/ProcfsMemoryUtil;
+Lcom/android/server/stats/StatsPullAtomService;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$-PhCvl52WhUMdMnxVAqihfFHthA;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$0P4nZ-nE165g-Q5g9CoYyB1Byw4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$1pxf28Ik2lMu276JUeacrtqOJzc;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$1tOYlDsL-P_KhgklFe6EqdCi9Yk;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$2Fp18gjakqm8R81qgIOHaDrmsU0;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$30xS0mVfwQjdpwkeyHDi7Bx6u60;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$3OXuKaMjWs_ET87IAgknuvoqC8U;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$3qrx8WI68Lm0XGBBfW4gzODU9yk;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$4tfrHblqmHrtPiB3WLHYY9Tgjx4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$5X-K4R4LvqwKsdGFUQS9YrVTDoM;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7UAUwQTlDkqBQjoyOoessLYxCH0;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7hfhsUfLzXxgbvx0G5m-nXfuhtE;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$7xMtizDmeMIdTUoXvmAJ9__a1H8;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AJY7IPMD64l6eMvl-4Yk1PNJTC8;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AbytlHPB_renx2JnIl7w0EkN8Ms;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$AiS8ePl8e1Vo_1hXDcyJiYZVEak;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DD__7RQZDPvJeL9pnb_7J1voUNE;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$DaTIT3haxTQC9hsnPFM6rU5N88A;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ErlITMC3hXYvJk7H-BuZWp0l5ko;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$GT9G5Edej6G4xpQClwAG4i73Ml8;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Gu78SpEIgqYCwZEn1wrkHRIhYfw;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$H33PO3Q_4vgNoahcl426eELxpcA;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$H5--fOxGaHVjnFaRkyzvBX76HOE;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$HX4G1hDcJMKgszczqxpSHdoDK_s;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$I9d0JaNY8gTVS5nJ3bvbDlp2yu0;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$IB4WDvYz1DDpmLMD3gEZhLRa46s;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ITU8q06caEdamlLZPazkHB2M8iE;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$KQag3_StEOzx9XWRUKksVrW-B4o;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$KuCLMqc8aqwcyjfuGvKp-HrwVAY;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$LX85szVlyRD-qrhFa1vvBo3yiHI;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$M5tfOmnyD25Ws5xFmcaNZmCcWv4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Myxd926lI020RejJAC3J7xJBf-M;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$O-i_qJRna30dOvZwoceUXgRcdmM;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$OnuY6QGq5IcThy5OPAdG5C6fFrU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$PXO4cqN_PpXkJgCq2SHpV_sY50E;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$QQcMZJIXQd5YLqJodYJFOwUBv0c;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$REkQRT5hxWedgS_oVmye_rXEMpM;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$RPju9l8LZxvj1kR9SO_j3YArLwk;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$Sf77fvy4SVd9GzRqpAUUydeJGQI;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$SqdF4nK9ElmlOAiZ4Ki0RbhnyFQ;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$T3eGvsVXN09Gi-BtBQXR4zdDBEg;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$TbCE6UdFHnpFKs5GJ5OeGvkZR3w;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$UzadvADZjWad2cUMtKWnDa-bkao;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$VuGEpDG3j9NcXTay60birJz1dKw;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$WI1rTiStFbJ3m4p9d8AvyRXzTXU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$XbISM3meLPWUKRh1ln9wbqhodVo;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZUW2WJxdpx34RXfmAZzvaSioIaI;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ZcA3hS41MDSLP3tvbVw7ycWV2Uk;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$azxbjQftB2lwBb_UEHTETFb5urU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bGdd1XQKPBSlirlhMqL7Kyr4dKU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bVYBhIENPiTPrSDw3qDtspWRc68;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$bncFYZhYtBOc8H2sC7RT_uK4VQc;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$cD_BSMC6DqR-o7gxzB0mTMww2pc;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$dvk2NfS9657o0VC9lBgVa8gpvlQ;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$eKQ59cCrSM0iXjIA64vCoqEuTaQ;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ew5jVI8ng1800NuFBR9nuVqZhEA;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fktJbqJAvHUrt48VRPzhsYMAbE4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$fl3y2rQNVEsKV4HvhEyC2k3aSW4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$h23-vyYl4vByordF3qxCf47oQcY;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hIAQYRkW-2p4zc6JTn5OwHqbM5M;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hKgCHOcWWjhlKa_oJzU15Zt0JUY;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$hPsC5VFMB0pUxEe6YNkhn5cdnB8;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$haijZs4owQ0GrMSMCqBDmYyG3-U;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$kbyq1Jaw0bLtz4QZ0dHLQDBcS84;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$lXlXj5VhcAmBNund256UqZwrUcQ;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$n5Z40V94ruxObttUmeeT9hJ2lwU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ndKYmfQrhE59wBrqdr_J4mR9XeQ;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$q64SJPz4qOJVhsbLkSd-TefRkz4;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$qv-qUoYV_cdRHv47l_lHeb43i84;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$roxBOSLRvrWWGOq4tg7SrKcwYkM;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$sHsQqf-uX2oC0xi9S65s-8cl6w0;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$sN2JKQjhqafdV9iBufFp7wWmkBg;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$tgrBI__GVejUkinaoMC5NY-7TjM;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$uAEfAOa33shUMp3_0vxKUg1a16s;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$u_a4BjhN7rx49bnJveS1mjwhkb8;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$ufk9iL1tEj0A5bia0nI_H6pWIHE;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$vXSqtIKAG3al1X91EB3FoH96cWo;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$yHqXLPks8Cf6arciMxSh7owd6sU;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$z9YxSZJALshcZpXiGJxNWlLa2ME;
+Lcom/android/server/stats/pull/-$$Lambda$StatsPullAtomService$zkqK-r9QsJBeVy1sojo4bOB8YhY;
+Lcom/android/server/stats/pull/-$$Lambda$wPejPqIRC0ueiw9uak8ULakT1R8;
+Lcom/android/server/stats/pull/IonMemoryUtil$IonAllocations;
+Lcom/android/server/stats/pull/IonMemoryUtil;
+Lcom/android/server/stats/pull/ProcfsMemoryUtil$MemorySnapshot;
+Lcom/android/server/stats/pull/ProcfsMemoryUtil;
+Lcom/android/server/stats/pull/StatsPullAtomService$1;
+Lcom/android/server/stats/pull/StatsPullAtomService$ConnectivityStatsCallback;
+Lcom/android/server/stats/pull/StatsPullAtomService$StatsPullAtomCallbackImpl;
+Lcom/android/server/stats/pull/StatsPullAtomService$ThermalEventListener;
+Lcom/android/server/stats/pull/StatsPullAtomService;
+Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$E67OP8P-DuCzmX46ISCwIyOv93Q;
+Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$KPqmL9kxt0YFCz4dBAFkiUMRWw8;
+Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$P3yc6y5R6oqIuxbUK14JNoV_hJM;
+Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$dQguzfF4tEgBOj3Pr8MpGRN8HT0;
+Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$uF0ibEnnXe7Lxunxb98QQLJjgZM;
 Lcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$yr21OX4Hyd_XfExwnVnVIn3Jfe4;
 Lcom/android/server/statusbar/StatusBarManagerInternal;
 Lcom/android/server/statusbar/StatusBarManagerService$1;
@@ -20248,49 +44251,122 @@
 Lcom/android/server/statusbar/StatusBarManagerService$DisableRecord;
 Lcom/android/server/statusbar/StatusBarManagerService$UiState;
 Lcom/android/server/statusbar/StatusBarManagerService;
+Lcom/android/server/statusbar/StatusBarShellCommand;
+Lcom/android/server/storage/AppCollector$BackgroundHandler;
+Lcom/android/server/storage/AppCollector;
 Lcom/android/server/storage/AppFuseBridge$MountScope;
 Lcom/android/server/storage/AppFuseBridge;
+Lcom/android/server/storage/CacheQuotaStrategy$1$1;
+Lcom/android/server/storage/CacheQuotaStrategy$1;
 Lcom/android/server/storage/CacheQuotaStrategy;
 Lcom/android/server/storage/DeviceStorageMonitorInternal;
 Lcom/android/server/storage/DeviceStorageMonitorService$1;
 Lcom/android/server/storage/DeviceStorageMonitorService$2;
 Lcom/android/server/storage/DeviceStorageMonitorService$3;
 Lcom/android/server/storage/DeviceStorageMonitorService$CacheFileDeletedObserver;
+Lcom/android/server/storage/DeviceStorageMonitorService$Shell;
 Lcom/android/server/storage/DeviceStorageMonitorService$State;
 Lcom/android/server/storage/DeviceStorageMonitorService;
+Lcom/android/server/storage/DiskStatsFileLogger;
+Lcom/android/server/storage/DiskStatsLoggingService$LogRunnable;
 Lcom/android/server/storage/DiskStatsLoggingService;
-Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$-gelHWcVU9jWWZhCeN99A3Sudtw;
-Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$VVmvEgI0M6umDuBUYKUoUMO7-l0;
-Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$lBXoYxesURvEmfzumX9uIBbg66M;
+Lcom/android/server/storage/FileCollector$MeasurementResult;
+Lcom/android/server/storage/FileCollector;
+Lcom/android/server/storage/StorageSessionController$ExternalStorageServiceException;
+Lcom/android/server/storage/StorageSessionController;
+Lcom/android/server/storage/StorageUserConnection$Session;
+Lcom/android/server/storage/StorageUserConnection;
+Lcom/android/server/systemcaptions/SystemCaptionsManagerPerUserService;
+Lcom/android/server/systemcaptions/SystemCaptionsManagerService;
+Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$4O6PYSHBsC0Q5H-Y3LkvD32Vcjk;
+Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$Dg9me3bEFl3t0NGOPYwXIoF34FY;
+Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$jGqhqH8bl_lWotJlrzraXplioIw;
+Lcom/android/server/telecom/-$$Lambda$TelecomLoaderService$v_RQMbGOOwc6kjxGSNUrOugH8pw;
 Lcom/android/server/telecom/TelecomLoaderService$1;
-Lcom/android/server/telecom/TelecomLoaderService$2;
 Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection$1;
 Lcom/android/server/telecom/TelecomLoaderService$TelecomServiceConnection;
 Lcom/android/server/telecom/TelecomLoaderService;
 Lcom/android/server/testharness/TestHarnessModeService$1;
+Lcom/android/server/testharness/TestHarnessModeService$PersistentData;
+Lcom/android/server/testharness/TestHarnessModeService$SetUpTestHarnessModeException;
+Lcom/android/server/testharness/TestHarnessModeService$TestHarnessModeShellCommand;
 Lcom/android/server/testharness/TestHarnessModeService;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$64mAXU9GjFt2f69p_xdhRl7xXFQ;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$C6b5fl8vcOQ42djzSJ_03hDc6yA;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$CB4TRod_LBt48w0zNWgHd_0r5tU;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$KnnEOusa8Z2droJJS1lDigNFcQs;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LbKHscWPDUIjKzR4a1gANqdMY6c;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$LgTaKgUnkwyysO9lmBSO8HNViFU;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Mu95ZECYMawAFTgaMzQ9kasDiKU;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$NrhR3cz8qMQshjDDQuBK6HtZpyc;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$XSRTA8JOHnkYT6Nx-j6ZQZBVb1k;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$YncBiGXrmV9iVRg9N6un11UZvEM;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$Zo3yKbNMpKbAhJ7coUzTv5c-zZI;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$bskC2PS7oOlLzDJkBbOVEdfy1Gg;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$dSVln_o2_pbF3ORGnBQ8z407M10;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$e1UWpNtFzY7M9iYeMHhCrNauxak;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$evPEo-mmJh6oAuwYuZkLKKZd_Dw;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$f_vDZ7EFXK9b8SQpksrEkEWKPq8;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$kUVQfCEBNt6jzkS89Io4xSHSuIs;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mKOJpfoN0qgghwbMeUHqGFHaCDg;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$mLzk2wMmEjV5zvq4IRM6g-PyeAk;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$nMkPNkAsWr8y9ybbpmHncJ2R2Aw;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$s1d_iMop8cVfXdi-T-chBEHa9ek;
+Lcom/android/server/textclassifier/-$$Lambda$TextClassificationManagerService$x-GZDBev2pMmhyvF3nP65PH7VPo;
+Lcom/android/server/textclassifier/-$$Lambda$k-7KcqZH2A0AukChaKa6Xru13_Q;
+Lcom/android/server/textclassifier/TextClassificationManagerService$1;
 Lcom/android/server/textclassifier/TextClassificationManagerService$Lifecycle;
+Lcom/android/server/textclassifier/TextClassificationManagerService$PendingRequest;
+Lcom/android/server/textclassifier/TextClassificationManagerService$TextClassifierSettingsListener;
 Lcom/android/server/textclassifier/TextClassificationManagerService$UserState$TextClassifierServiceConnection;
 Lcom/android/server/textclassifier/TextClassificationManagerService$UserState;
 Lcom/android/server/textclassifier/TextClassificationManagerService;
-Lcom/android/server/textservices/-$$Lambda$TextServicesManagerService$otJ1a5fe5mYJvLrIEr3o1Ia1kSo;
-Lcom/android/server/textservices/LazyIntToIntMap;
+Lcom/android/server/textservices/LocaleUtils;
 Lcom/android/server/textservices/TextServicesManagerInternal$1;
 Lcom/android/server/textservices/TextServicesManagerInternal;
+Lcom/android/server/textservices/TextServicesManagerService$1;
+Lcom/android/server/textservices/TextServicesManagerService$ISpellCheckerServiceCallbackBinder;
+Lcom/android/server/textservices/TextServicesManagerService$InternalDeathRecipients;
+Lcom/android/server/textservices/TextServicesManagerService$InternalServiceConnection;
 Lcom/android/server/textservices/TextServicesManagerService$Lifecycle$1;
 Lcom/android/server/textservices/TextServicesManagerService$Lifecycle;
+Lcom/android/server/textservices/TextServicesManagerService$SessionRequest;
+Lcom/android/server/textservices/TextServicesManagerService$SpellCheckerBindGroup;
 Lcom/android/server/textservices/TextServicesManagerService$TextServicesData;
 Lcom/android/server/textservices/TextServicesManagerService$TextServicesMonitor;
 Lcom/android/server/textservices/TextServicesManagerService;
-Lcom/android/server/timedetector/SimpleTimeDetectorStrategy;
+Lcom/android/server/timedetector/-$$Lambda$TimeDetectorService$CIVCmMHYHAlLayNvm792RTW8F3U;
+Lcom/android/server/timedetector/-$$Lambda$TimeDetectorService$DcAkTJaWB9_yMqP5iTI6-JQdq4g;
+Lcom/android/server/timedetector/-$$Lambda$TimeDetectorService$nU2ruOeSUWWPVvB4A7i7qaumT4s;
+Lcom/android/server/timedetector/-$$Lambda$lkjIbFi2SczFhCGbzNmkRxmPS0M;
 Lcom/android/server/timedetector/TimeDetectorService$1;
 Lcom/android/server/timedetector/TimeDetectorService$Lifecycle;
 Lcom/android/server/timedetector/TimeDetectorService;
 Lcom/android/server/timedetector/TimeDetectorStrategy$Callback;
 Lcom/android/server/timedetector/TimeDetectorStrategy;
 Lcom/android/server/timedetector/TimeDetectorStrategyCallbackImpl;
+Lcom/android/server/timedetector/TimeDetectorStrategyImpl;
+Lcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$9xvncY35tAcP2eoRcnDHHViAoZw;
+Lcom/android/server/timezonedetector/-$$Lambda$TimeZoneDetectorService$UdeBqzyBZX1S4jHLM7d2cKvE_-U;
+Lcom/android/server/timezonedetector/ArrayMapWithHistory;
+Lcom/android/server/timezonedetector/ReferenceWithHistory;
+Lcom/android/server/timezonedetector/TimeZoneDetectorCallbackImpl;
+Lcom/android/server/timezonedetector/TimeZoneDetectorService$1;
+Lcom/android/server/timezonedetector/TimeZoneDetectorService$Lifecycle;
+Lcom/android/server/timezonedetector/TimeZoneDetectorService;
+Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy$Callback;
+Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy$QualifiedPhoneTimeZoneSuggestion;
+Lcom/android/server/timezonedetector/TimeZoneDetectorStrategy;
 Lcom/android/server/trust/-$$Lambda$TrustManagerService$1$98HKBkg-C1PLlz_Q1vJz1OJtw4c;
+Lcom/android/server/trust/-$$Lambda$TrustManagerService$fEkVwjahpkATIGtXudiFOG8VXOo;
+Lcom/android/server/trust/TrustAgentWrapper$2;
+Lcom/android/server/trust/TrustAgentWrapper$3;
+Lcom/android/server/trust/TrustAgentWrapper$4;
+Lcom/android/server/trust/TrustAgentWrapper;
+Lcom/android/server/trust/TrustArchive$1;
+Lcom/android/server/trust/TrustArchive$Event;
 Lcom/android/server/trust/TrustArchive;
+Lcom/android/server/trust/TrustManagerService$1$1;
 Lcom/android/server/trust/TrustManagerService$1;
 Lcom/android/server/trust/TrustManagerService$2;
 Lcom/android/server/trust/TrustManagerService$3;
@@ -20299,53 +44375,66 @@
 Lcom/android/server/trust/TrustManagerService$SettingsAttrs;
 Lcom/android/server/trust/TrustManagerService$SettingsObserver;
 Lcom/android/server/trust/TrustManagerService$StrongAuthTracker;
+Lcom/android/server/trust/TrustManagerService$TrustTimeoutAlarmListener;
 Lcom/android/server/trust/TrustManagerService;
 Lcom/android/server/tv/TvInputHal$Callback;
 Lcom/android/server/tv/TvInputHal;
 Lcom/android/server/tv/TvInputManagerService;
 Lcom/android/server/tv/TvRemoteService;
 Lcom/android/server/tv/UinputBridge;
+Lcom/android/server/twilight/-$$Lambda$QlMS1hfADW-S9aqM_RavcEKO3N0;
+Lcom/android/server/twilight/-$$Lambda$TwilightService$stdw4-ZXNiEaXmDt9g9s8D1zEQU;
 Lcom/android/server/twilight/TwilightListener;
 Lcom/android/server/twilight/TwilightManager;
 Lcom/android/server/twilight/TwilightService$1;
+Lcom/android/server/twilight/TwilightService$2;
 Lcom/android/server/twilight/TwilightService;
+Lcom/android/server/twilight/TwilightState;
 Lcom/android/server/uri/GrantUri;
+Lcom/android/server/uri/NeededUriGrants;
 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/UriPermission$1;
+Lcom/android/server/uri/UriPermission$PersistedTimeComparator;
+Lcom/android/server/uri/UriPermission$Snapshot;
 Lcom/android/server/uri/UriPermission;
 Lcom/android/server/uri/UriPermissionOwner$ExternalToken;
 Lcom/android/server/uri/UriPermissionOwner;
-Lcom/android/server/usage/AppIdleHistory$AppUsageHistory;
-Lcom/android/server/usage/AppIdleHistory;
-Lcom/android/server/usage/AppStandbyController$1;
-Lcom/android/server/usage/AppStandbyController$2;
-Lcom/android/server/usage/AppStandbyController$AppStandbyHandler;
-Lcom/android/server/usage/AppStandbyController$DeviceStateReceiver;
-Lcom/android/server/usage/AppStandbyController$Injector;
-Lcom/android/server/usage/AppStandbyController$Lock;
-Lcom/android/server/usage/AppStandbyController$PackageReceiver;
-Lcom/android/server/usage/AppStandbyController$SettingsObserver;
-Lcom/android/server/usage/AppStandbyController$StandbyUpdateRecord;
-Lcom/android/server/usage/AppStandbyController;
+Lcom/android/server/usage/-$$Lambda$StorageStatsService$2sUmj2KWW5zDR1eh9U7bRfiEbbQ;
+Lcom/android/server/usage/-$$Lambda$StorageStatsService$bqtERyu3o5aAlc4KluAfnmSEFLI;
+Lcom/android/server/usage/-$$Lambda$StorageStatsService$iSsicGWO2pdH7m9nkPc_jeZZgzE;
+Lcom/android/server/usage/-$$Lambda$UserUsageStatsService$wWX7s9XZT5O4B7JcG_IB_VcPI9s;
+Lcom/android/server/usage/AppTimeLimitController$1;
+Lcom/android/server/usage/AppTimeLimitController$AppUsageGroup;
+Lcom/android/server/usage/AppTimeLimitController$AppUsageLimitGroup;
 Lcom/android/server/usage/AppTimeLimitController$Lock;
 Lcom/android/server/usage/AppTimeLimitController$MyHandler;
+Lcom/android/server/usage/AppTimeLimitController$ObserverAppData;
+Lcom/android/server/usage/AppTimeLimitController$SessionUsageGroup;
 Lcom/android/server/usage/AppTimeLimitController$TimeLimitCallbackListener;
+Lcom/android/server/usage/AppTimeLimitController$UsageGroup;
 Lcom/android/server/usage/AppTimeLimitController$UserData;
 Lcom/android/server/usage/AppTimeLimitController;
-Lcom/android/server/usage/IntervalStats$EventTracker;
 Lcom/android/server/usage/IntervalStats;
+Lcom/android/server/usage/StorageStatsManagerInternal$StorageStatsAugmenter;
+Lcom/android/server/usage/StorageStatsManagerInternal;
 Lcom/android/server/usage/StorageStatsService$1;
 Lcom/android/server/usage/StorageStatsService$H;
 Lcom/android/server/usage/StorageStatsService$Lifecycle;
+Lcom/android/server/usage/StorageStatsService$LocalService;
 Lcom/android/server/usage/StorageStatsService;
 Lcom/android/server/usage/UnixCalendar;
 Lcom/android/server/usage/UsageStatsDatabase$1;
+Lcom/android/server/usage/UsageStatsDatabase$CheckinAction;
 Lcom/android/server/usage/UsageStatsDatabase$StatCombiner;
 Lcom/android/server/usage/UsageStatsDatabase;
+Lcom/android/server/usage/UsageStatsIdleService;
 Lcom/android/server/usage/UsageStatsProto;
+Lcom/android/server/usage/UsageStatsProtoV2;
 Lcom/android/server/usage/UsageStatsService$1;
 Lcom/android/server/usage/UsageStatsService$2;
 Lcom/android/server/usage/UsageStatsService$3;
@@ -20353,20 +44442,31 @@
 Lcom/android/server/usage/UsageStatsService$BinderService;
 Lcom/android/server/usage/UsageStatsService$H;
 Lcom/android/server/usage/UsageStatsService$LocalService;
+Lcom/android/server/usage/UsageStatsService$MyPackageMonitor;
 Lcom/android/server/usage/UsageStatsService$UserActionsReceiver;
 Lcom/android/server/usage/UsageStatsService;
 Lcom/android/server/usage/UserUsageStatsService$1;
 Lcom/android/server/usage/UserUsageStatsService$2;
 Lcom/android/server/usage/UserUsageStatsService$3;
+Lcom/android/server/usage/UserUsageStatsService$4;
+Lcom/android/server/usage/UserUsageStatsService$5;
+Lcom/android/server/usage/UserUsageStatsService$6;
 Lcom/android/server/usage/UserUsageStatsService$StatsUpdatedListener;
 Lcom/android/server/usage/UserUsageStatsService;
 Lcom/android/server/usb/-$$Lambda$UsbHostManager$XT3F5aQci4H6VWSBYBQQNSzpnvs;
 Lcom/android/server/usb/-$$Lambda$UsbPortManager$FUqGOOupcl6RrRkZBk-BnrRQyPI;
 Lcom/android/server/usb/-$$Lambda$UsbProfileGroupSettingsManager$IQKTzU0q3lyaW9nLL_sbxJPW8ME;
+Lcom/android/server/usb/-$$Lambda$UsbProfileGroupSettingsManager$_G1PjxMa22pAIRMzYCwyomX8uhk;
+Lcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$2MdT23i5rGWaZmMCtfy6PYZmBMQ;
+Lcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$KjOG0MXO3C0J-L5Ymrj6FnSwXwQ;
+Lcom/android/server/usb/-$$Lambda$UsbService$Lifecycle$sV0bZ5BCi6DR9FlGZbY2PyYUP58;
+Lcom/android/server/usb/MtpNotificationManager$1;
 Lcom/android/server/usb/MtpNotificationManager$OnOpenInAppListener;
 Lcom/android/server/usb/MtpNotificationManager$Receiver;
 Lcom/android/server/usb/MtpNotificationManager;
+Lcom/android/server/usb/UsbAlsaDevice;
 Lcom/android/server/usb/UsbAlsaJackDetector;
+Lcom/android/server/usb/UsbAlsaManager$BlackListEntry;
 Lcom/android/server/usb/UsbAlsaManager;
 Lcom/android/server/usb/UsbDeviceManager$1;
 Lcom/android/server/usb/UsbDeviceManager$2;
@@ -20378,14 +44478,18 @@
 Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetCallback;
 Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal$UsbGadgetDeathRecipient;
 Lcom/android/server/usb/UsbDeviceManager$UsbHandlerHal;
+Lcom/android/server/usb/UsbDeviceManager$UsbHandlerLegacy;
 Lcom/android/server/usb/UsbDeviceManager$UsbUEventObserver;
 Lcom/android/server/usb/UsbDeviceManager;
 Lcom/android/server/usb/UsbHandlerManager;
 Lcom/android/server/usb/UsbHostManager$ConnectionRecord;
 Lcom/android/server/usb/UsbHostManager;
+Lcom/android/server/usb/UsbMidiDevice$1;
 Lcom/android/server/usb/UsbMidiDevice$2;
 Lcom/android/server/usb/UsbMidiDevice$3;
+Lcom/android/server/usb/UsbMidiDevice$InputReceiverProxy;
 Lcom/android/server/usb/UsbMidiDevice;
+Lcom/android/server/usb/UsbPermissionManager;
 Lcom/android/server/usb/UsbPortManager$1;
 Lcom/android/server/usb/UsbPortManager$DeathRecipient;
 Lcom/android/server/usb/UsbPortManager$HALCallback;
@@ -20394,33 +44498,109 @@
 Lcom/android/server/usb/UsbPortManager$RawPortInfo;
 Lcom/android/server/usb/UsbPortManager$ServiceNotification;
 Lcom/android/server/usb/UsbPortManager;
+Lcom/android/server/usb/UsbProfileGroupSettingsManager$1;
 Lcom/android/server/usb/UsbProfileGroupSettingsManager$MyPackageMonitor;
 Lcom/android/server/usb/UsbProfileGroupSettingsManager$UserPackage;
 Lcom/android/server/usb/UsbProfileGroupSettingsManager;
+Lcom/android/server/usb/UsbSerialReader;
 Lcom/android/server/usb/UsbService$1;
 Lcom/android/server/usb/UsbService$Lifecycle;
 Lcom/android/server/usb/UsbService;
 Lcom/android/server/usb/UsbSettingsManager;
+Lcom/android/server/usb/UsbUserPermissionManager;
 Lcom/android/server/usb/UsbUserSettingsManager;
+Lcom/android/server/usb/descriptors/ByteStream;
+Lcom/android/server/usb/descriptors/Usb10ACHeader;
+Lcom/android/server/usb/descriptors/Usb10ACInputTerminal;
+Lcom/android/server/usb/descriptors/Usb10ACMixerUnit;
+Lcom/android/server/usb/descriptors/Usb10ACOutputTerminal;
+Lcom/android/server/usb/descriptors/Usb10ASFormatI;
+Lcom/android/server/usb/descriptors/Usb10ASGeneral;
+Lcom/android/server/usb/descriptors/UsbACAudioStreamEndpoint;
+Lcom/android/server/usb/descriptors/UsbACEndpoint;
+Lcom/android/server/usb/descriptors/UsbACHeaderInterface;
+Lcom/android/server/usb/descriptors/UsbACInterface;
+Lcom/android/server/usb/descriptors/UsbACMixerUnit;
+Lcom/android/server/usb/descriptors/UsbACTerminal;
+Lcom/android/server/usb/descriptors/UsbASFormat;
+Lcom/android/server/usb/descriptors/UsbConfigDescriptor;
 Lcom/android/server/usb/descriptors/UsbDescriptor;
 Lcom/android/server/usb/descriptors/UsbDescriptorParser;
 Lcom/android/server/usb/descriptors/UsbDeviceDescriptor;
+Lcom/android/server/usb/descriptors/UsbEndpointDescriptor;
+Lcom/android/server/usb/descriptors/UsbHIDDescriptor;
+Lcom/android/server/usb/descriptors/UsbInterfaceDescriptor;
 Lcom/android/server/usb/descriptors/report/Reporting;
+Lcom/android/server/utils/-$$Lambda$TraceBuffer$moAOzKBOTAbEa_3b3V5vLbO3dRA;
+Lcom/android/server/utils/FlagNamespaceUtils;
 Lcom/android/server/utils/ManagedApplicationService$BinderChecker;
 Lcom/android/server/utils/ManagedApplicationService$EventCallback;
+Lcom/android/server/utils/ManagedApplicationService$LogEvent;
 Lcom/android/server/utils/ManagedApplicationService$LogFormattable;
+Lcom/android/server/utils/ManagedApplicationService$PendingEvent;
+Lcom/android/server/utils/ManagedApplicationService;
 Lcom/android/server/utils/PriorityDump$PriorityDumper;
 Lcom/android/server/utils/PriorityDump;
+Lcom/android/server/utils/TimingsTraceAndSlog;
+Lcom/android/server/utils/TraceBuffer;
+Lcom/android/server/utils/UserTokenWatcher$1;
 Lcom/android/server/utils/UserTokenWatcher$Callback;
+Lcom/android/server/utils/UserTokenWatcher$InnerTokenWatcher;
 Lcom/android/server/utils/UserTokenWatcher;
+Lcom/android/server/utils/quota/-$$Lambda$Categorizer$7ez64bqBH_7ftnL6e10WcD6kHMA;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$4HkN-fmWmlx7JUhhSIp_xzSqM_k;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$JPiaaEfenxacor9EsTZts7yjmfo;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$KhSu52UVcmIwsRTTPJOPkxx5QBg;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$V8_P5m4uQVKMpyfUCyH32qDbyt4;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$YGSPs4eBXm5g9fUsluToPq543sk;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$cN0cbPv_XamMCffwzXBT1y5wiSs;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$gcuaahwgCbmI2MO_9858jGPxPGM;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$giodBFjkV0qAORwrWZQrMAgSRaY;
+Lcom/android/server/utils/quota/-$$Lambda$CountQuotaTracker$txEUpjjjfBHHIwaoIrBUanoDtpI;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$AlarmQueue$9XqssygjZyzGRYPaPGM34LNECH0;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$InQuotaAlarmListener$soj539BGmQ3unUf9-_Ugq8KVOxI;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$QGqhRiGVlazdG76r-Ich6VZnho4;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$XRuiZQg4lOmWE1kXJjjkatdBgB8;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$cKEDVJtC0LHULuSrH0-B6zQBe3g;
+Lcom/android/server/utils/quota/-$$Lambda$QuotaTracker$v5weP48tcgV_Pr7kzEEv4AvPw_k;
+Lcom/android/server/utils/quota/-$$Lambda$UptcMap$VIYMMrjbnqShO606s52uuyAgdlU;
+Lcom/android/server/utils/quota/Categorizer;
+Lcom/android/server/utils/quota/Category;
+Lcom/android/server/utils/quota/CountQuotaTracker$1;
+Lcom/android/server/utils/quota/CountQuotaTracker$CqtHandler;
+Lcom/android/server/utils/quota/CountQuotaTracker$DeleteEventTimesFunctor;
+Lcom/android/server/utils/quota/CountQuotaTracker$EarliestEventTimeFunctor;
+Lcom/android/server/utils/quota/CountQuotaTracker$ExecutionStats;
+Lcom/android/server/utils/quota/CountQuotaTracker;
+Lcom/android/server/utils/quota/QuotaChangeListener;
+Lcom/android/server/utils/quota/QuotaTracker$1;
+Lcom/android/server/utils/quota/QuotaTracker$AlarmQueue;
+Lcom/android/server/utils/quota/QuotaTracker$InQuotaAlarmListener;
+Lcom/android/server/utils/quota/QuotaTracker$Injector;
+Lcom/android/server/utils/quota/QuotaTracker;
+Lcom/android/server/utils/quota/Uptc;
+Lcom/android/server/utils/quota/UptcMap$UptcDataConsumer;
+Lcom/android/server/utils/quota/UptcMap;
+Lcom/android/server/voiceinteraction/-$$Lambda$VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2$_YjGqp96fW1i83gthgQe_rVHY5s;
+Lcom/android/server/voiceinteraction/-$$Lambda$VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$u4484DFAd6TvNnx89ISVr_ZLWJY;
+Lcom/android/server/voiceinteraction/DatabaseHelper$SoundModelRecord;
 Lcom/android/server/voiceinteraction/DatabaseHelper;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$1;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$LocalService;
+Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$1;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$2;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$RoleObserver;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub$SettingsObserver;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService$VoiceInteractionManagerServiceStub;
 Lcom/android/server/voiceinteraction/VoiceInteractionManagerService;
+Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$1;
+Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl$2;
+Lcom/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl;
+Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$1;
+Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$2;
+Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection$Callback;
+Lcom/android/server/voiceinteraction/VoiceInteractionSessionConnection;
+Lcom/android/server/vr/-$$Lambda$VrManagerService$hhbi29QXTMTcQg-S7n5SpAawSZs;
 Lcom/android/server/vr/EnabledComponentsObserver$1;
 Lcom/android/server/vr/EnabledComponentsObserver$EnabledComponentChangeListener;
 Lcom/android/server/vr/EnabledComponentsObserver;
@@ -20429,6 +44609,7 @@
 Lcom/android/server/vr/SettingsObserver$SettingChangeListener;
 Lcom/android/server/vr/SettingsObserver;
 Lcom/android/server/vr/Vr2dDisplay$1;
+Lcom/android/server/vr/Vr2dDisplay$3;
 Lcom/android/server/vr/Vr2dDisplay;
 Lcom/android/server/vr/VrManagerInternal;
 Lcom/android/server/vr/VrManagerService$1;
@@ -20436,17 +44617,29 @@
 Lcom/android/server/vr/VrManagerService$3;
 Lcom/android/server/vr/VrManagerService$4;
 Lcom/android/server/vr/VrManagerService$5;
+Lcom/android/server/vr/VrManagerService$6;
 Lcom/android/server/vr/VrManagerService$LocalService;
 Lcom/android/server/vr/VrManagerService$NotificationAccessManager;
+Lcom/android/server/vr/VrManagerService$SettingEvent;
 Lcom/android/server/vr/VrManagerService$VrState;
 Lcom/android/server/vr/VrManagerService;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$-BqUtvsdVGS3ye_UHe7qFnTZPn4;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$1tPkxHr3PHUgpfvv03vRyPzY3uM;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$4phuz9MKBqoKfDMu8M8EBVJyI2I;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$93YXv2Z9dcGnT0Vr4Zebgn1qyVM;
 Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$SxaUJpgTTfzUoz6u3AWuAOQdoNw;
-Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$UhAlBGB5jhuZrLndUPRmIvoHRZc;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$VUhQWq8Flr0dsQqeVHhHT8jU7qY;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$87DhM3RJJxRNtgkHmd_gtnGk-z4;
 Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$NrNkceFJLqjCb8eAxErUhpLd5c8;
 Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$QhODF3v-swnwSYvDbeEhU85gOBw;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Y6NUt3jeHQDhNJsATtXxO4MiWJ0;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$WallpaperConnection$Yk86TTURTI5B9DzxOzMQGDq7aQU;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$ZY5r01reAnoB4Dl2bo4au8KMz3Y;
 Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$la7x4YHA-l88Cd6HFTscnLBbKfI;
+Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$pVmree9DyIpBSg0s3RDK3MDesvs;
 Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$tRb4SPHGj0pcxb3p7arcqKFqs08;
-Lcom/android/server/wallpaper/-$$Lambda$WallpaperManagerService$xeJGAwCI8tssclwKFf8jMsYdoKQ;
+Lcom/android/server/wallpaper/-$$Lambda$havGP5uMdRgWQrLydPeIOu1qDGE;
+Lcom/android/server/wallpaper/GLHelper;
 Lcom/android/server/wallpaper/IWallpaperManagerService;
 Lcom/android/server/wallpaper/WallpaperManagerInternal;
 Lcom/android/server/wallpaper/WallpaperManagerService$1;
@@ -20462,6 +44655,8 @@
 Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperData;
 Lcom/android/server/wallpaper/WallpaperManagerService$WallpaperObserver;
 Lcom/android/server/wallpaper/WallpaperManagerService;
+Lcom/android/server/webkit/-$$Lambda$lAUGMGZZth095wGxrAtUYbmlIJY;
+Lcom/android/server/webkit/SystemImpl$1;
 Lcom/android/server/webkit/SystemImpl$LazyHolder;
 Lcom/android/server/webkit/SystemImpl;
 Lcom/android/server/webkit/SystemInterface;
@@ -20469,136 +44664,487 @@
 Lcom/android/server/webkit/WebViewUpdateService$BinderService;
 Lcom/android/server/webkit/WebViewUpdateService;
 Lcom/android/server/webkit/WebViewUpdateServiceImpl;
+Lcom/android/server/webkit/WebViewUpdateServiceShellCommand;
 Lcom/android/server/webkit/WebViewUpdater$ProviderAndPackageInfo;
 Lcom/android/server/webkit/WebViewUpdater$WebViewPackageMissingException;
 Lcom/android/server/webkit/WebViewUpdater;
+Lcom/android/server/wm/-$$Lambda$-OevXHSXgaSE351ZqRnMoA024MM;
+Lcom/android/server/wm/-$$Lambda$-gsVbWDnbYC49FhjWBEWQbbGfCo;
+Lcom/android/server/wm/-$$Lambda$-hxY8aP13MItXHILC9K9vyNQgr4;
 Lcom/android/server/wm/-$$Lambda$01bPtngJg5AqEoOWfW3rWfV7MH4;
 Lcom/android/server/wm/-$$Lambda$1636dquQO0UvkFayOGf_gceB4iw;
+Lcom/android/server/wm/-$$Lambda$1Hjf_Nn5x4aIy9rIBTwVrtrzWFA;
+Lcom/android/server/wm/-$$Lambda$1uR2GodW3-TXQGLlsV_nCi1hRIE;
+Lcom/android/server/wm/-$$Lambda$1z_bkwouqOBIC89HKBNNqb1FoaY;
 Lcom/android/server/wm/-$$Lambda$2KrtdmjrY7Nagc4IRqzCk9gDuQU;
-Lcom/android/server/wm/-$$Lambda$3W4Y_XVQUddVKzLjibuHW7h0R1g;
-Lcom/android/server/wm/-$$Lambda$6DEhn1zqxqV5_Ytb_NyzMW23Ano;
+Lcom/android/server/wm/-$$Lambda$5JqEQmkxeln8TugmxHRkbeL4kzY;
+Lcom/android/server/wm/-$$Lambda$5zunxFfSXQYpejvFiP3lO5a4GDY;
+Lcom/android/server/wm/-$$Lambda$5zz5Ugt4wxIXoNE3lZS6NA9z_Jk;
+Lcom/android/server/wm/-$$Lambda$6P_D-ul93Vzg9xx2hvWUdYrHVXg;
+Lcom/android/server/wm/-$$Lambda$7nuK7cv058ES7c7refBFgc-jagk;
+Lcom/android/server/wm/-$$Lambda$8ew6SY_v_7ex9pwFGDswbkGWuXc;
+Lcom/android/server/wm/-$$Lambda$99XNq73vh8e4HVH9BuxFhbLxKVY;
+Lcom/android/server/wm/-$$Lambda$9Kj79s-YFqaGRhFHazfExnbZExw;
+Lcom/android/server/wm/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;
+Lcom/android/server/wm/-$$Lambda$ABB1r3i-Ua4IQKhbebsmnEGpWd8;
 Lcom/android/server/wm/-$$Lambda$ADNhW0r9Skcs9ezrOGURijI-lyQ;
-Lcom/android/server/wm/-$$Lambda$ActivityStack$7heVv97BezfdSlHS0oo3lugbypI;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$3JeUkmbe0mtunyS6P4HpkAkfKIY;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$9gqV7SOtv0dBXWMri6Jpu47OdLc;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$MEjrvbJugXgttKs3lnAk7x7tVPc;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$fTBXciy3VZJ2vTW_ZJXaKfUj7_I;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$l0oslVb5YyQhsmr7OXWV2whbXYU;
+Lcom/android/server/wm/-$$Lambda$ActivityMetricsLogger$sZFHZi7b6t6yjfx5mx3RtECSlEU;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$HCzV5lDTWOurUvy4cOGaHiRsYqY;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$IKQ7cgWGEqQBcP5npSaTqcxAkhg;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$QP-eHsXODaflS0pyRnr8fdoF6BU;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$TmL40hmGhjc2_QavTI0gwtolvY8;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$XnMxHSlbhK9x7qGQcZpHSkPOQvQ;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$YSVwd546vKWMiMYy7MFzg1qRiio;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$YY5kCNb4uWg5W_2lbH3ZOqirP1g;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$gHNTxsqqXHTV3N7vXQjmY818XQI;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$jAKnTXYErEwplxJ5lQgj44-M9_c;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$lyqdJlA4QOn1CXj7zglxNJxDy9o;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$prAsqx_JQJTqW1jNxmkuU3AV8AU;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$tt99EJHW_Nk5qgU9galJBIm5wXg;
+Lcom/android/server/wm/-$$Lambda$ActivityRecord$viEGm2vZbJCQ4-hdkomJCNYJiHU;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$0bNPw28X3N2biqQIdsnZuX7xaP4;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$2g-Gmexz3kbCg6lRcnM6dKBTDYc;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$4eA3orAXlhwXqOJQ8sydb6lzW_4;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$5VekJIJoJIh5JMUz2PkEx2YRfmo;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$5zgAl3IFHP6i4hvY3Hby3Fg4HQM;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$8rl8kos6nVh_HCoMLzbQatFXfQM;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$9LPSm49BYrWURHV0f_s9bnJYnVk;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$AQt7n1uNhFzkQj_jKv_v8YLYK-E;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$BmRNRfPY9eDs_h7lUVkDfKuzXrA;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$BqE10FCv9how7gdM55red1ApUGs;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$Bw4s_aT8NefvklvOlavSngajM-8;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$CheckBehindFullscreenActivityHelper$hxEhv3lodv2mTq0c1tG208T2TSs;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$FkaZkaRIeozTqSdHkmYZNbNtF1I;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$FmEEyG-_GV_nB2HunZ086MlsGbw;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$GDPUuzTvyfp2z6wYxqAF0vhMJK8;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$LjKdRo1XcwS4pEMN4TDnJTwl_Xs;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$MbOt7bGpxw9wmjZ8kOCkYcDCqMQ;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$McNymlK649VA6OMbsDYgFAkVJo8;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$N2PfGF62p6Y1TYGt9lvFtsW9LmQ;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$NfjvUUwVOB3bYUF_fHSaW6oHS94;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$RemoveHistoryRecordsForApp$8j2ZFLAwkXnwDAxiTFN7mMDLhjU;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$TtiWgYBlSmpdH3zrFrJGnJ3IEn8;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$U5MWhpArTVT_b8W6GtTa1Ao8HFs;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$VIuWlCdKwIo4qqRlevMLniedZ7o;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$W1rlXKcoaLb8UYskrF3gqMvOkRU;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$YAQEcQUrLqR06xiJJApMvOPIxhg;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$YtJbVURmslxye4JS4EFo6X31Vv0;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$YwFMIPNkUBnV2uIqB9sZ47M__Og;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$ZeqjtPeTSrJ3k2l6y2bUmw5uqo0;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$bzlcMWlmDol-PMxBdUW69zw6n4Q;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$ccf0sRiFvFeqRiJQ6iXIEF1eN1Q;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$dhfbladKtxXwwdCS2dFdAfUfBN4;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$n-w1s4z47M3zxF8atJ8fDCrw2CA;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$vLTEw6nwtjcZ-ZyMktx8L5MR_TA;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$xHrv17CG5tAkxdutHyfCFt4-Iec;
+Lcom/android/server/wm/-$$Lambda$ActivityStack$xrtErRAEnS21CI3h4SKc_WzJFDA;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$0u1RcpeZ6m0BHDGGv8EXroS3KyE;
 Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$28Zuzbi6usdgbDcOi8hrJg6nZO0;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$BFgD0ahFSDg4CqQNytqWrPRgFII;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$GTQdt2-hJbSgeh3nbBxR-rvVTqw;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$MoveTaskToFullscreenHelper$n0VOwWNM3mud17SnHip7XMiWlWE;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$PKLpVoHaca7ZAS9IjUCkoGIBtDw;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$iNb1-M_lYtbDycAXODgbDkmI9ww;
+Lcom/android/server/wm/-$$Lambda$ActivityStackSupervisor$mLKHIIzkTAK9QSlSxia8-84y15M;
+Lcom/android/server/wm/-$$Lambda$ActivityStartController$6bTAPCVeDq_D4Y53Y5WNfMK4xBE;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$-xFyZDUKMraVkermSJGXQdN3oJ4;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$3DTHgCAeEd5OOF7ACeXoCk8mmrQ;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7Ia1bmRpPHHSNlbH8cuLw8dKG04;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$7ieG0s-7Zp4H2bLiWdOgB6MqhcI;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$BXul1K8BX6JEv_ff3NT76qpeZGQ;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$LocalService$hXNJNh8HjV10X1ZEOI6o0Yzmq8o;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$LocalService$smesvyl87CxHptMAvRA559Glc1k;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$LocalService$xIfx_hFO4SXy-Nq34zoEHe3S9eU;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$U6g1UdnOPnEF9wX1OTm9nKVXY5k;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$Uli7s8UWTEj0IpBUtoST5bmgvKk;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$iduseKQrjIWQYD0hJ8Q5DMmuSfE;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$js0zprxhKzo_Mx9ozR8logP_1-c;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$oP6xxIfnD4kb4JN7aSJU073ULR4;
 Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$p4I6RZJqLXjaEjdISFyNzjAe4HE;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$w70cT1_hTWQQAYctmXaA0BeZuBc;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$x3j1aVkumtfulORwKd6dHysJyE0;
+Lcom/android/server/wm/-$$Lambda$ActivityTaskManagerService$yP9TbBmrgQ4lrgcxb-8oL1pBAs4;
+Lcom/android/server/wm/-$$Lambda$AlertWindowNotification$ZuqSYML-X-nkNVTba_yeIT9hJ1s;
+Lcom/android/server/wm/-$$Lambda$AlertWindowNotification$iVtcJMb6VtqtAgEtGUDCkGay0tM;
+Lcom/android/server/wm/-$$Lambda$AppTransition$9JtLlCXlArIsRNjLJ0_3RWFSHts;
+Lcom/android/server/wm/-$$Lambda$AppTransition$B95jxKE2FnT5RNLStTafenhEYj4;
 Lcom/android/server/wm/-$$Lambda$AppTransition$xrq-Gwel_FcpfDvO2DrCfGN_3bk;
-Lcom/android/server/wm/-$$Lambda$AppTransitionController$ESsBJ2royCDDfelW3z7cgYH5q2I;
-Lcom/android/server/wm/-$$Lambda$AppTransitionController$YfQg1m68hbvcHoXbvzomyslzuaU;
-Lcom/android/server/wm/-$$Lambda$AppTransitionController$j4jrKo6PKtYRjRfPVQMMiQB02jg;
-Lcom/android/server/wm/-$$Lambda$AppWindowToken$cwsF3cyeJjO4UiuaM07w8TBc698;
-Lcom/android/server/wm/-$$Lambda$AppWindowToken$jUUD3GIacKfmiVanGs_Dyy3FFqI;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$KP68kgUCojUmpcFh_s6uhO2M93o;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$ZU-2ppbyGJ7-UsXREbcW1x9TJH0;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$fJATtpiRgHjEgZVznt1dzW5Mwt0;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$o_nkoN7a-ZHaSAgJCQZcboKz9Ig;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$wKDCdmYJWN9Qk9bjArILV5j7lEY;
+Lcom/android/server/wm/-$$Lambda$AppTransitionController$z5kCoexPNTWFncmRBfeXr6HA2JA;
+Lcom/android/server/wm/-$$Lambda$B16jdo1lKUkQ4B7iWXwPKs2MAdg;
 Lcom/android/server/wm/-$$Lambda$B58NKEOrr2mhFWeS3bqpaZnd11o;
+Lcom/android/server/wm/-$$Lambda$BEx3OWenCvYAaV5h_J2ZkZXhEcY;
 Lcom/android/server/wm/-$$Lambda$BoundsAnimationController$3-yWz6AXIW5r1KElGtHEgHZdi5Q;
-Lcom/android/server/wm/-$$Lambda$DZzr1xJVO2dSdamoKdlelCfv9o4;
+Lcom/android/server/wm/-$$Lambda$BoundsAnimationController$MoVv_WhxoMrTVo-xz1qu2FMcYrM;
+Lcom/android/server/wm/-$$Lambda$CD-g9zNm970tG9hCSQ-1BiBOrwY;
+Lcom/android/server/wm/-$$Lambda$DLUVMr0q4HDD6VD11G3xgCuJfHo;
+Lcom/android/server/wm/-$$Lambda$DaFwIyqZTBVKE2y-TN2iE7CD-r8;
+Lcom/android/server/wm/-$$Lambda$Dimmer$DimState$QYvwJex5H10MFMe0LEzEUs1b2G0;
+Lcom/android/server/wm/-$$Lambda$DisplayArea$Tokens$m3rhEbIWQl888W_2uGBIkkXLdlA;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$-t02M5j-NY8t_HMWggKym0SrI5k;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$0yxrqH9eGY2qTjH1u_BvaVrXCSA;
-Lcom/android/server/wm/-$$Lambda$DisplayContent$1C_-u_mpQFfKL_O8K1VFzBgPg50;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$2VlyMN8z2sOPqE9-yf-z3-peRMI;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$7Z9gsguOLtfXssJUALjgEsOLZoE;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$7uZtakUXzuXqF_Qht5Uq7LUvubI;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$7voe_dEKk2BYMriCvPuvaznb9WQ;
-Lcom/android/server/wm/-$$Lambda$DisplayContent$BgTlvHbVclnASz-MrvERWxyMV-A;
-Lcom/android/server/wm/-$$Lambda$DisplayContent$GuCKVzKP141d6J0gfRAjKtuBJUU;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$BvG_N-oQ9idqqb6Bo2x0dq7gI5g;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$D0QJUvhaQkGgoMtOmjw5foY9F8M;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$Dg1quneQgytca0GgzUkUIFT67mk;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$DjwkABhnEVEEFPHXKA0QFcHdb2w;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$Ei1gEKrsGOVbEpUtkye4DxvMrow;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$GdYfLI7hkBs2XfGJkN6DbdzEs8U;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$Gs1I9c16qswnvvDSPXoEhteQcFM;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$JKV50ExZuoi3fuNRue0nZXh8ijA;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$JYsrGdifTPH6ASJDC3B9YWMD2pw;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$JibsaX4YnJd0ta_wiDDdSp-PjQk;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$MTOrQ0uso5p3wixTLmDsYyck6h4;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$FI_O7m2qEDfIRZef3D32AxG-rcs;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$m2B7QqNQSZc7N5DejF0qGwn6Pck;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$NonAppWindowContainers$nqCymC3xR9b3qaeohnnJJpSiajc;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$SeHNTr4WUVpGmQniHULUi1ST7k8;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$TPj3OjTsuIg5GTLb5nMmFqIghA4;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$O93kVOZBPruBUoIqFi--Pvv3DF0;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$TaskContainers$sOc7NEp-0tqs2Dj7F4JTNjgQacU;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$TaskForResizePointSearchResult$1FHFJXiYTNFcgi5tiBrxzbmjdWw;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$5H3Kr211kTMg-C28tapuQGzkwN8;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$TaskStackContainers$rQnI0Y8R9ptQ09cGHwbCHDiG2FY;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$Ufn2ZjVS0i1L8aeQ8GZMJNJfmcY;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$_XfE1uZ9VUv6i0SxWUvqu69FNb4;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$a4EkCBfpZNIl1xfYgm2ktgndF8w;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$cDcvMzGxc6XW13Q8FrU5X4DagqE;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$eJsj3GR1HdCnOJrZ8_oaLP52jg0;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$fiC19lMy-d_-rvza7hhOSw6bOM8;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$hRKjZwmneu0T85LNNY6_Zcs4gKM;
-Lcom/android/server/wm/-$$Lambda$DisplayContent$jJlRHCiYzTPceX3tUkQ_1wUz71E;
-Lcom/android/server/wm/-$$Lambda$DisplayContent$oqhmXZMcpcvgI50swQTzosAcjac;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$n90JauAfTfQVesyRzx0-TX7s1LM;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$olEtDzkJbp6PCECUFtRISV0LCpk;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$qT01Aq6xt_ZOs86A1yDQe-qmPFQ;
 Lcom/android/server/wm/-$$Lambda$DisplayContent$qxt4izS31fb0LF2uo_OF9DMa7gc;
-Lcom/android/server/wm/-$$Lambda$DisplayPolicy$ZodRZMHxBPaPezVW2fanpbNIqqQ;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$rF1ZhFUTWyZqcBK8Oea3g5-uNlM;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$sYPOy6TL-QiWuU_jcEHYn4HeFnQ;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$urKpYhmBMnn2yjZBZV3AQYBudRc;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$vehcSAr5hQ3Q5gWBUB0K8yByHXQ;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$w9ep5dwa3CsKsu0rpKSQwF-60A4;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$x9QSHnWitjvGOC1SnurRP5ASz48;
+Lcom/android/server/wm/-$$Lambda$DisplayContent$xDPfsCNl85pDNmgsKEQVqdUehiA;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$-jer63nl4BagHUaTYzlDJxk8xIU;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$3MnyIKSHFLqhfUifWEQPNp_-J6A;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$9Q7foUL8MStILLFmJNfN48-WaJM;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$AdQlGK4do0LfpQJmOnIuKqDwp0Y;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$DDvhxUfu81ZBR36fDVY0P7u99ag;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$DaI-u7gKDqJtPizmW-_eQ3hO-BU;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$FpQuLkFb2EnHvk4Uzhr9G5Rn_xI;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$HbdRZfPpJ53Wnk7_Ueb0ycyz_AQ;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$IOyP8YVRG92tn9u1muYWZgBbgc0;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$J8sIwXJvltUaPM3jEGO948Bx9ig;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$LFEaXRr2IF3nhPJdP5h3swIhnus;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$LkHee4mchNXMwNt7HLgsMzHofeE;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$P8D337iYIcX04InNbwQCJWD0nmU;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$QDPgWUhyEOraWnf6a-u4mTBttdw;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$XssW_Qm0L7CsznkQYKBfWrF7PU4;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$Z8iyyXgeVPvu1sLiGR3kYtB4YO8;
 Lcom/android/server/wm/-$$Lambda$DisplayPolicy$_FsvHpVUi-gbWmSpT009cJNNmgM;
-Lcom/android/server/wm/-$$Lambda$DisplayPolicy$n40v5T_KP7EALj7NP3i_hv76V5o;
-Lcom/android/server/wm/-$$Lambda$DisplayPolicy$xlVRxCROc8UPmV4pH747oZzvS58;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$bT9mjfT_DJVx_BBfkRPXHf6mfWE;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$j3sY1jb4WFF_F3wOT9D2fB2mOts;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$m-UPXUZKrPpeFUjrauzoJMNbYjM;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$nrBrmKRLvJQjdv_P6oPT7D0GGW8;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$pqtzqy0ti-csynvTP9P1eQUE-gE;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$rio2so8uuvIt5iXObo83p1LyRwA;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$rkGhPuV8zWnPuCUXhzLY40zhjLk;
+Lcom/android/server/wm/-$$Lambda$DisplayPolicy$wrdG81IaCZoCL0YqumBunZu5DyM;
+Lcom/android/server/wm/-$$Lambda$DisplayRotation$2$pp3jOG1BWDI3rPQ3oFXammeS5Tg;
+Lcom/android/server/wm/-$$Lambda$DisplayRotation$UvDbz_yyBKmo2Ump2uc0fobRTmg;
+Lcom/android/server/wm/-$$Lambda$DisplayRotation$q2wjcSMbrixEIlIR6-WoSLJ1j-g;
+Lcom/android/server/wm/-$$Lambda$DockedStackDividerController$5bA1vUPZ2WAWRKwBSEsFIfWUu9o;
+Lcom/android/server/wm/-$$Lambda$DragState$-yUFIMrhYYccZ0gwd6eVcpAE93o;
+Lcom/android/server/wm/-$$Lambda$ERD-2J5ieyabZSu134oI85tDnME;
+Lcom/android/server/wm/-$$Lambda$EmbeddedWindowController$Q0HHIdTKm8MX4DsCYgzZ2UOUXPQ;
+Lcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$Bbb3nMFa3F8er_OBuKA7-SpeSKo;
+Lcom/android/server/wm/-$$Lambda$EnsureActivitiesVisibleHelper$uAeEWwx5d0xk6FKOvvR9CXZS6Bg;
+Lcom/android/server/wm/-$$Lambda$FvpUGL5umwa8cY7p8SB7VV6jxQU;
+Lcom/android/server/wm/-$$Lambda$G7MFeOBgoCefJGCDIl_j8uFkMZI;
 Lcom/android/server/wm/-$$Lambda$HLz_SQuxQoIiuaK5SB5xJ6FnoxY;
+Lcom/android/server/wm/-$$Lambda$HtepUMgqPLKO-76U6SMEmchALsM;
+Lcom/android/server/wm/-$$Lambda$ImeInsetsSourceProvider$1aCwANZDoNIzXR0mfeN2iV_k2Yo;
+Lcom/android/server/wm/-$$Lambda$InputMonitor$ew_vdS116C6DH9LxWaTuVXJYZPE;
+Lcom/android/server/wm/-$$Lambda$InsetsPolicy$LCR2QgJZxbNat6Qb0Be-JDpy3i0;
+Lcom/android/server/wm/-$$Lambda$InsetsPolicy$rhM012fDRQZs2vWOctMZZ_uSXvc;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$-1iOXDf-1s3wDHcMIHBKNk6MS3I;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$0D_z1-eyl79cSyxMEkWr97-EhW0;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$1JYO8QVhePzczEaYmXV0veAcadI;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$AD-N-CuASggMPuANxay4AharPVM;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$EieWndHHWtNpBtJoK2U-TZ_RU2A;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$WPnaFmmIW6k6mGJbfuuwznz-bHA;
+Lcom/android/server/wm/-$$Lambda$InsetsStateController$c8m0K1Ykk6OHrDEJKWFPmp5WxKU;
 Lcom/android/server/wm/-$$Lambda$InsetsStateController$pXoYGy4X5aPw1QFi0iIWKiTMlDg;
 Lcom/android/server/wm/-$$Lambda$InsetsStateController$sIYEJIR4ztgffCLMi5Z1RvdxyYs;
+Lcom/android/server/wm/-$$Lambda$JQG7CszycLV40zONwvdlvplb1TI;
+Lcom/android/server/wm/-$$Lambda$JTKQBRuxxgBAO5y04IFnI4psyA4;
+Lcom/android/server/wm/-$$Lambda$LI60v4Y5Me6khV12IZ-zEQtSx7A;
 Lcom/android/server/wm/-$$Lambda$LYW1ECaEajjYgarzgKdTZ4O1fi0;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$850Ez4IkbH192NuVFW_l12sZL_E;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$FhvLqBbd_XMsJK45WV5Mlt8JSYM;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$KukKmVpn5W_1xSV6Dnp8wW2H2Ks;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$UGY1OclnLIQLMEL9B55qjERFf4o;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$lAGPwfsXJvBWsyG2rbEfo3sTv34;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$pWUDt4Ot3BWLJOTAhXMkkhHUhpc;
+Lcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$veRn_GhgLZLlOHOJ0ZYT6KcfYqo;
+Lcom/android/server/wm/-$$Lambda$LaunchParamsPersister$Rc1cXPLhXa2WPSr18Q9-Xc7SdV8;
 Lcom/android/server/wm/-$$Lambda$LocalAnimationAdapter$X--EomqUvw4qy89IeeTFTH7aCMo;
+Lcom/android/server/wm/-$$Lambda$LockTaskController$NMEqFdnoSJ8A7QRxQO-ZoqXOmVc;
+Lcom/android/server/wm/-$$Lambda$LockTaskController$mYEdosOvuhEWdcYLQrOC83U4Wms;
+Lcom/android/server/wm/-$$Lambda$LockTaskController$nuVptnoYwaF1CYydSggC_oxSSSc;
+Lcom/android/server/wm/-$$Lambda$MGgYXq0deCsjjGP-28PM6ahiI2U;
 Lcom/android/server/wm/-$$Lambda$OPdXuZQLetMnocdH6XV32JbNQ3I;
 Lcom/android/server/wm/-$$Lambda$OuObUsm0bB9g5X0kIXYkBYHvodY;
+Lcom/android/server/wm/-$$Lambda$PendingRemoteAnimationRegistry$Entry$giivzkMgzIxukCXvO2EVzLb0oxo;
 Lcom/android/server/wm/-$$Lambda$PersisterQueue$HOTPBvinkMOqT3zxV3gRm6Y9Wi4;
-Lcom/android/server/wm/-$$Lambda$PinnedStackController$PinnedStackControllerCallback$MdGjZinCTxKrX3GJTl1CXkAuFro;
-Lcom/android/server/wm/-$$Lambda$RecentTasks$KPkDUQ9KJ-vmXlmV8HHAucQJJdQ;
+Lcom/android/server/wm/-$$Lambda$PinnedStackController$PinnedStackControllerCallback$0SANOJyiLP67Pkj3NbDS5B-egBU;
+Lcom/android/server/wm/-$$Lambda$Pl4__K9hqf4p4lme99AnaMrbXe0;
+Lcom/android/server/wm/-$$Lambda$PyL9QAXbv8yta3wX2VTGq8fFFo4;
+Lcom/android/server/wm/-$$Lambda$Q7nS26dC0McEbKsdlJZMFVXDNKY;
+Lcom/android/server/wm/-$$Lambda$QEISWTQzWbgxRMT5rMnIEzpsKpc;
+Lcom/android/server/wm/-$$Lambda$RecentTasks$1$yqVuu6fkQgjlTTs6kgJbxqq3Hng;
+Lcom/android/server/wm/-$$Lambda$RecentTasks$eaeTjEEoVsLAhHFPccdtbbB3Lrk;
+Lcom/android/server/wm/-$$Lambda$RemoteAnimationController$74uuXaM2TqjkzYi0b8LqJdbycxA;
+Lcom/android/server/wm/-$$Lambda$RemoteAnimationController$dP8qDptNigoqhzVtIudsX5naGu4;
+Lcom/android/server/wm/-$$Lambda$RemoteAnimationController$uQS8vaPKQ-E3x_9G8NCxPQmw1fw;
+Lcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$APiSnEpUwnLFg5o4cp87NyJw4j4;
+Lcom/android/server/wm/-$$Lambda$ResetTargetTaskHelper$O-Gmp4WswvLHsJ0Qd1g0pv2tF14;
+Lcom/android/server/wm/-$$Lambda$RootActivityContainer$eTBwQBLMAzyK1I2vbgH_wbrf5n0;
+Lcom/android/server/wm/-$$Lambda$RootActivityContainer$m1XaUaXYDseEoG-rccxbUydXgO8;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$-XbbIpkF4p2mF3v0qeXeat-_w3E;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$0ZupnQyxl7yZKgMmf2zwvykG50s;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$0aCEx04eIvMHmZVtI4ucsiK5s9I;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$1$HOnR_rhPvM6ZPX8yI-4GFhkGqUs;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$3VVFoec4x74e1MMAq03gYI9kKjo;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$5fbF65VSmaJkPHxEhceOGTat7JE;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$7XcqfZjQLAbjpIyed3iDnVtZro4;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$9Gi6QLDM5W-SF-EH_zfgZZvIlo0;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$FinishDisabledPackageActivitiesHelper$XWfRTrqNP6c1kx7wtT2Pvy6K9-c;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$FtQd5Yte3ooh7jQ1sV_WSAmocV8;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$IlD1lD49ui7gQmU2NkxgnXIhlOo;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$JVx5SVc0AsTnwnLxXYLgV6AKHPg;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$JZALJLRYsvQWgNnzHdoTfj_f3QY;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$O6gArs92KbWUhitra1og4WTg69c;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$ONUnDkI6axONU1lRFnZMH5NkbZI;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$SVJucJygDtyF-4eKB9wPXWaNBDM;
 Lcom/android/server/wm/-$$Lambda$RootWindowContainer$Vvv8jzH2oSE9-eakZwTuKd5NpsU;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$ZTXupc1zKRWZgWpo-r3so3blHoI;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$auMc5HUrsvttHP3CYY9dttuuvi8;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$bRRfWu3QSW54eS51jCvFD02TPt8;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$fL0RxmEBMlnXFmjHLkBJ9jk9drs;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$iBTaizkGPVUfwWK0hFvdR5mseLI;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$ipFw3PwG_VSG45EGVCDfJfHk29I;
 Lcom/android/server/wm/-$$Lambda$RootWindowContainer$qT2ficAmvrvFcBdiJIGNKxJ8Z9Q;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$smSIq2r4GMdbTUsLaRS4KHth6DY;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$utugHDPHgMp2b3JwigOH_-Y0P1Q;
 Lcom/android/server/wm/-$$Lambda$RootWindowContainer$vMW2dyMvZQ0PDhptvNKN5WXpK_w;
-Lcom/android/server/wm/-$$Lambda$RootWindowContainer$zN9AhOirpieCrP6YNeTmpaApULQ;
-Lcom/android/server/wm/-$$Lambda$RunningTasks$B8bQN-i7MO0XIePhmkVnejRGNp0;
+Lcom/android/server/wm/-$$Lambda$RootWindowContainer$y9wG_endhUBCwGznyjN4RSIYTyg;
+Lcom/android/server/wm/-$$Lambda$RunningTasks$MPCBAZpSXKx53M7vrqtvLfftJOc;
+Lcom/android/server/wm/-$$Lambda$RunningTasks$hR_Ryk91b0B2BdJN9eCfQfPwC3g;
+Lcom/android/server/wm/-$$Lambda$Session$15hO_YO9_yR6FTMdPPe87fZzL1c;
+Lcom/android/server/wm/-$$Lambda$Session$3q7E1KtcKfO8_a7pOH0nnVURP8w;
+Lcom/android/server/wm/-$$Lambda$Session$6cG7louvKZjAfcc7DtiA7aAzr7U;
+Lcom/android/server/wm/-$$Lambda$Session$zgdcs0nAb8hCdS-6ugnFMadbhU8;
 Lcom/android/server/wm/-$$Lambda$StatusBarController$1$3FiQ0kybPCSlgcNJkCsNm5M12iA;
 Lcom/android/server/wm/-$$Lambda$StatusBarController$1$CizMeoiz6ZVrkt6kAKpSV5htmyc;
 Lcom/android/server/wm/-$$Lambda$StatusBarController$1$t71qcQIBSxRShk0Xohf1lk53bOw;
 Lcom/android/server/wm/-$$Lambda$StatusBarController$1$x4q7e0Eysf0ynMSdT1A-JN_ucuI;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$9Wa9MhcrSX12liOouHtYXEkDU60;
+Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$SGOilG6qRe0XTsTJRQqQKhta0pA;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$lSzwjoKEGADoEFOzdEnwriAk0T4;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$puhYAP5tF0mSSJva-eUz59HnrkA;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$we7K92eAl3biB_bzyqbv5xCmasE;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimationRunner$xDyZdsMrcbp64p4BQmOGPvVnSWA;
-Lcom/android/server/wm/-$$Lambda$SurfaceAnimator$SIBia0mND666K8lMCPsoid8pUTI;
+Lcom/android/server/wm/-$$Lambda$SurfaceAnimationThread$frZMbXAzhUBmX-wz0SwbLTXpw9k;
+Lcom/android/server/wm/-$$Lambda$SurfaceAnimator$M9kRDTUpVS03LTqe-QLQz3DnMhk;
+Lcom/android/server/wm/-$$Lambda$SurfaceAnimator$Y4hCTFZUnyoMqrbq2rxOWj68ccg;
+Lcom/android/server/wm/-$$Lambda$SurfaceAnimator$qxm0Z0Ve0b3lKnyQQMgWVQfTP3Q;
 Lcom/android/server/wm/-$$Lambda$SurfaceAnimator$vdRZk66hQVbQCvVXEaQCT1kVmFc;
+Lcom/android/server/wm/-$$Lambda$SystemGesturesPointerEventListener$9Iw39fjTtjXO5kacgrpdxfxjuSY;
+Lcom/android/server/wm/-$$Lambda$TDUtW_T9flkdwvGQ9AliNjGyzdY;
+Lcom/android/server/wm/-$$Lambda$Task$2iqUThjTmuPJNPgunW5qcBmNa3E;
+Lcom/android/server/wm/-$$Lambda$Task$AFigK9DV4TJX-I6KGr1B5GhkxBQ;
+Lcom/android/server/wm/-$$Lambda$Task$BP51Xfr33NBfsJ4rKO04RomX2Tg;
+Lcom/android/server/wm/-$$Lambda$Task$CKQ9RLMNPYajktwO1VrUoQGHF_8;
+Lcom/android/server/wm/-$$Lambda$Task$FindRootHelper$sIea0VfMPIGsR0Xwg7rABysHwZ4;
+Lcom/android/server/wm/-$$Lambda$Task$HQ9aJbE-z0XuxiYHPMxxaMHkKFY;
+Lcom/android/server/wm/-$$Lambda$Task$N2dM5PIhuaw--o5HD3NnXAFoPzg;
+Lcom/android/server/wm/-$$Lambda$Task$N6swnhdrHvxOfp81yUqye9AbX7A;
+Lcom/android/server/wm/-$$Lambda$Task$OQmaRDKXdgA0v6VfNwTX7wOkwBs;
+Lcom/android/server/wm/-$$Lambda$Task$SAhnD6goWlY1lXYn6fWba8f2JLs;
+Lcom/android/server/wm/-$$Lambda$Task$SRt5iDqxFMzfuMULgjnmoyWp73o;
+Lcom/android/server/wm/-$$Lambda$Task$TUGPkEKamN60PF6hJQxUwDBjU-M;
+Lcom/android/server/wm/-$$Lambda$Task$V2nwgQi-xYvgAjezrWRsKUB2nLI;
+Lcom/android/server/wm/-$$Lambda$Task$WFXOGUsP9k2SctNXpn2eb_XUKP0;
+Lcom/android/server/wm/-$$Lambda$Task$XRtJRRfvaa_neQ0BbpDvRIqXzf4;
+Lcom/android/server/wm/-$$Lambda$Task$a4C-owFvQJqPsf8C48fgcmCjd6M;
+Lcom/android/server/wm/-$$Lambda$Task$eHH2M2yJE6epk3eXzGcOuu6WMt8;
+Lcom/android/server/wm/-$$Lambda$Task$hJlIVNsWJQJ_mIrVCbuZDn-cUwE;
+Lcom/android/server/wm/-$$Lambda$Task$lN_nRoGkP81jAXXQImoACo3ADSk;
+Lcom/android/server/wm/-$$Lambda$Task$lqGdYR9ABiPuG3_68w1VS6hrr8c;
+Lcom/android/server/wm/-$$Lambda$Task$s9wiZSThkGOKye0Zl5MRKv-8Iq0;
+Lcom/android/server/wm/-$$Lambda$Task$wJrggGO94VQWnIMvq8QrsNZ1LZk;
+Lcom/android/server/wm/-$$Lambda$Task$xh_oQC7HZKaIUa_hEyntZO3NQcs;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$0m_-qN9QkcgkoWun2Biw8le4l1Y;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$1ziXgnyLi0gQjqMGJAbSzs0-dmE;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$9ngbiJ2r3x2ASHwN59tUFO2-2BQ;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Dvvt1gNNfFRVEKlSCdL_9VnilUE;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Ge3jFevRwpndz6qRSLDXODq2VjE;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Kz-Od_gLhLbMtGka4r78W0Gmzgo;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$M2NSB3SSVJR2Tu4vihNfsIL31s4;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$MS67FdGix7tWO0Od9imcaKVXL7I;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$NLoKy9SbVr1EJpEjznsKi7yAlpg;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$PSFFTNiSSqx5-emiM-hoY62N04M;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SAbrujQOZNUflKs1FAg2mBnjx3A;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$SByuGj5tpcCpjTH9lf5zHHv2gNM;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$UexNbaqPy0mc3VxTw2coCctHho8;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$VuvWLQaLHifVGvurVv75MXCukH0;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ZLPZtiEvD_F4WUgH7BD4KPpdAWM;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$byMDuIFUN4cQ1lT9jVjMwLhaLDw;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$cFUeUwnRjuOQKcg2c4PnDS0ImTw;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$k0FXXC-HcWJhmtm6-Kruo6nGeXI;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$kss8MGli3T9b_Y-QDzR2cB843y8;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$ncM_yje7-m7HuiJvorBIH_C8Ou4;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$qONfw3ssOxjb_iMuO2oMzCbXfrg;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sS6OHbZtuWHjzmkm8bleSWZWFqA;
+Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$sdBP_U6BS8zRbtZp-gZ0BmFW8bs;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$wuBjs4dj7gB_MI4dIdt2gV2Osus;
 Lcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$yaW9HlZsz3L55CTQ4b7y33IGo94;
-Lcom/android/server/wm/-$$Lambda$TaskTapPointerEventListener$Qq8YAj6yai3RMz5wJNKGVJNqsPM;
-Lcom/android/server/wm/-$$Lambda$UB90fpYUkajpKCLGR93ZDlgDhyw;
+Lcom/android/server/wm/-$$Lambda$TaskPersister$8MhgCrM41UuyRqTjWwKtfifKRLo;
+Lcom/android/server/wm/-$$Lambda$TaskPersister$mW0HULrR8EtZ9La-pL9kLTnHSzk;
+Lcom/android/server/wm/-$$Lambda$TaskPersister$piHtCTZMpbHMTXAk2o7OdlK4Xvc;
+Lcom/android/server/wm/-$$Lambda$TaskPositioningController$u0oAwi82C-bAGo2JAsAc_9ZLi70;
+Lcom/android/server/wm/-$$Lambda$TaskPositioningController$z3n1stJjOdhDbXXrvPlvlqmON6k;
+Lcom/android/server/wm/-$$Lambda$TaskSnapshotController$Tj7bQvjfkzsOjJOdJXBpqCZnW1Q;
+Lcom/android/server/wm/-$$Lambda$TaskSnapshotController$b7mc92hqzbRpmpc99dYS4wKuL6Y;
+Lcom/android/server/wm/-$$Lambda$TaskSnapshotController$eY4HzOpxvBAchhbObndnIDQqsVs;
+Lcom/android/server/wm/-$$Lambda$TaskSnapshotController$pF831VjVO7J7eXZhalKp1CJKNC4;
+Lcom/android/server/wm/-$$Lambda$U9zpYh1OwxC9FZcjOfUJl0HQSho;
+Lcom/android/server/wm/-$$Lambda$UZl9uqUNteVgplGGEK6TMzf-7zk;
+Lcom/android/server/wm/-$$Lambda$UnknownAppVisibilityController$FYhcjOhYWVp6HX5hr3GGaPg67Gc;
+Lcom/android/server/wm/-$$Lambda$VDG7MoD_7v7qIdkguJXls8nmhGU;
+Lcom/android/server/wm/-$$Lambda$VY87MmFWaCLMkNa2qHGaPrThyrI;
+Lcom/android/server/wm/-$$Lambda$VYR_ckkt7281-Ti8Ps0f0Tx3ljY;
+Lcom/android/server/wm/-$$Lambda$WallpaperController$3kGUJhX6nW41Z26JaiCQelxXZr8;
 Lcom/android/server/wm/-$$Lambda$WallpaperController$6pruPGLeSJAwNl9vGfC87eso21w;
+Lcom/android/server/wm/-$$Lambda$WallpaperController$Gy7houdzET4VmpY0QJ2v-NX1b7k;
 Lcom/android/server/wm/-$$Lambda$WindowAnimationSpec$jKE7Phq2DESkeBondpaNPBLn6Cs;
 Lcom/android/server/wm/-$$Lambda$WindowAnimator$U3Fu5_RzEyNo8Jt6zTb2ozdXiqM;
 Lcom/android/server/wm/-$$Lambda$WindowAnimator$ddXU8gK8rmDqri0OZVMNa3Y4GHk;
-Lcom/android/server/wm/-$$Lambda$WindowManagerService$wGh8jzmWqrd_7ruovSXZoiIk1s0;
-Lcom/android/server/wm/-$$Lambda$WindowSurfacePlacer$4Hbamt-LFcbu8AoZBoOZN_LveKQ;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$-A4y17DMfFWJcsomzkr9vLbjQAE;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$1ZEE7fA5djns2jQRzCNudNIbJ1U;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$4sX6UUtugZXD_J917yuWIm58Q9M;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$7u99Gj9w15XaOTtX23LKq-yXn5o;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$7x9zhFx3vhSZ5lMUA8efWaz-6co;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$LBjDP_WAw_7yWAmt8ZHABKob-8M;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$TQFCJtak2E5nTjAEG9Q24yp-Oi8;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$VgO_jyvTwx2IcoTcwvoIKxat95M;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$WskrGbNwLeexLlAXUNUyGLhHEWA;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$XFf_Y8TZb5u_pVgOD-hm95z8ghM;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$a-4AX8BeEa4UpmUmPJfszEypbe8;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$hEnPtnCJ_pCrhm4O_2UvgVpB0HQ;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$hIGRJSXS2_nuTiN5-y-qjXv-Wwk;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$k_PpuHAHKhi1gqk1dQsXNnYX7Ok;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$lJjjxJS1wJFikrxN0jFMgNna43g;
+Lcom/android/server/wm/-$$Lambda$WindowContainer$sh5zVifGKSmT1fuGQxK_5_eAZ20;
+Lcom/android/server/wm/-$$Lambda$WindowManagerConstants$H0Vnr9H2xLD72_22unzb68d1fSM;
+Lcom/android/server/wm/-$$Lambda$WindowManagerConstants$YOsWod8qOtbBnduZqPrYHSwyJ5E;
+Lcom/android/server/wm/-$$Lambda$WindowManagerConstants$vqhvZbTPHnj84vQKH9wjAhgVP44;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$-84S7IuSlM65nKgepHJEvVFHdC8;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$05fsn8aS3Yh8PJChNK4X3zTgx6M;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$3$FRNc42I1SE4lD0XFYgIp8RCUXng;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$76as6dijPl5n2m0AtZPbXLM-ukM;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$8ua71O53dXrMSZy5W0bAg3kK7ho;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$C6YaaDDhV_SnUxYAgu9kKMJ4bvA;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$Fyqm87wrgGYc-KtVoeX41hP5jyE;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$KFmzvAqk_xZK5kvrW8MP3Y6A4FY;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$_nYJRiVOgbON7mI191FIzNAk4Xs;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$LocalService$rEGrcIRCgYp-4kzr5xA12LKQX0E;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$Yf21B7QM1fRVFGIQy6MImYjka28;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$Zv37mcLTUXyG89YznyHzluaKNE0;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$_tfpDlf3MkHSDi8MNIOlvGgvLS8;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$eaG2e7SQKd8e2ZcXySkFGa1yxFk;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$pUqz7rqEpzd4geO4TXsDyOVZCOc;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$qCWPyJrU0wwX4tP-_QpfmersCVc;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$tOeHm8ndyhv8iLNQ_GHuZ7HhJdw;
+Lcom/android/server/wm/-$$Lambda$WindowManagerService$wmqs4RHTJSPc1AMchgkEBB8CALU;
 Lcom/android/server/wm/-$$Lambda$WindowToken$tFLHn4S6WuSXW1gp1kvT_sp7WC0;
 Lcom/android/server/wm/-$$Lambda$WindowTracing$lz89IHzR4nKO_ZtXtwyNGkRleMY;
-Lcom/android/server/wm/-$$Lambda$XZ-U3HlCFtHp_gydNmNMeRmQMCI;
+Lcom/android/server/wm/-$$Lambda$XcHmyRxMY5ULhjLiV-sIKnPtvOM;
+Lcom/android/server/wm/-$$Lambda$Z9QEXZevRsInPMEXX0zFWg8YGMQ;
+Lcom/android/server/wm/-$$Lambda$_-mEZ6EASUAbbjgZj87dfvxRN64;
 Lcom/android/server/wm/-$$Lambda$_jL5KNK44AQYPj1d8Hd3FYO0W-M;
 Lcom/android/server/wm/-$$Lambda$cJE-iQ28Rv-ThCcuht9wXeFzPgo;
-Lcom/android/server/wm/-$$Lambda$hBnABSAsqXWvQ0zKwHWE4BZ3Mc0;
-Lcom/android/server/wm/-$$Lambda$hOONSPF2N4ZIr-bSc1utsg8aP-c;
+Lcom/android/server/wm/-$$Lambda$dwJG8BAnLlvKNGuDY9U3-haNY4M;
+Lcom/android/server/wm/-$$Lambda$h-x5kpt7iRsCHGk24gs4Sab2qLw;
+Lcom/android/server/wm/-$$Lambda$h9zRxk6xP2dliCTsIiNVg_lH9kA;
+Lcom/android/server/wm/-$$Lambda$hD1GQddqK6sJaBtwVBGHwmleilc;
 Lcom/android/server/wm/-$$Lambda$hT1kyMEAhvB1-Uxr0DFAlnuU3cQ;
+Lcom/android/server/wm/-$$Lambda$hwQLWout8wOWvnHXCxS5LJZGGvw;
 Lcom/android/server/wm/-$$Lambda$iQxeP_PsHHArcPSFabJ3FXyPKNc;
 Lcom/android/server/wm/-$$Lambda$ibmQVLjaQW2x74Wk8TcE0Og2MJM;
-Lcom/android/server/wm/-$$Lambda$p4YgPONtKWpvUwa_nwQPB8_Za6I;
+Lcom/android/server/wm/-$$Lambda$j9nJq2XXOKyN4f0dfDaTjqmQRvg;
+Lcom/android/server/wm/-$$Lambda$ju_KnYxEFekr6LzoWamCeaO5FHQ;
+Lcom/android/server/wm/-$$Lambda$kMHOkFJdJNCG8WGqd9dfu58tyGo;
+Lcom/android/server/wm/-$$Lambda$oZvG727evJMxIwK1im7QJjcltfo;
 Lcom/android/server/wm/-$$Lambda$pAuPvwUqsKCejIrAPrx0ARZSqeY;
-Lcom/android/server/wm/-$$Lambda$pOh7At8PXGw9JWVkfdjoNb7hsIg;
+Lcom/android/server/wm/-$$Lambda$qMFJUmfG50ZSjk7Tac67xBia0d4;
 Lcom/android/server/wm/-$$Lambda$swA_sUfSJdP8eC8AA9Iby3-SuOY;
+Lcom/android/server/wm/-$$Lambda$uwO6wQlqU3CG7OTdH7NBCKnHs64;
+Lcom/android/server/wm/-$$Lambda$vhwCX-wzYksBgFM46tASKUCeQRc;
+Lcom/android/server/wm/-$$Lambda$vyte-9pNBd6bQOP_6QpzB-cV8EM;
+Lcom/android/server/wm/-$$Lambda$x6Ib5GIrsWZg48HsPUVGxKBQJS4;
 Lcom/android/server/wm/-$$Lambda$yACUZqn1Ak-GL14-Nu3kHUSaLX0;
-Lcom/android/server/wm/-$$Lambda$yIIsPVyXvnU3Rv8mcliit-gIpSs;
 Lcom/android/server/wm/-$$Lambda$yVRF8YoeNdTa8GR1wDStVsHu8xM;
+Lcom/android/server/wm/-$$Lambda$z5j5fiv3cZuY5AODkt3H3rhKimk;
+Lcom/android/server/wm/-$$Lambda$zP5AObb0-v-Zzwr-v8NXOg4Yt1c;
+Lcom/android/server/wm/-$$Lambda$zuO3rEvETpKsuJLTTdIHB2ijeho;
 Lcom/android/server/wm/-$$Lambda$zwLNi4Hz7werGBGptK8eYRpBWpw;
-Lcom/android/server/wm/ActivityDisplay;
+Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver$MyHandler;
+Lcom/android/server/wm/AccessibilityController$WindowsForAccessibilityObserver;
+Lcom/android/server/wm/AccessibilityController;
 Lcom/android/server/wm/ActivityMetricsLaunchObserver;
 Lcom/android/server/wm/ActivityMetricsLaunchObserverRegistry;
-Lcom/android/server/wm/ActivityMetricsLogger$H;
-Lcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;
+Lcom/android/server/wm/ActivityMetricsLogger$1;
+Lcom/android/server/wm/ActivityMetricsLogger$LaunchingState;
+Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfo;
+Lcom/android/server/wm/ActivityMetricsLogger$TransitionInfoSnapshot;
 Lcom/android/server/wm/ActivityMetricsLogger;
+Lcom/android/server/wm/ActivityRecord$1;
+Lcom/android/server/wm/ActivityRecord$2;
+Lcom/android/server/wm/ActivityRecord$3;
+Lcom/android/server/wm/ActivityRecord$4;
+Lcom/android/server/wm/ActivityRecord$5;
+Lcom/android/server/wm/ActivityRecord$AddStartingWindow;
+Lcom/android/server/wm/ActivityRecord$AppSaturationInfo;
+Lcom/android/server/wm/ActivityRecord$CompatDisplayInsets;
 Lcom/android/server/wm/ActivityRecord$Token;
 Lcom/android/server/wm/ActivityRecord;
+Lcom/android/server/wm/ActivityResult;
+Lcom/android/server/wm/ActivityServiceConnectionsHolder;
 Lcom/android/server/wm/ActivityStack$1;
 Lcom/android/server/wm/ActivityStack$ActivityStackHandler;
 Lcom/android/server/wm/ActivityStack$ActivityState;
+Lcom/android/server/wm/ActivityStack$CheckBehindFullscreenActivityHelper;
+Lcom/android/server/wm/ActivityStack$EnsureVisibleActivitiesConfigHelper;
+Lcom/android/server/wm/ActivityStack$RemoveHistoryRecordsForApp;
 Lcom/android/server/wm/ActivityStack;
+Lcom/android/server/wm/ActivityStackSupervisor$1;
 Lcom/android/server/wm/ActivityStackSupervisor$ActivityStackSupervisorHandler;
+Lcom/android/server/wm/ActivityStackSupervisor$MoveTaskToFullscreenHelper;
+Lcom/android/server/wm/ActivityStackSupervisor$PendingActivityLaunch;
+Lcom/android/server/wm/ActivityStackSupervisor$WaitInfo;
 Lcom/android/server/wm/ActivityStackSupervisor;
 Lcom/android/server/wm/ActivityStartController$StartHandler;
 Lcom/android/server/wm/ActivityStartController;
@@ -20607,74 +45153,135 @@
 Lcom/android/server/wm/ActivityStarter$Factory;
 Lcom/android/server/wm/ActivityStarter$Request;
 Lcom/android/server/wm/ActivityStarter;
+Lcom/android/server/wm/ActivityTaskManagerInternal$ActivityTokens;
 Lcom/android/server/wm/ActivityTaskManagerInternal$ScreenObserver;
 Lcom/android/server/wm/ActivityTaskManagerInternal$SleepToken;
 Lcom/android/server/wm/ActivityTaskManagerInternal;
+Lcom/android/server/wm/ActivityTaskManagerService$1;
+Lcom/android/server/wm/ActivityTaskManagerService$2;
 Lcom/android/server/wm/ActivityTaskManagerService$FontScaleSettingObserver;
 Lcom/android/server/wm/ActivityTaskManagerService$H;
 Lcom/android/server/wm/ActivityTaskManagerService$Lifecycle;
 Lcom/android/server/wm/ActivityTaskManagerService$LocalService;
+Lcom/android/server/wm/ActivityTaskManagerService$PendingAssistExtras;
 Lcom/android/server/wm/ActivityTaskManagerService$UiHandler;
 Lcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;
 Lcom/android/server/wm/ActivityTaskManagerService;
-Lcom/android/server/wm/AnimatingAppWindowTokenRegistry;
+Lcom/android/server/wm/AlertWindowNotification;
+Lcom/android/server/wm/AnimatingActivityRegistry;
 Lcom/android/server/wm/AnimationAdapter;
-Lcom/android/server/wm/AppTokenList;
+Lcom/android/server/wm/AppTaskImpl;
 Lcom/android/server/wm/AppTransition$1;
 Lcom/android/server/wm/AppTransition$2;
+Lcom/android/server/wm/AppTransition$3;
 Lcom/android/server/wm/AppTransition;
 Lcom/android/server/wm/AppTransitionController;
 Lcom/android/server/wm/AppWarnings$ConfigHandler;
 Lcom/android/server/wm/AppWarnings$UiHandler;
 Lcom/android/server/wm/AppWarnings;
-Lcom/android/server/wm/AppWindowToken$1;
-Lcom/android/server/wm/AppWindowToken;
+Lcom/android/server/wm/BarController$1;
 Lcom/android/server/wm/BarController$BarHandler;
 Lcom/android/server/wm/BarController$OnBarVisibilityChangedListener;
 Lcom/android/server/wm/BarController;
+Lcom/android/server/wm/BlackFrame;
+Lcom/android/server/wm/BoundsAnimationController$1;
 Lcom/android/server/wm/BoundsAnimationController$AppTransitionNotifier;
+Lcom/android/server/wm/BoundsAnimationController$BoundsAnimator;
 Lcom/android/server/wm/BoundsAnimationController;
 Lcom/android/server/wm/BoundsAnimationTarget;
 Lcom/android/server/wm/ClientLifecycleManager;
 Lcom/android/server/wm/CompatModePackages$CompatHandler;
 Lcom/android/server/wm/CompatModePackages;
+Lcom/android/server/wm/ConfigurationContainer$RemoteToken;
 Lcom/android/server/wm/ConfigurationContainer;
 Lcom/android/server/wm/ConfigurationContainerListener;
+Lcom/android/server/wm/DeprecatedTargetSdkVersionDialog;
+Lcom/android/server/wm/Dimmer$AlphaAnimationSpec;
+Lcom/android/server/wm/Dimmer$DimAnimatable;
+Lcom/android/server/wm/Dimmer$DimState;
 Lcom/android/server/wm/Dimmer$SurfaceAnimatorStarter;
 Lcom/android/server/wm/Dimmer;
+Lcom/android/server/wm/DisplayArea$1;
+Lcom/android/server/wm/DisplayArea$Root;
+Lcom/android/server/wm/DisplayArea$Tokens;
+Lcom/android/server/wm/DisplayArea$Type;
+Lcom/android/server/wm/DisplayArea;
+Lcom/android/server/wm/DisplayAreaPolicy$1;
+Lcom/android/server/wm/DisplayAreaPolicy$Default;
+Lcom/android/server/wm/DisplayAreaPolicy;
+Lcom/android/server/wm/DisplayContent$1;
 Lcom/android/server/wm/DisplayContent$AboveAppWindowContainers;
 Lcom/android/server/wm/DisplayContent$ApplySurfaceChangesTransactionState;
 Lcom/android/server/wm/DisplayContent$DisplayChildWindowContainer;
+Lcom/android/server/wm/DisplayContent$ImeContainer;
 Lcom/android/server/wm/DisplayContent$NonAppWindowContainers;
-Lcom/android/server/wm/DisplayContent$NonMagnifiableWindowContainers;
+Lcom/android/server/wm/DisplayContent$OnStackOrderChangedListener;
+Lcom/android/server/wm/DisplayContent$RemoteInsetsControlTarget;
+Lcom/android/server/wm/DisplayContent$TaskContainers;
 Lcom/android/server/wm/DisplayContent$TaskForResizePointSearchResult;
 Lcom/android/server/wm/DisplayContent$TaskStackContainers;
+Lcom/android/server/wm/DisplayContent$WindowContainers;
 Lcom/android/server/wm/DisplayContent;
 Lcom/android/server/wm/DisplayFrames;
 Lcom/android/server/wm/DisplayPolicy$1;
 Lcom/android/server/wm/DisplayPolicy$2;
 Lcom/android/server/wm/DisplayPolicy$3;
 Lcom/android/server/wm/DisplayPolicy$4;
+Lcom/android/server/wm/DisplayPolicy$HideNavInputEventReceiver;
 Lcom/android/server/wm/DisplayPolicy$PolicyHandler;
 Lcom/android/server/wm/DisplayPolicy;
+Lcom/android/server/wm/DisplayRotation$1;
+Lcom/android/server/wm/DisplayRotation$2;
 Lcom/android/server/wm/DisplayRotation$OrientationListener$UpdateRunnable;
 Lcom/android/server/wm/DisplayRotation$OrientationListener;
+Lcom/android/server/wm/DisplayRotation$RotationAnimationPair;
 Lcom/android/server/wm/DisplayRotation$SettingsObserver;
 Lcom/android/server/wm/DisplayRotation;
+Lcom/android/server/wm/DisplayWindowListenerController;
+Lcom/android/server/wm/DisplayWindowSettings$1;
+Lcom/android/server/wm/DisplayWindowSettings$AtomicFileStorage;
 Lcom/android/server/wm/DisplayWindowSettings$Entry;
+Lcom/android/server/wm/DisplayWindowSettings$SettingPersister;
 Lcom/android/server/wm/DisplayWindowSettings;
 Lcom/android/server/wm/DockedStackDividerController;
 Lcom/android/server/wm/DragDropController$1;
 Lcom/android/server/wm/DragDropController$DragHandler;
 Lcom/android/server/wm/DragDropController;
+Lcom/android/server/wm/DragInputEventReceiver;
+Lcom/android/server/wm/DragResizeMode;
+Lcom/android/server/wm/DragState$InputInterceptor;
+Lcom/android/server/wm/DragState;
+Lcom/android/server/wm/EmbeddedWindowController$EmbeddedWindow;
+Lcom/android/server/wm/EmbeddedWindowController;
+Lcom/android/server/wm/EmulatorDisplayOverlay;
+Lcom/android/server/wm/EnsureActivitiesVisibleHelper;
+Lcom/android/server/wm/EventLogTags;
+Lcom/android/server/wm/FactoryErrorDialog;
+Lcom/android/server/wm/HighRefreshRateBlacklist$1;
+Lcom/android/server/wm/HighRefreshRateBlacklist$OnPropertiesChangedListener;
+Lcom/android/server/wm/HighRefreshRateBlacklist;
+Lcom/android/server/wm/ImeInsetsSourceProvider;
 Lcom/android/server/wm/ImmersiveModeConfirmation$1;
+Lcom/android/server/wm/ImmersiveModeConfirmation$ClingWindowView;
 Lcom/android/server/wm/ImmersiveModeConfirmation$H;
 Lcom/android/server/wm/ImmersiveModeConfirmation;
 Lcom/android/server/wm/InputConsumerImpl;
+Lcom/android/server/wm/InputManagerCallback$1;
 Lcom/android/server/wm/InputManagerCallback;
 Lcom/android/server/wm/InputMonitor$1;
+Lcom/android/server/wm/InputMonitor$EventReceiverInputConsumer;
 Lcom/android/server/wm/InputMonitor$UpdateInputForAllWindowsConsumer;
+Lcom/android/server/wm/InputMonitor$UpdateInputWindows;
 Lcom/android/server/wm/InputMonitor;
+Lcom/android/server/wm/InsetsControlTarget;
+Lcom/android/server/wm/InsetsPolicy$1;
+Lcom/android/server/wm/InsetsPolicy$BarWindow;
+Lcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener$InsetsPolicyAnimationControlCallbacks;
+Lcom/android/server/wm/InsetsPolicy$InsetsPolicyAnimationControlListener;
+Lcom/android/server/wm/InsetsPolicy$TransientControlTarget;
+Lcom/android/server/wm/InsetsPolicy;
+Lcom/android/server/wm/InsetsSourceProvider$1;
+Lcom/android/server/wm/InsetsSourceProvider$ControlAdapter;
 Lcom/android/server/wm/InsetsSourceProvider;
 Lcom/android/server/wm/InsetsStateController;
 Lcom/android/server/wm/KeyguardController$KeyguardDisplayState;
@@ -20687,41 +45294,73 @@
 Lcom/android/server/wm/LaunchParamsController$LaunchParams;
 Lcom/android/server/wm/LaunchParamsController$LaunchParamsModifier;
 Lcom/android/server/wm/LaunchParamsController;
+Lcom/android/server/wm/LaunchParamsPersister$1;
+Lcom/android/server/wm/LaunchParamsPersister$CleanUpComponentQueueItem;
 Lcom/android/server/wm/LaunchParamsPersister$LaunchParamsWriteQueueItem;
 Lcom/android/server/wm/LaunchParamsPersister$PackageListObserver;
 Lcom/android/server/wm/LaunchParamsPersister$PersistableLaunchParams;
 Lcom/android/server/wm/LaunchParamsPersister;
+Lcom/android/server/wm/Letterbox$InputInterceptor;
+Lcom/android/server/wm/Letterbox$LetterboxSurface;
+Lcom/android/server/wm/Letterbox;
 Lcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;
 Lcom/android/server/wm/LocalAnimationAdapter;
+Lcom/android/server/wm/LockTaskController$1;
 Lcom/android/server/wm/LockTaskController$LockTaskToken;
 Lcom/android/server/wm/LockTaskController;
 Lcom/android/server/wm/MirrorActiveUids;
-Lcom/android/server/wm/NavigationBarExperiments;
 Lcom/android/server/wm/PendingRemoteAnimationRegistry$Entry;
 Lcom/android/server/wm/PendingRemoteAnimationRegistry;
+Lcom/android/server/wm/PersisterQueue$1;
 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/PinnedStackController$1;
 Lcom/android/server/wm/PinnedStackController$PinnedStackControllerCallback;
 Lcom/android/server/wm/PinnedStackController$PinnedStackListenerDeathHandler;
 Lcom/android/server/wm/PinnedStackController;
 Lcom/android/server/wm/PointerEventDispatcher;
+Lcom/android/server/wm/PolicyControl$Filter;
 Lcom/android/server/wm/PolicyControl;
+Lcom/android/server/wm/ProtoLogGroup;
 Lcom/android/server/wm/RecentTasks$1;
 Lcom/android/server/wm/RecentTasks$Callbacks;
 Lcom/android/server/wm/RecentTasks;
+Lcom/android/server/wm/RecentsAnimation;
+Lcom/android/server/wm/RecentsAnimationController$1;
+Lcom/android/server/wm/RecentsAnimationController$2;
 Lcom/android/server/wm/RecentsAnimationController$RecentsAnimationCallbacks;
+Lcom/android/server/wm/RecentsAnimationController$TaskAnimationAdapter;
+Lcom/android/server/wm/RecentsAnimationController;
+Lcom/android/server/wm/RefreshRatePolicy;
+Lcom/android/server/wm/RemoteAnimationController$FinishedCallback;
+Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;
+Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;
+Lcom/android/server/wm/RemoteAnimationController;
+Lcom/android/server/wm/ResetTargetTaskHelper;
 Lcom/android/server/wm/RootActivityContainer$FindTaskResult;
+Lcom/android/server/wm/RootActivityContainer$FinishDisabledPackageActivitiesHelper;
 Lcom/android/server/wm/RootActivityContainer$SleepTokenImpl;
 Lcom/android/server/wm/RootActivityContainer;
+Lcom/android/server/wm/RootWindowContainer$1;
+Lcom/android/server/wm/RootWindowContainer$FindTaskResult;
+Lcom/android/server/wm/RootWindowContainer$FinishDisabledPackageActivitiesHelper;
 Lcom/android/server/wm/RootWindowContainer$MyHandler;
+Lcom/android/server/wm/RootWindowContainer$SleepTokenImpl;
 Lcom/android/server/wm/RootWindowContainer;
 Lcom/android/server/wm/RunningTasks;
 Lcom/android/server/wm/SafeActivityOptions;
+Lcom/android/server/wm/ScreenRotationAnimation;
+Lcom/android/server/wm/SeamlessRotator;
 Lcom/android/server/wm/Session;
+Lcom/android/server/wm/ShellRoot;
+Lcom/android/server/wm/SnapshotStartingData;
+Lcom/android/server/wm/SplashScreenStartingData;
+Lcom/android/server/wm/StartingData;
 Lcom/android/server/wm/StatusBarController$1;
 Lcom/android/server/wm/StatusBarController;
+Lcom/android/server/wm/StrictModeFlash;
 Lcom/android/server/wm/SurfaceAnimationRunner$1;
 Lcom/android/server/wm/SurfaceAnimationRunner$AnimatorFactory;
 Lcom/android/server/wm/SurfaceAnimationRunner$RunningAnimation;
@@ -20731,55 +45370,79 @@
 Lcom/android/server/wm/SurfaceAnimator$Animatable;
 Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
 Lcom/android/server/wm/SurfaceAnimator;
-Lcom/android/server/wm/SurfaceBuilderFactory;
-Lcom/android/server/wm/SurfaceFactory;
 Lcom/android/server/wm/SystemGesturesPointerEventListener$1;
 Lcom/android/server/wm/SystemGesturesPointerEventListener$Callbacks;
 Lcom/android/server/wm/SystemGesturesPointerEventListener$FlingGestureDetector;
 Lcom/android/server/wm/SystemGesturesPointerEventListener;
+Lcom/android/server/wm/Task$1;
+Lcom/android/server/wm/Task$FindRootHelper;
+Lcom/android/server/wm/Task$TaskActivitiesReport;
+Lcom/android/server/wm/Task$TaskFactory;
+Lcom/android/server/wm/Task$TaskToken;
 Lcom/android/server/wm/Task;
 Lcom/android/server/wm/TaskChangeNotificationController$MainHandler;
 Lcom/android/server/wm/TaskChangeNotificationController$TaskStackConsumer;
 Lcom/android/server/wm/TaskChangeNotificationController;
 Lcom/android/server/wm/TaskLaunchParamsModifier;
+Lcom/android/server/wm/TaskOrganizerController$DeathRecipient;
+Lcom/android/server/wm/TaskOrganizerController$TaskOrganizerState;
+Lcom/android/server/wm/TaskOrganizerController;
+Lcom/android/server/wm/TaskPersister$1;
+Lcom/android/server/wm/TaskPersister$ImageWriteQueueItem;
+Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;
 Lcom/android/server/wm/TaskPersister;
+Lcom/android/server/wm/TaskPositioner;
 Lcom/android/server/wm/TaskPositioningController;
-Lcom/android/server/wm/TaskRecord$TaskActivitiesReport;
-Lcom/android/server/wm/TaskRecord$TaskRecordFactory;
-Lcom/android/server/wm/TaskRecord;
+Lcom/android/server/wm/TaskSnapshotCache$CacheEntry;
 Lcom/android/server/wm/TaskSnapshotCache;
 Lcom/android/server/wm/TaskSnapshotController;
 Lcom/android/server/wm/TaskSnapshotLoader;
 Lcom/android/server/wm/TaskSnapshotPersister$1;
+Lcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;
 Lcom/android/server/wm/TaskSnapshotPersister$DirectoryResolver;
 Lcom/android/server/wm/TaskSnapshotPersister$RemoveObsoleteFilesQueueItem;
+Lcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;
 Lcom/android/server/wm/TaskSnapshotPersister$WriteQueueItem;
 Lcom/android/server/wm/TaskSnapshotPersister;
-Lcom/android/server/wm/TaskStack;
+Lcom/android/server/wm/TaskSnapshotSurface$1;
+Lcom/android/server/wm/TaskSnapshotSurface$SystemBarBackgroundPainter;
+Lcom/android/server/wm/TaskSnapshotSurface$Window;
+Lcom/android/server/wm/TaskSnapshotSurface;
 Lcom/android/server/wm/TaskTapPointerEventListener;
-Lcom/android/server/wm/TransactionFactory;
+Lcom/android/server/wm/TaskTile;
 Lcom/android/server/wm/UnknownAppVisibilityController;
+Lcom/android/server/wm/UnsupportedCompileSdkDialog;
+Lcom/android/server/wm/UnsupportedDisplaySizeDialog;
+Lcom/android/server/wm/ViewServer;
 Lcom/android/server/wm/VrController$1;
 Lcom/android/server/wm/VrController;
+Lcom/android/server/wm/WallpaperAnimationAdapter;
+Lcom/android/server/wm/WallpaperController$1;
 Lcom/android/server/wm/WallpaperController$FindWallpaperTargetResult;
 Lcom/android/server/wm/WallpaperController;
 Lcom/android/server/wm/WallpaperVisibilityListeners;
 Lcom/android/server/wm/WallpaperWindowToken;
-Lcom/android/server/wm/WindowAnimationSpec$TmpValues;
+Lcom/android/server/wm/Watermark;
 Lcom/android/server/wm/WindowAnimationSpec;
+Lcom/android/server/wm/WindowAnimator$1;
 Lcom/android/server/wm/WindowAnimator$DisplayContentsAnimator;
 Lcom/android/server/wm/WindowAnimator;
+Lcom/android/server/wm/WindowChangeAnimationSpec;
+Lcom/android/server/wm/WindowContainer$1;
 Lcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;
+Lcom/android/server/wm/WindowContainer$PreAssignChildLayersCallback;
+Lcom/android/server/wm/WindowContainer$RemoteToken;
 Lcom/android/server/wm/WindowContainer;
-Lcom/android/server/wm/WindowContainerController;
-Lcom/android/server/wm/WindowContainerListener;
+Lcom/android/server/wm/WindowContainerThumbnail;
 Lcom/android/server/wm/WindowFrames;
-Lcom/android/server/wm/WindowHashMap;
 Lcom/android/server/wm/WindowList;
+Lcom/android/server/wm/WindowManagerConstants;
 Lcom/android/server/wm/WindowManagerGlobalLock;
 Lcom/android/server/wm/WindowManagerInternal$AppTransitionListener;
 Lcom/android/server/wm/WindowManagerInternal$IDragDropCallback;
+Lcom/android/server/wm/WindowManagerInternal$MagnificationCallbacks;
 Lcom/android/server/wm/WindowManagerInternal$OnHardKeyboardStatusChangeListener;
+Lcom/android/server/wm/WindowManagerInternal$WindowsForAccessibilityCallback;
 Lcom/android/server/wm/WindowManagerInternal;
 Lcom/android/server/wm/WindowManagerService$10;
 Lcom/android/server/wm/WindowManagerService$1;
@@ -20790,566 +45453,91 @@
 Lcom/android/server/wm/WindowManagerService$6;
 Lcom/android/server/wm/WindowManagerService$7;
 Lcom/android/server/wm/WindowManagerService$8;
+Lcom/android/server/wm/WindowManagerService$9;
 Lcom/android/server/wm/WindowManagerService$AppFreezeListener;
 Lcom/android/server/wm/WindowManagerService$H;
 Lcom/android/server/wm/WindowManagerService$LocalService;
 Lcom/android/server/wm/WindowManagerService$MousePositionTracker;
 Lcom/android/server/wm/WindowManagerService$RotationWatcher;
 Lcom/android/server/wm/WindowManagerService$SettingsObserver;
+Lcom/android/server/wm/WindowManagerService$WindowChangeListener;
 Lcom/android/server/wm/WindowManagerService;
+Lcom/android/server/wm/WindowManagerShellCommand;
 Lcom/android/server/wm/WindowManagerThreadPriorityBooster;
 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$1;
 Lcom/android/server/wm/WindowState$2;
+Lcom/android/server/wm/WindowState$3;
+Lcom/android/server/wm/WindowState$DeadWindowEventReceiver;
 Lcom/android/server/wm/WindowState$DeathRecipient;
+Lcom/android/server/wm/WindowState$MoveAnimationSpec;
 Lcom/android/server/wm/WindowState$PowerManagerWrapper;
 Lcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;
 Lcom/android/server/wm/WindowState$WindowId;
 Lcom/android/server/wm/WindowState;
 Lcom/android/server/wm/WindowStateAnimator;
 Lcom/android/server/wm/WindowSurfaceController;
+Lcom/android/server/wm/WindowSurfacePlacer$1;
+Lcom/android/server/wm/WindowSurfacePlacer$Traverser;
 Lcom/android/server/wm/WindowSurfacePlacer;
 Lcom/android/server/wm/WindowToken;
-Lcom/android/server/wm/WindowTraceBuffer;
 Lcom/android/server/wm/WindowTracing;
+Lcom/android/server/wm/animation/ClipRectLRAnimation;
+Lcom/android/server/wm/animation/ClipRectTBAnimation;
+Lcom/android/server/wm/animation/CurvedTranslateAnimation;
 Lcom/android/server/wm/utils/CoordinateTransforms;
+Lcom/android/server/wm/utils/DeviceConfigInterface$1;
+Lcom/android/server/wm/utils/DeviceConfigInterface;
 Lcom/android/server/wm/utils/DisplayRotationUtil;
 Lcom/android/server/wm/utils/InsetUtils;
+Lcom/android/server/wm/utils/RegionUtils;
 Lcom/android/server/wm/utils/RotationCache$RotationDependentComputation;
 Lcom/android/server/wm/utils/RotationCache;
 Lcom/android/server/wm/utils/WmDisplayCutout;
 Lcom/android/timezone/distro/DistroException;
+Lcom/android/timezone/distro/DistroVersion;
+Lcom/android/timezone/distro/FileUtils;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$6ikxM-3KospNGDidAY7yA-rECHw;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$B9wq4q5y7qahY6TuLMO_s8nPIwY;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$J1AHa-Qs75WQr3stjbN97THbudE;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$bprgjb2FWBxwWDJr-Q4ViVP0aJc;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$elqG7IabJdUOCjFWiPV8vgrXnVI;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$qed0q0aplGsIh0O7dSm6JWk8wZI;
+Lcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$miQO-RJhHA7C1W4BujwCS9blXFc;
+Lcom/google/android/startop/iorap/AppIntentEvent;
+Lcom/google/android/startop/iorap/AppLaunchEvent$1;
+Lcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchCancelled;
+Lcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchFinished;
+Lcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunched;
+Lcom/google/android/startop/iorap/AppLaunchEvent$ActivityRecordProtoParcelable;
+Lcom/google/android/startop/iorap/AppLaunchEvent$BaseWithActivityRecordData;
+Lcom/google/android/startop/iorap/AppLaunchEvent$IntentFailed;
+Lcom/google/android/startop/iorap/AppLaunchEvent$IntentProtoParcelable;
+Lcom/google/android/startop/iorap/AppLaunchEvent$IntentStarted;
+Lcom/google/android/startop/iorap/AppLaunchEvent$ReportFullyDrawn;
+Lcom/google/android/startop/iorap/AppLaunchEvent;
+Lcom/google/android/startop/iorap/EventSequenceValidator$State;
+Lcom/google/android/startop/iorap/EventSequenceValidator;
+Lcom/google/android/startop/iorap/IIorap$Stub$Proxy;
+Lcom/google/android/startop/iorap/IIorap$Stub;
+Lcom/google/android/startop/iorap/IIorap;
+Lcom/google/android/startop/iorap/ITaskListener$Stub$Proxy;
+Lcom/google/android/startop/iorap/ITaskListener$Stub;
+Lcom/google/android/startop/iorap/ITaskListener;
+Lcom/google/android/startop/iorap/IorapForwardingService$1;
 Lcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;
 Lcom/google/android/startop/iorap/IorapForwardingService$BinderConnectionHandler;
+Lcom/google/android/startop/iorap/IorapForwardingService$IorapdJobService;
+Lcom/google/android/startop/iorap/IorapForwardingService$RemoteRunnable;
+Lcom/google/android/startop/iorap/IorapForwardingService$RemoteTaskListener;
 Lcom/google/android/startop/iorap/IorapForwardingService;
-HPLandroid/hardware/health/V1_0/HealthInfo;-><init>()V
-HPLandroid/hardware/health/V2_0/DiskStats;-><init>()V
-HPLcom/android/server/-$$Lambda$GnssManagerService$a17GVVAgEci0VYD4EMvKwuPLhdQ;->onUidImportance(II)V
-HPLcom/android/server/-$$Lambda$GnssManagerService$mZAgy7PA5q3tB1aq7tHsX4xM14E;->run()V
-HPLcom/android/server/-$$Lambda$LocationManagerService$GVLGDgL1Vk3AKo-zMjRmo3-OLpQ;->run()V
-HPLcom/android/server/-$$Lambda$LocationManagerService$tHPgS5c0niUhGntiX8gOnWrZpg8;->onUidImportance(II)V
-HPLcom/android/server/accessibility/AccessibilityManagerService$Client;-><init>(Lcom/android/server/accessibility/AccessibilityManagerService;Landroid/view/accessibility/IAccessibilityManagerClient;ILcom/android/server/accessibility/AccessibilityUserState;)V
-HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveCallingUserIdEnforcingPermissionsLocked(I)I
-HPLcom/android/server/am/-$$Lambda$OomAdjuster$OVkqAAacT5-taN3pgDzyZj3Ymvk;->handleMessage(Landroid/os/Message;)Z
-HPLcom/android/server/am/-$$Lambda$ProcessList$vtq7LF5jIHO4t5NE03c8g7BT7Jc;->run()V
-HPLcom/android/server/am/ActivityManagerService$2;->onActivityLaunched([BI)V
-HPLcom/android/server/am/ActivityManagerService$4;->isPackageForFilter(Ljava/lang/String;Landroid/content/IntentFilter;)Z
-HPLcom/android/server/am/ActivityManagerService$4;->newResult(Landroid/content/IntentFilter;II)Ljava/lang/Object;
-HPLcom/android/server/am/ActivityManagerService$PidMap;->put(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->trimApplications(Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Lcom/android/server/am/ProcessRecord;ZLjava/lang/String;)Z
-HPLcom/android/server/am/HostingRecord;->getName()Ljava/lang/String;
-HPLcom/android/server/am/HostingRecord;->getType()Ljava/lang/String;
-HPLcom/android/server/am/OomAdjuster;->setAttachingSchedGroupLocked(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ProcessList;->startProcessLocked(Lcom/android/server/am/HostingRecord;Ljava/lang/String;Lcom/android/server/am/ProcessRecord;I[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;J)Z
-HPLcom/android/server/am/ProcessRecord;->computeOomAdjFromActivitiesIfNecessary(Lcom/android/server/am/OomAdjuster$ComputeOomAdjWindowCallback;IZIIIII)V
-HPLcom/android/server/appop/AppOpsService$FeatureOp;->started(JII)V
-HPLcom/android/server/appop/AppOpsService$FeatureOp;->updateProxyState(JILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/appop/AppOpsService;->noteOperation(IILjava/lang/String;Ljava/lang/String;)I
-HPLcom/android/server/appop/AudioRestrictionManager;->checkAudioOperation(IIILjava/lang/String;)I
-HPLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$4yDhFef-19aMlJ-Y7O6RdjSAvnk;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
-HPLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$qroIh2ewx0BLP-J9XIAX2CaX8J4;-><init>(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;)V
-HPLcom/android/server/appprediction/AppPredictionManagerService$PredictionManagerServiceStub;->runForUserLocked(Ljava/lang/String;Ljava/util/function/Consumer;)V
-HPLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Landroid/service/appprediction/IPredictionService;)V
-HPLcom/android/server/audio/SoundEffectsHelper$SfxHandler;->handleMessage(Landroid/os/Message;)V
-HPLcom/android/server/autofill/AutofillManagerService$AugmentedAutofillState;->injectAugmentedAutofillInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
-HPLcom/android/server/autofill/AutofillManagerService$LocalService;->injectDisableAppInfo(Landroid/content/AutofillOptions;ILjava/lang/String;)V
-HPLcom/android/server/compat/CompatConfig;->getDisabledChanges(Landroid/content/pm/ApplicationInfo;)[J
-HPLcom/android/server/compat/CompatConfig;->get()Lcom/android/server/compat/CompatConfig;
-HPLcom/android/server/compat/PlatformCompat;->resetReporting(Landroid/content/pm/ApplicationInfo;)V
-HPLcom/android/server/contentcapture/ContentCaptureManagerService$GlobalContentCaptureOptions;->getOptions(ILjava/lang/String;)Landroid/content/ContentCaptureOptions;
-HPLcom/android/server/input/InputManagerService;->onPointerDownOutsideFocus(Landroid/os/IBinder;)V
-HPLcom/android/server/input/InputManagerService;->registerInputChannel(Landroid/view/InputChannel;)V
-HPLcom/android/server/inputmethod/InputMethodManagerService;->getActivityViewToScreenMatrixLocked(II)Landroid/graphics/Matrix;
-HPLcom/android/server/media/projection/MediaProjectionManagerService$1;->onForegroundActivitiesChanged(IIZ)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->updateRulesForPowerRestrictionsULInner(II)I
-HPLcom/android/server/pm/permission/PermissionManagerService;->checkSingleUidPermissionInternal(ILjava/lang/String;)Z
-HPLcom/android/server/policy/PermissionPolicyService$Internal;->checkStartActivity(Landroid/content/Intent;ILjava/lang/String;)Z
-HPLcom/android/server/soundtrigger/SoundTriggerHelper;->computeRecognitionRequestedLocked()Z
-HPLcom/android/server/soundtrigger/SoundTriggerHelper;->isRecognitionAllowed()Z
-HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$dQguzfF4tEgBOj3Pr8MpGRN8HT0;->run()V
-HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$u5u_W7qW5cMnzk9Qhp_oReST4Dc;->run()V
-HPLcom/android/server/statusbar/StatusBarManagerService;->setImeWindowStatus(ILandroid/os/IBinder;IIZZ)V
-HPLcom/android/server/usage/UsageStatsService;->reportEventOrAddToQueue(ILandroid/app/usage/UsageEvents$Event;)V
-HPLcom/android/server/usage/UserUsageStatsService;->checkAndGetTimeLocked()J
-HPLcom/android/server/wm/-$$Lambda$1Hjf_Nn5x4aIy9rIBTwVrtrzWFA;->apply(Ljava/lang/Object;)Ljava/lang/Object;
-HPLcom/android/server/wm/-$$Lambda$9vBfnQOmNnsc9WU80IIatZHQGKc;->get()Ljava/lang/Object;
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$BGON-BKR54yaxY8PHFXNV2xpxCM;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$tt99EJHW_Nk5qgU9galJBIm5wXg;->run()V
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$YSVwd546vKWMiMYy7MFzg1qRiio;-><init>(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$YY5kCNb4uWg5W_2lbH3ZOqirP1g;->apply(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/-$$Lambda$DisplayContent$a4EkCBfpZNIl1xfYgm2ktgndF8w;->apply(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/-$$Lambda$DisplayContent$D0QJUvhaQkGgoMtOmjw5foY9F8M;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayContent$eJsj3GR1HdCnOJrZ8_oaLP52jg0;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayContent$SeHNTr4WUVpGmQniHULUi1ST7k8;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayContent$sYPOy6TL-QiWuU_jcEHYn4HeFnQ;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$3MnyIKSHFLqhfUifWEQPNp_-J6A;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$IOyP8YVRG92tn9u1muYWZgBbgc0;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$J8sIwXJvltUaPM3jEGO948Bx9ig;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$LkHee4mchNXMwNt7HLgsMzHofeE;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$QDPgWUhyEOraWnf6a-u4mTBttdw;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$qQY9m_Itua9TDy-Nk3zzDxvjEwE;->run()V
-HPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$QcawcFcJtEX4EhYptq_Vb4j368Y;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$LaunchObserverRegistryImpl$veRn_GhgLZLlOHOJ0ZYT6KcfYqo;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$qMFJUmfG50ZSjk7Tac67xBia0d4;->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/wm/-$$Lambda$RemoteAnimationController$74uuXaM2TqjkzYi0b8LqJdbycxA;-><init>(Lcom/android/server/wm/RemoteAnimationController;[Landroid/view/RemoteAnimationTarget;[Landroid/view/RemoteAnimationTarget;)V
-HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$74uuXaM2TqjkzYi0b8LqJdbycxA;->run()V
-HPLcom/android/server/wm/-$$Lambda$RootWindowContainer$7XcqfZjQLAbjpIyed3iDnVtZro4;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$M9kRDTUpVS03LTqe-QLQz3DnMhk;-><init>(Lcom/android/server/wm/SurfaceAnimator;Lcom/android/server/wm/AnimationAdapter;Ljava/lang/Runnable;)V
-HPLcom/android/server/wm/-$$Lambda$SurfaceAnimator$M9kRDTUpVS03LTqe-QLQz3DnMhk;->run()V
-HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$Kz-Od_gLhLbMtGka4r78W0Gmzgo;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HPLcom/android/server/wm/-$$Lambda$TaskPersister$xdLXwftXa6l84QTg1zpxMnmtQ0g;-><init>(Lcom/android/server/wm/TaskRecord;)V
-HPLcom/android/server/wm/-$$Lambda$uwO6wQlqU3CG7OTdH7NBCKnHs64;->accept(Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$UZl9uqUNteVgplGGEK6TMzf-7zk;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$VY87MmFWaCLMkNa2qHGaPrThyrI;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/ActivityDisplay;->alwaysCreateStack(II)Z
-HPLcom/android/server/wm/ActivityDisplay;->pauseBackStacks(ZLcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityDisplay;->updateDisplayOverrideConfigurationLocked(Landroid/content/res/Configuration;Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/ActivityTaskManagerService$UpdateConfigurationResult;)Z
-HPLcom/android/server/wm/ActivityMetricsLogger;->reset(ZLcom/android/server/wm/ActivityMetricsLogger$WindowingModeTransitionInfo;Ljava/lang/String;J)V
-HPLcom/android/server/wm/ActivityRecord$AddStartingWindow;-><init>(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord$1;)V
-HPLcom/android/server/wm/ActivityRecord$AddStartingWindow;->run()V
-HPLcom/android/server/wm/ActivityRecord$Token;-><init>(Landroid/content/Intent;)V
-HPLcom/android/server/wm/ActivityRecord;->addWindow(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/ActivityRecord;->adjustPinnedStackAndInitChangeTransitionIfNeeded(II)V
-HPLcom/android/server/wm/ActivityRecord;->asActivityRecord()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/ActivityRecord;->checkAppWindowsReadyToShow()V
-HPLcom/android/server/wm/ActivityRecord;->checkCompleteDeferredRemoval()Z
-HPLcom/android/server/wm/ActivityRecord;->clearAnimatingFlags()V
-HPLcom/android/server/wm/ActivityRecord;->commitVisibility(Landroid/view/WindowManager$LayoutParams;ZIZZ)Z
-HPLcom/android/server/wm/ActivityRecord;->computeBounds(Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/ActivityRecord;->containsDismissKeyguardWindow()Z
-HPLcom/android/server/wm/ActivityRecord;->containsShowWhenLockedWindow()Z
-HPLcom/android/server/wm/ActivityRecord;->destroySurfaces(Z)V
-HPLcom/android/server/wm/ActivityRecord;->detachChildren()V
-HPLcom/android/server/wm/ActivityRecord;->fillsParent()Z
-HPLcom/android/server/wm/ActivityRecord;->findMainWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/ActivityRecord;->findMainWindow(Z)Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/ActivityRecord;->forAllWindows(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HPLcom/android/server/wm/ActivityRecord;->getAnimationLeashParent()Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/ActivityRecord;->getDisplayedBounds()Landroid/graphics/Rect;
-HPLcom/android/server/wm/ActivityRecord;->getOrientation(I)I
-HPLcom/android/server/wm/ActivityRecord;->getStartingWindowType(ZZZZZZLandroid/app/ActivityManager$TaskSnapshot;)I
-HPLcom/android/server/wm/ActivityRecord;->getTask()Lcom/android/server/wm/Task;
-HPLcom/android/server/wm/ActivityRecord;->handleAlreadyVisible()V
-HPLcom/android/server/wm/ActivityRecord;->isAppAnimating()Z
-HPLcom/android/server/wm/ActivityRecord;->isClientHidden()Z
-HPLcom/android/server/wm/ActivityRecord;->isFirstChildWindowGreaterThanSecond(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/ActivityRecord;->isResolverOrDelegateActivity()Z
-HPLcom/android/server/wm/ActivityRecord;->isSelfAnimating()Z
-HPLcom/android/server/wm/ActivityRecord;->isVisible()Z
-HPLcom/android/server/wm/ActivityRecord;->isWaitingForTransitionStart()Z
-HPLcom/android/server/wm/ActivityRecord;->layoutLetterbox(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/ActivityRecord;->makeInvisible()V
-HPLcom/android/server/wm/ActivityRecord;->needsZBoost()Z
-HPLcom/android/server/wm/ActivityRecord;->onAnimationLeashCreated(Landroid/view/SurfaceControl$Transaction;Landroid/view/SurfaceControl;)V
-HPLcom/android/server/wm/ActivityRecord;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/ActivityRecord;->onAppTransitionDone()V
-HPLcom/android/server/wm/ActivityRecord;->onDisplayChanged(Lcom/android/server/wm/DisplayContent;)V
-HPLcom/android/server/wm/ActivityRecord;->onParentChanged()V
-HPLcom/android/server/wm/ActivityRecord;->postWindowRemoveStartingWindowCleanup(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/ActivityRecord;->prepareSurfaces()V
-HPLcom/android/server/wm/ActivityRecord;->removeChild(Lcom/android/server/wm/WindowContainer;)V
-HPLcom/android/server/wm/ActivityRecord;->removeStartingWindow()V
-HPLcom/android/server/wm/ActivityRecord;->scheduleAddStartingWindow()V
-HPLcom/android/server/wm/ActivityRecord;->scheduleTopResumedActivityChanged(Z)Z
-HPLcom/android/server/wm/ActivityRecord;->setHidden(Z)V
-HPLcom/android/server/wm/ActivityRecord;->setLayer(Landroid/view/SurfaceControl$Transaction;I)V
-HPLcom/android/server/wm/ActivityRecord;->setVisibility(ZZ)V
-HPLcom/android/server/wm/ActivityRecord;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
-HPLcom/android/server/wm/ActivityRecord;->stopFreezingScreen(ZZ)V
-HPLcom/android/server/wm/ActivityRecord;->stopIfPossible()V
-HPLcom/android/server/wm/ActivityRecord;->transferStartingWindow(Landroid/os/IBinder;)Z
-HPLcom/android/server/wm/ActivityRecord;->updateAllDrawn()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;->updateReportedVisibilityLocked()V
-HPLcom/android/server/wm/ActivityRecord;->windowsAreFocusable()Z
-HPLcom/android/server/wm/ActivityRecord;->writeToProto(Landroid/util/proto/ProtoOutputStream;JI)V
-HPLcom/android/server/wm/ActivityStack;->removeLaunchTickMessages()V
-HPLcom/android/server/wm/ActivityStack;->removeStopTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityStack;->scheduleLaunchTickForActivity(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityStack;->topTask()Lcom/android/server/wm/TaskRecord;
-HPLcom/android/server/wm/ActivityStarter;->startActivity(Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;[Lcom/android/server/wm/ActivityRecord;Z)I
-HPLcom/android/server/wm/ActivityTaskManagerService;->addWindowLayoutReasons(I)V
-HPLcom/android/server/wm/ActivityTaskManagerService;->continueWindowLayout()V
-HPLcom/android/server/wm/ActivityTaskManagerService;->deferWindowLayout()V
-HPLcom/android/server/wm/ActivityTaskManagerService;->getPermissionPolicyInternal()Lcom/android/server/policy/PermissionPolicyInternal;
-HPLcom/android/server/wm/ActivityTaskManagerService;->isCrossUserAllowed(II)Z
-HPLcom/android/server/wm/ActivityTaskManagerService;->startProcessAsync(Lcom/android/server/wm/ActivityRecord;ZZLjava/lang/String;)V
-HPLcom/android/server/wm/AppTransitionController;->findAnimLayoutParamsToken(ILandroid/util/ArraySet;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/AppTransitionController;->getRemoteAnimationOverride(Lcom/android/server/wm/ActivityRecord;ILandroid/util/ArraySet;)Landroid/view/RemoteAnimationAdapter;
-HPLcom/android/server/wm/AppTransitionController;->getTopApp(Landroid/util/ArraySet;Z)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/AppTransition;->getAnimationStyleResId(Landroid/view/WindowManager$LayoutParams;)I
-HPLcom/android/server/wm/AppTransition;->goodToGo(ILcom/android/server/wm/ActivityRecord;Landroid/util/ArraySet;)I
-HPLcom/android/server/wm/AppTransition;->setLastAppTransition(ILcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ConfigurationContainer;->hasChild()Z
-HPLcom/android/server/wm/ConfigurationContainer;->setWindowingMode(I)V
-HPLcom/android/server/wm/DisplayContent;->computeImeTargetIfNeeded(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/DisplayContent;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-HPLcom/android/server/wm/DisplayContent;->getRotationAnimation()Lcom/android/server/wm/ScreenRotationAnimation;
-HPLcom/android/server/wm/DisplayContent;->performLayoutNoTrace(ZZ)V
-HPLcom/android/server/wm/DisplayContent;->setFocusedApp(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/DisplayContent;->updateDisplayAndOrientation(ILandroid/content/res/Configuration;)Landroid/view/DisplayInfo;
-HPLcom/android/server/wm/DisplayContent;->updateFocusedWindowLocked(IZI)Z
-HPLcom/android/server/wm/DisplayContent;->updateOrientation(Landroid/content/res/Configuration;Landroid/os/IBinder;Z)Landroid/content/res/Configuration;
-HPLcom/android/server/wm/DisplayContent;->updateOrientation()Z
-HPLcom/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;II)V
-HPLcom/android/server/wm/DisplayPolicy;->configureNavBarOpacity(IZZZZZ)I
-HPLcom/android/server/wm/DisplayPolicy;->drawsBarBackground(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/BarController;I)Z
-HPLcom/android/server/wm/DisplayPolicy;->drawsNavigationBarBackground(ILcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayPolicy;->getRefreshRatePolicy()Lcom/android/server/wm/RefreshRatePolicy;
-HPLcom/android/server/wm/DisplayPolicy;->isWindowExcludedFromContent(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayPolicy;->selectAnimation(Lcom/android/server/wm/WindowState;I)I
-HPLcom/android/server/wm/DisplayPolicy;->updateConfigurationAndScreenSizeDependentBehaviors()V
-HPLcom/android/server/wm/DisplayRotation;->getRotation()I
-HPLcom/android/server/wm/DisplayRotation;->markForSeamlessRotation(Lcom/android/server/wm/WindowState;Z)V
-HPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostInsetsDispatched()V
-HPLcom/android/server/wm/ImeInsetsSourceProvider;->onPostLayout()V
-HPLcom/android/server/wm/InputManagerCallback;->notifyFocusChanged(Landroid/os/IBinder;Landroid/os/IBinder;)Z
-HPLcom/android/server/wm/InputMonitor$UpdateInputWindows;->run()V
-HPLcom/android/server/wm/InsetsPolicy;->areSystemBarsForciblyVisible()Z
-HPLcom/android/server/wm/InsetsPolicy;->isNavBarForciblyVisible()Z
-HPLcom/android/server/wm/InsetsPolicy;->isStatusBarForciblyVisible()Z
-HPLcom/android/server/wm/InsetsStateController;->getImeSourceProvider()Lcom/android/server/wm/ImeInsetsSourceProvider;
-HPLcom/android/server/wm/InsetsStateController;->onBarControlTargetChanged(Lcom/android/server/wm/InsetsControlTarget;Lcom/android/server/wm/InsetsControlTarget;)V
-HPLcom/android/server/wm/LaunchObserverRegistryImpl;->onIntentStarted(Landroid/content/Intent;J)V
-HPLcom/android/server/wm/PinnedStackController;->resetReentrySnapFraction(Landroid/content/ComponentName;)V
-HPLcom/android/server/wm/RecentTasks;->isInVisibleRange(Lcom/android/server/wm/TaskRecord;IIZ)Z
-HPLcom/android/server/wm/RefreshRatePolicy;->getPreferredModeId(Lcom/android/server/wm/WindowState;)I
-HPLcom/android/server/wm/RemoteAnimationController$FinishedCallback;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;->getMode()I
-HPLcom/android/server/wm/RemoteAnimationController;->createAppAnimations()[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/RemoteAnimationController;->createWallpaperAnimations()[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/RemoteAnimationController;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/view/RemoteAnimationAdapter;Landroid/os/Handler;)V
-HPLcom/android/server/wm/RemoteAnimationController;->releaseFinishedCallback()V
-HPLcom/android/server/wm/RemoteAnimationController;->setRunningRemoteAnimation(Z)V
-HPLcom/android/server/wm/RemoteAnimationController;->unlinkToDeathOfRunner()V
-HPLcom/android/server/wm/RootActivityContainer;->getLaunchStack(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;ZLcom/android/server/wm/LaunchParamsController$LaunchParams;II)Lcom/android/server/wm/ActivityStack;
-HPLcom/android/server/wm/RootActivityContainer;->getRunningTasks(ILjava/util/List;IIIZZLandroid/util/ArraySet;)V
-HPLcom/android/server/wm/RootWindowContainer;->getActivityRecord(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/Session;->finishDrawing(Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/Session;->reportSystemGestureExclusionChanged(Landroid/view/IWindow;Ljava/util/List;)V
-HPLcom/android/server/wm/StartingData;-><init>(Lcom/android/server/wm/WindowManagerService;)V
-HPLcom/android/server/wm/SurfaceAnimationRunner;->startPendingAnimationsLocked()V
-HPLcom/android/server/wm/SurfaceAnimator$Animatable;->shouldDeferAnimationFinish(Ljava/lang/Runnable;)Z
-HPLcom/android/server/wm/SurfaceAnimator;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/Task;->addChild(Lcom/android/server/wm/ActivityRecord;I)V
-HPLcom/android/server/wm/TaskChangeNotificationController;->notifyTaskListUpdated()V
-HPLcom/android/server/wm/Task;->getTopVisibleActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskLaunchParamsModifier;->canInheritWindowingModeFromSource(Lcom/android/server/wm/ActivityDisplay;Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/Task;->onConfigurationChanged(Landroid/content/res/Configuration;Z)V
-HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;-><init>(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityTaskManagerService;)V
-HPLcom/android/server/wm/Task;->positionChildAt(Lcom/android/server/wm/ActivityRecord;I)V
-HPLcom/android/server/wm/TaskRecord;->computeFullscreenBounds(Landroid/graphics/Rect;Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Rect;I)V
-HPLcom/android/server/wm/TaskRecord;->findRootIndex(Z)I
-HPLcom/android/server/wm/TaskRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/pm/ActivityInfo;Landroid/content/Intent;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Landroid/app/ActivityManager$TaskDescription;)V
-HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyAppResumedFinished(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/UnknownAppVisibilityController;->notifyRelayouted(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->getLeashFinishedCallback()Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->lambda$startWallpaperAnimations$0(JJLjava/util/function/Consumer;Ljava/util/ArrayList;Ljava/util/ArrayList;Lcom/android/server/wm/WallpaperWindowToken;)V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->startAnimation(Landroid/view/SurfaceControl;Landroid/view/SurfaceControl$Transaction;Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;)V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->startWallpaperAnimations(Lcom/android/server/wm/WindowManagerService;JJLjava/util/function/Consumer;Ljava/util/ArrayList;)[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/WindowAnimator;->cancelAnimation()V
-HPLcom/android/server/wm/WindowContainer;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowContainer;->onParentChanged(Lcom/android/server/wm/WindowContainer$PreAssignChildLayersCallback;)V
-HPLcom/android/server/wm/WindowManagerService$LocalService;->isStackVisibleLw(I)Z
-HPLcom/android/server/wm/WindowManagerService;->prepareNoneTransitionForRelaunching(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/WindowManagerService;->prepareWindowReplacementTransition(Lcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/WindowProcessController;->createProfilerInfoIfNeeded()Landroid/app/ProfilerInfo;
-HPLcom/android/server/wm/WindowProcessControllerMap;->put(ILcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/WindowProcessController;->onStartActivity(ILandroid/content/pm/ActivityInfo;)V
-HPLcom/android/server/wm/WindowProcessController;->setLastActivityLaunchTime(J)V
-HPLcom/android/server/wm/WindowState$UpdateReportedVisibilityResults;-><init>()V
-HPLcom/android/server/wm/WindowState;->getLastReportedConfiguration()Landroid/content/res/Configuration;
-HPLcom/android/server/wm/WindowState;->getSurfaceTouchableRegion(Landroid/view/InputWindowHandle;I)I
-HPLcom/android/server/wm/WindowState;->logExclusionRestrictions(I)V
-HPLcom/android/server/wm/WindowState;->onAnimationLeashLost(Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowState;->relayoutVisibleWindow(II)I
-HPLcom/android/server/wm/WindowState;->updateLocationInParentDisplayIfNeeded()V
-HPLcom/android/server/wm/WindowSurfaceController;-><init>(Ljava/lang/String;IIIILcom/android/server/wm/WindowStateAnimator;II)V
-HPLcom/android/server/wm/WindowSurfacePlacer$Traverser;->run()V
-HPLcom/android/server/wm/WindowToken;-><init>(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;IZLcom/android/server/wm/DisplayContent;Z)V
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onActivityLaunched([BI)V
-HPLcom/android/server/accessibility/AccessibilityManagerService;->computeRelevantEventTypesLocked(Lcom/android/server/accessibility/AccessibilityUserState;Lcom/android/server/accessibility/AccessibilityManagerService$Client;)I
-HPLcom/android/server/accessibility/AccessibilitySecurityPolicy;->resolveProfileParentLocked(I)I
-HPLcom/android/server/am/-$$Lambda$ProcessList$vtq7LF5jIHO4t5NE03c8g7BT7Jc;-><init>(Lcom/android/server/am/ProcessList;Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ActivityManagerService$2;->onActivityLaunchFinished([BJ)V
-HPLcom/android/server/am/ActivityManagerService$2;->onIntentStarted(Landroid/content/Intent;J)V
-HPLcom/android/server/am/ActivityManagerService$4;->isPackageForFilter(Ljava/lang/String;Lcom/android/server/am/BroadcastFilter;)Z
-HPLcom/android/server/am/ActivityManagerService$4;->newResult(Lcom/android/server/am/BroadcastFilter;II)Lcom/android/server/am/BroadcastFilter;
-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;->trimApplicationsLocked(Ljava/lang/String;)V
-HPLcom/android/server/am/ProcessList;->lambda$startProcessLocked$0$ProcessList(Lcom/android/server/am/ProcessRecord;Ljava/lang/String;[IIILjava/lang/String;Ljava/lang/String;Ljava/lang/String;J)V
-HPLcom/android/server/am/ProcessRecord;->onStartActivity(IZLjava/lang/String;J)V
-HPLcom/android/server/am/ProcessRecord;->setRunningRemoteAnimation(Z)V
-HPLcom/android/server/am/ProcessRecord;->setStartParams(ILcom/android/server/am/HostingRecord;Ljava/lang/String;J)V
-HPLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Landroid/service/appprediction/IPredictionService;)V
-HPLcom/android/server/audio/SoundEffectsHelper$SfxHandler$1;-><init>(Lcom/android/server/audio/SoundEffectsHelper$SfxHandler;Landroid/os/Message;)V
-HPLcom/android/server/audio/SoundEffectsHelper;->onLoadSoundEffects(Lcom/android/server/audio/SoundEffectsHelper$OnEffectsLoadCompleteHandler;)V
-HPLcom/android/server/autofill/AutofillManagerServiceImpl;->getAppDisabledActivitiesLocked(Ljava/lang/String;)Landroid/util/ArrayMap;
-HPLcom/android/server/compat/CompatChange;->isEnabled(Landroid/content/pm/ApplicationInfo;)Z
-HPLcom/android/server/GnssManagerService;->onForegroundChanged(IZ)V
-HPLcom/android/server/LocationManagerService;->lambda$initializeLocked$4$LocationManagerService(II)V
-HPLcom/android/server/LocationManagerService;->lambda$initializeLocked$5$LocationManagerService(II)V
-HPLcom/android/server/policy/PermissionPolicyService$Internal;->isActionRemovedForCallingPackage(Landroid/content/Intent;ILjava/lang/String;)Z
-HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$dQguzfF4tEgBOj3Pr8MpGRN8HT0;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;ILandroid/os/IBinder;IIZZ)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->lambda$setImeWindowStatus$2$StatusBarManagerService(ILandroid/os/IBinder;IIZZ)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->lambda$updateUiVisibilityLocked$3$StatusBarManagerService(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;Z)V
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$tt99EJHW_Nk5qgU9galJBIm5wXg;-><init>(Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;)V
-HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$dP8qDptNigoqhzVtIudsX5naGu4;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
-HPLcom/android/server/wm/-$$Lambda$RemoteAnimationController$uQS8vaPKQ-E3x_9G8NCxPQmw1fw;-><init>(Lcom/android/server/wm/RemoteAnimationController;)V
-HPLcom/android/server/wm/ActivityRecord;->addToStopping(ZZLjava/lang/String;)V
-HPLcom/android/server/wm/ActivityRecord;->allDrawnStatesConsidered()Z
-HPLcom/android/server/wm/ActivityRecord;->applyAnimationLocked(Landroid/view/WindowManager$LayoutParams;IZZ)Z
-HPLcom/android/server/wm/ActivityRecord;->checkKeyguardFlagsChanged()V
-HPLcom/android/server/wm/ActivityRecord;->lambda$removeStartingWindow$3(Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;)V
-HPLcom/android/server/wm/ActivityRecord;->shouldStartChangeTransition(II)Z
-HPLcom/android/server/wm/ActivityRecord;->transferStartingWindowFromHiddenAboveTokenIfNeeded()V
-HPLcom/android/server/wm/ActivityStack;->scheduleStopTimeoutForActivity(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityStack;->startPausingLocked(ZZLcom/android/server/wm/ActivityRecord;)Z
-HPLcom/android/server/wm/ActivityStackSupervisor;->getRunningTasks()Lcom/android/server/wm/RunningTasks;
-HPLcom/android/server/wm/ActivityStackSupervisor;->getSystemChooserActivity()Landroid/content/ComponentName;
-HPLcom/android/server/wm/ActivityStarter;->handleStartResult(Lcom/android/server/wm/ActivityRecord;I)Lcom/android/server/wm/ActivityStack;
-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;IZLandroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;[Lcom/android/server/wm/ActivityRecord;Z)I
-HPLcom/android/server/wm/ActivityTaskManagerService;->ensureConfigAndVisibilityAfterUpdate(Lcom/android/server/wm/ActivityRecord;I)Z
-HPLcom/android/server/wm/AnimatingActivityRegistry;->endDeferringFinished()V
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/AppTransitionController;->lookForHighestTokenWithFilter(Landroid/util/ArraySet;Landroid/util/ArraySet;Landroid/util/ArraySet;Ljava/util/function/Predicate;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/DisplayContent;->findFocusedWindowIfNeeded(I)Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayContent;->getActivityRecord(Landroid/os/IBinder;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/DisplayContent;->getParentWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayContent;->lambda$new$1$DisplayContent(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$new$2$DisplayContent(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayContent;->lambda$new$3$DisplayContent(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->lambda$updateSystemUiVisibility$20(IILcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/DisplayContent;->logsGestureExclusionRestrictions(Lcom/android/server/wm/WindowState;)Z
-HPLcom/android/server/wm/DisplayPolicy;->getCurrentUserResources()Landroid/content/res/Resources;
-HPLcom/android/server/wm/DisplayPolicy;->getStatusBar()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$3$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$4$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$5$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$6$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$addWindowLw$7$DisplayPolicy(Lcom/android/server/wm/DisplayFrames;Lcom/android/server/wm/WindowState;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$10$DisplayPolicy(IIILandroid/graphics/Rect;Landroid/graphics/Rect;ZLcom/android/server/wm/WindowState;Z)V
-HPLcom/android/server/wm/DisplayRotation;->updateOrientation(IZ)Z
-HPLcom/android/server/wm/DisplayRotation;->updateUserDependentConfiguration(Landroid/content/res/Resources;)V
-HPLcom/android/server/wm/HighRefreshRateBlacklist;->isBlacklisted(Ljava/lang/String;)Z
-HPLcom/android/server/wm/InputManagerCallback;->dispatchPointerCaptureChanged(Landroid/view/IWindow;Z)Z
-HPLcom/android/server/wm/InputManagerCallback;->onPointerDownOutsideFocus(Landroid/os/IBinder;)V
-HPLcom/android/server/wm/InputMonitor;->layoutInputConsumers(II)V
-HPLcom/android/server/wm/InputMonitor;->setFocusedAppLw(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/InsetsStateController;->onControlChanged(ILcom/android/server/wm/InsetsControlTarget;)V
-HPLcom/android/server/wm/LaunchObserverRegistryImpl;->onActivityLaunchFinished([BJ)V
-HPLcom/android/server/wm/RemoteAnimationController$FinishedCallback;->release()V
-HPLcom/android/server/wm/RemoteAnimationController;->lambda$goodToGo$1$RemoteAnimationController([Landroid/view/RemoteAnimationTarget;[Landroid/view/RemoteAnimationTarget;)V
-HPLcom/android/server/wm/RunningTasks;->getTasks(ILjava/util/List;IILjava/util/ArrayList;IZZLandroid/util/ArraySet;)V
-HPLcom/android/server/wm/SplashScreenStartingData;->createStartingSurface(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/policy/WindowManagerPolicy$StartingSurface;
-HPLcom/android/server/wm/SurfaceAnimator;->lambda$getFinishedCallback$0$SurfaceAnimator(Lcom/android/server/wm/AnimationAdapter;Ljava/lang/Runnable;)V
-HPLcom/android/server/wm/Task;->positionChildAt(ILcom/android/server/wm/ActivityRecord;Z)V
-HPLcom/android/server/wm/TaskRecord;->handlesOrientationChangeFromDescendant()Z
-HPLcom/android/server/wm/TaskRecord;-><init>(Lcom/android/server/wm/ActivityTaskManagerService;ILandroid/content/Intent;Landroid/content/Intent;Ljava/lang/String;Ljava/lang/String;Landroid/content/ComponentName;Landroid/content/ComponentName;ZZZIILjava/lang/String;Ljava/util/ArrayList;JZLandroid/app/ActivityManager$TaskDescription;IIIIILjava/lang/String;IZZZIILandroid/content/pm/ActivityInfo;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;)V
-HPLcom/android/server/wm/TaskStack;->getAnimatingActivityRegistry()Lcom/android/server/wm/AnimatingActivityRegistry;
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->startWallpaperAnimations(Lcom/android/server/wm/WindowManagerService;JJLjava/util/function/Consumer;Ljava/util/ArrayList;)[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/WindowContainer$ForAllWindowsConsumerWrapper;-><init>(Lcom/android/server/wm/WindowContainer;Lcom/android/server/wm/WindowContainer$1;)V
-HPLcom/android/server/wm/WindowManagerService;->finishDrawingWindow(Lcom/android/server/wm/Session;Landroid/view/IWindow;Landroid/view/SurfaceControl$Transaction;)V
-HPLcom/android/server/wm/WindowManagerService;->reportSystemGestureExclusionChanged(Lcom/android/server/wm/Session;Landroid/view/IWindow;Ljava/util/List;)V
-HPLcom/android/server/wm/WindowProcessController;->setRunningRemoteAnimation(Z)V
-HPLcom/android/server/wm/WindowProcessController;->shouldSetProfileProc()Z
-HPLcom/android/server/wm/WindowState;->onMergedOverrideConfigurationChanged()V
-HPLcom/android/server/wm/WindowSurfacePlacer;->continueLayout(Z)V
-HPLcom/android/server/wm/WindowSurfacePlacer;->isLayoutDeferred()Z
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onActivityLaunchFinished([BJ)V
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->onIntentStarted(Landroid/content/Intent;J)V
-HPLcom/google/android/startop/iorap/IorapForwardingService;->invokeRemote(Lcom/google/android/startop/iorap/IIorap;Lcom/google/android/startop/iorap/IorapForwardingService$RemoteRunnable;)Z
-HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Ljava/lang/String;ILjava/lang/String;IZ)V
-HPLcom/android/server/am/ProcessList;->startProcessLocked(Ljava/lang/String;Landroid/content/pm/ApplicationInfo;ZILcom/android/server/am/HostingRecord;ZZIZLjava/lang/String;Ljava/lang/String;[Ljava/lang/String;Ljava/lang/Runnable;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/am/ProcessRecord;->updateProcessInfo(ZZZ)V
-HPLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Landroid/service/appprediction/IPredictionService;)V
-HPLcom/android/server/audio/SoundEffectsHelper$SfxHandler$1;->run(Z)V
-HPLcom/android/server/input/InputManagerService$InputDevicesChangedListenerRecord;-><init>(Lcom/android/server/input/InputManagerService;ILandroid/hardware/input/IInputDevicesChangedListener;)V
-HPLcom/android/server/pm/PackageManagerServiceUtils;->enforceShellRestriction(Landroid/os/UserManagerInternal;Ljava/lang/String;II)V
-HPLcom/android/server/statusbar/StatusBarManagerService$1;->setSystemUiVisibility(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;ZLjava/lang/String;)V
-HPLcom/android/server/wm/-$$Lambda$AppTransitionController$o_nkoN7a-ZHaSAgJCQZcboKz9Ig;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/-$$Lambda$AppTransitionController$z5kCoexPNTWFncmRBfeXr6HA2JA;->test(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/-$$Lambda$TaskPersister$8TcnoL7JFvpj8NzBRg91ns5JOBw;-><init>(Lcom/android/server/wm/TaskRecord;)V
-HPLcom/android/server/wm/ActivityRecord;->getAnimationBounds(I)Landroid/graphics/Rect;
-HPLcom/android/server/wm/ActivityRecord;->logStartActivity(ILcom/android/server/wm/TaskRecord;)V
-HPLcom/android/server/wm/ActivityRecord;->shouldAnimate(I)Z
-HPLcom/android/server/wm/ActivityStack;->getRunningTasks(Ljava/util/List;IIIZZLandroid/util/ArraySet;)V
-HPLcom/android/server/wm/ActivityStarter;->computeTargetTask(Lcom/android/server/wm/ActivityRecord;)Lcom/android/server/wm/TaskRecord;
-HPLcom/android/server/wm/ActivityStarter;->deliverToCurrentTopIfNeeded(Lcom/android/server/wm/ActivityStack;)I
-HPLcom/android/server/wm/ActivityStarter;->isAllowedToStart(Lcom/android/server/wm/ActivityRecord;ZLcom/android/server/wm/TaskRecord;)I
-HPLcom/android/server/wm/ActivityStarter;->setInitialState(Lcom/android/server/wm/ActivityRecord;Landroid/app/ActivityOptions;Lcom/android/server/wm/TaskRecord;ZILcom/android/server/wm/ActivityRecord;Landroid/service/voice/IVoiceInteractionSession;Lcom/android/internal/app/IVoiceInteractor;Z)V
-HPLcom/android/server/wm/ActivityStarter;->setNewTask(Lcom/android/server/wm/TaskRecord;)V
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/DisplayRotation;->updateRotationUnchecked(Z)Z
-HPLcom/android/server/wm/RemoteAnimationController;->createRemoteAnimationRecord(Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;
-HPLcom/android/server/wm/RemoteAnimationController;->linkToDeathOfRunner()V
-HPLcom/android/server/wm/RemoteAnimationController;->writeStartDebugStatement()V
-HPLcom/android/server/wm/TaskRecord;->setMinDimensions(Landroid/content/pm/ActivityInfo;)V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->startWallpaperAnimations(Lcom/android/server/wm/WindowManagerService;JJLjava/util/function/Consumer;Ljava/util/ArrayList;)[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/WindowStateAnimator;->finishDrawingLocked(Landroid/view/SurfaceControl$Transaction;)Z
-HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$6ikxM-3KospNGDidAY7yA-rECHw;->run(Lcom/google/android/startop/iorap/IIorap;)V
-HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$B9wq4q5y7qahY6TuLMO_s8nPIwY;->run(Lcom/google/android/startop/iorap/IIorap;)V
-HPLcom/google/android/startop/iorap/-$$Lambda$IorapForwardingService$AppLaunchObserver$J1AHa-Qs75WQr3stjbN97THbudE;->run(Lcom/google/android/startop/iorap/IIorap;)V
-HPLcom/android/server/am/ProcessList;->newProcessRecordLocked(Landroid/content/pm/ApplicationInfo;Ljava/lang/String;ZILcom/android/server/am/HostingRecord;)Lcom/android/server/am/ProcessRecord;
-HPLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$notifyAppTargetEvent$1(Landroid/app/prediction/AppPredictionSessionId;Landroid/app/prediction/AppTargetEvent;Landroid/service/appprediction/IPredictionService;)V
-HPLcom/android/server/audio/SoundEffectsHelper;->onPlaySoundEffect(II)V
-HPLcom/android/server/LocationManagerService;->isThrottlingExemptLocked(Lcom/android/server/location/CallerIdentity;)Z
-HPLcom/android/server/statusbar/StatusBarManagerService;->setSystemUiVisibility(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;ZLjava/lang/String;)V
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->dump(Ljava/io/PrintWriter;Ljava/lang/String;)V
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationRecord;-><init>(Lcom/android/server/wm/RemoteAnimationController;Lcom/android/server/wm/ActivityRecord;Landroid/graphics/Point;Landroid/graphics/Rect;Landroid/graphics/Rect;)V
-HPLcom/android/server/wm/WindowProcessController;->setBoundClientUids(Landroid/util/ArraySet;)V
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onActivityLaunched$2$IorapForwardingService$AppLaunchObserver([BILcom/google/android/startop/iorap/IIorap;)V
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onActivityLaunchFinished$4$IorapForwardingService$AppLaunchObserver([BJLcom/google/android/startop/iorap/IIorap;)V
-HPLcom/google/android/startop/iorap/IorapForwardingService$AppLaunchObserver;->lambda$onIntentStarted$0$IorapForwardingService$AppLaunchObserver(Landroid/content/Intent;JLcom/google/android/startop/iorap/IIorap;)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->updateUiVisibilityLocked(IIIIILandroid/graphics/Rect;Landroid/graphics/Rect;Z)V
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/google/android/startop/iorap/IIorap$Stub$Proxy;->onAppLaunchEvent(Lcom/google/android/startop/iorap/RequestId;Lcom/google/android/startop/iorap/AppLaunchEvent;)V
-HPLcom/google/android/startop/iorap/RequestId;->nextValueForSequence()Lcom/google/android/startop/iorap/RequestId;
-HPLcom/android/server/AlarmManagerService;->decrementAlarmCount(II)V
-HPLcom/android/server/am/ActivityManagerService$4;->newArray(I)[Landroid/content/IntentFilter;
-HPLcom/android/server/am/ActivityManagerService$PidMap;->remove(Lcom/android/server/am/ProcessRecord;)V
-HPLcom/android/server/am/ActivityManagerService;->updateOomAdjLocked(Ljava/lang/String;)V
-HPLcom/android/server/am/ActivityManagerShellCommand$1;-><init>(Lcom/android/server/am/ActivityManagerShellCommand;)V
-HPLcom/android/server/am/ActivityManagerShellCommand;-><init>(Lcom/android/server/am/ActivityManagerService;Z)V
-HPLcom/android/server/am/ActivityManagerShellCommand;->runStartActivity(Ljava/io/PrintWriter;)I
-HPLcom/android/server/am/HostingRecord;-><init>(Ljava/lang/String;Landroid/content/ComponentName;I)V
-HPLcom/android/server/am/PendingIntentController;->registerIntentSenderCancelListener(Landroid/content/IIntentSender;Lcom/android/internal/os/IResultReceiver;)V
-HPLcom/android/server/appprediction/-$$Lambda$AppPredictionManagerService$PredictionManagerServiceStub$vSY20eQq5y5FXrxhhqOTcEmezTs;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
-HPLcom/android/server/appprediction/-$$Lambda$RemoteAppPredictionService$9DCowUTEF8fYuBlWGxOmP5hTAWA;-><init>(Landroid/app/prediction/AppPredictionSessionId;)V
-HPLcom/android/server/appprediction/RemoteAppPredictionService;->lambda$requestPredictionUpdate$6(Landroid/app/prediction/AppPredictionSessionId;Landroid/service/appprediction/IPredictionService;)V
-HPLcom/android/server/autofill/-$$Lambda$AutofillManagerService$1$1-WNu3tTkxodB_LsZ7dGIlvrPN0;->visit(Ljava/lang/Object;)V
-HPLcom/android/server/autofill/ui/-$$Lambda$AutoFillUI$56AC3ykfo4h_e2LSjdkJ3XQn370;-><init>(Lcom/android/server/autofill/ui/AutoFillUI;Lcom/android/server/autofill/ui/AutoFillUI$AutoFillUiCallback;)V
-HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$Enqw46SYVKFK9F2xX4qUcIu5_3I;->run(Landroid/os/IInterface;)V
-HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$eoGnQ2MDLLnW1UBX6wxNE1VBLAk;->run(Landroid/os/IInterface;)V
-HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$VKh1DoMPNSPjPfnVGdsInmxuqzc;->run(Landroid/os/IInterface;)V
-HPLcom/android/server/contentsuggestions/-$$Lambda$RemoteContentSuggestionsService$yUTbcaYlZCYTmagCkNJ3i2VCkY4;->run(Landroid/os/IInterface;)V
-HPLcom/android/server/contentsuggestions/RemoteContentSuggestionsService;->getServiceInterface(Landroid/os/IBinder;)Landroid/os/IInterface;
-HPLcom/android/server/display/AutomaticBrightnessController;->updateAutoBrightness(ZZ)V
-HPLcom/android/server/display/DisplayPowerController$BrightnessReason;->setModifier(I)V
-HPLcom/android/server/display/DisplayPowerController$BrightnessReason;->setReason(I)V
-HPLcom/android/server/display/DisplayPowerController$BrightnessReason;->toString(I)Ljava/lang/String;
-HPLcom/android/server/display/DisplayPowerController$BrightnessReason;->toString()Ljava/lang/String;
-HPLcom/android/server/media/projection/MediaProjectionManagerService$1;->onProcessDied(II)V
-HPLcom/android/server/net/NetworkPolicyManagerService;->removeUidStateUL(I)Z
-HPLcom/android/server/pm/permission/PermissionManagerService;->addOnPermissionsChangeListener(Landroid/permission/IOnPermissionsChangeListener;)V
-HPLcom/android/server/protolog/ProtoLogImpl;->getSingleInstance()Lcom/android/server/protolog/ProtoLogImpl;
-HPLcom/android/server/soundtrigger/SoundTriggerHelper$PowerSaveModeListener;-><init>(Lcom/android/server/soundtrigger/SoundTriggerHelper;)V
-HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$uF0ibEnnXe7Lxunxb98QQLJjgZM;->run()V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setSystemUiState(IIILandroid/graphics/Rect;Landroid/graphics/Rect;Z)V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->systemUiStateEquals(IIILandroid/graphics/Rect;Landroid/graphics/Rect;Z)Z
-HPLcom/android/server/usage/UsageStatsDatabase;->filterStats(Lcom/android/server/usage/IntervalStats;)V
-HPLcom/android/server/VibratorService$VibrationInfo;-><init>(JLandroid/os/VibrationEffect;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;ILjava/lang/String;Ljava/lang/String;)V
-HPLcom/android/server/VibratorService;->getAppOpMode(Lcom/android/server/VibratorService$Vibration;)I
-HPLcom/android/server/VibratorService;->getCurrentIntensityLocked(Lcom/android/server/VibratorService$Vibration;)I
-HPLcom/android/server/VibratorService;->isAllowedToVibrateLocked(Lcom/android/server/VibratorService$Vibration;)Z
-HPLcom/android/server/VibratorService;->vibrate(ILjava/lang/String;Landroid/os/VibrationEffect;Landroid/media/AudioAttributes;Ljava/lang/String;Landroid/os/IBinder;)V
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$g49I60MBbnNkxHlgA-NR7ALwWTQ;->apply(Ljava/lang/Object;)Z
-HPLcom/android/server/wm/-$$Lambda$ActivityRecord$pBc6yUdDV5IrUd9vt6oCz6QzpiE;->accept(Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$BEx3OWenCvYAaV5h_J2ZkZXhEcY;->accept(Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;Ljava/lang/Object;)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$Zbxkj4wIhcDki6VwBh1kWmSmxqM;-><init>(Lcom/android/server/wm/DisplayPolicy;IIILandroid/graphics/Rect;Landroid/graphics/Rect;ZLcom/android/server/wm/WindowState;I[Lcom/android/internal/view/AppearanceRegion;ZZ)V
-HPLcom/android/server/wm/-$$Lambda$DisplayPolicy$Zbxkj4wIhcDki6VwBh1kWmSmxqM;->run()V
-HPLcom/android/server/wm/-$$Lambda$TaskChangeNotificationController$UexNbaqPy0mc3VxTw2coCctHho8;->accept(Landroid/app/ITaskStackListener;Landroid/os/Message;)V
-HPLcom/android/server/wm/ActivityMetricsLogger;->allWindowsDrawn()Z
-HPLcom/android/server/wm/ActivityRecord;->createAnimationBoundsLayer(Landroid/view/SurfaceControl$Transaction;)Landroid/view/SurfaceControl;
-HPLcom/android/server/wm/ActivityRecord;->destroyed(Ljava/lang/String;)V
-HPLcom/android/server/wm/ActivityRecord;->forAllWindowsUnchecked(Lcom/android/internal/util/ToBooleanFunction;Z)Z
-HPLcom/android/server/wm/ActivityRecord;->getTopFullscreenWindow()Lcom/android/server/wm/WindowState;
-HPLcom/android/server/wm/ActivityRecord;->loadAnimation(Landroid/view/WindowManager$LayoutParams;IZZ)Landroid/view/animation/Animation;
-HPLcom/android/server/wm/ActivityRecord;->notifyAppStopped()V
-HPLcom/android/server/wm/ActivityRecord;->onFirstWindowDrawn(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowStateAnimator;)V
-HPLcom/android/server/wm/ActivityRecord;->onRemovedFromDisplay()V
-HPLcom/android/server/wm/ActivityRecord;->removeDeadWindows()V
-HPLcom/android/server/wm/ActivityRecord;->setClientHidden(Z)V
-HPLcom/android/server/wm/ActivityRecord;->stopFreezingScreenLocked(Z)V
-HPLcom/android/server/wm/ActivityStack;->removeTimeoutsForActivity(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/ActivityStarter;->recycleTask(Lcom/android/server/wm/TaskRecord;Lcom/android/server/wm/ActivityRecord;Lcom/android/server/wm/ActivityRecord;[Lcom/android/server/wm/ActivityRecord;)I
-HPLcom/android/server/wm/ActivityTaskManagerService;->getTaskSnapshot(IZZ)Landroid/app/ActivityManager$TaskSnapshot;
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/DisplayContent;->getWindowCornerRadius()F
-HPLcom/android/server/wm/DisplayPolicy;->convertNonDecorInsetsToStableInsets(Landroid/graphics/Rect;I)V
-HPLcom/android/server/wm/DisplayPolicy;->getInsetsPolicy()Lcom/android/server/wm/InsetsPolicy;
-HPLcom/android/server/wm/DisplayPolicy;->updateLightStatusBarAppearanceLw(ILcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState;)I
-HPLcom/android/server/wm/InsetsPolicy;->getInsetsForDispatch(Lcom/android/server/wm/WindowState;)Landroid/view/InsetsState;
-HPLcom/android/server/wm/InsetsPolicy;->isHidden(I)Z
-HPLcom/android/server/wm/InsetsPolicy;->updateBarControlTarget(Lcom/android/server/wm/WindowState;)V
-HPLcom/android/server/wm/Task;->getTopFullscreenActivity()Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskRecord;->removeTaskActivitiesLocked(Ljava/lang/String;)V
-HPLcom/android/server/wm/Task;->removeChild(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/TaskSnapshotCache$CacheEntry;-><init>(Landroid/app/ActivityManager$TaskSnapshot;Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/TaskSnapshotController;->createTaskSnapshot(Lcom/android/server/wm/Task;F)Landroid/view/SurfaceControl$ScreenshotGraphicBuffer;
-HPLcom/android/server/wm/TaskSnapshotController;->findAppTokenForSnapshot(Lcom/android/server/wm/Task;)Lcom/android/server/wm/ActivityRecord;
-HPLcom/android/server/wm/TaskSnapshotPersister$DeleteWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;II)V
-HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;-><init>(Lcom/android/server/wm/TaskSnapshotPersister;IILandroid/app/ActivityManager$TaskSnapshot;)V
-HPLcom/android/server/wm/TaskSnapshotPersister$StoreWriteQueueItem;->onQueuedLocked()V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->lambda$startWallpaperAnimations$0(JJLjava/util/function/Consumer;Ljava/util/ArrayList;Ljava/util/ArrayList;Lcom/android/server/wm/WallpaperWindowToken;)V
-HPLcom/android/server/wm/WallpaperAnimationAdapter;->startWallpaperAnimations(Lcom/android/server/wm/WindowManagerService;JJLjava/util/function/Consumer;Ljava/util/ArrayList;)[Landroid/view/RemoteAnimationTarget;
-HPLcom/android/server/wm/WindowAnimationSpec;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
-HPLcom/android/server/wm/WindowProcessControllerMap;->removeProcessFromUidMap(Lcom/android/server/wm/WindowProcessController;)V
-HPLcom/android/server/wm/WindowProcessController;->updateProcessInfo(ZZZ)V
-HPLcom/android/server/wm/WindowState$DeathRecipient;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$1;)V
-HPLcom/android/server/wm/WindowState$WindowId;-><init>(Lcom/android/server/wm/WindowState;Lcom/android/server/wm/WindowState$1;)V
-HPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunched;->writeToParcelImpl(Landroid/os/Parcel;I)V
-HPLcom/google/android/startop/iorap/AppLaunchEvent$ActivityLaunchFinished;->writeToParcelImpl(Landroid/os/Parcel;I)V
-HPLcom/google/android/startop/iorap/AppLaunchEvent$IntentStarted;->writeToParcelImpl(Landroid/os/Parcel;I)V
-HPLcom/google/android/startop/iorap/AppLaunchEvent;->getTypeIndex()I
-HPLcom/android/server/pm/PackageManagerService;->access$7600(Lcom/android/server/pm/PackageManagerService;Landroid/content/Intent;Ljava/lang/String;IIZI)Landroid/content/pm/ResolveInfo;
-HPLcom/android/server/pm/PackageManagerService;->access$8100(Lcom/android/server/pm/PackageManagerService;II)Z
-HPLcom/android/server/wm/ActivityRecord$Token;->access$100(Lcom/android/server/wm/ActivityRecord$Token;Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->access$000(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;)Lcom/android/server/wm/SurfaceAnimator$OnAnimationFinishedCallback;
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->access$400(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;)Landroid/graphics/Point;
-HPLcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;->access$500(Lcom/android/server/wm/RemoteAnimationController$RemoteAnimationAdapterWrapper;)Landroid/graphics/Rect;
-HPLcom/android/server/wm/RemoteAnimationController;->access$100(Lcom/android/server/wm/RemoteAnimationController;)V
-HPLcom/android/server/wm/RemoteAnimationController;->access$300(Lcom/android/server/wm/RemoteAnimationController;)Landroid/view/RemoteAnimationAdapter;
-HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->access$200(Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Lcom/android/server/wm/TaskRecord;
-HPLcom/android/server/wm/TaskPersister;->access$000(I)Ljava/io/File;
-HPLcom/android/server/wm/WindowContainer;->access$100(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
-HPLcom/android/server/wm/WindowManagerService;->access$1600(Lcom/android/server/wm/WindowManagerService;Landroid/os/IBinder;)V
-HPLcom/android/server/pm/ShortcutUser;->logSharingShortcutStats(Lcom/android/internal/logging/MetricsLogger;)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->lambda$topAppWindowChanged$1$StatusBarManagerService(IZZ)V
-HPLcom/android/server/wm/ActivityRecord$Token;->attach(Lcom/android/server/wm/ActivityRecord;)V
-HPLcom/android/server/wm/AnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/DisplayPolicy;->lambda$updateSystemUiVisibilityLw$10$DisplayPolicy(IIILandroid/graphics/Rect;Landroid/graphics/Rect;ZLcom/android/server/wm/WindowState;I[Lcom/android/internal/view/AppearanceRegion;ZZ)V
-HPLcom/android/server/wm/InsetsSourceProvider;->hasWindow()Z
-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
-HPLcom/android/server/wm/InsetsStateController;->peekSourceProvider(I)Lcom/android/server/wm/InsetsSourceProvider;
-HPLcom/android/server/wm/TaskPersister$TaskWriteQueueItem;->access$200(Lcom/android/server/wm/TaskPersister$TaskWriteQueueItem;)Lcom/android/server/wm/TaskRecord;
-HPLcom/android/server/wm/WindowContainer;->access$100(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
-HPLcom/android/server/-$$Lambda$AlarmManagerService$2$Eo-D98J-N9R2METkD-12gPs320c;-><init>(Lcom/android/server/AlarmManagerService$2;Landroid/app/IAlarmCompleteListener;)V
-HPLcom/android/server/AlarmManagerService;->access$100(Lcom/android/server/AlarmManagerService;)Lcom/android/server/AlarmManagerService$Injector;
-HPLcom/android/server/AlarmManagerService;->access$2102(Lcom/android/server/AlarmManagerService;J)J
-HPLcom/android/server/AlarmManagerService;->access$2202(Lcom/android/server/AlarmManagerService;J)J
-HPLcom/android/server/AlarmManagerService;->access$2300(Lcom/android/server/AlarmManagerService;)V
-HPLcom/android/server/AlarmManagerService;->access$2400(Lcom/android/server/AlarmManagerService;Lcom/android/server/AlarmManagerService$Alarm;)Z
-HPLcom/android/server/AlarmManagerService;->isExemptFromAppStandby(Lcom/android/server/AlarmManagerService$Alarm;)Z
-HPLcom/android/server/appwidget/AppWidgetServiceImpl$HostId;-><init>(IILjava/lang/String;)V
-HPLcom/android/server/content/ContentService$ObserverCall;->run()V
-HPLcom/android/server/statusbar/-$$Lambda$StatusBarManagerService$uF0ibEnnXe7Lxunxb98QQLJjgZM;-><init>(Lcom/android/server/statusbar/StatusBarManagerService;IZZ)V
-HPLcom/android/server/statusbar/StatusBarManagerService$1;->topAppWindowChanged(IZZ)V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1600(Lcom/android/server/statusbar/StatusBarManagerService$UiState;Z)V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->access$1700(Lcom/android/server/statusbar/StatusBarManagerService$UiState;Z)V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setFullscreen(Z)V
-HPLcom/android/server/statusbar/StatusBarManagerService$UiState;->setImmersive(Z)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->access$600(Lcom/android/server/statusbar/StatusBarManagerService;IZZ)V
-HPLcom/android/server/statusbar/StatusBarManagerService;->enforceStatusBar()V
-HPLcom/android/server/statusbar/StatusBarManagerService;->getUiState(I)Lcom/android/server/statusbar/StatusBarManagerService$UiState;
-HPLcom/android/server/statusbar/StatusBarManagerService;->topAppWindowChanged(IZZ)V
-HPLcom/android/server/wm/InsetsStateController;->onControlFakeTargetChanged(ILcom/android/server/wm/InsetsControlTarget;)V
-HPLcom/android/server/wm/LocalAnimationAdapter$AnimationSpec;->writeToProto(Landroid/util/proto/ProtoOutputStream;J)V
-HPLcom/android/server/wm/LocalAnimationAdapter;->writeToProto(Landroid/util/proto/ProtoOutputStream;)V
-HPLcom/android/server/wm/PersisterQueue;->access$100(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
-HPLcom/android/server/wm/PersisterQueue;->access$200(Lcom/android/server/wm/PersisterQueue;)Ljava/util/ArrayList;
-HPLcom/android/server/wm/PersisterQueue;->access$300(Lcom/android/server/wm/PersisterQueue;)V
-HPLcom/android/server/wm/TaskSnapshotPersister;->access$100(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/lang/Object;
-HPLcom/android/server/wm/TaskSnapshotPersister;->access$200(Lcom/android/server/wm/TaskSnapshotPersister;)Z
-HPLcom/android/server/wm/TaskSnapshotPersister;->access$300(Lcom/android/server/wm/TaskSnapshotPersister;)Ljava/util/ArrayDeque;
-HPLcom/android/server/wm/TaskSnapshotPersister;->access$402(Lcom/android/server/wm/TaskSnapshotPersister;Z)Z
-HPLcom/android/server/wm/WindowAnimationSpec;->findTranslateAnimation(Landroid/view/animation/Animation;)Landroid/view/animation/TranslateAnimation;
-HPLcom/android/server/wm/WindowAnimationSpec;->writeToProtoInner(Landroid/util/proto/ProtoOutputStream;)V
-HPLcom/android/server/wm/WindowContainer;->access$100(Lcom/android/server/wm/WindowContainer;)Landroid/util/Pools$SynchronizedPool;
+Lcom/google/android/startop/iorap/JobScheduledEvent;
+Lcom/google/android/startop/iorap/PackageEvent;
+Lcom/google/android/startop/iorap/RequestId$1;
+Lcom/google/android/startop/iorap/RequestId;
+Lcom/google/android/startop/iorap/SystemServiceEvent;
+Lcom/google/android/startop/iorap/SystemServiceUserEvent;
+Lcom/google/android/startop/iorap/TaskResult;
diff --git a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
index e28ef0f..4474f60 100644
--- a/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
+++ b/services/autofill/java/com/android/server/autofill/AutofillManagerServiceImpl.java
@@ -82,6 +82,7 @@
 import com.android.server.autofill.AutofillManagerService.AutofillCompatState;
 import com.android.server.autofill.RemoteAugmentedAutofillService.RemoteAugmentedAutofillServiceCallbacks;
 import com.android.server.autofill.ui.AutoFillUI;
+import com.android.server.contentcapture.ContentCaptureManagerInternal;
 import com.android.server.infra.AbstractPerUserSystemService;
 import com.android.server.inputmethod.InputMethodManagerInternal;
 
@@ -154,6 +155,13 @@
     @GuardedBy("mLock")
     private FillEventHistory mEventHistory;
 
+    /**
+     * The last inline augmented autofill selection. Note that we don't log the selection from the
+     * dropdown UI since the service owns the UI in that case.
+     */
+    @GuardedBy("mLock")
+    private FillEventHistory mAugmentedAutofillEventHistory;
+
     /** Shared instance, doesn't need to be logged */
     private final AutofillCompatState mAutofillCompatState;
 
@@ -173,6 +181,8 @@
 
     private final InputMethodManagerInternal mInputMethodManagerInternal;
 
+    private final ContentCaptureManagerInternal mContentCaptureManagerInternal;
+
     AutofillManagerServiceImpl(AutofillManagerService master, Object lock,
             LocalLog uiLatencyHistory, LocalLog wtfHistory, int userId, AutoFillUI ui,
             AutofillCompatState autofillCompatState,
@@ -185,10 +195,22 @@
         mFieldClassificationStrategy = new FieldClassificationStrategy(getContext(), userId);
         mAutofillCompatState = autofillCompatState;
         mInputMethodManagerInternal = LocalServices.getService(InputMethodManagerInternal.class);
+        mContentCaptureManagerInternal = LocalServices.getService(
+                ContentCaptureManagerInternal.class);
 
         updateLocked(disabled);
     }
 
+    boolean sendActivityAssistDataToContentCapture(@NonNull IBinder activityToken,
+            @NonNull Bundle data) {
+        if (mContentCaptureManagerInternal != null) {
+            mContentCaptureManagerInternal.sendActivityAssistData(getUserId(), activityToken, data);
+            return true;
+        }
+
+        return false;
+    }
+
     @GuardedBy("mLock")
     void onBackKeyPressed() {
         final RemoteAugmentedAutofillService remoteService =
@@ -216,7 +238,7 @@
         updateRemoteAugmentedAutofillService();
 
         final ComponentName componentName = RemoteInlineSuggestionRenderService
-                .getServiceComponentName(getContext());
+                .getServiceComponentName(getContext(), mUserId);
         if (componentName != null) {
             mRemoteInlineSuggestionRenderService = new RemoteInlineSuggestionRenderService(
                     getContext(), componentName, InlineSuggestionRenderService.SERVICE_INTERFACE,
@@ -707,6 +729,13 @@
         }
     }
 
+    void setLastAugmentedAutofillResponse(int sessionId) {
+        synchronized (mLock) {
+            mAugmentedAutofillEventHistory = new FillEventHistory(sessionId, /* clientState= */
+                    null);
+        }
+    }
+
     /**
      * Resets the last fill selection.
      */
@@ -716,6 +745,12 @@
         }
     }
 
+    void resetLastAugmentedAutofillResponse() {
+        synchronized (mLock) {
+            mAugmentedAutofillEventHistory = null;
+        }
+    }
+
     @GuardedBy("mLock")
     private boolean isValidEventLocked(String method, int sessionId) {
         if (mEventHistory == null) {
@@ -798,6 +833,31 @@
         }
     }
 
+    void logAugmentedAutofillSelected(int sessionId, @Nullable String suggestionId) {
+        synchronized (mLock) {
+            if (mAugmentedAutofillEventHistory == null
+                    || mAugmentedAutofillEventHistory.getSessionId() != sessionId) {
+                return;
+            }
+            mAugmentedAutofillEventHistory.addEvent(
+                    new Event(Event.TYPE_DATASET_SELECTED, suggestionId, null, null, null,
+                            null, null, null, null, null, null));
+        }
+    }
+
+    void logAugmentedAutofillShown(int sessionId) {
+        synchronized (mLock) {
+            if (mAugmentedAutofillEventHistory == null
+                    || mAugmentedAutofillEventHistory.getSessionId() != sessionId) {
+                return;
+            }
+            mAugmentedAutofillEventHistory.addEvent(
+                    new Event(Event.TYPE_DATASETS_SHOWN, null, null, null, null, null,
+                            null, null, null, null, null));
+
+        }
+    }
+
     /**
      * Updates the last fill response when an autofill context is committed.
      */
@@ -881,8 +941,8 @@
      * Gets the fill event history.
      *
      * @param callingUid The calling uid
-     *
-     * @return The history or {@code null} if there is none.
+     * @return The history for the autofill or the augmented autofill events depending on the {@code
+     * callingUid}, or {@code null} if there is none.
      */
     FillEventHistory getFillEventHistory(int callingUid) {
         synchronized (mLock) {
@@ -890,6 +950,10 @@
                     && isCalledByServiceLocked("getFillEventHistory", callingUid)) {
                 return mEventHistory;
             }
+            if (mAugmentedAutofillEventHistory != null && isCalledByAugmentedAutofillServiceLocked(
+                    "getFillEventHistory", callingUid)) {
+                return mAugmentedAutofillEventHistory;
+            }
         }
         return null;
     }
@@ -1163,8 +1227,31 @@
                 Slog.v(TAG, "getRemoteAugmentedAutofillServiceLocked(): " + componentName);
             }
 
-            mRemoteAugmentedAutofillService = new RemoteAugmentedAutofillService(getContext(),
-                    componentName, mUserId, new RemoteAugmentedAutofillServiceCallbacks() {
+            final RemoteAugmentedAutofillServiceCallbacks callbacks =
+                    new RemoteAugmentedAutofillServiceCallbacks() {
+                        @Override
+                        public void resetLastResponse() {
+                            AutofillManagerServiceImpl.this.resetLastAugmentedAutofillResponse();
+                        }
+
+                        @Override
+                        public void setLastResponse(int sessionId) {
+                            AutofillManagerServiceImpl.this.setLastAugmentedAutofillResponse(
+                                    sessionId);
+                        }
+
+                        @Override
+                        public void logAugmentedAutofillShown(int sessionId) {
+                            AutofillManagerServiceImpl.this.logAugmentedAutofillShown(sessionId);
+                        }
+
+                        @Override
+                        public void logAugmentedAutofillSelected(int sessionId,
+                                String suggestionId) {
+                            AutofillManagerServiceImpl.this.logAugmentedAutofillSelected(sessionId,
+                                    suggestionId);
+                        }
+
                         @Override
                         public void onServiceDied(@NonNull RemoteAugmentedAutofillService service) {
                             Slog.w(TAG, "remote augmented autofill service died");
@@ -1175,8 +1262,10 @@
                             }
                             mRemoteAugmentedAutofillService = null;
                         }
-                    }, mMaster.isInstantServiceAllowed(), mMaster.verbose,
-                    mMaster.mAugmentedServiceIdleUnbindTimeoutMs,
+                    };
+            mRemoteAugmentedAutofillService = new RemoteAugmentedAutofillService(getContext(),
+                    componentName, mUserId, callbacks, mMaster.isInstantServiceAllowed(),
+                    mMaster.verbose, mMaster.mAugmentedServiceIdleUnbindTimeoutMs,
                     mMaster.mAugmentedServiceRequestTimeoutMs);
         }
 
diff --git a/services/autofill/java/com/android/server/autofill/InlineSuggestionFactory.java b/services/autofill/java/com/android/server/autofill/InlineSuggestionFactory.java
deleted file mode 100644
index c7be80c..0000000
--- a/services/autofill/java/com/android/server/autofill/InlineSuggestionFactory.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- * 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.server.autofill;
-
-import static com.android.server.autofill.Helper.sDebug;
-
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.content.Context;
-import android.os.RemoteException;
-import android.service.autofill.Dataset;
-import android.service.autofill.InlinePresentation;
-import android.util.Slog;
-import android.view.SurfaceControl;
-import android.view.View;
-import android.view.autofill.AutofillId;
-import android.view.autofill.IAutoFillManagerClient;
-import android.view.inputmethod.InlineSuggestion;
-import android.view.inputmethod.InlineSuggestionInfo;
-import android.view.inputmethod.InlineSuggestionsResponse;
-
-import com.android.internal.view.inline.IInlineContentCallback;
-import com.android.internal.view.inline.IInlineContentProvider;
-import com.android.server.UiThread;
-import com.android.server.autofill.ui.AutoFillUI;
-import com.android.server.autofill.ui.InlineSuggestionUi;
-
-import java.util.ArrayList;
-
-
-/**
- * @hide
- */
-public final class InlineSuggestionFactory {
-    private static final String TAG = "InlineSuggestionFactory";
-
-    /**
-     * Creates an {@link InlineSuggestionsResponse} with the {@code datasets} provided by
-     * augmented autofill service.
-     */
-    public static InlineSuggestionsResponse createAugmentedInlineSuggestionsResponse(
-            int sessionId,
-            @NonNull Dataset[] datasets,
-            @NonNull AutofillId autofillId,
-            @NonNull Context context,
-            @NonNull IAutoFillManagerClient client) {
-        if (sDebug) Slog.d(TAG, "createAugmentedInlineSuggestionsResponse called");
-
-        final ArrayList<InlineSuggestion> inlineSuggestions = new ArrayList<>();
-        final InlineSuggestionUi inlineSuggestionUi = new InlineSuggestionUi(context);
-        for (Dataset dataset : datasets) {
-            final int fieldIndex = dataset.getFieldIds().indexOf(autofillId);
-            if (fieldIndex < 0) {
-                Slog.w(TAG, "AutofillId=" + autofillId + " not found in dataset");
-                return null;
-            }
-            final InlinePresentation inlinePresentation = dataset.getFieldInlinePresentation(
-                    fieldIndex);
-            if (inlinePresentation == null) {
-                Slog.w(TAG, "InlinePresentation not found in dataset");
-                return null;
-            }
-            InlineSuggestion inlineSuggestion = createAugmentedInlineSuggestion(sessionId, dataset,
-                    inlinePresentation, inlineSuggestionUi, client);
-            inlineSuggestions.add(inlineSuggestion);
-        }
-        return new InlineSuggestionsResponse(inlineSuggestions);
-    }
-
-    /**
-     * Creates an {@link InlineSuggestionsResponse} with the {@code datasets} provided by the
-     * autofill service.
-     */
-    public static InlineSuggestionsResponse createInlineSuggestionsResponse(int requestId,
-            @NonNull Dataset[] datasets,
-            @NonNull AutofillId autofillId,
-            @NonNull Context context,
-            @NonNull AutoFillUI.AutoFillUiCallback client) {
-        if (sDebug) Slog.d(TAG, "createInlineSuggestionsResponse called");
-
-        final ArrayList<InlineSuggestion> inlineSuggestions = new ArrayList<>();
-        final InlineSuggestionUi inlineSuggestionUi = new InlineSuggestionUi(context);
-        for (Dataset dataset : datasets) {
-            final int fieldIndex = dataset.getFieldIds().indexOf(autofillId);
-            if (fieldIndex < 0) {
-                Slog.w(TAG, "AutofillId=" + autofillId + " not found in dataset");
-                return null;
-            }
-            final InlinePresentation inlinePresentation = dataset.getFieldInlinePresentation(
-                    fieldIndex);
-            if (inlinePresentation == null) {
-                Slog.w(TAG, "InlinePresentation not found in dataset");
-                return null;
-            }
-            InlineSuggestion inlineSuggestion = createInlineSuggestion(requestId, dataset,
-                    fieldIndex,
-                    inlinePresentation, inlineSuggestionUi, client);
-            inlineSuggestions.add(inlineSuggestion);
-        }
-        return new InlineSuggestionsResponse(inlineSuggestions);
-    }
-
-    private static InlineSuggestion createAugmentedInlineSuggestion(int sessionId,
-            @NonNull Dataset dataset,
-            @NonNull InlinePresentation inlinePresentation,
-            @NonNull InlineSuggestionUi inlineSuggestionUi,
-            @NonNull IAutoFillManagerClient client) {
-        // TODO(b/146453195): fill in the autofill hint properly.
-        final InlineSuggestionInfo inlineSuggestionInfo = new InlineSuggestionInfo(
-                inlinePresentation.getInlinePresentationSpec(),
-                InlineSuggestionInfo.SOURCE_PLATFORM, new String[]{""},
-                InlineSuggestionInfo.TYPE_SUGGESTION);
-        final View.OnClickListener onClickListener = v -> {
-            try {
-                client.autofill(sessionId, dataset.getFieldIds(), dataset.getFieldValues());
-            } catch (RemoteException e) {
-                Slog.w(TAG, "Encounter exception autofilling the values");
-            }
-        };
-        final InlineSuggestion inlineSuggestion = new InlineSuggestion(inlineSuggestionInfo,
-                createInlineContentProvider(inlinePresentation, inlineSuggestionUi,
-                        onClickListener));
-        return inlineSuggestion;
-    }
-
-    private static InlineSuggestion createInlineSuggestion(int requestId,
-            @NonNull Dataset dataset,
-            int fieldIndex,
-            @NonNull InlinePresentation inlinePresentation,
-            @NonNull InlineSuggestionUi inlineSuggestionUi,
-            @NonNull AutoFillUI.AutoFillUiCallback client) {
-        // TODO(b/146453195): fill in the autofill hint properly.
-        final InlineSuggestionInfo inlineSuggestionInfo = new InlineSuggestionInfo(
-                inlinePresentation.getInlinePresentationSpec(),
-                InlineSuggestionInfo.SOURCE_AUTOFILL, new String[]{""},
-                InlineSuggestionInfo.TYPE_SUGGESTION);
-        final View.OnClickListener onClickListener = v -> {
-            client.fill(requestId, fieldIndex, dataset);
-        };
-        final InlineSuggestion inlineSuggestion = new InlineSuggestion(inlineSuggestionInfo,
-                createInlineContentProvider(inlinePresentation, inlineSuggestionUi,
-                        onClickListener));
-        return inlineSuggestion;
-    }
-
-    private static IInlineContentProvider.Stub createInlineContentProvider(
-            @NonNull InlinePresentation inlinePresentation,
-            @NonNull InlineSuggestionUi inlineSuggestionUi,
-            @Nullable View.OnClickListener onClickListener) {
-        return new IInlineContentProvider.Stub() {
-            @Override
-            public void provideContent(int width, int height,
-                    IInlineContentCallback callback) {
-                UiThread.getHandler().post(() -> {
-                    SurfaceControl sc = inlineSuggestionUi.inflate(inlinePresentation, width,
-                            height,
-                            onClickListener);
-                    try {
-                        callback.onContent(sc);
-                    } catch (RemoteException e) {
-                        Slog.w(TAG, "Encounter exception calling back with inline content.");
-                    }
-                });
-            }
-        };
-    }
-
-    private InlineSuggestionFactory() {
-    }
-}
diff --git a/services/autofill/java/com/android/server/autofill/InlineSuggestionSession.java b/services/autofill/java/com/android/server/autofill/InlineSuggestionSession.java
new file mode 100644
index 0000000..1fc48d2
--- /dev/null
+++ b/services/autofill/java/com/android/server/autofill/InlineSuggestionSession.java
@@ -0,0 +1,168 @@
+/*
+ * 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.server.autofill;
+
+import static com.android.server.autofill.Helper.sDebug;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.ComponentName;
+import android.os.RemoteException;
+import android.util.Log;
+import android.view.autofill.AutofillId;
+import android.view.inputmethod.InlineSuggestionsRequest;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.view.IInlineSuggestionsRequestCallback;
+import com.android.internal.view.IInlineSuggestionsResponseCallback;
+import com.android.server.inputmethod.InputMethodManagerInternal;
+
+import java.util.concurrent.CancellationException;
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Maintains an inline suggestion autofill session.
+ *
+ * <p> This class is thread safe.
+ */
+final class InlineSuggestionSession {
+
+    private static final String TAG = "InlineSuggestionSession";
+    private static final int INLINE_REQUEST_TIMEOUT_MS = 1000;
+
+    @NonNull
+    private final InputMethodManagerInternal mInputMethodManagerInternal;
+    private final int mUserId;
+    @NonNull
+    private final ComponentName mComponentName;
+    @NonNull
+    private final Object mLock;
+
+    @GuardedBy("mLock")
+    @Nullable
+    private CompletableFuture<ImeResponse> mPendingImeResponse;
+
+    InlineSuggestionSession(InputMethodManagerInternal inputMethodManagerInternal,
+            int userId, ComponentName componentName) {
+        mInputMethodManagerInternal = inputMethodManagerInternal;
+        mUserId = userId;
+        mComponentName = componentName;
+        mLock = new Object();
+    }
+
+    public void createRequest(@NonNull AutofillId currentViewId) {
+        synchronized (mLock) {
+            cancelCurrentRequest();
+            mPendingImeResponse = new CompletableFuture<>();
+            mInputMethodManagerInternal.onCreateInlineSuggestionsRequest(
+                    mUserId, mComponentName, currentViewId,
+                    new InlineSuggestionsRequestCallbackImpl(mPendingImeResponse));
+        }
+    }
+
+    @Nullable
+    public ImeResponse waitAndGetImeResponse() {
+        CompletableFuture<ImeResponse> pendingImeResponse = getPendingImeResponse();
+        if (pendingImeResponse == null || pendingImeResponse.isCancelled()) {
+            return null;
+        }
+        try {
+            return pendingImeResponse.get(INLINE_REQUEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
+        } catch (TimeoutException e) {
+            Log.w(TAG, "Exception getting inline suggestions request in time: " + e);
+        } catch (CancellationException e) {
+            Log.w(TAG, "Inline suggestions request cancelled");
+        } catch (InterruptedException | ExecutionException e) {
+            throw new RuntimeException(e);
+        }
+        return null;
+    }
+
+    private void cancelCurrentRequest() {
+        CompletableFuture<ImeResponse> pendingImeResponse = getPendingImeResponse();
+        if (pendingImeResponse != null) {
+            pendingImeResponse.cancel(true);
+        }
+    }
+
+    @Nullable
+    @GuardedBy("mLock")
+    private CompletableFuture<ImeResponse> getPendingImeResponse() {
+        synchronized (mLock) {
+            return mPendingImeResponse;
+        }
+    }
+
+    private static final class InlineSuggestionsRequestCallbackImpl
+            extends IInlineSuggestionsRequestCallback.Stub {
+
+        private final CompletableFuture<ImeResponse> mResponse;
+
+        private InlineSuggestionsRequestCallbackImpl(CompletableFuture<ImeResponse> response) {
+            mResponse = response;
+        }
+
+        @Override
+        public void onInlineSuggestionsUnsupported() throws RemoteException {
+            if (sDebug) {
+                Log.d(TAG, "onInlineSuggestionsUnsupported() called.");
+            }
+            mResponse.cancel(true);
+        }
+
+        @Override
+        public void onInlineSuggestionsRequest(InlineSuggestionsRequest request,
+                IInlineSuggestionsResponseCallback callback) throws RemoteException {
+            if (sDebug) {
+                Log.d(TAG, "onInlineSuggestionsRequest() received: " + request);
+            }
+            if (request != null && callback != null) {
+                mResponse.complete(new ImeResponse(request, callback));
+            } else {
+                mResponse.cancel(true);
+            }
+        }
+    }
+
+    /**
+     * A data class wrapping IME responses for the inline suggestion request.
+     */
+    public static class ImeResponse {
+        @NonNull
+        private final InlineSuggestionsRequest mRequest;
+
+        @NonNull
+        private final IInlineSuggestionsResponseCallback mCallback;
+
+        ImeResponse(@NonNull InlineSuggestionsRequest request,
+                @NonNull IInlineSuggestionsResponseCallback callback) {
+            mRequest = request;
+            mCallback = callback;
+        }
+
+        public InlineSuggestionsRequest getRequest() {
+            return mRequest;
+        }
+
+        public IInlineSuggestionsResponseCallback getCallback() {
+            return mCallback;
+        }
+    }
+}
diff --git a/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java b/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
index 5fbdd25..d93ac68 100644
--- a/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
+++ b/services/autofill/java/com/android/server/autofill/RemoteAugmentedAutofillService.java
@@ -55,6 +55,7 @@
 import com.android.internal.os.IResultReceiver;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.view.IInlineSuggestionsResponseCallback;
+import com.android.server.autofill.ui.InlineSuggestionFactory;
 
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.TimeUnit;
@@ -69,6 +70,7 @@
     private final int mIdleUnbindTimeoutMs;
     private final int mRequestTimeoutMs;
     private final ComponentName mComponentName;
+    private final RemoteAugmentedAutofillServiceCallbacks mCallbacks;
 
     RemoteAugmentedAutofillService(Context context, ComponentName serviceName,
             int userId, RemoteAugmentedAutofillServiceCallbacks callbacks,
@@ -81,6 +83,7 @@
         mIdleUnbindTimeoutMs = idleUnbindTimeoutMs;
         mRequestTimeoutMs = requestTimeoutMs;
         mComponentName = serviceName;
+        mCallbacks = callbacks;
 
         // Bind right away.
         connect();
@@ -142,7 +145,8 @@
             int taskId, @NonNull ComponentName activityComponent, @NonNull AutofillId focusedId,
             @Nullable AutofillValue focusedValue,
             @Nullable InlineSuggestionsRequest inlineSuggestionsRequest,
-            @Nullable IInlineSuggestionsResponseCallback inlineSuggestionsCallback) {
+            @Nullable IInlineSuggestionsResponseCallback inlineSuggestionsCallback,
+            @NonNull Runnable onErrorCallback) {
         long requestTime = SystemClock.elapsedRealtime();
         AtomicReference<ICancellationSignal> cancellationRef = new AtomicReference<>();
 
@@ -160,8 +164,11 @@
                             new IFillCallback.Stub() {
                                 @Override
                                 public void onSuccess(@Nullable Dataset[] inlineSuggestionsData) {
-                                    maybeHandleInlineSuggestions(sessionId, inlineSuggestionsData,
-                                            focusedId, inlineSuggestionsCallback, client);
+                                    mCallbacks.resetLastResponse();
+                                    maybeRequestShowInlineSuggestions(sessionId,
+                                            inlineSuggestionsRequest, inlineSuggestionsData,
+                                            focusedId, inlineSuggestionsCallback, client,
+                                            onErrorCallback);
                                     requestAutofill.complete(null);
                                 }
 
@@ -223,20 +230,36 @@
         });
     }
 
-    private void maybeHandleInlineSuggestions(int sessionId,
-            @Nullable Dataset[] inlineSuggestionsData, @NonNull AutofillId focusedId,
+    private void maybeRequestShowInlineSuggestions(int sessionId,
+            @Nullable InlineSuggestionsRequest request, @Nullable Dataset[] inlineSuggestionsData,
+            @NonNull AutofillId focusedId,
             @Nullable IInlineSuggestionsResponseCallback inlineSuggestionsCallback,
-            @NonNull IAutoFillManagerClient client) {
-        if (ArrayUtils.isEmpty(inlineSuggestionsData) || inlineSuggestionsCallback == null) {
+            @NonNull IAutoFillManagerClient client, @NonNull Runnable onErrorCallback) {
+        if (ArrayUtils.isEmpty(inlineSuggestionsData) || inlineSuggestionsCallback == null
+                || request == null) {
             return;
         }
+        mCallbacks.setLastResponse(sessionId);
+
         try {
             inlineSuggestionsCallback.onInlineSuggestionsResponse(
-                    InlineSuggestionFactory.createAugmentedInlineSuggestionsResponse(sessionId,
-                            inlineSuggestionsData, focusedId, mContext, client));
+                    InlineSuggestionFactory.createAugmentedInlineSuggestionsResponse(
+                            request, inlineSuggestionsData, focusedId, mContext,
+                            dataset -> {
+                                mCallbacks.logAugmentedAutofillSelected(sessionId,
+                                        dataset.getId());
+                                try {
+                                    client.autofill(sessionId, dataset.getFieldIds(),
+                                            dataset.getFieldValues());
+                                } catch (RemoteException e) {
+                                    Slog.w(TAG, "Encounter exception autofilling the values");
+                                }
+                            }, onErrorCallback));
         } catch (RemoteException e) {
             Slog.w(TAG, "Exception sending inline suggestions response back to IME.");
         }
+
+        mCallbacks.logAugmentedAutofillShown(sessionId);
     }
 
     @Override
@@ -254,8 +277,12 @@
 
     public interface RemoteAugmentedAutofillServiceCallbacks
             extends AbstractRemoteService.VultureCallback<RemoteAugmentedAutofillService> {
-        // NOTE: so far we don't need to notify the callback implementation (an inner class on
-        // AutofillManagerServiceImpl) of the request results (success, timeouts, etc..), so this
-        // callback interface is empty.
+        void resetLastResponse();
+
+        void setLastResponse(int sessionId);
+
+        void logAugmentedAutofillShown(int sessionId);
+
+        void logAugmentedAutofillSelected(int sessionId, @Nullable String suggestionId);
     }
 }
diff --git a/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java b/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
index f9e08e6..31dc23f 100644
--- a/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
+++ b/services/autofill/java/com/android/server/autofill/RemoteInlineSuggestionRenderService.java
@@ -20,6 +20,7 @@
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UserIdInt;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
@@ -86,7 +87,7 @@
     }
 
     @Nullable
-    private static ServiceInfo getServiceInfo(Context context) {
+    private static ServiceInfo getServiceInfo(Context context, int userId) {
         final String packageName =
                 context.getPackageManager().getServicesSystemSharedLibraryPackageName();
         if (packageName == null) {
@@ -96,8 +97,8 @@
 
         final Intent intent = new Intent(InlineSuggestionRenderService.SERVICE_INTERFACE);
         intent.setPackage(packageName);
-        final ResolveInfo resolveInfo = context.getPackageManager().resolveService(intent,
-                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA);
+        final ResolveInfo resolveInfo = context.getPackageManager().resolveServiceAsUser(intent,
+                PackageManager.GET_SERVICES | PackageManager.GET_META_DATA, userId);
         final ServiceInfo serviceInfo = resolveInfo == null ? null : resolveInfo.serviceInfo;
         if (resolveInfo == null || serviceInfo == null) {
             Slog.w(TAG, "No valid components found.");
@@ -115,8 +116,8 @@
     }
 
     @Nullable
-    public static ComponentName getServiceComponentName(Context context) {
-        final ServiceInfo serviceInfo = getServiceInfo(context);
+    public static ComponentName getServiceComponentName(Context context, @UserIdInt int userId) {
+        final ServiceInfo serviceInfo = getServiceInfo(context, userId);
         if (serviceInfo == null) return null;
 
         final ComponentName componentName = new ComponentName(serviceInfo.packageName,
diff --git a/services/autofill/java/com/android/server/autofill/Session.java b/services/autofill/java/com/android/server/autofill/Session.java
index ee37de5..72029d1 100644
--- a/services/autofill/java/com/android/server/autofill/Session.java
+++ b/services/autofill/java/com/android/server/autofill/Session.java
@@ -100,9 +100,9 @@
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.internal.util.ArrayUtils;
-import com.android.internal.view.IInlineSuggestionsRequestCallback;
 import com.android.internal.view.IInlineSuggestionsResponseCallback;
 import com.android.server.autofill.ui.AutoFillUI;
+import com.android.server.autofill.ui.InlineSuggestionFactory;
 import com.android.server.autofill.ui.PendingUi;
 import com.android.server.inputmethod.InputMethodManagerInternal;
 
@@ -113,11 +113,6 @@
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
-import java.util.concurrent.CancellationException;
-import java.util.concurrent.CompletableFuture;
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -158,9 +153,6 @@
     /** uid the session is for */
     public final int uid;
 
-    /** user id the session is for */
-    public final int userId;
-
     /** ID of the task associated with this session's activity */
     public final int taskId;
 
@@ -309,11 +301,8 @@
     @GuardedBy("mLock")
     private boolean mForAugmentedAutofillOnly;
 
-    @NonNull
-    private final InputMethodManagerInternal mInputMethodManagerInternal;
-
     @Nullable
-    private InlineSuggestionsRequestCallbackImpl mInlineSuggestionsRequestCallback;
+    private final InlineSuggestionSession mInlineSuggestionSession;
 
     /**
      * Receiver of assist data from the app's {@link Activity}.
@@ -414,14 +403,16 @@
                 final ArrayList<FillContext> contexts =
                         mergePreviousSessionLocked(/* forSave= */ false);
 
-                final InlineSuggestionsRequest suggestionsRequest =
-                        mInlineSuggestionsRequestCallback != null
-                                ? mInlineSuggestionsRequestCallback.getRequest() : null;
+                final InlineSuggestionSession.ImeResponse imeResponse =
+                        mInlineSuggestionSession.waitAndGetImeResponse();
 
                 request = new FillRequest(requestId, contexts, mClientState, flags,
-                        suggestionsRequest);
+                        imeResponse != null ? imeResponse.getRequest() : null);
             }
 
+            if (mActivityToken != null) {
+                mService.sendActivityAssistDataToContentCapture(mActivityToken, resultData);
+            }
             mRemoteFillService.onFillRequest(request);
         }
 
@@ -614,75 +605,12 @@
     private void maybeRequestInlineSuggestionsRequestThenFillLocked(@NonNull ViewState viewState,
             int newState, int flags) {
         if (isInlineSuggestionsEnabled()) {
-            mInlineSuggestionsRequestCallback = new InlineSuggestionsRequestCallbackImpl();
-            mInputMethodManagerInternal.onCreateInlineSuggestionsRequest(userId,
-                    mComponentName, mCurrentViewId, mInlineSuggestionsRequestCallback);
+            mInlineSuggestionSession.createRequest(mCurrentViewId);
         }
 
         requestNewFillResponseLocked(viewState, newState, flags);
     }
 
-    private static final class InlineSuggestionsRequestCallbackImpl
-            extends IInlineSuggestionsRequestCallback.Stub {
-        private static final int INLINE_REQUEST_TIMEOUT_MS = 1000;
-
-        private final CompletableFuture<InlineSuggestionsRequest> mRequest;
-        private final CompletableFuture<IInlineSuggestionsResponseCallback> mResponseCallback;
-
-        private InlineSuggestionsRequestCallbackImpl() {
-            mRequest = new CompletableFuture<>();
-            mResponseCallback = new CompletableFuture<>();
-        }
-
-        @Override
-        public void onInlineSuggestionsUnsupported() throws RemoteException {
-            if (sDebug) {
-                Log.d(TAG, "inline suggestions request unsupported, "
-                        + "falling back to regular autofill");
-            }
-            mRequest.cancel(true);
-            mResponseCallback.cancel(true);
-        }
-
-        @Override
-        public void onInlineSuggestionsRequest(InlineSuggestionsRequest request,
-                IInlineSuggestionsResponseCallback callback) throws RemoteException {
-            if (sDebug) {
-                Log.d(TAG, "onInlineSuggestionsRequest() received: " + request);
-            }
-            mRequest.complete(request);
-            mResponseCallback.complete(callback);
-        }
-
-        @Nullable
-        private InlineSuggestionsRequest getRequest() {
-            try {
-                return mRequest.get(INLINE_REQUEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
-            } catch (TimeoutException e) {
-                Log.w(TAG, "Exception getting inline suggestions request in time: " + e);
-            } catch (CancellationException e) {
-                Log.w(TAG, "Inline suggestions request cancelled");
-            } catch (InterruptedException | ExecutionException e) {
-                throw new RuntimeException(e);
-            }
-            return null;
-        }
-
-        @Nullable
-        private IInlineSuggestionsResponseCallback getResponseCallback() {
-            try {
-                return mResponseCallback.get(INLINE_REQUEST_TIMEOUT_MS, TimeUnit.MILLISECONDS);
-            } catch (TimeoutException e) {
-                Log.w(TAG, "Exception getting inline suggestions callback in time: " + e);
-            } catch (CancellationException e) {
-                Log.w(TAG, "Inline suggestions callback cancelled");
-            } catch (InterruptedException | ExecutionException e) {
-                throw new RuntimeException(e);
-            }
-            return null;
-        }
-    }
-
     /**
      * Reads a new structure and then request a new fill response from the fill service.
      */
@@ -762,7 +690,6 @@
         mFlags = flags;
         this.taskId = taskId;
         this.uid = uid;
-        this.userId = userId;
         mStartTime = SystemClock.elapsedRealtime();
         mService = service;
         mLock = lock;
@@ -781,7 +708,8 @@
         mForAugmentedAutofillOnly = forAugmentedAutofillOnly;
         setClientLocked(client);
 
-        mInputMethodManagerInternal = inputMethodManagerInternal;
+        mInlineSuggestionSession = new InlineSuggestionSession(inputMethodManagerInternal, userId,
+                componentName);
 
         mMetricsLogger.write(newLogMaker(MetricsEvent.AUTOFILL_SESSION_STARTED)
                 .addTaggedData(MetricsEvent.FIELD_AUTOFILL_FLAGS, flags));
@@ -2508,65 +2436,9 @@
                     forceRemoveSelfLocked(AutofillManager.STATE_UNKNOWN_COMPAT_MODE);
                     return;
                 }
-
                 if (!Objects.equals(value, viewState.getCurrentValue())) {
-                    if ((value == null || value.isEmpty())
-                            && viewState.getCurrentValue() != null
-                            && viewState.getCurrentValue().isText()
-                            && viewState.getCurrentValue().getTextValue() != null
-                            && getSaveInfoLocked() != null) {
-                        final int length = viewState.getCurrentValue().getTextValue().length();
-                        if (sDebug) {
-                            Slog.d(TAG, "updateLocked(" + id + "): resetting value that was "
-                                    + length + " chars long");
-                        }
-                        final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_VALUE_RESET)
-                                .addTaggedData(MetricsEvent.FIELD_AUTOFILL_PREVIOUS_LENGTH, length);
-                        mMetricsLogger.write(log);
-                    }
-
-                    // Always update the internal state.
-                    viewState.setCurrentValue(value);
-
-                    // Must check if this update was caused by autofilling the view, in which
-                    // case we just update the value, but not the UI.
-                    final AutofillValue filledValue = viewState.getAutofilledValue();
-                    if (filledValue != null) {
-                        if (filledValue.equals(value)) {
-                            if (sVerbose) {
-                                Slog.v(TAG, "ignoring autofilled change on id " + id);
-                            }
-                            viewState.resetState(ViewState.STATE_CHANGED);
-                            return;
-                        }
-                        else {
-                            if ((viewState.id.equals(this.mCurrentViewId)) &&
-                                    (viewState.getState() & ViewState.STATE_AUTOFILLED) != 0) {
-                                // Remove autofilled state once field is changed after autofilling.
-                                if (sVerbose) {
-                                    Slog.v(TAG, "field changed after autofill on id " + id);
-                                }
-                                viewState.resetState(ViewState.STATE_AUTOFILLED);
-                                final ViewState currentView = mViewStates.get(mCurrentViewId);
-                                currentView.maybeCallOnFillReady(flags);
-                            }
-                        }
-                    }
-
-                    // Update the internal state...
-                    viewState.setState(ViewState.STATE_CHANGED);
-
-                    //..and the UI
-                    final String filterText;
-                    if (value == null || !value.isText()) {
-                        filterText = null;
-                    } else {
-                        final CharSequence text = value.getTextValue();
-                        // Text should never be null, but it doesn't hurt to check to avoid a
-                        // system crash...
-                        filterText = (text == null) ? null : text.toString();
-                    }
-                    getUiForShowing().filterFillUi(filterText, this);
+                    logIfViewClearedLocked(id, value, viewState);
+                    updateViewStateAndUiOnValueChangedLocked(id, value, viewState, flags);
                 }
                 break;
             case ACTION_VIEW_ENTERED:
@@ -2645,6 +2517,68 @@
         return ArrayUtils.contains(response.getIgnoredIds(), id);
     }
 
+    @GuardedBy("mLock")
+    private void logIfViewClearedLocked(AutofillId id, AutofillValue value, ViewState viewState) {
+        if ((value == null || value.isEmpty())
+                && viewState.getCurrentValue() != null
+                && viewState.getCurrentValue().isText()
+                && viewState.getCurrentValue().getTextValue() != null
+                && getSaveInfoLocked() != null) {
+            final int length = viewState.getCurrentValue().getTextValue().length();
+            if (sDebug) {
+                Slog.d(TAG, "updateLocked(" + id + "): resetting value that was "
+                        + length + " chars long");
+            }
+            final LogMaker log = newLogMaker(MetricsEvent.AUTOFILL_VALUE_RESET)
+                    .addTaggedData(MetricsEvent.FIELD_AUTOFILL_PREVIOUS_LENGTH, length);
+            mMetricsLogger.write(log);
+        }
+    }
+
+    @GuardedBy("mLock")
+    private void updateViewStateAndUiOnValueChangedLocked(AutofillId id, AutofillValue value,
+            ViewState viewState, int flags) {
+        viewState.setCurrentValue(value);
+
+        final String filterText;
+        if (value == null || !value.isText()) {
+            filterText = null;
+        } else {
+            final CharSequence text = value.getTextValue();
+            // Text should never be null, but it doesn't hurt to check to avoid a
+            // system crash...
+            filterText = (text == null) ? null : text.toString();
+        }
+
+        final AutofillValue filledValue = viewState.getAutofilledValue();
+        if (filledValue != null) {
+            if (filledValue.equals(value)) {
+                // When the update is caused by autofilling the view, just update the
+                // value, not the UI.
+                if (sVerbose) {
+                    Slog.v(TAG, "ignoring autofilled change on id " + id);
+                }
+                viewState.resetState(ViewState.STATE_CHANGED);
+                return;
+            } else if ((viewState.id.equals(this.mCurrentViewId))
+                    && (viewState.getState() & ViewState.STATE_AUTOFILLED) != 0) {
+                // Remove autofilled state once field is changed after autofilling.
+                if (sVerbose) {
+                    Slog.v(TAG, "field changed after autofill on id " + id);
+                }
+                viewState.resetState(ViewState.STATE_AUTOFILLED);
+                final ViewState currentView = mViewStates.get(mCurrentViewId);
+                currentView.maybeCallOnFillReady(flags);
+            }
+        } else if (viewState.id.equals(this.mCurrentViewId)
+                && (viewState.getState() & ViewState.STATE_INLINE_SHOWN) != 0) {
+            requestShowInlineSuggestionsLocked(viewState.getResponse(), filterText);
+        }
+
+        viewState.setState(ViewState.STATE_CHANGED);
+        getUiForShowing().filterFillUi(filterText, this);
+    }
+
     @Override
     public void onFillReady(@NonNull FillResponse response, @NonNull AutofillId filledId,
             @Nullable AutofillValue value) {
@@ -2673,13 +2607,18 @@
         }
 
         if (response.supportsInlineSuggestions()) {
-            if (requestShowInlineSuggestions(response)) {
-                //TODO(b/137800469): Add logging instead of bypassing below logic.
-                return;
+            synchronized (mLock) {
+                if (requestShowInlineSuggestionsLocked(response, filterText)) {
+                    final ViewState currentView = mViewStates.get(mCurrentViewId);
+                    currentView.setState(ViewState.STATE_INLINE_SHOWN);
+                    //TODO(b/137800469): Fix it to log showed only when IME asks for inflation,
+                    // rather than here where framework sends back the response.
+                    mService.logDatasetShown(id, mClientState);
+                    return;
+                }
             }
         }
 
-
         getUiForShowing().showFillUi(filledId, response, filterText,
                 mService.getServicePackageName(), mComponentName,
                 serviceLabel, serviceIcon, this, id, mCompatMode);
@@ -2714,26 +2653,33 @@
     /**
      * Returns whether we made a request to show inline suggestions.
      */
-    private boolean requestShowInlineSuggestions(FillResponse response) {
-        final IInlineSuggestionsResponseCallback inlineContentCallback =
-                mInlineSuggestionsRequestCallback != null
-                        ? mInlineSuggestionsRequestCallback.getResponseCallback() : null;
-        if (inlineContentCallback == null) {
-            Log.w(TAG, "Session input method callback is not set yet");
-            return false;
-        }
-
+    private boolean requestShowInlineSuggestionsLocked(@NonNull FillResponse response,
+            @Nullable String filterText) {
         final List<Dataset> datasets = response.getDatasets();
         if (datasets == null) {
             Log.w(TAG, "response returned null datasets");
             return false;
         }
 
+        final InlineSuggestionSession.ImeResponse imeResponse =
+                mInlineSuggestionSession.waitAndGetImeResponse();
+        if (imeResponse == null) {
+            Log.w(TAG, "Session input method callback is not set yet");
+            return false;
+        }
+
+        final InlineSuggestionsRequest request = imeResponse.getRequest();
         InlineSuggestionsResponse inlineSuggestionsResponse =
-                InlineSuggestionFactory.createInlineSuggestionsResponse(response.getRequestId(),
-                        datasets.toArray(new Dataset[]{}), mCurrentViewId, mContext, this);
-        try  {
-            inlineContentCallback.onInlineSuggestionsResponse(inlineSuggestionsResponse);
+                InlineSuggestionFactory.createInlineSuggestionsResponse(request,
+                        response.getRequestId(),
+                        datasets.toArray(new Dataset[]{}), filterText, response.getInlineActions(),
+                        mCurrentViewId, mContext, this, () -> {
+                            synchronized (mLock) {
+                                requestHideFillUi(mCurrentViewId);
+                            }
+                        });
+        try {
+            imeResponse.getCallback().onInlineSuggestionsResponse(inlineSuggestionsResponse);
         } catch (RemoteException e) {
             Log.w(TAG, "onFillReady() remote error calling onInlineSuggestionsResponse()");
             return false;
@@ -3015,14 +2961,27 @@
 
         final AutofillId focusedId = AutofillId.withoutSession(mCurrentViewId);
 
+        // There are 3 cases when augmented autofill should ask IME for a new request:
+        // 1. standard autofill provider is None
+        // 2. standard autofill provider doesn't support inline (and returns null response)
+        // 3. standard autofill provider supports inline, but isn't called because the field
+        // doesn't want autofill
+        if (mForAugmentedAutofillOnly || !isInlineSuggestionsEnabled()) {
+            if (sDebug) Slog.d(TAG, "Create inline request for augmented autofill");
+            mInlineSuggestionSession.createRequest(mCurrentViewId);
+        }
+        InlineSuggestionSession.ImeResponse imeResponse =
+                mInlineSuggestionSession.waitAndGetImeResponse();
         final InlineSuggestionsRequest inlineSuggestionsRequest =
-                mInlineSuggestionsRequestCallback != null
-                        ? mInlineSuggestionsRequestCallback.getRequest() : null;
+                imeResponse != null ? imeResponse.getRequest() : null;
         final IInlineSuggestionsResponseCallback inlineSuggestionsResponseCallback =
-                mInlineSuggestionsRequestCallback != null
-                        ? mInlineSuggestionsRequestCallback.getResponseCallback() : null;
+                imeResponse != null ? imeResponse.getCallback() : null;
         remoteService.onRequestAutofillLocked(id, mClient, taskId, mComponentName, focusedId,
-                currentValue, inlineSuggestionsRequest, inlineSuggestionsResponseCallback);
+                currentValue, inlineSuggestionsRequest, inlineSuggestionsResponseCallback, () -> {
+                    synchronized (mLock) {
+                        cancelAugmentedAutofillLocked();
+                    }
+                });
 
         if (mAugmentedAutofillDestroyer == null) {
             mAugmentedAutofillDestroyer = () -> remoteService.onDestroyAutofillWindowsRequest();
diff --git a/services/autofill/java/com/android/server/autofill/ViewState.java b/services/autofill/java/com/android/server/autofill/ViewState.java
index 84886f8..f7c24f0 100644
--- a/services/autofill/java/com/android/server/autofill/ViewState.java
+++ b/services/autofill/java/com/android/server/autofill/ViewState.java
@@ -74,6 +74,8 @@
     public static final int STATE_AUTOFILLED_ONCE = 0x800;
     /** View triggered the latest augmented autofill request. */
     public static final int STATE_TRIGGERED_AUGMENTED_AUTOFILL = 0x1000;
+    /** Inline suggestions were shown for this View. */
+    public static final int STATE_INLINE_SHOWN = 0x2000;
 
     public final AutofillId id;
 
diff --git a/services/autofill/java/com/android/server/autofill/ui/FillUi.java b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
index 5796142..5dc43ef 100644
--- a/services/autofill/java/com/android/server/autofill/ui/FillUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/FillUi.java
@@ -313,6 +313,8 @@
                         Slog.e(TAG, "Error inflating remote views", e);
                         continue;
                     }
+                    // TODO: Extract the shared filtering logic here and in FillUi to a common
+                    //  method.
                     final DatasetFieldFilter filter = dataset.getFilter(index);
                     Pattern filterPattern = null;
                     String valueText = null;
@@ -602,6 +604,7 @@
          * Returns whether this item matches the value input by the user so it can be included
          * in the filtered datasets.
          */
+        // TODO: Extract the shared filtering logic here and in FillUi to a common method.
         public boolean matches(CharSequence filterText) {
             if (TextUtils.isEmpty(filterText)) {
                 // Always show item when the user input is empty
diff --git a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java
new file mode 100644
index 0000000..5f6e47b
--- /dev/null
+++ b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionFactory.java
@@ -0,0 +1,257 @@
+/*
+ * 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.server.autofill.ui;
+
+import static com.android.server.autofill.Helper.sDebug;
+import static com.android.server.autofill.Helper.sVerbose;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.os.RemoteException;
+import android.service.autofill.Dataset;
+import android.service.autofill.InlinePresentation;
+import android.text.TextUtils;
+import android.util.Slog;
+import android.view.SurfaceControl;
+import android.view.View;
+import android.view.autofill.AutofillId;
+import android.view.autofill.AutofillValue;
+import android.view.inline.InlinePresentationSpec;
+import android.view.inputmethod.InlineSuggestion;
+import android.view.inputmethod.InlineSuggestionInfo;
+import android.view.inputmethod.InlineSuggestionsRequest;
+import android.view.inputmethod.InlineSuggestionsResponse;
+import android.widget.Toast;
+
+import com.android.internal.view.inline.IInlineContentCallback;
+import com.android.internal.view.inline.IInlineContentProvider;
+import com.android.server.UiThread;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.BiFunction;
+import java.util.regex.Pattern;
+
+public final class InlineSuggestionFactory {
+    private static final String TAG = "InlineSuggestionFactory";
+
+    /**
+     * Callback from the inline suggestion Ui.
+     */
+    public interface InlineSuggestionUiCallback {
+        /**
+         * Callback to autofill a dataset to the client app.
+         */
+        void autofill(@NonNull Dataset dataset);
+    }
+
+    /**
+     * Creates an {@link InlineSuggestionsResponse} with the {@code datasets} provided by
+     * augmented autofill service.
+     */
+    public static InlineSuggestionsResponse createAugmentedInlineSuggestionsResponse(
+            @NonNull InlineSuggestionsRequest request,
+            @NonNull Dataset[] datasets,
+            @NonNull AutofillId autofillId,
+            @NonNull Context context,
+            @NonNull InlineSuggestionUiCallback inlineSuggestionUiCallback,
+            @NonNull Runnable onErrorCallback) {
+        if (sDebug) Slog.d(TAG, "createAugmentedInlineSuggestionsResponse called");
+        return createInlineSuggestionsResponseInternal(/* isAugmented= */ true, request,
+                datasets, /* filterText= */ null, /* inlineActions= */ null, autofillId, context,
+                onErrorCallback,
+                (dataset, filedIndex) -> (v -> inlineSuggestionUiCallback.autofill(dataset)));
+    }
+
+    /**
+     * Creates an {@link InlineSuggestionsResponse} with the {@code datasets} provided by the
+     * autofill service, potentially filtering the datasets.
+     */
+    public static InlineSuggestionsResponse createInlineSuggestionsResponse(
+            @NonNull InlineSuggestionsRequest request, int requestId,
+            @NonNull Dataset[] datasets,
+            @Nullable String filterText,
+            @Nullable List<InlinePresentation> inlineActions,
+            @NonNull AutofillId autofillId,
+            @NonNull Context context,
+            @NonNull AutoFillUI.AutoFillUiCallback client,
+            @NonNull Runnable onErrorCallback) {
+        if (sDebug) Slog.d(TAG, "createInlineSuggestionsResponse called");
+        return createInlineSuggestionsResponseInternal(/* isAugmented= */ false, request, datasets,
+                filterText, inlineActions, autofillId, context, onErrorCallback,
+                (dataset, filedIndex) -> (v -> client.fill(requestId, filedIndex, dataset)));
+    }
+
+    private static InlineSuggestionsResponse createInlineSuggestionsResponseInternal(
+            boolean isAugmented, @NonNull InlineSuggestionsRequest request,
+            @NonNull Dataset[] datasets, @Nullable String filterText,
+            @Nullable List<InlinePresentation> inlineActions, @NonNull AutofillId autofillId,
+            @NonNull Context context, @NonNull Runnable onErrorCallback,
+            @NonNull BiFunction<Dataset, Integer, View.OnClickListener> onClickListenerFactory) {
+        final ArrayList<InlineSuggestion> inlineSuggestions = new ArrayList<>();
+        final InlineSuggestionUi inlineSuggestionUi = new InlineSuggestionUi(context,
+                onErrorCallback);
+        for (int i = 0; i < datasets.length; i++) {
+            final Dataset dataset = datasets[i];
+            final int fieldIndex = dataset.getFieldIds().indexOf(autofillId);
+            if (fieldIndex < 0) {
+                Slog.w(TAG, "AutofillId=" + autofillId + " not found in dataset");
+                return null;
+            }
+            final InlinePresentation inlinePresentation = dataset.getFieldInlinePresentation(
+                    fieldIndex);
+            if (inlinePresentation == null) {
+                Slog.w(TAG, "InlinePresentation not found in dataset");
+                return null;
+            }
+            if (!includeDataset(dataset, fieldIndex, filterText)) {
+                continue;
+            }
+            InlineSuggestion inlineSuggestion = createInlineSuggestion(isAugmented, dataset,
+                    fieldIndex, mergedInlinePresentation(request, i, inlinePresentation),
+                    inlineSuggestionUi, onClickListenerFactory);
+            inlineSuggestions.add(inlineSuggestion);
+        }
+        if (inlineActions != null) {
+            for (InlinePresentation inlinePresentation : inlineActions) {
+                final InlineSuggestion inlineAction = createInlineAction(isAugmented, context,
+                        mergedInlinePresentation(request, 0, inlinePresentation),
+                        inlineSuggestionUi);
+                inlineSuggestions.add(inlineAction);
+            }
+        }
+        return new InlineSuggestionsResponse(inlineSuggestions);
+    }
+
+    // TODO: Extract the shared filtering logic here and in FillUi to a common method.
+    private static boolean includeDataset(Dataset dataset, int fieldIndex,
+            @Nullable String filterText) {
+        // Show everything when the user input is empty.
+        if (TextUtils.isEmpty(filterText)) {
+            return true;
+        }
+
+        final String constraintLowerCase = filterText.toString().toLowerCase();
+
+        // Use the filter provided by the service, if available.
+        final Dataset.DatasetFieldFilter filter = dataset.getFilter(fieldIndex);
+        if (filter != null) {
+            Pattern filterPattern = filter.pattern;
+            if (filterPattern == null) {
+                if (sVerbose) {
+                    Slog.v(TAG, "Explicitly disabling filter for dataset id" + dataset.getId());
+                }
+                return true;
+            }
+            return filterPattern.matcher(constraintLowerCase).matches();
+        }
+
+        final AutofillValue value = dataset.getFieldValues().get(fieldIndex);
+        if (value == null || !value.isText()) {
+            return dataset.getAuthentication() == null;
+        }
+        final String valueText = value.getTextValue().toString().toLowerCase();
+        return valueText.toLowerCase().startsWith(constraintLowerCase);
+    }
+
+
+    private static InlineSuggestion createInlineAction(boolean isAugmented,
+            @NonNull Context context,
+            @NonNull InlinePresentation inlinePresentation,
+            @NonNull InlineSuggestionUi inlineSuggestionUi) {
+        // TODO(b/146453195): fill in the autofill hint properly.
+        final InlineSuggestionInfo inlineSuggestionInfo = new InlineSuggestionInfo(
+                inlinePresentation.getInlinePresentationSpec(),
+                isAugmented ? InlineSuggestionInfo.SOURCE_PLATFORM
+                        : InlineSuggestionInfo.SOURCE_AUTOFILL, new String[]{""},
+                InlineSuggestionInfo.TYPE_ACTION);
+        final View.OnClickListener onClickListener = v -> {
+            // TODO(b/148567875): Launch the intent provided through the slice. This
+            //  should be part of the UI renderer therefore will be moved to the support
+            //  library.
+            Toast.makeText(context, "icon clicked", Toast.LENGTH_SHORT).show();
+        };
+        return new InlineSuggestion(inlineSuggestionInfo,
+                createInlineContentProvider(inlinePresentation, inlineSuggestionUi,
+                        onClickListener));
+    }
+
+    private static InlineSuggestion createInlineSuggestion(boolean isAugmented,
+            @NonNull Dataset dataset,
+            int fieldIndex, @NonNull InlinePresentation inlinePresentation,
+            @NonNull InlineSuggestionUi inlineSuggestionUi,
+            @NonNull BiFunction<Dataset, Integer, View.OnClickListener> onClickListenerFactory) {
+        // TODO(b/146453195): fill in the autofill hint properly.
+        final InlineSuggestionInfo inlineSuggestionInfo = new InlineSuggestionInfo(
+                inlinePresentation.getInlinePresentationSpec(),
+                isAugmented ? InlineSuggestionInfo.SOURCE_PLATFORM
+                        : InlineSuggestionInfo.SOURCE_AUTOFILL, new String[]{""},
+                InlineSuggestionInfo.TYPE_SUGGESTION);
+        final View.OnClickListener onClickListener = onClickListenerFactory.apply(dataset,
+                fieldIndex);
+        final InlineSuggestion inlineSuggestion = new InlineSuggestion(inlineSuggestionInfo,
+                createInlineContentProvider(inlinePresentation, inlineSuggestionUi,
+                        onClickListener));
+        return inlineSuggestion;
+    }
+
+    /**
+     * Returns an {@link InlinePresentation} with the style spec from the request/host, and
+     * everything else from the provided {@code inlinePresentation}.
+     */
+    private static InlinePresentation mergedInlinePresentation(
+            @NonNull InlineSuggestionsRequest request,
+            int index, @NonNull InlinePresentation inlinePresentation) {
+        final List<InlinePresentationSpec> specs = request.getPresentationSpecs();
+        if (specs.isEmpty()) {
+            return inlinePresentation;
+        }
+        InlinePresentationSpec specFromHost = specs.get(Math.min(specs.size() - 1, index));
+        InlinePresentationSpec mergedInlinePresentation = new InlinePresentationSpec.Builder(
+                inlinePresentation.getInlinePresentationSpec().getMinSize(),
+                inlinePresentation.getInlinePresentationSpec().getMaxSize()).setStyle(
+                specFromHost.getStyle()).build();
+        return new InlinePresentation(inlinePresentation.getSlice(), mergedInlinePresentation,
+                inlinePresentation.isPinned());
+    }
+
+    private static IInlineContentProvider.Stub createInlineContentProvider(
+            @NonNull InlinePresentation inlinePresentation,
+            @NonNull InlineSuggestionUi inlineSuggestionUi,
+            @Nullable View.OnClickListener onClickListener) {
+        return new IInlineContentProvider.Stub() {
+            @Override
+            public void provideContent(int width, int height,
+                    IInlineContentCallback callback) {
+                UiThread.getHandler().post(() -> {
+                    SurfaceControl sc = inlineSuggestionUi.inflate(inlinePresentation, width,
+                            height,
+                            onClickListener);
+                    try {
+                        callback.onContent(sc);
+                    } catch (RemoteException e) {
+                        Slog.w(TAG, "Encounter exception calling back with inline content.");
+                    }
+                });
+            }
+        };
+    }
+
+    private InlineSuggestionFactory() {
+    }
+}
diff --git a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionRoot.java b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionRoot.java
new file mode 100644
index 0000000..e813dae
--- /dev/null
+++ b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionRoot.java
@@ -0,0 +1,83 @@
+/*
+ * 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.server.autofill.ui;
+
+import android.annotation.NonNull;
+import android.annotation.SuppressLint;
+import android.content.Context;
+import android.util.Log;
+import android.util.MathUtils;
+import android.view.MotionEvent;
+import android.view.ViewConfiguration;
+import android.widget.FrameLayout;
+
+import com.android.server.LocalServices;
+import com.android.server.wm.WindowManagerInternal;
+
+/**
+ * This class is the root view for an inline suggestion. It is responsible for
+ * detecting the click on the item and to also transfer input focus to the IME
+ * window if we detect the user is scrolling.
+ */
+ // TODO(b/146453086) Move to ExtServices and add @SystemApi to transfer touch focus
+@SuppressLint("ViewConstructor")
+class InlineSuggestionRoot extends FrameLayout {
+    private static final String LOG_TAG = InlineSuggestionRoot.class.getSimpleName();
+
+    private final @NonNull Runnable mOnErrorCallback;
+    private final int mTouchSlop;
+
+    private float mDownX;
+    private float mDownY;
+
+    InlineSuggestionRoot(@NonNull Context context, @NonNull Runnable onErrorCallback) {
+        super(context);
+        mOnErrorCallback = onErrorCallback;
+        mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();
+        setFocusable(false);
+    }
+
+    @Override
+    @SuppressLint("ClickableViewAccessibility")
+    public boolean onTouchEvent(@NonNull MotionEvent event) {
+        switch (event.getActionMasked()) {
+            case MotionEvent.ACTION_DOWN: {
+                mDownX = event.getX();
+                mDownY = event.getY();
+            } break;
+
+            case MotionEvent.ACTION_MOVE: {
+                final float distance = MathUtils.dist(mDownX, mDownY,
+                        event.getX(), event.getY());
+                if (distance > mTouchSlop) {
+                    transferTouchFocusToImeWindow();
+                }
+            } break;
+        }
+        return super.onTouchEvent(event);
+    }
+
+    private void transferTouchFocusToImeWindow() {
+        final WindowManagerInternal windowManagerInternal = LocalServices.getService(
+                WindowManagerInternal.class);
+        if (!windowManagerInternal.transferTouchFocusToImeWindow(getViewRootImpl().getInputToken(),
+                getContext().getDisplayId())) {
+            Log.e(LOG_TAG, "Cannot transfer touch focus from suggestion to IME");
+            mOnErrorCallback.run();
+        }
+    }
+}
diff --git a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionUi.java b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionUi.java
index 2adefea..bf148a6 100644
--- a/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/InlineSuggestionUi.java
@@ -67,10 +67,12 @@
     // (int)}. This name is a single string of the form "package:type/entry".
     private static final Pattern RESOURCE_NAME_PATTERN = Pattern.compile("([^:]+):([^/]+)/(\\S+)");
 
-    private final Context mContext;
+    private final @NonNull Context mContext;
+    private final @NonNull Runnable mOnErrorCallback;
 
-    public InlineSuggestionUi(Context context) {
+    InlineSuggestionUi(@NonNull Context context, @NonNull Runnable onErrorCallback) {
         this.mContext = context;
+        mOnErrorCallback = onErrorCallback;
     }
 
     /**
@@ -94,15 +96,17 @@
         }
         final View suggestionView = renderSlice(inlinePresentation.getSlice(),
                 contextThemeWrapper);
-        if (onClickListener != null) {
-            suggestionView.setOnClickListener(onClickListener);
-        }
+
+        final InlineSuggestionRoot suggestionRoot = new InlineSuggestionRoot(
+                mContext, mOnErrorCallback);
+        suggestionRoot.addView(suggestionView);
+        suggestionRoot.setOnClickListener(onClickListener);
 
         WindowManager.LayoutParams lp =
                 new WindowManager.LayoutParams(width, height,
                         WindowManager.LayoutParams.TYPE_APPLICATION, 0,
                         PixelFormat.TRANSPARENT);
-        wvr.addView(suggestionView, lp);
+        wvr.addView(suggestionRoot, lp);
         return sc;
     }
 
diff --git a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
index 8eea047..507e983 100644
--- a/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
+++ b/services/autofill/java/com/android/server/autofill/ui/SaveUi.java
@@ -27,6 +27,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.pm.PackageManager;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
 import android.metrics.LogMaker;
@@ -187,7 +188,10 @@
         context = new ContextThemeWrapper(context, mThemeId) {
             @Override
             public void startActivity(Intent intent) {
-                if (intent.resolveActivity(getPackageManager()) == null) {
+                if (resolveActivity(intent) == null) {
+                    if (sDebug) {
+                        Slog.d(TAG, "Can not startActivity for save UI with intent=" + intent);
+                    }
                     return;
                 }
                 intent.putExtra(AutofillManager.EXTRA_RESTORE_CROSS_ACTIVITY, true);
@@ -199,6 +203,16 @@
                 // Apply restore mechanism
                 startIntentSenderWithRestore(p, intent);
             }
+
+            private ComponentName resolveActivity(Intent intent) {
+                final PackageManager packageManager = getPackageManager();
+                final ComponentName componentName = intent.resolveActivity(packageManager);
+                if (componentName != null) {
+                    return componentName;
+                }
+                intent.addFlags(Intent.FLAG_ACTIVITY_MATCH_EXTERNAL);
+                return intent.resolveActivity(packageManager);
+            }
         };
         final LayoutInflater inflater = LayoutInflater.from(context);
         final View view = inflater.inflate(R.layout.autofill_save, null);
diff --git a/services/backup/backuplib/java/com/android/server/backup/transport/TransportClient.java b/services/backup/backuplib/java/com/android/server/backup/transport/TransportClient.java
index 7c5a57c..ca89f7f 100644
--- a/services/backup/backuplib/java/com/android/server/backup/transport/TransportClient.java
+++ b/services/backup/backuplib/java/com/android/server/backup/transport/TransportClient.java
@@ -26,6 +26,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.ServiceConnection;
+import android.os.Binder;
 import android.os.DeadObjectException;
 import android.os.Handler;
 import android.os.IBinder;
@@ -662,6 +663,10 @@
                 referenceLost("TransportConnection.onServiceConnected()");
                 return;
             }
+            // TODO (b/147705255): Remove when binder calls to IBackupTransport are not blocking
+            // In short-term, blocking calls are OK as the transports come from the whitelist at
+            // {@link SystemConfig#getBackupTransportWhitelist()}
+            Binder.allowBlocking(binder);
             transportClient.onServiceConnected(binder);
         }
 
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerFilePersistedSettings.java b/services/backup/java/com/android/server/backup/UserBackupManagerFilePersistedSettings.java
index 6a1de63..205b7dd 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerFilePersistedSettings.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerFilePersistedSettings.java
@@ -16,7 +16,6 @@
 
 package com.android.server.backup;
 
-import static com.android.server.backup.BackupManagerService.DEBUG;
 import static com.android.server.backup.BackupManagerService.TAG;
 
 import android.util.Slog;
@@ -33,10 +32,13 @@
     private static final String BACKUP_ENABLE_FILE = "backup_enabled";
 
     static boolean readBackupEnableState(int userId) {
-        return readBackupEnableState(UserBackupManagerFiles.getBaseStateDir(userId));
+        boolean enabled = readBackupEnableState(UserBackupManagerFiles.getBaseStateDir(userId));
+        Slog.d(TAG, "user:" + userId + " readBackupEnableState enabled:" + enabled);
+        return enabled;
     }
 
     static void writeBackupEnableState(int userId, boolean enable) {
+        Slog.d(TAG, "user:" + userId + " writeBackupEnableState enable:" + enable);
         writeBackupEnableState(UserBackupManagerFiles.getBaseStateDir(userId), enable);
     }
 
@@ -45,15 +47,17 @@
         if (enableFile.exists()) {
             try (FileInputStream fin = new FileInputStream(enableFile)) {
                 int state = fin.read();
+                if (state != 0 && state != 1) {
+                    // TODO (b/148587496) handle instead of only logging
+                    Slog.e(TAG, "Unexpected enabled state:" + state);
+                }
                 return state != 0;
             } catch (IOException e) {
                 // can't read the file; fall through to assume disabled
                 Slog.e(TAG, "Cannot read enable state; assuming disabled");
             }
         } else {
-            if (DEBUG) {
-                Slog.i(TAG, "isBackupEnabled() => false due to absent settings file");
-            }
+            Slog.i(TAG, "isBackupEnabled() => false due to absent settings file");
         }
         return false;
     }
@@ -64,7 +68,11 @@
         try (FileOutputStream fout = new FileOutputStream(stage)) {
             fout.write(enable ? 1 : 0);
             fout.close();
-            stage.renameTo(enableFile);
+            boolean renamed = stage.renameTo(enableFile);
+            if (!renamed) {
+                // TODO (b/148587496) handle instead of only logging
+                Slog.e(TAG, "Write enable failed as could not rename staging file to actual");
+            }
             // will be synced immediately by the try-with-resources call to close()
         } catch (IOException | RuntimeException e) {
             Slog.e(
diff --git a/services/backup/java/com/android/server/backup/UserBackupManagerService.java b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
index e3d2dcc..6247a63 100644
--- a/services/backup/java/com/android/server/backup/UserBackupManagerService.java
+++ b/services/backup/java/com/android/server/backup/UserBackupManagerService.java
@@ -1080,12 +1080,8 @@
         }
     }
 
-    public Map<String, Set<String>> getExcludedRestoreKeys(String... packages) {
-        return mBackupPreferences.getExcludedRestoreKeysForPackages(packages);
-    }
-
-    public Map<String, Set<String>> getAllExcludedRestoreKeys() {
-        return mBackupPreferences.getAllExcludedRestoreKeys();
+    public Set<String> getExcludedRestoreKeys(String packageName) {
+        return mBackupPreferences.getExcludedRestoreKeysForPackage(packageName);
     }
 
     /** Used for generating random salts or passwords. */
@@ -3356,8 +3352,7 @@
                                 restoreSet,
                                 packageName,
                                 token,
-                                listener,
-                                getExcludedRestoreKeys(packageName));
+                                listener);
                 mBackupHandler.sendMessage(msg);
             } catch (Exception e) {
                 // Calling into the transport broke; back off and proceed with the installation.
diff --git a/services/backup/java/com/android/server/backup/UserBackupPreferences.java b/services/backup/java/com/android/server/backup/UserBackupPreferences.java
index 41b9719..bb8bf52 100644
--- a/services/backup/java/com/android/server/backup/UserBackupPreferences.java
+++ b/services/backup/java/com/android/server/backup/UserBackupPreferences.java
@@ -48,16 +48,7 @@
         mEditor.commit();
     }
 
-    Map<String, Set<String>> getExcludedRestoreKeysForPackages(String... packages) {
-        Map<String, Set<String>> excludedKeys = new HashMap<>();
-        for (String packageName : packages) {
-            excludedKeys.put(packageName,
-                    mPreferences.getStringSet(packageName, Collections.emptySet()));
-        }
-        return excludedKeys;
-    }
-
-    Map<String, Set<String>> getAllExcludedRestoreKeys() {
-        return (Map<String, Set<String>>) mPreferences.getAll();
+    Set<String> getExcludedRestoreKeysForPackage(String packageName) {
+        return mPreferences.getStringSet(packageName, Collections.emptySet());
     }
 }
diff --git a/services/backup/java/com/android/server/backup/internal/BackupHandler.java b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
index 05396f3..87a8e49 100644
--- a/services/backup/java/com/android/server/backup/internal/BackupHandler.java
+++ b/services/backup/java/com/android/server/backup/internal/BackupHandler.java
@@ -299,8 +299,7 @@
                                 params.pmToken,
                                 params.isSystemRestore,
                                 params.filterSet,
-                                params.listener,
-                                params.excludedKeys);
+                                params.listener);
 
                 synchronized (backupManagerService.getPendingRestores()) {
                     if (backupManagerService.isRestoreInProgress()) {
diff --git a/services/backup/java/com/android/server/backup/params/RestoreParams.java b/services/backup/java/com/android/server/backup/params/RestoreParams.java
index 09b7e35..a6fea6c 100644
--- a/services/backup/java/com/android/server/backup/params/RestoreParams.java
+++ b/services/backup/java/com/android/server/backup/params/RestoreParams.java
@@ -37,7 +37,6 @@
     public final boolean isSystemRestore;
     @Nullable public final String[] filterSet;
     public final OnTaskFinishedListener listener;
-    public final Map<String, Set<String>> excludedKeys;
 
     /**
      * No kill after restore.
@@ -48,8 +47,7 @@
             IBackupManagerMonitor monitor,
             long token,
             PackageInfo packageInfo,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         return new RestoreParams(
                 transportClient,
                 observer,
@@ -59,8 +57,7 @@
                 /* pmToken */ 0,
                 /* isSystemRestore */ false,
                 /* filterSet */ null,
-                listener,
-                excludedKeys);
+                listener);
     }
 
     /**
@@ -73,8 +70,7 @@
             long token,
             String packageName,
             int pmToken,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         String[] filterSet = {packageName};
         return new RestoreParams(
                 transportClient,
@@ -85,8 +81,7 @@
                 pmToken,
                 /* isSystemRestore */ false,
                 filterSet,
-                listener,
-                excludedKeys);
+                listener);
     }
 
     /**
@@ -97,8 +92,7 @@
             IRestoreObserver observer,
             IBackupManagerMonitor monitor,
             long token,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         return new RestoreParams(
                 transportClient,
                 observer,
@@ -108,8 +102,7 @@
                 /* pmToken */ 0,
                 /* isSystemRestore */ true,
                 /* filterSet */ null,
-                listener,
-                excludedKeys);
+                listener);
     }
 
     /**
@@ -122,8 +115,7 @@
             long token,
             String[] filterSet,
             boolean isSystemRestore,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         return new RestoreParams(
                 transportClient,
                 observer,
@@ -133,8 +125,7 @@
                 /* pmToken */ 0,
                 isSystemRestore,
                 filterSet,
-                listener,
-                excludedKeys);
+                listener);
     }
 
     private RestoreParams(
@@ -146,8 +137,7 @@
             int pmToken,
             boolean isSystemRestore,
             @Nullable String[] filterSet,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         this.transportClient = transportClient;
         this.observer = observer;
         this.monitor = monitor;
@@ -157,6 +147,5 @@
         this.isSystemRestore = isSystemRestore;
         this.filterSet = filterSet;
         this.listener = listener;
-        this.excludedKeys = excludedKeys;
     }
 }
diff --git a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
index c0f76c3..5a57cdc 100644
--- a/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
+++ b/services/backup/java/com/android/server/backup/restore/ActiveRestoreSession.java
@@ -178,8 +178,7 @@
                                                 observer,
                                                 monitor,
                                                 token,
-                                                listener,
-                                                mBackupManagerService.getAllExcludedRestoreKeys()),
+                                                listener),
                                 "RestoreSession.restoreAll()");
                     } finally {
                         Binder.restoreCallingIdentity(oldId);
@@ -272,8 +271,7 @@
                                                 token,
                                                 packages,
                                                 /* isSystemRestore */ packages.length > 1,
-                                                listener,
-                                                mBackupManagerService.getExcludedRestoreKeys(packages)),
+                                                listener),
                                 "RestoreSession.restorePackages(" + packages.length + " packages)");
                     } finally {
                         Binder.restoreCallingIdentity(oldId);
@@ -365,8 +363,7 @@
                                     monitor,
                                     token,
                                     app,
-                                    listener,
-                                    mBackupManagerService.getExcludedRestoreKeys(app.packageName)),
+                                    listener),
                     "RestoreSession.restorePackage(" + packageName + ")");
         } finally {
             Binder.restoreCallingIdentity(oldId);
diff --git a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
index f90d936..3c37f73 100644
--- a/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
+++ b/services/backup/java/com/android/server/backup/restore/PerformUnifiedRestoreTask.java
@@ -155,8 +155,6 @@
     // When finished call listener
     private final OnTaskFinishedListener mListener;
 
-    private final Map<String, Set<String>> mExcludedKeys;
-
     // Key/value: bookkeeping about staged data and files for agent access
     private File mBackupDataName;
     private File mStageName;
@@ -168,14 +166,14 @@
     private final BackupAgentTimeoutParameters mAgentTimeoutParameters;
 
     @VisibleForTesting
-    PerformUnifiedRestoreTask(Map<String, Set<String>> excludedKeys) {
-        mExcludedKeys = excludedKeys;
+    PerformUnifiedRestoreTask(UserBackupManagerService backupManagerService) {
         mListener = null;
         mAgentTimeoutParameters = null;
         mTransportClient = null;
         mTransportManager = null;
         mEphemeralOpToken = 0;
         mUserId = 0;
+        this.backupManagerService = backupManagerService;
     }
 
     // This task can assume that the wakelock is properly held for it and doesn't have to worry
@@ -190,8 +188,7 @@
             int pmToken,
             boolean isFullSystemRestore,
             @Nullable String[] filterSet,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         this.backupManagerService = backupManagerService;
         mUserId = backupManagerService.getUserId();
         mTransportManager = backupManagerService.getTransportManager();
@@ -213,8 +210,6 @@
                 backupManagerService.getAgentTimeoutParameters(),
                 "Timeout parameters cannot be null");
 
-        mExcludedKeys = excludedKeys;
-
         if (targetPackage != null) {
             // Single package restore
             mAcceptSet = new ArrayList<>();
@@ -791,8 +786,9 @@
                 !getExcludedKeysForPackage(PLATFORM_PACKAGE_NAME).isEmpty();
     }
 
-    private Set<String> getExcludedKeysForPackage(String packageName) {
-        return mExcludedKeys.getOrDefault(packageName, Collections.emptySet());
+    @VisibleForTesting
+    Set<String> getExcludedKeysForPackage(String packageName) {
+        return backupManagerService.getExcludedRestoreKeys(packageName);
     }
 
     @VisibleForTesting
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
index 5602d1a8..31ea5faa 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureManagerService.java
@@ -45,10 +45,8 @@
 import android.os.Binder;
 import android.os.Build;
 import android.os.Bundle;
-import android.os.CancellationSignal;
 import android.os.Handler;
 import android.os.IBinder;
-import android.os.ICancellationSignal;
 import android.os.Looper;
 import android.os.ParcelFileDescriptor;
 import android.os.RemoteException;
@@ -73,7 +71,6 @@
 import android.view.contentcapture.ContentCaptureManager;
 import android.view.contentcapture.DataRemovalRequest;
 import android.view.contentcapture.DataShareRequest;
-import android.view.contentcapture.DataShareWriteAdapter;
 import android.view.contentcapture.IContentCaptureManager;
 import android.view.contentcapture.IDataShareWriteAdapter;
 
@@ -648,7 +645,6 @@
 
         @Override
         public void shareData(@NonNull DataShareRequest request,
-                @NonNull ICancellationSignal clientCancellationSignal,
                 @NonNull IDataShareWriteAdapter clientAdapter) {
             Preconditions.checkNotNull(request);
             Preconditions.checkNotNull(clientAdapter);
@@ -662,7 +658,8 @@
                 if (mPackagesWithShareRequests.size() >= MAX_CONCURRENT_FILE_SHARING_REQUESTS
                         || mPackagesWithShareRequests.contains(request.getPackageName())) {
                     try {
-                        clientAdapter.error(DataShareWriteAdapter.ERROR_CONCURRENT_REQUEST);
+                        clientAdapter.error(
+                                ContentCaptureManager.DATA_SHARE_ERROR_CONCURRENT_REQUEST);
                     } catch (RemoteException e) {
                         Slog.e(TAG, "Failed to send error message to client");
                     }
@@ -670,8 +667,8 @@
                 }
 
                 service.onDataSharedLocked(request,
-                        new DataShareCallbackDelegate(request, clientCancellationSignal,
-                                clientAdapter, ContentCaptureManagerService.this));
+                        new DataShareCallbackDelegate(request, clientAdapter,
+                                ContentCaptureManagerService.this));
             }
         }
 
@@ -922,41 +919,36 @@
     private static class DataShareCallbackDelegate extends IDataShareCallback.Stub {
 
         @NonNull private final DataShareRequest mDataShareRequest;
-        @NonNull
-        private final WeakReference<ICancellationSignal> mClientCancellationSignalReference;
         @NonNull private final WeakReference<IDataShareWriteAdapter> mClientAdapterReference;
         @NonNull private final WeakReference<ContentCaptureManagerService> mParentServiceReference;
 
         DataShareCallbackDelegate(@NonNull DataShareRequest dataShareRequest,
-                @NonNull ICancellationSignal clientCancellationSignal,
                 @NonNull IDataShareWriteAdapter clientAdapter,
                 ContentCaptureManagerService parentService) {
             mDataShareRequest = dataShareRequest;
-            mClientCancellationSignalReference = new WeakReference<>(clientCancellationSignal);
             mClientAdapterReference = new WeakReference<>(clientAdapter);
             mParentServiceReference = new WeakReference<>(parentService);
         }
 
         @Override
-        public void accept(ICancellationSignal serviceCancellationSignal,
-                IDataShareReadAdapter serviceAdapter) throws RemoteException {
+        public void accept(IDataShareReadAdapter serviceAdapter) throws RemoteException {
             Slog.i(TAG, "Data share request accepted by Content Capture service");
 
             final ContentCaptureManagerService parentService = mParentServiceReference.get();
-            final ICancellationSignal clientCancellationSignal =
-                    mClientCancellationSignalReference.get();
             final IDataShareWriteAdapter clientAdapter = mClientAdapterReference.get();
-            if (parentService == null || clientCancellationSignal == null
-                    || clientAdapter == null) {
+            if (parentService == null || clientAdapter == null) {
                 Slog.w(TAG, "Can't fulfill accept() request, because remote objects have been "
                         + "GC'ed");
                 return;
             }
 
+            final WeakReference<IDataShareReadAdapter> serviceAdapterReference =
+                    new WeakReference<>(serviceAdapter);
+
             Pair<ParcelFileDescriptor, ParcelFileDescriptor> clientPipe = createPipe();
             if (clientPipe == null) {
-                clientAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
-                serviceAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
+                clientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN);
+                serviceAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN);
                 return;
             }
 
@@ -967,31 +959,18 @@
             if (servicePipe == null) {
                 bestEffortCloseFileDescriptors(sourceIn, sinkIn);
 
-                clientAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
-                serviceAdapter.error(DataShareWriteAdapter.ERROR_UNKNOWN);
+                clientAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN);
+                serviceAdapter.error(ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN);
                 return;
             }
 
             ParcelFileDescriptor sourceOut = servicePipe.second;
             ParcelFileDescriptor sinkOut = servicePipe.first;
 
-            ICancellationSignal cancellationSignalTransport =
-                    CancellationSignal.createTransport();
             parentService.mPackagesWithShareRequests.add(mDataShareRequest.getPackageName());
 
             clientAdapter.write(sourceIn);
-            serviceAdapter.start(sinkOut, cancellationSignalTransport);
-
-            CancellationSignal cancellationSignal =
-                    CancellationSignal.fromTransport(cancellationSignalTransport);
-
-            cancellationSignal.setOnCancelListener(() -> {
-                try {
-                    clientCancellationSignal.cancel();
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "Failed to propagate cancel operation to the caller", e);
-                }
-            });
+            serviceAdapter.start(sinkOut);
 
             // File descriptor received by the client app will be a copy of the current one. Close
             // the one that belongs to the system server, so there's only 1 open left for the
@@ -1016,6 +995,9 @@
                     }
                 } catch (IOException e) {
                     Slog.e(TAG, "Failed to pipe client and service streams", e);
+
+                    sendErrorSignal(mClientAdapterReference, serviceAdapterReference,
+                            ContentCaptureManager.DATA_SHARE_ERROR_UNKNOWN);
                 }
             });
 
@@ -1025,7 +1007,7 @@
                             sinkIn,
                             sourceOut,
                             sinkOut,
-                            new WeakReference<>(serviceCancellationSignal)),
+                            serviceAdapterReference),
                     MAX_DATA_SHARE_FILE_DESCRIPTORS_TTL_MS);
         }
 
@@ -1047,15 +1029,10 @@
                 ParcelFileDescriptor sinkIn,
                 ParcelFileDescriptor sourceOut,
                 ParcelFileDescriptor sinkOut,
-                WeakReference<ICancellationSignal> serviceCancellationSignalReference) {
+                WeakReference<IDataShareReadAdapter> serviceAdapterReference) {
 
             final ContentCaptureManagerService parentService = mParentServiceReference.get();
-            final ICancellationSignal clientCancellationSignal =
-                    mClientCancellationSignalReference.get();
-            final ICancellationSignal serviceCancellationSignal =
-                    serviceCancellationSignalReference.get();
-            if (parentService == null || clientCancellationSignal == null
-                    || serviceCancellationSignal == null) {
+            if (parentService == null) {
                 Slog.w(TAG, "Can't enforce data sharing TTL, because remote objects have been "
                         + "GC'ed");
                 return;
@@ -1067,7 +1044,7 @@
 
                 // Interaction finished successfully <=> all data has been written to Content
                 // Capture Service. If it hasn't been read successfully, service would be able
-                // to signal through the cancellation signal.
+                // to signal by closing the input stream while not have finished reading.
                 boolean finishedSuccessfully = !sinkIn.getFileDescriptor().valid()
                         && !sourceOut.getFileDescriptor().valid();
 
@@ -1087,16 +1064,8 @@
                 bestEffortCloseFileDescriptors(sourceIn, sinkIn, sourceOut, sinkOut);
 
                 if (!finishedSuccessfully) {
-                    try {
-                        clientCancellationSignal.cancel();
-                    } catch (RemoteException e) {
-                        Slog.e(TAG, "Failed to cancel() the client operation", e);
-                    }
-                    try {
-                        serviceCancellationSignal.cancel();
-                    } catch (RemoteException e) {
-                        Slog.e(TAG, "Failed to cancel() the service operation", e);
-                    }
+                    sendErrorSignal(mClientAdapterReference, serviceAdapterReference,
+                            ContentCaptureManager.DATA_SHARE_ERROR_TIMEOUT_INTERRUPTED);
                 }
             }
         }
@@ -1139,5 +1108,31 @@
                 bestEffortCloseFileDescriptor(fd);
             }
         }
+
+        private static void sendErrorSignal(
+                WeakReference<IDataShareWriteAdapter> clientAdapterReference,
+                WeakReference<IDataShareReadAdapter> serviceAdapterReference,
+                int errorCode) {
+
+            final IDataShareWriteAdapter clientAdapter = clientAdapterReference.get();
+            final IDataShareReadAdapter serviceAdapter = serviceAdapterReference.get();
+
+            if (clientAdapter == null || serviceAdapter == null) {
+                Slog.w(TAG, "Can't propagate error() to read/write data share adapters, because "
+                        + "remote objects have been GC'ed");
+                return;
+            }
+
+            try {
+                clientAdapter.error(errorCode);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Failed to call error() the client operation", e);
+            }
+            try {
+                serviceAdapter.error(errorCode);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Failed to call error() the service operation", e);
+            }
+        }
     }
 }
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
index dd1b84b..7ea4eff 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCaptureMetricsLogger.java
@@ -20,7 +20,8 @@
 import android.content.ComponentName;
 import android.content.ContentCaptureOptions;
 import android.service.contentcapture.FlushMetrics;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.util.List;
 
@@ -35,8 +36,8 @@
     /** @hide */
     public static void writeServiceEvent(int eventType, @NonNull String serviceName,
             @Nullable String targetPackage) {
-        StatsLog.write(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS, eventType, serviceName,
-                targetPackage);
+        FrameworkStatsLog.write(FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS, eventType,
+                serviceName, targetPackage);
     }
 
     /** @hide */
@@ -79,16 +80,16 @@
                 stringBuilder.append(activities.get(i).flattenToShortString());
             }
         }
-        StatsLog.write(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS,
-                StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__SET_WHITELIST,
+        FrameworkStatsLog.write(FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS,
+                FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__SET_WHITELIST,
                 serviceName, stringBuilder.toString());
     }
 
     /** @hide */
     public static void writeSessionEvent(int sessionId, int event, int flags,
             @NonNull ComponentName service, @Nullable ComponentName app, boolean isChildSession) {
-        StatsLog.write(StatsLog.CONTENT_CAPTURE_SESSION_EVENTS, sessionId, event, flags,
-                ComponentName.flattenToShortString(service),
+        FrameworkStatsLog.write(FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS, sessionId, event,
+                flags, ComponentName.flattenToShortString(service),
                 ComponentName.flattenToShortString(app), isChildSession);
     }
 
@@ -96,7 +97,7 @@
     public static void writeSessionFlush(int sessionId, @NonNull ComponentName service,
             @Nullable ComponentName app, @NonNull FlushMetrics fm,
             @NonNull ContentCaptureOptions options, int flushReason) {
-        StatsLog.write(StatsLog.CONTENT_CAPTURE_FLUSHED, sessionId,
+        FrameworkStatsLog.write(FrameworkStatsLog.CONTENT_CAPTURE_FLUSHED, sessionId,
                 ComponentName.flattenToShortString(service),
                 ComponentName.flattenToShortString(app), fm.sessionStarted, fm.sessionFinished,
                 fm.viewAppearedCount, fm.viewDisappearedCount, fm.viewTextChangedCount,
diff --git a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
index 0f1122e..32bca35 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/ContentCapturePerUserService.java
@@ -61,13 +61,13 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
-import android.util.StatsLog;
 import android.view.contentcapture.ContentCaptureCondition;
 import android.view.contentcapture.DataRemovalRequest;
 import android.view.contentcapture.DataShareRequest;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.os.IResultReceiver;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.contentcapture.RemoteContentCaptureService.ContentCaptureServiceCallbacks;
 import com.android.server.infra.AbstractPerUserSystemService;
@@ -275,7 +275,7 @@
                     /* binder= */ null);
             // Log metrics.
             writeSessionEvent(sessionId,
-                    StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
+                    FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
                     STATE_DISABLED | STATE_NO_SERVICE, serviceComponentName,
                     componentName, /* isChildSession= */ false);
             return;
@@ -299,7 +299,7 @@
                     /* binder= */ null);
             // Log metrics.
             writeSessionEvent(sessionId,
-                    StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
+                    FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
                     STATE_DISABLED | STATE_NOT_WHITELISTED, serviceComponentName,
                     componentName, /* isChildSession= */ false);
             return;
@@ -313,7 +313,7 @@
                     /* binder=*/ null);
             // Log metrics.
             writeSessionEvent(sessionId,
-                    StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
+                    FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
                     STATE_DISABLED | STATE_DUPLICATED_ID,
                     serviceComponentName, componentName, /* isChildSession= */ false);
             return;
@@ -330,7 +330,7 @@
                     /* binder= */ null);
             // Log metrics.
             writeSessionEvent(sessionId,
-                    StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
+                    FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__SESSION_NOT_CREATED,
                     STATE_DISABLED | STATE_NO_SERVICE, serviceComponentName,
                     componentName, /* isChildSession= */ false);
             return;
@@ -426,18 +426,26 @@
     public boolean sendActivityAssistDataLocked(@NonNull IBinder activityToken,
             @NonNull Bundle data) {
         final int id = getSessionId(activityToken);
+        final Bundle assistData = data.getBundle(ASSIST_KEY_DATA);
+        final AssistStructure assistStructure = data.getParcelable(ASSIST_KEY_STRUCTURE);
+        final AssistContent assistContent = data.getParcelable(ASSIST_KEY_CONTENT);
+        final SnapshotData snapshotData = new SnapshotData(assistData,
+                assistStructure, assistContent);
         if (id != NO_SESSION_ID) {
             final ContentCaptureServerSession session = mSessions.get(id);
-            final Bundle assistData = data.getBundle(ASSIST_KEY_DATA);
-            final AssistStructure assistStructure = data.getParcelable(ASSIST_KEY_STRUCTURE);
-            final AssistContent assistContent = data.getParcelable(ASSIST_KEY_CONTENT);
-            final SnapshotData snapshotData = new SnapshotData(assistData,
-                    assistStructure, assistContent);
             session.sendActivitySnapshotLocked(snapshotData);
             return true;
-        } else {
-            Slog.e(TAG, "Failed to notify activity assist data for activity: " + activityToken);
         }
+
+        // We want to send an activity snapshot regardless of whether a content capture session is
+        // present or not since a content capture session is not required for this functionality
+        if (mRemoteService != null) {
+            mRemoteService.onActivitySnapshotRequest(NO_SESSION_ID, snapshotData);
+            Slog.d(TAG, "Notified activity assist data for activity: "
+                    + activityToken + " without a session Id");
+            return true;
+        }
+
         return false;
     }
 
@@ -651,7 +659,7 @@
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
-            writeServiceEvent(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__SET_DISABLED,
+            writeServiceEvent(FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__SET_DISABLED,
                     getServiceComponentName());
         }
 
diff --git a/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java b/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
index c16df0f..9a170ac 100644
--- a/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
+++ b/services/contentcapture/java/com/android/server/contentcapture/RemoteContentCaptureService.java
@@ -32,13 +32,13 @@
 import android.service.contentcapture.IDataShareCallback;
 import android.service.contentcapture.SnapshotData;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.view.contentcapture.ContentCaptureContext;
 import android.view.contentcapture.DataRemovalRequest;
 import android.view.contentcapture.DataShareRequest;
 
 import com.android.internal.infra.AbstractMultiplePendingRequestsRemoteService;
 import com.android.internal.os.IResultReceiver;
+import com.android.internal.util.FrameworkStatsLog;
 
 final class RemoteContentCaptureService
         extends AbstractMultiplePendingRequestsRemoteService<RemoteContentCaptureService,
@@ -83,7 +83,8 @@
             if (connected) {
                 try {
                     mService.onConnected(mServerCallback, sVerbose, sDebug);
-                    writeServiceEvent(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_CONNECTED,
+                    writeServiceEvent(
+                            FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_CONNECTED,
                             mComponentName);
                 } finally {
                     // Update the system-service state, in case the service reconnected after
@@ -92,7 +93,8 @@
                 }
             } else {
                 mService.onDisconnected();
-                writeServiceEvent(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_DISCONNECTED,
+                writeServiceEvent(
+                        FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_DISCONNECTED,
                         mComponentName);
             }
         } catch (Exception e) {
@@ -114,8 +116,9 @@
                 (s) -> s.onSessionStarted(context, sessionId, uid, clientReceiver, initialState));
         // Metrics logging.
         writeSessionEvent(sessionId,
-                StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__ON_SESSION_STARTED, initialState,
-                getComponentName(), context.getActivityComponent(), /* is_child_session= */ false);
+                FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__ON_SESSION_STARTED,
+                initialState, getComponentName(), context.getActivityComponent(),
+                /* is_child_session= */ false);
     }
 
     /**
@@ -126,7 +129,7 @@
         scheduleAsyncRequest((s) -> s.onSessionFinished(sessionId));
         // Metrics logging.
         writeSessionEvent(sessionId,
-                StatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__ON_SESSION_FINISHED,
+                FrameworkStatsLog.CONTENT_CAPTURE_SESSION_EVENTS__EVENT__ON_SESSION_FINISHED,
                 /* flags= */ 0, getComponentName(), /* app= */ null,
                 /* is_child_session= */ false);
     }
@@ -143,7 +146,8 @@
      */
     public void onDataRemovalRequest(@NonNull DataRemovalRequest request) {
         scheduleAsyncRequest((s) -> s.onDataRemovalRequest(request));
-        writeServiceEvent(StatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_USER_DATA_REMOVED,
+        writeServiceEvent(
+                FrameworkStatsLog.CONTENT_CAPTURE_SERVICE_EVENTS__EVENT__ON_USER_DATA_REMOVED,
                 mComponentName);
     }
 
diff --git a/services/core/Android.bp b/services/core/Android.bp
index a603fa9..6fc6084 100644
--- a/services/core/Android.bp
+++ b/services/core/Android.bp
@@ -98,7 +98,7 @@
         "android.hardware.tv.cec-V1.0-java",
         "android.hardware.vibrator-java",
         "app-compat-annotations",
-        "framework-tethering",
+        "framework-tethering-stubs",
     ],
 
     required: [
@@ -115,8 +115,8 @@
         "android.hardware.health-V2.0-java",
         "android.hardware.light-java",
         "android.hardware.weaver-V1.0-java",
-        "android.hardware.biometrics.face-V1.0-java",
-        "android.hardware.biometrics.fingerprint-V2.1-java",
+        "android.hardware.biometrics.face-V1.1-java",
+        "android.hardware.biometrics.fingerprint-V2.2-java",
         "android.hardware.oemlock-V1.0-java",
         "android.hardware.configstore-V1.0-java",
         "android.hardware.contexthub-V1.0-java",
diff --git a/services/core/java/android/app/usage/UsageStatsManagerInternal.java b/services/core/java/android/app/usage/UsageStatsManagerInternal.java
index a8be669..442c9e5 100644
--- a/services/core/java/android/app/usage/UsageStatsManagerInternal.java
+++ b/services/core/java/android/app/usage/UsageStatsManagerInternal.java
@@ -215,9 +215,18 @@
 
     /**
      * Returns the events for the user in the given time period.
+     *
+     * @param obfuscateInstantApps whether instant app package names need to be obfuscated in the
+     *     result.
+     * @param hideShortcutInvocationEvents whether the {@link UsageEvents.Event#SHORTCUT_INVOCATION}
+     *     events need to be excluded from the result.
+     * @param hideLocusIdEvents whether the {@link UsageEvents.Event#LOCUS_ID_SET}
+     *     events need to be excluded from the result.
+     *
      */
     public abstract UsageEvents queryEventsForUser(@UserIdInt int userId, long beginTime,
-            long endTime, boolean shouldObfuscateInstantApps);
+            long endTime, boolean obfuscateInstantApps, boolean hideShortcutInvocationEvents,
+            boolean hideLocusIdEvents);
 
     /**
      * Used to persist the last time a job was run for this app, in order to make decisions later
diff --git a/services/core/java/android/content/pm/PackageManagerInternal.java b/services/core/java/android/content/pm/PackageManagerInternal.java
index 27b6bfb..63d0924 100644
--- a/services/core/java/android/content/pm/PackageManagerInternal.java
+++ b/services/core/java/android/content/pm/PackageManagerInternal.java
@@ -67,6 +67,7 @@
     public static final int PACKAGE_TELEPHONY = 12;
     public static final int PACKAGE_WIFI = 13;
     public static final int PACKAGE_COMPANION = 14;
+    public static final int PACKAGE_RETAIL_DEMO = 15;
 
     @IntDef(value = {
             INTEGRITY_VERIFICATION_ALLOW,
@@ -105,6 +106,7 @@
         PACKAGE_TELEPHONY,
         PACKAGE_WIFI,
         PACKAGE_COMPANION,
+        PACKAGE_RETAIL_DEMO,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface KnownPackage {}
@@ -394,6 +396,7 @@
      * @param origIntent The original intent that triggered ephemeral resolution
      * @param resolvedType The resolved type of the intent
      * @param callingPkg The app requesting the ephemeral application
+     * @param callingFeatureId The feature in the package
      * @param isRequesterInstantApp Whether or not the app requesting the ephemeral application
      *                              is an instant app
      * @param verificationBundle Optional bundle to pass to the installer for additional
@@ -402,7 +405,8 @@
      */
     public abstract void requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj,
             Intent origIntent, String resolvedType, String callingPkg,
-            boolean isRequesterInstantApp, Bundle verificationBundle, int userId);
+            @Nullable String callingFeatureId, boolean isRequesterInstantApp,
+            Bundle verificationBundle, int userId);
 
     /**
      * Grants implicit access based on an interaction between two apps. This grants the target app
diff --git a/services/core/java/com/android/server/AlarmManagerService.java b/services/core/java/com/android/server/AlarmManagerService.java
index 0f2fb92..3441a5f 100644
--- a/services/core/java/com/android/server/AlarmManagerService.java
+++ b/services/core/java/com/android/server/AlarmManagerService.java
@@ -86,7 +86,6 @@
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
 import android.util.SparseLongArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
@@ -94,6 +93,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.LocalLog;
 import com.android.internal.util.StatLogger;
@@ -331,12 +331,16 @@
             return (history == null) ? 0 : history.size();
         }
 
-        long getLastWakeupForPackage(String packageName, int userId, int positionFromEnd) {
+        /**
+         * @param n The desired nth-last wakeup
+         *                (1=1st-last=the ultimate wakeup and 2=2nd-last=the penultimate wakeup)
+         */
+        long getNthLastWakeupForPackage(String packageName, int userId, int n) {
             final LongArrayQueue history = mPackageHistory.get(Pair.create(packageName, userId));
             if (history == null) {
                 return 0;
             }
-            final int i = history.size() - positionFromEnd;
+            final int i = history.size() - n;
             return (i < 0) ? 0 : history.get(i);
         }
 
@@ -400,6 +404,11 @@
                 "standby_rare_quota",
                 "standby_never_quota",
         };
+        // Not putting this in the KEYS_APP_STANDBY_QUOTAS array because this uses a different
+        // window size.
+        private static final String KEY_APP_STANDBY_RESTRICTED_QUOTA = "standby_restricted_quota";
+        private static final String KEY_APP_STANDBY_RESTRICTED_WINDOW =
+                "app_standby_restricted_window";
 
         private static final long DEFAULT_MIN_FUTURITY = 5 * 1000;
         private static final long DEFAULT_MIN_INTERVAL = 60 * 1000;
@@ -420,6 +429,8 @@
                 1,      // Rare
                 0       // Never
         };
+        private static final int DEFAULT_APP_STANDBY_RESTRICTED_QUOTA = 1;
+        private static final long DEFAULT_APP_STANDBY_RESTRICTED_WINDOW = MILLIS_IN_DAY;
 
         // Minimum futurity of a new alarm
         public long MIN_FUTURITY = DEFAULT_MIN_FUTURITY;
@@ -446,6 +457,8 @@
 
         public long APP_STANDBY_WINDOW = DEFAULT_APP_STANDBY_WINDOW;
         public int[] APP_STANDBY_QUOTAS = new int[DEFAULT_APP_STANDBY_QUOTAS.length];
+        public int APP_STANDBY_RESTRICTED_QUOTA = DEFAULT_APP_STANDBY_RESTRICTED_QUOTA;
+        public long APP_STANDBY_RESTRICTED_WINDOW = DEFAULT_APP_STANDBY_RESTRICTED_WINDOW;
 
         private ContentResolver mResolver;
         private final KeyValueListParser mParser = new KeyValueListParser(',');
@@ -520,6 +533,14 @@
                             Math.min(APP_STANDBY_QUOTAS[i - 1], DEFAULT_APP_STANDBY_QUOTAS[i]));
                 }
 
+                APP_STANDBY_RESTRICTED_QUOTA = Math.max(1,
+                        mParser.getInt(KEY_APP_STANDBY_RESTRICTED_QUOTA,
+                                DEFAULT_APP_STANDBY_RESTRICTED_QUOTA));
+
+                APP_STANDBY_RESTRICTED_WINDOW = Math.max(APP_STANDBY_WINDOW,
+                        mParser.getLong(KEY_APP_STANDBY_RESTRICTED_WINDOW,
+                                DEFAULT_APP_STANDBY_RESTRICTED_WINDOW));
+
                 MAX_ALARMS_PER_UID = mParser.getInt(KEY_MAX_ALARMS_PER_UID,
                         DEFAULT_MAX_ALARMS_PER_UID);
                 if (MAX_ALARMS_PER_UID < DEFAULT_MAX_ALARMS_PER_UID) {
@@ -581,6 +602,14 @@
                 pw.println(APP_STANDBY_QUOTAS[i]);
             }
 
+            pw.print(KEY_APP_STANDBY_RESTRICTED_QUOTA); pw.print("=");
+            TimeUtils.formatDuration(APP_STANDBY_RESTRICTED_QUOTA, pw);
+            pw.println();
+
+            pw.print(KEY_APP_STANDBY_RESTRICTED_WINDOW); pw.print("=");
+            TimeUtils.formatDuration(APP_STANDBY_RESTRICTED_WINDOW, pw);
+            pw.println();
+
             pw.decreaseIndent();
         }
 
@@ -1814,25 +1843,44 @@
                 sourcePackage, sourceUserId, mInjector.getElapsedRealtime());
 
         // Quota deferring implementation:
+        boolean deferred = false;
         final int wakeupsInWindow = mAppWakeupHistory.getTotalWakeupsInWindow(sourcePackage,
                 sourceUserId);
-        final int quotaForBucket = getQuotaForBucketLocked(standbyBucket);
-        boolean deferred = false;
-        if (wakeupsInWindow >= quotaForBucket) {
-            final long minElapsed;
-            if (quotaForBucket <= 0) {
-                // Just keep deferring for a day till the quota changes
-                minElapsed = mInjector.getElapsedRealtime() + MILLIS_IN_DAY;
-            } else {
-                // Suppose the quota for window was q, and the qth last delivery time for this
-                // package was t(q) then the next delivery must be after t(q) + <window_size>
-                final long t = mAppWakeupHistory.getLastWakeupForPackage(sourcePackage,
-                        sourceUserId, quotaForBucket);
-                minElapsed = t + 1 + mConstants.APP_STANDBY_WINDOW;
+        if (standbyBucket == UsageStatsManager.STANDBY_BUCKET_RESTRICTED) {
+            // Special case because it's 1/day instead of 1/hour.
+            // AppWakeupHistory doesn't delete old wakeup times until a new one is logged, so we
+            // should always have the last wakeup available.
+            if (wakeupsInWindow > 0) {
+                final long lastWakeupTime = mAppWakeupHistory.getNthLastWakeupForPackage(
+                        sourcePackage, sourceUserId, mConstants.APP_STANDBY_RESTRICTED_QUOTA);
+                if (mInjector.getElapsedRealtime() - lastWakeupTime
+                        < mConstants.APP_STANDBY_RESTRICTED_WINDOW) {
+                    final long minElapsed =
+                            lastWakeupTime + mConstants.APP_STANDBY_RESTRICTED_WINDOW;
+                    if (alarm.expectedWhenElapsed < minElapsed) {
+                        alarm.whenElapsed = alarm.maxWhenElapsed = minElapsed;
+                        deferred = true;
+                    }
+                }
             }
-            if (alarm.expectedWhenElapsed < minElapsed) {
-                alarm.whenElapsed = alarm.maxWhenElapsed = minElapsed;
-                deferred = true;
+        } else {
+            final int quotaForBucket = getQuotaForBucketLocked(standbyBucket);
+            if (wakeupsInWindow >= quotaForBucket) {
+                final long minElapsed;
+                if (quotaForBucket <= 0) {
+                    // Just keep deferring for a day till the quota changes
+                    minElapsed = mInjector.getElapsedRealtime() + MILLIS_IN_DAY;
+                } else {
+                    // Suppose the quota for window was q, and the qth last delivery time for this
+                    // package was t(q) then the next delivery must be after t(q) + <window_size>
+                    final long t = mAppWakeupHistory.getNthLastWakeupForPackage(
+                            sourcePackage, sourceUserId, quotaForBucket);
+                    minElapsed = t + 1 + mConstants.APP_STANDBY_WINDOW;
+                }
+                if (alarm.expectedWhenElapsed < minElapsed) {
+                    alarm.whenElapsed = alarm.maxWhenElapsed = minElapsed;
+                    deferred = true;
+                }
             }
         }
         if (!deferred) {
@@ -3915,7 +3963,7 @@
                             Slog.v(TAG, "Time changed notification from kernel; rebatching");
                         }
                         // StatsLog requires currentTimeMillis(), which == nowRTC to within usecs.
-                        StatsLog.write(StatsLog.WALL_CLOCK_TIME_SHIFTED, nowRTC);
+                        FrameworkStatsLog.write(FrameworkStatsLog.WALL_CLOCK_TIME_SHIFTED, nowRTC);
                         removeImpl(null, mTimeTickTrigger);
                         removeImpl(mDateChangeSender, null);
                         rebatchAllAlarms();
diff --git a/services/core/java/com/android/server/BatteryService.java b/services/core/java/com/android/server/BatteryService.java
index 8074900..c8894e7 100644
--- a/services/core/java/com/android/server/BatteryService.java
+++ b/services/core/java/com/android/server/BatteryService.java
@@ -18,6 +18,7 @@
 
 import static com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
 import android.content.ContentResolver;
@@ -1318,8 +1319,7 @@
      *
      * @hide Should only be used internally.
      */
-    @VisibleForTesting
-    static final class HealthServiceWrapper {
+    public static final class HealthServiceWrapper {
         private static final String TAG = "HealthServiceWrapper";
         public static final String INSTANCE_HEALTHD = "backup";
         public static final String INSTANCE_VENDOR = "default";
@@ -1341,20 +1341,28 @@
          * init should be called after constructor. For testing purposes, init is not called by
          * constructor.
          */
-        HealthServiceWrapper() {
+        public HealthServiceWrapper() {
         }
 
-        IHealth getLastService() {
+        public IHealth getLastService() {
             return mLastService.get();
         }
 
         /**
+         * See {@link #init(Callback, IServiceManagerSupplier, IHealthSupplier)}
+         */
+        public void init() throws RemoteException, NoSuchElementException {
+            init(/* callback= */null, new HealthServiceWrapper.IServiceManagerSupplier() {},
+                    new HealthServiceWrapper.IHealthSupplier() {});
+        }
+
+        /**
          * Start monitoring registration of new IHealth services. Only instances that are in
          * {@code sAllInstances} and in device / framework manifest are used. This function should
          * only be called once.
          *
          * mCallback.onRegistration() is called synchronously (aka in init thread) before
-         * this method returns.
+         * this method returns if callback is not null.
          *
          * @throws RemoteException transaction error when talking to IServiceManager
          * @throws NoSuchElementException if one of the following cases:
@@ -1362,18 +1370,17 @@
          *         - none of {@code sAllInstances} are in manifests (i.e. not
          *           available on this device), or none of these instances are available to current
          *           process.
-         * @throws NullPointerException when callback is null or supplier is null
+         * @throws NullPointerException when supplier is null
          */
-        void init(Callback callback,
+        void init(@Nullable Callback callback,
                   IServiceManagerSupplier managerSupplier,
                   IHealthSupplier healthSupplier)
                 throws RemoteException, NoSuchElementException, NullPointerException {
-            if (callback == null || managerSupplier == null || healthSupplier == null)
+            if (managerSupplier == null || healthSupplier == null) {
                 throw new NullPointerException();
-
+            }
             IServiceManager manager;
 
-            mCallback = callback;
             mHealthSupplier = healthSupplier;
 
             // Initialize mLastService and call callback for the first time (in init thread)
@@ -1399,7 +1406,11 @@
                         "No IHealth service instance among %s is available. Perhaps no permission?",
                         sAllInstances.toString()));
             }
-            mCallback.onRegistration(null, newService, mInstanceName);
+
+            if (callback != null) {
+                mCallback = callback;
+                mCallback.onRegistration(null, newService, mInstanceName);
+            }
 
             // Register for future service registrations
             traceBegin("HealthInitRegisterNotification");
diff --git a/services/core/java/com/android/server/BluetoothManagerService.java b/services/core/java/com/android/server/BluetoothManagerService.java
index 3774b64..311a494 100644
--- a/services/core/java/com/android/server/BluetoothManagerService.java
+++ b/services/core/java/com/android/server/BluetoothManagerService.java
@@ -69,17 +69,17 @@
 import android.util.FeatureFlagUtils;
 import android.util.Log;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.pm.UserRestrictionsUtils;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
-import java.util.HashMap;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.LinkedList;
 import java.util.Locale;
 import java.util.Map;
@@ -87,7 +87,6 @@
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.locks.ReentrantReadWriteLock;
 
-
 class BluetoothManagerService extends IBluetoothManager.Stub {
     private static final String TAG = "BluetoothManagerService";
     private static final boolean DBG = true;
@@ -2300,9 +2299,9 @@
                     new ActiveLog(reason, packageName, enable, System.currentTimeMillis()));
         }
 
-        int state = enable ? StatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__ENABLED :
-                             StatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__DISABLED;
-        StatsLog.write_non_chained(StatsLog.BLUETOOTH_ENABLED_STATE_CHANGED,
+        int state = enable ? FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__ENABLED :
+                             FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED__STATE__DISABLED;
+        FrameworkStatsLog.write_non_chained(FrameworkStatsLog.BLUETOOTH_ENABLED_STATE_CHANGED,
                 Binder.getCallingUid(), null, state, reason, packageName);
     }
 
diff --git a/services/core/java/com/android/server/ConnectivityService.java b/services/core/java/com/android/server/ConnectivityService.java
index d933e9d..b334b26 100644
--- a/services/core/java/com/android/server/ConnectivityService.java
+++ b/services/core/java/com/android/server/ConnectivityService.java
@@ -48,8 +48,11 @@
 import static android.system.OsConstants.IPPROTO_TCP;
 import static android.system.OsConstants.IPPROTO_UDP;
 
+import static java.util.Map.Entry;
+
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.app.AppOpsManager;
 import android.app.BroadcastOptions;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
@@ -62,6 +65,8 @@
 import android.database.ContentObserver;
 import android.net.CaptivePortal;
 import android.net.ConnectionInfo;
+import android.net.ConnectivityDiagnosticsManager.ConnectivityReport;
+import android.net.ConnectivityDiagnosticsManager.DataStallReport;
 import android.net.ConnectivityManager;
 import android.net.ICaptivePortal;
 import android.net.IConnectivityDiagnosticsCallback;
@@ -109,6 +114,7 @@
 import android.net.TetheringManager;
 import android.net.UidRange;
 import android.net.Uri;
+import android.net.VpnManager;
 import android.net.VpnService;
 import android.net.metrics.IpConnectivityLog;
 import android.net.metrics.NetworkEvent;
@@ -129,6 +135,7 @@
 import android.os.Messenger;
 import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
+import android.os.PersistableBundle;
 import android.os.PowerManager;
 import android.os.Process;
 import android.os.RemoteException;
@@ -146,7 +153,6 @@
 import android.security.KeyStore;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
-import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.LocalLog;
 import android.util.Log;
@@ -169,6 +175,7 @@
 import com.android.internal.util.AsyncChannel;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.internal.util.LocationPermissionChecker;
 import com.android.internal.util.MessageUtils;
 import com.android.internal.util.XmlUtils;
 import com.android.server.am.BatteryStatsService;
@@ -185,6 +192,7 @@
 import com.android.server.connectivity.NetworkDiagnostics;
 import com.android.server.connectivity.NetworkNotificationManager;
 import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
+import com.android.server.connectivity.NetworkRanker;
 import com.android.server.connectivity.PermissionMonitor;
 import com.android.server.connectivity.ProxyTracker;
 import com.android.server.connectivity.Vpn;
@@ -221,6 +229,7 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.SortedSet;
+import java.util.StringJoiner;
 import java.util.TreeSet;
 import java.util.concurrent.atomic.AtomicInteger;
 
@@ -491,9 +500,9 @@
      /**
       * Event for NetworkMonitor/NetworkAgentInfo to inform ConnectivityService that the network has
       * been tested.
-      * obj = String representing URL that Internet probe was redirect to, if it was redirected.
-      * arg1 = One of the NETWORK_TESTED_RESULT_* constants.
-      * arg2 = NetID.
+      * obj = {@link NetworkTestedResults} representing information sent from NetworkMonitor.
+      * data = PersistableBundle of extras passed from NetworkMonitor. If {@link
+      * NetworkMonitorCallbacks#notifyNetworkTested} is called, this will be null.
       */
     private static final int EVENT_NETWORK_TESTED = 41;
 
@@ -557,14 +566,19 @@
                 .asInterface(ServiceManager.getService("dnsresolver"));
     }
 
-    /** Handler thread used for both of the handlers below. */
+    /** Handler thread used for all of the handlers below. */
     @VisibleForTesting
     protected final HandlerThread mHandlerThread;
     /** Handler used for internal events. */
     final private InternalHandler mHandler;
     /** Handler used for incoming {@link NetworkStateTracker} events. */
     final private NetworkStateTrackerHandler mTrackerHandler;
+    /** Handler used for processing {@link android.net.ConnectivityDiagnosticsManager} events */
+    @VisibleForTesting
+    final ConnectivityDiagnosticsHandler mConnectivityDiagnosticsHandler;
+
     private final DnsManager mDnsManager;
+    private final NetworkRanker mNetworkRanker;
 
     private boolean mSystemReady;
     private Intent mInitialBroadcast;
@@ -590,7 +604,10 @@
 
     private Set<String> mWolSupportedInterfaces;
 
-    private TelephonyManager mTelephonyManager;
+    private final TelephonyManager mTelephonyManager;
+    private final AppOpsManager mAppOpsManager;
+
+    private final LocationPermissionChecker mLocationPermissionChecker;
 
     private KeepaliveTracker mKeepaliveTracker;
     private NetworkNotificationManager mNotifier;
@@ -630,6 +647,10 @@
     @VisibleForTesting
     final MultipathPolicyTracker mMultipathPolicyTracker;
 
+    @VisibleForTesting
+    final Map<IConnectivityDiagnosticsCallback, ConnectivityDiagnosticsCallbackInfo>
+            mConnectivityDiagnosticsCallbacks = new HashMap<>();
+
     /**
      * Implements support for the legacy "one network per network type" model.
      *
@@ -706,9 +727,9 @@
         private void maybeLogBroadcast(NetworkAgentInfo nai, DetailedState state, int type,
                 boolean isDefaultNetwork) {
             if (DBG) {
-                log("Sending " + state +
-                        " broadcast for type " + type + " " + nai.name() +
-                        " isDefaultNetwork=" + isDefaultNetwork);
+                log("Sending " + state
+                        + " broadcast for type " + type + " " + nai.toShortString()
+                        + " isDefaultNetwork=" + isDefaultNetwork);
             }
         }
 
@@ -788,14 +809,6 @@
             }
         }
 
-        private String naiToString(NetworkAgentInfo nai) {
-            String name = nai.name();
-            String state = (nai.networkInfo != null) ?
-                    nai.networkInfo.getState() + "/" + nai.networkInfo.getDetailedState() :
-                    "???/???";
-            return name + " " + state;
-        }
-
         public void dump(IndentingPrintWriter pw) {
             pw.println("mLegacyTypeTracker:");
             pw.increaseIndent();
@@ -810,7 +823,7 @@
                 for (int type = 0; type < mTypeLists.length; type++) {
                     if (mTypeLists[type] == null || mTypeLists[type].isEmpty()) continue;
                     for (NetworkAgentInfo nai : mTypeLists[type]) {
-                        pw.println(type + " " + naiToString(nai));
+                        pw.println(type + " " + nai.toShortString());
                     }
                 }
             }
@@ -942,9 +955,11 @@
         mDeps = Objects.requireNonNull(deps, "missing Dependencies");
         mSystemProperties = mDeps.getSystemProperties();
         mNetIdManager = mDeps.makeNetIdManager();
+        mContext = Objects.requireNonNull(context, "missing Context");
 
         mMetricsLog = logger;
         mDefaultRequest = createDefaultInternetRequestForTransport(-1, NetworkRequest.Type.REQUEST);
+        mNetworkRanker = new NetworkRanker();
         NetworkRequestInfo defaultNRI = new NetworkRequestInfo(null, mDefaultRequest, new Binder());
         mNetworkRequests.put(mDefaultRequest, defaultNRI);
         mNetworkRequestInfoLogs.log("REGISTER " + defaultNRI);
@@ -962,13 +977,14 @@
         mHandlerThread.start();
         mHandler = new InternalHandler(mHandlerThread.getLooper());
         mTrackerHandler = new NetworkStateTrackerHandler(mHandlerThread.getLooper());
+        mConnectivityDiagnosticsHandler =
+                new ConnectivityDiagnosticsHandler(mHandlerThread.getLooper());
 
         mReleasePendingIntentDelayMs = Settings.Secure.getInt(context.getContentResolver(),
                 Settings.Secure.CONNECTIVITY_RELEASE_PENDING_INTENT_DELAY_MS, 5_000);
 
         mLingerDelayMs = mSystemProperties.getInt(LINGER_DELAY_PROPERTY, DEFAULT_LINGER_DELAY_MS);
 
-        mContext = Objects.requireNonNull(context, "missing Context");
         mNMS = Objects.requireNonNull(netManager, "missing INetworkManagementService");
         mStatsService = Objects.requireNonNull(statsService, "missing INetworkStatsService");
         mPolicyManager = Objects.requireNonNull(policyManager, "missing INetworkPolicyManager");
@@ -981,6 +997,8 @@
         mNetd = netd;
         mKeyStore = KeyStore.getInstance();
         mTelephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE);
+        mAppOpsManager = (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
+        mLocationPermissionChecker = new LocationPermissionChecker(mContext);
 
         // To ensure uid rules are synchronized with Network Policy, register for
         // NetworkPolicyManagerService events must happen prior to NetworkPolicyManagerService
@@ -1146,6 +1164,7 @@
             int transportType, NetworkRequest.Type type) {
         final NetworkCapabilities netCap = new NetworkCapabilities();
         netCap.addCapability(NET_CAPABILITY_INTERNET);
+        netCap.setRequestorUidAndPackageName(Process.myUid(), mContext.getPackageName());
         if (transportType > -1) {
             netCap.addTransportType(transportType);
         }
@@ -1676,10 +1695,12 @@
         return newLp;
     }
 
-    private void restrictRequestUidsForCaller(NetworkCapabilities nc) {
+    private void restrictRequestUidsForCallerAndSetRequestorInfo(NetworkCapabilities nc,
+            int callerUid, String callerPackageName) {
         if (!checkSettingsPermission()) {
-            nc.setSingleUid(Binder.getCallingUid());
+            nc.setSingleUid(callerUid);
         }
+        nc.setRequestorUidAndPackageName(callerUid, callerPackageName);
         nc.setAdministratorUids(Collections.EMPTY_LIST);
 
         // Clear owner UID; this can never come from an app.
@@ -2090,6 +2111,12 @@
                 NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
     }
 
+    private boolean checkNetworkStackPermission(int pid, int uid) {
+        return checkAnyPermissionOf(pid, uid,
+                android.Manifest.permission.NETWORK_STACK,
+                NetworkStack.PERMISSION_MAINLINE_NETWORK_STACK);
+    }
+
     private boolean checkNetworkSignalStrengthWakeupPermission(int pid, int uid) {
         return checkAnyPermissionOf(pid, uid,
                 android.Manifest.permission.NETWORK_SIGNAL_STRENGTH_WAKEUP,
@@ -2736,88 +2763,21 @@
                     break;
                 }
                 case EVENT_NETWORK_TESTED: {
-                    final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(msg.arg2);
+                    final NetworkTestedResults results = (NetworkTestedResults) msg.obj;
+
+                    final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(results.mNetId);
                     if (nai == null) break;
 
-                    final boolean wasPartial = nai.partialConnectivity;
-                    nai.partialConnectivity = ((msg.arg1 & NETWORK_VALIDATION_RESULT_PARTIAL) != 0);
-                    final boolean partialConnectivityChanged =
-                            (wasPartial != nai.partialConnectivity);
+                    handleNetworkTested(nai, results.mTestResult,
+                            (results.mRedirectUrl == null) ? "" : results.mRedirectUrl);
 
-                    final boolean valid = ((msg.arg1 & NETWORK_VALIDATION_RESULT_VALID) != 0);
-                    final boolean wasValidated = nai.lastValidated;
-                    final boolean wasDefault = isDefaultNetwork(nai);
-                    // Only show a connected notification if the network is pending validation
-                    // after the captive portal app was open, and it has now validated.
-                    if (nai.captivePortalValidationPending && valid) {
-                        // User is now logged in, network validated.
-                        nai.captivePortalValidationPending = false;
-                        showNetworkNotification(nai, NotificationType.LOGGED_IN);
-                    }
-
-                    final String redirectUrl = (msg.obj instanceof String) ? (String) msg.obj : "";
-
-                    if (DBG) {
-                        final String logMsg = !TextUtils.isEmpty(redirectUrl)
-                                 ? " with redirect to " + redirectUrl
-                                 : "";
-                        log(nai.name() + " validation " + (valid ? "passed" : "failed") + logMsg);
-                    }
-                    if (valid != nai.lastValidated) {
-                        if (wasDefault) {
-                            mDeps.getMetricsLogger()
-                                    .defaultNetworkMetrics().logDefaultNetworkValidity(
-                                            SystemClock.elapsedRealtime(), valid);
-                        }
-                        final int oldScore = nai.getCurrentScore();
-                        nai.lastValidated = valid;
-                        nai.everValidated |= valid;
-                        updateCapabilities(oldScore, nai, nai.networkCapabilities);
-                        // If score has changed, rebroadcast to NetworkProviders. b/17726566
-                        if (oldScore != nai.getCurrentScore()) sendUpdatedScoreToFactories(nai);
-                        if (valid) {
-                            handleFreshlyValidatedNetwork(nai);
-                            // Clear NO_INTERNET, PRIVATE_DNS_BROKEN, PARTIAL_CONNECTIVITY and
-                            // LOST_INTERNET notifications if network becomes valid.
-                            mNotifier.clearNotification(nai.network.netId,
-                                    NotificationType.NO_INTERNET);
-                            mNotifier.clearNotification(nai.network.netId,
-                                    NotificationType.LOST_INTERNET);
-                            mNotifier.clearNotification(nai.network.netId,
-                                    NotificationType.PARTIAL_CONNECTIVITY);
-                            mNotifier.clearNotification(nai.network.netId,
-                                    NotificationType.PRIVATE_DNS_BROKEN);
-                            // If network becomes valid, the hasShownBroken should be reset for
-                            // that network so that the notification will be fired when the private
-                            // DNS is broken again.
-                            nai.networkAgentConfig.hasShownBroken = false;
-                        }
-                    } else if (partialConnectivityChanged) {
-                        updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
-                    }
-                    updateInetCondition(nai);
-                    // Let the NetworkAgent know the state of its network
-                    Bundle redirectUrlBundle = new Bundle();
-                    redirectUrlBundle.putString(NetworkAgent.REDIRECT_URL_KEY, redirectUrl);
-                    // TODO: Evaluate to update partial connectivity to status to NetworkAgent.
-                    nai.asyncChannel.sendMessage(
-                            NetworkAgent.CMD_REPORT_NETWORK_STATUS,
-                            (valid ? NetworkAgent.VALID_NETWORK : NetworkAgent.INVALID_NETWORK),
-                            0, redirectUrlBundle);
-
-                    // If NetworkMonitor detects partial connectivity before
-                    // EVENT_PROMPT_UNVALIDATED arrives, show the partial connectivity notification
-                    // immediately. Re-notify partial connectivity silently if no internet
-                    // notification already there.
-                    if (!wasPartial && nai.partialConnectivity) {
-                        // Remove delayed message if there is a pending message.
-                        mHandler.removeMessages(EVENT_PROMPT_UNVALIDATED, nai.network);
-                        handlePromptUnvalidated(nai.network);
-                    }
-
-                    if (wasValidated && !nai.lastValidated) {
-                        handleNetworkUnvalidated(nai);
-                    }
+                    // Invoke ConnectivityReport generation for this Network test event.
+                    final Message m =
+                            mConnectivityDiagnosticsHandler.obtainMessage(
+                                    ConnectivityDiagnosticsHandler.EVENT_NETWORK_TESTED,
+                                    new ConnectivityReportEvent(results.mTimestampMillis, nai));
+                    m.setData(msg.getData());
+                    mConnectivityDiagnosticsHandler.sendMessage(m);
                     break;
                 }
                 case EVENT_PROVISIONING_NOTIFICATION: {
@@ -2831,7 +2791,7 @@
                         nai.everCaptivePortalDetected |= visible;
                         if (nai.lastCaptivePortalDetected &&
                             Settings.Global.CAPTIVE_PORTAL_MODE_AVOID == getCaptivePortalMode()) {
-                            if (DBG) log("Avoiding captive portal network: " + nai.name());
+                            if (DBG) log("Avoiding captive portal network: " + nai.toShortString());
                             nai.asyncChannel.sendMessage(
                                     NetworkAgent.CMD_PREVENT_AUTOMATIC_RECONNECT);
                             teardownUnneededNetwork(nai);
@@ -2868,6 +2828,87 @@
             return true;
         }
 
+        private void handleNetworkTested(
+                @NonNull NetworkAgentInfo nai, int testResult, @NonNull String redirectUrl) {
+            final boolean wasPartial = nai.partialConnectivity;
+            nai.partialConnectivity = ((testResult & NETWORK_VALIDATION_RESULT_PARTIAL) != 0);
+            final boolean partialConnectivityChanged =
+                    (wasPartial != nai.partialConnectivity);
+
+            final boolean valid = ((testResult & NETWORK_VALIDATION_RESULT_VALID) != 0);
+            final boolean wasValidated = nai.lastValidated;
+            final boolean wasDefault = isDefaultNetwork(nai);
+            // Only show a connected notification if the network is pending validation
+            // after the captive portal app was open, and it has now validated.
+            if (nai.captivePortalValidationPending && valid) {
+                // User is now logged in, network validated.
+                nai.captivePortalValidationPending = false;
+                showNetworkNotification(nai, NotificationType.LOGGED_IN);
+            }
+
+            if (DBG) {
+                final String logMsg = !TextUtils.isEmpty(redirectUrl)
+                        ? " with redirect to " + redirectUrl
+                        : "";
+                log(nai.toShortString() + " validation " + (valid ? "passed" : "failed") + logMsg);
+            }
+            if (valid != nai.lastValidated) {
+                if (wasDefault) {
+                    mDeps.getMetricsLogger()
+                            .defaultNetworkMetrics().logDefaultNetworkValidity(
+                            SystemClock.elapsedRealtime(), valid);
+                }
+                final int oldScore = nai.getCurrentScore();
+                nai.lastValidated = valid;
+                nai.everValidated |= valid;
+                updateCapabilities(oldScore, nai, nai.networkCapabilities);
+                // If score has changed, rebroadcast to NetworkProviders. b/17726566
+                if (oldScore != nai.getCurrentScore()) sendUpdatedScoreToFactories(nai);
+                if (valid) {
+                    handleFreshlyValidatedNetwork(nai);
+                    // Clear NO_INTERNET, PRIVATE_DNS_BROKEN, PARTIAL_CONNECTIVITY and
+                    // LOST_INTERNET notifications if network becomes valid.
+                    mNotifier.clearNotification(nai.network.netId,
+                            NotificationType.NO_INTERNET);
+                    mNotifier.clearNotification(nai.network.netId,
+                            NotificationType.LOST_INTERNET);
+                    mNotifier.clearNotification(nai.network.netId,
+                            NotificationType.PARTIAL_CONNECTIVITY);
+                    mNotifier.clearNotification(nai.network.netId,
+                            NotificationType.PRIVATE_DNS_BROKEN);
+                    // If network becomes valid, the hasShownBroken should be reset for
+                    // that network so that the notification will be fired when the private
+                    // DNS is broken again.
+                    nai.networkAgentConfig.hasShownBroken = false;
+                }
+            } else if (partialConnectivityChanged) {
+                updateCapabilities(nai.getCurrentScore(), nai, nai.networkCapabilities);
+            }
+            updateInetCondition(nai);
+            // Let the NetworkAgent know the state of its network
+            Bundle redirectUrlBundle = new Bundle();
+            redirectUrlBundle.putString(NetworkAgent.REDIRECT_URL_KEY, redirectUrl);
+            // TODO: Evaluate to update partial connectivity to status to NetworkAgent.
+            nai.asyncChannel.sendMessage(
+                    NetworkAgent.CMD_REPORT_NETWORK_STATUS,
+                    (valid ? NetworkAgent.VALID_NETWORK : NetworkAgent.INVALID_NETWORK),
+                    0, redirectUrlBundle);
+
+            // If NetworkMonitor detects partial connectivity before
+            // EVENT_PROMPT_UNVALIDATED arrives, show the partial connectivity notification
+            // immediately. Re-notify partial connectivity silently if no internet
+            // notification already there.
+            if (!wasPartial && nai.partialConnectivity) {
+                // Remove delayed message if there is a pending message.
+                mHandler.removeMessages(EVENT_PROMPT_UNVALIDATED, nai.network);
+                handlePromptUnvalidated(nai.network);
+            }
+
+            if (wasValidated && !nai.lastValidated) {
+                handleNetworkUnvalidated(nai);
+            }
+        }
+
         private int getCaptivePortalMode() {
             return Settings.Global.getInt(mContext.getContentResolver(),
                     Settings.Global.CAPTIVE_PORTAL_MODE,
@@ -2916,8 +2957,23 @@
 
         @Override
         public void notifyNetworkTested(int testResult, @Nullable String redirectUrl) {
-            mTrackerHandler.sendMessage(mTrackerHandler.obtainMessage(EVENT_NETWORK_TESTED,
-                    testResult, mNetId, redirectUrl));
+            notifyNetworkTestedWithExtras(testResult, redirectUrl, SystemClock.elapsedRealtime(),
+                    PersistableBundle.EMPTY);
+        }
+
+        @Override
+        public void notifyNetworkTestedWithExtras(
+                int testResult,
+                @Nullable String redirectUrl,
+                long timestampMillis,
+                @NonNull PersistableBundle extras) {
+            final Message msg =
+                    mTrackerHandler.obtainMessage(
+                            EVENT_NETWORK_TESTED,
+                            new NetworkTestedResults(
+                                    mNetId, testResult, timestampMillis, redirectUrl));
+            msg.setData(new Bundle(extras));
+            mTrackerHandler.sendMessage(msg);
         }
 
         @Override
@@ -2959,6 +3015,21 @@
         }
 
         @Override
+        public void notifyDataStallSuspected(
+                long timestampMillis, int detectionMethod, PersistableBundle extras) {
+            final Message msg =
+                    mConnectivityDiagnosticsHandler.obtainMessage(
+                            ConnectivityDiagnosticsHandler.EVENT_DATA_STALL_SUSPECTED,
+                            detectionMethod, mNetId, timestampMillis);
+            msg.setData(new Bundle(extras));
+
+            // NetworkStateTrackerHandler currently doesn't take any actions based on data
+            // stalls so send the message directly to ConnectivityDiagnosticsHandler and avoid
+            // the cost of going through two handlers.
+            mConnectivityDiagnosticsHandler.sendMessage(msg);
+        }
+
+        @Override
         public int getInterfaceVersion() {
             return this.VERSION;
         }
@@ -3047,23 +3118,32 @@
         handleUpdateLinkProperties(nai, new LinkProperties(nai.linkProperties));
     }
 
-    private void updateLingerState(NetworkAgentInfo nai, long now) {
+    /**
+     * Updates the linger state from the network requests inside the NAI.
+     * @param nai the agent info to update
+     * @param now the timestamp of the event causing this update
+     * @return whether the network was lingered as a result of this update
+     */
+    private boolean updateLingerState(@NonNull final NetworkAgentInfo nai, final long now) {
         // 1. Update the linger timer. If it's changed, reschedule or cancel the alarm.
         // 2. If the network was lingering and there are now requests, unlinger it.
         // 3. If this network is unneeded (which implies it is not lingering), and there is at least
         //    one lingered request, start lingering.
         nai.updateLingerTimer();
         if (nai.isLingering() && nai.numForegroundNetworkRequests() > 0) {
-            if (DBG) log("Unlingering " + nai.name());
+            if (DBG) log("Unlingering " + nai.toShortString());
             nai.unlinger();
             logNetworkEvent(nai, NetworkEvent.NETWORK_UNLINGER);
         } else if (unneeded(nai, UnneededFor.LINGER) && nai.getLingerExpiry() > 0) {
-            int lingerTime = (int) (nai.getLingerExpiry() - now);
-            if (DBG) log("Lingering " + nai.name() + " for " + lingerTime + "ms");
+            if (DBG) {
+                final int lingerTime = (int) (nai.getLingerExpiry() - now);
+                log("Lingering " + nai.toShortString() + " for " + lingerTime + "ms");
+            }
             nai.linger();
             logNetworkEvent(nai, NetworkEvent.NETWORK_LINGER);
-            notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_LOSING, lingerTime);
+            return true;
         }
+        return false;
     }
 
     private void handleAsyncChannelHalfConnect(Message msg) {
@@ -3121,7 +3201,7 @@
     private void disconnectAndDestroyNetwork(NetworkAgentInfo nai) {
         ensureRunningOnConnectivityServiceThread();
         if (DBG) {
-            log(nai.name() + " got DISCONNECTED, was satisfying " + nai.numNetworkRequests());
+            log(nai.toShortString() + " disconnected, was satisfying " + nai.numNetworkRequests());
         }
         // Clear all notifications of this network.
         mNotifier.clearNotification(nai.network.netId);
@@ -3179,7 +3259,7 @@
             mDefaultNetworkNai = null;
             updateDataActivityTracking(null /* newNetwork */, nai);
             notifyLockdownVpn(nai);
-            ensureNetworkTransitionWakelock(nai.name());
+            ensureNetworkTransitionWakelock(nai.toShortString());
         }
         mLegacyTypeTracker.remove(nai, wasDefault);
         if (!nai.networkCapabilities.hasTransport(TRANSPORT_VPN)) {
@@ -3391,18 +3471,7 @@
         nri.unlinkDeathRecipient();
         mNetworkRequests.remove(nri.request);
 
-        synchronized (mUidToNetworkRequestCount) {
-            int requests = mUidToNetworkRequestCount.get(nri.mUid, 0);
-            if (requests < 1) {
-                Slog.wtf(TAG, "BUG: too small request count " + requests + " for UID " +
-                        nri.mUid);
-            } else if (requests == 1) {
-                mUidToNetworkRequestCount.removeAt(
-                        mUidToNetworkRequestCount.indexOfKey(nri.mUid));
-            } else {
-                mUidToNetworkRequestCount.put(nri.mUid, requests - 1);
-            }
-        }
+        decrementNetworkRequestPerUidCount(nri);
 
         mNetworkRequestInfoLogs.log("RELEASE " + nri);
         if (nri.request.isRequest()) {
@@ -3413,14 +3482,17 @@
                 boolean wasBackgroundNetwork = nai.isBackgroundNetwork();
                 nai.removeRequest(nri.request.requestId);
                 if (VDBG || DDBG) {
-                    log(" Removing from current network " + nai.name() +
-                            ", leaving " + nai.numNetworkRequests() + " requests.");
+                    log(" Removing from current network " + nai.toShortString()
+                            + ", leaving " + nai.numNetworkRequests() + " requests.");
                 }
                 // If there are still lingered requests on this network, don't tear it down,
                 // but resume lingering instead.
-                updateLingerState(nai, SystemClock.elapsedRealtime());
+                final long now = SystemClock.elapsedRealtime();
+                if (updateLingerState(nai, now)) {
+                    notifyNetworkLosing(nai, now);
+                }
                 if (unneeded(nai, UnneededFor.TEARDOWN)) {
-                    if (DBG) log("no live requests for " + nai.name() + "; disconnecting");
+                    if (DBG) log("no live requests for " + nai.toShortString() + "; disconnecting");
                     teardownUnneededNetwork(nai);
                 } else {
                     wasKept = true;
@@ -3473,6 +3545,19 @@
         }
     }
 
+    private void decrementNetworkRequestPerUidCount(final NetworkRequestInfo nri) {
+        synchronized (mUidToNetworkRequestCount) {
+            final int requests = mUidToNetworkRequestCount.get(nri.mUid, 0);
+            if (requests < 1) {
+                Slog.wtf(TAG, "BUG: too small request count " + requests + " for UID " + nri.mUid);
+            } else if (requests == 1) {
+                mUidToNetworkRequestCount.removeAt(mUidToNetworkRequestCount.indexOfKey(nri.mUid));
+            } else {
+                mUidToNetworkRequestCount.put(nri.mUid, requests - 1);
+            }
+        }
+    }
+
     @Override
     public void setAcceptUnvalidated(Network network, boolean accept, boolean always) {
         enforceNetworkStackSettingsOrSetup();
@@ -3664,6 +3749,7 @@
             if (nm == null) return;
 
             if (request == CaptivePortal.APP_REQUEST_REEVALUATION_REQUIRED) {
+                checkNetworkStackPermission();
                 nm.forceReevaluation(Binder.getCallingUid());
             }
         }
@@ -3742,7 +3828,7 @@
         pw.increaseIndent();
         for (NetworkAgentInfo nai : networksSortedById()) {
             if (nai.avoidUnvalidated) {
-                pw.println(nai.name());
+                pw.println(nai.toShortString());
             }
         }
         pw.decreaseIndent();
@@ -3854,7 +3940,7 @@
 
     private void handleNetworkUnvalidated(NetworkAgentInfo nai) {
         NetworkCapabilities nc = nai.networkCapabilities;
-        if (DBG) log("handleNetworkUnvalidated " + nai.name() + " cap=" + nc);
+        if (DBG) log("handleNetworkUnvalidated " + nai.toShortString() + " cap=" + nc);
 
         if (!nc.hasTransport(NetworkCapabilities.TRANSPORT_WIFI)) {
             return;
@@ -4130,6 +4216,19 @@
         final int connectivityInfo = encodeBool(hasConnectivity);
         mHandler.sendMessage(
                 mHandler.obtainMessage(EVENT_REVALIDATE_NETWORK, uid, connectivityInfo, network));
+
+        final NetworkAgentInfo nai;
+        if (network == null) {
+            nai = getDefaultNetwork();
+        } else {
+            nai = getNetworkAgentInfoForNetwork(network);
+        }
+        if (nai != null) {
+            mConnectivityDiagnosticsHandler.sendMessage(
+                    mConnectivityDiagnosticsHandler.obtainMessage(
+                            ConnectivityDiagnosticsHandler.EVENT_NETWORK_CONNECTIVITY_REPORTED,
+                            connectivityInfo, 0, nai));
+        }
     }
 
     private void handleReportNetworkConnectivity(
@@ -4305,7 +4404,7 @@
             throwIfLockdownEnabled();
             Vpn vpn = mVpns.get(userId);
             if (vpn != null) {
-                return vpn.prepare(oldPackage, newPackage);
+                return vpn.prepare(oldPackage, newPackage, VpnManager.TYPE_VPN_SERVICE);
             } else {
                 return false;
             }
@@ -4313,26 +4412,29 @@
     }
 
     /**
-     * Set whether the VPN package has the ability to launch VPNs without user intervention.
-     * This method is used by system-privileged apps.
-     * VPN permissions are checked in the {@link Vpn} class. If the caller is not {@code userId},
-     * {@link android.Manifest.permission.INTERACT_ACROSS_USERS_FULL} permission is required.
+     * Set whether the VPN package has the ability to launch VPNs without user intervention. This
+     * method is used by system-privileged apps. VPN permissions are checked in the {@link Vpn}
+     * class. If the caller is not {@code userId}, {@link
+     * android.Manifest.permission.INTERACT_ACROSS_USERS_FULL} permission is required.
      *
      * @param packageName The package for which authorization state should change.
      * @param userId User for whom {@code packageName} is installed.
      * @param authorized {@code true} if this app should be able to start a VPN connection without
-     *                   explicit user approval, {@code false} if not.
-     *
+     *     explicit user approval, {@code false} if not.
+     * @param vpnType The {@link VpnManager.VpnType} constant representing what class of VPN
+     *     permissions should be granted. When unauthorizing an app, {@link
+     *     VpnManager.TYPE_VPN_NONE} should be used.
      * @hide
      */
     @Override
-    public void setVpnPackageAuthorization(String packageName, int userId, boolean authorized) {
+    public void setVpnPackageAuthorization(
+            String packageName, int userId, @VpnManager.VpnType int vpnType) {
         enforceCrossUserPermission(userId);
 
         synchronized (mVpns) {
             Vpn vpn = mVpns.get(userId);
             if (vpn != null) {
-                vpn.setPackageAuthorization(packageName, authorized);
+                vpn.setPackageAuthorization(packageName, vpnType);
             }
         }
     }
@@ -4354,6 +4456,78 @@
     }
 
     /**
+     * Stores the given VPN profile based on the provisioning package name.
+     *
+     * <p>If there is already a VPN profile stored for the provisioning package, this call will
+     * overwrite the profile.
+     *
+     * <p>This is designed to serve the VpnManager only; settings-based VPN profiles are managed
+     * exclusively by the Settings app, and passed into the platform at startup time.
+     *
+     * @return {@code true} if user consent has already been granted, {@code false} otherwise.
+     * @hide
+     */
+    @Override
+    public boolean provisionVpnProfile(@NonNull VpnProfile profile, @NonNull String packageName) {
+        final int user = UserHandle.getUserId(Binder.getCallingUid());
+        synchronized (mVpns) {
+            return mVpns.get(user).provisionVpnProfile(packageName, profile, mKeyStore);
+        }
+    }
+
+    /**
+     * Deletes the stored VPN profile for the provisioning package
+     *
+     * <p>If there are no profiles for the given package, this method will silently succeed.
+     *
+     * <p>This is designed to serve the VpnManager only; settings-based VPN profiles are managed
+     * exclusively by the Settings app, and passed into the platform at startup time.
+     *
+     * @hide
+     */
+    @Override
+    public void deleteVpnProfile(@NonNull String packageName) {
+        final int user = UserHandle.getUserId(Binder.getCallingUid());
+        synchronized (mVpns) {
+            mVpns.get(user).deleteVpnProfile(packageName, mKeyStore);
+        }
+    }
+
+    /**
+     * Starts the VPN based on the stored profile for the given package
+     *
+     * <p>This is designed to serve the VpnManager only; settings-based VPN profiles are managed
+     * exclusively by the Settings app, and passed into the platform at startup time.
+     *
+     * @throws IllegalArgumentException if no profile was found for the given package name.
+     * @hide
+     */
+    @Override
+    public void startVpnProfile(@NonNull String packageName) {
+        final int user = UserHandle.getUserId(Binder.getCallingUid());
+        synchronized (mVpns) {
+            throwIfLockdownEnabled();
+            mVpns.get(user).startVpnProfile(packageName, mKeyStore);
+        }
+    }
+
+    /**
+     * Stops the Platform VPN if the provided package is running one.
+     *
+     * <p>This is designed to serve the VpnManager only; settings-based VPN profiles are managed
+     * exclusively by the Settings app, and passed into the platform at startup time.
+     *
+     * @hide
+     */
+    @Override
+    public void stopVpnProfile(@NonNull String packageName) {
+        final int user = UserHandle.getUserId(Binder.getCallingUid());
+        synchronized (mVpns) {
+            mVpns.get(user).stopVpnProfile(packageName);
+        }
+    }
+
+    /**
      * Start legacy VPN, controlling native daemons as needed. Creates a
      * secondary thread to perform connection work, returning quickly.
      */
@@ -4556,6 +4730,13 @@
         }
     }
 
+    /**
+     * Throws if there is any currently running, always-on Legacy VPN.
+     *
+     * <p>The LockdownVpnTracker and mLockdownEnabled both track whether an always-on Legacy VPN is
+     * running across the entire system. Tracking for app-based VPNs is done on a per-user,
+     * per-package basis in Vpn.java
+     */
     @GuardedBy("mVpns")
     private void throwIfLockdownEnabled() {
         if (mLockdownEnabled) {
@@ -5091,6 +5272,10 @@
             }
         }
 
+        NetworkRequestInfo(NetworkRequest r) {
+            this(r, null);
+        }
+
         private void enforceRequestCountLimit() {
             synchronized (mUidToNetworkRequestCount) {
                 int networkRequests = mUidToNetworkRequestCount.get(mUid, 0) + 1;
@@ -5130,7 +5315,7 @@
     // This checks that the passed capabilities either do not request a
     // specific SSID/SignalStrength, or the calling app has permission to do so.
     private void ensureSufficientPermissionsForRequest(NetworkCapabilities nc,
-            int callerPid, int callerUid) {
+            int callerPid, int callerUid, String callerPackageName) {
         if (null != nc.getSSID() && !checkSettingsPermission(callerPid, callerUid)) {
             throw new SecurityException("Insufficient permissions to request a specific SSID");
         }
@@ -5140,6 +5325,7 @@
             throw new SecurityException(
                     "Insufficient permissions to request a specific signal strength");
         }
+        mAppOpsManager.checkPackage(callerUid, callerPackageName);
     }
 
     private ArrayList<Integer> getSignalStrengthThresholds(NetworkAgentInfo nai) {
@@ -5169,7 +5355,7 @@
                 detail = reason;
             }
             log(String.format("updateSignalStrengthThresholds: %s, sending %s to %s",
-                    detail, Arrays.toString(thresholdsArray.toArray()), nai.name()));
+                    detail, Arrays.toString(thresholdsArray.toArray()), nai.toShortString()));
         }
 
         nai.asyncChannel.sendMessage(
@@ -5186,7 +5372,6 @@
             return;
         }
         MatchAllNetworkSpecifier.checkNotMatchAllNetworkSpecifier(ns);
-        ns.assertValidFromUid(Binder.getCallingUid());
     }
 
     private void ensureValid(NetworkCapabilities nc) {
@@ -5198,7 +5383,9 @@
 
     @Override
     public NetworkRequest requestNetwork(NetworkCapabilities networkCapabilities,
-            Messenger messenger, int timeoutMs, IBinder binder, int legacyType) {
+            Messenger messenger, int timeoutMs, IBinder binder, int legacyType,
+            @NonNull String callingPackageName) {
+        final int callingUid = Binder.getCallingUid();
         final NetworkRequest.Type type = (networkCapabilities == null)
                 ? NetworkRequest.Type.TRACK_DEFAULT
                 : NetworkRequest.Type.REQUEST;
@@ -5206,7 +5393,7 @@
         // the default network request. This allows callers to keep track of
         // the system default network.
         if (type == NetworkRequest.Type.TRACK_DEFAULT) {
-            networkCapabilities = createDefaultNetworkCapabilitiesForUid(Binder.getCallingUid());
+            networkCapabilities = createDefaultNetworkCapabilitiesForUid(callingUid);
             enforceAccessPermission();
         } else {
             networkCapabilities = new NetworkCapabilities(networkCapabilities);
@@ -5218,13 +5405,14 @@
         }
         ensureRequestableCapabilities(networkCapabilities);
         ensureSufficientPermissionsForRequest(networkCapabilities,
-                Binder.getCallingPid(), Binder.getCallingUid());
+                Binder.getCallingPid(), callingUid, callingPackageName);
         // Set the UID range for this request to the single UID of the requester, or to an empty
         // set of UIDs if the caller has the appropriate permission and UIDs have not been set.
         // This will overwrite any allowed UIDs in the requested capabilities. Though there
         // are no visible methods to set the UIDs, an app could use reflection to try and get
         // networks for other apps so it's essential that the UIDs are overwritten.
-        restrictRequestUidsForCaller(networkCapabilities);
+        restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities,
+                callingUid, callingPackageName);
 
         if (timeoutMs < 0) {
             throw new IllegalArgumentException("Bad timeout specified");
@@ -5299,16 +5487,18 @@
 
     @Override
     public NetworkRequest pendingRequestForNetwork(NetworkCapabilities networkCapabilities,
-            PendingIntent operation) {
+            PendingIntent operation, @NonNull String callingPackageName) {
         Objects.requireNonNull(operation, "PendingIntent cannot be null.");
+        final int callingUid = Binder.getCallingUid();
         networkCapabilities = new NetworkCapabilities(networkCapabilities);
         enforceNetworkRequestPermissions(networkCapabilities);
         enforceMeteredApnPolicy(networkCapabilities);
         ensureRequestableCapabilities(networkCapabilities);
         ensureSufficientPermissionsForRequest(networkCapabilities,
-                Binder.getCallingPid(), Binder.getCallingUid());
+                Binder.getCallingPid(), callingUid, callingPackageName);
         ensureValidNetworkSpecifier(networkCapabilities);
-        restrictRequestUidsForCaller(networkCapabilities);
+        restrictRequestUidsForCallerAndSetRequestorInfo(networkCapabilities,
+                callingUid, callingPackageName);
 
         NetworkRequest networkRequest = new NetworkRequest(networkCapabilities, TYPE_NONE,
                 nextNetworkRequestId(), NetworkRequest.Type.REQUEST);
@@ -5356,15 +5546,16 @@
 
     @Override
     public NetworkRequest listenForNetwork(NetworkCapabilities networkCapabilities,
-            Messenger messenger, IBinder binder) {
+            Messenger messenger, IBinder binder, @NonNull String callingPackageName) {
+        final int callingUid = Binder.getCallingUid();
         if (!hasWifiNetworkListenPermission(networkCapabilities)) {
             enforceAccessPermission();
         }
 
         NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
         ensureSufficientPermissionsForRequest(networkCapabilities,
-                Binder.getCallingPid(), Binder.getCallingUid());
-        restrictRequestUidsForCaller(nc);
+                Binder.getCallingPid(), callingUid, callingPackageName);
+        restrictRequestUidsForCallerAndSetRequestorInfo(nc, callingUid, callingPackageName);
         // Apps without the CHANGE_NETWORK_STATE permission can't use background networks, so
         // make all their listens include NET_CAPABILITY_FOREGROUND. That way, they will get
         // onLost and onAvailable callbacks when networks move in and out of the background.
@@ -5384,17 +5575,17 @@
 
     @Override
     public void pendingListenForNetwork(NetworkCapabilities networkCapabilities,
-            PendingIntent operation) {
+            PendingIntent operation, @NonNull String callingPackageName) {
         Objects.requireNonNull(operation, "PendingIntent cannot be null.");
+        final int callingUid = Binder.getCallingUid();
         if (!hasWifiNetworkListenPermission(networkCapabilities)) {
             enforceAccessPermission();
         }
         ensureValid(networkCapabilities);
         ensureSufficientPermissionsForRequest(networkCapabilities,
-                Binder.getCallingPid(), Binder.getCallingUid());
-
+                Binder.getCallingPid(), callingUid, callingPackageName);
         final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
-        restrictRequestUidsForCaller(nc);
+        restrictRequestUidsForCallerAndSetRequestorInfo(nc, callingUid, callingPackageName);
 
         NetworkRequest networkRequest = new NetworkRequest(nc, TYPE_NONE, nextNetworkRequestId(),
                 NetworkRequest.Type.LISTEN);
@@ -5537,20 +5728,6 @@
         return nri.request.requestId == mDefaultRequest.requestId;
     }
 
-    // TODO : remove this method. It's a stopgap measure to help sheperding a number of dependent
-    // changes that would conflict throughout the automerger graph. Having this method temporarily
-    // helps with the process of going through with all these dependent changes across the entire
-    // tree.
-    /**
-     * Register a new agent. {@see #registerNetworkAgent} below.
-     */
-    public Network registerNetworkAgent(Messenger messenger, NetworkInfo networkInfo,
-            LinkProperties linkProperties, NetworkCapabilities networkCapabilities,
-            int currentScore, NetworkAgentConfig networkAgentConfig) {
-        return registerNetworkAgent(messenger, networkInfo, linkProperties, networkCapabilities,
-                currentScore, networkAgentConfig, NetworkProvider.ID_NONE);
-    }
-
     /**
      * Register a new agent with ConnectivityService to handle a network.
      *
@@ -5569,7 +5746,7 @@
      */
     public Network registerNetworkAgent(Messenger messenger, NetworkInfo networkInfo,
             LinkProperties linkProperties, NetworkCapabilities networkCapabilities,
-            int currentScore, NetworkAgentConfig networkAgentConfig, int providerId) {
+            NetworkScore currentScore, NetworkAgentConfig networkAgentConfig, int providerId) {
         enforceNetworkFactoryPermission();
 
         LinkProperties lp = new LinkProperties(linkProperties);
@@ -5577,12 +5754,10 @@
         // TODO: Instead of passing mDefaultRequest, provide an API to determine whether a Network
         // satisfies mDefaultRequest.
         final NetworkCapabilities nc = new NetworkCapabilities(networkCapabilities);
-        final NetworkScore ns = new NetworkScore();
-        ns.putIntExtension(NetworkScore.LEGACY_SCORE, currentScore);
         final NetworkAgentInfo nai = new NetworkAgentInfo(messenger, new AsyncChannel(),
                 new Network(mNetIdManager.reserveNetId()), new NetworkInfo(networkInfo), lp, nc,
-                ns, mContext, mTrackerHandler, new NetworkAgentConfig(networkAgentConfig), this,
-                mNetd, mDnsResolver, mNMS, providerId);
+                currentScore, mContext, mTrackerHandler, new NetworkAgentConfig(networkAgentConfig),
+                this, mNetd, mDnsResolver, mNMS, providerId);
         // Make sure the network capabilities reflect what the agent info says.
         nai.getAndSetNetworkCapabilities(mixInCapabilities(nai, nc));
         final String extraInfo = networkInfo.getExtraInfo();
@@ -6093,9 +6268,9 @@
         // newLp is already a defensive copy.
         newLp.ensureDirectlyConnectedRoutes();
         if (VDBG || DDBG) {
-            log("Update of LinkProperties for " + nai.name() +
-                    "; created=" + nai.created +
-                    "; everConnected=" + nai.everConnected);
+            log("Update of LinkProperties for " + nai.toShortString()
+                    + "; created=" + nai.created
+                    + "; everConnected=" + nai.everConnected);
         }
         updateLinkProperties(nai, newLp, new LinkProperties(nai.linkProperties));
     }
@@ -6109,12 +6284,16 @@
         }
     }
 
-    private void sendUpdatedScoreToFactories(NetworkRequest networkRequest, NetworkAgentInfo nai) {
-        int score = 0;
-        int serial = 0;
+    private void sendUpdatedScoreToFactories(@NonNull NetworkRequest networkRequest,
+            @Nullable NetworkAgentInfo nai) {
+        final int score;
+        final int serial;
         if (nai != null) {
             score = nai.getCurrentScore();
             serial = nai.factorySerialNumber;
+        } else {
+            score = 0;
+            serial = 0;
         }
         if (VDBG || DDBG){
             log("sending new Min Network Score(" + score + "): " + networkRequest.toString());
@@ -6181,7 +6360,10 @@
     private void callCallbackForRequest(NetworkRequestInfo nri,
             NetworkAgentInfo networkAgent, int notificationType, int arg1) {
         if (nri.messenger == null) {
-            return;  // Default request has no msgr
+            // Default request has no msgr. Also prevents callbacks from being invoked for
+            // NetworkRequestInfos registered with ConnectivityDiagnostics requests. Those callbacks
+            // are Type.LISTEN, but should not have NetworkCallbacks invoked.
+            return;
         }
         Bundle bundle = new Bundle();
         // TODO: check if defensive copies of data is needed.
@@ -6258,7 +6440,7 @@
             loge("Unknown NetworkAgentInfo in handleLingerComplete");
             return;
         }
-        if (DBG) log("handleLingerComplete for " + oldNetwork.name());
+        if (DBG) log("handleLingerComplete for " + oldNetwork.toShortString());
 
         // If we get here it means that the last linger timeout for this network expired. So there
         // must be no other active linger timers, and we must stop lingering.
@@ -6274,20 +6456,28 @@
         }
     }
 
-    private void makeDefault(@NonNull final NetworkAgentInfo newNetwork) {
+    private void makeDefault(@Nullable final NetworkAgentInfo newNetwork) {
         if (DBG) log("Switching to new default network: " + newNetwork);
 
+        mDefaultNetworkNai = newNetwork;
+
         try {
-            mNMS.setDefaultNetId(newNetwork.network.netId);
+            if (null != newNetwork) {
+                mNMS.setDefaultNetId(newNetwork.network.netId);
+            } else {
+                mNMS.clearDefaultNetId();
+            }
         } catch (Exception e) {
             loge("Exception setting default network :" + e);
         }
 
-        mDefaultNetworkNai = newNetwork;
         notifyLockdownVpn(newNetwork);
-        handleApplyDefaultProxy(newNetwork.linkProperties.getHttpProxy());
-        updateTcpBufferSizes(newNetwork.linkProperties.getTcpBufferSizes());
-        mDnsManager.setDefaultDnsSystemProperties(newNetwork.linkProperties.getDnsServers());
+        handleApplyDefaultProxy(null != newNetwork
+                ? newNetwork.linkProperties.getHttpProxy() : null);
+        updateTcpBufferSizes(null != newNetwork
+                ? newNetwork.linkProperties.getTcpBufferSizes() : null);
+        mDnsManager.setDefaultDnsSystemProperties(null != newNetwork
+                ? newNetwork.linkProperties.getDnsServers() : Collections.EMPTY_LIST);
         notifyIfacesChangedForNetworkStats();
         // Fix up the NetworkCapabilities of any VPNs that don't specify underlying networks.
         updateAllVpnsCapabilities();
@@ -6323,207 +6513,131 @@
     }
 
     // An accumulator class to gather the list of changes that result from a rematch.
-    // TODO : enrich to represent an entire set of changes to apply.
     private static class NetworkReassignment {
-        static class NetworkBgStatePair {
-            @NonNull final NetworkAgentInfo mNetwork;
-            final boolean mOldBackground;
-            NetworkBgStatePair(@NonNull final NetworkAgentInfo network,
-                    final boolean oldBackground) {
-                mNetwork = network;
-                mOldBackground = oldBackground;
+        static class RequestReassignment {
+            @NonNull public final NetworkRequestInfo mRequest;
+            @Nullable public final NetworkAgentInfo mOldNetwork;
+            @Nullable public final NetworkAgentInfo mNewNetwork;
+            RequestReassignment(@NonNull final NetworkRequestInfo request,
+                    @Nullable final NetworkAgentInfo oldNetwork,
+                    @Nullable final NetworkAgentInfo newNetwork) {
+                mRequest = request;
+                mOldNetwork = oldNetwork;
+                mNewNetwork = newNetwork;
+            }
+
+            public String toString() {
+                return mRequest.request.requestId + " : "
+                        + (null != mOldNetwork ? mOldNetwork.network.netId : "null")
+                        + " → " + (null != mNewNetwork ? mNewNetwork.network.netId : "null");
             }
         }
 
-        @NonNull private final Set<NetworkBgStatePair> mRematchedNetworks = new ArraySet<>();
+        @NonNull private final ArrayList<RequestReassignment> mReassignments = new ArrayList<>();
 
-        @NonNull Iterable<NetworkBgStatePair> getRematchedNetworks() {
-            return mRematchedNetworks;
+        @NonNull Iterable<RequestReassignment> getRequestReassignments() {
+            return mReassignments;
         }
 
-        void addRematchedNetwork(@NonNull final NetworkBgStatePair network) {
-            mRematchedNetworks.add(network);
+        void addRequestReassignment(@NonNull final RequestReassignment reassignment) {
+            if (!Build.IS_USER) {
+                // The code is never supposed to add two reassignments of the same request. Make
+                // sure this stays true, but without imposing this expensive check on all
+                // reassignments on all user devices.
+                for (final RequestReassignment existing : mReassignments) {
+                    if (existing.mRequest.equals(reassignment.mRequest)) {
+                        throw new IllegalStateException("Trying to reassign ["
+                                + reassignment + "] but already have ["
+                                + existing + "]");
+                    }
+                }
+            }
+            mReassignments.add(reassignment);
+        }
+
+        // Will return null if this reassignment does not change the network assigned to
+        // the passed request.
+        @Nullable
+        private RequestReassignment getReassignment(@NonNull final NetworkRequestInfo nri) {
+            for (final RequestReassignment event : getRequestReassignments()) {
+                if (nri == event.mRequest) return event;
+            }
+            return null;
+        }
+
+        public String toString() {
+            final StringJoiner sj = new StringJoiner(", " /* delimiter */,
+                    "NetReassign [" /* prefix */, "]" /* suffix */);
+            if (mReassignments.isEmpty()) return sj.add("no changes").toString();
+            for (final RequestReassignment rr : getRequestReassignments()) {
+                sj.add(rr.toString());
+            }
+            return sj.toString();
+        }
+
+        public String debugString() {
+            final StringBuilder sb = new StringBuilder();
+            sb.append("NetworkReassignment :");
+            if (mReassignments.isEmpty()) return sb.append(" no changes").toString();
+            for (final RequestReassignment rr : getRequestReassignments()) {
+                sb.append("\n  ").append(rr);
+            }
+            return sb.append("\n").toString();
         }
     }
 
-    private ArrayMap<NetworkRequestInfo, NetworkAgentInfo> computeRequestReassignmentForNetwork(
-            @NonNull final NetworkAgentInfo newNetwork) {
-        final int score = newNetwork.getCurrentScore();
-        final ArrayMap<NetworkRequestInfo, NetworkAgentInfo> reassignedRequests = new ArrayMap<>();
-        for (NetworkRequestInfo nri : mNetworkRequests.values()) {
-            // Process requests in the first pass and listens in the second pass. This allows us to
-            // change a network's capabilities depending on which requests it has. This is only
-            // correct if the change in capabilities doesn't affect whether the network satisfies
-            // requests or not, and doesn't affect the network's score.
-            if (nri.request.isListen()) continue;
-
-            final NetworkAgentInfo currentNetwork = nri.mSatisfier;
-            final boolean satisfies = newNetwork.satisfies(nri.request);
-            if (newNetwork == currentNetwork && satisfies) continue;
-
-            // check if it satisfies the NetworkCapabilities
-            if (VDBG) log("  checking if request is satisfied: " + nri.request);
-            if (satisfies) {
-                // next check if it's better than any current network we're using for
-                // this request
+    private void updateSatisfiersForRematchRequest(@NonNull final NetworkRequestInfo nri,
+            @Nullable final NetworkAgentInfo previousSatisfier,
+            @Nullable final NetworkAgentInfo newSatisfier,
+            final long now) {
+        if (newSatisfier != null) {
+            if (VDBG) log("rematch for " + newSatisfier.toShortString());
+            if (previousSatisfier != null) {
                 if (VDBG || DDBG) {
-                    log("currentScore = "
-                            + (currentNetwork != null ? currentNetwork.getCurrentScore() : 0)
-                            + ", newScore = " + score);
+                    log("   accepting network in place of " + previousSatisfier.toShortString());
                 }
-                if (currentNetwork == null || currentNetwork.getCurrentScore() < score) {
-                    reassignedRequests.put(nri, newNetwork);
-                }
-            } else if (newNetwork.isSatisfyingRequest(nri.request.requestId)) {
-                reassignedRequests.put(nri, null);
+                previousSatisfier.removeRequest(nri.request.requestId);
+                previousSatisfier.lingerRequest(nri.request, now, mLingerDelayMs);
+            } else {
+                if (VDBG || DDBG) log("   accepting network in place of null");
             }
+            newSatisfier.unlingerRequest(nri.request);
+            if (!newSatisfier.addRequest(nri.request)) {
+                Slog.wtf(TAG, "BUG: " + newSatisfier.toShortString() + " already has "
+                        + nri.request);
+            }
+        } else {
+            if (DBG) {
+                log("Network " + previousSatisfier.toShortString() + " stopped satisfying"
+                        + " request " + nri.request.requestId);
+            }
+            previousSatisfier.removeRequest(nri.request.requestId);
         }
-        return reassignedRequests;
+        nri.mSatisfier = newSatisfier;
     }
 
-    // Handles a network appearing or improving its score.
-    //
-    // - Evaluates all current NetworkRequests that can be
-    //   satisfied by newNetwork, and reassigns to newNetwork
-    //   any such requests for which newNetwork is the best.
-    //
-    // - Lingers any validated Networks that as a result are no longer
-    //   needed. A network is needed if it is the best network for
-    //   one or more NetworkRequests, or if it is a VPN.
-    //
-    // - Writes into the passed reassignment object all changes that should be done for
-    //   rematching this network with all requests, to be applied later.
-    //
-    // NOTE: This function only adds NetworkRequests that "newNetwork" could satisfy,
-    // it does not remove NetworkRequests that other Networks could better satisfy.
-    // If you need to handle decreases in score, use {@link rematchAllNetworksAndRequests}.
-    // This function should be used when possible instead of {@code rematchAllNetworksAndRequests}
-    // as it performs better by a factor of the number of Networks.
-    //
-    // TODO : stop writing to the passed reassignment. This is temporarily more useful, but
-    // it's unidiomatic Java and it's hard to read.
-    //
-    // @param changes a currently-building list of changes to write to
-    // @param newNetwork is the network to be matched against NetworkRequests.
-    // @param now the time the rematch starts, as returned by SystemClock.elapsedRealtime();
-    private void rematchNetworkAndRequests(@NonNull final NetworkReassignment changes,
-            @NonNull final NetworkAgentInfo newNetwork, final long now) {
+    @NonNull
+    private NetworkReassignment computeNetworkReassignment() {
         ensureRunningOnConnectivityServiceThread();
-        if (!newNetwork.everConnected) return;
-        boolean isNewDefault = false;
-        NetworkAgentInfo oldDefaultNetwork = null;
+        final NetworkReassignment changes = new NetworkReassignment();
 
-        changes.addRematchedNetwork(new NetworkReassignment.NetworkBgStatePair(newNetwork,
-                newNetwork.isBackgroundNetwork()));
+        // Gather the list of all relevant agents and sort them by score.
+        final ArrayList<NetworkAgentInfo> nais = new ArrayList<>();
+        for (final NetworkAgentInfo nai : mNetworkAgentInfos.values()) {
+            if (!nai.everConnected) continue;
+            nais.add(nai);
+        }
 
-        final int score = newNetwork.getCurrentScore();
-
-        if (VDBG || DDBG) log("rematching " + newNetwork.name());
-
-        final ArrayMap<NetworkRequestInfo, NetworkAgentInfo> reassignedRequests =
-                computeRequestReassignmentForNetwork(newNetwork);
-
-        NetworkCapabilities nc = newNetwork.networkCapabilities;
-        if (VDBG) log(" network has: " + nc);
-
-        // Find and migrate to this Network any NetworkRequests for
-        // which this network is now the best.
-        final ArrayList<NetworkAgentInfo> removedRequests = new ArrayList<>();
-        final ArrayList<NetworkRequestInfo> addedRequests = new ArrayList<>();
-        for (final Map.Entry<NetworkRequestInfo, NetworkAgentInfo> entry :
-                reassignedRequests.entrySet()) {
-            final NetworkRequestInfo nri = entry.getKey();
-            final NetworkAgentInfo previousSatisfier = nri.mSatisfier;
-            final NetworkAgentInfo newSatisfier = entry.getValue();
-            if (newSatisfier != null) {
-                if (VDBG) log("rematch for " + newSatisfier.name());
-                if (previousSatisfier != null) {
-                    if (VDBG || DDBG) {
-                        log("   accepting network in place of " + previousSatisfier.name());
-                    }
-                    previousSatisfier.removeRequest(nri.request.requestId);
-                    previousSatisfier.lingerRequest(nri.request, now, mLingerDelayMs);
-                    removedRequests.add(previousSatisfier);
-                } else {
-                    if (VDBG || DDBG) log("   accepting network in place of null");
-                }
-                newSatisfier.unlingerRequest(nri.request);
-                nri.mSatisfier = newSatisfier;
-                if (!newSatisfier.addRequest(nri.request)) {
-                    Slog.wtf(TAG, "BUG: " + newSatisfier.name() + " already has " + nri.request);
-                }
-                addedRequests.add(nri);
-                // Tell NetworkProviders about the new score, so they can stop
-                // trying to connect if they know they cannot match it.
-                // TODO - this could get expensive if we have a lot of requests for this
-                // network.  Think about if there is a way to reduce this.  Push
-                // netid->request mapping to each provider?
-                sendUpdatedScoreToFactories(nri.request, newSatisfier);
-                if (isDefaultRequest(nri)) {
-                    isNewDefault = true;
-                    oldDefaultNetwork = previousSatisfier;
-                    if (previousSatisfier != null) {
-                        mLingerMonitor.noteLingerDefaultNetwork(previousSatisfier, newSatisfier);
-                    }
-                }
-            } else {
-                // If "newNetwork" is listed as satisfying "nri" but no longer satisfies "nri",
-                // mark it as no longer satisfying "nri".  Because networks are processed by
-                // rematchAllNetworksAndRequests() in descending score order, "currentNetwork" will
-                // match "newNetwork" before this loop will encounter a "currentNetwork" with higher
-                // score than "newNetwork" and where "currentNetwork" no longer satisfies "nri".
-                // This means this code doesn't have to handle the case where "currentNetwork" no
-                // longer satisfies "nri" when "currentNetwork" does not equal "newNetwork".
-                if (DBG) {
-                    log("Network " + newNetwork.name() + " stopped satisfying" +
-                            " request " + nri.request.requestId);
-                }
-                newNetwork.removeRequest(nri.request.requestId);
-                if (previousSatisfier == newNetwork) {
-                    nri.mSatisfier = null;
-                    if (isDefaultRequest(nri)) mDefaultNetworkNai = null;
-                    sendUpdatedScoreToFactories(nri.request, null);
-                } else {
-                    Slog.wtf(TAG, "BUG: Removing request " + nri.request.requestId + " from " +
-                            newNetwork.name() +
-                            " without updating mSatisfier or providers!");
-                }
-                // TODO: Technically, sending CALLBACK_LOST here is
-                // incorrect if there is a replacement network currently
-                // connected that can satisfy nri, which is a request
-                // (not a listen). However, the only capability that can both
-                // a) be requested and b) change is NET_CAPABILITY_TRUSTED,
-                // so this code is only incorrect for a network that loses
-                // the TRUSTED capability, which is a rare case.
-                callCallbackForRequest(nri, newNetwork, ConnectivityManager.CALLBACK_LOST, 0);
+        for (final NetworkRequestInfo nri : mNetworkRequests.values()) {
+            if (nri.request.isListen()) continue;
+            final NetworkAgentInfo bestNetwork = mNetworkRanker.getBestNetwork(nri.request, nais);
+            if (bestNetwork != nri.mSatisfier) {
+                // bestNetwork may be null if no network can satisfy this request.
+                changes.addRequestReassignment(new NetworkReassignment.RequestReassignment(
+                        nri, nri.mSatisfier, bestNetwork));
             }
         }
-
-        if (isNewDefault) {
-            updateDataActivityTracking(newNetwork, oldDefaultNetwork);
-            // Notify system services that this network is up.
-            makeDefault(newNetwork);
-            // Log 0 -> X and Y -> X default network transitions, where X is the new default.
-            mDeps.getMetricsLogger().defaultNetworkMetrics().logDefaultNetworkEvent(
-                    now, newNetwork, oldDefaultNetwork);
-            // Have a new default network, release the transition wakelock in
-            scheduleReleaseNetworkTransitionWakelock();
-        }
-
-        if (!newNetwork.networkCapabilities.equalRequestableCapabilities(nc)) {
-            Slog.wtf(TAG, String.format(
-                    "BUG: %s changed requestable capabilities during rematch: %s -> %s",
-                    newNetwork.name(), nc, newNetwork.networkCapabilities));
-        }
-        if (newNetwork.getCurrentScore() != score) {
-            Slog.wtf(TAG, String.format(
-                    "BUG: %s changed score during rematch: %d -> %d",
-                    newNetwork.name(), score, newNetwork.getCurrentScore()));
-        }
-
-        // Notify requested networks are available after the default net is switched, but
-        // before LegacyTypeTracker sends legacy broadcasts
-        for (NetworkRequestInfo nri : addedRequests) notifyNetworkAvailable(newNetwork, nri);
+        return changes;
     }
 
     /**
@@ -6531,45 +6645,107 @@
      * being disconnected.
      */
     private void rematchAllNetworksAndRequests() {
-        // TODO: This may be slow, and should be optimized. Unfortunately at this moment the
-        // processing is network-major instead of request-major (the code iterates through all
-        // networks, then for each it iterates for all requests), which is a problem for re-scoring
-        // requests. Once the code has switched to a request-major iteration style, this can
-        // be optimized to only do the processing needed.
+        // TODO: This may be slow, and should be optimized.
         final long now = SystemClock.elapsedRealtime();
-        final NetworkAgentInfo oldDefaultNetwork = getDefaultNetwork();
+        final NetworkReassignment changes = computeNetworkReassignment();
+        if (VDBG || DDBG) {
+            log(changes.debugString());
+        } else if (DBG) {
+            log(changes.toString()); // Shorter form, only one line of log
+        }
+        applyNetworkReassignment(changes, now);
+    }
 
-        final NetworkAgentInfo[] nais = mNetworkAgentInfos.values().toArray(
-                new NetworkAgentInfo[mNetworkAgentInfos.size()]);
-        // Rematch higher scoring networks first to prevent requests first matching a lower
-        // scoring network and then a higher scoring network, which could produce multiple
-        // callbacks.
-        Arrays.sort(nais);
-        final NetworkReassignment changes = new NetworkReassignment();
+    private void applyNetworkReassignment(@NonNull final NetworkReassignment changes,
+            final long now) {
+        final Collection<NetworkAgentInfo> nais = mNetworkAgentInfos.values();
+
+        // Since most of the time there are only 0 or 1 background networks, it would probably
+        // be more efficient to just use an ArrayList here. TODO : measure performance
+        final ArraySet<NetworkAgentInfo> oldBgNetworks = new ArraySet<>();
         for (final NetworkAgentInfo nai : nais) {
-            rematchNetworkAndRequests(changes, nai, now);
+            if (nai.isBackgroundNetwork()) oldBgNetworks.add(nai);
         }
 
-        final NetworkAgentInfo newDefaultNetwork = getDefaultNetwork();
+        // First, update the lists of satisfied requests in the network agents. This is necessary
+        // because some code later depends on this state to be correct, most prominently computing
+        // the linger status.
+        for (final NetworkReassignment.RequestReassignment event :
+                changes.getRequestReassignments()) {
+            updateSatisfiersForRematchRequest(event.mRequest, event.mOldNetwork,
+                    event.mNewNetwork, now);
+        }
 
-        for (final NetworkReassignment.NetworkBgStatePair event : changes.getRematchedNetworks()) {
-            // Process listen requests and update capabilities if the background state has
-            // changed for this network. For consistency with previous behavior, send onLost
-            // callbacks before onAvailable.
-            processNewlyLostListenRequests(event.mNetwork);
-            if (event.mOldBackground != event.mNetwork.isBackgroundNetwork()) {
-                applyBackgroundChangeForRematch(event.mNetwork);
+        final NetworkAgentInfo oldDefaultNetwork = getDefaultNetwork();
+        final NetworkRequestInfo defaultRequestInfo = mNetworkRequests.get(mDefaultRequest);
+        final NetworkReassignment.RequestReassignment reassignment =
+                changes.getReassignment(defaultRequestInfo);
+        final NetworkAgentInfo newDefaultNetwork =
+                null != reassignment ? reassignment.mNewNetwork : oldDefaultNetwork;
+
+        if (oldDefaultNetwork != newDefaultNetwork) {
+            if (oldDefaultNetwork != null) {
+                mLingerMonitor.noteLingerDefaultNetwork(oldDefaultNetwork, newDefaultNetwork);
             }
-            processNewlySatisfiedListenRequests(event.mNetwork);
+            updateDataActivityTracking(newDefaultNetwork, oldDefaultNetwork);
+            // Notify system services of the new default.
+            makeDefault(newDefaultNetwork);
+            // Log 0 -> X and Y -> X default network transitions, where X is the new default.
+            mDeps.getMetricsLogger().defaultNetworkMetrics().logDefaultNetworkEvent(
+                    now, newDefaultNetwork, oldDefaultNetwork);
+            // Have a new default network, release the transition wakelock in
+            scheduleReleaseNetworkTransitionWakelock();
         }
 
+        // Notify requested networks are available after the default net is switched, but
+        // before LegacyTypeTracker sends legacy broadcasts
+        for (final NetworkReassignment.RequestReassignment event :
+                changes.getRequestReassignments()) {
+            // Tell NetworkProviders about the new score, so they can stop
+            // trying to connect if they know they cannot match it.
+            // TODO - this could get expensive if there are a lot of outstanding requests for this
+            // network. Think of a way to reduce this. Push netid->request mapping to each factory?
+            sendUpdatedScoreToFactories(event.mRequest.request, event.mNewNetwork);
+
+            if (null != event.mNewNetwork) {
+                notifyNetworkAvailable(event.mNewNetwork, event.mRequest);
+            } else {
+                callCallbackForRequest(event.mRequest, event.mOldNetwork,
+                        ConnectivityManager.CALLBACK_LOST, 0);
+            }
+        }
+
+        // Update the linger state before processing listen callbacks, because the background
+        // computation depends on whether the network is lingering. Don't send the LOSING callbacks
+        // just yet though, because they have to be sent after the listens are processed to keep
+        // backward compatibility.
+        final ArrayList<NetworkAgentInfo> lingeredNetworks = new ArrayList<>();
         for (final NetworkAgentInfo nai : nais) {
             // Rematching may have altered the linger state of some networks, so update all linger
             // timers. updateLingerState reads the state from the network agent and does nothing
             // if the state has not changed : the source of truth is controlled with
             // NetworkAgentInfo#lingerRequest and NetworkAgentInfo#unlingerRequest, which have been
             // called while rematching the individual networks above.
-            updateLingerState(nai, now);
+            if (updateLingerState(nai, now)) {
+                lingeredNetworks.add(nai);
+            }
+        }
+
+        for (final NetworkAgentInfo nai : nais) {
+            if (!nai.everConnected) continue;
+            final boolean oldBackground = oldBgNetworks.contains(nai);
+            // Process listen requests and update capabilities if the background state has
+            // changed for this network. For consistency with previous behavior, send onLost
+            // callbacks before onAvailable.
+            processNewlyLostListenRequests(nai);
+            if (oldBackground != nai.isBackgroundNetwork()) {
+                applyBackgroundChangeForRematch(nai);
+            }
+            processNewlySatisfiedListenRequests(nai);
+        }
+
+        for (final NetworkAgentInfo nai : lingeredNetworks) {
+            notifyNetworkLosing(nai, now);
         }
 
         updateLegacyTypeTrackerAndVpnLockdownForRematch(oldDefaultNetwork, newDefaultNetwork, nais);
@@ -6585,9 +6761,11 @@
                     // and became unneeded due to another network improving its score to the
                     // point where this network will no longer be able to satisfy any requests
                     // even if it validates.
-                    updateLingerState(nai, now);
+                    if (updateLingerState(nai, now)) {
+                        notifyNetworkLosing(nai, now);
+                    }
                 } else {
-                    if (DBG) log("Reaping " + nai.name());
+                    if (DBG) log("Reaping " + nai.toShortString());
                     teardownUnneededNetwork(nai);
                 }
             }
@@ -6615,7 +6793,7 @@
     private void updateLegacyTypeTrackerAndVpnLockdownForRematch(
             @Nullable final NetworkAgentInfo oldDefaultNetwork,
             @Nullable final NetworkAgentInfo newDefaultNetwork,
-            @NonNull final NetworkAgentInfo[] nais) {
+            @NonNull final Collection<NetworkAgentInfo> nais) {
         if (oldDefaultNetwork != newDefaultNetwork) {
             // Maintain the illusion : since the legacy API only understands one network at a time,
             // if the default network changed, apps should see a disconnected broadcast for the
@@ -6654,7 +6832,9 @@
         // they may get old info. Reverse this after the old startUsing api is removed.
         // This is on top of the multiple intent sequencing referenced in the todo above.
         for (NetworkAgentInfo nai : nais) {
-            addNetworkToLegacyTypeTracker(nai);
+            if (nai.everConnected) {
+                addNetworkToLegacyTypeTracker(nai);
+            }
         }
     }
 
@@ -6735,8 +6915,8 @@
         notifyLockdownVpn(networkAgent);
 
         if (DBG) {
-            log(networkAgent.name() + " EVENT_NETWORK_INFO_CHANGED, going from " +
-                    oldInfo.getState() + " to " + state);
+            log(networkAgent.toShortString() + " EVENT_NETWORK_INFO_CHANGED, going from "
+                    + oldInfo.getState() + " to " + state);
         }
 
         if (!networkAgent.created
@@ -6754,7 +6934,7 @@
             networkAgent.everConnected = true;
 
             if (networkAgent.linkProperties == null) {
-                Slog.wtf(TAG, networkAgent.name() + " connected with null LinkProperties");
+                Slog.wtf(TAG, networkAgent.toShortString() + " connected with null LinkProperties");
             }
 
             // NetworkCapabilities need to be set before sending the private DNS config to
@@ -6814,7 +6994,7 @@
     }
 
     private void updateNetworkScore(NetworkAgentInfo nai, NetworkScore ns) {
-        if (VDBG || DDBG) log("updateNetworkScore for " + nai.name() + " to " + ns);
+        if (VDBG || DDBG) log("updateNetworkScore for " + nai.toShortString() + " to " + ns);
         nai.setNetworkScore(ns);
         rematchAllNetworksAndRequests();
         sendUpdatedScoreToFactories(nai);
@@ -6838,6 +7018,12 @@
         callCallbackForRequest(nri, nai, ConnectivityManager.CALLBACK_AVAILABLE, blocked ? 1 : 0);
     }
 
+    // Notify the requests on this NAI that the network is now lingered.
+    private void notifyNetworkLosing(@NonNull final NetworkAgentInfo nai, final long now) {
+        final int lingerTime = (int) (nai.getLingerExpiry() - now);
+        notifyNetworkCallbacks(nai, ConnectivityManager.CALLBACK_LOSING, lingerTime);
+    }
+
     /**
      * Notify of the blocked state apps with a registered callback matching a given NAI.
      *
@@ -6954,14 +7140,12 @@
     protected void notifyNetworkCallbacks(NetworkAgentInfo networkAgent, int notifyType, int arg1) {
         if (VDBG || DDBG) {
             String notification = ConnectivityManager.getCallbackName(notifyType);
-            log("notifyType " + notification + " for " + networkAgent.name());
+            log("notifyType " + notification + " for " + networkAgent.toShortString());
         }
         for (int i = 0; i < networkAgent.numNetworkRequests(); i++) {
             NetworkRequest nr = networkAgent.requestAt(i);
             NetworkRequestInfo nri = mNetworkRequests.get(nr);
             if (VDBG) log(" sending notification for " + nr);
-            // TODO: if we're in the middle of a rematch, can we send a CAP_CHANGED callback for
-            // a network that no longer satisfies the listen?
             if (nri.mPendingIntent == null) {
                 callCallbackForRequest(nri, networkAgent, notifyType, arg1);
             } else {
@@ -7126,7 +7310,7 @@
                 final String alwaysOnPackage = getAlwaysOnVpnPackage(userId);
                 if (alwaysOnPackage != null) {
                     setAlwaysOnVpnPackage(userId, null, false, null);
-                    setVpnPackageAuthorization(alwaysOnPackage, userId, false);
+                    setVpnPackageAuthorization(alwaysOnPackage, userId, VpnManager.TYPE_VPN_NONE);
                 }
 
                 // Turn Always-on VPN off
@@ -7149,7 +7333,8 @@
                     } else {
                         // Prevent this app (packagename = vpnConfig.user) from initiating
                         // VPN connections in the future without user intervention.
-                        setVpnPackageAuthorization(vpnConfig.user, userId, false);
+                        setVpnPackageAuthorization(
+                                vpnConfig.user, userId, VpnManager.TYPE_VPN_NONE);
 
                         prepareVpn(null, VpnConfig.LEGACY_VPN, userId);
                     }
@@ -7250,7 +7435,11 @@
 
     @GuardedBy("mVpns")
     private Vpn getVpnIfOwner() {
-        final int uid = Binder.getCallingUid();
+        return getVpnIfOwner(Binder.getCallingUid());
+    }
+
+    @GuardedBy("mVpns")
+    private Vpn getVpnIfOwner(int uid) {
         final int user = UserHandle.getUserId(uid);
 
         final Vpn vpn = mVpns.get(user);
@@ -7337,19 +7526,365 @@
         }
     }
 
+    /**
+     * Handler used for managing all Connectivity Diagnostics related functions.
+     *
+     * @see android.net.ConnectivityDiagnosticsManager
+     *
+     * TODO(b/147816404): Explore moving ConnectivityDiagnosticsHandler to a separate file
+     */
+    @VisibleForTesting
+    class ConnectivityDiagnosticsHandler extends Handler {
+        private final String mTag = ConnectivityDiagnosticsHandler.class.getSimpleName();
+
+        /**
+         * Used to handle ConnectivityDiagnosticsCallback registration events from {@link
+         * android.net.ConnectivityDiagnosticsManager}.
+         * obj = ConnectivityDiagnosticsCallbackInfo with IConnectivityDiagnosticsCallback and
+         * NetworkRequestInfo to be registered
+         */
+        private static final int EVENT_REGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK = 1;
+
+        /**
+         * Used to handle ConnectivityDiagnosticsCallback unregister events from {@link
+         * android.net.ConnectivityDiagnosticsManager}.
+         * obj = the IConnectivityDiagnosticsCallback to be unregistered
+         * arg1 = the uid of the caller
+         */
+        private static final int EVENT_UNREGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK = 2;
+
+        /**
+         * Event for {@link NetworkStateTrackerHandler} to trigger ConnectivityReport callbacks
+         * after processing {@link #EVENT_NETWORK_TESTED} events.
+         * obj = {@link ConnectivityReportEvent} representing ConnectivityReport info reported from
+         * NetworkMonitor.
+         * data = PersistableBundle of extras passed from NetworkMonitor.
+         *
+         * <p>See {@link ConnectivityService#EVENT_NETWORK_TESTED}.
+         */
+        private static final int EVENT_NETWORK_TESTED = ConnectivityService.EVENT_NETWORK_TESTED;
+
+        /**
+         * Event for NetworkMonitor to inform ConnectivityService that a potential data stall has
+         * been detected on the network.
+         * obj = Long the timestamp (in millis) for when the suspected data stall was detected.
+         * arg1 = {@link DataStallReport#DetectionMethod} indicating the detection method.
+         * arg2 = NetID.
+         * data = PersistableBundle of extras passed from NetworkMonitor.
+         */
+        private static final int EVENT_DATA_STALL_SUSPECTED = 4;
+
+        /**
+         * Event for ConnectivityDiagnosticsHandler to handle network connectivity being reported to
+         * the platform. This event will invoke {@link
+         * IConnectivityDiagnosticsCallback#onNetworkConnectivityReported} for permissioned
+         * callbacks.
+         * obj = Network that was reported on
+         * arg1 = boolint for the quality reported
+         */
+        private static final int EVENT_NETWORK_CONNECTIVITY_REPORTED = 5;
+
+        private ConnectivityDiagnosticsHandler(Looper looper) {
+            super(looper);
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            switch (msg.what) {
+                case EVENT_REGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK: {
+                    handleRegisterConnectivityDiagnosticsCallback(
+                            (ConnectivityDiagnosticsCallbackInfo) msg.obj);
+                    break;
+                }
+                case EVENT_UNREGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK: {
+                    handleUnregisterConnectivityDiagnosticsCallback(
+                            (IConnectivityDiagnosticsCallback) msg.obj, msg.arg1);
+                    break;
+                }
+                case EVENT_NETWORK_TESTED: {
+                    final ConnectivityReportEvent reportEvent =
+                            (ConnectivityReportEvent) msg.obj;
+
+                    // This is safe because {@link
+                    // NetworkMonitorCallbacks#notifyNetworkTestedWithExtras} receives a
+                    // PersistableBundle and converts it to the Bundle in the incoming Message. If
+                    // {@link NetworkMonitorCallbacks#notifyNetworkTested} is called, msg.data will
+                    // not be set. This is also safe, as msg.getData() will return an empty Bundle.
+                    final PersistableBundle extras = new PersistableBundle(msg.getData());
+                    handleNetworkTestedWithExtras(reportEvent, extras);
+                    break;
+                }
+                case EVENT_DATA_STALL_SUSPECTED: {
+                    final NetworkAgentInfo nai = getNetworkAgentInfoForNetId(msg.arg2);
+                    if (nai == null) break;
+
+                    // This is safe because NetworkMonitorCallbacks#notifyDataStallSuspected
+                    // receives a PersistableBundle and converts it to the Bundle in the incoming
+                    // Message.
+                    final PersistableBundle extras = new PersistableBundle(msg.getData());
+                    handleDataStallSuspected(nai, (long) msg.obj, msg.arg1, extras);
+                    break;
+                }
+                case EVENT_NETWORK_CONNECTIVITY_REPORTED: {
+                    handleNetworkConnectivityReported((NetworkAgentInfo) msg.obj, toBool(msg.arg1));
+                    break;
+                }
+                default: {
+                    Log.e(mTag, "Unrecognized event in ConnectivityDiagnostics: " + msg.what);
+                }
+            }
+        }
+    }
+
+    /** Class used for cleaning up IConnectivityDiagnosticsCallback instances after their death. */
+    @VisibleForTesting
+    class ConnectivityDiagnosticsCallbackInfo implements Binder.DeathRecipient {
+        @NonNull private final IConnectivityDiagnosticsCallback mCb;
+        @NonNull private final NetworkRequestInfo mRequestInfo;
+        @NonNull private final String mCallingPackageName;
+
+        @VisibleForTesting
+        ConnectivityDiagnosticsCallbackInfo(
+                @NonNull IConnectivityDiagnosticsCallback cb,
+                @NonNull NetworkRequestInfo nri,
+                @NonNull String callingPackageName) {
+            mCb = cb;
+            mRequestInfo = nri;
+            mCallingPackageName = callingPackageName;
+        }
+
+        @Override
+        public void binderDied() {
+            log("ConnectivityDiagnosticsCallback IBinder died.");
+            unregisterConnectivityDiagnosticsCallback(mCb);
+        }
+    }
+
+    /**
+     * Class used for sending information from {@link
+     * NetworkMonitorCallbacks#notifyNetworkTestedWithExtras} to the handler for processing it.
+     */
+    private static class NetworkTestedResults {
+        private final int mNetId;
+        private final int mTestResult;
+        private final long mTimestampMillis;
+        @Nullable private final String mRedirectUrl;
+
+        private NetworkTestedResults(
+                int netId, int testResult, long timestampMillis, @Nullable String redirectUrl) {
+            mNetId = netId;
+            mTestResult = testResult;
+            mTimestampMillis = timestampMillis;
+            mRedirectUrl = redirectUrl;
+        }
+    }
+
+    /**
+     * Class used for sending information from {@link NetworkStateTrackerHandler} to {@link
+     * ConnectivityDiagnosticsHandler}.
+     */
+    private static class ConnectivityReportEvent {
+        private final long mTimestampMillis;
+        @NonNull private final NetworkAgentInfo mNai;
+
+        private ConnectivityReportEvent(long timestampMillis, @NonNull NetworkAgentInfo nai) {
+            mTimestampMillis = timestampMillis;
+            mNai = nai;
+        }
+    }
+
+    private void handleRegisterConnectivityDiagnosticsCallback(
+            @NonNull ConnectivityDiagnosticsCallbackInfo cbInfo) {
+        ensureRunningOnConnectivityServiceThread();
+
+        final IConnectivityDiagnosticsCallback cb = cbInfo.mCb;
+        final NetworkRequestInfo nri = cbInfo.mRequestInfo;
+
+        // This means that the client registered the same callback multiple times. Do
+        // not override the previous entry, and exit silently.
+        if (mConnectivityDiagnosticsCallbacks.containsKey(cb)) {
+            if (VDBG) log("Diagnostics callback is already registered");
+
+            // Decrement the reference count for this NetworkRequestInfo. The reference count is
+            // incremented when the NetworkRequestInfo is created as part of
+            // enforceRequestCountLimit().
+            decrementNetworkRequestPerUidCount(nri);
+            return;
+        }
+
+        mConnectivityDiagnosticsCallbacks.put(cb, cbInfo);
+
+        try {
+            cb.asBinder().linkToDeath(cbInfo, 0);
+        } catch (RemoteException e) {
+            cbInfo.binderDied();
+        }
+    }
+
+    private void handleUnregisterConnectivityDiagnosticsCallback(
+            @NonNull IConnectivityDiagnosticsCallback cb, int uid) {
+        ensureRunningOnConnectivityServiceThread();
+
+        if (!mConnectivityDiagnosticsCallbacks.containsKey(cb)) {
+            if (VDBG) log("Removing diagnostics callback that is not currently registered");
+            return;
+        }
+
+        final NetworkRequestInfo nri = mConnectivityDiagnosticsCallbacks.get(cb).mRequestInfo;
+
+        if (uid != nri.mUid) {
+            if (VDBG) loge("Different uid than registrant attempting to unregister cb");
+            return;
+        }
+
+        cb.asBinder().unlinkToDeath(mConnectivityDiagnosticsCallbacks.remove(cb), 0);
+    }
+
+    private void handleNetworkTestedWithExtras(
+            @NonNull ConnectivityReportEvent reportEvent, @NonNull PersistableBundle extras) {
+        final NetworkAgentInfo nai = reportEvent.mNai;
+        final ConnectivityReport report =
+                new ConnectivityReport(
+                        reportEvent.mNai.network,
+                        reportEvent.mTimestampMillis,
+                        nai.linkProperties,
+                        nai.networkCapabilities,
+                        extras);
+        final List<IConnectivityDiagnosticsCallback> results =
+                getMatchingPermissionedCallbacks(nai);
+        for (final IConnectivityDiagnosticsCallback cb : results) {
+            try {
+                cb.onConnectivityReport(report);
+            } catch (RemoteException ex) {
+                loge("Error invoking onConnectivityReport", ex);
+            }
+        }
+    }
+
+    private void handleDataStallSuspected(
+            @NonNull NetworkAgentInfo nai, long timestampMillis, int detectionMethod,
+            @NonNull PersistableBundle extras) {
+        final DataStallReport report =
+                new DataStallReport(
+                        nai.network,
+                        timestampMillis,
+                        detectionMethod,
+                        nai.linkProperties,
+                        nai.networkCapabilities,
+                        extras);
+        final List<IConnectivityDiagnosticsCallback> results =
+                getMatchingPermissionedCallbacks(nai);
+        for (final IConnectivityDiagnosticsCallback cb : results) {
+            try {
+                cb.onDataStallSuspected(report);
+            } catch (RemoteException ex) {
+                loge("Error invoking onDataStallSuspected", ex);
+            }
+        }
+    }
+
+    private void handleNetworkConnectivityReported(
+            @NonNull NetworkAgentInfo nai, boolean connectivity) {
+        final List<IConnectivityDiagnosticsCallback> results =
+                getMatchingPermissionedCallbacks(nai);
+        for (final IConnectivityDiagnosticsCallback cb : results) {
+            try {
+                cb.onNetworkConnectivityReported(nai.network, connectivity);
+            } catch (RemoteException ex) {
+                loge("Error invoking onNetworkConnectivityReported", ex);
+            }
+        }
+    }
+
+    private List<IConnectivityDiagnosticsCallback> getMatchingPermissionedCallbacks(
+            @NonNull NetworkAgentInfo nai) {
+        final List<IConnectivityDiagnosticsCallback> results = new ArrayList<>();
+        for (Entry<IConnectivityDiagnosticsCallback, ConnectivityDiagnosticsCallbackInfo> entry :
+                mConnectivityDiagnosticsCallbacks.entrySet()) {
+            final ConnectivityDiagnosticsCallbackInfo cbInfo = entry.getValue();
+            final NetworkRequestInfo nri = cbInfo.mRequestInfo;
+            if (nai.satisfies(nri.request)) {
+                if (checkConnectivityDiagnosticsPermissions(
+                        nri.mPid, nri.mUid, nai, cbInfo.mCallingPackageName)) {
+                    results.add(entry.getKey());
+                }
+            }
+        }
+        return results;
+    }
+
+    @VisibleForTesting
+    boolean checkConnectivityDiagnosticsPermissions(
+            int callbackPid, int callbackUid, NetworkAgentInfo nai, String callbackPackageName) {
+        if (checkNetworkStackPermission(callbackPid, callbackUid)) {
+            return true;
+        }
+
+        if (!mLocationPermissionChecker.checkLocationPermission(
+                callbackPackageName, null /* featureId */, callbackUid, null /* message */)) {
+            return false;
+        }
+
+        synchronized (mVpns) {
+            if (getVpnIfOwner(callbackUid) != null) {
+                return true;
+            }
+        }
+
+        // Administrator UIDs also contains the Owner UID
+        if (nai.networkCapabilities.getAdministratorUids().contains(callbackUid)) {
+            return true;
+        }
+
+        return false;
+    }
+
     @Override
     public void registerConnectivityDiagnosticsCallback(
-            @NonNull IConnectivityDiagnosticsCallback callback, @NonNull NetworkRequest request) {
-        // TODO(b/146444622): implement register IConnectivityDiagnosticsCallback functionality
-        throw new UnsupportedOperationException(
-                "registerConnectivityDiagnosticsCallback not yet implemented");
+            @NonNull IConnectivityDiagnosticsCallback callback,
+            @NonNull NetworkRequest request,
+            @NonNull String callingPackageName) {
+        if (request.legacyType != TYPE_NONE) {
+            throw new IllegalArgumentException("ConnectivityManager.TYPE_* are deprecated."
+                    + " Please use NetworkCapabilities instead.");
+        }
+        final int callingUid = Binder.getCallingUid();
+        mAppOpsManager.checkPackage(callingUid, callingPackageName);
+
+        // This NetworkCapabilities is only used for matching to Networks. Clear out its owner uid
+        // and administrator uids to be safe.
+        final NetworkCapabilities nc = new NetworkCapabilities(request.networkCapabilities);
+        restrictRequestUidsForCallerAndSetRequestorInfo(nc, callingUid, callingPackageName);
+
+        final NetworkRequest requestWithId =
+                new NetworkRequest(
+                        nc, TYPE_NONE, nextNetworkRequestId(), NetworkRequest.Type.LISTEN);
+
+        // NetworkRequestInfos created here count towards MAX_NETWORK_REQUESTS_PER_UID limit.
+        //
+        // nri is not bound to the death of callback. Instead, callback.bindToDeath() is set in
+        // handleRegisterConnectivityDiagnosticsCallback(). nri will be cleaned up as part of the
+        // callback's binder death.
+        final NetworkRequestInfo nri = new NetworkRequestInfo(requestWithId);
+        final ConnectivityDiagnosticsCallbackInfo cbInfo =
+                new ConnectivityDiagnosticsCallbackInfo(callback, nri, callingPackageName);
+
+        mConnectivityDiagnosticsHandler.sendMessage(
+                mConnectivityDiagnosticsHandler.obtainMessage(
+                        ConnectivityDiagnosticsHandler
+                                .EVENT_REGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK,
+                        cbInfo));
     }
 
     @Override
     public void unregisterConnectivityDiagnosticsCallback(
             @NonNull IConnectivityDiagnosticsCallback callback) {
-        // TODO(b/146444622): implement register IConnectivityDiagnosticsCallback functionality
-        throw new UnsupportedOperationException(
-                "unregisterConnectivityDiagnosticsCallback not yet implemented");
+        mConnectivityDiagnosticsHandler.sendMessage(
+                mConnectivityDiagnosticsHandler.obtainMessage(
+                        ConnectivityDiagnosticsHandler
+                                .EVENT_UNREGISTER_CONNECTIVITY_DIAGNOSTICS_CALLBACK,
+                        Binder.getCallingUid(),
+                        0,
+                        callback));
     }
 }
diff --git a/services/core/java/com/android/server/IpSecService.java b/services/core/java/com/android/server/IpSecService.java
index c987620..9540f43 100644
--- a/services/core/java/com/android/server/IpSecService.java
+++ b/services/core/java/com/android/server/IpSecService.java
@@ -1556,16 +1556,16 @@
         }
 
         Objects.requireNonNull(callingPackage, "Null calling package cannot create IpSec tunnels");
-        switch (getAppOpsManager().noteOp(TUNNEL_OP, Binder.getCallingUid(), callingPackage)) {
-            case AppOpsManager.MODE_DEFAULT:
-                mContext.enforceCallingOrSelfPermission(
-                        android.Manifest.permission.MANAGE_IPSEC_TUNNELS, "IpSecService");
-                break;
-            case AppOpsManager.MODE_ALLOWED:
-                return;
-            default:
-                throw new SecurityException("Request to ignore AppOps for non-legacy API");
+
+        // OP_MANAGE_IPSEC_TUNNELS will return MODE_ERRORED by default, including for the system
+        // server. If the appop is not granted, require that the caller has the MANAGE_IPSEC_TUNNELS
+        // permission or is the System Server.
+        if (AppOpsManager.MODE_ALLOWED == getAppOpsManager().noteOpNoThrow(
+                TUNNEL_OP, Binder.getCallingUid(), callingPackage)) {
+            return;
         }
+        mContext.enforceCallingOrSelfPermission(
+                android.Manifest.permission.MANAGE_IPSEC_TUNNELS, "IpSecService");
     }
 
     private void createOrUpdateTransform(
diff --git a/services/core/java/com/android/server/LocationManagerService.java b/services/core/java/com/android/server/LocationManagerService.java
index f1f2d2a..7aa4661 100644
--- a/services/core/java/com/android/server/LocationManagerService.java
+++ b/services/core/java/com/android/server/LocationManagerService.java
@@ -27,9 +27,12 @@
 import static android.location.LocationManager.PASSIVE_PROVIDER;
 import static android.os.PowerManager.locationPowerSaveModeToString;
 
+import static java.util.concurrent.TimeUnit.NANOSECONDS;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.AppOpsManager;
 import android.app.PendingIntent;
@@ -43,7 +46,9 @@
 import android.location.GeocoderParams;
 import android.location.Geofence;
 import android.location.GnssMeasurementCorrections;
+import android.location.GnssRequest;
 import android.location.IBatchedLocationCallback;
+import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssNavigationMessageListener;
 import android.location.IGnssStatusListener;
@@ -74,7 +79,6 @@
 import android.text.TextUtils;
 import android.util.EventLog;
 import android.util.Log;
-import android.util.Slog;
 import android.util.SparseArray;
 import android.util.TimeUtils;
 
@@ -88,6 +92,7 @@
 import com.android.internal.util.Preconditions;
 import com.android.server.location.AbstractLocationProvider;
 import com.android.server.location.AbstractLocationProvider.State;
+import com.android.server.location.AppForegroundHelper;
 import com.android.server.location.CallerIdentity;
 import com.android.server.location.GeocoderProxy;
 import com.android.server.location.GeofenceManager;
@@ -98,12 +103,13 @@
 import com.android.server.location.LocationRequestStatistics;
 import com.android.server.location.LocationRequestStatistics.PackageProviderKey;
 import com.android.server.location.LocationRequestStatistics.PackageStatistics;
-import com.android.server.location.LocationSettingsStore;
 import com.android.server.location.LocationUsageLogger;
 import com.android.server.location.MockProvider;
 import com.android.server.location.MockableLocationProvider;
 import com.android.server.location.PassiveProvider;
-import com.android.server.location.UserInfoStore;
+import com.android.server.location.SettingsHelper;
+import com.android.server.location.UserInfoHelper;
+import com.android.server.location.UserInfoHelper.UserListener;
 import com.android.server.location.gnss.GnssManagerService;
 import com.android.server.pm.permission.PermissionManagerServiceInternal;
 
@@ -122,7 +128,6 @@
 import java.util.Set;
 import java.util.TreeMap;
 import java.util.concurrent.CopyOnWriteArrayList;
-import java.util.concurrent.TimeUnit;
 
 /**
  * The service class that manages LocationProviders and issues location
@@ -140,7 +145,6 @@
         public Lifecycle(Context context) {
             super(context);
             mService = new LocationManagerService(context);
-            LocalServices.addService(LocationManagerInternal.class, mService.new LocalService());
         }
 
         @Override
@@ -153,7 +157,7 @@
             if (phase == PHASE_SYSTEM_SERVICES_READY) {
                 // the location service must be functioning after this boot phase
                 mService.onSystemReady();
-            } else if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
+            } else if (phase == PHASE_THIRD_PARTY_APPS_CAN_START) {
                 // some providers rely on third party code, so we wait to initialize
                 // providers until third party code is allowed to run
                 mService.onSystemThirdPartyAppsCanStart();
@@ -178,12 +182,12 @@
     // The maximum interval a location request can have and still be considered "high power".
     private static final long HIGH_POWER_INTERVAL_MS = 5 * 60 * 1000;
 
+    // The fastest interval that applications can receive coarse locations
+    private static final long FASTEST_COARSE_INTERVAL_MS = 10 * 60 * 1000;
+
     // maximum age of a location before it is no longer considered "current"
     private static final long MAX_CURRENT_LOCATION_AGE_MS = 10 * 1000;
 
-    private static final int FOREGROUND_IMPORTANCE_CUTOFF
-            = ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE;
-
     // Location Providers may sometimes deliver location updates
     // slightly faster that requested - provide grace period so
     // we don't unnecessarily filter events that are otherwise on
@@ -195,21 +199,27 @@
     private final Object mLock = new Object();
     private final Context mContext;
     private final Handler mHandler;
-    private final UserInfoStore mUserInfoStore;
-    private final LocationSettingsStore mSettingsStore;
+    private final LocalService mLocalService;
+    private final UserInfoHelper mUserInfoHelper;
+    private final SettingsHelper mSettingsHelper;
+    private final AppForegroundHelper mAppForegroundHelper;
     private final LocationUsageLogger mLocationUsageLogger;
 
+    @Nullable private GnssManagerService mGnssManagerService = null;
+
     private final PassiveLocationProviderManager mPassiveManager;
 
     private AppOpsManager mAppOps;
     private PackageManager mPackageManager;
     private PowerManager mPowerManager;
-    private ActivityManager mActivityManager;
+
+    // TODO: sharing a location fudger with mock providers can leak information as the mock provider
+    //   can be used to retrieve offset information. the fudger should likely be reset whenever mock
+    //   providers are added or removed
+    private LocationFudger mLocationFudger;
 
     private GeofenceManager mGeofenceManager;
-    private LocationFudger mLocationFudger;
     private GeocoderProxy mGeocodeProvider;
-    @Nullable private GnssManagerService mGnssManagerService;
 
     @GuardedBy("mLock")
     private String mExtraLocationControllerPackage;
@@ -228,16 +238,6 @@
 
     private final LocationRequestStatistics mRequestStatistics = new LocationRequestStatistics();
 
-    // mapping from provider name to last known location
-    @GuardedBy("mLock")
-    private final HashMap<String, Location> mLastLocation = new HashMap<>();
-
-    // same as mLastLocation, but is not updated faster than LocationFudger.FASTEST_INTERVAL_MS.
-    // locations stored here are not fudged for coarse permissions.
-    @GuardedBy("mLock")
-    private final HashMap<String, Location> mLastLocationCoarseInterval =
-            new HashMap<>();
-
     @GuardedBy("mLock")
     @PowerManager.LocationPowerSaveMode
     private int mBatterySaverMode;
@@ -245,11 +245,16 @@
     private LocationManagerService(Context context) {
         mContext = context;
         mHandler = FgThread.getHandler();
-        mUserInfoStore = new UserInfoStore(mContext);
-        mSettingsStore = new LocationSettingsStore(mContext, mHandler);
+        mLocalService = new LocalService();
+
+        LocalServices.addService(LocationManagerInternal.class, mLocalService);
+
+        mUserInfoHelper = new UserInfoHelper(mContext);
+        mSettingsHelper = new SettingsHelper(mContext, mHandler);
+        mAppForegroundHelper = new AppForegroundHelper(mContext);
         mLocationUsageLogger = new LocationUsageLogger();
 
-        // set up passive provider -  we do this early because it has no dependencies on system
+        // set up passive provider - we do this early because it has no dependencies on system
         // services or external code that isn't ready yet, and because this allows the variable to
         // be final. other more complex providers are initialized later, when system services are
         // ready
@@ -272,17 +277,17 @@
     }
 
     private void onSystemReady() {
-        mUserInfoStore.onSystemReady();
-        mSettingsStore.onSystemReady();
+        mUserInfoHelper.onSystemReady();
+        mSettingsHelper.onSystemReady();
+        mAppForegroundHelper.onSystemReady();
 
         synchronized (mLock) {
             mPackageManager = mContext.getPackageManager();
             mAppOps = mContext.getSystemService(AppOpsManager.class);
             mPowerManager = mContext.getSystemService(PowerManager.class);
-            mActivityManager = mContext.getSystemService(ActivityManager.class);
 
-            mLocationFudger = new LocationFudger(mContext, mHandler);
-            mGeofenceManager = new GeofenceManager(mContext, mSettingsStore);
+            mLocationFudger = new LocationFudger(mSettingsHelper.getCoarseLocationAccuracyM());
+            mGeofenceManager = new GeofenceManager(mContext, mSettingsHelper);
 
             PowerManagerInternal localPowerManager =
                     LocalServices.getService(PowerManagerInternal.class);
@@ -296,11 +301,7 @@
                         public void onOpChanged(int op, String packageName) {
                             // onOpChanged invoked on ui thread, move to our thread to reduce risk
                             // of blocking ui thread
-                            mHandler.post(() -> {
-                                synchronized (mLock) {
-                                    onAppOpChangedLocked();
-                                }
-                            });
+                            mHandler.post(() -> onAppOpChanged(packageName));
                         }
                     });
             mPackageManager.addOnPermissionsChangeListener(
@@ -313,17 +314,6 @@
                             }
                         });
                     });
-            mActivityManager.addOnUidImportanceListener(
-                    (uid, importance) -> {
-                        // listener invoked on ui thread, move to our thread to reduce risk of
-                        // blocking ui thread
-                        mHandler.post(() -> {
-                            synchronized (mLock) {
-                                onUidImportanceChangedLocked(uid, importance);
-                            }
-                        });
-                    },
-                    FOREGROUND_IMPORTANCE_CUTOFF);
 
             localPowerManager.registerLowPowerModeObserver(ServiceType.LOCATION,
                     state -> {
@@ -337,26 +327,13 @@
                     });
             mBatterySaverMode = mPowerManager.getLocationPowerSaveMode();
 
-            mSettingsStore.addOnLocationEnabledChangedListener((userId) -> {
-                synchronized (mLock) {
-                    onLocationModeChangedLocked(userId);
-                }
-            });
-            mSettingsStore.addOnBackgroundThrottleIntervalChangedListener(() -> {
-                synchronized (mLock) {
-                    onBackgroundThrottleIntervalChangedLocked();
-                }
-            });
-            mSettingsStore.addOnBackgroundThrottlePackageWhitelistChangedListener(() -> {
-                synchronized (mLock) {
-                    onBackgroundThrottleWhitelistChangedLocked();
-                }
-            });
-            mSettingsStore.addOnIgnoreSettingsPackageWhitelistChangedListener(() -> {
-                synchronized (mLock) {
-                    onIgnoreSettingsWhitelistChangedLocked();
-                }
-            });
+            mSettingsHelper.addOnLocationEnabledChangedListener(this::onLocationModeChanged);
+            mSettingsHelper.addOnBackgroundThrottleIntervalChangedListener(
+                    this::onBackgroundThrottleIntervalChanged);
+            mSettingsHelper.addOnBackgroundThrottlePackageWhitelistChangedListener(
+                    this::onBackgroundThrottleWhitelistChanged);
+            mSettingsHelper.addOnIgnoreSettingsPackageWhitelistChangedListener(
+                    this::onIgnoreSettingsWhitelistChanged);
 
             new PackageMonitor() {
                 @Override
@@ -367,11 +344,9 @@
                 }
             }.register(mContext, mHandler.getLooper(), true);
 
-            mUserInfoStore.addListener((oldUserId, newUserId) -> {
-                synchronized (mLock) {
-                    onUserChangedLocked(oldUserId, newUserId);
-                }
-            });
+            mUserInfoHelper.addListener(this::onUserChanged);
+
+            mAppForegroundHelper.addListener(this::onAppForegroundChanged);
 
             IntentFilter intentFilter = new IntentFilter();
             intentFilter.addAction(Intent.ACTION_SCREEN_OFF);
@@ -395,10 +370,11 @@
                 }
             }, UserHandle.ALL, intentFilter, null, mHandler);
 
-            // switching the user from null to current here performs the bulk of the initialization
-            // work. the user being changed will cause a reload of all user specific settings, which
-            // causes initialization, and propagates changes until a steady state is reached
-            onUserChangedLocked(UserHandle.USER_NULL, mUserInfoStore.getCurrentUserId());
+            // initialize the current users. we would get the user started notifications for these
+            // users eventually anyways, but this takes care of it as early as possible.
+            for (int userId: mUserInfoHelper.getCurrentUserIds()) {
+                onUserChanged(userId, UserListener.USER_STARTED);
+            }
         }
     }
 
@@ -409,13 +385,26 @@
         }
     }
 
-    @GuardedBy("mLock")
-    private void onAppOpChangedLocked() {
-        for (Receiver receiver : mReceivers.values()) {
-            receiver.updateMonitoring(true);
-        }
-        for (LocationProviderManager manager : mProviderManagers) {
-            applyRequirementsLocked(manager);
+    private void onAppOpChanged(String packageName) {
+        synchronized (mLock) {
+            for (Receiver receiver : mReceivers.values()) {
+                if (receiver.mCallerIdentity.mPackageName.equals(packageName)) {
+                    receiver.updateMonitoring(true);
+                }
+            }
+
+            HashSet<String> affectedProviders = new HashSet<>(mRecordsByProvider.size());
+            for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) {
+                String provider = entry.getKey();
+                for (UpdateRecord record : entry.getValue()) {
+                    if (record.mReceiver.mCallerIdentity.mPackageName.equals(packageName)) {
+                        affectedProviders.add(provider);
+                    }
+                }
+            }
+            for (String provider : affectedProviders) {
+                applyRequirementsLocked(provider);
+            }
         }
     }
 
@@ -433,7 +422,7 @@
         }
 
         if (D) {
-            Slog.d(TAG,
+            Log.d(TAG,
                     "Battery Saver location mode changed from "
                             + locationPowerSaveModeToString(mBatterySaverMode) + " to "
                             + locationPowerSaveModeToString(newLocationMode));
@@ -455,20 +444,23 @@
         }
     }
 
-    @GuardedBy("mLock")
-    private void onLocationModeChangedLocked(int userId) {
+    private void onLocationModeChanged(int userId) {
+        boolean enabled = mSettingsHelper.isLocationEnabled(userId);
+
         if (D) {
-            Log.d(TAG, "[u" + userId + "] location enabled = " + isLocationEnabledForUser(userId));
+            Log.d(TAG, "[u" + userId + "] location enabled = " + enabled);
         }
 
         Intent intent = new Intent(LocationManager.MODE_CHANGED_ACTION)
-                .putExtra(LocationManager.EXTRA_LOCATION_ENABLED, isLocationEnabledForUser(userId))
+                .putExtra(LocationManager.EXTRA_LOCATION_ENABLED, enabled)
                 .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
                 .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
         mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
 
-        for (LocationProviderManager manager : mProviderManagers) {
-            manager.onEnabledChangedLocked(userId);
+        synchronized (mLock) {
+            for (LocationProviderManager manager : mProviderManagers) {
+                manager.onEnabledChangedLocked(userId);
+            }
         }
     }
 
@@ -493,63 +485,54 @@
         }
     }
 
-    @GuardedBy("mLock")
-    private void onUidImportanceChangedLocked(int uid, int importance) {
-        boolean foreground = LocationManagerServiceUtils.isImportanceForeground(importance);
-        HashSet<String> affectedProviders = new HashSet<>(mRecordsByProvider.size());
-        for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) {
-            String provider = entry.getKey();
-            for (UpdateRecord record : entry.getValue()) {
-                if (record.mReceiver.mCallerIdentity.mUid == uid
-                        && record.mIsForegroundUid != foreground) {
-                    if (D) {
-                        Log.d(TAG, "request from uid " + uid + " is now "
-                                + LocationManagerServiceUtils.foregroundAsString(
-                                foreground));
-                    }
-                    record.updateForeground(foreground);
+    private void onAppForegroundChanged(int uid, boolean foreground) {
+        synchronized (mLock) {
+            HashSet<String> affectedProviders = new HashSet<>(mRecordsByProvider.size());
+            for (Entry<String, ArrayList<UpdateRecord>> entry : mRecordsByProvider.entrySet()) {
+                String provider = entry.getKey();
+                for (UpdateRecord record : entry.getValue()) {
+                    if (record.mReceiver.mCallerIdentity.mUid == uid
+                            && record.mIsForegroundUid != foreground) {
+                        record.updateForeground(foreground);
 
-                    if (!isThrottlingExemptLocked(record.mReceiver.mCallerIdentity)) {
-                        affectedProviders.add(provider);
+                        if (!isThrottlingExempt(record.mReceiver.mCallerIdentity)) {
+                            affectedProviders.add(provider);
+                        }
                     }
                 }
             }
-        }
-        for (String provider : affectedProviders) {
-            applyRequirementsLocked(provider);
+            for (String provider : affectedProviders) {
+                applyRequirementsLocked(provider);
+            }
         }
     }
 
-    @GuardedBy("mLock")
-    private void onBackgroundThrottleIntervalChangedLocked() {
-        for (LocationProviderManager manager : mProviderManagers) {
-            applyRequirementsLocked(manager);
+    private void onBackgroundThrottleIntervalChanged() {
+        synchronized (mLock) {
+            for (LocationProviderManager manager : mProviderManagers) {
+                applyRequirementsLocked(manager);
+            }
         }
     }
 
-    @GuardedBy("mLock")
-    private void onBackgroundThrottleWhitelistChangedLocked() {
-        for (LocationProviderManager manager : mProviderManagers) {
-            applyRequirementsLocked(manager);
+    private void onBackgroundThrottleWhitelistChanged() {
+        synchronized (mLock) {
+            for (LocationProviderManager manager : mProviderManagers) {
+                applyRequirementsLocked(manager);
+            }
         }
     }
 
-    @GuardedBy("lock")
-    private void onIgnoreSettingsWhitelistChangedLocked() {
-        for (LocationProviderManager manager : mProviderManagers) {
-            applyRequirementsLocked(manager);
+    private void onIgnoreSettingsWhitelistChanged() {
+        synchronized (mLock) {
+            for (LocationProviderManager manager : mProviderManagers) {
+                applyRequirementsLocked(manager);
+            }
         }
     }
 
     @GuardedBy("mLock")
     private void initializeProvidersLocked() {
-        if (GnssManagerService.isGnssSupported()) {
-            mGnssManagerService = new GnssManagerService(this, mContext, mLocationUsageLogger);
-            LocationProviderManager gnssManager = new LocationProviderManager(GPS_PROVIDER);
-            mProviderManagers.add(gnssManager);
-            gnssManager.setRealProvider(mGnssManagerService.getGnssLocationProvider());
-        }
-
         LocationProviderProxy networkProvider = LocationProviderProxy.createAndRegister(
                 mContext,
                 NETWORK_LOCATION_SERVICE_ACTION,
@@ -560,7 +543,7 @@
             mProviderManagers.add(networkManager);
             networkManager.setRealProvider(networkProvider);
         } else {
-            Slog.w(TAG, "no network location provider found");
+            Log.w(TAG, "no network location provider found");
         }
 
         // ensure that a fused provider exists which will work in direct boot
@@ -580,14 +563,13 @@
             mProviderManagers.add(fusedManager);
             fusedManager.setRealProvider(fusedProvider);
         } else {
-            Slog.e(TAG, "no fused location provider found",
-                    new IllegalStateException("Location service needs a fused location provider"));
+            Log.e(TAG, "no fused location provider found");
         }
 
         // bind to geocoder provider
         mGeocodeProvider = GeocoderProxy.createAndRegister(mContext);
         if (mGeocodeProvider == null) {
-            Slog.e(TAG, "no geocoder provider found");
+            Log.e(TAG, "no geocoder provider found");
         }
 
         // bind to geofence proxy
@@ -596,7 +578,7 @@
             if (gpsGeofenceHardware != null) {
                 GeofenceProxy provider = GeofenceProxy.createAndBind(mContext, gpsGeofenceHardware);
                 if (provider == null) {
-                    Slog.d(TAG, "unable to bind to GeofenceProxy");
+                    Log.e(TAG, "unable to bind to GeofenceProxy");
                 }
             }
         }
@@ -625,21 +607,52 @@
                     Integer.parseInt(fragments[9]) /* accuracy */);
             addTestProvider(name, properties, mContext.getOpPackageName());
         }
+
+        // initialize gnss last because it has no awareness of boot phases and blindly assumes that
+        // all other location providers are loaded at initialization
+        if (GnssManagerService.isGnssSupported()) {
+            mGnssManagerService = new GnssManagerService(mContext, mSettingsHelper,
+                    mAppForegroundHelper, mLocationUsageLogger);
+            mGnssManagerService.onSystemReady();
+
+            LocationProviderManager gnssManager = new LocationProviderManager(GPS_PROVIDER);
+            mProviderManagers.add(gnssManager);
+            gnssManager.setRealProvider(mGnssManagerService.getGnssLocationProvider());
+        }
     }
 
-    @GuardedBy("mLock")
-    private void onUserChangedLocked(int oldUserId, int newUserId) {
-        if (D) {
-            Log.d(TAG, "foreground user is changing to " + newUserId);
-        }
-
-        for (LocationProviderManager manager : mProviderManagers) {
-            // update LOCATION_PROVIDERS_ALLOWED for best effort backwards compatibility
-            mSettingsStore.setLocationProviderAllowed(manager.getName(),
-                    manager.isEnabled(newUserId), newUserId);
-
-            manager.onEnabledChangedLocked(oldUserId);
-            manager.onEnabledChangedLocked(newUserId);
+    private void onUserChanged(@UserIdInt int userId, @UserListener.UserChange int change) {
+        switch (change) {
+            case UserListener.USER_SWITCHED:
+                if (D) {
+                    Log.d(TAG, "user " + userId + " current status changed");
+                }
+                synchronized (mLock) {
+                    for (LocationProviderManager manager : mProviderManagers) {
+                        manager.onEnabledChangedLocked(userId);
+                    }
+                }
+                break;
+            case UserListener.USER_STARTED:
+                if (D) {
+                    Log.d(TAG, "user " + userId + " started");
+                }
+                synchronized (mLock) {
+                    for (LocationProviderManager manager : mProviderManagers) {
+                        manager.onUserStarted(userId);
+                    }
+                }
+                break;
+            case UserListener.USER_STOPPED:
+                if (D) {
+                    Log.d(TAG, "user " + userId + " stopped");
+                }
+                synchronized (mLock) {
+                    for (LocationProviderManager manager : mProviderManagers) {
+                        manager.onUserStopped(userId);
+                    }
+                }
+                break;
         }
     }
 
@@ -650,25 +663,29 @@
 
         private final String mName;
 
-        // acquiring mLock makes operations on mProvider atomic, but is otherwise unnecessary
-        protected final MockableLocationProvider mProvider;
-
-        // enabled state for parent user ids, no entry implies false. location state is only kept
-        // for parent user ids, the location state for a profile user id is assumed to be the same
-        // as for the parent. if querying this structure, ensure that the user id being used is a
-        // parent id or the results may be incorrect.
+        // if the provider is enabled for a given user id - null or not present means unknown
         @GuardedBy("mLock")
         private final SparseArray<Boolean> mEnabled;
 
+        // last location for a given user
+        @GuardedBy("mLock")
+        private final SparseArray<Location> mLastLocation;
+
+        // last coarse location for a given user
+        @GuardedBy("mLock")
+        private final SparseArray<Location> mLastCoarseLocation;
+
+        // acquiring mLock makes operations on mProvider atomic, but is otherwise unnecessary
+        protected final MockableLocationProvider mProvider;
+
         private LocationProviderManager(String name) {
             mName = name;
-            mEnabled = new SparseArray<>(1);
+            mEnabled = new SparseArray<>(2);
+            mLastLocation = new SparseArray<>(2);
+            mLastCoarseLocation = new SparseArray<>(2);
 
             // initialize last since this lets our reference escape
-            mProvider = new MockableLocationProvider(mContext, mLock, this);
-
-            // we can assume all users start with disabled location state since the initial state
-            // of all providers is disabled. no need to initialize mEnabled further.
+            mProvider = new MockableLocationProvider(mLock, this);
         }
 
         public String getName() {
@@ -684,7 +701,26 @@
         }
 
         public void setMockProvider(@Nullable MockProvider provider) {
-            mProvider.setMockProvider(provider);
+            synchronized (mLock) {
+                mProvider.setMockProvider(provider);
+
+                // when removing a mock provider, also clear any mock last locations
+                if (provider == null) {
+                    for (int i = 0; i < mLastLocation.size(); i++) {
+                        Location lastLocation = mLastLocation.valueAt(i);
+                        if (lastLocation != null && lastLocation.isFromMockProvider()) {
+                            mLastLocation.setValueAt(i, null);
+                        }
+                    }
+
+                    for (int i = 0; i < mLastCoarseLocation.size(); i++) {
+                        Location lastCoarseLocation = mLastCoarseLocation.valueAt(i);
+                        if (lastCoarseLocation != null && lastCoarseLocation.isFromMockProvider()) {
+                            mLastCoarseLocation.setValueAt(i, null);
+                        }
+                    }
+                }
+            }
         }
 
         public Set<String> getPackages() {
@@ -696,6 +732,45 @@
             return mProvider.getState().properties;
         }
 
+        @Nullable
+        public Location getLastFineLocation(int userId) {
+            synchronized (mLock) {
+                return mLastLocation.get(userId);
+            }
+        }
+
+        @Nullable
+        public Location getLastCoarseLocation(int userId) {
+            synchronized (mLock) {
+                return mLastCoarseLocation.get(userId);
+            }
+        }
+
+        public void injectLastLocation(Location location, int userId) {
+            synchronized (mLock) {
+                if (mLastLocation.get(userId) == null) {
+                    setLastLocation(location, userId);
+                }
+            }
+        }
+
+        private void setLastLocation(Location location, int userId) {
+            synchronized (mLock) {
+                mLastLocation.put(userId, location);
+
+                // update last coarse interval only if enough time has passed
+                long timeDeltaMs = Long.MAX_VALUE;
+                Location coarseLocation = mLastCoarseLocation.get(userId);
+                if (coarseLocation != null) {
+                    timeDeltaMs = NANOSECONDS.toMillis(location.getElapsedRealtimeNanos())
+                            - NANOSECONDS.toMillis(coarseLocation.getElapsedRealtimeNanos());
+                }
+                if (timeDeltaMs > FASTEST_COARSE_INTERVAL_MS) {
+                    mLastCoarseLocation.put(userId, mLocationFudger.createCoarse(location));
+                }
+            }
+        }
+
         public void setMockProviderAllowed(boolean enabled) {
             synchronized (mLock) {
                 if (!mProvider.isMock()) {
@@ -748,23 +823,31 @@
             // don't validate mock locations
             if (!location.isFromMockProvider()) {
                 if (location.getLatitude() == 0 && location.getLongitude() == 0) {
-                    Slog.w(TAG, "blocking 0,0 location from " + mName + " provider");
+                    Log.w(TAG, "blocking 0,0 location from " + mName + " provider");
                     return;
                 }
             }
 
-            handleLocationChangedLocked(location, this);
+            if (!location.isComplete()) {
+                Log.w(TAG, "blocking incomplete location from " + mName + " provider");
+                return;
+            }
+
+            // update last location if the provider is enabled or if servicing a bypass request
+            boolean locationSettingsIgnored = mProvider.getCurrentRequest().locationSettingsIgnored;
+            for (int userId : mUserInfoHelper.getCurrentUserIds()) {
+                if (locationSettingsIgnored || isEnabled(userId)) {
+                    setLastLocation(location, userId);
+                }
+            }
+
+            handleLocationChangedLocked(this, location, mLocationFudger.createCoarse(location));
         }
 
         @GuardedBy("mLock")
         @Override
         public void onReportLocation(List<Location> locations) {
-            if (mGnssManagerService == null) {
-                return;
-            }
-
-            if (!GPS_PROVIDER.equals(mName) || !isEnabled()) {
-                Slog.w(TAG, "reportLocationBatch() called without user permission");
+            if (mGnssManagerService == null || !GPS_PROVIDER.equals(mName)) {
                 return;
             }
 
@@ -775,10 +858,7 @@
         @Override
         public void onStateChanged(State oldState, State newState) {
             if (oldState.allowed != newState.allowed) {
-                // it would be more correct to call this for all users, but we know this can
-                // only affect the current user since providers are disabled for non-current
-                // users
-                onEnabledChangedLocked(mUserInfoStore.getCurrentUserId());
+                onEnabledChangedLocked(UserHandle.USER_ALL);
             }
         }
 
@@ -786,37 +866,74 @@
             mProvider.requestSetAllowed(allowed);
         }
 
-        public boolean isEnabled() {
-            return isEnabled(mUserInfoStore.getCurrentUserId());
+        public void onUserStarted(int userId) {
+            synchronized (mLock) {
+                // clear the user's enabled state in order to force a reevalution of whether the
+                // provider is enabled or disabled for the given user. we clear the user's state
+                // first to ensure that a user starting never causes any change notifications. it's
+                // possible for us to observe a user before we observe it's been started (for
+                // example, another component gets a user started notification before us and
+                // registers a location request immediately), which would cause us to already have
+                // some state in place. when we eventually do get the user started notification
+                // ourselves we don't want to send a change notification based on the prior state
+                mEnabled.put(userId, null);
+                onEnabledChangedLocked(userId);
+            }
+        }
+
+        public void onUserStopped(int userId) {
+            synchronized (mLock) {
+                mEnabled.remove(userId);
+                mLastLocation.remove(userId);
+                mLastCoarseLocation.remove(userId);
+            }
         }
 
         public boolean isEnabled(int userId) {
+            if (userId == UserHandle.USER_NULL) {
+                // used during initialization - ignore since many lower level operations (checking
+                // settings for instance) do not support the null user
+                return false;
+            }
+
             synchronized (mLock) {
-                // normalize user id to always refer to parent since profile state is always the
-                // same as parent state
-                userId = mUserInfoStore.getParentUserId(userId);
-                return mEnabled.get(userId, Boolean.FALSE);
+                Boolean enabled = mEnabled.get(userId);
+                if (enabled == null) {
+                    // this generally shouldn't occur, but might be possible due to race conditions
+                    // on when we are notified of new users
+                    Log.w(TAG, mName + " provider saw user " + userId + " unexpectedly");
+                    onEnabledChangedLocked(userId);
+                    enabled = Objects.requireNonNull(mEnabled.get(userId));
+                }
+
+                return enabled;
             }
         }
 
         @GuardedBy("mLock")
         public void onEnabledChangedLocked(int userId) {
             if (userId == UserHandle.USER_NULL) {
-                // only used during initialization - we don't care about the null user
+                // used during initialization - ignore since many lower level operations (checking
+                // settings for instance) do not support the null user
+                return;
+            } else if (userId == UserHandle.USER_ALL) {
+                // we know enabled changes can only happen for current users since providers are
+                // always disabled for all non-current users
+                for (int currentUserId : mUserInfoHelper.getCurrentUserIds()) {
+                    onEnabledChangedLocked(currentUserId);
+                }
                 return;
             }
 
-            // normalize user id to always refer to parent since profile state is always the same
-            // as parent state
-            userId = mUserInfoStore.getParentUserId(userId);
-
             // if any property that contributes to "enabled" here changes state, it MUST result
             // in a direct or indrect call to onEnabledChangedLocked. this allows the provider to
             // guarantee that it will always eventually reach the correct state.
-            boolean enabled = (userId == mUserInfoStore.getCurrentUserId())
-                    && mSettingsStore.isLocationEnabled(userId) && mProvider.getState().allowed;
+            boolean enabled = mProvider.getState().allowed
+                    && mUserInfoHelper.isCurrentUserId(userId)
+                    && mSettingsHelper.isLocationEnabled(userId);
 
-            if (enabled == isEnabled(userId)) {
+            Boolean wasEnabled = mEnabled.get(userId);
+            if (wasEnabled != null && wasEnabled == enabled) {
                 return;
             }
 
@@ -826,28 +943,29 @@
                 Log.d(TAG, "[u" + userId + "] " + mName + " provider enabled = " + enabled);
             }
 
-            // fused and passive provider never get public updates for legacy reasons
-            if (!FUSED_PROVIDER.equals(mName) && !PASSIVE_PROVIDER.equals(mName)) {
-                // update LOCATION_PROVIDERS_ALLOWED for best effort backwards compatibility
-                mSettingsStore.setLocationProviderAllowed(mName, enabled, userId);
-
-                Intent intent = new Intent(LocationManager.PROVIDERS_CHANGED_ACTION)
-                        .putExtra(LocationManager.EXTRA_PROVIDER_NAME, mName)
-                        .putExtra(LocationManager.EXTRA_PROVIDER_ENABLED, enabled)
-                        .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
-                        .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-                mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
+            // clear last locations if we become disabled and if not servicing a bypass request
+            if (!enabled && !mProvider.getCurrentRequest().locationSettingsIgnored) {
+                mLastLocation.put(userId, null);
+                mLastCoarseLocation.put(userId, null);
             }
 
-            if (!enabled) {
-                // If any provider has been disabled, clear all last locations for all
-                // providers. This is to be on the safe side in case a provider has location
-                // derived from this disabled provider.
-                mLastLocation.clear();
-                mLastLocationCoarseInterval.clear();
+            // update LOCATION_PROVIDERS_ALLOWED for best effort backwards compatibility
+            mSettingsHelper.setLocationProviderAllowed(mName, enabled, userId);
+
+            // do not send change notifications if we just saw this user for the first time
+            if (wasEnabled != null) {
+                // fused and passive provider never get public updates for legacy reasons
+                if (!FUSED_PROVIDER.equals(mName) && !PASSIVE_PROVIDER.equals(mName)) {
+                    Intent intent = new Intent(LocationManager.PROVIDERS_CHANGED_ACTION)
+                            .putExtra(LocationManager.EXTRA_PROVIDER_NAME, mName)
+                            .putExtra(LocationManager.EXTRA_PROVIDER_ENABLED, enabled)
+                            .addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)
+                            .addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+                    mContext.sendBroadcastAsUser(intent, UserHandle.of(userId));
+                }
             }
 
-            updateProviderEnabledLocked(this);
+            updateProviderEnabledLocked(this, enabled);
         }
 
         public void dump(FileDescriptor fd, IndentingPrintWriter pw, String[] args) {
@@ -860,7 +978,11 @@
 
                 pw.increaseIndent();
 
-                pw.println("enabled=" + isEnabled());
+                // for now we only dump for the parent user
+                int userId = mUserInfoHelper.getCurrentUserIds()[0];
+                pw.println("last location=" + mLastLocation.get(userId));
+                pw.println("last coarse location=" + mLastCoarseLocation.get(userId));
+                pw.println("enabled=" + isEnabled(userId));
             }
 
             mProvider.dump(fd, pw, args);
@@ -1009,7 +1131,8 @@
                     if (manager == null) {
                         continue;
                     }
-                    if (!manager.isEnabled() && !isSettingsExemptLocked(updateRecord)) {
+                    if (!manager.isEnabled(UserHandle.getUserId(mCallerIdentity.mUid))
+                            && !isSettingsExempt(updateRecord)) {
                         continue;
                     }
 
@@ -1425,7 +1548,7 @@
                 if (FUSED_PROVIDER.equals(name)) {
                     continue;
                 }
-                if (enabledOnly && !manager.isEnabled()) {
+                if (enabledOnly && !manager.isEnabled(UserHandle.getCallingUserId())) {
                     continue;
                 }
                 if (criteria != null
@@ -1467,21 +1590,18 @@
     }
 
     @GuardedBy("mLock")
-    private void updateProviderEnabledLocked(LocationProviderManager manager) {
-        boolean enabled = manager.isEnabled();
-
+    private void updateProviderEnabledLocked(LocationProviderManager manager, boolean enabled) {
         ArrayList<Receiver> deadReceivers = null;
-
         ArrayList<UpdateRecord> records = mRecordsByProvider.get(manager.getName());
         if (records != null) {
             for (UpdateRecord record : records) {
-                if (!mUserInfoStore.isCurrentUserOrProfile(
+                if (!mUserInfoHelper.isCurrentUserId(
                         UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) {
                     continue;
                 }
 
                 // requests that ignore location settings will never provide notifications
-                if (isSettingsExemptLocked(record)) {
+                if (isSettingsExempt(record)) {
                     continue;
                 }
 
@@ -1520,14 +1640,7 @@
         // if provider is not active, it should not respond to requests
 
         if (mProviderManagers.contains(manager) && records != null && !records.isEmpty()) {
-            long backgroundThrottleInterval;
-
-            long identity = Binder.clearCallingIdentity();
-            try {
-                backgroundThrottleInterval = mSettingsStore.getBackgroundThrottleIntervalMs();
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
+            long backgroundThrottleInterval = mSettingsHelper.getBackgroundThrottleIntervalMs();
 
             ArrayList<LocationRequest> requests = new ArrayList<>(records.size());
 
@@ -1540,8 +1653,8 @@
             // initialize the low power mode to true and set to false if any of the records requires
             providerRequest.setLowPowerMode(true);
             for (UpdateRecord record : records) {
-                if (!mUserInfoStore.isCurrentUserOrProfile(
-                        UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) {
+                int userId = UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid);
+                if (!mUserInfoHelper.isCurrentUserId(userId)) {
                     continue;
                 }
                 if (!checkLocationAccess(
@@ -1553,8 +1666,8 @@
                 }
                 final boolean isBatterySaverDisablingLocation = shouldThrottleRequests
                         || (isForegroundOnlyMode && !record.mIsForegroundUid);
-                if (!manager.isEnabled() || isBatterySaverDisablingLocation) {
-                    if (isSettingsExemptLocked(record)) {
+                if (!manager.isEnabled(userId) || isBatterySaverDisablingLocation) {
+                    if (isSettingsExempt(record)) {
                         providerRequest.setLocationSettingsIgnored(true);
                         providerRequest.setLowPowerMode(false);
                     } else {
@@ -1567,7 +1680,7 @@
 
 
                 // if we're forcing location, don't apply any throttling
-                if (!providerRequest.isLocationSettingsIgnored() && !isThrottlingExemptLocked(
+                if (!providerRequest.isLocationSettingsIgnored() && !isThrottlingExempt(
                         record.mReceiver.mCallerIdentity)) {
                     if (!record.mIsForegroundUid) {
                         interval = Math.max(interval, backgroundThrottleInterval);
@@ -1599,7 +1712,7 @@
                 // TODO: overflow
                 long thresholdInterval = (providerRequest.getInterval() + 1000) * 3 / 2;
                 for (UpdateRecord record : records) {
-                    if (mUserInfoStore.isCurrentUserOrProfile(
+                    if (mUserInfoHelper.isCurrentUserId(
                             UserHandle.getUserId(record.mReceiver.mCallerIdentity.mUid))) {
                         LocationRequest locationRequest = record.mRequest;
 
@@ -1648,41 +1761,39 @@
 
     @Override
     public String[] getBackgroundThrottlingWhitelist() {
-        return mSettingsStore.getBackgroundThrottlePackageWhitelist().toArray(new String[0]);
+        return mSettingsHelper.getBackgroundThrottlePackageWhitelist().toArray(new String[0]);
     }
 
     @Override
     public String[] getIgnoreSettingsWhitelist() {
-        return mSettingsStore.getIgnoreSettingsPackageWhitelist().toArray(new String[0]);
+        return mSettingsHelper.getIgnoreSettingsPackageWhitelist().toArray(new String[0]);
     }
 
-    @GuardedBy("mLock")
-    public boolean isThrottlingExemptLocked(CallerIdentity callerIdentity) {
+    private boolean isThrottlingExempt(CallerIdentity callerIdentity) {
         if (callerIdentity.mUid == Process.SYSTEM_UID) {
             return true;
         }
 
-        if (mSettingsStore.getBackgroundThrottlePackageWhitelist().contains(
+        if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains(
                 callerIdentity.mPackageName)) {
             return true;
         }
 
-        return isProviderPackage(callerIdentity.mPackageName);
+        return mLocalService.isProviderPackage(callerIdentity.mPackageName);
 
     }
 
-    @GuardedBy("mLock")
-    private boolean isSettingsExemptLocked(UpdateRecord record) {
+    private boolean isSettingsExempt(UpdateRecord record) {
         if (!record.mRealRequest.isLocationSettingsIgnored()) {
             return false;
         }
 
-        if (mSettingsStore.getIgnoreSettingsPackageWhitelist().contains(
+        if (mSettingsHelper.getIgnoreSettingsPackageWhitelist().contains(
                 record.mReceiver.mCallerIdentity.mPackageName)) {
             return true;
         }
 
-        return isProviderPackage(record.mReceiver.mCallerIdentity.mPackageName);
+        return mLocalService.isProviderPackage(record.mReceiver.mCallerIdentity.mPackageName);
 
     }
 
@@ -1705,20 +1816,14 @@
             mRealRequest = request;
             mRequest = request;
             mReceiver = receiver;
-            mIsForegroundUid =
-                    LocationManagerServiceUtils.isImportanceForeground(
-                            mActivityManager.getPackageImportance(
-                                    mReceiver.mCallerIdentity.mPackageName));
+            mIsForegroundUid = mAppForegroundHelper.isAppForeground(mReceiver.mCallerIdentity.mUid);
 
             if (D && receiver.mCallerIdentity.mPid == Process.myPid()) {
                 mStackTrace = new Throwable();
             }
 
-            ArrayList<UpdateRecord> records = mRecordsByProvider.get(provider);
-            if (records == null) {
-                records = new ArrayList<>();
-                mRecordsByProvider.put(provider, records);
-            }
+            ArrayList<UpdateRecord> records = mRecordsByProvider.computeIfAbsent(provider,
+                    k -> new ArrayList<>());
             if (!records.contains(this)) {
                 records.add(this);
             }
@@ -1753,7 +1858,7 @@
                     mReceiver.isListener(),
                     mReceiver.isPendingIntent(),
                     /* geofence= */ null,
-                    mActivityManager.getPackageImportance(packageName));
+                    mAppForegroundHelper.getImportance(mReceiver.mCallerIdentity.mUid));
 
             // remove from mRecordsByProvider
             ArrayList<UpdateRecord> globalRecords = mRecordsByProvider.get(this.mProvider);
@@ -1854,11 +1959,11 @@
                     break;
             }
             // throttle
-            if (sanitizedRequest.getInterval() < LocationFudger.FASTEST_INTERVAL_MS) {
-                sanitizedRequest.setInterval(LocationFudger.FASTEST_INTERVAL_MS);
+            if (sanitizedRequest.getInterval() < FASTEST_COARSE_INTERVAL_MS) {
+                sanitizedRequest.setInterval(FASTEST_COARSE_INTERVAL_MS);
             }
-            if (sanitizedRequest.getFastestInterval() < LocationFudger.FASTEST_INTERVAL_MS) {
-                sanitizedRequest.setFastestInterval(LocationFudger.FASTEST_INTERVAL_MS);
+            if (sanitizedRequest.getFastestInterval() < FASTEST_COARSE_INTERVAL_MS) {
+                sanitizedRequest.setFastestInterval(FASTEST_COARSE_INTERVAL_MS);
             }
         }
         // make getFastestInterval() the minimum of interval and fastest interval
@@ -1923,7 +2028,7 @@
                         LocationStatsEnums.API_REQUEST_LOCATION_UPDATES,
                         packageName, request, listener != null, intent != null,
                         /* geofence= */ null,
-                        mActivityManager.getPackageImportance(packageName));
+                        mAppForegroundHelper.getImportance(uid));
 
                 Receiver receiver;
                 if (intent != null) {
@@ -1933,7 +2038,7 @@
                     receiver = getReceiverLocked(listener, pid, uid, packageName, featureId,
                             workSource, hideFromAppOps, listenerIdentifier);
                 }
-                requestLocationUpdatesLocked(sanitizedRequest, receiver, uid, packageName);
+                requestLocationUpdatesLocked(sanitizedRequest, receiver);
             } finally {
                 Binder.restoreCallingIdentity(identity);
             }
@@ -1941,8 +2046,7 @@
     }
 
     @GuardedBy("mLock")
-    private void requestLocationUpdatesLocked(LocationRequest request, Receiver receiver,
-            int uid, String packageName) {
+    private void requestLocationUpdatesLocked(LocationRequest request, Receiver receiver) {
         // Figure out the provider. Either its explicitly request (legacy use cases), or
         // use the fused provider
         if (request == null) request = DEFAULT_LOCATION_REQUEST;
@@ -1957,20 +2061,14 @@
         }
 
         UpdateRecord record = new UpdateRecord(name, request, receiver);
-        if (D) {
-            Log.d(TAG, "request " + Integer.toHexString(System.identityHashCode(receiver))
-                    + " " + name + " " + request + " from " + packageName + "(" + uid + " "
-                    + (record.mIsForegroundUid ? "foreground" : "background")
-                    + (isThrottlingExemptLocked(receiver.mCallerIdentity)
-                    ? " [whitelisted]" : "") + ")");
-        }
 
         UpdateRecord oldRecord = receiver.mUpdateRecords.put(name, record);
         if (oldRecord != null) {
             oldRecord.disposeLocked(false);
         }
 
-        if (!manager.isEnabled() && !isSettingsExemptLocked(record)) {
+        int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid);
+        if (!manager.isEnabled(userId) && !isSettingsExempt(record)) {
             // Notify the listener that updates are currently disabled - but only if the request
             // does not ignore location settings
             receiver.callProviderEnabledLocked(name, false);
@@ -2047,91 +2145,65 @@
     }
 
     @Override
-    public Location getLastLocation(LocationRequest r, String packageName, String featureId) {
+    public Location getLastLocation(LocationRequest request, String packageName, String featureId) {
+        if (request == null) {
+            request = DEFAULT_LOCATION_REQUEST;
+        }
+
         enforceCallingOrSelfLocationPermission();
         enforceCallingOrSelfPackageName(packageName);
 
-        synchronized (mLock) {
-            LocationRequest request = r != null ? r : DEFAULT_LOCATION_REQUEST;
-            int allowedResolutionLevel = getCallerAllowedResolutionLevel();
-            // no need to sanitize this request, as only the provider name is used
-
-            final int pid = Binder.getCallingPid();
-            final int uid = Binder.getCallingUid();
-            final long identity = Binder.clearCallingIdentity();
-            try {
-                if (mSettingsStore.isLocationPackageBlacklisted(UserHandle.getUserId(uid),
-                        packageName)) {
-                    if (D) {
-                        Log.d(TAG, "not returning last loc for blacklisted app: "
-                                + packageName);
-                    }
-                    return null;
-                }
-
-                // Figure out the provider. Either its explicitly request (deprecated API's),
-                // or use the fused provider
-                String name = request.getProvider();
-                if (name == null) name = LocationManager.FUSED_PROVIDER;
-                LocationProviderManager manager = getLocationProviderManager(name);
-                if (manager == null) return null;
-
-                // only the current user or location providers may get location this way
-                if (!mUserInfoStore.isCurrentUserOrProfile(UserHandle.getUserId(uid))
-                        && !isProviderPackage(packageName)) {
-                    return null;
-                }
-
-                if (!manager.isEnabled()) {
-                    return null;
-                }
-
-                Location location;
-                if (allowedResolutionLevel < RESOLUTION_LEVEL_FINE) {
-                    // Make sure that an app with coarse permissions can't get frequent location
-                    // updates by calling LocationManager.getLastKnownLocation repeatedly.
-                    location = mLastLocationCoarseInterval.get(name);
-                } else {
-                    location = mLastLocation.get(name);
-                }
-                if (location == null) {
-                    return null;
-                }
-
-                // Don't return stale location to apps with foreground-only location permission.
-                String op = resolutionLevelToOpStr(allowedResolutionLevel);
-                long locationAgeMs = TimeUnit.NANOSECONDS.toMillis(
-                        SystemClock.elapsedRealtime() - location.getElapsedRealtimeNanos());
-                if (locationAgeMs > mSettingsStore.getMaxLastLocationAgeMs()
-                        && (mAppOps.unsafeCheckOp(op, uid, packageName)
-                        == AppOpsManager.MODE_FOREGROUND)) {
-                    return null;
-                }
-
-                Location lastLocation = null;
-                if (allowedResolutionLevel < RESOLUTION_LEVEL_FINE) {
-                    Location noGPSLocation = location.getExtraLocation(
-                            Location.EXTRA_NO_GPS_LOCATION);
-                    if (noGPSLocation != null) {
-                        lastLocation = new Location(mLocationFudger.getOrCreate(noGPSLocation));
-                    }
-                } else {
-                    lastLocation = new Location(location);
-                }
-                // Don't report location access if there is no last location to deliver.
-                if (lastLocation != null) {
-                    if (!reportLocationAccessNoThrow(pid, uid, packageName, featureId,
-                            allowedResolutionLevel, null)) {
-                        if (D) {
-                            Log.d(TAG, "not returning last loc for no op app: " + packageName);
-                        }
-                        lastLocation = null;
-                    }
-                }
-                return lastLocation;
-            } finally {
-                Binder.restoreCallingIdentity(identity);
+        int allowedResolutionLevel = getCallerAllowedResolutionLevel();
+        if (!reportLocationAccessNoThrow(Binder.getCallingPid(), Binder.getCallingUid(),
+                packageName, featureId, allowedResolutionLevel, null)) {
+            if (D) {
+                Log.d(TAG, "not returning last loc for no op app: " + packageName);
             }
+            return null;
+        }
+
+        int userId = UserHandle.getCallingUserId();
+
+        if (mSettingsHelper.isLocationPackageBlacklisted(userId, packageName)) {
+            return null;
+        }
+
+        if (!mUserInfoHelper.isCurrentUserId(userId)) {
+            return null;
+        }
+
+        synchronized (mLock) {
+            LocationProviderManager manager = getLocationProviderManager(request.getProvider());
+            if (manager == null) {
+                return null;
+            }
+
+            if (!manager.isEnabled(userId) && !request.isLocationSettingsIgnored()) {
+                return null;
+            }
+
+            Location location;
+            if (allowedResolutionLevel < RESOLUTION_LEVEL_FINE) {
+                location = manager.getLastCoarseLocation(userId);
+            } else {
+                location = manager.getLastFineLocation(userId);
+            }
+            if (location == null) {
+                return null;
+            }
+
+            // Don't return stale location to apps with foreground-only location permission.
+            String op = resolutionLevelToOpStr(allowedResolutionLevel);
+            long locationAgeMs = NANOSECONDS.toMillis(
+                    SystemClock.elapsedRealtime() - location.getElapsedRealtimeNanos());
+            if (locationAgeMs > mSettingsHelper.getMaxLastLocationAgeMs()
+                    && (mAppOps.unsafeCheckOp(op, Binder.getCallingUid(), packageName)
+                    == AppOpsManager.MODE_FOREGROUND)) {
+                return null;
+            }
+
+            // make a defensive copy - the client could be in the same process as us
+            return new Location(location);
         }
     }
 
@@ -2142,32 +2214,24 @@
         // side effect of validating locationRequest and packageName
         Location lastLocation = getLastLocation(locationRequest, packageName, featureId);
         if (lastLocation != null) {
-            long locationAgeMs = TimeUnit.NANOSECONDS.toMillis(
+            long locationAgeMs = NANOSECONDS.toMillis(
                     SystemClock.elapsedRealtimeNanos() - lastLocation.getElapsedRealtimeNanos());
 
-            long identity = Binder.clearCallingIdentity();
-            try {
-                if (locationAgeMs < MAX_CURRENT_LOCATION_AGE_MS) {
-                    try {
-                        listener.onLocationChanged(lastLocation);
-                        return true;
-                    } catch (RemoteException e) {
-                        Log.w(TAG, e);
-                        return false;
-                    }
+            if (locationAgeMs < MAX_CURRENT_LOCATION_AGE_MS) {
+                try {
+                    listener.onLocationChanged(lastLocation);
+                    return true;
+                } catch (RemoteException e) {
+                    Log.w(TAG, e);
+                    return false;
                 }
+            }
 
-                // packageName already validated by getLastLocation() call above
-                boolean foreground = LocationManagerServiceUtils.isImportanceForeground(
-                        mActivityManager.getPackageImportance(packageName));
-                if (!foreground) {
-                    if (locationAgeMs < mSettingsStore.getBackgroundThrottleIntervalMs()) {
-                        // not allowed to request new locations, so we can't return anything
-                        return false;
-                    }
+            if (!mAppForegroundHelper.isAppForeground(Binder.getCallingUid())) {
+                if (locationAgeMs < mSettingsHelper.getBackgroundThrottleIntervalMs()) {
+                    // not allowed to request new locations, so we can't return anything
+                    return false;
                 }
-            } finally {
-                Binder.restoreCallingIdentity(identity);
             }
         }
 
@@ -2185,38 +2249,36 @@
     @Override
     public LocationTime getGnssTimeMillis() {
         synchronized (mLock) {
-            Location location = mLastLocation.get(LocationManager.GPS_PROVIDER);
+            LocationProviderManager gpsManager = getLocationProviderManager(GPS_PROVIDER);
+            if (gpsManager == null) {
+                return null;
+            }
+
+            Location location = gpsManager.getLastFineLocation(UserHandle.getCallingUserId());
             if (location == null) {
                 return null;
             }
+
             long currentNanos = SystemClock.elapsedRealtimeNanos();
-            long deltaMs = (currentNanos - location.getElapsedRealtimeNanos()) / 1000000L;
+            long deltaMs = NANOSECONDS.toMillis(
+                    currentNanos - location.getElapsedRealtimeNanos());
             return new LocationTime(location.getTime() + deltaMs, currentNanos);
         }
     }
 
     @Override
-    public boolean injectLocation(Location location) {
-        mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to inject location");
-        mContext.enforceCallingPermission(ACCESS_FINE_LOCATION,
-                "Access Fine Location permission not granted to inject Location");
+    public void injectLocation(Location location) {
+        mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(ACCESS_FINE_LOCATION, null);
 
+        Preconditions.checkArgument(location.isComplete());
+
+        int userId = UserHandle.getCallingUserId();
         synchronized (mLock) {
             LocationProviderManager manager = getLocationProviderManager(location.getProvider());
-            if (manager == null || !manager.isEnabled()) {
-                return false;
+            if (manager != null && manager.isEnabled(userId)) {
+                manager.injectLastLocation(Objects.requireNonNull(location), userId);
             }
-
-            // NOTE: If last location is already available, location is not injected.  If
-            // provider's normal source (like a GPS chipset) have already provided an output
-            // there is no need to inject this location.
-            if (mLastLocation.get(manager.getName()) != null) {
-                return false;
-            }
-
-            updateLastLocationLocked(location, manager.getName());
-            return true;
         }
     }
 
@@ -2252,20 +2314,19 @@
             Log.w(TAG, "proximity alerts are currently available only to the primary user");
             return;
         }
+
+        mLocationUsageLogger.logLocationApiUsage(
+                LocationStatsEnums.USAGE_STARTED,
+                LocationStatsEnums.API_REQUEST_GEOFENCE,
+                packageName,
+                request,
+                /* hasListener= */ false,
+                true,
+                geofence,
+                mAppForegroundHelper.getImportance(uid));
+
         long identity = Binder.clearCallingIdentity();
         try {
-            synchronized (mLock) {
-                mLocationUsageLogger.logLocationApiUsage(
-                        LocationStatsEnums.USAGE_STARTED,
-                        LocationStatsEnums.API_REQUEST_GEOFENCE,
-                        packageName,
-                        request,
-                        /* hasListener= */ false,
-                        true,
-                        geofence,
-                        mActivityManager.getPackageImportance(packageName));
-            }
-
             mGeofenceManager.addFence(sanitizedRequest, geofence, intent, allowedResolutionLevel,
                     uid, packageName, featureId, listenerIdentifier);
         } finally {
@@ -2282,20 +2343,19 @@
 
         if (D) Log.d(TAG, "removeGeofence: " + geofence + " " + intent);
 
+        mLocationUsageLogger.logLocationApiUsage(
+                LocationStatsEnums.USAGE_ENDED,
+                LocationStatsEnums.API_REQUEST_GEOFENCE,
+                packageName,
+                /* LocationRequest= */ null,
+                /* hasListener= */ false,
+                true,
+                geofence,
+                mAppForegroundHelper.getImportance(Binder.getCallingUid()));
+
         // geo-fence manager uses the public location API, need to clear identity
         long identity = Binder.clearCallingIdentity();
         try {
-            synchronized (mLock) {
-                mLocationUsageLogger.logLocationApiUsage(
-                        LocationStatsEnums.USAGE_ENDED,
-                        LocationStatsEnums.API_REQUEST_GEOFENCE,
-                        packageName,
-                        /* LocationRequest= */ null,
-                        /* hasListener= */ false,
-                        true,
-                        geofence,
-                        mActivityManager.getPackageImportance(packageName));
-            }
             mGeofenceManager.removeFence(geofence, intent);
         } finally {
             Binder.restoreCallingIdentity(identity);
@@ -2315,12 +2375,14 @@
     }
 
     @Override
-    public boolean addGnssMeasurementsListener(IGnssMeasurementsListener listener,
-            String packageName, String featureId, String listenerIdentifier) {
+    public boolean addGnssMeasurementsListener(@Nullable GnssRequest request,
+            IGnssMeasurementsListener listener,
+            String packageName, String featureId,
+            String listenerIdentifier) {
         Objects.requireNonNull(listenerIdentifier);
 
         return mGnssManagerService != null && mGnssManagerService.addGnssMeasurementsListener(
-                listener, packageName, featureId, listenerIdentifier);
+                request, listener, packageName, featureId, listenerIdentifier);
     }
 
     @Override
@@ -2347,6 +2409,22 @@
     }
 
     @Override
+    public boolean addGnssAntennaInfoListener(IGnssAntennaInfoListener listener,
+            String packageName, String featureId, String listenerIdentifier) {
+        Objects.requireNonNull(listenerIdentifier);
+
+        return mGnssManagerService != null && mGnssManagerService.addGnssAntennaInfoListener(
+                listener, packageName, featureId, listenerIdentifier);
+    }
+
+    @Override
+    public void removeGnssAntennaInfoListener(IGnssAntennaInfoListener listener) {
+        if (mGnssManagerService != null) {
+            mGnssManagerService.removeGnssAntennaInfoListener(listener);
+        }
+    }
+
+    @Override
     public boolean addGnssNavigationMessageListener(IGnssNavigationMessageListener listener,
             String packageName, String featureId, String listenerIdentifier) {
         Objects.requireNonNull(listenerIdentifier);
@@ -2392,12 +2470,6 @@
     }
 
     @Override
-    public boolean sendNiResponse(int notifId, int userResponse) {
-        return mGnssManagerService != null && mGnssManagerService.sendNiResponse(notifId,
-                userResponse);
-    }
-
-    @Override
     public ProviderProperties getProviderProperties(String providerName) {
         LocationProviderManager manager = getLocationProviderManager(providerName);
         if (manager == null) {
@@ -2408,20 +2480,13 @@
 
     @Override
     public boolean isProviderPackage(String packageName) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG,
-                Manifest.permission.READ_DEVICE_CONFIG + " permission required");
-        for (LocationProviderManager manager : mProviderManagers) {
-            if (manager.getPackages().contains(packageName)) {
-                return true;
-            }
-        }
-        return false;
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null);
+        return mLocalService.isProviderPackage(packageName);
     }
 
     @Override
     public List<String> getProviderPackages(String providerName) {
-        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG,
-                Manifest.permission.READ_DEVICE_CONFIG + " permission required");
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.READ_DEVICE_CONFIG, null);
         LocationProviderManager manager = getLocationProviderManager(providerName);
         return manager == null ? Collections.emptyList() : new ArrayList<>(manager.getPackages());
     }
@@ -2460,39 +2525,33 @@
     }
 
     @Override
-    public boolean isLocationEnabledForUser(int userId) {
-        // Check INTERACT_ACROSS_USERS permission if userId is not current user id.
+    public void setLocationEnabledForUser(boolean enabled, int userId) {
         if (UserHandle.getCallingUserId() != userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.INTERACT_ACROSS_USERS,
-                    "Requires INTERACT_ACROSS_USERS permission");
+            mContext.enforceCallingOrSelfPermission(Manifest.permission.INTERACT_ACROSS_USERS,
+                    null);
         }
-
-        long identity = Binder.clearCallingIdentity();
-        try {
-            return mSettingsStore.isLocationEnabled(userId);
-        } finally {
-            Binder.restoreCallingIdentity(identity);
-        }
+        mContext.enforceCallingOrSelfPermission(Manifest.permission.WRITE_SECURE_SETTINGS,
+                "Requires WRITE_SECURE_SETTINGS permission");
+        mSettingsHelper.setLocationEnabled(enabled, userId);
     }
 
     @Override
-    public boolean isProviderEnabledForUser(String providerName, int userId) {
-        // Check INTERACT_ACROSS_USERS permission if userId is not current user id.
-        if (UserHandle.getCallingUserId() != userId) {
-            mContext.enforceCallingOrSelfPermission(
-                    Manifest.permission.INTERACT_ACROSS_USERS,
-                    "Requires INTERACT_ACROSS_USERS permission");
-        }
+    public boolean isLocationEnabledForUser(int userId) {
+        userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
+                userId, false, false, "isLocationEnabledForUser", null);
+        return mSettingsHelper.isLocationEnabled(userId);
+    }
+
+    @Override
+    public boolean isProviderEnabledForUser(String provider, int userId) {
+        userId = ActivityManager.handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(),
+                userId, false, false, "isProviderEnabledForUser", null);
 
         // Fused provider is accessed indirectly via criteria rather than the provider-based APIs,
         // so we discourage its use
-        if (FUSED_PROVIDER.equals(providerName)) return false;
+        if (FUSED_PROVIDER.equals(provider)) return false;
 
-        synchronized (mLock) {
-            LocationProviderManager manager = getLocationProviderManager(providerName);
-            return manager != null && manager.isEnabled(userId);
-        }
+        return mLocalService.isProviderEnabledForUser(provider, userId);
     }
 
     @GuardedBy("mLock")
@@ -2505,7 +2564,7 @@
 
         // Check whether sufficient time has passed
         long minTime = record.mRealRequest.getFastestInterval();
-        long deltaMs = TimeUnit.NANOSECONDS.toMillis(
+        long deltaMs = NANOSECONDS.toMillis(
                 loc.getElapsedRealtimeNanos() - lastLoc.getElapsedRealtimeNanos());
         if (deltaMs < minTime - MAX_PROVIDER_SCHEDULING_JITTER_MS) {
             return false;
@@ -2529,62 +2588,23 @@
     }
 
     @GuardedBy("mLock")
-    private void handleLocationChangedLocked(Location location, LocationProviderManager manager) {
+    private void handleLocationChangedLocked(LocationProviderManager manager, Location location,
+            Location coarseLocation) {
         if (!mProviderManagers.contains(manager)) {
             Log.w(TAG, "received location from unknown provider: " + manager.getName());
             return;
         }
-        if (!location.isComplete()) {
-            Log.w(TAG, "dropping incomplete location from " + manager.getName() + " provider: "
-                    + location);
-            return;
-        }
 
         // notify passive provider
         if (manager != mPassiveManager) {
-            mPassiveManager.updateLocation(new Location(location));
+            mPassiveManager.updateLocation(location);
         }
 
-        if (D) Log.d(TAG, "incoming location: " + location);
         long now = SystemClock.elapsedRealtime();
 
-
-        // only update last location for locations that come from enabled providers
-        if (manager.isEnabled()) {
-            updateLastLocationLocked(location, manager.getName());
-        }
-
-        // Update last known coarse interval location if enough time has passed.
-        Location lastLocationCoarseInterval = mLastLocationCoarseInterval.get(
-                manager.getName());
-        if (lastLocationCoarseInterval == null) {
-            lastLocationCoarseInterval = new Location(location);
-
-            if (manager.isEnabled()) {
-                mLastLocationCoarseInterval.put(manager.getName(), lastLocationCoarseInterval);
-            }
-        }
-        long timeDeltaMs = TimeUnit.NANOSECONDS.toMillis(location.getElapsedRealtimeNanos()
-                - lastLocationCoarseInterval.getElapsedRealtimeNanos());
-        if (timeDeltaMs > LocationFudger.FASTEST_INTERVAL_MS) {
-            lastLocationCoarseInterval.set(location);
-        }
-        // Don't ever return a coarse location that is more recent than the allowed update
-        // interval (i.e. don't allow an app to keep registering and unregistering for
-        // location updates to overcome the minimum interval).
-        Location noGPSLocation =
-                lastLocationCoarseInterval.getExtraLocation(Location.EXTRA_NO_GPS_LOCATION);
-
-        // Skip if there are no UpdateRecords for this provider.
         ArrayList<UpdateRecord> records = mRecordsByProvider.get(manager.getName());
         if (records == null || records.size() == 0) return;
 
-        // Fetch coarse location
-        Location coarseLocation = null;
-        if (noGPSLocation != null) {
-            coarseLocation = mLocationFudger.getOrCreate(noGPSLocation);
-        }
-
         ArrayList<Receiver> deadReceivers = null;
         ArrayList<UpdateRecord> deadUpdateRecords = null;
 
@@ -2592,22 +2612,23 @@
         for (UpdateRecord r : records) {
             Receiver receiver = r.mReceiver;
             boolean receiverDead = false;
+            int userId = UserHandle.getUserId(receiver.mCallerIdentity.mUid);
 
-            if (!manager.isEnabled() && !isSettingsExemptLocked(r)) {
+
+            if (!manager.isEnabled(userId) && !isSettingsExempt(r)) {
                 continue;
             }
 
-            int receiverUserId = UserHandle.getUserId(receiver.mCallerIdentity.mUid);
-            if (!mUserInfoStore.isCurrentUserOrProfile(receiverUserId)
+            if (!mUserInfoHelper.isCurrentUserId(userId)
                     && !isProviderPackage(receiver.mCallerIdentity.mPackageName)) {
                 if (D) {
-                    Log.d(TAG, "skipping loc update for background user " + receiverUserId +
-                            " (app: " + receiver.mCallerIdentity.mPackageName + ")");
+                    Log.d(TAG, "skipping loc update for background user " + userId
+                            + " (app: " + receiver.mCallerIdentity.mPackageName + ")");
                 }
                 continue;
             }
 
-            if (mSettingsStore.isLocationPackageBlacklisted(receiverUserId,
+            if (mSettingsHelper.isLocationPackageBlacklisted(userId,
                     receiver.mCallerIdentity.mPackageName)) {
                 if (D) {
                     Log.d(TAG, "skipping loc update for blacklisted app: " +
@@ -2622,39 +2643,30 @@
             } else {
                 notifyLocation = location;  // use fine location
             }
-            if (notifyLocation != null) {
-                Location lastLoc = r.mLastFixBroadcast;
-                if ((lastLoc == null)
-                        || shouldBroadcastSafeLocked(notifyLocation, lastLoc, r, now)) {
-                    if (lastLoc == null) {
-                        lastLoc = new Location(notifyLocation);
-                        r.mLastFixBroadcast = lastLoc;
-                    } else {
-                        lastLoc.set(notifyLocation);
+            if (shouldBroadcastSafeLocked(notifyLocation, r.mLastFixBroadcast, r, now)) {
+                r.mLastFixBroadcast = notifyLocation;
+                // Report location access before delivering location to the client. This will
+                // note location delivery to appOps, so it should be called only when a
+                // location is really being delivered to the client.
+                if (!reportLocationAccessNoThrow(
+                        receiver.mCallerIdentity.mPid,
+                        receiver.mCallerIdentity.mUid,
+                        receiver.mCallerIdentity.mPackageName,
+                        receiver.mCallerIdentity.mFeatureId,
+                        receiver.mAllowedResolutionLevel,
+                        "Location sent to " + receiver.mCallerIdentity.mListenerIdentifier)) {
+                    if (D) {
+                        Log.d(TAG, "skipping loc update for no op app: "
+                                + receiver.mCallerIdentity.mPackageName);
                     }
-                    // Report location access before delivering location to the client. This will
-                    // note location delivery to appOps, so it should be called only when a
-                    // location is really being delivered to the client.
-                    if (!reportLocationAccessNoThrow(
-                            receiver.mCallerIdentity.mPid,
-                            receiver.mCallerIdentity.mUid,
-                            receiver.mCallerIdentity.mPackageName,
-                            receiver.mCallerIdentity.mFeatureId,
-                            receiver.mAllowedResolutionLevel,
-                            "Location sent to " + receiver.mCallerIdentity.mListenerIdentifier)) {
-                        if (D) {
-                            Log.d(TAG, "skipping loc update for no op app: "
-                                    + receiver.mCallerIdentity.mPackageName);
-                        }
-                        continue;
-                    }
-                    if (!receiver.callLocationChangedLocked(notifyLocation)) {
-                        Slog.w(TAG, "RemoteException calling onLocationChanged on "
-                                + receiver);
-                        receiverDead = true;
-                    }
-                    r.mRealRequest.decrementNumUpdates();
+                    continue;
                 }
+                if (!receiver.callLocationChangedLocked(notifyLocation)) {
+                    Log.w(TAG, "RemoteException calling onLocationChanged on "
+                            + receiver);
+                    receiverDead = true;
+                }
+                r.mRealRequest.decrementNumUpdates();
             }
 
             // track expired records
@@ -2691,25 +2703,6 @@
         }
     }
 
-    @GuardedBy("mLock")
-    private void updateLastLocationLocked(Location location, String provider) {
-        Location noGPSLocation = location.getExtraLocation(Location.EXTRA_NO_GPS_LOCATION);
-        Location lastNoGPSLocation;
-        Location lastLocation = mLastLocation.get(provider);
-        if (lastLocation == null) {
-            lastLocation = new Location(provider);
-            mLastLocation.put(provider, lastLocation);
-        } else {
-            lastNoGPSLocation = lastLocation.getExtraLocation(Location.EXTRA_NO_GPS_LOCATION);
-            if (noGPSLocation == null && lastNoGPSLocation != null) {
-                // New location has no no-GPS location: adopt last no-GPS location. This is set
-                // directly into location because we do not want to notify COARSE clients.
-                location.setExtraLocation(Location.EXTRA_NO_GPS_LOCATION, lastNoGPSLocation);
-            }
-        }
-        lastLocation.set(location);
-    }
-
     // Geocoder
 
     @Override
@@ -2759,7 +2752,7 @@
                 mProviderManagers.add(manager);
             }
 
-            manager.setMockProvider(new MockProvider(mContext, properties));
+            manager.setMockProvider(new MockProvider(properties));
         }
     }
 
@@ -2779,14 +2772,15 @@
             manager.setMockProvider(null);
             if (!manager.hasProvider()) {
                 mProviderManagers.remove(manager);
-                mLastLocation.remove(manager.getName());
-                mLastLocationCoarseInterval.remove(manager.getName());
             }
         }
     }
 
     @Override
     public void setTestProviderLocation(String provider, Location location, String packageName) {
+        Preconditions.checkArgument(location.isComplete(),
+                "incomplete location object, missing timestamp or accuracy?");
+
         if (mAppOps.checkOp(AppOpsManager.OP_MOCK_LOCATION, Binder.getCallingUid(), packageName)
                 != AppOpsManager.MODE_ALLOWED) {
             return;
@@ -2855,12 +2849,12 @@
 
             ipw.println("User Info:");
             ipw.increaseIndent();
-            mUserInfoStore.dump(fd, ipw, args);
+            mUserInfoHelper.dump(fd, ipw, args);
             ipw.decreaseIndent();
 
             ipw.println("Location Settings:");
             ipw.increaseIndent();
-            mSettingsStore.dump(fd, ipw, args);
+            mSettingsHelper.dump(fd, ipw, args);
             ipw.decreaseIndent();
 
             ipw.println("Battery Saver Location Mode: "
@@ -2887,8 +2881,8 @@
 
             ipw.println("Historical Records by Provider:");
             ipw.increaseIndent();
-            TreeMap<PackageProviderKey, PackageStatistics> sorted = new TreeMap<>();
-            sorted.putAll(mRequestStatistics.statistics);
+            TreeMap<PackageProviderKey, PackageStatistics> sorted = new TreeMap<>(
+                    mRequestStatistics.statistics);
             for (Map.Entry<PackageProviderKey, PackageStatistics> entry
                     : sorted.entrySet()) {
                 PackageProviderKey key = entry.getKey();
@@ -2898,20 +2892,6 @@
 
             mRequestStatistics.history.dump(ipw);
 
-            ipw.println("Last Known Locations:");
-            ipw.increaseIndent();
-            for (Map.Entry<String, Location> entry : mLastLocation.entrySet()) {
-                ipw.println(entry.getKey() + ": " + entry.getValue());
-            }
-            ipw.decreaseIndent();
-
-            ipw.println("Last Known Coarse Locations:");
-            ipw.increaseIndent();
-            for (Map.Entry<String, Location> entry : mLastLocationCoarseInterval.entrySet()) {
-                ipw.println(entry.getKey() + ": " + entry.getValue());
-            }
-            ipw.decreaseIndent();
-
             if (mGeofenceManager != null) {
                 ipw.println("Geofences:");
                 ipw.increaseIndent();
@@ -2923,21 +2903,16 @@
                 ipw.println("Location Controller Extra Package: " + mExtraLocationControllerPackage
                         + (mExtraLocationControllerPackageEnabled ? " [enabled]" : "[disabled]"));
             }
+        }
 
-            if (mLocationFudger != null) {
-                ipw.println("Location Fudger:");
-                ipw.increaseIndent();
-                mLocationFudger.dump(fd, ipw, args);
-                ipw.decreaseIndent();
-            }
+        ipw.println("Location Providers:");
+        ipw.increaseIndent();
+        for (LocationProviderManager manager : mProviderManagers) {
+            manager.dump(fd, ipw, args);
+        }
+        ipw.decreaseIndent();
 
-            ipw.println("Location Providers:");
-            ipw.increaseIndent();
-            for (LocationProviderManager manager : mProviderManagers) {
-                manager.dump(fd, ipw, args);
-            }
-            ipw.decreaseIndent();
-
+        synchronized (mLock) {
             if (mGnssManagerService != null) {
                 ipw.println("GNSS:");
                 ipw.increaseIndent();
@@ -2960,5 +2935,34 @@
                 }
             }
         }
+
+        @Override
+        public boolean isProviderEnabledForUser(@NonNull String provider, int userId) {
+            synchronized (mLock) {
+                LocationProviderManager manager = getLocationProviderManager(provider);
+                if (manager == null) {
+                    return false;
+                }
+
+                return manager.isEnabled(userId);
+            }
+        }
+
+        @Override
+        public boolean isProviderPackage(String packageName) {
+            for (LocationProviderManager manager : mProviderManagers) {
+                if (manager.getPackages().contains(packageName)) {
+                    return true;
+                }
+            }
+            return false;
+        }
+
+        @Override
+        public void sendNiResponse(int notifId, int userResponse) {
+            if (mGnssManagerService != null) {
+                mGnssManagerService.sendNiResponse(notifId, userResponse);
+            }
+        }
     }
 }
diff --git a/services/core/java/com/android/server/LocationManagerServiceUtils.java b/services/core/java/com/android/server/LocationManagerServiceUtils.java
index 9c8ac19..ba1c81c 100644
--- a/services/core/java/com/android/server/LocationManagerServiceUtils.java
+++ b/services/core/java/com/android/server/LocationManagerServiceUtils.java
@@ -17,8 +17,7 @@
 package com.android.server;
 
 import android.annotation.NonNull;
-import android.app.ActivityManager;
-import android.content.Context;
+import android.annotation.Nullable;
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.util.Log;
@@ -39,22 +38,31 @@
     /**
      * Listener that can be linked to a binder.
      * @param <TListener> listener type
+     * @param <TRequest> request type
      */
-    public static class LinkedListener<TListener> extends
+    public static class LinkedListener<TRequest, TListener> extends
             LinkedListenerBase {
+        @Nullable protected final TRequest mRequest;
         private final TListener mListener;
         private final Consumer<TListener> mBinderDeathCallback;
 
         public LinkedListener(
+                @Nullable TRequest request,
                 @NonNull TListener listener,
                 String listenerName,
                 @NonNull CallerIdentity callerIdentity,
                 @NonNull Consumer<TListener> binderDeathCallback) {
             super(callerIdentity, listenerName);
             mListener = listener;
+            mRequest = request;
             mBinderDeathCallback = binderDeathCallback;
         }
 
+        @Nullable
+        public TRequest getRequest() {
+            return mRequest;
+        }
+
         @Override
         public void binderDied() {
             if (D) Log.d(TAG, "Remote " + mListenerName + " died.");
@@ -91,12 +99,8 @@
 
         /**
          * Link listener (i.e. callback) to a binder, so that it will be called upon binder's death.
-         *
-         * @param binder that calls listener upon death
-         * @return true if listener is successfully linked to binder, false otherwise
          */
-        public boolean linkToListenerDeathNotificationLocked(
-                IBinder binder) {
+        public boolean linkToListenerDeathNotificationLocked(IBinder binder) {
             try {
                 binder.linkToDeath(this, 0 /* flags */);
                 return true;
@@ -110,54 +114,13 @@
 
         /**
          * Unlink death listener (i.e. callback) from binder.
-         *
-         * @param binder that calls listener upon death
-         * @return true if binder is successfully unlinked from binder, false otherwise
          */
-        public boolean unlinkFromListenerDeathNotificationLocked(
-                IBinder binder) {
+        public void unlinkFromListenerDeathNotificationLocked(IBinder binder) {
             try {
                 binder.unlinkToDeath(this, 0 /* flags */);
-                return true;
             } catch (NoSuchElementException e) {
-                // if the death callback isn't connected (it should be...), log error,
-                // swallow the exception and return
                 Log.w(TAG, "Could not unlink " + mListenerName + " death callback.", e);
-                return false;
             }
         }
-
-    }
-
-    /**
-     * Convert boolean foreground into "foreground" or "background" string.
-     *
-     * @param foreground boolean indicating foreground
-     * @return "foreground" string if true, false otherwise
-     */
-    public static String foregroundAsString(boolean foreground) {
-        return foreground ? "foreground" : "background";
-    }
-
-
-    /**
-     * Classifies importance level as foreground or not.
-     *
-     * @param importance level as int
-     * @return boolean indicating if importance level is foreground or greater
-     */
-    public static boolean isImportanceForeground(int importance) {
-        return importance <= ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE;
-    }
-
-    /**
-     * Get package importance level.
-     *
-     * @param packageName package name
-     * @return package importance level as int
-     */
-    public static int getPackageImportance(String packageName, Context context) {
-        return ((ActivityManager) context.getSystemService(
-                Context.ACTIVITY_SERVICE)).getPackageImportance(packageName);
     }
 }
diff --git a/services/core/java/com/android/server/MmsServiceBroker.java b/services/core/java/com/android/server/MmsServiceBroker.java
index 9b1326b..043f657 100644
--- a/services/core/java/com/android/server/MmsServiceBroker.java
+++ b/services/core/java/com/android/server/MmsServiceBroker.java
@@ -128,13 +128,15 @@
 
         @Override
         public void sendMessage(int subId, String callingPkg, Uri contentUri, String locationUrl,
-                Bundle configOverrides, PendingIntent sentIntent) throws RemoteException {
+                Bundle configOverrides, PendingIntent sentIntent, long messageId)
+                throws RemoteException {
             returnPendingIntentWithError(sentIntent);
         }
 
         @Override
         public void downloadMessage(int subId, String callingPkg, String locationUrl,
-                Uri contentUri, Bundle configOverrides, PendingIntent downloadedIntent)
+                Uri contentUri, Bundle configOverrides, PendingIntent downloadedIntent,
+                long messageId)
                 throws RemoteException {
             returnPendingIntentWithError(downloadedIntent);
         }
@@ -329,7 +331,8 @@
 
         @Override
         public void sendMessage(int subId, String callingPkg, Uri contentUri,
-                String locationUrl, Bundle configOverrides, PendingIntent sentIntent)
+                String locationUrl, Bundle configOverrides, PendingIntent sentIntent,
+                long messageId)
                 throws RemoteException {
             Slog.d(TAG, "sendMessage() by " + callingPkg);
             mContext.enforceCallingPermission(Manifest.permission.SEND_SMS, "Send MMS message");
@@ -343,13 +346,13 @@
                     Intent.FLAG_GRANT_READ_URI_PERMISSION,
                     subId);
             getServiceGuarded().sendMessage(subId, callingPkg, contentUri, locationUrl,
-                    configOverrides, sentIntent);
+                    configOverrides, sentIntent, messageId);
         }
 
         @Override
         public void downloadMessage(int subId, String callingPkg, String locationUrl,
                 Uri contentUri, Bundle configOverrides,
-                PendingIntent downloadedIntent) throws RemoteException {
+                PendingIntent downloadedIntent, long messageId) throws RemoteException {
             Slog.d(TAG, "downloadMessage() by " + callingPkg);
             mContext.enforceCallingPermission(Manifest.permission.RECEIVE_MMS,
                     "Download MMS message");
@@ -364,7 +367,7 @@
                     subId);
 
             getServiceGuarded().downloadMessage(subId, callingPkg, locationUrl, contentUri,
-                    configOverrides, downloadedIntent);
+                    configOverrides, downloadedIntent, messageId);
         }
 
         @Override
diff --git a/services/core/java/com/android/server/NetworkManagementService.java b/services/core/java/com/android/server/NetworkManagementService.java
index 9d4c783..1bb3c3a 100644
--- a/services/core/java/com/android/server/NetworkManagementService.java
+++ b/services/core/java/com/android/server/NetworkManagementService.java
@@ -86,12 +86,12 @@
 import android.util.Slog;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.HexDump;
 import com.android.internal.util.Preconditions;
 
@@ -412,8 +412,8 @@
                     getBatteryStats().noteMobileRadioPowerState(powerState, tsNanos, uid);
                 } catch (RemoteException e) {
                 }
-                StatsLog.write_non_chained(StatsLog.MOBILE_RADIO_POWER_STATE_CHANGED, uid, null,
-                        powerState);
+                FrameworkStatsLog.write_non_chained(
+                        FrameworkStatsLog.MOBILE_RADIO_POWER_STATE_CHANGED, uid, null, powerState);
             }
         }
 
@@ -424,8 +424,8 @@
                     getBatteryStats().noteWifiRadioPowerState(powerState, tsNanos, uid);
                 } catch (RemoteException e) {
                 }
-                StatsLog.write_non_chained(StatsLog.WIFI_RADIO_POWER_STATE_CHANGED, uid, null,
-                        powerState);
+                FrameworkStatsLog.write_non_chained(
+                        FrameworkStatsLog.WIFI_RADIO_POWER_STATE_CHANGED, uid, null, powerState);
             }
         }
 
diff --git a/services/core/java/com/android/server/PinnerService.java b/services/core/java/com/android/server/PinnerService.java
index 135f6f3..6fb7b26 100644
--- a/services/core/java/com/android/server/PinnerService.java
+++ b/services/core/java/com/android/server/PinnerService.java
@@ -272,10 +272,11 @@
     private void handlePinOnStart() {
         final String bootImage = SystemProperties.get("dalvik.vm.boot-image", "");
         String[] filesToPin = null;
-        if (bootImage.endsWith("apex.art")) {
-            // Use the files listed for that specific boot image
+        if (bootImage.endsWith("boot-image.prof")) {
+            // Use the files listed for that specific boot image.
+            // TODO: find a better way to know we're using the JIT zygote configuration.
             filesToPin = mContext.getResources().getStringArray(
-                  com.android.internal.R.array.config_apexBootImagePinnerServiceFiles);
+                  com.android.internal.R.array.config_jitzygoteBootImagePinnerServiceFiles);
         } else {
             // Files to pin come from the overlay and can be specified per-device config
             filesToPin = mContext.getResources().getStringArray(
diff --git a/services/core/java/com/android/server/RescueParty.java b/services/core/java/com/android/server/RescueParty.java
index 131a22b..80036bb 100644
--- a/services/core/java/com/android/server/RescueParty.java
+++ b/services/core/java/com/android/server/RescueParty.java
@@ -42,11 +42,11 @@
 import android.util.Log;
 import android.util.MathUtils;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.PackageWatchdog.FailureReasons;
 import com.android.server.PackageWatchdog.PackageHealthObserver;
 import com.android.server.PackageWatchdog.PackageHealthObserverImpact;
@@ -213,10 +213,10 @@
     }
 
     /**
-     * Get the current rescue level.
+     * Get the next rescue level. This indicates the next level of mitigation that may be taken.
      */
-    private static int getRescueLevel() {
-        return MathUtils.constrain(SystemProperties.getInt(PROP_RESCUE_LEVEL, LEVEL_NONE),
+    private static int getNextRescueLevel() {
+        return MathUtils.constrain(SystemProperties.getInt(PROP_RESCUE_LEVEL, LEVEL_NONE) + 1,
                 LEVEL_NONE, LEVEL_FACTORY_RESET);
     }
 
@@ -225,9 +225,7 @@
      * probably want to call {@link #executeRescueLevel(Context, String)}.
      */
     private static void incrementRescueLevel(int triggerUid) {
-        final int level = MathUtils.constrain(
-                SystemProperties.getInt(PROP_RESCUE_LEVEL, LEVEL_NONE) + 1,
-                LEVEL_NONE, LEVEL_FACTORY_RESET);
+        final int level = getNextRescueLevel();
         SystemProperties.set(PROP_RESCUE_LEVEL, Integer.toString(level));
 
         EventLogTags.writeRescueLevel(level, triggerUid);
@@ -255,7 +253,7 @@
 
     private static void executeRescueLevelInternal(Context context, int level, @Nullable
             String failedPackage) throws Exception {
-        StatsLog.write(StatsLog.RESCUE_PARTY_RESET_REPORTED, level);
+        FrameworkStatsLog.write(FrameworkStatsLog.RESCUE_PARTY_RESET_REPORTED, level);
         switch (level) {
             case LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS:
                 resetAllSettings(context, Settings.RESET_MODE_UNTRUSTED_DEFAULTS, failedPackage);
@@ -395,12 +393,9 @@
         @Override
         public int onHealthCheckFailed(@Nullable VersionedPackage failedPackage,
                 @FailureReasons int failureReason) {
-            if (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH
-                    || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING) {
-                int rescueLevel = MathUtils.constrain(
-                        SystemProperties.getInt(PROP_RESCUE_LEVEL, LEVEL_NONE) + 1,
-                        LEVEL_NONE, LEVEL_FACTORY_RESET);
-                return mapRescueLevelToUserImpact(rescueLevel);
+            if (!isDisabled() && (failureReason == PackageWatchdog.FAILURE_REASON_APP_CRASH
+                    || failureReason == PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING)) {
+                return mapRescueLevelToUserImpact(getNextRescueLevel());
             } else {
                 return PackageHealthObserverImpact.USER_IMPACT_NONE;
             }
@@ -449,7 +444,7 @@
             if (isDisabled()) {
                 return PackageHealthObserverImpact.USER_IMPACT_NONE;
             }
-            return mapRescueLevelToUserImpact(getRescueLevel());
+            return mapRescueLevelToUserImpact(getNextRescueLevel());
         }
 
         @Override
diff --git a/services/core/java/com/android/server/ServiceWatcher.java b/services/core/java/com/android/server/ServiceWatcher.java
index 14cd3a5..b43ae36 100644
--- a/services/core/java/com/android/server/ServiceWatcher.java
+++ b/services/core/java/com/android/server/ServiceWatcher.java
@@ -49,6 +49,8 @@
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.util.Preconditions;
 
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
 import java.util.List;
 import java.util.Objects;
 import java.util.concurrent.Callable;
@@ -183,9 +185,7 @@
 
     // write from handler thread only, read anywhere
     private volatile ServiceInfo mServiceInfo;
-
-    // read/write from handler thread only
-    private IBinder mBinder;
+    private volatile IBinder mBinder;
 
     public ServiceWatcher(Context context, Handler handler, String action,
             @Nullable BinderRunner onBind, @Nullable Runnable onUnbind,
@@ -345,20 +345,25 @@
         }
 
         mBinder = binder;
+
+        // we always run the on bind callback even if we know that the binder is dead already so
+        // that there are always balance pairs of bind/unbind callbacks
         if (mOnBind != null) {
-            runOnBinder(mOnBind);
-        }
-    }
-
-    @Override
-    public void onBindingDied(ComponentName component) {
-        Preconditions.checkState(Looper.myLooper() == mHandler.getLooper());
-
-        if (D) {
-            Log.i(TAG, getLogPrefix() + " " + component.toShortString() + " died");
+            try {
+                mOnBind.run(binder);
+            } catch (RuntimeException | RemoteException e) {
+                // binders may propagate some specific non-RemoteExceptions from the other side
+                // through the binder as well - we cannot allow those to crash the system server
+                Log.e(TAG, getLogPrefix() + " exception running on " + mServiceInfo, e);
+            }
         }
 
-        onBestServiceChanged(true);
+        try {
+            // setting the binder to null lets us skip queued transactions
+            binder.linkToDeath(() -> mBinder = null, 0);
+        } catch (RemoteException e) {
+            mBinder = null;
+        }
     }
 
     @Override
@@ -375,6 +380,17 @@
         }
     }
 
+    @Override
+    public void onBindingDied(ComponentName component) {
+        Preconditions.checkState(Looper.myLooper() == mHandler.getLooper());
+
+        if (D) {
+            Log.i(TAG, getLogPrefix() + " " + component.toShortString() + " died");
+        }
+
+        onBestServiceChanged(true);
+    }
+
     private void onUserSwitched(@UserIdInt int userId) {
         mCurrentUserId = userId;
         onBestServiceChanged(false);
@@ -398,7 +414,7 @@
      * RemoteException thrown during execution.
      */
     public final void runOnBinder(BinderRunner runner) {
-        runOnHandler(() -> {
+        mHandler.post(() -> {
             if (mBinder == null) {
                 return;
             }
@@ -447,14 +463,6 @@
         }
     }
 
-    private void runOnHandler(Runnable r) {
-        if (Looper.myLooper() == mHandler.getLooper()) {
-            r.run();
-        } else {
-            mHandler.post(r);
-        }
-    }
-
     private <T> T runOnHandlerBlocking(Callable<T> c)
             throws InterruptedException, TimeoutException {
         if (Looper.myLooper() == mHandler.getLooper()) {
@@ -489,4 +497,12 @@
     public String toString() {
         return mServiceInfo.toString();
     }
+
+    /**
+     * Dump for debugging.
+     */
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        pw.println("service=" + mServiceInfo);
+        pw.println("connected=" + (mBinder != null));
+    }
 }
diff --git a/services/core/java/com/android/server/StorageManagerService.java b/services/core/java/com/android/server/StorageManagerService.java
index a04f25b..b5b22f1 100644
--- a/services/core/java/com/android/server/StorageManagerService.java
+++ b/services/core/java/com/android/server/StorageManagerService.java
@@ -24,6 +24,7 @@
 import static android.app.ActivityManager.PROCESS_STATE_NONEXISTENT;
 import static android.app.AppOpsManager.MODE_ALLOWED;
 import static android.app.AppOpsManager.OP_LEGACY_STORAGE;
+import static android.app.AppOpsManager.OP_MANAGE_EXTERNAL_STORAGE;
 import static android.app.AppOpsManager.OP_READ_EXTERNAL_STORAGE;
 import static android.app.AppOpsManager.OP_REQUEST_INSTALL_PACKAGES;
 import static android.app.AppOpsManager.OP_WRITE_EXTERNAL_STORAGE;
@@ -223,6 +224,7 @@
      * disables FuseDaemon. If {@code 0}, uses the default value from the build system.
      */
     private static final String FUSE_ENABLED = "fuse_enabled";
+    private static final boolean DEFAULT_FUSE_ENABLED = true;
 
     public static class Lifecycle extends SystemService {
         private StorageManagerService mStorageManagerService;
@@ -341,9 +343,43 @@
      */
     private final Object mPackagesLock = new Object();
 
+    /**
+     * mLocalUnlockedUsers affects the return value of isUserUnlocked.  If
+     * any value in the array changes, then the binder cache for
+     * isUserUnlocked must be invalidated.  When adding mutating methods to
+     * WatchedLockedUsers, be sure to invalidate the cache in the new
+     * methods.
+     */
+    private class WatchedLockedUsers {
+        private int[] users = EmptyArray.INT;
+        public WatchedLockedUsers() {
+        }
+        public void append(int userId) {
+            users = ArrayUtils.appendInt(users, userId);
+            invalidateIsUserUnlockedCache();
+        }
+        public void remove(int userId) {
+            users = ArrayUtils.removeInt(users, userId);
+            invalidateIsUserUnlockedCache();
+        }
+        public boolean contains(int userId) {
+            return ArrayUtils.contains(users, userId);
+        }
+        public int[] all() {
+            return users;
+        }
+        @Override
+        public String toString() {
+            return Arrays.toString(users);
+        }
+        private void invalidateIsUserUnlockedCache() {
+            UserManager.invalidateIsUserUnlockedCache();
+        }
+    }
+
     /** Set of users that we know are unlocked. */
     @GuardedBy("mLock")
-    private int[] mLocalUnlockedUsers = EmptyArray.INT;
+    private WatchedLockedUsers mLocalUnlockedUsers = new WatchedLockedUsers();
     /** Set of users that system knows are unlocked. */
     @GuardedBy("mLock")
     private int[] mSystemUnlockedUsers = EmptyArray.INT;
@@ -1264,13 +1300,6 @@
                     vol.state = newState;
                     onVolumeStateChangedLocked(vol, oldState, newState);
                 }
-                try {
-                    if (vol.type == VolumeInfo.TYPE_PRIVATE && state == VolumeInfo.STATE_MOUNTED) {
-                        mInstaller.onPrivateVolumeMounted(vol.getFsUuid());
-                    }
-                } catch (Installer.InstallerException e) {
-                    Slog.i(TAG, "Failed when private volume mounted " + vol, e);
-                }
             }
         }
 
@@ -1622,7 +1651,7 @@
         // If there is no value in the property yet (first boot after data wipe), this value may be
         // incorrect until #updateFusePropFromSettings where we set the correct value and reboot if
         // different
-        mIsFuseEnabled = SystemProperties.getBoolean(PROP_FUSE, false);
+        mIsFuseEnabled = SystemProperties.getBoolean(PROP_FUSE, DEFAULT_FUSE_ENABLED);
         mContext = context;
         mResolver = mContext.getContentResolver();
         mCallbacks = new Callbacks(FgThread.get().getLooper());
@@ -1685,23 +1714,17 @@
      *  and updates PROP_FUSE (reboots if changed).
      */
     private void updateFusePropFromSettings() {
-        boolean defaultFuseFlag = false;
-        boolean settingsFuseFlag = SystemProperties.getBoolean(PROP_SETTINGS_FUSE, defaultFuseFlag);
-        Slog.d(TAG, "FUSE flags. Settings: " + settingsFuseFlag + ". Default: " + defaultFuseFlag);
-
-        if (TextUtils.isEmpty(SystemProperties.get(PROP_SETTINGS_FUSE))) {
-            // Set default value of PROP_SETTINGS_FUSE and PROP_FUSE if it
-            // is unset (neither true nor false).
-            // This happens only on the first boot after wiping data partition
-            SystemProperties.set(PROP_SETTINGS_FUSE, Boolean.toString(defaultFuseFlag));
-            SystemProperties.set(PROP_FUSE, Boolean.toString(defaultFuseFlag));
-            return;
-        }
+        boolean settingsFuseFlag = SystemProperties.getBoolean(PROP_SETTINGS_FUSE,
+                DEFAULT_FUSE_ENABLED);
+        Slog.d(TAG, "FUSE flags. Settings: " + settingsFuseFlag
+                + ". Default: " + DEFAULT_FUSE_ENABLED);
 
         if (mIsFuseEnabled != settingsFuseFlag) {
             Slog.i(TAG, "Toggling persist.sys.fuse to " + settingsFuseFlag);
+            // Set prop_fuse to match prop_settings_fuse because it is used by native daemons like
+            // init, zygote, installd and vold
             SystemProperties.set(PROP_FUSE, Boolean.toString(settingsFuseFlag));
-            // Perform hard reboot to kick policy into place
+            // Then perform hard reboot to kick policy into place
             mContext.getSystemService(PowerManager.class).reboot("fuse_prop");
         }
     }
@@ -3041,7 +3064,7 @@
         }
 
         synchronized (mLock) {
-            mLocalUnlockedUsers = ArrayUtils.appendInt(mLocalUnlockedUsers, userId);
+            mLocalUnlockedUsers.append(userId);
         }
     }
 
@@ -3057,14 +3080,14 @@
         }
 
         synchronized (mLock) {
-            mLocalUnlockedUsers = ArrayUtils.removeInt(mLocalUnlockedUsers, userId);
+            mLocalUnlockedUsers.remove(userId);
         }
     }
 
     @Override
     public boolean isUserKeyUnlocked(int userId) {
         synchronized (mLock) {
-            return ArrayUtils.contains(mLocalUnlockedUsers, userId);
+            return mLocalUnlockedUsers.contains(userId);
         }
     }
 
@@ -3080,6 +3103,15 @@
 
         try {
             mVold.prepareUserStorage(volumeUuid, userId, serialNumber, flags);
+            // After preparing user storage, we should check if we should mount data mirror again,
+            // and we do it for user 0 only as we only need to do once for all users.
+            if (volumeUuid != null) {
+                final StorageManager storage = mContext.getSystemService(StorageManager.class);
+                VolumeInfo info = storage.findVolumeByUuid(volumeUuid);
+                if (info != null && userId == 0 && info.type == VolumeInfo.TYPE_PRIVATE) {
+                    mInstaller.tryMountDataMirror(volumeUuid);
+                }
+            }
         } catch (Exception e) {
             Slog.wtf(TAG, e);
         }
@@ -3241,7 +3273,7 @@
                         + " does not match calling user id " + userId);
             }
             try {
-                mVold.setupAppDir(appPath, matcher.group(1), callingUid);
+                mVold.setupAppDir(appPath, callingUid);
             } catch (RemoteException e) {
                 throw new IllegalStateException("Failed to prepare " + appPath + ": " + e);
             }
@@ -3941,8 +3973,12 @@
             final boolean hasMtp = mIPackageManager.checkUidPermission(ACCESS_MTP, uid) ==
                     PERMISSION_GRANTED;
             if (mIsFuseEnabled && hasMtp) {
-                // The process hosting the MTP server should be able to write in Android/
-                return Zygote.MOUNT_EXTERNAL_ANDROID_WRITABLE;
+                ApplicationInfo ai = mIPackageManager.getApplicationInfo(packageName,
+                        0, UserHandle.getUserId(uid));
+                if (ai.isSignedWithPlatformKey()) {
+                    // Platform processes hosting the MTP server should be able to write in Android/
+                    return Zygote.MOUNT_EXTERNAL_ANDROID_WRITABLE;
+                }
             }
 
             // Determine if caller is holding runtime permission
@@ -4172,7 +4208,7 @@
             }
 
             pw.println();
-            pw.println("Local unlocked users: " + Arrays.toString(mLocalUnlockedUsers));
+            pw.println("Local unlocked users: " + mLocalUnlockedUsers);
             pw.println("System unlocked users: " + Arrays.toString(mSystemUnlockedUsers));
 
             final ContentResolver cr = mContext.getContentResolver();
@@ -4320,21 +4356,37 @@
             return true;
         }
 
-        public void onAppOpsChanged(int code, int uid,
-                @Nullable String packageName, int mode) {
-            if (code == OP_REQUEST_INSTALL_PACKAGES && mIsFuseEnabled) {
-                // When using FUSE, we basically have no other choice but to kill the app
-                // after the app op is either granted or rejected.
-                final IActivityManager am = ActivityManager.getService();
-                try {
-                    am.killApplication(packageName,
-                            UserHandle.getAppId(uid),
-                            UserHandle.USER_ALL, AppOpsManager.opToName(code) + " changed.");
-                } catch (RemoteException e) {
-                }
-
-                return;
+        private void killAppForOpChange(int code, int uid, String packageName) {
+            final IActivityManager am = ActivityManager.getService();
+            try {
+                am.killApplication(packageName,
+                        UserHandle.getAppId(uid),
+                        UserHandle.USER_ALL, AppOpsManager.opToName(code) + " changed.");
+            } catch (RemoteException e) {
             }
+        }
+
+        public void onAppOpsChanged(int code, int uid, @Nullable String packageName, int mode) {
+            if (mIsFuseEnabled) {
+                // When using FUSE, we may need to kill the app if the op changes
+                switch(code) {
+                    case OP_REQUEST_INSTALL_PACKAGES:
+                        // Always kill regardless of op change, to remount apps /storage
+                        killAppForOpChange(code, uid, packageName);
+                        return;
+                    case OP_MANAGE_EXTERNAL_STORAGE:
+                        if (mode != MODE_ALLOWED) {
+                            // Only kill if op is denied, to lose external_storage gid
+                            // Killing when op is granted to pickup the gid automatically, results
+                            // in a bad UX, especially since the gid only gives access to unreliable
+                            // volumes, USB OTGs that are rarely mounted. The app will get the
+                            // external_storage gid on next organic restart.
+                            killAppForOpChange(code, uid, packageName);
+                            return;
+                        }
+                }
+            }
+
             if (mode == MODE_ALLOWED && (code == OP_READ_EXTERNAL_STORAGE
                     || code == OP_WRITE_EXTERNAL_STORAGE
                     || code == OP_REQUEST_INSTALL_PACKAGES)) {
diff --git a/services/core/java/com/android/server/SystemService.java b/services/core/java/com/android/server/SystemService.java
index b1584fe..e3c7325 100644
--- a/services/core/java/com/android/server/SystemService.java
+++ b/services/core/java/com/android/server/SystemService.java
@@ -23,7 +23,6 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.SystemApi.Client;
-import android.annotation.SystemApi.Process;
 import android.annotation.UserIdInt;
 import android.app.ActivityThread;
 import android.content.Context;
@@ -65,7 +64,7 @@
  *
  * {@hide}
  */
-@SystemApi(client = Client.MODULE_LIBRARIES, process = Process.SYSTEM_SERVER)
+@SystemApi(client = Client.SYSTEM_SERVER)
 public abstract class SystemService {
 
     /** @hide */
@@ -132,7 +131,7 @@
      * Class representing user in question in the lifecycle callbacks.
      * @hide
      */
-    @SystemApi(client = Client.MODULE_LIBRARIES, process = Process.SYSTEM_SERVER)
+    @SystemApi(client = Client.SYSTEM_SERVER)
     public static final class TargetUser {
         @NonNull
         private final UserInfo mUserInfo;
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java
index 68574f5..f85fc28 100644
--- a/services/core/java/com/android/server/TelephonyRegistry.java
+++ b/services/core/java/com/android/server/TelephonyRegistry.java
@@ -61,6 +61,7 @@
 import android.telephony.CellSignalStrengthWcdma;
 import android.telephony.DataFailCause;
 import android.telephony.DisconnectCause;
+import android.telephony.DisplayInfo;
 import android.telephony.LocationAccessPolicy;
 import android.telephony.PhoneCapability;
 import android.telephony.PhoneStateListener;
@@ -77,7 +78,6 @@
 import android.telephony.emergency.EmergencyNumber;
 import android.telephony.ims.ImsReasonInfo;
 import android.util.LocalLog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IBatteryStats;
@@ -87,6 +87,7 @@
 import com.android.internal.telephony.TelephonyPermissions;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.server.am.BatteryStatsService;
 
@@ -205,6 +206,8 @@
 
     private boolean[] mUserMobileDataState;
 
+    private DisplayInfo[] mDisplayInfos;
+
     private SignalStrength[] mSignalStrength;
 
     private boolean[] mMessageWaiting;
@@ -285,19 +288,27 @@
                 PhoneStateListener.LISTEN_CALL_FORWARDING_INDICATOR
                         | PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR
                         | PhoneStateListener.LISTEN_EMERGENCY_NUMBER_LIST
-                        | PhoneStateListener.LISTEN_REGISTRATION_FAILURE;
+                        | PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED;
 
-    static final int PRECISE_PHONE_STATE_PERMISSION_MASK =
+    static final int ENFORCE_PRECISE_PHONE_STATE_PERMISSION_MASK =
                 PhoneStateListener.LISTEN_PRECISE_CALL_STATE
-                | PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE
-                | PhoneStateListener.LISTEN_CALL_DISCONNECT_CAUSES
-                | PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED
-                | PhoneStateListener.LISTEN_IMS_CALL_DISCONNECT_CAUSES;
+                        | PhoneStateListener.LISTEN_PRECISE_DATA_CONNECTION_STATE
+                        | PhoneStateListener.LISTEN_CALL_DISCONNECT_CAUSES
+                        | PhoneStateListener.LISTEN_CALL_ATTRIBUTES_CHANGED
+                        | PhoneStateListener.LISTEN_IMS_CALL_DISCONNECT_CAUSES
+                        | PhoneStateListener.LISTEN_REGISTRATION_FAILURE
+                        | PhoneStateListener.LISTEN_BARRING_INFO;
 
     static final int READ_ACTIVE_EMERGENCY_SESSION_PERMISSION_MASK =
             PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_CALL
                     | PhoneStateListener.LISTEN_OUTGOING_EMERGENCY_SMS;
 
+    static final int READ_PRIVILEGED_PHONE_STATE_PERMISSION_MASK =
+            PhoneStateListener.LISTEN_OEM_HOOK_RAW_EVENT
+                | PhoneStateListener.LISTEN_SRVCC_STATE_CHANGED
+                | PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED
+                | PhoneStateListener.LISTEN_VOICE_ACTIVATION_STATE;
+
     private static final int MSG_USER_SWITCHED = 1;
     private static final int MSG_UPDATE_DEFAULT_SUB = 2;
 
@@ -436,6 +447,7 @@
         mCallAttributes = copyOf(mCallAttributes, mNumPhones);
         mOutgoingCallEmergencyNumber = copyOf(mOutgoingCallEmergencyNumber, mNumPhones);
         mOutgoingSmsEmergencyNumber = copyOf(mOutgoingSmsEmergencyNumber, mNumPhones);
+        mDisplayInfos = copyOf(mDisplayInfos, mNumPhones);
 
         // ds -> ss switch.
         if (mNumPhones < oldNumPhones) {
@@ -475,6 +487,7 @@
             mBackgroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mPreciseDataConnectionStates.add(new HashMap<Integer, PreciseDataConnectionState>());
             mBarringInfo.add(i, new BarringInfo());
+            mDisplayInfos[i] = null;
         }
     }
 
@@ -533,6 +546,7 @@
         mOutgoingCallEmergencyNumber = new EmergencyNumber[numPhones];
         mOutgoingSmsEmergencyNumber = new EmergencyNumber[numPhones];
         mBarringInfo = new ArrayList<>();
+        mDisplayInfos = new DisplayInfo[numPhones];
         for (int i = 0; i < numPhones; i++) {
             mCallState[i] =  TelephonyManager.CALL_STATE_IDLE;
             mDataActivity[i] = TelephonyManager.DATA_ACTIVITY_NONE;
@@ -561,6 +575,7 @@
             mBackgroundCallState[i] = PreciseCallState.PRECISE_CALL_STATE_IDLE;
             mPreciseDataConnectionStates.add(new HashMap<Integer, PreciseDataConnectionState>());
             mBarringInfo.add(i, new BarringInfo());
+            mDisplayInfos[i] = null;
         }
 
         mAppOps = mContext.getSystemService(AppOpsManager.class);
@@ -891,6 +906,13 @@
                     if ((events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH)
                             != 0) {
                         updateReportSignalStrengthDecision(r.subId);
+                        try {
+                            if (mSignalStrength[phoneId] != null) {
+                                r.callback.onSignalStrengthsChanged(mSignalStrength[phoneId]);
+                            }
+                        } catch (RemoteException ex) {
+                            remove(r.binder);
+                        }
                     }
                     if (validateEventsAndUserLocked(r, PhoneStateListener.LISTEN_CELL_INFO)) {
                         try {
@@ -964,6 +986,15 @@
                             remove(r.binder);
                         }
                     }
+                    if ((events & PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED) != 0) {
+                        try {
+                            if (mDisplayInfos[phoneId] != null) {
+                                r.callback.onDisplayInfoChanged(mDisplayInfos[phoneId]);
+                            }
+                        } catch (RemoteException ex) {
+                            remove(r.binder);
+                        }
+                    }
                     if ((events & PhoneStateListener.LISTEN_EMERGENCY_NUMBER_LIST) != 0) {
                         try {
                             r.callback.onEmergencyNumberListChanged(mEmergencyNumberList);
@@ -1320,9 +1351,10 @@
                         log("notifySignalStrengthForPhoneId: r=" + r + " subId=" + subId
                                 + " phoneId=" + phoneId + " ss=" + signalStrength);
                     }
-                    if (r.matchPhoneStateListenerEvent(
-                                PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) &&
-                            idMatch(r.subId, subId, phoneId)) {
+                    if ((r.matchPhoneStateListenerEvent(PhoneStateListener.LISTEN_SIGNAL_STRENGTHS)
+                            || r.matchPhoneStateListenerEvent(
+                                    PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH))
+                            && idMatch(r.subId, subId, phoneId)) {
                         try {
                             if (DBG) {
                                 log("notifySignalStrengthForPhoneId: callback.onSsS r=" + r
@@ -1335,7 +1367,7 @@
                         }
                     }
                     if (r.matchPhoneStateListenerEvent(PhoneStateListener.LISTEN_SIGNAL_STRENGTH) &&
-                            idMatch(r.subId, subId, phoneId)){
+                            idMatch(r.subId, subId, phoneId)) {
                         try {
                             int gsmSignalStrength = signalStrength.getGsmSignalStrength();
                             int ss = (gsmSignalStrength == 99 ? -1 : gsmSignalStrength);
@@ -1486,6 +1518,45 @@
         }
     }
 
+    /**
+     * Notify display network info changed.
+     *
+     * @param phoneId Phone id
+     * @param subId Subscription id
+     * @param displayInfo Display network info
+     *
+     * @see PhoneStateListener#onDisplayInfoChanged(DisplayInfo)
+     */
+    public void notifyDisplayInfoChanged(int phoneId, int subId,
+                                         @NonNull DisplayInfo displayInfo) {
+        if (!checkNotifyPermission("notifyDisplayInfoChanged()")) {
+            return;
+        }
+        if (VDBG) {
+            log("notifyDisplayInfoChanged: PhoneId=" + phoneId
+                    + " subId=" + subId + " displayInfo=" + displayInfo);
+        }
+        synchronized (mRecords) {
+            if (validatePhoneId(phoneId)) {
+                if (mDisplayInfos[phoneId] != null) {
+                    mDisplayInfos[phoneId] = displayInfo;
+                    for (Record r : mRecords) {
+                        if (r.matchPhoneStateListenerEvent(
+                                PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED)
+                                && idMatch(r.subId, subId, phoneId)) {
+                            try {
+                                r.callback.onDisplayInfoChanged(displayInfo);
+                            } catch (RemoteException ex) {
+                                mRemoveList.add(r.binder);
+                            }
+                        }
+                    }
+                }
+            }
+            handleRemoveListLocked();
+        }
+    }
+
     public void notifyCallForwardingChanged(boolean cfi) {
         notifyCallForwardingChangedForSubscriber(SubscriptionManager.DEFAULT_SUBSCRIPTION_ID, cfi);
     }
@@ -2381,12 +2452,12 @@
         try {
             if (state == TelephonyManager.CALL_STATE_IDLE) {
                 mBatteryStats.notePhoneOff();
-                StatsLog.write(StatsLog.PHONE_STATE_CHANGED,
-                        StatsLog.PHONE_STATE_CHANGED__STATE__OFF);
+                FrameworkStatsLog.write(FrameworkStatsLog.PHONE_STATE_CHANGED,
+                        FrameworkStatsLog.PHONE_STATE_CHANGED__STATE__OFF);
             } else {
                 mBatteryStats.notePhoneOn();
-                StatsLog.write(StatsLog.PHONE_STATE_CHANGED,
-                        StatsLog.PHONE_STATE_CHANGED__STATE__ON);
+                FrameworkStatsLog.write(FrameworkStatsLog.PHONE_STATE_CHANGED,
+                        FrameworkStatsLog.PHONE_STATE_CHANGED__STATE__ON);
             }
         } catch (RemoteException e) {
             /* The remote entity disappeared, we can safely ignore the exception. */
@@ -2520,7 +2591,7 @@
             }
         }
 
-        if ((events & PRECISE_PHONE_STATE_PERMISSION_MASK) != 0) {
+        if ((events & ENFORCE_PRECISE_PHONE_STATE_PERMISSION_MASK) != 0) {
             // check if calling app has either permission READ_PRECISE_PHONE_STATE
             // or with carrier privileges
             try {
@@ -2541,22 +2612,7 @@
                     android.Manifest.permission.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH, null);
         }
 
-        if ((events & PhoneStateListener.LISTEN_OEM_HOOK_RAW_EVENT) != 0) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
-        }
-
-        if ((events & PhoneStateListener.LISTEN_SRVCC_STATE_CHANGED) != 0) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
-        }
-
-        if ((events & PhoneStateListener.LISTEN_RADIO_POWER_STATE_CHANGED) != 0) {
-            mContext.enforceCallingOrSelfPermission(
-                    android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
-        }
-
-        if ((events & PhoneStateListener.LISTEN_VOICE_ACTIVATION_STATE) != 0) {
+        if ((events & READ_PRIVILEGED_PHONE_STATE_PERMISSION_MASK) != 0) {
             mContext.enforceCallingOrSelfPermission(
                     android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE, null);
         }
@@ -2671,7 +2727,8 @@
             }
         }
 
-        if ((events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0) {
+        if ((events & PhoneStateListener.LISTEN_SIGNAL_STRENGTHS) != 0
+                || (events & PhoneStateListener.LISTEN_ALWAYS_REPORTED_SIGNAL_STRENGTH) != 0) {
             try {
                 if (mSignalStrength[phoneId] != null) {
                     SignalStrength signalStrength = mSignalStrength[phoneId];
@@ -2729,6 +2786,20 @@
             }
         }
 
+        if ((events & PhoneStateListener.LISTEN_DISPLAY_INFO_CHANGED) != 0) {
+            try {
+                if (VDBG) {
+                    log("checkPossibleMissNotify: onDisplayInfoChanged phoneId="
+                            + phoneId + " dpi=" + mDisplayInfos[phoneId]);
+                }
+                if (mDisplayInfos[phoneId] != null) {
+                    r.callback.onDisplayInfoChanged(mDisplayInfos[phoneId]);
+                }
+            } catch (RemoteException ex) {
+                mRemoveList.add(r.binder);
+            }
+        }
+
         if ((events & PhoneStateListener.LISTEN_MESSAGE_WAITING_INDICATOR) != 0) {
             try {
                 if (VDBG) {
diff --git a/services/core/java/com/android/server/UiModeManagerService.java b/services/core/java/com/android/server/UiModeManagerService.java
index b994e6c..6763c51 100644
--- a/services/core/java/com/android/server/UiModeManagerService.java
+++ b/services/core/java/com/android/server/UiModeManagerService.java
@@ -302,15 +302,19 @@
     private final ContentObserver mDarkThemeObserver = new ContentObserver(mHandler) {
         @Override
         public void onChange(boolean selfChange, Uri uri) {
-            int mode = Secure.getIntForUser(getContext().getContentResolver(), Secure.UI_NIGHT_MODE,
-                    mNightMode, 0);
-            if (mode == MODE_NIGHT_AUTO || mode == MODE_NIGHT_CUSTOM) {
-                mode = MODE_NIGHT_YES;
-            }
-            SystemProperties.set(SYSTEM_PROPERTY_DEVICE_THEME, Integer.toString(mode));
+            updateSystemProperties();
         }
     };
 
+    private void updateSystemProperties() {
+        int mode = Secure.getIntForUser(getContext().getContentResolver(), Secure.UI_NIGHT_MODE,
+                mNightMode, 0);
+        if (mode == MODE_NIGHT_AUTO || mode == MODE_NIGHT_CUSTOM) {
+            mode = MODE_NIGHT_YES;
+        }
+        SystemProperties.set(SYSTEM_PROPERTY_DEVICE_THEME, Integer.toString(mode));
+    }
+
     @Override
     public void onSwitchUser(int userHandle) {
         super.onSwitchUser(userHandle);
@@ -392,6 +396,7 @@
 
         context.getContentResolver().registerContentObserver(Secure.getUriFor(Secure.UI_NIGHT_MODE),
                 false, mDarkThemeObserver, 0);
+        updateSystemProperties();
     }
 
     @VisibleForTesting
@@ -1261,8 +1266,9 @@
             if (Sandman.shouldStartDockApp(getContext(), homeIntent)) {
                 try {
                     int result = ActivityTaskManager.getService().startActivityWithConfig(
-                            null, getContext().getBasePackageName(), homeIntent, null, null, null,
-                            0, 0, mConfiguration, null, UserHandle.USER_CURRENT);
+                            null, getContext().getBasePackageName(), getContext().getFeatureId(),
+                            homeIntent, null, null, null, 0, 0, mConfiguration, null,
+                            UserHandle.USER_CURRENT);
                     if (ActivityManager.isStartResultSuccessful(result)) {
                         dockAppStarted = true;
                     } else if (result != ActivityManager.START_INTENT_NOT_RESOLVED) {
diff --git a/services/core/java/com/android/server/UserspaceRebootLogger.java b/services/core/java/com/android/server/UserspaceRebootLogger.java
new file mode 100644
index 0000000..74f113f
--- /dev/null
+++ b/services/core/java/com/android/server/UserspaceRebootLogger.java
@@ -0,0 +1,136 @@
+/*
+ * 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.server;
+
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_SHUTDOWN_SEQUENCE_ABORTED;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_USERDATA_REMOUNT;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_USERSPACE_REBOOT_WATCHDOG_TRIGGERED;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__OUTCOME__OUTCOME_UNKNOWN;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__OUTCOME__SUCCESS;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__LOCKED;
+import static com.android.internal.util.FrameworkStatsLog.USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__UNLOCKED;
+
+import android.os.SystemClock;
+import android.os.SystemProperties;
+import android.util.Slog;
+
+import com.android.internal.util.FrameworkStatsLog;
+
+import java.util.concurrent.Executor;
+
+/**
+ * Utility class to help abstract logging {@code UserspaceRebootReported} atom.
+ */
+public final class UserspaceRebootLogger {
+
+    private static final String TAG = "UserspaceRebootLogger";
+
+    private static final String USERSPACE_REBOOT_SHOULD_LOG_PROPERTY =
+            "persist.sys.userspace_reboot.log.should_log";
+    private static final String USERSPACE_REBOOT_LAST_STARTED_PROPERTY =
+            "sys.userspace_reboot.log.last_started";
+    private static final String USERSPACE_REBOOT_LAST_FINISHED_PROPERTY =
+            "sys.userspace_reboot.log.last_finished";
+    private static final String BOOT_REASON_PROPERTY = "sys.boot.reason";
+
+    private UserspaceRebootLogger() {}
+
+    /**
+     * Modifies internal state to note that {@code UserspaceRebootReported} atom needs to be
+     * logged on the next successful boot.
+     */
+    public static void noteUserspaceRebootWasRequested() {
+        SystemProperties.set(USERSPACE_REBOOT_SHOULD_LOG_PROPERTY, "1");
+        SystemProperties.set(USERSPACE_REBOOT_LAST_STARTED_PROPERTY,
+                String.valueOf(SystemClock.elapsedRealtime()));
+    }
+
+    /**
+     * Updates internal state on boot after successful userspace reboot.
+     *
+     * <p>Should be called right before framework sets {@code sys.boot_completed} property.
+     */
+    public static void noteUserspaceRebootSuccess() {
+        SystemProperties.set(USERSPACE_REBOOT_LAST_FINISHED_PROPERTY,
+                String.valueOf(SystemClock.elapsedRealtime()));
+    }
+
+    /**
+     * Returns {@code true} if {@code UserspaceRebootReported} atom should be logged.
+     */
+    public static boolean shouldLogUserspaceRebootEvent() {
+        return SystemProperties.getBoolean(USERSPACE_REBOOT_SHOULD_LOG_PROPERTY, false);
+    }
+
+    /**
+     * Asynchronously logs {@code UserspaceRebootReported} on the given {@code executor}.
+     *
+     * <p>Should be called in the end of {@link
+     * com.android.server.am.ActivityManagerService#finishBooting()} method, after framework have
+     * tried to proactivelly unlock storage of the primary user.
+     */
+    public static void logEventAsync(boolean userUnlocked, Executor executor) {
+        final int outcome = computeOutcome();
+        final long durationMillis;
+        if (outcome == USERSPACE_REBOOT_REPORTED__OUTCOME__SUCCESS) {
+            durationMillis = SystemProperties.getLong(USERSPACE_REBOOT_LAST_FINISHED_PROPERTY, 0)
+                    - SystemProperties.getLong(USERSPACE_REBOOT_LAST_STARTED_PROPERTY, 0);
+        } else {
+            durationMillis = 0;
+        }
+        final int encryptionState =
+                userUnlocked
+                    ? USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__UNLOCKED
+                    : USERSPACE_REBOOT_REPORTED__USER_ENCRYPTION_STATE__LOCKED;
+        executor.execute(
+                () -> {
+                    Slog.i(TAG, "Logging UserspaceRebootReported atom: { outcome: " + outcome
+                            + " durationMillis: " + durationMillis + " encryptionState: "
+                            + encryptionState + " }");
+                    FrameworkStatsLog.write(FrameworkStatsLog.USERSPACE_REBOOT_REPORTED, outcome,
+                            durationMillis, encryptionState);
+                    SystemProperties.set(USERSPACE_REBOOT_SHOULD_LOG_PROPERTY, "");
+                });
+    }
+
+    private static int computeOutcome() {
+        if (SystemProperties.getLong(USERSPACE_REBOOT_LAST_STARTED_PROPERTY, -1) != -1) {
+            return USERSPACE_REBOOT_REPORTED__OUTCOME__SUCCESS;
+        }
+        String reason = SystemProperties.get(BOOT_REASON_PROPERTY, "");
+        if (reason.startsWith("reboot,")) {
+            reason = reason.substring("reboot".length());
+        }
+        switch (reason) {
+            case "userspace_failed,watchdog_fork":
+                // Since fork happens before shutdown sequence, attribute it to
+                // USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_SHUTDOWN_SEQUENCE_ABORTED.
+            case "userspace_failed,shutdown_aborted":
+                return USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_SHUTDOWN_SEQUENCE_ABORTED;
+            case "userspace_failed,init_user0_failed":
+                // init_user0 will fail if userdata wasn't remounted correctly, attribute to
+                // USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_USERDATA_REMOUNT.
+            case "mount_userdata_failed":
+                return USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_USERDATA_REMOUNT;
+            case "userspace_failed,watchdog_triggered":
+                return
+                    USERSPACE_REBOOT_REPORTED__OUTCOME__FAILED_USERSPACE_REBOOT_WATCHDOG_TRIGGERED;
+            default:
+                return USERSPACE_REBOOT_REPORTED__OUTCOME__OUTCOME_UNKNOWN;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/VibratorService.java b/services/core/java/com/android/server/VibratorService.java
index 6bc090a..0f1a652 100644
--- a/services/core/java/com/android/server/VibratorService.java
+++ b/services/core/java/com/android/server/VibratorService.java
@@ -42,11 +42,13 @@
 import android.os.IBinder;
 import android.os.IExternalVibratorService;
 import android.os.IVibratorService;
+import android.os.IVibratorStateListener;
 import android.os.PowerManager;
 import android.os.PowerManager.ServiceType;
 import android.os.PowerManagerInternal;
 import android.os.PowerSaveState;
 import android.os.Process;
+import android.os.RemoteCallbackList;
 import android.os.RemoteException;
 import android.os.ResultReceiver;
 import android.os.ServiceManager;
@@ -59,18 +61,18 @@
 import android.os.VibrationEffect;
 import android.os.Vibrator;
 import android.os.WorkSource;
-import android.provider.DeviceConfig;
 import android.provider.Settings;
 import android.provider.Settings.SettingNotFoundException;
 import android.util.DebugUtils;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
+import android.util.proto.ProtoOutputStream;
 import android.view.InputDevice;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -85,7 +87,6 @@
     private static final String TAG = "VibratorService";
     private static final boolean DEBUG = false;
     private static final String EXTERNAL_VIBRATOR_SERVICE = "external_vibrator_service";
-    private static final String RAMPING_RINGER_ENABLED = "ramping_ringer_enabled";
 
     private static final long[] DOUBLE_CLICK_EFFECT_FALLBACK_TIMINGS = { 0, 30, 100, 30 };
 
@@ -165,6 +166,11 @@
     private ExternalVibration mCurrentExternalVibration;
     private boolean mVibratorUnderExternalControl;
     private boolean mLowPowerMode;
+    @GuardedBy("mLock")
+    private boolean mIsVibrating;
+    @GuardedBy("mLock")
+    private final RemoteCallbackList<IVibratorStateListener> mVibratorStateListeners =
+                new RemoteCallbackList<>();
     private int mHapticFeedbackIntensity;
     private int mNotificationIntensity;
     private int mRingIntensity;
@@ -327,6 +333,14 @@
                     .append(mReason)
                     .toString();
         }
+
+        void dumpProto(ProtoOutputStream proto, long fieldId) {
+            synchronized (this) {
+                final long token = proto.start(fieldId);
+                proto.write(VibrationProto.START_TIME, mStartTimeDebug);
+                proto.end(token);
+            }
+        }
     }
 
     private static final class ScaleLevel {
@@ -512,6 +526,75 @@
     }
 
     @Override // Binder call
+    public boolean isVibrating() {
+        if (!hasPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)) {
+            throw new SecurityException("Requires ACCESS_VIBRATOR_STATE permission");
+        }
+        synchronized (mLock) {
+            return mIsVibrating;
+        }
+    }
+
+    @GuardedBy("mLock")
+    private void notifyStateListenerLocked(IVibratorStateListener listener) {
+        try {
+            listener.onVibrating(mIsVibrating);
+        } catch (RemoteException | RuntimeException e) {
+            Slog.e(TAG, "Vibrator callback failed to call", e);
+        }
+    }
+
+    @GuardedBy("mLock")
+    private void notifyStateListenersLocked() {
+        final int length = mVibratorStateListeners.beginBroadcast();
+        try {
+            for (int i = 0; i < length; i++) {
+                final IVibratorStateListener listener =
+                        mVibratorStateListeners.getBroadcastItem(i);
+                notifyStateListenerLocked(listener);
+            }
+        } finally {
+            mVibratorStateListeners.finishBroadcast();
+        }
+    }
+
+    @Override // Binder call
+    public boolean registerVibratorStateListener(IVibratorStateListener listener) {
+        if (!hasPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)) {
+            throw new SecurityException("Requires ACCESS_VIBRATOR_STATE permission");
+        }
+        synchronized (mLock) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                if (!mVibratorStateListeners.register(listener)) {
+                    return false;
+                }
+                // Notify its callback after new client registered.
+                notifyStateListenerLocked(listener);
+                return true;
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+    }
+
+    @Override // Binder call
+    @GuardedBy("mLock")
+    public boolean unregisterVibratorStateListener(IVibratorStateListener listener) {
+        if (!hasPermission(android.Manifest.permission.ACCESS_VIBRATOR_STATE)) {
+            throw new SecurityException("Requires ACCESS_VIBRATOR_STATE permission");
+        }
+        synchronized (mLock) {
+            final long token = Binder.clearCallingIdentity();
+            try {
+                return mVibratorStateListeners.unregister(listener);
+            } finally {
+                Binder.restoreCallingIdentity(token);
+            }
+        }
+    }
+
+    @Override // Binder call
     public boolean hasAmplitudeControl() {
         synchronized (mInputDeviceVibrators) {
             // Input device vibrators don't support amplitude controls yet, but are still used over
@@ -967,9 +1050,7 @@
                 mContext.getContentResolver(), Settings.System.VIBRATE_WHEN_RINGING, 0) != 0) {
             return ringerMode != AudioManager.RINGER_MODE_SILENT;
         } else if (Settings.Global.getInt(
-                    mContext.getContentResolver(), Settings.Global.APPLY_RAMPING_RINGER, 0) != 0
-                && DeviceConfig.getBoolean(
-                    DeviceConfig.NAMESPACE_TELEPHONY, RAMPING_RINGER_ENABLED, false)) {
+                    mContext.getContentResolver(), Settings.Global.APPLY_RAMPING_RINGER, 0) != 0) {
             return ringerMode != AudioManager.RINGER_MODE_SILENT;
         } else {
             return ringerMode == AudioManager.RINGER_MODE_VIBRATE;
@@ -1360,9 +1441,13 @@
     private void noteVibratorOnLocked(int uid, long millis) {
         try {
             mBatteryStatsService.noteVibratorOn(uid, millis);
-            StatsLog.write_non_chained(StatsLog.VIBRATOR_STATE_CHANGED, uid, null,
-                    StatsLog.VIBRATOR_STATE_CHANGED__STATE__ON, millis);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.VIBRATOR_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.VIBRATOR_STATE_CHANGED__STATE__ON, millis);
             mCurVibUid = uid;
+            if (!mIsVibrating) {
+                mIsVibrating = true;
+                notifyStateListenersLocked();
+            }
         } catch (RemoteException e) {
         }
     }
@@ -1371,11 +1456,15 @@
         if (mCurVibUid >= 0) {
             try {
                 mBatteryStatsService.noteVibratorOff(mCurVibUid);
-                StatsLog.write_non_chained(StatsLog.VIBRATOR_STATE_CHANGED, mCurVibUid, null,
-                        StatsLog.VIBRATOR_STATE_CHANGED__STATE__OFF, 0);
+                FrameworkStatsLog.write_non_chained(FrameworkStatsLog.VIBRATOR_STATE_CHANGED,
+                        mCurVibUid, null, FrameworkStatsLog.VIBRATOR_STATE_CHANGED__STATE__OFF, 0);
             } catch (RemoteException e) { }
             mCurVibUid = -1;
         }
+        if (mIsVibrating) {
+            mIsVibrating = false;
+            notifyStateListenersLocked();
+        }
     }
 
     private void setVibratorUnderExternalControl(boolean externalControl) {
@@ -1390,6 +1479,95 @@
         vibratorSetExternalControl(externalControl);
     }
 
+    private void dumpInternal(PrintWriter pw) {
+        pw.println("Vibrator Service:");
+        synchronized (mLock) {
+            pw.print("  mCurrentVibration=");
+            if (mCurrentVibration != null) {
+                pw.println(mCurrentVibration.toInfo().toString());
+            } else {
+                pw.println("null");
+            }
+            pw.print("  mCurrentExternalVibration=" + mCurrentExternalVibration);
+            pw.println("  mVibratorUnderExternalControl=" + mVibratorUnderExternalControl);
+            pw.println("  mIsVibrating=" + mIsVibrating);
+            pw.println("  mVibratorStateListeners Count=" +
+                            mVibratorStateListeners.getRegisteredCallbackCount());
+            pw.println("  mLowPowerMode=" + mLowPowerMode);
+            pw.println("  mHapticFeedbackIntensity=" + mHapticFeedbackIntensity);
+            pw.println("  mNotificationIntensity=" + mNotificationIntensity);
+            pw.println("  mRingIntensity=" + mRingIntensity);
+            pw.println("  mSupportedEffects=" + mSupportedEffects);
+            pw.println();
+            pw.println("  Previous ring vibrations:");
+            for (VibrationInfo info : mPreviousRingVibrations) {
+                pw.print("    ");
+                pw.println(info.toString());
+            }
+
+            pw.println("  Previous notification vibrations:");
+            for (VibrationInfo info : mPreviousNotificationVibrations) {
+                pw.println("    " + info);
+            }
+
+            pw.println("  Previous alarm vibrations:");
+            for (VibrationInfo info : mPreviousAlarmVibrations) {
+                pw.println("    " + info);
+            }
+
+            pw.println("  Previous vibrations:");
+            for (VibrationInfo info : mPreviousVibrations) {
+                pw.println("    " + info);
+            }
+
+            pw.println("  Previous external vibrations:");
+            for (ExternalVibration vib : mPreviousExternalVibrations) {
+                pw.println("    " + vib);
+            }
+        }
+    }
+
+    private void dumpProto(FileDescriptor fd) {
+        final ProtoOutputStream proto = new ProtoOutputStream(fd);
+
+        synchronized (mLock) {
+            if (mCurrentVibration != null) {
+                mCurrentVibration.toInfo().dumpProto(proto,
+                    VibratorServiceDumpProto.CURRENT_VIBRATION);
+            }
+            proto.write(VibratorServiceDumpProto.IS_VIBRATING, mIsVibrating);
+            proto.write(VibratorServiceDumpProto.VIBRATOR_UNDER_EXTERNAL_CONTROL,
+                mVibratorUnderExternalControl);
+            proto.write(VibratorServiceDumpProto.LOW_POWER_MODE, mLowPowerMode);
+            proto.write(VibratorServiceDumpProto.HAPTIC_FEEDBACK_INTENSITY,
+                mHapticFeedbackIntensity);
+            proto.write(VibratorServiceDumpProto.NOTIFICATION_INTENSITY,
+                mNotificationIntensity);
+            proto.write(VibratorServiceDumpProto.RING_INTENSITY, mRingIntensity);
+
+            for (VibrationInfo info : mPreviousRingVibrations) {
+                info.dumpProto(proto,
+                    VibratorServiceDumpProto.PREVIOUS_RING_VIBRATIONS);
+            }
+
+            for (VibrationInfo info : mPreviousNotificationVibrations) {
+                info.dumpProto(proto,
+                    VibratorServiceDumpProto.PREVIOUS_NOTIFICATION_VIBRATIONS);
+            }
+
+            for (VibrationInfo info : mPreviousAlarmVibrations) {
+                info.dumpProto(proto,
+                    VibratorServiceDumpProto.PREVIOUS_ALARM_VIBRATIONS);
+            }
+
+            for (VibrationInfo info : mPreviousVibrations) {
+                info.dumpProto(proto,
+                    VibratorServiceDumpProto.PREVIOUS_VIBRATIONS);
+            }
+        }
+        proto.flush();
+    }
+
     private class VibrateThread extends Thread {
         private final VibrationEffect.Waveform mWaveform;
         private final int mUid;
@@ -1556,47 +1734,22 @@
     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
         if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
 
-        pw.println("Vibrator Service:");
-        synchronized (mLock) {
-            pw.print("  mCurrentVibration=");
-            if (mCurrentVibration != null) {
-                pw.println(mCurrentVibration.toInfo().toString());
+        final long ident = Binder.clearCallingIdentity();
+
+        boolean isDumpProto = false;
+        for (String arg : args) {
+            if (arg.equals("--proto")) {
+                isDumpProto = true;
+            }
+        }
+        try {
+            if (isDumpProto) {
+                dumpProto(fd);
             } else {
-                pw.println("null");
+                dumpInternal(pw);
             }
-            pw.print("  mCurrentExternalVibration=" + mCurrentExternalVibration);
-            pw.println("  mVibratorUnderExternalControl=" + mVibratorUnderExternalControl);
-            pw.println("  mLowPowerMode=" + mLowPowerMode);
-            pw.println("  mHapticFeedbackIntensity=" + mHapticFeedbackIntensity);
-            pw.println("  mNotificationIntensity=" + mNotificationIntensity);
-            pw.println("  mRingIntensity=" + mRingIntensity);
-            pw.println("  mSupportedEffects=" + mSupportedEffects);
-            pw.println();
-            pw.println("  Previous ring vibrations:");
-            for (VibrationInfo info : mPreviousRingVibrations) {
-                pw.print("    ");
-                pw.println(info.toString());
-            }
-
-            pw.println("  Previous notification vibrations:");
-            for (VibrationInfo info : mPreviousNotificationVibrations) {
-                pw.println("    " + info);
-            }
-
-            pw.println("  Previous alarm vibrations:");
-            for (VibrationInfo info : mPreviousAlarmVibrations) {
-                pw.println("    " + info);
-            }
-
-            pw.println("  Previous vibrations:");
-            for (VibrationInfo info : mPreviousVibrations) {
-                pw.println("    " + info);
-            }
-
-            pw.println("  Previous external vibrations:");
-            for (ExternalVibration vib : mPreviousExternalVibrations) {
-                pw.println("    " + vib);
-            }
+        } finally {
+            Binder.restoreCallingIdentity(ident);
         }
     }
 
diff --git a/services/core/java/com/android/server/Watchdog.java b/services/core/java/com/android/server/Watchdog.java
index a60b09f..a1ccd84 100644
--- a/services/core/java/com/android/server/Watchdog.java
+++ b/services/core/java/com/android/server/Watchdog.java
@@ -40,10 +40,10 @@
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
 
 import com.android.internal.os.ProcessCpuTracker;
 import com.android.internal.os.ZygoteConnectionConstants;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.am.ActivityManagerService;
 import com.android.server.wm.SurfaceAnimationThread;
 
@@ -636,7 +636,8 @@
                                     "watchdog", null, "system_server", null, null, null,
                                     subject, cpuInfo, stack, null);
                         }
-                        StatsLog.write(StatsLog.SYSTEM_SERVER_WATCHDOG_OCCURRED, subject);
+                        FrameworkStatsLog.write(FrameworkStatsLog.SYSTEM_SERVER_WATCHDOG_OCCURRED,
+                                subject);
                     }
                 };
             dropboxThread.start();
diff --git a/services/core/java/com/android/server/adb/AdbDebuggingManager.java b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
index 143474b..1099413 100644
--- a/services/core/java/com/android/server/adb/AdbDebuggingManager.java
+++ b/services/core/java/com/android/server/adb/AdbDebuggingManager.java
@@ -46,12 +46,12 @@
 import android.util.AtomicFile;
 import android.util.Base64;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.Xml;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.XmlUtils;
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.server.FgThread;
@@ -493,8 +493,8 @@
                     "Logging key " + key + ", state = " + state + ", alwaysAllow = " + alwaysAllow
                             + ", lastConnectionTime = " + lastConnectionTime + ", authWindow = "
                             + authWindow);
-            StatsLog.write(StatsLog.ADB_CONNECTION_CHANGED, lastConnectionTime, authWindow, state,
-                    alwaysAllow);
+            FrameworkStatsLog.write(FrameworkStatsLog.ADB_CONNECTION_CHANGED, lastConnectionTime,
+                    authWindow, state, alwaysAllow);
         }
 
 
diff --git a/services/core/java/com/android/server/am/ActiveServices.java b/services/core/java/com/android/server/am/ActiveServices.java
index ffeea3d..97b5eaa 100644
--- a/services/core/java/com/android/server/am/ActiveServices.java
+++ b/services/core/java/com/android/server/am/ActiveServices.java
@@ -19,12 +19,8 @@
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_LOCATION;
 import static android.content.pm.ServiceInfo.FOREGROUND_SERVICE_TYPE_MANIFEST;
-import static android.os.Process.BLUETOOTH_UID;
-import static android.os.Process.NETWORK_STACK_UID;
 import static android.os.Process.NFC_UID;
-import static android.os.Process.PHONE_UID;
 import static android.os.Process.ROOT_UID;
-import static android.os.Process.SE_UID;
 import static android.os.Process.SYSTEM_UID;
 
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_BACKGROUND_CHECK;
@@ -89,7 +85,6 @@
 import android.util.PrintWriterPrinter;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 import android.webkit.WebViewZygote;
@@ -103,6 +98,7 @@
 import com.android.internal.os.TransferPipe;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastPrintWriter;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.AppStateTracker;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
@@ -421,22 +417,23 @@
     }
 
     private boolean appRestrictedAnyInBackground(final int uid, final String packageName) {
-        final int mode = mAm.mAppOpsService.checkOperation(
+        final int mode = mAm.getAppOpsManager().checkOpNoThrow(
                 AppOpsManager.OP_RUN_ANY_IN_BACKGROUND, uid, packageName);
         return (mode != AppOpsManager.MODE_ALLOWED);
     }
 
     ComponentName startServiceLocked(IApplicationThread caller, Intent service, String resolvedType,
-            int callingPid, int callingUid, boolean fgRequired, String callingPackage, final int userId)
+            int callingPid, int callingUid, boolean fgRequired, String callingPackage,
+            @Nullable String callingFeatureId, final int userId)
             throws TransactionTooLargeException {
         return startServiceLocked(caller, service, resolvedType, callingPid, callingUid, fgRequired,
-                callingPackage, userId, false);
+                callingPackage, callingFeatureId, userId, false);
     }
 
     ComponentName startServiceLocked(IApplicationThread caller, Intent service, String resolvedType,
             int callingPid, int callingUid, boolean fgRequired, String callingPackage,
-            final int userId, boolean allowBackgroundActivityStarts)
-            throws TransactionTooLargeException {
+            @Nullable String callingFeatureId, final int userId,
+            boolean allowBackgroundActivityStarts) throws TransactionTooLargeException {
         if (DEBUG_DELAYED_STARTS) Slog.v(TAG_SERVICE, "startService: " + service
                 + " type=" + resolvedType + " args=" + service.getExtras());
 
@@ -492,7 +489,7 @@
         // If this is a direct-to-foreground start, make sure it is allowed as per the app op.
         boolean forceSilentAbort = false;
         if (fgRequired) {
-            final int mode = mAm.mAppOpsService.checkOperation(
+            final int mode = mAm.getAppOpsManager().checkOpNoThrow(
                     AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName);
             switch (mode) {
                 case AppOpsManager.MODE_ALLOWED:
@@ -570,7 +567,7 @@
         // review is completed.
 
         // XXX This is not dealing with fgRequired!
-        if (!requestStartTargetPermissionsReviewIfNeededLocked(r, callingPackage,
+        if (!requestStartTargetPermissionsReviewIfNeededLocked(r, callingPackage, callingFeatureId,
                 callingUid, service, callerFg, userId)) {
             return null;
         }
@@ -677,8 +674,8 @@
     }
 
     private boolean requestStartTargetPermissionsReviewIfNeededLocked(ServiceRecord r,
-            String callingPackage, int callingUid, Intent service, boolean callerFg,
-            final int userId) {
+            String callingPackage, @Nullable String callingFeatureId, int callingUid,
+            Intent service, boolean callerFg, final int userId) {
         if (mAm.getPackageManagerInternalLocked().isPermissionsReviewRequired(
                 r.packageName, r.userId)) {
 
@@ -690,7 +687,7 @@
             }
 
             IIntentSender target = mAm.mPendingIntentController.getIntentSender(
-                    ActivityManager.INTENT_SENDER_SERVICE, callingPackage,
+                    ActivityManager.INTENT_SENDER_SERVICE, callingPackage, callingFeatureId,
                     callingUid, userId, null, null, 0, new Intent[]{service},
                     new String[]{service.resolveType(mAm.mContext.getContentResolver())},
                     PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT
@@ -728,8 +725,9 @@
             stracker.setStarted(true, mAm.mProcessStats.getMemFactorLocked(), r.lastActivity);
         }
         r.callStart = false;
-        StatsLog.write(StatsLog.SERVICE_STATE_CHANGED, r.appInfo.uid, r.name.getPackageName(),
-                r.name.getClassName(), StatsLog.SERVICE_STATE_CHANGED__STATE__START);
+        FrameworkStatsLog.write(FrameworkStatsLog.SERVICE_STATE_CHANGED, r.appInfo.uid,
+                r.name.getPackageName(), r.name.getClassName(),
+                FrameworkStatsLog.SERVICE_STATE_CHANGED__STATE__START);
         synchronized (r.stats.getBatteryStats()) {
             r.stats.startRunningLocked();
         }
@@ -768,9 +766,9 @@
             service.delayedStop = true;
             return;
         }
-        StatsLog.write(StatsLog.SERVICE_STATE_CHANGED, service.appInfo.uid,
+        FrameworkStatsLog.write(FrameworkStatsLog.SERVICE_STATE_CHANGED, service.appInfo.uid,
                 service.name.getPackageName(), service.name.getClassName(),
-                StatsLog.SERVICE_STATE_CHANGED__STATE__STOP);
+                FrameworkStatsLog.SERVICE_STATE_CHANGED__STATE__STOP);
         synchronized (service.stats.getBatteryStats()) {
             service.stats.stopRunningLocked();
         }
@@ -929,8 +927,9 @@
                 }
             }
 
-            StatsLog.write(StatsLog.SERVICE_STATE_CHANGED, r.appInfo.uid, r.name.getPackageName(),
-                    r.name.getClassName(), StatsLog.SERVICE_STATE_CHANGED__STATE__STOP);
+            FrameworkStatsLog.write(FrameworkStatsLog.SERVICE_STATE_CHANGED, r.appInfo.uid,
+                    r.name.getPackageName(), r.name.getClassName(),
+                    FrameworkStatsLog.SERVICE_STATE_CHANGED__STATE__STOP);
             synchronized (r.stats.getBatteryStats()) {
                 r.stats.stopRunningLocked();
             }
@@ -1289,7 +1288,7 @@
             }
             // Instant apps need permission to create foreground services.
             if (r.appInfo.isInstantApp()) {
-                final int mode = mAm.mAppOpsService.checkOperation(
+                final int mode = mAm.getAppOpsManager().checkOpNoThrow(
                         AppOpsManager.OP_INSTANT_APP_START_FOREGROUND,
                         r.appInfo.uid,
                         r.appInfo.packageName);
@@ -1356,7 +1355,7 @@
 
             try {
                 boolean ignoreForeground = false;
-                final int mode = mAm.mAppOpsService.checkOperation(
+                final int mode = mAm.getAppOpsManager().checkOpNoThrow(
                         AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName);
                 switch (mode) {
                     case AppOpsManager.MODE_ALLOWED:
@@ -1435,9 +1434,9 @@
                                 AppOpsManager.getToken(mAm.mAppOpsService),
                                 AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName,
                                 null, true, false, "");
-                        StatsLog.write(StatsLog.FOREGROUND_SERVICE_STATE_CHANGED,
+                        FrameworkStatsLog.write(FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED,
                                 r.appInfo.uid, r.shortInstanceName,
-                                StatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER);
+                                FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__ENTER);
                         mAm.updateForegroundServiceUsageStats(r.name, r.userId, true);
                     }
                     r.postNotification();
@@ -1486,9 +1485,9 @@
                 mAm.mAppOpsService.finishOperation(
                         AppOpsManager.getToken(mAm.mAppOpsService),
                         AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName, null);
-                StatsLog.write(StatsLog.FOREGROUND_SERVICE_STATE_CHANGED,
+                FrameworkStatsLog.write(FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED,
                         r.appInfo.uid, r.shortInstanceName,
-                        StatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT);
+                        FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT);
                 mAm.updateForegroundServiceUsageStats(r.name, r.userId, false);
                 if (r.app != null) {
                     mAm.updateLruProcessLocked(r.app, false, null);
@@ -2291,7 +2290,7 @@
                 return new ServiceLookupResult(null, r.permission);
             } else if (r.permission != null && callingPackage != null) {
                 final int opCode = AppOpsManager.permissionToOpCode(r.permission);
-                if (opCode != AppOpsManager.OP_NONE && mAm.mAppOpsService.checkOperation(
+                if (opCode != AppOpsManager.OP_NONE && mAm.getAppOpsManager().checkOpNoThrow(
                         opCode, callingUid, callingPackage) != AppOpsManager.MODE_ALLOWED) {
                     Slog.w(TAG, "Appop Denial: Accessing service " + r.shortInstanceName
                             + " from pid=" + callingPid
@@ -2772,8 +2771,8 @@
                 EventLogTags.writeAmCreateService(
                         r.userId, System.identityHashCode(r), nameTerm, r.app.uid, r.app.pid);
             }
-            StatsLog.write(StatsLog.SERVICE_LAUNCH_REPORTED, r.appInfo.uid, r.name.getPackageName(),
-                    r.name.getClassName());
+            FrameworkStatsLog.write(FrameworkStatsLog.SERVICE_LAUNCH_REPORTED, r.appInfo.uid,
+                    r.name.getPackageName(), r.name.getClassName());
             synchronized (r.stats.getBatteryStats()) {
                 r.stats.startLaunchedLocked();
             }
@@ -3101,8 +3100,9 @@
             mAm.mAppOpsService.finishOperation(
                     AppOpsManager.getToken(mAm.mAppOpsService),
                     AppOpsManager.OP_START_FOREGROUND, r.appInfo.uid, r.packageName, null);
-            StatsLog.write(StatsLog.FOREGROUND_SERVICE_STATE_CHANGED, r.appInfo.uid,
-                    r.shortInstanceName, StatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT);
+            FrameworkStatsLog.write(FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED,
+                    r.appInfo.uid, r.shortInstanceName,
+                    FrameworkStatsLog.FOREGROUND_SERVICE_STATE_CHANGED__STATE__EXIT);
             mAm.updateForegroundServiceUsageStats(r.name, r.userId, false);
         }
 
diff --git a/services/core/java/com/android/server/am/ActivityManagerConstants.java b/services/core/java/com/android/server/am/ActivityManagerConstants.java
index 8451d6b..fabe92db 100644
--- a/services/core/java/com/android/server/am/ActivityManagerConstants.java
+++ b/services/core/java/com/android/server/am/ActivityManagerConstants.java
@@ -58,6 +58,8 @@
     private static final String KEY_CONTENT_PROVIDER_RETAIN_TIME = "content_provider_retain_time";
     private static final String KEY_GC_TIMEOUT = "gc_timeout";
     private static final String KEY_GC_MIN_INTERVAL = "gc_min_interval";
+    private static final String KEY_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS =
+            "force_bg_check_on_restricted";
     private static final String KEY_FULL_PSS_MIN_INTERVAL = "full_pss_min_interval";
     private static final String KEY_FULL_PSS_LOWERED_INTERVAL = "full_pss_lowered_interval";
     private static final String KEY_POWER_CHECK_INTERVAL = "power_check_interval";
@@ -96,6 +98,7 @@
     private static final long DEFAULT_GC_TIMEOUT = 5*1000;
     private static final long DEFAULT_GC_MIN_INTERVAL = 60*1000;
     private static final long DEFAULT_FULL_PSS_MIN_INTERVAL = 20*60*1000;
+    private static final boolean DEFAULT_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS = true;
     private static final long DEFAULT_FULL_PSS_LOWERED_INTERVAL = 5*60*1000;
     private static final long DEFAULT_POWER_CHECK_INTERVAL = (DEBUG_POWER_QUICK ? 1 : 5) * 60*1000;
     private static final int DEFAULT_POWER_CHECK_MAX_CPU_1 = 25;
@@ -177,6 +180,14 @@
     // The minimum amount of time between successive GC requests for a process.
     long GC_MIN_INTERVAL = DEFAULT_GC_MIN_INTERVAL;
 
+    /**
+     * Whether or not Background Check should be forced on any apps in the
+     * {@link android.app.usage.UsageStatsManager#STANDBY_BUCKET_RESTRICTED} bucket,
+     * regardless of target SDK version.
+     */
+    boolean FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS =
+            DEFAULT_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS;
+
     // The minimum amount of time between successive PSS requests for a process.
     long FULL_PSS_MIN_INTERVAL = DEFAULT_FULL_PSS_MIN_INTERVAL;
 
@@ -276,7 +287,7 @@
     // When the restriction is enabled, foreground service started from background will not have
     // while-in-use permissions like location, camera and microphone. (The foreground service can be
     // started, the restriction is on while-in-use permissions.)
-    volatile boolean mFlagBackgroundFgsStartRestrictionEnabled;
+    volatile boolean mFlagBackgroundFgsStartRestrictionEnabled = true;
 
     private final ActivityManagerService mService;
     private ContentResolver mResolver;
@@ -293,18 +304,19 @@
     // we have no limit on the number of service, visible, foreground, or other such
     // processes and the number of those processes does not count against the cached
     // process limit.
-    public int CUR_MAX_CACHED_PROCESSES;
+    public int CUR_MAX_CACHED_PROCESSES = DEFAULT_MAX_CACHED_PROCESSES;
 
     // The maximum number of empty app processes we will let sit around.
-    public int CUR_MAX_EMPTY_PROCESSES;
+    public int CUR_MAX_EMPTY_PROCESSES = computeEmptyProcessLimit(CUR_MAX_CACHED_PROCESSES);
 
     // The number of empty apps at which we don't consider it necessary to do
     // memory trimming.
-    public int CUR_TRIM_EMPTY_PROCESSES;
+    public int CUR_TRIM_EMPTY_PROCESSES = computeEmptyProcessLimit(MAX_CACHED_PROCESSES) / 2;
 
     // The number of cached at which we don't consider it necessary to do
     // memory trimming.
-    public int CUR_TRIM_CACHED_PROCESSES;
+    public int CUR_TRIM_CACHED_PROCESSES =
+            (MAX_CACHED_PROCESSES - computeEmptyProcessLimit(MAX_CACHED_PROCESSES)) / 3;
 
     /**
      * Packages that can't be killed even if it's requested to be killed on imperceptible.
@@ -380,6 +392,9 @@
                             case KEY_IMPERCEPTIBLE_KILL_EXEMPT_PROC_STATES:
                                 updateImperceptibleKillExemptions();
                                 break;
+                            case KEY_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS:
+                                updateForceRestrictedBackgroundCheck();
+                                break;
                             default:
                                 break;
                         }
@@ -405,6 +420,8 @@
                 context.getResources().getIntArray(
                 com.android.internal.R.array.config_defaultImperceptibleKillingExemptionProcStates))
                 .boxed().collect(Collectors.toList());
+        IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages);
+        IMPERCEPTIBLE_KILL_EXEMPT_PROC_STATES.addAll(mDefaultImperceptibleKillExemptProcStates);
     }
 
     public void start(ContentResolver resolver) {
@@ -424,13 +441,15 @@
         DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
                 ActivityThread.currentApplication().getMainExecutor(),
                 mOnDeviceConfigChangedListener);
-        updateMaxCachedProcesses();
+        loadDeviceConfigConstants();
+        // The following read from Settings.
         updateActivityStartsLoggingEnabled();
-        updateBackgroundActivityStarts();
         updateForegroundServiceStartsLoggingEnabled();
-        updateBackgroundFgsStartsRestriction();
-        updateOomAdjUpdatePolicy();
-        updateImperceptibleKillExemptions();
+    }
+
+    private void loadDeviceConfigConstants() {
+        mOnDeviceConfigChangedListener.onPropertiesChanged(
+                DeviceConfig.getProperties(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER));
     }
 
     public void setOverrideMaxCachedProcesses(int value) {
@@ -534,8 +553,6 @@
 
             // For new flags that are intended for server-side experiments, please use the new
             // DeviceConfig package.
-
-            updateMaxCachedProcesses();
         }
     }
 
@@ -564,6 +581,9 @@
     }
 
     private void updateOomAdjUpdatePolicy() {
+
+
+
         OOMADJ_UPDATE_QUICK = DeviceConfig.getInt(
                 DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
                 KEY_OOMADJ_UPDATE_POLICY,
@@ -571,6 +591,13 @@
                 == OOMADJ_UPDATE_POLICY_QUICK;
     }
 
+    private void updateForceRestrictedBackgroundCheck() {
+        FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS = DeviceConfig.getBoolean(
+                DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                KEY_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS,
+                DEFAULT_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS);
+    }
+
     private void updateImperceptibleKillExemptions() {
         IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.clear();
         IMPERCEPTIBLE_KILL_EXEMPT_PACKAGES.addAll(mDefaultImperceptibleKillExemptPackages);
@@ -658,6 +685,8 @@
         pw.println(GC_TIMEOUT);
         pw.print("  "); pw.print(KEY_GC_MIN_INTERVAL); pw.print("=");
         pw.println(GC_MIN_INTERVAL);
+        pw.print("  "); pw.print(KEY_FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS); pw.print("=");
+        pw.println(FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS);
         pw.print("  "); pw.print(KEY_FULL_PSS_MIN_INTERVAL); pw.print("=");
         pw.println(FULL_PSS_MIN_INTERVAL);
         pw.print("  "); pw.print(KEY_FULL_PSS_LOWERED_INTERVAL); pw.print("=");
diff --git a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java
index b19a37e..f872c6b 100644
--- a/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java
+++ b/services/core/java/com/android/server/am/ActivityManagerDebugConfig.java
@@ -50,7 +50,7 @@
     static final boolean DEBUG_BROADCAST_LIGHT = DEBUG_BROADCAST || false;
     static final boolean DEBUG_BROADCAST_DEFERRAL = DEBUG_BROADCAST || false;
     static final boolean DEBUG_COMPACTION = DEBUG_ALL || false;
-    static final boolean DEBUG_FREEZER = DEBUG_ALL || false;
+    static final boolean DEBUG_FREEZER = DEBUG_ALL || true;
     static final boolean DEBUG_LRU = DEBUG_ALL || false;
     static final boolean DEBUG_MU = DEBUG_ALL || false;
     static final boolean DEBUG_NETWORK = DEBUG_ALL || false;
diff --git a/services/core/java/com/android/server/am/ActivityManagerService.java b/services/core/java/com/android/server/am/ActivityManagerService.java
index 4c5f705..ad550c5 100644
--- a/services/core/java/com/android/server/am/ActivityManagerService.java
+++ b/services/core/java/com/android/server/am/ActivityManagerService.java
@@ -184,6 +184,7 @@
 import android.app.backup.IBackupManager;
 import android.app.usage.UsageEvents;
 import android.app.usage.UsageEvents.Event;
+import android.app.usage.UsageStatsManager;
 import android.app.usage.UsageStatsManagerInternal;
 import android.appwidget.AppWidgetManager;
 import android.content.AutofillOptions;
@@ -277,6 +278,7 @@
 import android.provider.DeviceConfig.Properties;
 import android.provider.Settings;
 import android.server.ServerProtoEnums;
+import android.sysprop.InitProperties;
 import android.sysprop.VoldProperties;
 import android.telephony.TelephonyManager;
 import android.text.TextUtils;
@@ -292,7 +294,6 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 import android.util.proto.ProtoUtils;
@@ -325,6 +326,7 @@
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastPrintWriter;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.MemInfoReader;
 import com.android.internal.util.Preconditions;
 import com.android.internal.util.function.HexFunction;
@@ -346,6 +348,7 @@
 import com.android.server.SystemService;
 import com.android.server.SystemServiceManager;
 import com.android.server.ThreadPriorityBooster;
+import com.android.server.UserspaceRebootLogger;
 import com.android.server.Watchdog;
 import com.android.server.am.ActivityManagerServiceDumpProcessesProto.UidObserverRegistrationProto;
 import com.android.server.appop.AppOpsService;
@@ -354,7 +357,6 @@
 import com.android.server.firewall.IntentFirewall;
 import com.android.server.job.JobSchedulerInternal;
 import com.android.server.pm.Installer;
-import com.android.server.pm.Installer.InstallerException;
 import com.android.server.pm.permission.PermissionManagerServiceInternal;
 import com.android.server.uri.GrantUri;
 import com.android.server.uri.UriGrantsManagerInternal;
@@ -1240,6 +1242,7 @@
      * Information about and control over application operations
      */
     final AppOpsService mAppOpsService;
+    private AppOpsManager mAppOpsManager;
 
     /**
      * List of initialization arguments to pass to all processes when binding applications to them.
@@ -2109,7 +2112,7 @@
                 new IAppOpsCallback.Stub() {
                     @Override public void opChanged(int op, int uid, String packageName) {
                         if (op == AppOpsManager.OP_RUN_IN_BACKGROUND && packageName != null) {
-                            if (mAppOpsService.checkOperation(op, uid, packageName)
+                            if (getAppOpsManager().checkOpNoThrow(op, uid, packageName)
                                     != AppOpsManager.MODE_ALLOWED) {
                                 runInBackgroundDisabled(uid);
                             }
@@ -2281,6 +2284,20 @@
         }
     }
 
+    private void maybeLogUserspaceRebootEvent() {
+        if (!UserspaceRebootLogger.shouldLogUserspaceRebootEvent()) {
+            return;
+        }
+        final int userId = mUserController.getCurrentUserId();
+        if (userId != UserHandle.USER_SYSTEM) {
+            // Only log for user0.
+            return;
+        }
+        // TODO(b/148767783): should we check all profiles under user0?
+        UserspaceRebootLogger.logEventAsync(StorageManager.isUserKeyUnlocked(userId),
+                BackgroundThread.getExecutor());
+    }
+
     /**
      * Encapsulates global settings related to hidden API enforcement behaviour, including tracking
      * the latest value via a content observer.
@@ -2400,6 +2417,13 @@
         }
     }
 
+    AppOpsManager getAppOpsManager() {
+        if (mAppOpsManager == null) {
+            mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
+        }
+        return mAppOpsManager;
+    }
+
     /**
      * Provides the basic functionality for activity task related tests when a handler thread is
      * given to initialize the dependency members.
@@ -2617,7 +2641,7 @@
         mProcessCpuThread.start();
 
         mBatteryStatsService.publish();
-        mAppOpsService.publish(mContext);
+        mAppOpsService.publish();
         Slog.d("AppOps", "AppOpsService published");
         LocalServices.addService(ActivityManagerInternal.class, mInternal);
         mActivityTaskManager.onActivityManagerInternalAdded();
@@ -2908,7 +2932,7 @@
     @Override
     public void batterySendBroadcast(Intent intent) {
         synchronized (this) {
-            broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null,
+            broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null, null,
                     OP_NONE, null, false, false, -1, SYSTEM_UID, Binder.getCallingUid(),
                     Binder.getCallingPid(), UserHandle.USER_ALL);
         }
@@ -3069,10 +3093,10 @@
                     "updateBatteryStats: comp=" + activity + "res=" + resumed);
         }
         final BatteryStatsImpl stats = mBatteryStatsService.getActiveStatistics();
-        StatsLog.write(StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED,
                 uid, activity.getPackageName(), activity.getShortClassName(),
-                resumed ? StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__FOREGROUND :
-                        StatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND);
+                resumed ? FrameworkStatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__FOREGROUND :
+                        FrameworkStatsLog.ACTIVITY_FOREGROUND_STATE_CHANGED__STATE__BACKGROUND);
         synchronized (stats) {
             if (resumed) {
                 stats.noteActivityResumedLocked(uid);
@@ -3512,30 +3536,56 @@
 
     }
 
+    /**
+     * @deprecated use {@link #startActivityWithFeature} instead
+     */
+    @Deprecated
     @Override
     public int startActivity(IApplicationThread caller, String callingPackage,
             Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
             int startFlags, ProfilerInfo profilerInfo, Bundle bOptions) {
-        return mActivityTaskManager.startActivity(caller, callingPackage, intent, resolvedType,
-                resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions);
+        return mActivityTaskManager.startActivity(caller, callingPackage, null, intent,
+                resolvedType, resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions);
     }
 
     @Override
+    public int startActivityWithFeature(IApplicationThread caller, String callingPackage,
+            String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo,
+            Bundle bOptions) {
+        return mActivityTaskManager.startActivity(caller, callingPackage, callingFeatureId, intent,
+                resolvedType, resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions);
+    }
+
+    /**
+     * @deprecated use {@link #startActivityAsUserWithFeature} instead
+     */
+    @Deprecated
+    @Override
     public final int startActivityAsUser(IApplicationThread caller, String callingPackage,
             Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
             int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
+        return startActivityAsUserWithFeature(caller, callingPackage, null, intent, resolvedType,
+                resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions, userId);
+    }
 
-            return mActivityTaskManager.startActivityAsUser(caller, callingPackage, intent,
-                    resolvedType, resultTo, resultWho, requestCode, startFlags, profilerInfo,
-                    bOptions, userId);
+    @Override
+    public final int startActivityAsUserWithFeature(IApplicationThread caller,
+            String callingPackage, String callingFeatureId, Intent intent, String resolvedType,
+            IBinder resultTo, String resultWho, int requestCode, int startFlags,
+            ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
+        return mActivityTaskManager.startActivityAsUser(caller, callingPackage,
+                    callingFeatureId, intent, resolvedType, resultTo, resultWho, requestCode,
+                    startFlags, profilerInfo, bOptions, userId);
     }
 
     WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
-            return mActivityTaskManager.startActivityAndWait(caller, callingPackage, intent,
-                    resolvedType, resultTo, resultWho, requestCode, startFlags, profilerInfo,
-                    bOptions, userId);
+            @Nullable String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo,
+            Bundle bOptions, int userId) {
+            return mActivityTaskManager.startActivityAndWait(caller, callingPackage,
+                    callingFeatureId, intent, resolvedType, resultTo, resultWho, requestCode,
+                    startFlags, profilerInfo, bOptions, userId);
     }
 
     @Override
@@ -3796,7 +3846,7 @@
         // On the device which doesn't have Cgroup, log LmkStateChanged which is used as a signal
         // for pulling memory stats of other running processes when this process died.
         if (!hasMemcg()) {
-            StatsLog.write(StatsLog.APP_DIED, SystemClock.elapsedRealtime());
+            FrameworkStatsLog.write(FrameworkStatsLog.APP_DIED, SystemClock.elapsedRealtime());
         }
     }
 
@@ -4106,12 +4156,12 @@
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, resolvedUserId);
                     if (isInstantApp) {
                         intent.putExtra(Intent.EXTRA_PACKAGE_NAME, packageName);
-                        broadcastIntentInPackage("android", SYSTEM_UID, uid, pid, intent, null,
-                                null, 0, null, null, permission.ACCESS_INSTANT_APPS, null, false,
-                                false, resolvedUserId, false);
+                        broadcastIntentInPackage("android", null, SYSTEM_UID, uid, pid, intent,
+                                null, null, 0, null, null, permission.ACCESS_INSTANT_APPS, null,
+                                false, false, resolvedUserId, false);
                     } else {
-                        broadcastIntentInPackage("android", SYSTEM_UID, uid, pid, intent, null,
-                                null, 0, null, null, null, null, false, false, resolvedUserId,
+                        broadcastIntentInPackage("android", null, SYSTEM_UID, uid, pid, intent,
+                                null, null, 0, null, null, null, null, false, false, resolvedUserId,
                                 false);
                     }
 
@@ -4442,7 +4492,7 @@
                                 proc.pkgList.mPkgList);
                         for (int ipkg = proc.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                             ProcessStats.ProcessStateHolder holder = proc.pkgList.valueAt(ipkg);
-                            StatsLog.write(StatsLog.PROCESS_MEMORY_STAT_REPORTED,
+                            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_MEMORY_STAT_REPORTED,
                                     proc.info.uid,
                                     holder.state.getName(),
                                     holder.state.getPackage(),
@@ -4500,7 +4550,7 @@
                                 ProcessStats.ADD_PSS_EXTERNAL, endTime-startTime, proc.pkgList.mPkgList);
                         for (int ipkg = proc.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                             ProcessStats.ProcessStateHolder holder = proc.pkgList.valueAt(ipkg);
-                            StatsLog.write(StatsLog.PROCESS_MEMORY_STAT_REPORTED,
+                            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_MEMORY_STAT_REPORTED,
                                     proc.info.uid,
                                     holder.state.getName(),
                                     holder.state.getPackage(),
@@ -4559,7 +4609,7 @@
         }
         intent.putExtra(Intent.EXTRA_UID, uid);
         intent.putExtra(Intent.EXTRA_USER_HANDLE, UserHandle.getUserId(uid));
-        broadcastIntentLocked(null, null, intent,
+        broadcastIntentLocked(null, null, null, intent,
                 null, null, 0, null, null, null, OP_NONE,
                 null, false, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(),
                 Binder.getCallingPid(), UserHandle.getUserId(uid));
@@ -5143,14 +5193,12 @@
             checkTime(startTime, "attachApplicationLocked: after updateLruProcessLocked");
             app.lastRequestedGc = app.lastLowMemory = SystemClock.uptimeMillis();
         } catch (Exception e) {
-            // todo: Yikes!  What should we do?  For now we will try to
-            // start another process, but that could easily get us in
-            // an infinite loop of restarting processes...
+            // We need kill the process group here. (b/148588589)
             Slog.wtf(TAG, "Exception thrown during bind of " + app, e);
-
             app.resetPackageList(mProcessStats);
             app.unlinkDeathRecipient();
-            mProcessList.startProcessLocked(app, new HostingRecord("bind-fail", processName));
+            app.kill("error during bind", ApplicationExitInfo.REASON_INITIALIZATION_FAILURE, true);
+            handleAppDiedLocked(app, false, true);
             return false;
         }
 
@@ -5223,12 +5271,12 @@
             checkTime(startTime, "attachApplicationLocked: after updateOomAdjLocked");
         }
 
-        StatsLog.write(
-                StatsLog.PROCESS_START_TIME,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.PROCESS_START_TIME,
                 app.info.uid,
                 app.pid,
                 app.info.packageName,
-                StatsLog.PROCESS_START_TIME__TYPE__COLD,
+                FrameworkStatsLog.PROCESS_START_TIME__TYPE__COLD,
                 app.startTime,
                 (int) (bindApplicationTimeMillis - app.startTime),
                 (int) (SystemClock.elapsedRealtime() - app.startTime),
@@ -5269,26 +5317,6 @@
             mCallFinishBooting = false;
         }
 
-        ArraySet<String> completedIsas = new ArraySet<String>();
-        for (String abi : Build.SUPPORTED_ABIS) {
-            ZYGOTE_PROCESS.establishZygoteConnectionForAbi(abi);
-            final String instructionSet = VMRuntime.getInstructionSet(abi);
-            if (!completedIsas.contains(instructionSet)) {
-                try {
-                    mInstaller.markBootComplete(VMRuntime.getInstructionSet(abi));
-                } catch (InstallerException e) {
-                    if (!VMRuntime.didPruneDalvikCache()) {
-                        // This is technically not the right filter, as different zygotes may
-                        // have made different pruning decisions. But the log is best effort,
-                        // anyways.
-                        Slog.w(TAG, "Unable to mark boot complete for abi: " + abi + " (" +
-                                e.getMessage() +")");
-                    }
-                }
-                completedIsas.add(instructionSet);
-            }
-        }
-
         // Let the ART runtime in zygote and system_server know that the boot completed.
         ZYGOTE_PROCESS.bootCompleted();
         VMRuntime.bootCompleted();
@@ -5349,6 +5377,12 @@
             // Start looking for apps that are abusing wake locks.
             Message nmsg = mHandler.obtainMessage(CHECK_EXCESSIVE_POWER_USE_MSG);
             mHandler.sendMessageDelayed(nmsg, mConstants.POWER_CHECK_INTERVAL);
+            // Check if we are performing userspace reboot before setting sys.boot_completed to
+            // avoid race with init reseting sys.init.userspace_reboot.in_progress once sys
+            // .boot_completed is 1.
+            if (InitProperties.userspace_reboot_in_progress().orElse(false)) {
+                UserspaceRebootLogger.noteUserspaceRebootSuccess();
+            }
             // Tell anyone interested that we are done booting!
             SystemProperties.set("sys.boot_completed", "1");
 
@@ -5369,6 +5403,7 @@
                             }
                         }
                     });
+            maybeLogUserspaceRebootEvent();
             mUserController.scheduleStartProfiles();
         }
         // UART is on if init's console service is running, send a warning notification.
@@ -5438,12 +5473,23 @@
         }
     }
 
+    /**
+     * @deprecated Use {@link #getIntentSenderWithFeature} instead
+     */
+    @Deprecated
     @Override
     public IIntentSender getIntentSender(int type,
             String packageName, IBinder token, String resultWho,
             int requestCode, Intent[] intents, String[] resolvedTypes,
             int flags, Bundle bOptions, int userId) {
+        return getIntentSenderWithFeature(type, packageName, null, token, resultWho, requestCode,
+                intents, resolvedTypes, flags, bOptions, userId);
+    }
 
+    @Override
+    public IIntentSender getIntentSenderWithFeature(int type, String packageName, String featureId,
+            IBinder token, String resultWho, int requestCode, Intent[] intents,
+            String[] resolvedTypes, int flags, Bundle bOptions, int userId) {
         // NOTE: The service lock isn't held in this method because nothing in the method requires
         // the service lock to be held.
 
@@ -5505,12 +5551,13 @@
             }
 
             if (type == ActivityManager.INTENT_SENDER_ACTIVITY_RESULT) {
-                return mAtmInternal.getIntentSender(type, packageName, callingUid, userId,
-                        token, resultWho, requestCode, intents, resolvedTypes, flags, bOptions);
+                return mAtmInternal.getIntentSender(type, packageName, featureId, callingUid,
+                        userId, token, resultWho, requestCode, intents, resolvedTypes, flags,
+                        bOptions);
             }
-            return mPendingIntentController.getIntentSender(type, packageName, callingUid,
-                    userId, token, resultWho, requestCode, intents, resolvedTypes, flags,
-                    bOptions);
+            return mPendingIntentController.getIntentSender(type, packageName, featureId,
+                    callingUid, userId, token, resultWho, requestCode, intents, resolvedTypes,
+                    flags, bOptions);
         } catch (RemoteException e) {
             throw new SecurityException(e);
         }
@@ -6051,6 +6098,11 @@
         }
     }
 
+    private boolean isInRestrictedBucket(int userId, String packageName, long nowElapsed) {
+        return UsageStatsManager.STANDBY_BUCKET_RESTRICTED
+                <= mUsageStatsService.getAppStandbyBucket(packageName, userId, nowElapsed);
+    }
+
     // Unified app-op and target sdk check
     int appRestrictedInBackgroundLocked(int uid, String packageName, int packageTargetSdk) {
         // Apps that target O+ are always subject to background check
@@ -6060,9 +6112,19 @@
             }
             return ActivityManager.APP_START_MODE_DELAYED_RIGID;
         }
-        // ...and legacy apps get an AppOp check
-        int appop = mAppOpsService.noteOperation(AppOpsManager.OP_RUN_IN_BACKGROUND,
-                uid, packageName, null, false, "");
+        // It's a legacy app. If it's in the RESTRICTED bucket, always restrict on battery.
+        if (mOnBattery // Short-circuit in common case.
+                && mConstants.FORCE_BACKGROUND_CHECK_ON_RESTRICTED_APPS
+                && isInRestrictedBucket(
+                        UserHandle.getUserId(uid), packageName, SystemClock.elapsedRealtime())) {
+            if (DEBUG_BACKGROUND_CHECK) {
+                Slog.i(TAG, "Legacy app " + uid + "/" + packageName + " in RESTRICTED bucket");
+            }
+            return ActivityManager.APP_START_MODE_DELAYED;
+        }
+        // Not in the RESTRICTED bucket so policy is based on AppOp check.
+        int appop = getAppOpsManager().noteOpNoThrow(AppOpsManager.OP_RUN_IN_BACKGROUND,
+                uid, packageName, null, "");
         if (DEBUG_BACKGROUND_CHECK) {
             Slog.i(TAG, "Legacy app " + uid + "/" + packageName + " bg appop " + appop);
         }
@@ -6850,7 +6912,8 @@
                     cpi = cpr.info;
                     if (isSingleton(cpi.processName, cpi.applicationInfo,
                             cpi.name, cpi.flags)
-                            && isValidSingletonCall(r.uid, cpi.applicationInfo.uid)) {
+                            && isValidSingletonCall(r == null ? callingUid : r.uid,
+                                    cpi.applicationInfo.uid)) {
                         userId = UserHandle.USER_SYSTEM;
                         checkCrossUser = false;
                     } else {
@@ -6860,6 +6923,7 @@
                 }
             }
 
+            ProcessRecord dyingProc = null;
             if (cpr != null && cpr.proc != null) {
                 providerRunning = !cpr.proc.killed;
 
@@ -6869,14 +6933,9 @@
                 // (See the commit message on I2c4ba1e87c2d47f2013befff10c49b3dc337a9a7 to see
                 // how to test this case.)
                 if (cpr.proc.killed && cpr.proc.killedByAm) {
-                    final long iden = Binder.clearCallingIdentity();
-                    try {
-                        mProcessList.killProcAndWaitIfNecessaryLocked(cpr.proc, false,
-                                cpr.uid == cpr.proc.uid || cpr.proc.isolated,
-                                "getContentProviderImpl: %s (killedByAm)", startTime);
-                    } finally {
-                        Binder.restoreCallingIdentity(iden);
-                    }
+                    Slog.wtf(TAG, cpr.proc.toString() + " was killed by AM but isn't really dead");
+                    // Now we are going to wait for the death before starting the new process.
+                    dyingProc = cpr.proc;
                 }
             }
 
@@ -6942,7 +7001,8 @@
                 conn = incProviderCountLocked(r, cpr, token, callingUid, callingPackage, callingTag,
                         stable);
                 if (conn != null && (conn.stableCount+conn.unstableCount) == 1) {
-                    if (cpr.proc != null && r.setAdj <= ProcessList.PERCEPTIBLE_LOW_APP_ADJ) {
+                    if (cpr.proc != null
+                            && r != null && r.setAdj <= ProcessList.PERCEPTIBLE_LOW_APP_ADJ) {
                         // If this is a perceptible app accessing the provider,
                         // make sure to count it as being accessed and thus
                         // back up on the LRU list.  This is good because
@@ -6977,18 +7037,18 @@
                     // has been killed on us.  We need to wait for a new
                     // process to be started, and make sure its death
                     // doesn't kill our process.
-                    Slog.i(TAG, "Existing provider " + cpr.name.flattenToShortString()
+                    Slog.wtf(TAG, "Existing provider " + cpr.name.flattenToShortString()
                             + " is crashing; detaching " + r);
                     boolean lastRef = decProviderCountLocked(conn, cpr, token, stable);
-                    mProcessList.killProcAndWaitIfNecessaryLocked(cpr.proc,
-                            false, true, "getContentProviderImpl: %s", startTime);
                     if (!lastRef) {
                         // This wasn't the last ref our process had on
-                        // the provider...  we have now been killed, bail.
+                        // the provider...  we will be killed during cleaning up, bail.
                         return null;
                     }
+                    // We'll just start a new process to host the content provider
                     providerRunning = false;
                     conn = null;
+                    dyingProc = cpr.proc;
                 } else {
                     cpr.proc.verifiedAdj = cpr.proc.setAdj;
                 }
@@ -7014,7 +7074,8 @@
                 // Then allow connecting to the singleton provider
                 boolean singleton = isSingleton(cpi.processName, cpi.applicationInfo,
                         cpi.name, cpi.flags)
-                        && isValidSingletonCall(r.uid, cpi.applicationInfo.uid);
+                        && isValidSingletonCall(r == null ? callingUid : r.uid,
+                                cpi.applicationInfo.uid);
                 if (singleton) {
                     userId = UserHandle.USER_SYSTEM;
                 }
@@ -7064,7 +7125,7 @@
                 checkTime(startTime, "getContentProviderImpl: before getProviderByClass");
                 cpr = mProviderMap.getProviderByClass(comp, userId);
                 checkTime(startTime, "getContentProviderImpl: after getProviderByClass");
-                final boolean firstClass = cpr == null;
+                boolean firstClass = cpr == null;
                 if (firstClass) {
                     final long ident = Binder.clearCallingIdentity();
 
@@ -7095,6 +7156,13 @@
                     } finally {
                         Binder.restoreCallingIdentity(ident);
                     }
+                } else if (dyingProc == cpr.proc) {
+                    // The old stable connection's client should be killed during proc cleaning up,
+                    // so do not re-use the old ContentProviderRecord, otherwise the new clients
+                    // could get killed unexpectedly.
+                    cpr = new ContentProviderRecord(cpr);
+                    // This is sort of "firstClass"
+                    firstClass = true;
                 }
 
                 checkTime(startTime, "getContentProviderImpl: now have ContentProviderRecord");
@@ -7962,7 +8030,7 @@
     }
 
     boolean isBackgroundRestrictedNoCheck(final int uid, final String packageName) {
-        final int mode = mAppOpsService.checkOperation(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
+        final int mode = getAppOpsManager().checkOpNoThrow(AppOpsManager.OP_RUN_ANY_IN_BACKGROUND,
                 uid, packageName);
         return mode != AppOpsManager.MODE_ALLOWED;
     }
@@ -8843,8 +8911,8 @@
                         UserHandle.getUserId(workSourceUid), SystemClock.elapsedRealtime());
             }
 
-            StatsLog.write(StatsLog.WAKEUP_ALARM_OCCURRED, workSource, tag, sourcePkg,
-                    standbyBucket);
+            FrameworkStatsLog.write(FrameworkStatsLog.WAKEUP_ALARM_OCCURRED, workSource, tag,
+                    sourcePkg, standbyBucket);
             if (DEBUG_POWER) {
                 Slog.w(TAG, "noteWakeupAlarm[ sourcePkg=" + sourcePkg + ", sourceUid=" + sourceUid
                         + ", workSource=" + workSource + ", tag=" + tag + ", standbyBucket="
@@ -8855,8 +8923,8 @@
                 standbyBucket = mUsageStatsService.getAppStandbyBucket(sourcePkg,
                         UserHandle.getUserId(sourceUid), SystemClock.elapsedRealtime());
             }
-            StatsLog.write_non_chained(StatsLog.WAKEUP_ALARM_OCCURRED, sourceUid, null, tag,
-                    sourcePkg, standbyBucket);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.WAKEUP_ALARM_OCCURRED, sourceUid,
+                    null, tag, sourcePkg, standbyBucket);
             if (DEBUG_POWER) {
                 Slog.w(TAG, "noteWakeupAlarm[ sourcePkg=" + sourcePkg + ", sourceUid=" + sourceUid
                         + ", workSource=" + workSource + ", tag=" + tag + ", standbyBucket="
@@ -9440,14 +9508,14 @@
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
                             | Intent.FLAG_RECEIVER_FOREGROUND);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, currentUserId);
-                    broadcastIntentLocked(null, null, intent,
+                    broadcastIntentLocked(null, null, null, intent,
                             null, null, 0, null, null, null, OP_NONE,
                             null, false, false, MY_PID, SYSTEM_UID, callingUid, callingPid,
                             currentUserId);
                     intent = new Intent(Intent.ACTION_USER_STARTING);
                     intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                     intent.putExtra(Intent.EXTRA_USER_HANDLE, currentUserId);
-                    broadcastIntentLocked(null, null, intent, null,
+                    broadcastIntentLocked(null, null, null, intent, null,
                             new IIntentReceiver.Stub() {
                                 @Override
                                 public void performReceive(Intent intent, int resultCode,
@@ -9590,20 +9658,20 @@
                 crashInfo.throwFileName,
                 crashInfo.throwLineNumber);
 
-        StatsLog.write(StatsLog.APP_CRASH_OCCURRED,
+        FrameworkStatsLog.write(FrameworkStatsLog.APP_CRASH_OCCURRED,
                 Binder.getCallingUid(),
                 eventType,
                 processName,
                 Binder.getCallingPid(),
                 (r != null && r.info != null) ? r.info.packageName : "",
                 (r != null && r.info != null) ? (r.info.isInstantApp()
-                        ? StatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__TRUE
-                        : StatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__FALSE)
-                        : StatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__UNAVAILABLE,
+                        ? FrameworkStatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__TRUE
+                        : FrameworkStatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__FALSE)
+                        : FrameworkStatsLog.APP_CRASH_OCCURRED__IS_INSTANT_APP__UNAVAILABLE,
                 r != null ? (r.isInterestingToUserLocked()
-                        ? StatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__FOREGROUND
-                        : StatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__BACKGROUND)
-                        : StatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__UNKNOWN,
+                        ? FrameworkStatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__FOREGROUND
+                        : FrameworkStatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__BACKGROUND)
+                        : FrameworkStatsLog.APP_CRASH_OCCURRED__FOREGROUND_STATE__UNKNOWN,
                 processName.equals("system_server") ? ServerProtoEnums.SYSTEM_SERVER
                         : (r != null) ? r.getProcessClassEnum()
                                       : ServerProtoEnums.ERROR_SOURCE_UNKNOWN
@@ -9747,15 +9815,21 @@
      * @param crashInfo describing the context of the error
      * @return true if the process should exit immediately (WTF is fatal)
      */
+    @Override
     public boolean handleApplicationWtf(final IBinder app, final String tag, boolean system,
-            final ApplicationErrorReport.ParcelableCrashInfo crashInfo) {
+            final ApplicationErrorReport.ParcelableCrashInfo crashInfo, int immediateCallerPid) {
         final int callingUid = Binder.getCallingUid();
         final int callingPid = Binder.getCallingPid();
 
-        if (system) {
-            // If this is coming from the system, we could very well have low-level
-            // system locks held, so we want to do this all asynchronously.  And we
-            // never want this to become fatal, so there is that too.
+        // If this is coming from the system, we could very well have low-level
+        // system locks held, so we want to do this all asynchronously.  And we
+        // never want this to become fatal, so there is that too.
+        //
+        // Note: "callingPid == Process.myPid())" wouldn't be reliable because even if the caller
+        // is within the system server, if it calls Log.wtf() without clearning the calling
+        // identity, callingPid would still be of a remote caller. So we explicltly pass the
+        // process PID from the caller.
+        if (system || (immediateCallerPid == Process.myPid())) {
             mHandler.post(new Runnable() {
                 @Override public void run() {
                     handleApplicationWtfInner(callingUid, callingPid, app, tag, crashInfo);
@@ -9788,7 +9862,7 @@
         EventLogTags.writeAmWtf(UserHandle.getUserId(callingUid), callingPid,
                 processName, r == null ? -1 : r.info.flags, tag, crashInfo.exceptionMessage);
 
-        StatsLog.write(StatsLog.WTF_OCCURRED, callingUid, tag, processName,
+        FrameworkStatsLog.write(FrameworkStatsLog.WTF_OCCURRED, callingUid, tag, processName,
                 callingPid, (r != null) ? r.getProcessClassEnum() : 0);
 
         addErrorToDropBox("wtf", r, processName, null, null, null, tag, null, null, crashInfo);
@@ -11066,10 +11140,12 @@
         }
 
         if (dumpAll || dumpPackage != null) {
+            final SparseArray<ProcessRecord> pidToProcess = new SparseArray<>();
             synchronized (mPidsSelfLocked) {
                 boolean printed = false;
                 for (int i=0; i<mPidsSelfLocked.size(); i++) {
                     ProcessRecord r = mPidsSelfLocked.valueAt(i);
+                    pidToProcess.put(r.pid, r);
                     if (dumpPackage != null && !r.pkgList.containsKey(dumpPackage)) {
                         continue;
                     }
@@ -11083,6 +11159,32 @@
                         pw.print(": "); pw.println(mPidsSelfLocked.valueAt(i));
                 }
             }
+
+            synchronized (sActiveProcessInfoSelfLocked) {
+                boolean printed = false;
+                for (int i = 0; i < sActiveProcessInfoSelfLocked.size(); i++) {
+                    ProcessInfo info = sActiveProcessInfoSelfLocked.valueAt(i);
+                    ProcessRecord r = pidToProcess.get(sActiveProcessInfoSelfLocked.keyAt(i));
+                    if (r != null && dumpPackage != null && !r.pkgList.containsKey(dumpPackage)) {
+                        continue;
+                    }
+                    if (!printed) {
+                        if (needSep) pw.println();
+                        needSep = true;
+                        pw.println("  Active process infos:");
+                        printed = true;
+                    }
+                    pw.print("    Pinfo PID #"); pw.print(sActiveProcessInfoSelfLocked.keyAt(i));
+                    pw.println(":");
+                    pw.print("      name="); pw.println(info.name);
+                    if (info.deniedPermissions != null) {
+                        for (int j = 0; j < info.deniedPermissions.size(); j++) {
+                            pw.print("      deny: ");
+                            pw.println(info.deniedPermissions.valueAt(i));
+                        }
+                    }
+                }
+            }
         }
 
         if (mImportantProcesses.size() > 0) {
@@ -13027,7 +13129,7 @@
                                 reportType, endTime-startTime, r.pkgList.mPkgList);
                         for (int ipkg = r.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                             ProcessStats.ProcessStateHolder holder = r.pkgList.valueAt(ipkg);
-                            StatsLog.write(StatsLog.PROCESS_MEMORY_STAT_REPORTED,
+                            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_MEMORY_STAT_REPORTED,
                                     r.info.uid,
                                     holder.state.getName(),
                                     holder.state.getPackage(),
@@ -13631,7 +13733,7 @@
                             reportType, endTime-startTime, r.pkgList.mPkgList);
                     for (int ipkg = r.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                         ProcessStats.ProcessStateHolder holder = r.pkgList.valueAt(ipkg);
-                        StatsLog.write(StatsLog.PROCESS_MEMORY_STAT_REPORTED,
+                        FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_MEMORY_STAT_REPORTED,
                                 r.info.uid,
                                 holder.state.getName(),
                                 holder.state.getPackage(),
@@ -14198,7 +14300,7 @@
             catPw.flush();
         }
         dropBuilder.append(catSw.toString());
-        StatsLog.write(StatsLog.LOW_MEM_REPORTED);
+        FrameworkStatsLog.write(FrameworkStatsLog.LOW_MEM_REPORTED);
         addErrorToDropBox("lowmem", null, "system_server", null,
                 null, null, tag.toString(), dropBuilder.toString(), null, null);
         //Slog.i(TAG, "Sent to dropbox:");
@@ -14248,10 +14350,19 @@
                 cpr.launchingApp = null;
                 cpr.notifyAll();
             }
-            mProviderMap.removeProviderByClass(cpr.name, UserHandle.getUserId(cpr.uid));
+            final int userId = UserHandle.getUserId(cpr.uid);
+            // Don't remove from provider map if it doesn't match
+            // could be a new content provider is starting
+            if (mProviderMap.getProviderByClass(cpr.name, userId) == cpr) {
+                mProviderMap.removeProviderByClass(cpr.name, userId);
+            }
             String names[] = cpr.info.authority.split(";");
             for (int j = 0; j < names.length; j++) {
-                mProviderMap.removeProviderByName(names[j], UserHandle.getUserId(cpr.uid));
+                // Don't remove from provider map if it doesn't match
+                // could be a new content provider is starting
+                if (mProviderMap.getProviderByName(names[j], userId) == cpr) {
+                    mProviderMap.removeProviderByName(names[j], userId);
+                }
             }
         }
 
@@ -14346,6 +14457,10 @@
         // Remove published content providers.
         for (int i = app.pubProviders.size() - 1; i >= 0; i--) {
             ContentProviderRecord cpr = app.pubProviders.valueAt(i);
+            if (cpr.proc != app) {
+                // If the hosting process record isn't really us, bail out
+                continue;
+            }
             final boolean alwaysRemove = app.bad || !allowRestart;
             final boolean inLaunching = removeDyingProviderLocked(app, cpr, alwaysRemove);
             if (!alwaysRemove && inLaunching && cpr.hasConnectionOrHandle()) {
@@ -14431,6 +14546,27 @@
         mUiHandler.obtainMessage(DISPATCH_PROCESS_DIED_UI_MSG, app.pid, app.info.uid,
                 null).sendToTarget();
 
+        // If this is a precede instance of another process instance
+        allowRestart = true;
+        synchronized (app) {
+            if (app.mSuccessor != null) {
+                // We don't allow restart with this ProcessRecord now,
+                // because we have created a new one already.
+                allowRestart = false;
+                // If it's persistent, add the successor to mPersistentStartingProcesses
+                if (app.isPersistent() && !app.removed) {
+                    if (mPersistentStartingProcesses.indexOf(app.mSuccessor) < 0) {
+                        mPersistentStartingProcesses.add(app.mSuccessor);
+                    }
+                }
+                // clean up the field so the successor's proc starter could proceed.
+                app.mSuccessor.mPrecedence = null;
+                app.mSuccessor = null;
+                // Notify if anyone is waiting for it.
+                app.notifyAll();
+            }
+        }
+
         // If the caller is restarting this app, then leave it in its
         // current lists and let the caller take care of it.
         if (restarting) {
@@ -14460,7 +14596,7 @@
         mAtmInternal.onCleanUpApplicationRecord(app.getWindowProcessController());
         mProcessList.noteProcessDiedLocked(app);
 
-        if (restart && !app.isolated) {
+        if (restart && allowRestart && !app.isolated) {
             // We have components that still need to be running in the
             // process, so re-launch it.
             if (index < 0) {
@@ -14546,7 +14682,8 @@
 
     @Override
     public ComponentName startService(IApplicationThread caller, Intent service,
-            String resolvedType, boolean requireForeground, String callingPackage, int userId)
+            String resolvedType, boolean requireForeground, String callingPackage,
+            String callingFeatureId, int userId)
             throws TransactionTooLargeException {
         enforceNotIsolatedCaller("startService");
         // Refuse possible leaked file descriptors
@@ -14568,7 +14705,7 @@
             try {
                 res = mServices.startServiceLocked(caller, service,
                         resolvedType, callingPid, callingUid,
-                        requireForeground, callingPackage, userId);
+                        requireForeground, callingPackage, callingFeatureId, userId);
             } finally {
                 Binder.restoreCallingIdentity(origId);
             }
@@ -15046,9 +15183,20 @@
         return didSomething;
     }
 
+    /**
+     * @deprecated Use {@link #registerReceiverWithFeature}
+     */
+    @Deprecated
     public Intent registerReceiver(IApplicationThread caller, String callerPackage,
             IIntentReceiver receiver, IntentFilter filter, String permission, int userId,
             int flags) {
+        return registerReceiverWithFeature(caller, callerPackage, null, receiver, filter,
+                permission, userId, flags);
+    }
+
+    public Intent registerReceiverWithFeature(IApplicationThread caller, String callerPackage,
+            String callerFeatureId, IIntentReceiver receiver, IntentFilter filter,
+            String permission, int userId, int flags) {
         enforceNotIsolatedCaller("registerReceiver");
         ArrayList<Intent> stickyIntents = null;
         ProcessRecord callerApp = null;
@@ -15184,7 +15332,7 @@
                         + " was previously registered for user " + rl.userId
                         + " callerPackage is " + callerPackage);
             }
-            BroadcastFilter bf = new BroadcastFilter(filter, rl, callerPackage,
+            BroadcastFilter bf = new BroadcastFilter(filter, rl, callerPackage, callerFeatureId,
                     permission, callingUid, userId, instantApp, visibleToInstantApps);
             if (rl.containsFilter(filter)) {
                 Slog.w(TAG, "Receiver with filter " + filter
@@ -15209,7 +15357,7 @@
                     Intent intent = allSticky.get(i);
                     BroadcastQueue queue = broadcastQueueForIntent(intent);
                     BroadcastRecord r = new BroadcastRecord(queue, intent, null,
-                            null, -1, -1, false, null, null, OP_NONE, null, receivers,
+                            null, null, -1, -1, false, null, null, OP_NONE, null, receivers,
                             null, 0, null, null, false, true, true, -1, false,
                             false /* only PRE_BOOT_COMPLETED should be exempt, no stickies */);
                     queue.enqueueParallelBroadcastLocked(r);
@@ -15439,20 +15587,20 @@
 
     @GuardedBy("this")
     final int broadcastIntentLocked(ProcessRecord callerApp,
-            String callerPackage, Intent intent, String resolvedType,
+            String callerPackage, String callerFeatureId, Intent intent, String resolvedType,
             IIntentReceiver resultTo, int resultCode, String resultData,
             Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions,
             boolean ordered, boolean sticky, int callingPid, int callingUid, int realCallingUid,
             int realCallingPid, int userId) {
-        return broadcastIntentLocked(callerApp, callerPackage, intent, resolvedType, resultTo,
-            resultCode, resultData, resultExtras, requiredPermissions, appOp, bOptions, ordered,
-            sticky, callingPid, callingUid, realCallingUid, realCallingPid, userId,
-            false /* allowBackgroundActivityStarts */);
+        return broadcastIntentLocked(callerApp, callerPackage, callerFeatureId, intent,
+                resolvedType, resultTo, resultCode, resultData, resultExtras, requiredPermissions,
+                appOp, bOptions, ordered, sticky, callingPid, callingUid, realCallingUid,
+                realCallingPid, userId, false /* allowBackgroundActivityStarts */);
     }
 
     @GuardedBy("this")
-    final int broadcastIntentLocked(ProcessRecord callerApp,
-            String callerPackage, Intent intent, String resolvedType,
+    final int broadcastIntentLocked(ProcessRecord callerApp, String callerPackage,
+            @Nullable String callerFeatureId, Intent intent, String resolvedType,
             IIntentReceiver resultTo, int resultCode, String resultData,
             Bundle resultExtras, String[] requiredPermissions, int appOp, Bundle bOptions,
             boolean ordered, boolean sticky, int callingPid, int callingUid, int realCallingUid,
@@ -15989,8 +16137,8 @@
                         isProtectedBroadcast, registeredReceivers);
             }
             final BroadcastQueue queue = broadcastQueueForIntent(intent);
-            BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
-                    callerPackage, callingPid, callingUid, callerInstantApp, resolvedType,
+            BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp, callerPackage,
+                    callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
                     requiredPermissions, appOp, brOptions, registeredReceivers, resultTo,
                     resultCode, resultData, resultExtras, ordered, sticky, false, userId,
                     allowBackgroundActivityStarts, timeoutExempt);
@@ -16086,8 +16234,8 @@
         if ((receivers != null && receivers.size() > 0)
                 || resultTo != null) {
             BroadcastQueue queue = broadcastQueueForIntent(intent);
-            BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp,
-                    callerPackage, callingPid, callingUid, callerInstantApp, resolvedType,
+            BroadcastRecord r = new BroadcastRecord(queue, intent, callerApp, callerPackage,
+                    callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
                     requiredPermissions, appOp, brOptions, receivers, resultTo, resultCode,
                     resultData, resultExtras, ordered, sticky, false, userId,
                     allowBackgroundActivityStarts, timeoutExempt);
@@ -16206,11 +16354,25 @@
         return intent;
     }
 
+    /**
+     * @deprecated Use {@link #broadcastIntentWithFeature}
+     */
+    @Deprecated
     public final int broadcastIntent(IApplicationThread caller,
             Intent intent, String resolvedType, IIntentReceiver resultTo,
             int resultCode, String resultData, Bundle resultExtras,
             String[] requiredPermissions, int appOp, Bundle bOptions,
             boolean serialized, boolean sticky, int userId) {
+        return broadcastIntentWithFeature(caller, null, intent, resolvedType, resultTo, resultCode,
+                resultData, resultExtras, requiredPermissions, appOp, bOptions, serialized, sticky,
+                userId);
+    }
+
+    public final int broadcastIntentWithFeature(IApplicationThread caller, String callingFeatureId,
+            Intent intent, String resolvedType, IIntentReceiver resultTo,
+            int resultCode, String resultData, Bundle resultExtras,
+            String[] requiredPermissions, int appOp, Bundle bOptions,
+            boolean serialized, boolean sticky, int userId) {
         enforceNotIsolatedCaller("broadcastIntent");
         synchronized(this) {
             intent = verifyBroadcastLocked(intent);
@@ -16222,7 +16384,7 @@
             final long origId = Binder.clearCallingIdentity();
             try {
                 return broadcastIntentLocked(callerApp,
-                        callerApp != null ? callerApp.info.packageName : null,
+                        callerApp != null ? callerApp.info.packageName : null, callingFeatureId,
                         intent, resolvedType, resultTo, resultCode, resultData, resultExtras,
                         requiredPermissions, appOp, bOptions, serialized, sticky,
                         callingPid, callingUid, callingUid, callingPid, userId);
@@ -16232,9 +16394,9 @@
         }
     }
 
-    int broadcastIntentInPackage(String packageName, int uid, int realCallingUid,
-            int realCallingPid, Intent intent, String resolvedType, IIntentReceiver resultTo,
-            int resultCode, String resultData, Bundle resultExtras,
+    int broadcastIntentInPackage(String packageName, @Nullable String featureId, int uid,
+            int realCallingUid, int realCallingPid, Intent intent, String resolvedType,
+            IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras,
             String requiredPermission, Bundle bOptions, boolean serialized, boolean sticky,
             int userId, boolean allowBackgroundActivityStarts) {
         synchronized(this) {
@@ -16244,11 +16406,10 @@
             String[] requiredPermissions = requiredPermission == null ? null
                     : new String[] {requiredPermission};
             try {
-                return broadcastIntentLocked(null, packageName, intent, resolvedType,
-                        resultTo, resultCode, resultData, resultExtras,
-                        requiredPermissions, OP_NONE, bOptions, serialized,
-                        sticky, -1, uid, realCallingUid, realCallingPid, userId,
-                        allowBackgroundActivityStarts);
+                return broadcastIntentLocked(null, packageName, featureId, intent, resolvedType,
+                        resultTo, resultCode, resultData, resultExtras, requiredPermissions,
+                        OP_NONE, bOptions, serialized, sticky, -1, uid, realCallingUid,
+                        realCallingPid, userId, allowBackgroundActivityStarts);
             } finally {
                 Binder.restoreCallingIdentity(origId);
             }
@@ -16838,7 +16999,7 @@
                 pss, uss, rss, true, statType, pssDuration, proc.pkgList.mPkgList);
         for (int ipkg = proc.pkgList.mPkgList.size() - 1; ipkg >= 0; ipkg--) {
             ProcessStats.ProcessStateHolder holder = proc.pkgList.valueAt(ipkg);
-            StatsLog.write(StatsLog.PROCESS_MEMORY_STAT_REPORTED,
+            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_MEMORY_STAT_REPORTED,
                     proc.info.uid,
                     holder.state.getName(),
                     holder.state.getPackage(),
@@ -17198,7 +17359,7 @@
                         app.baseProcessTracker.reportExcessiveCpu(app.pkgList.mPkgList);
                         for (int ipkg = app.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                             ProcessStats.ProcessStateHolder holder = app.pkgList.valueAt(ipkg);
-                            StatsLog.write(StatsLog.EXCESSIVE_CPU_USAGE_REPORTED,
+                            FrameworkStatsLog.write(FrameworkStatsLog.EXCESSIVE_CPU_USAGE_REPORTED,
                                     app.info.uid,
                                     holder.state.getName(),
                                     holder.state.getPackage(),
@@ -17485,7 +17646,7 @@
         }
         if (memFactor != mLastMemoryLevel) {
             EventLogTags.writeAmMemFactor(memFactor, mLastMemoryLevel);
-            StatsLog.write(StatsLog.MEMORY_FACTOR_STATE_CHANGED, memFactor);
+            FrameworkStatsLog.write(FrameworkStatsLog.MEMORY_FACTOR_STATE_CHANGED, memFactor);
         }
         mLastMemoryLevel = memFactor;
         mLastNumProcesses = mProcessList.getLruSizeLocked();
@@ -18852,23 +19013,24 @@
         }
 
         @Override
-        public int broadcastIntentInPackage(String packageName, int uid, int realCallingUid,
-                int realCallingPid, Intent intent, String resolvedType, IIntentReceiver resultTo,
-                int resultCode, String resultData, Bundle resultExtras, String requiredPermission,
-                Bundle bOptions, boolean serialized, boolean sticky, int userId,
-                boolean allowBackgroundActivityStarts) {
+        public int broadcastIntentInPackage(String packageName, @Nullable String featureId, int uid,
+                int realCallingUid, int realCallingPid, Intent intent, String resolvedType,
+                IIntentReceiver resultTo, int resultCode, String resultData, Bundle resultExtras,
+                String requiredPermission, Bundle bOptions, boolean serialized, boolean sticky,
+                int userId, boolean allowBackgroundActivityStarts) {
             synchronized (ActivityManagerService.this) {
-                return ActivityManagerService.this.broadcastIntentInPackage(packageName, uid,
-                        realCallingUid, realCallingPid, intent, resolvedType, resultTo, resultCode,
-                        resultData, resultExtras, requiredPermission, bOptions, serialized, sticky,
-                        userId, allowBackgroundActivityStarts);
+                return ActivityManagerService.this.broadcastIntentInPackage(packageName, featureId,
+                        uid, realCallingUid, realCallingPid, intent, resolvedType, resultTo,
+                        resultCode, resultData, resultExtras, requiredPermission, bOptions,
+                        serialized, sticky, userId, allowBackgroundActivityStarts);
             }
         }
 
         @Override
         public ComponentName startServiceInPackage(int uid, Intent service, String resolvedType,
-                boolean fgRequired, String callingPackage, int userId,
-                boolean allowBackgroundActivityStarts) throws TransactionTooLargeException {
+                boolean fgRequired, String callingPackage, @Nullable String callingFeatureId,
+                int userId, boolean allowBackgroundActivityStarts)
+                throws TransactionTooLargeException {
             synchronized(ActivityManagerService.this) {
                 if (DEBUG_SERVICE) Slog.v(TAG_SERVICE,
                         "startServiceInPackage: " + service + " type=" + resolvedType);
@@ -18876,8 +19038,8 @@
                 ComponentName res;
                 try {
                     res = mServices.startServiceLocked(null, service,
-                            resolvedType, -1, uid, fgRequired, callingPackage, userId,
-                            allowBackgroundActivityStarts);
+                            resolvedType, -1, uid, fgRequired, callingPackage,
+                            callingFeatureId, userId, allowBackgroundActivityStarts);
                 } finally {
                     Binder.restoreCallingIdentity(origId);
                 }
@@ -18886,19 +19048,16 @@
         }
 
         // The arguments here are untyped because the base ActivityManagerInternal class
-        // doesn't have compile-time visiblity into ActivityServiceConnectionHolder or
+        // doesn't have compile-time visibility into ActivityServiceConnectionHolder or
         // ConnectionRecord.
         @Override
-        public void disconnectActivityFromServices(Object connectionHolder, Object conns) {
+        public void disconnectActivityFromServices(Object connectionHolder) {
             // 'connectionHolder' is an untyped ActivityServiceConnectionsHolder
-            // 'conns' is an untyped HashSet<ConnectionRecord>
             final ActivityServiceConnectionsHolder holder =
                     (ActivityServiceConnectionsHolder) connectionHolder;
-            final HashSet<ConnectionRecord> toDisconnect = (HashSet<ConnectionRecord>) conns;
-            synchronized(ActivityManagerService.this) {
-                for (ConnectionRecord cr : toDisconnect) {
-                    mServices.removeConnectionLocked(cr, null, holder);
-                }
+            synchronized (ActivityManagerService.this) {
+                holder.forEachConnection(cr -> mServices.removeConnectionLocked(
+                        (ConnectionRecord) cr, null /* skipApp */, holder /* skipAct */));
             }
         }
 
@@ -18973,7 +19132,7 @@
                         | Intent.FLAG_RECEIVER_REPLACE_PENDING
                         | Intent.FLAG_RECEIVER_FOREGROUND
                         | Intent.FLAG_RECEIVER_VISIBLE_TO_INSTANT_APPS);
-                broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null,
+                broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null, null,
                         OP_NONE, null, false, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(),
                         Binder.getCallingPid(), UserHandle.USER_ALL);
                 if ((changes & ActivityInfo.CONFIG_LOCALE) != 0) {
@@ -18984,7 +19143,7 @@
                     if (initLocale || !mProcessesReady) {
                         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
                     }
-                    broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null,
+                    broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null, null,
                             OP_NONE, null, false, false, MY_PID, SYSTEM_UID, Binder.getCallingUid(),
                             Binder.getCallingPid(), UserHandle.USER_ALL);
                 }
@@ -18999,7 +19158,7 @@
                     // Typically only app stores will have this permission.
                     String[] permissions =
                             new String[] { android.Manifest.permission.INSTALL_PACKAGES };
-                    broadcastIntentLocked(null, null, intent, null, null, 0, null, null,
+                    broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null,
                             permissions, OP_NONE, null, false, false, MY_PID, SYSTEM_UID,
                             Binder.getCallingUid(), Binder.getCallingPid(), UserHandle.USER_ALL);
                 }
@@ -19024,7 +19183,7 @@
                     intent.putExtra("reason", reason);
                 }
 
-                broadcastIntentLocked(null, null, intent, null, null, 0, null, null, null,
+                broadcastIntentLocked(null, null, null, intent, null, null, 0, null, null, null,
                         OP_NONE, null, false, false, -1, SYSTEM_UID, Binder.getCallingUid(),
                         Binder.getCallingPid(), UserHandle.USER_ALL);
             }
@@ -19334,6 +19493,13 @@
     }
 
     /**
+     * Force the settings cache to be loaded
+     */
+    void refreshSettingsCache() {
+        mCoreSettingsObserver.onChange(true);
+    }
+
+    /**
      * Kill processes for the user with id userId and that depend on the package named packageName
      */
     @Override
@@ -19474,7 +19640,7 @@
         }
 
         public AppOpsService getAppOpsService(File file, Handler handler) {
-            return new AppOpsService(file, handler);
+            return new AppOpsService(file, handler, getContext());
         }
 
         public Handler getUiHandler(ActivityManagerService service) {
diff --git a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
index 53a967b..c7f5f63 100644
--- a/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
+++ b/services/core/java/com/android/server/am/ActivityManagerShellCommand.java
@@ -306,6 +306,8 @@
                     return runWaitForBroadcastIdle(pw);
                 case "compat":
                     return runCompat(pw);
+                case "refresh-settings-cache":
+                    return runRefreshSettingsCache();
                 default:
                     return handleDefaultCommands(cmd);
             }
@@ -534,13 +536,13 @@
                 options.setLockTaskEnabled(true);
             }
             if (mWaitOption) {
-                result = mInternal.startActivityAndWait(null, SHELL_PACKAGE_NAME, intent, mimeType,
-                        null, null, 0, mStartFlags, profilerInfo,
+                result = mInternal.startActivityAndWait(null, SHELL_PACKAGE_NAME, null, intent,
+                        mimeType, null, null, 0, mStartFlags, profilerInfo,
                         options != null ? options.toBundle() : null, mUserId);
                 res = result.result;
             } else {
-                res = mInternal.startActivityAsUser(null, SHELL_PACKAGE_NAME, intent, mimeType,
-                        null, null, 0, mStartFlags, profilerInfo,
+                res = mInternal.startActivityAsUserWithFeature(null, SHELL_PACKAGE_NAME, null,
+                        intent, mimeType, null, null, 0, mStartFlags, profilerInfo,
                         options != null ? options.toBundle() : null, mUserId);
             }
             final long endTime = SystemClock.uptimeMillis();
@@ -652,7 +654,7 @@
         pw.println("Starting service: " + intent);
         pw.flush();
         ComponentName cn = mInterface.startService(null, intent, intent.getType(),
-                asForeground, SHELL_PACKAGE_NAME, mUserId);
+                asForeground, SHELL_PACKAGE_NAME, null, mUserId);
         if (cn == null) {
             err.println("Error: Not found; no service started.");
             return -1;
@@ -742,8 +744,9 @@
         pw.println("Broadcasting: " + intent);
         pw.flush();
         Bundle bundle = mBroadcastOptions == null ? null : mBroadcastOptions.toBundle();
-        mInterface.broadcastIntent(null, intent, null, receiver, 0, null, null, requiredPermissions,
-                android.app.AppOpsManager.OP_NONE, bundle, true, false, mUserId);
+        mInterface.broadcastIntentWithFeature(null, null, intent, null, receiver, 0, null, null,
+                requiredPermissions, android.app.AppOpsManager.OP_NONE, bundle, true, false,
+                mUserId);
         receiver.waitForFinish();
         return 0;
     }
@@ -2940,6 +2943,11 @@
         return 0;
     }
 
+    int runRefreshSettingsCache() throws RemoteException {
+        mInternal.refreshSettingsCache();
+        return 0;
+    }
+
     private int runCompat(PrintWriter pw) throws RemoteException {
         final PlatformCompat platformCompat = (PlatformCompat)
                 ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
diff --git a/services/core/java/com/android/server/am/AppErrors.java b/services/core/java/com/android/server/am/AppErrors.java
index 145f91b..789f719 100644
--- a/services/core/java/com/android/server/am/AppErrors.java
+++ b/services/core/java/com/android/server/am/AppErrors.java
@@ -798,7 +798,6 @@
         boolean showBackground = Settings.Secure.getInt(mContext.getContentResolver(),
                 Settings.Secure.ANR_SHOW_BACKGROUND, 0) != 0;
 
-        final String packageName;
         final int userId;
         synchronized (mService) {
             final ProcessRecord proc = data.proc;
@@ -807,7 +806,6 @@
                 Slog.e(TAG, "handleShowAppErrorUi: proc is null");
                 return;
             }
-            packageName = proc.info.packageName;
             userId = proc.userId;
             if (proc.getDialogController().hasCrashDialogs()) {
                 Slog.e(TAG, "App already has crash dialog: " + proc);
diff --git a/services/core/java/com/android/server/am/AppExitInfoTracker.java b/services/core/java/com/android/server/am/AppExitInfoTracker.java
index bab133f..60aba27 100644
--- a/services/core/java/com/android/server/am/AppExitInfoTracker.java
+++ b/services/core/java/com/android/server/am/AppExitInfoTracker.java
@@ -17,6 +17,7 @@
 package com.android.server.am;
 
 import static android.app.ActivityManager.RunningAppProcessInfo.procStateToImportance;
+import static android.os.Process.THREAD_PRIORITY_BACKGROUND;
 
 import static com.android.server.am.ActivityManagerDebugConfig.DEBUG_PROCESSES;
 import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
@@ -52,6 +53,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.ProcessMap;
 import com.android.server.IoThread;
+import com.android.server.ServiceThread;
 import com.android.server.SystemServiceManager;
 
 import java.io.File;
@@ -179,9 +181,12 @@
         mRawRecordsPool = new SynchronizedPool<ApplicationExitInfo>(APP_EXIT_RAW_INFO_POOL_SIZE);
     }
 
-    void init(ActivityManagerService service, Looper looper) {
+    void init(ActivityManagerService service) {
         mService = service;
-        mKillHandler = new KillHandler(looper);
+        ServiceThread thread = new ServiceThread(TAG + ":killHandler",
+                THREAD_PRIORITY_BACKGROUND, true /* allowIo */);
+        thread.start();
+        mKillHandler = new KillHandler(thread.getLooper());
         mProcExitInfoFile = new File(SystemServiceManager.ensureSystemDir(), APP_EXIT_INFO_FILE);
 
         mAppExitInfoHistoryListSize = service.mContext.getResources().getInteger(
diff --git a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
index fa91620..39f79ca 100644
--- a/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
+++ b/services/core/java/com/android/server/am/BatteryExternalStatsWorker.java
@@ -33,11 +33,11 @@
 import android.telephony.TelephonyManager;
 import android.util.IntArray;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.os.BatteryStatsImpl;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.function.pooled.PooledLambda;
 
 import libcore.util.EmptyArray;
@@ -374,8 +374,8 @@
                 // Clean up any UIDs if necessary.
                 synchronized (mStats) {
                     for (int uid : uidsToRemove) {
-                        StatsLog.write(StatsLog.ISOLATED_UID_CHANGED, -1, uid,
-                                StatsLog.ISOLATED_UID_CHANGED__EVENT__REMOVED);
+                        FrameworkStatsLog.write(FrameworkStatsLog.ISOLATED_UID_CHANGED, -1, uid,
+                                FrameworkStatsLog.ISOLATED_UID_CHANGED__EVENT__REMOVED);
                         mStats.removeIsolatedUidLocked(uid);
                     }
                     mStats.clearPendingRemovedUids();
@@ -550,7 +550,6 @@
                     return data;
                 }
             }
-            Slog.e(TAG, "no controller energy info supplied for " + receiver.getName());
         } catch (TimeoutException e) {
             Slog.w(TAG, "timeout reading " + receiver.getName() + " stats");
         }
diff --git a/services/core/java/com/android/server/am/BatteryStatsService.java b/services/core/java/com/android/server/am/BatteryStatsService.java
index a98b83b..ed6ace3 100644
--- a/services/core/java/com/android/server/am/BatteryStatsService.java
+++ b/services/core/java/com/android/server/am/BatteryStatsService.java
@@ -53,7 +53,6 @@
 import android.telephony.SignalStrength;
 import android.telephony.TelephonyManager;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.os.BatteryStatsHelper;
@@ -62,6 +61,7 @@
 import com.android.internal.os.RailStats;
 import com.android.internal.os.RpmStats;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.ParseUtils;
 import com.android.server.LocalServices;
 
@@ -347,16 +347,16 @@
     void noteProcessStart(String name, int uid) {
         synchronized (mStats) {
             mStats.noteProcessStartLocked(name, uid);
-            StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
-                    StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__STARTED);
+            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
+                    FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__STARTED);
         }
     }
 
     void noteProcessCrash(String name, int uid) {
         synchronized (mStats) {
             mStats.noteProcessCrashLocked(name, uid);
-            StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
-                    StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__CRASHED);
+            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
+                    FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__CRASHED);
         }
     }
 
@@ -369,15 +369,15 @@
     void noteProcessFinish(String name, int uid) {
         synchronized (mStats) {
             mStats.noteProcessFinishLocked(name, uid);
-            StatsLog.write(StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
-                    StatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__FINISHED);
+            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED, uid, name,
+                    FrameworkStatsLog.PROCESS_LIFE_CYCLE_STATE_CHANGED__STATE__FINISHED);
         }
     }
 
     /** @param state Process state from ActivityManager.java. */
     void noteUidProcessState(int uid, int state) {
         synchronized (mStats) {
-            StatsLog.write(StatsLog.UID_PROCESS_STATE_CHANGED, uid,
+            FrameworkStatsLog.write(FrameworkStatsLog.UID_PROCESS_STATE_CHANGED, uid,
                     ActivityManager.processStateAmToProto(state));
 
             mStats.noteUidProcessStateLocked(uid, state);
@@ -453,8 +453,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteSyncStartLocked(name, uid);
-            StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, uid, null, name,
-                    StatsLog.SYNC_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SYNC_STATE_CHANGED, uid, null,
+                    name, FrameworkStatsLog.SYNC_STATE_CHANGED__STATE__ON);
         }
     }
 
@@ -462,8 +462,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteSyncFinishLocked(name, uid);
-            StatsLog.write_non_chained(StatsLog.SYNC_STATE_CHANGED, uid, null, name,
-                    StatsLog.SYNC_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SYNC_STATE_CHANGED, uid, null,
+                    name, FrameworkStatsLog.SYNC_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -472,8 +472,9 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteJobStartLocked(name, uid);
-            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null,
-                    name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED,
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED,
+                    uid, null, name,
+                    FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__STARTED,
                     JobProtoEnums.STOP_REASON_UNKNOWN, standbyBucket, jobid);
         }
     }
@@ -483,9 +484,10 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteJobFinishLocked(name, uid, stopReason);
-            StatsLog.write_non_chained(StatsLog.SCHEDULED_JOB_STATE_CHANGED, uid, null,
-                    name, StatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED,
-                    stopReason, standbyBucket, jobid);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED,
+                    uid, null, name,
+                    FrameworkStatsLog.SCHEDULED_JOB_STATE_CHANGED__STATE__FINISHED, stopReason,
+                    standbyBucket, jobid);
         }
     }
 
@@ -600,8 +602,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteStartSensorLocked(uid, sensor);
-            StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, uid, null, sensor,
-                    StatsLog.SENSOR_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SENSOR_STATE_CHANGED, uid, null,
+                    sensor, FrameworkStatsLog.SENSOR_STATE_CHANGED__STATE__ON);
         }
     }
 
@@ -609,8 +611,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteStopSensorLocked(uid, sensor);
-            StatsLog.write_non_chained(StatsLog.SENSOR_STATE_CHANGED, uid, null,
-                    sensor, StatsLog.SENSOR_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.SENSOR_STATE_CHANGED, uid, null,
+                    sensor, FrameworkStatsLog.SENSOR_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -646,7 +648,7 @@
         enforceCallingPermission();
         if (DBG) Slog.d(TAG, "begin noteScreenState");
         synchronized (mStats) {
-            StatsLog.write(StatsLog.SCREEN_STATE_CHANGED, state);
+            FrameworkStatsLog.write(FrameworkStatsLog.SCREEN_STATE_CHANGED, state);
 
             mStats.noteScreenStateLocked(state);
         }
@@ -656,7 +658,7 @@
     public void noteScreenBrightness(int brightness) {
         enforceCallingPermission();
         synchronized (mStats) {
-            StatsLog.write(StatsLog.SCREEN_BRIGHTNESS_CHANGED, brightness);
+            FrameworkStatsLog.write(FrameworkStatsLog.SCREEN_BRIGHTNESS_CHANGED, brightness);
             mStats.noteScreenBrightnessLocked(brightness);
         }
     }
@@ -742,8 +744,8 @@
         synchronized (mStats) {
             mStats.noteWifiOnLocked();
         }
-        StatsLog.write(StatsLog.WIFI_ENABLED_STATE_CHANGED,
-                StatsLog.WIFI_ENABLED_STATE_CHANGED__STATE__ON);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_ENABLED_STATE_CHANGED,
+                FrameworkStatsLog.WIFI_ENABLED_STATE_CHANGED__STATE__ON);
     }
 
     public void noteWifiOff() {
@@ -751,16 +753,16 @@
         synchronized (mStats) {
             mStats.noteWifiOffLocked();
         }
-        StatsLog.write(StatsLog.WIFI_ENABLED_STATE_CHANGED,
-                StatsLog.WIFI_ENABLED_STATE_CHANGED__STATE__OFF);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_ENABLED_STATE_CHANGED,
+                FrameworkStatsLog.WIFI_ENABLED_STATE_CHANGED__STATE__OFF);
     }
 
     public void noteStartAudio(int uid) {
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteAudioOnLocked(uid);
-            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, uid, null,
-                    StatsLog.AUDIO_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.AUDIO_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.AUDIO_STATE_CHANGED__STATE__ON);
         }
     }
 
@@ -768,8 +770,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteAudioOffLocked(uid);
-            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, uid, null,
-                    StatsLog.AUDIO_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.AUDIO_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.AUDIO_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -777,8 +779,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteVideoOnLocked(uid);
-            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, uid, null,
-                    StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED, uid,
+                    null, FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__ON);
         }
     }
 
@@ -786,8 +788,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteVideoOffLocked(uid);
-            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, uid,
-                    null, StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED, uid,
+                    null, FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -795,8 +797,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteResetAudioLocked();
-            StatsLog.write_non_chained(StatsLog.AUDIO_STATE_CHANGED, -1, null,
-                    StatsLog.AUDIO_STATE_CHANGED__STATE__RESET);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.AUDIO_STATE_CHANGED, -1, null,
+                    FrameworkStatsLog.AUDIO_STATE_CHANGED__STATE__RESET);
         }
     }
 
@@ -804,8 +806,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteResetVideoLocked();
-            StatsLog.write_non_chained(StatsLog.MEDIA_CODEC_STATE_CHANGED, -1, null,
-                    StatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__RESET);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED, -1,
+                    null, FrameworkStatsLog.MEDIA_CODEC_STATE_CHANGED__STATE__RESET);
         }
     }
 
@@ -813,8 +815,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteFlashlightOnLocked(uid);
-            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, uid, null,
-                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED, uid,
+                    null, FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED__STATE__ON);
         }
     }
 
@@ -822,8 +824,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteFlashlightOffLocked(uid);
-            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, uid, null,
-                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED, uid,
+                    null, FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -832,8 +834,8 @@
         if (DBG) Slog.d(TAG, "begin noteStartCamera");
         synchronized (mStats) {
             mStats.noteCameraOnLocked(uid);
-            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, uid, null,
-                    StatsLog.CAMERA_STATE_CHANGED__STATE__ON);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.CAMERA_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.CAMERA_STATE_CHANGED__STATE__ON);
         }
         if (DBG) Slog.d(TAG, "end noteStartCamera");
     }
@@ -842,8 +844,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteCameraOffLocked(uid);
-            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, uid, null,
-                    StatsLog.CAMERA_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.CAMERA_STATE_CHANGED, uid, null,
+                    FrameworkStatsLog.CAMERA_STATE_CHANGED__STATE__OFF);
         }
     }
 
@@ -851,8 +853,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteResetCameraLocked();
-            StatsLog.write_non_chained(StatsLog.CAMERA_STATE_CHANGED, -1, null,
-                    StatsLog.CAMERA_STATE_CHANGED__STATE__RESET);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.CAMERA_STATE_CHANGED, -1, null,
+                    FrameworkStatsLog.CAMERA_STATE_CHANGED__STATE__RESET);
         }
     }
 
@@ -860,8 +862,8 @@
         enforceCallingPermission();
         synchronized (mStats) {
             mStats.noteResetFlashlightLocked();
-            StatsLog.write_non_chained(StatsLog.FLASHLIGHT_STATE_CHANGED, -1, null,
-                    StatsLog.FLASHLIGHT_STATE_CHANGED__STATE__RESET);
+            FrameworkStatsLog.write_non_chained(FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED, -1,
+                    null, FrameworkStatsLog.FLASHLIGHT_STATE_CHANGED__STATE__RESET);
         }
     }
 
@@ -888,8 +890,8 @@
             mStats.noteWifiRunningLocked(ws);
         }
         // TODO: Log WIFI_RUNNING_STATE_CHANGED in a better spot to include Hotspot too.
-        StatsLog.write(StatsLog.WIFI_RUNNING_STATE_CHANGED,
-                ws, StatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__ON);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED,
+                ws, FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__ON);
     }
 
     public void noteWifiRunningChanged(WorkSource oldWs, WorkSource newWs) {
@@ -897,10 +899,10 @@
         synchronized (mStats) {
             mStats.noteWifiRunningChangedLocked(oldWs, newWs);
         }
-        StatsLog.write(StatsLog.WIFI_RUNNING_STATE_CHANGED,
-                newWs, StatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__ON);
-        StatsLog.write(StatsLog.WIFI_RUNNING_STATE_CHANGED,
-                oldWs, StatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__OFF);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED,
+                newWs, FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__ON);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED,
+                oldWs, FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__OFF);
     }
 
     public void noteWifiStopped(WorkSource ws) {
@@ -908,8 +910,8 @@
         synchronized (mStats) {
             mStats.noteWifiStoppedLocked(ws);
         }
-        StatsLog.write(StatsLog.WIFI_RUNNING_STATE_CHANGED,
-                ws, StatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__OFF);
+        FrameworkStatsLog.write(FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED,
+                ws, FrameworkStatsLog.WIFI_RUNNING_STATE_CHANGED__STATE__OFF);
     }
 
     public void noteWifiState(int wifiState, String accessPoint) {
diff --git a/services/core/java/com/android/server/am/BroadcastFilter.java b/services/core/java/com/android/server/am/BroadcastFilter.java
index 1ec8db0..578db6f 100644
--- a/services/core/java/com/android/server/am/BroadcastFilter.java
+++ b/services/core/java/com/android/server/am/BroadcastFilter.java
@@ -27,6 +27,7 @@
     // Back-pointer to the list this filter is in.
     final ReceiverList receiverList;
     final String packageName;
+    final String featureId;
     final String requiredPermission;
     final int owningUid;
     final int owningUserId;
@@ -34,11 +35,12 @@
     final boolean visibleToInstantApp;
 
     BroadcastFilter(IntentFilter _filter, ReceiverList _receiverList,
-            String _packageName, String _requiredPermission, int _owningUid, int _userId,
+            String _packageName, String _featureId, String _requiredPermission, int _owningUid, int _userId,
             boolean _instantApp, boolean _visibleToInstantApp) {
         super(_filter);
         receiverList = _receiverList;
         packageName = _packageName;
+        featureId = _featureId;
         requiredPermission = _requiredPermission;
         owningUid = _owningUid;
         owningUserId = _userId;
diff --git a/services/core/java/com/android/server/am/BroadcastQueue.java b/services/core/java/com/android/server/am/BroadcastQueue.java
index 6fca3f6..26ef707 100644
--- a/services/core/java/com/android/server/am/BroadcastQueue.java
+++ b/services/core/java/com/android/server/am/BroadcastQueue.java
@@ -47,10 +47,11 @@
 import android.util.EventLog;
 import android.util.Slog;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
+import com.android.internal.util.FrameworkStatsLog;
+
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.text.SimpleDateFormat;
@@ -647,10 +648,10 @@
                 skip = true;
             } else {
                 final int opCode = AppOpsManager.permissionToOpCode(filter.requiredPermission);
-                // TODO moltmann: Set featureId from caller
                 if (opCode != AppOpsManager.OP_NONE
-                        && mService.mAppOpsService.noteOperation(opCode, r.callingUid,
-                        r.callerPackage, null, false, "") != AppOpsManager.MODE_ALLOWED) {
+                        && mService.getAppOpsManager().noteOpNoThrow(opCode, r.callingUid,
+                        r.callerPackage, r.callerFeatureId, "")
+                        != AppOpsManager.MODE_ALLOWED) {
                     Slog.w(TAG, "Appop Denial: broadcasting "
                             + r.intent.toString()
                             + " from " + r.callerPackage + " (pid="
@@ -680,10 +681,9 @@
                     break;
                 }
                 int appOp = AppOpsManager.permissionToOpCode(requiredPermission);
-                // TODO moltmann: Set featureId from caller
                 if (appOp != AppOpsManager.OP_NONE && appOp != r.appOp
-                        && mService.mAppOpsService.noteOperation(appOp,
-                        filter.receiverList.uid, filter.packageName, null, false, "")
+                        && mService.getAppOpsManager().noteOpNoThrow(appOp,
+                        filter.receiverList.uid, filter.packageName, filter.featureId, "")
                         != AppOpsManager.MODE_ALLOWED) {
                     Slog.w(TAG, "Appop Denial: receiving "
                             + r.intent.toString()
@@ -713,10 +713,9 @@
                 skip = true;
             }
         }
-        // TODO moltmann: Set featureId from caller
         if (!skip && r.appOp != AppOpsManager.OP_NONE
-                && mService.mAppOpsService.noteOperation(r.appOp,
-                filter.receiverList.uid, filter.packageName, null, false, "")
+                && mService.getAppOpsManager().noteOpNoThrow(r.appOp,
+                filter.receiverList.uid, filter.packageName, filter.featureId, "")
                 != AppOpsManager.MODE_ALLOWED) {
             Slog.w(TAG, "Appop Denial: receiving "
                     + r.intent.toString()
@@ -862,7 +861,8 @@
         if (callerForeground && receiverRecord.intent.getComponent() != null) {
             IIntentSender target = mService.mPendingIntentController.getIntentSender(
                     ActivityManager.INTENT_SENDER_BROADCAST, receiverRecord.callerPackage,
-                    receiverRecord.callingUid, receiverRecord.userId, null, null, 0,
+                    receiverRecord.callerFeatureId, receiverRecord.callingUid,
+                    receiverRecord.userId, null, null, 0,
                     new Intent[]{receiverRecord.intent},
                     new String[]{receiverRecord.intent.resolveType(mService.mContext
                             .getContentResolver())},
@@ -1255,8 +1255,8 @@
             r.dispatchClockTime = System.currentTimeMillis();
 
             if (mLogLatencyMetrics) {
-                StatsLog.write(
-                        StatsLog.BROADCAST_DISPATCH_LATENCY_REPORTED,
+                FrameworkStatsLog.write(
+                        FrameworkStatsLog.BROADCAST_DISPATCH_LATENCY_REPORTED,
                         r.dispatchClockTime - r.enqueueClockTime);
             }
 
@@ -1370,10 +1370,9 @@
             skip = true;
         } else if (!skip && info.activityInfo.permission != null) {
             final int opCode = AppOpsManager.permissionToOpCode(info.activityInfo.permission);
-            // TODO moltmann: Set featureId from caller
             if (opCode != AppOpsManager.OP_NONE
-                    && mService.mAppOpsService.noteOperation(opCode, r.callingUid, r.callerPackage,
-                    null, false, "") != AppOpsManager.MODE_ALLOWED) {
+                    && mService.getAppOpsManager().noteOpNoThrow(opCode, r.callingUid, r.callerPackage,
+                    r.callerFeatureId, "") != AppOpsManager.MODE_ALLOWED) {
                 Slog.w(TAG, "Appop Denial: broadcasting "
                         + r.intent.toString()
                         + " from " + r.callerPackage + " (pid="
@@ -1409,11 +1408,10 @@
                     break;
                 }
                 int appOp = AppOpsManager.permissionToOpCode(requiredPermission);
-                // TODO moltmann: Set featureId from caller
                 if (appOp != AppOpsManager.OP_NONE && appOp != r.appOp
-                        && mService.mAppOpsService.noteOperation(appOp,
-                        info.activityInfo.applicationInfo.uid, info.activityInfo.packageName, null,
-                        false, "")
+                        && mService.getAppOpsManager().noteOpNoThrow(appOp,
+                        info.activityInfo.applicationInfo.uid, info.activityInfo.packageName,
+                        null /* default featureId */, "")
                         != AppOpsManager.MODE_ALLOWED) {
                     Slog.w(TAG, "Appop Denial: receiving "
                             + r.intent + " to "
@@ -1427,11 +1425,10 @@
                 }
             }
         }
-        // TODO moltmann: Set featureId from caller
         if (!skip && r.appOp != AppOpsManager.OP_NONE
-                && mService.mAppOpsService.noteOperation(r.appOp,
-                info.activityInfo.applicationInfo.uid, info.activityInfo.packageName, null, false,
-                "")
+                && mService.getAppOpsManager().noteOpNoThrow(r.appOp,
+                info.activityInfo.applicationInfo.uid, info.activityInfo.packageName,
+                null  /* default featureId */, "")
                 != AppOpsManager.MODE_ALLOWED) {
             Slog.w(TAG, "Appop Denial: receiving "
                     + r.intent + " to "
diff --git a/services/core/java/com/android/server/am/BroadcastRecord.java b/services/core/java/com/android/server/am/BroadcastRecord.java
index f263886..8ef67f9 100644
--- a/services/core/java/com/android/server/am/BroadcastRecord.java
+++ b/services/core/java/com/android/server/am/BroadcastRecord.java
@@ -16,6 +16,7 @@
 
 package com.android.server.am;
 
+import android.annotation.Nullable;
 import android.app.AppOpsManager;
 import android.app.BroadcastOptions;
 import android.content.ComponentName;
@@ -51,6 +52,7 @@
     final ComponentName targetComp; // original component name set on the intent
     final ProcessRecord callerApp; // process that sent this
     final String callerPackage; // who sent this
+    final @Nullable String callerFeatureId; // which feature in the package sent this
     final int callingPid;   // the pid of who sent this
     final int callingUid;   // the uid of who sent this
     final boolean callerInstantApp; // caller is an Instant App?
@@ -233,7 +235,8 @@
 
     BroadcastRecord(BroadcastQueue _queue,
             Intent _intent, ProcessRecord _callerApp, String _callerPackage,
-            int _callingPid, int _callingUid, boolean _callerInstantApp, String _resolvedType,
+            @Nullable String _callerFeatureId, int _callingPid, int _callingUid,
+            boolean _callerInstantApp, String _resolvedType,
             String[] _requiredPermissions, int _appOp, BroadcastOptions _options, List _receivers,
             IIntentReceiver _resultTo, int _resultCode, String _resultData, Bundle _resultExtras,
             boolean _serialized, boolean _sticky, boolean _initialSticky, int _userId,
@@ -246,6 +249,7 @@
         targetComp = _intent.getComponent();
         callerApp = _callerApp;
         callerPackage = _callerPackage;
+        callerFeatureId = _callerFeatureId;
         callingPid = _callingPid;
         callingUid = _callingUid;
         callerInstantApp = _callerInstantApp;
@@ -280,6 +284,7 @@
 
         callerApp = from.callerApp;
         callerPackage = from.callerPackage;
+        callerFeatureId = from.callerFeatureId;
         callingPid = from.callingPid;
         callingUid = from.callingUid;
         callerInstantApp = from.callerInstantApp;
@@ -343,8 +348,8 @@
         }
 
         // build a new BroadcastRecord around that single-target list
-        BroadcastRecord split = new BroadcastRecord(queue, intent, callerApp,
-                callerPackage, callingPid, callingUid, callerInstantApp, resolvedType,
+        BroadcastRecord split = new BroadcastRecord(queue, intent, callerApp, callerPackage,
+                callerFeatureId, callingPid, callingUid, callerInstantApp, resolvedType,
                 requiredPermissions, appOp, options, splitReceivers, resultTo, resultCode,
                 resultData, resultExtras, ordered, sticky, initialSticky, userId,
                 allowBackgroundActivityStarts, timeoutExempt);
diff --git a/services/core/java/com/android/server/am/CachedAppOptimizer.java b/services/core/java/com/android/server/am/CachedAppOptimizer.java
index 6819578..eec68dc 100644
--- a/services/core/java/com/android/server/am/CachedAppOptimizer.java
+++ b/services/core/java/com/android/server/am/CachedAppOptimizer.java
@@ -36,10 +36,10 @@
 import android.text.TextUtils;
 import android.util.EventLog;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.ServiceThread;
 
 import java.io.FileOutputStream;
@@ -442,7 +442,7 @@
      */
     @GuardedBy("mPhenotypeFlagLock")
     private void updateUseFreezer() {
-        if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+        if (DeviceConfig.getBoolean(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER_NATIVE_BOOT,
                     KEY_USE_FREEZER, DEFAULT_USE_FREEZER)) {
             mUseFreezer = isFreezerSupported();
         }
@@ -849,11 +849,11 @@
                         // on every single compaction for a flag that will seldom change and the
                         // impact of reading the wrong value here is low.
                         if (mRandom.nextFloat() < mCompactStatsdSampleRate) {
-                            StatsLog.write(StatsLog.APP_COMPACTED, pid, name, pendingAction,
-                                    rssBefore[0], rssBefore[1], rssBefore[2], rssBefore[3],
-                                    rssAfter[0], rssAfter[1], rssAfter[2], rssAfter[3], time,
-                                    lastCompactAction, lastCompactTime, lastOomAdj,
-                                    ActivityManager.processStateAmToProto(procState),
+                            FrameworkStatsLog.write(FrameworkStatsLog.APP_COMPACTED, pid, name,
+                                    pendingAction, rssBefore[0], rssBefore[1], rssBefore[2],
+                                    rssBefore[3], rssAfter[0], rssAfter[1], rssAfter[2],
+                                    rssAfter[3], time, lastCompactAction, lastCompactTime,
+                                    lastOomAdj, ActivityManager.processStateAmToProto(procState),
                                     zramFreeKbBefore, zramFreeKbAfter);
                         }
 
@@ -946,6 +946,15 @@
                 }
 
                 EventLog.writeEvent(EventLogTags.AM_FREEZE, pid, name);
+
+                // See above for why we're not taking mPhenotypeFlagLock here
+                if (mRandom.nextFloat() < mFreezerStatsdSampleRate) {
+                    FrameworkStatsLog.write(FrameworkStatsLog.APP_FREEZE_CHANGED,
+                            FrameworkStatsLog.APP_FREEZE_CHANGED__ACTION__FREEZE_APP,
+                            pid,
+                            name,
+                            unfrozenDuration);
+                }
             }
         }
 
@@ -994,6 +1003,16 @@
                 }
 
                 EventLog.writeEvent(EventLogTags.AM_UNFREEZE, pid, name);
+
+                // See above for why we're not taking mPhenotypeFlagLock here
+                if (mRandom.nextFloat() < mFreezerStatsdSampleRate) {
+                    FrameworkStatsLog.write(
+                            FrameworkStatsLog.APP_FREEZE_CHANGED,
+                            FrameworkStatsLog.APP_FREEZE_CHANGED__ACTION__UNFREEZE_APP,
+                            pid,
+                            name,
+                            frozenDuration);
+                }
             }
         }
     }
diff --git a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
index 60754fb..a6811e3 100644
--- a/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
+++ b/services/core/java/com/android/server/am/CarUserSwitchingDialog.java
@@ -30,7 +30,6 @@
 import android.graphics.PorterDuffXfermode;
 import android.graphics.Rect;
 import android.graphics.RectF;
-import android.graphics.drawable.ColorDrawable;
 import android.graphics.drawable.Drawable;
 import android.os.UserManager;
 import android.provider.Settings;
@@ -57,8 +56,6 @@
             String switchingToSystemUserMessage) {
         super(service, context, oldUser, newUser, aboveSystem, switchingFromSystemUserMessage,
                 switchingToSystemUserMessage);
-
-        getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
     }
 
     @Override
diff --git a/services/core/java/com/android/server/am/OomAdjuster.java b/services/core/java/com/android/server/am/OomAdjuster.java
index 3bd7d5c..a651d9d 100644
--- a/services/core/java/com/android/server/am/OomAdjuster.java
+++ b/services/core/java/com/android/server/am/OomAdjuster.java
@@ -36,7 +36,9 @@
 import static android.app.ActivityManager.PROCESS_STATE_SERVICE;
 import static android.app.ActivityManager.PROCESS_STATE_TOP;
 import static android.app.ActivityManager.PROCESS_STATE_TRANSIENT_BACKGROUND;
+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_MICROPHONE;
 import static android.os.Process.SCHED_OTHER;
 import static android.os.Process.THREAD_GROUP_BACKGROUND;
 import static android.os.Process.THREAD_GROUP_DEFAULT;
@@ -70,7 +72,6 @@
 import android.app.ActivityManager;
 import android.app.ApplicationExitInfo;
 import android.app.usage.UsageEvents;
-import android.compat.Compatibility;
 import android.compat.annotation.ChangeId;
 import android.compat.annotation.Disabled;
 import android.compat.annotation.EnabledAfter;
@@ -82,6 +83,7 @@
 import android.os.PowerManagerInternal;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.SystemClock;
 import android.os.Trace;
 import android.os.UserHandle;
@@ -93,6 +95,7 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.procstats.ProcessStats;
+import com.android.internal.compat.IPlatformCompat;
 import com.android.server.LocalServices;
 import com.android.server.ServiceThread;
 import com.android.server.wm.ActivityServiceConnectionsHolder;
@@ -137,8 +140,8 @@
     /**
      * In targetSdkVersion R and above, foreground service has camera and microphone while-in-use
      * capability only when the {@link android.R.attr#foregroundServiceType} is configured as
-     * {@link ServiceInfo#FOREGROUND_SERVICE_TYPE_CAMERA} and
-     * {@link ServiceInfo#FOREGROUND_SERVICE_TYPE_MICROPHONE} respectively in the
+     * {@link android.content.pm.ServiceInfo#FOREGROUND_SERVICE_TYPE_CAMERA} and
+     * {@link android.content.pm.ServiceInfo#FOREGROUND_SERVICE_TYPE_MICROPHONE} respectively in the
      * manifest file.
      * In targetSdkVersion below R, foreground service automatically have camera and microphone
      * capabilities.
@@ -210,6 +213,8 @@
     private ActiveUids mTmpUidRecords;
     private ArrayDeque<ProcessRecord> mTmpQueue;
 
+    private final IPlatformCompat mPlatformCompat;
+
     OomAdjuster(ActivityManagerService service, ProcessList processList, ActiveUids activeUids) {
         this(service, processList, activeUids, createAdjusterThread());
     }
@@ -256,6 +261,8 @@
         mTmpQueue = new ArrayDeque<ProcessRecord>(mConstants.CUR_MAX_CACHED_PROCESSES << 1);
         mNumSlots = ((ProcessList.CACHED_APP_MAX_ADJ - ProcessList.CACHED_APP_MIN_ADJ + 1) >> 1)
                 / ProcessList.CACHED_APP_IMPORTANCE_LEVELS;
+        IBinder b = ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
+        mPlatformCompat = IPlatformCompat.Stub.asInterface(b);
     }
 
     void initSettings() {
@@ -323,6 +330,7 @@
             // If this proc state is changed, need to update its uid record here
             if (uidRec.getCurProcState() != PROCESS_STATE_NONEXISTENT
                     && (uidRec.setProcState != uidRec.getCurProcState()
+                    || uidRec.setCapability != uidRec.curCapability
                     || uidRec.setWhitelist != uidRec.curWhitelist)) {
                 ActiveUids uids = mTmpUidRecords;
                 uids.clear();
@@ -1492,8 +1500,23 @@
                                     != 0 ? TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION : 0;
                 }
                 if (s.mAllowWhileInUsePermissionInFgs) {
-                    capabilityFromFGS |= PROCESS_CAPABILITY_FOREGROUND_CAMERA
-                            | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
+                    boolean enabled = false;
+                    try {
+                        enabled = mPlatformCompat.isChangeEnabled(
+                                CAMERA_MICROPHONE_CAPABILITY_CHANGE_ID, s.appInfo);
+                    } catch (RemoteException e) {
+                    }
+                    if (enabled) {
+                        capabilityFromFGS |=
+                                (fgsType & FOREGROUND_SERVICE_TYPE_CAMERA)
+                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_CAMERA : 0;
+                        capabilityFromFGS |=
+                                (fgsType & FOREGROUND_SERVICE_TYPE_MICROPHONE)
+                                        != 0 ? PROCESS_CAPABILITY_FOREGROUND_MICROPHONE : 0;
+                    } else {
+                        capabilityFromFGS |= PROCESS_CAPABILITY_FOREGROUND_CAMERA
+                                | PROCESS_CAPABILITY_FOREGROUND_MICROPHONE;
+                    }
                 }
             }
 
@@ -1667,7 +1690,13 @@
                                 // Go at most to BOUND_TOP, unless requested to elevate
                                 // to client's state.
                                 clientProcState = PROCESS_STATE_BOUND_TOP;
-                                if (Compatibility.isChangeEnabled(PROCESS_CAPABILITY_CHANGE_ID)) {
+                                boolean enabled = false;
+                                try {
+                                    enabled = mPlatformCompat.isChangeEnabled(
+                                            PROCESS_CAPABILITY_CHANGE_ID, client.info);
+                                } catch (RemoteException e) {
+                                }
+                                if (enabled) {
                                     if (cr.hasFlag(Context.BIND_INCLUDE_CAPABILITIES)) {
                                         // TOP process passes all capabilities to the service.
                                         capability = PROCESS_CAPABILITY_ALL;
diff --git a/services/core/java/com/android/server/am/PendingIntentController.java b/services/core/java/com/android/server/am/PendingIntentController.java
index df76713..eacf088 100644
--- a/services/core/java/com/android/server/am/PendingIntentController.java
+++ b/services/core/java/com/android/server/am/PendingIntentController.java
@@ -23,6 +23,7 @@
 import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
 import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
 
+import android.annotation.Nullable;
 import android.app.Activity;
 import android.app.ActivityManagerInternal;
 import android.app.AppGlobals;
@@ -88,9 +89,9 @@
         }
     }
 
-    public PendingIntentRecord getIntentSender(int type, String packageName, int callingUid,
-            int userId, IBinder token, String resultWho, int requestCode, Intent[] intents,
-            String[] resolvedTypes, int flags, Bundle bOptions) {
+    public PendingIntentRecord getIntentSender(int type, String packageName,
+            @Nullable String featureId, int callingUid, int userId, IBinder token, String resultWho,
+            int requestCode, Intent[] intents, String[] resolvedTypes, int flags, Bundle bOptions) {
         synchronized (mLock) {
             if (DEBUG_MU) Slog.v(TAG_MU, "getIntentSender(): uid=" + callingUid);
 
@@ -109,8 +110,8 @@
             flags &= ~(PendingIntent.FLAG_NO_CREATE | PendingIntent.FLAG_CANCEL_CURRENT
                     | PendingIntent.FLAG_UPDATE_CURRENT);
 
-            PendingIntentRecord.Key key = new PendingIntentRecord.Key(type, packageName, token,
-                    resultWho, requestCode, intents, resolvedTypes, flags,
+            PendingIntentRecord.Key key = new PendingIntentRecord.Key(type, packageName, featureId,
+                    token, resultWho, requestCode, intents, resolvedTypes, flags,
                     SafeActivityOptions.fromBundle(bOptions), userId);
             WeakReference<PendingIntentRecord> ref;
             ref = mIntentSenderRecords.get(key);
diff --git a/services/core/java/com/android/server/am/PendingIntentRecord.java b/services/core/java/com/android/server/am/PendingIntentRecord.java
index 3ba2210..d54d2d7 100644
--- a/services/core/java/com/android/server/am/PendingIntentRecord.java
+++ b/services/core/java/com/android/server/am/PendingIntentRecord.java
@@ -17,14 +17,16 @@
 package com.android.server.am;
 
 import static android.app.ActivityManager.START_SUCCESS;
+
 import static com.android.server.am.ActivityManagerDebugConfig.TAG_AM;
 import static com.android.server.am.ActivityManagerDebugConfig.TAG_WITH_CLASS_NAME;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.ActivityOptions;
-import android.content.IIntentSender;
-import android.content.IIntentReceiver;
 import android.app.PendingIntent;
+import android.content.IIntentReceiver;
+import android.content.IIntentSender;
 import android.content.Intent;
 import android.os.Binder;
 import android.os.Bundle;
@@ -72,6 +74,7 @@
     final static class Key {
         final int type;
         final String packageName;
+        final String featureId;
         final IBinder activity;
         final String who;
         final int requestCode;
@@ -86,10 +89,11 @@
 
         private static final int ODD_PRIME_NUMBER = 37;
 
-        Key(int _t, String _p, IBinder _a, String _w,
+        Key(int _t, String _p, @Nullable String _featureId, IBinder _a, String _w,
                 int _r, Intent[] _i, String[] _it, int _f, SafeActivityOptions _o, int _userId) {
             type = _t;
             packageName = _p;
+            featureId = _featureId;
             activity = _a;
             who = _w;
             requestCode = _r;
@@ -140,6 +144,9 @@
                 if (!Objects.equals(packageName, other.packageName)) {
                     return false;
                 }
+                if (!Objects.equals(featureId, other.featureId)) {
+                    return false;
+                }
                 if (activity != other.activity) {
                     return false;
                 }
@@ -175,7 +182,8 @@
         }
 
         public String toString() {
-            return "Key{" + typeName() + " pkg=" + packageName
+            return "Key{" + typeName()
+                + " pkg=" + packageName + (featureId != null ? "/" + featureId : "")
                 + " intent="
                 + (requestIntent != null
                         ? requestIntent.toShortString(false, true, false, false) : "<null>")
@@ -403,19 +411,20 @@
 
                         if (key.allIntents != null && key.allIntents.length > 1) {
                             res = controller.mAtmInternal.startActivitiesInPackage(
-                                    uid, callingPid, callingUid, key.packageName, allIntents,
-                                    allResolvedTypes, resultTo, mergedOptions, userId,
+                                    uid, callingPid, callingUid, key.packageName, key.featureId,
+                                    allIntents, allResolvedTypes, resultTo, mergedOptions, userId,
                                     false /* validateIncomingUser */,
                                     this /* originatingPendingIntent */,
                                     mAllowBgActivityStartsForActivitySender.contains(whitelistToken));
                         } else {
-                            res = controller.mAtmInternal.startActivityInPackage(
-                                    uid, callingPid, callingUid, key.packageName, finalIntent,
+                            res = controller.mAtmInternal.startActivityInPackage(uid, callingPid,
+                                    callingUid, key.packageName, key.featureId, finalIntent,
                                     resolvedType, resultTo, resultWho, requestCode, 0,
                                     mergedOptions, userId, null, "PendingIntentRecord",
                                     false /* validateIncomingUser */,
                                     this /* originatingPendingIntent */,
-                                    mAllowBgActivityStartsForActivitySender.contains(whitelistToken));
+                                    mAllowBgActivityStartsForActivitySender.contains(
+                                            whitelistToken));
                         }
                     } catch (RuntimeException e) {
                         Slog.w(TAG, "Unable to send startActivity intent", e);
@@ -430,11 +439,12 @@
                         // If a completion callback has been requested, require
                         // that the broadcast be delivered synchronously
                         int sent = controller.mAmInternal.broadcastIntentInPackage(key.packageName,
-                                uid, callingUid, callingPid, finalIntent, resolvedType,
-                                finishedReceiver, code, null, null, requiredPermission, options,
-                                (finishedReceiver != null), false, userId,
+                                key.featureId, uid, callingUid, callingPid, finalIntent,
+                                resolvedType, finishedReceiver, code, null, null,
+                                requiredPermission, options, (finishedReceiver != null), false,
+                                userId,
                                 mAllowBgActivityStartsForBroadcastSender.contains(whitelistToken)
-                                || allowTrampoline);
+                                        || allowTrampoline);
                         if (sent == ActivityManager.BROADCAST_SUCCESS) {
                             sendFinish = false;
                         }
@@ -447,7 +457,7 @@
                     try {
                         controller.mAmInternal.startServiceInPackage(uid, finalIntent, resolvedType,
                                 key.type == ActivityManager.INTENT_SENDER_FOREGROUND_SERVICE,
-                                key.packageName, userId,
+                                key.packageName, key.featureId, userId,
                                 mAllowBgActivityStartsForServiceSender.contains(whitelistToken)
                                 || allowTrampoline);
                     } catch (RuntimeException e) {
@@ -496,6 +506,7 @@
     public void dump(PrintWriter pw, String prefix) {
         pw.print(prefix); pw.print("uid="); pw.print(uid);
                 pw.print(" packageName="); pw.print(key.packageName);
+                pw.print(" featureId="); pw.print(key.featureId);
                 pw.print(" type="); pw.print(key.typeName());
                 pw.print(" flags=0x"); pw.println(Integer.toHexString(key.flags));
         if (key.activity != null || key.who != null) {
@@ -545,6 +556,10 @@
         sb.append(Integer.toHexString(System.identityHashCode(this)));
         sb.append(' ');
         sb.append(key.packageName);
+        if (key.featureId != null) {
+            sb.append('/');
+            sb.append(key.featureId);
+        }
         sb.append(' ');
         sb.append(key.typeName());
         if (whitelistDuration != null) {
diff --git a/services/core/java/com/android/server/am/PreBootBroadcaster.java b/services/core/java/com/android/server/am/PreBootBroadcaster.java
index beb0e47..747e8a8 100644
--- a/services/core/java/com/android/server/am/PreBootBroadcaster.java
+++ b/services/core/java/com/android/server/am/PreBootBroadcaster.java
@@ -108,8 +108,8 @@
 
         mIntent.setComponent(componentName);
         synchronized (mService) {
-            mService.broadcastIntentLocked(null, null, mIntent, null, this, 0, null, null, null,
-                    AppOpsManager.OP_NONE, null, true, false, ActivityManagerService.MY_PID,
+            mService.broadcastIntentLocked(null, null, null, mIntent, null, this, 0, null, null,
+                    null, AppOpsManager.OP_NONE, null, true, false, ActivityManagerService.MY_PID,
                     Process.SYSTEM_UID, Binder.getCallingUid(), Binder.getCallingPid(), mUserId);
         }
     }
diff --git a/services/core/java/com/android/server/am/ProcessList.java b/services/core/java/com/android/server/am/ProcessList.java
index 73ca39b..abe0dd5 100644
--- a/services/core/java/com/android/server/am/ProcessList.java
+++ b/services/core/java/com/android/server/am/ProcessList.java
@@ -100,7 +100,6 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
-import android.util.StatsLog;
 import android.view.Display;
 
 import com.android.internal.annotations.GuardedBy;
@@ -109,6 +108,7 @@
 import com.android.internal.app.procstats.ProcessStats;
 import com.android.internal.os.Zygote;
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.MemInfoReader;
 import com.android.server.LocalServices;
 import com.android.server.ServiceThread;
@@ -739,7 +739,7 @@
                         mSystemServerSocketForZygote.getFileDescriptor(),
                         EVENT_INPUT, this::handleZygoteMessages);
             }
-            mAppExitInfoTracker.init(mService, sKillThread.getLooper());
+            mAppExitInfoTracker.init(mService);
             mImperceptibleKillRunner = new ImperceptibleKillRunner(sKillThread.getLooper());
         }
     }
@@ -1473,7 +1473,7 @@
                 proc.baseProcessTracker.reportCachedKill(proc.pkgList.mPkgList, proc.lastCachedPss);
                 for (int ipkg = proc.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                     ProcessStats.ProcessStateHolder holder = proc.pkgList.valueAt(ipkg);
-                    StatsLog.write(StatsLog.CACHED_KILL_REPORTED,
+                    FrameworkStatsLog.write(FrameworkStatsLog.CACHED_KILL_REPORTED,
                             proc.info.uid,
                             holder.state.getName(),
                             holder.state.getPackage(),
@@ -1495,7 +1495,7 @@
                             proc.lastCachedPss);
                     for (int ipkg = proc.pkgList.size() - 1; ipkg >= 0; ipkg--) {
                         ProcessStats.ProcessStateHolder holder = proc.pkgList.valueAt(ipkg);
-                        StatsLog.write(StatsLog.CACHED_KILL_REPORTED,
+                        FrameworkStatsLog.write(FrameworkStatsLog.CACHED_KILL_REPORTED,
                                 proc.info.uid,
                                 holder.state.getName(),
                                 holder.state.getPackage(),
@@ -1572,9 +1572,24 @@
         if (userGid != UserHandle.ERR_GID) {
             gidList.add(userGid);
         }
-        if (mountExternal == Zygote.MOUNT_EXTERNAL_ANDROID_WRITABLE) {
+        if (mountExternal == Zygote.MOUNT_EXTERNAL_ANDROID_WRITABLE
+                || mountExternal == Zygote.MOUNT_EXTERNAL_PASS_THROUGH) {
             // For DownloadProviders and MTP: To grant access to /sdcard/Android/
+            // And a special case for the FUSE daemon since it runs an MTP server and should have
+            // access to Android/
+            // Note that we must add in the user id, because sdcardfs synthesizes this permission
+            // based on the user
             gidList.add(UserHandle.getUid(UserHandle.getUserId(uid), Process.SDCARD_RW_GID));
+
+            // For devices without sdcardfs, these GIDs are needed instead; note that we
+            // consciously don't add the user_id in the GID, since these apps are anyway
+            // isolated to only their own user
+            gidList.add(Process.EXT_DATA_RW_GID);
+            gidList.add(Process.EXT_OBB_RW_GID);
+        }
+        if (mountExternal == Zygote.MOUNT_EXTERNAL_INSTALLER) {
+            // For devices without sdcardfs, this GID is needed to allow installers access to OBBs
+            gidList.add(Process.EXT_OBB_RW_GID);
         }
         if (mountExternal == Zygote.MOUNT_EXTERNAL_PASS_THROUGH) {
             // For the FUSE daemon: To grant access to the lower filesystem.
@@ -1842,26 +1857,9 @@
         if (mService.mConstants.FLAG_PROCESS_START_ASYNC) {
             if (DEBUG_PROCESSES) Slog.i(TAG_PROCESSES,
                     "Posting procStart msg for " + app.toShortString());
-            mService.mProcStartHandler.post(() -> {
-                try {
-                    final Process.ProcessStartResult startResult = startProcess(app.hostingRecord,
-                            entryPoint, app, app.startUid, gids, runtimeFlags, mountExternal,
-                            app.seInfo, requiredAbi, instructionSet, invokeWith, app.startTime);
-                    synchronized (mService) {
-                        handleProcessStartedLocked(app, startResult, startSeq);
-                    }
-                } catch (RuntimeException e) {
-                    synchronized (mService) {
-                        Slog.e(ActivityManagerService.TAG, "Failure starting process "
-                                + app.processName, e);
-                        mPendingStarts.remove(startSeq);
-                        app.pendingStart = false;
-                        mService.forceStopPackageLocked(app.info.packageName,
-                                UserHandle.getAppId(app.uid),
-                                false, false, true, false, false, app.userId, "start failure");
-                    }
-                }
-            });
+            mService.mProcStartHandler.post(() -> handleProcessStart(
+                    app, entryPoint, gids, runtimeFlags, mountExternal, requiredAbi,
+                    instructionSet, invokeWith, startSeq));
             return true;
         } else {
             try {
@@ -1882,6 +1880,66 @@
         }
     }
 
+    /**
+     * Main handler routine to start the given process from the ProcStartHandler.
+     *
+     * <p>Note: this function doesn't hold the global AM lock intentionally.</p>
+     */
+    private void handleProcessStart(final ProcessRecord app, final String entryPoint,
+            final int[] gids, final int runtimeFlags, final int mountExternal,
+            final String requiredAbi, final String instructionSet,
+            final String invokeWith, final long startSeq) {
+        // If there is a precede instance of the process, wait for its death with a timeout.
+        // Use local reference since we are not using locks here
+        final ProcessRecord precedence = app.mPrecedence;
+        if (precedence != null) {
+            final int pid = precedence.pid;
+            long now = System.currentTimeMillis();
+            final long end = now + PROC_KILL_TIMEOUT;
+            try {
+                Process.waitForProcessDeath(pid, PROC_KILL_TIMEOUT);
+                // It's killed successfully, but we'd make sure the cleanup work is done.
+                synchronized (precedence) {
+                    if (app.mPrecedence != null) {
+                        now = System.currentTimeMillis();
+                        if (now < end) {
+                            try {
+                                precedence.wait(end - now);
+                            } catch (InterruptedException e) {
+                            }
+                        }
+                    }
+                    if (app.mPrecedence != null) {
+                        // The cleanup work hasn't be done yet, let's log it and continue.
+                        Slog.w(TAG, precedence + " has died, but its cleanup isn't done");
+                    }
+                }
+            } catch (Exception e) {
+                // It's still alive...
+                Slog.wtf(TAG, precedence.toString() + " refused to die, but we need to launch "
+                        + app);
+            }
+        }
+        try {
+            final Process.ProcessStartResult startResult = startProcess(app.hostingRecord,
+                    entryPoint, app, app.startUid, gids, runtimeFlags, mountExternal,
+                    app.seInfo, requiredAbi, instructionSet, invokeWith, app.startTime);
+            synchronized (mService) {
+                handleProcessStartedLocked(app, startResult, startSeq);
+            }
+        } catch (RuntimeException e) {
+            synchronized (mService) {
+                Slog.e(ActivityManagerService.TAG, "Failure starting process "
+                        + app.processName, e);
+                mPendingStarts.remove(startSeq);
+                app.pendingStart = false;
+                mService.forceStopPackageLocked(app.info.packageName,
+                        UserHandle.getAppId(app.uid),
+                        false, false, true, false, false, app.userId, "start failure");
+            }
+        }
+    }
+
     @GuardedBy("mService")
     public void killAppZygoteIfNeededLocked(AppZygote appZygote, boolean force) {
         final ApplicationInfo appInfo = appZygote.getAppInfo();
@@ -2136,6 +2194,7 @@
                 + " app=" + app + " knownToBeDead=" + knownToBeDead
                 + " thread=" + (app != null ? app.thread : null)
                 + " pid=" + (app != null ? app.pid : -1));
+        ProcessRecord precedence = null;
         if (app != null && app.pid > 0) {
             if ((!knownToBeDead && !app.killed) || app.thread == null) {
                 // We already have the app running, or are waiting for it to
@@ -2150,9 +2209,15 @@
             // An application record is attached to a previous process,
             // clean it up now.
             if (DEBUG_PROCESSES) Slog.v(TAG_PROCESSES, "App died: " + app);
-            // do the killing
-            killProcAndWaitIfNecessaryLocked(app, true, app.uid == info.uid || app.isolated,
-                    "startProcess: bad proc running, killing: %s", startTime);
+            checkSlow(startTime, "startProcess: bad proc running, killing");
+            ProcessList.killProcessGroup(app.uid, app.pid);
+            checkSlow(startTime, "startProcess: done killing old proc");
+
+            Slog.wtf(TAG_PROCESSES, app.toString() + " is attached to a previous process");
+            // We are not going to re-use the ProcessRecord, as we haven't dealt with the cleanup
+            // routine of it yet, but we'd set it as the precedence of the new process.
+            precedence = app;
+            app = null;
         }
 
         if (app == null) {
@@ -2166,6 +2231,10 @@
             app.crashHandler = crashHandler;
             app.isolatedEntryPoint = entryPoint;
             app.isolatedEntryPointArgs = entryPointArgs;
+            if (precedence != null) {
+                app.mPrecedence = precedence;
+                precedence.mSuccessor = app;
+            }
             checkSlow(startTime, "startProcess: done creating new process record");
         } else {
             // If this is a new package in the process, add the package to the list
@@ -2193,44 +2262,6 @@
         return success ? app : null;
     }
 
-    /**
-     * Kill (if asked to) and wait for the given process died if necessary
-     * @param app - The process record to kill
-     * @param doKill - Kill the given process record
-     * @param wait - Wait for the death of the given process
-     * @param formatString - The log message for slow operation
-     * @param startTime - The start timestamp of the operation
-     */
-    @GuardedBy("mService")
-    void killProcAndWaitIfNecessaryLocked(final ProcessRecord app, final boolean doKill,
-            final boolean wait, final String formatString, final long startTime) {
-
-        checkSlow(startTime, String.format(formatString, "before appDied"));
-
-        if (doKill) {
-            // do the killing
-            ProcessList.killProcessGroup(app.uid, app.pid);
-            noteAppKill(app, ApplicationExitInfo.REASON_OTHER,
-                    ApplicationExitInfo.SUBREASON_UNKNOWN,
-                    String.format(formatString, ""));
-        }
-
-        // wait for the death
-        if (wait) {
-            try {
-                Process.waitForProcessDeath(app.pid, PROC_KILL_TIMEOUT);
-            } catch (Exception e) {
-                // Maybe the process goes into zombie, use an expensive API to check again.
-                if (mService.isProcessAliveLocked(app)) {
-                    Slog.w(TAG, String.format(formatString,
-                              "waiting for app killing timed out"));
-                }
-            }
-        }
-
-        checkSlow(startTime, String.format(formatString, "after appDied"));
-    }
-
     @GuardedBy("mService")
     private String isProcStartValidLocked(ProcessRecord app, long expectedStartSeq) {
         StringBuilder sb = null;
@@ -2640,8 +2671,8 @@
             // about the process state of the isolated UID *before* it is registered with the
             // owning application.
             mService.mBatteryStatsService.addIsolatedUid(uid, info.uid);
-            StatsLog.write(StatsLog.ISOLATED_UID_CHANGED, info.uid, uid,
-                    StatsLog.ISOLATED_UID_CHANGED__EVENT__CREATED);
+            FrameworkStatsLog.write(FrameworkStatsLog.ISOLATED_UID_CHANGED, info.uid, uid,
+                    FrameworkStatsLog.ISOLATED_UID_CHANGED__EVENT__CREATED);
         }
         final ProcessRecord r = new ProcessRecord(mService, info, proc, uid);
 
@@ -3252,6 +3283,9 @@
     }
 
     final ProcessRecord getLRURecordForAppLocked(IApplicationThread thread) {
+        if (thread == null) {
+            return null;
+        }
         final IBinder threadBinder = thread.asBinder();
         // Find the application record.
         for (int i = mLruProcesses.size() - 1; i >= 0; i--) {
diff --git a/services/core/java/com/android/server/am/ProcessRecord.java b/services/core/java/com/android/server/am/ProcessRecord.java
index 1e2dd2d..e63da9b 100644
--- a/services/core/java/com/android/server/am/ProcessRecord.java
+++ b/services/core/java/com/android/server/am/ProcessRecord.java
@@ -56,7 +56,6 @@
 import android.util.EventLog;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
@@ -66,6 +65,7 @@
 import com.android.internal.os.BatteryStatsImpl;
 import com.android.internal.os.ProcessCpuTracker;
 import com.android.internal.os.Zygote;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.wm.WindowProcessController;
 import com.android.server.wm.WindowProcessListener;
 
@@ -320,6 +320,14 @@
     // set of disabled compat changes for the process (all others are enabled)
     long[] mDisabledCompatChanges;
 
+    // The precede instance of the process, which would exist when the previous process is killed
+    // but not fully dead yet; in this case, the new instance of the process should be held until
+    // this precede instance is fully dead.
+    volatile ProcessRecord mPrecedence;
+    // The succeeding instance of the process, which is going to be started after this process
+    // is killed successfully.
+    volatile ProcessRecord mSuccessor;
+
     // Cached task info for OomAdjuster
     private static final int VALUE_INVALID = -1;
     private static final int VALUE_FALSE = 0;
@@ -363,6 +371,15 @@
             }
         }
         pw.println("}");
+        if (processInfo != null) {
+            pw.print(prefix); pw.println("processInfo:");
+            if (processInfo.deniedPermissions != null) {
+                for (int i = 0; i < processInfo.deniedPermissions.size(); i++) {
+                    pw.print(prefix); pw.print("  deny: ");
+                    pw.println(processInfo.deniedPermissions.valueAt(i));
+                }
+            }
+        }
         pw.print(prefix); pw.print("mRequiredAbi="); pw.print(mRequiredAbi);
                 pw.print(" instructionSet="); pw.println(instructionSet);
         if (info.className != null) {
@@ -607,13 +624,20 @@
             int _uid) {
         mService = _service;
         info = _info;
+        ProcessInfo procInfo = null;
         if (_service.mPackageManagerInt != null) {
             ArrayMap<String, ProcessInfo> processes =
                     _service.mPackageManagerInt.getProcessesForUid(_uid);
-            processInfo = processes != null ? processes.get(_processName) : null;
-        } else {
-            processInfo = null;
+            if (processes != null) {
+                procInfo = processes.get(_processName);
+                if (procInfo != null && procInfo.deniedPermissions == null) {
+                    // If this process hasn't asked for permissions to be denied, then
+                    // we don't care about it.
+                    procInfo = null;
+                }
+            }
         }
+        processInfo = procInfo;
         isolated = _info.uid != _uid;
         appZygote = (UserHandle.getAppId(_uid) >= Process.FIRST_APP_ZYGOTE_ISOLATED_UID
                 && UserHandle.getAppId(_uid) <= Process.LAST_APP_ZYGOTE_ISOLATED_UID);
@@ -646,7 +670,7 @@
                 origBase.setState(ProcessStats.STATE_NOTHING,
                         tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList);
                 for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) {
-                    StatsLog.write(StatsLog.PROCESS_STATE_CHANGED,
+                    FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED,
                             uid, processName, pkgList.keyAt(ipkg),
                             ActivityManager.processStateAmToProto(ProcessStats.STATE_NOTHING),
                             pkgList.valueAt(ipkg).appVersion);
@@ -681,7 +705,7 @@
                 origBase.setState(ProcessStats.STATE_NOTHING,
                         tracker.getMemFactorLocked(), SystemClock.uptimeMillis(), pkgList.mPkgList);
                 for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) {
-                    StatsLog.write(StatsLog.PROCESS_STATE_CHANGED,
+                    FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED,
                             uid, processName, pkgList.keyAt(ipkg),
                             ActivityManager.processStateAmToProto(ProcessStats.STATE_NOTHING),
                             pkgList.valueAt(ipkg).appVersion);
@@ -971,7 +995,7 @@
             setCurProcState(newState);
             setCurRawProcState(newState);
             for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) {
-                StatsLog.write(StatsLog.PROCESS_STATE_CHANGED,
+                FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED,
                         uid, processName, pkgList.keyAt(ipkg),
                         ActivityManager.processStateAmToProto(mRepProcState),
                         pkgList.valueAt(ipkg).appVersion);
@@ -989,7 +1013,7 @@
             baseProcessTracker.setState(ProcessStats.STATE_NOTHING,
                     tracker.getMemFactorLocked(), now, pkgList.mPkgList);
             for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) {
-                StatsLog.write(StatsLog.PROCESS_STATE_CHANGED,
+                FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED,
                         uid, processName, pkgList.keyAt(ipkg),
                         ActivityManager.processStateAmToProto(ProcessStats.STATE_NOTHING),
                         pkgList.valueAt(ipkg).appVersion);
@@ -1075,7 +1099,7 @@
     void setReportedProcState(int repProcState) {
         mRepProcState = repProcState;
         for (int ipkg = pkgList.size() - 1; ipkg >= 0; ipkg--) {
-            StatsLog.write(StatsLog.PROCESS_STATE_CHANGED,
+            FrameworkStatsLog.write(FrameworkStatsLog.PROCESS_STATE_CHANGED,
                     uid, processName, pkgList.keyAt(ipkg),
                     ActivityManager.processStateAmToProto(mRepProcState),
                     pkgList.valueAt(ipkg).appVersion);
@@ -1606,16 +1630,16 @@
             Process.sendSignal(pid, Process.SIGNAL_QUIT);
         }
 
-        StatsLog.write(StatsLog.ANR_OCCURRED, uid, processName,
+        FrameworkStatsLog.write(FrameworkStatsLog.ANR_OCCURRED, uid, processName,
                 activityShortComponentName == null ? "unknown": activityShortComponentName,
                 annotation,
                 (this.info != null) ? (this.info.isInstantApp()
-                        ? StatsLog.ANROCCURRED__IS_INSTANT_APP__TRUE
-                        : StatsLog.ANROCCURRED__IS_INSTANT_APP__FALSE)
-                        : StatsLog.ANROCCURRED__IS_INSTANT_APP__UNAVAILABLE,
+                        ? FrameworkStatsLog.ANROCCURRED__IS_INSTANT_APP__TRUE
+                        : FrameworkStatsLog.ANROCCURRED__IS_INSTANT_APP__FALSE)
+                        : FrameworkStatsLog.ANROCCURRED__IS_INSTANT_APP__UNAVAILABLE,
                 isInterestingToUserLocked()
-                        ? StatsLog.ANROCCURRED__FOREGROUND_STATE__FOREGROUND
-                        : StatsLog.ANROCCURRED__FOREGROUND_STATE__BACKGROUND,
+                        ? FrameworkStatsLog.ANROCCURRED__FOREGROUND_STATE__FOREGROUND
+                        : FrameworkStatsLog.ANROCCURRED__FOREGROUND_STATE__BACKGROUND,
                 getProcessClassEnum(),
                 (this.info != null) ? this.info.packageName : "");
         final ProcessRecord parentPr = parentProcess != null
@@ -1886,8 +1910,7 @@
             mWaitDialog = null;
         }
 
-        void forAllDialogs(List<? extends BaseErrorDialog> dialogs,
-                Consumer<BaseErrorDialog> c) {
+        void forAllDialogs(List<? extends BaseErrorDialog> dialogs, Consumer<BaseErrorDialog> c) {
             for (int i = dialogs.size() - 1; i >= 0; i--) {
                 c.accept(dialogs.get(i));
             }
@@ -1896,42 +1919,72 @@
         void showCrashDialogs(AppErrorDialog.Data data) {
             List<Context> contexts = getDisplayContexts(false /* lastUsedOnly */);
             mCrashDialogs = new ArrayList<>();
-
             for (int i = contexts.size() - 1; i >= 0; i--) {
                 final Context c = contexts.get(i);
                 mCrashDialogs.add(new AppErrorDialog(c, mService, data));
             }
-            mService.mUiHandler.post(() -> mCrashDialogs.forEach(Dialog::show));
+            mService.mUiHandler.post(() -> {
+                List<AppErrorDialog> dialogs;
+                synchronized (mService) {
+                    dialogs = mCrashDialogs;
+                }
+                if (dialogs != null) {
+                    forAllDialogs(dialogs, Dialog::show);
+                }
+            });
         }
 
         void showAnrDialogs(AppNotRespondingDialog.Data data) {
             List<Context> contexts = getDisplayContexts(isSilentAnr() /* lastUsedOnly */);
             mAnrDialogs = new ArrayList<>();
-
             for (int i = contexts.size() - 1; i >= 0; i--) {
                 final Context c = contexts.get(i);
                 mAnrDialogs.add(new AppNotRespondingDialog(mService, c, data));
             }
-            mService.mUiHandler.post(() -> mAnrDialogs.forEach(Dialog::show));
+            mService.mUiHandler.post(() -> {
+                List<AppNotRespondingDialog> dialogs;
+                synchronized (mService) {
+                    dialogs = mAnrDialogs;
+                }
+                if (dialogs != null) {
+                    forAllDialogs(dialogs, Dialog::show);
+                }
+            });
         }
 
         void showViolationDialogs(AppErrorResult res) {
             List<Context> contexts = getDisplayContexts(false /* lastUsedOnly */);
             mViolationDialogs = new ArrayList<>();
-
             for (int i = contexts.size() - 1; i >= 0; i--) {
                 final Context c = contexts.get(i);
                 mViolationDialogs.add(
                         new StrictModeViolationDialog(c, mService, res, ProcessRecord.this));
             }
-            mService.mUiHandler.post(() -> mViolationDialogs.forEach(Dialog::show));
+            mService.mUiHandler.post(() -> {
+                List<StrictModeViolationDialog> dialogs;
+                synchronized (mService) {
+                    dialogs = mViolationDialogs;
+                }
+                if (dialogs != null) {
+                    forAllDialogs(dialogs, Dialog::show);
+                }
+            });
         }
 
         void showDebugWaitingDialogs() {
             List<Context> contexts = getDisplayContexts(true /* lastUsedOnly */);
             final Context c = contexts.get(0);
             mWaitDialog = new AppWaitingForDebuggerDialog(mService, c, ProcessRecord.this);
-            mService.mUiHandler.post(() -> mWaitDialog.show());
+
+            mService.mUiHandler.post(() -> {
+                Dialog dialog;
+                synchronized (mService) {
+                    dialog = mWaitDialog;
+                }
+                if (dialog != null) {
+                    dialog.show();
+                }
+            });
         }
 
         /**
diff --git a/services/core/java/com/android/server/am/TEST_MAPPING b/services/core/java/com/android/server/am/TEST_MAPPING
index bc4707f..4061df4 100644
--- a/services/core/java/com/android/server/am/TEST_MAPPING
+++ b/services/core/java/com/android/server/am/TEST_MAPPING
@@ -54,6 +54,14 @@
           "include-filter": "com.android.server.am."
         }
       ]
+    },
+    {
+      "name": "CtsAppSecurityHostTestCases",
+      "options": [
+        {
+          "include-filter": "android.appsecurity.cts.AppDataIsolationTests"
+        }
+      ]
     }
   ]
 }
diff --git a/services/core/java/com/android/server/am/UserController.java b/services/core/java/com/android/server/am/UserController.java
index c5d6bba..88eb885 100644
--- a/services/core/java/com/android/server/am/UserController.java
+++ b/services/core/java/com/android/server/am/UserController.java
@@ -130,6 +130,10 @@
     // giving up on them and unfreezing the screen.
     static final int USER_SWITCH_TIMEOUT_MS = 3 * 1000;
 
+    // Amount of time we wait for observers to handle a user switch before we log a warning.
+    // Must be smaller than USER_SWITCH_TIMEOUT_MS.
+    private static final int USER_SWITCH_WARNING_TIMEOUT_MS = 500;
+
     // ActivityManager thread message constants
     static final int REPORT_USER_SWITCH_MSG = 10;
     static final int CONTINUE_USER_SWITCH_MSG = 20;
@@ -410,6 +414,7 @@
                 Intent intent = new Intent(Intent.ACTION_LOCKED_BOOT_COMPLETED, null);
                 intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
                 intent.addFlags(Intent.FLAG_RECEIVER_NO_ABORT
+                        | Intent.FLAG_RECEIVER_OFFLOAD
                         | Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
                 mInjector.broadcastIntent(intent, null, resultTo, 0, null, null,
                         new String[]{android.Manifest.permission.RECEIVE_BOOT_COMPLETED},
@@ -1615,9 +1620,13 @@
                             synchronized (mLock) {
                                 long delay = SystemClock.elapsedRealtime() - dispatchStartedTime;
                                 if (delay > USER_SWITCH_TIMEOUT_MS) {
-                                    Slog.e(TAG, "User switch timeout: observer "  + name
+                                    Slog.e(TAG, "User switch timeout: observer " + name
                                             + " sent result after " + delay + " ms");
+                                } else if (delay > USER_SWITCH_WARNING_TIMEOUT_MS) {
+                                    Slog.w(TAG, "User switch slowed down by observer " + name
+                                            + ": result sent after " + delay + " ms");
                                 }
+
                                 curWaitingUserSwitchCallbacks.remove(name);
                                 // Continue switching if all callbacks have been notified and
                                 // user switching session is still valid
@@ -2439,10 +2448,10 @@
                 int realCallingPid, @UserIdInt int userId) {
             // TODO b/64165549 Verify that mLock is not held before calling AMS methods
             synchronized (mService) {
-                return mService.broadcastIntentLocked(null, null, intent, resolvedType, resultTo,
-                        resultCode, resultData, resultExtras, requiredPermissions, appOp, bOptions,
-                        ordered, sticky, callingPid, callingUid, realCallingUid, realCallingPid,
-                        userId);
+                return mService.broadcastIntentLocked(null, null, null, intent, resolvedType,
+                        resultTo, resultCode, resultData, resultExtras, requiredPermissions, appOp,
+                        bOptions, ordered, sticky, callingPid, callingUid, realCallingUid,
+                        realCallingPid, userId);
             }
         }
 
diff --git a/services/core/java/com/android/server/appop/AppOpsService.java b/services/core/java/com/android/server/appop/AppOpsService.java
index 1d714a2..3ffe1be 100644
--- a/services/core/java/com/android/server/appop/AppOpsService.java
+++ b/services/core/java/com/android/server/appop/AppOpsService.java
@@ -19,11 +19,15 @@
 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;
+import static android.app.AppOpsManager.CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE;
 import static android.app.AppOpsManager.FILTER_BY_FEATURE_ID;
 import static android.app.AppOpsManager.FILTER_BY_OP_NAMES;
 import static android.app.AppOpsManager.FILTER_BY_PACKAGE_NAME;
 import static android.app.AppOpsManager.FILTER_BY_UID;
 import static android.app.AppOpsManager.HistoricalOpsRequestFilter;
+import static android.app.AppOpsManager.KEY_BG_STATE_SETTLE_TIME;
+import static android.app.AppOpsManager.KEY_FG_SERVICE_STATE_SETTLE_TIME;
+import static android.app.AppOpsManager.KEY_TOP_STATE_SETTLE_TIME;
 import static android.app.AppOpsManager.MODE_ALLOWED;
 import static android.app.AppOpsManager.NoteOpEvent;
 import static android.app.AppOpsManager.OP_CAMERA;
@@ -41,6 +45,7 @@
 import static android.app.AppOpsManager.UID_STATE_MAX_LAST_NON_RESTRICTED;
 import static android.app.AppOpsManager.UID_STATE_PERSISTENT;
 import static android.app.AppOpsManager.UID_STATE_TOP;
+import static android.app.AppOpsManager.WATCH_FOREGROUND_CHANGES;
 import static android.app.AppOpsManager._NUM_OP;
 import static android.app.AppOpsManager.extractFlagsFromKey;
 import static android.app.AppOpsManager.extractUidStateFromKey;
@@ -51,7 +56,10 @@
 import static android.content.Intent.ACTION_PACKAGE_REMOVED;
 import static android.content.Intent.EXTRA_REPLACING;
 import static android.content.pm.PermissionInfo.PROTECTION_DANGEROUS;
-import static android.os.Process.STATSD_UID;
+
+import static com.android.server.appop.AppOpsService.ModeCallback.ALL_OPS;
+
+import static java.lang.Long.max;
 
 import android.Manifest;
 import android.annotation.IntRange;
@@ -70,6 +78,7 @@
 import android.app.AppOpsManagerInternal;
 import android.app.AppOpsManagerInternal.CheckOpsDelegate;
 import android.app.AsyncNotedAppOp;
+import android.compat.Compatibility;
 import android.content.BroadcastReceiver;
 import android.content.ContentResolver;
 import android.content.Context;
@@ -129,7 +138,6 @@
 import com.android.internal.app.IAppOpsService;
 import com.android.internal.os.Zygote;
 import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.CollectionUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.internal.util.Preconditions;
@@ -216,7 +224,7 @@
     //TODO: remove this when development is done.
     private static final int TEMP_PROCESS_CAPABILITY_FOREGROUND_LOCATION = 1 << 31;
 
-    Context mContext;
+    final Context mContext;
     final AtomicFile mFile;
     final Handler mHandler;
 
@@ -291,8 +299,11 @@
     @GuardedBy("this")
     private CheckOpsDelegate mCheckOpsDelegate;
 
-    @GuardedBy("this")
-    private SparseArray<List<Integer>> mSwitchOpToOps;
+    /**
+      * Reverse lookup for {@link AppOpsManager#opToSwitch(int)}. Initialized once and never
+      * changed
+      */
+    private final SparseArray<int[]> mSwitchedOps = new SparseArray<>();
 
     private ActivityManagerInternal mActivityManagerInternal;
 
@@ -343,30 +354,25 @@
      */
     @VisibleForTesting
     final class Constants extends ContentObserver {
-        // Key names stored in the settings value.
-        private static final String KEY_TOP_STATE_SETTLE_TIME = "top_state_settle_time";
-        private static final String KEY_FG_SERVICE_STATE_SETTLE_TIME
-                = "fg_service_state_settle_time";
-        private static final String KEY_BG_STATE_SETTLE_TIME = "bg_state_settle_time";
 
         /**
          * How long we want for a drop in uid state from top to settle before applying it.
          * @see Settings.Global#APP_OPS_CONSTANTS
-         * @see #KEY_TOP_STATE_SETTLE_TIME
+         * @see AppOpsManager#KEY_TOP_STATE_SETTLE_TIME
          */
         public long TOP_STATE_SETTLE_TIME;
 
         /**
          * How long we want for a drop in uid state from foreground to settle before applying it.
          * @see Settings.Global#APP_OPS_CONSTANTS
-         * @see #KEY_FG_SERVICE_STATE_SETTLE_TIME
+         * @see AppOpsManager#KEY_FG_SERVICE_STATE_SETTLE_TIME
          */
         public long FG_SERVICE_STATE_SETTLE_TIME;
 
         /**
          * How long we want for a drop in uid state from background to settle before applying it.
          * @see Settings.Global#APP_OPS_CONSTANTS
-         * @see #KEY_BG_STATE_SETTLE_TIME
+         * @see AppOpsManager#KEY_BG_STATE_SETTLE_TIME
          */
         public long BG_STATE_SETTLE_TIME;
 
@@ -404,9 +410,9 @@
                     Slog.e(TAG, "Bad app ops settings", e);
                 }
                 TOP_STATE_SETTLE_TIME = mParser.getDurationMillis(
-                        KEY_TOP_STATE_SETTLE_TIME, 30 * 1000L);
+                        KEY_TOP_STATE_SETTLE_TIME, 5 * 1000L);
                 FG_SERVICE_STATE_SETTLE_TIME = mParser.getDurationMillis(
-                        KEY_FG_SERVICE_STATE_SETTLE_TIME, 10 * 1000L);
+                        KEY_FG_SERVICE_STATE_SETTLE_TIME, 5 * 1000L);
                 BG_STATE_SETTLE_TIME = mParser.getDurationMillis(
                         KEY_BG_STATE_SETTLE_TIME, 1 * 1000L);
             }
@@ -847,7 +853,12 @@
          */
         public void started(@NonNull IBinder clientId, @AppOpsManager.UidState int uidState)
                 throws RemoteException {
-            if (!parent.isRunning()) {
+            started(clientId, uidState, true);
+        }
+
+        private void started(@NonNull IBinder clientId, @AppOpsManager.UidState int uidState,
+                boolean triggerCallbackIfNeeded) throws RemoteException {
+            if (triggerCallbackIfNeeded && !parent.isRunning()) {
                 scheduleOpActiveChangedIfNeededLocked(parent.op, parent.uid,
                         parent.packageName, true);
             }
@@ -966,8 +977,16 @@
 
                 if (event.getUidState() != newState) {
                     try {
+                        // Remove all but one unfinished start count and then call finished() to
+                        // remove start event object
+                        int numPreviousUnfinishedStarts = event.numUnfinishedStarts;
+                        event.numUnfinishedStarts = 1;
                         finished(event.getClientId(), false);
-                        started(event.getClientId(), newState);
+
+                        // Call started() to add a new start event object and then add the
+                        // previously removed unfinished start counts back
+                        started(event.getClientId(), newState, false);
+                        event.numUnfinishedStarts += numPreviousUnfinishedStarts - 1;
                     } catch (RemoteException e) {
                         if (DEBUG) Slog.e(TAG, "Cannot switch to new uidState " + newState);
                     }
@@ -1178,17 +1197,22 @@
     final AudioRestrictionManager mAudioRestrictionManager = new AudioRestrictionManager();
 
     final class ModeCallback implements DeathRecipient {
+        /** If mWatchedOpCode==ALL_OPS notify for ops affected by the switch-op */
+        public static final int ALL_OPS = -2;
+
         final IAppOpsCallback mCallback;
         final int mWatchingUid;
         final int mFlags;
+        final int mWatchedOpCode;
         final int mCallingUid;
         final int mCallingPid;
 
-        ModeCallback(IAppOpsCallback callback, int watchingUid, int flags, int callingUid,
-                int callingPid) {
+        ModeCallback(IAppOpsCallback callback, int watchingUid, int flags, int watchedOp,
+                int callingUid, int callingPid) {
             mCallback = callback;
             mWatchingUid = watchingUid;
             mFlags = flags;
+            mWatchedOpCode = watchedOp;
             mCallingUid = callingUid;
             mCallingPid = callingPid;
             try {
@@ -1211,6 +1235,10 @@
             UserHandle.formatUid(sb, mWatchingUid);
             sb.append(" flags=0x");
             sb.append(Integer.toHexString(mFlags));
+            if (mWatchedOpCode != OP_NONE) {
+                sb.append(" op=");
+                sb.append(opToName(mWatchedOpCode));
+            }
             sb.append(" from uid=");
             UserHandle.formatUid(sb, mCallingUid);
             sb.append(" pid=");
@@ -1324,16 +1352,23 @@
         featureOp.onClientDeath(clientId);
     }
 
-    public AppOpsService(File storagePath, Handler handler) {
+    public AppOpsService(File storagePath, Handler handler, Context context) {
+        mContext = context;
+
         LockGuard.installLock(this, LockGuard.INDEX_APP_OPS);
         mFile = new AtomicFile(storagePath, "appops");
         mHandler = handler;
         mConstants = new Constants(mHandler);
         readState();
+
+        for (int switchedCode = 0; switchedCode < _NUM_OP; switchedCode++) {
+            int switchCode = AppOpsManager.opToSwitch(switchedCode);
+            mSwitchedOps.put(switchCode,
+                    ArrayUtils.appendInt(mSwitchedOps.get(switchCode), switchedCode));
+        }
     }
 
-    public void publish(Context context) {
-        mContext = context;
+    public void publish() {
         ServiceManager.addService(Context.APP_OPS_SERVICE, asBinder());
         LocalServices.addService(AppOpsManagerInternal.class, mAppOpsManagerInternal);
     }
@@ -1603,6 +1638,19 @@
         }
     }
 
+    /**
+     * Update the pending state for the uid
+     *
+     * @param currentTime The current elapsed real time
+     * @param uid The uid that has a pending state
+     */
+    private void updatePendingState(long currentTime, int uid) {
+        synchronized (this) {
+            mLastRealtime = max(currentTime, mLastRealtime);
+            updatePendingStateIfNeededLocked(mUidStates.get(uid));
+        }
+    }
+
     public void updateUidProcState(int uid, int procState,
             @ActivityManager.ProcessCapability int capability) {
         synchronized (this) {
@@ -1634,7 +1682,12 @@
                     } else {
                         settleTime = mConstants.BG_STATE_SETTLE_TIME;
                     }
-                    uidState.pendingStateCommitTime = SystemClock.elapsedRealtime() + settleTime;
+                    final long commitTime = SystemClock.elapsedRealtime() + settleTime;
+                    uidState.pendingStateCommitTime = commitTime;
+
+                    mHandler.sendMessageDelayed(
+                            PooledLambda.obtainMessage(AppOpsService::updatePendingState, this,
+                                    commitTime + 1, uid), settleTime + 1);
                 }
 
                 if (uidState.pkgOps != null) {
@@ -1836,9 +1889,9 @@
 
         ActivityManagerInternal ami = LocalServices.getService(ActivityManagerInternal.class);
         boolean isCallerInstrumented = ami.isUidCurrentlyInstrumented(Binder.getCallingUid());
-        boolean isCallerStatsCollector = Binder.getCallingUid() == STATSD_UID;
+        boolean isCallerSystem = Binder.getCallingPid() == Process.myPid();
 
-        if (!isCallerStatsCollector && !isCallerInstrumented) {
+        if (!isCallerSystem && !isCallerInstrumented) {
             mHandler.post(() -> callback.sendResult(new Bundle()));
             return;
         }
@@ -1949,6 +2002,11 @@
 
     @Override
     public void setUidMode(int code, int uid, int mode) {
+        setUidMode(code, uid, mode, null);
+    }
+
+    private void setUidMode(int code, int uid, int mode,
+            @Nullable IAppOpsCallback callbackToIgnore) {
         if (DEBUG) {
             Slog.i(TAG, "uid " + uid + " OP_" + opToName(code) + " := " + modeToName(mode)
                     + " by uid " + Binder.getCallingUid());
@@ -1996,6 +2054,19 @@
             uidState.evalForegroundOps(mOpModeWatchers);
         }
 
+        notifyOpChangedForAllPkgsInUid(code, uid, false, callbackToIgnore);
+        notifyOpChangedSync(code, uid, null, mode);
+    }
+
+    /**
+     * Notify that an op changed for all packages in an uid.
+     *
+     * @param code The op that changed
+     * @param uid The uid the op was changed for
+     * @param onlyForeground Only notify watchers that watch for foreground changes
+     */
+    private void notifyOpChangedForAllPkgsInUid(int code, int uid, boolean onlyForeground,
+            @Nullable IAppOpsCallback callbackToIgnore) {
         String[] uidPackageNames = getPackagesForUid(uid);
         ArrayMap<ModeCallback, ArraySet<String>> callbackSpecs = null;
 
@@ -2005,6 +2076,10 @@
                 final int callbackCount = callbacks.size();
                 for (int i = 0; i < callbackCount; i++) {
                     ModeCallback callback = callbacks.valueAt(i);
+                    if (onlyForeground && (callback.mFlags & WATCH_FOREGROUND_CHANGES) == 0) {
+                        continue;
+                    }
+
                     ArraySet<String> changedPackages = new ArraySet<>();
                     Collections.addAll(changedPackages, uidPackageNames);
                     if (callbackSpecs == null) {
@@ -2023,6 +2098,10 @@
                     final int callbackCount = callbacks.size();
                     for (int i = 0; i < callbackCount; i++) {
                         ModeCallback callback = callbacks.valueAt(i);
+                        if (onlyForeground && (callback.mFlags & WATCH_FOREGROUND_CHANGES) == 0) {
+                            continue;
+                        }
+
                         ArraySet<String> changedPackages = callbackSpecs.get(callback);
                         if (changedPackages == null) {
                             changedPackages = new ArraySet<>();
@@ -2032,10 +2111,13 @@
                     }
                 }
             }
+
+            if (callbackSpecs != null && callbackToIgnore != null) {
+                callbackSpecs.remove(mModeWatchers.get(callbackToIgnore.asBinder()));
+            }
         }
 
         if (callbackSpecs == null) {
-            notifyOpChangedSync(code, uid, null, mode);
             return;
         }
 
@@ -2057,34 +2139,34 @@
                 }
             }
         }
-
-        notifyOpChangedSync(code, uid, null, mode);
     }
 
     private void updatePermissionRevokedCompat(int uid, int switchCode, int mode) {
-        PackageManagerInternal packageManagerInternal = LocalServices.getService(
-                PackageManagerInternal.class);
-        if (packageManagerInternal.getUidTargetSdkVersion(uid) >= Build.VERSION_CODES.M) {
+        PackageManager packageManager = mContext.getPackageManager();
+        if (packageManager == null) {
+            // This can only happen during early boot. At this time the permission state and appop
+            // state are in sync
             return;
         }
 
-        PackageManager packageManager = mContext.getPackageManager();
         String[] packageNames = packageManager.getPackagesForUid(uid);
         if (ArrayUtils.isEmpty(packageNames)) {
             return;
         }
         String packageName = packageNames[0];
 
-        List<Integer> ops = getSwitchOpToOps().get(switchCode);
-        int opsSize = CollectionUtils.size(ops);
-        for (int i = 0; i < opsSize; i++) {
-            int code = ops.get(i);
-
+        int[] ops = mSwitchedOps.get(switchCode);
+        for (int code : ops) {
             String permissionName = AppOpsManager.opToPermission(code);
             if (permissionName == null) {
                 continue;
             }
 
+            if (packageManager.checkPermission(permissionName, packageName)
+                    != PackageManager.PERMISSION_GRANTED) {
+                continue;
+            }
+
             PermissionInfo permissionInfo;
             try {
                 permissionInfo = packageManager.getPermissionInfo(permissionName, 0);
@@ -2097,18 +2179,35 @@
                 continue;
             }
 
+            PackageManagerInternal packageManagerInternal = LocalServices.getService(
+                    PackageManagerInternal.class);
+            boolean supportsRuntimePermissions = packageManagerInternal.getUidTargetSdkVersion(uid)
+                    >= Build.VERSION_CODES.M;
+
             UserHandle user = UserHandle.getUserHandleForUid(uid);
             boolean isRevokedCompat;
             if (permissionInfo.backgroundPermission != null) {
-                boolean isBackgroundRevokedCompat = mode != AppOpsManager.MODE_ALLOWED;
-                long identity = Binder.clearCallingIdentity();
-                try {
-                    packageManager.updatePermissionFlags(permissionInfo.backgroundPermission,
-                            packageName, PackageManager.FLAG_PERMISSION_REVOKED_COMPAT,
-                            isBackgroundRevokedCompat
-                                    ? PackageManager.FLAG_PERMISSION_REVOKED_COMPAT : 0, user);
-                } finally {
-                    Binder.restoreCallingIdentity(identity);
+                if (packageManager.checkPermission(permissionInfo.backgroundPermission, packageName)
+                        == PackageManager.PERMISSION_GRANTED) {
+                    boolean isBackgroundRevokedCompat = mode != AppOpsManager.MODE_ALLOWED;
+
+                    if (isBackgroundRevokedCompat && supportsRuntimePermissions) {
+                        Slog.w(TAG, "setUidMode() called with a mode inconsistent with runtime"
+                                + " permission state, this is discouraged and you should revoke the"
+                                + " runtime permission instead: uid=" + uid + ", switchCode="
+                                + switchCode + ", mode=" + mode + ", permission="
+                                + permissionInfo.backgroundPermission);
+                    }
+
+                    long identity = Binder.clearCallingIdentity();
+                    try {
+                        packageManager.updatePermissionFlags(permissionInfo.backgroundPermission,
+                                packageName, PackageManager.FLAG_PERMISSION_REVOKED_COMPAT,
+                                isBackgroundRevokedCompat
+                                        ? PackageManager.FLAG_PERMISSION_REVOKED_COMPAT : 0, user);
+                    } finally {
+                        Binder.restoreCallingIdentity(identity);
+                    }
                 }
 
                 isRevokedCompat = mode != AppOpsManager.MODE_ALLOWED
@@ -2117,6 +2216,13 @@
                 isRevokedCompat = mode != AppOpsManager.MODE_ALLOWED;
             }
 
+            if (isRevokedCompat && supportsRuntimePermissions) {
+                Slog.w(TAG, "setUidMode() called with a mode inconsistent with runtime"
+                        + " permission state, this is discouraged and you should revoke the"
+                        + " runtime permission instead: uid=" + uid + ", switchCode="
+                        + switchCode + ", mode=" + mode + ", permission=" + permissionName);
+            }
+
             long identity = Binder.clearCallingIdentity();
             try {
                 packageManager.updatePermissionFlags(permissionName, packageName,
@@ -2128,25 +2234,6 @@
         }
     }
 
-    @NonNull
-    private SparseArray<List<Integer>> getSwitchOpToOps() {
-        synchronized (this) {
-            if (mSwitchOpToOps == null) {
-                mSwitchOpToOps = new SparseArray<>();
-                for (int op = 0; op < _NUM_OP; op++) {
-                    int switchOp = AppOpsManager.opToSwitch(op);
-                    List<Integer> ops = mSwitchOpToOps.get(switchOp);
-                    if (ops == null) {
-                        ops = new ArrayList<>();
-                        mSwitchOpToOps.put(switchOp, ops);
-                    }
-                    ops.add(op);
-                }
-            }
-            return mSwitchOpToOps;
-        }
-    }
-
     private void notifyOpChangedSync(int code, int uid, @NonNull String packageName, int mode) {
         final StorageManagerInternal storageManagerInternal =
                 LocalServices.getService(StorageManagerInternal.class);
@@ -2165,6 +2252,11 @@
      */
     @Override
     public void setMode(int code, int uid, @NonNull String packageName, int mode) {
+        setMode(code, uid, packageName, mode, null);
+    }
+
+    private void setMode(int code, int uid, @NonNull String packageName, int mode,
+            @Nullable IAppOpsCallback callbackToIgnore) {
         enforceManageAppOpsModes(Binder.getCallingPid(), Binder.getCallingUid(), uid);
         verifyIncomingOp(code);
         ArraySet<ModeCallback> repCbs = null;
@@ -2208,6 +2300,9 @@
                         }
                         repCbs.addAll(cbs);
                     }
+                    if (repCbs != null && callbackToIgnore != null) {
+                        repCbs.remove(mModeWatchers.get(callbackToIgnore.asBinder()));
+                    }
                     if (mode == AppOpsManager.opToDefaultMode(op.op)) {
                         // If going into the default mode, prune this op
                         // if there is nothing else interesting in it.
@@ -2239,16 +2334,29 @@
         if (uid != UID_ANY && callback.mWatchingUid >= 0 && callback.mWatchingUid != uid) {
             return;
         }
-        // There are features watching for mode changes such as window manager
-        // and location manager which are in our process. The callbacks in these
-        // features may require permissions our remote caller does not have.
-        final long identity = Binder.clearCallingIdentity();
-        try {
-            callback.mCallback.opChanged(code, uid, packageName);
-        } catch (RemoteException e) {
-            /* ignore */
-        } finally {
-            Binder.restoreCallingIdentity(identity);
+
+        // See CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
+        int[] switchedCodes;
+        if (callback.mWatchedOpCode == ALL_OPS) {
+            switchedCodes = mSwitchedOps.get(code);
+        } else if (callback.mWatchedOpCode == OP_NONE) {
+            switchedCodes = new int[]{code};
+        } else {
+            switchedCodes = new int[]{callback.mWatchedOpCode};
+        }
+
+        for (int switchedCode : switchedCodes) {
+            // There are features watching for mode changes such as window manager
+            // and location manager which are in our process. The callbacks in these
+            // features may require permissions our remote caller does not have.
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                callback.mCallback.opChanged(switchedCode, uid, packageName);
+            } catch (RemoteException e) {
+                /* ignore */
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
     }
 
@@ -2443,17 +2551,32 @@
             return;
         }
         synchronized (this) {
-            op = (op != AppOpsManager.OP_NONE) ? AppOpsManager.opToSwitch(op) : op;
+            int switchOp = (op != AppOpsManager.OP_NONE) ? AppOpsManager.opToSwitch(op) : op;
+
+            // See CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE
+            int notifiedOps;
+            if (Compatibility.isChangeEnabled(
+                    CALL_BACK_ON_CHANGED_LISTENER_WITH_SWITCHED_OP_CHANGE)) {
+                if (op == OP_NONE) {
+                    notifiedOps = ALL_OPS;
+                } else {
+                    notifiedOps = op;
+                }
+            } else {
+                notifiedOps = switchOp;
+            }
+
             ModeCallback cb = mModeWatchers.get(callback.asBinder());
             if (cb == null) {
-                cb = new ModeCallback(callback, watchedUid, flags, callingUid, callingPid);
+                cb = new ModeCallback(callback, watchedUid, flags, notifiedOps, callingUid,
+                        callingPid);
                 mModeWatchers.put(callback.asBinder(), cb);
             }
-            if (op != AppOpsManager.OP_NONE) {
-                ArraySet<ModeCallback> cbs = mOpModeWatchers.get(op);
+            if (switchOp != AppOpsManager.OP_NONE) {
+                ArraySet<ModeCallback> cbs = mOpModeWatchers.get(switchOp);
                 if (cbs == null) {
                     cbs = new ArraySet<>();
-                    mOpModeWatchers.put(op, cbs);
+                    mOpModeWatchers.put(switchOp, cbs);
                 }
                 cbs.add(cb);
             }
@@ -3272,6 +3395,18 @@
             uidState = new UidState(uid);
             mUidStates.put(uid, uidState);
         } else {
+            updatePendingStateIfNeededLocked(uidState);
+        }
+        return uidState;
+    }
+
+    /**
+     * Check if the pending state should be updated and do so if needed
+     *
+     * @param uidState The uidState that might have a pending state
+     */
+    private void updatePendingStateIfNeededLocked(@NonNull UidState uidState) {
+        if (uidState != null) {
             if (uidState.pendingStateCommitTime != 0) {
                 if (uidState.pendingStateCommitTime < mLastRealtime) {
                     commitUidPendingStateLocked(uidState);
@@ -3283,7 +3418,6 @@
                 }
             }
         }
-        return uidState;
     }
 
     private void commitUidPendingStateLocked(UidState uidState) {
@@ -3303,24 +3437,28 @@
                         && uidState.appWidgetVisible == uidState.pendingAppWidgetVisible) {
                     continue;
                 }
-                final ArraySet<ModeCallback> callbacks = mOpModeWatchers.get(code);
-                if (callbacks != null) {
-                    for (int cbi = callbacks.size() - 1; cbi >= 0; cbi--) {
-                        final ModeCallback callback = callbacks.valueAt(cbi);
-                        if ((callback.mFlags & AppOpsManager.WATCH_FOREGROUND_CHANGES) == 0
-                                || !callback.isWatchingUid(uidState.uid)) {
-                            continue;
-                        }
-                        boolean doAllPackages = uidState.opModes != null
-                                && uidState.opModes.indexOfKey(code) >= 0
-                                && uidState.opModes.get(code) == AppOpsManager.MODE_FOREGROUND;
-                        if (uidState.pkgOps != null) {
+
+                if (uidState.opModes != null
+                        && uidState.opModes.indexOfKey(code) >= 0
+                        && uidState.opModes.get(code) == AppOpsManager.MODE_FOREGROUND) {
+                    mHandler.sendMessage(PooledLambda.obtainMessage(
+                            AppOpsService::notifyOpChangedForAllPkgsInUid,
+                            this, code, uidState.uid, true, null));
+                } else {
+                    final ArraySet<ModeCallback> callbacks = mOpModeWatchers.get(code);
+                    if (callbacks != null) {
+                        for (int cbi = callbacks.size() - 1; cbi >= 0; cbi--) {
+                            final ModeCallback callback = callbacks.valueAt(cbi);
+                            if ((callback.mFlags & AppOpsManager.WATCH_FOREGROUND_CHANGES) == 0
+                                    || !callback.isWatchingUid(uidState.uid)) {
+                                continue;
+                            }
                             for (int pkgi = uidState.pkgOps.size() - 1; pkgi >= 0; pkgi--) {
                                 final Op op = uidState.pkgOps.valueAt(pkgi).get(code);
                                 if (op == null) {
                                     continue;
                                 }
-                                if (doAllPackages || op.mode == AppOpsManager.MODE_FOREGROUND) {
+                                if (op.mode == AppOpsManager.MODE_FOREGROUND) {
                                     mHandler.sendMessage(PooledLambda.obtainMessage(
                                             AppOpsService::notifyOpChanged,
                                             this, callback, code, uidState.uid,
@@ -3745,11 +3883,7 @@
             if (tagName.equals("op")) {
                 final int code = Integer.parseInt(parser.getAttributeValue(null, "n"));
                 final int mode = Integer.parseInt(parser.getAttributeValue(null, "m"));
-                UidState uidState = getUidStateLocked(uid, true);
-                if (uidState.opModes == null) {
-                    uidState.opModes = new SparseIntArray();
-                }
-                uidState.opModes.put(code, mode);
+                setUidMode(code, uid, mode);
             } else {
                 Slog.w(TAG, "Unknown element under <uid-ops>: "
                         + parser.getName());
@@ -4325,7 +4459,7 @@
                     } else if (shell.targetsUid && shell.packageName != null) {
                         try {
                             final int uid = shell.mInternal.mContext.getPackageManager()
-                                    .getPackageUid(shell.packageName, shell.userId);
+                                    .getPackageUidAsUser(shell.packageName, shell.userId);
                             shell.mInterface.setUidMode(shell.op, uid, mode);
                         } catch (PackageManager.NameNotFoundException e) {
                             return -1;
@@ -5594,5 +5728,17 @@
                 boolean visible) {
             AppOpsService.this.updateAppWidgetVisibility(uidPackageNames, visible);
         }
+
+        @Override
+        public void setUidModeIgnoringCallback(int code, int uid, int mode,
+                @Nullable IAppOpsCallback callbackToIgnore) {
+            setUidMode(code, uid, mode, callbackToIgnore);
+        }
+
+        @Override
+        public void setModeIgnoringCallback(int code, int uid, @NonNull String packageName,
+                int mode, @Nullable IAppOpsCallback callbackToIgnore) {
+            setMode(code, uid, packageName, mode, callbackToIgnore);
+        }
     }
 }
diff --git a/services/core/java/com/android/server/attention/AttentionManagerService.java b/services/core/java/com/android/server/attention/AttentionManagerService.java
index 5ac5b29..0440de6 100644
--- a/services/core/java/com/android/server/attention/AttentionManagerService.java
+++ b/services/core/java/com/android/server/attention/AttentionManagerService.java
@@ -56,13 +56,12 @@
 import android.text.TextUtils;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
-import com.android.internal.util.Preconditions;
 import com.android.server.SystemService;
 
 import java.io.FileDescriptor;
@@ -274,8 +273,8 @@
                     userState.mAttentionCheckCacheBuffer.add(
                             new AttentionCheckCache(SystemClock.uptimeMillis(), result, timestamp));
                 }
-                StatsLog.write(
-                        StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
+                FrameworkStatsLog.write(
+                        FrameworkStatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
                         result);
             }
 
@@ -287,8 +286,8 @@
                     userState.mCurrentAttentionCheck.mIsFulfilled = true;
                 }
 
-                StatsLog.write(
-                        StatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
+                FrameworkStatsLog.write(
+                        FrameworkStatsLog.ATTENTION_MANAGER_SERVICE_RESULT_REPORTED,
                         error);
             }
         };
diff --git a/services/core/java/com/android/server/audio/AudioDeviceBroker.java b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
index 60f420e..566b72d 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceBroker.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceBroker.java
@@ -24,11 +24,12 @@
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioManager;
 import android.media.AudioRoutesInfo;
 import android.media.AudioSystem;
 import android.media.IAudioRoutesObserver;
+import android.media.IStrategyPreferredDeviceDispatcher;
 import android.os.Binder;
 import android.os.Handler;
 import android.os.IBinder;
@@ -402,7 +403,7 @@
     }
 
     /*package*/ int setPreferredDeviceForStrategySync(int strategy,
-                                                      @NonNull AudioDeviceAddress device) {
+                                                      @NonNull AudioDevice device) {
         return mDeviceInventory.setPreferredDeviceForStrategySync(strategy, device);
     }
 
@@ -410,6 +411,16 @@
         return mDeviceInventory.removePreferredDeviceForStrategySync(strategy);
     }
 
+    /*package*/ void registerStrategyPreferredDeviceDispatcher(
+            @NonNull IStrategyPreferredDeviceDispatcher dispatcher) {
+        mDeviceInventory.registerStrategyPreferredDeviceDispatcher(dispatcher);
+    }
+
+    /*package*/ void unregisterStrategyPreferredDeviceDispatcher(
+            @NonNull IStrategyPreferredDeviceDispatcher dispatcher) {
+        mDeviceInventory.unregisterStrategyPreferredDeviceDispatcher(dispatcher);
+    }
+
     //---------------------------------------------------------------------
     // Communication with (to) AudioService
     //TODO check whether the AudioService methods are candidates to move here
@@ -543,7 +554,7 @@
         sendLMsgNoDelay(MSG_L_SCOCLIENT_DIED, SENDMSG_QUEUE, obj);
     }
 
-    /*package*/ void postSaveSetPreferredDeviceForStrategy(int strategy, AudioDeviceAddress device)
+    /*package*/ void postSaveSetPreferredDeviceForStrategy(int strategy, AudioDevice device)
     {
         sendILMsgNoDelay(MSG_IL_SAVE_PREF_DEVICE_FOR_STRATEGY, SENDMSG_QUEUE, strategy, device);
     }
@@ -904,7 +915,7 @@
                 } break;
                 case MSG_IL_SAVE_PREF_DEVICE_FOR_STRATEGY: {
                     final int strategy = msg.arg1;
-                    final AudioDeviceAddress device = (AudioDeviceAddress) msg.obj;
+                    final AudioDevice device = (AudioDevice) msg.obj;
                     mDeviceInventory.onSaveSetPreferredDevice(strategy, device);
                 } break;
                 case MSG_I_SAVE_REMOVE_PREF_DEVICE_FOR_STRATEGY: {
diff --git a/services/core/java/com/android/server/audio/AudioDeviceInventory.java b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
index 75d9dd8..e170db0 100644
--- a/services/core/java/com/android/server/audio/AudioDeviceInventory.java
+++ b/services/core/java/com/android/server/audio/AudioDeviceInventory.java
@@ -16,6 +16,7 @@
 package com.android.server.audio;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.bluetooth.BluetoothA2dp;
 import android.bluetooth.BluetoothAdapter;
@@ -23,7 +24,7 @@
 import android.bluetooth.BluetoothHearingAid;
 import android.bluetooth.BluetoothProfile;
 import android.content.Intent;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioDevicePort;
 import android.media.AudioFormat;
 import android.media.AudioManager;
@@ -31,6 +32,7 @@
 import android.media.AudioRoutesInfo;
 import android.media.AudioSystem;
 import android.media.IAudioRoutesObserver;
+import android.media.IStrategyPreferredDeviceDispatcher;
 import android.os.Binder;
 import android.os.RemoteCallbackList;
 import android.os.RemoteException;
@@ -75,7 +77,7 @@
     private final ArrayMap<Integer, String> mApmConnectedDevices = new ArrayMap<>();
 
     // List of preferred devices for strategies
-    private final ArrayMap<Integer, AudioDeviceAddress> mPreferredDevices = new ArrayMap<>();
+    private final ArrayMap<Integer, AudioDevice> mPreferredDevices = new ArrayMap<>();
 
     // the wrapper for AudioSystem static methods, allows us to spy AudioSystem
     private final @NonNull AudioSystemAdapter mAudioSystem;
@@ -87,6 +89,10 @@
     final RemoteCallbackList<IAudioRoutesObserver> mRoutesObservers =
             new RemoteCallbackList<IAudioRoutesObserver>();
 
+    // Monitoring of strategy-preferred device
+    final RemoteCallbackList<IStrategyPreferredDeviceDispatcher> mPrefDevDispatchers =
+            new RemoteCallbackList<IStrategyPreferredDeviceDispatcher>();
+
     /*package*/ AudioDeviceInventory(@NonNull AudioDeviceBroker broker) {
         mDeviceBroker = broker;
         mAudioSystem = AudioSystemAdapter.getDefaultAdapter();
@@ -468,19 +474,21 @@
         }
     }
 
-    /*package*/ void onSaveSetPreferredDevice(int strategy, @NonNull AudioDeviceAddress device) {
+    /*package*/ void onSaveSetPreferredDevice(int strategy, @NonNull AudioDevice device) {
         mPreferredDevices.put(strategy, device);
+        dispatchPreferredDevice(strategy, device);
     }
 
     /*package*/ void onSaveRemovePreferredDevice(int strategy) {
         mPreferredDevices.remove(strategy);
+        dispatchPreferredDevice(strategy, null);
     }
 
     //------------------------------------------------------------
     //
 
     /*package*/ int setPreferredDeviceForStrategySync(int strategy,
-                                                      @NonNull AudioDeviceAddress device) {
+                                                      @NonNull AudioDevice device) {
         final long identity = Binder.clearCallingIdentity();
         final int status = mAudioSystem.setPreferredDeviceForStrategy(strategy, device);
         Binder.restoreCallingIdentity(identity);
@@ -502,6 +510,16 @@
         return status;
     }
 
+    /*package*/ void registerStrategyPreferredDeviceDispatcher(
+            @NonNull IStrategyPreferredDeviceDispatcher dispatcher) {
+        mPrefDevDispatchers.register(dispatcher);
+    }
+
+    /*package*/ void unregisterStrategyPreferredDeviceDispatcher(
+            @NonNull IStrategyPreferredDeviceDispatcher dispatcher) {
+        mPrefDevDispatchers.unregister(dispatcher);
+    }
+
     /**
      * Implements the communication with AudioSystem to (dis)connect a device in the native layers
      * @param connect true if connection
@@ -702,6 +720,10 @@
                 delay = 0;
             }
             mDeviceBroker.postSetHearingAidConnectionState(state, device, delay);
+            if (state == BluetoothHearingAid.STATE_CONNECTED) {
+                mDeviceBroker.setForceUse_Async(AudioSystem.FOR_MEDIA, AudioSystem.FORCE_NONE,
+                                "HEARING_AID set to CONNECTED");
+            }
             return delay;
         }
     }
@@ -1090,6 +1112,17 @@
         }
     }
 
+    private void dispatchPreferredDevice(int strategy, @Nullable AudioDevice device) {
+        final int nbDispatchers = mPrefDevDispatchers.beginBroadcast();
+        for (int i = 0; i < nbDispatchers; i++) {
+            try {
+                mPrefDevDispatchers.getBroadcastItem(i).dispatchPrefDeviceChanged(strategy, device);
+            } catch (RemoteException e) {
+            }
+        }
+        mPrefDevDispatchers.finishBroadcast();
+    }
+
     //----------------------------------------------------------
     // For tests only
 
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 8f6bd21..67d7530 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -21,7 +21,6 @@
 import static android.media.AudioManager.RINGER_MODE_SILENT;
 import static android.media.AudioManager.RINGER_MODE_VIBRATE;
 import static android.media.AudioManager.STREAM_SYSTEM;
-import static android.media.audiopolicy.AudioMixingRule.RULE_MATCH_ATTRIBUTE_USAGE;
 import static android.os.Process.FIRST_APPLICATION_UID;
 import static android.provider.Settings.Secure.VOLUME_HUSH_MUTE;
 import static android.provider.Settings.Secure.VOLUME_HUSH_OFF;
@@ -65,7 +64,7 @@
 import android.hidl.manager.V1_0.IServiceManager;
 import android.media.AudioAttributes;
 import android.media.AudioAttributes.AttributeSystemUsage;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioDeviceInfo;
 import android.media.AudioFocusInfo;
 import android.media.AudioFocusRequest;
@@ -83,6 +82,7 @@
 import android.media.IPlaybackConfigDispatcher;
 import android.media.IRecordingConfigDispatcher;
 import android.media.IRingtonePlayer;
+import android.media.IStrategyPreferredDeviceDispatcher;
 import android.media.IVolumeController;
 import android.media.MediaExtractor;
 import android.media.MediaFormat;
@@ -90,7 +90,6 @@
 import android.media.VolumePolicy;
 import android.media.audiofx.AudioEffect;
 import android.media.audiopolicy.AudioMix;
-import android.media.audiopolicy.AudioMixingRule.AudioMixMatchCriterion;
 import android.media.audiopolicy.AudioPolicy;
 import android.media.audiopolicy.AudioPolicyConfig;
 import android.media.audiopolicy.AudioProductStrategy;
@@ -129,6 +128,7 @@
 import android.util.MathUtils;
 import android.util.PrintWriterPrinter;
 import android.util.Slog;
+import android.util.SparseArray;
 import android.util.SparseIntArray;
 import android.view.KeyEvent;
 import android.view.accessibility.AccessibilityManager;
@@ -248,6 +248,7 @@
     // AudioHandler messages
     private static final int MSG_SET_DEVICE_VOLUME = 0;
     private static final int MSG_PERSIST_VOLUME = 1;
+    private static final int MSG_PERSIST_VOLUME_GROUP = 2;
     private static final int MSG_PERSIST_RINGER_MODE = 3;
     private static final int MSG_AUDIO_SERVER_DIED = 4;
     private static final int MSG_PLAY_SOUND_EFFECT = 5;
@@ -781,6 +782,10 @@
         mSettingsObserver = new SettingsObserver();
         createStreamStates();
 
+        // must be called after createStreamStates() as it uses MUSIC volume as default if no
+        // persistent data
+        initVolumeGroupStates();
+
         // mSafeUsbMediaVolumeIndex must be initialized after createStreamStates() because it
         // relies on audio policy having correct ranges for volume indexes.
         mSafeUsbMediaVolumeIndex = getSafeUsbMediaVolumeIndex();
@@ -1019,6 +1024,9 @@
             streamState.applyAllVolumes();
         }
 
+        // Restore audio volume groups
+        restoreVolumeGroups();
+
         // Restore mono mode
         updateMasterMono(mContentResolver);
 
@@ -1068,6 +1076,27 @@
             }
         }
 
+        // Restore capture policies
+        synchronized (mPlaybackMonitor) {
+            HashMap<Integer, Integer> allowedCapturePolicies =
+                    mPlaybackMonitor.getAllAllowedCapturePolicies();
+            for (HashMap.Entry<Integer, Integer> entry : allowedCapturePolicies.entrySet()) {
+                int result = AudioSystem.setAllowedCapturePolicy(
+                        entry.getKey(),
+                        AudioAttributes.capturePolicyToFlags(entry.getValue(), 0x0));
+                if (result != AudioSystem.AUDIO_STATUS_OK) {
+                    Log.e(TAG, "Failed to restore capture policy, uid: "
+                            + entry.getKey() + ", capture policy: " + entry.getValue()
+                            + ", result: " + result);
+                    // When restoring capture policy failed, set the capture policy as
+                    // ALLOW_CAPTURE_BY_ALL, which will result in removing the cached
+                    // capture policy in PlaybackActivityMonitor.
+                    mPlaybackMonitor.setAllowedCapturePolicy(
+                            entry.getKey(), AudioAttributes.ALLOW_CAPTURE_BY_ALL);
+                }
+            }
+        }
+
         onIndicateSystemReady();
         // indicate the end of reconfiguration phase to audio HAL
         AudioSystem.setParameters("restarting=false");
@@ -1691,7 +1720,7 @@
     // IPC methods
     ///////////////////////////////////////////////////////////////////////////
     /** @see AudioManager#setPreferredDeviceForStrategy(AudioProductStrategy, AudioDeviceInfo) */
-    public int setPreferredDeviceForStrategy(int strategy, AudioDeviceAddress device) {
+    public int setPreferredDeviceForStrategy(int strategy, AudioDevice device) {
         if (device == null) {
             return AudioSystem.ERROR;
         }
@@ -1700,7 +1729,7 @@
                 "setPreferredDeviceForStrategy u/pid:%d/%d strat:%d dev:%s",
                 Binder.getCallingUid(), Binder.getCallingPid(), strategy, device.toString());
         sDeviceLogger.log(new AudioEventLogger.StringEvent(logString).printLog(TAG));
-        if (device.getRole() == AudioDeviceAddress.ROLE_INPUT) {
+        if (device.getRole() == AudioDevice.ROLE_INPUT) {
             Log.e(TAG, "Unsupported input routing in " + logString);
             return AudioSystem.ERROR;
         }
@@ -1728,9 +1757,9 @@
     }
 
     /** @see AudioManager#getPreferredDeviceForStrategy(AudioProductStrategy) */
-    public AudioDeviceAddress getPreferredDeviceForStrategy(int strategy) {
+    public AudioDevice getPreferredDeviceForStrategy(int strategy) {
         enforceModifyAudioRoutingPermission();
-        AudioDeviceAddress[] devices = new AudioDeviceAddress[1];
+        AudioDevice[] devices = new AudioDevice[1];
         final long identity = Binder.clearCallingIdentity();
         final int status = AudioSystem.getPreferredDeviceForStrategy(strategy, devices);
         Binder.restoreCallingIdentity(identity);
@@ -1743,8 +1772,28 @@
         }
     }
 
+    /** @see AudioManager#addOnPreferredDeviceForStrategyChangedListener(Executor, AudioManager.OnPreferredDeviceForStrategyChangedListener) */
+    public void registerStrategyPreferredDeviceDispatcher(
+            @Nullable IStrategyPreferredDeviceDispatcher dispatcher) {
+        if (dispatcher == null) {
+            return;
+        }
+        enforceModifyAudioRoutingPermission();
+        mDeviceBroker.registerStrategyPreferredDeviceDispatcher(dispatcher);
+    }
+
+    /** @see AudioManager#removeOnPreferredDeviceForStrategyChangedListener(AudioManager.OnPreferredDeviceForStrategyChangedListener) */
+    public void unregisterStrategyPreferredDeviceDispatcher(
+            @Nullable IStrategyPreferredDeviceDispatcher dispatcher) {
+        if (dispatcher == null) {
+            return;
+        }
+        enforceModifyAudioRoutingPermission();
+        mDeviceBroker.unregisterStrategyPreferredDeviceDispatcher(dispatcher);
+    }
+
     /** @see AudioManager#getDevicesForAttributes(AudioAttributes) */
-    public @NonNull ArrayList<AudioDeviceAddress> getDevicesForAttributes(
+    public @NonNull ArrayList<AudioDevice> getDevicesForAttributes(
             @NonNull AudioAttributes attributes) {
         Objects.requireNonNull(attributes);
         enforceModifyAudioRoutingPermission();
@@ -2248,20 +2297,20 @@
                                             String callingPackage) {
         enforceModifyAudioRoutingPermission();
         Objects.requireNonNull(attr, "attr must not be null");
-        // @todo not hold the caller context, post message
-        int stream = AudioProductStrategy.getLegacyStreamTypeForStrategyWithAudioAttributes(attr);
-        final int device = getDeviceForStream(stream);
-
-        int oldIndex = AudioSystem.getVolumeIndexForAttributes(attr, device);
-
-        AudioSystem.setVolumeIndexForAttributes(attr, index, device);
-
         final int volumeGroup = getVolumeGroupIdForAttributes(attr);
-        final AudioVolumeGroup avg = getAudioVolumeGroupById(volumeGroup);
-        if (avg == null) {
+        if (sVolumeGroupStates.indexOfKey(volumeGroup) < 0) {
+            Log.e(TAG, ": no volume group found for attributes " + attr.toString());
             return;
         }
-        for (final int groupedStream : avg.getLegacyStreamTypes()) {
+        final VolumeGroupState vgs = sVolumeGroupStates.get(volumeGroup);
+
+        sVolumeLogger.log(new VolumeEvent(VolumeEvent.VOL_SET_GROUP_VOL, attr, vgs.name(),
+                index/*val1*/, flags/*val2*/, callingPackage));
+
+        vgs.setVolumeIndex(index, flags);
+
+        // For legacy reason, propagate to all streams associated to this volume group
+        for (final int groupedStream : vgs.getLegacyStreamTypes()) {
             setStreamVolume(groupedStream, index, flags, callingPackage, callingPackage,
                             Binder.getCallingUid());
         }
@@ -2283,10 +2332,12 @@
     public int getVolumeIndexForAttributes(@NonNull AudioAttributes attr) {
         enforceModifyAudioRoutingPermission();
         Objects.requireNonNull(attr, "attr must not be null");
-        int stream = AudioProductStrategy.getLegacyStreamTypeForStrategyWithAudioAttributes(attr);
-        final int device = getDeviceForStream(stream);
-
-        return AudioSystem.getVolumeIndexForAttributes(attr, device);
+        final int volumeGroup = getVolumeGroupIdForAttributes(attr);
+        if (sVolumeGroupStates.indexOfKey(volumeGroup) < 0) {
+            throw new IllegalArgumentException("No volume group for attributes " + attr);
+        }
+        final VolumeGroupState vgs = sVolumeGroupStates.get(volumeGroup);
+        return vgs.getVolumeIndex();
     }
 
     /** @see AudioManager#getMaxVolumeIndexForAttributes(attr) */
@@ -3385,13 +3436,11 @@
         }
 
         public void binderDied() {
-            int oldModeOwnerPid = 0;
+            int oldModeOwnerPid;
             int newModeOwnerPid = 0;
             synchronized (mDeviceBroker.mSetModeLock) {
                 Log.w(TAG, "setMode() client died");
-                if (!mSetModeDeathHandlers.isEmpty()) {
-                    oldModeOwnerPid = mSetModeDeathHandlers.get(0).getPid();
-                }
+                oldModeOwnerPid = getModeOwnerPid();
                 int index = mSetModeDeathHandlers.indexOf(this);
                 if (index < 0) {
                     Log.w(TAG, "unregistered setMode() client died");
@@ -3425,17 +3474,19 @@
 
     /** @see AudioManager#setMode(int) */
     public void setMode(int mode, IBinder cb, String callingPackage) {
-        if (DEBUG_MODE) { Log.v(TAG, "setMode(mode=" + mode + ", callingPackage=" + callingPackage + ")"); }
+        if (DEBUG_MODE) {
+            Log.v(TAG, "setMode(mode=" + mode + ", callingPackage=" + callingPackage + ")");
+        }
         if (!checkAudioSettingsPermission("setMode()")) {
             return;
         }
-
-        if ( (mode == AudioSystem.MODE_IN_CALL) &&
-                (mContext.checkCallingOrSelfPermission(
+        final boolean hasModifyPhoneStatePermission = mContext.checkCallingOrSelfPermission(
                         android.Manifest.permission.MODIFY_PHONE_STATE)
-                            != PackageManager.PERMISSION_GRANTED)) {
+                        == PackageManager.PERMISSION_GRANTED;
+        final int callingPid = Binder.getCallingPid();
+        if ((mode == AudioSystem.MODE_IN_CALL) && !hasModifyPhoneStatePermission) {
             Log.w(TAG, "MODIFY_PHONE_STATE Permission Denial: setMode(MODE_IN_CALL) from pid="
-                    + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid());
+                    + callingPid + ", uid=" + Binder.getCallingUid());
             return;
         }
 
@@ -3449,16 +3500,25 @@
             return;
         }
 
-        int oldModeOwnerPid = 0;
-        int newModeOwnerPid = 0;
+        int oldModeOwnerPid;
+        int newModeOwnerPid;
         synchronized (mDeviceBroker.mSetModeLock) {
-            if (!mSetModeDeathHandlers.isEmpty()) {
-                oldModeOwnerPid = mSetModeDeathHandlers.get(0).getPid();
-            }
             if (mode == AudioSystem.MODE_CURRENT) {
                 mode = mMode;
             }
-            newModeOwnerPid = setModeInt(mode, cb, Binder.getCallingPid(), callingPackage);
+            oldModeOwnerPid = getModeOwnerPid();
+            // Do not allow changing mode if a call is active and the requester
+            // does not have permission to modify phone state or is not the mode owner.
+            if (((mMode == AudioSystem.MODE_IN_CALL)
+                    || (mMode == AudioSystem.MODE_IN_COMMUNICATION))
+                    && !(hasModifyPhoneStatePermission || (oldModeOwnerPid == callingPid))) {
+                Log.w(TAG, "setMode(" + mode + ") from pid=" + callingPid
+                        + ", uid=" + Binder.getCallingUid()
+                        + ", cannot change mode from " + mMode
+                        + " without permission or being mode owner");
+                return;
+            }
+            newModeOwnerPid = setModeInt(mode, cb, callingPid, callingPackage);
         }
         // when entering RINGTONE, IN_CALL or IN_COMMUNICATION mode, clear all
         // SCO connections not started by the application changing the mode when pid changes
@@ -3548,10 +3608,9 @@
 
         if (status == AudioSystem.AUDIO_STATUS_OK) {
             if (actualMode != AudioSystem.MODE_NORMAL) {
-                if (mSetModeDeathHandlers.isEmpty()) {
+                newModeOwnerPid = getModeOwnerPid();
+                if (newModeOwnerPid == 0) {
                     Log.e(TAG, "setMode() different from MODE_NORMAL with empty mode client stack");
-                } else {
-                    newModeOwnerPid = mSetModeDeathHandlers.get(0).getPid();
                 }
             }
             // Note: newModeOwnerPid is always 0 when actualMode is MODE_NORMAL
@@ -3706,6 +3765,8 @@
                 enforceSafeMediaVolume(TAG);
             }
         }
+
+        readVolumeGroupsSettings();
     }
 
     /** @see AudioManager#setSpeakerphoneOn(boolean) */
@@ -4606,6 +4667,310 @@
     ///////////////////////////////////////////////////////////////////////////
     // Inner classes
     ///////////////////////////////////////////////////////////////////////////
+    /**
+     * Key is the AudioManager VolumeGroupId
+     * Value is the VolumeGroupState
+     */
+    private static final SparseArray<VolumeGroupState> sVolumeGroupStates = new SparseArray<>();
+
+    private void initVolumeGroupStates() {
+        for (final AudioVolumeGroup avg : getAudioVolumeGroups()) {
+            try {
+                // if no valid attributes, this volume group is not controllable, throw exception
+                ensureValidAttributes(avg);
+            } catch (IllegalArgumentException e) {
+                // Volume Groups without attributes are not controllable through set/get volume
+                // using attributes. Do not append them.
+                Log.d(TAG, "volume group " + avg.name() + " for internal policy needs");
+                continue;
+            }
+            sVolumeGroupStates.append(avg.getId(), new VolumeGroupState(avg));
+        }
+        for (int i = 0; i < sVolumeGroupStates.size(); i++) {
+            final VolumeGroupState vgs = sVolumeGroupStates.valueAt(i);
+            vgs.applyAllVolumes();
+        }
+    }
+
+    private void ensureValidAttributes(AudioVolumeGroup avg) {
+        boolean hasAtLeastOneValidAudioAttributes = avg.getAudioAttributes().stream()
+                .anyMatch(aa -> !aa.equals(AudioProductStrategy.sDefaultAttributes));
+        if (!hasAtLeastOneValidAudioAttributes) {
+            throw new IllegalArgumentException("Volume Group " + avg.name()
+                    + " has no valid audio attributes");
+        }
+    }
+
+    private void readVolumeGroupsSettings() {
+        Log.v(TAG, "readVolumeGroupsSettings");
+        for (int i = 0; i < sVolumeGroupStates.size(); i++) {
+            final VolumeGroupState vgs = sVolumeGroupStates.valueAt(i);
+            vgs.readSettings();
+            vgs.applyAllVolumes();
+        }
+    }
+
+    // Called upon crash of AudioServer
+    private void restoreVolumeGroups() {
+        Log.v(TAG, "restoreVolumeGroups");
+        for (int i = 0; i < sVolumeGroupStates.size(); i++) {
+            final VolumeGroupState vgs = sVolumeGroupStates.valueAt(i);
+            vgs.applyAllVolumes();
+        }
+    }
+
+    private void dumpVolumeGroups(PrintWriter pw) {
+        pw.println("\nVolume Groups (device: index)");
+        for (int i = 0; i < sVolumeGroupStates.size(); i++) {
+            final VolumeGroupState vgs = sVolumeGroupStates.valueAt(i);
+            vgs.dump(pw);
+            pw.println("");
+        }
+    }
+
+    // NOTE: Locking order for synchronized objects related to volume management:
+    //  1     mSettingsLock
+    //  2       VolumeGroupState.class
+    private class VolumeGroupState {
+        private final AudioVolumeGroup mAudioVolumeGroup;
+        private final SparseIntArray mIndexMap = new SparseIntArray(8);
+        private int mIndexMin;
+        private int mIndexMax;
+        private int mLegacyStreamType = AudioSystem.STREAM_DEFAULT;
+        private int mPublicStreamType = AudioSystem.STREAM_MUSIC;
+        private AudioAttributes mAudioAttributes = AudioProductStrategy.sDefaultAttributes;
+
+        // No API in AudioSystem to get a device from strategy or from attributes.
+        // Need a valid public stream type to use current API getDeviceForStream
+        private int getDeviceForVolume() {
+            return getDeviceForStream(mPublicStreamType);
+        }
+
+        private VolumeGroupState(AudioVolumeGroup avg) {
+            mAudioVolumeGroup = avg;
+            Log.v(TAG, "VolumeGroupState for " + avg.toString());
+            for (final AudioAttributes aa : avg.getAudioAttributes()) {
+                if (!aa.equals(AudioProductStrategy.sDefaultAttributes)) {
+                    mAudioAttributes = aa;
+                    break;
+                }
+            }
+            final int[] streamTypes = mAudioVolumeGroup.getLegacyStreamTypes();
+            if (streamTypes.length != 0) {
+                // Uses already initialized MIN / MAX if a stream type is attached to group
+                mLegacyStreamType = streamTypes[0];
+                for (final int streamType : streamTypes) {
+                    if (streamType != AudioSystem.STREAM_DEFAULT
+                            && streamType < AudioSystem.getNumStreamTypes()) {
+                        mPublicStreamType = streamType;
+                        break;
+                    }
+                }
+                mIndexMin = MIN_STREAM_VOLUME[mPublicStreamType];
+                mIndexMax = MAX_STREAM_VOLUME[mPublicStreamType];
+            } else if (!avg.getAudioAttributes().isEmpty()) {
+                mIndexMin = AudioSystem.getMinVolumeIndexForAttributes(mAudioAttributes);
+                mIndexMax = AudioSystem.getMaxVolumeIndexForAttributes(mAudioAttributes);
+            } else {
+                Log.e(TAG, "volume group: " + mAudioVolumeGroup.name()
+                        + " has neither valid attributes nor valid stream types assigned");
+                return;
+            }
+            // Load volume indexes from data base
+            readSettings();
+        }
+
+        public @NonNull int[] getLegacyStreamTypes() {
+            return mAudioVolumeGroup.getLegacyStreamTypes();
+        }
+
+        public String name() {
+            return mAudioVolumeGroup.name();
+        }
+
+        public int getVolumeIndex() {
+            return getIndex(getDeviceForVolume());
+        }
+
+        public void setVolumeIndex(int index, int flags) {
+            if (mUseFixedVolume) {
+                return;
+            }
+            setVolumeIndex(index, getDeviceForVolume(), flags);
+        }
+
+        private void setVolumeIndex(int index, int device, int flags) {
+            // Set the volume index
+            setVolumeIndexInt(index, device, flags);
+
+            // Update local cache
+            mIndexMap.put(device, index);
+
+            // update data base - post a persist volume group msg
+            sendMsg(mAudioHandler,
+                    MSG_PERSIST_VOLUME_GROUP,
+                    SENDMSG_QUEUE,
+                    device,
+                    0,
+                    this,
+                    PERSIST_DELAY);
+        }
+
+        private void setVolumeIndexInt(int index, int device, int flags) {
+            // Set the volume index
+            AudioSystem.setVolumeIndexForAttributes(mAudioAttributes, index, device);
+        }
+
+        public int getIndex(int device) {
+            synchronized (VolumeGroupState.class) {
+                int index = mIndexMap.get(device, -1);
+                // there is always an entry for AudioSystem.DEVICE_OUT_DEFAULT
+                return (index != -1) ? index : mIndexMap.get(AudioSystem.DEVICE_OUT_DEFAULT);
+            }
+        }
+
+        public boolean hasIndexForDevice(int device) {
+            synchronized (VolumeGroupState.class) {
+                return (mIndexMap.get(device, -1) != -1);
+            }
+        }
+
+        public int getMaxIndex() {
+            return mIndexMax;
+        }
+
+        public int getMinIndex() {
+            return mIndexMin;
+        }
+
+        public void applyAllVolumes() {
+            synchronized (VolumeGroupState.class) {
+                if (mLegacyStreamType != AudioSystem.STREAM_DEFAULT) {
+                    // No-op to avoid regression with stream based volume management
+                    return;
+                }
+                // apply device specific volumes first
+                int index;
+                for (int i = 0; i < mIndexMap.size(); i++) {
+                    final int device = mIndexMap.keyAt(i);
+                    if (device != AudioSystem.DEVICE_OUT_DEFAULT) {
+                        index = mIndexMap.valueAt(i);
+                        Log.v(TAG, "applyAllVolumes: restore index " + index + " for group "
+                                + mAudioVolumeGroup.name() + " and device "
+                                + AudioSystem.getOutputDeviceName(device));
+                        setVolumeIndexInt(index, device, 0 /*flags*/);
+                    }
+                }
+                // apply default volume last: by convention , default device volume will be used
+                index = getIndex(AudioSystem.DEVICE_OUT_DEFAULT);
+                Log.v(TAG, "applyAllVolumes: restore default device index " + index + " for group "
+                        + mAudioVolumeGroup.name());
+                setVolumeIndexInt(index, AudioSystem.DEVICE_OUT_DEFAULT, 0 /*flags*/);
+            }
+        }
+
+        private void persistVolumeGroup(int device) {
+            if (mUseFixedVolume) {
+                return;
+            }
+            Log.v(TAG, "persistVolumeGroup: storing index " + getIndex(device) + " for group "
+                    + mAudioVolumeGroup.name() + " and device "
+                    + AudioSystem.getOutputDeviceName(device));
+            boolean success = Settings.System.putIntForUser(mContentResolver,
+                    getSettingNameForDevice(device),
+                    getIndex(device),
+                    UserHandle.USER_CURRENT);
+            if (!success) {
+                Log.e(TAG, "persistVolumeGroup failed for group " +  mAudioVolumeGroup.name());
+            }
+        }
+
+        public void readSettings() {
+            synchronized (VolumeGroupState.class) {
+                // First clear previously loaded (previous user?) settings
+                mIndexMap.clear();
+                // force maximum volume on all streams if fixed volume property is set
+                if (mUseFixedVolume) {
+                    mIndexMap.put(AudioSystem.DEVICE_OUT_DEFAULT, mIndexMax);
+                    return;
+                }
+                for (int device : AudioSystem.DEVICE_OUT_ALL_SET) {
+                    // retrieve current volume for device
+                    // if no volume stored for current volume group and device, use default volume
+                    // if default device, continue otherwise
+                    int defaultIndex = (device == AudioSystem.DEVICE_OUT_DEFAULT)
+                            ? AudioSystem.DEFAULT_STREAM_VOLUME[mPublicStreamType] : -1;
+                    int index;
+                    String name = getSettingNameForDevice(device);
+                    index = Settings.System.getIntForUser(
+                            mContentResolver, name, defaultIndex, UserHandle.USER_CURRENT);
+                    if (index == -1) {
+                        Log.e(TAG, "readSettings: No index stored for group "
+                                + mAudioVolumeGroup.name() + ", device " + name);
+                        continue;
+                    }
+                    Log.v(TAG, "readSettings: found stored index " + getValidIndex(index)
+                             + " for group " + mAudioVolumeGroup.name() + ", device: " + name);
+                    mIndexMap.put(device, getValidIndex(index));
+                }
+            }
+        }
+
+        private int getValidIndex(int index) {
+            if (index < mIndexMin) {
+                return mIndexMin;
+            } else if (mUseFixedVolume || index > mIndexMax) {
+                return mIndexMax;
+            }
+            return index;
+        }
+
+        public @NonNull String getSettingNameForDevice(int device) {
+            final String suffix = AudioSystem.getOutputDeviceName(device);
+            if (suffix.isEmpty()) {
+                return mAudioVolumeGroup.name();
+            }
+            return mAudioVolumeGroup.name() + "_" + AudioSystem.getOutputDeviceName(device);
+        }
+
+        private void dump(PrintWriter pw) {
+            pw.println("- VOLUME GROUP " + mAudioVolumeGroup.name() + ":");
+            pw.print("   Min: ");
+            pw.println(mIndexMin);
+            pw.print("   Max: ");
+            pw.println(mIndexMax);
+            pw.print("   Current: ");
+            for (int i = 0; i < mIndexMap.size(); i++) {
+                if (i > 0) {
+                    pw.print(", ");
+                }
+                final int device = mIndexMap.keyAt(i);
+                pw.print(Integer.toHexString(device));
+                final String deviceName = device == AudioSystem.DEVICE_OUT_DEFAULT ? "default"
+                        : AudioSystem.getOutputDeviceName(device);
+                if (!deviceName.isEmpty()) {
+                    pw.print(" (");
+                    pw.print(deviceName);
+                    pw.print(")");
+                }
+                pw.print(": ");
+                pw.print(mIndexMap.valueAt(i));
+            }
+            pw.println();
+            pw.print("   Devices: ");
+            int n = 0;
+            final int devices = getDeviceForVolume();
+            for (int device : AudioSystem.DEVICE_OUT_ALL_SET) {
+                if ((devices & device) == device) {
+                    if (n++ > 0) {
+                        pw.print(", ");
+                    }
+                    pw.print(AudioSystem.getOutputDeviceName(device));
+                }
+            }
+        }
+    }
+
 
     // NOTE: Locking order for synchronized objects related to volume or ringer mode management:
     //  1 mScoclient OR mSafeMediaVolumeState
@@ -5250,6 +5615,11 @@
                     persistVolume((VolumeStreamState) msg.obj, msg.arg1);
                     break;
 
+                case MSG_PERSIST_VOLUME_GROUP:
+                    final VolumeGroupState vgs = (VolumeGroupState) msg.obj;
+                    vgs.persistVolumeGroup(msg.arg1);
+                    break;
+
                 case MSG_PERSIST_RINGER_MODE:
                     // note that the value persisted is the current ringer mode, not the
                     // value of ringer mode as of the time the request was made to persist
@@ -6347,6 +6717,7 @@
         }
         mMediaFocusControl.dump(pw);
         dumpStreamStates(pw);
+        dumpVolumeGroups(pw);
         dumpRingerMode(pw);
         pw.println("\nAudio routes:");
         pw.print("  mMainType=0x"); pw.println(Integer.toHexString(
@@ -6776,8 +7147,9 @@
 
         boolean requireValidProjection = false;
         boolean requireCaptureAudioOrMediaOutputPerm = false;
-        boolean requireVoiceComunicationOutputPerm = false;
         boolean requireModifyRouting = false;
+        ArrayList<AudioMix> voiceCommunicationCaptureMixes = null;
+
 
         if (hasFocusAccess || isVolumeController) {
             requireModifyRouting |= true;
@@ -6786,23 +7158,29 @@
             requireModifyRouting |= true;
         }
         for (AudioMix mix : policyConfig.getMixes()) {
-            // If mix is trying to capture USAGE_VOICE_COMMUNICATION using playback capture
-            if (isVoiceCommunicationPlaybackCaptureMix(mix)) {
-                // then it must have CAPTURE_USAGE_VOICE_COMMUNICATION_OUTPUT permission
-                requireVoiceComunicationOutputPerm |= true;
-            }
-            // If mix is requesting privileged capture and is capturing at
-            // least one usage which is not USAGE_VOICE_COMMUNICATION.
-            if (mix.getRule().allowPrivilegedPlaybackCapture()
-                    && isNonVoiceCommunicationCaptureMix(mix)) {
+            // If mix is requesting privileged capture
+            if (mix.getRule().allowPrivilegedPlaybackCapture()) {
                 // then it must have CAPTURE_MEDIA_OUTPUT or CAPTURE_AUDIO_OUTPUT permission
                 requireCaptureAudioOrMediaOutputPerm |= true;
+
                 // and its format must be low quality enough
                 String error = mix.canBeUsedForPrivilegedCapture(mix.getFormat());
                 if (error != null) {
                     Log.e(TAG, error);
                     return false;
                 }
+
+                // If mix is trying to excplicitly capture USAGE_VOICE_COMMUNICATION
+                if (mix.containsMatchAttributeRuleForUsage(
+                        AudioAttributes.USAGE_VOICE_COMMUNICATION)) {
+                    // then it must have CAPTURE_USAGE_VOICE_COMMUNICATION_OUTPUT permission
+                    // Note that for UID, USERID or EXCLDUE rules, the capture will be silenced
+                    // in AudioPolicyMix
+                    if (voiceCommunicationCaptureMixes == null) {
+                        voiceCommunicationCaptureMixes = new ArrayList<AudioMix>();
+                    }
+                    voiceCommunicationCaptureMixes.add(mix);
+                }
             }
 
             // If mix is RENDER|LOOPBACK, then an audio MediaProjection is enough
@@ -6822,12 +7200,18 @@
             return false;
         }
 
-        if (requireVoiceComunicationOutputPerm
-                && !callerHasPermission(
-                        android.Manifest.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT)) {
-            Log.e(TAG, "Privileged audio capture for voice communication requires "
-                      + "CAPTURE_VOICE_COMMUNICATION_OUTPUT system permission");
-            return false;
+        if (voiceCommunicationCaptureMixes != null && voiceCommunicationCaptureMixes.size() > 0) {
+            if (!callerHasPermission(
+                    android.Manifest.permission.CAPTURE_VOICE_COMMUNICATION_OUTPUT)) {
+                Log.e(TAG, "Privileged audio capture for voice communication requires "
+                        + "CAPTURE_VOICE_COMMUNICATION_OUTPUT system permission");
+                return false;
+            }
+
+            // If permission check succeeded, we set the flag in each of the mixing rules
+            for (AudioMix mix : voiceCommunicationCaptureMixes) {
+                mix.getRule().setVoiceCommunicationCaptureAllowed(true);
+            }
         }
 
         if (requireValidProjection && !canProjectAudio(projection)) {
@@ -6843,41 +7227,6 @@
         return true;
     }
 
-    /**
-    * Checks whether a given AudioMix is used for playback capture
-    * (has the ROUTE_FLAG_LOOP_BACK_RENDER flag) and has a matching
-    * criterion for USAGE_VOICE_COMMUNICATION.
-    */
-    private boolean isVoiceCommunicationPlaybackCaptureMix(AudioMix mix) {
-        if (mix.getRouteFlags() != mix.ROUTE_FLAG_LOOP_BACK_RENDER) {
-            return false;
-        }
-
-        for (AudioMixMatchCriterion criterion : mix.getRule().getCriteria()) {
-            if (criterion.getRule() == RULE_MATCH_ATTRIBUTE_USAGE
-                    && criterion.getAudioAttributes().getUsage()
-                    == AudioAttributes.USAGE_VOICE_COMMUNICATION) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /**
-    * Checks whether a given AudioMix has a matching
-    * criterion for a usage which is not USAGE_VOICE_COMMUNICATION.
-    */
-    private boolean isNonVoiceCommunicationCaptureMix(AudioMix mix) {
-        for (AudioMixMatchCriterion criterion : mix.getRule().getCriteria()) {
-            if (criterion.getRule() == RULE_MATCH_ATTRIBUTE_USAGE
-                    && criterion.getAudioAttributes().getUsage()
-                    != AudioAttributes.USAGE_VOICE_COMMUNICATION) {
-                return true;
-            }
-        }
-        return false;
-    }
-
     private boolean callerHasPermission(String permission) {
         return mContext.checkCallingPermission(permission) == PackageManager.PERMISSION_GRANTED;
     }
@@ -7298,6 +7647,43 @@
         mPlaybackMonitor.releasePlayer(piid, Binder.getCallingUid());
     }
 
+    /**
+     * Specifies whether the audio played by this app may or may not be captured by other apps or
+     * the system.
+     *
+     * @param capturePolicy one of
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_ALL},
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_SYSTEM},
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_NONE}.
+     * @return AudioSystem.AUDIO_STATUS_OK if set allowed capture policy succeed.
+     * @throws IllegalArgumentException if the argument is not a valid value.
+     */
+    public int setAllowedCapturePolicy(int capturePolicy) {
+        int callingUid = Binder.getCallingUid();
+        int flags = AudioAttributes.capturePolicyToFlags(capturePolicy, 0x0);
+        final long identity = Binder.clearCallingIdentity();
+        synchronized (mPlaybackMonitor) {
+            int result = AudioSystem.setAllowedCapturePolicy(callingUid, flags);
+            if (result == AudioSystem.AUDIO_STATUS_OK) {
+                mPlaybackMonitor.setAllowedCapturePolicy(callingUid, capturePolicy);
+            }
+            Binder.restoreCallingIdentity(identity);
+            return result;
+        }
+    }
+
+    /**
+     * Return the capture policy.
+     * @return the cached capture policy for the calling uid.
+     */
+    public int getAllowedCapturePolicy() {
+        int callingUid = Binder.getCallingUid();
+        final long identity = Binder.clearCallingIdentity();
+        int capturePolicy = mPlaybackMonitor.getAllowedCapturePolicy(callingUid);
+        Binder.restoreCallingIdentity(identity);
+        return capturePolicy;
+    }
+
     //======================
     // Audio device management
     //======================
diff --git a/services/core/java/com/android/server/audio/AudioServiceEvents.java b/services/core/java/com/android/server/audio/AudioServiceEvents.java
index fcd8701..add620e 100644
--- a/services/core/java/com/android/server/audio/AudioServiceEvents.java
+++ b/services/core/java/com/android/server/audio/AudioServiceEvents.java
@@ -16,6 +16,7 @@
 
 package com.android.server.audio;
 
+import android.media.AudioAttributes;
 import android.media.AudioManager;
 import android.media.AudioSystem;
 
@@ -97,12 +98,15 @@
         static final int VOL_ADJUST_VOL_UID = 5;
         static final int VOL_VOICE_ACTIVITY_HEARING_AID = 6;
         static final int VOL_MODE_CHANGE_HEARING_AID = 7;
+        static final int VOL_SET_GROUP_VOL = 8;
 
         final int mOp;
         final int mStream;
         final int mVal1;
         final int mVal2;
         final String mCaller;
+        final String mGroupName;
+        final AudioAttributes mAudioAttributes;
 
         /** used for VOL_ADJUST_VOL_UID,
          *           VOL_ADJUST_SUGG_VOL,
@@ -114,6 +118,8 @@
             mVal1 = val1;
             mVal2 = val2;
             mCaller = caller;
+            mGroupName = null;
+            mAudioAttributes = null;
         }
 
         /** used for VOL_SET_HEARING_AID_VOL*/
@@ -124,6 +130,8 @@
             // unused
             mStream = -1;
             mCaller = null;
+            mGroupName = null;
+            mAudioAttributes = null;
         }
 
         /** used for VOL_SET_AVRCP_VOL */
@@ -134,6 +142,8 @@
             mVal2 = 0;
             mStream = -1;
             mCaller = null;
+            mGroupName = null;
+            mAudioAttributes = null;
         }
 
         /** used for VOL_VOICE_ACTIVITY_HEARING_AID */
@@ -144,6 +154,8 @@
             mVal2 = voiceActive ? 1 : 0;
             // unused
             mCaller = null;
+            mGroupName = null;
+            mAudioAttributes = null;
         }
 
         /** used for VOL_MODE_CHANGE_HEARING_AID */
@@ -154,6 +166,19 @@
             mVal2 = mode;
             // unused
             mCaller = null;
+            mGroupName = null;
+            mAudioAttributes = null;
+        }
+
+        /** used for VOL_SET_GROUP_VOL */
+        VolumeEvent(int op, AudioAttributes aa, String group, int index, int flags, String caller) {
+            mOp = op;
+            mStream = -1;
+            mVal1 = index;
+            mVal2 = flags;
+            mCaller = caller;
+            mGroupName = group;
+            mAudioAttributes = aa;
         }
 
         @Override
@@ -208,6 +233,14 @@
                             .append(") causes setting HEARING_AID volume to idx:").append(mVal1)
                             .append(" stream:").append(AudioSystem.streamToString(mStream))
                             .toString();
+                case VOL_SET_GROUP_VOL:
+                    return new StringBuilder("setVolumeIndexForAttributes(attr:")
+                            .append(mAudioAttributes.toString())
+                            .append(" group: ").append(mGroupName)
+                            .append(" index:").append(mVal1)
+                            .append(" flags:0x").append(Integer.toHexString(mVal2))
+                            .append(") from ").append(mCaller)
+                            .toString();
                 default: return new StringBuilder("FIXME invalid op:").append(mOp).toString();
             }
         }
diff --git a/services/core/java/com/android/server/audio/AudioSystemAdapter.java b/services/core/java/com/android/server/audio/AudioSystemAdapter.java
index 9d06b42..a3086c0 100644
--- a/services/core/java/com/android/server/audio/AudioSystemAdapter.java
+++ b/services/core/java/com/android/server/audio/AudioSystemAdapter.java
@@ -17,7 +17,7 @@
 package com.android.server.audio;
 
 import android.annotation.NonNull;
-import android.media.AudioDeviceAddress;
+import android.media.AudioDevice;
 import android.media.AudioSystem;
 import android.util.Log;
 
@@ -86,12 +86,12 @@
     }
 
     /**
-     * Same as {@link AudioSystem#setPreferredDeviceForStrategy(int, AudioDeviceAddress)}
+     * Same as {@link AudioSystem#setPreferredDeviceForStrategy(int, AudioDevice)}
      * @param strategy
      * @param device
      * @return
      */
-    public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDeviceAddress device) {
+    public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDevice device) {
         return AudioSystem.setPreferredDeviceForStrategy(strategy, device);
     }
 
@@ -138,7 +138,7 @@
         }
 
         @Override
-        public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDeviceAddress device) {
+        public int setPreferredDeviceForStrategy(int strategy, @NonNull AudioDevice device) {
             return AudioSystem.AUDIO_STATUS_OK;
         }
 
diff --git a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
index f8ba55b..98f409e 100644
--- a/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
+++ b/services/core/java/com/android/server/audio/PlaybackActivityMonitor.java
@@ -160,6 +160,12 @@
                 new AudioPlaybackConfiguration(pic, newPiid,
                         Binder.getCallingUid(), Binder.getCallingPid());
         apc.init();
+        synchronized (mAllowedCapturePolicies) {
+            int uid = apc.getClientUid();
+            if (mAllowedCapturePolicies.containsKey(uid)) {
+                updateAllowedCapturePolicy(apc, mAllowedCapturePolicies.get(uid));
+            }
+        }
         sEventLogger.log(new NewPlayerEvent(apc));
         synchronized(mPlayerLock) {
             mPlayers.put(newPiid, apc);
@@ -169,6 +175,13 @@
 
     public void playerAttributes(int piid, @NonNull AudioAttributes attr, int binderUid) {
         final boolean change;
+        synchronized (mAllowedCapturePolicies) {
+            if (mAllowedCapturePolicies.containsKey(binderUid)
+                    && attr.getAllowedCapturePolicy() < mAllowedCapturePolicies.get(binderUid)) {
+                attr = new AudioAttributes.Builder(attr)
+                        .setAllowedCapturePolicy(mAllowedCapturePolicies.get(binderUid)).build();
+            }
+        }
         synchronized(mPlayerLock) {
             final AudioPlaybackConfiguration apc = mPlayers.get(new Integer(piid));
             if (checkConfigurationCaller(piid, apc, binderUid)) {
@@ -284,6 +297,69 @@
         }
     }
 
+    /**
+     * A map of uid to capture policy.
+     */
+    private final HashMap<Integer, Integer> mAllowedCapturePolicies =
+            new HashMap<Integer, Integer>();
+
+    /**
+     * Cache allowed capture policy, which specifies whether the audio played by the app may or may
+     * not be captured by other apps or the system.
+     *
+     * @param uid the uid of requested app
+     * @param capturePolicy one of
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_ALL},
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_SYSTEM},
+     *     {@link AudioAttributes#ALLOW_CAPTURE_BY_NONE}.
+     */
+    public void setAllowedCapturePolicy(int uid, int capturePolicy) {
+        synchronized (mAllowedCapturePolicies) {
+            if (capturePolicy == AudioAttributes.ALLOW_CAPTURE_BY_ALL) {
+                // When the capture policy is ALLOW_CAPTURE_BY_ALL, it is okay to
+                // remove it from cached capture policy as it is the default value.
+                mAllowedCapturePolicies.remove(uid);
+                return;
+            } else {
+                mAllowedCapturePolicies.put(uid, capturePolicy);
+            }
+        }
+        synchronized (mPlayerLock) {
+            for (AudioPlaybackConfiguration apc : mPlayers.values()) {
+                if (apc.getClientUid() == uid) {
+                    updateAllowedCapturePolicy(apc, capturePolicy);
+                }
+            }
+        }
+    }
+
+    /**
+     * Return the capture policy for given uid.
+     * @param uid the uid to query its cached capture policy.
+     * @return cached capture policy for given uid or AudioAttributes.ALLOW_CAPTURE_BY_ALL
+     *         if there is not cached capture policy.
+     */
+    public int getAllowedCapturePolicy(int uid) {
+        return mAllowedCapturePolicies.getOrDefault(uid, AudioAttributes.ALLOW_CAPTURE_BY_ALL);
+    }
+
+    /**
+     * Return all cached capture policies.
+     */
+    public HashMap<Integer, Integer> getAllAllowedCapturePolicies() {
+        return mAllowedCapturePolicies;
+    }
+
+    private void updateAllowedCapturePolicy(AudioPlaybackConfiguration apc, int capturePolicy) {
+        AudioAttributes attr = apc.getAudioAttributes();
+        if (attr.getAllowedCapturePolicy() >= capturePolicy) {
+            return;
+        }
+        apc.handleAudioAttributesEvent(
+                new AudioAttributes.Builder(apc.getAudioAttributes())
+                        .setAllowedCapturePolicy(capturePolicy).build());
+    }
+
     // Implementation of AudioPlaybackConfiguration.PlayerDeathMonitor
     @Override
     public void playerDeath(int piid) {
@@ -331,6 +407,12 @@
             // log
             sEventLogger.dump(pw);
         }
+        synchronized (mAllowedCapturePolicies) {
+            pw.println("\n  allowed capture policies:");
+            for (HashMap.Entry<Integer, Integer> entry : mAllowedCapturePolicies.entrySet()) {
+                pw.println("  uid: " + entry.getKey() + " policy: " + entry.getValue());
+            }
+        }
     }
 
     /**
diff --git a/services/core/java/com/android/server/audio/RotationHelper.java b/services/core/java/com/android/server/audio/RotationHelper.java
index ad20ed8..ad72166 100644
--- a/services/core/java/com/android/server/audio/RotationHelper.java
+++ b/services/core/java/com/android/server/audio/RotationHelper.java
@@ -80,6 +80,7 @@
     static void updateOrientation() {
         // Even though we're responding to device orientation events,
         // use display rotation so audio stays in sync with video/dialogs
+        // TODO(b/148458001): Support multi-display
         int newRotation = ((WindowManager) sContext.getSystemService(
                 Context.WINDOW_SERVICE)).getDefaultDisplay().getRotation();
         synchronized(sRotationLock) {
diff --git a/services/core/java/com/android/server/backup/SystemBackupAgent.java b/services/core/java/com/android/server/backup/SystemBackupAgent.java
index 1f4563b..0a30b76 100644
--- a/services/core/java/com/android/server/backup/SystemBackupAgent.java
+++ b/services/core/java/com/android/server/backup/SystemBackupAgent.java
@@ -113,6 +113,7 @@
             throws IOException {
         // Slot in a restore helper for the older wallpaper backup schema to support restore
         // from devices still generating data in that format.
+        //TODO(b/147732386): Add multi-display support for wallpaper backup.
         addHelper(WALLPAPER_HELPER, new WallpaperBackupHelper(this,
                 new String[] { WALLPAPER_IMAGE_KEY}));
 
diff --git a/services/core/java/com/android/server/biometrics/AuthService.java b/services/core/java/com/android/server/biometrics/AuthService.java
index 0d88388..c9c2c96 100644
--- a/services/core/java/com/android/server/biometrics/AuthService.java
+++ b/services/core/java/com/android/server/biometrics/AuthService.java
@@ -30,6 +30,7 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.hardware.biometrics.BiometricPrompt;
 import android.hardware.biometrics.IAuthService;
 import android.hardware.biometrics.IBiometricAuthenticator;
 import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
@@ -38,6 +39,7 @@
 import android.hardware.face.IFaceService;
 import android.hardware.fingerprint.IFingerprintService;
 import android.hardware.iris.IIrisService;
+import android.os.Binder;
 import android.os.Bundle;
 import android.os.IBinder;
 import android.os.RemoteException;
@@ -99,6 +101,33 @@
         public String[] getConfiguration(Context context) {
             return context.getResources().getStringArray(R.array.config_biometric_sensors);
         }
+
+        /**
+         * Allows us to mock FingerprintService for testing
+         */
+        @VisibleForTesting
+        public IFingerprintService getFingerprintService() {
+            return IFingerprintService.Stub.asInterface(
+                    ServiceManager.getService(Context.FINGERPRINT_SERVICE));
+        }
+
+        /**
+         * Allows us to mock FaceService for testing
+         */
+        @VisibleForTesting
+        public IFaceService getFaceService() {
+            return IFaceService.Stub.asInterface(
+                    ServiceManager.getService(Context.FACE_SERVICE));
+        }
+
+        /**
+         * Allows us to mock IrisService for testing
+         */
+        @VisibleForTesting
+        public IIrisService getIrisService() {
+            return IIrisService.Stub.asInterface(
+                    ServiceManager.getService(Context.IRIS_SERVICE));
+        }
     }
 
     private final class AuthServiceImpl extends IAuthService.Stub {
@@ -106,14 +135,12 @@
         public void authenticate(IBinder token, long sessionId, int userId,
                 IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle)
                 throws RemoteException {
-            final int callingUserId = UserHandle.getCallingUserId();
 
-            // In the BiometricServiceBase, do the AppOps and foreground check.
+            // Only allow internal clients to authenticate with a different userId.
+            final int callingUserId = UserHandle.getCallingUserId();
             if (userId == callingUserId) {
-                // Check the USE_BIOMETRIC permission here.
                 checkPermission();
             } else {
-                // Only allow internal clients to authenticate with a different userId
                 Slog.w(TAG, "User " + callingUserId + " is requesting authentication of userid: "
                         + userId);
                 checkInternalPermission();
@@ -124,13 +151,51 @@
                 return;
             }
 
-            mBiometricService.authenticate(token, sessionId, userId, receiver, opPackageName,
-                    bundle);
+            // Only allow internal clients to enable non-public options.
+            if (bundle.getBoolean(BiometricPrompt.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS)
+                    || bundle.getBoolean(BiometricPrompt.KEY_USE_DEFAULT_TITLE, false)) {
+                checkInternalPermission();
+            }
+
+            final int callingUid = Binder.getCallingUid();
+            final int callingPid = Binder.getCallingPid();
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                mBiometricService.authenticate(
+                        token, sessionId, userId, receiver, opPackageName, bundle, callingUid,
+                        callingPid, callingUserId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+
+        @Override
+        public void cancelAuthentication(IBinder token, String opPackageName)
+                throws RemoteException {
+            checkPermission();
+
+            if (token == null || opPackageName == null) {
+                Slog.e(TAG, "Unable to authenticate, one or more null arguments");
+                return;
+            }
+
+            final int callingUid = Binder.getCallingUid();
+            final int callingPid = Binder.getCallingPid();
+            final int callingUserId = UserHandle.getCallingUserId();
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                mBiometricService.cancelAuthentication(token, opPackageName, callingUid,
+                        callingPid, callingUserId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
 
         @Override
         public int canAuthenticate(String opPackageName, int userId,
                 @Authenticators.Types int authenticators) throws RemoteException {
+
+            // Only allow internal clients to call canAuthenticate with a different userId.
             final int callingUserId = UserHandle.getCallingUserId();
             Slog.d(TAG, "canAuthenticate, userId: " + userId + ", callingUserId: " + callingUserId
                     + ", authenticators: " + authenticators);
@@ -139,33 +204,61 @@
             } else {
                 checkPermission();
             }
-            return mBiometricService.canAuthenticate(opPackageName, userId, authenticators);
+
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                return mBiometricService.canAuthenticate(
+                        opPackageName, userId, callingUserId, authenticators);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
 
         @Override
         public boolean hasEnrolledBiometrics(int userId, String opPackageName)
                 throws RemoteException {
             checkInternalPermission();
-            return mBiometricService.hasEnrolledBiometrics(userId, opPackageName);
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                return mBiometricService.hasEnrolledBiometrics(userId, opPackageName);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
 
         @Override
-        public void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback)
-                throws RemoteException {
+        public void registerEnabledOnKeyguardCallback(
+                IBiometricEnabledOnKeyguardCallback callback) throws RemoteException {
             checkInternalPermission();
-            mBiometricService.registerEnabledOnKeyguardCallback(callback);
+            final int callingUserId = UserHandle.getCallingUserId();
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                mBiometricService.registerEnabledOnKeyguardCallback(callback, callingUserId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
 
         @Override
         public void setActiveUser(int userId) throws RemoteException {
             checkInternalPermission();
-            mBiometricService.setActiveUser(userId);
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                mBiometricService.setActiveUser(userId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
 
         @Override
         public void resetLockout(byte[] token) throws RemoteException {
             checkInternalPermission();
-            mBiometricService.resetLockout(token);
+            final long identity = Binder.clearCallingIdentity();
+            try {
+                mBiometricService.resetLockout(token);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
     }
 
@@ -178,11 +271,25 @@
 
         mInjector = injector;
         mImpl = new AuthServiceImpl();
-        final PackageManager pm = context.getPackageManager();
+    }
+
+    @Override
+    public void onStart() {
+        mBiometricService = mInjector.getBiometricService();
+
+        final String[] configs = mInjector.getConfiguration(getContext());
+        for (String config : configs) {
+            try {
+                registerAuthenticator(new SensorConfig(config));
+            } catch (RemoteException e) {
+                Slog.e(TAG, "Remote exception", e);
+            }
+        }
+
+        mInjector.publishBinderService(this, mImpl);
     }
 
     private void registerAuthenticator(SensorConfig config) throws RemoteException {
-
         Slog.d(TAG, "Registering ID: " + config.mId
                 + " Modality: " + config.mModality
                 + " Strength: " + config.mStrength);
@@ -191,18 +298,36 @@
 
         switch (config.mModality) {
             case TYPE_FINGERPRINT:
-                authenticator = new FingerprintAuthenticator(IFingerprintService.Stub.asInterface(
-                        ServiceManager.getService(Context.FINGERPRINT_SERVICE)));
+                final IFingerprintService fingerprintService = mInjector.getFingerprintService();
+                if (fingerprintService == null) {
+                    Slog.e(TAG, "Attempting to register with null FingerprintService. Please check"
+                            + " your device configuration.");
+                    return;
+                }
+
+                authenticator = new FingerprintAuthenticator(fingerprintService);
                 break;
 
             case TYPE_FACE:
-                authenticator = new FaceAuthenticator(IFaceService.Stub.asInterface(
-                        ServiceManager.getService(Context.FACE_SERVICE)));
+                final IFaceService faceService = mInjector.getFaceService();
+                if (faceService == null) {
+                    Slog.e(TAG, "Attempting to register with null FaceService. Please check your"
+                            + " device configuration.");
+                    return;
+                }
+
+                authenticator = new FaceAuthenticator(faceService);
                 break;
 
             case TYPE_IRIS:
-                authenticator = new IrisAuthenticator(IIrisService.Stub.asInterface(
-                        ServiceManager.getService(Context.IRIS_SERVICE)));
+                final IIrisService irisService = mInjector.getIrisService();
+                if (irisService == null) {
+                    Slog.e(TAG, "Attempting to register with null IrisService. Please check your"
+                            + " device configuration.");
+                    return;
+                }
+
+                authenticator = new IrisAuthenticator(irisService);
                 break;
 
             default:
@@ -214,23 +339,6 @@
                 authenticator);
     }
 
-    @Override
-    public void onStart() {
-        mBiometricService = mInjector.getBiometricService();
-
-        final String[] configs = mInjector.getConfiguration(getContext());
-
-        for (int i = 0; i < configs.length; i++) {
-            try {
-                registerAuthenticator(new SensorConfig(configs[i]));
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Remote exception", e);
-            }
-
-        }
-
-        mInjector.publishBinderService(this, mImpl);
-    }
 
     private void checkInternalPermission() {
         getContext().enforceCallingOrSelfPermission(USE_BIOMETRIC_INTERNAL,
diff --git a/services/core/java/com/android/server/biometrics/AuthenticationClient.java b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
index 766e5c4..7bbda9f 100644
--- a/services/core/java/com/android/server/biometrics/AuthenticationClient.java
+++ b/services/core/java/com/android/server/biometrics/AuthenticationClient.java
@@ -20,11 +20,14 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.os.IBinder;
+import android.os.NativeHandle;
 import android.os.RemoteException;
 import android.security.KeyStore;
 import android.util.Slog;
 
+import java.io.IOException;
 import java.util.ArrayList;
 
 /**
@@ -41,6 +44,7 @@
     public static final int LOCKOUT_PERMANENT = 2;
 
     private final boolean mRequireConfirmation;
+    private final NativeHandle mWindowId;
 
     // We need to track this state since it's possible for applications to request for
     // authentication while the device is already locked out. In that case, the client is created
@@ -69,11 +73,25 @@
     public AuthenticationClient(Context context, Constants constants,
             BiometricServiceBase.DaemonWrapper daemon, long halDeviceId, IBinder token,
             BiometricServiceBase.ServiceListener listener, int targetUserId, int groupId, long opId,
-            boolean restricted, String owner, int cookie, boolean requireConfirmation) {
+            boolean restricted, String owner, int cookie, boolean requireConfirmation,
+            IBiometricNativeHandle windowId) {
         super(context, constants, daemon, halDeviceId, token, listener, targetUserId, groupId,
                 restricted, owner, cookie);
         mOpId = opId;
         mRequireConfirmation = requireConfirmation;
+        mWindowId = Utils.dupNativeHandle(windowId);
+    }
+
+    @Override
+    public void destroy() {
+        if (mWindowId != null && mWindowId.getFileDescriptors() != null) {
+            try {
+                mWindowId.close();
+            } catch (IOException e) {
+                Slog.e(getLogTag(), "Failed to close windowId NativeHandle: ", e);
+            }
+        }
+        super.destroy();
     }
 
     protected long getStartTimeMs() {
@@ -233,7 +251,7 @@
         onStart();
         try {
             mStartTimeMs = System.currentTimeMillis();
-            final int result = getDaemonWrapper().authenticate(mOpId, getGroupId());
+            final int result = getDaemonWrapper().authenticate(mOpId, getGroupId(), mWindowId);
             if (result != 0) {
                 Slog.w(getLogTag(), "startAuthentication failed, result=" + result);
                 mMetricsLogger.histogram(mConstants.tagAuthStartError(), result);
diff --git a/services/core/java/com/android/server/biometrics/BiometricService.java b/services/core/java/com/android/server/biometrics/BiometricService.java
index 8dd3242..3f6e88d 100644
--- a/services/core/java/com/android/server/biometrics/BiometricService.java
+++ b/services/core/java/com/android/server/biometrics/BiometricService.java
@@ -16,15 +16,14 @@
 
 package com.android.server.biometrics;
 
-import static android.Manifest.permission.USE_BIOMETRIC;
 import static android.Manifest.permission.USE_BIOMETRIC_INTERNAL;
-import static android.Manifest.permission.USE_FINGERPRINT;
 import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FACE;
 import static android.hardware.biometrics.BiometricAuthenticator.TYPE_FINGERPRINT;
 import static android.hardware.biometrics.BiometricAuthenticator.TYPE_IRIS;
 import static android.hardware.biometrics.BiometricAuthenticator.TYPE_NONE;
 import static android.hardware.biometrics.BiometricManager.Authenticators;
 
+import android.annotation.IntDef;
 import android.app.ActivityManager;
 import android.app.IActivityManager;
 import android.app.UserSwitchObserver;
@@ -32,7 +31,6 @@
 import android.app.trust.ITrustManager;
 import android.content.ContentResolver;
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.database.ContentObserver;
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
@@ -60,12 +58,12 @@
 import android.text.TextUtils;
 import android.util.Pair;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.os.SomeArgs;
 import com.android.internal.statusbar.IStatusBarService;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.SystemService;
 
 import java.util.ArrayList;
@@ -83,6 +81,25 @@
     static final String TAG = "BiometricService";
     private static final boolean DEBUG = true;
 
+    private static final int BIOMETRIC_NO_HARDWARE = 0;
+    private static final int BIOMETRIC_OK = 1;
+    private static final int BIOMETRIC_DISABLED_BY_DEVICE_POLICY = 2;
+    private static final int BIOMETRIC_INSUFFICIENT_STRENGTH = 3;
+    private static final int BIOMETRIC_INSUFFICIENT_STRENGTH_AFTER_DOWNGRADE = 4;
+    private static final int BIOMETRIC_HARDWARE_NOT_DETECTED = 5;
+    private static final int BIOMETRIC_NOT_ENROLLED = 6;
+    private static final int BIOMETRIC_NOT_ENABLED_FOR_APPS = 7;
+
+    @IntDef({BIOMETRIC_NO_HARDWARE,
+            BIOMETRIC_OK,
+            BIOMETRIC_DISABLED_BY_DEVICE_POLICY,
+            BIOMETRIC_INSUFFICIENT_STRENGTH,
+            BIOMETRIC_INSUFFICIENT_STRENGTH_AFTER_DOWNGRADE,
+            BIOMETRIC_HARDWARE_NOT_DETECTED,
+            BIOMETRIC_NOT_ENROLLED,
+            BIOMETRIC_NOT_ENABLED_FOR_APPS})
+    @interface BiometricStatus {}
+
     private static final int MSG_ON_AUTHENTICATION_SUCCEEDED = 2;
     private static final int MSG_ON_AUTHENTICATION_REJECTED = 3;
     private static final int MSG_ON_ERROR = 4;
@@ -206,7 +223,7 @@
         }
 
         boolean isAllowDeviceCredential() {
-            return Utils.isDeviceCredentialAllowed(mBundle);
+            return Utils.isCredentialRequested(mBundle);
         }
     }
 
@@ -318,7 +335,10 @@
                     SomeArgs args = (SomeArgs) msg.obj;
                     handleCancelAuthentication(
                             (IBinder) args.arg1 /* token */,
-                            (String) args.arg2 /* opPackageName */);
+                            (String) args.arg2 /* opPackageName */,
+                            args.argi1 /* callingUid */,
+                            args.argi2 /* callingPid */,
+                            args.argi3 /* callingUserId */);
                     args.recycle();
                     break;
                 }
@@ -372,16 +392,20 @@
          * strength.
          * @return a bitfield, see {@link Authenticators}
          */
-        public int getActualStrength() {
+        int getActualStrength() {
             return OEMStrength | updatedStrength;
         }
 
+        boolean isDowngraded() {
+            return OEMStrength != updatedStrength;
+        }
+
         /**
          * Stores the updated strength, which takes effect whenever {@link #getActualStrength()}
          * is checked.
          * @param newStrength
          */
-        public void updateStrength(int newStrength) {
+        void updateStrength(int newStrength) {
             String log = "updateStrength: Before(" + toString() + ")";
             updatedStrength = newStrength;
             log += " After(" + toString() + ")";
@@ -543,8 +567,7 @@
     final IBiometricServiceReceiverInternal mInternalReceiver =
             new IBiometricServiceReceiverInternal.Stub() {
         @Override
-        public void onAuthenticationSucceeded(boolean requireConfirmation, byte[] token)
-                throws RemoteException {
+        public void onAuthenticationSucceeded(boolean requireConfirmation, byte[] token) {
             SomeArgs args = SomeArgs.obtain();
             args.arg1 = requireConfirmation;
             args.arg2 = token;
@@ -552,8 +575,7 @@
         }
 
         @Override
-        public void onAuthenticationFailed()
-                throws RemoteException {
+        public void onAuthenticationFailed() {
             Slog.v(TAG, "onAuthenticationFailed");
             mHandler.obtainMessage(MSG_ON_AUTHENTICATION_REJECTED).sendToTarget();
         }
@@ -624,22 +646,9 @@
 
         @Override // Binder call
         public void authenticate(IBinder token, long sessionId, int userId,
-                IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle)
-                throws RemoteException {
-            final int callingUid = Binder.getCallingUid();
-            final int callingPid = Binder.getCallingPid();
-            final int callingUserId = UserHandle.getCallingUserId();
-
-            // In the BiometricServiceBase, check do the AppOps and foreground check.
-            if (userId == callingUserId) {
-                // Check the USE_BIOMETRIC permission here.
-                checkPermission();
-            } else {
-                // Only allow internal clients to authenticate with a different userId
-                Slog.w(TAG, "User " + callingUserId + " is requesting authentication of userid: "
-                        + userId);
-                checkInternalPermission();
-            }
+                IBiometricServiceReceiver receiver, String opPackageName, Bundle bundle,
+                int callingUid, int callingPid, int callingUserId) {
+            checkInternalPermission();
 
             if (token == null || receiver == null || opPackageName == null || bundle == null) {
                 Slog.e(TAG, "Unable to authenticate, one or more null arguments");
@@ -650,19 +659,10 @@
                 throw new SecurityException("Invalid authenticator configuration");
             }
 
-            if (bundle.getBoolean(BiometricPrompt.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS)) {
-                checkInternalPermission();
-            }
-
             Utils.combineAuthenticatorBundles(bundle);
 
-            // Check the usage of this in system server. Need to remove this check if it becomes a
-            // public API.
-            final boolean useDefaultTitle =
-                    bundle.getBoolean(BiometricPrompt.KEY_USE_DEFAULT_TITLE, false);
-            if (useDefaultTitle) {
-                checkInternalPermission();
-                // Set the default title if necessary
+            // Set the default title if necessary.
+            if (bundle.getBoolean(BiometricPrompt.KEY_USE_DEFAULT_TITLE, false)) {
                 if (TextUtils.isEmpty(bundle.getCharSequence(BiometricPrompt.KEY_TITLE))) {
                     bundle.putCharSequence(BiometricPrompt.KEY_TITLE,
                             getContext().getString(R.string.biometric_dialog_default_title));
@@ -684,30 +684,28 @@
         }
 
         @Override // Binder call
-        public void cancelAuthentication(IBinder token, String opPackageName)
-                throws RemoteException {
-            checkPermission();
+        public void cancelAuthentication(IBinder token, String opPackageName,
+                int callingUid, int callingPid, int callingUserId) {
+            checkInternalPermission();
 
             SomeArgs args = SomeArgs.obtain();
             args.arg1 = token;
             args.arg2 = opPackageName;
+            args.argi1 = callingUid;
+            args.argi2 = callingPid;
+            args.argi3 = callingUserId;
             mHandler.obtainMessage(MSG_CANCEL_AUTHENTICATION, args).sendToTarget();
         }
 
         @Override // Binder call
-        public int canAuthenticate(String opPackageName, int userId,
+        public int canAuthenticate(String opPackageName, int userId, int callingUserId,
                 @Authenticators.Types int authenticators) {
+            checkInternalPermission();
+
             Slog.d(TAG, "canAuthenticate: User=" + userId
-                    + ", Caller=" + UserHandle.getCallingUserId()
+                    + ", Caller=" + callingUserId
                     + ", Authenticators=" + authenticators);
 
-            if (userId != UserHandle.getCallingUserId()) {
-                checkInternalPermission();
-            } else {
-                checkPermission();
-            }
-
-
             if (!Utils.isValidAuthenticatorConfig(authenticators)) {
                 throw new SecurityException("Invalid authenticator configuration");
             }
@@ -716,27 +714,11 @@
             bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
 
             int biometricConstantsResult = BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
-            final long ident = Binder.clearCallingIdentity();
             try {
                 biometricConstantsResult = checkAndGetAuthenticators(userId, bundle, opPackageName,
                         false /* checkDevicePolicyManager */).second;
-                if (biometricConstantsResult != BiometricConstants.BIOMETRIC_SUCCESS
-                        && Utils.isDeviceCredentialAllowed(bundle)) {
-                    // If there's an issue with biometrics, but device credential is allowed and
-                    // set up, return SUCCESS. If device credential isn't set up either, return
-                    // ERROR_NO_DEVICE_CREDENTIAL.
-                    if (mTrustManager.isDeviceSecure(userId)) {
-                        biometricConstantsResult = BiometricConstants.BIOMETRIC_SUCCESS;
-                    } else {
-                        biometricConstantsResult =
-                                BiometricConstants.BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL;
-                    }
-                }
-
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
-            } finally {
-                Binder.restoreCallingIdentity(ident);
             }
 
             return Utils.biometricConstantsToBiometricManager(biometricConstantsResult);
@@ -746,7 +728,6 @@
         public boolean hasEnrolledBiometrics(int userId, String opPackageName) {
             checkInternalPermission();
 
-            final long ident = Binder.clearCallingIdentity();
             try {
                 for (AuthenticatorWrapper authenticator : mAuthenticators) {
                     if (authenticator.impl.hasEnrolledTemplates(userId, opPackageName)) {
@@ -755,9 +736,8 @@
                 }
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
-            } finally {
-                Binder.restoreCallingIdentity(ident);
             }
+
             return false;
         }
 
@@ -802,17 +782,19 @@
             }
 
             mAuthenticators.add(new AuthenticatorWrapper(id, modality, strength, authenticator));
+
+            mBiometricStrengthController.updateStrengths();
         }
 
         @Override // Binder call
-        public void registerEnabledOnKeyguardCallback(IBiometricEnabledOnKeyguardCallback callback)
-                throws RemoteException {
+        public void registerEnabledOnKeyguardCallback(
+                IBiometricEnabledOnKeyguardCallback callback, int callingUserId) {
             checkInternalPermission();
+
             mEnabledOnKeyguardCallbacks.add(new EnabledOnKeyguardCallback(callback));
             try {
                 callback.onChanged(BiometricSourceType.FACE,
-                        mSettingObserver.getFaceEnabledOnKeyguard(),
-                        UserHandle.getCallingUserId());
+                        mSettingObserver.getFaceEnabledOnKeyguard(), callingUserId);
             } catch (RemoteException e) {
                 Slog.w(TAG, "Remote exception", e);
             }
@@ -821,30 +803,26 @@
         @Override // Binder call
         public void setActiveUser(int userId) {
             checkInternalPermission();
-            final long ident = Binder.clearCallingIdentity();
+
             try {
                 for (AuthenticatorWrapper authenticator : mAuthenticators) {
                     authenticator.impl.setActiveUser(userId);
                 }
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
-            } finally {
-                Binder.restoreCallingIdentity(ident);
             }
         }
 
         @Override // Binder call
         public void resetLockout(byte[] token) {
             checkInternalPermission();
-            final long ident = Binder.clearCallingIdentity();
+
             try {
                 for (AuthenticatorWrapper authenticator : mAuthenticators) {
                     authenticator.impl.resetLockout(token);
                 }
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
-            } finally {
-                Binder.restoreCallingIdentity(ident);
             }
         }
     }
@@ -854,14 +832,6 @@
                 "Must have USE_BIOMETRIC_INTERNAL permission");
     }
 
-    private void checkPermission() {
-        if (getContext().checkCallingOrSelfPermission(USE_FINGERPRINT)
-                != PackageManager.PERMISSION_GRANTED) {
-            getContext().enforceCallingOrSelfPermission(USE_BIOMETRIC,
-                    "Must have USE_BIOMETRIC permission");
-        }
-    }
-
     /**
      * Class for injecting dependencies into BiometricService.
      * TODO(b/141025588): Replace with a dependency injection framework (e.g. Guice, Dagger).
@@ -1021,10 +991,82 @@
         return isBiometricDisabled;
     }
 
+    private static int biometricStatusToBiometricConstant(@BiometricStatus int status) {
+        switch (status) {
+            case BIOMETRIC_NO_HARDWARE:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT;
+            case BIOMETRIC_OK:
+                return BiometricConstants.BIOMETRIC_SUCCESS;
+            case BIOMETRIC_DISABLED_BY_DEVICE_POLICY:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
+            case BIOMETRIC_INSUFFICIENT_STRENGTH:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT;
+            case BIOMETRIC_INSUFFICIENT_STRENGTH_AFTER_DOWNGRADE:
+                return BiometricConstants.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED;
+            case BIOMETRIC_HARDWARE_NOT_DETECTED:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
+            case BIOMETRIC_NOT_ENROLLED:
+                return BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS;
+            case BIOMETRIC_NOT_ENABLED_FOR_APPS:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
+            default:
+                return BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
+        }
+    }
+
     /**
-     * Checks if there are any available biometrics, and returns the modality. This method also
-     * returns errors through the callback (no biometric feature, hardware not detected, no
-     * templates enrolled, etc). This service must not start authentication if errors are sent.
+     * Returns the status of the authenticator, with errors returned in a specific priority order.
+     * For example, {@link #BIOMETRIC_INSUFFICIENT_STRENGTH_AFTER_DOWNGRADE} is only returned
+     * if it has enrollments, and is enabled for apps.
+     *
+     * We should only return the modality if the authenticator should be exposed. e.g.
+     * BIOMETRIC_NOT_ENROLLED_FOR_APPS should not expose the authenticator's type.
+     *
+     * @return A Pair with `first` being modality, and `second` being @BiometricStatus
+     */
+    private Pair<Integer, Integer> getStatusForBiometricAuthenticator(
+            AuthenticatorWrapper authenticator, int userId, String opPackageName,
+            boolean checkDevicePolicyManager, int requestedStrength) {
+        if (checkDevicePolicyManager) {
+            if (isBiometricDisabledByDevicePolicy(authenticator.modality, userId)) {
+                return new Pair<>(TYPE_NONE, BIOMETRIC_DISABLED_BY_DEVICE_POLICY);
+            }
+        }
+
+        final boolean wasStrongEnough =
+                Utils.isAtLeastStrength(authenticator.OEMStrength, requestedStrength);
+        final boolean isStrongEnough =
+                Utils.isAtLeastStrength(authenticator.getActualStrength(), requestedStrength);
+
+        if (wasStrongEnough && !isStrongEnough) {
+            return new Pair<>(authenticator.modality,
+                    BIOMETRIC_INSUFFICIENT_STRENGTH_AFTER_DOWNGRADE);
+        } else if (!wasStrongEnough) {
+            return new Pair<>(TYPE_NONE, BIOMETRIC_INSUFFICIENT_STRENGTH);
+        }
+
+        try {
+            if (!authenticator.impl.isHardwareDetected(opPackageName)) {
+                return new Pair<>(authenticator.modality, BIOMETRIC_HARDWARE_NOT_DETECTED);
+            }
+
+            if (!authenticator.impl.hasEnrolledTemplates(userId, opPackageName)) {
+                return new Pair<>(authenticator.modality, BIOMETRIC_NOT_ENROLLED);
+            }
+        } catch (RemoteException e) {
+            return new Pair<>(authenticator.modality, BIOMETRIC_HARDWARE_NOT_DETECTED);
+        }
+
+        if (!isEnabledForApp(authenticator.modality, userId)) {
+            return new Pair<>(TYPE_NONE, BIOMETRIC_NOT_ENABLED_FOR_APPS);
+        }
+
+        return new Pair<>(authenticator.modality, BIOMETRIC_OK);
+    }
+
+    /**
+     * Depending on the requested authentication (credential/biometric combination), checks their
+     * availability.
      *
      * @param userId the user to check for
      * @param bundle passed from {@link BiometricPrompt}
@@ -1037,80 +1079,86 @@
      * {@link BiometricAuthenticator#TYPE_FACE}
      * and the error containing one of the {@link BiometricConstants} errors.
      *
-     * TODO(kchyn): Update this to handle DEVICE_CREDENTIAL better, reduce duplicate code in callers
+     * TODO(kchyn) should return Pair<Integer, Integer> with `first` being an actual bitfield
+     * taking BiometricAuthenticator#TYPE_CREDENTIAL as well.
+     *
      */
     private Pair<Integer, Integer> checkAndGetAuthenticators(int userId, Bundle bundle,
             String opPackageName, boolean checkDevicePolicyManager) throws RemoteException {
-        if (!Utils.isBiometricAllowed(bundle)
-                && Utils.isDeviceCredentialAllowed(bundle)
-                && !mTrustManager.isDeviceSecure(userId)) {
-            // If only device credential is being checked, and the user doesn't have one set up
-            return new Pair<>(TYPE_NONE, BiometricConstants.BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL);
-        }
 
-        // Assuming that authenticators are listed in priority-order, the rest of this function
-        // will attempt to find the first authenticator that's as strong or stronger than the
-        // requested strength, available, enrolled, and enabled. The tricky part is returning the
-        // correct error. Error strings that are modality-specific should also respect the
+        final boolean biometricRequested = Utils.isBiometricRequested(bundle);
+        final boolean credentialRequested = Utils.isCredentialRequested(bundle);
+
+        final boolean credentialOk = mTrustManager.isDeviceSecure(userId);
+
+        // Assuming that biometric authenticators are listed in priority-order, the rest of this
+        // function will attempt to find the first authenticator that's as strong or stronger than
+        // the requested strength, available, enrolled, and enabled. The tricky part is returning
+        // the correct error. Error strings that are modality-specific should also respect the
         // priority-order.
 
-        // Find first authenticator that's strong enough, detected, enrolled, and enabled.
-        boolean hasSufficientStrength = false;
-        boolean isHardwareDetected = false;
-        boolean hasTemplatesEnrolled = false;
-        boolean enabledForApps = false;
+        int firstBiometricModality = TYPE_NONE;
+        @BiometricStatus int firstBiometricStatus = BIOMETRIC_NO_HARDWARE;
 
-        int modality = TYPE_NONE;
-        int firstHwAvailable = TYPE_NONE;
+        int biometricModality = TYPE_NONE;
+        @BiometricStatus int biometricStatus = BIOMETRIC_NO_HARDWARE;
+
         for (AuthenticatorWrapper authenticator : mAuthenticators) {
-            final int actualStrength = authenticator.getActualStrength();
             final int requestedStrength = Utils.getPublicBiometricStrength(bundle);
-            if (Utils.isAtLeastStrength(actualStrength, requestedStrength)) {
-                hasSufficientStrength = true;
-                modality = authenticator.modality;
-                if (authenticator.impl.isHardwareDetected(opPackageName)) {
-                    isHardwareDetected = true;
-                    if (firstHwAvailable == TYPE_NONE) {
-                        // Store the first one since we want to return the error in correct
-                        // priority order.
-                        firstHwAvailable = modality;
-                    }
-                    if (authenticator.impl.hasEnrolledTemplates(userId, opPackageName)) {
-                        hasTemplatesEnrolled = true;
-                        // If the device policy manager disables a specific biometric, skip it.
-                        if (checkDevicePolicyManager &&
-                                isBiometricDisabledByDevicePolicy(modality, userId)) {
-                            continue;
-                        }
-                        if (isEnabledForApp(modality, userId)) {
-                            enabledForApps = true;
-                            break;
-                        }
-                    }
-                }
+            Pair<Integer, Integer> result = getStatusForBiometricAuthenticator(
+                    authenticator, userId, opPackageName, checkDevicePolicyManager,
+                    requestedStrength);
+
+            biometricStatus = result.second;
+
+            Slog.d(TAG, "Authenticator ID: " + authenticator.id
+                    + " Modality: " + authenticator.modality
+                    + " ReportedModality: " + result.first
+                    + " Status: " + biometricStatus);
+
+            if (firstBiometricModality == TYPE_NONE) {
+                firstBiometricModality = result.first;
+                firstBiometricStatus = biometricStatus;
+            }
+
+            if (biometricStatus == BIOMETRIC_OK) {
+                biometricModality = result.first;
+                break;
             }
         }
 
-        Slog.d(TAG, "checkAndGetAuthenticators: user=" + userId
-                + " checkDevicePolicyManager=" + checkDevicePolicyManager
-                + " isHardwareDetected=" + isHardwareDetected
-                + " hasTemplatesEnrolled=" + hasTemplatesEnrolled
-                + " enabledForApps=" + enabledForApps);
-
-        // Check error conditions
-        if (!hasSufficientStrength) {
-            return new Pair<>(TYPE_NONE, BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT);
-        } else if (!isHardwareDetected) {
-            return new Pair<>(TYPE_NONE, BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE);
-        } else if (!hasTemplatesEnrolled) {
-            // Return the modality here so the correct error string can be sent. This error is
-            // preferred over !enabledForApps
-            return new Pair<>(firstHwAvailable, BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS);
-        } else if (!enabledForApps) {
+        if (biometricRequested && credentialRequested) {
+            if (credentialOk || biometricStatus == BIOMETRIC_OK) {
+                if (biometricStatus != BIOMETRIC_OK) {
+                    // If there's a problem with biometrics but device credential is
+                    // allowed, only show credential UI.
+                    bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED,
+                            Authenticators.DEVICE_CREDENTIAL);
+                }
+                return new Pair<>(biometricModality, BiometricConstants.BIOMETRIC_SUCCESS);
+            } else {
+                return new Pair<>(firstBiometricModality,
+                        BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS);
+            }
+        } else if (biometricRequested) {
+            if (biometricStatus == BIOMETRIC_OK) {
+                return new Pair<>(biometricModality,
+                        biometricStatusToBiometricConstant(biometricStatus));
+            } else {
+                return new Pair<>(firstBiometricModality,
+                        biometricStatusToBiometricConstant(firstBiometricStatus));
+            }
+        } else if (credentialRequested) {
+            if (credentialOk) {
+                return new Pair<>(TYPE_NONE, BiometricConstants.BIOMETRIC_SUCCESS);
+            } else {
+                return new Pair<>(TYPE_NONE,
+                        BiometricConstants.BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL);
+            }
+        } else {
+            Slog.e(TAG, "No authenticators requested");
             return new Pair<>(TYPE_NONE, BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE);
         }
-
-        return new Pair<>(modality, BiometricConstants.BIOMETRIC_SUCCESS);
     }
 
     private boolean isEnabledForApp(int modality, int userId) {
@@ -1142,17 +1190,17 @@
                         + ", Client: " + BiometricsProtoEnums.CLIENT_BIOMETRIC_PROMPT
                         + ", RequireConfirmation: "
                         + mCurrentAuthSession.mRequireConfirmation
-                        + ", State: " + StatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED
+                        + ", State: " + FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED
                         + ", Latency: " + latency);
             }
 
-            StatsLog.write(StatsLog.BIOMETRIC_AUTHENTICATED,
+            FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_AUTHENTICATED,
                     statsModality(),
                     mCurrentAuthSession.mUserId,
                     mCurrentAuthSession.isCrypto(),
                     BiometricsProtoEnums.CLIENT_BIOMETRIC_PROMPT,
                     mCurrentAuthSession.mRequireConfirmation,
-                    StatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED,
+                    FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED,
                     latency,
                     mInjector.isDebugEnabled(getContext(), mCurrentAuthSession.mUserId));
         } else {
@@ -1174,7 +1222,7 @@
                         + ", Latency: " + latency);
             }
             // Auth canceled
-            StatsLog.write(StatsLog.BIOMETRIC_ERROR_OCCURRED,
+            FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_ERROR_OCCURRED,
                     statsModality(),
                     mCurrentAuthSession.mUserId,
                     mCurrentAuthSession.isCrypto(),
@@ -1371,16 +1419,14 @@
             return;
         }
 
-        if (acquiredInfo != BiometricConstants.BIOMETRIC_ACQUIRED_GOOD) {
-            if (message == null) {
-                Slog.w(TAG, "Ignoring null message: " + acquiredInfo);
-                return;
-            }
-            try {
-                mStatusBarService.onBiometricHelp(message);
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Remote exception", e);
-            }
+        if (message == null) {
+            Slog.w(TAG, "Ignoring null message: " + acquiredInfo);
+            return;
+        }
+        try {
+            mStatusBarService.onBiometricHelp(message);
+        } catch (RemoteException e) {
+            Slog.e(TAG, "Remote exception", e);
         }
     }
 
@@ -1408,7 +1454,9 @@
                     mCurrentAuthSession.mClientReceiver.onDialogDismissed(reason);
                     // Cancel authentication. Skip the token/package check since we are cancelling
                     // from system server. The interface is permission protected so this is fine.
-                    cancelInternal(null /* token */, null /* package */, false /* fromClient */);
+                    cancelInternal(null /* token */, null /* package */,
+                            mCurrentAuthSession.mCallingUid, mCurrentAuthSession.mCallingPid,
+                            mCurrentAuthSession.mCallingUserId, false /* fromClient */);
                     break;
 
                 case BiometricPrompt.DISMISSED_REASON_USER_CANCEL:
@@ -1419,7 +1467,9 @@
                     );
                     // Cancel authentication. Skip the token/package check since we are cancelling
                     // from system server. The interface is permission protected so this is fine.
-                    cancelInternal(null /* token */, null /* package */, false /* fromClient */);
+                    cancelInternal(null /* token */, null /* package */, Binder.getCallingUid(),
+                            Binder.getCallingPid(), UserHandle.getCallingUserId(),
+                            false /* fromClient */);
                     break;
 
                 case BiometricPrompt.DISMISSED_REASON_SERVER_REQUESTED:
@@ -1469,7 +1519,9 @@
 
         // Cancel authentication. Skip the token/package check since we are cancelling
         // from system server. The interface is permission protected so this is fine.
-        cancelInternal(null /* token */, null /* package */, false /* fromClient */);
+        cancelInternal(null /* token */, null /* package */, Binder.getCallingUid(),
+                Binder.getCallingPid(), UserHandle.getCallingUserId(),
+                false /* fromClient */);
 
         mCurrentAuthSession.mState = STATE_SHOWING_DEVICE_CREDENTIAL;
     }
@@ -1549,41 +1601,19 @@
             int callingUid, int callingPid, int callingUserId) {
 
         mHandler.post(() -> {
-            int modality = TYPE_NONE;
-            int result;
-
             try {
                 final boolean checkDevicePolicyManager = bundle.getBoolean(
                         BiometricPrompt.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS, false);
                 final Pair<Integer, Integer> pair = checkAndGetAuthenticators(userId, bundle,
                         opPackageName, checkDevicePolicyManager);
-                modality = pair.first;
-                result = pair.second;
-            } catch (RemoteException e) {
-                Slog.e(TAG, "Remote exception", e);
-                result = BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE;
-            }
+                final int modality = pair.first;
+                final int result = pair.second;
 
-            try {
-                if (result == BiometricConstants.BIOMETRIC_ERROR_NO_DEVICE_CREDENTIAL) {
-                    // If the app allowed device credential but the user hasn't set it up yet,
-                    // return this error.
-                    receiver.onError(modality, result, 0 /* vendorCode */);
-                } else if (result != BiometricConstants.BIOMETRIC_SUCCESS) {
-                    if (Utils.isDeviceCredentialAllowed(bundle)) {
-                        // If there's a problem with biometrics but device credential is allowed,
-                        // only show credential UI.
-                        bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED,
-                                Authenticators.DEVICE_CREDENTIAL);
-                        authenticateInternal(token, sessionId, userId, receiver, opPackageName,
-                                bundle, callingUid, callingPid, callingUserId, modality);
-                    } else {
-                        receiver.onError(modality, result, 0 /* vendorCode */);
-                    }
+                if (result == BiometricConstants.BIOMETRIC_SUCCESS) {
+                    authenticateInternal(token, sessionId, userId, receiver, opPackageName,
+                            bundle, callingUid, callingPid, callingUserId, modality);
                 } else {
-                    // BIOMETRIC_SUCCESS, proceed to authentication
-                    authenticateInternal(token, sessionId, userId, receiver, opPackageName, bundle,
-                            callingUid, callingPid, callingUserId, modality);
+                    receiver.onError(modality, result, 0 /* vendorCode */);
                 }
             } catch (RemoteException e) {
                 Slog.e(TAG, "Remote exception", e);
@@ -1661,7 +1691,8 @@
         }
     }
 
-    private void handleCancelAuthentication(IBinder token, String opPackageName) {
+    private void handleCancelAuthentication(IBinder token, String opPackageName, int callingUid,
+            int callingPid, int callingUserId) {
         if (token == null || opPackageName == null) {
             Slog.e(TAG, "Unable to cancel, one or more null arguments");
             return;
@@ -1684,14 +1715,13 @@
                 Slog.e(TAG, "Remote exception", e);
             }
         } else {
-            cancelInternal(token, opPackageName, true /* fromClient */);
+            cancelInternal(token, opPackageName, callingUid, callingPid, callingUserId,
+                    true /* fromClient */);
         }
     }
 
-    void cancelInternal(IBinder token, String opPackageName, boolean fromClient) {
-        final int callingUid = Binder.getCallingUid();
-        final int callingPid = Binder.getCallingPid();
-        final int callingUserId = UserHandle.getCallingUserId();
+    void cancelInternal(IBinder token, String opPackageName, int callingUid, int callingPid,
+            int callingUserId, boolean fromClient) {
 
         if (mCurrentAuthSession == null) {
             Slog.w(TAG, "Skipping cancelInternal");
diff --git a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
index 60f0e8e..0e70994 100644
--- a/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
+++ b/services/core/java/com/android/server/biometrics/BiometricServiceBase.java
@@ -32,6 +32,7 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricService;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.hardware.biometrics.IBiometricServiceReceiverInternal;
@@ -43,6 +44,7 @@
 import android.os.IBinder;
 import android.os.IHwBinder;
 import android.os.IRemoteCallback;
+import android.os.NativeHandle;
 import android.os.PowerManager;
 import android.os.Process;
 import android.os.RemoteException;
@@ -51,10 +53,10 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.statusbar.IStatusBarService;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.SystemService;
 
 import java.util.ArrayList;
@@ -220,9 +222,10 @@
 
         public AuthenticationClientImpl(Context context, DaemonWrapper daemon, long halDeviceId,
                 IBinder token, ServiceListener listener, int targetUserId, int groupId, long opId,
-                boolean restricted, String owner, int cookie, boolean requireConfirmation) {
+                boolean restricted, String owner, int cookie, boolean requireConfirmation,
+                IBiometricNativeHandle windowId) {
             super(context, getConstants(), daemon, halDeviceId, token, listener, targetUserId,
-                    groupId, opId, restricted, owner, cookie, requireConfirmation);
+                    groupId, opId, restricted, owner, cookie, requireConfirmation, windowId);
         }
 
         @Override
@@ -283,10 +286,10 @@
         public EnrollClientImpl(Context context, DaemonWrapper daemon, long halDeviceId,
                 IBinder token, ServiceListener listener, int userId, int groupId,
                 byte[] cryptoToken, boolean restricted, String owner,
-                final int[] disabledFeatures, int timeoutSec) {
+                final int[] disabledFeatures, int timeoutSec, IBiometricNativeHandle windowId) {
             super(context, getConstants(), daemon, halDeviceId, token, listener,
                     userId, groupId, cryptoToken, restricted, owner, getBiometricUtils(),
-                    disabledFeatures, timeoutSec);
+                    disabledFeatures, timeoutSec, windowId);
         }
 
         @Override
@@ -371,7 +374,7 @@
                         + identifier.getName());
                 mUtils.removeBiometricForUser(getContext(),
                         getTargetUserId(), identifier.getBiometricId());
-                StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+                FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
                         statsModality(),
                         BiometricsProtoEnums.ISSUE_UNKNOWN_TEMPLATE_ENROLLED_FRAMEWORK);
             }
@@ -472,12 +475,13 @@
      */
     protected interface DaemonWrapper {
         int ERROR_ESRCH = 3; // Likely HAL is dead. see errno.h.
-        int authenticate(long operationId, int groupId) throws RemoteException;
+        int authenticate(long operationId, int groupId, NativeHandle windowId)
+                throws RemoteException;
         int cancel() throws RemoteException;
         int remove(int groupId, int biometricId) throws RemoteException;
         int enumerate() throws RemoteException;
         int enroll(byte[] token, int groupId, int timeout,
-                ArrayList<Integer> disabledFeatures) throws RemoteException;
+                ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException;
         void resetLockout(byte[] token) throws RemoteException;
     }
 
@@ -551,7 +555,7 @@
                     + " failed to respond to cancel, starting client "
                     + (mPendingClient != null ? mPendingClient.getOwnerString() : "null"));
 
-            StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+            FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
                     statsModality(), BiometricsProtoEnums.ISSUE_CANCEL_TIMED_OUT);
 
             mCurrentClient = null;
@@ -673,8 +677,8 @@
                     0 /*vendorCode */);
         });
 
-        StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED, statsModality(),
-                BiometricsProtoEnums.ISSUE_HAL_DEATH);
+        FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+                statsModality(), BiometricsProtoEnums.ISSUE_HAL_DEATH);
     }
 
     protected ClientMonitor getCurrentClient() {
@@ -1249,7 +1253,7 @@
                     template.mIdentifier.getBiometricId(), 0 /* groupId */, template.mUserId,
                     restricted, getContext().getPackageName());
             removeInternal(client);
-            StatsLog.write(StatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
+            FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_SYSTEM_HEALTH_ISSUE_DETECTED,
                     statsModality(),
                     BiometricsProtoEnums.ISSUE_UNKNOWN_TEMPLATE_ENROLLED_HAL);
         } else {
diff --git a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
index 4e16189..ca7ca5b 100644
--- a/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
+++ b/services/core/java/com/android/server/biometrics/BiometricStrengthController.java
@@ -29,7 +29,7 @@
  * Class for maintaining and updating the strengths for biometric sensors. Strengths can only
  * be downgraded from the device's default, and never upgraded.
  */
-public class BiometricStrengthController implements DeviceConfig.OnPropertiesChangedListener {
+public class BiometricStrengthController {
     private static final String TAG = "BiometricStrengthController";
 
     private final BiometricService mService;
@@ -41,7 +41,7 @@
      * "id1:strength1,id2:strength2,id3:strength3"
      *
      * where strength is one of the values defined in
-     * {@link android.hardware.biometrics.Authenticators}
+     * {@link android.hardware.biometrics.BiometricManager.Authenticators}
      *
      * Both id and strength should be int, otherwise Exception will be thrown when parsing and the
      * downgrade will fail.
@@ -53,30 +53,28 @@
      */
     public static final String DEFAULT_BIOMETRIC_STRENGTHS = null;
 
-    BiometricStrengthController(@NonNull BiometricService service) {
-        mService = service;
-    }
-
-    void startListening() {
-        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_BIOMETRICS,
-                BackgroundThread.getExecutor(), this);
-        updateStrengths();
-    }
-
-    @Override
-    public void onPropertiesChanged(@NonNull DeviceConfig.Properties properties) {
+    private DeviceConfig.OnPropertiesChangedListener mDeviceConfigListener = properties -> {
         for (String name : properties.getKeyset()) {
             if (KEY_BIOMETRIC_STRENGTHS.equals(name)) {
                 updateStrengths();
             }
         }
+    };
+
+    public BiometricStrengthController(@NonNull BiometricService service) {
+        mService = service;
+    }
+
+    public void startListening() {
+        DeviceConfig.addOnPropertiesChangedListener(DeviceConfig.NAMESPACE_BIOMETRICS,
+                BackgroundThread.getExecutor(), mDeviceConfigListener);
     }
 
     /**
      * Updates the strengths of authenticators in BiometricService if a matching ID's configuration
      * has been changed.
      */
-    private void updateStrengths() {
+    public void updateStrengths() {
         final Map<Integer, Integer> idToStrength = getIdToStrengthMap();
         if (idToStrength == null) {
             return;
diff --git a/services/core/java/com/android/server/biometrics/EnrollClient.java b/services/core/java/com/android/server/biometrics/EnrollClient.java
index 7ebb7c0..684795e 100644
--- a/services/core/java/com/android/server/biometrics/EnrollClient.java
+++ b/services/core/java/com/android/server/biometrics/EnrollClient.java
@@ -20,10 +20,13 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.os.IBinder;
+import android.os.NativeHandle;
 import android.os.RemoteException;
 import android.util.Slog;
 
+import java.io.IOException;
 import java.util.ArrayList;
 import java.util.Arrays;
 
@@ -35,6 +38,7 @@
     private final BiometricUtils mBiometricUtils;
     private final int[] mDisabledFeatures;
     private final int mTimeoutSec;
+    private final NativeHandle mWindowId;
 
     private long mEnrollmentStartTimeMs;
 
@@ -44,13 +48,26 @@
             BiometricServiceBase.DaemonWrapper daemon, long halDeviceId, IBinder token,
             BiometricServiceBase.ServiceListener listener, int userId, int groupId,
             byte[] cryptoToken, boolean restricted, String owner, BiometricUtils utils,
-            final int[] disabledFeatures, int timeoutSec) {
+            final int[] disabledFeatures, int timeoutSec, IBiometricNativeHandle windowId) {
         super(context, constants, daemon, halDeviceId, token, listener, userId, groupId, restricted,
                 owner, 0 /* cookie */);
         mBiometricUtils = utils;
         mCryptoToken = Arrays.copyOf(cryptoToken, cryptoToken.length);
         mDisabledFeatures = Arrays.copyOf(disabledFeatures, disabledFeatures.length);
         mTimeoutSec = timeoutSec;
+        mWindowId = Utils.dupNativeHandle(windowId);
+    }
+
+    @Override
+    public void destroy() {
+        if (mWindowId != null && mWindowId.getFileDescriptors() != null) {
+            try {
+                mWindowId.close();
+            } catch (IOException e) {
+                Slog.e(getLogTag(), "Failed to close windowId NativeHandle: ", e);
+            }
+        }
+        super.destroy();
     }
 
     @Override
@@ -102,7 +119,7 @@
             }
 
             final int result = getDaemonWrapper().enroll(mCryptoToken, getGroupId(), mTimeoutSec,
-                    disabledFeatures);
+                    disabledFeatures, mWindowId);
             if (result != 0) {
                 Slog.w(getLogTag(), "startEnroll failed, result=" + result);
                 mMetricsLogger.histogram(mConstants.tagEnrollStartError(), result);
diff --git a/services/core/java/com/android/server/biometrics/LoggableMonitor.java b/services/core/java/com/android/server/biometrics/LoggableMonitor.java
index ecf3864..c50ab17 100644
--- a/services/core/java/com/android/server/biometrics/LoggableMonitor.java
+++ b/services/core/java/com/android/server/biometrics/LoggableMonitor.java
@@ -20,8 +20,10 @@
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
 import android.hardware.face.FaceManager;
+import android.hardware.fingerprint.FingerprintManager;
 import android.util.Slog;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Abstract class that adds logging functionality to the ClientMonitor classes.
@@ -68,8 +70,12 @@
 
     protected final void logOnAcquired(Context context, int acquiredInfo, int vendorCode,
             int targetUserId) {
-        if (statsModality() == BiometricsProtoEnums.MODALITY_FACE) {
-            if (acquiredInfo == FaceManager.FACE_ACQUIRED_START) {
+
+        final boolean isFace = statsModality() == BiometricsProtoEnums.MODALITY_FACE;
+        final boolean isFingerprint = statsModality() == BiometricsProtoEnums.MODALITY_FINGERPRINT;
+        if (isFace || isFingerprint) {
+            if ((isFingerprint && acquiredInfo == FingerprintManager.FINGERPRINT_ACQUIRED_START)
+                    || (isFace && acquiredInfo == FaceManager.FACE_ACQUIRED_START)) {
                 mFirstAcquireTimeMs = System.currentTimeMillis();
             }
         } else if (acquiredInfo == BiometricConstants.BIOMETRIC_ACQUIRED_GOOD) {
@@ -86,7 +92,7 @@
                     + ", AcquiredInfo: " + acquiredInfo
                     + ", VendorCode: " + vendorCode);
         }
-        StatsLog.write(StatsLog.BIOMETRIC_ACQUIRED,
+        FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_ACQUIRED,
                 statsModality(),
                 targetUserId,
                 isCryptoOperation(),
@@ -114,7 +120,7 @@
         } else {
             Slog.v(TAG, "Error latency: " + latency);
         }
-        StatsLog.write(StatsLog.BIOMETRIC_ERROR_OCCURRED,
+        FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_ERROR_OCCURRED,
                 statsModality(),
                 targetUserId,
                 isCryptoOperation(),
@@ -123,20 +129,20 @@
                 error,
                 vendorCode,
                 Utils.isDebugEnabled(context, targetUserId),
-                latency);
+                sanitizeLatency(latency));
     }
 
     protected final void logOnAuthenticated(Context context, boolean authenticated,
             boolean requireConfirmation, int targetUserId, boolean isBiometricPrompt) {
-        int authState = StatsLog.BIOMETRIC_AUTHENTICATED__STATE__UNKNOWN;
+        int authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__UNKNOWN;
         if (!authenticated) {
-            authState = StatsLog.BIOMETRIC_AUTHENTICATED__STATE__REJECTED;
+            authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__REJECTED;
         } else {
             // Authenticated
             if (isBiometricPrompt && requireConfirmation) {
-                authState = StatsLog.BIOMETRIC_AUTHENTICATED__STATE__PENDING_CONFIRMATION;
+                authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__PENDING_CONFIRMATION;
             } else {
-                authState = StatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED;
+                authState = FrameworkStatsLog.BIOMETRIC_AUTHENTICATED__STATE__CONFIRMED;
             }
         }
 
@@ -157,14 +163,14 @@
             Slog.v(TAG, "Authentication latency: " + latency);
         }
 
-        StatsLog.write(StatsLog.BIOMETRIC_AUTHENTICATED,
+        FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_AUTHENTICATED,
                 statsModality(),
                 targetUserId,
                 isCryptoOperation(),
                 statsClient(),
                 requireConfirmation,
                 authState,
-                latency,
+                sanitizeLatency(latency),
                 Utils.isDebugEnabled(context, targetUserId));
     }
 
@@ -179,11 +185,19 @@
             Slog.v(TAG, "Enroll latency: " + latency);
         }
 
-        StatsLog.write(StatsLog.BIOMETRIC_ENROLLED,
+        FrameworkStatsLog.write(FrameworkStatsLog.BIOMETRIC_ENROLLED,
                 statsModality(),
                 targetUserId,
-                latency,
+                sanitizeLatency(latency),
                 enrollSuccessful);
     }
 
+    private long sanitizeLatency(long latency) {
+        if (latency < 0) {
+            Slog.w(TAG, "found a negative latency : " + latency);
+            return -1;
+        }
+        return latency;
+    }
+
 }
diff --git a/services/core/java/com/android/server/biometrics/Utils.java b/services/core/java/com/android/server/biometrics/Utils.java
index 389763b..8f3fd36 100644
--- a/services/core/java/com/android/server/biometrics/Utils.java
+++ b/services/core/java/com/android/server/biometrics/Utils.java
@@ -23,12 +23,17 @@
 import android.hardware.biometrics.BiometricManager;
 import android.hardware.biometrics.BiometricPrompt;
 import android.hardware.biometrics.BiometricPrompt.AuthenticationResultType;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.os.Build;
 import android.os.Bundle;
+import android.os.NativeHandle;
 import android.os.UserHandle;
 import android.provider.Settings;
 import android.util.Slog;
 
+import java.io.FileDescriptor;
+import java.io.IOException;
+
 public class Utils {
     public static boolean isDebugEnabled(Context context, int targetUserId) {
         if (targetUserId == UserHandle.USER_NULL) {
@@ -75,7 +80,7 @@
      * @param authenticators composed of one or more values from {@link Authenticators}
      * @return true if device credential is allowed.
      */
-    public static boolean isDeviceCredentialAllowed(@Authenticators.Types int authenticators) {
+    public static boolean isCredentialRequested(@Authenticators.Types int authenticators) {
         return (authenticators & Authenticators.DEVICE_CREDENTIAL) != 0;
     }
 
@@ -83,8 +88,8 @@
      * @param bundle should be first processed by {@link #combineAuthenticatorBundles(Bundle)}
      * @return true if device credential is allowed.
      */
-    public static boolean isDeviceCredentialAllowed(Bundle bundle) {
-        return isDeviceCredentialAllowed(bundle.getInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED));
+    public static boolean isCredentialRequested(Bundle bundle) {
+        return isCredentialRequested(bundle.getInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED));
     }
 
     /**
@@ -115,7 +120,7 @@
      * @param bundle should be first processed by {@link #combineAuthenticatorBundles(Bundle)}
      * @return true if biometric authentication is allowed.
      */
-    public static boolean isBiometricAllowed(Bundle bundle) {
+    public static boolean isBiometricRequested(Bundle bundle) {
         return getPublicBiometricStrength(bundle) != 0;
     }
 
@@ -164,7 +169,7 @@
         // should be set.
         final int biometricBits = authenticators & Authenticators.BIOMETRIC_MIN_STRENGTH;
         if (biometricBits == Authenticators.EMPTY_SET
-                && isDeviceCredentialAllowed(authenticators)) {
+                && isCredentialRequested(authenticators)) {
             return true;
         } else if (biometricBits == Authenticators.BIOMETRIC_STRONG) {
             return true;
@@ -204,6 +209,9 @@
             case BiometricConstants.BIOMETRIC_ERROR_HW_NOT_PRESENT:
                 biometricManagerCode = BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE;
                 break;
+            case BiometricConstants.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED:
+                biometricManagerCode = BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED;
+                break;
             default:
                 Slog.e(BiometricService.TAG, "Unhandled result code: " + biometricConstantsCode);
                 biometricManagerCode = BiometricManager.BIOMETRIC_ERROR_HW_UNAVAILABLE;
@@ -237,4 +245,31 @@
                 throw new IllegalArgumentException("Unsupported dismissal reason: " + reason);
         }
     }
+
+    /**
+     * Converts an {@link IBiometricNativeHandle} to a {@link NativeHandle} by duplicating the
+     * the underlying file descriptors.
+     *
+     * Both the original and new handle must be closed after use.
+     *
+     * @param h {@link IBiometricNativeHandle} received as a binder call argument. Usually used to
+     *          identify a WindowManager window. Can be null.
+     * @return A {@link NativeHandle} representation of {@code h}. Will be null if either {@code h}
+     *          or its contents are null.
+     */
+    public static NativeHandle dupNativeHandle(IBiometricNativeHandle h) {
+        NativeHandle handle = null;
+        if (h != null && h.fds != null && h.ints != null) {
+            FileDescriptor[] fds = new FileDescriptor[h.fds.length];
+            for (int i = 0; i < h.fds.length; ++i) {
+                try {
+                    fds[i] = h.fds[i].dup().getFileDescriptor();
+                } catch (IOException e) {
+                    return null;
+                }
+            }
+            handle = new NativeHandle(fds, h.ints, true /* own */);
+        }
+        return handle;
+    }
 }
diff --git a/services/core/java/com/android/server/biometrics/face/FaceService.java b/services/core/java/com/android/server/biometrics/face/FaceService.java
index a0573db..31c3d4d 100644
--- a/services/core/java/com/android/server/biometrics/face/FaceService.java
+++ b/services/core/java/com/android/server/biometrics/face/FaceService.java
@@ -34,6 +34,7 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.hardware.biometrics.IBiometricServiceReceiverInternal;
 import android.hardware.biometrics.face.V1_0.IBiometricsFace;
@@ -214,9 +215,10 @@
         public FaceAuthClient(Context context,
                 DaemonWrapper daemon, long halDeviceId, IBinder token,
                 ServiceListener listener, int targetUserId, int groupId, long opId,
-                boolean restricted, String owner, int cookie, boolean requireConfirmation) {
+                boolean restricted, String owner, int cookie, boolean requireConfirmation,
+                IBiometricNativeHandle windowId) {
             super(context, daemon, halDeviceId, token, listener, targetUserId, groupId, opId,
-                    restricted, owner, cookie, requireConfirmation);
+                    restricted, owner, cookie, requireConfirmation, windowId);
         }
 
         @Override
@@ -373,7 +375,7 @@
         @Override // Binder call
         public void enroll(int userId, final IBinder token, final byte[] cryptoToken,
                 final IFaceServiceReceiver receiver, final String opPackageName,
-                final int[] disabledFeatures) {
+                final int[] disabledFeatures, IBiometricNativeHandle windowId) {
             checkPermission(MANAGE_BIOMETRIC);
             updateActiveGroup(userId, opPackageName);
 
@@ -384,7 +386,7 @@
             final EnrollClientImpl client = new EnrollClientImpl(getContext(), mDaemonWrapper,
                     mHalDeviceId, token, new ServiceListenerImpl(receiver), mCurrentUserId,
                     0 /* groupId */, cryptoToken, restricted, opPackageName, disabledFeatures,
-                    ENROLL_TIMEOUT_SEC) {
+                    ENROLL_TIMEOUT_SEC, windowId) {
 
                 @Override
                 public int[] getAcquireIgnorelist() {
@@ -411,6 +413,14 @@
         }
 
         @Override // Binder call
+        public void enrollRemotely(int userId, final IBinder token, final byte[] cryptoToken,
+                final IFaceServiceReceiver receiver, final String opPackageName,
+                final int[] disabledFeatures) {
+            checkPermission(MANAGE_BIOMETRIC);
+            // TODO(b/145027036): Implement this.
+        }
+
+        @Override // Binder call
         public void cancelEnrollment(final IBinder token) {
             checkPermission(MANAGE_BIOMETRIC);
             cancelEnrollmentInternal(token);
@@ -426,7 +436,7 @@
             final AuthenticationClientImpl client = new FaceAuthClient(getContext(),
                     mDaemonWrapper, mHalDeviceId, token, new ServiceListenerImpl(receiver),
                     mCurrentUserId, 0 /* groupId */, opId, restricted, opPackageName,
-                    0 /* cookie */, false /* requireConfirmation */);
+                    0 /* cookie */, false /* requireConfirmation */, null /* windowId */);
             authenticateInternal(client, opId, opPackageName);
         }
 
@@ -442,7 +452,7 @@
                     mDaemonWrapper, mHalDeviceId, token,
                     new BiometricPromptServiceListenerImpl(wrapperReceiver),
                     mCurrentUserId, 0 /* groupId */, opId, restricted, opPackageName, cookie,
-                    requireConfirmation);
+                    requireConfirmation, null /* windowId */);
             authenticateInternal(client, opId, opPackageName, callingUid, callingPid,
                     callingUserId);
         }
@@ -962,9 +972,10 @@
         @Override
         public void onLockoutChanged(long duration) {
             Slog.d(TAG, "onLockoutChanged: " + duration);
+
             if (duration == 0) {
                 mCurrentUserLockoutMode = AuthenticationClient.LOCKOUT_NONE;
-            } else if (duration == Long.MAX_VALUE) {
+            } else if (duration == -1 || duration == Long.MAX_VALUE) {
                 mCurrentUserLockoutMode = AuthenticationClient.LOCKOUT_PERMANENT;
             } else {
                 mCurrentUserLockoutMode = AuthenticationClient.LOCKOUT_TIMED;
@@ -984,7 +995,8 @@
      */
     private final DaemonWrapper mDaemonWrapper = new DaemonWrapper() {
         @Override
-        public int authenticate(long operationId, int groupId) throws RemoteException {
+        public int authenticate(long operationId, int groupId, NativeHandle windowId)
+                throws RemoteException {
             IBiometricsFace daemon = getFaceDaemon();
             if (daemon == null) {
                 Slog.w(TAG, "authenticate(): no face HAL!");
@@ -1025,7 +1037,7 @@
 
         @Override
         public int enroll(byte[] cryptoToken, int groupId, int timeout,
-                ArrayList<Integer> disabledFeatures) throws RemoteException {
+                ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException {
             IBiometricsFace daemon = getFaceDaemon();
             if (daemon == null) {
                 Slog.w(TAG, "enroll(): no face HAL!");
@@ -1035,7 +1047,17 @@
             for (int i = 0; i < cryptoToken.length; i++) {
                 token.add(cryptoToken[i]);
             }
-            return daemon.enroll(token, timeout, disabledFeatures);
+            android.hardware.biometrics.face.V1_1.IBiometricsFace daemon11 =
+                    android.hardware.biometrics.face.V1_1.IBiometricsFace.castFrom(
+                            daemon);
+            if (daemon11 != null) {
+                return daemon11.enroll_1_1(token, timeout, disabledFeatures, windowId);
+            } else if (windowId == null) {
+                return daemon.enroll(token, timeout, disabledFeatures);
+            } else {
+                Slog.e(TAG, "enroll(): windowId is only supported in @1.1 HAL");
+                return ERROR_ESRCH;
+            }
         }
 
         @Override
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
index 6150de1..7a4e62e 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintAuthenticator.java
@@ -38,7 +38,7 @@
             String opPackageName, int cookie, int callingUid, int callingPid, int callingUserId)
             throws RemoteException {
         mFingerprintService.prepareForAuthentication(token, sessionId, userId, wrapperReceiver,
-                opPackageName, cookie, callingUid, callingPid, callingUserId);
+                opPackageName, cookie, callingUid, callingPid, callingUserId, null /* windowId */);
     }
 
     @Override
diff --git a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
index 44797ad..0a61988 100644
--- a/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
+++ b/services/core/java/com/android/server/biometrics/fingerprint/FingerprintService.java
@@ -37,10 +37,11 @@
 import android.hardware.biometrics.BiometricAuthenticator;
 import android.hardware.biometrics.BiometricConstants;
 import android.hardware.biometrics.BiometricsProtoEnums;
+import android.hardware.biometrics.IBiometricNativeHandle;
 import android.hardware.biometrics.IBiometricServiceLockoutResetCallback;
 import android.hardware.biometrics.IBiometricServiceReceiverInternal;
 import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprint;
-import android.hardware.biometrics.fingerprint.V2_1.IBiometricsFingerprintClientCallback;
+import android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprintClientCallback;
 import android.hardware.fingerprint.Fingerprint;
 import android.hardware.fingerprint.FingerprintManager;
 import android.hardware.fingerprint.IFingerprintClientActiveCallback;
@@ -50,6 +51,7 @@
 import android.os.Build;
 import android.os.Environment;
 import android.os.IBinder;
+import android.os.NativeHandle;
 import android.os.RemoteException;
 import android.os.SELinux;
 import android.os.SystemClock;
@@ -132,9 +134,9 @@
                 DaemonWrapper daemon, long halDeviceId, IBinder token,
                 ServiceListener listener, int targetUserId, int groupId, long opId,
                 boolean restricted, String owner, int cookie,
-                boolean requireConfirmation) {
+                boolean requireConfirmation, IBiometricNativeHandle windowId) {
             super(context, daemon, halDeviceId, token, listener, targetUserId, groupId, opId,
-                    restricted, owner, cookie, requireConfirmation);
+                    restricted, owner, cookie, requireConfirmation, windowId);
         }
 
         @Override
@@ -198,7 +200,7 @@
         @Override // Binder call
         public void enroll(final IBinder token, final byte[] cryptoToken, final int userId,
                 final IFingerprintServiceReceiver receiver, final int flags,
-                final String opPackageName) {
+                final String opPackageName, IBiometricNativeHandle windowId) {
             checkPermission(MANAGE_FINGERPRINT);
 
             final boolean restricted = isRestricted();
@@ -206,7 +208,7 @@
             final EnrollClientImpl client = new EnrollClientImpl(getContext(), mDaemonWrapper,
                     mHalDeviceId, token, new ServiceListenerImpl(receiver), mCurrentUserId, groupId,
                     cryptoToken, restricted, opPackageName, new int[0] /* disabledFeatures */,
-                    ENROLL_TIMEOUT_SEC) {
+                    ENROLL_TIMEOUT_SEC, windowId) {
                 @Override
                 public boolean shouldVibrate() {
                     return true;
@@ -230,20 +232,22 @@
         @Override // Binder call
         public void authenticate(final IBinder token, final long opId, final int groupId,
                 final IFingerprintServiceReceiver receiver, final int flags,
-                final String opPackageName) {
+                final String opPackageName, IBiometricNativeHandle windowId) {
             updateActiveGroup(groupId, opPackageName);
             final boolean restricted = isRestricted();
             final AuthenticationClientImpl client = new FingerprintAuthClient(getContext(),
                     mDaemonWrapper, mHalDeviceId, token, new ServiceListenerImpl(receiver),
                     mCurrentUserId, groupId, opId, restricted, opPackageName,
-                    0 /* cookie */, false /* requireConfirmation */);
+                    0 /* cookie */, false /* requireConfirmation */,
+                    windowId);
             authenticateInternal(client, opId, opPackageName);
         }
 
         @Override // Binder call
         public void prepareForAuthentication(IBinder token, long opId, int groupId,
                 IBiometricServiceReceiverInternal wrapperReceiver, String opPackageName,
-                int cookie, int callingUid, int callingPid, int callingUserId) {
+                int cookie, int callingUid, int callingPid, int callingUserId,
+                IBiometricNativeHandle windowId) {
             checkPermission(MANAGE_BIOMETRIC);
             updateActiveGroup(groupId, opPackageName);
             final boolean restricted = true; // BiometricPrompt is always restricted
@@ -251,7 +255,8 @@
                     mDaemonWrapper, mHalDeviceId, token,
                     new BiometricPromptServiceListenerImpl(wrapperReceiver),
                     mCurrentUserId, groupId, opId, restricted, opPackageName, cookie,
-                    false /* requireConfirmation */);
+                    false /* requireConfirmation */,
+                    windowId);
             authenticateInternal(client, opId, opPackageName, callingUid, callingPid,
                     callingUserId);
         }
@@ -596,6 +601,11 @@
 
         @Override
         public void onAcquired(final long deviceId, final int acquiredInfo, final int vendorCode) {
+            onAcquired_2_2(deviceId, acquiredInfo, vendorCode);
+        }
+
+        @Override
+        public void onAcquired_2_2(long deviceId, int acquiredInfo, int vendorCode) {
             mHandler.post(() -> {
                 FingerprintService.super.handleAcquired(deviceId, acquiredInfo, vendorCode);
             });
@@ -654,13 +664,24 @@
      */
     private final DaemonWrapper mDaemonWrapper = new DaemonWrapper() {
         @Override
-        public int authenticate(long operationId, int groupId) throws RemoteException {
+        public int authenticate(long operationId, int groupId, NativeHandle windowId)
+                throws RemoteException {
             IBiometricsFingerprint daemon = getFingerprintDaemon();
             if (daemon == null) {
                 Slog.w(TAG, "authenticate(): no fingerprint HAL!");
                 return ERROR_ESRCH;
             }
-            return daemon.authenticate(operationId, groupId);
+            android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprint daemon22 =
+                    android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprint.castFrom(
+                            daemon);
+            if (daemon22 != null) {
+                return daemon22.authenticate_2_2(operationId, groupId, windowId);
+            } else if (windowId == null) {
+                return daemon.authenticate(operationId, groupId);
+            } else {
+                Slog.e(TAG, "authenticate(): windowId is only supported in @2.2 HAL");
+                return ERROR_ESRCH;
+            }
         }
 
         @Override
@@ -695,13 +716,27 @@
 
         @Override
         public int enroll(byte[] cryptoToken, int groupId, int timeout,
-                ArrayList<Integer> disabledFeatures) throws RemoteException {
+                ArrayList<Integer> disabledFeatures, NativeHandle windowId) throws RemoteException {
             IBiometricsFingerprint daemon = getFingerprintDaemon();
             if (daemon == null) {
                 Slog.w(TAG, "enroll(): no fingerprint HAL!");
                 return ERROR_ESRCH;
             }
-            return daemon.enroll(cryptoToken, groupId, timeout);
+            android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprint daemon22 =
+                    android.hardware.biometrics.fingerprint.V2_2.IBiometricsFingerprint.castFrom(
+                            daemon);
+            if (daemon22 != null) {
+                ArrayList<Byte> cryptoTokenAsList = new ArrayList<>(cryptoToken.length);
+                for (byte b : cryptoToken) {
+                    cryptoTokenAsList.add(b);
+                }
+                return daemon22.enroll_2_2(cryptoTokenAsList, groupId, timeout, windowId);
+            } else if (windowId == null) {
+                return daemon.enroll(cryptoToken, groupId, timeout);
+            } else {
+                Slog.e(TAG, "enroll(): windowId is only supported in @2.2 HAL");
+                return ERROR_ESRCH;
+            }
         }
 
         @Override
diff --git a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
index 1a1845a..cbfa87f 100644
--- a/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
+++ b/services/core/java/com/android/server/broadcastradio/hal2/Convert.java
@@ -274,8 +274,18 @@
         return hwSel;
     }
 
-    static @NonNull ProgramSelector programSelectorFromHal(
+    private static boolean isEmpty(
             @NonNull android.hardware.broadcastradio.V2_0.ProgramSelector sel) {
+        if (sel.primaryId.type != 0) return false;
+        if (sel.primaryId.value != 0) return false;
+        if (sel.secondaryIds.size() != 0) return false;
+        return true;
+    }
+
+    static @Nullable ProgramSelector programSelectorFromHal(
+            @NonNull android.hardware.broadcastradio.V2_0.ProgramSelector sel) {
+        if (isEmpty(sel)) return null;
+
         ProgramSelector.Identifier[] secondaryIds = sel.secondaryIds.stream().
                 map(Convert::programIdentifierFromHal).map(Objects::requireNonNull).
                 toArray(ProgramSelector.Identifier[]::new);
@@ -363,7 +373,7 @@
                 collect(Collectors.toList());
 
         return new RadioManager.ProgramInfo(
-                programSelectorFromHal(info.selector),
+                Objects.requireNonNull(programSelectorFromHal(info.selector)),
                 programIdentifierFromHal(info.logicallyTunedTo),
                 programIdentifierFromHal(info.physicallyTunedTo),
                 relatedContent,
@@ -401,7 +411,7 @@
     public static @NonNull android.hardware.radio.Announcement announcementFromHal(
             @NonNull Announcement hwAnnouncement) {
         return new android.hardware.radio.Announcement(
-            programSelectorFromHal(hwAnnouncement.selector),
+            Objects.requireNonNull(programSelectorFromHal(hwAnnouncement.selector)),
             hwAnnouncement.type,
             vendorInfoFromHal(hwAnnouncement.vendorInfo)
         );
diff --git a/services/core/java/com/android/server/camera/CameraServiceProxy.java b/services/core/java/com/android/server/camera/CameraServiceProxy.java
index 96af74a..61c99b8 100644
--- a/services/core/java/com/android/server/camera/CameraServiceProxy.java
+++ b/services/core/java/com/android/server/camera/CameraServiceProxy.java
@@ -36,23 +36,22 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.ServiceThread;
 import com.android.server.SystemService;
 import com.android.server.wm.WindowManagerInternal;
 
-import java.util.concurrent.Executors;
-import java.util.concurrent.ScheduledThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.List;
 import java.util.Set;
+import java.util.concurrent.ScheduledThreadPoolExecutor;
+import java.util.concurrent.TimeUnit;
 
 /**
  * CameraServiceProxy is the system_server analog to the camera service running in cameraserver.
@@ -315,22 +314,22 @@
          * Package-private
          */
         private void logCameraUsageEvent(CameraUsageEvent e) {
-            int facing = StatsLog.CAMERA_ACTION_EVENT__FACING__UNKNOWN;
+            int facing = FrameworkStatsLog.CAMERA_ACTION_EVENT__FACING__UNKNOWN;
             switch(e.mCameraFacing) {
                 case ICameraServiceProxy.CAMERA_FACING_BACK:
-                    facing = StatsLog.CAMERA_ACTION_EVENT__FACING__BACK;
+                    facing = FrameworkStatsLog.CAMERA_ACTION_EVENT__FACING__BACK;
                     break;
                 case ICameraServiceProxy.CAMERA_FACING_FRONT:
-                    facing = StatsLog.CAMERA_ACTION_EVENT__FACING__FRONT;
+                    facing = FrameworkStatsLog.CAMERA_ACTION_EVENT__FACING__FRONT;
                     break;
                 case ICameraServiceProxy.CAMERA_FACING_EXTERNAL:
-                    facing = StatsLog.CAMERA_ACTION_EVENT__FACING__EXTERNAL;
+                    facing = FrameworkStatsLog.CAMERA_ACTION_EVENT__FACING__EXTERNAL;
                     break;
                 default:
                     Slog.w(TAG, "Unknown camera facing: " + e.mCameraFacing);
             }
-            StatsLog.write(StatsLog.CAMERA_ACTION_EVENT, e.getDuration(), e.mAPILevel,
-                    e.mClientName, facing);
+            FrameworkStatsLog.write(FrameworkStatsLog.CAMERA_ACTION_EVENT, e.getDuration(),
+                    e.mAPILevel, e.mClientName, facing);
         }
     }
 
diff --git a/services/core/java/com/android/server/compat/CompatChange.java b/services/core/java/com/android/server/compat/CompatChange.java
index 2eec419..8687f35 100644
--- a/services/core/java/com/android/server/compat/CompatChange.java
+++ b/services/core/java/com/android/server/compat/CompatChange.java
@@ -17,6 +17,7 @@
 package com.android.server.compat;
 
 import android.annotation.Nullable;
+import android.compat.annotation.ChangeId;
 import android.compat.annotation.EnabledAfter;
 import android.content.pm.ApplicationInfo;
 
@@ -39,6 +40,13 @@
 public final class CompatChange extends CompatibilityChangeInfo {
 
     /**
+     * A change ID to be used only in the CTS test for this SystemApi
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = 1234) // Needs to be > test APK targetSdkVersion.
+    private static final long CTS_SYSTEM_API_CHANGEID = 149391281; // This is a bug id.
+
+    /**
      * Callback listener for when compat changes are updated for a package.
      * See {@link #registerListener(ChangeListener)} for more details.
      */
diff --git a/services/core/java/com/android/server/compat/CompatConfig.java b/services/core/java/com/android/server/compat/CompatConfig.java
index 8d26176..7f7c9c4 100644
--- a/services/core/java/com/android/server/compat/CompatConfig.java
+++ b/services/core/java/com/android/server/compat/CompatConfig.java
@@ -35,6 +35,7 @@
 import com.android.internal.compat.OverrideAllowedState;
 import com.android.server.compat.config.Change;
 import com.android.server.compat.config.XmlParser;
+import com.android.server.pm.ApexManager;
 
 import org.xmlpull.v1.XmlPullParserException;
 
@@ -45,6 +46,7 @@
 import java.io.InputStream;
 import java.io.PrintWriter;
 import java.util.HashSet;
+import java.util.List;
 import java.util.Set;
 
 import javax.xml.datatype.DatatypeConfigurationException;
@@ -369,12 +371,18 @@
                 Environment.getRootDirectory(), "etc", "compatconfig"));
         config.initConfigFromLib(Environment.buildPath(
                 Environment.getRootDirectory(), "system_ext", "etc", "compatconfig"));
+
+        List<ApexManager.ActiveApexInfo> apexes = ApexManager.getInstance().getActiveApexInfos();
+        for (ApexManager.ActiveApexInfo apex : apexes) {
+            config.initConfigFromLib(Environment.buildPath(
+                    apex.apexDirectory, "etc", "compatconfig"));
+        }
         return config;
     }
 
     void initConfigFromLib(File libraryDir) {
         if (!libraryDir.exists() || !libraryDir.isDirectory()) {
-            Slog.e(TAG, "No directory " + libraryDir + ", skipping");
+            Slog.d(TAG, "No directory " + libraryDir + ", skipping");
             return;
         }
         for (File f : libraryDir.listFiles()) {
diff --git a/services/core/java/com/android/server/compat/PlatformCompat.java b/services/core/java/com/android/server/compat/PlatformCompat.java
index 4d5af9a..af47430 100644
--- a/services/core/java/com/android/server/compat/PlatformCompat.java
+++ b/services/core/java/com/android/server/compat/PlatformCompat.java
@@ -21,6 +21,7 @@
 import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 
+import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.IActivityManager;
 import android.content.Context;
@@ -30,7 +31,6 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.compat.AndroidBuildClassifier;
@@ -59,7 +59,7 @@
     public PlatformCompat(Context context) {
         mContext = context;
         mChangeReporter = new ChangeReporter(
-                StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__SYSTEM_SERVER);
+                ChangeReporter.SOURCE_SYSTEM_SERVER);
         mCompatConfig = CompatConfig.create(new AndroidBuildClassifier(), mContext);
     }
 
@@ -67,7 +67,7 @@
     PlatformCompat(Context context, CompatConfig compatConfig) {
         mContext = context;
         mChangeReporter = new ChangeReporter(
-                StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__SOURCE__SYSTEM_SERVER);
+                ChangeReporter.SOURCE_SYSTEM_SERVER);
         mCompatConfig = compatConfig;
     }
 
@@ -75,7 +75,7 @@
     public void reportChange(long changeId, ApplicationInfo appInfo) {
         checkCompatChangeLogPermission();
         reportChange(changeId, appInfo.uid,
-                StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__LOGGED);
+                ChangeReporter.STATE_LOGGED);
     }
 
     @Override
@@ -91,25 +91,26 @@
     @Override
     public void reportChangeByUid(long changeId, int uid) {
         checkCompatChangeLogPermission();
-        reportChange(changeId, uid, StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__LOGGED);
+        reportChange(changeId, uid, ChangeReporter.STATE_LOGGED);
     }
 
     @Override
     public boolean isChangeEnabled(long changeId, ApplicationInfo appInfo) {
-        checkCompatChangeReadPermission();
+        checkCompatChangeReadAndLogPermission();
         if (mCompatConfig.isChangeEnabled(changeId, appInfo)) {
             reportChange(changeId, appInfo.uid,
-                    StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__ENABLED);
+                    ChangeReporter.STATE_ENABLED);
             return true;
         }
         reportChange(changeId, appInfo.uid,
-                StatsLog.APP_COMPATIBILITY_CHANGE_REPORTED__STATE__DISABLED);
+                ChangeReporter.STATE_DISABLED);
         return false;
     }
 
     @Override
-    public boolean isChangeEnabledByPackageName(long changeId, String packageName, int userId) {
-        checkCompatChangeReadPermission();
+    public boolean isChangeEnabledByPackageName(long changeId, String packageName,
+            @UserIdInt int userId) {
+        checkCompatChangeReadAndLogPermission();
         ApplicationInfo appInfo = getApplicationInfo(packageName, userId);
         if (appInfo == null) {
             return true;
@@ -119,7 +120,7 @@
 
     @Override
     public boolean isChangeEnabledByUid(long changeId, int uid) {
-        checkCompatChangeReadPermission();
+        checkCompatChangeReadAndLogPermission();
         String[] packages = mContext.getPackageManager().getPackagesForUid(uid);
         if (packages == null || packages.length == 0) {
             return true;
@@ -189,7 +190,7 @@
 
     @Override
     public CompatibilityChangeConfig getAppConfig(ApplicationInfo appInfo) {
-        checkCompatChangeReadPermission();
+        checkCompatChangeReadAndLogPermission();
         return mCompatConfig.getAppConfig(appInfo);
     }
 
@@ -234,7 +235,7 @@
 
     @Override
     protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        checkCompatChangeReadPermission();
+        checkCompatChangeReadAndLogPermission();
         if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, "platform_compat", pw)) return;
         mCompatConfig.dumpConfig(pw);
     }
@@ -313,4 +314,9 @@
             throw new SecurityException("Cannot override compat change");
         }
     }
+
+    private void checkCompatChangeReadAndLogPermission() throws SecurityException {
+        checkCompatChangeReadPermission();
+        checkCompatChangeLogPermission();
+    }
 }
diff --git a/services/core/java/com/android/server/compat/PlatformCompatNative.java b/services/core/java/com/android/server/compat/PlatformCompatNative.java
index 85dfbf4..5d7af65 100644
--- a/services/core/java/com/android/server/compat/PlatformCompatNative.java
+++ b/services/core/java/com/android/server/compat/PlatformCompatNative.java
@@ -16,6 +16,8 @@
 
 package com.android.server.compat;
 
+import android.annotation.UserIdInt;
+
 import com.android.internal.compat.IPlatformCompatNative;
 
 /**
@@ -39,7 +41,8 @@
     }
 
     @Override
-    public boolean isChangeEnabledByPackageName(long changeId, String packageName, int userId) {
+    public boolean isChangeEnabledByPackageName(long changeId, String packageName,
+            @UserIdInt int userId) {
         return mPlatformCompat.isChangeEnabledByPackageName(changeId, packageName, userId);
     }
 
diff --git a/services/core/java/com/android/server/compat/TEST_MAPPING b/services/core/java/com/android/server/compat/TEST_MAPPING
new file mode 100644
index 0000000..0c30c79
--- /dev/null
+++ b/services/core/java/com/android/server/compat/TEST_MAPPING
@@ -0,0 +1,21 @@
+{
+    "presubmit": [
+        // Unit tests
+        {
+            "name": "FrameworksServicesTests",
+            "options": [
+                {
+                    "include-filter": "com.android.server.compat"
+                }
+            ]
+        },
+        // Tests for the TestRule
+        {
+            "name": "PlatformCompatGating"
+        },
+        // CTS tests
+        {
+            "name": "CtsAppCompatHostTestCases#"
+        }
+    ]
+}
\ No newline at end of file
diff --git a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
index af8a366..5059a48 100644
--- a/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
+++ b/services/core/java/com/android/server/connectivity/KeepaliveTracker.java
@@ -325,7 +325,7 @@
             mSlot = slot;
             int error = isValid();
             if (error == SUCCESS) {
-                Log.d(TAG, "Starting keepalive " + mSlot + " on " + mNai.name());
+                Log.d(TAG, "Starting keepalive " + mSlot + " on " + mNai.toShortString());
                 switch (mType) {
                     case TYPE_NATT:
                         mNai.asyncChannel.sendMessage(
@@ -365,7 +365,8 @@
                     Log.e(TAG, "Cannot stop unowned keepalive " + mSlot + " on " + mNai.network);
                 }
             }
-            Log.d(TAG, "Stopping keepalive " + mSlot + " on " + mNai.name() + ": " + reason);
+            Log.d(TAG, "Stopping keepalive " + mSlot + " on " + mNai.toShortString()
+                    + ": " + reason);
             switch (mStartedState) {
                 case NOT_STARTED:
                     // Remove the reference of the keepalive that meet error before starting,
@@ -476,7 +477,7 @@
     }
 
     public void handleStopKeepalive(NetworkAgentInfo nai, int slot, int reason) {
-        String networkName = (nai == null) ? "(null)" : nai.name();
+        final String networkName = NetworkAgentInfo.toShortString(nai);
         HashMap <Integer, KeepaliveInfo> networkKeepalives = mKeepalives.get(nai);
         if (networkKeepalives == null) {
             Log.e(TAG, "Attempt to stop keepalive on nonexistent network " + networkName);
@@ -493,7 +494,7 @@
     }
 
     private void cleanupStoppedKeepalive(NetworkAgentInfo nai, int slot) {
-        String networkName = (nai == null) ? "(null)" : nai.name();
+        final String networkName = NetworkAgentInfo.toShortString(nai);
         HashMap<Integer, KeepaliveInfo> networkKeepalives = mKeepalives.get(nai);
         if (networkKeepalives == null) {
             Log.e(TAG, "Attempt to remove keepalive on nonexistent network " + networkName);
@@ -540,7 +541,7 @@
         } catch(NullPointerException e) {}
         if (ki == null) {
             Log.e(TAG, "Event " + message.what + "," + slot + "," + reason
-                    + " for unknown keepalive " + slot + " on " + nai.name());
+                    + " for unknown keepalive " + slot + " on " + nai.toShortString());
             return;
         }
 
@@ -562,7 +563,7 @@
         if (KeepaliveInfo.STARTING == ki.mStartedState) {
             if (SUCCESS == reason) {
                 // Keepalive successfully started.
-                Log.d(TAG, "Started keepalive " + slot + " on " + nai.name());
+                Log.d(TAG, "Started keepalive " + slot + " on " + nai.toShortString());
                 ki.mStartedState = KeepaliveInfo.STARTED;
                 try {
                     ki.mCallback.onStarted(slot);
@@ -570,14 +571,14 @@
                     Log.w(TAG, "Discarded onStarted(" + slot + ") callback");
                 }
             } else {
-                Log.d(TAG, "Failed to start keepalive " + slot + " on " + nai.name()
+                Log.d(TAG, "Failed to start keepalive " + slot + " on " + nai.toShortString()
                         + ": " + reason);
                 // The message indicated some error trying to start: do call handleStopKeepalive.
                 handleStopKeepalive(nai, slot, reason);
             }
         } else if (KeepaliveInfo.STOPPING == ki.mStartedState) {
             // The message indicated result of stopping : clean up keepalive slots.
-            Log.d(TAG, "Stopped keepalive " + slot + " on " + nai.name()
+            Log.d(TAG, "Stopped keepalive " + slot + " on " + nai.toShortString()
                     + " stopped: " + reason);
             ki.mStartedState = KeepaliveInfo.NOT_STARTED;
             cleanupStoppedKeepalive(nai, slot);
@@ -733,7 +734,7 @@
         pw.println("Socket keepalives:");
         pw.increaseIndent();
         for (NetworkAgentInfo nai : mKeepalives.keySet()) {
-            pw.println(nai.name());
+            pw.println(nai.toShortString());
             pw.increaseIndent();
             for (int slot : mKeepalives.get(nai).keySet()) {
                 KeepaliveInfo ki = mKeepalives.get(nai).get(slot);
diff --git a/services/core/java/com/android/server/connectivity/LingerMonitor.java b/services/core/java/com/android/server/connectivity/LingerMonitor.java
index 929dfc4..04c000f 100644
--- a/services/core/java/com/android/server/connectivity/LingerMonitor.java
+++ b/services/core/java/com/android/server/connectivity/LingerMonitor.java
@@ -16,6 +16,10 @@
 
 package com.android.server.connectivity;
 
+import static android.net.ConnectivityManager.NETID_UNSET;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.PendingIntent;
 import android.content.ComponentName;
 import android.content.Context;
@@ -27,18 +31,16 @@
 import android.text.format.DateUtils;
 import android.util.Log;
 import android.util.SparseArray;
-import android.util.SparseIntArray;
 import android.util.SparseBooleanArray;
-import java.util.Arrays;
-import java.util.HashMap;
+import android.util.SparseIntArray;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.MessageUtils;
-import com.android.server.connectivity.NetworkNotificationManager;
 import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
 
-import static android.net.ConnectivityManager.NETID_UNSET;
+import java.util.Arrays;
+import java.util.HashMap;
 
 /**
  * Class that monitors default network linger events and possibly notifies the user of network
@@ -198,21 +200,33 @@
         }
 
         if (DBG) {
-            Log.d(TAG, "Notifying switch from=" + fromNai.name() + " to=" + toNai.name() +
-                    " type=" + sNotifyTypeNames.get(notifyType, "unknown(" + notifyType + ")"));
+            Log.d(TAG, "Notifying switch from=" + fromNai.toShortString()
+                    + " to=" + toNai.toShortString()
+                    + " type=" + sNotifyTypeNames.get(notifyType, "unknown(" + notifyType + ")"));
         }
 
         mNotifications.put(fromNai.network.netId, toNai.network.netId);
         mEverNotified.put(fromNai.network.netId, true);
     }
 
+    /**
+     * Put up or dismiss a notification or toast for of a change in the default network if needed.
+     *
+     * Putting up a notification when switching from no network to some network is not supported
+     * and as such this method can't be called with a null |fromNai|. It can be called with a
+     * null |toNai| if there isn't a default network any more.
+     *
+     * @param fromNai switching from this NAI
+     * @param toNai switching to this NAI
+     */
     // The default network changed from fromNai to toNai due to a change in score.
-    public void noteLingerDefaultNetwork(NetworkAgentInfo fromNai, NetworkAgentInfo toNai) {
+    public void noteLingerDefaultNetwork(@NonNull final NetworkAgentInfo fromNai,
+            @Nullable final NetworkAgentInfo toNai) {
         if (VDBG) {
-            Log.d(TAG, "noteLingerDefaultNetwork from=" + fromNai.name() +
-                    " everValidated=" + fromNai.everValidated +
-                    " lastValidated=" + fromNai.lastValidated +
-                    " to=" + toNai.name());
+            Log.d(TAG, "noteLingerDefaultNetwork from=" + fromNai.toShortString()
+                    + " everValidated=" + fromNai.everValidated
+                    + " lastValidated=" + fromNai.lastValidated
+                    + " to=" + toNai.toShortString());
         }
 
         // If we are currently notifying the user because the device switched to fromNai, now that
@@ -221,6 +235,10 @@
         // Internet access).
         maybeStopNotifying(fromNai);
 
+        // If the network was simply lost (either because it disconnected or because it stopped
+        // being the default with no replacement), then don't show a notification.
+        if (null == toNai) return;
+
         // If this network never validated, don't notify. Otherwise, we could do things like:
         //
         // 1. Unvalidated wifi connects.
@@ -253,7 +271,8 @@
         // TODO: should we do this?
         if (everNotified(fromNai)) {
             if (VDBG) {
-                Log.d(TAG, "Not notifying handover from " + fromNai.name() + ", already notified");
+                Log.d(TAG, "Not notifying handover from " + fromNai.toShortString()
+                        + ", already notified");
             }
             return;
         }
diff --git a/services/core/java/com/android/server/connectivity/Nat464Xlat.java b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
index f636d67..82465f8 100644
--- a/services/core/java/com/android/server/connectivity/Nat464Xlat.java
+++ b/services/core/java/com/android/server/connectivity/Nat464Xlat.java
@@ -174,7 +174,7 @@
         try {
             mNMService.registerObserver(this);
         } catch (RemoteException e) {
-            Slog.e(TAG, "Can't register interface observer for clat on " + mNetwork.name());
+            Slog.e(TAG, "Can't register iface observer for clat on " + mNetwork.toShortString());
             return;
         }
 
diff --git a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
index 17e2f69..f3d2012 100644
--- a/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
+++ b/services/core/java/com/android/server/connectivity/NetdEventListenerService.java
@@ -35,11 +35,11 @@
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.SparseArray;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.BitUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.RingBuffer;
 import com.android.internal.util.TokenBucket;
 import com.android.server.connectivity.metrics.nano.IpConnectivityLogClass.IpConnectivityEvent;
@@ -278,7 +278,7 @@
         addWakeupEvent(event);
 
         String dstMac = event.dstHwAddr.toString();
-        StatsLog.write(StatsLog.PACKET_WAKEUP_OCCURRED,
+        FrameworkStatsLog.write(FrameworkStatsLog.PACKET_WAKEUP_OCCURRED,
                 uid, iface, ethertype, dstMac, srcIp, dstIp, ipNextHeader, srcPort, dstPort);
     }
 
diff --git a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
index d66aec5..592be2f 100644
--- a/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
+++ b/services/core/java/com/android/server/connectivity/NetworkAgentInfo.java
@@ -16,7 +16,10 @@
 
 package com.android.server.connectivity;
 
+import static android.net.NetworkCapabilities.transportNamesOf;
+
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.content.Context;
 import android.net.IDnsResolver;
 import android.net.INetd;
@@ -372,7 +375,7 @@
             // Should only happen if the requestId wraps. If that happens lots of other things will
             // be broken as well.
             Log.wtf(TAG, String.format("Duplicate requestId for %s and %s on %s",
-                    networkRequest, existing, name()));
+                    networkRequest, existing, toShortString()));
             updateRequestCounts(REMOVE, existing);
         }
         mNetworkRequests.put(networkRequest.requestId, networkRequest);
@@ -483,7 +486,7 @@
             return ConnectivityConstants.EXPLICITLY_SELECTED_NETWORK_SCORE;
         }
 
-        int score = mNetworkScore.getIntExtension(NetworkScore.LEGACY_SCORE);
+        int score = mNetworkScore.getLegacyScore();
         if (!lastValidated && !pretendValidated && !ignoreWifiUnvalidationPenalty() && !isVPN()) {
             score -= ConnectivityConstants.UNVALIDATED_SCORE_PENALTY;
         }
@@ -542,11 +545,11 @@
             // Cannot happen. Once a request is lingering on a particular network, we cannot
             // re-linger it unless that network becomes the best for that request again, in which
             // case we should have unlingered it.
-            Log.wtf(TAG, this.name() + ": request " + request.requestId + " already lingered");
+            Log.wtf(TAG, toShortString() + ": request " + request.requestId + " already lingered");
         }
         final long expiryMs = now + duration;
         LingerTimer timer = new LingerTimer(request, expiryMs);
-        if (VDBG) Log.d(TAG, "Adding LingerTimer " + timer + " to " + this.name());
+        if (VDBG) Log.d(TAG, "Adding LingerTimer " + timer + " to " + toShortString());
         mLingerTimers.add(timer);
         mLingerTimerForRequest.put(request.requestId, timer);
     }
@@ -558,7 +561,7 @@
     public boolean unlingerRequest(NetworkRequest request) {
         LingerTimer timer = mLingerTimerForRequest.get(request.requestId);
         if (timer != null) {
-            if (VDBG) Log.d(TAG, "Removing LingerTimer " + timer + " from " + this.name());
+            if (VDBG) Log.d(TAG, "Removing LingerTimer " + timer + " from " + toShortString());
             mLingerTimers.remove(timer);
             mLingerTimerForRequest.remove(request.requestId);
             return true;
@@ -645,9 +648,16 @@
                 + "}";
     }
 
-    public String name() {
-        return "NetworkAgentInfo [" + networkInfo.getTypeName() + " (" +
-                networkInfo.getSubtypeName() + ") - " + Objects.toString(network) + "]";
+    /**
+     * Show a short string representing a Network.
+     *
+     * This is often not enough for debugging purposes for anything complex, but the full form
+     * is very long and hard to read, so this is useful when there isn't a lot of ambiguity.
+     * This represents the network with something like "[100 WIFI|VPN]" or "[108 MOBILE]".
+     */
+    public String toShortString() {
+        return "[" + network.netId + " "
+                + transportNamesOf(networkCapabilities.getTransportTypes()) + "]";
     }
 
     // Enables sorting in descending order of score.
@@ -655,4 +665,12 @@
     public int compareTo(NetworkAgentInfo other) {
         return other.getCurrentScore() - getCurrentScore();
     }
+
+    /**
+     * Null-guarding version of NetworkAgentInfo#toShortString()
+     */
+    @NonNull
+    public static String toShortString(@Nullable final NetworkAgentInfo nai) {
+        return null != nai ? nai.toShortString() : "[null]";
+    }
 }
diff --git a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
index 2c41557..25c761a 100644
--- a/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
+++ b/services/core/java/com/android/server/connectivity/NetworkNotificationManager.java
@@ -188,14 +188,14 @@
         int icon = getIcon(transportType, notifyType);
         if (notifyType == NotificationType.NO_INTERNET && transportType == TRANSPORT_WIFI) {
             title = r.getString(R.string.wifi_no_internet,
-                    WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID()));
+                    WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID()));
             details = r.getString(R.string.wifi_no_internet_detailed);
         } else if (notifyType == NotificationType.PRIVATE_DNS_BROKEN) {
             if (transportType == TRANSPORT_CELLULAR) {
                 title = r.getString(R.string.mobile_no_internet);
             } else if (transportType == TRANSPORT_WIFI) {
                 title = r.getString(R.string.wifi_no_internet,
-                        WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID()));
+                        WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID()));
             } else {
                 title = r.getString(R.string.other_networks_no_internet);
             }
@@ -203,19 +203,19 @@
         } else if (notifyType == NotificationType.PARTIAL_CONNECTIVITY
                 && transportType == TRANSPORT_WIFI) {
             title = r.getString(R.string.network_partial_connectivity,
-                    WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID()));
+                    WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID()));
             details = r.getString(R.string.network_partial_connectivity_detailed);
         } else if (notifyType == NotificationType.LOST_INTERNET &&
                 transportType == TRANSPORT_WIFI) {
             title = r.getString(R.string.wifi_no_internet,
-                    WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID()));
+                    WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID()));
             details = r.getString(R.string.wifi_no_internet_detailed);
         } else if (notifyType == NotificationType.SIGN_IN) {
             switch (transportType) {
                 case TRANSPORT_WIFI:
                     title = r.getString(R.string.wifi_available_sign_in, 0);
                     details = r.getString(R.string.network_available_sign_in_detailed,
-                            WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID()));
+                            WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID()));
                     break;
                 case TRANSPORT_CELLULAR:
                     title = r.getString(R.string.network_available_sign_in, 0);
@@ -236,7 +236,7 @@
                     break;
             }
         } else if (notifyType == NotificationType.LOGGED_IN) {
-            title = WifiInfo.removeDoubleQuotes(nai.networkCapabilities.getSSID());
+            title = WifiInfo.sanitizeSsid(nai.networkCapabilities.getSSID());
             details = r.getString(R.string.captive_portal_logged_in_detailed);
         } else if (notifyType == NotificationType.NETWORK_SWITCH) {
             String fromTransport = getTransportName(transportType);
diff --git a/services/core/java/com/android/server/connectivity/NetworkRanker.java b/services/core/java/com/android/server/connectivity/NetworkRanker.java
new file mode 100644
index 0000000..d0aabf95
--- /dev/null
+++ b/services/core/java/com/android/server/connectivity/NetworkRanker.java
@@ -0,0 +1,50 @@
+/*
+ * 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.server.connectivity;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.net.NetworkRequest;
+
+import java.util.Collection;
+
+/**
+ * A class that knows how to find the best network matching a request out of a list of networks.
+ */
+public class NetworkRanker {
+    public NetworkRanker() { }
+
+    /**
+     * Find the best network satisfying this request among the list of passed networks.
+     */
+    // Almost equivalent to Collections.max(nais), but allows returning null if no network
+    // satisfies the request.
+    @Nullable
+    public NetworkAgentInfo getBestNetwork(@NonNull final NetworkRequest request,
+            @NonNull final Collection<NetworkAgentInfo> nais) {
+        NetworkAgentInfo bestNetwork = null;
+        int bestScore = Integer.MIN_VALUE;
+        for (final NetworkAgentInfo nai : nais) {
+            if (!nai.satisfies(request)) continue;
+            if (nai.getCurrentScore() > bestScore) {
+                bestNetwork = nai;
+                bestScore = nai.getCurrentScore();
+            }
+        }
+        return bestNetwork;
+    }
+}
diff --git a/services/core/java/com/android/server/connectivity/Vpn.java b/services/core/java/com/android/server/connectivity/Vpn.java
index 423e021..1a68f1b 100644
--- a/services/core/java/com/android/server/connectivity/Vpn.java
+++ b/services/core/java/com/android/server/connectivity/Vpn.java
@@ -24,6 +24,8 @@
 import static android.net.RouteInfo.RTN_THROW;
 import static android.net.RouteInfo.RTN_UNREACHABLE;
 
+import static com.android.internal.util.Preconditions.checkNotNull;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -46,7 +48,12 @@
 import android.content.pm.UserInfo;
 import android.net.ConnectivityManager;
 import android.net.INetworkManagementEventObserver;
+import android.net.Ikev2VpnProfile;
 import android.net.IpPrefix;
+import android.net.IpSecManager;
+import android.net.IpSecManager.IpSecTunnelInterface;
+import android.net.IpSecManager.UdpEncapsulationSocket;
+import android.net.IpSecTransform;
 import android.net.LinkAddress;
 import android.net.LinkProperties;
 import android.net.LocalSocket;
@@ -60,7 +67,14 @@
 import android.net.NetworkProvider;
 import android.net.RouteInfo;
 import android.net.UidRange;
+import android.net.VpnManager;
 import android.net.VpnService;
+import android.net.ipsec.ike.ChildSessionCallback;
+import android.net.ipsec.ike.ChildSessionConfiguration;
+import android.net.ipsec.ike.ChildSessionParams;
+import android.net.ipsec.ike.IkeSession;
+import android.net.ipsec.ike.IkeSessionCallback;
+import android.net.ipsec.ike.IkeSessionParams;
 import android.os.Binder;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
@@ -109,6 +123,7 @@
 import java.net.Inet6Address;
 import java.net.InetAddress;
 import java.nio.charset.StandardCharsets;
+import java.security.GeneralSecurityException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
@@ -118,6 +133,9 @@
 import java.util.Set;
 import java.util.SortedSet;
 import java.util.TreeSet;
+import java.util.concurrent.Executor;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -157,17 +175,30 @@
     // is actually O(n²)+O(n²).
     private static final int MAX_ROUTES_TO_EVALUATE = 150;
 
+    /**
+     * Largest profile size allowable for Platform VPNs.
+     *
+     * <p>The largest platform VPN profiles use IKEv2 RSA Certificate Authentication and have two
+     * X509Certificates, and one RSAPrivateKey. This should lead to a max size of 2x 12kB for the
+     * certificates, plus a reasonable upper bound on the private key of 32kB. The rest of the
+     * profile is expected to be negligible in size.
+     */
+    @VisibleForTesting static final int MAX_VPN_PROFILE_SIZE_BYTES = 1 << 17; // 128kB
+
     // TODO: create separate trackers for each unique VPN to support
     // automated reconnection
 
     private final Context mContext;
     private final NetworkInfo mNetworkInfo;
-    private String mPackage;
+    @VisibleForTesting protected String mPackage;
     private int mOwnerUID;
     private boolean mIsPackageTargetingAtLeastQ;
     private String mInterface;
     private Connection mConnection;
-    private LegacyVpnRunner mLegacyVpnRunner;
+
+    /** Tracks the runners for all VPN types managed by the platform (eg. LegacyVpn, PlatformVpn) */
+    @VisibleForTesting protected VpnRunner mVpnRunner;
+
     private PendingIntent mStatusIntent;
     private volatile boolean mEnableTeardown = true;
     private final INetworkManagementService mNetd;
@@ -179,6 +210,7 @@
     @VisibleForTesting
     protected final NetworkCapabilities mNetworkCapabilities;
     private final SystemServices mSystemServices;
+    private final Ikev2SessionCreator mIkev2SessionCreator;
 
     /**
      * Whether to keep the connection active after rebooting, or upgrading or reinstalling. This
@@ -221,17 +253,20 @@
 
     public Vpn(Looper looper, Context context, INetworkManagementService netService,
             @UserIdInt int userHandle) {
-        this(looper, context, netService, userHandle, new SystemServices(context));
+        this(looper, context, netService, userHandle,
+                new SystemServices(context), new Ikev2SessionCreator());
     }
 
     @VisibleForTesting
     protected Vpn(Looper looper, Context context, INetworkManagementService netService,
-            int userHandle, SystemServices systemServices) {
+            int userHandle, SystemServices systemServices,
+            Ikev2SessionCreator ikev2SessionCreator) {
         mContext = context;
         mNetd = netService;
         mUserHandle = userHandle;
         mLooper = looper;
         mSystemServices = systemServices;
+        mIkev2SessionCreator = ikev2SessionCreator;
 
         mPackage = VpnConfig.LEGACY_VPN;
         mOwnerUID = getAppUid(mPackage, mUserHandle);
@@ -507,8 +542,11 @@
         }
 
         if (packageName != null) {
-            // Pre-authorize new always-on VPN package.
-            if (!setPackageAuthorization(packageName, true)) {
+            // TODO: Give the minimum permission possible; if there is a Platform VPN profile, only
+            // grant ACTIVATE_PLATFORM_VPN.
+            // Pre-authorize new always-on VPN package. Grant the full ACTIVATE_VPN appop, allowing
+            // both VpnService and Platform VPNs.
+            if (!setPackageAuthorization(packageName, VpnManager.TYPE_VPN_SERVICE)) {
                 return false;
             }
             mAlwaysOn = true;
@@ -656,6 +694,11 @@
      * It uses {@link VpnConfig#LEGACY_VPN} as its package name, and
      * it can be revoked by itself.
      *
+     * The permission checks to verify that the VPN has already been granted
+     * user consent are dependent on the type of the VPN being prepared. See
+     * {@link AppOpsManager#OP_ACTIVATE_VPN} and {@link
+     * AppOpsManager#OP_ACTIVATE_PLATFORM_VPN} for more information.
+     *
      * Note: when we added VPN pre-consent in
      * https://android.googlesource.com/platform/frameworks/base/+/0554260
      * the names oldPackage and newPackage became misleading, because when
@@ -674,10 +717,12 @@
      *
      * @param oldPackage The package name of the old VPN application
      * @param newPackage The package name of the new VPN application
-     *
+     * @param vpnType The type of VPN being prepared. One of {@link VpnManager.VpnType} Preparing a
+     *     platform VPN profile requires only the lesser ACTIVATE_PLATFORM_VPN appop.
      * @return true if the operation succeeded.
      */
-    public synchronized boolean prepare(String oldPackage, String newPackage) {
+    public synchronized boolean prepare(
+            String oldPackage, String newPackage, @VpnManager.VpnType int vpnType) {
         if (oldPackage != null) {
             // Stop an existing always-on VPN from being dethroned by other apps.
             if (mAlwaysOn && !isCurrentPreparedPackage(oldPackage)) {
@@ -688,13 +733,14 @@
             if (!isCurrentPreparedPackage(oldPackage)) {
                 // The package doesn't match. We return false (to obtain user consent) unless the
                 // user has already consented to that VPN package.
-                if (!oldPackage.equals(VpnConfig.LEGACY_VPN) && isVpnUserPreConsented(oldPackage)) {
+                if (!oldPackage.equals(VpnConfig.LEGACY_VPN)
+                        && isVpnPreConsented(mContext, oldPackage, vpnType)) {
                     prepareInternal(oldPackage);
                     return true;
                 }
                 return false;
             } else if (!oldPackage.equals(VpnConfig.LEGACY_VPN)
-                    && !isVpnUserPreConsented(oldPackage)) {
+                    && !isVpnPreConsented(mContext, oldPackage, vpnType)) {
                 // Currently prepared VPN is revoked, so unprepare it and return false.
                 prepareInternal(VpnConfig.LEGACY_VPN);
                 return false;
@@ -721,8 +767,9 @@
 
     private boolean isCurrentPreparedPackage(String packageName) {
         // We can't just check that packageName matches mPackage, because if the app was uninstalled
-        // and reinstalled it will no longer be prepared. Instead check the UID.
-        return getAppUid(packageName, mUserHandle) == mOwnerUID;
+        // and reinstalled it will no longer be prepared. Similarly if there is a shared UID, the
+        // calling package may not be the same as the prepared package. Check both UID and package.
+        return getAppUid(packageName, mUserHandle) == mOwnerUID && mPackage.equals(packageName);
     }
 
     /** Prepare the VPN for the given package. Does not perform permission checks. */
@@ -738,7 +785,7 @@
                 mNetworkCapabilities.setUids(null);
             }
 
-            // Revoke the connection or stop LegacyVpnRunner.
+            // Revoke the connection or stop the VpnRunner.
             if (mConnection != null) {
                 try {
                     mConnection.mService.transact(IBinder.LAST_CALL_TRANSACTION,
@@ -748,9 +795,9 @@
                 }
                 mContext.unbindService(mConnection);
                 mConnection = null;
-            } else if (mLegacyVpnRunner != null) {
-                mLegacyVpnRunner.exit();
-                mLegacyVpnRunner = null;
+            } else if (mVpnRunner != null) {
+                mVpnRunner.exit();
+                mVpnRunner = null;
             }
 
             try {
@@ -777,25 +824,49 @@
         }
     }
 
-    /**
-     * Set whether a package has the ability to launch VPNs without user intervention.
-     */
-    public boolean setPackageAuthorization(String packageName, boolean authorized) {
+    /** Set whether a package has the ability to launch VPNs without user intervention. */
+    public boolean setPackageAuthorization(String packageName, @VpnManager.VpnType int vpnType) {
         // Check if the caller is authorized.
         enforceControlPermissionOrInternalCaller();
 
-        int uid = getAppUid(packageName, mUserHandle);
+        final int uid = getAppUid(packageName, mUserHandle);
         if (uid == -1 || VpnConfig.LEGACY_VPN.equals(packageName)) {
             // Authorization for nonexistent packages (or fake ones) can't be updated.
             return false;
         }
 
-        long token = Binder.clearCallingIdentity();
+        final long token = Binder.clearCallingIdentity();
         try {
-            AppOpsManager appOps =
+            final int[] toChange;
+
+            // Clear all AppOps if the app is being unauthorized.
+            switch (vpnType) {
+                case VpnManager.TYPE_VPN_NONE:
+                    toChange = new int[] {
+                            AppOpsManager.OP_ACTIVATE_VPN, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN
+                    };
+                    break;
+                case VpnManager.TYPE_VPN_PLATFORM:
+                    toChange = new int[] {AppOpsManager.OP_ACTIVATE_PLATFORM_VPN};
+                    break;
+                case VpnManager.TYPE_VPN_SERVICE:
+                    toChange = new int[] {AppOpsManager.OP_ACTIVATE_VPN};
+                    break;
+                default:
+                    Log.wtf(TAG, "Unrecognized VPN type while granting authorization");
+                    return false;
+            }
+
+            final AppOpsManager appOpMgr =
                     (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
-            appOps.setMode(AppOpsManager.OP_ACTIVATE_VPN, uid, packageName,
-                    authorized ? AppOpsManager.MODE_ALLOWED : AppOpsManager.MODE_IGNORED);
+            for (final int appOp : toChange) {
+                appOpMgr.setMode(
+                        appOp,
+                        uid,
+                        packageName,
+                        vpnType == VpnManager.TYPE_VPN_NONE
+                                ? AppOpsManager.MODE_IGNORED : AppOpsManager.MODE_ALLOWED);
+            }
             return true;
         } catch (Exception e) {
             Log.wtf(TAG, "Failed to set app ops for package " + packageName + ", uid " + uid, e);
@@ -805,13 +876,33 @@
         return false;
     }
 
-    private boolean isVpnUserPreConsented(String packageName) {
-        AppOpsManager appOps =
-                (AppOpsManager) mContext.getSystemService(Context.APP_OPS_SERVICE);
+    private static boolean isVpnPreConsented(Context context, String packageName, int vpnType) {
+        switch (vpnType) {
+            case VpnManager.TYPE_VPN_SERVICE:
+                return isVpnServicePreConsented(context, packageName);
+            case VpnManager.TYPE_VPN_PLATFORM:
+                return isVpnProfilePreConsented(context, packageName);
+            default:
+                return false;
+        }
+    }
 
-        // Verify that the caller matches the given package and has permission to activate VPNs.
-        return appOps.noteOpNoThrow(AppOpsManager.OP_ACTIVATE_VPN, Binder.getCallingUid(),
-                packageName) == AppOpsManager.MODE_ALLOWED;
+    private static boolean doesPackageHaveAppop(Context context, String packageName, int appop) {
+        final AppOpsManager appOps =
+                (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
+
+        // Verify that the caller matches the given package and has the required permission.
+        return appOps.noteOpNoThrow(appop, Binder.getCallingUid(), packageName)
+                == AppOpsManager.MODE_ALLOWED;
+    }
+
+    private static boolean isVpnServicePreConsented(Context context, String packageName) {
+        return doesPackageHaveAppop(context, packageName, AppOpsManager.OP_ACTIVATE_VPN);
+    }
+
+    private static boolean isVpnProfilePreConsented(Context context, String packageName) {
+        return doesPackageHaveAppop(context, packageName, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN)
+                || isVpnServicePreConsented(context, packageName);
     }
 
     private int getAppUid(String app, int userHandle) {
@@ -907,7 +998,11 @@
         }
         lp.setDomains(buffer.toString().trim());
 
-        // TODO: Stop setting the MTU in jniCreate and set it here.
+        if (mConfig.mtu > 0) {
+            lp.setMtu(mConfig.mtu);
+        }
+
+        // TODO: Stop setting the MTU in jniCreate
 
         return lp;
     }
@@ -1005,6 +1100,9 @@
      * Establish a VPN network and return the file descriptor of the VPN interface. This methods
      * returns {@code null} if the application is revoked or not prepared.
      *
+     * <p>This method supports ONLY VpnService-based VPNs. For Platform VPNs, see {@link
+     * provisionVpnProfile} and {@link startVpnProfile}
+     *
      * @param config The parameters to configure the network.
      * @return The file descriptor of the VPN interface.
      */
@@ -1015,7 +1113,7 @@
             return null;
         }
         // Check to ensure consent hasn't been revoked since we were prepared.
-        if (!isVpnUserPreConsented(mPackage)) {
+        if (!isVpnServicePreConsented(mContext, mPackage)) {
             return null;
         }
         // Check if the service is properly declared.
@@ -1439,8 +1537,8 @@
         @Override
         public void interfaceStatusChanged(String interfaze, boolean up) {
             synchronized (Vpn.this) {
-                if (!up && mLegacyVpnRunner != null) {
-                    mLegacyVpnRunner.check(interfaze);
+                if (!up && mVpnRunner != null && mVpnRunner instanceof LegacyVpnRunner) {
+                    ((LegacyVpnRunner) mVpnRunner).exitIfOuterInterfaceIs(interfaze);
                 }
             }
         }
@@ -1457,9 +1555,10 @@
                         mContext.unbindService(mConnection);
                         mConnection = null;
                         agentDisconnect();
-                    } else if (mLegacyVpnRunner != null) {
-                        mLegacyVpnRunner.exit();
-                        mLegacyVpnRunner = null;
+                    } else if (mVpnRunner != null) {
+                        // agentDisconnect must be called from mVpnRunner.exit()
+                        mVpnRunner.exit();
+                        mVpnRunner = null;
                     }
                 }
             }
@@ -1680,6 +1779,10 @@
         public int settingsSecureGetIntForUser(String key, int def, int userId) {
             return Settings.Secure.getIntForUser(mContext.getContentResolver(), key, def, userId);
         }
+
+        public boolean isCallerSystem() {
+            return Binder.getCallingUid() == Process.SYSTEM_UID;
+        }
     }
 
     private native int jniCreate(int mtu);
@@ -1838,23 +1941,40 @@
 
     private synchronized void startLegacyVpn(VpnConfig config, String[] racoon, String[] mtpd,
             VpnProfile profile) {
-        stopLegacyVpnPrivileged();
+        stopVpnRunnerPrivileged();
 
         // Prepare for the new request.
         prepareInternal(VpnConfig.LEGACY_VPN);
         updateState(DetailedState.CONNECTING, "startLegacyVpn");
 
         // Start a new LegacyVpnRunner and we are done!
-        mLegacyVpnRunner = new LegacyVpnRunner(config, racoon, mtpd, profile);
-        mLegacyVpnRunner.start();
+        mVpnRunner = new LegacyVpnRunner(config, racoon, mtpd, profile);
+        mVpnRunner.start();
     }
 
-    /** Stop legacy VPN. Permissions must be checked by callers. */
-    public synchronized void stopLegacyVpnPrivileged() {
-        if (mLegacyVpnRunner != null) {
-            mLegacyVpnRunner.exit();
-            mLegacyVpnRunner = null;
+    /**
+     * Checks if this the currently running VPN (if any) was started by the Settings app
+     *
+     * <p>This includes both Legacy VPNs and Platform VPNs.
+     */
+    private boolean isSettingsVpnLocked() {
+        return mVpnRunner != null && VpnConfig.LEGACY_VPN.equals(mPackage);
+    }
 
+    /** Stop VPN runner. Permissions must be checked by callers. */
+    public synchronized void stopVpnRunnerPrivileged() {
+        if (!isSettingsVpnLocked()) {
+            return;
+        }
+
+        final boolean isLegacyVpn = mVpnRunner instanceof LegacyVpnRunner;
+
+        mVpnRunner.exit();
+        mVpnRunner = null;
+
+        // LegacyVpn uses daemons that must be shut down before new ones are brought up.
+        // The same limitation does not apply to Platform VPNs.
+        if (isLegacyVpn) {
             synchronized (LegacyVpnRunner.TAG) {
                 // wait for old thread to completely finish before spinning up
                 // new instance, otherwise state updates can be out of order.
@@ -1876,7 +1996,7 @@
      * Callers are responsible for checking permissions if needed.
      */
     private synchronized LegacyVpnInfo getLegacyVpnInfoPrivileged() {
-        if (mLegacyVpnRunner == null) return null;
+        if (!isSettingsVpnLocked()) return null;
 
         final LegacyVpnInfo info = new LegacyVpnInfo();
         info.key = mConfig.user;
@@ -1887,14 +2007,392 @@
         return info;
     }
 
-    public VpnConfig getLegacyVpnConfig() {
-        if (mLegacyVpnRunner != null) {
+    public synchronized VpnConfig getLegacyVpnConfig() {
+        if (isSettingsVpnLocked()) {
             return mConfig;
         } else {
             return null;
         }
     }
 
+    /** This class represents the common interface for all VPN runners. */
+    private abstract class VpnRunner extends Thread {
+
+        protected VpnRunner(String name) {
+            super(name);
+        }
+
+        public abstract void run();
+
+        protected abstract void exit();
+    }
+
+    interface IkeV2VpnRunnerCallback {
+        void onDefaultNetworkChanged(@NonNull Network network);
+
+        void onChildOpened(
+                @NonNull Network network, @NonNull ChildSessionConfiguration childConfig);
+
+        void onChildTransformCreated(
+                @NonNull Network network, @NonNull IpSecTransform transform, int direction);
+
+        void onSessionLost(@NonNull Network network);
+    }
+
+    /**
+     * Internal class managing IKEv2/IPsec VPN connectivity
+     *
+     * <p>The IKEv2 VPN will listen to, and run based on the lifecycle of Android's default Network.
+     * As a new default is selected, old IKE sessions will be torn down, and a new one will be
+     * started.
+     *
+     * <p>This class uses locking minimally - the Vpn instance lock is only ever held when fields of
+     * the outer class are modified. As such, care must be taken to ensure that no calls are added
+     * that might modify the outer class' state without acquiring a lock.
+     *
+     * <p>The overall structure of the Ikev2VpnRunner is as follows:
+     *
+     * <ol>
+     *   <li>Upon startup, a NetworkRequest is registered with ConnectivityManager. This is called
+     *       any time a new default network is selected
+     *   <li>When a new default is connected, an IKE session is started on that Network. If there
+     *       were any existing IKE sessions on other Networks, they are torn down before starting
+     *       the new IKE session
+     *   <li>Upon establishment, the onChildTransformCreated() callback is called twice, one for
+     *       each direction, and finally onChildOpened() is called
+     *   <li>Upon the onChildOpened() call, the VPN is fully set up.
+     *   <li>Subsequent Network changes result in new onDefaultNetworkChanged() callbacks. See (2).
+     * </ol>
+     */
+    class IkeV2VpnRunner extends VpnRunner implements IkeV2VpnRunnerCallback {
+        @NonNull private static final String TAG = "IkeV2VpnRunner";
+
+        @NonNull private final IpSecManager mIpSecManager;
+        @NonNull private final Ikev2VpnProfile mProfile;
+        @NonNull private final ConnectivityManager.NetworkCallback mNetworkCallback;
+
+        /**
+         * Executor upon which ALL callbacks must be run.
+         *
+         * <p>This executor MUST be a single threaded executor, in order to ensure the consistency
+         * of the mutable Ikev2VpnRunner fields. The Ikev2VpnRunner is built mostly lock-free by
+         * virtue of everything being serialized on this executor.
+         */
+        @NonNull private final ExecutorService mExecutor = Executors.newSingleThreadExecutor();
+
+        /** Signal to ensure shutdown is honored even if a new Network is connected. */
+        private boolean mIsRunning = true;
+
+        @Nullable private UdpEncapsulationSocket mEncapSocket;
+        @Nullable private IpSecTunnelInterface mTunnelIface;
+        @Nullable private IkeSession mSession;
+        @Nullable private Network mActiveNetwork;
+
+        IkeV2VpnRunner(@NonNull Ikev2VpnProfile profile) {
+            super(TAG);
+            mProfile = profile;
+            mIpSecManager = (IpSecManager) mContext.getSystemService(Context.IPSEC_SERVICE);
+            mNetworkCallback = new VpnIkev2Utils.Ikev2VpnNetworkCallback(TAG, this);
+        }
+
+        @Override
+        public void run() {
+            // Explicitly use only the network that ConnectivityService thinks is the "best." In
+            // other words, only ever use the currently selected default network. This does mean
+            // that in both onLost() and onConnected(), any old sessions MUST be torn down. This
+            // does NOT include VPNs.
+            final ConnectivityManager cm = ConnectivityManager.from(mContext);
+            cm.requestNetwork(cm.getDefaultRequest(), mNetworkCallback);
+        }
+
+        private boolean isActiveNetwork(@Nullable Network network) {
+            return Objects.equals(mActiveNetwork, network) && mIsRunning;
+        }
+
+        /**
+         * Called when an IKE Child session has been opened, signalling completion of the startup.
+         *
+         * <p>This method is only ever called once per IkeSession, and MUST run on the mExecutor
+         * thread in order to ensure consistency of the Ikev2VpnRunner fields.
+         */
+        public void onChildOpened(
+                @NonNull Network network, @NonNull ChildSessionConfiguration childConfig) {
+            if (!isActiveNetwork(network)) {
+                Log.d(TAG, "onOpened called for obsolete network " + network);
+
+                // Do nothing; this signals that either: (1) a new/better Network was found,
+                // and the Ikev2VpnRunner has switched to it in onDefaultNetworkChanged, or (2) this
+                // IKE session was already shut down (exited, or an error was encountered somewhere
+                // else). In both cases, all resources and sessions are torn down via
+                // resetIkeState().
+                return;
+            }
+
+            try {
+                final String interfaceName = mTunnelIface.getInterfaceName();
+                final int maxMtu = mProfile.getMaxMtu();
+                final List<LinkAddress> internalAddresses = childConfig.getInternalAddresses();
+
+                final Collection<RouteInfo> newRoutes = VpnIkev2Utils.getRoutesFromTrafficSelectors(
+                        childConfig.getOutboundTrafficSelectors());
+                for (final LinkAddress address : internalAddresses) {
+                    mTunnelIface.addAddress(address.getAddress(), address.getPrefixLength());
+                }
+
+                final NetworkAgent networkAgent;
+                final LinkProperties lp;
+
+                synchronized (Vpn.this) {
+                    mInterface = interfaceName;
+                    mConfig.mtu = maxMtu;
+                    mConfig.interfaze = mInterface;
+
+                    mConfig.addresses.clear();
+                    mConfig.addresses.addAll(internalAddresses);
+
+                    mConfig.routes.clear();
+                    mConfig.routes.addAll(newRoutes);
+
+                    // TODO: Add DNS servers from negotiation
+
+                    networkAgent = mNetworkAgent;
+
+                    // The below must be done atomically with the mConfig update, otherwise
+                    // isRunningLocked() will be racy.
+                    if (networkAgent == null) {
+                        if (isSettingsVpnLocked()) {
+                            prepareStatusIntent();
+                        }
+                        agentConnect();
+                        return; // Link properties are already sent.
+                    }
+
+                    lp = makeLinkProperties(); // Accesses VPN instance fields; must be locked
+                }
+
+                networkAgent.sendLinkProperties(lp);
+            } catch (Exception e) {
+                Log.d(TAG, "Error in ChildOpened for network " + network, e);
+                onSessionLost(network);
+            }
+        }
+
+        /**
+         * Called when an IPsec transform has been created, and should be applied.
+         *
+         * <p>This method is called multiple times over the lifetime of an IkeSession (or default
+         * network), and is MUST always be called on the mExecutor thread in order to ensure
+         * consistency of the Ikev2VpnRunner fields.
+         */
+        public void onChildTransformCreated(
+                @NonNull Network network, @NonNull IpSecTransform transform, int direction) {
+            if (!isActiveNetwork(network)) {
+                Log.d(TAG, "ChildTransformCreated for obsolete network " + network);
+
+                // Do nothing; this signals that either: (1) a new/better Network was found,
+                // and the Ikev2VpnRunner has switched to it in onDefaultNetworkChanged, or (2) this
+                // IKE session was already shut down (exited, or an error was encountered somewhere
+                // else). In both cases, all resources and sessions are torn down via
+                // resetIkeState().
+                return;
+            }
+
+            try {
+                // Transforms do not need to be persisted; the IkeSession will keep
+                // them alive for us
+                mIpSecManager.applyTunnelModeTransform(mTunnelIface, direction, transform);
+            } catch (IOException e) {
+                Log.d(TAG, "Transform application failed for network " + network, e);
+                onSessionLost(network);
+            }
+        }
+
+        /**
+         * Called when a new default network is connected.
+         *
+         * <p>The Ikev2VpnRunner will unconditionally switch to the new network, killing the old IKE
+         * state in the process, and starting a new IkeSession instance.
+         *
+         * <p>This method is called multiple times over the lifetime of the Ikev2VpnRunner, and is
+         * called on the ConnectivityService thread. Thus, the actual work MUST be proxied to the
+         * mExecutor thread in order to ensure consistency of the Ikev2VpnRunner fields.
+         */
+        public void onDefaultNetworkChanged(@NonNull Network network) {
+            Log.d(TAG, "Starting IKEv2/IPsec session on new network: " + network);
+
+            // Proxy to the Ikev2VpnRunner (single-thread) executor to ensure consistency in lieu
+            // of locking.
+            mExecutor.execute(() -> {
+                try {
+                    if (!mIsRunning) {
+                        Log.d(TAG, "onDefaultNetworkChanged after exit");
+                        return; // VPN has been shut down.
+                    }
+
+                    // Without MOBIKE, we have no way to seamlessly migrate. Close on old
+                    // (non-default) network, and start the new one.
+                    resetIkeState();
+                    mActiveNetwork = network;
+
+                    // TODO(b/149356682): Update this based on new IKE API
+                    mEncapSocket = mIpSecManager.openUdpEncapsulationSocket();
+
+                    // TODO(b/149356682): Update this based on new IKE API
+                    final IkeSessionParams ikeSessionParams =
+                            VpnIkev2Utils.buildIkeSessionParams(mProfile, mEncapSocket);
+                    final ChildSessionParams childSessionParams =
+                            VpnIkev2Utils.buildChildSessionParams();
+
+                    // TODO: Remove the need for adding two unused addresses with
+                    // IPsec tunnels.
+                    mTunnelIface =
+                            mIpSecManager.createIpSecTunnelInterface(
+                                    ikeSessionParams.getServerAddress() /* unused */,
+                                    ikeSessionParams.getServerAddress() /* unused */,
+                                    network);
+                    mNetd.setInterfaceUp(mTunnelIface.getInterfaceName());
+
+                    // Socket must be bound to prevent network switches from causing
+                    // the IKE teardown to fail/timeout.
+                    // TODO(b/149356682): Update this based on new IKE API
+                    network.bindSocket(mEncapSocket.getFileDescriptor());
+
+                    mSession = mIkev2SessionCreator.createIkeSession(
+                            mContext,
+                            ikeSessionParams,
+                            childSessionParams,
+                            mExecutor,
+                            new VpnIkev2Utils.IkeSessionCallbackImpl(
+                                    TAG, IkeV2VpnRunner.this, network),
+                            new VpnIkev2Utils.ChildSessionCallbackImpl(
+                                    TAG, IkeV2VpnRunner.this, network));
+                    Log.d(TAG, "Ike Session started for network " + network);
+                } catch (Exception e) {
+                    Log.i(TAG, "Setup failed for network " + network + ". Aborting", e);
+                    onSessionLost(network);
+                }
+            });
+        }
+
+        /**
+         * Handles loss of a session
+         *
+         * <p>The loss of a session might be due to an onLost() call, the IKE session getting torn
+         * down for any reason, or an error in updating state (transform application, VPN setup)
+         *
+         * <p>This method MUST always be called on the mExecutor thread in order to ensure
+         * consistency of the Ikev2VpnRunner fields.
+         */
+        public void onSessionLost(@NonNull Network network) {
+            if (!isActiveNetwork(network)) {
+                Log.d(TAG, "onSessionLost() called for obsolete network " + network);
+
+                // Do nothing; this signals that either: (1) a new/better Network was found,
+                // and the Ikev2VpnRunner has switched to it in onDefaultNetworkChanged, or (2) this
+                // IKE session was already shut down (exited, or an error was encountered somewhere
+                // else). In both cases, all resources and sessions are torn down via
+                // onSessionLost() and resetIkeState().
+                return;
+            }
+
+            mActiveNetwork = null;
+
+            // Close all obsolete state, but keep VPN alive incase a usable network comes up.
+            // (Mirrors VpnService behavior)
+            Log.d(TAG, "Resetting state for network: " + network);
+
+            synchronized (Vpn.this) {
+                // Since this method handles non-fatal errors only, set mInterface to null to
+                // prevent the NetworkManagementEventObserver from killing this VPN based on the
+                // interface going down (which we expect).
+                mInterface = null;
+                mConfig.interfaze = null;
+
+                // Set as unroutable to prevent traffic leaking while the interface is down.
+                if (mConfig != null && mConfig.routes != null) {
+                    final List<RouteInfo> oldRoutes = new ArrayList<>(mConfig.routes);
+
+                    mConfig.routes.clear();
+                    for (final RouteInfo route : oldRoutes) {
+                        mConfig.routes.add(new RouteInfo(route.getDestination(), RTN_UNREACHABLE));
+                    }
+                    if (mNetworkAgent != null) {
+                        mNetworkAgent.sendLinkProperties(makeLinkProperties());
+                    }
+                }
+            }
+
+            resetIkeState();
+        }
+
+        /**
+         * Cleans up all IKE state
+         *
+         * <p>This method MUST always be called on the mExecutor thread in order to ensure
+         * consistency of the Ikev2VpnRunner fields.
+         */
+        private void resetIkeState() {
+            if (mTunnelIface != null) {
+                // No need to call setInterfaceDown(); the IpSecInterface is being fully torn down.
+                mTunnelIface.close();
+                mTunnelIface = null;
+            }
+            if (mSession != null) {
+                mSession.kill(); // Kill here to make sure all resources are released immediately
+                mSession = null;
+            }
+
+            // TODO(b/149356682): Update this based on new IKE API
+            if (mEncapSocket != null) {
+                try {
+                    mEncapSocket.close();
+                } catch (IOException e) {
+                    Log.e(TAG, "Failed to close encap socket", e);
+                }
+                mEncapSocket = null;
+            }
+        }
+
+        /**
+         * Triggers cleanup of outer class' state
+         *
+         * <p>Can be called from any thread, as it does not mutate state in the Ikev2VpnRunner.
+         */
+        private void cleanupVpnState() {
+            synchronized (Vpn.this) {
+                agentDisconnect();
+            }
+        }
+
+        /**
+         * Cleans up all Ikev2VpnRunner internal state
+         *
+         * <p>This method MUST always be called on the mExecutor thread in order to ensure
+         * consistency of the Ikev2VpnRunner fields.
+         */
+        private void shutdownVpnRunner() {
+            mActiveNetwork = null;
+            mIsRunning = false;
+
+            resetIkeState();
+
+            final ConnectivityManager cm = ConnectivityManager.from(mContext);
+            cm.unregisterNetworkCallback(mNetworkCallback);
+
+            mExecutor.shutdown();
+        }
+
+        @Override
+        public void exit() {
+            // Cleanup outer class' state immediately, otherwise race conditions may ensue.
+            cleanupVpnState();
+
+            mExecutor.execute(() -> {
+                shutdownVpnRunner();
+            });
+        }
+    }
+
     /**
      * Bringing up a VPN connection takes time, and that is all this thread
      * does. Here we have plenty of time. The only thing we need to take
@@ -1902,7 +2400,7 @@
      * requests will pile up. This could be done in a Handler as a state
      * machine, but it is much easier to read in the current form.
      */
-    private class LegacyVpnRunner extends Thread {
+    private class LegacyVpnRunner extends VpnRunner {
         private static final String TAG = "LegacyVpnRunner";
 
         private final String[] mDaemons;
@@ -1972,13 +2470,21 @@
             mContext.registerReceiver(mBroadcastReceiver, filter);
         }
 
-        public void check(String interfaze) {
+        /**
+         * Checks if the parameter matches the underlying interface
+         *
+         * <p>If the underlying interface is torn down, the LegacyVpnRunner also should be. It has
+         * no ability to migrate between interfaces (or Networks).
+         */
+        public void exitIfOuterInterfaceIs(String interfaze) {
             if (interfaze.equals(mOuterInterface)) {
                 Log.i(TAG, "Legacy VPN is going down with " + interfaze);
                 exit();
             }
         }
 
+        /** Tears down this LegacyVpn connection */
+        @Override
         public void exit() {
             // We assume that everything is reset after stopping the daemons.
             interrupt();
@@ -2228,4 +2734,206 @@
             }
         }
     }
+
+    private void verifyCallingUidAndPackage(String packageName) {
+        if (getAppUid(packageName, mUserHandle) != Binder.getCallingUid()) {
+            throw new SecurityException("Mismatched package and UID");
+        }
+    }
+
+    @VisibleForTesting
+    String getProfileNameForPackage(String packageName) {
+        return Credentials.PLATFORM_VPN + mUserHandle + "_" + packageName;
+    }
+
+    /**
+     * Stores an app-provisioned VPN profile and returns whether the app is already prepared.
+     *
+     * @param packageName the package name of the app provisioning this profile
+     * @param profile the profile to be stored and provisioned
+     * @param keyStore the System keystore instance to save VPN profiles
+     * @returns whether or not the app has already been granted user consent
+     */
+    public synchronized boolean provisionVpnProfile(
+            @NonNull String packageName, @NonNull VpnProfile profile, @NonNull KeyStore keyStore) {
+        checkNotNull(packageName, "No package name provided");
+        checkNotNull(profile, "No profile provided");
+        checkNotNull(keyStore, "KeyStore missing");
+
+        verifyCallingUidAndPackage(packageName);
+
+        final byte[] encodedProfile = profile.encode();
+        if (encodedProfile.length > MAX_VPN_PROFILE_SIZE_BYTES) {
+            throw new IllegalArgumentException("Profile too big");
+        }
+
+        // Permissions checked during startVpnProfile()
+        Binder.withCleanCallingIdentity(
+                () -> {
+                    keyStore.put(
+                            getProfileNameForPackage(packageName),
+                            encodedProfile,
+                            Process.SYSTEM_UID,
+                            0 /* flags */);
+                });
+
+        // TODO: if package has CONTROL_VPN, grant the ACTIVATE_PLATFORM_VPN appop.
+        // This mirrors the prepareAndAuthorize that is used by VpnService.
+
+        // Return whether the app is already pre-consented
+        return isVpnProfilePreConsented(mContext, packageName);
+    }
+
+    /**
+     * Deletes an app-provisioned VPN profile.
+     *
+     * @param packageName the package name of the app provisioning this profile
+     * @param keyStore the System keystore instance to save VPN profiles
+     */
+    public synchronized void deleteVpnProfile(
+            @NonNull String packageName, @NonNull KeyStore keyStore) {
+        checkNotNull(packageName, "No package name provided");
+        checkNotNull(keyStore, "KeyStore missing");
+
+        verifyCallingUidAndPackage(packageName);
+
+        Binder.withCleanCallingIdentity(
+                () -> {
+                    keyStore.delete(getProfileNameForPackage(packageName), Process.SYSTEM_UID);
+                });
+    }
+
+    /**
+     * Retrieves the VpnProfile.
+     *
+     * <p>Must be used only as SYSTEM_UID, otherwise the key/UID pair will not match anything in the
+     * keystore.
+     */
+    @VisibleForTesting
+    @Nullable
+    VpnProfile getVpnProfilePrivileged(@NonNull String packageName, @NonNull KeyStore keyStore) {
+        if (!mSystemServices.isCallerSystem()) {
+            Log.wtf(TAG, "getVpnProfilePrivileged called as non-System UID ");
+            return null;
+        }
+
+        final byte[] encoded = keyStore.get(getProfileNameForPackage(packageName));
+        if (encoded == null) return null;
+
+        return VpnProfile.decode("" /* Key unused */, encoded);
+    }
+
+    /**
+     * Starts an already provisioned VPN Profile, keyed by package name.
+     *
+     * <p>This method is meant to be called by apps (via VpnManager and ConnectivityService).
+     * Privileged (system) callers should use startVpnProfilePrivileged instead. Otherwise the UIDs
+     * will not match during appop checks.
+     *
+     * @param packageName the package name of the app provisioning this profile
+     * @param keyStore the System keystore instance to retrieve VPN profiles
+     */
+    public synchronized void startVpnProfile(
+            @NonNull String packageName, @NonNull KeyStore keyStore) {
+        checkNotNull(packageName, "No package name provided");
+        checkNotNull(keyStore, "KeyStore missing");
+
+        // Prepare VPN for startup
+        if (!prepare(packageName, null /* newPackage */, VpnManager.TYPE_VPN_PLATFORM)) {
+            throw new SecurityException("User consent not granted for package " + packageName);
+        }
+
+        Binder.withCleanCallingIdentity(
+                () -> {
+                    final VpnProfile profile = getVpnProfilePrivileged(packageName, keyStore);
+                    if (profile == null) {
+                        throw new IllegalArgumentException("No profile found for " + packageName);
+                    }
+
+                    startVpnProfilePrivileged(profile, packageName);
+                });
+    }
+
+    private void startVpnProfilePrivileged(
+            @NonNull VpnProfile profile, @NonNull String packageName) {
+        // Ensure that no other previous instance is running.
+        if (mVpnRunner != null) {
+            mVpnRunner.exit();
+            mVpnRunner = null;
+        }
+        updateState(DetailedState.CONNECTING, "startPlatformVpn");
+
+        try {
+            // Build basic config
+            mConfig = new VpnConfig();
+            mConfig.user = packageName;
+            mConfig.isMetered = profile.isMetered;
+            mConfig.startTime = SystemClock.elapsedRealtime();
+            mConfig.proxyInfo = profile.proxy;
+
+            switch (profile.type) {
+                case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS:
+                case VpnProfile.TYPE_IKEV2_IPSEC_PSK:
+                case VpnProfile.TYPE_IKEV2_IPSEC_RSA:
+                    mVpnRunner = new IkeV2VpnRunner(Ikev2VpnProfile.fromVpnProfile(profile));
+                    mVpnRunner.start();
+                    break;
+                default:
+                    updateState(DetailedState.FAILED, "Invalid platform VPN type");
+                    Log.d(TAG, "Unknown VPN profile type: " + profile.type);
+                    break;
+            }
+        } catch (IOException | GeneralSecurityException e) {
+            // Reset mConfig
+            mConfig = null;
+
+            updateState(DetailedState.FAILED, "VPN startup failed");
+            throw new IllegalArgumentException("VPN startup failed", e);
+        }
+    }
+
+    /**
+     * Stops an already running VPN Profile for the given package.
+     *
+     * <p>This method is meant to be called by apps (via VpnManager and ConnectivityService).
+     * Privileged (system) callers should (re-)prepare the LEGACY_VPN instead.
+     *
+     * @param packageName the package name of the app provisioning this profile
+     */
+    public synchronized void stopVpnProfile(@NonNull String packageName) {
+        checkNotNull(packageName, "No package name provided");
+
+        // To stop the VPN profile, the caller must be the current prepared package and must be
+        // running an Ikev2VpnProfile.
+        if (!isCurrentPreparedPackage(packageName) && mVpnRunner instanceof IkeV2VpnRunner) {
+            return;
+        }
+
+        prepareInternal(VpnConfig.LEGACY_VPN);
+    }
+
+    /**
+     * Proxy to allow testing
+     *
+     * @hide
+     */
+    @VisibleForTesting
+    public static class Ikev2SessionCreator {
+        /** Creates a IKE session */
+        public IkeSession createIkeSession(
+                @NonNull Context context,
+                @NonNull IkeSessionParams ikeSessionParams,
+                @NonNull ChildSessionParams firstChildSessionParams,
+                @NonNull Executor userCbExecutor,
+                @NonNull IkeSessionCallback ikeSessionCallback,
+                @NonNull ChildSessionCallback firstChildSessionCallback) {
+            return new IkeSession(
+                    context,
+                    ikeSessionParams,
+                    firstChildSessionParams,
+                    userCbExecutor,
+                    ikeSessionCallback,
+                    firstChildSessionCallback);
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java
new file mode 100644
index 0000000..33fc32b
--- /dev/null
+++ b/services/core/java/com/android/server/connectivity/VpnIkev2Utils.java
@@ -0,0 +1,390 @@
+/*
+ * 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.server.connectivity;
+
+import static android.net.ConnectivityManager.NetworkCallback;
+import static android.net.ipsec.ike.SaProposal.DH_GROUP_1024_BIT_MODP;
+import static android.net.ipsec.ike.SaProposal.DH_GROUP_2048_BIT_MODP;
+import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_CBC;
+import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_12;
+import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_16;
+import static android.net.ipsec.ike.SaProposal.ENCRYPTION_ALGORITHM_AES_GCM_8;
+import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_AES_XCBC_96;
+import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA1_96;
+import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_256_128;
+import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_384_192;
+import static android.net.ipsec.ike.SaProposal.INTEGRITY_ALGORITHM_HMAC_SHA2_512_256;
+import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_128;
+import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_192;
+import static android.net.ipsec.ike.SaProposal.KEY_LEN_AES_256;
+import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_AES128_XCBC;
+import static android.net.ipsec.ike.SaProposal.PSEUDORANDOM_FUNCTION_HMAC_SHA1;
+
+import android.annotation.NonNull;
+import android.net.Ikev2VpnProfile;
+import android.net.InetAddresses;
+import android.net.IpPrefix;
+import android.net.IpSecManager.UdpEncapsulationSocket;
+import android.net.IpSecTransform;
+import android.net.Network;
+import android.net.RouteInfo;
+import android.net.eap.EapSessionConfig;
+import android.net.ipsec.ike.ChildSaProposal;
+import android.net.ipsec.ike.ChildSessionCallback;
+import android.net.ipsec.ike.ChildSessionConfiguration;
+import android.net.ipsec.ike.ChildSessionParams;
+import android.net.ipsec.ike.IkeFqdnIdentification;
+import android.net.ipsec.ike.IkeIdentification;
+import android.net.ipsec.ike.IkeIpv4AddrIdentification;
+import android.net.ipsec.ike.IkeIpv6AddrIdentification;
+import android.net.ipsec.ike.IkeKeyIdIdentification;
+import android.net.ipsec.ike.IkeRfc822AddrIdentification;
+import android.net.ipsec.ike.IkeSaProposal;
+import android.net.ipsec.ike.IkeSessionCallback;
+import android.net.ipsec.ike.IkeSessionConfiguration;
+import android.net.ipsec.ike.IkeSessionParams;
+import android.net.ipsec.ike.IkeTrafficSelector;
+import android.net.ipsec.ike.TunnelModeChildSessionParams;
+import android.net.ipsec.ike.exceptions.IkeException;
+import android.net.ipsec.ike.exceptions.IkeProtocolException;
+import android.net.util.IpRange;
+import android.system.OsConstants;
+import android.util.Log;
+
+import com.android.internal.net.VpnProfile;
+import com.android.internal.util.HexDump;
+
+import java.net.Inet4Address;
+import java.net.Inet6Address;
+import java.net.InetAddress;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.List;
+
+/**
+ * Utility class to build and convert IKEv2/IPsec parameters.
+ *
+ * @hide
+ */
+public class VpnIkev2Utils {
+    static IkeSessionParams buildIkeSessionParams(
+            @NonNull Ikev2VpnProfile profile, @NonNull UdpEncapsulationSocket socket) {
+        // TODO(b/149356682): Update this based on new IKE API. Only numeric addresses supported
+        //                    until then. All others throw IAE (caught by caller).
+        final InetAddress serverAddr = InetAddresses.parseNumericAddress(profile.getServerAddr());
+        final IkeIdentification localId = parseIkeIdentification(profile.getUserIdentity());
+        final IkeIdentification remoteId = parseIkeIdentification(profile.getServerAddr());
+
+        // TODO(b/149356682): Update this based on new IKE API.
+        final IkeSessionParams.Builder ikeOptionsBuilder =
+                new IkeSessionParams.Builder()
+                        .setServerAddress(serverAddr)
+                        .setUdpEncapsulationSocket(socket)
+                        .setLocalIdentification(localId)
+                        .setRemoteIdentification(remoteId);
+        setIkeAuth(profile, ikeOptionsBuilder);
+
+        for (final IkeSaProposal ikeProposal : getIkeSaProposals()) {
+            ikeOptionsBuilder.addSaProposal(ikeProposal);
+        }
+
+        return ikeOptionsBuilder.build();
+    }
+
+    static ChildSessionParams buildChildSessionParams() {
+        final TunnelModeChildSessionParams.Builder childOptionsBuilder =
+                new TunnelModeChildSessionParams.Builder();
+
+        for (final ChildSaProposal childProposal : getChildSaProposals()) {
+            childOptionsBuilder.addSaProposal(childProposal);
+        }
+
+        childOptionsBuilder.addInternalAddressRequest(OsConstants.AF_INET);
+        childOptionsBuilder.addInternalAddressRequest(OsConstants.AF_INET6);
+        childOptionsBuilder.addInternalDnsServerRequest(OsConstants.AF_INET);
+        childOptionsBuilder.addInternalDnsServerRequest(OsConstants.AF_INET6);
+
+        return childOptionsBuilder.build();
+    }
+
+    private static void setIkeAuth(
+            @NonNull Ikev2VpnProfile profile, @NonNull IkeSessionParams.Builder builder) {
+        switch (profile.getType()) {
+            case VpnProfile.TYPE_IKEV2_IPSEC_USER_PASS:
+                final EapSessionConfig eapConfig =
+                        new EapSessionConfig.Builder()
+                                .setEapMsChapV2Config(profile.getUsername(), profile.getPassword())
+                                .build();
+                builder.setAuthEap(profile.getServerRootCaCert(), eapConfig);
+                break;
+            case VpnProfile.TYPE_IKEV2_IPSEC_PSK:
+                builder.setAuthPsk(profile.getPresharedKey());
+                break;
+            case VpnProfile.TYPE_IKEV2_IPSEC_RSA:
+                builder.setAuthDigitalSignature(
+                        profile.getServerRootCaCert(),
+                        profile.getUserCert(),
+                        profile.getRsaPrivateKey());
+                break;
+            default:
+                throw new IllegalArgumentException("Unknown auth method set");
+        }
+    }
+
+    private static List<IkeSaProposal> getIkeSaProposals() {
+        // TODO: filter this based on allowedAlgorithms
+        final List<IkeSaProposal> proposals = new ArrayList<>();
+
+        // Encryption Algorithms: Currently only AES_CBC is supported.
+        final IkeSaProposal.Builder normalModeBuilder = new IkeSaProposal.Builder();
+
+        // Currently only AES_CBC is supported.
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_256);
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_192);
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_128);
+
+        // Authentication/Integrity Algorithms
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_512_256);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_384_192);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_256_128);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_AES_XCBC_96);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA1_96);
+
+        // Add AEAD options
+        final IkeSaProposal.Builder aeadBuilder = new IkeSaProposal.Builder();
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_128);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_128);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_128);
+
+        // Add dh, prf for both builders
+        for (final IkeSaProposal.Builder builder : Arrays.asList(normalModeBuilder, aeadBuilder)) {
+            builder.addDhGroup(DH_GROUP_2048_BIT_MODP);
+            builder.addDhGroup(DH_GROUP_1024_BIT_MODP);
+            builder.addPseudorandomFunction(PSEUDORANDOM_FUNCTION_AES128_XCBC);
+            builder.addPseudorandomFunction(PSEUDORANDOM_FUNCTION_HMAC_SHA1);
+        }
+
+        proposals.add(normalModeBuilder.build());
+        proposals.add(aeadBuilder.build());
+        return proposals;
+    }
+
+    private static List<ChildSaProposal> getChildSaProposals() {
+        // TODO: filter this based on allowedAlgorithms
+        final List<ChildSaProposal> proposals = new ArrayList<>();
+
+        // Add non-AEAD options
+        final ChildSaProposal.Builder normalModeBuilder = new ChildSaProposal.Builder();
+
+        // Encryption Algorithms: Currently only AES_CBC is supported.
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_256);
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_192);
+        normalModeBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_CBC, KEY_LEN_AES_128);
+
+        // Authentication/Integrity Algorithms
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_512_256);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_384_192);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA2_256_128);
+        normalModeBuilder.addIntegrityAlgorithm(INTEGRITY_ALGORITHM_HMAC_SHA1_96);
+
+        // Add AEAD options
+        final ChildSaProposal.Builder aeadBuilder = new ChildSaProposal.Builder();
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_256);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_192);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_16, KEY_LEN_AES_128);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_12, KEY_LEN_AES_128);
+        aeadBuilder.addEncryptionAlgorithm(ENCRYPTION_ALGORITHM_AES_GCM_8, KEY_LEN_AES_128);
+
+        proposals.add(normalModeBuilder.build());
+        proposals.add(aeadBuilder.build());
+        return proposals;
+    }
+
+    static class IkeSessionCallbackImpl implements IkeSessionCallback {
+        private final String mTag;
+        private final Vpn.IkeV2VpnRunnerCallback mCallback;
+        private final Network mNetwork;
+
+        IkeSessionCallbackImpl(String tag, Vpn.IkeV2VpnRunnerCallback callback, Network network) {
+            mTag = tag;
+            mCallback = callback;
+            mNetwork = network;
+        }
+
+        @Override
+        public void onOpened(@NonNull IkeSessionConfiguration ikeSessionConfig) {
+            Log.d(mTag, "IkeOpened for network " + mNetwork);
+            // Nothing to do here.
+        }
+
+        @Override
+        public void onClosed() {
+            Log.d(mTag, "IkeClosed for network " + mNetwork);
+            mCallback.onSessionLost(mNetwork); // Server requested session closure. Retry?
+        }
+
+        @Override
+        public void onClosedExceptionally(@NonNull IkeException exception) {
+            Log.d(mTag, "IkeClosedExceptionally for network " + mNetwork, exception);
+            mCallback.onSessionLost(mNetwork);
+        }
+
+        @Override
+        public void onError(@NonNull IkeProtocolException exception) {
+            Log.d(mTag, "IkeError for network " + mNetwork, exception);
+            // Non-fatal, log and continue.
+        }
+    }
+
+    static class ChildSessionCallbackImpl implements ChildSessionCallback {
+        private final String mTag;
+        private final Vpn.IkeV2VpnRunnerCallback mCallback;
+        private final Network mNetwork;
+
+        ChildSessionCallbackImpl(String tag, Vpn.IkeV2VpnRunnerCallback callback, Network network) {
+            mTag = tag;
+            mCallback = callback;
+            mNetwork = network;
+        }
+
+        @Override
+        public void onOpened(@NonNull ChildSessionConfiguration childConfig) {
+            Log.d(mTag, "ChildOpened for network " + mNetwork);
+            mCallback.onChildOpened(mNetwork, childConfig);
+        }
+
+        @Override
+        public void onClosed() {
+            Log.d(mTag, "ChildClosed for network " + mNetwork);
+            mCallback.onSessionLost(mNetwork);
+        }
+
+        @Override
+        public void onClosedExceptionally(@NonNull IkeException exception) {
+            Log.d(mTag, "ChildClosedExceptionally for network " + mNetwork, exception);
+            mCallback.onSessionLost(mNetwork);
+        }
+
+        @Override
+        public void onIpSecTransformCreated(@NonNull IpSecTransform transform, int direction) {
+            Log.d(mTag, "ChildTransformCreated; Direction: " + direction + "; network " + mNetwork);
+            mCallback.onChildTransformCreated(mNetwork, transform, direction);
+        }
+
+        @Override
+        public void onIpSecTransformDeleted(@NonNull IpSecTransform transform, int direction) {
+            // Nothing to be done; no references to the IpSecTransform are held by the
+            // Ikev2VpnRunner (or this callback class), and this transform will be closed by the
+            // IKE library.
+            Log.d(mTag,
+                    "ChildTransformDeleted; Direction: " + direction + "; for network " + mNetwork);
+        }
+    }
+
+    static class Ikev2VpnNetworkCallback extends NetworkCallback {
+        private final String mTag;
+        private final Vpn.IkeV2VpnRunnerCallback mCallback;
+
+        Ikev2VpnNetworkCallback(String tag, Vpn.IkeV2VpnRunnerCallback callback) {
+            mTag = tag;
+            mCallback = callback;
+        }
+
+        @Override
+        public void onAvailable(@NonNull Network network) {
+            Log.d(mTag, "Starting IKEv2/IPsec session on new network: " + network);
+            mCallback.onDefaultNetworkChanged(network);
+        }
+
+        @Override
+        public void onLost(@NonNull Network network) {
+            Log.d(mTag, "Tearing down; lost network: " + network);
+            mCallback.onSessionLost(network);
+        }
+    }
+
+    /**
+     * Identity parsing logic using similar logic to open source implementations of IKEv2
+     *
+     * <p>This method does NOT support using type-prefixes (eg 'fqdn:' or 'keyid'), or ASN.1 encoded
+     * identities.
+     */
+    private static IkeIdentification parseIkeIdentification(@NonNull String identityStr) {
+        // TODO: Add identity formatting to public API javadocs.
+        if (identityStr.contains("@")) {
+            if (identityStr.startsWith("@#")) {
+                // KEY_ID
+                final String hexStr = identityStr.substring(2);
+                return new IkeKeyIdIdentification(HexDump.hexStringToByteArray(hexStr));
+            } else if (identityStr.startsWith("@@")) {
+                // RFC822 (USER_FQDN)
+                return new IkeRfc822AddrIdentification(identityStr.substring(2));
+            } else if (identityStr.startsWith("@")) {
+                // FQDN
+                return new IkeFqdnIdentification(identityStr.substring(1));
+            } else {
+                // RFC822 (USER_FQDN)
+                return new IkeRfc822AddrIdentification(identityStr);
+            }
+        } else if (InetAddresses.isNumericAddress(identityStr)) {
+            final InetAddress addr = InetAddresses.parseNumericAddress(identityStr);
+            if (addr instanceof Inet4Address) {
+                // IPv4
+                return new IkeIpv4AddrIdentification((Inet4Address) addr);
+            } else if (addr instanceof Inet6Address) {
+                // IPv6
+                return new IkeIpv6AddrIdentification((Inet6Address) addr);
+            } else {
+                throw new IllegalArgumentException("IP version not supported");
+            }
+        } else {
+            if (identityStr.contains(":")) {
+                // KEY_ID
+                return new IkeKeyIdIdentification(identityStr.getBytes());
+            } else {
+                // FQDN
+                return new IkeFqdnIdentification(identityStr);
+            }
+        }
+    }
+
+    static Collection<RouteInfo> getRoutesFromTrafficSelectors(
+            List<IkeTrafficSelector> trafficSelectors) {
+        final HashSet<RouteInfo> routes = new HashSet<>();
+
+        for (final IkeTrafficSelector selector : trafficSelectors) {
+            for (final IpPrefix prefix :
+                    new IpRange(selector.startingAddress, selector.endingAddress).asIpPrefixes()) {
+                routes.add(new RouteInfo(prefix, null));
+            }
+        }
+
+        return routes;
+    }
+}
diff --git a/services/core/java/com/android/server/content/SyncManager.java b/services/core/java/com/android/server/content/SyncManager.java
index 4ddc391b..6d130d9 100644
--- a/services/core/java/com/android/server/content/SyncManager.java
+++ b/services/core/java/com/android/server/content/SyncManager.java
@@ -212,8 +212,11 @@
 
 
     private static final int SYNC_OP_STATE_VALID = 0;
-    private static final int SYNC_OP_STATE_INVALID = 1;
+    // "1" used to include errors 3, 4 and 5 but now it's split up.
     private static final int SYNC_OP_STATE_INVALID_NO_ACCOUNT_ACCESS = 2;
+    private static final int SYNC_OP_STATE_INVALID_NO_ACCOUNT = 3;
+    private static final int SYNC_OP_STATE_INVALID_NOT_SYNCABLE = 4;
+    private static final int SYNC_OP_STATE_INVALID_SYNC_DISABLED = 5;
 
     /** Flags used when connecting to a sync adapter service */
     private static final int SYNC_ADAPTER_CONNECTION_FLAGS = Context.BIND_AUTO_CREATE
@@ -3206,12 +3209,10 @@
             }
 
             final int syncOpState = computeSyncOpState(op);
-            switch (syncOpState) {
-                case SYNC_OP_STATE_INVALID_NO_ACCOUNT_ACCESS:
-                case SYNC_OP_STATE_INVALID: {
-                    SyncJobService.callJobFinished(op.jobId, false,
-                            "invalid op state: " + syncOpState);
-                } return;
+            if (syncOpState != SYNC_OP_STATE_VALID) {
+                SyncJobService.callJobFinished(op.jobId, false,
+                        "invalid op state: " + syncOpState);
+                return;
             }
 
             if (!dispatchSyncOperation(op)) {
@@ -3354,27 +3355,27 @@
                     pollFrequencyMillis, flexMillis, ContentResolver.SYNC_EXEMPTION_NONE);
 
             final int syncOpState = computeSyncOpState(op);
-            switch (syncOpState) {
-                case SYNC_OP_STATE_INVALID_NO_ACCOUNT_ACCESS: {
-                    String packageName = op.owningPackage;
-                    final int userId = UserHandle.getUserId(op.owningUid);
-                    // If the app did not run and has no account access, done
-                    if (!wasPackageEverLaunched(packageName, userId)) {
-                        return;
-                    }
-                    mAccountManagerInternal.requestAccountAccess(op.target.account,
-                            packageName, userId, new RemoteCallback((Bundle result) -> {
-                                if (result != null
-                                        && result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) {
-                                    updateOrAddPeriodicSync(target, pollFrequency, flex, extras);
-                                }
-                            }
-                        ));
-                } return;
-
-                case SYNC_OP_STATE_INVALID: {
+            if (syncOpState == SYNC_OP_STATE_INVALID_NO_ACCOUNT_ACCESS) {
+                String packageName = op.owningPackage;
+                final int userId = UserHandle.getUserId(op.owningUid);
+                // If the app did not run and has no account access, done
+                if (!wasPackageEverLaunched(packageName, userId)) {
                     return;
                 }
+                mLogger.log("requestAccountAccess for SYNC_OP_STATE_INVALID_NO_ACCOUNT_ACCESS");
+                mAccountManagerInternal.requestAccountAccess(op.target.account,
+                        packageName, userId, new RemoteCallback((Bundle result) -> {
+                            if (result != null
+                                    && result.getBoolean(AccountManager.KEY_BOOLEAN_RESULT)) {
+                                updateOrAddPeriodicSync(target, pollFrequency, flex, extras);
+                            }
+                        }
+                        ));
+                return;
+            }
+            if (syncOpState != SYNC_OP_STATE_VALID) {
+                mLogger.log("syncOpState=", syncOpState);
+                return;
             }
 
             scheduleSyncOperationH(op);
@@ -3452,7 +3453,7 @@
                     Slog.v(TAG, "    Dropping sync operation: account doesn't exist.");
                 }
                 Slog.wtf(TAG, "SYNC_OP_STATE_INVALID: account doesn't exist.");
-                return SYNC_OP_STATE_INVALID;
+                return SYNC_OP_STATE_INVALID_NO_ACCOUNT;
             }
             // Drop this sync request if it isn't syncable.
             state = computeSyncable(target.account, target.userId, target.provider, true);
@@ -3469,7 +3470,7 @@
                     Slog.v(TAG, "    Dropping sync operation: isSyncable == NOT_SYNCABLE");
                 }
                 Slog.wtf(TAG, "SYNC_OP_STATE_INVALID: NOT_SYNCABLE");
-                return SYNC_OP_STATE_INVALID;
+                return SYNC_OP_STATE_INVALID_NOT_SYNCABLE;
             }
 
             final boolean syncEnabled = mSyncStorageEngine.getMasterSyncAutomatically(target.userId)
@@ -3488,7 +3489,7 @@
                     Slog.v(TAG, "    Dropping sync operation: disallowed by settings/network.");
                 }
                 Slog.wtf(TAG, "SYNC_OP_STATE_INVALID: disallowed by settings/network");
-                return SYNC_OP_STATE_INVALID;
+                return SYNC_OP_STATE_INVALID_SYNC_DISABLED;
             }
             return SYNC_OP_STATE_VALID;
         }
diff --git a/services/core/java/com/android/server/content/SyncStorageEngine.java b/services/core/java/com/android/server/content/SyncStorageEngine.java
index dea47db..afdcda9 100644
--- a/services/core/java/com/android/server/content/SyncStorageEngine.java
+++ b/services/core/java/com/android/server/content/SyncStorageEngine.java
@@ -1738,7 +1738,7 @@
 
     /**
      * Ensure the old pending.bin is deleted, as it has been changed to pending.xml.
-     * pending.xml was used starting in KLP.
+     * pending.xml was used starting in KitKat.
      * @param syncDir directory where the sync files are located.
      */
     private void maybeDeleteLegacyPendingInfoLocked(File syncDir) {
diff --git a/services/core/java/com/android/server/display/AutomaticBrightnessController.java b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
index c99774a..6178e6c 100644
--- a/services/core/java/com/android/server/display/AutomaticBrightnessController.java
+++ b/services/core/java/com/android/server/display/AutomaticBrightnessController.java
@@ -21,6 +21,7 @@
 import android.app.ActivityTaskManager;
 import android.app.IActivityTaskManager;
 import android.app.TaskStackListener;
+import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
 import android.hardware.Sensor;
@@ -41,6 +42,7 @@
 import android.util.Slog;
 import android.util.TimeUtils;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.os.BackgroundThread;
 import com.android.server.EventLogTags;
@@ -89,6 +91,8 @@
     // The minimum and maximum screen brightnesses.
     private final int mScreenBrightnessRangeMinimum;
     private final int mScreenBrightnessRangeMaximum;
+    private final float mScreenBrightnessRangeMinimumFloat;
+    private final float mScreenBrightnessRangeMaximumFloat;
 
     // How much to scale doze brightness by (should be (0, 1.0]).
     private final float mDozeScaleFactor;
@@ -174,7 +178,7 @@
     // that we can quickly revert to the previous auto-brightness level
     // while the light sensor warms up.
     // Use -1 if there is no current auto-brightness value available.
-    private int mScreenAutoBrightness = -1;
+    private int mScreenAutoBrightness = PowerManager.BRIGHTNESS_INVALID;
 
     // The current display policy. This is useful, for example,  for knowing when we're dozing,
     // where the light sensor may not be available.
@@ -204,39 +208,44 @@
     private TaskStackListenerImpl mTaskStackListener;
     private IActivityTaskManager mActivityTaskManager;
     private PackageManager mPackageManager;
+    private Context mContext;
 
     private final Injector mInjector;
 
     AutomaticBrightnessController(Callbacks callbacks, Looper looper,
             SensorManager sensorManager, Sensor lightSensor, BrightnessMappingStrategy mapper,
-            int lightSensorWarmUpTime, int brightnessMin, int brightnessMax, float dozeScaleFactor,
-            int lightSensorRate, int initialLightSensorRate, long brighteningLightDebounceConfig,
-            long darkeningLightDebounceConfig, boolean resetAmbientLuxAfterWarmUpConfig,
-            HysteresisLevels ambientBrightnessThresholds,
-            HysteresisLevels screenBrightnessThresholds,
-            PackageManager packageManager) {
+            int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
+            float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
+            long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
+            boolean resetAmbientLuxAfterWarmUpConfig, HysteresisLevels ambientBrightnessThresholds,
+            HysteresisLevels screenBrightnessThresholds, Context context) {
         this(new Injector(), callbacks, looper, sensorManager, lightSensor, mapper,
                 lightSensorWarmUpTime, brightnessMin, brightnessMax, dozeScaleFactor,
                 lightSensorRate, initialLightSensorRate, brighteningLightDebounceConfig,
                 darkeningLightDebounceConfig, resetAmbientLuxAfterWarmUpConfig,
-                ambientBrightnessThresholds, screenBrightnessThresholds, packageManager);
+                ambientBrightnessThresholds, screenBrightnessThresholds, context);
     }
 
     @VisibleForTesting
     AutomaticBrightnessController(Injector injector, Callbacks callbacks, Looper looper,
             SensorManager sensorManager, Sensor lightSensor, BrightnessMappingStrategy mapper,
-            int lightSensorWarmUpTime, int brightnessMin, int brightnessMax, float dozeScaleFactor,
-            int lightSensorRate, int initialLightSensorRate, long brighteningLightDebounceConfig,
-            long darkeningLightDebounceConfig, boolean resetAmbientLuxAfterWarmUpConfig,
-            HysteresisLevels ambientBrightnessThresholds,
-            HysteresisLevels screenBrightnessThresholds,
-            PackageManager packageManager) {
+            int lightSensorWarmUpTime, float brightnessMin, float brightnessMax,
+            float dozeScaleFactor, int lightSensorRate, int initialLightSensorRate,
+            long brighteningLightDebounceConfig, long darkeningLightDebounceConfig,
+            boolean resetAmbientLuxAfterWarmUpConfig, HysteresisLevels ambientBrightnessThresholds,
+            HysteresisLevels screenBrightnessThresholds, Context context) {
         mInjector = injector;
+        mContext = context;
         mCallbacks = callbacks;
         mSensorManager = sensorManager;
         mBrightnessMapper = mapper;
-        mScreenBrightnessRangeMinimum = brightnessMin;
-        mScreenBrightnessRangeMaximum = brightnessMax;
+        mScreenBrightnessRangeMinimum =
+                BrightnessSynchronizer.brightnessFloatToInt(mContext, brightnessMin);
+        mScreenBrightnessRangeMaximum =
+                com.android.internal.BrightnessSynchronizer.brightnessFloatToInt(
+                        mContext, brightnessMax);
+        mScreenBrightnessRangeMinimumFloat = brightnessMin;
+        mScreenBrightnessRangeMaximumFloat = brightnessMax;
         mLightSensorWarmUpTimeConfig = lightSensorWarmUpTime;
         mDozeScaleFactor = dozeScaleFactor;
         mNormalLightSensorRate = lightSensorRate;
@@ -261,7 +270,7 @@
         }
 
         mActivityTaskManager = ActivityTaskManager.getService();
-        mPackageManager = packageManager;
+        mPackageManager = mContext.getPackageManager();
         mTaskStackListener = new TaskStackListenerImpl();
         mForegroundAppPackageName = null;
         mPendingForegroundAppPackageName = null;
@@ -291,7 +300,7 @@
             return -1;
         }
         if (mDisplayPolicy == DisplayPowerRequest.POLICY_DOZE) {
-            return (int) (mScreenAutoBrightness * mDozeScaleFactor);
+            return Math.round(mScreenAutoBrightness * mDozeScaleFactor);
         }
         return mScreenAutoBrightness;
     }
@@ -473,7 +482,7 @@
         } else if (mLightSensorEnabled) {
             mLightSensorEnabled = false;
             mAmbientLuxValid = !mResetAmbientLuxAfterWarmUpConfig;
-            mScreenAutoBrightness = -1;
+            mScreenAutoBrightness = PowerManager.BRIGHTNESS_INVALID;
             mRecentLightSamples = 0;
             mAmbientLightRingBuffer.clear();
             mCurrentLightSensorRate = -1;
@@ -722,10 +731,8 @@
 
         float value = mBrightnessMapper.getBrightness(mAmbientLux, mForegroundAppPackageName,
                 mForegroundAppCategory);
-
-        int newScreenAutoBrightness = Math.round(clampScreenBrightness(
-                value * PowerManager.BRIGHTNESS_ON));
-
+        int newScreenAutoBrightness = BrightnessSynchronizer.brightnessFloatToInt(
+                mContext, clampScreenBrightnessFloat(value));
         // If screenAutoBrightness is set, we should have screen{Brightening,Darkening}Threshold,
         // in which case we ignore the new screen brightness if it doesn't differ enough from the
         // previous one.
@@ -759,11 +766,19 @@
         }
     }
 
+    // Clamps values with float range [1.0-255.0]
+    // TODO(brightnessfloat): convert everything that uses this to float system
     private float clampScreenBrightness(float value) {
         return MathUtils.constrain(value,
                 mScreenBrightnessRangeMinimum, mScreenBrightnessRangeMaximum);
     }
 
+    // Clamps values with float range [0.0-1.0]
+    private float clampScreenBrightnessFloat(float value) {
+        return MathUtils.constrain(value,
+                mScreenBrightnessRangeMinimumFloat, mScreenBrightnessRangeMaximumFloat);
+    }
+
     private void prepareBrightnessAdjustmentSample() {
         if (!mBrightnessAdjustmentSamplePending) {
             mBrightnessAdjustmentSamplePending = true;
diff --git a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
index 6ff2767..a099606 100644
--- a/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
+++ b/services/core/java/com/android/server/display/BrightnessMappingStrategy.java
@@ -28,6 +28,7 @@
 import android.util.Slog;
 import android.util.Spline;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.Preconditions;
 import com.android.server.display.utils.Plog;
@@ -342,9 +343,9 @@
     }
 
     protected static float normalizeAbsoluteBrightness(int brightness) {
-        brightness = MathUtils.constrain(brightness,
-                PowerManager.BRIGHTNESS_OFF, PowerManager.BRIGHTNESS_ON);
-        return (float) brightness / PowerManager.BRIGHTNESS_ON;
+        return BrightnessSynchronizer.brightnessIntToFloat(brightness,
+                PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
     }
 
     private Pair<float[], float[]> insertControlPoint(
diff --git a/services/core/java/com/android/server/display/DisplayAdapter.java b/services/core/java/com/android/server/display/DisplayAdapter.java
index 6ba25a5..838dc84 100644
--- a/services/core/java/com/android/server/display/DisplayAdapter.java
+++ b/services/core/java/com/android/server/display/DisplayAdapter.java
@@ -109,24 +109,14 @@
      */
     protected final void sendDisplayDeviceEventLocked(
             final DisplayDevice device, final int event) {
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mListener.onDisplayDeviceEvent(device, event);
-            }
-        });
+        mHandler.post(() -> mListener.onDisplayDeviceEvent(device, event));
     }
 
     /**
      * Sends a request to perform traversals.
      */
     protected final void sendTraversalRequestLocked() {
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                mListener.onTraversalRequested();
-            }
-        });
+        mHandler.post(() -> mListener.onTraversalRequested());
     }
 
     public static Display.Mode createMode(int width, int height, float refreshRate) {
@@ -135,7 +125,7 @@
     }
 
     public interface Listener {
-        public void onDisplayDeviceEvent(DisplayDevice device, int event);
-        public void onTraversalRequested();
+        void onDisplayDeviceEvent(DisplayDevice device, int event);
+        void onTraversalRequested();
     }
 }
diff --git a/services/core/java/com/android/server/display/DisplayBlanker.java b/services/core/java/com/android/server/display/DisplayBlanker.java
index 816dc13..d294898 100644
--- a/services/core/java/com/android/server/display/DisplayBlanker.java
+++ b/services/core/java/com/android/server/display/DisplayBlanker.java
@@ -20,5 +20,5 @@
  * Interface used to update the actual display state.
  */
 public interface DisplayBlanker {
-    void requestDisplayState(int state, int brightness);
+    void requestDisplayState(int state, float brightness);
 }
diff --git a/services/core/java/com/android/server/display/DisplayDevice.java b/services/core/java/com/android/server/display/DisplayDevice.java
index e69a3b8b..63a8d7c 100644
--- a/services/core/java/com/android/server/display/DisplayDevice.java
+++ b/services/core/java/com/android/server/display/DisplayDevice.java
@@ -129,11 +129,11 @@
      * Sets the display state, if supported.
      *
      * @param state The new display state.
-     * @param brightness The new display brightness.
+     * @param brightnessState The new display brightnessState.
      * @return A runnable containing work to be deferred until after we have
      * exited the critical section, or null if none.
      */
-    public Runnable requestDisplayStateLocked(int state, int brightness) {
+    public Runnable requestDisplayStateLocked(int state, float brightnessState) {
         return null;
     }
 
diff --git a/services/core/java/com/android/server/display/DisplayManagerService.java b/services/core/java/com/android/server/display/DisplayManagerService.java
index 71ade62..9140589 100644
--- a/services/core/java/com/android/server/display/DisplayManagerService.java
+++ b/services/core/java/com/android/server/display/DisplayManagerService.java
@@ -232,7 +232,7 @@
 
     // The overall display brightness.
     // For now, this only applies to the built-in display but we may split it up eventually.
-    private int mGlobalDisplayBrightness = PowerManager.BRIGHTNESS_DEFAULT;
+    private float mGlobalDisplayBrightness;
 
     // Set to true when there are pending display changes that have yet to be applied
     // to the surface flinger state.
@@ -340,7 +340,8 @@
         mMinimumBrightnessSpline = Spline.createSpline(lux, nits);
 
         PowerManager pm = mContext.getSystemService(PowerManager.class);
-        mGlobalDisplayBrightness = pm.getDefaultScreenBrightnessSetting();
+        mGlobalDisplayBrightness = pm.getBrightnessConstraint(
+                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT);
         mCurrentUserId = UserHandle.USER_SYSTEM;
         ColorSpace[] colorSpaces = SurfaceControl.getCompositionColorSpaces();
         mWideColorSpace = colorSpaces[1];
@@ -539,16 +540,16 @@
         }
     }
 
-    private void requestGlobalDisplayStateInternal(int state, int brightness) {
+    private void requestGlobalDisplayStateInternal(int state, float brightnessState) {
         if (state == Display.STATE_UNKNOWN) {
             state = Display.STATE_ON;
         }
         if (state == Display.STATE_OFF) {
-            brightness = PowerManager.BRIGHTNESS_OFF;
-        } else if (brightness < 0) {
-            brightness = PowerManager.BRIGHTNESS_DEFAULT;
-        } else if (brightness > PowerManager.BRIGHTNESS_ON) {
-            brightness = PowerManager.BRIGHTNESS_ON;
+            brightnessState = PowerManager.BRIGHTNESS_OFF_FLOAT;
+        } else if (brightnessState < PowerManager.BRIGHTNESS_MIN || Float.isNaN(brightnessState)) {
+            brightnessState = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        } else if (brightnessState > PowerManager.BRIGHTNESS_MAX) {
+            brightnessState = PowerManager.BRIGHTNESS_MAX;
         }
 
         synchronized (mTempDisplayStateWorkQueue) {
@@ -558,15 +559,15 @@
                 // may happen as a side-effect of displays changing state.
                 synchronized (mSyncRoot) {
                     if (mGlobalDisplayState == state
-                            && mGlobalDisplayBrightness == brightness) {
+                            && mGlobalDisplayBrightness == brightnessState) {
                         return; // no change
                     }
 
                     Trace.traceBegin(Trace.TRACE_TAG_POWER, "requestGlobalDisplayState("
                             + Display.stateToString(state)
-                            + ", brightness=" + brightness + ")");
+                            + ", brightness=" + brightnessState + ")");
                     mGlobalDisplayState = state;
-                    mGlobalDisplayBrightness = brightness;
+                    mGlobalDisplayBrightness = brightnessState;
                     applyGlobalDisplayStateLocked(mTempDisplayStateWorkQueue);
                 }
 
@@ -1023,7 +1024,8 @@
         // by the display power controller (if known).
         DisplayDeviceInfo info = device.getDisplayDeviceInfoLocked();
         if ((info.flags & DisplayDeviceInfo.FLAG_NEVER_BLANK) == 0) {
-            return device.requestDisplayStateLocked(mGlobalDisplayState, mGlobalDisplayBrightness);
+            return device.requestDisplayStateLocked(
+                    mGlobalDisplayState, mGlobalDisplayBrightness);
         }
         return null;
     }
@@ -2300,7 +2302,7 @@
         }
 
         @Override // Binder call
-        public void setTemporaryBrightness(int brightness) {
+        public void setTemporaryBrightness(float brightness) {
             mContext.enforceCallingOrSelfPermission(
                     Manifest.permission.CONTROL_DISPLAY_BRIGHTNESS,
                     "Permission required to set the display's brightness");
@@ -2419,7 +2421,7 @@
             synchronized (mSyncRoot) {
                 DisplayBlanker blanker = new DisplayBlanker() {
                     @Override
-                    public void requestDisplayState(int state, int brightness) {
+                    public void requestDisplayState(int state, float brightness) {
                         // The order of operations is important for legacy reasons.
                         if (state == Display.STATE_OFF) {
                             requestGlobalDisplayStateInternal(state, brightness);
diff --git a/services/core/java/com/android/server/display/DisplayManagerShellCommand.java b/services/core/java/com/android/server/display/DisplayManagerShellCommand.java
index e87ad41..0c6c797 100644
--- a/services/core/java/com/android/server/display/DisplayManagerShellCommand.java
+++ b/services/core/java/com/android/server/display/DisplayManagerShellCommand.java
@@ -108,8 +108,8 @@
                 "Permission required to set the display's brightness");
         final long token = Binder.clearCallingIdentity();
         try {
-            Settings.System.putIntForUser(context.getContentResolver(),
-                    Settings.System.SCREEN_BRIGHTNESS, (int) (brightness * 255),
+            Settings.System.putFloatForUser(context.getContentResolver(),
+                    Settings.System.SCREEN_BRIGHTNESS_FLOAT, brightness,
                     UserHandle.USER_CURRENT);
         } finally {
             Binder.restoreCallingIdentity(token);
diff --git a/services/core/java/com/android/server/display/DisplayModeDirector.java b/services/core/java/com/android/server/display/DisplayModeDirector.java
index decb1f9..8bbeabf 100644
--- a/services/core/java/com/android/server/display/DisplayModeDirector.java
+++ b/services/core/java/com/android/server/display/DisplayModeDirector.java
@@ -946,9 +946,9 @@
      * {@link R.array#config_ambientThresholdsOfPeakRefreshRate}.
      */
     private class BrightnessObserver extends ContentObserver {
+        // TODO: brightnessfloat: change this to the float setting
         private final Uri mDisplayBrightnessSetting =
                 Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS);
-
         private final static int LIGHT_SENSOR_RATE_MS = 250;
         private int[] mDisplayBrightnessThresholds;
         private int[] mAmbientBrightnessThresholds;
@@ -1050,6 +1050,7 @@
 
         public void dumpLocked(PrintWriter pw) {
             pw.println("  BrightnessObserver");
+            pw.println("    mAmbientLux: " + mAmbientLux);
             pw.println("    mRefreshRateInZone: " + mRefreshRateInZone);
 
             for (int d: mDisplayBrightnessThresholds) {
@@ -1059,6 +1060,8 @@
             for (int d: mAmbientBrightnessThresholds) {
                 pw.println("    mAmbientBrightnessThreshold: " + d);
             }
+
+            mLightSensorListener.dumpLocked(pw);
         }
 
         public void onDisplayChanged(int displayId) {
@@ -1171,7 +1174,7 @@
 
             return false;
         }
-
+        // TODO: brightnessfloat: make it use float not int
         private void onBrightnessChangedLocked() {
             int brightness = Settings.System.getInt(mContext.getContentResolver(),
                     Settings.System.SCREEN_BRIGHTNESS, -1);
@@ -1222,6 +1225,10 @@
             final private static int INJECT_EVENTS_INTERVAL_MS = LIGHT_SENSOR_RATE_MS;
             private float mLastSensorData;
 
+            public void dumpLocked(PrintWriter pw) {
+                pw.println("    mLastSensorData: " + mLastSensorData);
+            }
+
             @Override
             public void onSensorChanged(SensorEvent event) {
                 mLastSensorData = event.values[0];
diff --git a/services/core/java/com/android/server/display/DisplayPowerController.java b/services/core/java/com/android/server/display/DisplayPowerController.java
index f1655f0..197842e 100644
--- a/services/core/java/com/android/server/display/DisplayPowerController.java
+++ b/services/core/java/com/android/server/display/DisplayPowerController.java
@@ -51,6 +51,7 @@
 import android.util.TimeUtils;
 import android.view.Display;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -102,7 +103,8 @@
     private static final boolean USE_COLOR_FADE_ON_ANIMATION = false;
 
     // The minimum reduction in brightness when dimmed.
-    private static final int SCREEN_DIM_MINIMUM_REDUCTION = 10;
+    private static final float SCREEN_DIM_MINIMUM_REDUCTION_FLOAT = 0.04f;
+    private static final float SCREEN_ANIMATION_RATE_MINIMUM = 0.0f;
 
     private static final int COLOR_FADE_ON_ANIMATION_DURATION_MILLIS = 250;
     private static final int COLOR_FADE_OFF_ANIMATION_DURATION_MILLIS = 400;
@@ -169,28 +171,27 @@
     private Sensor mProximitySensor;
 
     // The doze screen brightness.
-    private final int mScreenBrightnessDozeConfig;
+    private final float mScreenBrightnessDozeConfig;
 
     // The dim screen brightness.
-    private final int mScreenBrightnessDimConfig;
+    private final float mScreenBrightnessDimConfig;
 
     // The minimum allowed brightness.
-    private final int mScreenBrightnessRangeMinimum;
+    private final float mScreenBrightnessRangeMinimum;
 
     // The maximum allowed brightness.
-    private final int mScreenBrightnessRangeMaximum;
+    private final float mScreenBrightnessRangeMaximum;
 
-    // The default screen brightness.
-    private final int mScreenBrightnessDefault;
+    private final float mScreenBrightnessDefault;
 
     // The minimum allowed brightness while in VR.
-    private final int mScreenBrightnessForVrRangeMinimum;
+    private final float mScreenBrightnessForVrRangeMinimum;
 
     // The maximum allowed brightness while in VR.
-    private final int mScreenBrightnessForVrRangeMaximum;
+    private final float mScreenBrightnessForVrRangeMaximum;
 
     // The default screen brightness for VR.
-    private final int mScreenBrightnessForVrDefault;
+    private final float mScreenBrightnessForVrDefault;
 
     // True if auto-brightness should be used.
     private boolean mUseSoftwareAutoBrightnessConfig;
@@ -317,8 +318,9 @@
     private BrightnessReason mBrightnessReasonTemp = new BrightnessReason();
 
     // Brightness animation ramp rates in brightness units per second
-    private final int mBrightnessRampRateFast;
-    private final int mBrightnessRampRateSlow;
+    private final float mBrightnessRampRateSlow = 0.2352941f;
+    private final float mBrightnessRampRateFast = 0.7058823f;
+
 
     // Whether or not to skip the initial brightness ramps into STATE_ON.
     private final boolean mSkipScreenOnBrightnessRamp;
@@ -333,7 +335,7 @@
     private int mSkipRampState = RAMP_STATE_SKIP_NONE;
 
     // The first autobrightness value set when entering RAMP_STATE_SKIP_INITIAL.
-    private int mInitialAutoBrightness;
+    private float mInitialAutoBrightness;
 
     // The controller for the automatic brightness level.
     private AutomaticBrightnessController mAutomaticBrightnessController;
@@ -348,24 +350,24 @@
 
     // The last brightness that was set by the user and not temporary. Set to -1 when a brightness
     // has yet to be recorded.
-    private int mLastUserSetScreenBrightness;
+    private float mLastUserSetScreenBrightness;
 
     // The screen brightenss setting has changed but not taken effect yet. If this is different
     // from the current screen brightness setting then this is coming from something other than us
     // and should be considered a user interaction.
-    private int mPendingScreenBrightnessSetting;
+    private float mPendingScreenBrightnessSetting;
 
     // The last observed screen brightness setting, either set by us or by the settings app on
     // behalf of the user.
-    private int mCurrentScreenBrightnessSetting;
+    private float mCurrentScreenBrightnessSetting;
 
     // The temporary screen brightness. Typically set when a user is interacting with the
-    // brightness slider but hasn't settled on a choice yet. Set to -1 when there's no temporary
-    // brightness set.
-    private int mTemporaryScreenBrightness;
+    // brightness slider but hasn't settled on a choice yet. Set to
+    // PowerManager.BRIGHNTESS_INVALID_FLOAT when there's no temporary brightness set.
+    private float mTemporaryScreenBrightness;
 
     // The current screen brightness while in VR mode.
-    private int mScreenBrightnessForVr;
+    private float mScreenBrightnessForVr;
 
     // The last auto brightness adjustment that was set by the user and not temporary. Set to
     // Float.NaN when an auto-brightness adjustment hasn't been recorded yet.
@@ -384,6 +386,8 @@
     private ObjectAnimator mColorFadeOffAnimator;
     private RampAnimator<DisplayPowerState> mScreenBrightnessRampAnimator;
 
+    private BrightnessSynchronizer mBrightnessSynchronizer;
+
     /**
      * Creates the display power controller.
      */
@@ -394,37 +398,39 @@
         mBrightnessTracker = new BrightnessTracker(context, null);
         mSettingsObserver = new SettingsObserver(mHandler);
         mCallbacks = callbacks;
-
+        mBrightnessSynchronizer = new BrightnessSynchronizer(context);
         mBatteryStats = BatteryStatsService.getService();
         mSensorManager = sensorManager;
         mWindowManagerPolicy = LocalServices.getService(WindowManagerPolicy.class);
         mBlanker = blanker;
         mContext = context;
 
+        PowerManager pm =  context.getSystemService(PowerManager.class);
         final Resources resources = context.getResources();
-        final int screenBrightnessSettingMinimum = clampAbsoluteBrightness(resources.getInteger(
-                com.android.internal.R.integer.config_screenBrightnessSettingMinimum));
+        final float screenBrightnessSettingMinimumFloat = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM));
 
-        mScreenBrightnessDozeConfig = clampAbsoluteBrightness(resources.getInteger(
-                com.android.internal.R.integer.config_screenBrightnessDoze));
+        // DOZE AND DIM SETTINGS
+        mScreenBrightnessDozeConfig = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DOZE));
+        mScreenBrightnessDimConfig = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DIM));
 
-        mScreenBrightnessDimConfig = clampAbsoluteBrightness(resources.getInteger(
-                com.android.internal.R.integer.config_screenBrightnessDim));
-
+        // NORMAL SCREEN SETTINGS
         mScreenBrightnessRangeMinimum =
-                Math.min(screenBrightnessSettingMinimum, mScreenBrightnessDimConfig);
+                Math.min(screenBrightnessSettingMinimumFloat, mScreenBrightnessDimConfig);
+        mScreenBrightnessRangeMaximum = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM));
+        mScreenBrightnessDefault = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT));
 
-        mScreenBrightnessRangeMaximum = clampAbsoluteBrightness(resources.getInteger(
-                    com.android.internal.R.integer.config_screenBrightnessSettingMaximum));
-        mScreenBrightnessDefault = clampAbsoluteBrightness(resources.getInteger(
-                    com.android.internal.R.integer.config_screenBrightnessSettingDefault));
-
-        mScreenBrightnessForVrRangeMinimum = clampAbsoluteBrightness(resources.getInteger(
-                    com.android.internal.R.integer.config_screenBrightnessForVrSettingMinimum));
-        mScreenBrightnessForVrRangeMaximum = clampAbsoluteBrightness(resources.getInteger(
-                    com.android.internal.R.integer.config_screenBrightnessForVrSettingMaximum));
-        mScreenBrightnessForVrDefault = clampAbsoluteBrightness(resources.getInteger(
-                    com.android.internal.R.integer.config_screenBrightnessForVrSettingDefault));
+        // VR SETTINGS
+        mScreenBrightnessForVrDefault = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR));
+        mScreenBrightnessForVrRangeMaximum = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR));
+        mScreenBrightnessForVrRangeMinimum = clampAbsoluteBrightness(
+                pm.getBrightnessConstraint(PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR));
 
         mUseSoftwareAutoBrightnessConfig = resources.getBoolean(
                 com.android.internal.R.bool.config_automatic_brightness_available);
@@ -432,10 +438,6 @@
         mAllowAutoBrightnessWhileDozingConfig = resources.getBoolean(
                 com.android.internal.R.bool.config_allowAutoBrightnessWhileDozing);
 
-        mBrightnessRampRateFast = resources.getInteger(
-                com.android.internal.R.integer.config_brightness_ramp_rate_fast);
-        mBrightnessRampRateSlow = resources.getInteger(
-                com.android.internal.R.integer.config_brightness_ramp_rate_slow);
         mSkipScreenOnBrightnessRamp = resources.getBoolean(
                 com.android.internal.R.bool.config_skipScreenOnBrightnessRamp);
 
@@ -496,7 +498,7 @@
                         mScreenBrightnessRangeMaximum, dozeScaleFactor, lightSensorRate,
                         initialLightSensorRate, brighteningLightDebounce, darkeningLightDebounce,
                         autoBrightnessResetAmbientLuxAfterWarmUp, ambientBrightnessThresholds,
-                        screenBrightnessThresholds, context.getPackageManager());
+                        screenBrightnessThresholds, context);
             } else {
                 mUseSoftwareAutoBrightnessConfig = false;
             }
@@ -519,14 +521,13 @@
                         TYPICAL_PROXIMITY_THRESHOLD);
             }
         }
-
         mCurrentScreenBrightnessSetting = getScreenBrightnessSetting();
         mScreenBrightnessForVr = getScreenBrightnessForVrSetting();
         mAutoBrightnessAdjustment = getAutoBrightnessAdjustmentSetting();
-        mTemporaryScreenBrightness = -1;
-        mPendingScreenBrightnessSetting = -1;
-        mTemporaryAutoBrightnessAdjustment = Float.NaN;
-        mPendingAutoBrightnessAdjustment = Float.NaN;
+        mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        mTemporaryAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        mPendingAutoBrightnessAdjustment = PowerManager.BRIGHTNESS_INVALID_FLOAT;
 
         DisplayWhiteBalanceSettings displayWhiteBalanceSettings = null;
         DisplayWhiteBalanceController displayWhiteBalanceController = null;
@@ -681,28 +682,28 @@
         }
 
         mScreenBrightnessRampAnimator = new RampAnimator<DisplayPowerState>(
-                mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS);
+                mPowerState, DisplayPowerState.SCREEN_BRIGHTNESS_FLOAT);
         mScreenBrightnessRampAnimator.setListener(mRampAnimatorListener);
 
         // Initialize screen state for battery stats.
         try {
             mBatteryStats.noteScreenState(mPowerState.getScreenState());
-            mBatteryStats.noteScreenBrightness(mPowerState.getScreenBrightness());
+            mBatteryStats.noteScreenBrightness(BrightnessSynchronizer.brightnessFloatToInt(mContext,
+                    mPowerState.getScreenBrightness()));
         } catch (RemoteException ex) {
             // same process
         }
-
         // Initialize all of the brightness tracking state
-        final float brightness = convertToNits(mPowerState.getScreenBrightness());
+        final float brightness = convertToNits(BrightnessSynchronizer.brightnessFloatToInt(mContext,
+                mPowerState.getScreenBrightness()));
         if (brightness >= 0.0f) {
             mBrightnessTracker.start(brightness);
         }
-
         mContext.getContentResolver().registerContentObserver(
-                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS),
+                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FLOAT),
                 false /*notifyForDescendants*/, mSettingsObserver, UserHandle.USER_ALL);
         mContext.getContentResolver().registerContentObserver(
-                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FOR_VR),
+                Settings.System.getUriFor(Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT),
                 false /*notifyForDescendants*/, mSettingsObserver, UserHandle.USER_ALL);
         mContext.getContentResolver().registerContentObserver(
                 Settings.System.getUriFor(Settings.System.SCREEN_AUTO_BRIGHTNESS_ADJ),
@@ -776,8 +777,9 @@
 
         // Compute the basic display state using the policy.
         // We might override this below based on other factors.
+        // Initialise brightness as invalid.
         int state;
-        int brightness = PowerManager.BRIGHTNESS_DEFAULT;
+        float brightnessState = PowerManager.BRIGHTNESS_INVALID_FLOAT;
         boolean performScreenOffTransition = false;
         switch (mPowerRequest.policy) {
             case DisplayPowerRequest.POLICY_OFF:
@@ -791,7 +793,7 @@
                     state = Display.STATE_DOZE;
                 }
                 if (!mAllowAutoBrightnessWhileDozingConfig) {
-                    brightness = mPowerRequest.dozeScreenBrightness;
+                    brightnessState = mPowerRequest.dozeScreenBrightness;
                     mBrightnessReasonTemp.setReason(BrightnessReason.REASON_DOZE);
                 }
                 break;
@@ -843,20 +845,20 @@
         animateScreenStateChange(state, performScreenOffTransition);
         state = mPowerState.getScreenState();
 
-        // Use zero brightness when screen is off.
         if (state == Display.STATE_OFF) {
-            brightness = PowerManager.BRIGHTNESS_OFF;
+            brightnessState = PowerManager.BRIGHTNESS_OFF_FLOAT;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_SCREEN_OFF);
         }
 
         // Always use the VR brightness when in the VR state.
         if (state == Display.STATE_VR) {
-            brightness = mScreenBrightnessForVr;
+            brightnessState = mScreenBrightnessForVr;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_VR);
         }
 
-        if (brightness < 0 && mPowerRequest.screenBrightnessOverride > 0) {
-            brightness = mPowerRequest.screenBrightnessOverride;
+        if ((Float.isNaN(brightnessState))
+                && isValidBrightnessValue(mPowerRequest.screenBrightnessOverride)) {
+            brightnessState = mPowerRequest.screenBrightnessOverride;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_OVERRIDE);
             mAppliedScreenBrightnessOverride = true;
         } else {
@@ -867,15 +869,15 @@
                 mAllowAutoBrightnessWhileDozingConfig && Display.isDozeState(state);
         final boolean autoBrightnessEnabled = mPowerRequest.useAutoBrightness
                     && (state == Display.STATE_ON || autoBrightnessEnabledInDoze)
-                    && brightness < 0
+                    && Float.isNaN(brightnessState)
                     && mAutomaticBrightnessController != null;
 
         final boolean userSetBrightnessChanged = updateUserSetScreenBrightness();
 
         // Use the temporary screen brightness if there isn't an override, either from
         // WindowManager or based on the display state.
-        if (mTemporaryScreenBrightness > 0) {
-            brightness = mTemporaryScreenBrightness;
+        if (isValidBrightnessValue(mTemporaryScreenBrightness)) {
+            brightnessState = mTemporaryScreenBrightness;
             mAppliedTemporaryBrightness = true;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_TEMPORARY);
         } else {
@@ -898,14 +900,13 @@
             brightnessAdjustmentFlags = BrightnessReason.ADJUSTMENT_AUTO;
             mAppliedTemporaryAutoBrightnessAdjustment = false;
         }
-
         // Apply brightness boost.
         // We do this here after deciding whether auto-brightness is enabled so that we don't
         // disable the light sensor during this temporary state.  That way when boost ends we will
         // be able to resume normal auto-brightness behavior without any delay.
         if (mPowerRequest.boostScreenBrightness
-                && brightness != PowerManager.BRIGHTNESS_OFF) {
-            brightness = PowerManager.BRIGHTNESS_ON;
+                && brightnessState != PowerManager.BRIGHTNESS_OFF_FLOAT) {
+            brightnessState = PowerManager.BRIGHTNESS_MAX;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_BOOST);
             mAppliedBrightnessBoost = true;
         } else {
@@ -914,16 +915,15 @@
 
         // If the brightness is already set then it's been overridden by something other than the
         // user, or is a temporary adjustment.
-        boolean userInitiatedChange = brightness < 0
+        boolean userInitiatedChange = (Float.isNaN(brightnessState))
                 && (autoBrightnessAdjustmentChanged || userSetBrightnessChanged);
-
         boolean hadUserBrightnessPoint = false;
         // Configure auto-brightness.
         if (mAutomaticBrightnessController != null) {
             hadUserBrightnessPoint = mAutomaticBrightnessController.hasUserDataPoints();
             mAutomaticBrightnessController.configure(autoBrightnessEnabled,
                     mBrightnessConfiguration,
-                    mLastUserSetScreenBrightness / (float) PowerManager.BRIGHTNESS_ON,
+                    mLastUserSetScreenBrightness,
                     userSetBrightnessChanged, autoBrightnessAdjustment,
                     autoBrightnessAdjustmentChanged, mPowerRequest.policy);
         }
@@ -934,17 +934,18 @@
 
         // Apply auto-brightness.
         boolean slowChange = false;
-        if (brightness < 0) {
+        if (Float.isNaN(brightnessState)) {
             float newAutoBrightnessAdjustment = autoBrightnessAdjustment;
             if (autoBrightnessEnabled) {
-                brightness = mAutomaticBrightnessController.getAutomaticScreenBrightness();
+                brightnessState = BrightnessSynchronizer.brightnessIntToFloat(
+                mContext, mAutomaticBrightnessController.getAutomaticScreenBrightness());
                 newAutoBrightnessAdjustment =
                         mAutomaticBrightnessController.getAutomaticScreenBrightnessAdjustment();
             }
-
-            if (brightness >= 0) {
+            if (isValidBrightnessValue(brightnessState)
+                    || brightnessState == PowerManager.BRIGHTNESS_OFF_FLOAT) {
                 // Use current auto-brightness value and slowly adjust to changes.
-                brightness = clampScreenBrightness(brightness);
+                brightnessState = clampScreenBrightness(brightnessState);
                 if (mAppliedAutoBrightness && !autoBrightnessAdjustmentChanged) {
                     slowChange = true; // slowly adapt to auto-brightness
                 }
@@ -952,7 +953,7 @@
                 // before applying the low power or dim transformations so that the slider
                 // accurately represents the full possible range, even if they range changes what
                 // it means in absolute terms.
-                putScreenBrightnessSetting(brightness);
+                putScreenBrightnessSetting(brightnessState);
                 mAppliedAutoBrightness = true;
                 mBrightnessReasonTemp.setReason(BrightnessReason.REASON_AUTOMATIC);
             } else {
@@ -970,24 +971,25 @@
             mAppliedAutoBrightness = false;
             brightnessAdjustmentFlags = 0;
         }
-
         // Use default brightness when dozing unless overridden.
-        if (brightness < 0 && Display.isDozeState(state)) {
-            brightness = mScreenBrightnessDozeConfig;
+        if ((Float.isNaN(brightnessState))
+                && Display.isDozeState(state)) {
+            brightnessState = mScreenBrightnessDozeConfig;
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_DOZE_DEFAULT);
         }
 
         // Apply manual brightness.
-        if (brightness < 0) {
-            brightness = clampScreenBrightness(mCurrentScreenBrightnessSetting);
+        if (Float.isNaN(brightnessState)) {
+            brightnessState = clampScreenBrightness(mCurrentScreenBrightnessSetting);
             mBrightnessReasonTemp.setReason(BrightnessReason.REASON_MANUAL);
         }
 
         // Apply dimming by at least some minimum amount when user activity
         // timeout is about to expire.
         if (mPowerRequest.policy == DisplayPowerRequest.POLICY_DIM) {
-            if (brightness > mScreenBrightnessRangeMinimum) {
-                brightness = Math.max(Math.min(brightness - SCREEN_DIM_MINIMUM_REDUCTION,
+            if (brightnessState > mScreenBrightnessRangeMinimum) {
+                brightnessState = Math.max(Math.min(brightnessState
+                                - SCREEN_DIM_MINIMUM_REDUCTION_FLOAT,
                         mScreenBrightnessDimConfig), mScreenBrightnessRangeMinimum);
                 mBrightnessReasonTemp.addModifier(BrightnessReason.MODIFIER_DIMMED);
             }
@@ -999,15 +1001,15 @@
             slowChange = false;
             mAppliedDimming = false;
         }
-
         // If low power mode is enabled, scale brightness by screenLowPowerBrightnessFactor
         // as long as it is above the minimum threshold.
         if (mPowerRequest.lowPowerMode) {
-            if (brightness > mScreenBrightnessRangeMinimum) {
+            if (brightnessState > mScreenBrightnessRangeMinimum) {
                 final float brightnessFactor =
                         Math.min(mPowerRequest.screenLowPowerBrightnessFactor, 1);
-                final int lowPowerBrightness = (int) (brightness * brightnessFactor);
-                brightness = Math.max(lowPowerBrightness, mScreenBrightnessRangeMinimum);
+                final float lowPowerBrightnessFloat = (brightnessState * brightnessFactor);
+                brightnessState = Math.max(lowPowerBrightnessFloat,
+                        mScreenBrightnessRangeMinimum);
                 mBrightnessReasonTemp.addModifier(BrightnessReason.MODIFIER_LOW_POWER);
             }
             if (!mAppliedLowPower) {
@@ -1025,11 +1027,12 @@
             if (mSkipScreenOnBrightnessRamp) {
                 if (state == Display.STATE_ON) {
                     if (mSkipRampState == RAMP_STATE_SKIP_NONE && mDozing) {
-                        mInitialAutoBrightness = brightness;
+                        mInitialAutoBrightness = brightnessState;
                         mSkipRampState = RAMP_STATE_SKIP_INITIAL;
                     } else if (mSkipRampState == RAMP_STATE_SKIP_INITIAL
                             && mUseSoftwareAutoBrightnessConfig
-                            && brightness != mInitialAutoBrightness) {
+                            && !BrightnessSynchronizer.floatEquals(brightnessState,
+                            mInitialAutoBrightness)) {
                         mSkipRampState = RAMP_STATE_SKIP_AUTOBRIGHT;
                     } else if (mSkipRampState == RAMP_STATE_SKIP_AUTOBRIGHT) {
                         mSkipRampState = RAMP_STATE_SKIP_NONE;
@@ -1056,9 +1059,9 @@
                     mAppliedTemporaryBrightness || mAppliedTemporaryAutoBrightnessAdjustment;
             if (initialRampSkip || hasBrightnessBuckets
                     || wasOrWillBeInVr || !isDisplayContentVisible || brightnessIsTemporary) {
-                animateScreenBrightness(brightness, 0);
+                animateScreenBrightness(brightnessState, SCREEN_ANIMATION_RATE_MINIMUM);
             } else {
-                animateScreenBrightness(brightness,
+                animateScreenBrightness(brightnessState,
                         slowChange ? mBrightnessRampRateSlow : mBrightnessRampRateFast);
             }
 
@@ -1069,14 +1072,16 @@
                     // slider event so notify as if the system changed the brightness.
                     userInitiatedChange = false;
                 }
-                notifyBrightnessChanged(brightness, userInitiatedChange, hadUserBrightnessPoint);
+                notifyBrightnessChanged(
+                        BrightnessSynchronizer.brightnessFloatToInt(mContext, brightnessState),
+                        userInitiatedChange, hadUserBrightnessPoint);
             }
 
         }
 
         // Log any changes to what is currently driving the brightness setting.
         if (!mBrightnessReasonTemp.equals(mBrightnessReason) || brightnessAdjustmentFlags != 0) {
-            Slog.v(TAG, "Brightness [" + brightness + "] reason changing to: '"
+            Slog.v(TAG, "Brightness [" + brightnessState + "] reason changing to: '"
                     + mBrightnessReasonTemp.toString(brightnessAdjustmentFlags)
                     + "', previous reason: '" + mBrightnessReason + "'.");
             mBrightnessReason.set(mBrightnessReasonTemp);
@@ -1161,9 +1166,9 @@
         msg.sendToTarget();
     }
 
-    public void setTemporaryBrightness(int brightness) {
+    public void setTemporaryBrightness(float brightness) {
         Message msg = mHandler.obtainMessage(MSG_SET_TEMPORARY_BRIGHTNESS,
-                brightness, 0 /*unused*/);
+                Float.floatToIntBits(brightness), 0 /*unused*/);
         msg.sendToTarget();
     }
 
@@ -1282,24 +1287,38 @@
         mReportedScreenStateToPolicy = state;
     }
 
-    private int clampScreenBrightnessForVr(int value) {
+    private float clampScreenBrightnessForVr(float value) {
         return MathUtils.constrain(
-                value, mScreenBrightnessForVrRangeMinimum, mScreenBrightnessForVrRangeMaximum);
+                value, mScreenBrightnessForVrRangeMinimum,
+                mScreenBrightnessForVrRangeMaximum);
     }
 
-    private int clampScreenBrightness(int value) {
+    private float clampScreenBrightness(float value) {
+        if (Float.isNaN(value)) {
+            return mScreenBrightnessRangeMinimum;
+        }
         return MathUtils.constrain(
                 value, mScreenBrightnessRangeMinimum, mScreenBrightnessRangeMaximum);
     }
 
-    private void animateScreenBrightness(int target, int rate) {
+    // Checks whether the brightness is within the valid brightness range, not including the off or
+    // invalid states.
+    private boolean isValidBrightnessValue(float brightnessState) {
+        return brightnessState >= mScreenBrightnessRangeMinimum
+                && brightnessState <= mScreenBrightnessRangeMaximum;
+    }
+
+    private void animateScreenBrightness(float target, float rate) {
         if (DEBUG) {
             Slog.d(TAG, "Animating brightness: target=" + target +", rate=" + rate);
         }
         if (mScreenBrightnessRampAnimator.animateTo(target, rate)) {
-            Trace.traceCounter(Trace.TRACE_TAG_POWER, "TargetScreenBrightness", target);
+            Trace.traceCounter(Trace.TRACE_TAG_POWER, "TargetScreenBrightness", (int) target);
             try {
-                mBatteryStats.noteScreenBrightness(target);
+                // TODO(brightnessfloat): change BatteryStats to use float
+                mBatteryStats.noteScreenBrightness(
+                        BrightnessSynchronizer.brightnessFloatToInt(
+                        mContext, target));
             } catch (RemoteException ex) {
                 // same process
             }
@@ -1578,6 +1597,7 @@
 
     private void handleSettingsChange(boolean userSwitch) {
         mPendingScreenBrightnessSetting = getScreenBrightnessSetting();
+
         if (userSwitch) {
             // Don't treat user switches as user initiated change.
             mCurrentScreenBrightnessSetting = mPendingScreenBrightnessSetting;
@@ -1598,24 +1618,24 @@
         return Float.isNaN(adj) ? 0.0f : clampAutoBrightnessAdjustment(adj);
     }
 
-    private int getScreenBrightnessSetting() {
-        final int brightness = Settings.System.getIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, mScreenBrightnessDefault,
+    private float getScreenBrightnessSetting() {
+        final float brightness = Settings.System.getFloatForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_FLOAT, mScreenBrightnessDefault,
                 UserHandle.USER_CURRENT);
         return clampAbsoluteBrightness(brightness);
     }
 
-    private int getScreenBrightnessForVrSetting() {
-        final int brightness = Settings.System.getIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS_FOR_VR, mScreenBrightnessForVrDefault,
+    private float getScreenBrightnessForVrSetting() {
+        final float brightnessFloat = Settings.System.getFloatForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_FOR_VR_FLOAT, mScreenBrightnessForVrDefault,
                 UserHandle.USER_CURRENT);
-        return clampScreenBrightnessForVr(brightness);
+        return clampScreenBrightnessForVr(brightnessFloat);
     }
 
-    private void putScreenBrightnessSetting(int brightness) {
-        mCurrentScreenBrightnessSetting = brightness;
-        Settings.System.putIntForUser(mContext.getContentResolver(),
-                Settings.System.SCREEN_BRIGHTNESS, brightness, UserHandle.USER_CURRENT);
+    private void putScreenBrightnessSetting(float brightnessValue) {
+        mCurrentScreenBrightnessSetting = brightnessValue;
+        Settings.System.putFloatForUser(mContext.getContentResolver(),
+                Settings.System.SCREEN_BRIGHTNESS_FLOAT, brightnessValue, UserHandle.USER_CURRENT);
     }
 
     private void putAutoBrightnessAdjustmentSetting(float adjustment) {
@@ -1638,18 +1658,19 @@
     }
 
     private boolean updateUserSetScreenBrightness() {
-        if (mPendingScreenBrightnessSetting < 0) {
+        if ((Float.isNaN(mPendingScreenBrightnessSetting)
+                || mPendingScreenBrightnessSetting < 0.0f)) {
             return false;
         }
         if (mCurrentScreenBrightnessSetting == mPendingScreenBrightnessSetting) {
-            mPendingScreenBrightnessSetting = -1;
-            mTemporaryScreenBrightness = -1;
+            mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+            mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
             return false;
         }
         mCurrentScreenBrightnessSetting = mPendingScreenBrightnessSetting;
         mLastUserSetScreenBrightness = mPendingScreenBrightnessSetting;
-        mPendingScreenBrightnessSetting = -1;
-        mTemporaryScreenBrightness = -1;
+        mPendingScreenBrightnessSetting = PowerManager.BRIGHTNESS_INVALID_FLOAT;
+        mTemporaryScreenBrightness = PowerManager.BRIGHTNESS_INVALID_FLOAT;
         return true;
     }
 
@@ -1728,8 +1749,6 @@
         pw.println("Display Power Controller Configuration:");
         pw.println("  mScreenBrightnessDozeConfig=" + mScreenBrightnessDozeConfig);
         pw.println("  mScreenBrightnessDimConfig=" + mScreenBrightnessDimConfig);
-        pw.println("  mScreenBrightnessRangeMinimum=" + mScreenBrightnessRangeMinimum);
-        pw.println("  mScreenBrightnessRangeMaximum=" + mScreenBrightnessRangeMaximum);
         pw.println("  mScreenBrightnessDefault=" + mScreenBrightnessDefault);
         pw.println("  mScreenBrightnessForVrRangeMinimum=" + mScreenBrightnessForVrRangeMinimum);
         pw.println("  mScreenBrightnessForVrRangeMaximum=" + mScreenBrightnessForVrRangeMaximum);
@@ -1737,8 +1756,6 @@
         pw.println("  mUseSoftwareAutoBrightnessConfig=" + mUseSoftwareAutoBrightnessConfig);
         pw.println("  mAllowAutoBrightnessWhileDozingConfig=" +
                 mAllowAutoBrightnessWhileDozingConfig);
-        pw.println("  mBrightnessRampRateFast=" + mBrightnessRampRateFast);
-        pw.println("  mBrightnessRampRateSlow=" + mBrightnessRampRateSlow);
         pw.println("  mSkipScreenOnBrightnessRamp=" + mSkipScreenOnBrightnessRamp);
         pw.println("  mColorFadeFadesConfig=" + mColorFadeFadesConfig);
         pw.println("  mColorFadeEnabled=" + mColorFadeEnabled);
@@ -1767,15 +1784,15 @@
         pw.println("  mPendingProximityDebounceTime="
                 + TimeUtils.formatUptime(mPendingProximityDebounceTime));
         pw.println("  mScreenOffBecauseOfProximity=" + mScreenOffBecauseOfProximity);
-        pw.println("  mLastUserSetScreenBrightness=" + mLastUserSetScreenBrightness);
-        pw.println("  mCurrentScreenBrightnessSetting=" + mCurrentScreenBrightnessSetting);
-        pw.println("  mPendingScreenBrightnessSetting=" + mPendingScreenBrightnessSetting);
-        pw.println("  mTemporaryScreenBrightness=" + mTemporaryScreenBrightness);
+        pw.println("  mLastUserSetScreenBrightnessFloat=" + mLastUserSetScreenBrightness);
+        pw.println("  mPendingScreenBrightnessSettingFloat="
+                + mPendingScreenBrightnessSetting);
+        pw.println("  mTemporaryScreenBrightnessFloat=" + mTemporaryScreenBrightness);
         pw.println("  mAutoBrightnessAdjustment=" + mAutoBrightnessAdjustment);
         pw.println("  mBrightnessReason=" + mBrightnessReason);
         pw.println("  mTemporaryAutoBrightnessAdjustment=" + mTemporaryAutoBrightnessAdjustment);
         pw.println("  mPendingAutoBrightnessAdjustment=" + mPendingAutoBrightnessAdjustment);
-        pw.println("  mScreenBrightnessForVr=" + mScreenBrightnessForVr);
+        pw.println("  mScreenBrightnessForVrFloat=" + mScreenBrightnessForVr);
         pw.println("  mAppliedAutoBrightness=" + mAppliedAutoBrightness);
         pw.println("  mAppliedDimming=" + mAppliedDimming);
         pw.println("  mAppliedLowPower=" + mAppliedLowPower);
@@ -1783,7 +1800,6 @@
         pw.println("  mAppliedTemporaryBrightness=" + mAppliedTemporaryBrightness);
         pw.println("  mDozing=" + mDozing);
         pw.println("  mSkipRampState=" + skipRampStateToString(mSkipRampState));
-        pw.println("  mInitialAutoBrightness=" + mInitialAutoBrightness);
         pw.println("  mScreenOnBlockStartRealTime=" + mScreenOnBlockStartRealTime);
         pw.println("  mScreenOffBlockStartRealTime=" + mScreenOffBlockStartRealTime);
         pw.println("  mPendingScreenOnUnblocker=" + mPendingScreenOnUnblocker);
@@ -1869,6 +1885,11 @@
         return MathUtils.constrain(value, PowerManager.BRIGHTNESS_OFF, PowerManager.BRIGHTNESS_ON);
     }
 
+    private static float clampAbsoluteBrightness(float value) {
+        return MathUtils.constrain(value, PowerManager.BRIGHTNESS_MIN,
+                PowerManager.BRIGHTNESS_MAX);
+    }
+
     private static float clampAutoBrightnessAdjustment(float value) {
         return MathUtils.constrain(value, -1.0f, 1.0f);
     }
@@ -1908,7 +1929,7 @@
 
                 case MSG_SET_TEMPORARY_BRIGHTNESS:
                     // TODO: Should we have a a timeout for the temporary brightness?
-                    mTemporaryScreenBrightness = msg.arg1;
+                    mTemporaryScreenBrightness = Float.intBitsToFloat(msg.arg1);
                     updatePowerState();
                     break;
 
diff --git a/services/core/java/com/android/server/display/DisplayPowerState.java b/services/core/java/com/android/server/display/DisplayPowerState.java
index 763f56f..24e1b4e 100644
--- a/services/core/java/com/android/server/display/DisplayPowerState.java
+++ b/services/core/java/com/android/server/display/DisplayPowerState.java
@@ -22,11 +22,12 @@
 import android.os.PowerManager;
 import android.os.Trace;
 import android.util.FloatProperty;
-import android.util.IntProperty;
 import android.util.Slog;
 import android.view.Choreographer;
 import android.view.Display;
 
+import com.android.internal.BrightnessSynchronizer;
+
 import java.io.PrintWriter;
 
 /**
@@ -59,7 +60,7 @@
     private final PhotonicModulator mPhotonicModulator;
 
     private int mScreenState;
-    private int mScreenBrightness;
+    private float mScreenBrightness;
     private boolean mScreenReady;
     private boolean mScreenUpdatePending;
 
@@ -85,7 +86,7 @@
         // will reset the brightness to a new level immediately before the changes
         // actually have a chance to be applied.
         mScreenState = Display.STATE_ON;
-        mScreenBrightness = PowerManager.BRIGHTNESS_ON;
+        mScreenBrightness = PowerManager.BRIGHTNESS_MAX;
         scheduleScreenUpdate();
 
         mColorFadePrepared = false;
@@ -106,18 +107,19 @@
         }
     };
 
-    public static final IntProperty<DisplayPowerState> SCREEN_BRIGHTNESS =
-            new IntProperty<DisplayPowerState>("screenBrightness") {
-        @Override
-        public void setValue(DisplayPowerState object, int value) {
-            object.setScreenBrightness(value);
-        }
 
-        @Override
-        public Integer get(DisplayPowerState object) {
-            return object.getScreenBrightness();
-        }
-    };
+    public static final FloatProperty<DisplayPowerState> SCREEN_BRIGHTNESS_FLOAT =
+            new FloatProperty<DisplayPowerState>("screenBrightnessFloat") {
+                @Override
+                public void setValue(DisplayPowerState object, float value) {
+                    object.setScreenBrightness(value);
+                }
+
+                @Override
+                public Float get(DisplayPowerState object) {
+                    return object.getScreenBrightness();
+                }
+            };
 
     /**
      * Sets whether the screen is on, off, or dozing.
@@ -146,7 +148,7 @@
      *
      * @param brightness The brightness, ranges from 0 (minimum / off) to 255 (brightest).
      */
-    public void setScreenBrightness(int brightness) {
+    public void setScreenBrightness(float brightness) {
         if (mScreenBrightness != brightness) {
             if (DEBUG) {
                 Slog.d(TAG, "setScreenBrightness: brightness=" + brightness);
@@ -163,7 +165,7 @@
     /**
      * Gets the screen brightness.
      */
-    public int getScreenBrightness() {
+    public float getScreenBrightness() {
         return mScreenBrightness;
     }
 
@@ -308,9 +310,9 @@
         public void run() {
             mScreenUpdatePending = false;
 
-            int brightness = mScreenState != Display.STATE_OFF
-                    && mColorFadeLevel > 0f ? mScreenBrightness : 0;
-            if (mPhotonicModulator.setState(mScreenState, brightness)) {
+            float brightnessState = mScreenState != Display.STATE_OFF
+                    && mColorFadeLevel > 0f ? mScreenBrightness : PowerManager.BRIGHTNESS_OFF_FLOAT;
+            if (mPhotonicModulator.setState(mScreenState, brightnessState)) {
                 if (DEBUG) {
                     Slog.d(TAG, "Screen ready");
                 }
@@ -345,14 +347,14 @@
      */
     private final class PhotonicModulator extends Thread {
         private static final int INITIAL_SCREEN_STATE = Display.STATE_OFF; // unknown, assume off
-        private static final int INITIAL_BACKLIGHT = -1; // unknown
+        private static final float INITIAL_BACKLIGHT_FLOAT = PowerManager.BRIGHTNESS_INVALID_FLOAT;
 
         private final Object mLock = new Object();
 
         private int mPendingState = INITIAL_SCREEN_STATE;
-        private int mPendingBacklight = INITIAL_BACKLIGHT;
+        private float mPendingBacklight = INITIAL_BACKLIGHT_FLOAT;
         private int mActualState = INITIAL_SCREEN_STATE;
-        private int mActualBacklight = INITIAL_BACKLIGHT;
+        private float mActualBacklight = INITIAL_BACKLIGHT_FLOAT;
         private boolean mStateChangeInProgress;
         private boolean mBacklightChangeInProgress;
 
@@ -360,19 +362,19 @@
             super("PhotonicModulator");
         }
 
-        public boolean setState(int state, int backlight) {
+        public boolean setState(int state, float brightnessState) {
             synchronized (mLock) {
                 boolean stateChanged = state != mPendingState;
-                boolean backlightChanged = backlight != mPendingBacklight;
+                boolean backlightChanged = !BrightnessSynchronizer.floatEquals(
+                        brightnessState, mPendingBacklight);
                 if (stateChanged || backlightChanged) {
                     if (DEBUG) {
                         Slog.d(TAG, "Requesting new screen state: state="
-                                + Display.stateToString(state) + ", backlight=" + backlight);
+                                + Display.stateToString(state) + ", backlight=" + brightnessState);
                     }
 
                     mPendingState = state;
-                    mPendingBacklight = backlight;
-
+                    mPendingBacklight = brightnessState;
                     boolean changeInProgress = mStateChangeInProgress || mBacklightChangeInProgress;
                     mStateChangeInProgress = stateChanged || mStateChangeInProgress;
                     mBacklightChangeInProgress = backlightChanged || mBacklightChangeInProgress;
@@ -404,13 +406,14 @@
                 // Get pending change.
                 final int state;
                 final boolean stateChanged;
-                final int backlight;
+                final float brightnessState;
                 final boolean backlightChanged;
                 synchronized (mLock) {
                     state = mPendingState;
                     stateChanged = (state != mActualState);
-                    backlight = mPendingBacklight;
-                    backlightChanged = (backlight != mActualBacklight);
+                    brightnessState = mPendingBacklight;
+                    backlightChanged = !BrightnessSynchronizer.floatEquals(
+                            brightnessState, mActualBacklight);
                     if (!stateChanged) {
                         // State changed applied, notify outer class.
                         postScreenUpdateThreadSafe();
@@ -426,15 +429,15 @@
                         continue;
                     }
                     mActualState = state;
-                    mActualBacklight = backlight;
+                    mActualBacklight = brightnessState;
                 }
 
                 // Apply pending change.
                 if (DEBUG) {
                     Slog.d(TAG, "Updating screen state: state="
-                            + Display.stateToString(state) + ", backlight=" + backlight);
+                            + Display.stateToString(state) + ", backlight=" + brightnessState);
                 }
-                mBlanker.requestDisplayState(state, backlight);
+                mBlanker.requestDisplayState(state, brightnessState);
             }
         }
     }
diff --git a/services/core/java/com/android/server/display/LocalDisplayAdapter.java b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
index 7e8fe3a..2b225e5 100644
--- a/services/core/java/com/android/server/display/LocalDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/LocalDisplayAdapter.java
@@ -38,6 +38,7 @@
 import android.view.Surface;
 import android.view.SurfaceControl;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.LocalServices;
@@ -49,6 +50,7 @@
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
+import java.util.Objects;
 
 /**
  * A display adapter for the local displays managed by Surface Flinger.
@@ -64,8 +66,9 @@
 
     private static final String PROPERTY_EMULATOR_CIRCULAR = "ro.emulator.circular";
 
-    private final LongSparseArray<LocalDisplayDevice> mDevices =
-            new LongSparseArray<LocalDisplayDevice>();
+    private static final int NO_DISPLAY_MODE_ID = 0;
+
+    private final LongSparseArray<LocalDisplayDevice> mDevices = new LongSparseArray<>();
 
     @SuppressWarnings("unused")  // Becomes active at instantiation time.
     private PhysicalDisplayEventReceiver mPhysicalDisplayEventReceiver;
@@ -91,8 +94,12 @@
     private void tryConnectDisplayLocked(long physicalDisplayId) {
         final IBinder displayToken = SurfaceControl.getPhysicalDisplayToken(physicalDisplayId);
         if (displayToken != null) {
-            SurfaceControl.PhysicalDisplayInfo[] configs =
-                    SurfaceControl.getDisplayConfigs(displayToken);
+            SurfaceControl.DisplayInfo info = SurfaceControl.getDisplayInfo(displayToken);
+            if (info == null) {
+                Slog.w(TAG, "No valid info found for display device " + physicalDisplayId);
+                return;
+            }
+            SurfaceControl.DisplayConfig[] configs = SurfaceControl.getDisplayConfigs(displayToken);
             if (configs == null) {
                 // There are no valid configs for this device, so we can't use it
                 Slog.w(TAG, "No valid configs found for display device " + physicalDisplayId);
@@ -114,21 +121,22 @@
                         physicalDisplayId);
                 activeColorMode = Display.COLOR_MODE_INVALID;
             }
-            int[] colorModes = SurfaceControl.getDisplayColorModes(displayToken);
-            SurfaceControl.DesiredDisplayConfigSpecs desiredDisplayConfigSpecs =
+            SurfaceControl.DesiredDisplayConfigSpecs configSpecs =
                     SurfaceControl.getDesiredDisplayConfigSpecs(displayToken);
+            int[] colorModes = SurfaceControl.getDisplayColorModes(displayToken);
+            Display.HdrCapabilities hdrCapabilities =
+                    SurfaceControl.getHdrCapabilities(displayToken);
             LocalDisplayDevice device = mDevices.get(physicalDisplayId);
             if (device == null) {
                 // Display was added.
                 final boolean isInternal = mDevices.size() == 0;
-                device = new LocalDisplayDevice(displayToken, physicalDisplayId, configs,
-                        activeConfig, desiredDisplayConfigSpecs, colorModes, activeColorMode,
-                        isInternal);
+                device = new LocalDisplayDevice(displayToken, physicalDisplayId, info,
+                        configs, activeConfig, configSpecs, colorModes, activeColorMode,
+                        hdrCapabilities, isInternal);
                 mDevices.put(physicalDisplayId, device);
                 sendDisplayDeviceEventLocked(device, DISPLAY_DEVICE_EVENT_ADDED);
-            } else if (device.updatePhysicalDisplayInfoLocked(configs, activeConfig,
-                               desiredDisplayConfigSpecs, colorModes, activeColorMode)) {
-                // Display properties changed.
+            } else if (device.updateDisplayProperties(configs, activeConfig,
+                    configSpecs, colorModes, activeColorMode, hdrCapabilities)) {
                 sendDisplayDeviceEventLocked(device, DISPLAY_DEVICE_EVENT_CHANGED);
             }
         } else {
@@ -172,14 +180,14 @@
         private DisplayDeviceInfo mInfo;
         private boolean mHavePendingChanges;
         private int mState = Display.STATE_UNKNOWN;
-        private int mBrightness = PowerManager.BRIGHTNESS_DEFAULT;
+        private float mBrightnessState = PowerManager.BRIGHTNESS_INVALID_FLOAT;
         private int mDefaultModeId;
         private int mActiveModeId;
         private boolean mActiveModeInvalid;
         private DisplayModeDirector.DesiredDisplayModeSpecs mDisplayModeSpecs =
                 new DisplayModeDirector.DesiredDisplayModeSpecs();
         private boolean mDisplayModeSpecsInvalid;
-        private int mActivePhysIndex;
+        private int mActiveConfigId;
         private int mActiveColorMode;
         private boolean mActiveColorModeInvalid;
         private Display.HdrCapabilities mHdrCapabilities;
@@ -189,21 +197,23 @@
         private boolean mGameContentTypeRequested;
         private boolean mSidekickActive;
         private SidekickInternal mSidekickInternal;
-        private SurfaceControl.PhysicalDisplayInfo[] mDisplayInfos;
+        private SurfaceControl.DisplayInfo mDisplayInfo;
+        private SurfaceControl.DisplayConfig[] mDisplayConfigs;
         private Spline mSystemBrightnessToNits;
         private Spline mNitsToHalBrightness;
         private boolean mHalBrightnessSupport;
 
         LocalDisplayDevice(IBinder displayToken, long physicalDisplayId,
-                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo,
-                SurfaceControl.DesiredDisplayConfigSpecs physicalDisplayConfigSpecs,
-                int[] colorModes, int activeColorMode, boolean isInternal) {
+                SurfaceControl.DisplayInfo info, SurfaceControl.DisplayConfig[] configs,
+                int activeConfigId, SurfaceControl.DesiredDisplayConfigSpecs configSpecs,
+                int[] colorModes, int activeColorMode, Display.HdrCapabilities hdrCapabilities,
+                boolean isInternal) {
             super(LocalDisplayAdapter.this, displayToken, UNIQUE_ID_PREFIX + physicalDisplayId);
             mPhysicalDisplayId = physicalDisplayId;
             mIsInternal = isInternal;
-            updatePhysicalDisplayInfoLocked(physicalDisplayInfos, activeDisplayInfo,
-                    physicalDisplayConfigSpecs, colorModes, activeColorMode);
-            updateColorModesLocked(colorModes, activeColorMode);
+            mDisplayInfo = info;
+            updateDisplayProperties(configs, activeConfigId, configSpecs, colorModes,
+                    activeColorMode, hdrCapabilities);
             mSidekickInternal = LocalServices.getService(SidekickInternal.class);
             if (mIsInternal) {
                 LightsManager lights = LocalServices.getService(LightsManager.class);
@@ -211,7 +221,6 @@
             } else {
                 mBacklight = null;
             }
-            mHdrCapabilities = SurfaceControl.getHdrCapabilities(displayToken);
             mAllmSupported = SurfaceControl.getAutoLowLatencyModeSupport(displayToken);
             mGameContentTypeSupported = SurfaceControl.getGameContentTypeSupport(displayToken);
             mHalBrightnessSupport = SurfaceControl.getDisplayBrightnessSupport(displayToken);
@@ -226,23 +235,34 @@
             return true;
         }
 
-        public boolean updatePhysicalDisplayInfoLocked(
-                SurfaceControl.PhysicalDisplayInfo[] physicalDisplayInfos, int activeDisplayInfo,
-                SurfaceControl.DesiredDisplayConfigSpecs physicalDisplayConfigSpecs,
-                int[] colorModes, int activeColorMode) {
-            mDisplayInfos = Arrays.copyOf(physicalDisplayInfos, physicalDisplayInfos.length);
-            mActivePhysIndex = activeDisplayInfo;
+        /**
+         * Returns true if there is a change.
+         **/
+        public boolean updateDisplayProperties(SurfaceControl.DisplayConfig[] configs,
+                int activeConfigId, SurfaceControl.DesiredDisplayConfigSpecs configSpecs,
+                int[] colorModes, int activeColorMode, Display.HdrCapabilities hdrCapabilities) {
+            boolean changed = updateDisplayConfigsLocked(configs, activeConfigId, configSpecs);
+            changed |= updateColorModesLocked(colorModes, activeColorMode);
+            changed |= updateHdrCapabilitiesLocked(hdrCapabilities);
+            return changed;
+        }
+
+        public boolean updateDisplayConfigsLocked(
+                SurfaceControl.DisplayConfig[] configs, int activeConfigId,
+                SurfaceControl.DesiredDisplayConfigSpecs configSpecs) {
+            mDisplayConfigs = Arrays.copyOf(configs, configs.length);
+            mActiveConfigId = activeConfigId;
             // Build an updated list of all existing modes.
-            ArrayList<DisplayModeRecord> records = new ArrayList<DisplayModeRecord>();
+            ArrayList<DisplayModeRecord> records = new ArrayList<>();
             boolean modesAdded = false;
-            for (int i = 0; i < physicalDisplayInfos.length; i++) {
-                SurfaceControl.PhysicalDisplayInfo info = physicalDisplayInfos[i];
+            for (int i = 0; i < configs.length; i++) {
+                SurfaceControl.DisplayConfig config = configs[i];
                 // First, check to see if we've already added a matching mode. Since not all
                 // configuration options are exposed via Display.Mode, it's possible that we have
-                // multiple PhysicalDisplayInfos that would generate the same Display.Mode.
+                // multiple DisplayConfigs that would generate the same Display.Mode.
                 boolean existingMode = false;
                 for (int j = 0; j < records.size(); j++) {
-                    if (records.get(j).hasMatchingMode(info)) {
+                    if (records.get(j).hasMatchingMode(config)) {
                         existingMode = true;
                         break;
                     }
@@ -253,9 +273,9 @@
                 // If we haven't already added a mode for this configuration to the new set of
                 // supported modes then check to see if we have one in the prior set of supported
                 // modes to reuse.
-                DisplayModeRecord record = findDisplayModeRecord(info);
+                DisplayModeRecord record = findDisplayModeRecord(config);
                 if (record == null) {
-                    record = new DisplayModeRecord(info);
+                    record = new DisplayModeRecord(config);
                     modesAdded = true;
                 }
                 records.add(record);
@@ -265,7 +285,7 @@
             DisplayModeRecord activeRecord = null;
             for (int i = 0; i < records.size(); i++) {
                 DisplayModeRecord record = records.get(i);
-                if (record.hasMatchingMode(physicalDisplayInfos[activeDisplayInfo])){
+                if (record.hasMatchingMode(configs[activeConfigId])) {
                     activeRecord = record;
                     break;
                 }
@@ -273,7 +293,7 @@
 
             // Check whether surface flinger spontaneously changed modes out from under us.
             // Schedule traversals to ensure that the correct state is reapplied if necessary.
-            if (mActiveModeId != 0
+            if (mActiveModeId != NO_DISPLAY_MODE_ID
                     && mActiveModeId != activeRecord.mMode.getModeId()) {
                 mActiveModeInvalid = true;
                 sendTraversalRequestLocked();
@@ -281,18 +301,16 @@
 
             // Check whether surface flinger spontaneously changed display config specs out from
             // under us. If so, schedule a traversal to reapply our display config specs.
-            if (mDisplayModeSpecs.baseModeId != 0) {
-                int activeBaseMode =
-                        findMatchingModeIdLocked(physicalDisplayConfigSpecs.defaultConfig);
+            if (mDisplayModeSpecs.baseModeId != NO_DISPLAY_MODE_ID) {
+                int activeBaseMode = findMatchingModeIdLocked(configSpecs.defaultConfig);
                 // If we can't map the defaultConfig index to a mode, then the physical display
                 // configs must have changed, and the code below for handling changes to the
                 // list of available modes will take care of updating display config specs.
-                if (activeBaseMode != 0) {
+                if (activeBaseMode != NO_DISPLAY_MODE_ID) {
                     if (mDisplayModeSpecs.baseModeId != activeBaseMode
-                            || mDisplayModeSpecs.refreshRateRange.min
-                                    != physicalDisplayConfigSpecs.minRefreshRate
+                            || mDisplayModeSpecs.refreshRateRange.min != configSpecs.minRefreshRate
                             || mDisplayModeSpecs.refreshRateRange.max
-                                    != physicalDisplayConfigSpecs.maxRefreshRate) {
+                                    != configSpecs.maxRefreshRate) {
                         mDisplayModeSpecsInvalid = true;
                         sendTraversalRequestLocked();
                     }
@@ -312,18 +330,23 @@
                 mSupportedModes.put(record.mMode.getModeId(), record);
             }
 
-            // Update the default mode, if needed.
-            if (findDisplayInfoIndexLocked(mDefaultModeId) < 0) {
-                if (mDefaultModeId != 0) {
-                    Slog.w(TAG, "Default display mode no longer available, using currently"
-                            + " active mode as default.");
-                }
+            // For a new display, we need to initialize the default mode ID.
+            if (mDefaultModeId == NO_DISPLAY_MODE_ID) {
+                mDefaultModeId = activeRecord.mMode.getModeId();
+            } else if (modesAdded && mActiveModeId != activeRecord.mMode.getModeId()) {
+                Slog.d(TAG, "New display modes are added and the active mode has changed, "
+                        + "use active mode as default mode.");
+                mActiveModeId = activeRecord.mMode.getModeId();
+                mDefaultModeId = activeRecord.mMode.getModeId();
+            } else if (findDisplayConfigIdLocked(mDefaultModeId) < 0) {
+                Slog.w(TAG, "Default display mode no longer available, using currently"
+                        + " active mode as default.");
                 mDefaultModeId = activeRecord.mMode.getModeId();
             }
 
             // Determine whether the display mode specs' base mode is still there.
             if (mSupportedModes.indexOfKey(mDisplayModeSpecs.baseModeId) < 0) {
-                if (mDisplayModeSpecs.baseModeId != 0) {
+                if (mDisplayModeSpecs.baseModeId != NO_DISPLAY_MODE_ID) {
                     Slog.w(TAG,
                             "DisplayModeSpecs base mode no longer available, using currently"
                                     + " active mode.");
@@ -334,7 +357,7 @@
 
             // Determine whether the active mode is still there.
             if (mSupportedModes.indexOfKey(mActiveModeId) < 0) {
-                if (mActiveModeId != 0) {
+                if (mActiveModeId != NO_DISPLAY_MODE_ID) {
                     Slog.w(TAG, "Active display mode no longer available, reverting to default"
                             + " mode.");
                 }
@@ -382,14 +405,15 @@
             mSystemBrightnessToNits = sysToNits;
         }
 
-        private boolean updateColorModesLocked(int[] colorModes,
-                int activeColorMode) {
-            List<Integer> pendingColorModes = new ArrayList<>();
+        private boolean updateColorModesLocked(int[] colorModes, int activeColorMode) {
+            if (colorModes == null) {
+                return false;
+            }
 
-            if (colorModes == null) return false;
+            List<Integer> pendingColorModes = new ArrayList<>();
             // Build an updated list of all existing color modes.
             boolean colorModesAdded = false;
-            for (int colorMode: colorModes) {
+            for (int colorMode : colorModes) {
                 if (!mSupportedColorModes.contains(colorMode)) {
                     colorModesAdded = true;
                 }
@@ -434,10 +458,19 @@
             return true;
         }
 
-        private DisplayModeRecord findDisplayModeRecord(SurfaceControl.PhysicalDisplayInfo info) {
+        private boolean updateHdrCapabilitiesLocked(Display.HdrCapabilities newHdrCapabilities) {
+            // If the HDR capabilities haven't changed, then we're done here.
+            if (Objects.equals(mHdrCapabilities, newHdrCapabilities)) {
+                return false;
+            }
+            mHdrCapabilities = newHdrCapabilities;
+            return true;
+        }
+
+        private DisplayModeRecord findDisplayModeRecord(SurfaceControl.DisplayConfig config) {
             for (int i = 0; i < mSupportedModes.size(); i++) {
                 DisplayModeRecord record = mSupportedModes.valueAt(i);
-                if (record.hasMatchingMode(info)) {
+                if (record.hasMatchingMode(config)) {
                     return record;
                 }
             }
@@ -455,10 +488,10 @@
         @Override
         public DisplayDeviceInfo getDisplayDeviceInfoLocked() {
             if (mInfo == null) {
-                SurfaceControl.PhysicalDisplayInfo phys = mDisplayInfos[mActivePhysIndex];
+                SurfaceControl.DisplayConfig config = mDisplayConfigs[mActiveConfigId];
                 mInfo = new DisplayDeviceInfo();
-                mInfo.width = phys.width;
-                mInfo.height = phys.height;
+                mInfo.width = config.width;
+                mInfo.height = config.height;
                 mInfo.modeId = mActiveModeId;
                 mInfo.defaultModeId = mDefaultModeId;
                 mInfo.supportedModes = getDisplayModes(mSupportedModes);
@@ -471,20 +504,20 @@
                     mInfo.supportedColorModes[i] = mSupportedColorModes.get(i);
                 }
                 mInfo.hdrCapabilities = mHdrCapabilities;
-                mInfo.appVsyncOffsetNanos = phys.appVsyncOffsetNanos;
-                mInfo.presentationDeadlineNanos = phys.presentationDeadlineNanos;
+                mInfo.appVsyncOffsetNanos = config.appVsyncOffsetNanos;
+                mInfo.presentationDeadlineNanos = config.presentationDeadlineNanos;
                 mInfo.state = mState;
                 mInfo.uniqueId = getUniqueId();
                 final DisplayAddress.Physical physicalAddress =
                         DisplayAddress.fromPhysicalDisplayId(mPhysicalDisplayId);
                 mInfo.address = physicalAddress;
-                mInfo.densityDpi = (int) (phys.density * 160 + 0.5f);
-                mInfo.xDpi = phys.xDpi;
-                mInfo.yDpi = phys.yDpi;
+                mInfo.densityDpi = (int) (mDisplayInfo.density * 160 + 0.5f);
+                mInfo.xDpi = config.xDpi;
+                mInfo.yDpi = config.yDpi;
 
                 // Assume that all built-in displays that have secure output (eg. HDCP) also
                 // support compositing from gralloc protected buffers.
-                if (phys.secure) {
+                if (mDisplayInfo.secure) {
                     mInfo.flags = DisplayDeviceInfo.FLAG_SECURE
                             | DisplayDeviceInfo.FLAG_SUPPORTS_PROTECTED_BUFFERS;
                 }
@@ -542,12 +575,14 @@
         }
 
         @Override
-        public Runnable requestDisplayStateLocked(final int state, final int brightness) {
+        public Runnable requestDisplayStateLocked(final int state, final float brightnessState) {
             // Assume that the brightness is off if the display is being turned off.
-            assert state != Display.STATE_OFF || brightness == PowerManager.BRIGHTNESS_OFF;
-
+            assert state != Display.STATE_OFF || BrightnessSynchronizer.floatEquals(
+                    brightnessState, PowerManager.BRIGHTNESS_OFF_FLOAT);
             final boolean stateChanged = (mState != state);
-            final boolean brightnessChanged = (mBrightness != brightness) && mBacklight != null;
+            final boolean brightnessChanged = (!BrightnessSynchronizer.floatEquals(
+                    mBrightnessState, brightnessState))
+                    && mBacklight != null;
             if (stateChanged || brightnessChanged) {
                 final long physicalDisplayId = mPhysicalDisplayId;
                 final IBinder token = getDisplayTokenLocked();
@@ -559,7 +594,7 @@
                 }
 
                 if (brightnessChanged) {
-                    mBrightness = brightness;
+                    mBrightnessState = brightnessState;
                 }
 
                 // Defer actually setting the display state until after we have exited
@@ -598,10 +633,9 @@
                             vrModeChange = true;
                         }
 
-
                         // Apply brightness changes given that we are in a non-suspended state.
                         if (brightnessChanged || vrModeChange) {
-                            setDisplayBrightness(brightness);
+                            setDisplayBrightness(brightnessState);
                         }
 
                         // Enter the final desired state, possibly suspended.
@@ -662,7 +696,7 @@
                         }
                     }
 
-                    private void setDisplayBrightness(int brightness) {
+                    private void setDisplayBrightness(float brightness) {
                         if (DEBUG) {
                             Slog.d(TAG, "setDisplayBrightness("
                                     + "id=" + physicalDisplayId
@@ -672,26 +706,33 @@
                         Trace.traceBegin(Trace.TRACE_TAG_POWER, "setDisplayBrightness("
                                 + "id=" + physicalDisplayId + ", brightness=" + brightness + ")");
                         try {
-                            if (mHalBrightnessSupport) {
-                                mBacklight.setBrightnessFloat(
-                                        displayBrightnessToHalBrightness(brightness));
-                            } else {
-                                mBacklight.setBrightness(brightness);
+                            // TODO: make it float
+                            if (isHalBrightnessRangeSpecified()) {
+                                brightness = displayBrightnessToHalBrightness(
+                                        BrightnessSynchronizer.brightnessFloatToInt(getContext(),
+                                                brightness));
                             }
+                            mBacklight.setBrightness(brightness);
                             Trace.traceCounter(Trace.TRACE_TAG_POWER,
-                                    "ScreenBrightness", brightness);
+                                    "ScreenBrightness",
+                                    BrightnessSynchronizer.brightnessFloatToInt(
+                                            getContext(), brightness));
                         } finally {
                             Trace.traceEnd(Trace.TRACE_TAG_POWER);
                         }
                     }
 
+                    private boolean isHalBrightnessRangeSpecified() {
+                        return !(mSystemBrightnessToNits == null || mNitsToHalBrightness == null);
+                    }
+
                     /**
                      * Converts brightness range from the framework's brightness space to the
                      * Hal brightness space if the HAL brightness space has been provided via
                      * a display device configuration file.
                      */
                     private float displayBrightnessToHalBrightness(int brightness) {
-                        if (mSystemBrightnessToNits == null || mNitsToHalBrightness == null) {
+                        if (!isHalBrightnessRangeSpecified()) {
                             return PowerManager.BRIGHTNESS_INVALID_FLOAT;
                         }
 
@@ -721,8 +762,8 @@
                 // a valid mode.
                 return;
             }
-            int basePhysIndex = findDisplayInfoIndexLocked(displayModeSpecs.baseModeId);
-            if (basePhysIndex < 0) {
+            int baseConfigId = findDisplayConfigIdLocked(displayModeSpecs.baseModeId);
+            if (baseConfigId < 0) {
                 // When a display is hotplugged, it's possible for a mode to be removed that was
                 // previously valid. Because of the way display changes are propagated through the
                 // framework, and the caching of the display mode specs in LogicalDisplay, it's
@@ -740,7 +781,7 @@
                 getHandler().sendMessage(PooledLambda.obtainMessage(
                         LocalDisplayDevice::setDesiredDisplayModeSpecsAsync, this,
                         getDisplayTokenLocked(),
-                        new SurfaceControl.DesiredDisplayConfigSpecs(basePhysIndex,
+                        new SurfaceControl.DesiredDisplayConfigSpecs(baseConfigId,
                                 mDisplayModeSpecs.refreshRateRange.min,
                                 mDisplayModeSpecs.refreshRateRange.max)));
             }
@@ -764,22 +805,22 @@
             updateDeviceInfoLocked();
         }
 
-        public void onActivePhysicalDisplayModeChangedLocked(int physIndex) {
-            if (updateActiveModeLocked(physIndex)) {
+        public void onActiveDisplayConfigChangedLocked(int configId) {
+            if (updateActiveModeLocked(configId)) {
                 updateDeviceInfoLocked();
             }
         }
 
-        public boolean updateActiveModeLocked(int activePhysIndex) {
-            if (mActivePhysIndex == activePhysIndex) {
+        public boolean updateActiveModeLocked(int activeConfigId) {
+            if (mActiveConfigId == activeConfigId) {
                 return false;
             }
-            mActivePhysIndex = activePhysIndex;
-            mActiveModeId = findMatchingModeIdLocked(activePhysIndex);
-            mActiveModeInvalid = mActiveModeId == 0;
+            mActiveConfigId = activeConfigId;
+            mActiveModeId = findMatchingModeIdLocked(activeConfigId);
+            mActiveModeInvalid = mActiveModeId == NO_DISPLAY_MODE_ID;
             if (mActiveModeInvalid) {
                 Slog.w(TAG, "In unknown mode after setting allowed configs"
-                        + ", activePhysIndex=" + mActivePhysIndex);
+                        + ", activeConfigId=" + mActiveConfigId);
             }
             return true;
         }
@@ -850,20 +891,21 @@
             pw.println("mPhysicalDisplayId=" + mPhysicalDisplayId);
             pw.println("mDisplayModeSpecs={" + mDisplayModeSpecs + "}");
             pw.println("mDisplayModeSpecsInvalid=" + mDisplayModeSpecsInvalid);
-            pw.println("mActivePhysIndex=" + mActivePhysIndex);
+            pw.println("mActiveConfigId=" + mActiveConfigId);
             pw.println("mActiveModeId=" + mActiveModeId);
             pw.println("mActiveColorMode=" + mActiveColorMode);
             pw.println("mDefaultModeId=" + mDefaultModeId);
             pw.println("mState=" + Display.stateToString(mState));
-            pw.println("mBrightness=" + mBrightness);
+            pw.println("mBrightnessState=" + mBrightnessState);
             pw.println("mBacklight=" + mBacklight);
             pw.println("mAllmSupported=" + mAllmSupported);
             pw.println("mAllmRequested=" + mAllmRequested);
             pw.println("mGameContentTypeSupported" + mGameContentTypeSupported);
             pw.println("mGameContentTypeRequested" + mGameContentTypeRequested);
-            pw.println("mDisplayInfos=");
-            for (int i = 0; i < mDisplayInfos.length; i++) {
-                pw.println("  " + mDisplayInfos[i]);
+            pw.println("mDisplayInfo=" + mDisplayInfo);
+            pw.println("mDisplayConfigs=");
+            for (int i = 0; i < mDisplayConfigs.length; i++) {
+                pw.println("  " + mDisplayConfigs[i]);
             }
             pw.println("mSupportedModes=");
             for (int i = 0; i < mSupportedModes.size(); i++) {
@@ -879,12 +921,12 @@
             pw.println("]");
         }
 
-        private int findDisplayInfoIndexLocked(int modeId) {
+        private int findDisplayConfigIdLocked(int modeId) {
             DisplayModeRecord record = mSupportedModes.get(modeId);
             if (record != null) {
-                for (int i = 0; i < mDisplayInfos.length; i++) {
-                    SurfaceControl.PhysicalDisplayInfo info = mDisplayInfos[i];
-                    if (record.hasMatchingMode(info)){
+                for (int i = 0; i < mDisplayConfigs.length; i++) {
+                    SurfaceControl.DisplayConfig config = mDisplayConfigs[i];
+                    if (record.hasMatchingMode(config)) {
                         return i;
                     }
                 }
@@ -892,15 +934,15 @@
             return -1;
         }
 
-        private int findMatchingModeIdLocked(int physIndex) {
-            SurfaceControl.PhysicalDisplayInfo info = mDisplayInfos[physIndex];
+        private int findMatchingModeIdLocked(int configId) {
+            SurfaceControl.DisplayConfig config = mDisplayConfigs[configId];
             for (int i = 0; i < mSupportedModes.size(); i++) {
                 DisplayModeRecord record = mSupportedModes.valueAt(i);
-                if (record.hasMatchingMode(info)) {
+                if (record.hasMatchingMode(config)) {
                     return record.mMode.getModeId();
                 }
             }
-            return 0;
+            return NO_DISPLAY_MODE_ID;
         }
 
         private void updateDeviceInfoLocked() {
@@ -948,23 +990,23 @@
     private static final class DisplayModeRecord {
         public final Display.Mode mMode;
 
-        public DisplayModeRecord(SurfaceControl.PhysicalDisplayInfo phys) {
-            mMode = createMode(phys.width, phys.height, phys.refreshRate);
+        DisplayModeRecord(SurfaceControl.DisplayConfig config) {
+            mMode = createMode(config.width, config.height, config.refreshRate);
         }
 
         /**
-         * Returns whether the mode generated by the given PhysicalDisplayInfo matches the mode
+         * Returns whether the mode generated by the given DisplayConfig matches the mode
          * contained by the record modulo mode ID.
          *
-         * Note that this doesn't necessarily mean the the PhysicalDisplayInfos are identical, just
+         * Note that this doesn't necessarily mean that the DisplayConfigs are identical, just
          * that they generate identical modes.
          */
-        public boolean hasMatchingMode(SurfaceControl.PhysicalDisplayInfo info) {
+        public boolean hasMatchingMode(SurfaceControl.DisplayConfig config) {
             int modeRefreshRate = Float.floatToIntBits(mMode.getRefreshRate());
-            int displayInfoRefreshRate = Float.floatToIntBits(info.refreshRate);
-            return mMode.getPhysicalWidth() == info.width
-                    && mMode.getPhysicalHeight() == info.height
-                    && modeRefreshRate == displayInfoRefreshRate;
+            int configRefreshRate = Float.floatToIntBits(config.refreshRate);
+            return mMode.getPhysicalWidth() == config.width
+                    && mMode.getPhysicalHeight() == config.height
+                    && modeRefreshRate == configRefreshRate;
         }
 
         public String toString() {
@@ -989,12 +1031,12 @@
         }
 
         @Override
-        public void onConfigChanged(long timestampNanos, long physicalDisplayId, int physIndex) {
+        public void onConfigChanged(long timestampNanos, long physicalDisplayId, int configId) {
             if (DEBUG) {
                 Slog.d(TAG, "onConfigChanged("
                         + "timestampNanos=" + timestampNanos
                         + ", physicalDisplayId=" + physicalDisplayId
-                        + ", physIndex=" + physIndex + ")");
+                        + ", configId=" + configId + ")");
             }
             synchronized (getSyncRoot()) {
                 LocalDisplayDevice device = mDevices.get(physicalDisplayId);
@@ -1005,7 +1047,7 @@
                     }
                     return;
                 }
-                device.onActivePhysicalDisplayModeChangedLocked(physIndex);
+                device.onActiveDisplayConfigChangedLocked(configId);
             }
         }
     }
diff --git a/services/core/java/com/android/server/display/OverlayDisplayWindow.java b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
index 0fdf2da..49f0d35 100644
--- a/services/core/java/com/android/server/display/OverlayDisplayWindow.java
+++ b/services/core/java/com/android/server/display/OverlayDisplayWindow.java
@@ -109,7 +109,8 @@
         mWindowManager = (WindowManager)context.getSystemService(
                 Context.WINDOW_SERVICE);
 
-        mDefaultDisplay = mWindowManager.getDefaultDisplay();
+        // TODO(b/148458868): Support multi-display
+        mDefaultDisplay = mContext.getDisplay();
         updateDefaultDisplayInfo();
 
         resize(width, height, densityDpi, false /* doLayout */);
diff --git a/services/core/java/com/android/server/display/RampAnimator.java b/services/core/java/com/android/server/display/RampAnimator.java
index d71269f..7916d81 100644
--- a/services/core/java/com/android/server/display/RampAnimator.java
+++ b/services/core/java/com/android/server/display/RampAnimator.java
@@ -17,21 +17,23 @@
 package com.android.server.display;
 
 import android.animation.ValueAnimator;
-import android.util.IntProperty;
+import android.util.FloatProperty;
 import android.view.Choreographer;
 
+import com.android.internal.BrightnessSynchronizer;
+
 /**
  * A custom animator that progressively updates a property value at
  * a given variable rate until it reaches a particular target value.
  */
 final class RampAnimator<T> {
     private final T mObject;
-    private final IntProperty<T> mProperty;
+    private final FloatProperty<T> mProperty;
     private final Choreographer mChoreographer;
 
-    private int mCurrentValue;
-    private int mTargetValue;
-    private int mRate;
+    private float mCurrentValue;
+    private float mTargetValue;
+    private float mRate;
 
     private boolean mAnimating;
     private float mAnimatedValue; // higher precision copy of mCurrentValue
@@ -41,7 +43,7 @@
 
     private Listener mListener;
 
-    public RampAnimator(T object, IntProperty<T> property) {
+    public RampAnimator(T object, FloatProperty<T> property) {
         mObject = object;
         mProperty = property;
         mChoreographer = Choreographer.getInstance();
@@ -57,7 +59,8 @@
      * @param rate The convergence rate in units per second, or 0 to set the value immediately.
      * @return True if the target differs from the previous target.
      */
-    public boolean animateTo(int target, int rate) {
+    public boolean animateTo(float target, float rate) {
+
         // Immediately jump to the target the first time.
         if (mFirstTime || rate <= 0) {
             if (mFirstTime || target != mCurrentValue) {
@@ -152,14 +155,12 @@
                     mAnimatedValue = Math.max(mAnimatedValue - amount, mTargetValue);
                 }
             }
-            final int oldCurrentValue = mCurrentValue;
-            mCurrentValue = Math.round(mAnimatedValue);
-
-            if (oldCurrentValue != mCurrentValue) {
+            final float oldCurrentValue = mCurrentValue;
+            mCurrentValue = mAnimatedValue;
+            if (!BrightnessSynchronizer.floatEquals(oldCurrentValue, mCurrentValue)) {
                 mProperty.setValue(mObject, mCurrentValue);
             }
-
-            if (mTargetValue != mCurrentValue) {
+            if (!BrightnessSynchronizer.floatEquals(mTargetValue, mCurrentValue)) {
                 postAnimationCallback();
             } else {
                 mAnimating = false;
diff --git a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
index 1ca8dd3..f4f2ead 100644
--- a/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
+++ b/services/core/java/com/android/server/display/VirtualDisplayAdapter.java
@@ -265,7 +265,7 @@
         }
 
         @Override
-        public Runnable requestDisplayStateLocked(int state, int brightness) {
+        public Runnable requestDisplayStateLocked(int state, float brightnessState) {
             if (state != mDisplayState) {
                 mDisplayState = state;
                 if (state == Display.STATE_OFF) {
diff --git a/services/core/java/com/android/server/display/WifiDisplayController.java b/services/core/java/com/android/server/display/WifiDisplayController.java
index 2992f1e..a7e1a28 100644
--- a/services/core/java/com/android/server/display/WifiDisplayController.java
+++ b/services/core/java/com/android/server/display/WifiDisplayController.java
@@ -291,7 +291,7 @@
                 mWfdEnabling = true;
 
                 WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
-                wfdInfo.setWfdEnabled(true);
+                wfdInfo.setEnabled(true);
                 wfdInfo.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
                 wfdInfo.setSessionAvailable(true);
                 wfdInfo.setControlPort(DEFAULT_CONTROL_PORT);
@@ -323,7 +323,7 @@
             // WFD should be disabled.
             if (mWfdEnabled || mWfdEnabling) {
                 WifiP2pWfdInfo wfdInfo = new WifiP2pWfdInfo();
-                wfdInfo.setWfdEnabled(false);
+                wfdInfo.setEnabled(false);
                 mWifiP2pManager.setWfdInfo(mWifiP2pChannel, wfdInfo, new ActionListener() {
                     @Override
                     public void onSuccess() {
@@ -1044,7 +1044,7 @@
     private static boolean isWifiDisplay(WifiP2pDevice device) {
         WifiP2pWfdInfo wfdInfo = device.getWfdInfo();
         return wfdInfo != null
-                && wfdInfo.isWfdEnabled()
+                && wfdInfo.isEnabled()
                 && isPrimarySinkDeviceType(wfdInfo.getDeviceType());
     }
 
diff --git a/services/core/java/com/android/server/incremental/IncrementalManagerService.java b/services/core/java/com/android/server/incremental/IncrementalManagerService.java
index 5876d43..a8121cc 100644
--- a/services/core/java/com/android/server/incremental/IncrementalManagerService.java
+++ b/services/core/java/com/android/server/incremental/IncrementalManagerService.java
@@ -32,7 +32,10 @@
 import android.os.incremental.IIncrementalManager;
 import android.util.Slog;
 
+import com.android.internal.util.DumpUtils;
+
 import java.io.FileDescriptor;
+import java.io.PrintWriter;
 
 /**
  * This service has the following purposes:
@@ -71,6 +74,13 @@
         mNativeInstance = nativeStartService();
     }
 
+    @SuppressWarnings("resource")
+    @Override
+    protected void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        if (!DumpUtils.checkDumpAndUsageStatsPermission(mContext, TAG, pw)) return;
+        nativeDump(mNativeInstance, fd.getInt$());
+    }
+
     /**
      * Notifies native IIncrementalManager service that system is ready.
      */
@@ -132,16 +142,6 @@
         }
     }
 
-    // TODO: remove this
-    @Override
-    public void newFileForDataLoader(int mountId, byte[] fileId, byte[] metadata) {
-        IDataLoader dataLoader = mDataLoaderManager.getDataLoader(mountId);
-        if (dataLoader == null) {
-            Slog.e(TAG, "Failed to retrieve data loader for ID=" + mountId);
-            return;
-        }
-    }
-
     @Override
     public void showHealthBlockedUI(int mountId) {
         // TODO(b/136132412): implement this
@@ -158,4 +158,6 @@
     private static native long nativeStartService();
 
     private static native void nativeSystemReady(long nativeInstance);
+
+    private static native void nativeDump(long nativeInstance, int fd);
 }
diff --git a/services/core/java/com/android/server/incremental/IncrementalManagerShellCommand.java b/services/core/java/com/android/server/incremental/IncrementalManagerShellCommand.java
index 5161a77..6a5e963 100644
--- a/services/core/java/com/android/server/incremental/IncrementalManagerShellCommand.java
+++ b/services/core/java/com/android/server/incremental/IncrementalManagerShellCommand.java
@@ -16,9 +16,7 @@
 
 package com.android.server.incremental;
 
-import static android.content.pm.InstallationFile.FILE_TYPE_OBB;
 import static android.content.pm.PackageInstaller.LOCATION_DATA_APP;
-import static android.content.pm.PackageInstaller.LOCATION_MEDIA_OBB;
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
@@ -113,11 +111,27 @@
             return ERROR_COMMAND_EXECUTION;
         }
 
-        final Map<String, ParcelFileDescriptor> dataLoaderDynamicArgs = getDataLoaderDynamicArgs();
-        if (dataLoaderDynamicArgs == null) {
+        final Map<String, ParcelFileDescriptor> fds = getShellFileDescriptors();
+        if (fds == null) {
             pw.println("File names and sizes don't match.");
             return ERROR_DATA_LOADER_INIT;
         }
+        // dup FDs before closing them
+        final Map<String, ParcelFileDescriptor> dataLoaderDynamicArgs = new HashMap<>();
+        for (Map.Entry<String, ParcelFileDescriptor> nfd : fds.entrySet()) {
+            try {
+                dataLoaderDynamicArgs.put(nfd.getKey(), nfd.getValue().dup());
+            } catch (IOException ignored) {
+                pw.println("Failed to dup shell file descriptor");
+                return ERROR_DATA_LOADER_INIT;
+            } finally {
+                try {
+                    nfd.getValue().close();
+                } catch (IOException ignored) {
+                }
+            }
+        }
+
         final DataLoaderParams params = DataLoaderParams.forIncremental(
                 new ComponentName(LOADER_PACKAGE_NAME, LOADER_CLASS_NAME), "",
                 dataLoaderDynamicArgs);
@@ -131,17 +145,9 @@
         try {
             int sessionId = packageInstaller.createSession(sessionParams);
             pw.println("Successfully opened session: sessionId = " + sessionId);
-        } catch (Exception ex) {
+        } catch (IOException ex) {
             pw.println("Failed to create session.");
             return ERROR_COMMAND_EXECUTION;
-        } finally {
-            try {
-                for (Map.Entry<String, ParcelFileDescriptor> nfd
-                        : dataLoaderDynamicArgs.entrySet()) {
-                    nfd.getValue().close();
-                }
-            } catch (IOException ignored) {
-            }
         }
         return 0;
     }
@@ -175,9 +181,8 @@
             session = packageInstaller.openSession(sessionId);
             for (int i = 0; i < numFiles; i++) {
                 InstallationFile file = installationFiles.get(i);
-                final int location = file.getFileType() == FILE_TYPE_OBB ? LOCATION_MEDIA_OBB
-                        : LOCATION_DATA_APP;
-                session.addFile(location, file.getName(), file.getSize(), file.getMetadata(), null);
+                session.addFile(file.getLocation(), file.getName(), file.getLengthBytes(),
+                        file.getMetadata(), file.getSignature());
             }
             session.commit(localReceiver.getIntentSender());
             final Intent result = localReceiver.getResult();
@@ -212,7 +217,8 @@
 
         private IIntentSender.Stub mLocalSender = new IIntentSender.Stub() {
             @Override
-            public void send(int code, Intent intent, String resolvedType, IBinder whitelistToken,
+            public void send(int code, Intent intent, String resolvedType,
+                    IBinder whitelistToken,
                     IIntentReceiver finishedReceiver, String requiredPermission,
                     Bundle options) {
                 try {
@@ -237,14 +243,14 @@
     }
 
     /** Helpers. */
-    private Map<String, ParcelFileDescriptor> getDataLoaderDynamicArgs() {
-        Map<String, ParcelFileDescriptor> dataLoaderDynamicArgs = new HashMap<>();
+    private Map<String, ParcelFileDescriptor> getShellFileDescriptors() {
+        Map<String, ParcelFileDescriptor> fds = new HashMap<>();
         final FileDescriptor outFd = getOutFileDescriptor();
         final FileDescriptor inFd = getInFileDescriptor();
         try {
-            dataLoaderDynamicArgs.put("inFd", ParcelFileDescriptor.dup(inFd));
-            dataLoaderDynamicArgs.put("outFd", ParcelFileDescriptor.dup(outFd));
-            return dataLoaderDynamicArgs;
+            fds.put("inFd", ParcelFileDescriptor.dup(inFd));
+            fds.put("outFd", ParcelFileDescriptor.dup(outFd));
+            return fds;
         } catch (Exception ex) {
             Slog.e(TAG, "Failed to dup FDs");
             return null;
@@ -292,8 +298,10 @@
                         pw.println("Invalid file index in: " + fileArgs);
                         return null;
                     }
-                    final byte[] metadata = String.valueOf(index).getBytes(StandardCharsets.UTF_8);
-                    fileList.add(new InstallationFile(name, size, metadata));
+                    final byte[] metadata = String.valueOf(index).getBytes(
+                            StandardCharsets.UTF_8);
+                    fileList.add(
+                            new InstallationFile(LOCATION_DATA_APP, name, size, metadata, null));
                     break;
                 }
                 default:
diff --git a/services/core/java/com/android/server/input/InputManagerService.java b/services/core/java/com/android/server/input/InputManagerService.java
index 90358ca..ca06b47 100644
--- a/services/core/java/com/android/server/input/InputManagerService.java
+++ b/services/core/java/com/android/server/input/InputManagerService.java
@@ -79,6 +79,7 @@
 import android.view.KeyEvent;
 import android.view.PointerIcon;
 import android.view.Surface;
+import android.view.VerifiedInputEvent;
 import android.view.ViewConfiguration;
 import android.widget.Toast;
 
@@ -214,6 +215,7 @@
     private static native int nativeInjectInputEvent(long ptr, InputEvent event,
             int injectorPid, int injectorUid, int syncMode, int timeoutMillis,
             int policyFlags);
+    private static native VerifiedInputEvent nativeVerifyInputEvent(long ptr, InputEvent event);
     private static native void nativeToggleCapsLock(long ptr, int deviceId);
     private static native void nativeSetInputWindows(long ptr, InputWindowHandle[] windowHandles,
             int displayId);
@@ -223,7 +225,7 @@
             int displayId, InputApplicationHandle application);
     private static native void nativeSetFocusedDisplay(long ptr, int displayId);
     private static native boolean nativeTransferTouchFocus(long ptr,
-            InputChannel fromChannel, InputChannel toChannel);
+            IBinder fromChannelToken, IBinder toChannelToken);
     private static native void nativeSetPointerSpeed(long ptr, int speed);
     private static native void nativeSetShowTouches(long ptr, boolean enabled);
     private static native void nativeSetInteractive(long ptr, boolean interactive);
@@ -672,6 +674,11 @@
         }
     }
 
+    @Override // Binder call
+    public VerifiedInputEvent verifyInputEvent(InputEvent event) {
+        return nativeVerifyInputEvent(mPtr, event);
+    }
+
     /**
      * Gets information about the input device with the specified id.
      * @param deviceId The device id.
@@ -1554,14 +1561,29 @@
      * @return True if the transfer was successful.  False if the window with the
      * specified channel did not actually have touch focus at the time of the request.
      */
-    public boolean transferTouchFocus(InputChannel fromChannel, InputChannel toChannel) {
-        if (fromChannel == null) {
-            throw new IllegalArgumentException("fromChannel must not be null.");
-        }
-        if (toChannel == null) {
-            throw new IllegalArgumentException("toChannel must not be null.");
-        }
-        return nativeTransferTouchFocus(mPtr, fromChannel, toChannel);
+    public boolean transferTouchFocus(@NonNull InputChannel fromChannel,
+            @NonNull InputChannel toChannel) {
+        return nativeTransferTouchFocus(mPtr, fromChannel.getToken(), toChannel.getToken());
+    }
+
+    /**
+     * Atomically transfers touch focus from one window to another as identified by
+     * their input channels.  It is possible for multiple windows to have
+     * touch focus if they support split touch dispatch
+     * {@link android.view.WindowManager.LayoutParams#FLAG_SPLIT_TOUCH} but this
+     * method only transfers touch focus of the specified window without affecting
+     * other windows that may also have touch focus at the same time.
+     * @param fromChannelToken The channel token of a window that currently has touch focus.
+     * @param toChannelToken The channel token of the window that should receive touch focus in
+     * place of the first.
+     * @return True if the transfer was successful.  False if the window with the
+     * specified channel did not actually have touch focus at the time of the request.
+     */
+    public boolean transferTouchFocus(@NonNull IBinder fromChannelToken,
+            @NonNull IBinder toChannelToken) {
+        Objects.nonNull(fromChannelToken);
+        Objects.nonNull(toChannelToken);
+        return nativeTransferTouchFocus(mPtr, fromChannelToken, toChannelToken);
     }
 
     @Override // Binder call
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
index 9c42152..9f76e1e 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerInternal.java
@@ -34,6 +34,16 @@
  */
 public abstract class InputMethodManagerInternal {
     /**
+     * Listener for input method list changed events.
+     */
+    public interface InputMethodListListener {
+        /**
+         * Called with the list of the installed IMEs when it's updated.
+         */
+        void onInputMethodListUpdated(List<InputMethodInfo> info, @UserIdInt int userId);
+    }
+
+    /**
      * Called by the power manager to tell the input method manager whether it
      * should start watching for wake events.
      */
@@ -85,6 +95,11 @@
     public abstract boolean switchToInputMethod(String imeId, @UserIdInt int userId);
 
     /**
+     * Registers a new {@link InputMethodListListener}.
+     */
+    public abstract void registerInputMethodListListener(InputMethodListListener listener);
+
+    /**
      * Fake implementation of {@link InputMethodManagerInternal}.  All the methods do nothing.
      */
     private static final InputMethodManagerInternal NOP =
@@ -117,6 +132,10 @@
                 public boolean switchToInputMethod(String imeId, int userId) {
                     return false;
                 }
+
+                @Override
+                public void registerInputMethodListListener(InputMethodListListener listener) {
+                }
             };
 
     /**
diff --git a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
index 905a94f..47622f3 100644
--- a/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/InputMethodManagerService.java
@@ -154,6 +154,7 @@
 import com.android.server.EventLogTags;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
+import com.android.server.inputmethod.InputMethodManagerInternal.InputMethodListListener;
 import com.android.server.inputmethod.InputMethodSubtypeSwitchingController.ImeSubtypeListItem;
 import com.android.server.inputmethod.InputMethodUtils.InputMethodSettings;
 import com.android.server.statusbar.StatusBarManagerService;
@@ -172,6 +173,7 @@
 import java.util.List;
 import java.util.Locale;
 import java.util.WeakHashMap;
+import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.concurrent.atomic.AtomicInteger;
 
 /**
@@ -214,6 +216,7 @@
     static final int MSG_HARD_KEYBOARD_SWITCH_CHANGED = 4000;
 
     static final int MSG_SYSTEM_UNLOCK_USER = 5000;
+    static final int MSG_DISPATCH_ON_INPUT_METHOD_LIST_UPDATED = 5010;
 
     static final int MSG_INLINE_SUGGESTIONS_REQUEST = 6000;
 
@@ -689,6 +692,13 @@
     private final String mSlotIme;
 
     /**
+     * Registered {@link InputMethodListListeners}.
+     * This variable can be accessed from both of MainThread and BinderThread.
+     */
+    private final CopyOnWriteArrayList<InputMethodListListener> mInputMethodListListeners =
+            new CopyOnWriteArrayList<>();
+
+    /**
      * Internal state snapshot when {@link #MSG_START_INPUT} message is about to be posted to the
      * internal message queue. Any subsequent state change inside {@link InputMethodManagerService}
      * will not affect those tasks that are already posted.
@@ -3510,7 +3520,7 @@
     }
 
     /**
-     * This is kept due to {@link android.annotation.UnsupportedAppUsage} in
+     * This is kept due to {@code @UnsupportedAppUsage} in
      * {@link InputMethodManager#getInputMethodWindowVisibleHeight()} and a dependency in
      * {@link InputMethodService#onCreate()}.
      *
@@ -3946,10 +3956,18 @@
             case MSG_HARD_KEYBOARD_SWITCH_CHANGED:
                 mHardKeyboardListener.handleHardKeyboardStatusChange(msg.arg1 == 1);
                 return true;
-            case MSG_SYSTEM_UNLOCK_USER:
+            case MSG_SYSTEM_UNLOCK_USER: {
                 final int userId = msg.arg1;
                 onUnlockUser(userId);
                 return true;
+            }
+            case MSG_DISPATCH_ON_INPUT_METHOD_LIST_UPDATED: {
+                final int userId = msg.arg1;
+                final List<InputMethodInfo> imes = (List<InputMethodInfo>) msg.obj;
+                mInputMethodListListeners.forEach(
+                        listener -> listener.onInputMethodListUpdated(imes, userId));
+                return true;
+            }
 
             // ---------------------------------------------------------------
             case MSG_INLINE_SUGGESTIONS_REQUEST:
@@ -4142,6 +4160,11 @@
         // TODO: Make sure that mSwitchingController and mSettings are sharing the
         // the same enabled IMEs list.
         mSwitchingController.resetCircularListLocked(mContext);
+
+        // Notify InputMethodListListeners of the new installed InputMethods.
+        final List<InputMethodInfo> inputMethodList = new ArrayList<>(mMethodList);
+        mHandler.obtainMessage(MSG_DISPATCH_ON_INPUT_METHOD_LIST_UPDATED,
+                mSettings.getCurrentUserId(), 0 /* unused */, inputMethodList).sendToTarget();
     }
 
     // ----------------------------------------------------------------------
@@ -4606,6 +4629,11 @@
         public boolean switchToInputMethod(String imeId, int userId) {
             return mService.switchToInputMethod(imeId, userId);
         }
+
+        @Override
+        public void registerInputMethodListListener(InputMethodListListener listener) {
+            mService.mInputMethodListListeners.addIfAbsent(listener);
+        }
     }
 
     @BinderThread
diff --git a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
index d09c478..54af694 100644
--- a/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
+++ b/services/core/java/com/android/server/inputmethod/MultiClientInputMethodManagerService.java
@@ -207,6 +207,12 @@
                             reportNotSupported();
                             return false;
                         }
+
+                        @Override
+                        public void registerInputMethodListListener(
+                                InputMethodListListener listener) {
+                            reportNotSupported();
+                        }
                     });
         }
 
diff --git a/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java b/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
index 15dd646..b9a30bb 100644
--- a/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
+++ b/services/core/java/com/android/server/integrity/AppIntegrityManagerServiceImpl.java
@@ -23,6 +23,7 @@
 import static android.content.integrity.AppIntegrityManager.EXTRA_STATUS;
 import static android.content.integrity.AppIntegrityManager.STATUS_FAILURE;
 import static android.content.integrity.AppIntegrityManager.STATUS_SUCCESS;
+import static android.content.integrity.InstallerAllowedByManifestFormula.INSTALLER_CERTIFICATE_NOT_EVALUATED;
 import static android.content.integrity.IntegrityUtils.getHexDigest;
 import static android.content.pm.PackageManager.EXTRA_VERIFICATION_ID;
 
@@ -39,18 +40,26 @@
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManagerInternal;
+import android.content.pm.PackageParser;
+import android.content.pm.PackageUserState;
 import android.content.pm.ParceledListSlice;
 import android.content.pm.Signature;
+import android.content.pm.SigningInfo;
+import android.content.pm.parsing.ApkParseUtils;
+import android.content.pm.parsing.PackageInfoUtils;
+import android.content.pm.parsing.ParsedPackage;
 import android.net.Uri;
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.os.UserHandle;
+import android.provider.Settings;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.integrity.engine.RuleEvaluationEngine;
 import com.android.server.integrity.model.IntegrityCheckResult;
@@ -66,7 +75,9 @@
 import java.security.cert.CertificateException;
 import java.security.cert.CertificateFactory;
 import java.security.cert.X509Certificate;
+import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Collections;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
@@ -85,7 +96,7 @@
      * This string will be used as the "installer" for formula evaluation when the app is being
      * installed via ADB.
      */
-    private static final String ADB_INSTALLER = "adb";
+    public static final String ADB_INSTALLER = "adb";
 
     private static final String TAG = "AppIntegrityManagerServiceImpl";
 
@@ -96,8 +107,6 @@
     private static final String ALLOWED_INSTALLER_DELIMITER = ",";
     private static final String INSTALLER_PACKAGE_CERT_DELIMITER = "\\|";
 
-    private static final String INSTALLER_CERT_NOT_APPLICABLE = "";
-
     // Access to files inside mRulesDir is protected by mRulesLock;
     private final Context mContext;
     private final Handler mHandler;
@@ -105,6 +114,8 @@
     private final RuleEvaluationEngine mEvaluationEngine;
     private final IntegrityFileManager mIntegrityFileManager;
 
+    private final boolean mCheckIntegrityForRuleProviders;
+
     /** Create an instance of {@link AppIntegrityManagerServiceImpl}. */
     public static AppIntegrityManagerServiceImpl create(Context context) {
         HandlerThread handlerThread = new HandlerThread("AppIntegrityManagerServiceHandler");
@@ -115,7 +126,13 @@
                 LocalServices.getService(PackageManagerInternal.class),
                 RuleEvaluationEngine.getRuleEvaluationEngine(),
                 IntegrityFileManager.getInstance(),
-                handlerThread.getThreadHandler());
+                handlerThread.getThreadHandler(),
+                Settings.Global.getInt(
+                        context.getContentResolver(),
+                        Settings.Global.INTEGRITY_CHECK_INCLUDES_RULE_PROVIDER,
+                        0)
+                        == 1
+        );
     }
 
     @VisibleForTesting
@@ -124,12 +141,14 @@
             PackageManagerInternal packageManagerInternal,
             RuleEvaluationEngine evaluationEngine,
             IntegrityFileManager integrityFileManager,
-            Handler handler) {
+            Handler handler,
+            boolean checkIntegrityForRuleProviders) {
         mContext = context;
         mPackageManagerInternal = packageManagerInternal;
         mEvaluationEngine = evaluationEngine;
         mIntegrityFileManager = integrityFileManager;
         mHandler = handler;
+        mCheckIntegrityForRuleProviders = checkIntegrityForRuleProviders;
 
         IntentFilter integrityVerificationFilter = new IntentFilter();
         integrityVerificationFilter.addAction(ACTION_PACKAGE_NEEDS_INTEGRITY_VERIFICATION);
@@ -170,7 +189,8 @@
                         success = false;
                     }
 
-                    StatsLog.write(StatsLog.INTEGRITY_RULES_PUSHED, success, ruleProvider, version);
+                    FrameworkStatsLog.write(FrameworkStatsLog.INTEGRITY_RULES_PUSHED, success,
+                            ruleProvider, version);
 
                     Intent intent = new Intent();
                     intent.putExtra(EXTRA_STATUS, success ? STATUS_SUCCESS : STATUS_FAILURE);
@@ -207,6 +227,17 @@
                 : "";
     }
 
+    @Override
+    public ParceledListSlice<Rule> getCurrentRules() {
+        List<Rule> rules = Collections.emptyList();
+        try {
+            rules = mIntegrityFileManager.readRules(/* appInstallMetadata= */ null);
+        } catch (Exception e) {
+            Slog.e(TAG, "Error getting current rules", e);
+        }
+        return new ParceledListSlice<>(rules);
+    }
+
     private void handleIntegrityVerification(Intent intent) {
         int verificationId = intent.getIntExtra(EXTRA_VERIFICATION_ID, -1);
 
@@ -228,33 +259,38 @@
             String installerPackageName = getInstallerPackageName(intent);
 
             // Skip integrity verification if the verifier is doing the install.
-            if (isRuleProvider(installerPackageName)) {
+            if (!mCheckIntegrityForRuleProviders
+                    && isRuleProvider(installerPackageName)) {
                 Slog.i(TAG, "Verifier doing the install. Skipping integrity check.");
                 mPackageManagerInternal.setIntegrityVerificationResult(
                         verificationId, PackageManagerInternal.INTEGRITY_VERIFICATION_ALLOW);
                 return;
             }
 
-            String appCert = getCertificateFingerprint(packageInfo);
+            List<String> appCertificates = getCertificateFingerprint(packageInfo);
+            List<String> installerCertificates =
+                    getInstallerCertificateFingerprint(installerPackageName);
+
+            Slog.w(TAG, appCertificates.toString());
 
             AppInstallMetadata.Builder builder = new AppInstallMetadata.Builder();
 
             builder.setPackageName(getPackageNameNormalized(packageName));
-            builder.setAppCertificate(appCert == null ? "" : appCert);
+            builder.setAppCertificates(appCertificates);
             builder.setVersionCode(intent.getLongExtra(EXTRA_LONG_VERSION_CODE, -1));
             builder.setInstallerName(getPackageNameNormalized(installerPackageName));
-            builder.setInstallerCertificate(
-                    getInstallerCertificateFingerprint(installerPackageName));
+            builder.setInstallerCertificates(installerCertificates);
             builder.setIsPreInstalled(isSystemApp(packageName));
+            builder.setAllowedInstallersAndCert(getAllowedInstallers(packageInfo));
 
             AppInstallMetadata appInstallMetadata = builder.build();
-            Map<String, String> allowedInstallers = getAllowedInstallers(packageInfo);
 
             Slog.i(
                     TAG,
-                    "To be verified: " + appInstallMetadata + " installers " + allowedInstallers);
+                    "To be verified: " + appInstallMetadata + " installers " + getAllowedInstallers(
+                            packageInfo));
             IntegrityCheckResult result =
-                    mEvaluationEngine.evaluate(appInstallMetadata, allowedInstallers);
+                    mEvaluationEngine.evaluate(appInstallMetadata);
             Slog.i(
                     TAG,
                     "Integrity check result: "
@@ -262,10 +298,10 @@
                             + " due to "
                             + result.getMatchedRules());
 
-            StatsLog.write(
-                    StatsLog.INTEGRITY_CHECK_RESULT_REPORTED,
+            FrameworkStatsLog.write(
+                    FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED,
                     packageName,
-                    appCert,
+                    appCertificates.toString(),
                     appInstallMetadata.getVersionCode(),
                     installerPackageName,
                     result.getLoggingResponse(),
@@ -374,25 +410,29 @@
         }
     }
 
-    private String getCertificateFingerprint(@NonNull PackageInfo packageInfo) {
-        return getFingerprint(getSignature(packageInfo));
-    }
-
-    private String getInstallerCertificateFingerprint(String installer) {
+    private List<String> getInstallerCertificateFingerprint(String installer) {
         if (installer.equals(ADB_INSTALLER) || installer.equals(UNKNOWN_INSTALLER)) {
-            return INSTALLER_CERT_NOT_APPLICABLE;
+            return Collections.emptyList();
         }
         try {
             PackageInfo installerInfo =
                     mContext.getPackageManager()
-                            .getPackageInfo(installer, PackageManager.GET_SIGNATURES);
+                            .getPackageInfo(installer, PackageManager.GET_SIGNING_CERTIFICATES);
             return getCertificateFingerprint(installerInfo);
         } catch (PackageManager.NameNotFoundException e) {
             Slog.i(TAG, "Installer package " + installer + " not found.");
-            return "";
+            return Collections.emptyList();
         }
     }
 
+    private List<String> getCertificateFingerprint(@NonNull PackageInfo packageInfo) {
+        ArrayList<String> certificateFingerprints = new ArrayList();
+        for (Signature signature : getSignatures(packageInfo)) {
+            certificateFingerprints.add(getFingerprint(signature));
+        }
+        return certificateFingerprints;
+    }
+
     /** Get the allowed installers and their associated certificate hashes from <meta-data> tag. */
     private Map<String, String> getAllowedInstallers(@NonNull PackageInfo packageInfo) {
         Map<String, String> packageCertMap = new HashMap<>();
@@ -409,9 +449,9 @@
                         String packageName = getPackageNameNormalized(packageAndCert[0]);
                         String cert = packageAndCert[1];
                         packageCertMap.put(packageName, cert);
-                    } else if (packageAndCert.length == 1
-                            && packageAndCert[0].equals(ADB_INSTALLER)) {
-                        packageCertMap.put(ADB_INSTALLER, INSTALLER_CERT_NOT_APPLICABLE);
+                    } else if (packageAndCert.length == 1) {
+                        packageCertMap.put(getPackageNameNormalized(packageAndCert[0]),
+                                INSTALLER_CERTIFICATE_NOT_EVALUATED);
                     }
                 }
             }
@@ -420,12 +460,15 @@
         return packageCertMap;
     }
 
-    private static Signature getSignature(@NonNull PackageInfo packageInfo) {
-        if (packageInfo.signatures == null || packageInfo.signatures.length < 1) {
+    private static Signature[] getSignatures(@NonNull PackageInfo packageInfo) {
+        SigningInfo signingInfo = packageInfo.signingInfo;
+
+        if (signingInfo == null || signingInfo.getApkContentsSigners().length < 1) {
             throw new IllegalArgumentException("Package signature not found in " + packageInfo);
         }
-        // Only the first element is guaranteed to be present.
-        return packageInfo.signatures[0];
+
+        // We are only interested in evaluating the active signatures.
+        return signingInfo.getApkContentsSigners();
     }
 
     private static String getFingerprint(Signature cert) {
@@ -464,20 +507,14 @@
         if (installationPath == null) {
             throw new IllegalArgumentException("Installation path is null, package not found");
         }
-        PackageInfo packageInfo;
+
+        PackageParser parser = new PackageParser();
         try {
-            // The installation path will be a directory for a multi-apk install on L+
-            if (installationPath.isDirectory()) {
-                packageInfo = getMultiApkInfo(installationPath);
-            } else {
-                packageInfo =
-                        mContext.getPackageManager()
-                                .getPackageArchiveInfo(
-                                        installationPath.getPath(),
-                                        PackageManager.GET_SIGNATURES
-                                                | PackageManager.GET_META_DATA);
-            }
-            return packageInfo;
+            ParsedPackage pkg = parser.parseParsedPackage(installationPath, 0, false);
+            int flags = PackageManager.GET_SIGNING_CERTIFICATES | PackageManager.GET_META_DATA;
+            ApkParseUtils.collectCertificates(pkg, false);
+            return PackageInfoUtils.generate(pkg, null, flags, 0, 0, null, new PackageUserState(),
+                    UserHandle.getCallingUserId());
         } catch (Exception e) {
             throw new IllegalArgumentException("Exception reading " + dataUri, e);
         }
@@ -490,7 +527,8 @@
                 mContext.getPackageManager()
                         .getPackageArchiveInfo(
                                 baseFile.getAbsolutePath(),
-                                PackageManager.GET_SIGNATURES | PackageManager.GET_META_DATA);
+                                PackageManager.GET_SIGNING_CERTIFICATES
+                                        | PackageManager.GET_META_DATA);
 
         if (basePackageInfo == null) {
             for (File apkFile : multiApkDirectory.listFiles()) {
@@ -584,12 +622,13 @@
     }
 
     private List<String> getAllowedRuleProviders() {
-        return Arrays.asList(mContext.getResources().getStringArray(
-                R.array.config_integrityRuleProviderPackages));
+        return Arrays.asList(
+                mContext.getResources()
+                        .getStringArray(R.array.config_integrityRuleProviderPackages));
     }
 
     private boolean isRuleProvider(String installerPackageName) {
-        return getAllowedRuleProviders().stream().anyMatch(
-                ruleProvider -> ruleProvider.equals(installerPackageName));
+        return getAllowedRuleProviders().stream()
+                .anyMatch(ruleProvider -> ruleProvider.equals(installerPackageName));
     }
 }
diff --git a/services/core/java/com/android/server/integrity/IntegrityFileManager.java b/services/core/java/com/android/server/integrity/IntegrityFileManager.java
index fffe7d9..7f0231e 100644
--- a/services/core/java/com/android/server/integrity/IntegrityFileManager.java
+++ b/services/core/java/com/android/server/integrity/IntegrityFileManager.java
@@ -147,19 +147,21 @@
     /**
      * Read rules from persistent storage.
      *
-     * @param appInstallMetadata information about the install used to select rules to read
+     * @param appInstallMetadata information about the install used to select rules to read. If
+     *     null, all rules will be read.
      */
-    public List<Rule> readRules(AppInstallMetadata appInstallMetadata)
+    public List<Rule> readRules(@Nullable AppInstallMetadata appInstallMetadata)
             throws IOException, RuleParseException {
         synchronized (RULES_LOCK) {
             // Try to identify indexes from the index file.
-            List<RuleIndexRange> ruleReadingIndexes;
-            try {
-                ruleReadingIndexes =
-                        mRuleIndexingController.identifyRulesToEvaluate(appInstallMetadata);
-            } catch (Exception e) {
-                Slog.w(TAG, "Error identifying the rule indexes. Trying unindexed.", e);
-                ruleReadingIndexes = Collections.emptyList();
+            List<RuleIndexRange> ruleReadingIndexes = Collections.emptyList();
+            if (appInstallMetadata != null) {
+                try {
+                    ruleReadingIndexes =
+                            mRuleIndexingController.identifyRulesToEvaluate(appInstallMetadata);
+                } catch (Exception e) {
+                    Slog.w(TAG, "Error identifying the rule indexes. Trying unindexed.", e);
+                }
             }
 
             // Read the rules based on the index information when available.
diff --git a/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
index 79e69e1..61da45d 100644
--- a/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
+++ b/services/core/java/com/android/server/integrity/engine/RuleEvaluationEngine.java
@@ -17,9 +17,6 @@
 package com.android.server.integrity.engine;
 
 import android.content.integrity.AppInstallMetadata;
-import android.content.integrity.AtomicFormula;
-import android.content.integrity.CompoundFormula;
-import android.content.integrity.IntegrityFormula;
 import android.content.integrity.Rule;
 import android.util.Slog;
 
@@ -28,10 +25,8 @@
 import com.android.server.integrity.model.IntegrityCheckResult;
 
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
-import java.util.Map;
-import java.util.Optional;
 
 /**
  * The engine used to evaluate rules against app installs.
@@ -69,16 +64,15 @@
      * @return result of the integrity check
      */
     public IntegrityCheckResult evaluate(
-            AppInstallMetadata appInstallMetadata, Map<String, String> allowedInstallers) {
+            AppInstallMetadata appInstallMetadata) {
         List<Rule> rules = loadRules(appInstallMetadata);
-        allowedInstallersRule(allowedInstallers).ifPresent(rules::add);
         return RuleEvaluator.evaluateRules(rules, appInstallMetadata);
     }
 
     private List<Rule> loadRules(AppInstallMetadata appInstallMetadata) {
         if (!mIntegrityFileManager.initialized()) {
-            Slog.w(TAG, "Integrity rule files are not available. Evaluating only manifest rules.");
-            return new ArrayList<>();
+            Slog.w(TAG, "Integrity rule files are not available.");
+            return Collections.emptyList();
         }
 
         try {
@@ -88,41 +82,4 @@
             return new ArrayList<>();
         }
     }
-
-    private static Optional<Rule> allowedInstallersRule(Map<String, String> allowedInstallers) {
-        if (allowedInstallers.isEmpty()) {
-            return Optional.empty();
-        }
-
-        List<IntegrityFormula> formulas = new ArrayList<>(allowedInstallers.size());
-        allowedInstallers.forEach(
-                (installer, cert) -> {
-                    formulas.add(allowedInstallerFormula(installer, cert));
-                });
-
-        // We need this special case since OR-formulas require at least two operands.
-        IntegrityFormula allInstallersFormula =
-                formulas.size() == 1
-                        ? formulas.get(0)
-                        : new CompoundFormula(CompoundFormula.OR, formulas);
-
-        return Optional.of(
-                new Rule(
-                        new CompoundFormula(
-                                CompoundFormula.NOT, Arrays.asList(allInstallersFormula)),
-                        Rule.DENY));
-    }
-
-    private static IntegrityFormula allowedInstallerFormula(String installer, String cert) {
-        return new CompoundFormula(
-                CompoundFormula.AND,
-                Arrays.asList(
-                        new AtomicFormula.StringAtomicFormula(
-                                AtomicFormula.INSTALLER_NAME,
-                                installer,
-                                /* isHashedValue= */ false),
-                        new AtomicFormula.StringAtomicFormula(
-                                AtomicFormula.INSTALLER_CERTIFICATE, cert, /* isHashedValue= */
-                                false)));
-    }
 }
diff --git a/services/core/java/com/android/server/integrity/model/ComponentBitSize.java b/services/core/java/com/android/server/integrity/model/ComponentBitSize.java
index c389963..94e6708 100644
--- a/services/core/java/com/android/server/integrity/model/ComponentBitSize.java
+++ b/services/core/java/com/android/server/integrity/model/ComponentBitSize.java
@@ -29,13 +29,14 @@
     public static final int KEY_BITS = 4;
     public static final int OPERATOR_BITS = 3;
     public static final int CONNECTOR_BITS = 2;
-    public static final int SEPARATOR_BITS = 2;
+    public static final int SEPARATOR_BITS = 3;
     public static final int VALUE_SIZE_BITS = 8;
     public static final int IS_HASHED_BITS = 1;
 
     public static final int ATOMIC_FORMULA_START = 0;
     public static final int COMPOUND_FORMULA_START = 1;
     public static final int COMPOUND_FORMULA_END = 2;
+    public static final int INSTALLER_ALLOWED_BY_MANIFEST_START = 3;
 
     public static final int DEFAULT_FORMAT_VERSION = 1;
     public static final int SIGNAL_BIT = 1;
diff --git a/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java b/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
index 1b605c7..1fa0670 100644
--- a/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
+++ b/services/core/java/com/android/server/integrity/model/IntegrityCheckResult.java
@@ -18,7 +18,8 @@
 
 import android.annotation.Nullable;
 import android.content.integrity.Rule;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.util.Collections;
 import java.util.List;
@@ -86,11 +87,11 @@
      */
     public int getLoggingResponse() {
         if (getEffect() == Effect.DENY) {
-            return StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__REJECTED;
+            return FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__REJECTED;
         } else if (getEffect() == Effect.ALLOW && getMatchedRules().isEmpty()) {
-            return StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__ALLOWED;
+            return FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__ALLOWED;
         } else if (getEffect() == Effect.ALLOW && !getMatchedRules().isEmpty()) {
-            return StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__FORCE_ALLOWED;
+            return FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__FORCE_ALLOWED;
         } else {
             throw new IllegalStateException("IntegrityCheckResult is not valid.");
         }
diff --git a/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java b/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
index 4b8efaf..11e8d91 100644
--- a/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
+++ b/services/core/java/com/android/server/integrity/parser/RuleBinaryParser.java
@@ -23,6 +23,7 @@
 import static com.android.server.integrity.model.ComponentBitSize.CONNECTOR_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.EFFECT_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.FORMAT_VERSION_BITS;
+import static com.android.server.integrity.model.ComponentBitSize.INSTALLER_ALLOWED_BY_MANIFEST_START;
 import static com.android.server.integrity.model.ComponentBitSize.IS_HASHED_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.KEY_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.OPERATOR_BITS;
@@ -35,6 +36,7 @@
 
 import android.content.integrity.AtomicFormula;
 import android.content.integrity.CompoundFormula;
+import android.content.integrity.InstallerAllowedByManifestFormula;
 import android.content.integrity.IntegrityFormula;
 import android.content.integrity.Rule;
 
@@ -140,6 +142,8 @@
                 return parseCompoundFormula(bitInputStream);
             case COMPOUND_FORMULA_END:
                 return null;
+            case INSTALLER_ALLOWED_BY_MANIFEST_START:
+                return new InstallerAllowedByManifestFormula();
             default:
                 throw new IllegalArgumentException(
                         String.format("Unknown formula separator: %s", separator));
diff --git a/services/core/java/com/android/server/integrity/parser/RuleIndexingController.java b/services/core/java/com/android/server/integrity/parser/RuleIndexingController.java
index 87eee4e..60e8cce 100644
--- a/services/core/java/com/android/server/integrity/parser/RuleIndexingController.java
+++ b/services/core/java/com/android/server/integrity/parser/RuleIndexingController.java
@@ -63,10 +63,12 @@
                 searchIndexingKeysRangeContainingKey(
                         sPackageNameBasedIndexes, appInstallMetadata.getPackageName()));
 
-        // Add the range for app certificate indexes rules.
-        indexRanges.add(
-                searchIndexingKeysRangeContainingKey(
-                        sAppCertificateBasedIndexes, appInstallMetadata.getAppCertificate()));
+        // Add the range for app certificate indexes rules of all certificates.
+        for (String appCertificate : appInstallMetadata.getAppCertificates()) {
+            indexRanges.add(
+                    searchIndexingKeysRangeContainingKey(
+                            sAppCertificateBasedIndexes, appCertificate));
+        }
 
         // Add the range for unindexed rules.
         indexRanges.add(
diff --git a/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java b/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
index d014996..8ba5870 100644
--- a/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
+++ b/services/core/java/com/android/server/integrity/serializer/RuleBinarySerializer.java
@@ -23,6 +23,7 @@
 import static com.android.server.integrity.model.ComponentBitSize.DEFAULT_FORMAT_VERSION;
 import static com.android.server.integrity.model.ComponentBitSize.EFFECT_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.FORMAT_VERSION_BITS;
+import static com.android.server.integrity.model.ComponentBitSize.INSTALLER_ALLOWED_BY_MANIFEST_START;
 import static com.android.server.integrity.model.ComponentBitSize.KEY_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.OPERATOR_BITS;
 import static com.android.server.integrity.model.ComponentBitSize.SEPARATOR_BITS;
@@ -36,6 +37,7 @@
 
 import android.content.integrity.AtomicFormula;
 import android.content.integrity.CompoundFormula;
+import android.content.integrity.InstallerAllowedByManifestFormula;
 import android.content.integrity.IntegrityFormula;
 import android.content.integrity.IntegrityUtils;
 import android.content.integrity.Rule;
@@ -87,7 +89,7 @@
             }
 
             if (rules.size() > TOTAL_RULE_SIZE_LIMIT) {
-                throw new IllegalArgumentException("Too many rules provided.");
+                throw new IllegalArgumentException("Too many rules provided: " + rules.size());
             }
 
             // Determine the indexing groups and the order of the rules within each indexed group.
@@ -134,7 +136,11 @@
                         .map(list -> list.size())
                         .collect(Collectors.summingInt(Integer::intValue));
         if (totalRuleCount > ruleSizeLimit) {
-            throw new IllegalArgumentException("Too many rules provided in the indexing group.");
+            throw new IllegalArgumentException(
+                    "Too many rules provided in the indexing group. Provided "
+                            + totalRuleCount
+                            + " limit "
+                            + ruleSizeLimit);
         }
     }
 
@@ -198,6 +204,8 @@
             serializeAtomicFormula((AtomicFormula) formula, bitOutputStream);
         } else if (formula instanceof CompoundFormula) {
             serializeCompoundFormula((CompoundFormula) formula, bitOutputStream);
+        } else if (formula instanceof InstallerAllowedByManifestFormula) {
+            bitOutputStream.setNext(SEPARATOR_BITS, INSTALLER_ALLOWED_BY_MANIFEST_START);
         } else {
             throw new IllegalArgumentException(
                     String.format("Invalid formula type: %s", formula.getClass()));
diff --git a/services/core/java/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifier.java b/services/core/java/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifier.java
index 6f7d172..e723559 100644
--- a/services/core/java/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifier.java
+++ b/services/core/java/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifier.java
@@ -84,6 +84,7 @@
                 return getIndexingDetailsForStringAtomicFormula(
                         (AtomicFormula.StringAtomicFormula) formula);
             case IntegrityFormula.LONG_ATOMIC_FORMULA_TAG:
+            case IntegrityFormula.INSTALLER_ALLOWED_BY_MANIFEST_FORMULA_TAG:
             case IntegrityFormula.BOOLEAN_ATOMIC_FORMULA_TAG:
                 // Package name and app certificate related formulas are string atomic formulas.
                 return new RuleIndexingDetails(NOT_INDEXED);
diff --git a/services/core/java/com/android/server/lights/LightsService.java b/services/core/java/com/android/server/lights/LightsService.java
index 5683e69..a42dec8 100644
--- a/services/core/java/com/android/server/lights/LightsService.java
+++ b/services/core/java/com/android/server/lights/LightsService.java
@@ -40,6 +40,7 @@
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.util.Preconditions;
+import com.android.internal.BrightnessSynchronizer;
 import com.android.server.SystemService;
 
 import java.util.ArrayList;
@@ -249,28 +250,21 @@
         }
 
         @Override
-        public void setBrightnessFloat(float brightness) {
-            if (!Float.isNaN(brightness)) {
-                setBrightness(brightness, 0, BRIGHTNESS_MODE_USER);
-            }
-        }
-
-        @Override
-        public void setBrightness(int brightness) {
+        public void setBrightness(float brightness) {
             setBrightness(brightness, BRIGHTNESS_MODE_USER);
         }
 
         @Override
-        public void setBrightness(int brightness, int brightnessMode) {
-            setBrightness(Float.NaN, brightness, brightnessMode);
-        }
-
-        private void setBrightness(float brightnessFloat, int brightness, int brightnessMode) {
+        public void setBrightness(float brightness, int brightnessMode) {
+            if (Float.isNaN(brightness)) {
+                Slog.w(TAG, "Brightness is not valid: " + brightness);
+                return;
+            }
             synchronized (this) {
                 // LOW_PERSISTENCE cannot be manually set
                 if (brightnessMode == BRIGHTNESS_MODE_LOW_PERSISTENCE) {
                     Slog.w(TAG, "setBrightness with LOW_PERSISTENCE unexpected #" + mHwLight.id
-                            + ": brightness=0x" + Integer.toHexString(brightness));
+                            + ": brightness=" + brightness);
                     return;
                 }
                 // Ideally, we'd like to set the brightness mode through the SF/HWC as well, but
@@ -278,6 +272,7 @@
                 // anything but USER or the device shouldBeInLowPersistenceMode().
                 if (brightnessMode == BRIGHTNESS_MODE_USER && !shouldBeInLowPersistenceMode()
                         && mSurfaceControlMaximumBrightness == 255) {
+                    // New system
                     // TODO: the last check should be mSurfaceControlMaximumBrightness != 0; the
                     // reason we enforce 255 right now is to stay consistent with the old path. In
                     // the future, the framework should be refactored so that brightness is a float
@@ -286,17 +281,12 @@
                     if (DEBUG) {
                         Slog.d(TAG, "Using new setBrightness path!");
                     }
-
-                    if (!Float.isNaN(brightnessFloat)) {
-                        SurfaceControl.setDisplayBrightness(mDisplayToken, brightnessFloat);
-                    } else if (brightness == 0) {
-                        SurfaceControl.setDisplayBrightness(mDisplayToken, -1.0f);
-                    } else {
-                        SurfaceControl.setDisplayBrightness(mDisplayToken,
-                                (float) (brightness - 1) / (mSurfaceControlMaximumBrightness - 1));
-                    }
+                    SurfaceControl.setDisplayBrightness(mDisplayToken, brightness);
                 } else {
-                    int color = brightness & 0x000000ff;
+                    // Old system
+                    int brightnessInt = BrightnessSynchronizer.brightnessFloatToInt(
+                            getContext(), brightness);
+                    int color = brightnessInt & 0x000000ff;
                     color = 0xff000000 | (color << 16) | (color << 8) | color;
                     setLightLocked(color, LIGHT_FLASH_NONE, 0, 0, brightnessMode);
                 }
diff --git a/services/core/java/com/android/server/lights/LogicalLight.java b/services/core/java/com/android/server/lights/LogicalLight.java
index 33dfbb4..7491cec 100644
--- a/services/core/java/com/android/server/lights/LogicalLight.java
+++ b/services/core/java/com/android/server/lights/LogicalLight.java
@@ -57,18 +57,12 @@
     /**
      * Set the brightness of a display.
      */
-    public abstract void setBrightness(int brightness);
+    public abstract void setBrightness(float brightness);
 
     /**
      * Set the brightness and mode of a display.
      */
-    public abstract void setBrightness(int brightness, int brightnessMode);
-
-    /**
-     * Set the brightness of a display using the brightness range defines in a
-     * display-device-configuration file.
-     */
-    public abstract void setBrightnessFloat(float brightness);
+    public abstract void setBrightness(float brightness, int brightnessMode);
 
     /**
      * Set the color of a light.
diff --git a/services/core/java/com/android/server/location/AbstractLocationProvider.java b/services/core/java/com/android/server/location/AbstractLocationProvider.java
index 5afa48a..997f21c 100644
--- a/services/core/java/com/android/server/location/AbstractLocationProvider.java
+++ b/services/core/java/com/android/server/location/AbstractLocationProvider.java
@@ -21,6 +21,7 @@
 import android.location.Location;
 import android.os.Binder;
 import android.os.Bundle;
+import android.util.ArraySet;
 
 import com.android.internal.location.ProviderProperties;
 import com.android.internal.location.ProviderRequest;
@@ -120,7 +121,8 @@
             if (providerPackageNames.equals(this.providerPackageNames)) {
                 return this;
             } else {
-                return new State(allowed, properties, providerPackageNames);
+                return new State(allowed, properties,
+                        Collections.unmodifiableSet(new ArraySet<>(providerPackageNames)));
             }
         }
 
@@ -175,7 +177,6 @@
         }
     }
 
-    protected final Context mContext;
     protected final Executor mExecutor;
 
     // we use a lock-free implementation to update state to ensure atomicity between updating the
@@ -184,13 +185,11 @@
     // before it was set, and should not miss any updates that occur after it was set).
     private final AtomicReference<InternalState> mInternalState;
 
-    protected AbstractLocationProvider(Context context, Executor executor) {
-        this(context, executor, Collections.singleton(context.getPackageName()));
+    protected AbstractLocationProvider(Executor executor, Context context) {
+        this(executor, Collections.singleton(context.getPackageName()));
     }
 
-    protected AbstractLocationProvider(Context context, Executor executor,
-            Set<String> packageNames) {
-        mContext = context;
+    protected AbstractLocationProvider(Executor executor, Set<String> packageNames) {
         mExecutor = executor;
         mInternalState = new AtomicReference<>(
                 new InternalState(null, State.EMPTY_STATE.withProviderPackageNames(packageNames)));
@@ -200,7 +199,7 @@
      * Sets the listener and returns the state at the moment the listener was set. The listener can
      * expect to receive all state updates from after this point.
      */
-    State setListener(@Nullable Listener listener) {
+    protected State setListener(@Nullable Listener listener) {
         return mInternalState.updateAndGet(
                 internalState -> internalState.withListener(listener)).state;
     }
@@ -208,14 +207,14 @@
     /**
      * Retrieves the state of the provider.
      */
-    State getState() {
+    public State getState() {
         return mInternalState.get().state;
     }
 
     /**
      * Sets the state of the provider to the new state.
      */
-    void setState(State newState) {
+    protected void setState(State newState) {
         InternalState oldInternalState = mInternalState.getAndUpdate(
                 internalState -> internalState.withState(newState));
         if (newState.equals(oldInternalState.state)) {
@@ -355,7 +354,7 @@
     /**
      * Always invoked on the provider executor.
      */
-    protected void onExtraCommand(int uid, int pid, String command, Bundle extras) {}
+    protected abstract void onExtraCommand(int uid, int pid, String command, Bundle extras);
 
     /**
      * Requests a provider to enable itself for the given user id.
@@ -368,7 +367,7 @@
     /**
      * Always invoked on the provider executor.
      */
-    protected void onRequestSetAllowed(boolean allowed) {}
+    protected abstract void onRequestSetAllowed(boolean allowed);
 
     /**
      * Dumps debug or log information. May be invoked from any thread.
diff --git a/services/core/java/com/android/server/location/AppForegroundHelper.java b/services/core/java/com/android/server/location/AppForegroundHelper.java
new file mode 100644
index 0000000..8ddfc65
--- /dev/null
+++ b/services/core/java/com/android/server/location/AppForegroundHelper.java
@@ -0,0 +1,131 @@
+/*
+ * 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.server.location;
+
+import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE;
+import static android.app.ActivityManager.RunningAppProcessInfo.Importance;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager;
+import android.content.Context;
+import android.os.Binder;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.Preconditions;
+import com.android.server.FgThread;
+
+import java.util.Objects;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * Provides accessors and listeners for all application foreground status. An application is
+ * considered foreground if it's uid's importance level is at or more important than
+ * {@link android.app.ActivityManager.RunningAppProcessInfo#IMPORTANCE_FOREGROUND_SERVICE}.
+ */
+public class AppForegroundHelper {
+
+    /**
+     * Listener for application foreground state changes.
+     */
+    public interface AppForegroundListener {
+        /**
+         * Called when an application's foreground state changes.
+         */
+        void onAppForegroundChanged(int uid, boolean foreground);
+    }
+
+    // importance constants decrement with increasing importance - this is our limit for an
+    // importance level we consider foreground.
+    private static final int FOREGROUND_IMPORTANCE_CUTOFF = IMPORTANCE_FOREGROUND_SERVICE;
+
+    private static boolean isForeground(@Importance int importance) {
+        return importance <= FOREGROUND_IMPORTANCE_CUTOFF;
+    }
+
+    private final Context mContext;
+    private final CopyOnWriteArrayList<AppForegroundListener> mListeners;
+
+    @GuardedBy("this")
+    @Nullable private ActivityManager mActivityManager;
+
+    public AppForegroundHelper(Context context) {
+        mContext = context;
+        mListeners = new CopyOnWriteArrayList<>();
+    }
+
+    /** Called when system is ready. */
+    public synchronized void onSystemReady() {
+        if (mActivityManager != null) {
+            return;
+        }
+
+        mActivityManager = Objects.requireNonNull(mContext.getSystemService(ActivityManager.class));
+        mActivityManager.addOnUidImportanceListener(this::onAppForegroundChanged,
+                FOREGROUND_IMPORTANCE_CUTOFF);
+    }
+
+    /**
+     * Adds a listener for app foreground changed events. Callbacks occur on an unspecified thread.
+     */
+    public void addListener(AppForegroundListener listener) {
+        mListeners.add(listener);
+    }
+
+    /**
+     * Removes a listener for app foreground changed events.
+     */
+    public void removeListener(AppForegroundListener listener) {
+        mListeners.remove(listener);
+    }
+
+    private void onAppForegroundChanged(int uid, @Importance int importance) {
+        // invoked on ui thread, move to fg thread so we don't block the ui thread
+        boolean foreground = isForeground(importance);
+        FgThread.getHandler().post(() -> {
+            for (AppForegroundListener listener : mListeners) {
+                listener.onAppForegroundChanged(uid, foreground);
+            }
+        });
+    }
+
+    /**
+     * Whether the given uid is currently foreground.
+     */
+    public boolean isAppForeground(int uid) {
+        return isForeground(getImportance(uid));
+    }
+
+    /**
+     * Retrieves the current importance of the given uid.
+     *
+     * @deprecated Prefer {@link #isAppForeground(int)}.
+     */
+    @Deprecated
+    @Importance
+    public int getImportance(int uid) {
+        synchronized (this) {
+            Preconditions.checkState(mActivityManager != null);
+        }
+
+        long identity = Binder.clearCallingIdentity();
+        try {
+            return mActivityManager.getUidImportance(uid);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/location/GeofenceManager.java b/services/core/java/com/android/server/location/GeofenceManager.java
index 81c06d7..4e9c067 100644
--- a/services/core/java/com/android/server/location/GeofenceManager.java
+++ b/services/core/java/com/android/server/location/GeofenceManager.java
@@ -77,7 +77,7 @@
     private final AppOpsManager mAppOps;
     private final PowerManager.WakeLock mWakeLock;
 
-    private final LocationSettingsStore mSettingsStore;
+    private final SettingsHelper mSettingsStore;
 
     private final Object mLock = new Object();
 
@@ -111,7 +111,7 @@
      */
     private boolean mPendingUpdate;
 
-    public GeofenceManager(Context context, LocationSettingsStore settingsStore) {
+    public GeofenceManager(Context context, SettingsHelper settingsStore) {
         mContext = context;
         mHandler = new GeofenceHandler(FgThread.getHandler().getLooper());
 
diff --git a/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java b/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java
new file mode 100644
index 0000000..09af655
--- /dev/null
+++ b/services/core/java/com/android/server/location/GnssAntennaInfoProvider.java
@@ -0,0 +1,178 @@
+/*
+ * 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.server.location;
+
+import android.content.Context;
+import android.location.GnssAntennaInfo;
+import android.location.IGnssAntennaInfoListener;
+import android.os.Handler;
+import android.os.RemoteException;
+import android.util.Log;
+
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.util.List;
+
+/**
+ * An base implementation for GNSS antenna info provider. It abstracts out the responsibility of
+ * handling listeners, while still allowing technology specific implementations to be built.
+ *
+ * @hide
+ */
+public abstract class GnssAntennaInfoProvider
+        extends RemoteListenerHelper<Void, IGnssAntennaInfoListener> {
+    private static final String TAG = "GnssAntennaInfoProvider";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private final GnssAntennaInfoProviderNative mNative;
+
+    private boolean mIsListeningStarted;
+
+    protected GnssAntennaInfoProvider(Context context, Handler handler) {
+        this(context, handler, new GnssAntennaInfoProviderNative());
+    }
+
+    @VisibleForTesting
+    public GnssAntennaInfoProvider(
+            Context context, Handler handler, GnssAntennaInfoProviderNative aNative) {
+        super(context, handler, TAG);
+        mNative = aNative;
+    }
+
+    void resumeIfStarted() {
+        if (DEBUG) {
+            Log.d(TAG, "resumeIfStarted");
+        }
+        if (mIsListeningStarted) {
+            mNative.startAntennaInfoListening();
+        }
+    }
+
+
+    @Override
+    public boolean isAvailableInPlatform() {
+        return mNative.isAntennaInfoSupported();
+    }
+
+    @Override
+    protected int registerWithService() {
+        boolean started = mNative.startAntennaInfoListening();
+        if (started) {
+            mIsListeningStarted = true;
+            return RemoteListenerHelper.RESULT_SUCCESS;
+        }
+        return RemoteListenerHelper.RESULT_INTERNAL_ERROR;
+    }
+
+    @Override
+    protected void unregisterFromService() {
+        boolean stopped = mNative.stopAntennaInfoListening();
+        if (stopped) {
+            mIsListeningStarted = false;
+        }
+    }
+
+    /** Handle GNSS capabilities update from the GNSS HAL implementation. */
+    public void onCapabilitiesUpdated(boolean isAntennaInfoSupported) {
+        setSupported(isAntennaInfoSupported);
+        updateResult();
+    }
+
+    /** Handle GNSS enabled changes.*/
+    public void onGpsEnabledChanged() {
+        tryUpdateRegistrationWithService();
+        updateResult();
+    }
+
+    @Override
+    protected ListenerOperation<IGnssAntennaInfoListener> getHandlerOperation(int result) {
+        int status;
+        switch (result) {
+            case RESULT_SUCCESS:
+                status = GnssAntennaInfo.Callback.STATUS_READY;
+                break;
+            case RESULT_NOT_AVAILABLE:
+            case RESULT_NOT_SUPPORTED:
+            case RESULT_INTERNAL_ERROR:
+                status = GnssAntennaInfo.Callback.STATUS_NOT_SUPPORTED;
+                break;
+            case RESULT_GPS_LOCATION_DISABLED:
+                status = GnssAntennaInfo.Callback.STATUS_LOCATION_DISABLED;
+                break;
+            case RESULT_UNKNOWN:
+                return null;
+            default:
+                Log.v(TAG, "Unhandled addListener result: " + result);
+                return null;
+        }
+        return new StatusChangedOperation(status);
+    }
+
+    private static class StatusChangedOperation
+            implements ListenerOperation<IGnssAntennaInfoListener> {
+        private final int mStatus;
+
+        StatusChangedOperation(int status) {
+            mStatus = status;
+        }
+
+        @Override
+        public void execute(IGnssAntennaInfoListener listener,
+                CallerIdentity callerIdentity) throws RemoteException {
+            listener.onStatusChanged(mStatus);
+        }
+    }
+
+    /** Handle Gnss Antenna Info report. */
+    public void onGnssAntennaInfoAvailable(final List<GnssAntennaInfo> gnssAntennaInfos) {
+        foreach((IGnssAntennaInfoListener listener, CallerIdentity callerIdentity) -> {
+            if (!hasPermission(mContext, callerIdentity)) {
+                logPermissionDisabledEventNotReported(
+                        TAG, callerIdentity.mPackageName, "GNSS antenna info");
+                return;
+            }
+            listener.onGnssAntennaInfoReceived(gnssAntennaInfos);
+        });
+    }
+
+    /**
+     * Wrapper class for native methods. This is mocked for testing.
+     */
+    @VisibleForTesting
+    public static class GnssAntennaInfoProviderNative {
+
+        public boolean isAntennaInfoSupported() {
+            return native_is_antenna_info_supported();
+        }
+
+        /** Start antenna info listening. */
+        public boolean startAntennaInfoListening() {
+            return native_start_antenna_info_listening();
+        }
+
+        /** Stop antenna info listening. */
+        public boolean stopAntennaInfoListening() {
+            return native_stop_antenna_info_listening();
+        }
+    }
+
+    private static native boolean native_is_antenna_info_supported();
+
+    private static native boolean native_start_antenna_info_listening();
+
+    private static native boolean native_stop_antenna_info_listening();
+}
diff --git a/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java b/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java
index 88ff6e7..5c8507f 100644
--- a/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java
+++ b/services/core/java/com/android/server/location/GnssCapabilitiesProvider.java
@@ -77,6 +77,9 @@
         if (hasCapability(topHalCapabilities, GnssLocationProvider.GPS_CAPABILITY_NAV_MESSAGES)) {
             gnssCapabilities |= GnssCapabilities.NAV_MESSAGES;
         }
+        if (hasCapability(topHalCapabilities, GnssLocationProvider.GPS_CAPABILITY_ANTENNA_INFO)) {
+            gnssCapabilities |= GnssCapabilities.ANTENNA_INFO;
+        }
 
         synchronized (this) {
             mGnssCapabilities &= ~GNSS_CAPABILITIES_TOP_HAL;
diff --git a/services/core/java/com/android/server/location/GnssConfiguration.java b/services/core/java/com/android/server/location/GnssConfiguration.java
index 86a84e3..b3546dc 100644
--- a/services/core/java/com/android/server/location/GnssConfiguration.java
+++ b/services/core/java/com/android/server/location/GnssConfiguration.java
@@ -23,7 +23,8 @@
 import android.telephony.SubscriptionManager;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import libcore.io.IoUtils;
 
@@ -283,7 +284,7 @@
     }
 
     private void logConfigurations() {
-        StatsLog.write(StatsLog.GNSS_CONFIGURATION_REPORTED,
+        FrameworkStatsLog.write(FrameworkStatsLog.GNSS_CONFIGURATION_REPORTED,
                 getSuplHost(),
                 getSuplPort(0),
                 getC2KHost(),
diff --git a/services/core/java/com/android/server/location/GnssLocationProvider.java b/services/core/java/com/android/server/location/GnssLocationProvider.java
index 306e1e3..36136f4 100644
--- a/services/core/java/com/android/server/location/GnssLocationProvider.java
+++ b/services/core/java/com/android/server/location/GnssLocationProvider.java
@@ -29,6 +29,7 @@
 import android.hardware.location.GeofenceHardwareImpl;
 import android.location.Criteria;
 import android.location.FusedBatchOptions;
+import android.location.GnssAntennaInfo;
 import android.location.GnssMeasurementsEvent;
 import android.location.GnssNavigationMessage;
 import android.location.GnssStatus;
@@ -43,7 +44,6 @@
 import android.os.Binder;
 import android.os.Bundle;
 import android.os.Handler;
-import android.os.HandlerExecutor;
 import android.os.Looper;
 import android.os.Message;
 import android.os.PersistableBundle;
@@ -64,7 +64,6 @@
 import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
 import android.util.Log;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 
 import com.android.internal.annotations.GuardedBy;
@@ -75,7 +74,9 @@
 import com.android.internal.location.ProviderProperties;
 import com.android.internal.location.ProviderRequest;
 import com.android.internal.location.gnssmetrics.GnssMetrics;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.DeviceIdleInternal;
+import com.android.server.FgThread;
 import com.android.server.LocalServices;
 import com.android.server.location.GnssSatelliteBlacklistHelper.GnssSatelliteBlacklistCallback;
 import com.android.server.location.NtpTimeHelper.InjectNtpTimeCallback;
@@ -182,6 +183,7 @@
     public static final int GPS_CAPABILITY_LOW_POWER_MODE = 0x0000100;
     public static final int GPS_CAPABILITY_SATELLITE_BLACKLIST = 0x0000200;
     public static final int GPS_CAPABILITY_MEASUREMENT_CORRECTIONS = 0x0000400;
+    public static final int GPS_CAPABILITY_ANTENNA_INFO = 0x0000800;
 
     // The AGPS SUPL mode
     private static final int AGPS_SUPL_MODE_MSA = 0x02;
@@ -397,6 +399,7 @@
     private final GnssStatusListenerHelper mGnssStatusListenerHelper;
     private final GnssMeasurementsProvider mGnssMeasurementsProvider;
     private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider;
+    private final GnssAntennaInfoProvider mGnssAntennaInfoProvider;
     private final GnssNavigationMessageProvider mGnssNavigationMessageProvider;
     private final LocationChangeListener mNetworkLocationListener = new NetworkLocationListener();
     private final LocationChangeListener mFusedLocationListener = new FusedLocationListener();
@@ -408,7 +411,7 @@
     // Available only on GNSS HAL 2.0 implementations and later.
     private GnssVisibilityControl mGnssVisibilityControl;
 
-    // Handler for processing events
+    private final Context mContext;
     private Handler mHandler;
 
     private final GnssNetworkConnectivityHandler mNetworkConnectivityHandler;
@@ -469,6 +472,10 @@
         return mGnssMeasurementCorrectionsProvider;
     }
 
+    public GnssAntennaInfoProvider getGnssAntennaInfoProvider() {
+        return mGnssAntennaInfoProvider;
+    }
+
     public GnssNavigationMessageProvider getGnssNavigationMessageProvider() {
         return mGnssNavigationMessageProvider;
     }
@@ -624,12 +631,13 @@
         }
     }
 
-    public GnssLocationProvider(Context context, Handler handler) {
-        super(context, new HandlerExecutor(handler));
+    public GnssLocationProvider(Context context) {
+        super(FgThread.getExecutor(), context);
 
         ensureInitialized();
 
-        mLooper = handler.getLooper();
+        mContext = context;
+        mLooper = FgThread.getHandler().getLooper();
 
         // Create a wake lock
         mPowerManager = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
@@ -692,6 +700,13 @@
 
         mGnssMeasurementCorrectionsProvider = new GnssMeasurementCorrectionsProvider(mHandler);
 
+        mGnssAntennaInfoProvider = new GnssAntennaInfoProvider(mContext, mHandler) {
+            @Override
+            protected boolean isGpsEnabled() {
+                return GnssLocationProvider.this.isGpsEnabled();
+            }
+        };
+
         mGnssNavigationMessageProvider = new GnssNavigationMessageProvider(mContext, mHandler) {
             @Override
             protected boolean isGpsEnabled() {
@@ -991,6 +1006,7 @@
 
             mGnssMeasurementsProvider.onGpsEnabledChanged();
             mGnssNavigationMessageProvider.onGpsEnabledChanged();
+            mGnssAntennaInfoProvider.onGpsEnabledChanged();
             mGnssBatchingProvider.enable();
             if (mGnssVisibilityControl != null) {
                 mGnssVisibilityControl.onGpsEnabledChanged(/* isEnabled= */ true);
@@ -1017,6 +1033,7 @@
         // do this before releasing wakelock
         native_cleanup();
 
+        mGnssAntennaInfoProvider.onGpsEnabledChanged();
         mGnssMeasurementsProvider.onGpsEnabledChanged();
         mGnssNavigationMessageProvider.onGpsEnabledChanged();
     }
@@ -1212,6 +1229,11 @@
         }
     }
 
+    @Override
+    protected void onRequestSetAllowed(boolean allowed) {
+        // do nothing - the gnss provider is always allowed
+    }
+
     private void deleteAidingData(Bundle extras) {
         int flags;
 
@@ -1557,6 +1579,11 @@
     }
 
     @NativeEntryPoint
+    private void reportAntennaInfo(List<GnssAntennaInfo> antennaInfos) {
+        mHandler.post(() -> mGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(antennaInfos));
+    }
+
+    @NativeEntryPoint
     private void reportNavigationMessage(GnssNavigationMessage event) {
         if (!mItarSpeedLimitExceeded) {
             // send to handler to allow native to return quickly
@@ -1579,6 +1606,8 @@
             mGnssNavigationMessageProvider.onCapabilitiesUpdated(
                     hasCapability(GPS_CAPABILITY_NAV_MESSAGES));
             restartRequests();
+            mGnssAntennaInfoProvider.onCapabilitiesUpdated(
+                    hasCapability(GPS_CAPABILITY_ANTENNA_INFO));
 
             mGnssCapabilitiesProvider.setTopHalCapabilities(mTopHalCapabilities);
         });
@@ -1600,6 +1629,7 @@
         Log.i(TAG, "restartRequests");
 
         restartLocationRequest();
+        mGnssAntennaInfoProvider.resumeIfStarted();
         mGnssMeasurementsProvider.resumeIfStarted();
         mGnssNavigationMessageProvider.resumeIfStarted();
         mGnssBatchingProvider.resumeIfStarted();
@@ -1825,8 +1855,8 @@
             }
             native_send_ni_response(notificationId, userResponse);
 
-            StatsLog.write(StatsLog.GNSS_NI_EVENT_REPORTED,
-                    StatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_RESPONSE,
+            FrameworkStatsLog.write(FrameworkStatsLog.GNSS_NI_EVENT_REPORTED,
+                    FrameworkStatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_RESPONSE,
                     notificationId,
                     /* niType= */ 0,
                     /* needNotify= */ false,
@@ -1891,8 +1921,8 @@
         notification.textEncoding = textEncoding;
 
         mNIHandler.handleNiNotification(notification);
-        StatsLog.write(StatsLog.GNSS_NI_EVENT_REPORTED,
-                StatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_REQUEST,
+        FrameworkStatsLog.write(FrameworkStatsLog.GNSS_NI_EVENT_REPORTED,
+                FrameworkStatsLog.GNSS_NI_EVENT_REPORTED__EVENT_TYPE__NI_REQUEST,
                 notification.notificationId,
                 notification.niType,
                 notification.needNotify,
@@ -2192,6 +2222,8 @@
         s.append(" ago)").append('\n');
         s.append("mFixInterval=").append(mFixInterval).append('\n');
         s.append("mLowPowerMode=").append(mLowPowerMode).append('\n');
+        s.append("mGnssAntennaInfoProvider.isRegistered()=")
+                .append(mGnssAntennaInfoProvider.isRegistered()).append('\n');
         s.append("mGnssMeasurementsProvider.isRegistered()=")
                 .append(mGnssMeasurementsProvider.isRegistered()).append('\n');
         s.append("mGnssNavigationMessageProvider.isRegistered()=")
diff --git a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
index 55e427f..6ba5f07 100644
--- a/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
+++ b/services/core/java/com/android/server/location/GnssMeasurementsProvider.java
@@ -18,6 +18,7 @@
 
 import android.content.Context;
 import android.location.GnssMeasurementsEvent;
+import android.location.GnssRequest;
 import android.location.IGnssMeasurementsListener;
 import android.os.Handler;
 import android.os.RemoteException;
@@ -33,14 +34,14 @@
  * @hide
  */
 public abstract class GnssMeasurementsProvider
-        extends RemoteListenerHelper<IGnssMeasurementsListener> {
-    private static final String TAG = "GnssMeasurementsProvider";
+        extends RemoteListenerHelper<GnssRequest, IGnssMeasurementsListener> {
+    private static final String TAG = "GnssMeasProvider";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
     private final GnssMeasurementProviderNative mNative;
 
-    private boolean mIsCollectionStarted;
-    private boolean mEnableFullTracking;
+    private boolean mStartedCollection;
+    private boolean mStartedFullTracking;
 
     protected GnssMeasurementsProvider(Context context, Handler handler) {
         this(context, handler, new GnssMeasurementProviderNative());
@@ -57,8 +58,8 @@
         if (DEBUG) {
             Log.d(TAG, "resumeIfStarted");
         }
-        if (mIsCollectionStarted) {
-            mNative.startMeasurementCollection(mEnableFullTracking);
+        if (mStartedCollection) {
+            mNative.startMeasurementCollection(mStartedFullTracking);
         }
     }
 
@@ -67,18 +68,35 @@
         return mNative.isMeasurementSupported();
     }
 
-    @Override
-    protected int registerWithService() {
+    private boolean getMergedFullTracking() {
         int devOptions = Settings.Secure.getInt(mContext.getContentResolver(),
                 Settings.Global.DEVELOPMENT_SETTINGS_ENABLED, 0);
-        int fullTrackingToggled = Settings.Global.getInt(mContext.getContentResolver(),
+        int enableFullTracking = Settings.Global.getInt(mContext.getContentResolver(),
                 Settings.Global.ENABLE_GNSS_RAW_MEAS_FULL_TRACKING, 0);
-        boolean enableFullTracking = (devOptions == 1 /* Developer Mode enabled */)
-                && (fullTrackingToggled == 1 /* Raw Measurements Full Tracking enabled */);
+        boolean enableFullTrackingBySetting = (devOptions == 1 /* Developer Mode enabled */)
+                && (enableFullTracking == 1 /* Raw Measurements Full Tracking enabled */);
+        if (enableFullTrackingBySetting) {
+            return true;
+        }
+
+        synchronized (mListenerMap) {
+            for (IdentifiedListener identifiedListener : mListenerMap.values()) {
+                GnssRequest request = identifiedListener.getRequest();
+                if (request != null && request.isFullTracking()) {
+                    return true;
+                }
+            }
+        }
+        return false;
+    }
+
+    @Override
+    protected int registerWithService() {
+        boolean enableFullTracking = getMergedFullTracking();
         boolean result = mNative.startMeasurementCollection(enableFullTracking);
         if (result) {
-            mIsCollectionStarted = true;
-            mEnableFullTracking = enableFullTracking;
+            mStartedCollection = true;
+            mStartedFullTracking = enableFullTracking;
             return RemoteListenerHelper.RESULT_SUCCESS;
         } else {
             return RemoteListenerHelper.RESULT_INTERNAL_ERROR;
@@ -89,7 +107,7 @@
     protected void unregisterFromService() {
         boolean stopped = mNative.stopMeasurementCollection();
         if (stopped) {
-            mIsCollectionStarted = false;
+            mStartedCollection = false;
         }
     }
 
diff --git a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
index 983d1da..fb901e8 100644
--- a/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
+++ b/services/core/java/com/android/server/location/GnssNavigationMessageProvider.java
@@ -33,7 +33,7 @@
  * @hide
  */
 public abstract class GnssNavigationMessageProvider
-        extends RemoteListenerHelper<IGnssNavigationMessageListener> {
+        extends RemoteListenerHelper<Void, IGnssNavigationMessageListener> {
     private static final String TAG = "GnssNavigationMessageProvider";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
diff --git a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java b/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
index eaf63c8..1d16c03 100644
--- a/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
+++ b/services/core/java/com/android/server/location/GnssStatusListenerHelper.java
@@ -24,7 +24,8 @@
 /**
  * Implementation of a handler for {@link IGnssStatusListener}.
  */
-public abstract class GnssStatusListenerHelper extends RemoteListenerHelper<IGnssStatusListener> {
+public abstract class GnssStatusListenerHelper extends
+        RemoteListenerHelper<Void, IGnssStatusListener> {
     private static final String TAG = "GnssStatusListenerHelper";
     private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
 
diff --git a/services/core/java/com/android/server/location/GnssVisibilityControl.java b/services/core/java/com/android/server/location/GnssVisibilityControl.java
index dd522b9..2b5fc79 100644
--- a/services/core/java/com/android/server/location/GnssVisibilityControl.java
+++ b/services/core/java/com/android/server/location/GnssVisibilityControl.java
@@ -36,11 +36,11 @@
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Log;
-import android.util.StatsLog;
 
 import com.android.internal.R;
 import com.android.internal.location.GpsNetInitiatedHandler;
 import com.android.internal.notification.SystemNotificationChannels;
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.util.Arrays;
 import java.util.List;
@@ -650,7 +650,7 @@
     }
 
     private void logEvent(NfwNotification notification, boolean isPermissionMismatched) {
-        StatsLog.write(StatsLog.GNSS_NFW_NOTIFICATION_REPORTED,
+        FrameworkStatsLog.write(FrameworkStatsLog.GNSS_NFW_NOTIFICATION_REPORTED,
                 notification.mProxyAppPackageName,
                 notification.mProtocolStack,
                 notification.mOtherProtocolStackName,
diff --git a/services/core/java/com/android/server/location/LocationFudger.java b/services/core/java/com/android/server/location/LocationFudger.java
index ae71fe3..a069e7a 100644
--- a/services/core/java/com/android/server/location/LocationFudger.java
+++ b/services/core/java/com/android/server/location/LocationFudger.java
@@ -16,290 +16,165 @@
 
 package com.android.server.location;
 
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.security.SecureRandom;
-import android.content.Context;
-import android.database.ContentObserver;
+import android.annotation.Nullable;
 import android.location.Location;
-import android.os.Handler;
 import android.os.SystemClock;
-import android.provider.Settings;
-import android.util.Log;
 
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+
+import java.security.SecureRandom;
+import java.time.Clock;
+import java.util.Random;
 
 /**
- * Contains the logic to obfuscate (fudge) locations for coarse applications.
- *
- * <p>The goal is just to prevent applications with only
- * the coarse location permission from receiving a fine location.
+ * Contains the logic to obfuscate (fudge) locations for coarse applications. The goal is just to
+ * prevent applications with only the coarse location permission from receiving a fine location.
  */
 public class LocationFudger {
-    private static final boolean D = false;
-    private static final String TAG = "LocationFudge";
 
-    /**
-     * Default coarse accuracy in meters.
-     */
-    private static final float DEFAULT_ACCURACY_IN_METERS = 2000.0f;
+    // minimum accuracy a coarsened location can have
+    private static final float MIN_ACCURACY_M = 200.0f;
 
-    /**
-     * Minimum coarse accuracy in meters.
-     */
-    private static final float MINIMUM_ACCURACY_IN_METERS = 200.0f;
+    // how often random offsets are updated
+    @VisibleForTesting
+    static final long OFFSET_UPDATE_INTERVAL_MS = 60 * 60 * 1000;
 
-    /**
-     * Secure settings key for coarse accuracy.
-     */
-    private static final String COARSE_ACCURACY_CONFIG_NAME = "locationCoarseAccuracy";
-
-    /**
-     * This is the fastest interval that applications can receive coarse
-     * locations.
-     */
-    public static final long FASTEST_INTERVAL_MS = 10 * 60 * 1000;  // 10 minutes
-
-    /**
-     * The duration until we change the random offset.
-     */
-    private static final long CHANGE_INTERVAL_MS = 60 * 60 * 1000;  // 1 hour
-
-    /**
-     * The percentage that we change the random offset at every interval.
-     *
-     * <p>0.0 indicates the random offset doesn't change. 1.0
-     * indicates the random offset is completely replaced every interval.
-     */
+    // the percentage that we change the random offset at every interval. 0.0 indicates the random
+    // offset doesn't change. 1.0 indicates the random offset is completely replaced every interval
     private static final double CHANGE_PER_INTERVAL = 0.03;  // 3% change
 
-    // Pre-calculated weights used to move the random offset.
-    //
-    // The goal is to iterate on the previous offset, but keep
-    // the resulting standard deviation the same. The variance of
-    // two gaussian distributions summed together is equal to the
-    // sum of the variance of each distribution. So some quick
-    // algebra results in the following sqrt calculation to
-    // weigh in a new offset while keeping the final standard
-    // deviation unchanged.
+    // weights used to move the random offset. the goal is to iterate on the previous offset, but
+    // keep the resulting standard deviation the same. the variance of two gaussian distributions
+    // summed together is equal to the sum of the variance of each distribution. so some quick
+    // algebra results in the following sqrt calculation to weight in a new offset while keeping the
+    // final standard deviation unchanged.
     private static final double NEW_WEIGHT = CHANGE_PER_INTERVAL;
-    private static final double PREVIOUS_WEIGHT = Math.sqrt(1 - NEW_WEIGHT * NEW_WEIGHT);
+    private static final double OLD_WEIGHT = Math.sqrt(1 - NEW_WEIGHT * NEW_WEIGHT);
+
+    // this number actually varies because the earth is not round, but 111,000 meters is considered
+    // generally acceptable
+    private static final int APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR = 111_000;
+
+    // we pick a value 1 meter away from 90.0 degrees in order to keep cosine(MAX_LATITUDE) to a
+    // non-zero value, so that we avoid divide by zero errors
+    private static final double MAX_LATITUDE =
+            90.0 - (1.0 / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR);
+
+    private final float mAccuracyM;
+    private final Clock mClock;
+    private final Random mRandom;
+
+    @GuardedBy("this")
+    private double mLatitudeOffsetM;
+    @GuardedBy("this")
+    private double mLongitudeOffsetM;
+    @GuardedBy("this")
+    private long mNextUpdateRealtimeMs;
+
+    @GuardedBy("this")
+    @Nullable private Location mCachedFineLocation;
+    @GuardedBy("this")
+    @Nullable private Location mCachedCoarseLocation;
+
+    public LocationFudger(float accuracyM) {
+        this(accuracyM, SystemClock.elapsedRealtimeClock(), new SecureRandom());
+    }
+
+    @VisibleForTesting
+    LocationFudger(float accuracyM, Clock clock, Random random) {
+        mClock = clock;
+        mRandom = random;
+        mAccuracyM = Math.max(accuracyM, MIN_ACCURACY_M);
+
+        mLatitudeOffsetM = nextRandomOffset();
+        mLongitudeOffsetM = nextRandomOffset();
+        mNextUpdateRealtimeMs = mClock.millis() + OFFSET_UPDATE_INTERVAL_MS;
+    }
 
     /**
-     * This number actually varies because the earth is not round, but
-     * 111,000 meters is considered generally acceptable.
-     */
-    private static final int APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR = 111000;
-
-    /**
-     * Maximum latitude.
+     * Create a coarse location using two technique, random offsets and snap-to-grid.
      *
-     * <p>We pick a value 1 meter away from 90.0 degrees in order
-     * to keep cosine(MAX_LATITUDE) to a non-zero value, so that we avoid
-     * divide by zero fails.
+     * First we add a random offset to mitigate against detecting grid transitions. Without a random
+     * offset it is possible to detect a user's position quite accurately when they cross a grid
+     * boundary. The random offset changes very slowly over time, to mitigate against taking many
+     * location samples and averaging them out. Second we snap-to-grid (quantize). This has the nice
+     * property of producing stable results, and mitigating against taking many samples to average
+     * out a random offset.
      */
-    private static final double MAX_LATITUDE = 90.0 -
-            (1.0 / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR);
-
-    private final Object mLock = new Object();
-    private final SecureRandom mRandom = new SecureRandom();
-
-    /**
-     * Used to monitor coarse accuracy secure setting for changes.
-     */
-    private final ContentObserver mSettingsObserver;
-
-    /**
-     * Used to resolve coarse accuracy setting.
-     */
-    private final Context mContext;
-
-    // all fields below protected by mLock
-    private double mOffsetLatitudeMeters;
-    private double mOffsetLongitudeMeters;
-    private long mNextInterval;
-
-    /**
-     * Best location accuracy allowed for coarse applications.
-     * This value should only be set by {@link #setAccuracyInMetersLocked(float)}.
-     */
-    private float mAccuracyInMeters;
-
-    /**
-     * The distance between grids for snap-to-grid. See {@link #createCoarse}.
-     * This value should only be set by {@link #setAccuracyInMetersLocked(float)}.
-     */
-    private double mGridSizeInMeters;
-
-    /**
-     * Standard deviation of the (normally distributed) random offset applied
-     * to coarse locations. It does not need to be as large as
-     * {@link #COARSE_ACCURACY_METERS} because snap-to-grid is the primary obfuscation
-     * method. See further details in the implementation.
-     * This value should only be set by {@link #setAccuracyInMetersLocked(float)}.
-     */
-    private double mStandardDeviationInMeters;
-
-    public LocationFudger(Context context, Handler handler) {
-        mContext = context;
-        mSettingsObserver = new ContentObserver(handler) {
-            @Override
-            public void onChange(boolean selfChange) {
-                setAccuracyInMeters(loadCoarseAccuracy());
+    public Location createCoarse(Location fine) {
+        synchronized (this) {
+            if (fine == mCachedFineLocation) {
+                return new Location(mCachedCoarseLocation);
             }
-        };
-        mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
-                COARSE_ACCURACY_CONFIG_NAME), false, mSettingsObserver);
-
-        float accuracy = loadCoarseAccuracy();
-        synchronized (mLock) {
-            setAccuracyInMetersLocked(accuracy);
-            mOffsetLatitudeMeters = nextOffsetLocked();
-            mOffsetLongitudeMeters = nextOffsetLocked();
-            mNextInterval = SystemClock.elapsedRealtime() + CHANGE_INTERVAL_MS;
         }
-    }
 
-    /**
-     * Get the cached coarse location, or generate a new one and cache it.
-     */
-    public Location getOrCreate(Location location) {
-        synchronized (mLock) {
-            Location coarse = location.getExtraLocation(Location.EXTRA_COARSE_LOCATION);
-            if (coarse == null) {
-                return addCoarseLocationExtraLocked(location);
-            }
-            if (coarse.getAccuracy() < mAccuracyInMeters) {
-                return addCoarseLocationExtraLocked(location);
-            }
-            return coarse;
-        }
-    }
+        // update the offsets in use
+        updateOffsets();
 
-    private Location addCoarseLocationExtraLocked(Location location) {
-        Location coarse = createCoarseLocked(location);
-        location.setExtraLocation(Location.EXTRA_COARSE_LOCATION, coarse);
-        return coarse;
-    }
-
-    /**
-     * Create a coarse location.
-     *
-     * <p>Two techniques are used: random offsets and snap-to-grid.
-     *
-     * <p>First we add a random offset. This mitigates against detecting
-     * grid transitions. Without a random offset it is possible to detect
-     * a users position very accurately when they cross a grid boundary.
-     * The random offset changes very slowly over time, to mitigate against
-     * taking many location samples and averaging them out.
-     *
-     * <p>Second we snap-to-grid (quantize). This has the nice property of
-     * producing stable results, and mitigating against taking many samples
-     * to average out a random offset.
-     */
-    private Location createCoarseLocked(Location fine) {
         Location coarse = new Location(fine);
 
-        // clean all the optional information off the location, because
-        // this can leak detailed location information
+        // clear any fields that could leak more detailed location information
         coarse.removeBearing();
         coarse.removeSpeed();
         coarse.removeAltitude();
         coarse.setExtras(null);
 
-        double lat = coarse.getLatitude();
-        double lon = coarse.getLongitude();
+        double latitude = wrapLatitude(coarse.getLatitude());
+        double longitude = wrapLongitude(coarse.getLongitude());
 
-        // wrap
-        lat = wrapLatitude(lat);
-        lon = wrapLongitude(lon);
+        // add offsets - update longitude first using the non-offset latitude
+        longitude += wrapLongitude(metersToDegreesLongitude(mLongitudeOffsetM, latitude));
+        latitude += wrapLatitude(metersToDegreesLatitude(mLatitudeOffsetM));
 
-        // Step 1) apply a random offset
+        // quantize location by snapping to a grid. this is the primary means of obfuscation. it
+        // gives nice consistent results and is very effective at hiding the true location (as long
+        // as you are not sitting on a grid boundary, which the random offsets mitigate).
         //
-        // The goal of the random offset is to prevent the application
-        // from determining that the device is on a grid boundary
-        // when it crosses from one grid to the next.
-        //
-        // We apply the offset even if the location already claims to be
-        // inaccurate, because it may be more accurate than claimed.
-        updateRandomOffsetLocked();
-        // perform lon first whilst lat is still within bounds
-        lon += metersToDegreesLongitude(mOffsetLongitudeMeters, lat);
-        lat += metersToDegreesLatitude(mOffsetLatitudeMeters);
-        if (D) Log.d(TAG, String.format("applied offset of %.0f, %.0f (meters)",
-                mOffsetLongitudeMeters, mOffsetLatitudeMeters));
+        // note that we quantize the latitude first, since the longitude quantization depends on the
+        // latitude value and so leaks information about the latitude
+        double latGranularity = metersToDegreesLatitude(mAccuracyM);
+        latitude = wrapLatitude(Math.round(latitude / latGranularity) * latGranularity);
+        double lonGranularity = metersToDegreesLongitude(mAccuracyM, latitude);
+        longitude = wrapLongitude(Math.round(longitude / lonGranularity) * lonGranularity);
 
-        // wrap
-        lat = wrapLatitude(lat);
-        lon = wrapLongitude(lon);
+        coarse.setLatitude(latitude);
+        coarse.setLongitude(longitude);
+        coarse.setAccuracy(Math.max(mAccuracyM, coarse.getAccuracy()));
 
-        // Step 2) Snap-to-grid (quantize)
-        //
-        // This is the primary means of obfuscation. It gives nice consistent
-        // results and is very effective at hiding the true location
-        // (as long as you are not sitting on a grid boundary, which
-        // step 1 mitigates).
-        //
-        // Note we quantize the latitude first, since the longitude
-        // quantization depends on the latitude value and so leaks information
-        // about the latitude
-        double latGranularity = metersToDegreesLatitude(mGridSizeInMeters);
-        lat = Math.round(lat / latGranularity) * latGranularity;
-        double lonGranularity = metersToDegreesLongitude(mGridSizeInMeters, lat);
-        lon = Math.round(lon / lonGranularity) * lonGranularity;
+        synchronized (this) {
+            mCachedFineLocation = fine;
+            mCachedCoarseLocation = coarse;
+        }
 
-        // wrap again
-        lat = wrapLatitude(lat);
-        lon = wrapLongitude(lon);
-
-        // apply
-        coarse.setLatitude(lat);
-        coarse.setLongitude(lon);
-        coarse.setAccuracy(Math.max(mAccuracyInMeters, coarse.getAccuracy()));
-
-        if (D) Log.d(TAG, "fudged " + fine + " to " + coarse);
-        return coarse;
+        return new Location(mCachedCoarseLocation);
     }
 
     /**
-     * Update the random offset over time.
+     * Update the random offsets over time.
      *
-     * <p>If the random offset was new for every location
-     * fix then an application can more easily average location results
-     * over time,
-     * especially when the location is near a grid boundary. On the
-     * other hand if the random offset is constant then if an application
-     * found a way to reverse engineer the offset they would be able
-     * to detect location at grid boundaries very accurately. So
-     * we choose a random offset and then very slowly move it, to
-     * make both approaches very hard.
-     *
-     * <p>The random offset does not need to be large, because snap-to-grid
-     * is the primary obfuscation mechanism. It just needs to be large
-     * enough to stop information leakage as we cross grid boundaries.
+     * If the random offset was reset for every location fix then an application could more easily
+     * average location results over time, especially when the location is near a grid boundary. On
+     * the other hand if the random offset is constant then if an application finds a way to reverse
+     * engineer the offset they would be able to detect location at grid boundaries very accurately.
+     * So we choose a random offset and then very slowly move it, to make both approaches very hard.
+     * The random offset does not need to be large, because snap-to-grid is the primary obfuscation
+     * mechanism. It just needs to be large enough to stop information leakage as we cross grid
+     * boundaries.
      */
-    private void updateRandomOffsetLocked() {
-        long now = SystemClock.elapsedRealtime();
-        if (now < mNextInterval) {
+    private synchronized void updateOffsets() {
+        long now = mClock.millis();
+        if (now < mNextUpdateRealtimeMs) {
             return;
         }
 
-        if (D) Log.d(TAG, String.format("old offset: %.0f, %.0f (meters)",
-                mOffsetLongitudeMeters, mOffsetLatitudeMeters));
-
-        // ok, need to update the random offset
-        mNextInterval = now + CHANGE_INTERVAL_MS;
-
-        mOffsetLatitudeMeters *= PREVIOUS_WEIGHT;
-        mOffsetLatitudeMeters += NEW_WEIGHT * nextOffsetLocked();
-        mOffsetLongitudeMeters *= PREVIOUS_WEIGHT;
-        mOffsetLongitudeMeters += NEW_WEIGHT * nextOffsetLocked();
-
-        if (D) Log.d(TAG, String.format("new offset: %.0f, %.0f (meters)",
-                mOffsetLongitudeMeters, mOffsetLatitudeMeters));
+        mLatitudeOffsetM = (OLD_WEIGHT * mLatitudeOffsetM) + (NEW_WEIGHT * nextRandomOffset());
+        mLongitudeOffsetM = (OLD_WEIGHT * mLongitudeOffsetM) + (NEW_WEIGHT * nextRandomOffset());
+        mNextUpdateRealtimeMs = now + OFFSET_UPDATE_INTERVAL_MS;
     }
 
-    private double nextOffsetLocked() {
-        return mRandom.nextGaussian() * mStandardDeviationInMeters;
+    private double nextRandomOffset() {
+        return mRandom.nextGaussian() * (mAccuracyM / 4.0);
     }
 
     private static double wrapLatitude(double lat) {
@@ -327,56 +202,8 @@
         return distance / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR;
     }
 
-    /**
-     * Requires latitude since longitudinal distances change with distance from equator.
-     */
+    // requires latitude since longitudinal distances change with distance from equator.
     private static double metersToDegreesLongitude(double distance, double lat) {
         return distance / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR / Math.cos(Math.toRadians(lat));
     }
-
-    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println(String.format("offset: %.0f, %.0f (meters)", mOffsetLongitudeMeters,
-                mOffsetLatitudeMeters));
-    }
-
-    /**
-     * This is the main control: call this to set the best location accuracy
-     * allowed for coarse applications and all derived values.
-     */
-    private void setAccuracyInMetersLocked(float accuracyInMeters) {
-        mAccuracyInMeters = Math.max(accuracyInMeters, MINIMUM_ACCURACY_IN_METERS);
-        if (D) {
-            Log.d(TAG, "setAccuracyInMetersLocked: new accuracy = " + mAccuracyInMeters);
-        }
-        mGridSizeInMeters = mAccuracyInMeters;
-        mStandardDeviationInMeters = mGridSizeInMeters / 4.0;
-    }
-
-    /**
-     * Same as setAccuracyInMetersLocked without the pre-lock requirement.
-     */
-    private void setAccuracyInMeters(float accuracyInMeters) {
-        synchronized (mLock) {
-            setAccuracyInMetersLocked(accuracyInMeters);
-        }
-    }
-
-    /**
-     * Loads the coarse accuracy value from secure settings.
-     */
-    private float loadCoarseAccuracy() {
-        String newSetting = Settings.Secure.getString(mContext.getContentResolver(),
-                COARSE_ACCURACY_CONFIG_NAME);
-        if (D) {
-            Log.d(TAG, "loadCoarseAccuracy: newSetting = \"" + newSetting + "\"");
-        }
-        if (newSetting == null) {
-            return DEFAULT_ACCURACY_IN_METERS;
-        }
-        try {
-            return Float.parseFloat(newSetting);
-        } catch (NumberFormatException e) {
-            return DEFAULT_ACCURACY_IN_METERS;
-        }
-    }
 }
diff --git a/services/core/java/com/android/server/location/LocationProviderProxy.java b/services/core/java/com/android/server/location/LocationProviderProxy.java
index 1dee7a8..96ffaa6 100644
--- a/services/core/java/com/android/server/location/LocationProviderProxy.java
+++ b/services/core/java/com/android/server/location/LocationProviderProxy.java
@@ -134,19 +134,21 @@
     // also used to synchronized any state changes (setEnabled, setProperties, setState, etc)
     private final Object mLock = new Object();
 
+    private final Context mContext;
     private final ServiceWatcher mServiceWatcher;
 
     @GuardedBy("mLock")
     private boolean mBound;
-    @GuardedBy("mLock")
-    private ProviderRequest mRequest;
+
+    private volatile ProviderRequest mRequest;
 
     private LocationProviderProxy(Context context, String action, int enableOverlayResId,
             int nonOverlayPackageResId) {
-        // safe to use direct executor since none of our callbacks call back into any code above
-        // this provider - they simply forward to the proxy service
-        super(context, DIRECT_EXECUTOR);
+        // safe to use direct executor since our locks are not acquired in a code path invoked by
+        // our owning provider
+        super(DIRECT_EXECUTOR, Collections.emptySet());
 
+        mContext = context;
         mServiceWatcher = new ServiceWatcher(context, FgThread.getHandler(), action, this::onBind,
                 this::onUnbind, enableOverlayResId, nonOverlayPackageResId);
 
@@ -165,8 +167,10 @@
             mBound = true;
 
             provider.setLocationProviderManager(mManager);
-            if (!mRequest.equals(ProviderRequest.EMPTY_REQUEST)) {
-                provider.setRequest(mRequest, mRequest.workSource);
+
+            ProviderRequest request = mRequest;
+            if (!request.equals(ProviderRequest.EMPTY_REQUEST)) {
+                provider.setRequest(request, request.workSource);
             }
 
             ComponentName service = mServiceWatcher.getBoundService().component;
@@ -185,10 +189,7 @@
 
     @Override
     public void onSetRequest(ProviderRequest request) {
-        synchronized (mLock) {
-            mRequest = request;
-        }
-
+        mRequest = request;
         mServiceWatcher.runOnBinder(binder -> {
             ILocationProvider service = ILocationProvider.Stub.asInterface(binder);
             service.setRequest(request, request.workSource);
@@ -213,9 +214,6 @@
 
     @Override
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("service=" + mServiceWatcher);
-        synchronized (mLock) {
-            pw.println("bound=" + mBound);
-        }
+        mServiceWatcher.dump(fd, pw, args);
     }
 }
diff --git a/services/core/java/com/android/server/location/LocationUsageLogger.java b/services/core/java/com/android/server/location/LocationUsageLogger.java
index 755438b..93e19df 100644
--- a/services/core/java/com/android/server/location/LocationUsageLogger.java
+++ b/services/core/java/com/android/server/location/LocationUsageLogger.java
@@ -24,9 +24,9 @@
 import android.location.LocationRequest;
 import android.stats.location.LocationStatsEnums;
 import android.util.Log;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.time.Instant;
 
@@ -61,8 +61,8 @@
             boolean isLocationRequestNull = locationRequest == null;
             boolean isGeofenceNull = geofence == null;
 
-            StatsLog.write(StatsLog.LOCATION_MANAGER_API_USAGE_REPORTED, usageType,
-                    apiInUse, packageName,
+            FrameworkStatsLog.write(FrameworkStatsLog.LOCATION_MANAGER_API_USAGE_REPORTED,
+                    usageType, apiInUse, packageName,
                     isLocationRequestNull
                         ? LocationStatsEnums.PROVIDER_UNKNOWN
                         : bucketizeProvider(locationRequest.getProvider()),
@@ -101,7 +101,8 @@
                 return;
             }
 
-            StatsLog.write(StatsLog.LOCATION_MANAGER_API_USAGE_REPORTED, usageType, apiInUse,
+            FrameworkStatsLog.write(FrameworkStatsLog.LOCATION_MANAGER_API_USAGE_REPORTED,
+                    usageType, apiInUse,
                     /* package_name= */ null,
                     bucketizeProvider(providerName),
                     LocationStatsEnums.QUALITY_UNKNOWN,
diff --git a/services/core/java/com/android/server/location/MockProvider.java b/services/core/java/com/android/server/location/MockProvider.java
index bcec8b1..b45b660 100644
--- a/services/core/java/com/android/server/location/MockProvider.java
+++ b/services/core/java/com/android/server/location/MockProvider.java
@@ -16,15 +16,18 @@
 
 package com.android.server.location;
 
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
+
 import android.annotation.Nullable;
-import android.content.Context;
 import android.location.Location;
+import android.os.Bundle;
 
 import com.android.internal.location.ProviderProperties;
 import com.android.internal.location.ProviderRequest;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+import java.util.Collections;
 
 /**
  * A mock location provider used by LocationManagerService to implement test providers.
@@ -35,10 +38,9 @@
 
     @Nullable private Location mLocation;
 
-    public MockProvider(Context context, ProviderProperties properties) {
-        // using a direct executor is only acceptable because this class is so simple it is trivial
-        // to verify that it does not acquire any locks or re-enter LMS from callbacks
-        super(context, Runnable::run);
+    public MockProvider(ProviderProperties properties) {
+        // using a direct executor is ok because this class has no locks that could deadlock
+        super(DIRECT_EXECUTOR, Collections.emptySet());
         setProperties(properties);
     }
 
@@ -59,6 +61,9 @@
     public void onSetRequest(ProviderRequest request) {}
 
     @Override
+    protected void onExtraCommand(int uid, int pid, String command, Bundle extras) {}
+
+    @Override
     protected void onRequestSetAllowed(boolean allowed) {
         setAllowed(allowed);
     }
diff --git a/services/core/java/com/android/server/location/MockableLocationProvider.java b/services/core/java/com/android/server/location/MockableLocationProvider.java
index 5b4f008..f43669e 100644
--- a/services/core/java/com/android/server/location/MockableLocationProvider.java
+++ b/services/core/java/com/android/server/location/MockableLocationProvider.java
@@ -16,8 +16,9 @@
 
 package com.android.server.location;
 
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
+
 import android.annotation.Nullable;
-import android.content.Context;
 import android.location.Location;
 import android.os.Bundle;
 
@@ -68,10 +69,10 @@
      * The client should expect that it may being to receive callbacks as soon as this constructor
      * is invoked.
      */
-    public MockableLocationProvider(Context context, Object ownerLock, Listener listener) {
+    public MockableLocationProvider(Object ownerLock, Listener listener) {
         // using a direct executor is acceptable because all inbound calls are delegated to the
         // actual provider implementations which will use their own executors
-        super(context, Runnable::run, Collections.emptySet());
+        super(DIRECT_EXECUTOR, Collections.emptySet());
         mOwnerLock = ownerLock;
         mRequest = ProviderRequest.EMPTY_REQUEST;
 
@@ -190,11 +191,6 @@
         }
     }
 
-    @Override
-    public State getState() {
-        return super.getState();
-    }
-
     /**
      * Returns the current location request.
      */
@@ -204,6 +200,7 @@
         }
     }
 
+    @Override
     protected void onSetRequest(ProviderRequest request) {
         synchronized (mOwnerLock) {
             if (request == mRequest) {
@@ -218,6 +215,7 @@
         }
     }
 
+    @Override
     protected void onExtraCommand(int uid, int pid, String command, Bundle extras) {
         synchronized (mOwnerLock) {
             if (mProvider != null) {
@@ -226,10 +224,23 @@
         }
     }
 
+    @Override
+    protected void onRequestSetAllowed(boolean allowed) {
+        synchronized (mOwnerLock) {
+            if (mProvider != null) {
+                mProvider.onRequestSetAllowed(allowed);
+            }
+        }
+    }
+
     /**
      * Dumps the current provider implementation.
      */
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        // holding the owner lock outside this could lead to deadlock since we don't run dump on the
+        // executor specified by the provider, we run it directly
+        Preconditions.checkState(!Thread.holdsLock(mOwnerLock));
+
         AbstractLocationProvider provider;
         synchronized (mOwnerLock) {
             provider = mProvider;
diff --git a/services/core/java/com/android/server/location/PassiveProvider.java b/services/core/java/com/android/server/location/PassiveProvider.java
index ef157a3..54dffff 100644
--- a/services/core/java/com/android/server/location/PassiveProvider.java
+++ b/services/core/java/com/android/server/location/PassiveProvider.java
@@ -16,9 +16,12 @@
 
 package com.android.server.location;
 
+import static com.android.internal.util.ConcurrentUtils.DIRECT_EXECUTOR;
+
 import android.content.Context;
 import android.location.Criteria;
 import android.location.Location;
+import android.os.Bundle;
 
 import com.android.internal.location.ProviderProperties;
 import com.android.internal.location.ProviderRequest;
@@ -49,9 +52,8 @@
     private volatile boolean mReportLocation;
 
     public PassiveProvider(Context context) {
-        // using a direct executor is only acceptable because this class is so simple it is trivial
-        // to verify that it does not acquire any locks or re-enter LMS from callbacks
-        super(context, Runnable::run);
+        // using a direct executor is ok because this class has no locks that could deadlock
+        super(DIRECT_EXECUTOR, context);
 
         mReportLocation = false;
 
@@ -59,15 +61,26 @@
         setAllowed(true);
     }
 
+    /**
+     * Pass a location into the passive provider.
+     */
+    public void updateLocation(Location location) {
+        if (mReportLocation) {
+            reportLocation(location);
+        }
+    }
+
     @Override
     public void onSetRequest(ProviderRequest request) {
         mReportLocation = request.reportLocation;
     }
 
-    public void updateLocation(Location location) {
-        if (mReportLocation) {
-            reportLocation(location);
-        }
+    @Override
+    protected void onExtraCommand(int uid, int pid, String command, Bundle extras) {}
+
+    @Override
+    protected void onRequestSetAllowed(boolean allowed) {
+        // do nothing - the passive provider is always allowed
     }
 
     @Override
diff --git a/services/core/java/com/android/server/location/RemoteListenerHelper.java b/services/core/java/com/android/server/location/RemoteListenerHelper.java
index 01522739..11f0685 100644
--- a/services/core/java/com/android/server/location/RemoteListenerHelper.java
+++ b/services/core/java/com/android/server/location/RemoteListenerHelper.java
@@ -17,6 +17,7 @@
 package com.android.server.location;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.app.AppOpsManager;
 import android.content.Context;
 import android.os.Handler;
@@ -32,9 +33,10 @@
 /**
  * A helper class that handles operations in remote listeners.
  *
+ * @param <TRequest> the type of request.
  * @param <TListener> the type of GNSS data listener.
  */
-public abstract class RemoteListenerHelper<TListener extends IInterface> {
+public abstract class RemoteListenerHelper<TRequest, TListener extends IInterface> {
 
     protected static final int RESULT_SUCCESS = 0;
     protected static final int RESULT_NOT_AVAILABLE = 1;
@@ -47,7 +49,7 @@
     protected final Handler mHandler;
     private final String mTag;
 
-    private final Map<IBinder, IdentifiedListener> mListenerMap = new HashMap<>();
+    protected final Map<IBinder, IdentifiedListener> mListenerMap = new HashMap<>();
 
     protected final Context mContext;
     protected final AppOpsManager mAppOps;
@@ -75,7 +77,8 @@
     /**
      * Adds GNSS data listener {@code listener} with caller identify {@code callerIdentify}.
      */
-    public void addListener(@NonNull TListener listener, CallerIdentity callerIdentity) {
+    public void addListener(@Nullable TRequest request, @NonNull TListener listener,
+            CallerIdentity callerIdentity) {
         Objects.requireNonNull(listener, "Attempted to register a 'null' listener.");
         IBinder binder = listener.asBinder();
         synchronized (mListenerMap) {
@@ -84,7 +87,7 @@
                 return;
             }
 
-            IdentifiedListener identifiedListener = new IdentifiedListener(listener,
+            IdentifiedListener identifiedListener = new IdentifiedListener(request, listener,
                     callerIdentity);
             mListenerMap.put(binder, identifiedListener);
 
@@ -257,14 +260,22 @@
         return RESULT_SUCCESS;
     }
 
-    private class IdentifiedListener {
+    protected class IdentifiedListener {
+        @Nullable private final TRequest mRequest;
         private final TListener mListener;
         private final CallerIdentity mCallerIdentity;
 
-        private IdentifiedListener(@NonNull TListener listener, CallerIdentity callerIdentity) {
+        private IdentifiedListener(@Nullable TRequest request, @NonNull TListener listener,
+                CallerIdentity callerIdentity) {
             mListener = listener;
+            mRequest = request;
             mCallerIdentity = callerIdentity;
         }
+
+        @Nullable
+        protected TRequest getRequest() {
+            return mRequest;
+        }
     }
 
     private class HandlerRunnable implements Runnable {
diff --git a/services/core/java/com/android/server/location/LocationSettingsStore.java b/services/core/java/com/android/server/location/SettingsHelper.java
similarity index 80%
rename from services/core/java/com/android/server/location/LocationSettingsStore.java
rename to services/core/java/com/android/server/location/SettingsHelper.java
index 0e8720e..370a3f7 100644
--- a/services/core/java/com/android/server/location/LocationSettingsStore.java
+++ b/services/core/java/com/android/server/location/SettingsHelper.java
@@ -23,6 +23,7 @@
 import static android.provider.Settings.Global.LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS;
 import static android.provider.Settings.Global.LOCATION_IGNORE_SETTINGS_PACKAGE_WHITELIST;
 import static android.provider.Settings.Global.LOCATION_LAST_LOCATION_MAX_AGE_MILLIS;
+import static android.provider.Settings.Secure.LOCATION_COARSE_ACCURACY_M;
 import static android.provider.Settings.Secure.LOCATION_MODE;
 import static android.provider.Settings.Secure.LOCATION_MODE_OFF;
 
@@ -54,7 +55,7 @@
 /**
  * Provides accessors and listeners for all location related settings.
  */
-public class LocationSettingsStore {
+public class SettingsHelper {
 
     /**
      * Listener for user-specific settings changes.
@@ -88,6 +89,7 @@
     private static final long DEFAULT_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS =
             30 * 60 * 1000;
     private static final long DEFAULT_MAX_LAST_LOCATION_AGE_MS = 20 * 60 * 1000;
+    private static final float DEFAULT_COARSE_LOCATION_ACCURACY_M = 2000.0f;
 
     private final Context mContext;
 
@@ -99,7 +101,7 @@
     private final StringSetCachedGlobalSetting mIgnoreSettingsPackageWhitelist;
 
     // TODO: get rid of handler
-    public LocationSettingsStore(Context context, Handler handler) {
+    public SettingsHelper(Context context, Handler handler) {
         mContext = context;
 
         mLocationMode = new IntegerSecureSetting(context, LOCATION_MODE, handler);
@@ -118,7 +120,7 @@
     }
 
     /** Called when system is ready. */
-    public synchronized void onSystemReady() {
+    public void onSystemReady() {
         mLocationMode.register();
         mBackgroundThrottleIntervalMs.register();
         mLocationPackageBlacklist.register();
@@ -135,7 +137,26 @@
     }
 
     /**
-     * Add a listener for changes to the location enabled setting.
+     * Set location enabled for a user.
+     */
+    public void setLocationEnabled(boolean enabled, int userId) {
+        long identity = Binder.clearCallingIdentity();
+        try {
+            Settings.Secure.putIntForUser(
+                    mContext.getContentResolver(),
+                    Settings.Secure.LOCATION_MODE,
+                    enabled
+                        ? Settings.Secure.LOCATION_MODE_ON
+                        : Settings.Secure.LOCATION_MODE_OFF,
+                    userId);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
+     * Add a listener for changes to the location enabled setting. Callbacks occur on an unspecified
+     * thread.
      */
     public void addOnLocationEnabledChangedListener(UserSettingChangedListener listener) {
         mLocationMode.addListener(listener);
@@ -156,7 +177,8 @@
     }
 
     /**
-     * Add a listener for changes to the background throttle interval.
+     * Add a listener for changes to the background throttle interval. Callbacks occur on an
+     * unspecified thread.
      */
     public void addOnBackgroundThrottleIntervalChangedListener(
             GlobalSettingChangedListener listener) {
@@ -204,7 +226,8 @@
     }
 
     /**
-     * Add a listener for changes to the background throttle package whitelist.
+     * Add a listener for changes to the background throttle package whitelist. Callbacks occur on
+     * an unspecified thread.
      */
     public void addOnBackgroundThrottlePackageWhitelistChangedListener(
             GlobalSettingChangedListener listener) {
@@ -227,7 +250,8 @@
     }
 
     /**
-     * Add a listener for changes to the ignore settings package whitelist.
+     * Add a listener for changes to the ignore settings package whitelist. Callbacks occur on an
+     * unspecified thread.
      */
     public void addOnIgnoreSettingsPackageWhitelistChangedListener(
             GlobalSettingChangedListener listener) {
@@ -246,19 +270,45 @@
      * Retrieve the background throttling proximity alert interval.
      */
     public long getBackgroundThrottleProximityAlertIntervalMs() {
-        return Settings.Global.getLong(mContext.getContentResolver(),
-                LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS,
-                DEFAULT_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS);
+        long identity = Binder.clearCallingIdentity();
+        try {
+            return Settings.Global.getLong(mContext.getContentResolver(),
+                    LOCATION_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS,
+                    DEFAULT_BACKGROUND_THROTTLE_PROXIMITY_ALERT_INTERVAL_MS);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
     }
 
     /**
      * Retrieve maximum age of the last location.
      */
     public long getMaxLastLocationAgeMs() {
-        return Settings.Global.getLong(
-                mContext.getContentResolver(),
-                LOCATION_LAST_LOCATION_MAX_AGE_MILLIS,
-                DEFAULT_MAX_LAST_LOCATION_AGE_MS);
+        long identity = Binder.clearCallingIdentity();
+        try {
+            return Settings.Global.getLong(
+                    mContext.getContentResolver(),
+                    LOCATION_LAST_LOCATION_MAX_AGE_MILLIS,
+                    DEFAULT_MAX_LAST_LOCATION_AGE_MS);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    /**
+     * Retrieve the accuracy for coarsening location, ie, the grid size used for snap-to-grid
+     * coarsening.
+     */
+    public float getCoarseLocationAccuracyM() {
+        long identity = Binder.clearCallingIdentity();
+        try {
+            return Settings.Secure.getFloat(
+                    mContext.getContentResolver(),
+                    LOCATION_COARSE_ACCURACY_M,
+                    DEFAULT_COARSE_LOCATION_ACCURACY_M);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
     }
 
     /**
@@ -340,6 +390,8 @@
     private abstract static class ObservingSetting extends ContentObserver {
 
         private final CopyOnWriteArrayList<UserSettingChangedListener> mListeners;
+
+        @GuardedBy("this")
         private boolean mRegistered;
 
         private ObservingSetting(Handler handler) {
@@ -347,11 +399,11 @@
             mListeners = new CopyOnWriteArrayList<>();
         }
 
-        protected boolean isRegistered() {
+        protected synchronized boolean isRegistered() {
             return mRegistered;
         }
 
-        protected void register(Context context, Uri uri) {
+        protected synchronized void register(Context context, Uri uri) {
             if (mRegistered) {
                 return;
             }
@@ -393,8 +445,13 @@
         }
 
         public int getValueForUser(int defaultValue, int userId) {
-            return Settings.Secure.getIntForUser(mContext.getContentResolver(), mSettingName,
-                    defaultValue, userId);
+            long identity = Binder.clearCallingIdentity();
+            try {
+                return Settings.Secure.getIntForUser(mContext.getContentResolver(), mSettingName,
+                        defaultValue, userId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
     }
 
@@ -417,7 +474,7 @@
             mCachedUserId = UserHandle.USER_NULL;
         }
 
-        public synchronized void register() {
+        public void register() {
             register(mContext, Settings.Secure.getUriFor(mSettingName));
         }
 
@@ -426,12 +483,17 @@
 
             List<String> value = mCachedValue;
             if (userId != mCachedUserId) {
-                String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(),
-                        mSettingName, userId);
-                if (TextUtils.isEmpty(setting)) {
-                    value = Collections.emptyList();
-                } else {
-                    value = Arrays.asList(setting.split(","));
+                long identity = Binder.clearCallingIdentity();
+                try {
+                    String setting = Settings.Secure.getStringForUser(mContext.getContentResolver(),
+                            mSettingName, userId);
+                    if (TextUtils.isEmpty(setting)) {
+                        value = Collections.emptyList();
+                    } else {
+                        value = Arrays.asList(setting.split(","));
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
                 }
 
                 if (isRegistered()) {
@@ -473,8 +535,13 @@
         }
 
         public long getValue(long defaultValue) {
-            return Settings.Global.getLong(mContext.getContentResolver(), mSettingName,
-                    defaultValue);
+            long identity = Binder.clearCallingIdentity();
+            try {
+                return Settings.Global.getLong(mContext.getContentResolver(), mSettingName,
+                        defaultValue);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
         }
     }
 
@@ -499,18 +566,23 @@
             mValid = false;
         }
 
-        public synchronized void register() {
+        public void register() {
             register(mContext, Settings.Global.getUriFor(mSettingName));
         }
 
         public synchronized Set<String> getValue() {
             ArraySet<String> value = mCachedValue;
             if (!mValid) {
-                value = new ArraySet<>(mBaseValuesSupplier.get());
-                String setting = Settings.Global.getString(mContext.getContentResolver(),
-                        mSettingName);
-                if (!TextUtils.isEmpty(setting)) {
-                    value.addAll(Arrays.asList(setting.split(",")));
+                long identity = Binder.clearCallingIdentity();
+                try {
+                    value = new ArraySet<>(mBaseValuesSupplier.get());
+                    String setting = Settings.Global.getString(mContext.getContentResolver(),
+                            mSettingName);
+                    if (!TextUtils.isEmpty(setting)) {
+                        value.addAll(Arrays.asList(setting.split(",")));
+                    }
+                } finally {
+                    Binder.restoreCallingIdentity(identity);
                 }
 
                 if (isRegistered()) {
diff --git a/services/core/java/com/android/server/location/TEST_MAPPING b/services/core/java/com/android/server/location/TEST_MAPPING
index 2e21fa6..214d2f3 100644
--- a/services/core/java/com/android/server/location/TEST_MAPPING
+++ b/services/core/java/com/android/server/location/TEST_MAPPING
@@ -1,10 +1,19 @@
 {
   "presubmit": [
     {
+      "name": "CtsLocationFineTestCases"
+    },
+    {
       "name": "CtsLocationCoarseTestCases"
     },
     {
       "name": "CtsLocationNoneTestCases"
+    },
+    {
+      "name": "FrameworksMockingServicesTests",
+      "options": [{
+        "include-filter": "com.android.server.location"
+      }]
     }
   ]
 }
\ No newline at end of file
diff --git a/services/core/java/com/android/server/location/UserInfoHelper.java b/services/core/java/com/android/server/location/UserInfoHelper.java
new file mode 100644
index 0000000..a33e2da
--- /dev/null
+++ b/services/core/java/com/android/server/location/UserInfoHelper.java
@@ -0,0 +1,248 @@
+/*
+ * 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.server.location;
+
+import static android.os.UserManager.DISALLOW_SHARE_LOCATION;
+
+import android.annotation.IntDef;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.ActivityManager;
+import android.content.BroadcastReceiver;
+import android.content.Context;
+import android.content.Intent;
+import android.content.IntentFilter;
+import android.os.Binder;
+import android.os.Build;
+import android.os.UserHandle;
+import android.os.UserManager;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.Preconditions;
+import com.android.server.FgThread;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Arrays;
+import java.util.concurrent.CopyOnWriteArrayList;
+
+/**
+ * Provides accessors and listeners for all user info.
+ */
+public class UserInfoHelper {
+
+    /**
+     * Listener for current user changes.
+     */
+    public interface UserListener {
+
+        int USER_SWITCHED = 1;
+        int USER_STARTED = 2;
+        int USER_STOPPED = 3;
+
+        @IntDef({USER_SWITCHED, USER_STARTED, USER_STOPPED})
+        @Retention(RetentionPolicy.SOURCE)
+        @interface UserChange {}
+
+        /**
+         * Called when something has changed about the given user.
+         */
+        void onUserChanged(@UserIdInt int userId, @UserChange int change);
+    }
+
+    private final Context mContext;
+    private final CopyOnWriteArrayList<UserListener> mListeners;
+
+    @GuardedBy("this")
+    @Nullable private UserManager mUserManager;
+
+    @UserIdInt private volatile int mCurrentUserId;
+
+    @GuardedBy("this")
+    @UserIdInt private int mCachedParentUserId;
+    @GuardedBy("this")
+    private int[] mCachedProfileUserIds;
+
+    public UserInfoHelper(Context context) {
+        mContext = context;
+        mListeners = new CopyOnWriteArrayList<>();
+
+        mCurrentUserId = UserHandle.USER_NULL;
+        mCachedParentUserId = UserHandle.USER_NULL;
+        mCachedProfileUserIds = new int[]{UserHandle.USER_NULL};
+    }
+
+    /** Called when system is ready. */
+    public synchronized void onSystemReady() {
+        if (mUserManager != null) {
+            return;
+        }
+
+        mUserManager = mContext.getSystemService(UserManager.class);
+
+        IntentFilter intentFilter = new IntentFilter();
+        intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
+        intentFilter.addAction(Intent.ACTION_USER_STARTED);
+        intentFilter.addAction(Intent.ACTION_USER_STOPPED);
+        intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
+        intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
+
+        mContext.registerReceiverAsUser(new BroadcastReceiver() {
+            @Override
+            public void onReceive(Context context, Intent intent) {
+                String action = intent.getAction();
+                if (action == null) {
+                    return;
+                }
+                int userId;
+                switch (action) {
+                    case Intent.ACTION_USER_SWITCHED:
+                        userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+                        if (userId != UserHandle.USER_NULL) {
+                            onCurrentUserChanged(userId);
+                        }
+                        break;
+                    case Intent.ACTION_USER_STARTED:
+                        userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+                        if (userId != UserHandle.USER_NULL) {
+                            onUserChanged(userId, UserListener.USER_STARTED);
+                        }
+                        break;
+                    case Intent.ACTION_USER_STOPPED:
+                        userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE, UserHandle.USER_NULL);
+                        if (userId != UserHandle.USER_NULL) {
+                            onUserChanged(userId, UserListener.USER_STOPPED);
+                        }
+                        break;
+                    case Intent.ACTION_MANAGED_PROFILE_ADDED:
+                    case Intent.ACTION_MANAGED_PROFILE_REMOVED:
+                        onUserProfilesChanged();
+                        break;
+                }
+            }
+        }, UserHandle.ALL, intentFilter, null, FgThread.getHandler());
+
+        mCurrentUserId = ActivityManager.getCurrentUser();
+    }
+
+    /**
+     * Adds a listener for user changed events. Callbacks occur on an unspecified thread.
+     */
+    public void addListener(UserListener listener) {
+        mListeners.add(listener);
+    }
+
+    /**
+     * Removes a listener for user changed events.
+     */
+    public void removeListener(UserListener listener) {
+        mListeners.remove(listener);
+    }
+
+    private void onCurrentUserChanged(@UserIdInt int newUserId) {
+        if (newUserId == mCurrentUserId) {
+            return;
+        }
+
+        int oldUserId = mCurrentUserId;
+        mCurrentUserId = newUserId;
+
+        onUserChanged(oldUserId, UserListener.USER_SWITCHED);
+        onUserChanged(newUserId, UserListener.USER_SWITCHED);
+    }
+
+    private void onUserChanged(@UserIdInt int userId, @UserListener.UserChange int change) {
+        for (UserListener listener : mListeners) {
+            listener.onUserChanged(userId, change);
+        }
+    }
+
+    private synchronized void onUserProfilesChanged() {
+        // this intent is only sent to the current user
+        if (mCachedParentUserId == mCurrentUserId) {
+            mCachedParentUserId = UserHandle.USER_NULL;
+            mCachedProfileUserIds = new int[]{UserHandle.USER_NULL};
+        }
+    }
+
+    /**
+     * Returns an array of current user ids. This will always include the current user, and will
+     * also include any profiles of the current user.
+     */
+    public int[] getCurrentUserIds() {
+        return getProfileUserIdsForParentUser(mCurrentUserId);
+    }
+
+    /**
+     * Returns true if the given user id is either the current user or a profile of the current
+     * user.
+     */
+    public boolean isCurrentUserId(@UserIdInt int userId) {
+        int currentUserId = mCurrentUserId;
+        return userId == currentUserId || ArrayUtils.contains(
+                getProfileUserIdsForParentUser(currentUserId), userId);
+    }
+
+    @GuardedBy("this")
+    private synchronized int[] getProfileUserIdsForParentUser(@UserIdInt int parentUserId) {
+        if (parentUserId != mCachedParentUserId) {
+            long identity = Binder.clearCallingIdentity();
+            try {
+                Preconditions.checkState(mUserManager != null);
+
+                // more expensive check - check that argument really is a parent user id
+                if (Build.IS_DEBUGGABLE) {
+                    Preconditions.checkArgument(
+                            mUserManager.getProfileParent(parentUserId) == null);
+                }
+
+                mCachedParentUserId = parentUserId;
+                mCachedProfileUserIds = mUserManager.getProfileIdsWithDisabled(parentUserId);
+            } finally {
+                Binder.restoreCallingIdentity(identity);
+            }
+        }
+
+        return mCachedProfileUserIds;
+    }
+
+    /**
+     * Dump info for debugging.
+     */
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
+        boolean systemRunning;
+        synchronized (this) {
+            systemRunning = mUserManager != null;
+        }
+
+        if (systemRunning) {
+            int[] currentUserIds = getProfileUserIdsForParentUser(mCurrentUserId);
+            pw.println("current users: " + Arrays.toString(currentUserIds));
+            for (int userId : currentUserIds) {
+                if (mUserManager.hasUserRestrictionForUser(DISALLOW_SHARE_LOCATION,
+                        UserHandle.of(userId))) {
+                    pw.println("  u" + userId + " restricted");
+                }
+            }
+        } else {
+            pw.println("current user: " + mCurrentUserId);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/location/UserInfoStore.java b/services/core/java/com/android/server/location/UserInfoStore.java
deleted file mode 100644
index f282ed2..0000000
--- a/services/core/java/com/android/server/location/UserInfoStore.java
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * 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.server.location;
-
-import android.annotation.Nullable;
-import android.annotation.UserIdInt;
-import android.app.ActivityManager;
-import android.content.BroadcastReceiver;
-import android.content.Context;
-import android.content.Intent;
-import android.content.IntentFilter;
-import android.content.pm.UserInfo;
-import android.os.Binder;
-import android.os.Build;
-import android.os.UserHandle;
-import android.os.UserManager;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.Preconditions;
-import com.android.server.FgThread;
-
-import java.io.FileDescriptor;
-import java.io.PrintWriter;
-import java.util.Arrays;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * Provides accessors and listeners for all user info.
- */
-public class UserInfoStore {
-
-    /**
-     * Listener for current user changes.
-     */
-    public interface UserChangedListener {
-        /**
-         * Called when the current user changes.
-         */
-        void onUserChanged(@UserIdInt int oldUserId, @UserIdInt int newUserId);
-    }
-
-    private final Context mContext;
-    private final CopyOnWriteArrayList<UserChangedListener> mListeners;
-
-    @GuardedBy("this")
-    @Nullable
-    private UserManager mUserManager;
-
-    @GuardedBy("this")
-    @UserIdInt
-    private int mCurrentUserId;
-
-    @GuardedBy("this")
-    @UserIdInt
-    private int mCachedParentUserId;
-    @GuardedBy("this")
-    private int[] mCachedProfileUserIds;
-
-    public UserInfoStore(Context context) {
-        mContext = context;
-        mListeners = new CopyOnWriteArrayList<>();
-
-        mCurrentUserId = UserHandle.USER_NULL;
-        mCachedParentUserId = UserHandle.USER_NULL;
-        mCachedProfileUserIds = new int[]{UserHandle.USER_NULL};
-    }
-
-    /** Called when system is ready. */
-    public synchronized void onSystemReady() {
-        if (mUserManager != null) {
-            return;
-        }
-
-        mUserManager = mContext.getSystemService(UserManager.class);
-
-        IntentFilter intentFilter = new IntentFilter();
-        intentFilter.addAction(Intent.ACTION_USER_SWITCHED);
-        intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_ADDED);
-        intentFilter.addAction(Intent.ACTION_MANAGED_PROFILE_REMOVED);
-
-        mContext.registerReceiverAsUser(new BroadcastReceiver() {
-            @Override
-            public void onReceive(Context context, Intent intent) {
-                String action = intent.getAction();
-                if (action == null) {
-                    return;
-                }
-                switch (action) {
-                    case Intent.ACTION_USER_SWITCHED:
-                        int userId = intent.getIntExtra(Intent.EXTRA_USER_HANDLE,
-                                UserHandle.USER_NULL);
-                        if (userId != UserHandle.USER_NULL) {
-                            onUserChanged(userId);
-                        }
-                        break;
-                    case Intent.ACTION_MANAGED_PROFILE_ADDED:
-                    case Intent.ACTION_MANAGED_PROFILE_REMOVED:
-                        onUserProfilesChanged();
-                        break;
-                }
-            }
-        }, UserHandle.ALL, intentFilter, null, FgThread.getHandler());
-
-        mCurrentUserId = ActivityManager.getCurrentUser();
-    }
-
-    /**
-     * Adds a listener for user changed events.
-     */
-    public void addListener(UserChangedListener listener) {
-        mListeners.add(listener);
-    }
-
-    /**
-     * Removes a listener for user changed events.
-     */
-    public void removeListener(UserChangedListener listener) {
-        mListeners.remove(listener);
-    }
-
-    private void onUserChanged(@UserIdInt int newUserId) {
-        int oldUserId;
-        synchronized (this) {
-            if (newUserId == mCurrentUserId) {
-                return;
-            }
-
-            oldUserId = mCurrentUserId;
-            mCurrentUserId = newUserId;
-        }
-
-        for (UserChangedListener listener : mListeners) {
-            listener.onUserChanged(oldUserId, newUserId);
-        }
-    }
-
-    private synchronized void onUserProfilesChanged() {
-        // this intent is only sent to the current user
-        if (mCachedParentUserId == mCurrentUserId) {
-            mCachedParentUserId = UserHandle.USER_NULL;
-            mCachedProfileUserIds = new int[]{UserHandle.USER_NULL};
-        }
-    }
-
-    /**
-     * Returns the user id of the current user.
-     */
-    @UserIdInt
-    public synchronized int getCurrentUserId() {
-        return mCurrentUserId;
-    }
-
-    /**
-     * Returns true if the given user id is either the current user or a profile of the current
-     * user.
-     */
-    public synchronized boolean isCurrentUserOrProfile(@UserIdInt int userId) {
-        return userId == mCurrentUserId || ArrayUtils.contains(
-                getProfileUserIdsForParentUser(mCurrentUserId), userId);
-    }
-
-    /**
-     * Returns the parent user id of the given user id, or the user id itself if the user id either
-     * is a parent or has no profiles.
-     */
-    @UserIdInt
-    public synchronized int getParentUserId(@UserIdInt int userId) {
-        int parentUserId;
-        if (userId == mCachedParentUserId || ArrayUtils.contains(mCachedProfileUserIds, userId)) {
-            parentUserId = mCachedParentUserId;
-        } else {
-            Preconditions.checkState(mUserManager != null);
-
-            long identity = Binder.clearCallingIdentity();
-            try {
-                UserInfo userInfo = mUserManager.getProfileParent(userId);
-                if (userInfo != null) {
-                    parentUserId = userInfo.id;
-                } else {
-                    // getProfileParent() returns null if the userId is already the parent...
-                    parentUserId = userId;
-                }
-
-                // force profiles into cache
-                getProfileUserIdsForParentUser(parentUserId);
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-
-        return parentUserId;
-    }
-
-    @GuardedBy("this")
-    private int[] getProfileUserIdsForParentUser(@UserIdInt int parentUserId) {
-        Preconditions.checkState(mUserManager != null);
-
-        // only assert on debug builds as this is a more expensive check
-        if (Build.IS_DEBUGGABLE) {
-            long identity = Binder.clearCallingIdentity();
-            try {
-                Preconditions.checkArgument(mUserManager.getProfileParent(parentUserId) == null);
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-
-        if (parentUserId != mCachedParentUserId) {
-            long identity = Binder.clearCallingIdentity();
-            try {
-                mCachedParentUserId = parentUserId;
-                mCachedProfileUserIds = mUserManager.getProfileIdsWithDisabled(parentUserId);
-            } finally {
-                Binder.restoreCallingIdentity(identity);
-            }
-        }
-
-        return mCachedProfileUserIds;
-    }
-
-    /**
-     * Dump info for debugging.
-     */
-    public synchronized void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        pw.println("Current User: " + mCurrentUserId + " " + Arrays.toString(
-                getProfileUserIdsForParentUser(mCurrentUserId)));
-    }
-}
diff --git a/services/core/java/com/android/server/location/gnss/GnssManagerService.java b/services/core/java/com/android/server/location/gnss/GnssManagerService.java
index 1eb2c52..1039cf6 100644
--- a/services/core/java/com/android/server/location/gnss/GnssManagerService.java
+++ b/services/core/java/com/android/server/location/gnss/GnssManagerService.java
@@ -16,41 +16,46 @@
 
 package com.android.server.location.gnss;
 
+import static android.app.AppOpsManager.OP_FINE_LOCATION;
+import static android.location.LocationManager.GPS_PROVIDER;
+
 import android.Manifest;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.ActivityManager;
 import android.app.AppOpsManager;
 import android.content.Context;
 import android.location.GnssCapabilities;
 import android.location.GnssMeasurementCorrections;
+import android.location.GnssRequest;
 import android.location.IBatchedLocationCallback;
+import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssNavigationMessageListener;
 import android.location.IGnssStatusListener;
 import android.location.IGpsGeofenceHardware;
 import android.location.INetInitiatedListener;
 import android.location.Location;
+import android.location.LocationManagerInternal;
 import android.os.Binder;
-import android.os.Handler;
 import android.os.IBinder;
 import android.os.IInterface;
 import android.os.Process;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.stats.location.LocationStatsEnums;
 import android.util.ArrayMap;
 import android.util.Log;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.DumpUtils;
 import com.android.internal.util.IndentingPrintWriter;
-import com.android.server.FgThread;
-import com.android.server.LocationManagerService;
-import com.android.server.LocationManagerServiceUtils;
+import com.android.internal.util.Preconditions;
+import com.android.server.LocalServices;
 import com.android.server.LocationManagerServiceUtils.LinkedListener;
 import com.android.server.LocationManagerServiceUtils.LinkedListenerBase;
+import com.android.server.location.AppForegroundHelper;
 import com.android.server.location.CallerIdentity;
+import com.android.server.location.GnssAntennaInfoProvider;
 import com.android.server.location.GnssBatchingProvider;
 import com.android.server.location.GnssCapabilitiesProvider;
 import com.android.server.location.GnssLocationProvider;
@@ -60,6 +65,7 @@
 import com.android.server.location.GnssStatusListenerHelper;
 import com.android.server.location.LocationUsageLogger;
 import com.android.server.location.RemoteListenerHelper;
+import com.android.server.location.SettingsHelper;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
@@ -70,73 +76,90 @@
 
 /** Manages Gnss providers and related Gnss functions for LocationManagerService. */
 public class GnssManagerService {
-    private static final String TAG = "GnssManagerService";
-    private static final boolean D = Log.isLoggable(TAG, Log.DEBUG);
 
-    // Providers
+    private static final String TAG = "GnssManagerService";
+
+    public static boolean isGnssSupported() {
+        return GnssLocationProvider.isSupported();
+    }
+
+    private final Context mContext;
+    private final SettingsHelper mSettingsHelper;
+    private final AppForegroundHelper mAppForegroundHelper;
+    private final LocationUsageLogger mLocationUsageLogger;
+
     private final GnssLocationProvider mGnssLocationProvider;
     private final GnssStatusListenerHelper mGnssStatusProvider;
     private final GnssMeasurementsProvider mGnssMeasurementsProvider;
     private final GnssMeasurementCorrectionsProvider mGnssMeasurementCorrectionsProvider;
+    private final GnssAntennaInfoProvider mGnssAntennaInfoProvider;
     private final GnssNavigationMessageProvider mGnssNavigationMessageProvider;
     private final GnssLocationProvider.GnssSystemInfoProvider mGnssSystemInfoProvider;
     private final GnssLocationProvider.GnssMetricsProvider mGnssMetricsProvider;
     private final GnssCapabilitiesProvider mGnssCapabilitiesProvider;
     private final GnssBatchingProvider mGnssBatchingProvider;
-
     private final INetInitiatedListener mNetInitiatedListener;
     private final IGpsGeofenceHardware mGpsGeofenceProxy;
-    private final LocationManagerService mLocationManagerService;
-    private final LocationUsageLogger mLocationUsageLogger;
 
     @GuardedBy("mGnssMeasurementsListeners")
-    private final ArrayMap<IBinder,
-            LinkedListener<IGnssMeasurementsListener>>
+    private final ArrayMap<IBinder, LinkedListener<GnssRequest, IGnssMeasurementsListener>>
             mGnssMeasurementsListeners = new ArrayMap<>();
 
+    @GuardedBy("mGnssAntennaInfoListeners")
+    private final ArrayMap<IBinder,
+            LinkedListener<Void, IGnssAntennaInfoListener>>
+            mGnssAntennaInfoListeners = new ArrayMap<>();
+
     @GuardedBy("mGnssNavigationMessageListeners")
-    private final ArrayMap<
-            IBinder, LinkedListener<IGnssNavigationMessageListener>>
+    private final ArrayMap<IBinder, LinkedListener<Void, IGnssNavigationMessageListener>>
             mGnssNavigationMessageListeners = new ArrayMap<>();
 
     @GuardedBy("mGnssStatusListeners")
-    private final ArrayMap<IBinder, LinkedListener<IGnssStatusListener>>
+    private final ArrayMap<IBinder, LinkedListener<Void, IGnssStatusListener>>
             mGnssStatusListeners = new ArrayMap<>();
 
-    @GuardedBy("mGnssBatchingLock")
-    private IBatchedLocationCallback mGnssBatchingCallback;
+    @GuardedBy("this")
+    @Nullable private LocationManagerInternal mLocationManagerInternal;
+    @GuardedBy("this")
+    @Nullable private AppOpsManager mAppOpsManager;
+
+    private final Object mGnssBatchingLock = new Object();
 
     @GuardedBy("mGnssBatchingLock")
-    private LinkedListener<IBatchedLocationCallback>
-            mGnssBatchingDeathCallback;
+    @Nullable private IBatchedLocationCallback mGnssBatchingCallback;
+
+    @GuardedBy("mGnssBatchingLock")
+    @Nullable
+    private LinkedListener<Void, IBatchedLocationCallback> mGnssBatchingDeathCallback;
 
     @GuardedBy("mGnssBatchingLock")
     private boolean mGnssBatchingInProgress = false;
 
-    private final Object mGnssBatchingLock = new Object();
-    private final Context mContext;
-    private final Handler mHandler;
-
-    public GnssManagerService(LocationManagerService locationManagerService,
-            Context context, LocationUsageLogger locationUsageLogger) {
-        this(locationManagerService, context,
-                new GnssLocationProvider(context, FgThread.getHandler()), locationUsageLogger);
+    public GnssManagerService(Context context, SettingsHelper settingsHelper,
+            AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger) {
+        this(context, settingsHelper, appForegroundHelper, locationUsageLogger, null);
     }
 
     // Can use this constructor to inject GnssLocationProvider for testing
     @VisibleForTesting
-    public GnssManagerService(LocationManagerService locationManagerService,
-            Context context,
-            GnssLocationProvider gnssLocationProvider,
-            LocationUsageLogger locationUsageLogger) {
+    GnssManagerService(Context context, SettingsHelper settingsHelper,
+            AppForegroundHelper appForegroundHelper, LocationUsageLogger locationUsageLogger,
+            GnssLocationProvider gnssLocationProvider) {
+        Preconditions.checkState(isGnssSupported());
+
         mContext = context;
-        mHandler = FgThread.getHandler();
+        mSettingsHelper = settingsHelper;
+        mAppForegroundHelper = appForegroundHelper;
+        mLocationUsageLogger = locationUsageLogger;
 
-        mGnssLocationProvider =
-                gnssLocationProvider;
+        if (gnssLocationProvider == null) {
+            gnssLocationProvider = new GnssLocationProvider(mContext);
+        }
 
+        mGnssLocationProvider = gnssLocationProvider;
         mGnssStatusProvider = mGnssLocationProvider.getGnssStatusProvider();
         mGnssMeasurementsProvider = mGnssLocationProvider.getGnssMeasurementsProvider();
+        mGnssAntennaInfoProvider = mGnssLocationProvider.getGnssAntennaInfoProvider();
         mGnssMeasurementCorrectionsProvider =
                 mGnssLocationProvider.getGnssMeasurementCorrectionsProvider();
         mGnssNavigationMessageProvider = mGnssLocationProvider.getGnssNavigationMessageProvider();
@@ -144,108 +167,73 @@
         mGnssMetricsProvider = mGnssLocationProvider.getGnssMetricsProvider();
         mGnssCapabilitiesProvider = mGnssLocationProvider.getGnssCapabilitiesProvider();
         mGnssBatchingProvider = mGnssLocationProvider.getGnssBatchingProvider();
-
         mNetInitiatedListener = mGnssLocationProvider.getNetInitiatedListener();
         mGpsGeofenceProxy = mGnssLocationProvider.getGpsGeofenceProxy();
-        mLocationManagerService = locationManagerService;
-        mLocationUsageLogger = locationUsageLogger;
-
-        registerUidListener();
     }
 
-    public static boolean isGnssSupported() {
-        return GnssLocationProvider.isSupported();
-    }
-
-    private boolean hasGnssPermissions(String packageName) {
-        mContext.enforceCallingPermission(
-                Manifest.permission.ACCESS_FINE_LOCATION,
-                "Fine location permission not granted.");
-
-        int uid = Binder.getCallingUid();
-        long identity = Binder.clearCallingIdentity();
-        try {
-            return mContext.getSystemService(
-                    AppOpsManager.class).checkOp(AppOpsManager.OP_FINE_LOCATION, uid, packageName)
-                    == AppOpsManager.MODE_ALLOWED;
-        } finally {
-            Binder.restoreCallingIdentity(identity);
+    /** Called when system is ready. */
+    public synchronized void onSystemReady() {
+        if (mLocationManagerInternal != null) {
+            return;
         }
+
+        mSettingsHelper.onSystemReady();
+        mAppForegroundHelper.onSystemReady();
+
+        mLocationManagerInternal = LocalServices.getService(LocationManagerInternal.class);
+        mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
+
+        mAppForegroundHelper.addListener(this::onAppForegroundChanged);
     }
 
+    /** Retrieve the GnssLocationProvider. */
     public GnssLocationProvider getGnssLocationProvider() {
         return mGnssLocationProvider;
     }
 
+    /** Retrieve the IGpsGeofenceHardware. */
     public IGpsGeofenceHardware getGpsGeofenceProxy() {
         return mGpsGeofenceProxy;
     }
 
     /**
      * Get year of GNSS hardware.
-     *
-     * @return year of GNSS hardware as an int if possible, otherwise zero
      */
     public int getGnssYearOfHardware() {
-        if (mGnssSystemInfoProvider != null) {
-            return mGnssSystemInfoProvider.getGnssYearOfHardware();
-        } else {
-            return 0;
-        }
+        return mGnssSystemInfoProvider.getGnssYearOfHardware();
     }
 
     /**
      * Get model name of GNSS hardware.
-     *
-     * @return GNSS hardware model name as a string if possible, otherwise null
      */
+    @Nullable
     public String getGnssHardwareModelName() {
-        if (mGnssSystemInfoProvider != null) {
-            return mGnssSystemInfoProvider.getGnssHardwareModelName();
-        } else {
-            return null;
-        }
+        return mGnssSystemInfoProvider.getGnssHardwareModelName();
     }
 
     /**
-     * Get GNSS hardware capabilities. The capabilities are described in {@link
-     * android.location.GnssCapabilities} and their integer values correspond to the
-     * bit positions in the returned {@code long} value.
-     *
-     * @param packageName name of requesting package
-     * @return capabilities supported by the GNSS chipset
+     * Get GNSS hardware capabilities. The capabilities returned are a bitfield as described in
+     * {@link android.location.GnssCapabilities}.
      */
     public long getGnssCapabilities(String packageName) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to obtain GNSS chipset capabilities.");
-        if (!hasGnssPermissions(packageName) || mGnssCapabilitiesProvider == null) {
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
+
+        if (!checkLocationAppOp(packageName)) {
             return GnssCapabilities.INVALID_CAPABILITIES;
         }
+
         return mGnssCapabilitiesProvider.getGnssCapabilities();
     }
 
     /**
      * Get size of GNSS batch (GNSS location results are batched together for power savings).
-     * Requires LOCATION_HARDWARE and GNSS permissions.
-     *
-     * @param packageName name of requesting package
-     * @return size of the GNSS batch collection
      */
     public int getGnssBatchSize(String packageName) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
 
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "getGnssBatchSize called without GNSS permissions");
-            return 0;
-        }
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not get GNSS batch size. GNSS batching provider "
-                            + "not available.");
+        if (!checkLocationAppOp(packageName)) {
             return 0;
         }
 
@@ -257,27 +245,12 @@
     /**
      * Starts GNSS batch collection. GNSS positions are collected in a batch before being delivered
      * as a collection.
-     *
-     * @param periodNanos    duration over which to collect GPS positions before delivering as a
-     *                       batch
-     * @param wakeOnFifoFull specifying whether to wake on full queue
-     * @param packageName    name of requesting package
-     * @return true of batch started successfully, false otherwise
      */
     public boolean startGnssBatch(long periodNanos, boolean wakeOnFifoFull, String packageName) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
 
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "startGnssBatch called without GNSS permissions");
-            return false;
-        }
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not start GNSS batching. GNSS batching provider "
-                            + "not available.");
+        if (!checkLocationAppOp(packageName)) {
             return false;
         }
 
@@ -285,7 +258,6 @@
             if (mGnssBatchingInProgress) {
                 // Current design does not expect multiple starts to be called repeatedly
                 Log.e(TAG, "startGnssBatch unexpectedly called w/o stopping prior batch");
-                // Try to clean up anyway, and continue
                 stopGnssBatch();
             }
 
@@ -296,26 +268,13 @@
 
     /**
      * Adds a GNSS batching callback for delivering GNSS location batch results.
-     *
-     * @param callback    called when batching operation is complete to deliver GPS positions
-     * @param packageName name of requesting package
-     * @return true if callback is successfully added, false otherwise
      */
     public boolean addGnssBatchingCallback(IBatchedLocationCallback callback, String packageName,
             @Nullable String featureId, @NonNull String listenerIdentity) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
 
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "addGnssBatchingCallback called without GNSS permissions");
-            return false;
-        }
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not add GNSS batching callback. GNSS batching provider "
-                            + "not available.");
+        if (!checkLocationAppOp(packageName)) {
             return false;
         }
 
@@ -326,6 +285,7 @@
             mGnssBatchingCallback = callback;
             mGnssBatchingDeathCallback =
                     new LinkedListener<>(
+                            /* request= */ null,
                             callback,
                             "BatchedLocationCallback",
                             callerIdentity,
@@ -333,11 +293,9 @@
                                 stopGnssBatch();
                                 removeGnssBatchingCallback();
                             });
-            if (!mGnssBatchingDeathCallback.linkToListenerDeathNotificationLocked(
-                    callback.asBinder())) {
-                return false;
-            }
-            return true;
+
+            return mGnssBatchingDeathCallback.linkToListenerDeathNotificationLocked(
+                    callback.asBinder());
         }
     }
 
@@ -347,27 +305,14 @@
      * @param packageName name of requesting package
      */
     public void flushGnssBatch(String packageName) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
 
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "flushGnssBatch called without GNSS permissions");
-            return;
-        }
-
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not flush GNSS batch. GNSS batching provider "
-                            + "not available.");
+        if (!checkLocationAppOp(packageName)) {
             return;
         }
 
         synchronized (mGnssBatchingLock) {
-            if (!mGnssBatchingInProgress) {
-                Log.w(TAG, "flushGnssBatch called with no batch in progress");
-            }
             mGnssBatchingProvider.flush();
         }
     }
@@ -376,17 +321,7 @@
      * Removes GNSS batching callback.
      */
     public void removeGnssBatchingCallback() {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
-
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not add GNSS batching callback. GNSS batching provider "
-                            + "not available.");
-            return;
-        }
+        mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE, null);
 
         synchronized (mGnssBatchingLock) {
             mGnssBatchingDeathCallback.unlinkFromListenerDeathNotificationLocked(
@@ -398,44 +333,17 @@
 
     /**
      * Stop GNSS batch collection.
-     *
-     * @return true if GNSS batch successfully stopped, false otherwise
      */
     public boolean stopGnssBatch() {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to access hardware batching");
+        mContext.enforceCallingPermission(android.Manifest.permission.LOCATION_HARDWARE, null);
 
-        if (mGnssBatchingProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not stop GNSS batch. GNSS batching provider "
-                            + "not available.");
-            return false;
-        }
         synchronized (mGnssBatchingLock) {
             mGnssBatchingInProgress = false;
             return mGnssBatchingProvider.stop();
         }
     }
 
-    private void registerUidListener() {
-        mContext.getSystemService(
-                ActivityManager.class).addOnUidImportanceListener(
-                    (uid, importance) -> {
-                        // listener invoked on ui thread, move to our thread to reduce risk
-                        // of blocking ui thread
-                        mHandler.post(
-                                () -> {
-                                    onForegroundChanged(uid,
-                                            LocationManagerServiceUtils.isImportanceForeground(
-                                                    importance));
-                                });
-                    },
-                ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE);
-    }
-
-    private void onForegroundChanged(int uid, boolean foreground) {
+    private void onAppForegroundChanged(int uid, boolean foreground) {
         synchronized (mGnssMeasurementsListeners) {
             updateListenersOnForegroundChangedLocked(
                     mGnssMeasurementsListeners,
@@ -460,109 +368,91 @@
                     uid,
                     foreground);
         }
+        synchronized (mGnssAntennaInfoListeners) {
+            updateListenersOnForegroundChangedLocked(
+                    mGnssAntennaInfoListeners,
+                    mGnssAntennaInfoProvider,
+                    IGnssAntennaInfoListener.Stub::asInterface,
+                    uid,
+                    foreground);
+        }
     }
 
-    private <TListener extends IInterface> void updateListenersOnForegroundChangedLocked(
-            ArrayMap<IBinder, ? extends LinkedListenerBase>
-                    gnssDataListeners,
-            RemoteListenerHelper<TListener> gnssDataProvider,
+    private <TRequest, TListener extends IInterface> void updateListenersOnForegroundChangedLocked(
+            Map<IBinder, LinkedListener<TRequest, TListener>> gnssDataListeners,
+            RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
             Function<IBinder, TListener> mapBinderToListener,
             int uid,
             boolean foreground) {
-        for (Map.Entry<IBinder, ? extends LinkedListenerBase> entry :
+        for (Map.Entry<IBinder, LinkedListener<TRequest, TListener>> entry :
                 gnssDataListeners.entrySet()) {
-            LinkedListenerBase linkedListener = entry.getValue();
+            LinkedListener<TRequest, TListener> linkedListener = entry.getValue();
             CallerIdentity callerIdentity = linkedListener.getCallerIdentity();
+            TRequest request = linkedListener.getRequest();
             if (callerIdentity.mUid != uid) {
                 continue;
             }
 
-            if (D) {
-                Log.d(
-                        TAG,
-                        linkedListener.getListenerName()
-                                + " from uid "
-                                + uid
-                                + " is now "
-                                + LocationManagerServiceUtils.foregroundAsString(foreground));
-            }
-
             TListener listener = mapBinderToListener.apply(entry.getKey());
-            if (foreground || mLocationManagerService.isThrottlingExemptLocked(callerIdentity)) {
-                gnssDataProvider.addListener(listener, callerIdentity);
+            if (foreground || isThrottlingExempt(callerIdentity)) {
+                gnssDataProvider.addListener(request, listener, callerIdentity);
             } else {
                 gnssDataProvider.removeListener(listener);
             }
         }
     }
 
-    private <TListener extends IInterface> boolean addGnssDataListenerLocked(
+    private <TListener extends IInterface, TRequest> boolean addGnssDataListenerLocked(
+            @Nullable TRequest request,
             TListener listener,
             String packageName,
             @Nullable String featureId,
             @NonNull String listenerIdentifier,
-            RemoteListenerHelper<TListener> gnssDataProvider,
+            RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
             ArrayMap<IBinder,
-                    LinkedListener<TListener>> gnssDataListeners,
+                    LinkedListener<TRequest, TListener>> gnssDataListeners,
             Consumer<TListener> binderDeathCallback) {
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "addGnssDataListenerLocked called without GNSS permissions");
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
+
+        if (!checkLocationAppOp(packageName)) {
             return false;
         }
 
-        if (gnssDataProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not add GNSS data listener. GNSS data provider "
-                            + "not available.");
-            return false;
-        }
-
-        CallerIdentity callerIdentity =
-                new CallerIdentity(Binder.getCallingUid(), Binder.getCallingPid(), packageName,
-                        featureId, listenerIdentifier);
-        LinkedListener<TListener> linkedListener =
-                new LocationManagerServiceUtils.LinkedListener<>(
-                        listener, listenerIdentifier, callerIdentity, binderDeathCallback);
+        CallerIdentity callerIdentity = new CallerIdentity(Binder.getCallingUid(),
+                Binder.getCallingPid(), packageName, featureId, listenerIdentifier);
+        LinkedListener<TRequest, TListener> linkedListener = new LinkedListener<>(request, listener,
+                listenerIdentifier, callerIdentity, binderDeathCallback);
         IBinder binder = listener.asBinder();
         if (!linkedListener.linkToListenerDeathNotificationLocked(binder)) {
             return false;
         }
 
         gnssDataListeners.put(binder, linkedListener);
-        long identity = Binder.clearCallingIdentity();
-        try {
-            if (gnssDataProvider == mGnssMeasurementsProvider
-                    || gnssDataProvider == mGnssStatusProvider) {
-                mLocationUsageLogger.logLocationApiUsage(
-                        LocationStatsEnums.USAGE_STARTED,
-                        gnssDataProvider == mGnssMeasurementsProvider
-                                ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
-                                : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
-                        packageName,
-                        /* LocationRequest= */ null,
-                        /* hasListener= */ true,
-                        /* hasIntent= */ false,
-                        /* geofence= */ null,
-                        LocationManagerServiceUtils.getPackageImportance(packageName,
-                                mContext));
-            }
-            if (mLocationManagerService.isThrottlingExemptLocked(callerIdentity)
-                    || LocationManagerServiceUtils.isImportanceForeground(
-                    LocationManagerServiceUtils.getPackageImportance(packageName, mContext))) {
-                gnssDataProvider.addListener(listener, callerIdentity);
-            }
-            return true;
-        } finally {
-            Binder.restoreCallingIdentity(identity);
+        if (gnssDataProvider == mGnssMeasurementsProvider
+                || gnssDataProvider == mGnssStatusProvider) {
+            mLocationUsageLogger.logLocationApiUsage(
+                    LocationStatsEnums.USAGE_STARTED,
+                    gnssDataProvider == mGnssMeasurementsProvider
+                            ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
+                            : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
+                    packageName,
+                    /* LocationRequest= */ null,
+                    /* hasListener= */ true,
+                    /* hasIntent= */ false,
+                    /* geofence= */ null,
+                    mAppForegroundHelper.getImportance(callerIdentity.mUid));
         }
+        if (mAppForegroundHelper.isAppForeground(callerIdentity.mUid)
+                || isThrottlingExempt(callerIdentity)) {
+            gnssDataProvider.addListener(request, listener, callerIdentity);
+        }
+        return true;
     }
 
-    private <TListener extends IInterface> void removeGnssDataListener(
+    private <TRequest, TListener extends IInterface> void removeGnssDataListenerLocked(
             TListener listener,
-            RemoteListenerHelper<TListener> gnssDataProvider,
-            ArrayMap<IBinder,
-                    LinkedListener<TListener>> gnssDataListeners) {
+            RemoteListenerHelper<TRequest, TListener> gnssDataProvider,
+            ArrayMap<IBinder, LinkedListener<TRequest, TListener>> gnssDataListeners) {
         if (gnssDataProvider == null) {
             Log.e(
                     TAG,
@@ -572,30 +462,24 @@
         }
 
         IBinder binder = listener.asBinder();
-        LinkedListener<TListener> linkedListener =
+        LinkedListener<TRequest, TListener> linkedListener =
                 gnssDataListeners.remove(binder);
         if (linkedListener == null) {
             return;
         }
-        long identity = Binder.clearCallingIdentity();
-        try {
-            if (gnssDataProvider == mGnssMeasurementsProvider
-                    || gnssDataProvider == mGnssStatusProvider) {
-                mLocationUsageLogger.logLocationApiUsage(
-                        LocationStatsEnums.USAGE_ENDED,
-                        gnssDataProvider == mGnssMeasurementsProvider
-                                ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
-                                : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
-                        linkedListener.getCallerIdentity().mPackageName,
-                        /* LocationRequest= */ null,
-                        /* hasListener= */ true,
-                        /* hasIntent= */ false,
-                        /* geofence= */ null,
-                        LocationManagerServiceUtils.getPackageImportance(
-                                linkedListener.getCallerIdentity().mPackageName, mContext));
-            }
-        } finally {
-            Binder.restoreCallingIdentity(identity);
+        if (gnssDataProvider == mGnssMeasurementsProvider
+                || gnssDataProvider == mGnssStatusProvider) {
+            mLocationUsageLogger.logLocationApiUsage(
+                    LocationStatsEnums.USAGE_ENDED,
+                    gnssDataProvider == mGnssMeasurementsProvider
+                            ? LocationStatsEnums.API_ADD_GNSS_MEASUREMENTS_LISTENER
+                            : LocationStatsEnums.API_REGISTER_GNSS_STATUS_CALLBACK,
+                    linkedListener.getCallerIdentity().mPackageName,
+                    /* LocationRequest= */ null,
+                    /* hasListener= */ true,
+                    /* hasIntent= */ false,
+                    /* geofence= */ null,
+                    mAppForegroundHelper.getImportance(Binder.getCallingUid()));
         }
         linkedListener.unlinkFromListenerDeathNotificationLocked(binder);
         gnssDataProvider.removeListener(listener);
@@ -603,15 +487,12 @@
 
     /**
      * Registers listener for GNSS status changes.
-     *
-     * @param listener    called when GNSS status changes
-     * @param packageName name of requesting package
-     * @return true if listener is successfully registered, false otherwise
      */
     public boolean registerGnssStatusCallback(IGnssStatusListener listener, String packageName,
             @Nullable String featureId) {
         synchronized (mGnssStatusListeners) {
             return addGnssDataListenerLocked(
+                    /* request= */ null,
                     listener,
                     packageName,
                     featureId,
@@ -624,27 +505,27 @@
 
     /**
      * Unregisters listener for GNSS status changes.
-     *
-     * @param listener called when GNSS status changes
      */
     public void unregisterGnssStatusCallback(IGnssStatusListener listener) {
         synchronized (mGnssStatusListeners) {
-            removeGnssDataListener(listener, mGnssStatusProvider, mGnssStatusListeners);
+            removeGnssDataListenerLocked(listener, mGnssStatusProvider, mGnssStatusListeners);
         }
     }
 
     /**
      * Adds a GNSS measurements listener.
-     *
-     * @param listener    called when GNSS measurements are received
-     * @param packageName name of requesting package
-     * @return true if listener is successfully added, false otherwise
      */
-    public boolean addGnssMeasurementsListener(
-            IGnssMeasurementsListener listener, String packageName, @Nullable String featureId,
+    public boolean addGnssMeasurementsListener(@Nullable GnssRequest request,
+            IGnssMeasurementsListener listener, String packageName,
+            @Nullable String featureId,
             @NonNull String listenerIdentifier) {
+        if (request != null && request.isFullTracking()) {
+            mContext.enforceCallingOrSelfPermission(android.Manifest.permission.LOCATION_HARDWARE,
+                    null);
+        }
         synchronized (mGnssMeasurementsListeners) {
             return addGnssDataListenerLocked(
+                    request,
                     listener,
                     packageName,
                     featureId,
@@ -657,53 +538,74 @@
 
     /**
      * Injects GNSS measurement corrections.
-     *
-     * @param measurementCorrections GNSS measurement corrections
-     * @param packageName            name of requesting package
      */
     public void injectGnssMeasurementCorrections(
             GnssMeasurementCorrections measurementCorrections, String packageName) {
-        mContext.enforceCallingPermission(
-                android.Manifest.permission.LOCATION_HARDWARE,
-                "Location Hardware permission not granted to inject GNSS measurement corrections.");
-        if (!hasGnssPermissions(packageName)) {
-            Log.e(TAG, "Can not inject GNSS corrections due to no permission.");
+        mContext.enforceCallingPermission(Manifest.permission.LOCATION_HARDWARE, null);
+        mContext.enforceCallingPermission(Manifest.permission.ACCESS_FINE_LOCATION, null);
+
+        if (!checkLocationAppOp(packageName)) {
             return;
         }
-        if (mGnssMeasurementCorrectionsProvider == null) {
-            Log.e(
-                    TAG,
-                    "Can not inject GNSS corrections. GNSS measurement corrections provider "
-                            + "not available.");
-            return;
-        }
+
         mGnssMeasurementCorrectionsProvider.injectGnssMeasurementCorrections(
                 measurementCorrections);
     }
 
     /**
      * Removes a GNSS measurements listener.
-     *
-     * @param listener called when GNSS measurements are received
      */
     public void removeGnssMeasurementsListener(IGnssMeasurementsListener listener) {
         synchronized (mGnssMeasurementsListeners) {
-            removeGnssDataListener(listener, mGnssMeasurementsProvider, mGnssMeasurementsListeners);
+            removeGnssDataListenerLocked(listener, mGnssMeasurementsProvider,
+                    mGnssMeasurementsListeners);
+        }
+    }
+
+    /**
+     * Adds a GNSS Antenna Info listener.
+     *
+     * @param listener    called when GNSS antenna info is received
+     * @param packageName name of requesting package
+     * @return true if listener is successfully added, false otherwise
+     */
+    public boolean addGnssAntennaInfoListener(
+            IGnssAntennaInfoListener listener, String packageName,
+            @Nullable String featureId, @NonNull String listenerIdentifier) {
+        synchronized (mGnssAntennaInfoListeners) {
+            return addGnssDataListenerLocked(
+                    /* request= */ null,
+                    listener,
+                    packageName,
+                    featureId,
+                    listenerIdentifier,
+                    mGnssAntennaInfoProvider,
+                    mGnssAntennaInfoListeners,
+                    this::removeGnssAntennaInfoListener);
+        }
+    }
+
+    /**
+     * Removes a GNSS Antenna Info listener.
+     *
+     * @param listener called when GNSS antenna info is received
+     */
+    public void removeGnssAntennaInfoListener(IGnssAntennaInfoListener listener) {
+        synchronized (mGnssAntennaInfoListeners) {
+            removeGnssDataListenerLocked(
+                    listener, mGnssAntennaInfoProvider, mGnssAntennaInfoListeners);
         }
     }
 
     /**
      * Adds a GNSS navigation message listener.
-     *
-     * @param listener    called when navigation message is received
-     * @param packageName name of requesting package
-     * @return true if listener is successfully added, false otherwise
      */
     public boolean addGnssNavigationMessageListener(
             IGnssNavigationMessageListener listener, String packageName,
             @Nullable String featureId, @NonNull String listenerIdentifier) {
         synchronized (mGnssNavigationMessageListeners) {
             return addGnssDataListenerLocked(
+                    /* request= */ null,
                     listener,
                     packageName,
                     featureId,
@@ -716,12 +618,10 @@
 
     /**
      * Removes a GNSS navigation message listener.
-     *
-     * @param listener called when navigation message is received
      */
     public void removeGnssNavigationMessageListener(IGnssNavigationMessageListener listener) {
         synchronized (mGnssNavigationMessageListeners) {
-            removeGnssDataListener(
+            removeGnssDataListenerLocked(
                     listener, mGnssNavigationMessageProvider, mGnssNavigationMessageListeners);
         }
     }
@@ -729,43 +629,70 @@
     /**
      * Send Ni Response, indicating a location request initiated by a network carrier.
      */
-    public boolean sendNiResponse(int notifId, int userResponse) {
-        if (Binder.getCallingUid() != Process.myUid()) {
-            throw new SecurityException(
-                    "calling sendNiResponse from outside of the system is not allowed");
-        }
+    public void sendNiResponse(int notifId, int userResponse) {
         try {
-            return mNetInitiatedListener.sendNiResponse(notifId, userResponse);
+            mNetInitiatedListener.sendNiResponse(notifId, userResponse);
         } catch (RemoteException e) {
             Log.e(TAG, "RemoteException in LocationManagerService.sendNiResponse");
-            return false;
         }
     }
 
     /**
      * Report location results to GNSS batching listener.
-     *
-     * @param locations batch of locations to report to GNSS batching callback
      */
     public void onReportLocation(List<Location> locations) {
-        if (mGnssBatchingCallback == null) {
-            Log.e(TAG, "reportLocationBatch() called without active Callback");
+        IBatchedLocationCallback gnssBatchingCallback;
+        LinkedListener<Void, IBatchedLocationCallback> gnssBatchingDeathCallback;
+        synchronized (mGnssBatchingLock) {
+            gnssBatchingCallback = mGnssBatchingCallback;
+            gnssBatchingDeathCallback = mGnssBatchingDeathCallback;
+        }
+
+        if (gnssBatchingCallback == null || gnssBatchingDeathCallback == null) {
+            return;
+        }
+
+        int userId = UserHandle.getUserId(gnssBatchingDeathCallback.getCallerIdentity().mUid);
+        if (!mLocationManagerInternal.isProviderEnabledForUser(GPS_PROVIDER, userId)) {
+            Log.w(TAG, "reportLocationBatch() called without user permission");
             return;
         }
 
         try {
-            mGnssBatchingCallback.onLocationBatch(locations);
+            gnssBatchingCallback.onLocationBatch(locations);
         } catch (RemoteException e) {
-            Log.e(TAG, "mGnssBatchingCallback.onLocationBatch failed", e);
+            Log.e(TAG, "reportLocationBatch() failed", e);
         }
     }
 
+    private boolean isThrottlingExempt(CallerIdentity callerIdentity) {
+        if (callerIdentity.mUid == Process.SYSTEM_UID) {
+            return true;
+        }
+
+        if (mSettingsHelper.getBackgroundThrottlePackageWhitelist().contains(
+                callerIdentity.mPackageName)) {
+            return true;
+        }
+
+        synchronized (this) {
+            Preconditions.checkState(mLocationManagerInternal != null);
+        }
+        return mLocationManagerInternal.isProviderPackage(callerIdentity.mPackageName);
+    }
+
+    private boolean checkLocationAppOp(String packageName) {
+        synchronized (this) {
+            Preconditions.checkState(mAppOpsManager != null);
+        }
+        return mAppOpsManager.checkOp(OP_FINE_LOCATION, Binder.getCallingUid(), packageName)
+                == AppOpsManager.MODE_ALLOWED;
+    }
+
     /**
-     * Dump for debugging.
+     * Dump info for debugging.
      */
     public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {
-        if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
-
         IndentingPrintWriter ipw = new IndentingPrintWriter(pw, "  ");
 
         if (args.length > 0 && args[0].equals("--gnssmetrics")) {
@@ -778,11 +705,8 @@
         ipw.println("GnssMeasurement Listeners:");
         ipw.increaseIndent();
         synchronized (mGnssMeasurementsListeners) {
-            for (LinkedListenerBase listener :
-                    mGnssMeasurementsListeners
-                            .values()) {
-                ipw.println(listener + ": " + mLocationManagerService.isThrottlingExemptLocked(
-                        listener.getCallerIdentity()));
+            for (LinkedListenerBase listener : mGnssMeasurementsListeners.values()) {
+                ipw.println(listener);
             }
         }
         ipw.decreaseIndent();
@@ -790,10 +714,8 @@
         ipw.println("GnssNavigationMessage Listeners:");
         ipw.increaseIndent();
         synchronized (mGnssNavigationMessageListeners) {
-            for (LinkedListenerBase listener :
-                    mGnssNavigationMessageListeners.values()) {
-                ipw.println(listener + ": " + mLocationManagerService.isThrottlingExemptLocked(
-                        listener.getCallerIdentity()));
+            for (LinkedListenerBase listener : mGnssNavigationMessageListeners.values()) {
+                ipw.println(listener);
             }
         }
         ipw.decreaseIndent();
@@ -801,10 +723,8 @@
         ipw.println("GnssStatus Listeners:");
         ipw.increaseIndent();
         synchronized (mGnssStatusListeners) {
-            for (LinkedListenerBase listener :
-                    mGnssStatusListeners.values()) {
-                ipw.println(listener + ": " + mLocationManagerService.isThrottlingExemptLocked(
-                        listener.getCallerIdentity()));
+            for (LinkedListenerBase listener : mGnssStatusListeners.values()) {
+                ipw.println(listener);
             }
         }
         ipw.decreaseIndent();
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsService.java b/services/core/java/com/android/server/locksettings/LockSettingsService.java
index baae4ea..1f4048f 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsService.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsService.java
@@ -139,6 +139,7 @@
 import java.io.FileNotFoundException;
 import java.io.IOException;
 import java.io.PrintWriter;
+import java.security.GeneralSecurityException;
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
 import java.security.KeyStoreException;
@@ -224,6 +225,7 @@
     private final KeyStore mKeyStore;
 
     private final RecoverableKeyStoreManager mRecoverableKeyStoreManager;
+    private ManagedProfilePasswordCache mManagedProfilePasswordCache;
 
     private final RebootEscrowManager mRebootEscrowManager;
 
@@ -387,6 +389,7 @@
             setLockCredentialInternal(unifiedProfilePassword, managedUserPassword, managedUserId,
                     /* isLockTiedToParent= */ true);
             tieProfileLockToParent(managedUserId, unifiedProfilePassword);
+            mManagedProfilePasswordCache.storePassword(managedUserId, unifiedProfilePassword);
         }
     }
 
@@ -527,6 +530,16 @@
                 int defaultValue) {
             return Settings.Global.getInt(contentResolver, keyName, defaultValue);
         }
+
+        public @NonNull ManagedProfilePasswordCache getManagedProfilePasswordCache() {
+            try {
+                java.security.KeyStore ks = java.security.KeyStore.getInstance("AndroidKeyStore");
+                ks.load(null);
+                return new ManagedProfilePasswordCache(ks, getUserManager());
+            } catch (Exception e) {
+                throw new IllegalStateException("Cannot load keystore", e);
+            }
+        }
     }
 
     public LockSettingsService(Context context) {
@@ -560,6 +573,7 @@
         mStrongAuthTracker.register(mStrongAuth);
 
         mSpManager = injector.getSyntheticPasswordManager(mStorage);
+        mManagedProfilePasswordCache = injector.getManagedProfilePasswordCache();
 
         mRebootEscrowManager = injector.getRebootEscrowManager(new RebootEscrowCallbacks(),
                 mStorage);
@@ -706,7 +720,8 @@
     private void ensureProfileKeystoreUnlocked(int userId) {
         final KeyStore ks = KeyStore.getInstance();
         if (ks.state(userId) == KeyStore.State.LOCKED
-                && tiedManagedProfileReadyToUnlock(mUserManager.getUserInfo(userId))) {
+                && mUserManager.getUserInfo(userId).isManagedProfile()
+                && hasUnifiedChallenge(userId)) {
             Slog.i(TAG, "Managed profile got unlocked, will unlock its keystore");
             // If boot took too long and the password in vold got expired, parent keystore will
             // be still locked, we ignore this case since the user will be prompted to unlock
@@ -1302,6 +1317,7 @@
         LockscreenCredential credential = LockscreenCredential.createManagedPassword(
                 decryptionResult);
         Arrays.fill(decryptionResult, (byte) 0);
+        mManagedProfilePasswordCache.storePassword(userId, credential);
         return credential;
     }
 
@@ -1381,12 +1397,25 @@
         }
 
         for (UserInfo profile : mUserManager.getProfiles(userId)) {
-            // Unlock managed profile with unified lock
-            if (tiedManagedProfileReadyToUnlock(profile)) {
-                // Must pass the challenge on for resetLockout, so it's not over-written, which
-                // causes LockSettingsService to revokeChallenge inappropriately.
-                unlockChildProfile(profile.id, false /* ignoreUserNotAuthenticated */,
-                        challengeType, challenge, resetLockouts);
+            if (profile.id == userId) continue;
+            if (!profile.isManagedProfile()) continue;
+
+            if (hasUnifiedChallenge(profile.id)) {
+                if (mUserManager.isUserRunning(profile.id)) {
+                    // Unlock managed profile with unified lock
+                    // Must pass the challenge on for resetLockout, so it's not over-written, which
+                    // causes LockSettingsService to revokeChallenge inappropriately.
+                    unlockChildProfile(profile.id, false /* ignoreUserNotAuthenticated */,
+                            challengeType, challenge, resetLockouts);
+                } else {
+                    try {
+                        // Profile not ready for unlock yet, but decrypt the unified challenge now
+                        // so it goes into the cache
+                        getDecryptedPasswordForTiedProfile(profile.id);
+                    } catch (GeneralSecurityException | IOException e) {
+                        Slog.d(TAG, "Cache work profile password failed", e);
+                    }
+                }
             }
             // Now we have unlocked the parent user and attempted to unlock the profile we should
             // show notifications if the profile is still locked.
@@ -1417,11 +1446,9 @@
         }
     }
 
-    private boolean tiedManagedProfileReadyToUnlock(UserInfo userInfo) {
-        return userInfo.isManagedProfile()
-                && !getSeparateProfileChallengeEnabledInternal(userInfo.id)
-                && mStorage.hasChildProfileLock(userInfo.id)
-                && mUserManager.isUserRunning(userInfo.id);
+    private boolean hasUnifiedChallenge(int userId) {
+        return !getSeparateProfileChallengeEnabledInternal(userId)
+                && mStorage.hasChildProfileLock(userId);
     }
 
     private Map<Integer, LockscreenCredential> getDecryptedPasswordsForAllTiedProfiles(int userId) {
@@ -2233,6 +2260,7 @@
 
         final KeyStore ks = KeyStore.getInstance();
         ks.onUserRemoved(userId);
+        mManagedProfilePasswordCache.removePassword(userId);
 
         gateKeeperClearSecureUserId(userId);
         if (unknownUser || mUserManager.getUserInfo(userId).isManagedProfile()) {
@@ -2783,6 +2811,7 @@
         synchronizeUnifiedWorkChallengeForProfiles(userId, profilePasswords);
 
         setUserPasswordMetrics(credential, userId);
+        mManagedProfilePasswordCache.removePassword(userId);
 
         if (profilePasswords != null) {
             for (Map.Entry<Integer, LockscreenCredential> entry : profilePasswords.entrySet()) {
@@ -3097,6 +3126,22 @@
         return true;
     }
 
+    @Override
+    public boolean tryUnlockWithCachedUnifiedChallenge(int userId) {
+        try (LockscreenCredential cred = mManagedProfilePasswordCache.retrievePassword(userId)) {
+            if (cred == null) {
+                return false;
+            }
+            return doVerifyCredential(cred, CHALLENGE_NONE, 0, userId, null /* progressCallback */)
+                    .getResponseCode() == VerifyCredentialResponse.RESPONSE_OK;
+        }
+    }
+
+    @Override
+    public void removeCachedUnifiedChallenge(int userId) {
+        mManagedProfilePasswordCache.removePassword(userId);
+    }
+
     static String timestampToString(long timestamp) {
         return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(timestamp));
     }
diff --git a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
index 4943c25..7b767b8 100644
--- a/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
+++ b/services/core/java/com/android/server/locksettings/LockSettingsShellCommand.java
@@ -44,6 +44,7 @@
     private static final String COMMAND_SET_DISABLED = "set-disabled";
     private static final String COMMAND_VERIFY = "verify";
     private static final String COMMAND_GET_DISABLED = "get-disabled";
+    private static final String COMMAND_REMOVE_CACHE = "remove-cache";
     private static final String COMMAND_HELP = "help";
 
     private int mCurrentUserId;
@@ -76,6 +77,15 @@
                         return -1;
                 }
             }
+            switch (cmd) {
+                // Commands that do not require authentication go here.
+                case COMMAND_REMOVE_CACHE:
+                    runRemoveCache();
+                    return 0;
+                case COMMAND_HELP:
+                    onHelp();
+                    return 0;
+            }
             if (!checkCredential()) {
                 return -1;
             }
@@ -105,9 +115,6 @@
                 case COMMAND_GET_DISABLED:
                     runGetDisabled();
                     break;
-                case COMMAND_HELP:
-                    onHelp();
-                    break;
                 default:
                     getErrPrintWriter().println("Unknown command: " + cmd);
                     break;
@@ -163,6 +170,9 @@
             pw.println("  verify [--old <CREDENTIAL>] [--user USER_ID]");
             pw.println("    Verifies the lock credentials.");
             pw.println("");
+            pw.println("  remove-cache [--user USER_ID]");
+            pw.println("    Removes cached unified challenge for the managed profile.");
+            pw.println("");
         }
     }
 
@@ -322,4 +332,9 @@
             return true;
         }
     }
+
+    private void runRemoveCache() {
+        mLockPatternUtils.removeCachedUnifiedChallenge(mCurrentUserId);
+        getOutPrintWriter().println("Password cached removed for user " + mCurrentUserId);
+    }
 }
diff --git a/services/core/java/com/android/server/locksettings/ManagedProfilePasswordCache.java b/services/core/java/com/android/server/locksettings/ManagedProfilePasswordCache.java
new file mode 100644
index 0000000..d38ee67
--- /dev/null
+++ b/services/core/java/com/android/server/locksettings/ManagedProfilePasswordCache.java
@@ -0,0 +1,191 @@
+/*
+ * 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.server.locksettings;
+
+import android.annotation.Nullable;
+import android.content.pm.UserInfo;
+import android.os.UserHandle;
+import android.os.UserManager;
+import android.security.keystore.AndroidKeyStoreSpi;
+import android.security.keystore.KeyGenParameterSpec;
+import android.security.keystore.KeyProperties;
+import android.security.keystore.UserNotAuthenticatedException;
+import android.util.Slog;
+import android.util.SparseArray;
+
+import com.android.internal.widget.LockscreenCredential;
+
+import java.security.GeneralSecurityException;
+import java.security.Key;
+import java.security.KeyStore;
+import java.security.KeyStoreException;
+import java.security.NoSuchAlgorithmException;
+import java.security.UnrecoverableKeyException;
+import java.util.Arrays;
+import java.util.concurrent.TimeUnit;
+
+import javax.crypto.Cipher;
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.GCMParameterSpec;
+
+/**
+ * Caches *unified* work challenge for user 0's managed profiles. Only user 0's profile is supported
+ * at the moment because the cached credential is encrypted using a keystore key auth-bound to
+ * user 0: this is to match how unified work challenge is similarly auth-bound to its parent user's
+ * lockscreen credential normally. It's possible to extend this class to support managed profiles
+ * for secondary users, that will require generating auth-bound keys to their corresponding parent
+ * user though (which {@link KeyGenParameterSpec} does not support right now).
+ *
+ * <p> The cache is filled whenever the managed profile's unified challenge is created or derived
+ * (as part of the parent user's credential verification flow). It's removed when the profile is
+ * deleted or a (separate) lockscreen credential is explicitly set on the profile. There is also
+ * an ADB command to evict the cache "cmd lock_settings remove-cache --user X", to assist
+ * development and testing.
+
+ * <p> The encrypted credential is stored in-memory only so the cache does not persist across
+ * reboots.
+ */
+public class ManagedProfilePasswordCache {
+
+    private static final String TAG = "ManagedProfilePasswordCache";
+    private static final int KEY_LENGTH = 256;
+    private static final int CACHE_TIMEOUT_SECONDS = (int) TimeUnit.DAYS.toSeconds(7);
+
+    private final SparseArray<byte[]> mEncryptedPasswords = new SparseArray<>();
+    private final KeyStore mKeyStore;
+    private final UserManager mUserManager;
+
+    public ManagedProfilePasswordCache(KeyStore keyStore, UserManager userManager) {
+        mKeyStore = keyStore;
+        mUserManager = userManager;
+    }
+
+    /**
+     * Encrypt and store the password in the cache. Does NOT overwrite existing password cache
+     * if one for the given user already exists.
+     */
+    public void storePassword(int userId, LockscreenCredential password) {
+        synchronized (mEncryptedPasswords) {
+            if (mEncryptedPasswords.contains(userId)) {
+                return;
+            }
+            UserInfo parent = mUserManager.getProfileParent(userId);
+            if (parent == null || parent.id != UserHandle.USER_SYSTEM) {
+                // Since the cached password is encrypted using a keystore key auth-bound to user 0,
+                // only support caching password for user 0's profile.
+                return;
+            }
+            String keyName = getEncryptionKeyName(userId);
+            KeyGenerator generator;
+            SecretKey key;
+            try {
+                generator = KeyGenerator.getInstance(KeyProperties.KEY_ALGORITHM_AES,
+                        AndroidKeyStoreSpi.NAME);
+                generator.init(new KeyGenParameterSpec.Builder(
+                        keyName, KeyProperties.PURPOSE_ENCRYPT | KeyProperties.PURPOSE_DECRYPT)
+                        .setKeySize(KEY_LENGTH)
+                        .setBlockModes(KeyProperties.BLOCK_MODE_GCM)
+                        .setEncryptionPaddings(KeyProperties.ENCRYPTION_PADDING_NONE)
+                        // Generate auth-bound key to user 0 (since we the caller is user 0)
+                        .setUserAuthenticationRequired(true)
+                        .setUserAuthenticationValidityDurationSeconds(CACHE_TIMEOUT_SECONDS)
+                        // Only accessible after user 0's keyguard is unlocked
+                        .setUnlockedDeviceRequired(true)
+                        .build());
+                key = generator.generateKey();
+            } catch (GeneralSecurityException e) {
+                Slog.e(TAG, "Cannot generate key", e);
+                return;
+            }
+
+            Cipher cipher;
+            try {
+                cipher = Cipher.getInstance("AES/GCM/NoPadding");
+                cipher.init(Cipher.ENCRYPT_MODE, key);
+                byte[] ciphertext = cipher.doFinal(password.getCredential());
+                byte[] iv = cipher.getIV();
+                byte[] block = Arrays.copyOf(iv, ciphertext.length + iv.length);
+                System.arraycopy(ciphertext, 0, block, iv.length, ciphertext.length);
+                mEncryptedPasswords.put(userId, block);
+            } catch (GeneralSecurityException e) {
+                Slog.d(TAG, "Cannot encrypt", e);
+            }
+        }
+    }
+
+    /** Attempt to retrieve the password for the given user. Returns {@code null} if it's not in the
+     * cache or if decryption fails.
+     */
+    public @Nullable LockscreenCredential retrievePassword(int userId) {
+        synchronized (mEncryptedPasswords) {
+            byte[] block = mEncryptedPasswords.get(userId);
+            if (block == null) {
+                return null;
+            }
+            Key key;
+            try {
+                key = mKeyStore.getKey(getEncryptionKeyName(userId), null);
+            } catch (UnrecoverableKeyException | KeyStoreException | NoSuchAlgorithmException e) {
+                Slog.d(TAG, "Cannot get key", e);
+                return null;
+            }
+            if (key == null) {
+                return null;
+            }
+            byte[] iv = Arrays.copyOf(block, 12);
+            byte[] ciphertext = Arrays.copyOfRange(block, 12, block.length);
+            byte[] credential;
+            try {
+                Cipher cipher = Cipher.getInstance("AES/GCM/NoPadding");
+                cipher.init(Cipher.DECRYPT_MODE, key, new GCMParameterSpec(128, iv));
+                credential = cipher.doFinal(ciphertext);
+            } catch (UserNotAuthenticatedException e) {
+                Slog.i(TAG, "Device not unlocked for more than 7 days");
+                return null;
+            } catch (GeneralSecurityException e) {
+                Slog.d(TAG, "Cannot decrypt", e);
+                return null;
+            }
+            LockscreenCredential result = LockscreenCredential.createManagedPassword(credential);
+            Arrays.fill(credential, (byte) 0);
+            return result;
+        }
+    }
+
+    /** Remove the given user's password from cache, if one exists. */
+    public void removePassword(int userId) {
+        synchronized (mEncryptedPasswords) {
+            String keyName = getEncryptionKeyName(userId);
+            try {
+                if (mKeyStore.containsAlias(keyName)) {
+                    mKeyStore.deleteEntry(keyName);
+                }
+            } catch (KeyStoreException e) {
+                Slog.d(TAG, "Cannot delete key", e);
+            }
+            if (mEncryptedPasswords.contains(userId)) {
+                Arrays.fill(mEncryptedPasswords.get(userId), (byte) 0);
+                mEncryptedPasswords.remove(userId);
+            }
+        }
+    }
+
+    private static String getEncryptionKeyName(int userId) {
+        return "com.android.server.locksettings.unified_profile_cache_" + userId;
+    }
+}
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowData.java b/services/core/java/com/android/server/locksettings/RebootEscrowData.java
index aee608e..2b19079 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowData.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowData.java
@@ -26,16 +26,12 @@
 import java.security.InvalidAlgorithmParameterException;
 import java.security.InvalidKeyException;
 import java.security.NoSuchAlgorithmException;
-import java.security.SecureRandom;
 
 import javax.crypto.BadPaddingException;
 import javax.crypto.Cipher;
 import javax.crypto.IllegalBlockSizeException;
-import javax.crypto.KeyGenerator;
 import javax.crypto.NoSuchPaddingException;
-import javax.crypto.SecretKey;
 import javax.crypto.spec.IvParameterSpec;
-import javax.crypto.spec.SecretKeySpec;
 
 /**
  * Holds the data necessary to complete a reboot escrow of the Synthetic Password.
@@ -47,17 +43,11 @@
      */
     private static final int CURRENT_VERSION = 1;
 
-    /** The secret key will be of this format. */
-    private static final String KEY_ALGO = "AES";
-
-    /** The key size used for encrypting the reboot escrow data. */
-    private static final int KEY_SIZE_BITS = 256;
-
     /** The algorithm used for the encryption of the key blob. */
     private static final String CIPHER_ALGO = "AES/GCM/NoPadding";
 
     private RebootEscrowData(byte spVersion, byte[] iv, byte[] syntheticPassword, byte[] blob,
-            byte[] key) {
+            RebootEscrowKey key) {
         mSpVersion = spVersion;
         mIv = iv;
         mSyntheticPassword = syntheticPassword;
@@ -69,7 +59,7 @@
     private final byte[] mIv;
     private final byte[] mSyntheticPassword;
     private final byte[] mBlob;
-    private final byte[] mKey;
+    private final RebootEscrowKey mKey;
 
     public byte getSpVersion() {
         return mSpVersion;
@@ -87,17 +77,13 @@
         return mBlob;
     }
 
-    public byte[] getKey() {
+    public RebootEscrowKey getKey() {
         return mKey;
     }
 
-    static SecretKeySpec fromKeyBytes(byte[] keyBytes) {
-        return new SecretKeySpec(keyBytes, KEY_ALGO);
-    }
-
-    static RebootEscrowData fromEncryptedData(SecretKeySpec keySpec, byte[] blob)
+    static RebootEscrowData fromEncryptedData(RebootEscrowKey key, byte[] blob)
             throws IOException {
-        Preconditions.checkNotNull(keySpec);
+        Preconditions.checkNotNull(key);
         Preconditions.checkNotNull(blob);
 
         DataInputStream dis = new DataInputStream(new ByteArrayInputStream(blob));
@@ -126,7 +112,7 @@
         final byte[] syntheticPassword;
         try {
             Cipher c = Cipher.getInstance(CIPHER_ALGO);
-            c.init(Cipher.DECRYPT_MODE, keySpec, new IvParameterSpec(iv));
+            c.init(Cipher.DECRYPT_MODE, key.getKey(), new IvParameterSpec(iv));
             syntheticPassword = c.doFinal(cipherText);
         } catch (NoSuchAlgorithmException | InvalidKeyException | BadPaddingException
                 | IllegalBlockSizeException | NoSuchPaddingException
@@ -134,30 +120,22 @@
             throw new IOException("Could not decrypt ciphertext", e);
         }
 
-        return new RebootEscrowData(spVersion, iv, syntheticPassword, blob, keySpec.getEncoded());
+        return new RebootEscrowData(spVersion, iv, syntheticPassword, blob, key);
     }
 
-    static RebootEscrowData fromSyntheticPassword(byte spVersion, byte[] syntheticPassword)
+    static RebootEscrowData fromSyntheticPassword(RebootEscrowKey key, byte spVersion,
+            byte[] syntheticPassword)
             throws IOException {
         Preconditions.checkNotNull(syntheticPassword);
 
         ByteArrayOutputStream bos = new ByteArrayOutputStream();
         DataOutputStream dos = new DataOutputStream(bos);
 
-        final SecretKey secretKey;
-        try {
-            KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGO);
-            keyGenerator.init(KEY_SIZE_BITS, new SecureRandom());
-            secretKey = keyGenerator.generateKey();
-        } catch (NoSuchAlgorithmException e) {
-            throw new IOException("Could not generate new secret key", e);
-        }
-
         final byte[] cipherText;
         final byte[] iv;
         try {
             Cipher cipher = Cipher.getInstance(CIPHER_ALGO);
-            cipher.init(Cipher.ENCRYPT_MODE, secretKey);
+            cipher.init(Cipher.ENCRYPT_MODE, key.getKey());
             cipherText = cipher.doFinal(syntheticPassword);
             iv = cipher.getIV();
         } catch (NoSuchAlgorithmException | BadPaddingException | IllegalBlockSizeException
@@ -173,6 +151,6 @@
         dos.write(cipherText);
 
         return new RebootEscrowData(spVersion, iv, syntheticPassword, bos.toByteArray(),
-                secretKey.getEncoded());
+                key);
     }
 }
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowKey.java b/services/core/java/com/android/server/locksettings/RebootEscrowKey.java
new file mode 100644
index 0000000..5367319
--- /dev/null
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowKey.java
@@ -0,0 +1,67 @@
+/*
+ * 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.server.locksettings;
+
+import java.io.IOException;
+import java.security.NoSuchAlgorithmException;
+import java.security.SecureRandom;
+
+import javax.crypto.KeyGenerator;
+import javax.crypto.SecretKey;
+import javax.crypto.spec.SecretKeySpec;
+
+/**
+ * Key used to encrypt and decrypt the {@link RebootEscrowData}.
+ */
+class RebootEscrowKey {
+
+    /** The secret key will be of this format. */
+    private static final String KEY_ALGO = "AES";
+
+    /** The key size used for encrypting the reboot escrow data. */
+    private static final int KEY_SIZE_BITS = 256;
+
+    private final SecretKey mKey;
+
+    private RebootEscrowKey(SecretKey key) {
+        mKey = key;
+    }
+
+    static RebootEscrowKey fromKeyBytes(byte[] keyBytes) {
+        return new RebootEscrowKey(new SecretKeySpec(keyBytes, KEY_ALGO));
+    }
+
+    static RebootEscrowKey generate() throws IOException {
+        final SecretKey secretKey;
+        try {
+            KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_ALGO);
+            keyGenerator.init(KEY_SIZE_BITS, new SecureRandom());
+            secretKey = keyGenerator.generateKey();
+        } catch (NoSuchAlgorithmException e) {
+            throw new IOException("Could not generate new secret key", e);
+        }
+        return new RebootEscrowKey(secretKey);
+    }
+
+    SecretKey getKey() {
+        return mKey;
+    }
+
+    byte[] getKeyBytes() {
+        return mKey.getEncoded();
+    }
+}
diff --git a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
index 46ea9d1..c9e356e 100644
--- a/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
+++ b/services/core/java/com/android/server/locksettings/RebootEscrowManager.java
@@ -25,27 +25,26 @@
 import android.os.ServiceManager;
 import android.os.UserManager;
 import android.util.Slog;
-import android.util.StatsLog;
 
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.widget.RebootEscrowListener;
 
 import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.NoSuchElementException;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import javax.crypto.spec.SecretKeySpec;
 
 class RebootEscrowManager {
     private static final String TAG = "RebootEscrowManager";
 
     /**
-     * Used to track when the reboot escrow is wanted. Set to false when mRebootEscrowReady is
-     * true.
+     * Used to track when the reboot escrow is wanted. Should stay true once escrow is requested
+     * unless clearRebootEscrow is called. This will allow all the active users to be unlocked
+     * after reboot.
      */
-    private final AtomicBoolean mRebootEscrowWanted = new AtomicBoolean(false);
+    private boolean mRebootEscrowWanted;
 
     /** Used to track when reboot escrow is ready. */
     private boolean mRebootEscrowReady;
@@ -54,10 +53,16 @@
     private RebootEscrowListener mRebootEscrowListener;
 
     /**
+     * Hold this lock when checking or generating the reboot escrow key.
+     */
+    private final Object mKeyGenerationLock = new Object();
+
+    /**
      * Stores the reboot escrow data between when it's supplied and when
      * {@link #armRebootEscrowIfNeeded()} is called.
      */
-    private RebootEscrowData mPendingRebootEscrowData;
+    @GuardedBy("mKeyGenerationLock")
+    private RebootEscrowKey mPendingRebootEscrowKey;
 
     private final UserManager mUserManager;
 
@@ -82,6 +87,7 @@
         public Context getContext() {
             return mContext;
         }
+
         public UserManager getUserManager() {
             return (UserManager) mContext.getSystemService(Context.USER_SERVICE);
         }
@@ -123,13 +129,13 @@
             return;
         }
 
-        SecretKeySpec escrowKey = getAndClearRebootEscrowKey();
+        RebootEscrowKey escrowKey = getAndClearRebootEscrowKey();
         if (escrowKey == null) {
             Slog.w(TAG, "Had reboot escrow data for users, but no key; removing escrow storage.");
             for (UserInfo user : users) {
                 mStorage.removeRebootEscrow(user.id);
             }
-            StatsLog.write(StatsLog.REBOOT_ESCROW_RECOVERY_REPORTED, false);
+            FrameworkStatsLog.write(FrameworkStatsLog.REBOOT_ESCROW_RECOVERY_REPORTED, false);
             return;
         }
 
@@ -137,12 +143,14 @@
         for (UserInfo user : rebootEscrowUsers) {
             allUsersUnlocked &= restoreRebootEscrowForUser(user.id, escrowKey);
         }
-        StatsLog.write(StatsLog.REBOOT_ESCROW_RECOVERY_REPORTED, allUsersUnlocked);
+        FrameworkStatsLog.write(FrameworkStatsLog.REBOOT_ESCROW_RECOVERY_REPORTED,
+                allUsersUnlocked);
     }
 
-    private SecretKeySpec getAndClearRebootEscrowKey() {
+    private RebootEscrowKey getAndClearRebootEscrowKey() {
         IRebootEscrow rebootEscrow = mInjector.getRebootEscrow();
         if (rebootEscrow == null) {
+            Slog.w(TAG, "Had reboot escrow data for users, but RebootEscrow HAL is unavailable");
             return null;
         }
 
@@ -170,14 +178,14 @@
             // Overwrite the existing key with the null key
             rebootEscrow.storeKey(new byte[32]);
 
-            return RebootEscrowData.fromKeyBytes(escrowKeyBytes);
+            return RebootEscrowKey.fromKeyBytes(escrowKeyBytes);
         } catch (RemoteException e) {
             Slog.w(TAG, "Could not retrieve escrow data");
             return null;
         }
     }
 
-    private boolean restoreRebootEscrowForUser(@UserIdInt int userId, SecretKeySpec escrowKey) {
+    private boolean restoreRebootEscrowForUser(@UserIdInt int userId, RebootEscrowKey key) {
         if (!mStorage.hasRebootEscrow(userId)) {
             return false;
         }
@@ -186,46 +194,72 @@
             byte[] blob = mStorage.readRebootEscrow(userId);
             mStorage.removeRebootEscrow(userId);
 
-            RebootEscrowData escrowData = RebootEscrowData.fromEncryptedData(escrowKey, blob);
+            RebootEscrowData escrowData = RebootEscrowData.fromEncryptedData(key, blob);
 
             mCallbacks.onRebootEscrowRestored(escrowData.getSpVersion(),
                     escrowData.getSyntheticPassword(), userId);
+            Slog.i(TAG, "Restored reboot escrow data for user " + userId);
             return true;
         } catch (IOException e) {
             Slog.w(TAG, "Could not load reboot escrow data for user " + userId, e);
+            return false;
         }
-        return false;
     }
 
     void callToRebootEscrowIfNeeded(@UserIdInt int userId, byte spVersion,
             byte[] syntheticPassword) {
-        if (!mRebootEscrowWanted.compareAndSet(true, false)) {
+        if (!mRebootEscrowWanted) {
             return;
         }
 
         IRebootEscrow rebootEscrow = mInjector.getRebootEscrow();
         if (rebootEscrow == null) {
-            setRebootEscrowReady(false);
+            Slog.w(TAG, "Reboot escrow requested, but RebootEscrow HAL is unavailable");
+            return;
+        }
+
+        RebootEscrowKey escrowKey = generateEscrowKeyIfNeeded();
+        if (escrowKey == null) {
+            Slog.e(TAG, "Could not generate escrow key");
             return;
         }
 
         final RebootEscrowData escrowData;
         try {
-            escrowData = RebootEscrowData.fromSyntheticPassword(spVersion, syntheticPassword);
+            escrowData = RebootEscrowData.fromSyntheticPassword(escrowKey, spVersion,
+                    syntheticPassword);
         } catch (IOException e) {
             setRebootEscrowReady(false);
             Slog.w(TAG, "Could not escrow reboot data", e);
             return;
         }
 
-        mPendingRebootEscrowData = escrowData;
         mStorage.writeRebootEscrow(userId, escrowData.getBlob());
 
         setRebootEscrowReady(true);
     }
 
+    private RebootEscrowKey generateEscrowKeyIfNeeded() {
+        synchronized (mKeyGenerationLock) {
+            if (mPendingRebootEscrowKey != null) {
+                return mPendingRebootEscrowKey;
+            }
+
+            RebootEscrowKey key;
+            try {
+                key = RebootEscrowKey.generate();
+            } catch (IOException e) {
+                Slog.w(TAG, "Could not generate reboot escrow key");
+                return null;
+            }
+
+            mPendingRebootEscrowKey = key;
+            return key;
+        }
+    }
+
     private void clearRebootEscrowIfNeeded() {
-        mRebootEscrowWanted.set(false);
+        mRebootEscrowWanted = false;
         setRebootEscrowReady(false);
 
         IRebootEscrow rebootEscrow = mInjector.getRebootEscrow();
@@ -252,20 +286,27 @@
 
         IRebootEscrow rebootEscrow = mInjector.getRebootEscrow();
         if (rebootEscrow == null) {
+            Slog.w(TAG, "Escrow marked as ready, but RebootEscrow HAL is unavailable");
             return false;
         }
 
-        RebootEscrowData escrowData = mPendingRebootEscrowData;
-        if (escrowData == null) {
+        RebootEscrowKey escrowKey;
+        synchronized (mKeyGenerationLock) {
+            escrowKey = mPendingRebootEscrowKey;
+        }
+
+        if (escrowKey == null) {
+            Slog.e(TAG, "Escrow key is null, but escrow was marked as ready");
             return false;
         }
 
         boolean armedRebootEscrow = false;
         try {
-            rebootEscrow.storeKey(escrowData.getKey());
+            rebootEscrow.storeKey(escrowKey.getKeyBytes());
             armedRebootEscrow = true;
+            Slog.i(TAG, "Reboot escrow key stored with RebootEscrow HAL");
         } catch (RemoteException e) {
-            Slog.w(TAG, "Failed escrow secret to RebootEscrow HAL", e);
+            Slog.e(TAG, "Failed escrow secret to RebootEscrow HAL", e);
         }
         return armedRebootEscrow;
     }
@@ -283,7 +324,7 @@
         }
 
         clearRebootEscrowIfNeeded();
-        mRebootEscrowWanted.set(true);
+        mRebootEscrowWanted = true;
         return true;
     }
 
diff --git a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
index b726e57..ac49fa2 100644
--- a/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
+++ b/services/core/java/com/android/server/locksettings/SyntheticPasswordManager.java
@@ -590,8 +590,8 @@
             throw new IllegalStateException("Failed to create new SID for user", e);
         }
         if (response.getResponseCode() != GateKeeperResponse.RESPONSE_OK) {
-            Slog.e(TAG, "Fail to create new SID for user " + userId);
-            return;
+            throw new IllegalStateException("Fail to create new SID for user " + userId
+                    + " response: " + response.getResponseCode());
         }
         saveSyntheticPasswordHandle(response.getPayload(), userId);
     }
diff --git a/services/core/java/com/android/server/media/BluetoothRouteProvider.java b/services/core/java/com/android/server/media/BluetoothRouteProvider.java
index 8179c32..6474303 100644
--- a/services/core/java/com/android/server/media/BluetoothRouteProvider.java
+++ b/services/core/java/com/android/server/media/BluetoothRouteProvider.java
@@ -27,6 +27,7 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
+import android.media.AudioManager;
 import android.media.MediaRoute2Info;
 import android.text.TextUtils;
 import android.util.Slog;
@@ -55,6 +56,7 @@
     private final Context mContext;
     private final BluetoothAdapter mBluetoothAdapter;
     private final BluetoothRoutesUpdatedListener mListener;
+    private final AudioManager mAudioManager;
     private final Map<String, BluetoothEventReceiver> mEventReceiverMap = new HashMap<>();
     private final IntentFilter mIntentFilter = new IntentFilter();
     private final BroadcastReceiver mBroadcastReceiver = new BluetoothBroadcastReceiver();
@@ -82,6 +84,7 @@
         mContext = context;
         mBluetoothAdapter = btAdapter;
         mListener = listener;
+        mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         buildBluetoothRoutes();
 
         mBluetoothAdapter.getProfileProxy(mContext, mProfileListener, BluetoothProfile.A2DP);
@@ -181,11 +184,15 @@
     private BluetoothRouteInfo createBluetoothRoute(BluetoothDevice device) {
         BluetoothRouteInfo newBtRoute = new BluetoothRouteInfo();
         newBtRoute.btDevice = device;
+        // Current / Max volume will be set when connected.
+        // TODO: Is there any BT device which has fixed volume?
         newBtRoute.route = new MediaRoute2Info.Builder(device.getAddress(), device.getName())
                 .addFeature(MediaRoute2Info.FEATURE_LIVE_AUDIO)
                 .setConnectionState(MediaRoute2Info.CONNECTION_STATE_DISCONNECTED)
                 .setDescription(mContext.getResources().getText(
                         R.string.bluetooth_a2dp_audio_route_name).toString())
+                .setDeviceType(MediaRoute2Info.DEVICE_TYPE_BLUETOOTH)
+                .setVolumeHandling(MediaRoute2Info.PLAYBACK_VOLUME_VARIABLE)
                 .build();
         newBtRoute.connectedProfiles = new SparseBooleanArray();
         return newBtRoute;
@@ -202,10 +209,20 @@
             Slog.w(TAG, "setRouteConnectionStateForDevice: route shouldn't be null");
             return;
         }
-        if (btRoute.route.getConnectionState() != state) {
-            btRoute.route = new MediaRoute2Info.Builder(btRoute.route)
-                    .setConnectionState(state).build();
+        if (btRoute.route.getConnectionState() == state) {
+            return;
         }
+
+        // Update volume when the connection state is changed.
+        MediaRoute2Info.Builder builder = new MediaRoute2Info.Builder(btRoute.route)
+                .setConnectionState(state);
+
+        if (state == MediaRoute2Info.CONNECTION_STATE_CONNECTED) {
+            int maxVolume = mAudioManager.getStreamMaxVolume(AudioManager.STREAM_MUSIC);
+            int currentVolume = mAudioManager.getStreamVolume(AudioManager.STREAM_MUSIC);
+            builder.setVolumeMax(maxVolume).setVolume(currentVolume);
+        }
+        btRoute.route = builder.build();
     }
 
     interface BluetoothRoutesUpdatedListener {
diff --git a/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
new file mode 100644
index 0000000..58c2707
--- /dev/null
+++ b/services/core/java/com/android/server/media/MediaButtonReceiverHolder.java
@@ -0,0 +1,360 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.media;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.app.PendingIntent;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ComponentInfo;
+import android.content.pm.PackageManager;
+import android.content.pm.ResolveInfo;
+import android.content.pm.ServiceInfo;
+import android.os.Handler;
+import android.os.UserHandle;
+import android.text.TextUtils;
+import android.util.Log;
+import android.view.KeyEvent;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.List;
+
+/**
+ * Holds the media button receiver, and also provides helper methods around it.
+ */
+final class MediaButtonReceiverHolder {
+    public static final int COMPONENT_TYPE_INVALID = 0;
+    public static final int COMPONENT_TYPE_BROADCAST = 1;
+    public static final int COMPONENT_TYPE_ACTIVITY = 2;
+    public static final int COMPONENT_TYPE_SERVICE = 3;
+
+    @IntDef(value = {
+            COMPONENT_TYPE_INVALID,
+            COMPONENT_TYPE_BROADCAST,
+            COMPONENT_TYPE_ACTIVITY,
+            COMPONENT_TYPE_SERVICE,
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface ComponentType {}
+
+    private static final String TAG = "PendingIntentHolder";
+    private static final boolean DEBUG_KEY_EVENT = MediaSessionService.DEBUG_KEY_EVENT;
+    private static final String COMPONENT_NAME_USER_ID_DELIM = ",";
+
+    private final int mUserId;
+    private final PendingIntent mPendingIntent;
+    private final ComponentName mComponentName;
+    private final String mPackageName;
+    @ComponentType
+    private final int mComponentType;
+
+    /**
+     * Unflatten from string which is previously flattened string via flattenToString().
+     * <p>
+     * It's used to store and restore media button receiver across the boot, by keeping the intent's
+     * component name to the persistent storage.
+     *
+     * @param mediaButtonReceiverInfo previously flattened string via flattenToString()
+     * @return new instance if the string was valid. {@code null} otherwise.
+     */
+    public static MediaButtonReceiverHolder unflattenFromString(
+            Context context, String mediaButtonReceiverInfo) {
+        if (TextUtils.isEmpty(mediaButtonReceiverInfo)) {
+            return null;
+        }
+        String[] tokens = mediaButtonReceiverInfo.split(COMPONENT_NAME_USER_ID_DELIM);
+        if (tokens == null || (tokens.length != 2 && tokens.length != 3)) {
+            return null;
+        }
+        ComponentName componentName = ComponentName.unflattenFromString(tokens[0]);
+        int userId = Integer.parseInt(tokens[1]);
+        // Guess component type if the OS version is updated from the older version.
+        int componentType = (tokens.length == 3)
+                ?  Integer.parseInt(tokens[2])
+                : getComponentType(context, componentName);
+        return new MediaButtonReceiverHolder(userId, null, componentName, componentType);
+    }
+
+    /**
+     * Creates a new instance.
+     *
+     * @param context context
+     * @param userId userId
+     * @param pendingIntent pending intent
+     * @return Can be {@code null} if pending intent was null.
+     */
+    public static MediaButtonReceiverHolder create(Context context, int userId,
+            PendingIntent pendingIntent) {
+        if (pendingIntent == null) {
+            return null;
+        }
+        ComponentName componentName = (pendingIntent != null && pendingIntent.getIntent() != null)
+                ? pendingIntent.getIntent().getComponent() : null;
+        if (componentName != null) {
+            // Explicit intent, where component name is in the PendingIntent.
+            return new MediaButtonReceiverHolder(userId, pendingIntent, componentName,
+                    getComponentType(context, componentName));
+        }
+
+        // Implicit intent, where component name isn't in the PendingIntent. Try resolve.
+        PackageManager pm = context.getPackageManager();
+        Intent intent = pendingIntent.getIntent();
+        if ((componentName = resolveImplicitServiceIntent(pm, intent)) != null) {
+            return new MediaButtonReceiverHolder(
+                    userId, pendingIntent, componentName, COMPONENT_TYPE_SERVICE);
+        } else if ((componentName = resolveManifestDeclaredBroadcastReceiverIntent(pm, intent))
+                != null) {
+            return new MediaButtonReceiverHolder(
+                    userId, pendingIntent, componentName, COMPONENT_TYPE_BROADCAST);
+        } else if ((componentName = resolveImplicitActivityIntent(pm, intent)) != null) {
+            return new MediaButtonReceiverHolder(
+                    userId, pendingIntent, componentName, COMPONENT_TYPE_ACTIVITY);
+        }
+
+        // Failed to resolve target component for the pending intent. It's unlikely to be usable.
+        // However, the pending intent would be still used, just to follow the legacy behavior.
+        Log.w(TAG, "Unresolvable implicit intent is set, pi=" + pendingIntent);
+        String packageName = (pendingIntent != null && pendingIntent.getIntent() != null)
+                ? pendingIntent.getIntent().getPackage() : null;
+        return new MediaButtonReceiverHolder(userId, pendingIntent,
+                packageName != null ? packageName : "");
+    }
+
+    private MediaButtonReceiverHolder(int userId, PendingIntent pendingIntent,
+            ComponentName componentName, @ComponentType int componentType) {
+        mUserId = userId;
+        mPendingIntent = pendingIntent;
+        mComponentName = componentName;
+        mPackageName = componentName.getPackageName();
+        mComponentType = componentType;
+    }
+
+    private MediaButtonReceiverHolder(int userId, PendingIntent pendingIntent, String packageName) {
+        mUserId = userId;
+        mPendingIntent = pendingIntent;
+        mComponentName = null;
+        mPackageName = packageName;
+        mComponentType = COMPONENT_TYPE_INVALID;
+    }
+
+    /**
+     * @return the user id
+     */
+    public int getUserId() {
+        return mUserId;
+    }
+
+    /**
+     * @return package name that the media button receiver would be sent to.
+     */
+    @NonNull
+    public String getPackageName() {
+        return mPackageName;
+    }
+
+    /**
+     * Sends the media key event to the media button receiver.
+     * <p>
+     * This prioritizes using use pending intent for sending media key event.
+     *
+     * @param context context to be used to call PendingIntent#send
+     * @param keyEvent keyEvent to send
+     * @param resultCode result code to be used to call PendingIntent#send
+     *                   Ignored if there's no valid pending intent.
+     * @param onFinishedListener callback to be used to get result of PendingIntent#send.
+     *                           Ignored if there's no valid pending intent.
+     * @param handler handler to be used to call onFinishedListener
+     *                Ignored if there's no valid pending intent.
+     * @see PendingIntent#send(Context, int, Intent, PendingIntent.OnFinished, Handler)
+     */
+    public boolean send(Context context, KeyEvent keyEvent, String callingPackageName,
+            int resultCode, PendingIntent.OnFinished onFinishedListener, Handler handler) {
+        Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
+        mediaButtonIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
+        mediaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
+        // TODO: Find a way to also send PID/UID in secure way.
+        mediaButtonIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, callingPackageName);
+
+        if (mPendingIntent != null) {
+            if (DEBUG_KEY_EVENT) {
+                Log.d(TAG, "Sending " + keyEvent + " to the last known PendingIntent "
+                        + mPendingIntent);
+            }
+            try {
+                mPendingIntent.send(
+                        context, resultCode, mediaButtonIntent, onFinishedListener, handler);
+            } catch (PendingIntent.CanceledException e) {
+                Log.w(TAG, "Error sending key event to media button receiver " + mPendingIntent, e);
+                return false;
+            }
+        } else if (mComponentName != null) {
+            if (DEBUG_KEY_EVENT) {
+                Log.d(TAG, "Sending " + keyEvent + " to the restored intent "
+                        + mComponentName + ", type=" + mComponentType);
+            }
+            mediaButtonIntent.setComponent(mComponentName);
+            UserHandle userHandle = UserHandle.of(mUserId);
+            try {
+                switch (mComponentType) {
+                    case COMPONENT_TYPE_ACTIVITY:
+                        context.startActivityAsUser(mediaButtonIntent, userHandle);
+                        break;
+                    case COMPONENT_TYPE_SERVICE:
+                        context.startForegroundServiceAsUser(mediaButtonIntent,
+                                userHandle);
+                        break;
+                    default:
+                        // Legacy behavior for other cases.
+                        context.sendBroadcastAsUser(mediaButtonIntent, userHandle);
+                }
+            } catch (Exception e) {
+                Log.w(TAG, "Error sending media button to the restored intent "
+                        + mComponentName + ", type=" + mComponentType, e);
+                return false;
+            }
+        } else {
+            // Leave log, just in case.
+            Log.e(TAG, "Shouldn't be happen -- pending intent or component name must be set");
+            return false;
+        }
+        return true;
+    }
+
+
+    @Override
+    public String toString() {
+        if (mPendingIntent != null) {
+            return "MBR {pi=" + mPendingIntent + ", type=" + mComponentType + "}";
+        }
+        return "Restored MBR {component=" + mComponentName + ", type=" + mComponentType + "}";
+    }
+
+    /**
+     * @return flattened string. Can be empty string if the MBR is created with implicit intent.
+     */
+    public String flattenToString() {
+        if (mComponentName == null) {
+            // We don't know which component would receive the key event.
+            return "";
+        }
+        return String.join(COMPONENT_NAME_USER_ID_DELIM,
+                mComponentName.toString(),
+                String.valueOf(mUserId),
+                String.valueOf(mComponentType));
+    }
+
+    /**
+     * Gets the type of the component
+     *
+     * @param context context
+     * @param componentName component name
+     * @return A component type
+     */
+    @ComponentType
+    private static int getComponentType(Context context, ComponentName componentName) {
+        if (componentName == null) {
+            return COMPONENT_TYPE_INVALID;
+        }
+        PackageManager pm = context.getPackageManager();
+        try {
+            ActivityInfo activityInfo = pm.getActivityInfo(componentName,
+                    PackageManager.MATCH_DIRECT_BOOT_AWARE
+                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                            | PackageManager.GET_ACTIVITIES);
+            if (activityInfo != null) {
+                return COMPONENT_TYPE_ACTIVITY;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+        }
+        try {
+            ServiceInfo serviceInfo = pm.getServiceInfo(componentName,
+                    PackageManager.MATCH_DIRECT_BOOT_AWARE
+                            | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                            | PackageManager.GET_SERVICES);
+            if (serviceInfo != null) {
+                return COMPONENT_TYPE_SERVICE;
+            }
+        } catch (PackageManager.NameNotFoundException e) {
+        }
+        // Pick legacy behavior for BroadcastReceiver or unknown.
+        return COMPONENT_TYPE_BROADCAST;
+    }
+
+    private static ComponentName resolveImplicitServiceIntent(PackageManager pm, Intent intent) {
+        // Flag explanations.
+        // - MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE:
+        //     filter apps regardless of the phone's locked/unlocked state.
+        // - GET_SERVICES: Return service
+        return createComponentName(pm.resolveService(intent,
+                PackageManager.MATCH_DIRECT_BOOT_AWARE
+                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                        | PackageManager.GET_SERVICES));
+    }
+
+    private static ComponentName resolveManifestDeclaredBroadcastReceiverIntent(
+            PackageManager pm, Intent intent) {
+        // Flag explanations.
+        // - MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE:
+        //     filter apps regardless of the phone's locked/unlocked state.
+        List<ResolveInfo> resolveInfos = pm.queryBroadcastReceivers(intent,
+                PackageManager.MATCH_DIRECT_BOOT_AWARE | PackageManager.MATCH_DIRECT_BOOT_UNAWARE);
+        return (resolveInfos != null && !resolveInfos.isEmpty())
+                ? createComponentName(resolveInfos.get(0)) : null;
+    }
+
+    private static ComponentName resolveImplicitActivityIntent(PackageManager pm, Intent intent) {
+        // Flag explanations.
+        // - MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE:
+        //     Filter apps regardless of the phone's locked/unlocked state.
+        // - MATCH_DEFAULT_ONLY:
+        //     Implicit intent receiver should be set as default. Only needed for activity.
+        // - GET_ACTIVITIES: Return activity
+        return createComponentName(pm.resolveActivity(intent,
+                PackageManager.MATCH_DIRECT_BOOT_AWARE
+                        | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
+                        | PackageManager.MATCH_DEFAULT_ONLY
+                        | PackageManager.GET_ACTIVITIES));
+    }
+
+    private static ComponentName createComponentName(ResolveInfo resolveInfo) {
+        if (resolveInfo == null) {
+            return null;
+        }
+        ComponentInfo componentInfo;
+        // Code borrowed from ResolveInfo#getComponentInfo().
+        if (resolveInfo.activityInfo != null) {
+            componentInfo = resolveInfo.activityInfo;
+        } else if (resolveInfo.serviceInfo != null) {
+            componentInfo = resolveInfo.serviceInfo;
+        } else {
+            // We're not interested in content provider.
+            return null;
+        }
+        // Code borrowed from ComponentInfo#getComponentName().
+        try {
+            return new ComponentName(componentInfo.packageName, componentInfo.name);
+        } catch (IllegalArgumentException | NullPointerException e) {
+            // This may be happen if resolveActivity() end up with matching multiple activities.
+            // see PackageManager#resolveActivity().
+            return null;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/media/MediaKeyDispatcher.java b/services/core/java/com/android/server/media/MediaKeyDispatcher.java
new file mode 100644
index 0000000..16b9eb9
--- /dev/null
+++ b/services/core/java/com/android/server/media/MediaKeyDispatcher.java
@@ -0,0 +1,39 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.media;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.media.session.MediaSession;
+import android.view.KeyEvent;
+
+/**
+ * Provides a way to customize behavior for media key events.
+ */
+public interface MediaKeyDispatcher {
+    /**
+     * Implement this to customize the logic for which MediaSession should consume which key event.
+     *
+     * @param keyEvent a non-null KeyEvent whose key code is one of the supported media buttons.
+     * @param asSystemService {@code true} if the event came from the system service via hardware
+     *         devices. {@code false} if the event came from the app process through key injection.
+     * @return a {@link MediaSession.Token} instance that should consume the given key event.
+     */
+    @Nullable
+    MediaSession.Token getSessionForKeyEvent(@NonNull KeyEvent keyEvent,
+            boolean asSystemService);
+}
diff --git a/services/core/java/com/android/server/media/MediaRoute2Provider.java b/services/core/java/com/android/server/media/MediaRoute2Provider.java
index 1cd8aad..3de5cf1 100644
--- a/services/core/java/com/android/server/media/MediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/MediaRoute2Provider.java
@@ -21,6 +21,7 @@
 import android.content.ComponentName;
 import android.content.Intent;
 import android.media.MediaRoute2ProviderInfo;
+import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.os.Bundle;
 
@@ -36,6 +37,7 @@
     final Object mLock = new Object();
 
     Callback mCallback;
+    boolean mIsSystemRouteProvider;
     private volatile MediaRoute2ProviderInfo mProviderInfo;
 
     @GuardedBy("mLock")
@@ -53,14 +55,15 @@
     public abstract void requestCreateSession(String packageName, String routeId, long requestId,
             @Nullable Bundle sessionHints);
     public abstract void releaseSession(String sessionId);
+    public abstract void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference);
 
     public abstract void selectRoute(String sessionId, String routeId);
     public abstract void deselectRoute(String sessionId, String routeId);
     public abstract void transferToRoute(String sessionId, String routeId);
 
     public abstract void sendControlRequest(String routeId, Intent request);
-    public abstract void requestSetVolume(String routeId, int volume);
-    public abstract void requestUpdateVolume(String routeId, int delta);
+    public abstract void setRouteVolume(String routeId, int volume);
+    public abstract void setSessionVolume(String sessionId, int volume);
 
     @NonNull
     public String getUniqueId() {
@@ -85,6 +88,7 @@
         } else {
             mProviderInfo = new MediaRoute2ProviderInfo.Builder(providerInfo)
                     .setUniqueId(mUniqueId)
+                    .setSystemRouteProvider(mIsSystemRouteProvider)
                     .build();
         }
     }
diff --git a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
index e23542e..c1ea697 100644
--- a/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
+++ b/services/core/java/com/android/server/media/MediaRoute2ProviderProxy.java
@@ -25,6 +25,7 @@
 import android.media.IMediaRoute2ProviderClient;
 import android.media.MediaRoute2ProviderInfo;
 import android.media.MediaRoute2ProviderService;
+import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.os.Bundle;
 import android.os.Handler;
@@ -93,6 +94,14 @@
     }
 
     @Override
+    public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
+        if (mConnectionReady) {
+            mActiveConnection.updateDiscoveryPreference(discoveryPreference);
+            updateBinding();
+        }
+    }
+
+    @Override
     public void selectRoute(String sessionId, String routeId) {
         if (mConnectionReady) {
             mActiveConnection.selectRoute(sessionId, routeId);
@@ -122,17 +131,17 @@
     }
 
     @Override
-    public void requestSetVolume(String routeId, int volume) {
+    public void setRouteVolume(String routeId, int volume) {
         if (mConnectionReady) {
-            mActiveConnection.requestSetVolume(routeId, volume);
+            mActiveConnection.setRouteVolume(routeId, volume);
             updateBinding();
         }
     }
 
     @Override
-    public void requestUpdateVolume(String routeId, int delta) {
+    public void setSessionVolume(String sessionId, int volume) {
         if (mConnectionReady) {
-            mActiveConnection.requestUpdateVolume(routeId, delta);
+            mActiveConnection.setSessionVolume(sessionId, volume);
             updateBinding();
         }
     }
@@ -410,6 +419,12 @@
             mActiveConnection.dispose();
             mActiveConnection = null;
             setAndNotifyProviderState(null);
+            synchronized (mLock) {
+                for (RoutingSessionInfo sessionInfo : mSessionInfos) {
+                    mCallback.onSessionReleased(this, sessionInfo);
+                }
+                mSessionInfos.clear();
+            }
         }
     }
 
@@ -449,7 +464,7 @@
             try {
                 mProvider.requestCreateSession(packageName, routeId, requestId, sessionHints);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to create a session.", ex);
+                Slog.e(TAG, "requestCreateSession: Failed to deliver request.");
             }
         }
 
@@ -457,7 +472,15 @@
             try {
                 mProvider.releaseSession(sessionId);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to release a session.", ex);
+                Slog.e(TAG, "releaseSession: Failed to deliver request.");
+            }
+        }
+
+        public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
+            try {
+                mProvider.updateDiscoveryPreference(discoveryPreference);
+            } catch (RemoteException ex) {
+                Slog.e(TAG, "updateDiscoveryPreference: Failed to deliver request.");
             }
         }
 
@@ -465,7 +488,7 @@
             try {
                 mProvider.selectRoute(sessionId, routeId);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to select a route for a session.", ex);
+                Slog.e(TAG, "selectRoute: Failed to deliver request.", ex);
             }
         }
 
@@ -473,7 +496,7 @@
             try {
                 mProvider.deselectRoute(sessionId, routeId);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to deselect a route from a session.", ex);
+                Slog.e(TAG, "deselectRoute: Failed to deliver request.", ex);
             }
         }
 
@@ -481,7 +504,7 @@
             try {
                 mProvider.transferToRoute(sessionId, routeId);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to transfer a session to a route.", ex);
+                Slog.e(TAG, "transferToRoute: Failed to deliver request.", ex);
             }
         }
 
@@ -489,23 +512,23 @@
             try {
                 mProvider.notifyControlRequestSent(routeId, request);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to send control request.", ex);
+                Slog.e(TAG, "sendControlRequest: Failed to deliver request.", ex);
             }
         }
 
-        public void requestSetVolume(String routeId, int volume) {
+        public void setRouteVolume(String routeId, int volume) {
             try {
-                mProvider.requestSetVolume(routeId, volume);
+                mProvider.setRouteVolume(routeId, volume);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to request set volume.", ex);
+                Slog.e(TAG, "setRouteVolume: Failed to deliver request.", ex);
             }
         }
 
-        public void requestUpdateVolume(String routeId, int delta) {
+        public void setSessionVolume(String sessionId, int volume) {
             try {
-                mProvider.requestUpdateVolume(routeId, delta);
+                mProvider.setSessionVolume(sessionId, volume);
             } catch (RemoteException ex) {
-                Slog.e(TAG, "Failed to deliver request to request update volume.", ex);
+                Slog.e(TAG, "setSessionVolume: Failed to deliver request.", ex);
             }
         }
 
diff --git a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
index 9594659..2096531 100644
--- a/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
+++ b/services/core/java/com/android/server/media/MediaRouter2ServiceImpl.java
@@ -320,28 +320,29 @@
         }
     }
 
-    public void requestSetVolume2(IMediaRouter2Client client, MediaRoute2Info route, int volume) {
+    public void setRouteVolume2(IMediaRouter2Client client,
+            MediaRoute2Info route, int volume) {
         Objects.requireNonNull(client, "client must not be null");
         Objects.requireNonNull(route, "route must not be null");
 
         final long token = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
-                requestSetVolumeLocked(client, route, volume);
+                setRouteVolumeLocked(client, route, volume);
             }
         } finally {
             Binder.restoreCallingIdentity(token);
         }
     }
 
-    public void requestUpdateVolume2(IMediaRouter2Client client, MediaRoute2Info route, int delta) {
+    public void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume) {
         Objects.requireNonNull(client, "client must not be null");
-        Objects.requireNonNull(route, "route must not be null");
+        Objects.requireNonNull(sessionId, "sessionId must not be null");
 
         final long token = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
-                requestUpdateVolumeLocked(client, route, delta);
+                setSessionVolumeLocked(client, sessionId, volume);
             }
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -360,7 +361,7 @@
         }
     }
 
-    public void requestSetVolume2Manager(IMediaRouter2Manager manager,
+    public void setRouteVolume2Manager(IMediaRouter2Manager manager,
             MediaRoute2Info route, int volume) {
         Objects.requireNonNull(manager, "manager must not be null");
         Objects.requireNonNull(route, "route must not be null");
@@ -368,22 +369,22 @@
         final long token = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
-                requestSetVolumeLocked(manager, route, volume);
+                setRouteVolumeLocked(manager, route, volume);
             }
         } finally {
             Binder.restoreCallingIdentity(token);
         }
     }
 
-    public void requestUpdateVolume2Manager(IMediaRouter2Manager manager,
-            MediaRoute2Info route, int delta) {
+    public void setSessionVolume2Manager(IMediaRouter2Manager manager,
+            String sessionId, int volume) {
         Objects.requireNonNull(manager, "manager must not be null");
-        Objects.requireNonNull(route, "route must not be null");
+        Objects.requireNonNull(sessionId, "sessionId must not be null");
 
         final long token = Binder.clearCallingIdentity();
         try {
             synchronized (mLock) {
-                requestUpdateVolumeLocked(manager, route, delta);
+                setSessionVolumeLocked(manager, sessionId, volume);
             }
         } finally {
             Binder.restoreCallingIdentity(token);
@@ -598,6 +599,9 @@
             clientRecord.mUserRecord.mHandler.sendMessage(
                     obtainMessage(UserHandler::updateClientUsage,
                             clientRecord.mUserRecord.mHandler, clientRecord));
+            clientRecord.mUserRecord.mHandler.sendMessage(
+                    obtainMessage(UserHandler::updateDiscoveryPreference,
+                            clientRecord.mUserRecord.mHandler));
         }
     }
 
@@ -613,27 +617,27 @@
         }
     }
 
-    private void requestSetVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
+    private void setRouteVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
             int volume) {
         final IBinder binder = client.asBinder();
         Client2Record clientRecord = mAllClientRecords.get(binder);
 
         if (clientRecord != null) {
             clientRecord.mUserRecord.mHandler.sendMessage(
-                    obtainMessage(UserHandler::requestSetVolume,
+                    obtainMessage(UserHandler::setRouteVolume,
                             clientRecord.mUserRecord.mHandler, route, volume));
         }
     }
 
-    private void requestUpdateVolumeLocked(IMediaRouter2Client client, MediaRoute2Info route,
-            int delta) {
+    private void setSessionVolumeLocked(IMediaRouter2Client client, String sessionId,
+            int volume) {
         final IBinder binder = client.asBinder();
         Client2Record clientRecord = mAllClientRecords.get(binder);
 
         if (clientRecord != null) {
             clientRecord.mUserRecord.mHandler.sendMessage(
-                    obtainMessage(UserHandler::requestUpdateVolume,
-                            clientRecord.mUserRecord.mHandler, route, delta));
+                    obtainMessage(UserHandler::setSessionVolume,
+                            clientRecord.mUserRecord.mHandler, sessionId, volume));
         }
     }
 
@@ -698,27 +702,27 @@
         }
     }
 
-    private void requestSetVolumeLocked(IMediaRouter2Manager manager, MediaRoute2Info route,
+    private void setRouteVolumeLocked(IMediaRouter2Manager manager, MediaRoute2Info route,
             int volume) {
         final IBinder binder = manager.asBinder();
         ManagerRecord managerRecord = mAllManagerRecords.get(binder);
 
         if (managerRecord != null) {
             managerRecord.mUserRecord.mHandler.sendMessage(
-                    obtainMessage(UserHandler::requestSetVolume,
+                    obtainMessage(UserHandler::setRouteVolume,
                             managerRecord.mUserRecord.mHandler, route, volume));
         }
     }
 
-    private void requestUpdateVolumeLocked(IMediaRouter2Manager manager, MediaRoute2Info route,
-            int delta) {
+    private void setSessionVolumeLocked(IMediaRouter2Manager manager, String sessionId,
+            int volume) {
         final IBinder binder = manager.asBinder();
         ManagerRecord managerRecord = mAllManagerRecords.get(binder);
 
         if (managerRecord != null) {
             managerRecord.mUserRecord.mHandler.sendMessage(
-                    obtainMessage(UserHandler::requestUpdateVolume,
-                            managerRecord.mUserRecord.mHandler, route, delta));
+                    obtainMessage(UserHandler::setSessionVolume,
+                            managerRecord.mUserRecord.mHandler, sessionId, volume));
         }
     }
 
@@ -856,6 +860,7 @@
         //TODO: make records private for thread-safety
         final ArrayList<Client2Record> mClientRecords = new ArrayList<>();
         final ArrayList<ManagerRecord> mManagerRecords = new ArrayList<>();
+        RouteDiscoveryPreference mCompositeDiscoveryPreference = RouteDiscoveryPreference.EMPTY;
         final UserHandler mHandler;
 
         UserRecord(int userId) {
@@ -885,8 +890,6 @@
         public final int mClientId;
 
         public RouteDiscoveryPreference mDiscoveryPreference;
-        public boolean mIsManagerSelecting;
-        public MediaRoute2Info mSelectingRoute;
         public MediaRoute2Info mSelectedRoute;
 
         Client2Record(UserRecord userRecord, IMediaRouter2Client client,
@@ -1003,6 +1006,7 @@
         public void onAddProvider(MediaRoute2ProviderProxy provider) {
             provider.setCallback(this);
             mMediaProviders.add(provider);
+            provider.updateDiscoveryPreference(mUserRecord.mCompositeDiscoveryPreference);
         }
 
         @Override
@@ -1449,18 +1453,21 @@
             }
         }
 
-        private void requestSetVolume(MediaRoute2Info route, int volume) {
+        private void setRouteVolume(MediaRoute2Info route, int volume) {
             final MediaRoute2Provider provider = findProvider(route.getProviderId());
             if (provider != null) {
-                provider.requestSetVolume(route.getOriginalId(), volume);
+                provider.setRouteVolume(route.getOriginalId(), volume);
             }
         }
 
-        private void requestUpdateVolume(MediaRoute2Info route, int delta) {
-            final MediaRoute2Provider provider = findProvider(route.getProviderId());
-            if (provider != null) {
-                provider.requestUpdateVolume(route.getOriginalId(), delta);
+        private void setSessionVolume(String sessionId, int volume) {
+            final MediaRoute2Provider provider = findProvider(getProviderId(sessionId));
+            if (provider == null) {
+                Slog.w(TAG, "setSessionVolume: couldn't find provider for session "
+                        + "id=" + sessionId);
+                return;
             }
+            provider.setSessionVolume(getOriginalId(sessionId), volume);
         }
 
         private List<IMediaRouter2Client> getClients() {
@@ -1642,6 +1649,25 @@
             }
         }
 
+        private void updateDiscoveryPreference() {
+            MediaRouter2ServiceImpl service = mServiceRef.get();
+            if (service == null) {
+                return;
+            }
+            List<RouteDiscoveryPreference> discoveryPreferences = new ArrayList<>();
+            synchronized (service.mLock) {
+                for (Client2Record clientRecord : mUserRecord.mClientRecords) {
+                    discoveryPreferences.add(clientRecord.mDiscoveryPreference);
+                }
+                mUserRecord.mCompositeDiscoveryPreference =
+                        new RouteDiscoveryPreference.Builder(discoveryPreferences)
+                        .build();
+            }
+            for (MediaRoute2Provider provider : mMediaProviders) {
+                provider.updateDiscoveryPreference(mUserRecord.mCompositeDiscoveryPreference);
+            }
+        }
+
         private MediaRoute2Provider findProvider(String providerId) {
             for (MediaRoute2Provider provider : mMediaProviders) {
                 if (TextUtils.equals(provider.getUniqueId(), providerId)) {
diff --git a/services/core/java/com/android/server/media/MediaRouterService.java b/services/core/java/com/android/server/media/MediaRouterService.java
index e1d3803..b38e47a 100644
--- a/services/core/java/com/android/server/media/MediaRouterService.java
+++ b/services/core/java/com/android/server/media/MediaRouterService.java
@@ -533,28 +533,29 @@
 
     // Binder call
     @Override
-    public void requestSetVolume2(IMediaRouter2Client client, MediaRoute2Info route, int volume) {
-        mService2.requestSetVolume2(client, route, volume);
-    }
-
-    // Binder call
-    @Override
-    public void requestUpdateVolume2(IMediaRouter2Client client, MediaRoute2Info route, int delta) {
-        mService2.requestUpdateVolume2(client, route, delta);
-    }
-
-    // Binder call
-    @Override
-    public void requestSetVolume2Manager(IMediaRouter2Manager manager,
+    public void setRouteVolume2(IMediaRouter2Client client,
             MediaRoute2Info route, int volume) {
-        mService2.requestSetVolume2Manager(manager, route, volume);
+        mService2.setRouteVolume2(client, route, volume);
     }
 
     // Binder call
     @Override
-    public void requestUpdateVolume2Manager(IMediaRouter2Manager manager,
-            MediaRoute2Info route, int delta) {
-        mService2.requestUpdateVolume2Manager(manager, route, delta);
+    public void setSessionVolume2(IMediaRouter2Client client, String sessionId, int volume) {
+        mService2.setSessionVolume2(client, sessionId, volume);
+    }
+
+    // Binder call
+    @Override
+    public void setRouteVolume2Manager(IMediaRouter2Manager manager,
+            MediaRoute2Info route, int volume) {
+        mService2.setRouteVolume2Manager(manager, route, volume);
+    }
+
+    // Binder call
+    @Override
+    public void setSessionVolume2Manager(IMediaRouter2Manager manager,
+            String sessionId, int volume) {
+        mService2.setSessionVolume2Manager(manager, sessionId, volume);
     }
 
     // Binder call
diff --git a/services/core/java/com/android/server/media/MediaSession2Record.java b/services/core/java/com/android/server/media/MediaSession2Record.java
index b21d2e7..11b7a8a 100644
--- a/services/core/java/com/android/server/media/MediaSession2Record.java
+++ b/services/core/java/com/android/server/media/MediaSession2Record.java
@@ -50,15 +50,20 @@
     private final MediaSessionService mService;
     @GuardedBy("mLock")
     private boolean mIsConnected;
+    @GuardedBy("mLock")
+    private int mPolicies;
+    @GuardedBy("mLock")
+    private boolean mIsClosed;
 
     public MediaSession2Record(Session2Token sessionToken, MediaSessionService service,
-            Looper handlerLooper) {
+            Looper handlerLooper, int policies) {
         mSessionToken = sessionToken;
         mService = service;
         mHandlerExecutor = new HandlerExecutor(new Handler(handlerLooper));
         mController = new MediaController2.Builder(service.getContext(), sessionToken)
                 .setControllerCallback(mHandlerExecutor, new Controller2Callback())
                 .build();
+        mPolicies = policies;
     }
 
     @Override
@@ -116,6 +121,7 @@
     @Override
     public void close() {
         synchronized (mLock) {
+            mIsClosed = true;
             // Call close regardless of the mIsAvailable. This may be called when it's not yet
             // connected.
             mController.close();
@@ -123,12 +129,34 @@
     }
 
     @Override
+    public boolean isClosed() {
+        synchronized (mLock) {
+            return mIsClosed;
+        }
+    }
+
+    @Override
     public boolean sendMediaButton(String packageName, int pid, int uid, boolean asSystemService,
             KeyEvent ke, int sequenceId, ResultReceiver cb) {
         // TODO(jaewan): Implement.
         return false;
     }
 
+
+    @Override
+    public int getSessionPolicies() {
+        synchronized (mLock) {
+            return mPolicies;
+        }
+    }
+
+    @Override
+    public void setSessionPolicies(int policies) {
+        synchronized (mLock) {
+            mPolicies = policies;
+        }
+    }
+
     @Override
     public void dump(PrintWriter pw, String prefix) {
         pw.println(prefix + "token=" + mSessionToken);
diff --git a/services/core/java/com/android/server/media/MediaSessionRecord.java b/services/core/java/com/android/server/media/MediaSessionRecord.java
index 46fb240..9f47b34 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecord.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecord.java
@@ -127,7 +127,7 @@
             new ArrayList<>();
 
     private long mFlags;
-    private PendingIntent mMediaButtonReceiver;
+    private MediaButtonReceiverHolder mMediaButtonReceiverHolder;
     private PendingIntent mLaunchIntent;
 
     // TransportPerformer fields
@@ -159,9 +159,12 @@
     private long mDuration = -1;
     private String mMetadataDescription;
 
+    private int mPolicies;
+
     public MediaSessionRecord(int ownerPid, int ownerUid, int userId, String ownerPackageName,
             ISessionCallback cb, String tag, Bundle sessionInfo,
-            MediaSessionService service, Looper handlerLooper) throws RemoteException {
+            MediaSessionService service, Looper handlerLooper, int policies)
+            throws RemoteException {
         mOwnerPid = ownerPid;
         mOwnerUid = ownerUid;
         mUserId = userId;
@@ -178,6 +181,7 @@
         mAudioManager = (AudioManager) mContext.getSystemService(Context.AUDIO_SERVICE);
         mAudioManagerInternal = LocalServices.getService(AudioManagerInternal.class);
         mAudioAttrs = DEFAULT_ATTRIBUTES;
+        mPolicies = policies;
 
         // May throw RemoteException if the session app is killed.
         mSessionCb.mCb.asBinder().linkToDeath(this, 0);
@@ -216,8 +220,8 @@
      *
      * @return The pending intent set by the app or null.
      */
-    public PendingIntent getMediaButtonReceiver() {
-        return mMediaButtonReceiver;
+    public MediaButtonReceiverHolder getMediaButtonReceiver() {
+        return mMediaButtonReceiverHolder;
     }
 
     /**
@@ -416,6 +420,13 @@
         }
     }
 
+    @Override
+    public boolean isClosed() {
+        synchronized (mLock) {
+            return mDestroyed;
+        }
+    }
+
     /**
      * Sends media button.
      *
@@ -438,6 +449,20 @@
     }
 
     @Override
+    public int getSessionPolicies() {
+        synchronized (mLock) {
+            return mPolicies;
+        }
+    }
+
+    @Override
+    public void setSessionPolicies(int policies) {
+        synchronized (mLock) {
+            mPolicies = policies;
+        }
+    }
+
+    @Override
     public void dump(PrintWriter pw, String prefix) {
         pw.println(prefix + mTag + " " + this);
 
@@ -446,7 +471,7 @@
                 + ", userId=" + mUserId);
         pw.println(indent + "package=" + mPackageName);
         pw.println(indent + "launchIntent=" + mLaunchIntent);
-        pw.println(indent + "mediaButtonReceiver=" + mMediaButtonReceiver);
+        pw.println(indent + "mediaButtonReceiver=" + mMediaButtonReceiverHolder);
         pw.println(indent + "active=" + mIsActive);
         pw.println(indent + "flags=" + mFlags);
         pw.println(indent + "rating type=" + mRatingType);
@@ -808,9 +833,14 @@
 
         @Override
         public void setMediaButtonReceiver(PendingIntent pi) throws RemoteException {
-            mMediaButtonReceiver = pi;
             final long token = Binder.clearCallingIdentity();
             try {
+                if ((mPolicies & SessionPolicyProvider.SESSION_POLICY_IGNORE_BUTTON_RECEIVER)
+                        != 0) {
+                    return;
+                }
+                mMediaButtonReceiverHolder =
+                        MediaButtonReceiverHolder.create(mContext, mUserId, pi);
                 mService.onMediaButtonReceiverChanged(MediaSessionRecord.this);
             } finally {
                 Binder.restoreCallingIdentity(token);
@@ -1501,5 +1531,4 @@
             msg.sendToTarget();
         }
     }
-
 }
diff --git a/services/core/java/com/android/server/media/MediaSessionRecordImpl.java b/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
index 2cde89a7..74e6ded 100644
--- a/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
+++ b/services/core/java/com/android/server/media/MediaSessionRecordImpl.java
@@ -20,6 +20,8 @@
 import android.os.ResultReceiver;
 import android.view.KeyEvent;
 
+import com.android.server.media.SessionPolicyProvider.SessionPolicy;
+
 import java.io.PrintWriter;
 
 /**
@@ -128,6 +130,18 @@
             KeyEvent ke, int sequenceId, ResultReceiver cb);
 
     /**
+     * Get session policies from custom policy provider set when MediaSessionRecord is instantiated.
+     * If custom policy does not exist, will return null.
+     */
+    @SessionPolicy
+    int getSessionPolicies();
+
+    /**
+     * Overwrite session policies that have been set when MediaSessionRecord is instantiated.
+     */
+    void setSessionPolicies(@SessionPolicy int policies);
+
+    /**
      * Dumps internal state
      *
      * @param pw print writer
@@ -140,4 +154,9 @@
      */
     @Override
     void close();
+
+    /**
+     * Returns whether {@link #close()} is called before.
+     */
+    boolean isClosed();
 }
diff --git a/services/core/java/com/android/server/media/MediaSessionService.java b/services/core/java/com/android/server/media/MediaSessionService.java
index a6ad57a..7ffac06 100644
--- a/services/core/java/com/android/server/media/MediaSessionService.java
+++ b/services/core/java/com/android/server/media/MediaSessionService.java
@@ -18,22 +18,17 @@
 
 import static android.os.UserHandle.USER_ALL;
 
-import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.INotificationManager;
 import android.app.KeyguardManager;
 import android.app.PendingIntent;
-import android.app.PendingIntent.CanceledException;
 import android.content.ActivityNotFoundException;
 import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
-import android.content.pm.ActivityInfo;
 import android.content.pm.PackageManager;
-import android.content.pm.PackageManager.NameNotFoundException;
 import android.content.pm.ParceledListSlice;
-import android.content.pm.ServiceInfo;
 import android.content.pm.UserInfo;
 import android.database.ContentObserver;
 import android.media.AudioManager;
@@ -99,7 +94,7 @@
     private static final String TAG = "MediaSessionService";
     static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
     // Leave log for key event always.
-    private static final boolean DEBUG_KEY_EVENT = true;
+    static final boolean DEBUG_KEY_EVENT = true;
 
     private static final int WAKELOCK_TIMEOUT = 5000;
     private static final int MEDIA_KEY_LISTENER_TIMEOUT = 1000;
@@ -141,6 +136,9 @@
     final RemoteCallbackList<IRemoteVolumeController> mRemoteVolumeControllers =
             new RemoteCallbackList<>();
 
+    private SessionPolicyProvider mCustomSessionPolicyProvider;
+    private MediaKeyDispatcher mCustomMediaKeyDispatcher;
+
     public MediaSessionService(Context context) {
         super(context);
         mContext = context;
@@ -179,6 +177,9 @@
         mSettingsObserver.observe();
         mHasFeatureLeanback = mContext.getPackageManager().hasSystemFeature(
                 PackageManager.FEATURE_LEANBACK);
+
+        // TODO: (jinpark) check if config value for custom MediaKeyDispatcher and
+        //  SessionPolicyProvider have been overlayed and instantiate using reflection.
         updateUser();
     }
 
@@ -428,9 +429,14 @@
         if (DEBUG) {
             Log.d(TAG, "Destroying " + session);
         }
+        if (session.isClosed()) {
+            Log.w(TAG, "Destroying already destroyed session. Ignoring.");
+            return;
+        }
+
         FullUserRecord user = getFullUserRecordLocked(session.getUserId());
 
-        if (user != null) {
+        if (user != null && session instanceof MediaSessionRecord) {
             final int uid = session.getUid();
             final int sessionCount = user.mUidToSessionCount.get(uid, 0);
             if (sessionCount <= 0) {
@@ -555,7 +561,8 @@
      * 4. It needs to be added to the relevant user record.
      */
     private MediaSessionRecord createSessionInternal(int callerPid, int callerUid, int userId,
-            String callerPackageName, ISessionCallback cb, String tag, Bundle sessionInfo) {
+            String callerPackageName, ISessionCallback cb, String tag, Bundle sessionInfo,
+            int policies) {
         synchronized (mLock) {
             FullUserRecord user = getFullUserRecordLocked(userId);
             if (user == null) {
@@ -563,20 +570,22 @@
                 throw new RuntimeException("Session request from invalid user.");
             }
 
-            final MediaSessionRecord session;
-            try {
-                session = new MediaSessionRecord(callerPid, callerUid, userId,
-                        callerPackageName, cb, tag, sessionInfo, this, mHandler.getLooper());
-            } catch (RemoteException e) {
-                throw new RuntimeException("Media Session owner died prematurely.", e);
-            }
-
             final int sessionCount = user.mUidToSessionCount.get(callerUid, 0);
             if (sessionCount >= SESSION_CREATION_LIMIT_PER_UID
                     && !hasMediaControlPermission(callerPid, callerUid)) {
                 throw new RuntimeException("Created too many sessions. count="
                         + sessionCount + ")");
             }
+
+            final MediaSessionRecord session;
+            try {
+                session = new MediaSessionRecord(callerPid, callerUid, userId,
+                        callerPackageName, cb, tag, sessionInfo, this, mHandler.getLooper(),
+                        policies);
+            } catch (RemoteException e) {
+                throw new RuntimeException("Media Session owner died prematurely.", e);
+            }
+
             user.mUidToSessionCount.put(callerUid, sessionCount + 1);
 
             user.mPriorityStack.addSession(session);
@@ -746,12 +755,6 @@
      * <p>The contents of this object is guarded by {@link #mLock}.
      */
     final class FullUserRecord implements MediaSessionStack.OnMediaButtonSessionChangedListener {
-        public static final int COMPONENT_TYPE_INVALID = 0;
-        public static final int COMPONENT_TYPE_BROADCAST = 1;
-        public static final int COMPONENT_TYPE_ACTIVITY = 2;
-        public static final int COMPONENT_TYPE_SERVICE = 3;
-        private static final String COMPONENT_NAME_USER_ID_DELIM = ",";
-
         private final int mFullUserId;
         private final MediaSessionStack mPriorityStack;
         private final HashMap<IBinder, OnMediaKeyEventDispatchedListenerRecord>
@@ -760,10 +763,7 @@
                 mOnMediaKeyEventSessionChangedListeners = new HashMap<>();
         private final SparseIntArray mUidToSessionCount = new SparseIntArray();
 
-        private PendingIntent mLastMediaButtonReceiver;
-        private ComponentName mRestoredMediaButtonReceiver;
-        private int mRestoredMediaButtonReceiverComponentType;
-        private int mRestoredMediaButtonReceiverUserId;
+        private MediaButtonReceiverHolder mLastMediaButtonReceiverHolder;
 
         private IOnVolumeKeyLongPressListener mOnVolumeKeyLongPressListener;
         private int mOnVolumeKeyLongPressListenerUid;
@@ -780,21 +780,9 @@
             // Restore the remembered media button receiver before the boot.
             String mediaButtonReceiverInfo = Settings.Secure.getStringForUser(mContentResolver,
                     Settings.System.MEDIA_BUTTON_RECEIVER, mFullUserId);
-            if (mediaButtonReceiverInfo == null) {
-                return;
-            }
-            String[] tokens = mediaButtonReceiverInfo.split(COMPONENT_NAME_USER_ID_DELIM);
-            if (tokens == null || (tokens.length != 2 && tokens.length != 3)) {
-                return;
-            }
-            mRestoredMediaButtonReceiver = ComponentName.unflattenFromString(tokens[0]);
-            mRestoredMediaButtonReceiverUserId = Integer.parseInt(tokens[1]);
-            if (tokens.length == 3) {
-                mRestoredMediaButtonReceiverComponentType = Integer.parseInt(tokens[2]);
-            } else {
-                mRestoredMediaButtonReceiverComponentType =
-                        getComponentType(mRestoredMediaButtonReceiver);
-            }
+            mLastMediaButtonReceiverHolder =
+                    MediaButtonReceiverHolder.unflattenFromString(
+                            mContext, mediaButtonReceiverInfo);
         }
 
         public void destroySessionsForUserLocked(int userId) {
@@ -878,10 +866,7 @@
                     : mOnMediaKeyEventSessionChangedListeners.values()) {
                 pw.println(indent + "  from " + getCallingPackageName(cr.uid));
             }
-            pw.println(indent + "Last MediaButtonReceiver: " + mLastMediaButtonReceiver);
-            pw.println(indent + "Restored MediaButtonReceiver: " + mRestoredMediaButtonReceiver);
-            pw.println(indent + "Restored MediaButtonReceiverComponentType: "
-                    + mRestoredMediaButtonReceiverComponentType);
+            pw.println(indent + "Last MediaButtonReceiver: " + mLastMediaButtonReceiverHolder);
             mPriorityStack.dump(pw, indent);
         }
 
@@ -910,25 +895,12 @@
                 return;
             }
             MediaSessionRecord sessionRecord = (MediaSessionRecord) record;
-            PendingIntent receiver = sessionRecord.getMediaButtonReceiver();
-            mLastMediaButtonReceiver = receiver;
-            mRestoredMediaButtonReceiver = null;
-            mRestoredMediaButtonReceiverComponentType = COMPONENT_TYPE_INVALID;
-
-            String mediaButtonReceiverInfo = "";
-            if (receiver != null) {
-                ComponentName component = receiver.getIntent().getComponent();
-                if (component != null
-                        && record.getPackageName().equals(component.getPackageName())) {
-                    String componentName = component.flattenToString();
-                    int componentType = getComponentType(component);
-                    mediaButtonReceiverInfo = String.join(COMPONENT_NAME_USER_ID_DELIM,
-                            componentName, String.valueOf(record.getUserId()),
-                            String.valueOf(componentType));
-                }
-            }
+            mLastMediaButtonReceiverHolder = sessionRecord.getMediaButtonReceiver();
+            String mediaButtonReceiverInfo = (mLastMediaButtonReceiverHolder == null)
+                    ? "" : mLastMediaButtonReceiverHolder.flattenToString();
             Settings.Secure.putStringForUser(mContentResolver,
-                    Settings.System.MEDIA_BUTTON_RECEIVER, mediaButtonReceiverInfo,
+                    Settings.System.MEDIA_BUTTON_RECEIVER,
+                    mediaButtonReceiverInfo,
                     mFullUserId);
         }
 
@@ -944,15 +916,9 @@
                     } else {
                         // TODO(jaewan): Implement
                     }
-                } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
-                    callback.onMediaKeyEventSessionChanged(
-                            mCurrentFullUserRecord.mLastMediaButtonReceiver
-                                    .getIntent().getComponent().getPackageName(),
-                            null);
-                } else if (mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
-                    callback.onMediaKeyEventSessionChanged(
-                            mCurrentFullUserRecord.mRestoredMediaButtonReceiver.getPackageName(),
-                            null);
+                } else if (mCurrentFullUserRecord.mLastMediaButtonReceiverHolder != null) {
+                    String packageName = mLastMediaButtonReceiverHolder.getPackageName();
+                    callback.onMediaKeyEventSessionChanged(packageName, null);
                 }
             } catch (RemoteException e) {
                 Log.w(TAG, "Failed to pushAddressedPlayerChangedLocked", e);
@@ -971,35 +937,6 @@
                     ? mGlobalPrioritySession : mPriorityStack.getMediaButtonSession();
         }
 
-        private int getComponentType(@Nullable ComponentName componentName) {
-            if (componentName == null) {
-                return COMPONENT_TYPE_INVALID;
-            }
-            PackageManager pm = mContext.getPackageManager();
-            try {
-                ActivityInfo activityInfo = pm.getActivityInfo(componentName,
-                        PackageManager.MATCH_DIRECT_BOOT_AWARE
-                                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
-                                | PackageManager.GET_ACTIVITIES);
-                if (activityInfo != null) {
-                    return COMPONENT_TYPE_ACTIVITY;
-                }
-            } catch (NameNotFoundException e) {
-            }
-            try {
-                ServiceInfo serviceInfo = pm.getServiceInfo(componentName,
-                        PackageManager.MATCH_DIRECT_BOOT_AWARE
-                                | PackageManager.MATCH_DIRECT_BOOT_UNAWARE
-                                | PackageManager.GET_SERVICES);
-                if (serviceInfo != null) {
-                    return COMPONENT_TYPE_SERVICE;
-                }
-            } catch (NameNotFoundException e) {
-            }
-            // Pick legacy behavior for BroadcastReceiver or unknown.
-            return COMPONENT_TYPE_BROADCAST;
-        }
-
         final class OnMediaKeyEventDispatchedListenerRecord implements IBinder.DeathRecipient {
             public final IOnMediaKeyEventDispatchedListener callback;
             public final int uid;
@@ -1127,8 +1064,11 @@
                 if (cb == null) {
                     throw new IllegalArgumentException("Controller callback cannot be null");
                 }
+                int policies = (mCustomSessionPolicyProvider != null)
+                        ? mCustomSessionPolicyProvider.getSessionPoliciesForApplication(
+                                uid, packageName) : 0;
                 return createSessionInternal(pid, uid, resolvedUserId, packageName, cb, tag,
-                        sessionInfo).getSessionBinder();
+                        sessionInfo, policies).getSessionBinder();
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
@@ -1148,7 +1088,7 @@
                             + " but actually=" + sessionToken.getUid());
                 }
                 MediaSession2Record record = new MediaSession2Record(
-                        sessionToken, MediaSessionService.this, mHandler.getLooper());
+                        sessionToken, MediaSessionService.this, mHandler.getLooper(), 0);
                 synchronized (mLock) {
                     FullUserRecord user = getFullUserRecordLocked(record.getUserId());
                     user.mPriorityStack.addSession(record);
@@ -1308,12 +1248,11 @@
          * ACTION_MEDIA_BUTTON intent to the rest of the system.
          *
          * @param packageName The caller package
-         * @param asSystemService {@code true} if the event sent to the session as if it was come
-         *          from the system service instead of the app process. This helps sessions to
-         *          distinguish between the key injection by the app and key events from the
-         *          hardware devices. Should be used only when the volume key events aren't handled
-         *          by foreground activity. {@code false} otherwise to tell session about the real
-         *          caller.
+         * @param asSystemService {@code true} if the event sent to the session came from the
+         *          service instead of the app process. This helps sessions to distinguish between
+         *          the key injection by the app and key events from the hardware devices. Should be
+         *          used only when the hardware key events aren't handled by foreground activity.
+         *          {@code false} otherwise to tell session about the real caller.
          * @param keyEvent a non-null KeyEvent whose key code is one of the
          *            supported media buttons
          * @param needWakeLock true if a PARTIAL_WAKE_LOCK needs to be held
@@ -2115,14 +2054,27 @@
                 // TODO(jaewan): Implement
                 return;
             }
-            MediaSessionRecord session =
-                    (MediaSessionRecord) mCurrentFullUserRecord.getMediaButtonSessionLocked();
+            MediaSessionRecord session = null;
+
+            // Retrieve custom session for key event if it exists.
+            if (mCustomMediaKeyDispatcher != null) {
+                MediaSession.Token token =
+                        mCustomMediaKeyDispatcher.getSessionForKeyEvent(keyEvent, asSystemService);
+                if (token != null) {
+                    session = getMediaSessionRecordLocked(token);
+                }
+            }
+
+            if (session == null) {
+                session = (MediaSessionRecord) mCurrentFullUserRecord.getMediaButtonSessionLocked();
+            }
+
             if (session != null) {
                 if (DEBUG_KEY_EVENT) {
                     Log.d(TAG, "Sending " + keyEvent + " to " + session);
                 }
                 if (needWakeLock) {
-                    mKeyEventReceiver.aquireWakeLockLocked();
+                    mKeyEventReceiver.acquireWakeLockLocked();
                 }
                 // If we don't need a wakelock use -1 as the id so we won't release it later.
                 session.sendMediaButton(packageName, pid, uid, asSystemService, keyEvent,
@@ -2137,79 +2089,31 @@
                 } catch (RemoteException e) {
                     Log.w(TAG, "Failed to send callback", e);
                 }
-            } else if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null
-                    || mCurrentFullUserRecord.mRestoredMediaButtonReceiver != null) {
+            } else if (mCurrentFullUserRecord.mLastMediaButtonReceiverHolder != null) {
                 if (needWakeLock) {
-                    mKeyEventReceiver.aquireWakeLockLocked();
+                    mKeyEventReceiver.acquireWakeLockLocked();
                 }
-                Intent mediaButtonIntent = new Intent(Intent.ACTION_MEDIA_BUTTON);
-                mediaButtonIntent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-                mediaButtonIntent.putExtra(Intent.EXTRA_KEY_EVENT, keyEvent);
-                // TODO: Find a way to also send PID/UID in secure way.
-                String callerPackageName =
+                String callingPackageName =
                         (asSystemService) ? mContext.getPackageName() : packageName;
-                mediaButtonIntent.putExtra(Intent.EXTRA_PACKAGE_NAME, callerPackageName);
-                try {
-                    if (mCurrentFullUserRecord.mLastMediaButtonReceiver != null) {
-                        PendingIntent receiver = mCurrentFullUserRecord.mLastMediaButtonReceiver;
-                        if (DEBUG_KEY_EVENT) {
-                            Log.d(TAG, "Sending " + keyEvent
-                                    + " to the last known PendingIntent " + receiver);
-                        }
-                        receiver.send(mContext,
-                                needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1,
-                                mediaButtonIntent, mKeyEventReceiver, mHandler);
-                        ComponentName componentName = mCurrentFullUserRecord
-                                .mLastMediaButtonReceiver.getIntent().getComponent();
-                        if (componentName != null) {
-                            for (FullUserRecord.OnMediaKeyEventDispatchedListenerRecord cr
-                                    : mCurrentFullUserRecord
-                                    .mOnMediaKeyEventDispatchedListeners.values()) {
-                                cr.callback.onMediaKeyEventDispatched(keyEvent,
-                                        componentName.getPackageName(), null);
-                            }
-                        }
-                    } else {
-                        ComponentName receiver =
-                                mCurrentFullUserRecord.mRestoredMediaButtonReceiver;
-                        int componentType = mCurrentFullUserRecord
-                                .mRestoredMediaButtonReceiverComponentType;
-                        UserHandle userHandle = UserHandle.of(mCurrentFullUserRecord
-                                .mRestoredMediaButtonReceiverUserId);
-                        if (DEBUG_KEY_EVENT) {
-                            Log.d(TAG, "Sending " + keyEvent + " to the restored intent "
-                                    + receiver + ", type=" + componentType);
-                        }
-                        mediaButtonIntent.setComponent(receiver);
+
+                MediaButtonReceiverHolder mediaButtonReceiverHolder =
+                        mCurrentFullUserRecord.mLastMediaButtonReceiverHolder;
+
+                boolean sent = mediaButtonReceiverHolder.send(
+                        mContext, keyEvent, callingPackageName,
+                        needWakeLock ? mKeyEventReceiver.mLastTimeoutId : -1, mKeyEventReceiver,
+                        mHandler);
+                if (sent) {
+                    String pkgName = mediaButtonReceiverHolder.getPackageName();
+                    for (FullUserRecord.OnMediaKeyEventDispatchedListenerRecord cr
+                            : mCurrentFullUserRecord
+                            .mOnMediaKeyEventDispatchedListeners.values()) {
                         try {
-                            switch (componentType) {
-                                case FullUserRecord.COMPONENT_TYPE_ACTIVITY:
-                                    mContext.startActivityAsUser(mediaButtonIntent, userHandle);
-                                    break;
-                                case FullUserRecord.COMPONENT_TYPE_SERVICE:
-                                    mContext.startForegroundServiceAsUser(mediaButtonIntent,
-                                            userHandle);
-                                    break;
-                                default:
-                                    // Legacy behavior for other cases.
-                                    mContext.sendBroadcastAsUser(mediaButtonIntent, userHandle);
-                            }
-                        } catch (Exception e) {
-                            Log.w(TAG, "Error sending media button to the restored intent "
-                                    + receiver + ", type=" + componentType, e);
-                        }
-                        for (FullUserRecord.OnMediaKeyEventDispatchedListenerRecord cr
-                                : mCurrentFullUserRecord
-                                .mOnMediaKeyEventDispatchedListeners.values()) {
-                            cr.callback.onMediaKeyEventDispatched(keyEvent,
-                                    receiver.getPackageName(), null);
+                            cr.callback.onMediaKeyEventDispatched(keyEvent, pkgName, null);
+                        } catch (RemoteException e) {
+                            Log.w(TAG, "Failed notify key event dispatch, uid=" + cr.uid, e);
                         }
                     }
-                } catch (CanceledException e) {
-                    Log.i(TAG, "Error sending key event to media button receiver "
-                            + mCurrentFullUserRecord.mLastMediaButtonReceiver, e);
-                } catch (RemoteException e) {
-                    Log.w(TAG, "Failed to send callback", e);
                 }
             }
         }
@@ -2349,7 +2253,7 @@
                 }
             }
 
-            public void aquireWakeLockLocked() {
+            public void acquireWakeLockLocked() {
                 if (mRefCount == 0) {
                     mMediaEventWakeLock.acquire();
                 }
diff --git a/services/core/java/com/android/server/media/MediaSessionStack.java b/services/core/java/com/android/server/media/MediaSessionStack.java
index 7bb7cf4..07b1a1a 100644
--- a/services/core/java/com/android/server/media/MediaSessionStack.java
+++ b/services/core/java/com/android/server/media/MediaSessionStack.java
@@ -274,6 +274,15 @@
     }
 
     private void updateMediaButtonSession(MediaSessionRecordImpl newMediaButtonSession) {
+        // Check if the policy states that this session should not be updated as a media button
+        // session.
+        if (newMediaButtonSession != null) {
+            int policies = newMediaButtonSession.getSessionPolicies();
+            if ((policies & SessionPolicyProvider.SESSION_POLICY_IGNORE_BUTTON_SESSION) == 1) {
+                return;
+            }
+        }
+
         MediaSessionRecordImpl oldMediaButtonSession = mMediaButtonSession;
         mMediaButtonSession = newMediaButtonSession;
         mOnMediaButtonSessionChangedListener.onMediaButtonSessionChanged(
diff --git a/services/core/java/com/android/server/media/SessionPolicyProvider.java b/services/core/java/com/android/server/media/SessionPolicyProvider.java
new file mode 100644
index 0000000..6eb79ef
--- /dev/null
+++ b/services/core/java/com/android/server/media/SessionPolicyProvider.java
@@ -0,0 +1,63 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.media;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.media.session.MediaSession;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * Interface for customizing {@link MediaSessionService}
+ */
+public interface SessionPolicyProvider {
+    @IntDef(value = {
+            SESSION_POLICY_IGNORE_BUTTON_RECEIVER,
+            SESSION_POLICY_IGNORE_BUTTON_SESSION
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface SessionPolicy {}
+
+    /**
+     * Policy to ignore media button receiver, to not revive the media app when its media session is
+     * released or the app is dead.
+     *
+     * @see MediaSession#setMediaButtonReceiver
+     */
+    int SESSION_POLICY_IGNORE_BUTTON_RECEIVER = 1 << 0;
+
+    /**
+     * Policy to ignore sessions that should not respond to media key events via
+     * {@link MediaSessionService}. A typical use case is to explicitly
+     * ignore sessions that should not respond to media key events even if their playback state has
+     * changed most recently.
+     */
+    int SESSION_POLICY_IGNORE_BUTTON_SESSION = 1 << 1;
+
+    /**
+     * Use this to statically set policies for sessions when they are created.
+     * Use android.media.session.MediaSessionManager#setSessionPolicies(MediaSession.Token, int)
+     * to dynamically change policies at runtime.
+     *
+     * @param uid
+     * @param packageName
+     * @return list of policies
+     */
+    @SessionPolicy int getSessionPoliciesForApplication(int uid, @NonNull String packageName);
+}
diff --git a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
index 558eb8d..18383c4 100644
--- a/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
+++ b/services/core/java/com/android/server/media/SystemMediaRoute2Provider.java
@@ -20,15 +20,18 @@
 import static android.media.MediaRoute2Info.FEATURE_LIVE_VIDEO;
 
 import android.annotation.NonNull;
+import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
 import android.content.Intent;
+import android.content.IntentFilter;
 import android.media.AudioManager;
 import android.media.AudioRoutesInfo;
 import android.media.IAudioRoutesObserver;
 import android.media.IAudioService;
 import android.media.MediaRoute2Info;
 import android.media.MediaRoute2ProviderInfo;
+import android.media.RouteDiscoveryPreference;
 import android.media.RoutingSessionInfo;
 import android.os.Bundle;
 import android.os.Handler;
@@ -39,6 +42,7 @@
 import android.util.Log;
 
 import com.android.internal.R;
+import com.android.internal.annotations.GuardedBy;
 
 import java.util.Collections;
 import java.util.List;
@@ -64,6 +68,8 @@
             SystemMediaRoute2Provider.class.getPackageName$(),
             SystemMediaRoute2Provider.class.getName());
 
+    @GuardedBy("mLock")
+    private String mSelectedRouteId;
     MediaRoute2Info mDefaultRoute;
     @NonNull List<MediaRoute2Info> mBluetoothRoutes = Collections.EMPTY_LIST;
     final AudioRoutesInfo mCurAudioRoutesInfo = new AudioRoutesInfo();
@@ -83,6 +89,8 @@
         super(sComponentName);
         setCallback(callback);
 
+        mIsSystemRouteProvider = true;
+
         mContext = context;
         mHandler = new Handler(Looper.getMainLooper());
 
@@ -104,6 +112,9 @@
             }
         });
         initializeSessionInfo();
+
+        mContext.registerReceiver(new VolumeChangeReceiver(),
+                new IntentFilter(AudioManager.VOLUME_CHANGED_ACTION));
     }
 
     @Override
@@ -116,6 +127,10 @@
     public void releaseSession(String sessionId) {
         // Do nothing
     }
+    @Override
+    public void updateDiscoveryPreference(RouteDiscoveryPreference discoveryPreference) {
+        // Do nothing
+    }
 
     @Override
     public void selectRoute(String sessionId, String routeId) {
@@ -141,14 +156,17 @@
     public void sendControlRequest(@NonNull String routeId, @NonNull Intent request) {
     }
 
-    //TODO: implement method
     @Override
-    public void requestSetVolume(String routeId, int volume) {
+    public void setRouteVolume(String routeId, int volume) {
+        if (!TextUtils.equals(routeId, mSelectedRouteId)) {
+            return;
+        }
+        mAudioManager.setStreamVolume(AudioManager.STREAM_MUSIC, volume, 0);
     }
 
-    //TODO: implement method
     @Override
-    public void requestUpdateVolume(String routeId, int delta) {
+    public void setSessionVolume(String sessionId, int volume) {
+        // Do nothing since we don't support grouping volume yet.
     }
 
     private void initializeDefaultRoute() {
@@ -234,18 +252,16 @@
                 SYSTEM_SESSION_ID, "" /* clientPackageName */)
                 .setSystemSession(true);
         String activeBtDeviceAddress = mBtRouteProvider.getActiveDeviceAddress();
+        mSelectedRouteId = TextUtils.isEmpty(activeBtDeviceAddress) ? mDefaultRoute.getId()
+                : activeBtDeviceAddress;
+        builder.addSelectedRoute(mSelectedRouteId);
 
         if (!TextUtils.isEmpty(activeBtDeviceAddress)) {
-            // Bluetooth route. Set the route ID with the device's address.
-            builder.addSelectedRoute(activeBtDeviceAddress);
             builder.addTransferrableRoute(mDefaultRoute.getId());
-        } else {
-            // Default device
-            builder.addSelectedRoute(mDefaultRoute.getId());
         }
 
         for (MediaRoute2Info route : mBluetoothRoutes) {
-            if (!TextUtils.equals(activeBtDeviceAddress, route.getId())) {
+            if (!TextUtils.equals(mSelectedRouteId, route.getId())) {
                 builder.addTransferrableRoute(route.getId());
             }
         }
@@ -276,4 +292,44 @@
         }
         mCallback.onSessionUpdated(this, sessionInfo);
     }
+
+    private class VolumeChangeReceiver extends BroadcastReceiver {
+        // This will be called in the main thread.
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            if (!intent.getAction().equals(AudioManager.VOLUME_CHANGED_ACTION)) {
+                return;
+            }
+
+            final int streamType = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_TYPE, -1);
+            if (streamType != AudioManager.STREAM_MUSIC) {
+                return;
+            }
+
+            final int newVolume = intent.getIntExtra(AudioManager.EXTRA_VOLUME_STREAM_VALUE, 0);
+            final int oldVolume = intent.getIntExtra(
+                    AudioManager.EXTRA_PREV_VOLUME_STREAM_VALUE, 0);
+
+            if (newVolume != oldVolume) {
+                String activeBtDeviceAddress = mBtRouteProvider.getActiveDeviceAddress();
+                if (!TextUtils.isEmpty(activeBtDeviceAddress)) {
+                    for (int i = mBluetoothRoutes.size() - 1; i >= 0; i--) {
+                        MediaRoute2Info route = mBluetoothRoutes.get(i);
+                        if (TextUtils.equals(activeBtDeviceAddress, route.getId())) {
+                            mBluetoothRoutes.set(i,
+                                    new MediaRoute2Info.Builder(route)
+                                            .setVolume(newVolume)
+                                            .build());
+                            break;
+                        }
+                    }
+                } else {
+                    mDefaultRoute = new MediaRoute2Info.Builder(mDefaultRoute)
+                            .setVolume(newVolume)
+                            .build();
+                }
+                publishRoutes();
+            }
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/net/LockdownVpnTracker.java b/services/core/java/com/android/server/net/LockdownVpnTracker.java
index ef8f647..3cafaff 100644
--- a/services/core/java/com/android/server/net/LockdownVpnTracker.java
+++ b/services/core/java/com/android/server/net/LockdownVpnTracker.java
@@ -138,7 +138,7 @@
 
         if (egressDisconnected || egressChanged) {
             mAcceptedEgressIface = null;
-            mVpn.stopLegacyVpnPrivileged();
+            mVpn.stopVpnRunnerPrivileged();
         }
         if (egressDisconnected) {
             hideNotification();
@@ -218,7 +218,7 @@
         mAcceptedEgressIface = null;
         mErrorCount = 0;
 
-        mVpn.stopLegacyVpnPrivileged();
+        mVpn.stopVpnRunnerPrivileged();
         mVpn.setLockdown(false);
         hideNotification();
 
diff --git a/services/core/java/com/android/server/net/NetworkStatsService.java b/services/core/java/com/android/server/net/NetworkStatsService.java
index 1dcff07..bde9ee2 100644
--- a/services/core/java/com/android/server/net/NetworkStatsService.java
+++ b/services/core/java/com/android/server/net/NetworkStatsService.java
@@ -1610,6 +1610,22 @@
             pw.decreaseIndent();
             pw.println();
 
+            pw.println("Stats Providers:");
+            pw.increaseIndent();
+            invokeForAllStatsProviderCallbacks((cb) -> {
+                pw.println(cb.mTag + " Xt:");
+                pw.increaseIndent();
+                pw.print(cb.getCachedStats(STATS_PER_IFACE).toString());
+                pw.decreaseIndent();
+                if (includeUid) {
+                    pw.println(cb.mTag + " Uid:");
+                    pw.increaseIndent();
+                    pw.print(cb.getCachedStats(STATS_PER_UID).toString());
+                    pw.decreaseIndent();
+                }
+            });
+            pw.decreaseIndent();
+
             pw.println("Dev stats:");
             pw.increaseIndent();
             mDevRecorder.dumpLocked(pw, fullHistory);
diff --git a/services/core/java/com/android/server/notification/BadgeExtractor.java b/services/core/java/com/android/server/notification/BadgeExtractor.java
index d91d541..af8baa5 100644
--- a/services/core/java/com/android/server/notification/BadgeExtractor.java
+++ b/services/core/java/com/android/server/notification/BadgeExtractor.java
@@ -43,9 +43,9 @@
             if (DBG) Slog.d(TAG, "missing config");
             return null;
         }
-        boolean userWantsBadges = mConfig.badgingEnabled(record.sbn.getUser());
+        boolean userWantsBadges = mConfig.badgingEnabled(record.getSbn().getUser());
         boolean appCanShowBadge =
-                mConfig.canShowBadge(record.sbn.getPackageName(), record.sbn.getUid());
+                mConfig.canShowBadge(record.getSbn().getPackageName(), record.getSbn().getUid());
         if (!userWantsBadges || !appCanShowBadge) {
             record.setShowBadge(false);
         } else {
diff --git a/services/core/java/com/android/server/notification/BubbleExtractor.java b/services/core/java/com/android/server/notification/BubbleExtractor.java
index e59bf16..c9c8042 100644
--- a/services/core/java/com/android/server/notification/BubbleExtractor.java
+++ b/services/core/java/com/android/server/notification/BubbleExtractor.java
@@ -42,7 +42,7 @@
             return null;
         }
         boolean appCanShowBubble =
-                mConfig.areBubblesAllowed(record.sbn.getPackageName(), record.sbn.getUid());
+                mConfig.areBubblesAllowed(record.getSbn().getPackageName(), record.getSbn().getUid());
         if (!mConfig.bubblesEnabled() || !appCanShowBubble) {
             record.setAllowBubble(false);
         } else {
diff --git a/services/core/java/com/android/server/notification/NotificationChannelExtractor.java b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
index 0e14364..83ca699 100644
--- a/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
+++ b/services/core/java/com/android/server/notification/NotificationChannelExtractor.java
@@ -15,10 +15,8 @@
 */
 package com.android.server.notification;
 
-import android.app.Notification;
 import android.app.NotificationChannel;
 import android.content.Context;
-import android.util.FeatureFlagUtils;
 import android.util.Slog;
 
 /**
@@ -47,9 +45,9 @@
             return null;
         }
         NotificationChannel updatedChannel = mConfig.getConversationNotificationChannel(
-                record.sbn.getPackageName(),
-                record.sbn.getUid(), record.getChannel().getId(),
-                record.sbn.getShortcutId(mContext), true, false);
+                record.getSbn().getPackageName(),
+                record.getSbn().getUid(), record.getChannel().getId(),
+                record.getSbn().getShortcutId(mContext), true, false);
         record.updateNotificationChannel(updatedChannel);
 
         return null;
diff --git a/services/core/java/com/android/server/notification/NotificationComparator.java b/services/core/java/com/android/server/notification/NotificationComparator.java
index a7e40cb..29b5e81 100644
--- a/services/core/java/com/android/server/notification/NotificationComparator.java
+++ b/services/core/java/com/android/server/notification/NotificationComparator.java
@@ -122,8 +122,8 @@
             return -1 * Integer.compare(leftPackagePriority, rightPackagePriority);
         }
 
-        final int leftPriority = left.sbn.getNotification().priority;
-        final int rightPriority = right.sbn.getNotification().priority;
+        final int leftPriority = left.getSbn().getNotification().priority;
+        final int rightPriority = right.getSbn().getNotification().priority;
         if (leftPriority != rightPriority) {
             // by priority, high to low
             return -1 * Integer.compare(leftPriority, rightPriority);
@@ -169,7 +169,7 @@
     }
 
     protected boolean isImportantMessaging(NotificationRecord record) {
-        return mMessagingUtil.isImportantMessaging(record.sbn, record.getImportance());
+        return mMessagingUtil.isImportantMessaging(record.getSbn(), record.getImportance());
     }
 
     private boolean isOngoing(NotificationRecord record) {
@@ -183,7 +183,7 @@
 
     private boolean isCall(NotificationRecord record) {
         return record.isCategory(Notification.CATEGORY_CALL)
-                && isDefaultPhoneApp(record.sbn.getPackageName());
+                && isDefaultPhoneApp(record.getSbn().getPackageName());
     }
 
     private boolean isDefaultPhoneApp(String pkg) {
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
index e8cb163..dc61fb0 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryDatabase.java
@@ -170,6 +170,11 @@
         mFileWriteHandler.post(rpr);
     }
 
+    public void deleteNotificationHistoryItem(String pkg, long postedTime) {
+        RemoveNotificationRunnable rnr = new RemoveNotificationRunnable(pkg, postedTime);
+        mFileWriteHandler.post(rnr);
+    }
+
     public void addNotification(final HistoricalNotification notification) {
         synchronized (mLock) {
             mBuffer.addNewNotificationToWrite(notification);
@@ -226,6 +231,9 @@
 
     public void disableHistory() {
         synchronized (mLock) {
+            for (AtomicFile file : mHistoryFiles) {
+                file.delete();
+            }
             mHistoryDir.delete();
             mHistoryFiles.clear();
         }
@@ -244,6 +252,10 @@
                 final AtomicFile currentOldestFile = mHistoryFiles.get(i);
                 final long creationTime =
                         mFileAttrProvider.getCreationTime(currentOldestFile.getBaseFile());
+                if (DEBUG) {
+                    Slog.d(TAG, "Pruning " + currentOldestFile.getBaseFile().getName()
+                            + " created on " + creationTime);
+                }
                 if (creationTime <= retentionBoundary.getTimeInMillis()) {
                     if (DEBUG) {
                         Slog.d(TAG, "Removed " + currentOldestFile.getBaseFile().getName());
@@ -367,6 +379,49 @@
         }
     }
 
+    final class RemoveNotificationRunnable implements Runnable {
+        private String mPkg;
+        private long mPostedTime;
+        private NotificationHistory mNotificationHistory;
+
+        public RemoveNotificationRunnable(String pkg, long postedTime) {
+            mPkg = pkg;
+            mPostedTime = postedTime;
+        }
+
+        @VisibleForTesting
+        void setNotificationHistory(NotificationHistory nh) {
+            mNotificationHistory = nh;
+        }
+
+        @Override
+        public void run() {
+            if (DEBUG) Slog.d(TAG, "RemovePackageRunnable");
+            synchronized (mLock) {
+                // Remove from pending history
+                mBuffer.removeNotificationFromWrite(mPkg, mPostedTime);
+
+                Iterator<AtomicFile> historyFileItr = mHistoryFiles.iterator();
+                while (historyFileItr.hasNext()) {
+                    final AtomicFile af = historyFileItr.next();
+                    try {
+                        NotificationHistory notificationHistory = mNotificationHistory != null
+                                ? mNotificationHistory
+                                : new NotificationHistory();
+                        readLocked(af, notificationHistory,
+                                new NotificationHistoryFilter.Builder().build());
+                        if(notificationHistory.removeNotificationFromWrite(mPkg, mPostedTime)) {
+                            writeLocked(af, notificationHistory);
+                        }
+                    } catch (Exception e) {
+                        Slog.e(TAG, "Cannot clean up file on notification removal "
+                                + af.getBaseFile().getName(), e);
+                    }
+                }
+            }
+        }
+    }
+
     public static final class NotificationHistoryFileAttrProvider implements
             NotificationHistoryDatabase.FileAttrProvider {
         final static String TAG = "NotifHistoryFileDate";
diff --git a/services/core/java/com/android/server/notification/NotificationHistoryManager.java b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
index 41bc29f7..9aab0fd 100644
--- a/services/core/java/com/android/server/notification/NotificationHistoryManager.java
+++ b/services/core/java/com/android/server/notification/NotificationHistoryManager.java
@@ -130,7 +130,7 @@
         }
     }
 
-    public void onPackageRemoved(int userId, String packageName) {
+    public void onPackageRemoved(@UserIdInt int userId, String packageName) {
         synchronized (mLock) {
             if (!mUserUnlockedStates.get(userId, false)) {
                 if (mHistoryEnabled.get(userId, false)) {
@@ -150,6 +150,22 @@
         }
     }
 
+    public void deleteNotificationHistoryItem(String pkg, int uid, long postedTime) {
+        synchronized (mLock) {
+            int userId = UserHandle.getUserId(uid);
+            final NotificationHistoryDatabase userHistory =
+                    getUserHistoryAndInitializeIfNeededLocked(userId);
+            // TODO: it shouldn't be possible to delete a notification entry while the user is
+            // locked but we should handle it
+            if (userHistory == null) {
+                Slog.w(TAG, "Attempted to remove notif for locked/gone/disabled user "
+                        + userId);
+                return;
+            }
+            userHistory.deleteNotificationHistoryItem(pkg, postedTime);
+        }
+    }
+
     // TODO: wire this up to AMS when power button is long pressed
     public void triggerWriteToDisk() {
         synchronized (mLock) {
diff --git a/services/core/java/com/android/server/notification/NotificationManagerService.java b/services/core/java/com/android/server/notification/NotificationManagerService.java
index 80f6a94..a570502 100755
--- a/services/core/java/com/android/server/notification/NotificationManagerService.java
+++ b/services/core/java/com/android/server/notification/NotificationManagerService.java
@@ -90,10 +90,13 @@
 import static android.service.notification.NotificationListenerService.REASON_USER_STOPPED;
 import static android.service.notification.NotificationListenerService.TRIM_FULL;
 import static android.service.notification.NotificationListenerService.TRIM_LIGHT;
-import static android.util.StatsLogInternal.BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_MISSING;
-import static android.util.StatsLogInternal.BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_NOT_RESIZABLE;
 import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
 
+import static com.android.internal.util.FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_MISSING;
+import static com.android.internal.util.FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_NOT_RESIZABLE;
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES;
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES;
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_PREFERENCES;
 import static com.android.server.am.PendingIntentRecord.FLAG_ACTIVITY_SENDER;
 import static com.android.server.am.PendingIntentRecord.FLAG_BROADCAST_SENDER;
 import static com.android.server.am.PendingIntentRecord.FLAG_SERVICE_SENDER;
@@ -129,6 +132,7 @@
 import android.app.PendingIntent;
 import android.app.Person;
 import android.app.RemoteInput;
+import android.app.StatsManager;
 import android.app.StatusBarManager;
 import android.app.UriGrantsManager;
 import android.app.admin.DeviceAdminInfo;
@@ -185,6 +189,7 @@
 import android.os.ShellCallback;
 import android.os.SystemClock;
 import android.os.SystemProperties;
+import android.os.Trace;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.os.VibrationEffect;
@@ -193,6 +198,7 @@
 import android.provider.Settings;
 import android.service.notification.Adjustment;
 import android.service.notification.Condition;
+import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.IConditionProvider;
 import android.service.notification.INotificationListener;
 import android.service.notification.IStatusBarNotificationHolder;
@@ -219,7 +225,7 @@
 import android.util.Pair;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
+import android.util.StatsEvent;
 import android.util.Xml;
 import android.util.proto.ProtoOutputStream;
 import android.view.accessibility.AccessibilityEvent;
@@ -232,6 +238,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.compat.IPlatformCompat;
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
+import com.android.internal.logging.InstanceIdSequence;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
@@ -243,6 +250,7 @@
 import com.android.internal.util.CollectionUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.Preconditions;
 import com.android.internal.util.XmlUtils;
 import com.android.internal.util.function.TriPredicate;
@@ -380,6 +388,8 @@
     private static final String SCHEME_TIMEOUT = "timeout";
     private static final String EXTRA_KEY = "key";
 
+    private static final int NOTIFICATION_INSTANCE_ID_MAX = (1 << 13);
+
     /**
      * Apps that post custom toasts in the background will have those blocked. Apps can
      * still post toasts created with
@@ -469,6 +479,8 @@
     private AppOpsManager mAppOps;
     private UsageStatsManagerInternal mAppUsageStats;
     private DevicePolicyManagerInternal mDpm;
+    private StatsManager mStatsManager;
+    private StatsPullAtomCallbackImpl mPullAtomCallback;
 
     private Archive mArchive;
 
@@ -519,14 +531,15 @@
 
     private final SavePolicyFileRunnable mSavePolicyFile = new SavePolicyFileRunnable();
     private NotificationRecordLogger mNotificationRecordLogger;
+    private InstanceIdSequence mNotificationInstanceIdSequence;
 
     private static class Archive {
         final int mBufferSize;
-        final ArrayDeque<StatusBarNotification> mBuffer;
+        final ArrayDeque<Pair<StatusBarNotification, Integer>> mBuffer;
 
         public Archive(int size) {
             mBufferSize = size;
-            mBuffer = new ArrayDeque<StatusBarNotification>(mBufferSize);
+            mBuffer = new ArrayDeque<>(mBufferSize);
         }
 
         public String toString() {
@@ -539,7 +552,7 @@
             return sb.toString();
         }
 
-        public void record(StatusBarNotification nr) {
+        public void record(StatusBarNotification nr, int reason) {
             if (mBuffer.size() == mBufferSize) {
                 mBuffer.removeFirst();
             }
@@ -547,21 +560,24 @@
             // We don't want to store the heavy bits of the notification in the archive,
             // but other clients in the system process might be using the object, so we
             // store a (lightened) copy.
-            mBuffer.addLast(nr.cloneLight());
+            mBuffer.addLast(new Pair<>(nr.cloneLight(), reason));
         }
 
-        public Iterator<StatusBarNotification> descendingIterator() {
+        public Iterator<Pair<StatusBarNotification, Integer>> descendingIterator() {
             return mBuffer.descendingIterator();
         }
 
-        public StatusBarNotification[] getArray(int count) {
+        public StatusBarNotification[] getArray(int count, boolean includeSnoozed) {
             if (count == 0) count = mBufferSize;
             final StatusBarNotification[] a
                     = new StatusBarNotification[Math.min(count, mBuffer.size())];
-            Iterator<StatusBarNotification> iter = descendingIterator();
+            Iterator<Pair<StatusBarNotification, Integer>> iter = descendingIterator();
             int i=0;
             while (iter.hasNext() && i < count) {
-                a[i++] = iter.next();
+                Pair<StatusBarNotification, Integer> pair = iter.next();
+                if (pair.second != REASON_SNOOZED || includeSnoozed) {
+                    a[i++] = pair.first;
+                }
             }
             return a;
         }
@@ -680,14 +696,14 @@
         if (summary == null) {
             return;
         }
-        int oldFlags = summary.sbn.getNotification().flags;
+        int oldFlags = summary.getSbn().getNotification().flags;
         if (needsOngoingFlag) {
-            summary.sbn.getNotification().flags |= FLAG_ONGOING_EVENT;
+            summary.getSbn().getNotification().flags |= FLAG_ONGOING_EVENT;
         } else {
-            summary.sbn.getNotification().flags &= ~FLAG_ONGOING_EVENT;
+            summary.getSbn().getNotification().flags &= ~FLAG_ONGOING_EVENT;
         }
 
-        if (summary.sbn.getNotification().flags != oldFlags) {
+        if (summary.getSbn().getNotification().flags != oldFlags) {
             mHandler.post(new EnqueueNotificationRunnable(userId, summary, isAppForeground));
         }
     }
@@ -913,10 +929,10 @@
                         r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now),
                         nv.rank, nv.count);
 
-                StatusBarNotification sbn = r.sbn;
+                StatusBarNotification sbn = r.getSbn();
                 cancelNotification(callingUid, callingPid, sbn.getPackageName(), sbn.getTag(),
                         sbn.getId(), Notification.FLAG_AUTO_CANCEL,
-                        FLAG_FOREGROUND_SERVICE, false, r.getUserId(),
+                        FLAG_FOREGROUND_SERVICE | FLAG_BUBBLE, false, r.getUserId(),
                         REASON_CLICK, nv.rank, nv.count, null);
                 nv.recycle();
                 reportUserInteraction(r);
@@ -955,7 +971,7 @@
                 nv.recycle();
                 reportUserInteraction(r);
                 mAssistants.notifyAssistantActionClicked(
-                        r.sbn, actionIndex, action, generatedByAssistant);
+                        r.getSbn(), actionIndex, action, generatedByAssistant);
             }
         }
 
@@ -1040,7 +1056,7 @@
                         reportSeen(r);
                     }
                     r.setVisibility(true, nv.rank, nv.count);
-                    mAssistants.notifyAssistantVisibilityChangedLocked(r.sbn, true);
+                    mAssistants.notifyAssistantVisibilityChangedLocked(r.getSbn(), true);
                     boolean isHun = (nv.location
                             == NotificationVisibility.NotificationLocation.LOCATION_FIRST_HEADS_UP);
                     // hasBeenVisiblyExpanded must be called after updating the expansion state of
@@ -1059,7 +1075,7 @@
                     NotificationRecord r = mNotificationsByKey.get(nv.key);
                     if (r == null) continue;
                     r.setVisibility(false, nv.rank, nv.count);
-                    mAssistants.notifyAssistantVisibilityChangedLocked(r.sbn, false);
+                    mAssistants.notifyAssistantVisibilityChangedLocked(r.getSbn(), false);
                     nv.recycle();
                 }
             }
@@ -1086,7 +1102,8 @@
                         r.recordExpanded();
                         reportUserInteraction(r);
                     }
-                    mAssistants.notifyAssistantExpansionChangedLocked(r.sbn, userAction, expanded);
+                    mAssistants.notifyAssistantExpansionChangedLocked(
+                            r.getSbn(), userAction, expanded);
                 }
             }
         }
@@ -1102,7 +1119,7 @@
                             .setCategory(MetricsEvent.NOTIFICATION_DIRECT_REPLY_ACTION)
                             .setType(MetricsEvent.TYPE_ACTION));
                     reportUserInteraction(r);
-                    mAssistants.notifyAssistantNotificationDirectReplyLocked(r.sbn);
+                    mAssistants.notifyAssistantNotificationDirectReplyLocked(r.getSbn());
                 }
             }
         }
@@ -1146,7 +1163,7 @@
                     // Treat clicking on a smart reply as a user interaction.
                     reportUserInteraction(r);
                     mAssistants.notifyAssistantSuggestedReplySent(
-                            r.sbn, reply, r.getSuggestionsGeneratedByAssistant());
+                            r.getSbn(), reply, r.getSuggestionsGeneratedByAssistant());
                 }
             }
         }
@@ -1166,7 +1183,7 @@
             synchronized (mNotificationLock) {
                 NotificationRecord r = mNotificationsByKey.get(key);
                 if (r != null) {
-                    final StatusBarNotification n = r.sbn;
+                    final StatusBarNotification n = r.getSbn();
                     final int callingUid = n.getUid();
                     final String pkg = n.getPackageName();
                     applyFlagBubble(r, pkg, callingUid, null /* oldEntry */, isBubble);
@@ -1368,9 +1385,9 @@
                     record = findNotificationByKeyLocked(intent.getStringExtra(EXTRA_KEY));
                 }
                 if (record != null) {
-                    cancelNotification(record.sbn.getUid(), record.sbn.getInitialPid(),
-                            record.sbn.getPackageName(), record.sbn.getTag(),
-                            record.sbn.getId(), 0,
+                    cancelNotification(record.getSbn().getUid(), record.getSbn().getInitialPid(),
+                            record.getSbn().getPackageName(), record.getSbn().getTag(),
+                            record.getSbn().getId(), 0,
                             FLAG_FOREGROUND_SERVICE, true, record.getUserId(),
                             REASON_TIMEOUT, null);
                 }
@@ -1633,7 +1650,7 @@
                 synchronized (mNotificationLock) {
                     NotificationRecord r = mNotificationsByKey.get(bubbleKey);
                     if (r != null) {
-                        final StatusBarNotification n = r.sbn;
+                        final StatusBarNotification n = r.getSbn();
                         final int callingUid = n.getUid();
                         final String pkg = n.getPackageName();
                         applyFlagBubble(r, pkg, callingUid, null /* oldEntry */, isAppForeground);
@@ -1718,18 +1735,22 @@
     }
 
     public NotificationManagerService(Context context) {
-        this(context, new NotificationRecordLoggerImpl());
+        this(context,
+                new NotificationRecordLoggerImpl(),
+                new InstanceIdSequence(NOTIFICATION_INSTANCE_ID_MAX));
     }
 
     @VisibleForTesting
     public NotificationManagerService(Context context,
-            NotificationRecordLogger notificationRecordLogger) {
+            NotificationRecordLogger notificationRecordLogger,
+            InstanceIdSequence notificationInstanceIdSequence) {
         super(context);
         mNotificationRecordLogger = notificationRecordLogger;
+        mNotificationInstanceIdSequence = notificationInstanceIdSequence;
         Notification.processWhitelistToken = WHITELIST_TOKEN;
     }
 
-    // TODO - replace these methods with a single VisibleForTesting constructor
+    // TODO - replace these methods with new fields in the VisibleForTesting constructor
     @VisibleForTesting
     void setAudioManager(AudioManager audioMananger) {
         mAudioManager = audioMananger;
@@ -1772,7 +1793,7 @@
                 if (mNotificationsByKey.containsKey(posted.getKey())) {
                     count--;
                 }
-                if (posted.sbn.isGroup() && posted.getNotification().isGroupSummary()) {
+                if (posted.getSbn().isGroup() && posted.getNotification().isGroupSummary()) {
                     count--;
                 }
             }
@@ -1794,8 +1815,8 @@
     @VisibleForTesting
     void addNotification(NotificationRecord r) {
         mNotificationList.add(r);
-        mNotificationsByKey.put(r.sbn.getKey(), r);
-        if (r.sbn.isGroup()) {
+        mNotificationsByKey.put(r.getSbn().getKey(), r);
+        if (r.getSbn().isGroup()) {
             mSummaryByGroupKey.put(r.getGroupKey(), r);
         }
     }
@@ -1880,7 +1901,8 @@
             ActivityManager activityManager, GroupHelper groupHelper, IActivityManager am,
             UsageStatsManagerInternal appUsageStats, DevicePolicyManagerInternal dpm,
             IUriGrantsManager ugm, UriGrantsManagerInternal ugmInternal, AppOpsManager appOps,
-            UserManager userManager, NotificationHistoryManager historyManager) {
+            UserManager userManager, NotificationHistoryManager historyManager,
+            StatsManager statsManager) {
         mHandler = handler;
         Resources resources = getContext().getResources();
         mMaxPackageEnqueueRate = Settings.Global.getFloat(getContext().getContentResolver(),
@@ -2040,6 +2062,7 @@
         mStripRemoteViewsSizeBytes = getContext().getResources().getInteger(
                 com.android.internal.R.integer.config_notificationStripRemoteViewSizeBytes);
 
+        mStatsManager = statsManager;
     }
 
     @Override
@@ -2051,9 +2074,9 @@
                     if (DBG) {
                         Slog.d(TAG, "Reposting " + r.getKey());
                     }
-                    enqueueNotificationInternal(r.sbn.getPackageName(), r.sbn.getOpPkg(),
-                            r.sbn.getUid(), r.sbn.getInitialPid(), r.sbn.getTag(), r.sbn.getId(),
-                            r.sbn.getNotification(), userId);
+                    enqueueNotificationInternal(r.getSbn().getPackageName(), r.getSbn().getOpPkg(),
+                            r.getSbn().getUid(), r.getSbn().getInitialPid(), r.getSbn().getTag(),
+                            r.getSbn().getId(),  r.getSbn().getNotification(), userId);
                 } catch (Exception e) {
                     Slog.e(TAG, "Cannot un-snooze notification", e);
                 }
@@ -2083,7 +2106,9 @@
                 LocalServices.getService(UriGrantsManagerInternal.class),
                 (AppOpsManager) getContext().getSystemService(Context.APP_OPS_SERVICE),
                 getContext().getSystemService(UserManager.class),
-                new NotificationHistoryManager(getContext(), handler));
+                new NotificationHistoryManager(getContext(), handler),
+                mStatsManager = (StatsManager) getContext().getSystemService(
+                        Context.STATS_MANAGER));
 
         // register for various Intents
         IntentFilter filter = new IntentFilter();
@@ -2158,6 +2183,57 @@
         }
     }
 
+    private void registerNotificationPreferencesPullers() {
+        mPullAtomCallback = new StatsPullAtomCallbackImpl();
+        mStatsManager.registerPullAtomCallback(
+                PACKAGE_NOTIFICATION_PREFERENCES,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mPullAtomCallback
+        );
+        mStatsManager.registerPullAtomCallback(
+                PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mPullAtomCallback
+        );
+        mStatsManager.registerPullAtomCallback(
+                PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mPullAtomCallback
+        );
+    }
+
+    private class StatsPullAtomCallbackImpl implements StatsManager.StatsPullAtomCallback {
+        @Override
+        public int onPullAtom(int atomTag, List<StatsEvent> data) {
+            switch (atomTag) {
+                case PACKAGE_NOTIFICATION_PREFERENCES:
+                case PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES:
+                case PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES:
+                    return pullNotificationStates(atomTag, data);
+                default:
+                    throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
+            }
+        }
+    }
+
+    private int pullNotificationStates(int atomTag, List<StatsEvent> data) {
+        switch(atomTag) {
+            case PACKAGE_NOTIFICATION_PREFERENCES:
+                mPreferencesHelper.pullPackagePreferencesStats(data);
+                break;
+            case PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES:
+                mPreferencesHelper.pullPackageChannelPreferencesStats(data);
+                break;
+            case PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES:
+                mPreferencesHelper.pullPackageChannelGroupPreferencesStats(data);
+                break;
+        }
+        return StatsManager.PULL_SUCCESS;
+    }
+
     private GroupHelper getGroupHelper() {
         mAutoGroupAtCount =
                 getContext().getResources().getInteger(R.integer.config_autoGroupAtCount);
@@ -2193,7 +2269,7 @@
                 String pkg;
                 synchronized (mNotificationLock) {
                     NotificationRecord r = mNotificationsByKey.get(key);
-                    pkg = r != null && r.sbn != null ? r.sbn.getPackageName() : null;
+                    pkg = r != null && r.getSbn() != null ? r.getSbn().getPackageName() : null;
                 }
                 boolean isAppForeground = pkg != null
                         && mActivityManager.getPackageImportance(pkg) == IMPORTANCE_FOREGROUND;
@@ -2201,7 +2277,7 @@
                     NotificationRecord r = mNotificationsByKey.get(key);
                     if (r == null) return;
                     updateAutobundledSummaryFlags(r.getUser().getIdentifier(),
-                            r.sbn.getPackageName(), needsOngoingFlag, isAppForeground);
+                            r.getSbn().getPackageName(), needsOngoingFlag, isAppForeground);
                 }
             }
         });
@@ -2236,6 +2312,7 @@
             mRoleObserver.init();
             mLauncherAppsService =
                     (LauncherApps) getContext().getSystemService(Context.LAUNCHER_APPS_SERVICE);
+            registerNotificationPreferencesPullers();
         } else if (phase == SystemService.PHASE_THIRD_PARTY_APPS_CAN_START) {
             // This observer will force an update when observe is called, causing us to
             // bind to listener services.
@@ -2250,12 +2327,26 @@
 
     @Override
     public void onUnlockUser(@NonNull UserInfo userInfo) {
-        mHandler.post(() -> mHistoryManager.onUserUnlocked(userInfo.id));
+        mHandler.post(() -> {
+            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "notifHistoryUnlockUser");
+            try {
+                mHistoryManager.onUserUnlocked(userInfo.id);
+            } finally {
+                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+            }
+        });
     }
 
     @Override
     public void onStopUser(@NonNull UserInfo userInfo) {
-        mHandler.post(() -> mHistoryManager.onUserStopped(userInfo.id));
+        mHandler.post(() -> {
+            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "notifHistoryStopUser");
+            try {
+                mHistoryManager.onUserStopped(userInfo.id);
+            } finally {
+                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+            }
+        });
     }
 
     @GuardedBy("mNotificationLock")
@@ -2272,7 +2363,8 @@
         final long updatedSuppressedEffects = calculateSuppressedEffects();
         if (updatedSuppressedEffects == mZenModeHelper.getSuppressedEffects()) return;
         final List<ComponentName> suppressors = getSuppressors();
-        ZenLog.traceEffectsSuppressorChanged(mEffectsSuppressors, suppressors, updatedSuppressedEffects);
+        ZenLog.traceEffectsSuppressorChanged(
+                mEffectsSuppressors, suppressors, updatedSuppressedEffects);
         mEffectsSuppressors = suppressors;
         mZenModeHelper.setSuppressedEffects(updatedSuppressedEffects);
         sendRegisteredOnlyBroadcast(NotificationManager.ACTION_EFFECTS_SUPPRESSOR_CHANGED);
@@ -2478,6 +2570,18 @@
         scheduleInterruptionFilterChanged(interruptionFilter);
     }
 
+    int correctCategory(int requestedCategoryList, int categoryType,
+            int currentCategoryList) {
+        if ((requestedCategoryList & categoryType) != 0
+                && (currentCategoryList & categoryType) == 0) {
+            requestedCategoryList &= ~categoryType;
+        } else if ((requestedCategoryList & categoryType) == 0
+                && (currentCategoryList & categoryType) != 0){
+            requestedCategoryList |= categoryType;
+        }
+        return requestedCategoryList;
+    }
+
     @VisibleForTesting
     INotificationManager getBinderService() {
         return INotificationManager.Stub.asInterface(mService);
@@ -2490,8 +2594,8 @@
     @GuardedBy("mNotificationLock")
     protected void reportSeen(NotificationRecord r) {
         if (!r.isProxied()) {
-            mAppUsageStats.reportEvent(r.sbn.getPackageName(),
-                    getRealUserId(r.sbn.getUserId()),
+            mAppUsageStats.reportEvent(r.getSbn().getPackageName(),
+                    getRealUserId(r.getSbn().getUserId()),
                     UsageEvents.Event.NOTIFICATION_SEEN);
         }
     }
@@ -2566,20 +2670,25 @@
     @GuardedBy("mNotificationLock")
     protected void maybeRecordInterruptionLocked(NotificationRecord r) {
         if (r.isInterruptive() && !r.hasRecordedInterruption()) {
-            mAppUsageStats.reportInterruptiveNotification(r.sbn.getPackageName(),
+            mAppUsageStats.reportInterruptiveNotification(r.getSbn().getPackageName(),
                     r.getChannel().getId(),
-                    getRealUserId(r.sbn.getUserId()));
-            mHistoryManager.addNotification(new HistoricalNotification.Builder()
-                    .setPackage(r.sbn.getPackageName())
-                    .setUid(r.sbn.getUid())
-                    .setChannelId(r.getChannel().getId())
-                    .setChannelName(r.getChannel().getName().toString())
-                    .setPostedTimeMs(System.currentTimeMillis())
-                    .setTitle(getHistoryTitle(r.getNotification()))
-                    .setText(getHistoryText(
-                            r.sbn.getPackageContext(getContext()), r.getNotification()))
-                    .setIcon(r.getNotification().getSmallIcon())
-                    .build());
+                    getRealUserId(r.getSbn().getUserId()));
+            Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "notifHistoryAddItem");
+            try {
+                mHistoryManager.addNotification(new HistoricalNotification.Builder()
+                        .setPackage(r.getSbn().getPackageName())
+                        .setUid(r.getSbn().getUid())
+                        .setChannelId(r.getChannel().getId())
+                        .setChannelName(r.getChannel().getName().toString())
+                        .setPostedTimeMs(System.currentTimeMillis())
+                        .setTitle(getHistoryTitle(r.getNotification()))
+                        .setText(getHistoryText(
+                                r.getSbn().getPackageContext(getContext()), r.getNotification()))
+                        .setIcon(r.getNotification().getSmallIcon())
+                        .build());
+            } finally {
+                Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+            }
             r.setRecordedInterruption(true);
         }
     }
@@ -2624,8 +2733,8 @@
      * @param r notification record
      */
     protected void reportUserInteraction(NotificationRecord r) {
-        mAppUsageStats.reportEvent(r.sbn.getPackageName(),
-                getRealUserId(r.sbn.getUserId()),
+        mAppUsageStats.reportEvent(r.getSbn().getPackageName(),
+                getRealUserId(r.getSbn().getUserId()),
                 UsageEvents.Event.USER_INTERACTION);
     }
 
@@ -2659,18 +2768,24 @@
         @Override
         public void enqueueTextToast(String pkg, IBinder token, CharSequence text, int duration,
                 int displayId, @Nullable ITransientNotificationCallback callback) {
-            enqueueToast(pkg, token, text, null, duration, displayId, callback);
+            enqueueToast(pkg, token, text, null, duration, displayId, callback, false);
         }
 
         @Override
         public void enqueueToast(String pkg, IBinder token, ITransientNotification callback,
                 int duration, int displayId) {
-            enqueueToast(pkg, token, null, callback, duration, displayId, null);
+            enqueueToast(pkg, token, null, callback, duration, displayId, null, true);
+        }
+
+        @Override
+        public void enqueueTextOrCustomToast(String pkg, IBinder token,
+                ITransientNotification callback, int duration, int displayId, boolean isCustom) {
+            enqueueToast(pkg, token, null, callback, duration, displayId, null, isCustom);
         }
 
         private void enqueueToast(String pkg, IBinder token, @Nullable CharSequence text,
                 @Nullable ITransientNotification callback, int duration, int displayId,
-                @Nullable ITransientNotificationCallback textCallback) {
+                @Nullable ITransientNotificationCallback textCallback, boolean isCustom) {
             if (DBG) {
                 Slog.i(TAG, "enqueueToast pkg=" + pkg + " token=" + token
                         + " duration=" + duration + " displayId=" + displayId);
@@ -2708,7 +2823,7 @@
                 return;
             }
 
-            if (callback != null && !appIsForeground && !isSystemToast) {
+            if (callback != null && !appIsForeground && !isSystemToast && isCustom) {
                 boolean block;
                 long id = Binder.clearCallingIdentity();
                 try {
@@ -2727,7 +2842,7 @@
                     // TODO(b/144152069): Remove informative toast
                     mUiHandler.post(() -> Toast.makeText(getContext(),
                             "Background custom toast blocked for package " + pkg + ".\n"
-                                    + "See go/r-toast-block.",
+                                    + "See g.co/dev/toast.",
                             Toast.LENGTH_SHORT).show());
                     Slog.w(TAG, "Blocking custom toast from package " + pkg
                             + " due to package not in the foreground");
@@ -2752,7 +2867,7 @@
                         if (!isSystemToast) {
                             int count = 0;
                             final int N = mToastQueue.size();
-                            for (int i=0; i<N; i++) {
+                            for (int i = 0; i < N; i++) {
                                 final ToastRecord r = mToastQueue.get(i);
                                 if (r.pkg.equals(pkg)) {
                                     count++;
@@ -2792,7 +2907,7 @@
 
             if (pkg == null || token == null) {
                 Slog.e(TAG, "Not cancelling notification. pkg=" + pkg + " token=" + token);
-                return ;
+                return;
             }
 
             synchronized (mToastQueue) {
@@ -2905,14 +3020,14 @@
 
         /**
          * Updates the enabled state for notifications for the given package (and uid).
-         * Additionally, this method marks the app importance as locked by the user, which means
+         * Additionally, this method marks the app importance as locked by the user, which
+         * means
          * that notifications from the app will <b>not</b> be considered for showing a
          * blocking helper.
          *
-         * @param pkg package that owns the notifications to update
-         * @param uid uid of the app providing notifications
+         * @param pkg     package that owns the notifications to update
+         * @param uid     uid of the app providing notifications
          * @param enabled whether notifications should be enabled for the app
-         *
          * @see #setNotificationsEnabledForPackage(String, int, boolean)
          */
         @Override
@@ -3003,6 +3118,12 @@
         }
 
         @Override
+        public void deleteNotificationHistoryItem(String pkg, int uid, long postedTime) {
+            checkCallerIsSystem();
+            mHistoryManager.deleteNotificationHistoryItem(pkg, uid, postedTime);
+        }
+
+        @Override
         public int getPackageImportance(String pkg) {
             checkCallerIsSystemOrSameApp(pkg);
             return mPreferencesHelper.getImportance(pkg, Binder.getCallingUid());
@@ -3187,9 +3308,10 @@
 
         @Override
         public NotificationChannel getNotificationChannelForPackage(String pkg, int uid,
-                String channelId, boolean includeDeleted) {
+                String channelId, String conversationId, boolean includeDeleted) {
             checkCallerIsSystem();
-            return mPreferencesHelper.getNotificationChannel(pkg, uid, channelId, includeDeleted);
+            return mPreferencesHelper.getConversationNotificationChannel(
+                    pkg, uid, channelId, conversationId, true, includeDeleted);
         }
 
         @Override
@@ -3326,6 +3448,27 @@
         }
 
         @Override
+        public ParceledListSlice<ConversationChannelWrapper> getConversationsForPackage(String pkg,
+                int uid) {
+            enforceSystemOrSystemUI("getConversationsForPackage");
+            ArrayList<ConversationChannelWrapper> conversations =
+                    mPreferencesHelper.getConversations(pkg, uid);
+            for (ConversationChannelWrapper conversation : conversations) {
+                LauncherApps.ShortcutQuery query = new LauncherApps.ShortcutQuery()
+                        .setPackage(pkg)
+                        .setQueryFlags(FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED)
+                        .setShortcutIds(Arrays.asList(
+                                conversation.getNotificationChannel().getConversationId()));
+                List<ShortcutInfo> shortcuts = mLauncherAppsService.getShortcuts(
+                        query, UserHandle.of(UserHandle.getUserId(uid)));
+                if (shortcuts != null && !shortcuts.isEmpty()) {
+                    conversation.setShortcutInfo(shortcuts.get(0));
+                }
+            }
+            return new ParceledListSlice<>(conversations);
+        }
+
+        @Override
         public NotificationChannelGroup getPopulatedNotificationChannelGroupForPackage(
                 String pkg, int uid, String groupId, boolean includeDeleted) {
             enforceSystemOrSystemUI("getPopulatedNotificationChannelGroupForPackage");
@@ -3501,7 +3644,7 @@
                     tmp = new StatusBarNotification[mNotificationList.size()];
                     final int N = mNotificationList.size();
                     for (int i=0; i<N; i++) {
-                        tmp[i] = mNotificationList.get(i).sbn;
+                        tmp[i] = mNotificationList.get(i).getSbn();
                     }
                 }
             }
@@ -3533,13 +3676,13 @@
                 final int N = mNotificationList.size();
                 for (int i = 0; i < N; i++) {
                     StatusBarNotification sbn = sanitizeSbn(pkg, userId,
-                            mNotificationList.get(i).sbn);
+                            mNotificationList.get(i).getSbn());
                     if (sbn != null) {
                         map.put(sbn.getKey(), sbn);
                     }
                 }
                 for(NotificationRecord snoozed: mSnoozeHelper.getSnoozed(userId, pkg)) {
-                    StatusBarNotification sbn = sanitizeSbn(pkg, userId, snoozed.sbn);
+                    StatusBarNotification sbn = sanitizeSbn(pkg, userId, snoozed.getSbn());
                     if (sbn != null) {
                         map.put(sbn.getKey(), sbn);
                     }
@@ -3547,7 +3690,7 @@
                 final int M = mEnqueuedNotifications.size();
                 for (int i = 0; i < M; i++) {
                     StatusBarNotification sbn = sanitizeSbn(pkg, userId,
-                            mEnqueuedNotifications.get(i).sbn);
+                            mEnqueuedNotifications.get(i).getSbn());
                     if (sbn != null) {
                         map.put(sbn.getKey(), sbn); // pending update overwrites existing post here
                     }
@@ -3581,7 +3724,8 @@
          */
         @Override
         @RequiresPermission(android.Manifest.permission.ACCESS_NOTIFICATIONS)
-        public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count) {
+        public StatusBarNotification[] getHistoricalNotifications(String callingPkg, int count,
+                boolean includeSnoozed) {
             // enforce() will ensure the calling uid has the correct permission
             getContext().enforceCallingOrSelfPermission(
                     android.Manifest.permission.ACCESS_NOTIFICATIONS,
@@ -3594,7 +3738,7 @@
             if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
                     == AppOpsManager.MODE_ALLOWED) {
                 synchronized (mArchive) {
-                    tmp = mArchive.getArray(count);
+                    tmp = mArchive.getArray(count, includeSnoozed);
                 }
             }
             return tmp;
@@ -3618,7 +3762,12 @@
             if (mAppOps.noteOpNoThrow(AppOpsManager.OP_ACCESS_NOTIFICATIONS, uid, callingPkg)
                     == AppOpsManager.MODE_ALLOWED) {
                 IntArray currentUserIds = mUserProfiles.getCurrentProfileIds();
-                return mHistoryManager.readNotificationHistory(currentUserIds.toArray());
+                Trace.traceBegin(Trace.TRACE_TAG_SYSTEM_SERVER, "notifHistoryReadHistory");
+                try {
+                    return mHistoryManager.readNotificationHistory(currentUserIds.toArray());
+                } finally {
+                    Trace.traceEnd(Trace.TRACE_TAG_SYSTEM_SERVER);
+                }
             }
             return new NotificationHistory();
         }
@@ -3665,15 +3814,15 @@
                         for (int i = 0; i < N; i++) {
                             NotificationRecord r = mNotificationsByKey.get(keys[i]);
                             if (r == null) continue;
-                            final int userId = r.sbn.getUserId();
+                            final int userId = r.getSbn().getUserId();
                             if (userId != info.userid && userId != UserHandle.USER_ALL &&
                                     !mUserProfiles.isCurrentProfile(userId)) {
                                 throw new SecurityException("Disallowed call from listener: "
                                         + info.service);
                             }
                             cancelNotificationFromListenerLocked(info, callingUid, callingPid,
-                                    r.sbn.getPackageName(), r.sbn.getTag(), r.sbn.getId(),
-                                    userId);
+                                    r.getSbn().getPackageName(), r.getSbn().getTag(),
+                                    r.getSbn().getId(), userId);
                         }
                     } else {
                         cancelAllLocked(callingUid, callingPid, info.userid,
@@ -3733,7 +3882,7 @@
                     for (int i = 0; i < n; i++) {
                         NotificationRecord r = mNotificationsByKey.get(keys[i]);
                         if (r == null) continue;
-                        final int userId = r.sbn.getUserId();
+                        final int userId = r.getSbn().getUserId();
                         if (userId != info.userid && userId != UserHandle.USER_ALL
                                 && !mUserProfiles.isCurrentProfile(userId)) {
                             throw new SecurityException("Disallowed call from listener: "
@@ -3883,7 +4032,7 @@
                             ? mNotificationsByKey.get(keys[i])
                             : mNotificationList.get(i);
                     if (r == null) continue;
-                    StatusBarNotification sbn = r.sbn;
+                    StatusBarNotification sbn = r.getSbn();
                     if (!isVisibleToListener(sbn, info)) continue;
                     StatusBarNotification sbnToSend =
                             (trim == TRIM_FULL) ? sbn : sbn.cloneLight();
@@ -3913,7 +4062,7 @@
                 for (int i=0; i < N; i++) {
                     final NotificationRecord r = snoozedRecords.get(i);
                     if (r == null) continue;
-                    StatusBarNotification sbn = r.sbn;
+                    StatusBarNotification sbn = r.getSbn();
                     if (!isVisibleToListener(sbn, info)) continue;
                     StatusBarNotification sbnToSend =
                             (trim == TRIM_FULL) ? sbn : sbn.cloneLight();
@@ -4088,7 +4237,8 @@
             Objects.requireNonNull(packageName, "Package name is null");
             enforceSystemOrSystemUI("removeAutomaticZenRules");
 
-            return mZenModeHelper.removeAutomaticZenRules(packageName, "removeAutomaticZenRules");
+            return mZenModeHelper.removeAutomaticZenRules(packageName,
+                    packageName + "|removeAutomaticZenRules");
         }
 
         @Override
@@ -4403,11 +4553,20 @@
                             policy.priorityCallSenders, policy.priorityMessageSenders,
                             policy.suppressedVisualEffects);
                 }
+                if (applicationInfo.targetSdkVersion < Build.VERSION_CODES.R) {
+                    int priorityCategories = correctCategory(policy.priorityCategories,
+                            Policy.PRIORITY_CATEGORY_CONVERSATIONS,
+                            currPolicy.priorityCategories);
+
+                    policy = new Policy(priorityCategories,
+                            policy.priorityCallSenders, policy.priorityMessageSenders,
+                            policy.suppressedVisualEffects, currPolicy.priorityConversationSenders);
+                }
                 int newVisualEffects = calculateSuppressedVisualEffects(
                             policy, currPolicy, applicationInfo.targetSdkVersion);
                 policy = new Policy(policy.priorityCategories,
                         policy.priorityCallSenders, policy.priorityMessageSenders,
-                        newVisualEffects);
+                        newVisualEffects, policy.priorityConversationSenders);
                 ZenLog.traceSetNotificationPolicy(pkg, applicationInfo.targetSdkVersion, policy);
                 mZenModeHelper.setNotificationPolicy(policy);
             } catch (RemoteException e) {
@@ -4416,6 +4575,8 @@
             }
         }
 
+
+
         @Override
         public List<String> getEnabledNotificationListenerPackages() {
             checkCallerIsSystem();
@@ -4629,8 +4790,8 @@
             Objects.requireNonNull(user);
             verifyPrivilegedListener(token, user, true);
 
-            return mPreferencesHelper.getNotificationChannels(pkg, getUidForPackageAndUser(pkg, user),
-                    false /* includeDeleted */);
+            return mPreferencesHelper.getNotificationChannels(pkg,
+                    getUidForPackageAndUser(pkg, user), false /* includeDeleted */);
         }
 
         @Override
@@ -4822,7 +4983,7 @@
         if (r == null) {
             return;
         }
-        if (r.sbn.getOverrideGroupKey() == null) {
+        if (r.getSbn().getOverrideGroupKey() == null) {
             addAutoGroupAdjustment(r, GroupHelper.AUTOGROUP_KEY);
             EventLogTags.writeNotificationAutogrouped(key);
             mRankingHandler.requestSort();
@@ -4835,7 +4996,7 @@
         if (r == null) {
             return;
         }
-        if (r.sbn.getOverrideGroupKey() != null) {
+        if (r.getSbn().getOverrideGroupKey() != null) {
             addAutoGroupAdjustment(r, null);
             EventLogTags.writeNotificationUnautogrouped(key);
             mRankingHandler.requestSort();
@@ -4845,8 +5006,8 @@
     private void addAutoGroupAdjustment(NotificationRecord r, String overrideGroupKey) {
         Bundle signals = new Bundle();
         signals.putString(Adjustment.KEY_GROUP_KEY, overrideGroupKey);
-        Adjustment adjustment =
-                new Adjustment(r.sbn.getPackageName(), r.getKey(), signals, "", r.sbn.getUserId());
+        Adjustment adjustment = new Adjustment(r.getSbn().getPackageName(), r.getKey(), signals, "",
+                r.getSbn().getUserId());
         r.addAdjustment(adjustment);
     }
 
@@ -4882,7 +5043,7 @@
                 // adjustment will post a summary if needed.
                 return;
             }
-            final StatusBarNotification adjustedSbn = notificationRecord.sbn;
+            final StatusBarNotification adjustedSbn = notificationRecord.getSbn();
             userId = adjustedSbn.getUser().getIdentifier();
             ArrayMap<String, String> summaries = mAutobundledSummaries.get(userId);
             if (summaries == null) {
@@ -4930,7 +5091,8 @@
             }
         }
         if (summaryRecord != null && checkDisqualifyingFeatures(userId, MY_UID,
-                summaryRecord.sbn.getId(), summaryRecord.sbn.getTag(), summaryRecord, true)) {
+                summaryRecord.getSbn().getId(), summaryRecord.getSbn().getTag(), summaryRecord,
+                true)) {
             mHandler.post(new EnqueueNotificationRunnable(userId, summaryRecord, isAppForeground));
         }
     }
@@ -4991,14 +5153,14 @@
             int N = mNotificationList.size();
             for (int i = 0; i < N; i++) {
                 final NotificationRecord nr = mNotificationList.get(i);
-                if (filter.filtered && !filter.matches(nr.sbn)) continue;
+                if (filter.filtered && !filter.matches(nr.getSbn())) continue;
                 nr.dump(proto, NotificationServiceDumpProto.RECORDS, filter.redact,
                         NotificationRecordProto.POSTED);
             }
             N = mEnqueuedNotifications.size();
             for (int i = 0; i < N; i++) {
                 final NotificationRecord nr = mEnqueuedNotifications.get(i);
-                if (filter.filtered && !filter.matches(nr.sbn)) continue;
+                if (filter.filtered && !filter.matches(nr.getSbn())) continue;
                 nr.dump(proto, NotificationServiceDumpProto.RECORDS, filter.redact,
                         NotificationRecordProto.ENQUEUED);
             }
@@ -5006,7 +5168,7 @@
             N = snoozed.size();
             for (int i = 0; i < N; i++) {
                 final NotificationRecord nr = snoozed.get(i);
-                if (filter.filtered && !filter.matches(nr.sbn)) continue;
+                if (filter.filtered && !filter.matches(nr.getSbn())) continue;
                 nr.dump(proto, NotificationServiceDumpProto.RECORDS, filter.redact,
                         NotificationRecordProto.SNOOZED);
             }
@@ -5067,7 +5229,7 @@
                 pw.println("  Notification List:");
                 for (int i = 0; i < N; i++) {
                     final NotificationRecord nr = mNotificationList.get(i);
-                    if (filter.filtered && !filter.matches(nr.sbn)) continue;
+                    if (filter.filtered && !filter.matches(nr.getSbn())) continue;
                     nr.dump(pw, "    ", getContext(), filter.redact);
                 }
                 pw.println("  ");
@@ -5129,10 +5291,10 @@
                     pw.println("  mMaxPackageEnqueueRate=" + mMaxPackageEnqueueRate);
                 }
                 pw.println("  mArchive=" + mArchive.toString());
-                Iterator<StatusBarNotification> iter = mArchive.descendingIterator();
+                Iterator<Pair<StatusBarNotification, Integer>> iter = mArchive.descendingIterator();
                 int j=0;
                 while (iter.hasNext()) {
-                    final StatusBarNotification sbn = iter.next();
+                    final StatusBarNotification sbn = iter.next().first;
                     if (filter != null && !filter.matches(sbn)) continue;
                     pw.println("    " + sbn);
                     if (++j >= 5) {
@@ -5147,7 +5309,7 @@
                         pw.println("  Enqueued Notification List:");
                         for (int i = 0; i < N; i++) {
                             final NotificationRecord nr = mEnqueuedNotifications.get(i);
-                            if (filter.filtered && !filter.matches(nr.sbn)) continue;
+                            if (filter.filtered && !filter.matches(nr.getSbn())) continue;
                             nr.dump(pw, "    ", getContext(), filter.redact);
                         }
                         pw.println("  ");
@@ -5273,7 +5435,7 @@
             if (r == null) {
                 return;
             }
-            StatusBarNotification sbn = r.sbn;
+            StatusBarNotification sbn = r.getSbn();
             // NoMan adds flags FLAG_NO_CLEAR and FLAG_ONGOING_EVENT when it sees
             // FLAG_FOREGROUND_SERVICE. Hence it's not enough to remove
             // FLAG_FOREGROUND_SERVICE, we have to revert to the flags we received
@@ -5304,7 +5466,7 @@
                 // Look for the notification, searching both the posted and enqueued lists.
                 NotificationRecord r = findNotificationLocked(pkg, tag, id, userId);
                 if (r != null) {
-                    if (!Objects.equals(opPkg, r.sbn.getOpPkg())) {
+                    if (!Objects.equals(opPkg, r.getSbn().getOpPkg())) {
                         throw new SecurityException(opPkg + " does not have permission to "
                                 + "cancel a notification they did not post " + tag + " " + id);
                     }
@@ -5352,8 +5514,8 @@
         try {
             fixNotification(notification, pkg, tag, id, userId);
 
-        } catch (NameNotFoundException e) {
-            Slog.e(TAG, "Cannot create a context for sending app", e);
+        } catch (Exception e) {
+            Slog.e(TAG, "Cannot fix notification", e);
             return;
         }
 
@@ -5434,7 +5596,7 @@
         }
 
         if (!checkDisqualifyingFeatures(userId, notificationUid, id, tag, r,
-                r.sbn.getOverrideGroupKey() != null)) {
+                r.getSbn().getOverrideGroupKey() != null)) {
             return;
         }
 
@@ -5578,12 +5740,12 @@
             if (shortcutId != null) {
                 // Must track shortcut based bubbles in case the shortcut is removed
                 HashMap<String, String> packageBubbles = mActiveShortcutBubbles.get(
-                        r.sbn.getPackageName());
+                        r.getSbn().getPackageName());
                 if (packageBubbles == null) {
                     packageBubbles = new HashMap<>();
                 }
                 packageBubbles.put(shortcutId, r.getKey());
-                mActiveShortcutBubbles.put(r.sbn.getPackageName(), packageBubbles);
+                mActiveShortcutBubbles.put(r.getSbn().getPackageName(), packageBubbles);
                 if (!mLauncherAppsCallbackRegistered) {
                     mLauncherAppsService.registerCallback(mLauncherAppsCallback, mHandler);
                     mLauncherAppsCallbackRegistered = true;
@@ -5594,12 +5756,12 @@
             if (shortcutId != null) {
                 // No longer track shortcut
                 HashMap<String, String> packageBubbles = mActiveShortcutBubbles.get(
-                        r.sbn.getPackageName());
+                        r.getSbn().getPackageName());
                 if (packageBubbles != null) {
                     packageBubbles.remove(shortcutId);
                 }
                 if (packageBubbles != null && packageBubbles.isEmpty()) {
-                    mActiveShortcutBubbles.remove(r.sbn.getPackageName());
+                    mActiveShortcutBubbles.remove(r.getSbn().getPackageName());
                 }
                 if (mLauncherAppsCallbackRegistered && mActiveShortcutBubbles.isEmpty()) {
                     mLauncherAppsService.unregisterCallback(mLauncherAppsCallback);
@@ -5780,14 +5942,14 @@
                 ? intent.resolveActivityInfo(context.getPackageManager(), 0)
                 : null;
         if (info == null) {
-            StatsLog.write(StatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED, packageName,
+            FrameworkStatsLog.write(FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED, packageName,
                     BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_MISSING);
             Log.w(TAG, "Unable to send as bubble -- couldn't find activity info for intent: "
                     + intent);
             return false;
         }
         if (!ActivityInfo.isResizeableMode(info.resizeMode)) {
-            StatsLog.write(StatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED, packageName,
+            FrameworkStatsLog.write(FrameworkStatsLog.BUBBLE_DEVELOPER_ERROR_REPORTED, packageName,
                     BUBBLE_DEVELOPER_ERROR_REPORTED__ERROR__ACTIVITY_INFO_NOT_RESIZABLE);
             Log.w(TAG, "Unable to send as bubble -- activity is not resizable for intent: "
                     + intent);
@@ -5845,7 +6007,7 @@
      */
     private boolean checkDisqualifyingFeatures(int userId, int uid, int id, String tag,
             NotificationRecord r, boolean isAutogroup) {
-        final String pkg = r.sbn.getPackageName();
+        final String pkg = r.getSbn().getPackageName();
         final boolean isSystemNotification =
                 isUidSystemOrPhone(uid) || ("android".equals(pkg));
         final boolean isNotificationFromListener = mListeners.isListenerPackage(pkg);
@@ -5855,7 +6017,7 @@
         if (!isSystemNotification && !isNotificationFromListener) {
             synchronized (mNotificationLock) {
                 final int callingUid = Binder.getCallingUid();
-                if (mNotificationsByKey.get(r.sbn.getKey()) == null
+                if (mNotificationsByKey.get(r.getSbn().getKey()) == null
                         && isCallerInstantApp(callingUid, userId)) {
                     // Ephemeral apps have some special constraints for notifications.
                     // They are not allowed to create new notifications however they are allowed to
@@ -5866,7 +6028,7 @@
                 }
 
                 // rate limit updates that aren't completed progress notifications
-                if (mNotificationsByKey.get(r.sbn.getKey()) != null
+                if (mNotificationsByKey.get(r.getSbn().getKey()) != null
                         && !r.getNotification().hasCompletedProgress()
                         && !isAutogroup) {
 
@@ -5876,7 +6038,7 @@
                         final long now = SystemClock.elapsedRealtime();
                         if ((now - mLastOverRateLogTime) > MIN_PACKAGE_OVERRATE_LOG_INTERVAL) {
                             Slog.e(TAG, "Package enqueue rate is " + appEnqueueRate
-                                    + ". Shedding " + r.sbn.getKey() + ". package=" + pkg);
+                                    + ". Shedding " + r.getSbn().getKey() + ". package=" + pkg);
                             mLastOverRateLogTime = now;
                         }
                         return false;
@@ -5925,10 +6087,10 @@
         final int N = mNotificationList.size();
         for (int i = 0; i < N; i++) {
             final NotificationRecord existing = mNotificationList.get(i);
-            if (existing.sbn.getPackageName().equals(pkg)
-                    && existing.sbn.getUserId() == userId) {
-                if (existing.sbn.getId() == excludedId
-                        && TextUtils.equals(existing.sbn.getTag(), excludedTag)) {
+            if (existing.getSbn().getPackageName().equals(pkg)
+                    && existing.getSbn().getUserId() == userId) {
+                if (existing.getSbn().getId() == excludedId
+                        && TextUtils.equals(existing.getSbn().getTag(), excludedTag)) {
                     continue;
                 }
                 count++;
@@ -5937,8 +6099,8 @@
         final int M = mEnqueuedNotifications.size();
         for (int i = 0; i < M; i++) {
             final NotificationRecord existing = mEnqueuedNotifications.get(i);
-            if (existing.sbn.getPackageName().equals(pkg)
-                    && existing.sbn.getUserId() == userId) {
+            if (existing.getSbn().getPackageName().equals(pkg)
+                    && existing.getSbn().getUserId() == userId) {
                 count++;
             }
         }
@@ -5957,8 +6119,8 @@
     }
 
     private boolean isBlocked(NotificationRecord r) {
-        final String pkg = r.sbn.getPackageName();
-        final int callingUid = r.sbn.getUid();
+        final String pkg = r.getSbn().getPackageName();
+        final int callingUid = r.getSbn().getUid();
         return mPreferencesHelper.isGroupBlocked(pkg, callingUid, r.getChannel().getGroup())
                 || mPreferencesHelper.getImportance(pkg, callingUid)
                 == NotificationManager.IMPORTANCE_NONE
@@ -5988,10 +6150,11 @@
 
         @GuardedBy("mNotificationLock")
         void snoozeLocked(NotificationRecord r) {
-            if (r.sbn.isGroup()) {
+            if (r.getSbn().isGroup()) {
                 final List<NotificationRecord> groupNotifications =
                         findCurrentAndSnoozedGroupNotificationsLocked(
-                        r.sbn.getPackageName(), r.sbn.getGroupKey(), r.sbn.getUserId());
+                        r.getSbn().getPackageName(),
+                                r.getSbn().getGroupKey(), r.getSbn().getUserId());
                 if (r.getNotification().isGroupSummary()) {
                     // snooze all children
                     for (int i = 0; i < groupNotifications.size(); i++) {
@@ -6002,7 +6165,7 @@
                 } else {
                     // if there is a valid summary for this group, and we are snoozing the only
                     // child, also snooze the summary
-                    if (mSummaryByGroupKey.containsKey(r.sbn.getGroupKey())) {
+                    if (mSummaryByGroupKey.containsKey(r.getSbn().getGroupKey())) {
                         if (groupNotifications.size() == 2) {
                             // snooze summary and the one child
                             for (int i = 0; i < groupNotifications.size(); i++) {
@@ -6033,7 +6196,7 @@
             cancelNotificationLocked(r, false, REASON_SNOOZED, wasPosted, null);
             updateLightsLocked();
             if (mSnoozeCriterionId != null) {
-                mAssistants.notifyAssistantSnoozedLocked(r.sbn, mSnoozeCriterionId);
+                mAssistants.notifyAssistantSnoozedLocked(r.getSbn(), mSnoozeCriterionId);
                 mSnoozeHelper.snooze(r, mSnoozeCriterionId);
             } else {
                 mSnoozeHelper.snooze(r, mDuration);
@@ -6164,10 +6327,10 @@
                 final Long snoozeAt =
                         mSnoozeHelper.getSnoozeTimeForUnpostedNotification(
                                 r.getUser().getIdentifier(),
-                                r.sbn.getPackageName(), r.sbn.getKey());
+                                r.getSbn().getPackageName(), r.getSbn().getKey());
                 final long currentTime = System.currentTimeMillis();
                 if (snoozeAt.longValue() > currentTime) {
-                    (new SnoozeNotificationRunnable(r.sbn.getKey(),
+                    (new SnoozeNotificationRunnable(r.getSbn().getKey(),
                             snoozeAt.longValue() - currentTime, null)).snoozeLocked(r);
                     return;
                 }
@@ -6175,9 +6338,9 @@
                 final String contextId =
                         mSnoozeHelper.getSnoozeContextForUnpostedNotification(
                                 r.getUser().getIdentifier(),
-                                r.sbn.getPackageName(), r.sbn.getKey());
+                                r.getSbn().getPackageName(), r.getSbn().getKey());
                 if (contextId != null) {
-                    (new SnoozeNotificationRunnable(r.sbn.getKey(),
+                    (new SnoozeNotificationRunnable(r.getSbn().getKey(),
                             0, contextId)).snoozeLocked(r);
                     return;
                 }
@@ -6185,7 +6348,7 @@
                 mEnqueuedNotifications.add(r);
                 scheduleTimeoutLocked(r);
 
-                final StatusBarNotification n = r.sbn;
+                final StatusBarNotification n = r.getSbn();
                 if (DBG) Slog.d(TAG, "EnqueueNotificationRunnable.run for: " + n.getKey());
                 NotificationRecord old = mNotificationsByKey.get(n.getKey());
                 if (old != null) {
@@ -6283,14 +6446,22 @@
                     }
 
                     final boolean isPackageSuspended =
-                            isPackagePausedOrSuspended(r.sbn.getPackageName(), r.getUid());
+                            isPackagePausedOrSuspended(r.getSbn().getPackageName(), r.getUid());
                     r.setHidden(isPackageSuspended);
                     if (isPackageSuspended) {
                         mUsageStats.registerSuspendedByAdmin(r);
                     }
                     NotificationRecord old = mNotificationsByKey.get(key);
-                    final StatusBarNotification n = r.sbn;
+                    final StatusBarNotification n = r.getSbn();
                     final Notification notification = n.getNotification();
+
+                    // Make sure the SBN has an instance ID for statsd logging.
+                    if (old == null || old.getSbn().getInstanceId() == null) {
+                        n.setInstanceId(mNotificationInstanceIdSequence.newInstanceId());
+                    } else {
+                        n.setInstanceId(old.getSbn().getInstanceId());
+                    }
+
                     int index = indexOfNotificationLocked(n.getKey());
                     if (index < 0) {
                         mNotificationList.add(r);
@@ -6328,7 +6499,7 @@
                     }
 
                     if (notification.getSmallIcon() != null) {
-                        StatusBarNotification oldSbn = (old != null) ? old.sbn : null;
+                        StatusBarNotification oldSbn = (old != null) ? old.getSbn() : null;
                         mListeners.notifyPostedLocked(r, old);
                         if ((oldSbn == null || !Objects.equals(oldSbn.getGroup(), n.getGroup()))
                                 && !isCritical(r)) {
@@ -6342,7 +6513,7 @@
                         } else if (oldSbn != null) {
                             final NotificationRecord finalRecord = r;
                             mHandler.post(() -> mGroupHelper.onNotificationUpdated(
-                                    finalRecord.sbn, hasAutoGroupSummaryLocked(n)));
+                                    finalRecord.getSbn(), hasAutoGroupSummaryLocked(n)));
                         }
                     } else {
                         Slog.e(TAG, "Not posting notification without small icon: " + notification);
@@ -6389,7 +6560,7 @@
     @VisibleForTesting
     protected boolean isVisuallyInterruptive(NotificationRecord old, NotificationRecord r) {
         // Ignore summary updates because we don't display most of the information.
-        if (r.sbn.isGroup() && r.sbn.getNotification().isGroupSummary()) {
+        if (r.getSbn().isGroup() && r.getSbn().getNotification().isGroupSummary()) {
             if (DEBUG_INTERRUPTIVENESS) {
                 Slog.v(TAG, "INTERRUPTIVENESS: "
                         +  r.getKey() + " is not interruptive: summary");
@@ -6413,8 +6584,8 @@
             return false;
         }
 
-        Notification oldN = old.sbn.getNotification();
-        Notification newN = r.sbn.getNotification();
+        Notification oldN = old.getSbn().getNotification();
+        Notification newN = r.getSbn().getNotification();
         if (oldN.extras == null || newN.extras == null) {
             if (DEBUG_INTERRUPTIVENESS) {
                 Slog.v(TAG, "INTERRUPTIVENESS: "
@@ -6425,7 +6596,7 @@
 
         // Ignore visual interruptions from foreground services because users
         // consider them one 'session'. Count them for everything else.
-        if ((r.sbn.getNotification().flags & FLAG_FOREGROUND_SERVICE) != 0) {
+        if ((r.getSbn().getNotification().flags & FLAG_FOREGROUND_SERVICE) != 0) {
             if (DEBUG_INTERRUPTIVENESS) {
                 Slog.v(TAG, "INTERRUPTIVENESS: "
                         +  r.getKey() + " is not interruptive: foreground service");
@@ -6539,7 +6710,7 @@
     @GuardedBy("mNotificationLock")
     private void handleGroupedNotificationLocked(NotificationRecord r, NotificationRecord old,
             int callingUid, int callingPid) {
-        StatusBarNotification sbn = r.sbn;
+        StatusBarNotification sbn = r.getSbn();
         Notification n = sbn.getNotification();
         if (n.isGroupSummary() && !sbn.isAppGroup())  {
             // notifications without a group shouldn't be a summary, otherwise autobundling can
@@ -6550,8 +6721,8 @@
         String group = sbn.getGroupKey();
         boolean isSummary = n.isGroupSummary();
 
-        Notification oldN = old != null ? old.sbn.getNotification() : null;
-        String oldGroup = old != null ? old.sbn.getGroupKey() : null;
+        Notification oldN = old != null ? old.getSbn().getNotification() : null;
+        String oldGroup = old != null ? old.getSbn().getGroupKey() : null;
         boolean oldIsSummary = old != null && oldN.isGroupSummary();
 
         if (oldIsSummary) {
@@ -6608,7 +6779,7 @@
         boolean beep = false;
         boolean blink = false;
 
-        final Notification notification = record.sbn.getNotification();
+        final Notification notification = record.getSbn().getNotification();
         final String key = record.getKey();
 
         // Should this notification make noise, vibe, or use the LED?
@@ -6626,7 +6797,7 @@
         // If the notification will appear in the status bar, it should send an accessibility
         // event
         if (!record.isUpdate && record.getImportance() > IMPORTANCE_MIN) {
-            sendAccessibilityEvent(notification, record.sbn.getPackageName());
+            sendAccessibilityEvent(notification, record.getSbn().getPackageName());
             sentAccessibilityEvent = true;
         }
 
@@ -6648,7 +6819,7 @@
                 boolean hasAudibleAlert = hasValidSound || hasValidVibrate;
                 if (hasAudibleAlert && !shouldMuteNotificationLocked(record)) {
                     if (!sentAccessibilityEvent) {
-                        sendAccessibilityEvent(notification, record.sbn.getPackageName());
+                        sendAccessibilityEvent(notification, record.getSbn().getPackageName());
                         sentAccessibilityEvent = true;
                     }
                     if (DBG) Slog.v(TAG, "Interrupting!");
@@ -6703,7 +6874,7 @@
         final int buzzBeepBlink = (buzz ? 1 : 0) | (beep ? 2 : 0) | (blink ? 4 : 0);
         if (buzzBeepBlink > 0) {
             // Ignore summary updates because we don't display most of the information.
-            if (record.sbn.isGroup() && record.sbn.getNotification().isGroupSummary()) {
+            if (record.getSbn().isGroup() && record.getSbn().getNotification().isGroupSummary()) {
                 if (DEBUG_INTERRUPTIVENESS) {
                     Slog.v(TAG, "INTERRUPTIVENESS: "
                             + record.getKey() + " is not interruptive: summary");
@@ -6758,7 +6929,7 @@
             return false;
         }
         // Suppressed because another notification in its group handles alerting
-        if (record.sbn.isGroup() && record.getNotification().suppressAlertingDueToGrouping()) {
+        if (record.getSbn().isGroup() && record.getNotification().suppressAlertingDueToGrouping()) {
             return false;
         }
         // not if in call or the screen's on
@@ -6790,14 +6961,14 @@
         }
 
         // Suppressed because another notification in its group handles alerting
-        if (record.sbn.isGroup()) {
+        if (record.getSbn().isGroup()) {
             if (notification.suppressAlertingDueToGrouping()) {
                 return true;
             }
         }
 
         // Suppressed for being too recently noisy
-        final String pkg = record.sbn.getPackageName();
+        final String pkg = record.getSbn().getPackageName();
         if (mUsageStats.isAlertRateLimited(pkg)) {
             Slog.e(TAG, "Muting recently noisy " + record.getKey());
             return true;
@@ -6838,7 +7009,7 @@
                 if (player != null) {
                     if (DBG) Slog.v(TAG, "Playing sound " + soundUri
                             + " with attributes " + record.getAudioAttributes());
-                    player.playAsync(soundUri, record.sbn.getUser(), looping,
+                    player.playAsync(soundUri, record.getSbn().getUser(), looping,
                             record.getAudioAttributes());
                     return true;
                 }
@@ -6881,15 +7052,16 @@
                     // so need to check the notification still valide for vibrate.
                     synchronized (mNotificationLock) {
                         if (mNotificationsByKey.get(record.getKey()) != null) {
-                            mVibrator.vibrate(record.sbn.getUid(), record.sbn.getOpPkg(),
+                            mVibrator.vibrate(record.getSbn().getUid(), record.getSbn().getOpPkg(),
                                     effect, "Notification (delayed)", record.getAudioAttributes());
                         } else {
-                            Slog.e(TAG, "No vibration for canceled notification : " + record.getKey());
+                            Slog.e(TAG, "No vibration for canceled notification : "
+                                    + record.getKey());
                         }
                     }
                 }).start();
             } else {
-                mVibrator.vibrate(record.sbn.getUid(), record.sbn.getPackageName(),
+                mVibrator.vibrate(record.getSbn().getUid(), record.getSbn().getPackageName(),
                         effect, "Notification", record.getAudioAttributes());
             }
             return true;
@@ -7372,7 +7544,7 @@
         if ((recordInList = findNotificationByListLocked(mNotificationList, r.getKey()))
                 != null) {
             mNotificationList.remove(recordInList);
-            mNotificationsByKey.remove(recordInList.sbn.getKey());
+            mNotificationsByKey.remove(recordInList.getSbn().getKey());
             wasPosted = true;
         }
         while ((recordInList = findNotificationByListLocked(mEnqueuedNotifications, r.getKey()))
@@ -7383,13 +7555,15 @@
     }
 
     @GuardedBy("mNotificationLock")
-    private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete, int reason,
+    private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete,
+            @NotificationListenerService.NotificationCancelReason int reason,
             boolean wasPosted, String listenerName) {
         cancelNotificationLocked(r, sendDelete, reason, -1, -1, wasPosted, listenerName);
     }
 
     @GuardedBy("mNotificationLock")
-    private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete, int reason,
+    private void cancelNotificationLocked(NotificationRecord r, boolean sendDelete,
+            @NotificationListenerService.NotificationCancelReason int reason,
             int rank, int count, boolean wasPosted, String listenerName) {
         final String canceledKey = r.getKey();
 
@@ -7413,7 +7587,7 @@
                 } catch (PendingIntent.CanceledException ex) {
                     // do nothing - there's no relevant way to recover, and
                     //     no reason to let this propagate
-                    Slog.w(TAG, "canceled PendingIntent for " + r.sbn.getPackageName(), ex);
+                    Slog.w(TAG, "canceled PendingIntent for " + r.getSbn().getPackageName(), ex);
                 }
             }
         }
@@ -7429,7 +7603,7 @@
                 mHandler.post(new Runnable() {
                     @Override
                     public void run() {
-                        mGroupHelper.onNotificationRemoved(r.sbn);
+                        mGroupHelper.onNotificationRemoved(r.getSbn());
                     }
                 });
             }
@@ -7485,13 +7659,15 @@
         if (groupSummary != null && groupSummary.getKey().equals(canceledKey)) {
             mSummaryByGroupKey.remove(groupKey);
         }
-        final ArrayMap<String, String> summaries = mAutobundledSummaries.get(r.sbn.getUserId());
-        if (summaries != null && r.sbn.getKey().equals(summaries.get(r.sbn.getPackageName()))) {
-            summaries.remove(r.sbn.getPackageName());
+        final ArrayMap<String, String> summaries =
+                mAutobundledSummaries.get(r.getSbn().getUserId());
+        if (summaries != null && r.getSbn().getKey().equals(
+                summaries.get(r.getSbn().getPackageName()))) {
+            summaries.remove(r.getSbn().getPackageName());
         }
 
         // Save it for users of getHistoricalNotifications()
-        mArchive.record(r.sbn);
+        mArchive.record(r.getSbn(), reason);
 
         final long now = System.currentTimeMillis();
         final LogMaker logMaker = r.getItemLogMaker()
@@ -7505,6 +7681,10 @@
         EventLogTags.writeNotificationCanceled(canceledKey, reason,
                 r.getLifespanMs(now), r.getFreshnessMs(now), r.getExposureMs(now),
                 rank, count, listenerName);
+        if (wasPosted) {
+            mNotificationRecordLogger.logNotificationCancelled(r, reason,
+                    r.getStats().getDismissalSurface());
+        }
     }
 
     @VisibleForTesting
@@ -7547,7 +7727,7 @@
             for (int i = 0; i < newUris.size(); i++) {
                 final Uri uri = newUris.valueAt(i);
                 if (oldUris == null || !oldUris.contains(uri)) {
-                    if (DBG) Slog.d(TAG, key + ": granting " + uri);
+                    Slog.d(TAG, key + ": granting " + uri);
                     grantUriPermission(permissionOwner, uri, newRecord.getUid(), targetPkg,
                             targetUserId);
                 }
@@ -7584,6 +7764,8 @@
                     targetUserId);
         } catch (RemoteException ignored) {
             // Ignored because we're in same process
+        } catch (SecurityException e) {
+            Slog.e(TAG, "Cannot grant uri access; " + sourceUid + " does not own " + uri);
         } finally {
             Binder.restoreCallingIdentity(ident);
         }
@@ -7740,7 +7922,7 @@
             if (!flagChecker.apply(r.getFlags())) {
                 continue;
             }
-            if (pkg != null && !r.sbn.getPackageName().equals(pkg)) {
+            if (pkg != null && !r.getSbn().getPackageName().equals(pkg)) {
                 continue;
             }
             if (channelId != null && !channelId.equals(r.getChannel().getId())) {
@@ -7804,7 +7986,8 @@
 
                     FlagChecker flagChecker = (int flags) -> {
                         int flagsToCheck = FLAG_ONGOING_EVENT | FLAG_NO_CLEAR;
-                        if (REASON_LISTENER_CANCEL_ALL == reason) {
+                        if (REASON_LISTENER_CANCEL_ALL == reason
+                                || REASON_CANCEL_ALL == reason) {
                             flagsToCheck |= FLAG_BUBBLE;
                         }
                         if ((flags & flagsToCheck) != 0) {
@@ -7836,7 +8019,7 @@
             return;
         }
 
-        String pkg = r.sbn.getPackageName();
+        String pkg = r.getSbn().getPackageName();
 
         if (pkg == null) {
             if (DBG) Slog.e(TAG, "No package for group summary: " + r.getKey());
@@ -7853,12 +8036,12 @@
     private void cancelGroupChildrenByListLocked(ArrayList<NotificationRecord> notificationList,
             NotificationRecord parentNotification, int callingUid, int callingPid,
             String listenerName, boolean sendDelete, boolean wasPosted, FlagChecker flagChecker) {
-        final String pkg = parentNotification.sbn.getPackageName();
+        final String pkg = parentNotification.getSbn().getPackageName();
         final int userId = parentNotification.getUserId();
         final int reason = REASON_GROUP_SUMMARY_CANCELED;
         for (int i = notificationList.size() - 1; i >= 0; i--) {
             final NotificationRecord childR = notificationList.get(i);
-            final StatusBarNotification childSbn = childR.sbn;
+            final StatusBarNotification childSbn = childR.getSbn();
             if ((childSbn.isGroup() && !childSbn.getNotification().isGroupSummary()) &&
                     childR.getGroupKey().equals(parentNotification.getGroupKey())
                     && (childR.getFlags() & FLAG_FOREGROUND_SERVICE) == 0
@@ -7936,7 +8119,7 @@
         for (int i = 0; i < len; i++) {
             NotificationRecord r = list.get(i);
             if (notificationMatchesUserId(r, userId) && r.getGroupKey().equals(groupKey)
-                    && r.sbn.getPackageName().equals(pkg)) {
+                    && r.getSbn().getPackageName().equals(pkg)) {
                 records.add(r);
             }
         }
@@ -7977,8 +8160,9 @@
         final int len = list.size();
         for (int i = 0; i < len; i++) {
             NotificationRecord r = list.get(i);
-            if (notificationMatchesUserId(r, userId) && r.sbn.getId() == id &&
-                    TextUtils.equals(r.sbn.getTag(), tag) && r.sbn.getPackageName().equals(pkg)) {
+            if (notificationMatchesUserId(r, userId) && r.getSbn().getId() == id &&
+                    TextUtils.equals(r.getSbn().getTag(), tag)
+                    && r.getSbn().getPackageName().equals(pkg)) {
                 return r;
             }
         }
@@ -7992,8 +8176,9 @@
         final int len = list.size();
         for (int i = 0; i < len; i++) {
             NotificationRecord r = list.get(i);
-            if (notificationMatchesUserId(r, userId) && r.sbn.getId() == id &&
-                    TextUtils.equals(r.sbn.getTag(), tag) && r.sbn.getPackageName().equals(pkg)) {
+            if (notificationMatchesUserId(r, userId) && r.getSbn().getId() == id &&
+                    TextUtils.equals(r.getSbn().getTag(), tag)
+                    && r.getSbn().getPackageName().equals(pkg)) {
                 matching.add(r);
             }
         }
@@ -8031,7 +8216,7 @@
             int numNotifications = mNotificationList.size();
             for (int i = 0; i < numNotifications; i++) {
                 NotificationRecord rec = mNotificationList.get(i);
-                if (pkgList.contains(rec.sbn.getPackageName())) {
+                if (pkgList.contains(rec.getSbn().getPackageName())) {
                     rec.setHidden(true);
                     changedNotifications.add(rec);
                 }
@@ -8049,7 +8234,7 @@
             int numNotifications = mNotificationList.size();
             for (int i = 0; i < numNotifications; i++) {
                 NotificationRecord rec = mNotificationList.get(i);
-                if (pkgList.contains(rec.sbn.getPackageName())) {
+                if (pkgList.contains(rec.getSbn().getPackageName())) {
                     rec.setHidden(false);
                     changedNotifications.add(rec);
                 }
@@ -8248,10 +8433,10 @@
 
         for (int i = 0; i < N; i++) {
             NotificationRecord record = mNotificationList.get(i);
-            if (!isVisibleToListener(record.sbn, info)) {
+            if (!isVisibleToListener(record.getSbn(), info)) {
                 continue;
             }
-            final String key = record.sbn.getKey();
+            final String key = record.getSbn().getKey();
             final NotificationListenerService.Ranking ranking =
                     new NotificationListenerService.Ranking();
             ranking.populate(
@@ -8262,7 +8447,7 @@
                     record.getSuppressedVisualEffects(),
                     record.getImportance(),
                     record.getImportanceExplanation(),
-                    record.sbn.getOverrideGroupKey(),
+                    record.getSbn().getOverrideGroupKey(),
                     record.getChannel(),
                     record.getPeopleOverride(),
                     record.getSnoozeCriteria(),
@@ -8534,7 +8719,7 @@
             for (final ManagedServiceInfo info : NotificationAssistants.this.getServices()) {
                 ArrayList<String> keys = new ArrayList<>(records.size());
                 for (NotificationRecord r : records) {
-                    boolean sbnVisible = isVisibleToListener(r.sbn, info)
+                    boolean sbnVisible = isVisibleToListener(r.getSbn(), info)
                             && info.isSameUser(r.getUserId());
                     if (sbnVisible) {
                         keys.add(r.getKey());
@@ -8622,7 +8807,7 @@
             if (debug) {
                 Slog.v(TAG, "onNotificationEnqueuedLocked() called with: r = [" + r + "]");
             }
-            final StatusBarNotification sbn = r.sbn;
+            final StatusBarNotification sbn = r.getSbn();
             notifyAssistantLocked(
                     sbn,
                     true /* sameUserOnly */,
@@ -8961,59 +9146,64 @@
         @GuardedBy("mNotificationLock")
         private void notifyPostedLocked(NotificationRecord r, NotificationRecord old,
                 boolean notifyAllListeners) {
-            // Lazily initialized snapshots of the notification.
-            StatusBarNotification sbn = r.sbn;
-            StatusBarNotification oldSbn = (old != null) ? old.sbn : null;
-            TrimCache trimCache = new TrimCache(sbn);
+            try {
+                // Lazily initialized snapshots of the notification.
+                StatusBarNotification sbn = r.getSbn();
+                StatusBarNotification oldSbn = (old != null) ? old.getSbn() : null;
+                TrimCache trimCache = new TrimCache(sbn);
 
-            for (final ManagedServiceInfo info : getServices()) {
-                boolean sbnVisible = isVisibleToListener(sbn, info);
-                boolean oldSbnVisible = oldSbn != null ? isVisibleToListener(oldSbn, info) : false;
-                // This notification hasn't been and still isn't visible -> ignore.
-                if (!oldSbnVisible && !sbnVisible) {
-                    continue;
-                }
-                // If the notification is hidden, don't notifyPosted listeners targeting < P.
-                // Instead, those listeners will receive notifyPosted when the notification is
-                // unhidden.
-                if (r.isHidden() && info.targetSdkVersion < Build.VERSION_CODES.P) {
-                    continue;
-                }
+                for (final ManagedServiceInfo info : getServices()) {
+                    boolean sbnVisible = isVisibleToListener(sbn, info);
+                    boolean oldSbnVisible = oldSbn != null ? isVisibleToListener(oldSbn, info)
+                            : false;
+                    // This notification hasn't been and still isn't visible -> ignore.
+                    if (!oldSbnVisible && !sbnVisible) {
+                        continue;
+                    }
+                    // If the notification is hidden, don't notifyPosted listeners targeting < P.
+                    // Instead, those listeners will receive notifyPosted when the notification is
+                    // unhidden.
+                    if (r.isHidden() && info.targetSdkVersion < Build.VERSION_CODES.P) {
+                        continue;
+                    }
 
-                // If we shouldn't notify all listeners, this means the hidden state of
-                // a notification was changed.  Don't notifyPosted listeners targeting >= P.
-                // Instead, those listeners will receive notifyRankingUpdate.
-                if (!notifyAllListeners && info.targetSdkVersion >= Build.VERSION_CODES.P) {
-                    continue;
-                }
+                    // If we shouldn't notify all listeners, this means the hidden state of
+                    // a notification was changed.  Don't notifyPosted listeners targeting >= P.
+                    // Instead, those listeners will receive notifyRankingUpdate.
+                    if (!notifyAllListeners && info.targetSdkVersion >= Build.VERSION_CODES.P) {
+                        continue;
+                    }
 
-                final NotificationRankingUpdate update = makeRankingUpdateLocked(info);
+                    final NotificationRankingUpdate update = makeRankingUpdateLocked(info);
 
-                // This notification became invisible -> remove the old one.
-                if (oldSbnVisible && !sbnVisible) {
-                    final StatusBarNotification oldSbnLightClone = oldSbn.cloneLight();
+                    // This notification became invisible -> remove the old one.
+                    if (oldSbnVisible && !sbnVisible) {
+                        final StatusBarNotification oldSbnLightClone = oldSbn.cloneLight();
+                        mHandler.post(new Runnable() {
+                            @Override
+                            public void run() {
+                                notifyRemoved(
+                                        info, oldSbnLightClone, update, null, REASON_USER_STOPPED);
+                            }
+                        });
+                        continue;
+                    }
+
+                    // Grant access before listener is notified
+                    final int targetUserId = (info.userid == UserHandle.USER_ALL)
+                            ? UserHandle.USER_SYSTEM : info.userid;
+                    updateUriPermissions(r, old, info.component.getPackageName(), targetUserId);
+
+                    final StatusBarNotification sbnToPost = trimCache.ForListener(info);
                     mHandler.post(new Runnable() {
                         @Override
                         public void run() {
-                            notifyRemoved(
-                                    info, oldSbnLightClone, update, null, REASON_USER_STOPPED);
+                            notifyPosted(info, sbnToPost, update);
                         }
                     });
-                    continue;
                 }
-
-                // Grant access before listener is notified
-                final int targetUserId = (info.userid == UserHandle.USER_ALL)
-                        ? UserHandle.USER_SYSTEM : info.userid;
-                updateUriPermissions(r, old, info.component.getPackageName(), targetUserId);
-
-                final StatusBarNotification sbnToPost = trimCache.ForListener(info);
-                mHandler.post(new Runnable() {
-                    @Override
-                    public void run() {
-                        notifyPosted(info, sbnToPost, update);
-                    }
-                });
+            } catch (Exception e) {
+                Slog.e(TAG, "Could not notify listeners for " + r.getKey(), e);
             }
         }
 
@@ -9023,7 +9213,7 @@
         @GuardedBy("mNotificationLock")
         public void notifyRemovedLocked(NotificationRecord r, int reason,
                 NotificationStats notificationStats) {
-            final StatusBarNotification sbn = r.sbn;
+            final StatusBarNotification sbn = r.getSbn();
 
             // make a copy in case changes are made to the underlying Notification object
             // NOTE: this copy is lightweight: it doesn't include heavyweight parts of the
@@ -9087,7 +9277,7 @@
                 if (isHiddenRankingUpdate && serviceInfo.targetSdkVersion >=
                         Build.VERSION_CODES.P) {
                     for (NotificationRecord rec : changedHiddenNotifications) {
-                        if (isVisibleToListener(rec.sbn, serviceInfo)) {
+                        if (isVisibleToListener(rec.getSbn(), serviceInfo)) {
                             notifyThisListener = true;
                             break;
                         }
@@ -9194,7 +9384,7 @@
                 }
 
                 BackgroundThread.getHandler().post(() -> {
-                    if (hasCompanionDevice(serviceInfo)) {
+                    if (serviceInfo.isSystem || hasCompanionDevice(serviceInfo)) {
                         notifyNotificationChannelChanged(
                                 serviceInfo, pkg, user, channel, modificationType);
                     }
@@ -9214,7 +9404,7 @@
                 }
 
                 BackgroundThread.getHandler().post(() -> {
-                    if (hasCompanionDevice(serviceInfo)) {
+                    if (serviceInfo.isSystem || hasCompanionDevice(serviceInfo)) {
                         notifyNotificationChannelGroupChanged(
                                 serviceInfo, pkg, user, group, modificationType);
                     }
diff --git a/services/core/java/com/android/server/notification/NotificationRecord.java b/services/core/java/com/android/server/notification/NotificationRecord.java
index 660d574..4785da9 100644
--- a/services/core/java/com/android/server/notification/NotificationRecord.java
+++ b/services/core/java/com/android/server/notification/NotificationRecord.java
@@ -91,7 +91,7 @@
     static final boolean DBG = Log.isLoggable(TAG, Log.DEBUG);
     // the period after which a notification is updated where it can make sound
     private static final int MAX_SOUND_DELAY_MS = 2000;
-    final StatusBarNotification sbn;
+    private final StatusBarNotification sbn;
     IActivityManager mAm;
     UriGrantsManagerInternal mUgmInternal;
     final int mTargetSdkVersion;
@@ -229,7 +229,7 @@
     }
 
     private Uri calculateSound() {
-        final Notification n = sbn.getNotification();
+        final Notification n = getSbn().getNotification();
 
         // No notification sounds on tv
         if (mContext.getPackageManager().hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
@@ -265,7 +265,7 @@
         if (mPreChannelsNotification
                 && (getChannel().getUserLockedFields()
                 & NotificationChannel.USER_LOCKED_LIGHTS) == 0) {
-            final Notification notification = sbn.getNotification();
+            final Notification notification = getSbn().getNotification();
             if ((notification.flags & Notification.FLAG_SHOW_LIGHTS) != 0) {
                 light = new Light(notification.ledARGB, notification.ledOnMS,
                         notification.ledOffMS);
@@ -296,7 +296,7 @@
         if (mPreChannelsNotification
                 && (getChannel().getUserLockedFields()
                 & NotificationChannel.USER_LOCKED_VIBRATION) == 0) {
-            final Notification notification = sbn.getNotification();
+            final Notification notification = getSbn().getNotification();
             final boolean useDefaultVibrate =
                     (notification.defaults & Notification.DEFAULT_VIBRATE) != 0;
             if (useDefaultVibrate) {
@@ -309,7 +309,7 @@
     }
 
     private AudioAttributes calculateAttributes() {
-        final Notification n = sbn.getNotification();
+        final Notification n = getSbn().getNotification();
         AudioAttributes attributes = getChannel().getAudioAttributes();
         if (attributes == null) {
             attributes = Notification.AUDIO_ATTRIBUTES_DEFAULT;
@@ -335,7 +335,7 @@
     }
 
     private int calculateInitialImportance() {
-        final Notification n = sbn.getNotification();
+        final Notification n = getSbn().getNotification();
         int importance = getChannel().getImportance();  // Post-channels notifications use this
         mInitialImportanceExplanationCode = getChannel().hasUserSetImportance()
                 ? MetricsEvent.IMPORTANCE_EXPLANATION_USER
@@ -406,31 +406,31 @@
         mRankingTimeMs = calculateRankingTimeMs(previous.getRankingTimeMs());
         mCreationTimeMs = previous.mCreationTimeMs;
         mVisibleSinceMs = previous.mVisibleSinceMs;
-        if (previous.sbn.getOverrideGroupKey() != null && !sbn.isAppGroup()) {
-            sbn.setOverrideGroupKey(previous.sbn.getOverrideGroupKey());
+        if (previous.getSbn().getOverrideGroupKey() != null && !getSbn().isAppGroup()) {
+            getSbn().setOverrideGroupKey(previous.getSbn().getOverrideGroupKey());
         }
         // Don't copy importance information or mGlobalSortKey, recompute them.
     }
 
-    public Notification getNotification() { return sbn.getNotification(); }
-    public int getFlags() { return sbn.getNotification().flags; }
-    public UserHandle getUser() { return sbn.getUser(); }
-    public String getKey() { return sbn.getKey(); }
+    public Notification getNotification() { return getSbn().getNotification(); }
+    public int getFlags() { return getSbn().getNotification().flags; }
+    public UserHandle getUser() { return getSbn().getUser(); }
+    public String getKey() { return getSbn().getKey(); }
     /** @deprecated Use {@link #getUser()} instead. */
-    public int getUserId() { return sbn.getUserId(); }
-    public int getUid() { return sbn.getUid(); }
+    public int getUserId() { return getSbn().getUserId(); }
+    public int getUid() { return getSbn().getUid(); }
 
     void dump(ProtoOutputStream proto, long fieldId, boolean redact, int state) {
         final long token = proto.start(fieldId);
 
-        proto.write(NotificationRecordProto.KEY, sbn.getKey());
+        proto.write(NotificationRecordProto.KEY, getSbn().getKey());
         proto.write(NotificationRecordProto.STATE, state);
         if (getChannel() != null) {
             proto.write(NotificationRecordProto.CHANNEL_ID, getChannel().getId());
         }
         proto.write(NotificationRecordProto.CAN_SHOW_LIGHT, getLight() != null);
         proto.write(NotificationRecordProto.CAN_VIBRATE, getVibration() != null);
-        proto.write(NotificationRecordProto.FLAGS, sbn.getNotification().flags);
+        proto.write(NotificationRecordProto.FLAGS, getSbn().getNotification().flags);
         proto.write(NotificationRecordProto.GROUP_KEY, getGroupKey());
         proto.write(NotificationRecordProto.IMPORTANCE, getImportance());
         if (getSound() != null) {
@@ -439,8 +439,8 @@
         if (getAudioAttributes() != null) {
             getAudioAttributes().dumpDebug(proto, NotificationRecordProto.AUDIO_ATTRIBUTES);
         }
-        proto.write(NotificationRecordProto.PACKAGE, sbn.getPackageName());
-        proto.write(NotificationRecordProto.DELEGATE_PACKAGE, sbn.getOpPkg());
+        proto.write(NotificationRecordProto.PACKAGE, getSbn().getPackageName());
+        proto.write(NotificationRecordProto.DELEGATE_PACKAGE, getSbn().getOpPkg());
 
         proto.end(token);
     }
@@ -452,15 +452,15 @@
     }
 
     void dump(PrintWriter pw, String prefix, Context baseContext, boolean redact) {
-        final Notification notification = sbn.getNotification();
+        final Notification notification = getSbn().getNotification();
         pw.println(prefix + this);
         prefix = prefix + "  ";
-        pw.println(prefix + "uid=" + sbn.getUid() + " userId=" + sbn.getUserId());
-        pw.println(prefix + "opPkg=" + sbn.getOpPkg());
+        pw.println(prefix + "uid=" + getSbn().getUid() + " userId=" + getSbn().getUserId());
+        pw.println(prefix + "opPkg=" + getSbn().getOpPkg());
         pw.println(prefix + "icon=" + notification.getSmallIcon());
         pw.println(prefix + "flags=0x" + Integer.toHexString(notification.flags));
         pw.println(prefix + "pri=" + notification.priority);
-        pw.println(prefix + "key=" + sbn.getKey());
+        pw.println(prefix + "key=" + getSbn().getKey());
         pw.println(prefix + "seen=" + mStats.hasSeen());
         pw.println(prefix + "groupKey=" + getGroupKey());
         pw.println(prefix + "fullscreenIntent=" + notification.fullScreenIntent);
@@ -594,9 +594,9 @@
                 "NotificationRecord(0x%08x: pkg=%s user=%s id=%d tag=%s importance=%d key=%s" +
                         ": %s)",
                 System.identityHashCode(this),
-                this.sbn.getPackageName(), this.sbn.getUser(), this.sbn.getId(),
-                this.sbn.getTag(), this.mImportance, this.sbn.getKey(),
-                this.sbn.getNotification());
+                this.getSbn().getPackageName(), this.getSbn().getUser(), this.getSbn().getId(),
+                this.getSbn().getTag(), this.mImportance, this.getSbn().getKey(),
+                this.getSbn().getNotification());
     }
 
     public boolean hasAdjustment(String key) {
@@ -936,7 +936,7 @@
     private long calculateRankingTimeMs(long previousRankingTimeMs) {
         Notification n = getNotification();
         // Take developer provided 'when', unless it's in the future.
-        if (n.when != 0 && n.when <= sbn.getPostTime()) {
+        if (n.when != 0 && n.when <= getSbn().getPostTime()) {
             return n.when;
         }
         // If we've ranked a previous instance with a timestamp, inherit it. This case is
@@ -944,7 +944,7 @@
         if (previousRankingTimeMs > 0) {
             return previousRankingTimeMs;
         }
-        return sbn.getPostTime();
+        return getSbn().getPostTime();
     }
 
     public void setGlobalSortKey(String globalSortKey) {
@@ -977,11 +977,11 @@
     }
 
     public String getGroupKey() {
-        return sbn.getGroupKey();
+        return getSbn().getGroupKey();
     }
 
     public void setOverrideGroupKey(String overrideGroupKey) {
-        sbn.setOverrideGroupKey(overrideGroupKey);
+        getSbn().setOverrideGroupKey(overrideGroupKey);
     }
 
     public NotificationChannel getChannel() {
@@ -1202,7 +1202,7 @@
      * Returns whether this notification was posted by a secondary app
      */
     public boolean isProxied() {
-        return !Objects.equals(sbn.getPackageName(), sbn.getOpPkg());
+        return !Objects.equals(getSbn().getPackageName(), getSbn().getOpPkg());
     }
 
     /**
@@ -1245,7 +1245,7 @@
         if (uri == null || !ContentResolver.SCHEME_CONTENT.equals(uri.getScheme())) return;
 
         // We can't grant Uri permissions from system
-        final int sourceUid = sbn.getUid();
+        final int sourceUid = getSbn().getUid();
         if (sourceUid == android.os.Process.SYSTEM_UID) return;
 
         final long ident = Binder.clearCallingIdentity();
@@ -1274,7 +1274,7 @@
     }
 
     public LogMaker getLogMaker(long now) {
-        LogMaker lm = sbn.getLogMaker()
+        LogMaker lm = getSbn().getLogMaker()
                 .addTaggedData(MetricsEvent.FIELD_NOTIFICATION_CHANNEL_IMPORTANCE, mImportance)
                 .addTaggedData(MetricsEvent.NOTIFICATION_SINCE_CREATE_MILLIS, getLifespanMs(now))
                 .addTaggedData(MetricsEvent.NOTIFICATION_SINCE_UPDATE_MILLIS, getFreshnessMs(now))
@@ -1351,6 +1351,10 @@
         return true;
     }
 
+    StatusBarNotification getSbn() {
+        return sbn;
+    }
+
     @VisibleForTesting
     static final class Light {
         public final int color;
diff --git a/services/core/java/com/android/server/notification/NotificationRecordLogger.java b/services/core/java/com/android/server/notification/NotificationRecordLogger.java
index 03929e8..2f78542 100644
--- a/services/core/java/com/android/server/notification/NotificationRecordLogger.java
+++ b/services/core/java/com/android/server/notification/NotificationRecordLogger.java
@@ -16,11 +16,18 @@
 
 package com.android.server.notification;
 
+import static android.service.notification.NotificationListenerService.REASON_CANCEL;
+import static android.service.notification.NotificationListenerService.REASON_CLICK;
+import static android.service.notification.NotificationListenerService.REASON_TIMEOUT;
+
 import android.annotation.Nullable;
 import android.app.Notification;
 import android.app.Person;
 import android.os.Bundle;
+import android.service.notification.NotificationListenerService;
+import android.service.notification.NotificationStats;
 
+import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.UiEvent;
 import com.android.internal.logging.UiEventLogger;
 
@@ -44,22 +51,144 @@
             int position, int buzzBeepBlink);
 
     /**
+     * Logs a notification cancel / dismiss event using UiEventReported (event ids from the
+     * NotificationCancelledEvents enum).
+     * @param r The NotificationRecord. If null, no action is taken.
+     * @param reason The reason the notification was canceled.
+     * @param dismissalSurface The surface the notification was dismissed from.
+     */
+    void logNotificationCancelled(@Nullable NotificationRecord r,
+            @NotificationListenerService.NotificationCancelReason int reason,
+            @NotificationStats.DismissalSurface int dismissalSurface);
+
+    /**
      * The UiEvent enums that this class can log.
      */
-    enum NotificationReportedEvents implements UiEventLogger.UiEventEnum {
-        INVALID(0),
+    enum NotificationReportedEvent implements UiEventLogger.UiEventEnum {
         @UiEvent(doc = "New notification enqueued to post")
         NOTIFICATION_POSTED(162),
-        @UiEvent(doc = "Notification substantially updated")
+        @UiEvent(doc = "Notification substantially updated, or alerted again.")
         NOTIFICATION_UPDATED(163);
 
         private final int mId;
-        NotificationReportedEvents(int id) {
+        NotificationReportedEvent(int id) {
             mId = id;
         }
         @Override public int getId() {
             return mId;
         }
+
+        public static NotificationReportedEvent fromRecordPair(NotificationRecordPair p) {
+            return (p.old != null) ? NotificationReportedEvent.NOTIFICATION_UPDATED :
+                            NotificationReportedEvent.NOTIFICATION_POSTED;
+        }
+    }
+
+    enum NotificationCancelledEvent implements UiEventLogger.UiEventEnum {
+        INVALID(0),
+        @UiEvent(doc = "Notification was canceled due to a notification click.")
+        NOTIFICATION_CANCEL_CLICK(164),
+        @UiEvent(doc = "Notification was canceled due to a user dismissal, surface not specified.")
+        NOTIFICATION_CANCEL_USER_OTHER(165),
+        @UiEvent(doc = "Notification was canceled due to a user dismiss-all (from the notification"
+                + " shade).")
+        NOTIFICATION_CANCEL_USER_CANCEL_ALL(166),
+        @UiEvent(doc = "Notification was canceled due to an inflation error.")
+        NOTIFICATION_CANCEL_ERROR(167),
+        @UiEvent(doc = "Notification was canceled by the package manager modifying the package.")
+        NOTIFICATION_CANCEL_PACKAGE_CHANGED(168),
+        @UiEvent(doc = "Notification was canceled by the owning user context being stopped.")
+        NOTIFICATION_CANCEL_USER_STOPPED(169),
+        @UiEvent(doc = "Notification was canceled by the user banning the package.")
+        NOTIFICATION_CANCEL_PACKAGE_BANNED(170),
+        @UiEvent(doc = "Notification was canceled by the app canceling this specific notification.")
+        NOTIFICATION_CANCEL_APP_CANCEL(171),
+        @UiEvent(doc = "Notification was canceled by the app cancelling all its notifications.")
+        NOTIFICATION_CANCEL_APP_CANCEL_ALL(172),
+        @UiEvent(doc = "Notification was canceled by a listener reporting a user dismissal.")
+        NOTIFICATION_CANCEL_LISTENER_CANCEL(173),
+        @UiEvent(doc = "Notification was canceled by a listener reporting a user dismiss all.")
+        NOTIFICATION_CANCEL_LISTENER_CANCEL_ALL(174),
+        @UiEvent(doc = "Notification was canceled because it was a member of a canceled group.")
+        NOTIFICATION_CANCEL_GROUP_SUMMARY_CANCELED(175),
+        @UiEvent(doc = "Notification was canceled because it was an invisible member of a group.")
+        NOTIFICATION_CANCEL_GROUP_OPTIMIZATION(176),
+        @UiEvent(doc = "Notification was canceled by the device administrator suspending the "
+                + "package.")
+        NOTIFICATION_CANCEL_PACKAGE_SUSPENDED(177),
+        @UiEvent(doc = "Notification was canceled by the owning managed profile being turned off.")
+        NOTIFICATION_CANCEL_PROFILE_TURNED_OFF(178),
+        @UiEvent(doc = "Autobundled summary notification was canceled because its group was "
+                + "unbundled")
+        NOTIFICATION_CANCEL_UNAUTOBUNDLED(179),
+        @UiEvent(doc = "Notification was canceled by the user banning the channel.")
+        NOTIFICATION_CANCEL_CHANNEL_BANNED(180),
+        @UiEvent(doc = "Notification was snoozed.")
+        NOTIFICATION_CANCEL_SNOOZED(181),
+        @UiEvent(doc = "Notification was canceled due to timeout")
+        NOTIFICATION_CANCEL_TIMEOUT(182),
+        // Values 183-189 reserved for future system dismissal reasons
+        @UiEvent(doc = "Notification was canceled due to user dismissal of a peeking notification.")
+        NOTIFICATION_CANCEL_USER_PEEK(190),
+        @UiEvent(doc = "Notification was canceled due to user dismissal from the always-on display")
+        NOTIFICATION_CANCEL_USER_AOD(191),
+        @UiEvent(doc = "Notification was canceled due to user dismissal from the notification"
+                + " shade.")
+        NOTIFICATION_CANCEL_USER_SHADE(192),
+        @UiEvent(doc = "Notification was canceled due to user dismissal from the lockscreen")
+        NOTIFICATION_CANCEL_USER_LOCKSCREEN(193);
+
+        private final int mId;
+        NotificationCancelledEvent(int id) {
+            mId = id;
+        }
+        @Override public int getId() {
+            return mId;
+        }
+        public static NotificationCancelledEvent fromCancelReason(
+                @NotificationListenerService.NotificationCancelReason int reason,
+                @NotificationStats.DismissalSurface int surface) {
+            // Shouldn't be possible to get a non-dismissed notification here.
+            if (surface == NotificationStats.DISMISSAL_NOT_DISMISSED) {
+                if (NotificationManagerService.DBG) {
+                    throw new IllegalArgumentException("Unexpected surface " + surface);
+                }
+                return INVALID;
+            }
+            // Most cancel reasons do not have a meaningful surface. Reason codes map directly
+            // to NotificationCancelledEvent codes.
+            if (surface == NotificationStats.DISMISSAL_OTHER) {
+                if ((REASON_CLICK <= reason) && (reason <= REASON_TIMEOUT)) {
+                    return NotificationCancelledEvent.values()[reason];
+                }
+                if (NotificationManagerService.DBG) {
+                    throw new IllegalArgumentException("Unexpected cancel reason " + reason);
+                }
+                return INVALID;
+            }
+            // User cancels have a meaningful surface, which we differentiate by. See b/149038335
+            // for caveats.
+            if (reason != REASON_CANCEL) {
+                if (NotificationManagerService.DBG) {
+                    throw new IllegalArgumentException("Unexpected cancel with surface " + reason);
+                }
+                return INVALID;
+            }
+            switch (surface) {
+                case NotificationStats.DISMISSAL_PEEK:
+                    return NOTIFICATION_CANCEL_USER_PEEK;
+                case NotificationStats.DISMISSAL_AOD:
+                    return NOTIFICATION_CANCEL_USER_AOD;
+                case NotificationStats.DISMISSAL_SHADE:
+                    return NOTIFICATION_CANCEL_USER_SHADE;
+                default:
+                    if (NotificationManagerService.DBG) {
+                        throw new IllegalArgumentException("Unexpected surface for user-dismiss "
+                                + reason);
+                    }
+                    return INVALID;
+            }
+        }
     }
 
     /**
@@ -88,25 +217,21 @@
                 return true;
             }
 
-            return !(Objects.equals(r.sbn.getChannelIdLogTag(), old.sbn.getChannelIdLogTag())
-                    && Objects.equals(r.sbn.getGroupLogTag(), old.sbn.getGroupLogTag())
-                    && (r.sbn.getNotification().isGroupSummary()
-                        == old.sbn.getNotification().isGroupSummary())
-                    && Objects.equals(r.sbn.getNotification().category,
-                        old.sbn.getNotification().category)
+            return !(Objects.equals(r.getSbn().getChannelIdLogTag(),
+                        old.getSbn().getChannelIdLogTag())
+                    && Objects.equals(r.getSbn().getGroupLogTag(), old.getSbn().getGroupLogTag())
+                    && (r.getSbn().getNotification().isGroupSummary()
+                        == old.getSbn().getNotification().isGroupSummary())
+                    && Objects.equals(r.getSbn().getNotification().category,
+                        old.getSbn().getNotification().category)
                     && (r.getImportance() == old.getImportance()));
         }
 
-        NotificationReportedEvents getUiEvent() {
-            return (old != null) ? NotificationReportedEvents.NOTIFICATION_UPDATED :
-                    NotificationReportedEvents.NOTIFICATION_POSTED;
-        }
-
         /**
          * @return hash code for the notification style class, or 0 if none exists.
          */
         public int getStyle() {
-            return getStyle(r.sbn.getNotification().extras);
+            return getStyle(r.getSbn().getNotification().extras);
         }
 
         private int getStyle(@Nullable Bundle extras) {
@@ -120,7 +245,7 @@
         }
 
         int getNumPeople() {
-            return getNumPeople(r.sbn.getNotification().extras);
+            return getNumPeople(r.getSbn().getNotification().extras);
         }
 
         private int getNumPeople(@Nullable Bundle extras) {
@@ -138,5 +263,43 @@
             String assistant = r.getAdjustmentIssuer();
             return (assistant == null) ? 0 : assistant.hashCode();
         }
+
+        int getInstanceId() {
+            return (r.getSbn().getInstanceId() == null ? 0 : r.getSbn().getInstanceId().getId());
+        }
+
+        /**
+         * @return Small hash of the notification ID, and tag (if present).
+         */
+        int getNotificationIdHash() {
+            return smallHash(Objects.hashCode(r.getSbn().getTag()) ^ r.getSbn().getId());
+        }
+
+        /**
+         * @return Small hash of the channel ID, if present, or 0 otherwise.
+         */
+        int getChannelIdHash() {
+            return smallHash(Objects.hashCode(r.getSbn().getNotification().getChannelId()));
+        }
+
+        /**
+         * @return Small hash of the group ID, respecting group override if present. 0 otherwise.
+         */
+        int getGroupIdHash() {
+            return smallHash(Objects.hashCode(r.getSbn().getGroup()));
+        }
+
+        // "Small" hashes will be in the range [0, MAX_HASH).
+        static final int MAX_HASH = (1 << 13);
+
+        /**
+         * Maps in to the range [0, MAX_HASH), keeping similar values distinct.
+         * @param in An arbitrary integer.
+         * @return in mod MAX_HASH, signs chosen to stay in the range [0, MAX_HASH).
+         */
+        @VisibleForTesting
+        static int smallHash(int in) {
+            return Math.floorMod(in, MAX_HASH);
+        }
     }
 }
diff --git a/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java b/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java
index d637ad5..bb23d1e 100644
--- a/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java
+++ b/services/core/java/com/android/server/notification/NotificationRecordLoggerImpl.java
@@ -16,7 +16,9 @@
 
 package com.android.server.notification;
 
-import android.util.StatsLog;
+import com.android.internal.logging.UiEventLogger;
+import com.android.internal.logging.UiEventLoggerImpl;
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Standard implementation of NotificationRecordLogger interface.
@@ -24,6 +26,8 @@
  */
 public class NotificationRecordLoggerImpl implements NotificationRecordLogger {
 
+    UiEventLogger mUiEventLogger = new UiEventLoggerImpl();
+
     @Override
     public void logNotificationReported(NotificationRecord r, NotificationRecord old,
             int position, int buzzBeepBlink) {
@@ -31,39 +35,39 @@
         if (!p.shouldLog(buzzBeepBlink)) {
             return;
         }
-        StatsLog.write(StatsLog.NOTIFICATION_REPORTED,
-                /* int32 event_id = 1 */ p.getUiEvent().getId(),
+        FrameworkStatsLog.write(FrameworkStatsLog.NOTIFICATION_REPORTED,
+                /* int32 event_id = 1 */ NotificationReportedEvent.fromRecordPair(p).getId(),
                 /* int32 uid = 2 */ r.getUid(),
-                /* string package_name = 3 */ r.sbn.getPackageName(),
-                /* int32 instance_id = 4 */ 0,  // TODO generate and fill instance ids
-                /* int32 notification_id = 5 */ r.sbn.getId(),
-                /* string notification_tag = 6 */ r.sbn.getTag(),
-                /* string channel_id = 7 */ r.sbn.getChannelIdLogTag(),
-                /* string group_id = 8 */ r.sbn.getGroupLogTag(),
-                /* int32 group_instance_id = 9 */ 0, // TODO generate and fill instance ids
-                /* bool is_group_summary = 10 */ r.sbn.getNotification().isGroupSummary(),
-                /* string category = 11 */ r.sbn.getNotification().category,
-                /* int32 style = 12 */ p.getStyle(),
-                /* int32 num_people = 13 */ p.getNumPeople(),
-                /* int32 position = 14 */ position,
-                /* android.stats.sysui.NotificationImportance importance = 15 */ r.getImportance(),
-                /* int32 alerting = 16 */ buzzBeepBlink,
-                /* NotificationImportanceExplanation importance_source = 17 */
+                /* string package_name = 3 */ r.getSbn().getPackageName(),
+                /* int32 instance_id = 4 */ p.getInstanceId(),
+                /* int32 notification_id_hash = 5 */ p.getNotificationIdHash(),
+                /* int32 channel_id_hash = 6 */ p.getChannelIdHash(),
+                /* string group_id_hash = 7 */ p.getGroupIdHash(),
+                /* int32 group_instance_id = 8 */ 0, // TODO generate and fill instance ids
+                /* bool is_group_summary = 9 */ r.getSbn().getNotification().isGroupSummary(),
+                /* string category = 10 */ r.getSbn().getNotification().category,
+                /* int32 style = 11 */ p.getStyle(),
+                /* int32 num_people = 12 */ p.getNumPeople(),
+                /* int32 position = 13 */ position,
+                /* android.stats.sysui.NotificationImportance importance = 14 */ r.getImportance(),
+                /* int32 alerting = 15 */ buzzBeepBlink,
+                /* NotificationImportanceExplanation importance_source = 16 */
                 r.getImportanceExplanationCode(),
-                /* android.stats.sysui.NotificationImportance importance_initial = 18 */
+                /* android.stats.sysui.NotificationImportance importance_initial = 17 */
                 r.getInitialImportance(),
-                /* NotificationImportanceExplanation importance_initial_source = 19 */
+                /* NotificationImportanceExplanation importance_initial_source = 18 */
                 r.getInitialImportanceExplanationCode(),
-                /* android.stats.sysui.NotificationImportance importance_asst = 20 */
+                /* android.stats.sysui.NotificationImportance importance_asst = 19 */
                 r.getAssistantImportance(),
-                /* int32 assistant_hash = 21 */ p.getAssistantHash(),
-                /* float assistant_ranking_score = 22 */ 0  // TODO connect up ranking score
+                /* int32 assistant_hash = 20 */ p.getAssistantHash(),
+                /* float assistant_ranking_score = 21 */ 0 // TODO connect up ranking score
         );
     }
 
-
-
-
-
-
+    @Override
+    public void logNotificationCancelled(NotificationRecord r, int reason, int dismissalSurface) {
+        mUiEventLogger.logWithInstanceId(
+                NotificationCancelledEvent.fromCancelReason(reason, dismissalSurface),
+                r.getUid(), r.getSbn().getPackageName(), r.getSbn().getInstanceId());
+    }
 }
diff --git a/services/core/java/com/android/server/notification/NotificationUsageStats.java b/services/core/java/com/android/server/notification/NotificationUsageStats.java
index d1fe0d9..b42fe92 100644
--- a/services/core/java/com/android/server/notification/NotificationUsageStats.java
+++ b/services/core/java/com/android/server/notification/NotificationUsageStats.java
@@ -276,7 +276,7 @@
 
     // Locked by this.
     private AggregatedStats[] getAggregatedStatsLocked(NotificationRecord record) {
-        return getAggregatedStatsLocked(record.sbn.getPackageName());
+        return getAggregatedStatsLocked(record.getSbn().getPackageName());
     }
 
     // Locked by this.
@@ -1142,7 +1142,7 @@
                     long nowMs = System.currentTimeMillis();
                     switch (msg.what) {
                         case MSG_POST:
-                            writeEvent(r.sbn.getPostTime(), EVENT_TYPE_POST, r);
+                            writeEvent(r.getSbn().getPostTime(), EVENT_TYPE_POST, r);
                             break;
                         case MSG_CLICK:
                             writeEvent(nowMs, EVENT_TYPE_CLICK, r);
@@ -1287,7 +1287,7 @@
 
         private void writeEvent(long eventTimeMs, int eventType, NotificationRecord r) {
             ContentValues cv = new ContentValues();
-            cv.put(COL_EVENT_USER_ID, r.sbn.getUser().getIdentifier());
+            cv.put(COL_EVENT_USER_ID, r.getSbn().getUser().getIdentifier());
             cv.put(COL_EVENT_TIME, eventTimeMs);
             cv.put(COL_EVENT_TYPE, eventType);
             putNotificationIdentifiers(r, cv);
@@ -1324,16 +1324,16 @@
         }
 
         private static void putNotificationIdentifiers(NotificationRecord r, ContentValues outCv) {
-            outCv.put(COL_KEY, r.sbn.getKey());
-            outCv.put(COL_PKG, r.sbn.getPackageName());
+            outCv.put(COL_KEY, r.getSbn().getKey());
+            outCv.put(COL_PKG, r.getSbn().getPackageName());
         }
 
         private static void putNotificationDetails(NotificationRecord r, ContentValues outCv) {
-            outCv.put(COL_NOTIFICATION_ID, r.sbn.getId());
-            if (r.sbn.getTag() != null) {
-                outCv.put(COL_TAG, r.sbn.getTag());
+            outCv.put(COL_NOTIFICATION_ID, r.getSbn().getId());
+            if (r.getSbn().getTag() != null) {
+                outCv.put(COL_TAG, r.getSbn().getTag());
             }
-            outCv.put(COL_WHEN_MS, r.sbn.getPostTime());
+            outCv.put(COL_WHEN_MS, r.getSbn().getPostTime());
             outCv.put(COL_FLAGS, r.getNotification().flags);
             final int before = r.stats.requestedImportance;
             final int after = r.getImportance();
diff --git a/services/core/java/com/android/server/notification/PreferencesHelper.java b/services/core/java/com/android/server/notification/PreferencesHelper.java
index b0c1863..9f8362c 100644
--- a/services/core/java/com/android/server/notification/PreferencesHelper.java
+++ b/services/core/java/com/android/server/notification/PreferencesHelper.java
@@ -20,6 +20,10 @@
 import static android.app.NotificationManager.IMPORTANCE_NONE;
 import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
 
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES;
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES;
+import static com.android.internal.util.FrameworkStatsLog.PACKAGE_NOTIFICATION_PREFERENCES;
+
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -36,6 +40,7 @@
 import android.os.Build;
 import android.os.UserHandle;
 import android.provider.Settings;
+import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.RankingHelperProto;
 import android.text.TextUtils;
@@ -45,6 +50,7 @@
 import android.util.Pair;
 import android.util.Slog;
 import android.util.SparseBooleanArray;
+import android.util.StatsEvent;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.R;
@@ -79,6 +85,10 @@
     @VisibleForTesting
     static final int NOTIFICATION_CHANNEL_COUNT_LIMIT = 5000;
 
+    private static final int NOTIFICATION_PREFERENCES_PULL_LIMIT = 1000;
+    private static final int NOTIFICATION_CHANNEL_PULL_LIMIT = 2000;
+    private static final int NOTIFICATION_CHANNEL_GROUP_PULL_LIMIT = 1000;
+
     @VisibleForTesting
     static final String TAG_RANKING = "ranking";
     private static final String TAG_PACKAGE = "package";
@@ -1176,6 +1186,43 @@
         return groups;
     }
 
+    public ArrayList<ConversationChannelWrapper> getConversations(String pkg, int uid) {
+        Objects.requireNonNull(pkg);
+        synchronized (mPackagePreferences) {
+            PackagePreferences r = getPackagePreferencesLocked(pkg, uid);
+            if (r == null) {
+                return new ArrayList<>();
+            }
+            ArrayList<ConversationChannelWrapper> conversations = new ArrayList<>();
+            int N = r.channels.size();
+            for (int i = 0; i < N; i++) {
+                final NotificationChannel nc = r.channels.valueAt(i);
+                if (!TextUtils.isEmpty(nc.getConversationId()) && !nc.isDeleted()) {
+                    ConversationChannelWrapper conversation = new ConversationChannelWrapper();
+                    conversation.setNotificationChannel(nc);
+                    conversation.setParentChannelLabel(
+                            r.channels.get(nc.getParentChannelId()).getName());
+                    boolean blockedByGroup = false;
+                    if (nc.getGroup() != null) {
+                        NotificationChannelGroup group = r.groups.get(nc.getGroup());
+                        if (group != null) {
+                            if (group.isBlocked()) {
+                                blockedByGroup = true;
+                            } else {
+                                conversation.setGroupLabel(group.getName());
+                            }
+                        }
+                    }
+                    if (!blockedByGroup) {
+                        conversations.add(conversation);
+                    }
+                }
+            }
+
+            return conversations;
+        }
+    }
+
     @Override
     public ParceledListSlice<NotificationChannel> getNotificationChannels(String pkg, int uid,
             boolean includeDeleted) {
@@ -1380,7 +1427,8 @@
                 policy.priorityCategories, policy.priorityCallSenders,
                 policy.priorityMessageSenders, policy.suppressedVisualEffects,
                 (areChannelsBypassingDnd ? NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND
-                        : 0)));
+                        : 0),
+                policy.priorityConversationSenders));
     }
 
     public boolean areChannelsBypassingDnd() {
@@ -1643,6 +1691,88 @@
         }
     }
 
+    /**
+     * Fills out {@link PackageNotificationPreferences} proto and wraps it in a {@link StatsEvent}.
+     */
+    public void pullPackagePreferencesStats(List<StatsEvent> events) {
+        synchronized (mPackagePreferences) {
+            for (int i = 0; i < mPackagePreferences.size(); i++) {
+                if (i > NOTIFICATION_PREFERENCES_PULL_LIMIT) {
+                    break;
+                }
+                StatsEvent.Builder event = StatsEvent.newBuilder()
+                        .setAtomId(PACKAGE_NOTIFICATION_PREFERENCES);
+                final PackagePreferences r = mPackagePreferences.valueAt(i);
+                event.writeInt(r.uid);
+                event.writeInt(r.importance);
+                event.writeInt(r.visibility);
+                event.writeInt(r.lockedAppFields);
+                events.add(event.build());
+            }
+        }
+    }
+
+    /**
+     * Fills out {@link PackageNotificationChannelPreferences} proto and wraps it in a
+     * {@link StatsEvent}.
+     */
+    public void pullPackageChannelPreferencesStats(List<StatsEvent> events) {
+        synchronized (mPackagePreferences) {
+            int totalChannelsPulled = 0;
+            for (int i = 0; i < mPackagePreferences.size(); i++) {
+                if (totalChannelsPulled > NOTIFICATION_CHANNEL_PULL_LIMIT) {
+                    break;
+                }
+                final PackagePreferences r = mPackagePreferences.valueAt(i);
+                for (NotificationChannel channel : r.channels.values()) {
+                    if (++totalChannelsPulled > NOTIFICATION_CHANNEL_PULL_LIMIT) {
+                        break;
+                    }
+                    StatsEvent.Builder event = StatsEvent.newBuilder()
+                            .setAtomId(PACKAGE_NOTIFICATION_CHANNEL_PREFERENCES);
+                    event.writeInt(r.uid);
+                    event.writeString(channel.getId());
+                    event.writeString(channel.getName().toString());
+                    event.writeString(channel.getDescription());
+                    event.writeInt(channel.getImportance());
+                    event.writeInt(channel.getUserLockedFields());
+                    event.writeBoolean(channel.isDeleted());
+                    events.add(event.build());
+                }
+            }
+        }
+    }
+
+    /**
+     * Fills out {@link PackageNotificationChannelGroupPreferences} proto and wraps it in a
+     * {@link StatsEvent}.
+     */
+    public void pullPackageChannelGroupPreferencesStats(List<StatsEvent> events) {
+        synchronized (mPackagePreferences) {
+            int totalGroupsPulled = 0;
+            for (int i = 0; i < mPackagePreferences.size(); i++) {
+                if (totalGroupsPulled > NOTIFICATION_CHANNEL_GROUP_PULL_LIMIT) {
+                    break;
+                }
+                final PackagePreferences r = mPackagePreferences.valueAt(i);
+                for (NotificationChannelGroup groupChannel : r.groups.values()) {
+                    if (++totalGroupsPulled > NOTIFICATION_CHANNEL_GROUP_PULL_LIMIT) {
+                        break;
+                    }
+                    StatsEvent.Builder event = StatsEvent.newBuilder()
+                            .setAtomId(PACKAGE_NOTIFICATION_CHANNEL_GROUP_PREFERENCES);
+                    event.writeInt(r.uid);
+                    event.writeString(groupChannel.getId());
+                    event.writeString(groupChannel.getName().toString());
+                    event.writeString(groupChannel.getDescription());
+                    event.writeBoolean(groupChannel.isBlocked());
+                    event.writeInt(groupChannel.getUserLockedFields());
+                    events.add(event.build());
+                }
+            }
+        }
+    }
+
     public JSONObject dumpJson(NotificationManagerService.DumpFilter filter) {
         JSONObject ranking = new JSONObject();
         JSONArray PackagePreferencess = new JSONArray();
diff --git a/services/core/java/com/android/server/notification/SnoozeHelper.java b/services/core/java/com/android/server/notification/SnoozeHelper.java
index 9e32d0e..661297a 100644
--- a/services/core/java/com/android/server/notification/SnoozeHelper.java
+++ b/services/core/java/com/android/server/notification/SnoozeHelper.java
@@ -166,7 +166,7 @@
             ArrayMap<String, NotificationRecord> packages =
                     mSnoozedNotifications.get(userId).get(pkg);
             for (int i = 0; i < packages.size(); i++) {
-                String currentGroupKey = packages.valueAt(i).sbn.getGroup();
+                String currentGroupKey = packages.valueAt(i).getSbn().getGroup();
                 if (currentGroupKey.equals(groupKey)) {
                     records.add(packages.valueAt(i));
                 }
@@ -223,7 +223,7 @@
      * Snoozes a notification and schedules an alarm to repost at that time.
      */
     protected void snooze(NotificationRecord record, long duration) {
-        String pkg = record.sbn.getPackageName();
+        String pkg = record.getSbn().getPackageName();
         String key = record.getKey();
         int userId = record.getUser().getIdentifier();
 
@@ -242,7 +242,7 @@
         int userId = record.getUser().getIdentifier();
         if (contextId != null) {
             synchronized (mPersistedSnoozedNotificationsWithContext) {
-                storeRecord(record.sbn.getPackageName(), record.getKey(),
+                storeRecord(record.getSbn().getPackageName(), record.getKey(),
                         userId, mPersistedSnoozedNotificationsWithContext, contextId);
             }
         }
@@ -254,9 +254,9 @@
         if (DEBUG) {
             Slog.d(TAG, "Snoozing " + record.getKey());
         }
-        storeRecord(record.sbn.getPackageName(), record.getKey(),
+        storeRecord(record.getSbn().getPackageName(), record.getKey(),
                 userId, mSnoozedNotifications, record);
-        mPackages.put(record.getKey(), record.sbn.getPackageName());
+        mPackages.put(record.getKey(), record.getSbn().getPackageName());
         mUsers.put(record.getKey(), userId);
     }
 
@@ -308,7 +308,7 @@
             if (recordsForPkg != null) {
                 final Set<Map.Entry<String, NotificationRecord>> records = recordsForPkg.entrySet();
                 for (Map.Entry<String, NotificationRecord> record : records) {
-                    final StatusBarNotification sbn = record.getValue().sbn;
+                    final StatusBarNotification sbn = record.getValue().getSbn();
                     if (Objects.equals(sbn.getTag(), tag) && sbn.getId() == id) {
                         record.getValue().isCanceled = true;
                         return true;
@@ -369,7 +369,7 @@
         if (records == null) {
             return;
         }
-        ArrayMap<String, NotificationRecord> pkgRecords = records.get(record.sbn.getPackageName());
+        ArrayMap<String, NotificationRecord> pkgRecords = records.get(record.getSbn().getPackageName());
         if (pkgRecords == null) {
             return;
         }
@@ -420,7 +420,7 @@
                     int N = recordsByKey.size();
                     for (int i = 0; i < N; i++) {
                         final NotificationRecord potentialGroupSummary = recordsByKey.valueAt(i);
-                        if (potentialGroupSummary.sbn.isGroup()
+                        if (potentialGroupSummary.getSbn().isGroup()
                                 && potentialGroupSummary.getNotification().isGroupSummary()
                                 && groupKey.equals(potentialGroupSummary.getGroupKey())) {
                             groupSummaryKey = potentialGroupSummary.getKey();
diff --git a/services/core/java/com/android/server/notification/ValidateNotificationPeople.java b/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
index 639cc70..90fc59a 100644
--- a/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
+++ b/services/core/java/com/android/server/notification/ValidateNotificationPeople.java
@@ -38,6 +38,8 @@
 import android.util.LruCache;
 import android.util.Slog;
 
+import libcore.util.EmptyArray;
+
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.LinkedList;
@@ -301,7 +303,7 @@
         for (String person: second) {
             people.add(person);
         }
-        return (String[]) people.toArray();
+        return people.toArray(EmptyArray.STRING);
     }
 
     @Nullable
diff --git a/services/core/java/com/android/server/notification/ZenModeFiltering.java b/services/core/java/com/android/server/notification/ZenModeFiltering.java
index 6045f6c..4d19855 100644
--- a/services/core/java/com/android/server/notification/ZenModeFiltering.java
+++ b/services/core/java/com/android/server/notification/ZenModeFiltering.java
@@ -17,6 +17,7 @@
 package com.android.server.notification;
 
 import static android.provider.Settings.Global.ZEN_MODE_OFF;
+import static android.service.notification.ZenPolicy.CONVERSATION_SENDERS_ANYONE;
 
 import android.app.Notification;
 import android.app.NotificationManager;
@@ -106,8 +107,8 @@
     }
 
     private static Bundle extras(NotificationRecord record) {
-        return record != null && record.sbn != null && record.sbn.getNotification() != null
-                ? record.sbn.getNotification().extras : null;
+        return record != null && record.getSbn() != null && record.getSbn().getNotification() != null
+                ? record.getSbn().getNotification().extras : null;
     }
 
     protected void recordCall(NotificationRecord record) {
@@ -125,8 +126,8 @@
         }
         // Make an exception to policy for the notification saying that policy has changed
         if (NotificationManager.Policy.areAllVisualEffectsSuppressed(policy.suppressedVisualEffects)
-                && "android".equals(record.sbn.getPackageName())
-                && SystemMessageProto.SystemMessage.NOTE_ZEN_UPGRADE == record.sbn.getId()) {
+                && "android".equals(record.getSbn().getPackageName())
+                && SystemMessageProto.SystemMessage.NOTE_ZEN_UPGRADE == record.getSbn().getId()) {
             ZenLog.traceNotIntercepted(record, "systemDndChangedNotification");
             return false;
         }
@@ -156,25 +157,6 @@
                     }
                     return false;
                 }
-                if (isCall(record)) {
-                    if (policy.allowRepeatCallers()
-                            && REPEAT_CALLERS.isRepeat(mContext, extras(record))) {
-                        ZenLog.traceNotIntercepted(record, "repeatCaller");
-                        return false;
-                    }
-                    if (!policy.allowCalls()) {
-                        ZenLog.traceIntercepted(record, "!allowCalls");
-                        return true;
-                    }
-                    return shouldInterceptAudience(policy.allowCallsFrom(), record);
-                }
-                if (isMessage(record)) {
-                    if (!policy.allowMessages()) {
-                        ZenLog.traceIntercepted(record, "!allowMessages");
-                        return true;
-                    }
-                    return shouldInterceptAudience(policy.allowMessagesFrom(), record);
-                }
                 if (isEvent(record)) {
                     if (!policy.allowEvents()) {
                         ZenLog.traceIntercepted(record, "!allowEvents");
@@ -203,6 +185,41 @@
                     }
                     return false;
                 }
+                if (isConversation(record)) {
+                    if (policy.allowConversations()) {
+                        if (policy.priorityConversationSenders == CONVERSATION_SENDERS_ANYONE) {
+                            ZenLog.traceNotIntercepted(record, "conversationAnyone");
+                            return false;
+                        } else if (policy.priorityConversationSenders
+                                == NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT
+                                && record.getChannel().isImportantConversation()) {
+                            ZenLog.traceNotIntercepted(record, "conversationMatches");
+                            return false;
+                        }
+                    }
+                    // if conversations aren't allowed record might still be allowed thanks
+                    // to call or message metadata, so don't return yet
+                }
+                if (isCall(record)) {
+                    if (policy.allowRepeatCallers()
+                            && REPEAT_CALLERS.isRepeat(mContext, extras(record))) {
+                        ZenLog.traceNotIntercepted(record, "repeatCaller");
+                        return false;
+                    }
+                    if (!policy.allowCalls()) {
+                        ZenLog.traceIntercepted(record, "!allowCalls");
+                        return true;
+                    }
+                    return shouldInterceptAudience(policy.allowCallsFrom(), record);
+                }
+                if (isMessage(record)) {
+                    if (!policy.allowMessages()) {
+                        ZenLog.traceIntercepted(record, "!allowMessages");
+                        return true;
+                    }
+                    return shouldInterceptAudience(policy.allowMessagesFrom(), record);
+                }
+
                 ZenLog.traceIntercepted(record, "!priority");
                 return true;
             default:
@@ -245,7 +262,7 @@
     }
 
     public boolean isCall(NotificationRecord record) {
-        return record != null && (isDefaultPhoneApp(record.sbn.getPackageName())
+        return record != null && (isDefaultPhoneApp(record.getSbn().getPackageName())
                 || record.isCategory(Notification.CATEGORY_CALL));
     }
 
@@ -273,7 +290,11 @@
     }
 
     protected boolean isMessage(NotificationRecord record) {
-        return mMessagingUtil.isMessaging(record.sbn);
+        return mMessagingUtil.isMessaging(record.getSbn());
+    }
+
+    protected boolean isConversation(NotificationRecord record) {
+        return record.isConversation();
     }
 
     private static boolean audienceMatches(int source, float contactAffinity) {
diff --git a/services/core/java/com/android/server/notification/ZenModeHelper.java b/services/core/java/com/android/server/notification/ZenModeHelper.java
index 696d2ea..3b564c3 100644
--- a/services/core/java/com/android/server/notification/ZenModeHelper.java
+++ b/services/core/java/com/android/server/notification/ZenModeHelper.java
@@ -641,9 +641,11 @@
     }
 
     public void dump(PrintWriter pw, String prefix) {
-        pw.print(prefix); pw.print("mZenMode=");
+        pw.print(prefix);
+        pw.print("mZenMode=");
         pw.println(Global.zenModeToString(mZenMode));
-        pw.print("mConsolidatedPolicy=" + mConsolidatedPolicy.toString());
+        pw.print(prefix);
+        pw.println("mConsolidatedPolicy=" + mConsolidatedPolicy.toString());
         final int N = mConfigs.size();
         for (int i = 0; i < N; i++) {
             dump(pw, prefix, "mConfigs[u=" + mConfigs.keyAt(i) + "]", mConfigs.valueAt(i));
@@ -665,13 +667,17 @@
             return;
         }
         pw.printf("allow(alarms=%b,media=%b,system=%b,calls=%b,callsFrom=%s,repeatCallers=%b,"
-                + "messages=%b,messagesFrom=%s,events=%b,reminders=%b)\n",
+                + "messages=%b,messagesFrom=%s,conversations=%b,conversationsFrom=%s,"
+                        + "events=%b,reminders=%b)\n",
                 config.allowAlarms, config.allowMedia, config.allowSystem,
                 config.allowCalls, ZenModeConfig.sourceToString(config.allowCallsFrom),
                 config.allowRepeatCallers, config.allowMessages,
                 ZenModeConfig.sourceToString(config.allowMessagesFrom),
+                config.allowConversations,
+                ZenPolicy.conversationTypeToString(config.allowConversationsFrom),
                 config.allowEvents, config.allowReminders);
-        pw.printf(" disallow(visualEffects=%s)\n", config.suppressedVisualEffects);
+        pw.print(prefix);
+        pw.printf("  disallow(visualEffects=%s)\n", config.suppressedVisualEffects);
         pw.print(prefix); pw.print("  manualRule="); pw.println(config.manualRule);
         if (config.automaticRules.isEmpty()) return;
         final int N = config.automaticRules.size();
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index 3c31f6a..d75eb6d 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -913,9 +913,9 @@
                 }
 
                 try {
-                    ActivityManager.getService().broadcastIntent(null, intent, null, null, 0,
-                            null, null, null, android.app.AppOpsManager.OP_NONE, null, false, false,
-                            userId);
+                    ActivityManager.getService().broadcastIntentWithFeature(null, null, intent,
+                            null, null, 0, null, null, null, android.app.AppOpsManager.OP_NONE,
+                            null, false, false, userId);
                 } catch (RemoteException e) {
                     // Intentionally left empty.
                 }
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index c6d2b33..a440c62 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -36,6 +36,7 @@
 import android.os.Environment;
 import android.os.RemoteException;
 import android.os.ServiceManager;
+import android.os.Trace;
 import android.sysprop.ApexProperties;
 import android.util.ArrayMap;
 import android.util.ArraySet;
@@ -46,6 +47,7 @@
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.server.utils.TimingsTraceAndSlog;
 
 import com.google.android.collect.Lists;
 
@@ -95,15 +97,17 @@
      * Returns an instance of either {@link ApexManagerImpl} or {@link ApexManagerFlattenedApex}
      * depending on whether this device supports APEX, i.e. {@link ApexProperties#updatable()}
      * evaluates to {@code true}.
+     * @hide
      */
-    static ApexManager getInstance() {
+    public static ApexManager getInstance() {
         return sApexManagerSingleton.get();
     }
 
     /**
      * Minimal information about APEX mount points and the original APEX package they refer to.
+     * @hide
      */
-    static class ActiveApexInfo {
+    public static class ActiveApexInfo {
         @Nullable public final String apexModuleName;
         public final File apexDirectory;
         public final File preInstalledApexPath;
@@ -130,8 +134,10 @@
 
     /**
      * Returns {@link ActiveApexInfo} records relative to all active APEX packages.
+     *
+     * @hide
      */
-    abstract List<ActiveApexInfo> getActiveApexInfos();
+    public abstract List<ActiveApexInfo> getActiveApexInfos();
 
     abstract void systemReady(Context context);
 
@@ -272,6 +278,29 @@
     public abstract String getApexModuleNameForPackageName(String apexPackageName);
 
     /**
+     * Copies the CE apex data directory for the given {@code userId} to a backup location, for use
+     * in case of rollback.
+     *
+     * @return long inode for the snapshot directory if the snapshot was successful, or -1 if not
+     */
+    public abstract long snapshotCeData(int userId, int rollbackId, String apexPackageName);
+
+    /**
+     * Restores the snapshot of the CE apex data directory for the given {@code userId}.
+     *
+     * @return boolean true if the restore was successful
+     */
+    public abstract boolean restoreCeData(int userId, int rollbackId, String apexPackageName);
+
+    /**
+     * Deletes snapshots of the device encrypted apex data directories for the given
+     * {@code rollbackId}.
+     *
+     * @return boolean true if the delete was successful
+     */
+    public abstract boolean destroyDeSnapshots(int rollbackId);
+
+    /**
      * Dumps various state information to the provided {@link PrintWriter} object.
      *
      * @param pw the {@link PrintWriter} object to send information to.
@@ -347,9 +376,12 @@
         }
 
         @Override
-        List<ActiveApexInfo> getActiveApexInfos() {
+        public List<ActiveApexInfo> getActiveApexInfos() {
+            final TimingsTraceAndSlog t = new TimingsTraceAndSlog(TAG + "Timing",
+                    Trace.TRACE_TAG_APEX_MANAGER);
             synchronized (mLock) {
                 if (mActiveApexInfosCache == null) {
+                    t.traceBegin("getActiveApexInfos_noCache");
                     try {
                         mActiveApexInfosCache = new ArraySet<>();
                         final ApexInfo[] activePackages = mApexService.getActivePackages();
@@ -360,6 +392,7 @@
                     } catch (RemoteException e) {
                         Slog.e(TAG, "Unable to retrieve packages from apexservice", e);
                     }
+                    t.traceEnd();
                 }
                 if (mActiveApexInfosCache != null) {
                     return new ArrayList<>(mActiveApexInfosCache);
@@ -662,6 +695,56 @@
             }
         }
 
+        @Override
+        public long snapshotCeData(int userId, int rollbackId, String apexPackageName) {
+            populatePackageNameToApexModuleNameIfNeeded();
+            String apexModuleName;
+            synchronized (mLock) {
+                apexModuleName = mPackageNameToApexModuleName.get(apexPackageName);
+            }
+            if (apexModuleName == null) {
+                Slog.e(TAG, "Invalid apex package name: " + apexPackageName);
+                return -1;
+            }
+            try {
+                return mApexService.snapshotCeData(userId, rollbackId, apexModuleName);
+            } catch (Exception e) {
+                Slog.e(TAG, e.getMessage(), e);
+                return -1;
+            }
+        }
+
+        @Override
+        public boolean restoreCeData(int userId, int rollbackId, String apexPackageName) {
+            populatePackageNameToApexModuleNameIfNeeded();
+            String apexModuleName;
+            synchronized (mLock) {
+                apexModuleName = mPackageNameToApexModuleName.get(apexPackageName);
+            }
+            if (apexModuleName == null) {
+                Slog.e(TAG, "Invalid apex package name: " + apexPackageName);
+                return false;
+            }
+            try {
+                mApexService.restoreCeData(userId, rollbackId, apexModuleName);
+                return true;
+            } catch (Exception e) {
+                Slog.e(TAG, e.getMessage(), e);
+                return false;
+            }
+        }
+
+        @Override
+        public boolean destroyDeSnapshots(int rollbackId) {
+            try {
+                mApexService.destroyDeSnapshots(rollbackId);
+                return true;
+            } catch (Exception e) {
+                Slog.e(TAG, e.getMessage(), e);
+                return false;
+            }
+        }
+
         /**
          * Dump information about the packages contained in a particular cache
          * @param packagesCache the cache to print information about.
@@ -744,7 +827,7 @@
      */
     private static final class ApexManagerFlattenedApex extends ApexManager {
         @Override
-        List<ActiveApexInfo> getActiveApexInfos() {
+        public List<ActiveApexInfo> getActiveApexInfos() {
             // There is no apexd running in case of flattened apex
             // We look up the /apex directory and identify the active APEX modules from there.
             // As "preinstalled" path, we just report /system since in the case of flattened APEX
@@ -865,6 +948,21 @@
         }
 
         @Override
+        public long snapshotCeData(int userId, int rollbackId, String apexPackageName) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean restoreCeData(int userId, int rollbackId, String apexPackageName) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean destroyDeSnapshots(int rollbackId) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
         void dump(PrintWriter pw, String packageName) {
             // No-op
         }
diff --git a/services/core/java/com/android/server/pm/AppsFilter.java b/services/core/java/com/android/server/pm/AppsFilter.java
index 5c17bec..d629b54 100644
--- a/services/core/java/com/android/server/pm/AppsFilter.java
+++ b/services/core/java/com/android/server/pm/AppsFilter.java
@@ -33,7 +33,7 @@
 import android.content.pm.parsing.ComponentParseUtils.ParsedIntentInfo;
 import android.content.pm.parsing.ComponentParseUtils.ParsedProvider;
 import android.content.pm.parsing.ComponentParseUtils.ParsedService;
-import android.net.Uri;
+import android.os.Binder;
 import android.os.Process;
 import android.os.Trace;
 import android.os.UserHandle;
@@ -68,9 +68,8 @@
 
     // Logs all filtering instead of enforcing
     private static final boolean DEBUG_ALLOW_ALL = false;
-
-    @SuppressWarnings("ConstantExpression")
-    private static final boolean DEBUG_LOGGING = false | DEBUG_ALLOW_ALL;
+    private static final boolean DEBUG_LOGGING = false;
+    private static final boolean FEATURE_ENABLED_BY_DEFAULT = false;
 
     /**
      * This contains a list of app UIDs that are implicitly queryable because another app explicitly
@@ -87,10 +86,10 @@
     private final SparseSetArray<Integer> mQueriesViaPackage = new SparseSetArray<>();
 
     /**
-     * A mapping from the set of App IDs that query others via intent to the list
-     * of packages that the intents resolve to.
+     * A mapping from the set of App IDs that query others via component match to the list
+     * of packages that the they resolve to.
      */
-    private final SparseSetArray<Integer> mQueriesViaIntent = new SparseSetArray<>();
+    private final SparseSetArray<Integer> mQueriesViaComponent = new SparseSetArray<>();
 
     /**
      * A set of App IDs that are always queryable by any package, regardless of their manifest
@@ -136,7 +135,7 @@
     private static class FeatureConfigImpl implements FeatureConfig {
         private static final String FILTERING_ENABLED_NAME = "package_query_filtering_enabled";
         private final PackageManagerService.Injector mInjector;
-        private volatile boolean mFeatureEnabled = false;
+        private volatile boolean mFeatureEnabled = FEATURE_ENABLED_BY_DEFAULT;
 
         private FeatureConfigImpl(PackageManagerService.Injector injector) {
             mInjector = injector;
@@ -145,14 +144,15 @@
         @Override
         public void onSystemReady() {
             mFeatureEnabled = DeviceConfig.getBoolean(
-                    NAMESPACE_PACKAGE_MANAGER_SERVICE, FILTERING_ENABLED_NAME, false);
+                    NAMESPACE_PACKAGE_MANAGER_SERVICE, FILTERING_ENABLED_NAME,
+                    FEATURE_ENABLED_BY_DEFAULT);
             DeviceConfig.addOnPropertiesChangedListener(
                     NAMESPACE_PACKAGE_MANAGER_SERVICE, FgThread.getExecutor(),
                     properties -> {
                         if (properties.getKeyset().contains(FILTERING_ENABLED_NAME)) {
                             synchronized (FeatureConfigImpl.this) {
                                 mFeatureEnabled = properties.getBoolean(FILTERING_ENABLED_NAME,
-                                        false);
+                                        FEATURE_ENABLED_BY_DEFAULT);
                             }
                         }
                     });
@@ -171,11 +171,13 @@
         @Override
         public boolean packageIsEnabled(AndroidPackage pkg) {
             Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "packageIsEnabled");
+            final long token = Binder.clearCallingIdentity();
             try {
                 // TODO(b/135203078): Do not use toAppInfo
                 return mInjector.getCompatibility().isChangeEnabled(
                         PackageManager.FILTER_APPLICATION_QUERY, pkg.toAppInfoWithoutState());
             } finally {
+                Binder.restoreCallingIdentity(token);
                 Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
             }
         }
@@ -203,16 +205,19 @@
     }
 
     /** Returns true if the querying package may query for the potential target package */
-    private static boolean canQueryViaIntent(AndroidPackage querying,
+    private static boolean canQueryViaComponents(AndroidPackage querying,
             AndroidPackage potentialTarget) {
-        if (querying.getQueriesIntents() == null) {
-            return false;
-        }
-        for (Intent intent : querying.getQueriesIntents()) {
-            if (matches(intent, potentialTarget)) {
-                return true;
+        if (querying.getQueriesIntents() != null) {
+            for (Intent intent : querying.getQueriesIntents()) {
+                if (matchesIntentFilters(intent, potentialTarget)) {
+                    return true;
+                }
             }
         }
+        if (querying.getQueriesProviders() != null
+                && matchesProviders(querying.getQueriesProviders(), potentialTarget)) {
+            return true;
+        }
         return false;
     }
 
@@ -235,24 +240,25 @@
         return false;
     }
 
-    private static boolean matches(Intent intent, AndroidPackage potentialTarget) {
+    private static boolean matchesProviders(
+            Set<String> queriesAuthorities, AndroidPackage potentialTarget) {
         for (int p = ArrayUtils.size(potentialTarget.getProviders()) - 1; p >= 0; p--) {
             ParsedProvider provider = potentialTarget.getProviders().get(p);
             if (!provider.isExported()) {
                 continue;
             }
-            final Uri data = intent.getData();
-            if (!"content".equalsIgnoreCase(intent.getScheme()) || data == null
-                    || provider.getAuthority() == null) {
-                continue;
-            }
-            StringTokenizer authorities = new StringTokenizer(provider.getAuthority(), ";", false);
+            StringTokenizer authorities = new StringTokenizer(provider.getAuthority(), ";",
+                    false);
             while (authorities.hasMoreElements()) {
-                if (Objects.equals(authorities.nextElement(), data.getAuthority())) {
+                if (queriesAuthorities.contains(authorities.nextToken())) {
                     return true;
                 }
             }
         }
+        return false;
+    }
+
+    private static boolean matchesIntentFilters(Intent intent, AndroidPackage potentialTarget) {
         for (int s = ArrayUtils.size(potentialTarget.getServices()) - 1; s >= 0; s--) {
             ParsedService service = potentialTarget.getServices().get(s);
             if (!service.exported) {
@@ -347,6 +353,7 @@
                     mForceQueryable.contains(newPkgSetting.appId)
                             /* shared user that is already force queryable */
                             || newPkg.isForceQueryable()
+                            || newPkgSetting.forceQueryableOverride
                             || (newPkgSetting.isSystem() && (mSystemAppsQueryable
                             || ArrayUtils.contains(mForceQueryableByDevicePackageNames,
                             newPkg.getPackageName())));
@@ -364,8 +371,8 @@
                 final AndroidPackage existingPkg = existingSetting.pkg;
                 // let's evaluate the ability of already added packages to see this new package
                 if (!newIsForceQueryable) {
-                    if (canQueryViaIntent(existingPkg, newPkg)) {
-                        mQueriesViaIntent.add(existingSetting.appId, newPkgSetting.appId);
+                    if (canQueryViaComponents(existingPkg, newPkg)) {
+                        mQueriesViaComponent.add(existingSetting.appId, newPkgSetting.appId);
                     }
                     if (canQueryViaPackage(existingPkg, newPkg)
                             || canQueryAsInstaller(existingSetting, newPkg)) {
@@ -374,8 +381,8 @@
                 }
                 // now we'll evaluate our new package's ability to see existing packages
                 if (!mForceQueryable.contains(existingSetting.appId)) {
-                    if (canQueryViaIntent(newPkg, existingPkg)) {
-                        mQueriesViaIntent.add(newPkgSetting.appId, existingSetting.appId);
+                    if (canQueryViaComponents(newPkg, existingPkg)) {
+                        mQueriesViaComponent.add(newPkgSetting.appId, existingSetting.appId);
                     }
                     if (canQueryViaPackage(newPkg, existingPkg)
                             || canQueryAsInstaller(newPkgSetting, existingPkg)) {
@@ -423,9 +430,9 @@
             }
         }
 
-        mQueriesViaIntent.remove(setting.appId);
-        for (int i = mQueriesViaIntent.size() - 1; i >= 0; i--) {
-            mQueriesViaIntent.remove(mQueriesViaIntent.keyAt(i), setting.appId);
+        mQueriesViaComponent.remove(setting.appId);
+        for (int i = mQueriesViaComponent.size() - 1; i >= 0; i--) {
+            mQueriesViaComponent.remove(mQueriesViaComponent.keyAt(i), setting.appId);
         }
         mQueriesViaPackage.remove(setting.appId);
         for (int i = mQueriesViaPackage.size() - 1; i >= 0; i--) {
@@ -590,10 +597,10 @@
                 Trace.endSection();
             }
             try {
-                Trace.beginSection("mQueriesViaIntent");
-                if (mQueriesViaIntent.contains(callingAppId, targetAppId)) {
+                Trace.beginSection("mQueriesViaComponent");
+                if (mQueriesViaComponent.contains(callingAppId, targetAppId)) {
                     if (DEBUG_LOGGING) {
-                        log(callingSetting, targetPkgSetting, "queries intent");
+                        log(callingSetting, targetPkgSetting, "queries component");
                     }
                     return false;
                 }
@@ -613,6 +620,7 @@
             } finally {
                 Trace.endSection();
             }
+
             if (callingPkgSetting != null) {
                 if (callingPkgInstruments(callingPkgSetting, targetPkgSetting, targetName)) {
                     return false;
@@ -626,28 +634,34 @@
                 }
             }
 
-            if (callingSharedPkgSettings != null) {
-                int size = callingSharedPkgSettings.size();
-                for (int index = 0; index < size; index++) {
-                    PackageSetting pkgSetting = callingSharedPkgSettings.valueAt(index);
-                    if (mOverlayReferenceMapper.isValidActor(targetName, pkgSetting.name)) {
+            try {
+                Trace.beginSection("mOverlayReferenceMapper");
+                if (callingSharedPkgSettings != null) {
+                    int size = callingSharedPkgSettings.size();
+                    for (int index = 0; index < size; index++) {
+                        PackageSetting pkgSetting = callingSharedPkgSettings.valueAt(index);
+                        if (mOverlayReferenceMapper.isValidActor(targetName, pkgSetting.name)) {
+                            if (DEBUG_LOGGING) {
+                                log(callingPkgSetting, targetPkgSetting,
+                                        "matches shared user of package that acts on target of "
+                                                + "overlay");
+                            }
+                            return false;
+                        }
+                    }
+                } else {
+                    if (mOverlayReferenceMapper.isValidActor(targetName, callingPkgSetting.name)) {
                         if (DEBUG_LOGGING) {
-                            log(callingPkgSetting, targetPkgSetting,
-                                    "matches shared user of package that acts on target of "
-                                            + "overlay");
+                            log(callingPkgSetting, targetPkgSetting, "acts on target of overlay");
                         }
                         return false;
                     }
                 }
-            } else {
-                if (mOverlayReferenceMapper.isValidActor(targetName, callingPkgSetting.name)) {
-                    if (DEBUG_LOGGING) {
-                        log(callingPkgSetting, targetPkgSetting, "acts on target of overlay");
-                    }
-                    return false;
-                }
+            } finally {
+                Trace.endSection();
             }
 
+
             return true;
         } finally {
             Trace.traceEnd(TRACE_TAG_PACKAGE_MANAGER);
@@ -721,7 +735,7 @@
         pw.println("  queries via package name:");
         dumpQueriesMap(pw, filteringAppId, mQueriesViaPackage, "    ", expandPackages);
         pw.println("  queries via intent:");
-        dumpQueriesMap(pw, filteringAppId, mQueriesViaIntent, "    ", expandPackages);
+        dumpQueriesMap(pw, filteringAppId, mQueriesViaComponent, "    ", expandPackages);
         pw.println("  queryable via interaction:");
         for (int user : users) {
             pw.append("    User ").append(Integer.toString(user)).println(":");
diff --git a/services/core/java/com/android/server/pm/BackgroundDexOptService.java b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
index c712431..ba7583f 100644
--- a/services/core/java/com/android/server/pm/BackgroundDexOptService.java
+++ b/services/core/java/com/android/server/pm/BackgroundDexOptService.java
@@ -36,9 +36,9 @@
 import android.os.storage.StorageManager;
 import android.util.ArraySet;
 import android.util.Log;
-import android.util.StatsLog;
 
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.PinnerService;
 import com.android.server.pm.dex.DexManager;
@@ -444,7 +444,7 @@
         }
 
         if (dex_opt_performed) {
-            StatsLog.write(StatsLog.APP_DOWNGRADED, pkg, package_size_before,
+            FrameworkStatsLog.write(FrameworkStatsLog.APP_DOWNGRADED, pkg, package_size_before,
                     getPackageSize(pm, pkg), /*aggressive=*/ false);
         }
         return dex_opt_performed;
diff --git a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
index 74d2efe..96d3cc1 100644
--- a/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
+++ b/services/core/java/com/android/server/pm/CrossProfileAppsServiceImpl.java
@@ -37,6 +37,7 @@
 import android.content.Intent;
 import android.content.PermissionChecker;
 import android.content.pm.ActivityInfo;
+import android.content.pm.CrossProfileAppsInternal;
 import android.content.pm.ICrossProfileApps;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
@@ -44,9 +45,7 @@
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.ResolveInfo;
 import android.os.Binder;
-import android.os.IBinder;
 import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.stats.devicepolicy.DevicePolicyEnums;
@@ -54,10 +53,10 @@
 import android.util.Slog;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.app.IAppOpsService;
 import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
+import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
 import com.android.server.LocalServices;
-import com.android.server.appop.AppOpsService;
 import com.android.server.wm.ActivityTaskManagerInternal;
 
 import java.util.ArrayList;
@@ -69,7 +68,7 @@
 
     private Context mContext;
     private Injector mInjector;
-    private AppOpsService mAppOpsService;
+    private AppOpsManager mAppOpsManager;
 
     public CrossProfileAppsServiceImpl(Context context) {
         this(context, new InjectorImpl(context));
@@ -79,6 +78,8 @@
     CrossProfileAppsServiceImpl(Context context, Injector injector) {
         mContext = context;
         mInjector = injector;
+
+        LocalServices.addService(CrossProfileAppsInternal.class, new LocalService());
     }
 
     @Override
@@ -100,6 +101,7 @@
     public void startActivityAsUser(
             IApplicationThread caller,
             String callingPackage,
+            String callingFeatureId,
             ComponentName component,
             @UserIdInt int userId,
             boolean launchMainActivity) throws RemoteException {
@@ -165,7 +167,7 @@
         launchIntent.setPackage(null);
         launchIntent.setComponent(component);
         mInjector.getActivityTaskManagerInternal().startActivityAsUser(
-                caller, callingPackage, launchIntent,
+                caller, callingPackage, callingFeatureId, launchIntent,
                 launchMainActivity
                         ? ActivityOptions.makeOpenCrossProfileAppsAnimation().toBundle()
                         : null,
@@ -176,6 +178,7 @@
     public void startActivityAsUserByIntent(
             IApplicationThread caller,
             String callingPackage,
+            String callingFeatureId,
             Intent intent,
             @UserIdInt int userId) throws RemoteException {
         Objects.requireNonNull(callingPackage);
@@ -212,8 +215,8 @@
 
         verifyActivityCanHandleIntent(launchIntent, callingUid, userId);
 
-        mInjector.getActivityTaskManagerInternal().startActivityAsUser(
-                caller, callingPackage, launchIntent, /* options= */ null, userId);
+        mInjector.getActivityTaskManagerInternal().startActivityAsUser(caller, callingPackage,
+                callingFeatureId, launchIntent, /* options= */ null, userId);
     }
 
     @Override
@@ -253,8 +256,8 @@
         Objects.requireNonNull(callingPackage);
         verifyCallingPackage(callingPackage);
 
-        final List<UserHandle> targetUserProfiles = getTargetUserProfilesUnchecked(
-                callingPackage, mInjector.getCallingUserId());
+        final List<UserHandle> targetUserProfiles = getTargetUserProfilesUnchecked(callingPackage,
+                mInjector.getCallingUserId());
         if (targetUserProfiles.isEmpty()) {
             return false;
         }
@@ -276,19 +279,14 @@
     }
 
     private boolean isCrossProfilePackageWhitelisted(String packageName) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
-            return mInjector.getDevicePolicyManagerInternal()
-                    .getAllCrossProfilePackages().contains(packageName);
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        return mInjector.withCleanCallingIdentity(() ->
+                mInjector.getDevicePolicyManagerInternal()
+                        .getAllCrossProfilePackages().contains(packageName));
     }
 
     private List<UserHandle> getTargetUserProfilesUnchecked(
             String packageName, @UserIdInt int userId) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
+        return mInjector.withCleanCallingIdentity(() -> {
             final int[] enabledProfileIds =
                     mInjector.getUserManager().getEnabledProfileIds(userId);
 
@@ -303,15 +301,12 @@
                 targetProfiles.add(UserHandle.of(profileId));
             }
             return targetProfiles;
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        });
     }
 
     private boolean isPackageEnabled(String packageName, @UserIdInt int userId) {
         final int callingUid = mInjector.getCallingUid();
-        final long ident = mInjector.clearCallingIdentity();
-        try {
+        return mInjector.withCleanCallingIdentity(() -> {
             final PackageInfo info = mInjector.getPackageManagerInternal()
                     .getPackageInfo(
                             packageName,
@@ -319,15 +314,12 @@
                             callingUid,
                             userId);
             return info != null && info.applicationInfo.enabled;
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        });
     }
 
     private void verifyActivityCanHandleIntent(
             Intent launchIntent, int callingUid, @UserIdInt int userId) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
+        mInjector.withCleanCallingIdentity(() -> {
             final List<ResolveInfo> activities =
                     mInjector.getPackageManagerInternal().queryIntentActivities(
                             launchIntent,
@@ -340,9 +332,7 @@
                 return;
             }
             throw new SecurityException("Activity cannot handle intent");
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        });
     }
 
     /**
@@ -351,8 +341,7 @@
      */
     private void verifyActivityCanHandleIntentAndExported(
             Intent launchIntent, ComponentName component, int callingUid, @UserIdInt int userId) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
+        mInjector.withCleanCallingIdentity(() -> {
             final List<ResolveInfo> apps =
                     mInjector.getPackageManagerInternal().queryIntentActivities(
                             launchIntent,
@@ -371,9 +360,7 @@
             }
             throw new SecurityException("Attempt to launch activity without "
                     + " category Intent.CATEGORY_LAUNCHER or activity is not exported" + component);
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        });
     }
 
     @Override
@@ -385,7 +372,13 @@
                     "INTERACT_ACROSS_USERS or INTERACT_ACROSS_USERS_FULL is required to set the"
                             + " app-op for interacting across profiles.");
         }
-        final int callingUserId = mInjector.getCallingUserId();
+        if (!isPermissionGranted(Manifest.permission.MANAGE_APP_OPS_MODES, callingUid)
+                && !isPermissionGranted(
+                        Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES, callingUid)) {
+            throw new SecurityException(
+                    "MANAGE_APP_OPS_MODES or CONFIGURE_INTERACT_ACROSS_PROFILES is required to set"
+                            + " the app-op for interacting across profiles.");
+        }
         if (newMode == AppOpsManager.MODE_ALLOWED
                 && !canConfigureInteractAcrossProfiles(packageName)) {
             // The user should not be prompted for apps that cannot request to interact across
@@ -395,7 +388,8 @@
             return;
         }
         final int[] profileIds =
-                mInjector.getUserManager().getProfileIds(callingUserId, /* enabledOnly= */ false);
+                mInjector.getUserManager()
+                        .getProfileIds(mInjector.getCallingUserId(), /* enabledOnly= */ false);
         for (int profileId : profileIds) {
             if (!isPackageInstalled(packageName, profileId)) {
                 continue;
@@ -406,8 +400,7 @@
 
     private boolean isPackageInstalled(String packageName, @UserIdInt int userId) {
         final int callingUid = mInjector.getCallingUid();
-        final long identity = mInjector.clearCallingIdentity();
-        try {
+        return mInjector.withCleanCallingIdentity(() -> {
             final PackageInfo info =
                     mInjector.getPackageManagerInternal()
                             .getPackageInfo(
@@ -416,9 +409,7 @@
                                     callingUid,
                                     userId);
             return info != null;
-        } finally {
-            mInjector.restoreCallingIdentity(identity);
-        }
+        });
     }
 
     private void setInteractAcrossProfilesAppOpForUser(
@@ -440,19 +431,31 @@
                     + packageName + " on user ID " + userId);
             return;
         }
-        mInjector.getAppOpsManager()
-                .setMode(OP_INTERACT_ACROSS_PROFILES,
-                        uid,
-                        packageName,
-                        newMode);
+        final int callingUid = mInjector.getCallingUid();
+        if (isPermissionGranted(
+                Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES, callingUid)) {
+            // Clear calling identity since the CONFIGURE_INTERACT_ACROSS_PROFILES permission allows
+            // this particular app-op to be modified without the broader app-op permissions.
+            mInjector.withCleanCallingIdentity(() ->
+                    mInjector.getAppOpsManager()
+                            .setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode));
+        } else {
+            mInjector.getAppOpsManager()
+                    .setMode(OP_INTERACT_ACROSS_PROFILES, uid, packageName, newMode);
+        }
         sendCanInteractAcrossProfilesChangedBroadcast(packageName, uid, UserHandle.of(userId));
     }
 
+    /**
+     * Returns whether the given app-op mode is equivalent to the currently-set app-op of the given
+     * package name and UID. Clears identity to avoid permission checks, so ensure the caller does
+     * any necessary permission checks.
+     */
     private boolean currentModeEquals(@Mode int otherMode, String packageName, int uid) {
         final String op =
                 AppOpsManager.permissionToOp(Manifest.permission.INTERACT_ACROSS_PROFILES);
-        return otherMode ==
-                mInjector.getAppOpsManager().unsafeCheckOpNoThrow(op, uid, packageName);
+        return mInjector.withCleanCallingIdentity(() -> otherMode
+                == mInjector.getAppOpsManager().unsafeCheckOpNoThrow(op, uid, packageName));
     }
 
     private void sendCanInteractAcrossProfilesChangedBroadcast(
@@ -493,8 +496,7 @@
     }
 
     private boolean hasOtherProfileWithPackageInstalled(String packageName, @UserIdInt int userId) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
+        return mInjector.withCleanCallingIdentity(() -> {
             final int[] profileIds =
                     mInjector.getUserManager().getProfileIds(userId, /* enabledOnly= */ false);
             for (int profileId : profileIds) {
@@ -502,10 +504,8 @@
                     return true;
                 }
             }
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
-        return false;
+            return false;
+        });
     }
 
     @Override
@@ -525,12 +525,8 @@
     }
 
     private boolean isSameProfileGroup(@UserIdInt int callerUserId, @UserIdInt int userId) {
-        final long ident = mInjector.clearCallingIdentity();
-        try {
-            return mInjector.getUserManager().isSameProfileGroup(callerUserId, userId);
-        } finally {
-            mInjector.restoreCallingIdentity(ident);
-        }
+        return mInjector.withCleanCallingIdentity(() ->
+                mInjector.getUserManager().isSameProfileGroup(callerUserId, userId));
     }
 
     /**
@@ -545,12 +541,11 @@
                 permission, uid, /* owningUid= */-1, /* exported= */ true);
     }
 
-    private AppOpsService getAppOpsService() {
-        if (mAppOpsService == null) {
-            IBinder b = ServiceManager.getService(Context.APP_OPS_SERVICE);
-            mAppOpsService = (AppOpsService) IAppOpsService.Stub.asInterface(b);
+    private AppOpsManager getAppOpsManager() {
+        if (mAppOpsManager == null) {
+            mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
         }
-        return mAppOpsService;
+        return mAppOpsManager;
     }
 
     private static class InjectorImpl implements Injector {
@@ -560,42 +555,62 @@
             mContext = context;
         }
 
+        @Override
         public int getCallingUid() {
             return Binder.getCallingUid();
         }
 
+        @Override
         public int getCallingPid() {
             return Binder.getCallingPid();
         }
 
+        @Override
         public int getCallingUserId() {
             return UserHandle.getCallingUserId();
         }
 
+        @Override
         public UserHandle getCallingUserHandle() {
             return Binder.getCallingUserHandle();
         }
 
+        @Override
         public long clearCallingIdentity() {
             return Binder.clearCallingIdentity();
         }
 
+        @Override
         public void restoreCallingIdentity(long token) {
             Binder.restoreCallingIdentity(token);
         }
 
+        @Override
+        public void withCleanCallingIdentity(ThrowingRunnable action) {
+            Binder.withCleanCallingIdentity(action);
+        }
+
+        @Override
+        public final <T> T withCleanCallingIdentity(ThrowingSupplier<T> action) {
+            return Binder.withCleanCallingIdentity(action);
+        }
+
+        @Override
         public UserManager getUserManager() {
             return mContext.getSystemService(UserManager.class);
         }
 
+        @Override
         public PackageManagerInternal getPackageManagerInternal() {
             return LocalServices.getService(PackageManagerInternal.class);
         }
 
+        @Override
         public PackageManager getPackageManager() {
             return mContext.getPackageManager();
         }
 
+        @Override
         public AppOpsManager getAppOpsManager() {
             return mContext.getSystemService(AppOpsManager.class);
         }
@@ -646,6 +661,10 @@
 
         void restoreCallingIdentity(long token);
 
+        void withCleanCallingIdentity(ThrowingRunnable action);
+
+        <T> T withCleanCallingIdentity(ThrowingSupplier<T> action);
+
         UserManager getUserManager();
 
         PackageManagerInternal getPackageManagerInternal();
@@ -666,4 +685,30 @@
 
         int checkComponentPermission(String permission, int uid, int owningUid, boolean exported);
     }
+
+    class LocalService extends CrossProfileAppsInternal {
+        @Override
+        public boolean verifyPackageHasInteractAcrossProfilePermission(String packageName,
+                @UserIdInt int userId) throws PackageManager.NameNotFoundException {
+            final int uid = Objects.requireNonNull(
+                    mInjector.getPackageManager().getApplicationInfoAsUser(
+                            Objects.requireNonNull(packageName), /* flags= */ 0, userId)).uid;
+            return verifyUidHasInteractAcrossProfilePermission(packageName, uid);
+        }
+
+        @Override
+        public boolean verifyUidHasInteractAcrossProfilePermission(String packageName, int uid) {
+            Objects.requireNonNull(packageName);
+
+            return isPermissionGranted(Manifest.permission.INTERACT_ACROSS_USERS_FULL, uid)
+                    || isPermissionGranted(Manifest.permission.INTERACT_ACROSS_USERS, uid)
+                    || isPermissionGranted(Manifest.permission.INTERACT_ACROSS_PROFILES, uid)
+                    || PermissionChecker.checkPermissionForPreflight(
+                            mContext,
+                            Manifest.permission.INTERACT_ACROSS_PROFILES,
+                            PermissionChecker.PID_UNKNOWN,
+                            uid,
+                            packageName) == PermissionChecker.PERMISSION_GRANTED;
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/pm/DataLoaderManagerService.java b/services/core/java/com/android/server/pm/DataLoaderManagerService.java
index 50cd0fc..4fc9e90 100644
--- a/services/core/java/com/android/server/pm/DataLoaderManagerService.java
+++ b/services/core/java/com/android/server/pm/DataLoaderManagerService.java
@@ -225,9 +225,6 @@
         private void remove() {
             synchronized (mLock) {
                 mServiceConnections.remove(mId);
-                if (mServiceConnections.size() == 0) {
-                    mServiceConnections = null;
-                }
             }
             mParams.clear();
         }
diff --git a/services/core/java/com/android/server/pm/Installer.java b/services/core/java/com/android/server/pm/Installer.java
index f962eed..8ad3e9d 100644
--- a/services/core/java/com/android/server/pm/Installer.java
+++ b/services/core/java/com/android/server/pm/Installer.java
@@ -234,12 +234,12 @@
     }
 
     public void moveCompleteApp(String fromUuid, String toUuid, String packageName,
-            String dataAppName, int appId, String seInfo, int targetSdkVersion)
-            throws InstallerException {
+            String dataAppName, int appId, String seInfo, int targetSdkVersion,
+            String fromCodePath) throws InstallerException {
         if (!checkBeforeRemote()) return;
         try {
             mInstalld.moveCompleteApp(fromUuid, toUuid, packageName, dataAppName, appId, seInfo,
-                    targetSdkVersion);
+                    targetSdkVersion, fromCodePath);
         } catch (Exception e) {
             throw InstallerException.from(e);
         }
@@ -450,16 +450,6 @@
         }
     }
 
-    public void markBootComplete(String instructionSet) throws InstallerException {
-        assertValidInstructionSet(instructionSet);
-        if (!checkBeforeRemote()) return;
-        try {
-            mInstalld.markBootComplete(instructionSet);
-        } catch (Exception e) {
-            throw InstallerException.from(e);
-        }
-    }
-
     public void freeCache(String uuid, long targetFreeBytes, long cacheReservedBytes, int flags)
             throws InstallerException {
         if (!checkBeforeRemote()) return;
@@ -621,10 +611,10 @@
     /**
      * Bind mount private volume CE and DE mirror storage.
      */
-    public void onPrivateVolumeMounted(String volumeUuid) throws InstallerException {
+    public void tryMountDataMirror(String volumeUuid) throws InstallerException {
         if (!checkBeforeRemote()) return;
         try {
-            mInstalld.onPrivateVolumeMounted(volumeUuid);
+            mInstalld.tryMountDataMirror(volumeUuid);
         } catch (Exception e) {
             throw InstallerException.from(e);
         }
diff --git a/services/core/java/com/android/server/pm/InstantAppResolver.java b/services/core/java/com/android/server/pm/InstantAppResolver.java
index 8333ae5..0b0f139 100644
--- a/services/core/java/com/android/server/pm/InstantAppResolver.java
+++ b/services/core/java/com/android/server/pm/InstantAppResolver.java
@@ -222,6 +222,7 @@
                         sanitizedIntent,
                         failureIntent,
                         requestObj.callingPackage,
+                        requestObj.callingFeatureId,
                         requestObj.verificationBundle,
                         requestObj.resolvedType,
                         requestObj.userId,
@@ -266,6 +267,7 @@
             @NonNull Intent sanitizedIntent,
             @Nullable Intent failureIntent,
             @NonNull String callingPackage,
+            @Nullable String callingFeatureId,
             @Nullable Bundle verificationBundle,
             @NonNull String resolvedType,
             int userId,
@@ -308,9 +310,10 @@
                         onFailureIntent = failureIntent;
                     }
                     final IIntentSender failureIntentTarget = ActivityManager.getService()
-                            .getIntentSender(
+                            .getIntentSenderWithFeature(
                                     ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage,
-                                    null /*token*/, null /*resultWho*/, 1 /*requestCode*/,
+                                    callingFeatureId, null /*token*/, null /*resultWho*/,
+                                    1 /*requestCode*/,
                                     new Intent[] { onFailureIntent },
                                     new String[] { resolvedType },
                                     PendingIntent.FLAG_CANCEL_CURRENT
@@ -328,9 +331,10 @@
             successIntent.setLaunchToken(token);
             try {
                 final IIntentSender successIntentTarget = ActivityManager.getService()
-                        .getIntentSender(
+                        .getIntentSenderWithFeature(
                                 ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage,
-                                null /*token*/, null /*resultWho*/, 0 /*requestCode*/,
+                                callingFeatureId, null /*token*/, null /*resultWho*/,
+                                0 /*requestCode*/,
                                 new Intent[] { successIntent },
                                 new String[] { resolvedType },
                                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT
diff --git a/services/core/java/com/android/server/pm/LauncherAppsService.java b/services/core/java/com/android/server/pm/LauncherAppsService.java
index c4ef856..f93c663 100644
--- a/services/core/java/com/android/server/pm/LauncherAppsService.java
+++ b/services/core/java/com/android/server/pm/LauncherAppsService.java
@@ -16,7 +16,9 @@
 
 package com.android.server.pm;
 
+import android.Manifest.permission;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
@@ -29,11 +31,14 @@
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentSender;
+import android.content.LocusId;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ILauncherApps;
 import android.content.pm.IOnAppsChangedListener;
 import android.content.pm.IPackageInstallerCallback;
+import android.content.pm.IPackageManager;
+import android.content.pm.IShortcutChangeCallback;
 import android.content.pm.LauncherApps;
 import android.content.pm.LauncherApps.ShortcutQuery;
 import android.content.pm.PackageInfo;
@@ -69,7 +74,6 @@
 import com.android.internal.content.PackageMonitor;
 import com.android.internal.os.BackgroundThread;
 import com.android.internal.util.ArrayUtils;
-import com.android.internal.util.Preconditions;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
 import com.android.server.wm.ActivityTaskManagerInternal;
@@ -119,6 +123,7 @@
 
         private final Context mContext;
         private final UserManager mUm;
+        private final IPackageManager mIPM;
         private final UserManagerInternal mUserManagerInternal;
         private final UsageStatsManagerInternal mUsageStatsManagerInternal;
         private final ActivityManagerInternal mActivityManagerInternal;
@@ -136,6 +141,7 @@
 
         public LauncherAppsImpl(Context context) {
             mContext = context;
+            mIPM = AppGlobals.getPackageManager();
             mUm = (UserManager) mContext.getSystemService(Context.USER_SERVICE);
             mUserManagerInternal = Objects.requireNonNull(
                     LocalServices.getService(UserManagerInternal.class));
@@ -301,6 +307,10 @@
             final int callingUserId = injectCallingUserId();
 
             if (targetUserId == callingUserId) return true;
+            if (mContext.checkCallingOrSelfPermission(permission.INTERACT_ACROSS_USERS_FULL)
+                    == PackageManager.PERMISSION_GRANTED) {
+                return true;
+            }
 
             long ident = injectClearCallingIdentity();
             try {
@@ -657,10 +667,27 @@
             }
         }
 
+        private void ensureStrictAccessShortcutsPermission(@NonNull String callingPackage) {
+            verifyCallingPackage(callingPackage);
+            if (!injectHasAccessShortcutsPermission(injectBinderCallingPid(),
+                    injectBinderCallingUid())) {
+                throw new SecurityException("Caller can't access shortcut information");
+            }
+        }
+
+        /**
+         * Returns true if the caller has the "ACCESS_SHORTCUTS" permission.
+         */
+        @VisibleForTesting
+        boolean injectHasAccessShortcutsPermission(int callingPid, int callingUid) {
+            return mContext.checkPermission(android.Manifest.permission.ACCESS_SHORTCUTS,
+                    callingPid, callingUid) == PackageManager.PERMISSION_GRANTED;
+        }
+
         @Override
         public ParceledListSlice getShortcuts(String callingPackage, long changedSince,
-                String packageName, List shortcutIds, ComponentName componentName, int flags,
-                UserHandle targetUser) {
+                String packageName, List shortcutIds, List<LocusId> locusIds,
+                ComponentName componentName, int flags, UserHandle targetUser) {
             ensureShortcutPermission(callingPackage);
             if (!canAccessProfile(targetUser.getIdentifier(), "Cannot get shortcuts")) {
                 return new ParceledListSlice<>(Collections.EMPTY_LIST);
@@ -669,16 +696,31 @@
                 throw new IllegalArgumentException(
                         "To query by shortcut ID, package name must also be set");
             }
+            if (locusIds != null && packageName == null) {
+                throw new IllegalArgumentException(
+                        "To query by locus ID, package name must also be set");
+            }
 
             // TODO(b/29399275): Eclipse compiler requires explicit List<ShortcutInfo> cast below.
             return new ParceledListSlice<>((List<ShortcutInfo>)
                     mShortcutServiceInternal.getShortcuts(getCallingUserId(),
-                            callingPackage, changedSince, packageName, shortcutIds,
+                            callingPackage, changedSince, packageName, shortcutIds, locusIds,
                             componentName, flags, targetUser.getIdentifier(),
                             injectBinderCallingPid(), injectBinderCallingUid()));
         }
 
         @Override
+        public void registerShortcutChangeCallback(String callingPackage, long changedSince,
+                String packageName, List shortcutIds, List<LocusId> locusIds,
+                ComponentName componentName, int flags, IShortcutChangeCallback callback,
+                int callbackId) {
+        }
+
+        @Override
+        public void unregisterShortcutChangeCallback(String callingPackage, int callbackId) {
+        }
+
+        @Override
         public void pinShortcuts(String callingPackage, String packageName, List<String> ids,
                 UserHandle targetUser) {
             ensureShortcutPermission(callingPackage);
@@ -691,6 +733,30 @@
         }
 
         @Override
+        public void cacheShortcuts(String callingPackage, String packageName, List<String> ids,
+                UserHandle targetUser) {
+            ensureStrictAccessShortcutsPermission(callingPackage);
+            if (!canAccessProfile(targetUser.getIdentifier(), "Cannot cache shortcuts")) {
+                return;
+            }
+
+            mShortcutServiceInternal.cacheShortcuts(getCallingUserId(),
+                    callingPackage, packageName, ids, targetUser.getIdentifier());
+        }
+
+        @Override
+        public void uncacheShortcuts(String callingPackage, String packageName, List<String> ids,
+                UserHandle targetUser) {
+            ensureStrictAccessShortcutsPermission(callingPackage);
+            if (!canAccessProfile(targetUser.getIdentifier(), "Cannot uncache shortcuts")) {
+                return;
+            }
+
+            mShortcutServiceInternal.uncacheShortcuts(getCallingUserId(),
+                    callingPackage, packageName, ids, targetUser.getIdentifier());
+        }
+
+        @Override
         public int getShortcutIconResId(String callingPackage, String packageName, String id,
                 int targetUserId) {
             ensureShortcutPermission(callingPackage);
@@ -722,8 +788,9 @@
         }
 
         @Override
-        public boolean startShortcut(String callingPackage, String packageName, String shortcutId,
-                Rect sourceBounds, Bundle startActivityOptions, int targetUserId) {
+        public boolean startShortcut(String callingPackage, String packageName, String featureId,
+                String shortcutId, Rect sourceBounds, Bundle startActivityOptions,
+                int targetUserId) {
             verifyCallingPackage(callingPackage);
             if (!canAccessProfile(targetUserId, "Cannot start activity")) {
                 return false;
@@ -747,15 +814,16 @@
             intents[0].setSourceBounds(sourceBounds);
 
             return startShortcutIntentsAsPublisher(
-                    intents, packageName, startActivityOptions, targetUserId);
+                    intents, packageName, featureId, startActivityOptions, targetUserId);
         }
 
         private boolean startShortcutIntentsAsPublisher(@NonNull Intent[] intents,
-                @NonNull String publisherPackage, Bundle startActivityOptions, int userId) {
+                @NonNull String publisherPackage, @Nullable String publishedFeatureId,
+                Bundle startActivityOptions, int userId) {
             final int code;
             try {
                 code = mActivityTaskManagerInternal.startActivitiesAsPackage(publisherPackage,
-                        userId, intents, startActivityOptions);
+                        publishedFeatureId, userId, intents, startActivityOptions);
                 if (ActivityManager.isStartResultSuccessful(code)) {
                     return true; // Success
                 } else {
@@ -781,6 +849,17 @@
             final int callingUid = injectBinderCallingUid();
             long ident = Binder.clearCallingIdentity();
             try {
+                final int state = mIPM.getComponentEnabledSetting(component, user.getIdentifier());
+                switch (state) {
+                    case PackageManager.COMPONENT_ENABLED_STATE_DEFAULT:
+                        break; // Need to check the manifest's enabled state.
+                    case PackageManager.COMPONENT_ENABLED_STATE_ENABLED:
+                        return true;
+                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED:
+                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_USER:
+                    case PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED:
+                        return false;
+                }
                 final PackageManagerInternal pmInt =
                         LocalServices.getService(PackageManagerInternal.class);
                 ActivityInfo info = pmInt.getActivityInfo(component,
@@ -799,8 +878,8 @@
 
         @Override
         public void startSessionDetailsActivityAsUser(IApplicationThread caller,
-                String callingPackage, SessionInfo sessionInfo, Rect sourceBounds,
-                Bundle opts, UserHandle userHandle) throws RemoteException {
+                String callingPackage, String callingFeatureId, SessionInfo sessionInfo,
+                Rect sourceBounds, Bundle opts, UserHandle userHandle) throws RemoteException {
             int userId = userHandle.getIdentifier();
             if (!canAccessProfile(userId, "Cannot start details activity")) {
                 return;
@@ -816,13 +895,13 @@
                             .authority(callingPackage).build());
             i.setSourceBounds(sourceBounds);
 
-            mActivityTaskManagerInternal.startActivityAsUser(caller, callingPackage, i, opts,
-                    userId);
+            mActivityTaskManagerInternal.startActivityAsUser(caller, callingPackage,
+                    callingFeatureId, i, opts, userId);
         }
 
         @Override
         public void startActivityAsUser(IApplicationThread caller, String callingPackage,
-                ComponentName component, Rect sourceBounds,
+                String callingFeatureId, ComponentName component, Rect sourceBounds,
                 Bundle opts, UserHandle user) throws RemoteException {
             if (!canAccessProfile(user.getIdentifier(), "Cannot start activity")) {
                 return;
@@ -876,12 +955,12 @@
                 Binder.restoreCallingIdentity(ident);
             }
             mActivityTaskManagerInternal.startActivityAsUser(caller, callingPackage,
-                    launchIntent, opts, user.getIdentifier());
+                    callingFeatureId, launchIntent, opts, user.getIdentifier());
         }
 
         @Override
         public void showAppDetailsAsUser(IApplicationThread caller,
-                String callingPackage, ComponentName component,
+                String callingPackage, String callingFeatureId, ComponentName component,
                 Rect sourceBounds, Bundle opts, UserHandle user) throws RemoteException {
             if (!canAccessProfile(user.getIdentifier(), "Cannot show app details")) {
                 return;
@@ -899,7 +978,7 @@
                 Binder.restoreCallingIdentity(ident);
             }
             mActivityTaskManagerInternal.startActivityAsUser(caller, callingPackage,
-                    intent, opts, user.getIdentifier());
+                    callingFeatureId, intent, opts, user.getIdentifier());
         }
 
         /** Checks if user is a profile of or same as listeningUser.
@@ -1124,7 +1203,7 @@
                                 mShortcutServiceInternal.getShortcuts(launcherUserId,
                                         cookie.packageName,
                                         /* changedSince= */ 0, packageName, /* shortcutIds=*/ null,
-                                        /* component= */ null,
+                                        /* locusIds=*/ null, /* component= */ null,
                                         ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY
                                         | ShortcutQuery.FLAG_MATCH_ALL_KINDS_WITH_ALL_PINNED
                                         , userId, cookie.callingPid, cookie.callingUid);
diff --git a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
index e550bae..482fc49 100644
--- a/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
+++ b/services/core/java/com/android/server/pm/PackageAbiHelperImpl.java
@@ -344,18 +344,10 @@
                 int abi64 = PackageManager.NO_NATIVE_LIBRARIES;
                 if (Build.SUPPORTED_32_BIT_ABIS.length > 0) {
                     if (extractLibs) {
-                        if (onIncremental) {
-                            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER,
-                                    "incrementalNativeBinaries");
-                            abi32 = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
-                                    handle, nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
-                                    useIsaSpecificSubdirs);
-                        } else {
-                            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
-                            abi32 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
-                                    nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
-                                    useIsaSpecificSubdirs);
-                        }
+                        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+                        abi32 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+                                nativeLibraryRoot, Build.SUPPORTED_32_BIT_ABIS,
+                                useIsaSpecificSubdirs, onIncremental);
                     } else {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
                         abi32 = NativeLibraryHelper.findSupportedAbi(
@@ -375,18 +367,10 @@
 
                 if (Build.SUPPORTED_64_BIT_ABIS.length > 0) {
                     if (extractLibs) {
-                        if (onIncremental) {
-                            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER,
-                                    "incrementalNativeBinaries");
-                            abi64 = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
-                                    handle, nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
-                                    useIsaSpecificSubdirs);
-                        } else {
-                            Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
-                            abi64 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
-                                    nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
-                                    useIsaSpecificSubdirs);
-                        }
+                        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+                        abi64 = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+                                nativeLibraryRoot, Build.SUPPORTED_64_BIT_ABIS,
+                                useIsaSpecificSubdirs, onIncremental);
                     } else {
                         Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
                         abi64 = NativeLibraryHelper.findSupportedAbi(
@@ -437,15 +421,9 @@
 
                 final int copyRet;
                 if (extractLibs) {
-                    if (onIncremental) {
-                        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "incrementalNativeBinaries");
-                        copyRet = NativeLibraryHelper.configureNativeBinariesForSupportedAbi(pkg,
-                                handle, nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
-                    } else {
-                        Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
-                        copyRet = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
-                                nativeLibraryRoot, abiList, useIsaSpecificSubdirs);
-                    }
+                    Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "copyNativeBinaries");
+                    copyRet = NativeLibraryHelper.copyNativeBinariesForSupportedAbi(handle,
+                            nativeLibraryRoot, abiList, useIsaSpecificSubdirs, onIncremental);
                 } else {
                     Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "findSupportedAbi");
                     copyRet = NativeLibraryHelper.findSupportedAbi(handle, abiList);
diff --git a/services/core/java/com/android/server/pm/PackageInstallerService.java b/services/core/java/com/android/server/pm/PackageInstallerService.java
index c17ad11..33ef2d4 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerService.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerService.java
@@ -129,6 +129,13 @@
     /** Upper bound on number of historical sessions for a UID */
     private static final long MAX_HISTORICAL_SESSIONS = 1048576;
 
+    /**
+     * Allow verification-skipping if it's a development app installed through ADB with
+     * disable verification flag specified.
+     */
+    private static final int ADB_DEV_MODE = PackageManager.INSTALL_FROM_ADB
+            | PackageManager.INSTALL_ALLOW_TEST;
+
     private final Context mContext;
     private final PackageManagerService mPm;
     private final ApexManager mApexManager;
@@ -531,8 +538,10 @@
             params.installFlags &= ~PackageManager.INSTALL_REQUEST_DOWNGRADE;
         }
 
-        if (callingUid != Process.SYSTEM_UID) {
-            // Only system_server can use INSTALL_DISABLE_VERIFICATION.
+        if (callingUid != Process.SYSTEM_UID
+                && (params.installFlags & ADB_DEV_MODE) != ADB_DEV_MODE) {
+            // Only system_server or tools under specific conditions (test app installed
+            // through ADB, and verification disabled flag specified) can disable verification.
             params.installFlags &= ~PackageManager.INSTALL_DISABLE_VERIFICATION;
         }
 
@@ -635,6 +644,13 @@
                 stageCid = buildExternalStageCid(sessionId);
             }
         }
+
+        // reset the force queryable param if it's not called by an approved caller.
+        if (params.forceQueryableOverride) {
+            if (callingUid != Process.SHELL_UID && callingUid != Process.ROOT_UID) {
+                params.forceQueryableOverride = false;
+            }
+        }
         InstallSource installSource = InstallSource.create(installerPackageName,
                 originatingPackageName, requestedInstallerPackageName);
         session = new PackageInstallerSession(mInternalCallback, mContext, mPm, this,
diff --git a/services/core/java/com/android/server/pm/PackageInstallerSession.java b/services/core/java/com/android/server/pm/PackageInstallerSession.java
index 43ed25f..0e554f8 100644
--- a/services/core/java/com/android/server/pm/PackageInstallerSession.java
+++ b/services/core/java/com/android/server/pm/PackageInstallerSession.java
@@ -130,6 +130,7 @@
 import com.android.server.security.VerityUtils;
 
 import libcore.io.IoUtils;
+import libcore.util.EmptyArray;
 
 import org.xmlpull.v1.XmlPullParser;
 import org.xmlpull.v1.XmlPullParserException;
@@ -147,17 +148,15 @@
 import java.util.Objects;
 import java.util.Set;
 import java.util.concurrent.atomic.AtomicInteger;
-import java.util.stream.Collectors;
 
 public class PackageInstallerSession extends IPackageInstallerSession.Stub {
     private static final String TAG = "PackageInstallerSession";
     private static final boolean LOGD = true;
     private static final String REMOVE_MARKER_EXTENSION = ".removed";
 
-    private static final int MSG_COMMIT = 1;
-    private static final int MSG_ON_PACKAGE_INSTALLED = 2;
-    private static final int MSG_SEAL = 3;
-    private static final int MSG_STREAM_AND_VALIDATE = 4;
+    private static final int MSG_STREAM_VALIDATE_AND_COMMIT = 1;
+    private static final int MSG_INSTALL = 2;
+    private static final int MSG_ON_PACKAGE_INSTALLED = 3;
 
     /** XML constants used for persisting a session */
     static final String TAG_SESSION = "session";
@@ -215,7 +214,8 @@
     private static final String ATTR_SIGNATURE = "signature";
 
     private static final String PROPERTY_NAME_INHERIT_NATIVE = "pi.inherit_native_on_dont_kill";
-    private static final int[] EMPTY_CHILD_SESSION_ARRAY = {};
+    private static final int[] EMPTY_CHILD_SESSION_ARRAY = EmptyArray.INT;
+    private static final InstallationFile[] EMPTY_INSTALLATION_FILE_ARRAY = {};
 
     private static final String SYSTEM_DATA_LOADER_PACKAGE = "android";
 
@@ -310,33 +310,8 @@
     @GuardedBy("mLock")
     private int mParentSessionId;
 
-    static class FileInfo {
-        public final int location;
-        public final String name;
-        public final Long lengthBytes;
-        public final byte[] metadata;
-        public final byte[] signature;
-
-        public static FileInfo added(int location, String name, Long lengthBytes, byte[] metadata,
-                byte[] signature) {
-            return new FileInfo(location, name, lengthBytes, metadata, signature);
-        }
-
-        public static FileInfo removed(int location, String name) {
-            return new FileInfo(location, name, -1L, null, null);
-        }
-
-        FileInfo(int location, String name, Long lengthBytes, byte[] metadata, byte[] signature) {
-            this.location = location;
-            this.name = name;
-            this.lengthBytes = lengthBytes;
-            this.metadata = metadata;
-            this.signature = signature;
-        }
-    }
-
     @GuardedBy("mLock")
-    private ArrayList<FileInfo> mFiles = new ArrayList<>();
+    private ArrayList<InstallationFile> mFiles = new ArrayList<>();
 
     @GuardedBy("mLock")
     private boolean mStagedSessionApplied;
@@ -378,8 +353,6 @@
     // TODO(b/146080380): merge file list with Callback installation.
     private IncrementalFileStorages mIncrementalFileStorages;
 
-    private static final String[] EMPTY_STRING_ARRAY = new String[]{};
-
     private static final FileFilter sAddedApkFilter = new FileFilter() {
         @Override
         public boolean accept(File file) {
@@ -415,14 +388,11 @@
         @Override
         public boolean handleMessage(Message msg) {
             switch (msg.what) {
-                case MSG_SEAL:
-                    handleSeal((IntentSender) msg.obj);
+                case MSG_STREAM_VALIDATE_AND_COMMIT:
+                    handleStreamValidateAndCommit();
                     break;
-                case MSG_STREAM_AND_VALIDATE:
-                    handleStreamAndValidate();
-                    break;
-                case MSG_COMMIT:
-                    handleCommit();
+                case MSG_INSTALL:
+                    handleInstall();
                     break;
                 case MSG_ON_PACKAGE_INSTALLED:
                     final SomeArgs args = (SomeArgs) msg.obj;
@@ -514,7 +484,7 @@
             PackageSessionProvider sessionProvider, Looper looper, StagingManager stagingManager,
             int sessionId, int userId, int installerUid, @NonNull InstallSource installSource,
             SessionParams params, long createdMillis,
-            File stageDir, String stageCid, FileInfo[] files, boolean prepared,
+            File stageDir, String stageCid, InstallationFile[] files, boolean prepared,
             boolean committed, boolean sealed,
             @Nullable int[] childSessionIds, int parentSessionId, boolean isReady,
             boolean isFailed, boolean isApplied, int stagedSessionErrorCode,
@@ -545,7 +515,7 @@
         this.mParentSessionId = parentSessionId;
 
         if (files != null) {
-            for (FileInfo file : files) {
+            for (InstallationFile file : files) {
                 mFiles.add(file);
             }
         }
@@ -564,21 +534,25 @@
         mStagedSessionErrorMessage =
                 stagedSessionErrorMessage != null ? stagedSessionErrorMessage : "";
 
-        // TODO(b/136132412): sanity check if session should not be incremental
-        if (!params.isStaged && isIncrementalInstallation()) {
-            IncrementalManager incrementalManager = (IncrementalManager) mContext.getSystemService(
-                    Context.INCREMENTAL_SERVICE);
-            if (incrementalManager != null) {
-                mIncrementalFileStorages =
-                        new IncrementalFileStorages(mPackageName, stageDir, incrementalManager,
-                                params.dataLoaderParams);
+        if (isDataLoaderInstallation()) {
+            if (isApexInstallation()) {
+                throw new IllegalArgumentException(
+                        "DataLoader installation of APEX modules is not allowed.");
+            }
+            if (this.params.dataLoaderParams.getComponentName().getPackageName()
+                    == SYSTEM_DATA_LOADER_PACKAGE) {
+                assertShellOrSystemCalling("System data loaders");
             }
         }
 
-        if (isStreamingInstallation()
-                && this.params.dataLoaderParams.getComponentName().getPackageName()
-                == SYSTEM_DATA_LOADER_PACKAGE) {
-            assertShellOrSystemCalling("System data loaders");
+        if (isIncrementalInstallation()) {
+            if (!IncrementalManager.isAllowed()) {
+                throw new IllegalArgumentException("Incremental installation not allowed.");
+            }
+            if (!isIncrementalInstallationAllowed(mPackageName)) {
+                throw new IllegalArgumentException(
+                        "Incremental installation of this package is not allowed.");
+            }
         }
     }
 
@@ -736,26 +710,37 @@
         if (!isDataLoaderInstallation()) {
             String[] result = stageDir.list();
             if (result == null) {
-                result = EMPTY_STRING_ARRAY;
+                result = EmptyArray.STRING;
             }
             return result;
         }
-        return mFiles.stream().map(fileInfo -> fileInfo.name).toArray(String[]::new);
+
+        String[] result = new String[mFiles.size()];
+        for (int i = 0, size = mFiles.size(); i < size; ++i) {
+            result[i] = mFiles.get(i).getName();
+        }
+        return result;
     }
 
-    private static File[] filterFiles(File parent, String[] names, FileFilter filter) {
-        return Arrays.stream(names).map(name -> new File(parent, name)).filter(
-                file -> filter.accept(file)).toArray(File[]::new);
+    private static ArrayList<File> filterFiles(File parent, String[] names, FileFilter filter) {
+        ArrayList<File> result = new ArrayList<>(names.length);
+        for (String name : names) {
+            File file = new File(parent, name);
+            if (filter.accept(file)) {
+                result.add(file);
+            }
+        }
+        return result;
     }
 
     @GuardedBy("mLock")
-    private File[] getAddedApksLocked() {
+    private List<File> getAddedApksLocked() {
         String[] names = getNamesLocked();
         return filterFiles(stageDir, names, sAddedApkFilter);
     }
 
     @GuardedBy("mLock")
-    private File[] getRemovedFilesLocked() {
+    private List<File> getRemovedFilesLocked() {
         String[] names = getNamesLocked();
         return filterFiles(stageDir, names, sRemovedFilter);
     }
@@ -1011,24 +996,7 @@
                             + mParentSessionId +  " and may not be committed directly.");
         }
 
-        assertCanBeCommitted(forTransfer);
-
-        if (isMultiPackage()) {
-            for (int i = mChildSessionIds.size() - 1; i >= 0; --i) {
-                final int childSessionId = mChildSessionIds.keyAt(i);
-                mSessionProvider.getSession(childSessionId).assertCanBeCommitted(forTransfer);
-            }
-        }
-
-        if (mIncrementalFileStorages != null) {
-            mIncrementalFileStorages.finishSetUp();
-        }
-
-        mHandler.obtainMessage(MSG_SEAL, statusReceiver).sendToTarget();
-    }
-
-    private void handleSeal(@NonNull IntentSender statusReceiver) {
-        if (!markAsSealed(statusReceiver)) {
+        if (!markAsSealed(statusReceiver, forTransfer)) {
             return;
         }
         if (isMultiPackage()) {
@@ -1042,7 +1010,7 @@
                 // seal all children, regardless if any of them fail; we'll throw/return
                 // as appropriate once all children have been processed
                 if (!mSessionProvider.getSession(childSessionId)
-                        .markAsSealed(childIntentSender)) {
+                        .markAsSealed(childIntentSender, forTransfer)) {
                     sealFailed = true;
                 }
             }
@@ -1051,20 +1019,15 @@
             }
         }
 
-        dispatchStreamAndValidate();
+        dispatchStreamValidateAndCommit();
     }
 
-    private void dispatchStreamAndValidate() {
-        mHandler.obtainMessage(MSG_STREAM_AND_VALIDATE).sendToTarget();
+    private void dispatchStreamValidateAndCommit() {
+        mHandler.obtainMessage(MSG_STREAM_VALIDATE_AND_COMMIT).sendToTarget();
     }
 
-    private void handleStreamAndValidate() {
-        // TODO(b/136132412): update with new APIs
-        if (mIncrementalFileStorages != null) {
-            mIncrementalFileStorages.startLoading();
-        }
-
-        boolean commitFailed = !markAsCommitted();
+    private void handleStreamValidateAndCommit() {
+        boolean success = streamValidateAndCommit();
 
         if (isMultiPackage()) {
             for (int i = mChildSessionIds.size() - 1; i >= 0; --i) {
@@ -1072,26 +1035,27 @@
                 // commit all children, regardless if any of them fail; we'll throw/return
                 // as appropriate once all children have been processed
                 if (!mSessionProvider.getSession(childSessionId)
-                        .markAsCommitted()) {
-                    commitFailed = true;
+                        .streamValidateAndCommit()) {
+                    success = false;
                 }
             }
         }
 
-        if (commitFailed) {
+        if (!success) {
             return;
         }
 
-        mHandler.obtainMessage(MSG_COMMIT).sendToTarget();
+        mHandler.obtainMessage(MSG_INSTALL).sendToTarget();
     }
 
     private final class FileSystemConnector extends
             IPackageInstallerSessionFileSystemConnector.Stub {
-        final Set<String> mAddedFiles;
+        final Set<String> mAddedFiles = new ArraySet<>();
 
         FileSystemConnector(List<InstallationFile> addedFiles) {
-            mAddedFiles = addedFiles.stream().map(file -> file.getName()).collect(
-                    Collectors.toSet());
+            for (InstallationFile file : addedFiles) {
+                mAddedFiles.add(file.getName());
+            }
         }
 
         @Override
@@ -1201,9 +1165,29 @@
     }
 
     /**
-     * Sanity checks to make sure it's ok to commit the session.
+     * Checks if the package can be installed on IncFs.
      */
-    private void assertCanBeCommitted(boolean forTransfer) {
+    private static boolean isIncrementalInstallationAllowed(String packageName) {
+        final PackageManagerInternal pmi = LocalServices.getService(PackageManagerInternal.class);
+        final AndroidPackage existingPackage = pmi.getPackage(packageName);
+        if (existingPackage == null) {
+            return true;
+        }
+
+        return !PackageManagerService.isSystemApp(existingPackage);
+    }
+
+    /**
+     * If this was not already called, the session will be sealed.
+     *
+     * This method may be called multiple times to update the status receiver validate caller
+     * permissions.
+     */
+    private boolean markAsSealed(@NonNull IntentSender statusReceiver, boolean forTransfer) {
+        Objects.requireNonNull(statusReceiver);
+
+        List<PackageInstallerSession> childSessions = getChildSessions();
+
         synchronized (mLock) {
             assertCallerIsOwnerOrRootLocked();
             assertPreparedAndNotDestroyedLocked("commit");
@@ -1226,21 +1210,7 @@
                     throw new IllegalArgumentException("Session has been transferred");
                 }
             }
-        }
-    }
 
-    /**
-     * If this was not already called, the session will be sealed.
-     *
-     * This method may be called multiple times to update the status receiver validate caller
-     * permissions.
-     */
-    private boolean markAsSealed(@NonNull IntentSender statusReceiver) {
-        Objects.requireNonNull(statusReceiver);
-
-        List<PackageInstallerSession> childSessions = getChildSessions();
-
-        synchronized (mLock) {
             mRemoteStatusReceiver = statusReceiver;
 
             // After updating the observer, we can skip re-sealing.
@@ -1263,10 +1233,8 @@
         return true;
     }
 
-    private boolean markAsCommitted() {
+    private boolean streamValidateAndCommit() {
         synchronized (mLock) {
-            Objects.requireNonNull(mRemoteStatusReceiver);
-
             if (mCommitted) {
                 return true;
             }
@@ -1398,14 +1366,10 @@
                     return false;
                 }
 
-                final PackageInfo pkgInfo = mPm.getPackageInfo(
-                        params.appPackageName, PackageManager.GET_SIGNATURES
-                                | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId);
-
                 if (isApexInstallation()) {
                     validateApexInstallLocked();
                 } else {
-                    validateApkInstallLocked(pkgInfo);
+                    validateApkInstallLocked();
                 }
             }
 
@@ -1519,7 +1483,7 @@
         mCallback.onSessionSealedBlocking(this);
     }
 
-    private void handleCommit() {
+    private void handleInstall() {
         if (isInstallerDeviceOwnerOrAffiliatedProfileOwnerLocked()) {
             DevicePolicyEventLogger
                     .createEvent(DevicePolicyEnums.INSTALL_PACKAGE)
@@ -1548,7 +1512,7 @@
 
         try {
             synchronized (mLock) {
-                commitNonStagedLocked(childSessions);
+                installNonStagedLocked(childSessions);
             }
         } catch (PackageManagerException e) {
             final String completeMsg = ExceptionUtils.getCompleteMessage(e);
@@ -1559,25 +1523,25 @@
     }
 
     @GuardedBy("mLock")
-    private void commitNonStagedLocked(List<PackageInstallerSession> childSessions)
+    private void installNonStagedLocked(List<PackageInstallerSession> childSessions)
             throws PackageManagerException {
-        final PackageManagerService.ActiveInstallSession committingSession =
+        final PackageManagerService.ActiveInstallSession installingSession =
                 makeSessionActiveLocked();
-        if (committingSession == null) {
+        if (installingSession == null) {
             return;
         }
         if (isMultiPackage()) {
-            List<PackageManagerService.ActiveInstallSession> activeChildSessions =
+            List<PackageManagerService.ActiveInstallSession> installingChildSessions =
                     new ArrayList<>(childSessions.size());
             boolean success = true;
             PackageManagerException failure = null;
             for (int i = 0; i < childSessions.size(); ++i) {
                 final PackageInstallerSession session = childSessions.get(i);
                 try {
-                    final PackageManagerService.ActiveInstallSession activeSession =
+                    final PackageManagerService.ActiveInstallSession installingChildSession =
                             session.makeSessionActiveLocked();
-                    if (activeSession != null) {
-                        activeChildSessions.add(activeSession);
+                    if (installingChildSession != null) {
+                        installingChildSessions.add(installingChildSession);
                     }
                 } catch (PackageManagerException e) {
                     failure = e;
@@ -1591,9 +1555,9 @@
                         failure.error, failure.getLocalizedMessage(), null);
                 return;
             }
-            mPm.installStage(activeChildSessions);
+            mPm.installStage(installingChildSessions);
         } else {
-            mPm.installStage(committingSession);
+            mPm.installStage(installingSession);
         }
     }
 
@@ -1696,10 +1660,7 @@
                 mInternalProgress = 0.5f;
                 computeProgressLocked(true);
 
-                // Unpack native libraries for non-incremental installation
-                if (!isIncrementalInstallation()) {
-                    extractNativeLibraries(stageDir, params.abiOverride, mayInheritNativeLibs());
-                }
+                extractNativeLibraries(stageDir, params.abiOverride, mayInheritNativeLibs());
             }
 
             // We've reached point of no return; call into PMS to install the stage.
@@ -1767,8 +1728,8 @@
     @GuardedBy("mLock")
     private void validateApexInstallLocked()
             throws PackageManagerException {
-        final File[] addedFiles = getAddedApksLocked();
-        if (ArrayUtils.isEmpty(addedFiles)) {
+        final List<File> addedFiles = getAddedApksLocked();
+        if (addedFiles.isEmpty()) {
             throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, "No packages staged");
         }
 
@@ -1777,7 +1738,7 @@
                     "Too many files for apex install");
         }
 
-        File addedFile = addedFiles[0]; // there is only one file
+        File addedFile = addedFiles.get(0); // there is only one file
 
         // Ensure file name has proper suffix
         final String sourceName = addedFile.getName();
@@ -1822,8 +1783,7 @@
      * {@link PackageManagerService}.
      */
     @GuardedBy("mLock")
-    private void validateApkInstallLocked(@Nullable PackageInfo pkgInfo)
-            throws PackageManagerException {
+    private void validateApkInstallLocked() throws PackageManagerException {
         ApkLite baseApk = null;
         mPackageName = null;
         mVersionCode = -1;
@@ -1833,6 +1793,10 @@
         mResolvedStagedFiles.clear();
         mResolvedInheritedFiles.clear();
 
+        final PackageInfo pkgInfo = mPm.getPackageInfo(
+                params.appPackageName, PackageManager.GET_SIGNATURES
+                        | PackageManager.MATCH_STATIC_SHARED_LIBRARIES /*flags*/, userId);
+
         // Partial installs must be consistent with existing install
         if (params.mode == SessionParams.MODE_INHERIT_EXISTING
                 && (pkgInfo == null || pkgInfo.applicationInfo == null)) {
@@ -1844,9 +1808,9 @@
                 && params.mode == SessionParams.MODE_INHERIT_EXISTING
                 && VerityUtils.hasFsverity(pkgInfo.applicationInfo.getBaseCodePath());
 
-        final File[] removedFiles = getRemovedFilesLocked();
+        final List<File> removedFiles = getRemovedFilesLocked();
         final List<String> removeSplitList = new ArrayList<>();
-        if (!ArrayUtils.isEmpty(removedFiles)) {
+        if (!removedFiles.isEmpty()) {
             for (File removedFile : removedFiles) {
                 final String fileName = removedFile.getName();
                 final String splitName = fileName.substring(
@@ -1855,8 +1819,8 @@
             }
         }
 
-        final File[] addedFiles = getAddedApksLocked();
-        if (ArrayUtils.isEmpty(addedFiles) && removeSplitList.size() == 0) {
+        final List<File> addedFiles = getAddedApksLocked();
+        if (addedFiles.isEmpty() && removeSplitList.size() == 0) {
             throw new PackageManagerException(INSTALL_FAILED_INVALID_APK, "No packages staged");
         }
 
@@ -2272,7 +2236,7 @@
         Slog.d(TAG, "Copied " + fromFiles.size() + " files into " + toDir);
     }
 
-    private static void extractNativeLibraries(File packageDir, String abiOverride, boolean inherit)
+    private void extractNativeLibraries(File packageDir, String abiOverride, boolean inherit)
             throws PackageManagerException {
         final File libDir = new File(packageDir, NativeLibraryHelper.LIB_DIR_NAME);
         if (!inherit) {
@@ -2284,7 +2248,7 @@
         try {
             handle = NativeLibraryHelper.Handle.create(packageDir);
             final int res = NativeLibraryHelper.copyNativeBinariesWithOverride(handle, libDir,
-                    abiOverride);
+                    abiOverride, isIncrementalInstallation());
             if (res != PackageManager.INSTALL_SUCCEEDED) {
                 throw new PackageManagerException(res,
                         "Failed to extract native libraries, res=" + res);
@@ -2306,7 +2270,7 @@
             // Mark and kick off another install pass
             synchronized (mLock) {
                 mPermissionsManuallyAccepted = true;
-                mHandler.obtainMessage(MSG_COMMIT).sendToTarget();
+                mHandler.obtainMessage(MSG_INSTALL).sendToTarget();
             }
         } else {
             destroyInternal();
@@ -2425,12 +2389,16 @@
             throw new IllegalStateException(
                     "Cannot add files to non-data loader installation session.");
         }
-        if (!isIncrementalInstallation()) {
+        if (isStreamingInstallation()) {
             if (location != LOCATION_DATA_APP) {
                 throw new IllegalArgumentException(
                         "Non-incremental installation only supports /data/app placement: " + name);
             }
         }
+        if (metadata == null) {
+            throw new IllegalArgumentException(
+                    "DataLoader installation requires valid metadata: " + name);
+        }
         // Use installer provided name for now; we always rename later
         if (!FileUtils.isValidExtFilename(name)) {
             throw new IllegalArgumentException("Invalid name: " + name);
@@ -2440,7 +2408,7 @@
             assertCallerIsOwnerOrRootLocked();
             assertPreparedAndNotSealedLocked("addFile");
 
-            mFiles.add(FileInfo.added(location, name, lengthBytes, metadata, signature));
+            mFiles.add(new InstallationFile(location, name, lengthBytes, metadata, signature));
         }
     }
 
@@ -2458,7 +2426,7 @@
             assertCallerIsOwnerOrRootLocked();
             assertPreparedAndNotSealedLocked("removeFile");
 
-            mFiles.add(FileInfo.removed(location, getRemoveMarkerName(name)));
+            mFiles.add(new InstallationFile(location, getRemoveMarkerName(name), -1, null, null));
         }
     }
 
@@ -2475,28 +2443,19 @@
             return true;
         }
 
-        final List<InstallationFile> addedFiles = mFiles.stream().filter(
-                file -> sAddedFilter.accept(new File(file.name))).map(
-                    file -> new InstallationFile(
-                        file.name, file.lengthBytes, file.metadata)).collect(
-                Collectors.toList());
-        final List<String> removedFiles = mFiles.stream().filter(
-                file -> sRemovedFilter.accept(new File(file.name))).map(
-                    file -> file.name.substring(
-                        0, file.name.length() - REMOVE_MARKER_EXTENSION.length())).collect(
-                Collectors.toList());
-
-        if (mIncrementalFileStorages != null) {
-            for (InstallationFile file : addedFiles) {
-                try {
-                    mIncrementalFileStorages.addFile(file);
-                } catch (IOException ex) {
-                    // TODO(b/146080380): add incremental-specific error code
-                    throw new PackageManagerException(INSTALL_FAILED_INTERNAL_ERROR,
-                            "Failed to add and configure Incremental File: " + file.getName(), ex);
-                }
+        final List<InstallationFile> addedFiles = new ArrayList<>(mFiles.size());
+        for (InstallationFile file : mFiles) {
+            if (sAddedFilter.accept(new File(this.stageDir, file.getName()))) {
+                addedFiles.add(file);
             }
-            return true;
+        }
+        final List<String> removedFiles = new ArrayList<>(mFiles.size());
+        for (InstallationFile file : mFiles) {
+            if (sRemovedFilter.accept(new File(this.stageDir, file.getName()))) {
+                String name = file.getName().substring(
+                        0, file.getName().length() - REMOVE_MARKER_EXTENSION.length());
+                removedFiles.add(name);
+            }
         }
 
         final DataLoaderManager dataLoaderManager = mContext.getSystemService(
@@ -2506,6 +2465,7 @@
                     "Failed to find data loader manager service");
         }
 
+        final boolean manualStartAndDestroy = !isIncrementalInstallation();
         IDataLoaderStatusListener listener = new IDataLoaderStatusListener.Stub() {
             @Override
             public void onStatusChanged(int dataLoaderId, int status) {
@@ -2525,7 +2485,11 @@
 
                     switch (status) {
                         case IDataLoaderStatusListener.DATA_LOADER_CREATED: {
-                            dataLoader.start();
+                            if (manualStartAndDestroy) {
+                                // IncrementalFileStorages will call start after all files are
+                                // created in IncFS.
+                                dataLoader.start();
+                            }
                             break;
                         }
                         case IDataLoaderStatusListener.DATA_LOADER_STARTED: {
@@ -2536,11 +2500,13 @@
                             mDataLoaderFinished = true;
                             if (hasParentSessionId()) {
                                 mSessionProvider.getSession(
-                                        mParentSessionId).dispatchStreamAndValidate();
+                                        mParentSessionId).dispatchStreamValidateAndCommit();
                             } else {
-                                dispatchStreamAndValidate();
+                                dispatchStreamValidateAndCommit();
                             }
-                            dataLoader.destroy();
+                            if (manualStartAndDestroy) {
+                                dataLoader.destroy();
+                            }
                             break;
                         }
                         case IDataLoaderStatusListener.DATA_LOADER_IMAGE_NOT_READY: {
@@ -2548,7 +2514,9 @@
                             onSessionVerificationFailure(
                                     new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE,
                                             "Failed to prepare image."));
-                            dataLoader.destroy();
+                            if (manualStartAndDestroy) {
+                                dataLoader.destroy();
+                            }
                             break;
                         }
                     }
@@ -2562,6 +2530,17 @@
             }
         };
 
+        if (!manualStartAndDestroy) {
+            try {
+                mIncrementalFileStorages = IncrementalFileStorages.initialize(mContext,
+                        stageDir, params.dataLoaderParams, listener, addedFiles);
+                return false;
+            } catch (IOException e) {
+                throw new PackageManagerException(INSTALL_FAILED_MEDIA_UNAVAILABLE, e.getMessage(),
+                        e.getCause());
+            }
+        }
+
         final FileSystemConnector connector = new FileSystemConnector(addedFiles);
         final FileSystemControlParcel control = new FileSystemControlParcel();
         control.callback = connector;
@@ -2771,13 +2750,14 @@
                 bridge.forceClose();
             }
         }
+        if (mIncrementalFileStorages != null) {
+            mIncrementalFileStorages.cleanUp();
+            mIncrementalFileStorages = null;
+        }
         // For staged sessions, we don't delete the directory where the packages have been copied,
         // since these packages are supposed to be read on reboot.
         // Those dirs are deleted when the staged session has reached a final state.
         if (stageDir != null && !params.isStaged) {
-            if (mIncrementalFileStorages != null) {
-                mIncrementalFileStorages.cleanUp();
-            }
             try {
                 mPm.mInstaller.rmPackageDir(stageDir.getAbsolutePath());
             } catch (InstallerException ignored) {
@@ -2793,6 +2773,7 @@
         } else {
             if (mIncrementalFileStorages != null) {
                 mIncrementalFileStorages.cleanUp();
+                mIncrementalFileStorages = null;
             }
             try {
                 mPm.mInstaller.rmPackageDir(stageDir.getAbsolutePath());
@@ -2980,13 +2961,13 @@
                 writeIntAttribute(out, ATTR_SESSION_ID, childSessionId);
                 out.endTag(null, TAG_CHILD_SESSION);
             }
-            for (FileInfo fileInfo : mFiles) {
+            for (InstallationFile file : mFiles) {
                 out.startTag(null, TAG_SESSION_FILE);
-                writeIntAttribute(out, ATTR_LOCATION, fileInfo.location);
-                writeStringAttribute(out, ATTR_NAME, fileInfo.name);
-                writeLongAttribute(out, ATTR_LENGTH_BYTES, fileInfo.lengthBytes);
-                writeByteArrayAttribute(out, ATTR_METADATA, fileInfo.metadata);
-                writeByteArrayAttribute(out, ATTR_SIGNATURE, fileInfo.signature);
+                writeIntAttribute(out, ATTR_LOCATION, file.getLocation());
+                writeStringAttribute(out, ATTR_NAME, file.getName());
+                writeLongAttribute(out, ATTR_LENGTH_BYTES, file.getLengthBytes());
+                writeByteArrayAttribute(out, ATTR_METADATA, file.getMetadata());
+                writeByteArrayAttribute(out, ATTR_SIGNATURE, file.getSignature());
                 out.endTag(null, TAG_SESSION_FILE);
             }
         }
@@ -3098,7 +3079,7 @@
         List<String> grantedRuntimePermissions = new ArrayList<>();
         List<String> whitelistedRestrictedPermissions = new ArrayList<>();
         List<Integer> childSessionIds = new ArrayList<>();
-        List<FileInfo> files = new ArrayList<>();
+        List<InstallationFile> files = new ArrayList<>();
         int outerDepth = in.getDepth();
         int type;
         while ((type = in.next()) != XmlPullParser.END_DOCUMENT
@@ -3117,7 +3098,7 @@
                 childSessionIds.add(readIntAttribute(in, ATTR_SESSION_ID, SessionInfo.INVALID_ID));
             }
             if (TAG_SESSION_FILE.equals(in.getName())) {
-                files.add(new FileInfo(
+                files.add(new InstallationFile(
                         readIntAttribute(in, ATTR_LOCATION, 0),
                         readStringAttribute(in, ATTR_NAME),
                         readLongAttribute(in, ATTR_LENGTH_BYTES, -1),
@@ -3127,8 +3108,8 @@
         }
 
         if (grantedRuntimePermissions.size() > 0) {
-            params.grantedRuntimePermissions = grantedRuntimePermissions
-                    .stream().toArray(String[]::new);
+            params.grantedRuntimePermissions =
+                    grantedRuntimePermissions.toArray(EmptyArray.STRING);
         }
 
         if (whitelistedRestrictedPermissions.size() > 0) {
@@ -3137,21 +3118,24 @@
 
         int[] childSessionIdsArray;
         if (childSessionIds.size() > 0) {
-            childSessionIdsArray = childSessionIds.stream().mapToInt(i -> i).toArray();
+            childSessionIdsArray = new int[childSessionIds.size()];
+            for (int i = 0, size = childSessionIds.size(); i < size; ++i) {
+                childSessionIdsArray[i] = childSessionIds.get(i);
+            }
         } else {
             childSessionIdsArray = EMPTY_CHILD_SESSION_ARRAY;
         }
 
-        FileInfo[] fileInfosArray = null;
+        InstallationFile[] fileArray = null;
         if (!files.isEmpty()) {
-            fileInfosArray = files.stream().toArray(FileInfo[]::new);
+            fileArray = files.toArray(EMPTY_INSTALLATION_FILE_ARRAY);
         }
 
         InstallSource installSource = InstallSource.create(installInitiatingPackageName,
                 installOriginatingPackageName, installerPackageName);
         return new PackageInstallerSession(callback, context, pm, sessionProvider,
                 installerThread, stagingManager, sessionId, userId, installerUid,
-                installSource, params, createdMillis, stageDir, stageCid, fileInfosArray,
+                installSource, params, createdMillis, stageDir, stageCid, fileArray,
                 prepared, committed, sealed, childSessionIdsArray, parentSessionId,
                 isReady, isFailed, isApplied, stagedSessionErrorCode, stagedSessionErrorMessage);
     }
diff --git a/services/core/java/com/android/server/pm/PackageManagerService.java b/services/core/java/com/android/server/pm/PackageManagerService.java
index de6b7d5..064fd3f 100644
--- a/services/core/java/com/android/server/pm/PackageManagerService.java
+++ b/services/core/java/com/android/server/pm/PackageManagerService.java
@@ -55,12 +55,14 @@
 import static android.content.pm.PackageManager.INSTALL_FAILED_INVALID_INSTALL_LOCATION;
 import static android.content.pm.PackageManager.INSTALL_FAILED_MISSING_SHARED_LIBRARY;
 import static android.content.pm.PackageManager.INSTALL_FAILED_PACKAGE_CHANGED;
+import static android.content.pm.PackageManager.INSTALL_FAILED_PROCESS_NOT_DEFINED;
 import static android.content.pm.PackageManager.INSTALL_FAILED_SHARED_USER_INCOMPATIBLE;
 import static android.content.pm.PackageManager.INSTALL_FAILED_TEST_ONLY;
 import static android.content.pm.PackageManager.INSTALL_FAILED_UPDATE_INCOMPATIBLE;
 import static android.content.pm.PackageManager.INSTALL_FAILED_VERSION_DOWNGRADE;
 import static android.content.pm.PackageManager.INSTALL_INTERNAL;
 import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES;
+import static android.content.pm.PackageManager.INSTALL_PARSE_FAILED_NO_CERTIFICATES;
 import static android.content.pm.PackageManager.INSTALL_SUCCEEDED;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS;
 import static android.content.pm.PackageManager.INTENT_FILTER_DOMAIN_VERIFICATION_STATUS_ALWAYS_ASK;
@@ -116,6 +118,7 @@
 import static com.android.server.pm.PackageManagerServiceUtils.getCompressedFiles;
 import static com.android.server.pm.PackageManagerServiceUtils.getLastModifiedTime;
 import static com.android.server.pm.PackageManagerServiceUtils.logCriticalInfo;
+import static com.android.server.pm.PackageManagerServiceUtils.makeDirRecursive;
 import static com.android.server.pm.PackageManagerServiceUtils.verifySignatures;
 
 import android.Manifest;
@@ -147,6 +150,7 @@
 import android.content.pm.AuxiliaryResolveInfo;
 import android.content.pm.ChangedPackages;
 import android.content.pm.ComponentInfo;
+import android.content.pm.DataLoaderType;
 import android.content.pm.FallbackCategoryProvider;
 import android.content.pm.FeatureInfo;
 import android.content.pm.IDexModuleRegisterCallback;
@@ -204,6 +208,7 @@
 import android.content.pm.dex.IArtManager;
 import android.content.pm.parsing.AndroidPackage;
 import android.content.pm.parsing.ApkParseUtils;
+import android.content.pm.parsing.ComponentParseUtils;
 import android.content.pm.parsing.ComponentParseUtils.ParsedActivity;
 import android.content.pm.parsing.ComponentParseUtils.ParsedActivityIntentInfo;
 import android.content.pm.parsing.ComponentParseUtils.ParsedComponent;
@@ -287,9 +292,9 @@
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 import android.util.SparseIntArray;
-import android.util.StatsLog;
 import android.util.TimingsTraceLog;
 import android.util.Xml;
+import android.util.apk.ApkSignatureVerifier;
 import android.util.jar.StrictJarFile;
 import android.util.proto.ProtoOutputStream;
 import android.view.Display;
@@ -308,6 +313,7 @@
 import com.android.internal.util.ConcurrentUtils;
 import com.android.internal.util.DumpUtils;
 import com.android.internal.util.FastXmlSerializer;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.Preconditions;
 import com.android.server.AttributeCache;
@@ -359,7 +365,6 @@
 import java.io.FileDescriptor;
 import java.io.FileInputStream;
 import java.io.FileOutputStream;
-import java.io.FilenameFilter;
 import java.io.IOException;
 import java.io.PrintWriter;
 import java.lang.annotation.Retention;
@@ -649,6 +654,8 @@
     private static final String[] INSTANT_APP_BROADCAST_PERMISSION =
             new String[] { android.Manifest.permission.ACCESS_INSTANT_APPS };
 
+    private static final String RANDOM_DIR_PREFIX = "~~";
+
     final ServiceThread mHandlerThread;
 
     final PackageHandler mHandler;
@@ -1531,15 +1538,17 @@
     final @NonNull String mRequiredPermissionControllerPackage;
     final @Nullable String mSetupWizardPackage;
     final @Nullable String mStorageManagerPackage;
-    final @Nullable String mSystemTextClassifierPackage;
+    final @Nullable String mDefaultTextClassifierPackage;
+    final @Nullable String mSystemTextClassifierPackageName;
     final @Nullable String mWellbeingPackage;
     final @Nullable String mDocumenterPackage;
     final @Nullable String mConfiguratorPackage;
     final @Nullable String mAppPredictionServicePackage;
     final @Nullable String mIncidentReportApproverPackage;
     final @Nullable String[] mTelephonyPackages;
-    final @NonNull String mServicesExtensionPackageName;
-    final @NonNull String mSharedSystemSharedLibraryPackageName;
+    final @Nullable String mServicesExtensionPackageName;
+    final @Nullable String mSharedSystemSharedLibraryPackageName;
+    final @Nullable String mRetailDemoPackage;
 
     private final PackageUsage mPackageUsage = new PackageUsage();
     private final CompilerStats mCompilerStats = new CompilerStats();
@@ -1650,7 +1659,8 @@
                         handlePackagePostInstall(parentRes, grantPermissions,
                                 killApp, virtualPreload, grantedPermissions,
                                 whitelistedRestrictedPermissions, didRestore,
-                                args.installSource.installerPackageName, args.observer);
+                                args.installSource.installerPackageName, args.observer,
+                                args.mDataLoaderType);
 
                         // Handle the child packages
                         final int childCount = (parentRes.addedChildPackages != null)
@@ -1660,7 +1670,8 @@
                             handlePackagePostInstall(childRes, grantPermissions,
                                     killApp, virtualPreload, grantedPermissions,
                                     whitelistedRestrictedPermissions, false /*didRestore*/,
-                                    args.installSource.installerPackageName, args.observer);
+                                    args.installSource.installerPackageName, args.observer,
+                                    args.mDataLoaderType);
                         }
 
                         // Log tracing if needed
@@ -1987,7 +1998,7 @@
             boolean killApp, boolean virtualPreload,
             String[] grantedPermissions, List<String> whitelistedRestrictedPermissions,
             boolean launchedForRestore, String installerPackage,
-            IPackageInstallObserver2 installObserver) {
+            IPackageInstallObserver2 installObserver, int dataLoaderType) {
         final boolean succeeded = res.returnCode == PackageManager.INSTALL_SUCCEEDED;
         final boolean update = res.removedInfo != null && res.removedInfo.removedPackage != null;
 
@@ -2088,11 +2099,14 @@
                 if (update) {
                     extras.putBoolean(Intent.EXTRA_REPLACING, true);
                 }
+                extras.putInt(PackageInstaller.EXTRA_DATA_LOADER_TYPE, dataLoaderType);
+                // Send to all running apps.
                 sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName,
                         extras, 0 /*flags*/,
                         null /*targetPackage*/, null /*finishedReceiver*/,
                         updateUserIds, instantUserIds);
                 if (installerPackageName != null) {
+                    // Send to the installer, even if it's not running.
                     sendPackageBroadcast(Intent.ACTION_PACKAGE_ADDED, packageName,
                             extras, 0 /*flags*/,
                             installerPackageName, null /*finishedReceiver*/,
@@ -2161,7 +2175,8 @@
                                 getPackageExternalStorageType(volume, isExternal(res.pkg));
                         // If the package was installed externally, log it.
                         if (packageExternalStorageType != StorageEnums.UNKNOWN) {
-                            StatsLog.write(StatsLog.APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED,
+                            FrameworkStatsLog.write(
+                                    FrameworkStatsLog.APP_INSTALL_ON_EXTERNAL_STORAGE_REPORTED,
                                     packageExternalStorageType, res.pkg.getPackageName());
                         }
                     }
@@ -2725,7 +2740,7 @@
         t.traceBegin("get system config");
         SystemConfig systemConfig = SystemConfig.getInstance();
         mAvailableFeatures = systemConfig.getAvailableFeatures();
-        ApplicationPackageManager.invalidateSysFeatureCache();
+        ApplicationPackageManager.invalidateHasSystemFeatureCache();
         t.traceEnd();
 
         mProtectedPackages = new ProtectedPackages(mContext);
@@ -2993,9 +3008,6 @@
                 }
             }
 
-            //delete tmp files
-            deleteTempPackageFiles();
-
             final int cachedSystemApps = PackageParser.sCachedPackageReadCount.get();
 
             // Remove any shared userIDs that have no associated packages
@@ -3150,14 +3162,15 @@
             mSetupWizardPackage = getSetupWizardPackageNameImpl();
             mComponentResolver.fixProtectedFilterPriorities();
 
-            mSystemTextClassifierPackage = getSystemTextClassifierPackageName();
-
+            mDefaultTextClassifierPackage = getDefaultTextClassifierPackageName();
+            mSystemTextClassifierPackageName = getSystemTextClassifierPackageName();
             mWellbeingPackage = getWellbeingPackageName();
             mDocumenterPackage = getDocumenterPackageName();
             mConfiguratorPackage = getDeviceConfiguratorPackageName();
             mAppPredictionServicePackage = getAppPredictionServicePackageName();
             mIncidentReportApproverPackage = getIncidentReportApproverPackageName();
             mTelephonyPackages = getTelephonyPackageNames();
+            mRetailDemoPackage = getRetailDemoPackageName();
 
             // Now that we know all of the shared libraries, update all clients to have
             // the correct library paths.
@@ -3345,6 +3358,7 @@
                 mServicesExtensionPackageName = null;
                 mSharedSystemSharedLibraryPackageName = null;
             }
+
             // PermissionController hosts default permission granting and role management, so it's a
             // critical part of the core system.
             mRequiredPermissionControllerPackage = getRequiredPermissionControllerLPr();
@@ -3588,8 +3602,7 @@
                 getNextCodePath(Environment.getDataAppDirectory(null), packageName);
         int ret = PackageManager.INSTALL_SUCCEEDED;
         try {
-            Os.mkdir(dstCodePath.getAbsolutePath(), 0755);
-            Os.chmod(dstCodePath.getAbsolutePath(), 0755);
+            makeDirRecursive(dstCodePath, 0755);
             for (File srcFile : compressedFiles) {
                 final String srcFileName = srcFile.getName();
                 final String dstFileName = srcFileName.substring(
@@ -3614,7 +3627,7 @@
             try {
                 handle = NativeLibraryHelper.Handle.create(dstCodePath);
                 ret = NativeLibraryHelper.copyNativeBinariesWithOverride(handle, libraryRoot,
-                        null /*abiOverride*/);
+                        null /*abiOverride*/, false /*isIncremental*/);
             } catch (IOException e) {
                 logCriticalInfo(Log.ERROR, "Failed to extract native libraries"
                         + "; pkg: " + packageName);
@@ -4587,7 +4600,7 @@
         synchronized (mLock) {
             final AndroidPackage p = mPackages.get(packageName);
             if (p != null && p.isMatch(flags)) {
-                PackageSetting ps = getPackageSetting(p.getPackageName());
+                PackageSetting ps = getPackageSettingInternal(p.getPackageName(), callingUid);
                 if (shouldFilterApplicationLocked(ps, callingUid, userId)) {
                     return -1;
                 }
@@ -5911,7 +5924,10 @@
      */
     @Override
     public String[] getPackagesForUid(int uid) {
-        final int callingUid = Binder.getCallingUid();
+        return getPackagesForUidInternal(uid, Binder.getCallingUid());
+    }
+
+    private String[] getPackagesForUidInternal(int uid, int callingUid) {
         final boolean isCallerInstantApp = getInstantAppPackageName(callingUid) != null;
         final int userId = UserHandle.getUserId(uid);
         final int appId = UserHandle.getAppId(uid);
@@ -6285,10 +6301,11 @@
 
     private void requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj,
             Intent origIntent, String resolvedType, String callingPackage,
-            boolean isRequesterInstantApp, Bundle verificationBundle, int userId) {
+            @Nullable String callingFeatureId, boolean isRequesterInstantApp,
+            Bundle verificationBundle, int userId) {
         final Message msg = mHandler.obtainMessage(INSTANT_APP_RESOLUTION_PHASE_TWO,
                 new InstantAppRequest(responseObj, origIntent, resolvedType,
-                        callingPackage, isRequesterInstantApp, userId, verificationBundle,
+                        callingPackage, callingFeatureId, isRequesterInstantApp, userId, verificationBundle,
                         false /*resolveForStart*/, responseObj.hostDigestPrefixSecure,
                         responseObj.token));
         mHandler.sendMessage(msg);
@@ -6974,10 +6991,10 @@
                 Trace.traceBegin(TRACE_TAG_PACKAGE_MANAGER, "resolveEphemeral");
                 String token = UUID.randomUUID().toString();
                 InstantAppDigest digest = InstantAppResolver.parseDigest(intent);
-                final InstantAppRequest requestObject = new InstantAppRequest(
-                        null /*responseObj*/, intent /*origIntent*/, resolvedType,
-                        null /*callingPackage*/, isRequesterInstantApp,
-                        userId, null /*verificationBundle*/, resolveForStart,
+                final InstantAppRequest requestObject = new InstantAppRequest(null /*responseObj*/,
+                        intent /*origIntent*/, resolvedType, null /*callingPackage*/,
+                        null /*callingFeatureId*/, isRequesterInstantApp, userId,
+                        null /*verificationBundle*/, resolveForStart,
                         digest.getDigestPrefixSecure(), token);
                 auxiliaryResponse = InstantAppResolver.doInstantAppResolutionPhaseOne(
                         mInstantAppResolverConnection, requestObject);
@@ -9849,8 +9866,12 @@
     @GuardedBy("mInstallLock")
     void removeCodePathLI(File codePath) {
         if (codePath.isDirectory()) {
+            File codePathParent = codePath.getParentFile();
             try {
                 mInstaller.rmPackageDir(codePath.getAbsolutePath());
+                if (codePathParent.getName().startsWith(RANDOM_DIR_PREFIX)) {
+                    mInstaller.rmPackageDir(codePathParent.getAbsolutePath());
+                }
             } catch (InstallerException e) {
                 Slog.w(TAG, "Failed to remove code path", e);
             }
@@ -10567,6 +10588,10 @@
         if (pkgSetting.sharedUser != null) {
             pkgSetting.sharedUser.addPackage(pkgSetting);
         }
+        if (reconciledPkg.installArgs != null && reconciledPkg.installArgs.forceQueryableOverride) {
+            pkgSetting.forceQueryableOverride = true;
+        }
+
         // TODO(toddke): Consider a method specifically for modifying the Package object
         // post scan; or, moving this stuff out of the Package object since it has nothing
         // to do with the package on disk.
@@ -11243,6 +11268,26 @@
         return object;
     }
 
+    private <T extends ComponentParseUtils.ParsedMainComponent>
+            void assertPackageProcesses(AndroidPackage pkg, List<T> components,
+            ArrayMap<String, ComponentParseUtils.ParsedProcess> procs, String compName)
+            throws PackageManagerException {
+        if (components == null) {
+            return;
+        }
+        for (int i = components.size() - 1; i >= 0; i--) {
+            final ComponentParseUtils.ParsedMainComponent<?> component = components.get(i);
+            if (!procs.containsKey(component.getProcessName())) {
+                throw new PackageManagerException(
+                        INSTALL_FAILED_PROCESS_NOT_DEFINED,
+                        "Can't install because " + compName + " " + component.className
+                                + "'s process attribute " + component.getProcessName()
+                                + " (in package " + pkg.getPackageName()
+                                + ") is not included in the <processes> list");
+            }
+        }
+    }
+
     /**
      * Asserts the parsed package is valid according to the given policy. If the
      * package is invalid, for whatever reason, throws {@link PackageManagerException}.
@@ -11472,6 +11517,24 @@
                 mComponentResolver.assertProvidersNotDefined(pkg);
             }
 
+            // If this package has defined explicit processes, then ensure that these are
+            // the only processes used by its components.
+            final ArrayMap<String, ComponentParseUtils.ParsedProcess> procs = pkg.getProcesses();
+            if (procs != null) {
+                if (!procs.containsKey(pkg.getProcessName())) {
+                    throw new PackageManagerException(
+                            INSTALL_FAILED_PROCESS_NOT_DEFINED,
+                            "Can't install because application tag's process attribute "
+                                    + pkg.getProcessName()
+                                    + " (in package " + pkg.getPackageName()
+                                    + ") is not included in the <processes> list");
+                }
+                assertPackageProcesses(pkg, pkg.getActivities(), procs, "activity");
+                assertPackageProcesses(pkg, pkg.getServices(), procs, "service");
+                assertPackageProcesses(pkg, pkg.getReceivers(), procs, "receiver");
+                assertPackageProcesses(pkg, pkg.getProviders(), procs, "provider");
+            }
+
             // Verify that packages sharing a user with a privileged app are marked as privileged.
             if (!pkg.isPrivileged() && (pkg.getSharedUserId() != null)) {
                 SharedUserSetting sharedUserSetting = null;
@@ -11591,6 +11654,17 @@
                     }
                 }
             }
+
+            // Ensure the package is signed with at least the minimum signature scheme version
+            // required for its target SDK.
+            int minSignatureSchemeVersion =
+                    ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
+                            pkg.getTargetSdkVersion());
+            if (pkg.getSigningDetails().signatureSchemeVersion < minSignatureSchemeVersion) {
+                throw new PackageManagerException(INSTALL_PARSE_FAILED_NO_CERTIFICATES,
+                        "No signature found in package of version " + minSignatureSchemeVersion
+                                + " or newer for package " + pkg.getPackageName());
+            }
         }
     }
 
@@ -12136,7 +12210,7 @@
                         + intent.toShortString(false, true, false, false)
                         + " " + intent.getExtras(), here);
             }
-            am.broadcastIntent(null, intent, null, finishedReceiver,
+            am.broadcastIntentWithFeature(null, null, intent, null, finishedReceiver,
                     0, null, null, requiredPermissions, android.app.AppOpsManager.OP_NONE,
                     null, finishedReceiver != null, false, id);
         }
@@ -12298,8 +12372,9 @@
                 lockedBcIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
             }
             final String[] requiredPermissions = {Manifest.permission.RECEIVE_BOOT_COMPLETED};
-            am.broadcastIntent(null, lockedBcIntent, null, null, 0, null, null, requiredPermissions,
-                    android.app.AppOpsManager.OP_NONE, null, false, false, userId);
+            am.broadcastIntentWithFeature(null, null, lockedBcIntent, null, null, 0, null, null,
+                    requiredPermissions, android.app.AppOpsManager.OP_NONE, null, false, false,
+                    userId);
 
             // Deliver BOOT_COMPLETED only if user is unlocked
             if (mUserManager.isUserUnlockingOrUnlocked(userId)) {
@@ -12307,8 +12382,9 @@
                 if (includeStopped) {
                     bcIntent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
                 }
-                am.broadcastIntent(null, bcIntent, null, null, 0, null, null, requiredPermissions,
-                        android.app.AppOpsManager.OP_NONE, null, false, false, userId);
+                am.broadcastIntentWithFeature(null, null, bcIntent, null, null, 0, null, null,
+                        requiredPermissions, android.app.AppOpsManager.OP_NONE, null, false, false,
+                        userId);
             }
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
@@ -13280,42 +13356,53 @@
      *
      * @return true if verification should be performed
      */
-    private boolean isVerificationEnabled(int userId, int installFlags, int installerUid) {
+    private boolean isVerificationEnabled(
+            PackageInfoLite pkgInfoLite, int userId, int installFlags, int installerUid) {
         if (!DEFAULT_VERIFY_ENABLE) {
             return false;
         }
 
-        if ((installFlags & PackageManager.INSTALL_DISABLE_VERIFICATION) != 0) {
-            return false;
-        }
-
         // Check if installing from ADB
         if ((installFlags & PackageManager.INSTALL_FROM_ADB) != 0) {
             if (isUserRestricted(userId, UserManager.ENSURE_VERIFY_APPS)) {
                 return true;
             }
-            // Check if the developer does not want package verification for ADB installs
+            // Check if the developer wants to skip verification for ADB installs
+            if ((installFlags & PackageManager.INSTALL_DISABLE_VERIFICATION) != 0) {
+                synchronized (mLock) {
+                    if (mSettings.mPackages.get(pkgInfoLite.packageName) == null) {
+                        // Always verify fresh install
+                        return true;
+                    }
+                }
+                // Only skip when apk is debuggable
+                return !pkgInfoLite.debuggable;
+            }
             return Global.getInt(mContext.getContentResolver(),
                     Global.PACKAGE_VERIFIER_INCLUDE_ADB, 1) != 0;
-        } else {
-            // only when not installed from ADB, skip verification for instant apps when
-            // the installer and verifier are the same.
-            if ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0) {
-                if (mInstantAppInstallerActivity != null
-                        && mInstantAppInstallerActivity.packageName.equals(
-                                mRequiredVerifierPackage)) {
-                    try {
-                        mInjector.getAppOpsManager()
-                                .checkPackage(installerUid, mRequiredVerifierPackage);
-                        if (DEBUG_VERIFY) {
-                            Slog.i(TAG, "disable verification for instant app");
-                        }
-                        return false;
-                    } catch (SecurityException ignore) { }
-                }
-            }
-            return true;
         }
+
+        if ((installFlags & PackageManager.INSTALL_DISABLE_VERIFICATION) != 0) {
+            return false;
+        }
+
+        // only when not installed from ADB, skip verification for instant apps when
+        // the installer and verifier are the same.
+        if ((installFlags & PackageManager.INSTALL_INSTANT_APP) != 0) {
+            if (mInstantAppInstallerActivity != null
+                    && mInstantAppInstallerActivity.packageName.equals(
+                            mRequiredVerifierPackage)) {
+                try {
+                    mInjector.getAppOpsManager()
+                            .checkPackage(installerUid, mRequiredVerifierPackage);
+                    if (DEBUG_VERIFY) {
+                        Slog.i(TAG, "disable verification for instant app");
+                    }
+                    return false;
+                } catch (SecurityException ignore) { }
+            }
+        }
+        return true;
     }
 
     /**
@@ -13914,9 +14001,11 @@
         final int appId;
         final String seinfo;
         final int targetSdkVersion;
+        final String fromCodePath;
 
         public MoveInfo(int moveId, String fromUuid, String toUuid, String packageName,
-                String dataAppName, int appId, String seinfo, int targetSdkVersion) {
+                String dataAppName, int appId, String seinfo, int targetSdkVersion,
+                String fromCodePath) {
             this.moveId = moveId;
             this.fromUuid = fromUuid;
             this.toUuid = toUuid;
@@ -13925,6 +14014,7 @@
             this.appId = appId;
             this.seinfo = seinfo;
             this.targetSdkVersion = targetSdkVersion;
+            this.fromCodePath = fromCodePath;
         }
     }
 
@@ -14049,13 +14139,15 @@
         @Nullable
         MultiPackageInstallParams mParentInstallParams;
         final long requiredInstalledVersionCode;
+        final boolean forceQueryableOverride;
+        final int mDataLoaderType;
 
         InstallParams(OriginInfo origin, MoveInfo move, IPackageInstallObserver2 observer,
                 int installFlags, InstallSource installSource, String volumeUuid,
                 VerificationInfo verificationInfo, UserHandle user, String packageAbiOverride,
                 String[] grantedPermissions, List<String> whitelistedRestrictedPermissions,
                 SigningDetails signingDetails, int installReason,
-                long requiredInstalledVersionCode) {
+                long requiredInstalledVersionCode, int dataLoaderType) {
             super(user);
             this.origin = origin;
             this.move = move;
@@ -14070,39 +14162,43 @@
             this.signingDetails = signingDetails;
             this.installReason = installReason;
             this.requiredInstalledVersionCode = requiredInstalledVersionCode;
+            this.forceQueryableOverride = false;
+            this.mDataLoaderType = dataLoaderType;
         }
 
         InstallParams(ActiveInstallSession activeInstallSession) {
             super(activeInstallSession.getUser());
+            final PackageInstaller.SessionParams sessionParams =
+                    activeInstallSession.getSessionParams();
             if (DEBUG_INSTANT) {
-                if ((activeInstallSession.getSessionParams().installFlags
+                if ((sessionParams.installFlags
                         & PackageManager.INSTALL_INSTANT_APP) != 0) {
                     Slog.d(TAG, "Ephemeral install of " + activeInstallSession.getPackageName());
                 }
             }
             verificationInfo = new VerificationInfo(
-                    activeInstallSession.getSessionParams().originatingUri,
-                    activeInstallSession.getSessionParams().referrerUri,
-                    activeInstallSession.getSessionParams().originatingUid,
+                    sessionParams.originatingUri,
+                    sessionParams.referrerUri,
+                    sessionParams.originatingUid,
                     activeInstallSession.getInstallerUid());
             origin = OriginInfo.fromStagedFile(activeInstallSession.getStagedDir());
             move = null;
             installReason = fixUpInstallReason(
                     activeInstallSession.getInstallSource().installerPackageName,
                     activeInstallSession.getInstallerUid(),
-                    activeInstallSession.getSessionParams().installReason);
+                    sessionParams.installReason);
             observer = activeInstallSession.getObserver();
-            installFlags = activeInstallSession.getSessionParams().installFlags;
+            installFlags = sessionParams.installFlags;
             installSource = activeInstallSession.getInstallSource();
-            volumeUuid = activeInstallSession.getSessionParams().volumeUuid;
-            packageAbiOverride = activeInstallSession.getSessionParams().abiOverride;
-            grantedRuntimePermissions = activeInstallSession.getSessionParams()
-                    .grantedRuntimePermissions;
-            whitelistedRestrictedPermissions = activeInstallSession.getSessionParams()
-                    .whitelistedRestrictedPermissions;
+            volumeUuid = sessionParams.volumeUuid;
+            packageAbiOverride = sessionParams.abiOverride;
+            grantedRuntimePermissions = sessionParams.grantedRuntimePermissions;
+            whitelistedRestrictedPermissions = sessionParams.whitelistedRestrictedPermissions;
             signingDetails = activeInstallSession.getSigningDetails();
-            requiredInstalledVersionCode = activeInstallSession.getSessionParams()
-                    .requiredInstalledVersionCode;
+            requiredInstalledVersionCode = sessionParams.requiredInstalledVersionCode;
+            forceQueryableOverride = sessionParams.forceQueryableOverride;
+            mDataLoaderType = (sessionParams.dataLoaderParams != null)
+                    ? sessionParams.dataLoaderParams.getType() : DataLoaderType.NONE;
         }
 
         @Override
@@ -14470,7 +14566,7 @@
                     verificationInfo == null ? -1 : verificationInfo.installerUid;
             if (!origin.existing && requiredUid != -1
                     && isVerificationEnabled(
-                    verifierUser.getIdentifier(), installFlags, installerUid)) {
+                            pkgLite, verifierUser.getIdentifier(), installFlags, installerUid)) {
                 final Intent verification = new Intent(
                         Intent.ACTION_PACKAGE_NEEDS_VERIFICATION);
                 verification.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
@@ -14703,7 +14799,9 @@
         final int traceCookie;
         final PackageParser.SigningDetails signingDetails;
         final int installReason;
+        final boolean forceQueryableOverride;
         @Nullable final MultiPackageInstallParams mMultiPackageInstallParams;
+        final int mDataLoaderType;
 
         // The list of instruction sets supported by this app. This is currently
         // only used during the rmdex() phase to clean up resources. We can get rid of this
@@ -14716,8 +14814,8 @@
                 String abiOverride, String[] installGrantPermissions,
                 List<String> whitelistedRestrictedPermissions,
                 String traceMethod, int traceCookie, SigningDetails signingDetails,
-                int installReason,
-                MultiPackageInstallParams multiPackageInstallParams) {
+                int installReason, boolean forceQueryableOverride,
+                MultiPackageInstallParams multiPackageInstallParams, int dataLoaderType) {
             this.origin = origin;
             this.move = move;
             this.installFlags = installFlags;
@@ -14733,7 +14831,9 @@
             this.traceCookie = traceCookie;
             this.signingDetails = signingDetails;
             this.installReason = installReason;
+            this.forceQueryableOverride = forceQueryableOverride;
             this.mMultiPackageInstallParams = multiPackageInstallParams;
+            this.mDataLoaderType = dataLoaderType;
         }
 
         /** New install */
@@ -14743,7 +14843,8 @@
                     params.getUser(), null /*instructionSets*/, params.packageAbiOverride,
                     params.grantedRuntimePermissions, params.whitelistedRestrictedPermissions,
                     params.traceMethod, params.traceCookie, params.signingDetails,
-                    params.installReason, params.mParentInstallParams);
+                    params.installReason, params.forceQueryableOverride,
+                    params.mParentInstallParams, params.mDataLoaderType);
         }
 
         abstract int copyApk();
@@ -14834,7 +14935,8 @@
             super(OriginInfo.fromNothing(), null, null, 0, InstallSource.EMPTY,
                     null, null, instructionSets, null, null, null, null, 0,
                     PackageParser.SigningDetails.UNKNOWN,
-                    PackageManager.INSTALL_REASON_UNKNOWN, null /* parent */);
+                    PackageManager.INSTALL_REASON_UNKNOWN, false, null /* parent */,
+                    DataLoaderType.NONE);
             this.codeFile = (codePath != null) ? new File(codePath) : null;
             this.resourceFile = (resourcePath != null) ? new File(resourcePath) : null;
         }
@@ -14874,12 +14976,13 @@
                 return ret;
             }
 
+            final boolean isIncremental = isIncrementalPath(codeFile.getAbsolutePath());
             final File libraryRoot = new File(codeFile, LIB_DIR_NAME);
             NativeLibraryHelper.Handle handle = null;
             try {
                 handle = NativeLibraryHelper.Handle.create(codeFile);
                 ret = NativeLibraryHelper.copyNativeBinariesWithOverride(handle, libraryRoot,
-                        abiOverride);
+                        abiOverride, isIncremental);
             } catch (IOException e) {
                 Slog.e(TAG, "Copying native libraries failed", e);
                 ret = PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
@@ -14912,9 +15015,9 @@
             final boolean onIncremental = mIncrementalManager != null
                     && isIncrementalPath(beforeCodeFile.getAbsolutePath());
             try {
+                makeDirRecursive(afterCodeFile.getParentFile(), 0775);
                 if (onIncremental) {
-                    mIncrementalManager.rename(beforeCodeFile.getAbsolutePath(),
-                            afterCodeFile.getAbsolutePath());
+                    mIncrementalManager.renameCodePath(beforeCodeFile, afterCodeFile);
                 } else {
                     Os.rename(beforeCodeFile.getAbsolutePath(), afterCodeFile.getAbsolutePath());
                 }
@@ -15033,7 +15136,8 @@
             synchronized (mInstaller) {
                 try {
                     mInstaller.moveCompleteApp(move.fromUuid, move.toUuid, move.packageName,
-                            move.dataAppName, move.appId, move.seinfo, move.targetSdkVersion);
+                            move.dataAppName, move.appId, move.seinfo, move.targetSdkVersion,
+                            move.fromCodePath);
                 } catch (InstallerException e) {
                     Slog.w(TAG, "Failed to move app", e);
                     return PackageManager.INSTALL_FAILED_INTERNAL_ERROR;
@@ -15124,16 +15228,29 @@
         }
     }
 
+    /**
+     * Given {@code targetDir}, returns {@code targetDir/~~[randomStrA]/[packageName]-[randomStrB].}
+     * Makes sure that {@code targetDir/~~[randomStrA]} directory doesn't exist.
+     * Notice that this method doesn't actually create any directory.
+     *
+     * @param targetDir Directory that is two-levels up from the result directory.
+     * @param packageName Name of the package whose code files are to be installed under the result
+     *                    directory.
+     * @return File object for the directory that should hold the code files of {@code packageName}.
+     */
     private File getNextCodePath(File targetDir, String packageName) {
-        File result;
         SecureRandom random = new SecureRandom();
         byte[] bytes = new byte[16];
+        File firstLevelDir;
         do {
             random.nextBytes(bytes);
-            String suffix = Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_WRAP);
-            result = new File(targetDir, packageName + "-" + suffix);
-        } while (result.exists());
-        return result;
+            String dirName = RANDOM_DIR_PREFIX
+                    + Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_WRAP);
+            firstLevelDir = new File(targetDir, dirName);
+        } while (firstLevelDir.exists());
+        random.nextBytes(bytes);
+        String suffix = Base64.encodeToString(bytes, Base64.URL_SAFE | Base64.NO_WRAP);
+        return new File(firstLevelDir, packageName + "-" + suffix);
     }
 
     static class PackageInstalledInfo {
@@ -17128,12 +17245,6 @@
         }
     }
 
-    private void deleteTempPackageFiles() {
-        // TODO: Is this used?
-        final FilenameFilter filter =
-                (dir, name) -> name.startsWith("vmdl") && name.endsWith(".tmp");
-    }
-
     @Override
     public void deletePackageAsUser(String packageName, int versionCode,
             IPackageDeleteObserver observer, int userId, int flags) {
@@ -17272,6 +17383,13 @@
 
     @GuardedBy("mLock")
     private String resolveInternalPackageNameLPr(String packageName, long versionCode) {
+        final int callingUid = Binder.getCallingUid();
+        return resolveInternalPackageNameInternalLocked(packageName, versionCode,
+                callingUid);
+    }
+
+    private String resolveInternalPackageNameInternalLocked(
+            String packageName, long versionCode, int callingUid) {
         // Handle renamed packages
         String normalizedPackageName = mSettings.getRenamedPackageLPr(packageName);
         packageName = normalizedPackageName != null ? normalizedPackageName : packageName;
@@ -17285,12 +17403,12 @@
 
         // Figure out which lib versions the caller can see
         LongSparseLongArray versionsCallerCanSee = null;
-        final int callingAppId = UserHandle.getAppId(Binder.getCallingUid());
+        final int callingAppId = UserHandle.getAppId(callingUid);
         if (callingAppId != Process.SYSTEM_UID && callingAppId != Process.SHELL_UID
                 && callingAppId != Process.ROOT_UID) {
             versionsCallerCanSee = new LongSparseLongArray();
             String libName = versionedLib.valueAt(0).getName();
-            String[] uidPackages = getPackagesForUid(Binder.getCallingUid());
+            String[] uidPackages = getPackagesForUidInternal(callingUid, callingUid);
             if (uidPackages != null) {
                 for (String uidPackage : uidPackages) {
                     PackageSetting ps = mSettings.getPackageLPr(uidPackage);
@@ -18676,7 +18794,7 @@
             intent.putExtra(Intent.EXTRA_USER_HANDLE, userId);
             intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY_BEFORE_BOOT);
             try {
-                am.broadcastIntent(null, intent, null, null,
+                am.broadcastIntentWithFeature(null, null, intent, null, null,
                         0, null, null, null, android.app.AppOpsManager.OP_NONE,
                         null, false, false, userId);
             } catch (RemoteException e) {
@@ -19550,15 +19668,15 @@
     }
 
     @Override
-    public String getSystemTextClassifierPackageName() {
-        return ensureSystemPackageName(mContext.getString(
-                R.string.config_defaultTextClassifierPackage));
+    public String getDefaultTextClassifierPackageName() {
+        return ensureSystemPackageName(
+                mContext.getString(R.string.config_servicesExtensionPackage));
     }
 
     @Override
-    public String[] getSystemTextClassifierPackages() {
-        return ensureSystemPackageNames(mContext.getResources().getStringArray(
-                R.array.config_defaultTextClassifierPackages));
+    public String getSystemTextClassifierPackageName() {
+        return ensureSystemPackageName(
+                mContext.getString(R.string.config_defaultTextClassifierPackage));
     }
 
     @Override
@@ -19689,14 +19807,52 @@
     }
 
     @Nullable
+    private String getRetailDemoPackageName() {
+        final String predefinedPkgName = mContext.getString(R.string.config_retailDemoPackage);
+        final String predefinedSignature = mContext.getString(
+                R.string.config_retailDemoPackageSignature);
+
+        if (TextUtils.isEmpty(predefinedPkgName) || TextUtils.isEmpty(predefinedSignature)) {
+            return null;
+        }
+
+        final AndroidPackage androidPkg = mPackages.get(predefinedPkgName);
+        if (androidPkg != null) {
+            final SigningDetails signingDetail = androidPkg.getSigningDetails();
+            if (signingDetail != null && signingDetail.signatures != null) {
+                try {
+                    final MessageDigest msgDigest = MessageDigest.getInstance("SHA-256");
+                    for (Signature signature : signingDetail.signatures) {
+                        if (TextUtils.equals(predefinedSignature,
+                                HexEncoding.encodeToString(msgDigest.digest(
+                                        signature.toByteArray()), false))) {
+                            return predefinedPkgName;
+                        }
+                    }
+                } catch (NoSuchAlgorithmException e) {
+                    Slog.e(
+                            TAG,
+                            "Unable to verify signatures as getting the retail demo package name",
+                            e);
+                }
+            }
+        }
+
+        return null;
+    }
+
+    @Nullable
     private String ensureSystemPackageName(@Nullable String packageName) {
         if (packageName == null) {
             return null;
         }
-        if (getPackageInfo(packageName, MATCH_SYSTEM_ONLY | MATCH_DIRECT_BOOT_AWARE
-                        | MATCH_DIRECT_BOOT_UNAWARE | MATCH_DISABLED_COMPONENTS,
-                UserHandle.getCallingUserId()) == null) {
-            return null;
+        long token = Binder.clearCallingIdentity();
+        try {
+            if (getPackageInfo(packageName, MATCH_FACTORY_ONLY, UserHandle.USER_SYSTEM) == null) {
+                return null;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(token);
         }
         return packageName;
     }
@@ -21465,7 +21621,7 @@
             final int absoluteCodePathCount = absoluteCodePaths.size();
             for (int i = 0; i < absoluteCodePathCount; i++) {
                 String absoluteCodePath = absoluteCodePaths.get(i);
-                if (absolutePath.startsWith(absoluteCodePath)) {
+                if (absoluteCodePath.startsWith(absolutePath)) {
                     pathValid = true;
                     break;
                 }
@@ -21938,6 +22094,7 @@
         final PackageFreezer freezer;
         final int[] installedUserIds;
         final boolean isCurrentLocationExternal;
+        final String fromCodePath;
 
         // reader
         synchronized (mLock) {
@@ -21994,6 +22151,7 @@
             targetSdkVersion = pkg.getTargetSdkVersion();
             freezer = freezePackage(packageName, "movePackageInternal");
             installedUserIds = ps.queryInstalledUsers(mUserManager.getUserIds(), true);
+            fromCodePath = pkg.getCodePath();
         }
 
         final Bundle extras = new Bundle();
@@ -22122,7 +22280,7 @@
 
             final String dataAppName = codeFile.getName();
             move = new MoveInfo(moveId, currentVolumeUuid, volumeUuid, packageName,
-                    dataAppName, appId, seinfo, targetSdkVersion);
+                    dataAppName, appId, seinfo, targetSdkVersion, fromCodePath);
         } else {
             move = null;
         }
@@ -22135,7 +22293,8 @@
                 installSource, volumeUuid, null /*verificationInfo*/, user,
                 packageAbiOverride, null /*grantedPermissions*/,
                 null /*whitelistedRestrictedPermissions*/, PackageParser.SigningDetails.UNKNOWN,
-                PackageManager.INSTALL_REASON_UNKNOWN, PackageManager.VERSION_CODE_HIGHEST);
+                PackageManager.INSTALL_REASON_UNKNOWN, PackageManager.VERSION_CODE_HIGHEST,
+                DataLoaderType.NONE);
         params.setTraceMethod("movePackage").setTraceCookie(System.identityHashCode(params));
         msg.obj = params;
 
@@ -22166,13 +22325,15 @@
 
         if (!isPreviousLocationExternal && isExternal(pkg)) {
             // Move from internal to external storage.
-            StatsLog.write(StatsLog.APP_MOVED_STORAGE_REPORTED, packageExternalStorageType,
-                    StatsLog.APP_MOVED_STORAGE_REPORTED__MOVE_TYPE__TO_EXTERNAL,
+            FrameworkStatsLog.write(FrameworkStatsLog.APP_MOVED_STORAGE_REPORTED,
+                    packageExternalStorageType,
+                    FrameworkStatsLog.APP_MOVED_STORAGE_REPORTED__MOVE_TYPE__TO_EXTERNAL,
                     packageName);
         } else if (isPreviousLocationExternal && !isExternal(pkg)) {
             // Move from external to internal storage.
-            StatsLog.write(StatsLog.APP_MOVED_STORAGE_REPORTED, packageExternalStorageType,
-                    StatsLog.APP_MOVED_STORAGE_REPORTED__MOVE_TYPE__TO_INTERNAL,
+            FrameworkStatsLog.write(FrameworkStatsLog.APP_MOVED_STORAGE_REPORTED,
+                    packageExternalStorageType,
+                    FrameworkStatsLog.APP_MOVED_STORAGE_REPORTED__MOVE_TYPE__TO_INTERNAL,
                     packageName);
         }
     }
@@ -22639,6 +22800,11 @@
 
     private class PackageManagerNative extends IPackageManagerNative.Stub {
         @Override
+        public String[] getAllPackages() {
+            return PackageManagerService.this.getAllPackages().toArray(new String[0]);
+        }
+
+        @Override
         public String[] getNamesForUids(int[] uids) throws RemoteException {
             final String[] results = PackageManagerService.this.getNamesForUids(uids);
             // massage results so they can be parsed by the native binder
@@ -22847,7 +23013,7 @@
         @Override
         public AndroidPackage getPackage(int uid) {
             synchronized (mLock) {
-                final String[] packageNames = getPackagesForUid(uid);
+                final String[] packageNames = getPackagesForUidInternal(uid, Process.SYSTEM_UID);
                 AndroidPackage pkg = null;
                 final int numPackages = packageNames == null ? 0 : packageNames.length;
                 for (int i = 0; pkg == null && i < numPackages; i++) {
@@ -22947,7 +23113,7 @@
         }
 
         private String[] getKnownPackageNamesInternal(int knownPackage, int userId) {
-            switch(knownPackage) {
+            switch (knownPackage) {
                 case PackageManagerInternal.PACKAGE_BROWSER:
                     return new String[]{mPermissionManager.getDefaultBrowser(userId)};
                 case PackageManagerInternal.PACKAGE_INSTALLER:
@@ -22959,7 +23125,8 @@
                 case PackageManagerInternal.PACKAGE_VERIFIER:
                     return filterOnlySystemPackages(mRequiredVerifierPackage);
                 case PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER:
-                    return filterOnlySystemPackages(mSystemTextClassifierPackage);
+                    return filterOnlySystemPackages(
+                            mDefaultTextClassifierPackage, mSystemTextClassifierPackageName);
                 case PackageManagerInternal.PACKAGE_PERMISSION_CONTROLLER:
                     return filterOnlySystemPackages(mRequiredPermissionControllerPackage);
                 case PackageManagerInternal.PACKAGE_WELLBEING:
@@ -22976,6 +23143,10 @@
                     return filterOnlySystemPackages(mTelephonyPackages);
                 case PackageManagerInternal.PACKAGE_COMPANION:
                     return filterOnlySystemPackages("com.android.companiondevicemanager");
+                case PackageManagerInternal.PACKAGE_RETAIL_DEMO:
+                    return TextUtils.isEmpty(mRetailDemoPackage)
+                            ? ArrayUtils.emptyArray(String.class)
+                            : new String[] {mRetailDemoPackage};
                 default:
                     return ArrayUtils.emptyArray(String.class);
             }
@@ -23267,9 +23438,10 @@
         @Override
         public void requestInstantAppResolutionPhaseTwo(AuxiliaryResolveInfo responseObj,
                 Intent origIntent, String resolvedType, String callingPackage,
-                boolean isRequesterInstantApp, Bundle verificationBundle, int userId) {
-            PackageManagerService.this.requestInstantAppResolutionPhaseTwo(
-                    responseObj, origIntent, resolvedType, callingPackage, isRequesterInstantApp,
+                @Nullable String callingFeatureId, boolean isRequesterInstantApp,
+                Bundle verificationBundle, int userId) {
+            PackageManagerService.this.requestInstantAppResolutionPhaseTwo(responseObj, origIntent,
+                    resolvedType, callingPackage, callingFeatureId, isRequesterInstantApp,
                     verificationBundle, userId);
         }
 
@@ -23821,9 +23993,8 @@
     @Override
     public int getRuntimePermissionsVersion(@UserIdInt int userId) {
         Preconditions.checkArgumentNonnegative(userId);
-        mContext.enforceCallingOrSelfPermission(
-                Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
-                "setRuntimePermissionVersion");
+        enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
+                "getRuntimePermissionVersion");
         synchronized (mLock) {
             return mSettings.getDefaultRuntimePermissionsVersionLPr(userId);
         }
@@ -23833,19 +24004,36 @@
     public void setRuntimePermissionsVersion(int version, @UserIdInt int userId) {
         Preconditions.checkArgumentNonnegative(version);
         Preconditions.checkArgumentNonnegative(userId);
-        mContext.enforceCallingOrSelfPermission(
-                Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY,
+        enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
                 "setRuntimePermissionVersion");
         synchronized (mLock) {
             mSettings.setDefaultRuntimePermissionsVersionLPr(version, userId);
         }
     }
 
+    private void enforceAdjustRuntimePermissionsPolicyOrUpgradeRuntimePermissions(
+            @NonNull String message) {
+        if (mContext.checkCallingOrSelfPermission(
+                Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY)
+                != PackageManager.PERMISSION_GRANTED
+                && mContext.checkCallingOrSelfPermission(
+                Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS)
+                != PackageManager.PERMISSION_GRANTED) {
+            throw new SecurityException(message + " requires "
+                    + Manifest.permission.ADJUST_RUNTIME_PERMISSIONS_POLICY + " or "
+                    + Manifest.permission.UPGRADE_RUNTIME_PERMISSIONS);
+        }
+    }
+
     @Nullable
     public PackageSetting getPackageSetting(String packageName) {
+        return getPackageSettingInternal(packageName, Binder.getCallingUid());
+    }
+
+    private PackageSetting getPackageSettingInternal(String packageName, int callingUid) {
         synchronized (mLock) {
-            packageName = resolveInternalPackageNameLPr(
-                    packageName, PackageManager.VERSION_CODE_HIGHEST);
+            packageName = resolveInternalPackageNameInternalLocked(
+                    packageName, PackageManager.VERSION_CODE_HIGHEST, callingUid);
             return mSettings.mPackages.get(packageName);
         }
     }
@@ -24167,8 +24355,9 @@
                 Manifest.permission.RECEIVE_DEVICE_CUSTOMIZATION_READY,
             };
             try {
-                am.broadcastIntent(null, intent, null, null, 0, null, null, requiredPermissions,
-                        android.app.AppOpsManager.OP_NONE, null, false, false, UserHandle.USER_ALL);
+                am.broadcastIntentWithFeature(null, null, intent, null, null, 0, null, null,
+                        requiredPermissions, android.app.AppOpsManager.OP_NONE, null, false, false,
+                        UserHandle.USER_ALL);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
diff --git a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
index ded9a9c..9395c97 100644
--- a/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
+++ b/services/core/java/com/android/server/pm/PackageManagerServiceUtils.java
@@ -83,6 +83,7 @@
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintWriter;
+import java.nio.file.Path;
 import java.security.cert.CertificateEncodingException;
 import java.security.cert.CertificateException;
 import java.text.SimpleDateFormat;
@@ -793,6 +794,7 @@
         ret.verifiers = pkg.verifiers;
         ret.recommendedInstallLocation = recommendedInstallLocation;
         ret.multiArch = pkg.multiArch;
+        ret.debuggable = pkg.debuggable;
 
         return ret;
     }
@@ -918,4 +920,21 @@
         }
         return packageSetting.getPermissionsState();
     }
+
+    /**
+     * Recursively create target directory
+     */
+    public static void makeDirRecursive(File targetDir, int mode) throws ErrnoException {
+        final Path targetDirPath = targetDir.toPath();
+        final int directoriesCount = targetDirPath.getNameCount();
+        File currentDir;
+        for (int i = 1; i <= directoriesCount; i++) {
+            currentDir = targetDirPath.subpath(0, i).toFile();
+            if (currentDir.exists()) {
+                continue;
+            }
+            Os.mkdir(currentDir.getAbsolutePath(), mode);
+            Os.chmod(currentDir.getAbsolutePath(), mode);
+        }
+    }
 }
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
index e7f6b89..c267cea 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommand.java
@@ -88,6 +88,7 @@
 import android.os.SystemProperties;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.os.incremental.V4Signature;
 import android.os.storage.StorageManager;
 import android.permission.IPermissionManager;
 import android.system.ErrnoException;
@@ -181,6 +182,8 @@
                     return runInstall();
                 case "install-streaming":
                     return runStreamingInstall();
+                case "install-incremental":
+                    return runIncrementalInstall();
                 case "install-abandon":
                 case "install-destroy":
                     return runInstallAbandon();
@@ -1163,7 +1166,16 @@
         final InstallParams params = makeInstallParams();
         if (params.sessionParams.dataLoaderParams == null) {
             params.sessionParams.setDataLoaderParams(
-                    PackageManagerShellCommandDataLoader.getDataLoaderParams(this));
+                    PackageManagerShellCommandDataLoader.getStreamingDataLoaderParams(this));
+        }
+        return doRunInstall(params);
+    }
+
+    private int runIncrementalInstall() throws RemoteException {
+        final InstallParams params = makeInstallParams();
+        if (params.sessionParams.dataLoaderParams == null) {
+            params.sessionParams.setDataLoaderParams(
+                    PackageManagerShellCommandDataLoader.getIncrementalDataLoaderParams(this));
         }
         return doRunInstall(params);
     }
@@ -2730,6 +2742,9 @@
                 case "--staged":
                     sessionParams.setStaged();
                     break;
+                case "--force-queryable":
+                    sessionParams.setForceQueryable();
+                    break;
                 case "--enable-rollback":
                     if (params.installerPackageName == null) {
                         // com.android.shell has the TEST_MANAGE_ROLLBACKS
@@ -2754,6 +2769,9 @@
                 case "--no-wait":
                     params.mWaitForStagedSessionReady = false;
                     break;
+                case "--skip-verification":
+                    sessionParams.installFlags |= PackageManager.INSTALL_DISABLE_VERIFICATION;
+                    break;
                 default:
                     throw new IllegalArgumentException("Unknown option " + opt);
             }
@@ -2995,17 +3013,27 @@
                         return 1;
                     }
 
-                    session.addFile(LOCATION_DATA_APP, name, sizeBytes, STDIN_PATH_BYTES, null);
+                    // Incremental requires unique metadatas, let's add a name to the dash.
+                    session.addFile(LOCATION_DATA_APP, name, sizeBytes,
+                            ("-" + name).getBytes(StandardCharsets.UTF_8), null);
                     continue;
                 }
 
                 // 3. Local file.
                 final String inPath = arg;
 
-                String name = new File(inPath).getName();
-                byte[] metadata = inPath.getBytes(StandardCharsets.UTF_8);
+                final File file = new File(inPath);
+                final String name = file.getName();
+                final long size = file.length();
+                final byte[] metadata = inPath.getBytes(StandardCharsets.UTF_8);
 
-                session.addFile(LOCATION_DATA_APP, name, -1, metadata, null);
+                // Try to load a v4 signature for the APK.
+                final V4Signature v4signature = V4Signature.readFrom(
+                        new File(inPath + V4Signature.EXT));
+                final byte[] v4signatureBytes =
+                        (v4signature != null) ? v4signature.toByteArray() : null;
+
+                session.addFile(LOCATION_DATA_APP, name, size, metadata, v4signatureBytes);
             }
             return 0;
         } finally {
diff --git a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
index 5dca9e1..8f30e7d 100644
--- a/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
+++ b/services/core/java/com/android/server/pm/PackageManagerShellCommandDataLoader.java
@@ -20,6 +20,7 @@
 import android.content.ComponentName;
 import android.content.pm.DataLoaderParams;
 import android.content.pm.InstallationFile;
+import android.content.pm.PackageInstaller;
 import android.os.ParcelFileDescriptor;
 import android.os.ShellCommand;
 import android.service.dataloader.DataLoaderService;
@@ -54,7 +55,9 @@
 
     private static final String STDIN_PATH = "-";
 
-    static DataLoaderParams getDataLoaderParams(ShellCommand shellCommand) {
+    private static String getDataLoaderParamsArgs(ShellCommand shellCommand) {
+        nativeInitialize();
+
         int commandId;
         synchronized (sShellCommands) {
             // Clean up old references.
@@ -78,8 +81,17 @@
             sShellCommands.put(commandId, new WeakReference<>(shellCommand));
         }
 
-        final String args = SHELL_COMMAND_ID_PREFIX + commandId;
-        return DataLoaderParams.forStreaming(new ComponentName(PACKAGE, CLASS), args);
+        return SHELL_COMMAND_ID_PREFIX + commandId;
+    }
+
+    static DataLoaderParams getStreamingDataLoaderParams(ShellCommand shellCommand) {
+        return DataLoaderParams.forStreaming(new ComponentName(PACKAGE, CLASS),
+                getDataLoaderParamsArgs(shellCommand));
+    }
+
+    static DataLoaderParams getIncrementalDataLoaderParams(ShellCommand shellCommand) {
+        return DataLoaderParams.forIncremental(new ComponentName(PACKAGE, CLASS),
+                getDataLoaderParamsArgs(shellCommand), null);
     }
 
     private static int extractShellCommandId(String args) {
@@ -102,7 +114,7 @@
         }
     }
 
-    static class DataLoader implements DataLoaderService.DataLoader {
+    private static class DataLoader implements DataLoaderService.DataLoader {
         private DataLoaderParams mParams = null;
         private FileSystemConnector mConnector = null;
 
@@ -117,33 +129,22 @@
         @Override
         public boolean onPrepareImage(@NonNull Collection<InstallationFile> addedFiles,
                 @NonNull Collection<String> removedFiles) {
-            final int commandId = extractShellCommandId(mParams.getArguments());
-            if (commandId == INVALID_SHELL_COMMAND_ID) {
-                return false;
-            }
-
-            final WeakReference<ShellCommand> shellCommandRef;
-            synchronized (sShellCommands) {
-                shellCommandRef = sShellCommands.get(commandId, null);
-            }
-            final ShellCommand shellCommand =
-                    shellCommandRef != null ? shellCommandRef.get() : null;
+            ShellCommand shellCommand = lookupShellCommand(mParams.getArguments());
             if (shellCommand == null) {
                 Slog.e(TAG, "Missing shell command.");
                 return false;
             }
             try {
-                for (InstallationFile fileInfo : addedFiles) {
-                    String filePath = new String(fileInfo.getMetadata(), StandardCharsets.UTF_8);
-                    if (STDIN_PATH.equals(filePath) || TextUtils.isEmpty(filePath)) {
-                        final ParcelFileDescriptor inFd = ParcelFileDescriptor.dup(
-                                shellCommand.getInFileDescriptor());
-                        mConnector.writeData(fileInfo.getName(), 0, fileInfo.getSize(), inFd);
+                for (InstallationFile file : addedFiles) {
+                    String filePath = new String(file.getMetadata(), StandardCharsets.UTF_8);
+                    if (TextUtils.isEmpty(filePath) || filePath.startsWith(STDIN_PATH)) {
+                        final ParcelFileDescriptor inFd = getStdInPFD(shellCommand);
+                        mConnector.writeData(file.getName(), 0, file.getLengthBytes(), inFd);
                     } else {
                         ParcelFileDescriptor incomingFd = null;
                         try {
-                            incomingFd = shellCommand.openFileForSystem(filePath, "r");
-                            mConnector.writeData(fileInfo.getName(), 0, incomingFd.getStatSize(),
+                            incomingFd = getLocalFile(shellCommand, filePath);
+                            mConnector.writeData(file.getName(), 0, incomingFd.getStatSize(),
                                     incomingFd);
                         } finally {
                             IoUtils.closeQuietly(incomingFd);
@@ -158,8 +159,45 @@
         }
     }
 
-    @Override
-    public DataLoaderService.DataLoader onCreateDataLoader() {
-        return new DataLoader();
+    static ShellCommand lookupShellCommand(String args) {
+        final int commandId = extractShellCommandId(args);
+        if (commandId == INVALID_SHELL_COMMAND_ID) {
+            return null;
+        }
+
+        final WeakReference<ShellCommand> shellCommandRef;
+        synchronized (sShellCommands) {
+            shellCommandRef = sShellCommands.get(commandId, null);
+        }
+        final ShellCommand shellCommand =
+                shellCommandRef != null ? shellCommandRef.get() : null;
+
+        return shellCommand;
     }
+
+    static ParcelFileDescriptor getStdInPFD(ShellCommand shellCommand) {
+        try {
+            return ParcelFileDescriptor.dup(shellCommand.getInFileDescriptor());
+        } catch (IOException e) {
+            Slog.e(TAG, "Exception while obtaining STDIN fd", e);
+            return null;
+        }
+    }
+
+    static ParcelFileDescriptor getLocalFile(ShellCommand shellCommand, String filePath) {
+        return shellCommand.openFileForSystem(filePath, "r");
+    }
+
+    @Override
+    public DataLoaderService.DataLoader onCreateDataLoader(
+            @NonNull DataLoaderParams dataLoaderParams) {
+        if (dataLoaderParams.getType() == PackageInstaller.DATA_LOADER_TYPE_STREAMING) {
+            // This DataLoader only supports streaming installations.
+            return new DataLoader();
+        }
+        return null;
+    }
+
+    /* Native methods */
+    private static native void nativeInitialize();
 }
diff --git a/services/core/java/com/android/server/pm/PackageSettingBase.java b/services/core/java/com/android/server/pm/PackageSettingBase.java
index f1ac0af..7d95b19 100644
--- a/services/core/java/com/android/server/pm/PackageSettingBase.java
+++ b/services/core/java/com/android/server/pm/PackageSettingBase.java
@@ -36,7 +36,6 @@
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.Preconditions;
 
 import java.io.File;
 import java.util.Arrays;
@@ -132,6 +131,8 @@
 
     IntentFilterVerificationInfo verificationInfo;
 
+    boolean forceQueryableOverride;
+
     PackageSettingBase(String name, String realName, File codePath, File resourcePath,
             String legacyNativeLibraryPathString, String primaryCpuAbiString,
             String secondaryCpuAbiString, String cpuAbiOverrideString,
@@ -261,6 +262,7 @@
                 ? Arrays.copyOf(orig.usesStaticLibrariesVersions,
                        orig.usesStaticLibrariesVersions.length) : null;
         updateAvailable = orig.updateAvailable;
+        forceQueryableOverride = orig.forceQueryableOverride;
     }
 
     @VisibleForTesting
@@ -693,6 +695,7 @@
         this.categoryHint = other.categoryHint;
         this.updateAvailable = other.updateAvailable;
         this.verificationInfo = other.verificationInfo;
+        this.forceQueryableOverride = other.forceQueryableOverride;
 
         if (mOldCodePaths != null) {
             if (other.mOldCodePaths != null) {
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java
index 5d948b2..0fb4cb0 100644
--- a/services/core/java/com/android/server/pm/Settings.java
+++ b/services/core/java/com/android/server/pm/Settings.java
@@ -2836,6 +2836,9 @@
         if (pkg.updateAvailable) {
             serializer.attribute(null, "updateAvailable", "true");
         }
+        if (pkg.forceQueryableOverride) {
+            serializer.attribute(null, "forceQueryable", "true");
+        }
 
         writeUsesStaticLibLPw(serializer, pkg.usesStaticLibraries, pkg.usesStaticLibrariesVersions);
 
@@ -3599,6 +3602,7 @@
         PackageSetting packageSetting = null;
         String version = null;
         long versionCode = 0;
+        String installedForceQueryable = null;
         try {
             name = parser.getAttributeValue(null, ATTR_NAME);
             realName = parser.getAttributeValue(null, "realName");
@@ -3615,6 +3619,7 @@
             secondaryCpuAbiString = parser.getAttributeValue(null, "secondaryCpuAbi");
             cpuAbiOverrideString = parser.getAttributeValue(null, "cpuAbiOverride");
             updateAvailable = parser.getAttributeValue(null, "updateAvailable");
+            installedForceQueryable = parser.getAttributeValue(null, "forceQueryable");
 
             if (primaryCpuAbiString == null && legacyCpuAbiString != null) {
                 primaryCpuAbiString = legacyCpuAbiString;
@@ -3798,6 +3803,7 @@
             packageSetting.primaryCpuAbiString = primaryCpuAbiString;
             packageSetting.secondaryCpuAbiString = secondaryCpuAbiString;
             packageSetting.updateAvailable = "true".equals(updateAvailable);
+            packageSetting.forceQueryableOverride = "true".equals(installedForceQueryable);
             // Handle legacy string here for single-user mode
             final String enabledStr = parser.getAttributeValue(null, ATTR_ENABLED);
             if (enabledStr != null) {
@@ -4517,7 +4523,11 @@
                 pw.print(prefix); pw.print("  privateFlags="); printFlags(pw,
                         pkg.getPrivateFlags(), PRIVATE_FLAG_DUMP_SPEC); pw.println();
             }
-            pw.print(prefix); pw.print("  forceQueryable="); pw.println(ps.pkg.isForceQueryable());
+            pw.print(prefix); pw.print("  forceQueryable="); pw.print(ps.pkg.isForceQueryable());
+            if (ps.forceQueryableOverride) {
+                pw.print(" (override=true)");
+            }
+            pw.println();
             if (ps.pkg.getQueriesPackages() != null) {
                 pw.append(prefix).append("  queriesPackages=").println(ps.pkg.getQueriesPackages());
             }
@@ -4564,7 +4574,7 @@
                 pw.print("anyDensity");
             }
             pw.println("]");
-            List<String> libraryNames = pkg.getLibraryNames();
+            final List<String> libraryNames = pkg.getLibraryNames();
             if (libraryNames != null && libraryNames.size() > 0) {
                 pw.print(prefix); pw.println("  dynamic libraries:");
                 for (int i = 0; i< libraryNames.size(); i++) {
@@ -4579,7 +4589,7 @@
                 pw.print(" version:"); pw.println(pkg.getStaticSharedLibVersion());
             }
 
-            List<String> usesLibraries = pkg.getUsesLibraries();
+            final List<String> usesLibraries = pkg.getUsesLibraries();
             if (usesLibraries != null && usesLibraries.size() > 0) {
                 pw.print(prefix); pw.println("  usesLibraries:");
                 for (int i=0; i< usesLibraries.size(); i++) {
@@ -4587,8 +4597,8 @@
                 }
             }
 
-            List<String> usesStaticLibraries = pkg.getUsesStaticLibraries();
-            long[] usesStaticLibrariesVersions = pkg.getUsesStaticLibrariesVersions();
+            final List<String> usesStaticLibraries = pkg.getUsesStaticLibraries();
+            final long[] usesStaticLibrariesVersions = pkg.getUsesStaticLibrariesVersions();
             if (usesStaticLibraries != null
                     && usesStaticLibraries.size() > 0) {
                 pw.print(prefix); pw.println("  usesStaticLibraries:");
@@ -4599,7 +4609,7 @@
                 }
             }
 
-            List<String> usesOptionalLibraries = pkg.getUsesOptionalLibraries();
+            final List<String> usesOptionalLibraries = pkg.getUsesOptionalLibraries();
             if (usesOptionalLibraries != null
                     && usesOptionalLibraries.size() > 0) {
                 pw.print(prefix); pw.println("  usesOptionalLibraries:");
@@ -4609,7 +4619,7 @@
                 }
             }
 
-            String[] usesLibraryFiles = pkg.getUsesLibraryFiles();
+            final String[] usesLibraryFiles = pkg.getUsesLibraryFiles();
             if (usesLibraryFiles != null
                     && usesLibraryFiles.length > 0) {
                 pw.print(prefix); pw.println("  usesLibraryFiles:");
@@ -4617,6 +4627,20 @@
                     pw.print(prefix); pw.print("    "); pw.println(usesLibraryFiles[i]);
                 }
             }
+            final ArrayMap<String, ComponentParseUtils.ParsedProcess> procs = pkg.getProcesses();
+            if (procs != null) {
+                pw.print(prefix); pw.println("  processes:");
+                for (int i = 0; i < procs.size(); i++) {
+                    final ComponentParseUtils.ParsedProcess proc = procs.valueAt(i);
+                    pw.print(prefix); pw.print("    "); pw.println(proc.name);
+                    if (proc.deniedPermissions != null) {
+                        for (int j = 0; j < proc.deniedPermissions.size(); j++) {
+                            pw.print(prefix); pw.print("      deny: ");
+                            pw.println(proc.deniedPermissions.valueAt(j));
+                        }
+                    }
+                }
+            }
         }
         pw.print(prefix); pw.print("  timeStamp=");
             date.setTime(ps.timeStamp);
diff --git a/services/core/java/com/android/server/pm/SharedUserSetting.java b/services/core/java/com/android/server/pm/SharedUserSetting.java
index b9bb9e0..bbd319cb 100644
--- a/services/core/java/com/android/server/pm/SharedUserSetting.java
+++ b/services/core/java/com/android/server/pm/SharedUserSetting.java
@@ -182,7 +182,10 @@
     public void updateProcesses() {
         processes = null;
         for (int i = packages.size() - 1; i >= 0; i--) {
-            addProcesses(packages.valueAt(i).pkg.getProcesses());
+            final AndroidPackage pkg = packages.valueAt(i).pkg;
+            if (pkg != null) {
+                addProcesses(pkg.getProcesses());
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/pm/ShortcutPackage.java b/services/core/java/com/android/server/pm/ShortcutPackage.java
index 0274aee..c37ceb3 100644
--- a/services/core/java/com/android/server/pm/ShortcutPackage.java
+++ b/services/core/java/com/android/server/pm/ShortcutPackage.java
@@ -310,7 +310,7 @@
     }
 
     /**
-     * Remove all shortcuts that aren't pinned nor dynamic.
+     * Remove all shortcuts that aren't pinned, cached nor dynamic.
      */
     private void removeOrphans() {
         ArrayList<String> removeList = null; // Lazily initialize.
@@ -356,10 +356,10 @@
 
     /**
      * Remove a dynamic shortcut by ID.  It'll be removed from the dynamic set, but if the shortcut
-     * is pinned, it'll remain as a pinned shortcut, and is still enabled.
+     * is pinned or cached, it'll remain as a pinned or cached shortcut, and is still enabled.
      *
-     * @return true if it's actually removed because it wasn't pinned, or false if it's still
-     * pinned.
+     * @return true if it's removed, or false if it was not actually removed because it is either
+     * pinned or cached.
      */
     public boolean deleteDynamicWithId(@NonNull String shortcutId, boolean ignoreInvisible) {
         final ShortcutInfo removed = deleteOrDisableWithId(
@@ -384,6 +384,24 @@
     }
 
     /**
+     * Remove a long lived shortcut by ID. If the shortcut is pinned, it'll remain as a pinned
+     * shortcut, and is still enabled.
+     *
+     * @return true if it's actually removed because it wasn't pinned, or false if it's still
+     * pinned.
+     */
+    public boolean deleteLongLivedWithId(@NonNull String shortcutId, boolean ignoreInvisible) {
+        final ShortcutInfo shortcut = mShortcuts.get(shortcutId);
+        if (shortcut != null) {
+            shortcut.clearFlags(ShortcutInfo.FLAG_CACHED);
+        }
+        final ShortcutInfo removed = deleteOrDisableWithId(
+                shortcutId, /* disable =*/ false, /* overrideImmutable=*/ false, ignoreInvisible,
+                ShortcutInfo.DISABLED_REASON_NOT_DISABLED);
+        return removed == null;
+    }
+
+    /**
      * Disable a dynamic shortcut by ID.  It'll be removed from the dynamic set, but if the shortcut
      * is pinned, it'll remain as a pinned shortcut but will be disabled.
      */
@@ -419,7 +437,7 @@
         if (!overrideImmutable) {
             ensureNotImmutable(oldShortcut, /*ignoreInvisible=*/ true);
         }
-        if (oldShortcut.isPinned()) {
+        if (oldShortcut.isPinned() || oldShortcut.isCached()) {
 
             oldShortcut.setRank(0);
             oldShortcut.clearFlags(ShortcutInfo.FLAG_DYNAMIC | ShortcutInfo.FLAG_MANIFEST);
@@ -500,7 +518,7 @@
             }
         });
 
-        // Lastly, remove the ones that are no longer pinned nor dynamic.
+        // Lastly, remove the ones that are no longer pinned, cached nor dynamic.
         removeOrphans();
     }
 
@@ -1328,6 +1346,10 @@
                     // Don't adjust ranks for manifest shortcuts.
                     continue;
                 }
+                if (si.isCached() && !si.isDynamic()) {
+                    // Don't adjust ranks for cached shortcuts that are not dynamic anymore.
+                    continue;
+                }
                 // At this point, it must be dynamic.
                 if (!si.isDynamic()) {
                     s.wtf("Non-dynamic shortcut found.");
@@ -1869,7 +1891,7 @@
         // Verify each shortcut's status.
         for (int i = mShortcuts.size() - 1; i >= 0; i--) {
             final ShortcutInfo si = mShortcuts.valueAt(i);
-            if (!(si.isDeclaredInManifest() || si.isDynamic() || si.isPinned())) {
+            if (!(si.isDeclaredInManifest() || si.isDynamic() || si.isPinned() || si.isCached())) {
                 failed = true;
                 Log.e(TAG_VERIFY, "Package " + getPackageName() + ": shortcut " + si.getId()
                         + " is not manifest, dynamic or pinned.");
diff --git a/services/core/java/com/android/server/pm/ShortcutService.java b/services/core/java/com/android/server/pm/ShortcutService.java
index 261418c..377fd16 100644
--- a/services/core/java/com/android/server/pm/ShortcutService.java
+++ b/services/core/java/com/android/server/pm/ShortcutService.java
@@ -33,6 +33,7 @@
 import android.content.IntentFilter;
 import android.content.IntentSender;
 import android.content.IntentSender.SendIntentException;
+import android.content.LocusId;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.IPackageManager;
@@ -1703,7 +1704,7 @@
             ShortcutInfo.validateIcon(shortcut.getIcon());
         }
 
-        shortcut.replaceFlags(0);
+        shortcut.replaceFlags(shortcut.getFlags() & ShortcutInfo.FLAG_LONG_LIVED);
     }
 
     private void fixUpIncomingShortcutInfo(@NonNull ShortcutInfo shortcut, boolean forUpdate) {
@@ -1977,10 +1978,14 @@
      * After validating the caller, it passes the request to {@link #mShortcutRequestPinProcessor}.
      * Either {@param shortcut} or {@param appWidget} should be non-null.
      */
-    private boolean requestPinItem(String packageName, int userId, ShortcutInfo shortcut,
+    private boolean requestPinItem(String callingPackage, int userId, ShortcutInfo shortcut,
             AppWidgetProviderInfo appWidget, Bundle extras, IntentSender resultIntent) {
-        verifyCaller(packageName, userId);
-        verifyShortcutInfoPackage(packageName, shortcut);
+        verifyCaller(callingPackage, userId);
+        if (shortcut == null || !injectHasAccessShortcutsPermission(
+                injectBinderCallingPid(), injectBinderCallingUid())) {
+            // Verify if caller is the shortcut owner, only if caller doesn't have ACCESS_SHORTCUTS.
+            verifyShortcutInfoPackage(callingPackage, shortcut);
+        }
 
         final boolean ret;
         synchronized (mLock) {
@@ -1994,14 +1999,15 @@
             // someone already), then we just replace the existing one with this new one,
             // and then proceed the rest of the process.
             if (shortcut != null) {
+                final String shortcutPackage = shortcut.getPackage();
                 final ShortcutPackage ps = getPackageShortcutsForPublisherLocked(
-                        packageName, userId);
+                        shortcutPackage, userId);
                 final String id = shortcut.getId();
                 if (ps.isShortcutExistsAndInvisibleToPublisher(id)) {
 
                     ps.updateInvisibleShortcutForPinRequestWith(shortcut);
 
-                    packageShortcutsChanged(packageName, userId);
+                    packageShortcutsChanged(shortcutPackage, userId);
                 }
             }
 
@@ -2123,44 +2129,54 @@
     }
 
     @Override
-    public ParceledListSlice<ShortcutInfo> getDynamicShortcuts(String packageName,
+    public void removeLongLivedShortcuts(String packageName, List shortcutIds,
             @UserIdInt int userId) {
         verifyCaller(packageName, userId);
+        Objects.requireNonNull(shortcutIds, "shortcutIds must be provided");
 
         synchronized (mLock) {
             throwIfUserLockedL(userId);
 
-            return getShortcutsWithQueryLocked(
-                    packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
-                    ShortcutInfo::isDynamicVisible);
+            final ShortcutPackage ps = getPackageShortcutsForPublisherLocked(packageName, userId);
+
+            ps.ensureImmutableShortcutsNotIncludedWithIds((List<String>) shortcutIds,
+                    /*ignoreInvisible=*/ true);
+
+            for (int i = shortcutIds.size() - 1; i >= 0; i--) {
+                final String id = Preconditions.checkStringNotEmpty((String) shortcutIds.get(i));
+                ps.deleteLongLivedWithId(id, /*ignoreInvisible=*/ true);
+            }
+
+            // We may have removed dynamic shortcuts which may have left a gap, so adjust the ranks.
+            ps.adjustRanks();
         }
+        packageShortcutsChanged(packageName, userId);
+
+        verifyStates();
     }
 
     @Override
-    public ParceledListSlice<ShortcutInfo> getManifestShortcuts(String packageName,
-            @UserIdInt int userId) {
+    public ParceledListSlice<ShortcutInfo> getShortcuts(String packageName,
+            @ShortcutManager.ShortcutMatchFlags int matchFlags, @UserIdInt int userId) {
         verifyCaller(packageName, userId);
 
         synchronized (mLock) {
             throwIfUserLockedL(userId);
 
-            return getShortcutsWithQueryLocked(
-                    packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
-                    ShortcutInfo::isManifestVisible);
-        }
-    }
+            final boolean matchDynamic = (matchFlags & ShortcutManager.FLAG_MATCH_DYNAMIC) != 0;
+            final boolean matchPinned = (matchFlags & ShortcutManager.FLAG_MATCH_PINNED) != 0;
+            final boolean matchManifest = (matchFlags & ShortcutManager.FLAG_MATCH_MANIFEST) != 0;
+            final boolean matchCached = (matchFlags & ShortcutManager.FLAG_MATCH_CACHED) != 0;
 
-    @Override
-    public ParceledListSlice<ShortcutInfo> getPinnedShortcuts(String packageName,
-            @UserIdInt int userId) {
-        verifyCaller(packageName, userId);
-
-        synchronized (mLock) {
-            throwIfUserLockedL(userId);
+            final int shortcutFlags = (matchDynamic ? ShortcutInfo.FLAG_DYNAMIC : 0)
+                    | (matchPinned ? ShortcutInfo.FLAG_PINNED : 0)
+                    | (matchManifest ? ShortcutInfo.FLAG_MANIFEST : 0)
+                    | (matchCached ? ShortcutInfo.FLAG_CACHED : 0);
 
             return getShortcutsWithQueryLocked(
                     packageName, userId, ShortcutInfo.CLONE_REMOVE_FOR_CREATOR,
-                    ShortcutInfo::isPinnedVisible);
+                    (ShortcutInfo si) ->
+                            si.isVisibleToPublisher() && (si.getFlags() & shortcutFlags) != 0);
         }
     }
 
@@ -2574,7 +2590,7 @@
         public List<ShortcutInfo> getShortcuts(int launcherUserId,
                 @NonNull String callingPackage, long changedSince,
                 @Nullable String packageName, @Nullable List<String> shortcutIds,
-                @Nullable ComponentName componentName,
+                @Nullable List<LocusId> locusIds, @Nullable ComponentName componentName,
                 int queryFlags, int userId, int callingPid, int callingUid) {
             final ArrayList<ShortcutInfo> ret = new ArrayList<>();
 
@@ -2595,15 +2611,16 @@
 
                 if (packageName != null) {
                     getShortcutsInnerLocked(launcherUserId,
-                            callingPackage, packageName, shortcutIds, changedSince,
+                            callingPackage, packageName, shortcutIds, locusIds, changedSince,
                             componentName, queryFlags, userId, ret, cloneFlag,
                             callingPid, callingUid);
                 } else {
                     final List<String> shortcutIdsF = shortcutIds;
+                    final List<LocusId> locusIdsF = locusIds;
                     getUserShortcutsLocked(userId).forAllPackages(p -> {
                         getShortcutsInnerLocked(launcherUserId,
-                                callingPackage, p.getPackageName(), shortcutIdsF, changedSince,
-                                componentName, queryFlags, userId, ret, cloneFlag,
+                                callingPackage, p.getPackageName(), shortcutIdsF, locusIdsF,
+                                changedSince, componentName, queryFlags, userId, ret, cloneFlag,
                                 callingPid, callingUid);
                     });
                 }
@@ -2613,12 +2630,15 @@
 
         @GuardedBy("ShortcutService.this.mLock")
         private void getShortcutsInnerLocked(int launcherUserId, @NonNull String callingPackage,
-                @Nullable String packageName, @Nullable List<String> shortcutIds, long changedSince,
+                @Nullable String packageName, @Nullable List<String> shortcutIds,
+                @Nullable List<LocusId> locusIds, long changedSince,
                 @Nullable ComponentName componentName, int queryFlags,
                 int userId, ArrayList<ShortcutInfo> ret, int cloneFlag,
                 int callingPid, int callingUid) {
             final ArraySet<String> ids = shortcutIds == null ? null
                     : new ArraySet<>(shortcutIds);
+            final ArraySet<LocusId> locIds = locusIds == null ? null
+                    : new ArraySet<>(locusIds);
 
             final ShortcutUser user = getUserShortcutsLocked(userId);
             final ShortcutPackage p = user.getPackageShortcutsIfExists(packageName);
@@ -2628,6 +2648,7 @@
             final boolean matchDynamic = (queryFlags & ShortcutQuery.FLAG_MATCH_DYNAMIC) != 0;
             final boolean matchPinned = (queryFlags & ShortcutQuery.FLAG_MATCH_PINNED) != 0;
             final boolean matchManifest = (queryFlags & ShortcutQuery.FLAG_MATCH_MANIFEST) != 0;
+            final boolean matchCached = (queryFlags & ShortcutQuery.FLAG_MATCH_CACHED) != 0;
 
             final boolean canAccessAllShortcuts =
                     canSeeAnyPinnedShortcut(callingPackage, launcherUserId, callingPid, callingUid);
@@ -2644,6 +2665,9 @@
                         if (ids != null && !ids.contains(si.getId())) {
                             return false;
                         }
+                        if (locIds != null && !locIds.contains(si.getLocusId())) {
+                            return false;
+                        }
                         if (componentName != null) {
                             if (si.getActivity() != null
                                     && !si.getActivity().equals(componentName)) {
@@ -2659,6 +2683,9 @@
                         if (matchManifest && si.isDeclaredInManifest()) {
                             return true;
                         }
+                        if (matchCached && si.isCached()) {
+                            return true;
+                        }
                         return false;
                     }, cloneFlag, callingPackage, launcherUserId, getPinnedByAnyLauncher);
         }
@@ -2731,6 +2758,68 @@
         }
 
         @Override
+        public void cacheShortcuts(int launcherUserId,
+                @NonNull String callingPackage, @NonNull String packageName,
+                @NonNull List<String> shortcutIds, int userId) {
+            updateCachedShortcutsInternal(launcherUserId, callingPackage, packageName, shortcutIds,
+                    userId, /* doCache= */ true);
+        }
+
+        @Override
+        public void uncacheShortcuts(int launcherUserId,
+                @NonNull String callingPackage, @NonNull String packageName,
+                @NonNull List<String> shortcutIds, int userId) {
+            updateCachedShortcutsInternal(launcherUserId, callingPackage, packageName, shortcutIds,
+                    userId, /* doCache= */ false);
+        }
+
+        private void updateCachedShortcutsInternal(int launcherUserId,
+                @NonNull String callingPackage, @NonNull String packageName,
+                @NonNull List<String> shortcutIds, int userId, boolean doCache) {
+            // Calling permission must be checked by LauncherAppsImpl.
+            Preconditions.checkStringNotEmpty(packageName, "packageName");
+            Objects.requireNonNull(shortcutIds, "shortcutIds");
+
+            synchronized (mLock) {
+                throwIfUserLockedL(userId);
+                throwIfUserLockedL(launcherUserId);
+
+                final int idSize = shortcutIds.size();
+                final ShortcutPackage sp = getUserShortcutsLocked(userId)
+                        .getPackageShortcutsIfExists(packageName);
+                if (idSize == 0 || sp == null) {
+                    return;
+                }
+
+                for (int i = 0; i < idSize; i++) {
+                    final String id = Preconditions.checkStringNotEmpty(shortcutIds.get(i));
+                    final ShortcutInfo si = sp.findShortcutById(id);
+                    if (si == null || doCache == si.isCached()) {
+                        continue;
+                    }
+
+                    if (doCache) {
+                        if (si.isDynamic() && si.isLongLived()) {
+                            si.addFlags(ShortcutInfo.FLAG_CACHED);
+                        } else {
+                            Log.w(TAG, "Only dynamic long lived shortcuts can get cached. Ignoring"
+                                    + "shortcut " + si.getId());
+                        }
+                    } else {
+                        if (si.isDynamic()) {
+                            si.clearFlags(ShortcutInfo.FLAG_CACHED);
+                        } else {
+                            sp.deleteLongLivedWithId(id, /*ignoreInvisible=*/ true);
+                        }
+                    }
+                }
+            }
+            packageShortcutsChanged(packageName, userId);
+
+            verifyStates();
+        }
+
+        @Override
         public Intent[] createShortcutIntents(int launcherUserId,
                 @NonNull String callingPackage,
                 @NonNull String packageName, @NonNull String shortcutId, int userId,
diff --git a/services/core/java/com/android/server/pm/StagingManager.java b/services/core/java/com/android/server/pm/StagingManager.java
index 74c98f9..614cc3f 100644
--- a/services/core/java/com/android/server/pm/StagingManager.java
+++ b/services/core/java/com/android/server/pm/StagingManager.java
@@ -57,6 +57,7 @@
 import android.os.UserManagerInternal;
 import android.os.storage.IStorageManager;
 import android.os.storage.StorageManager;
+import android.text.TextUtils;
 import android.util.IntArray;
 import android.util.Slog;
 import android.util.SparseArray;
@@ -67,6 +68,7 @@
 import com.android.internal.content.PackageHelper;
 import com.android.internal.os.BackgroundThread;
 import com.android.server.LocalServices;
+import com.android.server.rollback.WatchdogRollbackLogger;
 
 import java.io.File;
 import java.io.IOException;
@@ -99,6 +101,10 @@
     @GuardedBy("mStagedSessions")
     private final SparseIntArray mSessionRollbackIds = new SparseIntArray();
 
+    @GuardedBy("mFailedPackageNames")
+    private final List<String> mFailedPackageNames = new ArrayList<>();
+    private String mNativeFailureReason;
+
     StagingManager(PackageInstallerService pi, Context context) {
         mPi = pi;
         mContext = context;
@@ -141,10 +147,12 @@
         // Get signing details of the new package
         final String apexPath = newApexPkg.applicationInfo.sourceDir;
         final String packageName = newApexPkg.packageName;
+        int minSignatureScheme = ApkSignatureVerifier.getMinimumSignatureSchemeVersionForTargetSdk(
+                newApexPkg.applicationInfo.targetSdkVersion);
 
         final SigningDetails newSigningDetails;
         try {
-            newSigningDetails = ApkSignatureVerifier.verify(apexPath, SignatureSchemeVersion.JAR);
+            newSigningDetails = ApkSignatureVerifier.verify(apexPath, minSignatureScheme);
         } catch (PackageParserException e) {
             throw new PackageManagerException(SessionInfo.STAGED_SESSION_VERIFICATION_FAILED,
                     "Failed to parse APEX package " + apexPath, e);
@@ -342,12 +350,12 @@
     }
 
     /**
+     * Perform snapshot and restore as required both for APEXes themselves and for apks in APEX.
      * Apks inside apex are not installed using apk-install flow. They are scanned from the system
      * directory directly by PackageManager, as such, RollbackManager need to handle their data
      * separately here.
      */
-    private void snapshotAndRestoreApkInApexUserData(PackageInstallerSession session) {
-        // We want to process apks inside apex. So current session needs to contain apex.
+    private void snapshotAndRestoreForApexSession(PackageInstallerSession session) {
         if (!sessionContainsApex(session)) {
             return;
         }
@@ -380,19 +388,37 @@
             apexSessions.add(session);
         }
 
-        // For each apex, process the apks inside it
+        final UserManagerInternal um = LocalServices.getService(UserManagerInternal.class);
+        final int[] allUsers = um.getUserIds();
+        IRollbackManager rm = IRollbackManager.Stub.asInterface(
+                ServiceManager.getService(Context.ROLLBACK_SERVICE));
+
         for (PackageInstallerSession apexSession : apexSessions) {
-            List<String> apksInApex = mApexManager.getApksInApex(apexSession.getPackageName());
+            String packageName = apexSession.getPackageName();
+            // Perform any snapshots or restores for the APEX itself
+            snapshotAndRestoreApexUserData(packageName, allUsers, rm);
+
+            // Process the apks inside the APEX
+            List<String> apksInApex = mApexManager.getApksInApex(packageName);
             for (String apk: apksInApex) {
-                snapshotAndRestoreApkInApexUserData(apk);
+                snapshotAndRestoreApkInApexUserData(apk, allUsers, rm);
             }
         }
     }
 
-    private void snapshotAndRestoreApkInApexUserData(String packageName) {
-        IRollbackManager rm = IRollbackManager.Stub.asInterface(
-                    ServiceManager.getService(Context.ROLLBACK_SERVICE));
+    private void snapshotAndRestoreApexUserData(
+            String packageName, int[] allUsers, IRollbackManager rm) {
+        try {
+            // appId, ceDataInode, and seInfo are not needed for APEXes
+            rm.snapshotAndRestoreUserData(packageName, allUsers, 0, 0,
+                    null, 0 /*token*/);
+        } catch (RemoteException re) {
+            Slog.e(TAG, "Error snapshotting/restoring user data: " + re);
+        }
+    }
 
+    private void snapshotAndRestoreApkInApexUserData(
+            String packageName, int[] allUsers, IRollbackManager rm) {
         PackageManagerInternal mPmi = LocalServices.getService(PackageManagerInternal.class);
         AndroidPackage pkg = mPmi.getPackage(packageName);
         if (pkg == null) {
@@ -401,13 +427,11 @@
             return;
         }
         final String seInfo = pkg.getSeInfo();
-        final UserManagerInternal um = LocalServices.getService(UserManagerInternal.class);
-        final int[] allUsers = um.getUserIds();
 
         int appId = -1;
         long ceDataInode = -1;
         final PackageSetting ps = (PackageSetting) mPmi.getPackageSetting(packageName);
-        if (ps != null && rm != null) {
+        if (ps != null) {
             appId = ps.appId;
             ceDataInode = ps.getCeDataInode(UserHandle.USER_SYSTEM);
             // NOTE: We ignore the user specified in the InstallParam because we know this is
@@ -423,6 +447,22 @@
         }
     }
 
+    /**
+     *  Prepares for the logging of apexd reverts by storing the native failure reason if necessary,
+     *  and adding the package name of the session which apexd reverted to the list of reverted
+     *  session package names.
+     *  Logging needs to wait until the ACTION_BOOT_COMPLETED broadcast is sent.
+     */
+    private void prepareForLoggingApexdRevert(@NonNull PackageInstallerSession session,
+            @NonNull String nativeFailureReason) {
+        synchronized (mFailedPackageNames) {
+            mNativeFailureReason = nativeFailureReason;
+            if (session.getPackageName() != null) {
+                mFailedPackageNames.add(session.getPackageName());
+            }
+        }
+    }
+
     private void resumeSession(@NonNull PackageInstallerSession session) {
         Slog.d(TAG, "Resuming session " + session.sessionId);
 
@@ -432,6 +472,12 @@
             // Check with apexservice whether the apex packages have been activated.
             apexSessionInfo = mApexManager.getStagedSessionInfo(session.sessionId);
 
+            // Prepare for logging a native crash during boot, if one occurred.
+            if (apexSessionInfo != null && !TextUtils.isEmpty(
+                    apexSessionInfo.crashingNativeProcess)) {
+                prepareForLoggingApexdRevert(session, apexSessionInfo.crashingNativeProcess);
+            }
+
             if (apexSessionInfo != null && apexSessionInfo.isVerified) {
                 // Session has been previously submitted to apexd, but didn't complete all the
                 // pre-reboot verification, perhaps because the device rebooted in the meantime.
@@ -496,7 +542,7 @@
                 abortCheckpoint();
                 return;
             }
-            snapshotAndRestoreApkInApexUserData(session);
+            snapshotAndRestoreForApexSession(session);
             Slog.i(TAG, "APEX packages in session " + session.sessionId
                     + " were successfully activated. Proceeding with APK packages, if any");
         }
@@ -937,12 +983,23 @@
         }
     }
 
+    private void logFailedApexSessionsIfNecessary() {
+        synchronized (mFailedPackageNames) {
+            if (!mFailedPackageNames.isEmpty()) {
+                WatchdogRollbackLogger.logApexdRevert(mContext,
+                        mFailedPackageNames, mNativeFailureReason);
+            }
+        }
+    }
+
     void systemReady() {
         // Register the receiver of boot completed intent for staging manager.
         mContext.registerReceiver(new BroadcastReceiver() {
             @Override
             public void onReceive(Context ctx, Intent intent) {
                 mPreRebootVerificationHandler.readyToStart();
+                BackgroundThread.getExecutor().execute(
+                        () -> logFailedApexSessionsIfNecessary());
                 ctx.unregisterReceiver(this);
             }
         }, new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
diff --git a/services/core/java/com/android/server/pm/TEST_MAPPING b/services/core/java/com/android/server/pm/TEST_MAPPING
index f5f4009..81c7471 100644
--- a/services/core/java/com/android/server/pm/TEST_MAPPING
+++ b/services/core/java/com/android/server/pm/TEST_MAPPING
@@ -10,6 +10,9 @@
       "name": "CtsCompilationTestCases"
     },
     {
+      "name": "AppEnumerationTests"
+    },
+    {
       "name": "FrameworksServicesTests",
       "options": [
         {
diff --git a/services/core/java/com/android/server/pm/UserManagerService.java b/services/core/java/com/android/server/pm/UserManagerService.java
index 5511a54..cb755f9 100644
--- a/services/core/java/com/android/server/pm/UserManagerService.java
+++ b/services/core/java/com/android/server/pm/UserManagerService.java
@@ -35,13 +35,16 @@
 import android.app.KeyguardManager;
 import android.app.PendingIntent;
 import android.app.admin.DevicePolicyEventLogger;
+import android.app.admin.DevicePolicyManagerInternal;
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentSender;
+import android.content.pm.CrossProfileAppsInternal;
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManager.NameNotFoundException;
+import android.content.pm.PackageManagerInternal;
 import android.content.pm.ShortcutServiceInternal;
 import android.content.pm.UserInfo;
 import android.content.pm.UserInfo.UserInfoFlag;
@@ -258,6 +261,10 @@
     /** Installs system packages based on user-type. */
     private final UserSystemPackageInstaller mSystemPackageInstaller;
 
+    private PackageManagerInternal mPmInternal;
+    private CrossProfileAppsInternal mCrossProfileAppsInternal;
+    private DevicePolicyManagerInternal mDevicePolicyManagerInternal;
+
     /**
      * Internal non-parcelable wrapper for UserInfo that is not exposed to other system apps.
      */
@@ -462,8 +469,42 @@
     @GuardedBy("mUsersLock")
     private boolean mForceEphemeralUsers;
 
+    /**
+     * The member mUserStates affects the return value of isUserUnlocked.
+     * If any value in mUserStates changes, then the binder cache for
+     * isUserUnlocked must be invalidated.  When adding mutating methods to
+     * WatchedUserStates, be sure to invalidate the cache in the new
+     * methods.
+     */
+    private class WatchedUserStates {
+        final SparseIntArray states;
+        public WatchedUserStates() {
+            states = new SparseIntArray();
+        }
+        public int get(int userId) {
+            return states.get(userId);
+        }
+        public int get(int userId, int fallback) {
+            return states.indexOfKey(userId) >= 0 ? states.get(userId) : fallback;
+        }
+        public void put(int userId, int state) {
+            states.put(userId, state);
+            invalidateIsUserUnlockedCache();
+        }
+        public void delete(int userId) {
+            states.delete(userId);
+            invalidateIsUserUnlockedCache();
+        }
+        @Override
+        public String toString() {
+            return states.toString();
+        }
+        private void invalidateIsUserUnlockedCache() {
+            UserManager.invalidateIsUserUnlockedCache();
+        }
+    }
     @GuardedBy("mUserStates")
-    private final SparseIntArray mUserStates = new SparseIntArray();
+    private final WatchedUserStates mUserStates = new WatchedUserStates();
 
     private static UserManagerService sInstance;
 
@@ -910,6 +951,8 @@
         intent.putExtra(Intent.EXTRA_QUIET_MODE, inQuietMode);
         intent.putExtra(Intent.EXTRA_USER, profileHandle);
         intent.putExtra(Intent.EXTRA_USER_HANDLE, profileHandle.getIdentifier());
+        getDevicePolicyManagerInternal().broadcastIntentToCrossProfileManifestReceiversAsUser(
+                intent, parentHandle, /* requiresPermission= */ true);
         intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY);
         mContext.sendBroadcastAsUser(intent, parentHandle);
     }
@@ -932,6 +975,7 @@
                         userId, true /* enableQuietMode */, target, callingPackage);
                 return true;
             }
+            mLockPatternUtils.tryUnlockWithCachedUnifiedChallenge(userId);
             boolean needToShowConfirmCredential =
                     mLockPatternUtils.isSecure(userId)
                             && !StorageManager.isUserKeyUnlocked(userId);
@@ -942,8 +986,7 @@
                 showConfirmCredentialToDisableQuietMode(userId, target);
                 return false;
             }
-            setQuietModeEnabled(
-                    userId, false /* enableQuietMode */, target, callingPackage);
+            setQuietModeEnabled(userId, false /* enableQuietMode */, target, callingPackage);
             return true;
         } finally {
             Binder.restoreCallingIdentity(identity);
@@ -1901,7 +1944,7 @@
 
     @Override
     public boolean hasBaseUserRestriction(String restrictionKey, @UserIdInt int userId) {
-        checkManageUsersPermission("hasBaseUserRestriction");
+        checkManageOrCreateUsersPermission("hasBaseUserRestriction");
         if (!UserRestrictionsUtils.isValidRestriction(restrictionKey)) {
             return false;
         }
@@ -3811,11 +3854,15 @@
 
     private void sendProfileRemovedBroadcast(int parentUserId, int removedUserId) {
         Intent managedProfileIntent = new Intent(Intent.ACTION_MANAGED_PROFILE_REMOVED);
-        managedProfileIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY |
-                Intent.FLAG_RECEIVER_FOREGROUND);
         managedProfileIntent.putExtra(Intent.EXTRA_USER, new UserHandle(removedUserId));
         managedProfileIntent.putExtra(Intent.EXTRA_USER_HANDLE, removedUserId);
-        mContext.sendBroadcastAsUser(managedProfileIntent, new UserHandle(parentUserId), null);
+        final UserHandle parentHandle = new UserHandle(parentUserId);
+        getDevicePolicyManagerInternal().broadcastIntentToCrossProfileManifestReceiversAsUser(
+                managedProfileIntent, parentHandle, /* requiresPermission= */ false);
+        managedProfileIntent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY
+                | Intent.FLAG_RECEIVER_FOREGROUND);
+        mContext.sendBroadcastAsUser(managedProfileIntent, parentHandle,
+                /* receiverPermission= */null);
     }
 
     @Override
@@ -4801,6 +4848,11 @@
                     || (state == UserState.STATE_RUNNING_UNLOCKED);
         }
 
+        /**
+         * The return values of this method are cached in clients.  If the
+         * logic in this function changes then the cache invalidation code
+         * may need to be revisited.
+         */
         @Override
         public boolean isUserUnlocked(@UserIdInt int userId) {
             int state;
@@ -5056,7 +5108,7 @@
     }
 
     /**
-     * Check if the calling package name matches with the calling UID, throw
+     * Checks if the calling package name matches with the calling UID, throw
      * {@link SecurityException} if not.
      */
     private void verifyCallingPackage(String callingPackage, int callingUid) {
@@ -5066,4 +5118,30 @@
                     + " does not match the calling uid " + callingUid);
         }
     }
+
+    /** Retrieves the internal package manager interface. */
+    private PackageManagerInternal getPackageManagerInternal() {
+        // Don't need to synchonize; worst-case scenario LocalServices will be called twice.
+        if (mPmInternal == null) {
+            mPmInternal = LocalServices.getService(PackageManagerInternal.class);
+        }
+        return mPmInternal;
+    }
+
+    /** Retrieve the internal cross profile apps interface. */
+    private CrossProfileAppsInternal getCrossProfileAppsInternal() {
+        if (mCrossProfileAppsInternal == null) {
+            mCrossProfileAppsInternal = LocalServices.getService(CrossProfileAppsInternal.class);
+        }
+        return mCrossProfileAppsInternal;
+    }
+
+    /** Returns the internal device policy manager interface. */
+    private DevicePolicyManagerInternal getDevicePolicyManagerInternal() {
+        if (mDevicePolicyManagerInternal == null) {
+            mDevicePolicyManagerInternal =
+                    LocalServices.getService(DevicePolicyManagerInternal.class);
+        }
+        return mDevicePolicyManagerInternal;
+    }
 }
diff --git a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
index 91bd7ae..67b1008 100644
--- a/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
+++ b/services/core/java/com/android/server/pm/UserRestrictionsUtils.java
@@ -783,6 +783,7 @@
                 break;
 
             case android.provider.Settings.System.SCREEN_BRIGHTNESS:
+            case android.provider.Settings.System.SCREEN_BRIGHTNESS_FLOAT:
             case android.provider.Settings.System.SCREEN_BRIGHTNESS_MODE:
                 if (callingUid == Process.SYSTEM_UID) {
                     return false;
diff --git a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
index 77bb48e..4c40448 100644
--- a/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
+++ b/services/core/java/com/android/server/pm/UserSystemPackageInstaller.java
@@ -89,7 +89,7 @@
      * <ul>
      * <li> 0  - disable whitelist (install all system packages; no logging)</li>
      * <li> 1  - enforce (only install system packages if they are whitelisted)</li>
-     * <li> 2  - log (log when a non-whitelisted package is run)</li>
+     * <li> 2  - log (log non-whitelisted packages)</li>
      * <li> 4  - for all users: implicitly whitelist any package not mentioned in the whitelist</li>
      * <li> 8  - for SYSTEM: implicitly whitelist any package not mentioned in the whitelist</li>
      * <li> 16 - ignore OTAs (don't install system packages during OTAs)</li>
diff --git a/services/core/java/com/android/server/pm/permission/BasePermission.java b/services/core/java/com/android/server/pm/permission/BasePermission.java
index 565a85f..e323c98 100644
--- a/services/core/java/com/android/server/pm/permission/BasePermission.java
+++ b/services/core/java/com/android/server/pm/permission/BasePermission.java
@@ -284,6 +284,10 @@
         return (protectionLevel & PermissionInfo.PROTECTION_FLAG_COMPANION) != 0;
     }
 
+    public boolean isRetailDemo() {
+        return (protectionLevel & PermissionInfo.PROTECTION_FLAG_RETAIL_DEMO) != 0;
+    }
+
     public void transfer(@NonNull String origPackageName, @NonNull String newPackageName) {
         if (!origPackageName.equals(sourcePackageName)) {
             return;
diff --git a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
index 46893b2..e6eaf21 100644
--- a/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
+++ b/services/core/java/com/android/server/pm/permission/DefaultPermissionGrantPolicy.java
@@ -720,12 +720,9 @@
                 userId, STORAGE_PERMISSIONS);
 
         // TextClassifier Service
-        final String[] packages = mContext.getPackageManager().getSystemTextClassifierPackages();
-        if (packages.length > 0) {
-            // We have a list of supported system TextClassifier package names, the first one
-            // package is the default system TextClassifier service. Grant permissions to default
-            // TextClassifier Service.
-            grantPermissionsToSystemPackage(packages[0], userId,
+        for (String textClassifierPackage :
+                getKnownPackages(PackageManagerInternal.PACKAGE_SYSTEM_TEXT_CLASSIFIER, userId)) {
+            grantPermissionsToSystemPackage(textClassifierPackage, userId,
                     COARSE_BACKGROUND_LOCATION_PERMISSIONS, CONTACTS_PERMISSIONS);
         }
 
diff --git a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java
index b809951..976ce1f 100644
--- a/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java
+++ b/services/core/java/com/android/server/pm/permission/OneTimePermissionUserManager.java
@@ -36,6 +36,8 @@
 
     private static final String LOG_TAG = OneTimePermissionUserManager.class.getSimpleName();
 
+    private static final boolean DEBUG = true;
+
     private final @NonNull Context mContext;
     private final @NonNull ActivityManager mActivityManager;
     private final @NonNull AlarmManager mAlarmManager;
@@ -156,6 +158,14 @@
 
         private PackageInactivityListener(int uid, @NonNull String packageName, long timeout,
                 int importanceToResetTimer, int importanceToKeepSessionAlive) {
+
+            if (DEBUG) {
+                Log.d(LOG_TAG,
+                        "Start tracking " + packageName + ". uid=" + uid + " timeout=" + timeout
+                                + " importanceToResetTimer=" + importanceToResetTimer
+                                + " importanceToKeepSessionAlive=" + importanceToKeepSessionAlive);
+            }
+
             mUid = uid;
             mPackageName = packageName;
             mTimeout = timeout;
@@ -182,6 +192,12 @@
             if (uid != mUid) {
                 return;
             }
+
+
+            if (DEBUG) {
+                Log.d(LOG_TAG, "Importance changed for " + mPackageName + " (" + mUid + ")."
+                        + " importance=" + importance);
+            }
             synchronized (mInnerLock) {
                 if (importance > IMPORTANCE_CACHED) {
                     onPackageInactiveLocked();
@@ -257,8 +273,15 @@
             mIsFinished = true;
             cancelAlarmLocked();
             mContext.getMainThreadHandler().post(
-                    () -> mPermissionControllerManager.notifyOneTimePermissionSessionTimeout(
-                            mPackageName));
+                    () -> {
+                        if (DEBUG) {
+                            Log.d(LOG_TAG, "One time session expired for "
+                                    + mPackageName + " (" + mUid + ").");
+                        }
+
+                        mPermissionControllerManager.notifyOneTimePermissionSessionTimeout(
+                                mPackageName);
+                    });
             mActivityManager.removeOnUidImportanceListener(mStartTimerListener);
             mActivityManager.removeOnUidImportanceListener(mSessionKillableListener);
             mActivityManager.removeOnUidImportanceListener(mGoneListener);
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 6167a50..1fc2dd5 100644
--- a/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
+++ b/services/core/java/com/android/server/pm/permission/PermissionManagerService.java
@@ -55,6 +55,8 @@
 import android.app.ActivityManager;
 import android.app.ApplicationPackageManager;
 import android.app.IActivityManager;
+import android.app.admin.DeviceAdminInfo;
+import android.app.admin.DevicePolicyManagerInternal;
 import android.compat.annotation.ChangeId;
 import android.compat.annotation.EnabledAfter;
 import android.content.Context;
@@ -3355,10 +3357,27 @@
                 // Special permissions for the system companion device manager.
                 allowed = true;
             }
+            if (!allowed && bp.isRetailDemo()
+                    && ArrayUtils.contains(mPackageManagerInt.getKnownPackageNames(
+                            PackageManagerInternal.PACKAGE_RETAIL_DEMO, UserHandle.USER_SYSTEM),
+                    pkg.getPackageName()) && isProfileOwner(pkg.getUid())) {
+                // Special permission granted only to the OEM specified retail demo app
+                allowed = true;
+            }
         }
         return allowed;
     }
 
+    private static boolean isProfileOwner(int uid) {
+        DevicePolicyManagerInternal dpmInternal =
+                LocalServices.getService(DevicePolicyManagerInternal.class);
+        if (dpmInternal != null) {
+            return dpmInternal
+                    .isActiveAdminWithPolicy(uid, DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+        }
+        return false;
+    }
+
     private static boolean canGrantOemPermission(PackageSetting ps, String permission) {
         if (!ps.isOem()) {
             return false;
diff --git a/services/core/java/com/android/server/policy/LegacyGlobalActions.java b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
index 6daf516..6eba59a 100644
--- a/services/core/java/com/android/server/policy/LegacyGlobalActions.java
+++ b/services/core/java/com/android/server/policy/LegacyGlobalActions.java
@@ -402,7 +402,7 @@
         public String getStatus() {
             return mContext.getString(
                     com.android.internal.R.string.bugreport_status,
-                    Build.VERSION.RELEASE,
+                    Build.VERSION.RELEASE_OR_CODENAME,
                     Build.ID);
         }
     }
diff --git a/services/core/java/com/android/server/policy/PermissionPolicyService.java b/services/core/java/com/android/server/policy/PermissionPolicyService.java
index a86c8d7..43d4596 100644
--- a/services/core/java/com/android/server/policy/PermissionPolicyService.java
+++ b/services/core/java/com/android/server/policy/PermissionPolicyService.java
@@ -29,6 +29,7 @@
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.AppOpsManager;
+import android.app.AppOpsManagerInternal;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.ApplicationInfo;
@@ -38,9 +39,7 @@
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.PackageManagerInternal.PackageListObserver;
 import android.content.pm.PermissionInfo;
-import android.content.pm.parsing.AndroidPackage;
 import android.os.Build;
-import android.os.Process;
 import android.os.RemoteException;
 import android.os.ServiceManager;
 import android.os.UserHandle;
@@ -51,14 +50,15 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.LongSparseLongArray;
-import android.util.Pair;
 import android.util.Slog;
+import android.util.SparseArray;
 import android.util.SparseBooleanArray;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.app.IAppOpsCallback;
 import com.android.internal.app.IAppOpsService;
 import com.android.internal.infra.AndroidFuture;
+import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.IntPair;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.FgThread;
@@ -69,6 +69,7 @@
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 import java.util.concurrent.ExecutionException;
 
 /**
@@ -84,6 +85,8 @@
 
     private final Object mLock = new Object();
 
+    private IAppOpsCallback mAppOpsCallback;
+
     /** Whether the user is started but not yet stopped */
     @GuardedBy("mLock")
     private final SparseBooleanArray mIsStarted = new SparseBooleanArray();
@@ -97,7 +100,7 @@
      * scheduled for a package/user.
      */
     @GuardedBy("mLock")
-    private final ArraySet<Pair<String, Integer>> mIsPackageSyncsScheduled = new ArraySet<>();
+    private final ArraySet<Integer> mIsPackageSyncsScheduled = new ArraySet<>();
 
     public PermissionPolicyService(@NonNull Context context) {
         super(context);
@@ -122,10 +125,8 @@
 
             @Override
             public void onPackageChanged(String packageName, int uid) {
-                final int userId = UserHandle.getUserId(uid);
-
-                if (isStarted(userId)) {
-                    synchronizePackagePermissionsAndAppOpsForUser(packageName, userId);
+                if (isStarted(UserHandle.getUserId(uid))) {
+                    synchronizePackagePermissionsAndAppOpsForUser(uid);
                 }
             }
 
@@ -136,12 +137,21 @@
         });
 
         permManagerInternal.addOnRuntimePermissionStateChangedListener(
-                this::synchronizePackagePermissionsAndAppOpsAsyncForUser);
+                (packageName, userId) -> {
+                    int uid;
+                    try {
+                        uid = getContext().getPackageManager().getPackageUidAsUser(packageName, 0,
+                                userId);
+                    } catch (NameNotFoundException e) {
+                        Slog.e(LOG_TAG, "Cannot synchronize changed package " + packageName, e);
+                        return;
+                    }
+                    synchronizeUidPermissionsAndAppOpsAsync(uid);
+                });
 
-        IAppOpsCallback appOpsListener = new IAppOpsCallback.Stub() {
+        mAppOpsCallback = new IAppOpsCallback.Stub() {
             public void opChanged(int op, int uid, String packageName) {
-                synchronizePackagePermissionsAndAppOpsAsyncForUser(packageName,
-                        UserHandle.getUserId(uid));
+                synchronizeUidPermissionsAndAppOpsAsync(uid);
             }
         };
 
@@ -155,7 +165,7 @@
                 PermissionInfo perm = dangerousPerms.get(i);
 
                 if (perm.isRuntime()) {
-                    appOpsService.startWatchingMode(getSwitchOp(perm.name), null, appOpsListener);
+                    appOpsService.startWatchingMode(getSwitchOp(perm.name), null, mAppOpsCallback);
                 }
                 if (perm.isSoftRestricted()) {
                     SoftRestrictedPermissionPolicy policy =
@@ -163,7 +173,7 @@
                                     perm.name);
                     int extraAppOp = policy.getExtraAppOpCode();
                     if (extraAppOp != OP_NONE) {
-                        appOpsService.startWatchingMode(extraAppOp, null, appOpsListener);
+                        appOpsService.startWatchingMode(extraAppOp, null, mAppOpsCallback);
                     }
                 }
             }
@@ -191,19 +201,17 @@
         return AppOpsManager.opToSwitch(op);
     }
 
-    private void synchronizePackagePermissionsAndAppOpsAsyncForUser(@NonNull String packageName,
-            @UserIdInt int changedUserId) {
-        if (isStarted(changedUserId)) {
+    private void synchronizeUidPermissionsAndAppOpsAsync(int uid) {
+        if (isStarted(UserHandle.getUserId(uid))) {
             synchronized (mLock) {
-                if (mIsPackageSyncsScheduled.add(new Pair<>(packageName, changedUserId))) {
+                if (mIsPackageSyncsScheduled.add(uid)) {
                     FgThread.getHandler().sendMessage(PooledLambda.obtainMessage(
                             PermissionPolicyService
                                     ::synchronizePackagePermissionsAndAppOpsForUser,
-                            this, packageName, changedUserId));
+                            this, uid));
                 } else {
                     if (DEBUG) {
-                        Slog.v(LOG_TAG, "sync for " + packageName + "/" + changedUserId
-                                + " already scheduled");
+                        Slog.v(LOG_TAG, "sync for " + uid + " already scheduled");
                     }
                 }
             }
@@ -332,39 +340,20 @@
     /**
      * Synchronize a single package.
      */
-    private void synchronizePackagePermissionsAndAppOpsForUser(@NonNull String packageName,
-            @UserIdInt int userId) {
+    private void synchronizePackagePermissionsAndAppOpsForUser(int uid) {
         synchronized (mLock) {
-            mIsPackageSyncsScheduled.remove(new Pair<>(packageName, userId));
+            mIsPackageSyncsScheduled.remove(uid);
         }
 
         if (DEBUG) {
             Slog.v(LOG_TAG,
-                    "synchronizePackagePermissionsAndAppOpsForUser(" + packageName + ", "
-                            + userId + ")");
+                    "synchronizePackagePermissionsAndAppOpsForUser(" + uid + ")");
         }
 
-        final PackageManagerInternal packageManagerInternal = LocalServices.getService(
-                PackageManagerInternal.class);
-        final PackageInfo pkg = packageManagerInternal.getPackageInfo(packageName, 0,
-                Process.SYSTEM_UID, userId);
-        if (pkg == null) {
-            return;
-        }
         final PermissionToOpSynchroniser synchroniser = new PermissionToOpSynchroniser(
-                getUserContext(getContext(), UserHandle.of(userId)));
-        synchroniser.addPackage(pkg.packageName);
-        final String[] sharedPkgNames = packageManagerInternal.getSharedUserPackagesForPackage(
-                pkg.packageName, userId);
-
-        for (String sharedPkgName : sharedPkgNames) {
-            final AndroidPackage sharedPkg = packageManagerInternal
-                    .getPackage(sharedPkgName);
-            if (sharedPkg != null) {
-                synchroniser.addPackage(sharedPkg.getPackageName());
-            }
-        }
-        synchroniser.syncPackages();
+                getUserContext(getContext(), UserHandle.getUserHandleForUid(uid)));
+        synchroniser.addUid(uid);
+        synchroniser.syncUids();
     }
 
     /**
@@ -378,57 +367,73 @@
         final PermissionToOpSynchroniser synchronizer = new PermissionToOpSynchroniser(
                 getUserContext(getContext(), UserHandle.of(userId)));
         packageManagerInternal.forEachPackage(
-                (pkg) -> synchronizer.addPackage(pkg.getPackageName()));
-        synchronizer.syncPackages();
+                (pkg) -> synchronizer.addUid(pkg.getUid()));
+        synchronizer.syncUids();
     }
 
     /**
      * Synchronizes permission to app ops. You *must* always sync all packages
      * in a shared UID at the same time to ensure proper synchronization.
      */
-    private static class PermissionToOpSynchroniser {
+    private class PermissionToOpSynchroniser {
         private final @NonNull Context mContext;
         private final @NonNull PackageManager mPackageManager;
         private final @NonNull AppOpsManager mAppOpsManager;
+        private final @NonNull AppOpsManagerInternal mAppOpsManagerInternal;
 
         private final @NonNull ArrayMap<String, PermissionInfo> mRuntimePermissionInfos;
 
+        // Cache uid -> packageNames
+        private SparseArray<String[]> mUidToPkg = new SparseArray<>();
+
         /**
          * All ops that need to be flipped to allow.
          *
-         * @see #syncPackages
+         * @see #syncUids
          */
-        private final @NonNull ArrayList<OpToChange> mOpsToAllow = new ArrayList<>();
+        private final @NonNull ArraySet<OpToChange> mOpsToAllow = new ArraySet<>();
 
         /**
          * All ops that need to be flipped to ignore.
          *
-         * @see #syncPackages
+         * @see #syncUids
          */
-        private final @NonNull ArrayList<OpToChange> mOpsToIgnore = new ArrayList<>();
+        private final @NonNull ArraySet<OpToChange> mOpsToIgnore = new ArraySet<>();
 
         /**
          * All ops that need to be flipped to ignore if not allowed.
          *
          * Currently, only used by soft restricted permissions logic.
          *
-         * @see #syncPackages
+         * @see #syncUids
          */
-        private final @NonNull ArrayList<OpToChange> mOpsToIgnoreIfNotAllowed = new ArrayList<>();
+        private final @NonNull ArraySet<OpToChange> mOpsToIgnoreIfNotAllowed = new ArraySet<>();
 
         /**
          * All ops that need to be flipped to foreground.
          *
          * Currently, only used by the foreground/background permissions logic.
          *
-         * @see #syncPackages
+         * @see #syncUids
          */
-        private final @NonNull ArrayList<OpToChange> mOpsToForeground = new ArrayList<>();
+        private final @NonNull ArraySet<OpToChange> mOpsToForeground = new ArraySet<>();
+
+        private @Nullable String[] getPackageNamesForUid(int uid) {
+            String[] pkgs = mUidToPkg.get(uid);
+            if (pkgs != null) {
+                return pkgs;
+            }
+
+            pkgs = mPackageManager.getPackagesForUid(uid);
+            mUidToPkg.put(uid, pkgs);
+            return pkgs;
+        }
 
         PermissionToOpSynchroniser(@NonNull Context context) {
             mContext = context;
             mPackageManager = context.getPackageManager();
             mAppOpsManager = context.getSystemService(AppOpsManager.class);
+            mAppOpsManagerInternal = LocalServices.getService(AppOpsManagerInternal.class);
 
             mRuntimePermissionInfos = new ArrayMap<>();
             PermissionManagerServiceInternal permissionManagerInternal = LocalServices.getService(
@@ -444,11 +449,11 @@
         }
 
         /**
-         * Set app ops that were added in {@link #addPackage}.
+         * Set app ops that were added in {@link #addUid}.
          *
          * <p>This processes ops previously added by {@link #addAppOps(PackageInfo, String)}
          */
-        private void syncPackages() {
+        private void syncUids() {
             // Remember which ops were already set. This makes sure that we always set the most
             // permissive mode if two OpChanges are scheduled. This can e.g. happen if two
             // permissions change the same op. See {@link #getSwitchOp}.
@@ -456,42 +461,42 @@
 
             final int allowCount = mOpsToAllow.size();
             for (int i = 0; i < allowCount; i++) {
-                final OpToChange op = mOpsToAllow.get(i);
+                final OpToChange op = mOpsToAllow.valueAt(i);
 
-                setUidModeAllowed(op.code, op.uid, op.packageName);
+                setUidModeAllowed(op.code, op.uid);
                 alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1);
             }
 
             final int foregroundCount = mOpsToForeground.size();
             for (int i = 0; i < foregroundCount; i++) {
-                final OpToChange op = mOpsToForeground.get(i);
+                final OpToChange op = mOpsToForeground.valueAt(i);
                 if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) {
                     continue;
                 }
 
-                setUidModeForeground(op.code, op.uid, op.packageName);
+                setUidModeForeground(op.code, op.uid);
                 alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1);
             }
 
             final int ignoreCount = mOpsToIgnore.size();
             for (int i = 0; i < ignoreCount; i++) {
-                final OpToChange op = mOpsToIgnore.get(i);
+                final OpToChange op = mOpsToIgnore.valueAt(i);
                 if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) {
                     continue;
                 }
 
-                setUidModeIgnored(op.code, op.uid, op.packageName);
+                setUidModeIgnored(op.code, op.uid);
                 alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1);
             }
 
             final int ignoreIfNotAllowedCount = mOpsToIgnoreIfNotAllowed.size();
             for (int i = 0; i < ignoreIfNotAllowedCount; i++) {
-                final OpToChange op = mOpsToIgnoreIfNotAllowed.get(i);
+                final OpToChange op = mOpsToIgnoreIfNotAllowed.valueAt(i);
                 if (alreadySetAppOps.indexOfKey(IntPair.of(op.uid, op.code)) >= 0) {
                     continue;
                 }
 
-                boolean wasSet = setUidModeIgnoredIfNotAllowed(op.code, op.uid, op.packageName);
+                boolean wasSet = setUidModeIgnoredIfNotAllowed(op.code, op.uid);
                 if (wasSet) {
                     alreadySetAppOps.put(IntPair.of(op.uid, op.code), 1);
                 }
@@ -550,7 +555,7 @@
             }
 
             int uid = packageInfo.applicationInfo.uid;
-            OpToChange opToChange = new OpToChange(uid, packageName, appOpCode);
+            OpToChange opToChange = new OpToChange(uid, appOpCode);
             switch (appOpMode) {
                 case MODE_ALLOWED:
                     mOpsToAllow.add(opToChange);
@@ -613,8 +618,7 @@
             }
 
             int uid = packageInfo.applicationInfo.uid;
-            String packageName = packageInfo.packageName;
-            OpToChange extraOpToChange = new OpToChange(uid, packageName, extraOpCode);
+            OpToChange extraOpToChange = new OpToChange(uid, extraOpCode);
             if (policy.mayAllowExtraAppOp()) {
                 mOpsToAllow.add(extraOpToChange);
             } else {
@@ -627,82 +631,115 @@
         }
 
         /**
-         * Add a package for {@link #syncPackages() processing} later.
+         * Add a Uid for {@link #syncUids() processing} later.
          *
          * <p>Note: Called with the package lock held. Do <u>not</u> call into app-op manager.
          *
-         * @param pkgName The package to add for later processing.
+         * @param uid The uid to add for later processing.
          */
-        void addPackage(@NonNull String pkgName) {
-            final PackageInfo pkg;
-            try {
-                pkg = mPackageManager.getPackageInfo(pkgName, GET_PERMISSIONS);
-            } catch (NameNotFoundException e) {
+        void addUid(int uid) {
+            String[] pkgNames = getPackageNamesForUid(uid);
+            if (pkgNames == null) {
                 return;
             }
 
-            if (pkg.requestedPermissions == null) {
-                return;
-            }
+            for (String pkgName : pkgNames) {
+                final PackageInfo pkg;
+                try {
+                    pkg = mPackageManager.getPackageInfo(pkgName, GET_PERMISSIONS);
+                } catch (NameNotFoundException e) {
+                    continue;
+                }
 
-            for (String permission : pkg.requestedPermissions) {
-                addAppOps(pkg, permission);
+                if (pkg.requestedPermissions == null) {
+                    continue;
+                }
+
+                for (String permission : pkg.requestedPermissions) {
+                    addAppOps(pkg, permission);
+                }
             }
         }
 
-        private void setUidModeAllowed(int opCode, int uid, @NonNull String packageName) {
-            setUidMode(opCode, uid, MODE_ALLOWED, packageName);
+        private void setUidModeAllowed(int opCode, int uid) {
+            setUidMode(opCode, uid, MODE_ALLOWED);
         }
 
-        private void setUidModeForeground(int opCode, int uid, @NonNull String packageName) {
-            setUidMode(opCode, uid, MODE_FOREGROUND, packageName);
+        private void setUidModeForeground(int opCode, int uid) {
+            setUidMode(opCode, uid, MODE_FOREGROUND);
         }
 
-        private void setUidModeIgnored(int opCode, int uid, @NonNull String packageName) {
-            setUidMode(opCode, uid, MODE_IGNORED, packageName);
+        private void setUidModeIgnored(int opCode, int uid) {
+            setUidMode(opCode, uid, MODE_IGNORED);
         }
 
-        private boolean setUidModeIgnoredIfNotAllowed(int opCode, int uid,
-                @NonNull String packageName) {
+        private boolean setUidModeIgnoredIfNotAllowed(int opCode, int uid) {
+            String[] pkgsOfUid = getPackageNamesForUid(uid);
+            if (ArrayUtils.isEmpty(pkgsOfUid)) {
+                return false;
+            }
+
             final int currentMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager.opToPublicName(
-                    opCode), uid, packageName);
+                    opCode), uid, pkgsOfUid[0]);
             if (currentMode != MODE_ALLOWED) {
                 if (currentMode != MODE_IGNORED) {
-                    mAppOpsManager.setUidMode(opCode, uid, MODE_IGNORED);
+                    mAppOpsManagerInternal.setUidModeIgnoringCallback(opCode, uid, MODE_IGNORED,
+                            mAppOpsCallback);
                 }
                 return true;
             }
             return false;
         }
 
-        private void setUidMode(int opCode, int uid, int mode,
-                @NonNull String packageName) {
+        private void setUidMode(int opCode, int uid, int mode) {
+            String[] pkgsOfUid = getPackageNamesForUid(uid);
+            if (ArrayUtils.isEmpty(pkgsOfUid)) {
+                return;
+            }
+
             final int oldMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager.opToPublicName(
-                    opCode), uid, packageName);
+                    opCode), uid, pkgsOfUid[0]);
             if (oldMode != mode) {
-                mAppOpsManager.setUidMode(opCode, uid, mode);
+                mAppOpsManagerInternal.setUidModeIgnoringCallback(opCode, uid, mode,
+                        mAppOpsCallback);
                 final int newMode = mAppOpsManager.unsafeCheckOpRaw(AppOpsManager.opToPublicName(
-                        opCode), uid, packageName);
+                        opCode), uid, pkgsOfUid[0]);
                 if (newMode != mode) {
                     // Work around incorrectly-set package mode. It never makes sense for app ops
                     // related to runtime permissions, but can get in the way and we have to reset
                     // it.
-                    mAppOpsManager.setMode(opCode, uid, packageName, AppOpsManager.opToDefaultMode(
-                            opCode));
+                    mAppOpsManagerInternal.setModeIgnoringCallback(opCode, uid, pkgsOfUid[0],
+                            AppOpsManager.opToDefaultMode(opCode), mAppOpsCallback);
                 }
             }
         }
 
         private class OpToChange {
             final int uid;
-            final @NonNull String packageName;
             final int code;
 
-            OpToChange(int uid, @NonNull String packageName, int code) {
+            OpToChange(int uid, int code) {
                 this.uid = uid;
-                this.packageName = packageName;
                 this.code = code;
             }
+
+            @Override
+            public boolean equals(Object o) {
+                if (this == o) {
+                    return true;
+                }
+                if (o == null || getClass() != o.getClass()) {
+                    return false;
+                }
+
+                OpToChange other = (OpToChange) o;
+                return uid == other.uid && code == other.code;
+            }
+
+            @Override
+            public int hashCode() {
+                return Objects.hash(uid, code);
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/policy/PhoneWindowManager.java b/services/core/java/com/android/server/policy/PhoneWindowManager.java
index 7c76656..a45a996 100644
--- a/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -54,6 +54,7 @@
 import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
 import static android.view.WindowManager.LayoutParams.TYPE_KEYGUARD_DIALOG;
 import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR;
+import static android.view.WindowManager.LayoutParams.TYPE_NAVIGATION_BAR_PANEL;
 import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE;
 import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION;
 import static android.view.WindowManager.LayoutParams.TYPE_PRIVATE_PRESENTATION;
@@ -480,6 +481,8 @@
     int mVeryLongPressTimeout;
     boolean mAllowStartActivityForLongPressOnPowerDuringSetup;
     MetricsLogger mLogger;
+    boolean mWakeOnDpadKeyPress;
+    boolean mWakeOnAssistKeyPress;
 
     private boolean mHandleVolumeKeysInWM;
 
@@ -1728,6 +1731,13 @@
         mAccessibilityShortcutController =
                 new AccessibilityShortcutController(mContext, new Handler(), mCurrentUserId);
         mLogger = new MetricsLogger();
+
+        Resources res = mContext.getResources();
+        mWakeOnDpadKeyPress =
+                res.getBoolean(com.android.internal.R.bool.config_wakeOnDpadKeyPress);
+        mWakeOnAssistKeyPress =
+                res.getBoolean(com.android.internal.R.bool.config_wakeOnAssistKeyPress);
+
         // Init display burn-in protection
         boolean burnInProtectionEnabled = context.getResources().getBoolean(
                 com.android.internal.R.bool.config_enableBurnInProtection);
@@ -2088,11 +2098,13 @@
                 case TYPE_VOICE_INTERACTION:
                 case TYPE_ACCESSIBILITY_OVERLAY:
                 case TYPE_QS_DIALOG:
+                case TYPE_NAVIGATION_BAR_PANEL:
                     // The window manager will check these.
                     return ADD_OKAY;
             }
-            return mContext.checkCallingOrSelfPermission(INTERNAL_SYSTEM_WINDOW)
-                    == PERMISSION_GRANTED ? ADD_OKAY : ADD_PERMISSION_DENIED;
+
+            return (mContext.checkCallingOrSelfPermission(INTERNAL_SYSTEM_WINDOW)
+                    == PERMISSION_GRANTED) ? ADD_OKAY : ADD_PERMISSION_DENIED;
         }
 
         // Things get a little more interesting for alert windows...
@@ -2717,21 +2729,23 @@
                             Settings.System.SCREEN_BRIGHTNESS_MODE_MANUAL,
                             UserHandle.USER_CURRENT_OR_SELF);
                 }
-
-                int min = mPowerManager.getMinimumScreenBrightnessSetting();
-                int max = mPowerManager.getMaximumScreenBrightnessSetting();
-                int step = (max - min + BRIGHTNESS_STEPS - 1) / BRIGHTNESS_STEPS * direction;
-                int brightness = Settings.System.getIntForUser(mContext.getContentResolver(),
-                        Settings.System.SCREEN_BRIGHTNESS,
-                        mPowerManager.getDefaultScreenBrightnessSetting(),
+                float minFloat = mPowerManager.getBrightnessConstraint(
+                        PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
+                float maxFloat = mPowerManager.getBrightnessConstraint(
+                        PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);
+                float stepFloat = (maxFloat - minFloat) / BRIGHTNESS_STEPS * direction;
+                float brightnessFloat = Settings.System.getFloatForUser(
+                        mContext.getContentResolver(), Settings.System.SCREEN_BRIGHTNESS_FLOAT,
+                        mPowerManager.getBrightnessConstraint(
+                                PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT),
                         UserHandle.USER_CURRENT_OR_SELF);
-                brightness += step;
+                brightnessFloat += stepFloat;
                 // Make sure we don't go beyond the limits.
-                brightness = Math.min(max, brightness);
-                brightness = Math.max(min, brightness);
+                brightnessFloat = Math.min(maxFloat, brightnessFloat);
+                brightnessFloat = Math.max(minFloat, brightnessFloat);
 
-                Settings.System.putIntForUser(mContext.getContentResolver(),
-                        Settings.System.SCREEN_BRIGHTNESS, brightness,
+                Settings.System.putFloatForUser(mContext.getContentResolver(),
+                        Settings.System.SCREEN_BRIGHTNESS_FLOAT, brightnessFloat,
                         UserHandle.USER_CURRENT_OR_SELF);
                 startActivityAsUser(new Intent(Intent.ACTION_SHOW_BRIGHTNESS_DIALOG),
                         UserHandle.CURRENT_OR_SELF);
@@ -4069,13 +4083,11 @@
      */
     private boolean isWakeKeyWhenScreenOff(int keyCode) {
         switch (keyCode) {
-            // ignore volume keys unless docked
             case KeyEvent.KEYCODE_VOLUME_UP:
             case KeyEvent.KEYCODE_VOLUME_DOWN:
             case KeyEvent.KEYCODE_VOLUME_MUTE:
                 return mDefaultDisplayPolicy.getDockMode() != Intent.EXTRA_DOCK_STATE_UNDOCKED;
 
-            // ignore media keys
             case KeyEvent.KEYCODE_MUTE:
             case KeyEvent.KEYCODE_HEADSETHOOK:
             case KeyEvent.KEYCODE_MEDIA_PLAY:
@@ -4089,7 +4101,18 @@
             case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD:
             case KeyEvent.KEYCODE_MEDIA_AUDIO_TRACK:
                 return false;
+
+            case KeyEvent.KEYCODE_DPAD_UP:
+            case KeyEvent.KEYCODE_DPAD_DOWN:
+            case KeyEvent.KEYCODE_DPAD_LEFT:
+            case KeyEvent.KEYCODE_DPAD_RIGHT:
+            case KeyEvent.KEYCODE_DPAD_CENTER:
+                return mWakeOnDpadKeyPress;
+
+            case KeyEvent.KEYCODE_ASSIST:
+                return mWakeOnAssistKeyPress;
         }
+
         return true;
     }
 
@@ -5174,7 +5197,8 @@
                     final Intent dock = createHomeDockIntent();
                     if (dock != null) {
                         int result = ActivityTaskManager.getService()
-                                .startActivityAsUser(null, mContext.getBasePackageName(), dock,
+                                .startActivityAsUser(null, mContext.getBasePackageName(),
+                                        mContext.getFeatureId(), dock,
                                         dock.resolveTypeIfNeeded(mContext.getContentResolver()),
                                         null, null, 0,
                                         ActivityManager.START_FLAG_ONLY_IF_NEEDED,
@@ -5185,7 +5209,8 @@
                     }
                 }
                 int result = ActivityTaskManager.getService()
-                        .startActivityAsUser(null, mContext.getBasePackageName(), mHomeIntent,
+                        .startActivityAsUser(null, mContext.getBasePackageName(),
+                                mContext.getFeatureId(), mHomeIntent,
                                 mHomeIntent.resolveTypeIfNeeded(mContext.getContentResolver()),
                                 null, null, 0,
                                 ActivityManager.START_FLAG_ONLY_IF_NEEDED,
diff --git a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java
index f3a6018..a83c58d 100644
--- a/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java
+++ b/services/core/java/com/android/server/policy/SoftRestrictedPermissionPolicy.java
@@ -18,23 +18,31 @@
 
 import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
 import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE;
+import static android.Manifest.permission.WRITE_MEDIA_STORAGE;
 import static android.app.AppOpsManager.OP_LEGACY_STORAGE;
 import static android.app.AppOpsManager.OP_NONE;
 import static android.content.pm.PackageManager.FLAG_PERMISSION_APPLY_RESTRICTION;
 import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_INSTALLER_EXEMPT;
 import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT;
 import static android.content.pm.PackageManager.FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT;
-
-import static java.lang.Integer.min;
+import static android.content.pm.PackageManager.PERMISSION_GRANTED;
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.AppOpsManager;
+import android.compat.annotation.ChangeId;
+import android.compat.annotation.EnabledAfter;
 import android.content.Context;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageManager;
-import android.os.Build;
+import android.os.Binder;
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.os.ServiceManager;
 import android.os.UserHandle;
+import android.util.Log;
+
+import com.android.internal.compat.IPlatformCompat;
 
 /**
  * The behavior of soft restricted permissions is different for each permission. This class collects
@@ -44,6 +52,27 @@
  * {@link com.android.packageinstaller.permission.utils.SoftRestrictedPermissionPolicy}
  */
 public abstract class SoftRestrictedPermissionPolicy {
+    /**
+     * Enables scoped storage, with exceptions for apps that explicitly request legacy access, or
+     * apps that hold the {@code android.Manifest.permission#WRITE_MEDIA_STORAGE} permission.
+     * See https://developer.android.com/training/data-storage#scoped-storage for more information.
+     */
+    @ChangeId
+    // This change is enabled for apps with targetSDK > {@link android.os.Build.VERSION_CODES.P}
+    @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.P)
+    static final long ENABLE_SCOPED_STORAGE = 144914977L;
+
+    /**
+     * Enforces scoped storage for all apps, preventing individual apps from opting out. This change
+     * has precedence over {@code ENABLE_SCOPED_STORAGE}.
+     */
+    @ChangeId
+    // This change is enabled for apps with targetSDK > {@link android.os.Build.VERSION_CODES.Q}.
+    @EnabledAfter(targetSdkVersion = android.os.Build.VERSION_CODES.Q)
+    static final long REQUIRE_SCOPED_STORAGE = 131432978L;
+
+    private static final String LOG_TAG = SoftRestrictedPermissionPolicy.class.getSimpleName();
+
     private static final int FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT =
             FLAG_PERMISSION_RESTRICTION_SYSTEM_EXEMPT
                     | FLAG_PERMISSION_RESTRICTION_UPGRADE_EXEMPT
@@ -58,41 +87,6 @@
             };
 
     /**
-     * TargetSDK is per package. To make sure two apps int the same shared UID do not fight over
-     * what to set, always compute the combined targetSDK.
-     *
-     * @param context A context
-     * @param appInfo The app that is changed
-     * @param user The user the app belongs to
-     *
-     * @return The minimum targetSDK of all apps sharing the uid of the app
-     */
-    private static int getMinimumTargetSDK(@NonNull Context context,
-            @NonNull ApplicationInfo appInfo, @NonNull UserHandle user) {
-        PackageManager pm = context.getPackageManager();
-
-        int minimumTargetSDK = appInfo.targetSdkVersion;
-
-        String[] uidPkgs = pm.getPackagesForUid(appInfo.uid);
-        if (uidPkgs != null) {
-            for (String uidPkg : uidPkgs) {
-                if (!uidPkg.equals(appInfo.packageName)) {
-                    ApplicationInfo uidPkgInfo;
-                    try {
-                        uidPkgInfo = pm.getApplicationInfoAsUser(uidPkg, 0, user);
-                    } catch (PackageManager.NameNotFoundException e) {
-                        continue;
-                    }
-
-                    minimumTargetSDK = min(minimumTargetSDK, uidPkgInfo.targetSdkVersion);
-                }
-            }
-        }
-
-        return minimumTargetSDK;
-    }
-
-    /**
      * Get the policy for a soft restricted permission.
      *
      * @param context A context to use
@@ -112,22 +106,31 @@
             case READ_EXTERNAL_STORAGE: {
                 final boolean isWhiteListed;
                 boolean shouldApplyRestriction;
-                final int targetSDK;
                 final boolean hasRequestedLegacyExternalStorage;
+                final boolean hasWriteMediaStorageGrantedForUid;
+                final boolean isScopedStorageEnabled;
 
                 if (appInfo != null) {
                     PackageManager pm = context.getPackageManager();
                     int flags = pm.getPermissionFlags(permission, appInfo.packageName, user);
                     isWhiteListed = (flags & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0;
-                    shouldApplyRestriction = (flags & FLAG_PERMISSION_APPLY_RESTRICTION) != 0;
-                    targetSDK = getMinimumTargetSDK(context, appInfo, user);
                     hasRequestedLegacyExternalStorage = hasUidRequestedLegacyExternalStorage(
                             appInfo.uid, context);
+                    hasWriteMediaStorageGrantedForUid = hasWriteMediaStorageGrantedForUid(
+                            appInfo.uid, context);
+                    final boolean isScopedStorageRequired =
+                            isChangeEnabledForUid(context, appInfo, user, REQUIRE_SCOPED_STORAGE);
+                    isScopedStorageEnabled =
+                            isChangeEnabledForUid(context, appInfo, user, ENABLE_SCOPED_STORAGE)
+                            || isScopedStorageRequired;
+                    shouldApplyRestriction = (flags & FLAG_PERMISSION_APPLY_RESTRICTION) != 0
+                            || isScopedStorageRequired;
                 } else {
                     isWhiteListed = false;
                     shouldApplyRestriction = false;
-                    targetSDK = 0;
                     hasRequestedLegacyExternalStorage = false;
+                    hasWriteMediaStorageGrantedForUid = false;
+                    isScopedStorageEnabled = false;
                 }
 
                 // We have a check in PermissionPolicyService.PermissionToOpSynchroniser.setUidMode
@@ -137,7 +140,7 @@
                 return new SoftRestrictedPermissionPolicy() {
                     @Override
                     public boolean mayGrantPermission() {
-                        return isWhiteListed || targetSDK >= Build.VERSION_CODES.Q;
+                        return isWhiteListed || isScopedStorageEnabled;
                     }
                     @Override
                     public int getExtraAppOpCode() {
@@ -145,8 +148,9 @@
                     }
                     @Override
                     public boolean mayAllowExtraAppOp() {
-                        return !shouldApplyRestriction && hasRequestedLegacyExternalStorage
-                                && targetSDK <= Build.VERSION_CODES.Q;
+                        return !shouldApplyRestriction
+                                && (hasRequestedLegacyExternalStorage
+                                        || hasWriteMediaStorageGrantedForUid);
                     }
                     @Override
                     public boolean mayDenyExtraAppOpIfGranted() {
@@ -156,22 +160,26 @@
             }
             case WRITE_EXTERNAL_STORAGE: {
                 final boolean isWhiteListed;
-                final int targetSDK;
+                final boolean isScopedStorageEnabled;
 
                 if (appInfo != null) {
                     final int flags = context.getPackageManager().getPermissionFlags(permission,
                             appInfo.packageName, user);
                     isWhiteListed = (flags & FLAGS_PERMISSION_RESTRICTION_ANY_EXEMPT) != 0;
-                    targetSDK = getMinimumTargetSDK(context, appInfo, user);
+                    final boolean isScopedStorageRequired =
+                            isChangeEnabledForUid(context, appInfo, user, REQUIRE_SCOPED_STORAGE);
+                    isScopedStorageEnabled =
+                            isChangeEnabledForUid(context, appInfo, user, ENABLE_SCOPED_STORAGE)
+                            || isScopedStorageRequired;
                 } else {
                     isWhiteListed = false;
-                    targetSDK = 0;
+                    isScopedStorageEnabled = false;
                 }
 
                 return new SoftRestrictedPermissionPolicy() {
                     @Override
                     public boolean mayGrantPermission() {
-                        return isWhiteListed || targetSDK >= Build.VERSION_CODES.Q;
+                        return isWhiteListed || isScopedStorageEnabled;
                     }
                 };
             }
@@ -180,6 +188,62 @@
         }
     }
 
+    /**
+     * Checks whether an AppCompat change is enabled for all packages sharing a UID with the
+     * provided application.
+     *
+     * @param context A context to use.
+     * @param appInfo The application for which to check whether the compat change is enabled.
+     * @param user The user the app belongs to.
+     * @param changeId A {@link android.compat.annotation.ChangeId} corresponding to the change.
+     *
+     * @return true if this change is enabled for all apps sharing the UID of the provided app,
+     *         false otherwise.
+     */
+    private static boolean isChangeEnabledForUid(@NonNull Context context,
+            @NonNull ApplicationInfo appInfo, @NonNull UserHandle user, long changeId) {
+        PackageManager pm = context.getPackageManager();
+
+        String[] uidPackages = pm.getPackagesForUid(appInfo.uid);
+        if (uidPackages != null) {
+            for (String uidPackage : uidPackages) {
+                ApplicationInfo uidPackageInfo;
+                try {
+                    uidPackageInfo = pm.getApplicationInfoAsUser(uidPackage, 0, user);
+                } catch (PackageManager.NameNotFoundException e) {
+                    continue;
+                }
+                if (!isChangeEnabled(uidPackageInfo, changeId)) {
+                    // At least one package sharing this UID does not have this change enabled.
+                    return false;
+                }
+            }
+            // All packages sharing this UID returned true for {@link #isChangeEnabled()}.
+            return true;
+        } else {
+            Log.w(LOG_TAG, "Check for change " + changeId + " for uid " + appInfo.uid
+                    + " produced no packages. Defaulting to using the information for "
+                    + appInfo.packageName + " only.");
+            return isChangeEnabled(appInfo, changeId);
+        }
+    }
+
+    private static boolean isChangeEnabled(@NonNull ApplicationInfo appInfo, long changeId) {
+        IBinder binder = ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE);
+        IPlatformCompat platformCompat = IPlatformCompat.Stub.asInterface(binder);
+
+        final long callingId = Binder.clearCallingIdentity();
+
+        try {
+            return platformCompat.isChangeEnabled(changeId, appInfo);
+        } catch (RemoteException e) {
+            Log.e(LOG_TAG, "Check for change " + changeId + " failed. Defaulting to enabled.", e);
+            return true;
+        } finally {
+            Binder.restoreCallingIdentity(callingId);
+        }
+    }
+
     private static boolean hasUidRequestedLegacyExternalStorage(int uid, @NonNull Context context) {
         PackageManager packageManager = context.getPackageManager();
         String[] packageNames = packageManager.getPackagesForUid(uid);
@@ -201,6 +265,22 @@
         return false;
     }
 
+    private static boolean hasWriteMediaStorageGrantedForUid(int uid, @NonNull Context context) {
+        PackageManager packageManager = context.getPackageManager();
+        String[] packageNames = packageManager.getPackagesForUid(uid);
+        if (packageNames == null) {
+            return false;
+        }
+
+        for (String packageName : packageNames) {
+            if (packageManager.checkPermission(WRITE_MEDIA_STORAGE, packageName)
+                    == PERMISSION_GRANTED) {
+                return true;
+            }
+        }
+        return false;
+    }
+
     /**
      * @return If the permission can be granted
      */
diff --git a/services/core/java/com/android/server/policy/TEST_MAPPING b/services/core/java/com/android/server/policy/TEST_MAPPING
index 484017b..094e70f 100644
--- a/services/core/java/com/android/server/policy/TEST_MAPPING
+++ b/services/core/java/com/android/server/policy/TEST_MAPPING
@@ -36,6 +36,9 @@
         },
         {
           "include-filter": "android.permission2.cts.RestrictedStoragePermissionSharedUidTest"
+        },
+        {
+          "include-filter": "android.permission2.cts.RestrictedStoragePermissionTest"
         }
       ]
     },
diff --git a/services/core/java/com/android/server/policy/WindowManagerPolicy.java b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
index e81214e..67a22d3 100644
--- a/services/core/java/com/android/server/policy/WindowManagerPolicy.java
+++ b/services/core/java/com/android/server/policy/WindowManagerPolicy.java
@@ -75,7 +75,6 @@
 import android.graphics.Rect;
 import android.os.Bundle;
 import android.os.IBinder;
-import android.os.Looper;
 import android.os.RemoteException;
 import android.util.Slog;
 import android.util.proto.ProtoOutputStream;
@@ -83,7 +82,6 @@
 import android.view.IApplicationToken;
 import android.view.IDisplayFoldListener;
 import android.view.IWindowManager;
-import android.view.InputEventReceiver;
 import android.view.KeyEvent;
 import android.view.WindowManager;
 import android.view.WindowManagerGlobal;
@@ -471,6 +469,10 @@
          * Remove the input consumer from the window manager.
          */
         void dismiss();
+        /**
+         * Dispose the input consumer and input receiver from UI thread.
+         */
+        void dispose();
     }
 
     /**
@@ -505,12 +507,6 @@
         public static final int CAMERA_LENS_COVERED = 1;
 
         /**
-         * Add a input consumer which will consume all input events going to any window below it.
-         */
-        public InputConsumer createInputConsumer(Looper looper, String name,
-                InputEventReceiver.Factory inputEventReceiverFactory, int displayId);
-
-        /**
          * Returns a code that describes the current state of the lid switch.
          */
         public int getLidState();
diff --git a/services/core/java/com/android/server/power/AttentionDetector.java b/services/core/java/com/android/server/power/AttentionDetector.java
index eec0d5f..1ab6ade 100644
--- a/services/core/java/com/android/server/power/AttentionDetector.java
+++ b/services/core/java/com/android/server/power/AttentionDetector.java
@@ -17,7 +17,7 @@
 package com.android.server.power;
 
 import static android.provider.DeviceConfig.NAMESPACE_ATTENTION_MANAGER_SERVICE;
-import static android.provider.Settings.System.ADAPTIVE_SLEEP;
+import static android.provider.Settings.Secure.ADAPTIVE_SLEEP;
 
 import android.Manifest;
 import android.app.ActivityManager;
@@ -38,9 +38,9 @@
 import android.provider.Settings;
 import android.service.attention.AttentionService;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 import com.android.server.wm.WindowManagerInternal;
 
@@ -152,8 +152,8 @@
 
     @VisibleForTesting
     void updateEnabledFromSettings(Context context) {
-        mIsSettingEnabled = Settings.System.getIntForUser(context.getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT) == 1;
+        mIsSettingEnabled = Settings.Secure.getIntForUser(context.getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT) == 1;
     }
 
     public void systemReady(Context context) {
@@ -173,8 +173,8 @@
             // Shouldn't happen since in-process.
         }
 
-        context.getContentResolver().registerContentObserver(Settings.System.getUriFor(
-                Settings.System.ADAPTIVE_SLEEP),
+        context.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
+                Settings.Secure.ADAPTIVE_SLEEP),
                 false, new ContentObserver(new Handler(context.getMainLooper())) {
                     @Override
                     public void onChange(boolean selfChange) {
@@ -194,7 +194,7 @@
         if (!isAttentionServiceSupported() || !serviceHasSufficientPermissions()) {
             // Turns off adaptive sleep in settings for all users if attention service is not
             // available. The setting itself should also be grayed out in this case.
-            Settings.System.putInt(mContentResolver, ADAPTIVE_SLEEP, 0);
+            Settings.Secure.putInt(mContentResolver, ADAPTIVE_SLEEP, 0);
             return nextScreenDimming;
         }
 
@@ -285,7 +285,8 @@
     private void resetConsecutiveExtensionCount() {
         final long previousCount = mConsecutiveTimeoutExtendedCount.getAndSet(0);
         if (previousCount > 0) {
-            StatsLog.write(StatsLog.SCREEN_TIMEOUT_EXTENSION_REPORTED, previousCount);
+            FrameworkStatsLog.write(FrameworkStatsLog.SCREEN_TIMEOUT_EXTENSION_REPORTED,
+                    previousCount);
         }
     }
 
diff --git a/services/core/java/com/android/server/power/Notifier.java b/services/core/java/com/android/server/power/Notifier.java
index b45522d..0b95be1 100644
--- a/services/core/java/com/android/server/power/Notifier.java
+++ b/services/core/java/com/android/server/power/Notifier.java
@@ -49,13 +49,13 @@
 import android.telephony.TelephonyManager;
 import android.util.EventLog;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.view.WindowManagerPolicyConstants.OnReason;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IBatteryStats;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.EventLogTags;
 import com.android.server.LocalServices;
 import com.android.server.inputmethod.InputMethodManagerInternal;
@@ -199,8 +199,8 @@
         try {
             mBatteryStats.noteInteractive(true);
         } catch (RemoteException ex) { }
-        StatsLog.write(StatsLog.INTERACTIVE_STATE_CHANGED,
-                StatsLog.INTERACTIVE_STATE_CHANGED__STATE__ON);
+        FrameworkStatsLog.write(FrameworkStatsLog.INTERACTIVE_STATE_CHANGED,
+                FrameworkStatsLog.INTERACTIVE_STATE_CHANGED__STATE__ON);
     }
 
     /**
@@ -247,13 +247,15 @@
         try {
             if (workSource != null) {
                 mBatteryStats.noteLongPartialWakelockStartFromSource(tag, historyTag, workSource);
-                StatsLog.write(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, workSource,
-                        tag, historyTag, StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON);
+                FrameworkStatsLog.write(FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED,
+                        workSource, tag, historyTag,
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON);
             } else {
                 mBatteryStats.noteLongPartialWakelockStart(tag, historyTag, ownerUid);
-                StatsLog.write_non_chained(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED,
-                        ownerUid, null, tag, historyTag,
-                        StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON);
+                FrameworkStatsLog.write_non_chained(
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, ownerUid, null, tag,
+                        historyTag,
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__ON);
             }
         } catch (RemoteException ex) {
             // Ignore
@@ -270,13 +272,15 @@
         try {
             if (workSource != null) {
                 mBatteryStats.noteLongPartialWakelockFinishFromSource(tag, historyTag, workSource);
-                StatsLog.write(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, workSource,
-                        tag, historyTag, StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF);
+                FrameworkStatsLog.write(FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED,
+                        workSource, tag, historyTag,
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF);
             } else {
                 mBatteryStats.noteLongPartialWakelockFinish(tag, historyTag, ownerUid);
-                StatsLog.write_non_chained(StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED,
-                        ownerUid, null, tag, historyTag,
-                        StatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF);
+                FrameworkStatsLog.write_non_chained(
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED, ownerUid, null, tag,
+                        historyTag,
+                        FrameworkStatsLog.LONG_PARTIAL_WAKELOCK_STATE_CHANGED__STATE__OFF);
             }
         } catch (RemoteException ex) {
             // Ignore
@@ -415,9 +419,9 @@
             try {
                 mBatteryStats.noteInteractive(interactive);
             } catch (RemoteException ex) { }
-            StatsLog.write(StatsLog.INTERACTIVE_STATE_CHANGED,
-                    interactive ? StatsLog.INTERACTIVE_STATE_CHANGED__STATE__ON :
-                            StatsLog.INTERACTIVE_STATE_CHANGED__STATE__OFF);
+            FrameworkStatsLog.write(FrameworkStatsLog.INTERACTIVE_STATE_CHANGED,
+                    interactive ? FrameworkStatsLog.INTERACTIVE_STATE_CHANGED__STATE__ON :
+                            FrameworkStatsLog.INTERACTIVE_STATE_CHANGED__STATE__OFF);
 
             // Handle early behaviors.
             mInteractive = interactive;
diff --git a/services/core/java/com/android/server/power/PowerManagerService.java b/services/core/java/com/android/server/power/PowerManagerService.java
index 4d13658..a7b0d84 100644
--- a/services/core/java/com/android/server/power/PowerManagerService.java
+++ b/services/core/java/com/android/server/power/PowerManagerService.java
@@ -25,6 +25,7 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.app.ActivityManager;
 import android.app.SynchronousUserSwitchObserver;
@@ -83,6 +84,7 @@
 import android.util.proto.ProtoOutputStream;
 import android.view.Display;
 
+import com.android.internal.BrightnessSynchronizer;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.IAppOpsService;
 import com.android.internal.app.IBatteryStats;
@@ -94,6 +96,7 @@
 import com.android.server.ServiceThread;
 import com.android.server.SystemService;
 import com.android.server.UiThread;
+import com.android.server.UserspaceRebootLogger;
 import com.android.server.Watchdog;
 import com.android.server.am.BatteryStatsService;
 import com.android.server.lights.LightsManager;
@@ -192,6 +195,9 @@
     // This should perhaps be a setting.
     private static final int SCREEN_BRIGHTNESS_BOOST_TIMEOUT = 5 * 1000;
 
+    // Float.NaN cannot be stored in config.xml so -2 is used instead
+    private static final float INVALID_BRIGHTNESS_IN_CONFIG = -2f;
+
     // How long a partial wake lock must be held until we consider it a long wake lock.
     static final long MIN_LONG_WAKE_CHECK_INTERVAL = 60*1000;
 
@@ -485,13 +491,17 @@
     private boolean mProximityPositive;
 
     // Screen brightness setting limits.
-    private int mScreenBrightnessSettingMinimum;
-    private int mScreenBrightnessSettingMaximum;
-    private int mScreenBrightnessSettingDefault;
-
-    // The screen brightness setting, from 0 to 255.
-    // Use -1 if no value has been set.
-    private int mScreenBrightnessSetting;
+    private float mScreenBrightnessSettingMinimum;
+    private float mScreenBrightnessSettingMaximum;
+    private float mScreenBrightnessSettingDefault;
+    public final float mScreenBrightnessMinimum;
+    public final float mScreenBrightnessMaximum;
+    public final float mScreenBrightnessDefault;
+    public final float mScreenBrightnessDoze;
+    public final float mScreenBrightnessDim;
+    public final float mScreenBrightnessMinimumVr;
+    public final float mScreenBrightnessMaximumVr;
+    public final float mScreenBrightnessDefaultVr;
 
     // The screen brightness mode.
     // One of the Settings.System.SCREEN_BRIGHTNESS_MODE_* constants.
@@ -502,6 +512,9 @@
     // Use -1 to disable.
     private int mScreenBrightnessOverrideFromWindowManager = -1;
 
+    private float mScreenBrightnessOverrideFromWindowManagerFloat =
+            PowerManager.BRIGHTNESS_INVALID_FLOAT;
+
     // The window manager has determined the user to be inactive via other means.
     // Set this to false to disable.
     private boolean mUserInactiveOverrideFromWindowManager;
@@ -521,6 +534,8 @@
     // The screen brightness to use while dozing.
     private int mDozeScreenBrightnessOverrideFromDreamManager = PowerManager.BRIGHTNESS_DEFAULT;
 
+    private float mDozeScreenBrightnessOverrideFromDreamManagerFloat =
+            PowerManager.BRIGHTNESS_INVALID_FLOAT;
     // Keep display state when dozing.
     private boolean mDrawWakeLockOverrideFromSidekick;
 
@@ -827,6 +842,91 @@
         mInattentiveSleepWarningOverlayController =
                 mInjector.createInattentiveSleepWarningController();
 
+        // Save brightness values:
+        // Get float values from config.
+        // Store float if valid
+        // Otherwise, get int values and convert to float and then store.
+        final float min = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingMinimumFloat);
+        final float max = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingMaximumFloat);
+        final float def = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingDefaultFloat);
+        final float doze = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessDozeFloat);
+        final float dim = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessDimFloat);
+
+        if (min == INVALID_BRIGHTNESS_IN_CONFIG || max == INVALID_BRIGHTNESS_IN_CONFIG
+                || def == INVALID_BRIGHTNESS_IN_CONFIG) {
+            mScreenBrightnessMinimum = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessSettingMinimum),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+            mScreenBrightnessMaximum = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessSettingMaximum),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+            mScreenBrightnessDefault = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessSettingDefault),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+        } else {
+            mScreenBrightnessMinimum = min;
+            mScreenBrightnessMaximum = max;
+            mScreenBrightnessDefault = def;
+        }
+        if (doze == INVALID_BRIGHTNESS_IN_CONFIG) {
+            mScreenBrightnessDoze = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessDoze), PowerManager.BRIGHTNESS_OFF + 1,
+                    PowerManager.BRIGHTNESS_ON, PowerManager.BRIGHTNESS_MIN,
+                    PowerManager.BRIGHTNESS_MAX);
+        } else {
+            mScreenBrightnessDoze = doze;
+        }
+        if (dim == INVALID_BRIGHTNESS_IN_CONFIG) {
+            mScreenBrightnessDim = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessDim), PowerManager.BRIGHTNESS_OFF + 1,
+                    PowerManager.BRIGHTNESS_ON, PowerManager.BRIGHTNESS_MIN,
+                    PowerManager.BRIGHTNESS_MAX);
+        } else {
+            mScreenBrightnessDim = dim;
+        }
+
+        final float vrMin = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingForVrMinimumFloat);
+        final float vrMax = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingForVrMaximumFloat);
+        final float vrDef = mContext.getResources().getFloat(com.android.internal.R.dimen
+                .config_screenBrightnessSettingForVrDefaultFloat);
+        if (vrMin == INVALID_BRIGHTNESS_IN_CONFIG || vrMax == INVALID_BRIGHTNESS_IN_CONFIG
+                || vrDef == INVALID_BRIGHTNESS_IN_CONFIG) {
+            mScreenBrightnessMinimumVr = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessForVrSettingMinimum),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+            mScreenBrightnessMaximumVr = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessForVrSettingMaximum),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+            mScreenBrightnessDefaultVr = BrightnessSynchronizer.brightnessIntToFloat(
+                    mContext.getResources().getInteger(com.android.internal.R.integer
+                            .config_screenBrightnessForVrSettingDefault),
+                    PowerManager.BRIGHTNESS_OFF + 1, PowerManager.BRIGHTNESS_ON,
+                    PowerManager.BRIGHTNESS_MIN, PowerManager.BRIGHTNESS_MAX);
+        } else {
+            mScreenBrightnessMinimumVr = vrMin;
+            mScreenBrightnessMaximumVr = vrMax;
+            mScreenBrightnessDefaultVr = vrDef;
+        }
+
         synchronized (mLock) {
             mWakeLockSuspendBlocker =
                     mInjector.createSuspendBlocker(this, "PowerManagerService.WakeLocks");
@@ -895,9 +995,12 @@
             mAttentionDetector.systemReady(mContext);
 
             PowerManager pm = (PowerManager) mContext.getSystemService(Context.POWER_SERVICE);
-            mScreenBrightnessSettingMinimum = pm.getMinimumScreenBrightnessSetting();
-            mScreenBrightnessSettingMaximum = pm.getMaximumScreenBrightnessSetting();
-            mScreenBrightnessSettingDefault = pm.getDefaultScreenBrightnessSetting();
+            mScreenBrightnessSettingMinimum = pm.getBrightnessConstraint(
+                    PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM);
+            mScreenBrightnessSettingMaximum = pm.getBrightnessConstraint(
+                    PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM);
+            mScreenBrightnessSettingDefault = pm.getBrightnessConstraint(
+                    PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT);
 
             SensorManager sensorManager = new SystemSensorManager(mContext, mHandler.getLooper());
 
@@ -2385,7 +2488,8 @@
         boolean changed = false;
         if ((dirty & (DIRTY_WAKE_LOCKS | DIRTY_USER_ACTIVITY | DIRTY_BOOT_COMPLETED
                 | DIRTY_WAKEFULNESS | DIRTY_STAY_ON | DIRTY_PROXIMITY_POSITIVE
-                | DIRTY_DOCK_STATE | DIRTY_ATTENTIVE)) != 0) {
+                | DIRTY_DOCK_STATE | DIRTY_ATTENTIVE | DIRTY_SETTINGS
+                | DIRTY_SCREEN_BRIGHTNESS_BOOST)) != 0) {
             if (mWakefulness == WAKEFULNESS_AWAKE && isItBedTimeYetLocked()) {
                 if (DEBUG_SPEW) {
                     Slog.d(TAG, "updateWakefulnessLocked: Bed time...");
@@ -2672,7 +2776,7 @@
 
             // Determine appropriate screen brightness and auto-brightness adjustments.
             final boolean autoBrightness;
-            final int screenBrightnessOverride;
+            final float screenBrightnessOverride;
             if (!mBootCompleted) {
                 // Keep the brightness steady during boot. This requires the
                 // bootloader brightness and the default brightness to be identical.
@@ -2680,11 +2784,11 @@
                 screenBrightnessOverride = mScreenBrightnessSettingDefault;
             } else if (isValidBrightness(mScreenBrightnessOverrideFromWindowManager)) {
                 autoBrightness = false;
-                screenBrightnessOverride = mScreenBrightnessOverrideFromWindowManager;
+                screenBrightnessOverride = mScreenBrightnessOverrideFromWindowManagerFloat;
             } else {
                 autoBrightness = (mScreenBrightnessModeSetting ==
                         Settings.System.SCREEN_BRIGHTNESS_MODE_AUTOMATIC);
-                screenBrightnessOverride = -1;
+                screenBrightnessOverride = PowerManager.BRIGHTNESS_INVALID_FLOAT;
             }
 
             // Update display power request.
@@ -2707,10 +2811,11 @@
                     }
                 }
                 mDisplayPowerRequest.dozeScreenBrightness =
-                        mDozeScreenBrightnessOverrideFromDreamManager;
+                        mDozeScreenBrightnessOverrideFromDreamManagerFloat;
             } else {
                 mDisplayPowerRequest.dozeScreenState = Display.STATE_UNKNOWN;
-                mDisplayPowerRequest.dozeScreenBrightness = PowerManager.BRIGHTNESS_DEFAULT;
+                mDisplayPowerRequest.dozeScreenBrightness =
+                        PowerManager.BRIGHTNESS_INVALID_FLOAT;
             }
 
             mDisplayReady = mDisplayManagerInternal.requestPowerState(mDisplayPowerRequest,
@@ -3051,7 +3156,10 @@
     }
 
     private void shutdownOrRebootInternal(final @HaltMode int haltMode, final boolean confirm,
-            final String reason, boolean wait) {
+            @Nullable final String reason, boolean wait) {
+        if (PowerManager.REBOOT_USERSPACE.equals(reason)) {
+            UserspaceRebootLogger.noteUserspaceRebootWasRequested();
+        }
         if (mHandler == null || !mSystemReady) {
             if (RescueParty.isAttemptingFactoryReset()) {
                 // If we're stuck in a really low-level reboot loop, and a
@@ -3426,10 +3534,13 @@
         }
     }
 
+    // TODO(brightnessfloat): change to float
     private void setScreenBrightnessOverrideFromWindowManagerInternal(int brightness) {
         synchronized (mLock) {
             if (mScreenBrightnessOverrideFromWindowManager != brightness) {
                 mScreenBrightnessOverrideFromWindowManager = brightness;
+                mScreenBrightnessOverrideFromWindowManagerFloat =
+                        BrightnessSynchronizer.brightnessIntToFloat(mContext, brightness);
                 mDirty |= DIRTY_SETTINGS;
                 updatePowerStateLocked();
             }
@@ -3462,6 +3573,9 @@
                     || mDozeScreenBrightnessOverrideFromDreamManager != screenBrightness) {
                 mDozeScreenStateOverrideFromDreamManager = screenState;
                 mDozeScreenBrightnessOverrideFromDreamManager = screenBrightness;
+                mDozeScreenBrightnessOverrideFromDreamManagerFloat =
+                        BrightnessSynchronizer.brightnessIntToFloat(mContext,
+                                mDozeScreenBrightnessOverrideFromDreamManager);
                 mDirty |= DIRTY_SETTINGS;
                 updatePowerStateLocked();
             }
@@ -3715,10 +3829,9 @@
                     + mMaximumScreenOffTimeoutFromDeviceAdmin + " (enforced="
                     + isMaximumScreenOffTimeoutFromDeviceAdminEnforcedLocked() + ")");
             pw.println("  mStayOnWhilePluggedInSetting=" + mStayOnWhilePluggedInSetting);
-            pw.println("  mScreenBrightnessSetting=" + mScreenBrightnessSetting);
             pw.println("  mScreenBrightnessModeSetting=" + mScreenBrightnessModeSetting);
-            pw.println("  mScreenBrightnessOverrideFromWindowManager="
-                    + mScreenBrightnessOverrideFromWindowManager);
+            pw.println("  mScreenBrightnessOverrideFromWindowManagerFloat="
+                    + mScreenBrightnessOverrideFromWindowManagerFloat);
             pw.println("  mUserActivityTimeoutOverrideFromWindowManager="
                     + mUserActivityTimeoutOverrideFromWindowManager);
             pw.println("  mUserInactiveOverrideFromWindowManager="
@@ -3728,9 +3841,9 @@
             pw.println("  mDrawWakeLockOverrideFromSidekick=" + mDrawWakeLockOverrideFromSidekick);
             pw.println("  mDozeScreenBrightnessOverrideFromDreamManager="
                     + mDozeScreenBrightnessOverrideFromDreamManager);
-            pw.println("  mScreenBrightnessSettingMinimum=" + mScreenBrightnessSettingMinimum);
-            pw.println("  mScreenBrightnessSettingMaximum=" + mScreenBrightnessSettingMaximum);
-            pw.println("  mScreenBrightnessSettingDefault=" + mScreenBrightnessSettingDefault);
+            pw.println("  mScreenBrightnessSettingMinimumFloat=" + mScreenBrightnessSettingMinimum);
+            pw.println("  mScreenBrightnessSettingMaximumFloat=" + mScreenBrightnessSettingMaximum);
+            pw.println("  mScreenBrightnessSettingDefaultFloat=" + mScreenBrightnessSettingDefault);
             pw.println("  mDoubleTapWakeEnabled=" + mDoubleTapWakeEnabled);
             pw.println("  mIsVrModeEnabled=" + mIsVrModeEnabled);
             pw.println("  mForegroundProfile=" + mForegroundProfile);
@@ -4056,7 +4169,7 @@
             proto.write(
                     PowerServiceSettingsAndConfigurationDumpProto
                             .SCREEN_BRIGHTNESS_OVERRIDE_FROM_WINDOW_MANAGER,
-                    mScreenBrightnessOverrideFromWindowManager);
+                    mScreenBrightnessOverrideFromWindowManagerFloat);
             proto.write(
                     PowerServiceSettingsAndConfigurationDumpProto
                             .USER_ACTIVITY_TIMEOUT_OVERRIDE_FROM_WINDOW_MANAGER_MS,
@@ -4738,6 +4851,29 @@
             }
         }
 
+        public float getBrightnessConstraint(int constraint) {
+            switch (constraint) {
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM:
+                    return mScreenBrightnessMinimum;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM:
+                    return mScreenBrightnessMaximum;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT:
+                    return mScreenBrightnessDefault;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DIM:
+                    return mScreenBrightnessDim;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DOZE:
+                    return mScreenBrightnessDoze;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MINIMUM_VR:
+                    return mScreenBrightnessMinimumVr;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_MAXIMUM_VR:
+                    return mScreenBrightnessMaximumVr;
+                case PowerManager.BRIGHTNESS_CONSTRAINT_TYPE_DEFAULT_VR:
+                    return mScreenBrightnessDefaultVr;
+                default:
+                    return PowerManager.BRIGHTNESS_INVALID_FLOAT;
+            }
+        }
+
         @Override // Binder call
         public boolean isInteractive() {
             final long ident = Binder.clearCallingIdentity();
@@ -4908,7 +5044,7 @@
          * @param wait If true, this call waits for the reboot to complete and does not return.
          */
         @Override // Binder call
-        public void reboot(boolean confirm, String reason, boolean wait) {
+        public void reboot(boolean confirm, @Nullable String reason, boolean wait) {
             mContext.enforceCallingOrSelfPermission(android.Manifest.permission.REBOOT, null);
             if (PowerManager.REBOOT_RECOVERY.equals(reason)
                     || PowerManager.REBOOT_RECOVERY_UPDATE.equals(reason)) {
diff --git a/services/core/java/com/android/server/power/PreRebootLogger.java b/services/core/java/com/android/server/power/PreRebootLogger.java
new file mode 100644
index 0000000..cda00b4
--- /dev/null
+++ b/services/core/java/com/android/server/power/PreRebootLogger.java
@@ -0,0 +1,133 @@
+/*
+ * 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.server.power;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.Environment;
+import android.os.IBinder;
+import android.os.ParcelFileDescriptor;
+import android.os.RemoteException;
+import android.os.ServiceManager;
+import android.provider.Settings;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.ArrayUtils;
+
+import java.io.File;
+import java.io.FileNotFoundException;
+import java.io.FileWriter;
+import java.io.IOException;
+
+/**
+ * Provides utils to dump/wipe pre-reboot information.
+ */
+final class PreRebootLogger {
+    private static final String TAG = "PreRebootLogger";
+    private static final String PREREBOOT_DIR = "prereboot";
+
+    private static final String[] BUFFERS_TO_DUMP = {"system"};
+    private static final String[] SERVICES_TO_DUMP = {Context.ROLLBACK_SERVICE, "package"};
+
+    private static final Object sLock = new Object();
+
+    /**
+     * Process pre-reboot information. Dump pre-reboot information to {@link #PREREBOOT_DIR} if
+     * enabled {@link Settings.Global#ADB_ENABLED}; wipe dumped information otherwise.
+     */
+    static void log(Context context) {
+        log(context, getDumpDir());
+    }
+
+    @VisibleForTesting
+    static void log(Context context, @NonNull File dumpDir) {
+        if (Settings.Global.getInt(
+                context.getContentResolver(), Settings.Global.ADB_ENABLED, 0) == 1) {
+            Slog.d(TAG, "Dumping pre-reboot information...");
+            dump(dumpDir);
+        } else {
+            Slog.d(TAG, "Wiping pre-reboot information...");
+            wipe(dumpDir);
+        }
+    }
+
+    private static void dump(@NonNull File dumpDir) {
+        synchronized (sLock) {
+            for (String buffer : BUFFERS_TO_DUMP) {
+                dumpLogsLocked(dumpDir, buffer);
+            }
+            for (String service : SERVICES_TO_DUMP) {
+                dumpServiceLocked(dumpDir, service);
+            }
+        }
+    }
+
+    private static void wipe(@NonNull File dumpDir) {
+        synchronized (sLock) {
+            for (File file : dumpDir.listFiles()) {
+                file.delete();
+            }
+        }
+    }
+
+    private static File getDumpDir() {
+        final File dumpDir = new File(Environment.getDataMiscDirectory(), PREREBOOT_DIR);
+        if (!dumpDir.exists() || !dumpDir.isDirectory()) {
+            throw new UnsupportedOperationException("Pre-reboot dump directory not found");
+        }
+        return dumpDir;
+    }
+
+    @GuardedBy("sLock")
+    private static void dumpLogsLocked(@NonNull File dumpDir, @NonNull String buffer) {
+        try {
+            final File dumpFile = new File(dumpDir, buffer);
+            if (dumpFile.createNewFile()) {
+                dumpFile.setWritable(true /* writable */, true /* ownerOnly */);
+            } else {
+                // Wipes dumped information in existing file before recording new information.
+                new FileWriter(dumpFile, false).flush();
+            }
+
+            final String[] cmdline =
+                    {"logcat", "-d", "-b", buffer, "-f", dumpFile.getAbsolutePath()};
+            Runtime.getRuntime().exec(cmdline).waitFor();
+        } catch (IOException | InterruptedException e) {
+            Slog.d(TAG, "Dump system log buffer before reboot fail", e);
+        }
+    }
+
+    @GuardedBy("sLock")
+    private static void dumpServiceLocked(@NonNull File dumpDir, @NonNull String serviceName) {
+        final IBinder binder = ServiceManager.checkService(serviceName);
+        if (binder == null) {
+            return;
+        }
+
+        try {
+            final File dumpFile = new File(dumpDir, serviceName);
+            final ParcelFileDescriptor fd = ParcelFileDescriptor.open(dumpFile,
+                    ParcelFileDescriptor.MODE_CREATE | ParcelFileDescriptor.MODE_TRUNCATE
+                            | ParcelFileDescriptor.MODE_WRITE_ONLY);
+            binder.dump(fd.getFileDescriptor(), ArrayUtils.emptyArray(String.class));
+        } catch (FileNotFoundException | RemoteException e) {
+            Slog.d(TAG, String.format("Dump %s service before reboot fail", serviceName), e);
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/power/ShutdownThread.java b/services/core/java/com/android/server/power/ShutdownThread.java
index cc1cddd..bc722f1 100644
--- a/services/core/java/com/android/server/power/ShutdownThread.java
+++ b/services/core/java/com/android/server/power/ShutdownThread.java
@@ -44,6 +44,7 @@
 import android.telephony.TelephonyManager;
 import android.util.ArrayMap;
 import android.util.Log;
+import android.util.Slog;
 import android.util.TimingsTraceLog;
 import android.view.WindowManager;
 
@@ -446,6 +447,15 @@
             SystemProperties.set(REBOOT_SAFEMODE_PROPERTY, "1");
         }
 
+        shutdownTimingLog.traceBegin("DumpPreRebootInfo");
+        try {
+            Slog.i(TAG, "Logging pre-reboot information...");
+            PreRebootLogger.log(mContext);
+        } catch (Exception e) {
+            Slog.e(TAG, "Failed to log pre-reboot information", e);
+        }
+        shutdownTimingLog.traceEnd(); // DumpPreRebootInfo
+
         metricStarted(METRIC_SEND_BROADCAST);
         shutdownTimingLog.traceBegin("SendShutdownBroadcast");
         Log.i(TAG, "Sending shutdown broadcast...");
diff --git a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
index 7164a30..e0701e8 100644
--- a/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
+++ b/services/core/java/com/android/server/recoverysystem/RecoverySystemService.java
@@ -359,20 +359,23 @@
         mContext.enforceCallingOrSelfPermission(android.Manifest.permission.RECOVERY, null);
 
         if (!mPreparedForReboot) {
+            Slog.i(TAG, "Reboot requested before prepare completed");
             return false;
         }
 
-        if (updateToken != null && updateToken.equals(mUnattendedRebootToken)) {
-            if (!mInjector.getLockSettingsService().armRebootEscrow()) {
-                return false;
-            }
-
-            PowerManager pm = mInjector.getPowerManager();
-            pm.reboot(reason);
-            return true;
+        if (updateToken != null && !updateToken.equals(mUnattendedRebootToken)) {
+            Slog.i(TAG, "Reboot requested after preparation, but with mismatching token");
+            return false;
         }
 
-        return false;
+        if (!mInjector.getLockSettingsService().armRebootEscrow()) {
+            Slog.w(TAG, "Failure to escrow key for reboot");
+            return false;
+        }
+
+        PowerManager pm = mInjector.getPowerManager();
+        pm.reboot(reason);
+        return true;
     }
 
     /**
diff --git a/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java b/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java
index e6e6e23..524ae54 100644
--- a/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java
+++ b/services/core/java/com/android/server/rollback/AppDataRollbackHelper.java
@@ -26,6 +26,7 @@
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.pm.ApexManager;
 import com.android.server.pm.Installer;
 import com.android.server.pm.Installer.InstallerException;
 
@@ -42,9 +43,17 @@
     private static final String TAG = "RollbackManager";
 
     private final Installer mInstaller;
+    private final ApexManager mApexManager;
 
     public AppDataRollbackHelper(Installer installer) {
         mInstaller = installer;
+        mApexManager = ApexManager.getInstance();
+    }
+
+    @VisibleForTesting
+    AppDataRollbackHelper(Installer installer, ApexManager apexManager) {
+        mInstaller = installer;
+        mApexManager = apexManager;
     }
 
     /**
@@ -55,7 +64,7 @@
     @GuardedBy("rollback.mLock")
     // TODO(b/136241838): Move into Rollback and synchronize there.
     public void snapshotAppData(
-            int snapshotId, PackageRollbackInfo packageRollbackInfo, int[] userIds) {
+            int rollbackId, PackageRollbackInfo packageRollbackInfo, int[] userIds) {
         for (int user : userIds) {
             final int storageFlags;
             if (isUserCredentialLocked(user)) {
@@ -68,16 +77,7 @@
                 storageFlags = Installer.FLAG_STORAGE_CE | Installer.FLAG_STORAGE_DE;
             }
 
-            try {
-                long ceSnapshotInode = mInstaller.snapshotAppData(
-                        packageRollbackInfo.getPackageName(), user, snapshotId, storageFlags);
-                if ((storageFlags & Installer.FLAG_STORAGE_CE) != 0) {
-                    packageRollbackInfo.putCeSnapshotInode(user, ceSnapshotInode);
-                }
-            } catch (InstallerException ie) {
-                Slog.e(TAG, "Unable to create app data snapshot for: "
-                        + packageRollbackInfo.getPackageName() + ", userId: " + user, ie);
-            }
+            doSnapshot(packageRollbackInfo, user, rollbackId, storageFlags);
         }
     }
 
@@ -119,26 +119,82 @@
             }
         }
 
-        try {
+        doRestoreOrWipe(packageRollbackInfo, userId, rollbackId, appId, seInfo, storageFlags);
+
+        return changedRollback;
+    }
+
+    private boolean doSnapshot(
+            PackageRollbackInfo packageRollbackInfo, int userId, int rollbackId, int flags) {
+        if (packageRollbackInfo.isApex()) {
+            // For APEX, only snapshot CE here
+            if ((flags & Installer.FLAG_STORAGE_CE) != 0) {
+                long ceSnapshotInode = mApexManager.snapshotCeData(
+                        userId, rollbackId, packageRollbackInfo.getPackageName());
+                if (ceSnapshotInode > 0) {
+                    packageRollbackInfo.putCeSnapshotInode(userId, ceSnapshotInode);
+                } else {
+                    return false;
+                }
+            }
+        } else {
+            // APK
+            try {
+                long ceSnapshotInode = mInstaller.snapshotAppData(
+                        packageRollbackInfo.getPackageName(), userId, rollbackId, flags);
+                if ((flags & Installer.FLAG_STORAGE_CE) != 0) {
+                    packageRollbackInfo.putCeSnapshotInode(userId, ceSnapshotInode);
+                }
+            } catch (InstallerException ie) {
+                Slog.e(TAG, "Unable to create app data snapshot for: "
+                        + packageRollbackInfo.getPackageName() + ", userId: " + userId, ie);
+                return false;
+            }
+        }
+        return true;
+    }
+
+    private boolean doRestoreOrWipe(PackageRollbackInfo packageRollbackInfo, int userId,
+            int rollbackId, int appId, String seInfo, int flags) {
+        if (packageRollbackInfo.isApex()) {
             switch (packageRollbackInfo.getRollbackDataPolicy()) {
                 case PackageManager.RollbackDataPolicy.WIPE:
-                    mInstaller.clearAppData(null, packageRollbackInfo.getPackageName(),
-                            userId, storageFlags, 0);
+                    // TODO: Implement WIPE for apex CE data
                     break;
                 case PackageManager.RollbackDataPolicy.RESTORE:
-                    mInstaller.restoreAppDataSnapshot(packageRollbackInfo.getPackageName(), appId,
-                            seInfo, userId, rollbackId, storageFlags);
+                    // For APEX, only restore of CE may be done here.
+                    if ((flags & Installer.FLAG_STORAGE_CE) != 0) {
+                        mApexManager.restoreCeData(
+                                userId, rollbackId, packageRollbackInfo.getPackageName());
+                    }
                     break;
                 default:
                     break;
             }
-        } catch (InstallerException ie) {
-            Slog.e(TAG, "Unable to restore/wipe app data: "
-                    + packageRollbackInfo.getPackageName() + " policy="
-                    + packageRollbackInfo.getRollbackDataPolicy(), ie);
-        }
+        } else {
+            // APK
+            try {
+                switch (packageRollbackInfo.getRollbackDataPolicy()) {
+                    case PackageManager.RollbackDataPolicy.WIPE:
+                        mInstaller.clearAppData(null, packageRollbackInfo.getPackageName(),
+                                userId, flags, 0);
+                        break;
+                    case PackageManager.RollbackDataPolicy.RESTORE:
 
-        return changedRollback;
+                        mInstaller.restoreAppDataSnapshot(packageRollbackInfo.getPackageName(),
+                                appId, seInfo, userId, rollbackId, flags);
+                        break;
+                    default:
+                        break;
+                }
+            } catch (InstallerException ie) {
+                Slog.e(TAG, "Unable to restore/wipe app data: "
+                        + packageRollbackInfo.getPackageName() + " policy="
+                        + packageRollbackInfo.getRollbackDataPolicy(), ie);
+                return false;
+            }
+        }
+        return true;
     }
 
     /**
@@ -168,6 +224,13 @@
     }
 
     /**
+     * Deletes all device-encrypted apex data snapshots for the given rollback id.
+     */
+    public void destroyApexDeSnapshots(int rollbackId) {
+        mApexManager.destroyDeSnapshots(rollbackId);
+    }
+
+    /**
      * Commits the pending backups and restores for a given {@code userId} and {@code rollback}. If
      * the rollback has a pending backup, it is updated with a mapping from {@code userId} to inode
      * of the CE user data snapshot.
@@ -204,40 +267,15 @@
 
             if (hasPendingBackup) {
                 int idx = pendingBackupUsers.indexOf(userId);
-                try {
-                    long ceSnapshotInode = mInstaller.snapshotAppData(info.getPackageName(),
-                            userId, rollback.info.getRollbackId(),
-                            Installer.FLAG_STORAGE_CE);
-                    info.putCeSnapshotInode(userId, ceSnapshotInode);
+                if (doSnapshot(
+                        info, userId, rollback.info.getRollbackId(), Installer.FLAG_STORAGE_CE)) {
                     pendingBackupUsers.remove(idx);
-                } catch (InstallerException ie) {
-                    Slog.e(TAG,
-                            "Unable to create app data snapshot for: "
-                                    + info.getPackageName() + ", userId: " + userId, ie);
                 }
             }
 
-            if (hasPendingRestore) {
-                try {
-                    switch (info.getRollbackDataPolicy()) {
-                        case PackageManager.RollbackDataPolicy.WIPE:
-                            mInstaller.clearAppData(null, info.getPackageName(), userId,
-                                    Installer.FLAG_STORAGE_CE, 0);
-                            break;
-                        case PackageManager.RollbackDataPolicy.RESTORE:
-                            mInstaller.restoreAppDataSnapshot(info.getPackageName(), ri.appId,
-                                    ri.seInfo, userId, rollback.info.getRollbackId(),
-                                    Installer.FLAG_STORAGE_CE);
-                            break;
-                        default:
-                            break;
-                    }
-                    info.removeRestoreInfo(ri);
-                } catch (InstallerException ie) {
-                    Slog.e(TAG, "Unable to restore/wipe app data for: "
-                            + info.getPackageName() + " policy="
-                            + info.getRollbackDataPolicy(), ie);
-                }
+            if (hasPendingRestore && doRestoreOrWipe(info, userId, rollback.info.getRollbackId(),
+                    ri.appId, ri.seInfo, Installer.FLAG_STORAGE_CE)) {
+                info.removeRestoreInfo(ri);
             }
         }
         return foundBackupOrRestore;
diff --git a/services/core/java/com/android/server/rollback/Rollback.java b/services/core/java/com/android/server/rollback/Rollback.java
index cb583cd..7b96777 100644
--- a/services/core/java/com/android/server/rollback/Rollback.java
+++ b/services/core/java/com/android/server/rollback/Rollback.java
@@ -92,19 +92,6 @@
      */
     static final int ROLLBACK_STATE_DELETED = 4;
 
-    @IntDef(flag = true, prefix = { "MATCH_" }, value = {
-            MATCH_APK_IN_APEX,
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    @interface RollbackInfoFlags {}
-
-    /**
-     * {@link RollbackInfo} flag: include {@code RollbackInfo} packages that are apk-in-apex.
-     * These packages do not have their own sessions. They are embedded in an apex which has a
-     * session id.
-     */
-    static final int MATCH_APK_IN_APEX = 1;
-
     /**
      * The session ID for the staged session if this rollback data represents a staged session,
      * {@code -1} otherwise.
@@ -186,6 +173,14 @@
     private final int[] mPackageSessionIds;
 
     /**
+     * The number of sessions in the install which are notified with success by
+     * {@link PackageInstaller.SessionCallback#onFinished(int, boolean)}.
+     * This rollback will be enabled only after all child sessions finished with success.
+     */
+    @GuardedBy("mLock")
+    private int mNumPackageSessionsWithSuccess;
+
+    /**
      * Constructs a new, empty Rollback instance.
      *
      * @param rollbackId the id of the rollback.
@@ -651,15 +646,23 @@
      */
     void delete(AppDataRollbackHelper dataHelper) {
         synchronized (mLock) {
+            boolean containsApex = false;
             for (PackageRollbackInfo pkgInfo : info.getPackages()) {
-                IntArray snapshottedUsers = pkgInfo.getSnapshottedUsers();
-                for (int i = 0; i < snapshottedUsers.size(); i++) {
-                    // Destroy app data snapshot.
-                    int userId = snapshottedUsers.get(i);
+                if (pkgInfo.isApex()) {
+                    containsApex = true;
+                } else {
+                    IntArray snapshottedUsers = pkgInfo.getSnapshottedUsers();
+                    for (int i = 0; i < snapshottedUsers.size(); i++) {
+                        // Destroy app data snapshot.
+                        int userId = snapshottedUsers.get(i);
 
-                    dataHelper.destroyAppDataSnapshot(info.getRollbackId(), pkgInfo, userId);
+                        dataHelper.destroyAppDataSnapshot(info.getRollbackId(), pkgInfo, userId);
+                    }
                 }
             }
+            if (containsApex) {
+                dataHelper.destroyApexDeSnapshots(info.getRollbackId());
+            }
 
             RollbackStore.deleteRollback(this);
             mState = ROLLBACK_STATE_DELETED;
@@ -766,33 +769,6 @@
     }
 
     /**
-     * Returns the number of {@link PackageRollbackInfo} we are storing in this {@link Rollback}
-     * instance. By default, this method does not include apk-in-apex package in the count.
-     *
-     * @param flags Apk-in-apex packages can be included in the count by passing
-     * {@link Rollback#MATCH_APK_IN_APEX}
-     *
-     * @return Counts number of {@link PackageRollbackInfo} stored in the {@link Rollback}
-     * according to {@code flags} passed
-     */
-    int getPackageCount(@RollbackInfoFlags int flags) {
-        synchronized (mLock) {
-            List<PackageRollbackInfo> packages = info.getPackages();
-            if ((flags & MATCH_APK_IN_APEX) != 0) {
-                return packages.size();
-            }
-
-            int packagesWithoutApkInApex = 0;
-            for (PackageRollbackInfo rollbackInfo : packages) {
-                if (!rollbackInfo.isApkInApex()) {
-                    packagesWithoutApkInApex++;
-                }
-            }
-            return packagesWithoutApkInApex;
-        }
-    }
-
-    /**
      * Adds a rollback token to be associated with this rollback. This may be used to
      * identify which rollback should be removed in case {@link PackageManager} sends an
      * {@link Intent#ACTION_CANCEL_ENABLE_ROLLBACK} intent.
@@ -825,10 +801,31 @@
     }
 
     /**
-     * Returns the number of package session ids in this rollback.
+     * Called when a child session finished with success.
+     * Returns true when all child sessions are notified with success. This rollback will be
+     * enabled only after all child sessions finished with success.
      */
-    int getPackageSessionIdCount() {
-        return mPackageSessionIds.length;
+    boolean notifySessionWithSuccess() {
+        synchronized (mLock) {
+            return ++mNumPackageSessionsWithSuccess == mPackageSessionIds.length;
+        }
+    }
+
+    /**
+     * Returns true if all packages in this rollback are enabled. We won't enable this rollback
+     * until all packages are enabled. Note we don't count apk-in-apex here since they are enabled
+     * automatically when the embedding apex is enabled.
+     */
+    boolean allPackagesEnabled() {
+        synchronized (mLock) {
+            int packagesWithoutApkInApex = 0;
+            for (PackageRollbackInfo rollbackInfo : info.getPackages()) {
+                if (!rollbackInfo.isApkInApex()) {
+                    packagesWithoutApkInApex++;
+                }
+            }
+            return packagesWithoutApkInApex == mPackageSessionIds.length;
+        }
     }
 
     static String rollbackStateToString(@RollbackState int state) {
diff --git a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
index 4bab224..9e150fd 100644
--- a/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
+++ b/services/core/java/com/android/server/rollback/RollbackManagerServiceImpl.java
@@ -19,6 +19,7 @@
 import android.Manifest;
 import android.annotation.AnyThread;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.annotation.WorkerThread;
 import android.app.AppOpsManager;
@@ -50,8 +51,8 @@
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.provider.DeviceConfig;
-import android.util.ArraySet;
 import android.util.IntArray;
+import android.util.Log;
 import android.util.LongArrayQueue;
 import android.util.Slog;
 import android.util.SparseBooleanArray;
@@ -94,7 +95,7 @@
 class RollbackManagerServiceImpl extends IRollbackManager.Stub {
 
     private static final String TAG = "RollbackManager";
-    private static final boolean LOCAL_LOGV = false;
+    private static final boolean LOCAL_LOGV = Log.isLoggable(TAG, Log.VERBOSE);
 
     // Rollbacks expire after 14 days.
     private static final long DEFAULT_ROLLBACK_LIFETIME_DURATION_MILLIS =
@@ -120,10 +121,6 @@
     @GuardedBy("mLock")
     private final SparseBooleanArray mAllocatedRollbackIds = new SparseBooleanArray();
 
-    // Rollbacks we are in the process of enabling.
-    @GuardedBy("mLock")
-    private final Set<NewRollback> mNewRollbacks = new ArraySet<>();
-
     // The list of all rollbacks, including available and committed rollbacks.
     @GuardedBy("mLock")
     private final List<Rollback> mRollbacks;
@@ -167,8 +164,16 @@
         // Load rollback data from device storage.
         synchronized (mLock) {
             mRollbacks = mRollbackStore.loadRollbacks();
-            for (Rollback rollback : mRollbacks) {
-                mAllocatedRollbackIds.put(rollback.info.getRollbackId(), true);
+            if (!context.getPackageManager().isDeviceUpgrading()) {
+                for (Rollback rollback : mRollbacks) {
+                    mAllocatedRollbackIds.put(rollback.info.getRollbackId(), true);
+                }
+            } else {
+                // Delete rollbacks when build fingerprint has changed.
+                for (Rollback rollback : mRollbacks) {
+                    rollback.delete(mAppDataRollbackHelper);
+                }
+                mRollbacks.clear();
             }
         }
 
@@ -239,17 +244,14 @@
                         Slog.v(TAG, "broadcast=ACTION_CANCEL_ENABLE_ROLLBACK token=" + token);
                     }
                     synchronized (mLock) {
-                        NewRollback found = null;
-                        for (NewRollback newRollback : mNewRollbacks) {
-                            if (newRollback.rollback.hasToken(token)) {
-                                found = newRollback;
+                        for (int i = 0; i < mRollbacks.size(); ++i) {
+                            Rollback rollback = mRollbacks.get(i);
+                            if (rollback.hasToken(token) && rollback.isEnabling()) {
+                                mRollbacks.remove(i);
+                                rollback.delete(mAppDataRollbackHelper);
                                 break;
                             }
                         }
-                        if (found != null) {
-                            mNewRollbacks.remove(found);
-                            found.rollback.delete(mAppDataRollbackHelper);
-                        }
                     }
                 }
             }
@@ -441,15 +443,6 @@
                     rollback.delete(mAppDataRollbackHelper);
                 }
             }
-            Iterator<NewRollback> iter2 = mNewRollbacks.iterator();
-            while (iter2.hasNext()) {
-                NewRollback newRollback = iter2.next();
-                if (newRollback.rollback.includesPackage(packageName)) {
-                    iter2.remove();
-                    newRollback.rollback.delete(mAppDataRollbackHelper);
-                }
-
-            }
         }
     }
 
@@ -801,48 +794,20 @@
             }
         }
 
-        NewRollback newRollback;
+        Rollback newRollback;
         synchronized (mLock) {
-            // See if we already have a NewRollback that contains this package
-            // session. If not, create a NewRollback for the parent session
+            // See if we already have a Rollback that contains this package
+            // session. If not, create a new Rollback for the parent session
             // that we will use for all the packages in the session.
-            newRollback = getNewRollbackForPackageSessionLocked(packageSession.getSessionId());
+            newRollback = getRollbackForSessionLocked(packageSession.getSessionId());
             if (newRollback == null) {
                 newRollback = createNewRollbackLocked(parentSession);
-                mNewRollbacks.add(newRollback);
+                mRollbacks.add(newRollback);
             }
         }
-        newRollback.rollback.addToken(token);
+        newRollback.addToken(token);
 
-        return enableRollbackForPackageSession(newRollback.rollback, packageSession);
-    }
-
-    @WorkerThread
-    private void removeRollbackForPackageSessionId(int sessionId) {
-        if (LOCAL_LOGV) {
-            Slog.v(TAG, "removeRollbackForPackageSessionId=" + sessionId);
-        }
-
-        synchronized (mLock) {
-            NewRollback newRollback = getNewRollbackForPackageSessionLocked(sessionId);
-            if (newRollback != null) {
-                Slog.w(TAG, "Delete new rollback id=" + newRollback.rollback.info.getRollbackId()
-                        + " for session id=" + sessionId);
-                mNewRollbacks.remove(newRollback);
-                newRollback.rollback.delete(mAppDataRollbackHelper);
-            }
-            Iterator<Rollback> iter = mRollbacks.iterator();
-            while (iter.hasNext()) {
-                Rollback rollback = iter.next();
-                if (rollback.getStagedSessionId() == sessionId) {
-                    Slog.w(TAG, "Delete rollback id=" + rollback.info.getRollbackId()
-                            + " for session id=" + sessionId);
-                    iter.remove();
-                    rollback.delete(mAppDataRollbackHelper);
-                    break;
-                }
-            }
-        }
+        return enableRollbackForPackageSession(newRollback, packageSession);
     }
 
     /**
@@ -904,14 +869,6 @@
             return false;
         }
 
-        ApplicationInfo appInfo = pkgInfo.applicationInfo;
-        boolean success = rollback.enableForPackage(packageName, newPackage.versionCode,
-                pkgInfo.getLongVersionCode(), isApex, appInfo.sourceDir,
-                appInfo.splitSourceDirs, session.rollbackDataPolicy);
-        if (!success) {
-            return success;
-        }
-
         if (isApex) {
             // Check if this apex contains apks inside it. If true, then they should be added as
             // a RollbackPackageInfo into this rollback
@@ -929,12 +886,24 @@
                     Slog.e(TAG, apkInApex + " is not installed");
                     return false;
                 }
-                success = rollback.enableForPackageInApex(
-                        apkInApex, apkPkgInfo.getLongVersionCode(), session.rollbackDataPolicy);
-                if (!success) return success;
+                if (!rollback.enableForPackageInApex(
+                        apkInApex, apkPkgInfo.getLongVersionCode(), session.rollbackDataPolicy)) {
+                    return false;
+                }
             }
         }
-        return true;
+
+        /**
+         * The order is important here! Always enable the embedded apk-in-apex (if any) before
+         * enabling the embedding apex. Otherwise the rollback object might be in an inconsistent
+         * state where an embedding apex is successfully enabled while one of its embedded
+         * apk-in-apex failed. Note {@link Rollback#allPackagesEnabled()} won't behave correctly if
+         * a rollback object is inconsistent because it doesn't count apk-in-apex.
+         */
+        ApplicationInfo appInfo = pkgInfo.applicationInfo;
+        return rollback.enableForPackage(packageName, newPackage.versionCode,
+                pkgInfo.getLongVersionCode(), isApex, appInfo.sourceDir,
+                appInfo.splitSourceDirs, session.rollbackDataPolicy);
     }
 
     @Override
@@ -965,16 +934,10 @@
                     + " users=" + Arrays.toString(userIds));
         }
         synchronized (mLock) {
-            // staged installs
             for (int i = 0; i < mRollbacks.size(); i++) {
                 Rollback rollback = mRollbacks.get(i);
                 rollback.snapshotUserData(packageName, userIds, mAppDataRollbackHelper);
             }
-            // non-staged installs
-            for (NewRollback rollback : mNewRollbacks) {
-                rollback.rollback.snapshotUserData(
-                        packageName, userIds, mAppDataRollbackHelper);
-            }
         }
     }
 
@@ -1015,16 +978,14 @@
                 return;
             }
 
-            NewRollback newRollback;
+            Rollback newRollback;
             synchronized (mLock) {
                 newRollback = createNewRollbackLocked(session);
             }
 
             if (!session.isMultiPackage()) {
-                if (!enableRollbackForPackageSession(newRollback.rollback, session)) {
+                if (!enableRollbackForPackageSession(newRollback, session)) {
                     Slog.e(TAG, "Unable to enable rollback for session: " + sessionId);
-                    result.offer(-1);
-                    return;
                 }
             } else {
                 for (int childSessionId : session.getChildSessionIds()) {
@@ -1032,13 +993,11 @@
                             installer.getSessionInfo(childSessionId);
                     if (childSession == null) {
                         Slog.e(TAG, "No matching child install session for: " + childSessionId);
-                        result.offer(-1);
-                        return;
+                        break;
                     }
-                    if (!enableRollbackForPackageSession(newRollback.rollback, childSession)) {
+                    if (!enableRollbackForPackageSession(newRollback, childSession)) {
                         Slog.e(TAG, "Unable to enable rollback for session: " + sessionId);
-                        result.offer(-1);
-                        return;
+                        break;
                     }
                 }
             }
@@ -1196,40 +1155,46 @@
             }
 
             if (success) {
-                NewRollback newRollback;
+                Rollback rollback;
                 synchronized (mLock) {
-                    newRollback = getNewRollbackForPackageSessionLocked(sessionId);
-                    if (newRollback != null && newRollback.notifySessionWithSuccess()) {
-                        mNewRollbacks.remove(newRollback);
-                    } else {
-                        // Not all child sessions finished with success.
-                        // Don't enable the rollback yet.
-                        newRollback = null;
+                    rollback = getRollbackForSessionLocked(sessionId);
+                    if (rollback == null || rollback.isStaged() || !rollback.isEnabling()
+                            || !rollback.notifySessionWithSuccess()) {
+                        return;
                     }
+                    // All child sessions finished with success. We can enable this rollback now.
+                    // TODO: refactor #completeEnableRollback so we won't remove 'rollback' from
+                    // mRollbacks here and add it back in #completeEnableRollback later.
+                    mRollbacks.remove(rollback);
                 }
-
-                if (newRollback != null) {
-                    Rollback rollback = completeEnableRollback(newRollback);
-                    if (rollback != null && !rollback.isStaged()) {
-                        makeRollbackAvailable(rollback);
-                    }
+                // TODO: Now #completeEnableRollback returns the same rollback object as the
+                // parameter on success. It would be more readable to return a boolean to indicate
+                // success or failure.
+                if (completeEnableRollback(rollback) != null) {
+                    makeRollbackAvailable(rollback);
                 }
             } else {
-                removeRollbackForPackageSessionId(sessionId);
+                synchronized (mLock) {
+                    Rollback rollback = getRollbackForSessionLocked(sessionId);
+                    if (rollback != null && rollback.isEnabling()) {
+                        Slog.w(TAG, "Delete rollback id=" + rollback.info.getRollbackId()
+                                + " for failed session id=" + sessionId);
+                        mRollbacks.remove(rollback);
+                        rollback.delete(mAppDataRollbackHelper);
+                    }
+                }
             }
         }
     }
 
     /**
-     * Add a rollback to the list of rollbacks. This should be called after rollback has been
-     * enabled for all packages in the rollback. It does not make the rollback available yet.
+     * Add a rollback to the list of rollbacks. It does not make the rollback available yet.
      *
      * @return the Rollback instance for a successfully enable-completed rollback,
      * or null on error.
      */
     @WorkerThread
-    private Rollback completeEnableRollback(NewRollback newRollback) {
-        Rollback rollback = newRollback.rollback;
+    private Rollback completeEnableRollback(Rollback rollback) {
         if (LOCAL_LOGV) {
             Slog.v(TAG, "completeEnableRollback id=" + rollback.info.getRollbackId());
         }
@@ -1238,8 +1203,7 @@
         // equal to the number of sessions we are installing, to ensure we didn't skip enabling
         // of any sessions. If we successfully enable an apex, then we can assume we enabled
         // rollback for the embedded apk-in-apex, if any.
-        // TODO: add a helper instead of exposing 2 methods from Rollback
-        if (rollback.getPackageCount(0 /*flags*/) != rollback.getPackageSessionIdCount()) {
+        if (!rollback.allPackagesEnabled()) {
             Slog.e(TAG, "Failed to enable rollback for all packages in session.");
             rollback.delete(mAppDataRollbackHelper);
             return null;
@@ -1340,38 +1304,9 @@
         }
     }
 
-    private static class NewRollback {
-        public final Rollback rollback;
-
-        /**
-         * The number of sessions in the install which are notified with success by
-         * {@link PackageInstaller.SessionCallback#onFinished(int, boolean)}.
-         * This NewRollback will be enabled only after all child sessions finished with success.
-         */
-        @GuardedBy("mNewRollbackLock")
-        private int mNumPackageSessionsWithSuccess;
-
-        private final Object mNewRollbackLock = new Object();
-
-        NewRollback(Rollback rollback) {
-            this.rollback = rollback;
-        }
-
-        /**
-         * Called when a child session finished with success.
-         * Returns true when all child sessions are notified with success. This NewRollback will be
-         * enabled only after all child sessions finished with success.
-         */
-        boolean notifySessionWithSuccess() {
-            synchronized (mNewRollbackLock) {
-                return ++mNumPackageSessionsWithSuccess == rollback.getPackageSessionIdCount();
-            }
-        }
-    }
-
     @WorkerThread
     @GuardedBy("mLock")
-    private NewRollback createNewRollbackLocked(PackageInstaller.SessionInfo parentSession) {
+    private Rollback createNewRollbackLocked(PackageInstaller.SessionInfo parentSession) {
         int rollbackId = allocateRollbackIdLocked();
         final int userId;
         if (parentSession.getUser() == UserHandle.ALL) {
@@ -1403,22 +1338,23 @@
                     installerPackageName, packageSessionIds);
         }
 
-        return new NewRollback(rollback);
+        return rollback;
     }
 
     /**
-     * Returns the NewRollback associated with the given package session.
-     * Returns null if no NewRollback is found for the given package
-     * session.
+     * Returns the Rollback associated with the given session if parent or child session id matches.
+     * Returns null if not found.
      */
     @WorkerThread
     @GuardedBy("mLock")
-    NewRollback getNewRollbackForPackageSessionLocked(int packageSessionId) {
-        // We expect mNewRollbacks to be a very small list; linear search
-        // should be plenty fast.
-        for (NewRollback newRollback: mNewRollbacks) {
-            if (newRollback.rollback.containsSessionId(packageSessionId)) {
-                return newRollback;
+    @Nullable
+    private Rollback getRollbackForSessionLocked(int sessionId) {
+        // We expect mRollbacks to be a very small list; linear search should be plenty fast.
+        for (int i = 0; i < mRollbacks.size(); ++i) {
+            Rollback rollback = mRollbacks.get(i);
+            if (rollback.getStagedSessionId() == sessionId
+                    || rollback.containsSessionId(sessionId)) {
+                return rollback;
             }
         }
         return null;
diff --git a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
index 951f1a4..8d090f1 100644
--- a/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
+++ b/services/core/java/com/android/server/rollback/RollbackPackageHealthObserver.java
@@ -16,19 +16,13 @@
 
 package com.android.server.rollback;
 
-import static android.util.StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
-import static android.util.StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
-import static android.util.StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
-import static android.util.StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
-import static android.util.StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
 
-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.content.pm.ApplicationInfo;
 import android.content.pm.PackageInstaller;
 import android.content.pm.PackageManager;
 import android.content.pm.VersionedPackage;
@@ -44,9 +38,9 @@
 import android.text.TextUtils;
 import android.util.ArraySet;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.PackageWatchdog;
 import com.android.server.PackageWatchdog.FailureReasons;
 import com.android.server.PackageWatchdog.PackageHealthObserver;
@@ -75,8 +69,6 @@
     private static final String TAG = "RollbackPackageHealthObserver";
     private static final String NAME = "rollback-observer";
 
-    private static final String LOGGING_PARENT_KEY = "android.content.pm.LOGGING_PARENT";
-
     private final Context mContext;
     private final Handler mHandler;
     private final File mLastStagedRollbackIdsFile;
@@ -162,67 +154,8 @@
         Iterator<Integer> rollbackIterator = rollbackIds.iterator();
         while (rollbackIterator.hasNext()) {
             int rollbackId = rollbackIterator.next();
-            logRollbackStatusOnBoot(rollbackId, rollbackManager.getRecentlyCommittedRollbacks());
-        }
-    }
-
-    private void logRollbackStatusOnBoot(int rollbackId,
-            List<RollbackInfo> recentlyCommittedRollbacks) {
-        PackageInstaller packageInstaller = mContext.getPackageManager().getPackageInstaller();
-
-        RollbackInfo rollback = null;
-        for (RollbackInfo info : recentlyCommittedRollbacks) {
-            if (rollbackId == info.getRollbackId()) {
-                rollback = info;
-                break;
-            }
-        }
-
-        if (rollback == null) {
-            Slog.e(TAG, "rollback info not found for last staged rollback: " + rollbackId);
-            return;
-        }
-
-        // Identify the logging parent for this rollback. When all configurations are correct, each
-        // package in the rollback refers to the same logging parent, except for the logging parent
-        // itself. If a logging parent is missing for a package, we use the package itself for
-        // logging. This might result in over-logging, but we prefer this over no logging.
-        final Set<String> loggingPackageNames = new ArraySet<>();
-        for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
-            final String loggingParentName = getLoggingParentName(packageRollback.getPackageName());
-            if (loggingParentName != null) {
-                loggingPackageNames.add(loggingParentName);
-            } else {
-                loggingPackageNames.add(packageRollback.getPackageName());
-            }
-        }
-
-        // Use the version of the logging parent that was installed before
-        // we rolled back for logging purposes.
-        final List<VersionedPackage> oldLoggingPackages = new ArrayList<>();
-        for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
-            if (loggingPackageNames.contains(packageRollback.getPackageName())) {
-                oldLoggingPackages.add(packageRollback.getVersionRolledBackFrom());
-            }
-        }
-
-        int sessionId = rollback.getCommittedSessionId();
-        PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId);
-        if (sessionInfo == null) {
-            Slog.e(TAG, "On boot completed, could not load session id " + sessionId);
-            return;
-        }
-
-        for (VersionedPackage oldLoggingPackage : oldLoggingPackages) {
-            if (sessionInfo.isStagedSessionApplied()) {
-                logEvent(oldLoggingPackage,
-                        StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
-                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
-            } else if (sessionInfo.isStagedSessionFailed()) {
-                logEvent(oldLoggingPackage,
-                        StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
-                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
-            }
+            WatchdogRollbackLogger.logRollbackStatusOnBoot(
+                    mContext, rollbackId, rollbackManager.getRecentlyCommittedRollbacks());
         }
     }
 
@@ -255,22 +188,6 @@
         return null;
     }
 
-    @Nullable
-    private String getLoggingParentName(String packageName) {
-        PackageManager packageManager = mContext.getPackageManager();
-        try {
-            ApplicationInfo ai = packageManager.getApplicationInfo(packageName,
-                    PackageManager.GET_META_DATA);
-            if (ai.metaData == null) {
-                return null;
-            }
-            return ai.metaData.getString(LOGGING_PARENT_KEY);
-        } catch (Exception e) {
-            Slog.w(TAG, "Unable to discover logging parent package: " + packageName, e);
-            return null;
-        }
-    }
-
     private BroadcastReceiver listenForStagedSessionReady(RollbackManager rollbackManager,
             int rollbackId, @Nullable VersionedPackage logPackage) {
         BroadcastReceiver sessionUpdatedReceiver = new BroadcastReceiver() {
@@ -306,15 +223,16 @@
                         // successful or not. If logPackage is null, then there is nothing to log.
                         saveStagedRollbackId(rollbackId);
                     }
-                    logEvent(logPackage,
-                            StatsLog
+                    WatchdogRollbackLogger.logEvent(logPackage,
+                            FrameworkStatsLog
                             .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED,
                             WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
                             "");
                 } else if (sessionInfo.isStagedSessionFailed()
                         && markStagedSessionHandled(rollbackId)) {
-                    logEvent(logPackage,
-                            StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
+                    WatchdogRollbackLogger.logEvent(logPackage,
+                            FrameworkStatsLog
+                                    .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
                             WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN,
                             "");
                     mContext.unregisterReceiver(listener);
@@ -383,47 +301,6 @@
         }
     }
 
-    private static String rollbackTypeToString(int type) {
-        switch (type) {
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE:
-                return "ROLLBACK_INITIATE";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS:
-                return "ROLLBACK_SUCCESS";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE:
-                return "ROLLBACK_FAILURE";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED:
-                return "ROLLBACK_BOOT_TRIGGERED";
-            default:
-                return "UNKNOWN";
-        }
-    }
-
-    private static String rollbackReasonToString(int reason) {
-        switch (reason) {
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH:
-                return "REASON_NATIVE_CRASH";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK:
-                return "REASON_EXPLICIT_HEALTH_CHECK";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH:
-                return "REASON_APP_CRASH";
-            case StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING:
-                return "REASON_APP_NOT_RESPONDING";
-            default:
-                return "UNKNOWN";
-        }
-    }
-
-    private static void logEvent(@Nullable VersionedPackage logPackage, int type,
-            int rollbackReason, @NonNull String failingPackageName) {
-        Slog.i(TAG, "Watchdog event occurred with type: " + rollbackTypeToString(type)
-                + " logPackage: " + logPackage
-                + " rollbackReason: " + rollbackReasonToString(rollbackReason)
-                + " failedPackageName: " + failingPackageName);
-        if (logPackage != null) {
-            StatsLog.logWatchdogRollbackOccurred(type, logPackage.getPackageName(),
-                    logPackage.getLongVersionCode(), rollbackReason, failingPackageName);
-        }
-    }
 
     /**
      * Returns true if the package name is the name of a module.
@@ -446,7 +323,7 @@
     private void rollbackPackage(RollbackInfo rollback, VersionedPackage failedPackage,
             @FailureReasons int rollbackReason) {
         final RollbackManager rollbackManager = mContext.getSystemService(RollbackManager.class);
-        int reasonToLog = mapFailureReasonToMetric(rollbackReason);
+        int reasonToLog = WatchdogRollbackLogger.mapFailureReasonToMetric(rollbackReason);
         final String failedPackageToLog;
         if (rollbackReason == PackageWatchdog.FAILURE_REASON_NATIVE_CRASH) {
             failedPackageToLog = SystemProperties.get(
@@ -456,21 +333,12 @@
         }
         VersionedPackage logPackageTemp = null;
         if (isModule(failedPackage.getPackageName())) {
-            String logPackageName = getLoggingParentName(failedPackage.getPackageName());
-            if (logPackageName == null) {
-                logPackageName = failedPackage.getPackageName();
-            }
-            try {
-                logPackageTemp = new VersionedPackage(logPackageName, mContext.getPackageManager()
-                        .getPackageInfo(logPackageName, 0 /* flags */).getLongVersionCode());
-            } catch (PackageManager.NameNotFoundException e) {
-                logPackageTemp = null;
-            }
+            logPackageTemp = WatchdogRollbackLogger.getLogPackage(mContext, failedPackage);
         }
 
         final VersionedPackage logPackage = logPackageTemp;
-        logEvent(logPackage,
-                StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE,
+        WatchdogRollbackLogger.logEvent(logPackage,
+                FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE,
                 reasonToLog, failedPackageToLog);
         final LocalIntentReceiver rollbackReceiver = new LocalIntentReceiver((Intent result) -> {
             int status = result.getIntExtra(RollbackManager.EXTRA_STATUS,
@@ -487,16 +355,18 @@
                     handleStagedSessionChange(rollbackManager, rollbackId, listener,
                             logPackage);
                 } else {
-                    logEvent(logPackage,
-                            StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
+                    WatchdogRollbackLogger.logEvent(logPackage,
+                            FrameworkStatsLog
+                                    .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
                             reasonToLog, failedPackageToLog);
                 }
             } else {
                 if (rollback.isStaged()) {
                     markStagedSessionHandled(rollback.getRollbackId());
                 }
-                logEvent(logPackage,
-                        StatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
+                WatchdogRollbackLogger.logEvent(logPackage,
+                        FrameworkStatsLog
+                                .WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
                         reasonToLog, failedPackageToLog);
             }
         });
@@ -527,21 +397,4 @@
             rollbackPackage(rollback, sample, PackageWatchdog.FAILURE_REASON_NATIVE_CRASH);
         }
     }
-
-
-    private int mapFailureReasonToMetric(@FailureReasons int failureReason) {
-        switch (failureReason) {
-            case PackageWatchdog.FAILURE_REASON_NATIVE_CRASH:
-                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
-            case PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK:
-                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
-            case PackageWatchdog.FAILURE_REASON_APP_CRASH:
-                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
-            case PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING:
-                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
-            default:
-                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
-        }
-    }
-
 }
diff --git a/services/core/java/com/android/server/rollback/RollbackStore.java b/services/core/java/com/android/server/rollback/RollbackStore.java
index 4f89482..7b046c1 100644
--- a/services/core/java/com/android/server/rollback/RollbackStore.java
+++ b/services/core/java/com/android/server/rollback/RollbackStore.java
@@ -199,11 +199,6 @@
      * Creates a new Rollback instance for a non-staged rollback with
      * backupDir assigned.
      */
-    Rollback createNonStagedRollback(int rollbackId, int userId, String installerPackageName) {
-        File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
-        return new Rollback(rollbackId, backupDir, -1, userId, installerPackageName);
-    }
-
     Rollback createNonStagedRollback(int rollbackId, int userId, String installerPackageName,
             int[] packageSessionIds) {
         File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
@@ -216,16 +211,6 @@
      * backupDir assigned.
      */
     Rollback createStagedRollback(int rollbackId, int stagedSessionId, int userId,
-            String installerPackageName) {
-        File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
-        return new Rollback(rollbackId, backupDir, stagedSessionId, userId, installerPackageName);
-    }
-
-    /**
-     * TODO: Now we have 4 factory methods for creating Rollback objects which is verbose and
-     * cumbersome. Need to merge them for simplicity.
-     */
-    Rollback createStagedRollback(int rollbackId, int stagedSessionId, int userId,
             String installerPackageName, int[] packageSessionIds) {
         File backupDir = new File(mRollbackDataDir, Integer.toString(rollbackId));
         return new Rollback(rollbackId, backupDir, stagedSessionId, userId, installerPackageName,
diff --git a/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java b/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java
new file mode 100644
index 0000000..1be6f22
--- /dev/null
+++ b/services/core/java/com/android/server/rollback/WatchdogRollbackLogger.java
@@ -0,0 +1,278 @@
+/*
+ * 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.server.rollback;
+
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE;
+import static com.android.internal.util.FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInstaller;
+import android.content.pm.PackageManager;
+import android.content.pm.VersionedPackage;
+import android.content.rollback.PackageRollbackInfo;
+import android.content.rollback.RollbackInfo;
+import android.util.ArraySet;
+import android.util.Slog;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.PackageWatchdog;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+/**
+ * This class handles the logic for logging Watchdog-triggered rollback events.
+ */
+public final class WatchdogRollbackLogger {
+    private static final String TAG = "WatchdogRollbackLogger";
+
+    private static final String LOGGING_PARENT_KEY = "android.content.pm.LOGGING_PARENT";
+
+    private WatchdogRollbackLogger() {
+    }
+
+    @Nullable
+    private static String getLoggingParentName(Context context, @NonNull String packageName) {
+        PackageManager packageManager = context.getPackageManager();
+        try {
+            int flags = PackageManager.MATCH_APEX | PackageManager.GET_META_DATA;
+            ApplicationInfo ai = packageManager.getPackageInfo(packageName, flags).applicationInfo;
+            if (ai.metaData == null) {
+                return null;
+            }
+            return ai.metaData.getString(LOGGING_PARENT_KEY);
+        } catch (Exception e) {
+            Slog.w(TAG, "Unable to discover logging parent package: " + packageName, e);
+            return null;
+        }
+    }
+
+    /**
+     * Returns the logging parent of a given package if it exists, {@code null} otherwise.
+     *
+     * The logging parent is defined by the {@code android.content.pm.LOGGING_PARENT} field in the
+     * metadata of a package's AndroidManifest.xml.
+     */
+    @VisibleForTesting
+    @Nullable
+    static VersionedPackage getLogPackage(Context context,
+            @NonNull VersionedPackage failingPackage) {
+        String logPackageName;
+        VersionedPackage loggingParent;
+        logPackageName = getLoggingParentName(context, failingPackage.getPackageName());
+        if (logPackageName == null) {
+            return null;
+        }
+        try {
+            loggingParent = new VersionedPackage(logPackageName, context.getPackageManager()
+                    .getPackageInfo(logPackageName, 0 /* flags */).getLongVersionCode());
+        } catch (PackageManager.NameNotFoundException e) {
+            return null;
+        }
+        return loggingParent;
+    }
+
+
+    /**
+     * Gets the set of parent packages for a given set of failed package names. In the case that
+     * multiple sessions have failed, we want to log failure for each of the parent packages.
+     * Even if multiple failed packages have the same parent, we only log the parent package once.
+     */
+    private static Set<VersionedPackage> getLogPackages(Context context,
+            @NonNull List<String> failedPackageNames) {
+        Set<VersionedPackage> parentPackages = new ArraySet<>();
+        for (String failedPackageName: failedPackageNames) {
+            parentPackages.add(getLogPackage(context, new VersionedPackage(failedPackageName, 0)));
+        }
+        return parentPackages;
+    }
+
+
+    static void logRollbackStatusOnBoot(Context context, int rollbackId,
+            List<RollbackInfo> recentlyCommittedRollbacks) {
+        PackageInstaller packageInstaller = context.getPackageManager().getPackageInstaller();
+
+        RollbackInfo rollback = null;
+        for (RollbackInfo info : recentlyCommittedRollbacks) {
+            if (rollbackId == info.getRollbackId()) {
+                rollback = info;
+                break;
+            }
+        }
+
+        if (rollback == null) {
+            Slog.e(TAG, "rollback info not found for last staged rollback: " + rollbackId);
+            return;
+        }
+
+        // Identify the logging parent for this rollback. When all configurations are correct,
+        // each package in the rollback has a logging parent set in metadata.
+        final Set<String> loggingPackageNames = new ArraySet<>();
+        for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
+            final String loggingParentName = getLoggingParentName(context,
+                    packageRollback.getPackageName());
+            if (loggingParentName != null) {
+                loggingPackageNames.add(loggingParentName);
+            }
+        }
+
+        // Use the version of the logging parent that was installed before
+        // we rolled back for logging purposes.
+        final List<VersionedPackage> oldLoggingPackages = new ArrayList<>();
+        for (PackageRollbackInfo packageRollback : rollback.getPackages()) {
+            if (loggingPackageNames.contains(packageRollback.getPackageName())) {
+                oldLoggingPackages.add(packageRollback.getVersionRolledBackFrom());
+            }
+        }
+
+        int sessionId = rollback.getCommittedSessionId();
+        PackageInstaller.SessionInfo sessionInfo = packageInstaller.getSessionInfo(sessionId);
+        if (sessionInfo == null) {
+            Slog.e(TAG, "On boot completed, could not load session id " + sessionId);
+            return;
+        }
+
+        for (VersionedPackage oldLoggingPackage : oldLoggingPackages) {
+            if (sessionInfo.isStagedSessionApplied()) {
+                logEvent(oldLoggingPackage,
+                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
+                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
+            } else if (sessionInfo.isStagedSessionFailed()) {
+                logEvent(oldLoggingPackage,
+                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE,
+                        WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN, "");
+            }
+        }
+    }
+
+    /**
+     * Logs that one or more apexd reverts have occurred, along with the crashing native process
+     * that caused apexd to revert during boot.
+     *
+     * @param context the context to use when determining the log packages
+     * @param failedPackageNames a list of names of packages which were reverted
+     * @param failingNativeProcess the crashing native process which caused a revert
+     */
+    public static void logApexdRevert(Context context, @NonNull List<String> failedPackageNames,
+            @NonNull String failingNativeProcess) {
+        Set<VersionedPackage> logPackages = getLogPackages(context, failedPackageNames);
+        for (VersionedPackage logPackage: logPackages) {
+            logEvent(logPackage,
+                    WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS,
+                    WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT,
+                    failingNativeProcess);
+        }
+    }
+
+    /**
+     * Log a Watchdog rollback event to statsd.
+     *
+     * @param logPackage the package to associate the rollback with.
+     * @param type the state of the rollback.
+     * @param rollbackReason the reason Watchdog triggered a rollback, if known.
+     * @param failingPackageName the failing package or process which triggered the rollback.
+     */
+    public static void logEvent(@Nullable VersionedPackage logPackage, int type,
+            int rollbackReason, @NonNull String failingPackageName) {
+        Slog.i(TAG, "Watchdog event occurred with type: " + rollbackTypeToString(type)
+                + " logPackage: " + logPackage
+                + " rollbackReason: " + rollbackReasonToString(rollbackReason)
+                + " failedPackageName: " + failingPackageName);
+        if (logPackage != null) {
+            FrameworkStatsLog.write(
+                    FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED,
+                    type,
+                    logPackage.getPackageName(),
+                    logPackage.getVersionCode(),
+                    rollbackReason,
+                    failingPackageName,
+                    new byte[]{});
+        } else {
+            // In the case that the log package is null, still log an empty string as an
+            // indication that retrieving the logging parent failed.
+            FrameworkStatsLog.write(
+                    FrameworkStatsLog.WATCHDOG_ROLLBACK_OCCURRED,
+                    type,
+                    "",
+                    0,
+                    rollbackReason,
+                    failingPackageName,
+                    new byte[]{});
+        }
+    }
+
+    @VisibleForTesting
+    static int mapFailureReasonToMetric(@PackageWatchdog.FailureReasons int failureReason) {
+        switch (failureReason) {
+            case PackageWatchdog.FAILURE_REASON_NATIVE_CRASH:
+                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH;
+            case PackageWatchdog.FAILURE_REASON_EXPLICIT_HEALTH_CHECK:
+                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK;
+            case PackageWatchdog.FAILURE_REASON_APP_CRASH:
+                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH;
+            case PackageWatchdog.FAILURE_REASON_APP_NOT_RESPONDING:
+                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING;
+            default:
+                return WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_UNKNOWN;
+        }
+    }
+
+    private static String rollbackTypeToString(int type) {
+        switch (type) {
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_INITIATE:
+                return "ROLLBACK_INITIATE";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_SUCCESS:
+                return "ROLLBACK_SUCCESS";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_FAILURE:
+                return "ROLLBACK_FAILURE";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_TYPE__ROLLBACK_BOOT_TRIGGERED:
+                return "ROLLBACK_BOOT_TRIGGERED";
+            default:
+                return "UNKNOWN";
+        }
+    }
+
+    private static String rollbackReasonToString(int reason) {
+        switch (reason) {
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH:
+                return "REASON_NATIVE_CRASH";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_EXPLICIT_HEALTH_CHECK:
+                return "REASON_EXPLICIT_HEALTH_CHECK";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_CRASH:
+                return "REASON_APP_CRASH";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_APP_NOT_RESPONDING:
+                return "REASON_APP_NOT_RESPONDING";
+            case WATCHDOG_ROLLBACK_OCCURRED__ROLLBACK_REASON__REASON_NATIVE_CRASH_DURING_BOOT:
+                return "REASON_NATIVE_CRASH_DURING_BOOT";
+            default:
+                return "UNKNOWN";
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
index a8c68c0..c908acd 100644
--- a/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
+++ b/services/core/java/com/android/server/security/KeyAttestationApplicationIdProviderService.java
@@ -24,16 +24,16 @@
 import android.os.Binder;
 import android.os.RemoteException;
 import android.os.UserHandle;
-import android.security.keymaster.KeyAttestationPackageInfo;
-import android.security.keymaster.KeyAttestationApplicationId;
 import android.security.keymaster.IKeyAttestationApplicationIdProvider;
+import android.security.keymaster.KeyAttestationApplicationId;
+import android.security.keymaster.KeyAttestationPackageInfo;
 
 /**
  * @hide
  * The KeyAttestationApplicationIdProviderService provides information describing the possible
  * applications identified by a UID. Due to UID sharing, this KeyAttestationApplicationId can
- * comprise information about multiple packages. The Information is used by keystore to describe
- * the initiating application of a key attestation procedure.
+ * comprise information about multiple packages. The Information is used by keystore and credstore
+ * to describe the initiating application of a key attestation procedure.
  */
 public class KeyAttestationApplicationIdProviderService
         extends IKeyAttestationApplicationIdProvider.Stub {
@@ -46,8 +46,10 @@
 
     public KeyAttestationApplicationId getKeyAttestationApplicationId(int uid)
             throws RemoteException {
-        if (Binder.getCallingUid() != android.os.Process.KEYSTORE_UID) {
-            throw new SecurityException("This service can only be used by Keystore");
+        int callingUid = Binder.getCallingUid();
+        if (callingUid != android.os.Process.KEYSTORE_UID
+                && callingUid != android.os.Process.CREDSTORE_UID) {
+            throw new SecurityException("This service can only be used by Keystore or Credstore");
         }
         KeyAttestationPackageInfo[] keyAttestationPackageInfos = null;
         final long token = Binder.clearCallingIdentity();
diff --git a/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java b/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
index d77cf90..897aa14 100644
--- a/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
+++ b/services/core/java/com/android/server/signedconfig/GlobalSettingsConfigApplicator.java
@@ -23,7 +23,8 @@
 import android.util.ArrayMap;
 import android.util.ArraySet;
 import android.util.Slog;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.security.GeneralSecurityException;
 import java.util.Arrays;
@@ -82,7 +83,7 @@
             return mVerifier.verifySignature(data, signature);
         } catch (GeneralSecurityException e) {
             Slog.e(TAG, "Failed to verify signature", e);
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SECURITY_EXCEPTION;
+            mEvent.status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__SECURITY_EXCEPTION;
             return false;
         }
     }
@@ -116,14 +117,14 @@
             mEvent.version = config.version;
         } catch (InvalidConfigException e) {
             Slog.e(TAG, "Failed to parse global settings from package " + mSourcePackage, e);
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__INVALID_CONFIG;
+            mEvent.status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__INVALID_CONFIG;
             return;
         }
         int currentVersion = getCurrentConfigVersion();
         if (currentVersion >= config.version) {
             Slog.i(TAG, "Global settings from package " + mSourcePackage
                     + " is older than existing: " + config.version + "<=" + currentVersion);
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__OLD_CONFIG;
+            mEvent.status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__OLD_CONFIG;
             return;
         }
         // We have new config!
@@ -133,12 +134,12 @@
                 config.getMatchingConfig(Build.VERSION.SDK_INT);
         if (matchedConfig == null) {
             Slog.i(TAG, "Settings is not applicable to current SDK version; ignoring");
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__NOT_APPLICABLE;
+            mEvent.status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__NOT_APPLICABLE;
             return;
         }
 
         Slog.i(TAG, "Updating global settings to version " + config.version);
         updateCurrentConfig(config.version, matchedConfig.values);
-        mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__APPLIED;
+        mEvent.status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__APPLIED;
     }
 }
diff --git a/services/core/java/com/android/server/signedconfig/SignatureVerifier.java b/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
index 146c516..a857642 100644
--- a/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
+++ b/services/core/java/com/android/server/signedconfig/SignatureVerifier.java
@@ -18,7 +18,8 @@
 
 import android.os.Build;
 import android.util.Slog;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import java.nio.charset.StandardCharsets;
 import java.security.InvalidKeyException;
@@ -96,7 +97,8 @@
         try {
             signature = Base64.getDecoder().decode(base64Signature);
         } catch (IllegalArgumentException e) {
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_SIGNATURE;
+            mEvent.status =
+                    FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_SIGNATURE;
             Slog.e(TAG, "Failed to base64 decode signature");
             return false;
         }
@@ -108,7 +110,8 @@
                 if (DBG) Slog.w(TAG, "Trying to verify signature using debug key");
                 if (verifyWithPublicKey(mDebugKey, data, signature)) {
                     Slog.i(TAG, "Verified config using debug key");
-                    mEvent.verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__DEBUG;
+                    mEvent.verifiedWith =
+                            FrameworkStatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__DEBUG;
                     return true;
                 } else {
                     if (DBG) Slog.i(TAG, "Config verification failed using debug key");
@@ -120,16 +123,19 @@
         if (mProdKey ==  null) {
             Slog.e(TAG, "No prod key; construction failed?");
             mEvent.status =
-                    StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT;
+                    FrameworkStatsLog
+                            .SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED_PROD_KEY_ABSENT;
             return false;
         }
         if (verifyWithPublicKey(mProdKey, data, signature)) {
             Slog.i(TAG, "Verified config using production key");
-            mEvent.verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__PRODUCTION;
+            mEvent.verifiedWith =
+                    FrameworkStatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__PRODUCTION;
             return true;
         } else {
             if (DBG) Slog.i(TAG, "Verification failed using production key");
-            mEvent.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED;
+            mEvent.status =
+                    FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__SIGNATURE_CHECK_FAILED;
             return false;
         }
     }
diff --git a/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java b/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java
index 2f2062c..c1adf93 100644
--- a/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java
+++ b/services/core/java/com/android/server/signedconfig/SignedConfigEvent.java
@@ -15,24 +15,24 @@
  */
 package com.android.server.signedconfig;
 
-import android.util.StatsLog;
+import com.android.internal.util.FrameworkStatsLog;
 
 /**
  * Helper class to allow a SignedConfigReported event to be built up in stages.
  */
 public class SignedConfigEvent {
 
-    public int type = StatsLog.SIGNED_CONFIG_REPORTED__TYPE__UNKNOWN_TYPE;
-    public int status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__UNKNOWN_STATUS;
+    public int type = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__TYPE__UNKNOWN_TYPE;
+    public int status = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__UNKNOWN_STATUS;
     public int version = 0;
     public String fromPackage = null;
-    public int verifiedWith = StatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__NO_KEY;
+    public int verifiedWith = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__VERIFIED_WITH__NO_KEY;
 
     /**
      * Write this event to statslog.
      */
     public void send() {
-        StatsLog.write(StatsLog.SIGNED_CONFIG_REPORTED,
+        FrameworkStatsLog.write(FrameworkStatsLog.SIGNED_CONFIG_REPORTED,
                 type, status, version, fromPackage, verifiedWith);
     }
 
diff --git a/services/core/java/com/android/server/signedconfig/SignedConfigService.java b/services/core/java/com/android/server/signedconfig/SignedConfigService.java
index dc39542..037c82a 100644
--- a/services/core/java/com/android/server/signedconfig/SignedConfigService.java
+++ b/services/core/java/com/android/server/signedconfig/SignedConfigService.java
@@ -26,8 +26,8 @@
 import android.net.Uri;
 import android.os.Bundle;
 import android.util.Slog;
-import android.util.StatsLog;
 
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.server.LocalServices;
 
 import java.nio.charset.StandardCharsets;
@@ -85,7 +85,7 @@
                 && metaData.containsKey(KEY_GLOBAL_SETTINGS_SIGNATURE)) {
             SignedConfigEvent event = new SignedConfigEvent();
             try {
-                event.type = StatsLog.SIGNED_CONFIG_REPORTED__TYPE__GLOBAL_SETTINGS;
+                event.type = FrameworkStatsLog.SIGNED_CONFIG_REPORTED__TYPE__GLOBAL_SETTINGS;
                 event.fromPackage = packageName;
                 String config = metaData.getString(KEY_GLOBAL_SETTINGS);
                 String signature = metaData.getString(KEY_GLOBAL_SETTINGS_SIGNATURE);
@@ -95,7 +95,8 @@
                 } catch (IllegalArgumentException iae) {
                     Slog.e(TAG, "Failed to base64 decode global settings config from "
                             + packageName);
-                    event.status = StatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_CONFIG;
+                    event.status =
+                            FrameworkStatsLog.SIGNED_CONFIG_REPORTED__STATUS__BASE64_FAILURE_CONFIG;
                     return;
                 }
                 if (DBG) {
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
index f3197cf..5c79f6e 100644
--- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
+++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java
@@ -54,6 +54,7 @@
 import android.hardware.biometrics.BiometricsProtoEnums;
 import android.hardware.face.FaceManager;
 import android.hardware.fingerprint.FingerprintManager;
+import android.hardware.health.V2_0.IHealth;
 import android.net.ConnectivityManager;
 import android.net.INetworkStatsService;
 import android.net.Network;
@@ -95,7 +96,6 @@
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.StatsEvent;
-import android.util.StatsLog;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.GuardedBy;
@@ -119,6 +119,8 @@
 import com.android.internal.os.PowerProfile;
 import com.android.internal.os.ProcessCpuTracker;
 import com.android.internal.os.StoragedUidIoStatsReader;
+import com.android.internal.util.FrameworkStatsLog;
+import com.android.server.BatteryService;
 import com.android.server.BinderCallsStatsService;
 import com.android.server.LocalServices;
 import com.android.server.SystemService;
@@ -239,6 +241,8 @@
 
     private File mBaseDir;
 
+    private BatteryService.HealthServiceWrapper mHealthService;
+
     @Nullable
     private KernelCpuThreadReaderDiff mKernelCpuThreadReader;
 
@@ -252,6 +256,8 @@
         mContext = context;
     }
 
+    private native void nativeInit();
+
     /**
      * Use of this StatsPullAtomCallbackImpl means we avoid one class per tagId, which we would
      * get if we used lambdas.
@@ -263,116 +269,122 @@
         @Override
         public int onPullAtom(int atomTag, List<StatsEvent> data) {
             switch(atomTag) {
-                case StatsLog.WIFI_BYTES_TRANSFER:
+                case FrameworkStatsLog.WIFI_BYTES_TRANSFER:
                     return pullWifiBytesTransfer(atomTag, data);
-                case StatsLog.WIFI_BYTES_TRANSFER_BY_FG_BG:
+                case FrameworkStatsLog.WIFI_BYTES_TRANSFER_BY_FG_BG:
                     return pullWifiBytesTransferBackground(atomTag, data);
-                case StatsLog.MOBILE_BYTES_TRANSFER:
+                case FrameworkStatsLog.MOBILE_BYTES_TRANSFER:
                     return pullMobileBytesTransfer(atomTag, data);
-                case StatsLog.MOBILE_BYTES_TRANSFER_BY_FG_BG:
+                case FrameworkStatsLog.MOBILE_BYTES_TRANSFER_BY_FG_BG:
                     return pullMobileBytesTransferBackground(atomTag, data);
-                case StatsLog.BLUETOOTH_BYTES_TRANSFER:
+                case FrameworkStatsLog.BLUETOOTH_BYTES_TRANSFER:
                     return pullBluetoothBytesTransfer(atomTag, data);
-                case StatsLog.KERNEL_WAKELOCK:
+                case FrameworkStatsLog.KERNEL_WAKELOCK:
                     return pullKernelWakelock(atomTag, data);
-                case StatsLog.CPU_TIME_PER_FREQ:
+                case FrameworkStatsLog.CPU_TIME_PER_FREQ:
                     return pullCpuTimePerFreq(atomTag, data);
-                case StatsLog.CPU_TIME_PER_UID:
+                case FrameworkStatsLog.CPU_TIME_PER_UID:
                     return pullCpuTimePerUid(atomTag, data);
-                case StatsLog.CPU_TIME_PER_UID_FREQ:
+                case FrameworkStatsLog.CPU_TIME_PER_UID_FREQ:
                     return pullCpuTimeperUidFreq(atomTag, data);
-                case StatsLog.CPU_ACTIVE_TIME:
+                case FrameworkStatsLog.CPU_ACTIVE_TIME:
                     return pullCpuActiveTime(atomTag, data);
-                case StatsLog.CPU_CLUSTER_TIME:
+                case FrameworkStatsLog.CPU_CLUSTER_TIME:
                     return pullCpuClusterTime(atomTag, data);
-                case StatsLog.WIFI_ACTIVITY_INFO:
+                case FrameworkStatsLog.WIFI_ACTIVITY_INFO:
                     return pullWifiActivityInfo(atomTag, data);
-                case StatsLog.MODEM_ACTIVITY_INFO:
+                case FrameworkStatsLog.MODEM_ACTIVITY_INFO:
                     return pullModemActivityInfo(atomTag, data);
-                case StatsLog.BLUETOOTH_ACTIVITY_INFO:
+                case FrameworkStatsLog.BLUETOOTH_ACTIVITY_INFO:
                     return pullBluetoothActivityInfo(atomTag, data);
-                case StatsLog.SYSTEM_ELAPSED_REALTIME:
+                case FrameworkStatsLog.SYSTEM_ELAPSED_REALTIME:
                     return pullSystemElapsedRealtime(atomTag, data);
-                case StatsLog.SYSTEM_UPTIME:
+                case FrameworkStatsLog.SYSTEM_UPTIME:
                     return pullSystemUptime(atomTag, data);
-                case StatsLog.PROCESS_MEMORY_STATE:
+                case FrameworkStatsLog.PROCESS_MEMORY_STATE:
                     return pullProcessMemoryState(atomTag, data);
-                case StatsLog.PROCESS_MEMORY_HIGH_WATER_MARK:
+                case FrameworkStatsLog.PROCESS_MEMORY_HIGH_WATER_MARK:
                     return pullProcessMemoryHighWaterMark(atomTag, data);
-                case StatsLog.PROCESS_MEMORY_SNAPSHOT:
+                case FrameworkStatsLog.PROCESS_MEMORY_SNAPSHOT:
                     return pullProcessMemorySnapshot(atomTag, data);
-                case StatsLog.SYSTEM_ION_HEAP_SIZE:
+                case FrameworkStatsLog.SYSTEM_ION_HEAP_SIZE:
                     return pullSystemIonHeapSize(atomTag, data);
-                case StatsLog.ION_HEAP_SIZE:
+                case FrameworkStatsLog.ION_HEAP_SIZE:
                     return pullIonHeapSize(atomTag, data);
-                case StatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE:
+                case FrameworkStatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE:
                     return pullProcessSystemIonHeapSize(atomTag, data);
-                case StatsLog.TEMPERATURE:
+                case FrameworkStatsLog.TEMPERATURE:
                     return pullTemperature(atomTag, data);
-                case StatsLog.COOLING_DEVICE:
+                case FrameworkStatsLog.COOLING_DEVICE:
                     return pullCooldownDevice(atomTag, data);
-                case StatsLog.BINDER_CALLS:
+                case FrameworkStatsLog.BINDER_CALLS:
                     return pullBinderCallsStats(atomTag, data);
-                case StatsLog.BINDER_CALLS_EXCEPTIONS:
+                case FrameworkStatsLog.BINDER_CALLS_EXCEPTIONS:
                     return pullBinderCallsStatsExceptions(atomTag, data);
-                case StatsLog.LOOPER_STATS:
+                case FrameworkStatsLog.LOOPER_STATS:
                     return pullLooperStats(atomTag, data);
-                case StatsLog.DISK_STATS:
+                case FrameworkStatsLog.DISK_STATS:
                     return pullDiskStats(atomTag, data);
-                case StatsLog.DIRECTORY_USAGE:
+                case FrameworkStatsLog.DIRECTORY_USAGE:
                     return pullDirectoryUsage(atomTag, data);
-                case StatsLog.APP_SIZE:
+                case FrameworkStatsLog.APP_SIZE:
                     return pullAppSize(atomTag, data);
-                case StatsLog.CATEGORY_SIZE:
+                case FrameworkStatsLog.CATEGORY_SIZE:
                     return pullCategorySize(atomTag, data);
-                case StatsLog.NUM_FINGERPRINTS_ENROLLED:
+                case FrameworkStatsLog.NUM_FINGERPRINTS_ENROLLED:
                     return pullNumBiometricsEnrolled(
                             BiometricsProtoEnums.MODALITY_FINGERPRINT, atomTag, data);
-                case StatsLog.NUM_FACES_ENROLLED:
+                case FrameworkStatsLog.NUM_FACES_ENROLLED:
                     return pullNumBiometricsEnrolled(
                             BiometricsProtoEnums.MODALITY_FACE, atomTag, data);
-                case StatsLog.PROC_STATS:
+                case FrameworkStatsLog.PROC_STATS:
                     return pullProcStats(ProcessStats.REPORT_ALL, atomTag, data);
-                case StatsLog.PROC_STATS_PKG_PROC:
+                case FrameworkStatsLog.PROC_STATS_PKG_PROC:
                     return pullProcStats(ProcessStats.REPORT_PKG_PROC_STATS, atomTag, data);
-                case StatsLog.DISK_IO:
+                case FrameworkStatsLog.DISK_IO:
                     return pullDiskIO(atomTag, data);
-                case StatsLog.POWER_PROFILE:
+                case FrameworkStatsLog.POWER_PROFILE:
                     return pullPowerProfile(atomTag, data);
-                case StatsLog.PROCESS_CPU_TIME:
+                case FrameworkStatsLog.PROCESS_CPU_TIME:
                     return pullProcessCpuTime(atomTag, data);
-                case StatsLog.CPU_TIME_PER_THREAD_FREQ:
+                case FrameworkStatsLog.CPU_TIME_PER_THREAD_FREQ:
                     return pullCpuTimePerThreadFreq(atomTag, data);
-                case StatsLog.DEVICE_CALCULATED_POWER_USE:
+                case FrameworkStatsLog.DEVICE_CALCULATED_POWER_USE:
                     return pullDeviceCalculatedPowerUse(atomTag, data);
-                case StatsLog.DEVICE_CALCULATED_POWER_BLAME_UID:
+                case FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_UID:
                     return pullDeviceCalculatedPowerBlameUid(atomTag, data);
-                case StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER:
+                case FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER:
                     return pullDeviceCalculatedPowerBlameOther(atomTag, data);
-                case StatsLog.DEBUG_ELAPSED_CLOCK:
+                case FrameworkStatsLog.DEBUG_ELAPSED_CLOCK:
                     return pullDebugElapsedClock(atomTag, data);
-                case StatsLog.DEBUG_FAILING_ELAPSED_CLOCK:
+                case FrameworkStatsLog.DEBUG_FAILING_ELAPSED_CLOCK:
                     return pullDebugFailingElapsedClock(atomTag, data);
-                case StatsLog.BUILD_INFORMATION:
+                case FrameworkStatsLog.BUILD_INFORMATION:
                     return pullBuildInformation(atomTag, data);
-                case StatsLog.ROLE_HOLDER:
+                case FrameworkStatsLog.ROLE_HOLDER:
                     return pullRoleHolder(atomTag, data);
-                case StatsLog.DANGEROUS_PERMISSION_STATE:
+                case FrameworkStatsLog.DANGEROUS_PERMISSION_STATE:
                     return pullDangerousPermissionState(atomTag, data);
-                case StatsLog.TIME_ZONE_DATA_INFO:
+                case FrameworkStatsLog.TIME_ZONE_DATA_INFO:
                     return pullTimeZoneDataInfo(atomTag, data);
-                case StatsLog.EXTERNAL_STORAGE_INFO:
+                case FrameworkStatsLog.EXTERNAL_STORAGE_INFO:
                     return pullExternalStorageInfo(atomTag, data);
-                case StatsLog.APPS_ON_EXTERNAL_STORAGE_INFO:
+                case FrameworkStatsLog.APPS_ON_EXTERNAL_STORAGE_INFO:
                     return pullAppsOnExternalStorageInfo(atomTag, data);
-                case StatsLog.FACE_SETTINGS:
+                case FrameworkStatsLog.FACE_SETTINGS:
                     return pullFaceSettings(atomTag, data);
-                case StatsLog.APP_OPS:
+                case FrameworkStatsLog.APP_OPS:
                     return pullAppOps(atomTag, data);
-                case StatsLog.NOTIFICATION_REMOTE_VIEWS:
+                case FrameworkStatsLog.NOTIFICATION_REMOTE_VIEWS:
                     return pullNotificationRemoteViews(atomTag, data);
-                case StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED:
+                case FrameworkStatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED:
                     return pullDangerousPermissionState(atomTag, data);
+                case FrameworkStatsLog.BATTERY_LEVEL:
+                case FrameworkStatsLog.REMAINING_BATTERY_CAPACITY:
+                case FrameworkStatsLog.FULL_BATTERY_CAPACITY:
+                case FrameworkStatsLog.BATTERY_VOLTAGE:
+                case FrameworkStatsLog.BATTERY_CYCLE_COUNT:
+                    return pullHealthHal(atomTag, data);
                 default:
                     throw new UnsupportedOperationException("Unknown tagId=" + atomTag);
             }
@@ -389,6 +401,7 @@
         super.onBootPhase(phase);
         if (phase == PHASE_SYSTEM_SERVICES_READY) {
             BackgroundThread.getHandler().post(() -> {
+                nativeInit();
                 initializePullersState();
                 registerAllPullers();
                 registerEventListeners();
@@ -438,6 +451,14 @@
 
         // Used by PROC_STATS and PROC_STATS_PKG_PROC atoms
         mBaseDir.mkdirs();
+
+        // Initialize HealthService
+        mHealthService = new BatteryService.HealthServiceWrapper();
+        try {
+            mHealthService.init();
+        } catch (RemoteException e) {
+            Slog.e(TAG, "failed to initialize healthHalWrapper");
+        }
     }
 
     void registerEventListeners() {
@@ -519,6 +540,11 @@
         registerNotificationRemoteViews();
         registerDangerousPermissionState();
         registerDangerousPermissionStateSampled();
+        registerBatteryLevel();
+        registerRemainingBatteryCapacity();
+        registerFullBatteryCapacity();
+        registerBatteryVoltage();
+        registerBatteryCycleCount();
     }
 
     private INetworkStatsService getINetworkStatsService() {
@@ -633,7 +659,7 @@
     }
 
     private void registerWifiBytesTransfer() {
-        int tagId = StatsLog.WIFI_BYTES_TRANSFER;
+        int tagId = FrameworkStatsLog.WIFI_BYTES_TRANSFER;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2, 3, 4, 5})
                 .build();
@@ -725,7 +751,7 @@
     }
 
     private void registerWifiBytesTransferBackground() {
-        int tagId = StatsLog.WIFI_BYTES_TRANSFER_BY_FG_BG;
+        int tagId = FrameworkStatsLog.WIFI_BYTES_TRANSFER_BY_FG_BG;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {3, 4, 5, 6})
                 .build();
@@ -763,7 +789,7 @@
     }
 
     private void registerMobileBytesTransfer() {
-        int tagId = StatsLog.MOBILE_BYTES_TRANSFER;
+        int tagId = FrameworkStatsLog.MOBILE_BYTES_TRANSFER;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2, 3, 4, 5})
                 .build();
@@ -801,7 +827,7 @@
     }
 
     private void registerMobileBytesTransferBackground() {
-        int tagId = StatsLog.MOBILE_BYTES_TRANSFER_BY_FG_BG;
+        int tagId = FrameworkStatsLog.MOBILE_BYTES_TRANSFER_BY_FG_BG;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {3, 4, 5, 6})
                 .build();
@@ -839,7 +865,7 @@
     }
 
     private void registerBluetoothBytesTransfer() {
-        int tagId = StatsLog.BLUETOOTH_BYTES_TRANSFER;
+        int tagId = FrameworkStatsLog.BLUETOOTH_BYTES_TRANSFER;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2, 3})
                 .build();
@@ -873,7 +899,6 @@
                     return data;
                 }
             }
-            Slog.e(TAG, "no controller energy info supplied for " + receiver.getName());
         } catch (TimeoutException e) {
             Slog.w(TAG, "timeout reading " + receiver.getName() + " stats");
         }
@@ -912,7 +937,7 @@
     }
 
     private void registerKernelWakelock() {
-        int tagId = StatsLog.KERNEL_WAKELOCK;
+        int tagId = FrameworkStatsLog.KERNEL_WAKELOCK;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 /* PullAtomMetadata */ null,
@@ -940,7 +965,7 @@
     }
 
     private void registerCpuTimePerFreq() {
-        int tagId = StatsLog.CPU_TIME_PER_FREQ;
+        int tagId = FrameworkStatsLog.CPU_TIME_PER_FREQ;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {3})
                 .build();
@@ -971,7 +996,7 @@
     }
 
     private void registerCpuTimePerUid() {
-        int tagId = StatsLog.CPU_TIME_PER_UID;
+        int tagId = FrameworkStatsLog.CPU_TIME_PER_UID;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2, 3})
                 .build();
@@ -1000,7 +1025,7 @@
     private void registerCpuTimePerUidFreq() {
         // the throttling is 3sec, handled in
         // frameworks/base/core/java/com/android/internal/os/KernelCpuProcReader
-        int tagId = StatsLog.CPU_TIME_PER_UID_FREQ;
+        int tagId = FrameworkStatsLog.CPU_TIME_PER_UID_FREQ;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {4})
                 .build();
@@ -1032,7 +1057,7 @@
     private void registerCpuActiveTime() {
         // the throttling is 3sec, handled in
         // frameworks/base/core/java/com/android/internal/os/KernelCpuProcReader
-        int tagId = StatsLog.CPU_ACTIVE_TIME;
+        int tagId = FrameworkStatsLog.CPU_ACTIVE_TIME;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2})
                 .build();
@@ -1059,7 +1084,7 @@
     private void registerCpuClusterTime() {
         // the throttling is 3sec, handled in
         // frameworks/base/core/java/com/android/internal/os/KernelCpuProcReader
-        int tagId = StatsLog.CPU_CLUSTER_TIME;
+        int tagId = FrameworkStatsLog.CPU_CLUSTER_TIME;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {3})
                 .build();
@@ -1087,7 +1112,7 @@
     }
 
     private void registerWifiActivityInfo() {
-        int tagId = StatsLog.WIFI_ACTIVITY_INFO;
+        int tagId = FrameworkStatsLog.WIFI_ACTIVITY_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1139,7 +1164,7 @@
     }
 
     private void registerModemActivityInfo() {
-        int tagId = StatsLog.MODEM_ACTIVITY_INFO;
+        int tagId = FrameworkStatsLog.MODEM_ACTIVITY_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1177,7 +1202,7 @@
     }
 
     private void registerBluetoothActivityInfo() {
-        int tagId = StatsLog.BLUETOOTH_ACTIVITY_INFO;
+        int tagId = FrameworkStatsLog.BLUETOOTH_ACTIVITY_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 /* metadata */ null,
@@ -1205,7 +1230,7 @@
     }
 
     private void registerSystemElapsedRealtime() {
-        int tagId = StatsLog.SYSTEM_ELAPSED_REALTIME;
+        int tagId = FrameworkStatsLog.SYSTEM_ELAPSED_REALTIME;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setCoolDownNs(NS_PER_SEC)
                 .setTimeoutNs(NS_PER_SEC / 2)
@@ -1228,7 +1253,7 @@
     }
 
     private void registerSystemUptime() {
-        int tagId = StatsLog.SYSTEM_UPTIME;
+        int tagId = FrameworkStatsLog.SYSTEM_UPTIME;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1247,7 +1272,7 @@
     }
 
     private void registerProcessMemoryState() {
-        int tagId = StatsLog.PROCESS_MEMORY_STATE;
+        int tagId = FrameworkStatsLog.PROCESS_MEMORY_STATE;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {4, 5, 6, 7, 8})
                 .build();
@@ -1293,7 +1318,7 @@
     }
 
     private void registerProcessMemoryHighWaterMark() {
-        int tagId = StatsLog.PROCESS_MEMORY_HIGH_WATER_MARK;
+        int tagId = FrameworkStatsLog.PROCESS_MEMORY_HIGH_WATER_MARK;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1346,7 +1371,7 @@
     }
 
     private void registerProcessMemorySnapshot() {
-        int tagId = StatsLog.PROCESS_MEMORY_SNAPSHOT;
+        int tagId = FrameworkStatsLog.PROCESS_MEMORY_SNAPSHOT;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1406,7 +1431,7 @@
     }
 
     private void registerSystemIonHeapSize() {
-        int tagId = StatsLog.SYSTEM_ION_HEAP_SIZE;
+        int tagId = FrameworkStatsLog.SYSTEM_ION_HEAP_SIZE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1426,7 +1451,7 @@
     }
 
     private void registerIonHeapSize() {
-        int tagId = StatsLog.ION_HEAP_SIZE;
+        int tagId = FrameworkStatsLog.ION_HEAP_SIZE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 /* PullAtomMetadata */ null,
@@ -1446,7 +1471,7 @@
     }
 
     private void registerProcessSystemIonHeapSize() {
-        int tagId = StatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE;
+        int tagId = FrameworkStatsLog.PROCESS_SYSTEM_ION_HEAP_SIZE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1472,7 +1497,7 @@
     }
 
     private void registerTemperature() {
-        int tagId = StatsLog.TEMPERATURE;
+        int tagId = FrameworkStatsLog.TEMPERATURE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1510,7 +1535,7 @@
     }
 
     private void registerCoolingDevice() {
-        int tagId = StatsLog.COOLING_DEVICE;
+        int tagId = FrameworkStatsLog.COOLING_DEVICE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1547,7 +1572,7 @@
     }
 
     private void registerBinderCallsStats() {
-        int tagId = StatsLog.BINDER_CALLS;
+        int tagId = FrameworkStatsLog.BINDER_CALLS;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {4, 5, 6, 8, 12})
                 .build();
@@ -1593,7 +1618,7 @@
     }
 
     private void registerBinderCallsStatsExceptions() {
-        int tagId = StatsLog.BINDER_CALLS_EXCEPTIONS;
+        int tagId = FrameworkStatsLog.BINDER_CALLS_EXCEPTIONS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1625,7 +1650,7 @@
     }
 
     private void registerLooperStats() {
-        int tagId = StatsLog.LOOPER_STATS;
+        int tagId = FrameworkStatsLog.LOOPER_STATS;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {5, 6, 7, 8, 9})
                 .build();
@@ -1670,7 +1695,7 @@
     }
 
     private void registerDiskStats() {
-        int tagId = StatsLog.DISK_STATS;
+        int tagId = FrameworkStatsLog.DISK_STATS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1736,7 +1761,7 @@
     }
 
     private void registerDirectoryUsage() {
-        int tagId = StatsLog.DIRECTORY_USAGE;
+        int tagId = FrameworkStatsLog.DIRECTORY_USAGE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1752,7 +1777,7 @@
 
         StatsEvent e = StatsEvent.newBuilder()
                 .setAtomId(atomTag)
-                .writeInt(StatsLog.DIRECTORY_USAGE__DIRECTORY__DATA)
+                .writeInt(FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__DATA)
                 .writeLong(statFsData.getAvailableBytes())
                 .writeLong(statFsData.getTotalBytes())
                 .build();
@@ -1760,7 +1785,7 @@
 
         e = StatsEvent.newBuilder()
                 .setAtomId(atomTag)
-                .writeInt(StatsLog.DIRECTORY_USAGE__DIRECTORY__CACHE)
+                .writeInt(FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__CACHE)
                 .writeLong(statFsCache.getAvailableBytes())
                 .writeLong(statFsCache.getTotalBytes())
                 .build();
@@ -1768,7 +1793,7 @@
 
         e = StatsEvent.newBuilder()
                 .setAtomId(atomTag)
-                .writeInt(StatsLog.DIRECTORY_USAGE__DIRECTORY__SYSTEM)
+                .writeInt(FrameworkStatsLog.DIRECTORY_USAGE__DIRECTORY__SYSTEM)
                 .writeLong(statFsSystem.getAvailableBytes())
                 .writeLong(statFsSystem.getTotalBytes())
                 .build();
@@ -1777,7 +1802,7 @@
     }
 
     private void registerAppSize() {
-        int tagId = StatsLog.APP_SIZE;
+        int tagId = FrameworkStatsLog.APP_SIZE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1821,7 +1846,7 @@
     }
 
     private void registerCategorySize() {
-        int tagId = StatsLog.CATEGORY_SIZE;
+        int tagId = FrameworkStatsLog.CATEGORY_SIZE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1839,7 +1864,7 @@
 
             StatsEvent e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__APP_SIZE)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__APP_SIZE)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.APP_SIZE_AGG_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1848,7 +1873,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__APP_DATA_SIZE)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__APP_DATA_SIZE)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.APP_DATA_SIZE_AGG_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1857,7 +1882,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__APP_CACHE_SIZE)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__APP_CACHE_SIZE)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.APP_CACHE_AGG_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1866,7 +1891,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__PHOTOS)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__PHOTOS)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.PHOTOS_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1875,7 +1900,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__VIDEOS)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__VIDEOS)
                     .writeLong(
                             json.optLong(DiskStatsFileLogger.VIDEOS_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1884,7 +1909,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__AUDIO)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__AUDIO)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.AUDIO_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1893,7 +1918,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__DOWNLOADS)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__DOWNLOADS)
                     .writeLong(
                             json.optLong(DiskStatsFileLogger.DOWNLOADS_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1901,7 +1926,8 @@
             pulledData.add(e);
 
             e = StatsEvent.newBuilder()
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__SYSTEM)
+                    .setAtomId(atomTag)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__SYSTEM)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.SYSTEM_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1910,7 +1936,7 @@
 
             e = StatsEvent.newBuilder()
                     .setAtomId(atomTag)
-                    .writeInt(StatsLog.CATEGORY_SIZE__CATEGORY__OTHER)
+                    .writeInt(FrameworkStatsLog.CATEGORY_SIZE__CATEGORY__OTHER)
                     .writeLong(json.optLong(
                             DiskStatsFileLogger.MISC_KEY, /* fallback */ -1L))
                     .writeLong(cacheTime)
@@ -1924,7 +1950,7 @@
     }
 
     private void registerNumFingerprintsEnrolled() {
-        int tagId = StatsLog.NUM_FINGERPRINTS_ENROLLED;
+        int tagId = FrameworkStatsLog.NUM_FINGERPRINTS_ENROLLED;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1934,7 +1960,7 @@
     }
 
     private void registerNumFacesEnrolled() {
-        int tagId = StatsLog.NUM_FACES_ENROLLED;
+        int tagId = FrameworkStatsLog.NUM_FACES_ENROLLED;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -1992,7 +2018,7 @@
     }
 
     private void registerProcStats() {
-        int tagId = StatsLog.PROC_STATS;
+        int tagId = FrameworkStatsLog.PROC_STATS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2002,7 +2028,7 @@
     }
 
     private void registerProcStatsPkgProc() {
-        int tagId = StatsLog.PROC_STATS_PKG_PROC;
+        int tagId = FrameworkStatsLog.PROC_STATS_PKG_PROC;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2071,7 +2097,7 @@
     }
 
     private void registerDiskIO() {
-        int tagId = StatsLog.DISK_IO;
+        int tagId = FrameworkStatsLog.DISK_IO;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {2, 3, 4, 5, 6, 7, 8, 9, 10, 11})
                 .setCoolDownNs(3 * NS_PER_SEC)
@@ -2108,7 +2134,7 @@
     }
 
     private void registerPowerProfile() {
-        int tagId = StatsLog.POWER_PROFILE;
+        int tagId = FrameworkStatsLog.POWER_PROFILE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 /* PullAtomMetadata */ null,
@@ -2131,7 +2157,7 @@
     }
 
     private void registerProcessCpuTime() {
-        int tagId = StatsLog.PROCESS_CPU_TIME;
+        int tagId = FrameworkStatsLog.PROCESS_CPU_TIME;
         // Min cool-down is 5 sec, in line with what ActivityManagerService uses.
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setCoolDownNs(5 * NS_PER_SEC)
@@ -2167,7 +2193,7 @@
     }
 
     private void registerCpuTimePerThreadFreq() {
-        int tagId = StatsLog.CPU_TIME_PER_THREAD_FREQ;
+        int tagId = FrameworkStatsLog.CPU_TIME_PER_THREAD_FREQ;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {7, 9, 11, 13, 15, 17, 19, 21})
                 .build();
@@ -2263,7 +2289,7 @@
     }
 
     private void registerDeviceCalculatedPowerUse() {
-        int tagId = StatsLog.DEVICE_CALCULATED_POWER_USE;
+        int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_USE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2283,7 +2309,7 @@
     }
 
     private void registerDeviceCalculatedPowerBlameUid() {
-        int tagId = StatsLog.DEVICE_CALCULATED_POWER_BLAME_UID;
+        int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_UID;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2313,7 +2339,7 @@
     }
 
     private void registerDeviceCalculatedPowerBlameOther() {
-        int tagId = StatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER;
+        int tagId = FrameworkStatsLog.DEVICE_CALCULATED_POWER_BLAME_OTHER;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2346,7 +2372,7 @@
     }
 
     private void registerDebugElapsedClock() {
-        int tagId = StatsLog.DEBUG_ELAPSED_CLOCK;
+        int tagId = FrameworkStatsLog.DEBUG_ELAPSED_CLOCK;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {1, 2, 3, 4})
                 .build();
@@ -2397,7 +2423,7 @@
     }
 
     private void registerDebugFailingElapsedClock() {
-        int tagId = StatsLog.DEBUG_FAILING_ELAPSED_CLOCK;
+        int tagId = FrameworkStatsLog.DEBUG_FAILING_ELAPSED_CLOCK;
         PullAtomMetadata metadata = new PullAtomMetadata.Builder()
                 .setAdditiveFields(new int[] {1, 2, 3, 4})
                 .build();
@@ -2438,7 +2464,7 @@
     }
 
     private void registerBuildInformation() {
-        int tagId = StatsLog.BUILD_INFORMATION;
+        int tagId = FrameworkStatsLog.BUILD_INFORMATION;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2454,7 +2480,7 @@
                 .writeString(Build.BRAND)
                 .writeString(Build.PRODUCT)
                 .writeString(Build.DEVICE)
-                .writeString(Build.VERSION.RELEASE)
+                .writeString(Build.VERSION.RELEASE_OR_CODENAME)
                 .writeString(Build.ID)
                 .writeString(Build.VERSION.INCREMENTAL)
                 .writeString(Build.TYPE)
@@ -2465,7 +2491,7 @@
     }
 
     private void registerRoleHolder() {
-        int tagId = StatsLog.ROLE_HOLDER;
+        int tagId = FrameworkStatsLog.ROLE_HOLDER;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2523,7 +2549,7 @@
     }
 
     private void registerDangerousPermissionState() {
-        int tagId = StatsLog.DANGEROUS_PERMISSION_STATE;
+        int tagId = FrameworkStatsLog.DANGEROUS_PERMISSION_STATE;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2561,7 +2587,7 @@
                     }
                     reportedUids.add(pkg.applicationInfo.uid);
 
-                    if (atomTag == StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED
+                    if (atomTag == FrameworkStatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED
                             && ThreadLocalRandom.current().nextFloat() > 0.01f) {
                         continue;
                     }
@@ -2588,7 +2614,7 @@
                         e.setAtomId(atomTag);
                         e.writeString(permName);
                         e.writeInt(pkg.applicationInfo.uid);
-                        if (atomTag == StatsLog.DANGEROUS_PERMISSION_STATE) {
+                        if (atomTag == FrameworkStatsLog.DANGEROUS_PERMISSION_STATE) {
                             e.writeString("");
                         }
                         e.writeBoolean((pkg.requestedPermissionsFlags[permNum]
@@ -2609,7 +2635,7 @@
     }
 
     private void registerTimeZoneDataInfo() {
-        int tagId = StatsLog.TIME_ZONE_DATA_INFO;
+        int tagId = FrameworkStatsLog.TIME_ZONE_DATA_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2636,7 +2662,7 @@
     }
 
     private void registerExternalStorageInfo() {
-        int tagId = StatsLog.EXTERNAL_STORAGE_INFO;
+        int tagId = FrameworkStatsLog.EXTERNAL_STORAGE_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2656,11 +2682,11 @@
             final DiskInfo diskInfo = vol.getDisk();
             if (diskInfo != null && envState.equals(Environment.MEDIA_MOUNTED)) {
                 // Get the type of the volume, if it is adoptable or portable.
-                int volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__OTHER;
+                int volumeType = FrameworkStatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__OTHER;
                 if (vol.getType() == TYPE_PUBLIC) {
-                    volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PUBLIC;
+                    volumeType = FrameworkStatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PUBLIC;
                 } else if (vol.getType() == TYPE_PRIVATE) {
-                    volumeType = StatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PRIVATE;
+                    volumeType = FrameworkStatsLog.EXTERNAL_STORAGE_INFO__VOLUME_TYPE__PRIVATE;
                 }
 
                 // Get the type of external storage inserted in the device (sd cards, usb, etc.)
@@ -2686,7 +2712,7 @@
     }
 
     private void registerAppsOnExternalStorageInfo() {
-        int tagId = StatsLog.APPS_ON_EXTERNAL_STORAGE_INFO;
+        int tagId = FrameworkStatsLog.APPS_ON_EXTERNAL_STORAGE_INFO;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2742,7 +2768,7 @@
     }
 
     private void registerFaceSettings() {
-        int tagId = StatsLog.FACE_SETTINGS;
+        int tagId = FrameworkStatsLog.FACE_SETTINGS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2796,7 +2822,7 @@
     }
 
     private void registerAppOps() {
-        int tagId = StatsLog.APP_OPS;
+        int tagId = FrameworkStatsLog.APP_OPS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2907,7 +2933,7 @@
     }
 
     private void registerNotificationRemoteViews() {
-        int tagId = StatsLog.NOTIFICATION_REMOTE_VIEWS;
+        int tagId = FrameworkStatsLog.NOTIFICATION_REMOTE_VIEWS;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2951,7 +2977,7 @@
     }
 
     private void registerDangerousPermissionStateSampled() {
-        int tagId = StatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED;
+        int tagId = FrameworkStatsLog.DANGEROUS_PERMISSION_STATE_SAMPLED;
         mStatsManager.registerPullAtomCallback(
                 tagId,
                 null, // use default PullAtomMetadata values
@@ -2960,13 +2986,102 @@
         );
     }
 
+    private void registerBatteryLevel() {
+        int tagId = FrameworkStatsLog.BATTERY_LEVEL;
+        mStatsManager.registerPullAtomCallback(
+                tagId,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mStatsCallbackImpl
+        );
+    }
+
+    private void registerRemainingBatteryCapacity() {
+        int tagId = FrameworkStatsLog.REMAINING_BATTERY_CAPACITY;
+        mStatsManager.registerPullAtomCallback(
+                tagId,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mStatsCallbackImpl
+        );
+    }
+
+    private void registerFullBatteryCapacity() {
+        int tagId = FrameworkStatsLog.FULL_BATTERY_CAPACITY;
+        mStatsManager.registerPullAtomCallback(
+                tagId,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mStatsCallbackImpl
+        );
+    }
+
+    private void registerBatteryVoltage() {
+        int tagId = FrameworkStatsLog.BATTERY_VOLTAGE;
+        mStatsManager.registerPullAtomCallback(
+                tagId,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mStatsCallbackImpl
+        );
+    }
+
+    private void registerBatteryCycleCount() {
+        int tagId = FrameworkStatsLog.BATTERY_CYCLE_COUNT;
+        mStatsManager.registerPullAtomCallback(
+                tagId,
+                null, // use default PullAtomMetadata values
+                BackgroundThread.getExecutor(),
+                mStatsCallbackImpl
+        );
+    }
+
+    int pullHealthHal(int atomTag, List<StatsEvent> pulledData) {
+        IHealth healthService = mHealthService.getLastService();
+        if (healthService == null) {
+            return StatsManager.PULL_SKIP;
+        }
+        try {
+            healthService.getHealthInfo((result, value) -> {
+                int pulledValue;
+                switch(atomTag) {
+                    case FrameworkStatsLog.BATTERY_LEVEL:
+                        pulledValue = value.legacy.batteryLevel;
+                        break;
+                    case FrameworkStatsLog.REMAINING_BATTERY_CAPACITY:
+                        pulledValue = value.legacy.batteryChargeCounter;
+                        break;
+                    case FrameworkStatsLog.FULL_BATTERY_CAPACITY:
+                        pulledValue = value.legacy.batteryFullCharge;
+                        break;
+                    case FrameworkStatsLog.BATTERY_VOLTAGE:
+                        pulledValue = value.legacy.batteryVoltage;
+                        break;
+                    case FrameworkStatsLog.BATTERY_CYCLE_COUNT:
+                        pulledValue = value.legacy.batteryCycleCount;
+                        break;
+                    default:
+                        throw new IllegalStateException("Invalid atomTag in healthHal puller: "
+                                + atomTag);
+                }
+                StatsEvent e = StatsEvent.newBuilder()
+                        .setAtomId(atomTag)
+                        .writeInt(pulledValue)
+                        .build();
+                pulledData.add(e);
+            });
+        } catch (RemoteException | IllegalStateException e) {
+            return StatsManager.PULL_SKIP;
+        }
+        return StatsManager.PULL_SUCCESS;
+    }
 
     // Thermal event received from vendor thermal management subsystem
     private static final class ThermalEventListener extends IThermalEventListener.Stub {
         @Override
         public void notifyThrottling(Temperature temp) {
-            StatsLog.write(StatsLog.THERMAL_THROTTLING_SEVERITY_STATE_CHANGED, temp.getType(),
-                    temp.getName(), (int) (temp.getValue() * 10), temp.getStatus());
+            FrameworkStatsLog.write(FrameworkStatsLog.THERMAL_THROTTLING_SEVERITY_STATE_CHANGED,
+                    temp.getType(), temp.getName(), (int) (temp.getValue() * 10), temp.getStatus());
         }
     }
 
@@ -2974,14 +3089,14 @@
             ConnectivityManager.NetworkCallback {
         @Override
         public void onAvailable(Network network) {
-            StatsLog.write(StatsLog.CONNECTIVITY_STATE_CHANGED, network.netId,
-                    StatsLog.CONNECTIVITY_STATE_CHANGED__STATE__CONNECTED);
+            FrameworkStatsLog.write(FrameworkStatsLog.CONNECTIVITY_STATE_CHANGED, network.netId,
+                    FrameworkStatsLog.CONNECTIVITY_STATE_CHANGED__STATE__CONNECTED);
         }
 
         @Override
         public void onLost(Network network) {
-            StatsLog.write(StatsLog.CONNECTIVITY_STATE_CHANGED, network.netId,
-                    StatsLog.CONNECTIVITY_STATE_CHANGED__STATE__DISCONNECTED);
+            FrameworkStatsLog.write(FrameworkStatsLog.CONNECTIVITY_STATE_CHANGED, network.netId,
+                    FrameworkStatsLog.CONNECTIVITY_STATE_CHANGED__STATE__DISCONNECTED);
         }
     }
 }
diff --git a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
index 2700f9d..734b718 100644
--- a/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
+++ b/services/core/java/com/android/server/storage/DeviceStorageMonitorService.java
@@ -41,11 +41,11 @@
 import android.util.ArrayMap;
 import android.util.DataUnit;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.internal.notification.SystemNotificationChannels;
 import com.android.internal.util.DumpUtils;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.server.EventLogTags;
 import com.android.server.SystemService;
@@ -425,6 +425,7 @@
     void dumpImpl(FileDescriptor fd, PrintWriter _pw, String[] args) {
         final IndentingPrintWriter pw = new IndentingPrintWriter(_pw, "  ");
         if (args == null || args.length == 0 || "-a".equals(args[0])) {
+            final StorageManager storage = getContext().getSystemService(StorageManager.class);
             pw.println("Known volumes:");
             pw.increaseIndent();
             for (int i = 0; i < mStates.size(); i++) {
@@ -439,6 +440,19 @@
                 pw.printPair("level", State.levelToString(state.level));
                 pw.printPair("lastUsableBytes", state.lastUsableBytes);
                 pw.println();
+                for (VolumeInfo vol : storage.getWritablePrivateVolumes()) {
+                    final File file = vol.getPath();
+                    final UUID innerUuid = StorageManager.convert(vol.getFsUuid());
+                    if (Objects.equals(uuid, innerUuid)) {
+                        pw.print("lowBytes=");
+                        pw.print(storage.getStorageLowBytes(file));
+                        pw.print(" fullBytes=");
+                        pw.println(storage.getStorageFullBytes(file));
+                        pw.print("path=");
+                        pw.println(file);
+                        break;
+                    }
+                }
                 pw.decreaseIndent();
             }
             pw.decreaseIndent();
@@ -498,15 +512,15 @@
             notification.flags |= Notification.FLAG_NO_CLEAR;
             mNotifManager.notifyAsUser(uuid.toString(), SystemMessage.NOTE_LOW_STORAGE,
                     notification, UserHandle.ALL);
-            StatsLog.write(StatsLog.LOW_STORAGE_STATE_CHANGED,
+            FrameworkStatsLog.write(FrameworkStatsLog.LOW_STORAGE_STATE_CHANGED,
                     Objects.toString(vol.getDescription()),
-                    StatsLog.LOW_STORAGE_STATE_CHANGED__STATE__ON);
+                    FrameworkStatsLog.LOW_STORAGE_STATE_CHANGED__STATE__ON);
         } else if (State.isLeaving(State.LEVEL_LOW, oldLevel, newLevel)) {
             mNotifManager.cancelAsUser(uuid.toString(), SystemMessage.NOTE_LOW_STORAGE,
                     UserHandle.ALL);
-            StatsLog.write(StatsLog.LOW_STORAGE_STATE_CHANGED,
+            FrameworkStatsLog.write(FrameworkStatsLog.LOW_STORAGE_STATE_CHANGED,
                     Objects.toString(vol.getDescription()),
-                    StatsLog.LOW_STORAGE_STATE_CHANGED__STATE__OFF);
+                    FrameworkStatsLog.LOW_STORAGE_STATE_CHANGED__STATE__OFF);
         }
     }
 
diff --git a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java
index 3dee853..8164526 100644
--- a/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java
+++ b/services/core/java/com/android/server/textclassifier/TextClassificationManagerService.java
@@ -63,6 +63,8 @@
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.ArrayDeque;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 import java.util.Queue;
@@ -132,9 +134,7 @@
             synchronized (mManagerService.mLock) {
                 UserState userState = mManagerService.peekUserStateLocked(userId);
                 if (userState != null) {
-                    if (userState.mConnection != null) {
-                        userState.mConnection.cleanupService();
-                    }
+                    userState.cleanupServiceLocked();
                     mManagerService.mUserStates.remove(userId);
                 }
             }
@@ -147,22 +147,28 @@
     private final Object mLock;
     @GuardedBy("mLock")
     final SparseArray<UserState> mUserStates = new SparseArray<>();
-    @GuardedBy("mLock")
-    private final Map<TextClassificationSessionId, Integer> mSessionUserIds = new ArrayMap<>();
-    @GuardedBy("mLock")
-    private TextClassificationConstants mSettings;
+    private final SessionCache mSessionCache;
+    private final TextClassificationConstants mSettings;
+    @Nullable
+    private final String mDefaultTextClassifierPackage;
+    @Nullable
+    private final String mSystemTextClassifierPackage;
 
     private TextClassificationManagerService(Context context) {
         mContext = Objects.requireNonNull(context);
         mLock = new Object();
+        mSettings = new TextClassificationConstants();
         mSettingsListener = new TextClassifierSettingsListener(mContext);
+        PackageManager packageManager = mContext.getPackageManager();
+        mDefaultTextClassifierPackage = packageManager.getDefaultTextClassifierPackageName();
+        mSystemTextClassifierPackage = packageManager.getSystemTextClassifierPackageName();
+        mSessionCache = new SessionCache(mLock);
     }
 
     private void startListenSettings() {
         mSettingsListener.registerObserver();
     }
 
-
     @Override
     public void onConnectedStateChanged(@ConnectionState int connected) {
     }
@@ -178,6 +184,7 @@
                 request.getUserId(),
                 request.getCallingPackageName(),
                 /* attemptToBind= */ true,
+                request.getUseDefaultTextClassifier(),
                 service -> service.onSuggestSelection(sessionId, request, callback),
                 "onSuggestSelection",
                 callback);
@@ -194,6 +201,7 @@
                 request.getUserId(),
                 request.getCallingPackageName(),
                 /* attemptToBind= */ true,
+                request.getUseDefaultTextClassifier(),
                 service -> service.onClassifyText(sessionId, request, callback),
                 "onClassifyText",
                 callback);
@@ -210,6 +218,7 @@
                 request.getUserId(),
                 request.getCallingPackageName(),
                 /* attemptToBind= */ true,
+                request.getUseDefaultTextClassifier(),
                 service -> service.onGenerateLinks(sessionId, request, callback),
                 "onGenerateLinks",
                 callback);
@@ -223,28 +232,32 @@
 
         handleRequest(
                 event.getUserId(),
-                event.getPackageName(),
+                /* callingPackageName= */ null,
                 /* attemptToBind= */ false,
+                event.getUseDefaultTextClassifier(),
                 service -> service.onSelectionEvent(sessionId, event),
                 "onSelectionEvent",
                 NO_OP_CALLBACK);
     }
+
     @Override
     public void onTextClassifierEvent(
             @Nullable TextClassificationSessionId sessionId,
             TextClassifierEvent event) throws RemoteException {
         Objects.requireNonNull(event);
 
-        final String packageName = event.getEventContext() == null
-                ? null
-                : event.getEventContext().getPackageName();
         final int userId = event.getEventContext() == null
                 ? UserHandle.getCallingUserId()
                 : event.getEventContext().getUserId();
+        final boolean useDefaultTextClassifier =
+                event.getEventContext() != null
+                        ? event.getEventContext().getUseDefaultTextClassifier()
+                        : true;
         handleRequest(
                 userId,
-                packageName,
+                /* callingPackageName= */ null,
                 /* attemptToBind= */ false,
+                useDefaultTextClassifier,
                 service -> service.onTextClassifierEvent(sessionId, event),
                 "onTextClassifierEvent",
                 NO_OP_CALLBACK);
@@ -261,6 +274,7 @@
                 request.getUserId(),
                 request.getCallingPackageName(),
                 /* attemptToBind= */ true,
+                request.getUseDefaultTextClassifier(),
                 service -> service.onDetectLanguage(sessionId, request, callback),
                 "onDetectLanguage",
                 callback);
@@ -277,6 +291,7 @@
                 request.getUserId(),
                 request.getCallingPackageName(),
                 /* attemptToBind= */ true,
+                request.getUseDefaultTextClassifier(),
                 service -> service.onSuggestConversationActions(sessionId, request, callback),
                 "onSuggestConversationActions",
                 callback);
@@ -294,9 +309,10 @@
                 userId,
                 classificationContext.getPackageName(),
                 /* attemptToBind= */ false,
+                classificationContext.getUseDefaultTextClassifier(),
                 service -> {
                     service.onCreateTextClassificationSession(classificationContext, sessionId);
-                    mSessionUserIds.put(sessionId, userId);
+                    mSessionCache.put(sessionId, classificationContext);
                 },
                 "onCreateTextClassificationSession",
                 NO_OP_CALLBACK);
@@ -308,16 +324,23 @@
         Objects.requireNonNull(sessionId);
 
         synchronized (mLock) {
-            final int userId = mSessionUserIds.containsKey(sessionId)
-                    ? mSessionUserIds.get(sessionId)
+            final StrippedTextClassificationContext textClassificationContext =
+                    mSessionCache.get(sessionId);
+            final int userId = textClassificationContext != null
+                    ? textClassificationContext.userId
                     : UserHandle.getCallingUserId();
+            final boolean useDefaultTextClassifier =
+                    textClassificationContext != null
+                            ? textClassificationContext.useDefaultTextClassifier
+                            : true;
             handleRequest(
                     userId,
                     /* callingPackageName= */ null,
                     /* attemptToBind= */ false,
+                    useDefaultTextClassifier,
                     service -> {
                         service.onDestroyTextClassificationSession(sessionId);
-                        mSessionUserIds.remove(sessionId);
+                        mSessionCache.remove(sessionId);
                     },
                     "onDestroyTextClassificationSession",
                     NO_OP_CALLBACK);
@@ -328,7 +351,7 @@
     private UserState getUserStateLocked(int userId) {
         UserState result = mUserStates.get(userId);
         if (result == null) {
-            result = new UserState(userId, mContext, mLock);
+            result = new UserState(userId);
             mUserStates.put(userId, result);
         }
         return result;
@@ -339,6 +362,19 @@
         return mUserStates.get(userId);
     }
 
+    private int resolvePackageToUid(@Nullable String packageName, @UserIdInt int userId) {
+        if (packageName == null) {
+            return Process.INVALID_UID;
+        }
+        final PackageManager pm = mContext.getPackageManager();
+        try {
+            return pm.getPackageUidAsUser(packageName, userId);
+        } catch (PackageManager.NameNotFoundException e) {
+            Slog.e(LOG_TAG, "Could not get the UID for " + packageName);
+        }
+        return Process.INVALID_UID;
+    }
+
     @Override
     protected void dump(FileDescriptor fd, PrintWriter fout, String[] args) {
         if (!DumpUtils.checkDumpPermission(mContext, LOG_TAG, fout)) return;
@@ -353,18 +389,25 @@
 
         pw.printPair("context", mContext);
         pw.println();
+        pw.printPair("defaultTextClassifierPackage", mDefaultTextClassifierPackage);
+        pw.println();
+        pw.printPair("systemTextClassifierPackage", mSystemTextClassifierPackage);
+        pw.println();
         synchronized (mLock) {
             int size = mUserStates.size();
-            pw.print("Number user states: "); pw.println(size);
+            pw.print("Number user states: ");
+            pw.println(size);
             if (size > 0) {
                 for (int i = 0; i < size; i++) {
                     pw.increaseIndent();
                     UserState userState = mUserStates.valueAt(i);
-                    pw.print(i); pw.print(":"); userState.dump(pw); pw.println();
+                    pw.printPair("User", mUserStates.keyAt(i));
+                    pw.println();
+                    userState.dump(pw);
                     pw.decreaseIndent();
                 }
             }
-            pw.println("Number of active sessions: " + mSessionUserIds.size());
+            pw.println("Number of active sessions: " + mSessionCache.size());
         }
     }
 
@@ -372,57 +415,55 @@
             @UserIdInt int userId,
             @Nullable String callingPackageName,
             boolean attemptToBind,
+            boolean useDefaultTextClassifier,
             @NonNull ThrowingConsumer<ITextClassifierService> textClassifierServiceConsumer,
             @NonNull String methodName,
-            @NonNull ITextClassifierCallback callback)
-            throws RemoteException {
+            @NonNull ITextClassifierCallback callback) throws RemoteException {
         Objects.requireNonNull(textClassifierServiceConsumer);
         Objects.requireNonNull(methodName);
         Objects.requireNonNull(callback);
 
-        validateInput(mContext, callingPackageName, userId);
+        try {
+            validateCallingPackage(callingPackageName);
+            validateUser(userId);
+        } catch (Exception e) {
+            throw new RemoteException("Invalid request: " + e.getMessage(), e,
+                    /* enableSuppression */ true, /* writableStackTrace */ true);
+        }
         synchronized (mLock) {
             UserState userState = getUserStateLocked(userId);
-            if (attemptToBind && !userState.bindLocked()) {
+            ServiceState serviceState =
+                    userState.getServiceStateLocked(useDefaultTextClassifier);
+            if (serviceState == null) {
+                Slog.d(LOG_TAG, "No configured system TextClassifierService");
+                callback.onFailure();
+            } else if (attemptToBind && !serviceState.bindLocked()) {
                 Slog.d(LOG_TAG, "Unable to bind TextClassifierService at " + methodName);
                 callback.onFailure();
-            } else if (userState.isBoundLocked()) {
-                if (!userState.checkRequestAcceptedLocked(Binder.getCallingUid(), methodName)) {
+            } else if (serviceState.isBoundLocked()) {
+                if (!serviceState.checkRequestAcceptedLocked(Binder.getCallingUid(), methodName)) {
                     return;
                 }
-                textClassifierServiceConsumer.accept(userState.mService);
+                textClassifierServiceConsumer.accept(serviceState.mService);
             } else {
-                userState.mPendingRequests.add(
+                serviceState.mPendingRequests.add(
                         new PendingRequest(
                                 methodName,
-                                () -> textClassifierServiceConsumer.accept(userState.mService),
+                                () -> textClassifierServiceConsumer.accept(serviceState.mService),
                                 callback::onFailure, callback.asBinder(),
                                 this,
-                                userState,
+                                serviceState,
                                 Binder.getCallingUid()));
             }
         }
     }
 
-    private void unbindServiceIfNecessary() {
-        final ComponentName serviceComponentName =
-                TextClassifierService.getServiceComponentName(mContext);
-        if (serviceComponentName == null) {
-            // It should not occur if we had defined default service names in config.xml
-            Slog.w(LOG_TAG, "No default configured system TextClassifierService.");
-            return;
-        }
+    private void onTextClassifierServicePackageOverrideChanged(String overriddenPackage) {
         synchronized (mLock) {
             final int size = mUserStates.size();
             for (int i = 0; i < size; i++) {
                 UserState userState = mUserStates.valueAt(i);
-                // Only unbind for a new service
-                if (userState.isCurrentlyBoundToComponentLocked(serviceComponentName)) {
-                    return;
-                }
-                if (userState.isBoundLocked()) {
-                    userState.unbindLocked();
-                }
+                userState.onTextClassifierServicePackageOverrideChangedLocked(overriddenPackage);
             }
         }
     }
@@ -430,27 +471,35 @@
     private static final class PendingRequest implements IBinder.DeathRecipient {
 
         private final int mUid;
-        @Nullable private final String mName;
-        @Nullable private final IBinder mBinder;
-        @NonNull private final Runnable mRequest;
-        @Nullable private final Runnable mOnServiceFailure;
+        @Nullable
+        private final String mName;
+        @Nullable
+        private final IBinder mBinder;
+        @NonNull
+        private final Runnable mRequest;
+        @Nullable
+        private final Runnable mOnServiceFailure;
         @GuardedBy("mLock")
-        @NonNull private final UserState mOwningUser;
-        @NonNull private final TextClassificationManagerService mService;
+        @NonNull
+        private final ServiceState mServiceState;
+        @NonNull
+        private final TextClassificationManagerService mService;
 
         /**
          * Initializes a new pending request.
-         * @param request action to perform when the service is bound
+         *
+         * @param request          action to perform when the service is bound
          * @param onServiceFailure action to perform when the service dies or disconnects
-         * @param binder binder to the process that made this pending request
-         * @param service
-         * @param owningUser
+         * @param binder           binder to the process that made this pending request
+         * @parm service           the TCMS instance.
+         * @param serviceState     the service state of the service that will execute the request.
+         * @param uid              the calling uid of the request.
          */
         PendingRequest(@Nullable String name,
                 @NonNull ThrowingRunnable request, @Nullable ThrowingRunnable onServiceFailure,
                 @Nullable IBinder binder,
-                TextClassificationManagerService service,
-                UserState owningUser, int uid) {
+                @NonNull TextClassificationManagerService service,
+                @NonNull ServiceState serviceState, int uid) {
             mName = name;
             mRequest =
                     logOnFailure(Objects.requireNonNull(request), "handling pending request");
@@ -458,7 +507,7 @@
                     logOnFailure(onServiceFailure, "notifying callback of service failure");
             mBinder = binder;
             mService = service;
-            mOwningUser = owningUser;
+            mServiceState = Objects.requireNonNull(serviceState);
             if (mBinder != null) {
                 try {
                     mBinder.linkToDeath(this, 0);
@@ -479,7 +528,7 @@
 
         @GuardedBy("mLock")
         private void removeLocked() {
-            mOwningUser.mPendingRequests.remove(this);
+            mServiceState.mPendingRequests.remove(this);
             if (mBinder != null) {
                 mBinder.unlinkToDeath(this, 0);
             }
@@ -492,59 +541,248 @@
                 e -> Slog.d(LOG_TAG, "Error " + opDesc + ": " + e.getMessage()));
     }
 
-    private static void validateInput(
-            Context context, @Nullable String packageName, @UserIdInt int userId)
-            throws RemoteException {
+    private void validateCallingPackage(@Nullable String callingPackage)
+            throws PackageManager.NameNotFoundException {
+        if (callingPackage != null) {
+            final int packageUid = mContext.getPackageManager()
+                    .getPackageUidAsUser(callingPackage, UserHandle.getCallingUserId());
+            final int callingUid = Binder.getCallingUid();
+            Preconditions.checkArgument(
+                    callingUid == packageUid
+                            // Trust the system process:
+                            || callingUid == android.os.Process.SYSTEM_UID,
+                    "Invalid package name. callingPackage=" + callingPackage
+                            + ", callingUid=" + callingUid);
+        }
+    }
 
-        try {
-            if (packageName != null) {
-                final int packageUid = context.getPackageManager()
-                        .getPackageUidAsUser(packageName, UserHandle.getCallingUserId());
-                final int callingUid = Binder.getCallingUid();
-                Preconditions.checkArgument(callingUid == packageUid
-                        // Trust the system process:
-                        || callingUid == android.os.Process.SYSTEM_UID,
-                        "Invalid package name. Package=" + packageName
-                                + ", CallingUid=" + callingUid);
-            }
+    private void validateUser(@UserIdInt int userId) {
+        Preconditions.checkArgument(userId != UserHandle.USER_NULL, "Null userId");
+        final int callingUserId = UserHandle.getCallingUserId();
+        if (callingUserId != userId) {
+            mContext.enforceCallingOrSelfPermission(
+                    android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
+                    "Invalid userId. UserId=" + userId + ", CallingUserId=" + callingUserId);
+        }
+    }
 
-            Preconditions.checkArgument(userId != UserHandle.USER_NULL, "Null userId");
-            final int callingUserId = UserHandle.getCallingUserId();
-            if (callingUserId != userId) {
-                context.enforceCallingOrSelfPermission(
-                        android.Manifest.permission.INTERACT_ACROSS_USERS_FULL,
-                        "Invalid userId. UserId=" + userId + ", CallingUserId=" + callingUserId);
+    /**
+     * Stores the stripped down version of {@link TextClassificationContext}s, i.e. {@link
+     * StrippedTextClassificationContext},  keyed by {@link TextClassificationSessionId}. Sessions
+     * are cleaned up automatically when the client process is dead.
+     */
+    static final class SessionCache {
+        @NonNull
+        private final Object mLock;
+        @NonNull
+        @GuardedBy("mLock")
+        private final Map<TextClassificationSessionId, StrippedTextClassificationContext> mCache =
+                new ArrayMap<>();
+        @NonNull
+        @GuardedBy("mLock")
+        private final Map<TextClassificationSessionId, DeathRecipient> mDeathRecipients =
+                new ArrayMap<>();
+
+        SessionCache(@NonNull Object lock) {
+            mLock = Objects.requireNonNull(lock);
+        }
+
+        void put(@NonNull TextClassificationSessionId sessionId,
+                @NonNull TextClassificationContext textClassificationContext) {
+            synchronized (mLock) {
+                mCache.put(sessionId,
+                        new StrippedTextClassificationContext(textClassificationContext));
+                try {
+                    DeathRecipient deathRecipient = () -> remove(sessionId);
+                    sessionId.getToken().linkToDeath(deathRecipient, /* flags= */ 0);
+                    mDeathRecipients.put(sessionId, deathRecipient);
+                } catch (RemoteException e) {
+                    Slog.w(LOG_TAG, "SessionCache: Failed to link to death", e);
+                }
             }
-        } catch (Exception e) {
-            throw new RemoteException("Invalid request: " + e.getMessage(), e,
-                    /* enableSuppression */ true, /* writableStackTrace */ true);
+        }
+
+        @Nullable
+        StrippedTextClassificationContext get(@NonNull TextClassificationSessionId sessionId) {
+            Objects.requireNonNull(sessionId);
+            synchronized (mLock) {
+                return mCache.get(sessionId);
+            }
+        }
+
+        void remove(@NonNull TextClassificationSessionId sessionId) {
+            Objects.requireNonNull(sessionId);
+            synchronized (mLock) {
+                DeathRecipient deathRecipient = mDeathRecipients.get(sessionId);
+                if (deathRecipient != null) {
+                    sessionId.getToken().unlinkToDeath(deathRecipient, /* flags= */ 0);
+                }
+                mDeathRecipients.remove(sessionId);
+                mCache.remove(sessionId);
+            }
+        }
+
+        int size() {
+            synchronized (mLock) {
+                return mCache.size();
+            }
+        }
+    }
+
+    /** A stripped down version of {@link TextClassificationContext}. */
+    static class StrippedTextClassificationContext {
+        @UserIdInt
+        public final int userId;
+        public final boolean useDefaultTextClassifier;
+
+        StrippedTextClassificationContext(TextClassificationContext textClassificationContext) {
+            userId = textClassificationContext.getUserId();
+            useDefaultTextClassifier = textClassificationContext.getUseDefaultTextClassifier();
         }
     }
 
     private final class UserState {
-        @UserIdInt final int mUserId;
+        @UserIdInt
+        final int mUserId;
+        @Nullable
+        private final ServiceState mDefaultServiceState;
+        @Nullable
+        private final ServiceState mSystemServiceState;
         @GuardedBy("mLock")
-        TextClassifierServiceConnection mConnection = null;
+        @Nullable
+        private ServiceState mUntrustedServiceState;
+
+        private UserState(int userId) {
+            mUserId = userId;
+            mDefaultServiceState = TextUtils.isEmpty(mDefaultTextClassifierPackage)
+                    ? null
+                    : new ServiceState(userId, mDefaultTextClassifierPackage, /* isTrusted= */true);
+            mSystemServiceState = TextUtils.isEmpty(mSystemTextClassifierPackage)
+                    ? null
+                    : new ServiceState(userId, mSystemTextClassifierPackage, /* isTrusted= */ true);
+        }
+
+        @GuardedBy("mLock")
+        @Nullable
+        ServiceState getServiceStateLocked(boolean useDefaultTextClassifier) {
+            if (useDefaultTextClassifier) {
+                return mDefaultServiceState;
+            }
+            String textClassifierServicePackageOverride =
+                    Binder.withCleanCallingIdentity(
+                            mSettings::getTextClassifierServicePackageOverride);
+            if (!TextUtils.isEmpty(textClassifierServicePackageOverride)) {
+                if (textClassifierServicePackageOverride.equals(mDefaultTextClassifierPackage)) {
+                    return mDefaultServiceState;
+                }
+                if (textClassifierServicePackageOverride.equals(mSystemTextClassifierPackage)
+                        && mSystemServiceState != null) {
+                    return mSystemServiceState;
+                }
+                if (mUntrustedServiceState == null) {
+                    mUntrustedServiceState =
+                            new ServiceState(
+                                    mUserId,
+                                    textClassifierServicePackageOverride,
+                                    /* isTrusted= */false);
+                }
+                return mUntrustedServiceState;
+            }
+            return mSystemServiceState != null ? mSystemServiceState : mDefaultServiceState;
+        }
+
+        @GuardedBy("mLock")
+        void onTextClassifierServicePackageOverrideChangedLocked(String overriddenPackageName) {
+            // The override config is just used for testing, and the flag value is not expected
+            // to change often. So, let's keep it simple and just unbind all the services here. The
+            // right service will be bound when the next request comes.
+            for (ServiceState serviceState : getAllServiceStatesLocked()) {
+                serviceState.unbindIfBoundLocked();
+            }
+            mUntrustedServiceState = null;
+        }
+
+        @GuardedBy("mLock")
+        void bindIfHasPendingRequestsLocked() {
+            for (ServiceState serviceState : getAllServiceStatesLocked()) {
+                serviceState.bindIfHasPendingRequestsLocked();
+            }
+        }
+
+        @GuardedBy("mLock")
+        void cleanupServiceLocked() {
+            for (ServiceState serviceState : getAllServiceStatesLocked()) {
+                if (serviceState.mConnection != null) {
+                    serviceState.mConnection.cleanupService();
+                }
+            }
+        }
+
+        @GuardedBy("mLock")
+        @NonNull
+        private List<ServiceState> getAllServiceStatesLocked() {
+            List<ServiceState> serviceStates = new ArrayList<>();
+            if (mDefaultServiceState != null) {
+                serviceStates.add(mDefaultServiceState);
+            }
+            if (mSystemServiceState != null) {
+                serviceStates.add(mSystemServiceState);
+            }
+            if (mUntrustedServiceState != null) {
+                serviceStates.add(mUntrustedServiceState);
+            }
+            return serviceStates;
+        }
+
+        void dump(IndentingPrintWriter pw) {
+            synchronized (mLock) {
+                pw.increaseIndent();
+                dump(pw, mDefaultServiceState, "Default");
+                dump(pw, mSystemServiceState, "System");
+                dump(pw, mUntrustedServiceState, "Untrusted");
+                pw.decreaseIndent();
+            }
+        }
+
+        private void dump(
+                IndentingPrintWriter pw, @Nullable ServiceState serviceState, String name) {
+            synchronized (mLock) {
+                if (serviceState != null) {
+                    pw.print(name + ": ");
+                    serviceState.dump(pw);
+                    pw.println();
+                }
+            }
+        }
+    }
+
+    private final class ServiceState {
+        @UserIdInt
+        final int mUserId;
+        @NonNull
+        final String mPackageName;
+        @NonNull
+        final TextClassifierServiceConnection mConnection;
+        final boolean mIsTrusted;
+        @NonNull
         @GuardedBy("mLock")
         final Queue<PendingRequest> mPendingRequests = new ArrayDeque<>();
+        @Nullable
         @GuardedBy("mLock")
         ITextClassifierService mService;
         @GuardedBy("mLock")
         boolean mBinding;
+        @Nullable
         @GuardedBy("mLock")
         ComponentName mBoundComponentName = null;
         @GuardedBy("mLock")
-        boolean mBoundToDefaultTrustService;
-        @GuardedBy("mLock")
-        int mBoundServiceUid;
+        int mBoundServiceUid = Process.INVALID_UID;
 
-        private final Context mContext;
-        private final Object mLock;
-
-        private UserState(int userId, Context context, Object lock) {
+        private ServiceState(@UserIdInt int userId, String packageName, boolean isTrusted) {
             mUserId = userId;
-            mContext = Objects.requireNonNull(context);
-            mLock = Objects.requireNonNull(lock);
+            mPackageName = packageName;
+            mConnection = new TextClassifierServiceConnection(mUserId);
+            mIsTrusted = isTrusted;
         }
 
         @GuardedBy("mLock")
@@ -581,18 +819,12 @@
         }
 
         @GuardedBy("mLock")
-        private boolean isCurrentlyBoundToComponentLocked(@NonNull ComponentName componentName) {
-            return (mBoundComponentName != null
-                    && mBoundComponentName.getPackageName().equals(
-                    componentName.getPackageName()));
-        }
-
-        @GuardedBy("mLock")
-        private void unbindLocked() {
-            Slog.v(LOG_TAG, "unbinding from " + mBoundComponentName + " for " + mUserId);
-            mContext.unbindService(mConnection);
-            mConnection.cleanupService();
-            mConnection = null;
+        void unbindIfBoundLocked() {
+            if (isBoundLocked()) {
+                Slog.v(LOG_TAG, "Unbinding " + mBoundComponentName + " for " + mUserId);
+                mContext.unbindService(mConnection);
+                mConnection.cleanupService();
+            }
         }
 
         /**
@@ -609,8 +841,7 @@
             final boolean willBind;
             final long identity = Binder.clearCallingIdentity();
             try {
-                final ComponentName componentName =
-                        TextClassifierService.getServiceComponentName(mContext);
+                final ComponentName componentName = getTextClassifierServiceComponent();
                 if (componentName == null) {
                     // Might happen if the storage is encrypted and the user is not unlocked
                     return false;
@@ -618,7 +849,6 @@
                 Intent serviceIntent = new Intent(TextClassifierService.SERVICE_INTERFACE)
                         .setComponent(componentName);
                 Slog.d(LOG_TAG, "Binding to " + serviceIntent.getComponent());
-                mConnection = new TextClassifierServiceConnection(mUserId);
                 willBind = mContext.bindServiceAsUser(
                         serviceIntent, mConnection,
                         Context.BIND_AUTO_CREATE | Context.BIND_FOREGROUND_SERVICE
@@ -631,12 +861,21 @@
             return willBind;
         }
 
+        @Nullable
+        private ComponentName getTextClassifierServiceComponent() {
+            return TextClassifierService.getServiceComponentName(
+                    mContext,
+                    mPackageName,
+                    mIsTrusted ? PackageManager.MATCH_SYSTEM_ONLY : 0);
+        }
+
         private void dump(IndentingPrintWriter pw) {
             pw.printPair("context", mContext);
             pw.printPair("userId", mUserId);
             synchronized (mLock) {
+                pw.printPair("packageName", mPackageName);
                 pw.printPair("boundComponentName", mBoundComponentName);
-                pw.printPair("boundToDefaultTrustService", mBoundToDefaultTrustService);
+                pw.printPair("isTrusted", mIsTrusted);
                 pw.printPair("boundServiceUid", mBoundServiceUid);
                 pw.printPair("binding", mBinding);
                 pw.printPair("numberRequests", mPendingRequests.size());
@@ -645,7 +884,7 @@
 
         @GuardedBy("mLock")
         private boolean checkRequestAcceptedLocked(int requestUid, @NonNull String methodName) {
-            if (mBoundToDefaultTrustService || (requestUid == mBoundServiceUid)) {
+            if (mIsTrusted || (requestUid == mBoundServiceUid)) {
                 return true;
             }
             Slog.w(LOG_TAG, String.format(
@@ -654,47 +893,19 @@
             return false;
         }
 
-        private boolean isDefaultTrustService(@NonNull ComponentName currentService) {
-            final String[] defaultServiceNames =
-                    mContext.getPackageManager().getSystemTextClassifierPackages();
-            final String servicePackageName = currentService.getPackageName();
-
-            for (int i = 0; i < defaultServiceNames.length; i++) {
-                if (defaultServiceNames[i].equals(servicePackageName)) {
-                    return true;
-                }
-            }
-            return false;
-        }
-
-        private int getServiceUid(@Nullable ComponentName service, int userId) {
-            if (service == null) {
-                return Process.INVALID_UID;
-            }
-            final String servicePackageName = service.getPackageName();
-            final PackageManager pm = mContext.getPackageManager();
-            final int serviceUid;
-
-            try {
-                serviceUid = pm.getPackageUidAsUser(servicePackageName, userId);
-            } catch (PackageManager.NameNotFoundException e) {
-                Slog.e(LOG_TAG, "Could not verify UID for " + service);
-                return Process.INVALID_UID;
-            }
-            return serviceUid;
-        }
-
         @GuardedBy("mLock")
         private void updateServiceInfoLocked(int userId, @Nullable ComponentName componentName) {
             mBoundComponentName = componentName;
-            mBoundToDefaultTrustService = (mBoundComponentName != null && isDefaultTrustService(
-                    mBoundComponentName));
-            mBoundServiceUid = getServiceUid(mBoundComponentName, userId);
+            mBoundServiceUid =
+                    mBoundComponentName == null
+                            ? Process.INVALID_UID
+                            : resolvePackageToUid(mBoundComponentName.getPackageName(), userId);
         }
 
         private final class TextClassifierServiceConnection implements ServiceConnection {
 
-            @UserIdInt private final int mUserId;
+            @UserIdInt
+            private final int mUserId;
 
             TextClassifierServiceConnection(int userId) {
                 mUserId = userId;
@@ -745,18 +956,18 @@
 
     private final class TextClassifierSettingsListener implements
             DeviceConfig.OnPropertiesChangedListener {
+        @NonNull
+        private final Context mContext;
+        @Nullable
+        private String mServicePackageOverride;
 
-        @NonNull private final Context mContext;
-        @NonNull private final TextClassificationConstants mSettings;
-        @Nullable private String mServicePackageName;
 
         TextClassifierSettingsListener(Context context) {
             mContext = context;
-            mSettings = TextClassificationManager.getSettings(mContext);
-            mServicePackageName = mSettings.getTextClassifierServicePackageOverride();
+            mServicePackageOverride = mSettings.getTextClassifierServicePackageOverride();
         }
 
-        public void registerObserver() {
+        void registerObserver() {
             DeviceConfig.addOnPropertiesChangedListener(
                     DeviceConfig.NAMESPACE_TEXTCLASSIFIER,
                     mContext.getMainExecutor(),
@@ -765,13 +976,13 @@
 
         @Override
         public void onPropertiesChanged(DeviceConfig.Properties properties) {
-            final String overrideServiceName = mSettings.getTextClassifierServicePackageOverride();
-
-            if (TextUtils.equals(overrideServiceName, mServicePackageName)) {
+            final String currentServicePackageOverride =
+                    mSettings.getTextClassifierServicePackageOverride();
+            if (TextUtils.equals(currentServicePackageOverride, mServicePackageOverride)) {
                 return;
             }
-            mServicePackageName = overrideServiceName;
-            unbindServiceIfNecessary();
+            mServicePackageOverride = currentServicePackageOverride;
+            onTextClassifierServicePackageOverrideChanged(currentServicePackageOverride);
         }
     }
 }
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorService.java b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
index b7d6360..ed6424c 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorService.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorService.java
@@ -21,7 +21,7 @@
 import android.app.timedetector.ITimeDetectorService;
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -37,6 +37,9 @@
 import java.io.PrintWriter;
 import java.util.Objects;
 
+/**
+ * The implementation of ITimeDetectorService.aidl.
+ */
 public final class TimeDetectorService extends ITimeDetectorService.Stub {
     private static final String TAG = "TimeDetectorService";
 
@@ -75,7 +78,7 @@
                 Settings.Global.getUriFor(Settings.Global.AUTO_TIME), true,
                 new ContentObserver(handler) {
                     public void onChange(boolean selfChange) {
-                        timeDetectorService.handleAutoTimeDetectionToggle();
+                        timeDetectorService.handleAutoTimeDetectionChanged();
                     }
                 });
 
@@ -91,11 +94,11 @@
     }
 
     @Override
-    public void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSignal) {
-        enforceSuggestPhoneTimePermission();
+    public void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSignal) {
+        enforceSuggestTelephonyTimePermission();
         Objects.requireNonNull(timeSignal);
 
-        mHandler.post(() -> mTimeDetectorStrategy.suggestPhoneTime(timeSignal));
+        mHandler.post(() -> mTimeDetectorStrategy.suggestTelephonyTime(timeSignal));
     }
 
     @Override
@@ -114,8 +117,9 @@
         mHandler.post(() -> mTimeDetectorStrategy.suggestNetworkTime(timeSignal));
     }
 
+    /** Internal method for handling the auto time setting being changed. */
     @VisibleForTesting
-    public void handleAutoTimeDetectionToggle() {
+    public void handleAutoTimeDetectionChanged() {
         mHandler.post(mTimeDetectorStrategy::handleAutoTimeDetectionChanged);
     }
 
@@ -127,10 +131,10 @@
         mTimeDetectorStrategy.dump(pw, args);
     }
 
-    private void enforceSuggestPhoneTimePermission() {
+    private void enforceSuggestTelephonyTimePermission() {
         mContext.enforceCallingPermission(
-                android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE,
-                "suggest phone time and time zone");
+                android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE,
+                "suggest telephony time and time zone");
     }
 
     private void enforceSuggestManualTimePermission() {
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
index 468b806..a5fba4e 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategy.java
@@ -20,14 +20,14 @@
 import android.annotation.Nullable;
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 import android.os.TimestampedValue;
 
 import java.io.PrintWriter;
 
 /**
- * The interface for classes that implement the time detection algorithm used by the
- * TimeDetectorService.
+ * The interface for the class that implements the time detection algorithm used by the
+ * {@link TimeDetectorService}.
  *
  * <p>Most calls will be handled by a single thread but that is not true for all calls. For example
  * {@link #dump(PrintWriter, String[])}) may be called on a different thread so implementations must
@@ -78,7 +78,7 @@
     void initialize(@NonNull Callback callback);
 
     /** Process the suggested time from telephony sources. */
-    void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion);
+    void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion);
 
     /** Process the suggested manually entered time. */
     void suggestManualTime(@NonNull ManualTimeSuggestion timeSuggestion);
diff --git a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
index e95fc4a..88de340 100644
--- a/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
+++ b/services/core/java/com/android/server/timedetector/TimeDetectorStrategyImpl.java
@@ -22,7 +22,7 @@
 import android.app.AlarmManager;
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 import android.os.TimestampedValue;
 import android.util.LocalLog;
 import android.util.Slog;
@@ -38,9 +38,9 @@
 import java.lang.annotation.RetentionPolicy;
 
 /**
- * An implementation of TimeDetectorStrategy that passes phone and manual suggestions to
- * {@link AlarmManager}. When there are multiple phone sources, the one with the lowest ID is used
- * unless the data becomes too stale.
+ * An implementation of {@link TimeDetectorStrategy} that passes telephony and manual suggestions to
+ * {@link AlarmManager}. When there are multiple telephony sources, the one with the lowest ID is
+ * used unless the data becomes too stale.
  *
  * <p>Most public methods are marked synchronized to ensure thread safety around internal state.
  */
@@ -50,23 +50,26 @@
     private static final String LOG_TAG = "SimpleTimeDetectorStrategy";
 
     /** A score value used to indicate "no score", either due to validation failure or age. */
-    private static final int PHONE_INVALID_SCORE = -1;
-    /** The number of buckets phone suggestions can be put in by age. */
-    private static final int PHONE_BUCKET_COUNT = 24;
+    private static final int TELEPHONY_INVALID_SCORE = -1;
+    /** The number of buckets telephony suggestions can be put in by age. */
+    private static final int TELEPHONY_BUCKET_COUNT = 24;
     /** Each bucket is this size. All buckets are equally sized. */
     @VisibleForTesting
-    static final int PHONE_BUCKET_SIZE_MILLIS = 60 * 60 * 1000;
-    /** Phone and network suggestions older than this value are considered too old to be used. */
+    static final int TELEPHONY_BUCKET_SIZE_MILLIS = 60 * 60 * 1000;
+    /**
+     * Telephony and network suggestions older than this value are considered too old to be used.
+     */
     @VisibleForTesting
-    static final long MAX_UTC_TIME_AGE_MILLIS = PHONE_BUCKET_COUNT * PHONE_BUCKET_SIZE_MILLIS;
+    static final long MAX_UTC_TIME_AGE_MILLIS =
+            TELEPHONY_BUCKET_COUNT * TELEPHONY_BUCKET_SIZE_MILLIS;
 
-    @IntDef({ ORIGIN_PHONE, ORIGIN_MANUAL, ORIGIN_NETWORK })
+    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL, ORIGIN_NETWORK })
     @Retention(RetentionPolicy.SOURCE)
     public @interface Origin {}
 
     /** Used when a time value originated from a telephony signal. */
     @Origin
-    private static final int ORIGIN_PHONE = 1;
+    private static final int ORIGIN_TELEPHONY = 1;
 
     /** Used when a time value originated from a user / manual settings. */
     @Origin
@@ -83,10 +86,16 @@
      */
     private static final long SYSTEM_CLOCK_PARANOIA_THRESHOLD_MILLIS = 2 * 1000;
 
-    /** The number of previous phone suggestions to keep for each ID (for use during debugging). */
-    private static final int KEEP_SUGGESTION_HISTORY_SIZE = 30;
+    /**
+     * The number of suggestions to keep. These are logged in bug reports to assist when debugging
+     * issues with detection.
+     */
+    private static final int KEEP_SUGGESTION_HISTORY_SIZE = 10;
 
-    // A log for changes made to the system clock and why.
+    /**
+     * A log that records the decisions / decision metadata that affected the device's system clock
+     * time. This is logged in bug reports to assist with debugging issues with detection.
+     */
     @NonNull
     private final LocalLog mTimeChangesLog = new LocalLog(30, false /* useLocalTimestamps */);
 
@@ -101,11 +110,12 @@
     private TimestampedValue<Long> mLastAutoSystemClockTimeSet;
 
     /**
-     * A mapping from phoneId to a time suggestion. We typically expect one or two mappings: devices
-     * will have a small number of telephony devices and phoneIds are assumed to be stable.
+     * A mapping from slotIndex to a time suggestion. We typically expect one or two mappings:
+     * devices will have a small number of telephony devices and slotIndexs are assumed to be
+     * stable.
      */
     @GuardedBy("this")
-    private final ArrayMapWithHistory<Integer, PhoneTimeSuggestion> mSuggestionByPhoneId =
+    private final ArrayMapWithHistory<Integer, TelephonyTimeSuggestion> mSuggestionBySlotIndex =
             new ArrayMapWithHistory<>(KEEP_SUGGESTION_HISTORY_SIZE);
 
     @GuardedBy("this")
@@ -134,7 +144,18 @@
         if (!validateSuggestionTime(timeSuggestion.getUtcTime(), timeSuggestion)) {
             return;
         }
-        mLastNetworkSuggestion.set(timeSuggestion);
+
+        // The caller submits suggestions with the best available information when there are network
+        // changes. The best available information may have been cached and if they were all stored
+        // this would lead to duplicates showing up in the suggestion history. The suggestions may
+        // be made for different reasons but there is not a significant benefit to storing the same
+        // suggestion information again. doAutoTimeDetection() should still be called: this ensures
+        // the suggestion and device state are always re-evaluated, which might produce a different
+        // detected time if, for example, the age of all suggestions are considered.
+        NetworkTimeSuggestion lastNetworkSuggestion = mLastNetworkSuggestion.get();
+        if (lastNetworkSuggestion == null || !lastNetworkSuggestion.equals(timeSuggestion)) {
+            mLastNetworkSuggestion.set(timeSuggestion);
+        }
 
         // Now perform auto time detection. The new suggestion may be used to modify the system
         // clock.
@@ -143,7 +164,7 @@
     }
 
     @Override
-    public synchronized void suggestPhoneTime(@NonNull PhoneTimeSuggestion timeSuggestion) {
+    public synchronized void suggestTelephonyTime(@NonNull TelephonyTimeSuggestion timeSuggestion) {
         // Empty time suggestion means that telephony network connectivity has been lost.
         // The passage of time is relentless, and we don't expect our users to use a time machine,
         // so we can continue relying on previous suggestions when we lose connectivity. This is
@@ -155,14 +176,14 @@
         }
 
         // Perform validation / input filtering and record the validated suggestion against the
-        // phoneId.
-        if (!validateAndStorePhoneSuggestion(timeSuggestion)) {
+        // slotIndex.
+        if (!validateAndStoreTelephonySuggestion(timeSuggestion)) {
             return;
         }
 
         // Now perform auto time detection. The new suggestion may be used to modify the system
         // clock.
-        String reason = "New phone time suggested. timeSuggestion=" + timeSuggestion;
+        String reason = "New telephony time suggested. timeSuggestion=" + timeSuggestion;
         doAutoTimeDetection(reason);
     }
 
@@ -200,9 +221,9 @@
         mTimeChangesLog.dump(ipw);
         ipw.decreaseIndent(); // level 2
 
-        ipw.println("Phone suggestion history:");
+        ipw.println("Telephony suggestion history:");
         ipw.increaseIndent(); // level 2
-        mSuggestionByPhoneId.dump(ipw);
+        mSuggestionBySlotIndex.dump(ipw);
         ipw.decreaseIndent(); // level 2
 
         ipw.println("Network suggestion history:");
@@ -215,7 +236,8 @@
     }
 
     @GuardedBy("this")
-    private boolean validateAndStorePhoneSuggestion(@NonNull PhoneTimeSuggestion suggestion) {
+    private boolean validateAndStoreTelephonySuggestion(
+            @NonNull TelephonyTimeSuggestion suggestion) {
         TimestampedValue<Long> newUtcTime = suggestion.getUtcTime();
         if (!validateSuggestionTime(newUtcTime, suggestion)) {
             // There's probably nothing useful we can do: elsewhere we assume that reference
@@ -223,8 +245,8 @@
             return false;
         }
 
-        int phoneId = suggestion.getPhoneId();
-        PhoneTimeSuggestion previousSuggestion = mSuggestionByPhoneId.get(phoneId);
+        int slotIndex = suggestion.getSlotIndex();
+        TelephonyTimeSuggestion previousSuggestion = mSuggestionBySlotIndex.get(slotIndex);
         if (previousSuggestion != null) {
             // We can log / discard suggestions with obvious issues with the reference time clock.
             if (previousSuggestion.getUtcTime() == null
@@ -240,7 +262,7 @@
                     newUtcTime, previousSuggestion.getUtcTime());
             if (referenceTimeDifference < 0) {
                 // The reference time is before the previously received suggestion. Ignore it.
-                Slog.w(LOG_TAG, "Out of order phone suggestion received."
+                Slog.w(LOG_TAG, "Out of order telephony suggestion received."
                         + " referenceTimeDifference=" + referenceTimeDifference
                         + " previousSuggestion=" + previousSuggestion
                         + " suggestion=" + suggestion);
@@ -249,7 +271,7 @@
         }
 
         // Store the latest suggestion.
-        mSuggestionByPhoneId.put(phoneId, suggestion);
+        mSuggestionBySlotIndex.put(slotIndex, suggestion);
         return true;
     }
 
@@ -281,18 +303,18 @@
 
         // Android devices currently prioritize any telephony over network signals. There are
         // carrier compliance tests that would need to be changed before we could ignore NITZ or
-        // prefer NTP generally. This check is cheap on devices without phone hardware.
-        PhoneTimeSuggestion bestPhoneSuggestion = findBestPhoneSuggestion();
-        if (bestPhoneSuggestion != null) {
-            final TimestampedValue<Long> newUtcTime = bestPhoneSuggestion.getUtcTime();
-            String cause = "Found good phone suggestion."
-                    + ", bestPhoneSuggestion=" + bestPhoneSuggestion
+        // prefer NTP generally. This check is cheap on devices without telephony hardware.
+        TelephonyTimeSuggestion bestTelephonySuggestion = findBestTelephonySuggestion();
+        if (bestTelephonySuggestion != null) {
+            final TimestampedValue<Long> newUtcTime = bestTelephonySuggestion.getUtcTime();
+            String cause = "Found good telephony suggestion."
+                    + ", bestTelephonySuggestion=" + bestTelephonySuggestion
                     + ", detectionReason=" + detectionReason;
-            setSystemClockIfRequired(ORIGIN_PHONE, newUtcTime, cause);
+            setSystemClockIfRequired(ORIGIN_TELEPHONY, newUtcTime, cause);
             return;
         }
 
-        // There is no good phone suggestion, try network.
+        // There is no good telephony suggestion, try network.
         NetworkTimeSuggestion networkSuggestion = findLatestValidNetworkSuggestion();
         if (networkSuggestion != null) {
             final TimestampedValue<Long> newUtcTime = networkSuggestion.getUtcTime();
@@ -304,18 +326,18 @@
         }
 
         if (DBG) {
-            Slog.d(LOG_TAG, "Could not determine time: No best phone or network suggestion."
+            Slog.d(LOG_TAG, "Could not determine time: No best telephony or network suggestion."
                     + " detectionReason=" + detectionReason);
         }
     }
 
     @GuardedBy("this")
     @Nullable
-    private PhoneTimeSuggestion findBestPhoneSuggestion() {
+    private TelephonyTimeSuggestion findBestTelephonySuggestion() {
         long elapsedRealtimeMillis = mCallback.elapsedRealtimeMillis();
 
-        // Phone time suggestions are assumed to be derived from NITZ or NITZ-like signals. These
-        // have a number of limitations:
+        // Telephony time suggestions are assumed to be derived from NITZ or NITZ-like signals.
+        // These have a number of limitations:
         // 1) No guarantee of accuracy ("accuracy of the time information is in the order of
         // minutes") [1]
         // 2) No guarantee of regular signals ("dependent on the handset crossing radio network
@@ -323,36 +345,36 @@
         //
         // [1] https://en.wikipedia.org/wiki/NITZ
         //
-        // Generally, when there are suggestions from multiple phoneIds they should usually
+        // Generally, when there are suggestions from multiple slotIndexs they should usually
         // approximately agree. In cases where signals *are* inaccurate we don't want to vacillate
-        // between signals from two phoneIds. However, it is known for NITZ signals to be incorrect
-        // occasionally, which means we also don't want to stick forever with one phoneId. Without
-        // cross-referencing across sources (e.g. the current device time, NTP), or doing some kind
-        // of statistical analysis of consistency within and across phoneIds, we can't know which
-        // suggestions are more correct.
+        // between signals from two slotIndexs. However, it is known for NITZ signals to be
+        // incorrect occasionally, which means we also don't want to stick forever with one
+        // slotIndex. Without cross-referencing across sources (e.g. the current device time, NTP),
+        // or doing some kind of statistical analysis of consistency within and across slotIndexs,
+        // we can't know which suggestions are more correct.
         //
-        // For simplicity, we try to value recency, then consistency of phoneId.
+        // For simplicity, we try to value recency, then consistency of slotIndex.
         //
         // The heuristic works as follows:
-        // Recency: The most recent suggestion from each phone is scored. The score is based on a
-        // discrete age bucket, i.e. so signals received around the same time will be in the same
+        // Recency: The most recent suggestion from each slotIndex is scored. The score is based on
+        // a discrete age bucket, i.e. so signals received around the same time will be in the same
         // bucket, thus applying a loose reference time ordering. The suggestion with the highest
         // score is used.
         // Consistency: If there a multiple suggestions with the same score, the suggestion with the
-        // lowest phoneId is always taken.
+        // lowest slotIndex is always taken.
         //
         // In the trivial case with a single ID this will just mean that the latest received
         // suggestion is used.
 
-        PhoneTimeSuggestion bestSuggestion = null;
-        int bestScore = PHONE_INVALID_SCORE;
-        for (int i = 0; i < mSuggestionByPhoneId.size(); i++) {
-            Integer phoneId = mSuggestionByPhoneId.keyAt(i);
-            PhoneTimeSuggestion candidateSuggestion = mSuggestionByPhoneId.valueAt(i);
+        TelephonyTimeSuggestion bestSuggestion = null;
+        int bestScore = TELEPHONY_INVALID_SCORE;
+        for (int i = 0; i < mSuggestionBySlotIndex.size(); i++) {
+            Integer slotIndex = mSuggestionBySlotIndex.keyAt(i);
+            TelephonyTimeSuggestion candidateSuggestion = mSuggestionBySlotIndex.valueAt(i);
             if (candidateSuggestion == null) {
                 // Unexpected - null suggestions should never be stored.
-                Slog.w(LOG_TAG, "Latest suggestion unexpectedly null for phoneId."
-                        + " phoneId=" + phoneId);
+                Slog.w(LOG_TAG, "Latest suggestion unexpectedly null for slotIndex."
+                        + " slotIndex=" + slotIndex);
                 continue;
             } else if (candidateSuggestion.getUtcTime() == null) {
                 // Unexpected - we do not store empty suggestions.
@@ -361,8 +383,9 @@
                 continue;
             }
 
-            int candidateScore = scorePhoneSuggestion(elapsedRealtimeMillis, candidateSuggestion);
-            if (candidateScore == PHONE_INVALID_SCORE) {
+            int candidateScore =
+                    scoreTelephonySuggestion(elapsedRealtimeMillis, candidateSuggestion);
+            if (candidateScore == TELEPHONY_INVALID_SCORE) {
                 // Expected: This means the suggestion is obviously invalid or just too old.
                 continue;
             }
@@ -372,10 +395,10 @@
                 bestSuggestion = candidateSuggestion;
                 bestScore = candidateScore;
             } else if (bestScore == candidateScore) {
-                // Tie! Use the suggestion with the lowest phoneId.
-                int candidatePhoneId = candidateSuggestion.getPhoneId();
-                int bestPhoneId = bestSuggestion.getPhoneId();
-                if (candidatePhoneId < bestPhoneId) {
+                // Tie! Use the suggestion with the lowest slotIndex.
+                int candidateSlotIndex = candidateSuggestion.getSlotIndex();
+                int bestSlotIndex = bestSuggestion.getSlotIndex();
+                if (candidateSlotIndex < bestSlotIndex) {
                     bestSuggestion = candidateSuggestion;
                 }
             }
@@ -383,8 +406,8 @@
         return bestSuggestion;
     }
 
-    private static int scorePhoneSuggestion(
-            long elapsedRealtimeMillis, @NonNull PhoneTimeSuggestion timeSuggestion) {
+    private static int scoreTelephonySuggestion(
+            long elapsedRealtimeMillis, @NonNull TelephonyTimeSuggestion timeSuggestion) {
 
         // Validate first.
         TimestampedValue<Long> utcTime = timeSuggestion.getUtcTime();
@@ -392,21 +415,21 @@
             Slog.w(LOG_TAG, "Existing suggestion found to be invalid "
                     + " elapsedRealtimeMillis=" + elapsedRealtimeMillis
                     + ", timeSuggestion=" + timeSuggestion);
-            return PHONE_INVALID_SCORE;
+            return TELEPHONY_INVALID_SCORE;
         }
 
         // The score is based on the age since receipt. Suggestions are bucketed so two
-        // suggestions in the same bucket from different phoneIds are scored the same.
+        // suggestions in the same bucket from different slotIndexs are scored the same.
         long ageMillis = elapsedRealtimeMillis - utcTime.getReferenceTimeMillis();
 
-        // Turn the age into a discrete value: 0 <= bucketIndex < PHONE_BUCKET_COUNT.
-        int bucketIndex = (int) (ageMillis / PHONE_BUCKET_SIZE_MILLIS);
-        if (bucketIndex >= PHONE_BUCKET_COUNT) {
-            return PHONE_INVALID_SCORE;
+        // Turn the age into a discrete value: 0 <= bucketIndex < TELEPHONY_BUCKET_COUNT.
+        int bucketIndex = (int) (ageMillis / TELEPHONY_BUCKET_SIZE_MILLIS);
+        if (bucketIndex >= TELEPHONY_BUCKET_COUNT) {
+            return TELEPHONY_INVALID_SCORE;
         }
 
         // We want the lowest bucket index to have the highest score. 0 > score >= BUCKET_COUNT.
-        return PHONE_BUCKET_COUNT - bucketIndex;
+        return TELEPHONY_BUCKET_COUNT - bucketIndex;
     }
 
     /** Returns the latest, valid, network suggestion. Returns {@code null} if there isn't one. */
@@ -536,13 +559,13 @@
     }
 
     /**
-     * Returns the current best phone suggestion. Not intended for general use: it is used during
-     * tests to check strategy behavior.
+     * Returns the current best telephony suggestion. Not intended for general use: it is used
+     * during tests to check strategy behavior.
      */
     @VisibleForTesting
     @Nullable
-    public synchronized PhoneTimeSuggestion findBestPhoneSuggestionForTests() {
-        return findBestPhoneSuggestion();
+    public synchronized TelephonyTimeSuggestion findBestTelephonySuggestionForTests() {
+        return findBestTelephonySuggestion();
     }
 
     /**
@@ -560,8 +583,8 @@
      */
     @VisibleForTesting
     @Nullable
-    public synchronized PhoneTimeSuggestion getLatestPhoneSuggestion(int phoneId) {
-        return mSuggestionByPhoneId.get(phoneId);
+    public synchronized TelephonyTimeSuggestion getLatestTelephonySuggestion(int slotIndex) {
+        return mSuggestionBySlotIndex.get(slotIndex);
     }
 
     /**
diff --git a/services/core/java/com/android/server/timezone/RulesManagerService.java b/services/core/java/com/android/server/timezone/RulesManagerService.java
index cdf8ea3..bbd1ae6 100644
--- a/services/core/java/com/android/server/timezone/RulesManagerService.java
+++ b/services/core/java/com/android/server/timezone/RulesManagerService.java
@@ -198,7 +198,7 @@
                     Slog.w(TAG, "Failed to read staged distro.", e);
                 }
             }
-            return new RulesState(baseVersion.rulesVersion, DISTRO_FORMAT_VERSION_SUPPORTED,
+            return new RulesState(baseVersion.getRulesVersion(), DISTRO_FORMAT_VERSION_SUPPORTED,
                     operationInProgress, stagedOperationStatus, stagedDistroRulesVersion,
                     distroStatus, installedDistroRulesVersion);
         }
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java
index adf6d7e..2520316 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorCallbackImpl.java
@@ -24,9 +24,9 @@
 import android.provider.Settings;
 
 /**
- * The real implementation of {@link TimeZoneDetectorStrategy.Callback}.
+ * The real implementation of {@link TimeZoneDetectorStrategyImpl.Callback}.
  */
-public final class TimeZoneDetectorCallbackImpl implements TimeZoneDetectorStrategy.Callback {
+public final class TimeZoneDetectorCallbackImpl implements TimeZoneDetectorStrategyImpl.Callback {
 
     private static final String TIMEZONE_PROPERTY = "persist.sys.timezone";
 
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
index 9a1fe65..57b6ec9 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorService.java
@@ -20,7 +20,7 @@
 import android.annotation.Nullable;
 import android.app.timezonedetector.ITimeZoneDetectorService;
 import android.app.timezonedetector.ManualTimeZoneSuggestion;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.database.ContentObserver;
@@ -67,19 +67,21 @@
 
     private static TimeZoneDetectorService create(@NonNull Context context) {
         final TimeZoneDetectorStrategy timeZoneDetectorStrategy =
-                TimeZoneDetectorStrategy.create(context);
+                TimeZoneDetectorStrategyImpl.create(context);
 
         Handler handler = FgThread.getHandler();
+        TimeZoneDetectorService service =
+                new TimeZoneDetectorService(context, handler, timeZoneDetectorStrategy);
+
         ContentResolver contentResolver = context.getContentResolver();
         contentResolver.registerContentObserver(
                 Settings.Global.getUriFor(Settings.Global.AUTO_TIME_ZONE), true,
                 new ContentObserver(handler) {
                     public void onChange(boolean selfChange) {
-                        timeZoneDetectorStrategy.handleAutoTimeZoneDetectionChange();
+                        service.handleAutoTimeZoneDetectionChanged();
                     }
                 });
-
-        return new TimeZoneDetectorService(context, handler, timeZoneDetectorStrategy);
+        return service;
     }
 
     @VisibleForTesting
@@ -99,11 +101,11 @@
     }
 
     @Override
-    public void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion timeZoneSuggestion) {
-        enforceSuggestPhoneTimeZonePermission();
+    public void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion timeZoneSuggestion) {
+        enforceSuggestTelephonyTimeZonePermission();
         Objects.requireNonNull(timeZoneSuggestion);
 
-        mHandler.post(() -> mTimeZoneDetectorStrategy.suggestPhoneTimeZone(timeZoneSuggestion));
+        mHandler.post(() -> mTimeZoneDetectorStrategy.suggestTelephonyTimeZone(timeZoneSuggestion));
     }
 
     @Override
@@ -111,17 +113,25 @@
             @Nullable String[] args) {
         if (!DumpUtils.checkDumpPermission(mContext, TAG, pw)) return;
 
-        mTimeZoneDetectorStrategy.dumpState(pw, args);
+        mTimeZoneDetectorStrategy.dump(pw, args);
     }
 
-    private void enforceSuggestPhoneTimeZonePermission() {
+    /** Internal method for handling the auto time zone setting being changed. */
+    @VisibleForTesting
+    public void handleAutoTimeZoneDetectionChanged() {
+        mHandler.post(mTimeZoneDetectorStrategy::handleAutoTimeZoneDetectionChanged);
+    }
+
+    private void enforceSuggestTelephonyTimeZonePermission() {
         mContext.enforceCallingPermission(
-                android.Manifest.permission.SET_TIME_ZONE, "set time zone");
+                android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE,
+                "suggest telephony time and time zone");
     }
 
     private void enforceSuggestManualTimeZonePermission() {
         mContext.enforceCallingOrSelfPermission(
-                android.Manifest.permission.SET_TIME_ZONE, "set time zone");
+                android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE,
+                "suggest manual time and time zone");
     }
 }
 
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
index b4a4399..0eb27cc 100644
--- a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategy.java
@@ -15,506 +15,44 @@
  */
 package com.android.server.timezonedetector;
 
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
-
-import android.annotation.IntDef;
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.app.timezonedetector.ManualTimeZoneSuggestion;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion;
-import android.content.Context;
-import android.util.LocalLog;
-import android.util.Slog;
-
-import com.android.internal.annotations.GuardedBy;
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.util.IndentingPrintWriter;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
 
 import java.io.PrintWriter;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.util.Objects;
 
 /**
- * A singleton, stateful time zone detection strategy that is aware of user (manual) suggestions and
- * suggestions from multiple phone devices. Suggestions are acted on or ignored as needed, dependent
- * on the current "auto time zone detection" setting.
+ * The interface for the class that implement the time detection algorithm used by the
+ * {@link TimeZoneDetectorService}.
  *
- * <p>For automatic detection it keeps track of the most recent suggestion from each phone it uses
- * the best suggestion based on a scoring algorithm. If several phones provide the same score then
- * the phone with the lowest numeric ID "wins". If the situation changes and it is no longer
- * possible to be confident about the time zone, phones must submit an empty suggestion in order to
- * "withdraw" their previous suggestion.
+ * <p>Most calls will be handled by a single thread but that is not true for all calls. For example
+ * {@link #dump(PrintWriter, String[])}) may be called on a different thread so implementations must
+ * handle thread safety.
+ *
+ * @hide
  */
-public class TimeZoneDetectorStrategy {
+public interface TimeZoneDetectorStrategy {
 
-    /**
-     * Used by {@link TimeZoneDetectorStrategy} to interact with the surrounding service. It can be
-     * faked for tests.
-     *
-     * <p>Note: Because the system properties-derived values like
-     * {@link #isAutoTimeZoneDetectionEnabled()}, {@link #isAutoTimeZoneDetectionEnabled()},
-     * {@link #getDeviceTimeZone()} can be modified independently and from different threads (and
-     * processes!), their use are prone to race conditions. That will be true until the
-     * responsibility for setting their values is moved to {@link TimeZoneDetectorStrategy}.
-     */
-    @VisibleForTesting
-    public interface Callback {
-
-        /**
-         * Returns true if automatic time zone detection is enabled in settings.
-         */
-        boolean isAutoTimeZoneDetectionEnabled();
-
-        /**
-         * Returns true if the device has had an explicit time zone set.
-         */
-        boolean isDeviceTimeZoneInitialized();
-
-        /**
-         * Returns the device's currently configured time zone.
-         */
-        String getDeviceTimeZone();
-
-        /**
-         * Sets the device's time zone.
-         */
-        void setDeviceTimeZone(@NonNull String zoneId);
-    }
-
-    private static final String LOG_TAG = "TimeZoneDetectorStrategy";
-    private static final boolean DBG = false;
-
-    @IntDef({ ORIGIN_PHONE, ORIGIN_MANUAL })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface Origin {}
-
-    /** Used when a time value originated from a telephony signal. */
-    @Origin
-    private static final int ORIGIN_PHONE = 1;
-
-    /** Used when a time value originated from a user / manual settings. */
-    @Origin
-    private static final int ORIGIN_MANUAL = 2;
-
-    /**
-     * The abstract score for an empty or invalid phone suggestion.
-     *
-     * Used to score phone suggestions where there is no zone.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_NONE = 0;
-
-    /**
-     * The abstract score for a low quality phone suggestion.
-     *
-     * Used to score suggestions where:
-     * The suggested zone ID is one of several possibilities, and the possibilities have different
-     * offsets.
-     *
-     * You would have to be quite desperate to want to use this choice.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_LOW = 1;
-
-    /**
-     * The abstract score for a medium quality phone suggestion.
-     *
-     * Used for:
-     * The suggested zone ID is one of several possibilities but at least the possibilities have the
-     * same offset. Users would get the correct time but for the wrong reason. i.e. their device may
-     * switch to DST at the wrong time and (for example) their calendar events.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_MEDIUM = 2;
-
-    /**
-     * The abstract score for a high quality phone suggestion.
-     *
-     * Used for:
-     * The suggestion was for one zone ID and the answer was unambiguous and likely correct given
-     * the info available.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_HIGH = 3;
-
-    /**
-     * The abstract score for a highest quality phone suggestion.
-     *
-     * Used for:
-     * Suggestions that must "win" because they constitute test or emulator zone ID.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_HIGHEST = 4;
-
-    /**
-     * The threshold at which phone suggestions are good enough to use to set the device's time
-     * zone.
-     */
-    @VisibleForTesting
-    public static final int PHONE_SCORE_USAGE_THRESHOLD = PHONE_SCORE_MEDIUM;
-
-    /** The number of previous phone suggestions to keep for each ID (for use during debugging). */
-    private static final int KEEP_PHONE_SUGGESTION_HISTORY_SIZE = 30;
-
-    @NonNull
-    private final Callback mCallback;
-
-    /**
-     * A log that records the decisions / decision metadata that affected the device's time zone
-     * (for use during debugging).
-     */
-    @NonNull
-    private final LocalLog mTimeZoneChangesLog = new LocalLog(30, false /* useLocalTimestamps */);
-
-    /**
-     * A mapping from phoneId to a phone time zone suggestion. We typically expect one or two
-     * mappings: devices will have a small number of telephony devices and phoneIds are assumed to
-     * be stable.
-     */
-    @GuardedBy("this")
-    private ArrayMapWithHistory<Integer, QualifiedPhoneTimeZoneSuggestion> mSuggestionByPhoneId =
-            new ArrayMapWithHistory<>(KEEP_PHONE_SUGGESTION_HISTORY_SIZE);
-
-    /**
-     * Creates a new instance of {@link TimeZoneDetectorStrategy}.
-     */
-    public static TimeZoneDetectorStrategy create(Context context) {
-        Callback timeZoneDetectionServiceHelper = new TimeZoneDetectorCallbackImpl(context);
-        return new TimeZoneDetectorStrategy(timeZoneDetectionServiceHelper);
-    }
-
-    @VisibleForTesting
-    public TimeZoneDetectorStrategy(Callback callback) {
-        mCallback = Objects.requireNonNull(callback);
-    }
-
-    /** Process the suggested manually- / user-entered time zone. */
-    public synchronized void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion) {
-        Objects.requireNonNull(suggestion);
-
-        String timeZoneId = suggestion.getZoneId();
-        String cause = "Manual time suggestion received: suggestion=" + suggestion;
-        setDeviceTimeZoneIfRequired(ORIGIN_MANUAL, timeZoneId, cause);
-    }
+    /** Process the suggested manually-entered (i.e. user sourced) time zone. */
+    void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion);
 
     /**
      * Suggests a time zone for the device, or withdraws a previous suggestion if
-     * {@link PhoneTimeZoneSuggestion#getZoneId()} is {@code null}. The suggestion is scoped to a
-     * specific {@link PhoneTimeZoneSuggestion#getPhoneId() phone}.
-     * See {@link PhoneTimeZoneSuggestion} for an explanation of the metadata associated with a
+     * {@link TelephonyTimeZoneSuggestion#getZoneId()} is {@code null}. The suggestion is scoped to
+     * a specific {@link TelephonyTimeZoneSuggestion#getSlotIndex() slotIndex}.
+     * See {@link TelephonyTimeZoneSuggestion} for an explanation of the metadata associated with a
      * suggestion. The strategy uses suggestions to decide whether to modify the device's time zone
      * setting and what to set it to.
      */
-    public synchronized void suggestPhoneTimeZone(@NonNull PhoneTimeZoneSuggestion suggestion) {
-        if (DBG) {
-            Slog.d(LOG_TAG, "Phone suggestion received. newSuggestion=" + suggestion);
-        }
-        Objects.requireNonNull(suggestion);
-
-        // Score the suggestion.
-        int score = scorePhoneSuggestion(suggestion);
-        QualifiedPhoneTimeZoneSuggestion scoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(suggestion, score);
-
-        // Store the suggestion against the correct phoneId.
-        mSuggestionByPhoneId.put(suggestion.getPhoneId(), scoredSuggestion);
-
-        // Now perform auto time zone detection. The new suggestion may be used to modify the time
-        // zone setting.
-        String reason = "New phone time suggested. suggestion=" + suggestion;
-        doAutoTimeZoneDetection(reason);
-    }
-
-    private static int scorePhoneSuggestion(@NonNull PhoneTimeZoneSuggestion suggestion) {
-        int score;
-        if (suggestion.getZoneId() == null) {
-            score = PHONE_SCORE_NONE;
-        } else if (suggestion.getMatchType() == MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY
-                || suggestion.getMatchType() == MATCH_TYPE_EMULATOR_ZONE_ID) {
-            // Handle emulator / test cases : These suggestions should always just be used.
-            score = PHONE_SCORE_HIGHEST;
-        } else if (suggestion.getQuality() == QUALITY_SINGLE_ZONE) {
-            score = PHONE_SCORE_HIGH;
-        } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET) {
-            // The suggestion may be wrong, but at least the offset should be correct.
-            score = PHONE_SCORE_MEDIUM;
-        } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS) {
-            // The suggestion has a good chance of being wrong.
-            score = PHONE_SCORE_LOW;
-        } else {
-            throw new AssertionError();
-        }
-        return score;
-    }
-
-    /**
-     * Finds the best available time zone suggestion from all phones. If it is high-enough quality
-     * and automatic time zone detection is enabled then it will be set on the device. The outcome
-     * can be that this strategy becomes / remains un-opinionated and nothing is set.
-     */
-    @GuardedBy("this")
-    private void doAutoTimeZoneDetection(@NonNull String detectionReason) {
-        if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
-            // Avoid doing unnecessary work with this (race-prone) check.
-            return;
-        }
-
-        QualifiedPhoneTimeZoneSuggestion bestPhoneSuggestion = findBestPhoneSuggestion();
-
-        // Work out what to do with the best suggestion.
-        if (bestPhoneSuggestion == null) {
-            // There is no phone suggestion available at all. Become un-opinionated.
-            if (DBG) {
-                Slog.d(LOG_TAG, "Could not determine time zone: No best phone suggestion."
-                        + " detectionReason=" + detectionReason);
-            }
-            return;
-        }
-
-        // Special case handling for uninitialized devices. This should only happen once.
-        String newZoneId = bestPhoneSuggestion.suggestion.getZoneId();
-        if (newZoneId != null && !mCallback.isDeviceTimeZoneInitialized()) {
-            String cause = "Device has no time zone set. Attempting to set the device to the best"
-                    + " available suggestion."
-                    + " bestPhoneSuggestion=" + bestPhoneSuggestion
-                    + ", detectionReason=" + detectionReason;
-            Slog.i(LOG_TAG, cause);
-            setDeviceTimeZoneIfRequired(ORIGIN_PHONE, newZoneId, cause);
-            return;
-        }
-
-        boolean suggestionGoodEnough = bestPhoneSuggestion.score >= PHONE_SCORE_USAGE_THRESHOLD;
-        if (!suggestionGoodEnough) {
-            if (DBG) {
-                Slog.d(LOG_TAG, "Best suggestion not good enough."
-                        + " bestPhoneSuggestion=" + bestPhoneSuggestion
-                        + ", detectionReason=" + detectionReason);
-            }
-            return;
-        }
-
-        // Paranoia: Every suggestion above the SCORE_USAGE_THRESHOLD should have a non-null time
-        // zone ID.
-        if (newZoneId == null) {
-            Slog.w(LOG_TAG, "Empty zone suggestion scored higher than expected. This is an error:"
-                    + " bestPhoneSuggestion=" + bestPhoneSuggestion
-                    + " detectionReason=" + detectionReason);
-            return;
-        }
-
-        String zoneId = bestPhoneSuggestion.suggestion.getZoneId();
-        String cause = "Found good suggestion."
-                + ", bestPhoneSuggestion=" + bestPhoneSuggestion
-                + ", detectionReason=" + detectionReason;
-        setDeviceTimeZoneIfRequired(ORIGIN_PHONE, zoneId, cause);
-    }
-
-    @GuardedBy("this")
-    private void setDeviceTimeZoneIfRequired(
-            @Origin int origin, @NonNull String newZoneId, @NonNull String cause) {
-        Objects.requireNonNull(newZoneId);
-        Objects.requireNonNull(cause);
-
-        boolean isOriginAutomatic = isOriginAutomatic(origin);
-        if (isOriginAutomatic) {
-            if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
-                if (DBG) {
-                    Slog.d(LOG_TAG, "Auto time zone detection is not enabled."
-                            + " origin=" + origin
-                            + ", newZoneId=" + newZoneId
-                            + ", cause=" + cause);
-                }
-                return;
-            }
-        } else {
-            if (mCallback.isAutoTimeZoneDetectionEnabled()) {
-                if (DBG) {
-                    Slog.d(LOG_TAG, "Auto time zone detection is enabled."
-                            + " origin=" + origin
-                            + ", newZoneId=" + newZoneId
-                            + ", cause=" + cause);
-                }
-                return;
-            }
-        }
-
-        String currentZoneId = mCallback.getDeviceTimeZone();
-
-        // Avoid unnecessary changes / intents.
-        if (newZoneId.equals(currentZoneId)) {
-            // No need to set the device time zone - the setting is already what we would be
-            // suggesting.
-            if (DBG) {
-                Slog.d(LOG_TAG, "No need to change the time zone;"
-                        + " device is already set to the suggested zone."
-                        + " origin=" + origin
-                        + ", newZoneId=" + newZoneId
-                        + ", cause=" + cause);
-            }
-            return;
-        }
-
-        mCallback.setDeviceTimeZone(newZoneId);
-        String msg = "Set device time zone."
-                + " origin=" + origin
-                + ", currentZoneId=" + currentZoneId
-                + ", newZoneId=" + newZoneId
-                + ", cause=" + cause;
-        if (DBG) {
-            Slog.d(LOG_TAG, msg);
-        }
-        mTimeZoneChangesLog.log(msg);
-    }
-
-    private static boolean isOriginAutomatic(@Origin int origin) {
-        return origin != ORIGIN_MANUAL;
-    }
-
-    @GuardedBy("this")
-    @Nullable
-    private QualifiedPhoneTimeZoneSuggestion findBestPhoneSuggestion() {
-        QualifiedPhoneTimeZoneSuggestion bestSuggestion = null;
-
-        // Iterate over the latest QualifiedPhoneTimeZoneSuggestion objects received for each phone
-        // and find the best. Note that we deliberately do not look at age: the caller can
-        // rate-limit so age is not a strong indicator of confidence. Instead, the callers are
-        // expected to withdraw suggestions they no longer have confidence in.
-        for (int i = 0; i < mSuggestionByPhoneId.size(); i++) {
-            QualifiedPhoneTimeZoneSuggestion candidateSuggestion = mSuggestionByPhoneId.valueAt(i);
-            if (candidateSuggestion == null) {
-                // Unexpected
-                continue;
-            }
-
-            if (bestSuggestion == null) {
-                bestSuggestion = candidateSuggestion;
-            } else if (candidateSuggestion.score > bestSuggestion.score) {
-                bestSuggestion = candidateSuggestion;
-            } else if (candidateSuggestion.score == bestSuggestion.score) {
-                // Tie! Use the suggestion with the lowest phoneId.
-                int candidatePhoneId = candidateSuggestion.suggestion.getPhoneId();
-                int bestPhoneId = bestSuggestion.suggestion.getPhoneId();
-                if (candidatePhoneId < bestPhoneId) {
-                    bestSuggestion = candidateSuggestion;
-                }
-            }
-        }
-        return bestSuggestion;
-    }
-
-    /**
-     * Returns the current best phone suggestion. Not intended for general use: it is used during
-     * tests to check strategy behavior.
-     */
-    @VisibleForTesting
-    @Nullable
-    public synchronized QualifiedPhoneTimeZoneSuggestion findBestPhoneSuggestionForTests() {
-        return findBestPhoneSuggestion();
-    }
+    void suggestTelephonyTimeZone(@NonNull TelephonyTimeZoneSuggestion suggestion);
 
     /**
      * Called when there has been a change to the automatic time zone detection setting.
      */
-    @VisibleForTesting
-    public synchronized void handleAutoTimeZoneDetectionChange() {
-        if (DBG) {
-            Slog.d(LOG_TAG, "handleTimeZoneDetectionChange() called");
-        }
-        if (mCallback.isAutoTimeZoneDetectionEnabled()) {
-            // When the user enabled time zone detection, run the time zone detection and change the
-            // device time zone if possible.
-            String reason = "Auto time zone detection setting enabled.";
-            doAutoTimeZoneDetection(reason);
-        }
-    }
+    void handleAutoTimeZoneDetectionChanged();
 
     /**
      * Dumps internal state such as field values.
      */
-    public synchronized void dumpState(PrintWriter pw, String[] args) {
-        IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
-        ipw.println("TimeZoneDetectorStrategy:");
-
-        ipw.increaseIndent(); // level 1
-        ipw.println("mCallback.isTimeZoneDetectionEnabled()="
-                + mCallback.isAutoTimeZoneDetectionEnabled());
-        ipw.println("mCallback.isDeviceTimeZoneInitialized()="
-                + mCallback.isDeviceTimeZoneInitialized());
-        ipw.println("mCallback.getDeviceTimeZone()="
-                + mCallback.getDeviceTimeZone());
-
-        ipw.println("Time zone change log:");
-        ipw.increaseIndent(); // level 2
-        mTimeZoneChangesLog.dump(ipw);
-        ipw.decreaseIndent(); // level 2
-
-        ipw.println("Phone suggestion history:");
-        ipw.increaseIndent(); // level 2
-        mSuggestionByPhoneId.dump(ipw);
-        ipw.decreaseIndent(); // level 2
-        ipw.decreaseIndent(); // level 1
-        ipw.flush();
-    }
-
-    /**
-     * A method used to inspect strategy state during tests. Not intended for general use.
-     */
-    @VisibleForTesting
-    public synchronized QualifiedPhoneTimeZoneSuggestion getLatestPhoneSuggestion(int phoneId) {
-        return mSuggestionByPhoneId.get(phoneId);
-    }
-
-    /**
-     * A {@link PhoneTimeZoneSuggestion} with additional qualifying metadata.
-     */
-    @VisibleForTesting
-    public static class QualifiedPhoneTimeZoneSuggestion {
-
-        @VisibleForTesting
-        public final PhoneTimeZoneSuggestion suggestion;
-
-        /**
-         * The score the suggestion has been given. This can be used to rank against other
-         * suggestions of the same type.
-         */
-        @VisibleForTesting
-        public final int score;
-
-        @VisibleForTesting
-        public QualifiedPhoneTimeZoneSuggestion(PhoneTimeZoneSuggestion suggestion, int score) {
-            this.suggestion = suggestion;
-            this.score = score;
-        }
-
-        @Override
-        public boolean equals(Object o) {
-            if (this == o) {
-                return true;
-            }
-            if (o == null || getClass() != o.getClass()) {
-                return false;
-            }
-            QualifiedPhoneTimeZoneSuggestion that = (QualifiedPhoneTimeZoneSuggestion) o;
-            return score == that.score
-                    && suggestion.equals(that.suggestion);
-        }
-
-        @Override
-        public int hashCode() {
-            return Objects.hash(score, suggestion);
-        }
-
-        @Override
-        public String toString() {
-            return "QualifiedPhoneTimeZoneSuggestion{"
-                    + "suggestion=" + suggestion
-                    + ", score=" + score
-                    + '}';
-        }
-    }
+    void dump(PrintWriter pw, String[] args);
 }
diff --git a/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java
new file mode 100644
index 0000000..cc33fb0
--- /dev/null
+++ b/services/core/java/com/android/server/timezonedetector/TimeZoneDetectorStrategyImpl.java
@@ -0,0 +1,522 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
+
+import android.annotation.IntDef;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
+import android.content.Context;
+import android.util.LocalLog;
+import android.util.Slog;
+
+import com.android.internal.annotations.GuardedBy;
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.util.IndentingPrintWriter;
+
+import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
+
+/**
+ * An implementation of {@link TimeZoneDetectorStrategy} that handle telephony and manual
+ * suggestions. Suggestions are acted on or ignored as needed, dependent on the current "auto time
+ * zone detection" setting.
+ *
+ * <p>For automatic detection, it keeps track of the most recent telephony suggestion from each
+ * slotIndex and it uses the best suggestion based on a scoring algorithm. If several slotIndexes
+ * provide the same score then the slotIndex with the lowest numeric value "wins". If the situation
+ * changes and it is no longer possible to be confident about the time zone, slotIndexes must have
+ * an empty suggestion submitted in order to "withdraw" their previous suggestion.
+ *
+ * <p>Most public methods are marked synchronized to ensure thread safety around internal state.
+ */
+public final class TimeZoneDetectorStrategyImpl implements TimeZoneDetectorStrategy {
+
+    /**
+     * Used by {@link TimeZoneDetectorStrategyImpl} to interact with the surrounding service. It can
+     * be faked for tests.
+     *
+     * <p>Note: Because the system properties-derived values like
+     * {@link #isAutoTimeZoneDetectionEnabled()}, {@link #isAutoTimeZoneDetectionEnabled()},
+     * {@link #getDeviceTimeZone()} can be modified independently and from different threads (and
+     * processes!), their use are prone to race conditions. That will be true until the
+     * responsibility for setting their values is moved to {@link TimeZoneDetectorStrategyImpl}.
+     */
+    @VisibleForTesting
+    public interface Callback {
+
+        /**
+         * Returns true if automatic time zone detection is enabled in settings.
+         */
+        boolean isAutoTimeZoneDetectionEnabled();
+
+        /**
+         * Returns true if the device has had an explicit time zone set.
+         */
+        boolean isDeviceTimeZoneInitialized();
+
+        /**
+         * Returns the device's currently configured time zone.
+         */
+        String getDeviceTimeZone();
+
+        /**
+         * Sets the device's time zone.
+         */
+        void setDeviceTimeZone(@NonNull String zoneId);
+    }
+
+    private static final String LOG_TAG = "TimeZoneDetectorStrategy";
+    private static final boolean DBG = false;
+
+    @IntDef({ ORIGIN_TELEPHONY, ORIGIN_MANUAL })
+    @Retention(RetentionPolicy.SOURCE)
+    public @interface Origin {}
+
+    /** Used when a time value originated from a telephony signal. */
+    @Origin
+    private static final int ORIGIN_TELEPHONY = 1;
+
+    /** Used when a time value originated from a user / manual settings. */
+    @Origin
+    private static final int ORIGIN_MANUAL = 2;
+
+    /**
+     * The abstract score for an empty or invalid telephony suggestion.
+     *
+     * Used to score telephony suggestions where there is no zone.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_NONE = 0;
+
+    /**
+     * The abstract score for a low quality telephony suggestion.
+     *
+     * Used to score suggestions where:
+     * The suggested zone ID is one of several possibilities, and the possibilities have different
+     * offsets.
+     *
+     * You would have to be quite desperate to want to use this choice.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_LOW = 1;
+
+    /**
+     * The abstract score for a medium quality telephony suggestion.
+     *
+     * Used for:
+     * The suggested zone ID is one of several possibilities but at least the possibilities have the
+     * same offset. Users would get the correct time but for the wrong reason. i.e. their device may
+     * switch to DST at the wrong time and (for example) their calendar events.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_MEDIUM = 2;
+
+    /**
+     * The abstract score for a high quality telephony suggestion.
+     *
+     * Used for:
+     * The suggestion was for one zone ID and the answer was unambiguous and likely correct given
+     * the info available.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_HIGH = 3;
+
+    /**
+     * The abstract score for a highest quality telephony suggestion.
+     *
+     * Used for:
+     * Suggestions that must "win" because they constitute test or emulator zone ID.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_HIGHEST = 4;
+
+    /**
+     * The threshold at which telephony suggestions are good enough to use to set the device's time
+     * zone.
+     */
+    @VisibleForTesting
+    public static final int TELEPHONY_SCORE_USAGE_THRESHOLD = TELEPHONY_SCORE_MEDIUM;
+
+    /**
+     * The number of suggestions to keep. These are logged in bug reports to assist when debugging
+     * issues with detection.
+     */
+    private static final int KEEP_SUGGESTION_HISTORY_SIZE = 10;
+
+    @NonNull
+    private final Callback mCallback;
+
+    /**
+     * A log that records the decisions / decision metadata that affected the device's time zone.
+     * This is logged in bug reports to assist with debugging issues with detection.
+     */
+    @NonNull
+    private final LocalLog mTimeZoneChangesLog = new LocalLog(30, false /* useLocalTimestamps */);
+
+    /**
+     * A mapping from slotIndex to a telephony time zone suggestion. We typically expect one or two
+     * mappings: devices will have a small number of telephony devices and slotIndexes are assumed
+     * to be stable.
+     */
+    @GuardedBy("this")
+    private ArrayMapWithHistory<Integer, QualifiedTelephonyTimeZoneSuggestion>
+            mSuggestionBySlotIndex = new ArrayMapWithHistory<>(KEEP_SUGGESTION_HISTORY_SIZE);
+
+    /**
+     * Creates a new instance of {@link TimeZoneDetectorStrategyImpl}.
+     */
+    public static TimeZoneDetectorStrategyImpl create(Context context) {
+        Callback timeZoneDetectionServiceHelper = new TimeZoneDetectorCallbackImpl(context);
+        return new TimeZoneDetectorStrategyImpl(timeZoneDetectionServiceHelper);
+    }
+
+    @VisibleForTesting
+    public TimeZoneDetectorStrategyImpl(Callback callback) {
+        mCallback = Objects.requireNonNull(callback);
+    }
+
+    @Override
+    public synchronized void suggestManualTimeZone(@NonNull ManualTimeZoneSuggestion suggestion) {
+        Objects.requireNonNull(suggestion);
+
+        String timeZoneId = suggestion.getZoneId();
+        String cause = "Manual time suggestion received: suggestion=" + suggestion;
+        setDeviceTimeZoneIfRequired(ORIGIN_MANUAL, timeZoneId, cause);
+    }
+
+    @Override
+    public synchronized void suggestTelephonyTimeZone(
+            @NonNull TelephonyTimeZoneSuggestion suggestion) {
+        if (DBG) {
+            Slog.d(LOG_TAG, "Telephony suggestion received. newSuggestion=" + suggestion);
+        }
+        Objects.requireNonNull(suggestion);
+
+        // Score the suggestion.
+        int score = scoreTelephonySuggestion(suggestion);
+        QualifiedTelephonyTimeZoneSuggestion scoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(suggestion, score);
+
+        // Store the suggestion against the correct slotIndex.
+        mSuggestionBySlotIndex.put(suggestion.getSlotIndex(), scoredSuggestion);
+
+        // Now perform auto time zone detection. The new suggestion may be used to modify the time
+        // zone setting.
+        String reason = "New telephony time suggested. suggestion=" + suggestion;
+        doAutoTimeZoneDetection(reason);
+    }
+
+    private static int scoreTelephonySuggestion(@NonNull TelephonyTimeZoneSuggestion suggestion) {
+        int score;
+        if (suggestion.getZoneId() == null) {
+            score = TELEPHONY_SCORE_NONE;
+        } else if (suggestion.getMatchType() == MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY
+                || suggestion.getMatchType() == MATCH_TYPE_EMULATOR_ZONE_ID) {
+            // Handle emulator / test cases : These suggestions should always just be used.
+            score = TELEPHONY_SCORE_HIGHEST;
+        } else if (suggestion.getQuality() == QUALITY_SINGLE_ZONE) {
+            score = TELEPHONY_SCORE_HIGH;
+        } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET) {
+            // The suggestion may be wrong, but at least the offset should be correct.
+            score = TELEPHONY_SCORE_MEDIUM;
+        } else if (suggestion.getQuality() == QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS) {
+            // The suggestion has a good chance of being wrong.
+            score = TELEPHONY_SCORE_LOW;
+        } else {
+            throw new AssertionError();
+        }
+        return score;
+    }
+
+    /**
+     * Finds the best available time zone suggestion from all slotIndexes. If it is high-enough
+     * quality and automatic time zone detection is enabled then it will be set on the device. The
+     * outcome can be that this strategy becomes / remains un-opinionated and nothing is set.
+     */
+    @GuardedBy("this")
+    private void doAutoTimeZoneDetection(@NonNull String detectionReason) {
+        if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
+            // Avoid doing unnecessary work with this (race-prone) check.
+            return;
+        }
+
+        QualifiedTelephonyTimeZoneSuggestion bestTelephonySuggestion =
+                findBestTelephonySuggestion();
+
+        // Work out what to do with the best suggestion.
+        if (bestTelephonySuggestion == null) {
+            // There is no telephony suggestion available at all. Become un-opinionated.
+            if (DBG) {
+                Slog.d(LOG_TAG, "Could not determine time zone: No best telephony suggestion."
+                        + " detectionReason=" + detectionReason);
+            }
+            return;
+        }
+
+        // Special case handling for uninitialized devices. This should only happen once.
+        String newZoneId = bestTelephonySuggestion.suggestion.getZoneId();
+        if (newZoneId != null && !mCallback.isDeviceTimeZoneInitialized()) {
+            String cause = "Device has no time zone set. Attempting to set the device to the best"
+                    + " available suggestion."
+                    + " bestTelephonySuggestion=" + bestTelephonySuggestion
+                    + ", detectionReason=" + detectionReason;
+            Slog.i(LOG_TAG, cause);
+            setDeviceTimeZoneIfRequired(ORIGIN_TELEPHONY, newZoneId, cause);
+            return;
+        }
+
+        boolean suggestionGoodEnough =
+                bestTelephonySuggestion.score >= TELEPHONY_SCORE_USAGE_THRESHOLD;
+        if (!suggestionGoodEnough) {
+            if (DBG) {
+                Slog.d(LOG_TAG, "Best suggestion not good enough."
+                        + " bestTelephonySuggestion=" + bestTelephonySuggestion
+                        + ", detectionReason=" + detectionReason);
+            }
+            return;
+        }
+
+        // Paranoia: Every suggestion above the SCORE_USAGE_THRESHOLD should have a non-null time
+        // zone ID.
+        if (newZoneId == null) {
+            Slog.w(LOG_TAG, "Empty zone suggestion scored higher than expected. This is an error:"
+                    + " bestTelephonySuggestion=" + bestTelephonySuggestion
+                    + " detectionReason=" + detectionReason);
+            return;
+        }
+
+        String zoneId = bestTelephonySuggestion.suggestion.getZoneId();
+        String cause = "Found good suggestion."
+                + ", bestTelephonySuggestion=" + bestTelephonySuggestion
+                + ", detectionReason=" + detectionReason;
+        setDeviceTimeZoneIfRequired(ORIGIN_TELEPHONY, zoneId, cause);
+    }
+
+    @GuardedBy("this")
+    private void setDeviceTimeZoneIfRequired(
+            @Origin int origin, @NonNull String newZoneId, @NonNull String cause) {
+        Objects.requireNonNull(newZoneId);
+        Objects.requireNonNull(cause);
+
+        boolean isOriginAutomatic = isOriginAutomatic(origin);
+        if (isOriginAutomatic) {
+            if (!mCallback.isAutoTimeZoneDetectionEnabled()) {
+                if (DBG) {
+                    Slog.d(LOG_TAG, "Auto time zone detection is not enabled."
+                            + " origin=" + origin
+                            + ", newZoneId=" + newZoneId
+                            + ", cause=" + cause);
+                }
+                return;
+            }
+        } else {
+            if (mCallback.isAutoTimeZoneDetectionEnabled()) {
+                if (DBG) {
+                    Slog.d(LOG_TAG, "Auto time zone detection is enabled."
+                            + " origin=" + origin
+                            + ", newZoneId=" + newZoneId
+                            + ", cause=" + cause);
+                }
+                return;
+            }
+        }
+
+        String currentZoneId = mCallback.getDeviceTimeZone();
+
+        // Avoid unnecessary changes / intents.
+        if (newZoneId.equals(currentZoneId)) {
+            // No need to set the device time zone - the setting is already what we would be
+            // suggesting.
+            if (DBG) {
+                Slog.d(LOG_TAG, "No need to change the time zone;"
+                        + " device is already set to the suggested zone."
+                        + " origin=" + origin
+                        + ", newZoneId=" + newZoneId
+                        + ", cause=" + cause);
+            }
+            return;
+        }
+
+        mCallback.setDeviceTimeZone(newZoneId);
+        String msg = "Set device time zone."
+                + " origin=" + origin
+                + ", currentZoneId=" + currentZoneId
+                + ", newZoneId=" + newZoneId
+                + ", cause=" + cause;
+        if (DBG) {
+            Slog.d(LOG_TAG, msg);
+        }
+        mTimeZoneChangesLog.log(msg);
+    }
+
+    private static boolean isOriginAutomatic(@Origin int origin) {
+        return origin != ORIGIN_MANUAL;
+    }
+
+    @GuardedBy("this")
+    @Nullable
+    private QualifiedTelephonyTimeZoneSuggestion findBestTelephonySuggestion() {
+        QualifiedTelephonyTimeZoneSuggestion bestSuggestion = null;
+
+        // Iterate over the latest QualifiedTelephonyTimeZoneSuggestion objects received for each
+        // slotIndex and find the best. Note that we deliberately do not look at age: the caller can
+        // rate-limit so age is not a strong indicator of confidence. Instead, the callers are
+        // expected to withdraw suggestions they no longer have confidence in.
+        for (int i = 0; i < mSuggestionBySlotIndex.size(); i++) {
+            QualifiedTelephonyTimeZoneSuggestion candidateSuggestion =
+                    mSuggestionBySlotIndex.valueAt(i);
+            if (candidateSuggestion == null) {
+                // Unexpected
+                continue;
+            }
+
+            if (bestSuggestion == null) {
+                bestSuggestion = candidateSuggestion;
+            } else if (candidateSuggestion.score > bestSuggestion.score) {
+                bestSuggestion = candidateSuggestion;
+            } else if (candidateSuggestion.score == bestSuggestion.score) {
+                // Tie! Use the suggestion with the lowest slotIndex.
+                int candidateSlotIndex = candidateSuggestion.suggestion.getSlotIndex();
+                int bestSlotIndex = bestSuggestion.suggestion.getSlotIndex();
+                if (candidateSlotIndex < bestSlotIndex) {
+                    bestSuggestion = candidateSuggestion;
+                }
+            }
+        }
+        return bestSuggestion;
+    }
+
+    /**
+     * Returns the current best telephony suggestion. Not intended for general use: it is used
+     * during tests to check strategy behavior.
+     */
+    @VisibleForTesting
+    @Nullable
+    public synchronized QualifiedTelephonyTimeZoneSuggestion findBestTelephonySuggestionForTests() {
+        return findBestTelephonySuggestion();
+    }
+
+    @Override
+    public synchronized void handleAutoTimeZoneDetectionChanged() {
+        if (DBG) {
+            Slog.d(LOG_TAG, "handleTimeZoneDetectionChange() called");
+        }
+        if (mCallback.isAutoTimeZoneDetectionEnabled()) {
+            // When the user enabled time zone detection, run the time zone detection and change the
+            // device time zone if possible.
+            String reason = "Auto time zone detection setting enabled.";
+            doAutoTimeZoneDetection(reason);
+        }
+    }
+
+    /**
+     * Dumps internal state such as field values.
+     */
+    @Override
+    public synchronized void dump(PrintWriter pw, String[] args) {
+        IndentingPrintWriter ipw = new IndentingPrintWriter(pw, " ");
+        ipw.println("TimeZoneDetectorStrategy:");
+
+        ipw.increaseIndent(); // level 1
+        ipw.println("mCallback.isTimeZoneDetectionEnabled()="
+                + mCallback.isAutoTimeZoneDetectionEnabled());
+        ipw.println("mCallback.isDeviceTimeZoneInitialized()="
+                + mCallback.isDeviceTimeZoneInitialized());
+        ipw.println("mCallback.getDeviceTimeZone()="
+                + mCallback.getDeviceTimeZone());
+
+        ipw.println("Time zone change log:");
+        ipw.increaseIndent(); // level 2
+        mTimeZoneChangesLog.dump(ipw);
+        ipw.decreaseIndent(); // level 2
+
+        ipw.println("Telephony suggestion history:");
+        ipw.increaseIndent(); // level 2
+        mSuggestionBySlotIndex.dump(ipw);
+        ipw.decreaseIndent(); // level 2
+        ipw.decreaseIndent(); // level 1
+        ipw.flush();
+    }
+
+    /**
+     * A method used to inspect strategy state during tests. Not intended for general use.
+     */
+    @VisibleForTesting
+    public synchronized QualifiedTelephonyTimeZoneSuggestion getLatestTelephonySuggestion(
+            int slotIndex) {
+        return mSuggestionBySlotIndex.get(slotIndex);
+    }
+
+    /**
+     * A {@link TelephonyTimeZoneSuggestion} with additional qualifying metadata.
+     */
+    @VisibleForTesting
+    public static class QualifiedTelephonyTimeZoneSuggestion {
+
+        @VisibleForTesting
+        public final TelephonyTimeZoneSuggestion suggestion;
+
+        /**
+         * The score the suggestion has been given. This can be used to rank against other
+         * suggestions of the same type.
+         */
+        @VisibleForTesting
+        public final int score;
+
+        @VisibleForTesting
+        public QualifiedTelephonyTimeZoneSuggestion(
+                TelephonyTimeZoneSuggestion suggestion, int score) {
+            this.suggestion = suggestion;
+            this.score = score;
+        }
+
+        @Override
+        public boolean equals(Object o) {
+            if (this == o) {
+                return true;
+            }
+            if (o == null || getClass() != o.getClass()) {
+                return false;
+            }
+            QualifiedTelephonyTimeZoneSuggestion that = (QualifiedTelephonyTimeZoneSuggestion) o;
+            return score == that.score
+                    && suggestion.equals(that.suggestion);
+        }
+
+        @Override
+        public int hashCode() {
+            return Objects.hash(score, suggestion);
+        }
+
+        @Override
+        public String toString() {
+            return "QualifiedTelephonyTimeZoneSuggestion{"
+                    + "suggestion=" + suggestion
+                    + ", score=" + score
+                    + '}';
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/tv/TvInputManagerService.java b/services/core/java/com/android/server/tv/TvInputManagerService.java
index 4f010d5..e3b1152c 100755
--- a/services/core/java/com/android/server/tv/TvInputManagerService.java
+++ b/services/core/java/com/android/server/tv/TvInputManagerService.java
@@ -383,36 +383,38 @@
             if (mCurrentUserId == userId) {
                 return;
             }
-            UserState userState = mUserStates.get(mCurrentUserId);
-            List<SessionState> sessionStatesToRelease = new ArrayList<>();
-            for (SessionState sessionState : userState.sessionStateMap.values()) {
-                if (sessionState.session != null && !sessionState.isRecordingSession) {
-                    sessionStatesToRelease.add(sessionState);
-                }
-            }
-            for (SessionState sessionState : sessionStatesToRelease) {
-                try {
-                    sessionState.session.release();
-                } catch (RemoteException e) {
-                    Slog.e(TAG, "error in release", e);
-                }
-                clearSessionAndNotifyClientLocked(sessionState);
-            }
-
-            for (Iterator<ComponentName> it = userState.serviceStateMap.keySet().iterator();
-                 it.hasNext(); ) {
-                ComponentName component = it.next();
-                ServiceState serviceState = userState.serviceStateMap.get(component);
-                if (serviceState != null && serviceState.sessionTokens.isEmpty()) {
-                    if (serviceState.callback != null) {
-                        try {
-                            serviceState.service.unregisterCallback(serviceState.callback);
-                        } catch (RemoteException e) {
-                            Slog.e(TAG, "error in unregisterCallback", e);
-                        }
+            if (mUserStates.contains(mCurrentUserId)) {
+                UserState userState = mUserStates.get(mCurrentUserId);
+                List<SessionState> sessionStatesToRelease = new ArrayList<>();
+                for (SessionState sessionState : userState.sessionStateMap.values()) {
+                    if (sessionState.session != null && !sessionState.isRecordingSession) {
+                        sessionStatesToRelease.add(sessionState);
                     }
-                    mContext.unbindService(serviceState.connection);
-                    it.remove();
+                }
+                for (SessionState sessionState : sessionStatesToRelease) {
+                    try {
+                        sessionState.session.release();
+                    } catch (RemoteException e) {
+                        Slog.e(TAG, "error in release", e);
+                    }
+                    clearSessionAndNotifyClientLocked(sessionState);
+                }
+
+                for (Iterator<ComponentName> it = userState.serviceStateMap.keySet().iterator();
+                    it.hasNext(); ) {
+                    ComponentName component = it.next();
+                    ServiceState serviceState = userState.serviceStateMap.get(component);
+                    if (serviceState != null && serviceState.sessionTokens.isEmpty()) {
+                        if (serviceState.callback != null) {
+                            try {
+                                serviceState.service.unregisterCallback(serviceState.callback);
+                            } catch (RemoteException e) {
+                                Slog.e(TAG, "error in unregisterCallback", e);
+                            }
+                        }
+                        mContext.unbindService(serviceState.connection);
+                        it.remove();
+                    }
                 }
             }
 
@@ -490,6 +492,10 @@
             userState.mainSessionToken = null;
 
             mUserStates.remove(userId);
+
+            if (userId == mCurrentUserId) {
+                switchUser(UserHandle.USER_SYSTEM);
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/tv/tuner/ClientProfile.java b/services/core/java/com/android/server/tv/tuner/ClientProfile.java
new file mode 100644
index 0000000..3845195
--- /dev/null
+++ b/services/core/java/com/android/server/tv/tuner/ClientProfile.java
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.tv.tuner;
+
+/**
+  * A client profile object used by the Tuner Resource Manager to record the registered clients'
+  * information.
+  *
+  * @hide
+  */
+public final class ClientProfile {
+    public static final int INVALID_GROUP_ID = -1;
+    /**
+     * Client id sent to the client when registering with
+     * {@link #registerClientProfile(ResourceClientProfile, TunerResourceManagerCallback, int[])}
+     */
+    private final int mClientId;
+
+    /**
+     * see {@link ResourceClientProfile}
+     */
+    private final String mTvInputSessionId;
+
+    /**
+     * see {@link ResourceClientProfile}
+     */
+    private final int mUseCase;
+
+    /**
+     * Process id queried from {@link TvInputManager#}
+     */
+    private final int mProcessId;
+
+    /**
+     * All the clients that share the same resource would be under the same group id.
+     *
+     * <p>If a client's resource is to be reclaimed, all other clients under the same group id
+     * also lose their resources.
+     */
+    private int mGroupId = INVALID_GROUP_ID;
+
+    /**
+     * Optional nice value for TRM to reduce client’s priority.
+     */
+    private int mNiceValue;
+
+    /**
+     * Optional arbitrary priority value given by the client.
+     *
+     * <p>This value can override the default priorotiy calculated from
+     * the client profile.
+     */
+    private int mPriority;
+
+    private ClientProfile(ClientProfileBuilder builder) {
+        this.mClientId = builder.mClientId;
+        this.mTvInputSessionId = builder.mTvInputSessionId;
+        this.mUseCase = builder.mUseCase;
+        this.mProcessId = builder.mProcessId;
+        this.mGroupId = builder.mGroupId;
+        this.mNiceValue = builder.mNiceValue;
+        this.mPriority = builder.mPriority;
+    }
+
+    public int getClientId() {
+        return mClientId;
+    }
+
+    public String getTvInputSessionId() {
+        return mTvInputSessionId;
+    }
+
+    public int getUseCase() {
+        return mUseCase;
+    }
+
+    public int getProcessId() {
+        return mProcessId;
+    }
+
+    public int getGroupId() {
+        return mGroupId;
+    }
+
+    public int getPriority() {
+        return mPriority;
+    }
+
+    public int getNiceValue() {
+        return mNiceValue;
+    }
+
+    public void setGroupId(int groupId) {
+        mGroupId = groupId;
+    }
+
+    public void setPriority(int priority) {
+        mPriority = priority;
+    }
+
+    public void setNiceValue(int niceValue) {
+        mNiceValue = niceValue;
+    }
+
+    @Override
+    public String toString() {
+        return "ClientProfile: " + this.mClientId + ", " + this.mTvInputSessionId + ", "
+                + this.mUseCase + ", " + this.mProcessId;
+    }
+
+    public static class ClientProfileBuilder {
+        private final int mClientId;
+        private String mTvInputSessionId;
+        private int mUseCase;
+        private int mProcessId;
+        private int mGroupId;
+        private int mNiceValue;
+        private int mPriority;
+
+        ClientProfileBuilder(int clientId) {
+            this.mClientId = clientId;
+        }
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param useCase the useCase of the client.
+          */
+        public ClientProfileBuilder useCase(int useCase) {
+            this.mUseCase = useCase;
+            return this;
+        }
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param tvInputSessionId the id of the tv input session.
+          */
+        public ClientProfileBuilder tvInputSessionId(String tvInputSessionId) {
+            this.mTvInputSessionId = tvInputSessionId;
+            return this;
+        }
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param processId the id of process.
+          */
+        public ClientProfileBuilder processId(int processId) {
+            this.mProcessId = processId;
+            return this;
+        }
+
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param groupId the id of the group that shares the same resource.
+          */
+        public ClientProfileBuilder groupId(int groupId) {
+            this.mGroupId = groupId;
+            return this;
+        }
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param niceValue the nice value of the client.
+          */
+        public ClientProfileBuilder niceValue(int niceValue) {
+            this.mNiceValue = niceValue;
+            return this;
+        }
+
+        /**
+          * Builder for {@link ClientProfile}.
+          *
+          * @param priority the priority value of the client.
+          */
+        public ClientProfileBuilder priority(int priority) {
+            this.mPriority = priority;
+            return this;
+        }
+
+        /**
+          * Build a {@link ClientProfile}.
+          *
+          * @return {@link ClientProfile}.
+          */
+        public ClientProfile build() {
+            ClientProfile clientProfile = new ClientProfile(this);
+            return clientProfile;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/tv/tuner/TunerResourceManagerService.java b/services/core/java/com/android/server/tv/tuner/TunerResourceManagerService.java
new file mode 100644
index 0000000..e876421
--- /dev/null
+++ b/services/core/java/com/android/server/tv/tuner/TunerResourceManagerService.java
@@ -0,0 +1,258 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.server.tv.tuner;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.content.Context;
+import android.media.tv.TvInputManager;
+import android.media.tv.tuner.CasSessionRequest;
+import android.media.tv.tuner.ITunerResourceManager;
+import android.media.tv.tuner.ITunerResourceManagerListener;
+import android.media.tv.tuner.ResourceClientProfile;
+import android.media.tv.tuner.TunerFrontendInfo;
+import android.media.tv.tuner.TunerFrontendRequest;
+import android.media.tv.tuner.TunerLnbRequest;
+import android.media.tv.tuner.TunerResourceManager;
+import android.os.RemoteException;
+import android.util.Log;
+import android.util.Slog;
+import android.util.SparseArray;
+
+import com.android.server.SystemService;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+  * This class provides a system service that manages the TV tuner resources.
+  *
+  * @hide
+  */
+public class TunerResourceManagerService extends SystemService {
+    private static final String TAG = "TunerResourceManagerService";
+    private static final boolean DEBUG = Log.isLoggable(TAG, Log.DEBUG);
+
+    private SparseArray<ClientProfile> mClientProfiles = new SparseArray<>();
+    private SparseArray<ITunerResourceManagerListener> mListeners = new SparseArray<>();
+    private int mNextUnusedFrontendId = 0;
+    private List<Integer> mReleasedClientId = new ArrayList<Integer>();
+    private List<Integer> mAvailableFrontendIds = new ArrayList<Integer>();
+
+    private TvInputManager mManager;
+
+    public TunerResourceManagerService(@Nullable Context context) {
+        super(context);
+    }
+
+    @Override
+    public void onStart() {
+        publishBinderService(Context.TV_TUNER_RESOURCE_MGR_SERVICE, new BinderService());
+        mManager = (TvInputManager) getContext()
+                .getSystemService(Context.TV_INPUT_SERVICE);
+    }
+
+    private final class BinderService extends ITunerResourceManager.Stub {
+        @Override
+        public void registerClientProfile(@NonNull ResourceClientProfile profile,
+                            @NonNull ITunerResourceManagerListener listener,
+                            @NonNull int[] clientId) {
+            if (DEBUG) {
+                Slog.d(TAG, "registerClientProfile(clientProfile=" + profile + ")");
+            }
+
+            // TODO tell if the client already exists
+            if (mReleasedClientId.isEmpty()) {
+                clientId[0] = mNextUnusedFrontendId++;
+            } else {
+                clientId[0] = mReleasedClientId.get(0);
+                mReleasedClientId.remove(0);
+            }
+
+            if (mManager == null) {
+                Slog.e(TAG, "TvInputManager is null. Can't register client profile.");
+                return;
+            }
+
+            int callingPid = mManager.getClientPid(profile.getTvInputSessionId());
+
+            ClientProfile clientProfile = new ClientProfile.ClientProfileBuilder(
+                    clientId[0])
+                    .tvInputSessionId(profile.getTvInputSessionId())
+                    .useCase(profile.getUseCase())
+                    .processId(callingPid)
+                    .build();
+            mClientProfiles.append(clientId[0], clientProfile);
+            mListeners.append(clientId[0], listener);
+        }
+
+        @Override
+        public void unregisterClientProfile(int clientId) {
+            if (DEBUG) {
+                Slog.d(TAG, "unregisterClientProfile(clientId=" + clientId + ")");
+            }
+
+            mClientProfiles.remove(clientId);
+            mListeners.remove(clientId);
+            mReleasedClientId.add(clientId);
+        }
+
+        @Override
+        public boolean updateClientPriority(int clientId, int priority, int niceValue) {
+            if (DEBUG) {
+                Slog.d(TAG, "updateClientPriority(clientId=" + clientId
+                        + ", priority=" + priority + ", niceValue=" + niceValue + ")");
+            }
+
+            ClientProfile profile = mClientProfiles.get(clientId);
+            if (profile == null) {
+                Slog.e(TAG, "Can not find client profile with id " + clientId
+                        + " when trying to update the client priority.");
+                return false;
+            }
+
+            profile.setPriority(priority);
+            profile.setNiceValue(niceValue);
+
+            return true;
+        }
+
+        @Override
+        public void setFrontendInfoList(@NonNull TunerFrontendInfo[] infos)
+                throws RemoteException {
+            if (infos == null || infos.length == 0) {
+                Slog.d(TAG, "Can't update with empty frontend info");
+                return;
+            }
+
+            if (DEBUG) {
+                Slog.d(TAG, "updateFrontendInfo:");
+                for (int i = 0; i < infos.length; i++) {
+                    Slog.d(TAG, infos[i].toString());
+                }
+            }
+        }
+
+        @Override
+        public void updateCasInfo(int casSystemId, int maxSessionNum) {
+            if (DEBUG) {
+                Slog.d(TAG, "updateCasInfo(casSystemId="
+                        + casSystemId + ", maxSessionNum=" + maxSessionNum + ")");
+            }
+        }
+
+        @Override
+        public void setLnbInfoList(int[] lnbIds) {
+            if (DEBUG) {
+                for (int i = 0; i < lnbIds.length; i++) {
+                    Slog.d(TAG, "updateLnbInfo(lnbId=" + lnbIds[i] + ")");
+                }
+            }
+        }
+
+        @Override
+        public boolean requestFrontend(@NonNull TunerFrontendRequest request,
+                                       @NonNull int[] frontendId) throws RemoteException {
+            if (DEBUG) {
+                Slog.d(TAG, "requestFrontend(request=" + request + ")");
+            }
+
+            frontendId[0] = TunerResourceManager.INVALID_FRONTEND_ID;
+
+            if (getContext() == null) {
+                Slog.e(TAG, "Can not find context when requesting frontend");
+                return false;
+            }
+
+            if (mClientProfiles.get(request.getClientId()) == null) {
+                Slog.e(TAG, "Request from unregistered client. Id: "
+                        + request.getClientId());
+                return false;
+            }
+
+            String sessionId = mClientProfiles.get(request.getClientId())
+                    .getTvInputSessionId();
+
+            if (DEBUG) {
+                Slog.d(TAG, "session Id:" + sessionId + ")");
+            }
+
+            if (DEBUG) {
+                Slog.d(TAG, "No available Frontend found.");
+            }
+
+            return false;
+        }
+
+        @Override
+        public void shareFrontend(int selfClientId, int targetClientId) {
+            if (DEBUG) {
+                Slog.d(TAG, "shareFrontend from "
+                        + selfClientId + " with " + targetClientId);
+            }
+        }
+
+        @Override
+        public boolean requestCasSession(@NonNull CasSessionRequest request,
+                    @NonNull int[] sessionResourceId) {
+            if (DEBUG) {
+                Slog.d(TAG, "requestCasSession(request=" + request + ")");
+            }
+
+            return true;
+        }
+
+        @Override
+        public boolean requestLnb(@NonNull TunerLnbRequest request, @NonNull int[] lnbId) {
+            if (DEBUG) {
+                Slog.d(TAG, "requestLnb(request=" + request + ")");
+            }
+            return true;
+        }
+
+        @Override
+        public void releaseFrontend(int frontendId) {
+            if (DEBUG) {
+                Slog.d(TAG, "releaseFrontend(id=" + frontendId + ")");
+            }
+        }
+
+        @Override
+        public void releaseCasSession(int sessionResourceId) {
+            if (DEBUG) {
+                Slog.d(TAG, "releaseCasSession(sessionResourceId=" + sessionResourceId + ")");
+            }
+        }
+
+        @Override
+        public void releaseLnb(int lnbId) {
+            if (DEBUG) {
+                Slog.d(TAG, "releaseLnb(lnbId=" + lnbId + ")");
+            }
+        }
+
+        @Override
+        public boolean isHigherPriority(ResourceClientProfile challengerProfile,
+                ResourceClientProfile holderProfile) {
+            if (DEBUG) {
+                Slog.d(TAG, "isHigherPriority(challengerProfile=" + challengerProfile
+                        + ", holderProfile=" + challengerProfile + ")");
+            }
+            return true;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/wm/AccessibilityController.java b/services/core/java/com/android/server/wm/AccessibilityController.java
index d746691..61a33b4 100644
--- a/services/core/java/com/android/server/wm/AccessibilityController.java
+++ b/services/core/java/com/android/server/wm/AccessibilityController.java
@@ -361,7 +361,7 @@
         private final Region mTempRegion3 = new Region();
         private final Region mTempRegion4 = new Region();
 
-        private final Context mContext;
+        private final Context mDisplayContext;
         private final WindowManagerService mService;
         private final MagnifiedViewport mMagnifedViewport;
         private final Handler mHandler;
@@ -378,14 +378,14 @@
                 DisplayContent displayContent,
                 Display display,
                 MagnificationCallbacks callbacks) {
-            mContext = windowManagerService.mContext;
+            mDisplayContext = windowManagerService.mContext.createDisplayContext(display);
             mService = windowManagerService;
             mCallbacks = callbacks;
             mDisplayContent = displayContent;
             mDisplay = display;
             mHandler = new MyHandler(mService.mH.getLooper());
             mMagnifedViewport = new MagnifiedViewport();
-            mLongAnimationDuration = mContext.getResources().getInteger(
+            mLongAnimationDuration = mDisplayContext.getResources().getInteger(
                     com.android.internal.R.integer.config_longAnimTime);
         }
 
@@ -568,8 +568,6 @@
 
             private final MagnificationSpec mMagnificationSpec = MagnificationSpec.obtain();
 
-            private final WindowManager mWindowManager;
-
             private final float mBorderWidth;
             private final int mHalfBorderWidth;
             private final int mDrawBorderInset;
@@ -580,14 +578,13 @@
             private int mTempLayer = 0;
 
             public MagnifiedViewport() {
-                mWindowManager = (WindowManager) mContext.getSystemService(Service.WINDOW_SERVICE);
-                mBorderWidth = mContext.getResources().getDimension(
+                mBorderWidth = mDisplayContext.getResources().getDimension(
                         com.android.internal.R.dimen.accessibility_magnification_indicator_width);
                 mHalfBorderWidth = (int) Math.ceil(mBorderWidth / 2);
                 mDrawBorderInset = (int) mBorderWidth / 2;
-                mWindow = new ViewportWindow(mContext);
+                mWindow = new ViewportWindow(mDisplayContext);
 
-                if (mContext.getResources().getConfiguration().isScreenRound()) {
+                if (mDisplayContext.getResources().getConfiguration().isScreenRound()) {
                     mCircularPath = new Path();
                     mDisplay.getRealSize(mTempPoint);
                     final int centerXY = mTempPoint.x / 2;
@@ -916,7 +913,7 @@
 
                 public void updateSize(SurfaceControl.Transaction t) {
                     synchronized (mService.mGlobalLock) {
-                        mWindowManager.getDefaultDisplay().getRealSize(mTempPoint);
+                        mDisplay.getRealSize(mTempPoint);
                         t.setBufferSize(mSurfaceControl, mTempPoint.x, mTempPoint.y);
                         invalidate(mDirtyRect);
                     }
diff --git a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
index 23b94bd..0502d0b 100644
--- a/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
+++ b/services/core/java/com/android/server/wm/ActivityMetricsLogger.java
@@ -83,13 +83,13 @@
 import android.util.EventLog;
 import android.util.Log;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.logging.MetricsLogger;
 import com.android.internal.os.BackgroundThread;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.function.pooled.PooledLambda;
 import com.android.server.LocalServices;
 
@@ -768,8 +768,8 @@
         builder.setType(type);
         builder.addTaggedData(FIELD_CLASS_NAME, activity.info.name);
         mMetricsLogger.write(builder);
-        StatsLog.write(
-                StatsLog.APP_START_CANCELED,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.APP_START_CANCELED,
                 activity.info.applicationInfo.uid,
                 activity.packageName,
                 convertAppStartTransitionType(type),
@@ -844,8 +844,8 @@
         builder.addTaggedData(PACKAGE_OPTIMIZATION_COMPILATION_FILTER,
                 packageOptimizationInfo.getCompilationFilter());
         mMetricsLogger.write(builder);
-        StatsLog.write(
-                StatsLog.APP_START_OCCURRED,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.APP_START_OCCURRED,
                 info.applicationInfo.uid,
                 info.packageName,
                 convertAppStartTransitionType(info.type),
@@ -895,15 +895,15 @@
 
     private int convertAppStartTransitionType(int tronType) {
         if (tronType == TYPE_TRANSITION_COLD_LAUNCH) {
-            return StatsLog.APP_START_OCCURRED__TYPE__COLD;
+            return FrameworkStatsLog.APP_START_OCCURRED__TYPE__COLD;
         }
         if (tronType == TYPE_TRANSITION_WARM_LAUNCH) {
-            return StatsLog.APP_START_OCCURRED__TYPE__WARM;
+            return FrameworkStatsLog.APP_START_OCCURRED__TYPE__WARM;
         }
         if (tronType == TYPE_TRANSITION_HOT_LAUNCH) {
-            return StatsLog.APP_START_OCCURRED__TYPE__HOT;
+            return FrameworkStatsLog.APP_START_OCCURRED__TYPE__HOT;
         }
-        return StatsLog.APP_START_OCCURRED__TYPE__UNKNOWN;
+        return FrameworkStatsLog.APP_START_OCCURRED__TYPE__UNKNOWN;
     }
 
     /** @return the last known window drawn delay of the given activity. */
@@ -957,13 +957,13 @@
         builder.addTaggedData(APP_TRANSITION_PROCESS_RUNNING,
                 info.mProcessRunning ? 1 : 0);
         mMetricsLogger.write(builder);
-        StatsLog.write(
-                StatsLog.APP_START_FULLY_DRAWN,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.APP_START_FULLY_DRAWN,
                 info.mLastLaunchedActivity.info.applicationInfo.uid,
                 info.mLastLaunchedActivity.packageName,
                 restoredFromBundle
-                        ? StatsLog.APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE
-                        : StatsLog.APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE,
+                        ? FrameworkStatsLog.APP_START_FULLY_DRAWN__TYPE__WITH_BUNDLE
+                        : FrameworkStatsLog.APP_START_FULLY_DRAWN__TYPE__WITHOUT_BUNDLE,
                 info.mLastLaunchedActivity.info.name,
                 info.mProcessRunning,
                 startupTimeMs);
@@ -1068,8 +1068,8 @@
             return;
         }
 
-        StatsLog.write(
-                StatsLog.APP_START_MEMORY_STATE_CAPTURED,
+        FrameworkStatsLog.write(
+                FrameworkStatsLog.APP_START_MEMORY_STATE_CAPTURED,
                 uid,
                 info.processName,
                 info.launchedActivityName,
@@ -1212,7 +1212,7 @@
         final ProtoOutputStream protoOutputStream =
                 new ProtoOutputStream(LAUNCH_OBSERVER_ACTIVITY_RECORD_PROTO_CHUNK_SIZE);
         // Write this data out as the top-most ActivityRecordProto (i.e. it is not a sub-object).
-        record.dumpDebug(protoOutputStream);
+        record.dumpDebug(protoOutputStream, WindowTraceLogLevel.ALL);
         final byte[] bytes = protoOutputStream.getBytes();
 
         Trace.traceEnd(Trace.TRACE_TAG_ACTIVITY_MANAGER);
diff --git a/services/core/java/com/android/server/wm/ActivityRecord.java b/services/core/java/com/android/server/wm/ActivityRecord.java
index f8f286a..e26dac6 100644
--- a/services/core/java/com/android/server/wm/ActivityRecord.java
+++ b/services/core/java/com/android/server/wm/ActivityRecord.java
@@ -196,6 +196,7 @@
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_FOCUS_LIGHT;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 import static com.android.server.wm.TaskPersister.DEBUG;
 import static com.android.server.wm.TaskPersister.IMAGE_EXTENSION;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
@@ -311,6 +312,8 @@
 import com.android.server.uri.UriPermissionOwner;
 import com.android.server.wm.ActivityMetricsLogger.TransitionInfoSnapshot;
 import com.android.server.wm.ActivityStack.ActivityState;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 import com.android.server.wm.WindowManagerService.H;
 import com.android.server.wm.utils.InsetUtils;
 
@@ -359,6 +362,7 @@
     private static final String TAG_PERSISTABLEBUNDLE = "persistable_bundle";
     private static final String ATTR_LAUNCHEDFROMUID = "launched_from_uid";
     private static final String ATTR_LAUNCHEDFROMPACKAGE = "launched_from_package";
+    private static final String ATTR_LAUNCHEDFROMFEATURE = "launched_from_feature";
     private static final String ATTR_RESOLVEDTYPE = "resolved_type";
     private static final String ATTR_COMPONENTSPECIFIED = "component_specified";
     static final String ACTIVITY_ICON_SUFFIX = "_activity_icon_";
@@ -419,6 +423,7 @@
     final int launchedFromPid; // always the pid who started the activity.
     final int launchedFromUid; // always the uid who started the activity.
     final String launchedFromPackage; // always the package who started the activity.
+    final @Nullable String launchedFromFeatureId; // always the feature in launchedFromPackage
     final Intent intent;    // the original intent that generated us
     final String shortComponentName; // the short component name of the intent
     final String resolvedType; // as per original caller;
@@ -770,6 +775,7 @@
                 pw.print(" processName="); pw.println(processName);
         pw.print(prefix); pw.print("launchedFromUid="); pw.print(launchedFromUid);
                 pw.print(" launchedFromPackage="); pw.print(launchedFromPackage);
+                pw.print(" launchedFromFeature="); pw.print(launchedFromFeatureId);
                 pw.print(" userId="); pw.println(mUserId);
         pw.print(prefix); pw.print("app="); pw.println(app);
         pw.print(prefix); pw.println(intent.toInsecureString());
@@ -1480,9 +1486,10 @@
     }
 
     ActivityRecord(ActivityTaskManagerService _service, WindowProcessController _caller,
-            int _launchedFromPid, int _launchedFromUid, String _launchedFromPackage, Intent _intent,
-            String _resolvedType, ActivityInfo aInfo, Configuration _configuration,
-            ActivityRecord _resultTo, String _resultWho, int _reqCode, boolean _componentSpecified,
+            int _launchedFromPid, int _launchedFromUid, String _launchedFromPackage,
+            @Nullable String _launchedFromFeature, Intent _intent, String _resolvedType,
+            ActivityInfo aInfo, Configuration _configuration, ActivityRecord _resultTo,
+            String _resultWho, int _reqCode, boolean _componentSpecified,
             boolean _rootVoiceInteraction, ActivityStackSupervisor supervisor,
             ActivityOptions options, ActivityRecord sourceRecord) {
         super(_service.mWindowManager, new Token(_intent).asBinder(), TYPE_APPLICATION, true,
@@ -1561,6 +1568,7 @@
         launchedFromPid = _launchedFromPid;
         launchedFromUid = _launchedFromUid;
         launchedFromPackage = _launchedFromPackage;
+        launchedFromFeatureId = _launchedFromFeature;
         shortComponentName = _intent.getComponent().flattenToShortString();
         resolvedType = _resolvedType;
         componentSpecified = _componentSpecified;
@@ -1626,12 +1634,7 @@
         requestedVrComponent = (aInfo.requestedVrComponent == null) ?
                 null : ComponentName.unflattenFromString(aInfo.requestedVrComponent);
 
-        lockTaskLaunchMode = aInfo.lockTaskLaunchMode;
-        if (info.applicationInfo.isPrivilegedApp()
-                && (lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_ALWAYS
-                || lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_NEVER)) {
-            lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
-        }
+        lockTaskLaunchMode = getLockTaskLaunchMode(aInfo, options);
 
         if (options != null) {
             pendingOptions = options;
@@ -1639,15 +1642,27 @@
             if (usageReport != null) {
                 appTimeTracker = new AppTimeTracker(usageReport);
             }
-            final boolean useLockTask = pendingOptions.getLockTaskMode();
-            if (useLockTask && lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_DEFAULT) {
-                lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
-            }
             // Gets launch display id from options. It returns INVALID_DISPLAY if not set.
             mHandoverLaunchDisplayId = options.getLaunchDisplayId();
         }
     }
 
+    static int getLockTaskLaunchMode(ActivityInfo aInfo, @Nullable ActivityOptions options) {
+        int lockTaskLaunchMode = aInfo.lockTaskLaunchMode;
+        if (aInfo.applicationInfo.isPrivilegedApp()
+                && (lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_ALWAYS
+                || lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_NEVER)) {
+            lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
+        }
+        if (options != null) {
+            final boolean useLockTask = options.getLockTaskMode();
+            if (useLockTask && lockTaskLaunchMode == LOCK_TASK_LAUNCH_MODE_DEFAULT) {
+                lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_IF_WHITELISTED;
+            }
+        }
+        return lockTaskLaunchMode;
+    }
+
     @Override
     ActivityRecord asActivityRecord() {
         // I am an activity record!
@@ -1875,9 +1890,13 @@
         } else if (newTask || !processRunning || (taskSwitch && !activityCreated)) {
             return STARTING_WINDOW_TYPE_SPLASH_SCREEN;
         } else if (taskSwitch && allowTaskSnapshot) {
-            return snapshot == null ? STARTING_WINDOW_TYPE_NONE
-                    : snapshotOrientationSameAsTask(snapshot) || fromRecents
-                            ? STARTING_WINDOW_TYPE_SNAPSHOT : STARTING_WINDOW_TYPE_SPLASH_SCREEN;
+            if (snapshotOrientationSameAsTask(snapshot) || (snapshot != null && fromRecents)) {
+                return STARTING_WINDOW_TYPE_SNAPSHOT;
+            }
+            if (!isActivityTypeHome()) {
+                return STARTING_WINDOW_TYPE_SPLASH_SCREEN;
+            }
+            return STARTING_WINDOW_TYPE_NONE;
         } else {
             return STARTING_WINDOW_TYPE_NONE;
         }
@@ -2270,7 +2289,7 @@
      * @return Whether AppOps allows this package to enter picture-in-picture.
      */
     private boolean checkEnterPictureInPictureAppOpsState() {
-        return mAtmService.getAppOpsService().checkOperation(
+        return mAtmService.getAppOpsManager().checkOpNoThrow(
                 OP_PICTURE_IN_PICTURE, info.applicationInfo.uid, packageName) == MODE_ALLOWED;
     }
 
@@ -3030,6 +3049,8 @@
         }
         // Throw away any services that have been bound by this activity.
         mServiceConnectionsHolder.disconnectActivityFromServices();
+        // This activity record is removing, make sure not to disconnect twice.
+        mServiceConnectionsHolder = null;
     }
 
     @Override
@@ -3070,7 +3091,11 @@
         mStackSupervisor.getActivityMetricsLogger().notifyActivityRemoved(this);
         waitingToShow = false;
 
-        boolean delayed = isAnimating(TRANSITION | CHILDREN);
+        // Defer removal of this activity when either a child is animating, or app transition is on
+        // going. App transition animation might be applied on the parent stack not on the activity,
+        // but the actual frame buffer is associated with the activity, so we have to keep the
+        // activity while a parent is animating.
+        boolean delayed = isAnimating(TRANSITION | PARENTS | CHILDREN);
         if (getDisplayContent().mClosingApps.contains(this)) {
             delayed = true;
         } else if (getDisplayContent().mAppTransition.isTransitionSet()) {
@@ -4072,7 +4097,8 @@
 
     @Override
     boolean applyAnimation(WindowManager.LayoutParams lp, int transit, boolean enter,
-            boolean isVoiceInteraction, @Nullable Runnable animationFinishedCallback) {
+            boolean isVoiceInteraction,
+            @Nullable OnAnimationFinishedCallback animationFinishedCallback) {
         if (mUseTransferredAnimation) {
             return false;
         }
@@ -4150,7 +4176,7 @@
             // We aren't delayed anything, but exiting windows rely on the animation finished
             // callback being called in case the ActivityRecord was pretending to be delayed,
             // which we might have done because we were in closing/opening apps list.
-            onAnimationFinished();
+            onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, null /* AnimationAdapter */);
             if (visible) {
                 // The token was made immediately visible, there will be no entrance animation.
                 // We need to inform the client the enter animation was finished.
@@ -6046,8 +6072,8 @@
     }
 
     @Override
-    protected void onAnimationFinished() {
-        super.onAnimationFinished();
+    protected void onAnimationFinished(@AnimationType int type, AnimationAdapter anim) {
+        super.onAnimationFinished(type, anim);
 
         Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "AR#onAnimationFinished");
         mTransit = TRANSIT_UNSET;
@@ -7261,6 +7287,9 @@
         if (launchedFromPackage != null) {
             out.attribute(null, ATTR_LAUNCHEDFROMPACKAGE, launchedFromPackage);
         }
+        if (launchedFromFeatureId != null) {
+            out.attribute(null, ATTR_LAUNCHEDFROMFEATURE, launchedFromFeatureId);
+        }
         if (resolvedType != null) {
             out.attribute(null, ATTR_RESOLVEDTYPE, resolvedType);
         }
@@ -7288,6 +7317,7 @@
         PersistableBundle persistentState = null;
         int launchedFromUid = 0;
         String launchedFromPackage = null;
+        String launchedFromFeature = null;
         String resolvedType = null;
         boolean componentSpecified = false;
         int userId = 0;
@@ -7306,6 +7336,8 @@
                 launchedFromUid = Integer.parseInt(attrValue);
             } else if (ATTR_LAUNCHEDFROMPACKAGE.equals(attrName)) {
                 launchedFromPackage = attrValue;
+            } else if (ATTR_LAUNCHEDFROMFEATURE.equals(attrName)) {
+                launchedFromFeature = attrValue;
             } else if (ATTR_RESOLVEDTYPE.equals(attrName)) {
                 resolvedType = attrValue;
             } else if (ATTR_COMPONENTSPECIFIED.equals(attrName)) {
@@ -7353,10 +7385,11 @@
                     " resolvedType=" + resolvedType);
         }
         final ActivityRecord r = new ActivityRecord(service, null /* caller */,
-                0 /* launchedFromPid */, launchedFromUid, launchedFromPackage, intent, resolvedType,
-                aInfo, service.getConfiguration(), null /* resultTo */, null /* resultWho */,
-                0 /* reqCode */, componentSpecified, false /* rootVoiceInteraction */,
-                stackSupervisor, null /* options */, null /* sourceRecord */);
+                0 /* launchedFromPid */, launchedFromUid, launchedFromPackage, launchedFromFeature,
+                intent, resolvedType, aInfo, service.getConfiguration(), null /* resultTo */,
+                null /* resultWho */, 0 /* reqCode */, componentSpecified,
+                false /* rootVoiceInteraction */, stackSupervisor, null /* options */,
+                null /* sourceRecord */);
 
         r.mPersistentState = persistentState;
         r.taskDescription = taskDescription;
@@ -7494,17 +7527,19 @@
      * Write all fields to an {@code ActivityRecordProto}. This assumes the
      * {@code ActivityRecordProto} is the outer-most proto data.
      */
-    void dumpDebug(ProtoOutputStream proto) {
+    void dumpDebug(ProtoOutputStream proto, @WindowTraceLogLevel int logLevel) {
         writeNameToProto(proto, NAME);
-        super.dumpDebug(proto, WINDOW_TOKEN, WindowTraceLogLevel.ALL);
+        super.dumpDebug(proto, WINDOW_TOKEN, logLevel);
         proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing);
         proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart());
-        proto.write(IS_ANIMATING, isAnimating());
-        if (mThumbnail != null) {
+        proto.write(IS_ANIMATING, isAnimating(PARENTS));
+        if (mThumbnail != null){
             mThumbnail.dumpDebug(proto, THUMBNAIL);
         }
         proto.write(FILLS_PARENT, mOccludesParent);
         proto.write(APP_STOPPED, mAppStopped);
+        proto.write(TRANSLUCENT, !occludesParent());
+        proto.write(VISIBLE, mVisible);
         proto.write(VISIBLE_REQUESTED, mVisibleRequested);
         proto.write(CLIENT_VISIBLE, mClientVisible);
         proto.write(DEFER_HIDING_CLIENT, mDeferHidingClient);
@@ -7527,24 +7562,12 @@
 
         writeIdentifierToProto(proto, IDENTIFIER);
         proto.write(STATE, mState.toString());
-        proto.write(VISIBLE_REQUESTED, mVisibleRequested);
         proto.write(FRONT_OF_TASK, isRootOfTask());
         if (hasProcess()) {
             proto.write(PROC_ID, app.getPid());
         }
-        proto.write(TRANSLUCENT, !occludesParent());
-        proto.write(VISIBLE, mVisible);
     }
 
-    public void dumpDebug(ProtoOutputStream proto, long fieldId) {
-        final long token = proto.start(fieldId);
-        dumpDebug(proto);
-        proto.end(token);
-    }
-
-    /**
-     * Copied from old AppWindowToken.
-     */
     @Override
     public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
@@ -7554,36 +7577,7 @@
         }
 
         final long token = proto.start(fieldId);
-        writeNameToProto(proto, NAME);
-        super.dumpDebug(proto, WINDOW_TOKEN, logLevel);
-        proto.write(LAST_SURFACE_SHOWING, mLastSurfaceShowing);
-        proto.write(IS_WAITING_FOR_TRANSITION_START, isWaitingForTransitionStart());
-        proto.write(IS_ANIMATING, isAnimating(PARENTS));
-        if (mThumbnail != null){
-            mThumbnail.dumpDebug(proto, THUMBNAIL);
-        }
-        proto.write(FILLS_PARENT, mOccludesParent);
-        proto.write(APP_STOPPED, mAppStopped);
-        proto.write(VISIBLE_REQUESTED, mVisibleRequested);
-        proto.write(CLIENT_VISIBLE, mClientVisible);
-        proto.write(DEFER_HIDING_CLIENT, mDeferHidingClient);
-        proto.write(REPORTED_DRAWN, reportedDrawn);
-        proto.write(REPORTED_VISIBLE, reportedVisible);
-        proto.write(NUM_INTERESTING_WINDOWS, mNumInterestingWindows);
-        proto.write(NUM_DRAWN_WINDOWS, mNumDrawnWindows);
-        proto.write(ALL_DRAWN, allDrawn);
-        proto.write(LAST_ALL_DRAWN, mLastAllDrawn);
-        if (startingWindow != null) {
-            startingWindow.writeIdentifierToProto(proto, STARTING_WINDOW);
-        }
-        proto.write(STARTING_DISPLAYED, startingDisplayed);
-        proto.write(STARTING_MOVED, startingMoved);
-        proto.write(VISIBLE_SET_FROM_TRANSFERRED_STARTING_WINDOW,
-                mVisibleSetFromTransferredStartingWindow);
-        for (Rect bounds : mFrozenBounds) {
-            bounds.dumpDebug(proto, FROZEN_BOUNDS);
-        }
-        proto.write(VISIBLE, mVisible);
+        dumpDebug(proto, logLevel);
         proto.end(token);
     }
 
@@ -7692,7 +7686,7 @@
         mainWindow.getContentInsets(insets);
         InsetUtils.addInsets(insets, getLetterboxInsets());
         return new RemoteAnimationTarget(task.mTaskId, record.getMode(),
-                record.mAdapter.mCapturedLeash, !task.fillsParent(),
+                record.mAdapter.mCapturedLeash, !fillsParent(),
                 mainWindow.mWinAnimator.mLastClipRect, insets,
                 getPrefixOrderIndex(), record.mAdapter.mPosition,
                 record.mAdapter.mStackBounds, task.getWindowConfiguration(),
@@ -7710,4 +7704,9 @@
         }
         win.getAnimationFrames(outFrame, outInsets, outStableInsets, outSurfaceInsets);
     }
+
+    void setPictureInPictureParams(PictureInPictureParams p) {
+        pictureInPictureArgs.copyOnlySet(p);
+        getTask().getRootTask().setPictureInPictureParams(p);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/ActivityServiceConnectionsHolder.java b/services/core/java/com/android/server/wm/ActivityServiceConnectionsHolder.java
index 6e75f9c..5dfc261 100644
--- a/services/core/java/com/android/server/wm/ActivityServiceConnectionsHolder.java
+++ b/services/core/java/com/android/server/wm/ActivityServiceConnectionsHolder.java
@@ -18,10 +18,13 @@
 
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
 import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_CLEANUP;
+import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
+
+import android.util.ArraySet;
+import android.util.Slog;
 
 import java.io.PrintWriter;
-import java.util.HashSet;
-import java.util.Iterator;
 import java.util.function.Consumer;
 
 /**
@@ -30,6 +33,8 @@
  * instance of this per activity for tracking all services connected to that activity. AM will
  * sometimes query this to bump the OOM score for the processes with services connected to visible
  * activities.
+ * <p>
+ * Public methods are called in AM lock, otherwise in WM lock.
  */
 public class ActivityServiceConnectionsHolder<T> {
 
@@ -44,7 +49,10 @@
      * on the WM side since we don't perform operations on the object. Mainly here for communication
      * and booking with the AM side.
      */
-    private HashSet<T> mConnections;
+    private ArraySet<T> mConnections;
+
+    /** Whether all connections of {@link #mActivity} are being removed. */
+    private volatile boolean mIsDisconnecting;
 
     ActivityServiceConnectionsHolder(ActivityTaskManagerService service, ActivityRecord activity) {
         mService = service;
@@ -54,8 +62,16 @@
     /** Adds a connection record that the activity has bound to a specific service. */
     public void addConnection(T c) {
         synchronized (mService.mGlobalLock) {
+            if (mIsDisconnecting) {
+                // This is unlikely to happen because the caller should create a new holder.
+                if (DEBUG_CLEANUP) {
+                    Slog.e(TAG_ATM, "Skip adding connection " + c + " to a disconnecting holder of "
+                            + mActivity);
+                }
+                return;
+            }
             if (mConnections == null) {
-                mConnections = new HashSet<>();
+                mConnections = new ArraySet<>();
             }
             mConnections.add(c);
         }
@@ -67,6 +83,9 @@
             if (mConnections == null) {
                 return;
             }
+            if (DEBUG_CLEANUP && mIsDisconnecting) {
+                Slog.v(TAG_ATM, "Remove pending disconnecting " + c + " of " + mActivity);
+            }
             mConnections.remove(c);
         }
     }
@@ -88,26 +107,33 @@
             if (mConnections == null || mConnections.isEmpty()) {
                 return;
             }
-            final Iterator<T> it = mConnections.iterator();
-            while (it.hasNext()) {
-                T c = it.next();
-                consumer.accept(c);
+            for (int i = mConnections.size() - 1; i >= 0; i--) {
+                consumer.accept(mConnections.valueAt(i));
             }
         }
     }
 
-    /** Removes the connection between the activity and all services that were connected to it. */
+    /**
+     * Removes the connection between the activity and all services that were connected to it. In
+     * general, this method is used to clean up if the activity didn't unbind services before it
+     * is destroyed.
+     */
     void disconnectActivityFromServices() {
-        if (mConnections == null || mConnections.isEmpty()) {
+        if (mConnections == null || mConnections.isEmpty() || mIsDisconnecting) {
             return;
         }
-        // Capture and null out mConnections, to guarantee that we process
+        // Mark as disconnecting, to guarantee that we process
         // disconnect of these specific connections exactly once even if
         // we're racing with rapid activity lifecycle churn and this
         // method is invoked more than once on this object.
-        final Object disc = mConnections;
-        mConnections = null;
-        mService.mH.post(() -> mService.mAmInternal.disconnectActivityFromServices(this, disc));
+        // It is possible that {@link #removeConnection} is called while the disconnect-runnable is
+        // still in the message queue, so keep the reference of {@link #mConnections} to make sure
+        // the connection list is up-to-date.
+        mIsDisconnecting = true;
+        mService.mH.post(() -> {
+            mService.mAmInternal.disconnectActivityFromServices(this);
+            mIsDisconnecting = false;
+        });
     }
 
     public void dump(PrintWriter pw, String prefix) {
@@ -116,4 +142,9 @@
         }
     }
 
+    /** Used by {@link ActivityRecord#dump}. */
+    @Override
+    public String toString() {
+        return String.valueOf(mConnections);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/ActivityStack.java b/services/core/java/com/android/server/wm/ActivityStack.java
index ddf0117..ab8e975 100644
--- a/services/core/java/com/android/server/wm/ActivityStack.java
+++ b/services/core/java/com/android/server/wm/ActivityStack.java
@@ -60,10 +60,6 @@
 import static android.view.WindowManager.TRANSIT_TASK_TO_BACK;
 import static android.view.WindowManager.TRANSIT_TASK_TO_FRONT;
 
-import static com.android.server.am.ActivityStackProto.DISPLAY_ID;
-import static com.android.server.am.ActivityStackProto.FULLSCREEN;
-import static com.android.server.am.ActivityStackProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityStackProto.STACK;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSED;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSING;
 import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
@@ -107,15 +103,31 @@
 import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_END;
 import static com.android.server.wm.BoundsAnimationController.SCHEDULE_PIP_MODE_CHANGED_ON_START;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
-import static com.android.server.wm.StackProto.ADJUSTED_BOUNDS;
-import static com.android.server.wm.StackProto.ADJUSTED_FOR_IME;
-import static com.android.server.wm.StackProto.ADJUST_DIVIDER_AMOUNT;
-import static com.android.server.wm.StackProto.ADJUST_IME_AMOUNT;
-import static com.android.server.wm.StackProto.ANIMATING_BOUNDS;
-import static com.android.server.wm.StackProto.DEFER_REMOVAL;
-import static com.android.server.wm.StackProto.FILLS_PARENT;
-import static com.android.server.wm.StackProto.MINIMIZE_AMOUNT;
-import static com.android.server.wm.StackProto.WINDOW_CONTAINER;
+import static com.android.server.wm.TaskProto.ACTIVITIES;
+import static com.android.server.wm.TaskProto.ACTIVITY_TYPE;
+import static com.android.server.wm.TaskProto.ADJUSTED_BOUNDS;
+import static com.android.server.wm.TaskProto.ADJUSTED_FOR_IME;
+import static com.android.server.wm.TaskProto.ADJUST_DIVIDER_AMOUNT;
+import static com.android.server.wm.TaskProto.ADJUST_IME_AMOUNT;
+import static com.android.server.wm.TaskProto.ANIMATING_BOUNDS;
+import static com.android.server.wm.TaskProto.BOUNDS;
+import static com.android.server.wm.TaskProto.DEFER_REMOVAL;
+import static com.android.server.wm.TaskProto.DISPLAYED_BOUNDS;
+import static com.android.server.wm.TaskProto.DISPLAY_ID;
+import static com.android.server.wm.TaskProto.FILLS_PARENT;
+import static com.android.server.wm.TaskProto.LAST_NON_FULLSCREEN_BOUNDS;
+import static com.android.server.wm.TaskProto.MINIMIZE_AMOUNT;
+import static com.android.server.wm.TaskProto.MIN_HEIGHT;
+import static com.android.server.wm.TaskProto.MIN_WIDTH;
+import static com.android.server.wm.TaskProto.ORIG_ACTIVITY;
+import static com.android.server.wm.TaskProto.REAL_ACTIVITY;
+import static com.android.server.wm.TaskProto.RESIZE_MODE;
+import static com.android.server.wm.TaskProto.RESUMED_ACTIVITY;
+import static com.android.server.wm.TaskProto.ROOT_TASK_ID;
+import static com.android.server.wm.TaskProto.SURFACE_HEIGHT;
+import static com.android.server.wm.TaskProto.SURFACE_WIDTH;
+import static com.android.server.wm.TaskProto.TASKS;
+import static com.android.server.wm.TaskProto.WINDOW_CONTAINER;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
@@ -123,6 +135,7 @@
 import static java.lang.Integer.MAX_VALUE;
 
 import android.annotation.IntDef;
+import android.annotation.Nullable;
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
@@ -341,6 +354,11 @@
 
     private static final int TRANSLUCENT_TIMEOUT_MSG = FIRST_ACTIVITY_STACK_MSG + 1;
 
+    // TODO(task-hierarchy): remove when tiles can be actual parents
+    TaskTile mTile = null;
+
+    private int mLastTaskOrganizerWindowingMode = -1;
+
     private final Handler mHandler;
 
     private class ActivityStackHandler extends Handler {
@@ -605,7 +623,7 @@
                 true /*neverRelinquishIdentity*/,
                 _taskDescription != null ? _taskDescription : new ActivityManager.TaskDescription(),
                 id, INVALID_TASK_ID, INVALID_TASK_ID, 0 /*taskAffiliationColor*/,
-                info.applicationInfo.uid, info.packageName, info.resizeMode,
+                info.applicationInfo.uid, info.packageName, null, info.resizeMode,
                 info.supportsPictureInPicture(), false /*_realActivitySuspended*/,
                 false /*userSetupComplete*/, INVALID_MIN_SIZE, INVALID_MIN_SIZE, info,
                 _voiceSession, _voiceInteractor, stack);
@@ -618,15 +636,16 @@
             String _lastDescription, long lastTimeMoved, boolean neverRelinquishIdentity,
             ActivityManager.TaskDescription _lastTaskDescription, int taskAffiliation,
             int prevTaskId, int nextTaskId, int taskAffiliationColor, int callingUid,
-            String callingPackage, int resizeMode, boolean supportsPictureInPicture,
-            boolean _realActivitySuspended, boolean userSetupComplete, int minWidth, int minHeight,
+            String callingPackage, @Nullable String callingFeatureId, int resizeMode,
+            boolean supportsPictureInPicture, boolean _realActivitySuspended,
+            boolean userSetupComplete, int minWidth, int minHeight,
             ActivityInfo info, IVoiceInteractionSession _voiceSession,
             IVoiceInteractor _voiceInteractor, ActivityStack stack) {
         super(atmService, id, _intent, _affinityIntent, _affinity, _rootAffinity,
                 _realActivity, _origActivity, _rootWasReset, _autoRemoveRecents, _askedCompatMode,
                 _userId, _effectiveUid, _lastDescription, lastTimeMoved, neverRelinquishIdentity,
                 _lastTaskDescription, taskAffiliation, prevTaskId, nextTaskId, taskAffiliationColor,
-                callingUid, callingPackage, resizeMode, supportsPictureInPicture,
+                callingUid, callingPackage, callingFeatureId, resizeMode, supportsPictureInPicture,
                 _realActivitySuspended, userSetupComplete, minWidth, minHeight, info, _voiceSession,
                 _voiceInteractor, stack);
 
@@ -638,11 +657,20 @@
     }
 
     @Override
+    public void resolveOverrideConfiguration(Configuration newParentConfig) {
+        super.resolveOverrideConfiguration(newParentConfig);
+        if (mTile != null) {
+            // If this is a virtual child of a tile, simulate the parent-child relationship
+            mTile.updateResolvedConfig(getResolvedOverrideConfiguration());
+        }
+    }
+
+    @Override
     public void onConfigurationChanged(Configuration newParentConfig) {
         // Calling Task#onConfigurationChanged() for leaf task since the ops in this method are
         // particularly for ActivityStack, like preventing bounds changes when inheriting certain
         // windowing mode.
-        if (!isRootTask()) {
+        if (!isRootTask() || this instanceof TaskTile) {
             super.onConfigurationChanged(newParentConfig);
             return;
         }
@@ -770,6 +798,13 @@
         }
 
         final int windowingMode = getWindowingMode();
+        if (windowingMode == mLastTaskOrganizerWindowingMode) {
+            // If our windowing mode hasn't actually changed, then just stick
+            // with our old organizer. This lets us implement the semantic
+            // where SysUI can continue to manage it's old tasks
+            // while CTS temporarily takes over the registration.
+            return;
+        }
         /*
          * Different windowing modes may be managed by different task organizers. If
          * getTaskOrganizer returns null, we still call setTaskOrganizer to
@@ -778,6 +813,7 @@
         final ITaskOrganizer org =
             mWmService.mAtmService.mTaskOrganizerController.getTaskOrganizer(windowingMode);
         setTaskOrganizer(org);
+        mLastTaskOrganizerWindowingMode = windowingMode;
     }
 
     @Override
@@ -792,6 +828,17 @@
         setWindowingMode(windowingMode, false /* animate */, false /* showRecents */,
                 false /* enteringSplitScreenMode */, false /* deferEnsuringVisibility */,
                 false /* creating */);
+        if (windowingMode == WINDOWING_MODE_PINNED) {
+            // This stack will be visible before SystemUI requests PiP animation to start, and if
+            // the selected animation type is fade in, this stack will be close first. If the
+            // animation does not start early, user may see this full screen window appear again
+            // after the closing transition finish, which could cause screen to flicker.
+            // Check if animation should start here in advance.
+            final BoundsAnimationController controller = getDisplay().mBoundsAnimationController;
+            if (controller.isAnimationTypeFadeIn()) {
+                setPinnedStackAlpha(0f);
+            }
+        }
     }
 
     /**
@@ -2890,6 +2937,7 @@
                             .setCallingPid(-1)
                             .setCallingUid(parent.launchedFromUid)
                             .setCallingPackage(parent.launchedFromPackage)
+                            .setCallingFeatureId(parent.launchedFromFeatureId)
                             .setRealCallingPid(-1)
                             .setRealCallingUid(parent.launchedFromUid)
                             .setComponentSpecified(true)
@@ -3944,7 +3992,6 @@
                 ? ((WindowContainer) newParent).getDisplayContent() : null;
         final DisplayContent oldDisplay = oldParent != null
                 ? ((WindowContainer) oldParent).getDisplayContent() : null;
-
         super.onParentChanged(newParent, oldParent);
 
         if (display != null && inSplitScreenPrimaryWindowingMode()
@@ -3963,6 +4010,11 @@
         if (oldDisplay != null && oldDisplay.isRemoving()) {
             postReparent();
         }
+        if (mTile != null && getSurfaceControl() != null) {
+            // by now, the TaskStack should already have been reparented, so we can reparent its
+            // surface here
+            reparentSurfaceControl(getPendingTransaction(), mTile.getSurfaceControl());
+        }
     }
 
     void reparent(DisplayContent newParent, boolean onTop) {
@@ -4000,7 +4052,16 @@
 
     @Override
     void getRelativeDisplayedPosition(Point outPos) {
-        super.getRelativeDisplayedPosition(outPos);
+        // check for tile which is "virtually" a parent.
+        if (mTile != null) {
+            final Rect dispBounds = getDisplayedBounds();
+            outPos.set(dispBounds.left, dispBounds.top);
+            final Rect parentBounds = mTile.getBounds();
+            outPos.offset(-parentBounds.left, -parentBounds.top);
+        } else {
+            super.getRelativeDisplayedPosition(outPos);
+        }
+
         final int outset = getStackOutset();
         outPos.x -= outset;
         outPos.y -= outset;
@@ -4010,6 +4071,16 @@
         if (mSurfaceControl == null) {
             return;
         }
+        if (mTile != null) {
+            // Tile controls crop, so the app needs to be able to draw its background outside of
+            // the stack bounds for when the tile crop gets bigger than the stack.
+            if (mLastSurfaceSize.equals(0, 0)) {
+                return;
+            }
+            transaction.setWindowCrop(mSurfaceControl, null);
+            mLastSurfaceSize.set(0, 0);
+            return;
+        }
 
         final Rect stackBounds = getDisplayedBounds();
         int width = stackBounds.width();
@@ -4033,6 +4104,9 @@
 
     @Override
     void onDisplayChanged(DisplayContent dc) {
+        if (mTile != null && dc != mTile.getDisplay()) {
+            mTile.removeChild(this);
+        }
         super.onDisplayChanged(dc);
         if (isRootTask()) {
             updateSurfaceBounds();
@@ -4848,32 +4922,44 @@
         return shouldSleepActivities() || mAtmService.mShuttingDown;
     }
 
-    @Override
-    public void dumpDebug(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInnerStackOnly(proto, STACK, logLevel);
-        proto.write(com.android.server.am.ActivityStackProto.ID, getRootTaskId());
-
-        forAllTasks((t) -> {
-            t.dumpDebugInner(proto, com.android.server.am.ActivityStackProto.TASKS, logLevel);
-        }, true /* traverseTopToBottom */, this);
-        if (mResumedActivity != null) {
-            mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-        }
-        proto.write(DISPLAY_ID, getDisplayId());
-        if (!matchParentBounds()) {
-            final Rect bounds = getRequestedOverrideBounds();
-            bounds.dumpDebug(proto, com.android.server.am.ActivityStackProto.BOUNDS);
-        }
-
-        // TODO: Remove, no longer needed with windowingMode.
-        proto.write(FULLSCREEN, matchParentBounds());
-        proto.end(token);
+    TaskTile getTile() {
+        return mTile;
     }
 
-    // TODO(proto-merge): Remove once protos for ActivityStack and TaskStack are merged.
-    void dumpDebugInnerStackOnly(ProtoOutputStream proto, long fieldId,
+    /**
+     * Don't call this directly. instead use {@link TaskTile#addChild} or
+     * {@link TaskTile#removeChild}.
+     */
+    void setTile(TaskTile tile) {
+        TaskTile origTile = mTile;
+        mTile = tile;
+        final ConfigurationContainer parent = getParent();
+        if (parent != null) {
+            onConfigurationChanged(parent.getConfiguration());
+        }
+
+        // Reparent to tile surface or back to original parent
+        if (getSurfaceControl() == null) {
+            return;
+        }
+        if (mTile != null) {
+            reparentSurfaceControl(getPendingTransaction(), mTile.getSurfaceControl());
+        } else if (mTile == null && origTile != null) {
+            reparentSurfaceControl(getPendingTransaction(), getParentSurfaceControl());
+        }
+    }
+
+    @Override
+    void removeImmediately() {
+        // TODO(task-hierarchy): remove this override when tiles are in hierarchy
+        if (mTile != null) {
+            mTile.removeChild(this);
+        }
+        super.removeImmediately();
+    }
+
+    @Override
+    public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
@@ -4881,19 +4967,60 @@
 
         final long token = proto.start(fieldId);
         super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
-        proto.write(StackProto.ID, getRootTaskId());
-        forAllTasks((t) -> {
-            t.dumpDebugInnerTaskOnly(proto, StackProto.TASKS, logLevel);
-        }, true /* traverseTopToBottom */, this);
+
+        proto.write(TaskProto.ID, mTaskId);
+        proto.write(DISPLAY_ID, getDisplayId());
+        proto.write(ROOT_TASK_ID, getRootTaskId());
+
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer child = mChildren.get(i);
+            if (child instanceof Task) {
+                child.dumpDebug(proto, TASKS, logLevel);
+            } else if (child instanceof ActivityRecord) {
+                child.dumpDebug(proto, ACTIVITIES, logLevel);
+            } else {
+                throw new IllegalStateException("Unknown child type: " + child);
+            }
+        }
+
+        if (mResumedActivity != null) {
+            mResumedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+        }
+        if (realActivity != null) {
+            proto.write(REAL_ACTIVITY, realActivity.flattenToShortString());
+        }
+        if (origActivity != null) {
+            proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString());
+        }
+        proto.write(ACTIVITY_TYPE, getActivityType());
+        proto.write(RESIZE_MODE, mResizeMode);
+        proto.write(MIN_WIDTH, mMinWidth);
+        proto.write(MIN_HEIGHT, mMinHeight);
+
         proto.write(FILLS_PARENT, matchParentBounds());
-        getRawBounds().dumpDebug(proto, StackProto.BOUNDS);
+
+        if (!matchParentBounds()) {
+            final Rect bounds = getRequestedOverrideBounds();
+            bounds.dumpDebug(proto, BOUNDS);
+        }
+        getOverrideDisplayedBounds().dumpDebug(proto, DISPLAYED_BOUNDS);
+        mAdjustedBounds.dumpDebug(proto, ADJUSTED_BOUNDS);
+        if (mLastNonFullscreenBounds != null) {
+            mLastNonFullscreenBounds.dumpDebug(proto, LAST_NON_FULLSCREEN_BOUNDS);
+        }
+
         proto.write(DEFER_REMOVAL, mDeferRemoval);
         proto.write(MINIMIZE_AMOUNT, mMinimizeAmount);
         proto.write(ADJUSTED_FOR_IME, mAdjustedForIme);
         proto.write(ADJUST_IME_AMOUNT, mAdjustImeAmount);
         proto.write(ADJUST_DIVIDER_AMOUNT, mAdjustDividerAmount);
-        mAdjustedBounds.dumpDebug(proto, ADJUSTED_BOUNDS);
         proto.write(ANIMATING_BOUNDS, mBoundsAnimating);
+
+        if (mSurfaceControl != null) {
+            proto.write(SURFACE_WIDTH, mSurfaceControl.getWidth());
+            proto.write(SURFACE_HEIGHT, mSurfaceControl.getHeight());
+        }
+
         proto.end(token);
     }
 }
diff --git a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
index 362e781..a582f21 100644
--- a/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
+++ b/services/core/java/com/android/server/wm/ActivityStackSupervisor.java
@@ -88,6 +88,7 @@
 import static com.android.server.wm.WindowContainer.POSITION_TOP;
 
 import android.Manifest;
+import android.annotation.Nullable;
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManagerInternal;
@@ -260,7 +261,9 @@
     /** Short cut */
     private WindowManagerService mWindowManager;
 
-     /** Common synchronization logic used to save things to disks. */
+    private AppOpsManager mAppOpsManager;
+
+    /** Common synchronization logic used to save things to disks. */
     PersisterQueue mPersisterQueue;
     LaunchParamsPersister mLaunchParamsPersister;
     private LaunchParamsController mLaunchParamsController;
@@ -1047,8 +1050,8 @@
 
     boolean checkStartAnyActivityPermission(Intent intent, ActivityInfo aInfo, String resultWho,
             int requestCode, int callingPid, int callingUid, String callingPackage,
-            boolean ignoreTargetSecurity, boolean launchingInTask,
-            WindowProcessController callerApp, ActivityRecord resultRecord,
+            @Nullable String callingFeatureId, boolean ignoreTargetSecurity,
+            boolean launchingInTask, WindowProcessController callerApp, ActivityRecord resultRecord,
             ActivityStack resultStack) {
         final boolean isCallerRecents = mService.getRecentTasks() != null
                 && mService.getRecentTasks().isCallerRecents(callingUid);
@@ -1060,10 +1063,10 @@
             // existing task, then also allow the activity to be fully relaunched.
             return true;
         }
-        final int componentRestriction = getComponentRestrictionForCallingPackage(
-                aInfo, callingPackage, callingPid, callingUid, ignoreTargetSecurity);
+        final int componentRestriction = getComponentRestrictionForCallingPackage(aInfo,
+                callingPackage, callingFeatureId, callingPid, callingUid, ignoreTargetSecurity);
         final int actionRestriction = getActionRestrictionForCallingPackage(
-                intent.getAction(), callingPackage, callingPid, callingUid);
+                intent.getAction(), callingPackage, callingFeatureId, callingPid, callingUid);
         if (componentRestriction == ACTIVITY_RESTRICTION_PERMISSION
                 || actionRestriction == ACTIVITY_RESTRICTION_PERMISSION) {
             if (resultRecord != null) {
@@ -1194,8 +1197,16 @@
         }
     }
 
+    private AppOpsManager getAppOpsManager() {
+        if (mAppOpsManager == null) {
+            mAppOpsManager = mService.mContext.getSystemService(AppOpsManager.class);
+        }
+        return mAppOpsManager;
+    }
+
     private int getComponentRestrictionForCallingPackage(ActivityInfo activityInfo,
-            String callingPackage, int callingPid, int callingUid, boolean ignoreTargetSecurity) {
+            String callingPackage, @Nullable String callingFeatureId, int callingPid,
+            int callingUid, boolean ignoreTargetSecurity) {
         if (!ignoreTargetSecurity && mService.checkComponentPermission(activityInfo.permission,
                 callingPid, callingUid, activityInfo.applicationInfo.uid, activityInfo.exported)
                 == PERMISSION_DENIED) {
@@ -1211,9 +1222,8 @@
             return ACTIVITY_RESTRICTION_NONE;
         }
 
-        // TODO moltmann b/136595429: Set featureId from caller
-        if (mService.getAppOpsService().noteOperation(opCode, callingUid,
-                callingPackage, /* featureId */ null, false, "") != AppOpsManager.MODE_ALLOWED) {
+        if (getAppOpsManager().noteOpNoThrow(opCode, callingUid,
+                callingPackage, callingFeatureId, "") != AppOpsManager.MODE_ALLOWED) {
             if (!ignoreTargetSecurity) {
                 return ACTIVITY_RESTRICTION_APPOP;
             }
@@ -1222,8 +1232,8 @@
         return ACTIVITY_RESTRICTION_NONE;
     }
 
-    private int getActionRestrictionForCallingPackage(String action,
-            String callingPackage, int callingPid, int callingUid) {
+    private int getActionRestrictionForCallingPackage(String action, String callingPackage,
+            @Nullable String callingFeatureId, int callingPid, int callingUid) {
         if (action == null) {
             return ACTIVITY_RESTRICTION_NONE;
         }
@@ -1256,9 +1266,8 @@
             return ACTIVITY_RESTRICTION_NONE;
         }
 
-        // TODO moltmann b/136595429: Set featureId from caller
-        if (mService.getAppOpsService().noteOperation(opCode, callingUid,
-                callingPackage, /* featureId */ null, false, "") != AppOpsManager.MODE_ALLOWED) {
+        if (getAppOpsManager().noteOpNoThrow(opCode, callingUid,
+                callingPackage, callingFeatureId, "") != AppOpsManager.MODE_ALLOWED) {
             return ACTIVITY_RESTRICTION_APPOP;
         }
 
@@ -1711,6 +1720,7 @@
              * invisible as well and added to the stopping list.  After which we process the
              * stopping list by handling the idle.
              */
+            stack.cancelAnimation();
             stack.mForceHidden = true;
             stack.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS);
             stack.mForceHidden = false;
@@ -2700,6 +2710,7 @@
             SafeActivityOptions options) {
         Task task = null;
         final String callingPackage;
+        final String callingFeatureId;
         final Intent intent;
         final int userId;
         int activityType = ACTIVITY_TYPE_UNDEFINED;
@@ -2779,11 +2790,12 @@
                 return ActivityManager.START_TASK_TO_FRONT;
             }
             callingPackage = task.mCallingPackage;
+            callingFeatureId = task.mCallingFeatureId;
             intent = task.intent;
             intent.addFlags(Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY);
             userId = task.mUserId;
-            return mService.getActivityStartController().startActivityInPackage(
-                    task.mCallingUid, callingPid, callingUid, callingPackage, intent, null, null,
+            return mService.getActivityStartController().startActivityInPackage(task.mCallingUid,
+                    callingPid, callingUid, callingPackage, callingFeatureId, intent, null, null,
                     null, 0, 0, options, userId, task, "startActivityFromRecents",
                     false /* validateIncomingUser */, null /* originatingPendingIntent */,
                     false /* allowBackgroundActivityStart */);
diff --git a/services/core/java/com/android/server/wm/ActivityStartController.java b/services/core/java/com/android/server/wm/ActivityStartController.java
index 75d87ed..881dc81 100644
--- a/services/core/java/com/android/server/wm/ActivityStartController.java
+++ b/services/core/java/com/android/server/wm/ActivityStartController.java
@@ -26,6 +26,7 @@
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
 
+import android.annotation.Nullable;
 import android.app.ActivityOptions;
 import android.app.IApplicationThread;
 import android.content.ComponentName;
@@ -278,10 +279,11 @@
     }
 
     final int startActivityInPackage(int uid, int realCallingPid, int realCallingUid,
-            String callingPackage, Intent intent, String resolvedType, IBinder resultTo,
-            String resultWho, int requestCode, int startFlags, SafeActivityOptions options,
-            int userId, Task inTask, String reason, boolean validateIncomingUser,
-            PendingIntentRecord originatingPendingIntent, boolean allowBackgroundActivityStart) {
+            String callingPackage, @Nullable String callingFeatureId, Intent intent,
+            String resolvedType, IBinder resultTo, String resultWho, int requestCode,
+            int startFlags, SafeActivityOptions options, int userId, Task inTask, String reason,
+            boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
+            boolean allowBackgroundActivityStart) {
 
         userId = checkTargetUser(userId, validateIncomingUser, realCallingPid, realCallingUid,
                 reason);
@@ -292,6 +294,7 @@
                 .setRealCallingPid(realCallingPid)
                 .setRealCallingUid(realCallingUid)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setResultTo(resultTo)
                 .setResultWho(resultWho)
@@ -310,19 +313,20 @@
      *
      * @param uid Make a call as if this UID did.
      * @param callingPackage Make a call as if this package did.
+     * @param callingFeatureId Make a call as if this feature in the package did.
      * @param intents Intents to start.
      * @param userId Start the intents on this user.
      * @param validateIncomingUser Set true to skip checking {@code userId} with the calling UID.
      * @param originatingPendingIntent PendingIntentRecord that originated this activity start or
      *        null if not originated by PendingIntent
      */
-    final int startActivitiesInPackage(int uid, String callingPackage, Intent[] intents,
-            String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
-            boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
-            boolean allowBackgroundActivityStart) {
+    final int startActivitiesInPackage(int uid, String callingPackage,
+            @Nullable String callingFeatureId, Intent[] intents, String[] resolvedTypes,
+            IBinder resultTo, SafeActivityOptions options, int userId, boolean validateIncomingUser,
+            PendingIntentRecord originatingPendingIntent, boolean allowBackgroundActivityStart) {
         return startActivitiesInPackage(uid, 0 /* realCallingPid */, -1 /* realCallingUid */,
-            callingPackage, intents, resolvedTypes, resultTo, options, userId, validateIncomingUser,
-            originatingPendingIntent, allowBackgroundActivityStart);
+                callingPackage, callingFeatureId, intents, resolvedTypes, resultTo, options, userId,
+                validateIncomingUser, originatingPendingIntent, allowBackgroundActivityStart);
     }
 
     /**
@@ -339,9 +343,9 @@
      *        null if not originated by PendingIntent
      */
     final int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
-            String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
-            SafeActivityOptions options, int userId, boolean validateIncomingUser,
-            PendingIntentRecord originatingPendingIntent,
+            String callingPackage, @Nullable String callingFeatureId, Intent[] intents,
+            String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
+            boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
             boolean allowBackgroundActivityStart) {
 
         final String reason = "startActivityInPackage";
@@ -350,14 +354,14 @@
                 Binder.getCallingUid(), reason);
 
         // TODO: Switch to user app stacks here.
-        return startActivities(null, uid, realCallingPid, realCallingUid, callingPackage, intents,
-                resolvedTypes, resultTo, options, userId, reason, originatingPendingIntent,
-                allowBackgroundActivityStart);
+        return startActivities(null, uid, realCallingPid, realCallingUid, callingPackage,
+                callingFeatureId, intents, resolvedTypes, resultTo, options, userId, reason,
+                originatingPendingIntent, allowBackgroundActivityStart);
     }
 
     int startActivities(IApplicationThread caller, int callingUid, int incomingRealCallingPid,
-            int incomingRealCallingUid, String callingPackage, Intent[] intents,
-            String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options,
+            int incomingRealCallingUid, String callingPackage, @Nullable String callingFeatureId,
+            Intent[] intents, String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options,
             int userId, String reason, PendingIntentRecord originatingPendingIntent,
             boolean allowBackgroundActivityStart) {
         if (intents == null) {
@@ -386,6 +390,8 @@
         } else {
             callingPid = callingUid = -1;
         }
+        final int filterCallingUid = ActivityStarter.computeResolveFilterUid(
+                callingUid, realCallingUid, UserHandle.USER_NULL);
         final SparseArray<String> startingUidPkgs = new SparseArray<>();
         final long origId = Binder.clearCallingIdentity();
         try {
@@ -408,9 +414,7 @@
 
                 // Collect information about the target of the Intent.
                 ActivityInfo aInfo = mSupervisor.resolveActivity(intent, resolvedTypes[i],
-                        0 /* startFlags */, null /* profilerInfo */, userId,
-                        ActivityStarter.computeResolveFilterUid(
-                                callingUid, realCallingUid, UserHandle.USER_NULL));
+                        0 /* startFlags */, null /* profilerInfo */, userId, filterCallingUid);
                 aInfo = mService.mAmInternal.getActivityInfoForUser(aInfo, userId);
 
                 if (aInfo != null) {
@@ -435,6 +439,7 @@
                         .setCallingPid(callingPid)
                         .setCallingUid(callingUid)
                         .setCallingPackage(callingPackage)
+                        .setCallingFeatureId(callingFeatureId)
                         .setRealCallingPid(realCallingPid)
                         .setRealCallingUid(realCallingUid)
                         .setActivityOptions(checkedOptions)
@@ -457,6 +462,7 @@
                 Slog.wtf(TAG, sb.toString());
             }
 
+            final IBinder sourceResultTo = resultTo;
             final ActivityRecord[] outActivity = new ActivityRecord[1];
             // Lock the loop to ensure the activities launched in a sequence.
             synchronized (mService.mGlobalLock) {
@@ -470,7 +476,18 @@
                         }
                         return startResult;
                     }
-                    resultTo = outActivity[0] != null ? outActivity[0].appToken : null;
+                    final ActivityRecord started = outActivity[0];
+                    if (started != null && started.getUid() == filterCallingUid) {
+                        // Only the started activity which has the same uid as the source caller can
+                        // be the caller of next activity.
+                        resultTo = started.appToken;
+                    } else {
+                        resultTo = sourceResultTo;
+                        // Different apps not adjacent to the caller are forced to be new task.
+                        if (i < starters.length - 1) {
+                            starters[i + 1].getIntent().addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+                        }
+                    }
                 }
             }
         } finally {
diff --git a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
index 2fb0ac5..1009771 100644
--- a/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
+++ b/services/core/java/com/android/server/wm/ActivityStartInterceptor.java
@@ -34,6 +34,7 @@
 
 import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
 
+import android.annotation.Nullable;
 import android.app.ActivityOptions;
 import android.app.KeyguardManager;
 import android.app.admin.DevicePolicyManagerInternal;
@@ -52,6 +53,7 @@
 import android.os.UserManager;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.BlockedAppActivity;
 import com.android.internal.app.HarmfulAppWarningActivity;
 import com.android.internal.app.SuspendedAppActivity;
 import com.android.internal.app.UnlaunchableAppActivity;
@@ -84,6 +86,7 @@
     private int mUserId;
     private int mStartFlags;
     private String mCallingPackage;
+    private @Nullable String mCallingFeatureId;
 
     /*
      * Per-intent states that were load from ActivityStarter and are subject to modifications
@@ -119,19 +122,20 @@
      * method should not be changed during intercept.
      */
     void setStates(int userId, int realCallingPid, int realCallingUid, int startFlags,
-            String callingPackage) {
+            String callingPackage, @Nullable String callingFeatureId) {
         mRealCallingPid = realCallingPid;
         mRealCallingUid = realCallingUid;
         mUserId = userId;
         mStartFlags = startFlags;
         mCallingPackage = callingPackage;
+        mCallingFeatureId = callingFeatureId;
     }
 
     private IntentSender createIntentSenderForOriginalIntent(int callingUid, int flags) {
         Bundle activityOptions = deferCrossProfileAppsAnimationIfNecessary();
         final IIntentSender target = mService.getIntentSenderLocked(
-                INTENT_SENDER_ACTIVITY, mCallingPackage, callingUid, mUserId, null /*token*/,
-                null /*resultCode*/, 0 /*requestCode*/,
+                INTENT_SENDER_ACTIVITY, mCallingPackage, mCallingFeatureId, callingUid, mUserId,
+                null /*token*/, null /*resultCode*/, 0 /*requestCode*/,
                 new Intent[] { mIntent }, new String[] { mResolvedType },
                 flags, activityOptions);
         return new IntentSender(target);
@@ -166,6 +170,9 @@
             // no user action can undo this.
             return true;
         }
+        if (interceptLockTaskModeViolationPackageIfNeeded()) {
+            return true;
+        }
         if (interceptHarmfulAppIfNeeded()) {
             // If the app has a "harmful app" warning associated with it, we should ask to uninstall
             // before issuing the work challenge.
@@ -270,6 +277,25 @@
         return true;
     }
 
+    private boolean interceptLockTaskModeViolationPackageIfNeeded() {
+        if (mAInfo == null || mAInfo.applicationInfo == null) {
+            return false;
+        }
+        LockTaskController controller = mService.getLockTaskController();
+        String packageName = mAInfo.applicationInfo.packageName;
+        int lockTaskLaunchMode = ActivityRecord.getLockTaskLaunchMode(mAInfo, mActivityOptions);
+        if (controller.isActivityAllowed(mUserId, packageName, lockTaskLaunchMode)) {
+            return false;
+        }
+        mIntent = BlockedAppActivity.createIntent(mUserId, mAInfo.applicationInfo.packageName);
+        mCallingPid = mRealCallingPid;
+        mCallingUid = mRealCallingUid;
+        mResolvedType = null;
+        mRInfo = mSupervisor.resolveIntent(mIntent, mResolvedType, mUserId, 0, mRealCallingUid);
+        mAInfo = mSupervisor.resolveActivity(mIntent, mRInfo, mStartFlags, null /*profilerInfo*/);
+        return true;
+    }
+
     private boolean interceptWorkProfileChallengeIfNeeded() {
         final Intent interceptingIntent = interceptWithConfirmCredentialsIfNeeded(mAInfo, mUserId);
         if (interceptingIntent == null) {
diff --git a/services/core/java/com/android/server/wm/ActivityStarter.java b/services/core/java/com/android/server/wm/ActivityStarter.java
index 9e3292b..8ed798c 100644
--- a/services/core/java/com/android/server/wm/ActivityStarter.java
+++ b/services/core/java/com/android/server/wm/ActivityStarter.java
@@ -318,6 +318,7 @@
         int callingPid = DEFAULT_CALLING_PID;
         int callingUid = DEFAULT_CALLING_UID;
         String callingPackage;
+        @Nullable String callingFeatureId;
         int realCallingPid = DEFAULT_REAL_CALLING_PID;
         int realCallingUid = DEFAULT_REAL_CALLING_UID;
         int startFlags;
@@ -367,6 +368,7 @@
             callingPid = DEFAULT_CALLING_PID;
             callingUid = DEFAULT_CALLING_UID;
             callingPackage = null;
+            callingFeatureId = null;
             realCallingPid = DEFAULT_REAL_CALLING_PID;
             realCallingUid = DEFAULT_REAL_CALLING_UID;
             startFlags = 0;
@@ -405,6 +407,7 @@
             callingPid = request.callingPid;
             callingUid = request.callingUid;
             callingPackage = request.callingPackage;
+            callingFeatureId = request.callingFeatureId;
             realCallingPid = request.realCallingPid;
             realCallingUid = request.realCallingUid;
             startFlags = request.startFlags;
@@ -693,9 +696,10 @@
         }
 
         final IIntentSender target = mService.getIntentSenderLocked(
-                ActivityManager.INTENT_SENDER_ACTIVITY, "android" /* packageName */, appCallingUid,
-                mRequest.userId, null /* token */, null /* resultWho*/, 0 /* requestCode*/,
-                new Intent[] { mRequest.intent }, new String[] { mRequest.resolvedType },
+                ActivityManager.INTENT_SENDER_ACTIVITY, "android" /* packageName */,
+                null /* featureId */, appCallingUid, mRequest.userId, null /* token */,
+                null /* resultWho*/, 0 /* requestCode*/, new Intent[]{mRequest.intent},
+                new String[]{mRequest.resolvedType},
                 PendingIntent.FLAG_CANCEL_CURRENT | PendingIntent.FLAG_ONE_SHOT,
                 null /* bOptions */);
 
@@ -807,6 +811,7 @@
         int callingPid = request.callingPid;
         int callingUid = request.callingUid;
         String callingPackage = request.callingPackage;
+        String callingFeatureId = request.callingFeatureId;
         final int realCallingPid = request.realCallingPid;
         final int realCallingUid = request.realCallingUid;
         final int startFlags = request.startFlags;
@@ -882,6 +887,7 @@
                 // we want the final activity to consider it to have been launched by the
                 // previous app activity.
                 callingPackage = sourceRecord.launchedFromPackage;
+                callingFeatureId = sourceRecord.launchedFromFeatureId;
             }
         }
 
@@ -949,8 +955,8 @@
         }
 
         boolean abort = !mSupervisor.checkStartAnyActivityPermission(intent, aInfo, resultWho,
-                requestCode, callingPid, callingUid, callingPackage, request.ignoreTargetSecurity,
-                inTask != null, callerApp, resultRecord, resultStack);
+                requestCode, callingPid, callingUid, callingPackage, callingFeatureId,
+                request.ignoreTargetSecurity, inTask != null, callerApp, resultRecord, resultStack);
         abort |= !mService.mIntentFirewall.checkStartActivity(intent, callingUid,
                 callingPid, resolvedType, aInfo.applicationInfo);
         abort |= !mService.getPermissionPolicyInternal().checkStartActivity(intent, callingUid,
@@ -990,7 +996,8 @@
             }
         }
 
-        mInterceptor.setStates(userId, realCallingPid, realCallingUid, startFlags, callingPackage);
+        mInterceptor.setStates(userId, realCallingPid, realCallingUid, startFlags, callingPackage,
+                callingFeatureId);
         if (mInterceptor.intercept(intent, rInfo, aInfo, resolvedType, inTask, callingPid,
                 callingUid, checkedOptions)) {
             // activity start was intercepted, e.g. because the target user is currently in quiet
@@ -1023,7 +1030,7 @@
             if (mService.getPackageManagerInternalLocked().isPermissionsReviewRequired(
                     aInfo.packageName, userId)) {
                 final IIntentSender target = mService.getIntentSenderLocked(
-                        ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage,
+                        ActivityManager.INTENT_SENDER_ACTIVITY, callingPackage, callingFeatureId,
                         callingUid, userId, null, null, 0, new Intent[]{intent},
                         new String[]{resolvedType}, PendingIntent.FLAG_CANCEL_CURRENT
                                 | PendingIntent.FLAG_ONE_SHOT, null);
@@ -1081,7 +1088,7 @@
         // app [on install success].
         if (rInfo != null && rInfo.auxiliaryInfo != null) {
             intent = createLaunchIntent(rInfo.auxiliaryInfo, request.ephemeralIntent,
-                    callingPackage, verificationBundle, resolvedType, userId);
+                    callingPackage, callingFeatureId, verificationBundle, resolvedType, userId);
             resolvedType = null;
             callingUid = realCallingUid;
             callingPid = realCallingPid;
@@ -1090,9 +1097,10 @@
         }
 
         final ActivityRecord r = new ActivityRecord(mService, callerApp, callingPid, callingUid,
-                callingPackage, intent, resolvedType, aInfo, mService.getGlobalConfiguration(),
-                resultRecord, resultWho, requestCode, request.componentSpecified,
-                voiceSession != null, mSupervisor, checkedOptions, sourceRecord);
+                callingPackage, callingFeatureId, intent, resolvedType, aInfo,
+                mService.getGlobalConfiguration(), resultRecord, resultWho, requestCode,
+                request.componentSpecified, voiceSession != null, mSupervisor, checkedOptions,
+                sourceRecord);
         mLastStartActivityRecord = r;
 
         if (r.appTimeTracker == null && sourceRecord != null) {
@@ -1302,21 +1310,22 @@
      * Creates a launch intent for the given auxiliary resolution data.
      */
     private @NonNull Intent createLaunchIntent(@Nullable AuxiliaryResolveInfo auxiliaryResponse,
-            Intent originalIntent, String callingPackage, Bundle verificationBundle,
-            String resolvedType, int userId) {
+            Intent originalIntent, String callingPackage, @Nullable String callingFeatureId,
+            Bundle verificationBundle, String resolvedType, int userId) {
         if (auxiliaryResponse != null && auxiliaryResponse.needsPhaseTwo) {
             // request phase two resolution
             PackageManagerInternal packageManager = mService.getPackageManagerInternalLocked();
             boolean isRequesterInstantApp = packageManager.isInstantApp(callingPackage, userId);
             packageManager.requestInstantAppResolutionPhaseTwo(
                     auxiliaryResponse, originalIntent, resolvedType, callingPackage,
-                    isRequesterInstantApp, verificationBundle, userId);
+                    callingFeatureId, isRequesterInstantApp, verificationBundle, userId);
         }
         return InstantAppResolver.buildEphemeralInstallerIntent(
                 originalIntent,
                 InstantAppResolver.sanitizeIntent(originalIntent),
                 auxiliaryResponse == null ? null : auxiliaryResponse.failureIntent,
                 callingPackage,
+                callingFeatureId,
                 verificationBundle,
                 resolvedType,
                 userId,
@@ -2493,7 +2502,6 @@
         return this;
     }
 
-    @VisibleForTesting
     Intent getIntent() {
         return mRequest.intent;
     }
@@ -2576,6 +2584,11 @@
         return this;
     }
 
+    ActivityStarter setCallingFeatureId(String callingFeatureId) {
+        mRequest.callingFeatureId = callingFeatureId;
+        return this;
+    }
+
     /**
      * Sets the pid of the caller who requested to launch the activity.
      *
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
index 25f6d6f..7302e52 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerInternal.java
@@ -182,14 +182,15 @@
     public abstract void notifySingleTaskDisplayDrawn(int displayId);
 
     /**
-     * Start activity {@code intents} as if {@code packageName} on user {@code userId} did it.
+     * Start activity {@code intents} as if {@code packageName/featureId} on user {@code userId} did
+     * it.
      *
      * - DO NOT call it with the calling UID cleared.
      * - All the necessary caller permission checks must be done at callsites.
      *
      * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
      */
-    public abstract int startActivitiesAsPackage(String packageName,
+    public abstract int startActivitiesAsPackage(String packageName, String featureId,
             int userId, Intent[] intents, Bundle bOptions);
 
     /**
@@ -199,6 +200,7 @@
      * @param realCallingPid PID of the real caller.
      * @param realCallingUid UID of the real caller.
      * @param callingPackage Make a call as if this package did.
+     * @param callingFeatureId Make a call as if this feature in the package did.
      * @param intents Intents to start.
      * @param userId Start the intents on this user.
      * @param validateIncomingUser Set true to skip checking {@code userId} with the calling UID.
@@ -208,16 +210,17 @@
      *        from originatingPendingIntent
      */
     public abstract int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
-            String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
-            SafeActivityOptions options, int userId, boolean validateIncomingUser,
-            PendingIntentRecord originatingPendingIntent,
+            String callingPackage, @Nullable String callingFeatureId, Intent[] intents,
+            String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
+            boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
             boolean allowBackgroundActivityStart);
 
     public abstract int startActivityInPackage(int uid, int realCallingPid, int realCallingUid,
-            String callingPackage, Intent intent, String resolvedType, IBinder resultTo,
-            String resultWho, int requestCode, int startFlags, SafeActivityOptions options,
-            int userId, Task inTask, String reason, boolean validateIncomingUser,
-            PendingIntentRecord originatingPendingIntent, boolean allowBackgroundActivityStart);
+            String callingPackage, @Nullable String callingFeaturId, Intent intent,
+            String resolvedType, IBinder resultTo, String resultWho, int requestCode,
+            int startFlags, SafeActivityOptions options, int userId, Task inTask, String reason,
+            boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
+            boolean allowBackgroundActivityStart);
 
     /**
      * Start activity {@code intent} without calling user-id check.
@@ -228,7 +231,7 @@
      * @return error codes used by {@link IActivityManager#startActivity} and its siblings.
      */
     public abstract int startActivityAsUser(IApplicationThread caller, String callingPackage,
-            Intent intent, @Nullable Bundle options, int userId);
+            @Nullable String callingFeatureId, Intent intent, @Nullable Bundle options, int userId);
 
     /**
      * Called when Keyguard flags might have changed.
@@ -388,7 +391,7 @@
     public abstract ActivityTokens getTopActivityForTask(int taskId);
 
     public abstract IIntentSender getIntentSender(int type, String packageName,
-            int callingUid, int userId, IBinder token, String resultWho,
+            @Nullable String featureId, int callingUid, int userId, IBinder token, String resultWho,
             int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
             Bundle bOptions);
 
diff --git a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
index 976fbdb..1859fae 100644
--- a/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
+++ b/services/core/java/com/android/server/wm/ActivityTaskManagerService.java
@@ -69,6 +69,7 @@
 import static com.android.server.am.ActivityManagerService.MY_PID;
 import static com.android.server.am.ActivityManagerService.STOCK_PM_FLAGS;
 import static com.android.server.am.ActivityManagerService.dumpStackTraces;
+import static com.android.server.am.ActivityManagerServiceDumpActivitiesProto.ROOT_WINDOW_CONTAINER;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CONFIG_WILL_CHANGE;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CONTROLLER;
 import static com.android.server.am.ActivityManagerServiceDumpProcessesProto.CURRENT_TRACKER;
@@ -144,6 +145,7 @@
 import android.app.IAssistDataReceiver;
 import android.app.INotificationManager;
 import android.app.IRequestFinishCallback;
+import android.app.ITaskOrganizerController;
 import android.app.ITaskStackListener;
 import android.app.Notification;
 import android.app.NotificationManager;
@@ -222,20 +224,16 @@
 import android.util.Log;
 import android.util.Slog;
 import android.util.SparseArray;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 import android.view.IRecentsAnimationRunner;
-import android.view.ITaskOrganizer;
 import android.view.RemoteAnimationAdapter;
 import android.view.RemoteAnimationDefinition;
-import android.view.WindowContainerTransaction;
 import android.view.WindowManager;
 
 import com.android.internal.R;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.app.AssistUtils;
-import com.android.internal.app.IAppOpsService;
 import com.android.internal.app.IVoiceInteractor;
 import com.android.internal.app.ProcessMap;
 import com.android.internal.logging.MetricsLogger;
@@ -248,6 +246,7 @@
 import com.android.internal.policy.KeyguardDismissCallback;
 import com.android.internal.util.ArrayUtils;
 import com.android.internal.util.FastPrintWriter;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.function.pooled.PooledConsumer;
 import com.android.internal.util.function.pooled.PooledFunction;
 import com.android.internal.util.function.pooled.PooledLambda;
@@ -258,14 +257,12 @@
 import com.android.server.UiThread;
 import com.android.server.Watchdog;
 import com.android.server.am.ActivityManagerService;
-import com.android.server.am.ActivityManagerServiceDumpActivitiesProto;
 import com.android.server.am.ActivityManagerServiceDumpProcessesProto;
 import com.android.server.am.AppTimeTracker;
 import com.android.server.am.BaseErrorDialog;
 import com.android.server.am.PendingIntentController;
 import com.android.server.am.PendingIntentRecord;
 import com.android.server.am.UserState;
-import com.android.server.appop.AppOpsService;
 import com.android.server.firewall.IntentFirewall;
 import com.android.server.inputmethod.InputMethodSystemProperty;
 import com.android.server.pm.UserManagerService;
@@ -292,7 +289,6 @@
 import java.util.Date;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
@@ -344,10 +340,6 @@
     /** This activity is being relaunched due to a free-resize operation. */
     public static final int RELAUNCH_REASON_FREE_RESIZE = 2;
 
-    /** Flag indicating that an applied transaction may have effected lifecycle */
-    private static final int TRANSACT_EFFECTS_CLIENT_CONFIG = 1;
-    private static final int TRANSACT_EFFECTS_LIFECYCLE = 1 << 1;
-
     Context mContext;
 
     /**
@@ -384,7 +376,7 @@
     RootWindowContainer mRootWindowContainer;
     WindowManagerService mWindowManager;
     private UserManagerService mUserManager;
-    private AppOpsService mAppOpsService;
+    private AppOpsManager mAppOpsManager;
     /** All active uids in the system. */
     private final MirrorActiveUids mActiveUids = new MirrorActiveUids();
     private final SparseArray<String> mPendingTempWhitelist = new SparseArray<>();
@@ -669,8 +661,7 @@
     /**
      * Stores the registration and state of TaskOrganizers in use.
      */
-    TaskOrganizerController mTaskOrganizerController =
-        new TaskOrganizerController(this, mGlobalLock);
+    TaskOrganizerController mTaskOrganizerController = new TaskOrganizerController(this);
 
     private int mDeviceOwnerUid = Process.INVALID_UID;
 
@@ -898,12 +889,11 @@
         return mUserManager;
     }
 
-    AppOpsService getAppOpsService() {
-        if (mAppOpsService == null) {
-            IBinder b = ServiceManager.getService(Context.APP_OPS_SERVICE);
-            mAppOpsService = (AppOpsService) IAppOpsService.Stub.asInterface(b);
+    AppOpsManager getAppOpsManager() {
+        if (mAppOpsManager == null) {
+            mAppOpsManager = mContext.getSystemService(AppOpsManager.class);
         }
-        return mAppOpsService;
+        return mAppOpsManager;
     }
 
     boolean hasUserRestriction(String restriction, int userId) {
@@ -911,8 +901,8 @@
     }
 
     boolean hasSystemAlertWindowPermission(int callingUid, int callingPid, String callingPackage) {
-        final int mode = getAppOpsService().noteOperation(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
-                callingUid, callingPackage, /* featureId */ null, false, "");
+        final int mode = getAppOpsManager().noteOpNoThrow(AppOpsManager.OP_SYSTEM_ALERT_WINDOW,
+                callingUid, callingPackage, /* featureId */ null, "");
         if (mode == AppOpsManager.MODE_DEFAULT) {
             return checkPermission(Manifest.permission.SYSTEM_ALERT_WINDOW, callingPid, callingUid)
                     == PERMISSION_GRANTED;
@@ -1032,41 +1022,43 @@
 
     @Override
     public final int startActivity(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions) {
-        return startActivityAsUser(caller, callingPackage, intent, resolvedType, resultTo,
-                resultWho, requestCode, startFlags, profilerInfo, bOptions,
+            String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo,
+            Bundle bOptions) {
+        return startActivityAsUser(caller, callingPackage, callingFeatureId, intent, resolvedType,
+                resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions,
                 UserHandle.getCallingUserId());
     }
 
     @Override
     public final int startActivities(IApplicationThread caller, String callingPackage,
-            Intent[] intents, String[] resolvedTypes, IBinder resultTo, Bundle bOptions,
-            int userId) {
+            String callingFeatureId, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
+            Bundle bOptions, int userId) {
         assertPackageMatchesCallingUid(callingPackage);
         final String reason = "startActivities";
         enforceNotIsolatedCaller(reason);
         userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId, reason);
         // TODO: Switch to user app stacks here.
         return getActivityStartController().startActivities(caller, -1, 0, -1, callingPackage,
-                intents, resolvedTypes, resultTo, SafeActivityOptions.fromBundle(bOptions), userId,
-                reason, null /* originatingPendingIntent */,
-                false /* allowBackgroundActivityStart */);
+                callingFeatureId, intents, resolvedTypes, resultTo,
+                SafeActivityOptions.fromBundle(bOptions), userId, reason,
+                null /* originatingPendingIntent */, false /* allowBackgroundActivityStart */);
     }
 
     @Override
     public int startActivityAsUser(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
-        return startActivityAsUser(caller, callingPackage, intent, resolvedType, resultTo,
-                resultWho, requestCode, startFlags, profilerInfo, bOptions, userId,
+            String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo,
+            Bundle bOptions, int userId) {
+        return startActivityAsUser(caller, callingPackage, callingFeatureId, intent, resolvedType,
+                resultTo, resultWho, requestCode, startFlags, profilerInfo, bOptions, userId,
                 true /*validateIncomingUser*/);
     }
 
     private int startActivityAsUser(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId,
-            boolean validateIncomingUser) {
+            @Nullable String callingFeatureId, Intent intent, String resolvedType,
+            IBinder resultTo, String resultWho, int requestCode, int startFlags,
+            ProfilerInfo profilerInfo, Bundle bOptions, int userId, boolean validateIncomingUser) {
         assertPackageMatchesCallingUid(callingPackage);
         enforceNotIsolatedCaller("startActivityAsUser");
 
@@ -1077,6 +1069,7 @@
         return getActivityStartController().obtainStarter(intent, "startActivityAsUser")
                 .setCaller(caller)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setResultTo(resultTo)
                 .setResultWho(resultWho)
@@ -1222,6 +1215,7 @@
                     .setCallingPid(-1)
                     .setCallingUid(r.launchedFromUid)
                     .setCallingPackage(r.launchedFromPackage)
+                    .setCallingFeatureId(r.launchedFromFeatureId)
                     .setRealCallingPid(-1)
                     .setRealCallingUid(r.launchedFromUid)
                     .setActivityOptions(options)
@@ -1238,8 +1232,9 @@
 
     @Override
     public final WaitResult startActivityAndWait(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, ProfilerInfo profilerInfo, Bundle bOptions, int userId) {
+            String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, ProfilerInfo profilerInfo,
+            Bundle bOptions, int userId) {
         assertPackageMatchesCallingUid(callingPackage);
         final WaitResult res = new WaitResult();
         enforceNotIsolatedCaller("startActivityAndWait");
@@ -1249,6 +1244,7 @@
         getActivityStartController().obtainStarter(intent, "startActivityAndWait")
                 .setCaller(caller)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setResultTo(resultTo)
                 .setResultWho(resultWho)
@@ -1264,8 +1260,9 @@
 
     @Override
     public final int startActivityWithConfig(IApplicationThread caller, String callingPackage,
-            Intent intent, String resolvedType, IBinder resultTo, String resultWho, int requestCode,
-            int startFlags, Configuration config, Bundle bOptions, int userId) {
+            String callingFeatureId, Intent intent, String resolvedType, IBinder resultTo,
+            String resultWho, int requestCode, int startFlags, Configuration config,
+            Bundle bOptions, int userId) {
         assertPackageMatchesCallingUid(callingPackage);
         enforceNotIsolatedCaller("startActivityWithConfig");
         userId = handleIncomingUser(Binder.getCallingPid(), Binder.getCallingUid(), userId,
@@ -1274,6 +1271,7 @@
         return getActivityStartController().obtainStarter(intent, "startActivityWithConfig")
                 .setCaller(caller)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setResultTo(resultTo)
                 .setResultWho(resultWho)
@@ -1286,15 +1284,6 @@
     }
 
     @Override
-    public final void registerTaskOrganizer(ITaskOrganizer organizer, int windowingMode) {
-        enforceCallerIsRecentsOrHasPermission(
-                MANAGE_ACTIVITY_STACKS, "registerTaskOrganizer()");
-        synchronized (mGlobalLock) {
-            mTaskOrganizerController.registerTaskOrganizer(organizer, windowingMode);
-        }
-    }
-
-    @Override
     public IBinder requestStartActivityPermissionToken(IBinder delegatorToken) {
         int callingUid = Binder.getCallingUid();
         if (UserHandle.getAppId(callingUid) != SYSTEM_UID) {
@@ -1333,6 +1322,7 @@
         final ActivityRecord sourceRecord;
         final int targetUid;
         final String targetPackage;
+        final String targetFeatureId;
         final boolean isResolver;
         synchronized (mGlobalLock) {
             if (resultTo == null) {
@@ -1400,6 +1390,7 @@
             }
             targetUid = sourceRecord.launchedFromUid;
             targetPackage = sourceRecord.launchedFromPackage;
+            targetFeatureId = sourceRecord.launchedFromFeatureId;
             isResolver = sourceRecord.isResolverOrChildActivity();
         }
 
@@ -1412,6 +1403,7 @@
             return getActivityStartController().obtainStarter(intent, "startActivityAsCaller")
                     .setCallingUid(targetUid)
                     .setCallingPackage(targetPackage)
+                    .setCallingFeatureId(targetFeatureId)
                     .setResolvedType(resolvedType)
                     .setResultTo(resultTo)
                     .setResultWho(resultWho)
@@ -1447,8 +1439,8 @@
     }
 
     @Override
-    public int startVoiceActivity(String callingPackage, int callingPid, int callingUid,
-            Intent intent, String resolvedType, IVoiceInteractionSession session,
+    public int startVoiceActivity(String callingPackage, String callingFeatureId, int callingPid,
+            int callingUid, Intent intent, String resolvedType, IVoiceInteractionSession session,
             IVoiceInteractor interactor, int startFlags, ProfilerInfo profilerInfo,
             Bundle bOptions, int userId) {
         assertPackageMatchesCallingUid(callingPackage);
@@ -1461,6 +1453,7 @@
         return getActivityStartController().obtainStarter(intent, "startVoiceActivity")
                 .setCallingUid(callingUid)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setVoiceSession(session)
                 .setVoiceInteractor(interactor)
@@ -1473,8 +1466,9 @@
     }
 
     @Override
-    public int startAssistantActivity(String callingPackage, int callingPid, int callingUid,
-            Intent intent, String resolvedType, Bundle bOptions, int userId) {
+    public int startAssistantActivity(String callingPackage, @NonNull String callingFeatureId,
+            int callingPid, int callingUid, Intent intent, String resolvedType, Bundle bOptions,
+            int userId) {
         assertPackageMatchesCallingUid(callingPackage);
         mAmInternal.enforceCallingPermission(BIND_VOICE_INTERACTION, "startAssistantActivity()");
         userId = handleIncomingUser(callingPid, callingUid, userId, "startAssistantActivity");
@@ -1482,6 +1476,7 @@
         return getActivityStartController().obtainStarter(intent, "startAssistantActivity")
                 .setCallingUid(callingUid)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setActivityOptions(bOptions)
                 .setUserId(userId)
@@ -1505,13 +1500,14 @@
         try {
             synchronized (mGlobalLock) {
                 final ComponentName recentsComponent = mRecentTasks.getRecentsComponent();
+                final String recentsFeatureId = mRecentTasks.getRecentsComponentFeatureId();
                 final int recentsUid = mRecentTasks.getRecentsComponentUid();
                 final WindowProcessController caller = getProcessController(callingPid, callingUid);
 
                 // Start a new recents animation
                 final RecentsAnimation anim = new RecentsAnimation(this, mStackSupervisor,
                         getActivityStartController(), mWindowManager, intent, recentsComponent,
-                        recentsUid, caller);
+                        recentsFeatureId, recentsUid, caller);
                 if (recentsAnimationRunner == null) {
                     anim.preloadRecentsActivity();
                 } else {
@@ -2263,11 +2259,11 @@
     }
 
     @Override
-    public void setTaskWindowingMode(int taskId, int windowingMode, boolean toTop) {
+    public boolean setTaskWindowingMode(int taskId, int windowingMode, boolean toTop) {
         if (windowingMode == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY) {
-            setTaskWindowingModeSplitScreenPrimary(taskId, SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT,
+            return setTaskWindowingModeSplitScreenPrimary(taskId,
+                    SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT,
                     toTop, ANIMATE, null /* initialBounds */, true /* showRecents */);
-            return;
         }
         enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "setTaskWindowingMode()");
         synchronized (mGlobalLock) {
@@ -2277,7 +2273,7 @@
                         MATCH_TASK_IN_STACKS_ONLY);
                 if (task == null) {
                     Slog.w(TAG, "setTaskWindowingMode: No task for id=" + taskId);
-                    return;
+                    return false;
                 }
 
                 if (DEBUG_STACK) Slog.d(TAG_STACK, "setTaskWindowingMode: moving task=" + taskId
@@ -2294,6 +2290,7 @@
                     stack.moveToFront("setTaskWindowingMode", task);
                 }
                 stack.setWindowingMode(windowingMode);
+                return true;
             } finally {
                 Binder.restoreCallingIdentity(ident);
             }
@@ -2712,6 +2709,7 @@
      *                      stack. Pass {@code null} to use default bounds.
      * @param showRecents If the recents activity should be shown on the other side of the task
      *                    going into split-screen mode.
+     * @return Whether the task was successfully put into splitscreen.
      */
     @Override
     public boolean setTaskWindowingModeSplitScreenPrimary(int taskId, int createMode,
@@ -2721,20 +2719,26 @@
         synchronized (mGlobalLock) {
             final long ident = Binder.clearCallingIdentity();
             try {
+                if (isInLockTaskMode()) {
+                    Slog.w(TAG, "setTaskWindowingModeSplitScreenPrimary: Is in lock task mode="
+                            + getLockTaskModeState());
+                    return false;
+                }
+
                 final Task task = mRootWindowContainer.anyTaskForId(taskId,
                         MATCH_TASK_IN_STACKS_ONLY);
                 if (task == null) {
                     Slog.w(TAG, "setTaskWindowingModeSplitScreenPrimary: No task for id=" + taskId);
                     return false;
                 }
-                if (DEBUG_STACK) Slog.d(TAG_STACK,
-                        "setTaskWindowingModeSplitScreenPrimary: moving task=" + taskId
-                                + " to createMode=" + createMode + " toTop=" + toTop);
                 if (!task.isActivityTypeStandardOrUndefined()) {
                     throw new IllegalArgumentException("setTaskWindowingMode: Attempt to move"
                             + " non-standard task " + taskId + " to split-screen windowing mode");
                 }
 
+                if (DEBUG_STACK) Slog.d(TAG_STACK,
+                        "setTaskWindowingModeSplitScreenPrimary: moving task=" + taskId
+                                + " to createMode=" + createMode + " toTop=" + toTop);
                 mWindowManager.setDockedStackCreateStateLocked(createMode, initialBounds);
                 final int windowingMode = task.getWindowingMode();
                 final ActivityStack stack = task.getStack();
@@ -2803,6 +2807,7 @@
         }
     }
 
+    // TODO(148895075): deprecate and replace with task equivalents
     @Override
     public List<ActivityManager.StackInfo> getAllStackInfos() {
         enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getAllStackInfos()");
@@ -2829,6 +2834,7 @@
         }
     }
 
+    // TODO(148895075): deprecate and replace with task equivalents
     @Override
     public List<ActivityManager.StackInfo> getAllStackInfosOnDisplay(int displayId) {
         enforceCallerIsRecentsOrHasPermission(MANAGE_ACTIVITY_STACKS, "getAllStackInfos()");
@@ -3304,116 +3310,6 @@
         }
     }
 
-    private int sanitizeAndApplyChange(WindowContainer container,
-            WindowContainerTransaction.Change change) {
-        if (!(container instanceof Task || container instanceof ActivityStack)) {
-            throw new RuntimeException("Invalid token in task transaction");
-        }
-        // The "client"-facing API should prevent bad changes; however, just in case, sanitize
-        // masks here.
-        int configMask = change.getConfigSetMask();
-        int windowMask = change.getWindowSetMask();
-        configMask &= ActivityInfo.CONFIG_WINDOW_CONFIGURATION
-                | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
-        windowMask &= WindowConfiguration.WINDOW_CONFIG_BOUNDS;
-        int effects = 0;
-        if (configMask != 0) {
-            Configuration c = new Configuration(container.getRequestedOverrideConfiguration());
-            c.setTo(change.getConfiguration(), configMask, windowMask);
-            container.onRequestedOverrideConfigurationChanged(c);
-            // TODO(b/145675353): remove the following once we could apply new bounds to the
-            // pinned stack together with its children.
-            resizePinnedStackIfNeeded(container, configMask, windowMask, c);
-            effects |= TRANSACT_EFFECTS_CLIENT_CONFIG;
-        }
-        if ((change.getChangeMask() & WindowContainerTransaction.Change.CHANGE_FOCUSABLE) != 0) {
-            if (container.setFocusable(change.getFocusable())) {
-                effects |= TRANSACT_EFFECTS_LIFECYCLE;
-            }
-        }
-        return effects;
-    }
-
-    private void resizePinnedStackIfNeeded(ConfigurationContainer container, int configMask,
-            int windowMask, Configuration config) {
-        if ((container instanceof ActivityStack)
-                && ((configMask & ActivityInfo.CONFIG_WINDOW_CONFIGURATION) != 0)
-                && ((windowMask & WindowConfiguration.WINDOW_CONFIG_BOUNDS) != 0)) {
-            final ActivityStack stack = (ActivityStack) container;
-            if (stack.inPinnedWindowingMode()) {
-                stack.resize(config.windowConfiguration.getBounds(),
-                        null /* tempTaskBounds */, null /* tempTaskInsetBounds */,
-                        PRESERVE_WINDOWS, true /* deferResume */);
-            }
-        }
-    }
-
-    private int applyWindowContainerChange(WindowContainer wc,
-            WindowContainerTransaction.Change c) {
-        int effects = sanitizeAndApplyChange(wc, c);
-
-        Rect enterPipBounds = c.getEnterPipBounds();
-        if (enterPipBounds != null) {
-            Task tr = (Task) wc;
-            mStackSupervisor.updatePictureInPictureMode(tr,
-                    enterPipBounds, true);
-        }
-        return effects;
-    }
-
-    @Override
-    public void applyContainerTransaction(WindowContainerTransaction t) {
-        mAmInternal.enforceCallingPermission(MANAGE_ACTIVITY_STACKS, "applyContainerTransaction()");
-        if (t == null) {
-            return;
-        }
-        long ident = Binder.clearCallingIdentity();
-        try {
-            synchronized (mGlobalLock) {
-                int effects = 0;
-                deferWindowLayout();
-                try {
-                    ArraySet<WindowContainer> haveConfigChanges = new ArraySet<>();
-                    Iterator<Map.Entry<IBinder, WindowContainerTransaction.Change>> entries =
-                            t.getChanges().entrySet().iterator();
-                    while (entries.hasNext()) {
-                        final Map.Entry<IBinder, WindowContainerTransaction.Change> entry =
-                                entries.next();
-                        final WindowContainer wc = WindowContainer.RemoteToken.fromBinder(
-                                entry.getKey()).getContainer();
-                        int containerEffect = applyWindowContainerChange(wc, entry.getValue());
-                        effects |= containerEffect;
-                        // Lifecycle changes will trigger ensureConfig for everything.
-                        if ((effects & TRANSACT_EFFECTS_LIFECYCLE) == 0
-                                && (containerEffect & TRANSACT_EFFECTS_CLIENT_CONFIG) != 0) {
-                            haveConfigChanges.add(wc);
-                        }
-                    }
-                    if ((effects & TRANSACT_EFFECTS_LIFECYCLE) != 0) {
-                        // Already calls ensureActivityConfig
-                        mRootWindowContainer.ensureActivitiesVisible(null, 0, PRESERVE_WINDOWS);
-                    } else if ((effects & TRANSACT_EFFECTS_CLIENT_CONFIG) != 0) {
-                        final PooledConsumer f = PooledLambda.obtainConsumer(
-                                ActivityRecord::ensureActivityConfiguration,
-                                PooledLambda.__(ActivityRecord.class), 0,
-                                false /* preserveWindow */);
-                        try {
-                            for (int i = haveConfigChanges.size() - 1; i >= 0; --i) {
-                                haveConfigChanges.valueAt(i).forAllActivities(f);
-                            }
-                        } finally {
-                            f.recycle();
-                        }
-                    }
-                } finally {
-                    continueWindowLayout();
-                }
-            }
-        } finally {
-            Binder.restoreCallingIdentity(ident);
-        }
-    }
-
     @Override
     public boolean releaseActivityInstance(IBinder token) {
         synchronized (mGlobalLock) {
@@ -4271,7 +4167,7 @@
                             return;
                         }
                         // Only update the saved args from the args that are set
-                        r.pictureInPictureArgs.copyOnlySet(params);
+                        r.setPictureInPictureParams(params);
                         final float aspectRatio = r.pictureInPictureArgs.getAspectRatio();
                         final List<RemoteAction> actions = r.pictureInPictureArgs.getActions();
                         // Adjust the source bounds by the insets for the transition down
@@ -4319,7 +4215,7 @@
                         "setPictureInPictureParams", token, params);
 
                 // Only update the saved args from the args that are set
-                r.pictureInPictureArgs.copyOnlySet(params);
+                r.setPictureInPictureParams(params);
                 if (r.inPinnedWindowingMode()) {
                     // If the activity is already in picture-in-picture, update the pinned stack now
                     // if it is not already expanding to fullscreen. Otherwise, the arguments will
@@ -4442,6 +4338,13 @@
         }
     }
 
+    @Override
+    public ITaskOrganizerController getTaskOrganizerController() {
+        mAmInternal.enforceCallingPermission(MANAGE_ACTIVITY_STACKS,
+                "getTaskOrganizerController()");
+        return mTaskOrganizerController;
+    }
+
     /**
      * Check that we have the features required for VR-related API calls, and throw an exception if
      * not.
@@ -5380,7 +5283,7 @@
         if (DEBUG_SWITCH || DEBUG_CONFIGURATION) Slog.i(TAG_CONFIGURATION,
                 "Updating global configuration to: " + values);
         writeConfigurationChanged(changes);
-        StatsLog.write(StatsLog.RESOURCE_CONFIGURATION_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.RESOURCE_CONFIGURATION_CHANGED,
                 values.colorMode,
                 values.densityDpi,
                 values.fontScale,
@@ -5699,8 +5602,8 @@
             // will wake up stacks or put them to sleep as appropriate.
             if (wasSleeping) {
                 mSleeping = false;
-                StatsLog.write(StatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED,
-                        StatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED__STATE__AWAKE);
+                FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED,
+                        FrameworkStatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED__STATE__AWAKE);
                 startTimeTrackingFocusedActivityLocked();
                 mTopProcessState = ActivityManager.PROCESS_STATE_TOP;
                 Slog.d(TAG, "Top Process State changed to PROCESS_STATE_TOP");
@@ -5712,8 +5615,8 @@
             }
         } else if (!mSleeping && shouldSleep) {
             mSleeping = true;
-            StatsLog.write(StatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED,
-                    StatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED__STATE__ASLEEP);
+            FrameworkStatsLog.write(FrameworkStatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED,
+                    FrameworkStatsLog.ACTIVITY_MANAGER_SLEEP_STATE_CHANGED__STATE__ASLEEP);
             if (mCurAppTimeTracker != null) {
                 mCurAppTimeTracker.stop();
             }
@@ -5884,9 +5787,9 @@
 
     }
 
-    IIntentSender getIntentSenderLocked(int type, String packageName, int callingUid, int userId,
-            IBinder token, String resultWho, int requestCode, Intent[] intents,
-            String[] resolvedTypes, int flags, Bundle bOptions) {
+    IIntentSender getIntentSenderLocked(int type, String packageName, String featureId,
+            int callingUid, int userId, IBinder token, String resultWho, int requestCode,
+            Intent[] intents, String[] resolvedTypes, int flags, Bundle bOptions) {
 
         ActivityRecord activity = null;
         if (type == ActivityManager.INTENT_SENDER_ACTIVITY_RESULT) {
@@ -5902,8 +5805,8 @@
         }
 
         final PendingIntentRecord rec = mPendingIntentController.getIntentSender(type, packageName,
-                callingUid, userId, token, resultWho, requestCode, intents, resolvedTypes, flags,
-                bOptions);
+                featureId, callingUid, userId, token, resultWho, requestCode, intents,
+                resolvedTypes, flags, bOptions);
         final boolean noCreate = (flags & PendingIntent.FLAG_NO_CREATE) != 0;
         if (noCreate) {
             return rec;
@@ -6291,8 +6194,8 @@
         }
 
         @Override
-        public int startActivitiesAsPackage(String packageName, int userId, Intent[] intents,
-                Bundle bOptions) {
+        public int startActivitiesAsPackage(String packageName, @Nullable String featureId,
+                int userId, Intent[] intents, Bundle bOptions) {
             Objects.requireNonNull(intents, "intents");
             final String[] resolvedTypes = new String[intents.length];
 
@@ -6317,7 +6220,7 @@
             }
 
             return getActivityStartController().startActivitiesInPackage(
-                    packageUid, packageName,
+                    packageUid, packageName, featureId,
                     intents, resolvedTypes, null /* resultTo */,
                     SafeActivityOptions.fromBundle(bOptions), userId,
                     false /* validateIncomingUser */, null /* originatingPendingIntent */,
@@ -6326,41 +6229,41 @@
 
         @Override
         public int startActivitiesInPackage(int uid, int realCallingPid, int realCallingUid,
-                String callingPackage, Intent[] intents, String[] resolvedTypes, IBinder resultTo,
-                SafeActivityOptions options, int userId, boolean validateIncomingUser,
-                PendingIntentRecord originatingPendingIntent,
+                String callingPackage, @Nullable String callingFeatureId, Intent[] intents,
+                String[] resolvedTypes, IBinder resultTo, SafeActivityOptions options, int userId,
+                boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
                 boolean allowBackgroundActivityStart) {
             assertPackageMatchesCallingUid(callingPackage);
             synchronized (mGlobalLock) {
                 return getActivityStartController().startActivitiesInPackage(uid, realCallingPid,
-                        realCallingUid, callingPackage, intents, resolvedTypes, resultTo, options,
-                        userId, validateIncomingUser, originatingPendingIntent,
+                        realCallingUid, callingPackage, callingFeatureId, intents, resolvedTypes,
+                        resultTo, options, userId, validateIncomingUser, originatingPendingIntent,
                         allowBackgroundActivityStart);
             }
         }
 
         @Override
         public int startActivityInPackage(int uid, int realCallingPid, int realCallingUid,
-                String callingPackage, Intent intent, String resolvedType, IBinder resultTo,
-                String resultWho, int requestCode, int startFlags, SafeActivityOptions options,
-                int userId, Task inTask, String reason, boolean validateIncomingUser,
-                PendingIntentRecord originatingPendingIntent,
+                String callingPackage, @Nullable String callingFeatureId, Intent intent,
+                String resolvedType, IBinder resultTo, String resultWho, int requestCode,
+                int startFlags, SafeActivityOptions options, int userId, Task inTask, String reason,
+                boolean validateIncomingUser, PendingIntentRecord originatingPendingIntent,
                 boolean allowBackgroundActivityStart) {
             assertPackageMatchesCallingUid(callingPackage);
             synchronized (mGlobalLock) {
                 return getActivityStartController().startActivityInPackage(uid, realCallingPid,
-                        realCallingUid, callingPackage, intent, resolvedType, resultTo, resultWho,
-                        requestCode, startFlags, options, userId, inTask, reason,
-                        validateIncomingUser, originatingPendingIntent,
+                        realCallingUid, callingPackage, callingFeatureId, intent, resolvedType,
+                        resultTo, resultWho, requestCode, startFlags, options, userId, inTask,
+                        reason, validateIncomingUser, originatingPendingIntent,
                         allowBackgroundActivityStart);
             }
         }
 
         @Override
-        public int startActivityAsUser(IApplicationThread caller, String callerPacakge,
-                Intent intent, Bundle options, int userId) {
+        public int startActivityAsUser(IApplicationThread caller, String callerPackage,
+                @Nullable String callerFeatureId, Intent intent, Bundle options, int userId) {
             return ActivityTaskManagerService.this.startActivityAsUser(
-                    caller, callerPacakge, intent,
+                    caller, callerPackage, callerFeatureId, intent,
                     intent.resolveTypeIfNeeded(mContext.getContentResolver()),
                     null, null, 0, Intent.FLAG_ACTIVITY_NEW_TASK, null, options, userId,
                     false /*validateIncomingUser*/);
@@ -6796,12 +6699,12 @@
 
         @Override
         public IIntentSender getIntentSender(int type, String packageName,
-                int callingUid, int userId, IBinder token, String resultWho,
-                int requestCode, Intent[] intents, String[] resolvedTypes, int flags,
-                Bundle bOptions) {
+                @Nullable String featureId, int callingUid, int userId, IBinder token,
+                String resultWho, int requestCode, Intent[] intents, String[] resolvedTypes,
+                int flags, Bundle bOptions) {
             synchronized (mGlobalLock) {
-                return getIntentSenderLocked(type, packageName, callingUid, userId, token,
-                        resultWho, requestCode, intents, resolvedTypes, flags, bOptions);
+                return getIntentSenderLocked(type, packageName, featureId, callingUid, userId,
+                        token, resultWho, requestCode, intents, resolvedTypes, flags, bOptions);
             }
         }
 
@@ -7082,10 +6985,8 @@
         public void writeActivitiesToProto(ProtoOutputStream proto) {
             synchronized (mGlobalLock) {
                 // The output proto of "activity --proto activities"
-                // is ActivityManagerServiceDumpActivitiesProto
-                mRootWindowContainer.dumpDebug(proto,
-                        ActivityManagerServiceDumpActivitiesProto.ACTIVITY_STACK_SUPERVISOR,
-                        WindowTraceLogLevel.ALL);
+                mRootWindowContainer.dumpDebug(
+                        proto, ROOT_WINDOW_CONTAINER, WindowTraceLogLevel.ALL);
             }
         }
 
diff --git a/services/core/java/com/android/server/wm/AnimationAdapter.java b/services/core/java/com/android/server/wm/AnimationAdapter.java
index 1be3d61..0519b80 100644
--- a/services/core/java/com/android/server/wm/AnimationAdapter.java
+++ b/services/core/java/com/android/server/wm/AnimationAdapter.java
@@ -21,6 +21,7 @@
 import android.view.SurfaceControl.Transaction;
 import android.view.animation.Animation;
 
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
@@ -47,9 +48,10 @@
      *                       component running the animation after {@code finishCallback} has been
      *                       invoked, or after the animation was cancelled.
      * @param t The Transaction to apply the initial frame of the animation.
+     * @param type The type of the animation.
      * @param finishCallback The callback to be invoked when the animation has finished.
      */
-    void startAnimation(SurfaceControl animationLeash, Transaction t,
+    void startAnimation(SurfaceControl animationLeash, Transaction t, @AnimationType int type,
             OnAnimationFinishedCallback finishCallback);
 
     /**
diff --git a/services/core/java/com/android/server/wm/AppTaskImpl.java b/services/core/java/com/android/server/wm/AppTaskImpl.java
index 16a7564..8fa8119 100644
--- a/services/core/java/com/android/server/wm/AppTaskImpl.java
+++ b/services/core/java/com/android/server/wm/AppTaskImpl.java
@@ -125,7 +125,7 @@
     }
 
     @Override
-    public int startActivity(IBinder whoThread, String callingPackage,
+    public int startActivity(IBinder whoThread, String callingPackage, String callingFeatureId,
             Intent intent, String resolvedType, Bundle bOptions) {
         checkCaller();
         mService.assertPackageMatchesCallingUid(callingPackage);
@@ -148,6 +148,7 @@
         return mService.getActivityStartController().obtainStarter(intent, "AppTaskImpl")
                 .setCaller(appThread)
                 .setCallingPackage(callingPackage)
+                .setCallingFeatureId(callingFeatureId)
                 .setResolvedType(resolvedType)
                 .setActivityOptions(bOptions)
                 .setUserId(callingUser)
diff --git a/services/core/java/com/android/server/wm/AppTransitionController.java b/services/core/java/com/android/server/wm/AppTransitionController.java
index 3927d5f..f72020e 100644
--- a/services/core/java/com/android/server/wm/AppTransitionController.java
+++ b/services/core/java/com/android/server/wm/AppTransitionController.java
@@ -377,9 +377,9 @@
                     transitioningDecendants.add(app);
                 }
             }
-            wc.applyAnimation(animLp, transit, visible, voiceInteraction, () -> {
+            wc.applyAnimation(animLp, transit, visible, voiceInteraction, (type, anim) -> {
                 for (int j = 0; j < transitioningDecendants.size(); ++j) {
-                    transitioningDecendants.get(j).onAnimationFinished();
+                    transitioningDecendants.get(j).onAnimationFinished(type, anim);
                 }
             });
         }
@@ -431,6 +431,8 @@
         while (!candidates.isEmpty()) {
             final WindowContainer current = candidates.removeFirst();
             final WindowContainer parent = current.getParent();
+            siblings.clear();
+            siblings.add(current);
             boolean canPromote = true;
 
             if (parent == null) {
@@ -468,12 +470,11 @@
                 //
                 // [Task] +- [ActivityRecord1] (visible, in opening apps)
                 //        +- [ActivityRecord2] (visible, not in opening apps)
-                siblings.clear();
                 for (int j = 0; j < parent.getChildCount(); ++j) {
                     final WindowContainer sibling = parent.getChildAt(j);
-                    if (sibling == current || candidates.remove(sibling)) {
+                    if (candidates.remove(sibling)) {
                         siblings.add(sibling);
-                    } else if (sibling.isVisible()) {
+                    } else if (sibling != current && sibling.isVisible()) {
                         canPromote = false;
                     }
                 }
diff --git a/services/core/java/com/android/server/wm/BLASTSyncEngine.java b/services/core/java/com/android/server/wm/BLASTSyncEngine.java
new file mode 100644
index 0000000..94decc7
--- /dev/null
+++ b/services/core/java/com/android/server/wm/BLASTSyncEngine.java
@@ -0,0 +1,122 @@
+/*
+ * 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.server.wm;
+
+import android.os.IBinder;
+import android.os.RemoteException;
+import android.util.Slog;
+import android.view.ITaskOrganizer;
+import android.view.SurfaceControl;
+
+import java.util.HashMap;
+
+/**
+ * Utility class for collecting and merging transactions from various sources asynchronously.
+ * For example to use to synchronously resize all the children of a window container
+ *   1. Open a new sync set, and pass the listener that will be invoked
+ *        int id startSyncSet(TransactionReadyListener)
+ *      the returned ID will be eventually passed to the TransactionReadyListener in combination
+ *      with the prepared transaction. You also use it to refer to the operation in future steps.
+ *   2. Ask each child to participate:
+ *       addToSyncSet(int id, WindowContainer wc)
+ *      if the child thinks it will be affected by a configuration change (a.k.a. has a visible
+ *      window in its sub hierarchy, then we will increment a counter of expected callbacks
+ *      At this point the containers hierarchy will redirect pendingTransaction and sub hierarchy
+ *      updates in to the sync engine.
+ *   3. Apply your configuration changes to the window containers.
+ *   4. Tell the engine that the sync set is ready
+ *       setReady(int id)
+ *   5. If there were no sub windows anywhere in the hierarchy to wait on, then
+ *      transactionReady is immediately invoked, otherwise all the windows are poked
+ *      to redraw and to deliver a buffer to WMS#finishDrawing.
+ *      Once all this drawing is complete the combined transaction of all the buffers
+ *      and pending transaction hierarchy changes will be delivered to the TransactionReadyListener
+ */
+class BLASTSyncEngine {
+    private static final String TAG = "BLASTSyncEngine";
+
+    interface TransactionReadyListener {
+        void transactionReady(int mSyncId, SurfaceControl.Transaction mergedTransaction);
+    };
+
+    // Holds state associated with a single synchronous set of operations.
+    class SyncState implements TransactionReadyListener {
+        int mSyncId;
+        SurfaceControl.Transaction mMergedTransaction;
+        int mRemainingTransactions;
+        TransactionReadyListener mListener;
+        boolean mReady = false;
+
+        private void tryFinish() {
+            if (mRemainingTransactions == 0 && mReady) {
+                mListener.transactionReady(mSyncId, mMergedTransaction);
+                mPendingSyncs.remove(mSyncId);
+            }
+        }
+
+        public void transactionReady(int mSyncId, SurfaceControl.Transaction mergedTransaction) {
+            mRemainingTransactions--;
+            mMergedTransaction.merge(mergedTransaction);
+            tryFinish();
+        }
+
+        void setReady() {
+            mReady = true;
+            tryFinish();
+        }
+
+        boolean addToSync(WindowContainer wc) {
+            if (wc.prepareForSync(this, mSyncId)) {
+                mRemainingTransactions++;
+                return true;
+            }
+            return false;
+        }
+
+        SyncState(TransactionReadyListener l, int id) {
+            mListener = l;
+            mSyncId = id;
+            mMergedTransaction = new SurfaceControl.Transaction();
+            mRemainingTransactions = 0;
+        }
+    };
+
+    int mNextSyncId = 0;
+
+    final HashMap<Integer, SyncState> mPendingSyncs = new HashMap();
+
+    BLASTSyncEngine() {
+    }
+
+    int startSyncSet(TransactionReadyListener listener) {
+        final int id = mNextSyncId++;
+        final SyncState s = new SyncState(listener, id);
+        mPendingSyncs.put(id, s);
+        return id;
+    }
+
+    boolean addToSyncSet(int id, WindowContainer wc) {
+        final SyncState st = mPendingSyncs.get(id);
+        return st.addToSync(wc);
+    }
+
+    // TODO(b/148476626): TIMEOUTS!
+    void setReady(int id) {
+        final SyncState st = mPendingSyncs.get(id);
+        st.setReady();
+    }
+}
diff --git a/services/core/java/com/android/server/wm/BoundsAnimationController.java b/services/core/java/com/android/server/wm/BoundsAnimationController.java
index 9b464c2..5385e2f 100644
--- a/services/core/java/com/android/server/wm/BoundsAnimationController.java
+++ b/services/core/java/com/android/server/wm/BoundsAnimationController.java
@@ -552,6 +552,10 @@
         return animationType;
     }
 
+    boolean isAnimationTypeFadeIn() {
+        return mAnimationType == FADE_IN;
+    }
+
     public Handler getHandler() {
         return mHandler;
     }
diff --git a/services/core/java/com/android/server/wm/Dimmer.java b/services/core/java/com/android/server/wm/Dimmer.java
index 16aff9c..537ca08 100644
--- a/services/core/java/com/android/server/wm/Dimmer.java
+++ b/services/core/java/com/android/server/wm/Dimmer.java
@@ -20,6 +20,7 @@
 import static com.android.server.wm.AlphaAnimationSpecProto.FROM;
 import static com.android.server.wm.AlphaAnimationSpecProto.TO;
 import static com.android.server.wm.AnimationSpecProto.ALPHA;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_DIMMER;
 
 import android.annotation.Nullable;
 import android.graphics.Rect;
@@ -29,6 +30,8 @@
 import android.view.SurfaceControl;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
 
@@ -135,7 +138,7 @@
             mDimLayer = dimLayer;
             mDimming = true;
             final DimAnimatable dimAnimatable = new DimAnimatable(dimLayer);
-            mSurfaceAnimator = new SurfaceAnimator(dimAnimatable, () -> {
+            mSurfaceAnimator = new SurfaceAnimator(dimAnimatable, (type, anim) -> {
                 if (!mDimming) {
                     dimAnimatable.removeSurface();
                 }
@@ -157,8 +160,8 @@
     @VisibleForTesting
     interface SurfaceAnimatorStarter {
         void startAnimation(SurfaceAnimator surfaceAnimator, SurfaceControl.Transaction t,
-                AnimationAdapter anim, boolean hidden,
-                @Nullable Runnable animationFinishedCallback);
+                AnimationAdapter anim, boolean hidden, @AnimationType int type,
+                @Nullable OnAnimationFinishedCallback animationFinishedCallback);
     }
 
     Dimmer(WindowContainer host) {
@@ -345,7 +348,7 @@
         mSurfaceAnimatorStarter.startAnimation(animator, t, new LocalAnimationAdapter(
                 new AlphaAnimationSpec(startAlpha, endAlpha, getDimDuration(container)),
                 mHost.mWmService.mSurfaceAnimationRunner), false /* hidden */,
-                null /* animationFinishedCallback */);
+                ANIMATION_TYPE_DIMMER, null /* animationFinishedCallback */);
     }
 
     private long getDimDuration(WindowContainer container) {
diff --git a/services/core/java/com/android/server/wm/DisplayArea.java b/services/core/java/com/android/server/wm/DisplayArea.java
new file mode 100644
index 0000000..b3edc91
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DisplayArea.java
@@ -0,0 +1,265 @@
+/*
+ * 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.server.wm;
+
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_BEHIND;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSET;
+import static android.content.pm.ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;
+import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
+import static android.view.WindowManagerPolicyConstants.APPLICATION_LAYER;
+
+import static com.android.internal.util.Preconditions.checkState;
+import static com.android.server.wm.DisplayAreaChildProto.DISPLAY_AREA;
+import static com.android.server.wm.DisplayAreaChildProto.UNKNOWN;
+import static com.android.server.wm.DisplayAreaChildProto.WINDOW;
+import static com.android.server.wm.DisplayAreaProto.CHILDREN;
+import static com.android.server.wm.DisplayAreaProto.NAME;
+import static com.android.server.wm.DisplayAreaProto.WINDOW_CONTAINER;
+import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
+
+import android.graphics.Rect;
+import android.util.proto.ProtoOutputStream;
+
+import com.android.server.policy.WindowManagerPolicy;
+import com.android.server.protolog.common.ProtoLog;
+
+import java.util.Comparator;
+import java.util.function.Predicate;
+
+/**
+ * Container for grouping WindowContainer below DisplayContent.
+ *
+ * DisplayAreas are managed by a {@link DisplayAreaPolicy}, and can override configurations and
+ * can be leashed.
+ *
+ * DisplayAreas can contain nested DisplayAreas.
+ *
+ * DisplayAreas come in three flavors, to ensure that windows have the right Z-Order:
+ * - BELOW_TASKS: Can only contain BELOW_TASK DisplayAreas and WindowTokens that go below tasks.
+ * - ABOVE_TASKS: Can only contain ABOVE_TASK DisplayAreas and WindowTokens that go above tasks.
+ * - ANY: Can contain any kind of DisplayArea, and any kind of WindowToken or the Task container.
+ *        Cannot have a sibling that is of type ANY.
+ *
+ * @param <T> type of the children of the DisplayArea.
+ */
+public class DisplayArea<T extends WindowContainer> extends WindowContainer<T> {
+
+    protected final Type mType;
+    private final String mName;
+
+    DisplayArea(WindowManagerService wms, Type type, String name) {
+        super(wms);
+        // TODO(display-area): move this up to ConfigurationContainer
+        mOrientation = SCREEN_ORIENTATION_UNSET;
+        mType = type;
+        mName = name;
+    }
+
+    @Override
+    void onChildPositionChanged(WindowContainer child) {
+        super.onChildPositionChanged(child);
+
+        // Verify that we have proper ordering
+        Type.checkChild(mType, Type.typeOf(child));
+
+        if (child instanceof ActivityStack) {
+            // TODO(display-area): ActivityStacks are type ANY, but are allowed to have siblings.
+            //                     They might need a separate type.
+            return;
+        }
+
+        for (int i = 1; i < getChildCount(); i++) {
+            final WindowContainer top = getChildAt(i - 1);
+            final WindowContainer bottom = getChildAt(i);
+            if (child == top || child == bottom) {
+                Type.checkSiblings(Type.typeOf(top), Type.typeOf(bottom));
+            }
+        }
+    }
+
+    @Override
+    boolean fillsParent() {
+        return true;
+    }
+
+    @Override
+    String getName() {
+        return mName;
+    }
+
+    @Override
+    public final void dumpDebug(ProtoOutputStream proto, long fieldId, int logLevel) {
+        final long token = proto.start(fieldId);
+        super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
+        proto.write(NAME, mName);
+        for (int i = 0; i < getChildCount(); i++) {
+            final long childToken = proto.start(CHILDREN);
+            final T child = getChildAt(i);
+            if (child instanceof ActivityStack) {
+                // TODO(display-area): Dump stacks & tasks here, instead of in DisplayContent's
+                //  dumpDebug. For now, skip them here to avoid dumping them as UNKNOWN.
+            } else if (child instanceof WindowToken) {
+                ((WindowToken) child).dumpDebug(proto, WINDOW, logLevel);
+            } else if (child instanceof DisplayArea) {
+                child.dumpDebug(proto, DISPLAY_AREA, logLevel);
+            } else {
+                proto.write(UNKNOWN, child.getClass().getSimpleName());
+            }
+            proto.end(childToken);
+        }
+        proto.end(token);
+    }
+
+    /**
+     * DisplayArea that contains WindowTokens, and orders them according to their type.
+     */
+    public static class Tokens extends DisplayArea<WindowToken> {
+        int mLastKeyguardForcedOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
+
+        private final Comparator<WindowToken> mWindowComparator =
+                Comparator.comparingInt(WindowToken::getWindowLayerFromType);
+
+        private final Predicate<WindowState> mGetOrientingWindow = w -> {
+            final WindowManagerPolicy policy = mWmService.mPolicy;
+            if (policy.isKeyguardHostWindow(w.mAttrs)) {
+                if (mWmService.mKeyguardGoingAway) {
+                    return false;
+                }
+                // Consider unoccluding only when all unknown visibilities have been
+                // resolved, as otherwise we just may be starting another occluding activity.
+                final boolean isUnoccluding =
+                        mDisplayContent.mAppTransition.getAppTransition()
+                                == TRANSIT_KEYGUARD_UNOCCLUDE
+                                && mDisplayContent.mUnknownAppVisibilityController.allResolved();
+                // If keyguard is showing, or we're unoccluding, force the keyguard's orientation,
+                // even if SystemUI hasn't updated the attrs yet.
+                if (policy.isKeyguardShowingAndNotOccluded() || isUnoccluding) {
+                    return true;
+                }
+            }
+            final int req = w.mAttrs.screenOrientation;
+            if (req == SCREEN_ORIENTATION_UNSPECIFIED || req == SCREEN_ORIENTATION_BEHIND
+                    || req == SCREEN_ORIENTATION_UNSET) {
+                return false;
+            }
+            return true;
+        };
+
+        Tokens(WindowManagerService wms, Type type, String name) {
+            super(wms, type, name);
+        }
+
+        void addChild(WindowToken token) {
+            addChild(token, mWindowComparator);
+        }
+
+        @Override
+        int getOrientation(int candidate) {
+            // Find a window requesting orientation.
+            final WindowState win = getWindow(mGetOrientingWindow);
+
+            if (win == null) {
+                return candidate;
+            }
+            int req = win.mAttrs.screenOrientation;
+            ProtoLog.v(WM_DEBUG_ORIENTATION, "%s forcing orientation to %d for display id=%d",
+                    win, req, mDisplayContent.getDisplayId());
+            if (mWmService.mPolicy.isKeyguardHostWindow(win.mAttrs)) {
+                // SystemUI controls the Keyguard orientation asynchronously, and mAttrs may be
+                // stale. We record / use the last known override.
+                if (req != SCREEN_ORIENTATION_UNSET && req != SCREEN_ORIENTATION_UNSPECIFIED) {
+                    mLastKeyguardForcedOrientation = req;
+                } else {
+                    req = mLastKeyguardForcedOrientation;
+                }
+            }
+            return req;
+        }
+    }
+
+    /**
+     * Top-most DisplayArea under DisplayContent.
+     */
+    public static class Root extends DisplayArea<DisplayArea> {
+        private final Dimmer mDimmer = new Dimmer(this);
+        private final Rect mTmpDimBoundsRect = new Rect();
+
+        Root(WindowManagerService wms) {
+            super(wms, Type.ANY, "DisplayArea.Root");
+        }
+
+        @Override
+        Dimmer getDimmer() {
+            return mDimmer;
+        }
+
+        @Override
+        void prepareSurfaces() {
+            mDimmer.resetDimStates();
+            super.prepareSurfaces();
+            getBounds(mTmpDimBoundsRect);
+
+            if (mDimmer.updateDims(getPendingTransaction(), mTmpDimBoundsRect)) {
+                scheduleAnimation();
+            }
+        }
+    }
+
+    enum Type {
+        /** Can only contain WindowTokens above the APPLICATION_LAYER. */
+        ABOVE_TASKS,
+        /** Can only contain WindowTokens below the APPLICATION_LAYER. */
+        BELOW_TASKS,
+        /** Can contain anything. */
+        ANY;
+
+        static void checkSiblings(Type bottom, Type top) {
+            checkState(!(bottom == ANY && top == ANY), "ANY cannot be a sibling of ANY");
+            checkState(!(bottom != BELOW_TASKS && top == BELOW_TASKS),
+                    bottom + " must be above BELOW_TASKS");
+            checkState(!(bottom == ABOVE_TASKS && top != ABOVE_TASKS),
+                    top + " must be below ABOVE_TASKS");
+        }
+
+        static void checkChild(Type parent, Type child) {
+            switch (parent) {
+                case ABOVE_TASKS:
+                    checkState(child == ABOVE_TASKS, "ABOVE_TASKS can only contain ABOVE_TASKS");
+                    break;
+                case BELOW_TASKS:
+                    checkState(child == BELOW_TASKS, "BELOW_TASKS can only contain BELOW_TASKS");
+                    break;
+            }
+        }
+
+        static Type typeOf(WindowContainer c) {
+            if (c instanceof DisplayArea) {
+                return ((DisplayArea) c).mType;
+            } else if (c instanceof WindowToken && !(c instanceof ActivityRecord)) {
+                return typeOf((WindowToken) c);
+            } else if (c instanceof ActivityStack) {
+                return ANY;
+            } else {
+                throw new IllegalArgumentException("Unknown container: " + c);
+            }
+        }
+
+        private static Type typeOf(WindowToken c) {
+            return c.getWindowLayerFromType() < APPLICATION_LAYER ? BELOW_TASKS : ABOVE_TASKS;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/wm/DisplayAreaPolicy.java b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
new file mode 100644
index 0000000..9e93e14
--- /dev/null
+++ b/services/core/java/com/android/server/wm/DisplayAreaPolicy.java
@@ -0,0 +1,187 @@
+/*
+ * 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.server.wm;
+
+import static android.view.WindowManager.LayoutParams.TYPE_INPUT_METHOD;
+
+import android.content.res.Resources;
+import android.text.TextUtils;
+
+import com.android.server.wm.DisplayContent.TaskContainers;
+
+/**
+ * Policy that manages DisplayAreas.
+ */
+public abstract class DisplayAreaPolicy {
+    protected final WindowManagerService mWmService;
+    protected final DisplayContent mContent;
+
+    /**
+     * The root DisplayArea. Attach all DisplayAreas to this area (directly or indirectly).
+     */
+    protected final DisplayArea.Root mRoot;
+
+    /**
+     * The IME container. The IME's windows are automatically added to this container.
+     */
+    protected final DisplayArea<? extends WindowContainer> mImeContainer;
+
+    /**
+     * The Tasks container. Tasks etc. are automatically added to this container.
+     */
+    protected final TaskContainers mTaskContainers;
+
+    /**
+     * Construct a new {@link DisplayAreaPolicy}
+     *
+     * @param wmService the window manager service instance
+     * @param content the display content for which the policy applies
+     * @param root the root display area under which the policy operates
+     * @param imeContainer the ime container that the policy must attach
+     * @param taskContainers the task container that the policy must attach
+     *
+     * @see #attachDisplayAreas()
+     */
+    protected DisplayAreaPolicy(WindowManagerService wmService,
+            DisplayContent content, DisplayArea.Root root,
+            DisplayArea<? extends WindowContainer> imeContainer, TaskContainers taskContainers) {
+        mWmService = wmService;
+        mContent = content;
+        mRoot = root;
+        mImeContainer = imeContainer;
+        mTaskContainers = taskContainers;
+    }
+
+    /**
+     * Called to ask the policy to set up the DisplayArea hierarchy. At a minimum this must:
+     *
+     * - attach mImeContainer to mRoot (or one of its descendants)
+     * - attach mTaskStacks to mRoot (or one of its descendants)
+     *
+     * Additionally, this is the right place to set up any other DisplayAreas as desired.
+     */
+    public abstract void attachDisplayAreas();
+
+    /**
+     * Called to ask the policy to attach the given WindowToken to the DisplayArea hierarchy.
+     *
+     * This must attach the token to mRoot (or one of its descendants).
+     */
+    public abstract void addWindow(WindowToken token);
+
+    /**
+     * Default policy that has no special features.
+     */
+    public static class Default extends DisplayAreaPolicy {
+
+        public Default(WindowManagerService wmService, DisplayContent content,
+                DisplayArea.Root root,
+                DisplayArea<? extends WindowContainer> imeContainer,
+                TaskContainers taskContainers) {
+            super(wmService, content, root, imeContainer, taskContainers);
+        }
+
+        private final DisplayArea.Tokens mBelow = new DisplayArea.Tokens(mWmService,
+                DisplayArea.Type.BELOW_TASKS, "BelowTasks");
+        private final DisplayArea<DisplayArea> mAbove = new DisplayArea<>(mWmService,
+                DisplayArea.Type.ABOVE_TASKS, "AboveTasks");
+        private final DisplayArea.Tokens mAboveBelowIme = new DisplayArea.Tokens(mWmService,
+                DisplayArea.Type.ABOVE_TASKS, "AboveTasksBelowIme");
+        private final DisplayArea.Tokens mAboveAboveIme = new DisplayArea.Tokens(mWmService,
+                DisplayArea.Type.ABOVE_TASKS, "AboveTasksAboveIme");
+
+        @Override
+        public void attachDisplayAreas() {
+            mRoot.addChild(mBelow, 0);
+            mRoot.addChild(mTaskContainers, 1);
+            mRoot.addChild(mAbove, 2);
+
+            mAbove.addChild(mAboveBelowIme, 0);
+            mAbove.addChild(mImeContainer, 1);
+            mAbove.addChild(mAboveAboveIme, 2);
+        }
+
+        @Override
+        public void addWindow(WindowToken token) {
+            switch (DisplayArea.Type.typeOf(token)) {
+                case ABOVE_TASKS:
+                    if (token.getWindowLayerFromType()
+                            < mWmService.mPolicy.getWindowLayerFromTypeLw(TYPE_INPUT_METHOD)) {
+                        mAboveBelowIme.addChild(token);
+                    } else {
+                        mAboveAboveIme.addChild(token);
+                    }
+                    break;
+                case BELOW_TASKS:
+                    mBelow.addChild(token);
+                    break;
+                default:
+                    throw new IllegalArgumentException("don't know how to sort " + token);
+            }
+        }
+
+        /** Provider for {@link DisplayAreaPolicy.Default platform-default display area policy}. */
+        static class Provider implements DisplayAreaPolicy.Provider {
+            @Override
+            public DisplayAreaPolicy instantiate(WindowManagerService wmService,
+                    DisplayContent content, DisplayArea.Root root,
+                    DisplayArea<? extends WindowContainer> imeContainer,
+                    TaskContainers taskContainers) {
+                return new DisplayAreaPolicy.Default(wmService, content, root, imeContainer,
+                        taskContainers);
+            }
+        }
+    }
+
+    /**
+     * Provider for {@link DisplayAreaPolicy} instances.
+     *
+     * By implementing this interface and overriding the
+     * {@code config_deviceSpecificDisplayAreaPolicyProvider}, a device-specific implementations
+     * of {@link DisplayAreaPolicy} can be supplied.
+     */
+    public interface Provider {
+        /**
+         * Instantiate a new DisplayAreaPolicy.
+         *
+         * @see DisplayAreaPolicy#DisplayAreaPolicy
+         */
+        DisplayAreaPolicy instantiate(WindowManagerService wmService,
+                DisplayContent content, DisplayArea.Root root,
+                DisplayArea<? extends WindowContainer> imeContainer,
+                TaskContainers taskContainers);
+
+        /**
+         * Instantiate the device-specific {@link Provider}.
+         */
+        static Provider fromResources(Resources res) {
+            String name = res.getString(
+                    com.android.internal.R.string.config_deviceSpecificDisplayAreaPolicyProvider);
+            if (TextUtils.isEmpty(name)) {
+                return new DisplayAreaPolicy.Default.Provider();
+            }
+            try {
+                return (Provider) Class.forName(name).newInstance();
+            } catch (ReflectiveOperationException | ClassCastException e) {
+                throw new IllegalStateException("Couldn't instantiate class " + name
+                        + " for config_deviceSpecificDisplayAreaPolicyProvider:"
+                        + " make sure it has a public zero-argument constructor"
+                        + " and implements DisplayAreaPolicy.Provider", e);
+            }
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/wm/DisplayContent.java b/services/core/java/com/android/server/wm/DisplayContent.java
index c50048e..3b658c0 100644
--- a/services/core/java/com/android/server/wm/DisplayContent.java
+++ b/services/core/java/com/android/server/wm/DisplayContent.java
@@ -17,6 +17,7 @@
 package com.android.server.wm;
 
 import static android.app.ActivityTaskManager.INVALID_STACK_ID;
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.ActivityTaskManager.SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_RECENTS;
@@ -80,14 +81,12 @@
 import static android.view.WindowManager.LayoutParams.TYPE_TOAST;
 import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
 import static android.view.WindowManager.TRANSIT_ACTIVITY_OPEN;
-import static android.view.WindowManager.TRANSIT_KEYGUARD_UNOCCLUDE;
 import static android.view.WindowManager.TRANSIT_TASK_OPEN;
 import static android.view.WindowManager.TRANSIT_TASK_TO_FRONT;
 
-import static com.android.server.am.ActivityDisplayProto.DISPLAY;
-import static com.android.server.am.ActivityDisplayProto.FOCUSED_STACK_ID;
-import static com.android.server.am.ActivityDisplayProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityDisplayProto.SINGLE_TASK_INSTANCE;
+import static com.android.server.wm.DisplayContentProto.FOCUSED_ROOT_TASK_ID;
+import static com.android.server.wm.DisplayContentProto.RESUMED_ACTIVITY;
+import static com.android.server.wm.DisplayContentProto.SINGLE_TASK_INSTANCE;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_ANIM;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_CONFIG;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
@@ -98,9 +97,7 @@
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_STATES;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.DEBUG_TASKS;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.POSTFIX_STACK;
-import static com.android.server.wm.DisplayContentProto.ABOVE_APP_WINDOWS;
 import static com.android.server.wm.DisplayContentProto.APP_TRANSITION;
-import static com.android.server.wm.DisplayContentProto.BELOW_APP_WINDOWS;
 import static com.android.server.wm.DisplayContentProto.CHANGING_APPS;
 import static com.android.server.wm.DisplayContentProto.CLOSING_APPS;
 import static com.android.server.wm.DisplayContentProto.DISPLAY_FRAMES;
@@ -109,12 +106,12 @@
 import static com.android.server.wm.DisplayContentProto.DPI;
 import static com.android.server.wm.DisplayContentProto.FOCUSED_APP;
 import static com.android.server.wm.DisplayContentProto.ID;
-import static com.android.server.wm.DisplayContentProto.IME_WINDOWS;
 import static com.android.server.wm.DisplayContentProto.OPENING_APPS;
 import static com.android.server.wm.DisplayContentProto.OVERLAY_WINDOWS;
+import static com.android.server.wm.DisplayContentProto.ROOT_DISPLAY_AREA;
 import static com.android.server.wm.DisplayContentProto.ROTATION;
 import static com.android.server.wm.DisplayContentProto.SCREEN_ROTATION_ANIMATION;
-import static com.android.server.wm.DisplayContentProto.STACKS;
+import static com.android.server.wm.DisplayContentProto.TASKS;
 import static com.android.server.wm.DisplayContentProto.WINDOW_CONTAINER;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS;
@@ -197,6 +194,7 @@
 import android.util.ArraySet;
 import android.util.DisplayMetrics;
 import android.util.IntArray;
+import android.util.RotationUtils;
 import android.util.Slog;
 import android.util.SparseArray;
 import android.util.SparseBooleanArray;
@@ -207,6 +205,7 @@
 import android.view.Gravity;
 import android.view.IDisplayWindowInsetsController;
 import android.view.ISystemGestureExclusionListener;
+import android.view.ITaskOrganizer;
 import android.view.IWindow;
 import android.view.InputChannel;
 import android.view.InputDevice;
@@ -295,14 +294,7 @@
     /** The containers below are the only child containers {@link #mWindowContainers} can have. */
     // Contains all window containers that are related to apps (Activities)
     private final TaskContainers mTaskContainers = new TaskContainers(mWmService);
-    // Contains all non-app window containers that should be displayed above the app containers
-    // (e.g. Status bar)
-    private final AboveAppWindowContainers mAboveAppWindowsContainers =
-            new AboveAppWindowContainers("mAboveAppWindowsContainers", mWmService);
-    // Contains all non-app window containers that should be displayed below the app containers
-    // (e.g. Wallpaper).
-    private final NonAppWindowContainers mBelowAppWindowsContainers =
-            new NonAppWindowContainers("mBelowAppWindowsContainers", mWmService);
+
     // Contains all IME window containers. Note that the z-ordering of the IME windows will depend
     // on the IME target. We mainly have this container grouping so we can keep track of all the IME
     // window containers together and move them in-sync if/when needed. We use a subclass of
@@ -310,6 +302,10 @@
     // TODO(display-area): is "no magnification" in the comment still true?
     private final ImeContainer mImeWindowsContainers = new ImeContainer(mWmService);
 
+    private final DisplayArea.Root mRootDisplayArea = new DisplayArea.Root(mWmService);
+
+    private final DisplayAreaPolicy mDisplayAreaPolicy;
+
     private WindowState mTmpWindow;
     private WindowState mTmpWindow2;
     private boolean mUpdateImeTarget;
@@ -401,14 +397,6 @@
     private int mCurrentOverrideConfigurationChanges;
 
     /**
-     * Last orientation forced by the keyguard. It is applied when keyguard is shown and is not
-     * occluded.
-     *
-     * @see NonAppWindowContainers#getOrientation()
-     */
-    private int mLastKeyguardForcedOrientation = SCREEN_ORIENTATION_UNSPECIFIED;
-
-    /**
      * The maximum aspect ratio (longerSide/shorterSide) that is treated as close-to-square. The
      * orientation requests from apps would be ignored if the display is close-to-square.
      */
@@ -664,6 +652,9 @@
     private final RootWindowContainer.FindTaskResult
             mTmpFindTaskResult = new RootWindowContainer.FindTaskResult();
 
+    // When non-null, new stacks get put into this tile.
+    TaskTile mLaunchTile = null;
+
     private final Consumer<WindowState> mUpdateWindowsForAnimator = w -> {
         WindowStateAnimator winAnimator = w.mWinAnimator;
         final ActivityRecord activity = w.mActivityRecord;
@@ -1035,6 +1026,8 @@
         super.addChild(mWindowContainers, null);
         super.addChild(mOverlayContainers, null);
 
+        mDisplayAreaPolicy = mWmService.mDisplayAreaPolicyProvider.instantiate(
+                mWmService, this, mRootDisplayArea, mImeWindowsContainers, mTaskContainers);
         mWindowContainers.addChildren();
 
         // Sets the display content for the children.
@@ -1104,18 +1097,16 @@
             // Add non-app token to container hierarchy on the display. App tokens are added through
             // the parent container managing them (e.g. Tasks).
             switch (token.windowType) {
-                case TYPE_WALLPAPER:
-                    mBelowAppWindowsContainers.addChild(token);
-                    break;
                 case TYPE_INPUT_METHOD:
                 case TYPE_INPUT_METHOD_DIALOG:
                     mImeWindowsContainers.addChild(token);
                     break;
                 case TYPE_ACCESSIBILITY_MAGNIFICATION_OVERLAY:
+                    // TODO(display-area): Migrate to DisplayArea
                     mOverlayContainers.addChild(token);
                     break;
                 default:
-                    mAboveAppWindowsContainers.addChild(token);
+                    mDisplayAreaPolicy.addWindow(token);
                     break;
             }
         }
@@ -1244,6 +1235,11 @@
         return mDisplayRotation;
     }
 
+    void setInsetProvider(@InternalInsetsType int type, WindowState win,
+            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> frameProvider){
+        setInsetProvider(type, win, frameProvider, null /* imeFrameProvider */);
+    }
+
     /**
      * Marks a window as providing insets for the rest of the windows in the system.
      *
@@ -1251,10 +1247,14 @@
      * @param win The window.
      * @param frameProvider Function to compute the frame, or {@code null} if the just the frame of
      *                      the window should be taken.
+     * @param imeFrameProvider Function to compute the frame when dispatching insets to the IME, or
+     *                         {@code null} if the normal frame should be taken.
      */
     void setInsetProvider(@InternalInsetsType int type, WindowState win,
-            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> frameProvider) {
-        mInsetsStateController.getSourceProvider(type).setWindow(win, frameProvider);
+            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> frameProvider,
+            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> imeFrameProvider) {
+        mInsetsStateController.getSourceProvider(type).setWindow(win, frameProvider,
+                imeFrameProvider);
     }
 
     InsetsStateController getInsetsStateController() {
@@ -1605,17 +1605,18 @@
         if (cutout == null || cutout == DisplayCutout.NO_CUTOUT) {
             return WmDisplayCutout.NO_CUTOUT;
         }
+        final Insets waterfallInsets =
+                RotationUtils.rotateInsets(cutout.getWaterfallInsets(), rotation);
         if (rotation == ROTATION_0) {
             return WmDisplayCutout.computeSafeInsets(
                     cutout, mInitialDisplayWidth, mInitialDisplayHeight);
         }
         final boolean rotated = (rotation == ROTATION_90 || rotation == ROTATION_270);
         final Rect[] newBounds = mRotationUtil.getRotatedBounds(
-                WmDisplayCutout.computeSafeInsets(
-                        cutout, mInitialDisplayWidth, mInitialDisplayHeight)
-                        .getDisplayCutout().getBoundingRectsAll(),
+                cutout.getBoundingRectsAll(),
                 rotation, mInitialDisplayWidth, mInitialDisplayHeight);
-        return WmDisplayCutout.computeSafeInsets(DisplayCutout.fromBounds(newBounds),
+        return WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(newBounds, waterfallInsets),
                 rotated ? mInitialDisplayHeight : mInitialDisplayWidth,
                 rotated ? mInitialDisplayWidth : mInitialDisplayHeight);
     }
@@ -2120,13 +2121,7 @@
                 return getLastOrientation();
             }
         }
-        final int orientation = mAboveAppWindowsContainers.getOrientation();
-        if (orientation != SCREEN_ORIENTATION_UNSET) {
-            return orientation;
-        }
-
-        // Top system windows are not requesting an orientation. Start searching from apps.
-        return mTaskContainers.getOrientation();
+        return mRootDisplayArea.getOrientation();
     }
 
     void updateDisplayInfo() {
@@ -2741,30 +2736,6 @@
 
     public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInner(proto, DISPLAY, logLevel);
-        proto.write(com.android.server.am.ActivityDisplayProto.ID, mDisplayId);
-        proto.write(SINGLE_TASK_INSTANCE, mSingleTaskInstance);
-        final ActivityStack focusedStack = getFocusedStack();
-        if (focusedStack != null) {
-            proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
-            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
-            if (focusedActivity != null) {
-                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-            }
-        } else {
-            proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID);
-        }
-        for (int stackNdx = getStackCount() - 1; stackNdx >= 0; --stackNdx) {
-            final ActivityStack stack = getStackAt(stackNdx);
-            stack.dumpDebug(proto, com.android.server.am.ActivityDisplayProto.STACKS, logLevel);
-        }
-        proto.end(token);
-    }
-
-    // TODO(proto-merge): Remove once protos for ActivityDisplay and DisplayContent are merged.
-    public void dumpDebugInner(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
         // Critical log level logs only visible elements to mitigate performance overheard
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
@@ -2772,24 +2743,14 @@
 
         final long token = proto.start(fieldId);
         super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
+
         proto.write(ID, mDisplayId);
-        for (int stackNdx = mTaskContainers.getChildCount() - 1; stackNdx >= 0; --stackNdx) {
-            final ActivityStack stack = mTaskContainers.getChildAt(stackNdx);
-            stack.dumpDebugInnerStackOnly(proto, STACKS, logLevel);
+        mRootDisplayArea.dumpDebug(proto, ROOT_DISPLAY_AREA, logLevel);
+        for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) {
+            final ActivityStack stack = mTaskContainers.getChildAt(i);
+            stack.dumpDebug(proto, TASKS, logLevel);
         }
         mDividerControllerLocked.dumpDebug(proto, DOCKED_STACK_DIVIDER_CONTROLLER);
-        for (int i = mAboveAppWindowsContainers.getChildCount() - 1; i >= 0; --i) {
-            final WindowToken windowToken = mAboveAppWindowsContainers.getChildAt(i);
-            windowToken.dumpDebug(proto, ABOVE_APP_WINDOWS, logLevel);
-        }
-        for (int i = mBelowAppWindowsContainers.getChildCount() - 1; i >= 0; --i) {
-            final WindowToken windowToken = mBelowAppWindowsContainers.getChildAt(i);
-            windowToken.dumpDebug(proto, BELOW_APP_WINDOWS, logLevel);
-        }
-        for (int i = mImeWindowsContainers.getChildCount() - 1; i >= 0; --i) {
-            final WindowToken windowToken = mImeWindowsContainers.getChildAt(i);
-            windowToken.dumpDebug(proto, IME_WINDOWS, logLevel);
-        }
         for (int i = mOverlayContainers.getChildCount() - 1; i >= 0; --i) {
             final WindowToken windowToken = mOverlayContainers.getChildAt(i);
             windowToken.dumpDebug(proto, OVERLAY_WINDOWS, logLevel);
@@ -2815,6 +2776,19 @@
         for (int i = mChangingApps.size() - 1; i >= 0; i--) {
             mChangingApps.valueAt(i).writeIdentifierToProto(proto, CHANGING_APPS);
         }
+
+        proto.write(SINGLE_TASK_INSTANCE, mSingleTaskInstance);
+        final ActivityStack focusedStack = getFocusedStack();
+        if (focusedStack != null) {
+            proto.write(FOCUSED_ROOT_TASK_ID, focusedStack.getRootTaskId());
+            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
+            if (focusedActivity != null) {
+                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
+            }
+        } else {
+            proto.write(FOCUSED_ROOT_TASK_ID, INVALID_TASK_ID);
+        }
+
         proto.end(token);
     }
 
@@ -3283,7 +3257,7 @@
         }
         computeImeTarget(true /* updateImeTarget */);
         mInsetsStateController.getSourceProvider(ITYPE_IME).setWindow(win,
-                null /* frameProvider */);
+                null /* frameProvider */, null /* imeFrameProvider */);
     }
 
     /**
@@ -3407,6 +3381,57 @@
                 && mInputMethodTarget.mActivityRecord.matchParentBounds());
     }
 
+    /**
+     * Get IME target that should host IME when this display that is reparented to another
+     * WindowState.
+     * IME is never displayed in a child display.
+     * Use {@link WindowState#getImeControlTarget()} when IME target window
+     * which originally called
+     * {@link android.view.inputmethod.InputMethodManager#showSoftInput(View, int)} is known.
+     *
+     * @return {@link WindowState} of host that controls IME.
+     *         {@code null} when {@param dc} is not a virtual display.
+     * @see DisplayContent#reparent
+     */
+    @Nullable
+    WindowState getImeControlTarget() {
+        WindowState imeTarget = mInputMethodTarget;
+        if (imeTarget != null) {
+            return imeTarget.getImeControlTarget();
+        }
+
+        return getInsetsStateController().getImeSourceProvider().getControlTarget().getWindow();
+    }
+
+    /**
+     * Finds the window which can host IME if IME target cannot host it.
+     * e.g. IME target cannot host IME when it's display has a parent display OR when display
+     * doesn't support IME/system decorations.
+     *
+     * @param target current IME target.
+     * @return {@link WindowState} that can host IME.
+     * @see DisplayContent#getImeControlTarget()
+     */
+    WindowState getImeHostOrFallback(WindowState target) {
+        if (target != null && target.getDisplayContent().canShowIme()) {
+            return target;
+        }
+
+        // host is in non-default display that doesn't support system decor, default to
+        // default display's StatusBar to control IME.
+        // TODO: (b/148234093)find a better host OR control IME animation/visibility directly
+        //  because it won't work when statusbar isn't available.
+        return mWmService.getDefaultDisplayContentLocked().getDisplayPolicy().getStatusBar();
+    }
+
+    boolean canShowIme() {
+        if (isUntrustedVirtualDisplay()) {
+            return false;
+        }
+        return mWmService.mDisplayWindowSettings.shouldShowImeLocked(this)
+                || mWmService.mForceDesktopModeOnExternalDisplays;
+    }
+
     private void setInputMethodTarget(WindowState target, boolean targetWaitingAnim) {
         if (target == mInputMethodTarget && mInputMethodTargetWaitingAnim == targetWaitingAnim) {
             return;
@@ -3416,10 +3441,22 @@
         mInputMethodTargetWaitingAnim = targetWaitingAnim;
         assignWindowLayers(false /* setLayoutNeeded */);
         mInputMethodControlTarget = computeImeControlTarget();
-        mInsetsStateController.onImeTargetChanged(mInputMethodControlTarget);
+        mInsetsStateController.onImeControlTargetChanged(mInputMethodControlTarget);
         updateImeParent();
     }
 
+    /**
+     * IME control target is the window that controls the IME visibility and animation.
+     * This window is same as the window on which startInput is called.
+     * @param target the window that receives IME control.
+     *
+     * @see #getImeControlTarget()
+     */
+    void updateImeControlTarget(WindowState target) {
+        mInputMethodControlTarget = target;
+        mInsetsStateController.onImeControlTargetChanged(mInputMethodControlTarget);
+    }
+
     private void updateImeParent() {
         // Force attaching IME to the display when magnifying, or it would be magnified with
         // target app together.
@@ -4140,7 +4177,7 @@
      * Window container class that contains all containers on this display relating to Apps.
      * I.e Activities.
      */
-    private final class TaskContainers extends DisplayChildWindowContainer<ActivityStack> {
+    final class TaskContainers extends DisplayArea<ActivityStack> {
         /**
          * A control placed at the appropriate level for transitions to occur.
          */
@@ -4150,16 +4187,15 @@
 
         /**
          * Given that the split-screen divider does not have an AppWindowToken, it
-         * will have to live inside of a "NonAppWindowContainer", in particular
-         * {@link DisplayContent#mAboveAppWindowsContainers}. However, in visual Z order
+         * will have to live inside of a "NonAppWindowContainer". However, in visual Z order
          * it will need to be interleaved with some of our children, appearing on top of
          * both docked stacks but underneath any assistant stacks.
          *
          * To solve this problem we have this anchor control, which will always exist so
          * we can always assign it the correct value in our {@link #assignChildLayers}.
-         * Likewise since it always exists, {@link AboveAppWindowContainers} can always
+         * Likewise since it always exists, we can always
          * assign the divider a layer relative to it. This way we prevent linking lifecycle
-         * events between the two containers.
+         * events between tasks and the divider window.
          */
         SurfaceControl mSplitScreenDividerAnchor = null;
 
@@ -4170,7 +4206,7 @@
         private ActivityStack mRootSplitScreenPrimaryTask = null;
 
         TaskContainers(WindowManagerService service) {
-            super(service);
+            super(service, Type.ANY, "TaskContainers");
         }
 
         /**
@@ -4203,8 +4239,15 @@
 
         @VisibleForTesting
         ActivityStack getTopStack() {
-            return mTaskContainers.getChildCount() > 0
-                    ? mTaskContainers.getChildAt(mTaskContainers.getChildCount() - 1) : null;
+            // TODO(task-hierarchy): Just grab index -1 once tiles are in hierarchy.
+            for (int i = mTaskContainers.getChildCount() - 1; i >= 0; --i) {
+                final ActivityStack child = mTaskContainers.getChildAt(i);
+                if (child instanceof TaskTile) {
+                    continue;
+                }
+                return child;
+            }
+            return null;
         }
 
         int getIndexOf(ActivityStack stack) {
@@ -4246,6 +4289,10 @@
         }
 
         private void addStackReferenceIfNeeded(ActivityStack stack) {
+            // TODO(task-hierarchy): Remove when tiles are in hierarchy.
+            if (stack instanceof TaskTile) {
+                return;
+            }
             if (stack.isActivityTypeHome()) {
                 if (mRootHomeTask != null) {
                     if (!stack.isDescendantOf(mRootHomeTask)) {
@@ -4663,31 +4710,16 @@
                 mSplitScreenDividerAnchor = null;
             }
         }
-    }
-
-    private final class AboveAppWindowContainers extends NonAppWindowContainers {
-        AboveAppWindowContainers(String name, WindowManagerService service) {
-            super(name, service);
-        }
 
         @Override
-        void assignChildLayers(SurfaceControl.Transaction t) {
-            boolean needAssignIme = mImeWindowsContainers.getSurfaceControl() != null;
-            for (int j = 0; j < mChildren.size(); ++j) {
-                final WindowToken wt = mChildren.get(j);
-
-                wt.assignLayer(t, j);
-                wt.assignChildLayers(t);
-
-                int layer = mWmService.mPolicy.getWindowLayerFromTypeLw(
-                        wt.windowType, wt.mOwnerCanManageAppTokens);
-
-                if (needAssignIme && layer >= mWmService.mPolicy.getWindowLayerFromTypeLw(
-                        TYPE_INPUT_METHOD_DIALOG, true)) {
-                    mImeWindowsContainers.assignRelativeLayer(t, wt.getSurfaceControl(), -1);
-                    needAssignIme = false;
-                }
+        void onChildPositionChanged(WindowContainer child) {
+            // TODO(task-hierarchy): Move functionality to TaskTile when it's a proper parent.
+            TaskTile tile = ((ActivityStack) child).getTile();
+            if (tile == null) {
+                return;
             }
+            mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                    tile, false /* force */);
         }
     }
 
@@ -4702,13 +4734,10 @@
         @Override
         void assignChildLayers(SurfaceControl.Transaction t) {
             mImeWindowsContainers.setNeedsLayer();
-            mBelowAppWindowsContainers.assignLayer(t, 0);
-            mTaskContainers.assignLayer(t, 1);
-            mAboveAppWindowsContainers.assignLayer(t, 2);
+
+            mRootDisplayArea.assignLayer(t, 0);
 
             final WindowState imeTarget = mInputMethodTarget;
-            boolean needAssignIme = true;
-
             // In the case where we have an IME target that is not in split-screen mode IME
             // assignment is easy. We just need the IME to go directly above the target. This way
             // children of the target will naturally go above the IME and everyone is happy.
@@ -4741,11 +4770,7 @@
 
             // Above we have assigned layers to our children, now we ask them to assign
             // layers to their children.
-            mBelowAppWindowsContainers.assignChildLayers(t);
-            mTaskContainers.assignChildLayers(t);
-            mAboveAppWindowsContainers.assignChildLayers(t);
-            mImeWindowsContainers.assignRelativeLayer(t, getSurfaceControl(), Integer.MAX_VALUE);
-            mImeWindowsContainers.assignChildLayers(t);
+            mRootDisplayArea.assignChildLayers(t);
         }
 
         @Override
@@ -4754,10 +4779,8 @@
         }
 
         void addChildren() {
-            addChild(mBelowAppWindowsContainers, null);
-            addChild(mTaskContainers, null);
-            addChild(mAboveAppWindowsContainers, null);
-            addChild(mImeWindowsContainers, null);
+            addChild(mRootDisplayArea, 0);
+            mDisplayAreaPolicy.attachDisplayAreas();
         }
 
         @Override
@@ -4784,32 +4807,6 @@
                         < mWmService.mPolicy.getWindowLayerFromTypeLw(token2.windowType,
                         token2.mOwnerCanManageAppTokens) ? -1 : 1;
 
-        private final Predicate<WindowState> mGetOrientingWindow = w -> {
-            final WindowManagerPolicy policy = mWmService.mPolicy;
-            if (policy.isKeyguardHostWindow(w.mAttrs)) {
-                if (mWmService.mKeyguardGoingAway) {
-                    return false;
-                }
-                // Consider unoccluding only when all unknown visibilities have been
-                // resolved, as otherwise we just may be starting another occluding activity.
-                final boolean isUnoccluding =
-                        mDisplayContent.mAppTransition.getAppTransition()
-                                == TRANSIT_KEYGUARD_UNOCCLUDE
-                                && mDisplayContent.mUnknownAppVisibilityController.allResolved();
-                // If keyguard is showing, or we're unoccluding, force the keyguard's orientation,
-                // even if SystemUI hasn't updated the attrs yet.
-                if (policy.isKeyguardShowingAndNotOccluded() || isUnoccluding) {
-                    return true;
-                }
-            }
-            final int req = w.mAttrs.screenOrientation;
-            if (req == SCREEN_ORIENTATION_UNSPECIFIED || req == SCREEN_ORIENTATION_BEHIND
-                    || req == SCREEN_ORIENTATION_UNSET) {
-                return false;
-            }
-            return true;
-        };
-
         private final String mName;
         private final Dimmer mDimmer = new Dimmer(this);
         private final Rect mTmpDimBoundsRect = new Rect();
@@ -4831,26 +4828,9 @@
 
         @Override
         int getOrientation(int candidate) {
-            // Find a window requesting orientation.
-            final WindowState win = getWindow(mGetOrientingWindow);
-
-            if (win != null) {
-                int req = win.mAttrs.screenOrientation;
-                ProtoLog.v(WM_DEBUG_ORIENTATION,
-                        "%s forcing orientation to %d for display id=%d", win, req,
-                        mDisplayId);
-                if (mWmService.mPolicy.isKeyguardHostWindow(win.mAttrs)) {
-                    // SystemUI controls the Keyguard orientation asynchronously, and mAttrs may be
-                    // stale. We record / use the last known override.
-                    if (req != SCREEN_ORIENTATION_UNSET && req != SCREEN_ORIENTATION_UNSPECIFIED) {
-                        mDisplayContent.mLastKeyguardForcedOrientation = req;
-                    } else {
-                        req = mDisplayContent.mLastKeyguardForcedOrientation;
-                    }
-                }
-                return req;
-            }
-            return candidate;
+            ProtoLog.w(WM_DEBUG_ORIENTATION, "NonAppWindowContainer cannot set orientation: %s",
+                    this);
+            return SCREEN_ORIENTATION_UNSET;
         }
 
         @Override
@@ -4885,11 +4865,11 @@
      * - the container doesn't always participate in window traversal, according to
      *   {@link #skipImeWindowsDuringTraversal()}
      */
-    private class ImeContainer extends NonAppWindowContainers {
+    private static class ImeContainer extends DisplayArea.Tokens {
         boolean mNeedsLayer = false;
 
         ImeContainer(WindowManagerService wms) {
-            super("ImeContainer", wms);
+            super(wms, Type.ABOVE_TASKS, "ImeContainer");
         }
 
         public void setNeedsLayer() {
@@ -5680,7 +5660,8 @@
         return activityType == ACTIVITY_TYPE_STANDARD
                 && (windowingMode == WINDOWING_MODE_FULLSCREEN
                 || windowingMode == WINDOWING_MODE_FREEFORM
-                || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+                || windowingMode == WINDOWING_MODE_SPLIT_SCREEN_SECONDARY
+                || windowingMode == WINDOWING_MODE_MULTI_WINDOW);
     }
 
     /**
@@ -6199,6 +6180,10 @@
     }
 
     boolean isTopNotPinnedStack(ActivityStack stack) {
+        // TODO(task-hierarchy): Remove when tiles are in hierarchy.
+        if (stack instanceof TaskTile) {
+            return false;
+        }
         for (int i = getStackCount() - 1; i >= 0; --i) {
             final ActivityStack current = getStackAt(i);
             if (!current.inPinnedWindowingMode()) {
@@ -6613,6 +6598,19 @@
         return getHomeActivityForUser(mRootWindowContainer.mCurrentUser);
     }
 
+    // TODO(task-hierarchy): Remove when tiles are in hierarchy.
+    void addTile(TaskTile tile) {
+        mTaskContainers.addChild(tile, POSITION_BOTTOM);
+        ITaskOrganizer organizer = mAtmService.mTaskOrganizerController.getTaskOrganizer(
+                tile.getWindowingMode());
+        tile.setTaskOrganizer(organizer);
+    }
+
+    // TODO(task-hierarchy): Remove when tiles are in hierarchy.
+    void removeTile(TaskTile tile) {
+        mTaskContainers.removeChild(tile);
+    }
+
     @Nullable
     ActivityRecord getHomeActivityForUser(int userId) {
         final ActivityStack homeStack = getRootHomeTask();
diff --git a/services/core/java/com/android/server/wm/DisplayPolicy.java b/services/core/java/com/android/server/wm/DisplayPolicy.java
index c6ccd4a..38b0ca8 100644
--- a/services/core/java/com/android/server/wm/DisplayPolicy.java
+++ b/services/core/java/com/android/server/wm/DisplayPolicy.java
@@ -57,8 +57,8 @@
 import static android.view.WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS;
 import static android.view.WindowManager.LayoutParams.LAST_APPLICATION_WINDOW;
 import static android.view.WindowManager.LayoutParams.LAST_SUB_WINDOW;
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT;
-import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR;
@@ -131,6 +131,7 @@
 import android.graphics.Region;
 import android.hardware.input.InputManager;
 import android.hardware.power.V1_0.PowerHint;
+import android.os.Binder;
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
@@ -144,7 +145,6 @@
 import android.util.Slog;
 import android.view.DisplayCutout;
 import android.view.Gravity;
-import android.view.IApplicationToken;
 import android.view.InputChannel;
 import android.view.InputDevice;
 import android.view.InputEvent;
@@ -332,7 +332,12 @@
     private WindowState mFocusedWindow;
     private WindowState mLastFocusedWindow;
 
-    IApplicationToken mFocusedApp;
+    // The states of decor windows from the last layout. These are used to generate another display
+    // layout in different bounds but with the same states.
+    private boolean mLastNavVisible;
+    private boolean mLastNavTranslucent;
+    private boolean mLastNavAllowedHidden;
+    private boolean mLastNotificationShadeForcesShowingNavigation;
 
     int mLastSystemUiFlags;
     // Bits that we are in the process of clearing, so we want to prevent
@@ -847,7 +852,7 @@
             case TYPE_WALLPAPER:
                 // Dreams and wallpapers don't have an app window token and can thus not be
                 // letterboxed. Hence always let them extend under the cutout.
-                attrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+                attrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
                 break;
             case TYPE_NOTIFICATION_SHADE:
                 // If the Keyguard is in a hidden state (occluded by another window), we force to
@@ -968,6 +973,12 @@
                 }
                 break;
             case TYPE_NAVIGATION_BAR_PANEL:
+                // Check for permission if the caller is not the recents component.
+                if (!mService.mAtmInternal.isCallerRecents(Binder.getCallingUid())) {
+                    mContext.enforceCallingOrSelfPermission(
+                            android.Manifest.permission.STATUS_BAR_SERVICE, "DisplayPolicy");
+                }
+                break;
             case TYPE_STATUS_BAR_PANEL:
             case TYPE_STATUS_BAR_SUB_PANEL:
             case TYPE_VOICE_INTERACTION_STARTING:
@@ -1026,7 +1037,12 @@
                                         - getNavigationBarHeight(displayFrames.mRotation,
                                                 mDisplayContent.getConfiguration().uiMode);
                             }
-                        });
+                        },
+
+                        // For IME we use regular frame.
+                        (displayFrames, windowState, inOutFrame) ->
+                                inOutFrame.set(windowState.getFrameLw()));
+
                 mDisplayContent.setInsetProvider(ITYPE_BOTTOM_GESTURES, win,
                         (displayFrames, windowState, inOutFrame) -> {
                             inOutFrame.top -= mBottomGestureAdditionalInset;
@@ -1413,6 +1429,46 @@
         }
     }
 
+    private void simulateLayoutDecorWindow(WindowState win, DisplayFrames displayFrames, int uiMode,
+            InsetsState insetsState, WindowFrames simulatedWindowFrames, Runnable layout) {
+        win.setSimulatedWindowFrames(simulatedWindowFrames);
+        try {
+            layout.run();
+        } finally {
+            win.setSimulatedWindowFrames(null);
+        }
+        mDisplayContent.getInsetsStateController().computeSimulatedState(insetsState, win,
+                displayFrames, simulatedWindowFrames);
+    }
+
+    /**
+     * Computes the frames of display (its logical size, rotation and cutout should already be set)
+     * used to layout window. The result of display frames and insets state should be the same as
+     * using {@link #beginLayoutLw}, but this method only changes the given display frames, insets
+     * state and some temporal states. In other words, it doesn't change the window frames used to
+     * show on screen.
+     */
+    void simulateLayoutDisplay(DisplayFrames displayFrames, InsetsState insetsState, int uiMode) {
+        displayFrames.onBeginLayout();
+        final WindowFrames simulatedWindowFrames = new WindowFrames();
+        if (mNavigationBar != null) {
+            simulateLayoutDecorWindow(
+                    mNavigationBar, displayFrames, uiMode, insetsState, simulatedWindowFrames,
+                    () -> layoutNavigationBar(displayFrames, uiMode, mLastNavVisible,
+                            mLastNavTranslucent, mLastNavAllowedHidden,
+                            mLastNotificationShadeForcesShowingNavigation,
+                            false /* isRealLayout */));
+        }
+        if (mStatusBar != null) {
+            simulateLayoutDecorWindow(
+                    mStatusBar, displayFrames, uiMode, insetsState, simulatedWindowFrames,
+                    () -> layoutStatusBar(displayFrames, mLastSystemUiFlags,
+                            false /* isRealLayout */));
+        }
+        layoutScreenDecorWindows(displayFrames, simulatedWindowFrames);
+        postAdjustDisplayFrames(displayFrames);
+    }
+
     /**
      * Called when layout of the windows is about to start.
      *
@@ -1452,15 +1508,16 @@
         // nav bar and ensure the application doesn't see the event.
         if (navVisible || navAllowedHidden) {
             if (mInputConsumer != null) {
+                mInputConsumer.dismiss();
                 mHandler.sendMessage(
                         mHandler.obtainMessage(MSG_DISPOSE_INPUT_CONSUMER, mInputConsumer));
                 mInputConsumer = null;
             }
         } else if (mInputConsumer == null && mStatusBar != null && canHideNavigationBar()) {
-            mInputConsumer = mService.createInputConsumer(mHandler.getLooper(),
+            mInputConsumer = mDisplayContent.getInputMonitor().createInputConsumer(
+                    mHandler.getLooper(),
                     INPUT_CONSUMER_NAVIGATION,
-                    HideNavInputEventReceiver::new,
-                    displayFrames.mDisplayId);
+                    HideNavInputEventReceiver::new);
             // As long as mInputConsumer is active, hover events are not dispatched to the app
             // and the pointer icon is likely to become stale. Hide it to avoid confusion.
             InputManager.getInstance().setPointerIconType(PointerIcon.TYPE_NULL);
@@ -1471,14 +1528,23 @@
         navVisible |= !canHideNavigationBar();
 
         boolean updateSysUiVisibility = layoutNavigationBar(displayFrames, uiMode, navVisible,
-                navTranslucent, navAllowedHidden, notificationShadeForcesShowingNavigation);
+                navTranslucent, navAllowedHidden, notificationShadeForcesShowingNavigation,
+                true /* isRealLayout */);
         if (DEBUG_LAYOUT) Slog.i(TAG, "mDock rect:" + displayFrames.mDock);
-        updateSysUiVisibility |= layoutStatusBar(displayFrames, sysui, isKeyguardShowing);
+        updateSysUiVisibility |= layoutStatusBar(displayFrames, sysui, true /* isRealLayout */);
         if (updateSysUiVisibility) {
             updateSystemUiVisibilityLw();
         }
-        layoutScreenDecorWindows(displayFrames);
+        layoutScreenDecorWindows(displayFrames, null /* transientFrames */);
+        postAdjustDisplayFrames(displayFrames);
+        mLastNavVisible = navVisible;
+        mLastNavTranslucent = navTranslucent;
+        mLastNavAllowedHidden = navAllowedHidden;
+        mLastNotificationShadeForcesShowingNavigation = notificationShadeForcesShowingNavigation;
+    }
 
+    /** Enforces the last layout policy for display frames. */
+    private void postAdjustDisplayFrames(DisplayFrames displayFrames) {
         if (displayFrames.mDisplayCutoutSafe.top > displayFrames.mUnrestricted.top) {
             // Make sure that the zone we're avoiding for the cutout is at least as tall as the
             // status bar; otherwise fullscreen apps will end up cutting halfway into the status
@@ -1497,7 +1563,15 @@
         displayFrames.mContent.inset(mForwardedInsets);
     }
 
-    private void layoutScreenDecorWindows(DisplayFrames displayFrames) {
+    /**
+     * Layout the decor windows with {@link #PRIVATE_FLAG_IS_SCREEN_DECOR}.
+     *
+     * @param displayFrames The display frames to be layouted.
+     * @param simulatedFrames Non-null if the caller only needs the result of display frames (see
+     *                        {@link WindowState#mSimulatedWindowFrames}).
+     */
+    private void layoutScreenDecorWindows(DisplayFrames displayFrames,
+            WindowFrames simulatedFrames) {
         if (mScreenDecorWindows.isEmpty()) {
             return;
         }
@@ -1515,17 +1589,24 @@
                 continue;
             }
 
-            w.getWindowFrames().setFrames(displayFrames.mUnrestricted /* parentFrame */,
+            final boolean isSimulatedLayout = simulatedFrames != null;
+            if (isSimulatedLayout) {
+                w.setSimulatedWindowFrames(simulatedFrames);
+            }
+            final WindowFrames windowFrames = w.getLayoutingWindowFrames();
+            windowFrames.setFrames(displayFrames.mUnrestricted /* parentFrame */,
                     displayFrames.mUnrestricted /* displayFrame */,
                     displayFrames.mUnrestricted /* contentFrame */,
                     displayFrames.mUnrestricted /* visibleFrame */, sTmpRect /* decorFrame */,
                     displayFrames.mUnrestricted /* stableFrame */);
-            w.getWindowFrames().setDisplayCutout(displayFrames.mDisplayCutout);
-            w.computeFrameLw();
-            if (w.getControllableInsetProvider() != null) {
-                w.getControllableInsetProvider().updateSourceFrame();
+            try {
+                w.computeFrame(displayFrames);
+            } finally {
+                if (isSimulatedLayout) {
+                    w.setSimulatedWindowFrames(null);
+                }
             }
-            final Rect frame = w.getFrameLw();
+            final Rect frame = windowFrames.mFrame;
 
             if (frame.left <= 0 && frame.top <= 0) {
                 // Docked at left or top.
@@ -1568,29 +1649,21 @@
         displayFrames.mContent.set(dockFrame);
     }
 
-    private boolean layoutStatusBar(DisplayFrames displayFrames, int sysui,
-            boolean isKeyguardShowing) {
+    private boolean layoutStatusBar(DisplayFrames displayFrames, int sysui, boolean isRealLayout) {
         // decide where the status bar goes ahead of time
         if (mStatusBar == null) {
             return false;
         }
         // apply any navigation bar insets
         sTmpRect.setEmpty();
-        final WindowFrames windowFrames = mStatusBar.getWindowFrames();
+        final WindowFrames windowFrames = mStatusBar.getLayoutingWindowFrames();
         windowFrames.setFrames(displayFrames.mUnrestricted /* parentFrame */,
                 displayFrames.mUnrestricted /* displayFrame */,
                 displayFrames.mStable /* contentFrame */,
                 displayFrames.mStable /* visibleFrame */, sTmpRect /* decorFrame */,
                 displayFrames.mStable /* stableFrame */);
-        windowFrames.setDisplayCutout(displayFrames.mDisplayCutout);
-
         // Let the status bar determine its size.
-        mStatusBar.computeFrameLw();
-
-        // Update the source frame to provide insets to other windows during layout.
-        if (mStatusBar.getControllableInsetProvider() != null) {
-            mStatusBar.getControllableInsetProvider().updateSourceFrame();
-        }
+        mStatusBar.computeFrame(displayFrames);
 
         // For layout, the status bar is always at the top with our fixed height.
         displayFrames.mStable.top = displayFrames.mUnrestricted.top
@@ -1599,12 +1672,14 @@
         displayFrames.mStable.top = Math.max(displayFrames.mStable.top,
                 displayFrames.mDisplayCutoutSafe.top);
 
-        // Tell the bar controller where the collapsed status bar content is
-        sTmpRect.set(mStatusBar.getContentFrameLw());
-        sTmpRect.intersect(displayFrames.mDisplayCutoutSafe);
-        sTmpRect.top = mStatusBar.getContentFrameLw().top;  // Ignore top display cutout inset
-        sTmpRect.bottom = displayFrames.mStable.top;  // Use collapsed status bar size
-        mStatusBarController.setContentFrame(sTmpRect);
+        if (isRealLayout) {
+            // Tell the bar controller where the collapsed status bar content is.
+            sTmpRect.set(windowFrames.mContentFrame);
+            sTmpRect.intersect(displayFrames.mDisplayCutoutSafe);
+            sTmpRect.top = windowFrames.mContentFrame.top; // Ignore top display cutout inset
+            sTmpRect.bottom = displayFrames.mStable.top; // Use collapsed status bar size
+            mStatusBarController.setContentFrame(sTmpRect);
+        }
 
         boolean statusBarTransient = (sysui & View.STATUS_BAR_TRANSIENT) != 0
                 || mDisplayContent.getInsetsPolicy().isTransient(ITYPE_STATUS_BAR);
@@ -1639,7 +1714,7 @@
 
     private boolean layoutNavigationBar(DisplayFrames displayFrames, int uiMode, boolean navVisible,
             boolean navTranslucent, boolean navAllowedHidden,
-            boolean statusBarForcesShowingNavigation) {
+            boolean statusBarForcesShowingNavigation, boolean isRealLayout) {
         if (mNavigationBar == null) {
             return false;
         }
@@ -1653,13 +1728,13 @@
         final int displayHeight = displayFrames.mDisplayHeight;
         final int displayWidth = displayFrames.mDisplayWidth;
         final Rect dockFrame = displayFrames.mDock;
-        mNavigationBarPosition = navigationBarPosition(displayWidth, displayHeight, rotation);
+        final int navBarPosition = navigationBarPosition(displayWidth, displayHeight, rotation);
 
         final Rect cutoutSafeUnrestricted = sTmpRect;
         cutoutSafeUnrestricted.set(displayFrames.mUnrestricted);
         cutoutSafeUnrestricted.intersectUnchecked(displayFrames.mDisplayCutoutSafe);
 
-        if (mNavigationBarPosition == NAV_BAR_BOTTOM) {
+        if (navBarPosition == NAV_BAR_BOTTOM) {
             // It's a system nav bar or a portrait screen; nav bar goes on bottom.
             final int top = cutoutSafeUnrestricted.bottom
                     - getNavigationBarHeight(rotation, uiMode);
@@ -1683,7 +1758,7 @@
                 // of animating on or off, then we can tell the app that it is covered by it.
                 displayFrames.mSystem.bottom = top;
             }
-        } else if (mNavigationBarPosition == NAV_BAR_RIGHT) {
+        } else if (navBarPosition == NAV_BAR_RIGHT) {
             // Landscape screen; nav bar goes to the right.
             final int left = cutoutSafeUnrestricted.right
                     - getNavigationBarWidth(rotation, uiMode);
@@ -1705,7 +1780,7 @@
                 // animating on or off, then we can tell the app that it is covered by it.
                 displayFrames.mSystem.right = left;
             }
-        } else if (mNavigationBarPosition == NAV_BAR_LEFT) {
+        } else if (navBarPosition == NAV_BAR_LEFT) {
             // Seascape screen; nav bar goes to the left.
             final int right = cutoutSafeUnrestricted.left
                     + getNavigationBarWidth(rotation, uiMode);
@@ -1736,17 +1811,17 @@
         displayFrames.mContent.set(dockFrame);
         // And compute the final frame.
         sTmpRect.setEmpty();
-        mNavigationBar.getWindowFrames().setFrames(navigationFrame /* parentFrame */,
+        final WindowFrames windowFrames = mNavigationBar.getLayoutingWindowFrames();
+        windowFrames.setFrames(navigationFrame /* parentFrame */,
                 navigationFrame /* displayFrame */,
                 displayFrames.mDisplayCutoutSafe /* contentFrame */,
                 navigationFrame /* visibleFrame */, sTmpRect /* decorFrame */,
                 navigationFrame /* stableFrame */);
-        mNavigationBar.getWindowFrames().setDisplayCutout(displayFrames.mDisplayCutout);
-        mNavigationBar.computeFrameLw();
-        if (mNavigationBar.getControllableInsetProvider() != null) {
-            mNavigationBar.getControllableInsetProvider().updateSourceFrame();
+        mNavigationBar.computeFrame(displayFrames);
+        if (isRealLayout) {
+            mNavigationBarPosition = navBarPosition;
+            mNavigationBarController.setContentFrame(windowFrames.mContentFrame);
         }
-        mNavigationBarController.setContentFrame(mNavigationBar.getContentFrameLw());
 
         if (DEBUG_LAYOUT) Slog.i(TAG, "mNavigationBar frame: " + navigationFrame);
         return mNavigationBarController.checkHiddenLw();
@@ -1874,7 +1949,6 @@
         final Rect sf = windowFrames.mStableFrame;
         dcf.setEmpty();
         windowFrames.setParentFrameWasClippedByDisplayCutout(false);
-        windowFrames.setDisplayCutout(displayFrames.mDisplayCutout);
 
         final boolean hasNavBar = hasNavigationBar() && mNavigationBar != null
                 && mNavigationBar.isVisibleLw();
@@ -2222,15 +2296,24 @@
         // cropped / shifted to the displayFrame in WindowState.
         final boolean floatingInScreenWindow = !attrs.isFullscreen() && layoutInScreen
                 && type != TYPE_BASE_APPLICATION;
-
         // Ensure that windows with a DEFAULT or NEVER display cutout mode are laid out in
         // the cutout safe zone.
-        if (cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
-                || cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER) {
+        if (cutoutMode != LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS) {
             final Rect displayCutoutSafeExceptMaybeBars = sTmpDisplayCutoutSafeExceptMaybeBarsRect;
             displayCutoutSafeExceptMaybeBars.set(displayFrames.mDisplayCutoutSafe);
+            if (cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES) {
+                if (displayFrames.mDisplayWidth < displayFrames.mDisplayHeight) {
+                    displayCutoutSafeExceptMaybeBars.top = Integer.MIN_VALUE;
+                    displayCutoutSafeExceptMaybeBars.bottom = Integer.MAX_VALUE;
+                } else {
+                    displayCutoutSafeExceptMaybeBars.left = Integer.MIN_VALUE;
+                    displayCutoutSafeExceptMaybeBars.right = Integer.MAX_VALUE;
+                }
+            }
+
             if (layoutInScreen && layoutInsetDecor && !requestedFullscreen
-                    && cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) {
+                    && (cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
+                    || cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES)) {
                 // At the top we have the status bar, so apps that are
                 // LAYOUT_IN_SCREEN | LAYOUT_INSET_DECOR but not FULLSCREEN
                 // already expect that there's an inset there and we don't need to exclude
@@ -2238,7 +2321,8 @@
                 displayCutoutSafeExceptMaybeBars.top = Integer.MIN_VALUE;
             }
             if (layoutInScreen && layoutInsetDecor && !requestedHideNavigation
-                    && cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT) {
+                    && (cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_DEFAULT
+                    || cutoutMode == LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES)) {
                 // Same for the navigation bar.
                 switch (mNavigationBarPosition) {
                     case NAV_BAR_BOTTOM:
@@ -2299,10 +2383,7 @@
             windowFrames.setContentChanged(true);
         }
 
-        win.computeFrameLw();
-        if (win.getControllableInsetProvider() != null) {
-            win.getControllableInsetProvider().updateSourceFrame();
-        }
+        win.computeFrame(displayFrames);
         // Dock windows carve out the bottom of the screen, so normal windows
         // can't appear underneath them.
         if (type == TYPE_INPUT_METHOD && win.isVisibleLw()
@@ -3068,7 +3149,9 @@
                 }
                 final InsetsControlTarget controlTarget =
                         swipeTarget.getControllableInsetProvider().getControlTarget();
-                if (controlTarget == null) {
+
+                // No transient mode on lockscreen (in notification shade window).
+                if (controlTarget == null || controlTarget == getNotificationShade()) {
                     return;
                 }
                 if (controlTarget.canShowTransient()) {
@@ -3098,7 +3181,7 @@
 
     private void disposeInputConsumer(InputConsumer inputConsumer) {
         if (inputConsumer != null) {
-            inputConsumer.dismiss();
+            inputConsumer.dispose();
         }
     }
 
@@ -3201,7 +3284,6 @@
                 && mLastBehavior == behavior
                 && mLastFocusIsFullscreen == isFullscreen
                 && mLastFocusIsImmersive == isImmersive
-                && mFocusedApp == win.getAppToken()
                 && mLastNonDockedStackBounds.equals(mNonDockedStackBounds)
                 && mLastDockedStackBounds.equals(mDockedStackBounds)) {
             return 0;
@@ -3218,7 +3300,6 @@
         mLastBehavior = behavior;
         mLastFocusIsFullscreen = isFullscreen;
         mLastFocusIsImmersive = isImmersive;
-        mFocusedApp = win.getAppToken();
         mLastNonDockedStackBounds.set(mNonDockedStackBounds);
         mLastDockedStackBounds.set(mDockedStackBounds);
         final Rect fullscreenStackBounds = new Rect(mNonDockedStackBounds);
@@ -3717,9 +3798,6 @@
         if (mFocusedWindow != null) {
             pw.print(prefix); pw.print("mFocusedWindow="); pw.println(mFocusedWindow);
         }
-        if (mFocusedApp != null) {
-            pw.print(prefix); pw.print("mFocusedApp="); pw.println(mFocusedApp);
-        }
         if (mTopFullscreenOpaqueWindowState != null) {
             pw.print(prefix); pw.print("mTopFullscreenOpaqueWindowState=");
             pw.println(mTopFullscreenOpaqueWindowState);
diff --git a/services/core/java/com/android/server/wm/DisplayRotation.java b/services/core/java/com/android/server/wm/DisplayRotation.java
index da77314..e71371a 100644
--- a/services/core/java/com/android/server/wm/DisplayRotation.java
+++ b/services/core/java/com/android/server/wm/DisplayRotation.java
@@ -526,7 +526,9 @@
             mService.mH.removeCallbacks(mDisplayRotationHandlerTimeout);
             mIsWaitingForRemoteRotation = false;
             mDisplayContent.sendNewConfiguration();
-            mService.mAtmService.applyContainerTransaction(t);
+            if (t != null) {
+                mService.mAtmService.mTaskOrganizerController.applyContainerTransaction(t, null);
+            }
         }
     }
 
diff --git a/services/core/java/com/android/server/wm/EmbeddedWindowController.java b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
index 0291017..884f769 100644
--- a/services/core/java/com/android/server/wm/EmbeddedWindowController.java
+++ b/services/core/java/com/android/server/wm/EmbeddedWindowController.java
@@ -20,8 +20,10 @@
 import android.annotation.Nullable;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.os.UserHandle;
 import android.util.ArrayMap;
 import android.view.IWindow;
+import android.view.InputApplicationHandle;
 
 /**
  * Keeps track of embedded windows.
@@ -44,21 +46,12 @@
      *
      * @param inputToken input channel token passed in by the embedding process when it requests
      *                   the server to add an input channel to the embedded surface.
-     * @param window     client token used to clean up the map if the embedding process dies
-     * @param hostWindowState input channel token belonging to the host window. This is needed to
-     *                        handle input callbacks to wm. It's used when raising ANR and when
-     *                        the user taps out side of the focused region on screen. This can be
-     *                        null if there is no host window.
-     * @param ownerUid  calling uid
-     * @param ownerPid  calling pid used for anr blaming
+     * @param embeddedWindow An {@link EmbeddedWindow} object to add to this controller.
      */
-    void add(IBinder inputToken, IWindow window, @Nullable WindowState hostWindowState,
-            int ownerUid, int ownerPid) {
-        EmbeddedWindow embeddedWindow = new EmbeddedWindow(window, hostWindowState, ownerUid,
-                ownerPid);
+    void add(IBinder inputToken, EmbeddedWindow embeddedWindow) {
         try {
             mWindows.put(inputToken, embeddedWindow);
-            window.asBinder().linkToDeath(()-> {
+            embeddedWindow.mClient.asBinder().linkToDeath(()-> {
                 synchronized (mWmLock) {
                     mWindows.remove(inputToken);
                 }
@@ -101,6 +94,15 @@
         final int mOwnerUid;
         final int mOwnerPid;
 
+        /**
+         * @param clientToken client token used to clean up the map if the embedding process dies
+         * @param hostWindowState input channel token belonging to the host window. This is needed
+         *                        to handle input callbacks to wm. It's used when raising ANR and
+         *                        when the user taps out side of the focused region on screen. This
+         *                        can be null if there is no host window.
+         * @param ownerUid  calling uid
+         * @param ownerPid  calling pid used for anr blaming
+         */
         EmbeddedWindow(IWindow clientToken, WindowState hostWindowState, int ownerUid,
                 int ownerPid) {
             mClient = clientToken;
@@ -108,5 +110,21 @@
             mOwnerUid = ownerUid;
             mOwnerPid = ownerPid;
         }
+
+        String getName() {
+            final String hostWindowName = (mHostWindowState != null)
+                    ? mHostWindowState.getWindowTag().toString() : "Internal";
+            return "EmbeddedWindow{ u" + UserHandle.getUserId(mOwnerUid) + " " + hostWindowName
+                    + "}";
+        }
+
+        InputApplicationHandle getApplicationHandle() {
+            if (mHostWindowState == null
+                    || mHostWindowState.mInputWindowHandle.inputApplicationHandle == null) {
+                return null;
+            }
+            return new InputApplicationHandle(
+                    mHostWindowState.mInputWindowHandle.inputApplicationHandle);
+        }
     }
 }
diff --git a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
index fb97ecf..3ff1b95 100644
--- a/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/ImeInsetsSourceProvider.java
@@ -16,9 +16,13 @@
 
 package com.android.server.wm;
 
+import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_IME;
+
 import android.view.InsetsSource;
 import android.view.WindowInsets;
 
+import com.android.server.protolog.common.ProtoLog;
+
 /**
  * Controller for IME inset source on the server. It's called provider as it provides the
  * {@link InsetsSource} to the client that uses it in {@link InsetsSourceConsumer}.
@@ -35,40 +39,40 @@
     }
 
     /**
-     * Called when a layout pass has occurred.
-     */
-    void onPostLayout() {
-        super.onPostLayout();
-
-        if (mImeTargetFromIme != null
-                && isImeTargetFromDisplayContentAndImeSame()
-                && mWin != null
-                && mWin.isDrawnLw()
-                && !mWin.mGivenInsetsPending) {
-            mIsImeLayoutDrawn = true;
-        }
-    }
-
-    /**
-     * Called when Insets have been dispatched to client.
+     * Called when Insets have been dispatched to client. This gets called just after onPostLayout.
      */
     void onPostInsetsDispatched() {
-        if (mIsImeLayoutDrawn && mShowImeRunner != null) {
-            // Show IME if InputMethodService requested to be shown and it's layout has finished.
-            mShowImeRunner.run();
-        }
+        checkShowImePostLayout();
     }
 
     /**
      * Called from {@link WindowManagerInternal#showImePostLayout} when {@link InputMethodService}
      * requests to show IME on {@param imeTarget}.
+     *
      * @param imeTarget imeTarget on which IME request is coming from.
      */
     void scheduleShowImePostLayout(WindowState imeTarget) {
+        boolean targetChanged = mImeTargetFromIme != imeTarget
+                && mImeTargetFromIme != null && imeTarget != null && mShowImeRunner != null
+                && mImeTargetFromIme.mActivityRecord == imeTarget.mActivityRecord;
         mImeTargetFromIme = imeTarget;
+        if (targetChanged) {
+            // target changed, check if new target can show IME.
+            ProtoLog.d(WM_DEBUG_IME, "IME target changed within ActivityRecord");
+            checkShowImePostLayout();
+            // if IME cannot be shown at this time, it is scheduled to be shown.
+            // once window that called IMM.showSoftInput() and DisplayContent's ImeTarget match,
+            // it will be shown.
+            return;
+        }
+
+        ProtoLog.d(WM_DEBUG_IME, "Schedule IME show for %s", mImeTargetFromIme.getName());
         mShowImeRunner = () -> {
+            ProtoLog.d(WM_DEBUG_IME, "Run showImeRunner");
             // Target should still be the same.
             if (isImeTargetFromDisplayContentAndImeSame()) {
+                ProtoLog.d(WM_DEBUG_IME, "call showInsets(ime) on %s",
+                        mDisplayContent.mInputMethodControlTarget.getWindow().getName());
                 mDisplayContent.mInputMethodControlTarget.showInsets(
                         WindowInsets.Type.ime(), true /* fromIme */);
             }
@@ -76,10 +80,27 @@
         };
     }
 
+    private void checkShowImePostLayout() {
+        // check if IME is drawn
+        if (mIsImeLayoutDrawn
+                || (mImeTargetFromIme != null
+                && isImeTargetFromDisplayContentAndImeSame()
+                && mWin != null
+                && mWin.isDrawnLw()
+                && !mWin.mGivenInsetsPending)) {
+            mIsImeLayoutDrawn = true;
+            // show IME if InputMethodService requested it to be shown.
+            if (mShowImeRunner != null) {
+                mShowImeRunner.run();
+            }
+        }
+    }
+
     /**
      * Abort any pending request to show IME post layout.
      */
     void abortShowImePostLayout() {
+        ProtoLog.d(WM_DEBUG_IME, "abortShowImePostLayout");
         mImeTargetFromIme = null;
         mIsImeLayoutDrawn = false;
         mShowImeRunner = null;
@@ -96,12 +117,14 @@
         // TODO(b/139861270): Remove the child & sublayer check once IMMS is aware of
         //  actual IME target.
         final WindowState dcTarget = mDisplayContent.mInputMethodTarget;
-        if (dcTarget == null) {
+        if (dcTarget == null || mImeTargetFromIme == null) {
             return false;
         }
+        ProtoLog.d(WM_DEBUG_IME, "dcTarget: %s mImeTargetFromIme: %s",
+                dcTarget.getName(), mImeTargetFromIme.getName());
+
         return (!dcTarget.isClosing() && mImeTargetFromIme == dcTarget)
                 || (mImeTargetFromIme != null && dcTarget.getParentWindow() == mImeTargetFromIme
-                        && dcTarget.mSubLayer > mImeTargetFromIme.mSubLayer);
+                && dcTarget.mSubLayer > mImeTargetFromIme.mSubLayer);
     }
-
 }
diff --git a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
index ef6f847..2f02ffb 100644
--- a/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
+++ b/services/core/java/com/android/server/wm/ImmersiveModeConfirmation.java
@@ -275,7 +275,7 @@
             super.onAttachedToWindow();
 
             DisplayMetrics metrics = new DisplayMetrics();
-            getWindowManager().getDefaultDisplay().getMetrics(metrics);
+            mContext.getDisplay().getMetrics(metrics);
             float density = metrics.density;
 
             getViewTreeObserver().addOnComputeInternalInsetsListener(mInsetsListener);
diff --git a/services/core/java/com/android/server/wm/InputMonitor.java b/services/core/java/com/android/server/wm/InputMonitor.java
index faa6e52..b638e49 100644
--- a/services/core/java/com/android/server/wm/InputMonitor.java
+++ b/services/core/java/com/android/server/wm/InputMonitor.java
@@ -103,9 +103,17 @@
         @Override
         public void dismiss() {
             synchronized (mService.mGlobalLock) {
-                if (mInputMonitor.destroyInputConsumer(mWindowHandle.name)) {
-                    mInputEventReceiver.dispose();
-                }
+                mInputMonitor.mInputConsumers.remove(mName);
+                hide(mInputMonitor.mInputTransaction);
+                mInputMonitor.updateInputWindowsLw(true /* force */);
+            }
+        }
+
+        @Override
+        public void dispose() {
+            synchronized (mService.mGlobalLock) {
+                disposeChannelsLw();
+                mInputEventReceiver.dispose();
             }
         }
     }
@@ -415,18 +423,18 @@
     }
 
     private final class UpdateInputForAllWindowsConsumer implements Consumer<WindowState> {
-        InputConsumerImpl navInputConsumer;
-        InputConsumerImpl pipInputConsumer;
-        InputConsumerImpl wallpaperInputConsumer;
-        InputConsumerImpl recentsAnimationInputConsumer;
+        InputConsumerImpl mNavInputConsumer;
+        InputConsumerImpl mPipInputConsumer;
+        InputConsumerImpl mWallpaperInputConsumer;
+        InputConsumerImpl mRecentsAnimationInputConsumer;
 
-        private boolean mAddInputConsumerHandle;
+        private boolean mAddNavInputConsumerHandle;
         private boolean mAddPipInputConsumerHandle;
         private boolean mAddWallpaperInputConsumerHandle;
         private boolean mAddRecentsAnimationInputConsumerHandle;
 
-        boolean inDrag;
-        WallpaperController wallpaperController;
+        boolean mInDrag;
+        WallpaperController mWallpaperController;
 
         // An invalid window handle that tells SurfaceFlinger not update the input info.
         final InputWindowHandle mInvalidInputWindow = new InputWindowHandle(null, mDisplayId);
@@ -434,20 +442,20 @@
         private void updateInputWindows(boolean inDrag) {
             Trace.traceBegin(TRACE_TAG_WINDOW_MANAGER, "updateInputWindows");
 
-            navInputConsumer = getInputConsumer(INPUT_CONSUMER_NAVIGATION);
-            pipInputConsumer = getInputConsumer(INPUT_CONSUMER_PIP);
-            wallpaperInputConsumer = getInputConsumer(INPUT_CONSUMER_WALLPAPER);
-            recentsAnimationInputConsumer = getInputConsumer(INPUT_CONSUMER_RECENTS_ANIMATION);
+            mNavInputConsumer = getInputConsumer(INPUT_CONSUMER_NAVIGATION);
+            mPipInputConsumer = getInputConsumer(INPUT_CONSUMER_PIP);
+            mWallpaperInputConsumer = getInputConsumer(INPUT_CONSUMER_WALLPAPER);
+            mRecentsAnimationInputConsumer = getInputConsumer(INPUT_CONSUMER_RECENTS_ANIMATION);
 
-            mAddInputConsumerHandle = navInputConsumer != null;
-            mAddPipInputConsumerHandle = pipInputConsumer != null;
-            mAddWallpaperInputConsumerHandle = wallpaperInputConsumer != null;
-            mAddRecentsAnimationInputConsumerHandle = recentsAnimationInputConsumer != null;
+            mAddNavInputConsumerHandle = mNavInputConsumer != null;
+            mAddPipInputConsumerHandle = mPipInputConsumer != null;
+            mAddWallpaperInputConsumerHandle = mWallpaperInputConsumer != null;
+            mAddRecentsAnimationInputConsumerHandle = mRecentsAnimationInputConsumer != null;
 
             mTmpRect.setEmpty();
             mDisableWallpaperTouchEvents = false;
-            this.inDrag = inDrag;
-            wallpaperController = mDisplayContent.mWallpaperController;
+            mInDrag = inDrag;
+            mWallpaperController = mDisplayContent.mWallpaperController;
 
             resetInputConsumers(mInputTransaction);
 
@@ -455,7 +463,7 @@
                     true /* traverseTopToBottom */);
 
             if (mAddWallpaperInputConsumerHandle) {
-                wallpaperInputConsumer.show(mInputTransaction, 0);
+                mWallpaperInputConsumer.show(mInputTransaction, 0);
             }
 
             if (mApplyImmediately) {
@@ -494,8 +502,8 @@
                 if (recentsAnimationController != null
                         && recentsAnimationController.shouldApplyInputConsumer(w.mActivityRecord)) {
                     if (recentsAnimationController.updateInputConsumerForApp(
-                            recentsAnimationInputConsumer.mWindowHandle, hasFocus)) {
-                        recentsAnimationInputConsumer.show(mInputTransaction, w);
+                            mRecentsAnimationInputConsumer.mWindowHandle, hasFocus)) {
+                        mRecentsAnimationInputConsumer.show(mInputTransaction, w);
                         mAddRecentsAnimationInputConsumerHandle = false;
                     }
                 }
@@ -505,25 +513,25 @@
                 if (mAddPipInputConsumerHandle) {
                     // Update the bounds of the Pip input consumer to match the window bounds.
                     w.getBounds(mTmpRect);
-                    pipInputConsumer.layout(mInputTransaction, mTmpRect);
+                    mPipInputConsumer.layout(mInputTransaction, mTmpRect);
 
                     // The touchable region is relative to the surface top-left
                     mTmpRect.offsetTo(0, 0);
-                    pipInputConsumer.mWindowHandle.touchableRegion.set(mTmpRect);
-                    pipInputConsumer.show(mInputTransaction, w);
+                    mPipInputConsumer.mWindowHandle.touchableRegion.set(mTmpRect);
+                    mPipInputConsumer.show(mInputTransaction, w);
                     mAddPipInputConsumerHandle = false;
                 }
             }
 
-            if (mAddInputConsumerHandle) {
-                navInputConsumer.show(mInputTransaction, w);
-                mAddInputConsumerHandle = false;
+            if (mAddNavInputConsumerHandle) {
+                mNavInputConsumer.show(mInputTransaction, w);
+                mAddNavInputConsumerHandle = false;
             }
 
             if (mAddWallpaperInputConsumerHandle) {
                 if (w.mAttrs.type == TYPE_WALLPAPER && w.isVisibleLw()) {
                     // Add the wallpaper input consumer above the first visible wallpaper.
-                    wallpaperInputConsumer.show(mInputTransaction, w);
+                    mWallpaperInputConsumer.show(mInputTransaction, w);
                     mAddWallpaperInputConsumerHandle = false;
                 }
             }
@@ -531,13 +539,13 @@
             if ((privateFlags & PRIVATE_FLAG_DISABLE_WALLPAPER_TOUCH_EVENTS) != 0) {
                 mDisableWallpaperTouchEvents = true;
             }
-            final boolean hasWallpaper = wallpaperController.isWallpaperTarget(w)
+            final boolean hasWallpaper = mWallpaperController.isWallpaperTarget(w)
                     && !mService.mPolicy.isKeyguardShowing()
                     && !mDisableWallpaperTouchEvents;
 
             // If there's a drag in progress and 'child' is a potential drop target,
             // make sure it's been told about the drag
-            if (inDrag && isVisible && w.getDisplayContent().isDefaultDisplay) {
+            if (mInDrag && isVisible && w.getDisplayContent().isDefaultDisplay) {
                 mService.mDragDropController.sendDragStartedIfNeededLocked(w);
             }
 
diff --git a/services/core/java/com/android/server/wm/InsetsControlTarget.java b/services/core/java/com/android/server/wm/InsetsControlTarget.java
index 154cde1..20e8f2b 100644
--- a/services/core/java/com/android/server/wm/InsetsControlTarget.java
+++ b/services/core/java/com/android/server/wm/InsetsControlTarget.java
@@ -26,6 +26,13 @@
     void notifyInsetsControlChanged();
 
     /**
+     * @return {@link WindowState} of this target, if any.
+     */
+    default WindowState getWindow() {
+        return null;
+    }
+
+    /**
      * Instructs the control target to show inset sources.
      *
      * @param types to specify which types of insets source window should be shown.
diff --git a/services/core/java/com/android/server/wm/InsetsPolicy.java b/services/core/java/com/android/server/wm/InsetsPolicy.java
index fa764e3..51b9916 100644
--- a/services/core/java/com/android/server/wm/InsetsPolicy.java
+++ b/services/core/java/com/android/server/wm/InsetsPolicy.java
@@ -20,17 +20,32 @@
 import static android.app.StatusBarManager.WINDOW_STATE_SHOWING;
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_HIDDEN;
+import static android.view.InsetsController.LAYOUT_INSETS_DURING_ANIMATION_SHOWN;
 import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
+import static android.view.SyncRtSurfaceTransactionApplier.applyParams;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION;
 
 import android.annotation.Nullable;
 import android.app.StatusBarManager;
 import android.util.IntArray;
+import android.util.SparseArray;
+import android.view.InsetsAnimationControlCallbacks;
+import android.view.InsetsAnimationControlImpl;
+import android.view.InsetsController;
+import android.view.InsetsSourceControl;
 import android.view.InsetsState;
 import android.view.InsetsState.InternalInsetsType;
+import android.view.SurfaceControl;
+import android.view.SyncRtSurfaceTransactionApplier;
 import android.view.ViewRootImpl;
+import android.view.WindowInsetsAnimationCallback;
+import android.view.WindowInsetsAnimationControlListener;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.DisplayThread;
 
 /**
  * Policy that implements who gets control over the windows generating insets.
@@ -46,6 +61,8 @@
     private WindowState mFocusedWin;
     private BarWindow mStatusBar = new BarWindow(StatusBarManager.WINDOW_STATUS_BAR);
     private BarWindow mNavBar = new BarWindow(StatusBarManager.WINDOW_NAVIGATION_BAR);
+    private boolean mAnimatingShown;
+    private final float[] mTmpFloat9 = new float[9];
 
     InsetsPolicy(InsetsStateController stateController, DisplayContent displayContent) {
         mStateController = stateController;
@@ -91,11 +108,14 @@
             changed = true;
         }
         if (changed) {
-            updateBarControlTarget(mFocusedWin);
             mPolicy.getStatusBarManagerInternal().showTransient(mDisplayContent.getDisplayId(),
                     mShowingTransientTypes.toArray());
-            mStateController.notifyInsetsChanged();
-            // TODO(b/118118435): Animation
+            updateBarControlTarget(mFocusedWin);
+            startAnimation(true /* show */, () -> {
+                synchronized (mDisplayContent.mWmService.mGlobalLock) {
+                    mStateController.notifyInsetsChanged();
+                }
+            });
         }
     }
 
@@ -103,11 +123,13 @@
         if (mShowingTransientTypes.size() == 0) {
             return;
         }
-
-        // TODO(b/118118435): Animation
-        mShowingTransientTypes.clear();
-        updateBarControlTarget(mFocusedWin);
-        mStateController.notifyInsetsChanged();
+        startAnimation(false /* show */, () -> {
+            synchronized (mDisplayContent.mWmService.mGlobalLock) {
+                mShowingTransientTypes.clear();
+                mStateController.notifyInsetsChanged();
+                updateBarControlTarget(mFocusedWin);
+            }
+        });
     }
 
     boolean isTransient(@InternalInsetsType int type) {
@@ -187,6 +209,10 @@
         if (mShowingTransientTypes.indexOf(ITYPE_STATUS_BAR) != -1) {
             return mTransientControlTarget;
         }
+        if (focusedWin == mPolicy.getNotificationShade()) {
+            // Notification shade has control anyways, no reason to force anything.
+            return focusedWin;
+        }
         if (areSystemBarsForciblyVisible() || isKeyguardOrStatusBarForciblyVisible()) {
             return null;
         }
@@ -197,6 +223,10 @@
         if (mShowingTransientTypes.indexOf(ITYPE_NAVIGATION_BAR) != -1) {
             return mTransientControlTarget;
         }
+        if (focusedWin == mPolicy.getNotificationShade()) {
+            // Notification shade has control anyways, no reason to force anything.
+            return focusedWin;
+        }
         if (areSystemBarsForciblyVisible() || isNavBarForciblyVisible()) {
             return null;
         }
@@ -204,9 +234,6 @@
     }
 
     private boolean isKeyguardOrStatusBarForciblyVisible() {
-        if (mPolicy.isKeyguardShowing()) {
-            return true;
-        }
         final WindowState statusBar = mPolicy.getStatusBar();
         if (statusBar != null) {
             // TODO(b/118118435): Pretend to the app that it's still able to control it?
@@ -242,6 +269,31 @@
         return isDockedStackVisible || isFreeformStackVisible || isResizing;
     }
 
+    @VisibleForTesting
+    void startAnimation(boolean show, Runnable callback) {
+        int typesReady = 0;
+        final SparseArray<InsetsSourceControl> controls = new SparseArray<>();
+        final IntArray showingTransientTypes = mShowingTransientTypes;
+        for (int i = showingTransientTypes.size() - 1; i >= 0; i--) {
+            InsetsSourceProvider provider =
+                    mStateController.getSourceProvider(showingTransientTypes.get(i));
+            InsetsSourceControl control = provider.getControl(mTransientControlTarget);
+            if (control == null || control.getLeash() == null) {
+                continue;
+            }
+            typesReady |= InsetsState.toPublicType(showingTransientTypes.get(i));
+            controls.put(control.getType(), new InsetsSourceControl(control));
+        }
+        controlAnimationUnchecked(typesReady, controls, show, callback);
+    }
+
+    private void controlAnimationUnchecked(int typesReady,
+            SparseArray<InsetsSourceControl> controls, boolean show, Runnable callback) {
+        InsetsPolicyAnimationControlListener listener =
+                new InsetsPolicyAnimationControlListener(show, callback);
+        listener.mControlCallbacks.controlAnimationUnchecked(typesReady, controls, show);
+    }
+
     private class BarWindow {
 
         private final int mId;
@@ -262,7 +314,102 @@
         }
     }
 
-    // TODO(b/118118435): Implement animations for it (with SurfaceAnimator)
+    private class InsetsPolicyAnimationControlListener extends
+            InsetsController.InternalAnimationControlListener {
+        Runnable mFinishCallback;
+        InsetsPolicyAnimationControlCallbacks mControlCallbacks;
+
+        InsetsPolicyAnimationControlListener(boolean show, Runnable finishCallback) {
+            super(show);
+            mFinishCallback = finishCallback;
+            mControlCallbacks = new InsetsPolicyAnimationControlCallbacks(this);
+        }
+
+        @Override
+        protected void onAnimationFinish() {
+            super.onAnimationFinish();
+            mControlCallbacks.mAnimationControl.finish(mAnimatingShown);
+            DisplayThread.getHandler().post(mFinishCallback);
+        }
+
+        private class InsetsPolicyAnimationControlCallbacks implements
+                InsetsAnimationControlCallbacks {
+            private InsetsAnimationControlImpl mAnimationControl = null;
+            private InsetsPolicyAnimationControlListener mListener;
+
+            InsetsPolicyAnimationControlCallbacks(InsetsPolicyAnimationControlListener listener) {
+                mListener = listener;
+            }
+
+            private void controlAnimationUnchecked(int typesReady,
+                    SparseArray<InsetsSourceControl> controls, boolean show) {
+                if (typesReady == 0) {
+                    // nothing to animate.
+                    return;
+                }
+                mAnimatingShown = show;
+
+                mAnimationControl = new InsetsAnimationControlImpl(controls,
+                        mFocusedWin.getDisplayContent().getBounds(), getState(),
+                        mListener, typesReady, this, mListener.getDurationMs(),
+                        InsetsController.INTERPOLATOR, true,
+                        show ? LAYOUT_INSETS_DURING_ANIMATION_SHOWN
+                                : LAYOUT_INSETS_DURING_ANIMATION_HIDDEN);
+                SurfaceAnimationThread.getHandler().post(
+                        () -> mListener.onReady(mAnimationControl, typesReady));
+            }
+
+            /** Called on SurfaceAnimationThread without global WM lock held. */
+            @Override
+            public void scheduleApplyChangeInsets() {
+                InsetsState state = getState();
+                if (mAnimationControl.applyChangeInsets(state)) {
+                    mAnimationControl.finish(mAnimatingShown);
+                }
+            }
+
+            @Override
+            public void notifyFinished(InsetsAnimationControlImpl controller, boolean shown) {
+                // Nothing's needed here. Finish steps is handled in the listener
+                // onAnimationFinished callback.
+            }
+
+            /**
+             * This method will return a state with fullscreen frame override. No need to make copy
+             * after getting state from this method.
+             * @return The client insets state with full display frame override.
+             */
+            private InsetsState getState() {
+                // To animate the transient animation correctly, we need to let the state hold
+                // the full display frame.
+                InsetsState overrideState = new InsetsState(mFocusedWin.getRequestedInsetsState(),
+                        true);
+                overrideState.setDisplayFrame(mFocusedWin.getDisplayContent().getBounds());
+                return overrideState;
+            }
+
+            /** Called on SurfaceAnimationThread without global WM lock held. */
+            @Override
+            public void applySurfaceParams(
+                    final SyncRtSurfaceTransactionApplier.SurfaceParams... params) {
+                SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+                for (int i = params.length - 1; i >= 0; i--) {
+                    SyncRtSurfaceTransactionApplier.SurfaceParams surfaceParams = params[i];
+                    applyParams(t, surfaceParams, mTmpFloat9);
+                }
+                t.apply();
+            }
+
+            @Override
+            public void startAnimation(InsetsAnimationControlImpl controller,
+                    WindowInsetsAnimationControlListener listener, int types,
+                    WindowInsetsAnimationCallback.InsetsAnimation animation,
+                    WindowInsetsAnimationCallback.AnimationBounds bounds,
+                    int layoutDuringAnimation) {
+            }
+        }
+    }
+
     private class TransientControlTarget implements InsetsControlTarget {
 
         @Override
diff --git a/services/core/java/com/android/server/wm/InsetsSourceProvider.java b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
index 2bb58dd..0d3f6b9 100644
--- a/services/core/java/com/android/server/wm/InsetsSourceProvider.java
+++ b/services/core/java/com/android/server/wm/InsetsSourceProvider.java
@@ -24,6 +24,7 @@
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_NONE;
 import static android.view.ViewRootImpl.sNewInsetsMode;
 
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_INSETS_CONTROL;
 import static com.android.server.wm.WindowManagerService.H.LAYOUT_AND_ASSIGN_WINDOW_LAYERS_IF_NEEDED;
 
 import android.annotation.NonNull;
@@ -38,6 +39,7 @@
 import android.view.SurfaceControl.Transaction;
 
 import com.android.internal.util.function.TriConsumer;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
@@ -57,10 +59,13 @@
     private final InsetsSourceControl mFakeControl;
     private @Nullable InsetsSourceControl mControl;
     private @Nullable InsetsControlTarget mControlTarget;
+    private @Nullable InsetsControlTarget mPendingControlTarget;
     private @Nullable InsetsControlTarget mFakeControlTarget;
 
     private @Nullable ControlAdapter mAdapter;
     private TriConsumer<DisplayFrames, WindowState, Rect> mFrameProvider;
+    private TriConsumer<DisplayFrames, WindowState, Rect> mImeFrameProvider;
+    private final Rect mImeOverrideFrame = new Rect();
 
     /** The visibility override from the current controlling window. */
     private boolean mClientVisible;
@@ -111,9 +116,12 @@
      * @param win The window that links to this source.
      * @param frameProvider Based on display frame state and the window, calculates the resulting
      *                      frame that should be reported to clients.
+     * @param imeFrameProvider Based on display frame state and the window, calculates the resulting
+     *                         frame that should be reported to IME.
      */
     void setWindow(@Nullable WindowState win,
-            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> frameProvider) {
+            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> frameProvider,
+            @Nullable TriConsumer<DisplayFrames, WindowState, Rect> imeFrameProvider) {
         if (mWin != null) {
             if (mControllable) {
                 mWin.setControllableInsetProvider(null);
@@ -126,14 +134,16 @@
         }
         mWin = win;
         mFrameProvider = frameProvider;
+        mImeFrameProvider = imeFrameProvider;
         if (win == null) {
             setServerVisible(false);
             mSource.setFrame(new Rect());
             mSource.setVisibleFrame(null);
         } else if (mControllable) {
             mWin.setControllableInsetProvider(this);
-            if (mControlTarget != null) {
-                updateControlForTarget(mControlTarget, true /* force */);
+            if (mPendingControlTarget != null) {
+                updateControlForTarget(mPendingControlTarget, true /* force */);
+                mPendingControlTarget = null;
             }
         }
     }
@@ -162,6 +172,12 @@
         }
         mSource.setFrame(mTmpRect);
 
+        if (mImeFrameProvider != null) {
+            mImeOverrideFrame.set(mWin.getFrameLw());
+            mImeFrameProvider.accept(mWin.getDisplayContent().mDisplayFrames, mWin,
+                    mImeOverrideFrame);
+        }
+
         if (mWin.mGivenVisibleInsets.left != 0 || mWin.mGivenVisibleInsets.top != 0
                 || mWin.mGivenVisibleInsets.right != 0 || mWin.mGivenVisibleInsets.bottom != 0) {
             mTmpRect.set(mWin.getFrameLw());
@@ -172,6 +188,17 @@
         }
     }
 
+    /** @return A new source computed by the specified window frame in the given display frames. */
+    InsetsSource createSimulatedSource(DisplayFrames displayFrames, WindowFrames windowFrames) {
+        final InsetsSource source = new InsetsSource(mSource);
+        mTmpRect.set(windowFrames.mFrame);
+        if (mFrameProvider != null) {
+            mFrameProvider.accept(displayFrames, mWin, mTmpRect);
+        }
+        source.setFrame(mTmpRect);
+        return source;
+    }
+
     /**
      * Called when a layout pass has occurred.
      */
@@ -209,8 +236,18 @@
             // to control the window for now.
             return;
         }
+        if (target != null && target.getWindow() != null) {
+            // ime control target could be a different window.
+            // Refer WindowState#getImeControlTarget().
+            target = target.getWindow().getImeControlTarget();
+        }
+
+        if (mWin != null && mWin.getSurfaceControl() == null) {
+            // if window doesn't have a surface, set it null and return.
+            setWindow(null, null, null);
+        }
         if (mWin == null) {
-            mControlTarget = target;
+            mPendingControlTarget = target;
             return;
         }
         if (target == mControlTarget && !force) {
@@ -224,7 +261,8 @@
         mAdapter = new ControlAdapter();
         setClientVisible(InsetsState.getDefaultVisibility(mSource.getType()));
         final Transaction t = mDisplayContent.getPendingTransaction();
-        mWin.startAnimation(t, mAdapter, !mClientVisible /* hidden */);
+        mWin.startAnimation(t, mAdapter, !mClientVisible /* hidden */,
+                ANIMATION_TYPE_INSETS_CONTROL, null /* animationFinishedCallback */);
         final SurfaceControl leash = mAdapter.mCapturedLeash;
         final long frameNumber = mFinishSeamlessRotateFrameNumber;
         mFinishSeamlessRotateFrameNumber = -1;
@@ -303,6 +341,21 @@
         return sNewInsetsMode == NEW_INSETS_MODE_NONE || mClientVisible;
     }
 
+    /**
+     * @return Whether this provider uses a different frame to dispatch to the IME.
+     */
+    boolean overridesImeFrame() {
+        return mImeFrameProvider != null;
+    }
+
+    /**
+     * @return Rect to dispatch to the IME as frame. Only valid if {@link #overridesImeFrame()}
+     *         returns {@code true}.
+     */
+    Rect getImeOverrideFrame() {
+        return mImeOverrideFrame;
+    }
+
     private class ControlAdapter implements AnimationAdapter {
 
         private SurfaceControl mCapturedLeash;
@@ -314,7 +367,7 @@
 
         @Override
         public void startAnimation(SurfaceControl animationLeash, Transaction t,
-                OnAnimationFinishedCallback finishCallback) {
+                @AnimationType int type, OnAnimationFinishedCallback finishCallback) {
             // TODO(b/118118435): We can remove the type check when implementing the transient bar
             //                    animation.
             if (mSource.getType() == ITYPE_IME) {
diff --git a/services/core/java/com/android/server/wm/InsetsStateController.java b/services/core/java/com/android/server/wm/InsetsStateController.java
index b2234d1..2d7d3f1 100644
--- a/services/core/java/com/android/server/wm/InsetsStateController.java
+++ b/services/core/java/com/android/server/wm/InsetsStateController.java
@@ -16,6 +16,7 @@
 
 package com.android.server.wm;
 
+import static android.view.InsetsState.ITYPE_CAPTION_BAR;
 import static android.view.InsetsState.ITYPE_IME;
 import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
@@ -60,6 +61,8 @@
             w.notifyInsetsChanged();
         }
     };
+    private final InsetsControlTarget mEmptyImeControlTarget = () -> {
+    };
 
     InsetsStateController(DisplayContent displayContent) {
         mDisplayContent = displayContent;
@@ -87,7 +90,27 @@
         if (type == ITYPE_NAVIGATION_BAR) {
             state.removeSource(ITYPE_IME);
             state.removeSource(ITYPE_STATUS_BAR);
+            state.removeSource(ITYPE_CAPTION_BAR);
         }
+
+        // Status bar doesn't get influenced by caption bar
+        if (type == ITYPE_STATUS_BAR) {
+            state.removeSource(ITYPE_CAPTION_BAR);
+        }
+
+        // IME needs different frames for certain cases (e.g. navigation bar in gesture nav).
+        if (type == ITYPE_IME) {
+            for (int i = mProviders.size() - 1; i >= 0; i--) {
+                InsetsSourceProvider otherProvider = mProviders.valueAt(i);
+                if (otherProvider.overridesImeFrame()) {
+                    InsetsSource override =
+                            new InsetsSource(state.getSource(otherProvider.getSource().getType()));
+                    override.setFrame(otherProvider.getImeOverrideFrame());
+                    state.addSource(override);
+                }
+            }
+        }
+
         return state;
     }
 
@@ -163,30 +186,51 @@
         }
     }
 
+    /**
+     * Computes insets state of the insets provider window in the display frames.
+     *
+     * @param state The output state.
+     * @param win The owner window of insets provider.
+     * @param displayFrames The display frames to create insets source.
+     * @param windowFrames The specified frames to represent the owner window.
+     */
+    void computeSimulatedState(InsetsState state, WindowState win, DisplayFrames displayFrames,
+            WindowFrames windowFrames) {
+        for (int i = mProviders.size() - 1; i >= 0; i--) {
+            final InsetsSourceProvider provider = mProviders.valueAt(i);
+            if (provider.mWin == win) {
+                state.addSource(provider.createSimulatedSource(displayFrames, windowFrames));
+            }
+        }
+    }
+
     boolean isFakeTarget(@InternalInsetsType int type, InsetsControlTarget target) {
         return mTypeFakeControlTargetMap.get(type) == target;
     }
 
-    void onImeTargetChanged(@Nullable InsetsControlTarget imeTarget) {
-        onControlChanged(ITYPE_IME, imeTarget);
+    void onImeControlTargetChanged(@Nullable InsetsControlTarget imeTarget) {
+
+        // Make sure that we always have a control target for the IME, even if the IME target is
+        // null. Otherwise there is no leash that will hide it and IME becomes "randomly" visible.
+        onControlChanged(ITYPE_IME, imeTarget != null ? imeTarget : mEmptyImeControlTarget);
         notifyPendingInsetsControlChanged();
     }
 
     /**
      * Called when the focused window that is able to control the system bars changes.
      *
-     * @param topControlling The target that is now able to control the top bar appearance
-     *                       and visibility.
+     * @param statusControlling The target that is now able to control the status bar appearance
+     *                          and visibility.
      * @param navControlling The target that is now able to control the nav bar appearance
      *                       and visibility.
      */
-    void onBarControlTargetChanged(@Nullable InsetsControlTarget topControlling,
-            @Nullable InsetsControlTarget fakeTopControlling,
+    void onBarControlTargetChanged(@Nullable InsetsControlTarget statusControlling,
+            @Nullable InsetsControlTarget fakeStatusControlling,
             @Nullable InsetsControlTarget navControlling,
             @Nullable InsetsControlTarget fakeNavControlling) {
-        onControlChanged(ITYPE_STATUS_BAR, topControlling);
+        onControlChanged(ITYPE_STATUS_BAR, statusControlling);
         onControlChanged(ITYPE_NAVIGATION_BAR, navControlling);
-        onControlFakeTargetChanged(ITYPE_STATUS_BAR, fakeTopControlling);
+        onControlFakeTargetChanged(ITYPE_STATUS_BAR, fakeStatusControlling);
         onControlFakeTargetChanged(ITYPE_NAVIGATION_BAR, fakeNavControlling);
         notifyPendingInsetsControlChanged();
     }
diff --git a/services/core/java/com/android/server/wm/KeyguardController.java b/services/core/java/com/android/server/wm/KeyguardController.java
index ad65e10..00947d7 100644
--- a/services/core/java/com/android/server/wm/KeyguardController.java
+++ b/services/core/java/com/android/server/wm/KeyguardController.java
@@ -31,11 +31,11 @@
 import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_TO_SHADE;
 import static android.view.WindowManagerPolicyConstants.KEYGUARD_GOING_AWAY_FLAG_WITH_WALLPAPER;
 
-import static com.android.server.am.KeyguardControllerProto.AOD_SHOWING;
-import static com.android.server.am.KeyguardControllerProto.KEYGUARD_OCCLUDED_STATES;
-import static com.android.server.am.KeyguardControllerProto.KEYGUARD_SHOWING;
-import static com.android.server.am.KeyguardOccludedProto.DISPLAY_ID;
-import static com.android.server.am.KeyguardOccludedProto.KEYGUARD_OCCLUDED;
+import static com.android.server.wm.KeyguardControllerProto.AOD_SHOWING;
+import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_OCCLUDED_STATES;
+import static com.android.server.wm.KeyguardControllerProto.KEYGUARD_SHOWING;
+import static com.android.server.wm.KeyguardOccludedProto.DISPLAY_ID;
+import static com.android.server.wm.KeyguardOccludedProto.KEYGUARD_OCCLUDED;
 import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
diff --git a/services/core/java/com/android/server/wm/LocalAnimationAdapter.java b/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
index 5892239..7c1a616 100644
--- a/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
+++ b/services/core/java/com/android/server/wm/LocalAnimationAdapter.java
@@ -24,6 +24,7 @@
 import android.view.SurfaceControl;
 import android.view.SurfaceControl.Transaction;
 
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
@@ -50,9 +51,9 @@
 
     @Override
     public void startAnimation(SurfaceControl animationLeash, Transaction t,
-            OnAnimationFinishedCallback finishCallback) {
+            @AnimationType int type, OnAnimationFinishedCallback finishCallback) {
         mAnimator.startAnimation(mSpec, animationLeash, t,
-                () -> finishCallback.onAnimationFinished(this));
+                () -> finishCallback.onAnimationFinished(type, this));
     }
 
     @Override
diff --git a/services/core/java/com/android/server/wm/LockTaskController.java b/services/core/java/com/android/server/wm/LockTaskController.java
index 02413bb..3b25b74 100644
--- a/services/core/java/com/android/server/wm/LockTaskController.java
+++ b/services/core/java/com/android/server/wm/LockTaskController.java
@@ -23,6 +23,8 @@
 import static android.content.Context.DEVICE_POLICY_SERVICE;
 import static android.content.Context.STATUS_BAR_SERVICE;
 import static android.content.Intent.ACTION_CALL_EMERGENCY;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
 import static android.os.UserHandle.USER_ALL;
 import static android.os.UserHandle.USER_CURRENT;
 import static android.telecom.TelecomManager.EMERGENCY_DIALER_COMPONENT;
@@ -339,6 +341,25 @@
                 & DevicePolicyManager.LOCK_TASK_FEATURE_KEYGUARD) != 0;
     }
 
+    private boolean isBlockingInTaskEnabled(int userId) {
+        return (getLockTaskFeaturesForUser(userId)
+                & DevicePolicyManager.LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK) != 0;
+    }
+
+    boolean isActivityAllowed(int userId, String packageName, int lockTaskLaunchMode) {
+        if (mLockTaskModeState != LOCK_TASK_MODE_LOCKED || !isBlockingInTaskEnabled(userId)) {
+            return true;
+        }
+        switch (lockTaskLaunchMode) {
+            case LOCK_TASK_LAUNCH_MODE_ALWAYS:
+                return true;
+            case LOCK_TASK_LAUNCH_MODE_NEVER:
+                return false;
+            default:
+        }
+        return isPackageWhitelisted(userId, packageName);
+    }
+
     private boolean isEmergencyCallTask(Task task) {
         final Intent intent = task.intent;
         if (intent == null) {
diff --git a/services/core/java/com/android/server/wm/ProtoLogGroup.java b/services/core/java/com/android/server/wm/ProtoLogGroup.java
index 5c2830e..51725ce 100644
--- a/services/core/java/com/android/server/wm/ProtoLogGroup.java
+++ b/services/core/java/com/android/server/wm/ProtoLogGroup.java
@@ -59,6 +59,8 @@
             Consts.TAG_WM),
     WM_DEBUG_WINDOW_MOVEMENT(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
             Consts.TAG_WM),
+    WM_DEBUG_IME(Consts.ENABLE_DEBUG, Consts.ENABLE_LOG_TO_PROTO_DEBUG, false,
+            Consts.TAG_WM),
     TEST_GROUP(true, true, false, "WindowManagetProtoLogTest");
 
     private final boolean mEnabled;
diff --git a/services/core/java/com/android/server/wm/RecentTasks.java b/services/core/java/com/android/server/wm/RecentTasks.java
index a9dc36d..3771b3e 100644
--- a/services/core/java/com/android/server/wm/RecentTasks.java
+++ b/services/core/java/com/android/server/wm/RecentTasks.java
@@ -42,6 +42,7 @@
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_ATM;
 import static com.android.server.wm.ActivityTaskManagerDebugConfig.TAG_WITH_CLASS_NAME;
 
+import android.annotation.Nullable;
 import android.app.ActivityManager;
 import android.app.ActivityTaskManager;
 import android.app.AppGlobals;
@@ -155,6 +156,7 @@
      */
     private int mRecentsUid = -1;
     private ComponentName mRecentsComponent = null;
+    private @Nullable String mFeatureId;
 
     /**
      * Mapping of user id -> whether recent tasks have been loaded for that user.
@@ -418,6 +420,13 @@
     }
 
     /**
+     * @return the featureId for the recents component.
+     */
+    @Nullable String getRecentsComponentFeatureId() {
+        return mFeatureId;
+    }
+
+    /**
      * @return the uid for the recents component.
      */
     int getRecentsComponentUid() {
diff --git a/services/core/java/com/android/server/wm/RecentsAnimation.java b/services/core/java/com/android/server/wm/RecentsAnimation.java
index 647be0f..b0492be 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimation.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimation.java
@@ -63,6 +63,7 @@
     private final DisplayContent mDefaultDisplay;
     private final Intent mTargetIntent;
     private final ComponentName mRecentsComponent;
+    private final @Nullable String mRecentsFeatureId;
     private final int mRecentsUid;
     private final @Nullable WindowProcessController mCaller;
     private final int mUserId;
@@ -80,8 +81,8 @@
 
     RecentsAnimation(ActivityTaskManagerService atm, ActivityStackSupervisor stackSupervisor,
             ActivityStartController activityStartController, WindowManagerService wm,
-            Intent targetIntent, ComponentName recentsComponent, int recentsUid,
-            @Nullable WindowProcessController caller) {
+            Intent targetIntent, ComponentName recentsComponent, @Nullable String recentsFeatureId,
+            int recentsUid, @Nullable WindowProcessController caller) {
         mService = atm;
         mStackSupervisor = stackSupervisor;
         mDefaultDisplay = mService.mRootWindowContainer.getDefaultDisplay();
@@ -89,6 +90,7 @@
         mWindowManager = wm;
         mTargetIntent = targetIntent;
         mRecentsComponent = recentsComponent;
+        mRecentsFeatureId = recentsFeatureId;
         mRecentsUid = recentsUid;
         mCaller = caller;
         mUserId = atm.getCurrentUserId();
@@ -388,11 +390,12 @@
                     // surfaces needs to be done immediately.
                     mWindowManager.executeAppTransition();
 
-                    // After reordering the stacks, reset the minimized state. At this point, either
-                    // the target activity is now top-most and we will stay minimized (if in
-                    // split-screen), or we will have returned to the app, and the minimized state
-                    // should be reset
-                    mWindowManager.checkSplitScreenMinimizedChanged(true /* animate */);
+                    if (targetStack.getTile() != null) {
+                        // Client state may have changed during the recents animation, so force
+                        // send task info so the client can synchronize its state.
+                        mService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                                targetStack.mTile, true /* force */);
+                    }
                 } catch (Exception e) {
                     Slog.e(TAG, "Failed to clean up recents activity", e);
                     throw e;
@@ -455,6 +458,7 @@
                 .obtainStarter(mTargetIntent, reason)
                 .setCallingUid(mRecentsUid)
                 .setCallingPackage(mRecentsComponent.getPackageName())
+                .setCallingFeatureId(mRecentsFeatureId)
                 .setActivityOptions(new SafeActivityOptions(options))
                 .setUserId(mUserId)
                 .execute();
diff --git a/services/core/java/com/android/server/wm/RecentsAnimationController.java b/services/core/java/com/android/server/wm/RecentsAnimationController.java
index da9d074..944e0ae 100644
--- a/services/core/java/com/android/server/wm/RecentsAnimationController.java
+++ b/services/core/java/com/android/server/wm/RecentsAnimationController.java
@@ -30,6 +30,7 @@
 import static com.android.server.wm.BoundsAnimationController.FADE_IN;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_RECENTS_ANIMATIONS;
 import static com.android.server.wm.RemoteAnimationAdapterWrapperProto.TARGET;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
 import static com.android.server.wm.WindowManagerInternal.AppTransitionListener;
 
 import android.annotation.IntDef;
@@ -61,6 +62,7 @@
 import com.android.server.inputmethod.InputMethodManagerInternal;
 import com.android.server.protolog.common.ProtoLog;
 import com.android.server.statusbar.StatusBarManagerInternal;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 import com.android.server.wm.utils.InsetUtils;
 
@@ -432,7 +434,8 @@
         ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "addAnimation(%s)", task.getName());
         final TaskAnimationAdapter taskAdapter = new TaskAnimationAdapter(task,
                 isRecentTaskInvisible);
-        task.startAnimation(task.getPendingTransaction(), taskAdapter, false /* hidden */);
+        task.startAnimation(task.getPendingTransaction(), taskAdapter, false /* hidden */,
+                ANIMATION_TYPE_RECENTS);
         task.commitPendingTransaction();
         mPendingAnimations.add(taskAdapter);
         return taskAdapter;
@@ -443,14 +446,16 @@
         ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS,
                 "removeAnimation(%d)", taskAdapter.mTask.mTaskId);
         taskAdapter.mTask.setCanAffectSystemUiFlags(true);
-        taskAdapter.mCapturedFinishCallback.onAnimationFinished(taskAdapter);
+        taskAdapter.mCapturedFinishCallback.onAnimationFinished(taskAdapter.mLastAnimationType,
+                taskAdapter);
         mPendingAnimations.remove(taskAdapter);
     }
 
     @VisibleForTesting
     void removeWallpaperAnimation(WallpaperAnimationAdapter wallpaperAdapter) {
         ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "removeWallpaperAnimation()");
-        wallpaperAdapter.getLeashFinishedCallback().onAnimationFinished(wallpaperAdapter);
+        wallpaperAdapter.getLeashFinishedCallback().onAnimationFinished(
+                wallpaperAdapter.getLastAnimationType(), wallpaperAdapter);
         mPendingWallpaperAnimations.remove(wallpaperAdapter);
     }
 
@@ -638,7 +643,7 @@
                         taskSnapshot.getColorSpace(), false /* containsSecureLayers */));
         mRecentScreenshotAnimator = new SurfaceAnimator(
                 animatable,
-                () -> {
+                (type, anim) -> {
                     ProtoLog.d(WM_DEBUG_RECENTS_ANIMATIONS, "mRecentScreenshotAnimator finish");
                     mCallbacks.onAnimationFinished(reorderMode, false /* sendUserLeaveHint */);
                 }, mService);
@@ -827,6 +832,7 @@
         private final Task mTask;
         private SurfaceControl mCapturedLeash;
         private OnAnimationFinishedCallback mCapturedFinishCallback;
+        private @AnimationType int mLastAnimationType;
         private final boolean mIsRecentTaskInvisible;
         private RemoteAnimationTarget mTarget;
         private final Point mPosition = new Point();
@@ -868,7 +874,7 @@
 
         @Override
         public void startAnimation(SurfaceControl animationLeash, Transaction t,
-                OnAnimationFinishedCallback finishCallback) {
+                @AnimationType int type, OnAnimationFinishedCallback finishCallback) {
             // Restore z-layering, position and stack crop until client has a chance to modify it.
             t.setLayer(animationLeash, mTask.getPrefixOrderIndex());
             t.setPosition(animationLeash, mPosition.x, mPosition.y);
@@ -877,6 +883,7 @@
             t.setWindowCrop(animationLeash, mTmpRect);
             mCapturedLeash = animationLeash;
             mCapturedFinishCallback = finishCallback;
+            mLastAnimationType = type;
         }
 
         @Override
diff --git a/services/core/java/com/android/server/wm/RemoteAnimationController.java b/services/core/java/com/android/server/wm/RemoteAnimationController.java
index 6f7eeab..d2dbab8 100644
--- a/services/core/java/com/android/server/wm/RemoteAnimationController.java
+++ b/services/core/java/com/android/server/wm/RemoteAnimationController.java
@@ -40,6 +40,7 @@
 import com.android.internal.util.FastPrintWriter;
 import com.android.server.protolog.ProtoLogImpl;
 import com.android.server.protolog.common.ProtoLog;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
@@ -180,12 +181,14 @@
                 if (wrappers.mAdapter != null
                         && wrappers.mAdapter.mCapturedFinishCallback != null) {
                     wrappers.mAdapter.mCapturedFinishCallback
-                            .onAnimationFinished(wrappers.mAdapter);
+                            .onAnimationFinished(wrappers.mAdapter.mAnimationType,
+                                    wrappers.mAdapter);
                 }
                 if (wrappers.mThumbnailAdapter != null
                         && wrappers.mThumbnailAdapter.mCapturedFinishCallback != null) {
                     wrappers.mThumbnailAdapter.mCapturedFinishCallback
-                            .onAnimationFinished(wrappers.mThumbnailAdapter);
+                            .onAnimationFinished(wrappers.mAdapter.mAnimationType,
+                                    wrappers.mThumbnailAdapter);
                 }
                 mPendingAnimations.remove(i);
             }
@@ -221,11 +224,13 @@
                     final RemoteAnimationRecord adapters = mPendingAnimations.get(i);
                     if (adapters.mAdapter != null) {
                         adapters.mAdapter.mCapturedFinishCallback
-                                .onAnimationFinished(adapters.mAdapter);
+                                .onAnimationFinished(adapters.mAdapter.mAnimationType,
+                                        adapters.mAdapter);
                     }
                     if (adapters.mThumbnailAdapter != null) {
                         adapters.mThumbnailAdapter.mCapturedFinishCallback
-                                .onAnimationFinished(adapters.mThumbnailAdapter);
+                                .onAnimationFinished(adapters.mAdapter.mAnimationType,
+                                        adapters.mThumbnailAdapter);
                     }
                     mPendingAnimations.remove(i);
                     ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "\tcontainer=%s",
@@ -234,7 +239,8 @@
 
                 for (int i = mPendingWallpaperAnimations.size() - 1; i >= 0; i--) {
                     final WallpaperAnimationAdapter adapter = mPendingWallpaperAnimations.get(i);
-                    adapter.getLeashFinishedCallback().onAnimationFinished(adapter);
+                    adapter.getLeashFinishedCallback().onAnimationFinished(
+                            adapter.getLastAnimationType(), adapter);
                     mPendingWallpaperAnimations.remove(i);
                     ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "\twallpaper=%s", adapter.getToken());
                 }
@@ -393,6 +399,7 @@
         private final RemoteAnimationRecord mRecord;
         SurfaceControl mCapturedLeash;
         private OnAnimationFinishedCallback mCapturedFinishCallback;
+        private @AnimationType int mAnimationType;
         final Point mPosition = new Point();
         final Rect mStackBounds = new Rect();
 
@@ -410,7 +417,7 @@
 
         @Override
         public void startAnimation(SurfaceControl animationLeash, Transaction t,
-                OnAnimationFinishedCallback finishCallback) {
+                @AnimationType int type, OnAnimationFinishedCallback finishCallback) {
             ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "startAnimation");
 
             // Restore z-layering, position and stack crop until client has a chance to modify it.
@@ -425,6 +432,7 @@
             }
             mCapturedLeash = animationLeash;
             mCapturedFinishCallback = finishCallback;
+            mAnimationType = type;
         }
 
         @Override
diff --git a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
index 2f61ca0..63346b9 100644
--- a/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
+++ b/services/core/java/com/android/server/wm/ResetTargetTaskHelper.java
@@ -67,7 +67,7 @@
 
         final PooledConsumer c = PooledLambda.obtainConsumer(
                 ResetTargetTaskHelper::processTask, this, PooledLambda.__(Task.class));
-        targetTask.mWmService.mRoot.forAllTasks(c);
+        targetTask.mWmService.mRoot.forAllTasks(c, true /*traverseTopToBottom*/, mTargetStack);
         c.recycle();
 
         processPendingReparentActivities();
diff --git a/services/core/java/com/android/server/wm/RootWindowContainer.java b/services/core/java/com/android/server/wm/RootWindowContainer.java
index e6fd512..2196d89 100644
--- a/services/core/java/com/android/server/wm/RootWindowContainer.java
+++ b/services/core/java/com/android/server/wm/RootWindowContainer.java
@@ -16,7 +16,6 @@
 
 package com.android.server.wm;
 
-import static android.app.ActivityTaskManager.INVALID_STACK_ID;
 import static android.app.ActivityTaskManager.INVALID_TASK_ID;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_ASSISTANT;
 import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
@@ -41,12 +40,6 @@
 import static android.view.WindowManager.TRANSIT_CRASHING_ACTIVITY_CLOSE;
 import static android.view.WindowManager.TRANSIT_SHOW_SINGLE_TASK_DISPLAY;
 
-import static com.android.server.am.ActivityStackSupervisorProto.FOCUSED_STACK_ID;
-import static com.android.server.am.ActivityStackSupervisorProto.IS_HOME_RECENTS_COMPONENT;
-import static com.android.server.am.ActivityStackSupervisorProto.KEYGUARD_CONTROLLER;
-import static com.android.server.am.ActivityStackSupervisorProto.PENDING_ACTIVITIES;
-import static com.android.server.am.ActivityStackSupervisorProto.RESUMED_ACTIVITY;
-import static com.android.server.am.ActivityStackSupervisorProto.ROOT_WINDOW_CONTAINER;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_LAYOUT;
 import static com.android.server.policy.WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
 import static com.android.server.wm.ActivityStack.ActivityState.PAUSED;
@@ -74,6 +67,9 @@
 import static com.android.server.wm.ProtoLogGroup.WM_SHOW_SURFACE_ALLOC;
 import static com.android.server.wm.ProtoLogGroup.WM_SHOW_TRANSACTIONS;
 import static com.android.server.wm.RootWindowContainerProto.DISPLAYS;
+import static com.android.server.wm.RootWindowContainerProto.IS_HOME_RECENTS_COMPONENT;
+import static com.android.server.wm.RootWindowContainerProto.KEYGUARD_CONTROLLER;
+import static com.android.server.wm.RootWindowContainerProto.PENDING_ACTIVITIES;
 import static com.android.server.wm.RootWindowContainerProto.WINDOWS;
 import static com.android.server.wm.RootWindowContainerProto.WINDOW_CONTAINER;
 import static com.android.server.wm.Task.REPARENT_LEAVE_STACK_IN_PLACE;
@@ -1012,6 +1008,9 @@
 
         mWmService.scheduleAnimationLocked();
 
+        // Send any pending task-info changes that were queued-up during a layout deferment
+        mWmService.mAtmService.mTaskOrganizerController.dispatchPendingTaskInfoChanges();
+
         if (DEBUG_WINDOW_TRACE) Slog.e(TAG,
                 "performSurfacePlacementInner exit: animating="
                         + mWmService.mAnimator.isAnimating());
@@ -1275,7 +1274,8 @@
         }
     }
 
-    public void dumpDebugInner(ProtoOutputStream proto, long fieldId,
+    @Override
+    public void dumpDebug(ProtoOutputStream proto, long fieldId,
             @WindowTraceLogLevel int logLevel) {
         if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
             return;
@@ -1287,14 +1287,20 @@
             final int count = mChildren.size();
             for (int i = 0; i < count; ++i) {
                 final DisplayContent displayContent = mChildren.get(i);
-                displayContent.dumpDebugInner(proto, DISPLAYS, logLevel);
+                displayContent.dumpDebug(proto, DISPLAYS, logLevel);
             }
         }
         if (logLevel == WindowTraceLogLevel.ALL) {
             forAllWindows((w) -> {
-                w.writeIdentifierToProto(proto, WINDOWS);
+                w.dumpDebug(proto, WINDOWS, logLevel);
             }, true);
         }
+
+        mStackSupervisor.getKeyguardController().dumpDebug(proto, KEYGUARD_CONTROLLER);
+        proto.write(IS_HOME_RECENTS_COMPONENT,
+                mStackSupervisor.mRecentTasks.isRecentsComponentHomeActivity(mCurrentUser));
+        mService.getActivityStartController().dumpDebug(proto, PENDING_ACTIVITIES);
+
         proto.end(token);
     }
 
@@ -2959,6 +2965,12 @@
             case ACTIVITY_TYPE_RECENTS: return r.isActivityTypeRecents();
             case ACTIVITY_TYPE_ASSISTANT: return r.isActivityTypeAssistant();
         }
+        // TODO(task-hierarchy): Find another way to differentiate tile from normal stack once it is
+        //                       part of the hierarchy
+        if (stack instanceof TaskTile) {
+            // Don't launch directly into tiles.
+            return false;
+        }
         // There is a 1-to-1 relationship between stack and task when not in
         // primary split-windowing mode.
         if (stack.getWindowingMode() == WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
@@ -3311,6 +3323,14 @@
      * @return {@code true} if the top activity looks like it belongs to {@param userId}.
      */
     private void taskTopActivityIsUser(Task task, @UserIdInt int userId) {
+        // TODO(b/80414790): having utilities to loop for all leaf tasks from caller vs. checking
+        //  leaf tasks here.
+        if (!task.isLeafTask()) {
+            // No op if not a leaf task since we don't want to report root tasks to
+            // TaskStackListeners.
+            return;
+        }
+
         // To handle the case that work app is in the task but just is not the top one.
         final ActivityRecord activityRecord = task.getTopNonFinishingActivity();
         final ActivityRecord resultTo = (activityRecord != null ? activityRecord.resultTo : null);
@@ -3532,15 +3552,6 @@
         }
     }
 
-    public void dumpDisplays(PrintWriter pw) {
-        for (int i = getChildCount() - 1; i >= 0; --i) {
-            final DisplayContent display = getChildAt(i);
-            pw.print("[id:" + display.mDisplayId + " stacks:");
-            display.dumpStacks(pw);
-            pw.print("]");
-        }
-    }
-
     boolean dumpActivities(FileDescriptor fd, PrintWriter pw, boolean dumpAll, boolean dumpClient,
             String dumpPackage) {
         boolean printed = false;
@@ -3569,34 +3580,6 @@
         return printed;
     }
 
-    @Override
-    public void dumpDebug(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        final long token = proto.start(fieldId);
-        dumpDebugInner(proto, ROOT_WINDOW_CONTAINER, logLevel);
-        for (int displayNdx = 0; displayNdx < getChildCount(); ++displayNdx) {
-            final DisplayContent displayContent = getChildAt(displayNdx);
-            displayContent.dumpDebug(proto,
-                    com.android.server.am.ActivityStackSupervisorProto.DISPLAYS, logLevel);
-        }
-        mStackSupervisor.getKeyguardController().dumpDebug(proto, KEYGUARD_CONTROLLER);
-        // TODO(b/111541062): Update tests to look for resumed activities on all displays
-        final ActivityStack focusedStack = getTopDisplayFocusedStack();
-        if (focusedStack != null) {
-            proto.write(FOCUSED_STACK_ID, focusedStack.getRootTaskId());
-            final ActivityRecord focusedActivity = focusedStack.getDisplay().getResumedActivity();
-            if (focusedActivity != null) {
-                focusedActivity.writeIdentifierToProto(proto, RESUMED_ACTIVITY);
-            }
-        } else {
-            proto.write(FOCUSED_STACK_ID, INVALID_STACK_ID);
-        }
-        proto.write(IS_HOME_RECENTS_COMPONENT,
-                mStackSupervisor.mRecentTasks.isRecentsComponentHomeActivity(mCurrentUser));
-        mService.getActivityStartController().dumpDebug(proto, PENDING_ACTIVITIES);
-        proto.end(token);
-    }
-
     private final class SleepTokenImpl extends ActivityTaskManagerInternal.SleepToken {
         private final String mTag;
         private final long mAcquireTime;
diff --git a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
index e7aca89..f6cdac5 100644
--- a/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
+++ b/services/core/java/com/android/server/wm/ScreenRotationAnimation.java
@@ -24,6 +24,7 @@
 import static com.android.server.wm.RotationAnimationSpecProto.START_LUMA;
 import static com.android.server.wm.ScreenRotationAnimationProto.ANIMATION_RUNNING;
 import static com.android.server.wm.ScreenRotationAnimationProto.STARTED;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_SCREEN_ROTATION;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
 import static com.android.server.wm.WindowManagerService.TYPE_LAYER_MULTIPLIER;
@@ -48,6 +49,8 @@
 
 import com.android.internal.R;
 import com.android.server.protolog.common.ProtoLog;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 import com.android.server.wm.utils.RotationAnimationUtils;
 
 import java.io.PrintWriter;
@@ -670,33 +673,35 @@
          * Start an animation defined by animationSpec on a new {@link SurfaceAnimator}.
          *
          * @param animatable The animatable used for the animation.
-         * @param animationSpec                The spec of the animation.
-         * @param animationFinishedCallback    Callback passed to the {@link SurfaceAnimator} and
-         *                                    called when the animation finishes.
+         * @param animationSpec The spec of the animation.
+         * @param animationFinishedCallback Callback passed to the {@link SurfaceAnimator}
+         *                                    and called when the animation finishes.
          * @return The newly created {@link SurfaceAnimator} that as been started.
          */
         private SurfaceAnimator startAnimation(
                 SurfaceAnimator.Animatable animatable,
                 LocalAnimationAdapter.AnimationSpec animationSpec,
-                Runnable animationFinishedCallback) {
+                OnAnimationFinishedCallback animationFinishedCallback) {
             SurfaceAnimator animator = new SurfaceAnimator(
                     animatable, animationFinishedCallback, mService);
 
             LocalAnimationAdapter localAnimationAdapter = new LocalAnimationAdapter(
                     animationSpec, mService.mSurfaceAnimationRunner);
             animator.startAnimation(mDisplayContent.getPendingTransaction(),
-                    localAnimationAdapter, false);
+                    localAnimationAdapter, false, ANIMATION_TYPE_SCREEN_ROTATION);
             return animator;
         }
 
-        private void onAnimationEnd() {
+        private void onAnimationEnd(@AnimationType int type, AnimationAdapter anim) {
             synchronized (mService.mGlobalLock) {
                 if (isAnimating()) {
                     ProtoLog.v(WM_DEBUG_ORIENTATION,
-                            "ScreenRotation sill animating: mDisplayAnimator: %s\n"
-                                    + "mEnterBlackFrameAnimator: "
-                                    + "%s\nmRotateScreenAnimator: %s\n"
+                            "ScreenRotation still animating: type: %d\n"
+                                    + "mDisplayAnimator: %s\n"
+                                    + "mEnterBlackFrameAnimator: %s\n"
+                                    + "mRotateScreenAnimator: %s\n"
                                     + "mScreenshotRotationAnimator: %s",
+                            type,
                             mDisplayAnimator != null
                                     ? mDisplayAnimator.isAnimating() : null,
                             mEnterBlackFrameAnimator != null
diff --git a/services/core/java/com/android/server/wm/Session.java b/services/core/java/com/android/server/wm/Session.java
index de7f9e4..9df4248 100644
--- a/services/core/java/com/android/server/wm/Session.java
+++ b/services/core/java/com/android/server/wm/Session.java
@@ -238,16 +238,12 @@
 
     @Override
     public void setInTouchMode(boolean mode) {
-        synchronized (mService.mGlobalLock) {
-            mService.mInTouchMode = mode;
-        }
+        mService.setInTouchMode(mode);
     }
 
     @Override
     public boolean getInTouchMode() {
-        synchronized (mService.mGlobalLock) {
-            return mService.mInTouchMode;
-        }
+        return mService.getInTouchMode();
     }
 
     @Override
@@ -626,7 +622,7 @@
 
     @Override
     public void grantInputChannel(int displayId, SurfaceControl surface,
-            IWindow window, IBinder hostInputToken, InputChannel outInputChannel) {
+            IWindow window, IBinder hostInputToken, int flags, InputChannel outInputChannel) {
         if (hostInputToken == null && !mCanAddInternalSystemWindow) {
             // Callers without INTERNAL_SYSTEM_WINDOW permission cannot grant input channel to
             // embedded windows without providing a host window input token
@@ -635,8 +631,19 @@
 
         final long identity = Binder.clearCallingIdentity();
         try {
-            mService.grantInputChannel(mUid, mPid, displayId, surface, window,
-                    hostInputToken, outInputChannel);
+            mService.grantInputChannel(mUid, mPid, displayId, surface, window, hostInputToken,
+                    flags, outInputChannel);
+        } finally {
+            Binder.restoreCallingIdentity(identity);
+        }
+    }
+
+    @Override
+    public void updateInputChannel(IBinder channelToken, int displayId, SurfaceControl surface,
+            int flags) {
+        final long identity = Binder.clearCallingIdentity();
+        try {
+            mService.updateInputChannel(channelToken, displayId, surface, flags);
         } finally {
             Binder.restoreCallingIdentity(identity);
         }
diff --git a/services/core/java/com/android/server/wm/SurfaceAnimator.java b/services/core/java/com/android/server/wm/SurfaceAnimator.java
index cb1676f..7164cd8 100644
--- a/services/core/java/com/android/server/wm/SurfaceAnimator.java
+++ b/services/core/java/com/android/server/wm/SurfaceAnimator.java
@@ -23,6 +23,7 @@
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WITH_CLASS_NAME;
 import static com.android.server.wm.WindowManagerDebugConfig.TAG_WM;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.util.Slog;
@@ -33,6 +34,8 @@
 import com.android.internal.annotations.VisibleForTesting;
 
 import java.io.PrintWriter;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 
 /**
  * A class that can run animations on objects that have a set of child surfaces. We do this by
@@ -47,6 +50,7 @@
     private static final String TAG = TAG_WITH_CLASS_NAME ? "SurfaceAnimator" : TAG_WM;
     private final WindowManagerService mService;
     private AnimationAdapter mAnimation;
+    private @AnimationType int mAnimationType;
 
     @VisibleForTesting
     SurfaceControl mLeash;
@@ -55,30 +59,32 @@
     private final OnAnimationFinishedCallback mInnerAnimationFinishedCallback;
     @VisibleForTesting
     @Nullable
-    final Runnable mStaticAnimationFinishedCallback;
+    final OnAnimationFinishedCallback mStaticAnimationFinishedCallback;
     @Nullable
-    private Runnable mAnimationFinishedCallback;
+    private OnAnimationFinishedCallback mAnimationFinishedCallback;
     private boolean mAnimationStartDelayed;
 
     /**
      * @param animatable The object to animate.
-     * @param animationFinishedCallback Callback to invoke when an animation has finished running.
+     * @param staticAnimationFinishedCallback Callback to invoke when an animation has finished
+     *                                         running.
      */
-    SurfaceAnimator(Animatable animatable, @Nullable Runnable animationFinishedCallback,
+    SurfaceAnimator(Animatable animatable,
+            @Nullable OnAnimationFinishedCallback staticAnimationFinishedCallback,
             WindowManagerService service) {
         mAnimatable = animatable;
         mService = service;
-        mStaticAnimationFinishedCallback = animationFinishedCallback;
-        mInnerAnimationFinishedCallback = getFinishedCallback(animationFinishedCallback);
+        mStaticAnimationFinishedCallback = staticAnimationFinishedCallback;
+        mInnerAnimationFinishedCallback = getFinishedCallback(staticAnimationFinishedCallback);
     }
 
     private OnAnimationFinishedCallback getFinishedCallback(
-            @Nullable Runnable animationFinishedCallback) {
-        return anim -> {
+            @Nullable OnAnimationFinishedCallback staticAnimationFinishedCallback) {
+        return (type, anim) -> {
             synchronized (mService.mGlobalLock) {
                 final SurfaceAnimator target = mService.mAnimationTransferMap.remove(anim);
                 if (target != null) {
-                    target.mInnerAnimationFinishedCallback.onAnimationFinished(anim);
+                    target.mInnerAnimationFinishedCallback.onAnimationFinished(type, anim);
                     return;
                 }
 
@@ -91,13 +97,14 @@
                     if (anim != mAnimation) {
                         return;
                     }
-                    final Runnable animationFinishCallback = mAnimationFinishedCallback;
+                    final OnAnimationFinishedCallback animationFinishCallback =
+                            mAnimationFinishedCallback;
                     reset(mAnimatable.getPendingTransaction(), true /* destroyLeash */);
-                    if (animationFinishedCallback != null) {
-                        animationFinishedCallback.run();
+                    if (staticAnimationFinishedCallback != null) {
+                        staticAnimationFinishedCallback.onAnimationFinished(type, anim);
                     }
                     if (animationFinishCallback != null) {
-                        animationFinishCallback.run();
+                        animationFinishCallback.onAnimationFinished(type, anim);
                     }
                 };
                 if (!mAnimatable.shouldDeferAnimationFinish(resetAndInvokeFinish)) {
@@ -120,9 +127,11 @@
      * @param animationFinishedCallback The callback being triggered when the animation finishes.
      */
     void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
-            @Nullable Runnable animationFinishedCallback) {
+            @AnimationType int type,
+            @Nullable OnAnimationFinishedCallback animationFinishedCallback) {
         cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
         mAnimation = anim;
+        mAnimationType = type;
         mAnimationFinishedCallback = animationFinishedCallback;
         final SurfaceControl surface = mAnimatable.getSurfaceControl();
         if (surface == null) {
@@ -137,11 +146,12 @@
             if (DEBUG_ANIM) Slog.i(TAG, "Animation start delayed");
             return;
         }
-        mAnimation.startAnimation(mLeash, t, mInnerAnimationFinishedCallback);
+        mAnimation.startAnimation(mLeash, t, type, mInnerAnimationFinishedCallback);
     }
 
-    void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden) {
-        startAnimation(t, anim, hidden, null /* animationFinishedCallback */);
+    void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
+            @AnimationType int type) {
+        startAnimation(t, anim, hidden, type, null /* animationFinishedCallback */);
     }
 
     /**
@@ -165,7 +175,7 @@
         mAnimationStartDelayed = false;
         if (delayed && mAnimation != null) {
             mAnimation.startAnimation(mLeash, mAnimatable.getPendingTransaction(),
-                    mInnerAnimationFinishedCallback);
+                    mAnimationType, mInnerAnimationFinishedCallback);
             mAnimatable.commitPendingTransaction();
         }
     }
@@ -245,6 +255,7 @@
         cancelAnimation(t, true /* restarting */, true /* forwardCancel */);
         mLeash = from.mLeash;
         mAnimation = from.mAnimation;
+        mAnimationType = from.mAnimationType;
         mAnimationFinishedCallback = from.mAnimationFinishedCallback;
 
         // Cancel source animation, but don't let animation runner cancel the animation.
@@ -272,7 +283,8 @@
         if (DEBUG_ANIM) Slog.i(TAG, "Cancelling animation restarting=" + restarting);
         final SurfaceControl leash = mLeash;
         final AnimationAdapter animation = mAnimation;
-        final Runnable animationFinishedCallback = mAnimationFinishedCallback;
+        final @AnimationType int animationType = mAnimationType;
+        final OnAnimationFinishedCallback animationFinishedCallback = mAnimationFinishedCallback;
         reset(t, false);
         if (animation != null) {
             if (!mAnimationStartDelayed && forwardCancel) {
@@ -280,10 +292,10 @@
             }
             if (!restarting) {
                 if (mStaticAnimationFinishedCallback != null) {
-                    mStaticAnimationFinishedCallback.run();
+                    mStaticAnimationFinishedCallback.onAnimationFinished(animationType, animation);
                 }
                 if (animationFinishedCallback != null) {
-                    animationFinishedCallback.run();
+                    animationFinishedCallback.onAnimationFinished(animationType, animation);
                 }
             }
         }
@@ -325,6 +337,7 @@
         mLeash = null;
         mAnimation = null;
         mAnimationFinishedCallback = null;
+        mAnimationType = ANIMATION_TYPE_NONE;
 
         if (reparent) {
             // Make sure to inform the animatable after the surface was reparented (or reparent
@@ -392,12 +405,72 @@
         }
     }
 
+
+    /**
+     * No animation is specified.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_NONE = 0;
+
+    /**
+     * Animation for an app transition.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_APP_TRANSITION = 1;
+
+    /**
+     * Animation for screen rotation.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_SCREEN_ROTATION = 2;
+
+    /**
+     * Animation for dimming.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_DIMMER = 3;
+
+    /**
+     * Animation for recent apps.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_RECENTS = 4;
+
+    /**
+     * Animation for a {@link WindowState} without animating the activity.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_WINDOW_ANIMATION = 5;
+
+    /**
+     * Animation to control insets. This is actually not an animation, but is used to give the
+     * client a leash over the system window causing insets.
+     * @hide
+     */
+    static final int ANIMATION_TYPE_INSETS_CONTROL = 6;
+
+    /**
+     * The type of the animation.
+     * @hide
+     */
+    @IntDef(flag = true, prefix = { "ANIMATION_TYPE_" }, value = {
+            ANIMATION_TYPE_NONE,
+            ANIMATION_TYPE_APP_TRANSITION,
+            ANIMATION_TYPE_SCREEN_ROTATION,
+            ANIMATION_TYPE_DIMMER,
+            ANIMATION_TYPE_RECENTS,
+            ANIMATION_TYPE_WINDOW_ANIMATION,
+            ANIMATION_TYPE_INSETS_CONTROL
+    })
+    @Retention(RetentionPolicy.SOURCE)
+    @interface AnimationType {}
+
     /**
      * Callback to be passed into {@link AnimationAdapter#startAnimation} to be invoked by the
      * component that is running the animation when the animation is finished.
      */
     interface OnAnimationFinishedCallback {
-        void onAnimationFinished(AnimationAdapter anim);
+        void onAnimationFinished(@AnimationType int type, AnimationAdapter anim);
     }
 
     /**
diff --git a/services/core/java/com/android/server/wm/Task.java b/services/core/java/com/android/server/wm/Task.java
index 36cae1f..0aed691 100644
--- a/services/core/java/com/android/server/wm/Task.java
+++ b/services/core/java/com/android/server/wm/Task.java
@@ -61,17 +61,6 @@
 
 import static com.android.internal.policy.DecorView.DECOR_SHADOW_FOCUSED_HEIGHT_IN_DIP;
 import static com.android.internal.policy.DecorView.DECOR_SHADOW_UNFOCUSED_HEIGHT_IN_DIP;
-import static com.android.server.am.TaskRecordProto.ACTIVITIES;
-import static com.android.server.am.TaskRecordProto.ACTIVITY_TYPE;
-import static com.android.server.am.TaskRecordProto.FULLSCREEN;
-import static com.android.server.am.TaskRecordProto.LAST_NON_FULLSCREEN_BOUNDS;
-import static com.android.server.am.TaskRecordProto.MIN_HEIGHT;
-import static com.android.server.am.TaskRecordProto.MIN_WIDTH;
-import static com.android.server.am.TaskRecordProto.ORIG_ACTIVITY;
-import static com.android.server.am.TaskRecordProto.REAL_ACTIVITY;
-import static com.android.server.am.TaskRecordProto.RESIZE_MODE;
-import static com.android.server.am.TaskRecordProto.STACK_ID;
-import static com.android.server.am.TaskRecordProto.TASK;
 import static com.android.server.wm.ActivityRecord.STARTING_WINDOW_SHOWN;
 import static com.android.server.wm.ActivityStack.ActivityState.RESUMED;
 import static com.android.server.wm.ActivityStackSupervisor.ON_TOP;
@@ -90,12 +79,6 @@
 import static com.android.server.wm.ActivityTaskManagerService.TAG_STACK;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_DOCKED_DIVIDER;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ADD_REMOVE;
-import static com.android.server.wm.TaskProto.ACTIVITY;
-import static com.android.server.wm.TaskProto.DISPLAYED_BOUNDS;
-import static com.android.server.wm.TaskProto.FILLS_PARENT;
-import static com.android.server.wm.TaskProto.SURFACE_HEIGHT;
-import static com.android.server.wm.TaskProto.SURFACE_WIDTH;
-import static com.android.server.wm.TaskProto.WINDOW_CONTAINER;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_STACK;
@@ -116,6 +99,7 @@
 import android.app.ActivityOptions;
 import android.app.ActivityTaskManager;
 import android.app.AppGlobals;
+import android.app.PictureInPictureParams;
 import android.app.TaskInfo;
 import android.app.WindowConfiguration;
 import android.content.ComponentName;
@@ -137,7 +121,6 @@
 import android.service.voice.IVoiceInteractionSession;
 import android.util.DisplayMetrics;
 import android.util.Slog;
-import android.util.proto.ProtoOutputStream;
 import android.view.DisplayInfo;
 import android.view.ITaskOrganizer;
 import android.view.RemoteAnimationTarget;
@@ -201,6 +184,7 @@
     private static final String ATTR_TASK_AFFILIATION_COLOR = "task_affiliation_color";
     private static final String ATTR_CALLING_UID = "calling_uid";
     private static final String ATTR_CALLING_PACKAGE = "calling_package";
+    private static final String ATTR_CALLING_FEATURE_ID = "calling_feature_id";
     private static final String ATTR_SUPPORTS_PICTURE_IN_PICTURE = "supports_picture_in_picture";
     private static final String ATTR_RESIZE_MODE = "resize_mode";
     private static final String ATTR_NON_FULLSCREEN_BOUNDS = "non_fullscreen_bounds";
@@ -314,6 +298,7 @@
     // For relaunching the task from recents as though it was launched by the original launcher.
     int mCallingUid;
     String mCallingPackage;
+    String mCallingFeatureId;
 
     private final Rect mTmpStableBounds = new Rect();
     private final Rect mTmpNonDecorBounds = new Rect();
@@ -479,6 +464,11 @@
      */
     ITaskOrganizer mTaskOrganizer;
 
+    /**
+     * Last Picture-in-Picture params applicable to the task. Updated when the app
+     * enters Picture-in-Picture or when setPictureInPictureParams is called.
+     */
+    PictureInPictureParams mPictureInPictureParams = new PictureInPictureParams.Builder().build();
 
     /**
      * Don't use constructor directly. Use {@link #create(ActivityTaskManagerService, int,
@@ -495,8 +485,8 @@
                 true /*neverRelinquishIdentity*/,
                 _taskDescription != null ? _taskDescription : new TaskDescription(),
                 _taskId, INVALID_TASK_ID, INVALID_TASK_ID, 0 /*taskAffiliationColor*/,
-                info.applicationInfo.uid, info.packageName, info.resizeMode,
-                info.supportsPictureInPicture(), false /*_realActivitySuspended*/,
+                info.applicationInfo.uid, info.packageName, null /* default featureId */,
+                info.resizeMode, info.supportsPictureInPicture(), false /*_realActivitySuspended*/,
                 false /*userSetupComplete*/, INVALID_MIN_SIZE, INVALID_MIN_SIZE, info,
                 _voiceSession, _voiceInteractor, stack);
     }
@@ -518,18 +508,17 @@
     }
 
     /** Don't use constructor directly. This is only used by XML parser. */
-    Task(ActivityTaskManagerService atmService, int _taskId, Intent _intent,
-            Intent _affinityIntent, String _affinity, String _rootAffinity,
-            ComponentName _realActivity, ComponentName _origActivity, boolean _rootWasReset,
-            boolean _autoRemoveRecents, boolean _askedCompatMode, int _userId,
-            int _effectiveUid, String _lastDescription,
+    Task(ActivityTaskManagerService atmService, int _taskId, Intent _intent, Intent _affinityIntent,
+            String _affinity, String _rootAffinity, ComponentName _realActivity,
+            ComponentName _origActivity, boolean _rootWasReset, boolean _autoRemoveRecents,
+            boolean _askedCompatMode, int _userId, int _effectiveUid, String _lastDescription,
             long lastTimeMoved, boolean neverRelinquishIdentity,
             TaskDescription _lastTaskDescription, int taskAffiliation, int prevTaskId,
             int nextTaskId, int taskAffiliationColor, int callingUid, String callingPackage,
-            int resizeMode, boolean supportsPictureInPicture, boolean _realActivitySuspended,
-            boolean userSetupComplete, int minWidth, int minHeight, ActivityInfo info,
-            IVoiceInteractionSession _voiceSession, IVoiceInteractor _voiceInteractor,
-            ActivityStack stack) {
+            @Nullable String callingFeatureId, int resizeMode, boolean supportsPictureInPicture,
+            boolean _realActivitySuspended, boolean userSetupComplete, int minWidth, int minHeight,
+            ActivityInfo info, IVoiceInteractionSession _voiceSession,
+            IVoiceInteractor _voiceInteractor, ActivityStack stack) {
         super(atmService.mWindowManager);
 
         EventLogTags.writeWmTaskCreated(_taskId, stack != null ? getRootTaskId() : INVALID_TASK_ID);
@@ -568,6 +557,7 @@
         mNextAffiliateTaskId = nextTaskId;
         mCallingUid = callingUid;
         mCallingPackage = callingPackage;
+        mCallingFeatureId = callingFeatureId;
         mResizeMode = resizeMode;
         if (info != null) {
             setIntent(_intent, info);
@@ -914,6 +904,7 @@
     void setIntent(ActivityRecord r) {
         mCallingUid = r.launchedFromUid;
         mCallingPackage = r.launchedFromPackage;
+        mCallingFeatureId = r.launchedFromFeatureId;
         setIntent(r.intent, r.info);
         setLockTaskAuth(r);
 
@@ -1257,7 +1248,7 @@
         if (affinityIntent != null) return affinityIntent;
         // Probably a task that contains other tasks, so return the intent for the top task?
         final Task topTask = getTopMostTask();
-        return topTask != null ? topTask.getBaseIntent() : null;
+        return (topTask != this && topTask != null) ? topTask.getBaseIntent() : null;
     }
 
     /** Returns the first non-finishing activity from the bottom. */
@@ -1369,6 +1360,7 @@
             isPersistable = r.isPersistable();
             mCallingUid = r.launchedFromUid;
             mCallingPackage = r.launchedFromPackage;
+            mCallingFeatureId = r.launchedFromFeatureId;
             // Clamp to [1, max].
             maxRecents = Math.min(Math.max(r.info.maxRecents, 1),
                     ActivityTaskManager.getMaxAppRecentsLimitStatic());
@@ -1445,18 +1437,27 @@
     }
 
     /**
-     * @return whether or not there are ONLY task overlay activities in the stack.
+     * @return whether or not there are ONLY task overlay activities in the task.
      *         If {@param includeFinishing} is set, then don't ignore finishing activities in the
      *         check. If there are no task overlay activities, this call returns false.
      */
     boolean onlyHasTaskOverlayActivities(boolean includeFinishing) {
-        if (getChildCount() == 0) {
-            return false;
+        int count = 0;
+        for (int i = getChildCount() - 1; i >= 0; i--) {
+            final ActivityRecord r = getChildAt(i).asActivityRecord();
+            if (r == null) {
+                // Has a child that is other than Activity.
+                return false;
+            }
+            if (!includeFinishing && r.finishing) {
+                continue;
+            }
+            if (!r.isTaskOverlay()) {
+                return false;
+            }
+            count++;
         }
-        if (includeFinishing) {
-            return getActivity((r) -> r.isTaskOverlay()) != null;
-        }
-        return getActivity((r) -> !r.finishing && r.isTaskOverlay()) != null;
+        return count > 0;
     }
 
     private boolean autoRemoveFromRecents() {
@@ -2383,6 +2384,15 @@
         return getRootTask() == this;
     }
 
+    boolean isLeafTask() {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            if (mChildren.get(i).asTask() != null) {
+                return false;
+            }
+        }
+        return true;
+    }
+
     int getDescendantTaskCount() {
         final int[] currentCount = {0};
         final PooledConsumer c = PooledLambda.obtainConsumer((t, count) -> { count[0]++; },
@@ -3060,17 +3070,11 @@
         return matchParentBounds();
     }
 
+    @Override
     void forAllTasks(Consumer<Task> callback, boolean traverseTopToBottom, Task excludedTask) {
-        if (traverseTopToBottom) {
-            super.forAllTasks(callback, traverseTopToBottom);
-            if (excludedTask != this) {
-                callback.accept(this);
-            }
-        } else {
-            super.forAllTasks(callback, traverseTopToBottom);
-            if (excludedTask != this) {
-                callback.accept(this);
-            }
+        super.forAllTasks(callback, traverseTopToBottom, excludedTask);
+        if (excludedTask != this) {
+            callback.accept(this);
         }
     }
 
@@ -3160,29 +3164,6 @@
         }
     }
 
-    // TODO(proto-merge): Remove once protos for TaskRecord and Task are merged.
-    void dumpDebugInnerTaskOnly(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
-            return;
-        }
-
-        final long token = proto.start(fieldId);
-        super.dumpDebug(proto, WINDOW_CONTAINER, logLevel);
-        proto.write(TaskProto.ID, mTaskId);
-        forAllActivities((r) -> {
-            r.dumpDebug(proto, ACTIVITY);
-        });
-        proto.write(FILLS_PARENT, matchParentBounds());
-        getBounds().dumpDebug(proto, TaskProto.BOUNDS);
-        mOverrideDisplayedBounds.dumpDebug(proto, DISPLAYED_BOUNDS);
-        if (mSurfaceControl != null) {
-            proto.write(SURFACE_WIDTH, mSurfaceControl.getWidth());
-            proto.write(SURFACE_HEIGHT, mSurfaceControl.getHeight());
-        }
-        proto.end(token);
-    }
-
     @Override
     void dump(PrintWriter pw, String prefix, boolean dumpAll) {
         super.dump(pw, prefix, dumpAll);
@@ -3214,7 +3195,10 @@
         info.taskId = mTaskId;
         info.displayId = getDisplayId();
         info.isRunning = getTopNonFinishingActivity() != null;
-        info.baseIntent = new Intent(getBaseIntent());
+        final Intent baseIntent = getBaseIntent();
+        // Make a copy of base intent because this is like a snapshot info.
+        // Besides, {@link RecentTasks#getRecentTasksImpl} may modify it.
+        info.baseIntent = baseIntent == null ? new Intent() : new Intent(baseIntent);
         info.baseActivity = mReuseActivitiesReport.base != null
                 ? mReuseActivitiesReport.base.intent.getComponent()
                 : null;
@@ -3227,8 +3211,22 @@
         info.lastActiveTime = lastActiveTime;
         info.taskDescription = new ActivityManager.TaskDescription(getTaskDescription());
         info.supportsSplitScreenMultiWindow = supportsSplitScreenWindowingMode();
-        info.resizeMode = mResizeMode;
         info.configuration.setTo(getConfiguration());
+        info.token = mRemoteToken;
+        // Get's the first non-undefined activity type among this and children. Can't use
+        // configuration.windowConfiguration because that would only be this level.
+        info.topActivityType = getActivityType();
+
+        //TODO (AM refactor): Just use local once updateEffectiveIntent is run during all child
+        //                    order changes.
+        final Task top = getTopMostTask();
+        info.resizeMode = top != null ? top.mResizeMode : mResizeMode;
+
+        if (mPictureInPictureParams.empty()) {
+            info.pictureInPictureParams = null;
+        } else {
+            info.pictureInPictureParams = mPictureInPictureParams;
+        }
     }
 
     /**
@@ -3261,6 +3259,7 @@
         pw.print(" mCallingUid="); UserHandle.formatUid(pw, mCallingUid);
         pw.print(" mUserSetupComplete="); pw.print(mUserSetupComplete);
         pw.print(" mCallingPackage="); pw.println(mCallingPackage);
+        pw.print(" mCallingFeatureId="); pw.println(mCallingFeatureId);
         if (affinity != null || rootAffinity != null) {
             pw.print(prefix); pw.print("affinity="); pw.print(affinity);
             if (affinity == null || !affinity.equals(rootAffinity)) {
@@ -3375,7 +3374,7 @@
         if (affinity != null) {
             sb.append(" A=");
             sb.append(affinity);
-        } else if (intent != null) {
+        } else if (intent != null && intent.getComponent() != null) {
             sb.append(" I=");
             sb.append(intent.getComponent().flattenToShortString());
         } else if (affinityIntent != null && affinityIntent.getComponent() != null) {
@@ -3388,43 +3387,6 @@
         return toString();
     }
 
-    void dumpDebugInner(ProtoOutputStream proto, long fieldId,
-            @WindowTraceLogLevel int logLevel) {
-        if (logLevel == WindowTraceLogLevel.CRITICAL && !isVisible()) {
-            return;
-        }
-
-        final long token = proto.start(fieldId);
-        dumpDebugInnerTaskOnly(proto, TASK, logLevel);
-        proto.write(com.android.server.am.TaskRecordProto.ID, mTaskId);
-
-        forAllActivities((r) -> {
-            r.dumpDebug(proto, ACTIVITIES);
-        });
-        proto.write(STACK_ID, getRootTaskId());
-        if (mLastNonFullscreenBounds != null) {
-            mLastNonFullscreenBounds.dumpDebug(proto, LAST_NON_FULLSCREEN_BOUNDS);
-        }
-        if (realActivity != null) {
-            proto.write(REAL_ACTIVITY, realActivity.flattenToShortString());
-        }
-        if (origActivity != null) {
-            proto.write(ORIG_ACTIVITY, origActivity.flattenToShortString());
-        }
-        proto.write(ACTIVITY_TYPE, getActivityType());
-        proto.write(RESIZE_MODE, mResizeMode);
-        // TODO: Remove, no longer needed with windowingMode.
-        proto.write(FULLSCREEN, matchParentBounds());
-
-        if (!matchParentBounds()) {
-            final Rect bounds = getRequestedOverrideBounds();
-            bounds.dumpDebug(proto, com.android.server.am.TaskRecordProto.BOUNDS);
-        }
-        proto.write(MIN_WIDTH, mMinWidth);
-        proto.write(MIN_HEIGHT, mMinHeight);
-        proto.end(token);
-    }
-
     /** @see #getNumRunningActivities(TaskActivitiesReport) */
     static class TaskActivitiesReport implements Consumer<ActivityRecord> {
         int numRunning;
@@ -3507,6 +3469,8 @@
         out.attribute(null, ATTR_NEXT_AFFILIATION, String.valueOf(mNextAffiliateTaskId));
         out.attribute(null, ATTR_CALLING_UID, String.valueOf(mCallingUid));
         out.attribute(null, ATTR_CALLING_PACKAGE, mCallingPackage == null ? "" : mCallingPackage);
+        out.attribute(null, ATTR_CALLING_FEATURE_ID,
+                mCallingFeatureId == null ? "" : mCallingFeatureId);
         out.attribute(null, ATTR_RESIZE_MODE, String.valueOf(mResizeMode));
         out.attribute(null, ATTR_SUPPORTS_PICTURE_IN_PICTURE,
                 String.valueOf(mSupportsPictureInPicture));
@@ -3620,16 +3584,17 @@
                 long lastTimeMoved, boolean neverRelinquishIdentity,
                 TaskDescription lastTaskDescription, int taskAffiliation, int prevTaskId,
                 int nextTaskId, int taskAffiliationColor, int callingUid, String callingPackage,
-                int resizeMode, boolean supportsPictureInPicture, boolean realActivitySuspended,
+                @Nullable String callingFeatureId, int resizeMode,
+                boolean supportsPictureInPicture, boolean realActivitySuspended,
                 boolean userSetupComplete, int minWidth, int minHeight, ActivityStack stack) {
             return new ActivityStack(service, taskId, intent, affinityIntent, affinity,
                     rootAffinity, realActivity, origActivity, rootWasReset, autoRemoveRecents,
                     askedCompatMode, userId, effectiveUid, lastDescription,
                     lastTimeMoved, neverRelinquishIdentity, lastTaskDescription, taskAffiliation,
                     prevTaskId, nextTaskId, taskAffiliationColor, callingUid, callingPackage,
-                    resizeMode, supportsPictureInPicture, realActivitySuspended, userSetupComplete,
-                    minWidth, minHeight, null /*ActivityInfo*/, null /*_voiceSession*/,
-                    null /*_voiceInteractor*/, stack);
+                    callingFeatureId, resizeMode, supportsPictureInPicture, realActivitySuspended,
+                    userSetupComplete, minWidth, minHeight, null /*ActivityInfo*/,
+                    null /*_voiceSession*/, null /*_voiceInteractor*/, stack);
         }
 
         Task restoreFromXml(XmlPullParser in, ActivityStackSupervisor stackSupervisor)
@@ -3662,6 +3627,7 @@
             int nextTaskId = INVALID_TASK_ID;
             int callingUid = -1;
             String callingPackage = "";
+            String callingFeatureId = null;
             int resizeMode = RESIZE_MODE_FORCE_RESIZEABLE;
             boolean supportsPictureInPicture = false;
             Rect lastNonFullscreenBounds = null;
@@ -3742,6 +3708,9 @@
                     case ATTR_CALLING_PACKAGE:
                         callingPackage = attrValue;
                         break;
+                    case ATTR_CALLING_FEATURE_ID:
+                        callingFeatureId = attrValue;
+                        break;
                     case ATTR_RESIZE_MODE:
                         resizeMode = Integer.parseInt(attrValue);
                         break;
@@ -3843,8 +3812,8 @@
                     autoRemoveRecents, askedCompatMode, userId, effectiveUid, lastDescription,
                     lastTimeOnTop, neverRelinquishIdentity, taskDescription,
                     taskAffiliation, prevTaskId, nextTaskId, taskAffiliationColor, callingUid,
-                    callingPackage, resizeMode, supportsPictureInPicture, realActivitySuspended,
-                    userSetupComplete, minWidth, minHeight, null /*stack*/);
+                    callingPackage, callingFeatureId, resizeMode, supportsPictureInPicture,
+                    realActivitySuspended, userSetupComplete, minWidth, minHeight, null /*stack*/);
             task.mLastNonFullscreenBounds = lastNonFullscreenBounds;
             task.setBounds(lastNonFullscreenBounds);
 
@@ -3865,7 +3834,12 @@
 
     boolean isControlledByTaskOrganizer() {
         final Task rootTask = getRootTask();
-        return rootTask == this && rootTask.mTaskOrganizer != null;
+        return rootTask == this && rootTask.mTaskOrganizer != null
+                // TODO(task-hierarchy): Figure out how to control nested tasks.
+                // For now, if this is in a tile let WM drive.
+                && !(rootTask instanceof TaskTile)
+                && !(rootTask instanceof ActivityStack
+                        && ((ActivityStack) rootTask).getTile() != null);
     }
 
     @Override
@@ -3893,6 +3867,9 @@
    }
 
     void setTaskOrganizer(ITaskOrganizer organizer) {
+        if (mTaskOrganizer == organizer) {
+            return;
+        }
         // Let the old organizer know it has lost control.
         if (mTaskOrganizer != null) {
             sendTaskVanished();
@@ -3918,8 +3895,6 @@
     public void updateSurfacePosition() {
         // Avoid fighting with the TaskOrganizer over Surface position.
         if (isControlledByTaskOrganizer()) {
-            getPendingTransaction().setPosition(mSurfaceControl, 0, 0);
-            scheduleAnimation();
             return;
         } else {
             super.updateSurfacePosition();
@@ -3990,4 +3965,10 @@
     void onWindowFocusChanged(boolean hasFocus) {
         updateShadowsRadius(hasFocus, getPendingTransaction());
     }
+
+    void setPictureInPictureParams(PictureInPictureParams p) {
+        mPictureInPictureParams.copyOnlySet(p);
+        mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                this, true /* force */);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/TaskOrganizerController.java b/services/core/java/com/android/server/wm/TaskOrganizerController.java
index 283be40..4b13a0c 100644
--- a/services/core/java/com/android/server/wm/TaskOrganizerController.java
+++ b/services/core/java/com/android/server/wm/TaskOrganizerController.java
@@ -16,25 +16,57 @@
 
 package com.android.server.wm;
 
+import static android.Manifest.permission.MANAGE_ACTIVITY_STACKS;
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
 import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
 
+import static com.android.server.wm.ActivityStackSupervisor.PRESERVE_WINDOWS;
+import static com.android.server.wm.WindowContainer.POSITION_BOTTOM;
+import static com.android.server.wm.WindowContainer.POSITION_TOP;
+
+import android.annotation.Nullable;
+import android.app.ActivityManager.RunningTaskInfo;
+import android.app.ITaskOrganizerController;
+import android.app.WindowConfiguration;
+import android.content.pm.ActivityInfo;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.Binder;
 import android.os.IBinder;
 import android.os.RemoteException;
+import android.util.ArraySet;
 import android.util.Slog;
 import android.view.ITaskOrganizer;
+import android.view.IWindowContainer;
 import android.view.SurfaceControl;
+import android.view.WindowContainerTransaction;
+
+import com.android.internal.util.ArrayUtils;
+import com.android.internal.util.function.pooled.PooledConsumer;
+import com.android.internal.util.function.pooled.PooledLambda;
 
 import java.util.ArrayList;
 import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
 
 /**
  * Stores the TaskOrganizers associated with a given windowing mode and
  * their associated state.
  */
-class TaskOrganizerController {
+class TaskOrganizerController extends ITaskOrganizerController.Stub
+    implements BLASTSyncEngine.TransactionReadyListener {
     private static final String TAG = "TaskOrganizerController";
 
-    private WindowManagerGlobalLock mGlobalLock;
+    /** Flag indicating that an applied transaction may have effected lifecycle */
+    private static final int TRANSACT_EFFECTS_CLIENT_CONFIG = 1;
+    private static final int TRANSACT_EFFECTS_LIFECYCLE = 1 << 1;
+
+    private final WindowManagerGlobalLock mGlobalLock;
 
     private class DeathRecipient implements IBinder.DeathRecipient {
         int mWindowingMode;
@@ -48,11 +80,10 @@
         @Override
         public void binderDied() {
             synchronized (mGlobalLock) {
-                final TaskOrganizerState state = mTaskOrganizerStates.get(mTaskOrganizer);
-                for (int i = 0; i < state.mOrganizedTasks.size(); i++) {
-                    state.mOrganizedTasks.get(i).taskOrganizerDied();
-                }
-                mTaskOrganizerStates.remove(mTaskOrganizer);
+                final TaskOrganizerState state =
+                    mTaskOrganizerStates.get(mTaskOrganizer.asBinder());
+                state.releaseTasks();
+                mTaskOrganizerStates.remove(mTaskOrganizer.asBinder());
                 if (mTaskOrganizersForWindowingMode.get(mWindowingMode) == mTaskOrganizer) {
                     mTaskOrganizersForWindowingMode.remove(mWindowingMode);
                 }
@@ -63,66 +94,132 @@
     class TaskOrganizerState {
         ITaskOrganizer mOrganizer;
         DeathRecipient mDeathRecipient;
+        int mWindowingMode;
 
         ArrayList<Task> mOrganizedTasks = new ArrayList<>();
 
+        // Save the TaskOrganizer which we replaced registration for
+        // so it can be re-registered if we unregister.
+        TaskOrganizerState mReplacementFor;
+        boolean mDisposed = false;
+
+
+        TaskOrganizerState(ITaskOrganizer organizer, int windowingMode,
+                TaskOrganizerState replacing) {
+            mOrganizer = organizer;
+            mDeathRecipient = new DeathRecipient(organizer, windowingMode);
+            try {
+                organizer.asBinder().linkToDeath(mDeathRecipient, 0);
+            } catch (RemoteException e) {
+                Slog.e(TAG, "TaskOrganizer failed to register death recipient");
+            }
+            mWindowingMode = windowingMode;
+            mReplacementFor = replacing;
+        }
+
         void addTask(Task t) {
             mOrganizedTasks.add(t);
+            try {
+                mOrganizer.taskAppeared(t.getTaskInfo());
+            } catch (Exception e) {
+                Slog.e(TAG, "Exception sending taskAppeared callback" + e);
+            }
         }
 
         void removeTask(Task t) {
+            try {
+                mOrganizer.taskVanished(t.getRemoteToken());
+            } catch (Exception e) {
+                Slog.e(TAG, "Exception sending taskVanished callback" + e);
+            }
             mOrganizedTasks.remove(t);
         }
 
-        TaskOrganizerState(ITaskOrganizer organizer, DeathRecipient deathRecipient) {
-            mOrganizer = organizer;
-            mDeathRecipient = deathRecipient;
+        void dispose() {
+            mDisposed = true;
+            releaseTasks();
+            handleReplacement();
+        }
+
+        void releaseTasks() {
+            for (int i = mOrganizedTasks.size() - 1; i >= 0; i--) {
+                final Task t = mOrganizedTasks.get(i);
+                t.taskOrganizerDied();
+                removeTask(t);
+            }
+        }
+
+        void handleReplacement() {
+            if (mReplacementFor != null && !mReplacementFor.mDisposed) {
+                mTaskOrganizersForWindowingMode.put(mWindowingMode, mReplacementFor);
+            }
+        }
+
+        void unlinkDeath() {
+            mDisposed = true;
+            mOrganizer.asBinder().unlinkToDeath(mDeathRecipient, 0);
         }
     };
 
 
     final HashMap<Integer, TaskOrganizerState> mTaskOrganizersForWindowingMode = new HashMap();
-    final HashMap<ITaskOrganizer, TaskOrganizerState> mTaskOrganizerStates = new HashMap();
+    final HashMap<IBinder, TaskOrganizerState> mTaskOrganizerStates = new HashMap();
 
     final HashMap<Integer, ITaskOrganizer> mTaskOrganizersByPendingSyncId = new HashMap();
 
+    private final WeakHashMap<Task, RunningTaskInfo> mLastSentTaskInfos = new WeakHashMap<>();
+    private final ArrayList<Task> mPendingTaskInfoChanges = new ArrayList<>();
+
+    private final BLASTSyncEngine mBLASTSyncEngine = new BLASTSyncEngine();
+
     final ActivityTaskManagerService mService;
 
-    TaskOrganizerController(ActivityTaskManagerService atm, WindowManagerGlobalLock lock) {
+    RunningTaskInfo mTmpTaskInfo;
+
+    TaskOrganizerController(ActivityTaskManagerService atm) {
         mService = atm;
-        mGlobalLock = lock;
+        mGlobalLock = atm.mGlobalLock;
     }
 
-    private void clearIfNeeded(int windowingMode) {
-        final TaskOrganizerState oldState = mTaskOrganizersForWindowingMode.get(windowingMode);
-        if (oldState != null) {
-            oldState.mOrganizer.asBinder().unlinkToDeath(oldState.mDeathRecipient, 0);
-        }
+    private void enforceStackPermission(String func) {
+        mService.mAmInternal.enforceCallingPermission(MANAGE_ACTIVITY_STACKS, func);
     }
 
     /**
      * Register a TaskOrganizer to manage tasks as they enter the given windowing mode.
      * If there was already a TaskOrganizer for this windowing mode it will be evicted
-     * and receive taskVanished callbacks in the process.
+     * but will continue to organize it's existing tasks.
      */
-    void registerTaskOrganizer(ITaskOrganizer organizer, int windowingMode) {
-        if (windowingMode != WINDOWING_MODE_PINNED) {
-            throw new UnsupportedOperationException(
-                    "As of now only Pinned windowing mode is supported for registerTaskOrganizer");
-
+    @Override
+    public void registerTaskOrganizer(ITaskOrganizer organizer, int windowingMode) {
+        if (windowingMode != WINDOWING_MODE_PINNED
+                && windowingMode != WINDOWING_MODE_SPLIT_SCREEN_PRIMARY
+                && windowingMode != WINDOWING_MODE_SPLIT_SCREEN_SECONDARY
+                && windowingMode != WINDOWING_MODE_MULTI_WINDOW) {
+            throw new UnsupportedOperationException("As of now only Pinned/Split/Multiwindow"
+                    + " windowing modes are supported for registerTaskOrganizer");
         }
-        clearIfNeeded(windowingMode);
-        DeathRecipient dr = new DeathRecipient(organizer, windowingMode);
+        enforceStackPermission("registerTaskOrganizer()");
+        final long origId = Binder.clearCallingIdentity();
         try {
-            organizer.asBinder().linkToDeath(dr, 0);
-        } catch (RemoteException e) {
-            Slog.e(TAG, "TaskOrganizer failed to register death recipient");
+            synchronized (mGlobalLock) {
+                final TaskOrganizerState state = new TaskOrganizerState(organizer, windowingMode,
+                        mTaskOrganizersForWindowingMode.get(windowingMode));
+                mTaskOrganizersForWindowingMode.put(windowingMode, state);
+                mTaskOrganizerStates.put(organizer.asBinder(), state);
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
         }
+    }
 
-        final TaskOrganizerState state = new TaskOrganizerState(organizer, dr);
-        mTaskOrganizersForWindowingMode.put(windowingMode, state);
-
-        mTaskOrganizerStates.put(organizer, state);
+    void unregisterTaskOrganizer(ITaskOrganizer organizer) {
+        final TaskOrganizerState state = mTaskOrganizerStates.get(organizer.asBinder());
+        state.unlinkDeath();
+        if (mTaskOrganizersForWindowingMode.get(state.mWindowingMode) == state) {
+            mTaskOrganizersForWindowingMode.remove(state.mWindowingMode);
+        }
+        state.dispose();
     }
 
     ITaskOrganizer getTaskOrganizer(int windowingMode) {
@@ -133,35 +230,447 @@
         return state.mOrganizer;
     }
 
-    private void sendTaskAppeared(ITaskOrganizer organizer, Task task) {
-        try {
-            organizer.taskAppeared(task.getRemoteToken(), task.getTaskInfo());
-        } catch (Exception e) {
-            Slog.e(TAG, "Exception sending taskAppeared callback" + e);
-        }
-    }
-
-    private void sendTaskVanished(ITaskOrganizer organizer, Task task) {
-        try {
-            organizer.taskVanished(task.getRemoteToken());
-        } catch (Exception e) {
-            Slog.e(TAG, "Exception sending taskVanished callback" + e);
-        }
-    }
-
     void onTaskAppeared(ITaskOrganizer organizer, Task task) {
-        TaskOrganizerState state = mTaskOrganizerStates.get(organizer);
-
+        final TaskOrganizerState state = mTaskOrganizerStates.get(organizer.asBinder());
         state.addTask(task);
-        sendTaskAppeared(organizer, task);
     }
 
     void onTaskVanished(ITaskOrganizer organizer, Task task) {
-        final TaskOrganizerState state = mTaskOrganizerStates.get(organizer);
-        sendTaskVanished(organizer, task);
-
-        // This could trigger TaskAppeared for other tasks in the same stack so make sure
-        // we do this AFTER sending taskVanished.
+        final TaskOrganizerState state = mTaskOrganizerStates.get(organizer.asBinder());
         state.removeTask(task);
     }
+
+    @Override
+    public RunningTaskInfo createRootTask(int displayId, int windowingMode) {
+        enforceStackPermission("createRootTask()");
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                DisplayContent display = mService.mRootWindowContainer.getDisplayContent(displayId);
+                if (display == null) {
+                    return null;
+                }
+                final int nextId = display.getNextStackId();
+                TaskTile tile = new TaskTile(mService, nextId, windowingMode);
+                display.addTile(tile);
+                RunningTaskInfo out = new RunningTaskInfo();
+                tile.fillTaskInfo(out);
+                mLastSentTaskInfos.put(tile, out);
+                return out;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    @Override
+    public boolean deleteRootTask(IWindowContainer token) {
+        enforceStackPermission("deleteRootTask()");
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                TaskTile tile = TaskTile.forToken(token.asBinder());
+                if (tile == null) {
+                    return false;
+                }
+                tile.removeImmediately();
+                return true;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    void dispatchPendingTaskInfoChanges() {
+        if (mService.mWindowManager.mWindowPlacerLocked.isLayoutDeferred()) {
+            return;
+        }
+        for (int i = 0, n = mPendingTaskInfoChanges.size(); i < n; ++i) {
+            dispatchTaskInfoChanged(mPendingTaskInfoChanges.get(i), false /* force */);
+        }
+        mPendingTaskInfoChanges.clear();
+    }
+
+    void dispatchTaskInfoChanged(Task task, boolean force) {
+        if (!force && mService.mWindowManager.mWindowPlacerLocked.isLayoutDeferred()) {
+            // Defer task info reporting while layout is deferred. This is because layout defer
+            // blocks tend to do lots of re-ordering which can mess up animations in receivers.
+            mPendingTaskInfoChanges.remove(task);
+            mPendingTaskInfoChanges.add(task);
+            return;
+        }
+        RunningTaskInfo lastInfo = mLastSentTaskInfos.get(task);
+        if (mTmpTaskInfo == null) {
+            mTmpTaskInfo = new RunningTaskInfo();
+        }
+        task.fillTaskInfo(mTmpTaskInfo);
+        boolean changed = lastInfo == null
+                || mTmpTaskInfo.topActivityType != lastInfo.topActivityType
+                || mTmpTaskInfo.isResizable() != lastInfo.isResizable();
+        if (!(changed || force)) {
+            return;
+        }
+        final RunningTaskInfo newInfo = mTmpTaskInfo;
+        mLastSentTaskInfos.put(task, mTmpTaskInfo);
+        // Since we've stored this, clean up the reference so a new one will be created next time.
+        // Transferring it this way means we only have to construct new RunningTaskInfos when they
+        // change.
+        mTmpTaskInfo = null;
+
+        if (task.mTaskOrganizer != null) {
+            try {
+                task.mTaskOrganizer.onTaskInfoChanged(newInfo);
+            } catch (RemoteException e) {
+            }
+        }
+    }
+
+    @Override
+    public IWindowContainer getImeTarget(int displayId) {
+        enforceStackPermission("getImeTarget()");
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                DisplayContent dc = mService.mWindowManager.mRoot
+                        .getDisplayContent(displayId);
+                if (dc == null || dc.mInputMethodTarget == null) {
+                    return null;
+                }
+                // Avoid WindowState#getRootTask() so we don't attribute system windows to a task.
+                final Task task = dc.mInputMethodTarget.getTask();
+                if (task == null) {
+                    return null;
+                }
+                ActivityStack rootTask = (ActivityStack) task.getRootTask();
+                final TaskTile tile = rootTask.getTile();
+                if (tile != null) {
+                    rootTask = tile;
+                }
+                return rootTask.mRemoteToken;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    @Override
+    public void setLaunchRoot(int displayId, @Nullable IWindowContainer tile) {
+        enforceStackPermission("setLaunchRoot()");
+        final long origId = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                DisplayContent display = mService.mRootWindowContainer.getDisplayContent(displayId);
+                if (display == null) {
+                    return;
+                }
+                TaskTile taskTile = tile == null ? null : TaskTile.forToken(tile.asBinder());
+                if (taskTile == null) {
+                    display.mLaunchTile = null;
+                    return;
+                }
+                if (taskTile.getDisplay() != display) {
+                    throw new RuntimeException("Can't set launch root for display " + displayId
+                            + " to task on display " + taskTile.getDisplay().getDisplayId());
+                }
+                display.mLaunchTile = taskTile;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(origId);
+        }
+    }
+
+    @Override
+    public List<RunningTaskInfo> getChildTasks(IWindowContainer parent,
+            @Nullable int[] activityTypes) {
+        enforceStackPermission("getChildTasks()");
+        final long ident = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                if (parent == null) {
+                    throw new IllegalArgumentException("Can't get children of null parent");
+                }
+                final WindowContainer container = WindowContainer.fromBinder(parent.asBinder());
+                if (container == null) {
+                    Slog.e(TAG, "Can't get children of " + parent + " because it is not valid.");
+                    return null;
+                }
+                // For now, only support returning children of persistent root tasks (of which the
+                // only current implementation is TaskTile).
+                if (!(container instanceof TaskTile)) {
+                    Slog.w(TAG, "Can only get children of root tasks created via createRootTask");
+                    return null;
+                }
+                ArrayList<RunningTaskInfo> out = new ArrayList<>();
+                // Tiles aren't real parents, so we need to go through stacks on the display to
+                // ensure correct ordering.
+                final DisplayContent dc = container.getDisplayContent();
+                for (int i = dc.getStackCount() - 1; i >= 0; --i) {
+                    final ActivityStack as = dc.getStackAt(i);
+                    if (as.getTile() == container) {
+                        if (activityTypes != null
+                                && !ArrayUtils.contains(activityTypes, as.getActivityType())) {
+                            continue;
+                        }
+                        final RunningTaskInfo info = new RunningTaskInfo();
+                        as.fillTaskInfo(info);
+                        out.add(info);
+                    }
+                }
+                return out;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+    }
+
+    @Override
+    public List<RunningTaskInfo> getRootTasks(int displayId, @Nullable int[] activityTypes) {
+        enforceStackPermission("getRootTasks()");
+        final long ident = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                final DisplayContent dc =
+                        mService.mRootWindowContainer.getDisplayContent(displayId);
+                if (dc == null) {
+                    throw new IllegalArgumentException("Display " + displayId + " doesn't exist");
+                }
+                ArrayList<RunningTaskInfo> out = new ArrayList<>();
+                for (int i = dc.getStackCount() - 1; i >= 0; --i) {
+                    final ActivityStack task = dc.getStackAt(i);
+                    if (task.getTile() != null) {
+                        // a tile is supposed to look like a parent, so don't include their
+                        // "children" here. They can be accessed via getChildTasks()
+                        continue;
+                    }
+                    if (activityTypes != null
+                            && !ArrayUtils.contains(activityTypes, task.getActivityType())) {
+                        continue;
+                    }
+                    final RunningTaskInfo info = new RunningTaskInfo();
+                    task.fillTaskInfo(info);
+                    out.add(info);
+                }
+                return out;
+            }
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+    }
+
+    private int sanitizeAndApplyChange(WindowContainer container,
+            WindowContainerTransaction.Change change) {
+        if (!(container instanceof Task)) {
+            throw new RuntimeException("Invalid token in task transaction");
+        }
+        // The "client"-facing API should prevent bad changes; however, just in case, sanitize
+        // masks here.
+        int configMask = change.getConfigSetMask();
+        int windowMask = change.getWindowSetMask();
+        configMask &= ActivityInfo.CONFIG_WINDOW_CONFIGURATION
+                | ActivityInfo.CONFIG_SMALLEST_SCREEN_SIZE;
+        windowMask &= WindowConfiguration.WINDOW_CONFIG_BOUNDS;
+        int effects = 0;
+        if (configMask != 0) {
+            Configuration c = new Configuration(container.getRequestedOverrideConfiguration());
+            c.setTo(change.getConfiguration(), configMask, windowMask);
+            container.onRequestedOverrideConfigurationChanged(c);
+            // TODO(b/145675353): remove the following once we could apply new bounds to the
+            // pinned stack together with its children.
+            resizePinnedStackIfNeeded(container, configMask, windowMask, c);
+            effects |= TRANSACT_EFFECTS_CLIENT_CONFIG;
+        }
+        if ((change.getChangeMask() & WindowContainerTransaction.Change.CHANGE_FOCUSABLE) != 0) {
+            if (container.setFocusable(change.getFocusable())) {
+                effects |= TRANSACT_EFFECTS_LIFECYCLE;
+            }
+        }
+        return effects;
+    }
+
+    private int sanitizeAndApplyHierarchyOp(WindowContainer container,
+            WindowContainerTransaction.HierarchyOp hop) {
+        if (!(container instanceof Task)) {
+            throw new IllegalArgumentException("Invalid container in hierarchy op");
+        }
+        if (hop.isReparent()) {
+            // special case for tiles since they are "virtual" parents
+            if (container instanceof ActivityStack && ((ActivityStack) container).isRootTask()) {
+                ActivityStack as = (ActivityStack) container;
+                TaskTile newParent = hop.getNewParent() == null ? null
+                        : (TaskTile) WindowContainer.fromBinder(hop.getNewParent());
+                if (as.getTile() != newParent) {
+                    if (as.getTile() != null) {
+                        as.getTile().removeChild(as);
+                    }
+                    if (newParent != null) {
+                        if (!as.affectedBySplitScreenResize()) {
+                            return 0;
+                        }
+                        newParent.addChild(as, POSITION_TOP);
+                    }
+                }
+                if (hop.getToTop()) {
+                    as.getDisplay().positionStackAtTop(as, false /* includingParents */);
+                } else {
+                    as.getDisplay().positionStackAtBottom(as);
+                }
+            } else if (container instanceof Task) {
+                throw new RuntimeException("Reparenting leaf Tasks is not supported now.");
+            }
+        } else {
+            // Ugh, of course ActivityStack has its own special reorder logic...
+            if (container instanceof ActivityStack && ((ActivityStack) container).isRootTask()) {
+                ActivityStack as = (ActivityStack) container;
+                if (hop.getToTop()) {
+                    as.getDisplay().positionStackAtTop(as, false /* includingParents */);
+                } else {
+                    as.getDisplay().positionStackAtBottom(as);
+                }
+            } else {
+                container.getParent().positionChildAt(
+                        hop.getToTop() ? POSITION_TOP : POSITION_BOTTOM,
+                        container, false /* includingParents */);
+            }
+        }
+        return TRANSACT_EFFECTS_LIFECYCLE;
+    }
+
+    private void resizePinnedStackIfNeeded(ConfigurationContainer container, int configMask,
+            int windowMask, Configuration config) {
+        if ((container instanceof ActivityStack)
+                && ((configMask & ActivityInfo.CONFIG_WINDOW_CONFIGURATION) != 0)
+                && ((windowMask & WindowConfiguration.WINDOW_CONFIG_BOUNDS) != 0)) {
+            final ActivityStack stack = (ActivityStack) container;
+            if (stack.inPinnedWindowingMode()) {
+                stack.resize(config.windowConfiguration.getBounds(),
+                        null /* tempTaskBounds */, null /* tempTaskInsetBounds */,
+                        PRESERVE_WINDOWS, true /* deferResume */);
+            }
+        }
+    }
+
+    private int applyWindowContainerChange(WindowContainer wc,
+            WindowContainerTransaction.Change c) {
+        int effects = sanitizeAndApplyChange(wc, c);
+
+        Rect enterPipBounds = c.getEnterPipBounds();
+        if (enterPipBounds != null) {
+            Task tr = (Task) wc;
+            mService.mStackSupervisor.updatePictureInPictureMode(tr,
+                    enterPipBounds, true);
+        }
+        return effects;
+    }
+
+    @Override
+    public int applyContainerTransaction(WindowContainerTransaction t, ITaskOrganizer organizer) {
+        enforceStackPermission("applyContainerTransaction()");
+        int syncId = -1;
+        if (t == null) {
+            throw new IllegalArgumentException(
+                    "Null transaction passed to applyContainerTransaction");
+        }
+        long ident = Binder.clearCallingIdentity();
+        try {
+            synchronized (mGlobalLock) {
+                int effects = 0;
+
+                /**
+                 * If organizer is non-null we are looking to synchronize this transaction
+                 * by collecting all the results in to a SurfaceFlinger transaction and
+                 * then delivering that to the given organizers transaction ready callback.
+                 * See {@link BLASTSyncEngine} for the details of the operation. But at
+                 * a high level we create a sync operation with a given ID and an associated
+                 * organizer. Then we notify each WindowContainer in this WindowContainer
+                 * transaction that it is participating in a sync operation with that
+                 * ID. Once everything is notified we tell the BLASTSyncEngine
+                 * "setSyncReady" which means that we have added everything
+                 * to the set. At any point after this, all the WindowContainers
+                 * will eventually finish applying their changes and notify the
+                 * BLASTSyncEngine which will deliver the Transaction to the organizer.
+                 */
+                if (organizer != null) {
+                    syncId = startSyncWithOrganizer(organizer);
+                }
+                mService.deferWindowLayout();
+                try {
+                    ArraySet<WindowContainer> haveConfigChanges = new ArraySet<>();
+                    Iterator<Map.Entry<IBinder, WindowContainerTransaction.Change>> entries =
+                            t.getChanges().entrySet().iterator();
+                    while (entries.hasNext()) {
+                        final Map.Entry<IBinder, WindowContainerTransaction.Change> entry =
+                                entries.next();
+                        final WindowContainer wc = WindowContainer.fromBinder(entry.getKey());
+                        int containerEffect = applyWindowContainerChange(wc, entry.getValue());
+                        effects |= containerEffect;
+
+                        // Lifecycle changes will trigger ensureConfig for everything.
+                        if ((effects & TRANSACT_EFFECTS_LIFECYCLE) == 0
+                                && (containerEffect & TRANSACT_EFFECTS_CLIENT_CONFIG) != 0) {
+                            haveConfigChanges.add(wc);
+                        }
+                        if (syncId >= 0) {
+                            mBLASTSyncEngine.addToSyncSet(syncId, wc);
+                        }
+                    }
+                    // Hierarchy changes
+                    final List<WindowContainerTransaction.HierarchyOp> hops = t.getHierarchyOps();
+                    for (int i = 0, n = hops.size(); i < n; ++i) {
+                        final WindowContainerTransaction.HierarchyOp hop = hops.get(i);
+                        final WindowContainer wc = WindowContainer.fromBinder(hop.getContainer());
+                        effects |= sanitizeAndApplyHierarchyOp(wc, hop);
+                    }
+                    if ((effects & TRANSACT_EFFECTS_LIFECYCLE) != 0) {
+                        // Already calls ensureActivityConfig
+                        mService.mRootWindowContainer.ensureActivitiesVisible(
+                                null, 0, PRESERVE_WINDOWS);
+                    } else if ((effects & TRANSACT_EFFECTS_CLIENT_CONFIG) != 0) {
+                        final PooledConsumer f = PooledLambda.obtainConsumer(
+                                ActivityRecord::ensureActivityConfiguration,
+                                PooledLambda.__(ActivityRecord.class), 0,
+                                false /* preserveWindow */);
+                        try {
+                            for (int i = haveConfigChanges.size() - 1; i >= 0; --i) {
+                                haveConfigChanges.valueAt(i).forAllActivities(f);
+                            }
+                        } finally {
+                            f.recycle();
+                        }
+                    }
+                } finally {
+                    mService.continueWindowLayout();
+                    if (syncId >= 0) {
+                        setSyncReady(syncId);
+                    }
+                }
+            }
+        } finally {
+            Binder.restoreCallingIdentity(ident);
+        }
+        return syncId;
+    }
+
+    @Override
+    public void transactionReady(int id, SurfaceControl.Transaction sc) {
+        final ITaskOrganizer organizer = mTaskOrganizersByPendingSyncId.get(id);
+        if (organizer == null) {
+            Slog.e(TAG, "Got transaction complete for unexpected ID");
+        }
+        try {
+            organizer.transactionReady(id, sc);
+        } catch (RemoteException e) {
+        }
+
+        mTaskOrganizersByPendingSyncId.remove(id);
+    }
+
+    int startSyncWithOrganizer(ITaskOrganizer organizer) {
+        int id = mBLASTSyncEngine.startSyncSet(this);
+        mTaskOrganizersByPendingSyncId.put(id, organizer);
+        return id;
+    }
+
+    void setSyncReady(int id) {
+        mBLASTSyncEngine.setReady(id);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/TaskPositioner.java b/services/core/java/com/android/server/wm/TaskPositioner.java
index 8bbb0d7..b5892b9 100644
--- a/services/core/java/com/android/server/wm/TaskPositioner.java
+++ b/services/core/java/com/android/server/wm/TaskPositioner.java
@@ -20,6 +20,11 @@
 import static android.app.ActivityTaskManager.RESIZE_MODE_USER_FORCED;
 import static android.os.Trace.TRACE_TAG_WINDOW_MANAGER;
 
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_BOTTOM;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_LEFT;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_NONE;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_RIGHT;
+import static com.android.internal.policy.TaskResizingAlgorithm.CTRL_TOP;
 import static com.android.server.wm.DragResizeMode.DRAG_RESIZE_MODE_FREEFORM;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG_TASK_POSITIONING;
@@ -29,7 +34,6 @@
 import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
 import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;
 
-import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.app.IActivityTaskManager;
 import android.graphics.Point;
@@ -55,11 +59,10 @@
 import android.view.WindowManager;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.policy.TaskResizingAlgorithm;
+import com.android.internal.policy.TaskResizingAlgorithm.CtrlType;
 import com.android.server.protolog.common.ProtoLog;
 
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
 class TaskPositioner implements IBinder.DeathRecipient {
     private static final boolean DEBUG_ORIENTATION_VIOLATIONS = false;
     private static final String TAG_LOCAL = "TaskPositioner";
@@ -67,33 +70,10 @@
 
     private static Factory sFactory;
 
-    @IntDef(flag = true,
-            value = {
-                    CTRL_NONE,
-                    CTRL_LEFT,
-                    CTRL_RIGHT,
-                    CTRL_TOP,
-                    CTRL_BOTTOM
-            })
-    @Retention(RetentionPolicy.SOURCE)
-    @interface CtrlType {}
-
-    private static final int CTRL_NONE   = 0x0;
-    private static final int CTRL_LEFT   = 0x1;
-    private static final int CTRL_RIGHT  = 0x2;
-    private static final int CTRL_TOP    = 0x4;
-    private static final int CTRL_BOTTOM = 0x8;
-
     public static final float RESIZING_HINT_ALPHA = 0.5f;
 
     public static final int RESIZING_HINT_DURATION_MS = 0;
 
-    // The minimal aspect ratio which needs to be met to count as landscape (or 1/.. for portrait).
-    // Note: We do not use the 1.33 from the CDD here since the user is allowed to use what ever
-    // aspect he desires.
-    @VisibleForTesting
-    static final float MIN_ASPECT = 1.2f;
-
     private final WindowManagerService mService;
     private final IActivityTaskManager mActivityManager;
     private WindowPositionerEventReceiver mInputEventReceiver;
@@ -477,122 +457,13 @@
      */
     @VisibleForTesting
     void resizeDrag(float x, float y) {
-        // This is a resizing operation.
-        // We need to keep various constraints:
-        // 1. mMinVisible[Width/Height] <= [width/height] <= mMaxVisibleSize.[x/y]
-        // 2. The orientation is kept - if required.
-        final int deltaX = Math.round(x - mStartDragX);
-        final int deltaY = Math.round(y - mStartDragY);
-        int left = mWindowOriginalBounds.left;
-        int top = mWindowOriginalBounds.top;
-        int right = mWindowOriginalBounds.right;
-        int bottom = mWindowOriginalBounds.bottom;
-
-        // Calculate the resulting width and height of the drag operation.
-        int width = right - left;
-        int height = bottom - top;
-        if ((mCtrlType & CTRL_LEFT) != 0) {
-            width = Math.max(mMinVisibleWidth, width - deltaX);
-        } else if ((mCtrlType & CTRL_RIGHT) != 0) {
-            width = Math.max(mMinVisibleWidth, width + deltaX);
-        }
-        if ((mCtrlType & CTRL_TOP) != 0) {
-            height = Math.max(mMinVisibleHeight, height - deltaY);
-        } else if ((mCtrlType & CTRL_BOTTOM) != 0) {
-            height = Math.max(mMinVisibleHeight, height + deltaY);
-        }
-
-        // If we have to preserve the orientation - check that we are doing so.
-        final float aspect = (float) width / (float) height;
-        if (mPreserveOrientation && ((mStartOrientationWasLandscape && aspect < MIN_ASPECT)
-                || (!mStartOrientationWasLandscape && aspect > (1.0 / MIN_ASPECT)))) {
-            // Calculate 2 rectangles fulfilling all requirements for either X or Y being the major
-            // drag axis. What ever is producing the bigger rectangle will be chosen.
-            int width1;
-            int width2;
-            int height1;
-            int height2;
-            if (mStartOrientationWasLandscape) {
-                // Assuming that the width is our target we calculate the height.
-                width1 = Math.max(mMinVisibleWidth, Math.min(mMaxVisibleSize.x, width));
-                height1 = Math.min(height, Math.round((float)width1 / MIN_ASPECT));
-                if (height1 < mMinVisibleHeight) {
-                    // If the resulting height is too small we adjust to the minimal size.
-                    height1 = mMinVisibleHeight;
-                    width1 = Math.max(mMinVisibleWidth,
-                            Math.min(mMaxVisibleSize.x, Math.round((float)height1 * MIN_ASPECT)));
-                }
-                // Assuming that the height is our target we calculate the width.
-                height2 = Math.max(mMinVisibleHeight, Math.min(mMaxVisibleSize.y, height));
-                width2 = Math.max(width, Math.round((float)height2 * MIN_ASPECT));
-                if (width2 < mMinVisibleWidth) {
-                    // If the resulting width is too small we adjust to the minimal size.
-                    width2 = mMinVisibleWidth;
-                    height2 = Math.max(mMinVisibleHeight,
-                            Math.min(mMaxVisibleSize.y, Math.round((float)width2 / MIN_ASPECT)));
-                }
-            } else {
-                // Assuming that the width is our target we calculate the height.
-                width1 = Math.max(mMinVisibleWidth, Math.min(mMaxVisibleSize.x, width));
-                height1 = Math.max(height, Math.round((float)width1 * MIN_ASPECT));
-                if (height1 < mMinVisibleHeight) {
-                    // If the resulting height is too small we adjust to the minimal size.
-                    height1 = mMinVisibleHeight;
-                    width1 = Math.max(mMinVisibleWidth,
-                            Math.min(mMaxVisibleSize.x, Math.round((float)height1 / MIN_ASPECT)));
-                }
-                // Assuming that the height is our target we calculate the width.
-                height2 = Math.max(mMinVisibleHeight, Math.min(mMaxVisibleSize.y, height));
-                width2 = Math.min(width, Math.round((float)height2 / MIN_ASPECT));
-                if (width2 < mMinVisibleWidth) {
-                    // If the resulting width is too small we adjust to the minimal size.
-                    width2 = mMinVisibleWidth;
-                    height2 = Math.max(mMinVisibleHeight,
-                            Math.min(mMaxVisibleSize.y, Math.round((float)width2 * MIN_ASPECT)));
-                }
-            }
-
-            // Use the bigger of the two rectangles if the major change was positive, otherwise
-            // do the opposite.
-            final boolean grows = width > (right - left) || height > (bottom - top);
-            if (grows == (width1 * height1 > width2 * height2)) {
-                width = width1;
-                height = height1;
-            } else {
-                width = width2;
-                height = height2;
-            }
-        }
-
-        // Update mWindowDragBounds to the new drag size.
-        updateDraggedBounds(left, top, right, bottom, width, height);
+        updateDraggedBounds(TaskResizingAlgorithm.resizeDrag(x, y, mStartDragX, mStartDragY,
+                mWindowOriginalBounds, mCtrlType, mMinVisibleWidth, mMinVisibleHeight,
+                mMaxVisibleSize, mPreserveOrientation, mStartOrientationWasLandscape));
     }
 
-    /**
-     * Given the old coordinates and the new width and height, update the mWindowDragBounds.
-     *
-     * @param left      The original left bound before the user started dragging.
-     * @param top       The original top bound before the user started dragging.
-     * @param right     The original right bound before the user started dragging.
-     * @param bottom    The original bottom bound before the user started dragging.
-     * @param newWidth  The new dragged width.
-     * @param newHeight The new dragged height.
-     */
-    void updateDraggedBounds(int left, int top, int right, int bottom, int newWidth,
-                             int newHeight) {
-        // Generate the final bounds by keeping the opposite drag edge constant.
-        if ((mCtrlType & CTRL_LEFT) != 0) {
-            left = right - newWidth;
-        } else { // Note: The right might have changed - if we pulled at the right or not.
-            right = left + newWidth;
-        }
-        if ((mCtrlType & CTRL_TOP) != 0) {
-            top = bottom - newHeight;
-        } else { // Note: The height might have changed - if we pulled at the bottom or not.
-            bottom = top + newHeight;
-        }
-
-        mWindowDragBounds.set(left, top, right, bottom);
+    private void updateDraggedBounds(Rect newBounds) {
+        mWindowDragBounds.set(newBounds);
 
         checkBoundsForOrientationViolations(mWindowDragBounds);
     }
diff --git a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
index e47eaee..f4e4245 100644
--- a/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
+++ b/services/core/java/com/android/server/wm/TaskSnapshotSurface.java
@@ -36,7 +36,6 @@
 import static android.view.WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_STARTING;
-
 import static com.android.internal.policy.DecorView.NAVIGATION_BAR_COLOR_VIEW_ATTRIBUTES;
 import static com.android.internal.policy.DecorView.STATUS_BAR_COLOR_VIEW_ATTRIBUTES;
 import static com.android.internal.policy.DecorView.getColorViewLeftInset;
@@ -188,8 +187,9 @@
                 return null;
             }
             sysUiVis = topFullscreenOpaqueWindow.getSystemUiVisibility();
-            windowFlags = topFullscreenOpaqueWindow.getAttrs().flags;
-            windowPrivateFlags = topFullscreenOpaqueWindow.getAttrs().privateFlags;
+            WindowManager.LayoutParams attrs = topFullscreenOpaqueWindow.mAttrs;
+            windowFlags = attrs.flags;
+            windowPrivateFlags = attrs.privateFlags;
 
             layoutParams.packageName = mainWindow.getAttrs().packageName;
             layoutParams.windowAnimations = mainWindow.getAttrs().windowAnimations;
@@ -204,6 +204,14 @@
             layoutParams.width = LayoutParams.MATCH_PARENT;
             layoutParams.height = LayoutParams.MATCH_PARENT;
             layoutParams.systemUiVisibility = sysUiVis;
+            layoutParams.insetsFlags.behavior
+                    = topFullscreenOpaqueWindow.mAttrs.insetsFlags.behavior;
+            layoutParams.insetsFlags.appearance
+                    = topFullscreenOpaqueWindow.mAttrs.insetsFlags.appearance;
+            layoutParams.setFitInsetsTypes(attrs.getFitInsetsTypes());
+            layoutParams.setFitInsetsSides(attrs.getFitInsetsSides());
+            layoutParams.setFitInsetsIgnoringVisibility(attrs.isFitInsetsIgnoringVisibility());
+
             layoutParams.setTitle(String.format(TITLE_FORMAT, task.mTaskId));
 
             final TaskDescription td = task.getTaskDescription();
diff --git a/services/core/java/com/android/server/wm/TaskTile.java b/services/core/java/com/android/server/wm/TaskTile.java
new file mode 100644
index 0000000..369db05
--- /dev/null
+++ b/services/core/java/com/android/server/wm/TaskTile.java
@@ -0,0 +1,226 @@
+/*
+ * 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.server.wm;
+
+import static android.app.ActivityTaskManager.INVALID_TASK_ID;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_RESIZEABLE;
+import static android.content.pm.ActivityInfo.RESIZE_MODE_UNRESIZEABLE;
+
+import android.app.ActivityManager;
+import android.app.TaskInfo;
+import android.app.WindowConfiguration;
+import android.content.Intent;
+import android.content.pm.ActivityInfo;
+import android.content.pm.ApplicationInfo;
+import android.content.res.Configuration;
+import android.graphics.Rect;
+import android.os.IBinder;
+import android.util.Slog;
+import android.view.SurfaceControl;
+
+import java.util.ArrayList;
+import java.util.Comparator;
+
+/**
+ * A Tile. Right now this acts as a proxy for manipulating non-child stacks. Eventually, this
+ * can become an actual parent.
+ */
+// TODO(task-hierarchy): Remove when tasks can nest >2 or when single tasks can handle their
+//                       own lifecycles.
+public class TaskTile extends ActivityStack {
+    private static final String TAG = "TaskTile";
+    final ArrayList<WindowContainer> mChildren = new ArrayList<>();
+
+    private static ActivityInfo createEmptyActivityInfo() {
+        ActivityInfo info = new ActivityInfo();
+        info.applicationInfo = new ApplicationInfo();
+        return info;
+    }
+
+    TaskTile(ActivityTaskManagerService atmService, int id, int windowingMode) {
+        super(atmService, id, new Intent() /*intent*/,  null /*affinityIntent*/, null /*affinity*/,
+                null /*rootAffinity*/, null /*realActivity*/, null /*origActivity*/,
+                false /*rootWasReset*/, false /*autoRemoveRecents*/, false /*askedCompatMode*/,
+                0 /*userId*/, 0 /*effectiveUid*/, null /*lastDescription*/,
+                System.currentTimeMillis(), true /*neverRelinquishIdentity*/,
+                new ActivityManager.TaskDescription(), id, INVALID_TASK_ID, INVALID_TASK_ID,
+                0 /*taskAffiliationColor*/, 0 /*callingUid*/, "" /*callingPackage*/,
+                null /*callingFeatureId*/, RESIZE_MODE_RESIZEABLE,
+                false /*supportsPictureInPicture*/, false /*_realActivitySuspended*/,
+                false /*userSetupComplete*/, INVALID_MIN_SIZE, INVALID_MIN_SIZE,
+                createEmptyActivityInfo(), null /*voiceSession*/, null /*voiceInteractor*/,
+                null /*stack*/);
+        getRequestedOverrideConfiguration().windowConfiguration.setWindowingMode(windowingMode);
+    }
+
+    @Override
+    void onDisplayChanged(DisplayContent dc) {
+        mDisplayContent = null;
+        if (dc != null) {
+            dc.getPendingTransaction().merge(getPendingTransaction());
+        }
+        mDisplayContent = dc;
+        // Virtual parent, so don't notify children.
+    }
+
+    /**
+     * If there is a disconnection, this will clean up any vestigial surfaces left on the tile
+     * leash by moving known children to a new surfacecontrol and then removing the old one.
+     */
+    void cleanupSurfaces() {
+        if (mSurfaceControl == null) {
+            return;
+        }
+        SurfaceControl oldSurface = mSurfaceControl;
+        WindowContainer parentWin = getParent();
+        if (parentWin == null) {
+            return;
+        }
+        mSurfaceControl = parentWin.makeChildSurface(null).setName("TaskTile " + mTaskId + " - "
+                    + getRequestedOverrideWindowingMode()).setContainerLayer().build();
+        SurfaceControl.Transaction t = parentWin.getPendingTransaction();
+        t.show(mSurfaceControl);
+        for (int i = 0; i < mChildren.size(); ++i) {
+            if (mChildren.get(i).getSurfaceControl() == null) {
+                continue;
+            }
+            mChildren.get(i).reparentSurfaceControl(t, mSurfaceControl);
+        }
+        t.remove(oldSurface);
+    }
+
+    @Override
+    protected void addChild(WindowContainer child, Comparator<WindowContainer> comparator) {
+        throw new RuntimeException("Improper use of addChild() on Tile");
+    }
+
+    @Override
+    void addChild(WindowContainer child, int index) {
+        mChildren.add(child);
+        if (child instanceof ActivityStack) {
+            ((ActivityStack) child).setTile(this);
+        }
+        mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                this, false /* force */);
+    }
+
+    @Override
+    void removeChild(WindowContainer child) {
+        if (child instanceof ActivityStack) {
+            ((ActivityStack) child).setTile(null);
+        }
+        mChildren.remove(child);
+        mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                this, false /* force */);
+    }
+
+    void removeAllChildren() {
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer child = mChildren.get(i);
+            if (child instanceof ActivityStack) {
+                ((ActivityStack) child).setTile(null);
+            }
+        }
+        mChildren.clear();
+        mAtmService.mTaskOrganizerController.dispatchTaskInfoChanged(
+                this, false /* force */);
+    }
+
+    @Override
+    protected int getChildCount() {
+        // Currently 0 as this isn't a proper hierarchy member yet.
+        return 0;
+    }
+
+    @Override
+    public void setWindowingMode(/*@WindowConfiguration.WindowingMode*/ int windowingMode) {
+        Configuration c = new Configuration(getRequestedOverrideConfiguration());
+        c.windowConfiguration.setWindowingMode(windowingMode);
+        onRequestedOverrideConfigurationChanged(c);
+    }
+
+    @Override
+    public void onConfigurationChanged(Configuration newParentConfig) {
+        super.onConfigurationChanged(newParentConfig);
+        for (int i = mChildren.size() - 1; i >= 0; --i) {
+            final WindowContainer child = mChildren.get(i);
+            child.onConfigurationChanged(child.getParent().getConfiguration());
+        }
+    }
+
+    /**
+     * Until this can be part of the hierarchy, the Stack level can use this utility during
+     * resolveOverrideConfig to simulate inheritance.
+     */
+    void updateResolvedConfig(Configuration inOutResolvedConfig) {
+        Rect resolveBounds = inOutResolvedConfig.windowConfiguration.getBounds();
+        if (resolveBounds == null || resolveBounds.isEmpty()) {
+            resolveBounds.set(getRequestedOverrideBounds());
+        }
+        int stackMode = inOutResolvedConfig.windowConfiguration.getWindowingMode();
+        if (stackMode == WindowConfiguration.WINDOWING_MODE_UNDEFINED
+                || stackMode == WindowConfiguration.WINDOWING_MODE_FULLSCREEN) {
+            // Also replace FULLSCREEN because we interpret FULLSCREEN as "fill parent"
+            inOutResolvedConfig.windowConfiguration.setWindowingMode(
+                    getRequestedOverrideWindowingMode());
+        }
+        if (inOutResolvedConfig.smallestScreenWidthDp
+                == Configuration.SMALLEST_SCREEN_WIDTH_DP_UNDEFINED) {
+            inOutResolvedConfig.smallestScreenWidthDp =
+                    getRequestedOverrideConfiguration().smallestScreenWidthDp;
+        }
+    }
+
+    @Override
+    void fillTaskInfo(TaskInfo info) {
+        super.fillTaskInfo(info);
+        WindowContainer top = null;
+        // Check mChildren.isEmpty directly because hasChild() -> getChildCount() always returns 0
+        if (!mChildren.isEmpty()) {
+            // Find the top-most root task which is a virtual child of this Tile. Because this is a
+            // virtual parent, the mChildren order here isn't changed during hierarchy operations.
+            WindowContainer parent = mChildren.get(0).getParent();
+            for (int i = parent.getChildCount() - 1; i >= 0; --i) {
+                if (mChildren.contains(parent.getChildAt(i))) {
+                    top = parent.getChildAt(i);
+                    break;
+                }
+            }
+        }
+        final Task topTask = top == null ? null : top.getTopMostTask();
+        boolean isResizable = topTask == null || topTask.isResizeable();
+        info.resizeMode = isResizable ? RESIZE_MODE_RESIZEABLE : RESIZE_MODE_UNRESIZEABLE;
+        info.topActivityType = top == null ? ACTIVITY_TYPE_UNDEFINED : top.getActivityType();
+        info.configuration.setTo(getRequestedOverrideConfiguration());
+    }
+
+    @Override
+    void removeImmediately() {
+        removeAllChildren();
+        super.removeImmediately();
+    }
+
+    static TaskTile forToken(IBinder token) {
+        try {
+            return (TaskTile) ((TaskToken) token).getContainer();
+        } catch (ClassCastException e) {
+            Slog.w(TAG, "Bad tile token: " + token, e);
+            return null;
+        }
+    }
+}
diff --git a/services/core/java/com/android/server/wm/WallpaperAnimationAdapter.java b/services/core/java/com/android/server/wm/WallpaperAnimationAdapter.java
index 801e521..bd70599 100644
--- a/services/core/java/com/android/server/wm/WallpaperAnimationAdapter.java
+++ b/services/core/java/com/android/server/wm/WallpaperAnimationAdapter.java
@@ -18,6 +18,7 @@
 import static com.android.server.wm.AnimationAdapterProto.REMOTE;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_REMOTE_ANIMATIONS;
 import static com.android.server.wm.RemoteAnimationAdapterWrapperProto.TARGET;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
 
 import android.graphics.Point;
 import android.os.SystemClock;
@@ -26,6 +27,7 @@
 import android.view.SurfaceControl;
 
 import com.android.server.protolog.common.ProtoLog;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 
 import java.io.PrintWriter;
 import java.util.ArrayList;
@@ -40,6 +42,7 @@
     private final WallpaperWindowToken mWallpaperToken;
     private SurfaceControl mCapturedLeash;
     private SurfaceAnimator.OnAnimationFinishedCallback mCapturedLeashFinishCallback;
+    private @AnimationType int mLastAnimationType;
 
     private long mDurationHint;
     private long mStatusBarTransitionDelay;
@@ -77,7 +80,7 @@
                     wallpaperWindow, durationHint, statusBarTransitionDelay,
                     animationCanceledRunnable);
             wallpaperWindow.startAnimation(wallpaperWindow.getPendingTransaction(),
-                    wallpaperAdapter, false /* hidden */);
+                    wallpaperAdapter, false /* hidden */, ANIMATION_TYPE_WINDOW_ANIMATION);
             targets.add(wallpaperAdapter.createRemoteAnimationTarget());
             adaptersOut.add(wallpaperAdapter);
         });
@@ -110,6 +113,13 @@
     }
 
     /**
+     * @return the type of animation.
+     */
+    @AnimationType int getLastAnimationType() {
+        return mLastAnimationType;
+    }
+
+    /**
      * @return the wallpaper window
      */
     WallpaperWindowToken getToken() {
@@ -124,13 +134,14 @@
 
     @Override
     public void startAnimation(SurfaceControl animationLeash, SurfaceControl.Transaction t,
-            SurfaceAnimator.OnAnimationFinishedCallback finishCallback) {
+            @AnimationType int type, SurfaceAnimator.OnAnimationFinishedCallback finishCallback) {
         ProtoLog.d(WM_DEBUG_REMOTE_ANIMATIONS, "startAnimation");
 
         // Restore z-layering until client has a chance to modify it.
         t.setLayer(animationLeash, mWallpaperToken.getPrefixOrderIndex());
         mCapturedLeash = animationLeash;
         mCapturedLeashFinishCallback = finishCallback;
+        mLastAnimationType = type;
     }
 
     @Override
diff --git a/services/core/java/com/android/server/wm/WindowContainer.java b/services/core/java/com/android/server/wm/WindowContainer.java
index 015b92c..0bb4e03 100644
--- a/services/core/java/com/android/server/wm/WindowContainer.java
+++ b/services/core/java/com/android/server/wm/WindowContainer.java
@@ -31,6 +31,7 @@
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_APP_TRANSITIONS_ANIM;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
 import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
@@ -74,6 +75,8 @@
 import com.android.internal.util.ToBooleanFunction;
 import com.android.server.protolog.common.ProtoLog;
 import com.android.server.wm.SurfaceAnimator.Animatable;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import java.io.PrintWriter;
 import java.lang.ref.WeakReference;
@@ -91,7 +94,8 @@
  * changes are made to this class.
  */
 class WindowContainer<E extends WindowContainer> extends ConfigurationContainer<E>
-        implements Comparable<WindowContainer>, Animatable {
+        implements Comparable<WindowContainer>, Animatable,
+                   BLASTSyncEngine.TransactionReadyListener {
 
     private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowContainer" : TAG_WM;
 
@@ -257,6 +261,12 @@
      */
     RemoteToken mRemoteToken = null;
 
+    BLASTSyncEngine mBLASTSyncEngine = new BLASTSyncEngine();
+    SurfaceControl.Transaction mBLASTSyncTransaction = new SurfaceControl.Transaction();
+    boolean mUsingBLASTSyncTransaction = false;
+    BLASTSyncEngine.TransactionReadyListener mWaitingListener;
+    int mWaitingSyncId;
+
     WindowContainer(WindowManagerService wms) {
         mWmService = wms;
         mPendingTransaction = wms.mTransactionFactory.get();
@@ -766,7 +776,7 @@
      * {@see AnimationFlags#PARENTS}
      * {@see AnimationFlags#CHILDREN}
      */
-    final boolean isAnimating(int flags) {
+    boolean isAnimating(int flags) {
         if (mSurfaceAnimator.isAnimating()) {
             return true;
         }
@@ -1415,6 +1425,19 @@
         }
     }
 
+    void forAllTasks(Consumer<Task> callback, boolean traverseTopToBottom, Task excludedTask) {
+        final int count = mChildren.size();
+        if (traverseTopToBottom) {
+            for (int i = count - 1; i >= 0; --i) {
+                mChildren.get(i).forAllTasks(callback, traverseTopToBottom, excludedTask);
+            }
+        } else {
+            for (int i = 0; i < count; i++) {
+                mChildren.get(i).forAllTasks(callback, traverseTopToBottom, excludedTask);
+            }
+        }
+    }
+
     Task getTaskAbove(Task t) {
         return getTask(
                 (above) -> true, t, false /*includeBoundary*/, false /*traverseTopToBottom*/);
@@ -1834,6 +1857,10 @@
 
     @Override
     public Transaction getPendingTransaction() {
+        if (mUsingBLASTSyncTransaction) {
+            return mBLASTSyncTransaction;
+        }
+
         final DisplayContent displayContent = getDisplayContent();
         if (displayContent != null && displayContent != this) {
             return displayContent.getPendingTransaction();
@@ -1851,19 +1878,24 @@
      * @param anim The animation to run.
      * @param hidden Whether our container is currently hidden. TODO This should use isVisible at
      *               some point but the meaning is too weird to work for all containers.
+     * @param type The type of animation defined as {@link AnimationType}.
      * @param animationFinishedCallback The callback being triggered when the animation finishes.
      */
     void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
-            @Nullable Runnable animationFinishedCallback) {
-        if (DEBUG_ANIM) Slog.v(TAG, "Starting animation on " + this + ": " + anim);
+            @AnimationType int type,
+            @Nullable OnAnimationFinishedCallback animationFinishedCallback) {
+        if (DEBUG_ANIM) {
+            Slog.v(TAG, "Starting animation on " + this + ": type=" + type + ", anim=" + anim);
+        }
 
         // TODO: This should use isVisible() but because isVisible has a really weird meaning at
         // the moment this doesn't work for all animatable window containers.
-        mSurfaceAnimator.startAnimation(t, anim, hidden, animationFinishedCallback);
+        mSurfaceAnimator.startAnimation(t, anim, hidden, type, animationFinishedCallback);
     }
 
-    void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden) {
-        startAnimation(t, anim, hidden, null /* animationFinishedCallback */);
+    void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden,
+            @AnimationType int type) {
+        startAnimation(t, anim, hidden, type, null /* animationFinishedCallback */);
     }
 
     void transferAnimation(WindowContainer from) {
@@ -1916,7 +1948,8 @@
      * @see #getAnimationAdapter
      */
     boolean applyAnimation(WindowManager.LayoutParams lp, int transit, boolean enter,
-            boolean isVoiceInteraction, @Nullable Runnable animationFinishedCallback) {
+            boolean isVoiceInteraction,
+            @Nullable OnAnimationFinishedCallback animationFinishedCallback) {
         if (mWmService.mDisableTransitionAnimation) {
             ProtoLog.v(WM_DEBUG_APP_TRANSITIONS_ANIM,
                     "applyAnimation: transition animation is disabled or skipped. "
@@ -1937,7 +1970,7 @@
                 AnimationAdapter thumbnailAdapter = adapters.second;
                 if (adapter != null) {
                     startAnimation(getPendingTransaction(), adapter, !isVisible(),
-                            animationFinishedCallback);
+                            ANIMATION_TYPE_APP_TRANSITION, animationFinishedCallback);
                     if (adapter.getShowWallpaper()) {
                         getDisplayContent().pendingLayoutChanges |= FINISH_LAYOUT_REDO_WALLPAPER;
                     }
@@ -2128,7 +2161,7 @@
     /**
      * Called when an animation has finished running.
      */
-    protected void onAnimationFinished() {
+    protected void onAnimationFinished(@AnimationType int type, AnimationAdapter anim) {
         mWmService.onAnimationFinished();
     }
 
@@ -2276,6 +2309,10 @@
         return mRemoteToken;
     }
 
+    static WindowContainer fromBinder(IBinder binder) {
+        return RemoteToken.fromBinder(binder).getContainer();
+    }
+
     static class RemoteToken extends IWindowContainer.Stub {
         final WeakReference<WindowContainer> mWeakRef;
 
@@ -2307,4 +2344,38 @@
             return sb.toString();
         }
     }
+
+    @Override
+    public void transactionReady(int mSyncId, SurfaceControl.Transaction mergedTransaction) {
+        mergedTransaction.merge(mBLASTSyncTransaction);
+        mUsingBLASTSyncTransaction = false;
+
+        mWaitingListener.transactionReady(mWaitingSyncId, mergedTransaction);
+
+        mWaitingListener = null;
+        mWaitingSyncId = -1;
+    }
+
+    boolean prepareForSync(BLASTSyncEngine.TransactionReadyListener waitingListener,
+            int waitingId) {
+        boolean willSync = false;
+        if (!isVisible()) {
+            return willSync;
+        }
+        mUsingBLASTSyncTransaction = true;
+
+        int localId = mBLASTSyncEngine.startSyncSet(this);
+        for (int i = 0; i < mChildren.size(); i++) {
+            final WindowContainer child = mChildren.get(i);
+            willSync = mBLASTSyncEngine.addToSyncSet(localId, child) | willSync;
+        }
+
+        // Make sure to set these before we call setReady in case the sync was a no-op
+        mWaitingSyncId = waitingId;
+        mWaitingListener = waitingListener;
+
+        mBLASTSyncEngine.setReady(localId);
+
+        return willSync;
+    }
 }
diff --git a/services/core/java/com/android/server/wm/WindowContainerThumbnail.java b/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
index 8948f6f..90e3be7 100644
--- a/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
+++ b/services/core/java/com/android/server/wm/WindowContainerThumbnail.java
@@ -20,6 +20,7 @@
 import static android.view.SurfaceControl.METADATA_WINDOW_TYPE;
 
 import static com.android.server.wm.ProtoLogGroup.WM_SHOW_TRANSACTIONS;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
 import static com.android.server.wm.WindowContainerThumbnailProto.HEIGHT;
 import static com.android.server.wm.WindowContainerThumbnailProto.SURFACE_ANIMATOR;
 import static com.android.server.wm.WindowContainerThumbnailProto.WIDTH;
@@ -40,6 +41,7 @@
 
 import com.android.server.protolog.common.ProtoLog;
 import com.android.server.wm.SurfaceAnimator.Animatable;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 
 import java.util.function.Supplier;
 
@@ -85,7 +87,7 @@
             // We can't use a delegating constructor since we need to
             // reference this::onAnimationFinished
             mSurfaceAnimator =
-                new SurfaceAnimator(this, null /* animationFinishedCallback */,
+                new SurfaceAnimator(this, this::onAnimationFinished /* animationFinishedCallback */,
                         container.mWmService);
         }
         mWidth = thumbnailHeader.getWidth();
@@ -130,14 +132,19 @@
                 new WindowAnimationSpec(anim, position,
                         mWindowContainer.getDisplayContent().mAppTransition.canSkipFirstFrame(),
                         mWindowContainer.getDisplayContent().getWindowCornerRadius()),
-                mWindowContainer.mWmService.mSurfaceAnimationRunner), false /* hidden */);
+                mWindowContainer.mWmService.mSurfaceAnimationRunner), false /* hidden */,
+                ANIMATION_TYPE_RECENTS, null /* animationFinishedCallback */);
     }
 
     /**
      * Start animation with existing adapter.
      */
     void startAnimation(Transaction t, AnimationAdapter anim, boolean hidden) {
-        mSurfaceAnimator.startAnimation(t, anim, hidden);
+        mSurfaceAnimator.startAnimation(t, anim, hidden, ANIMATION_TYPE_RECENTS,
+                null /* animationFinishedCallback */);
+    }
+
+    private void onAnimationFinished(@AnimationType int type, AnimationAdapter anim) {
     }
 
     void setShowing(Transaction pendingTransaction, boolean show) {
diff --git a/services/core/java/com/android/server/wm/WindowManagerInternal.java b/services/core/java/com/android/server/wm/WindowManagerInternal.java
index 6e243f0..59eee9c 100644
--- a/services/core/java/com/android/server/wm/WindowManagerInternal.java
+++ b/services/core/java/com/android/server/wm/WindowManagerInternal.java
@@ -562,4 +562,14 @@
      */
     public abstract void setAccessibilityIdToSurfaceMetadata(
             IBinder windowToken, int accessibilityWindowId);
+
+    /**
+     * Transfers input focus from a given input token to that of the IME window.
+     *
+     * @param sourceInputToken The source token.
+     * @param displayId The display hosting the IME window.
+     * @return Whether transfer was successful.
+     */
+    public abstract boolean transferTouchFocusToImeWindow(@NonNull IBinder sourceInputToken,
+            int displayId);
 }
diff --git a/services/core/java/com/android/server/wm/WindowManagerService.java b/services/core/java/com/android/server/wm/WindowManagerService.java
index 2c6c756..8f9caea 100644
--- a/services/core/java/com/android/server/wm/WindowManagerService.java
+++ b/services/core/java/com/android/server/wm/WindowManagerService.java
@@ -187,6 +187,7 @@
 import android.os.Trace;
 import android.os.UserHandle;
 import android.os.WorkSource;
+import android.provider.DeviceConfig;
 import android.provider.Settings;
 import android.service.vr.IVrManager;
 import android.service.vr.IVrStateCallbacks;
@@ -229,7 +230,6 @@
 import android.view.InputChannel;
 import android.view.InputDevice;
 import android.view.InputEvent;
-import android.view.InputEventReceiver;
 import android.view.InputWindowHandle;
 import android.view.InsetsState;
 import android.view.KeyEvent;
@@ -309,6 +309,8 @@
         implements Watchdog.Monitor, WindowManagerPolicy.WindowManagerFuncs {
     private static final String TAG = TAG_WITH_CLASS_NAME ? "WindowManagerService" : TAG_WM;
 
+    private static final String WM_USE_BLAST_ADAPTER_FLAG = "wm_use_blast_adapter";
+
     static final int LAYOUT_REPEAT_THRESHOLD = 4;
 
     static final boolean PROFILE_ORIENTATION = false;
@@ -397,7 +399,7 @@
      * @see #HIERARCHICAL_ANIMATIONS_PROPERTY
      */
     static boolean sHierarchicalAnimations =
-            SystemProperties.getBoolean(HIERARCHICAL_ANIMATIONS_PROPERTY, false);
+            SystemProperties.getBoolean(HIERARCHICAL_ANIMATIONS_PROPERTY, true);
 
     // Enums for animation scale update types.
     @Retention(RetentionPolicy.SOURCE)
@@ -413,6 +415,8 @@
 
     final WindowTracing mWindowTracing;
 
+    final DisplayAreaPolicy.Provider mDisplayAreaPolicyProvider;
+
     final private KeyguardDisableHandler mKeyguardDisableHandler;
     // TODO: eventually unify all keyguard state in a common place instead of having it spread over
     // AM's KeyguardController and the policy's KeyguardServiceDelegate.
@@ -623,6 +627,9 @@
     // The root of the device window hierarchy.
     RootWindowContainer mRoot;
 
+    // Whether the system should use BLAST for ViewRootImpl
+    final boolean mUseBLAST;
+
     int mDockedStackCreateMode = SPLIT_SCREEN_CREATE_MODE_TOP_OR_LEFT;
     Rect mDockedStackCreateBounds;
 
@@ -938,7 +945,7 @@
      * Whether the UI is currently running in touch mode (not showing
      * navigational focus because the user is directly pressing the screen).
      */
-    boolean mInTouchMode;
+    private boolean mInTouchMode;
 
     private ViewServer mViewServer;
     final ArrayList<WindowChangeListener> mWindowChangeListeners = new ArrayList<>();
@@ -1137,6 +1144,10 @@
         mAnimator = new WindowAnimator(this);
         mRoot = new RootWindowContainer(this);
 
+        mUseBLAST = DeviceConfig.getBoolean(
+                    DeviceConfig.NAMESPACE_WINDOW_MANAGER_NATIVE_BOOT,
+                    WM_USE_BLAST_ADAPTER_FLAG, false);
+
         mWindowPlacerLocked = new WindowSurfacePlacer(this);
         mTaskSnapshotController = new TaskSnapshotController(this);
 
@@ -1255,6 +1266,10 @@
 
         LocalServices.addService(WindowManagerInternal.class, new LocalService());
         mEmbeddedWindowController = new EmbeddedWindowController(mGlobalLock);
+
+        mDisplayAreaPolicyProvider = DisplayAreaPolicy.Provider.fromResources(
+                mContext.getResources());
+
         setGlobalShadowSettings();
     }
 
@@ -2505,7 +2520,7 @@
                 WindowState win = windowForClientLocked(session, client, false);
                 ProtoLog.d(WM_DEBUG_ADD_REMOVE, "finishDrawingWindow: %s mDrawState=%s",
                         win, (win != null ? win.mWinAnimator.drawStateToString() : "null"));
-                if (win != null && win.mWinAnimator.finishDrawingLocked(postDrawTransaction)) {
+                if (win != null && win.finishDrawing(postDrawTransaction)) {
                     if ((win.mAttrs.flags & FLAG_SHOW_WALLPAPER) != 0) {
                         win.getDisplayContent().pendingLayoutChanges |=
                                 WindowManagerPolicy.FINISH_LAYOUT_REDO_WALLPAPER;
@@ -2536,11 +2551,12 @@
 
     @Override
     public void addWindowToken(IBinder binder, int type, int displayId) {
-        addWindowContextToken(binder, type, displayId, null);
+        addWindowTokenWithOptions(binder, type, displayId, null /* options */,
+                null /* packageName */);
     }
 
-    @Override
-    public int addWindowContextToken(IBinder binder, int type, int displayId, String packageName) {
+    public int addWindowTokenWithOptions(IBinder binder, int type, int displayId, Bundle options,
+            String packageName) {
         final boolean callerCanManageAppTokens =
                 checkCallingPermission(MANAGE_APP_TOKENS, "addWindowToken()");
         if (!callerCanManageAppTokens) {
@@ -3460,6 +3476,12 @@
         mInputManager.setInTouchMode(mode);
     }
 
+    boolean getInTouchMode() {
+        synchronized (mGlobalLock) {
+            return mInTouchMode;
+        }
+    }
+
     public void showEmulatorDisplayOverlayIfNeeded() {
         if (mContext.getResources().getBoolean(
                 com.android.internal.R.bool.config_windowEnableCircularEmulatorDisplayOverlay)
@@ -5044,6 +5066,11 @@
     }
 
     @Override
+    public boolean useBLAST() {
+        return mUseBLAST;
+    }
+
+    @Override
     public void getInitialDisplaySize(int displayId, Point size) {
         synchronized (mGlobalLock) {
             final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
@@ -5680,6 +5707,12 @@
 
     @Override
     public void setForceShowSystemBars(boolean show) {
+        boolean isAutomotive = mContext.getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_AUTOMOTIVE);
+        if (!isAutomotive) {
+            throw new UnsupportedOperationException("Force showing system bars is only supported"
+                    + "for Automotive use cases.");
+        }
         if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.STATUS_BAR)
                 != PackageManager.PERMISSION_GRANTED) {
             throw new SecurityException("Caller does not hold permission "
@@ -5729,20 +5762,6 @@
     }
 
     @Override
-    public WindowManagerPolicy.InputConsumer createInputConsumer(Looper looper, String name,
-            InputEventReceiver.Factory inputEventReceiverFactory, int displayId) {
-        synchronized (mGlobalLock) {
-            DisplayContent displayContent = mRoot.getDisplayContent(displayId);
-            if (displayContent != null) {
-                return displayContent.getInputMonitor().createInputConsumer(looper, name,
-                        inputEventReceiverFactory);
-            } else {
-                return null;
-            }
-        }
-    }
-
-    @Override
     public void createInputConsumer(IBinder token, String name, int displayId,
             InputChannel inputChannel) {
         synchronized (mGlobalLock) {
@@ -5905,7 +5924,7 @@
      */
     void dumpDebugLocked(ProtoOutputStream proto, @WindowTraceLogLevel int logLevel) {
         mPolicy.dumpDebug(proto, POLICY);
-        mRoot.dumpDebugInner(proto, ROOT_WINDOW_CONTAINER, logLevel);
+        mRoot.dumpDebug(proto, ROOT_WINDOW_CONTAINER, logLevel);
         final DisplayContent topFocusedDisplayContent = mRoot.getTopFocusedDisplayContent();
         if (topFocusedDisplayContent.mCurrentFocus != null) {
             topFocusedDisplayContent.mCurrentFocus.writeIdentifierToProto(proto, FOCUSED_WINDOW);
@@ -6991,8 +7010,15 @@
             throw new SecurityException("Requires INTERNAL_SYSTEM_WINDOW permission");
         }
         boolean show;
+        final DisplayContent dc = mRoot.getDisplayContent(displayId);
+        if (dc == null) {
+            ProtoLog.w(WM_ERROR,
+                    "Attempted to get IME flag of a display that does not exist: %d",
+                    displayId);
+            return false;
+        }
         synchronized (mGlobalLock) {
-            show = shouldShowImeSystemWindowUncheckedLocked(displayId);
+            show = dc.canShowIme();
         }
 
         return show;
@@ -7291,6 +7317,10 @@
                 Slog.w(TAG_WM, "updateInputMethodTargetWindow: imeToken=" + imeToken
                         + " imeTargetWindowToken=" + imeTargetWindowToken);
             }
+            final WindowState imeTarget = mWindowMap.get(imeTargetWindowToken);
+            if (imeTarget != null) {
+                imeTarget.getDisplayContent().updateImeControlTarget(imeTarget);
+            }
         }
 
         @Override
@@ -7405,15 +7435,13 @@
         @Override
         public void showImePostLayout(IBinder imeTargetWindowToken) {
             synchronized (mGlobalLock) {
-                final WindowState imeTarget = mWindowMap.get(imeTargetWindowToken);
+                WindowState imeTarget = mWindowMap.get(imeTargetWindowToken);
                 if (imeTarget == null) {
                     return;
                 }
-                final int displayId = imeTarget.getDisplayId();
-                if (!shouldShowImeSystemWindowUncheckedLocked(displayId)) {
-                    return;
-                }
+                imeTarget = imeTarget.getImeControlTarget();
 
+                final int displayId = imeTarget.getDisplayId();
                 mRoot.getDisplayContent(displayId).getInsetsStateController().getImeSourceProvider()
                         .scheduleShowImePostLayout(imeTarget);
             }
@@ -7423,12 +7451,16 @@
         public void hideIme(int displayId) {
             synchronized (mGlobalLock) {
                 final DisplayContent dc = mRoot.getDisplayContent(displayId);
-                if (dc != null && dc.mInputMethodTarget != null) {
+                if (dc != null) {
+                    WindowState imeTarget = dc.getImeControlTarget();
+                    if (imeTarget == null) {
+                        return;
+                    }
                     // If there was a pending IME show(), reset it as IME has been
                     // requested to be hidden.
-                    dc.getInsetsStateController().getImeSourceProvider().abortShowImePostLayout();
-                    dc.mInputMethodControlTarget.hideInsets(WindowInsets.Type.ime(),
-                            true /* fromIme */);
+                    imeTarget.getDisplayContent().getInsetsStateController().getImeSourceProvider()
+                            .abortShowImePostLayout();
+                    imeTarget.hideInsets(WindowInsets.Type.ime(), true /* fromIme */);
                 }
             }
         }
@@ -7538,6 +7570,29 @@
                 }
             }
         }
+
+        @Override
+        public boolean transferTouchFocusToImeWindow(@NonNull IBinder sourceInputToken,
+                int displayId) {
+            final IBinder destinationInputToken;
+
+            synchronized (mGlobalLock) {
+                final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
+                if (displayContent == null) {
+                    return false;
+                }
+                final WindowState imeWindow = displayContent.mInputMethodWindow;
+                if (imeWindow == null) {
+                    return false;
+                }
+                if (imeWindow.mInputChannel == null) {
+                    return false;
+                }
+                destinationInputToken = imeWindow.mInputChannel.getToken();
+            }
+
+            return mInputManager.transferTouchFocus(sourceInputToken, destinationInputToken);
+        }
     }
 
     void registerAppFreezeListener(AppFreezeListener listener) {
@@ -7794,40 +7849,52 @@
      * views.
      */
     void grantInputChannel(int callingUid, int callingPid, int displayId, SurfaceControl surface,
-            IWindow window, IBinder hostInputToken, InputChannel outInputChannel) {
-        InputApplicationHandle applicationHandle = null;
+            IWindow window, IBinder hostInputToken, int flags, InputChannel outInputChannel) {
+        final InputApplicationHandle applicationHandle;
         final String name;
         final InputChannel[] inputChannels;
         final InputChannel clientChannel;
         final InputChannel serverChannel;
         synchronized (mGlobalLock) {
-            final WindowState hostWindow = mInputToWindowMap.get(hostInputToken);
-            final String hostWindowName = (hostWindow != null)
-                    ? hostWindow.getWindowTag().toString() : "Internal";
-            name = "EmbeddedWindow{ u" + UserHandle.getUserId(callingUid)
-                    + " " + hostWindowName + "}";
+            EmbeddedWindowController.EmbeddedWindow win =
+                    new EmbeddedWindowController.EmbeddedWindow(window,
+                            mInputToWindowMap.get(hostInputToken), callingUid, callingPid);
+            name = win.getName();
 
             inputChannels = InputChannel.openInputChannelPair(name);
             serverChannel = inputChannels[0];
             clientChannel = inputChannels[1];
             mInputManager.registerInputChannel(serverChannel);
-            mEmbeddedWindowController.add(serverChannel.getToken(), window, hostWindow, callingUid,
-                    callingPid);
-
-            if (hostWindow != null
-                    && hostWindow.mInputWindowHandle.inputApplicationHandle != null) {
-                applicationHandle = new InputApplicationHandle(
-                        hostWindow.mInputWindowHandle.inputApplicationHandle);
+            mEmbeddedWindowController.add(clientChannel.getToken(), win);
+            if (serverChannel.getToken() != clientChannel.getToken()) {
+                throw new IllegalStateException("Client and Server channel are expected to"
+                        + "be the same");
             }
+
+            applicationHandle = win.getApplicationHandle();
         }
 
+        updateInputChannel(clientChannel.getToken(), callingUid, callingPid, displayId, surface,
+                name, applicationHandle, flags);
+
         clientChannel.transferTo(outInputChannel);
         clientChannel.dispose();
+        // Prevent the java finalizer from breaking the input channel. But we won't
+        // do any further management so we just release the java ref and let the
+        // InputDispatcher hold the last ref.
+        serverChannel.release();
+    }
 
+    private void updateInputChannel(IBinder channelToken, int callingUid, int callingPid,
+            int displayId, SurfaceControl surface, String name,
+            InputApplicationHandle applicationHandle, int flags) {
         InputWindowHandle h = new InputWindowHandle(applicationHandle, displayId);
-        h.token = serverChannel.getToken();
+        h.token = channelToken;
         h.name = name;
-        h.layoutParamsFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
+
+        final int sanitizedFlags = flags & (LayoutParams.FLAG_NOT_TOUCHABLE
+                | LayoutParams.FLAG_SLIPPERY);
+        h.layoutParamsFlags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL | sanitizedFlags;
         h.layoutParamsType = 0;
         h.dispatchingTimeoutNanos = -1;
         h.canReceiveKeys = false;
@@ -7842,15 +7909,34 @@
 
         h.replaceTouchableRegionWithCrop(null);
 
-        SurfaceSession s = new SurfaceSession();
         SurfaceControl.Transaction t = mTransactionFactory.get();
         t.setInputWindowInfo(surface, h);
         t.apply();
+        t.close();
+    }
 
-        // Prevent the java finalizer from breaking the input channel. But we won't
-        // do any further management so we just release the java ref and let the
-        // InputDispatcher hold the last ref.
-        serverChannel.release();
+    /**
+     * Updates the flags on an existing surface's input channel. This assumes the surface provided
+     * is the one associated with the provided input-channel. If this isn't the case, behavior
+     * is undefined.
+     */
+    void updateInputChannel(IBinder channelToken, int displayId, SurfaceControl surface,
+            int flags) {
+        final InputApplicationHandle applicationHandle;
+        final String name;
+        final EmbeddedWindowController.EmbeddedWindow win;
+        synchronized (mGlobalLock) {
+            win = mEmbeddedWindowController.get(channelToken);
+            if (win == null) {
+                Slog.e(TAG, "Couldn't find window for provided channelToken.");
+                return;
+            }
+            name = win.getName();
+            applicationHandle = win.getApplicationHandle();
+        }
+
+        updateInputChannel(channelToken, win.mOwnerUid, win.mOwnerPid, displayId, surface, name,
+                applicationHandle, flags);
     }
 
     /** Return whether layer tracing is enabled */
@@ -7936,27 +8022,16 @@
         return true;
     }
 
-    private boolean shouldShowImeSystemWindowUncheckedLocked(final int displayId) {
-        final DisplayContent displayContent = mRoot.getDisplayContent(displayId);
-        if (displayContent == null) {
-            ProtoLog.w(WM_ERROR,
-                    "Attempted to get IME flag of a display that does not exist: %d",
-                    displayId);
-            return false;
-        }
-        if (displayContent.isUntrustedVirtualDisplay()) {
-            return false;
-        }
-        return mDisplayWindowSettings.shouldShowImeLocked(displayContent)
-                || mForceDesktopModeOnExternalDisplays;
-    }
-
     @Override
     public void getWindowInsets(WindowManager.LayoutParams attrs,
             int displayId, Rect outContentInsets, Rect outStableInsets,
             DisplayCutout.ParcelableWrapper displayCutout) {
         synchronized (mGlobalLock) {
-            final DisplayContent dc = mRoot.getDisplayContent(displayId);
+            final DisplayContent dc = mRoot.getDisplayContentOrCreate(displayId);
+            if (dc == null) {
+                throw new WindowManager.InvalidDisplayException("Display#" + displayId
+                        + "could not be found!");
+            }
             final WindowToken windowToken = dc.getWindowToken(attrs.token);
             final ActivityRecord activity;
             if (windowToken != null && windowToken.asActivityRecord() != null) {
diff --git a/services/core/java/com/android/server/wm/WindowProcessController.java b/services/core/java/com/android/server/wm/WindowProcessController.java
index 87b04b2..c7d00ec 100644
--- a/services/core/java/com/android/server/wm/WindowProcessController.java
+++ b/services/core/java/com/android/server/wm/WindowProcessController.java
@@ -178,7 +178,7 @@
     private long mLastActivityFinishTime;
 
     // Last configuration that was reported to the process.
-    private final Configuration mLastReportedConfiguration;
+    private final Configuration mLastReportedConfiguration = new Configuration();
     // Configuration that is waiting to be dispatched to the process.
     private Configuration mPendingConfiguration;
     private final Configuration mNewOverrideConfig = new Configuration();
@@ -192,7 +192,7 @@
     /** Whether our process is currently running a {@link IRemoteAnimationRunner} */
     private boolean mRunningRemoteAnimation;
 
-    public WindowProcessController(ActivityTaskManagerService atm, ApplicationInfo info,
+    public WindowProcessController(@NonNull ActivityTaskManagerService atm, ApplicationInfo info,
             String name, int uid, int userId, Object owner, WindowProcessListener listener) {
         mInfo = info;
         mName = name;
@@ -201,11 +201,8 @@
         mOwner = owner;
         mListener = listener;
         mAtm = atm;
-        mLastReportedConfiguration = new Configuration();
         mDisplayId = INVALID_DISPLAY;
-        if (atm != null) {
-            onConfigurationChanged(atm.getGlobalConfiguration());
-        }
+        onConfigurationChanged(atm.getGlobalConfiguration());
     }
 
     public void setPid(int pid) {
@@ -220,6 +217,11 @@
     public void setThread(IApplicationThread thread) {
         synchronized (mAtm.mGlobalLockWithoutBoost) {
             mThread = thread;
+            // In general this is called from attaching application, so the last configuration
+            // has been sent to client by {@link android.app.IApplicationThread#bindApplication}.
+            // If this process is system server, it is fine because system is booting and a new
+            // configuration will update when display is ready.
+            setLastReportedConfiguration(getConfiguration());
         }
     }
 
@@ -1060,7 +1062,6 @@
         mNewOverrideConfig.setTo(mergedOverrideConfig);
         mNewOverrideConfig.windowConfiguration.setActivityType(ACTIVITY_TYPE_UNDEFINED);
         super.onRequestedOverrideConfigurationChanged(mNewOverrideConfig);
-        updateConfiguration();
     }
 
     private void updateConfiguration() {
diff --git a/services/core/java/com/android/server/wm/WindowState.java b/services/core/java/com/android/server/wm/WindowState.java
index b9694c3..b336f8d 100644
--- a/services/core/java/com/android/server/wm/WindowState.java
+++ b/services/core/java/com/android/server/wm/WindowState.java
@@ -115,6 +115,7 @@
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_ORIENTATION;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_RESIZE;
 import static com.android.server.wm.ProtoLogGroup.WM_DEBUG_STARTING_WINDOW;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
 import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
 import static com.android.server.wm.WindowManagerDebugConfig.DEBUG;
@@ -196,7 +197,6 @@
 import android.util.DisplayMetrics;
 import android.util.MergedConfiguration;
 import android.util.Slog;
-import android.util.StatsLog;
 import android.util.TimeUtils;
 import android.util.proto.ProtoOutputStream;
 import android.view.Display;
@@ -227,10 +227,12 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.policy.KeyInterceptionInfo;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.ToBooleanFunction;
 import com.android.server.policy.WindowManagerPolicy;
 import com.android.server.protolog.common.ProtoLog;
 import com.android.server.wm.LocalAnimationAdapter.AnimationSpec;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.utils.WmDisplayCutout;
 
 import java.io.PrintWriter;
@@ -415,6 +417,9 @@
 
     private final WindowFrames mWindowFrames = new WindowFrames();
 
+    /** The frames used to compute a temporal layout appearance. */
+    private WindowFrames mSimulatedWindowFrames;
+
     /**
      * Usually empty. Set to the task's tempInsetFrame. See
      *{@link android.app.IActivityTaskManager#resizeDockedStack}.
@@ -970,6 +975,16 @@
         return super.getDisplayedBounds();
     }
 
+    void computeFrame(DisplayFrames displayFrames) {
+        getLayoutingWindowFrames().setDisplayCutout(displayFrames.mDisplayCutout);
+        computeFrameLw();
+        // Update the source frame to provide insets to other windows during layout. If the
+        // simulated frames exist, then this is not computing a stable result so just skip.
+        if (mControllableInsetProvider != null && mSimulatedWindowFrames == null) {
+            mControllableInsetProvider.updateSourceFrame();
+        }
+    }
+
     @Override
     public void computeFrameLw() {
         if (mWillReplaceWindow && (mAnimatingExit || !mReplacingRemoveRequested)) {
@@ -985,6 +1000,7 @@
         final boolean isFullscreenAndFillsDisplay = !inMultiWindowMode() && matchesDisplayBounds();
         final boolean windowsAreFloating = task != null && task.isFloating();
         final DisplayContent dc = getDisplayContent();
+        final WindowFrames windowFrames = getLayoutingWindowFrames();
 
         mInsetFrame.set(getBounds());
 
@@ -1006,43 +1022,43 @@
                 imeWin != null && imeWin.isVisibleNow() && isInputMethodAdjustTarget;
         if (isFullscreenAndFillsDisplay || layoutInParentFrame()) {
             // We use the parent frame as the containing frame for fullscreen and child windows
-            mWindowFrames.mContainingFrame.set(mWindowFrames.mParentFrame);
-            layoutDisplayFrame = mWindowFrames.mDisplayFrame;
-            layoutContainingFrame = mWindowFrames.mParentFrame;
+            windowFrames.mContainingFrame.set(windowFrames.mParentFrame);
+            layoutDisplayFrame = windowFrames.mDisplayFrame;
+            layoutContainingFrame = windowFrames.mParentFrame;
             layoutXDiff = 0;
             layoutYDiff = 0;
         } else {
-            mWindowFrames.mContainingFrame.set(getDisplayedBounds());
+            windowFrames.mContainingFrame.set(getDisplayedBounds());
             if (mActivityRecord != null && !mActivityRecord.mFrozenBounds.isEmpty()) {
 
                 // If the bounds are frozen, we still want to translate the window freely and only
                 // freeze the size.
                 Rect frozen = mActivityRecord.mFrozenBounds.peek();
-                mWindowFrames.mContainingFrame.right =
-                        mWindowFrames.mContainingFrame.left + frozen.width();
-                mWindowFrames.mContainingFrame.bottom =
-                        mWindowFrames.mContainingFrame.top + frozen.height();
+                windowFrames.mContainingFrame.right =
+                        windowFrames.mContainingFrame.left + frozen.width();
+                windowFrames.mContainingFrame.bottom =
+                        windowFrames.mContainingFrame.top + frozen.height();
             }
             // IME is up and obscuring this window. Adjust the window position so it is visible.
             if (isImeTarget) {
                 if (inFreeformWindowingMode()) {
                     // Push the freeform window up to make room for the IME. However, don't push
                     // it up past the top of the screen.
-                    final int bottomOverlap = mWindowFrames.mContainingFrame.bottom
-                            - mWindowFrames.mVisibleFrame.bottom;
+                    final int bottomOverlap = windowFrames.mContainingFrame.bottom
+                            - windowFrames.mVisibleFrame.bottom;
                     if (bottomOverlap > 0) {
-                        final int distanceToTop = Math.max(mWindowFrames.mContainingFrame.top
-                                - mWindowFrames.mContentFrame.top, 0);
+                        final int distanceToTop = Math.max(windowFrames.mContainingFrame.top
+                                - windowFrames.mContentFrame.top, 0);
                         int offs = Math.min(bottomOverlap, distanceToTop);
-                        mWindowFrames.mContainingFrame.offset(0, -offs);
+                        windowFrames.mContainingFrame.offset(0, -offs);
                         mInsetFrame.offset(0, -offs);
                     }
-                } else if (!inPinnedWindowingMode() && mWindowFrames.mContainingFrame.bottom
-                        > mWindowFrames.mParentFrame.bottom) {
+                } else if (!inPinnedWindowingMode() && windowFrames.mContainingFrame.bottom
+                        > windowFrames.mParentFrame.bottom) {
                     // But in docked we want to behave like fullscreen and behave as if the task
                     // were given smaller bounds for the purposes of layout. Skip adjustments for
                     // the pinned stack, they are handled separately in the PinnedStackController.
-                    mWindowFrames.mContainingFrame.bottom = mWindowFrames.mParentFrame.bottom;
+                    windowFrames.mContainingFrame.bottom = windowFrames.mParentFrame.bottom;
                 }
             }
 
@@ -1050,8 +1066,8 @@
                 // In floating modes (e.g. freeform, pinned) we have only to set the rectangle
                 // if it wasn't set already. No need to intersect it with the (visible)
                 // "content frame" since it is allowed to be outside the visible desktop.
-                if (mWindowFrames.mContainingFrame.isEmpty()) {
-                    mWindowFrames.mContainingFrame.set(mWindowFrames.mContentFrame);
+                if (windowFrames.mContainingFrame.isEmpty()) {
+                    windowFrames.mContainingFrame.set(windowFrames.mContentFrame);
                 }
             }
 
@@ -1061,115 +1077,115 @@
                 // PIP edge case: When going from pinned to fullscreen, we apply a
                 // tempInsetFrame for the full task - but we're still at the start of the animation.
                 // To prevent a jump if there's a letterbox, restrict to the parent frame.
-                mInsetFrame.intersectUnchecked(mWindowFrames.mParentFrame);
-                mWindowFrames.mContainingFrame.intersectUnchecked(mWindowFrames.mParentFrame);
+                mInsetFrame.intersectUnchecked(windowFrames.mParentFrame);
+                windowFrames.mContainingFrame.intersectUnchecked(windowFrames.mParentFrame);
             }
 
-            layoutDisplayFrame = new Rect(mWindowFrames.mDisplayFrame);
-            mWindowFrames.mDisplayFrame.set(mWindowFrames.mContainingFrame);
-            layoutXDiff = mInsetFrame.left - mWindowFrames.mContainingFrame.left;
-            layoutYDiff = mInsetFrame.top - mWindowFrames.mContainingFrame.top;
+            layoutDisplayFrame = new Rect(windowFrames.mDisplayFrame);
+            windowFrames.mDisplayFrame.set(windowFrames.mContainingFrame);
+            layoutXDiff = mInsetFrame.left - windowFrames.mContainingFrame.left;
+            layoutYDiff = mInsetFrame.top - windowFrames.mContainingFrame.top;
             layoutContainingFrame = mInsetFrame;
             mTmpRect.set(0, 0, dc.getDisplayInfo().logicalWidth, dc.getDisplayInfo().logicalHeight);
-            subtractInsets(mWindowFrames.mDisplayFrame, layoutContainingFrame, layoutDisplayFrame,
+            subtractInsets(windowFrames.mDisplayFrame, layoutContainingFrame, layoutDisplayFrame,
                     mTmpRect);
             if (!layoutInParentFrame()) {
-                subtractInsets(mWindowFrames.mContainingFrame, layoutContainingFrame,
-                        mWindowFrames.mParentFrame, mTmpRect);
-                subtractInsets(mInsetFrame, layoutContainingFrame, mWindowFrames.mParentFrame,
+                subtractInsets(windowFrames.mContainingFrame, layoutContainingFrame,
+                        windowFrames.mParentFrame, mTmpRect);
+                subtractInsets(mInsetFrame, layoutContainingFrame, windowFrames.mParentFrame,
                         mTmpRect);
             }
             layoutDisplayFrame.intersect(layoutContainingFrame);
         }
 
-        final int pw = mWindowFrames.mContainingFrame.width();
-        final int ph = mWindowFrames.mContainingFrame.height();
+        final int pw = windowFrames.mContainingFrame.width();
+        final int ph = windowFrames.mContainingFrame.height();
 
         if (mRequestedWidth != mLastRequestedWidth || mRequestedHeight != mLastRequestedHeight) {
             mLastRequestedWidth = mRequestedWidth;
             mLastRequestedHeight = mRequestedHeight;
-            mWindowFrames.setContentChanged(true);
+            windowFrames.setContentChanged(true);
         }
 
-        final int fw = mWindowFrames.mFrame.width();
-        final int fh = mWindowFrames.mFrame.height();
+        final int fw = windowFrames.mFrame.width();
+        final int fh = windowFrames.mFrame.height();
 
-        applyGravityAndUpdateFrame(layoutContainingFrame, layoutDisplayFrame);
+        applyGravityAndUpdateFrame(windowFrames, layoutContainingFrame, layoutDisplayFrame);
 
         // Make sure the content and visible frames are inside of the
         // final window frame.
-        if (windowsAreFloating && !mWindowFrames.mFrame.isEmpty()) {
-            final int visBottom = mWindowFrames.mVisibleFrame.bottom;
-            final int contentBottom = mWindowFrames.mContentFrame.bottom;
-            mWindowFrames.mContentFrame.set(mWindowFrames.mFrame);
-            mWindowFrames.mVisibleFrame.set(mWindowFrames.mContentFrame);
-            mWindowFrames.mStableFrame.set(mWindowFrames.mContentFrame);
+        if (windowsAreFloating && !windowFrames.mFrame.isEmpty()) {
+            final int visBottom = windowFrames.mVisibleFrame.bottom;
+            final int contentBottom = windowFrames.mContentFrame.bottom;
+            windowFrames.mContentFrame.set(windowFrames.mFrame);
+            windowFrames.mVisibleFrame.set(windowFrames.mContentFrame);
+            windowFrames.mStableFrame.set(windowFrames.mContentFrame);
             if (isImeTarget && inFreeformWindowingMode()) {
                 // After displacing a freeform window to make room for the ime, any part of
                 // the window still covered by IME should be inset.
-                if (contentBottom + layoutYDiff < mWindowFrames.mContentFrame.bottom) {
-                    mWindowFrames.mContentFrame.bottom = contentBottom + layoutYDiff;
+                if (contentBottom + layoutYDiff < windowFrames.mContentFrame.bottom) {
+                    windowFrames.mContentFrame.bottom = contentBottom + layoutYDiff;
                 }
-                if (visBottom + layoutYDiff < mWindowFrames.mVisibleFrame.bottom) {
-                    mWindowFrames.mVisibleFrame.bottom = visBottom + layoutYDiff;
+                if (visBottom + layoutYDiff < windowFrames.mVisibleFrame.bottom) {
+                    windowFrames.mVisibleFrame.bottom = visBottom + layoutYDiff;
                 }
             }
         } else if (mAttrs.type == TYPE_DOCK_DIVIDER) {
-            dc.getDockedDividerController().positionDockedStackedDivider(mWindowFrames.mFrame);
-            mWindowFrames.mContentFrame.set(mWindowFrames.mFrame);
-            if (!mWindowFrames.mFrame.equals(mWindowFrames.mLastFrame)) {
+            dc.getDockedDividerController().positionDockedStackedDivider(windowFrames.mFrame);
+            windowFrames.mContentFrame.set(windowFrames.mFrame);
+            if (!windowFrames.mFrame.equals(windowFrames.mLastFrame)) {
                 mMovedByResize = true;
             }
         } else {
-            mWindowFrames.mContentFrame.set(
-                    Math.max(mWindowFrames.mContentFrame.left, mWindowFrames.mFrame.left),
-                    Math.max(mWindowFrames.mContentFrame.top, mWindowFrames.mFrame.top),
-                    Math.min(mWindowFrames.mContentFrame.right, mWindowFrames.mFrame.right),
-                    Math.min(mWindowFrames.mContentFrame.bottom, mWindowFrames.mFrame.bottom));
+            windowFrames.mContentFrame.set(
+                    Math.max(windowFrames.mContentFrame.left, windowFrames.mFrame.left),
+                    Math.max(windowFrames.mContentFrame.top, windowFrames.mFrame.top),
+                    Math.min(windowFrames.mContentFrame.right, windowFrames.mFrame.right),
+                    Math.min(windowFrames.mContentFrame.bottom, windowFrames.mFrame.bottom));
 
-            mWindowFrames.mVisibleFrame.set(
-                    Math.max(mWindowFrames.mVisibleFrame.left, mWindowFrames.mFrame.left),
-                    Math.max(mWindowFrames.mVisibleFrame.top, mWindowFrames.mFrame.top),
-                    Math.min(mWindowFrames.mVisibleFrame.right, mWindowFrames.mFrame.right),
-                    Math.min(mWindowFrames.mVisibleFrame.bottom, mWindowFrames.mFrame.bottom));
+            windowFrames.mVisibleFrame.set(
+                    Math.max(windowFrames.mVisibleFrame.left, windowFrames.mFrame.left),
+                    Math.max(windowFrames.mVisibleFrame.top, windowFrames.mFrame.top),
+                    Math.min(windowFrames.mVisibleFrame.right, windowFrames.mFrame.right),
+                    Math.min(windowFrames.mVisibleFrame.bottom, windowFrames.mFrame.bottom));
 
-            mWindowFrames.mStableFrame.set(
-                    Math.max(mWindowFrames.mStableFrame.left, mWindowFrames.mFrame.left),
-                    Math.max(mWindowFrames.mStableFrame.top, mWindowFrames.mFrame.top),
-                    Math.min(mWindowFrames.mStableFrame.right, mWindowFrames.mFrame.right),
-                    Math.min(mWindowFrames.mStableFrame.bottom, mWindowFrames.mFrame.bottom));
+            windowFrames.mStableFrame.set(
+                    Math.max(windowFrames.mStableFrame.left, windowFrames.mFrame.left),
+                    Math.max(windowFrames.mStableFrame.top, windowFrames.mFrame.top),
+                    Math.min(windowFrames.mStableFrame.right, windowFrames.mFrame.right),
+                    Math.min(windowFrames.mStableFrame.bottom, windowFrames.mFrame.bottom));
         }
 
         if (mAttrs.type == TYPE_DOCK_DIVIDER) {
-            final WmDisplayCutout c = mWindowFrames.mDisplayCutout.calculateRelativeTo(
-                    mWindowFrames.mDisplayFrame);
-            mWindowFrames.calculateDockedDividerInsets(c.getDisplayCutout().getSafeInsets());
+            final WmDisplayCutout c = windowFrames.mDisplayCutout.calculateRelativeTo(
+                    windowFrames.mDisplayFrame);
+            windowFrames.calculateDockedDividerInsets(c.getDisplayCutout().getSafeInsets());
         } else {
             getDisplayContent().getBounds(mTmpRect);
-            mWindowFrames.calculateInsets(
+            windowFrames.calculateInsets(
                     windowsAreFloating, isFullscreenAndFillsDisplay, mTmpRect);
         }
 
-        mWindowFrames.setDisplayCutout(
-                mWindowFrames.mDisplayCutout.calculateRelativeTo(mWindowFrames.mFrame));
+        windowFrames.setDisplayCutout(
+                windowFrames.mDisplayCutout.calculateRelativeTo(windowFrames.mFrame));
 
         // Offset the actual frame by the amount layout frame is off.
-        mWindowFrames.offsetFrames(-layoutXDiff, -layoutYDiff);
+        windowFrames.offsetFrames(-layoutXDiff, -layoutYDiff);
 
-        mWindowFrames.mCompatFrame.set(mWindowFrames.mFrame);
+        windowFrames.mCompatFrame.set(windowFrames.mFrame);
         if (inSizeCompatMode()) {
             // If there is a size compatibility scale being applied to the
             // window, we need to apply this to its insets so that they are
             // reported to the app in its coordinate space.
-            mWindowFrames.scaleInsets(mInvGlobalScale);
+            windowFrames.scaleInsets(mInvGlobalScale);
 
             // Also the scaled frame that we report to the app needs to be
             // adjusted to be in its coordinate space.
-            mWindowFrames.mCompatFrame.scale(mInvGlobalScale);
+            windowFrames.mCompatFrame.scale(mInvGlobalScale);
         }
 
-        if (mIsWallpaper && (fw != mWindowFrames.mFrame.width()
-                || fh != mWindowFrames.mFrame.height())) {
+        if (mIsWallpaper && (fw != windowFrames.mFrame.width()
+                || fh != windowFrames.mFrame.height())) {
             final DisplayContent displayContent = getDisplayContent();
             if (displayContent != null) {
                 final DisplayInfo displayInfo = displayContent.getDisplayInfo();
@@ -1179,7 +1195,7 @@
         }
 
         // Calculate relative frame
-        mWindowFrames.mRelFrame.set(mWindowFrames.mFrame);
+        windowFrames.mRelFrame.set(windowFrames.mFrame);
         WindowContainer parent = getParent();
         int parentLeft = 0;
         int parentTop = 0;
@@ -1191,15 +1207,15 @@
             parentLeft = parentBounds.left;
             parentTop = parentBounds.top;
         }
-        mWindowFrames.mRelFrame.offsetTo(mWindowFrames.mFrame.left - parentLeft,
-                mWindowFrames.mFrame.top - parentTop);
+        windowFrames.mRelFrame.offsetTo(windowFrames.mFrame.left - parentLeft,
+                windowFrames.mFrame.top - parentTop);
 
         if (DEBUG_LAYOUT || DEBUG) {
             Slog.v(TAG, "Resolving (mRequestedWidth="
                             + mRequestedWidth + ", mRequestedheight="
                             + mRequestedHeight + ") to" + " (pw=" + pw + ", ph=" + ph
-                            + "): frame=" + mWindowFrames.mFrame.toShortString()
-                            + " " + mWindowFrames.getInsetsInfo()
+                            + "): frame=" + windowFrames.mFrame.toShortString()
+                            + " " + windowFrames.getInsetsInfo()
                             + " " + mAttrs.getTitle());
         }
     }
@@ -3154,7 +3170,7 @@
         final int requested = mLastRequestedExclusionHeight[side];
         final int granted = mLastGrantedExclusionHeight[side];
 
-        StatsLog.write(StatsLog.EXCLUSION_RECT_STATE_CHANGED,
+        FrameworkStatsLog.write(FrameworkStatsLog.EXCLUSION_RECT_STATE_CHANGED,
                 mAttrs.packageName, requested, requested - granted /* rejected */,
                 side + 1 /* Sides are 1-indexed in atoms.proto */,
                 (getConfiguration().orientation == ORIENTATION_LANDSCAPE),
@@ -3518,6 +3534,11 @@
     }
 
     @Override
+    public WindowState getWindow() {
+        return this;
+    }
+
+    @Override
     public void showInsets(@InsetsType int types, boolean fromIme) {
         try {
             mClient.showInsets(types, fromIme);
@@ -3979,7 +4000,8 @@
         }
     }
 
-    private void applyGravityAndUpdateFrame(Rect containingFrame, Rect displayFrame) {
+    private void applyGravityAndUpdateFrame(WindowFrames windowFrames, Rect containingFrame,
+            Rect displayFrame) {
         final int pw = containingFrame.width();
         final int ph = containingFrame.height();
         final Task task = getTask();
@@ -4049,19 +4071,19 @@
         // Set mFrame
         Gravity.apply(mAttrs.gravity, w, h, containingFrame,
                 (int) (x + mAttrs.horizontalMargin * pw),
-                (int) (y + mAttrs.verticalMargin * ph), mWindowFrames.mFrame);
+                (int) (y + mAttrs.verticalMargin * ph), windowFrames.mFrame);
 
         // Now make sure the window fits in the overall display frame.
         if (fitToDisplay) {
-            Gravity.applyDisplay(mAttrs.gravity, displayFrame, mWindowFrames.mFrame);
+            Gravity.applyDisplay(mAttrs.gravity, displayFrame, windowFrames.mFrame);
         }
 
         // We need to make sure we update the CompatFrame as it is used for
         // cropping decisions, etc, on systems where we lack a decor layer.
-        mWindowFrames.mCompatFrame.set(mWindowFrames.mFrame);
+        windowFrames.mCompatFrame.set(windowFrames.mFrame);
         if (inSizeCompatMode) {
             // See comparable block in computeFrameLw.
-            mWindowFrames.mCompatFrame.scale(mInvGlobalScale);
+            windowFrames.mCompatFrame.scale(mInvGlobalScale);
         }
     }
 
@@ -4970,6 +4992,18 @@
         mWindowFrames.updateLastInsetValues();
     }
 
+    @Override
+    boolean isAnimating(int flags) {
+
+        // If we are an inset provider, all our animations are driven by the inset client, so we
+        // aren't really animating.
+        // TODO: Replace this with a proper animation type system.
+        if (mControllableInsetProvider != null) {
+            return false;
+        }
+        return super.isAnimating(flags);
+    }
+
     void startAnimation(Animation anim) {
 
         // If we are an inset provider, all our animations are driven by the inset client.
@@ -5010,12 +5044,13 @@
     }
 
     private void startAnimation(Transaction t, AnimationAdapter adapter) {
-        startAnimation(t, adapter, mWinAnimator.mLastHidden, null /* animationFinishedCallback */);
+        startAnimation(t, adapter, mWinAnimator.mLastHidden, ANIMATION_TYPE_WINDOW_ANIMATION,
+                null /* animationFinishedCallback */);
     }
 
     @Override
-    protected void onAnimationFinished() {
-        super.onAnimationFinished();
+    protected void onAnimationFinished(@AnimationType int type, AnimationAdapter anim) {
+        super.onAnimationFinished(type, anim);
         mWinAnimator.onAnimationFinished();
     }
 
@@ -5322,6 +5357,24 @@
         return false;
     }
 
+    /**
+     * Get IME target that should host IME when this window's display has a parent.
+     * Note: IME is never hosted by a display that has a parent.
+     * When window calling
+     * {@link android.view.inputmethod.InputMethodManager#showSoftInput(View, int)} is unknown,
+     * use {@link DisplayContent#getImeControlTarget()} instead.
+     *
+     * @return {@link WindowState} of host that controls the IME.
+     *         When window is doesn't have a parent, it is returned as-is.
+     */
+    WindowState getImeControlTarget() {
+        final DisplayContent dc = getDisplayContent();
+        final WindowState parentWindow = dc.getParentWindow();
+
+        // If target's display has a parent, IME is displayed in the parent display.
+        return dc.getImeHostOrFallback(parentWindow != null ? parentWindow : this);
+    }
+
     @Override
     void assignLayer(Transaction t, int layer) {
         // See comment in assignRelativeLayerForImeTargetChild
@@ -5495,6 +5548,22 @@
         return mWindowFrames;
     }
 
+    /**
+     * If the transient frame is set, the computed result won't be used in real layout. So this
+     * frames must be cleared when the simulated computation is done.
+     */
+    void setSimulatedWindowFrames(WindowFrames windowFrames) {
+        mSimulatedWindowFrames = windowFrames;
+    }
+
+    /**
+     * Use this method only when the simulated frames may be set, so it is clearer that the calling
+     * path may be used to simulate layout.
+     */
+    WindowFrames getLayoutingWindowFrames() {
+        return mSimulatedWindowFrames != null ? mSimulatedWindowFrames : mWindowFrames;
+    }
+
     void resetContentChanged() {
         mWindowFrames.setContentChanged(false);
     }
@@ -5620,4 +5689,30 @@
     SurfaceControl getDeferTransactionBarrier() {
         return mWinAnimator.getDeferTransactionBarrier();
     }
+
+    @Override
+    boolean prepareForSync(BLASTSyncEngine.TransactionReadyListener waitingListener,
+            int waitingId) {
+        // TODO(b/148871522): Support child window
+        mWaitingListener = waitingListener;
+        mWaitingSyncId = waitingId;
+        mUsingBLASTSyncTransaction = true;
+        return true;
+    }
+
+    boolean finishDrawing(SurfaceControl.Transaction postDrawTransaction) {
+        if (!mUsingBLASTSyncTransaction) {
+            return mWinAnimator.finishDrawingLocked(postDrawTransaction);
+        }
+        if (postDrawTransaction == null) {
+            postDrawTransaction = new SurfaceControl.Transaction();
+        }
+        postDrawTransaction.merge(mBLASTSyncTransaction);
+        mWaitingListener.transactionReady(mWaitingSyncId, postDrawTransaction);
+        mUsingBLASTSyncTransaction = false;
+
+        mWaitingSyncId = 0;
+        mWaitingListener = null;
+        return mWinAnimator.finishDrawingLocked(null);
+    }
 }
diff --git a/services/core/java/com/android/server/wm/utils/DisplayRotationUtil.java b/services/core/java/com/android/server/wm/utils/DisplayRotationUtil.java
index 9f307bb..59abaab 100644
--- a/services/core/java/com/android/server/wm/utils/DisplayRotationUtil.java
+++ b/services/core/java/com/android/server/wm/utils/DisplayRotationUtil.java
@@ -59,7 +59,7 @@
     }
 
     /**
-     * Compute bounds after rotating teh screen.
+     * Compute bounds after rotating the screen.
      *
      * @param bounds Bounds before the rotation. The array must contain exactly 4 non-null elements.
      * @param rotation rotation constant defined in android.view.Surface.
diff --git a/services/core/java/com/android/server/wm/utils/WmDisplayCutout.java b/services/core/java/com/android/server/wm/utils/WmDisplayCutout.java
index 3be5d31..46fff03 100644
--- a/services/core/java/com/android/server/wm/utils/WmDisplayCutout.java
+++ b/services/core/java/com/android/server/wm/utils/WmDisplayCutout.java
@@ -21,7 +21,6 @@
 import android.view.DisplayCutout;
 import android.view.Gravity;
 
-import java.util.List;
 import java.util.Objects;
 
 /**
@@ -41,12 +40,17 @@
         mFrameSize = frameSize;
     }
 
-    public static WmDisplayCutout computeSafeInsets(DisplayCutout inner,
-            int displayWidth, int displayHeight) {
-        if (inner == DisplayCutout.NO_CUTOUT || inner.isBoundsEmpty()) {
+    /**
+     * Compute the safe insets according to the given DisplayCutout and the display size.
+     *
+     * @return return a WmDisplayCutout with calculated safe insets.
+     * @hide
+     */
+    public static WmDisplayCutout computeSafeInsets(
+            DisplayCutout inner, int displayWidth, int displayHeight) {
+        if (inner == DisplayCutout.NO_CUTOUT) {
             return NO_CUTOUT;
         }
-
         final Size displaySize = new Size(displayWidth, displayHeight);
         final Rect safeInsets = computeSafeInsets(displaySize, inner);
         return new WmDisplayCutout(inner.replaceSafeInsets(safeInsets), displaySize);
@@ -112,57 +116,42 @@
     }
 
     private static Rect computeSafeInsets(Size displaySize, DisplayCutout cutout) {
-        if (displaySize.getWidth() < displaySize.getHeight()) {
-            final List<Rect> boundingRects = cutout.replaceSafeInsets(
-                    new Rect(0, displaySize.getHeight() / 2, 0, displaySize.getHeight() / 2))
-                    .getBoundingRects();
-            int topInset = findInsetForSide(displaySize, boundingRects, Gravity.TOP);
-            int bottomInset = findInsetForSide(displaySize, boundingRects, Gravity.BOTTOM);
-            return new Rect(0, topInset, 0, bottomInset);
-        } else if (displaySize.getWidth() > displaySize.getHeight()) {
-            final List<Rect> boundingRects = cutout.replaceSafeInsets(
-                    new Rect(displaySize.getWidth() / 2, 0, displaySize.getWidth() / 2, 0))
-                    .getBoundingRects();
-            int leftInset = findInsetForSide(displaySize, boundingRects, Gravity.LEFT);
-            int right = findInsetForSide(displaySize, boundingRects, Gravity.RIGHT);
-            return new Rect(leftInset, 0, right, 0);
-        } else {
+        if (displaySize.getWidth() == displaySize.getHeight()) {
             throw new UnsupportedOperationException("not implemented: display=" + displaySize +
                     " cutout=" + cutout);
         }
+
+        int leftInset = Math.max(cutout.getWaterfallInsets().left,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectLeft(), Gravity.LEFT));
+        int topInset = Math.max(cutout.getWaterfallInsets().top,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectTop(), Gravity.TOP));
+        int rightInset = Math.max(cutout.getWaterfallInsets().right,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectRight(), Gravity.RIGHT));
+        int bottomInset = Math.max(cutout.getWaterfallInsets().bottom,
+                findCutoutInsetForSide(displaySize, cutout.getBoundingRectBottom(),
+                        Gravity.BOTTOM));
+
+        return new Rect(leftInset, topInset, rightInset, bottomInset);
     }
 
-    private static int findInsetForSide(Size display, List<Rect> boundingRects, int gravity) {
-        int inset = 0;
-        final int size = boundingRects.size();
-        for (int i = 0; i < size; i++) {
-            Rect boundingRect = boundingRects.get(i);
-            switch (gravity) {
-                case Gravity.TOP:
-                    if (boundingRect.top == 0) {
-                        inset = Math.max(inset, boundingRect.bottom);
-                    }
-                    break;
-                case Gravity.BOTTOM:
-                    if (boundingRect.bottom == display.getHeight()) {
-                        inset = Math.max(inset, display.getHeight() - boundingRect.top);
-                    }
-                    break;
-                case Gravity.LEFT:
-                    if (boundingRect.left == 0) {
-                        inset = Math.max(inset, boundingRect.right);
-                    }
-                    break;
-                case Gravity.RIGHT:
-                    if (boundingRect.right == display.getWidth()) {
-                        inset = Math.max(inset, display.getWidth() - boundingRect.left);
-                    }
-                    break;
-                default:
-                    throw new IllegalArgumentException("unknown gravity: " + gravity);
-            }
+    private static int findCutoutInsetForSide(Size display, Rect boundingRect, int gravity) {
+        if (boundingRect.isEmpty()) {
+            return 0;
         }
-        return inset;
+
+        int inset = 0;
+        switch (gravity) {
+            case Gravity.TOP:
+                return Math.max(inset, boundingRect.bottom);
+            case Gravity.BOTTOM:
+                return Math.max(inset, display.getHeight() - boundingRect.top);
+            case Gravity.LEFT:
+                return Math.max(inset, boundingRect.right);
+            case Gravity.RIGHT:
+                return Math.max(inset, display.getWidth() - boundingRect.left);
+            default:
+                throw new IllegalArgumentException("unknown gravity: " + gravity);
+        }
     }
 
     public DisplayCutout getDisplayCutout() {
diff --git a/services/core/jni/Android.bp b/services/core/jni/Android.bp
index 4a2636e..e888f2a 100644
--- a/services/core/jni/Android.bp
+++ b/services/core/jni/Android.bp
@@ -2,6 +2,7 @@
     name: "libservices.core",
     defaults: ["libservices.core-libs"],
 
+    cpp_std: "c++2a",
     cflags: [
         "-Wall",
         "-Werror",
@@ -13,7 +14,6 @@
     ],
 
     srcs: [
-        ":graphicsstats_proto",
         ":lib_alarmManagerService_native",
         "BroadcastRadio/JavaRef.cpp",
         "BroadcastRadio/NativeCallbackThread.cpp",
@@ -22,6 +22,8 @@
         "BroadcastRadio/TunerCallback.cpp",
         "BroadcastRadio/convert.cpp",
         "BroadcastRadio/regions.cpp",
+        "stats/PowerStatsPuller.cpp",
+        "stats/SubsystemSleepStatePuller.cpp",
         "com_android_server_am_BatteryStatsService.cpp",
         "com_android_server_connectivity_Vpn.cpp",
         "com_android_server_ConsumerIrService.cpp",
@@ -37,6 +39,7 @@
         "com_android_server_security_VerityUtils.cpp",
         "com_android_server_SerialService.cpp",
         "com_android_server_soundtrigger_middleware_AudioSessionProviderImpl.cpp",
+        "com_android_server_stats_pull_StatsPullAtomService.cpp",
         "com_android_server_storage_AppFuseBridge.cpp",
         "com_android_server_SystemServer.cpp",
         "com_android_server_TestNetworkService.cpp",
@@ -50,10 +53,10 @@
         "com_android_server_UsbHostManager.cpp",
         "com_android_server_VibratorService.cpp",
         "com_android_server_PersistentDataBlockService.cpp",
-        "com_android_server_GraphicsStatsService.cpp",
         "com_android_server_am_CachedAppOptimizer.cpp",
         "com_android_server_am_LowMemDetector.cpp",
         "com_android_server_incremental_IncrementalManagerService.cpp",
+        "com_android_server_pm_PackageManagerShellCommandDataLoader.cpp",
         "onload.cpp",
         ":lib_networkStatsFactory_native",
     ],
@@ -104,8 +107,7 @@
         "libinputflinger",
         "libinputflinger_base",
         "libinputservice",
-        "libprotobuf-cpp-lite",
-        "libprotoutil",
+        "libstatshidl",
         "libstatspull",
         "libstatssocket",
         "libstatslog",
@@ -125,6 +127,8 @@
         "libnetdbpf",
         "libnetdutils",
         "libpsi",
+        "libdataloader",
+        "libincfs",
         "android.hardware.audio.common@2.0",
         "android.hardware.broadcastradio@1.0",
         "android.hardware.broadcastradio@1.1",
@@ -152,6 +156,7 @@
         "android.hardware.vr@1.0",
         "android.frameworks.schedulerservice@1.0",
         "android.frameworks.sensorservice@1.0",
+        "android.frameworks.stats@1.0",
         "android.system.suspend@1.0",
         "service.incremental",
         "suspend_control_aidl_interface-cpp",
diff --git a/services/core/jni/com_android_server_GraphicsStatsService.cpp b/services/core/jni/com_android_server_GraphicsStatsService.cpp
deleted file mode 100644
index 7644ade..0000000
--- a/services/core/jni/com_android_server_GraphicsStatsService.cpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright (C) 2017 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.
- */
-
-#define LOG_TAG "GraphicsStatsService"
-
-#include <jni.h>
-#include <log/log.h>
-#include <nativehelper/JNIHelp.h>
-#include <nativehelper/ScopedPrimitiveArray.h>
-#include <nativehelper/ScopedUtfChars.h>
-#include <JankTracker.h>
-#include <service/GraphicsStatsService.h>
-#include <stats_pull_atom_callback.h>
-#include <stats_event.h>
-#include <statslog.h>
-#include <google/protobuf/io/zero_copy_stream_impl_lite.h>
-#include <android/util/ProtoOutputStream.h>
-#include "android/graphics/Utils.h"
-#include "core_jni_helpers.h"
-#include "protos/graphicsstats.pb.h"
-#include <cstring>
-#include <memory>
-
-namespace android {
-
-using namespace android::uirenderer;
-
-static jint getAshmemSize(JNIEnv*, jobject) {
-    return sizeof(ProfileData);
-}
-
-static jlong createDump(JNIEnv*, jobject, jint fd, jboolean isProto) {
-    GraphicsStatsService::Dump* dump = GraphicsStatsService::createDump(fd, isProto
-            ? GraphicsStatsService::DumpType::Protobuf : GraphicsStatsService::DumpType::Text);
-    return reinterpret_cast<jlong>(dump);
-}
-
-static void addToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath, jstring jpackage,
-        jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
-    std::string path;
-    const ProfileData* data = nullptr;
-    LOG_ALWAYS_FATAL_IF(jdata == nullptr && jpath == nullptr, "Path and data can't both be null");
-    ScopedByteArrayRO buffer{env};
-    if (jdata != nullptr) {
-        buffer.reset(jdata);
-        LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
-                "Buffer size %zu doesn't match expected %zu!", buffer.size(), sizeof(ProfileData));
-        data = reinterpret_cast<const ProfileData*>(buffer.get());
-    }
-    if (jpath != nullptr) {
-        ScopedUtfChars pathChars(env, jpath);
-        LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(), "Failed to get path chars");
-        path.assign(pathChars.c_str(), pathChars.size());
-    }
-    ScopedUtfChars packageChars(env, jpackage);
-    LOG_ALWAYS_FATAL_IF(packageChars.size() <= 0 || !packageChars.c_str(), "Failed to get path chars");
-    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
-    LOG_ALWAYS_FATAL_IF(!dump, "null passed for dump pointer");
-
-    const std::string package(packageChars.c_str(), packageChars.size());
-    GraphicsStatsService::addToDump(dump, path, package, versionCode, startTime, endTime, data);
-}
-
-static void addFileToDump(JNIEnv* env, jobject, jlong dumpPtr, jstring jpath) {
-    ScopedUtfChars pathChars(env, jpath);
-    LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(), "Failed to get path chars");
-    const std::string path(pathChars.c_str(), pathChars.size());
-    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
-    GraphicsStatsService::addToDump(dump, path);
-}
-
-static void finishDump(JNIEnv*, jobject, jlong dumpPtr) {
-    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
-    GraphicsStatsService::finishDump(dump);
-}
-
-static jlong finishDumpInMemory(JNIEnv* env, jobject, jlong dumpPtr) {
-    GraphicsStatsService::Dump* dump = reinterpret_cast<GraphicsStatsService::Dump*>(dumpPtr);
-    std::vector<uint8_t>* result = new std::vector<uint8_t>();
-    GraphicsStatsService::finishDumpInMemory(dump,
-        [](void* buffer, int bufferOffset, int bufferSize, int totalSize, void* param1, void* param2) {
-            std::vector<uint8_t>* outBuffer = reinterpret_cast<std::vector<uint8_t>*>(param2);
-            if (outBuffer->size() < totalSize) {
-                outBuffer->resize(totalSize);
-            }
-            std::memcpy(outBuffer->data() + bufferOffset, buffer, bufferSize);
-        }, env, result);
-    return reinterpret_cast<jlong>(result);
-}
-
-static void saveBuffer(JNIEnv* env, jobject clazz, jstring jpath, jstring jpackage,
-        jlong versionCode, jlong startTime, jlong endTime, jbyteArray jdata) {
-    ScopedByteArrayRO buffer(env, jdata);
-    LOG_ALWAYS_FATAL_IF(buffer.size() != sizeof(ProfileData),
-            "Buffer size %zu doesn't match expected %zu!", buffer.size(), sizeof(ProfileData));
-    ScopedUtfChars pathChars(env, jpath);
-    LOG_ALWAYS_FATAL_IF(pathChars.size() <= 0 || !pathChars.c_str(), "Failed to get path chars");
-    ScopedUtfChars packageChars(env, jpackage);
-    LOG_ALWAYS_FATAL_IF(packageChars.size() <= 0 || !packageChars.c_str(), "Failed to get path chars");
-
-    const std::string path(pathChars.c_str(), pathChars.size());
-    const std::string package(packageChars.c_str(), packageChars.size());
-    const ProfileData* data = reinterpret_cast<const ProfileData*>(buffer.get());
-    GraphicsStatsService::saveBuffer(path, package, versionCode, startTime, endTime, data);
-}
-
-static jobject gGraphicsStatsServiceObject = nullptr;
-static jmethodID gGraphicsStatsService_pullGraphicsStatsMethodID;
-
-static JNIEnv* getJNIEnv() {
-    JavaVM* vm = AndroidRuntime::getJavaVM();
-    JNIEnv* env = nullptr;
-    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
-        if (vm->AttachCurrentThreadAsDaemon(&env, nullptr) != JNI_OK) {
-            LOG_ALWAYS_FATAL("Failed to AttachCurrentThread!");
-        }
-    }
-    return env;
-}
-
-using namespace google::protobuf;
-
-// Field ids taken from FrameTimingHistogram message in atoms.proto
-#define TIME_MILLIS_BUCKETS_FIELD_NUMBER 1
-#define FRAME_COUNTS_FIELD_NUMBER 2
-
-static void writeCpuHistogram(stats_event* event,
-                              const uirenderer::protos::GraphicsStatsProto& stat) {
-    util::ProtoOutputStream proto;
-    for (int bucketIndex = 0; bucketIndex < stat.histogram_size(); bucketIndex++) {
-        auto& bucket = stat.histogram(bucketIndex);
-        proto.write(android::util::FIELD_TYPE_INT32 | android::util::FIELD_COUNT_REPEATED |
-                            TIME_MILLIS_BUCKETS_FIELD_NUMBER /* field id */,
-                    (int)bucket.render_millis());
-    }
-    for (int bucketIndex = 0; bucketIndex < stat.histogram_size(); bucketIndex++) {
-        auto& bucket = stat.histogram(bucketIndex);
-        proto.write(android::util::FIELD_TYPE_INT64 | android::util::FIELD_COUNT_REPEATED |
-                            FRAME_COUNTS_FIELD_NUMBER /* field id */,
-                    (long long)bucket.frame_count());
-    }
-    std::vector<uint8_t> outVector;
-    proto.serializeToVector(&outVector);
-    stats_event_write_byte_array(event, outVector.data(), outVector.size());
-}
-
-static void writeGpuHistogram(stats_event* event,
-                              const uirenderer::protos::GraphicsStatsProto& stat) {
-    util::ProtoOutputStream proto;
-    for (int bucketIndex = 0; bucketIndex < stat.gpu_histogram_size(); bucketIndex++) {
-        auto& bucket = stat.gpu_histogram(bucketIndex);
-        proto.write(android::util::FIELD_TYPE_INT32 | android::util::FIELD_COUNT_REPEATED |
-                            TIME_MILLIS_BUCKETS_FIELD_NUMBER /* field id */,
-                    (int)bucket.render_millis());
-    }
-    for (int bucketIndex = 0; bucketIndex < stat.gpu_histogram_size(); bucketIndex++) {
-        auto& bucket = stat.gpu_histogram(bucketIndex);
-        proto.write(android::util::FIELD_TYPE_INT64 | android::util::FIELD_COUNT_REPEATED |
-                            FRAME_COUNTS_FIELD_NUMBER /* field id */,
-                    (long long)bucket.frame_count());
-    }
-    std::vector<uint8_t> outVector;
-    proto.serializeToVector(&outVector);
-    stats_event_write_byte_array(event, outVector.data(), outVector.size());
-}
-
-// graphicsStatsPullCallback is invoked by statsd service to pull GRAPHICS_STATS atom.
-static status_pull_atom_return_t graphicsStatsPullCallback(int32_t atom_tag,
-                                                           pulled_stats_event_list* data,
-                                                           void* cookie) {
-    JNIEnv* env = getJNIEnv();
-    if (!env) {
-        return false;
-    }
-    if (gGraphicsStatsServiceObject == nullptr) {
-        ALOGE("Failed to get graphicsstats service");
-        return STATS_PULL_SKIP;
-    }
-
-    for (bool lastFullDay : {true, false}) {
-        jlong jdata = (jlong) env->CallLongMethod(
-                    gGraphicsStatsServiceObject,
-                    gGraphicsStatsService_pullGraphicsStatsMethodID,
-                    (jboolean)(lastFullDay ? JNI_TRUE : JNI_FALSE));
-        if (env->ExceptionCheck()) {
-            env->ExceptionDescribe();
-            env->ExceptionClear();
-            ALOGE("Failed to invoke graphicsstats service");
-            return STATS_PULL_SKIP;
-        }
-        if (!jdata) {
-            // null means data is not available for that day.
-            continue;
-        }
-        android::uirenderer::protos::GraphicsStatsServiceDumpProto serviceDump;
-        std::vector<uint8_t>* buffer = reinterpret_cast<std::vector<uint8_t>*>(jdata);
-        std::unique_ptr<std::vector<uint8_t>> bufferRelease(buffer);
-        int dataSize = buffer->size();
-        if (!dataSize) {
-            // Data is not available for that day.
-            continue;
-        }
-        io::ArrayInputStream input{buffer->data(), dataSize};
-        bool success = serviceDump.ParseFromZeroCopyStream(&input);
-        if (!success) {
-            ALOGW("Parse failed on GraphicsStatsPuller error='%s' dataSize='%d'",
-                  serviceDump.InitializationErrorString().c_str(), dataSize);
-            return STATS_PULL_SKIP;
-        }
-
-        for (int stat_index = 0; stat_index < serviceDump.stats_size(); stat_index++) {
-            auto& stat = serviceDump.stats(stat_index);
-            stats_event* event = add_stats_event_to_pull_data(data);
-            stats_event_set_atom_id(event, android::util::GRAPHICS_STATS);
-            stats_event_write_string8(event, stat.package_name().c_str());
-            stats_event_write_int64(event, (int64_t)stat.version_code());
-            stats_event_write_int64(event, (int64_t)stat.stats_start());
-            stats_event_write_int64(event, (int64_t)stat.stats_end());
-            stats_event_write_int32(event, (int32_t)stat.pipeline());
-            stats_event_write_int32(event, (int32_t)stat.summary().total_frames());
-            stats_event_write_int32(event, (int32_t)stat.summary().missed_vsync_count());
-            stats_event_write_int32(event, (int32_t)stat.summary().high_input_latency_count());
-            stats_event_write_int32(event, (int32_t)stat.summary().slow_ui_thread_count());
-            stats_event_write_int32(event, (int32_t)stat.summary().slow_bitmap_upload_count());
-            stats_event_write_int32(event, (int32_t)stat.summary().slow_draw_count());
-            stats_event_write_int32(event, (int32_t)stat.summary().missed_deadline_count());
-            writeCpuHistogram(event, stat);
-            writeGpuHistogram(event, stat);
-            // TODO: fill in UI mainline module version, when the feature is available.
-            stats_event_write_int64(event, (int64_t)0);
-            stats_event_write_bool(event, !lastFullDay);
-            stats_event_build(event);
-        }
-    }
-    return STATS_PULL_SUCCESS;
-}
-
-// Register a puller for GRAPHICS_STATS atom with the statsd service.
-static void nativeInit(JNIEnv* env, jobject javaObject) {
-    gGraphicsStatsServiceObject = env->NewGlobalRef(javaObject);
-    pull_atom_metadata metadata = {.cool_down_ns = 10 * 1000000, // 10 milliseconds
-                                   .timeout_ns = 2 * NS_PER_SEC, // 2 seconds
-                                   .additive_fields = nullptr,
-                                   .additive_fields_size = 0};
-    register_stats_pull_atom_callback(android::util::GRAPHICS_STATS, &graphicsStatsPullCallback,
-            &metadata, nullptr);
-}
-
-static void nativeDestructor(JNIEnv* env, jobject javaObject) {
-    //TODO: Unregister the puller callback when a new API is available.
-    env->DeleteGlobalRef(gGraphicsStatsServiceObject);
-    gGraphicsStatsServiceObject = nullptr;
-}
-
-static const JNINativeMethod sMethods[] = {
-    { "nGetAshmemSize", "()I", (void*) getAshmemSize },
-    { "nCreateDump", "(IZ)J", (void*) createDump },
-    { "nAddToDump", "(JLjava/lang/String;Ljava/lang/String;JJJ[B)V", (void*) addToDump },
-    { "nAddToDump", "(JLjava/lang/String;)V", (void*) addFileToDump },
-    { "nFinishDump", "(J)V", (void*) finishDump },
-    { "nFinishDumpInMemory", "(J)J", (void*) finishDumpInMemory },
-    { "nSaveBuffer", "(Ljava/lang/String;Ljava/lang/String;JJJ[B)V", (void*) saveBuffer },
-    { "nativeInit", "()V", (void*) nativeInit },
-    { "nativeDestructor",   "()V",     (void*)nativeDestructor }
-};
-
-int register_android_server_GraphicsStatsService(JNIEnv* env)
-{
-    jclass graphicsStatsService_class = FindClassOrDie(env,
-            "com/android/server/GraphicsStatsService");
-    gGraphicsStatsService_pullGraphicsStatsMethodID = GetMethodIDOrDie(env,
-            graphicsStatsService_class, "pullGraphicsStats", "(Z)J");
-    return jniRegisterNativeMethods(env, "com/android/server/GraphicsStatsService",
-                                    sMethods, NELEM(sMethods));
-}
-
-} // namespace android
diff --git a/services/core/jni/com_android_server_SystemServer.cpp b/services/core/jni/com_android_server_SystemServer.cpp
index 78b64ca..279ea4b 100644
--- a/services/core/jni/com_android_server_SystemServer.cpp
+++ b/services/core/jni/com_android_server_SystemServer.cpp
@@ -14,6 +14,12 @@
  * limitations under the License.
  */
 
+#include <dlfcn.h>
+#include <pthread.h>
+
+#include <chrono>
+#include <thread>
+
 #include <jni.h>
 #include <nativehelper/JNIHelp.h>
 
@@ -23,14 +29,20 @@
 #include <schedulerservice/SchedulingPolicyService.h>
 #include <sensorservice/SensorService.h>
 #include <sensorservicehidl/SensorManager.h>
+#include <stats/StatsHal.h>
 
 #include <bionic/malloc.h>
+#include <bionic/reserved_signals.h>
 
+#include <android-base/properties.h>
 #include <cutils/properties.h>
 #include <utils/Log.h>
 #include <utils/misc.h>
 #include <utils/AndroidThreads.h>
 
+using android::base::GetIntProperty;
+using namespace std::chrono_literals;
+
 namespace android {
 
 static void android_server_SystemServer_startSensorService(JNIEnv* /* env */, jobject /* clazz */) {
@@ -48,6 +60,8 @@
     using ::android::frameworks::schedulerservice::V1_0::implementation::SchedulingPolicyService;
     using ::android::frameworks::sensorservice::V1_0::ISensorManager;
     using ::android::frameworks::sensorservice::V1_0::implementation::SensorManager;
+    using ::android::frameworks::stats::V1_0::IStats;
+    using ::android::frameworks::stats::V1_0::implementation::StatsHal;
     using ::android::hardware::configureRpcThreadpool;
 
     status_t err;
@@ -64,11 +78,58 @@
     sp<ISchedulingPolicyService> schedulingService = new SchedulingPolicyService();
     err = schedulingService->registerAsService();
     ALOGE_IF(err != OK, "Cannot register %s: %d", ISchedulingPolicyService::descriptor, err);
+
+    sp<IStats> statsHal = new StatsHal();
+    err = statsHal->registerAsService();
+    ALOGE_IF(err != OK, "Cannot register %s: %d", IStats::descriptor, err);
 }
 
 static void android_server_SystemServer_initZygoteChildHeapProfiling(JNIEnv* /* env */,
                                                                      jobject /* clazz */) {
-   android_mallopt(M_INIT_ZYGOTE_CHILD_PROFILING, nullptr, 0);
+    android_mallopt(M_INIT_ZYGOTE_CHILD_PROFILING, nullptr, 0);
+}
+
+static int get_current_max_fd() {
+    // Not actually guaranteed to be the max, but close enough for our purposes.
+    int fd = open("/dev/null", O_RDONLY | O_CLOEXEC);
+    LOG_ALWAYS_FATAL_IF(fd == -1, "failed to open /dev/null: %s", strerror(errno));
+    close(fd);
+    return fd;
+}
+
+static const char kFdLeakEnableThresholdProperty[] = "persist.sys.debug.fdtrack_enable_threshold";
+static const char kFdLeakAbortThresholdProperty[] = "persist.sys.debug.fdtrack_abort_threshold";
+static const char kFdLeakCheckIntervalProperty[] = "persist.sys.debug.fdtrack_interval";
+
+static void android_server_SystemServer_spawnFdLeakCheckThread(JNIEnv*, jobject) {
+    std::thread([]() {
+        pthread_setname_np(pthread_self(), "FdLeakCheckThread");
+        bool loaded = false;
+        while (true) {
+            const int enable_threshold = GetIntProperty(kFdLeakEnableThresholdProperty, 1024);
+            const int abort_threshold = GetIntProperty(kFdLeakAbortThresholdProperty, 2048);
+            const int check_interval = GetIntProperty(kFdLeakCheckIntervalProperty, 120);
+            int max_fd = get_current_max_fd();
+            if (max_fd > enable_threshold && !loaded) {
+                loaded = true;
+                ALOGE("fd count above threshold of %d, starting fd backtraces", enable_threshold);
+                if (dlopen("libfdtrack.so", RTLD_GLOBAL) == nullptr) {
+                    ALOGE("failed to load libfdtrack.so: %s", dlerror());
+                }
+            } else if (max_fd > abort_threshold) {
+                raise(BIONIC_SIGNAL_FDTRACK);
+
+                // Wait for a bit to allow fdtrack to dump backtraces to logcat.
+                std::this_thread::sleep_for(5s);
+
+                LOG_ALWAYS_FATAL(
+                    "b/140703823: aborting due to fd leak: check logs for fd "
+                    "backtraces");
+            }
+
+            std::this_thread::sleep_for(std::chrono::seconds(check_interval));
+        }
+    }).detach();
 }
 
 /*
@@ -80,6 +141,9 @@
     { "startHidlServices", "()V", (void*) android_server_SystemServer_startHidlServices },
     { "initZygoteChildHeapProfiling", "()V",
       (void*) android_server_SystemServer_initZygoteChildHeapProfiling },
+    { "spawnFdLeakCheckThread", "()V",
+      (void*) android_server_SystemServer_spawnFdLeakCheckThread },
+
 };
 
 int register_android_server_SystemServer(JNIEnv* env)
diff --git a/services/core/jni/com_android_server_incremental_IncrementalManagerService.cpp b/services/core/jni/com_android_server_incremental_IncrementalManagerService.cpp
index 5e255f4..10bac94 100644
--- a/services/core/jni/com_android_server_incremental_IncrementalManagerService.cpp
+++ b/services/core/jni/com_android_server_incremental_IncrementalManagerService.cpp
@@ -33,9 +33,14 @@
     Incremental_IncrementalService_OnSystemReady(self);
 }
 
+static void nativeDump(JNIEnv* env, jclass klass, jlong self, jint fd) {
+    Incremental_IncrementalService_OnDump(self, fd);
+}
+
 static const JNINativeMethod method_table[] = {
         {"nativeStartService", "()J", (void*)nativeStartService},
         {"nativeSystemReady", "(J)V", (void*)nativeSystemReady},
+        {"nativeDump", "(JI)V", (void*)nativeDump},
 };
 
 int register_android_server_incremental_IncrementalManagerService(JNIEnv* env) {
diff --git a/services/core/jni/com_android_server_input_InputManagerService.cpp b/services/core/jni/com_android_server_input_InputManagerService.cpp
index 212a3a6..8772edd 100644
--- a/services/core/jni/com_android_server_input_InputManagerService.cpp
+++ b/services/core/jni/com_android_server_input_InputManagerService.cpp
@@ -50,13 +50,15 @@
 
 #include <inputflinger/InputManager.h>
 
+#include <android/graphics/GraphicsJNI.h>
 #include <android_os_MessageQueue.h>
+#include <android_view_InputChannel.h>
 #include <android_view_InputDevice.h>
 #include <android_view_KeyEvent.h>
 #include <android_view_MotionEvent.h>
-#include <android_view_InputChannel.h>
 #include <android_view_PointerIcon.h>
-#include <android/graphics/GraphicsJNI.h>
+#include <android_view_VerifiedKeyEvent.h>
+#include <android_view_VerifiedMotionEvent.h>
 
 #include <nativehelper/ScopedLocalFrame.h>
 #include <nativehelper/ScopedLocalRef.h>
@@ -1513,6 +1515,49 @@
     }
 }
 
+static jobject nativeVerifyInputEvent(JNIEnv* env, jclass /* clazz */, jlong ptr,
+                                      jobject inputEventObj) {
+    NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
+
+    if (env->IsInstanceOf(inputEventObj, gKeyEventClassInfo.clazz)) {
+        KeyEvent keyEvent;
+        status_t status = android_view_KeyEvent_toNative(env, inputEventObj, &keyEvent);
+        if (status) {
+            jniThrowRuntimeException(env, "Could not read contents of KeyEvent object.");
+            return nullptr;
+        }
+
+        std::unique_ptr<VerifiedInputEvent> verifiedEvent =
+                im->getInputManager()->getDispatcher()->verifyInputEvent(keyEvent);
+        if (verifiedEvent == nullptr) {
+            return nullptr;
+        }
+
+        return android_view_VerifiedKeyEvent(env,
+                                             static_cast<const VerifiedKeyEvent&>(*verifiedEvent));
+    } else if (env->IsInstanceOf(inputEventObj, gMotionEventClassInfo.clazz)) {
+        const MotionEvent* motionEvent = android_view_MotionEvent_getNativePtr(env, inputEventObj);
+        if (!motionEvent) {
+            jniThrowRuntimeException(env, "Could not read contents of MotionEvent object.");
+            return nullptr;
+        }
+
+        std::unique_ptr<VerifiedInputEvent> verifiedEvent =
+                im->getInputManager()->getDispatcher()->verifyInputEvent(*motionEvent);
+
+        if (verifiedEvent == nullptr) {
+            return nullptr;
+        }
+
+        return android_view_VerifiedMotionEvent(env,
+                                                static_cast<const VerifiedMotionEvent&>(
+                                                        *verifiedEvent));
+    } else {
+        jniThrowRuntimeException(env, "Invalid input event type.");
+        return nullptr;
+    }
+}
+
 static void nativeToggleCapsLock(JNIEnv* env, jclass /* clazz */,
          jlong ptr, jint deviceId) {
     NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
@@ -1563,20 +1608,17 @@
 }
 
 static jboolean nativeTransferTouchFocus(JNIEnv* env,
-        jclass /* clazz */, jlong ptr, jobject fromChannelObj, jobject toChannelObj) {
-    NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
-
-    sp<InputChannel> fromChannel =
-            android_view_InputChannel_getInputChannel(env, fromChannelObj);
-    sp<InputChannel> toChannel =
-            android_view_InputChannel_getInputChannel(env, toChannelObj);
-
-    if (fromChannel == nullptr || toChannel == nullptr) {
+        jclass /* clazz */, jlong ptr, jobject fromChannelTokenObj, jobject toChannelTokenObj) {
+    if (fromChannelTokenObj == nullptr || toChannelTokenObj == nullptr) {
         return JNI_FALSE;
     }
 
+    sp<IBinder> fromChannelToken = ibinderForJavaObject(env, fromChannelTokenObj);
+    sp<IBinder> toChannelToken = ibinderForJavaObject(env, toChannelTokenObj);
+
+    NativeInputManager* im = reinterpret_cast<NativeInputManager*>(ptr);
     if (im->getInputManager()->getDispatcher()->transferTouchFocus(
-            fromChannel->getConnectionToken(), toChannel->getConnectionToken())) {
+            fromChannelToken, toChannelToken)) {
         return JNI_TRUE;
     } else {
         return JNI_FALSE;
@@ -1738,90 +1780,61 @@
 // ----------------------------------------------------------------------------
 
 static const JNINativeMethod gInputManagerMethods[] = {
-    /* name, signature, funcPtr */
-    { "nativeInit",
-            "(Lcom/android/server/input/InputManagerService;Landroid/content/Context;Landroid/os/MessageQueue;)J",
-            (void*) nativeInit },
-    { "nativeStart", "(J)V",
-            (void*) nativeStart },
-    { "nativeSetDisplayViewports", "(J[Landroid/hardware/display/DisplayViewport;)V",
-            (void*) nativeSetDisplayViewports },
-    { "nativeGetScanCodeState", "(JIII)I",
-            (void*) nativeGetScanCodeState },
-    { "nativeGetKeyCodeState", "(JIII)I",
-            (void*) nativeGetKeyCodeState },
-    { "nativeGetSwitchState", "(JIII)I",
-            (void*) nativeGetSwitchState },
-    { "nativeHasKeys", "(JII[I[Z)Z",
-            (void*) nativeHasKeys },
-    { "nativeRegisterInputChannel",
-            "(JLandroid/view/InputChannel;)V",
-            (void*) nativeRegisterInputChannel },
-    { "nativeRegisterInputMonitor",
-            "(JLandroid/view/InputChannel;IZ)V",
-            (void*) nativeRegisterInputMonitor},
-    { "nativeUnregisterInputChannel", "(JLandroid/view/InputChannel;)V",
-            (void*) nativeUnregisterInputChannel },
-    { "nativePilferPointers", "(JLandroid/os/IBinder;)V",
-            (void*) nativePilferPointers },
-    { "nativeSetInputFilterEnabled", "(JZ)V",
-            (void*) nativeSetInputFilterEnabled },
-    { "nativeSetInTouchMode", "(JZ)V",
-            (void*) nativeSetInTouchMode },
-    { "nativeInjectInputEvent", "(JLandroid/view/InputEvent;IIIII)I",
-            (void*) nativeInjectInputEvent },
-    { "nativeToggleCapsLock", "(JI)V",
-            (void*) nativeToggleCapsLock },
-    { "nativeSetInputWindows", "(J[Landroid/view/InputWindowHandle;I)V",
-            (void*) nativeSetInputWindows },
-    { "nativeSetFocusedApplication", "(JILandroid/view/InputApplicationHandle;)V",
-            (void*) nativeSetFocusedApplication },
-    { "nativeSetFocusedDisplay", "(JI)V",
-            (void*) nativeSetFocusedDisplay },
-    { "nativeSetPointerCapture", "(JZ)V",
-            (void*) nativeSetPointerCapture },
-    { "nativeSetInputDispatchMode", "(JZZ)V",
-            (void*) nativeSetInputDispatchMode },
-    { "nativeSetSystemUiVisibility", "(JI)V",
-            (void*) nativeSetSystemUiVisibility },
-    { "nativeTransferTouchFocus", "(JLandroid/view/InputChannel;Landroid/view/InputChannel;)Z",
-            (void*) nativeTransferTouchFocus },
-    { "nativeSetPointerSpeed", "(JI)V",
-            (void*) nativeSetPointerSpeed },
-    { "nativeSetShowTouches", "(JZ)V",
-            (void*) nativeSetShowTouches },
-    { "nativeSetInteractive", "(JZ)V",
-            (void*) nativeSetInteractive },
-    { "nativeReloadCalibration", "(J)V",
-            (void*) nativeReloadCalibration },
-    { "nativeVibrate", "(JI[JII)V",
-            (void*) nativeVibrate },
-    { "nativeCancelVibrate", "(JII)V",
-            (void*) nativeCancelVibrate },
-    { "nativeReloadKeyboardLayouts", "(J)V",
-            (void*) nativeReloadKeyboardLayouts },
-    { "nativeReloadDeviceAliases", "(J)V",
-            (void*) nativeReloadDeviceAliases },
-    { "nativeDump", "(J)Ljava/lang/String;",
-            (void*) nativeDump },
-    { "nativeMonitor", "(J)V",
-            (void*) nativeMonitor },
-    { "nativeIsInputDeviceEnabled", "(JI)Z",
-            (void*) nativeIsInputDeviceEnabled },
-    { "nativeEnableInputDevice", "(JI)V",
-            (void*) nativeEnableInputDevice },
-    { "nativeDisableInputDevice", "(JI)V",
-            (void*) nativeDisableInputDevice },
-    { "nativeSetPointerIconType", "(JI)V",
-            (void*) nativeSetPointerIconType },
-    { "nativeReloadPointerIcons", "(J)V",
-            (void*) nativeReloadPointerIcons },
-    { "nativeSetCustomPointerIcon", "(JLandroid/view/PointerIcon;)V",
-            (void*) nativeSetCustomPointerIcon },
-    { "nativeCanDispatchToDisplay", "(JII)Z",
-            (void*) nativeCanDispatchToDisplay },
-    { "nativeNotifyPortAssociationsChanged", "(J)V",
-            (void*) nativeNotifyPortAssociationsChanged },
+        /* name, signature, funcPtr */
+        {"nativeInit",
+         "(Lcom/android/server/input/InputManagerService;Landroid/content/Context;Landroid/os/"
+         "MessageQueue;)J",
+         (void*)nativeInit},
+        {"nativeStart", "(J)V", (void*)nativeStart},
+        {"nativeSetDisplayViewports", "(J[Landroid/hardware/display/DisplayViewport;)V",
+         (void*)nativeSetDisplayViewports},
+        {"nativeGetScanCodeState", "(JIII)I", (void*)nativeGetScanCodeState},
+        {"nativeGetKeyCodeState", "(JIII)I", (void*)nativeGetKeyCodeState},
+        {"nativeGetSwitchState", "(JIII)I", (void*)nativeGetSwitchState},
+        {"nativeHasKeys", "(JII[I[Z)Z", (void*)nativeHasKeys},
+        {"nativeRegisterInputChannel", "(JLandroid/view/InputChannel;)V",
+         (void*)nativeRegisterInputChannel},
+        {"nativeRegisterInputMonitor", "(JLandroid/view/InputChannel;IZ)V",
+         (void*)nativeRegisterInputMonitor},
+        {"nativeUnregisterInputChannel", "(JLandroid/view/InputChannel;)V",
+         (void*)nativeUnregisterInputChannel},
+        {"nativePilferPointers", "(JLandroid/os/IBinder;)V", (void*)nativePilferPointers},
+        {"nativeSetInputFilterEnabled", "(JZ)V", (void*)nativeSetInputFilterEnabled},
+        {"nativeSetInTouchMode", "(JZ)V", (void*)nativeSetInTouchMode},
+        {"nativeInjectInputEvent", "(JLandroid/view/InputEvent;IIIII)I",
+         (void*)nativeInjectInputEvent},
+        {"nativeVerifyInputEvent", "(JLandroid/view/InputEvent;)Landroid/view/VerifiedInputEvent;",
+         (void*)nativeVerifyInputEvent},
+        {"nativeToggleCapsLock", "(JI)V", (void*)nativeToggleCapsLock},
+        {"nativeSetInputWindows", "(J[Landroid/view/InputWindowHandle;I)V",
+         (void*)nativeSetInputWindows},
+        {"nativeSetFocusedApplication", "(JILandroid/view/InputApplicationHandle;)V",
+         (void*)nativeSetFocusedApplication},
+        {"nativeSetFocusedDisplay", "(JI)V", (void*)nativeSetFocusedDisplay},
+        {"nativeSetPointerCapture", "(JZ)V", (void*)nativeSetPointerCapture},
+        {"nativeSetInputDispatchMode", "(JZZ)V", (void*)nativeSetInputDispatchMode},
+        {"nativeSetSystemUiVisibility", "(JI)V", (void*)nativeSetSystemUiVisibility},
+        {"nativeTransferTouchFocus", "(JLandroid/os/IBinder;Landroid/os/IBinder;)Z",
+         (void*)nativeTransferTouchFocus},
+        {"nativeSetPointerSpeed", "(JI)V", (void*)nativeSetPointerSpeed},
+        {"nativeSetShowTouches", "(JZ)V", (void*)nativeSetShowTouches},
+        {"nativeSetInteractive", "(JZ)V", (void*)nativeSetInteractive},
+        {"nativeReloadCalibration", "(J)V", (void*)nativeReloadCalibration},
+        {"nativeVibrate", "(JI[JII)V", (void*)nativeVibrate},
+        {"nativeCancelVibrate", "(JII)V", (void*)nativeCancelVibrate},
+        {"nativeReloadKeyboardLayouts", "(J)V", (void*)nativeReloadKeyboardLayouts},
+        {"nativeReloadDeviceAliases", "(J)V", (void*)nativeReloadDeviceAliases},
+        {"nativeDump", "(J)Ljava/lang/String;", (void*)nativeDump},
+        {"nativeMonitor", "(J)V", (void*)nativeMonitor},
+        {"nativeIsInputDeviceEnabled", "(JI)Z", (void*)nativeIsInputDeviceEnabled},
+        {"nativeEnableInputDevice", "(JI)V", (void*)nativeEnableInputDevice},
+        {"nativeDisableInputDevice", "(JI)V", (void*)nativeDisableInputDevice},
+        {"nativeSetPointerIconType", "(JI)V", (void*)nativeSetPointerIconType},
+        {"nativeReloadPointerIcons", "(J)V", (void*)nativeReloadPointerIcons},
+        {"nativeSetCustomPointerIcon", "(JLandroid/view/PointerIcon;)V",
+         (void*)nativeSetCustomPointerIcon},
+        {"nativeCanDispatchToDisplay", "(JII)Z", (void*)nativeCanDispatchToDisplay},
+        {"nativeNotifyPortAssociationsChanged", "(J)V", (void*)nativeNotifyPortAssociationsChanged},
 };
 
 #define FIND_CLASS(var, className) \
diff --git a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
index 12de20c..d0eaa48 100644
--- a/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
+++ b/services/core/jni/com_android_server_location_GnssLocationProvider.cpp
@@ -26,17 +26,18 @@
 #include <android/hardware/gnss/1.0/IGnssMeasurement.h>
 #include <android/hardware/gnss/1.1/IGnssMeasurement.h>
 #include <android/hardware/gnss/2.0/IGnssMeasurement.h>
+#include <android/hardware/gnss/2.1/IGnssAntennaInfo.h>
 #include <android/hardware/gnss/2.1/IGnssMeasurement.h>
 #include <android/hardware/gnss/measurement_corrections/1.0/IMeasurementCorrections.h>
 #include <android/hardware/gnss/measurement_corrections/1.1/IMeasurementCorrections.h>
 #include <android/hardware/gnss/visibility_control/1.0/IGnssVisibilityControl.h>
 #include <nativehelper/JNIHelp.h>
-#include "jni.h"
-#include "hardware_legacy/power.h"
-#include "utils/Log.h"
-#include "utils/misc.h"
 #include "android_runtime/AndroidRuntime.h"
 #include "android_runtime/Log.h"
+#include "hardware_legacy/power.h"
+#include "jni.h"
+#include "utils/Log.h"
+#include "utils/misc.h"
 
 #include <arpa/inet.h>
 #include <cinttypes>
@@ -54,6 +55,12 @@
 static jclass class_gnssNavigationMessage;
 static jclass class_gnssClock;
 static jclass class_gnssConfiguration_halInterfaceVersion;
+static jclass class_gnssAntennaInfo;
+static jclass class_phaseCenterOffsetCoordinates;
+static jclass class_phaseCenterVariationCorrections;
+static jclass class_signalGainCorrections;
+static jclass class_arrayList;
+static jclass class_doubleArray;
 
 static jobject mCallbacksObj = nullptr;
 
@@ -78,6 +85,7 @@
 static jmethodID method_reportGeofencePauseStatus;
 static jmethodID method_reportGeofenceResumeStatus;
 static jmethodID method_reportMeasurementData;
+static jmethodID method_reportAntennaInfo;
 static jmethodID method_reportNavigationMessages;
 static jmethodID method_reportLocationBatch;
 static jmethodID method_reportGnssServiceDied;
@@ -114,6 +122,12 @@
 static jmethodID method_gnssClockCtor;
 static jmethodID method_gnssMeasurementCtor;
 static jmethodID method_halInterfaceVersionCtor;
+static jmethodID method_gnssAntennaInfoCtor;
+static jmethodID method_phaseCenterOffsetCoordinatesCtor;
+static jmethodID method_phaseCenterVariationCorrectionsCtor;
+static jmethodID method_signalGainCorrectionsCtor;
+static jmethodID method_arrayListCtor;
+static jmethodID method_arrayListAdd;
 
 /*
  * Save a pointer to JavaVm to attach/detach threads executing
@@ -171,6 +185,8 @@
 using IGnssConfiguration_V2_1 = android::hardware::gnss::V2_1::IGnssConfiguration;
 using IGnssDebug_V1_0 = android::hardware::gnss::V1_0::IGnssDebug;
 using IGnssDebug_V2_0 = android::hardware::gnss::V2_0::IGnssDebug;
+using IGnssAntennaInfo = android::hardware::gnss::V2_1::IGnssAntennaInfo;
+using IGnssAntennaInfoCallback = android::hardware::gnss::V2_1::IGnssAntennaInfoCallback;
 using IGnssMeasurement_V1_0 = android::hardware::gnss::V1_0::IGnssMeasurement;
 using IGnssMeasurement_V1_1 = android::hardware::gnss::V1_1::IGnssMeasurement;
 using IGnssMeasurement_V2_0 = android::hardware::gnss::V2_0::IGnssMeasurement;
@@ -241,6 +257,7 @@
 sp<IMeasurementCorrections_V1_0> gnssCorrectionsIface_V1_0 = nullptr;
 sp<IMeasurementCorrections_V1_1> gnssCorrectionsIface_V1_1 = nullptr;
 sp<IGnssVisibilityControl> gnssVisibilityControlIface = nullptr;
+sp<IGnssAntennaInfo> gnssAntennaInfoIface = nullptr;
 
 #define WAKE_LOCK_NAME  "GPS"
 
@@ -1051,6 +1068,195 @@
 }
 
 /*
+ * GnssAntennaInfoCallback implements the callback methods required for the
+ * GnssAntennaInfo interface.
+ */
+struct GnssAntennaInfoCallback : public IGnssAntennaInfoCallback {
+    // Methods from V2_1::GnssAntennaInfoCallback follow.
+    Return<void> gnssAntennaInfoCb(
+            const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos);
+
+private:
+    jobject translateAllGnssAntennaInfos(
+            JNIEnv* env,
+            const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos);
+    jobject translateSingleGnssAntennaInfo(
+            JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo);
+    jobject translatePhaseCenterOffsetCoordinates(
+            JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo);
+    jobject translatePhaseCenterVariationCorrections(
+            JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo);
+    jobject translateSignalGainCorrections(
+            JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo);
+    jobjectArray translate2dDoubleArray(JNIEnv* env,
+                                        const hidl_vec<IGnssAntennaInfoCallback::Row>& array);
+    void translateAndReportGnssAntennaInfo(
+            const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos);
+    void reportAntennaInfo(JNIEnv* env, const jobject antennaInfosArray);
+};
+
+Return<void> GnssAntennaInfoCallback::gnssAntennaInfoCb(
+        const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos) {
+    translateAndReportGnssAntennaInfo(gnssAntennaInfos);
+    return Void();
+}
+
+jobjectArray GnssAntennaInfoCallback::translate2dDoubleArray(
+        JNIEnv* env, const hidl_vec<IGnssAntennaInfoCallback::Row>& array) {
+    jsize numRows = array.size();
+    if (numRows == 0) {
+        // Empty array
+        return NULL;
+    }
+    jsize numCols = array[0].row.size();
+    if (numCols <= 1) {
+        // phi angle separation is computed as 180.0 / (numColumns - 1), so can't be < 2.
+        return NULL;
+    }
+
+    // Allocate array of double arrays
+    jobjectArray returnArray = env->NewObjectArray(numRows, class_doubleArray, NULL);
+
+    // Create each double array
+    for (uint8_t i = 0; i < numRows; i++) {
+        jdoubleArray doubleArray = env->NewDoubleArray(numCols);
+        env->SetDoubleArrayRegion(doubleArray, (jsize)0, numCols, array[i].row.data());
+        env->SetObjectArrayElement(returnArray, (jsize)i, doubleArray);
+        env->DeleteLocalRef(doubleArray);
+    }
+    return returnArray;
+}
+
+jobject GnssAntennaInfoCallback::translateAllGnssAntennaInfos(
+        JNIEnv* env, const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos) {
+    jobject arrayList = env->NewObject(class_arrayList,
+                                       method_arrayListCtor); // Create new ArrayList instance
+
+    for (auto gnssAntennaInfo : gnssAntennaInfos) {
+        jobject gnssAntennaInfoObject = translateSingleGnssAntennaInfo(env, gnssAntennaInfo);
+
+        env->CallBooleanMethod(arrayList, method_arrayListAdd,
+                               gnssAntennaInfoObject); // Add the antennaInfo to the ArrayList
+
+        // Delete Local Refs
+        env->DeleteLocalRef(gnssAntennaInfoObject);
+    }
+    return arrayList;
+}
+
+jobject GnssAntennaInfoCallback::translatePhaseCenterOffsetCoordinates(
+        JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo) {
+    jobject phaseCenterOffsetCoordinates =
+            env->NewObject(class_phaseCenterOffsetCoordinates,
+                           method_phaseCenterOffsetCoordinatesCtor,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.x,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.xUncertainty,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.y,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.yUncertainty,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.z,
+                           gnssAntennaInfo.phaseCenterOffsetCoordinateMillimeters.zUncertainty);
+
+    return phaseCenterOffsetCoordinates;
+}
+
+jobject GnssAntennaInfoCallback::translatePhaseCenterVariationCorrections(
+        JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo) {
+    if (gnssAntennaInfo.phaseCenterVariationCorrectionMillimeters == NULL ||
+        gnssAntennaInfo.phaseCenterVariationCorrectionUncertaintyMillimeters == NULL) {
+        return NULL;
+    }
+
+    jobjectArray phaseCenterVariationCorrectionsArray =
+            translate2dDoubleArray(env, gnssAntennaInfo.phaseCenterVariationCorrectionMillimeters);
+    jobjectArray phaseCenterVariationCorrectionsUncertaintiesArray =
+            translate2dDoubleArray(env,
+                                   gnssAntennaInfo
+                                           .phaseCenterVariationCorrectionUncertaintyMillimeters);
+
+    if (phaseCenterVariationCorrectionsArray == NULL ||
+        phaseCenterVariationCorrectionsUncertaintiesArray == NULL) {
+        return NULL;
+    }
+
+    jobject phaseCenterVariationCorrections =
+            env->NewObject(class_phaseCenterVariationCorrections,
+                           method_phaseCenterVariationCorrectionsCtor,
+                           phaseCenterVariationCorrectionsArray,
+                           phaseCenterVariationCorrectionsUncertaintiesArray);
+
+    env->DeleteLocalRef(phaseCenterVariationCorrectionsArray);
+    env->DeleteLocalRef(phaseCenterVariationCorrectionsUncertaintiesArray);
+
+    return phaseCenterVariationCorrections;
+}
+
+jobject GnssAntennaInfoCallback::translateSignalGainCorrections(
+        JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo) {
+    if (gnssAntennaInfo.signalGainCorrectionDbi == NULL ||
+        gnssAntennaInfo.signalGainCorrectionUncertaintyDbi == NULL) {
+        return NULL;
+    }
+    jobjectArray signalGainCorrectionsArray =
+            translate2dDoubleArray(env, gnssAntennaInfo.signalGainCorrectionDbi);
+    jobjectArray signalGainCorrectionsUncertaintiesArray =
+            translate2dDoubleArray(env, gnssAntennaInfo.signalGainCorrectionUncertaintyDbi);
+
+    if (signalGainCorrectionsArray == NULL || signalGainCorrectionsUncertaintiesArray == NULL) {
+        return NULL;
+    }
+
+    jobject signalGainCorrections =
+            env->NewObject(class_signalGainCorrections, method_signalGainCorrectionsCtor,
+                           signalGainCorrectionsArray, signalGainCorrectionsUncertaintiesArray);
+
+    env->DeleteLocalRef(signalGainCorrectionsArray);
+    env->DeleteLocalRef(signalGainCorrectionsUncertaintiesArray);
+
+    return signalGainCorrections;
+}
+
+jobject GnssAntennaInfoCallback::translateSingleGnssAntennaInfo(
+        JNIEnv* env, const IGnssAntennaInfoCallback::GnssAntennaInfo& gnssAntennaInfo) {
+    jobject phaseCenterOffsetCoordinates =
+            translatePhaseCenterOffsetCoordinates(env, gnssAntennaInfo);
+
+    // Nullable
+    jobject phaseCenterVariationCorrections =
+            translatePhaseCenterVariationCorrections(env, gnssAntennaInfo);
+
+    // Nullable
+    jobject signalGainCorrections = translateSignalGainCorrections(env, gnssAntennaInfo);
+
+    jobject gnssAntennaInfoObject =
+            env->NewObject(class_gnssAntennaInfo, method_gnssAntennaInfoCtor,
+                           gnssAntennaInfo.carrierFrequencyMHz, phaseCenterOffsetCoordinates,
+                           phaseCenterVariationCorrections, signalGainCorrections);
+
+    // Delete Local Refs
+    env->DeleteLocalRef(phaseCenterOffsetCoordinates);
+    env->DeleteLocalRef(phaseCenterVariationCorrections);
+    env->DeleteLocalRef(signalGainCorrections);
+
+    return gnssAntennaInfoObject;
+}
+
+void GnssAntennaInfoCallback::translateAndReportGnssAntennaInfo(
+        const hidl_vec<IGnssAntennaInfoCallback::GnssAntennaInfo>& gnssAntennaInfos) {
+    JNIEnv* env = getJniEnv();
+
+    jobject arrayList = translateAllGnssAntennaInfos(env, gnssAntennaInfos);
+
+    reportAntennaInfo(env, arrayList);
+
+    env->DeleteLocalRef(arrayList);
+}
+
+void GnssAntennaInfoCallback::reportAntennaInfo(JNIEnv* env, const jobject antennaInfosArray) {
+    env->CallVoidMethod(mCallbacksObj, method_reportAntennaInfo, antennaInfosArray);
+    checkAndClearExceptionFromCallback(env, __FUNCTION__);
+}
+
+/*
  * GnssMeasurementCallback implements the callback methods required for the
  * GnssMeasurement interface.
  */
@@ -1218,19 +1424,21 @@
     SET(BasebandCn0DbHz, measurement_V2_1->basebandCN0DbHz);
 
     if (measurement_V2_1->flags & GnssMeasurementFlags::HAS_RECEIVER_ISB) {
-        SET(ReceiverInterSignalBiasNs, measurement_V2_1->receiverInterSignalBiasNs);
+        SET(ReceiverInterSignalBiasNanos, measurement_V2_1->receiverInterSignalBiasNs);
     }
 
     if (measurement_V2_1->flags & GnssMeasurementFlags::HAS_RECEIVER_ISB_UNCERTAINTY) {
-        SET(ReceiverInterSignalBiasUncertaintyNs, measurement_V2_1->receiverInterSignalBiasUncertaintyNs);
+        SET(ReceiverInterSignalBiasUncertaintyNanos,
+            measurement_V2_1->receiverInterSignalBiasUncertaintyNs);
     }
 
     if (measurement_V2_1->flags & GnssMeasurementFlags::HAS_SATELLITE_ISB) {
-        SET(SatelliteInterSignalBiasNs, measurement_V2_1->satelliteInterSignalBiasNs);
+        SET(SatelliteInterSignalBiasNanos, measurement_V2_1->satelliteInterSignalBiasNs);
     }
 
     if (measurement_V2_1->flags & GnssMeasurementFlags::HAS_SATELLITE_ISB_UNCERTAINTY) {
-        SET(SatelliteInterSignalBiasUncertaintyNs, measurement_V2_1->satelliteInterSignalBiasUncertaintyNs);
+        SET(SatelliteInterSignalBiasUncertaintyNanos,
+            measurement_V2_1->satelliteInterSignalBiasUncertaintyNs);
     }
 }
 
@@ -1706,6 +1914,7 @@
             "(II)V");
     method_reportGeofencePauseStatus = env->GetMethodID(clazz, "reportGeofencePauseStatus",
             "(II)V");
+    method_reportAntennaInfo = env->GetMethodID(clazz, "reportAntennaInfo", "(Ljava/util/List;)V");
     method_reportMeasurementData = env->GetMethodID(
             clazz,
             "reportMeasurementData",
@@ -1789,6 +1998,36 @@
     class_gnssMeasurement = (jclass) env->NewGlobalRef(gnssMeasurementClass);
     method_gnssMeasurementCtor = env->GetMethodID(class_gnssMeasurement, "<init>", "()V");
 
+    jclass gnssAntennaInfoClass = env->FindClass("android/location/GnssAntennaInfo");
+    class_gnssAntennaInfo = (jclass)env->NewGlobalRef(gnssAntennaInfoClass);
+    method_gnssAntennaInfoCtor =
+            env->GetMethodID(class_gnssAntennaInfo, "<init>",
+                             "(D"
+                             "Landroid/location/GnssAntennaInfo$PhaseCenterOffsetCoordinates;"
+                             "Landroid/location/GnssAntennaInfo$PhaseCenterVariationCorrections;"
+                             "Landroid/location/GnssAntennaInfo$SignalGainCorrections;"
+                             ")V");
+
+    jclass phaseCenterOffsetCoordinatesClass =
+            env->FindClass("android/location/GnssAntennaInfo$PhaseCenterOffsetCoordinates");
+    class_phaseCenterOffsetCoordinates =
+            (jclass)env->NewGlobalRef(phaseCenterOffsetCoordinatesClass);
+    method_phaseCenterOffsetCoordinatesCtor =
+            env->GetMethodID(class_phaseCenterOffsetCoordinates, "<init>", "(DDDDDD)V");
+
+    jclass phaseCenterVariationCorrectionsClass =
+            env->FindClass("android/location/GnssAntennaInfo$PhaseCenterVariationCorrections");
+    class_phaseCenterVariationCorrections =
+            (jclass)env->NewGlobalRef(phaseCenterVariationCorrectionsClass);
+    method_phaseCenterVariationCorrectionsCtor =
+            env->GetMethodID(class_phaseCenterVariationCorrections, "<init>", "([[D[[D)V");
+
+    jclass signalGainCorrectionsClass =
+            env->FindClass("android/location/GnssAntennaInfo$SignalGainCorrections");
+    class_signalGainCorrections = (jclass)env->NewGlobalRef(signalGainCorrectionsClass);
+    method_signalGainCorrectionsCtor =
+            env->GetMethodID(class_signalGainCorrections, "<init>", "([[D[[D)V");
+
     jclass locationClass = env->FindClass("android/location/Location");
     class_location = (jclass) env->NewGlobalRef(locationClass);
     method_locationCtor = env->GetMethodID(class_location, "<init>", "(Ljava/lang/String;)V");
@@ -1807,6 +2046,14 @@
             (jclass) env->NewGlobalRef(gnssConfiguration_halInterfaceVersionClass);
     method_halInterfaceVersionCtor =
             env->GetMethodID(class_gnssConfiguration_halInterfaceVersion, "<init>", "(II)V");
+
+    jclass arrayListClass = env->FindClass("java/util/ArrayList");
+    class_arrayList = (jclass)env->NewGlobalRef(arrayListClass);
+    method_arrayListCtor = env->GetMethodID(class_arrayList, "<init>", "()V");
+    method_arrayListAdd = env->GetMethodID(class_arrayList, "add", "(Ljava/lang/Object;)Z");
+
+    jclass doubleArrayClass = env->FindClass("[D");
+    class_doubleArray = (jclass)env->NewGlobalRef(doubleArrayClass);
 }
 
 /* Initialization needed at system boot and whenever GNSS service dies. */
@@ -1933,6 +2180,15 @@
     }
 
     if (gnssHal_V2_1 != nullptr) {
+        auto gnssAntennaInfo = gnssHal_V2_1->getExtensionGnssAntennaInfo();
+        if (!gnssAntennaInfo.isOk()) {
+            ALOGD("Unable to get a handle to GnssAntennaInfo");
+        } else {
+            gnssAntennaInfoIface = gnssAntennaInfo;
+        }
+    }
+
+    if (gnssHal_V2_1 != nullptr) {
         auto gnssCorrections = gnssHal_V2_1->getExtensionMeasurementCorrections_1_1();
         if (!gnssCorrections.isOk()) {
             ALOGD("Unable to get a handle to GnssMeasurementCorrections 1.1 interface");
@@ -2723,6 +2979,52 @@
     return checkHidlReturn(result, "IGnssGeofencing resumeGeofence() failed.");
 }
 
+static jboolean android_location_GnssAntennaInfoProvider_is_antenna_info_supported(JNIEnv* env,
+                                                                                   jclass clazz) {
+    if (gnssAntennaInfoIface != nullptr) {
+        return JNI_TRUE;
+    }
+    return JNI_FALSE;
+}
+
+static jboolean android_location_GnssAntennaInfoProvider_start_antenna_info_listening(
+        JNIEnv* /* env */, jobject /* obj */) {
+    if (gnssAntennaInfoIface == nullptr) {
+        ALOGE("%s: IGnssAntennaInfo interface not available.", __func__);
+        return JNI_FALSE;
+    }
+
+    sp<GnssAntennaInfoCallback> cbIface = new GnssAntennaInfoCallback();
+
+    auto result = gnssAntennaInfoIface->setCallback(cbIface);
+
+    if (!checkHidlReturn(result, "IGnssAntennaInfo setCallback() failed.")) {
+        return JNI_FALSE;
+    }
+
+    IGnssAntennaInfo::GnssAntennaInfoStatus initRet = result;
+    if (initRet != IGnssAntennaInfo::GnssAntennaInfoStatus::SUCCESS) {
+        ALOGE("An error has been found on GnssAntennaInfoInterface::init, status=%d",
+              static_cast<int32_t>(initRet));
+        return JNI_FALSE;
+    } else {
+        ALOGD("gnss antenna info has been enabled");
+    }
+
+    return JNI_TRUE;
+}
+
+static jboolean android_location_GnssAntennaInfoProvider_stop_antenna_info_listening(
+        JNIEnv* /* env */, jobject /* obj */) {
+    if (gnssAntennaInfoIface == nullptr) {
+        ALOGE("%s: IGnssAntennaInfo interface not available.", __func__);
+        return JNI_FALSE;
+    }
+
+    auto result = gnssAntennaInfoIface->close();
+    return checkHidlReturn(result, "IGnssAntennaInfo close() failed.");
+}
+
 static jboolean android_location_GnssMeasurementsProvider_is_measurement_supported(
     JNIEnv* env, jclass clazz) {
     if (gnssMeasurementIface != nullptr) {
@@ -3284,6 +3586,19 @@
             reinterpret_cast<void *>(android_location_GnssBatchingProvider_cleanup_batching)},
 };
 
+static const JNINativeMethod sAntennaInfoMethods[] = {
+        /* name, signature, funcPtr */
+        {"native_is_antenna_info_supported", "()Z",
+         reinterpret_cast<void*>(
+                 android_location_GnssAntennaInfoProvider_is_antenna_info_supported)},
+        {"native_start_antenna_info_listening", "()Z",
+         reinterpret_cast<void*>(
+                 android_location_GnssAntennaInfoProvider_start_antenna_info_listening)},
+        {"native_stop_antenna_info_listening", "()Z",
+         reinterpret_cast<void*>(
+                 android_location_GnssAntennaInfoProvider_stop_antenna_info_listening)},
+};
+
 static const JNINativeMethod sGeofenceMethods[] = {
      /* name, signature, funcPtr */
     {"native_is_geofence_supported",
@@ -3405,6 +3720,8 @@
 };
 
 int register_android_server_location_GnssLocationProvider(JNIEnv* env) {
+    jniRegisterNativeMethods(env, "com/android/server/location/GnssAntennaInfoProvider",
+                             sAntennaInfoMethods, NELEM(sAntennaInfoMethods));
     jniRegisterNativeMethods(
             env,
             "com/android/server/location/GnssBatchingProvider",
diff --git a/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
new file mode 100644
index 0000000..7e6f79f
--- /dev/null
+++ b/services/core/jni/com_android_server_pm_PackageManagerShellCommandDataLoader.cpp
@@ -0,0 +1,411 @@
+/*
+ * 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.
+ */
+
+#define ATRACE_TAG ATRACE_TAG_ADB
+#define LOG_TAG "PackageManagerShellCommandDataLoader-jni"
+#include <android-base/logging.h>
+
+#include <android-base/unique_fd.h>
+#include <nativehelper/JNIHelp.h>
+#include "android-base/file.h"
+
+#include <endian.h>
+
+#include <core_jni_helpers.h>
+
+#include "dataloader.h"
+
+#include <chrono>
+#include <thread>
+
+namespace android {
+
+namespace {
+
+using android::base::borrowed_fd;
+using android::base::ReadFully;
+using android::base::unique_fd;
+
+static constexpr int BUFFER_SIZE = 256 * 1024;
+static constexpr int BLOCKS_COUNT = BUFFER_SIZE / INCFS_DATA_FILE_BLOCK_SIZE;
+
+struct JniIds {
+    jclass packageManagerShellCommandDataLoader;
+    jmethodID pmscdLookupShellCommand;
+    jmethodID pmscdGetStdInPFD;
+    jmethodID pmscdGetLocalFile;
+
+    jmethodID parcelFileDescriptorGetFileDescriptor;
+
+    jclass ioUtils;
+    jmethodID ioUtilsCloseQuietly;
+
+    JniIds(JNIEnv* env) {
+        packageManagerShellCommandDataLoader = (jclass)env->NewGlobalRef(
+                FindClassOrDie(env, "com/android/server/pm/PackageManagerShellCommandDataLoader"));
+        pmscdLookupShellCommand =
+                GetStaticMethodIDOrDie(env, packageManagerShellCommandDataLoader,
+                                       "lookupShellCommand",
+                                       "(Ljava/lang/String;)Landroid/os/ShellCommand;");
+        pmscdGetStdInPFD =
+                GetStaticMethodIDOrDie(env, packageManagerShellCommandDataLoader, "getStdInPFD",
+                                       "(Landroid/os/ShellCommand;)Landroid/os/"
+                                       "ParcelFileDescriptor;");
+        pmscdGetLocalFile =
+                GetStaticMethodIDOrDie(env, packageManagerShellCommandDataLoader, "getLocalFile",
+                                       "(Landroid/os/ShellCommand;Ljava/lang/String;)Landroid/os/"
+                                       "ParcelFileDescriptor;");
+
+        auto parcelFileDescriptor = FindClassOrDie(env, "android/os/ParcelFileDescriptor");
+        parcelFileDescriptorGetFileDescriptor =
+                GetMethodIDOrDie(env, parcelFileDescriptor, "getFileDescriptor",
+                                 "()Ljava/io/FileDescriptor;");
+
+        ioUtils = (jclass)env->NewGlobalRef(FindClassOrDie(env, "libcore/io/IoUtils"));
+        ioUtilsCloseQuietly = GetStaticMethodIDOrDie(env, ioUtils, "closeQuietly",
+                                                     "(Ljava/lang/AutoCloseable;)V");
+    }
+};
+
+const JniIds& jniIds(JNIEnv* env) {
+    static const JniIds ids(env);
+    return ids;
+}
+
+static inline int32_t readBEInt32(borrowed_fd fd) {
+    int32_t result;
+    ReadFully(fd, &result, sizeof(result));
+    result = int32_t(be32toh(result));
+    return result;
+}
+
+static inline std::vector<char> readBytes(borrowed_fd fd) {
+    int32_t size = readBEInt32(fd);
+    std::vector<char> result(size);
+    ReadFully(fd, result.data(), size);
+    return result;
+}
+
+static inline int32_t skipIdSigHeaders(borrowed_fd fd) {
+    readBytes(fd);          // verityRootHash
+    readBytes(fd);          // v3Digest
+    readBytes(fd);          // pkcs7SignatureBlock
+    return readBEInt32(fd); // size of the verity tree
+}
+
+static inline unique_fd convertPfdToFdAndDup(JNIEnv* env, const JniIds& jni, jobject pfd) {
+    if (!pfd) {
+        ALOGE("Missing In ParcelFileDescriptor.");
+        return {};
+    }
+    auto managedFd = env->CallObjectMethod(pfd, jni.parcelFileDescriptorGetFileDescriptor);
+    if (!pfd) {
+        ALOGE("Missing In FileDescriptor.");
+        return {};
+    }
+    unique_fd result{dup(jniGetFDFromFileDescriptor(env, managedFd))};
+    // Can be closed after dup.
+    env->CallStaticVoidMethod(jni.ioUtils, jni.ioUtilsCloseQuietly, pfd);
+    return result;
+}
+
+struct InputDesc {
+    unique_fd fd;
+    IncFsSize size;
+    IncFsBlockKind kind;
+    bool waitOnEof;
+};
+using InputDescs = std::vector<InputDesc>;
+
+static inline InputDescs openInputs(JNIEnv* env, const JniIds& jni, jobject shellCommand,
+                                    IncFsSize size, IncFsSpan metadata) {
+    InputDescs result;
+    result.reserve(2);
+
+    const bool fromStdin = (metadata.size == 0 || *metadata.data == '-');
+    if (fromStdin) {
+        // stdin
+        auto fd = convertPfdToFdAndDup(
+                env, jni,
+                env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader,
+                                            jni.pmscdGetStdInPFD, shellCommand));
+        if (fd.ok()) {
+            result.push_back(InputDesc{
+                    .fd = std::move(fd),
+                    .size = size,
+                    .kind = INCFS_BLOCK_KIND_DATA,
+                    .waitOnEof = true,
+            });
+        }
+        return result;
+    }
+
+    // local file and possibly signature
+    const std::string filePath(metadata.data, metadata.size);
+    const std::string idsigPath = filePath + ".idsig";
+
+    auto idsigFd = convertPfdToFdAndDup(
+            env, jni,
+            env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader,
+                                        jni.pmscdGetLocalFile, shellCommand,
+                                        env->NewStringUTF(idsigPath.c_str())));
+    if (idsigFd.ok()) {
+        ALOGE("idsig found, skipping to the tree");
+        auto treeSize = skipIdSigHeaders(idsigFd);
+        result.push_back(InputDesc{
+                .fd = std::move(idsigFd),
+                .size = treeSize,
+                .kind = INCFS_BLOCK_KIND_HASH,
+                .waitOnEof = false,
+        });
+    }
+
+    auto fileFd = convertPfdToFdAndDup(
+            env, jni,
+            env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader,
+                                        jni.pmscdGetLocalFile, shellCommand,
+                                        env->NewStringUTF(filePath.c_str())));
+    if (fileFd.ok()) {
+        result.push_back(InputDesc{
+                .fd = std::move(fileFd),
+                .size = size,
+                .kind = INCFS_BLOCK_KIND_DATA,
+                .waitOnEof = false,
+        });
+    }
+
+    return result;
+}
+
+static inline JNIEnv* GetJNIEnvironment(JavaVM* vm) {
+    JNIEnv* env;
+    if (vm->GetEnv(reinterpret_cast<void**>(&env), JNI_VERSION_1_6) != JNI_OK) {
+        return 0;
+    }
+    return env;
+}
+
+static inline JNIEnv* GetOrAttachJNIEnvironment(JavaVM* jvm) {
+    JNIEnv* env = GetJNIEnvironment(jvm);
+    if (!env) {
+        int result = jvm->AttachCurrentThread(&env, nullptr);
+        CHECK_EQ(result, JNI_OK) << "thread attach failed";
+        struct VmDetacher {
+            VmDetacher(JavaVM* vm) : mVm(vm) {}
+            ~VmDetacher() { mVm->DetachCurrentThread(); }
+
+        private:
+            JavaVM* const mVm;
+        };
+        static thread_local VmDetacher detacher(jvm);
+    }
+    return env;
+}
+
+class PackageManagerShellCommandDataLoaderDataLoader : public android::dataloader::DataLoader {
+public:
+    PackageManagerShellCommandDataLoaderDataLoader(JavaVM* jvm) : mJvm(jvm) { CHECK(mJvm); }
+
+private:
+    // Lifecycle.
+    bool onCreate(const android::dataloader::DataLoaderParams& params,
+                  android::dataloader::FilesystemConnectorPtr ifs,
+                  android::dataloader::StatusListenerPtr statusListener,
+                  android::dataloader::ServiceConnectorPtr,
+                  android::dataloader::ServiceParamsPtr) final {
+        mArgs = params.arguments();
+        mIfs = ifs;
+        return true;
+    }
+    bool onStart() final { return true; }
+    void onStop() final {}
+    void onDestroy() final {}
+
+    // IFS callbacks.
+    void onPendingReads(const dataloader::PendingReads& pendingReads) final {}
+    void onPageReads(const dataloader::PageReads& pageReads) final {}
+
+    // FS callbacks.
+    bool onPrepareImage(const dataloader::DataLoaderInstallationFiles& addedFiles) final {
+        JNIEnv* env = GetOrAttachJNIEnvironment(mJvm);
+        const auto& jni = jniIds(env);
+
+        jobject shellCommand = env->CallStaticObjectMethod(jni.packageManagerShellCommandDataLoader,
+                                                           jni.pmscdLookupShellCommand,
+                                                           env->NewStringUTF(mArgs.c_str()));
+        if (!shellCommand) {
+            ALOGE("Missing shell command.");
+            return false;
+        }
+
+        std::vector<char> buffer;
+        buffer.reserve(BUFFER_SIZE);
+
+        std::vector<IncFsDataBlock> blocks;
+        blocks.reserve(BLOCKS_COUNT);
+
+        for (auto&& file : addedFiles) {
+            auto inputs = openInputs(env, jni, shellCommand, file.size, file.metadata);
+            if (inputs.empty()) {
+                ALOGE("Failed to open an input file for metadata: %.*s, final file name is: %s. "
+                      "Error %d",
+                      int(file.metadata.size), file.metadata.data, file.name, errno);
+                return false;
+            }
+
+            const auto fileId = IncFs_FileIdFromMetadata(file.metadata);
+
+            const auto incfsFd(mIfs->openWrite(fileId));
+            if (incfsFd < 0) {
+                ALOGE("Failed to open an IncFS file for metadata: %.*s, final file name is: %s. "
+                      "Error %d",
+                      int(file.metadata.size), file.metadata.data, file.name, errno);
+                return false;
+            }
+
+            for (auto&& input : inputs) {
+                if (!copyToIncFs(incfsFd, input.size, input.kind, input.fd, input.waitOnEof,
+                                 &buffer, &blocks)) {
+                    ALOGE("Failed to copy data to IncFS file for metadata: %.*s, final file name "
+                          "is: %s. "
+                          "Error %d",
+                          int(file.metadata.size), file.metadata.data, file.name, errno);
+                    return false;
+                }
+            }
+        }
+
+        ALOGE("All done.");
+        return true;
+    }
+
+    bool copyToIncFs(borrowed_fd incfsFd, IncFsSize size, IncFsBlockKind kind,
+                     borrowed_fd incomingFd, bool waitOnEof, std::vector<char>* buffer,
+                     std::vector<IncFsDataBlock>* blocks) {
+        IncFsSize remaining = size;
+        IncFsSize totalSize = 0;
+        IncFsBlockIndex blockIdx = 0;
+        while (remaining > 0) {
+            constexpr auto capacity = BUFFER_SIZE;
+            auto size = buffer->size();
+            if (capacity - size < INCFS_DATA_FILE_BLOCK_SIZE) {
+                if (!flashToIncFs(incfsFd, kind, false, &blockIdx, buffer, blocks)) {
+                    return false;
+                }
+                continue;
+            }
+
+            auto toRead = std::min<IncFsSize>(remaining, capacity - size);
+            buffer->resize(size + toRead);
+            auto read = ::read(incomingFd.get(), buffer->data() + size, toRead);
+            if (read == 0) {
+                if (waitOnEof) {
+                    // eof of stdin, waiting...
+                    ALOGE("eof of stdin, waiting...: %d, remaining: %d, block: %d, read: %d",
+                          int(totalSize), int(remaining), int(blockIdx), int(read));
+                    using namespace std::chrono_literals;
+                    std::this_thread::sleep_for(10ms);
+                    continue;
+                }
+                break;
+            }
+            if (read < 0) {
+                return false;
+            }
+
+            buffer->resize(size + read);
+            remaining -= read;
+            totalSize += read;
+        }
+        if (!buffer->empty() && !flashToIncFs(incfsFd, kind, true, &blockIdx, buffer, blocks)) {
+            return false;
+        }
+        return true;
+    }
+
+    bool flashToIncFs(borrowed_fd incfsFd, IncFsBlockKind kind, bool eof, IncFsBlockIndex* blockIdx,
+                      std::vector<char>* buffer, std::vector<IncFsDataBlock>* blocks) {
+        int consumed = 0;
+        const auto fullBlocks = buffer->size() / INCFS_DATA_FILE_BLOCK_SIZE;
+        for (int i = 0; i < fullBlocks; ++i) {
+            const auto inst = IncFsDataBlock{
+                    .fileFd = incfsFd.get(),
+                    .pageIndex = (*blockIdx)++,
+                    .compression = INCFS_COMPRESSION_KIND_NONE,
+                    .kind = kind,
+                    .dataSize = INCFS_DATA_FILE_BLOCK_SIZE,
+                    .data = buffer->data() + consumed,
+            };
+            blocks->push_back(inst);
+            consumed += INCFS_DATA_FILE_BLOCK_SIZE;
+        }
+        const auto remain = buffer->size() - fullBlocks * INCFS_DATA_FILE_BLOCK_SIZE;
+        if (remain && eof) {
+            const auto inst = IncFsDataBlock{
+                    .fileFd = incfsFd.get(),
+                    .pageIndex = (*blockIdx)++,
+                    .compression = INCFS_COMPRESSION_KIND_NONE,
+                    .kind = kind,
+                    .dataSize = static_cast<uint16_t>(remain),
+                    .data = buffer->data() + consumed,
+            };
+            blocks->push_back(inst);
+            consumed += remain;
+        }
+
+        auto res = mIfs->writeBlocks({blocks->data(), blocks->data() + blocks->size()});
+
+        blocks->clear();
+        buffer->erase(buffer->begin(), buffer->begin() + consumed);
+
+        if (res < 0) {
+            ALOGE("Failed to write block to IncFS: %d", int(res));
+            return false;
+        }
+        return true;
+    }
+
+    JavaVM* const mJvm;
+    std::string mArgs;
+    android::dataloader::FilesystemConnectorPtr mIfs;
+};
+
+static void nativeInitialize(JNIEnv* env, jclass klass) {
+    jniIds(env);
+}
+
+static const JNINativeMethod method_table[] = {
+        {"nativeInitialize", "()V", (void*)nativeInitialize},
+};
+
+} // namespace
+
+int register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(
+        JNIEnv* env) {
+    android::dataloader::DataLoader::initialize(
+            [](auto jvm, const auto& params) -> android::dataloader::DataLoaderPtr {
+                if (params.type() == DATA_LOADER_TYPE_INCREMENTAL) {
+                    // This DataLoader only supports incremental installations.
+                    return std::make_unique<PackageManagerShellCommandDataLoaderDataLoader>(jvm);
+                }
+                return {};
+            });
+    return jniRegisterNativeMethods(env,
+                                    "com/android/server/pm/PackageManagerShellCommandDataLoader",
+                                    method_table, NELEM(method_table));
+}
+
+} // namespace android
diff --git a/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp
new file mode 100644
index 0000000..43cd0a2
--- /dev/null
+++ b/services/core/jni/com_android_server_stats_pull_StatsPullAtomService.cpp
@@ -0,0 +1,73 @@
+/*
+ * 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.
+ */
+
+#define LOG_TAG "StatsPullAtomService"
+
+#include <jni.h>
+#include <log/log.h>
+#include <nativehelper/JNIHelp.h>
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
+#include <statslog.h>
+
+#include "stats/PowerStatsPuller.h"
+#include "stats/SubsystemSleepStatePuller.h"
+
+namespace android {
+
+static server::stats::PowerStatsPuller gPowerStatsPuller;
+static server::stats::SubsystemSleepStatePuller gSubsystemSleepStatePuller;
+
+static AStatsManager_PullAtomCallbackReturn onDevicePowerMeasurementCallback(int32_t atom_tag,
+                                                                             AStatsEventList* data,
+                                                                             void* cookie) {
+    return gPowerStatsPuller.Pull(atom_tag, data);
+}
+
+static AStatsManager_PullAtomCallbackReturn subsystemSleepStateCallback(int32_t atom_tag,
+                                                                        AStatsEventList* data,
+                                                                        void* cookie) {
+    return gSubsystemSleepStatePuller.Pull(atom_tag, data);
+}
+
+static void nativeInit(JNIEnv* env, jobject javaObject) {
+    // on device power measurement
+    gPowerStatsPuller = server::stats::PowerStatsPuller();
+    AStatsManager_registerPullAtomCallback(android::util::ON_DEVICE_POWER_MEASUREMENT,
+                                           onDevicePowerMeasurementCallback,
+                                           /* metadata= */ nullptr,
+                                           /* cookie= */ nullptr);
+
+    // subsystem sleep state
+    gSubsystemSleepStatePuller = server::stats::SubsystemSleepStatePuller();
+    AStatsManager_registerPullAtomCallback(android::util::SUBSYSTEM_SLEEP_STATE,
+                                           subsystemSleepStateCallback,
+                                           /* metadata= */ nullptr,
+                                           /* cookie= */ nullptr);
+}
+
+static const JNINativeMethod sMethods[] = {{"nativeInit", "()V", (void*)nativeInit}};
+
+int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env) {
+    int res = jniRegisterNativeMethods(env, "com/android/server/stats/pull/StatsPullAtomService",
+                                       sMethods, NELEM(sMethods));
+    if (res < 0) {
+        ALOGE("failed to register native methods");
+    }
+    return res;
+}
+
+} // namespace android
diff --git a/services/core/jni/onload.cpp b/services/core/jni/onload.cpp
index 19fa062..e575432 100644
--- a/services/core/jni/onload.cpp
+++ b/services/core/jni/onload.cpp
@@ -49,7 +49,7 @@
 int register_android_server_Watchdog(JNIEnv* env);
 int register_android_server_HardwarePropertiesManagerService(JNIEnv* env);
 int register_android_server_SyntheticPasswordManager(JNIEnv* env);
-int register_android_server_GraphicsStatsService(JNIEnv* env);
+int register_android_graphics_GraphicsStatsService(JNIEnv* env);
 int register_android_hardware_display_DisplayViewport(JNIEnv* env);
 int register_android_server_net_NetworkStatsFactory(JNIEnv* env);
 int register_android_server_net_NetworkStatsService(JNIEnv* env);
@@ -59,6 +59,8 @@
 int register_com_android_server_soundtrigger_middleware_AudioSessionProviderImpl(
         JNIEnv* env);
 int register_android_server_incremental_IncrementalManagerService(JNIEnv* env);
+int register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(JNIEnv* env);
+int register_android_server_stats_pull_StatsPullAtomService(JNIEnv* env);
 };
 
 using namespace android;
@@ -101,7 +103,7 @@
     register_android_server_HardwarePropertiesManagerService(env);
     register_android_server_storage_AppFuse(env);
     register_android_server_SyntheticPasswordManager(env);
-    register_android_server_GraphicsStatsService(env);
+    register_android_graphics_GraphicsStatsService(env);
     register_android_hardware_display_DisplayViewport(env);
     register_android_server_net_NetworkStatsFactory(env);
     register_android_server_net_NetworkStatsService(env);
@@ -111,5 +113,7 @@
     register_com_android_server_soundtrigger_middleware_AudioSessionProviderImpl(
             env);
     register_android_server_incremental_IncrementalManagerService(env);
+    register_android_server_com_android_server_pm_PackageManagerShellCommandDataLoader(env);
+    register_android_server_stats_pull_StatsPullAtomService(env);
     return JNI_VERSION_1_4;
 }
diff --git a/services/core/jni/stats/OWNERS b/services/core/jni/stats/OWNERS
new file mode 100644
index 0000000..a61babf
--- /dev/null
+++ b/services/core/jni/stats/OWNERS
@@ -0,0 +1,9 @@
+jeffreyhuang@google.com
+joeo@google.com
+jtnguyen@google.com
+muhammadq@google.com
+ruchirr@google.com
+singhtejinder@google.com
+tsaichristine@google.com
+yaochen@google.com
+yro@google.com
diff --git a/services/core/jni/stats/PowerStatsPuller.cpp b/services/core/jni/stats/PowerStatsPuller.cpp
new file mode 100644
index 0000000..d8f6faa
--- /dev/null
+++ b/services/core/jni/stats/PowerStatsPuller.cpp
@@ -0,0 +1,165 @@
+/*
+ * Copyright (C) 2018 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.
+ */
+
+#define DEBUG false // STOPSHIP if true
+#define LOG_TAG "PowerStatsPuller"
+
+#include <android/hardware/power/stats/1.0/IPowerStats.h>
+#include <log/log.h>
+#include <statslog.h>
+
+#include <vector>
+
+#include "PowerStatsPuller.h"
+
+using android::hardware::hidl_vec;
+using android::hardware::Return;
+using android::hardware::Void;
+using android::hardware::power::stats::V1_0::EnergyData;
+using android::hardware::power::stats::V1_0::IPowerStats;
+using android::hardware::power::stats::V1_0::RailInfo;
+using android::hardware::power::stats::V1_0::Status;
+
+namespace android {
+namespace server {
+namespace stats {
+
+static sp<android::hardware::power::stats::V1_0::IPowerStats> gPowerStatsHal = nullptr;
+static std::mutex gPowerStatsHalMutex;
+static bool gPowerStatsExist = true; // Initialized to ensure making a first attempt.
+static std::vector<RailInfo> gRailInfo;
+
+struct PowerStatsPullerDeathRecipient : virtual public hardware::hidl_death_recipient {
+    virtual void serviceDied(uint64_t cookie,
+                             const wp<android::hidl::base::V1_0::IBase>& who) override {
+        // The HAL just died. Reset all handles to HAL services.
+        std::lock_guard<std::mutex> lock(gPowerStatsHalMutex);
+        gPowerStatsHal = nullptr;
+    }
+};
+
+static sp<PowerStatsPullerDeathRecipient> gDeathRecipient = new PowerStatsPullerDeathRecipient();
+
+static bool getPowerStatsHalLocked() {
+    if (gPowerStatsHal == nullptr && gPowerStatsExist) {
+        gPowerStatsHal = android::hardware::power::stats::V1_0::IPowerStats::getService();
+        if (gPowerStatsHal == nullptr) {
+            ALOGW("Couldn't load power.stats HAL service");
+            gPowerStatsExist = false;
+        } else {
+            // Link death recipient to power.stats service handle
+            hardware::Return<bool> linked = gPowerStatsHal->linkToDeath(gDeathRecipient, 0);
+            if (!linked.isOk()) {
+                ALOGE("Transaction error in linking to power.stats HAL death: %s",
+                      linked.description().c_str());
+                gPowerStatsHal = nullptr;
+                return false;
+            } else if (!linked) {
+                ALOGW("Unable to link to power.stats HAL death notifications");
+                // We should still continue even though linking failed
+            }
+        }
+    }
+    return gPowerStatsHal != nullptr;
+}
+
+PowerStatsPuller::PowerStatsPuller() {}
+
+AStatsManager_PullAtomCallbackReturn PowerStatsPuller::Pull(int32_t atomTag,
+                                                            AStatsEventList* data) {
+    std::lock_guard<std::mutex> lock(gPowerStatsHalMutex);
+
+    if (!getPowerStatsHalLocked()) {
+        return AStatsManager_PULL_SKIP;
+    }
+
+    // Pull getRailInfo if necessary
+    if (gRailInfo.empty()) {
+        bool resultSuccess = true;
+        Return<void> ret = gPowerStatsHal->getRailInfo(
+                [&resultSuccess](const hidl_vec<RailInfo>& list, Status status) {
+                    resultSuccess = (status == Status::SUCCESS || status == Status::NOT_SUPPORTED);
+                    if (status != Status::SUCCESS) return;
+                    gRailInfo.reserve(list.size());
+                    for (size_t i = 0; i < list.size(); ++i) {
+                        gRailInfo.push_back(list[i]);
+                    }
+                });
+        if (!resultSuccess || !ret.isOk()) {
+            ALOGE("power.stats getRailInfo() failed. Description: %s", ret.description().c_str());
+            gPowerStatsHal = nullptr;
+            return AStatsManager_PULL_SKIP;
+        }
+        // If SUCCESS but empty, or if NOT_SUPPORTED, then never try again.
+        if (gRailInfo.empty()) {
+            ALOGE("power.stats has no rail information");
+            gPowerStatsExist = false; // No rail info, so never try again.
+            gPowerStatsHal = nullptr;
+            return AStatsManager_PULL_SKIP;
+        }
+    }
+
+    // Pull getEnergyData and write the data out
+    const hidl_vec<uint32_t> desiredRailIndices; // Empty vector indicates we want all.
+    bool resultSuccess = true;
+    Return<void> ret =
+            gPowerStatsHal
+                    ->getEnergyData(desiredRailIndices,
+                                    [&data, &resultSuccess](hidl_vec<EnergyData> energyDataList,
+                                                            Status status) {
+                                        resultSuccess = (status == Status::SUCCESS);
+                                        if (!resultSuccess) return;
+
+                                        for (size_t i = 0; i < energyDataList.size(); i++) {
+                                            const EnergyData& energyData = energyDataList[i];
+
+                                            if (energyData.index >= gRailInfo.size()) {
+                                                ALOGE("power.stats getEnergyData() returned an "
+                                                      "invalid rail index %u.",
+                                                      energyData.index);
+                                                resultSuccess = false;
+                                                return;
+                                            }
+                                            const RailInfo& rail = gRailInfo[energyData.index];
+
+                                            AStatsEvent* event =
+                                                    AStatsEventList_addStatsEvent(data);
+                                            AStatsEvent_setAtomId(
+                                                    event,
+                                                    android::util::ON_DEVICE_POWER_MEASUREMENT);
+                                            AStatsEvent_writeString(event, rail.subsysName.c_str());
+                                            AStatsEvent_writeString(event, rail.railName.c_str());
+                                            AStatsEvent_writeInt64(event, energyData.timestamp);
+                                            AStatsEvent_writeInt64(event, energyData.energy);
+                                            AStatsEvent_build(event);
+
+                                            ALOGV("power.stat: %s.%s: %llu, %llu",
+                                                  rail.subsysName.c_str(), rail.railName.c_str(),
+                                                  (unsigned long long)energyData.timestamp,
+                                                  (unsigned long long)energyData.energy);
+                                        }
+                                    });
+    if (!resultSuccess || !ret.isOk()) {
+        ALOGE("power.stats getEnergyData() failed. Description: %s", ret.description().c_str());
+        gPowerStatsHal = nullptr;
+        return AStatsManager_PULL_SKIP;
+    }
+    return AStatsManager_PULL_SUCCESS;
+}
+
+} // namespace stats
+} // namespace server
+} // namespace android
diff --git a/cmds/statsd/src/external/PowerStatsPuller.h b/services/core/jni/stats/PowerStatsPuller.h
similarity index 72%
rename from cmds/statsd/src/external/PowerStatsPuller.h
rename to services/core/jni/stats/PowerStatsPuller.h
index 6f15bd6..db07d60 100644
--- a/cmds/statsd/src/external/PowerStatsPuller.h
+++ b/services/core/jni/stats/PowerStatsPuller.h
@@ -16,23 +16,22 @@
 
 #pragma once
 
-#include "StatsPuller.h"
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
 
 namespace android {
-namespace os {
-namespace statsd {
+namespace server {
+namespace stats {
 
 /**
  * Reads hal for power.stats
  */
-class PowerStatsPuller : public StatsPuller {
+class PowerStatsPuller {
 public:
     PowerStatsPuller();
-
-private:
-    bool PullInternal(vector<std::shared_ptr<LogEvent>>* data) override;
+    AStatsManager_PullAtomCallbackReturn Pull(int32_t atomTag, AStatsEventList* data);
 };
 
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
+} // namespace stats
+} // namespace server
+} // namespace android
diff --git a/services/core/jni/stats/SubsystemSleepStatePuller.cpp b/services/core/jni/stats/SubsystemSleepStatePuller.cpp
new file mode 100644
index 0000000..45afb5e
--- /dev/null
+++ b/services/core/jni/stats/SubsystemSleepStatePuller.cpp
@@ -0,0 +1,367 @@
+/*
+ * Copyright (C) 2017 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.
+ */
+
+#define DEBUG false  // STOPSHIP if true
+#define LOG_TAG "SubsystemSleepStatePuller"
+
+#include <log/log.h>
+#include <statslog.h>
+
+#include <android/hardware/power/1.0/IPower.h>
+#include <android/hardware/power/1.1/IPower.h>
+#include <android/hardware/power/stats/1.0/IPowerStats.h>
+
+#include <fcntl.h>
+#include <hardware/power.h>
+#include <hardware_legacy/power.h>
+#include <inttypes.h>
+#include <semaphore.h>
+#include <stddef.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <unordered_map>
+#include "SubsystemSleepStatePuller.h"
+
+using android::hardware::hidl_vec;
+using android::hardware::power::V1_0::IPower;
+using android::hardware::power::V1_0::PowerStatePlatformSleepState;
+using android::hardware::power::V1_0::PowerStateVoter;
+using android::hardware::power::V1_1::PowerStateSubsystem;
+using android::hardware::power::V1_1::PowerStateSubsystemSleepState;
+using android::hardware::power::stats::V1_0::PowerEntityInfo;
+using android::hardware::power::stats::V1_0::PowerEntityStateResidencyResult;
+using android::hardware::power::stats::V1_0::PowerEntityStateSpace;
+
+using android::hardware::Return;
+using android::hardware::Void;
+
+namespace android {
+namespace server {
+namespace stats {
+
+static std::function<AStatsManager_PullAtomCallbackReturn(int32_t atomTag, AStatsEventList* data)>
+        gPuller = {};
+
+static sp<android::hardware::power::V1_0::IPower> gPowerHalV1_0 = nullptr;
+static sp<android::hardware::power::V1_1::IPower> gPowerHalV1_1 = nullptr;
+static sp<android::hardware::power::stats::V1_0::IPowerStats> gPowerStatsHalV1_0 = nullptr;
+
+static std::unordered_map<uint32_t, std::string> gEntityNames = {};
+static std::unordered_map<uint32_t, std::unordered_map<uint32_t, std::string>> gStateNames = {};
+
+static std::mutex gPowerHalMutex;
+
+// The caller must be holding gPowerHalMutex.
+static void deinitPowerStatsLocked() {
+    gPowerHalV1_0 = nullptr;
+    gPowerHalV1_1 = nullptr;
+    gPowerStatsHalV1_0 = nullptr;
+}
+
+struct SubsystemSleepStatePullerDeathRecipient : virtual public hardware::hidl_death_recipient {
+    virtual void serviceDied(uint64_t cookie,
+            const wp<android::hidl::base::V1_0::IBase>& who) override {
+
+        // The HAL just died. Reset all handles to HAL services.
+        std::lock_guard<std::mutex> lock(gPowerHalMutex);
+        deinitPowerStatsLocked();
+    }
+};
+
+static sp<SubsystemSleepStatePullerDeathRecipient> gDeathRecipient =
+        new SubsystemSleepStatePullerDeathRecipient();
+
+SubsystemSleepStatePuller::SubsystemSleepStatePuller() {}
+
+// The caller must be holding gPowerHalMutex.
+static bool checkResultLocked(const Return<void> &ret, const char* function) {
+    if (!ret.isOk()) {
+        ALOGE("%s failed: requested HAL service not available. Description: %s",
+            function, ret.description().c_str());
+        if (ret.isDeadObject()) {
+            deinitPowerStatsLocked();
+        }
+        return false;
+    }
+    return true;
+}
+
+// The caller must be holding gPowerHalMutex.
+// gPowerStatsHalV1_0 must not be null
+static bool initializePowerStats() {
+    using android::hardware::power::stats::V1_0::Status;
+
+    // Clear out previous content if we are re-initializing
+    gEntityNames.clear();
+    gStateNames.clear();
+
+    Return<void> ret;
+    ret = gPowerStatsHalV1_0->getPowerEntityInfo([](auto infos, auto status) {
+        if (status != Status::SUCCESS) {
+            ALOGE("Error getting power entity info");
+            return;
+        }
+
+        // construct lookup table of powerEntityId to power entity name
+        for (auto info : infos) {
+            gEntityNames.emplace(info.powerEntityId, info.powerEntityName);
+        }
+    });
+    if (!checkResultLocked(ret, __func__)) {
+        return false;
+    }
+
+    ret = gPowerStatsHalV1_0->getPowerEntityStateInfo({}, [](auto stateSpaces, auto status) {
+        if (status != Status::SUCCESS) {
+            ALOGE("Error getting state info");
+            return;
+        }
+
+        // construct lookup table of powerEntityId, powerEntityStateId to power entity state name
+        for (auto stateSpace : stateSpaces) {
+            std::unordered_map<uint32_t, std::string> stateNames = {};
+            for (auto state : stateSpace.states) {
+                stateNames.emplace(state.powerEntityStateId,
+                    state.powerEntityStateName);
+            }
+            gStateNames.emplace(stateSpace.powerEntityId, stateNames);
+        }
+    });
+    if (!checkResultLocked(ret, __func__)) {
+        return false;
+    }
+
+    return (!gEntityNames.empty()) && (!gStateNames.empty());
+}
+
+// The caller must be holding gPowerHalMutex.
+static bool getPowerStatsHalLocked() {
+    if(gPowerStatsHalV1_0 == nullptr) {
+        gPowerStatsHalV1_0 = android::hardware::power::stats::V1_0::IPowerStats::getService();
+        if (gPowerStatsHalV1_0 == nullptr) {
+            ALOGE("Unable to get power.stats HAL service.");
+            return false;
+        }
+
+        // Link death recipient to power.stats service handle
+        hardware::Return<bool> linked = gPowerStatsHalV1_0->linkToDeath(gDeathRecipient, 0);
+        if (!linked.isOk()) {
+            ALOGE("Transaction error in linking to power.stats HAL death: %s",
+                    linked.description().c_str());
+            deinitPowerStatsLocked();
+            return false;
+        } else if (!linked) {
+            ALOGW("Unable to link to power.stats HAL death notifications");
+            // We should still continue even though linking failed
+        }
+        return initializePowerStats();
+    }
+    return true;
+}
+
+// The caller must be holding gPowerHalMutex.
+static AStatsManager_PullAtomCallbackReturn getIPowerStatsDataLocked(int32_t atomTag,
+                                                                     AStatsEventList* data) {
+    using android::hardware::power::stats::V1_0::Status;
+
+    if(!getPowerStatsHalLocked()) {
+        return AStatsManager_PULL_SKIP;
+    }
+    // Get power entity state residency data
+    bool success = false;
+    Return<void> ret = gPowerStatsHalV1_0->getPowerEntityStateResidencyData(
+            {}, [&data, &success](auto results, auto status) {
+                if (status == Status::NOT_SUPPORTED) {
+                    ALOGW("getPowerEntityStateResidencyData is not supported");
+                    success = false;
+                    return;
+                }
+                for (auto result : results) {
+                    for (auto stateResidency : result.stateResidencyData) {
+                        AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+                        AStatsEvent_setAtomId(event, android::util::SUBSYSTEM_SLEEP_STATE);
+                        AStatsEvent_writeString(event,
+                                                gEntityNames.at(result.powerEntityId).c_str());
+                        AStatsEvent_writeString(event,
+                                                gStateNames.at(result.powerEntityId)
+                                                        .at(stateResidency.powerEntityStateId)
+                                                        .c_str());
+                        AStatsEvent_writeInt64(event, stateResidency.totalStateEntryCount);
+                        AStatsEvent_writeInt64(event, stateResidency.totalTimeInStateMs);
+                        AStatsEvent_build(event);
+                    }
+                }
+                success = true;
+            });
+    // Intentionally not returning early here.
+    // bool success determines if this succeeded or not.
+    checkResultLocked(ret, __func__);
+    if (!success) {
+        return AStatsManager_PULL_SKIP;
+    }
+    return AStatsManager_PULL_SUCCESS;
+}
+
+// The caller must be holding gPowerHalMutex.
+static bool getPowerHalLocked() {
+    if(gPowerHalV1_0 == nullptr) {
+        gPowerHalV1_0 = android::hardware::power::V1_0::IPower::getService();
+        if(gPowerHalV1_0 == nullptr) {
+            ALOGE("Unable to get power HAL service.");
+            return false;
+        }
+        gPowerHalV1_1 = android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
+
+        // Link death recipient to power service handle
+        hardware::Return<bool> linked = gPowerHalV1_0->linkToDeath(gDeathRecipient, 0);
+        if (!linked.isOk()) {
+            ALOGE("Transaction error in linking to power HAL death: %s",
+                    linked.description().c_str());
+            gPowerHalV1_0 = nullptr;
+            return false;
+        } else if (!linked) {
+            ALOGW("Unable to link to power. death notifications");
+            // We should still continue even though linking failed
+        }
+    }
+    return true;
+}
+
+// The caller must be holding gPowerHalMutex.
+static AStatsManager_PullAtomCallbackReturn getIPowerDataLocked(int32_t atomTag,
+                                                                AStatsEventList* data) {
+    using android::hardware::power::V1_0::Status;
+
+    if(!getPowerHalLocked()) {
+        return AStatsManager_PULL_SKIP;
+    }
+
+        Return<void> ret;
+        ret = gPowerHalV1_0->getPlatformLowPowerStats(
+                [&data](hidl_vec<PowerStatePlatformSleepState> states, Status status) {
+                    if (status != Status::SUCCESS) return;
+
+                    for (size_t i = 0; i < states.size(); i++) {
+                        const PowerStatePlatformSleepState& state = states[i];
+                        AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+                        AStatsEvent_setAtomId(event, android::util::SUBSYSTEM_SLEEP_STATE);
+                        AStatsEvent_writeString(event, state.name.c_str());
+                        AStatsEvent_writeString(event, "");
+                        AStatsEvent_writeInt64(event, state.totalTransitions);
+                        AStatsEvent_writeInt64(event, state.residencyInMsecSinceBoot);
+                        AStatsEvent_build(event);
+
+                        ALOGV("powerstate: %s, %lld, %lld, %d", state.name.c_str(),
+                              (long long)state.residencyInMsecSinceBoot,
+                              (long long)state.totalTransitions,
+                              state.supportedOnlyInSuspend ? 1 : 0);
+                        for (const auto& voter : state.voters) {
+                            AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+                            AStatsEvent_setAtomId(event, android::util::SUBSYSTEM_SLEEP_STATE);
+                            AStatsEvent_writeString(event, state.name.c_str());
+                            AStatsEvent_writeString(event, voter.name.c_str());
+                            AStatsEvent_writeInt64(event, voter.totalNumberOfTimesVotedSinceBoot);
+                            AStatsEvent_writeInt64(event, voter.totalTimeInMsecVotedForSinceBoot);
+                            AStatsEvent_build(event);
+
+                            ALOGV("powerstatevoter: %s, %s, %lld, %lld", state.name.c_str(),
+                                  voter.name.c_str(),
+                                  (long long)voter.totalTimeInMsecVotedForSinceBoot,
+                                  (long long)voter.totalNumberOfTimesVotedSinceBoot);
+                        }
+                    }
+                });
+        if (!checkResultLocked(ret, __func__)) {
+            return AStatsManager_PULL_SKIP;
+        }
+
+        // Trying to cast to IPower 1.1, this will succeed only for devices supporting 1.1
+        sp<android::hardware::power::V1_1::IPower> gPowerHal_1_1 =
+                android::hardware::power::V1_1::IPower::castFrom(gPowerHalV1_0);
+        if (gPowerHal_1_1 != nullptr) {
+            ret = gPowerHal_1_1->getSubsystemLowPowerStats(
+                    [&data](hidl_vec<PowerStateSubsystem> subsystems, Status status) {
+                        if (status != Status::SUCCESS) return;
+
+                        if (subsystems.size() > 0) {
+                            for (size_t i = 0; i < subsystems.size(); i++) {
+                                const PowerStateSubsystem& subsystem = subsystems[i];
+                                for (size_t j = 0; j < subsystem.states.size(); j++) {
+                                    const PowerStateSubsystemSleepState& state =
+                                            subsystem.states[j];
+                                    AStatsEvent* event = AStatsEventList_addStatsEvent(data);
+                                    AStatsEvent_setAtomId(event,
+                                                          android::util::SUBSYSTEM_SLEEP_STATE);
+                                    AStatsEvent_writeString(event, subsystem.name.c_str());
+                                    AStatsEvent_writeString(event, state.name.c_str());
+                                    AStatsEvent_writeInt64(event, state.totalTransitions);
+                                    AStatsEvent_writeInt64(event, state.residencyInMsecSinceBoot);
+                                    AStatsEvent_build(event);
+
+                                    ALOGV("subsystemstate: %s, %s, %lld, %lld, %lld",
+                                          subsystem.name.c_str(), state.name.c_str(),
+                                          (long long)state.residencyInMsecSinceBoot,
+                                          (long long)state.totalTransitions,
+                                          (long long)state.lastEntryTimestampMs);
+                                }
+                            }
+                        }
+                    });
+        }
+        return AStatsManager_PULL_SUCCESS;
+}
+
+// The caller must be holding gPowerHalMutex.
+std::function<AStatsManager_PullAtomCallbackReturn(int32_t atomTag, AStatsEventList* data)>
+getPullerLocked() {
+    std::function<AStatsManager_PullAtomCallbackReturn(int32_t atomTag, AStatsEventList * data)>
+            ret = {};
+
+    // First see if power.stats HAL is available. Fall back to power HAL if
+    // power.stats HAL is unavailable.
+    if(android::hardware::power::stats::V1_0::IPowerStats::getService() != nullptr) {
+        ALOGI("Using power.stats HAL");
+        ret = getIPowerStatsDataLocked;
+    } else if(android::hardware::power::V1_0::IPower::getService() != nullptr) {
+        ALOGI("Using power HAL");
+        ret = getIPowerDataLocked;
+    }
+
+    return ret;
+}
+
+AStatsManager_PullAtomCallbackReturn SubsystemSleepStatePuller::Pull(int32_t atomTag,
+                                                                     AStatsEventList* data) {
+    std::lock_guard<std::mutex> lock(gPowerHalMutex);
+
+    if(!gPuller) {
+        gPuller = getPullerLocked();
+    }
+
+    if(gPuller) {
+        return gPuller(atomTag, data);
+    }
+
+    ALOGE("Unable to load Power Hal or power.stats HAL");
+    return AStatsManager_PULL_SKIP;
+}
+
+} // namespace stats
+} // namespace server
+}  // namespace android
diff --git a/cmds/statsd/src/external/SubsystemSleepStatePuller.h b/services/core/jni/stats/SubsystemSleepStatePuller.h
similarity index 71%
rename from cmds/statsd/src/external/SubsystemSleepStatePuller.h
rename to services/core/jni/stats/SubsystemSleepStatePuller.h
index 87f5f02..da9679c 100644
--- a/cmds/statsd/src/external/SubsystemSleepStatePuller.h
+++ b/services/core/jni/stats/SubsystemSleepStatePuller.h
@@ -16,24 +16,22 @@
 
 #pragma once
 
-#include <utils/String16.h>
-#include "StatsPuller.h"
+#include <stats_event.h>
+#include <stats_pull_atom_callback.h>
 
 namespace android {
-namespace os {
-namespace statsd {
+namespace server {
+namespace stats {
 
 /**
  * Reads hal for sleep states
  */
-class SubsystemSleepStatePuller : public StatsPuller {
+class SubsystemSleepStatePuller {
 public:
     SubsystemSleepStatePuller();
-
-private:
-    bool PullInternal(vector<std::shared_ptr<LogEvent>>* data) override;
+    AStatsManager_PullAtomCallbackReturn Pull(int32_t atomTag, AStatsEventList* data);
 };
 
-}  // namespace statsd
-}  // namespace os
-}  // namespace android
+} // namespace stats
+} // namespace server
+} // namespace android
diff --git a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
index d7ea2f5..aa5dafc 100644
--- a/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
+++ b/services/devicepolicy/java/com/android/server/devicepolicy/DevicePolicyManagerService.java
@@ -57,6 +57,7 @@
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_HOME;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_NOTIFICATIONS;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_OVERVIEW;
+import static android.app.admin.DevicePolicyManager.NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
 import static android.app.admin.DevicePolicyManager.PASSWORD_COMPLEXITY_NONE;
 import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHABETIC;
 import static android.app.admin.DevicePolicyManager.PASSWORD_QUALITY_ALPHANUMERIC;
@@ -81,6 +82,8 @@
 import static android.app.admin.DevicePolicyManager.WIPE_EXTERNAL_STORAGE;
 import static android.app.admin.DevicePolicyManager.WIPE_RESET_PROTECTION_DATA;
 import static android.app.admin.DevicePolicyManager.WIPE_SILENTLY;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_AWARE;
+import static android.content.pm.PackageManager.MATCH_DIRECT_BOOT_UNAWARE;
 import static android.content.pm.PackageManager.MATCH_UNINSTALLED_PACKAGES;
 import static android.provider.Settings.Global.PRIVATE_DNS_MODE;
 import static android.provider.Settings.Global.PRIVATE_DNS_SPECIFIER;
@@ -92,6 +95,7 @@
 import static com.android.internal.logging.nano.MetricsProto.MetricsEvent.PROVISIONING_ENTRY_POINT_ADB;
 import static com.android.internal.widget.LockPatternUtils.CREDENTIAL_TYPE_NONE;
 import static com.android.internal.widget.LockPatternUtils.StrongAuthTracker.STRONG_AUTH_REQUIRED_AFTER_DPM_LOCK_NOW;
+import static com.android.server.am.ActivityManagerService.STOCK_PM_FLAGS;
 import static com.android.server.devicepolicy.TransferOwnershipMetadataManager.ADMIN_TYPE_DEVICE_OWNER;
 import static com.android.server.devicepolicy.TransferOwnershipMetadataManager.ADMIN_TYPE_PROFILE_OWNER;
 import static com.android.server.pm.PackageManagerService.PLATFORM_PACKAGE_NAME;
@@ -162,6 +166,7 @@
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.CrossProfileApps;
+import android.content.pm.CrossProfileAppsInternal;
 import android.content.pm.IPackageDataObserver;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
@@ -174,6 +179,7 @@
 import android.content.pm.ServiceInfo;
 import android.content.pm.StringParceledListSlice;
 import android.content.pm.UserInfo;
+import android.content.pm.parsing.AndroidPackage;
 import android.content.res.Resources;
 import android.database.ContentObserver;
 import android.database.Cursor;
@@ -408,6 +414,9 @@
     private static final String ATTR_APPLICATION_RESTRICTIONS_MANAGER
             = "application-restrictions-manager";
 
+    private static final String CALLED_FROM_PARENT = "calledFromParent";
+    private static final String NOT_CALLED_FROM_PARENT = "notCalledFromParent";
+
     // Comprehensive list of delegations.
     private static final String DELEGATIONS[] = {
         DELEGATION_CERT_INSTALL,
@@ -458,8 +467,6 @@
     // A collection of user restrictions that are deprecated and should simply be ignored.
     private static final Set<String> DEPRECATED_USER_RESTRICTIONS;
     private static final String AB_DEVICE_KEY = "ro.build.ab_update";
-    // Permissions related to location which must not be granted automatically
-    private static  final Set<String> LOCATION_PERMISSIONS;
 
     static {
         SECURE_SETTINGS_WHITELIST = new ArraySet<>();
@@ -492,6 +499,7 @@
 
         SYSTEM_SETTINGS_WHITELIST = new ArraySet<>();
         SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS);
+        SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS_FLOAT);
         SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_BRIGHTNESS_MODE);
         SYSTEM_SETTINGS_WHITELIST.add(Settings.System.SCREEN_OFF_TIMEOUT);
 
@@ -504,11 +512,6 @@
         DEPRECATED_USER_RESTRICTIONS = Sets.newHashSet(
                 UserManager.DISALLOW_ADD_MANAGED_PROFILE,
                 UserManager.DISALLOW_REMOVE_MANAGED_PROFILE);
-
-        LOCATION_PERMISSIONS = Sets.newHashSet(
-                permission.ACCESS_FINE_LOCATION,
-                permission.ACCESS_BACKGROUND_LOCATION,
-                permission.ACCESS_COARSE_LOCATION);
     }
 
     /**
@@ -520,7 +523,8 @@
 
     /** Keyguard features that are allowed to be set on a managed profile */
     private static final int PROFILE_KEYGUARD_FEATURES =
-            PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER | PROFILE_KEYGUARD_FEATURES_PROFILE_ONLY;
+            NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER
+                    | PROFILE_KEYGUARD_FEATURES_PROFILE_ONLY;
 
     private static final int DEVICE_ADMIN_DEACTIVATE_TIMEOUT = 10000;
 
@@ -560,6 +564,16 @@
     @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
     private static final long ADMIN_APP_PASSWORD_COMPLEXITY = 123562444L;
 
+    /**
+     * Admin apps targeting Android R+ may not use
+     * {@link android.app.admin.DevicePolicyManager#setSecureSetting} to change the deprecated
+     * {@link android.provider.Settings.Secure#LOCATION_MODE} setting. Instead they should use
+     * {@link android.app.admin.DevicePolicyManager#setLocationEnabled}.
+     */
+    @ChangeId
+    @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
+    private static final long USE_SET_LOCATION_ENABLED = 117835097L;
+
     final Context mContext;
     final Injector mInjector;
     final IPackageManager mIPackageManager;
@@ -2530,7 +2544,7 @@
      * corporate owned device.
      */
     @GuardedBy("getLockObject()")
-    private void maybeMigrateToProfileOnOrganizationOwnedDeviceLocked() {
+    private void migrateToProfileOnOrganizationOwnedDeviceIfCompLocked() {
         logIfVerbose("Checking whether we need to migrate COMP ");
         final int doUserId = mOwners.getDeviceOwnerUserId();
         if (doUserId == UserHandle.USER_NULL) {
@@ -2593,6 +2607,11 @@
 
         // Note: KeyChain keys are not removed and will remain accessible for the apps that have
         // been given grants to use them.
+
+        DevicePolicyEventLogger
+                .createEvent(DevicePolicyEnums.COMP_TO_ORG_OWNED_PO_MIGRATED)
+                .setAdmin(poAdminComponent)
+                .write();
     }
 
     private void moveDoPoliciesToProfileParentAdmin(ActiveAdmin doAdmin, ActiveAdmin parentAdmin) {
@@ -3853,7 +3872,7 @@
             case SystemService.PHASE_ACTIVITY_MANAGER_READY:
                 maybeStartSecurityLogMonitorOnActivityManagerReady();
                 synchronized (getLockObject()) {
-                    maybeMigrateToProfileOnOrganizationOwnedDeviceLocked();
+                    migrateToProfileOnOrganizationOwnedDeviceIfCompLocked();
                 }
                 final int userId = getManagedUserId(UserHandle.USER_SYSTEM);
                 if (userId >= 0) {
@@ -3964,7 +3983,7 @@
     @Override
     void handleStartUser(int userId) {
         updateScreenCaptureDisabled(userId,
-                getScreenCaptureDisabled(null, userId));
+                getScreenCaptureDisabled(null, userId, false));
         pushUserRestrictions(userId);
         // When system user is started (device boot), load cache for all users.
         // This is to mitigate the potential race between loading the cache and keyguard
@@ -4467,7 +4486,7 @@
                 .createEvent(DevicePolicyEnums.SET_PASSWORD_QUALITY)
                 .setAdmin(who)
                 .setInt(quality)
-                .setBoolean(parent)
+                .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
     }
 
@@ -4680,12 +4699,15 @@
 
     private void ensureMinimumQuality(
             int userId, ActiveAdmin admin, int minimumQuality, String operation) {
-        if (admin.mPasswordPolicy.quality < minimumQuality
-                && passwordQualityInvocationOrderCheckEnabled(admin.info.getPackageName(),
-                userId)) {
-            throw new IllegalStateException(String.format(
-                    "password quality should be at least %d for %s", minimumQuality, operation));
-        }
+        mInjector.binderWithCleanCallingIdentity(() -> {
+            if (admin.mPasswordPolicy.quality < minimumQuality
+                    && passwordQualityInvocationOrderCheckEnabled(admin.info.getPackageName(),
+                    userId)) {
+                throw new IllegalStateException(String.format(
+                        "password quality should be at least %d for %s",
+                        minimumQuality, operation));
+            }
+        });
     }
 
     @Override
@@ -5252,8 +5274,9 @@
     public int getPasswordComplexity(boolean parent) {
         DevicePolicyEventLogger
                 .createEvent(DevicePolicyEnums.GET_USER_PASSWORD_COMPLEXITY_LEVEL)
-                .setStrings(mInjector.getPackageManager()
-                        .getPackagesForUid(mInjector.binderGetCallingUid()))
+                .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT,
+                        mInjector.getPackageManager().getPackagesForUid(
+                                mInjector.binderGetCallingUid()))
                 .write();
         final int callingUserId = mInjector.userHandleGetCallingUserId();
 
@@ -5343,7 +5366,7 @@
         synchronized (getLockObject()) {
             ActiveAdmin admin = getAdminWithMinimumFailedPasswordsForWipeLocked(
                     userHandle, parent);
-            return admin != null ? admin.getUserHandle().getIdentifier() : UserHandle.USER_NULL;
+            return admin != null ? getUserIdToWipeForFailedPasswords(admin) : UserHandle.USER_NULL;
         }
     }
 
@@ -5354,7 +5377,8 @@
      *   <li>this user and all profiles that don't have their own challenge otherwise.
      * </ul>
      * <p>If the policy for the primary and any other profile are equal, it returns the admin for
-     * the primary profile.
+     * the primary profile. Policy of a PO on an organization-owned device applies to the primary
+     * profile.
      * Returns {@code null} if no participating admin has that policy set.
      */
     private ActiveAdmin getAdminWithMinimumFailedPasswordsForWipeLocked(
@@ -5373,7 +5397,7 @@
             }
 
             // We always favor the primary profile if several profiles have the same value set.
-            int userId = admin.getUserHandle().getIdentifier();
+            final int userId = getUserIdToWipeForFailedPasswords(admin);
             if (count == 0 ||
                     count > admin.maximumFailedPasswordsForWipe ||
                     (count == admin.maximumFailedPasswordsForWipe &&
@@ -6926,6 +6950,7 @@
                 .createEvent(DevicePolicyEnums.WIPE_DATA_WITH_REASON)
                 .setAdmin(admin.info.getComponent())
                 .setInt(flags)
+                .setStrings(calledOnParentInstance ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
         String internalReason = String.format(
                 "DevicePolicyManager.wipeDataWithReason() from %s, organization-owned? %s",
@@ -7170,7 +7195,7 @@
         }
 
         if (wipeData && strictestAdmin != null) {
-            final int userId = strictestAdmin.getUserHandle().getIdentifier();
+            final int userId = getUserIdToWipeForFailedPasswords(strictestAdmin);
             Slog.i(LOG_TAG, "Max failed password attempts policy reached for admin: "
                     + strictestAdmin.info.getComponent().flattenToShortString()
                     + ". Calling wipeData for user " + userId);
@@ -7201,6 +7226,17 @@
         }
     }
 
+    /**
+     * Returns which user should be wiped if this admin's maximum filed password attempts policy is
+     * violated.
+     */
+    private int getUserIdToWipeForFailedPasswords(ActiveAdmin admin) {
+        final int userId = admin.getUserHandle().getIdentifier();
+        final ComponentName component = admin.info.getComponent();
+        return isProfileOwnerOfOrganizationOwnedDevice(component, userId)
+                ? getProfileParentId(userId) : userId;
+    }
+
     @Override
     public void reportSuccessfulPasswordAttempt(int userHandle) {
         enforceFullCrossUsersPermission(userHandle);
@@ -7558,7 +7594,7 @@
      * Set whether the screen capture is disabled for the user managed by the specified admin.
      */
     @Override
-    public void setScreenCaptureDisabled(ComponentName who, boolean disabled) {
+    public void setScreenCaptureDisabled(ComponentName who, boolean disabled, boolean parent) {
         if (!mHasFeature) {
             return;
         }
@@ -7566,11 +7602,15 @@
         final int userHandle = UserHandle.getCallingUserId();
         synchronized (getLockObject()) {
             ActiveAdmin ap = getActiveAdminForCallerLocked(who,
-                    DeviceAdminInfo.USES_POLICY_PROFILE_OWNER);
+                    DeviceAdminInfo.USES_POLICY_PROFILE_OWNER, parent);
+            if (parent) {
+                enforceProfileOwnerOfOrganizationOwnedDevice(ap);
+            }
             if (ap.disableScreenCapture != disabled) {
                 ap.disableScreenCapture = disabled;
                 saveSettingsLocked(userHandle);
-                updateScreenCaptureDisabled(userHandle, disabled);
+                final int affectedUserId = parent ? getProfileParentId(userHandle) : userHandle;
+                updateScreenCaptureDisabled(affectedUserId, disabled);
             }
         }
         DevicePolicyEventLogger
@@ -7585,20 +7625,25 @@
      * active admin (if given admin is null).
      */
     @Override
-    public boolean getScreenCaptureDisabled(ComponentName who, int userHandle) {
+    public boolean getScreenCaptureDisabled(ComponentName who, int userHandle, boolean parent) {
         if (!mHasFeature) {
             return false;
         }
         synchronized (getLockObject()) {
+            if (parent) {
+                final ActiveAdmin ap = getActiveAdminForCallerLocked(who,
+                        DeviceAdminInfo.USES_POLICY_ORGANIZATION_OWNED_PROFILE_OWNER, parent);
+                enforceProfileOwnerOfOrganizationOwnedDevice(ap);
+            }
             if (who != null) {
-                ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle);
-                return (admin != null) ? admin.disableScreenCapture : false;
+                ActiveAdmin admin = getActiveAdminUncheckedLocked(who, userHandle, parent);
+                return (admin != null) && admin.disableScreenCapture;
             }
 
-            DevicePolicyData policy = getUserData(userHandle);
-            final int N = policy.mAdminList.size();
-            for (int i = 0; i < N; i++) {
-                ActiveAdmin admin = policy.mAdminList.get(i);
+            boolean includeParent = isOrganizationOwnedDeviceWithManagedProfile()
+                    && !isManagedProfile(userHandle);
+            List<ActiveAdmin> admins = getActiveAdminsForAffectedUser(userHandle, includeParent);
+            for (ActiveAdmin admin: admins) {
                 if (admin.disableScreenCapture) {
                     return true;
                 }
@@ -7609,14 +7654,11 @@
 
     private void updateScreenCaptureDisabled(int userHandle, boolean disabled) {
         mPolicyCache.setScreenCaptureDisabled(userHandle, disabled);
-        mHandler.post(new Runnable() {
-            @Override
-            public void run() {
-                try {
-                    mInjector.getIWindowManager().refreshScreenCaptureDisabled(userHandle);
-                } catch (RemoteException e) {
-                    Log.w(LOG_TAG, "Unable to notify WindowManager.", e);
-                }
+        mHandler.post(() -> {
+            try {
+                mInjector.getIWindowManager().refreshScreenCaptureDisabled(userHandle);
+            } catch (RemoteException e) {
+                Log.w(LOG_TAG, "Unable to notify WindowManager.", e);
             }
         });
     }
@@ -8074,6 +8116,7 @@
                 .createEvent(DevicePolicyEnums.SET_CAMERA_DISABLED)
                 .setAdmin(who)
                 .setBoolean(disabled)
+                .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
     }
 
@@ -8127,16 +8170,20 @@
         }
         Objects.requireNonNull(who, "ComponentName is null");
         final int userHandle = mInjector.userHandleGetCallingUserId();
-        if (isManagedProfile(userHandle)) {
-            if (parent) {
-                which = which & PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
-            } else {
-                which = which & PROFILE_KEYGUARD_FEATURES;
-            }
-        }
         synchronized (getLockObject()) {
             ActiveAdmin ap = getActiveAdminForCallerLocked(
                     who, DeviceAdminInfo.USES_POLICY_DISABLE_KEYGUARD_FEATURES, parent);
+            if (isManagedProfile(userHandle)) {
+                if (parent) {
+                    if (isProfileOwnerOfOrganizationOwnedDevice(ap)) {
+                        which = which & PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
+                    } else {
+                        which = which & NON_ORG_OWNED_PROFILE_KEYGUARD_FEATURES_AFFECT_OWNER;
+                    }
+                } else {
+                    which = which & PROFILE_KEYGUARD_FEATURES;
+                }
+            }
             if (ap.disabledKeyguardFeatures != which) {
                 ap.disabledKeyguardFeatures = which;
                 saveSettingsLocked(userHandle);
@@ -8151,7 +8198,7 @@
                 .createEvent(DevicePolicyEnums.SET_KEYGUARD_DISABLED_FEATURES)
                 .setAdmin(who)
                 .setInt(which)
-                .setBoolean(parent)
+                .setStrings(parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
     }
 
@@ -8505,6 +8552,9 @@
     }
 
     private void clearOverrideApnUnchecked() {
+        if (!mHasTelephonyFeature) {
+            return;
+        }
         // Disable Override APNs and remove them from database.
         setOverrideApnsEnabledUnchecked(false);
         final List<ApnSetting> apns = getOverrideApnsUnchecked();
@@ -8865,9 +8915,12 @@
                 UserInfo parent = mUserManager.getProfileParent(userId);
                 Intent intent = new Intent(Intent.ACTION_MANAGED_PROFILE_ADDED);
                 intent.putExtra(Intent.EXTRA_USER, new UserHandle(userId));
+                UserHandle parentHandle = new UserHandle(parent.id);
+                mLocalService.broadcastIntentToCrossProfileManifestReceiversAsUser(intent,
+                        parentHandle, /* requiresPermission= */ true);
                 intent.addFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY |
                         Intent.FLAG_RECEIVER_FOREGROUND);
-                mContext.sendBroadcastAsUser(intent, new UserHandle(parent.id));
+                mContext.sendBroadcastAsUser(intent, parentHandle);
             });
         }
     }
@@ -9553,9 +9606,19 @@
     }
 
     @Override
-    public void setDefaultSmsApplication(ComponentName admin, String packageName) {
+    public void setDefaultSmsApplication(ComponentName admin, String packageName, boolean parent) {
         Objects.requireNonNull(admin, "ComponentName is null");
-        enforceDeviceOwner(admin);
+
+        if (parent) {
+            ActiveAdmin ap = getActiveAdminForCallerLocked(admin,
+                    DeviceAdminInfo.USES_POLICY_ORGANIZATION_OWNED_PROFILE_OWNER, parent);
+            enforceProfileOwnerOfOrganizationOwnedDevice(ap);
+            mInjector.binderWithCleanCallingIdentity(() -> enforcePackageIsSystemPackage(
+                    packageName, getProfileParentId(mInjector.userHandleGetCallingUserId())));
+        } else {
+            enforceDeviceOwner(admin);
+        }
+
         mInjector.binderWithCleanCallingIdentity(() ->
                 SmsApplication.setDefaultApplication(packageName, mContext));
     }
@@ -10645,7 +10708,7 @@
         DevicePolicyEventLogger
                 .createEvent(eventId)
                 .setAdmin(who)
-                .setStrings(key)
+                .setStrings(key, parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
         if (SecurityLog.isLoggingEnabled()) {
             final int eventTag = enabledFromThisOwner
@@ -10778,7 +10841,7 @@
                 // API cannot be used to leak if certain non-system package exists in the person
                 // profile.
                 mInjector.binderWithCleanCallingIdentity(() ->
-                        enforcePackageIsSystemPackage(packageName, hidden, userId));
+                        enforcePackageIsSystemPackage(packageName, userId));
             }
 
             result = mInjector.binderWithCleanCallingIdentity(() -> mIPackageManager
@@ -10789,8 +10852,8 @@
                 .createEvent(DevicePolicyEnums.SET_APPLICATION_HIDDEN)
                 .setAdmin(callerPackage)
                 .setBoolean(isDelegate)
-                .setBoolean(parent)
-                .setStrings(packageName, hidden ? "hidden" : "not_hidden")
+                .setStrings(packageName, hidden ? "hidden" : "not_hidden",
+                        parent ? CALLED_FROM_PARENT : NOT_CALLED_FROM_PARENT)
                 .write();
         return result;
     }
@@ -10811,7 +10874,7 @@
                         DeviceAdminInfo.USES_POLICY_ORGANIZATION_OWNED_PROFILE_OWNER, parent);
                 // Ensure the package provided is a system package.
                 mInjector.binderWithCleanCallingIdentity(() ->
-                        enforcePackageIsSystemPackage(packageName, false, userId));
+                        enforcePackageIsSystemPackage(packageName, userId));
             }
 
             return mInjector.binderWithCleanCallingIdentity(
@@ -10819,16 +10882,9 @@
         }
     }
 
-    private void enforcePackageIsSystemPackage(String packageName, boolean hidden, int userId)
+    private void enforcePackageIsSystemPackage(String packageName, int userId)
             throws RemoteException {
-        int flags = PackageManager.MATCH_SYSTEM_ONLY;
-        // If the package is currently hidden then it is considered uninstalled and
-        // the MATCH_UNINSTALLED_PACKAGES flag has to be added.
-        if (!hidden) {
-            flags |= PackageManager.MATCH_UNINSTALLED_PACKAGES;
-        }
-        PackageInfo packageInfo = mIPackageManager.getPackageInfo(packageName, flags, userId);
-        if (packageInfo == null || !packageInfo.applicationInfo.isSystemApp()) {
+        if (!isSystemApp(mIPackageManager, packageName, userId)) {
             throw new IllegalArgumentException(
                     "The provided package is not a system package");
         }
@@ -11508,7 +11564,7 @@
     }
 
     @Override
-    public void setLockdownAdminConfiguredNetworks(ComponentName who, boolean lockdown) {
+    public void setConfiguredNetworksLockdownState(ComponentName who, boolean lockdown) {
         if (!mHasFeature) {
             return;
         }
@@ -11527,7 +11583,7 @@
     }
 
     @Override
-    public boolean isLockdownAdminConfiguredNetworks(ComponentName who) {
+    public boolean hasLockdownAdminConfiguredNetworks(ComponentName who) {
         if (!mHasFeature) {
             return false;
         }
@@ -11540,13 +11596,22 @@
 
     @Override
     public void setLocationEnabled(ComponentName who, boolean locationEnabled) {
-        Objects.requireNonNull(who, "ComponentName is null");
-        enforceDeviceOwner(who);
+        enforceDeviceOwner(Objects.requireNonNull(who));
 
-        UserHandle userHandle = mInjector.binderGetCallingUserHandle();
-        mInjector.binderWithCleanCallingIdentity(
-                () -> mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled,
-                        userHandle));
+        UserHandle user = mInjector.binderGetCallingUserHandle();
+
+        mInjector.binderWithCleanCallingIdentity(() -> {
+            boolean wasLocationEnabled = mInjector.getLocationManager().isLocationEnabledForUser(
+                    user);
+            mInjector.getLocationManager().setLocationEnabledForUser(locationEnabled, user);
+
+            // make a best effort to only show the notification if the admin is actually changing
+            // something. this is subject to race conditions with settings changes, but those are
+            // unlikely to realistically interfere
+            if (wasLocationEnabled != locationEnabled) {
+                showLocationSettingsChangedNotification(user);
+            }
+        });
 
         DevicePolicyEventLogger
                 .createEvent(DevicePolicyEnums.SET_SECURE_SETTING)
@@ -11557,6 +11622,25 @@
                 .write();
     }
 
+    private void showLocationSettingsChangedNotification(UserHandle user) {
+        PendingIntent locationSettingsIntent = mInjector.pendingIntentGetActivityAsUser(mContext, 0,
+                new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS)
+                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK), PendingIntent.FLAG_UPDATE_CURRENT,
+                null, user);
+        Notification notification = new Notification.Builder(mContext,
+                SystemNotificationChannels.DEVICE_ADMIN)
+                .setSmallIcon(R.drawable.ic_info_outline)
+                .setContentTitle(mContext.getString(R.string.location_changed_notification_title))
+                .setContentText(mContext.getString(R.string.location_changed_notification_text))
+                .setColor(mContext.getColor(R.color.system_notification_accent_color))
+                .setShowWhen(true)
+                .setContentIntent(locationSettingsIntent)
+                .setAutoCancel(true)
+                .build();
+        mInjector.getNotificationManager().notify(SystemMessage.NOTE_LOCATION_CHANGED,
+                notification);
+    }
+
     @Override
     public void requestSetLocationProviderAllowed(ComponentName who, String provider,
             boolean providerAllowed) {
@@ -11580,6 +11664,11 @@
                 millis, "DevicePolicyManagerService: setTime");
         mInjector.binderWithCleanCallingIdentity(
                 () -> mInjector.getTimeDetector().suggestManualTime(manualTimeSuggestion));
+
+        DevicePolicyEventLogger
+                .createEvent(DevicePolicyEnums.SET_TIME)
+                .setAdmin(who)
+                .write();
         return true;
     }
 
@@ -11596,6 +11685,11 @@
                         timeZone, "DevicePolicyManagerService: setTimeZone");
         mInjector.binderWithCleanCallingIdentity(() ->
                 mInjector.getTimeZoneDetector().suggestManualTimeZone(manualTimeZoneSuggestion));
+
+        DevicePolicyEventLogger
+                .createEvent(DevicePolicyEnums.SET_TIME_ZONE)
+                .setAdmin(who)
+                .write();
         return true;
     }
 
@@ -11617,6 +11711,12 @@
                 throw new SecurityException(String.format(
                         "Permission denial: Profile owners cannot update %1$s", setting));
             }
+            if (setting.equals(Settings.Secure.LOCATION_MODE)
+                    && isSetSecureSettingLocationModeCheckEnabled(who.getPackageName(),
+                    callingUserId)) {
+                throw new UnsupportedOperationException(Settings.Secure.LOCATION_MODE + " is "
+                        + "deprecated. Please use setLocationEnabled() instead.");
+            }
             if (setting.equals(Settings.Secure.INSTALL_NON_MARKET_APPS)) {
                 if (getTargetSdk(who.getPackageName(), callingUserId) >= Build.VERSION_CODES.O) {
                     throw new UnsupportedOperationException(Settings.Secure.INSTALL_NON_MARKET_APPS
@@ -11661,6 +11761,9 @@
                     saveSettingsLocked(callingUserId);
                 }
                 mInjector.settingsSecurePutStringForUser(setting, value, callingUserId);
+                if (setting.equals(Settings.Secure.LOCATION_MODE)) {
+                    showLocationSettingsChangedNotification(UserHandle.of(callingUserId));
+                }
             });
         }
         DevicePolicyEventLogger
@@ -11670,6 +11773,16 @@
                 .write();
     }
 
+    private boolean isSetSecureSettingLocationModeCheckEnabled(String packageName, int userId) {
+        try {
+            return mIPlatformCompat.isChangeEnabledByPackageName(USE_SET_LOCATION_ENABLED,
+                    packageName, userId);
+        } catch (RemoteException e) {
+            Log.e(LOG_TAG, "Failed to get a response from PLATFORM_COMPAT_SERVICE", e);
+            return getTargetSdk(packageName, userId) > Build.VERSION_CODES.Q;
+        }
+    }
+
     @Override
     public void setMasterVolumeMuted(ComponentName who, boolean on) {
         Objects.requireNonNull(who, "ComponentName is null");
@@ -12169,6 +12282,105 @@
             return DevicePolicyManagerService.this.getAllCrossProfilePackages();
         }
 
+        /**
+         * Sends the {@code intent} to the packages with cross profile capabilities.
+         *
+         * <p>This means the application must have the {@code crossProfile} property and
+         * and at least one of the following permissions:
+         *
+         * <ul>
+         *     <li>{@link android.Manifest.permission.INTERACT_ACROSS_PROFILES}
+         *     <li>{@link android.Manifest.permission.INTERACT_ACROSS_USERS}
+         *     <li>{@link android.Manifest.permission.INTERACT_ACROSS_USERS_FULL} permission or the
+         *     {@link AppOpsManager.OP_INTERACT_ACROSS_PROFILES} app operation authorization.
+         * </ul>
+         *
+         * <p>Note: The intent itself is not modified but copied before use.
+         *
+         * @param intent Template for the intent sent to the packages.
+         * @param parentHandle Handle of the user that will receive the intents.
+         * @param requiresPermission If false, all packages with the {@code crossProfile} property
+         *                           will receive the intent.
+         */
+        @Override
+        public void broadcastIntentToCrossProfileManifestReceiversAsUser(Intent intent,
+                UserHandle parentHandle, boolean requiresPermission) {
+            Objects.requireNonNull(intent);
+            Objects.requireNonNull(parentHandle);
+            final int userId = parentHandle.getIdentifier();
+            Slog.i(LOG_TAG,
+                    String.format("Sending %s broadcast to manifest receivers.",
+                            intent.getAction()));
+            try {
+                final List<ResolveInfo> receivers = mIPackageManager.queryIntentReceivers(
+                        intent, /* resolvedType= */ null,
+                        STOCK_PM_FLAGS, parentHandle.getIdentifier()).getList();
+                for (ResolveInfo receiver : receivers) {
+                    final String packageName = receiver.getComponentInfo().packageName;
+                    if (checkCrossProfilePackagePermissions(packageName, userId,
+                            requiresPermission)) {
+                        Slog.i(LOG_TAG,
+                                String.format("Sending %s broadcast to %s.", intent.getAction(),
+                                        packageName));
+                        final Intent packageIntent = new Intent(intent)
+                                .setComponent(receiver.getComponentInfo().getComponentName())
+                                .addFlags(Intent.FLAG_RECEIVER_INCLUDE_BACKGROUND);
+                        mContext.sendBroadcastAsUser(packageIntent, parentHandle);
+                    }
+                }
+            } catch (RemoteException ex) {
+                Slog.w(LOG_TAG,
+                        String.format("Cannot get list of broadcast receivers for %s because: %s.",
+                                intent.getAction(), ex));
+            }
+        }
+
+        /**
+         * Checks whether the package {@code packageName} has the required permissions to receive
+         * cross-profile broadcasts on behalf of the user {@code userId}.
+         */
+        private boolean checkCrossProfilePackagePermissions(String packageName,
+                @UserIdInt int userId, boolean requiresPermission) {
+            final PackageManagerInternal pmInternal = LocalServices.getService(
+                    PackageManagerInternal.class);
+            final AndroidPackage androidPackage = pmInternal.getPackage(packageName);
+            if (androidPackage == null || !androidPackage.isCrossProfile()) {
+                return false;
+            }
+            if (!requiresPermission) {
+                return true;
+            }
+            if (!isPackageEnabled(packageName, userId)) {
+                return false;
+            }
+            try {
+                final CrossProfileAppsInternal crossProfileAppsService = LocalServices.getService(
+                        CrossProfileAppsInternal.class);
+                return crossProfileAppsService.verifyPackageHasInteractAcrossProfilePermission(
+                        packageName, userId);
+            } catch (NameNotFoundException ex) {
+                Slog.w(LOG_TAG,
+                        String.format("Cannot find the package %s to check for permissions.",
+                                packageName));
+                return false;
+            }
+        }
+
+        private boolean isPackageEnabled(String packageName, @UserIdInt int userId) {
+            final int callingUid = Binder.getCallingUid();
+            final long ident = Binder.clearCallingIdentity();
+            try {
+                final PackageInfo info = mInjector.getPackageManagerInternal()
+                        .getPackageInfo(
+                                packageName,
+                                MATCH_DIRECT_BOOT_AWARE | MATCH_DIRECT_BOOT_UNAWARE,
+                                callingUid,
+                                userId);
+                return info != null && info.applicationInfo.enabled;
+            } finally {
+                Binder.restoreCallingIdentity(ident);
+            }
+        }
     }
 
     private Intent createShowAdminSupportIntent(ComponentName admin, int userId) {
@@ -12513,14 +12725,6 @@
                             true);
                 }
 
-                // Prevent granting location-related permissions without user consent.
-                if (LOCATION_PERMISSIONS.contains(permission)
-                        && grantState == DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
-                        && !isUnattendedManagedKioskUnchecked()) {
-                    callback.sendResult(null);
-                    return;
-                }
-
                 if (grantState == DevicePolicyManager.PERMISSION_GRANT_STATE_GRANTED
                         || grantState == DevicePolicyManager.PERMISSION_GRANT_STATE_DENIED
                         || grantState == DevicePolicyManager.PERMISSION_GRANT_STATE_DEFAULT) {
@@ -15074,9 +15278,16 @@
         return packages;
     }
 
-    private List<String> getDefaultCrossProfilePackages() {
-        return Arrays.asList(mContext.getResources()
+    @Override
+    public List<String> getDefaultCrossProfilePackages() {
+        Set<String> crossProfilePackages = new HashSet<>();
+
+        Collections.addAll(crossProfilePackages, mContext.getResources()
                 .getStringArray(R.array.cross_profile_apps));
+        Collections.addAll(crossProfilePackages, mContext.getResources()
+                .getStringArray(R.array.vendor_cross_profile_apps));
+
+        return new ArrayList<>(crossProfilePackages);
     }
 
     private List<ActiveAdmin> getProfileOwnerAdminsForCurrentProfileGroup() {
@@ -15351,6 +15562,12 @@
 
         mInjector.binderWithCleanCallingIdentity(
                 () -> applyPersonalAppsSuspension(callingUserId, suspended));
+
+        DevicePolicyEventLogger
+                .createEvent(DevicePolicyEnums.SET_PERSONAL_APPS_SUSPENDED)
+                .setAdmin(who)
+                .setBoolean(suspended)
+                .write();
     }
 
     /**
@@ -15522,9 +15739,16 @@
 
         mInjector.binderWithCleanCallingIdentity(
                 () -> updatePersonalAppSuspension(userId, mUserManager.isUserUnlocked()));
+
+        DevicePolicyEventLogger
+                .createEvent(DevicePolicyEnums.SET_MANAGED_PROFILE_MAXIMUM_TIME_OFF)
+                .setAdmin(who)
+                .setTimePeriod(timeoutMs)
+                .write();
     }
 
-    void enforceHandlesCheckPolicyComplianceIntent(@UserIdInt int userId, String packageName) {
+    private void enforceHandlesCheckPolicyComplianceIntent(
+            @UserIdInt int userId, String packageName) {
         mInjector.binderWithCleanCallingIdentity(() -> {
             final Intent intent = new Intent(DevicePolicyManager.ACTION_CHECK_POLICY_COMPLIANCE);
             intent.setPackage(packageName);
diff --git a/services/incremental/Android.bp b/services/incremental/Android.bp
index 323e7f1..b13d330 100644
--- a/services/incremental/Android.bp
+++ b/services/incremental/Android.bp
@@ -43,6 +43,7 @@
         "service.incremental.proto",
         "libutils",
         "libvold_binder",
+        "libc++fs",
     ],
     shared_libs: [
         "libandroidfw",
diff --git a/services/incremental/BinderIncrementalService.cpp b/services/incremental/BinderIncrementalService.cpp
index f1b637f..3fcb57a 100644
--- a/services/incremental/BinderIncrementalService.cpp
+++ b/services/incremental/BinderIncrementalService.cpp
@@ -16,7 +16,9 @@
 
 #include "BinderIncrementalService.h"
 
+#include <android-base/logging.h>
 #include <binder/IResultReceiver.h>
+#include <binder/PermissionCache.h>
 #include <incfs.h>
 
 #include "ServiceWrappers.h"
@@ -90,8 +92,13 @@
     return self.get();
 }
 
-status_t BinderIncrementalService::dump(int fd, const Vector<String16>& args) {
-    return OK;
+status_t BinderIncrementalService::dump(int fd, const Vector<String16>&) {
+    static const String16 kDump("android.permission.DUMP");
+    if (!PermissionCache::checkCallingPermission(kDump)) {
+        return PERMISSION_DENIED;
+    }
+    mImpl.onDump(fd);
+    return NO_ERROR;
 }
 
 void BinderIncrementalService::onSystemReady() {
@@ -110,11 +117,9 @@
 
 binder::Status BinderIncrementalService::createStorage(const std::string& path,
                                                        const DataLoaderParamsParcel& params,
+                                                       const ::android::sp<::android::content::pm::IDataLoaderStatusListener>& listener,
                                                        int32_t createMode, int32_t* _aidl_return) {
-    *_aidl_return =
-            mImpl.createStorage(path, const_cast<DataLoaderParamsParcel&&>(params),
-                                android::incremental::IncrementalService::CreateOptions(
-                                        createMode));
+    *_aidl_return = mImpl.createStorage(path, const_cast<DataLoaderParamsParcel&&>(params), listener, android::incremental::IncrementalService::CreateOptions(createMode));
     return ok();
 }
 
@@ -195,7 +200,7 @@
         return ok();
     }
 
-    *_aidl_return = mImpl.makeFile(storageId, path, 0555, fileId, nfp);
+    *_aidl_return = mImpl.makeFile(storageId, path, 0777, fileId, nfp);
     return ok();
 }
 binder::Status BinderIncrementalService::makeFileFromRange(int32_t storageId,
@@ -271,6 +276,13 @@
     return ok();
 }
 
+binder::Status BinderIncrementalService::configureNativeBinaries(
+        int32_t storageId, const std::string& apkFullPath, const std::string& libDirRelativePath,
+        const std::string& abi, bool* _aidl_return) {
+    *_aidl_return = mImpl.configureNativeBinaries(storageId, apkFullPath, libDirRelativePath, abi);
+    return ok();
+}
+
 } // namespace android::os::incremental
 
 jlong Incremental_IncrementalService_Start() {
@@ -281,3 +293,10 @@
         ((android::os::incremental::BinderIncrementalService*)self)->onSystemReady();
     }
 }
+void Incremental_IncrementalService_OnDump(jlong self, jint fd) {
+    if (self) {
+        ((android::os::incremental::BinderIncrementalService*)self)->dump(fd, {});
+    } else {
+        dprintf(fd, "BinderIncrementalService is stopped.");
+    }
+}
diff --git a/services/incremental/BinderIncrementalService.h b/services/incremental/BinderIncrementalService.h
index a94a75a..4075da6 100644
--- a/services/incremental/BinderIncrementalService.h
+++ b/services/incremental/BinderIncrementalService.h
@@ -20,27 +20,25 @@
 #include <binder/IServiceManager.h>
 
 #include "IncrementalService.h"
-#include "android/os/incremental/BnIncrementalManagerNative.h"
+#include "android/os/incremental/BnIncrementalService.h"
 #include "incremental_service.h"
 
 namespace android::os::incremental {
 
-class BinderIncrementalService : public BnIncrementalManagerNative,
+class BinderIncrementalService : public BnIncrementalService,
                                  public BinderService<BinderIncrementalService> {
 public:
-    BinderIncrementalService(const sp<IServiceManager> &sm);
+    BinderIncrementalService(const sp<IServiceManager>& sm);
 
-    static BinderIncrementalService *start();
-    static const char16_t *getServiceName() { return u"incremental_service"; }
-    status_t dump(int fd, const Vector<String16> &args) final;
+    static BinderIncrementalService* start();
+    static const char16_t* getServiceName() { return u"incremental_service"; }
+    status_t dump(int fd, const Vector<String16>& args) final;
 
     void onSystemReady();
     void onInvalidStorage(int mountId);
 
     binder::Status openStorage(const std::string& path, int32_t* _aidl_return) final;
-    binder::Status createStorage(const std::string& path,
-                                 const ::android::content::pm::DataLoaderParamsParcel& params,
-                                 int32_t createMode, int32_t* _aidl_return) final;
+    binder::Status createStorage(const ::std::string& path, const ::android::content::pm::DataLoaderParamsParcel& params, const ::android::sp<::android::content::pm::IDataLoaderStatusListener>& listener, int32_t createMode, int32_t* _aidl_return) final;
     binder::Status createLinkedStorage(const std::string& path, int32_t otherStorageId,
                                        int32_t createMode, int32_t* _aidl_return) final;
     binder::Status makeBindMount(int32_t storageId, const std::string& sourcePath,
@@ -70,6 +68,9 @@
                                    std::vector<uint8_t>* _aidl_return) final;
     binder::Status startLoading(int32_t storageId, bool* _aidl_return) final;
     binder::Status deleteStorage(int32_t storageId) final;
+    binder::Status configureNativeBinaries(int32_t storageId, const std::string& apkFullPath,
+                                           const std::string& libDirRelativePath,
+                                           const std::string& abi, bool* _aidl_return) final;
 
 private:
     android::incremental::IncrementalService mImpl;
diff --git a/services/incremental/IncrementalService.cpp b/services/incremental/IncrementalService.cpp
index 414c66c..980ae08 100644
--- a/services/incremental/IncrementalService.cpp
+++ b/services/incremental/IncrementalService.cpp
@@ -30,12 +30,12 @@
 #include <binder/BinderService.h>
 #include <binder/ParcelFileDescriptor.h>
 #include <binder/Status.h>
-
-#include <openssl/sha.h>
 #include <sys/stat.h>
 #include <uuid/uuid.h>
 #include <zlib.h>
 
+#include <ctime>
+#include <filesystem>
 #include <iterator>
 #include <span>
 #include <stack>
@@ -46,6 +46,7 @@
 
 using namespace std::literals;
 using namespace android::content::pm;
+namespace fs = std::filesystem;
 
 namespace android::incremental {
 
@@ -57,9 +58,13 @@
 struct Constants {
     static constexpr auto backing = "backing_store"sv;
     static constexpr auto mount = "mount"sv;
+    static constexpr auto mountKeyPrefix = "MT_"sv;
     static constexpr auto storagePrefix = "st"sv;
     static constexpr auto mountpointMdPrefix = ".mountpoint."sv;
     static constexpr auto infoMdName = ".info"sv;
+    static constexpr auto libDir = "lib"sv;
+    static constexpr auto libSuffix = ".so"sv;
+    static constexpr auto blockSize = 4096;
 };
 
 static const Constants& constants() {
@@ -102,7 +107,7 @@
     std::string res(path);
     std::replace(res.begin(), res.end(), '/', '_');
     std::replace(res.begin(), res.end(), '@', '_');
-    return res;
+    return std::string(constants().mountKeyPrefix) + res;
 }
 
 static std::pair<std::string, std::string> makeMountDir(std::string_view incrementalDir,
@@ -170,7 +175,7 @@
         base::StringAppendF(&name, "%.*s_%d_%d", int(constants().storagePrefix.size()),
                             constants().storagePrefix.data(), id, no);
         auto fullName = path::join(root, constants().mount, name);
-        if (auto err = incrementalService.mIncFs->makeDir(control, fullName); !err) {
+        if (auto err = incrementalService.mIncFs->makeDir(control, fullName, 0755); !err) {
             std::lock_guard l(lock);
             return storages.insert_or_assign(id, Storage{std::move(fullName)}).first;
         } else if (err != EEXIST) {
@@ -233,30 +238,79 @@
     if (!mIncrementalManager) {
         LOG(FATAL) << "IncrementalManager service is unavailable";
     }
-    // TODO(b/136132412): check that root dir should already exist
-    // TODO(b/136132412): enable mount existing dirs after SELinux rules are merged
-    // mountExistingImages();
+    mountExistingImages();
 }
 
 FileId IncrementalService::idFromMetadata(std::span<const uint8_t> metadata) {
-    incfs::FileId id = {};
-    if (size_t(metadata.size()) <= sizeof(id)) {
-        memcpy(&id, metadata.data(), metadata.size());
-    } else {
-        uint8_t buffer[SHA_DIGEST_LENGTH];
-        static_assert(sizeof(buffer) >= sizeof(id));
-
-        SHA_CTX ctx;
-        SHA1_Init(&ctx);
-        SHA1_Update(&ctx, metadata.data(), metadata.size());
-        SHA1_Final(buffer, &ctx);
-        memcpy(&id, buffer, sizeof(id));
-    }
-    return id;
+    return IncFs_FileIdFromMetadata({(const char*)metadata.data(), metadata.size()});
 }
 
 IncrementalService::~IncrementalService() = default;
 
+inline const char* toString(TimePoint t) {
+    using SystemClock = std::chrono::system_clock;
+    time_t time = SystemClock::to_time_t(
+            SystemClock::now() +
+            std::chrono::duration_cast<SystemClock::duration>(t - Clock::now()));
+    return std::ctime(&time);
+}
+
+inline const char* toString(IncrementalService::BindKind kind) {
+    switch (kind) {
+        case IncrementalService::BindKind::Temporary:
+            return "Temporary";
+        case IncrementalService::BindKind::Permanent:
+            return "Permanent";
+    }
+}
+
+void IncrementalService::onDump(int fd) {
+    dprintf(fd, "Incremental is %s\n", incfs::enabled() ? "ENABLED" : "DISABLED");
+    dprintf(fd, "Incremental dir: %s\n", mIncrementalDir.c_str());
+
+    std::unique_lock l(mLock);
+
+    dprintf(fd, "Mounts (%d):\n", int(mMounts.size()));
+    for (auto&& [id, ifs] : mMounts) {
+        const IncFsMount& mnt = *ifs.get();
+        dprintf(fd, "\t[%d]:\n", id);
+        dprintf(fd, "\t\tmountId: %d\n", mnt.mountId);
+        dprintf(fd, "\t\tnextStorageDirNo: %d\n", mnt.nextStorageDirNo.load());
+        dprintf(fd, "\t\tdataLoaderStatus: %d\n", mnt.dataLoaderStatus.load());
+        dprintf(fd, "\t\tconnectionLostTime: %s\n", toString(mnt.connectionLostTime));
+        if (mnt.savedDataLoaderParams) {
+            const auto& params = mnt.savedDataLoaderParams.value();
+            dprintf(fd, "\t\tsavedDataLoaderParams:\n");
+            dprintf(fd, "\t\t\ttype: %s\n", toString(params.type).c_str());
+            dprintf(fd, "\t\t\tpackageName: %s\n", params.packageName.c_str());
+            dprintf(fd, "\t\t\tclassName: %s\n", params.className.c_str());
+            dprintf(fd, "\t\t\targuments: %s\n", params.arguments.c_str());
+            dprintf(fd, "\t\t\tdynamicArgs: %d\n", int(params.dynamicArgs.size()));
+        }
+        dprintf(fd, "\t\tstorages (%d):\n", int(mnt.storages.size()));
+        for (auto&& [storageId, storage] : mnt.storages) {
+            dprintf(fd, "\t\t\t[%d] -> [%s]\n", storageId, storage.name.c_str());
+        }
+
+        dprintf(fd, "\t\tbindPoints (%d):\n", int(mnt.bindPoints.size()));
+        for (auto&& [target, bind] : mnt.bindPoints) {
+            dprintf(fd, "\t\t\t[%s]->[%d]:\n", target.c_str(), bind.storage);
+            dprintf(fd, "\t\t\t\tsavedFilename: %s\n", bind.savedFilename.c_str());
+            dprintf(fd, "\t\t\t\tsourceDir: %s\n", bind.sourceDir.c_str());
+            dprintf(fd, "\t\t\t\tkind: %s\n", toString(bind.kind));
+        }
+    }
+
+    dprintf(fd, "Sorted binds (%d):\n", int(mBindsByPath.size()));
+    for (auto&& [target, mountPairIt] : mBindsByPath) {
+        const auto& bind = mountPairIt->second;
+        dprintf(fd, "\t\t[%s]->[%d]:\n", target.c_str(), bind.storage);
+        dprintf(fd, "\t\t\tsavedFilename: %s\n", bind.savedFilename.c_str());
+        dprintf(fd, "\t\t\tsourceDir: %s\n", bind.sourceDir.c_str());
+        dprintf(fd, "\t\t\tkind: %s\n", toString(bind.kind));
+    }
+}
+
 std::optional<std::future<void>> IncrementalService::onSystemReady() {
     std::promise<void> threadFinished;
     if (mSystemReady.exchange(true)) {
@@ -275,21 +329,14 @@
     }
 
     std::thread([this, mounts = std::move(mounts)]() {
-        std::vector<IfsMountPtr> failedLoaderMounts;
         for (auto&& ifs : mounts) {
-            if (prepareDataLoader(*ifs, nullptr)) {
+            if (prepareDataLoader(*ifs)) {
                 LOG(INFO) << "Successfully started data loader for mount " << ifs->mountId;
             } else {
+                // TODO(b/133435829): handle data loader start failures
                 LOG(WARNING) << "Failed to start data loader for mount " << ifs->mountId;
-                failedLoaderMounts.push_back(std::move(ifs));
             }
         }
-
-        while (!failedLoaderMounts.empty()) {
-            LOG(WARNING) << "Deleting failed mount " << failedLoaderMounts.back()->mountId;
-            deleteStorage(*failedLoaderMounts.back());
-            failedLoaderMounts.pop_back();
-        }
         mPrepareDataLoaders.set_value_at_thread_exit();
     }).detach();
     return mPrepareDataLoaders.get_future();
@@ -308,9 +355,9 @@
     }
 }
 
-StorageId IncrementalService::createStorage(std::string_view mountPoint,
-                                            DataLoaderParamsParcel&& dataLoaderParams,
-                                            CreateOptions options) {
+StorageId IncrementalService::createStorage(
+        std::string_view mountPoint, DataLoaderParamsParcel&& dataLoaderParams,
+        const DataLoaderStatusListener& dataLoaderStatusListener, CreateOptions options) {
     LOG(INFO) << "createStorage: " << mountPoint << " | " << int(options);
     if (!path::isAbsolute(mountPoint)) {
         LOG(ERROR) << "path is not absolute: " << mountPoint;
@@ -442,7 +489,7 @@
     // Done here as well, all data structures are in good state.
     secondCleanupOnFailure.release();
 
-    if (!prepareDataLoader(*ifs, &dataLoaderParams)) {
+    if (!prepareDataLoader(*ifs, &dataLoaderParams, &dataLoaderStatusListener)) {
         LOG(ERROR) << "prepareDataLoader() failed";
         deleteStorageLocked(*ifs, std::move(l));
         return kInvalidStorageId;
@@ -612,16 +659,13 @@
     if (!ifs) {
         return -EINVAL;
     }
-    auto normSource = path::normalize(source);
 
     std::unique_lock l(ifs->lock);
     const auto storageInfo = ifs->storages.find(storage);
     if (storageInfo == ifs->storages.end()) {
         return -EINVAL;
     }
-    if (!path::startsWith(normSource, storageInfo->second.name)) {
-        return -EINVAL;
-    }
+    std::string normSource = normalizePathToStorage(ifs, storage, source);
     l.unlock();
     std::unique_lock l2(mLock, std::defer_lock);
     return addBindMount(*ifs, storage, storageInfo->second.name, std::move(normSource),
@@ -670,10 +714,32 @@
     return 0;
 }
 
+std::string IncrementalService::normalizePathToStorage(const IncrementalService::IfsMountPtr ifs,
+                                                       StorageId storage, std::string_view path) {
+    const auto storageInfo = ifs->storages.find(storage);
+    if (storageInfo == ifs->storages.end()) {
+        return {};
+    }
+    std::string normPath;
+    if (path::isAbsolute(path)) {
+        normPath = path::normalize(path);
+    } else {
+        normPath = path::normalize(path::join(storageInfo->second.name, path));
+    }
+    if (!path::startsWith(normPath, storageInfo->second.name)) {
+        return {};
+    }
+    return normPath;
+}
+
 int IncrementalService::makeFile(StorageId storage, std::string_view path, int mode, FileId id,
                                  incfs::NewFileParams params) {
     if (auto ifs = getIfs(storage)) {
-        auto err = mIncFs->makeFile(ifs->control, path, mode, id, params);
+        std::string normPath = normalizePathToStorage(ifs, storage, path);
+        if (normPath.empty()) {
+            return -EINVAL;
+        }
+        auto err = mIncFs->makeFile(ifs->control, normPath, mode, id, params);
         if (err) {
             return err;
         }
@@ -681,7 +747,6 @@
         if (params.metadata.data && params.metadata.size > 0) {
             metadataBytes.assign(params.metadata.data, params.metadata.data + params.metadata.size);
         }
-        mIncrementalManager->newFileForDataLoader(ifs->mountId, id, metadataBytes);
         return 0;
     }
     return -EINVAL;
@@ -689,7 +754,11 @@
 
 int IncrementalService::makeDir(StorageId storageId, std::string_view path, int mode) {
     if (auto ifs = getIfs(storageId)) {
-        return mIncFs->makeDir(ifs->control, path, mode);
+        std::string normPath = normalizePathToStorage(ifs, storageId, path);
+        if (normPath.empty()) {
+            return -EINVAL;
+        }
+        return mIncFs->makeDir(ifs->control, normPath, mode);
     }
     return -EINVAL;
 }
@@ -699,31 +768,40 @@
     if (!ifs) {
         return -EINVAL;
     }
-
-    auto err = mIncFs->makeDir(ifs->control, path, mode);
+    std::string normPath = normalizePathToStorage(ifs, storageId, path);
+    if (normPath.empty()) {
+        return -EINVAL;
+    }
+    auto err = mIncFs->makeDir(ifs->control, normPath, mode);
     if (err == -EEXIST) {
         return 0;
     } else if (err != -ENOENT) {
         return err;
     }
-    if (auto err = makeDirs(storageId, path::dirname(path), mode)) {
+    if (auto err = makeDirs(storageId, path::dirname(normPath), mode)) {
         return err;
     }
-    return mIncFs->makeDir(ifs->control, path, mode);
+    return mIncFs->makeDir(ifs->control, normPath, mode);
 }
 
 int IncrementalService::link(StorageId sourceStorageId, std::string_view oldPath,
                              StorageId destStorageId, std::string_view newPath) {
     if (auto ifsSrc = getIfs(sourceStorageId), ifsDest = getIfs(destStorageId);
         ifsSrc && ifsSrc == ifsDest) {
-        return mIncFs->link(ifsSrc->control, oldPath, newPath);
+        std::string normOldPath = normalizePathToStorage(ifsSrc, sourceStorageId, oldPath);
+        std::string normNewPath = normalizePathToStorage(ifsDest, destStorageId, newPath);
+        if (normOldPath.empty() || normNewPath.empty()) {
+            return -EINVAL;
+        }
+        return mIncFs->link(ifsSrc->control, normOldPath, normNewPath);
     }
     return -EINVAL;
 }
 
 int IncrementalService::unlink(StorageId storage, std::string_view path) {
     if (auto ifs = getIfs(storage)) {
-        return mIncFs->unlink(ifs->control, path);
+        std::string normOldPath = normalizePathToStorage(ifs, storage, path);
+        return mIncFs->unlink(ifs->control, normOldPath);
     }
     return -EINVAL;
 }
@@ -741,9 +819,10 @@
         metadata::BindPoint bp;
         bp.set_storage_id(storage);
         bp.set_allocated_dest_path(&target);
-        bp.set_source_subdir(std::string(path::relativize(storageRoot, source)));
+        bp.set_allocated_source_subdir(&source);
         const auto metadata = bp.SerializeAsString();
         bp.release_dest_path();
+        bp.release_source_subdir();
         mdFileName = makeBindMdName();
         auto node =
                 mIncFs->makeFile(ifs.control, path::join(ifs.root, constants().mount, mdFileName),
@@ -858,25 +937,20 @@
 }
 
 void IncrementalService::mountExistingImages() {
-    auto d = std::unique_ptr<DIR, decltype(&::closedir)>(::opendir(mIncrementalDir.c_str()),
-                                                         ::closedir);
-    while (auto e = ::readdir(d.get())) {
-        if (e->d_type != DT_DIR) {
+    for (const auto& entry : fs::directory_iterator(mIncrementalDir)) {
+        const auto path = entry.path().u8string();
+        const auto name = entry.path().filename().u8string();
+        if (!base::StartsWith(name, constants().mountKeyPrefix)) {
             continue;
         }
-        if (e->d_name == "."sv || e->d_name == ".."sv) {
-            continue;
-        }
-        auto root = path::join(mIncrementalDir, e->d_name);
-        if (!mountExistingImage(root, e->d_name)) {
-            IncFsMount::cleanupFilesystem(root);
+        const auto root = path::join(mIncrementalDir, name);
+        if (!mountExistingImage(root, name)) {
+            IncFsMount::cleanupFilesystem(path);
         }
     }
 }
 
 bool IncrementalService::mountExistingImage(std::string_view root, std::string_view key) {
-    LOG(INFO) << "Trying to mount: " << key;
-
     auto mountTarget = path::join(root, constants().mount);
     const auto backing = path::join(root, constants().backing);
 
@@ -960,22 +1034,13 @@
         return false;
     }
 
-    DataLoaderParamsParcel dlParams;
-    dlParams.type = (DataLoaderType)m.loader().type();
-    dlParams.packageName = std::move(*m.mutable_loader()->mutable_package_name());
-    dlParams.className = std::move(*m.mutable_loader()->mutable_class_name());
-    dlParams.arguments = std::move(*m.mutable_loader()->mutable_arguments());
-    if (!prepareDataLoader(*ifs, &dlParams)) {
-        deleteStorage(*ifs);
-        return false;
-    }
-
     mMounts[ifs->mountId] = std::move(ifs);
     return true;
 }
 
 bool IncrementalService::prepareDataLoader(IncrementalService::IncFsMount& ifs,
-                                           DataLoaderParamsParcel* params) {
+                                           DataLoaderParamsParcel* params,
+                                           const DataLoaderStatusListener* externalListener) {
     if (!mSystemReady.load(std::memory_order_relaxed)) {
         std::unique_lock l(ifs.lock);
         if (params) {
@@ -1018,7 +1083,8 @@
     fsControlParcel.incremental->pendingReads.reset(
             base::unique_fd(::dup(ifs.control.pendingReads)));
     fsControlParcel.incremental->log.reset(base::unique_fd(::dup(ifs.control.logs)));
-    sp<IncrementalDataLoaderListener> listener = new IncrementalDataLoaderListener(*this);
+    sp<IncrementalDataLoaderListener> listener =
+            new IncrementalDataLoaderListener(*this, *externalListener);
     bool created = false;
     auto status = mIncrementalManager->prepareDataLoader(ifs.mountId, fsControlParcel, *dlp,
                                                          listener, &created);
@@ -1030,8 +1096,129 @@
     return true;
 }
 
+// Extract lib filse from zip, create new files in incfs and write data to them
+bool IncrementalService::configureNativeBinaries(StorageId storage, std::string_view apkFullPath,
+                                                 std::string_view libDirRelativePath,
+                                                 std::string_view abi) {
+    const auto ifs = getIfs(storage);
+    // First prepare target directories if they don't exist yet
+    if (auto res = makeDirs(storage, libDirRelativePath, 0755)) {
+        LOG(ERROR) << "Failed to prepare target lib directory " << libDirRelativePath
+                   << " errno: " << res;
+        return false;
+    }
+
+    std::unique_ptr<ZipFileRO> zipFile(ZipFileRO::open(apkFullPath.data()));
+    if (!zipFile) {
+        LOG(ERROR) << "Failed to open zip file at " << apkFullPath;
+        return false;
+    }
+    void* cookie = nullptr;
+    const auto libFilePrefix = path::join(constants().libDir, abi);
+    if (!zipFile.get()->startIteration(&cookie, libFilePrefix.c_str() /* prefix */,
+                                       constants().libSuffix.data() /* suffix */)) {
+        LOG(ERROR) << "Failed to start zip iteration for " << apkFullPath;
+        return false;
+    }
+    ZipEntryRO entry = nullptr;
+    bool success = true;
+    while ((entry = zipFile.get()->nextEntry(cookie)) != nullptr) {
+        char fileName[PATH_MAX];
+        if (zipFile.get()->getEntryFileName(entry, fileName, sizeof(fileName))) {
+            continue;
+        }
+        const auto libName = path::basename(fileName);
+        const auto targetLibPath = path::join(libDirRelativePath, libName);
+        const auto targetLibPathAbsolute = normalizePathToStorage(ifs, storage, targetLibPath);
+        // If the extract file already exists, skip
+        struct stat st;
+        if (stat(targetLibPathAbsolute.c_str(), &st) == 0) {
+            LOG(INFO) << "Native lib file already exists: " << targetLibPath
+                      << "; skipping extraction";
+            continue;
+        }
+
+        uint32_t uncompressedLen;
+        if (!zipFile.get()->getEntryInfo(entry, nullptr, &uncompressedLen, nullptr, nullptr,
+                                         nullptr, nullptr)) {
+            LOG(ERROR) << "Failed to read native lib entry: " << fileName;
+            success = false;
+            break;
+        }
+
+        // Create new lib file without signature info
+        incfs::NewFileParams libFileParams{};
+        libFileParams.size = uncompressedLen;
+        libFileParams.verification.hashAlgorithm = INCFS_HASH_NONE;
+        // Metadata of the new lib file is its relative path
+        IncFsSpan libFileMetadata;
+        libFileMetadata.data = targetLibPath.c_str();
+        libFileMetadata.size = targetLibPath.size();
+        libFileParams.metadata = libFileMetadata;
+        incfs::FileId libFileId = idFromMetadata(targetLibPath);
+        if (auto res = makeFile(storage, targetLibPath, 0777, libFileId, libFileParams)) {
+            LOG(ERROR) << "Failed to make file for: " << targetLibPath << " errno: " << res;
+            success = false;
+            // If one lib file fails to be created, abort others as well
+            break;
+        }
+
+        // Write extracted data to new file
+        std::vector<uint8_t> libData(uncompressedLen);
+        if (!zipFile.get()->uncompressEntry(entry, &libData[0], uncompressedLen)) {
+            LOG(ERROR) << "Failed to extract native lib zip entry: " << fileName;
+            success = false;
+            break;
+        }
+        android::base::unique_fd writeFd(mIncFs->openWrite(ifs->control, libFileId));
+        if (writeFd < 0) {
+            LOG(ERROR) << "Failed to open write fd for: " << targetLibPath << " errno: " << writeFd;
+            success = false;
+            break;
+        }
+        const int numBlocks = uncompressedLen / constants().blockSize + 1;
+        std::vector<IncFsDataBlock> instructions;
+        auto remainingData = std::span(libData);
+        for (int i = 0; i < numBlocks - 1; i++) {
+            auto inst = IncFsDataBlock{
+                    .fileFd = writeFd,
+                    .pageIndex = static_cast<IncFsBlockIndex>(i),
+                    .compression = INCFS_COMPRESSION_KIND_NONE,
+                    .kind = INCFS_BLOCK_KIND_DATA,
+                    .dataSize = static_cast<uint16_t>(constants().blockSize),
+                    .data = reinterpret_cast<const char*>(remainingData.data()),
+            };
+            instructions.push_back(inst);
+            remainingData = remainingData.subspan(constants().blockSize);
+        }
+        // Last block
+        auto inst = IncFsDataBlock{
+                .fileFd = writeFd,
+                .pageIndex = static_cast<IncFsBlockIndex>(numBlocks - 1),
+                .compression = INCFS_COMPRESSION_KIND_NONE,
+                .kind = INCFS_BLOCK_KIND_DATA,
+                .dataSize = static_cast<uint16_t>(remainingData.size()),
+                .data = reinterpret_cast<const char*>(remainingData.data()),
+        };
+        instructions.push_back(inst);
+        size_t res = mIncFs->writeBlocks(instructions);
+        if (res != instructions.size()) {
+            LOG(ERROR) << "Failed to write data into: " << targetLibPath;
+            success = false;
+        }
+        instructions.clear();
+    }
+    zipFile.get()->endIteration(cookie);
+    return success;
+}
+
 binder::Status IncrementalService::IncrementalDataLoaderListener::onStatusChanged(MountId mountId,
                                                                                   int newStatus) {
+    if (externalListener) {
+        // Give an external listener a chance to act before we destroy something.
+        externalListener->onStatusChanged(mountId, newStatus);
+    }
+
     std::unique_lock l(incrementalService.mLock);
     const auto& ifs = incrementalService.getIfsLocked(mountId);
     if (!ifs) {
@@ -1073,6 +1260,12 @@
         case IDataLoaderStatusListener::DATA_LOADER_STOPPED: {
             break;
         }
+        case IDataLoaderStatusListener::DATA_LOADER_IMAGE_READY: {
+            break;
+        }
+        case IDataLoaderStatusListener::DATA_LOADER_IMAGE_NOT_READY: {
+            break;
+        }
         default: {
             LOG(WARNING) << "Unknown data loader status: " << newStatus
                          << " for mount: " << mountId;
diff --git a/services/incremental/IncrementalService.h b/services/incremental/IncrementalService.h
index ca5e4db..75d066b 100644
--- a/services/incremental/IncrementalService.h
+++ b/services/incremental/IncrementalService.h
@@ -18,8 +18,8 @@
 
 #include <android-base/strings.h>
 #include <android-base/unique_fd.h>
-#include <android/os/incremental/IIncrementalManager.h>
 #include <android/content/pm/DataLoaderParamsParcel.h>
+#include <android/os/incremental/IIncrementalManager.h>
 #include <binder/IServiceManager.h>
 #include <utils/String16.h>
 #include <utils/StrongPointer.h>
@@ -59,6 +59,8 @@
 using TimePoint = std::chrono::time_point<Clock>;
 using Seconds = std::chrono::seconds;
 
+using DataLoaderStatusListener = ::android::sp<::android::content::pm::IDataLoaderStatusListener>;
+
 class IncrementalService final {
 public:
     explicit IncrementalService(ServiceManagerWrapper&& sm, std::string_view rootDir);
@@ -90,10 +92,13 @@
         return idFromMetadata({(const uint8_t*)metadata.data(), metadata.size()});
     }
 
+    void onDump(int fd);
+
     std::optional<std::future<void>> onSystemReady();
 
     StorageId createStorage(std::string_view mountPoint,
                             DataLoaderParamsParcel&& dataLoaderParams,
+                            const DataLoaderStatusListener& dataLoaderStatusListener,
                             CreateOptions options = CreateOptions::Default);
     StorageId createLinkedStorage(std::string_view mountPoint, StorageId linkedStorage,
                                   CreateOptions options = CreateOptions::Default);
@@ -109,8 +114,8 @@
 
     int makeFile(StorageId storage, std::string_view path, int mode, FileId id,
                  incfs::NewFileParams params);
-    int makeDir(StorageId storage, std::string_view path, int mode = 0555);
-    int makeDirs(StorageId storage, std::string_view path, int mode = 0555);
+    int makeDir(StorageId storage, std::string_view path, int mode = 0755);
+    int makeDirs(StorageId storage, std::string_view path, int mode = 0755);
 
     int link(StorageId sourceStorageId, std::string_view oldPath, StorageId destStorageId,
              std::string_view newPath);
@@ -121,20 +126,21 @@
     }
 
     RawMetadata getMetadata(StorageId storage, FileId node) const;
-    std::string getSignatureData(StorageId storage, FileId node) const;
 
     std::vector<std::string> listFiles(StorageId storage) const;
     bool startLoading(StorageId storage) const;
-
+    bool configureNativeBinaries(StorageId storage, std::string_view apkFullPath,
+                                 std::string_view libDirRelativePath, std::string_view abi);
     class IncrementalDataLoaderListener : public android::content::pm::BnDataLoaderStatusListener {
     public:
-        IncrementalDataLoaderListener(IncrementalService& incrementalService)
-              : incrementalService(incrementalService) {}
+        IncrementalDataLoaderListener(IncrementalService& incrementalService, DataLoaderStatusListener externalListener)
+              : incrementalService(incrementalService), externalListener(externalListener) {}
         // Callbacks interface
         binder::Status onStatusChanged(MountId mount, int newStatus) override;
 
     private:
         IncrementalService& incrementalService;
+        DataLoaderStatusListener externalListener;
     };
 
 private:
@@ -200,13 +206,15 @@
                            std::string&& source, std::string&& target, BindKind kind,
                            std::unique_lock<std::mutex>& mainLock);
 
-    bool prepareDataLoader(IncFsMount& ifs, DataLoaderParamsParcel* params);
+    bool prepareDataLoader(IncFsMount& ifs, DataLoaderParamsParcel* params = nullptr, const DataLoaderStatusListener* externalListener = nullptr);
     BindPathMap::const_iterator findStorageLocked(std::string_view path) const;
     StorageId findStorageId(std::string_view path) const;
 
     void deleteStorage(IncFsMount& ifs);
     void deleteStorageLocked(IncFsMount& ifs, std::unique_lock<std::mutex>&& ifsLock);
     MountMap::iterator getStorageSlotLocked();
+    std::string normalizePathToStorage(const IfsMountPtr incfs, StorageId storage,
+                                       std::string_view path);
 
     // Member variables
     std::unique_ptr<VoldServiceWrapper> mVold;
diff --git a/services/incremental/ServiceWrappers.h b/services/incremental/ServiceWrappers.h
index ae3739d..6421583 100644
--- a/services/incremental/ServiceWrappers.h
+++ b/services/incremental/ServiceWrappers.h
@@ -60,8 +60,6 @@
                                              bool* _aidl_return) const = 0;
     virtual binder::Status startDataLoader(MountId mountId, bool* _aidl_return) const = 0;
     virtual binder::Status destroyDataLoader(MountId mountId) const = 0;
-    virtual binder::Status newFileForDataLoader(MountId mountId, FileId fileid,
-                                                const std::vector<uint8_t>& metadata) const = 0;
     virtual binder::Status showHealthBlockedUI(MountId mountId) const = 0;
 };
 
@@ -70,7 +68,7 @@
     virtual ~IncFsWrapper() = default;
     virtual ErrorCode makeFile(Control control, std::string_view path, int mode, FileId id,
                                NewFileParams params) const = 0;
-    virtual ErrorCode makeDir(Control control, std::string_view path, int mode = 0555) const = 0;
+    virtual ErrorCode makeDir(Control control, std::string_view path, int mode) const = 0;
     virtual RawMetadata getMetadata(Control control, FileId fileid) const = 0;
     virtual RawMetadata getMetadata(Control control, std::string_view path) const = 0;
     virtual FileId getFileId(Control control, std::string_view path) const = 0;
@@ -128,13 +126,6 @@
     binder::Status destroyDataLoader(MountId mountId) const override {
         return mInterface->destroyDataLoader(mountId);
     }
-    binder::Status newFileForDataLoader(MountId mountId, FileId fileid,
-                                        const std::vector<uint8_t>& metadata) const override {
-        return mInterface->newFileForDataLoader(mountId,
-                                                {(const uint8_t*)fileid.data,
-                                                 (const uint8_t*)fileid.data + sizeof(fileid.data)},
-                                                metadata);
-    }
     binder::Status showHealthBlockedUI(MountId mountId) const override {
         return mInterface->showHealthBlockedUI(mountId);
     }
diff --git a/services/incremental/include/incremental_service.h b/services/incremental/include/incremental_service.h
index 7109d95..4a34b11 100644
--- a/services/incremental/include/incremental_service.h
+++ b/services/incremental/include/incremental_service.h
@@ -26,6 +26,7 @@
 
 jlong Incremental_IncrementalService_Start();
 void Incremental_IncrementalService_OnSystemReady(jlong self);
+void Incremental_IncrementalService_OnDump(jlong self, jint fd);
 
 __END_DECLS
 
diff --git a/services/incremental/test/IncrementalServiceTest.cpp b/services/incremental/test/IncrementalServiceTest.cpp
index 2826818..3aa846c 100644
--- a/services/incremental/test/IncrementalServiceTest.cpp
+++ b/services/incremental/test/IncrementalServiceTest.cpp
@@ -266,34 +266,12 @@
     DataLoaderParamsParcel mDataLoaderParcel;
 };
 
-/*
-TEST_F(IncrementalServiceTest, testBootMountExistingImagesSuccess) {
-    TemporaryDir tempDir;
-    setUpExistingMountDir(tempDir.path);
-    mVold->mountIncFsSuccess();
-    mVold->bindMountSuccess();
-    mIncrementalManager->prepareDataLoaderSuccess();
-    ON_CALL(*mIncrementalManager, destroyDataLoader(_)).WillByDefault(Return(binder::Status::ok()));
-
-    EXPECT_CALL(*mVold, mountIncFs(_, _, _, _)).Times(1);
-    EXPECT_CALL(*mIncrementalManager, prepareDataLoader(_, _, _, _, _)).Times(1);
-
-    MockServiceManager serviceManager = MockServiceManager(mVold, mIncrementalManager, mIncFs);
-    std::unique_ptr<IncrementalService> incrementalService =
-            std::make_unique<IncrementalService>(serviceManager, tempDir.path);
-    auto finished = incrementalService->onSystemReady();
-    if (finished) {
-        finished->wait();
-    }
-}
-*/
-
 TEST_F(IncrementalServiceTest, testCreateStorageMountIncFsFails) {
     mVold->mountIncFsFails();
     EXPECT_CALL(*mIncrementalManager, prepareDataLoader(_, _, _, _, _)).Times(0);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_LT(storageId, 0);
 }
@@ -303,7 +281,7 @@
     EXPECT_CALL(*mIncrementalManager, prepareDataLoader(_, _, _, _, _)).Times(0);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_LT(storageId, 0);
 }
@@ -316,7 +294,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_));
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_LT(storageId, 0);
 }
@@ -330,7 +308,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_));
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_LT(storageId, 0);
 }
@@ -344,7 +322,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_)).Times(2);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_LT(storageId, 0);
 }
@@ -358,7 +336,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_)).Times(2);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_GE(storageId, 0);
     mIncrementalService->deleteStorage(storageId);
@@ -373,7 +351,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_)).Times(2);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_GE(storageId, 0);
     mIncrementalManager->setDataLoaderStatusNotReady();
@@ -389,7 +367,7 @@
     EXPECT_CALL(*mVold, unmountIncFs(_)).Times(2);
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     ASSERT_GE(storageId, 0);
     mIncrementalManager->setDataLoaderStatusReady();
@@ -404,31 +382,18 @@
     mIncrementalManager->startDataLoaderSuccess();
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
-    std::string_view dir_path("test");
-    EXPECT_CALL(*mIncFs, makeDir(_, dir_path, _));
-    auto res = mIncrementalService->makeDir(storageId, dir_path, 0555);
-    ASSERT_EQ(res, 0);
-}
+    std::string dir_path("test");
 
-TEST_F(IncrementalServiceTest, testMakeDirectoryNested) {
-    mVold->mountIncFsSuccess();
-    mIncFs->makeFileSuccess();
-    mVold->bindMountSuccess();
-    mIncrementalManager->prepareDataLoaderSuccess();
-    mIncrementalManager->startDataLoaderSuccess();
-    TemporaryDir tempDir;
-    int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
-                                               IncrementalService::CreateOptions::CreateNew);
-    auto first = "first"sv;
-    auto second = "second"sv;
-    std::string dir_path = std::string(first) + "/" + std::string(second);
-    EXPECT_CALL(*mIncFs, makeDir(_, first, _)).Times(0);
-    EXPECT_CALL(*mIncFs, makeDir(_, second, _)).Times(0);
-    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(dir_path), _)).Times(1);
+    std::string tempPath(tempDir.path);
+    std::replace(tempPath.begin(), tempPath.end(), '/', '_');
+    std::string mount_dir = std::string(mRootDir.path) + "/MT_" + tempPath.substr(1);
+    std::string normalized_dir_path = mount_dir + "/mount/st_1_0/" + dir_path;
 
+    // Expecting incfs to call makeDir on a path like:
+    // /data/local/tmp/TemporaryDir-06yixG/data_local_tmp_TemporaryDir-xwdFhT/mount/st_1_0/test
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_dir_path), _));
     auto res = mIncrementalService->makeDir(storageId, dir_path, 0555);
     ASSERT_EQ(res, 0);
 }
@@ -441,20 +406,34 @@
     mIncrementalManager->startDataLoaderSuccess();
     TemporaryDir tempDir;
     int storageId =
-            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel),
+            mIncrementalService->createStorage(tempDir.path, std::move(mDataLoaderParcel), {},
                                                IncrementalService::CreateOptions::CreateNew);
     auto first = "first"sv;
     auto second = "second"sv;
     auto third = "third"sv;
+
+    std::string tempPath(tempDir.path);
+    std::replace(tempPath.begin(), tempPath.end(), '/', '_');
+    std::string mount_dir = std::string(mRootDir.path) + "/MT_" + tempPath.substr(1);
+
     InSequence seq;
     auto parent_path = std::string(first) + "/" + std::string(second);
     auto dir_path = parent_path + "/" + std::string(third);
-    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(dir_path), _)).WillOnce(Return(-ENOENT));
-    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(parent_path), _)).WillOnce(Return(-ENOENT));
-    EXPECT_CALL(*mIncFs, makeDir(_, first, _)).WillOnce(Return(0));
-    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(parent_path), _)).WillOnce(Return(0));
-    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(dir_path), _)).WillOnce(Return(0));
-    auto res = mIncrementalService->makeDirs(storageId, dir_path, 0555);
+
+    std::string normalized_first_path = mount_dir + "/mount/st_1_0/" + std::string(first);
+    std::string normalized_parent_path = mount_dir + "/mount/st_1_0/" + parent_path;
+    std::string normalized_dir_path = mount_dir + "/mount/st_1_0/" + dir_path;
+
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_dir_path), _))
+            .WillOnce(Return(-ENOENT));
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_parent_path), _))
+            .WillOnce(Return(-ENOENT));
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_first_path), _))
+            .WillOnce(Return(0));
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_parent_path), _))
+            .WillOnce(Return(0));
+    EXPECT_CALL(*mIncFs, makeDir(_, std::string_view(normalized_dir_path), _)).WillOnce(Return(0));
+    auto res = mIncrementalService->makeDirs(storageId, normalized_dir_path, 0555);
     ASSERT_EQ(res, 0);
 }
 } // namespace android::os::incremental
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index 4f5c1ab..93662c9 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -41,6 +41,7 @@
 import android.content.res.Resources.Theme;
 import android.database.sqlite.SQLiteCompatibilityWalFlags;
 import android.database.sqlite.SQLiteGlobal;
+import android.graphics.GraphicsStatsService;
 import android.hardware.display.DisplayManagerInternal;
 import android.net.ConnectivityModuleConnector;
 import android.net.ITetheringConnector;
@@ -71,8 +72,6 @@
 import android.util.DisplayMetrics;
 import android.util.EventLog;
 import android.util.Slog;
-import android.util.StatsLog;
-import android.view.WindowManager;
 import android.view.contentcapture.ContentCaptureManager;
 
 import com.android.internal.R;
@@ -80,6 +79,7 @@
 import com.android.internal.os.BinderInternal;
 import com.android.internal.util.ConcurrentUtils;
 import com.android.internal.util.EmergencyAffordanceManager;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.widget.ILockSettings;
 import com.android.server.am.ActivityManagerService;
 import com.android.server.appbinding.AppBindingService;
@@ -162,6 +162,7 @@
 import com.android.server.trust.TrustManagerService;
 import com.android.server.tv.TvInputManagerService;
 import com.android.server.tv.TvRemoteService;
+import com.android.server.tv.tuner.TunerResourceManagerService;
 import com.android.server.twilight.TwilightService;
 import com.android.server.uri.UriGrantsManagerService;
 import com.android.server.usage.UsageStatsService;
@@ -343,6 +344,7 @@
 
     private static final String START_SENSOR_SERVICE = "StartSensorService";
     private static final String START_HIDL_SERVICES = "StartHidlServices";
+    private static final String START_BLOB_STORE_SERVICE = "startBlobStoreManagerService";
 
     private static final String SYSPROP_START_COUNT = "sys.system_server.start_count";
     private static final String SYSPROP_START_ELAPSED = "sys.system_server.start_elapsed";
@@ -350,6 +352,7 @@
 
     private Future<?> mSensorServiceStart;
     private Future<?> mZygotePreload;
+    private Future<?> mBlobStoreServiceStart;
 
     /**
      * Start the sensor service. This is a blocking call and can take time.
@@ -366,6 +369,12 @@
      */
     private static native void initZygoteChildHeapProfiling();
 
+
+    /**
+     * Spawn a thread that monitors for fd leaks.
+     */
+    private static native void spawnFdLeakCheckThread();
+
     /**
      * The main entry point from zygote.
      */
@@ -446,8 +455,9 @@
             final long uptimeMillis = SystemClock.elapsedRealtime();
             EventLog.writeEvent(EventLogTags.BOOT_PROGRESS_SYSTEM_RUN, uptimeMillis);
             if (!mRuntimeRestart) {
-                StatsLog.write(StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
-                        StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SYSTEM_SERVER_INIT_START,
+                FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
+                        FrameworkStatsLog
+                                .BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SYSTEM_SERVER_INIT_START,
                         uptimeMillis);
             }
 
@@ -500,6 +510,11 @@
                 initZygoteChildHeapProfiling();
             }
 
+            // Debug builds - spawn a thread to monitor for fd leaks.
+            if (Build.IS_DEBUGGABLE) {
+                spawnFdLeakCheckThread();
+            }
+
             // Check whether we failed to shut down last time we tried.
             // This call may not return.
             performPendingShutdown();
@@ -558,8 +573,8 @@
 
         if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {
             final long uptimeMillis = SystemClock.elapsedRealtime();
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SYSTEM_SERVER_READY,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
+                    FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__SYSTEM_SERVER_READY,
                     uptimeMillis);
             final long maxUptimeMillis = 60 * 1000;
             if (uptimeMillis > maxUptimeMillis) {
@@ -795,8 +810,9 @@
 
         // Start the package manager.
         if (!mRuntimeRestart) {
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__PACKAGE_MANAGER_INIT_START,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
+                    FrameworkStatsLog
+                            .BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__PACKAGE_MANAGER_INIT_START,
                     SystemClock.elapsedRealtime());
         }
 
@@ -813,8 +829,9 @@
         mPackageManager = mSystemContext.getPackageManager();
         t.traceEnd();
         if (!mRuntimeRestart && !isFirstBootOrUpgrade()) {
-            StatsLog.write(StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
-                    StatsLog.BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__PACKAGE_MANAGER_INIT_READY,
+            FrameworkStatsLog.write(FrameworkStatsLog.BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED,
+                    FrameworkStatsLog
+                            .BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__PACKAGE_MANAGER_INIT_READY,
                     SystemClock.elapsedRealtime());
         }
         // Manages A/B OTA dexopting. This is a bootstrap service as we need it to rename
@@ -1785,6 +1802,13 @@
                 t.traceEnd();
             }
 
+            mBlobStoreServiceStart = SystemServerInitThreadPool.submit(() -> {
+                final TimingsTraceAndSlog traceLog = TimingsTraceAndSlog.newAsyncLog();
+                traceLog.traceBegin(START_BLOB_STORE_SERVICE);
+                mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
+                traceLog.traceEnd();
+            }, START_BLOB_STORE_SERVICE);
+
             // Dreams (interactive idle-time views, a/k/a screen savers, and doze mode)
             t.traceBegin("StartDreamManager");
             mSystemServiceManager.startService(DreamManagerService.class);
@@ -1831,6 +1855,8 @@
                     || mPackageManager.hasSystemFeature(PackageManager.FEATURE_LEANBACK)) {
                 t.traceBegin("StartTvInputManager");
                 mSystemServiceManager.startService(TvInputManagerService.class);
+                t.traceBegin("StartTunerResourceManager");
+                mSystemServiceManager.startService(TunerResourceManagerService.class);
                 t.traceEnd();
             }
 
@@ -2029,10 +2055,6 @@
         mSystemServiceManager.startService(ClipboardService.class);
         t.traceEnd();
 
-        t.traceBegin("StartBlobStoreManagerService");
-        mSystemServiceManager.startService(BLOB_STORE_MANAGER_SERVICE_CLASS);
-        t.traceEnd();
-
         t.traceBegin("AppServiceManager");
         mSystemServiceManager.startService(AppBindingService.Lifecycle.class);
         t.traceEnd();
@@ -2083,8 +2105,7 @@
         // propagate to it.
         final Configuration config = wm.computeNewConfiguration(DEFAULT_DISPLAY);
         DisplayMetrics metrics = new DisplayMetrics();
-        WindowManager w = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
-        w.getDefaultDisplay().getMetrics(metrics);
+        context.getDisplay().getMetrics(metrics);
         context.getResources().updateConfiguration(config, metrics);
 
         // The system context's theme may be configuration-dependent.
@@ -2151,6 +2172,9 @@
         mSystemServiceManager.startService(APP_SEARCH_MANAGER_SERVICE_CLASS);
         t.traceEnd();
 
+        ConcurrentUtils.waitForFutureNoInterrupt(mBlobStoreServiceStart,
+                START_BLOB_STORE_SERVICE);
+
         // These are needed to propagate to the runnable below.
         final NetworkManagementService networkManagementF = networkManagement;
         final NetworkStatsService networkStatsF = networkStats;
diff --git a/services/people/java/com/android/server/people/SessionInfo.java b/services/people/java/com/android/server/people/SessionInfo.java
index eb08e03..eaa0781 100644
--- a/services/people/java/com/android/server/people/SessionInfo.java
+++ b/services/people/java/com/android/server/people/SessionInfo.java
@@ -25,7 +25,7 @@
 import android.util.Slog;
 
 import com.android.server.people.data.DataManager;
-import com.android.server.people.prediction.ConversationPredictor;
+import com.android.server.people.prediction.AppTargetPredictor;
 
 import java.util.List;
 
@@ -34,12 +34,12 @@
 
     private static final String TAG = "SessionInfo";
 
-    private final ConversationPredictor mConversationPredictor;
+    private final AppTargetPredictor mAppTargetPredictor;
     private final RemoteCallbackList<IPredictionCallback> mCallbacks =
             new RemoteCallbackList<>();
 
     SessionInfo(AppPredictionContext predictionContext, DataManager dataManager) {
-        mConversationPredictor = new ConversationPredictor(predictionContext,
+        mAppTargetPredictor = AppTargetPredictor.create(predictionContext,
                 this::updatePredictions, dataManager);
     }
 
@@ -51,8 +51,8 @@
         mCallbacks.unregister(callback);
     }
 
-    ConversationPredictor getPredictor() {
-        return mConversationPredictor;
+    AppTargetPredictor getPredictor() {
+        return mAppTargetPredictor;
     }
 
     void onDestroy() {
diff --git a/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java
new file mode 100644
index 0000000..203e980
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/AbstractProtoDiskReadWriter.java
@@ -0,0 +1,264 @@
+/*
+ * 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.server.people.data;
+
+import android.annotation.MainThread;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.WorkerThread;
+import android.text.format.DateUtils;
+import android.util.ArrayMap;
+import android.util.AtomicFile;
+import android.util.Slog;
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoOutputStream;
+
+import com.android.internal.annotations.GuardedBy;
+
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.util.Arrays;
+import java.util.Map;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Base class for reading and writing protobufs on disk from a root directory. Callers should
+ * ensure that the root directory is unlocked before doing I/O operations using this class.
+ *
+ * @param <T> is the data class representation of a protobuf.
+ */
+abstract class AbstractProtoDiskReadWriter<T> {
+
+    private static final String TAG = AbstractProtoDiskReadWriter.class.getSimpleName();
+    private static final long SHUTDOWN_DISK_WRITE_TIMEOUT = 5L * DateUtils.SECOND_IN_MILLIS;
+
+    private final File mRootDir;
+    private final ScheduledExecutorService mScheduledExecutorService;
+    private final long mWriteDelayMs;
+
+    @GuardedBy("this")
+    private ScheduledFuture<?> mScheduledFuture;
+
+    @GuardedBy("this")
+    private Map<String, T> mScheduledFileDataMap = new ArrayMap<>();
+
+    /**
+     * Child class shall provide a {@link ProtoStreamWriter} to facilitate the writing of data as a
+     * protobuf on disk.
+     */
+    abstract ProtoStreamWriter<T> protoStreamWriter();
+
+    /**
+     * Child class shall provide a {@link ProtoStreamReader} to facilitate the reading of protobuf
+     * data on disk.
+     */
+    abstract ProtoStreamReader<T> protoStreamReader();
+
+    AbstractProtoDiskReadWriter(@NonNull File rootDir, long writeDelayMs,
+            @NonNull ScheduledExecutorService scheduledExecutorService) {
+        mRootDir = rootDir;
+        mWriteDelayMs = writeDelayMs;
+        mScheduledExecutorService = scheduledExecutorService;
+    }
+
+    @WorkerThread
+    void delete(@NonNull String fileName) {
+        final File file = getFile(fileName);
+        if (!file.exists()) {
+            return;
+        }
+        if (!file.delete()) {
+            Slog.e(TAG, "Failed to delete file: " + file.getPath());
+        }
+    }
+
+    @WorkerThread
+    void writeTo(@NonNull String fileName, @NonNull T data) {
+        final File file = getFile(fileName);
+        final AtomicFile atomicFile = new AtomicFile(file);
+
+        FileOutputStream fileOutputStream = null;
+        try {
+            fileOutputStream = atomicFile.startWrite();
+        } catch (IOException e) {
+            Slog.e(TAG, "Failed to write to protobuf file.", e);
+            return;
+        }
+
+        try {
+            final ProtoOutputStream protoOutputStream = new ProtoOutputStream(fileOutputStream);
+            protoStreamWriter().write(protoOutputStream, data);
+            protoOutputStream.flush();
+            atomicFile.finishWrite(fileOutputStream);
+            fileOutputStream = null;
+        } finally {
+            // When fileInputStream is null (successful write), this will no-op.
+            atomicFile.failWrite(fileOutputStream);
+        }
+    }
+
+    @WorkerThread
+    @Nullable
+    T read(@NonNull String fileName) {
+        File[] files = mRootDir.listFiles(
+                pathname -> pathname.isFile() && pathname.getName().equals(fileName));
+        if (files == null || files.length == 0) {
+            return null;
+        } else if (files.length > 1) {
+            // This can't possibly happen, but sanity check.
+            Slog.w(TAG, "Found multiple files with the same name: " + Arrays.toString(files));
+        }
+        return parseFile(files[0]);
+    }
+
+    /**
+     * Reads all files in directory and returns a map with file names as keys and parsed file
+     * contents as values.
+     */
+    @WorkerThread
+    @Nullable
+    Map<String, T> readAll() {
+        File[] files = mRootDir.listFiles(File::isFile);
+        if (files == null) {
+            return null;
+        }
+
+        Map<String, T> results = new ArrayMap<>();
+        for (File file : files) {
+            T result = parseFile(file);
+            if (result != null) {
+                results.put(file.getName(), result);
+            }
+        }
+        return results;
+    }
+
+    /**
+     * Schedules the specified data to be flushed to a file in the future. Subsequent
+     * calls for the same file before the flush occurs will replace the previous data but will not
+     * reset when the flush will occur. All unique files will be flushed at the same time.
+     */
+    @MainThread
+    synchronized void scheduleSave(@NonNull String fileName, @NonNull T data) {
+        mScheduledFileDataMap.put(fileName, data);
+
+        if (mScheduledExecutorService.isShutdown()) {
+            Slog.e(TAG, "Worker is shutdown, failed to schedule data saving.");
+            return;
+        }
+
+        // Skip scheduling another flush when one is pending.
+        if (mScheduledFuture != null) {
+            return;
+        }
+
+        mScheduledFuture = mScheduledExecutorService.schedule(this::flushScheduledData,
+                mWriteDelayMs, TimeUnit.MILLISECONDS);
+    }
+
+    /**
+     * Saves specified data immediately on a background thread, and blocks until its completed. This
+     * is useful for when device is powering off.
+     */
+    @MainThread
+    synchronized void saveImmediately(@NonNull String fileName, @NonNull T data) {
+        if (mScheduledExecutorService.isShutdown()) {
+            return;
+        }
+        // Cancel existing future.
+        if (mScheduledFuture != null) {
+
+            // We shouldn't need to interrupt as this method and threaded task
+            // #flushScheduledData are both synchronized.
+            mScheduledFuture.cancel(true);
+        }
+
+        mScheduledFileDataMap.put(fileName, data);
+        // Submit flush and blocks until it completes. Blocking will prevent the device from
+        // shutting down before flushing completes.
+        Future<?> future = mScheduledExecutorService.submit(this::flushScheduledData);
+        try {
+            future.get(SHUTDOWN_DISK_WRITE_TIMEOUT, TimeUnit.MILLISECONDS);
+        } catch (InterruptedException | ExecutionException | TimeoutException e) {
+            Slog.e(TAG, "Failed to save data immediately.", e);
+        }
+    }
+
+    @WorkerThread
+    private synchronized void flushScheduledData() {
+        if (mScheduledFileDataMap.isEmpty()) {
+            mScheduledFuture = null;
+            return;
+        }
+        for (String fileName : mScheduledFileDataMap.keySet()) {
+            T data = mScheduledFileDataMap.remove(fileName);
+            writeTo(fileName, data);
+        }
+        mScheduledFuture = null;
+    }
+
+    @WorkerThread
+    @Nullable
+    private T parseFile(@NonNull File file) {
+        final AtomicFile atomicFile = new AtomicFile(file);
+        try (FileInputStream fileInputStream = atomicFile.openRead()) {
+            final ProtoInputStream protoInputStream = new ProtoInputStream(fileInputStream);
+            return protoStreamReader().read(protoInputStream);
+        } catch (IOException e) {
+            Slog.e(TAG, "Failed to parse protobuf file.", e);
+        }
+        return null;
+    }
+
+    @NonNull
+    private File getFile(String fileName) {
+        return new File(mRootDir, fileName);
+    }
+
+    /**
+     * {@code ProtoStreamWriter} writes {@code T} fields to {@link ProtoOutputStream}.
+     *
+     * @param <T> is the data class representation of a protobuf.
+     */
+    interface ProtoStreamWriter<T> {
+
+        /**
+         * Writes {@code T} to {@link ProtoOutputStream}.
+         */
+        void write(@NonNull ProtoOutputStream protoOutputStream, @NonNull T data);
+    }
+
+    /**
+     * {@code ProtoStreamReader} reads {@link ProtoInputStream} and translate it to {@code T}.
+     *
+     * @param <T> is the data class representation of a protobuf.
+     */
+    interface ProtoStreamReader<T> {
+        /**
+         * Reads {@link ProtoInputStream} and translates it to {@code T}.
+         */
+        @Nullable
+        T read(@NonNull ProtoInputStream protoInputStream);
+    }
+}
diff --git a/services/people/java/com/android/server/people/data/CallLogQueryHelper.java b/services/people/java/com/android/server/people/data/CallLogQueryHelper.java
new file mode 100644
index 0000000..45e0aac
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/CallLogQueryHelper.java
@@ -0,0 +1,121 @@
+/*
+ * 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.server.people.data;
+
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.database.Cursor;
+import android.provider.CallLog.Calls;
+import android.text.TextUtils;
+import android.util.Slog;
+import android.util.SparseIntArray;
+
+import java.util.function.BiConsumer;
+
+/** A helper class that queries the call log database. */
+class CallLogQueryHelper {
+
+    private static final String TAG = "CallLogQueryHelper";
+
+    private static final SparseIntArray CALL_TYPE_TO_EVENT_TYPE = new SparseIntArray();
+
+    static {
+        CALL_TYPE_TO_EVENT_TYPE.put(Calls.INCOMING_TYPE, Event.TYPE_CALL_INCOMING);
+        CALL_TYPE_TO_EVENT_TYPE.put(Calls.OUTGOING_TYPE, Event.TYPE_CALL_OUTGOING);
+        CALL_TYPE_TO_EVENT_TYPE.put(Calls.MISSED_TYPE, Event.TYPE_CALL_MISSED);
+    }
+
+    private final Context mContext;
+    private final BiConsumer<String, Event> mEventConsumer;
+    private long mLastCallTimestamp;
+
+    /**
+     * @param context Context for accessing the content resolver.
+     * @param eventConsumer Consumes the events created from the call log records. The first input
+     *                      param is the normalized phone number.
+     */
+    CallLogQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+        mContext = context;
+        mEventConsumer = eventConsumer;
+    }
+
+    /**
+     * Queries the call log database for the new data added since {@code sinceTime} and returns
+     * true if the query runs successfully and at least one call log entry is found.
+     */
+    @WorkerThread
+    boolean querySince(long sinceTime) {
+        String[] projection = new String[] {
+                Calls.CACHED_NORMALIZED_NUMBER, Calls.DATE, Calls.DURATION, Calls.TYPE };
+        String selection = Calls.DATE + " > ?";
+        String[] selectionArgs = new String[] { Long.toString(sinceTime) };
+        boolean hasResults = false;
+        try (Cursor cursor = mContext.getContentResolver().query(
+                Calls.CONTENT_URI, projection, selection, selectionArgs,
+                Calls.DEFAULT_SORT_ORDER)) {
+            if (cursor == null) {
+                Slog.w(TAG, "Cursor is null when querying call log.");
+                return false;
+            }
+            while (cursor.moveToNext()) {
+                // Phone number
+                int numberIndex = cursor.getColumnIndex(Calls.CACHED_NORMALIZED_NUMBER);
+                String phoneNumber = cursor.getString(numberIndex);
+
+                // Date
+                int dateIndex = cursor.getColumnIndex(Calls.DATE);
+                long date = cursor.getLong(dateIndex);
+
+                // Duration
+                int durationIndex = cursor.getColumnIndex(Calls.DURATION);
+                long durationSeconds = cursor.getLong(durationIndex);
+
+                // Type
+                int typeIndex = cursor.getColumnIndex(Calls.TYPE);
+                int callType = cursor.getInt(typeIndex);
+
+                mLastCallTimestamp = Math.max(mLastCallTimestamp, date);
+                if (addEvent(phoneNumber, date, durationSeconds, callType)) {
+                    hasResults = true;
+                }
+            }
+        }
+        return hasResults;
+    }
+
+    long getLastCallTimestamp() {
+        return mLastCallTimestamp;
+    }
+
+    private boolean addEvent(String phoneNumber, long date, long durationSeconds, int callType) {
+        if (!validateEvent(phoneNumber, date, callType)) {
+            return false;
+        }
+        @Event.EventType int eventType  = CALL_TYPE_TO_EVENT_TYPE.get(callType);
+        Event event = new Event.Builder(date, eventType)
+                .setDurationSeconds((int) durationSeconds)
+                .build();
+        mEventConsumer.accept(phoneNumber, event);
+        return true;
+    }
+
+    private boolean validateEvent(String phoneNumber, long date, int callType) {
+        return !TextUtils.isEmpty(phoneNumber)
+                && date > 0L
+                && CALL_TYPE_TO_EVENT_TYPE.indexOfKey(callType) >= 0;
+    }
+}
diff --git a/services/people/java/com/android/server/people/data/ConversationInfo.java b/services/people/java/com/android/server/people/data/ConversationInfo.java
index bb97533..ce35366 100644
--- a/services/people/java/com/android/server/people/data/ConversationInfo.java
+++ b/services/people/java/com/android/server/people/data/ConversationInfo.java
@@ -20,12 +20,18 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.content.LocusId;
+import android.content.LocusIdProto;
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutInfo.ShortcutFlags;
 import android.net.Uri;
+import android.util.Slog;
+import android.util.proto.ProtoInputStream;
+import android.util.proto.ProtoOutputStream;
 
 import com.android.internal.util.Preconditions;
+import com.android.server.people.ConversationInfoProto;
 
+import java.io.IOException;
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
@@ -35,7 +41,9 @@
  */
 public class ConversationInfo {
 
-    private static final int FLAG_VIP = 1;
+    private static final String TAG = ConversationInfo.class.getSimpleName();
+
+    private static final int FLAG_IMPORTANT = 1;
 
     private static final int FLAG_NOTIFICATION_SILENCED = 1 << 1;
 
@@ -50,7 +58,7 @@
     private static final int FLAG_DEMOTED = 1 << 6;
 
     @IntDef(flag = true, prefix = {"FLAG_"}, value = {
-            FLAG_VIP,
+            FLAG_IMPORTANT,
             FLAG_NOTIFICATION_SILENCED,
             FLAG_BUBBLED,
             FLAG_PERSON_IMPORTANT,
@@ -129,9 +137,9 @@
         return hasShortcutFlags(ShortcutInfo.FLAG_LONG_LIVED);
     }
 
-    /** Whether this conversation is marked as VIP by the user. */
-    public boolean isVip() {
-        return hasConversationFlags(FLAG_VIP);
+    /** Whether this conversation is marked as important by the user. */
+    public boolean isImportant() {
+        return hasConversationFlags(FLAG_IMPORTANT);
     }
 
     /** Whether the notifications for this conversation should be silenced. */
@@ -208,8 +216,8 @@
         sb.append("]");
         sb.append(", conversationFlags=0x").append(Integer.toHexString(mConversationFlags));
         sb.append(" [");
-        if (isVip()) {
-            sb.append("Vip");
+        if (isImportant()) {
+            sb.append("Imp");
         }
         if (isNotificationSilenced()) {
             sb.append("Sil");
@@ -221,7 +229,7 @@
             sb.append("Dem");
         }
         if (isPersonImportant()) {
-            sb.append("Imp");
+            sb.append("PIm");
         }
         if (isPersonBot()) {
             sb.append("Bot");
@@ -241,6 +249,72 @@
         return (mConversationFlags & flags) == flags;
     }
 
+    /** Writes field members to {@link ProtoOutputStream}. */
+    void writeToProto(@NonNull ProtoOutputStream protoOutputStream) {
+        protoOutputStream.write(ConversationInfoProto.SHORTCUT_ID, mShortcutId);
+        if (mLocusId != null) {
+            long locusIdToken = protoOutputStream.start(ConversationInfoProto.LOCUS_ID_PROTO);
+            protoOutputStream.write(LocusIdProto.LOCUS_ID, mLocusId.getId());
+            protoOutputStream.end(locusIdToken);
+        }
+        if (mContactUri != null) {
+            protoOutputStream.write(ConversationInfoProto.CONTACT_URI, mContactUri.toString());
+        }
+        if (mNotificationChannelId != null) {
+            protoOutputStream.write(ConversationInfoProto.NOTIFICATION_CHANNEL_ID,
+                    mNotificationChannelId);
+        }
+        protoOutputStream.write(ConversationInfoProto.SHORTCUT_FLAGS, mShortcutFlags);
+        protoOutputStream.write(ConversationInfoProto.CONVERSATION_FLAGS, mConversationFlags);
+    }
+
+    /** Reads from {@link ProtoInputStream} and constructs a {@link ConversationInfo}. */
+    @NonNull
+    static ConversationInfo readFromProto(@NonNull ProtoInputStream protoInputStream)
+            throws IOException {
+        ConversationInfo.Builder builder = new ConversationInfo.Builder();
+        while (protoInputStream.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+            switch (protoInputStream.getFieldNumber()) {
+                case (int) ConversationInfoProto.SHORTCUT_ID:
+                    builder.setShortcutId(
+                            protoInputStream.readString(ConversationInfoProto.SHORTCUT_ID));
+                    break;
+                case (int) ConversationInfoProto.LOCUS_ID_PROTO:
+                    long locusIdToken = protoInputStream.start(
+                            ConversationInfoProto.LOCUS_ID_PROTO);
+                    while (protoInputStream.nextField()
+                            != ProtoInputStream.NO_MORE_FIELDS) {
+                        if (protoInputStream.getFieldNumber() == (int) LocusIdProto.LOCUS_ID) {
+                            builder.setLocusId(new LocusId(
+                                    protoInputStream.readString(LocusIdProto.LOCUS_ID)));
+                        }
+                    }
+                    protoInputStream.end(locusIdToken);
+                    break;
+                case (int) ConversationInfoProto.CONTACT_URI:
+                    builder.setContactUri(Uri.parse(protoInputStream.readString(
+                            ConversationInfoProto.CONTACT_URI)));
+                    break;
+                case (int) ConversationInfoProto.NOTIFICATION_CHANNEL_ID:
+                    builder.setNotificationChannelId(protoInputStream.readString(
+                            ConversationInfoProto.NOTIFICATION_CHANNEL_ID));
+                    break;
+                case (int) ConversationInfoProto.SHORTCUT_FLAGS:
+                    builder.setShortcutFlags(protoInputStream.readInt(
+                            ConversationInfoProto.SHORTCUT_FLAGS));
+                    break;
+                case (int) ConversationInfoProto.CONVERSATION_FLAGS:
+                    builder.setConversationFlags(protoInputStream.readInt(
+                            ConversationInfoProto.CONVERSATION_FLAGS));
+                    break;
+                default:
+                    Slog.w(TAG, "Could not read undefined field: "
+                            + protoInputStream.getFieldNumber());
+            }
+        }
+        return builder.build();
+    }
+
     /**
      * Builder class for {@link ConversationInfo} objects.
      */
@@ -318,8 +392,8 @@
             return this;
         }
 
-        Builder setVip(boolean value) {
-            return setConversationFlag(FLAG_VIP, value);
+        Builder setImportant(boolean value) {
+            return setConversationFlag(FLAG_IMPORTANT, value);
         }
 
         Builder setNotificationSilenced(boolean value) {
diff --git a/services/people/java/com/android/server/people/data/ConversationStore.java b/services/people/java/com/android/server/people/data/ConversationStore.java
index f17e1b9..ea36d38 100644
--- a/services/people/java/com/android/server/people/data/ConversationStore.java
+++ b/services/people/java/com/android/server/people/data/ConversationStore.java
@@ -16,50 +16,124 @@
 
 package com.android.server.people.data;
 
+import android.annotation.MainThread;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.WorkerThread;
 import android.content.LocusId;
 import android.net.Uri;
+import android.text.TextUtils;
+import android.text.format.DateUtils;
 import android.util.ArrayMap;
+import android.util.Slog;
+import android.util.proto.ProtoInputStream;
 
+import com.android.internal.annotations.GuardedBy;
+import com.android.server.people.ConversationInfosProto;
+
+import com.google.android.collect.Lists;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.function.Consumer;
 
-/** The store that stores and accesses the conversations data for a package. */
+/**
+ * The store that stores and accesses the conversations data for a package.
+ */
 class ConversationStore {
 
+    private static final String TAG = ConversationStore.class.getSimpleName();
+
+    private static final String CONVERSATIONS_FILE_NAME = "conversations";
+
+    private static final long DISK_WRITE_DELAY = 2L * DateUtils.MINUTE_IN_MILLIS;
+
     // Shortcut ID -> Conversation Info
+    @GuardedBy("this")
     private final Map<String, ConversationInfo> mConversationInfoMap = new ArrayMap<>();
 
     // Locus ID -> Shortcut ID
+    @GuardedBy("this")
     private final Map<LocusId, String> mLocusIdToShortcutIdMap = new ArrayMap<>();
 
     // Contact URI -> Shortcut ID
+    @GuardedBy("this")
     private final Map<Uri, String> mContactUriToShortcutIdMap = new ArrayMap<>();
 
     // Phone Number -> Shortcut ID
+    @GuardedBy("this")
     private final Map<String, String> mPhoneNumberToShortcutIdMap = new ArrayMap<>();
 
-    void addOrUpdate(@NonNull ConversationInfo conversationInfo) {
-        mConversationInfoMap.put(conversationInfo.getShortcutId(), conversationInfo);
+    // Notification Channel ID -> Shortcut ID
+    @GuardedBy("this")
+    private final Map<String, String> mNotifChannelIdToShortcutIdMap = new ArrayMap<>();
 
-        LocusId locusId = conversationInfo.getLocusId();
-        if (locusId != null) {
-            mLocusIdToShortcutIdMap.put(locusId, conversationInfo.getShortcutId());
-        }
+    private final ScheduledExecutorService mScheduledExecutorService;
+    private final File mPackageDir;
+    private final ContactsQueryHelper mHelper;
 
-        Uri contactUri = conversationInfo.getContactUri();
-        if (contactUri != null) {
-            mContactUriToShortcutIdMap.put(contactUri, conversationInfo.getShortcutId());
-        }
+    private ConversationInfosProtoDiskReadWriter mConversationInfosProtoDiskReadWriter;
 
-        String phoneNumber = conversationInfo.getContactPhoneNumber();
-        if (phoneNumber != null) {
-            mPhoneNumberToShortcutIdMap.put(phoneNumber, conversationInfo.getShortcutId());
+    ConversationStore(@NonNull File packageDir,
+            @NonNull ScheduledExecutorService scheduledExecutorService,
+            @NonNull ContactsQueryHelper helper) {
+        mScheduledExecutorService = scheduledExecutorService;
+        mPackageDir = packageDir;
+        mHelper = helper;
+    }
+
+    /**
+     * Loads conversations from disk to memory in a background thread. This should be called
+     * after the device powers on and the user has been unlocked.
+     */
+    @MainThread
+    void loadConversationsFromDisk() {
+        mScheduledExecutorService.submit(() -> {
+            synchronized (this) {
+                ConversationInfosProtoDiskReadWriter conversationInfosProtoDiskReadWriter =
+                        getConversationInfosProtoDiskReadWriter();
+                if (conversationInfosProtoDiskReadWriter == null) {
+                    return;
+                }
+                List<ConversationInfo> conversationsOnDisk =
+                        conversationInfosProtoDiskReadWriter.read(CONVERSATIONS_FILE_NAME);
+                if (conversationsOnDisk == null) {
+                    return;
+                }
+                for (ConversationInfo conversationInfo : conversationsOnDisk) {
+                    conversationInfo = restoreConversationPhoneNumber(conversationInfo);
+                    updateConversationsInMemory(conversationInfo);
+                }
+            }
+        });
+    }
+
+    /**
+     * Immediately flushes current conversations to disk. This should be called when device is
+     * powering off.
+     */
+    @MainThread
+    synchronized void saveConversationsToDisk() {
+        ConversationInfosProtoDiskReadWriter conversationInfosProtoDiskReadWriter =
+                getConversationInfosProtoDiskReadWriter();
+        if (conversationInfosProtoDiskReadWriter != null) {
+            conversationInfosProtoDiskReadWriter.saveConversationsImmediately(
+                    new ArrayList<>(mConversationInfoMap.values()));
         }
     }
 
-    void deleteConversation(@NonNull String shortcutId) {
+    @MainThread
+    synchronized void addOrUpdate(@NonNull ConversationInfo conversationInfo) {
+        updateConversationsInMemory(conversationInfo);
+        scheduleUpdateConversationsOnDisk();
+    }
+
+    @MainThread
+    synchronized void deleteConversation(@NonNull String shortcutId) {
         ConversationInfo conversationInfo = mConversationInfoMap.remove(shortcutId);
         if (conversationInfo == null) {
             return;
@@ -79,31 +153,178 @@
         if (phoneNumber != null) {
             mPhoneNumberToShortcutIdMap.remove(phoneNumber);
         }
+
+        String notifChannelId = conversationInfo.getNotificationChannelId();
+        if (notifChannelId != null) {
+            mNotifChannelIdToShortcutIdMap.remove(notifChannelId);
+        }
+        scheduleUpdateConversationsOnDisk();
     }
 
-    void forAllConversations(@NonNull Consumer<ConversationInfo> consumer) {
+    synchronized void forAllConversations(@NonNull Consumer<ConversationInfo> consumer) {
         for (ConversationInfo ci : mConversationInfoMap.values()) {
             consumer.accept(ci);
         }
     }
 
     @Nullable
-    ConversationInfo getConversation(@Nullable String shortcutId) {
+    synchronized ConversationInfo getConversation(@Nullable String shortcutId) {
         return shortcutId != null ? mConversationInfoMap.get(shortcutId) : null;
     }
 
     @Nullable
-    ConversationInfo getConversationByLocusId(@NonNull LocusId locusId) {
+    synchronized ConversationInfo getConversationByLocusId(@NonNull LocusId locusId) {
         return getConversation(mLocusIdToShortcutIdMap.get(locusId));
     }
 
     @Nullable
-    ConversationInfo getConversationByContactUri(@NonNull Uri contactUri) {
+    synchronized ConversationInfo getConversationByContactUri(@NonNull Uri contactUri) {
         return getConversation(mContactUriToShortcutIdMap.get(contactUri));
     }
 
     @Nullable
-    ConversationInfo getConversationByPhoneNumber(@NonNull String phoneNumber) {
+    synchronized ConversationInfo getConversationByPhoneNumber(@NonNull String phoneNumber) {
         return getConversation(mPhoneNumberToShortcutIdMap.get(phoneNumber));
     }
+
+    @Nullable
+    ConversationInfo getConversationByNotificationChannelId(@NonNull String notifChannelId) {
+        return getConversation(mNotifChannelIdToShortcutIdMap.get(notifChannelId));
+    }
+
+    @MainThread
+    private synchronized void updateConversationsInMemory(
+            @NonNull ConversationInfo conversationInfo) {
+        mConversationInfoMap.put(conversationInfo.getShortcutId(), conversationInfo);
+
+        LocusId locusId = conversationInfo.getLocusId();
+        if (locusId != null) {
+            mLocusIdToShortcutIdMap.put(locusId, conversationInfo.getShortcutId());
+        }
+
+        Uri contactUri = conversationInfo.getContactUri();
+        if (contactUri != null) {
+            mContactUriToShortcutIdMap.put(contactUri, conversationInfo.getShortcutId());
+        }
+
+        String phoneNumber = conversationInfo.getContactPhoneNumber();
+        if (phoneNumber != null) {
+            mPhoneNumberToShortcutIdMap.put(phoneNumber, conversationInfo.getShortcutId());
+        }
+
+        String notifChannelId = conversationInfo.getNotificationChannelId();
+        if (notifChannelId != null) {
+            mNotifChannelIdToShortcutIdMap.put(notifChannelId, conversationInfo.getShortcutId());
+        }
+    }
+
+    /** Schedules a dump of all conversations onto disk, overwriting existing values. */
+    @MainThread
+    private synchronized void scheduleUpdateConversationsOnDisk() {
+        ConversationInfosProtoDiskReadWriter conversationInfosProtoDiskReadWriter =
+                getConversationInfosProtoDiskReadWriter();
+        if (conversationInfosProtoDiskReadWriter != null) {
+            conversationInfosProtoDiskReadWriter.scheduleConversationsSave(
+                    new ArrayList<>(mConversationInfoMap.values()));
+        }
+    }
+
+    @Nullable
+    private ConversationInfosProtoDiskReadWriter getConversationInfosProtoDiskReadWriter() {
+        if (!mPackageDir.exists()) {
+            Slog.e(TAG, "Package data directory does not exist: " + mPackageDir.getAbsolutePath());
+            return null;
+        }
+        if (mConversationInfosProtoDiskReadWriter == null) {
+            mConversationInfosProtoDiskReadWriter = new ConversationInfosProtoDiskReadWriter(
+                    mPackageDir, CONVERSATIONS_FILE_NAME, DISK_WRITE_DELAY,
+                    mScheduledExecutorService);
+        }
+        return mConversationInfosProtoDiskReadWriter;
+    }
+
+    /**
+     * Conversation's phone number is not saved on disk, so it has to be fetched.
+     */
+    @WorkerThread
+    private ConversationInfo restoreConversationPhoneNumber(
+            @NonNull ConversationInfo conversationInfo) {
+        if (conversationInfo.getContactUri() != null) {
+            if (mHelper.query(conversationInfo.getContactUri().toString())) {
+                String phoneNumber = mHelper.getPhoneNumber();
+                if (!TextUtils.isEmpty(phoneNumber)) {
+                    conversationInfo = new ConversationInfo.Builder(
+                            conversationInfo).setContactPhoneNumber(
+                            phoneNumber).build();
+                }
+            }
+        }
+        return conversationInfo;
+    }
+
+    /** Reads and writes {@link ConversationInfo} on disk. */
+    static class ConversationInfosProtoDiskReadWriter extends
+            AbstractProtoDiskReadWriter<List<ConversationInfo>> {
+
+        private final String mConversationInfoFileName;
+
+        ConversationInfosProtoDiskReadWriter(@NonNull File baseDir,
+                @NonNull String conversationInfoFileName,
+                long writeDelayMs, @NonNull ScheduledExecutorService scheduledExecutorService) {
+            super(baseDir, writeDelayMs, scheduledExecutorService);
+            mConversationInfoFileName = conversationInfoFileName;
+        }
+
+        @Override
+        ProtoStreamWriter<List<ConversationInfo>> protoStreamWriter() {
+            return (protoOutputStream, data) -> {
+                for (ConversationInfo conversationInfo : data) {
+                    long token = protoOutputStream.start(ConversationInfosProto.CONVERSATION_INFOS);
+                    conversationInfo.writeToProto(protoOutputStream);
+                    protoOutputStream.end(token);
+                }
+            };
+        }
+
+        @Override
+        ProtoStreamReader<List<ConversationInfo>> protoStreamReader() {
+            return protoInputStream -> {
+                List<ConversationInfo> results = Lists.newArrayList();
+                try {
+                    while (protoInputStream.nextField() != ProtoInputStream.NO_MORE_FIELDS) {
+                        if (protoInputStream.getFieldNumber()
+                                != (int) ConversationInfosProto.CONVERSATION_INFOS) {
+                            continue;
+                        }
+                        long token = protoInputStream.start(
+                                ConversationInfosProto.CONVERSATION_INFOS);
+                        ConversationInfo conversationInfo = ConversationInfo.readFromProto(
+                                protoInputStream);
+                        protoInputStream.end(token);
+                        results.add(conversationInfo);
+                    }
+                } catch (IOException e) {
+                    Slog.e(TAG, "Failed to read protobuf input stream.", e);
+                }
+                return results;
+            };
+        }
+
+        /**
+         * Schedules a flush of the specified conversations to disk.
+         */
+        @MainThread
+        void scheduleConversationsSave(@NonNull List<ConversationInfo> conversationInfos) {
+            scheduleSave(mConversationInfoFileName, conversationInfos);
+        }
+
+        /**
+         * Saves the specified conversations immediately. This should be used when device is
+         * powering off.
+         */
+        @MainThread
+        void saveConversationsImmediately(@NonNull List<ConversationInfo> conversationInfos) {
+            saveImmediately(mConversationInfoFileName, conversationInfos);
+        }
+    }
 }
diff --git a/services/people/java/com/android/server/people/data/DataManager.java b/services/people/java/com/android/server/people/data/DataManager.java
index 13cce41..a904b42 100644
--- a/services/people/java/com/android/server/people/data/DataManager.java
+++ b/services/people/java/com/android/server/people/data/DataManager.java
@@ -21,11 +21,11 @@
 import android.annotation.UserIdInt;
 import android.annotation.WorkerThread;
 import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.Person;
 import android.app.prediction.AppTarget;
 import android.app.prediction.AppTargetEvent;
-import android.app.usage.UsageEvents;
-import android.app.usage.UsageStatsManagerInternal;
 import android.content.BroadcastReceiver;
 import android.content.ComponentName;
 import android.content.Context;
@@ -45,7 +45,9 @@
 import android.os.RemoteException;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.provider.CallLog;
 import android.provider.ContactsContract.Contacts;
+import android.provider.Telephony.MmsSms;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.StatusBarNotification;
 import android.telecom.TelecomManager;
@@ -59,14 +61,15 @@
 import com.android.internal.telephony.SmsApplication;
 import com.android.server.LocalServices;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+import java.util.function.BiConsumer;
 import java.util.function.Consumer;
+import java.util.function.Function;
 
 /**
  * A class manages the lifecycle of the conversations and associated data, and exposes the methods
@@ -77,12 +80,13 @@
     private static final String PLATFORM_PACKAGE_NAME = "android";
     private static final int MY_UID = Process.myUid();
     private static final int MY_PID = Process.myPid();
-    private static final long USAGE_STATS_QUERY_MAX_EVENT_AGE_MS = DateUtils.DAY_IN_MILLIS;
+    private static final long QUERY_EVENTS_MAX_AGE_MS = DateUtils.DAY_IN_MILLIS;
     private static final long USAGE_STATS_QUERY_INTERVAL_SEC = 120L;
 
     private final Context mContext;
     private final Injector mInjector;
     private final ScheduledExecutorService mUsageStatsQueryExecutor;
+    private final ScheduledExecutorService mDiskReadWriterExecutor;
 
     private final SparseArray<UserData> mUserDataArray = new SparseArray<>();
     private final SparseArray<BroadcastReceiver> mBroadcastReceivers = new SparseArray<>();
@@ -90,16 +94,15 @@
     private final SparseArray<ScheduledFuture<?>> mUsageStatsQueryFutures = new SparseArray<>();
     private final SparseArray<NotificationListenerService> mNotificationListeners =
             new SparseArray<>();
+    private final ContentObserver mCallLogContentObserver;
+    private final ContentObserver mMmsSmsContentObserver;
 
     private ShortcutServiceInternal mShortcutServiceInternal;
-    private UsageStatsManagerInternal mUsageStatsManagerInternal;
     private ShortcutManager mShortcutManager;
     private UserManager mUserManager;
 
     public DataManager(Context context) {
-        mContext = context;
-        mInjector = new Injector();
-        mUsageStatsQueryExecutor = mInjector.createScheduledExecutor();
+        this(context, new Injector());
     }
 
     @VisibleForTesting
@@ -107,23 +110,32 @@
         mContext = context;
         mInjector = injector;
         mUsageStatsQueryExecutor = mInjector.createScheduledExecutor();
+        mCallLogContentObserver = new CallLogContentObserver(
+                BackgroundThread.getHandler());
+        mMmsSmsContentObserver = new MmsSmsContentObserver(
+                BackgroundThread.getHandler());
+        mDiskReadWriterExecutor = mInjector.createScheduledExecutor();
     }
 
     /** Initialization. Called when the system services are up running. */
     public void initialize() {
         mShortcutServiceInternal = LocalServices.getService(ShortcutServiceInternal.class);
-        mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class);
         mShortcutManager = mContext.getSystemService(ShortcutManager.class);
         mUserManager = mContext.getSystemService(UserManager.class);
 
         mShortcutServiceInternal.addListener(new ShortcutServiceListener());
+
+        IntentFilter shutdownIntentFilter = new IntentFilter(Intent.ACTION_SHUTDOWN);
+        BroadcastReceiver shutdownBroadcastReceiver = new ShutdownBroadcastReceiver();
+        mContext.registerReceiver(shutdownBroadcastReceiver, shutdownIntentFilter);
     }
 
     /** This method is called when a user is unlocked. */
     public void onUserUnlocked(int userId) {
         UserData userData = mUserDataArray.get(userId);
         if (userData == null) {
-            userData = new UserData(userId);
+            userData = new UserData(userId, mDiskReadWriterExecutor,
+                    mInjector.createContactsQueryHelper(mContext));
             mUserDataArray.put(userId, userData);
         }
         userData.setUserUnlocked();
@@ -154,11 +166,23 @@
         mNotificationListeners.put(userId, notificationListener);
         try {
             notificationListener.registerAsSystemService(mContext,
-                    new ComponentName(PLATFORM_PACKAGE_NAME, getClass().getSimpleName()),
-                    UserHandle.myUserId());
+                    new ComponentName(PLATFORM_PACKAGE_NAME, getClass().getCanonicalName()),
+                    userId);
         } catch (RemoteException e) {
             // Should never occur for local calls.
         }
+
+        if (userId == UserHandle.USER_SYSTEM) {
+            // The call log and MMS/SMS messages are shared across user profiles. So only need to
+            // register the content observers once for the primary user.
+            // TODO: Register observers after the conversations and events being loaded from disk.
+            mContext.getContentResolver().registerContentObserver(
+                    CallLog.CONTENT_URI, /* notifyForDescendants= */ true,
+                    mCallLogContentObserver, UserHandle.USER_SYSTEM);
+            mContext.getContentResolver().registerContentObserver(
+                    MmsSms.CONTENT_URI, /* notifyForDescendants= */ false,
+                    mMmsSmsContentObserver, UserHandle.USER_SYSTEM);
+        }
     }
 
     /** This method is called when a user is stopped. */
@@ -183,6 +207,10 @@
                 // Should never occur for local calls.
             }
         }
+        if (userId == UserHandle.USER_SYSTEM) {
+            mContext.getContentResolver().unregisterContentObserver(mCallLogContentObserver);
+            mContext.getContentResolver().unregisterContentObserver(mMmsSmsContentObserver);
+        }
     }
 
     /**
@@ -199,6 +227,13 @@
         }
     }
 
+    /** Gets the {@link PackageData} for the given package and user. */
+    @Nullable
+    public PackageData getPackage(@NonNull String packageName, @UserIdInt int userId) {
+        UserData userData = getUnlockedUserData(userId);
+        return userData != null ? userData.getPackageData(packageName) : null;
+    }
+
     /** Gets the {@link ShortcutInfo} for the given shortcut ID. */
     @Nullable
     public ShortcutInfo getShortcut(@NonNull String packageName, @UserIdInt int userId,
@@ -212,20 +247,11 @@
     }
 
     /**
-     * Gets the conversation {@link ShareShortcutInfo}s from all packages owned by the calling user
-     * that match the specified {@link IntentFilter}.
+     * Gets the {@link ShareShortcutInfo}s from all packages owned by the calling user that match
+     * the specified {@link IntentFilter}.
      */
-    public List<ShareShortcutInfo> getConversationShareTargets(
-            @NonNull IntentFilter intentFilter) {
-        List<ShareShortcutInfo> shareShortcuts = mShortcutManager.getShareTargets(intentFilter);
-        List<ShareShortcutInfo> result = new ArrayList<>();
-        for (ShareShortcutInfo shareShortcut : shareShortcuts) {
-            ShortcutInfo si = shareShortcut.getShortcutInfo();
-            if (getConversationInfo(si.getPackage(), si.getUserId(), si.getId()) != null) {
-                result.add(shareShortcut);
-            }
-        }
-        return result;
+    public List<ShareShortcutInfo> getShareShortcuts(@NonNull IntentFilter intentFilter) {
+        return mShortcutManager.getShareTargets(intentFilter);
     }
 
     /** Reports the {@link AppTargetEvent} from App Prediction Manager. */
@@ -236,7 +262,7 @@
         if (shortcutInfo == null || event.getAction() != AppTargetEvent.ACTION_LAUNCH) {
             return;
         }
-        PackageData packageData = getPackageData(appTarget.getPackageName(),
+        PackageData packageData = getPackage(appTarget.getPackageName(),
                 appTarget.getUser().getIdentifier());
         if (packageData == null) {
             return;
@@ -273,8 +299,18 @@
                 | ShortcutQuery.FLAG_MATCH_PINNED | ShortcutQuery.FLAG_MATCH_PINNED_BY_ANY_LAUNCHER;
         return mShortcutServiceInternal.getShortcuts(
                 mInjector.getCallingUserId(), /*callingPackage=*/ PLATFORM_PACKAGE_NAME,
-                /*changedSince=*/ 0, packageName, shortcutIds, /*componentName=*/ null, queryFlags,
-                userId, MY_PID, MY_UID);
+                /*changedSince=*/ 0, packageName, shortcutIds, /*locusIds=*/ null,
+                /*componentName=*/ null, queryFlags, userId, MY_PID, MY_UID);
+    }
+
+    private void forAllUnlockedUsers(Consumer<UserData> consumer) {
+        for (int i = 0; i < mUserDataArray.size(); i++) {
+            int userId = mUserDataArray.keyAt(i);
+            UserData userData = mUserDataArray.get(userId);
+            if (userData.isUnlocked()) {
+                consumer.accept(userData);
+            }
+        }
     }
 
     @Nullable
@@ -283,24 +319,11 @@
         return userData != null && userData.isUnlocked() ? userData : null;
     }
 
-    @Nullable
-    private PackageData getPackageData(@NonNull String packageName, int userId) {
-        UserData userData = getUnlockedUserData(userId);
-        return userData != null ? userData.getPackageData(packageName) : null;
-    }
-
-    @Nullable
-    private ConversationInfo getConversationInfo(@NonNull String packageName, @UserIdInt int userId,
-            @NonNull String shortcutId) {
-        PackageData packageData = getPackageData(packageName, userId);
-        return packageData != null ? packageData.getConversationStore().getConversation(shortcutId)
-                : null;
-    }
-
     private void updateDefaultDialer(@NonNull UserData userData) {
         TelecomManager telecomManager = mContext.getSystemService(TelecomManager.class);
         String defaultDialer = telecomManager != null
-                ? telecomManager.getDefaultDialerPackage(userData.getUserId()) : null;
+                ? telecomManager.getDefaultDialerPackage(
+                        new UserHandle(userData.getUserId())) : null;
         userData.setDefaultDialer(defaultDialer);
     }
 
@@ -318,7 +341,7 @@
         if (shortcutId == null) {
             return null;
         }
-        PackageData packageData = getPackageData(sbn.getPackageName(),
+        PackageData packageData = getPackage(sbn.getPackageName(),
                 sbn.getUser().getIdentifier());
         if (packageData == null
                 || packageData.getConversationStore().getConversation(shortcutId) == null) {
@@ -370,45 +393,30 @@
     }
 
     @VisibleForTesting
-    @WorkerThread
-    void queryUsageStatsService(@UserIdInt int userId, long currentTime, long lastQueryTime) {
-        UsageEvents usageEvents = mUsageStatsManagerInternal.queryEventsForUser(
-                userId, lastQueryTime, currentTime, false);
-        if (usageEvents == null) {
-            return;
-        }
-        while (usageEvents.hasNextEvent()) {
-            UsageEvents.Event e = new UsageEvents.Event();
-            usageEvents.getNextEvent(e);
-
-            String packageName = e.getPackageName();
-            PackageData packageData = getPackageData(packageName, userId);
-            if (packageData == null) {
-                continue;
-            }
-            if (e.getEventType() == UsageEvents.Event.SHORTCUT_INVOCATION) {
-                String shortcutId = e.getShortcutId();
-                if (packageData.getConversationStore().getConversation(shortcutId) != null) {
-                    EventHistoryImpl eventHistory =
-                            packageData.getEventStore().getOrCreateShortcutEventHistory(
-                                    shortcutId);
-                    eventHistory.addEvent(
-                            new Event(e.getTimeStamp(), Event.TYPE_SHORTCUT_INVOCATION));
-                }
-            }
-        }
-    }
-
-    @VisibleForTesting
     ContentObserver getContactsContentObserverForTesting(@UserIdInt int userId) {
         return mContactsContentObservers.get(userId);
     }
 
     @VisibleForTesting
+    ContentObserver getCallLogContentObserverForTesting() {
+        return mCallLogContentObserver;
+    }
+
+    @VisibleForTesting
+    ContentObserver getMmsSmsContentObserverForTesting() {
+        return mMmsSmsContentObserver;
+    }
+
+    @VisibleForTesting
     NotificationListenerService getNotificationListenerServiceForTesting(@UserIdInt int userId) {
         return mNotificationListeners.get(userId);
     }
 
+    @VisibleForTesting
+    UserData getUserDataForTesting(@UserIdInt int userId) {
+        return mUserDataArray.get(userId);
+    }
+
     /** Observer that observes the changes in the Contacts database. */
     private class ContactsContentObserver extends ContentObserver {
 
@@ -459,6 +467,88 @@
         }
     }
 
+    /** Observer that observes the changes in the call log database. */
+    private class CallLogContentObserver extends ContentObserver implements
+            BiConsumer<String, Event> {
+
+        private final CallLogQueryHelper mCallLogQueryHelper;
+        private long mLastCallTimestamp;
+
+        private CallLogContentObserver(Handler handler) {
+            super(handler);
+            mCallLogQueryHelper = mInjector.createCallLogQueryHelper(mContext, this);
+            mLastCallTimestamp = System.currentTimeMillis() - QUERY_EVENTS_MAX_AGE_MS;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            if (mCallLogQueryHelper.querySince(mLastCallTimestamp)) {
+                mLastCallTimestamp = mCallLogQueryHelper.getLastCallTimestamp();
+            }
+        }
+
+        @Override
+        public void accept(String phoneNumber, Event event) {
+            forAllUnlockedUsers(userData -> {
+                PackageData defaultDialer = userData.getDefaultDialer();
+                if (defaultDialer == null) {
+                    return;
+                }
+                ConversationStore conversationStore = defaultDialer.getConversationStore();
+                if (conversationStore.getConversationByPhoneNumber(phoneNumber) == null) {
+                    return;
+                }
+                EventStore eventStore = defaultDialer.getEventStore();
+                eventStore.getOrCreateCallEventHistory(phoneNumber).addEvent(event);
+            });
+        }
+    }
+
+    /** Observer that observes the changes in the MMS & SMS database. */
+    private class MmsSmsContentObserver extends ContentObserver implements
+            BiConsumer<String, Event> {
+
+        private final MmsQueryHelper mMmsQueryHelper;
+        private long mLastMmsTimestamp;
+
+        private final SmsQueryHelper mSmsQueryHelper;
+        private long mLastSmsTimestamp;
+
+        private MmsSmsContentObserver(Handler handler) {
+            super(handler);
+            mMmsQueryHelper = mInjector.createMmsQueryHelper(mContext, this);
+            mSmsQueryHelper = mInjector.createSmsQueryHelper(mContext, this);
+            mLastSmsTimestamp = mLastMmsTimestamp =
+                    System.currentTimeMillis() - QUERY_EVENTS_MAX_AGE_MS;
+        }
+
+        @Override
+        public void onChange(boolean selfChange) {
+            if (mMmsQueryHelper.querySince(mLastMmsTimestamp)) {
+                mLastMmsTimestamp = mMmsQueryHelper.getLastMessageTimestamp();
+            }
+            if (mSmsQueryHelper.querySince(mLastSmsTimestamp)) {
+                mLastSmsTimestamp = mSmsQueryHelper.getLastMessageTimestamp();
+            }
+        }
+
+        @Override
+        public void accept(String phoneNumber, Event event) {
+            forAllUnlockedUsers(userData -> {
+                PackageData defaultSmsApp = userData.getDefaultSmsApp();
+                if (defaultSmsApp == null) {
+                    return;
+                }
+                ConversationStore conversationStore = defaultSmsApp.getConversationStore();
+                if (conversationStore.getConversationByPhoneNumber(phoneNumber) == null) {
+                    return;
+                }
+                EventStore eventStore = defaultSmsApp.getEventStore();
+                eventStore.getOrCreateSmsEventHistory(phoneNumber).addEvent(event);
+            });
+        }
+    }
+
     /** Listener for the shortcut data changes. */
     private class ShortcutServiceListener implements
             ShortcutServiceInternal.ShortcutChangeListener {
@@ -491,6 +581,44 @@
             long currentTime = System.currentTimeMillis();
             eventHistory.addEvent(new Event(currentTime, Event.TYPE_NOTIFICATION_OPENED));
         }
+
+        @Override
+        public void onNotificationChannelModified(String pkg, UserHandle user,
+                NotificationChannel channel, int modificationType) {
+            PackageData packageData = getPackage(pkg, user.getIdentifier());
+            String shortcutId = channel.getConversationId();
+            if (packageData == null || shortcutId == null) {
+                return;
+            }
+            ConversationStore conversationStore = packageData.getConversationStore();
+            ConversationInfo conversationInfo = conversationStore.getConversation(shortcutId);
+            if (conversationInfo == null) {
+                return;
+            }
+            ConversationInfo.Builder builder = new ConversationInfo.Builder(conversationInfo);
+            switch (modificationType) {
+                case NOTIFICATION_CHANNEL_OR_GROUP_ADDED:
+                case NOTIFICATION_CHANNEL_OR_GROUP_UPDATED:
+                    builder.setNotificationChannelId(channel.getId());
+                    builder.setImportant(channel.isImportantConversation());
+                    builder.setDemoted(channel.isDemoted());
+                    builder.setNotificationSilenced(
+                            channel.getImportance() <= NotificationManager.IMPORTANCE_LOW);
+                    builder.setBubbled(channel.canBubble());
+                    break;
+                case NOTIFICATION_CHANNEL_OR_GROUP_DELETED:
+                    // If the notification channel is deleted, revert all the notification settings
+                    // to the default value.
+                    builder.setNotificationChannelId(null);
+                    builder.setImportant(false);
+                    builder.setDemoted(false);
+                    builder.setNotificationSilenced(false);
+                    builder.setBubbled(false);
+                    break;
+            }
+            conversationStore.addOrUpdate(builder.build());
+            // TODO: Cache the shortcut when a conversation's notification setting is changed.
+        }
     }
 
     /**
@@ -499,19 +627,20 @@
      */
     private class UsageStatsQueryRunnable implements Runnable {
 
-        private final int mUserId;
-        private long mLastQueryTime;
+        private final UsageStatsQueryHelper mUsageStatsQueryHelper;
+        private long mLastEventTimestamp;
 
         private UsageStatsQueryRunnable(int userId) {
-            mUserId = userId;
-            mLastQueryTime = System.currentTimeMillis() - USAGE_STATS_QUERY_MAX_EVENT_AGE_MS;
+            mUsageStatsQueryHelper = mInjector.createUsageStatsQueryHelper(userId,
+                    (packageName) -> getPackage(packageName, userId));
+            mLastEventTimestamp = System.currentTimeMillis() - QUERY_EVENTS_MAX_AGE_MS;
         }
 
         @Override
         public void run() {
-            long currentTime = System.currentTimeMillis();
-            queryUsageStatsService(mUserId, currentTime, mLastQueryTime);
-            mLastQueryTime = currentTime;
+            if (mUsageStatsQueryHelper.querySince(mLastEventTimestamp)) {
+                mLastEventTimestamp = mUsageStatsQueryHelper.getLastEventTimestamp();
+            }
         }
     }
 
@@ -541,6 +670,14 @@
         }
     }
 
+    private class ShutdownBroadcastReceiver extends BroadcastReceiver {
+
+        @Override
+        public void onReceive(Context context, Intent intent) {
+            forAllPackages(PackageData::saveToDisk);
+        }
+    }
+
     @VisibleForTesting
     static class Injector {
 
@@ -552,6 +689,26 @@
             return new ContactsQueryHelper(context);
         }
 
+        CallLogQueryHelper createCallLogQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            return new CallLogQueryHelper(context, eventConsumer);
+        }
+
+        MmsQueryHelper createMmsQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            return new MmsQueryHelper(context, eventConsumer);
+        }
+
+        SmsQueryHelper createSmsQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            return new SmsQueryHelper(context, eventConsumer);
+        }
+
+        UsageStatsQueryHelper createUsageStatsQueryHelper(@UserIdInt int userId,
+                Function<String, PackageData> packageDataGetter) {
+            return new UsageStatsQueryHelper(userId, packageDataGetter);
+        }
+
         int getCallingUserId() {
             return Binder.getCallingUserHandle().getIdentifier();
         }
diff --git a/services/people/java/com/android/server/people/data/Event.java b/services/people/java/com/android/server/people/data/Event.java
index c2364a2..81411c0 100644
--- a/services/people/java/com/android/server/people/data/Event.java
+++ b/services/people/java/com/android/server/people/data/Event.java
@@ -18,14 +18,12 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
-import android.annotation.Nullable;
 import android.text.format.DateFormat;
 import android.util.ArraySet;
 
-import com.android.internal.util.Preconditions;
-
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
+import java.util.Objects;
 import java.util.Set;
 
 /** An event representing the interaction with a specific conversation or app. */
@@ -55,6 +53,8 @@
 
     public static final int TYPE_CALL_MISSED = 12;
 
+    public static final int TYPE_IN_APP_CONVERSATION = 13;
+
     @IntDef(prefix = { "TYPE_" }, value = {
             TYPE_SHORTCUT_INVOCATION,
             TYPE_NOTIFICATION_POSTED,
@@ -68,6 +68,7 @@
             TYPE_CALL_OUTGOING,
             TYPE_CALL_INCOMING,
             TYPE_CALL_MISSED,
+            TYPE_IN_APP_CONVERSATION,
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface EventType {}
@@ -95,6 +96,7 @@
         CALL_EVENT_TYPES.add(TYPE_CALL_MISSED);
 
         ALL_EVENT_TYPES.add(TYPE_SHORTCUT_INVOCATION);
+        ALL_EVENT_TYPES.add(TYPE_IN_APP_CONVERSATION);
         ALL_EVENT_TYPES.addAll(NOTIFICATION_EVENT_TYPES);
         ALL_EVENT_TYPES.addAll(SHARE_EVENT_TYPES);
         ALL_EVENT_TYPES.addAll(SMS_EVENT_TYPES);
@@ -105,18 +107,18 @@
 
     private final int mType;
 
-    private final CallDetails mCallDetails;
+    private final int mDurationSeconds;
 
     Event(long timestamp, @EventType int type) {
         mTimestamp = timestamp;
         mType = type;
-        mCallDetails = null;
+        mDurationSeconds = 0;
     }
 
     private Event(@NonNull Builder builder) {
         mTimestamp = builder.mTimestamp;
         mType = builder.mType;
-        mCallDetails = builder.mCallDetails;
+        mDurationSeconds = builder.mDurationSeconds;
     }
 
     public long getTimestamp() {
@@ -128,12 +130,35 @@
     }
 
     /**
-     * Gets the {@link CallDetails} of the event. It is only available if the event type is one of
-     * {@code CALL_EVENT_TYPES}, otherwise, it's always {@code null}.
+     * Gets the duration of the event in seconds. It is only available for these events:
+     * <ul>
+     *     <li>{@link #TYPE_CALL_INCOMING}
+     *     <li>{@link #TYPE_CALL_OUTGOING}
+     *     <li>{@link #TYPE_IN_APP_CONVERSATION}
+     * </ul>
+     * <p>For the other event types, it always returns {@code 0}.
      */
-    @Nullable
-    public CallDetails getCallDetails() {
-        return mCallDetails;
+    public int getDurationSeconds() {
+        return mDurationSeconds;
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (!(obj instanceof Event)) {
+            return false;
+        }
+        Event other = (Event) obj;
+        return mTimestamp == other.mTimestamp
+                && mType == other.mType
+                && mDurationSeconds == other.mDurationSeconds;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mTimestamp, mType, mDurationSeconds);
     }
 
     @Override
@@ -142,32 +167,13 @@
         sb.append("Event {");
         sb.append("timestamp=").append(DateFormat.format("yyyy-MM-dd HH:mm:ss", mTimestamp));
         sb.append(", type=").append(mType);
-        if (mCallDetails != null) {
-            sb.append(", callDetails=").append(mCallDetails);
+        if (mDurationSeconds > 0) {
+            sb.append(", durationSeconds=").append(mDurationSeconds);
         }
         sb.append("}");
         return sb.toString();
     }
 
-    /** Type-specific details of a call event. */
-    public static class CallDetails {
-
-        private final long mDurationSeconds;
-
-        CallDetails(long durationSeconds) {
-            mDurationSeconds = durationSeconds;
-        }
-
-        public long getDurationSeconds() {
-            return mDurationSeconds;
-        }
-
-        @Override
-        public String toString() {
-            return "CallDetails {durationSeconds=" + mDurationSeconds + "}";
-        }
-    }
-
     /** Builder class for {@link Event} objects. */
     static class Builder {
 
@@ -175,16 +181,15 @@
 
         private final int mType;
 
-        private CallDetails mCallDetails;
+        private int mDurationSeconds;
 
         Builder(long timestamp, @EventType int type) {
             mTimestamp = timestamp;
             mType = type;
         }
 
-        Builder setCallDetails(CallDetails callDetails) {
-            Preconditions.checkArgument(CALL_EVENT_TYPES.contains(mType));
-            mCallDetails = callDetails;
+        Builder setDurationSeconds(int durationSeconds) {
+            mDurationSeconds = durationSeconds;
             return this;
         }
 
diff --git a/services/people/java/com/android/server/people/data/MmsQueryHelper.java b/services/people/java/com/android/server/people/data/MmsQueryHelper.java
new file mode 100644
index 0000000..1e485c0
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/MmsQueryHelper.java
@@ -0,0 +1,151 @@
+/*
+ * 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.server.people.data;
+
+import android.annotation.Nullable;
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.database.Cursor;
+import android.net.Uri;
+import android.provider.Telephony.BaseMmsColumns;
+import android.provider.Telephony.Mms;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Slog;
+import android.util.SparseIntArray;
+
+import com.google.android.mms.pdu.PduHeaders;
+
+import java.util.function.BiConsumer;
+
+/** A helper class that queries the MMS database tables. */
+class MmsQueryHelper {
+
+    private static final String TAG = "MmsQueryHelper";
+    private static final long MILLIS_PER_SECONDS = 1000L;
+    private static final SparseIntArray MSG_BOX_TO_EVENT_TYPE = new SparseIntArray();
+
+    static {
+        MSG_BOX_TO_EVENT_TYPE.put(BaseMmsColumns.MESSAGE_BOX_INBOX, Event.TYPE_SMS_INCOMING);
+        MSG_BOX_TO_EVENT_TYPE.put(BaseMmsColumns.MESSAGE_BOX_SENT, Event.TYPE_SMS_OUTGOING);
+    }
+
+    private final Context mContext;
+    private final BiConsumer<String, Event> mEventConsumer;
+    private long mLastMessageTimestamp;
+    private String mCurrentCountryIso;
+
+    /**
+     * @param context Context for accessing the content resolver.
+     * @param eventConsumer Consumes the events created from the message records. The first input
+     *                      param is the normalized phone number.
+     */
+    MmsQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+        mContext = context;
+        mEventConsumer = eventConsumer;
+        mCurrentCountryIso = Utils.getCurrentCountryIso(mContext);
+    }
+
+    /**
+     * Queries the MMS database tables for the new data added since {@code sinceTime} (in millis)
+     * and returns true if the query runs successfully and at least one message entry is found.
+     */
+    @WorkerThread
+    boolean querySince(long sinceTime) {
+        String[] projection = new String[] { Mms._ID, Mms.DATE, Mms.MESSAGE_BOX };
+        String selection = Mms.DATE + " > ?";
+        // NOTE: The field Mms.DATE is stored in seconds, not milliseconds.
+        String[] selectionArgs = new String[] { Long.toString(sinceTime / MILLIS_PER_SECONDS) };
+        boolean hasResults = false;
+        try (Cursor cursor = mContext.getContentResolver().query(
+                Mms.CONTENT_URI, projection, selection, selectionArgs, null)) {
+            if (cursor == null) {
+                Slog.w(TAG, "Cursor is null when querying MMS table.");
+                return false;
+            }
+            while (cursor.moveToNext()) {
+                // ID
+                int msgIdIndex = cursor.getColumnIndex(Mms._ID);
+                String msgId = cursor.getString(msgIdIndex);
+
+                // Date
+                int dateIndex = cursor.getColumnIndex(Mms.DATE);
+                long date = cursor.getLong(dateIndex) * MILLIS_PER_SECONDS;
+
+                // Message box
+                int msgBoxIndex = cursor.getColumnIndex(Mms.MESSAGE_BOX);
+                int msgBox = cursor.getInt(msgBoxIndex);
+
+                mLastMessageTimestamp = Math.max(mLastMessageTimestamp, date);
+                String address = getMmsAddress(msgId, msgBox);
+                if (address != null && addEvent(address, date, msgBox)) {
+                    hasResults = true;
+                }
+            }
+        }
+        return hasResults;
+    }
+
+    long getLastMessageTimestamp() {
+        return mLastMessageTimestamp;
+    }
+
+    @Nullable
+    private String getMmsAddress(String msgId, int msgBox) {
+        Uri addressUri = Mms.Addr.getAddrUriForMessage(msgId);
+        String[] projection = new String[] { Mms.Addr.ADDRESS, Mms.Addr.TYPE };
+        String address = null;
+        try (Cursor cursor = mContext.getContentResolver().query(
+                addressUri, projection, null, null, null)) {
+            if (cursor == null) {
+                Slog.w(TAG, "Cursor is null when querying MMS address table.");
+                return null;
+            }
+            while (cursor.moveToNext()) {
+                // Type
+                int typeIndex = cursor.getColumnIndex(Mms.Addr.TYPE);
+                int type = cursor.getInt(typeIndex);
+
+                if ((msgBox == BaseMmsColumns.MESSAGE_BOX_INBOX && type == PduHeaders.FROM)
+                        || (msgBox == BaseMmsColumns.MESSAGE_BOX_SENT && type == PduHeaders.TO)) {
+                    // Address
+                    int addrIndex = cursor.getColumnIndex(Mms.Addr.ADDRESS);
+                    address = cursor.getString(addrIndex);
+                }
+            }
+        }
+        if (!Mms.isPhoneNumber(address)) {
+            return null;
+        }
+        return PhoneNumberUtils.formatNumberToE164(address, mCurrentCountryIso);
+    }
+
+    private boolean addEvent(String phoneNumber, long date, int msgBox) {
+        if (!validateEvent(phoneNumber, date, msgBox)) {
+            return false;
+        }
+        @Event.EventType int eventType  = MSG_BOX_TO_EVENT_TYPE.get(msgBox);
+        mEventConsumer.accept(phoneNumber, new Event(date, eventType));
+        return true;
+    }
+
+    private boolean validateEvent(String phoneNumber, long date, int msgBox) {
+        return !TextUtils.isEmpty(phoneNumber)
+                && date > 0L
+                && MSG_BOX_TO_EVENT_TYPE.indexOfKey(msgBox) >= 0;
+    }
+}
diff --git a/services/people/java/com/android/server/people/data/PackageData.java b/services/people/java/com/android/server/people/data/PackageData.java
index 9c22a7f..f67699c 100644
--- a/services/people/java/com/android/server/people/data/PackageData.java
+++ b/services/people/java/com/android/server/people/data/PackageData.java
@@ -17,11 +17,15 @@
 package com.android.server.people.data;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.UserIdInt;
 import android.content.LocusId;
 import android.text.TextUtils;
 
+import java.io.File;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.function.Consumer;
+import java.util.function.Predicate;
 
 /** The data associated with a package. */
 public class PackageData {
@@ -37,15 +41,38 @@
     @NonNull
     private final EventStore mEventStore;
 
-    private boolean mIsDefaultDialer;
+    private final Predicate<String> mIsDefaultDialerPredicate;
 
-    private boolean mIsDefaultSmsApp;
+    private final Predicate<String> mIsDefaultSmsAppPredicate;
 
-    PackageData(@NonNull String packageName, @UserIdInt int userId) {
+    private final File mPackageDataDir;
+
+    PackageData(@NonNull String packageName, @UserIdInt int userId,
+            @NonNull Predicate<String> isDefaultDialerPredicate,
+            @NonNull Predicate<String> isDefaultSmsAppPredicate,
+            @NonNull ScheduledExecutorService scheduledExecutorService,
+            @NonNull File perUserPeopleDataDir,
+            @NonNull ContactsQueryHelper helper) {
         mPackageName = packageName;
         mUserId = userId;
-        mConversationStore = new ConversationStore();
+
+        mPackageDataDir = new File(perUserPeopleDataDir, mPackageName);
+        mConversationStore = new ConversationStore(mPackageDataDir, scheduledExecutorService,
+                helper);
         mEventStore = new EventStore();
+        mIsDefaultDialerPredicate = isDefaultDialerPredicate;
+        mIsDefaultSmsAppPredicate = isDefaultSmsAppPredicate;
+    }
+
+    /** Called when user is unlocked. */
+    void loadFromDisk() {
+        mPackageDataDir.mkdirs();
+        mConversationStore.loadConversationsFromDisk();
+    }
+
+    /** Called when device is shutting down. */
+    void saveToDisk() {
+        mConversationStore.saveConversationsToDisk();
     }
 
     @NonNull
@@ -68,6 +95,15 @@
     }
 
     /**
+     * Gets the {@link ConversationInfo} for a given shortcut ID. Returns null if such as {@link
+     * ConversationInfo} does not exist.
+     */
+    @Nullable
+    public ConversationInfo getConversationInfo(@NonNull String shortcutId) {
+        return getConversationStore().getConversation(shortcutId);
+    }
+
+    /**
      * Gets the combined {@link EventHistory} for a given shortcut ID. This returned {@link
      * EventHistory} has events of all types, no matter whether they're annotated with shortcut ID,
      * Locus ID, or phone number etc.
@@ -114,11 +150,11 @@
     }
 
     public boolean isDefaultDialer() {
-        return mIsDefaultDialer;
+        return mIsDefaultDialerPredicate.test(mPackageName);
     }
 
     public boolean isDefaultSmsApp() {
-        return mIsDefaultSmsApp;
+        return mIsDefaultSmsAppPredicate.test(mPackageName);
     }
 
     @NonNull
@@ -131,14 +167,6 @@
         return mEventStore;
     }
 
-    void setIsDefaultDialer(boolean value) {
-        mIsDefaultDialer = value;
-    }
-
-    void setIsDefaultSmsApp(boolean value) {
-        mIsDefaultSmsApp = value;
-    }
-
     void onDestroy() {
         // TODO: STOPSHIP: Implements this method for the case of package being uninstalled.
     }
diff --git a/services/people/java/com/android/server/people/data/SmsQueryHelper.java b/services/people/java/com/android/server/people/data/SmsQueryHelper.java
new file mode 100644
index 0000000..c38c846
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/SmsQueryHelper.java
@@ -0,0 +1,119 @@
+/*
+ * 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.server.people.data;
+
+import android.annotation.WorkerThread;
+import android.content.Context;
+import android.database.Cursor;
+import android.provider.Telephony.Sms;
+import android.provider.Telephony.TextBasedSmsColumns;
+import android.telephony.PhoneNumberUtils;
+import android.text.TextUtils;
+import android.util.Slog;
+import android.util.SparseIntArray;
+
+import java.util.function.BiConsumer;
+
+/** A helper class that queries the SMS database table. */
+class SmsQueryHelper {
+
+    private static final String TAG = "SmsQueryHelper";
+    private static final SparseIntArray SMS_TYPE_TO_EVENT_TYPE = new SparseIntArray();
+
+    static {
+        SMS_TYPE_TO_EVENT_TYPE.put(TextBasedSmsColumns.MESSAGE_TYPE_INBOX, Event.TYPE_SMS_INCOMING);
+        SMS_TYPE_TO_EVENT_TYPE.put(TextBasedSmsColumns.MESSAGE_TYPE_SENT, Event.TYPE_SMS_OUTGOING);
+    }
+
+    private final Context mContext;
+    private final BiConsumer<String, Event> mEventConsumer;
+    private final String mCurrentCountryIso;
+    private long mLastMessageTimestamp;
+
+    /**
+     * @param context Context for accessing the content resolver.
+     * @param eventConsumer Consumes the events created from the message records. The first input
+     *                      param is the normalized phone number.
+     */
+    SmsQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+        mContext = context;
+        mEventConsumer = eventConsumer;
+        mCurrentCountryIso = Utils.getCurrentCountryIso(mContext);
+    }
+
+    /**
+     * Queries the SMS database tables for the new data added since {@code sinceTime} (in millis)
+     * and returns true if the query runs successfully and at least one message entry is found.
+     */
+    @WorkerThread
+    boolean querySince(long sinceTime) {
+        String[] projection = new String[] { Sms._ID, Sms.DATE, Sms.TYPE, Sms.ADDRESS };
+        String selection = Sms.DATE + " > ?";
+        String[] selectionArgs = new String[] { Long.toString(sinceTime) };
+        boolean hasResults = false;
+        try (Cursor cursor = mContext.getContentResolver().query(
+                Sms.CONTENT_URI, projection, selection, selectionArgs, null)) {
+            if (cursor == null) {
+                Slog.w(TAG, "Cursor is null when querying SMS table.");
+                return false;
+            }
+            while (cursor.moveToNext()) {
+                // ID
+                int msgIdIndex = cursor.getColumnIndex(Sms._ID);
+                String msgId = cursor.getString(msgIdIndex);
+
+                // Date
+                int dateIndex = cursor.getColumnIndex(Sms.DATE);
+                long date = cursor.getLong(dateIndex);
+
+                // Type
+                int typeIndex = cursor.getColumnIndex(Sms.TYPE);
+                int type = cursor.getInt(typeIndex);
+
+                // Address
+                int addressIndex = cursor.getColumnIndex(Sms.ADDRESS);
+                String address = PhoneNumberUtils.formatNumberToE164(
+                        cursor.getString(addressIndex), mCurrentCountryIso);
+
+                mLastMessageTimestamp = Math.max(mLastMessageTimestamp, date);
+                if (address != null && addEvent(address, date, type)) {
+                    hasResults = true;
+                }
+            }
+        }
+        return hasResults;
+    }
+
+    long getLastMessageTimestamp() {
+        return mLastMessageTimestamp;
+    }
+
+    private boolean addEvent(String phoneNumber, long date, int type) {
+        if (!validateEvent(phoneNumber, date, type)) {
+            return false;
+        }
+        @Event.EventType int eventType  = SMS_TYPE_TO_EVENT_TYPE.get(type);
+        mEventConsumer.accept(phoneNumber, new Event(date, eventType));
+        return true;
+    }
+
+    private boolean validateEvent(String phoneNumber, long date, int type) {
+        return !TextUtils.isEmpty(phoneNumber)
+                && date > 0L
+                && SMS_TYPE_TO_EVENT_TYPE.indexOfKey(type) >= 0;
+    }
+}
diff --git a/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java b/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java
new file mode 100644
index 0000000..644c155
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/UsageStatsQueryHelper.java
@@ -0,0 +1,158 @@
+/*
+ * 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.server.people.data;
+
+import android.annotation.NonNull;
+import android.annotation.UserIdInt;
+import android.app.usage.UsageEvents;
+import android.app.usage.UsageStatsManagerInternal;
+import android.content.ComponentName;
+import android.content.LocusId;
+import android.text.format.DateUtils;
+import android.util.ArrayMap;
+
+import com.android.server.LocalServices;
+
+import java.util.Map;
+import java.util.function.Function;
+
+/** A helper class that queries {@link UsageStatsManagerInternal}. */
+class UsageStatsQueryHelper {
+
+    private final UsageStatsManagerInternal mUsageStatsManagerInternal;
+    private final int mUserId;
+    private final Function<String, PackageData> mPackageDataGetter;
+    // Activity name -> Conversation start event (LOCUS_ID_SET)
+    private final Map<ComponentName, UsageEvents.Event> mConvoStartEvents = new ArrayMap<>();
+    private long mLastEventTimestamp;
+
+    /**
+     * @param userId The user whose events are to be queried.
+     * @param packageDataGetter The function to get {@link PackageData} with a package name.
+     */
+    UsageStatsQueryHelper(@UserIdInt int userId,
+            Function<String, PackageData> packageDataGetter) {
+        mUsageStatsManagerInternal = LocalServices.getService(UsageStatsManagerInternal.class);
+        mUserId = userId;
+        mPackageDataGetter = packageDataGetter;
+    }
+
+    /**
+     * Queries {@link UsageStatsManagerInternal} for the recent events occurred since {@code
+     * sinceTime} and adds the derived {@link Event}s into the corresponding package's event store,
+     *
+     * @return true if the query runs successfully and at least one event is found.
+     */
+    boolean querySince(long sinceTime) {
+        UsageEvents usageEvents = mUsageStatsManagerInternal.queryEventsForUser(
+                mUserId, sinceTime, System.currentTimeMillis(), false, false, false);
+        if (usageEvents == null) {
+            return false;
+        }
+        boolean hasEvents = false;
+        while (usageEvents.hasNextEvent()) {
+            UsageEvents.Event e = new UsageEvents.Event();
+            usageEvents.getNextEvent(e);
+
+            hasEvents = true;
+            mLastEventTimestamp = Math.max(mLastEventTimestamp, e.getTimeStamp());
+            String packageName = e.getPackageName();
+            PackageData packageData = mPackageDataGetter.apply(packageName);
+            if (packageData == null) {
+                continue;
+            }
+            switch (e.getEventType()) {
+                case UsageEvents.Event.SHORTCUT_INVOCATION:
+                    addEventByShortcutId(packageData, e.getShortcutId(),
+                            new Event(e.getTimeStamp(), Event.TYPE_SHORTCUT_INVOCATION));
+                    break;
+                case UsageEvents.Event.NOTIFICATION_INTERRUPTION:
+                    addEventByNotificationChannelId(packageData, e.getNotificationChannelId(),
+                            new Event(e.getTimeStamp(), Event.TYPE_NOTIFICATION_POSTED));
+                    break;
+                case UsageEvents.Event.LOCUS_ID_SET:
+                    onInAppConversationEnded(packageData, e);
+                    LocusId locusId = e.getLocusId() != null ? new LocusId(e.getLocusId()) : null;
+                    if (locusId != null) {
+                        if (packageData.getConversationStore().getConversationByLocusId(locusId)
+                                != null) {
+                            ComponentName activityName =
+                                    new ComponentName(packageName, e.getClassName());
+                            mConvoStartEvents.put(activityName, e);
+                        }
+                    }
+                    break;
+                case UsageEvents.Event.ACTIVITY_PAUSED:
+                case UsageEvents.Event.ACTIVITY_STOPPED:
+                case UsageEvents.Event.ACTIVITY_DESTROYED:
+                    onInAppConversationEnded(packageData, e);
+                    break;
+            }
+        }
+        return hasEvents;
+    }
+
+    long getLastEventTimestamp() {
+        return mLastEventTimestamp;
+    }
+
+    private void onInAppConversationEnded(@NonNull PackageData packageData,
+            @NonNull UsageEvents.Event endEvent) {
+        ComponentName activityName =
+                new ComponentName(endEvent.getPackageName(), endEvent.getClassName());
+        UsageEvents.Event startEvent = mConvoStartEvents.remove(activityName);
+        if (startEvent == null || startEvent.getTimeStamp() >= endEvent.getTimeStamp()) {
+            return;
+        }
+        long durationMillis = endEvent.getTimeStamp() - startEvent.getTimeStamp();
+        Event event = new Event.Builder(startEvent.getTimeStamp(), Event.TYPE_IN_APP_CONVERSATION)
+                .setDurationSeconds((int) (durationMillis / DateUtils.SECOND_IN_MILLIS))
+                .build();
+        addEventByLocusId(packageData, new LocusId(startEvent.getLocusId()), event);
+    }
+
+    private void addEventByShortcutId(PackageData packageData, String shortcutId, Event event) {
+        if (packageData.getConversationStore().getConversation(shortcutId) == null) {
+            return;
+        }
+        EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateShortcutEventHistory(
+                shortcutId);
+        eventHistory.addEvent(event);
+    }
+
+    private void addEventByLocusId(PackageData packageData, LocusId locusId, Event event) {
+        if (packageData.getConversationStore().getConversationByLocusId(locusId) == null) {
+            return;
+        }
+        EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateLocusEventHistory(
+                locusId);
+        eventHistory.addEvent(event);
+    }
+
+    private void addEventByNotificationChannelId(PackageData packageData,
+            String notificationChannelId, Event event) {
+        ConversationInfo conversationInfo =
+                packageData.getConversationStore().getConversationByNotificationChannelId(
+                        notificationChannelId);
+        if (conversationInfo == null) {
+            return;
+        }
+        EventHistoryImpl eventHistory = packageData.getEventStore().getOrCreateShortcutEventHistory(
+                conversationInfo.getShortcutId());
+        eventHistory.addEvent(event);
+    }
+}
diff --git a/services/people/java/com/android/server/people/data/UserData.java b/services/people/java/com/android/server/people/data/UserData.java
index 2c16059..aaa5db8 100644
--- a/services/people/java/com/android/server/people/data/UserData.java
+++ b/services/people/java/com/android/server/people/data/UserData.java
@@ -19,10 +19,13 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.UserIdInt;
+import android.os.Environment;
 import android.text.TextUtils;
 import android.util.ArrayMap;
 
+import java.io.File;
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.function.Consumer;
 
 /** The data associated with a user profile. */
@@ -30,12 +33,28 @@
 
     private final @UserIdInt int mUserId;
 
+    private final File mPerUserPeopleDataDir;
+
+    private final ScheduledExecutorService mScheduledExecutorService;
+
+    private final ContactsQueryHelper mHelper;
+
     private boolean mIsUnlocked;
 
     private Map<String, PackageData> mPackageDataMap = new ArrayMap<>();
 
-    UserData(@UserIdInt int userId) {
+    @Nullable
+    private String mDefaultDialer;
+
+    @Nullable
+    private String mDefaultSmsApp;
+
+    UserData(@UserIdInt int userId, @NonNull ScheduledExecutorService scheduledExecutorService,
+            ContactsQueryHelper helper) {
         mUserId = userId;
+        mPerUserPeopleDataDir = new File(Environment.getDataSystemCeDirectory(mUserId), "people");
+        mScheduledExecutorService = scheduledExecutorService;
+        mHelper = helper;
     }
 
     @UserIdInt int getUserId() {
@@ -50,6 +69,13 @@
 
     void setUserUnlocked() {
         mIsUnlocked = true;
+
+        // Ensures per user root directory for people data is present, and attempt to load
+        // data from disk.
+        mPerUserPeopleDataDir.mkdirs();
+        for (PackageData packageData : mPackageDataMap.values()) {
+            packageData.loadFromDisk();
+        }
     }
 
     void setUserStopped() {
@@ -66,8 +92,7 @@
      */
     @NonNull
     PackageData getOrCreatePackageData(String packageName) {
-        return mPackageDataMap.computeIfAbsent(
-                packageName, key -> new PackageData(packageName, mUserId));
+        return mPackageDataMap.computeIfAbsent(packageName, key -> createPackageData(packageName));
     }
 
     /**
@@ -80,24 +105,33 @@
     }
 
     void setDefaultDialer(@Nullable String packageName) {
-        for (PackageData packageData : mPackageDataMap.values()) {
-            if (packageData.isDefaultDialer()) {
-                packageData.setIsDefaultDialer(false);
-            }
-            if (TextUtils.equals(packageName, packageData.getPackageName())) {
-                packageData.setIsDefaultDialer(true);
-            }
-        }
+        mDefaultDialer = packageName;
+    }
+
+    @Nullable
+    PackageData getDefaultDialer() {
+        return mDefaultDialer != null ? getPackageData(mDefaultDialer) : null;
     }
 
     void setDefaultSmsApp(@Nullable String packageName) {
-        for (PackageData packageData : mPackageDataMap.values()) {
-            if (packageData.isDefaultSmsApp()) {
-                packageData.setIsDefaultSmsApp(false);
-            }
-            if (TextUtils.equals(packageName, packageData.getPackageName())) {
-                packageData.setIsDefaultSmsApp(true);
-            }
-        }
+        mDefaultSmsApp = packageName;
+    }
+
+    @Nullable
+    PackageData getDefaultSmsApp() {
+        return mDefaultSmsApp != null ? getPackageData(mDefaultSmsApp) : null;
+    }
+
+    private PackageData createPackageData(String packageName) {
+        return new PackageData(packageName, mUserId, this::isDefaultDialer, this::isDefaultSmsApp,
+                mScheduledExecutorService, mPerUserPeopleDataDir, mHelper);
+    }
+
+    private boolean isDefaultDialer(String packageName) {
+        return TextUtils.equals(mDefaultDialer, packageName);
+    }
+
+    private boolean isDefaultSmsApp(String packageName) {
+        return TextUtils.equals(mDefaultSmsApp, packageName);
     }
 }
diff --git a/services/people/java/com/android/server/people/data/Utils.java b/services/people/java/com/android/server/people/data/Utils.java
new file mode 100644
index 0000000..b752960
--- /dev/null
+++ b/services/people/java/com/android/server/people/data/Utils.java
@@ -0,0 +1,49 @@
+/*
+ * 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.server.people.data;
+
+import android.content.Context;
+import android.location.Country;
+import android.location.CountryDetector;
+
+import java.util.Locale;
+
+/** The utilities static methods for people service data package. */
+class Utils {
+
+    /**
+     * @return The ISO 3166-1 two letters country code of the country the user is in.
+     */
+    static String getCurrentCountryIso(Context context) {
+        String countryIso = null;
+        CountryDetector detector = (CountryDetector) context.getSystemService(
+                Context.COUNTRY_DETECTOR);
+        if (detector != null) {
+            Country country = detector.detectCountry();
+            if (country != null) {
+                countryIso = country.getCountryIso();
+            }
+        }
+        if (countryIso == null) {
+            countryIso = Locale.getDefault().getCountry();
+        }
+        return countryIso;
+    }
+
+    private Utils() {
+    }
+}
diff --git a/services/people/java/com/android/server/people/prediction/AppTargetPredictor.java b/services/people/java/com/android/server/people/prediction/AppTargetPredictor.java
new file mode 100644
index 0000000..44f3e35
--- /dev/null
+++ b/services/people/java/com/android/server/people/prediction/AppTargetPredictor.java
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2019 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.people.prediction;
+
+import android.annotation.MainThread;
+import android.annotation.NonNull;
+import android.annotation.WorkerThread;
+import android.app.prediction.AppPredictionContext;
+import android.app.prediction.AppTarget;
+import android.app.prediction.AppTargetEvent;
+import android.app.prediction.AppTargetId;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.server.people.data.DataManager;
+
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.function.Consumer;
+
+/**
+ * Predictor that predicts the {@link AppTarget} the user is most likely to open.
+ */
+public class AppTargetPredictor {
+
+    private static final String UI_SURFACE_SHARE = "share";
+
+    /** Creates a {@link AppTargetPredictor} instance based on the prediction context. */
+    public static AppTargetPredictor create(@NonNull AppPredictionContext predictionContext,
+            @NonNull Consumer<List<AppTarget>> updatePredictionsMethod,
+            @NonNull DataManager dataManager) {
+        if (UI_SURFACE_SHARE.equals(predictionContext.getUiSurface())) {
+            return new ShareTargetPredictor(
+                    predictionContext, updatePredictionsMethod, dataManager);
+        }
+        return new AppTargetPredictor(predictionContext, updatePredictionsMethod, dataManager);
+    }
+
+    private final AppPredictionContext mPredictionContext;
+    private final Consumer<List<AppTarget>> mUpdatePredictionsMethod;
+    private final DataManager mDataManager;
+    private final ExecutorService mCallbackExecutor;
+
+    AppTargetPredictor(@NonNull AppPredictionContext predictionContext,
+            @NonNull Consumer<List<AppTarget>> updatePredictionsMethod,
+            @NonNull DataManager dataManager) {
+        mPredictionContext = predictionContext;
+        mUpdatePredictionsMethod = updatePredictionsMethod;
+        mDataManager = dataManager;
+        mCallbackExecutor = Executors.newSingleThreadExecutor();
+    }
+
+    /**
+     * Called by the client app to indicate a target launch.
+     */
+    @MainThread
+    public void onAppTargetEvent(AppTargetEvent event) {
+    }
+
+    /**
+     * Called by the client app to indicate a particular location has been shown to the user.
+     */
+    @MainThread
+    public void onLaunchLocationShown(String launchLocation, List<AppTargetId> targetIds) {
+    }
+
+    /**
+     * Called by the client app to request sorting of the provided targets based on the prediction
+     * ranking.
+     */
+    @MainThread
+    public void onSortAppTargets(List<AppTarget> targets, Consumer<List<AppTarget>> callback) {
+        mCallbackExecutor.execute(() -> sortTargets(targets, callback));
+    }
+
+    /**
+     * Called by the client app to request target predictions.
+     */
+    @MainThread
+    public void onRequestPredictionUpdate() {
+        mCallbackExecutor.execute(this::predictTargets);
+    }
+
+    @VisibleForTesting
+    public Consumer<List<AppTarget>> getUpdatePredictionsMethod() {
+        return mUpdatePredictionsMethod;
+    }
+
+    /** To be overridden by the subclass to predict the targets. */
+    @WorkerThread
+    void predictTargets() {
+    }
+
+    /**
+     * To be overridden by the subclass to sort the provided targets based on the prediction
+     * ranking.
+     */
+    @WorkerThread
+    void sortTargets(List<AppTarget> targets, Consumer<List<AppTarget>> callback) {
+        callback.accept(targets);
+    }
+
+    AppPredictionContext getPredictionContext() {
+        return mPredictionContext;
+    }
+
+    DataManager getDataManager() {
+        return mDataManager;
+    }
+
+    void updatePredictions(List<AppTarget> targets) {
+        mUpdatePredictionsMethod.accept(targets);
+    }
+}
diff --git a/services/people/java/com/android/server/people/prediction/ConversationPredictor.java b/services/people/java/com/android/server/people/prediction/ConversationPredictor.java
deleted file mode 100644
index ed8a56b..0000000
--- a/services/people/java/com/android/server/people/prediction/ConversationPredictor.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright (C) 2019 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.people.prediction;
-
-import android.annotation.MainThread;
-import android.annotation.NonNull;
-import android.annotation.Nullable;
-import android.app.prediction.AppPredictionContext;
-import android.app.prediction.AppTarget;
-import android.app.prediction.AppTargetEvent;
-import android.app.prediction.AppTargetId;
-import android.content.IntentFilter;
-import android.content.pm.ShortcutInfo;
-import android.content.pm.ShortcutManager.ShareShortcutInfo;
-
-import com.android.internal.annotations.VisibleForTesting;
-import com.android.internal.app.ChooserActivity;
-import com.android.server.people.data.DataManager;
-import com.android.server.people.data.EventHistory;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-import java.util.function.Consumer;
-
-/**
- * Predictor that predicts the conversations or apps the user is most likely to open.
- */
-public class ConversationPredictor {
-
-    private static final String UI_SURFACE_SHARE = "share";
-
-    private final AppPredictionContext mPredictionContext;
-    private final Consumer<List<AppTarget>> mUpdatePredictionsMethod;
-    private final DataManager mDataManager;
-    private final ExecutorService mCallbackExecutor;
-    @Nullable
-    private final IntentFilter mIntentFilter;
-
-    public ConversationPredictor(@NonNull AppPredictionContext predictionContext,
-            @NonNull Consumer<List<AppTarget>> updatePredictionsMethod,
-            @NonNull DataManager dataManager) {
-        mPredictionContext = predictionContext;
-        mUpdatePredictionsMethod = updatePredictionsMethod;
-        mDataManager = dataManager;
-        mCallbackExecutor = Executors.newSingleThreadExecutor();
-        if (UI_SURFACE_SHARE.equals(mPredictionContext.getUiSurface())) {
-            mIntentFilter = mPredictionContext.getExtras().getParcelable(
-                    ChooserActivity.APP_PREDICTION_INTENT_FILTER_KEY);
-        } else {
-            mIntentFilter = null;
-        }
-    }
-
-    /**
-     * Called by the client app to indicate a target launch.
-     */
-    @MainThread
-    public void onAppTargetEvent(AppTargetEvent event) {
-        mDataManager.reportAppTargetEvent(event, mIntentFilter);
-    }
-
-    /**
-     * Called by the client app to indicate a particular location has been shown to the user.
-     */
-    @MainThread
-    public void onLaunchLocationShown(String launchLocation, List<AppTargetId> targetIds) {}
-
-    /**
-     * Called by the client app to request sorting of the provided targets based on the prediction
-     * ranking.
-     */
-    @MainThread
-    public void onSortAppTargets(List<AppTarget> targets, Consumer<List<AppTarget>> callback) {
-        mCallbackExecutor.execute(() -> callback.accept(targets));
-    }
-
-    /**
-     * Called by the client app to request target predictions.
-     */
-    @MainThread
-    public void onRequestPredictionUpdate() {
-        // TODO: Re-route the call to different ranking classes for different surfaces.
-        mCallbackExecutor.execute(() -> {
-            List<AppTarget> targets = new ArrayList<>();
-            if (mIntentFilter != null) {
-                List<ShareShortcutInfo> shareShortcuts =
-                        mDataManager.getConversationShareTargets(mIntentFilter);
-                for (ShareShortcutInfo shareShortcut : shareShortcuts) {
-                    ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo();
-                    AppTargetId appTargetId = new AppTargetId(shortcutInfo.getId());
-                    String shareTargetClass = shareShortcut.getTargetComponent().getClassName();
-                    targets.add(new AppTarget.Builder(appTargetId, shortcutInfo)
-                            .setClassName(shareTargetClass)
-                            .build());
-                }
-            } else {
-                List<ConversationData> conversationDataList = new ArrayList<>();
-                mDataManager.forAllPackages(packageData ->
-                        packageData.forAllConversations(conversationInfo -> {
-                            EventHistory eventHistory = packageData.getEventHistory(
-                                    conversationInfo.getShortcutId());
-                            ConversationData conversationData = new ConversationData(
-                                    packageData.getPackageName(), packageData.getUserId(),
-                                    conversationInfo, eventHistory);
-                            conversationDataList.add(conversationData);
-                        }));
-                for (ConversationData conversationData : conversationDataList) {
-                    String shortcutId = conversationData.getConversationInfo().getShortcutId();
-                    ShortcutInfo shortcut = mDataManager.getShortcut(
-                            conversationData.getPackageName(), conversationData.getUserId(),
-                            shortcutId);
-                    if (shortcut != null) {
-                        AppTargetId appTargetId = new AppTargetId(shortcut.getId());
-                        targets.add(new AppTarget.Builder(appTargetId, shortcut).build());
-                    }
-                }
-            }
-            mUpdatePredictionsMethod.accept(targets);
-        });
-    }
-
-    @VisibleForTesting
-    public Consumer<List<AppTarget>> getUpdatePredictionsMethod() {
-        return mUpdatePredictionsMethod;
-    }
-}
diff --git a/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java
new file mode 100644
index 0000000..280ced3
--- /dev/null
+++ b/services/people/java/com/android/server/people/prediction/ShareTargetPredictor.java
@@ -0,0 +1,139 @@
+/*
+ * 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.server.people.prediction;
+
+import android.annotation.MainThread;
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.WorkerThread;
+import android.app.prediction.AppPredictionContext;
+import android.app.prediction.AppTarget;
+import android.app.prediction.AppTargetEvent;
+import android.app.prediction.AppTargetId;
+import android.content.IntentFilter;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager.ShareShortcutInfo;
+
+import com.android.internal.annotations.VisibleForTesting;
+import com.android.internal.app.ChooserActivity;
+import com.android.server.people.data.ConversationInfo;
+import com.android.server.people.data.DataManager;
+import com.android.server.people.data.EventHistory;
+import com.android.server.people.data.PackageData;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.function.Consumer;
+
+class ShareTargetPredictor extends AppTargetPredictor {
+
+    private final IntentFilter mIntentFilter;
+
+    ShareTargetPredictor(@NonNull AppPredictionContext predictionContext,
+            @NonNull Consumer<List<AppTarget>> updatePredictionsMethod,
+            @NonNull DataManager dataManager) {
+        super(predictionContext, updatePredictionsMethod, dataManager);
+        mIntentFilter = predictionContext.getExtras().getParcelable(
+                ChooserActivity.APP_PREDICTION_INTENT_FILTER_KEY);
+    }
+
+    @MainThread
+    @Override
+    public void onAppTargetEvent(AppTargetEvent event) {
+        getDataManager().reportAppTargetEvent(event, mIntentFilter);
+    }
+
+    @WorkerThread
+    @Override
+    protected void predictTargets() {
+        List<ShareTarget> shareTargets = getShareTargets();
+        // TODO: Rank the share targets with the data in ShareTarget.mConversationData.
+        List<AppTarget> appTargets = new ArrayList<>();
+        for (ShareTarget shareTarget : shareTargets) {
+
+            ShortcutInfo shortcutInfo = shareTarget.getShareShortcutInfo().getShortcutInfo();
+            AppTargetId appTargetId = new AppTargetId(shortcutInfo.getId());
+            String shareTargetClassName =
+                    shareTarget.getShareShortcutInfo().getTargetComponent().getClassName();
+            AppTarget appTarget = new AppTarget.Builder(appTargetId, shortcutInfo)
+                    .setClassName(shareTargetClassName)
+                    .build();
+            appTargets.add(appTarget);
+            if (appTargets.size() >= getPredictionContext().getPredictedTargetCount()) {
+                break;
+            }
+        }
+        updatePredictions(appTargets);
+    }
+
+    @VisibleForTesting
+    List<ShareTarget> getShareTargets() {
+        List<ShareTarget> shareTargets = new ArrayList<>();
+        List<ShareShortcutInfo> shareShortcuts =
+                getDataManager().getShareShortcuts(mIntentFilter);
+
+        for (ShareShortcutInfo shareShortcut : shareShortcuts) {
+            ShortcutInfo shortcutInfo = shareShortcut.getShortcutInfo();
+            String packageName = shortcutInfo.getPackage();
+            int userId = shortcutInfo.getUserId();
+            PackageData packageData = getDataManager().getPackage(packageName, userId);
+
+            ConversationData conversationData = null;
+            if (packageData != null) {
+                String shortcutId = shortcutInfo.getId();
+                ConversationInfo conversationInfo =
+                        packageData.getConversationInfo(shortcutId);
+
+                if (conversationInfo != null) {
+                    EventHistory eventHistory = packageData.getEventHistory(shortcutId);
+                    conversationData = new ConversationData(
+                            packageName, userId, conversationInfo, eventHistory);
+                }
+            }
+            shareTargets.add(new ShareTarget(shareShortcut, conversationData));
+        }
+
+        return shareTargets;
+    }
+
+    @VisibleForTesting
+    static class ShareTarget {
+
+        @NonNull
+        private final ShareShortcutInfo mShareShortcutInfo;
+        @Nullable
+        private final ConversationData mConversationData;
+
+        private ShareTarget(@NonNull ShareShortcutInfo shareShortcutInfo,
+                @Nullable ConversationData conversationData) {
+            mShareShortcutInfo = shareShortcutInfo;
+            mConversationData = conversationData;
+        }
+
+        @NonNull
+        @VisibleForTesting
+        ShareShortcutInfo getShareShortcutInfo() {
+            return mShareShortcutInfo;
+        }
+
+        @Nullable
+        @VisibleForTesting
+        ConversationData getConversationData() {
+            return mConversationData;
+        }
+    }
+}
diff --git a/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java b/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java
new file mode 100644
index 0000000..76f7ad6
--- /dev/null
+++ b/services/robotests/src/com/android/server/location/GnssAntennaInfoProviderTest.java
@@ -0,0 +1,94 @@
+/*
+ * 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.server.location;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.platform.test.annotations.Presubmit;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+import org.robolectric.RobolectricTestRunner;
+import org.robolectric.RuntimeEnvironment;
+
+/**
+ * Unit tests for {@link GnssAntennaInfoProvider}.
+ */
+@RunWith(RobolectricTestRunner.class)
+@Presubmit
+public class GnssAntennaInfoProviderTest {
+    @Mock
+    private GnssAntennaInfoProvider.GnssAntennaInfoProviderNative mMockNative;
+    private GnssAntennaInfoProvider mTestProvider;
+
+    /** Setup. */
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+        when(mMockNative.startAntennaInfoListening()).thenReturn(true);
+        when(mMockNative.stopAntennaInfoListening()).thenReturn(true);
+
+        mTestProvider = new GnssAntennaInfoProvider(RuntimeEnvironment.application,
+                new Handler(Looper.myLooper()), mMockNative) {
+            @Override
+            public boolean isGpsEnabled() {
+                return true;
+            }
+        };
+    }
+
+    /**
+     * Test that registerWithService calls the native startAntennaInfoListening method.
+     */
+    @Test
+    public void register_nativeStarted() {
+        mTestProvider.registerWithService();
+        verify(mMockNative, times(1)).startAntennaInfoListening();
+    }
+
+    /**
+     * Test that unregisterFromService calls the native stopAntennaInfoListening method.
+     */
+    @Test
+    public void unregister_nativeStopped() {
+        mTestProvider.registerWithService();
+        mTestProvider.unregisterFromService();
+        verify(mMockNative, times(1)).stopAntennaInfoListening();
+    }
+
+    /**
+     * Test that GnssAntennaInfoProvider.isAntennaInfoSupported() returns the result of the
+     * native isAntennaInfoSupported method.
+     */
+    @Test
+    public void isSupported_nativeIsSupported() {
+        when(mMockNative.isAntennaInfoSupported()).thenReturn(true);
+        assertThat(mTestProvider.isAvailableInPlatform()).isTrue();
+
+        when(mMockNative.isAntennaInfoSupported()).thenReturn(false);
+        assertThat(mTestProvider.isAvailableInPlatform()).isFalse();
+    }
+}
diff --git a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
index 1a7b1d3..6190802 100644
--- a/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
+++ b/services/robotests/src/com/android/server/pm/CrossProfileAppsServiceImplRoboTest.java
@@ -55,6 +55,8 @@
 
 import androidx.test.core.app.ApplicationProvider;
 
+import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
+import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
 import com.android.server.LocalServices;
 import com.android.server.testing.shadows.ShadowApplicationPackageManager;
 import com.android.server.testing.shadows.ShadowUserManager;
@@ -190,6 +192,8 @@
     public void grantPermissions() {
         grantPermissions(
                 Manifest.permission.MANAGE_APP_OPS_MODES,
+                Manifest.permission.UPDATE_APP_OPS_STATS,
+                Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES,
                 Manifest.permission.INTERACT_ACROSS_USERS,
                 Manifest.permission.INTERACT_ACROSS_USERS_FULL);
     }
@@ -213,9 +217,26 @@
     }
 
     @Test
+    public void setInteractAcrossProfilesAppOp_noPermissions_throwsSecurityException() {
+        denyPermissions(
+                Manifest.permission.MANAGE_APP_OPS_MODES,
+                Manifest.permission.UPDATE_APP_OPS_STATS,
+                Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES,
+                Manifest.permission.INTERACT_ACROSS_USERS,
+                Manifest.permission.INTERACT_ACROSS_USERS_FULL);
+        try {
+            mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
+                    CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
+            fail();
+        } catch (SecurityException expected) {}
+    }
+
+    @Test
     public void setInteractAcrossProfilesAppOp_missingInteractAcrossUsersAndFull_throwsSecurityException() {
-        denyPermissions(Manifest.permission.INTERACT_ACROSS_USERS);
-        denyPermissions(Manifest.permission.INTERACT_ACROSS_USERS_FULL);
+        denyPermissions(
+                Manifest.permission.INTERACT_ACROSS_USERS,
+                Manifest.permission.INTERACT_ACROSS_USERS_FULL);
+        grantPermissions(Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES);
         try {
             mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
                     CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
@@ -231,8 +252,38 @@
     }
 
     @Test
+    public void setInteractAcrossProfilesAppOp_configureInteractAcrossProfilesPermissionWithoutAppOpsPermissions_setsAppOp() {
+        denyPermissions(
+                Manifest.permission.MANAGE_APP_OPS_MODES,
+                Manifest.permission.UPDATE_APP_OPS_STATS);
+        grantPermissions(
+                Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES,
+                Manifest.permission.INTERACT_ACROSS_USERS);
+
+        mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
+                CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
+
+        assertThat(getCrossProfileAppOp()).isEqualTo(MODE_ALLOWED);
+    }
+
+    @Test
+    public void setInteractAcrossProfilesAppOp_appOpsPermissionsWithoutConfigureInteractAcrossProfilesPermission_setsAppOp() {
+        denyPermissions(Manifest.permission.CONFIGURE_INTERACT_ACROSS_PROFILES);
+        grantPermissions(
+                Manifest.permission.MANAGE_APP_OPS_MODES,
+                Manifest.permission.UPDATE_APP_OPS_STATS,
+                Manifest.permission.INTERACT_ACROSS_USERS);
+
+        mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
+                CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
+
+        assertThat(getCrossProfileAppOp()).isEqualTo(MODE_ALLOWED);
+    }
+
+    @Test
     public void setInteractAcrossProfilesAppOp_setsAppOpWithUsersAndWithoutFull() {
         denyPermissions(Manifest.permission.INTERACT_ACROSS_USERS_FULL);
+        grantPermissions(Manifest.permission.INTERACT_ACROSS_USERS);
         mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
                 CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
         assertThat(getCrossProfileAppOp()).isEqualTo(MODE_ALLOWED);
@@ -241,6 +292,7 @@
     @Test
     public void setInteractAcrossProfilesAppOp_setsAppOpWithFullAndWithoutUsers() {
         denyPermissions(Manifest.permission.INTERACT_ACROSS_USERS);
+        grantPermissions(Manifest.permission.INTERACT_ACROSS_USERS_FULL);
         mCrossProfileAppsServiceImpl.setInteractAcrossProfilesAppOp(
                 CROSS_PROFILE_APP_PACKAGE_NAME, MODE_ALLOWED);
         assertThat(getCrossProfileAppOp()).isEqualTo(MODE_ALLOWED);
@@ -479,6 +531,16 @@
         public void restoreCallingIdentity(long token) {}
 
         @Override
+        public void withCleanCallingIdentity(ThrowingRunnable action) {
+            action.run();
+        }
+
+        @Override
+        public <T> T withCleanCallingIdentity(ThrowingSupplier<T> action) {
+            return action.get();
+        }
+
+        @Override
         public UserManager getUserManager() {
             return mUserManager;
         }
diff --git a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
index 223a98b..8daef5f 100644
--- a/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
+++ b/services/robotests/src/com/android/server/testing/shadows/ShadowPerformUnifiedRestoreTask.java
@@ -67,8 +67,7 @@
             int pmToken,
             boolean isFullSystemRestore,
             @Nullable String[] filterSet,
-            OnTaskFinishedListener listener,
-            Map<String, Set<String>> excludedKeys) {
+            OnTaskFinishedListener listener) {
         mBackupManagerService = backupManagerService;
         mPackage = targetPackage;
         mIsFullSystemRestore = isFullSystemRestore;
diff --git a/services/tests/mockingservicestests/Android.bp b/services/tests/mockingservicestests/Android.bp
index 3d9f11f..ff34ebd 100644
--- a/services/tests/mockingservicestests/Android.bp
+++ b/services/tests/mockingservicestests/Android.bp
@@ -22,7 +22,9 @@
         "services.net",
         "service-jobscheduler",
         "service-permission",
+        "service-blobstore",
         "androidx.test.runner",
+        "androidx.test.ext.truth",
         "mockito-target-extended-minus-junit4",
         "platform-test-annotations",
         "truth-prebuilt",
diff --git a/services/tests/mockingservicestests/AndroidManifest.xml b/services/tests/mockingservicestests/AndroidManifest.xml
index 0e24b03..44eb828 100644
--- a/services/tests/mockingservicestests/AndroidManifest.xml
+++ b/services/tests/mockingservicestests/AndroidManifest.xml
@@ -17,6 +17,8 @@
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
         package="com.android.frameworks.mockingservicestests">
 
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
     <uses-permission android:name="android.permission.CHANGE_CONFIGURATION" />
     <uses-permission android:name="android.permission.HARDWARE_TEST"/>
     <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS_FULL" />
diff --git a/services/tests/servicestests/assets/AppOpsUpgradeTest/appops-unversioned.xml b/services/tests/mockingservicestests/assets/AppOpsUpgradeTest/appops-unversioned.xml
similarity index 100%
rename from services/tests/servicestests/assets/AppOpsUpgradeTest/appops-unversioned.xml
rename to services/tests/mockingservicestests/assets/AppOpsUpgradeTest/appops-unversioned.xml
diff --git a/services/tests/mockingservicestests/src/com/android/server/AlarmManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/AlarmManagerServiceTest.java
index 6a5de84..bb149cf 100644
--- a/services/tests/mockingservicestests/src/com/android/server/AlarmManagerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/AlarmManagerServiceTest.java
@@ -22,6 +22,7 @@
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_ACTIVE;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_FREQUENT;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RARE;
+import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_RESTRICTED;
 import static android.app.usage.UsageStatsManager.STANDBY_BUCKET_WORKING_SET;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doCallRealMethod;
@@ -45,6 +46,7 @@
 import static com.android.server.AlarmManagerService.Constants.KEY_MIN_FUTURITY;
 import static com.android.server.AlarmManagerService.Constants.KEY_MIN_INTERVAL;
 import static com.android.server.AlarmManagerService.IS_WAKEUP_MASK;
+import static com.android.server.AlarmManagerService.MILLIS_IN_DAY;
 import static com.android.server.AlarmManagerService.TIME_CHANGED_MASK;
 import static com.android.server.AlarmManagerService.WORKING_INDEX;
 
@@ -107,6 +109,7 @@
     private static final String TEST_CALLING_PACKAGE = "com.android.framework.test-package";
     private static final int SYSTEM_UI_UID = 123456789;
     private static final int TEST_CALLING_UID = 12345;
+    private static final long RESTRICTED_WINDOW_MS = MILLIS_IN_DAY;
 
     private long mAppStandbyWindow;
     private AlarmManagerService mService;
@@ -485,13 +488,13 @@
                 anyLong())).thenReturn(standbyBucket);
         final long firstTrigger = mNowElapsedTest + 10;
         for (int i = 0; i < quota; i++) {
-            setTestAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 10 + i,
+            setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i,
                     getNewMockPendingIntent());
             mNowElapsedTest = mTestTimer.getElapsed();
             mTestTimer.expire();
         }
         // This one should get deferred on set
-        setTestAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + quota + 10,
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + quota,
                 getNewMockPendingIntent());
         final long expectedNextTrigger = firstTrigger + 1 + mAppStandbyWindow;
         assertEquals("Incorrect next alarm trigger", expectedNextTrigger, mTestTimer.getElapsed());
@@ -503,11 +506,11 @@
                 anyLong())).thenReturn(standbyBucket);
         final long firstTrigger = mNowElapsedTest + 10;
         for (int i = 0; i < quota; i++) {
-            setTestAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + 10 + i,
+            setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + i,
                     getNewMockPendingIntent());
         }
         // This one should get deferred after the latest alarm expires
-        setTestAlarm(ELAPSED_REALTIME_WAKEUP, mNowElapsedTest + quota + 10,
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + quota,
                 getNewMockPendingIntent());
         for (int i = 0; i < quota; i++) {
             mNowElapsedTest = mTestTimer.getElapsed();
@@ -596,6 +599,43 @@
         testQuotasNoDeferral(STANDBY_BUCKET_RARE);
     }
 
+    @Test
+    public void testRestrictedBucketAlarmsDeferredOnSet() throws Exception {
+        when(mUsageStatsManagerInternal
+                .getAppStandbyBucket(eq(TEST_CALLING_PACKAGE), anyInt(), anyLong()))
+                .thenReturn(STANDBY_BUCKET_RESTRICTED);
+        // This one should go off
+        final long firstTrigger = mNowElapsedTest + 10;
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger, getNewMockPendingIntent());
+        mNowElapsedTest = mTestTimer.getElapsed();
+        mTestTimer.expire();
+
+        // This one should get deferred on set
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + 1, getNewMockPendingIntent());
+        final long expectedNextTrigger =
+                firstTrigger + mService.mConstants.APP_STANDBY_RESTRICTED_WINDOW;
+        assertEquals("Incorrect next alarm trigger", expectedNextTrigger, mTestTimer.getElapsed());
+    }
+
+    @Test
+    public void testRestrictedBucketAlarmsDeferredOnExpiration() throws Exception {
+        when(mUsageStatsManagerInternal
+                .getAppStandbyBucket(eq(TEST_CALLING_PACKAGE), anyInt(), anyLong()))
+                .thenReturn(STANDBY_BUCKET_RESTRICTED);
+        // This one should go off
+        final long firstTrigger = mNowElapsedTest + 10;
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger, getNewMockPendingIntent());
+
+        // This one should get deferred after the latest alarm expires
+        setTestAlarm(ELAPSED_REALTIME_WAKEUP, firstTrigger + 1, getNewMockPendingIntent());
+
+        mNowElapsedTest = mTestTimer.getElapsed();
+        mTestTimer.expire();
+        final long expectedNextTrigger =
+                firstTrigger + mService.mConstants.APP_STANDBY_RESTRICTED_WINDOW;
+        assertEquals("Incorrect next alarm trigger", expectedNextTrigger, mTestTimer.getElapsed());
+    }
+
     private void assertAndHandleBucketChanged(int bucket) {
         when(mUsageStatsManagerInternal.getAppStandbyBucket(eq(TEST_CALLING_PACKAGE), anyInt(),
                 anyLong())).thenReturn(bucket);
diff --git a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
index 2080fdf..c94bb87 100644
--- a/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/RescuePartyTest.java
@@ -375,6 +375,35 @@
     }
 
     @Test
+    public void testBootLoopLevels() {
+        RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext);
+
+        /*
+         Ensure that the returned user impact corresponds with the user impact of the next available
+         rescue level, not the current one.
+         */
+        SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
+                RescueParty.LEVEL_NONE));
+        assertEquals(observer.onBootLoop(), PackageHealthObserverImpact.USER_IMPACT_LOW);
+
+        SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
+                RescueParty.LEVEL_RESET_SETTINGS_UNTRUSTED_DEFAULTS));
+        assertEquals(observer.onBootLoop(), PackageHealthObserverImpact.USER_IMPACT_LOW);
+
+        SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
+                RescueParty.LEVEL_RESET_SETTINGS_UNTRUSTED_CHANGES));
+        assertEquals(observer.onBootLoop(), PackageHealthObserverImpact.USER_IMPACT_HIGH);
+
+        SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
+                RescueParty.LEVEL_RESET_SETTINGS_TRUSTED_DEFAULTS));
+        assertEquals(observer.onBootLoop(), PackageHealthObserverImpact.USER_IMPACT_HIGH);
+
+        SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
+                LEVEL_FACTORY_RESET));
+        assertEquals(observer.onBootLoop(), PackageHealthObserverImpact.USER_IMPACT_HIGH);
+    }
+
+    @Test
     public void testRescueLevelIncrementsWhenExecuted() {
         RescuePartyObserver observer = RescuePartyObserver.getInstance(mMockContext);
         SystemProperties.set(RescueParty.PROP_RESCUE_LEVEL, Integer.toString(
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java b/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java
index 8d2a152..6083ce34 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/ApplicationExitInfoTest.java
@@ -174,12 +174,12 @@
         final int app1ConnectiongGroup = 10;
         final int app1UidUser2 = 1010123;
         final int app1PidUser2 = 12347;
-        final int app1Pss1 = 34567;
-        final int app1Rss1 = 45678;
-        final int app1Pss2 = 34568;
-        final int app1Rss2 = 45679;
-        final int app1Pss3 = 34569;
-        final int app1Rss3 = 45680;
+        final long app1Pss1 = 34567;
+        final long app1Rss1 = 45678;
+        final long app1Pss2 = 34568;
+        final long app1Rss2 = 45679;
+        final long app1Pss3 = 34569;
+        final long app1Rss3 = 45680;
         final String app1ProcessName = "com.android.test.stub1:process";
         final String app1PackageName = "com.android.test.stub1";
 
@@ -344,8 +344,8 @@
         // Case 4: Create a process from another package with kill from lmkd
         final int app2UidUser2 = 1010234;
         final int app2PidUser2 = 12348;
-        final int app2Pss1 = 54321;
-        final int app2Rss1 = 65432;
+        final long app2Pss1 = 54321;
+        final long app2Rss1 = 65432;
         final String app2ProcessName = "com.android.test.stub2:process";
         final String app2PackageName = "com.android.test.stub2";
 
@@ -402,8 +402,8 @@
         final int app3UidUser2 = 1010345;
         final int app3PidUser2 = 12349;
         final int app3ConnectiongGroup = 4;
-        final int app3Pss1 = 54320;
-        final int app3Rss1 = 65430;
+        final long app3Pss1 = 54320;
+        final long app3Rss1 = 65430;
         final String app3ProcessName = "com.android.test.stub3:process";
         final String app3PackageName = "com.android.test.stub3";
         final String app3Description = "native crash";
@@ -529,8 +529,8 @@
         final int app3Uid = 10345;
         final int app3IsolatedUid = 99001; // it's an isolated process
         final int app3Pid = 12350;
-        final int app3Pss2 = 23232;
-        final int app3Rss2 = 32323;
+        final long app3Pss2 = 23232;
+        final long app3Rss2 = 32323;
         final String app3Description2 = "force close";
 
         sleep(1);
@@ -618,8 +618,8 @@
 
         sleep(1);
         final int app1IsolatedUidUser2 = 1099002; // isolated uid
-        final int app1Pss4 = 34343;
-        final int app1Rss4 = 43434;
+        final long app1Pss4 = 34343;
+        final long app1Rss4 = 43434;
         final long now8 = System.currentTimeMillis();
         sigNum = OsConstants.SIGKILL;
         doReturn(new Pair<Long, Object>(now8, makeSignalStatus(sigNum)))
@@ -673,8 +673,8 @@
         sleep(1);
         final int app1Pid2User2 = 56565;
         final int app1IsolatedUid2User2 = 1099003; // isolated uid
-        final int app1Pss5 = 34344;
-        final int app1Rss5 = 43435;
+        final long app1Pss5 = 34344;
+        final long app1Rss5 = 43435;
         final long now9 = System.currentTimeMillis();
         sigNum = OsConstants.SIGKILL;
         doReturn(new Pair<Long, Object>(now9, makeSignalStatus(sigNum)))
@@ -831,7 +831,7 @@
     }
 
     private ProcessRecord makeProcessRecord(int pid, int uid, int packageUid, Integer definingUid,
-            int connectionGroup, int procState, int pss, int rss,
+            int connectionGroup, int procState, long pss, long rss,
             String processName, String packageName) {
         ApplicationInfo ai = new ApplicationInfo();
         ai.packageName = packageName;
@@ -847,8 +847,8 @@
         app.connectionGroup = connectionGroup;
         app.setProcState = procState;
         app.lastMemInfo = spy(new Debug.MemoryInfo());
-        doReturn(pss).when(app.lastMemInfo).getTotalPss();
-        doReturn(rss).when(app.lastMemInfo).getTotalRss();
+        doReturn((int) pss).when(app.lastMemInfo).getTotalPss();
+        doReturn((int) rss).when(app.lastMemInfo).getTotalRss();
         return app;
     }
 
@@ -856,7 +856,7 @@
             Long timestamp, Integer pid, Integer uid, Integer packageUid,
             Integer definingUid, String processName, Integer connectionGroup,
             Integer reason, Integer subReason, Integer status,
-            Integer pss, Integer rss, Integer importance, String description) {
+            Long pss, Long rss, Integer importance, String description) {
         assertNotNull(info);
 
         if (timestamp != null) {
@@ -892,10 +892,10 @@
             assertEquals(status.intValue(), info.getStatus());
         }
         if (pss != null) {
-            assertEquals(pss.intValue(), info.getPss());
+            assertEquals(pss.longValue(), info.getPss());
         }
         if (rss != null) {
-            assertEquals(rss.intValue(), info.getRss());
+            assertEquals(rss.longValue(), info.getRss());
         }
         if (importance != null) {
             assertEquals(importance.intValue(), info.getImportance());
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
index 1985513..4722b39 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/CachedAppOptimizerTest.java
@@ -122,6 +122,8 @@
                 CachedAppOptimizer.DEFAULT_COMPACT_THROTTLE_4);
         assertThat(mCachedAppOptimizerUnderTest.mCompactStatsdSampleRate).isEqualTo(
                 CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE);
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(
+                CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE);
         assertThat(mCachedAppOptimizerUnderTest.mFullAnonRssThrottleKb).isEqualTo(
                 CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB);
         assertThat(mCachedAppOptimizerUnderTest.mCompactThrottleBFGS).isEqualTo(
@@ -132,6 +134,8 @@
                 CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB);
         assertThat(mCachedAppOptimizerUnderTest.mFullDeltaRssThrottleKb).isEqualTo(
                 CachedAppOptimizer.DEFAULT_COMPACT_FULL_DELTA_RSS_THROTTLE_KB);
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo(
+                CachedAppOptimizer.DEFAULT_USE_FREEZER);
 
         Set<Integer> expected = new HashSet<>();
         for (String s : TextUtils.split(
@@ -177,6 +181,9 @@
                 CachedAppOptimizer.KEY_COMPACT_STATSD_SAMPLE_RATE,
                 Float.toString(CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f), false);
         DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_FREEZER_STATSD_SAMPLE_RATE,
+                Float.toString(CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f), false);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
                 CachedAppOptimizer.KEY_COMPACT_FULL_RSS_THROTTLE_KB,
                 Long.toString(CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB + 1), false);
         DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
@@ -185,6 +192,11 @@
                         CachedAppOptimizer.DEFAULT_COMPACT_FULL_DELTA_RSS_THROTTLE_KB + 1), false);
         DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
                 CachedAppOptimizer.KEY_COMPACT_PROC_STATE_THROTTLE, "1,2,3", false);
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo(
+                CachedAppOptimizer.DEFAULT_USE_FREEZER);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_USE_FREEZER, CachedAppOptimizer.DEFAULT_USE_FREEZER
+                ?  "false" : "true" , false);
 
         // Then calling init will read and set that flag.
         mCachedAppOptimizerUnderTest.init();
@@ -211,6 +223,8 @@
                 CachedAppOptimizer.DEFAULT_COMPACT_THROTTLE_6 + 1);
         assertThat(mCachedAppOptimizerUnderTest.mCompactStatsdSampleRate).isEqualTo(
                 CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f);
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(
+                CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f);
         assertThat(mCachedAppOptimizerUnderTest.mCompactThrottleBFGS).isEqualTo(
                 CachedAppOptimizer.DEFAULT_COMPACT_THROTTLE_5 + 1);
         assertThat(mCachedAppOptimizerUnderTest.mCompactThrottlePersistent).isEqualTo(
@@ -218,6 +232,14 @@
         assertThat(mCachedAppOptimizerUnderTest.mFullAnonRssThrottleKb).isEqualTo(
                 CachedAppOptimizer.DEFAULT_COMPACT_FULL_RSS_THROTTLE_KB + 1);
         assertThat(mCachedAppOptimizerUnderTest.mProcStateThrottle).containsExactly(1, 2, 3);
+
+        if (mCachedAppOptimizerUnderTest.isFreezerSupported()) {
+            if (CachedAppOptimizer.DEFAULT_USE_FREEZER) {
+                assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse();
+            } else {
+                assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isTrue();
+            }
+        }
     }
 
     @Test
@@ -244,6 +266,46 @@
     }
 
     @Test
+    public void useFreeze_doesNotListenToDeviceConfigChanges() throws InterruptedException {
+        if (!mCachedAppOptimizerUnderTest.isFreezerSupported()) {
+            return;
+        }
+
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo(
+                CachedAppOptimizer.DEFAULT_USE_FREEZER);
+
+        // The freezer DeviceConfig property is read at boot only
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_USE_FREEZER, "true", false);
+        mCachedAppOptimizerUnderTest.init();
+        mCountDown = new CountDownLatch(1);
+
+        // No notifications should get to the cached app optimizer.
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isFalse();
+
+        // The flag value has to be set correctly.
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isTrue();
+        // The cached app optimizer thread must be running.
+        assertThat(mCachedAppOptimizerUnderTest.mCachedAppOptimizerThread.isAlive()).isTrue();
+
+        // Set the flag the other way without rebooting. It shall not change.
+        mCountDown = new CountDownLatch(1);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_USE_FREEZER, "false", false);
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue();
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isTrue();
+
+
+        // Now, set the flag to false and restart the cached app optimizer
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_USE_FREEZER, "false", false);
+        mCachedAppOptimizerUnderTest.init();
+
+        // The flag value has to be set correctly.
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isFalse();
+    }
+
+    @Test
     public void useCompaction_listensToDeviceConfigChangesBadValues() throws InterruptedException {
         assertThat(mCachedAppOptimizerUnderTest.useCompaction()).isEqualTo(
                 CachedAppOptimizer.DEFAULT_USE_COMPACTION);
@@ -261,6 +323,22 @@
     }
 
     @Test
+    public void useFreeze_listensToDeviceConfigChangesBadValues() throws InterruptedException {
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo(
+                CachedAppOptimizer.DEFAULT_USE_FREEZER);
+
+        // When we push an invalid flag value...
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_USE_FREEZER, "foobar", false);
+
+        mCachedAppOptimizerUnderTest.init();
+
+        // Then we set the default.
+        assertThat(mCachedAppOptimizerUnderTest.useFreezer()).isEqualTo(
+                CachedAppOptimizer.DEFAULT_USE_FREEZER);
+    }
+
+    @Test
     public void compactAction_listensToDeviceConfigChanges() throws InterruptedException {
         mCachedAppOptimizerUnderTest.init();
 
@@ -482,6 +560,17 @@
         // Then that override is reflected in the compactor.
         assertThat(mCachedAppOptimizerUnderTest.mCompactStatsdSampleRate).isEqualTo(
                 CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f);
+
+        // When we override mFreezerStatsdSampleRate with a reasonable value ...
+        mCountDown = new CountDownLatch(1);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_FREEZER_STATSD_SAMPLE_RATE,
+                Float.toString(CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f), false);
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue();
+
+        // Then that override is reflected in the compactor.
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(
+                CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE + 0.1f);
     }
 
     @Test
@@ -498,6 +587,16 @@
         // Then that override is reflected in the compactor.
         assertThat(mCachedAppOptimizerUnderTest.mCompactStatsdSampleRate).isEqualTo(
                 CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE);
+
+        // When we override mFreezerStatsdSampleRate with an unreasonable value ...
+        mCountDown = new CountDownLatch(1);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_FREEZER_STATSD_SAMPLE_RATE, "foo", false);
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue();
+
+        // Then that override is reflected in the freezer.
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(
+                CachedAppOptimizer.DEFAULT_STATSD_SAMPLE_RATE);
     }
 
     @Test
@@ -523,6 +622,25 @@
 
         // Then the values is capped in the range.
         assertThat(mCachedAppOptimizerUnderTest.mCompactStatsdSampleRate).isEqualTo(1.0f);
+
+        // When we override mFreezerStatsdSampleRate with an value outside of [0..1]...
+        mCountDown = new CountDownLatch(1);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_FREEZER_STATSD_SAMPLE_RATE,
+                Float.toString(-1.0f), false);
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue();
+
+        // Then the values is capped in the range.
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(0.0f);
+
+        mCountDown = new CountDownLatch(1);
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ACTIVITY_MANAGER,
+                CachedAppOptimizer.KEY_FREEZER_STATSD_SAMPLE_RATE,
+                Float.toString(1.01f), false);
+        assertThat(mCountDown.await(5, TimeUnit.SECONDS)).isTrue();
+
+        // Then the values is capped in the range.
+        assertThat(mCachedAppOptimizerUnderTest.mFreezerStatsdSampleRate).isEqualTo(1.0f);
     }
 
     @Test
diff --git a/services/tests/mockingservicestests/src/com/android/server/am/PendingIntentControllerTest.java b/services/tests/mockingservicestests/src/com/android/server/am/PendingIntentControllerTest.java
index 3975f0b..e3453a0 100644
--- a/services/tests/mockingservicestests/src/com/android/server/am/PendingIntentControllerTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/am/PendingIntentControllerTest.java
@@ -50,6 +50,7 @@
 @RunWith(AndroidJUnit4.class)
 public class PendingIntentControllerTest {
     private static final String TEST_PACKAGE_NAME = "test-package-1";
+    private static final String TEST_FEATURE_ID = "test-feature-1";
     private static final int TEST_CALLING_UID = android.os.Process.myUid();
     private static final Intent[] TEST_INTENTS = new Intent[]{new Intent("com.test.intent")};
 
@@ -87,8 +88,8 @@
 
     private PendingIntentRecord createPendingIntentRecord(int flags) {
         return mPendingIntentController.getIntentSender(ActivityManager.INTENT_SENDER_BROADCAST,
-                TEST_PACKAGE_NAME, TEST_CALLING_UID, 0, null, null, 0, TEST_INTENTS, null, flags,
-                null);
+                TEST_PACKAGE_NAME, TEST_FEATURE_ID, TEST_CALLING_UID, 0, null, null, 0,
+                TEST_INTENTS, null, flags, null);
     }
 
     @Test
diff --git a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
index 155de3b..2d5fa23 100644
--- a/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsServiceTest.java
@@ -101,9 +101,8 @@
     private StaticMockitoSession mMockingSession;
 
     private void setupAppOpsService() {
-        mAppOpsService = new AppOpsService(mAppOpsFile, mHandler);
+        mAppOpsService = new AppOpsService(mAppOpsFile, mHandler, spy(sContext));
         mAppOpsService.mHistoricalRegistry.systemReady(sContext.getContentResolver());
-        mAppOpsService.mContext = spy(sContext);
 
         // Always approve all permission checks
         doNothing().when(mAppOpsService.mContext).enforcePermission(anyString(), anyInt(),
diff --git a/services/tests/servicestests/src/com/android/server/appop/AppOpsUpgradeTest.java b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java
similarity index 85%
rename from services/tests/servicestests/src/com/android/server/appop/AppOpsUpgradeTest.java
rename to services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java
index 66d2bab..e48b671 100644
--- a/services/tests/servicestests/src/com/android/server/appop/AppOpsUpgradeTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/appop/AppOpsUpgradeTest.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -19,9 +19,17 @@
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.nullable;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.when;
 
 import android.app.AppOpsManager;
 import android.content.Context;
+import android.content.pm.PackageManager;
 import android.content.res.AssetManager;
 import android.os.Handler;
 import android.os.HandlerThread;
@@ -133,10 +141,24 @@
         AppOpsDataParser parser = new AppOpsDataParser(mAppOpsFile);
         assertTrue(parser.parse());
         assertEquals(AppOpsDataParser.NO_VERSION, parser.mVersion);
-        AppOpsService testService = new AppOpsService(mAppOpsFile, mHandler); // trigger upgrade
+
+        // Use mock context and package manager to fake permision package manager calls.
+        Context testContext = spy(mContext);
+
+        // Pretent everybody has all permissions
+        doNothing().when(testContext).enforcePermission(anyString(), anyInt(), anyInt(),
+                nullable(String.class));
+
+        PackageManager testPM = mock(PackageManager.class);
+        when(testContext.getPackageManager()).thenReturn(testPM);
+
+        // Stub out package calls to disable AppOpsService#updatePermissionRevokedCompat
+        when(testPM.getPackagesForUid(anyInt())).thenReturn(null);
+
+        AppOpsService testService = spy(
+                new AppOpsService(mAppOpsFile, mHandler, testContext)); // trigger upgrade
         assertSameModes(testService.mUidStates, AppOpsManager.OP_RUN_IN_BACKGROUND,
                 AppOpsManager.OP_RUN_ANY_IN_BACKGROUND);
-        testService.mContext = mContext;
         mHandler.removeCallbacks(testService.mWriteRunner);
         testService.writeState();
         assertTrue(parser.parse());
diff --git a/services/tests/mockingservicestests/src/com/android/server/blob/BlobStoreManagerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/blob/BlobStoreManagerServiceTest.java
new file mode 100644
index 0000000..3778e17
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/blob/BlobStoreManagerServiceTest.java
@@ -0,0 +1,342 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.server.blob;
+
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
+import static com.android.server.blob.BlobStoreConfig.SESSION_EXPIRY_TIMEOUT_MILLIS;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.verify;
+
+import android.app.blob.BlobHandle;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+import android.os.UserHandle;
+import android.platform.test.annotations.Presubmit;
+import android.util.ArrayMap;
+import android.util.LongSparseArray;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.server.blob.BlobStoreManagerService.Injector;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoSession;
+import org.mockito.quality.Strictness;
+
+import java.io.File;
+
+@RunWith(AndroidJUnit4.class)
+@SmallTest
+@Presubmit
+public class BlobStoreManagerServiceTest {
+    private Context mContext;
+    private Handler mHandler;
+    private BlobStoreManagerService mService;
+
+    private MockitoSession mMockitoSession;
+
+    @Mock
+    private File mBlobsDir;
+
+    private LongSparseArray<BlobStoreSession> mUserSessions;
+    private ArrayMap<BlobHandle, BlobMetadata> mUserBlobs;
+
+    private static final String TEST_PKG1 = "com.example1";
+    private static final String TEST_PKG2 = "com.example2";
+    private static final String TEST_PKG3 = "com.example3";
+
+    private static final int TEST_UID1 = 10001;
+    private static final int TEST_UID2 = 10002;
+    private static final int TEST_UID3 = 10003;
+
+    @Before
+    public void setUp() {
+        // Share classloader to allow package private access.
+        System.setProperty("dexmaker.share_classloader", "true");
+
+        mMockitoSession = mockitoSession()
+                .initMocks(this)
+                .strictness(Strictness.LENIENT)
+                .mockStatic(BlobStoreConfig.class)
+                .startMocking();
+
+        doReturn(mBlobsDir).when(() -> BlobStoreConfig.getBlobsDir());
+        doReturn(true).when(mBlobsDir).exists();
+        doReturn(new File[0]).when(mBlobsDir).listFiles();
+
+        mContext = InstrumentationRegistry.getTargetContext();
+        mHandler = new TestHandler(Looper.getMainLooper());
+        mService = new BlobStoreManagerService(mContext, new TestInjector());
+        mUserSessions = new LongSparseArray<>();
+        mUserBlobs = new ArrayMap<>();
+
+        mService.addUserSessionsForTest(mUserSessions, UserHandle.myUserId());
+        mService.addUserBlobsForTest(mUserBlobs, UserHandle.myUserId());
+    }
+
+    @After
+    public void tearDown() {
+        if (mMockitoSession != null) {
+            mMockitoSession.finishMocking();
+        }
+    }
+
+    @Test
+    public void testHandlePackageRemoved() throws Exception {
+        // Setup sessions
+        final File sessionFile1 = mock(File.class);
+        final long sessionId1 = 11;
+        final BlobStoreSession session1 = createBlobStoreSessionMock(TEST_PKG1, TEST_UID1,
+                sessionId1, sessionFile1);
+        mUserSessions.append(sessionId1, session1);
+
+        final File sessionFile2 = mock(File.class);
+        final long sessionId2 = 25;
+        final BlobStoreSession session2 = createBlobStoreSessionMock(TEST_PKG2, TEST_UID2,
+                sessionId2, sessionFile2);
+        mUserSessions.append(sessionId2, session2);
+
+        final File sessionFile3 = mock(File.class);
+        final long sessionId3 = 37;
+        final BlobStoreSession session3 = createBlobStoreSessionMock(TEST_PKG3, TEST_UID3,
+                sessionId3, sessionFile3);
+        mUserSessions.append(sessionId3, session3);
+
+        final File sessionFile4 = mock(File.class);
+        final long sessionId4 = 48;
+        final BlobStoreSession session4 = createBlobStoreSessionMock(TEST_PKG1, TEST_UID1,
+                sessionId4, sessionFile4);
+        mUserSessions.append(sessionId4, session4);
+
+        // Setup blobs
+        final long blobId1 = 978;
+        final File blobFile1 = mock(File.class);
+        final BlobHandle blobHandle1 = BlobHandle.createWithSha256("digest1".getBytes(),
+                "label1", System.currentTimeMillis(), "tag1");
+        final BlobMetadata blobMetadata1 = createBlobMetadataMock(blobId1, blobFile1, true);
+        mUserBlobs.put(blobHandle1, blobMetadata1);
+
+        final long blobId2 = 347;
+        final File blobFile2 = mock(File.class);
+        final BlobHandle blobHandle2 = BlobHandle.createWithSha256("digest2".getBytes(),
+                "label2", System.currentTimeMillis(), "tag2");
+        final BlobMetadata blobMetadata2 = createBlobMetadataMock(blobId2, blobFile2, false);
+        mUserBlobs.put(blobHandle2, blobMetadata2);
+
+        mService.addKnownIdsForTest(sessionId1, sessionId2, sessionId3, sessionId4,
+                blobId1, blobId2);
+
+        // Invoke test method
+        mService.handlePackageRemoved(TEST_PKG1, TEST_UID1);
+
+        // Verify sessions are removed
+        verify(sessionFile1).delete();
+        verify(sessionFile2, never()).delete();
+        verify(sessionFile3, never()).delete();
+        verify(sessionFile4).delete();
+
+        assertThat(mUserSessions.size()).isEqualTo(2);
+        assertThat(mUserSessions.get(sessionId1)).isNull();
+        assertThat(mUserSessions.get(sessionId2)).isNotNull();
+        assertThat(mUserSessions.get(sessionId3)).isNotNull();
+        assertThat(mUserSessions.get(sessionId4)).isNull();
+
+        // Verify blobs are removed
+        verify(blobMetadata1).removeCommitter(TEST_PKG1, TEST_UID1);
+        verify(blobMetadata1).removeLeasee(TEST_PKG1, TEST_UID1);
+        verify(blobMetadata2).removeCommitter(TEST_PKG1, TEST_UID1);
+        verify(blobMetadata2).removeLeasee(TEST_PKG1, TEST_UID1);
+
+        verify(blobFile1, never()).delete();
+        verify(blobFile2).delete();
+
+        assertThat(mUserBlobs.size()).isEqualTo(1);
+        assertThat(mUserBlobs.get(blobHandle1)).isNotNull();
+        assertThat(mUserBlobs.get(blobHandle2)).isNull();
+
+        assertThat(mService.getKnownIdsForTest()).containsExactly(
+                sessionId2, sessionId3, blobId1);
+    }
+
+    @Test
+    public void testHandleIdleMaintenance_deleteUnknownBlobs() throws Exception {
+        // Setup blob files
+        final long testId1 = 286;
+        final File file1 = mock(File.class);
+        doReturn(String.valueOf(testId1)).when(file1).getName();
+        final long testId2 = 349;
+        final File file2 = mock(File.class);
+        doReturn(String.valueOf(testId2)).when(file2).getName();
+        final long testId3 = 7355;
+        final File file3 = mock(File.class);
+        doReturn(String.valueOf(testId3)).when(file3).getName();
+
+        doReturn(new File[] {file1, file2, file3}).when(mBlobsDir).listFiles();
+        mService.addKnownIdsForTest(testId1, testId3);
+
+        // Invoke test method
+        mService.handleIdleMaintenanceLocked();
+
+        // Verify unknown blobs are delete
+        verify(file1, never()).delete();
+        verify(file2).delete();
+        verify(file3, never()).delete();
+    }
+
+    @Test
+    public void testHandleIdleMaintenance_deleteStaleSessions() throws Exception {
+        // Setup sessions
+        final File sessionFile1 = mock(File.class);
+        doReturn(System.currentTimeMillis() - SESSION_EXPIRY_TIMEOUT_MILLIS + 1000)
+                .when(sessionFile1).lastModified();
+        final long sessionId1 = 342;
+        final BlobHandle blobHandle1 = BlobHandle.createWithSha256("digest1".getBytes(),
+                "label1", System.currentTimeMillis() - 1000, "tag1");
+        final BlobStoreSession session1 = createBlobStoreSessionMock(TEST_PKG1, TEST_UID1,
+                sessionId1, sessionFile1, blobHandle1);
+        mUserSessions.append(sessionId1, session1);
+
+        final File sessionFile2 = mock(File.class);
+        doReturn(System.currentTimeMillis() - 20000)
+                .when(sessionFile2).lastModified();
+        final long sessionId2 = 4597;
+        final BlobHandle blobHandle2 = BlobHandle.createWithSha256("digest2".getBytes(),
+                "label2", System.currentTimeMillis() + 20000, "tag2");
+        final BlobStoreSession session2 = createBlobStoreSessionMock(TEST_PKG2, TEST_UID2,
+                sessionId2, sessionFile2, blobHandle2);
+        mUserSessions.append(sessionId2, session2);
+
+        final File sessionFile3 = mock(File.class);
+        doReturn(System.currentTimeMillis() - SESSION_EXPIRY_TIMEOUT_MILLIS - 2000)
+                .when(sessionFile3).lastModified();
+        final long sessionId3 = 9484;
+        final BlobHandle blobHandle3 = BlobHandle.createWithSha256("digest3".getBytes(),
+                "label3", System.currentTimeMillis() + 30000, "tag3");
+        final BlobStoreSession session3 = createBlobStoreSessionMock(TEST_PKG3, TEST_UID3,
+                sessionId3, sessionFile3, blobHandle3);
+        mUserSessions.append(sessionId3, session3);
+
+        mService.addKnownIdsForTest(sessionId1, sessionId2, sessionId3);
+
+        // Invoke test method
+        mService.handleIdleMaintenanceLocked();
+
+        // Verify stale sessions are removed
+        verify(sessionFile1).delete();
+        verify(sessionFile2, never()).delete();
+        verify(sessionFile3).delete();
+
+        assertThat(mUserSessions.size()).isEqualTo(1);
+        assertThat(mUserSessions.get(sessionId2)).isNotNull();
+
+        assertThat(mService.getKnownIdsForTest()).containsExactly(sessionId2);
+    }
+
+    @Test
+    public void testHandleIdleMaintenance_deleteStaleBlobs() throws Exception {
+        // Setup blobs
+        final long blobId1 = 3489;
+        final File blobFile1 = mock(File.class);
+        final BlobHandle blobHandle1 = BlobHandle.createWithSha256("digest1".getBytes(),
+                "label1", System.currentTimeMillis() - 2000, "tag1");
+        final BlobMetadata blobMetadata1 = createBlobMetadataMock(blobId1, blobFile1, true);
+        mUserBlobs.put(blobHandle1, blobMetadata1);
+
+        final long blobId2 = 78974;
+        final File blobFile2 = mock(File.class);
+        final BlobHandle blobHandle2 = BlobHandle.createWithSha256("digest2".getBytes(),
+                "label2", System.currentTimeMillis() + 30000, "tag2");
+        final BlobMetadata blobMetadata2 = createBlobMetadataMock(blobId2, blobFile2, true);
+        mUserBlobs.put(blobHandle2, blobMetadata2);
+
+        final long blobId3 = 97;
+        final File blobFile3 = mock(File.class);
+        final BlobHandle blobHandle3 = BlobHandle.createWithSha256("digest3".getBytes(),
+                "label3", System.currentTimeMillis() + 4400000, "tag3");
+        final BlobMetadata blobMetadata3 = createBlobMetadataMock(blobId3, blobFile3, false);
+        mUserBlobs.put(blobHandle3, blobMetadata3);
+
+        mService.addKnownIdsForTest(blobId1, blobId2, blobId3);
+
+        // Invoke test method
+        mService.handleIdleMaintenanceLocked();
+
+        // Verify stale blobs are removed
+        verify(blobFile1).delete();
+        verify(blobFile2, never()).delete();
+        verify(blobFile3).delete();
+
+        assertThat(mUserBlobs.size()).isEqualTo(1);
+        assertThat(mUserBlobs.get(blobHandle2)).isNotNull();
+
+        assertThat(mService.getKnownIdsForTest()).containsExactly(blobId2);
+    }
+
+    private BlobStoreSession createBlobStoreSessionMock(String ownerPackageName, int ownerUid,
+            long sessionId, File sessionFile) {
+        return createBlobStoreSessionMock(ownerPackageName, ownerUid, sessionId, sessionFile,
+                mock(BlobHandle.class));
+    }
+    private BlobStoreSession createBlobStoreSessionMock(String ownerPackageName, int ownerUid,
+            long sessionId, File sessionFile, BlobHandle blobHandle) {
+        final BlobStoreSession session = mock(BlobStoreSession.class);
+        doReturn(ownerPackageName).when(session).getOwnerPackageName();
+        doReturn(ownerUid).when(session).getOwnerUid();
+        doReturn(sessionId).when(session).getSessionId();
+        doReturn(sessionFile).when(session).getSessionFile();
+        doReturn(blobHandle).when(session).getBlobHandle();
+        return session;
+    }
+
+    private BlobMetadata createBlobMetadataMock(long blobId, File blobFile, boolean hasLeases) {
+        final BlobMetadata blobMetadata = mock(BlobMetadata.class);
+        doReturn(blobId).when(blobMetadata).getBlobId();
+        doReturn(blobFile).when(blobMetadata).getBlobFile();
+        doReturn(hasLeases).when(blobMetadata).hasLeases();
+        return blobMetadata;
+    }
+
+    private class TestHandler extends Handler {
+        TestHandler(Looper looper) {
+            super(looper);
+        }
+
+        @Override
+        public void dispatchMessage(Message msg) {
+            // Ignore all messages
+        }
+    }
+
+    private class TestInjector extends Injector {
+        @Override
+        public Handler initializeMessageHandler() {
+            return mHandler;
+        }
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java
index 9e1ddb1..6d15302 100644
--- a/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/display/LocalDisplayAdapterTest.java
@@ -20,6 +20,8 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mockitoSession;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 
@@ -29,6 +31,7 @@
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.Looper;
+import android.view.Display;
 import android.view.DisplayAddress;
 import android.view.SurfaceControl;
 
@@ -47,6 +50,7 @@
 import org.mockito.quality.Strictness;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.LinkedList;
 
 
@@ -109,10 +113,11 @@
      */
     @Test
     public void testPrivateDisplay() throws Exception {
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_A), createDummyDisplayInfo()));
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_B), createDummyDisplayInfo()));
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_C), createDummyDisplayInfo()));
+        setUpDisplay(new FakeDisplay(PORT_A));
+        setUpDisplay(new FakeDisplay(PORT_B));
+        setUpDisplay(new FakeDisplay(PORT_C));
         updateAvailableDisplays();
+
         doReturn(new int[]{ PORT_B }).when(mMockedResources)
                 .getIntArray(com.android.internal.R.array.config_localPrivateDisplayPorts);
         mAdapter.registerLocked();
@@ -135,9 +140,10 @@
      */
     @Test
     public void testPublicDisplaysForNoConfigLocalPrivateDisplayPorts() throws Exception {
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_A), createDummyDisplayInfo()));
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_C), createDummyDisplayInfo()));
+        setUpDisplay(new FakeDisplay(PORT_A));
+        setUpDisplay(new FakeDisplay(PORT_C));
         updateAvailableDisplays();
+
         // config_localPrivateDisplayPorts is null
         mAdapter.registerLocked();
 
@@ -166,8 +172,8 @@
     @Test
     public void testDpiValues() throws Exception {
         // needs default one always
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_A), createDummyDisplayInfo()));
-        setUpDisplay(new DisplayConfig(createDisplayAddress(PORT_B), createDummyDisplayInfo()));
+        setUpDisplay(new FakeDisplay(PORT_A));
+        setUpDisplay(new FakeDisplay(PORT_B));
         updateAvailableDisplays();
         mAdapter.registerLocked();
 
@@ -181,6 +187,67 @@
                 16000);
     }
 
+    @Test
+    public void testAfterDisplayChange_ModesAreUpdated() throws Exception {
+        SurfaceControl.DisplayConfig displayInfo = createFakeDisplayConfig(1920, 1080, 60f);
+        SurfaceControl.DisplayConfig[] configs =
+                new SurfaceControl.DisplayConfig[]{displayInfo};
+        FakeDisplay display = new FakeDisplay(PORT_A, configs, 0);
+        setUpDisplay(display);
+        updateAvailableDisplays();
+        mAdapter.registerLocked();
+        waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
+
+        assertThat(mListener.addedDisplays.size()).isEqualTo(1);
+        assertThat(mListener.changedDisplays).isEmpty();
+
+        DisplayDeviceInfo displayDeviceInfo = mListener.addedDisplays.get(
+                0).getDisplayDeviceInfoLocked();
+
+        assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(configs.length);
+        assertModeIsSupported(displayDeviceInfo.supportedModes, displayInfo);
+
+        Display.Mode defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
+        assertThat(defaultMode.matches(displayInfo.width, displayInfo.height,
+                displayInfo.refreshRate)).isTrue();
+
+        Display.Mode activeMode = getModeById(displayDeviceInfo, displayDeviceInfo.modeId);
+        assertThat(activeMode.matches(displayInfo.width, displayInfo.height,
+                displayInfo.refreshRate)).isTrue();
+
+        // Change the display
+        SurfaceControl.DisplayConfig addedDisplayInfo = createFakeDisplayConfig(3840, 2160,
+                60f);
+        configs = new SurfaceControl.DisplayConfig[]{displayInfo, addedDisplayInfo};
+        display.configs = configs;
+        display.activeConfig = 1;
+        setUpDisplay(display);
+        mAdapter.registerLocked();
+        waitForHandlerToComplete(mHandler, HANDLER_WAIT_MS);
+
+        assertThat(SurfaceControl.getActiveConfig(display.token)).isEqualTo(1);
+        assertThat(SurfaceControl.getDisplayConfigs(display.token).length).isEqualTo(2);
+
+        assertThat(mListener.addedDisplays.size()).isEqualTo(1);
+        assertThat(mListener.changedDisplays.size()).isEqualTo(1);
+
+        DisplayDevice displayDevice = mListener.changedDisplays.get(0);
+        displayDevice.applyPendingDisplayDeviceInfoChangesLocked();
+        displayDeviceInfo = displayDevice.getDisplayDeviceInfoLocked();
+
+        assertThat(displayDeviceInfo.supportedModes.length).isEqualTo(configs.length);
+        assertModeIsSupported(displayDeviceInfo.supportedModes, displayInfo);
+        assertModeIsSupported(displayDeviceInfo.supportedModes, addedDisplayInfo);
+
+        activeMode = getModeById(displayDeviceInfo, displayDeviceInfo.modeId);
+        assertThat(activeMode.matches(addedDisplayInfo.width, addedDisplayInfo.height,
+                addedDisplayInfo.refreshRate)).isTrue();
+
+        defaultMode = getModeById(displayDeviceInfo, displayDeviceInfo.defaultModeId);
+        assertThat(defaultMode.matches(addedDisplayInfo.width, addedDisplayInfo.height,
+                addedDisplayInfo.refreshRate)).isTrue();
+    }
+
     private void assertDisplayDpi(DisplayDeviceInfo info, int expectedPort,
                                   float expectedXdpi,
                                   float expectedYDpi,
@@ -193,32 +260,56 @@
         assertEquals(expectedDensityDpi, info.densityDpi);
     }
 
-    private class DisplayConfig {
-        public final DisplayAddress.Physical address;
-        public final IBinder displayToken = new Binder();
-        public final SurfaceControl.PhysicalDisplayInfo displayInfo;
+    private Display.Mode getModeById(DisplayDeviceInfo displayDeviceInfo, int modeId) {
+        return Arrays.stream(displayDeviceInfo.supportedModes)
+                .filter(mode -> mode.getModeId() == modeId)
+                .findFirst()
+                .get();
+    }
 
-        private DisplayConfig(
-                DisplayAddress.Physical address, SurfaceControl.PhysicalDisplayInfo displayInfo) {
-            this.address = address;
-            this.displayInfo = displayInfo;
+    private void assertModeIsSupported(Display.Mode[] supportedModes,
+            SurfaceControl.DisplayConfig mode) {
+        assertThat(Arrays.stream(supportedModes).anyMatch(
+                x -> x.matches(mode.width, mode.height, mode.refreshRate))).isTrue();
+    }
+
+    private static class FakeDisplay {
+        public final DisplayAddress.Physical address;
+        public final IBinder token = new Binder();
+        public final SurfaceControl.DisplayInfo info;
+        public SurfaceControl.DisplayConfig[] configs;
+        public int activeConfig;
+
+        private FakeDisplay(int port) {
+            this.address = createDisplayAddress(port);
+            this.info = createFakeDisplayInfo();
+            this.configs = new SurfaceControl.DisplayConfig[]{
+                    createFakeDisplayConfig(800, 600, 60f)
+            };
+            this.activeConfig = 0;
+        }
+
+        private FakeDisplay(int port, SurfaceControl.DisplayConfig[] configs, int activeConfig) {
+            this.address = createDisplayAddress(port);
+            this.info = createFakeDisplayInfo();
+            this.configs = configs;
+            this.activeConfig = activeConfig;
         }
     }
 
-    private void setUpDisplay(DisplayConfig config) {
-        mAddresses.add(config.address);
-        doReturn(config.displayToken).when(() ->
-                SurfaceControl.getPhysicalDisplayToken(config.address.getPhysicalDisplayId()));
-        doReturn(new SurfaceControl.PhysicalDisplayInfo[]{
-                config.displayInfo
-        }).when(() -> SurfaceControl.getDisplayConfigs(config.displayToken));
-        doReturn(0).when(() -> SurfaceControl.getActiveConfig(config.displayToken));
-        doReturn(0).when(() -> SurfaceControl.getActiveColorMode(config.displayToken));
-        doReturn(new int[]{
-                0
-        }).when(() -> SurfaceControl.getDisplayColorModes(config.displayToken));
+    private void setUpDisplay(FakeDisplay display) {
+        mAddresses.add(display.address);
+        doReturn(display.token).when(() ->
+                SurfaceControl.getPhysicalDisplayToken(display.address.getPhysicalDisplayId()));
+        doReturn(display.info).when(() -> SurfaceControl.getDisplayInfo(display.token));
+        doReturn(display.configs).when(
+                () -> SurfaceControl.getDisplayConfigs(display.token));
+        doReturn(display.activeConfig).when(() -> SurfaceControl.getActiveConfig(display.token));
+        doReturn(0).when(() -> SurfaceControl.getActiveColorMode(display.token));
+        doReturn(new int[] { 0 }).when(
+                () -> SurfaceControl.getDisplayColorModes(display.token));
         doReturn(new SurfaceControl.DesiredDisplayConfigSpecs(0, 60.f, 60.f))
-                .when(() -> SurfaceControl.getDesiredDisplayConfigSpecs(config.displayToken));
+                .when(() -> SurfaceControl.getDesiredDisplayConfigSpecs(display.token));
     }
 
     private void updateAvailableDisplays() {
@@ -235,18 +326,23 @@
         return DisplayAddress.fromPortAndModel((byte) port, DISPLAY_MODEL);
     }
 
-    private static SurfaceControl.PhysicalDisplayInfo createDummyDisplayInfo() {
-        SurfaceControl.PhysicalDisplayInfo info = new SurfaceControl.PhysicalDisplayInfo();
+    private static SurfaceControl.DisplayInfo createFakeDisplayInfo() {
+        final SurfaceControl.DisplayInfo info = new SurfaceControl.DisplayInfo();
         info.density = 100;
-        info.xDpi = 100;
-        info.yDpi = 100;
-        info.secure = false;
-        info.width = 800;
-        info.height = 600;
-
         return info;
     }
 
+    private static SurfaceControl.DisplayConfig createFakeDisplayConfig(int width, int height,
+            float refreshRate) {
+        final SurfaceControl.DisplayConfig config = new SurfaceControl.DisplayConfig();
+        config.width = width;
+        config.height = height;
+        config.refreshRate = refreshRate;
+        config.xDpi = 100;
+        config.yDpi = 100;
+        return config;
+    }
+
     private void waitForHandlerToComplete(Handler handler, long waitTimeMs)
             throws InterruptedException {
         final Object lock = new Object();
@@ -262,17 +358,19 @@
 
     private class TestListener implements DisplayAdapter.Listener {
         public ArrayList<DisplayDevice> addedDisplays = new ArrayList<>();
+        public ArrayList<DisplayDevice> changedDisplays = new ArrayList<>();
 
         @Override
         public void onDisplayDeviceEvent(DisplayDevice device, int event) {
             if (event == DisplayAdapter.DISPLAY_DEVICE_EVENT_ADDED) {
                 addedDisplays.add(device);
+            } else if (event == DisplayAdapter.DISPLAY_DEVICE_EVENT_CHANGED) {
+                changedDisplays.add(device);
             }
         }
 
         @Override
         public void onTraversalRequested() {
-
         }
     }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/job/JobSchedulerServiceTest.java b/services/tests/mockingservicestests/src/com/android/server/job/JobSchedulerServiceTest.java
index e0e374b..00495f3 100644
--- a/services/tests/mockingservicestests/src/com/android/server/job/JobSchedulerServiceTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/job/JobSchedulerServiceTest.java
@@ -683,8 +683,6 @@
                 mService.new MaybeReadyJobQueueFunctor();
         mService.mConstants.MIN_READY_NON_ACTIVE_JOBS_COUNT = 5;
         mService.mConstants.MAX_NON_ACTIVE_JOB_BATCH_DELAY_MS = HOUR_IN_MILLIS;
-        mService.mConstants.MIN_CONNECTIVITY_COUNT = 2;
-        mService.mConstants.MIN_READY_JOBS_COUNT = 1;
 
         JobStatus job = createJobStatus(
                 "testRareJobBatching",
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/AppForegroundHelperTest.java b/services/tests/mockingservicestests/src/com/android/server/location/AppForegroundHelperTest.java
new file mode 100644
index 0000000..38ec4ce
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/AppForegroundHelperTest.java
@@ -0,0 +1,112 @@
+/*
+ * 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.server.location;
+
+import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND;
+import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND_SERVICE;
+import static android.app.ActivityManager.RunningAppProcessInfo.IMPORTANCE_VISIBLE;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.timeout;
+import static org.mockito.Mockito.verify;
+import static org.mockito.MockitoAnnotations.initMocks;
+
+import android.app.ActivityManager;
+import android.content.Context;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class AppForegroundHelperTest {
+
+    private static final long TIMEOUT_MS = 5000;
+
+    @Mock private Context mContext;
+    @Mock private ActivityManager mActivityManager;
+
+    private List<ActivityManager.OnUidImportanceListener> mListeners = new ArrayList<>();
+
+    private AppForegroundHelper mHelper;
+
+    @Before
+    public void setUp() {
+        initMocks(this);
+
+        doReturn(mActivityManager).when(mContext).getSystemService(ActivityManager.class);
+        doAnswer(invocation -> {
+            mListeners.add(invocation.getArgument(0));
+            return null;
+        }).when(mActivityManager).addOnUidImportanceListener(any(
+                ActivityManager.OnUidImportanceListener.class), eq(IMPORTANCE_FOREGROUND_SERVICE));
+
+        mHelper = new AppForegroundHelper(mContext);
+        mHelper.onSystemReady();
+    }
+
+    private void setImportance(int uid, int importance) {
+        doReturn(importance).when(mActivityManager).getUidImportance(uid);
+        for (ActivityManager.OnUidImportanceListener listener : mListeners) {
+            listener.onUidImportance(uid, importance);
+        }
+    }
+
+    @Test
+    public void testListeners() {
+        AppForegroundHelper.AppForegroundListener listener = mock(
+                AppForegroundHelper.AppForegroundListener.class);
+        mHelper.addListener(listener);
+
+        setImportance(0, IMPORTANCE_FOREGROUND);
+        verify(listener, timeout(TIMEOUT_MS)).onAppForegroundChanged(0, true);
+
+        setImportance(1, IMPORTANCE_FOREGROUND_SERVICE);
+        verify(listener, timeout(TIMEOUT_MS)).onAppForegroundChanged(1, true);
+
+        setImportance(2, IMPORTANCE_VISIBLE);
+        verify(listener, timeout(TIMEOUT_MS)).onAppForegroundChanged(2, false);
+    }
+
+    @Test
+    public void testIsAppForeground() {
+        setImportance(0, IMPORTANCE_FOREGROUND);
+        assertThat(mHelper.isAppForeground(0)).isEqualTo(true);
+
+        setImportance(0, IMPORTANCE_FOREGROUND_SERVICE);
+        assertThat(mHelper.isAppForeground(0)).isEqualTo(true);
+
+        setImportance(0, IMPORTANCE_VISIBLE);
+        assertThat(mHelper.isAppForeground(0)).isEqualTo(false);
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java b/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java
new file mode 100644
index 0000000..f2246da
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/LocationFudgerTest.java
@@ -0,0 +1,165 @@
+/*
+ * 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.server.location;
+
+import static androidx.test.ext.truth.location.LocationSubject.assertThat;
+
+import static com.android.server.location.LocationUtils.createLocation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.location.Location;
+import android.platform.test.annotations.Presubmit;
+import android.util.Log;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.time.Clock;
+import java.time.Instant;
+import java.time.ZoneId;
+import java.util.ArrayList;
+import java.util.Random;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class LocationFudgerTest {
+
+    private static final String TAG = "LocationFudgerTest";
+
+    private static final double APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR = 111_000;
+    private static final float ACCURACY_M = 2000;
+    private static final float MAX_COARSE_FUDGE_DISTANCE_M =
+            (float) Math.sqrt(2 * ACCURACY_M * ACCURACY_M);
+
+    private Random mRandom;
+
+    private LocationFudger mFudger;
+
+    @Before
+    public void setUp() {
+        long seed = System.currentTimeMillis();
+        Log.i(TAG, "location random seed: " + seed);
+
+        mRandom = new Random(seed);
+        mFudger = new LocationFudger(
+                ACCURACY_M,
+                Clock.fixed(Instant.ofEpochMilli(0), ZoneId.systemDefault()),
+                mRandom);
+    }
+
+    @Test
+    public void testCoarsen() {
+        // test that the coarsened location is not the same as the fine location and no leaks
+        for (int i = 0; i < 100; i++) {
+            Location fine = createLocation("test", mRandom);
+            fine.setBearing(1);
+            fine.setSpeed(1);
+            fine.setAltitude(1);
+
+            Location coarse = mFudger.createCoarse(fine);
+
+            assertThat(coarse).isNotNull();
+            assertThat(coarse).isNotSameAs(fine);
+            assertThat(coarse.hasBearing()).isFalse();
+            assertThat(coarse.hasSpeed()).isFalse();
+            assertThat(coarse.hasAltitude()).isFalse();
+            assertThat(coarse.getAccuracy()).isEqualTo(ACCURACY_M);
+            assertThat(coarse.distanceTo(fine)).isGreaterThan(1F);
+            assertThat(coarse).isNearby(fine, MAX_COARSE_FUDGE_DISTANCE_M);
+        }
+    }
+
+    @Test
+    public void testCoarsen_Consistent() {
+        // test that coarsening the same location will always return the same coarse location
+        // (and thus that averaging to eliminate random noise won't work)
+        for (int i = 0; i < 100; i++) {
+            Location fine = createLocation("test", mRandom);
+            Location coarse = mFudger.createCoarse(fine);
+            assertThat(mFudger.createCoarse(new Location(fine))).isEqualTo(coarse);
+            assertThat(mFudger.createCoarse(new Location(fine))).isEqualTo(coarse);
+        }
+    }
+
+    @Test
+    public void testCoarsen_AvgMany() {
+        // test that a set of locations normally distributed around the user's real location still
+        // cannot be easily average to reveal the user's real location
+
+        int passed = 0;
+        int iterations = 100;
+        for (int j = 0; j < iterations; j++) {
+            Location fine = createLocation("test", mRandom);
+
+            // generate a point cloud around a single location
+            ArrayList<Location> finePoints = new ArrayList<>(100);
+            for (int i = 0; i < 100; i++) {
+                finePoints.add(step(fine, mRandom.nextGaussian() * ACCURACY_M));
+            }
+
+            // generate the coarsened version of that point cloud
+            ArrayList<Location> coarsePoints = new ArrayList<>(100);
+            for (int i = 0; i < 100; i++) {
+                coarsePoints.add(mFudger.createCoarse(finePoints.get(i)));
+            }
+
+            double avgFineLatitude = finePoints.stream().mapToDouble(
+                    Location::getLatitude).average()
+                    .orElseThrow(IllegalStateException::new);
+            double avgFineLongitude = finePoints.stream().mapToDouble(
+                    Location::getLongitude).average()
+                    .orElseThrow(IllegalStateException::new);
+            Location fineAvg = createLocation("test", avgFineLatitude, avgFineLongitude, 0);
+
+            double avgCoarseLatitude = coarsePoints.stream().mapToDouble(
+                    Location::getLatitude).average()
+                    .orElseThrow(IllegalStateException::new);
+            double avgCoarseLongitude = coarsePoints.stream().mapToDouble(
+                    Location::getLongitude).average()
+                    .orElseThrow(IllegalStateException::new);
+            Location coarseAvg = createLocation("test", avgCoarseLatitude, avgCoarseLongitude, 0);
+
+            if (coarseAvg.distanceTo(fine) > fineAvg.distanceTo(fine)) {
+                passed++;
+            }
+        }
+
+        // very generally speaking, the closer the initial fine point is to a grid point, the more
+        // accurate the coarsened average will be. we use 70% as a lower bound by -very- roughly
+        // taking the area within a grid where we expect a reasonable percentage of points generated
+        // by step() to fall in another grid square. this likely doesn't have much mathematical
+        // validity, but it serves as a sanity test as least.
+        assertThat(passed / (double) iterations).isGreaterThan(.70);
+    }
+
+    // step in a random direction by distance - assume cartesian
+    private Location step(Location input, double distanceM) {
+        double radians = mRandom.nextDouble() * 2 * Math.PI;
+        double deltaXM = Math.cos(radians) * distanceM;
+        double deltaYM = Math.sin(radians) * distanceM;
+        return createLocation("test",
+                input.getLatitude() + deltaXM / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR,
+                input.getLongitude() + deltaYM / APPROXIMATE_METERS_PER_DEGREE_AT_EQUATOR,
+                0);
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/LocationUtils.java b/services/tests/mockingservicestests/src/com/android/server/location/LocationUtils.java
new file mode 100644
index 0000000..decb3a6
--- /dev/null
+++ b/services/tests/mockingservicestests/src/com/android/server/location/LocationUtils.java
@@ -0,0 +1,51 @@
+/*
+ * 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.server.location;
+
+import android.location.Location;
+import android.os.SystemClock;
+
+import java.util.Random;
+
+public final class LocationUtils {
+
+    private static final double MIN_LATITUDE = -90D;
+    private static final double MAX_LATITUDE = 90D;
+    private static final double MIN_LONGITUDE = -180D;
+    private static final double MAX_LONGITUDE = 180D;
+
+    private static final float MIN_ACCURACY = 1;
+    private static final float MAX_ACCURACY = 100;
+
+    public static Location createLocation(String provider, Random random) {
+        return createLocation(provider,
+                MIN_LATITUDE + random.nextDouble() * (MAX_LATITUDE - MIN_LATITUDE),
+                MIN_LONGITUDE + random.nextDouble() * (MAX_LONGITUDE - MIN_LONGITUDE),
+                MIN_ACCURACY + random.nextFloat() * (MAX_ACCURACY - MIN_ACCURACY));
+    }
+
+    public static Location createLocation(String provider, double latitude, double longitude,
+            float accuracy) {
+        Location location = new Location(provider);
+        location.setLatitude(latitude);
+        location.setLongitude(longitude);
+        location.setAccuracy(accuracy);
+        location.setTime(System.currentTimeMillis());
+        location.setElapsedRealtimeNanos(SystemClock.elapsedRealtimeNanos());
+        return location;
+    }
+}
diff --git a/services/tests/mockingservicestests/src/com/android/server/location/UserInfoStoreTest.java b/services/tests/mockingservicestests/src/com/android/server/location/UserInfoHelperTest.java
similarity index 60%
rename from services/tests/mockingservicestests/src/com/android/server/location/UserInfoStoreTest.java
rename to services/tests/mockingservicestests/src/com/android/server/location/UserInfoHelperTest.java
index 06fb102..71e79b3 100644
--- a/services/tests/mockingservicestests/src/com/android/server/location/UserInfoStoreTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/location/UserInfoHelperTest.java
@@ -26,6 +26,7 @@
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 
 import android.app.ActivityManager;
@@ -43,6 +44,7 @@
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.dx.mockito.inline.extended.StaticMockitoSession;
+import com.android.server.location.UserInfoHelper.UserListener;
 
 import org.junit.After;
 import org.junit.Before;
@@ -57,7 +59,7 @@
 @Presubmit
 @SmallTest
 @RunWith(AndroidJUnit4.class)
-public class UserInfoStoreTest {
+public class UserInfoHelperTest {
 
     private static final int USER1_ID = 1;
     private static final int USER1_MANAGED_ID = 11;
@@ -72,7 +74,7 @@
     private StaticMockitoSession mMockingSession;
     private List<BroadcastReceiver> mBroadcastReceivers = new ArrayList<>();
 
-    private UserInfoStore mStore;
+    private UserInfoHelper mHelper;
 
     @Before
     public void setUp() {
@@ -97,8 +99,8 @@
 
         doReturn(USER1_ID).when(ActivityManager::getCurrentUser);
 
-        mStore = new UserInfoStore(mContext);
-        mStore.onSystemReady();
+        mHelper = new UserInfoHelper(mContext);
+        mHelper.onSystemReady();
     }
 
     @After
@@ -117,61 +119,88 @@
         }
     }
 
+    private void startUser(int userId) {
+        Intent intent = new Intent(Intent.ACTION_USER_STARTED).putExtra(Intent.EXTRA_USER_HANDLE,
+                userId);
+        for (BroadcastReceiver broadcastReceiver : mBroadcastReceivers) {
+            broadcastReceiver.onReceive(mContext, intent);
+        }
+    }
+
+    private void stopUser(int userId) {
+        Intent intent = new Intent(Intent.ACTION_USER_STOPPED).putExtra(Intent.EXTRA_USER_HANDLE,
+                userId);
+        for (BroadcastReceiver broadcastReceiver : mBroadcastReceivers) {
+            broadcastReceiver.onReceive(mContext, intent);
+        }
+    }
+
     @Test
-    public void testListeners() {
-        UserInfoStore.UserChangedListener listener = mock(UserInfoStore.UserChangedListener.class);
-        mStore.addListener(listener);
+    public void testListener_SwitchUser() {
+        UserListener listener = mock(UserListener.class);
+        mHelper.addListener(listener);
 
         switchUser(USER1_ID);
         verify(listener, never()).onUserChanged(anyInt(), anyInt());
 
         switchUser(USER2_ID);
-        verify(listener).onUserChanged(USER1_ID, USER2_ID);
+        verify(listener, times(1)).onUserChanged(USER1_ID, UserListener.USER_SWITCHED);
+        verify(listener, times(1)).onUserChanged(USER2_ID, UserListener.USER_SWITCHED);
 
         switchUser(USER1_ID);
-        verify(listener).onUserChanged(USER2_ID, USER1_ID);
+        verify(listener, times(2)).onUserChanged(USER1_ID, UserListener.USER_SWITCHED);
+        verify(listener, times(2)).onUserChanged(USER2_ID, UserListener.USER_SWITCHED);
     }
 
     @Test
-    public void testCurrentUser() {
-        assertThat(mStore.getCurrentUserId()).isEqualTo(USER1_ID);
+    public void testListener_StartUser() {
+        UserListener listener = mock(UserListener.class);
+        mHelper.addListener(listener);
+
+        startUser(USER1_ID);
+        verify(listener).onUserChanged(USER1_ID, UserListener.USER_STARTED);
+
+        startUser(USER2_ID);
+        verify(listener).onUserChanged(USER2_ID, UserListener.USER_STARTED);
+    }
+
+    @Test
+    public void testListener_StopUser() {
+        UserListener listener = mock(UserListener.class);
+        mHelper.addListener(listener);
+
+        stopUser(USER1_ID);
+        verify(listener).onUserChanged(USER1_ID, UserListener.USER_STOPPED);
+
+        stopUser(USER2_ID);
+        verify(listener).onUserChanged(USER2_ID, UserListener.USER_STOPPED);
+    }
+
+    @Test
+    public void testCurrentUserIds() {
+        assertThat(mHelper.getCurrentUserIds()).isEqualTo(USER1_PROFILES);
 
         switchUser(USER2_ID);
 
-        assertThat(mStore.getCurrentUserId()).isEqualTo(USER2_ID);
+        assertThat(mHelper.getCurrentUserIds()).isEqualTo(USER2_PROFILES);
 
         switchUser(USER1_ID);
 
-        assertThat(mStore.getCurrentUserId()).isEqualTo(USER1_ID);
+        assertThat(mHelper.getCurrentUserIds()).isEqualTo(USER1_PROFILES);
     }
 
     @Test
-    public void testIsCurrentUserOrProfile() {
-        assertThat(mStore.isCurrentUserOrProfile(USER1_ID)).isTrue();
-        assertThat(mStore.isCurrentUserOrProfile(USER1_MANAGED_ID)).isTrue();
-        assertThat(mStore.isCurrentUserOrProfile(USER2_ID)).isFalse();
-        assertThat(mStore.isCurrentUserOrProfile(USER2_MANAGED_ID)).isFalse();
+    public void testIsCurrentUserId() {
+        assertThat(mHelper.isCurrentUserId(USER1_ID)).isTrue();
+        assertThat(mHelper.isCurrentUserId(USER1_MANAGED_ID)).isTrue();
+        assertThat(mHelper.isCurrentUserId(USER2_ID)).isFalse();
+        assertThat(mHelper.isCurrentUserId(USER2_MANAGED_ID)).isFalse();
 
         switchUser(USER2_ID);
 
-        assertThat(mStore.isCurrentUserOrProfile(USER1_ID)).isFalse();
-        assertThat(mStore.isCurrentUserOrProfile(USER2_ID)).isTrue();
-        assertThat(mStore.isCurrentUserOrProfile(USER1_MANAGED_ID)).isFalse();
-        assertThat(mStore.isCurrentUserOrProfile(USER2_MANAGED_ID)).isTrue();
-    }
-
-    @Test
-    public void testGetParentUserId() {
-        assertThat(mStore.getParentUserId(USER1_ID)).isEqualTo(USER1_ID);
-        assertThat(mStore.getParentUserId(USER1_MANAGED_ID)).isEqualTo(USER1_ID);
-        assertThat(mStore.getParentUserId(USER2_ID)).isEqualTo(USER2_ID);
-        assertThat(mStore.getParentUserId(USER2_MANAGED_ID)).isEqualTo(USER2_ID);
-
-        switchUser(USER2_ID);
-
-        assertThat(mStore.getParentUserId(USER1_ID)).isEqualTo(USER1_ID);
-        assertThat(mStore.getParentUserId(USER2_ID)).isEqualTo(USER2_ID);
-        assertThat(mStore.getParentUserId(USER1_MANAGED_ID)).isEqualTo(USER1_ID);
-        assertThat(mStore.getParentUserId(USER2_MANAGED_ID)).isEqualTo(USER2_ID);
+        assertThat(mHelper.isCurrentUserId(USER1_ID)).isFalse();
+        assertThat(mHelper.isCurrentUserId(USER2_ID)).isTrue();
+        assertThat(mHelper.isCurrentUserId(USER1_MANAGED_ID)).isFalse();
+        assertThat(mHelper.isCurrentUserId(USER2_MANAGED_ID)).isTrue();
     }
 }
diff --git a/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRule.java b/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRule.java
index 8e9d7ee..3566aee 100644
--- a/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRule.java
+++ b/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRule.java
@@ -21,6 +21,7 @@
 import com.android.dx.mockito.inline.extended.StaticMockitoSession;
 import com.android.dx.mockito.inline.extended.StaticMockitoSessionBuilder;
 
+import org.junit.AssumptionViolatedException;
 import org.junit.rules.TestRule;
 import org.junit.rules.TestWatcher;
 import org.junit.runner.Description;
@@ -100,6 +101,11 @@
             }
 
             @Override
+            protected void skipped(AssumptionViolatedException e, Description description) {
+                tearDown(e);
+            }
+
+            @Override
             protected void failed(Throwable e, Description description) {
                 tearDown(e);
             }
diff --git a/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRuleTest.java b/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRuleTest.java
index b7e71de..8e0ccf0 100644
--- a/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRuleTest.java
+++ b/services/tests/mockingservicestests/src/com/android/server/testables/StaticMockFixtureRuleTest.java
@@ -16,8 +16,10 @@
 
 package com.android.server.testables;
 
+import static org.junit.Assert.fail;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
@@ -30,6 +32,7 @@
 import com.android.dx.mockito.inline.extended.StaticMockitoSessionBuilder;
 
 import org.junit.After;
+import org.junit.AssumptionViolatedException;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.Description;
@@ -57,6 +60,8 @@
     @Mock private Supplier<StaticMockFixture> mSupplyA;
     @Mock private Supplier<StaticMockFixture> mSupplyB;
     @Mock private Statement mStatement;
+    @Mock private Statement mSkipStatement;
+    @Mock private Statement mThrowStatement;
     @Mock private Description mDescription;
 
     @Before
@@ -91,17 +96,22 @@
         when(mB1.setUpMockedClasses(any())).thenAnswer(invocation -> invocation.getArgument(0));
         doNothing().when(mB1).setUpMockBehaviors();
         doNothing().when(mStatement).evaluate();
+        doThrow(new AssumptionViolatedException("bad assumption, test should be skipped"))
+                .when(mSkipStatement).evaluate();
+        doThrow(new IllegalArgumentException("bad argument, test should be failed"))
+                .when(mThrowStatement).evaluate();
         doNothing().when(mA1).tearDown();
         doNothing().when(mB1).tearDown();
     }
 
     private InOrder mocksInOrder()  {
-        return inOrder(mSessionBuilder, mSession, mSupplyA, mSupplyB,
-                mA1, mA2, mB1, mB2, mStatement, mDescription);
+        return inOrder(mSessionBuilder, mSession, mSupplyA, mSupplyB, mA1, mA2, mB1, mB2,
+                mStatement, mSkipStatement, mThrowStatement, mDescription);
     }
 
     private void verifyNoMoreImportantMockInteractions()  {
-        verifyNoMoreInteractions(mSupplyA, mSupplyB, mA1, mA2, mB1, mB2, mStatement);
+        verifyNoMoreInteractions(mSupplyA, mSupplyB, mA1, mA2, mB1, mB2, mStatement,
+                mSkipStatement, mThrowStatement);
     }
 
     @Test
@@ -183,4 +193,66 @@
 
         verifyNoMoreImportantMockInteractions();
     }
+
+    @Test
+    public void testTearDownOnSkippedTests() throws Throwable {
+        InOrder inOrder = mocksInOrder();
+
+        StaticMockFixtureRule rule = new StaticMockFixtureRule(mA1, mB1) {
+            @Override public StaticMockitoSessionBuilder getSessionBuilder() {
+                return mSessionBuilder;
+            }
+        };
+        Statement skipStatement = rule.apply(mSkipStatement, mDescription);
+
+        inOrder.verify(mA1).setUpMockedClasses(any(StaticMockitoSessionBuilder.class));
+        inOrder.verify(mB1).setUpMockedClasses(any(StaticMockitoSessionBuilder.class));
+        inOrder.verify(mA1).setUpMockBehaviors();
+        inOrder.verify(mB1).setUpMockBehaviors();
+
+        try {
+            skipStatement.evaluate();
+            fail("AssumptionViolatedException should have been thrown");
+        } catch (AssumptionViolatedException e) {
+            // expected
+        }
+
+        inOrder.verify(mSkipStatement).evaluate();
+        // note: tearDown in reverse order
+        inOrder.verify(mB1).tearDown();
+        inOrder.verify(mA1).tearDown();
+
+        verifyNoMoreImportantMockInteractions();
+    }
+
+    @Test
+    public void testTearDownOnFailedTests() throws Throwable {
+        InOrder inOrder = mocksInOrder();
+
+        StaticMockFixtureRule rule = new StaticMockFixtureRule(mA1, mB1) {
+            @Override public StaticMockitoSessionBuilder getSessionBuilder() {
+                return mSessionBuilder;
+            }
+        };
+        Statement failStatement = rule.apply(mThrowStatement, mDescription);
+
+        inOrder.verify(mA1).setUpMockedClasses(any(StaticMockitoSessionBuilder.class));
+        inOrder.verify(mB1).setUpMockedClasses(any(StaticMockitoSessionBuilder.class));
+        inOrder.verify(mA1).setUpMockBehaviors();
+        inOrder.verify(mB1).setUpMockBehaviors();
+
+        try {
+            failStatement.evaluate();
+            fail("IllegalArgumentException should have been thrown");
+        } catch (IllegalArgumentException e) {
+            // expected
+        }
+
+        inOrder.verify(mThrowStatement).evaluate();
+        // note: tearDown in reverse order
+        inOrder.verify(mB1).tearDown();
+        inOrder.verify(mA1).tearDown();
+
+        verifyNoMoreImportantMockInteractions();
+    }
 }
diff --git a/services/tests/servicestests/Android.bp b/services/tests/servicestests/Android.bp
index 556f636..bf2b9be 100644
--- a/services/tests/servicestests/Android.bp
+++ b/services/tests/servicestests/Android.bp
@@ -30,6 +30,7 @@
         "services.usage",
         "guava",
         "androidx.test.core",
+        "androidx.test.ext.truth",
         "androidx.test.runner",
         "androidx.test.rules",
         "mockito-target-minus-junit4",
@@ -73,7 +74,6 @@
         "libbacktrace",
         "libbase",
         "libbinder",
-        "libbinderthreadstate",
         "libc++",
         "libcutils",
         "liblog",
diff --git a/services/tests/servicestests/AndroidManifest.xml b/services/tests/servicestests/AndroidManifest.xml
index b7c9001..1212f20 100644
--- a/services/tests/servicestests/AndroidManifest.xml
+++ b/services/tests/servicestests/AndroidManifest.xml
@@ -65,9 +65,9 @@
     <uses-permission android:name="android.permission.WATCH_APPOPS" />
     <uses-permission android:name="android.permission.FOREGROUND_SERVICE"/>
     <uses-permission android:name="android.permission.SUSPEND_APPS"/>
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE" />
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG" />
     <uses-permission android:name="android.permission.CONTROL_KEYGUARD"/>
-    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
-    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
     <uses-permission android:name="android.permission.MANAGE_BIND_INSTANT_SERVICE"/>
     <uses-permission android:name="android.permission.CONTROL_DISPLAY_COLOR_TRANSFORMS" />
     <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
diff --git a/services/tests/servicestests/assets/AppIntegrityManagerServiceImplTest/DummyAppTwoCerts.apk b/services/tests/servicestests/assets/AppIntegrityManagerServiceImplTest/DummyAppTwoCerts.apk
new file mode 100644
index 0000000..9161d86
--- /dev/null
+++ b/services/tests/servicestests/assets/AppIntegrityManagerServiceImplTest/DummyAppTwoCerts.apk
Binary files differ
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
index cf10559..dfe950e 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AbstractAccessibilityServiceConnectionTest.java
@@ -47,6 +47,7 @@
 import static org.hamcrest.Matchers.is;
 import static org.hamcrest.Matchers.nullValue;
 import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertThat;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
@@ -703,14 +704,20 @@
 
     @Test
     public void takeScreenshot_returnNull() {
-        // no canTakeScreenshot, should return null.
-        when(mMockSecurityPolicy.canTakeScreenshotLocked(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.takeScreenshot(Display.DEFAULT_DISPLAY), is(nullValue()));
-
         // no checkAccessibilityAccess, should return null.
         when(mMockSecurityPolicy.canTakeScreenshotLocked(mServiceConnection)).thenReturn(true);
         when(mMockSecurityPolicy.checkAccessibilityAccess(mServiceConnection)).thenReturn(false);
-        assertThat(mServiceConnection.takeScreenshot(Display.DEFAULT_DISPLAY), is(nullValue()));
+        mServiceConnection.takeScreenshot(Display.DEFAULT_DISPLAY, new RemoteCallback((result) -> {
+            assertNull(result);
+        }));
+    }
+
+    @Test (expected = SecurityException.class)
+    public void takeScreenshot_throwSecurityException() {
+        // no canTakeScreenshot, should throw security exception.
+        when(mMockSecurityPolicy.canTakeScreenshotLocked(mServiceConnection)).thenReturn(false);
+        mServiceConnection.takeScreenshot(Display.DEFAULT_DISPLAY, new RemoteCallback((result) -> {
+        }));
     }
 
     private void updateServiceInfo(AccessibilityServiceInfo serviceInfo, int eventType,
@@ -852,8 +859,5 @@
 
         @Override
         public void onFingerprintGesture(int gesture) {}
-
-        @Override
-        public void takeScreenshotWithCallback(int displayId, RemoteCallback callback) {}
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
index ec928fb..9a7d6ea 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityManagerServiceTest.java
@@ -145,9 +145,10 @@
 
     @SmallTest
     public void testRegisterSystemActionWithoutPermission() throws Exception {
-        doThrow(SecurityException.class).when(mMockSecurityPolicy).enforceCallingPermission(
-                Manifest.permission.MANAGE_ACCESSIBILITY,
-                AccessibilityManagerService.FUNCTION_REGISTER_SYSTEM_ACTION);
+        doThrow(SecurityException.class).when(mMockSecurityPolicy)
+                .enforceCallerIsRecentsOrHasPermission(
+                        Manifest.permission.MANAGE_ACCESSIBILITY,
+                        AccessibilityManagerService.FUNCTION_REGISTER_SYSTEM_ACTION);
 
         try {
             mA11yms.registerSystemAction(TEST_ACTION, ACTION_ID);
@@ -165,9 +166,10 @@
 
     @SmallTest
     public void testUnregisterSystemActionWithoutPermission() throws Exception {
-        doThrow(SecurityException.class).when(mMockSecurityPolicy).enforceCallingPermission(
-                Manifest.permission.MANAGE_ACCESSIBILITY,
-                AccessibilityManagerService.FUNCTION_UNREGISTER_SYSTEM_ACTION);
+        doThrow(SecurityException.class).when(mMockSecurityPolicy)
+                .enforceCallerIsRecentsOrHasPermission(
+                        Manifest.permission.MANAGE_ACCESSIBILITY,
+                        AccessibilityManagerService.FUNCTION_UNREGISTER_SYSTEM_ACTION);
 
         try {
             mA11yms.unregisterSystemAction(ACTION_ID);
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
index 1504097..5a96347 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilitySecurityPolicyTest.java
@@ -25,7 +25,9 @@
 import static org.hamcrest.Matchers.hasSize;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertThat;
+import static org.mockito.AdditionalAnswers.returnsFirstArg;
 import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -47,6 +49,9 @@
 import android.view.accessibility.AccessibilityEvent;
 import android.view.accessibility.AccessibilityWindowInfo;
 
+import com.android.server.LocalServices;
+import com.android.server.wm.ActivityTaskManagerInternal;
+
 import org.junit.Before;
 import org.junit.Rule;
 import org.junit.Test;
@@ -67,6 +72,9 @@
     private static final int WINDOWID2 = 0x000b;
     private static final int APP_UID = 10400;
 
+    private static final String PERMISSION = "test-permission";
+    private static final String FUNCTION = "test-function-name";
+
     private static final int[] ALWAYS_DISPATCH_EVENTS = {
             AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED,
             AccessibilityEvent.TYPE_NOTIFICATION_STATE_CHANGED,
@@ -111,6 +119,7 @@
     @Mock private AccessibilityWindowManager mMockA11yWindowManager;
     @Mock private AppWidgetManagerInternal mMockAppWidgetManager;
     @Mock private AccessibilitySecurityPolicy.AccessibilityUserManager mMockA11yUserManager;
+    @Mock private ActivityTaskManagerInternal mMockActivityTaskManagerInternal;
 
     @Before
     public void setUp() {
@@ -119,9 +128,15 @@
         when(mMockContext.getSystemService(Context.USER_SERVICE)).thenReturn(mMockUserManager);
         when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(mMockAppOpsManager);
 
+        LocalServices.removeServiceForTest(ActivityTaskManagerInternal.class);
+        LocalServices.addService(
+                ActivityTaskManagerInternal.class, mMockActivityTaskManagerInternal);
+
         mA11ySecurityPolicy = new AccessibilitySecurityPolicy(mMockContext, mMockA11yUserManager);
         mA11ySecurityPolicy.setAccessibilityWindowManager(mMockA11yWindowManager);
         mA11ySecurityPolicy.setAppWidgetManager(mMockAppWidgetManager);
+
+        when(mMockA11yWindowManager.resolveParentWindowIdLocked(anyInt())).then(returnsFirstArg());
     }
 
     @Test
@@ -469,4 +484,11 @@
         verify(mMockAppOpsManager).noteOpNoThrow(AppOpsManager.OPSTR_ACCESS_ACCESSIBILITY,
                 APP_UID, PACKAGE_NAME);
     }
+
+    @Test
+    public void testEnforceCallerIsRecentsOrHasPermission() {
+        mA11ySecurityPolicy.enforceCallerIsRecentsOrHasPermission(PERMISSION, FUNCTION);
+        verify(mMockActivityTaskManagerInternal).enforceCallerIsRecentsOrHasPermission(
+                PERMISSION, FUNCTION);
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
index 9db5a08..10a86f9 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/AccessibilityWindowManagerTest.java
@@ -88,6 +88,10 @@
     private static final int DEFAULT_FOCUSED_INDEX = 1;
     private static final int SCREEN_WIDTH = 1080;
     private static final int SCREEN_HEIGHT = 1920;
+    private static final int INVALID_ID = AccessibilityWindowInfo.UNDEFINED_WINDOW_ID;
+    private static final int HOST_WINDOW_ID = 10;
+    private static final int EMBEDDED_WINDOW_ID = 11;
+    private static final int OTHER_WINDOW_ID = 12;
 
     private AccessibilityWindowManager mA11yWindowManager;
     // Window manager will support multiple focused window if config_perDisplayFocusEnabled is true,
@@ -117,6 +121,10 @@
     @Mock private AccessibilitySecurityPolicy mMockA11ySecurityPolicy;
     @Mock private AccessibilitySecurityPolicy.AccessibilityUserManager mMockA11yUserManager;
 
+    @Mock private IBinder mMockHostToken;
+    @Mock private IBinder mMockEmbeddedToken;
+    @Mock private IBinder mMockInvalidToken;
+
     @Before
     public void setUp() throws RemoteException {
         MockitoAnnotations.initMocks(this);
@@ -140,6 +148,8 @@
         // AccessibilityEventSender is invoked during onWindowsForAccessibilityChanged.
         // Resets it for mockito verify of further test case.
         Mockito.reset(mMockA11yEventSender);
+
+        registerLeashedTokenAndWindowId();
     }
 
     @After
@@ -407,6 +417,51 @@
     }
 
     @Test
+    public void resolveParentWindowId_windowIsNotEmbedded_shouldReturnGivenId()
+            throws RemoteException {
+        final int windowId = addAccessibilityInteractionConnection(Display.DEFAULT_DISPLAY, false,
+                Mockito.mock(IBinder.class), USER_SYSTEM_ID);
+        assertEquals(windowId, mA11yWindowManager.resolveParentWindowIdLocked(windowId));
+    }
+
+    @Test
+    public void resolveParentWindowId_windowIsNotRegistered_shouldReturnGivenId() {
+        final int windowId = -1;
+        assertEquals(windowId, mA11yWindowManager.resolveParentWindowIdLocked(windowId));
+    }
+
+    @Test
+    public void resolveParentWindowId_windowIsAssociated_shouldReturnParentWindowId()
+            throws RemoteException {
+        final IBinder mockHostToken = Mockito.mock(IBinder.class);
+        final IBinder mockEmbeddedToken = Mockito.mock(IBinder.class);
+        final int hostWindowId = addAccessibilityInteractionConnection(Display.DEFAULT_DISPLAY,
+                false, mockHostToken, USER_SYSTEM_ID);
+        final int embeddedWindowId = addAccessibilityInteractionConnection(Display.DEFAULT_DISPLAY,
+                false, mockEmbeddedToken, USER_SYSTEM_ID);
+        mA11yWindowManager.associateEmbeddedHierarchyLocked(mockHostToken, mockEmbeddedToken);
+        final int resolvedWindowId = mA11yWindowManager.resolveParentWindowIdLocked(
+                embeddedWindowId);
+        assertEquals(hostWindowId, resolvedWindowId);
+    }
+
+    @Test
+    public void resolveParentWindowId_windowIsDisassociated_shouldReturnGivenId()
+            throws RemoteException {
+        final IBinder mockHostToken = Mockito.mock(IBinder.class);
+        final IBinder mockEmbeddedToken = Mockito.mock(IBinder.class);
+        final int hostWindowId = addAccessibilityInteractionConnection(Display.DEFAULT_DISPLAY,
+                false, mockHostToken, USER_SYSTEM_ID);
+        final int embeddedWindowId = addAccessibilityInteractionConnection(Display.DEFAULT_DISPLAY,
+                false, mockEmbeddedToken, USER_SYSTEM_ID);
+        mA11yWindowManager.associateEmbeddedHierarchyLocked(mockHostToken, mockEmbeddedToken);
+        mA11yWindowManager.disassociateEmbeddedHierarchyLocked(mockEmbeddedToken);
+        final int resolvedWindowId = mA11yWindowManager.resolveParentWindowIdLocked(
+                embeddedWindowId);
+        assertEquals(embeddedWindowId, resolvedWindowId);
+    }
+
+    @Test
     public void computePartialInteractiveRegionForWindow_wholeVisible_returnWholeRegion() {
         // Updates top 2 z-order WindowInfo are whole visible.
         WindowInfo windowInfo = mWindowInfos.get(Display.DEFAULT_DISPLAY).get(0);
@@ -726,6 +781,64 @@
                 token.asBinder(), -1);
     }
 
+    @Test
+    public void getHostTokenLocked_hierarchiesAreAssociated_shouldReturnHostToken() {
+        mA11yWindowManager.associateLocked(mMockEmbeddedToken, mMockHostToken);
+        final IBinder hostToken = mA11yWindowManager.getHostTokenLocked(mMockEmbeddedToken);
+        assertEquals(hostToken, mMockHostToken);
+    }
+
+    @Test
+    public void getHostTokenLocked_hierarchiesAreNotAssociated_shouldReturnNull() {
+        final IBinder hostToken = mA11yWindowManager.getHostTokenLocked(mMockEmbeddedToken);
+        assertNull(hostToken);
+    }
+
+    @Test
+    public void getHostTokenLocked_embeddedHierarchiesAreDisassociated_shouldReturnNull() {
+        mA11yWindowManager.associateLocked(mMockEmbeddedToken, mMockHostToken);
+        mA11yWindowManager.disassociateLocked(mMockEmbeddedToken);
+        final IBinder hostToken = mA11yWindowManager.getHostTokenLocked(mMockEmbeddedToken);
+        assertNull(hostToken);
+    }
+
+    @Test
+    public void getHostTokenLocked_hostHierarchiesAreDisassociated_shouldReturnNull() {
+        mA11yWindowManager.associateLocked(mMockEmbeddedToken, mMockHostToken);
+        mA11yWindowManager.disassociateLocked(mMockHostToken);
+        final IBinder hostToken = mA11yWindowManager.getHostTokenLocked(mMockHostToken);
+        assertNull(hostToken);
+    }
+
+    @Test
+    public void getWindowIdLocked_windowIsRegistered_shouldReturnWindowId() {
+        final int windowId = mA11yWindowManager.getWindowIdLocked(mMockHostToken);
+        assertEquals(windowId, HOST_WINDOW_ID);
+    }
+
+    @Test
+    public void getWindowIdLocked_windowIsNotRegistered_shouldReturnInvalidWindowId() {
+        final int windowId = mA11yWindowManager.getWindowIdLocked(mMockInvalidToken);
+        assertEquals(windowId, INVALID_ID);
+    }
+
+    @Test
+    public void getTokenLocked_windowIsRegistered_shouldReturnToken() {
+        final IBinder token = mA11yWindowManager.getTokenLocked(HOST_WINDOW_ID);
+        assertEquals(token, mMockHostToken);
+    }
+
+    @Test
+    public void getTokenLocked_windowIsNotRegistered_shouldReturnNull() {
+        final IBinder token = mA11yWindowManager.getTokenLocked(OTHER_WINDOW_ID);
+        assertNull(token);
+    }
+
+    private void registerLeashedTokenAndWindowId() {
+        mA11yWindowManager.registerIdLocked(mMockHostToken, HOST_WINDOW_ID);
+        mA11yWindowManager.registerIdLocked(mMockEmbeddedToken, EMBEDDED_WINDOW_ID);
+    }
+
     private void startTrackingPerDisplay(int displayId) throws RemoteException {
         ArrayList<WindowInfo> windowInfosForDisplay = new ArrayList<>();
         // Adds RemoteAccessibilityConnection into AccessibilityWindowManager, and copy
@@ -784,6 +897,7 @@
                 IAccessibilityInteractionConnection.class);
         final IBinder mockConnectionBinder = Mockito.mock(IBinder.class);
         final IBinder mockWindowBinder = Mockito.mock(IBinder.class);
+        final IBinder mockLeashToken = Mockito.mock(IBinder.class);
         when(mockA11yConnection.asBinder()).thenReturn(mockConnectionBinder);
         when(mockWindowToken.asBinder()).thenReturn(mockWindowBinder);
         when(mMockA11ySecurityPolicy.isCallerInteractingAcrossUsers(userId))
@@ -792,11 +906,31 @@
                 .thenReturn(displayId);
 
         int windowId = mA11yWindowManager.addAccessibilityInteractionConnection(
-                mockWindowToken, mockA11yConnection, PACKAGE_NAME, userId);
+                mockWindowToken, mockLeashToken, mockA11yConnection, PACKAGE_NAME, userId);
         mA11yWindowTokens.put(windowId, mockWindowToken);
         return mockWindowToken;
     }
 
+    private int addAccessibilityInteractionConnection(int displayId, boolean bGlobal,
+            IBinder leashToken, int userId) throws RemoteException {
+        final IWindow mockWindowToken = Mockito.mock(IWindow.class);
+        final IAccessibilityInteractionConnection mockA11yConnection = Mockito.mock(
+                IAccessibilityInteractionConnection.class);
+        final IBinder mockConnectionBinder = Mockito.mock(IBinder.class);
+        final IBinder mockWindowBinder = Mockito.mock(IBinder.class);
+        when(mockA11yConnection.asBinder()).thenReturn(mockConnectionBinder);
+        when(mockWindowToken.asBinder()).thenReturn(mockWindowBinder);
+        when(mMockA11ySecurityPolicy.isCallerInteractingAcrossUsers(userId))
+                .thenReturn(bGlobal);
+        when(mMockWindowManagerInternal.getDisplayIdForWindow(mockWindowToken.asBinder()))
+                .thenReturn(displayId);
+
+        int windowId = mA11yWindowManager.addAccessibilityInteractionConnection(
+                mockWindowToken, leashToken, mockA11yConnection, PACKAGE_NAME, userId);
+        mA11yWindowTokens.put(windowId, mockWindowToken);
+        return windowId;
+    }
+
     private void addWindowInfo(ArrayList<WindowInfo> windowInfos, IWindow windowToken, int layer) {
         final WindowInfo windowInfo = WindowInfo.obtain();
         windowInfo.type = AccessibilityWindowInfo.TYPE_APPLICATION;
diff --git a/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java b/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
index a4ceadb..9053234 100644
--- a/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
+++ b/services/tests/servicestests/src/com/android/server/accessibility/gestures/TouchExplorerTest.java
@@ -89,9 +89,12 @@
 
         @Override
         public void onMotionEvent(MotionEvent event, MotionEvent rawEvent, int policyFlags) {
-            MotionEventMatcher lastEventMatcher = new MotionEventMatcher(mLastEvent);
             mEvents.add(0, event.copy());
-            assertThat(rawEvent, lastEventMatcher);
+            // LastEvent may not match if we're clearing the state
+            if (mLastEvent != null) {
+                MotionEventMatcher lastEventMatcher = new MotionEventMatcher(mLastEvent);
+                assertThat(rawEvent, lastEventMatcher);
+            }
         }
 
         @Override
@@ -126,6 +129,31 @@
     }
 
     @Test
+    public void upEventWhenInTwoFingerMove_clearsState() {
+        goFromStateClearTo(STATE_MOVING_2FINGERS);
+
+        send(upEvent());
+        assertState(STATE_CLEAR);
+    }
+
+    @Test
+    public void clearEventsWhenInTwoFingerMove_clearsStateAndSendsUp() {
+        goFromStateClearTo(STATE_MOVING_2FINGERS);
+
+        // Clear last event so we don't try to match against anything when cleanup events are sent
+        // for the clear
+        mLastEvent = null;
+        mTouchExplorer.clearEvents(InputDevice.SOURCE_TOUCHSCREEN);
+        assertState(STATE_CLEAR);
+        List<MotionEvent> events = getCapturedEvents();
+        assertCapturedEvents(
+                MotionEvent.ACTION_DOWN,
+                MotionEvent.ACTION_POINTER_DOWN,
+                MotionEvent.ACTION_POINTER_UP,
+                MotionEvent.ACTION_UP);
+    }
+
+    @Test
     public void testTwoFingersDrag_shouldDraggingAndActionDown() {
         goFromStateClearTo(STATE_DRAGGING_2FINGERS);
 
@@ -268,6 +296,12 @@
                         DEFAULT_Y, 0));
     }
 
+    private MotionEvent upEvent() {
+        MotionEvent event = downEvent();
+        event.setAction(MotionEvent.ACTION_UP);
+        return event;
+    }
+
     private MotionEvent pointerDownEvent() {
         final int secondPointerId = 0x0100;
         final int action = MotionEvent.ACTION_POINTER_DOWN | secondPointerId;
diff --git a/services/tests/servicestests/src/com/android/server/am/BroadcastRecordTest.java b/services/tests/servicestests/src/com/android/server/am/BroadcastRecordTest.java
index 089a79b..a871ec6 100644
--- a/services/tests/servicestests/src/com/android/server/am/BroadcastRecordTest.java
+++ b/services/tests/servicestests/src/com/android/server/am/BroadcastRecordTest.java
@@ -178,6 +178,7 @@
                 new Intent(),
                 null /* callerApp */,
                 null  /* callerPackage */,
+                null /* callerFeatureId */,
                 0 /* callingPid */,
                 0 /* callingUid */,
                 false /* callerInstantApp */,
diff --git a/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java b/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java
index d6efe35..5800aca 100644
--- a/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/UserBackupPreferencesTest.java
@@ -16,8 +16,6 @@
 
 package com.android.server.backup;
 
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
 import androidx.test.InstrumentationRegistry;
@@ -33,18 +31,15 @@
 import org.mockito.MockitoAnnotations;
 
 import java.util.Arrays;
-import java.util.HashSet;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
 
 @Presubmit
 @RunWith(AndroidJUnit4.class)
 public class UserBackupPreferencesTest {
     private static final String EXCLUDED_PACKAGE_1 = "package1";
-    private static final String EXCLUDED_PACKAGE_2 = "package2";
     private static final List<String> EXCLUDED_KEYS_1 = Arrays.asList("key1", "key2");
-    private static final List<String> EXCLUDED_KEYS_2 = Arrays.asList("key1");
+    private static final List<String> EXCLUDED_KEYS_2 = Arrays.asList("key3");
 
     @Rule public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
 
@@ -60,27 +55,13 @@
     }
 
     @Test
-    public void testGetExcludedKeysForPackages_returnsExcludedKeys() {
+    public void testGetExcludedKeysForPackage_returnsExcludedKeys() {
         mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_1, EXCLUDED_KEYS_1);
-        mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_2, EXCLUDED_KEYS_2);
+        mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_1, EXCLUDED_KEYS_2);
 
-        Map<String, Set<String>> excludedKeys =
-                mExcludedRestoreKeysStorage.getExcludedRestoreKeysForPackages(EXCLUDED_PACKAGE_1);
-        assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_1));
-        assertFalse(excludedKeys.containsKey(EXCLUDED_PACKAGE_2));
-        assertEquals(new HashSet<>(EXCLUDED_KEYS_1), excludedKeys.get(EXCLUDED_PACKAGE_1));
-    }
-
-    @Test
-    public void testGetExcludedKeysForPackages_withEmpty_list_returnsAllExcludedKeys() {
-        mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_1, EXCLUDED_KEYS_1);
-        mExcludedRestoreKeysStorage.addExcludedKeys(EXCLUDED_PACKAGE_2, EXCLUDED_KEYS_2);
-
-        Map<String, Set<String>> excludedKeys =
-                mExcludedRestoreKeysStorage.getAllExcludedRestoreKeys();
-        assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_1));
-        assertTrue(excludedKeys.containsKey(EXCLUDED_PACKAGE_2));
-        assertEquals(new HashSet<>(EXCLUDED_KEYS_1), excludedKeys.get(EXCLUDED_PACKAGE_1));
-        assertEquals(new HashSet<>(EXCLUDED_KEYS_2), excludedKeys.get(EXCLUDED_PACKAGE_2));
+        Set<String> excludedKeys =
+                mExcludedRestoreKeysStorage.getExcludedRestoreKeysForPackage(EXCLUDED_PACKAGE_1);
+        assertTrue(excludedKeys.containsAll(EXCLUDED_KEYS_1));
+        assertTrue(excludedKeys.containsAll(EXCLUDED_KEYS_2));
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java b/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java
index 3d22043..017c939 100644
--- a/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java
+++ b/services/tests/servicestests/src/com/android/server/backup/restore/PerformUnifiedRestoreTaskTest.java
@@ -20,7 +20,9 @@
 import static junit.framework.Assert.assertFalse;
 import static junit.framework.Assert.assertTrue;
 
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.when;
 
 import androidx.test.InstrumentationRegistry;
@@ -30,6 +32,8 @@
 import android.app.backup.BackupDataOutput;
 import android.platform.test.annotations.Presubmit;
 
+import com.android.server.backup.UserBackupManagerService;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,6 +44,7 @@
 import org.mockito.stubbing.Answer;
 
 import java.util.ArrayDeque;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -59,6 +64,7 @@
 
     @Mock private BackupDataInput mBackupDataInput;
     @Mock private BackupDataOutput mBackupDataOutput;
+    @Mock private UserBackupManagerService mBackupManagerService;
 
     private Set<String> mExcludedkeys = new HashSet<>();
     private Map<String, String> mBackupData = new HashMap<>();
@@ -99,6 +105,8 @@
                         return null;
                     }
                 });
+
+        mRestoreTask = new PerformUnifiedRestoreTask(mBackupManagerService);
     }
 
     private void populateTestData() {
@@ -114,8 +122,9 @@
 
     @Test
     public void testFilterExcludedKeys() throws Exception {
-        mRestoreTask = new PerformUnifiedRestoreTask(Collections.singletonMap(
-                PACKAGE_NAME, mExcludedkeys));
+        when(mBackupManagerService.getExcludedRestoreKeys(eq(PACKAGE_NAME))).thenReturn(
+                mExcludedkeys);
+
         mRestoreTask.filterExcludedKeys(PACKAGE_NAME, mBackupDataInput, mBackupDataOutput);
 
         // Verify only the correct were written into BackupDataOutput object.
@@ -125,32 +134,49 @@
     }
 
     @Test
+    public void testGetExcludedKeysForPackage_alwaysReturnsLatestKeys() {
+        Set<String> firstExcludedKeys = new HashSet<>(Collections.singletonList(EXCLUDED_KEY_1));
+        when(mBackupManagerService.getExcludedRestoreKeys(eq(PACKAGE_NAME))).thenReturn(
+                firstExcludedKeys);
+        assertEquals(firstExcludedKeys, mRestoreTask.getExcludedKeysForPackage(PACKAGE_NAME));
+
+
+        Set<String> secondExcludedKeys = new HashSet<>(Arrays.asList(EXCLUDED_KEY_1,
+                EXCLUDED_KEY_2));
+        when(mBackupManagerService.getExcludedRestoreKeys(eq(PACKAGE_NAME))).thenReturn(
+                secondExcludedKeys);
+        assertEquals(secondExcludedKeys, mRestoreTask.getExcludedKeysForPackage(PACKAGE_NAME));
+    }
+
+    @Test
     public void testStageBackupData_stageForNonSystemPackageWithKeysToExclude() {
-        mRestoreTask = new PerformUnifiedRestoreTask(Collections.singletonMap(
-                PACKAGE_NAME, mExcludedkeys));
+        when(mBackupManagerService.getExcludedRestoreKeys(eq(NON_SYSTEM_PACKAGE_NAME))).thenReturn(
+                mExcludedkeys);
 
         assertTrue(mRestoreTask.shouldStageBackupData(NON_SYSTEM_PACKAGE_NAME));
     }
 
     @Test
     public void testStageBackupData_stageForNonSystemPackageWithNoKeysToExclude() {
-        mRestoreTask = new PerformUnifiedRestoreTask(Collections.emptyMap());
+        when(mBackupManagerService.getExcludedRestoreKeys(any())).thenReturn(
+                Collections.emptySet());
 
         assertTrue(mRestoreTask.shouldStageBackupData(NON_SYSTEM_PACKAGE_NAME));
     }
 
     @Test
     public void testStageBackupData_doNotStageForSystemPackageWithNoKeysToExclude() {
-        mRestoreTask = new PerformUnifiedRestoreTask(Collections.emptyMap());
+        when(mBackupManagerService.getExcludedRestoreKeys(any())).thenReturn(
+                Collections.emptySet());
 
         assertFalse(mRestoreTask.shouldStageBackupData(SYSTEM_PACKAGE_NAME));
     }
 
     @Test
     public void testStageBackupData_stageForSystemPackageWithKeysToExclude() {
-        mRestoreTask = new PerformUnifiedRestoreTask(Collections.singletonMap(
-                PACKAGE_NAME, mExcludedkeys));
+        when(mBackupManagerService.getExcludedRestoreKeys(eq(SYSTEM_PACKAGE_NAME))).thenReturn(
+                mExcludedkeys);
 
-        assertTrue(mRestoreTask.shouldStageBackupData(NON_SYSTEM_PACKAGE_NAME));
+        assertTrue(mRestoreTask.shouldStageBackupData(SYSTEM_PACKAGE_NAME));
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
index d38c80c..1c8b00f 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/AuthServiceTest.java
@@ -24,6 +24,7 @@
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -32,8 +33,12 @@
 import android.hardware.biometrics.IBiometricEnabledOnKeyguardCallback;
 import android.hardware.biometrics.IBiometricService;
 import android.hardware.biometrics.IBiometricServiceReceiver;
+import android.hardware.face.IFaceService;
+import android.hardware.fingerprint.IFingerprintService;
+import android.hardware.iris.IIrisService;
 import android.os.Binder;
 import android.os.Bundle;
+import android.os.UserHandle;
 
 import androidx.test.InstrumentationRegistry;
 import androidx.test.filters.SmallTest;
@@ -61,6 +66,12 @@
     AuthService.Injector mInjector;
     @Mock
     IBiometricService mBiometricService;
+    @Mock
+    IFingerprintService mFingerprintService;
+    @Mock
+    IIrisService mIrisService;
+    @Mock
+    IFaceService mFaceService;
 
     @Before
     public void setUp() {
@@ -76,10 +87,28 @@
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
         when(mInjector.getBiometricService()).thenReturn(mBiometricService);
         when(mInjector.getConfiguration(any())).thenReturn(config);
-        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FINGERPRINT))
-                .thenReturn(true);
-        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_IRIS)).thenReturn(true);
-        when(mPackageManager.hasSystemFeature(PackageManager.FEATURE_FACE)).thenReturn(true);
+        when(mInjector.getFingerprintService()).thenReturn(mFingerprintService);
+        when(mInjector.getFaceService()).thenReturn(mFaceService);
+        when(mInjector.getIrisService()).thenReturn(mIrisService);
+    }
+
+    @Test
+    public void testRegisterNullService_doesNotRegister() throws Exception {
+
+        // Config contains Fingerprint, Iris, Face, but services are all null
+
+        when(mInjector.getFingerprintService()).thenReturn(null);
+        when(mInjector.getFaceService()).thenReturn(null);
+        when(mInjector.getIrisService()).thenReturn(null);
+
+        mAuthService = new AuthService(mContext, mInjector);
+        mAuthService.onStart();
+
+        verify(mBiometricService, never()).registerAuthenticator(
+                anyInt(),
+                anyInt(),
+                anyInt(),
+                any());
     }
 
 
@@ -108,7 +137,10 @@
                 eq(userId),
                 eq(mReceiver),
                 eq(TEST_OP_PACKAGE_NAME),
-                eq(bundle));
+                eq(bundle),
+                eq(Binder.getCallingUid()),
+                eq(Binder.getCallingPid()),
+                eq(UserHandle.getCallingUserId()));
     }
 
     @Test
@@ -119,7 +151,7 @@
         final int userId = 0;
         final int expectedResult = BIOMETRIC_SUCCESS;
         final int authenticators = 0;
-        when(mBiometricService.canAuthenticate(anyString(), anyInt(), anyInt()))
+        when(mBiometricService.canAuthenticate(anyString(), anyInt(), anyInt(), anyInt()))
                 .thenReturn(expectedResult);
 
         final int result = mAuthService.mImpl
@@ -130,6 +162,7 @@
         verify(mBiometricService).canAuthenticate(
                 eq(TEST_OP_PACKAGE_NAME),
                 eq(userId),
+                eq(UserHandle.getCallingUserId()),
                 eq(authenticators));
     }
 
@@ -168,7 +201,8 @@
         mAuthService.mImpl.registerEnabledOnKeyguardCallback(callback);
 
         waitForIdle();
-        verify(mBiometricService).registerEnabledOnKeyguardCallback(eq(callback));
+        verify(mBiometricService).registerEnabledOnKeyguardCallback(
+                eq(callback), eq(UserHandle.getCallingUserId()));
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
index bec265e..164ee31 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/BiometricServiceTest.java
@@ -283,7 +283,7 @@
                 null /* authenticators */);
         waitForIdle();
         verify(mReceiver1).onError(
-                eq(BiometricAuthenticator.TYPE_NONE),
+                eq(BiometricAuthenticator.TYPE_FINGERPRINT),
                 eq(BiometricConstants.BIOMETRIC_ERROR_HW_UNAVAILABLE),
                 eq(0 /* vendorCode */));
     }
@@ -421,6 +421,7 @@
     public void testAuthenticate_noBiometrics_credentialAllowed() throws Exception {
         setupAuthForOnly(BiometricAuthenticator.TYPE_FACE, Authenticators.BIOMETRIC_STRONG);
         when(mFaceAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(false);
+        when(mTrustManager.isDeviceSecure(anyInt())).thenReturn(true);
         invokeAuthenticate(mBiometricService.mImpl, mReceiver1,
                 true /* requireConfirmation */,
                 Authenticators.DEVICE_CREDENTIAL | Authenticators.BIOMETRIC_WEAK);
@@ -467,6 +468,22 @@
     }
 
     @Test
+    public void testAuthenticate_no_Biometrics_noCredential() throws Exception {
+        setupAuthForOnly(BiometricAuthenticator.TYPE_FACE, Authenticators.BIOMETRIC_STRONG);
+        when(mFaceAuthenticator.hasEnrolledTemplates(anyInt(), any())).thenReturn(false);
+        when(mTrustManager.isDeviceSecure(anyInt())).thenReturn(false);
+
+        invokeAuthenticate(mBiometricService.mImpl, mReceiver1,
+                true /* requireConfirmation */,
+                Authenticators.DEVICE_CREDENTIAL | Authenticators.BIOMETRIC_STRONG);
+        waitForIdle();
+
+        verify(mReceiver1).onError(anyInt() /* modality */,
+                eq(BiometricConstants.BIOMETRIC_ERROR_NO_BIOMETRICS)/* error */,
+                eq(0) /* vendorCode */);
+    }
+
+    @Test
     public void testRejectFace_whenAuthenticating_notifiesSystemUIAndClient_thenPaused()
             throws Exception {
         setupAuthForOnly(BiometricAuthenticator.TYPE_FACE, Authenticators.BIOMETRIC_STRONG);
@@ -930,7 +947,7 @@
                 false /* requireConfirmation */, null /* authenticators */);
 
         mBiometricService.mImpl.cancelAuthentication(mBiometricService.mCurrentAuthSession.mToken,
-                TEST_PACKAGE_NAME);
+                TEST_PACKAGE_NAME, 0 /* callingUId */, 0 /* callingPid */, 0 /* callingUserId */);
         waitForIdle();
 
         // Pretend that the HAL has responded to cancel with ERROR_CANCELED
@@ -1078,6 +1095,24 @@
     }
 
     @Test
+    public void testRegisterAuthenticator_updatesStrengths() throws Exception {
+        mBiometricService = new BiometricService(mContext, mInjector);
+        mBiometricService.onStart();
+
+        verify(mBiometricService.mBiometricStrengthController).startListening();
+        verify(mBiometricService.mBiometricStrengthController, never()).updateStrengths();
+
+        when(mFingerprintAuthenticator.hasEnrolledTemplates(anyInt(), any()))
+                .thenReturn(true);
+        when(mFingerprintAuthenticator.isHardwareDetected(any())).thenReturn(true);
+        mBiometricService.mImpl.registerAuthenticator(0 /* testId */,
+                BiometricAuthenticator.TYPE_FINGERPRINT, Authenticators.BIOMETRIC_STRONG,
+                mFingerprintAuthenticator);
+
+        verify(mBiometricService.mBiometricStrengthController).updateStrengths();
+    }
+
+    @Test
     public void testWithDowngradedAuthenticator() throws Exception {
         mBiometricService = new BiometricService(mContext, mInjector);
         mBiometricService.onStart();
@@ -1100,14 +1135,14 @@
 
         // STRONG-only auth is not available
         int authenticators = Authenticators.BIOMETRIC_STRONG;
-        assertEquals(BiometricManager.BIOMETRIC_ERROR_NO_HARDWARE,
+        assertEquals(BiometricManager.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED,
                 invokeCanAuthenticate(mBiometricService, authenticators));
         invokeAuthenticate(mBiometricService.mImpl, mReceiver1, false /* requireConfirmation */,
                 authenticators);
         waitForIdle();
         verify(mReceiver1).onError(
-                eq(BiometricAuthenticator.TYPE_NONE),
-                eq(BiometricPrompt.BIOMETRIC_ERROR_HW_NOT_PRESENT),
+                eq(BiometricAuthenticator.TYPE_FINGERPRINT),
+                eq(BiometricPrompt.BIOMETRIC_ERROR_SECURITY_UPDATE_REQUIRED),
                 eq(0) /* vendorCode */);
 
         // Request for weak auth works
@@ -1137,7 +1172,7 @@
                 false /* requireConfirmation */,
                 authenticators);
         waitForIdle();
-        assertTrue(Utils.isDeviceCredentialAllowed(mBiometricService.mCurrentAuthSession.mBundle));
+        assertTrue(Utils.isCredentialRequested(mBiometricService.mCurrentAuthSession.mBundle));
         verify(mBiometricService.mStatusBarService).showAuthenticationDialog(
                 eq(mBiometricService.mCurrentAuthSession.mBundle),
                 any(IBiometricServiceReceiverInternal.class),
@@ -1145,6 +1180,28 @@
                 anyBoolean() /* requireConfirmation */,
                 anyInt() /* userId */,
                 eq(TEST_PACKAGE_NAME));
+
+        // Un-downgrading the authenticator allows successful strong auth
+        for (BiometricService.AuthenticatorWrapper wrapper : mBiometricService.mAuthenticators) {
+            if (wrapper.id == testId) {
+                wrapper.updateStrength(Authenticators.BIOMETRIC_STRONG);
+            }
+        }
+
+        resetReceiver();
+        authenticators = Authenticators.BIOMETRIC_STRONG;
+        assertEquals(BiometricManager.BIOMETRIC_SUCCESS,
+                invokeCanAuthenticate(mBiometricService, authenticators));
+        invokeAuthenticateAndStart(mBiometricService.mImpl, mReceiver1,
+                false /* requireConfirmation */, authenticators);
+        waitForIdle();
+        verify(mBiometricService.mStatusBarService).showAuthenticationDialog(
+                eq(mBiometricService.mCurrentAuthSession.mBundle),
+                any(IBiometricServiceReceiverInternal.class),
+                eq(BiometricAuthenticator.TYPE_FINGERPRINT /* biometricModality */),
+                anyBoolean() /* requireConfirmation */,
+                anyInt() /* userId */,
+                eq(TEST_PACKAGE_NAME));
     }
 
     @Test(expected = IllegalStateException.class)
@@ -1216,7 +1273,8 @@
         when(mDevicePolicyManager
                 .getKeyguardDisabledFeatures(any() /* admin */, anyInt() /* userHandle */))
                 .thenReturn(~DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
-        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1);
+        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1,
+                Authenticators.BIOMETRIC_STRONG);
         waitForIdle();
         assertEquals(mBiometricService.mPendingAuthSession.mState,
                 BiometricService.STATE_AUTH_CALLED);
@@ -1227,13 +1285,27 @@
     }
 
     @Test
+    public void testAuthentication_normalAppIgnoresDevicePolicy() throws Exception {
+        setupAuthForOnly(BiometricAuthenticator.TYPE_FINGERPRINT, Authenticators.BIOMETRIC_STRONG);
+        when(mDevicePolicyManager
+                .getKeyguardDisabledFeatures(any() /* admin */, anyInt() /* userHandle */))
+                .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
+        invokeAuthenticateAndStart(mBiometricService.mImpl, mReceiver1,
+                false /* requireConfirmation */, Authenticators.BIOMETRIC_STRONG);
+        waitForIdle();
+        assertEquals(mBiometricService.mCurrentAuthSession.mState,
+                BiometricService.STATE_AUTH_STARTED);
+    }
+
+    @Test
     public void testWorkAuthentication_faceWorksIfNotDisabledByDevicePolicyManager()
             throws Exception {
         setupAuthForOnly(BiometricAuthenticator.TYPE_FACE, Authenticators.BIOMETRIC_STRONG);
         when(mDevicePolicyManager
                 .getKeyguardDisabledFeatures(any() /* admin*/, anyInt() /* userHandle */))
                 .thenReturn(~DevicePolicyManager.KEYGUARD_DISABLE_FACE);
-        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1);
+        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1,
+                Authenticators.BIOMETRIC_STRONG);
         waitForIdle();
         assertEquals(mBiometricService.mPendingAuthSession.mState,
                 BiometricService.STATE_AUTH_CALLED);
@@ -1247,34 +1319,32 @@
     public void testWorkAuthentication_fingerprintFailsIfDisabledByDevicePolicyManager()
             throws Exception {
         setupAuthForOnly(BiometricAuthenticator.TYPE_FINGERPRINT, Authenticators.BIOMETRIC_STRONG);
+        when(mTrustManager.isDeviceSecure(anyInt())).thenReturn(true);
         when(mDevicePolicyManager
                 .getKeyguardDisabledFeatures(any() /* admin */, anyInt() /* userHandle */))
                 .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
-        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1);
-        waitForIdle();
-        assertNotNull(mBiometricService.mCurrentAuthSession);
-        assertEquals(mBiometricService.mCurrentAuthSession.mState,
-                BiometricService.STATE_SHOWING_DEVICE_CREDENTIAL);
-    }
 
-    @Test
-    public void testWorkAuthentication_faceFailsIfDisabledByDevicePolicyManager() throws Exception {
-        setupAuthForOnly(BiometricAuthenticator.TYPE_FACE, Authenticators.BIOMETRIC_STRONG);
-        when(mDevicePolicyManager
-                .getKeyguardDisabledFeatures(any() /* admin */, anyInt() /* userHandle */))
-                .thenReturn(DevicePolicyManager.KEYGUARD_DISABLE_FACE);
-        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1);
+        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver1,
+                Authenticators.BIOMETRIC_STRONG);
+        waitForIdle();
+        verify(mReceiver1).onError(eq(BiometricAuthenticator.TYPE_NONE),
+                eq(BiometricPrompt.BIOMETRIC_ERROR_HW_UNAVAILABLE), eq(0) /* vendorCode */);
+
+        invokeAuthenticateForWorkApp(mBiometricService.mImpl, mReceiver2,
+                Authenticators.BIOMETRIC_STRONG | Authenticators.DEVICE_CREDENTIAL);
         waitForIdle();
         assertNotNull(mBiometricService.mCurrentAuthSession);
         assertEquals(mBiometricService.mCurrentAuthSession.mState,
                 BiometricService.STATE_SHOWING_DEVICE_CREDENTIAL);
+        verify(mReceiver2, never()).onError(anyInt(), anyInt(), anyInt());
     }
 
     // Helper methods
 
     private int invokeCanAuthenticate(BiometricService service, int authenticators)
             throws Exception {
-        return service.mImpl.canAuthenticate(TEST_PACKAGE_NAME, 0 /* userId */, authenticators);
+        return service.mImpl.canAuthenticate(
+                TEST_PACKAGE_NAME, 0 /* userId */, 0 /* callingUserId */, authenticators);
     }
 
     private void setupAuthForOnly(int modality, int strength) throws Exception {
@@ -1376,33 +1446,41 @@
                 0 /* userId */,
                 receiver,
                 TEST_PACKAGE_NAME /* packageName */,
-                createTestBiometricPromptBundle(requireConfirmation, authenticators));
+                createTestBiometricPromptBundle(requireConfirmation, authenticators,
+                        false /* checkDevicePolicy */),
+                0 /* callingUid */,
+                0 /* callingPid */,
+                0 /* callingUserId */);
     }
 
     private static void invokeAuthenticateForWorkApp(IBiometricService.Stub service,
-            IBiometricServiceReceiver receiver) throws Exception {
-        final Bundle bundle = new Bundle();
-        bundle.putBoolean(BiometricPrompt.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS, true);
-        bundle.putBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, true);
-        bundle.putBoolean(BiometricPrompt.KEY_ALLOW_DEVICE_CREDENTIAL, true);
+            IBiometricServiceReceiver receiver, Integer authenticators) throws Exception {
         service.authenticate(
                 new Binder() /* token */,
                 0 /* sessionId */,
                 0 /* userId */,
                 receiver,
                 TEST_PACKAGE_NAME /* packageName */,
-                bundle);
+                createTestBiometricPromptBundle(false /* requireConfirmation */, authenticators,
+                        true /* checkDevicePolicy */),
+                0 /* callingUid */,
+                0 /* callingPid */,
+                0 /* callingUserId */);
     }
 
     private static Bundle createTestBiometricPromptBundle(
             boolean requireConfirmation,
-            Integer authenticators) {
+            Integer authenticators,
+            boolean checkDevicePolicy) {
         final Bundle bundle = new Bundle();
         bundle.putBoolean(BiometricPrompt.KEY_REQUIRE_CONFIRMATION, requireConfirmation);
 
         if (authenticators != null) {
             bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
         }
+        if (checkDevicePolicy) {
+            bundle.putBoolean(BiometricPrompt.EXTRA_DISALLOW_BIOMETRICS_IF_POLICY_EXISTS, true);
+        }
         return bundle;
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java b/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
index 312ff2c..df242f3 100644
--- a/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
+++ b/services/tests/servicestests/src/com/android/server/biometrics/UtilsTest.java
@@ -91,31 +91,31 @@
     @Test
     public void testIsDeviceCredentialAllowed_withIntegerFlags() {
         int authenticators = 0;
-        assertFalse(Utils.isDeviceCredentialAllowed(authenticators));
+        assertFalse(Utils.isCredentialRequested(authenticators));
 
         authenticators |= Authenticators.DEVICE_CREDENTIAL;
-        assertTrue(Utils.isDeviceCredentialAllowed(authenticators));
+        assertTrue(Utils.isCredentialRequested(authenticators));
 
         authenticators |= Authenticators.BIOMETRIC_WEAK;
-        assertTrue(Utils.isDeviceCredentialAllowed(authenticators));
+        assertTrue(Utils.isCredentialRequested(authenticators));
     }
 
     @Test
     public void testIsDeviceCredentialAllowed_withBundle() {
         Bundle bundle = new Bundle();
-        assertFalse(Utils.isDeviceCredentialAllowed(bundle));
+        assertFalse(Utils.isCredentialRequested(bundle));
 
         int authenticators = 0;
         bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
-        assertFalse(Utils.isDeviceCredentialAllowed(bundle));
+        assertFalse(Utils.isCredentialRequested(bundle));
 
         authenticators |= Authenticators.DEVICE_CREDENTIAL;
         bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
-        assertTrue(Utils.isDeviceCredentialAllowed(bundle));
+        assertTrue(Utils.isCredentialRequested(bundle));
 
         authenticators |= Authenticators.BIOMETRIC_WEAK;
         bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
-        assertTrue(Utils.isDeviceCredentialAllowed(bundle));
+        assertTrue(Utils.isCredentialRequested(bundle));
     }
 
     @Test
@@ -140,14 +140,14 @@
         for (int i = 0; i <= 7; i++) {
             int authenticators = 1 << i;
             bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
-            assertTrue(Utils.isBiometricAllowed(bundle));
+            assertTrue(Utils.isBiometricRequested(bundle));
         }
 
         // The rest of the bits are not allowed to integrate with the public APIs
         for (int i = 8; i < 32; i++) {
             int authenticators = 1 << i;
             bundle.putInt(BiometricPrompt.KEY_AUTHENTICATORS_ALLOWED, authenticators);
-            assertFalse(Utils.isBiometricAllowed(bundle));
+            assertFalse(Utils.isBiometricRequested(bundle));
         }
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
index ce5d6d9..4a686ee 100644
--- a/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
+++ b/services/tests/servicestests/src/com/android/server/compat/PlatformCompatTest.java
@@ -19,6 +19,7 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.anyInt;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.reset;
 import static org.mockito.Mockito.verify;
@@ -28,10 +29,12 @@
 
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.content.pm.PackageManagerInternal;
 
 import androidx.test.runner.AndroidJUnit4;
 
 import com.android.internal.compat.AndroidBuildClassifier;
+import com.android.server.LocalServices;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -48,6 +51,8 @@
     @Mock
     private PackageManager mPackageManager;
     @Mock
+    private PackageManagerInternal mPackageManagerInternal;
+    @Mock
     CompatChange.ChangeListener mListener1, mListener2;
     PlatformCompat mPlatformCompat;
     CompatConfig mCompatConfig;
@@ -60,11 +65,15 @@
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
         when(mPackageManager.getPackageUid(eq(PACKAGE_NAME), eq(0))).thenThrow(
                 new PackageManager.NameNotFoundException());
+        when(mPackageManagerInternal.getPackageUid(eq(PACKAGE_NAME), eq(0), anyInt()))
+            .thenReturn(-1);
         mCompatConfig = new CompatConfig(mBuildClassifier, mContext);
         mPlatformCompat = new PlatformCompat(mContext, mCompatConfig);
         // Assume userdebug/eng non-final build
         when(mBuildClassifier.isDebuggableBuild()).thenReturn(true);
         when(mBuildClassifier.isFinalBuild()).thenReturn(false);
+        LocalServices.removeServiceForTest(PackageManagerInternal.class);
+        LocalServices.addService(PackageManagerInternal.class, mPackageManagerInternal);
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
index 422c278..8f70cca 100644
--- a/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/devicepolicy/DevicePolicyManagerTest.java
@@ -96,6 +96,7 @@
 import android.util.ArraySet;
 import android.util.Pair;
 
+import androidx.test.filters.FlakyTest;
 import androidx.test.filters.SmallTest;
 
 import com.android.internal.R;
@@ -2187,6 +2188,42 @@
         assertThat(actualAccounts).containsExactlyElementsIn(expectedAccounts);
     }
 
+    public void testSetKeyguardDisabledFeaturesWithDO() throws Exception {
+        mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
+        setupDeviceOwner();
+
+        dpm.setKeyguardDisabledFeatures(admin1, DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA);
+
+        assertThat(dpm.getKeyguardDisabledFeatures(admin1)).isEqualTo(
+                DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA);
+    }
+
+    public void testSetKeyguardDisabledFeaturesWithPO() throws Exception {
+        setupProfileOwner();
+
+        dpm.setKeyguardDisabledFeatures(admin1, DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
+
+        assertThat(dpm.getKeyguardDisabledFeatures(admin1)).isEqualTo(
+                DevicePolicyManager.KEYGUARD_DISABLE_FINGERPRINT);
+    }
+
+    public void testSetKeyguardDisabledFeaturesWithPOOfOrganizationOwnedDevice()
+            throws Exception {
+        final int MANAGED_PROFILE_USER_ID = DpmMockContext.CALLER_USER_HANDLE;
+        final int MANAGED_PROFILE_ADMIN_UID =
+                UserHandle.getUid(MANAGED_PROFILE_USER_ID, DpmMockContext.SYSTEM_UID);
+        mContext.binder.callingUid = MANAGED_PROFILE_ADMIN_UID;
+
+        addManagedProfile(admin1, MANAGED_PROFILE_ADMIN_UID, admin1);
+        configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
+
+        parentDpm.setKeyguardDisabledFeatures(admin1,
+                DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA);
+
+        assertThat(parentDpm.getKeyguardDisabledFeatures(admin1)).isEqualTo(
+                DevicePolicyManager.KEYGUARD_DISABLE_SECURE_CAMERA);
+    }
+
     public void testSetApplicationHiddenWithDO() throws Exception {
         mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
         setupDeviceOwner();
@@ -2223,17 +2260,13 @@
 
         String packageName = "com.google.android.test";
 
-        PackageInfo packageInfo = new PackageInfo();
-        packageInfo.applicationInfo = new ApplicationInfo();
-        packageInfo.applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
+        ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.flags = ApplicationInfo.FLAG_SYSTEM;
         when(getServices().userManager.getProfileParent(MANAGED_PROFILE_USER_ID))
                 .thenReturn(new UserInfo(UserHandle.USER_SYSTEM, "user system", 0));
-        when(getServices().ipackageManager.getPackageInfo(packageName,
-                PackageManager.MATCH_SYSTEM_ONLY, UserHandle.USER_SYSTEM)).thenReturn(
-                packageInfo);
-        when(getServices().ipackageManager.getPackageInfo(packageName,
-                PackageManager.MATCH_UNINSTALLED_PACKAGES | PackageManager.MATCH_SYSTEM_ONLY,
-                UserHandle.USER_SYSTEM)).thenReturn(packageInfo);
+        when(getServices().ipackageManager.getApplicationInfo(packageName,
+                PackageManager.MATCH_UNINSTALLED_PACKAGES, UserHandle.USER_SYSTEM)).thenReturn(
+                applicationInfo);
 
         parentDpm.setApplicationHidden(admin1, packageName, true);
         verify(getServices().ipackageManager).setApplicationHiddenSettingAsUser(packageName,
@@ -3784,35 +3817,35 @@
         assertEquals(-1, dpm.getLastSecurityLogRetrievalTime());
     }
 
-    public void testSetLockdownAdminConfiguredNetworksWithDO() throws Exception {
+    public void testSetConfiguredNetworksLockdownStateWithDO() throws Exception {
         mContext.binder.callingUid = DpmMockContext.CALLER_SYSTEM_USER_UID;
         setupDeviceOwner();
-        dpm.setLockdownAdminConfiguredNetworks(admin1, true);
+        dpm.setConfiguredNetworksLockdownState(admin1, true);
         verify(getServices().settings).settingsGlobalPutInt(
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1);
 
-        dpm.setLockdownAdminConfiguredNetworks(admin1, false);
+        dpm.setConfiguredNetworksLockdownState(admin1, false);
         verify(getServices().settings).settingsGlobalPutInt(
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 0);
     }
 
-    public void testSetLockdownAdminConfiguredNetworksWithPO() throws Exception {
+    public void testSetConfiguredNetworksLockdownStateWithPO() throws Exception {
         setupProfileOwner();
         assertExpectException(SecurityException.class, null,
-                () -> dpm.setLockdownAdminConfiguredNetworks(admin1, false));
+                () -> dpm.setConfiguredNetworksLockdownState(admin1, false));
         verify(getServices().settings, never()).settingsGlobalPutInt(
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 0);
     }
 
-    public void testSetLockdownAdminConfiguredNetworksWithPOOfOrganizationOwnedDevice()
+    public void testSetConfiguredNetworksLockdownStateWithPOOfOrganizationOwnedDevice()
             throws Exception {
         setupProfileOwner();
         configureProfileOwnerOfOrgOwnedDevice(admin1, DpmMockContext.CALLER_USER_HANDLE);
-        dpm.setLockdownAdminConfiguredNetworks(admin1, true);
+        dpm.setConfiguredNetworksLockdownState(admin1, true);
         verify(getServices().settings).settingsGlobalPutInt(
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 1);
 
-        dpm.setLockdownAdminConfiguredNetworks(admin1, false);
+        dpm.setConfiguredNetworksLockdownState(admin1, false);
         verify(getServices().settings).settingsGlobalPutInt(
                 Settings.Global.WIFI_DEVICE_OWNER_CONFIGS_LOCKDOWN, 0);
     }
@@ -4539,6 +4572,86 @@
                 .removeUserEvenWhenDisallowed(anyInt());
     }
 
+    public void testMaximumFailedDevicePasswordAttemptsReachedOrgOwnedManagedProfile()
+            throws Exception {
+        final int MANAGED_PROFILE_USER_ID = 15;
+        final int MANAGED_PROFILE_ADMIN_UID = UserHandle.getUid(MANAGED_PROFILE_USER_ID, 19436);
+        addManagedProfile(admin1, MANAGED_PROFILE_ADMIN_UID, admin1);
+
+        // Even if the caller is the managed profile, the current user is the user 0
+        when(getServices().iactivityManager.getCurrentUser())
+                .thenReturn(new UserInfo(UserHandle.USER_SYSTEM, "user system", 0));
+
+        configureProfileOwnerOfOrgOwnedDevice(admin1, MANAGED_PROFILE_USER_ID);
+
+        mContext.binder.callingUid = MANAGED_PROFILE_ADMIN_UID;
+        dpm.setMaximumFailedPasswordsForWipe(admin1, 3);
+
+        assertEquals(3, dpm.getMaximumFailedPasswordsForWipe(admin1));
+        assertEquals(3, dpm.getMaximumFailedPasswordsForWipe(null));
+
+        mContext.binder.callingUid = DpmMockContext.SYSTEM_UID;
+        mContext.callerPermissions.add(permission.BIND_DEVICE_ADMIN);
+
+        assertEquals(3, dpm.getMaximumFailedPasswordsForWipe(null, UserHandle.USER_SYSTEM));
+        // Check that primary will be wiped as a result of failed primary user unlock attempts.
+        assertEquals(UserHandle.USER_SYSTEM,
+                dpm.getProfileWithMinimumFailedPasswordsForWipe(UserHandle.USER_SYSTEM));
+
+        // Failed password attempts on the parent user are taken into account, as there isn't a
+        // separate work challenge.
+        dpm.reportFailedPasswordAttempt(UserHandle.USER_SYSTEM);
+        dpm.reportFailedPasswordAttempt(UserHandle.USER_SYSTEM);
+        dpm.reportFailedPasswordAttempt(UserHandle.USER_SYSTEM);
+
+        // For managed profile on an organization owned device, the whole device should be wiped.
+        verify(getServices().recoverySystem).rebootWipeUserData(
+                /*shutdown=*/ eq(false), anyString(), /*force=*/ eq(true),
+                /*wipeEuicc=*/ eq(false));
+    }
+
+    public void testMaximumFailedProfilePasswordAttemptsReachedOrgOwnedManagedProfile()
+            throws Exception {
+        final int MANAGED_PROFILE_USER_ID = 15;
+        final int MANAGED_PROFILE_ADMIN_UID = UserHandle.getUid(MANAGED_PROFILE_USER_ID, 19436);
+        addManagedProfile(admin1, MANAGED_PROFILE_ADMIN_UID, admin1);
+
+        // Even if the caller is the managed profile, the current user is the user 0
+        when(getServices().iactivityManager.getCurrentUser())
+                .thenReturn(new UserInfo(UserHandle.USER_SYSTEM, "user system", 0));
+
+        doReturn(true).when(getServices().lockPatternUtils)
+                .isSeparateProfileChallengeEnabled(MANAGED_PROFILE_USER_ID);
+
+        // Configure separate challenge.
+        configureProfileOwnerOfOrgOwnedDevice(admin1, MANAGED_PROFILE_USER_ID);
+
+        mContext.binder.callingUid = MANAGED_PROFILE_ADMIN_UID;
+        dpm.setMaximumFailedPasswordsForWipe(admin1, 3);
+
+        mContext.binder.callingUid = DpmMockContext.SYSTEM_UID;
+        mContext.callerPermissions.add(permission.BIND_DEVICE_ADMIN);
+
+        assertEquals(0, dpm.getMaximumFailedPasswordsForWipe(null, UserHandle.USER_SYSTEM));
+        assertEquals(3, dpm.getMaximumFailedPasswordsForWipe(null, MANAGED_PROFILE_USER_ID));
+        // Check that the policy is not affecting primary profile challenge.
+        assertEquals(UserHandle.USER_NULL,
+                dpm.getProfileWithMinimumFailedPasswordsForWipe(UserHandle.USER_SYSTEM));
+        // Check that primary will be wiped as a result of failed profile unlock attempts.
+        assertEquals(UserHandle.USER_SYSTEM,
+                dpm.getProfileWithMinimumFailedPasswordsForWipe(MANAGED_PROFILE_USER_ID));
+
+        // Simulate three failed attempts at solving the separate challenge.
+        dpm.reportFailedPasswordAttempt(MANAGED_PROFILE_USER_ID);
+        dpm.reportFailedPasswordAttempt(MANAGED_PROFILE_USER_ID);
+        dpm.reportFailedPasswordAttempt(MANAGED_PROFILE_USER_ID);
+
+        // For managed profile on an organization owned device, the whole device should be wiped.
+        verify(getServices().recoverySystem).rebootWipeUserData(
+                /*shutdown=*/ eq(false), anyString(), /*force=*/ eq(true),
+                /*wipeEuicc=*/ eq(false));
+    }
+
     public void testGetPermissionGrantState() throws Exception {
         final String permission = "some.permission";
         final String app1 = "com.example.app1";
@@ -5370,26 +5483,28 @@
         assertTrue(dpms.isAdminActive(admin1, UserHandle.USER_SYSTEM));
     }
 
-    public void testRevertDeviceOwnership_adminAndDeviceMigrated() throws Exception {
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
-                getDeviceOwnerPoliciesFile());
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.device_owner_migrated),
-                getDeviceOwnerFile());
-        assertDeviceOwnershipRevertedWithFakeTransferMetadata();
-    }
+    // @FlakyTest(bugId = 148934649)
+    // public void testRevertDeviceOwnership_adminAndDeviceMigrated() throws Exception {
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
+    //             getDeviceOwnerPoliciesFile());
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.device_owner_migrated),
+    //             getDeviceOwnerFile());
+    //     assertDeviceOwnershipRevertedWithFakeTransferMetadata();
+    // }
 
-    public void testRevertDeviceOwnership_deviceNotMigrated()
-            throws Exception {
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
-                getDeviceOwnerPoliciesFile());
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.device_owner_not_migrated),
-                getDeviceOwnerFile());
-        assertDeviceOwnershipRevertedWithFakeTransferMetadata();
-    }
+    // @FlakyTest(bugId = 148934649)
+    // public void testRevertDeviceOwnership_deviceNotMigrated()
+    //         throws Exception {
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
+    //             getDeviceOwnerPoliciesFile());
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.device_owner_not_migrated),
+    //             getDeviceOwnerFile());
+    //     assertDeviceOwnershipRevertedWithFakeTransferMetadata();
+    // }
 
     public void testRevertDeviceOwnership_adminAndDeviceNotMigrated()
             throws Exception {
@@ -5411,29 +5526,31 @@
         UserHandle userHandle = UserHandle.of(DpmMockContext.CALLER_USER_HANDLE);
     }
 
-    public void testRevertProfileOwnership_adminAndProfileMigrated() throws Exception {
-        getServices().addUser(DpmMockContext.CALLER_USER_HANDLE, 0,
-                UserManager.USER_TYPE_PROFILE_MANAGED, UserHandle.USER_SYSTEM);
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
-                getProfileOwnerPoliciesFile());
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.profile_owner_migrated),
-                getProfileOwnerFile());
-        assertProfileOwnershipRevertedWithFakeTransferMetadata();
-    }
+    // @FlakyTest(bugId = 148934649)
+    // public void testRevertProfileOwnership_adminAndProfileMigrated() throws Exception {
+    //     getServices().addUser(DpmMockContext.CALLER_USER_HANDLE, 0,
+    //             UserManager.USER_TYPE_PROFILE_MANAGED, UserHandle.USER_SYSTEM);
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
+    //             getProfileOwnerPoliciesFile());
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.profile_owner_migrated),
+    //             getProfileOwnerFile());
+    //     assertProfileOwnershipRevertedWithFakeTransferMetadata();
+    // }
 
-    public void testRevertProfileOwnership_profileNotMigrated() throws Exception {
-        getServices().addUser(DpmMockContext.CALLER_USER_HANDLE, 0,
-                UserManager.USER_TYPE_PROFILE_MANAGED, UserHandle.USER_SYSTEM);
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
-                getProfileOwnerPoliciesFile());
-        DpmTestUtils.writeInputStreamToFile(
-                getRawStream(com.android.frameworks.servicestests.R.raw.profile_owner_not_migrated),
-                getProfileOwnerFile());
-        assertProfileOwnershipRevertedWithFakeTransferMetadata();
-    }
+    // @FlakyTest(bugId = 148934649)
+    // public void testRevertProfileOwnership_profileNotMigrated() throws Exception {
+    //     getServices().addUser(DpmMockContext.CALLER_USER_HANDLE, 0,
+    //             UserManager.USER_TYPE_PROFILE_MANAGED, UserHandle.USER_SYSTEM);
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.active_admin_migrated),
+    //             getProfileOwnerPoliciesFile());
+    //     DpmTestUtils.writeInputStreamToFile(
+    //             getRawStream(com.android.frameworks.servicestests.R.raw.profile_owner_not_migrated),
+    //             getProfileOwnerFile());
+    //     assertProfileOwnershipRevertedWithFakeTransferMetadata();
+    // }
 
     public void testRevertProfileOwnership_adminAndProfileNotMigrated() throws Exception {
         getServices().addUser(DpmMockContext.CALLER_USER_HANDLE, 0,
@@ -5608,6 +5725,9 @@
     }
 
     public void testGetPasswordComplexity_securityExceptionNotThrownForParentInstance() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         mServiceContext.permissions.add(permission.REQUEST_PASSWORD_COMPLEXITY);
         setAsProfileOwner(admin1);
 
@@ -5617,12 +5737,18 @@
     }
 
     public void testGetPasswordComplexity_illegalStateExceptionIfLocked() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         when(getServices().userManager.isUserUnlocked(DpmMockContext.CALLER_USER_HANDLE))
                 .thenReturn(false);
         assertThrows(IllegalStateException.class, () -> dpm.getPasswordComplexity());
     }
 
     public void testGetPasswordComplexity_securityExceptionWithoutPermissions() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         when(getServices().userManager.isUserUnlocked(DpmMockContext.CALLER_USER_HANDLE))
                 .thenReturn(true);
         assertThrows(SecurityException.class, () -> dpm.getPasswordComplexity());
@@ -5630,6 +5756,9 @@
 
 
     public void testGetPasswordComplexity_currentUserNoPassword() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         when(getServices().userManager.isUserUnlocked(DpmMockContext.CALLER_USER_HANDLE))
                 .thenReturn(true);
         mServiceContext.permissions.add(permission.REQUEST_PASSWORD_COMPLEXITY);
@@ -5640,6 +5769,9 @@
     }
 
     public void testGetPasswordComplexity_currentUserHasPassword() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         when(getServices().userManager.isUserUnlocked(DpmMockContext.CALLER_USER_HANDLE))
                 .thenReturn(true);
         mServiceContext.permissions.add(permission.REQUEST_PASSWORD_COMPLEXITY);
@@ -5653,6 +5785,9 @@
     }
 
     public void testGetPasswordComplexity_unifiedChallengeReturnsParentUserPassword() {
+        mContext.binder.callingUid = DpmMockContext.CALLER_UID;
+        when(getServices().packageManager.getPackagesForUid(DpmMockContext.CALLER_UID)).thenReturn(
+                new String[0]);
         when(getServices().userManager.isUserUnlocked(DpmMockContext.CALLER_USER_HANDLE))
                 .thenReturn(true);
         mServiceContext.permissions.add(permission.REQUEST_PASSWORD_COMPLEXITY);
@@ -5774,8 +5909,7 @@
         when(getServices().userManager.getProfileParent(eq(UserHandle.of(userId))))
                 .thenReturn(UserHandle.SYSTEM);
         final long ident = mServiceContext.binder.clearCallingIdentity();
-        mServiceContext.binder.callingUid =
-                UserHandle.getUid(DpmMockContext.CALLER_USER_HANDLE, DpmMockContext.SYSTEM_UID);
+        mServiceContext.binder.callingUid = UserHandle.getUid(userId, DpmMockContext.SYSTEM_UID);
 
         configureContextForAccess(mServiceContext, true);
         runAsCaller(mServiceContext, dpms, dpm -> {
@@ -5821,6 +5955,7 @@
         mContext.packageName = admin1.getPackageName();
 
         setCrossProfileAppsList();
+        setVendorCrossProfileAppsList();
 
         assertTrue(dpm.getAllCrossProfilePackages().isEmpty());
     }
@@ -5831,6 +5966,7 @@
         mContext.packageName = admin1.getPackageName();
 
         setCrossProfileAppsList();
+        setVendorCrossProfileAppsList();
         initializeDpms();
 
         assertTrue(dpm.getAllCrossProfilePackages().isEmpty());
@@ -5843,9 +5979,11 @@
 
         dpm.setCrossProfilePackages(admin1, packages);
         setCrossProfileAppsList("TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE");
+        setVendorCrossProfileAppsList("TEST_VENDOR_DEFAULT_PACKAGE");
 
         assertEquals(Sets.newSet(
-                        "TEST_PACKAGE", "TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE"),
+                        "TEST_PACKAGE", "TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE",
+                        "TEST_VENDOR_DEFAULT_PACKAGE"),
                 dpm.getAllCrossProfilePackages());
 
     }
@@ -5858,13 +5996,31 @@
 
         dpm.setCrossProfilePackages(admin1, packages);
         setCrossProfileAppsList("TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE");
+        setVendorCrossProfileAppsList("TEST_VENDOR_DEFAULT_PACKAGE");
         initializeDpms();
 
         assertEquals(Sets.newSet(
-                "TEST_PACKAGE", "TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE"),
+                "TEST_PACKAGE", "TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE",
+                "TEST_VENDOR_DEFAULT_PACKAGE"),
                 dpm.getAllCrossProfilePackages());
     }
 
+    public void testGetDefaultCrossProfilePackages_noPackagesSet_returnsEmpty() {
+        setCrossProfileAppsList();
+        setVendorCrossProfileAppsList();
+
+        assertThat(dpm.getDefaultCrossProfilePackages()).isEmpty();
+    }
+
+    public void testGetDefaultCrossProfilePackages_packagesSet_returnsCombinedSet() {
+        setCrossProfileAppsList("TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE");
+        setVendorCrossProfileAppsList("TEST_VENDOR_DEFAULT_PACKAGE");
+
+        assertThat(dpm.getDefaultCrossProfilePackages()).isEqualTo(Sets.newSet(
+                "TEST_DEFAULT_PACKAGE", "TEST_COMMON_PACKAGE", "TEST_VENDOR_DEFAULT_PACKAGE"
+        ));
+    }
+
     public void testSetCommonCriteriaMode_asDeviceOwner() throws Exception {
         setDeviceOwner();
 
@@ -5896,6 +6052,12 @@
                 .thenReturn(packages);
     }
 
+    private void setVendorCrossProfileAppsList(String... packages) {
+        when(mContext.getResources()
+                .getStringArray(eq(R.array.vendor_cross_profile_apps)))
+                .thenReturn(packages);
+    }
+
     // admin1 is the outgoing DPC, adminAnotherPakcage is the incoming one.
     private void assertDeviceOwnershipRevertedWithFakeTransferMetadata() throws Exception {
         writeFakeTransferMetadataFile(UserHandle.USER_SYSTEM,
diff --git a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
index ca00116..234c987 100644
--- a/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/display/AutomaticBrightnessControllerTest.java
@@ -25,7 +25,6 @@
 import static org.mockito.Mockito.when;
 
 import android.content.Context;
-import android.content.pm.PackageManager;
 import android.hardware.Sensor;
 import android.hardware.SensorEventListener;
 import android.hardware.SensorManager;
@@ -46,9 +45,8 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class AutomaticBrightnessControllerTest {
-
-    private static final int BRIGHTNESS_MIN = 1;
-    private static final int BRIGHTNESS_MAX = 255;
+    private static final float BRIGHTNESS_MIN_FLOAT = 0.0f;
+    private static final float BRIGHTNESS_MAX_FLOAT = 1.0f;
     private static final int LIGHT_SENSOR_RATE = 20;
     private static final int INITIAL_LIGHT_SENSOR_RATE = 20;
     private static final int BRIGHTENING_LIGHT_DEBOUNCE_CONFIG = 0;
@@ -61,7 +59,6 @@
     @Mock BrightnessMappingStrategy mBrightnessMappingStrategy;
     @Mock HysteresisLevels mAmbientBrightnessThresholds;
     @Mock HysteresisLevels mScreenBrightnessThresholds;
-    @Mock PackageManager mPackageManager;
     @Mock Handler mNoopHandler;
 
     private static final int LIGHT_SENSOR_WARMUP_TIME = 0;
@@ -81,11 +78,11 @@
                     }
                 },
                 () -> { }, mContext.getMainLooper(), mSensorManager, lightSensor,
-                mBrightnessMappingStrategy, LIGHT_SENSOR_WARMUP_TIME, BRIGHTNESS_MIN,
-                BRIGHTNESS_MAX, DOZE_SCALE_FACTOR, LIGHT_SENSOR_RATE, INITIAL_LIGHT_SENSOR_RATE,
-                BRIGHTENING_LIGHT_DEBOUNCE_CONFIG, DARKENING_LIGHT_DEBOUNCE_CONFIG,
-                RESET_AMBIENT_LUX_AFTER_WARMUP_CONFIG, mAmbientBrightnessThresholds,
-                mScreenBrightnessThresholds, mPackageManager);
+                mBrightnessMappingStrategy, LIGHT_SENSOR_WARMUP_TIME, BRIGHTNESS_MIN_FLOAT,
+                BRIGHTNESS_MAX_FLOAT, DOZE_SCALE_FACTOR, LIGHT_SENSOR_RATE,
+                INITIAL_LIGHT_SENSOR_RATE, BRIGHTENING_LIGHT_DEBOUNCE_CONFIG,
+                DARKENING_LIGHT_DEBOUNCE_CONFIG, RESET_AMBIENT_LUX_AFTER_WARMUP_CONFIG,
+                mAmbientBrightnessThresholds, mScreenBrightnessThresholds, mContext);
         controller.setLoggingEnabled(true);
 
         // Configure the brightness controller and grab an instance of the sensor listener,
@@ -110,7 +107,7 @@
 
         // Set up system to return 5 as a brightness value
         float lux1 = 100.0f;
-        float normalizedBrightness1 = 0.02f;
+        float normalizedBrightness1 = 0.0158f; //float equivalent of 5 out of 255
         when(mAmbientBrightnessThresholds.getBrighteningThreshold(lux1))
                 .thenReturn(lux1);
         when(mAmbientBrightnessThresholds.getDarkeningThreshold(lux1))
@@ -156,7 +153,7 @@
 
         // Set up system to return 250 as a brightness value
         float lux1 = 100.0f;
-        float normalizedBrightness1 = 0.98f;
+        float normalizedBrightness1 = 0.981f; //float equivalent of 250 out of 255
         when(mAmbientBrightnessThresholds.getBrighteningThreshold(lux1))
                 .thenReturn(lux1);
         when(mAmbientBrightnessThresholds.getDarkeningThreshold(lux1))
diff --git a/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java b/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java
index 49ad866..0d4c6e8 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/AppIntegrityManagerServiceImplTest.java
@@ -19,16 +19,20 @@
 import static android.content.integrity.AppIntegrityManager.EXTRA_STATUS;
 import static android.content.integrity.AppIntegrityManager.STATUS_FAILURE;
 import static android.content.integrity.AppIntegrityManager.STATUS_SUCCESS;
+import static android.content.integrity.InstallerAllowedByManifestFormula.INSTALLER_CERTIFICATE_NOT_EVALUATED;
 import static android.content.pm.PackageManager.EXTRA_VERIFICATION_ID;
 import static android.content.pm.PackageManager.EXTRA_VERIFICATION_INSTALLER_PACKAGE;
 import static android.content.pm.PackageManager.EXTRA_VERIFICATION_INSTALLER_UID;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.atLeastOnce;
 import static org.mockito.Mockito.doReturn;
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
@@ -36,6 +40,8 @@
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
+import static java.nio.file.StandardCopyOption.REPLACE_EXISTING;
+
 import android.content.BroadcastReceiver;
 import android.content.Context;
 import android.content.Intent;
@@ -43,6 +49,7 @@
 import android.content.IntentSender;
 import android.content.integrity.AppInstallMetadata;
 import android.content.integrity.AtomicFormula;
+import android.content.integrity.IntegrityFormula;
 import android.content.integrity.Rule;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.PackageInfo;
@@ -61,6 +68,7 @@
 import com.android.server.integrity.model.IntegrityCheckResult;
 import com.android.server.testutils.TestUtils;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -72,8 +80,9 @@
 
 import java.io.File;
 import java.io.IOException;
+import java.io.InputStream;
+import java.nio.file.Files;
 import java.util.Arrays;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -83,6 +92,9 @@
     private static final String TEST_APP_PATH =
             "/data/local/tmp/AppIntegrityManagerServiceTestApp.apk";
 
+    private static final String TEST_APP_TWO_CERT_PATH =
+            "AppIntegrityManagerServiceImplTest/DummyAppTwoCerts.apk";
+
     private static final String PACKAGE_MIME_TYPE = "application/vnd.android.package-archive";
     private static final String VERSION = "version";
     private static final String TEST_FRAMEWORK_PACKAGE = "com.android.frameworks.servicestests";
@@ -101,24 +113,35 @@
     private static final String INSTALLER_SHA256 =
             "30F41A7CBF96EE736A54DD6DF759B50ED3CC126ABCEF694E167C324F5976C227";
 
+    private static final String DUMMY_APP_TWO_CERTS_CERT_1 =
+            "C0369C2A1096632429DFA8433068AECEAD00BAC337CA92A175036D39CC9AFE94";
+    private static final String DUMMY_APP_TWO_CERTS_CERT_2 =
+            "94366E0A80F3A3F0D8171A15760B88E228CD6E1101F0414C98878724FBE70147";
+
     private static final String PLAY_STORE_PKG = "com.android.vending";
     private static final String ADB_INSTALLER = "adb";
-    private static final String PLAY_STORE_CERT =
-            "play_store_cert";
+    private static final String PLAY_STORE_CERT = "play_store_cert";
     private static final String ADB_CERT = "";
 
     @org.junit.Rule
     public MockitoRule mMockitoRule = MockitoJUnit.rule();
 
-    @Mock PackageManagerInternal mPackageManagerInternal;
-    @Mock Context mMockContext;
-    @Mock Resources mMockResources;
-    @Mock RuleEvaluationEngine mRuleEvaluationEngine;
-    @Mock IntegrityFileManager mIntegrityFileManager;
-    @Mock Handler mHandler;
+    @Mock
+    PackageManagerInternal mPackageManagerInternal;
+    @Mock
+    Context mMockContext;
+    @Mock
+    Resources mMockResources;
+    @Mock
+    RuleEvaluationEngine mRuleEvaluationEngine;
+    @Mock
+    IntegrityFileManager mIntegrityFileManager;
+    @Mock
+    Handler mHandler;
 
     private PackageManager mSpyPackageManager;
     private File mTestApk;
+    private File mTestApkTwoCerts;
 
     private final Context mRealContext = InstrumentationRegistry.getTargetContext();
     // under test
@@ -127,6 +150,10 @@
     @Before
     public void setup() throws Exception {
         mTestApk = new File(TEST_APP_PATH);
+        mTestApkTwoCerts = File.createTempFile("AppIntegrity", ".apk");
+        try (InputStream inputStream = mRealContext.getAssets().open(TEST_APP_TWO_CERT_PATH)) {
+            Files.copy(inputStream, mTestApkTwoCerts.toPath(), REPLACE_EXISTING);
+        }
 
         mService =
                 new AppIntegrityManagerServiceImpl(
@@ -134,7 +161,8 @@
                         mPackageManagerInternal,
                         mRuleEvaluationEngine,
                         mIntegrityFileManager,
-                        mHandler);
+                        mHandler,
+                        /* checkIntegrityForRuleProviders= */ true);
 
         mSpyPackageManager = spy(mRealContext.getPackageManager());
         // setup mocks to prevent NPE
@@ -144,16 +172,17 @@
         when(mIntegrityFileManager.initialized()).thenReturn(true);
     }
 
-    // TODO(b/148370598): Implement a test to validate that allow response is retuned when the test
-    //    request times out.
+    @After
+    public void tearDown() throws Exception {
+        mTestApkTwoCerts.delete();
+    }
 
     @Test
     public void updateRuleSet_notAuthorized() throws Exception {
         makeUsSystemApp();
         Rule rule =
                 new Rule(
-                        new AtomicFormula.BooleanAtomicFormula(
-                                AtomicFormula.PRE_INSTALLED, true),
+                        new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
                         Rule.DENY);
         TestUtils.assertExpectException(
                 SecurityException.class,
@@ -171,8 +200,7 @@
         whitelistUsAsRuleProvider();
         Rule rule =
                 new Rule(
-                        new AtomicFormula.BooleanAtomicFormula(
-                                AtomicFormula.PRE_INSTALLED, true),
+                        new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
                         Rule.DENY);
         TestUtils.assertExpectException(
                 SecurityException.class,
@@ -191,8 +219,7 @@
         makeUsSystemApp();
         Rule rule =
                 new Rule(
-                        new AtomicFormula.BooleanAtomicFormula(
-                                AtomicFormula.PRE_INSTALLED, true),
+                        new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
                         Rule.DENY);
 
         // no SecurityException
@@ -207,11 +234,7 @@
         IntentSender mockReceiver = mock(IntentSender.class);
         List<Rule> rules =
                 Arrays.asList(
-                        new Rule(
-                                new AtomicFormula.StringAtomicFormula(
-                                        AtomicFormula.PACKAGE_NAME,
-                                        PACKAGE_NAME,
-                                        /* isHashedValue= */ false),
+                        new Rule(IntegrityFormula.Application.packageNameEquals(PACKAGE_NAME),
                                 Rule.DENY));
 
         mService.updateRuleSet(VERSION, new ParceledListSlice<>(rules), mockReceiver);
@@ -231,11 +254,7 @@
         IntentSender mockReceiver = mock(IntentSender.class);
         List<Rule> rules =
                 Arrays.asList(
-                        new Rule(
-                                new AtomicFormula.StringAtomicFormula(
-                                        AtomicFormula.PACKAGE_NAME,
-                                        PACKAGE_NAME,
-                                        /* isHashedValue= */ false),
+                        new Rule(IntegrityFormula.Application.packageNameEquals(PACKAGE_NAME),
                                 Rule.DENY));
 
         mService.updateRuleSet(VERSION, new ParceledListSlice<>(rules), mockReceiver);
@@ -272,30 +291,51 @@
         verify(mMockContext)
                 .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
         Intent intent = makeVerificationIntent();
-        when(mRuleEvaluationEngine.evaluate(any(), any())).thenReturn(IntegrityCheckResult.allow());
+        when(mRuleEvaluationEngine.evaluate(any())).thenReturn(IntegrityCheckResult.allow());
 
         broadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
         runJobInHandler();
 
         ArgumentCaptor<AppInstallMetadata> metadataCaptor =
                 ArgumentCaptor.forClass(AppInstallMetadata.class);
-        Map<String, String> allowedInstallers = new HashMap<>();
-        ArgumentCaptor<Map<String, String>> allowedInstallersCaptor =
-                ArgumentCaptor.forClass(allowedInstallers.getClass());
         verify(mRuleEvaluationEngine)
-                .evaluate(metadataCaptor.capture(), allowedInstallersCaptor.capture());
+                .evaluate(metadataCaptor.capture());
         AppInstallMetadata appInstallMetadata = metadataCaptor.getValue();
-        allowedInstallers = allowedInstallersCaptor.getValue();
         assertEquals(PACKAGE_NAME, appInstallMetadata.getPackageName());
-        assertEquals(APP_CERT, appInstallMetadata.getAppCertificate());
+        assertThat(appInstallMetadata.getAppCertificates()).containsExactly(APP_CERT);
         assertEquals(INSTALLER_SHA256, appInstallMetadata.getInstallerName());
-        assertEquals(INSTALLER_CERT, appInstallMetadata.getInstallerCertificate());
+        assertThat(appInstallMetadata.getInstallerCertificates()).containsExactly(INSTALLER_CERT);
         assertEquals(VERSION_CODE, appInstallMetadata.getVersionCode());
         assertFalse(appInstallMetadata.isPreInstalled());
         // These are hardcoded in the test apk android manifest
+        Map<String, String> allowedInstallers =
+                appInstallMetadata.getAllowedInstallersAndCertificates();
         assertEquals(2, allowedInstallers.size());
         assertEquals(PLAY_STORE_CERT, allowedInstallers.get(PLAY_STORE_PKG));
-        assertEquals(ADB_CERT, allowedInstallers.get(ADB_INSTALLER));
+        assertEquals(INSTALLER_CERTIFICATE_NOT_EVALUATED, allowedInstallers.get(ADB_INSTALLER));
+    }
+
+    @Test
+    public void handleBroadcast_correctArgs_multipleCerts() throws Exception {
+        whitelistUsAsRuleProvider();
+        makeUsSystemApp();
+        ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
+                ArgumentCaptor.forClass(BroadcastReceiver.class);
+        verify(mMockContext)
+                .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
+        Intent intent = makeVerificationIntent();
+        intent.setDataAndType(Uri.fromFile(mTestApkTwoCerts), PACKAGE_MIME_TYPE);
+        when(mRuleEvaluationEngine.evaluate(any())).thenReturn(IntegrityCheckResult.allow());
+
+        broadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
+        runJobInHandler();
+
+        ArgumentCaptor<AppInstallMetadata> metadataCaptor =
+                ArgumentCaptor.forClass(AppInstallMetadata.class);
+        verify(mRuleEvaluationEngine).evaluate(metadataCaptor.capture());
+        AppInstallMetadata appInstallMetadata = metadataCaptor.getValue();
+        assertThat(appInstallMetadata.getAppCertificates()).containsExactly(
+                DUMMY_APP_TWO_CERTS_CERT_1, DUMMY_APP_TWO_CERTS_CERT_2);
     }
 
     @Test
@@ -307,7 +347,7 @@
         verify(mMockContext)
                 .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
         Intent intent = makeVerificationIntent();
-        when(mRuleEvaluationEngine.evaluate(any(), any())).thenReturn(IntegrityCheckResult.allow());
+        when(mRuleEvaluationEngine.evaluate(any())).thenReturn(IntegrityCheckResult.allow());
 
         broadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
         runJobInHandler();
@@ -325,7 +365,7 @@
                 ArgumentCaptor.forClass(BroadcastReceiver.class);
         verify(mMockContext)
                 .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
-        when(mRuleEvaluationEngine.evaluate(any(), any()))
+        when(mRuleEvaluationEngine.evaluate(any()))
                 .thenReturn(
                         IntegrityCheckResult.deny(
                                 Arrays.asList(
@@ -353,7 +393,7 @@
         verify(mMockContext)
                 .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
         Intent intent = makeVerificationIntent();
-        when(mRuleEvaluationEngine.evaluate(any(), any())).thenReturn(IntegrityCheckResult.allow());
+        when(mRuleEvaluationEngine.evaluate(any())).thenReturn(IntegrityCheckResult.allow());
 
         broadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
         runJobInHandler();
@@ -368,13 +408,21 @@
     public void verifierAsInstaller_skipIntegrityVerification() throws Exception {
         whitelistUsAsRuleProvider();
         makeUsSystemApp();
+        mService =
+                new AppIntegrityManagerServiceImpl(
+                        mMockContext,
+                        mPackageManagerInternal,
+                        mRuleEvaluationEngine,
+                        mIntegrityFileManager,
+                        mHandler,
+                        /* checkIntegrityForRuleProviders= */ false);
         ArgumentCaptor<BroadcastReceiver> broadcastReceiverCaptor =
                 ArgumentCaptor.forClass(BroadcastReceiver.class);
-        verify(mMockContext)
+        verify(mMockContext, atLeastOnce())
                 .registerReceiver(broadcastReceiverCaptor.capture(), any(), any(), any());
         Intent intent = makeVerificationIntent(TEST_FRAMEWORK_PACKAGE);
-        when(mRuleEvaluationEngine.evaluate(any(), any())).thenReturn(
-                IntegrityCheckResult.deny(/* rule= */ null));
+        when(mRuleEvaluationEngine.evaluate(any()))
+                .thenReturn(IntegrityCheckResult.deny(/* rule= */ null));
 
         broadcastReceiverCaptor.getValue().onReceive(mMockContext, intent);
         runJobInHandler();
@@ -384,6 +432,16 @@
                         1, PackageManagerInternal.INTEGRITY_VERIFICATION_ALLOW);
     }
 
+    @Test
+    public void getCurrentRules() throws Exception {
+        whitelistUsAsRuleProvider();
+        makeUsSystemApp();
+        Rule rule = new Rule(IntegrityFormula.Application.packageNameEquals("package"), Rule.DENY);
+        when(mIntegrityFileManager.readRules(any())).thenReturn(Arrays.asList(rule));
+
+        assertThat(mService.getCurrentRules().getList()).containsExactly(rule);
+    }
+
     private void whitelistUsAsRuleProvider() {
         Resources mockResources = mock(Resources.class);
         when(mockResources.getStringArray(R.array.config_integrityRuleProviderPackages))
@@ -409,14 +467,12 @@
 
     private Intent makeVerificationIntent() throws Exception {
         PackageInfo packageInfo =
-                mRealContext.getPackageManager()
-                        .getPackageInfo(TEST_FRAMEWORK_PACKAGE, PackageManager.GET_SIGNATURES);
-        doReturn(packageInfo)
-                .when(mSpyPackageManager)
-                .getPackageInfo(eq(INSTALLER), anyInt());
-        doReturn(1)
-                .when(mSpyPackageManager)
-                .getPackageUid(eq(INSTALLER), anyInt());
+                mRealContext
+                        .getPackageManager()
+                        .getPackageInfo(TEST_FRAMEWORK_PACKAGE,
+                                PackageManager.GET_SIGNING_CERTIFICATES);
+        doReturn(packageInfo).when(mSpyPackageManager).getPackageInfo(eq(INSTALLER), anyInt());
+        doReturn(1).when(mSpyPackageManager).getPackageUid(eq(INSTALLER), anyInt());
         return makeVerificationIntent(INSTALLER);
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java b/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
index 86daf69..41be54a 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/IntegrityFileManagerTest.java
@@ -141,10 +141,10 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName(packageName)
-                        .setAppCertificate(packageCert)
+                        .setAppCertificates(Collections.singletonList(packageCert))
                         .setVersionCode(version)
                         .setInstallerName("abc")
-                        .setInstallerCertificate("abc")
+                        .setInstallerCertificates(Collections.singletonList("abc"))
                         .setIsPreInstalled(true)
                         .build();
         List<Rule> rulesFetched = mIntegrityFileManager.readRules(appInstallMetadata);
@@ -182,10 +182,10 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName(installedPackageName)
-                        .setAppCertificate(installedAppCertificate)
+                        .setAppCertificates(Collections.singletonList(installedAppCertificate))
                         .setVersionCode(250)
                         .setInstallerName("abc")
-                        .setInstallerCertificate("abc")
+                        .setInstallerCertificates(Collections.singletonList("abc"))
                         .setIsPreInstalled(true)
                         .build();
         List<Rule> rulesFetched = mIntegrityFileManager.readRules(appInstallMetadata);
diff --git a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluationEngineTest.java b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluationEngineTest.java
index 26b2096..0488745 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluationEngineTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluationEngineTest.java
@@ -22,6 +22,8 @@
 import static org.mockito.Mockito.when;
 
 import android.content.integrity.AppInstallMetadata;
+import android.content.integrity.IntegrityFormula;
+import android.content.integrity.Rule;
 
 import com.android.server.integrity.IntegrityFileManager;
 import com.android.server.integrity.model.IntegrityCheckResult;
@@ -33,7 +35,6 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.util.ArrayList;
 import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
@@ -60,34 +61,35 @@
 
         mEngine = new RuleEvaluationEngine(mIntegrityFileManager);
 
-        when(mIntegrityFileManager.readRules(any())).thenReturn(new ArrayList<>());
+        when(mIntegrityFileManager.readRules(any())).thenReturn(Collections.singletonList(new Rule(
+                IntegrityFormula.Installer.notAllowedByManifest(), Rule.DENY)));
+
+        when(mIntegrityFileManager.initialized()).thenReturn(true);
     }
 
     @Test
     public void testAllowedInstallers_empty() {
-        Map<String, String> allowedInstallers = Collections.emptyMap();
-
         AppInstallMetadata appInstallMetadata1 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_1_CERT))
                         .build();
         AppInstallMetadata appInstallMetadata2 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_2)
-                        .setInstallerCertificate(INSTALLER_2_CERT)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_2_CERT))
                         .build();
         AppInstallMetadata appInstallMetadata3 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(RANDOM_INSTALLER)
-                        .setInstallerCertificate(RANDOM_INSTALLER_CERT)
+                        .setInstallerCertificates(Collections.singletonList(RANDOM_INSTALLER_CERT))
                         .build();
 
-        assertThat(mEngine.evaluate(appInstallMetadata1, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata1).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
-        assertThat(mEngine.evaluate(appInstallMetadata2, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata2).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
-        assertThat(mEngine.evaluate(appInstallMetadata3, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata3).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
     }
 
@@ -99,33 +101,37 @@
         AppInstallMetadata appInstallMetadata1 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_1_CERT))
+                        .setAllowedInstallersAndCert(allowedInstallers)
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata1, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata1).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
 
         AppInstallMetadata appInstallMetadata2 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(RANDOM_INSTALLER)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_1_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata2, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata2).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.DENY);
 
         AppInstallMetadata appInstallMetadata3 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(RANDOM_INSTALLER_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(RANDOM_INSTALLER_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata3, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata3).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.DENY);
 
         AppInstallMetadata appInstallMetadata4 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(RANDOM_INSTALLER_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(RANDOM_INSTALLER_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata4, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata4).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.DENY);
     }
 
@@ -138,57 +144,37 @@
         AppInstallMetadata appInstallMetadata1 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_1_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata1, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata1).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
 
         AppInstallMetadata appInstallMetadata2 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_2)
-                        .setInstallerCertificate(INSTALLER_2_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_2_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata2, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata2).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
 
         AppInstallMetadata appInstallMetadata3 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(INSTALLER_2_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_2_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata3, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata3).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.DENY);
 
         AppInstallMetadata appInstallMetadata4 =
                 getAppInstallMetadataBuilder()
                         .setInstallerName(INSTALLER_2)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
+                        .setAllowedInstallersAndCert(allowedInstallers)
+                        .setInstallerCertificates(Collections.singletonList(INSTALLER_1_CERT))
                         .build();
-        assertThat(mEngine.evaluate(appInstallMetadata4, allowedInstallers).getEffect())
-                .isEqualTo(IntegrityCheckResult.Effect.DENY);
-    }
-
-    @Test
-    public void manifestBasedRuleEvaluationWorksEvenWhenIntegrityFilesAreUnavailable() {
-        when(mIntegrityFileManager.initialized()).thenReturn(false);
-
-        Map<String, String> allowedInstallers =
-                Collections.singletonMap(INSTALLER_1, INSTALLER_1_CERT);
-
-        AppInstallMetadata appInstallMetadata1 =
-                getAppInstallMetadataBuilder()
-                        .setInstallerName(INSTALLER_1)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
-                        .build();
-        assertThat(mEngine.evaluate(appInstallMetadata1, allowedInstallers).getEffect())
-                .isEqualTo(IntegrityCheckResult.Effect.ALLOW);
-
-        AppInstallMetadata appInstallMetadata2 =
-                getAppInstallMetadataBuilder()
-                        .setInstallerName(RANDOM_INSTALLER)
-                        .setInstallerCertificate(INSTALLER_1_CERT)
-                        .build();
-        assertThat(mEngine.evaluate(appInstallMetadata2, allowedInstallers).getEffect())
+        assertThat(mEngine.evaluate(appInstallMetadata4).getEffect())
                 .isEqualTo(IntegrityCheckResult.Effect.DENY);
     }
 
@@ -196,8 +182,8 @@
     private AppInstallMetadata.Builder getAppInstallMetadataBuilder() {
         return new AppInstallMetadata.Builder()
                 .setPackageName("abc")
-                .setAppCertificate("abc")
-                .setInstallerCertificate("abc")
+                .setAppCertificates(Collections.singletonList("abc"))
+                .setInstallerCertificates(Collections.singletonList("abc"))
                 .setInstallerName("abc")
                 .setVersionCode(-1)
                 .setIsPreInstalled(true);
diff --git a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
index 7b53e5e..b271a77 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/engine/RuleEvaluatorTest.java
@@ -48,7 +48,7 @@
     private static final AppInstallMetadata APP_INSTALL_METADATA =
             new AppInstallMetadata.Builder()
                     .setPackageName(PACKAGE_NAME_1)
-                    .setAppCertificate(APP_CERTIFICATE)
+                    .setAppCertificates(Collections.singletonList(APP_CERTIFICATE))
                     .setVersionCode(2)
                     .build();
 
diff --git a/services/tests/servicestests/src/com/android/server/integrity/model/IntegrityCheckResultTest.java b/services/tests/servicestests/src/com/android/server/integrity/model/IntegrityCheckResultTest.java
index ec142395..6c23ff6 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/model/IntegrityCheckResultTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/model/IntegrityCheckResultTest.java
@@ -21,7 +21,8 @@
 import android.content.integrity.AtomicFormula;
 import android.content.integrity.CompoundFormula;
 import android.content.integrity.Rule;
-import android.util.StatsLog;
+
+import com.android.internal.util.FrameworkStatsLog;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -40,7 +41,7 @@
         assertThat(allowResult.getEffect()).isEqualTo(IntegrityCheckResult.Effect.ALLOW);
         assertThat(allowResult.getMatchedRules()).isEmpty();
         assertThat(allowResult.getLoggingResponse())
-                .isEqualTo(StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__ALLOWED);
+                .isEqualTo(FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__ALLOWED);
     }
 
     @Test
@@ -58,7 +59,8 @@
         assertThat(allowResult.getEffect()).isEqualTo(IntegrityCheckResult.Effect.ALLOW);
         assertThat(allowResult.getMatchedRules()).containsExactly(forceAllowRule);
         assertThat(allowResult.getLoggingResponse())
-                .isEqualTo(StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__FORCE_ALLOWED);
+                .isEqualTo(
+                        FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__FORCE_ALLOWED);
     }
 
     @Test
@@ -76,7 +78,7 @@
         assertThat(denyResult.getEffect()).isEqualTo(IntegrityCheckResult.Effect.DENY);
         assertThat(denyResult.getMatchedRules()).containsExactly(failedRule);
         assertThat(denyResult.getLoggingResponse())
-                .isEqualTo(StatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__REJECTED);
+                .isEqualTo(FrameworkStatsLog.INTEGRITY_CHECK_RESULT_REPORTED__RESPONSE__REJECTED);
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleBinaryParserTest.java b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleBinaryParserTest.java
index 38cf562..3dc26af 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleBinaryParserTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleBinaryParserTest.java
@@ -58,7 +58,7 @@
             getBits(COMPOUND_FORMULA_END, SEPARATOR_BITS);
     private static final String ATOMIC_FORMULA_START_BITS =
             getBits(ATOMIC_FORMULA_START, SEPARATOR_BITS);
-    private static final int INVALID_FORMULA_SEPARATOR_VALUE = 3;
+    private static final int INVALID_FORMULA_SEPARATOR_VALUE = (1 << SEPARATOR_BITS) - 1;
     private static final String INVALID_FORMULA_SEPARATOR_BITS =
             getBits(INVALID_FORMULA_SEPARATOR_VALUE, SEPARATOR_BITS);
 
diff --git a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleIndexingControllerTest.java b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleIndexingControllerTest.java
index 742952e..0784b7a 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/parser/RuleIndexingControllerTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/parser/RuleIndexingControllerTest.java
@@ -35,6 +35,8 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.nio.ByteBuffer;
+import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 
 @RunWith(JUnit4.class)
@@ -49,7 +51,7 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName("ddd")
-                        .setAppCertificate("777")
+                        .setAppCertificates(Collections.singletonList("777"))
                         .build();
 
         List<RuleIndexRange> resultingIndexes =
@@ -63,6 +65,29 @@
     }
 
     @Test
+    public void verifyIndexRangeSearchIsCorrect_multipleAppCertificates() throws IOException {
+        InputStream inputStream = obtainDefaultIndexingMapForTest();
+
+        RuleIndexingController indexingController = new RuleIndexingController(inputStream);
+
+        AppInstallMetadata appInstallMetadata =
+                new AppInstallMetadata.Builder()
+                        .setPackageName("ddd")
+                        .setAppCertificates(Arrays.asList("777", "999"))
+                        .build();
+
+        List<RuleIndexRange> resultingIndexes =
+                indexingController.identifyRulesToEvaluate(appInstallMetadata);
+
+        assertThat(resultingIndexes)
+                .containsExactly(
+                        new RuleIndexRange(200, 300),
+                        new RuleIndexRange(700, 800),
+                        new RuleIndexRange(800, 900),
+                        new RuleIndexRange(900, 945));
+    }
+
+    @Test
     public void verifyIndexRangeSearchIsCorrect_keysInFirstAndLastBlock() throws IOException {
         InputStream inputStream = obtainDefaultIndexingMapForTest();
 
@@ -71,7 +96,7 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName("bbb")
-                        .setAppCertificate("999")
+                        .setAppCertificates(Collections.singletonList("999"))
                         .build();
 
         List<RuleIndexRange> resultingIndexes =
@@ -93,7 +118,7 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName("ccc")
-                        .setAppCertificate("444")
+                        .setAppCertificates(Collections.singletonList("444"))
                         .build();
 
         List<RuleIndexRange> resultingIndexes =
@@ -125,7 +150,7 @@
         AppInstallMetadata appInstallMetadata =
                 new AppInstallMetadata.Builder()
                         .setPackageName("ccc")
-                        .setAppCertificate("444")
+                        .setAppCertificates(Collections.singletonList("444"))
                         .build();
 
         List<RuleIndexRange> resultingIndexes =
diff --git a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleBinarySerializerTest.java b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleBinarySerializerTest.java
index b3d9493..b878779 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleBinarySerializerTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleBinarySerializerTest.java
@@ -203,8 +203,8 @@
                         + getBits(DEFAULT_FORMAT_VERSION_BYTES.length, /* numOfBits= */ 32)
                         + SERIALIZED_END_INDEXING_KEY
                         + getBits(
-                        DEFAULT_FORMAT_VERSION_BYTES.length + getBytes(expectedBits).length,
-                        /* numOfBits= */ 32);
+                                DEFAULT_FORMAT_VERSION_BYTES.length + getBytes(expectedBits).length,
+                                /* numOfBits= */ 32);
         expectedIndexingOutputStream.write(
                 getBytes(
                         expectedIndexingBitsForIndexed
@@ -427,8 +427,7 @@
         Rule rule =
                 new Rule(
                         new AtomicFormula.LongAtomicFormula(
-                                AtomicFormula.VERSION_CODE, AtomicFormula.EQ,
-                                versionCode),
+                                AtomicFormula.VERSION_CODE, AtomicFormula.EQ, versionCode),
                         Rule.DENY);
         RuleSerializer binarySerializer = new RuleBinarySerializer();
         String expectedBits =
@@ -456,8 +455,7 @@
         String preInstalled = "1";
         Rule rule =
                 new Rule(
-                        new AtomicFormula.BooleanAtomicFormula(
-                                AtomicFormula.PRE_INSTALLED, true),
+                        new AtomicFormula.BooleanAtomicFormula(AtomicFormula.PRE_INSTALLED, true),
                         Rule.DENY);
         RuleSerializer binarySerializer = new RuleBinarySerializer();
         String expectedBits =
diff --git a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifierTest.java b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifierTest.java
index 913aff7..ea9e6ff 100644
--- a/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifierTest.java
+++ b/services/tests/servicestests/src/com/android/server/integrity/serializer/RuleIndexingDetailsIdentifierTest.java
@@ -112,6 +112,7 @@
                                     ATOMIC_FORMULA_WITH_VERSION_CODE,
                                     ATOMIC_FORMULA_WITH_ISPREINSTALLED)),
                     Rule.DENY);
+    public static final int INVALID_FORMULA_TAG = -1;
 
     @Test
     public void getIndexType_nullRule() {
@@ -290,7 +291,7 @@
         return new AtomicFormula(0) {
             @Override
             public int getTag() {
-                return 4;
+                return INVALID_FORMULA_TAG;
             }
 
             @Override
diff --git a/services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java b/services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java
new file mode 100644
index 0000000..6fafe11
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/location/MockableLocationProviderTest.java
@@ -0,0 +1,213 @@
+/*
+ * 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.server.location;
+
+import static androidx.test.ext.truth.location.LocationSubject.assertThat;
+
+import static com.android.internal.location.ProviderRequest.EMPTY_REQUEST;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.spy;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+
+import android.location.Criteria;
+import android.location.Location;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.location.ProviderProperties;
+import com.android.internal.location.ProviderRequest;
+import com.android.server.location.test.FakeProvider;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.LinkedList;
+import java.util.List;
+
+@Presubmit
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class MockableLocationProviderTest {
+
+    private Object mLock;
+    private ListenerCapture mListener;
+
+    private AbstractLocationProvider mRealProvider;
+    private MockProvider mMockProvider;
+
+    private MockableLocationProvider mProvider;
+
+    @Before
+    public void setUp() {
+        mLock = new Object();
+        mListener = new ListenerCapture();
+
+        mRealProvider = spy(new FakeProvider());
+        mMockProvider = spy(new MockProvider(new ProviderProperties(
+                false,
+                false,
+                false,
+                false,
+                true,
+                true,
+                true,
+                Criteria.POWER_LOW,
+                Criteria.ACCURACY_FINE)));
+
+        mProvider = new MockableLocationProvider(mLock, mListener);
+        mProvider.setRealProvider(mRealProvider);
+    }
+
+    @Test
+    public void testSetProvider() {
+        assertThat(mProvider.getProvider()).isEqualTo(mRealProvider);
+
+        mProvider.setMockProvider(mMockProvider);
+        assertThat(mProvider.getProvider()).isEqualTo(mMockProvider);
+
+        mProvider.setMockProvider(null);
+        assertThat(mProvider.getProvider()).isEqualTo(mRealProvider);
+
+        mProvider.setRealProvider(null);
+        assertThat(mProvider.getProvider()).isNull();
+    }
+
+    @Test
+    public void testSetRequest() {
+        assertThat(mProvider.getCurrentRequest()).isEqualTo(EMPTY_REQUEST);
+        verify(mRealProvider, times(1)).onSetRequest(EMPTY_REQUEST);
+
+        ProviderRequest request = new ProviderRequest.Builder().setInterval(1).build();
+        mProvider.setRequest(request);
+
+        assertThat(mProvider.getCurrentRequest()).isEqualTo(request);
+        verify(mRealProvider, times(1)).onSetRequest(request);
+
+        mProvider.setMockProvider(mMockProvider);
+        assertThat(mProvider.getCurrentRequest()).isEqualTo(request);
+        verify(mRealProvider, times(2)).onSetRequest(EMPTY_REQUEST);
+        verify(mMockProvider, times(1)).onSetRequest(request);
+
+        mProvider.setMockProvider(null);
+        assertThat(mProvider.getCurrentRequest()).isEqualTo(request);
+        verify(mMockProvider, times(1)).onSetRequest(EMPTY_REQUEST);
+        verify(mRealProvider, times(2)).onSetRequest(request);
+
+        mProvider.setRealProvider(null);
+        assertThat(mProvider.getCurrentRequest()).isEqualTo(request);
+        verify(mRealProvider, times(3)).onSetRequest(EMPTY_REQUEST);
+    }
+
+    @Test
+    public void testRequestSetAllowed() {
+        mProvider.requestSetAllowed(true);
+        verify(mRealProvider, times(1)).onRequestSetAllowed(true);
+
+        mProvider.setMockProvider(mMockProvider);
+        mProvider.requestSetAllowed(true);
+        verify(mMockProvider, times(1)).onRequestSetAllowed(true);
+    }
+
+    @Test
+    public void testSendExtraCommand() {
+        mProvider.sendExtraCommand(0, 0, "command", null);
+        verify(mRealProvider, times(1)).onExtraCommand(0, 0, "command", null);
+
+        mProvider.setMockProvider(mMockProvider);
+        mProvider.sendExtraCommand(0, 0, "command", null);
+        verify(mMockProvider, times(1)).onExtraCommand(0, 0, "command", null);
+    }
+
+    @Test
+    public void testSetState() {
+        assertThat(mProvider.getState().allowed).isFalse();
+
+        AbstractLocationProvider.State newState;
+
+        mRealProvider.setAllowed(true);
+        newState = mListener.getNextNewState();
+        assertThat(newState).isNotNull();
+        assertThat(newState.allowed).isTrue();
+
+        mProvider.setMockProvider(mMockProvider);
+        newState = mListener.getNextNewState();
+        assertThat(newState).isNotNull();
+        assertThat(newState.allowed).isFalse();
+
+        mMockProvider.setAllowed(true);
+        newState = mListener.getNextNewState();
+        assertThat(newState).isNotNull();
+        assertThat(newState.allowed).isTrue();
+
+        mRealProvider.setAllowed(false);
+        assertThat(mListener.getNextNewState()).isNull();
+
+        mProvider.setMockProvider(null);
+        newState = mListener.getNextNewState();
+        assertThat(newState).isNotNull();
+        assertThat(newState.allowed).isFalse();
+    }
+
+    @Test
+    public void testReportLocation() {
+        Location realLocation = new Location("real");
+        Location mockLocation = new Location("mock");
+
+        mRealProvider.reportLocation(realLocation);
+        assertThat(mListener.getNextLocation()).isEqualTo(realLocation);
+
+        mProvider.setMockProvider(mMockProvider);
+        mRealProvider.reportLocation(realLocation);
+        mMockProvider.reportLocation(mockLocation);
+        assertThat(mListener.getNextLocation()).isEqualTo(mockLocation);
+    }
+
+    private class ListenerCapture implements AbstractLocationProvider.Listener {
+
+        private final LinkedList<AbstractLocationProvider.State> mNewStates = new LinkedList<>();
+        private final LinkedList<Location> mLocations = new LinkedList<>();
+
+        @Override
+        public void onStateChanged(AbstractLocationProvider.State oldState,
+                AbstractLocationProvider.State newState) {
+            assertThat(Thread.holdsLock(mLock)).isTrue();
+            mNewStates.add(newState);
+        }
+
+        private AbstractLocationProvider.State getNextNewState() {
+            return mNewStates.poll();
+        }
+
+        @Override
+        public void onReportLocation(Location location) {
+            assertThat(Thread.holdsLock(mLock)).isTrue();
+            mLocations.add(location);
+        }
+
+        private Location getNextLocation() {
+            return mLocations.poll();
+        }
+
+        @Override
+        public void onReportLocation(List<Location> locations) {}
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
index f262733..4d0ad96 100644
--- a/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/location/gnss/GnssManagerServiceTest.java
@@ -24,6 +24,7 @@
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.ArgumentMatchers.nullable;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
@@ -31,28 +32,34 @@
 import static org.testng.Assert.assertThrows;
 
 import android.Manifest;
-import android.app.ActivityManager;
 import android.app.AppOpsManager;
 import android.content.Context;
 import android.content.pm.PackageManager;
+import android.location.GnssAntennaInfo;
 import android.location.GnssClock;
 import android.location.GnssMeasurementCorrections;
 import android.location.GnssMeasurementsEvent;
 import android.location.GnssNavigationMessage;
+import android.location.GnssRequest;
 import android.location.GnssSingleSatCorrection;
 import android.location.IBatchedLocationCallback;
+import android.location.IGnssAntennaInfoListener;
 import android.location.IGnssMeasurementsListener;
 import android.location.IGnssNavigationMessageListener;
 import android.location.IGnssStatusListener;
 import android.location.INetInitiatedListener;
 import android.location.Location;
+import android.location.LocationManagerInternal;
 import android.os.Handler;
 import android.os.IBinder;
 import android.os.IInterface;
 import android.os.Message;
 import android.os.RemoteException;
 
-import com.android.server.LocationManagerService;
+import com.android.server.LocalServices;
+import com.android.server.location.AppForegroundHelper;
+import com.android.server.location.GnssAntennaInfoProvider;
+import com.android.server.location.GnssAntennaInfoProvider.GnssAntennaInfoProviderNative;
 import com.android.server.location.GnssBatchingProvider;
 import com.android.server.location.GnssCapabilitiesProvider;
 import com.android.server.location.GnssLocationProvider;
@@ -63,7 +70,9 @@
 import com.android.server.location.GnssNavigationMessageProvider.GnssNavigationMessageProviderNative;
 import com.android.server.location.GnssStatusListenerHelper;
 import com.android.server.location.LocationUsageLogger;
+import com.android.server.location.SettingsHelper;
 
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.AdditionalMatchers;
@@ -93,18 +102,21 @@
     @Mock
     private GnssMeasurementCorrectionsProvider mMockGnssMeasurementCorrectionsProvider;
     @Mock
-    private INetInitiatedListener mMockNetInitiatedListener;
+    private INetInitiatedListener mNetInitiatedListener;
     private GnssMeasurementsProvider mTestGnssMeasurementsProvider;
     private GnssStatusListenerHelper mTestGnssStatusProvider;
     private GnssNavigationMessageProvider mTestGnssNavigationMessageProvider;
+    private GnssAntennaInfoProvider mTestGnssAntennaInfoProvider;
 
     // Managers and services
     @Mock
-    private AppOpsManager mMockAppOpsManager;
+    private AppOpsManager mAppOpsManager;
     @Mock
-    private ActivityManager mMockActivityManager;
+    private SettingsHelper mSettingsHelper;
     @Mock
-    private LocationManagerService mMockLocationManagerService;
+    private AppForegroundHelper mAppForegroundHelper;
+    @Mock
+    private LocationManagerInternal mLocationManagerInternal;
 
     // Context and handler
     @Mock
@@ -113,25 +125,23 @@
     private Context mMockContext;
 
     // Class under test
-    private com.android.server.location.gnss.GnssManagerService mGnssManagerService;
+    private GnssManagerService mGnssManagerService;
 
     @Before
     public void setUp() {
         MockitoAnnotations.initMocks(this);
         GnssLocationProvider.setIsSupportedForTest(true);
 
-        // Set up mock context
         when(mMockContext.getSystemServiceName(AppOpsManager.class)).thenReturn(
                 Context.APP_OPS_SERVICE);
-        when(mMockContext.getSystemServiceName(ActivityManager.class)).thenReturn(
-                Context.ACTIVITY_SERVICE);
         when(mMockContext.getSystemService(Context.APP_OPS_SERVICE)).thenReturn(
-                mMockAppOpsManager);
-        when(mMockContext.getSystemService(
-                eq(Context.ACTIVITY_SERVICE))).thenReturn(
-                mMockActivityManager);
+                mAppOpsManager);
         enableLocationPermissions();
 
+        when(mAppForegroundHelper.isAppForeground(anyInt())).thenReturn(true);
+
+        LocalServices.addService(LocationManagerInternal.class, mLocationManagerInternal);
+
         // Mock Handler will execute posted runnables immediately
         when(mMockHandler.sendMessageAtTime(any(Message.class), anyLong())).thenAnswer(
                 (InvocationOnMock invocation) -> {
@@ -147,6 +157,8 @@
                 mMockContext, mMockHandler);
         mTestGnssNavigationMessageProvider = createGnssNavigationMessageProvider(
                 mMockContext, mMockHandler);
+        mTestGnssAntennaInfoProvider = createGnssAntennaInfoProvider(
+                mMockContext, mMockHandler);
 
         // Setup GnssLocationProvider to return providers
         when(mMockGnssLocationProvider.getGnssStatusProvider()).thenReturn(
@@ -164,15 +176,24 @@
         when(mMockGnssLocationProvider.getGnssNavigationMessageProvider()).thenReturn(
                 mTestGnssNavigationMessageProvider);
         when(mMockGnssLocationProvider.getNetInitiatedListener()).thenReturn(
-                mMockNetInitiatedListener);
+                mNetInitiatedListener);
+        when(mMockGnssLocationProvider.getGnssAntennaInfoProvider()).thenReturn(
+                mTestGnssAntennaInfoProvider);
 
         // Setup GnssBatching provider
         when(mMockGnssBatchingProvider.start(anyLong(), anyBoolean())).thenReturn(true);
         when(mMockGnssBatchingProvider.stop()).thenReturn(true);
 
         // Create GnssManagerService
-        mGnssManagerService = new GnssManagerService(mMockLocationManagerService, mMockContext,
-                mMockGnssLocationProvider, new LocationUsageLogger());
+        mGnssManagerService = new GnssManagerService(mMockContext, mSettingsHelper,
+                mAppForegroundHelper, new LocationUsageLogger(),
+                mMockGnssLocationProvider);
+        mGnssManagerService.onSystemReady();
+    }
+
+    @After
+    public void tearDown() {
+        LocalServices.removeServiceForTest(LocationManagerInternal.class);
     }
 
     private void overrideAsBinder(IInterface mockListener) {
@@ -193,6 +214,12 @@
         return mockListener;
     }
 
+    private IGnssAntennaInfoListener createMockGnssAntennaInfoListener() {
+        IGnssAntennaInfoListener mockListener = mock(IGnssAntennaInfoListener.class);
+        overrideAsBinder(mockListener);
+        return mockListener;
+    }
+
     private IBatchedLocationCallback createMockBatchedLocationCallback() {
         IBatchedLocationCallback mockedCallback = mock(IBatchedLocationCallback.class);
         overrideAsBinder(mockedCallback);
@@ -213,6 +240,39 @@
                         Arrays.asList(gnssSingleSatCorrection)).build();
     }
 
+    private static List<GnssAntennaInfo> createDummyGnssAntennaInfos() {
+        double carrierFrequencyMHz = 13758.0;
+
+        GnssAntennaInfo.PhaseCenterOffsetCoordinates phaseCenterOffsetCoordinates = new
+                GnssAntennaInfo.PhaseCenterOffsetCoordinates(
+                4.3d,
+                1.4d,
+                2.10d,
+                2.1d,
+                3.12d,
+                0.5d);
+
+        double[][] phaseCenterVariationCorrectionsMillimeters = new double[10][10];
+        double[][] phaseCenterVariationCorrectionsUncertaintyMillimeters = new double[10][10];
+        GnssAntennaInfo.PhaseCenterVariationCorrections
+                phaseCenterVariationCorrections =
+                new GnssAntennaInfo.PhaseCenterVariationCorrections(
+                        phaseCenterVariationCorrectionsMillimeters,
+                        phaseCenterVariationCorrectionsUncertaintyMillimeters);
+
+        double[][] signalGainCorrectionsDbi = new double[10][10];
+        double[][] signalGainCorrectionsUncertaintyDbi = new double[10][10];
+        GnssAntennaInfo.SignalGainCorrections signalGainCorrections = new
+                GnssAntennaInfo.SignalGainCorrections(
+                signalGainCorrectionsDbi,
+                signalGainCorrectionsUncertaintyDbi);
+
+        List<GnssAntennaInfo> gnssAntennaInfos = new ArrayList();
+        gnssAntennaInfos.add(new GnssAntennaInfo(carrierFrequencyMHz, phaseCenterOffsetCoordinates,
+                phaseCenterVariationCorrections, signalGainCorrections));
+        return gnssAntennaInfos;
+    }
+
     private void enableLocationPermissions() {
         Mockito.doThrow(new SecurityException()).when(
                 mMockContext).enforceCallingPermission(
@@ -225,7 +285,7 @@
                 PackageManager.PERMISSION_GRANTED);
 
         // AppOpsManager will return true if OP_FINE_LOCATION is checked
-        when(mMockAppOpsManager.checkOp(anyInt(), anyInt(), anyString())).thenAnswer(
+        when(mAppOpsManager.checkOp(anyInt(), anyInt(), anyString())).thenAnswer(
                 (InvocationOnMock invocation) -> {
                     int code = (int) (invocation.getArguments()[0]);
                     if (code == AppOpsManager.OP_FINE_LOCATION) {
@@ -237,11 +297,11 @@
 
     private void disableLocationPermissions() {
         Mockito.doThrow(new SecurityException()).when(
-                mMockContext).enforceCallingPermission(anyString(), anyString());
+                mMockContext).enforceCallingPermission(anyString(), nullable(String.class));
         Mockito.doThrow(new SecurityException()).when(
                 mMockContext).checkPermission(anyString(), anyInt(), anyInt());
 
-        when(mMockAppOpsManager.checkOp(anyInt(), anyInt(),
+        when(mAppOpsManager.checkOp(anyInt(), anyInt(),
                 anyString())).thenReturn(AppOpsManager.MODE_ERRORED);
     }
 
@@ -287,6 +347,18 @@
         };
     }
 
+    private GnssAntennaInfoProvider createGnssAntennaInfoProvider(Context context,
+            Handler handler) {
+        GnssAntennaInfoProviderNative mockGnssAntenaInfoProviderNative = mock(
+                GnssAntennaInfoProviderNative.class);
+        return new GnssAntennaInfoProvider(context, handler, mockGnssAntenaInfoProviderNative) {
+            @Override
+            protected boolean isGpsEnabled() {
+                return true;
+            }
+        };
+    }
+
     @Test
     public void getGnssYearOfHardwareTest() {
         final int gnssYearOfHardware = 2012;
@@ -552,7 +624,7 @@
 
         assertThrows(SecurityException.class,
                 () -> mGnssManagerService.addGnssMeasurementsListener(
-                        mockGnssMeasurementsListener,
+                        new GnssRequest.Builder().build(), mockGnssMeasurementsListener,
                         "com.android.server", "abcd123", "TestGnssMeasurementsListener"));
 
         mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
@@ -569,8 +641,11 @@
 
         enableLocationPermissions();
 
-        assertThat(mGnssManagerService.addGnssMeasurementsListener(mockGnssMeasurementsListener,
-                "com.android.server", "abcd123", "TestGnssMeasurementsListener")).isEqualTo(true);
+        assertThat(mGnssManagerService.addGnssMeasurementsListener(
+                new GnssRequest.Builder().build(),
+                mockGnssMeasurementsListener,
+                "com.android.server", "abcd123",
+                "TestGnssMeasurementsListener")).isEqualTo(true);
 
         mTestGnssMeasurementsProvider.onMeasurementsAvailable(gnssMeasurementsEvent);
         verify(mockGnssMeasurementsListener, times(1)).onGnssMeasurementsReceived(
@@ -615,8 +690,10 @@
 
         enableLocationPermissions();
 
-        mGnssManagerService.addGnssMeasurementsListener(mockGnssMeasurementsListener,
-                "com.android.server", "abcd123", "TestGnssMeasurementsListener");
+        mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(),
+                mockGnssMeasurementsListener,
+                "com.android.server", "abcd123",
+                "TestGnssMeasurementsListener");
 
         disableLocationPermissions();
 
@@ -637,8 +714,10 @@
 
         enableLocationPermissions();
 
-        mGnssManagerService.addGnssMeasurementsListener(mockGnssMeasurementsListener,
-                "com.android.server", "abcd123", "TestGnssMeasurementsListener");
+        mGnssManagerService.addGnssMeasurementsListener(new GnssRequest.Builder().build(),
+                mockGnssMeasurementsListener,
+                "com.android.server", "abcd123",
+                "TestGnssMeasurementsListener");
 
         disableLocationPermissions();
 
@@ -651,6 +730,82 @@
     }
 
     @Test
+    public void addGnssAntennaInfoListenerWithoutPermissionsTest() throws RemoteException {
+        IGnssAntennaInfoListener mockGnssAntennaInfoListener =
+                createMockGnssAntennaInfoListener();
+        List<GnssAntennaInfo> gnssAntennaInfos = createDummyGnssAntennaInfos();
+
+        disableLocationPermissions();
+
+        assertThrows(SecurityException.class,
+                () -> mGnssManagerService.addGnssAntennaInfoListener(
+                        mockGnssAntennaInfoListener,
+                        "com.android.server", "abcd123", "TestGnssAntennaInfoListener"));
+
+        mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
+        verify(mockGnssAntennaInfoListener, times(0))
+                .onGnssAntennaInfoReceived(gnssAntennaInfos);
+    }
+
+    @Test
+    public void addGnssAntennaInfoListenerWithPermissionsTest() throws RemoteException {
+        IGnssAntennaInfoListener mockGnssAntennaInfoListener =
+                createMockGnssAntennaInfoListener();
+        List<GnssAntennaInfo> gnssAntennaInfos = createDummyGnssAntennaInfos();
+
+        enableLocationPermissions();
+
+        assertThat(mGnssManagerService.addGnssAntennaInfoListener(mockGnssAntennaInfoListener,
+                "com.android.server", "abcd123", "TestGnssAntennaInfoListener")).isEqualTo(true);
+
+        mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
+        verify(mockGnssAntennaInfoListener, times(1))
+                .onGnssAntennaInfoReceived(gnssAntennaInfos);
+    }
+
+    @Test
+    public void removeGnssAntennaInfoListenerWithoutPermissionsTest() throws RemoteException {
+        IGnssAntennaInfoListener mockGnssAntennaInfoListener =
+                createMockGnssAntennaInfoListener();
+        List<GnssAntennaInfo> gnssAntennaInfos = createDummyGnssAntennaInfos();
+
+        enableLocationPermissions();
+
+        mGnssManagerService.addGnssAntennaInfoListener(
+                mockGnssAntennaInfoListener,
+                "com.android.server", "abcd123", "TestGnssAntennaInfoListener");
+
+        disableLocationPermissions();
+
+        mGnssManagerService.removeGnssAntennaInfoListener(
+                mockGnssAntennaInfoListener);
+
+        mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
+        verify(mockGnssAntennaInfoListener, times(0)).onGnssAntennaInfoReceived(
+                gnssAntennaInfos);
+    }
+
+    @Test
+    public void removeGnssAntennaInfoListenerWithPermissionsTest() throws RemoteException {
+        IGnssAntennaInfoListener mockGnssAntennaInfoListener =
+                createMockGnssAntennaInfoListener();
+        List<GnssAntennaInfo> gnssAntennaInfos = createDummyGnssAntennaInfos();
+
+        enableLocationPermissions();
+
+        mGnssManagerService.addGnssAntennaInfoListener(
+                mockGnssAntennaInfoListener,
+                "com.android.server", "abcd123", "TestGnssAntennaInfoListener");
+
+        mGnssManagerService.removeGnssAntennaInfoListener(
+                mockGnssAntennaInfoListener);
+
+        mTestGnssAntennaInfoProvider.onGnssAntennaInfoAvailable(gnssAntennaInfos);
+        verify(mockGnssAntennaInfoListener, times(0)).onGnssAntennaInfoReceived(
+                gnssAntennaInfos);
+    }
+
+    @Test
     public void addGnssNavigationMessageListenerWithoutPermissionsTest() throws RemoteException {
         IGnssNavigationMessageListener mockGnssNavigationMessageListener =
                 createMockGnssNavigationMessageListener();
@@ -733,14 +888,12 @@
 
     @Test
     public void sendNiResponseWithPermissionsTest() throws RemoteException {
-        when(mMockNetInitiatedListener.sendNiResponse(anyInt(), anyInt())).thenReturn(true);
-
         int notifId = 0;
         int userResponse = 0;
         enableLocationPermissions();
 
-        assertThat(mGnssManagerService.sendNiResponse(notifId, userResponse)).isEqualTo(true);
+        mGnssManagerService.sendNiResponse(notifId, userResponse);
 
-        verify(mMockNetInitiatedListener, times(1)).sendNiResponse(notifId, userResponse);
+        verify(mNetInitiatedListener, times(1)).sendNiResponse(notifId, userResponse);
     }
 }
diff --git a/services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java b/services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java
new file mode 100644
index 0000000..762080f
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/location/test/FakeProvider.java
@@ -0,0 +1,45 @@
+/*
+ * 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.server.location.test;
+
+import android.os.Bundle;
+
+import com.android.internal.location.ProviderRequest;
+import com.android.server.location.AbstractLocationProvider;
+
+import java.io.FileDescriptor;
+import java.io.PrintWriter;
+import java.util.Collections;
+
+public class FakeProvider extends AbstractLocationProvider {
+
+    public FakeProvider() {
+        super(Runnable::run, Collections.emptySet());
+    }
+
+    @Override
+    protected void onSetRequest(ProviderRequest request) {}
+
+    @Override
+    protected void onExtraCommand(int uid, int pid, String command, Bundle extras) {}
+
+    @Override
+    protected void onRequestSetAllowed(boolean allowed) {}
+
+    @Override
+    public void dump(FileDescriptor fd, PrintWriter pw, String[] args) {}
+}
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 271e8e2..1ff451b 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/LockSettingsServiceTestable.java
@@ -147,6 +147,12 @@
         public RecoverableKeyStoreManager getRecoverableKeyStoreManager(KeyStore keyStore) {
             return mRecoverableKeyStoreManager;
         }
+
+        @Override
+        public ManagedProfilePasswordCache getManagedProfilePasswordCache() {
+            return mock(ManagedProfilePasswordCache.class);
+        }
+
     }
 
     public MockInjector mInjector;
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowDataTest.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowDataTest.java
index 54c552b..b5c6d04 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowDataTest.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowDataTest.java
@@ -21,16 +21,22 @@
 
 import androidx.test.runner.AndroidJUnit4;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
-import javax.crypto.spec.SecretKeySpec;
-
 /**
  * atest FrameworksServicesTests:RebootEscrowDataTest
  */
 @RunWith(AndroidJUnit4.class)
 public class RebootEscrowDataTest {
+    private RebootEscrowKey mKey;
+
+    @Before
+    public void generateKey() throws Exception {
+        mKey = RebootEscrowKey.generate();
+    }
+
     private static byte[] getTestSp() {
         byte[] testSp = new byte[10];
         for (int i = 0; i < testSp.length; i++) {
@@ -41,30 +47,30 @@
 
     @Test(expected = NullPointerException.class)
     public void fromEntries_failsOnNull() throws Exception {
-        RebootEscrowData.fromSyntheticPassword((byte) 2, null);
+        RebootEscrowData.fromSyntheticPassword(mKey, (byte) 2, null);
     }
 
     @Test(expected = NullPointerException.class)
     public void fromEncryptedData_failsOnNullData() throws Exception {
         byte[] testSp = getTestSp();
-        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword((byte) 2, testSp);
-        SecretKeySpec key = RebootEscrowData.fromKeyBytes(expected.getKey());
+        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword(mKey, (byte) 2, testSp);
+        RebootEscrowKey key = RebootEscrowKey.fromKeyBytes(expected.getKey().getKeyBytes());
         RebootEscrowData.fromEncryptedData(key, null);
     }
 
     @Test(expected = NullPointerException.class)
     public void fromEncryptedData_failsOnNullKey() throws Exception {
         byte[] testSp = getTestSp();
-        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword((byte) 2, testSp);
+        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword(mKey, (byte) 2, testSp);
         RebootEscrowData.fromEncryptedData(null, expected.getBlob());
     }
 
     @Test
     public void fromEntries_loopback_success() throws Exception {
         byte[] testSp = getTestSp();
-        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword((byte) 2, testSp);
+        RebootEscrowData expected = RebootEscrowData.fromSyntheticPassword(mKey, (byte) 2, testSp);
 
-        SecretKeySpec key = RebootEscrowData.fromKeyBytes(expected.getKey());
+        RebootEscrowKey key = RebootEscrowKey.fromKeyBytes(expected.getKey().getKeyBytes());
         RebootEscrowData actual = RebootEscrowData.fromEncryptedData(key, expected.getBlob());
 
         assertThat(actual.getSpVersion(), is(expected.getSpVersion()));
diff --git a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
index 78a5a0b..44d88d2 100644
--- a/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
+++ b/services/tests/servicestests/src/com/android/server/locksettings/RebootEscrowManagerTests.java
@@ -18,6 +18,7 @@
 
 import static android.content.pm.UserInfo.FLAG_FULL;
 import static android.content.pm.UserInfo.FLAG_PRIMARY;
+import static android.content.pm.UserInfo.FLAG_PROFILE;
 
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -27,6 +28,7 @@
 import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.verifyNoMoreInteractions;
 import static org.mockito.Mockito.when;
@@ -56,7 +58,9 @@
 @RunWith(AndroidJUnit4.class)
 public class RebootEscrowManagerTests {
     protected static final int PRIMARY_USER_ID = 0;
-    protected static final int NONSECURE_USER_ID = 10;
+    protected static final int WORK_PROFILE_USER_ID = 10;
+    protected static final int NONSECURE_SECONDARY_USER_ID = 20;
+    protected static final int SECURE_SECONDARY_USER_ID = 21;
     private static final byte FAKE_SP_VERSION = 1;
     private static final byte[] FAKE_AUTH_TOKEN = new byte[] {
             0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08,
@@ -107,10 +111,14 @@
 
         ArrayList<UserInfo> users = new ArrayList<>();
         users.add(new UserInfo(PRIMARY_USER_ID, "primary", FLAG_PRIMARY));
-        users.add(new UserInfo(NONSECURE_USER_ID, "non-secure", FLAG_FULL));
+        users.add(new UserInfo(WORK_PROFILE_USER_ID, "work", FLAG_PROFILE));
+        users.add(new UserInfo(NONSECURE_SECONDARY_USER_ID, "non-secure", FLAG_FULL));
+        users.add(new UserInfo(SECURE_SECONDARY_USER_ID, "secure", FLAG_FULL));
         when(mUserManager.getUsers()).thenReturn(users);
         when(mCallbacks.isUserSecure(PRIMARY_USER_ID)).thenReturn(true);
-        when(mCallbacks.isUserSecure(NONSECURE_USER_ID)).thenReturn(false);
+        when(mCallbacks.isUserSecure(WORK_PROFILE_USER_ID)).thenReturn(true);
+        when(mCallbacks.isUserSecure(NONSECURE_SECONDARY_USER_ID)).thenReturn(false);
+        when(mCallbacks.isUserSecure(SECURE_SECONDARY_USER_ID)).thenReturn(true);
         mService = new RebootEscrowManager(new MockInjector(mContext, mUserManager, mRebootEscrow),
                 mCallbacks, mStorage);
     }
@@ -154,6 +162,30 @@
 
         assertTrue(mService.armRebootEscrowIfNeeded());
         verify(mRebootEscrow).storeKey(any());
+
+        assertTrue(mStorage.hasRebootEscrow(PRIMARY_USER_ID));
+        assertFalse(mStorage.hasRebootEscrow(NONSECURE_SECONDARY_USER_ID));
+    }
+
+    @Test
+    public void armService_MultipleUsers_Success() throws Exception {
+        RebootEscrowListener mockListener = mock(RebootEscrowListener.class);
+        mService.setRebootEscrowListener(mockListener);
+        mService.prepareRebootEscrow();
+
+        clearInvocations(mRebootEscrow);
+        mService.callToRebootEscrowIfNeeded(PRIMARY_USER_ID, FAKE_SP_VERSION, FAKE_AUTH_TOKEN);
+        verify(mockListener).onPreparedForReboot(eq(true));
+        mService.callToRebootEscrowIfNeeded(SECURE_SECONDARY_USER_ID, FAKE_SP_VERSION,
+                FAKE_AUTH_TOKEN);
+        verify(mRebootEscrow, never()).storeKey(any());
+
+        assertTrue(mService.armRebootEscrowIfNeeded());
+        verify(mRebootEscrow, times(1)).storeKey(any());
+
+        assertTrue(mStorage.hasRebootEscrow(PRIMARY_USER_ID));
+        assertTrue(mStorage.hasRebootEscrow(SECURE_SECONDARY_USER_ID));
+        assertFalse(mStorage.hasRebootEscrow(NONSECURE_SECONDARY_USER_ID));
     }
 
     @Test
diff --git a/services/tests/servicestests/src/com/android/server/people/PeopleServiceTest.java b/services/tests/servicestests/src/com/android/server/people/PeopleServiceTest.java
index d3166b9..9213e1f 100644
--- a/services/tests/servicestests/src/com/android/server/people/PeopleServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/PeopleServiceTest.java
@@ -28,6 +28,7 @@
 import android.content.Context;
 import android.content.pm.ParceledListSlice;
 import android.os.Binder;
+import android.os.Bundle;
 import android.os.RemoteException;
 
 import com.android.server.LocalServices;
@@ -50,6 +51,7 @@
     private static final String APP_PREDICTION_SHARE_UI_SURFACE = "share";
     private static final int APP_PREDICTION_TARGET_COUNT = 4;
     private static final String TEST_PACKAGE_NAME = "com.example";
+    private static final int USER_ID = 0;
 
     private PeopleServiceInternal mServiceInternal;
     private PeopleService.LocalService mLocalService;
@@ -72,10 +74,11 @@
         mServiceInternal = LocalServices.getService(PeopleServiceInternal.class);
         mLocalService = (PeopleService.LocalService) mServiceInternal;
 
-        mSessionId = new AppPredictionSessionId("abc");
+        mSessionId = new AppPredictionSessionId("abc", USER_ID);
         mPredictionContext = new AppPredictionContext.Builder(mContext)
                 .setUiSurface(APP_PREDICTION_SHARE_UI_SURFACE)
                 .setPredictedTargetCount(APP_PREDICTION_TARGET_COUNT)
+                .setExtras(new Bundle())
                 .build();
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/people/data/CallLogQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/CallLogQueryHelperTest.java
new file mode 100644
index 0000000..a545010
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/data/CallLogQueryHelperTest.java
@@ -0,0 +1,169 @@
+/*
+ * 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.server.people.data;
+
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.provider.CallLog.Calls;
+import android.test.mock.MockContentProvider;
+import android.test.mock.MockContentResolver;
+import android.test.mock.MockContext;
+import android.util.ArrayMap;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+@RunWith(JUnit4.class)
+public final class CallLogQueryHelperTest {
+
+    private static final String CALL_LOG_AUTHORITY = "call_log";
+    private static final String NORMALIZED_PHONE_NUMBER = "+16505551111";
+
+    private static final String[] CALL_LOG_COLUMNS = new String[] {
+            Calls.CACHED_NORMALIZED_NUMBER, Calls.DATE, Calls.DURATION, Calls.TYPE };
+
+    @Mock
+    private MockContext mContext;
+
+    private MatrixCursor mCursor;
+    private EventConsumer mEventConsumer;
+    private CallLogQueryHelper mHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mCursor = new MatrixCursor(CALL_LOG_COLUMNS);
+
+        MockContentResolver contentResolver = new MockContentResolver();
+        contentResolver.addProvider(CALL_LOG_AUTHORITY, new CallLogContentProvider());
+        when(mContext.getContentResolver()).thenReturn(contentResolver);
+
+        mEventConsumer = new EventConsumer();
+        mHelper = new CallLogQueryHelper(mContext, mEventConsumer);
+    }
+
+    @Test
+    public void testQueryNoCalls() {
+        assertFalse(mHelper.querySince(50L));
+        assertFalse(mEventConsumer.mEventMap.containsKey(NORMALIZED_PHONE_NUMBER));
+    }
+
+    @Test
+    public void testQueryIncomingCall() {
+        mCursor.addRow(new Object[] {
+                NORMALIZED_PHONE_NUMBER, /* date= */ 100L, /* duration= */ 30L,
+                /* type= */ Calls.INCOMING_TYPE });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100L, mHelper.getLastCallTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_CALL_INCOMING, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+        assertEquals(30L, events.get(0).getDurationSeconds());
+    }
+
+    @Test
+    public void testQueryOutgoingCall() {
+        mCursor.addRow(new Object[] {
+                NORMALIZED_PHONE_NUMBER, /* date= */ 100L, /* duration= */ 40L,
+                /* type= */ Calls.OUTGOING_TYPE });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100L, mHelper.getLastCallTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_CALL_OUTGOING, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+        assertEquals(40L, events.get(0).getDurationSeconds());
+    }
+
+    @Test
+    public void testQueryMissedCall() {
+        mCursor.addRow(new Object[] {
+                NORMALIZED_PHONE_NUMBER, /* date= */ 100L, /* duration= */ 0L,
+                /* type= */ Calls.MISSED_TYPE });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100L, mHelper.getLastCallTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_CALL_MISSED, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+        assertEquals(0L, events.get(0).getDurationSeconds());
+    }
+
+    @Test
+    public void testQueryMultipleCalls() {
+        mCursor.addRow(new Object[] {
+                NORMALIZED_PHONE_NUMBER, /* date= */ 100L, /* duration= */ 0L,
+                /* type= */ Calls.MISSED_TYPE });
+        mCursor.addRow(new Object[] {
+                NORMALIZED_PHONE_NUMBER, /* date= */ 110L, /* duration= */ 40L,
+                /* type= */ Calls.OUTGOING_TYPE });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(110L, mHelper.getLastCallTimestamp());
+        assertEquals(2, events.size());
+        assertEquals(Event.TYPE_CALL_MISSED, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+        assertEquals(Event.TYPE_CALL_OUTGOING, events.get(1).getType());
+        assertEquals(110L, events.get(1).getTimestamp());
+        assertEquals(40L, events.get(1).getDurationSeconds());
+    }
+
+    private class EventConsumer implements BiConsumer<String, Event> {
+
+        private final Map<String, List<Event>> mEventMap = new ArrayMap<>();
+
+        @Override
+        public void accept(String phoneNumber, Event event) {
+            mEventMap.computeIfAbsent(phoneNumber, key -> new ArrayList<>()).add(event);
+        }
+    }
+
+    private class CallLogContentProvider extends MockContentProvider {
+
+        @Override
+        public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+                String sortOrder) {
+            return mCursor;
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java b/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java
index 05a9a80..c0e7927 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/ConversationInfoTest.java
@@ -47,7 +47,7 @@
                 .setContactPhoneNumber(PHONE_NUMBER)
                 .setNotificationChannelId(NOTIFICATION_CHANNEL_ID)
                 .setShortcutFlags(ShortcutInfo.FLAG_LONG_LIVED)
-                .setVip(true)
+                .setImportant(true)
                 .setNotificationSilenced(true)
                 .setBubbled(true)
                 .setDemoted(true)
@@ -62,7 +62,7 @@
         assertEquals(PHONE_NUMBER, conversationInfo.getContactPhoneNumber());
         assertEquals(NOTIFICATION_CHANNEL_ID, conversationInfo.getNotificationChannelId());
         assertTrue(conversationInfo.isShortcutLongLived());
-        assertTrue(conversationInfo.isVip());
+        assertTrue(conversationInfo.isImportant());
         assertTrue(conversationInfo.isNotificationSilenced());
         assertTrue(conversationInfo.isBubbled());
         assertTrue(conversationInfo.isDemoted());
@@ -83,7 +83,7 @@
         assertNull(conversationInfo.getContactPhoneNumber());
         assertNull(conversationInfo.getNotificationChannelId());
         assertFalse(conversationInfo.isShortcutLongLived());
-        assertFalse(conversationInfo.isVip());
+        assertFalse(conversationInfo.isImportant());
         assertFalse(conversationInfo.isNotificationSilenced());
         assertFalse(conversationInfo.isBubbled());
         assertFalse(conversationInfo.isDemoted());
@@ -101,7 +101,7 @@
                 .setContactPhoneNumber(PHONE_NUMBER)
                 .setNotificationChannelId(NOTIFICATION_CHANNEL_ID)
                 .setShortcutFlags(ShortcutInfo.FLAG_LONG_LIVED)
-                .setVip(true)
+                .setImportant(true)
                 .setNotificationSilenced(true)
                 .setBubbled(true)
                 .setPersonImportant(true)
@@ -110,7 +110,7 @@
                 .build();
 
         ConversationInfo destination = new ConversationInfo.Builder(source)
-                .setVip(false)
+                .setImportant(false)
                 .setContactStarred(false)
                 .build();
 
@@ -120,7 +120,7 @@
         assertEquals(PHONE_NUMBER, destination.getContactPhoneNumber());
         assertEquals(NOTIFICATION_CHANNEL_ID, destination.getNotificationChannelId());
         assertTrue(destination.isShortcutLongLived());
-        assertFalse(destination.isVip());
+        assertFalse(destination.isImportant());
         assertTrue(destination.isNotificationSilenced());
         assertTrue(destination.isBubbled());
         assertTrue(destination.isPersonImportant());
diff --git a/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java b/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
index a40c6ab..03b5e38 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/ConversationStoreTest.java
@@ -21,31 +21,63 @@
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 
+import android.annotation.Nullable;
+import android.content.Context;
 import android.content.LocusId;
 import android.content.pm.ShortcutInfo;
 import android.net.Uri;
+import android.os.FileUtils;
+import android.text.format.DateUtils;
 import android.util.ArraySet;
 
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.io.File;
 import java.util.Set;
 
 @RunWith(JUnit4.class)
 public final class ConversationStoreTest {
 
     private static final String SHORTCUT_ID = "abc";
+    private static final String NOTIFICATION_CHANNEL_ID = "test : abc";
     private static final LocusId LOCUS_ID = new LocusId("def");
     private static final Uri CONTACT_URI = Uri.parse("tel:+1234567890");
     private static final String PHONE_NUMBER = "+1234567890";
 
+    private static final String SHORTCUT_ID_2 = "ghi";
+    private static final String NOTIFICATION_CHANNEL_ID_2 = "test : ghi";
+    private static final LocusId LOCUS_ID_2 = new LocusId("jkl");
+    private static final Uri CONTACT_URI_2 = Uri.parse("tel:+3234567890");
+    private static final String PHONE_NUMBER_2 = "+3234567890";
+
+    private static final String SHORTCUT_ID_3 = "mno";
+    private static final String NOTIFICATION_CHANNEL_ID_3 = "test : mno";
+    private static final LocusId LOCUS_ID_3 = new LocusId("pqr");
+    private static final Uri CONTACT_URI_3 = Uri.parse("tel:+9234567890");
+    private static final String PHONE_NUMBER_3 = "+9234567890";
+
+    private MockScheduledExecutorService mMockScheduledExecutorService;
+    private TestContactQueryHelper mTestContactQueryHelper;
     private ConversationStore mConversationStore;
+    private File mFile;
 
     @Before
     public void setUp() {
-        mConversationStore = new ConversationStore();
+        Context ctx = InstrumentationRegistry.getContext();
+        mFile = new File(ctx.getCacheDir(), "testdir");
+        mTestContactQueryHelper = new TestContactQueryHelper(ctx);
+        resetConversationStore();
+    }
+
+    @After
+    public void tearDown() {
+        FileUtils.deleteContentsAndDir(mFile);
     }
 
     @Test
@@ -59,16 +91,19 @@
 
     @Test
     public void testUpdateConversation() {
-        ConversationInfo original =
-                buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI, PHONE_NUMBER);
+        ConversationInfo original = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, null);
         mConversationStore.addOrUpdate(original);
         assertEquals(LOCUS_ID, mConversationStore.getConversation(SHORTCUT_ID).getLocusId());
+        assertNull(mConversationStore.getConversation(SHORTCUT_ID).getNotificationChannelId());
 
         LocusId newLocusId = new LocusId("ghi");
         ConversationInfo update = buildConversationInfo(
-                SHORTCUT_ID, newLocusId, CONTACT_URI, PHONE_NUMBER);
+                SHORTCUT_ID, newLocusId, CONTACT_URI, PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
         mConversationStore.addOrUpdate(update);
-        assertEquals(newLocusId, mConversationStore.getConversation(SHORTCUT_ID).getLocusId());
+        ConversationInfo updated = mConversationStore.getConversation(SHORTCUT_ID);
+        assertEquals(newLocusId, updated.getLocusId());
+        assertEquals(NOTIFICATION_CHANNEL_ID, updated.getNotificationChannelId());
     }
 
     @Test
@@ -97,8 +132,8 @@
 
     @Test
     public void testGetConversationByLocusId() {
-        ConversationInfo in =
-                buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI, PHONE_NUMBER);
+        ConversationInfo in = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
         mConversationStore.addOrUpdate(in);
         ConversationInfo out = mConversationStore.getConversationByLocusId(LOCUS_ID);
         assertNotNull(out);
@@ -110,8 +145,8 @@
 
     @Test
     public void testGetConversationByContactUri() {
-        ConversationInfo in =
-                buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI, PHONE_NUMBER);
+        ConversationInfo in = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
         mConversationStore.addOrUpdate(in);
         ConversationInfo out = mConversationStore.getConversationByContactUri(CONTACT_URI);
         assertNotNull(out);
@@ -123,8 +158,8 @@
 
     @Test
     public void testGetConversationByPhoneNumber() {
-        ConversationInfo in =
-                buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI, PHONE_NUMBER);
+        ConversationInfo in = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
         mConversationStore.addOrUpdate(in);
         ConversationInfo out = mConversationStore.getConversationByPhoneNumber(PHONE_NUMBER);
         assertNotNull(out);
@@ -134,20 +169,211 @@
         assertNull(mConversationStore.getConversationByPhoneNumber(PHONE_NUMBER));
     }
 
+    @Test
+    public void testGetConversationByNotificationChannelId() {
+        ConversationInfo in = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
+        mConversationStore.addOrUpdate(in);
+        ConversationInfo out = mConversationStore.getConversationByNotificationChannelId(
+                NOTIFICATION_CHANNEL_ID);
+        assertNotNull(out);
+        assertEquals(SHORTCUT_ID, out.getShortcutId());
+
+        mConversationStore.deleteConversation(SHORTCUT_ID);
+        assertNull(
+                mConversationStore.getConversationByNotificationChannelId(NOTIFICATION_CHANNEL_ID));
+    }
+
+    @Test
+    public void testDataPersistenceAndRestoration() {
+        // Add conversation infos, causing it to be loaded to disk.
+        ConversationInfo in1 = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
+        ConversationInfo in2 = buildConversationInfo(SHORTCUT_ID_2, LOCUS_ID_2, CONTACT_URI_2,
+                PHONE_NUMBER_2, NOTIFICATION_CHANNEL_ID_2);
+        ConversationInfo in3 = buildConversationInfo(SHORTCUT_ID_3, LOCUS_ID_3, CONTACT_URI_3,
+                PHONE_NUMBER_3, NOTIFICATION_CHANNEL_ID_3);
+        mConversationStore.addOrUpdate(in1);
+        mConversationStore.addOrUpdate(in2);
+        mConversationStore.addOrUpdate(in3);
+
+        long futuresExecuted = mMockScheduledExecutorService.fastForwardTime(
+                3L * DateUtils.MINUTE_IN_MILLIS);
+        assertEquals(1, futuresExecuted);
+
+        mMockScheduledExecutorService.resetTimeElapsedMillis();
+
+        // During restoration, we want to confirm that this conversation was removed.
+        mConversationStore.deleteConversation(SHORTCUT_ID_3);
+        mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
+
+        mTestContactQueryHelper.setQueryResult(true, true);
+        mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2);
+
+        resetConversationStore();
+        ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
+        ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
+        ConversationInfo out3 = mConversationStore.getConversation(SHORTCUT_ID_3);
+        mConversationStore.deleteConversation(SHORTCUT_ID);
+        mConversationStore.deleteConversation(SHORTCUT_ID_2);
+        mConversationStore.deleteConversation(SHORTCUT_ID_3);
+        assertEquals(in1, out1);
+        assertEquals(in2, out2);
+        assertNull(out3);
+    }
+
+    @Test
+    public void testDelayedDiskWrites() {
+        ConversationInfo in1 = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
+        ConversationInfo in2 = buildConversationInfo(SHORTCUT_ID_2, LOCUS_ID_2, CONTACT_URI_2,
+                PHONE_NUMBER_2, NOTIFICATION_CHANNEL_ID_2);
+        ConversationInfo in3 = buildConversationInfo(SHORTCUT_ID_3, LOCUS_ID_3, CONTACT_URI_3,
+                PHONE_NUMBER_3, NOTIFICATION_CHANNEL_ID_3);
+
+        mConversationStore.addOrUpdate(in1);
+        mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
+        mMockScheduledExecutorService.resetTimeElapsedMillis();
+
+        // Should not see second conversation on disk because of disk write delay has not been
+        // reached.
+        mConversationStore.addOrUpdate(in2);
+        mMockScheduledExecutorService.fastForwardTime(DateUtils.MINUTE_IN_MILLIS);
+
+        mTestContactQueryHelper.setQueryResult(true);
+        mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER);
+
+        resetConversationStore();
+        ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
+        ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
+        assertEquals(in1, out1);
+        assertNull(out2);
+
+        mConversationStore.addOrUpdate(in2);
+        mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
+        mMockScheduledExecutorService.resetTimeElapsedMillis();
+
+        mConversationStore.addOrUpdate(in3);
+        mMockScheduledExecutorService.fastForwardTime(3L * DateUtils.MINUTE_IN_MILLIS);
+
+        mTestContactQueryHelper.reset();
+        mTestContactQueryHelper.setQueryResult(true, true, true);
+        mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2, PHONE_NUMBER_3);
+
+        resetConversationStore();
+        out1 = mConversationStore.getConversation(SHORTCUT_ID);
+        out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
+        ConversationInfo out3 = mConversationStore.getConversation(SHORTCUT_ID_3);
+        assertEquals(in1, out1);
+        assertEquals(in2, out2);
+        assertEquals(in3, out3);
+    }
+
+    @Test
+    public void testMimicDevicePowerOff() {
+
+        // Even without fast forwarding time with our mock ScheduledExecutorService, we should
+        // see the conversations immediately saved to disk.
+        ConversationInfo in1 = buildConversationInfo(SHORTCUT_ID, LOCUS_ID, CONTACT_URI,
+                PHONE_NUMBER, NOTIFICATION_CHANNEL_ID);
+        ConversationInfo in2 = buildConversationInfo(SHORTCUT_ID_2, LOCUS_ID_2, CONTACT_URI_2,
+                PHONE_NUMBER_2, NOTIFICATION_CHANNEL_ID_2);
+
+        mConversationStore.addOrUpdate(in1);
+        mConversationStore.addOrUpdate(in2);
+        mConversationStore.saveConversationsToDisk();
+
+        // Ensure that futures were cancelled and the immediate flush occurred.
+        assertEquals(0, mMockScheduledExecutorService.getFutures().size());
+
+        // Expect to see 2 executes: loadConversationFromDisk and saveConversationsToDisk.
+        // loadConversationFromDisk gets called each time we call #resetConversationStore().
+        assertEquals(2, mMockScheduledExecutorService.getExecutes().size());
+
+        mTestContactQueryHelper.setQueryResult(true, true);
+        mTestContactQueryHelper.setPhoneNumberResult(PHONE_NUMBER, PHONE_NUMBER_2);
+
+        resetConversationStore();
+        ConversationInfo out1 = mConversationStore.getConversation(SHORTCUT_ID);
+        ConversationInfo out2 = mConversationStore.getConversation(SHORTCUT_ID_2);
+        assertEquals(in1, out1);
+        assertEquals(in2, out2);
+    }
+
+    private void resetConversationStore() {
+        mFile.mkdir();
+        mMockScheduledExecutorService = new MockScheduledExecutorService();
+        mConversationStore = new ConversationStore(mFile, mMockScheduledExecutorService,
+                mTestContactQueryHelper);
+        mConversationStore.loadConversationsFromDisk();
+    }
+
     private static ConversationInfo buildConversationInfo(String shortcutId) {
-        return buildConversationInfo(shortcutId, null, null, null);
+        return buildConversationInfo(shortcutId, null, null, null, null);
     }
 
     private static ConversationInfo buildConversationInfo(
-            String shortcutId, LocusId locusId, Uri contactUri, String phoneNumber) {
+            String shortcutId, LocusId locusId, Uri contactUri, String phoneNumber,
+            String notificationChannelId) {
         return new ConversationInfo.Builder()
                 .setShortcutId(shortcutId)
                 .setLocusId(locusId)
                 .setContactUri(contactUri)
                 .setContactPhoneNumber(phoneNumber)
+                .setNotificationChannelId(notificationChannelId)
                 .setShortcutFlags(ShortcutInfo.FLAG_LONG_LIVED)
-                .setVip(true)
+                .setImportant(true)
                 .setBubbled(true)
                 .build();
     }
+
+    private static class TestContactQueryHelper extends ContactsQueryHelper {
+
+        private int mQueryCalls;
+        private boolean[] mQueryResult;
+
+        private int mPhoneNumberCalls;
+        private String[] mPhoneNumberResult;
+
+        TestContactQueryHelper(Context context) {
+            super(context);
+
+            mQueryCalls = 0;
+            mPhoneNumberCalls = 0;
+        }
+
+        private void setQueryResult(boolean... values) {
+            mQueryResult = values;
+        }
+
+        private void setPhoneNumberResult(String... values) {
+            mPhoneNumberResult = values;
+        }
+
+        private void reset() {
+            mQueryCalls = 0;
+            mQueryResult = null;
+            mPhoneNumberCalls = 0;
+            mPhoneNumberResult = null;
+        }
+
+        @Override
+        boolean query(String contactUri) {
+            if (mQueryResult != null && mQueryCalls < mQueryResult.length) {
+                return mQueryResult[mQueryCalls++];
+            }
+            mQueryCalls++;
+            return false;
+        }
+
+        @Override
+        @Nullable
+        String getPhoneNumber() {
+            if (mPhoneNumberResult != null && mPhoneNumberCalls < mPhoneNumberResult.length) {
+                return mPhoneNumberResult[mPhoneNumberCalls++];
+            }
+            mPhoneNumberCalls++;
+            return null;
+        }
+    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
index 9f3d656..6769faa 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/DataManagerTest.java
@@ -16,13 +16,17 @@
 
 package com.android.server.people.data;
 
-import static android.app.usage.UsageEvents.Event.SHORTCUT_INVOCATION;
+import static android.service.notification.NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_ADDED;
+import static android.service.notification.NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_DELETED;
+import static android.service.notification.NotificationListenerService.NOTIFICATION_CHANNEL_OR_GROUP_UPDATED;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyInt;
 import static org.mockito.ArgumentMatchers.anyLong;
 import static org.mockito.ArgumentMatchers.anyString;
@@ -34,20 +38,19 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.app.Notification;
+import android.app.NotificationChannel;
+import android.app.NotificationManager;
 import android.app.Person;
 import android.app.prediction.AppTarget;
 import android.app.prediction.AppTargetEvent;
 import android.app.prediction.AppTargetId;
-import android.app.usage.UsageEvents;
 import android.app.usage.UsageStatsManagerInternal;
-import android.content.ComponentName;
 import android.content.ContentResolver;
 import android.content.Context;
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.pm.ShortcutInfo;
 import android.content.pm.ShortcutManager;
-import android.content.pm.ShortcutManager.ShareShortcutInfo;
 import android.content.pm.ShortcutServiceInternal;
 import android.content.pm.UserInfo;
 import android.database.ContentObserver;
@@ -58,6 +61,7 @@
 import android.provider.ContactsContract;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.StatusBarNotification;
+import android.telecom.TelecomManager;
 import android.telephony.TelephonyManager;
 import android.util.Range;
 
@@ -79,6 +83,7 @@
 import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.ScheduledFuture;
 import java.util.concurrent.TimeUnit;
+import java.util.function.BiConsumer;
 
 @RunWith(JUnit4.class)
 public final class DataManagerTest {
@@ -90,6 +95,8 @@
     private static final String TEST_SHORTCUT_ID = "sc";
     private static final String CONTACT_URI = "content://com.android.contacts/contacts/lookup/123";
     private static final String PHONE_NUMBER = "+1234567890";
+    private static final String NOTIFICATION_CHANNEL_ID = "test : sc";
+    private static final long MILLIS_PER_MINUTE = 1000L * 60L;
 
     @Mock private Context mContext;
     @Mock private ShortcutServiceInternal mShortcutServiceInternal;
@@ -97,12 +104,14 @@
     @Mock private ShortcutManager mShortcutManager;
     @Mock private UserManager mUserManager;
     @Mock private TelephonyManager mTelephonyManager;
+    @Mock private TelecomManager mTelecomManager;
     @Mock private ContentResolver mContentResolver;
     @Mock private ScheduledExecutorService mExecutorService;
     @Mock private ScheduledFuture mScheduledFuture;
     @Mock private StatusBarNotification mStatusBarNotification;
     @Mock private Notification mNotification;
 
+    private NotificationChannel mNotificationChannel;
     private DataManager mDataManager;
     private int mCallingUserId;
     private TestInjector mInjector;
@@ -117,6 +126,9 @@
 
         when(mContext.getMainLooper()).thenReturn(Looper.getMainLooper());
 
+        Context originalContext = getInstrumentation().getTargetContext();
+        when(mContext.getApplicationInfo()).thenReturn(originalContext.getApplicationInfo());
+
         when(mContext.getSystemService(Context.SHORTCUT_SERVICE)).thenReturn(mShortcutManager);
         when(mContext.getSystemServiceName(ShortcutManager.class)).thenReturn(
                 Context.SHORTCUT_SERVICE);
@@ -127,6 +139,12 @@
 
         when(mContext.getSystemService(Context.TELEPHONY_SERVICE)).thenReturn(mTelephonyManager);
 
+        when(mContext.getSystemService(Context.TELECOM_SERVICE)).thenReturn(mTelecomManager);
+        when(mContext.getSystemServiceName(TelecomManager.class)).thenReturn(
+                Context.TELECOM_SERVICE);
+        when(mTelecomManager.getDefaultDialerPackage(any(UserHandle.class)))
+                .thenReturn(TEST_PKG_NAME);
+
         when(mExecutorService.scheduleAtFixedRate(any(Runnable.class), anyLong(), anyLong(), any(
                 TimeUnit.class))).thenReturn(mScheduledFuture);
 
@@ -144,6 +162,10 @@
         when(mStatusBarNotification.getUser()).thenReturn(UserHandle.of(USER_ID_PRIMARY));
         when(mNotification.getShortcutId()).thenReturn(TEST_SHORTCUT_ID);
 
+        mNotificationChannel = new NotificationChannel(
+                NOTIFICATION_CHANNEL_ID, "test channel", NotificationManager.IMPORTANCE_DEFAULT);
+        mNotificationChannel.setConversationId("test", TEST_SHORTCUT_ID);
+
         mCallingUserId = USER_ID_PRIMARY;
 
         mInjector = new TestInjector();
@@ -220,32 +242,7 @@
         mDataManager.getShortcut(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID);
         verify(mShortcutServiceInternal).getShortcuts(anyInt(), anyString(), anyLong(),
                 eq(TEST_PKG_NAME), eq(Collections.singletonList(TEST_SHORTCUT_ID)),
-                eq(null), anyInt(), eq(USER_ID_PRIMARY), anyInt(), anyInt());
-    }
-
-    @Test
-    public void testGetShareTargets() {
-        mDataManager.onUserUnlocked(USER_ID_PRIMARY);
-
-        ShortcutInfo shortcut1 =
-                buildShortcutInfo("pkg_1", USER_ID_PRIMARY, "sc_1", buildPerson());
-        ShareShortcutInfo shareShortcut1 =
-                new ShareShortcutInfo(shortcut1, new ComponentName("pkg_1", "activity"));
-
-        ShortcutInfo shortcut2 =
-                buildShortcutInfo("pkg_2", USER_ID_PRIMARY, "sc_2", buildPerson());
-        ShareShortcutInfo shareShortcut2 =
-                new ShareShortcutInfo(shortcut2, new ComponentName("pkg_2", "activity"));
-        mDataManager.onShortcutAddedOrUpdated(shortcut2);
-
-        when(mShortcutManager.getShareTargets(any(IntentFilter.class)))
-                .thenReturn(Arrays.asList(shareShortcut1, shareShortcut2));
-
-        List<ShareShortcutInfo> shareShortcuts =
-                mDataManager.getConversationShareTargets(new IntentFilter());
-        // Only "sc_2" is stored as a conversation.
-        assertEquals(1, shareShortcuts.size());
-        assertEquals("sc_2", shareShortcuts.get(0).getShortcutInfo().getId());
+                eq(null), eq(null), anyInt(), eq(USER_ID_PRIMARY), anyInt(), anyInt());
     }
 
     @Test
@@ -276,6 +273,7 @@
     @Test
     public void testContactsChanged() {
         mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
 
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                 buildPerson());
@@ -300,7 +298,7 @@
     }
 
     @Test
-    public void testNotificationListener() {
+    public void testNotificationOpened() {
         mDataManager.onUserUnlocked(USER_ID_PRIMARY);
 
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
@@ -323,32 +321,137 @@
     }
 
     @Test
-    public void testQueryUsageStatsService() {
-        UsageEvents.Event e = new UsageEvents.Event(SHORTCUT_INVOCATION,
-                System.currentTimeMillis());
-        e.mPackage = TEST_PKG_NAME;
-        e.mShortcutId = TEST_SHORTCUT_ID;
-        List<UsageEvents.Event> events = new ArrayList<>();
-        events.add(e);
-        UsageEvents usageEvents = new UsageEvents(events, new String[]{});
-        when(mUsageStatsManagerInternal.queryEventsForUser(anyInt(), anyLong(), anyLong(),
-                anyBoolean())).thenReturn(usageEvents);
-
+    public void testNotificationChannelCreated() {
         mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
 
         ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
                 buildPerson());
         mDataManager.onShortcutAddedOrUpdated(shortcut);
 
-        mDataManager.queryUsageStatsService(USER_ID_PRIMARY, 0L, Long.MAX_VALUE);
+        NotificationListenerService listenerService =
+                mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
+        listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+                mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_ADDED);
 
-        List<Range<Long>> activeShortcutInvocationTimeSlots = new ArrayList<>();
+        ConversationInfo conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY)
+                .getConversationStore()
+                .getConversation(TEST_SHORTCUT_ID);
+        assertEquals(NOTIFICATION_CHANNEL_ID, conversationInfo.getNotificationChannelId());
+        assertFalse(conversationInfo.isImportant());
+        assertFalse(conversationInfo.isNotificationSilenced());
+        assertFalse(conversationInfo.isDemoted());
+    }
+
+    @Test
+    public void testNotificationChannelModified() {
+        mNotificationChannel.setImportantConversation(true);
+
+        mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
+
+        ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+                buildPerson());
+        mDataManager.onShortcutAddedOrUpdated(shortcut);
+
+        NotificationListenerService listenerService =
+                mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
+        listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+                mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_UPDATED);
+
+        ConversationInfo conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY)
+                .getConversationStore()
+                .getConversation(TEST_SHORTCUT_ID);
+        assertEquals(NOTIFICATION_CHANNEL_ID, conversationInfo.getNotificationChannelId());
+        assertTrue(conversationInfo.isImportant());
+        assertFalse(conversationInfo.isNotificationSilenced());
+        assertFalse(conversationInfo.isDemoted());
+    }
+
+    @Test
+    public void testNotificationChannelDeleted() {
+        mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
+
+        ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+                buildPerson());
+        mDataManager.onShortcutAddedOrUpdated(shortcut);
+
+        NotificationListenerService listenerService =
+                mDataManager.getNotificationListenerServiceForTesting(USER_ID_PRIMARY);
+        listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+                mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_ADDED);
+        ConversationInfo conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY)
+                .getConversationStore()
+                .getConversation(TEST_SHORTCUT_ID);
+        assertEquals(NOTIFICATION_CHANNEL_ID, conversationInfo.getNotificationChannelId());
+
+        listenerService.onNotificationChannelModified(TEST_PKG_NAME, UserHandle.of(USER_ID_PRIMARY),
+                mNotificationChannel, NOTIFICATION_CHANNEL_OR_GROUP_DELETED);
+        conversationInfo = mDataManager.getPackage(TEST_PKG_NAME, USER_ID_PRIMARY)
+                .getConversationStore()
+                .getConversation(TEST_SHORTCUT_ID);
+        assertNull(conversationInfo.getNotificationChannelId());
+        assertFalse(conversationInfo.isImportant());
+        assertFalse(conversationInfo.isNotificationSilenced());
+        assertFalse(conversationInfo.isDemoted());
+    }
+
+    @Test
+    public void testCallLogContentObserver() {
+        mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
+
+        ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+                buildPerson());
+        mDataManager.onShortcutAddedOrUpdated(shortcut);
+
+        ContentObserver contentObserver = mDataManager.getCallLogContentObserverForTesting();
+        contentObserver.onChange(false);
+        long currentTimestamp = System.currentTimeMillis();
+        mInjector.mCallLogQueryHelper.mEventConsumer.accept(PHONE_NUMBER,
+                new Event(currentTimestamp - MILLIS_PER_MINUTE * 15L, Event.TYPE_CALL_OUTGOING));
+        mInjector.mCallLogQueryHelper.mEventConsumer.accept(PHONE_NUMBER,
+                new Event(currentTimestamp - MILLIS_PER_MINUTE * 10L, Event.TYPE_CALL_INCOMING));
+        mInjector.mCallLogQueryHelper.mEventConsumer.accept(PHONE_NUMBER,
+                new Event(currentTimestamp - MILLIS_PER_MINUTE * 5L, Event.TYPE_CALL_MISSED));
+
+        List<Range<Long>> activeTimeSlots = new ArrayList<>();
         mDataManager.forAllPackages(packageData ->
-                activeShortcutInvocationTimeSlots.addAll(
+                activeTimeSlots.addAll(
                         packageData.getEventHistory(TEST_SHORTCUT_ID)
-                                .getEventIndex(Event.TYPE_SHORTCUT_INVOCATION)
+                                .getEventIndex(Event.CALL_EVENT_TYPES)
                                 .getActiveTimeSlots()));
-        assertEquals(1, activeShortcutInvocationTimeSlots.size());
+        assertEquals(3, activeTimeSlots.size());
+    }
+
+    @Test
+    public void testMmsSmsContentObserver() {
+        mDataManager.onUserUnlocked(USER_ID_PRIMARY);
+        mDataManager.onUserUnlocked(USER_ID_SECONDARY);
+
+        ShortcutInfo shortcut = buildShortcutInfo(TEST_PKG_NAME, USER_ID_PRIMARY, TEST_SHORTCUT_ID,
+                buildPerson());
+        mDataManager.onShortcutAddedOrUpdated(shortcut);
+        mDataManager.getUserDataForTesting(USER_ID_PRIMARY).setDefaultSmsApp(TEST_PKG_NAME);
+
+        ContentObserver contentObserver = mDataManager.getMmsSmsContentObserverForTesting();
+        contentObserver.onChange(false);
+        long currentTimestamp = System.currentTimeMillis();
+        Event outgoingSmsEvent =
+                new Event(currentTimestamp - MILLIS_PER_MINUTE * 10L, Event.TYPE_SMS_OUTGOING);
+        Event incomingSmsEvent =
+                new Event(currentTimestamp - MILLIS_PER_MINUTE * 5L, Event.TYPE_SMS_INCOMING);
+        mInjector.mMmsQueryHelper.mEventConsumer.accept(PHONE_NUMBER, outgoingSmsEvent);
+        mInjector.mSmsQueryHelper.mEventConsumer.accept(PHONE_NUMBER, incomingSmsEvent);
+
+        List<Range<Long>> activeTimeSlots = new ArrayList<>();
+        mDataManager.forAllPackages(packageData ->
+                activeTimeSlots.addAll(
+                        packageData.getEventHistory(TEST_SHORTCUT_ID)
+                                .getEventIndex(Event.SMS_EVENT_TYPES)
+                                .getActiveTimeSlots()));
+        assertEquals(2, activeTimeSlots.size());
     }
 
     private static <T> void addLocalServiceMock(Class<T> clazz, T mock) {
@@ -428,10 +531,73 @@
         }
     }
 
+    private class TestCallLogQueryHelper extends CallLogQueryHelper {
+
+        private final BiConsumer<String, Event> mEventConsumer;
+
+        TestCallLogQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+            super(context, eventConsumer);
+            mEventConsumer = eventConsumer;
+        }
+
+        @Override
+        boolean querySince(long sinceTime) {
+            return true;
+        }
+
+        @Override
+        long getLastCallTimestamp() {
+            return 100L;
+        }
+    }
+
+    private class TestSmsQueryHelper extends SmsQueryHelper {
+
+        private final BiConsumer<String, Event> mEventConsumer;
+
+        TestSmsQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+            super(context, eventConsumer);
+            mEventConsumer = eventConsumer;
+        }
+
+        @Override
+        boolean querySince(long sinceTime) {
+            return true;
+        }
+
+        @Override
+        long getLastMessageTimestamp() {
+            return 100L;
+        }
+    }
+
+    private class TestMmsQueryHelper extends MmsQueryHelper {
+
+        private final BiConsumer<String, Event> mEventConsumer;
+
+        TestMmsQueryHelper(Context context, BiConsumer<String, Event> eventConsumer) {
+            super(context, eventConsumer);
+            mEventConsumer = eventConsumer;
+        }
+
+        @Override
+        boolean querySince(long sinceTime) {
+            return true;
+        }
+
+        @Override
+        long getLastMessageTimestamp() {
+            return 100L;
+        }
+    }
+
     private class TestInjector extends DataManager.Injector {
 
         private final TestContactsQueryHelper mContactsQueryHelper =
                 new TestContactsQueryHelper(mContext);
+        private TestCallLogQueryHelper mCallLogQueryHelper;
+        private TestMmsQueryHelper mMmsQueryHelper;
+        private TestSmsQueryHelper mSmsQueryHelper;
 
         @Override
         ScheduledExecutorService createScheduledExecutor() {
@@ -444,6 +610,27 @@
         }
 
         @Override
+        CallLogQueryHelper createCallLogQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            mCallLogQueryHelper = new TestCallLogQueryHelper(context, eventConsumer);
+            return mCallLogQueryHelper;
+        }
+
+        @Override
+        MmsQueryHelper createMmsQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            mMmsQueryHelper = new TestMmsQueryHelper(context, eventConsumer);
+            return mMmsQueryHelper;
+        }
+
+        @Override
+        SmsQueryHelper createSmsQueryHelper(Context context,
+                BiConsumer<String, Event> eventConsumer) {
+            mSmsQueryHelper = new TestSmsQueryHelper(context, eventConsumer);
+            return mSmsQueryHelper;
+        }
+
+        @Override
         int getCallingUserId() {
             return mCallingUserId;
         }
diff --git a/services/tests/servicestests/src/com/android/server/people/data/MmsQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/MmsQueryHelperTest.java
new file mode 100644
index 0000000..7730890
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/data/MmsQueryHelperTest.java
@@ -0,0 +1,174 @@
+/*
+ * 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.server.people.data;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.provider.Telephony.BaseMmsColumns;
+import android.provider.Telephony.Mms;
+import android.test.mock.MockContentProvider;
+import android.test.mock.MockContentResolver;
+import android.test.mock.MockContext;
+import android.util.ArrayMap;
+
+import com.google.android.mms.pdu.PduHeaders;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+@RunWith(JUnit4.class)
+public final class MmsQueryHelperTest {
+
+    private static final String MMS_AUTHORITY = "mms";
+    private static final String PHONE_NUMBER = "650-555-1111";
+    private static final String NORMALIZED_PHONE_NUMBER = "+16505551111";
+    private static final String OWN_PHONE_NUMBER = "650-555-9999";
+
+    private static final String[] MMS_COLUMNS = new String[] { Mms._ID, Mms.DATE, Mms.MESSAGE_BOX };
+    private static final String[] ADDR_COLUMNS = new String[] { Mms.Addr.ADDRESS, Mms.Addr.TYPE };
+
+    @Mock
+    private MockContext mContext;
+
+    private MatrixCursor mMmsCursor;
+    private final List<MatrixCursor> mAddrCursors = new ArrayList<>();
+    private EventConsumer mEventConsumer;
+    private MmsQueryHelper mHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mMmsCursor = new MatrixCursor(MMS_COLUMNS);
+        mAddrCursors.add(new MatrixCursor(ADDR_COLUMNS));
+        mAddrCursors.add(new MatrixCursor(ADDR_COLUMNS));
+
+        MockContentResolver contentResolver = new MockContentResolver();
+        contentResolver.addProvider(MMS_AUTHORITY, new MmsContentProvider());
+        when(mContext.getContentResolver()).thenReturn(contentResolver);
+
+        mEventConsumer = new EventConsumer();
+        mHelper = new MmsQueryHelper(mContext, mEventConsumer);
+    }
+
+    @Test
+    public void testQueryNoMessages() {
+        assertFalse(mHelper.querySince(50_000L));
+        assertFalse(mEventConsumer.mEventMap.containsKey(NORMALIZED_PHONE_NUMBER));
+    }
+
+    @Test
+    public void testQueryIncomingMessage() {
+        mMmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* msgBox= */ BaseMmsColumns.MESSAGE_BOX_INBOX });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ PHONE_NUMBER, /* type= */ PduHeaders.FROM });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ OWN_PHONE_NUMBER, /* type= */ PduHeaders.TO });
+
+        assertTrue(mHelper.querySince(50_000L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100_000L, mHelper.getLastMessageTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_SMS_INCOMING, events.get(0).getType());
+        assertEquals(100_000L, events.get(0).getTimestamp());
+    }
+
+    @Test
+    public void testQueryOutgoingMessage() {
+        mMmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* msgBox= */ BaseMmsColumns.MESSAGE_BOX_SENT });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ OWN_PHONE_NUMBER, /* type= */ PduHeaders.FROM });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ PHONE_NUMBER, /* type= */ PduHeaders.TO });
+
+        assertTrue(mHelper.querySince(50_000L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100_000L, mHelper.getLastMessageTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_SMS_OUTGOING, events.get(0).getType());
+        assertEquals(100_000L, events.get(0).getTimestamp());
+    }
+
+    @Test
+    public void testQueryMultipleMessages() {
+        mMmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* msgBox= */ BaseMmsColumns.MESSAGE_BOX_SENT });
+        mMmsCursor.addRow(new Object[] {
+                /* id= */ 1, /* date= */ 110L, /* msgBox= */ BaseMmsColumns.MESSAGE_BOX_INBOX });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ OWN_PHONE_NUMBER, /* type= */ PduHeaders.FROM });
+        mAddrCursors.get(0).addRow(new Object[] {
+                /* address= */ PHONE_NUMBER, /* type= */ PduHeaders.TO });
+        mAddrCursors.get(1).addRow(new Object[] {
+                /* address= */ PHONE_NUMBER, /* type= */ PduHeaders.FROM });
+        mAddrCursors.get(1).addRow(new Object[] {
+                /* address= */ OWN_PHONE_NUMBER, /* type= */ PduHeaders.TO });
+
+        assertTrue(mHelper.querySince(50_000L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(110_000L, mHelper.getLastMessageTimestamp());
+        assertEquals(2, events.size());
+        assertEquals(Event.TYPE_SMS_OUTGOING, events.get(0).getType());
+        assertEquals(100_000L, events.get(0).getTimestamp());
+        assertEquals(Event.TYPE_SMS_INCOMING, events.get(1).getType());
+        assertEquals(110_000L, events.get(1).getTimestamp());
+    }
+
+    private class EventConsumer implements BiConsumer<String, Event> {
+
+        private final Map<String, List<Event>> mEventMap = new ArrayMap<>();
+
+        @Override
+        public void accept(String phoneNumber, Event event) {
+            mEventMap.computeIfAbsent(phoneNumber, key -> new ArrayList<>()).add(event);
+        }
+    }
+
+    private class MmsContentProvider extends MockContentProvider {
+
+        @Override
+        public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+                String sortOrder) {
+            List<String> segments = uri.getPathSegments();
+            if (segments.size() == 2 && "addr".equals(segments.get(1))) {
+                int messageId = Integer.valueOf(segments.get(0));
+                return mAddrCursors.get(messageId);
+            }
+            return mMmsCursor;
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java b/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java
new file mode 100644
index 0000000..8b8ba12
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/data/MockScheduledExecutorService.java
@@ -0,0 +1,238 @@
+/*
+ * 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.server.people.data;
+
+import com.android.internal.util.Preconditions;
+
+import com.google.common.collect.ImmutableList;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.List;
+import java.util.concurrent.Callable;
+import java.util.concurrent.Delayed;
+import java.util.concurrent.ExecutionException;
+import java.util.concurrent.Future;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.concurrent.ScheduledFuture;
+import java.util.concurrent.TimeUnit;
+import java.util.concurrent.TimeoutException;
+
+/**
+ * Mock implementation of ScheduledExecutorService for testing. All commands will run
+ * synchronously. Commands passed to {@link #submit(Runnable)} and {@link #execute(Runnable)} will
+ * run immediately. Commands scheduled via {@link #schedule(Runnable, long, TimeUnit)} will run
+ * after calling {@link #fastForwardTime(long)}.
+ */
+class MockScheduledExecutorService implements ScheduledExecutorService {
+
+    private final List<Runnable> mExecutes = new ArrayList<>();
+    private final List<MockScheduledFuture<?>> mFutures = new ArrayList<>();
+    private long mTimeElapsedMillis = 0;
+
+    /**
+     * Advances fake time, runs all the commands for which the delay has expired.
+     */
+    long fastForwardTime(long millis) {
+        mTimeElapsedMillis += millis;
+        ImmutableList<MockScheduledFuture<?>> futuresCopy = ImmutableList.copyOf(mFutures);
+        mFutures.clear();
+        long totalExecuted = 0;
+        for (MockScheduledFuture<?> future : futuresCopy) {
+            if (future.getDelay() < mTimeElapsedMillis) {
+                future.getCommand().run();
+                mExecutes.add(future.getCommand());
+                totalExecuted += 1;
+            } else {
+                mFutures.add(future);
+            }
+        }
+        return totalExecuted;
+    }
+
+    List<Runnable> getExecutes() {
+        return mExecutes;
+    }
+
+    List<MockScheduledFuture<?>> getFutures() {
+        return mFutures;
+    }
+
+    void resetTimeElapsedMillis() {
+        mTimeElapsedMillis = 0;
+    }
+
+    /**
+     * Fakes a schedule execution of {@link Runnable}. The command will be executed by an explicit
+     * call to {@link #fastForwardTime(long)}.
+     */
+    @Override
+    public ScheduledFuture<?> schedule(Runnable command, long delay, TimeUnit unit) {
+        Preconditions.checkState(unit == TimeUnit.MILLISECONDS);
+        MockScheduledFuture<?> future = new MockScheduledFuture<>(command, delay, unit);
+        mFutures.add(future);
+        return future;
+    }
+
+    @Override
+    public <V> ScheduledFuture<V> schedule(Callable<V> callable, long delay, TimeUnit unit) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ScheduledFuture<?> scheduleAtFixedRate(Runnable command, long initialDelay, long period,
+            TimeUnit unit) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public ScheduledFuture<?> scheduleWithFixedDelay(Runnable command, long initialDelay,
+            long delay, TimeUnit unit) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void shutdown() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public List<Runnable> shutdownNow() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean isShutdown() {
+        return false;
+    }
+
+    @Override
+    public boolean isTerminated() {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public boolean awaitTermination(long timeout, TimeUnit unit) throws InterruptedException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> Future<T> submit(Callable<T> task) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> Future<T> submit(Runnable task, T result) {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public Future<?> submit(Runnable command) {
+        mExecutes.add(command);
+        MockScheduledFuture<?> future = new MockScheduledFuture<>(command, 0,
+                TimeUnit.MILLISECONDS);
+        future.getCommand().run();
+        return future;
+    }
+
+    @Override
+    public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks)
+            throws InterruptedException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> List<Future<T>> invokeAll(Collection<? extends Callable<T>> tasks, long timeout,
+            TimeUnit unit) throws InterruptedException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> T invokeAny(Collection<? extends Callable<T>> tasks)
+            throws ExecutionException, InterruptedException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public <T> T invokeAny(Collection<? extends Callable<T>> tasks, long timeout, TimeUnit unit)
+            throws ExecutionException, InterruptedException, TimeoutException {
+        throw new UnsupportedOperationException();
+    }
+
+    @Override
+    public void execute(Runnable command) {
+        mExecutes.add(command);
+        command.run();
+    }
+
+    class MockScheduledFuture<V> implements ScheduledFuture<V> {
+
+        private final Runnable mCommand;
+        private final long mDelay;
+        private boolean mCancelled = false;
+
+        MockScheduledFuture(Runnable command, long delay, TimeUnit timeUnit) {
+            mCommand = command;
+            mDelay = delay;
+        }
+
+        public long getDelay() {
+            return mDelay;
+        }
+
+        public Runnable getCommand() {
+            return mCommand;
+        }
+
+        @Override
+        public long getDelay(TimeUnit unit) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public int compareTo(Delayed o) {
+            throw new UnsupportedOperationException();
+        }
+
+        @Override
+        public boolean cancel(boolean mayInterruptIfRunning) {
+            mCancelled = true;
+            return mFutures.remove(this);
+        }
+
+        @Override
+        public boolean isCancelled() {
+            return mCancelled;
+        }
+
+        @Override
+        public boolean isDone() {
+            return !mFutures.contains(this);
+        }
+
+        @Override
+        public V get() throws ExecutionException, InterruptedException {
+            return null;
+        }
+
+        @Override
+        public V get(long timeout, TimeUnit unit)
+                throws ExecutionException, InterruptedException, TimeoutException {
+            return null;
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java b/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
index 1b80d6f..1ddc21e 100644
--- a/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
+++ b/services/tests/servicestests/src/com/android/server/people/data/PackageDataTest.java
@@ -16,20 +16,23 @@
 
 package com.android.server.people.data;
 
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
 
+import android.content.Context;
 import android.content.LocusId;
 import android.content.pm.ShortcutInfo;
 import android.net.Uri;
 
+import androidx.test.InstrumentationRegistry;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 
+import java.io.File;
 import java.util.List;
 
 @RunWith(JUnit4.class)
@@ -46,12 +49,19 @@
     private Event mE2;
     private Event mE3;
     private Event mE4;
+    private boolean mIsDefaultDialer;
+    private boolean mIsDefaultSmsApp;
 
     private PackageData mPackageData;
 
     @Before
     public void setUp() {
-        mPackageData = new PackageData(PACKAGE_NAME, USER_ID);
+        Context ctx = InstrumentationRegistry.getContext();
+        File testDir = new File(ctx.getCacheDir(), "testdir");
+        testDir.mkdir();
+        mPackageData = new PackageData(
+                PACKAGE_NAME, USER_ID, pkg -> mIsDefaultDialer, pkg -> mIsDefaultSmsApp,
+                new MockScheduledExecutorService(), testDir, new ContactsQueryHelper(ctx));
         ConversationInfo conversationInfo = new ConversationInfo.Builder()
                 .setShortcutId(SHORTCUT_ID)
                 .setLocusId(LOCUS_ID)
@@ -83,8 +93,8 @@
 
     @Test
     public void testGetEventHistoryDefaultDialerAndSmsApp() {
-        mPackageData.setIsDefaultDialer(true);
-        mPackageData.setIsDefaultSmsApp(true);
+        mIsDefaultDialer = true;
+        mIsDefaultSmsApp = true;
         EventStore eventStore = mPackageData.getEventStore();
         eventStore.getOrCreateShortcutEventHistory(SHORTCUT_ID).addEvent(mE1);
         eventStore.getOrCreateCallEventHistory(PHONE_NUMBER).addEvent(mE3);
diff --git a/services/tests/servicestests/src/com/android/server/people/data/SmsQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/SmsQueryHelperTest.java
new file mode 100644
index 0000000..5cb8cb4
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/data/SmsQueryHelperTest.java
@@ -0,0 +1,151 @@
+/*
+ * 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.server.people.data;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.Mockito.when;
+
+import android.database.Cursor;
+import android.database.MatrixCursor;
+import android.net.Uri;
+import android.provider.Telephony.Sms;
+import android.provider.Telephony.TextBasedSmsColumns;
+import android.test.mock.MockContentProvider;
+import android.test.mock.MockContentResolver;
+import android.test.mock.MockContext;
+import android.util.ArrayMap;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+import java.util.function.BiConsumer;
+
+@RunWith(JUnit4.class)
+public final class SmsQueryHelperTest {
+
+    private static final String SMS_AUTHORITY = "sms";
+    private static final String PHONE_NUMBER = "650-555-1111";
+    private static final String NORMALIZED_PHONE_NUMBER = "+16505551111";
+
+    private static final String[] SMS_COLUMNS = new String[] {
+            Sms._ID, Sms.DATE, Sms.TYPE, Sms.ADDRESS };
+
+    @Mock
+    private MockContext mContext;
+
+    private MatrixCursor mSmsCursor;
+    private EventConsumer mEventConsumer;
+    private SmsQueryHelper mHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        mSmsCursor = new MatrixCursor(SMS_COLUMNS);
+
+        MockContentResolver contentResolver = new MockContentResolver();
+        contentResolver.addProvider(SMS_AUTHORITY, new SmsContentProvider());
+        when(mContext.getContentResolver()).thenReturn(contentResolver);
+
+        mEventConsumer = new EventConsumer();
+        mHelper = new SmsQueryHelper(mContext, mEventConsumer);
+    }
+
+    @Test
+    public void testQueryNoMessages() {
+        assertFalse(mHelper.querySince(50_000L));
+        assertFalse(mEventConsumer.mEventMap.containsKey(NORMALIZED_PHONE_NUMBER));
+    }
+
+    @Test
+    public void testQueryIncomingMessage() {
+        mSmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* type= */ TextBasedSmsColumns.MESSAGE_TYPE_INBOX,
+                /* address= */ PHONE_NUMBER });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100L, mHelper.getLastMessageTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_SMS_INCOMING, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+    }
+
+    @Test
+    public void testQueryOutgoingMessage() {
+        mSmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* type= */ TextBasedSmsColumns.MESSAGE_TYPE_SENT,
+                /* address= */ PHONE_NUMBER });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(100L, mHelper.getLastMessageTimestamp());
+        assertEquals(1, events.size());
+        assertEquals(Event.TYPE_SMS_OUTGOING, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+    }
+
+    @Test
+    public void testQueryMultipleMessages() {
+        mSmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 100L, /* type= */ TextBasedSmsColumns.MESSAGE_TYPE_SENT,
+                /* address= */ PHONE_NUMBER });
+        mSmsCursor.addRow(new Object[] {
+                /* id= */ 0, /* date= */ 110L, /* type= */ TextBasedSmsColumns.MESSAGE_TYPE_INBOX,
+                /* address= */ PHONE_NUMBER });
+
+        assertTrue(mHelper.querySince(50L));
+        List<Event> events = mEventConsumer.mEventMap.get(NORMALIZED_PHONE_NUMBER);
+
+        assertEquals(110L, mHelper.getLastMessageTimestamp());
+        assertEquals(2, events.size());
+        assertEquals(Event.TYPE_SMS_OUTGOING, events.get(0).getType());
+        assertEquals(100L, events.get(0).getTimestamp());
+        assertEquals(Event.TYPE_SMS_INCOMING, events.get(1).getType());
+        assertEquals(110L, events.get(1).getTimestamp());
+    }
+
+    private class EventConsumer implements BiConsumer<String, Event> {
+
+        private final Map<String, List<Event>> mEventMap = new ArrayMap<>();
+
+        @Override
+        public void accept(String phoneNumber, Event event) {
+            mEventMap.computeIfAbsent(phoneNumber, key -> new ArrayList<>()).add(event);
+        }
+    }
+
+    private class SmsContentProvider extends MockContentProvider {
+
+        @Override
+        public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs,
+                String sortOrder) {
+            return mSmsCursor;
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java
new file mode 100644
index 0000000..01d9dc0
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/data/UsageStatsQueryHelperTest.java
@@ -0,0 +1,317 @@
+/*
+ * 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.server.people.data;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+import static org.mockito.ArgumentMatchers.anyLong;
+import static org.mockito.Mockito.when;
+
+import android.annotation.NonNull;
+import android.annotation.Nullable;
+import android.annotation.UserIdInt;
+import android.app.usage.UsageEvents;
+import android.app.usage.UsageStatsManagerInternal;
+import android.content.Context;
+import android.content.LocusId;
+
+import androidx.test.InstrumentationRegistry;
+
+import com.android.server.LocalServices;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Set;
+import java.util.concurrent.ScheduledExecutorService;
+import java.util.function.Predicate;
+
+@RunWith(JUnit4.class)
+public final class UsageStatsQueryHelperTest {
+
+    private static final int USER_ID_PRIMARY = 0;
+    private static final String PKG_NAME = "pkg";
+    private static final String ACTIVITY_NAME = "TestActivity";
+    private static final String SHORTCUT_ID = "abc";
+    private static final String NOTIFICATION_CHANNEL_ID = "test : abc";
+    private static final LocusId LOCUS_ID_1 = new LocusId("locus_1");
+    private static final LocusId LOCUS_ID_2 = new LocusId("locus_2");
+
+    @Mock private UsageStatsManagerInternal mUsageStatsManagerInternal;
+
+    private TestPackageData mPackageData;
+    private UsageStatsQueryHelper mHelper;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        addLocalServiceMock(UsageStatsManagerInternal.class, mUsageStatsManagerInternal);
+
+        Context ctx = InstrumentationRegistry.getContext();
+        File testDir = new File(ctx.getCacheDir(), "testdir");
+        ScheduledExecutorService scheduledExecutorService = new MockScheduledExecutorService();
+        ContactsQueryHelper helper = new ContactsQueryHelper(ctx);
+
+        mPackageData = new TestPackageData(PKG_NAME, USER_ID_PRIMARY, pkg -> false, pkg -> false,
+                scheduledExecutorService, testDir, helper);
+        mPackageData.mConversationStore.mConversationInfo = new ConversationInfo.Builder()
+                .setShortcutId(SHORTCUT_ID)
+                .setNotificationChannelId(NOTIFICATION_CHANNEL_ID)
+                .setLocusId(LOCUS_ID_1)
+                .build();
+
+        mHelper = new UsageStatsQueryHelper(USER_ID_PRIMARY, pkg -> mPackageData);
+    }
+
+    @After
+    public void tearDown() {
+        LocalServices.removeServiceForTest(UsageStatsManagerInternal.class);
+    }
+
+    @Test
+    public void testQueryNoEvents() {
+        assertFalse(mHelper.querySince(50L));
+    }
+
+    @Test
+    public void testQueryShortcutInvocationEvent() {
+        addUsageEvents(createShortcutInvocationEvent(100L));
+
+        assertTrue(mHelper.querySince(50L));
+        assertEquals(100L, mHelper.getLastEventTimestamp());
+        Event expectedEvent = new Event(100L, Event.TYPE_SHORTCUT_INVOCATION);
+        List<Event> events = mPackageData.mEventStore.mShortcutEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(1, events.size());
+        assertEquals(expectedEvent, events.get(0));
+    }
+
+    @Test
+    public void testQueryNotificationInterruptionEvent() {
+        addUsageEvents(createNotificationInterruptionEvent(100L));
+
+        assertTrue(mHelper.querySince(50L));
+        assertEquals(100L, mHelper.getLastEventTimestamp());
+        Event expectedEvent = new Event(100L, Event.TYPE_NOTIFICATION_POSTED);
+        List<Event> events = mPackageData.mEventStore.mShortcutEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(1, events.size());
+        assertEquals(expectedEvent, events.get(0));
+    }
+
+    @Test
+    public void testInAppConversationSwitch() {
+        addUsageEvents(
+                createLocusIdSetEvent(100_000L, LOCUS_ID_1.getId()),
+                createLocusIdSetEvent(110_000L, LOCUS_ID_2.getId()));
+
+        assertTrue(mHelper.querySince(50_000L));
+        assertEquals(110_000L, mHelper.getLastEventTimestamp());
+        List<Event> events = mPackageData.mEventStore.mLocusEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(1, events.size());
+        assertEquals(createInAppConversationEvent(100_000L, 10), events.get(0));
+    }
+
+    @Test
+    public void testInAppConversationExplicitlyEnd() {
+        addUsageEvents(
+                createLocusIdSetEvent(100_000L, LOCUS_ID_1.getId()),
+                createLocusIdSetEvent(110_000L, null));
+
+        assertTrue(mHelper.querySince(50_000L));
+        assertEquals(110_000L, mHelper.getLastEventTimestamp());
+        List<Event> events = mPackageData.mEventStore.mLocusEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(1, events.size());
+        assertEquals(createInAppConversationEvent(100_000L, 10), events.get(0));
+    }
+
+    @Test
+    public void testInAppConversationImplicitlyEnd() {
+        addUsageEvents(
+                createLocusIdSetEvent(100_000L, LOCUS_ID_1.getId()),
+                createActivityStoppedEvent(110_000L));
+
+        assertTrue(mHelper.querySince(50_000L));
+        assertEquals(110_000L, mHelper.getLastEventTimestamp());
+        List<Event> events = mPackageData.mEventStore.mLocusEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(1, events.size());
+        assertEquals(createInAppConversationEvent(100_000L, 10), events.get(0));
+    }
+
+    @Test
+    public void testMultipleInAppConversations() {
+        addUsageEvents(
+                createLocusIdSetEvent(100_000L, LOCUS_ID_1.getId()),
+                createLocusIdSetEvent(110_000L, LOCUS_ID_2.getId()),
+                createLocusIdSetEvent(130_000L, LOCUS_ID_1.getId()),
+                createActivityStoppedEvent(160_000L));
+
+        assertTrue(mHelper.querySince(50_000L));
+        assertEquals(160_000L, mHelper.getLastEventTimestamp());
+        List<Event> events = mPackageData.mEventStore.mLocusEventHistory.queryEvents(
+                Event.ALL_EVENT_TYPES, 0L, Long.MAX_VALUE);
+        assertEquals(3, events.size());
+        assertEquals(createInAppConversationEvent(100_000L, 10), events.get(0));
+        assertEquals(createInAppConversationEvent(110_000L, 20), events.get(1));
+        assertEquals(createInAppConversationEvent(130_000L, 30), events.get(2));
+    }
+
+    private void addUsageEvents(UsageEvents.Event... events) {
+        UsageEvents usageEvents = new UsageEvents(Arrays.asList(events), new String[]{});
+        when(mUsageStatsManagerInternal.queryEventsForUser(anyInt(), anyLong(), anyLong(),
+                anyBoolean(), anyBoolean(), anyBoolean())).thenReturn(usageEvents);
+    }
+
+    private static <T> void addLocalServiceMock(Class<T> clazz, T mock) {
+        LocalServices.removeServiceForTest(clazz);
+        LocalServices.addService(clazz, mock);
+    }
+
+    private static UsageEvents.Event createShortcutInvocationEvent(long timestamp) {
+        UsageEvents.Event e = createUsageEvent(UsageEvents.Event.SHORTCUT_INVOCATION, timestamp);
+        e.mShortcutId = SHORTCUT_ID;
+        return e;
+    }
+
+    private static UsageEvents.Event createNotificationInterruptionEvent(long timestamp) {
+        UsageEvents.Event e = createUsageEvent(UsageEvents.Event.NOTIFICATION_INTERRUPTION,
+                timestamp);
+        e.mNotificationChannelId = NOTIFICATION_CHANNEL_ID;
+        return e;
+    }
+
+    private static UsageEvents.Event createLocusIdSetEvent(long timestamp, String locusId) {
+        UsageEvents.Event e = createUsageEvent(UsageEvents.Event.LOCUS_ID_SET, timestamp);
+        e.mClass = ACTIVITY_NAME;
+        e.mLocusId = locusId;
+        return e;
+    }
+
+    private static UsageEvents.Event createActivityStoppedEvent(long timestamp) {
+        UsageEvents.Event e = createUsageEvent(UsageEvents.Event.ACTIVITY_STOPPED, timestamp);
+        e.mClass = ACTIVITY_NAME;
+        return e;
+    }
+
+    private static UsageEvents.Event createUsageEvent(int eventType, long timestamp) {
+        UsageEvents.Event e = new UsageEvents.Event(eventType, timestamp);
+        e.mPackage = PKG_NAME;
+        return e;
+    }
+
+    private static Event createInAppConversationEvent(long timestamp, int durationSeconds) {
+        return new Event.Builder(timestamp, Event.TYPE_IN_APP_CONVERSATION)
+                .setDurationSeconds(durationSeconds)
+                .build();
+    }
+
+    private static class TestConversationStore extends ConversationStore {
+
+        private ConversationInfo mConversationInfo;
+
+        TestConversationStore(File packageDir,
+                ScheduledExecutorService scheduledExecutorService,
+                ContactsQueryHelper helper) {
+            super(packageDir, scheduledExecutorService, helper);
+        }
+
+        @Override
+        @Nullable
+        ConversationInfo getConversation(@Nullable String shortcutId) {
+            return mConversationInfo;
+        }
+    }
+
+    private static class TestPackageData extends PackageData {
+
+        private final TestConversationStore mConversationStore;
+        private final TestEventStore mEventStore = new TestEventStore();
+
+        TestPackageData(@NonNull String packageName, @UserIdInt int userId,
+                @NonNull Predicate<String> isDefaultDialerPredicate,
+                @NonNull Predicate<String> isDefaultSmsAppPredicate,
+                @NonNull ScheduledExecutorService scheduledExecutorService, @NonNull File rootDir,
+                @NonNull ContactsQueryHelper helper) {
+            super(packageName, userId, isDefaultDialerPredicate, isDefaultSmsAppPredicate,
+                    scheduledExecutorService, rootDir, helper);
+            mConversationStore = new TestConversationStore(rootDir, scheduledExecutorService,
+                    helper);
+        }
+
+        @Override
+        @NonNull
+        ConversationStore getConversationStore() {
+            return mConversationStore;
+        }
+
+        @Override
+        @NonNull
+        EventStore getEventStore() {
+            return mEventStore;
+        }
+    }
+
+    private static class TestEventStore extends EventStore {
+
+        private final EventHistoryImpl mShortcutEventHistory = new TestEventHistoryImpl();
+        private final EventHistoryImpl mLocusEventHistory = new TestEventHistoryImpl();
+
+        @Override
+        @NonNull
+        EventHistoryImpl getOrCreateShortcutEventHistory(String shortcutId) {
+            return mShortcutEventHistory;
+        }
+
+        @Override
+        @NonNull
+        EventHistoryImpl getOrCreateLocusEventHistory(LocusId locusId) {
+            return mLocusEventHistory;
+        }
+    }
+
+    private static class TestEventHistoryImpl extends EventHistoryImpl {
+
+        private final List<Event> mEvents = new ArrayList<>();
+
+        @Override
+        @NonNull
+        public List<Event> queryEvents(Set<Integer> eventTypes, long startTime, long endTime) {
+            return mEvents;
+        }
+
+        @Override
+        void addEvent(Event event) {
+            mEvents.add(event);
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java b/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java
new file mode 100644
index 0000000..808906e
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/people/prediction/ShareTargetPredictorTest.java
@@ -0,0 +1,137 @@
+/*
+ * 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.server.people.prediction;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.app.prediction.AppPredictionContext;
+import android.content.ComponentName;
+import android.content.Context;
+import android.content.Intent;
+import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager.ShareShortcutInfo;
+import android.os.Bundle;
+import android.os.UserHandle;
+
+import com.android.server.people.data.ConversationInfo;
+import com.android.server.people.data.DataManager;
+import com.android.server.people.data.EventHistory;
+import com.android.server.people.data.PackageData;
+import com.android.server.people.prediction.ShareTargetPredictor.ShareTarget;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.util.ArrayList;
+import java.util.List;
+
+@RunWith(JUnit4.class)
+public final class ShareTargetPredictorTest {
+
+    private static final String UI_SURFACE_SHARE = "share";
+    private static final int NUM_PREDICTED_TARGETS = 5;
+    private static final int USER_ID = 0;
+    private static final String PACKAGE_1 = "pkg1";
+    private static final String CLASS_1 = "cls1";
+    private static final String PACKAGE_2 = "pkg2";
+    private static final String CLASS_2 = "cls2";
+
+    @Mock private Context mContext;
+    @Mock private DataManager mDataManager;
+    @Mock private PackageData mPackageData1;
+    @Mock private PackageData mPackageData2;
+
+    private List<ShareShortcutInfo> mShareShortcuts = new ArrayList<>();
+
+    private ShareTargetPredictor mPredictor;
+
+    @Before
+    public void setUp() {
+        MockitoAnnotations.initMocks(this);
+
+        when(mDataManager.getShareShortcuts(any())).thenReturn(mShareShortcuts);
+        when(mDataManager.getPackage(PACKAGE_1, USER_ID)).thenReturn(mPackageData1);
+        when(mDataManager.getPackage(PACKAGE_2, USER_ID)).thenReturn(mPackageData2);
+
+        AppPredictionContext predictionContext = new AppPredictionContext.Builder(mContext)
+                .setUiSurface(UI_SURFACE_SHARE)
+                .setPredictedTargetCount(NUM_PREDICTED_TARGETS)
+                .setExtras(new Bundle())
+                .build();
+        mPredictor = new ShareTargetPredictor(predictionContext, targets -> { }, mDataManager);
+    }
+
+    @Test
+    public void testGetShareTargets() {
+        mShareShortcuts.add(buildShareShortcut(PACKAGE_1, CLASS_1, "sc1"));
+        mShareShortcuts.add(buildShareShortcut(PACKAGE_1, CLASS_1, "sc2"));
+        mShareShortcuts.add(buildShareShortcut(PACKAGE_2, CLASS_2, "sc3"));
+        mShareShortcuts.add(buildShareShortcut(PACKAGE_2, CLASS_2, "sc4"));
+
+        when(mPackageData1.getConversationInfo("sc1")).thenReturn(mock(ConversationInfo.class));
+        when(mPackageData1.getConversationInfo("sc2")).thenReturn(mock(ConversationInfo.class));
+        when(mPackageData2.getConversationInfo("sc3")).thenReturn(mock(ConversationInfo.class));
+        // "sc4" does not have a ConversationInfo.
+
+        when(mPackageData1.getEventHistory(anyString())).thenReturn(mock(EventHistory.class));
+        when(mPackageData2.getEventHistory(anyString())).thenReturn(mock(EventHistory.class));
+
+        List<ShareTarget> shareTargets = mPredictor.getShareTargets();
+
+        assertEquals(4, shareTargets.size());
+
+        assertEquals("sc1", shareTargets.get(0).getShareShortcutInfo().getShortcutInfo().getId());
+        assertNotNull(shareTargets.get(0).getConversationData());
+
+        assertEquals("sc2", shareTargets.get(1).getShareShortcutInfo().getShortcutInfo().getId());
+        assertNotNull(shareTargets.get(1).getConversationData());
+
+        assertEquals("sc3", shareTargets.get(2).getShareShortcutInfo().getShortcutInfo().getId());
+        assertNotNull(shareTargets.get(2).getConversationData());
+
+        assertEquals("sc4", shareTargets.get(3).getShareShortcutInfo().getShortcutInfo().getId());
+        assertNull(shareTargets.get(3).getConversationData());
+    }
+
+    private ShareShortcutInfo buildShareShortcut(
+            String packageName, String className, String shortcutId) {
+        ShortcutInfo shortcutInfo = buildShortcut(packageName, shortcutId);
+        ComponentName componentName = new ComponentName(packageName, className);
+        return new ShareShortcutInfo(shortcutInfo, componentName);
+    }
+
+    private ShortcutInfo buildShortcut(String packageName, String shortcutId) {
+        Context mockContext = mock(Context.class);
+        when(mockContext.getPackageName()).thenReturn(packageName);
+        when(mockContext.getUserId()).thenReturn(USER_ID);
+        when(mockContext.getUser()).thenReturn(UserHandle.of(USER_ID));
+        ShortcutInfo.Builder builder = new ShortcutInfo.Builder(mockContext, shortcutId)
+                .setShortLabel(shortcutId)
+                .setIntent(new Intent("TestIntent"));
+        return builder.build();
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
index 3e3f40d..e28d13a 100644
--- a/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/AppsFilterTest.java
@@ -35,7 +35,6 @@
 import android.content.pm.parsing.ComponentParseUtils.ParsedActivityIntentInfo;
 import android.content.pm.parsing.PackageImpl;
 import android.content.pm.parsing.ParsingPackage;
-import android.net.Uri;
 import android.os.Build;
 import android.os.Process;
 import android.util.ArrayMap;
@@ -87,6 +86,17 @@
         return pkg;
     }
 
+    private static ParsingPackage pkgQueriesProvider(String packageName,
+            String... queriesAuthorities) {
+        ParsingPackage pkg = pkg(packageName);
+        if (queriesAuthorities != null) {
+            for (String authority : queriesAuthorities) {
+                pkg.addQueriesProvider(authority);
+            }
+        }
+        return pkg;
+    }
+
     private static ParsingPackage pkg(String packageName, String... queriesPackages) {
         ParsingPackage pkg = pkg(packageName);
         if (queriesPackages != null) {
@@ -172,8 +182,7 @@
         PackageSetting target = simulateAddPackage(appsFilter,
                 pkgWithProvider("com.some.package", "com.some.authority"), DUMMY_TARGET_UID);
         PackageSetting calling = simulateAddPackage(appsFilter,
-                pkg("com.some.other.package",
-                        new Intent().setData(Uri.parse("content://com.some.authority"))),
+                pkgQueriesProvider("com.some.other.package", "com.some.authority"),
                 DUMMY_CALLING_UID);
 
         assertFalse(appsFilter.shouldFilterApplication(DUMMY_CALLING_UID, calling, target, 0));
@@ -188,8 +197,7 @@
         PackageSetting target = simulateAddPackage(appsFilter,
                 pkgWithProvider("com.some.package", "com.some.authority"), DUMMY_TARGET_UID);
         PackageSetting calling = simulateAddPackage(appsFilter,
-                pkg("com.some.other.package",
-                        new Intent().setData(Uri.parse("content://com.some.other.authority"))),
+                pkgQueriesProvider("com.some.other.package", "com.some.other.authority"),
                 DUMMY_CALLING_UID);
 
         assertTrue(appsFilter.shouldFilterApplication(DUMMY_CALLING_UID, calling, target, 0));
@@ -205,8 +213,7 @@
                 pkgWithProvider("com.some.package", "com.some.authority;com.some.other.authority"),
                 DUMMY_TARGET_UID);
         PackageSetting calling = simulateAddPackage(appsFilter,
-                pkg("com.some.other.package",
-                        new Intent().setData(Uri.parse("content://com.some.authority"))),
+                pkgQueriesProvider("com.some.other.package", "com.some.authority"),
                 DUMMY_CALLING_UID);
 
         assertFalse(appsFilter.shouldFilterApplication(DUMMY_CALLING_UID, calling, target, 0));
@@ -266,7 +273,7 @@
         appsFilter.onSystemReady();
 
         PackageSetting target = simulateAddPackage(appsFilter,
-                        pkg("com.some.package").setForceQueryable(true), DUMMY_TARGET_UID);
+                pkg("com.some.package").setForceQueryable(true), DUMMY_TARGET_UID);
         PackageSetting calling = simulateAddPackage(appsFilter,
                 pkg("com.some.other.package"), DUMMY_CALLING_UID);
 
diff --git a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
index 41416f1..df2b3ef 100644
--- a/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/BaseShortcutManagerTest.java
@@ -24,6 +24,7 @@
 import static com.android.server.pm.shortcutmanagertest.ShortcutManagerTestUtils.set;
 
 import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Matchers.any;
 import static org.mockito.Matchers.anyInt;
 import static org.mockito.Matchers.anyString;
@@ -52,6 +53,7 @@
 import android.content.Intent;
 import android.content.IntentFilter;
 import android.content.IntentSender;
+import android.content.LocusId;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
 import android.content.pm.ILauncherApps;
@@ -555,6 +557,11 @@
         void injectRestoreCallingIdentity(long token) {
             mInjectedCallingUid = (int) token;
         }
+
+        @Override
+        boolean injectHasAccessShortcutsPermission(int callingPid, int callingUid) {
+            return true;
+        }
     }
 
     protected class LauncherAppsTestable extends LauncherApps {
@@ -1600,6 +1607,38 @@
     }
 
     /**
+     * Make a shortcut with an ID and a locus ID.
+     */
+    protected ShortcutInfo makeShortcutWithLocusId(String id, LocusId locusId) {
+        final ShortcutInfo.Builder  b = new ShortcutInfo.Builder(mClientContext, id)
+                .setActivity(new ComponentName(mClientContext.getPackageName(), "main"))
+                .setShortLabel("title-" + id)
+                .setIntent(makeIntent(Intent.ACTION_VIEW, ShortcutActivity.class))
+                .setLocusId(locusId);
+        final ShortcutInfo s = b.build();
+
+        s.setTimestamp(mInjectedCurrentTimeMillis); // HACK
+
+        return s;
+    }
+
+    /**
+     * Make a long lived shortcut with an ID.
+     */
+    protected ShortcutInfo makeLongLivedShortcut(String id) {
+        final ShortcutInfo.Builder  b = new ShortcutInfo.Builder(mClientContext, id)
+                .setActivity(new ComponentName(mClientContext.getPackageName(), "main"))
+                .setShortLabel("title-" + id)
+                .setIntent(makeIntent(Intent.ACTION_VIEW, ShortcutActivity.class))
+                .setLongLived(true);
+        final ShortcutInfo s = b.build();
+
+        s.setTimestamp(mInjectedCurrentTimeMillis); // HACK
+
+        return s;
+    }
+
+    /**
      * Make an intent.
      */
     protected Intent makeIntent(String action, Class<?> clazz, Object... bundleKeysAndValues) {
@@ -1618,6 +1657,13 @@
     }
 
     /**
+     * Make a LocusId.
+     */
+    protected LocusId makeLocusId(String id) {
+        return new LocusId(id);
+    }
+
+    /**
      * Make an component name, with the client context.
      */
     @NonNull
@@ -1683,6 +1729,7 @@
         final ArgumentCaptor<Intent[]> intentsCaptor = ArgumentCaptor.forClass(Intent[].class);
         verify(mMockActivityTaskManagerInternal).startActivitiesAsPackage(
                 eq(packageName),
+                isNull(),
                 eq(userId),
                 intentsCaptor.capture(),
                 anyOrNull(Bundle.class));
@@ -1741,6 +1788,7 @@
         // This shouldn't have been called.
         verify(mMockActivityTaskManagerInternal, times(0)).startActivitiesAsPackage(
                 anyString(),
+                isNull(),
                 anyInt(),
                 any(Intent[].class),
                 anyOrNull(Bundle.class));
@@ -1955,16 +2003,17 @@
     protected static ShortcutQuery buildQuery(long changedSince,
             String packageName, ComponentName componentName,
             /* @ShortcutQuery.QueryFlags */ int flags) {
-        return buildQuery(changedSince, packageName, null, componentName, flags);
+        return buildQuery(changedSince, packageName, null, null, componentName, flags);
     }
 
     protected static ShortcutQuery buildQuery(long changedSince,
-            String packageName, List<String> shortcutIds, ComponentName componentName,
-            /* @ShortcutQuery.QueryFlags */ int flags) {
+            String packageName, List<String> shortcutIds, List<LocusId> locusIds,
+            ComponentName componentName, /* @ShortcutQuery.QueryFlags */ int flags) {
         final ShortcutQuery q = new ShortcutQuery();
         q.setChangedSince(changedSince);
         q.setPackage(packageName);
         q.setShortcutIds(shortcutIds);
+        q.setLocusIds(locusIds);
         q.setActivity(componentName);
         q.setQueryFlags(flags);
         return q;
diff --git a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java b/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
index 91cc9f3..3708571 100644
--- a/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/CrossProfileAppsServiceImplTest.java
@@ -23,6 +23,7 @@
 import android.content.Intent;
 import android.content.pm.ActivityInfo;
 import android.content.pm.ApplicationInfo;
+import android.content.pm.CrossProfileAppsInternal;
 import android.content.pm.IPackageManager;
 import android.content.pm.PackageInfo;
 import android.content.pm.PackageManager;
@@ -35,6 +36,9 @@
 import android.platform.test.annotations.Presubmit;
 import android.util.SparseArray;
 
+import com.android.internal.util.FunctionalUtils.ThrowingRunnable;
+import com.android.internal.util.FunctionalUtils.ThrowingSupplier;
+import com.android.server.LocalServices;
 import com.android.server.wm.ActivityTaskManagerInternal;
 
 import org.junit.Before;
@@ -55,6 +59,7 @@
 @RunWith(MockitoJUnitRunner.class)
 public class CrossProfileAppsServiceImplTest {
     private static final String PACKAGE_ONE = "com.one";
+    private static final String FEATURE_ID = "feature.one";
     private static final int PACKAGE_ONE_UID = 1111;
     private static final ComponentName ACTIVITY_COMPONENT =
             new ComponentName("com.one", "test");
@@ -95,6 +100,7 @@
     @Before
     public void initCrossProfileAppsServiceImpl() {
         mTestInjector = new TestInjector();
+        LocalServices.removeServiceForTest(CrossProfileAppsInternal.class);
         mCrossProfileAppsServiceImpl = new CrossProfileAppsServiceImpl(mContext, mTestInjector);
         when(mContext.getPackageManager()).thenReturn(mPackageManager);
     }
@@ -220,6 +226,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PRIMARY_USER).getIdentifier(),
                                 true));
@@ -228,6 +235,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -241,6 +249,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PRIMARY_USER).getIdentifier(),
                                 false));
@@ -249,6 +258,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -264,6 +274,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 true));
@@ -272,6 +283,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -287,6 +299,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 false));
@@ -295,6 +308,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -308,6 +322,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_TWO,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 true));
@@ -316,6 +331,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -329,6 +345,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_TWO,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 false));
@@ -337,6 +354,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -352,6 +370,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 true));
@@ -360,6 +379,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -380,6 +400,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 false));
@@ -388,6 +409,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -401,6 +423,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 new ComponentName(PACKAGE_TWO, "test"),
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 true));
@@ -409,6 +432,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -422,6 +446,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 new ComponentName(PACKAGE_TWO, "test"),
                                 UserHandle.of(PROFILE_OF_PRIMARY_USER).getIdentifier(),
                                 false));
@@ -430,6 +455,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -443,6 +469,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(SECONDARY_USER).getIdentifier(),
                                 true));
@@ -451,6 +478,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -464,6 +492,7 @@
                         mCrossProfileAppsServiceImpl.startActivityAsUser(
                                 mIApplicationThread,
                                 PACKAGE_ONE,
+                                FEATURE_ID,
                                 ACTIVITY_COMPONENT,
                                 UserHandle.of(SECONDARY_USER).getIdentifier(),
                                 false));
@@ -472,6 +501,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         anyString(),
+                        nullable(String.class),
                         any(Intent.class),
                         nullable(Bundle.class),
                         anyInt());
@@ -484,6 +514,7 @@
         mCrossProfileAppsServiceImpl.startActivityAsUser(
                 mIApplicationThread,
                 PACKAGE_ONE,
+                FEATURE_ID,
                 ACTIVITY_COMPONENT,
                 UserHandle.of(PRIMARY_USER).getIdentifier(),
                 true);
@@ -492,6 +523,7 @@
                 .startActivityAsUser(
                         nullable(IApplicationThread.class),
                         eq(PACKAGE_ONE),
+                        eq(FEATURE_ID),
                         any(Intent.class),
                         nullable(Bundle.class),
                         eq(PRIMARY_USER));
@@ -574,6 +606,16 @@
         }
 
         @Override
+        public void withCleanCallingIdentity(ThrowingRunnable action) {
+            action.run();
+        }
+
+        @Override
+        public <T> T withCleanCallingIdentity(ThrowingSupplier<T> action) {
+            return action.get();
+        }
+
+        @Override
         public UserManager getUserManager() {
             return mUserManager;
         }
diff --git a/services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java b/services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java
index bfe0c15..d4edab4 100644
--- a/services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/PackageInstallerSessionTest.java
@@ -24,6 +24,7 @@
 import static org.xmlpull.v1.XmlPullParser.START_TAG;
 
 import android.content.pm.PackageInstaller;
+import android.platform.test.annotations.Presubmit;
 import android.util.AtomicFile;
 import android.util.Slog;
 import android.util.Xml;
@@ -57,6 +58,7 @@
 import java.util.List;
 
 @RunWith(AndroidJUnit4.class)
+@Presubmit
 public class PackageInstallerSessionTest {
     @Rule
     public TemporaryFolder mTemporaryFolder = new TemporaryFolder();
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 6c917b7..2936bdd 100644
--- a/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
+++ b/services/tests/servicestests/src/com/android/server/pm/ShortcutManagerTest1.java
@@ -82,6 +82,7 @@
 import android.content.pm.LauncherApps.ShortcutQuery;
 import android.content.pm.PackageInfo;
 import android.content.pm.ShortcutInfo;
+import android.content.pm.ShortcutManager;
 import android.graphics.Bitmap;
 import android.graphics.Bitmap.CompressFormat;
 import android.graphics.BitmapFactory;
@@ -1227,6 +1228,158 @@
         });
     }
 
+    public void testShortcutManagerGetShortcuts_shortcutTypes() {
+
+        // Create 3 manifest and 3 dynamic shortcuts
+        addManifestShortcutResource(
+                new ComponentName(CALLING_PACKAGE_1, ShortcutActivity.class.getName()),
+                R.xml.shortcut_3);
+        updatePackageVersion(CALLING_PACKAGE_1, 1);
+        mService.mPackageMonitor.onReceive(getTestContext(),
+                genPackageAddIntent(CALLING_PACKAGE_1, USER_0));
+
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(
+                    makeLongLivedShortcut("s1"), makeLongLivedShortcut("s2"), makeShortcut("s3"))));
+        });
+
+        // Pin 2 and 3
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.pinShortcuts(CALLING_PACKAGE_1, list("ms2", "ms3", "s2", "s3"),
+                    HANDLE_USER_0);
+        });
+
+        // Cache 1 and 2
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.cacheShortcuts(CALLING_PACKAGE_1, list("s1", "s2"),
+                    HANDLE_USER_0);
+        });
+
+        setCaller(CALLING_PACKAGE_1);
+
+        // Get manifest shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_MANIFEST),
+                "ms1", "ms2", "ms3");
+
+        // Get dynamic shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC),
+                "s1", "s2", "s3");
+
+        // Get pinned shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_PINNED),
+                "ms2", "ms3", "s2", "s3");
+
+        // Get cached shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s1", "s2");
+
+        // Get manifest and dynamic shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_MANIFEST | ShortcutManager.FLAG_MATCH_DYNAMIC),
+                "ms1", "ms2", "ms3", "s1", "s2", "s3");
+
+        // Get manifest and pinned shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_MANIFEST | ShortcutManager.FLAG_MATCH_PINNED),
+                "ms1", "ms2", "ms3", "s2", "s3");
+
+        // Get manifest and cached shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_MANIFEST | ShortcutManager.FLAG_MATCH_CACHED),
+                "ms1", "ms2", "ms3", "s1", "s2");
+
+        // Get dynamic and pinned shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_DYNAMIC | ShortcutManager.FLAG_MATCH_PINNED),
+                "ms2", "ms3", "s1", "s2", "s3");
+
+        // Get dynamic and cached shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_DYNAMIC | ShortcutManager.FLAG_MATCH_CACHED),
+                "s1", "s2", "s3");
+
+        // Get pinned and cached shortcuts
+        assertShortcutIds(mManager.getShortcuts(
+                ShortcutManager.FLAG_MATCH_PINNED | ShortcutManager.FLAG_MATCH_CACHED),
+                "ms2", "ms3", "s1", "s2", "s3");
+
+        // Remove a dynamic cached shortcut
+        mManager.removeDynamicShortcuts(list("s1"));
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC), "s2", "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED), "s1", "s2");
+
+        // Remove a dynamic cached and pinned shortcut
+        mManager.removeDynamicShortcuts(list("s2"));
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC), "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_PINNED),
+                "ms2", "ms3", "s2", "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED), "s1", "s2");
+    }
+
+    public void testCachedShortcuts() {
+        runWithCaller(CALLING_PACKAGE_1, USER_0, () -> {
+            assertTrue(mManager.setDynamicShortcuts(list(makeShortcut("s1"),
+                    makeLongLivedShortcut("s2"), makeLongLivedShortcut("s3"),
+                    makeLongLivedShortcut("s4"))));
+        });
+
+        // Pin s2
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.pinShortcuts(CALLING_PACKAGE_1, list("s2"),
+                    HANDLE_USER_0);
+        });
+
+        // Cache some, but non long lived shortcuts will be ignored.
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.cacheShortcuts(CALLING_PACKAGE_1, list("s1", "s2", "s4"),
+                    HANDLE_USER_0);
+        });
+
+        setCaller(CALLING_PACKAGE_1);
+
+        // Get dynamic shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC),
+                "s1", "s2", "s3", "s4");
+        // Get pinned shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_PINNED),
+                "s2");
+        // Get cached shortcuts
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s2", "s4");
+
+        // Remove a dynamic cached shortcut
+        mManager.removeDynamicShortcuts(list("s4"));
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC),
+                "s1", "s2", "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s2", "s4");
+
+        // uncache a non-dynamic shortcut. Should be removed.
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.uncacheShortcuts(CALLING_PACKAGE_1, list("s4"),
+                    HANDLE_USER_0);
+        });
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s2");
+
+        // Cache another shortcut
+        runWithCaller(LAUNCHER_1, USER_0, () -> {
+            mLauncherApps.cacheShortcuts(CALLING_PACKAGE_1, list("s3"),
+                    HANDLE_USER_0);
+        });
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s2", "s3");
+
+        // Remove a dynamic cached pinned long lived shortcut
+        mManager.removeLongLivedShortcuts(list("s2"));
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_DYNAMIC),
+                "s1", "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_CACHED),
+                "s3");
+        assertShortcutIds(mManager.getShortcuts(ShortcutManager.FLAG_MATCH_PINNED),
+                "s2");
+    }
+
     // === Test for launcher side APIs ===
 
     public void testGetShortcuts() {
@@ -1234,8 +1387,8 @@
         // Set up shortcuts.
 
         setCaller(CALLING_PACKAGE_1);
-        final ShortcutInfo s1_1 = makeShortcut("s1");
-        final ShortcutInfo s1_2 = makeShortcut("s2");
+        final ShortcutInfo s1_1 = makeLongLivedShortcut("s1");
+        final ShortcutInfo s1_2 = makeShortcutWithLocusId("s2", makeLocusId("l1"));
 
         assertTrue(mManager.setDynamicShortcuts(list(s1_1, s1_2)));
 
@@ -1257,7 +1410,9 @@
         getCallerShortcut("s4").setTimestamp(500);
 
         setCaller(CALLING_PACKAGE_3);
-        final ShortcutInfo s3_2 = makeShortcut("s3");
+        final ShortcutInfo s3_2 = makeShortcutWithLocusId("s3", makeLocusId("l2"));
+        s3_2.setLongLived();
+
         assertTrue(mManager.setDynamicShortcuts(list(s3_2)));
 
         getCallerShortcut("s3").setTimestamp(START_TIME + 5000);
@@ -1309,7 +1464,7 @@
         // With ID.
         assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
                 assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
-                        /* time =*/ 1000, CALLING_PACKAGE_2, list("s3"),
+                        /* time =*/ 1000, CALLING_PACKAGE_2, list("s3"), /* locusIds =*/ null,
                         /* activity =*/ null,
                         ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
                         getCallingUser())),
@@ -1317,20 +1472,51 @@
         assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
                 assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
                         /* time =*/ 1000, CALLING_PACKAGE_2, list("s3", "s2", "ss"),
-                        /* activity =*/ null,
+                        /* locusIds =*/ null, /* activity =*/ null,
                         ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
                         getCallingUser())),
                 "s2", "s3"))));
         assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
                 assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
                         /* time =*/ 1000, CALLING_PACKAGE_2, list("s3x", "s2x"),
-                        /* activity =*/ null,
+                        /* locusIds =*/ null, /* activity =*/ null,
                         ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
                         getCallingUser()))
                 /* empty */))));
         assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
                 assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
-                        /* time =*/ 1000, CALLING_PACKAGE_2, list(),
+                        /* time =*/ 1000, CALLING_PACKAGE_2, list(), /* locusIds =*/ null,
+                        /* activity =*/ null,
+                        ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
+                        getCallingUser()))
+                /* empty */))));
+
+        // With locus ID.
+        assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
+                assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 1000, CALLING_PACKAGE_3, /* shortcutIds =*/ null,
+                        list(makeLocusId("l2")), /* activity =*/ null,
+                        ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
+                        getCallingUser())),
+                "s3"))));
+        assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
+                assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 1000, CALLING_PACKAGE_1, /* shortcutIds =*/ null,
+                        list(makeLocusId("l1"), makeLocusId("l2"), makeLocusId("l3")),
+                        /* activity =*/ null,
+                        ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
+                        getCallingUser())),
+                "s2"))));
+        assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
+                assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 1000, CALLING_PACKAGE_1, /* shortcutIds =*/ null,
+                        list(makeLocusId("lx1"), makeLocusId("lx2")), /* activity =*/ null,
+                        ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
+                        getCallingUser()))
+                /* empty */))));
+        assertAllDynamic(assertAllNotHaveTitle(assertAllNotHaveIntents(assertShortcutIds(
+                assertAllKeyFieldsOnly(mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 1000, CALLING_PACKAGE_3, /* shortcutIds =*/ null, list(),
                         /* activity =*/ null,
                         ShortcutQuery.FLAG_GET_DYNAMIC | ShortcutQuery.FLAG_GET_KEY_FIELDS_ONLY),
                         getCallingUser()))
@@ -1361,11 +1547,53 @@
         assertExpectException(
                 IllegalArgumentException.class, "package name must also be set", () -> {
                     mLauncherApps.getShortcuts(buildQuery(
-                    /* time =*/ 0, /* package= */ null, list("id"),
+                    /* time =*/ 0, /* package= */ null, list("id"), /* locusIds =*/ null,
                     /* activity =*/ null, /* flags */ 0), getCallingUser());
                 });
 
         // TODO More tests: pinned but dynamic.
+
+        setCaller(LAUNCHER_1);
+
+        // Cache some shortcuts. Only long lived shortcuts can get cached.
+        mLauncherApps.cacheShortcuts(CALLING_PACKAGE_1, list("s1"), getCallingUser());
+        mLauncherApps.cacheShortcuts(CALLING_PACKAGE_3, list("s3"), getCallingUser());
+
+        // Cached ones only
+        assertShortcutIds(assertAllNotKeyFieldsOnly(
+                mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 0, CALLING_PACKAGE_3,
+                        /* activity =*/ null,
+                        ShortcutQuery.FLAG_MATCH_CACHED),
+                        getCallingUser())),
+                "s3");
+
+        // All packages.
+        assertShortcutIds(assertAllNotKeyFieldsOnly(
+                mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 0, /* package= */ null,
+                        /* activity =*/ null,
+                        ShortcutQuery.FLAG_MATCH_CACHED),
+                        getCallingUser())),
+                "s1", "s3");
+
+        assertExpectException(
+                IllegalArgumentException.class, "package name must also be set", () -> {
+                    mLauncherApps.getShortcuts(buildQuery(
+                            /* time =*/ 0, /* package= */ null, list("id"), /* locusIds= */ null,
+                            /* activity =*/ null, /* flags */ 0), getCallingUser());
+                });
+
+        // Change Launcher. Cached shortcuts are the same for all launchers.
+        setCaller(LAUNCHER_2);
+        // All packages.
+        assertShortcutIds(assertAllNotKeyFieldsOnly(
+                mLauncherApps.getShortcuts(buildQuery(
+                        /* time =*/ 0, /* package= */ null,
+                        /* activity =*/ null,
+                        ShortcutQuery.FLAG_MATCH_CACHED),
+                        getCallingUser())),
+                "s1", "s3");
     }
 
     public void testGetShortcuts_shortcutKinds() throws Exception {
@@ -2916,7 +3144,7 @@
             // Not launchable.
             doReturn(ActivityManager.START_CLASS_NOT_FOUND)
                     .when(mMockActivityTaskManagerInternal).startActivitiesAsPackage(
-                    anyStringOrNull(), anyInt(),
+                    anyStringOrNull(), anyStringOrNull(), anyInt(),
                     anyOrNull(Intent[].class), anyOrNull(Bundle.class));
             assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_0,
                     ActivityNotFoundException.class);
@@ -2925,7 +3153,7 @@
             doReturn(ActivityManager.START_CLASS_NOT_FOUND)
                     .when(mMockActivityTaskManagerInternal)
                     .startActivitiesAsPackage(
-                            anyStringOrNull(), anyInt(),
+                            anyStringOrNull(), anyStringOrNull(), anyInt(),
                             anyOrNull(Intent[].class), anyOrNull(Bundle.class));
             assertStartShortcutThrowsException(CALLING_PACKAGE_1, "s1", USER_0,
                     ActivityNotFoundException.class);
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 2469cec..118c540 100644
--- a/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
+++ b/services/tests/servicestests/src/com/android/server/pm/UserManagerTest.java
@@ -336,9 +336,6 @@
         assertThat(userInfo).isNotNull();
         final int userId = userInfo.id;
 
-        UserManager userManagerForUser = (UserManager) mContext.createPackageContextAsUser(
-                "android", 0, asHandle(userId)).getSystemService(Context.USER_SERVICE);
-
         assertThat(mUserManager.hasBadge(userId)).isEqualTo(userTypeDetails.hasBadge());
         assertThat(mUserManager.getUserIconBadgeResId(userId))
                 .isEqualTo(userTypeDetails.getIconBadge());
@@ -346,17 +343,18 @@
                 .isEqualTo(userTypeDetails.getBadgePlain());
         assertThat(mUserManager.getUserBadgeNoBackgroundResId(userId))
                 .isEqualTo(userTypeDetails.getBadgeNoBackground());
-        assertThat(mUserManager.isUserOfType(asHandle(userId), userTypeDetails.getName()))
-                .isTrue();
-        assertThat(userManagerForUser.isProfile()).isEqualTo(userTypeDetails.isProfile());
-        assertThat(userManagerForUser.isUserOfType(asHandle(userId), userTypeDetails.getName()))
-                .isTrue();
 
         final int badgeIndex = userInfo.profileBadge;
         assertThat(mUserManager.getUserBadgeColor(userId)).isEqualTo(
                 Resources.getSystem().getColor(userTypeDetails.getBadgeColor(badgeIndex), null));
         assertThat(mUserManager.getBadgedLabelForUser("Test", asHandle(userId))).isEqualTo(
                 Resources.getSystem().getString(userTypeDetails.getBadgeLabel(badgeIndex), "Test"));
+
+        // Test @UserHandleAware methods
+        final UserManager userManagerForUser = UserManager.get(mContext.createPackageContextAsUser(
+                "android", 0, asHandle(userId)));
+        assertThat(userManagerForUser.isUserOfType(userTypeDetails.getName())).isTrue();
+        assertThat(userManagerForUser.isProfile()).isEqualTo(userTypeDetails.isProfile());
     }
 
     // Make sure only max managed profiles can be created
diff --git a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
index 642cedb..c4289ef 100644
--- a/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/AttentionDetectorTest.java
@@ -92,18 +92,18 @@
         mNextDimming = SystemClock.uptimeMillis() + 3000L;
 
         // Save the existing state.
-        mIsSettingEnabled = Settings.System.getIntForUser(getContext().getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT);
+        mIsSettingEnabled = Settings.Secure.getIntForUser(getContext().getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT);
 
-        Settings.System.putIntForUser(getContext().getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, 1, UserHandle.USER_CURRENT);
+        Settings.Secure.putIntForUser(getContext().getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, 1, UserHandle.USER_CURRENT);
         mAttentionDetector.updateEnabledFromSettings(getContext());
     }
 
     @After
     public void tearDown() {
-        Settings.System.putIntForUser(getContext().getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, mIsSettingEnabled, UserHandle.USER_CURRENT);
+        Settings.Secure.putIntForUser(getContext().getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, mIsSettingEnabled, UserHandle.USER_CURRENT);
 
         DeviceConfig.setProperty(NAMESPACE_ATTENTION_MANAGER_SERVICE,
                 KEY_PRE_DIM_CHECK_DURATION_MILLIS,
@@ -122,8 +122,8 @@
 
     @Test
     public void testOnUserActivity_doesntCheckIfNotEnabled() {
-        Settings.System.putIntForUser(getContext().getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT);
+        Settings.Secure.putIntForUser(getContext().getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT);
         mAttentionDetector.updateEnabledFromSettings(getContext());
         long when = registerAttention();
         verify(mAttentionManagerInternal, never()).checkAttention(anyLong(), any());
@@ -163,8 +163,8 @@
                 PackageManager.PERMISSION_DENIED);
 
         registerAttention();
-        boolean enabled = Settings.System.getIntForUser(getContext().getContentResolver(),
-                Settings.System.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT) == 1;
+        boolean enabled = Settings.Secure.getIntForUser(getContext().getContentResolver(),
+                Settings.Secure.ADAPTIVE_SLEEP, 0, UserHandle.USER_CURRENT) == 1;
         assertFalse(enabled);
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
index 6eef41a..811089a 100644
--- a/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/power/PowerManagerServiceTest.java
@@ -65,6 +65,7 @@
 import android.os.UserHandle;
 import android.platform.test.annotations.FlakyTest;
 import android.provider.Settings;
+import android.service.dreams.DreamManagerInternal;
 import android.test.mock.MockContentResolver;
 import android.view.Display;
 
@@ -111,6 +112,7 @@
     @Mock private BatteryManagerInternal mBatteryManagerInternalMock;
     @Mock private ActivityManagerInternal mActivityManagerInternalMock;
     @Mock private AttentionManagerInternal mAttentionManagerInternalMock;
+    @Mock private DreamManagerInternal mDreamManagerInternalMock;
     @Mock private PowerManagerService.NativeWrapper mNativeWrapperMock;
     @Mock private Notifier mNotifierMock;
     @Mock private WirelessChargerDetector mWirelessChargerDetectorMock;
@@ -171,6 +173,7 @@
         addLocalServiceMock(BatteryManagerInternal.class, mBatteryManagerInternalMock);
         addLocalServiceMock(ActivityManagerInternal.class, mActivityManagerInternalMock);
         addLocalServiceMock(AttentionManagerInternal.class, mAttentionManagerInternalMock);
+        addLocalServiceMock(DreamManagerInternal.class, mDreamManagerInternalMock);
 
         mContextSpy = spy(new ContextWrapper(InstrumentationRegistry.getContext()));
         mResourcesSpy = spy(mContextSpy.getResources());
@@ -651,6 +654,7 @@
         int flags = PowerManager.DOZE_WAKE_LOCK;
         mService.getBinderServiceInstance().acquireWakeLock(token, flags, tag, packageName,
                 null /* workSource */, null /* historyTag */);
+        when(mDreamManagerInternalMock.isDreaming()).thenReturn(true);
         mService.getBinderServiceInstance().goToSleep(SystemClock.uptimeMillis(),
                 PowerManager.GO_TO_SLEEP_REASON_APPLICATION, 0);
         assertThat(mService.getWakefulness()).isEqualTo(WAKEFULNESS_DOZING);
@@ -732,7 +736,7 @@
         setAttentiveTimeout(5);
         createService();
         startSystem();
-        SystemClock.sleep(8);
+        SystemClock.sleep(20);
         assertThat(mService.getWakefulness()).isEqualTo(WAKEFULNESS_ASLEEP);
     }
 
diff --git a/services/tests/servicestests/src/com/android/server/power/PreRebootLoggerTest.java b/services/tests/servicestests/src/com/android/server/power/PreRebootLoggerTest.java
new file mode 100644
index 0000000..a138234
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/power/PreRebootLoggerTest.java
@@ -0,0 +1,97 @@
+/*
+ * 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.server.power;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.provider.Settings;
+import android.test.mock.MockContentResolver;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.internal.util.test.FakeSettingsProvider;
+
+import com.google.common.io.Files;
+
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.mockito.Mock;
+import org.mockito.MockitoAnnotations;
+
+import java.io.File;
+
+/**
+ * Tests for {@link PreRebootLogger}
+ */
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class PreRebootLoggerTest {
+    @Mock Context mContext;
+    private MockContentResolver mContentResolver;
+    private File mDumpDir;
+
+    @BeforeClass
+    public static void setupOnce() {
+        FakeSettingsProvider.clearSettingsProvider();
+    }
+
+    @AfterClass
+    public static void tearDownOnce() {
+        FakeSettingsProvider.clearSettingsProvider();
+    }
+
+    @Before
+    public void setup() {
+        MockitoAnnotations.initMocks(this);
+        mContentResolver = new MockContentResolver(getInstrumentation().getTargetContext());
+        when(mContext.getContentResolver()).thenReturn(mContentResolver);
+        mContentResolver.addProvider(Settings.AUTHORITY, new FakeSettingsProvider());
+
+        mDumpDir = Files.createTempDir();
+        mDumpDir.mkdir();
+        mDumpDir.deleteOnExit();
+    }
+
+    @Test
+    public void log_adbEnabled_dumpsInformationProperly() {
+        Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, 1);
+
+        PreRebootLogger.log(mContext, mDumpDir);
+
+        assertThat(mDumpDir.list()).asList().containsExactly("system", "package", "rollback");
+    }
+
+    @Test
+    public void log_adbDisabled_wipesDumpedInformation() {
+        Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, 1);
+        PreRebootLogger.log(mContext, mDumpDir);
+        Settings.Global.putInt(mContentResolver, Settings.Global.ADB_ENABLED, 0);
+
+        PreRebootLogger.log(mContext, mDumpDir);
+
+        assertThat(mDumpDir.listFiles()).isEmpty();
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/rollback/AppDataRollbackHelperTest.java b/services/tests/servicestests/src/com/android/server/rollback/AppDataRollbackHelperTest.java
index f871203..3ceaac2 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/AppDataRollbackHelperTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/AppDataRollbackHelperTest.java
@@ -27,6 +27,7 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.spy;
 import static org.mockito.Mockito.when;
+import static org.mockito.MockitoAnnotations.initMocks;
 
 import android.content.pm.VersionedPackage;
 import android.content.rollback.PackageRollbackInfo;
@@ -34,12 +35,15 @@
 import android.util.IntArray;
 import android.util.SparseLongArray;
 
+import com.android.server.pm.ApexManager;
 import com.android.server.pm.Installer;
 
+import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.JUnit4;
 import org.mockito.InOrder;
+import org.mockito.Mock;
 import org.mockito.Mockito;
 
 import java.io.File;
@@ -48,10 +52,17 @@
 @RunWith(JUnit4.class)
 public class AppDataRollbackHelperTest {
 
+    @Mock private ApexManager mApexManager;
+
+    @Before
+    public void setUp() {
+        initMocks(this);
+    }
+
     @Test
     public void testSnapshotAppData() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer));
+        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer, mApexManager));
 
         // All users are unlocked so we should snapshot data for them.
         doReturn(true).when(helper).isUserCredentialLocked(eq(10));
@@ -114,7 +125,7 @@
     @Test
     public void testRestoreAppDataSnapshot_pendingBackupForUser() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer));
+        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer, mApexManager));
 
         PackageRollbackInfo info = createPackageRollbackInfo("com.foo");
         IntArray pendingBackups = info.getPendingBackups();
@@ -139,7 +150,7 @@
     @Test
     public void testRestoreAppDataSnapshot_availableBackupForLockedUser() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer));
+        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer, mApexManager));
         doReturn(true).when(helper).isUserCredentialLocked(eq(10));
 
         PackageRollbackInfo info = createPackageRollbackInfo("com.foo");
@@ -163,7 +174,7 @@
     @Test
     public void testRestoreAppDataSnapshot_availableBackupForUnlockedUser() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer));
+        AppDataRollbackHelper helper = spy(new AppDataRollbackHelper(installer, mApexManager));
         doReturn(false).when(helper).isUserCredentialLocked(eq(10));
 
         PackageRollbackInfo info = createPackageRollbackInfo("com.foo");
@@ -184,7 +195,7 @@
     @Test
     public void destroyAppData() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = new AppDataRollbackHelper(installer);
+        AppDataRollbackHelper helper = new AppDataRollbackHelper(installer, mApexManager);
 
         PackageRollbackInfo info = createPackageRollbackInfo("com.foo.bar");
         info.putCeSnapshotInode(11, 239L);
@@ -206,7 +217,7 @@
     @Test
     public void commitPendingBackupAndRestoreForUser() throws Exception {
         Installer installer = mock(Installer.class);
-        AppDataRollbackHelper helper = new AppDataRollbackHelper(installer);
+        AppDataRollbackHelper helper = new AppDataRollbackHelper(installer, mApexManager);
 
         when(installer.snapshotAppData(anyString(), anyInt(), anyInt(), anyInt())).thenReturn(53L);
 
diff --git a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
index d0d2edc..64d05f07 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/RollbackStoreTest.java
@@ -119,7 +119,7 @@
 
     @Test
     public void createNonStaged() {
-        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER);
+        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
 
         assertThat(rollback.getBackupDir().getAbsolutePath())
                 .isEqualTo(mFolder.getRoot().getAbsolutePath() + "/" + ID);
@@ -132,7 +132,7 @@
 
     @Test
     public void createStaged() {
-        Rollback rollback = mRollbackStore.createStagedRollback(ID, 897, USER, INSTALLER);
+        Rollback rollback = mRollbackStore.createStagedRollback(ID, 897, USER, INSTALLER, null);
 
         assertThat(rollback.getBackupDir().getAbsolutePath())
                 .isEqualTo(mFolder.getRoot().getAbsolutePath() + "/" + ID);
@@ -147,7 +147,7 @@
 
     @Test
     public void saveAndLoadRollback() {
-        Rollback origRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER);
+        Rollback origRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
 
         origRb.setRestoreUserDataInProgress(true);
         origRb.info.getCausePackages().add(new VersionedPackage("com.made.up", 2));
@@ -197,7 +197,7 @@
 
     @Test
     public void loadFromJson() throws Exception {
-        Rollback expectedRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER);
+        Rollback expectedRb = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
 
         expectedRb.setTimestamp(Instant.parse("2019-10-01T12:29:08.855Z"));
         expectedRb.setRestoreUserDataInProgress(true);
@@ -246,7 +246,7 @@
 
     @Test
     public void saveAndDelete() {
-        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER);
+        Rollback rollback = mRollbackStore.createNonStagedRollback(ID, USER, INSTALLER, null);
 
         RollbackStore.saveRollback(rollback);
 
diff --git a/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java b/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
index 164c883..1a6c6b4 100644
--- a/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
+++ b/services/tests/servicestests/src/com/android/server/rollback/RollbackUnitTest.java
@@ -224,21 +224,43 @@
     }
 
     @Test
-    public void snapshotThenDelete() {
+    public void snapshotThenDeleteNoApex() {
         Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER);
         PackageRollbackInfo pkgInfo1 = newPkgInfoFor(PKG_1, 12, 10, false);
-        PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, true);
+        PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, false);
         rollback.info.getPackages().addAll(Arrays.asList(pkgInfo1, pkgInfo2));
 
-        int[] userIds = {12, 18};
+        int[] userIds = {111, 222};
         rollback.snapshotUserData(PKG_2, userIds, mMockDataHelper);
 
         verify(mMockDataHelper).snapshotAppData(eq(123), pkgRollbackInfoFor(PKG_2), eq(userIds));
 
         rollback.delete(mMockDataHelper);
 
-        verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(12));
-        verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(18));
+        verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(111));
+        verify(mMockDataHelper).destroyAppDataSnapshot(eq(123), pkgRollbackInfoFor(PKG_2), eq(222));
+        verify(mMockDataHelper, never()).destroyApexDeSnapshots(anyInt());
+
+        assertThat(rollback.isDeleted()).isTrue();
+    }
+
+    @Test
+    public void snapshotThenDeleteWithApex() {
+        Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER);
+        PackageRollbackInfo pkgInfo1 = newPkgInfoFor(PKG_1, 12, 10, false);
+        PackageRollbackInfo pkgInfo2 = newPkgInfoFor(PKG_2, 18, 12, true);
+        rollback.info.getPackages().addAll(Arrays.asList(pkgInfo1, pkgInfo2));
+
+        int[] userIds = {111, 222};
+        rollback.snapshotUserData(PKG_2, userIds, mMockDataHelper);
+
+        verify(mMockDataHelper).snapshotAppData(eq(123), pkgRollbackInfoFor(PKG_2), eq(userIds));
+
+        rollback.delete(mMockDataHelper);
+
+        verify(mMockDataHelper, never())
+                .destroyAppDataSnapshot(anyInt(), pkgRollbackInfoFor(PKG_2), anyInt());
+        verify(mMockDataHelper).destroyApexDeSnapshots(123);
 
         assertThat(rollback.isDeleted()).isTrue();
     }
@@ -291,6 +313,33 @@
         verify(mMockDataHelper).restoreAppData(123, pkgInfo1, 7, 333, "blah");
     }
 
+    @Test
+    public void notifySessionWithSuccess() {
+        int[] sessionIds = new int[]{ 7777, 8888 };
+        Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER,
+                sessionIds);
+        // The 1st invocation returns false because not all child sessions are notified.
+        assertThat(rollback.notifySessionWithSuccess()).isFalse();
+        // The 2nd invocation returns true because now all child sessions are notified.
+        assertThat(rollback.notifySessionWithSuccess()).isTrue();
+    }
+
+    @Test
+    public void allPackagesEnabled() {
+        int[] sessionIds = new int[]{ 7777, 8888 };
+        Rollback rollback = new Rollback(123, new File("/test/testing"), -1, USER, INSTALLER,
+                sessionIds);
+        // #allPackagesEnabled returns false when 1 out of 2 packages is enabled.
+        rollback.info.getPackages().add(newPkgInfoFor(PKG_1, 12, 10, false));
+        assertThat(rollback.allPackagesEnabled()).isFalse();
+        // #allPackagesEnabled returns false for ApkInApex doesn't count.
+        rollback.info.getPackages().add(newPkgInfoForApkInApex(PKG_3, 157, 156));
+        assertThat(rollback.allPackagesEnabled()).isFalse();
+        // #allPackagesEnabled returns true when 2 out of 2 packages are enabled.
+        rollback.info.getPackages().add(newPkgInfoFor(PKG_2, 18, 12, true));
+        assertThat(rollback.allPackagesEnabled()).isTrue();
+    }
+
     private static PackageRollbackInfo newPkgInfoFor(
             String packageName, long fromVersion, long toVersion, boolean isApex) {
         return new PackageRollbackInfo(new VersionedPackage(packageName, fromVersion),
@@ -299,6 +348,20 @@
                 new SparseLongArray());
     }
 
+    /**
+     * TODO: merge newPkgInfoFor and newPkgInfoForApkInApex by using enums to specify
+     * 1. IS_APK
+     * 2. IS_APEX
+     * 3. IS_APK_IN_APEX
+     */
+    private static PackageRollbackInfo newPkgInfoForApkInApex(
+            String packageName, long fromVersion, long toVersion) {
+        return new PackageRollbackInfo(new VersionedPackage(packageName, fromVersion),
+                new VersionedPackage(packageName, toVersion),
+                new IntArray(), new ArrayList<>(), false, true, new IntArray(),
+                new SparseLongArray());
+    }
+
     private static class PackageRollbackInfoForPackage implements
             ArgumentMatcher<PackageRollbackInfo> {
         private final String mPkg;
diff --git a/services/tests/servicestests/src/com/android/server/rollback/WatchdogRollbackLoggerTest.java b/services/tests/servicestests/src/com/android/server/rollback/WatchdogRollbackLoggerTest.java
new file mode 100644
index 0000000..d1c9643
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/rollback/WatchdogRollbackLoggerTest.java
@@ -0,0 +1,190 @@
+/*
+ * 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.server.rollback;
+
+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 static org.mockito.ArgumentMatchers.same;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.content.Context;
+import android.content.pm.ApplicationInfo;
+import android.content.pm.PackageInfo;
+import android.content.pm.PackageInstaller;
+import android.content.pm.PackageManager;
+import android.content.pm.VersionedPackage;
+import android.os.Bundle;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.List;
+
+@RunWith(JUnit4.class)
+public class WatchdogRollbackLoggerTest {
+
+    private static final VersionedPackage sTestPackageV1 = new VersionedPackage("test.package", 1);
+    private Context mMockContext = mock(Context.class);
+    private PackageManager mMockPm;
+    private ApplicationInfo mApplicationInfo;
+    private PackageInfo mPackageInfo;
+
+    private static final String LOGGING_PARENT_KEY = "android.content.pm.LOGGING_PARENT";
+    private static final String LOGGING_PARENT_VALUE = "logging.parent";
+    private static final int PACKAGE_INFO_FLAGS = PackageManager.MATCH_APEX
+            | PackageManager.GET_META_DATA;
+    private static final List<String> sFailingPackages =
+            List.of("package1", "package2", "package3");
+
+    @Before
+    public void setUp() {
+        mApplicationInfo = new ApplicationInfo();
+        mMockPm = mock(PackageManager.class);
+        when(mMockContext.getPackageManager()).thenReturn(mMockPm);
+        PackageInstaller mockPi = mock(PackageInstaller.class);
+        when(mMockPm.getPackageInstaller()).thenReturn(mockPi);
+        PackageInstaller.SessionInfo mockSessionInfo = mock(PackageInstaller.SessionInfo.class);
+        when(mockPi.getSessionInfo(anyInt())).thenReturn(mockSessionInfo);
+        mPackageInfo = new PackageInfo();
+    }
+
+    /**
+     * Ensures that null is returned if the application info has no metadata.
+     */
+    @Test
+    public void testLogPackageHasNoMetadata() throws Exception {
+        when(mMockPm.getPackageInfo(anyString(), anyInt())).thenReturn(mPackageInfo);
+        VersionedPackage logPackage = WatchdogRollbackLogger.getLogPackage(mMockContext,
+                sTestPackageV1);
+        assertThat(logPackage).isNull();
+        verify(mMockPm, times(1)).getPackageInfo(
+                sTestPackageV1.getPackageName(), PACKAGE_INFO_FLAGS);
+    }
+
+    /**
+     * Ensures that null is returned if the application info does not contain a logging
+     * parent key.
+     */
+    @Test
+    public void testLogPackageParentKeyIsNull() throws Exception {
+        when(mMockPm.getPackageInfo(anyString(), anyInt())).thenReturn(mPackageInfo);
+        Bundle bundle = new Bundle();
+        bundle.putString(LOGGING_PARENT_KEY, null);
+        mApplicationInfo.metaData = bundle;
+        mPackageInfo.applicationInfo = mApplicationInfo;
+        VersionedPackage logPackage = WatchdogRollbackLogger.getLogPackage(mMockContext,
+                sTestPackageV1);
+        assertThat(logPackage).isNull();
+        verify(mMockPm, times(1)).getPackageInfo(
+                sTestPackageV1.getPackageName(), PACKAGE_INFO_FLAGS);
+    }
+
+    /**
+     * Ensures that the logging parent is returned as the logging package, if it exists.
+     */
+    @Test
+    public void testLogPackageHasParentKey() throws Exception {
+        Bundle bundle = new Bundle();
+        bundle.putString(LOGGING_PARENT_KEY, LOGGING_PARENT_VALUE);
+        mApplicationInfo.metaData = bundle;
+        mPackageInfo.applicationInfo = mApplicationInfo;
+        mPackageInfo.setLongVersionCode(12345L);
+        when(mMockPm.getPackageInfo(anyString(), anyInt())).thenReturn(mPackageInfo);
+        VersionedPackage logPackage = WatchdogRollbackLogger.getLogPackage(mMockContext,
+                sTestPackageV1);
+        VersionedPackage expectedLogPackage = new VersionedPackage(LOGGING_PARENT_VALUE, 12345);
+        assertThat(logPackage).isEqualTo(expectedLogPackage);
+        verify(mMockPm, times(1)).getPackageInfo(
+                sTestPackageV1.getPackageName(), PACKAGE_INFO_FLAGS);
+
+    }
+
+    /**
+     * Ensures that null is returned if Package Manager does not know about the logging parent.
+     */
+    @Test
+    public void testLogPackageNameNotFound() throws Exception {
+        Bundle bundle = new Bundle();
+        bundle.putString(LOGGING_PARENT_KEY, LOGGING_PARENT_VALUE);
+        mApplicationInfo.metaData = bundle;
+        mPackageInfo.applicationInfo = mApplicationInfo;
+        when(mMockPm.getPackageInfo(anyString(), anyInt())).thenReturn(mPackageInfo);
+        when(mMockPm.getPackageInfo(same(LOGGING_PARENT_VALUE), anyInt())).thenThrow(
+                new PackageManager.NameNotFoundException());
+        VersionedPackage logPackage = WatchdogRollbackLogger.getLogPackage(mMockContext,
+                sTestPackageV1);
+        assertThat(logPackage).isNull();
+        verify(mMockPm, times(1)).getPackageInfo(
+                sTestPackageV1.getPackageName(), PACKAGE_INFO_FLAGS);
+    }
+
+    /**
+     * Ensures that we make the correct Package Manager calls in the case that the failing packages
+     * are correctly configured with parent packages.
+     */
+    @Test
+    public void testApexdLoggingCallsWithParents() throws Exception {
+        for (String failingPackage: sFailingPackages) {
+            PackageInfo packageInfo = new PackageInfo();
+            ApplicationInfo applicationInfo = new ApplicationInfo();
+            Bundle bundle = new Bundle();
+            bundle.putString(LOGGING_PARENT_KEY, getParent(failingPackage));
+            applicationInfo.metaData = bundle;
+            packageInfo.applicationInfo = applicationInfo;
+            when(mMockPm.getPackageInfo(same(failingPackage), anyInt())).thenReturn(packageInfo);
+        }
+
+        when(mMockPm.getPackageInfo(anyString(), eq(0))).thenReturn(mPackageInfo);
+        WatchdogRollbackLogger.logApexdRevert(mMockContext, sFailingPackages, "test_process");
+        for (String failingPackage: sFailingPackages) {
+            verify(mMockPm, times(1)).getPackageInfo(failingPackage, PACKAGE_INFO_FLAGS);
+            verify(mMockPm, times(1)).getPackageInfo(getParent(failingPackage), 0);
+        }
+    }
+
+    /**
+     * Ensures that we don't make any calls to parent packages in the case that packages are not
+     * correctly configured with parent packages.
+     */
+    @Test
+    public void testApexdLoggingCallsWithNoParents() throws Exception {
+        for (String failingPackage: sFailingPackages) {
+            PackageInfo packageInfo = new PackageInfo();
+            packageInfo.applicationInfo = new ApplicationInfo();
+            when(mMockPm.getPackageInfo(same(failingPackage), anyInt())).thenReturn(packageInfo);
+        }
+        when(mMockPm.getPackageInfo(anyString(), eq(0))).thenReturn(mPackageInfo);
+
+        WatchdogRollbackLogger.logApexdRevert(mMockContext, sFailingPackages, "test_process");
+        verify(mMockPm, times(sFailingPackages.size())).getPackageInfo(anyString(), anyInt());
+        for (String failingPackage: sFailingPackages) {
+            verify(mMockPm, times(1)).getPackageInfo(failingPackage, PACKAGE_INFO_FLAGS);
+        }
+    }
+
+    private String getParent(String packageName) {
+        return packageName + "-parent";
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
index fde0ddf..4d0481be 100644
--- a/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
+++ b/services/tests/servicestests/src/com/android/server/systemconfig/SystemConfigTest.java
@@ -144,6 +144,40 @@
         assertEquals("Incorrect blacklist", expectedBlack, actualBlack);
     }
 
+    @Test
+    public void testComponentOverride() throws Exception {
+        final String contents =
+                "<permissions>"
+                + "    <component-override package=\"com.android.package1\">\n"
+                + "        <component class=\"com.android.package1.Full\" enabled=\"true\"/>"
+                + "        <component class=\".Relative\" enabled=\"false\" />\n"
+                + "    </component-override>"
+                + "    <component-override package=\"com.android.package2\" >\n"
+                + "        <component class=\"com.android.package3.Relative2\" enabled=\"yes\" />\n"
+                + "    </component-override>\n"
+                + "</permissions>";
+
+        final File folder = createTempSubfolder("folder");
+        createTempFile(folder, "component-override.xml", contents);
+
+        mSysConfig.readPermissions(folder, /* No permission needed anyway */ 0);
+
+        final ArrayMap<String, Boolean>  packageOneExpected = new ArrayMap<>();
+        packageOneExpected.put("com.android.package1.Full", true);
+        packageOneExpected.put("com.android.package1.Relative", false);
+
+        final ArrayMap<String, Boolean> packageTwoExpected = new ArrayMap<>();
+        packageTwoExpected.put("com.android.package3.Relative2", true);
+
+        final Map<String, Boolean> packageOne = mSysConfig.getComponentsEnabledStates(
+                "com.android.package1");
+        assertEquals(packageOneExpected, packageOne);
+
+        final Map<String, Boolean> packageTwo = mSysConfig.getComponentsEnabledStates(
+                "com.android.package2");
+        assertEquals(packageTwoExpected, packageTwo);
+    }
+
     /**
      * Creates folderName/fileName in the mTemporaryFolder and fills it with the contents.
      * @param folderName subdirectory of mTemporaryFolder to put the file, creating if needed
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
index ae53692..2eeeb3e 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorServiceTest.java
@@ -30,17 +30,16 @@
 
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 import android.content.Context;
 import android.content.pm.PackageManager;
-import android.os.Handler;
 import android.os.HandlerThread;
-import android.os.Looper;
-import android.os.Message;
 import android.os.TimestampedValue;
 
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.server.timezonedetector.TestHandler;
+
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -81,35 +80,35 @@
     }
 
     @Test(expected = SecurityException.class)
-    public void testSuggestPhoneTime_withoutPermission() {
+    public void testSuggestTelephonyTime_withoutPermission() {
         doThrow(new SecurityException("Mock"))
                 .when(mMockContext).enforceCallingPermission(anyString(), any());
-        PhoneTimeSuggestion phoneTimeSuggestion = createPhoneTimeSuggestion();
+        TelephonyTimeSuggestion timeSuggestion = createTelephonyTimeSuggestion();
 
         try {
-            mTimeDetectorService.suggestPhoneTime(phoneTimeSuggestion);
+            mTimeDetectorService.suggestTelephonyTime(timeSuggestion);
             fail();
         } finally {
             verify(mMockContext).enforceCallingPermission(
-                    eq(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE),
+                    eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
                     anyString());
         }
     }
 
     @Test
-    public void testSuggestPhoneTime() throws Exception {
+    public void testSuggestTelephonyTime() throws Exception {
         doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
 
-        PhoneTimeSuggestion phoneTimeSuggestion = createPhoneTimeSuggestion();
-        mTimeDetectorService.suggestPhoneTime(phoneTimeSuggestion);
+        TelephonyTimeSuggestion timeSuggestion = createTelephonyTimeSuggestion();
+        mTimeDetectorService.suggestTelephonyTime(timeSuggestion);
         mTestHandler.assertTotalMessagesEnqueued(1);
 
         verify(mMockContext).enforceCallingPermission(
-                eq(android.Manifest.permission.SUGGEST_PHONE_TIME_AND_ZONE),
+                eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
                 anyString());
 
-        mTestHandler.waitForEmptyQueue();
-        mStubbedTimeDetectorStrategy.verifySuggestPhoneTimeCalled(phoneTimeSuggestion);
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeDetectorStrategy.verifySuggestTelephonyTimeCalled(timeSuggestion);
     }
 
     @Test(expected = SecurityException.class)
@@ -140,7 +139,7 @@
                 eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE),
                 anyString());
 
-        mTestHandler.waitForEmptyQueue();
+        mTestHandler.waitForMessagesToBeProcessed();
         mStubbedTimeDetectorStrategy.verifySuggestManualTimeCalled(manualTimeSuggestion);
     }
 
@@ -170,7 +169,7 @@
         verify(mMockContext).enforceCallingOrSelfPermission(
                 eq(android.Manifest.permission.SET_TIME), anyString());
 
-        mTestHandler.waitForEmptyQueue();
+        mTestHandler.waitForMessagesToBeProcessed();
         mStubbedTimeDetectorStrategy.verifySuggestNetworkTimeCalled(NetworkTimeSuggestion);
     }
 
@@ -187,21 +186,23 @@
 
     @Test
     public void testAutoTimeDetectionToggle() throws Exception {
-        mTimeDetectorService.handleAutoTimeDetectionToggle();
+        mTimeDetectorService.handleAutoTimeDetectionChanged();
         mTestHandler.assertTotalMessagesEnqueued(1);
-        mTestHandler.waitForEmptyQueue();
-        mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled();
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionChangedCalled();
 
-        mTimeDetectorService.handleAutoTimeDetectionToggle();
+        mStubbedTimeDetectorStrategy.resetCallTracking();
+
+        mTimeDetectorService.handleAutoTimeDetectionChanged();
         mTestHandler.assertTotalMessagesEnqueued(2);
-        mTestHandler.waitForEmptyQueue();
-        mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionToggleCalled();
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeDetectorStrategy.verifyHandleAutoTimeDetectionChangedCalled();
     }
 
-    private static PhoneTimeSuggestion createPhoneTimeSuggestion() {
-        int phoneId = 1234;
+    private static TelephonyTimeSuggestion createTelephonyTimeSuggestion() {
+        int slotIndex = 1234;
         TimestampedValue<Long> timeValue = new TimestampedValue<>(100L, 1_000_000L);
-        return new PhoneTimeSuggestion.Builder(phoneId)
+        return new TelephonyTimeSuggestion.Builder(slotIndex)
                 .setUtcTime(timeValue)
                 .build();
     }
@@ -219,10 +220,10 @@
     private static class StubbedTimeDetectorStrategy implements TimeDetectorStrategy {
 
         // Call tracking.
-        private PhoneTimeSuggestion mLastPhoneSuggestion;
+        private TelephonyTimeSuggestion mLastTelephonySuggestion;
         private ManualTimeSuggestion mLastManualSuggestion;
         private NetworkTimeSuggestion mLastNetworkSuggestion;
-        private boolean mLastAutoTimeDetectionToggleCalled;
+        private boolean mHandleAutoTimeDetectionChangedCalled;
         private boolean mDumpCalled;
 
         @Override
@@ -230,45 +231,40 @@
         }
 
         @Override
-        public void suggestPhoneTime(PhoneTimeSuggestion timeSuggestion) {
-            resetCallTracking();
-            mLastPhoneSuggestion = timeSuggestion;
+        public void suggestTelephonyTime(TelephonyTimeSuggestion timeSuggestion) {
+            mLastTelephonySuggestion = timeSuggestion;
         }
 
         @Override
         public void suggestManualTime(ManualTimeSuggestion timeSuggestion) {
-            resetCallTracking();
             mLastManualSuggestion = timeSuggestion;
         }
 
         @Override
         public void suggestNetworkTime(NetworkTimeSuggestion timeSuggestion) {
-            resetCallTracking();
             mLastNetworkSuggestion = timeSuggestion;
         }
 
         @Override
         public void handleAutoTimeDetectionChanged() {
-            resetCallTracking();
-            mLastAutoTimeDetectionToggleCalled = true;
+            mHandleAutoTimeDetectionChangedCalled = true;
         }
 
         @Override
         public void dump(PrintWriter pw, String[] args) {
-            resetCallTracking();
             mDumpCalled = true;
         }
 
         void resetCallTracking() {
-            mLastPhoneSuggestion = null;
+            mLastTelephonySuggestion = null;
             mLastManualSuggestion = null;
             mLastNetworkSuggestion = null;
-            mLastAutoTimeDetectionToggleCalled = false;
+            mHandleAutoTimeDetectionChangedCalled = false;
             mDumpCalled = false;
         }
 
-        void verifySuggestPhoneTimeCalled(PhoneTimeSuggestion expectedSuggestion) {
-            assertEquals(expectedSuggestion, mLastPhoneSuggestion);
+        void verifySuggestTelephonyTimeCalled(TelephonyTimeSuggestion expectedSuggestion) {
+            assertEquals(expectedSuggestion, mLastTelephonySuggestion);
         }
 
         public void verifySuggestManualTimeCalled(ManualTimeSuggestion expectedSuggestion) {
@@ -279,45 +275,12 @@
             assertEquals(expectedSuggestion, mLastNetworkSuggestion);
         }
 
-        void verifyHandleAutoTimeDetectionToggleCalled() {
-            assertTrue(mLastAutoTimeDetectionToggleCalled);
+        void verifyHandleAutoTimeDetectionChangedCalled() {
+            assertTrue(mHandleAutoTimeDetectionChangedCalled);
         }
 
         void verifyDumpCalled() {
             assertTrue(mDumpCalled);
         }
     }
-
-    /**
-     * A Handler that can track posts/sends and wait for work to be completed.
-     */
-    private static class TestHandler extends Handler {
-
-        private int mMessagesSent;
-
-        TestHandler(Looper looper) {
-            super(looper);
-        }
-
-        @Override
-        public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
-            mMessagesSent++;
-            return super.sendMessageAtTime(msg, uptimeMillis);
-        }
-
-        /** Asserts the number of messages posted or sent is as expected. */
-        void assertTotalMessagesEnqueued(int expected) {
-            assertEquals(expected, mMessagesSent);
-        }
-
-        /**
-         * Waits for all currently enqueued work due to be processed to be completed before
-         * returning.
-         */
-        void waitForEmptyQueue() throws InterruptedException {
-            while (!getLooper().getQueue().isIdle()) {
-                Thread.sleep(100);
-            }
-        }
-    }
 }
diff --git a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
index d940a6a..803b245 100644
--- a/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
+++ b/services/tests/servicestests/src/com/android/server/timedetector/TimeDetectorStrategyImplTest.java
@@ -24,7 +24,7 @@
 
 import android.app.timedetector.ManualTimeSuggestion;
 import android.app.timedetector.NetworkTimeSuggestion;
-import android.app.timedetector.PhoneTimeSuggestion;
+import android.app.timedetector.TelephonyTimeSuggestion;
 import android.icu.util.Calendar;
 import android.icu.util.GregorianCalendar;
 import android.icu.util.TimeZone;
@@ -52,7 +52,7 @@
      */
     private static final long ARBITRARY_TEST_TIME_MILLIS = createUtcTime(2018, 1, 1, 12, 0, 0);
 
-    private static final int ARBITRARY_PHONE_ID = 123456;
+    private static final int ARBITRARY_SLOT_INDEX = 123456;
 
     private Script mScript;
 
@@ -62,51 +62,51 @@
     }
 
     @Test
-    public void testSuggestPhoneTime_autoTimeEnabled() {
+    public void testSuggestTelephonyTime_autoTimeEnabled() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
         long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
 
-        PhoneTimeSuggestion timeSuggestion =
-                mScript.generatePhoneTimeSuggestion(phoneId, testTimeMillis);
+        TelephonyTimeSuggestion timeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
         mScript.simulateTimePassing()
-                .simulatePhoneTimeSuggestion(timeSuggestion);
+                .simulateTelephonyTimeSuggestion(timeSuggestion);
 
         long expectedSystemClockMillis =
                 mScript.calculateTimeInMillisForNow(timeSuggestion.getUtcTime());
         mScript.verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion);
     }
 
     @Test
-    public void testSuggestPhoneTime_emptySuggestionIgnored() {
+    public void testSuggestTelephonyTime_emptySuggestionIgnored() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        int phoneId = ARBITRARY_PHONE_ID;
-        PhoneTimeSuggestion timeSuggestion =
-                mScript.generatePhoneTimeSuggestion(phoneId, null);
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion)
+        int slotIndex = ARBITRARY_SLOT_INDEX;
+        TelephonyTimeSuggestion timeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, null);
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, null);
+                .assertLatestTelephonySuggestion(slotIndex, null);
     }
 
     @Test
-    public void testSuggestPhoneTime_systemClockThreshold() {
+    public void testSuggestTelephonyTime_systemClockThreshold() {
         final int systemClockUpdateThresholdMillis = 1000;
         final int clockIncrementMillis = 100;
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeThresholds(systemClockUpdateThresholdMillis)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
 
         // Send the first time signal. It should be used.
         {
-            PhoneTimeSuggestion timeSuggestion1 =
-                    mScript.generatePhoneTimeSuggestion(phoneId, ARBITRARY_TEST_TIME_MILLIS);
+            TelephonyTimeSuggestion timeSuggestion1 =
+                    mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME_MILLIS);
 
             // Increment the the device clocks to simulate the passage of time.
             mScript.simulateTimePassing(clockIncrementMillis);
@@ -114,151 +114,151 @@
             long expectedSystemClockMillis1 =
                     mScript.calculateTimeInMillisForNow(timeSuggestion1.getUtcTime());
 
-            mScript.simulatePhoneTimeSuggestion(timeSuggestion1)
+            mScript.simulateTelephonyTimeSuggestion(timeSuggestion1)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1)
-                    .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                    .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
         }
 
         // Now send another time signal, but one that is too similar to the last one and should be
         // stored, but not used to set the system clock.
         {
             int underThresholdMillis = systemClockUpdateThresholdMillis - 1;
-            PhoneTimeSuggestion timeSuggestion2 = mScript.generatePhoneTimeSuggestion(
-                    phoneId, mScript.peekSystemClockMillis() + underThresholdMillis);
+            TelephonyTimeSuggestion timeSuggestion2 = mScript.generateTelephonyTimeSuggestion(
+                    slotIndex, mScript.peekSystemClockMillis() + underThresholdMillis);
             mScript.simulateTimePassing(clockIncrementMillis)
-                    .simulatePhoneTimeSuggestion(timeSuggestion2)
+                    .simulateTelephonyTimeSuggestion(timeSuggestion2)
                     .verifySystemClockWasNotSetAndResetCallTracking()
-                    .assertLatestPhoneSuggestion(phoneId, timeSuggestion2);
+                    .assertLatestTelephonySuggestion(slotIndex, timeSuggestion2);
         }
 
         // Now send another time signal, but one that is on the threshold and so should be used.
         {
-            PhoneTimeSuggestion timeSuggestion3 = mScript.generatePhoneTimeSuggestion(
-                    phoneId,
+            TelephonyTimeSuggestion timeSuggestion3 = mScript.generateTelephonyTimeSuggestion(
+                    slotIndex,
                     mScript.peekSystemClockMillis() + systemClockUpdateThresholdMillis);
             mScript.simulateTimePassing(clockIncrementMillis);
 
             long expectedSystemClockMillis3 =
                     mScript.calculateTimeInMillisForNow(timeSuggestion3.getUtcTime());
 
-            mScript.simulatePhoneTimeSuggestion(timeSuggestion3)
+            mScript.simulateTelephonyTimeSuggestion(timeSuggestion3)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis3)
-                    .assertLatestPhoneSuggestion(phoneId, timeSuggestion3);
+                    .assertLatestTelephonySuggestion(slotIndex, timeSuggestion3);
         }
     }
 
     @Test
-    public void testSuggestPhoneTime_multiplePhoneIdsAndBucketing() {
+    public void testSuggestTelephonyTime_multipleSlotIndexsAndBucketing() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        // There are 2 phones in this test. Phone 2 has a different idea of the current time.
-        // phone1Id < phone2Id (which is important because the strategy uses the lowest ID when
-        // multiple phone suggestions are available.
-        int phone1Id = ARBITRARY_PHONE_ID;
-        int phone2Id = ARBITRARY_PHONE_ID + 1;
-        long phone1TimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        long phone2TimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(1).toMillis();
+        // There are 2 slotIndexes in this test. slotIndex1 and slotIndex2 have different opinions
+        // about the current time. slotIndex1 < slotIndex2 (which is important because the strategy
+        // uses the lowest slotIndex when multiple telephony suggestions are available.
+        int slotIndex1 = ARBITRARY_SLOT_INDEX;
+        int slotIndex2 = ARBITRARY_SLOT_INDEX + 1;
+        long slotIndex1TimeMillis = ARBITRARY_TEST_TIME_MILLIS;
+        long slotIndex2TimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(1).toMillis();
 
-        // Make a suggestion with phone2Id.
+        // Make a suggestion with slotIndex2.
         {
-            PhoneTimeSuggestion phone2TimeSuggestion =
-                    mScript.generatePhoneTimeSuggestion(phone2Id, phone2TimeMillis);
+            TelephonyTimeSuggestion slotIndex2TimeSuggestion =
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(phone2TimeSuggestion.getUtcTime());
+                    mScript.calculateTimeInMillisForNow(slotIndex2TimeSuggestion.getUtcTime());
 
-            mScript.simulatePhoneTimeSuggestion(phone2TimeSuggestion)
+            mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
-                    .assertLatestPhoneSuggestion(phone1Id, null)
-                    .assertLatestPhoneSuggestion(phone2Id, phone2TimeSuggestion);
+                    .assertLatestTelephonySuggestion(slotIndex1, null)
+                    .assertLatestTelephonySuggestion(slotIndex2, slotIndex2TimeSuggestion);
         }
 
         mScript.simulateTimePassing();
 
-        // Now make a different suggestion with phone1Id.
+        // Now make a different suggestion with slotIndex1.
         {
-            PhoneTimeSuggestion phone1TimeSuggestion =
-                    mScript.generatePhoneTimeSuggestion(phone1Id, phone1TimeMillis);
+            TelephonyTimeSuggestion slotIndex1TimeSuggestion =
+                    mScript.generateTelephonyTimeSuggestion(slotIndex1, slotIndex1TimeMillis);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(phone1TimeSuggestion.getUtcTime());
+                    mScript.calculateTimeInMillisForNow(slotIndex1TimeSuggestion.getUtcTime());
 
-            mScript.simulatePhoneTimeSuggestion(phone1TimeSuggestion)
+            mScript.simulateTelephonyTimeSuggestion(slotIndex1TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
-                    .assertLatestPhoneSuggestion(phone1Id, phone1TimeSuggestion);
+                    .assertLatestTelephonySuggestion(slotIndex1, slotIndex1TimeSuggestion);
 
         }
 
         mScript.simulateTimePassing();
 
-        // Make another suggestion with phone2Id. It should be stored but not used because the
-        // phone1Id suggestion will still "win".
+        // Make another suggestion with slotIndex2. It should be stored but not used because the
+        // slotIndex1 suggestion will still "win".
         {
-            PhoneTimeSuggestion phone2TimeSuggestion =
-                    mScript.generatePhoneTimeSuggestion(phone2Id, phone2TimeMillis);
+            TelephonyTimeSuggestion slotIndex2TimeSuggestion =
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
             mScript.simulateTimePassing();
 
-            mScript.simulatePhoneTimeSuggestion(phone2TimeSuggestion)
+            mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
                     .verifySystemClockWasNotSetAndResetCallTracking()
-                    .assertLatestPhoneSuggestion(phone2Id, phone2TimeSuggestion);
+                    .assertLatestTelephonySuggestion(slotIndex2, slotIndex2TimeSuggestion);
         }
 
-        // Let enough time pass that phone1Id's suggestion should now be too old.
-        mScript.simulateTimePassing(TimeDetectorStrategyImpl.PHONE_BUCKET_SIZE_MILLIS);
+        // Let enough time pass that slotIndex1's suggestion should now be too old.
+        mScript.simulateTimePassing(TimeDetectorStrategyImpl.TELEPHONY_BUCKET_SIZE_MILLIS);
 
-        // Make another suggestion with phone2Id. It should be used because the phoneId1
+        // Make another suggestion with slotIndex2. It should be used because the slotIndex1
         // is in an older "bucket".
         {
-            PhoneTimeSuggestion phone2TimeSuggestion =
-                    mScript.generatePhoneTimeSuggestion(phone2Id, phone2TimeMillis);
+            TelephonyTimeSuggestion slotIndex2TimeSuggestion =
+                    mScript.generateTelephonyTimeSuggestion(slotIndex2, slotIndex2TimeMillis);
             mScript.simulateTimePassing();
 
             long expectedSystemClockMillis =
-                    mScript.calculateTimeInMillisForNow(phone2TimeSuggestion.getUtcTime());
+                    mScript.calculateTimeInMillisForNow(slotIndex2TimeSuggestion.getUtcTime());
 
-            mScript.simulatePhoneTimeSuggestion(phone2TimeSuggestion)
+            mScript.simulateTelephonyTimeSuggestion(slotIndex2TimeSuggestion)
                     .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis)
-                    .assertLatestPhoneSuggestion(phone2Id, phone2TimeSuggestion);
+                    .assertLatestTelephonySuggestion(slotIndex2, slotIndex2TimeSuggestion);
         }
     }
 
     @Test
-    public void testSuggestPhoneTime_autoTimeDisabled() {
+    public void testSuggestTelephonyTime_autoTimeDisabled() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(false);
 
-        int phoneId = ARBITRARY_PHONE_ID;
-        PhoneTimeSuggestion timeSuggestion =
-                mScript.generatePhoneTimeSuggestion(phoneId, ARBITRARY_TEST_TIME_MILLIS);
+        int slotIndex = ARBITRARY_SLOT_INDEX;
+        TelephonyTimeSuggestion timeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, ARBITRARY_TEST_TIME_MILLIS);
         mScript.simulateTimePassing()
-                .simulatePhoneTimeSuggestion(timeSuggestion)
+                .simulateTelephonyTimeSuggestion(timeSuggestion)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion);
     }
 
     @Test
-    public void testSuggestPhoneTime_invalidNitzReferenceTimesIgnored() {
+    public void testSuggestTelephonyTime_invalidNitzReferenceTimesIgnored() {
         final int systemClockUpdateThreshold = 2000;
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeThresholds(systemClockUpdateThreshold)
                 .pokeAutoTimeDetectionEnabled(true);
 
         long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
 
-        PhoneTimeSuggestion timeSuggestion1 =
-                mScript.generatePhoneTimeSuggestion(phoneId, testTimeMillis);
+        TelephonyTimeSuggestion timeSuggestion1 =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
         TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
 
-        // Initialize the strategy / device with a time set from a phone suggestion.
+        // Initialize the strategy / device with a time set from a telephony suggestion.
         mScript.simulateTimePassing();
         long expectedSystemClockMillis1 = mScript.calculateTimeInMillisForNow(utcTime1);
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion1)
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion1)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1)
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // The UTC time increment should be larger than the system clock update threshold so we
         // know it shouldn't be ignored for other reasons.
@@ -269,11 +269,11 @@
         long referenceTimeBeforeLastSignalMillis = utcTime1.getReferenceTimeMillis() - 1;
         TimestampedValue<Long> utcTime2 = new TimestampedValue<>(
                 referenceTimeBeforeLastSignalMillis, validUtcTimeMillis);
-        PhoneTimeSuggestion timeSuggestion2 =
-                createPhoneTimeSuggestion(phoneId, utcTime2);
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion2)
+        TelephonyTimeSuggestion timeSuggestion2 =
+                createTelephonyTimeSuggestion(slotIndex, utcTime2);
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion2)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // Now supply a new signal that has an obviously bogus reference time : substantially in the
         // future.
@@ -281,36 +281,36 @@
                 utcTime1.getReferenceTimeMillis() + Integer.MAX_VALUE + 1;
         TimestampedValue<Long> utcTime3 = new TimestampedValue<>(
                 referenceTimeInFutureMillis, validUtcTimeMillis);
-        PhoneTimeSuggestion timeSuggestion3 =
-                createPhoneTimeSuggestion(phoneId, utcTime3);
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion3)
+        TelephonyTimeSuggestion timeSuggestion3 =
+                createTelephonyTimeSuggestion(slotIndex, utcTime3);
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion3)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // Just to prove validUtcTimeMillis is valid.
         long validReferenceTimeMillis = utcTime1.getReferenceTimeMillis() + 100;
         TimestampedValue<Long> utcTime4 = new TimestampedValue<>(
                 validReferenceTimeMillis, validUtcTimeMillis);
         long expectedSystemClockMillis4 = mScript.calculateTimeInMillisForNow(utcTime4);
-        PhoneTimeSuggestion timeSuggestion4 =
-                createPhoneTimeSuggestion(phoneId, utcTime4);
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion4)
+        TelephonyTimeSuggestion timeSuggestion4 =
+                createTelephonyTimeSuggestion(slotIndex, utcTime4);
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion4)
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis4)
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion4);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion4);
     }
 
     @Test
-    public void testSuggestPhoneTime_timeDetectionToggled() {
+    public void testSuggestTelephonyTime_timeDetectionToggled() {
         final int clockIncrementMillis = 100;
         final int systemClockUpdateThreshold = 2000;
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeThresholds(systemClockUpdateThreshold)
                 .pokeAutoTimeDetectionEnabled(false);
 
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
         long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        PhoneTimeSuggestion timeSuggestion1 =
-                mScript.generatePhoneTimeSuggestion(phoneId, testTimeMillis);
+        TelephonyTimeSuggestion timeSuggestion1 =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
         TimestampedValue<Long> utcTime1 = timeSuggestion1.getUtcTime();
 
         // Simulate time passing.
@@ -318,9 +318,9 @@
 
         // Simulate the time signal being received. It should not be used because auto time
         // detection is off but it should be recorded.
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion1)
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion1)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // Simulate more time passing.
         mScript.simulateTimePassing(clockIncrementMillis);
@@ -330,17 +330,17 @@
         // Turn on auto time detection.
         mScript.simulateAutoTimeDetectionToggle()
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis1)
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // Turn off auto time detection.
         mScript.simulateAutoTimeDetectionToggle()
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion1);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion1);
 
         // Receive another valid time signal.
         // It should be on the threshold and accounting for the clock increments.
-        PhoneTimeSuggestion timeSuggestion2 = mScript.generatePhoneTimeSuggestion(
-                phoneId, mScript.peekSystemClockMillis() + systemClockUpdateThreshold);
+        TelephonyTimeSuggestion timeSuggestion2 = mScript.generateTelephonyTimeSuggestion(
+                slotIndex, mScript.peekSystemClockMillis() + systemClockUpdateThreshold);
 
         // Simulate more time passing.
         mScript.simulateTimePassing(clockIncrementMillis);
@@ -350,45 +350,45 @@
 
         // The new time, though valid, should not be set in the system clock because auto time is
         // disabled.
-        mScript.simulatePhoneTimeSuggestion(timeSuggestion2)
+        mScript.simulateTelephonyTimeSuggestion(timeSuggestion2)
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion2);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion2);
 
         // Turn on auto time detection.
         mScript.simulateAutoTimeDetectionToggle()
                 .verifySystemClockWasSetAndResetCallTracking(expectedSystemClockMillis2)
-                .assertLatestPhoneSuggestion(phoneId, timeSuggestion2);
+                .assertLatestTelephonySuggestion(slotIndex, timeSuggestion2);
     }
 
     @Test
-    public void testSuggestPhoneTime_maxSuggestionAge() {
+    public void testSuggestTelephonyTime_maxSuggestionAge() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
         long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        PhoneTimeSuggestion phoneSuggestion =
-                mScript.generatePhoneTimeSuggestion(phoneId, testTimeMillis);
+        TelephonyTimeSuggestion telephonySuggestion =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
 
         mScript.simulateTimePassing();
 
         long expectedSystemClockMillis =
-                mScript.calculateTimeInMillisForNow(phoneSuggestion.getUtcTime());
-        mScript.simulatePhoneTimeSuggestion(phoneSuggestion)
+                mScript.calculateTimeInMillisForNow(telephonySuggestion.getUtcTime());
+        mScript.simulateTelephonyTimeSuggestion(telephonySuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
                         expectedSystemClockMillis  /* expectedNetworkBroadcast */)
-                .assertLatestPhoneSuggestion(phoneId, phoneSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonySuggestion);
 
-        // Look inside and check what the strategy considers the current best phone suggestion.
-        assertEquals(phoneSuggestion, mScript.peekBestPhoneSuggestion());
+        // Look inside and check what the strategy considers the current best telephony suggestion.
+        assertEquals(telephonySuggestion, mScript.peekBestTelephonySuggestion());
 
-        // Simulate time passing, long enough that phoneSuggestion is now too old.
+        // Simulate time passing, long enough that telephonySuggestion is now too old.
         mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS);
 
-        // Look inside and check what the strategy considers the current best phone suggestion. It
-        // should still be the, it's just no longer used.
-        assertNull(mScript.peekBestPhoneSuggestion());
-        mScript.assertLatestPhoneSuggestion(phoneId, phoneSuggestion);
+        // Look inside and check what the strategy considers the current best telephony suggestion.
+        // It should still be the, it's just no longer used.
+        assertNull(mScript.peekBestTelephonySuggestion());
+        mScript.assertLatestTelephonySuggestion(slotIndex, telephonySuggestion);
     }
 
     @Test
@@ -413,21 +413,21 @@
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
-        int phoneId = ARBITRARY_PHONE_ID;
+        int slotIndex = ARBITRARY_SLOT_INDEX;
 
-        // Simulate a phone suggestion.
+        // Simulate a telephony suggestion.
         long testTimeMillis = ARBITRARY_TEST_TIME_MILLIS;
-        PhoneTimeSuggestion phoneTimeSuggestion =
-                mScript.generatePhoneTimeSuggestion(phoneId, testTimeMillis);
+        TelephonyTimeSuggestion telephonyTimeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(slotIndex, testTimeMillis);
 
         // Simulate the passage of time.
         mScript.simulateTimePassing();
 
         long expectedAutoClockMillis =
-                mScript.calculateTimeInMillisForNow(phoneTimeSuggestion.getUtcTime());
-        mScript.simulatePhoneTimeSuggestion(phoneTimeSuggestion)
+                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime());
+        mScript.simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedAutoClockMillis)
-                .assertLatestPhoneSuggestion(phoneId, phoneTimeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
         // Simulate the passage of time.
         mScript.simulateTimePassing();
@@ -435,7 +435,7 @@
         // Switch to manual.
         mScript.simulateAutoTimeDetectionToggle()
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, phoneTimeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
         // Simulate the passage of time.
         mScript.simulateTimePassing();
@@ -450,7 +450,7 @@
                 mScript.calculateTimeInMillisForNow(manualTimeSuggestion.getUtcTime());
         mScript.simulateManualTimeSuggestion(manualTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(expectedManualClockMillis)
-                .assertLatestPhoneSuggestion(phoneId, phoneTimeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
         // Simulate the passage of time.
         mScript.simulateTimePassing();
@@ -459,14 +459,14 @@
         mScript.simulateAutoTimeDetectionToggle();
 
         expectedAutoClockMillis =
-                mScript.calculateTimeInMillisForNow(phoneTimeSuggestion.getUtcTime());
+                mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime());
         mScript.verifySystemClockWasSetAndResetCallTracking(expectedAutoClockMillis)
-                .assertLatestPhoneSuggestion(phoneId, phoneTimeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
 
         // Switch back to manual - nothing should happen to the clock.
         mScript.simulateAutoTimeDetectionToggle()
                 .verifySystemClockWasNotSetAndResetCallTracking()
-                .assertLatestPhoneSuggestion(phoneId, phoneTimeSuggestion);
+                .assertLatestTelephonySuggestion(slotIndex, telephonyTimeSuggestion);
     }
 
     /**
@@ -515,19 +515,19 @@
     }
 
     @Test
-    public void testSuggestNetworkTime_phoneSuggestionsBeatNetworkSuggestions() {
+    public void testSuggestNetworkTime_telephonySuggestionsBeatNetworkSuggestions() {
         mScript.pokeFakeClocks(ARBITRARY_CLOCK_INITIALIZATION_INFO)
                 .pokeAutoTimeDetectionEnabled(true);
 
         // Three obviously different times that could not be mistaken for each other.
         long networkTimeMillis1 = ARBITRARY_TEST_TIME_MILLIS;
         long networkTimeMillis2 = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(30).toMillis();
-        long phoneTimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(60).toMillis();
+        long telephonyTimeMillis = ARBITRARY_TEST_TIME_MILLIS + Duration.ofDays(60).toMillis();
         // A small increment used to simulate the passage of time, but not enough to interfere with
         // macro-level time changes associated with suggestion age.
         final long smallTimeIncrementMillis = 101;
 
-        // A network suggestion is made. It should be used because there is no phone suggestion.
+        // A network suggestion is made. It should be used because there is no telephony suggestion.
         NetworkTimeSuggestion networkTimeSuggestion1 =
                 mScript.generateNetworkTimeSuggestion(networkTimeMillis1);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
@@ -536,37 +536,37 @@
                         mScript.calculateTimeInMillisForNow(networkTimeSuggestion1.getUtcTime()));
 
         // Check internal state.
-        mScript.assertLatestPhoneSuggestion(ARBITRARY_PHONE_ID, null)
+        mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, null)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion1);
         assertEquals(networkTimeSuggestion1, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestPhoneSuggestion());
+        assertNull(mScript.peekBestTelephonySuggestion());
 
         // Simulate a little time passing.
         mScript.simulateTimePassing(smallTimeIncrementMillis)
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
-        // Now a phone suggestion is made. Phone suggestions are prioritized over network
+        // Now a telephony suggestion is made. Telephony suggestions are prioritized over network
         // suggestions so it should "win".
-        PhoneTimeSuggestion phoneTimeSuggestion =
-                mScript.generatePhoneTimeSuggestion(ARBITRARY_PHONE_ID, phoneTimeMillis);
+        TelephonyTimeSuggestion telephonyTimeSuggestion =
+                mScript.generateTelephonyTimeSuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeMillis);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
-                .simulatePhoneTimeSuggestion(phoneTimeSuggestion)
+                .simulateTelephonyTimeSuggestion(telephonyTimeSuggestion)
                 .verifySystemClockWasSetAndResetCallTracking(
-                        mScript.calculateTimeInMillisForNow(phoneTimeSuggestion.getUtcTime()));
+                        mScript.calculateTimeInMillisForNow(telephonyTimeSuggestion.getUtcTime()));
 
         // Check internal state.
-        mScript.assertLatestPhoneSuggestion(ARBITRARY_PHONE_ID, phoneTimeSuggestion)
+        mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion1);
         assertEquals(networkTimeSuggestion1, mScript.peekLatestValidNetworkSuggestion());
-        assertEquals(phoneTimeSuggestion, mScript.peekBestPhoneSuggestion());
+        assertEquals(telephonyTimeSuggestion, mScript.peekBestTelephonySuggestion());
 
         // Simulate some significant time passing: half the time allowed before a time signal
         // becomes "too old to use".
         mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2)
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
-        // Now another network suggestion is made. Phone suggestions are prioritized over network
-        // suggestions so the latest phone suggestion should still "win".
+        // Now another network suggestion is made. Telephony suggestions are prioritized over
+        // network suggestions so the latest telephony suggestion should still "win".
         NetworkTimeSuggestion networkTimeSuggestion2 =
                 mScript.generateNetworkTimeSuggestion(networkTimeMillis2);
         mScript.simulateTimePassing(smallTimeIncrementMillis)
@@ -574,14 +574,14 @@
                 .verifySystemClockWasNotSetAndResetCallTracking();
 
         // Check internal state.
-        mScript.assertLatestPhoneSuggestion(ARBITRARY_PHONE_ID, phoneTimeSuggestion)
+        mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion2);
         assertEquals(networkTimeSuggestion2, mScript.peekLatestValidNetworkSuggestion());
-        assertEquals(phoneTimeSuggestion, mScript.peekBestPhoneSuggestion());
+        assertEquals(telephonyTimeSuggestion, mScript.peekBestTelephonySuggestion());
 
         // Simulate some significant time passing: half the time allowed before a time signal
-        // becomes "too old to use". This should mean that phoneTimeSuggestion is now too old to be
-        // used but networkTimeSuggestion2 is not.
+        // becomes "too old to use". This should mean that telephonyTimeSuggestion is now too old to
+        // be used but networkTimeSuggestion2 is not.
         mScript.simulateTimePassing(TimeDetectorStrategyImpl.MAX_UTC_TIME_AGE_MILLIS / 2);
 
         // NOTE: The TimeDetectorStrategyImpl doesn't set an alarm for the point when the last
@@ -591,10 +591,10 @@
         mScript.verifySystemClockWasNotSetAndResetCallTracking();
 
         // Check internal state.
-        mScript.assertLatestPhoneSuggestion(ARBITRARY_PHONE_ID, phoneTimeSuggestion)
+        mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion2);
         assertEquals(networkTimeSuggestion2, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestPhoneSuggestion());
+        assertNull(mScript.peekBestTelephonySuggestion());
 
         // Toggle auto-time off and on to force the detection logic to run.
         mScript.simulateAutoTimeDetectionToggle()
@@ -606,10 +606,10 @@
                 mScript.calculateTimeInMillisForNow(networkTimeSuggestion2.getUtcTime()));
 
         // Check internal state.
-        mScript.assertLatestPhoneSuggestion(ARBITRARY_PHONE_ID, phoneTimeSuggestion)
+        mScript.assertLatestTelephonySuggestion(ARBITRARY_SLOT_INDEX, telephonyTimeSuggestion)
                 .assertLatestNetworkSuggestion(networkTimeSuggestion2);
         assertEquals(networkTimeSuggestion2, mScript.peekLatestValidNetworkSuggestion());
-        assertNull(mScript.peekBestPhoneSuggestion());
+        assertNull(mScript.peekBestTelephonySuggestion());
     }
 
     /**
@@ -760,8 +760,8 @@
             return mFakeCallback.peekSystemClockMillis();
         }
 
-        Script simulatePhoneTimeSuggestion(PhoneTimeSuggestion timeSuggestion) {
-            mTimeDetectorStrategy.suggestPhoneTime(timeSuggestion);
+        Script simulateTelephonyTimeSuggestion(TelephonyTimeSuggestion timeSuggestion) {
+            mTimeDetectorStrategy.suggestTelephonyTime(timeSuggestion);
             return this;
         }
 
@@ -806,10 +806,10 @@
         }
 
         /**
-         * White box test info: Asserts the latest suggestion for the phone ID is as expected.
+         * White box test info: Asserts the latest suggestion for the slotIndex is as expected.
          */
-        Script assertLatestPhoneSuggestion(int phoneId, PhoneTimeSuggestion expected) {
-            assertEquals(expected, mTimeDetectorStrategy.getLatestPhoneSuggestion(phoneId));
+        Script assertLatestTelephonySuggestion(int slotIndex, TelephonyTimeSuggestion expected) {
+            assertEquals(expected, mTimeDetectorStrategy.getLatestTelephonySuggestion(slotIndex));
             return this;
         }
 
@@ -822,11 +822,11 @@
         }
 
         /**
-         * White box test info: Returns the phone suggestion that would be used, if any, given the
-         * current elapsed real time clock and regardless of origin prioritization.
+         * White box test info: Returns the telephony suggestion that would be used, if any, given
+         * the current elapsed real time clock and regardless of origin prioritization.
          */
-        PhoneTimeSuggestion peekBestPhoneSuggestion() {
-            return mTimeDetectorStrategy.findBestPhoneSuggestionForTests();
+        TelephonyTimeSuggestion peekBestTelephonySuggestion() {
+            return mTimeDetectorStrategy.findBestTelephonySuggestionForTests();
         }
 
         /**
@@ -848,15 +848,15 @@
         }
 
         /**
-         * Generates a PhoneTimeSuggestion using the current elapsed realtime clock for the
-         * reference time.
+         * Generates a {@link TelephonyTimeSuggestion} using the current elapsed realtime clock for
+         * the reference time.
          */
-        PhoneTimeSuggestion generatePhoneTimeSuggestion(int phoneId, Long timeMillis) {
+        TelephonyTimeSuggestion generateTelephonyTimeSuggestion(int slotIndex, Long timeMillis) {
             TimestampedValue<Long> time = null;
             if (timeMillis != null) {
                 time = new TimestampedValue<>(peekElapsedRealtimeMillis(), timeMillis);
             }
-            return createPhoneTimeSuggestion(phoneId, time);
+            return createTelephonyTimeSuggestion(slotIndex, time);
         }
 
         /**
@@ -878,9 +878,9 @@
         }
     }
 
-    private static PhoneTimeSuggestion createPhoneTimeSuggestion(int phoneId,
+    private static TelephonyTimeSuggestion createTelephonyTimeSuggestion(int slotIndex,
             TimestampedValue<Long> utcTime) {
-        return new PhoneTimeSuggestion.Builder(phoneId)
+        return new TelephonyTimeSuggestion.Builder(slotIndex)
                 .setUtcTime(utcTime)
                 .build();
     }
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TestHandler.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TestHandler.java
new file mode 100644
index 0000000..21c9685
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TestHandler.java
@@ -0,0 +1,76 @@
+/*
+ * 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.server.timezonedetector;
+
+import static org.junit.Assert.assertEquals;
+
+import android.os.Handler;
+import android.os.Looper;
+import android.os.Message;
+
+/**
+ * A Handler that can track posts/sends and wait for them to be completed.
+ */
+public class TestHandler extends Handler {
+
+    private final Object mMonitor = new Object();
+    private int mMessagesProcessed = 0;
+    private int mMessagesSent = 0;
+
+    public TestHandler(Looper looper) {
+        super(looper);
+    }
+
+    @Override
+    public boolean sendMessageAtTime(Message msg, long uptimeMillis) {
+        synchronized (mMonitor) {
+            mMessagesSent++;
+        }
+
+        Runnable callback = msg.getCallback();
+        // Have the callback increment the mMessagesProcessed when it is done. It will notify
+        // any threads waiting for all messages to be processed if appropriate.
+        Runnable newCallback = () -> {
+            callback.run();
+            synchronized (mMonitor) {
+                mMessagesProcessed++;
+                if (mMessagesSent == mMessagesProcessed) {
+                    mMonitor.notifyAll();
+                }
+            }
+        };
+        msg.setCallback(newCallback);
+        return super.sendMessageAtTime(msg, uptimeMillis);
+    }
+
+    /** Asserts the number of messages posted or sent is as expected. */
+    public void assertTotalMessagesEnqueued(int expected) {
+        synchronized (mMonitor) {
+            assertEquals(expected, mMessagesSent);
+        }
+    }
+
+    /**
+     * Waits for all enqueued work to be completed before returning.
+     */
+    public void waitForMessagesToBeProcessed() throws InterruptedException {
+        synchronized (mMonitor) {
+            if (mMessagesSent != mMessagesProcessed) {
+                mMonitor.wait();
+            }
+        }
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java
new file mode 100644
index 0000000..039c2b4
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorServiceTest.java
@@ -0,0 +1,233 @@
+/*
+ * 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.server.timezonedetector;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyString;
+import static org.mockito.ArgumentMatchers.eq;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.HandlerThread;
+
+import androidx.test.runner.AndroidJUnit4;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.PrintWriter;
+
+@RunWith(AndroidJUnit4.class)
+public class TimeZoneDetectorServiceTest {
+
+    private Context mMockContext;
+    private StubbedTimeZoneDetectorStrategy mStubbedTimeZoneDetectorStrategy;
+
+    private TimeZoneDetectorService mTimeZoneDetectorService;
+    private HandlerThread mHandlerThread;
+    private TestHandler mTestHandler;
+
+
+    @Before
+    public void setUp() {
+        mMockContext = mock(Context.class);
+
+        // Create a thread + handler for processing the work that the service posts.
+        mHandlerThread = new HandlerThread("TimeZoneDetectorServiceTest");
+        mHandlerThread.start();
+        mTestHandler = new TestHandler(mHandlerThread.getLooper());
+
+        mStubbedTimeZoneDetectorStrategy = new StubbedTimeZoneDetectorStrategy();
+
+        mTimeZoneDetectorService = new TimeZoneDetectorService(
+                mMockContext, mTestHandler, mStubbedTimeZoneDetectorStrategy);
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mHandlerThread.quit();
+        mHandlerThread.join();
+    }
+
+    @Test(expected = SecurityException.class)
+    public void testSuggestTelephonyTime_withoutPermission() {
+        doThrow(new SecurityException("Mock"))
+                .when(mMockContext).enforceCallingPermission(anyString(), any());
+        TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
+
+        try {
+            mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
+            fail();
+        } finally {
+            verify(mMockContext).enforceCallingPermission(
+                    eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
+                    anyString());
+        }
+    }
+
+    @Test
+    public void testSuggestTelephonyTimeZone() throws Exception {
+        doNothing().when(mMockContext).enforceCallingPermission(anyString(), any());
+
+        TelephonyTimeZoneSuggestion timeZoneSuggestion = createTelephonyTimeZoneSuggestion();
+        mTimeZoneDetectorService.suggestTelephonyTimeZone(timeZoneSuggestion);
+        mTestHandler.assertTotalMessagesEnqueued(1);
+
+        verify(mMockContext).enforceCallingPermission(
+                eq(android.Manifest.permission.SUGGEST_TELEPHONY_TIME_AND_ZONE),
+                anyString());
+
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeZoneDetectorStrategy.verifySuggestTelephonyTimeZoneCalled(timeZoneSuggestion);
+    }
+
+    @Test(expected = SecurityException.class)
+    public void testSuggestManualTime_withoutPermission() {
+        doThrow(new SecurityException("Mock"))
+                .when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
+        ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion();
+
+        try {
+            mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion);
+            fail();
+        } finally {
+            verify(mMockContext).enforceCallingOrSelfPermission(
+                    eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE),
+                    anyString());
+        }
+    }
+
+    @Test
+    public void testSuggestManualTimeZone() throws Exception {
+        doNothing().when(mMockContext).enforceCallingOrSelfPermission(anyString(), any());
+
+        ManualTimeZoneSuggestion timeZoneSuggestion = createManualTimeZoneSuggestion();
+        mTimeZoneDetectorService.suggestManualTimeZone(timeZoneSuggestion);
+        mTestHandler.assertTotalMessagesEnqueued(1);
+
+        verify(mMockContext).enforceCallingOrSelfPermission(
+                eq(android.Manifest.permission.SUGGEST_MANUAL_TIME_AND_ZONE),
+                anyString());
+
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeZoneDetectorStrategy.verifySuggestManualTimeZoneCalled(timeZoneSuggestion);
+    }
+
+    @Test
+    public void testDump() {
+        when(mMockContext.checkCallingOrSelfPermission(android.Manifest.permission.DUMP))
+                .thenReturn(PackageManager.PERMISSION_GRANTED);
+
+        mTimeZoneDetectorService.dump(null, null, null);
+
+        verify(mMockContext).checkCallingOrSelfPermission(eq(android.Manifest.permission.DUMP));
+        mStubbedTimeZoneDetectorStrategy.verifyDumpCalled();
+    }
+
+    @Test
+    public void testAutoTimeZoneDetectionChanged() throws Exception {
+        mTimeZoneDetectorService.handleAutoTimeZoneDetectionChanged();
+        mTestHandler.assertTotalMessagesEnqueued(1);
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeZoneDetectorStrategy.verifyHandleAutoTimeZoneDetectionChangedCalled();
+
+        mStubbedTimeZoneDetectorStrategy.resetCallTracking();
+
+        mTimeZoneDetectorService.handleAutoTimeZoneDetectionChanged();
+        mTestHandler.assertTotalMessagesEnqueued(2);
+        mTestHandler.waitForMessagesToBeProcessed();
+        mStubbedTimeZoneDetectorStrategy.verifyHandleAutoTimeZoneDetectionChangedCalled();
+    }
+
+    private static TelephonyTimeZoneSuggestion createTelephonyTimeZoneSuggestion() {
+        int slotIndex = 1234;
+        return new TelephonyTimeZoneSuggestion.Builder(slotIndex)
+                .setZoneId("TestZoneId")
+                .setMatchType(TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET)
+                .setQuality(TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE)
+                .build();
+    }
+
+    private static ManualTimeZoneSuggestion createManualTimeZoneSuggestion() {
+        return new ManualTimeZoneSuggestion("TestZoneId");
+    }
+
+    private static class StubbedTimeZoneDetectorStrategy implements TimeZoneDetectorStrategy {
+
+        // Call tracking.
+        private TelephonyTimeZoneSuggestion mLastTelephonySuggestion;
+        private ManualTimeZoneSuggestion mLastManualSuggestion;
+        private boolean mHandleAutoTimeZoneDetectionChangedCalled;
+        private boolean mDumpCalled;
+
+        @Override
+        public void suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
+            mLastTelephonySuggestion = timeZoneSuggestion;
+        }
+
+        @Override
+        public void suggestManualTimeZone(ManualTimeZoneSuggestion timeZoneSuggestion) {
+            mLastManualSuggestion = timeZoneSuggestion;
+        }
+
+        @Override
+        public void handleAutoTimeZoneDetectionChanged() {
+            mHandleAutoTimeZoneDetectionChangedCalled = true;
+        }
+
+        @Override
+        public void dump(PrintWriter pw, String[] args) {
+            mDumpCalled = true;
+        }
+
+        void resetCallTracking() {
+            mLastTelephonySuggestion = null;
+            mLastManualSuggestion = null;
+            mHandleAutoTimeZoneDetectionChangedCalled = false;
+            mDumpCalled = false;
+        }
+
+        void verifySuggestTelephonyTimeZoneCalled(TelephonyTimeZoneSuggestion expectedSuggestion) {
+            assertEquals(expectedSuggestion, mLastTelephonySuggestion);
+        }
+
+        public void verifySuggestManualTimeZoneCalled(ManualTimeZoneSuggestion expectedSuggestion) {
+            assertEquals(expectedSuggestion, mLastManualSuggestion);
+        }
+
+        void verifyHandleAutoTimeZoneDetectionChangedCalled() {
+            assertTrue(mHandleAutoTimeZoneDetectionChangedCalled);
+        }
+
+        void verifyDumpCalled() {
+            assertTrue(mDumpCalled);
+        }
+    }
+
+}
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java
new file mode 100644
index 0000000..ba30967
--- /dev/null
+++ b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyImplTest.java
@@ -0,0 +1,638 @@
+/*
+ * Copyright 2019 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.timezonedetector;
+
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
+import static android.app.timezonedetector.TelephonyTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
+
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_HIGH;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_HIGHEST;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_LOW;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_MEDIUM;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_NONE;
+import static com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.TELEPHONY_SCORE_USAGE_THRESHOLD;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
+import android.app.timezonedetector.ManualTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion.MatchType;
+import android.app.timezonedetector.TelephonyTimeZoneSuggestion.Quality;
+
+import com.android.server.timezonedetector.TimeZoneDetectorStrategyImpl.QualifiedTelephonyTimeZoneSuggestion;
+
+import org.junit.Before;
+import org.junit.Test;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.LinkedList;
+
+/**
+ * White-box unit tests for {@link TimeZoneDetectorStrategyImpl}.
+ */
+public class TimeZoneDetectorStrategyImplTest {
+
+    /** A time zone used for initialization that does not occur elsewhere in tests. */
+    private static final String ARBITRARY_TIME_ZONE_ID = "Etc/UTC";
+    private static final int SLOT_INDEX1 = 10000;
+    private static final int SLOT_INDEX2 = 20000;
+
+    // Suggestion test cases are ordered so that each successive one is of the same or higher score
+    // than the previous.
+    private static final SuggestionTestCase[] TEST_CASES = new SuggestionTestCase[] {
+            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
+                    QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, TELEPHONY_SCORE_LOW),
+            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET,
+                    TELEPHONY_SCORE_MEDIUM),
+            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET,
+                    QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, TELEPHONY_SCORE_MEDIUM),
+            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_SINGLE_ZONE, TELEPHONY_SCORE_HIGH),
+            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
+                    TELEPHONY_SCORE_HIGH),
+            newTestCase(MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY,
+                    QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, TELEPHONY_SCORE_HIGHEST),
+            newTestCase(MATCH_TYPE_EMULATOR_ZONE_ID, QUALITY_SINGLE_ZONE, TELEPHONY_SCORE_HIGHEST),
+    };
+
+    private TimeZoneDetectorStrategyImpl mTimeZoneDetectorStrategy;
+    private FakeTimeZoneDetectorStrategyCallback mFakeTimeZoneDetectorStrategyCallback;
+
+    @Before
+    public void setUp() {
+        mFakeTimeZoneDetectorStrategyCallback = new FakeTimeZoneDetectorStrategyCallback();
+        mTimeZoneDetectorStrategy =
+                new TimeZoneDetectorStrategyImpl(mFakeTimeZoneDetectorStrategyCallback);
+    }
+
+    @Test
+    public void testEmptyTelephonySuggestions() {
+        TelephonyTimeZoneSuggestion slotIndex1TimeZoneSuggestion =
+                createEmptySlotIndex1Suggestion();
+        TelephonyTimeZoneSuggestion slotIndex2TimeZoneSuggestion =
+                createEmptySlotIndex2Suggestion();
+        Script script = new Script()
+                .initializeAutoTimeZoneDetection(true)
+                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+        script.suggestTelephonyTimeZone(slotIndex1TimeZoneSuggestion)
+                .verifyTimeZoneNotSet();
+
+        // Assert internal service state.
+        QualifiedTelephonyTimeZoneSuggestion expectedSlotIndex1ScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(slotIndex1TimeZoneSuggestion,
+                        TELEPHONY_SCORE_NONE);
+        assertEquals(expectedSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+        assertNull(mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+        assertEquals(expectedSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+        script.suggestTelephonyTimeZone(slotIndex2TimeZoneSuggestion)
+                .verifyTimeZoneNotSet();
+
+        // Assert internal service state.
+        QualifiedTelephonyTimeZoneSuggestion expectedSlotIndex2ScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(slotIndex2TimeZoneSuggestion,
+                        TELEPHONY_SCORE_NONE);
+        assertEquals(expectedSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+        assertEquals(expectedSlotIndex2ScoredSuggestion,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+        // SlotIndex1 should always beat slotIndex2, all other things being equal.
+        assertEquals(expectedSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+    }
+
+    @Test
+    public void testFirstPlausibleTelephonySuggestionAcceptedWhenTimeZoneUninitialized() {
+        SuggestionTestCase testCase = newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
+                QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, TELEPHONY_SCORE_LOW);
+        TelephonyTimeZoneSuggestion lowQualitySuggestion =
+                testCase.createSuggestion(SLOT_INDEX1, "America/New_York");
+
+        // The device time zone setting is left uninitialized.
+        Script script = new Script()
+                .initializeAutoTimeZoneDetection(true);
+
+        // The very first suggestion will be taken.
+        script.suggestTelephonyTimeZone(lowQualitySuggestion)
+                .verifyTimeZoneSetAndReset(lowQualitySuggestion);
+
+        // Assert internal service state.
+        QualifiedTelephonyTimeZoneSuggestion expectedScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(
+                        lowQualitySuggestion, testCase.expectedScore);
+        assertEquals(expectedScoredSuggestion,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+        assertEquals(expectedScoredSuggestion,
+                mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+        // Another low quality suggestion will be ignored now that the setting is initialized.
+        TelephonyTimeZoneSuggestion lowQualitySuggestion2 =
+                testCase.createSuggestion(SLOT_INDEX1, "America/Los_Angeles");
+        script.suggestTelephonyTimeZone(lowQualitySuggestion2)
+                .verifyTimeZoneNotSet();
+
+        // Assert internal service state.
+        QualifiedTelephonyTimeZoneSuggestion expectedScoredSuggestion2 =
+                new QualifiedTelephonyTimeZoneSuggestion(
+                        lowQualitySuggestion2, testCase.expectedScore);
+        assertEquals(expectedScoredSuggestion2,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+        assertEquals(expectedScoredSuggestion2,
+                mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+    }
+
+    /**
+     * Confirms that toggling the auto time zone detection setting has the expected behavior when
+     * the strategy is "opinionated".
+     */
+    @Test
+    public void testTogglingAutoTimeZoneDetection() {
+        Script script = new Script();
+
+        for (SuggestionTestCase testCase : TEST_CASES) {
+            // Start with the device in a known state.
+            script.initializeAutoTimeZoneDetection(false)
+                    .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+            TelephonyTimeZoneSuggestion suggestion =
+                    testCase.createSuggestion(SLOT_INDEX1, "Europe/London");
+            script.suggestTelephonyTimeZone(suggestion);
+
+            // When time zone detection is not enabled, the time zone suggestion will not be set
+            // regardless of the score.
+            script.verifyTimeZoneNotSet();
+
+            // Assert internal service state.
+            QualifiedTelephonyTimeZoneSuggestion expectedScoredSuggestion =
+                    new QualifiedTelephonyTimeZoneSuggestion(suggestion, testCase.expectedScore);
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+            // Toggling the time zone setting on should cause the device setting to be set.
+            script.autoTimeZoneDetectionEnabled(true);
+
+            // When time zone detection is already enabled the suggestion (if it scores highly
+            // enough) should be set immediately.
+            if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
+                script.verifyTimeZoneSetAndReset(suggestion);
+            } else {
+                script.verifyTimeZoneNotSet();
+            }
+
+            // Assert internal service state.
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+            // Toggling the time zone setting should off should do nothing.
+            script.autoTimeZoneDetectionEnabled(false)
+                    .verifyTimeZoneNotSet();
+
+            // Assert internal service state.
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+        }
+    }
+
+    @Test
+    public void testTelephonySuggestionsSingleSlotId() {
+        Script script = new Script()
+                .initializeAutoTimeZoneDetection(true)
+                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
+
+        for (SuggestionTestCase testCase : TEST_CASES) {
+            makeSlotIndex1SuggestionAndCheckState(script, testCase);
+        }
+
+        /*
+         * This is the same test as above but the test cases are in
+         * reverse order of their expected score. New suggestions always replace previous ones:
+         * there's effectively no history and so ordering shouldn't make any difference.
+         */
+
+        // Each test case will have the same or lower score than the last.
+        ArrayList<SuggestionTestCase> descendingCasesByScore =
+                new ArrayList<>(Arrays.asList(TEST_CASES));
+        Collections.reverse(descendingCasesByScore);
+
+        for (SuggestionTestCase testCase : descendingCasesByScore) {
+            makeSlotIndex1SuggestionAndCheckState(script, testCase);
+        }
+    }
+
+    private void makeSlotIndex1SuggestionAndCheckState(Script script, SuggestionTestCase testCase) {
+        // Give the next suggestion a different zone from the currently set device time zone;
+        String currentZoneId = mFakeTimeZoneDetectorStrategyCallback.getDeviceTimeZone();
+        String suggestionZoneId =
+                "Europe/London".equals(currentZoneId) ? "Europe/Paris" : "Europe/London";
+        TelephonyTimeZoneSuggestion zoneSlotIndex1Suggestion =
+                testCase.createSuggestion(SLOT_INDEX1, suggestionZoneId);
+        QualifiedTelephonyTimeZoneSuggestion expectedZoneSlotIndex1ScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(
+                        zoneSlotIndex1Suggestion, testCase.expectedScore);
+
+        script.suggestTelephonyTimeZone(zoneSlotIndex1Suggestion);
+        if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
+            script.verifyTimeZoneSetAndReset(zoneSlotIndex1Suggestion);
+        } else {
+            script.verifyTimeZoneNotSet();
+        }
+
+        // Assert internal service state.
+        assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+        assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+    }
+
+    /**
+     * Tries a set of test cases to see if the slotIndex with the lowest numeric value is given
+     * preference. This test also confirms that the time zone setting would only be set if a
+     * suggestion is of sufficient quality.
+     */
+    @Test
+    public void testMultipleSlotIndexSuggestionScoringAndSlotIndexBias() {
+        String[] zoneIds = { "Europe/London", "Europe/Paris" };
+        TelephonyTimeZoneSuggestion emptySlotIndex1Suggestion = createEmptySlotIndex1Suggestion();
+        TelephonyTimeZoneSuggestion emptySlotIndex2Suggestion = createEmptySlotIndex2Suggestion();
+        QualifiedTelephonyTimeZoneSuggestion expectedEmptySlotIndex1ScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(emptySlotIndex1Suggestion,
+                        TELEPHONY_SCORE_NONE);
+        QualifiedTelephonyTimeZoneSuggestion expectedEmptySlotIndex2ScoredSuggestion =
+                new QualifiedTelephonyTimeZoneSuggestion(emptySlotIndex2Suggestion,
+                        TELEPHONY_SCORE_NONE);
+
+        Script script = new Script()
+                .initializeAutoTimeZoneDetection(true)
+                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+                // Initialize the latest suggestions as empty so we don't need to worry about nulls
+                // below for the first loop.
+                .suggestTelephonyTimeZone(emptySlotIndex1Suggestion)
+                .suggestTelephonyTimeZone(emptySlotIndex2Suggestion)
+                .resetState();
+
+        for (SuggestionTestCase testCase : TEST_CASES) {
+            TelephonyTimeZoneSuggestion zoneSlotIndex1Suggestion =
+                    testCase.createSuggestion(SLOT_INDEX1, zoneIds[0]);
+            TelephonyTimeZoneSuggestion zoneSlotIndex2Suggestion =
+                    testCase.createSuggestion(SLOT_INDEX2, zoneIds[1]);
+            QualifiedTelephonyTimeZoneSuggestion expectedZoneSlotIndex1ScoredSuggestion =
+                    new QualifiedTelephonyTimeZoneSuggestion(zoneSlotIndex1Suggestion,
+                            testCase.expectedScore);
+            QualifiedTelephonyTimeZoneSuggestion expectedZoneSlotIndex2ScoredSuggestion =
+                    new QualifiedTelephonyTimeZoneSuggestion(zoneSlotIndex2Suggestion,
+                            testCase.expectedScore);
+
+            // Start the test by making a suggestion for slotIndex1.
+            script.suggestTelephonyTimeZone(zoneSlotIndex1Suggestion);
+            if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
+                script.verifyTimeZoneSetAndReset(zoneSlotIndex1Suggestion);
+            } else {
+                script.verifyTimeZoneNotSet();
+            }
+
+            // Assert internal service state.
+            assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedEmptySlotIndex2ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+            assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+            // SlotIndex2 then makes an alternative suggestion with an identical score. SlotIndex1's
+            // suggestion should still "win" if it is above the required threshold.
+            script.suggestTelephonyTimeZone(zoneSlotIndex2Suggestion);
+            script.verifyTimeZoneNotSet();
+
+            // Assert internal service state.
+            assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedZoneSlotIndex2ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+            // SlotIndex1 should always beat slotIndex2, all other things being equal.
+            assertEquals(expectedZoneSlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+            // Withdrawing slotIndex1's suggestion should leave slotIndex2 as the new winner. Since
+            // the zoneId is different, the time zone setting should be updated if the score is high
+            // enough.
+            script.suggestTelephonyTimeZone(emptySlotIndex1Suggestion);
+            if (testCase.expectedScore >= TELEPHONY_SCORE_USAGE_THRESHOLD) {
+                script.verifyTimeZoneSetAndReset(zoneSlotIndex2Suggestion);
+            } else {
+                script.verifyTimeZoneNotSet();
+            }
+
+            // Assert internal service state.
+            assertEquals(expectedEmptySlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedZoneSlotIndex2ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+            assertEquals(expectedZoneSlotIndex2ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.findBestTelephonySuggestionForTests());
+
+            // Reset the state for the next loop.
+            script.suggestTelephonyTimeZone(emptySlotIndex2Suggestion)
+                    .verifyTimeZoneNotSet();
+            assertEquals(expectedEmptySlotIndex1ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX1));
+            assertEquals(expectedEmptySlotIndex2ScoredSuggestion,
+                    mTimeZoneDetectorStrategy.getLatestTelephonySuggestion(SLOT_INDEX2));
+        }
+    }
+
+    /**
+     * The {@link TimeZoneDetectorStrategyImpl.Callback} is left to detect whether changing the time
+     * zone is actually necessary. This test proves that the service doesn't assume it knows the
+     * current setting.
+     */
+    @Test
+    public void testTimeZoneDetectorStrategyDoesNotAssumeCurrentSetting() {
+        Script script = new Script()
+                .initializeAutoTimeZoneDetection(true);
+
+        SuggestionTestCase testCase =
+                newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
+                        TELEPHONY_SCORE_HIGH);
+        TelephonyTimeZoneSuggestion losAngelesSuggestion =
+                testCase.createSuggestion(SLOT_INDEX1, "America/Los_Angeles");
+        TelephonyTimeZoneSuggestion newYorkSuggestion =
+                testCase.createSuggestion(SLOT_INDEX1, "America/New_York");
+
+        // Initialization.
+        script.suggestTelephonyTimeZone(losAngelesSuggestion)
+                .verifyTimeZoneSetAndReset(losAngelesSuggestion);
+        // Suggest it again - it should not be set because it is already set.
+        script.suggestTelephonyTimeZone(losAngelesSuggestion)
+                .verifyTimeZoneNotSet();
+
+        // Toggling time zone detection should set the device time zone only if the current setting
+        // value is different from the most recent telephony suggestion.
+        script.autoTimeZoneDetectionEnabled(false)
+                .verifyTimeZoneNotSet()
+                .autoTimeZoneDetectionEnabled(true)
+                .verifyTimeZoneNotSet();
+
+        // Simulate a user turning auto detection off, a new suggestion being made while auto
+        // detection is off, and the user turning it on again.
+        script.autoTimeZoneDetectionEnabled(false)
+                .suggestTelephonyTimeZone(newYorkSuggestion)
+                .verifyTimeZoneNotSet();
+        // Latest suggestion should be used.
+        script.autoTimeZoneDetectionEnabled(true)
+                .verifyTimeZoneSetAndReset(newYorkSuggestion);
+    }
+
+    @Test
+    public void testManualSuggestion_autoTimeZoneDetectionEnabled() {
+        Script script = new Script()
+                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+                .initializeAutoTimeZoneDetection(true);
+
+        // Auto time zone detection is enabled so the manual suggestion should be ignored.
+        script.suggestManualTimeZone(createManualSuggestion("Europe/Paris"))
+            .verifyTimeZoneNotSet();
+    }
+
+
+    @Test
+    public void testManualSuggestion_autoTimeZoneDetectionDisabled() {
+        Script script = new Script()
+                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
+                .initializeAutoTimeZoneDetection(false);
+
+        // Auto time zone detection is disabled so the manual suggestion should be used.
+        ManualTimeZoneSuggestion manualSuggestion = createManualSuggestion("Europe/Paris");
+        script.suggestManualTimeZone(manualSuggestion)
+            .verifyTimeZoneSetAndReset(manualSuggestion);
+    }
+
+    private ManualTimeZoneSuggestion createManualSuggestion(String zoneId) {
+        return new ManualTimeZoneSuggestion(zoneId);
+    }
+
+    private static TelephonyTimeZoneSuggestion createEmptySlotIndex1Suggestion() {
+        return new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX1).build();
+    }
+
+    private static TelephonyTimeZoneSuggestion createEmptySlotIndex2Suggestion() {
+        return new TelephonyTimeZoneSuggestion.Builder(SLOT_INDEX2).build();
+    }
+
+    static class FakeTimeZoneDetectorStrategyCallback
+            implements TimeZoneDetectorStrategyImpl.Callback {
+
+        private boolean mAutoTimeZoneDetectionEnabled;
+        private TestState<String> mTimeZoneId = new TestState<>();
+
+        @Override
+        public boolean isAutoTimeZoneDetectionEnabled() {
+            return mAutoTimeZoneDetectionEnabled;
+        }
+
+        @Override
+        public boolean isDeviceTimeZoneInitialized() {
+            return mTimeZoneId.getLatest() != null;
+        }
+
+        @Override
+        public String getDeviceTimeZone() {
+            return mTimeZoneId.getLatest();
+        }
+
+        @Override
+        public void setDeviceTimeZone(String zoneId) {
+            mTimeZoneId.set(zoneId);
+        }
+
+        void initializeAutoTimeZoneDetection(boolean enabled) {
+            mAutoTimeZoneDetectionEnabled = enabled;
+        }
+
+        void initializeTimeZone(String zoneId) {
+            mTimeZoneId.init(zoneId);
+        }
+
+        void setAutoTimeZoneDetectionEnabled(boolean enabled) {
+            mAutoTimeZoneDetectionEnabled = enabled;
+        }
+
+        void assertTimeZoneNotSet() {
+            mTimeZoneId.assertHasNotBeenSet();
+        }
+
+        void assertTimeZoneSet(String timeZoneId) {
+            mTimeZoneId.assertHasBeenSet();
+            mTimeZoneId.assertChangeCount(1);
+            mTimeZoneId.assertLatestEquals(timeZoneId);
+        }
+
+        void commitAllChanges() {
+            mTimeZoneId.commitLatest();
+        }
+    }
+
+    /** Some piece of state that tests want to track. */
+    private static class TestState<T> {
+        private T mInitialValue;
+        private LinkedList<T> mValues = new LinkedList<>();
+
+        void init(T value) {
+            mValues.clear();
+            mInitialValue = value;
+        }
+
+        void set(T value) {
+            mValues.addFirst(value);
+        }
+
+        boolean hasBeenSet() {
+            return mValues.size() > 0;
+        }
+
+        void assertHasNotBeenSet() {
+            assertFalse(hasBeenSet());
+        }
+
+        void assertHasBeenSet() {
+            assertTrue(hasBeenSet());
+        }
+
+        void commitLatest() {
+            if (hasBeenSet()) {
+                mInitialValue = mValues.getLast();
+                mValues.clear();
+            }
+        }
+
+        void assertLatestEquals(T expected) {
+            assertEquals(expected, getLatest());
+        }
+
+        void assertChangeCount(int expectedCount) {
+            assertEquals(expectedCount, mValues.size());
+        }
+
+        public T getLatest() {
+            if (hasBeenSet()) {
+                return mValues.getFirst();
+            }
+            return mInitialValue;
+        }
+    }
+
+    /**
+     * A "fluent" class allows reuse of code in tests: initialization, simulation and verification
+     * logic.
+     */
+    private class Script {
+
+        Script initializeAutoTimeZoneDetection(boolean enabled) {
+            mFakeTimeZoneDetectorStrategyCallback.initializeAutoTimeZoneDetection(enabled);
+            return this;
+        }
+
+        Script initializeTimeZoneSetting(String zoneId) {
+            mFakeTimeZoneDetectorStrategyCallback.initializeTimeZone(zoneId);
+            return this;
+        }
+
+        Script autoTimeZoneDetectionEnabled(boolean enabled) {
+            mFakeTimeZoneDetectorStrategyCallback.setAutoTimeZoneDetectionEnabled(enabled);
+            mTimeZoneDetectorStrategy.handleAutoTimeZoneDetectionChanged();
+            return this;
+        }
+
+        /**
+         * Simulates the time zone detection strategy receiving a telephony-originated suggestion.
+         */
+        Script suggestTelephonyTimeZone(TelephonyTimeZoneSuggestion timeZoneSuggestion) {
+            mTimeZoneDetectorStrategy.suggestTelephonyTimeZone(timeZoneSuggestion);
+            return this;
+        }
+
+        /** Simulates the time zone detection strategy receiving a user-originated suggestion. */
+        Script suggestManualTimeZone(ManualTimeZoneSuggestion manualTimeZoneSuggestion) {
+            mTimeZoneDetectorStrategy.suggestManualTimeZone(manualTimeZoneSuggestion);
+            return this;
+        }
+
+        Script verifyTimeZoneNotSet() {
+            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneNotSet();
+            return this;
+        }
+
+        Script verifyTimeZoneSetAndReset(TelephonyTimeZoneSuggestion suggestion) {
+            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(suggestion.getZoneId());
+            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+            return this;
+        }
+
+        Script verifyTimeZoneSetAndReset(ManualTimeZoneSuggestion suggestion) {
+            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(suggestion.getZoneId());
+            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+            return this;
+        }
+
+        Script resetState() {
+            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
+            return this;
+        }
+    }
+
+    private static class SuggestionTestCase {
+        public final int matchType;
+        public final int quality;
+        public final int expectedScore;
+
+        SuggestionTestCase(int matchType, int quality, int expectedScore) {
+            this.matchType = matchType;
+            this.quality = quality;
+            this.expectedScore = expectedScore;
+        }
+
+        private TelephonyTimeZoneSuggestion createSuggestion(int slotIndex, String zoneId) {
+            return new TelephonyTimeZoneSuggestion.Builder(slotIndex)
+                    .setZoneId(zoneId)
+                    .setMatchType(matchType)
+                    .setQuality(quality)
+                    .build();
+        }
+    }
+
+    private static SuggestionTestCase newTestCase(
+            @MatchType int matchType, @Quality int quality, int expectedScore) {
+        return new SuggestionTestCase(matchType, quality, expectedScore);
+    }
+}
diff --git a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java b/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java
deleted file mode 100644
index 2429cfc..0000000
--- a/services/tests/servicestests/src/com/android/server/timezonedetector/TimeZoneDetectorStrategyTest.java
+++ /dev/null
@@ -1,626 +0,0 @@
-/*
- * Copyright 2019 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.timezonedetector;
-
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_EMULATOR_ZONE_ID;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_NETWORK_COUNTRY_ONLY;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET;
-import static android.app.timezonedetector.PhoneTimeZoneSuggestion.QUALITY_SINGLE_ZONE;
-
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_HIGH;
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_HIGHEST;
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_LOW;
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_MEDIUM;
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_NONE;
-import static com.android.server.timezonedetector.TimeZoneDetectorStrategy.PHONE_SCORE_USAGE_THRESHOLD;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-
-import android.app.timezonedetector.ManualTimeZoneSuggestion;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion.MatchType;
-import android.app.timezonedetector.PhoneTimeZoneSuggestion.Quality;
-
-import com.android.server.timezonedetector.TimeZoneDetectorStrategy.QualifiedPhoneTimeZoneSuggestion;
-
-import org.junit.Before;
-import org.junit.Test;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.LinkedList;
-
-/**
- * White-box unit tests for {@link TimeZoneDetectorStrategy}.
- */
-public class TimeZoneDetectorStrategyTest {
-
-    /** A time zone used for initialization that does not occur elsewhere in tests. */
-    private static final String ARBITRARY_TIME_ZONE_ID = "Etc/UTC";
-    private static final int PHONE1_ID = 10000;
-    private static final int PHONE2_ID = 20000;
-
-    // Suggestion test cases are ordered so that each successive one is of the same or higher score
-    // than the previous.
-    private static final SuggestionTestCase[] TEST_CASES = new SuggestionTestCase[] {
-            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
-                    QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, PHONE_SCORE_LOW),
-            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET,
-                    PHONE_SCORE_MEDIUM),
-            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET,
-                    QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, PHONE_SCORE_MEDIUM),
-            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY, QUALITY_SINGLE_ZONE, PHONE_SCORE_HIGH),
-            newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
-                    PHONE_SCORE_HIGH),
-            newTestCase(MATCH_TYPE_TEST_NETWORK_OFFSET_ONLY,
-                    QUALITY_MULTIPLE_ZONES_WITH_SAME_OFFSET, PHONE_SCORE_HIGHEST),
-            newTestCase(MATCH_TYPE_EMULATOR_ZONE_ID, QUALITY_SINGLE_ZONE, PHONE_SCORE_HIGHEST),
-    };
-
-    private TimeZoneDetectorStrategy mTimeZoneDetectorStrategy;
-    private FakeTimeZoneDetectorStrategyCallback mFakeTimeZoneDetectorStrategyCallback;
-
-    @Before
-    public void setUp() {
-        mFakeTimeZoneDetectorStrategyCallback = new FakeTimeZoneDetectorStrategyCallback();
-        mTimeZoneDetectorStrategy =
-                new TimeZoneDetectorStrategy(mFakeTimeZoneDetectorStrategyCallback);
-    }
-
-    @Test
-    public void testEmptyPhoneSuggestions() {
-        PhoneTimeZoneSuggestion phone1TimeZoneSuggestion = createEmptyPhone1Suggestion();
-        PhoneTimeZoneSuggestion phone2TimeZoneSuggestion = createEmptyPhone2Suggestion();
-        Script script = new Script()
-                .initializeAutoTimeZoneDetection(true)
-                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
-
-        script.suggestPhoneTimeZone(phone1TimeZoneSuggestion)
-                .verifyTimeZoneNotSet();
-
-        // Assert internal service state.
-        QualifiedPhoneTimeZoneSuggestion expectedPhone1ScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(phone1TimeZoneSuggestion, PHONE_SCORE_NONE);
-        assertEquals(expectedPhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-        assertNull(mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-        assertEquals(expectedPhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-        script.suggestPhoneTimeZone(phone2TimeZoneSuggestion)
-                .verifyTimeZoneNotSet();
-
-        // Assert internal service state.
-        QualifiedPhoneTimeZoneSuggestion expectedPhone2ScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(phone2TimeZoneSuggestion, PHONE_SCORE_NONE);
-        assertEquals(expectedPhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-        assertEquals(expectedPhone2ScoredSuggestion,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-        // Phone 1 should always beat phone 2, all other things being equal.
-        assertEquals(expectedPhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-    }
-
-    @Test
-    public void testFirstPlausiblePhoneSuggestionAcceptedWhenTimeZoneUninitialized() {
-        SuggestionTestCase testCase = newTestCase(MATCH_TYPE_NETWORK_COUNTRY_ONLY,
-                QUALITY_MULTIPLE_ZONES_WITH_DIFFERENT_OFFSETS, PHONE_SCORE_LOW);
-        PhoneTimeZoneSuggestion lowQualitySuggestion =
-                testCase.createSuggestion(PHONE1_ID, "America/New_York");
-
-        // The device time zone setting is left uninitialized.
-        Script script = new Script()
-                .initializeAutoTimeZoneDetection(true);
-
-        // The very first suggestion will be taken.
-        script.suggestPhoneTimeZone(lowQualitySuggestion)
-                .verifyTimeZoneSetAndReset(lowQualitySuggestion);
-
-        // Assert internal service state.
-        QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(lowQualitySuggestion, testCase.expectedScore);
-        assertEquals(expectedScoredSuggestion,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-        assertEquals(expectedScoredSuggestion,
-                mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-        // Another low quality suggestion will be ignored now that the setting is initialized.
-        PhoneTimeZoneSuggestion lowQualitySuggestion2 =
-                testCase.createSuggestion(PHONE1_ID, "America/Los_Angeles");
-        script.suggestPhoneTimeZone(lowQualitySuggestion2)
-                .verifyTimeZoneNotSet();
-
-        // Assert internal service state.
-        QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion2 =
-                new QualifiedPhoneTimeZoneSuggestion(lowQualitySuggestion2, testCase.expectedScore);
-        assertEquals(expectedScoredSuggestion2,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-        assertEquals(expectedScoredSuggestion2,
-                mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-    }
-
-    /**
-     * Confirms that toggling the auto time zone detection setting has the expected behavior when
-     * the strategy is "opinionated".
-     */
-    @Test
-    public void testTogglingAutoTimeZoneDetection() {
-        Script script = new Script();
-
-        for (SuggestionTestCase testCase : TEST_CASES) {
-            // Start with the device in a known state.
-            script.initializeAutoTimeZoneDetection(false)
-                    .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
-
-            PhoneTimeZoneSuggestion suggestion =
-                    testCase.createSuggestion(PHONE1_ID, "Europe/London");
-            script.suggestPhoneTimeZone(suggestion);
-
-            // When time zone detection is not enabled, the time zone suggestion will not be set
-            // regardless of the score.
-            script.verifyTimeZoneNotSet();
-
-            // Assert internal service state.
-            QualifiedPhoneTimeZoneSuggestion expectedScoredSuggestion =
-                    new QualifiedPhoneTimeZoneSuggestion(suggestion, testCase.expectedScore);
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-            // Toggling the time zone setting on should cause the device setting to be set.
-            script.autoTimeZoneDetectionEnabled(true);
-
-            // When time zone detection is already enabled the suggestion (if it scores highly
-            // enough) should be set immediately.
-            if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
-                script.verifyTimeZoneSetAndReset(suggestion);
-            } else {
-                script.verifyTimeZoneNotSet();
-            }
-
-            // Assert internal service state.
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-            // Toggling the time zone setting should off should do nothing.
-            script.autoTimeZoneDetectionEnabled(false)
-                    .verifyTimeZoneNotSet();
-
-            // Assert internal service state.
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-        }
-    }
-
-    @Test
-    public void testPhoneSuggestionsSinglePhone() {
-        Script script = new Script()
-                .initializeAutoTimeZoneDetection(true)
-                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID);
-
-        for (SuggestionTestCase testCase : TEST_CASES) {
-            makePhone1SuggestionAndCheckState(script, testCase);
-        }
-
-        /*
-         * This is the same test as above but the test cases are in
-         * reverse order of their expected score. New suggestions always replace previous ones:
-         * there's effectively no history and so ordering shouldn't make any difference.
-         */
-
-        // Each test case will have the same or lower score than the last.
-        ArrayList<SuggestionTestCase> descendingCasesByScore =
-                new ArrayList<>(Arrays.asList(TEST_CASES));
-        Collections.reverse(descendingCasesByScore);
-
-        for (SuggestionTestCase testCase : descendingCasesByScore) {
-            makePhone1SuggestionAndCheckState(script, testCase);
-        }
-    }
-
-    private void makePhone1SuggestionAndCheckState(Script script, SuggestionTestCase testCase) {
-        // Give the next suggestion a different zone from the currently set device time zone;
-        String currentZoneId = mFakeTimeZoneDetectorStrategyCallback.getDeviceTimeZone();
-        String suggestionZoneId =
-                "Europe/London".equals(currentZoneId) ? "Europe/Paris" : "Europe/London";
-        PhoneTimeZoneSuggestion zonePhone1Suggestion =
-                testCase.createSuggestion(PHONE1_ID, suggestionZoneId);
-        QualifiedPhoneTimeZoneSuggestion expectedZonePhone1ScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(zonePhone1Suggestion, testCase.expectedScore);
-
-        script.suggestPhoneTimeZone(zonePhone1Suggestion);
-        if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
-            script.verifyTimeZoneSetAndReset(zonePhone1Suggestion);
-        } else {
-            script.verifyTimeZoneNotSet();
-        }
-
-        // Assert internal service state.
-        assertEquals(expectedZonePhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-        assertEquals(expectedZonePhone1ScoredSuggestion,
-                mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-    }
-
-    /**
-     * Tries a set of test cases to see if the phone with the lowest ID is given preference. This
-     * test also confirms that the time zone setting would only be set if a suggestion is of
-     * sufficient quality.
-     */
-    @Test
-    public void testMultiplePhoneSuggestionScoringAndPhoneIdBias() {
-        String[] zoneIds = { "Europe/London", "Europe/Paris" };
-        PhoneTimeZoneSuggestion emptyPhone1Suggestion = createEmptyPhone1Suggestion();
-        PhoneTimeZoneSuggestion emptyPhone2Suggestion = createEmptyPhone2Suggestion();
-        QualifiedPhoneTimeZoneSuggestion expectedEmptyPhone1ScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(emptyPhone1Suggestion, PHONE_SCORE_NONE);
-        QualifiedPhoneTimeZoneSuggestion expectedEmptyPhone2ScoredSuggestion =
-                new QualifiedPhoneTimeZoneSuggestion(emptyPhone2Suggestion, PHONE_SCORE_NONE);
-
-        Script script = new Script()
-                .initializeAutoTimeZoneDetection(true)
-                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
-                // Initialize the latest suggestions as empty so we don't need to worry about nulls
-                // below for the first loop.
-                .suggestPhoneTimeZone(emptyPhone1Suggestion)
-                .suggestPhoneTimeZone(emptyPhone2Suggestion)
-                .resetState();
-
-        for (SuggestionTestCase testCase : TEST_CASES) {
-            PhoneTimeZoneSuggestion zonePhone1Suggestion =
-                    testCase.createSuggestion(PHONE1_ID, zoneIds[0]);
-            PhoneTimeZoneSuggestion zonePhone2Suggestion =
-                    testCase.createSuggestion(PHONE2_ID, zoneIds[1]);
-            QualifiedPhoneTimeZoneSuggestion expectedZonePhone1ScoredSuggestion =
-                    new QualifiedPhoneTimeZoneSuggestion(zonePhone1Suggestion,
-                            testCase.expectedScore);
-            QualifiedPhoneTimeZoneSuggestion expectedZonePhone2ScoredSuggestion =
-                    new QualifiedPhoneTimeZoneSuggestion(zonePhone2Suggestion,
-                            testCase.expectedScore);
-
-            // Start the test by making a suggestion for phone 1.
-            script.suggestPhoneTimeZone(zonePhone1Suggestion);
-            if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
-                script.verifyTimeZoneSetAndReset(zonePhone1Suggestion);
-            } else {
-                script.verifyTimeZoneNotSet();
-            }
-
-            // Assert internal service state.
-            assertEquals(expectedZonePhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedEmptyPhone2ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-            assertEquals(expectedZonePhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-            // Phone 2 then makes an alternative suggestion with an identical score. Phone 1's
-            // suggestion should still "win" if it is above the required threshold.
-            script.suggestPhoneTimeZone(zonePhone2Suggestion);
-            script.verifyTimeZoneNotSet();
-
-            // Assert internal service state.
-            assertEquals(expectedZonePhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedZonePhone2ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-            // Phone 1 should always beat phone 2, all other things being equal.
-            assertEquals(expectedZonePhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-            // Withdrawing phone 1's suggestion should leave phone 2 as the new winner. Since the
-            // zoneId is different, the time zone setting should be updated if the score is high
-            // enough.
-            script.suggestPhoneTimeZone(emptyPhone1Suggestion);
-            if (testCase.expectedScore >= PHONE_SCORE_USAGE_THRESHOLD) {
-                script.verifyTimeZoneSetAndReset(zonePhone2Suggestion);
-            } else {
-                script.verifyTimeZoneNotSet();
-            }
-
-            // Assert internal service state.
-            assertEquals(expectedEmptyPhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedZonePhone2ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-            assertEquals(expectedZonePhone2ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.findBestPhoneSuggestionForTests());
-
-            // Reset the state for the next loop.
-            script.suggestPhoneTimeZone(emptyPhone2Suggestion)
-                    .verifyTimeZoneNotSet();
-            assertEquals(expectedEmptyPhone1ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE1_ID));
-            assertEquals(expectedEmptyPhone2ScoredSuggestion,
-                    mTimeZoneDetectorStrategy.getLatestPhoneSuggestion(PHONE2_ID));
-        }
-    }
-
-    /**
-     * The {@link TimeZoneDetectorStrategy.Callback} is left to detect whether changing the time
-     * zone is actually necessary. This test proves that the service doesn't assume it knows the
-     * current setting.
-     */
-    @Test
-    public void testTimeZoneDetectorStrategyDoesNotAssumeCurrentSetting() {
-        Script script = new Script()
-                .initializeAutoTimeZoneDetection(true);
-
-        SuggestionTestCase testCase =
-                newTestCase(MATCH_TYPE_NETWORK_COUNTRY_AND_OFFSET, QUALITY_SINGLE_ZONE,
-                        PHONE_SCORE_HIGH);
-        PhoneTimeZoneSuggestion losAngelesSuggestion =
-                testCase.createSuggestion(PHONE1_ID, "America/Los_Angeles");
-        PhoneTimeZoneSuggestion newYorkSuggestion =
-                testCase.createSuggestion(PHONE1_ID, "America/New_York");
-
-        // Initialization.
-        script.suggestPhoneTimeZone(losAngelesSuggestion)
-                .verifyTimeZoneSetAndReset(losAngelesSuggestion);
-        // Suggest it again - it should not be set because it is already set.
-        script.suggestPhoneTimeZone(losAngelesSuggestion)
-                .verifyTimeZoneNotSet();
-
-        // Toggling time zone detection should set the device time zone only if the current setting
-        // value is different from the most recent phone suggestion.
-        script.autoTimeZoneDetectionEnabled(false)
-                .verifyTimeZoneNotSet()
-                .autoTimeZoneDetectionEnabled(true)
-                .verifyTimeZoneNotSet();
-
-        // Simulate a user turning auto detection off, a new suggestion being made while auto
-        // detection is off, and the user turning it on again.
-        script.autoTimeZoneDetectionEnabled(false)
-                .suggestPhoneTimeZone(newYorkSuggestion)
-                .verifyTimeZoneNotSet();
-        // Latest suggestion should be used.
-        script.autoTimeZoneDetectionEnabled(true)
-                .verifyTimeZoneSetAndReset(newYorkSuggestion);
-    }
-
-    @Test
-    public void testManualSuggestion_autoTimeZoneDetectionEnabled() {
-        Script script = new Script()
-                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
-                .initializeAutoTimeZoneDetection(true);
-
-        // Auto time zone detection is enabled so the manual suggestion should be ignored.
-        script.suggestManualTimeZone(createManualSuggestion("Europe/Paris"))
-            .verifyTimeZoneNotSet();
-    }
-
-
-    @Test
-    public void testManualSuggestion_autoTimeZoneDetectionDisabled() {
-        Script script = new Script()
-                .initializeTimeZoneSetting(ARBITRARY_TIME_ZONE_ID)
-                .initializeAutoTimeZoneDetection(false);
-
-        // Auto time zone detection is disabled so the manual suggestion should be used.
-        ManualTimeZoneSuggestion manualSuggestion = createManualSuggestion("Europe/Paris");
-        script.suggestManualTimeZone(manualSuggestion)
-            .verifyTimeZoneSetAndReset(manualSuggestion);
-    }
-
-    private ManualTimeZoneSuggestion createManualSuggestion(String zoneId) {
-        return new ManualTimeZoneSuggestion(zoneId);
-    }
-
-    private static PhoneTimeZoneSuggestion createEmptyPhone1Suggestion() {
-        return new PhoneTimeZoneSuggestion.Builder(PHONE1_ID).build();
-    }
-
-    private static PhoneTimeZoneSuggestion createEmptyPhone2Suggestion() {
-        return new PhoneTimeZoneSuggestion.Builder(PHONE2_ID).build();
-    }
-
-    static class FakeTimeZoneDetectorStrategyCallback implements TimeZoneDetectorStrategy.Callback {
-
-        private boolean mAutoTimeZoneDetectionEnabled;
-        private TestState<String> mTimeZoneId = new TestState<>();
-
-        @Override
-        public boolean isAutoTimeZoneDetectionEnabled() {
-            return mAutoTimeZoneDetectionEnabled;
-        }
-
-        @Override
-        public boolean isDeviceTimeZoneInitialized() {
-            return mTimeZoneId.getLatest() != null;
-        }
-
-        @Override
-        public String getDeviceTimeZone() {
-            return mTimeZoneId.getLatest();
-        }
-
-        @Override
-        public void setDeviceTimeZone(String zoneId) {
-            mTimeZoneId.set(zoneId);
-        }
-
-        void initializeAutoTimeZoneDetection(boolean enabled) {
-            mAutoTimeZoneDetectionEnabled = enabled;
-        }
-
-        void initializeTimeZone(String zoneId) {
-            mTimeZoneId.init(zoneId);
-        }
-
-        void setAutoTimeZoneDetectionEnabled(boolean enabled) {
-            mAutoTimeZoneDetectionEnabled = enabled;
-        }
-
-        void assertTimeZoneNotSet() {
-            mTimeZoneId.assertHasNotBeenSet();
-        }
-
-        void assertTimeZoneSet(String timeZoneId) {
-            mTimeZoneId.assertHasBeenSet();
-            mTimeZoneId.assertChangeCount(1);
-            mTimeZoneId.assertLatestEquals(timeZoneId);
-        }
-
-        void commitAllChanges() {
-            mTimeZoneId.commitLatest();
-        }
-    }
-
-    /** Some piece of state that tests want to track. */
-    private static class TestState<T> {
-        private T mInitialValue;
-        private LinkedList<T> mValues = new LinkedList<>();
-
-        void init(T value) {
-            mValues.clear();
-            mInitialValue = value;
-        }
-
-        void set(T value) {
-            mValues.addFirst(value);
-        }
-
-        boolean hasBeenSet() {
-            return mValues.size() > 0;
-        }
-
-        void assertHasNotBeenSet() {
-            assertFalse(hasBeenSet());
-        }
-
-        void assertHasBeenSet() {
-            assertTrue(hasBeenSet());
-        }
-
-        void commitLatest() {
-            if (hasBeenSet()) {
-                mInitialValue = mValues.getLast();
-                mValues.clear();
-            }
-        }
-
-        void assertLatestEquals(T expected) {
-            assertEquals(expected, getLatest());
-        }
-
-        void assertChangeCount(int expectedCount) {
-            assertEquals(expectedCount, mValues.size());
-        }
-
-        public T getLatest() {
-            if (hasBeenSet()) {
-                return mValues.getFirst();
-            }
-            return mInitialValue;
-        }
-    }
-
-    /**
-     * A "fluent" class allows reuse of code in tests: initialization, simulation and verification
-     * logic.
-     */
-    private class Script {
-
-        Script initializeAutoTimeZoneDetection(boolean enabled) {
-            mFakeTimeZoneDetectorStrategyCallback.initializeAutoTimeZoneDetection(enabled);
-            return this;
-        }
-
-        Script initializeTimeZoneSetting(String zoneId) {
-            mFakeTimeZoneDetectorStrategyCallback.initializeTimeZone(zoneId);
-            return this;
-        }
-
-        Script autoTimeZoneDetectionEnabled(boolean enabled) {
-            mFakeTimeZoneDetectorStrategyCallback.setAutoTimeZoneDetectionEnabled(enabled);
-            mTimeZoneDetectorStrategy.handleAutoTimeZoneDetectionChange();
-            return this;
-        }
-
-        /** Simulates the time zone detection strategy receiving a phone-originated suggestion. */
-        Script suggestPhoneTimeZone(PhoneTimeZoneSuggestion phoneTimeZoneSuggestion) {
-            mTimeZoneDetectorStrategy.suggestPhoneTimeZone(phoneTimeZoneSuggestion);
-            return this;
-        }
-
-        /** Simulates the time zone detection strategy receiving a user-originated suggestion. */
-        Script suggestManualTimeZone(ManualTimeZoneSuggestion manualTimeZoneSuggestion) {
-            mTimeZoneDetectorStrategy.suggestManualTimeZone(manualTimeZoneSuggestion);
-            return this;
-        }
-
-        Script verifyTimeZoneNotSet() {
-            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneNotSet();
-            return this;
-        }
-
-        Script verifyTimeZoneSetAndReset(PhoneTimeZoneSuggestion suggestion) {
-            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(suggestion.getZoneId());
-            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
-            return this;
-        }
-
-        Script verifyTimeZoneSetAndReset(ManualTimeZoneSuggestion suggestion) {
-            mFakeTimeZoneDetectorStrategyCallback.assertTimeZoneSet(suggestion.getZoneId());
-            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
-            return this;
-        }
-
-        Script resetState() {
-            mFakeTimeZoneDetectorStrategyCallback.commitAllChanges();
-            return this;
-        }
-    }
-
-    private static class SuggestionTestCase {
-        public final int matchType;
-        public final int quality;
-        public final int expectedScore;
-
-        SuggestionTestCase(int matchType, int quality, int expectedScore) {
-            this.matchType = matchType;
-            this.quality = quality;
-            this.expectedScore = expectedScore;
-        }
-
-        private PhoneTimeZoneSuggestion createSuggestion(int phoneId, String zoneId) {
-            return new PhoneTimeZoneSuggestion.Builder(phoneId)
-                    .setZoneId(zoneId)
-                    .setMatchType(matchType)
-                    .setQuality(quality)
-                    .build();
-        }
-    }
-
-    private static SuggestionTestCase newTestCase(
-            @MatchType int matchType, @Quality int quality, int expectedScore) {
-        return new SuggestionTestCase(matchType, quality, expectedScore);
-    }
-}
diff --git a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
index 03dc213..9e57763 100644
--- a/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
+++ b/services/tests/servicestests/src/com/android/server/usage/AppStandbyControllerTests.java
@@ -115,6 +115,7 @@
     private static final long WORKING_SET_THRESHOLD = 12 * HOUR_MS;
     private static final long FREQUENT_THRESHOLD = 24 * HOUR_MS;
     private static final long RARE_THRESHOLD = 48 * HOUR_MS;
+    private static final long RESTRICTED_THRESHOLD = 96 * HOUR_MS;
 
     /** Mock variable used in {@link MyInjector#isPackageInstalled(String, int, int)} */
     private static boolean isPackageInstalled = true;
@@ -144,6 +145,7 @@
     static class MyInjector extends AppStandbyController.Injector {
         long mElapsedRealtime;
         boolean mIsAppIdleEnabled = true;
+        boolean mIsCharging;
         List<String> mPowerSaveWhitelistExceptIdle = new ArrayList<>();
         boolean mDisplayOn;
         DisplayManager.DisplayListener mDisplayListener;
@@ -178,6 +180,11 @@
         }
 
         @Override
+        boolean isCharging() {
+            return mIsCharging;
+        }
+
+        @Override
         boolean isPowerSaveWhitelistExceptIdleApp(String packageName) throws RemoteException {
             return mPowerSaveWhitelistExceptIdle.contains(packageName);
         }
@@ -232,9 +239,8 @@
         @Override
         String getAppIdleSettings() {
             return "screen_thresholds=0/0/0/" + HOUR_MS + ",elapsed_thresholds=0/"
-                    + WORKING_SET_THRESHOLD + "/"
-                    + FREQUENT_THRESHOLD + "/"
-                    + RARE_THRESHOLD;
+                    + WORKING_SET_THRESHOLD + "/" + FREQUENT_THRESHOLD + "/" + RARE_THRESHOLD
+                    + "/" + RESTRICTED_THRESHOLD;
         }
 
         @Override
@@ -281,6 +287,13 @@
         } catch (PackageManager.NameNotFoundException nnfe) {}
     }
 
+    private void setChargingState(AppStandbyController controller, boolean charging) {
+        mInjector.mIsCharging = charging;
+        if (controller != null) {
+            controller.setChargingState(charging);
+        }
+    }
+
     private void setAppIdleEnabled(AppStandbyController controller, boolean enabled) {
         mInjector.mIsAppIdleEnabled = enabled;
         if (controller != null) {
@@ -297,6 +310,7 @@
         controller.onBootPhase(SystemService.PHASE_BOOT_COMPLETED);
         mInjector.setDisplayOn(false);
         mInjector.setDisplayOn(true);
+        setChargingState(controller, false);
         controller.checkIdleStates(USER_ID);
         assertNotEquals(STANDBY_BUCKET_EXEMPTED,
                 controller.getAppStandbyBucket(PACKAGE_1, USER_ID,
@@ -324,6 +338,46 @@
                         mInjector.mElapsedRealtime, false));
     }
 
+    @Test
+    public void testIsAppIdle_Charging() throws Exception {
+        setChargingState(mController, false);
+        mController.setAppStandbyBucket(PACKAGE_1, USER_ID, STANDBY_BUCKET_RARE,
+                REASON_MAIN_FORCED_BY_SYSTEM);
+        assertEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+
+        setChargingState(mController, true);
+        assertEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
+        assertFalse(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertFalse(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+
+        setChargingState(mController, false);
+        assertEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+    }
+
+    @Test
+    public void testIsAppIdle_Enabled() throws Exception {
+        setChargingState(mController, false);
+        setAppIdleEnabled(mController, true);
+        mController.setAppStandbyBucket(PACKAGE_1, USER_ID, STANDBY_BUCKET_RARE,
+                REASON_MAIN_FORCED_BY_SYSTEM);
+        assertEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+
+        setAppIdleEnabled(mController, false);
+        assertFalse(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertFalse(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+
+        setAppIdleEnabled(mController, true);
+        assertEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, 0));
+        assertTrue(mController.isAppIdleFiltered(PACKAGE_1, UID_1, USER_ID, false));
+    }
+
     private void assertTimeout(AppStandbyController controller, long elapsedTime, int bucket) {
         mInjector.mElapsedRealtime = elapsedTime;
         controller.checkIdleStates(USER_ID);
@@ -372,12 +426,15 @@
         // RARE bucket
         assertTimeout(mController, RARE_THRESHOLD + 1, STANDBY_BUCKET_RARE);
 
+        // RESTRICTED bucket
+        assertTimeout(mController, RESTRICTED_THRESHOLD + 1, STANDBY_BUCKET_RESTRICTED);
+
         reportEvent(mController, USER_INTERACTION, RARE_THRESHOLD + 1, PACKAGE_1);
 
         assertTimeout(mController, RARE_THRESHOLD + 1, STANDBY_BUCKET_ACTIVE);
 
-        // RARE bucket
-        assertTimeout(mController, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
+        // RESTRICTED bucket
+        assertTimeout(mController, RESTRICTED_THRESHOLD * 2 + 2, STANDBY_BUCKET_RESTRICTED);
     }
 
     @Test
@@ -437,7 +494,7 @@
         assertNotEquals(STANDBY_BUCKET_RARE, getStandbyBucket(mController, PACKAGE_1));
 
         mInjector.setDisplayOn(true);
-        assertTimeout(mController, RARE_THRESHOLD * 2 + 2, STANDBY_BUCKET_RARE);
+        assertTimeout(mController, RARE_THRESHOLD + 2 * HOUR_MS + 1, STANDBY_BUCKET_RARE);
     }
 
     @Test
@@ -642,7 +699,7 @@
         assertBucket(STANDBY_BUCKET_FREQUENT);
 
         // Way past prediction timeout, use system thresholds
-        mInjector.mElapsedRealtime = RARE_THRESHOLD * 4;
+        mInjector.mElapsedRealtime = RARE_THRESHOLD;
         mController.checkIdleStates(USER_ID);
         assertBucket(STANDBY_BUCKET_RARE);
     }
@@ -669,7 +726,7 @@
         assertBucket(STANDBY_BUCKET_RESTRICTED);
 
         // Way past all timeouts. Make sure timeout processing doesn't raise bucket.
-        mInjector.mElapsedRealtime += RARE_THRESHOLD * 4;
+        mInjector.mElapsedRealtime += RESTRICTED_THRESHOLD * 4;
         mController.checkIdleStates(USER_ID);
         assertBucket(STANDBY_BUCKET_RESTRICTED);
     }
@@ -682,7 +739,7 @@
         reportEvent(mController, USER_INTERACTION, 0, PACKAGE_1);
         assertBucket(STANDBY_BUCKET_ACTIVE);
 
-        mInjector.mElapsedRealtime += mInjector.getRestrictedBucketDelayMs() - 5000;
+        mInjector.mElapsedRealtime += mInjector.getAutoRestrictedBucketDelayMs() - 5000;
         mController.setAppStandbyBucket(PACKAGE_1, USER_ID, STANDBY_BUCKET_RESTRICTED,
                 REASON_MAIN_FORCED_BY_SYSTEM);
         // Bucket shouldn't change
@@ -696,6 +753,45 @@
         assertBucket(STANDBY_BUCKET_RESTRICTED);
     }
 
+    /**
+     * Test that an app is put into the RESTRICTED bucket after enough time has passed.
+     */
+    @Test
+    public void testRestrictedDelay_DelayChange() throws Exception {
+        reportEvent(mController, USER_INTERACTION, 0, PACKAGE_1);
+        assertBucket(STANDBY_BUCKET_ACTIVE);
+
+        mInjector.mAutoRestrictedBucketDelayMs = 2 * HOUR_MS;
+        mInjector.mElapsedRealtime += 2 * HOUR_MS - 5000;
+        mController.setAppStandbyBucket(PACKAGE_1, USER_ID, STANDBY_BUCKET_RESTRICTED,
+                REASON_MAIN_FORCED_BY_SYSTEM);
+        // Bucket shouldn't change
+        assertBucket(STANDBY_BUCKET_ACTIVE);
+
+        // bucketing works after timeout
+        mInjector.mElapsedRealtime += 6000;
+
+        Thread.sleep(6000);
+        // Enough time has passed. The app should automatically be put into the RESTRICTED bucket.
+        assertBucket(STANDBY_BUCKET_RESTRICTED);
+    }
+
+    @Test
+    public void testPredictionRaiseFromRestrictedTimeout() {
+        reportEvent(mController, USER_INTERACTION, mInjector.mElapsedRealtime, PACKAGE_1);
+
+        // Way past all timeouts. App times out into RESTRICTED bucket.
+        mInjector.mElapsedRealtime += RESTRICTED_THRESHOLD * 4;
+        mController.checkIdleStates(USER_ID);
+        assertBucket(STANDBY_BUCKET_RESTRICTED);
+
+        // Since the app timed out into RESTRICTED, prediction should be able to remove from the
+        // bucket.
+        mInjector.mElapsedRealtime += RESTRICTED_THRESHOLD;
+        mController.setAppStandbyBucket(PACKAGE_1, USER_ID, STANDBY_BUCKET_ACTIVE,
+                REASON_MAIN_PREDICTED);
+    }
+
     @Test
     public void testCascadingTimeouts() throws Exception {
         reportEvent(mController, USER_INTERACTION, 0, PACKAGE_1);
diff --git a/services/tests/servicestests/test-apps/AppIntegrityManagerServiceTestApp/AndroidManifest.xml b/services/tests/servicestests/test-apps/AppIntegrityManagerServiceTestApp/AndroidManifest.xml
index f5dbf43..98572d4 100644
--- a/services/tests/servicestests/test-apps/AppIntegrityManagerServiceTestApp/AndroidManifest.xml
+++ b/services/tests/servicestests/test-apps/AppIntegrityManagerServiceTestApp/AndroidManifest.xml
@@ -22,7 +22,7 @@
     <uses-sdk android:minSdkVersion="14" android:targetSdkVersion="28" />
 
     <application android:hasCode="false">
-        <meta-data android:name="allowed-installers" android:value="com.android.vending|play_store_cert,adb|"/>
+        <meta-data android:name="allowed-installers" android:value="com.android.vending|play_store_cert,adb"/>
     </application>
 </manifest>
 
diff --git a/services/tests/uiservicestests/Android.bp b/services/tests/uiservicestests/Android.bp
index f608bab..3f0cda3 100644
--- a/services/tests/uiservicestests/Android.bp
+++ b/services/tests/uiservicestests/Android.bp
@@ -47,7 +47,6 @@
         "libbacktrace",
         "libbase",
         "libbinder",
-        "libbinderthreadstate",
         "libc++",
         "libcutils",
         "liblog",
diff --git a/services/tests/uiservicestests/AndroidManifest.xml b/services/tests/uiservicestests/AndroidManifest.xml
index 180deb5..dab0a5f 100644
--- a/services/tests/uiservicestests/AndroidManifest.xml
+++ b/services/tests/uiservicestests/AndroidManifest.xml
@@ -28,6 +28,8 @@
     <uses-permission android:name="android.permission.ACCESS_VOICE_INTERACTION_SERVICE" />
     <uses-permission android:name="android.permission.DEVICE_POWER" />
     <uses-permission android:name="android.permission.ACCESS_CONTENT_PROVIDERS_EXTERNALLY" />
+    <uses-permission android:name="android.permission.LOG_COMPAT_CHANGE"/>
+    <uses-permission android:name="android.permission.READ_COMPAT_CHANGE_CONFIG"/>
     <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
     <uses-permission android:name="android.permission.OBSERVE_ROLE_HOLDERS" />
     <uses-permission android:name="android.permission.GET_INTENT_SENDER_INTENT"/>
diff --git a/core/java/com/android/internal/logging/testing/InstanceIdSequenceFake.java b/services/tests/uiservicestests/src/com/android/internal/logging/InstanceIdSequenceFake.java
similarity index 61%
rename from core/java/com/android/internal/logging/testing/InstanceIdSequenceFake.java
rename to services/tests/uiservicestests/src/com/android/internal/logging/InstanceIdSequenceFake.java
index 0fd40b9..1629ef0 100644
--- a/core/java/com/android/internal/logging/testing/InstanceIdSequenceFake.java
+++ b/services/tests/uiservicestests/src/com/android/internal/logging/InstanceIdSequenceFake.java
@@ -14,12 +14,7 @@
  * limitations under the License.
  */
 
-package com.android.internal.logging.testing;
-
-import android.annotation.SuppressLint;
-
-import com.android.internal.logging.InstanceId;
-import com.android.internal.logging.InstanceIdSequence;
+package com.android.internal.logging;
 
 /**
  * A fake implementation of InstanceIdSequence that returns 0, 1, 2, ...
@@ -30,27 +25,15 @@
         super(instanceIdMax);
     }
 
-    /**
-     * Extend InstanceId to add a constructor we can call, strictly for testing purposes.
-     * Public so that tests can check whether the InstanceIds they see are fake.
-     */
-    public static class InstanceIdFake extends InstanceId {
-        @SuppressLint("VisibleForTests")  // This is test infrastructure, which ought to count
-        InstanceIdFake(int id) {
-            super(id);
-        }
-    }
-
     private int mNextId = 0;
 
     @Override
     public InstanceId newInstanceId() {
         synchronized (this) {
-            ++mNextId;
             if (mNextId >= mInstanceIdMax) {
                 mNextId = 0;
             }
-            return new InstanceIdFake(mNextId);
+            return newInstanceIdInternal(mNextId++);
         }
     }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
index 651ad40..f029bc8 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/BuzzBeepBlinkTest.java
@@ -72,6 +72,8 @@
 
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.logging.InstanceIdSequence;
+import com.android.internal.logging.InstanceIdSequenceFake;
 import com.android.internal.util.IntPair;
 import com.android.server.UiServiceTestCase;
 import com.android.server.lights.LogicalLight;
@@ -99,6 +101,8 @@
     @Mock
     IAccessibilityManager mAccessibilityService;
     NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
+    private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
+            1 << 30);
 
     private NotificationManagerService mService;
     private String mPkg = "com.android.server.notification";
@@ -149,7 +153,8 @@
         verify(mAccessibilityService).addClient(any(IAccessibilityManagerClient.class), anyInt());
         assertTrue(accessibilityManager.isEnabled());
 
-        mService = spy(new NotificationManagerService(getContext(), mNotificationRecordLogger));
+        mService = spy(new NotificationManagerService(getContext(), mNotificationRecordLogger,
+                mNotificationInstanceIdSequence));
         mService.setAudioManager(mAudioManager);
         mService.setVibrator(mVibrator);
         mService.setSystemReady(true);
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
index d16c232a..47ad831 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationChannelExtractorTest.java
@@ -97,7 +97,7 @@
         NotificationChannel updatedChannel =
                 new NotificationChannel("a", "", IMPORTANCE_HIGH);
         when(mConfig.getConversationNotificationChannel(
-                any(), anyInt(), eq("a"), eq(r.sbn.getShortcutId(mContext)), eq(true), eq(false)))
+                any(), anyInt(), eq("a"), eq(r.getSbn().getShortcutId(mContext)), eq(true), eq(false)))
                 .thenReturn(updatedChannel);
 
         assertNull(extractor.process(r));
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
index 5b5ad87..cbb760a 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryDatabaseTest.java
@@ -44,6 +44,7 @@
 import org.junit.runner.RunWith;
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
+import org.mockito.internal.matchers.Not;
 
 import java.io.File;
 import java.util.ArrayList;
@@ -239,6 +240,52 @@
         verify(af2, never()).openRead();
     }
 
+    @Test
+    public void testRemoveNotificationRunnable() throws Exception {
+        NotificationHistory nh = mock(NotificationHistory.class);
+        NotificationHistoryDatabase.RemoveNotificationRunnable rnr =
+                mDataBase.new RemoveNotificationRunnable("pkg", 123);
+        rnr.setNotificationHistory(nh);
+
+        AtomicFile af = mock(AtomicFile.class);
+        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
+        mDataBase.mHistoryFiles.addLast(af);
+
+        when(nh.removeNotificationFromWrite("pkg", 123)).thenReturn(true);
+
+        mDataBase.mBuffer = mock(NotificationHistory.class);
+
+        rnr.run();
+
+        verify(mDataBase.mBuffer).removeNotificationFromWrite("pkg", 123);
+        verify(af).openRead();
+        verify(nh).removeNotificationFromWrite("pkg", 123);
+        verify(af).startWrite();
+    }
+
+    @Test
+    public void testRemoveNotificationRunnable_noChanges() throws Exception {
+        NotificationHistory nh = mock(NotificationHistory.class);
+        NotificationHistoryDatabase.RemoveNotificationRunnable rnr =
+                mDataBase.new RemoveNotificationRunnable("pkg", 123);
+        rnr.setNotificationHistory(nh);
+
+        AtomicFile af = mock(AtomicFile.class);
+        when(af.getBaseFile()).thenReturn(new File(mRootDir, "af"));
+        mDataBase.mHistoryFiles.addLast(af);
+
+        when(nh.removeNotificationFromWrite("pkg", 123)).thenReturn(false);
+
+        mDataBase.mBuffer = mock(NotificationHistory.class);
+
+        rnr.run();
+
+        verify(mDataBase.mBuffer).removeNotificationFromWrite("pkg", 123);
+        verify(af).openRead();
+        verify(nh).removeNotificationFromWrite("pkg", 123);
+        verify(af, never()).startWrite();
+    }
+
     private class TestFileAttrProvider implements NotificationHistoryDatabase.FileAttrProvider {
         public Map<File, Long> creationDates = new HashMap<>();
 
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
index b5eb1bf..2c548be 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationHistoryManagerTest.java
@@ -289,6 +289,20 @@
     }
 
     @Test
+    public void testDeleteNotificationHistoryItem_userUnlocked() {
+        String pkg = "pkg";
+        long time = 235;
+        NotificationHistoryDatabase userHistory = mock(NotificationHistoryDatabase.class);
+
+        mHistoryManager.onUserUnlocked(USER_SYSTEM);
+        mHistoryManager.replaceNotificationHistoryDatabase(USER_SYSTEM, userHistory);
+
+        mHistoryManager.deleteNotificationHistoryItem(pkg, 1, time);
+
+        verify(userHistory, times(1)).deleteNotificationHistoryItem(pkg, time);
+    }
+
+    @Test
     public void testTriggerWriteToDisk() {
         NotificationHistoryDatabase userHistorySystem = mock(NotificationHistoryDatabase.class);
         NotificationHistoryDatabase userHistoryAll = mock(NotificationHistoryDatabase.class);
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 768b472..75efdd7 100755
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationManagerServiceTest.java
@@ -30,6 +30,8 @@
 import static android.app.NotificationManager.IMPORTANCE_MAX;
 import static android.app.NotificationManager.IMPORTANCE_NONE;
 import static android.app.NotificationManager.IMPORTANCE_UNSPECIFIED;
+import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS;
+import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CONVERSATIONS;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_AMBIENT;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_BADGE;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_FULL_SCREEN_INTENT;
@@ -39,6 +41,8 @@
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_OFF;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_SCREEN_ON;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_DYNAMIC;
+import static android.content.pm.LauncherApps.ShortcutQuery.FLAG_MATCH_PINNED;
 import static android.content.pm.PackageManager.FEATURE_WATCH;
 import static android.content.pm.PackageManager.PERMISSION_DENIED;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
@@ -47,6 +51,8 @@
 import static android.os.UserHandle.USER_SYSTEM;
 import static android.service.notification.Adjustment.KEY_IMPORTANCE;
 import static android.service.notification.Adjustment.KEY_USER_SENTIMENT;
+import static android.service.notification.NotificationListenerService.REASON_APP_CANCEL;
+import static android.service.notification.NotificationListenerService.REASON_CANCEL;
 import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEGATIVE;
 import static android.service.notification.NotificationListenerService.Ranking.USER_SENTIMENT_NEUTRAL;
 
@@ -67,6 +73,7 @@
 import static org.mockito.Mockito.clearInvocations;
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.reset;
@@ -91,6 +98,7 @@
 import android.app.PendingIntent;
 import android.app.Person;
 import android.app.RemoteInput;
+import android.app.StatsManager;
 import android.app.admin.DevicePolicyManagerInternal;
 import android.app.usage.UsageStatsManagerInternal;
 import android.companion.ICompanionDeviceManager;
@@ -124,6 +132,7 @@
 import android.provider.MediaStore;
 import android.provider.Settings;
 import android.service.notification.Adjustment;
+import android.service.notification.ConversationChannelWrapper;
 import android.service.notification.NotificationListenerService;
 import android.service.notification.NotificationStats;
 import android.service.notification.StatusBarNotification;
@@ -148,6 +157,8 @@
 
 import com.android.internal.R;
 import com.android.internal.config.sysui.SystemUiDeviceConfigFlags;
+import com.android.internal.logging.InstanceIdSequence;
+import com.android.internal.logging.InstanceIdSequenceFake;
 import com.android.internal.statusbar.NotificationVisibility;
 import com.android.internal.util.FastXmlSerializer;
 import com.android.server.LocalServices;
@@ -157,6 +168,7 @@
 import com.android.server.lights.LogicalLight;
 import com.android.server.notification.NotificationManagerService.NotificationAssistants;
 import com.android.server.notification.NotificationManagerService.NotificationListeners;
+import com.android.server.statusbar.StatusBarManagerInternal;
 import com.android.server.uri.UriGrantsManagerInternal;
 import com.android.server.wm.WindowManagerInternal;
 
@@ -256,8 +268,13 @@
     UserManager mUm;
     @Mock
     NotificationHistoryManager mHistoryManager;
+    @Mock
+    StatsManager mStatsManager;
     NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
-
+    private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
+            1 << 30);
+    @Mock
+    StatusBarManagerInternal mStatusBar;
 
     // Use a Testable subclass so we can simulate calls from the system without failing.
     private static class TestableNotificationManagerService extends NotificationManagerService {
@@ -267,8 +284,9 @@
         @Nullable
         NotificationAssistantAccessGrantedCallback mNotificationAssistantAccessGrantedCallback;
 
-        TestableNotificationManagerService(Context context, NotificationRecordLogger logger) {
-            super(context, logger);
+        TestableNotificationManagerService(Context context, NotificationRecordLogger logger,
+                InstanceIdSequence notificationInstanceIdSequence) {
+            super(context, logger, notificationInstanceIdSequence);
         }
 
         @Override
@@ -352,10 +370,13 @@
         LocalServices.addService(UriGrantsManagerInternal.class, mUgmInternal);
         LocalServices.removeServiceForTest(WindowManagerInternal.class);
         LocalServices.addService(WindowManagerInternal.class, mWindowManagerInternal);
+        LocalServices.removeServiceForTest(StatusBarManagerInternal.class);
+        LocalServices.addService(StatusBarManagerInternal.class, mStatusBar);
 
         doNothing().when(mContext).sendBroadcastAsUser(any(), any(), any());
 
-        mService = new TestableNotificationManagerService(mContext, mNotificationRecordLogger);
+        mService = new TestableNotificationManagerService(mContext, mNotificationRecordLogger,
+                mNotificationInstanceIdSequence);
 
         // Use this testable looper.
         mTestableLooper = TestableLooper.get(this);
@@ -422,7 +443,7 @@
                 mCompanionMgr, mSnoozeHelper, mUsageStats, mPolicyFile, mActivityManager,
                 mGroupHelper, mAm, mAppUsageStats,
                 mock(DevicePolicyManagerInternal.class), mUgm, mUgmInternal,
-                mAppOpsManager, mUm, mHistoryManager);
+                mAppOpsManager, mUm, mHistoryManager, mStatsManager);
         mService.onBootPhase(SystemService.PHASE_SYSTEM_SERVICES_READY);
 
         mService.setAudioManager(mAudioManager);
@@ -674,8 +695,9 @@
         NotificationRecord nrBubble = generateMessageBubbleNotifRecord(true /* addMetadata */,
                 mTestNotificationChannel, 1 /* id */, "tag", groupKey, false /* isSummary */);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrBubble.sbn.getTag(),
-                nrBubble.sbn.getId(), nrBubble.sbn.getNotification(), nrBubble.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrBubble.getSbn().getTag(),
+                nrBubble.getSbn().getId(), nrBubble.getSbn().getNotification(),
+                nrBubble.getSbn().getUserId());
         waitForIdle();
 
         // Make sure we are a bubble
@@ -687,8 +709,9 @@
         NotificationRecord nrPlain = generateMessageBubbleNotifRecord(false /* addMetadata */,
                 mTestNotificationChannel, 2 /* id */, "tag", groupKey, false /* isSummary */);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrPlain.sbn.getTag(),
-                nrPlain.sbn.getId(), nrPlain.sbn.getNotification(), nrPlain.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrPlain.getSbn().getTag(),
+                nrPlain.getSbn().getId(), nrPlain.getSbn().getNotification(),
+                nrPlain.getSbn().getUserId());
         waitForIdle();
 
         notifsAfter = mBinderService.getActiveNotifications(PKG);
@@ -701,8 +724,9 @@
         if (summaryAutoCancel) {
             nrSummary.getNotification().flags |= FLAG_AUTO_CANCEL;
         }
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrSummary.sbn.getTag(),
-                nrSummary.sbn.getId(), nrSummary.sbn.getNotification(), nrSummary.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nrSummary.getSbn().getTag(),
+                nrSummary.getSbn().getId(), nrSummary.getSbn().getNotification(),
+                nrSummary.getSbn().getUserId());
         waitForIdle();
 
         notifsAfter = mBinderService.getActiveNotifications(PKG);
@@ -881,7 +905,7 @@
 
         mBinderService.createNotificationChannels(
                 PKG, new ParceledListSlice(Arrays.asList(channel)));
-        final StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(channel).getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testBlockedNotifications_blockedChannel",
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -899,7 +923,7 @@
         mBinderService.createNotificationChannels(
                 PKG, new ParceledListSlice(Arrays.asList(channel)));
 
-        final StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(channel).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG, sbn.getTag(),
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -928,7 +952,7 @@
         assertEquals(IMPORTANCE_NONE, mBinderService.getNotificationChannel(
                 PKG, mContext.getUserId(), PKG, channel.getId()).getImportance());
 
-        StatusBarNotification sbn = generateNotificationRecord(channel).sbn;
+        StatusBarNotification sbn = generateNotificationRecord(channel).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG, sbn.getTag(),
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -950,7 +974,7 @@
         assertEquals(IMPORTANCE_NONE, mBinderService.getNotificationChannel(
                 PKG, mContext.getUserId(), PKG, channel.getId()).getImportance());
 
-        sbn = generateNotificationRecord(channel).sbn;
+        sbn = generateNotificationRecord(channel).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testEnqueuedBlockedNotifications_userBlockedChannelForegroundService",
@@ -984,7 +1008,7 @@
 
         mBinderService.setNotificationsEnabledForPackage(PKG, mUid, false);
 
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testEnqueuedBlockedNotifications_blockedApp",
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -998,7 +1022,7 @@
 
         mBinderService.setNotificationsEnabledForPackage(PKG, mUid, false);
 
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testEnqueuedBlockedNotifications_blockedAppForegroundService",
@@ -1021,7 +1045,7 @@
         int id = 0;
         for (String category: categories) {
             final StatusBarNotification sbn =
-                    generateNotificationRecord(mTestNotificationChannel, ++id, "", false).sbn;
+                    generateNotificationRecord(mTestNotificationChannel, ++id, "", false).getSbn();
             sbn.getNotification().category = category;
             mBinderService.enqueueNotificationWithTag(PKG, PKG,
                     "testEnqueuedRestrictedNotifications_asSystem",
@@ -1046,7 +1070,7 @@
         int id = 0;
         for (String category: categories) {
             final StatusBarNotification sbn =
-                    generateNotificationRecord(mTestNotificationChannel, ++id, "", false).sbn;
+                    generateNotificationRecord(mTestNotificationChannel, ++id, "", false).getSbn();
             sbn.getNotification().category = category;
             mBinderService.enqueueNotificationWithTag(PKG, PKG,
                     "testEnqueuedRestrictedNotifications_notAutomotive",
@@ -1069,7 +1093,7 @@
                 Notification.CATEGORY_CAR_WARNING,
                 Notification.CATEGORY_CAR_INFORMATION);
         for (String category: categories) {
-            final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+            final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
             sbn.getNotification().category = category;
             try {
                 mBinderService.enqueueNotificationWithTag(PKG, PKG,
@@ -1097,7 +1121,7 @@
         Bundle bundle = new Bundle();
         bundle.putInt(KEY_IMPORTANCE, IMPORTANCE_NONE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), bundle, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), bundle, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         NotificationManagerService.PostNotificationRunnable runnable =
@@ -1127,14 +1151,18 @@
         waitForIdle();
         assertEquals(1, mNotificationRecordLogger.getCalls().size());
         NotificationRecordLoggerFake.CallRecord call = mNotificationRecordLogger.get(0);
-        assertTrue(call.shouldLog());
+        assertTrue(call.shouldLog);
+        assertEquals(NotificationRecordLogger.NotificationReportedEvent.NOTIFICATION_POSTED,
+                call.event);
         assertNotNull(call.r);
         assertNull(call.old);
         assertEquals(0, call.position);
         assertEquals(0, call.buzzBeepBlink);
-        assertEquals(PKG, call.r.sbn.getPackageName());
-        assertEquals(0, call.r.sbn.getId());
-        assertEquals(tag, call.r.sbn.getTag());
+        assertEquals(PKG, call.r.getSbn().getPackageName());
+        assertEquals(0, call.r.getSbn().getId());
+        assertEquals(tag, call.r.getSbn().getTag());
+        assertNotNull(call.r.getSbn().getInstanceId());
+        assertEquals(0, call.getInstanceId());  // Fake instance IDs are assigned in order
     }
 
     @Test
@@ -1151,14 +1179,19 @@
         mBinderService.enqueueNotificationWithTag(PKG, PKG, tag, 0, update, 0);
         waitForIdle();
         assertEquals(2, mNotificationRecordLogger.getCalls().size());
-        assertTrue(mNotificationRecordLogger.get(0).shouldLog());
+
+        assertTrue(mNotificationRecordLogger.get(0).shouldLog);
         assertEquals(
-                NotificationRecordLogger.NotificationReportedEvents.NOTIFICATION_POSTED,
-                mNotificationRecordLogger.get(0).getUiEvent());
+                NotificationRecordLogger.NotificationReportedEvent.NOTIFICATION_POSTED,
+                mNotificationRecordLogger.get(0).event);
+        assertEquals(0, mNotificationRecordLogger.get(0).getInstanceId());
+
+        assertTrue(mNotificationRecordLogger.get(1).shouldLog);
         assertEquals(
-                NotificationRecordLogger.NotificationReportedEvents.NOTIFICATION_UPDATED,
-                mNotificationRecordLogger.get(1).getUiEvent());
-        assertTrue(mNotificationRecordLogger.get(1).shouldLog());
+                NotificationRecordLogger.NotificationReportedEvent.NOTIFICATION_UPDATED,
+                mNotificationRecordLogger.get(1).event);
+        // Instance ID doesn't change on update of an active notification
+        assertEquals(0, mNotificationRecordLogger.get(1).getInstanceId());
     }
 
     @Test
@@ -1170,8 +1203,53 @@
                 generateNotificationRecord(null).getNotification(), 0);
         waitForIdle();
         assertEquals(2, mNotificationRecordLogger.getCalls().size());
-        assertTrue(mNotificationRecordLogger.get(0).shouldLog());
-        assertFalse(mNotificationRecordLogger.get(1).shouldLog());
+        assertTrue(mNotificationRecordLogger.get(0).shouldLog);
+        assertFalse(mNotificationRecordLogger.get(1).shouldLog);
+    }
+
+    @Test
+    public void testEnqueueNotificationWithTag_LogsAgainAfterCancel() throws Exception {
+        final String tag = "testEnqueueNotificationWithTag_LogsAgainAfterCancel";
+        Notification notification = new Notification.Builder(mContext,
+                mTestNotificationChannel.getId())
+                .setSmallIcon(android.R.drawable.sym_def_app_icon).build();
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, tag, 0, notification, 0);
+        waitForIdle();
+        mBinderService.cancelNotificationWithTag(PKG, PKG, tag, 0, 0);
+        waitForIdle();
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, tag, 0, notification, 0);
+        waitForIdle();
+        assertEquals(3, mNotificationRecordLogger.getCalls().size());
+
+        assertEquals(
+                NotificationRecordLogger.NotificationReportedEvent.NOTIFICATION_POSTED,
+                mNotificationRecordLogger.get(0).event);
+        assertTrue(mNotificationRecordLogger.get(0).shouldLog);
+        assertEquals(0, mNotificationRecordLogger.get(0).getInstanceId());
+
+        assertEquals(REASON_APP_CANCEL, mNotificationRecordLogger.get(1).reason);
+        assertEquals(
+                NotificationRecordLogger.NotificationCancelledEvent.NOTIFICATION_CANCEL_APP_CANCEL,
+                mNotificationRecordLogger.get(1).event);
+        assertTrue(mNotificationRecordLogger.get(1).shouldLog);
+        assertEquals(0, mNotificationRecordLogger.get(1).getInstanceId());
+
+        assertEquals(
+                NotificationRecordLogger.NotificationReportedEvent.NOTIFICATION_POSTED,
+                mNotificationRecordLogger.get(2).event);
+        assertTrue(mNotificationRecordLogger.get(2).shouldLog);
+        // New instance ID because notification was canceled before re-post
+        assertEquals(1, mNotificationRecordLogger.get(2).getInstanceId());
+    }
+
+    @Test
+    public void testCancelNonexistentNotification() throws Exception {
+        mBinderService.cancelNotificationWithTag(PKG, PKG,
+                "testCancelNonexistentNotification", 0, 0);
+        waitForIdle();
+        // The notification record logger doesn't even get called when a nonexistent notification
+        // is cancelled, because that happens very frequently and is not interesting.
+        assertEquals(0, mNotificationRecordLogger.getCalls().size());
     }
 
     @Test
@@ -1212,7 +1290,7 @@
     @Test
     public void testCancelNotificationsFromListenerImmediatelyAfterEnqueue() throws Exception {
         NotificationRecord r = generateNotificationRecord(null);
-        final StatusBarNotification sbn = r.sbn;
+        final StatusBarNotification sbn = r.getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelNotificationsFromListenerImmediatelyAfterEnqueue",
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -1226,7 +1304,7 @@
 
     @Test
     public void testCancelAllNotificationsImmediatelyAfterEnqueue() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotificationsImmediatelyAfterEnqueue",
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -1241,7 +1319,7 @@
     @Test
     public void testCancelImmediatelyAfterEnqueueNotifiesListeners_ForegroundServiceFlag()
             throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags =
                 Notification.FLAG_ONGOING_EVENT | FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
@@ -1259,14 +1337,14 @@
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testUserInitiatedClearAll_noLeak",
-                n.sbn.getId(), n.sbn.getNotification(), n.sbn.getUserId());
+                n.getSbn().getId(), n.getSbn().getNotification(), n.getSbn().getUserId());
         waitForIdle();
 
         mService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(),
                 n.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(n.sbn.getPackageName());
+                mBinderService.getActiveNotifications(n.getSbn().getPackageName());
         assertEquals(0, notifs.length);
         assertEquals(0, mService.getNotificationRecordCount());
         ArgumentCaptor<NotificationStats> captor = ArgumentCaptor.forClass(NotificationStats.class);
@@ -1283,20 +1361,22 @@
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotificationsCancelsChildren",
-                parent.sbn.getId(), parent.sbn.getNotification(), parent.sbn.getUserId());
+                parent.getSbn().getId(), parent.getSbn().getNotification(),
+                parent.getSbn().getUserId());
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotificationsCancelsChildren",
-                child.sbn.getId(), child.sbn.getNotification(), child.sbn.getUserId());
+                child.getSbn().getId(), child.getSbn().getNotification(),
+                child.getSbn().getUserId());
         waitForIdle();
 
-        mBinderService.cancelAllNotifications(PKG, parent.sbn.getUserId());
+        mBinderService.cancelAllNotifications(PKG, parent.getSbn().getUserId());
         waitForIdle();
         assertEquals(0, mService.getNotificationRecordCount());
     }
 
     @Test
     public void testCancelAllNotificationsMultipleEnqueuedDoesNotCrash() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         for (int i = 0; i < 10; i++) {
             mBinderService.enqueueNotificationWithTag(PKG, PKG,
                     "testCancelAllNotificationsMultipleEnqueuedDoesNotCrash",
@@ -1320,20 +1400,22 @@
         // fully post parent notification
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelGroupSummaryMultipleEnqueuedChildrenDoesNotCrash",
-                parent.sbn.getId(), parent.sbn.getNotification(), parent.sbn.getUserId());
+                parent.getSbn().getId(), parent.getSbn().getNotification(),
+                parent.getSbn().getUserId());
         waitForIdle();
 
         // enqueue the child several times
         for (int i = 0; i < 10; i++) {
             mBinderService.enqueueNotificationWithTag(PKG, PKG,
                     "testCancelGroupSummaryMultipleEnqueuedChildrenDoesNotCrash",
-                    child.sbn.getId(), child.sbn.getNotification(), child.sbn.getUserId());
+                    child.getSbn().getId(), child.getSbn().getNotification(),
+                    child.getSbn().getUserId());
         }
         // make the parent a child, which will cancel the child notification
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelGroupSummaryMultipleEnqueuedChildrenDoesNotCrash",
-                parentAsChild.sbn.getId(), parentAsChild.sbn.getNotification(),
-                parentAsChild.sbn.getUserId());
+                parentAsChild.getSbn().getId(), parentAsChild.getSbn().getNotification(),
+                parentAsChild.getSbn().getUserId());
         waitForIdle();
 
         assertEquals(0, mService.getNotificationRecordCount());
@@ -1350,7 +1432,7 @@
         mService.mAutobundledSummaries.get(0).put("pkg", summary.getKey());
         mService.updateAutobundledSummaryFlags(0, "pkg", true, false);
 
-        assertTrue(summary.sbn.isOngoing());
+        assertTrue(summary.getSbn().isOngoing());
     }
 
     @Test
@@ -1366,12 +1448,12 @@
 
         mService.updateAutobundledSummaryFlags(0, "pkg", false, false);
 
-        assertFalse(summary.sbn.isOngoing());
+        assertFalse(summary.getSbn().isOngoing());
     }
 
     @Test
     public void testCancelAllNotifications_IgnoreForegroundService() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotifications_IgnoreForegroundService",
@@ -1386,7 +1468,7 @@
 
     @Test
     public void testCancelAllNotifications_IgnoreOtherPackages() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotifications_IgnoreOtherPackages",
@@ -1401,7 +1483,7 @@
 
     @Test
     public void testCancelAllNotifications_NullPkgRemovesAll() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotifications_NullPkgRemovesAll",
                 sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -1415,7 +1497,7 @@
 
     @Test
     public void testCancelAllNotifications_NullPkgIgnoresUserAllNotifications() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testCancelAllNotifications_NullPkgIgnoresUserAllNotifications",
                 sbn.getId(), sbn.getNotification(), UserHandle.USER_ALL);
@@ -1430,7 +1512,7 @@
 
     @Test
     public void testAppInitiatedCancelAllNotifications_CancelsNoClearFlag() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags |= Notification.FLAG_NO_CLEAR;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testAppInitiatedCancelAllNotifications_CancelsNoClearFlag",
@@ -1452,7 +1534,7 @@
                 notif.getUserId(), 0, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(notif.sbn.getPackageName());
+                mBinderService.getActiveNotifications(notif.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1467,7 +1549,7 @@
                 notif.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(notif.sbn.getPackageName());
+                mBinderService.getActiveNotifications(notif.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1489,7 +1571,7 @@
         mService.getBinderService().cancelNotificationsFromListener(null, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1512,7 +1594,7 @@
                 parent.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1537,7 +1619,7 @@
 
     @Test
     public void testCancelAfterSecondEnqueueDoesNotSpecifyForegroundFlag() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags =
                 Notification.FLAG_ONGOING_EVENT | FLAG_FOREGROUND_SERVICE;
         mBinderService.enqueueNotificationWithTag(PKG, PKG, sbn.getTag(),
@@ -1571,7 +1653,7 @@
         mService.getBinderService().cancelNotificationsFromListener(null, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1591,12 +1673,12 @@
         mService.addNotification(child);
         mService.addNotification(child2);
         mService.addNotification(newGroup);
-        String[] keys = {parent.sbn.getKey(), child.sbn.getKey(),
-                child2.sbn.getKey(), newGroup.sbn.getKey()};
+        String[] keys = {parent.getSbn().getKey(), child.getSbn().getKey(),
+                child2.getSbn().getKey(), newGroup.getSbn().getKey()};
         mService.getBinderService().cancelNotificationsFromListener(null, keys);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1619,7 +1701,7 @@
                 parent.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1635,31 +1717,33 @@
         final NotificationRecord group2 = generateNotificationRecord(
                 mTestNotificationChannel, 2, "group2", true);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testFindGroupNotificationsLocked",
-                group2.sbn.getId(), group2.sbn.getNotification(), group2.sbn.getUserId());
+                group2.getSbn().getId(), group2.getSbn().getNotification(),
+                group2.getSbn().getUserId());
         waitForIdle();
 
         // should not be returned
         final NotificationRecord nonGroup = generateNotificationRecord(
                 mTestNotificationChannel, 3, null, false);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testFindGroupNotificationsLocked",
-                nonGroup.sbn.getId(), nonGroup.sbn.getNotification(), nonGroup.sbn.getUserId());
+                nonGroup.getSbn().getId(), nonGroup.getSbn().getNotification(),
+                nonGroup.getSbn().getUserId());
         waitForIdle();
 
         // same group, child, should be returned
         final NotificationRecord group1Child = generateNotificationRecord(
                 mTestNotificationChannel, 4, "group1", false);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testFindGroupNotificationsLocked",
-                group1Child.sbn.getId(),
-                group1Child.sbn.getNotification(), group1Child.sbn.getUserId());
+                group1Child.getSbn().getId(),
+                group1Child.getSbn().getNotification(), group1Child.getSbn().getUserId());
         waitForIdle();
 
         List<NotificationRecord> inGroup1 =
                 mService.findGroupNotificationsLocked(PKG, group1.getGroupKey(),
-                        group1.sbn.getUserId());
+                        group1.getSbn().getUserId());
         assertEquals(3, inGroup1.size());
         for (NotificationRecord record : inGroup1) {
             assertTrue(record.getGroupKey().equals(group1.getGroupKey()));
-            assertTrue(record.sbn.getId() == 1 || record.sbn.getId() == 4);
+            assertTrue(record.getSbn().getId() == 1 || record.getSbn().getId() == 4);
         }
     }
 
@@ -1673,7 +1757,7 @@
                 Notification.FLAG_ONGOING_EVENT, true, notif.getUserId(), 0, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(notif.sbn.getPackageName());
+                mBinderService.getActiveNotifications(notif.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1693,18 +1777,18 @@
         mService.addNotification(child);
         mService.addNotification(child2);
         mService.addNotification(newGroup);
-        String[] keys = {parent.sbn.getKey(), child.sbn.getKey(),
-                child2.sbn.getKey(), newGroup.sbn.getKey()};
+        String[] keys = {parent.getSbn().getKey(), child.getSbn().getKey(),
+                child2.getSbn().getKey(), newGroup.getSbn().getKey()};
         mService.getBinderService().cancelNotificationsFromListener(null, keys);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
     @Test
     public void testAppInitiatedCancelAllNotifications_CancelsOnGoingFlag() throws Exception {
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         sbn.getNotification().flags |= Notification.FLAG_ONGOING_EVENT;
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testAppInitiatedCancelAllNotifications_CancelsOnGoingFlag",
@@ -1726,7 +1810,7 @@
                 notif.getUserId(), 0, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(notif.sbn.getPackageName());
+                mBinderService.getActiveNotifications(notif.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1741,7 +1825,7 @@
                 notif.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(notif.sbn.getPackageName());
+                mBinderService.getActiveNotifications(notif.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1763,7 +1847,7 @@
         mService.getBinderService().cancelNotificationsFromListener(null, null);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1783,12 +1867,12 @@
         mService.addNotification(child);
         mService.addNotification(child2);
         mService.addNotification(newGroup);
-        String[] keys = {parent.sbn.getKey(), child.sbn.getKey(),
-                child2.sbn.getKey(), newGroup.sbn.getKey()};
+        String[] keys = {parent.getSbn().getKey(), child.getSbn().getKey(),
+                child2.getSbn().getKey(), newGroup.getSbn().getKey()};
         mService.getBinderService().cancelNotificationsFromListener(null, keys);
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(0, notifs.length);
     }
 
@@ -1811,7 +1895,7 @@
                 parent.getUserId());
         waitForIdle();
         StatusBarNotification[] notifs =
-                mBinderService.getActiveNotifications(parent.sbn.getPackageName());
+                mBinderService.getActiveNotifications(parent.getSbn().getPackageName());
         assertEquals(1, notifs.length);
     }
 
@@ -1945,7 +2029,8 @@
     public void testUpdateGroupNotifyCreatorBlock() throws Exception {
         NotificationChannelGroup existing = new NotificationChannelGroup("id", "name");
         mService.setPreferencesHelper(mPreferencesHelper);
-        when(mPreferencesHelper.getNotificationChannelGroup(eq(existing.getId()), eq(PKG), anyInt()))
+        when(mPreferencesHelper.getNotificationChannelGroup(eq(existing.getId()),
+                eq(PKG), anyInt()))
                 .thenReturn(existing);
 
         NotificationChannelGroup updated = new NotificationChannelGroup("id", "name");
@@ -1968,7 +2053,8 @@
         NotificationChannelGroup existing = new NotificationChannelGroup("id", "name");
         existing.setBlocked(true);
         mService.setPreferencesHelper(mPreferencesHelper);
-        when(mPreferencesHelper.getNotificationChannelGroup(eq(existing.getId()), eq(PKG), anyInt()))
+        when(mPreferencesHelper.getNotificationChannelGroup(eq(existing.getId()),
+                eq(PKG), anyInt()))
                 .thenReturn(existing);
 
         mBinderService.updateNotificationChannelGroupForPackage(
@@ -1988,7 +2074,8 @@
     public void testUpdateGroupNoNotifyCreatorOtherChanges() throws Exception {
         NotificationChannelGroup existing = new NotificationChannelGroup("id", "name");
         mService.setPreferencesHelper(mPreferencesHelper);
-        when(mPreferencesHelper.getNotificationChannelGroup(eq(existing.getId()), eq(PKG), anyInt()))
+        when(mPreferencesHelper.getNotificationChannelGroup(
+                eq(existing.getId()), eq(PKG), anyInt()))
                 .thenReturn(existing);
 
         mBinderService.updateNotificationChannelGroupForPackage(
@@ -2309,7 +2396,8 @@
 
     @Test
     public void testHasCompanionDevice_noService() {
-        mService = new TestableNotificationManagerService(mContext,  mNotificationRecordLogger);
+        mService = new TestableNotificationManagerService(mContext,  mNotificationRecordLogger,
+                mNotificationInstanceIdSequence);
 
         assertFalse(mService.hasCompanionDevice(mListener));
     }
@@ -2446,7 +2534,7 @@
     public void testSnoozeRunnable_snoozeGroupChild_onlyChildOfSummary() throws Exception {
         final NotificationRecord parent = generateNotificationRecord(
                 mTestNotificationChannel, 1, "group", true);
-        assertTrue(parent.sbn.getNotification().isGroupSummary());
+        assertTrue(parent.getSbn().getNotification().isGroupSummary());
         final NotificationRecord child = generateNotificationRecord(
                 mTestNotificationChannel, 2, "group", false);
         mService.addNotification(parent);
@@ -2482,7 +2570,8 @@
                 mTestNotificationChannel, 2, "group", false);
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testPostNonGroup_noUnsnoozing",
-                child.sbn.getId(), child.sbn.getNotification(), child.sbn.getUserId());
+                child.getSbn().getId(), child.getSbn().getNotification(),
+                child.getSbn().getUserId());
         waitForIdle();
 
         verify(mSnoozeHelper, times(1)).repostGroupSummary(
@@ -2495,7 +2584,8 @@
                 mTestNotificationChannel, 2, null, false);
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testPostNonGroup_noUnsnoozing",
-                record.sbn.getId(), record.sbn.getNotification(), record.sbn.getUserId());
+                record.getSbn().getId(), record.getSbn().getNotification(),
+                record.getSbn().getUserId());
         waitForIdle();
 
         verify(mSnoozeHelper, never()).repostGroupSummary(anyString(), anyInt(), anyString());
@@ -2507,7 +2597,8 @@
                 mTestNotificationChannel, 2, "group", true);
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "testPostGroupSummary_noUnsnoozing",
-                parent.sbn.getId(), parent.sbn.getNotification(), parent.sbn.getUserId());
+                parent.getSbn().getId(), parent.getSbn().getNotification(),
+                parent.getSbn().getUserId());
         waitForIdle();
 
         verify(mSnoozeHelper, never()).repostGroupSummary(anyString(), anyInt(), anyString());
@@ -2926,11 +3017,11 @@
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG, sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         NotificationRecord posted = mService.findNotificationLocked(
-                PKG, nr.sbn.getTag(), nr.sbn.getId(), nr.sbn.getUserId());
+                PKG, nr.getSbn().getTag(), nr.getSbn().getId(), nr.getSbn().getUserId());
 
         assertFalse(posted.getNotification().isColorized());
     }
@@ -2949,7 +3040,7 @@
             NotificationRecord r =
                     generateNotificationRecord(mTestNotificationChannel, i, null, false);
             mService.addNotification(r);
-            sampleTagToExclude = r.sbn.getTag();
+            sampleTagToExclude = r.getSbn().getTag();
             sampleIdToExclude = i;
         }
 
@@ -3185,7 +3276,8 @@
 
         StatusBarNotification sbn = new StatusBarNotification(preOPkg, preOPkg, 9,
                 "testBumpFGImportance_noChannelChangePreOApp",
-                Binder.getCallingUid(), 0, nb.build(), new UserHandle(Binder.getCallingUid()), null, 0);
+                Binder.getCallingUid(), 0, nb.build(), new UserHandle(Binder.getCallingUid()), null,
+                0);
 
         mBinderService.enqueueNotificationWithTag(sbn.getPackageName(), sbn.getOpPkg(),
                 sbn.getTag(), sbn.getId(), sbn.getNotification(), sbn.getUserId());
@@ -3223,7 +3315,7 @@
 
         mService.mNotificationDelegate.onNotificationDirectReplied(r.getKey());
         assertTrue(mService.getNotificationRecord(r.getKey()).getStats().hasDirectReplied());
-        verify(mAssistants).notifyAssistantNotificationDirectReplyLocked(eq(r.sbn));
+        verify(mAssistants).notifyAssistantNotificationDirectReplyLocked(eq(r.getSbn()));
     }
 
     @Test
@@ -3233,12 +3325,14 @@
 
         mService.mNotificationDelegate.onNotificationExpansionChanged(r.getKey(), true, true,
                 NOTIFICATION_LOCATION_UNKNOWN);
-        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.sbn), eq(true), eq((true)));
+        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.getSbn()), eq(true),
+                eq((true)));
         assertTrue(mService.getNotificationRecord(r.getKey()).getStats().hasExpanded());
 
         mService.mNotificationDelegate.onNotificationExpansionChanged(r.getKey(), true, false,
                 NOTIFICATION_LOCATION_UNKNOWN);
-        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.sbn), eq(true), eq((false)));
+        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.getSbn()), eq(true),
+                eq((false)));
         assertTrue(mService.getNotificationRecord(r.getKey()).getStats().hasExpanded());
     }
 
@@ -3250,13 +3344,14 @@
         mService.mNotificationDelegate.onNotificationExpansionChanged(r.getKey(), false, true,
                 NOTIFICATION_LOCATION_UNKNOWN);
         assertFalse(mService.getNotificationRecord(r.getKey()).getStats().hasExpanded());
-        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.sbn), eq(false), eq((true)));
+        verify(mAssistants).notifyAssistantExpansionChangedLocked(eq(r.getSbn()), eq(false),
+                eq((true)));
 
         mService.mNotificationDelegate.onNotificationExpansionChanged(r.getKey(), false, false,
                 NOTIFICATION_LOCATION_UNKNOWN);
         assertFalse(mService.getNotificationRecord(r.getKey()).getStats().hasExpanded());
         verify(mAssistants).notifyAssistantExpansionChangedLocked(
-                eq(r.sbn), eq(false), eq((false)));
+                eq(r.getSbn()), eq(false), eq((false)));
     }
 
     @Test
@@ -3276,11 +3371,11 @@
         final NotificationVisibility nv = NotificationVisibility.obtain(r.getKey(), 1, 2, true);
         mService.mNotificationDelegate.onNotificationVisibilityChanged(
                 new NotificationVisibility[] {nv}, new NotificationVisibility[]{});
-        verify(mAssistants).notifyAssistantVisibilityChangedLocked(eq(r.sbn), eq(true));
+        verify(mAssistants).notifyAssistantVisibilityChangedLocked(eq(r.getSbn()), eq(true));
         assertTrue(mService.getNotificationRecord(r.getKey()).getStats().hasSeen());
         mService.mNotificationDelegate.onNotificationVisibilityChanged(
                 new NotificationVisibility[] {}, new NotificationVisibility[]{nv});
-        verify(mAssistants).notifyAssistantVisibilityChangedLocked(eq(r.sbn), eq(false));
+        verify(mAssistants).notifyAssistantVisibilityChangedLocked(eq(r.getSbn()), eq(false));
         assertTrue(mService.getNotificationRecord(r.getKey()).getStats().hasSeen());
     }
 
@@ -3290,12 +3385,23 @@
         mService.addNotification(r);
 
         final NotificationVisibility nv = NotificationVisibility.obtain(r.getKey(), 0, 1, true);
-        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG, r.sbn.getTag(),
-                r.sbn.getId(), r.getUserId(), r.getKey(), NotificationStats.DISMISSAL_AOD,
+        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG, r.getSbn().getTag(),
+                r.getSbn().getId(), r.getUserId(), r.getKey(), NotificationStats.DISMISSAL_AOD,
                 NotificationStats.DISMISS_SENTIMENT_POSITIVE, nv);
         waitForIdle();
 
         assertEquals(NotificationStats.DISMISSAL_AOD, r.getStats().getDismissalSurface());
+
+        // Using mService.addNotification() does not generate a NotificationRecordLogger log,
+        // so we only get the cancel notification.
+        assertEquals(1, mNotificationRecordLogger.getCalls().size());
+
+        assertEquals(REASON_CANCEL, mNotificationRecordLogger.get(0).reason);
+        assertEquals(
+                NotificationRecordLogger.NotificationCancelledEvent.NOTIFICATION_CANCEL_USER_AOD,
+                mNotificationRecordLogger.get(0).event);
+        assertTrue(mNotificationRecordLogger.get(0).shouldLog);
+        assertEquals(0, mNotificationRecordLogger.get(0).getInstanceId());
     }
 
     @Test
@@ -3304,8 +3410,8 @@
         mService.addNotification(r);
 
         final NotificationVisibility nv = NotificationVisibility.obtain(r.getKey(), 0, 1, true);
-        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG, r.sbn.getTag(),
-                r.sbn.getId(), r.getUserId(), r.getKey(), NotificationStats.DISMISSAL_AOD,
+        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG, r.getSbn().getTag(),
+                r.getSbn().getId(), r.getUserId(), r.getKey(), NotificationStats.DISMISSAL_AOD,
                 NotificationStats.DISMISS_SENTIMENT_NEGATIVE, nv);
         waitForIdle();
 
@@ -3327,7 +3433,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyAdjustmentFromAssistant(null, adjustment);
 
         waitForIdle();
@@ -3346,7 +3452,7 @@
         Bundle signals = new Bundle();
         signals.putInt(KEY_IMPORTANCE, IMPORTANCE_NONE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         when(mAssistants.isSameUser(any(), anyInt())).thenReturn(true);
         mBinderService.applyAdjustmentFromAssistant(null, adjustment);
 
@@ -3369,7 +3475,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         assertEquals(USER_SENTIMENT_NEGATIVE, r.getUserSentiment());
@@ -3387,7 +3493,7 @@
         Bundle signals = new Bundle();
         signals.putInt(KEY_IMPORTANCE, IMPORTANCE_LOW);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         assertEquals(IMPORTANCE_LOW, r.getImportance());
@@ -3406,7 +3512,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         assertEquals(USER_SENTIMENT_NEUTRAL, r.getUserSentiment());
@@ -3426,7 +3532,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyAdjustmentFromAssistant(null, adjustment);
 
         waitForIdle();
@@ -3444,7 +3550,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         waitForIdle();
@@ -3462,7 +3568,7 @@
         signals.putInt(Adjustment.KEY_USER_SENTIMENT,
                 USER_SENTIMENT_NEGATIVE);
         Adjustment adjustment = new Adjustment(
-                r.sbn.getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
+                r.getSbn().getPackageName(), r.getKey(), signals, "", r.getUser().getIdentifier());
         mBinderService.applyEnqueuedAdjustmentFromAssistant(null, adjustment);
 
         assertEquals(USER_SENTIMENT_NEGATIVE, r.getUserSentiment());
@@ -3576,6 +3682,33 @@
     }
 
     @Test
+    public void updateUriPermissions_posterDoesNotOwnUri() throws Exception {
+        NotificationChannel c = new NotificationChannel(
+                TEST_CHANNEL_ID, TEST_CHANNEL_ID, IMPORTANCE_DEFAULT);
+        c.setSound(null, Notification.AUDIO_ATTRIBUTES_DEFAULT);
+        Message message1 = new Message("", 0, "");
+        message1.setData("",
+                ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1));
+
+        Notification.Builder nbA = new Notification.Builder(mContext, c.getId())
+                .setContentTitle("foo")
+                .setSmallIcon(android.R.drawable.sym_def_app_icon)
+                .setStyle(new Notification.MessagingStyle("")
+                        .addMessage(message1));
+        NotificationRecord recordA = new NotificationRecord(mContext, new StatusBarNotification(
+                PKG, PKG, 0, "tag", mUid, 0, nbA.build(), new UserHandle(mUid), null, 0), c);
+
+        doThrow(new SecurityException("no access")).when(mUgm)
+                .grantUriPermissionFromOwner(
+                        any(), anyInt(), any(), any(), anyInt(), anyInt(), anyInt());
+
+        when(mUgmInternal.newUriPermissionOwner(any())).thenReturn(new Binder());
+        mService.updateUriPermissions(recordA, null, mContext.getPackageName(),  USER_SYSTEM);
+
+        // yay, no crash
+    }
+
+    @Test
     public void testVisitUris() throws Exception {
         final Uri audioContents = Uri.parse("content://com.example/audio");
         final Uri backgroundImage = Uri.parse("content://com.example/background");
@@ -4032,7 +4165,7 @@
         ArgumentCaptor<List<NotificationRecord>> captorHide = ArgumentCaptor.forClass(List.class);
         verify(mListeners, times(1)).notifyHiddenLocked(captorHide.capture());
         assertEquals(1, captorHide.getValue().size());
-        assertEquals("a", captorHide.getValue().get(0).sbn.getPackageName());
+        assertEquals("a", captorHide.getValue().get(0).getSbn().getPackageName());
 
         // on broadcast, unhide the package
         mService.simulatePackageDistractionBroadcast(
@@ -4040,7 +4173,7 @@
         ArgumentCaptor<List<NotificationRecord>> captorUnhide = ArgumentCaptor.forClass(List.class);
         verify(mListeners, times(1)).notifyUnhiddenLocked(captorUnhide.capture());
         assertEquals(1, captorUnhide.getValue().size());
-        assertEquals("a", captorUnhide.getValue().get(0).sbn.getPackageName());
+        assertEquals("a", captorUnhide.getValue().get(0).getSbn().getPackageName());
     }
 
     @Test
@@ -4061,8 +4194,8 @@
         // should be called only once.
         verify(mListeners, times(1)).notifyHiddenLocked(captorHide.capture());
         assertEquals(2, captorHide.getValue().size());
-        assertEquals("a", captorHide.getValue().get(0).sbn.getPackageName());
-        assertEquals("b", captorHide.getValue().get(1).sbn.getPackageName());
+        assertEquals("a", captorHide.getValue().get(0).getSbn().getPackageName());
+        assertEquals("b", captorHide.getValue().get(1).getSbn().getPackageName());
 
         // on broadcast, unhide the package
         mService.simulatePackageDistractionBroadcast(
@@ -4072,8 +4205,8 @@
         // should be called only once.
         verify(mListeners, times(1)).notifyUnhiddenLocked(captorUnhide.capture());
         assertEquals(2, captorUnhide.getValue().size());
-        assertEquals("a", captorUnhide.getValue().get(0).sbn.getPackageName());
-        assertEquals("b", captorUnhide.getValue().get(1).sbn.getPackageName());
+        assertEquals("a", captorUnhide.getValue().get(0).getSbn().getPackageName());
+        assertEquals("b", captorUnhide.getValue().get(1).getSbn().getPackageName());
     }
 
     @Test
@@ -4359,7 +4492,7 @@
         ai.uid = -1;
         when(mPackageManager.getApplicationInfo(anyString(), anyInt(), anyInt())).thenReturn(ai);
 
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
         try {
             mInternalService.enqueueNotification(notReal, "android", 0, 0,
                     "testPostFromAndroidForNonExistentPackage",
@@ -4380,7 +4513,7 @@
         when(mPackageManager.getApplicationInfo(anyString(), anyInt(), anyInt())).thenReturn(ai);
 
         // unlike the post case, ignore instead of throwing
-        final StatusBarNotification sbn = generateNotificationRecord(null).sbn;
+        final StatusBarNotification sbn = generateNotificationRecord(null).getSbn();
 
         mInternalService.cancelNotification(notReal, "android", 0, 0, "tag",
                 sbn.getId(), sbn.getUserId());
@@ -4411,7 +4544,7 @@
         mService.addEnqueuedNotification(r);
 
         mInternalService.removeForegroundServiceFlagFromNotification(
-                PKG, r.sbn.getId(), r.sbn.getUserId());
+                PKG, r.getSbn().getId(), r.getSbn().getUserId());
 
         waitForIdle();
 
@@ -4430,7 +4563,7 @@
         mService.addNotification(r);
 
         mInternalService.removeForegroundServiceFlagFromNotification(
-                PKG, r.sbn.getId(), r.sbn.getUserId());
+                PKG, r.getSbn().getId(), r.getSbn().getUserId());
 
         waitForIdle();
 
@@ -4442,7 +4575,7 @@
     }
 
     @Test
-    public void testAllowForegroundToasts() throws Exception {
+    public void testAllowForegroundCustomToasts() throws Exception {
         final String testPackage = "testPackageName";
         assertEquals(0, mService.mToastQueue.size());
         mService.isSystemUid = false;
@@ -4465,6 +4598,79 @@
     }
 
     @Test
+    public void testDisallowBackgroundCustomToasts() throws Exception {
+        final String testPackage = "testPackageName";
+        assertEquals(0, mService.mToastQueue.size());
+        mService.isSystemUid = false;
+
+        // package is not suspended
+        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
+                .thenReturn(false);
+
+        // this app is NOT in the foreground
+        when(mActivityManager.getUidImportance(mUid)).thenReturn(IMPORTANCE_NONE);
+
+        // enqueue toast -> no toasts enqueued
+        ((INotificationManager) mService.mService).enqueueToast(testPackage, new Binder(),
+                new TestableToastCallback(), 2000, 0);
+        assertEquals(0, mService.mToastQueue.size());
+    }
+
+    @Test
+    public void testAllowForegroundTextToasts() throws Exception {
+        final String testPackage = "testPackageName";
+        assertEquals(0, mService.mToastQueue.size());
+        mService.isSystemUid = false;
+
+        // package is not suspended
+        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
+                .thenReturn(false);
+
+        // this app is in the foreground
+        when(mActivityManager.getUidImportance(mUid)).thenReturn(IMPORTANCE_FOREGROUND);
+
+        // enqueue toast -> toast should still enqueue
+        ((INotificationManager) mService.mService).enqueueTextToast(testPackage, new Binder(),
+                "Text", 2000, 0, null);
+        assertEquals(1, mService.mToastQueue.size());
+    }
+
+    @Test
+    public void testAllowBackgroundTextToasts() throws Exception {
+        final String testPackage = "testPackageName";
+        assertEquals(0, mService.mToastQueue.size());
+        mService.isSystemUid = false;
+
+        // package is not suspended
+        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
+                .thenReturn(false);
+
+        // this app is NOT in the foreground
+        when(mActivityManager.getUidImportance(mUid)).thenReturn(IMPORTANCE_NONE);
+
+        // enqueue toast -> toast should still enqueue
+        ((INotificationManager) mService.mService).enqueueTextToast(testPackage, new Binder(),
+                "Text", 2000, 0, null);
+        assertEquals(1, mService.mToastQueue.size());
+    }
+
+    @Test
+    public void testTextToastsCallStatusBar() throws Exception {
+        final String testPackage = "testPackageName";
+        assertEquals(0, mService.mToastQueue.size());
+        mService.isSystemUid = false;
+
+        // package is not suspended
+        when(mPackageManager.isPackageSuspendedForUser(testPackage, UserHandle.getUserId(mUid)))
+                .thenReturn(false);
+
+        // enqueue toast -> no toasts enqueued
+        ((INotificationManager) mService.mService).enqueueTextToast(testPackage, new Binder(),
+                "Text", 2000, 0, null);
+        verify(mStatusBar).showToast(any(), any(), any(), any(), anyInt(), any());
+    }
+
+    @Test
     public void testDisallowToastsFromSuspendedPackages() throws Exception {
         final String testPackage = "testPackageName";
         assertEquals(0, mService.mToastQueue.size());
@@ -4555,7 +4761,7 @@
                 r.getKey(), replyIndex, reply, NOTIFICATION_LOCATION_UNKNOWN,
                 modifiedBeforeSending);
         verify(mAssistants).notifyAssistantSuggestedReplySent(
-                eq(r.sbn), eq(reply), eq(generatedByAssistant));
+                eq(r.getSbn()), eq(reply), eq(generatedByAssistant));
     }
 
     @Test
@@ -4574,7 +4780,7 @@
                 10, 10, r.getKey(), actionIndex, action, notificationVisibility,
                 generatedByAssistant);
         verify(mAssistants).notifyAssistantActionClicked(
-                eq(r.sbn), eq(actionIndex), eq(action), eq(generatedByAssistant));
+                eq(r.getSbn()), eq(actionIndex), eq(action), eq(generatedByAssistant));
     }
 
     @Test
@@ -4647,13 +4853,13 @@
         NotificationRecord r = generateNotificationRecord(mTestNotificationChannel);
         mService.addNotification(r);
 
-        StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, r.sbn.getId(),
-                r.sbn.getTag(), mUid, 0,
+        StatusBarNotification sbn = new StatusBarNotification(PKG, PKG, r.getSbn().getId(),
+                r.getSbn().getTag(), mUid, 0,
                 new Notification.Builder(mContext, mTestNotificationChannel.getId()).build(),
                 new UserHandle(mUid), null, 0);
         NotificationRecord update = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
         mService.addEnqueuedNotification(update);
-        assertNull(update.sbn.getNotification().getSmallIcon());
+        assertNull(update.getSbn().getNotification().getSmallIcon());
 
         NotificationManagerService.PostNotificationRunnable runnable =
                 mService.new PostNotificationRunnable(update.getKey());
@@ -4679,8 +4885,7 @@
         }
 
         // cross user, with permission, no problem
-        TestablePermissions perms = mContext.getTestablePermissions();
-        perms.setPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, PERMISSION_GRANTED);
+        enableInteractAcrossUsers();
         mBinderService.canNotifyAsPackage("src", "target", mContext.getUserId() + 1);
     }
 
@@ -4698,8 +4903,7 @@
         }
 
         // cross user, with permission, no problem
-        TestablePermissions perms = mContext.getTestablePermissions();
-        perms.setPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, PERMISSION_GRANTED);
+        enableInteractAcrossUsers();
         mBinderService.getNotificationChannels("src", "target", mContext.getUserId() + 1);
     }
 
@@ -4827,15 +5031,15 @@
         NotificationRecord nr =
                 generateMessageBubbleNotifRecord(mTestNotificationChannel, "testFlagBubble");
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
         assertEquals(1, notifs.length);
         assertTrue((notifs[0].getNotification().flags & FLAG_BUBBLE) != 0);
         assertTrue(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -4846,15 +5050,15 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                         "testFlagBubble_noFlag_appNotAllowed");
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
         assertEquals(1, notifs.length);
         assertEquals((notifs[0].getNotification().flags & FLAG_BUBBLE), 0);
         assertFalse(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -4873,16 +5077,16 @@
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
         // Say we're foreground
-        when(mActivityManager.getPackageImportance(nr.sbn.getPackageName())).thenReturn(
+        when(mActivityManager.getPackageImportance(nr.getSbn().getPackageName())).thenReturn(
                 IMPORTANCE_FOREGROUND);
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // if notif isn't configured properly it doesn't get to bubble just because app is
         // foreground.
         assertFalse(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -4893,13 +5097,13 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                 "testFlagBubbleNotifs_flag_messaging");
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes allowed, yes messaging, yes bubble
         assertTrue(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -4929,8 +5133,8 @@
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes phone call, yes person, yes foreground service, yes bubble
@@ -4962,8 +5166,8 @@
                 nb.build(), new UserHandle(mUid), null, 0);
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes phone call, yes person, NO foreground service, no bubble
@@ -4993,8 +5197,8 @@
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes phone call, yes foreground service, BUT NO person, no bubble
@@ -5028,8 +5232,8 @@
         sbn.getNotification().flags |= FLAG_FOREGROUND_SERVICE;
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes person, yes foreground service, BUT NO call, no bubble
@@ -5046,13 +5250,13 @@
                 "testFlagBubbleNotifs_noFlag_messaging_appNotAllowed");
 
         // Post the notification
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // not allowed, no bubble
         assertFalse(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -5070,13 +5274,13 @@
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
         // Post the notification
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // no bubble metadata, no bubble
         assertFalse(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -5088,13 +5292,13 @@
                 "testFlagBubbleNotifs_noFlag_messaging_channelNotAllowed");
 
         // Post the notification
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // channel not allowed, no bubble
         assertFalse(mService.getNotificationRecord(
-                nr.sbn.getKey()).getNotification().isBubbleNotification());
+                nr.getSbn().getKey()).getNotification().isBubbleNotification());
     }
 
     @Test
@@ -5160,7 +5364,7 @@
         NotificationRecord nr = new NotificationRecord(mContext, sbn, mTestNotificationChannel);
 
         mBinderService.enqueueNotificationWithTag(PKG, PKG, sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes phone call, yes person, yes foreground service, but channel not allowed, no bubble
@@ -5169,28 +5373,15 @@
     }
 
     @Test
-    public void testCancelAllNotifications_cancelsBubble() throws Exception {
-        final NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel);
-        nr.sbn.getNotification().flags |= FLAG_BUBBLE;
-        mService.addNotification(nr);
-
-        mBinderService.cancelAllNotifications(PKG, nr.sbn.getUserId());
-        waitForIdle();
-
-        StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
-        assertEquals(0, notifs.length);
-        assertEquals(0, mService.getNotificationRecordCount());
-    }
-
-    @Test
-    public void testAppCancelNotifications_cancelsBubbles() throws Exception {
+    public void testCancelNotificationsFromApp_cancelsBubbles() throws Exception {
         final NotificationRecord nrBubble = generateNotificationRecord(mTestNotificationChannel);
-        nrBubble.sbn.getNotification().flags |= FLAG_BUBBLE;
+        nrBubble.getSbn().getNotification().flags |= FLAG_BUBBLE;
 
         // Post the notification
         mBinderService.enqueueNotificationWithTag(PKG, PKG,
                 "testAppCancelNotifications_cancelsBubbles",
-                nrBubble.sbn.getId(), nrBubble.sbn.getNotification(), nrBubble.sbn.getUserId());
+                nrBubble.getSbn().getId(), nrBubble.getSbn().getNotification(),
+                nrBubble.getSbn().getUserId());
         waitForIdle();
 
         StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
@@ -5198,8 +5389,8 @@
         assertEquals(1, mService.getNotificationRecordCount());
 
         mBinderService.cancelNotificationWithTag(PKG, PKG,
-                "testAppCancelNotifications_cancelsBubbles", nrBubble.sbn.getId(),
-                nrBubble.sbn.getUserId());
+                "testAppCancelNotifications_cancelsBubbles", nrBubble.getSbn().getId(),
+                nrBubble.getSbn().getUserId());
         waitForIdle();
 
         StatusBarNotification[] notifs2 = mBinderService.getActiveNotifications(PKG);
@@ -5208,10 +5399,24 @@
     }
 
     @Test
+    public void testCancelAllNotificationsFromApp_cancelsBubble() throws Exception {
+        final NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel);
+        nr.getSbn().getNotification().flags |= FLAG_BUBBLE;
+        mService.addNotification(nr);
+
+        mBinderService.cancelAllNotifications(PKG, nr.getSbn().getUserId());
+        waitForIdle();
+
+        StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
+        assertEquals(0, notifs.length);
+        assertEquals(0, mService.getNotificationRecordCount());
+    }
+
+    @Test
     public void testCancelAllNotificationsFromListener_ignoresBubbles() throws Exception {
         final NotificationRecord nrNormal = generateNotificationRecord(mTestNotificationChannel);
         final NotificationRecord nrBubble = generateNotificationRecord(mTestNotificationChannel);
-        nrBubble.sbn.getNotification().flags |= FLAG_BUBBLE;
+        nrBubble.getSbn().getNotification().flags |= FLAG_BUBBLE;
 
         mService.addNotification(nrNormal);
         mService.addNotification(nrBubble);
@@ -5228,12 +5433,12 @@
     public void testCancelNotificationsFromListener_ignoresBubbles() throws Exception {
         final NotificationRecord nrNormal = generateNotificationRecord(mTestNotificationChannel);
         final NotificationRecord nrBubble = generateNotificationRecord(mTestNotificationChannel);
-        nrBubble.sbn.getNotification().flags |= FLAG_BUBBLE;
+        nrBubble.getSbn().getNotification().flags |= FLAG_BUBBLE;
 
         mService.addNotification(nrNormal);
         mService.addNotification(nrBubble);
 
-        String[] keys = {nrNormal.sbn.getKey(), nrBubble.sbn.getKey()};
+        String[] keys = {nrNormal.getSbn().getKey(), nrBubble.getSbn().getKey()};
         mService.getBinderService().cancelNotificationsFromListener(null, keys);
         waitForIdle();
 
@@ -5243,6 +5448,25 @@
     }
 
     @Test
+    public void testCancelAllNotificationsFromStatusBar_ignoresBubble() throws Exception {
+        // GIVEN a notification bubble
+        final NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel);
+        nr.getSbn().getNotification().flags |= FLAG_BUBBLE;
+        mService.addNotification(nr);
+
+        // WHEN the status bar clears all notifications
+        mService.mNotificationDelegate.onClearAll(mUid, Binder.getCallingPid(),
+                nr.getSbn().getUserId());
+        waitForIdle();
+
+        // THEN the bubble notification does not get removed
+        StatusBarNotification[] notifs = mBinderService.getActiveNotifications(PKG);
+        assertEquals(1, notifs.length);
+        assertEquals(1, mService.getNotificationRecordCount());
+    }
+
+
+    @Test
     public void testGetAllowedAssistantAdjustments() throws Exception {
         List<String> capabilities = mBinderService.getAllowedAssistantAdjustments(null);
         assertNotNull(capabilities);
@@ -5269,7 +5493,7 @@
         Bundle signals = new Bundle();
         signals.putInt(KEY_IMPORTANCE, IMPORTANCE_LOW);
         signals.putInt(KEY_USER_SENTIMENT, USER_SENTIMENT_NEGATIVE);
-        Adjustment adjustment = new Adjustment(r.sbn.getPackageName(), r.getKey(), signals,
+        Adjustment adjustment = new Adjustment(r.getSbn().getPackageName(), r.getKey(), signals,
                "", r.getUser().getIdentifier());
 
         mBinderService.applyAdjustmentFromAssistant(null, adjustment);
@@ -5317,8 +5541,7 @@
         }
 
         // cross user, with permission, no problem
-        TestablePermissions perms = mContext.getTestablePermissions();
-        perms.setPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, PERMISSION_GRANTED);
+        enableInteractAcrossUsers();
         mBinderService.areNotificationsEnabledForPackage(mContext.getPackageName(),
                 mUid + UserHandle.PER_USER_RANGE);
     }
@@ -5334,12 +5557,16 @@
         }
 
         // cross user, with permission, no problem
-        TestablePermissions perms = mContext.getTestablePermissions();
-        perms.setPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, PERMISSION_GRANTED);
+        enableInteractAcrossUsers();
         mBinderService.areBubblesAllowedForPackage(mContext.getPackageName(),
                 mUid + UserHandle.PER_USER_RANGE);
     }
 
+    private void enableInteractAcrossUsers() {
+        TestablePermissions perms = mContext.getTestablePermissions();
+        perms.setPermission(android.Manifest.permission.INTERACT_ACROSS_USERS, PERMISSION_GRANTED);
+    }
+
     @Test
     public void testNotificationBubbleChanged_false() throws Exception {
         // Bubbles are allowed!
@@ -5349,8 +5576,8 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                 "testNotificationBubbleChanged_false");
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // Reset as this is called when the notif is first sent
@@ -5379,8 +5606,8 @@
         // Notif that is not a bubble
         NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel,
                 1, null, false);
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // Would be a normal notification because wouldn't have met requirements to bubble
@@ -5390,9 +5617,9 @@
 
         // Update the notification to be message style / meet bubble requirements
         NotificationRecord nr2 = generateMessageBubbleNotifRecord(mTestNotificationChannel,
-                nr.sbn.getTag());
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr2.sbn.getTag(),
-                nr2.sbn.getId(), nr2.sbn.getNotification(), nr2.sbn.getUserId());
+                nr.getSbn().getTag());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr2.getSbn().getTag(),
+                nr2.getSbn().getId(), nr2.getSbn().getNotification(), nr2.getSbn().getUserId());
         waitForIdle();
 
         // Reset as this is called when the notif is first sent
@@ -5415,8 +5642,8 @@
 
         // Notif that is not a bubble
         NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel);
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // Reset as this is called when the notif is first sent
@@ -5443,11 +5670,11 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel, "tag");
 
         // Bubbles are allowed!
-        setUpPrefsForBubbles(PKG, nr.sbn.getUserId(), true /* global */,
+        setUpPrefsForBubbles(PKG, nr.getSbn().getUserId(), true /* global */,
                 true /* app */, true /* channel */);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // NOT suppressed
@@ -5481,7 +5708,7 @@
     public void testGrantInlineReplyUriPermission_recordExists() throws Exception {
         NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, 0);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // A notification exists for the given record
@@ -5493,12 +5720,13 @@
         Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1);
 
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
 
         // Grant permission called for the UID of SystemUI under the target user ID
         verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
-                eq(nr.sbn.getUid()), eq(nr.sbn.getPackageName()), eq(uri), anyInt(), anyInt(),
-                eq(nr.sbn.getUserId()));
+                eq(nr.getSbn().getUid()), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(),
+                anyInt(), eq(nr.getSbn().getUserId()));
     }
 
     @Test
@@ -5514,12 +5742,13 @@
         int uid = 0; // sysui on primary user
 
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
 
         // Grant permission still called if no NotificationRecord exists for the given key
         verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
-                eq(nr.sbn.getUid()), eq(nr.sbn.getPackageName()), eq(uri), anyInt(), anyInt(),
-                eq(nr.sbn.getUserId()));
+                eq(nr.getSbn().getUid()), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(),
+                anyInt(), eq(nr.getSbn().getUserId()));
     }
 
     @Test
@@ -5528,7 +5757,7 @@
         NotificationRecord nr =
                 generateNotificationRecord(mTestNotificationChannel, UserHandle.USER_ALL);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // A notification exists for the given record
@@ -5540,12 +5769,13 @@
         Uri uri = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, 1);
 
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
 
         // Target user for the grant is USER_ALL instead of USER_SYSTEM
         verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
-                eq(nr.sbn.getUid()), eq(nr.sbn.getPackageName()), eq(uri), anyInt(), anyInt(),
-                eq(UserHandle.USER_SYSTEM));
+                eq(nr.getSbn().getUid()), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(),
+                anyInt(), eq(UserHandle.USER_SYSTEM));
     }
 
     @Test
@@ -5555,7 +5785,7 @@
         NotificationRecord nr =
                 generateNotificationRecord(mTestNotificationChannel, otherUserId);
         mBinderService.enqueueNotificationWithTag(PKG, PKG, "tag",
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // A notification exists for the given record
@@ -5578,11 +5808,11 @@
                 .thenReturn(otherUserUid);
 
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri, nr.sbn.getUser(), nr.sbn.getPackageName(), uid);
+                nr.getKey(), uri, nr.getSbn().getUser(), nr.getSbn().getPackageName(), uid);
 
         // Target user for the grant is USER_ALL instead of USER_SYSTEM
         verify(mUgm, times(1)).grantUriPermissionFromOwner(any(),
-                eq(otherUserUid), eq(nr.sbn.getPackageName()), eq(uri), anyInt(), anyInt(),
+                eq(otherUserUid), eq(nr.getSbn().getPackageName()), eq(uri), anyInt(), anyInt(),
                 eq(otherUserId));
     }
 
@@ -5596,15 +5826,18 @@
 
         // create an inline record with two uris in it
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri1, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri1, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri2, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri2, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
 
         InlineReplyUriRecord record = mService.mInlineReplyRecordsByKey.get(nr.getKey());
         assertNotNull(record); // record exists
         assertEquals(record.getUris().size(), 2); // record has two uris in it
 
-        mService.mNotificationDelegate.clearInlineReplyUriPermissions(nr.getKey(), nr.sbn.getUid());
+        mService.mNotificationDelegate.clearInlineReplyUriPermissions(nr.getKey(),
+                nr.getSbn().getUid());
 
         // permissionOwner destroyed
         verify(mUgmInternal, times(1)).revokeUriPermissionFromOwner(
@@ -5617,7 +5850,8 @@
         NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel, 0);
         reset(mPackageManager);
 
-        mService.mNotificationDelegate.clearInlineReplyUriPermissions(nr.getKey(), nr.sbn.getUid());
+        mService.mNotificationDelegate.clearInlineReplyUriPermissions(nr.getKey(),
+                nr.getSbn().getUid());
 
         // no permissionOwner destroyed
         verify(mUgmInternal, times(0)).revokeUriPermissionFromOwner(
@@ -5635,12 +5869,14 @@
 
         // create an inline record a uri in it
         mService.mNotificationDelegate.grantInlineReplyUriPermission(
-                nr.getKey(), uri1, nr.sbn.getUser(), nr.sbn.getPackageName(), nr.sbn.getUid());
+                nr.getKey(), uri1, nr.getSbn().getUser(), nr.getSbn().getPackageName(),
+                nr.getSbn().getUid());
 
         InlineReplyUriRecord record = mService.mInlineReplyRecordsByKey.get(nr.getKey());
         assertNotNull(record); // record exists
 
-        mService.mNotificationDelegate.clearInlineReplyUriPermissions(nr.getKey(), nr.sbn.getUid());
+        mService.mNotificationDelegate.clearInlineReplyUriPermissions(
+                nr.getKey(), nr.getSbn().getUid());
 
         // permissionOwner destroyed for USER_SYSTEM, not USER_ALL
         verify(mUgmInternal, times(1)).revokeUriPermissionFromOwner(
@@ -5658,8 +5894,8 @@
         // Notification that would typically bubble
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                 "testNotificationBubbles_disabled_lowRamDevice");
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // But we wouldn't be a bubble because the device is low ram & all bubbles are disabled.
@@ -5739,20 +5975,20 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                 "testNotificationBubbles_flagAutoExpandForeground_fails_notForeground");
         // Modify metadata flags
-        nr.sbn.getNotification().getBubbleMetadata().setFlags(
+        nr.getSbn().getNotification().getBubbleMetadata().setFlags(
                 Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE
                         | Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION);
 
         // Ensure we're not foreground
-        when(mActivityManager.getPackageImportance(nr.sbn.getPackageName())).thenReturn(
+        when(mActivityManager.getPackageImportance(nr.getSbn().getPackageName())).thenReturn(
                 IMPORTANCE_VISIBLE);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes allowed, yes messaging, yes bubble
-        Notification notif = mService.getNotificationRecord(nr.sbn.getKey()).getNotification();
+        Notification notif = mService.getNotificationRecord(nr.getSbn().getKey()).getNotification();
         assertTrue(notif.isBubbleNotification());
 
         // Our flags should have failed since we're not foreground
@@ -5769,20 +6005,20 @@
         NotificationRecord nr = generateMessageBubbleNotifRecord(mTestNotificationChannel,
                 "testNotificationBubbles_flagAutoExpandForeground_succeeds_foreground");
         // Modify metadata flags
-        nr.sbn.getNotification().getBubbleMetadata().setFlags(
+        nr.getSbn().getNotification().getBubbleMetadata().setFlags(
                 Notification.BubbleMetadata.FLAG_AUTO_EXPAND_BUBBLE
                         | Notification.BubbleMetadata.FLAG_SUPPRESS_NOTIFICATION);
 
         // Ensure we are in the foreground
-        when(mActivityManager.getPackageImportance(nr.sbn.getPackageName())).thenReturn(
+        when(mActivityManager.getPackageImportance(nr.getSbn().getPackageName())).thenReturn(
                 IMPORTANCE_FOREGROUND);
 
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // yes allowed, yes messaging, yes bubble
-        Notification notif = mService.getNotificationRecord(nr.sbn.getKey()).getNotification();
+        Notification notif = mService.getNotificationRecord(nr.getSbn().getKey()).getNotification();
         assertTrue(notif.isBubbleNotification());
 
         // Our flags should have passed since we are foreground
@@ -5815,8 +6051,8 @@
         when(mLauncherApps.getShortcuts(any(), any())).thenReturn(shortcutInfos);
 
         // Test: Send the bubble notification
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         // Verify:
@@ -5825,7 +6061,7 @@
         verify(mLauncherApps, times(1)).registerCallback(launcherAppsCallback.capture(), any());
 
         // yes allowed, yes messaging w/shortcut, yes bubble
-        Notification notif = mService.getNotificationRecord(nr.sbn.getKey()).getNotification();
+        Notification notif = mService.getNotificationRecord(nr.getSbn().getKey()).getNotification();
         assertTrue(notif.isBubbleNotification());
 
         // Test: Remove the shortcut
@@ -5838,7 +6074,7 @@
         verify(mLauncherApps, times(1)).unregisterCallback(launcherAppsCallback.getValue());
 
         // We're no longer a bubble
-        Notification notif2 = mService.getNotificationRecord(nr.sbn.getKey()).getNotification();
+        Notification notif2 = mService.getNotificationRecord(nr.getSbn().getKey()).getNotification();
         assertFalse(notif2.isBubbleNotification());
     }
 
@@ -5854,8 +6090,9 @@
         // Dismiss summary
         final NotificationVisibility nv = NotificationVisibility.obtain(nrSummary.getKey(), 1, 2,
                 true);
-        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG, nrSummary.sbn.getTag(),
-                nrSummary.sbn.getId(), nrSummary.getUserId(), nrSummary.getKey(),
+        mService.mNotificationDelegate.onNotificationClear(mUid, 0, PKG,
+                nrSummary.getSbn().getTag(),
+                nrSummary.getSbn().getId(), nrSummary.getUserId(), nrSummary.getKey(),
                 NotificationStats.DISMISSAL_SHADE,
                 NotificationStats.DISMISS_SENTIMENT_NEUTRAL, nv);
         waitForIdle();
@@ -5887,6 +6124,26 @@
     }
 
     @Test
+    public void testNotificationBubbles_bubbleStays_whenClicked()
+            throws Exception {
+        // GIVEN a notification that has the auto cancels flag (cancel on click) and is a bubble
+        setUpPrefsForBubbles(PKG, mUid, true /* global */, true /* app */, true /* channel */);
+        final NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel);
+        nr.getSbn().getNotification().flags |= FLAG_BUBBLE | FLAG_AUTO_CANCEL;
+        mService.addNotification(nr);
+
+        // WHEN we click the notification
+        final NotificationVisibility nv = NotificationVisibility.obtain(nr.getKey(), 1, 2, true);
+        mService.mNotificationDelegate.onNotificationClick(mUid, Binder.getCallingPid(),
+                nr.getKey(), nv);
+        waitForIdle();
+
+        // THEN the bubble should still exist
+        StatusBarNotification[] notifsAfter = mBinderService.getActiveNotifications(PKG);
+        assertEquals(1, notifsAfter.length);
+    }
+
+    @Test
     public void testLoadDefaultApprovedServices_emptyResources() {
         TestableResources tr = mContext.getOrCreateTestableResources();
         tr.addOverride(com.android.internal.R.string.config_defaultListenerAccessPackages, "");
@@ -5965,8 +6222,8 @@
     public void testNotificationHistory_addNoisyNotification() throws Exception {
         NotificationRecord nr = generateNotificationRecord(mTestNotificationChannel,
                 null /* tvExtender */);
-        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.sbn.getTag(),
-                nr.sbn.getId(), nr.sbn.getNotification(), nr.sbn.getUserId());
+        mBinderService.enqueueNotificationWithTag(PKG, PKG, nr.getSbn().getTag(),
+                nr.getSbn().getId(), nr.getSbn().getNotification(), nr.getSbn().getUserId());
         waitForIdle();
 
         verify(mHistoryManager, times(1)).addNotification(any());
@@ -6048,4 +6305,104 @@
         assertNull(mBinderService.getConversationNotificationChannel(
                 PKG, 0, PKG, callsParent.getId(), false, conversationId));
     }
+
+    @Test
+    public void testCorrectCategory_systemOn_appCannotTurnOff() {
+        int requested = 0;
+        int system = PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_CONVERSATIONS;
+
+        int actual = mService.correctCategory(requested, PRIORITY_CATEGORY_CONVERSATIONS,
+                system);
+
+        assertEquals(PRIORITY_CATEGORY_CONVERSATIONS, actual);
+    }
+
+    @Test
+    public void testCorrectCategory_systemOff_appTurnOff_noChanges() {
+        int requested = PRIORITY_CATEGORY_CALLS;
+        int system = PRIORITY_CATEGORY_CALLS;
+
+        int actual = mService.correctCategory(requested, PRIORITY_CATEGORY_CONVERSATIONS,
+                system);
+
+        assertEquals(PRIORITY_CATEGORY_CALLS, actual);
+    }
+
+    @Test
+    public void testCorrectCategory_systemOn_appTurnOn_noChanges() {
+        int requested = PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_CONVERSATIONS;
+        int system = PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_CONVERSATIONS;
+
+        int actual = mService.correctCategory(requested, PRIORITY_CATEGORY_CONVERSATIONS,
+                system);
+
+        assertEquals(PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_CONVERSATIONS, actual);
+    }
+
+    @Test
+    public void testCorrectCategory_systemOff_appCannotTurnOn() {
+        int requested = PRIORITY_CATEGORY_CALLS | PRIORITY_CATEGORY_CONVERSATIONS;
+        int system = PRIORITY_CATEGORY_CALLS;
+
+        int actual = mService.correctCategory(requested, PRIORITY_CATEGORY_CONVERSATIONS,
+                system);
+
+        assertEquals(PRIORITY_CATEGORY_CALLS, actual);
+    }
+
+    @Test
+    public void testGetConversationsForPackage_hasShortcut() throws Exception {
+        mService.setPreferencesHelper(mPreferencesHelper);
+        ArrayList<ConversationChannelWrapper> convos = new ArrayList<>();
+        ConversationChannelWrapper convo1 = new ConversationChannelWrapper();
+        NotificationChannel channel1 = new NotificationChannel("a", "a", 1);
+        channel1.setConversationId("parent1", "convo 1");
+        convo1.setNotificationChannel(channel1);
+        convos.add(convo1);
+
+        ConversationChannelWrapper convo2 = new ConversationChannelWrapper();
+        NotificationChannel channel2 = new NotificationChannel("b", "b", 1);
+        channel2.setConversationId("parent1", "convo 2");
+        convo2.setNotificationChannel(channel2);
+        convos.add(convo2);
+        when(mPreferencesHelper.getConversations(anyString(), anyInt())).thenReturn(convos);
+
+        // only one valid shortcut
+        LauncherApps.ShortcutQuery query = new LauncherApps.ShortcutQuery()
+                .setPackage(PKG_P)
+                .setQueryFlags(FLAG_MATCH_DYNAMIC | FLAG_MATCH_PINNED)
+                .setShortcutIds(Arrays.asList(channel1.getConversationId()));
+        ShortcutInfo si = mock(ShortcutInfo.class);
+        when(si.getShortLabel()).thenReturn("Hello");
+        when(mLauncherApps.getShortcuts(any(), any())).thenReturn(Arrays.asList(si));
+
+        List<ConversationChannelWrapper> conversations =
+                mBinderService.getConversationsForPackage(PKG_P, mUid).getList();
+        assertEquals(si, conversations.get(0).getShortcutInfo());
+        assertEquals(si, conversations.get(1).getShortcutInfo());
+
+    }
+
+    @Test
+    public void testGetConversationsForPackage_doesNotHaveShortcut() throws Exception {
+        mService.setPreferencesHelper(mPreferencesHelper);
+        ArrayList<ConversationChannelWrapper> convos = new ArrayList<>();
+        ConversationChannelWrapper convo1 = new ConversationChannelWrapper();
+        NotificationChannel channel1 = new NotificationChannel("a", "a", 1);
+        channel1.setConversationId("parent1", "convo 1");
+        convo1.setNotificationChannel(channel1);
+        convos.add(convo1);
+
+        ConversationChannelWrapper convo2 = new ConversationChannelWrapper();
+        NotificationChannel channel2 = new NotificationChannel("b", "b", 1);
+        channel2.setConversationId("parent1", "convo 2");
+        convo2.setNotificationChannel(channel2);
+        convos.add(convo2);
+        when(mPreferencesHelper.getConversations(anyString(), anyInt())).thenReturn(convos);
+
+        List<ConversationChannelWrapper> conversations =
+                mBinderService.getConversationsForPackage(PKG_P, mUid).getList();
+        assertNull(conversations.get(0).getShortcutInfo());
+        assertNull(conversations.get(1).getShortcutInfo());
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java
index 11972fd6..b120dbe 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerFake.java
@@ -16,6 +16,8 @@
 
 package com.android.server.notification;
 
+import com.android.internal.logging.UiEventLogger;
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -23,19 +25,28 @@
  * Fake implementation of NotificationRecordLogger, for testing.
  */
 class NotificationRecordLoggerFake implements NotificationRecordLogger {
-    class CallRecord extends NotificationRecordPair {
-        public int position, buzzBeepBlink;
+    static class CallRecord extends NotificationRecordPair {
+        static final int INVALID = -1;
+        public int position = INVALID, buzzBeepBlink = INVALID, reason = INVALID;
+        public boolean shouldLog;
+        public UiEventLogger.UiEventEnum event;
         CallRecord(NotificationRecord r, NotificationRecord old, int position,
                 int buzzBeepBlink) {
             super(r, old);
+
             this.position = position;
             this.buzzBeepBlink = buzzBeepBlink;
+            shouldLog = shouldLog(buzzBeepBlink);
+            event = NotificationReportedEvent.fromRecordPair(this);
         }
-        boolean shouldLog() {
-            return shouldLog(buzzBeepBlink);
+        CallRecord(NotificationRecord r, int reason, int dismissalSurface) {
+            super(r, null);
+            this.reason = reason;
+            shouldLog = true;
+            event = NotificationCancelledEvent.fromCancelReason(reason, dismissalSurface);
         }
     }
-    List<CallRecord> mCalls = new ArrayList<CallRecord>();
+    private List<CallRecord> mCalls = new ArrayList<>();
 
     List<CallRecord> getCalls() {
         return mCalls;
@@ -50,4 +61,10 @@
             int position, int buzzBeepBlink) {
         mCalls.add(new CallRecord(r, old, position, buzzBeepBlink));
     }
+
+    @Override
+    public void logNotificationCancelled(NotificationRecord r, int reason, int dismissalSurface) {
+        mCalls.add(new CallRecord(r, reason, dismissalSurface));
+    }
+
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java
new file mode 100644
index 0000000..f051fa4
--- /dev/null
+++ b/services/tests/uiservicestests/src/com/android/server/notification/NotificationRecordLoggerTest.java
@@ -0,0 +1,119 @@
+/*
+ * 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.server.notification;
+
+import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotEquals;
+
+import android.app.Notification;
+import android.app.NotificationChannel;
+import android.os.UserHandle;
+import android.service.notification.StatusBarNotification;
+
+import androidx.test.filters.SmallTest;
+import androidx.test.runner.AndroidJUnit4;
+
+import com.android.server.UiServiceTestCase;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+
+@SmallTest
+@RunWith(AndroidJUnit4.class)
+public class NotificationRecordLoggerTest extends UiServiceTestCase {
+    private static final int UID = 9999;
+    private static final String CHANNEL_ID = "NotificationRecordLoggerTestChannelId";
+
+    private NotificationRecord getNotification(int id, String tag) {
+        final String packageName = mContext.getPackageName();
+        NotificationChannel channel = new NotificationChannel(
+                CHANNEL_ID, CHANNEL_ID, IMPORTANCE_DEFAULT);
+        Notification.Builder nb = new Notification.Builder(mContext, channel.getId());
+        StatusBarNotification sbn = new StatusBarNotification(packageName, packageName, id, tag,
+                UID, 0, nb.build(), new UserHandle(UID), null,
+                0);
+        return new NotificationRecord(mContext, sbn, channel);
+    }
+
+    private NotificationRecordLogger.NotificationRecordPair getNotificationRecordPair(int id,
+            String tag) {
+        return new NotificationRecordLogger.NotificationRecordPair(getNotification(id, tag),
+                null);
+    }
+
+    @Test
+    public void testSmallHash() {
+        assertEquals(0, NotificationRecordLogger.NotificationRecordPair.smallHash(0));
+        final int maxHash = NotificationRecordLogger.NotificationRecordPair.MAX_HASH;
+        assertEquals(0,
+                NotificationRecordLogger.NotificationRecordPair.smallHash(maxHash));
+        assertEquals(0,
+                NotificationRecordLogger.NotificationRecordPair.smallHash(17 * maxHash));
+        assertEquals(maxHash - 1,
+                NotificationRecordLogger.NotificationRecordPair.smallHash(maxHash - 1));
+        assertEquals(maxHash - 1,
+                NotificationRecordLogger.NotificationRecordPair.smallHash(-1));
+    }
+
+    @Test
+    public void testGetNotificationIdHash() {
+        assertEquals(0,
+                getNotificationRecordPair(0, null).getNotificationIdHash());
+        assertEquals(1,
+                getNotificationRecordPair(1, null).getNotificationIdHash());
+        assertEquals(NotificationRecordLogger.NotificationRecordPair.MAX_HASH - 1,
+                getNotificationRecordPair(-1, null).getNotificationIdHash());
+        final String tag = "someTag";
+        final int hash = NotificationRecordLogger.NotificationRecordPair.smallHash(tag.hashCode());
+        assertEquals(hash, getNotificationRecordPair(0, tag).getNotificationIdHash());
+        // We xor the tag and hashcode together before compressing the range. The order of
+        // operations doesn't matter if id is small.
+        assertEquals(1 ^ hash,
+                getNotificationRecordPair(1, tag).getNotificationIdHash());
+        // But it does matter for an id with more 1 bits than fit in the small hash.
+        assertEquals(
+                NotificationRecordLogger.NotificationRecordPair.smallHash(-1 ^ tag.hashCode()),
+                getNotificationRecordPair(-1, tag).getNotificationIdHash());
+        assertNotEquals(-1 ^ hash,
+                NotificationRecordLogger.NotificationRecordPair.smallHash(-1 ^ tag.hashCode()));
+    }
+
+    @Test
+    public void testGetChannelIdHash() {
+        assertEquals(
+                NotificationRecordLogger.NotificationRecordPair.smallHash(CHANNEL_ID.hashCode()),
+                getNotificationRecordPair(0, null).getChannelIdHash());
+        assertNotEquals(
+                NotificationRecordLogger.NotificationRecordPair.smallHash(CHANNEL_ID.hashCode()),
+                CHANNEL_ID.hashCode());
+    }
+
+    @Test
+    public void testGetGroupIdHash() {
+        NotificationRecordLogger.NotificationRecordPair p = getNotificationRecordPair(
+                0, null);
+        assertEquals(0, p.getGroupIdHash());
+        final String group = "someGroup";
+        p.r.setOverrideGroupKey(group);
+        assertEquals(
+                NotificationRecordLogger.NotificationRecordPair.smallHash(group.hashCode()),
+                p.getGroupIdHash());
+    }
+}
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
index c1c74da..3f690b1 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/PreferencesHelperTest.java
@@ -26,6 +26,8 @@
 
 import static com.android.server.notification.PreferencesHelper.NOTIFICATION_CHANNEL_COUNT_LIMIT;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import static junit.framework.Assert.assertNull;
 import static junit.framework.Assert.fail;
 
@@ -64,6 +66,7 @@
 import android.provider.Settings;
 import android.provider.Settings.Global;
 import android.provider.Settings.Secure;
+import android.service.notification.ConversationChannelWrapper;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.testing.TestableContentResolver;
 import android.util.ArrayMap;
@@ -91,6 +94,7 @@
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
@@ -171,7 +175,7 @@
                 .thenReturn(SOUND_URI);
 
         mTestNotificationPolicy = new NotificationManager.Policy(0, 0, 0, 0,
-                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND);
+                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND, 0);
         when(mMockZenModeHelper.getNotificationPolicy()).thenReturn(mTestNotificationPolicy);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
         resetZenModeHelper();
@@ -1430,7 +1434,7 @@
         // start notification policy off with mAreChannelsBypassingDnd = true, but
         // RankingHelper should change to false
         mTestNotificationPolicy = new NotificationManager.Policy(0, 0, 0, 0,
-                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND);
+                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND, 0);
         when(mMockZenModeHelper.getNotificationPolicy()).thenReturn(mTestNotificationPolicy);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
         assertFalse(mHelper.areChannelsBypassingDnd());
@@ -1441,7 +1445,7 @@
     @Test
     public void testSetupNewZenModeHelper_cannotBypass() {
         // start notification policy off with mAreChannelsBypassingDnd = false
-        mTestNotificationPolicy = new NotificationManager.Policy(0, 0, 0, 0, 0);
+        mTestNotificationPolicy = new NotificationManager.Policy(0, 0, 0, 0, 0, 0);
         when(mMockZenModeHelper.getNotificationPolicy()).thenReturn(mTestNotificationPolicy);
         mHelper = new PreferencesHelper(getContext(), mPm, mHandler, mMockZenModeHelper);
         assertFalse(mHelper.areChannelsBypassingDnd());
@@ -2939,4 +2943,97 @@
 
         assertNotNull(mHelper.getNotificationChannel(PKG_O, UID_O, "id", true));
     }
+
+    @Test
+    public void testGetConversations_invalidPkg() {
+        assertThat(mHelper.getConversations("bad", 1)).isEmpty();
+    }
+
+    @Test
+    public void testGetConversations_noConversations() {
+        NotificationChannel channel =
+                new NotificationChannel("not_convo", "not_convo", IMPORTANCE_DEFAULT);
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+
+        assertThat(mHelper.getConversations(PKG_O, UID_O)).isEmpty();
+    }
+
+    @Test
+    public void testGetConversations_noDisabledGroups() {
+        NotificationChannelGroup group = new NotificationChannelGroup("a", "a");
+        group.setBlocked(true);
+        mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
+        NotificationChannel parent = new NotificationChannel("parent", "p", 1);
+        mHelper.createNotificationChannel(PKG_O, UID_O, parent, true, false);
+
+        NotificationChannel channel =
+                new NotificationChannel("convo", "convo", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "convo");
+        channel.setGroup(group.getId());
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+
+        assertThat(mHelper.getConversations(PKG_O, UID_O)).isEmpty();
+    }
+
+    @Test
+    public void testGetConversations_noDeleted() {
+        NotificationChannel parent = new NotificationChannel("parent", "p", 1);
+        mHelper.createNotificationChannel(PKG_O, UID_O, parent, true, false);
+        NotificationChannel channel =
+                new NotificationChannel("convo", "convo", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "convo");
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+        mHelper.deleteNotificationChannel(PKG_O, UID_O, channel.getId());
+
+        assertThat(mHelper.getConversations(PKG_O, UID_O)).isEmpty();
+    }
+
+    @Test
+    public void testGetConversations() {
+        NotificationChannelGroup group = new NotificationChannelGroup("acct", "account_name");
+        mHelper.createNotificationChannelGroup(PKG_O, UID_O, group, true);
+
+        NotificationChannel messages =
+                new NotificationChannel("messages", "Messages", IMPORTANCE_DEFAULT);
+        messages.setGroup(group.getId());
+        mHelper.createNotificationChannel(PKG_O, UID_O, messages, true, false);
+        NotificationChannel calls =
+                new NotificationChannel("calls", "Calls", IMPORTANCE_HIGH);
+        mHelper.createNotificationChannel(PKG_O, UID_O, calls, true, false);
+
+        NotificationChannel channel =
+                new NotificationChannel("A person", "A lovely person", IMPORTANCE_DEFAULT);
+        channel.setGroup(group.getId());
+        channel.setConversationId(messages.getId(), channel.getName().toString());
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel, true, false);
+
+        NotificationChannel channel2 =
+                new NotificationChannel("B person", "B fabulous person", IMPORTANCE_DEFAULT);
+        channel2.setConversationId(calls.getId(), channel.getName().toString());
+        mHelper.createNotificationChannel(PKG_O, UID_O, channel2, true, false);
+
+        Map<String, NotificationChannel> expected = new HashMap<>();
+        expected.put(channel.getId(), channel);
+        expected.put(channel2.getId(), channel2);
+
+        Map<String, CharSequence> expectedGroup = new HashMap<>();
+        expectedGroup.put(channel.getId(), group.getName());
+        expectedGroup.put(channel2.getId(), null);
+
+        Map<String, CharSequence> expectedParentLabel= new HashMap<>();
+        expectedParentLabel.put(channel.getId(), messages.getName());
+        expectedParentLabel.put(channel2.getId(), calls.getName());
+
+        ArrayList<ConversationChannelWrapper> convos = mHelper.getConversations(PKG_O, UID_O);
+        assertThat(convos).hasSize(2);
+
+        for (ConversationChannelWrapper convo : convos) {
+            assertThat(convo.getNotificationChannel())
+                    .isEqualTo(expected.get(convo.getNotificationChannel().getId()));
+            assertThat(convo.getParentChannelLabel())
+                    .isEqualTo(expectedParentLabel.get(convo.getNotificationChannel().getId()));
+            assertThat(convo.getGroupLabel())
+                    .isEqualTo(expectedGroup.get(convo.getNotificationChannel().getId()));
+        }
+    }
 }
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java
index 8774b63..5018166 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/RankingHelperTest.java
@@ -140,7 +140,7 @@
                 .thenReturn(SOUND_URI);
 
         mTestNotificationPolicy = new NotificationManager.Policy(0, 0, 0, 0,
-                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND);
+                NotificationManager.Policy.STATE_CHANNELS_BYPASSING_DND, 0);
         when(mMockZenModeHelper.getNotificationPolicy()).thenReturn(mTestNotificationPolicy);
         mHelper = new RankingHelper(getContext(), mHandler, mConfig, mMockZenModeHelper,
                 mUsageStats, new String[] {ImportanceExtractor.class.getName()});
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
index e18c891..27f72a1 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/RoleObserverTest.java
@@ -35,6 +35,7 @@
 import android.app.AppOpsManager;
 import android.app.IActivityManager;
 import android.app.IUriGrantsManager;
+import android.app.StatsManager;
 import android.app.admin.DevicePolicyManagerInternal;
 import android.app.role.RoleManager;
 import android.app.usage.UsageStatsManagerInternal;
@@ -54,6 +55,8 @@
 import android.util.AtomicFile;
 import android.util.Pair;
 
+import com.android.internal.logging.InstanceIdSequence;
+import com.android.internal.logging.InstanceIdSequenceFake;
 import com.android.server.LocalServices;
 import com.android.server.UiServiceTestCase;
 import com.android.server.lights.LightsManager;
@@ -92,12 +95,15 @@
     @Mock
     private RoleManager mRoleManager;
     NotificationRecordLoggerFake mNotificationRecordLogger = new NotificationRecordLoggerFake();
-
+    private InstanceIdSequence mNotificationInstanceIdSequence = new InstanceIdSequenceFake(
+            1 << 30);
     private List<UserInfo> mUsers;
 
     private static class TestableNotificationManagerService extends NotificationManagerService {
-        TestableNotificationManagerService(Context context, NotificationRecordLogger logger) {
-            super(context, logger);
+        TestableNotificationManagerService(Context context,
+                NotificationRecordLogger logger,
+                InstanceIdSequence notificationInstanceIdSequence) {
+            super(context, logger, notificationInstanceIdSequence);
         }
 
         @Override
@@ -120,7 +126,8 @@
         mUsers.add(new UserInfo(10, "second", 0));
         when(mUm.getUsers()).thenReturn(mUsers);
 
-        mService = new TestableNotificationManagerService(mContext, mNotificationRecordLogger);
+        mService = new TestableNotificationManagerService(mContext, mNotificationRecordLogger,
+                mNotificationInstanceIdSequence);
         mRoleObserver = mService.new RoleObserver(mRoleManager, mPm, mExecutor);
 
         try {
@@ -136,7 +143,8 @@
                     mock(UsageStatsManagerInternal.class),
                     mock(DevicePolicyManagerInternal.class), mock(IUriGrantsManager.class),
                     mock(UriGrantsManagerInternal.class),
-                    mock(AppOpsManager.class), mUm, mock(NotificationHistoryManager.class));
+                    mock(AppOpsManager.class), mUm, mock(NotificationHistoryManager.class),
+                    mock(StatsManager.class));
         } catch (SecurityException e) {
             if (!e.getMessage().contains("Permission Denial: not allowed to send broadcast")) {
                 throw e;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java b/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
index 5841e59..3186d53 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/SnoozeHelperTest.java
@@ -169,11 +169,11 @@
     public void testCleanupContextShouldRemovePersistedRecord() {
         NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
         mSnoozeHelper.snooze(r, "context");
-        mSnoozeHelper.cleanupPersistedContext(r.sbn.getKey());
+        mSnoozeHelper.cleanupPersistedContext(r.getSbn().getKey());
         assertNull(mSnoozeHelper.getSnoozeContextForUnpostedNotification(
                 r.getUser().getIdentifier(),
-                r.sbn.getPackageName(),
-                r.sbn.getKey()
+                r.getSbn().getPackageName(),
+                r.getSbn().getKey()
         ));
     }
 
@@ -201,7 +201,7 @@
         long actualSnoozedUntilDuration = captor.getValue() - SystemClock.elapsedRealtime();
         assertTrue(Math.abs(actualSnoozedUntilDuration - 1000) < 250);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
     }
 
     @Test
@@ -211,7 +211,7 @@
         verify(mAm, never()).setExactAndAllowWhileIdle(
                 anyInt(), anyLong(), any(PendingIntent.class));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
     }
 
     @Test
@@ -221,17 +221,17 @@
         mSnoozeHelper.snooze(r, 1000);
         mSnoozeHelper.snooze(r2 , 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
 
-        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
+        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), "one", 1);
         // 2 = one for each snooze, above, zero for the cancel.
         verify(mAm, times(2)).cancel(any(PendingIntent.class));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
     }
 
     @Test
@@ -243,21 +243,21 @@
         mSnoozeHelper.snooze(r2, 1000);
         mSnoozeHelper.snooze(r3, 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_ALL, r3.getSbn().getPackageName(), r3.getKey()));
 
         mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, false);
         // 3 = once for each snooze above (3), only.
         verify(mAm, times(3)).cancel(any(PendingIntent.class));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_ALL, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_ALL, r3.getSbn().getPackageName(), r3.getKey()));
     }
 
     @Test
@@ -269,21 +269,21 @@
         mSnoozeHelper.snooze(r2, 1000);
         mSnoozeHelper.snooze(r3, 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_SYSTEM, r3.getSbn().getPackageName(), r3.getKey()));
 
         mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, "pkg2");
         // 3 = once for each snooze above (3), only.
         verify(mAm, times(3)).cancel(any(PendingIntent.class));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_SYSTEM, r3.getSbn().getPackageName(), r3.getKey()));
     }
 
     @Test
@@ -291,12 +291,12 @@
         NotificationRecord r = getNotificationRecord("pkg", 1, "one", UserHandle.SYSTEM);
         mSnoozeHelper.snooze(r, 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
 
-        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
+        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), "one", 1);
 
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
     }
 
     @Test
@@ -306,11 +306,11 @@
         mSnoozeHelper.snooze(r, 1000);
         mSnoozeHelper.snooze(r2 , 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
 
-        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.sbn.getPackageName(), "one", 1);
+        mSnoozeHelper.cancel(UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), "one", 1);
 
         mSnoozeHelper.repost(r.getKey(), UserHandle.USER_SYSTEM);
         verify(mCallback, never()).repost(UserHandle.USER_SYSTEM, r);
@@ -507,18 +507,18 @@
         mSnoozeHelper.snooze(r, 1000);
         mSnoozeHelper.snooze(r2, 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
 
         // clear data
         mSnoozeHelper.clearData(UserHandle.USER_SYSTEM, "pkg");
 
         // nothing snoozed; alarms canceled
         assertFalse(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertFalse(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_SYSTEM, r2.getSbn().getPackageName(), r2.getKey()));
         // twice for initial snooze, twice for canceling the snooze
         verify(mAm, times(4)).cancel(any(PendingIntent.class));
     }
@@ -533,21 +533,21 @@
         mSnoozeHelper.snooze(r2, 1000);
         mSnoozeHelper.snooze(r3, 1000);
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_ALL, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_ALL, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_SYSTEM, r3.getSbn().getPackageName(), r3.getKey()));
 
         // clear data
         mSnoozeHelper.clearData(UserHandle.USER_SYSTEM, "pkg");
 
         assertFalse(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r.sbn.getPackageName(), r.getKey()));
+                UserHandle.USER_SYSTEM, r.getSbn().getPackageName(), r.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_ALL, r2.sbn.getPackageName(), r2.getKey()));
+                UserHandle.USER_ALL, r2.getSbn().getPackageName(), r2.getKey()));
         assertTrue(mSnoozeHelper.isSnoozed(
-                UserHandle.USER_SYSTEM, r3.sbn.getPackageName(), r3.getKey()));
+                UserHandle.USER_SYSTEM, r3.getSbn().getPackageName(), r3.getKey()));
         // once for each initial snooze, once for canceling one snooze
         verify(mAm, times(4)).cancel(any(PendingIntent.class));
     }
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 b654764..f7b435e 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeConfigTest.java
@@ -91,6 +91,7 @@
         int priorityCategories = originalPolicy.priorityCategories;
         int priorityCallSenders = originalPolicy.priorityCallSenders;
         int priorityMessageSenders = originalPolicy.priorityMessageSenders;
+        int priorityConversationsSenders = originalPolicy.priorityConversationSenders;
         int suppressedVisualEffects = originalPolicy.suppressedVisualEffects;
         priorityCategories |= Policy.PRIORITY_CATEGORY_ALARMS;
         priorityCategories |= Policy.PRIORITY_CATEGORY_REMINDERS;
@@ -99,7 +100,7 @@
         suppressedVisualEffects |= Policy.SUPPRESSED_EFFECT_AMBIENT;
 
         Policy expectedPolicy = new Policy(priorityCategories, priorityCallSenders,
-                priorityMessageSenders, suppressedVisualEffects, 0);
+                priorityMessageSenders, suppressedVisualEffects, 0, priorityConversationsSenders);
 
         assertEquals(expectedPolicy, config.toNotificationPolicy(zenPolicy));
     }
@@ -235,6 +236,8 @@
         config.areChannelsBypassingDnd = false;
         config.allowCallsFrom = ZenModeConfig.SOURCE_ANYONE;
         config.allowMessagesFrom = ZenModeConfig.SOURCE_ANYONE;
+        config.allowConversations = true;
+        config.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_IMPORTANT;
 
         config.suppressedVisualEffects = 0;
         return config;
@@ -252,6 +255,8 @@
         config.allowReminders = false;
         config.allowEvents = false;
         config.areChannelsBypassingDnd = false;
+        config.allowConversations = false;
+        config.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_NONE;
 
         config.suppressedVisualEffects = 0;
         return config;
diff --git a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java
index 32f389a..fb15088 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeFilteringTest.java
@@ -16,6 +16,16 @@
 
 package com.android.server.notification;
 
+import static android.app.Notification.CATEGORY_CALL;
+import static android.app.Notification.CATEGORY_MESSAGE;
+import static android.app.NotificationManager.IMPORTANCE_DEFAULT;
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_ANYONE;
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_IMPORTANT;
+import static android.app.NotificationManager.Policy.CONVERSATION_SENDERS_NONE;
+import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CALLS;
+import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_CONVERSATIONS;
+import static android.app.NotificationManager.Policy.PRIORITY_CATEGORY_MESSAGES;
+import static android.app.NotificationManager.Policy.PRIORITY_SENDERS_ANY;
 import static android.app.NotificationManager.Policy.SUPPRESSED_EFFECT_STATUS_BAR;
 import static android.provider.Settings.Global.ZEN_MODE_ALARMS;
 import static android.provider.Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
@@ -31,11 +41,10 @@
 
 import android.app.Notification;
 import android.app.NotificationChannel;
-import android.app.NotificationManager;
 import android.app.NotificationManager.Policy;
 import android.media.AudioAttributes;
+import android.os.UserHandle;
 import android.service.notification.StatusBarNotification;
-import android.service.notification.ZenModeConfig;
 import android.test.suitebuilder.annotation.SmallTest;
 import android.testing.AndroidTestingRunner;
 import android.testing.TestableLooper;
@@ -76,6 +85,16 @@
         return new NotificationRecord(mContext, sbn, c);
     }
 
+    private NotificationRecord getConversationRecord(NotificationChannel c,
+            StatusBarNotification sbn) {
+        NotificationRecord r = mock(NotificationRecord.class);
+        when(r.getCriticality()).thenReturn(CriticalNotificationExtractor.NORMAL);
+        when(r.getSbn()).thenReturn(sbn);
+        when(r.getChannel()).thenReturn(c);
+        when(r.isConversation()).thenReturn(true);
+        return r;
+    }
+
     @Test
     public void testIsMessage() {
         NotificationRecord r = getNotificationRecord();
@@ -97,14 +116,14 @@
         assertTrue(mZenModeFiltering.isAlarm(r));
 
         r = getNotificationRecord();
-        r.sbn.getNotification().category = Notification.CATEGORY_ALARM;
+        r.getSbn().getNotification().category = Notification.CATEGORY_ALARM;
         assertTrue(mZenModeFiltering.isAlarm(r));
     }
 
     @Test
     public void testIsAlarm_wrongCategory() {
         NotificationRecord r = getNotificationRecord();
-        r.sbn.getNotification().category = Notification.CATEGORY_CALL;
+        r.getSbn().getNotification().category = CATEGORY_CALL;
         assertFalse(mZenModeFiltering.isAlarm(r));
     }
 
@@ -121,10 +140,10 @@
     @Test
     public void testSuppressDNDInfo_yes_VisEffectsAllowed() {
         NotificationRecord r = getNotificationRecord();
-        when(r.sbn.getPackageName()).thenReturn("android");
-        when(r.sbn.getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
+        when(r.getSbn().getPackageName()).thenReturn("android");
+        when(r.getSbn().getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
         Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects()
-                - SUPPRESSED_EFFECT_STATUS_BAR);
+                - SUPPRESSED_EFFECT_STATUS_BAR, 0);
 
         assertTrue(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
     }
@@ -132,9 +151,9 @@
     @Test
     public void testSuppressDNDInfo_yes_WrongId() {
         NotificationRecord r = getNotificationRecord();
-        when(r.sbn.getPackageName()).thenReturn("android");
-        when(r.sbn.getId()).thenReturn(SystemMessage.NOTE_ACCOUNT_CREDENTIAL_PERMISSION);
-        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects());
+        when(r.getSbn().getPackageName()).thenReturn("android");
+        when(r.getSbn().getId()).thenReturn(SystemMessage.NOTE_ACCOUNT_CREDENTIAL_PERMISSION);
+        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects(), 0);
 
         assertTrue(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
     }
@@ -142,9 +161,9 @@
     @Test
     public void testSuppressDNDInfo_yes_WrongPackage() {
         NotificationRecord r = getNotificationRecord();
-        when(r.sbn.getPackageName()).thenReturn("android2");
-        when(r.sbn.getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
-        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects());
+        when(r.getSbn().getPackageName()).thenReturn("android2");
+        when(r.getSbn().getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
+        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects(), 0);
 
         assertTrue(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
     }
@@ -152,9 +171,9 @@
     @Test
     public void testSuppressDNDInfo_no() {
         NotificationRecord r = getNotificationRecord();
-        when(r.sbn.getPackageName()).thenReturn("android");
-        when(r.sbn.getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
-        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects());
+        when(r.getSbn().getPackageName()).thenReturn("android");
+        when(r.getSbn().getId()).thenReturn(SystemMessage.NOTE_ZEN_UPGRADE);
+        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects(), 0);
 
         assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
         assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_ALARMS, policy, r));
@@ -164,7 +183,7 @@
     @Test
     public void testSuppressAnything_yes_ZenModeOff() {
         NotificationRecord r = getNotificationRecord();
-        when(r.sbn.getPackageName()).thenReturn("bananas");
+        when(r.getSbn().getPackageName()).thenReturn("bananas");
         Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects());
 
         assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_OFF, policy, r));
@@ -174,12 +193,120 @@
     public void testSuppressAnything_bypass_ZenModeOn() {
         NotificationRecord r = getNotificationRecord();
         r.setCriticality(CriticalNotificationExtractor.CRITICAL);
-        when(r.sbn.getPackageName()).thenReturn("bananas");
-        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects());
+        when(r.getSbn().getPackageName()).thenReturn("bananas");
+        Policy policy = new Policy(0, 0, 0, Policy.getAllSuppressedVisualEffects(), 0);
 
         assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_NO_INTERRUPTIONS, policy, r));
 
         r.setCriticality(CriticalNotificationExtractor.CRITICAL_LOW);
         assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_NO_INTERRUPTIONS, policy, r));
     }
+
+    @Test
+    public void testConversation_allAllowed() {
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+        when(r.isConversation()).thenReturn(true);
+
+        Policy policy = new Policy(
+                PRIORITY_CATEGORY_CONVERSATIONS, 0, 0, 0, CONVERSATION_SENDERS_ANYONE);
+
+        assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
+
+    @Test
+    public void testConversation_importantAllowed_isImportant() {
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+        channel.setImportantConversation(true);
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+
+        Policy policy = new Policy(
+                PRIORITY_CATEGORY_CONVERSATIONS, 0, 0, 0, CONVERSATION_SENDERS_IMPORTANT);
+
+        assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
+
+    @Test
+    public void testConversation_importantAllowed_isNotImportant() {
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+
+        Policy policy = new Policy(
+                PRIORITY_CATEGORY_CONVERSATIONS, 0, 0, 0, CONVERSATION_SENDERS_IMPORTANT);
+
+        assertTrue(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
+
+    @Test
+    public void testConversation_noneAllowed_notCallOrMsg() {
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+
+        Policy policy =
+                new Policy(PRIORITY_CATEGORY_CONVERSATIONS, 0, 0, 0, CONVERSATION_SENDERS_NONE);
+
+        assertTrue(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
+
+    @Test
+    public void testConversation_noneAllowed_callAllowed() {
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+        when(r.isCategory(CATEGORY_CALL)).thenReturn(true);
+
+        Policy policy =
+                new Policy(PRIORITY_CATEGORY_CALLS,
+                        PRIORITY_SENDERS_ANY, 0, 0, CONVERSATION_SENDERS_NONE);
+
+        assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
+
+    @Test
+    public void testConversation_noneAllowed_msgAllowed() {
+        when(mMessagingUtil.isMessaging(any())).thenReturn(true);
+        Notification n = new Notification.Builder(mContext, "a").build();
+        StatusBarNotification sbn = new StatusBarNotification("pkg", "pkg", 0, "tag", 0, 0, n,
+                UserHandle.SYSTEM, null, 0);
+
+        NotificationChannel channel = new NotificationChannel("a", "a", IMPORTANCE_DEFAULT);
+        channel.setConversationId("parent", "me, work");
+
+        NotificationRecord r = getConversationRecord(channel, sbn);
+
+        Policy policy =
+                new Policy(PRIORITY_CATEGORY_MESSAGES,
+                        0, PRIORITY_SENDERS_ANY, 0, CONVERSATION_SENDERS_NONE);
+
+        assertFalse(mZenModeFiltering.shouldIntercept(ZEN_MODE_IMPORTANT_INTERRUPTIONS, policy, r));
+    }
 }
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 99771b9..bc2766c 100644
--- a/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
+++ b/services/tests/uiservicestests/src/com/android/server/notification/ZenModeHelperTest.java
@@ -142,7 +142,8 @@
                 + "<allow calls=\"false\" repeatCallers=\"false\" messages=\"true\" "
                 + "reminders=\"false\" events=\"false\" callsFrom=\"1\" messagesFrom=\"2\" "
                 + "visualScreenOff=\"true\" alarms=\"true\" "
-                + "media=\"true\" system=\"false\" />\n"
+                + "media=\"true\" system=\"false\" conversations=\"true\""
+                + " conversationsFrom=\"2\"/>\n"
                 + "<automatic ruleId=\"" + EVENTS_DEFAULT_RULE_ID
                 + "\" enabled=\"false\" snoozing=\"false\""
                 + " name=\"Event\" zen=\"1\""
@@ -218,7 +219,7 @@
     public void testZenOff_NoMuteApplied() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_OFF;
         mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS |
-                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0);
+                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         doNothing().when(mZenModeHelperSpy).applyRestrictions(eq(false), anyBoolean(), anyInt());
@@ -232,7 +233,7 @@
     public void testZenOn_AllowAlarmsMedia_NoAlarmMediaMuteApplied() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
         mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS |
-                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0);
+                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0);
 
         mZenModeHelperSpy.applyRestrictions();
         verify(mZenModeHelperSpy, atLeastOnce()).applyRestrictions(true, false,
@@ -244,7 +245,7 @@
     @Test
     public void testZenOn_DisallowAlarmsMedia_AlarmMediaMuteApplied() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
         verify(mZenModeHelperSpy, atLeastOnce()).applyRestrictions(true, true,
                 AudioAttributes.USAGE_ALARM);
@@ -260,7 +261,7 @@
     public void testTotalSilence() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_NO_INTERRUPTIONS;
         mZenModeHelperSpy.mConsolidatedPolicy = new Policy(Policy.PRIORITY_CATEGORY_ALARMS |
-                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0);
+                Policy.PRIORITY_CATEGORY_MEDIA, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         // Total silence will silence alarms, media and system noises (but not vibrations)
@@ -281,7 +282,7 @@
     @Test
     public void testAlarmsOnly_alarmMediaMuteNotApplied() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_ALARMS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         // Alarms only mode will not silence alarms
@@ -304,7 +305,7 @@
     @Test
     public void testAlarmsOnly_callsMuteApplied() {
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_ALARMS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         // Alarms only mode will silence calls despite priority-mode config
@@ -318,7 +319,7 @@
     public void testAlarmsOnly_allZenConfigToggledCannotBypass_alarmMuteNotApplied() {
         // Only audio attributes with SUPPRESIBLE_NEVER can bypass
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_ALARMS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         verify(mZenModeHelperSpy, atLeastOnce()).applyRestrictions(false, false,
@@ -330,7 +331,7 @@
         // Only audio attributes with SUPPRESIBLE_NEVER can bypass
         // with special case USAGE_ASSISTANCE_SONIFICATION
         mZenModeHelperSpy.mZenMode = Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         for (int usage : AudioAttributes.SDK_USAGES) {
@@ -352,7 +353,7 @@
     public void testApplyRestrictions_whitelist_priorityOnlyMode() {
         mZenModeHelperSpy.setPriorityOnlyDndExemptPackages(new String[] {PKG_O});
         mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         for (int usage : AudioAttributes.SDK_USAGES) {
@@ -367,7 +368,7 @@
     public void testApplyRestrictions_whitelist_alarmsOnlyMode() {
         mZenModeHelperSpy.setPriorityOnlyDndExemptPackages(new String[] {PKG_O});
         mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_ALARMS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         for (int usage : AudioAttributes.SDK_USAGES) {
@@ -382,7 +383,7 @@
     public void testApplyRestrictions_whitelist_totalSilenceMode() {
         mZenModeHelperSpy.setPriorityOnlyDndExemptPackages(new String[] {PKG_O});
         mZenModeHelperSpy.mZenMode = Global.ZEN_MODE_NO_INTERRUPTIONS;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.applyRestrictions();
 
         for (int usage : AudioAttributes.SDK_USAGES) {
@@ -401,7 +402,7 @@
         Settings.Secure.putInt(mContentResolver, Settings.Secure.SHOW_ZEN_UPGRADE_NOTIFICATION, 1);
         Settings.Secure.putInt(mContentResolver, Settings.Secure.ZEN_SETTINGS_UPDATED, 0);
         mZenModeHelperSpy.mIsBootComplete = true;
-        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0);
+        mZenModeHelperSpy.mConsolidatedPolicy = new Policy(0, 0, 0, 0, 0, 0);
         mZenModeHelperSpy.setZenModeSetting(Settings.Global.ZEN_MODE_IMPORTANT_INTERRUPTIONS);
 
         verify(mZenModeHelperSpy, times(1)).createZenUpgradeNotification();
@@ -452,7 +453,8 @@
         mZenModeHelperSpy.mConfig.allowCalls = false;
         mZenModeHelperSpy.mConfig.allowMessages = false;
         mZenModeHelperSpy.mConfig.allowEvents = false;
-        mZenModeHelperSpy.mConfig.allowRepeatCallers= false;
+        mZenModeHelperSpy.mConfig.allowRepeatCallers = false;
+        mZenModeHelperSpy.mConfig.allowConversations = false;
 
         // 2. apply priority only zen - verify ringer is unchanged
         mZenModeHelperSpy.applyZenToRingerMode();
@@ -509,7 +511,8 @@
         mZenModeHelperSpy.mConfig.allowCalls = false;
         mZenModeHelperSpy.mConfig.allowMessages = false;
         mZenModeHelperSpy.mConfig.allowEvents = false;
-        mZenModeHelperSpy.mConfig.allowRepeatCallers= false;
+        mZenModeHelperSpy.mConfig.allowRepeatCallers = false;
+        mZenModeHelperSpy.mConfig.allowConversations = false;
         ZenModeHelper.RingerModeDelegate ringerModeDelegateRingerNotMuted =
                 mZenModeHelperSpy.new RingerModeDelegate();
 
@@ -694,7 +697,9 @@
         mZenModeHelperSpy.mConfig.allowCalls = true;
         mZenModeHelperSpy.mConfig.allowMessages = true;
         mZenModeHelperSpy.mConfig.allowEvents = true;
-        mZenModeHelperSpy.mConfig.allowRepeatCallers= true;
+        mZenModeHelperSpy.mConfig.allowRepeatCallers = true;
+        mZenModeHelperSpy.mConfig.allowConversations = true;
+        mZenModeHelperSpy.mConfig.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_ANYONE;
         mZenModeHelperSpy.mConfig.suppressedVisualEffects = SUPPRESSED_EFFECT_BADGE;
         mZenModeHelperSpy.mConfig.manualRule = new ZenModeConfig.ZenRule();
         mZenModeHelperSpy.mConfig.manualRule.component = new ComponentName("a", "a");
@@ -716,7 +721,9 @@
         mZenModeHelperSpy.mConfig.allowCalls = true;
         mZenModeHelperSpy.mConfig.allowMessages = true;
         mZenModeHelperSpy.mConfig.allowEvents = true;
-        mZenModeHelperSpy.mConfig.allowRepeatCallers= true;
+        mZenModeHelperSpy.mConfig.allowRepeatCallers = true;
+        mZenModeHelperSpy.mConfig.allowConversations = true;
+        mZenModeHelperSpy.mConfig.allowConversationsFrom = ZenPolicy.CONVERSATION_SENDERS_ANYONE;
         mZenModeHelperSpy.mConfig.suppressedVisualEffects = SUPPRESSED_EFFECT_BADGE;
         mZenModeHelperSpy.mConfig.manualRule = new ZenModeConfig.ZenRule();
         mZenModeHelperSpy.mConfig.manualRule.zenMode =
diff --git a/services/tests/wmtests/AndroidManifest.xml b/services/tests/wmtests/AndroidManifest.xml
index 8c454424..123bb07 100644
--- a/services/tests/wmtests/AndroidManifest.xml
+++ b/services/tests/wmtests/AndroidManifest.xml
@@ -37,6 +37,7 @@
     <uses-permission android:name="android.permission.WAKE_LOCK" />
     <uses-permission android:name="android.permission.REORDER_TASKS" />
     <uses-permission android:name="android.permission.READ_DEVICE_CONFIG" />
+    <uses-permission android:name="android.permission.STATUS_BAR" />
 
     <!-- TODO: Remove largeHeap hack when memory leak is fixed (b/123984854) -->
     <application android:debuggable="true"
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
index ebe4ab9..a0ea729 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityRecordTests.java
@@ -29,6 +29,7 @@
 import static android.view.WindowManager.TRANSIT_TASK_CLOSE;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.anyBoolean;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.atLeast;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doAnswer;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
@@ -140,6 +141,19 @@
     }
 
     @Test
+    public void testRemoveChildWithOverlayActivity() {
+        final ActivityRecord overlayActivity =
+                new ActivityBuilder(mService).setTask(mTask).build();
+        overlayActivity.setTaskOverlay(true);
+        final ActivityRecord overlayActivity2 =
+                new ActivityBuilder(mService).setTask(mTask).build();
+        overlayActivity2.setTaskOverlay(true);
+
+        mTask.removeChild(overlayActivity2, "test");
+        verify(mSupervisor, never()).removeTask(any(), anyBoolean(), anyBoolean(), any());
+    }
+
+    @Test
     public void testNoCleanupMovingActivityInSameStack() {
         final Task newTask = new TaskBuilder(mService.mStackSupervisor).setStack(mStack).build();
         mActivity.reparent(newTask, 0, null /*reason*/);
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
index 399cf49..af04f76 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStartInterceptorTest.java
@@ -16,6 +16,7 @@
 
 package com.android.server.wm;
 
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
 import static android.content.pm.ApplicationInfo.FLAG_SUSPENDED;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
@@ -44,6 +45,7 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.internal.app.BlockedAppActivity;
 import com.android.internal.app.HarmfulAppWarningActivity;
 import com.android.internal.app.SuspendedAppActivity;
 import com.android.internal.app.UnlaunchableAppActivity;
@@ -105,6 +107,8 @@
     private PackageManagerService mPackageManager;
     @Mock
     private ActivityManagerInternal mAmInternal;
+    @Mock
+    private LockTaskController mLockTaskController;
 
     private ActivityStartInterceptor mInterceptor;
     private ActivityInfo mAInfo = new ActivityInfo();
@@ -116,7 +120,7 @@
         mInterceptor = new ActivityStartInterceptor(
                 mService, mSupervisor, mRootWindowContainer, mContext);
         mInterceptor.setStates(TEST_USER_ID, TEST_REAL_CALLING_PID, TEST_REAL_CALLING_UID,
-                TEST_START_FLAGS, TEST_CALLING_PACKAGE);
+                TEST_START_FLAGS, TEST_CALLING_PACKAGE, null);
 
         // Mock ActivityManagerInternal
         LocalServices.removeServiceForTest(ActivityManagerInternal.class);
@@ -145,6 +149,13 @@
         when(mPackageManager.getHarmfulAppWarning(TEST_PACKAGE_NAME, TEST_USER_ID))
                 .thenReturn(null);
 
+        // Mock LockTaskController
+        mAInfo.lockTaskLaunchMode = LOCK_TASK_LAUNCH_MODE_DEFAULT;
+        when(mService.getLockTaskController()).thenReturn(mLockTaskController);
+        when(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT))
+                .thenReturn(true);
+
         // Initialise activity info
         mAInfo.applicationInfo = new ApplicationInfo();
         mAInfo.packageName = mAInfo.applicationInfo.packageName = TEST_PACKAGE_NAME;
@@ -196,6 +207,18 @@
     }
 
     @Test
+    public void testInterceptLockTaskModeViolationPackage() {
+        when(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT))
+                .thenReturn(false);
+
+        assertTrue(mInterceptor.intercept(null, null, mAInfo, null, null, 0, 0, null));
+
+        assertTrue(BlockedAppActivity.createIntent(TEST_USER_ID, TEST_PACKAGE_NAME)
+                .filterEquals(mInterceptor.mIntent));
+    }
+
+    @Test
     public void testInterceptQuietProfile() {
         // GIVEN that the user the activity is starting as is currently in quiet mode
         when(mUserManager.isQuietModeEnabled(eq(UserHandle.of(TEST_USER_ID)))).thenReturn(true);
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 bab877e..fa182d6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityStarterTests.java
@@ -275,7 +275,7 @@
 
         if (containsConditions(preconditions, PRECONDITION_CANNOT_START_ANY_ACTIVITY)) {
             doReturn(false).when(service.mStackSupervisor).checkStartAnyActivityPermission(
-                    any(), any(), any(), anyInt(), anyInt(), anyInt(), any(),
+                    any(), any(), any(), anyInt(), anyInt(), anyInt(), any(), any(),
                     anyBoolean(), anyBoolean(), any(), any(), any());
         }
 
@@ -349,7 +349,7 @@
             boolean mockGetLaunchStack) {
         // always allow test to start activity.
         doReturn(true).when(mSupervisor).checkStartAnyActivityPermission(
-                any(), any(), any(), anyInt(), anyInt(), anyInt(), any(),
+                any(), any(), any(), anyInt(), anyInt(), anyInt(), any(), any(),
                 anyBoolean(), anyBoolean(), any(), any(), any());
 
         if (mockGetLaunchStack) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
index d22502d..4532400 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTaskManagerServiceTests.java
@@ -16,9 +16,6 @@
 
 package com.android.server.wm;
 
-import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
-import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
-
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.any;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doNothing;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
@@ -27,17 +24,14 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 
 import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
-import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
 import static org.mockito.ArgumentMatchers.anyString;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.when;
 
 import android.app.Activity;
-import android.app.ActivityManager;
 import android.app.PictureInPictureParams;
 import android.app.servertransaction.ClientTransaction;
 import android.app.servertransaction.EnterPipRequestedItem;
@@ -46,7 +40,6 @@
 import android.os.IBinder;
 import android.os.RemoteException;
 import android.view.IDisplayWindowListener;
-import android.view.WindowContainerTransaction;
 
 import androidx.test.filters.MediumTest;
 
@@ -126,47 +119,6 @@
     }
 
     @Test
-    public void testTaskTransaction() {
-        removeGlobalMinSizeRestriction();
-        final ActivityStack stack = new StackBuilder(mRootWindowContainer)
-                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
-        final Task task = stack.getTopMostTask();
-        WindowContainerTransaction t = new WindowContainerTransaction();
-        Rect newBounds = new Rect(10, 10, 100, 100);
-        t.setBounds(task.mRemoteToken, new Rect(10, 10, 100, 100));
-        mService.applyContainerTransaction(t);
-        assertEquals(newBounds, task.getBounds());
-    }
-
-    @Test
-    public void testStackTransaction() {
-        removeGlobalMinSizeRestriction();
-        final ActivityStack stack = new StackBuilder(mRootWindowContainer)
-                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
-        ActivityManager.StackInfo info =
-                mService.getStackInfo(WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD);
-        WindowContainerTransaction t = new WindowContainerTransaction();
-        assertEquals(stack.mRemoteToken, info.stackToken);
-        Rect newBounds = new Rect(10, 10, 100, 100);
-        t.setBounds(info.stackToken, new Rect(10, 10, 100, 100));
-        mService.applyContainerTransaction(t);
-        assertEquals(newBounds, stack.getBounds());
-    }
-
-    @Test
-    public void testContainerChanges() {
-        removeGlobalMinSizeRestriction();
-        final ActivityStack stack = new StackBuilder(mRootWindowContainer)
-                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
-        final Task task = stack.getTopMostTask();
-        WindowContainerTransaction t = new WindowContainerTransaction();
-        assertTrue(task.isFocusable());
-        t.setFocusable(stack.mRemoteToken, false);
-        mService.applyContainerTransaction(t);
-        assertFalse(task.isFocusable());
-    }
-
-    @Test
     public void testDisplayWindowListener() {
         final ArrayList<Integer> added = new ArrayList<>();
         final ArrayList<Integer> changed = new ArrayList<>();
diff --git a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
index eb84d0a..c93dc97 100644
--- a/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/ActivityTestsBase.java
@@ -255,10 +255,10 @@
 
             final ActivityRecord activity = new ActivityRecord(mService, null /* caller */,
                     mLaunchedFromPid /* launchedFromPid */, mLaunchedFromUid /* launchedFromUid */,
-                    null, intent, null, aInfo /*aInfo*/, new Configuration(), null /* resultTo */,
-                    null /* resultWho */, 0 /* reqCode */, false /*componentSpecified*/,
-                    false /* rootVoiceInteraction */, mService.mStackSupervisor, options,
-                    null /* sourceRecord */);
+                    null, null, intent, null, aInfo /*aInfo*/, new Configuration(),
+                    null /* resultTo */, null /* resultWho */, 0 /* reqCode */,
+                    false /*componentSpecified*/, false /* rootVoiceInteraction */,
+                    mService.mStackSupervisor, options, null /* sourceRecord */);
             spyOn(activity);
             if (mTask != null) {
                 // fullscreen value is normally read from resources in ctor, so for testing we need
diff --git a/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java b/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java
index 71390db..0f54895 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AnimatingActivityRegistryTest.java
@@ -21,6 +21,7 @@
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyZeroInteractions;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
 
 import static org.junit.Assert.assertFalse;
@@ -69,8 +70,10 @@
         final AnimatingActivityRegistry registry =
                 activity1.getStack().getAnimatingActivityRegistry();
 
-        activity1.startAnimation(activity1.getPendingTransaction(), mAdapter, false /* hidden */);
-        activity2.startAnimation(activity1.getPendingTransaction(), mAdapter, false /* hidden */);
+        activity1.startAnimation(activity1.getPendingTransaction(), mAdapter, false /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
+        activity2.startAnimation(activity1.getPendingTransaction(), mAdapter, false /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         assertTrue(activity1.isAnimating(TRANSITION));
         assertTrue(activity2.isAnimating(TRANSITION));
 
@@ -91,8 +94,10 @@
         final AnimatingActivityRegistry registry =
                 window1.getStack().getAnimatingActivityRegistry();
 
-        window1.startAnimation(window1.getPendingTransaction(), mAdapter, false /* hidden */);
-        window2.startAnimation(window1.getPendingTransaction(), mAdapter, false /* hidden */);
+        window1.startAnimation(window1.getPendingTransaction(), mAdapter, false /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
+        window2.startAnimation(window1.getPendingTransaction(), mAdapter, false /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         assertTrue(window1.isAnimating(TRANSITION));
         assertTrue(window2.isAnimating(TRANSITION));
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java
index b0f3b42..6e78a27 100644
--- a/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/AppWindowTokenAnimationTests.java
@@ -20,6 +20,7 @@
 import static android.app.WindowConfiguration.WINDOWING_MODE_FULLSCREEN;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 
 import static com.google.common.truth.Truth.assertThat;
 
@@ -70,7 +71,8 @@
     public void clipAfterAnim_boundsLayerIsCreated() {
         mActivity.mNeedsAnimationBoundsLayer = true;
 
-        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         verify(mTransaction).reparent(eq(mActivity.getSurfaceControl()),
                 eq(mActivity.mSurfaceAnimator.mLeash));
         verify(mTransaction).reparent(eq(mActivity.mSurfaceAnimator.mLeash),
@@ -82,7 +84,8 @@
         mActivity.mNeedsAnimationBoundsLayer = true;
         mActivity.mNeedsZBoost = true;
 
-        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         verify(mTransaction).setLayer(eq(mActivity.mAnimationBoundsLayer),
                 intThat(layer -> layer >= ActivityRecord.Z_BOOST_BASE));
     }
@@ -91,15 +94,18 @@
     @FlakyTest(bugId = 131005232)
     public void clipAfterAnim_boundsLayerIsDestroyed() {
         mActivity.mNeedsAnimationBoundsLayer = true;
-        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         final SurfaceControl leash = mActivity.mSurfaceAnimator.mLeash;
         final SurfaceControl animationBoundsLayer = mActivity.mAnimationBoundsLayer;
         final ArgumentCaptor<SurfaceAnimator.OnAnimationFinishedCallback> callbackCaptor =
                 ArgumentCaptor.forClass(
                         SurfaceAnimator.OnAnimationFinishedCallback.class);
-        verify(mSpec).startAnimation(any(), any(), callbackCaptor.capture());
+        verify(mSpec).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION),
+                callbackCaptor.capture());
 
-        callbackCaptor.getValue().onAnimationFinished(mSpec);
+        callbackCaptor.getValue().onAnimationFinished(
+                ANIMATION_TYPE_APP_TRANSITION, mSpec);
         verify(mTransaction).remove(eq(leash));
         verify(mTransaction).remove(eq(animationBoundsLayer));
         assertThat(mActivity.mNeedsAnimationBoundsLayer).isFalse();
@@ -108,7 +114,8 @@
     @Test
     public void clipAfterAnimCancelled_boundsLayerIsDestroyed() {
         mActivity.mNeedsAnimationBoundsLayer = true;
-        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         final SurfaceControl leash = mActivity.mSurfaceAnimator.mLeash;
         final SurfaceControl animationBoundsLayer = mActivity.mAnimationBoundsLayer;
 
@@ -123,7 +130,8 @@
     public void clipNoneAnim_boundsLayerIsNotCreated() {
         mActivity.mNeedsAnimationBoundsLayer = false;
 
-        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mActivity.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         verify(mTransaction).reparent(eq(mActivity.getSurfaceControl()),
                 eq(mActivity.mSurfaceAnimator.mLeash));
         assertThat(mActivity.mAnimationBoundsLayer).isNull();
diff --git a/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java b/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java
index 7344fa4..77ceeed 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DimmerTests.java
@@ -22,11 +22,13 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spy;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_DIMMER;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.ArgumentMatchers.isNull;
 import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.when;
@@ -37,6 +39,9 @@
 import android.view.SurfaceControl;
 import android.view.SurfaceSession;
 
+import com.android.server.wm.SurfaceAnimator.AnimationType;
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -114,11 +119,11 @@
     private static class SurfaceAnimatorStarterImpl implements Dimmer.SurfaceAnimatorStarter {
         @Override
         public void startAnimation(SurfaceAnimator surfaceAnimator, SurfaceControl.Transaction t,
-                AnimationAdapter anim, boolean hidden,
-                @Nullable Runnable animationFinishedCallback) {
-            surfaceAnimator.mStaticAnimationFinishedCallback.run();
+                AnimationAdapter anim, boolean hidden, @AnimationType int type,
+                @Nullable OnAnimationFinishedCallback animationFinishedCallback) {
+            surfaceAnimator.mStaticAnimationFinishedCallback.onAnimationFinished(type, anim);
             if (animationFinishedCallback != null) {
-                animationFinishedCallback.run();
+                animationFinishedCallback.onAnimationFinished(type, anim);
             }
         }
     }
@@ -224,7 +229,7 @@
         mDimmer.updateDims(mTransaction, new Rect());
         verify(mSurfaceAnimatorStarter).startAnimation(any(SurfaceAnimator.class), any(
                 SurfaceControl.Transaction.class), any(AnimationAdapter.class), anyBoolean(),
-                isNull());
+                eq(ANIMATION_TYPE_DIMMER), isNull());
         verify(mHost.getPendingTransaction()).remove(dimLayer);
     }
 
@@ -282,7 +287,7 @@
         mDimmer.updateDims(mTransaction, new Rect());
         verify(mSurfaceAnimatorStarter, never()).startAnimation(any(SurfaceAnimator.class), any(
                 SurfaceControl.Transaction.class), any(AnimationAdapter.class), anyBoolean(),
-                isNull());
+                eq(ANIMATION_TYPE_DIMMER), isNull());
         verify(mTransaction).remove(dimLayer);
     }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java
new file mode 100644
index 0000000..c1a1d5e
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaProviderTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.server.wm;
+
+import static com.android.server.wm.testing.Assert.assertThrows;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import android.content.res.Resources;
+import android.platform.test.annotations.Presubmit;
+
+import org.hamcrest.Matchers;
+import org.junit.Assert;
+import org.junit.Test;
+
+@Presubmit
+public class DisplayAreaProviderTest {
+
+    @Test
+    public void testFromResources_emptyProvider() {
+        Assert.assertThat(DisplayAreaPolicy.Provider.fromResources(resourcesWithProvider("")),
+                Matchers.instanceOf(DisplayAreaPolicy.Default.Provider.class));
+    }
+
+    @Test
+    public void testFromResources_nullProvider() {
+        Assert.assertThat(DisplayAreaPolicy.Provider.fromResources(resourcesWithProvider(null)),
+                Matchers.instanceOf(DisplayAreaPolicy.Default.Provider.class));
+    }
+
+    @Test
+    public void testFromResources_customProvider() {
+        Assert.assertThat(DisplayAreaPolicy.Provider.fromResources(resourcesWithProvider(
+                TestProvider.class.getName())), Matchers.instanceOf(TestProvider.class));
+    }
+
+    @Test
+    public void testFromResources_badProvider_notImplementingProviderInterface() {
+        assertThrows(IllegalStateException.class, () -> {
+            DisplayAreaPolicy.Provider.fromResources(resourcesWithProvider(
+                    Object.class.getName()));
+        });
+    }
+
+    @Test
+    public void testFromResources_badProvider_doesntExist() {
+        assertThrows(IllegalStateException.class, () -> {
+            DisplayAreaPolicy.Provider.fromResources(resourcesWithProvider(
+                    "com.android.wmtests.nonexistent.Provider"));
+        });
+    }
+
+    private static Resources resourcesWithProvider(String provider) {
+        Resources mock = mock(Resources.class);
+        when(mock.getString(
+                com.android.internal.R.string.config_deviceSpecificDisplayAreaPolicyProvider))
+                .thenReturn(provider);
+        return mock;
+    }
+
+    static class TestProvider implements DisplayAreaPolicy.Provider {
+
+        @Override
+        public DisplayAreaPolicy instantiate(WindowManagerService wmService, DisplayContent content,
+                DisplayArea.Root root, DisplayArea<? extends WindowContainer> imeContainer,
+                DisplayContent.TaskContainers taskContainers) {
+            throw new RuntimeException("test stub");
+        }
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
new file mode 100644
index 0000000..618e608
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayAreaTest.java
@@ -0,0 +1,128 @@
+/*
+ * 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.server.wm;
+
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
+import static android.view.WindowManager.LayoutParams.TYPE_PRESENTATION;
+import static android.view.WindowManager.LayoutParams.TYPE_WALLPAPER;
+
+import static com.android.server.wm.DisplayArea.Type.ABOVE_TASKS;
+import static com.android.server.wm.DisplayArea.Type.ANY;
+import static com.android.server.wm.DisplayArea.Type.BELOW_TASKS;
+import static com.android.server.wm.DisplayArea.Type.checkChild;
+import static com.android.server.wm.DisplayArea.Type.checkSiblings;
+import static com.android.server.wm.DisplayArea.Type.typeOf;
+import static com.android.server.wm.testing.Assert.assertThrows;
+
+import static org.junit.Assert.assertEquals;
+import static org.mockito.Mockito.mock;
+
+import android.os.Binder;
+import android.platform.test.annotations.Presubmit;
+import android.view.SurfaceControl;
+
+import org.junit.Rule;
+import org.junit.Test;
+
+@Presubmit
+public class DisplayAreaTest {
+
+    @Rule
+    public SystemServicesTestRule mWmsRule = new SystemServicesTestRule();
+
+    @Test
+    public void testDisplayArea_positionChanged_throwsIfIncompatibleChild() {
+        WindowManagerService wms = mWmsRule.getWindowManagerService();
+        DisplayArea<WindowContainer> parent = new DisplayArea<>(wms, BELOW_TASKS, "Parent");
+        DisplayArea<WindowContainer> child = new DisplayArea<>(wms, ANY, "Child");
+
+        assertThrows(IllegalStateException.class, () -> parent.addChild(child, 0));
+    }
+
+    @Test
+    public void testDisplayArea_positionChanged_throwsIfIncompatibleSibling() {
+        WindowManagerService wms = mWmsRule.getWindowManagerService();
+        DisplayArea<WindowContainer> parent = new SurfacelessDisplayArea<>(wms, ANY, "Parent");
+        DisplayArea<WindowContainer> child1 = new DisplayArea<>(wms, ANY, "Child1");
+        DisplayArea<WindowContainer> child2 = new DisplayArea<>(wms, ANY, "Child2");
+
+        parent.addChild(child1, 0);
+        assertThrows(IllegalStateException.class, () -> parent.addChild(child2, 0));
+    }
+
+    @Test
+    public void testType_typeOf() {
+        WindowManagerService wms = mWmsRule.getWindowManagerService();
+
+        assertEquals(ABOVE_TASKS, typeOf(new DisplayArea<>(wms, ABOVE_TASKS, "test")));
+        assertEquals(ANY, typeOf(new DisplayArea<>(wms, ANY, "test")));
+        assertEquals(BELOW_TASKS, typeOf(new DisplayArea<>(wms, BELOW_TASKS, "test")));
+
+        assertEquals(ABOVE_TASKS, typeOf(createWindowToken(TYPE_APPLICATION_OVERLAY)));
+        assertEquals(ABOVE_TASKS, typeOf(createWindowToken(TYPE_PRESENTATION)));
+        assertEquals(BELOW_TASKS, typeOf(createWindowToken(TYPE_WALLPAPER)));
+
+        assertThrows(IllegalArgumentException.class, () -> typeOf(mock(ActivityRecord.class)));
+        assertThrows(IllegalArgumentException.class, () -> typeOf(mock(WindowContainer.class)));
+    }
+
+    @Test
+    public void testType_checkSiblings() {
+        checkSiblings(BELOW_TASKS, BELOW_TASKS);
+        checkSiblings(BELOW_TASKS, ANY);
+        checkSiblings(BELOW_TASKS, ABOVE_TASKS);
+        checkSiblings(ANY, ABOVE_TASKS);
+        checkSiblings(ABOVE_TASKS, ABOVE_TASKS);
+
+        assertThrows(IllegalStateException.class, () -> checkSiblings(ABOVE_TASKS, BELOW_TASKS));
+        assertThrows(IllegalStateException.class, () -> checkSiblings(ABOVE_TASKS, ANY));
+        assertThrows(IllegalStateException.class, () -> checkSiblings(ANY, ANY));
+        assertThrows(IllegalStateException.class, () -> checkSiblings(ANY, BELOW_TASKS));
+    }
+
+    @Test
+    public void testType_checkChild() {
+        checkChild(ANY, ANY);
+        checkChild(ANY, ABOVE_TASKS);
+        checkChild(ANY, BELOW_TASKS);
+        checkChild(ABOVE_TASKS, ABOVE_TASKS);
+        checkChild(BELOW_TASKS, BELOW_TASKS);
+
+        assertThrows(IllegalStateException.class, () -> checkChild(ABOVE_TASKS, BELOW_TASKS));
+        assertThrows(IllegalStateException.class, () -> checkChild(ABOVE_TASKS, ANY));
+        assertThrows(IllegalStateException.class, () -> checkChild(BELOW_TASKS, ABOVE_TASKS));
+        assertThrows(IllegalStateException.class, () -> checkChild(BELOW_TASKS, ANY));
+    }
+
+    private WindowToken createWindowToken(int type) {
+        return new WindowToken(mWmsRule.getWindowManagerService(), new Binder(),
+                type, false /* persist */, null /* displayContent */,
+                false /* canManageTokens */);
+    }
+
+    private static class SurfacelessDisplayArea<T extends WindowContainer> extends DisplayArea<T> {
+
+        SurfacelessDisplayArea(WindowManagerService wms, Type type, String name) {
+            super(wms, type, name);
+        }
+
+        @Override
+        SurfaceControl.Builder makeChildSurface(WindowContainer child) {
+            return new MockSurfaceControlBuilder();
+        }
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
index 1637370..2ea00ce 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayContentTests.java
@@ -139,11 +139,11 @@
                 mAppWindow,
                 mChildAppWindowAbove,
                 mDockedDividerWindow,
+                mImeWindow,
+                mImeDialogWindow,
                 mStatusBarWindow,
                 mNotificationShadeWindow,
-                mNavBarWindow,
-                mImeWindow,
-                mImeDialogWindow));
+                mNavBarWindow));
     }
 
     @Test
@@ -232,11 +232,11 @@
                 mChildAppWindowAbove,
                 mDockedDividerWindow,
                 voiceInteractionWindow,
+                mImeWindow,
+                mImeDialogWindow,
                 mStatusBarWindow,
                 mNotificationShadeWindow,
-                mNavBarWindow,
-                mImeWindow,
-                mImeDialogWindow));
+                mNavBarWindow));
     }
 
     @Test
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java
index f754c59..39cd76a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyInsetsTests.java
@@ -174,6 +174,6 @@
     }
 
     private static DisplayInfo displayInfoForRotation(int rotation, boolean withDisplayCutout) {
-        return displayInfoAndCutoutForRotation(rotation, withDisplayCutout).first;
+        return displayInfoAndCutoutForRotation(rotation, withDisplayCutout, false).first;
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
index 5ba676d..c19312d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyLayoutTests.java
@@ -34,6 +34,7 @@
 import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
 import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
+import static android.view.WindowManager.LayoutParams.LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS;
 import static android.view.WindowManager.LayoutParams.PRIVATE_FLAG_IS_SCREEN_DECOR;
 import static android.view.WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING;
@@ -73,6 +74,9 @@
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.io.PrintWriter;
+import java.io.StringWriter;
+
 /**
  * Tests for the {@link DisplayPolicy} class.
  *
@@ -88,12 +92,11 @@
     private WindowState mWindow;
     private int mRotation = ROTATION_0;
     private boolean mHasDisplayCutout;
+    private boolean mIsLongEdgeDisplayCutout;
     private static final int DECOR_WINDOW_INSET = 50;
 
     @Before
     public void setUp() throws Exception {
-        updateDisplayFrames();
-
         mWindow = spy(createWindow(null, TYPE_APPLICATION, "window"));
         // We only test window frames set by DisplayPolicy, so here prevents computeFrameLw from
         // changing those frames.
@@ -103,6 +106,8 @@
         attrs.width = MATCH_PARENT;
         attrs.height = MATCH_PARENT;
         attrs.format = PixelFormat.TRANSLUCENT;
+
+        updateDisplayFrames();
     }
 
     @After
@@ -121,10 +126,21 @@
         updateDisplayFrames();
     }
 
+    public void addLongEdgeDisplayCutout() {
+        mHasDisplayCutout = true;
+        mIsLongEdgeDisplayCutout = true;
+        updateDisplayFrames();
+    }
+
     private void updateDisplayFrames() {
+        mFrames = createDisplayFrames();
+        mDisplayContent.mDisplayFrames = mFrames;
+    }
+
+    private DisplayFrames createDisplayFrames() {
         final Pair<DisplayInfo, WmDisplayCutout> info = displayInfoAndCutoutForRotation(mRotation,
-                mHasDisplayCutout);
-        mFrames = new DisplayFrames(mDisplayContent.getDisplayId(), info.first, info.second);
+                mHasDisplayCutout, mIsLongEdgeDisplayCutout);
+        return new DisplayFrames(mDisplayContent.getDisplayId(), info.first, info.second);
     }
 
     @Test
@@ -173,63 +189,6 @@
     }
 
     @Test
-    public void layoutWindowLw_appDrawsBars() {
-        assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
-
-        mWindow.mAttrs.flags = FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
-        mWindow.mAttrs.setFitInsetsTypes(Type.systemBars());
-        addWindow(mWindow);
-
-        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
-        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
-
-        assertInsetByTopBottom(mWindow.getStableFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0);
-        assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0);
-        assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0);
-    }
-
-    @Test
-    public void layoutWindowLw_forceAppDrawBars() {
-        assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
-
-        mWindow.mAttrs.privateFlags = PRIVATE_FLAG_FORCE_DRAW_BAR_BACKGROUNDS;
-        mWindow.mAttrs.setFitInsetsTypes(Type.systemBars());
-        addWindow(mWindow);
-
-        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
-        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
-
-        assertInsetByTopBottom(mWindow.getStableFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDisplayFrameLw(), 0, 0);
-        assertInsetByTopBottom(mWindow.getParentFrame(), 0, 0);
-        assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0);
-    }
-
-    @Test
-    public void layoutWindowLw_onlyDrawBottomBar() {
-        assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
-
-        mWindow.mAttrs.flags = FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
-        mWindow.mAttrs.setFitInsetsTypes(Type.systemBars());
-        addWindow(mWindow);
-
-        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
-        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
-
-        assertInsetByTopBottom(mWindow.getStableFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDisplayFrameLw(), STATUS_BAR_HEIGHT, 0);
-        assertInsetByTopBottom(mWindow.getParentFrame(), STATUS_BAR_HEIGHT, 0);
-        assertInsetByTopBottom(mWindow.getVisibleFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getContentFrameLw(), STATUS_BAR_HEIGHT, NAV_BAR_HEIGHT);
-        assertInsetByTopBottom(mWindow.getDecorFrame(), 0, 0);
-    }
-
-    @Test
     public void layoutWindowLw_fitAllSides() {
         assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
 
@@ -266,7 +225,7 @@
     }
 
     @Test
-    public void layoutWindowLw_fitMax() {
+    public void layoutWindowLw_fitInsetsIgnoringVisibility() {
         assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
 
         final InsetsState state =
@@ -288,7 +247,7 @@
     }
 
     @Test
-    public void layoutWindowLw_fitNonMax() {
+    public void layoutWindowLw_fitInsetsNotIgnoringVisibility() {
         assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_FULL);
 
         final InsetsState state =
@@ -391,6 +350,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         addWindow(mWindow);
 
         mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
@@ -409,6 +369,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
         addWindow(mWindow);
 
@@ -423,11 +384,52 @@
     }
 
     @Test
+    public void layoutWindowLw_withDisplayCutout_shortEdges() {
+        addDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
+        mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0);
+    }
+
+    @Test
+    public void layoutWindowLw_withDisplayCutout_always() {
+        addDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
+        mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0);
+    }
+
+    @Test
     public void layoutWindowLw_withDisplayCutout_layoutFullscreen() {
         addDisplayCutout();
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
         mWindow.mAttrs.setFitInsetsTypes(
                 mWindow.mAttrs.getFitInsetsTypes() & ~Type.statusBars());
@@ -449,6 +451,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN;
         mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow)
                 .getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false);
@@ -470,6 +473,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_FULLSCREEN;
         mDisplayContent.getInsetsPolicy().getInsetsForDispatch(mWindow)
                 .getSource(InsetsState.ITYPE_STATUS_BAR).setVisible(false);
@@ -494,6 +498,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         addWindow(mWindow);
 
         mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
@@ -514,6 +519,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         addWindow(mWindow);
 
         mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
@@ -534,6 +540,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
         mWindow.mAttrs.setFitInsetsTypes(
                 mWindow.mAttrs.getFitInsetsTypes() & ~Type.statusBars());
@@ -574,6 +581,7 @@
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.subtreeSystemUiVisibility |= SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN;
         mWindow.mAttrs.setFitInsetsTypes(
                 mWindow.mAttrs.getFitInsetsTypes() & ~Type.statusBars());
@@ -591,11 +599,94 @@
     }
 
     @Test
+    public void layoutWindowLw_withLongEdgeDisplayCutout() {
+        addLongEdgeDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, 0,
+                NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+    }
+
+    @Test
+    public void layoutWindowLw_withLongEdgeDisplayCutout_never() {
+        addLongEdgeDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_NEVER;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0,
+                NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, 0,
+                NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+    }
+
+    @Test
+    public void layoutWindowLw_withLongEdgeDisplayCutout_shortEdges() {
+        addLongEdgeDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
+        mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_SHORT_EDGES;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, 0,
+                NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), DISPLAY_CUTOUT_HEIGHT, 0, 0, 0);
+    }
+
+    @Test
+    public void layoutWindowLw_withLongEdgeDisplayCutout_always() {
+        addLongEdgeDisplayCutout();
+
+        mWindow.mAttrs.flags =
+                FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
+        mWindow.mAttrs.layoutInDisplayCutoutMode = LAYOUT_IN_DISPLAY_CUTOUT_MODE_ALWAYS;
+        addWindow(mWindow);
+
+        mDisplayPolicy.beginLayoutLw(mFrames, 0 /* UI mode */);
+        mDisplayPolicy.layoutWindowLw(mWindow, null, mFrames);
+
+        assertInsetBy(mWindow.getParentFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getStableFrameLw(), 0, STATUS_BAR_HEIGHT, 0, NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getContentFrameLw(), DISPLAY_CUTOUT_HEIGHT, STATUS_BAR_HEIGHT, 0,
+                NAV_BAR_HEIGHT);
+        assertInsetBy(mWindow.getDecorFrame(), 0, 0, 0, 0);
+        assertInsetBy(mWindow.getDisplayFrameLw(), 0, 0, 0, 0);
+    }
+
+    @Test
     public void layoutWindowLw_withForwardInset_SoftInputAdjustResize() {
         assumeTrue(ViewRootImpl.sNewInsetsMode == ViewRootImpl.NEW_INSETS_MODE_NONE);
 
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_RESIZE;
         addWindow(mWindow);
 
@@ -618,6 +709,7 @@
     public void layoutWindowLw_withForwardInset_SoftInputAdjustNothing() {
         mWindow.mAttrs.flags =
                 FLAG_LAYOUT_IN_SCREEN | FLAG_LAYOUT_INSET_DECOR | FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS;
+        mWindow.mAttrs.setFitInsetsTypes(0 /* types */);
         mWindow.mAttrs.softInputMode = SOFT_INPUT_ADJUST_NOTHING;
         addWindow(mWindow);
 
@@ -824,6 +916,49 @@
         assertThat(outDisplayCutout, is(new DisplayCutout.ParcelableWrapper()));
     }
 
+    /**
+     * Verify that {@link DisplayPolicy#simulateLayoutDisplay} outputs the same display frames as
+     * {@link DisplayPolicy#beginLayoutLw}.
+     */
+    @Test
+    public void testSimulateLayoutDisplay() {
+        assertSimulateLayoutSameDisplayFrames();
+        setRotation(ROTATION_90);
+        assertSimulateLayoutSameDisplayFrames();
+        addDisplayCutout();
+        assertSimulateLayoutSameDisplayFrames();
+    }
+
+    private void assertSimulateLayoutSameDisplayFrames() {
+        final int uiMode = 0;
+        final String prefix = "";
+        final InsetsState simulatedInsetsState = new InsetsState();
+        final DisplayFrames simulatedDisplayFrames = createDisplayFrames();
+        mDisplayPolicy.beginLayoutLw(mFrames, uiMode);
+        mDisplayContent.getInsetsStateController().onPostLayout();
+        mDisplayPolicy.simulateLayoutDisplay(simulatedDisplayFrames, simulatedInsetsState, uiMode);
+
+        final StringWriter realFramesDump = new StringWriter();
+        mFrames.dump(prefix, new PrintWriter(realFramesDump));
+        final StringWriter simulatedFramesDump = new StringWriter();
+        simulatedDisplayFrames.dump(prefix, new PrintWriter(simulatedFramesDump));
+
+        assertEquals(realFramesDump.toString(), simulatedFramesDump.toString());
+
+        final StringWriter realInsetsDump = new StringWriter();
+        final InsetsState realInsetsState = new InsetsState(
+                mDisplayContent.getInsetsStateController().getRawInsetsState());
+        // Exclude comparing IME insets because currently the simulated layout only focuses on the
+        // insets from status bar and navigation bar.
+        realInsetsState.removeSource(InsetsState.ITYPE_IME);
+        realInsetsState.removeSource(InsetsState.ITYPE_CAPTION_BAR);
+        realInsetsState.dump(prefix, new PrintWriter(realInsetsDump));
+        final StringWriter simulatedInsetsDump = new StringWriter();
+        simulatedInsetsState.dump(prefix, new PrintWriter(simulatedInsetsDump));
+
+        assertEquals(realInsetsDump.toString(), simulatedInsetsDump.toString());
+    }
+
     @Test
     public void forceShowSystemBars_clearsSystemUIFlags() {
         mDisplayPolicy.mLastSystemUiFlags |= SYSTEM_UI_FLAG_FULLSCREEN;
diff --git a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTestsBase.java
index d0b3350..2a20c2e 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DisplayPolicyTestsBase.java
@@ -111,7 +111,7 @@
     }
 
     static Pair<DisplayInfo, WmDisplayCutout> displayInfoAndCutoutForRotation(int rotation,
-            boolean withDisplayCutout) {
+            boolean withDisplayCutout, boolean isLongEdgeCutout) {
         final DisplayInfo info = new DisplayInfo();
         WmDisplayCutout cutout = null;
 
@@ -121,7 +121,7 @@
         info.rotation = rotation;
         if (withDisplayCutout) {
             cutout = WmDisplayCutout.computeSafeInsets(
-                    displayCutoutForRotation(rotation), info.logicalWidth,
+                    displayCutoutForRotation(rotation, isLongEdgeCutout), info.logicalWidth,
                     info.logicalHeight);
             info.displayCutout = cutout.getDisplayCutout();
         } else {
@@ -130,9 +130,13 @@
         return Pair.create(info, cutout);
     }
 
-    private static DisplayCutout displayCutoutForRotation(int rotation) {
-        final RectF rectF =
-                new RectF(DISPLAY_WIDTH / 4, 0, DISPLAY_WIDTH * 3 / 4, DISPLAY_CUTOUT_HEIGHT);
+    private static DisplayCutout displayCutoutForRotation(int rotation, boolean isLongEdgeCutout) {
+        RectF rectF = new RectF();
+        if (isLongEdgeCutout) {
+            rectF.set(0, DISPLAY_HEIGHT / 4, DISPLAY_CUTOUT_HEIGHT, DISPLAY_HEIGHT * 3 / 4);
+        } else {
+            rectF.set(DISPLAY_WIDTH / 4, 0, DISPLAY_WIDTH * 3 / 4, DISPLAY_CUTOUT_HEIGHT);
+        }
 
         final Matrix m = new Matrix();
         transformPhysicalToLogicalCoordinates(rotation, DISPLAY_WIDTH, DISPLAY_HEIGHT, m);
@@ -141,16 +145,16 @@
         int pos = -1;
         switch (rotation) {
             case ROTATION_0:
-                pos = BOUNDS_POSITION_TOP;
+                pos = isLongEdgeCutout ? BOUNDS_POSITION_LEFT : BOUNDS_POSITION_TOP;
                 break;
             case ROTATION_90:
-                pos = BOUNDS_POSITION_LEFT;
+                pos = isLongEdgeCutout ? BOUNDS_POSITION_BOTTOM : BOUNDS_POSITION_LEFT;
                 break;
             case ROTATION_180:
-                pos = BOUNDS_POSITION_BOTTOM;
+                pos = isLongEdgeCutout ? BOUNDS_POSITION_RIGHT : BOUNDS_POSITION_BOTTOM;
                 break;
             case ROTATION_270:
-                pos = BOUNDS_POSITION_RIGHT;
+                pos = isLongEdgeCutout ? BOUNDS_POSITION_TOP : BOUNDS_POSITION_RIGHT;
                 break;
         }
 
diff --git a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
index 5acc0f2..956c200 100644
--- a/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/DragDropControllerTests.java
@@ -126,7 +126,8 @@
         mTarget = new TestDragDropController(mWm, mWm.mH.getLooper());
         mWindow = createDropTargetWindow("Drag test window", 0);
         doReturn(mWindow).when(mDisplayContent).getTouchableWinAtPointLocked(0, 0);
-        when(mWm.mInputManager.transferTouchFocus(any(), any())).thenReturn(true);
+        when(mWm.mInputManager.transferTouchFocus(any(InputChannel.class),
+                any(InputChannel.class))).thenReturn(true);
 
         mWm.mWindowMap.put(mWindow.mClient.asBinder(), mWindow);
     }
@@ -176,7 +177,8 @@
                     .setFormat(PixelFormat.TRANSLUCENT)
                     .build();
 
-            assertTrue(mWm.mInputManager.transferTouchFocus(null, null));
+            assertTrue(mWm.mInputManager.transferTouchFocus(new InputChannel(),
+                    new InputChannel()));
             mToken = mTarget.performDrag(
                     new SurfaceSession(), 0, 0, mWindow.mClient, flag, surface, 0, 0, 0, 0, 0,
                     data);
diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
index c3bead7..eae007d 100644
--- a/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/InsetsPolicyTest.java
@@ -29,12 +29,13 @@
 import static android.view.WindowManager.LayoutParams.TYPE_NOTIFICATION_SHADE;
 import static android.view.WindowManager.LayoutParams.TYPE_STATUS_BAR;
 
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
-
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.Mockito.doNothing;
+import static org.mockito.Mockito.spy;
 
 import android.platform.test.annotations.Presubmit;
 import android.util.IntArray;
@@ -119,28 +120,16 @@
         assertNull(controls);
     }
 
-    @Test
-    public void testControlsForDispatch_keyguard() {
-        addWindow(TYPE_NOTIFICATION_SHADE, "notificationShade");
-        addWindow(TYPE_NAVIGATION_BAR, "navBar");
-        mockKeyguardShowing();
-
-        final InsetsSourceControl[] controls = addAppWindowAndGetControlsForDispatch();
-        // The app must not control the top bar.
-        assertNotNull(controls);
-        assertEquals(1, controls.length);
-    }
-
     // TODO: adjust this test if we pretend to the app that it's still able to control it.
     @Test
     public void testControlsForDispatch_forceStatusBarVisible() {
-        addWindow(TYPE_STATUS_BAR, "topBar").mAttrs.privateFlags |=
+        addWindow(TYPE_STATUS_BAR, "statusBar").mAttrs.privateFlags |=
                 PRIVATE_FLAG_FORCE_SHOW_STATUS_BAR;
         addWindow(TYPE_NAVIGATION_BAR, "navBar");
 
         final InsetsSourceControl[] controls = addAppWindowAndGetControlsForDispatch();
 
-        // The app must not control the top bar.
+        // The app must not control the status bar.
         assertNotNull(controls);
         assertEquals(1, controls.length);
     }
@@ -149,6 +138,7 @@
     public void testControlsForDispatch_statusBarForceShowNavigation() {
         addWindow(TYPE_NOTIFICATION_SHADE, "notificationShade").mAttrs.privateFlags |=
                 PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION;
+        addWindow(TYPE_STATUS_BAR, "statusBar");
         addWindow(TYPE_NAVIGATION_BAR, "navBar");
 
         final InsetsSourceControl[] controls = addAppWindowAndGetControlsForDispatch();
@@ -159,6 +149,21 @@
     }
 
     @Test
+    public void testControlsForDispatch_statusBarForceShowNavigation_butFocusedAnyways() {
+        WindowState notifShade = addWindow(TYPE_NOTIFICATION_SHADE, "notificationShade");
+        notifShade.mAttrs.privateFlags |= PRIVATE_FLAG_STATUS_FORCE_SHOW_NAVIGATION;
+        addWindow(TYPE_NAVIGATION_BAR, "navBar");
+
+        mDisplayContent.getInsetsPolicy().updateBarControlTarget(notifShade);
+        InsetsSourceControl[] controls
+                = mDisplayContent.getInsetsStateController().getControlsForDispatch(notifShade);
+
+        // The app controls the navigation bar.
+        assertNotNull(controls);
+        assertEquals(1, controls.length);
+    }
+
+    @Test
     public void testShowTransientBars_bothCanBeTransient_appGetsBothFakeControls() {
         addWindow(TYPE_STATUS_BAR, "statusBar")
                 .getControllableInsetProvider().getSource().setVisible(false);
@@ -166,7 +171,8 @@
                 .getControllableInsetProvider().getSource().setVisible(false);
         final WindowState app = addWindow(TYPE_APPLICATION, "app");
 
-        final InsetsPolicy policy = mDisplayContent.getInsetsPolicy();
+        final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy());
+        doNothing().when(policy).startAnimation(anyBoolean(), any());
         policy.updateBarControlTarget(app);
         policy.showTransient(
                 IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR}));
@@ -181,7 +187,7 @@
     }
 
     @Test
-    public void testShowTransientBars_topCanBeTransient_appGetsTopFakeControl() {
+    public void testShowTransientBars_statusBarCanBeTransient_appGetsStatusBarFakeControl() {
         // Adding app window before setting source visibility is to prevent the visibility from
         // being cleared by InsetsSourceProvider.updateVisibility.
         final WindowState app = addWindow(TYPE_APPLICATION, "app");
@@ -191,14 +197,15 @@
         addWindow(TYPE_NAVIGATION_BAR, "navBar")
                 .getControllableInsetProvider().getSource().setVisible(true);
 
-        final InsetsPolicy policy = mDisplayContent.getInsetsPolicy();
+        final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy());
+        doNothing().when(policy).startAnimation(anyBoolean(), any());
         policy.updateBarControlTarget(app);
         policy.showTransient(
                 IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR}));
         final InsetsSourceControl[] controls =
                 mDisplayContent.getInsetsStateController().getControlsForDispatch(app);
 
-        // The app must get the fake control of the top bar, and must get the real control of the
+        // The app must get the fake control of the status bar, and must get the real control of the
         // navigation bar.
         assertEquals(2, controls.length);
         for (int i = controls.length - 1; i >= 0; i--) {
@@ -219,7 +226,8 @@
                 .getControllableInsetProvider().getSource().setVisible(false);
         final WindowState app = addWindow(TYPE_APPLICATION, "app");
 
-        final InsetsPolicy policy = mDisplayContent.getInsetsPolicy();
+        final InsetsPolicy policy = spy(mDisplayContent.getInsetsPolicy());
+        doNothing().when(policy).startAnimation(anyBoolean(), any());
         policy.updateBarControlTarget(app);
         policy.showTransient(
                 IntArray.wrap(new int[]{ITYPE_STATUS_BAR, ITYPE_NAVIGATION_BAR}));
@@ -260,10 +268,4 @@
         mDisplayContent.getInsetsPolicy().updateBarControlTarget(win);
         return mDisplayContent.getInsetsStateController().getControlsForDispatch(win);
     }
-
-    private void mockKeyguardShowing() {
-        final DisplayPolicy displayPolicy = mDisplayContent.getDisplayPolicy();
-        spyOn(displayPolicy);
-        doReturn(true).when(displayPolicy).isKeyguardShowing();
-    }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java
index d819b1a..f811757 100644
--- a/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/InsetsSourceProviderTest.java
@@ -57,7 +57,7 @@
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         statusBar.getFrameLw().set(0, 0, 500, 100);
         statusBar.mHasSurface = true;
-        mProvider.setWindow(statusBar, null);
+        mProvider.setWindow(statusBar, null, null);
         mProvider.onPostLayout();
         assertEquals(new Rect(0, 0, 500, 100), mProvider.getSource().getFrame());
         assertEquals(Insets.of(0, 100, 0, 0),
@@ -74,7 +74,7 @@
         ime.getGivenContentInsetsLw().set(0, 0, 0, 60);
         ime.getGivenVisibleInsetsLw().set(0, 0, 0, 75);
         ime.mHasSurface = true;
-        mProvider.setWindow(ime, null);
+        mProvider.setWindow(ime, null, null);
         mProvider.onPostLayout();
         assertEquals(new Rect(0, 0, 500, 40), mProvider.getSource().getFrame());
         assertEquals(new Rect(0, 0, 500, 25), mProvider.getSource().getVisibleFrame());
@@ -89,7 +89,7 @@
     public void testPostLayout_invisible() {
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         statusBar.getFrameLw().set(0, 0, 500, 100);
-        mProvider.setWindow(statusBar, null);
+        mProvider.setWindow(statusBar, null, null);
         mProvider.onPostLayout();
         assertEquals(Insets.NONE, mProvider.getSource().calculateInsets(new Rect(0, 0, 500, 500),
                         false /* ignoreVisibility */));
@@ -102,7 +102,7 @@
         mProvider.setWindow(statusBar,
                 (displayFrames, windowState, rect) -> {
                     rect.set(10, 10, 20, 20);
-                });
+                }, null);
         mProvider.onPostLayout();
         assertEquals(new Rect(10, 10, 20, 20), mProvider.getSource().getFrame());
     }
@@ -112,11 +112,44 @@
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
         statusBar.getFrameLw().set(0, 0, 500, 100);
-        mProvider.setWindow(statusBar, null);
+
+        // We must not have control or control target before we have the insets source window.
+        mProvider.updateControlForTarget(target, true /* force */);
+        assertNull(mProvider.getControl(target));
+        assertNull(mProvider.getControlTarget());
+
+        // We can have the control or the control target after we have the insets source window.
+        mProvider.setWindow(statusBar, null, null);
         mProvider.updateControlForTarget(target, false /* force */);
         assertNotNull(mProvider.getControl(target));
+        assertNotNull(mProvider.getControlTarget());
+
+        // We must not have control or control target while we are performing seamless rotation.
+        // And the control and the control target must not be updated during that.
+        mProvider.startSeamlessRotation();
+        assertNull(mProvider.getControl(target));
+        assertNull(mProvider.getControlTarget());
+        mProvider.updateControlForTarget(target, true /* force */);
+        assertNull(mProvider.getControl(target));
+        assertNull(mProvider.getControlTarget());
+
+        // We can have the control and the control target after seamless rotation.
+        mProvider.finishSeamlessRotation(false /* timeout */);
+        mProvider.updateControlForTarget(target, false /* force */);
+        assertNotNull(mProvider.getControl(target));
+        assertNotNull(mProvider.getControlTarget());
+
+        // We can clear the control and the control target.
         mProvider.updateControlForTarget(null, false /* force */);
         assertNull(mProvider.getControl(target));
+        assertNull(mProvider.getControlTarget());
+
+        // We must not have control or control target if the insets source window doesn't have a
+        // surface.
+        statusBar.setSurfaceControl(null);
+        mProvider.updateControlForTarget(target, true /* force */);
+        assertNull(mProvider.getControl(target));
+        assertNull(mProvider.getControlTarget());
     }
 
     @Test
@@ -124,7 +157,7 @@
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
         statusBar.getFrameLw().set(0, 0, 500, 100);
-        mProvider.setWindow(statusBar, null);
+        mProvider.setWindow(statusBar, null, null);
         mProvider.updateControlForFakeTarget(target);
         assertNotNull(mProvider.getControl(target));
         assertNull(mProvider.getControl(target).getLeash());
@@ -137,7 +170,7 @@
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
         statusBar.getFrameLw().set(0, 0, 500, 100);
-        mProvider.setWindow(statusBar, null);
+        mProvider.setWindow(statusBar, null, null);
         mProvider.updateControlForTarget(target, false /* force */);
         InsetsState state = new InsetsState();
         state.getSource(ITYPE_STATUS_BAR).setVisible(false);
@@ -150,7 +183,7 @@
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState target = createWindow(null, TYPE_APPLICATION, "target");
         statusBar.getFrameLw().set(0, 0, 500, 100);
-        mProvider.setWindow(statusBar, null);
+        mProvider.setWindow(statusBar, null, null);
         InsetsState state = new InsetsState();
         state.getSource(ITYPE_STATUS_BAR).setVisible(false);
         mProvider.onInsetsModified(target, state.getSource(ITYPE_STATUS_BAR));
diff --git a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
index d13baec..5cf1fbb 100644
--- a/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/InsetsStateControllerTest.java
@@ -20,6 +20,7 @@
 import static android.view.InsetsState.ITYPE_NAVIGATION_BAR;
 import static android.view.InsetsState.ITYPE_STATUS_BAR;
 import static android.view.ViewRootImpl.NEW_INSETS_MODE_FULL;
+import static android.view.WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
 import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
 import static org.junit.Assert.assertEquals;
@@ -27,6 +28,7 @@
 import static org.junit.Assert.assertNotNull;
 import static org.junit.Assert.assertNull;
 
+import android.graphics.Rect;
 import android.platform.test.annotations.Presubmit;
 import android.view.InsetsSource;
 import android.view.InsetsSourceControl;
@@ -65,7 +67,7 @@
     public void testStripForDispatch_notOwn() {
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
-        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null);
+        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null, null);
         statusBar.setControllableInsetProvider(getController().getSourceProvider(ITYPE_STATUS_BAR));
         assertNotNull(getController().getInsetsForDispatch(app).getSource(ITYPE_STATUS_BAR));
     }
@@ -74,7 +76,7 @@
     public void testStripForDispatch_own() {
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         mDisplayContent.getInsetsStateController().getSourceProvider(ITYPE_STATUS_BAR)
-                .setWindow(statusBar, null);
+                .setWindow(statusBar, null, null);
         statusBar.setControllableInsetProvider(getController().getSourceProvider(ITYPE_STATUS_BAR));
         final InsetsState state = getController().getInsetsForDispatch(statusBar);
         for (int i = state.getSourcesCount() - 1; i >= 0; i--) {
@@ -88,19 +90,44 @@
         final WindowState navBar = createWindow(null, TYPE_APPLICATION, "navBar");
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState ime = createWindow(null, TYPE_APPLICATION, "ime");
-        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null);
-        getController().getSourceProvider(ITYPE_NAVIGATION_BAR).setWindow(navBar, null);
-        getController().getSourceProvider(ITYPE_IME).setWindow(ime, null);
+
+        // IME cannot be the IME target.
+        ime.mAttrs.flags |= FLAG_NOT_FOCUSABLE;
+
+        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null, null);
+        getController().getSourceProvider(ITYPE_NAVIGATION_BAR).setWindow(navBar, null, null);
+        getController().getSourceProvider(ITYPE_IME).setWindow(ime, null, null);
         assertEquals(0, getController().getInsetsForDispatch(navBar).getSourcesCount());
     }
 
     @Test
+    public void testImeForDispatch() {
+        final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
+        final WindowState ime = createWindow(null, TYPE_APPLICATION, "ime");
+
+        // IME cannot be the IME target.
+        ime.mAttrs.flags |= FLAG_NOT_FOCUSABLE;
+
+        InsetsSourceProvider statusBarProvider =
+                getController().getSourceProvider(ITYPE_STATUS_BAR);
+        statusBarProvider.setWindow(statusBar, null, ((displayFrames, windowState, rect) ->
+                        rect.set(0, 1, 2, 3)));
+        getController().getSourceProvider(ITYPE_IME).setWindow(ime, null, null);
+        statusBar.setControllableInsetProvider(statusBarProvider);
+
+        statusBarProvider.onPostLayout();
+
+        final InsetsState state = getController().getInsetsForDispatch(ime);
+        assertEquals(new Rect(0, 1, 2, 3), state.getSource(ITYPE_STATUS_BAR).getFrame());
+    }
+
+    @Test
     public void testBarControllingWinChanged() {
         final WindowState navBar = createWindow(null, TYPE_APPLICATION, "navBar");
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
-        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null);
-        getController().getSourceProvider(ITYPE_NAVIGATION_BAR).setWindow(navBar, null);
+        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null, null);
+        getController().getSourceProvider(ITYPE_NAVIGATION_BAR).setWindow(navBar, null, null);
         getController().onBarControlTargetChanged(app, null, app, null);
         InsetsSourceControl[] controls = getController().getControlsForDispatch(app);
         assertEquals(2, controls.length);
@@ -110,7 +137,7 @@
     public void testControlRevoked() {
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
-        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null);
+        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null, null);
         getController().onBarControlTargetChanged(app, null, null, null);
         assertNotNull(getController().getControlsForDispatch(app));
         getController().onBarControlTargetChanged(null, null, null, null);
@@ -122,7 +149,7 @@
     public void testControlRevoked_animation() {
         final WindowState statusBar = createWindow(null, TYPE_APPLICATION, "statusBar");
         final WindowState app = createWindow(null, TYPE_APPLICATION, "app");
-        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null);
+        getController().getSourceProvider(ITYPE_STATUS_BAR).setWindow(statusBar, null, null);
         getController().onBarControlTargetChanged(app, null, null, null);
         assertNotNull(getController().getControlsForDispatch(app));
         statusBar.cancelAnimation();
diff --git a/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
index 039ff60..a137cde 100644
--- a/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/LockTaskControllerTest.java
@@ -25,10 +25,14 @@
 import static android.app.StatusBarManager.DISABLE_HOME;
 import static android.app.StatusBarManager.DISABLE_NOTIFICATION_ALERTS;
 import static android.app.StatusBarManager.DISABLE_NOTIFICATION_ICONS;
+import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_HOME;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_KEYGUARD;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_NONE;
 import static android.app.admin.DevicePolicyManager.LOCK_TASK_FEATURE_NOTIFICATIONS;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_ALWAYS;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_DEFAULT;
+import static android.content.pm.ActivityInfo.LOCK_TASK_LAUNCH_MODE_NEVER;
 import static android.os.Process.SYSTEM_UID;
 import static android.telecom.TelecomManager.EMERGENCY_DIALER_COMPONENT;
 
@@ -693,6 +697,45 @@
         assertTrue((StatusBarManager.DISABLE2_QUICK_SETTINGS & flags.second) != 0);
     }
 
+    @Test
+    public void testIsActivityAllowed() {
+        // WHEN lock task mode is not enabled
+        assertTrue(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT));
+
+        // Start lock task mode
+        Task tr = getTask(Task.LOCK_TASK_AUTH_WHITELISTED);
+        mLockTaskController.startLockTaskMode(tr, false, TEST_UID);
+
+        // WHEN LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK is not enabled
+        assertTrue(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT));
+
+        // Enable LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK feature
+        mLockTaskController.updateLockTaskFeatures(
+                TEST_USER_ID, LOCK_TASK_FEATURE_BLOCK_ACTIVITY_START_IN_TASK);
+
+        // package with LOCK_TASK_LAUNCH_MODE_ALWAYS should always be allowed
+        assertTrue(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_ALWAYS));
+
+        // unwhitelisted package should not be allowed
+        assertFalse(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT));
+
+        // update the whitelist
+        String[] whitelist = new String[] { TEST_PACKAGE_NAME };
+        mLockTaskController.updateLockTaskPackages(TEST_USER_ID, whitelist);
+
+        // whitelisted package should be allowed
+        assertTrue(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_DEFAULT));
+
+        // package with LOCK_TASK_LAUNCH_MODE_NEVER should never be allowed
+        assertFalse(mLockTaskController.isActivityAllowed(
+                TEST_USER_ID, TEST_PACKAGE_NAME, LOCK_TASK_LAUNCH_MODE_NEVER));
+    }
+
     private Task getTask(int lockTaskAuth) {
         return getTask(TEST_PACKAGE_NAME, lockTaskAuth);
     }
diff --git a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
index 945928d..7753a32 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RecentsAnimationControllerTest.java
@@ -37,6 +37,7 @@
 import static com.android.server.wm.RecentsAnimationController.REORDER_KEEP_IN_PLACE;
 import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_ORIGINAL_POSITION;
 import static com.android.server.wm.RecentsAnimationController.REORDER_MOVE_TO_TOP;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -103,14 +104,15 @@
                 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
         AnimationAdapter adapter = mController.addAnimation(activity.getTask(),
                 false /* isRecentTaskInvisible */);
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_RECENTS,
+                mFinishedCallback);
 
         // Remove the app window so that the animation target can not be created
         activity.removeImmediately();
         mController.startAnimation();
 
         // Verify that the finish callback to reparent the leash is called
-        verify(mFinishedCallback).onAnimationFinished(eq(adapter));
+        verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_RECENTS), eq(adapter));
         // Verify the animation canceled callback to the app was made
         verify(mMockRunner).onAnimationCanceled(null /* taskSnapshot */);
         verifyNoMoreInteractionsExceptAsBinder(mMockRunner);
@@ -122,7 +124,8 @@
                 WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
         AnimationAdapter adapter = mController.addAnimation(activity.getTask(),
                 false /* isRecentTaskInvisible */);
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_RECENTS,
+                mFinishedCallback);
 
         // Remove the app window so that the animation target can not be created
         activity.removeImmediately();
diff --git a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
index a23425f..be25597 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RefreshRatePolicyTest.java
@@ -18,6 +18,8 @@
 
 import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
 
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
+
 import static org.junit.Assert.assertEquals;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
@@ -108,7 +110,7 @@
         overrideWindow.mAttrs.preferredDisplayModeId = LOW_MODE_ID;
         overrideWindow.mActivityRecord.mSurfaceAnimator.startAnimation(
                 overrideWindow.getPendingTransaction(), mock(AnimationAdapter.class),
-                false /* hidden */);
+                false /* hidden */, ANIMATION_TYPE_APP_TRANSITION);
         mPolicy.addNonHighRefreshRatePackage("com.android.test");
         assertEquals(0, mPolicy.getPreferredModeId(overrideWindow));
     }
@@ -124,7 +126,7 @@
 
         cameraUsingWindow.mActivityRecord.mSurfaceAnimator.startAnimation(
                 cameraUsingWindow.getPendingTransaction(), mock(AnimationAdapter.class),
-                false /* hidden */);
+                false /* hidden */, ANIMATION_TYPE_APP_TRANSITION);
         assertEquals(0, mPolicy.getPreferredModeId(cameraUsingWindow));
     }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
index 1a57596..3a724a1 100644
--- a/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/RemoteAnimationControllerTest.java
@@ -25,6 +25,8 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyNoMoreInteractions;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_WINDOW_ANIMATION;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNotNull;
@@ -97,7 +99,8 @@
         try {
             final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                     new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-            adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+            adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                    mFinishedCallback);
             mController.goodToGo();
             mWm.mAnimator.executeAfterPrepareSurfacesRunnables();
             final ArgumentCaptor<RemoteAnimationTarget[]> appsCaptor =
@@ -122,7 +125,8 @@
             verify(mMockTransaction).setWindowCrop(mMockLeash, 100, 50);
 
             finishedCaptor.getValue().onAnimationFinished();
-            verify(mFinishedCallback).onAnimationFinished(eq(adapter));
+            verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
+                    eq(adapter));
         } finally {
             mDisplayContent.mOpeningApps.clear();
         }
@@ -133,7 +137,8 @@
         final WindowState win = createWindow(null /* parent */, TYPE_BASE_APPLICATION, "testWin");
         final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                 new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                mFinishedCallback);
         mController.goodToGo();
 
         adapter.onAnimationCancelled(mMockLeash);
@@ -146,14 +151,16 @@
         final WindowState win = createWindow(null /* parent */, TYPE_BASE_APPLICATION, "testWin");
         final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                 new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                mFinishedCallback);
         mController.goodToGo();
 
         mClock.fastForward(2500);
         mHandler.timeAdvance();
 
         verify(mMockRunner).onAnimationCancelled();
-        verify(mFinishedCallback).onAnimationFinished(eq(adapter));
+        verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
+                eq(adapter));
     }
 
     @Test
@@ -164,7 +171,8 @@
                     "testWin");
             final AnimationAdapter adapter = mController.createRemoteAnimationRecord(
                     win.mActivityRecord, new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-            adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+            adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                    mFinishedCallback);
             mController.goodToGo();
 
             mClock.fastForward(2500);
@@ -176,7 +184,8 @@
             mHandler.timeAdvance();
 
             verify(mMockRunner).onAnimationCancelled();
-            verify(mFinishedCallback).onAnimationFinished(eq(adapter));
+            verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
+                    eq(adapter));
         } finally {
             mWm.setAnimationScale(2, 1.0f);
         }
@@ -205,7 +214,8 @@
                 new Point(50, 100), new Rect(50, 100, 150, 150), null);
         final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win2.mActivityRecord,
                 new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                mFinishedCallback);
         mController.goodToGo();
         mWm.mAnimator.executeAfterPrepareSurfacesRunnables();
         final ArgumentCaptor<RemoteAnimationTarget[]> appsCaptor =
@@ -225,11 +235,13 @@
         final WindowState win = createWindow(null /* parent */, TYPE_BASE_APPLICATION, "testWin");
         final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                 new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-        adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+        adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                mFinishedCallback);
         win.mActivityRecord.removeImmediately();
         mController.goodToGo();
         verifyNoMoreInteractionsExceptAsBinder(mMockRunner);
-        verify(mFinishedCallback).onAnimationFinished(eq(adapter));
+        verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION),
+                eq(adapter));
     }
 
     @Test
@@ -242,9 +254,10 @@
                     new Rect(0, 0, 200, 200));
             assertNotNull(record.mThumbnailAdapter);
             ((AnimationAdapter) record.mAdapter)
-                    .startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+                    .startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_WINDOW_ANIMATION,
+                            mFinishedCallback);
             ((AnimationAdapter) record.mThumbnailAdapter).startAnimation(mMockThumbnailLeash,
-                    mMockTransaction, mThumbnailFinishedCallback);
+                    mMockTransaction, ANIMATION_TYPE_WINDOW_ANIMATION, mThumbnailFinishedCallback);
             mController.goodToGo();
             mWm.mAnimator.executeAfterPrepareSurfacesRunnables();
             final ArgumentCaptor<RemoteAnimationTarget[]> appsCaptor =
@@ -272,8 +285,10 @@
             verify(mMockTransaction).setPosition(mMockThumbnailLeash, 0, 0);
 
             finishedCaptor.getValue().onAnimationFinished();
-            verify(mFinishedCallback).onAnimationFinished(eq(record.mAdapter));
-            verify(mThumbnailFinishedCallback).onAnimationFinished(eq(record.mThumbnailAdapter));
+            verify(mFinishedCallback).onAnimationFinished(eq(ANIMATION_TYPE_WINDOW_ANIMATION),
+                    eq(record.mAdapter));
+            verify(mThumbnailFinishedCallback).onAnimationFinished(
+                    eq(ANIMATION_TYPE_WINDOW_ANIMATION), eq(record.mThumbnailAdapter));
         } finally {
             mDisplayContent.mChangingApps.clear();
         }
@@ -290,7 +305,8 @@
         try {
             final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                     new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-            adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+            adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                    mFinishedCallback);
             mController.goodToGo();
             mWm.mAnimator.executeAfterPrepareSurfacesRunnables();
             final ArgumentCaptor<RemoteAnimationTarget[]> appsCaptor =
@@ -318,7 +334,8 @@
         try {
             final AnimationAdapter adapter = mController.createRemoteAnimationRecord(win.mActivityRecord,
                     new Point(50, 100), new Rect(50, 100, 150, 150), null).mAdapter;
-            adapter.startAnimation(mMockLeash, mMockTransaction, mFinishedCallback);
+            adapter.startAnimation(mMockLeash, mMockTransaction, ANIMATION_TYPE_APP_TRANSITION,
+                    mFinishedCallback);
             mController.goodToGo();
             mWm.mAnimator.executeAfterPrepareSurfacesRunnables();
             final ArgumentCaptor<RemoteAnimationTarget[]> appsCaptor =
diff --git a/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java b/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java
index 2894241..552c476 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SurfaceAnimatorTest.java
@@ -22,6 +22,8 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verifyZeroInteractions;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_RECENTS;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
@@ -39,6 +41,7 @@
 import androidx.test.filters.SmallTest;
 
 import com.android.server.wm.SurfaceAnimator.Animatable;
+import com.android.server.wm.SurfaceAnimator.AnimationType;
 import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
 
 import org.junit.After;
@@ -89,25 +92,30 @@
 
     @Test
     public void testRunAnimation() {
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_RECENTS);
         final ArgumentCaptor<OnAnimationFinishedCallback> callbackCaptor = ArgumentCaptor.forClass(
                 OnAnimationFinishedCallback.class);
         assertAnimating(mAnimatable);
         verify(mTransaction).reparent(eq(mAnimatable.mSurface), eq(mAnimatable.mLeash));
-        verify(mSpec).startAnimation(any(), any(), callbackCaptor.capture());
+        verify(mSpec).startAnimation(any(), any(), eq(ANIMATION_TYPE_RECENTS),
+                callbackCaptor.capture());
 
-        callbackCaptor.getValue().onAnimationFinished(mSpec);
+        callbackCaptor.getValue().onAnimationFinished(ANIMATION_TYPE_RECENTS, mSpec);
         assertNotAnimating(mAnimatable);
         assertTrue(mAnimatable.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_RECENTS, mAnimatable.mFinishedAnimationType);
         verify(mTransaction).remove(eq(mAnimatable.mLeash));
         // TODO: Verify reparenting once we use mPendingTransaction to reparent it back
     }
 
     @Test
     public void testOverrideAnimation() {
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         final SurfaceControl firstLeash = mAnimatable.mLeash;
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec2, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec2, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
 
         verify(mTransaction).remove(eq(firstLeash));
         assertFalse(mAnimatable.mFinishedCallbackCalled);
@@ -115,34 +123,40 @@
         final ArgumentCaptor<OnAnimationFinishedCallback> callbackCaptor = ArgumentCaptor.forClass(
                 OnAnimationFinishedCallback.class);
         assertAnimating(mAnimatable);
-        verify(mSpec).startAnimation(any(), any(), callbackCaptor.capture());
+        verify(mSpec).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION),
+                callbackCaptor.capture());
 
         // First animation was finished, but this shouldn't cancel the second animation
-        callbackCaptor.getValue().onAnimationFinished(mSpec);
+        callbackCaptor.getValue().onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, mSpec);
         assertTrue(mAnimatable.mSurfaceAnimator.isAnimating());
 
         // Second animation was finished
-        verify(mSpec2).startAnimation(any(), any(), callbackCaptor.capture());
-        callbackCaptor.getValue().onAnimationFinished(mSpec2);
+        verify(mSpec2).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION),
+                callbackCaptor.capture());
+        callbackCaptor.getValue().onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, mSpec2);
         assertNotAnimating(mAnimatable);
         assertTrue(mAnimatable.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_APP_TRANSITION, mAnimatable.mFinishedAnimationType);
     }
 
     @Test
     public void testCancelAnimation() {
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         assertAnimating(mAnimatable);
         mAnimatable.mSurfaceAnimator.cancelAnimation();
         assertNotAnimating(mAnimatable);
         verify(mSpec).onAnimationCancelled(any());
         assertTrue(mAnimatable.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_APP_TRANSITION, mAnimatable.mFinishedAnimationType);
         verify(mTransaction).remove(eq(mAnimatable.mLeash));
     }
 
     @Test
     public void testCancelWithNullFinishCallbackAnimation() {
         SurfaceAnimator animator = new SurfaceAnimator(mAnimatable, null, mWm);
-        animator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        animator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         assertTrue(animator.isAnimating());
         assertNotNull(animator.getAnimation());
         animator.cancelAnimation();
@@ -155,32 +169,37 @@
     @Test
     public void testDelayingAnimationStart() {
         mAnimatable.mSurfaceAnimator.startDelayingAnimationStart();
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         verifyZeroInteractions(mSpec);
         assertAnimating(mAnimatable);
         assertTrue(mAnimatable.mSurfaceAnimator.isAnimationStartDelayed());
         mAnimatable.mSurfaceAnimator.endDelayingAnimationStart();
-        verify(mSpec).startAnimation(any(), any(), any());
+        verify(mSpec).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION), any());
     }
 
     @Test
     public void testDelayingAnimationStartAndCancelled() {
         mAnimatable.mSurfaceAnimator.startDelayingAnimationStart();
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         mAnimatable.mSurfaceAnimator.cancelAnimation();
         verifyZeroInteractions(mSpec);
         assertNotAnimating(mAnimatable);
         assertTrue(mAnimatable.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_APP_TRANSITION, mAnimatable.mFinishedAnimationType);
         verify(mTransaction).remove(eq(mAnimatable.mLeash));
     }
 
     @Test
     public void testTransferAnimation() {
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
 
         final ArgumentCaptor<OnAnimationFinishedCallback> callbackCaptor = ArgumentCaptor.forClass(
                 OnAnimationFinishedCallback.class);
-        verify(mSpec).startAnimation(any(), any(), callbackCaptor.capture());
+        verify(mSpec).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION),
+                callbackCaptor.capture());
         final SurfaceControl leash = mAnimatable.mLeash;
 
         mAnimatable2.mSurfaceAnimator.transferAnimation(mAnimatable.mSurfaceAnimator);
@@ -188,15 +207,17 @@
         assertAnimating(mAnimatable2);
         assertEquals(leash, mAnimatable2.mSurfaceAnimator.mLeash);
         verify(mTransaction, never()).remove(eq(leash));
-        callbackCaptor.getValue().onAnimationFinished(mSpec);
+        callbackCaptor.getValue().onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, mSpec);
         assertNotAnimating(mAnimatable2);
         assertTrue(mAnimatable2.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_APP_TRANSITION, mAnimatable.mFinishedAnimationType);
         verify(mTransaction).remove(eq(leash));
     }
 
     @Test
     public void testOnAnimationLeashLostWhenAnimatableParentSurfaceControlNull() {
-        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */);
+        mAnimatable.mSurfaceAnimator.startAnimation(mTransaction, mSpec, true /* hidden */,
+                ANIMATION_TYPE_APP_TRANSITION);
         spyOn(mAnimatable);
 
         // Verify onAnimationLeashLost will be called even animatable's parent surface control lost.
@@ -215,13 +236,14 @@
         final OnAnimationFinishedCallback onFinishedCallback = startDeferFinishAnimatable(mSpec);
 
         // Finish the animation but then make sure we are deferring.
-        onFinishedCallback.onAnimationFinished(mSpec);
+        onFinishedCallback.onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, mSpec);
         assertAnimating(mDeferFinishAnimatable);
 
         // Now end defer finishing.
         mDeferFinishAnimatable.mEndDeferFinishCallback.run();
         assertNotAnimating(mAnimatable2);
         assertTrue(mDeferFinishAnimatable.mFinishedCallbackCalled);
+        assertEquals(ANIMATION_TYPE_APP_TRANSITION, mDeferFinishAnimatable.mFinishedAnimationType);
         verify(mTransaction).remove(eq(mDeferFinishAnimatable.mLeash));
     }
 
@@ -229,7 +251,7 @@
     public void testDeferFinishDoNotFinishNextAnimation() {
         // Start the first animation.
         final OnAnimationFinishedCallback onFinishedCallback = startDeferFinishAnimatable(mSpec);
-        onFinishedCallback.onAnimationFinished(mSpec);
+        onFinishedCallback.onAnimationFinished(ANIMATION_TYPE_APP_TRANSITION, mSpec);
         // The callback is the resetAndInvokeFinish in {@link SurfaceAnimator#getFinishedCallback}.
         final Runnable firstDeferFinishCallback = mDeferFinishAnimatable.mEndDeferFinishCallback;
 
@@ -247,11 +269,12 @@
 
     private OnAnimationFinishedCallback startDeferFinishAnimatable(AnimationAdapter anim) {
         mDeferFinishAnimatable.mSurfaceAnimator.startAnimation(mTransaction, anim,
-                true /* hidden */);
+                true /* hidden */, ANIMATION_TYPE_APP_TRANSITION);
         final ArgumentCaptor<OnAnimationFinishedCallback> callbackCaptor = ArgumentCaptor.forClass(
                 OnAnimationFinishedCallback.class);
         assertAnimating(mDeferFinishAnimatable);
-        verify(anim).startAnimation(any(), any(), callbackCaptor.capture());
+        verify(anim).startAnimation(any(), any(), eq(ANIMATION_TYPE_APP_TRANSITION),
+                callbackCaptor.capture());
         return callbackCaptor.getValue();
     }
 
@@ -274,6 +297,7 @@
         final SurfaceAnimator mSurfaceAnimator;
         SurfaceControl mLeash;
         boolean mFinishedCallbackCalled;
+        @AnimationType int mFinishedAnimationType;
 
         MyAnimatable(WindowManagerService wm, SurfaceSession session, Transaction transaction) {
             mSession = session;
@@ -343,7 +367,11 @@
             return 1;
         }
 
-        private final Runnable mFinishedCallback = () -> mFinishedCallbackCalled = true;
+        private final SurfaceAnimator.OnAnimationFinishedCallback mFinishedCallback = (
+                type, anim) -> {
+            mFinishedCallbackCalled = true;
+            mFinishedAnimationType = type;
+        };
     }
 
     private static class DeferFinishAnimatable extends MyAnimatable {
diff --git a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
index e507508..f517881 100644
--- a/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
+++ b/services/tests/wmtests/src/com/android/server/wm/SystemServicesTestRule.java
@@ -439,11 +439,11 @@
             doNothing().when(this).updateCpuStats();
 
             // AppOpsService
-            final AppOpsService aos = mock(AppOpsService.class);
-            doReturn(aos).when(this).getAppOpsService();
+            final AppOpsManager aos = mock(AppOpsManager.class);
+            doReturn(aos).when(this).getAppOpsManager();
             // Make sure permission checks aren't overridden.
-            doReturn(AppOpsManager.MODE_DEFAULT).when(aos).noteOperation(anyInt(), anyInt(),
-                    anyString(), nullable(String.class), anyBoolean(), nullable(String.class));
+            doReturn(AppOpsManager.MODE_DEFAULT).when(aos).noteOpNoThrow(anyInt(), anyInt(),
+                    anyString(), nullable(String.class), nullable(String.class));
 
             // UserManagerService
             final UserManagerService ums = mock(UserManagerService.class);
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java
index c9fd79f..0312df6 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskOrganizerTests.java
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -16,45 +16,64 @@
 
 package com.android.server.wm;
 
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_HOME;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_STANDARD;
+import static android.app.WindowConfiguration.ACTIVITY_TYPE_UNDEFINED;
 import static android.app.WindowConfiguration.WINDOWING_MODE_FREEFORM;
 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.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_PRIMARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_SPLIT_SCREEN_SECONDARY;
+import static android.app.WindowConfiguration.WINDOWING_MODE_UNDEFINED;
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
 
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-import static org.mockito.ArgumentMatchers.any;
-import static org.mockito.ArgumentMatchers.anyInt;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.mock;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
-import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.when;
 
-import android.graphics.Point;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.never;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
+import static com.android.dx.mockito.inline.extended.ExtendedMockito.doReturn;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.ArgumentMatchers.anyBoolean;
+import static org.mockito.ArgumentMatchers.anyInt;
+
+import android.app.ActivityManager.RunningTaskInfo;
+import android.app.ActivityManager.StackInfo;
+import android.app.PictureInPictureParams;
+import android.content.res.Configuration;
 import android.graphics.Rect;
-import android.platform.test.annotations.Presubmit;
 import android.os.Binder;
+import android.os.IBinder;
 import android.os.RemoteException;
+import android.platform.test.annotations.Presubmit;
+import android.util.ArrayMap;
+import android.content.pm.ActivityInfo;
+import android.util.Rational;
+import android.view.Display;
 import android.view.ITaskOrganizer;
+import android.view.IWindowContainer;
 import android.view.SurfaceControl;
-import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION;
+import android.view.WindowContainerTransaction;
 
 import androidx.test.filters.SmallTest;
 
 import org.junit.Test;
 import org.junit.runner.RunWith;
 
+import java.util.ArrayList;
+import java.util.List;
+
 /**
- * Test class for {@link TaskOrganizer}.
+ * Test class for {@link ITaskOrganizer} and {@link android.app.ITaskOrganizerController}.
  *
  * Build/Install/Run:
  *  atest WmTests:TaskOrganizerTests
@@ -63,23 +82,28 @@
 @Presubmit
 @RunWith(WindowTestRunner.class)
 public class TaskOrganizerTests extends WindowTestsBase {
-    private ITaskOrganizer makeAndRegisterMockOrganizer() {
+    private ITaskOrganizer registerMockOrganizer(int windowingMode) {
         final ITaskOrganizer organizer = mock(ITaskOrganizer.class);
         when(organizer.asBinder()).thenReturn(new Binder());
 
-        mWm.mAtmService.registerTaskOrganizer(organizer, WINDOWING_MODE_PINNED);
+        mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(
+                organizer, windowingMode);
 
         return organizer;
     }
 
+    private ITaskOrganizer registerMockOrganizer() {
+        return registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW);
+    }
+
     @Test
     public void testAppearVanish() throws RemoteException {
         final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
         final Task task = createTaskInStack(stack, 0 /* userId */);
-        final ITaskOrganizer organizer = makeAndRegisterMockOrganizer();
+        final ITaskOrganizer organizer = registerMockOrganizer();
 
         task.setTaskOrganizer(organizer);
-        verify(organizer).taskAppeared(any(), any());
+        verify(organizer).taskAppeared(any());
 
         task.removeImmediately();
         verify(organizer).taskVanished(any());
@@ -89,24 +113,38 @@
     public void testSwapOrganizer() throws RemoteException {
         final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
         final Task task = createTaskInStack(stack, 0 /* userId */);
-        final ITaskOrganizer organizer = makeAndRegisterMockOrganizer();
-        final ITaskOrganizer organizer2 = makeAndRegisterMockOrganizer();
+        final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW);
+        final ITaskOrganizer organizer2 = registerMockOrganizer(WINDOWING_MODE_PINNED);
 
         task.setTaskOrganizer(organizer);
-        verify(organizer).taskAppeared(any(), any());
+        verify(organizer).taskAppeared(any());
         task.setTaskOrganizer(organizer2);
         verify(organizer).taskVanished(any());
-        verify(organizer2).taskAppeared(any(), any());
+        verify(organizer2).taskAppeared(any());
+    }
+
+    @Test
+    public void testSwapWindowingModes() throws RemoteException {
+        final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
+        final Task task = createTaskInStack(stack, 0 /* userId */);
+        final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW);
+        final ITaskOrganizer organizer2 = registerMockOrganizer(WINDOWING_MODE_PINNED);
+ 
+        stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        verify(organizer).taskAppeared(any());
+        stack.setWindowingMode(WINDOWING_MODE_PINNED);
+        verify(organizer).taskVanished(any());
+        verify(organizer2).taskAppeared(any());
     }
 
     @Test
     public void testClearOrganizer() throws RemoteException {
         final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
         final Task task = createTaskInStack(stack, 0 /* userId */);
-        final ITaskOrganizer organizer = makeAndRegisterMockOrganizer();
+        final ITaskOrganizer organizer = registerMockOrganizer();
 
         stack.setTaskOrganizer(organizer);
-        verify(organizer).taskAppeared(any(), any());
+        verify(organizer).taskAppeared(any());
         assertTrue(stack.isControlledByTaskOrganizer());
 
         stack.setTaskOrganizer(null);
@@ -115,16 +153,430 @@
     }
 
     @Test
+    public void testUnregisterOrganizer() throws RemoteException {
+        final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
+        final Task task = createTaskInStack(stack, 0 /* userId */);
+        final ITaskOrganizer organizer = registerMockOrganizer();
+
+        stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        verify(organizer).taskAppeared(any());
+        assertTrue(stack.isControlledByTaskOrganizer());
+
+        mWm.mAtmService.mTaskOrganizerController.unregisterTaskOrganizer(organizer);
+        verify(organizer).taskVanished(any());
+        assertFalse(stack.isControlledByTaskOrganizer());
+    }
+
+    @Test
+    public void testUnregisterOrganizerReturnsRegistrationToPrevious() throws RemoteException {
+        final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
+        final Task task = createTaskInStack(stack, 0 /* userId */);
+        final ActivityStack stack2 = createTaskStackOnDisplay(mDisplayContent);
+        final Task task2 = createTaskInStack(stack2, 0 /* userId */);
+        final ActivityStack stack3 = createTaskStackOnDisplay(mDisplayContent);
+        final Task task3 = createTaskInStack(stack3, 0 /* userId */);
+        final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW);
+
+        // First organizer is registered, verify a task appears when changing windowing mode
+        stack.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        verify(organizer, times(1)).taskAppeared(any());
+        assertTrue(stack.isControlledByTaskOrganizer());
+
+        // Now we replace the registration and1 verify the new organizer receives tasks
+        // newly entering the windowing mode.
+        final ITaskOrganizer organizer2 = registerMockOrganizer(WINDOWING_MODE_MULTI_WINDOW);
+        stack2.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        verify(organizer2).taskAppeared(any());
+        assertTrue(stack2.isControlledByTaskOrganizer());
+
+        // Now we unregister the second one, the first one should automatically be reregistered
+        // so we verify that it's now seeing changes.
+        mWm.mAtmService.mTaskOrganizerController.unregisterTaskOrganizer(organizer2);
+
+        stack3.setWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        verify(organizer, times(2)).taskAppeared(any());
+        assertTrue(stack3.isControlledByTaskOrganizer());
+    }
+
+    @Test
     public void testRegisterTaskOrganizerStackWindowingModeChanges() throws RemoteException {
-        final ITaskOrganizer organizer = makeAndRegisterMockOrganizer();
+        final ITaskOrganizer organizer = registerMockOrganizer(WINDOWING_MODE_PINNED);
 
         final ActivityStack stack = createTaskStackOnDisplay(mDisplayContent);
         final Task task = createTaskInStack(stack, 0 /* userId */);
         final Task task2 = createTaskInStack(stack, 0 /* userId */);
         stack.setWindowingMode(WINDOWING_MODE_PINNED);
-        verify(organizer, times(1)).taskAppeared(any(), any());
+        verify(organizer, times(1)).taskAppeared(any());
 
         stack.setWindowingMode(WINDOWING_MODE_FULLSCREEN);
         verify(organizer, times(1)).taskVanished(any());
     }
+
+    @Test
+    public void testTaskTransaction() {
+        removeGlobalMinSizeRestriction();
+        final ActivityStack stack = new ActivityTestsBase.StackBuilder(mWm.mRoot)
+                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
+        final Task task = stack.getTopMostTask();
+        WindowContainerTransaction t = new WindowContainerTransaction();
+        Rect newBounds = new Rect(10, 10, 100, 100);
+        t.setBounds(task.mRemoteToken, new Rect(10, 10, 100, 100));
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(t, null);
+        assertEquals(newBounds, task.getBounds());
+    }
+
+    @Test
+    public void testStackTransaction() {
+        removeGlobalMinSizeRestriction();
+        final ActivityStack stack = new ActivityTestsBase.StackBuilder(mWm.mRoot)
+                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
+        StackInfo info =
+                mWm.mAtmService.getStackInfo(WINDOWING_MODE_FREEFORM, ACTIVITY_TYPE_STANDARD);
+        WindowContainerTransaction t = new WindowContainerTransaction();
+        assertEquals(stack.mRemoteToken, info.stackToken);
+        Rect newBounds = new Rect(10, 10, 100, 100);
+        t.setBounds(info.stackToken, new Rect(10, 10, 100, 100));
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(t, null);
+        assertEquals(newBounds, stack.getBounds());
+    }
+
+    @Test
+    public void testContainerChanges() {
+        removeGlobalMinSizeRestriction();
+        final ActivityStack stack = new ActivityTestsBase.StackBuilder(mWm.mRoot)
+                .setWindowingMode(WINDOWING_MODE_FREEFORM).build();
+        final Task task = stack.getTopMostTask();
+        WindowContainerTransaction t = new WindowContainerTransaction();
+        assertTrue(task.isFocusable());
+        t.setFocusable(stack.mRemoteToken, false);
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(t, null);
+        assertFalse(task.isFocusable());
+    }
+
+    @Test
+    public void testCreateDeleteRootTasks() {
+        RunningTaskInfo info1 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                Display.DEFAULT_DISPLAY,
+                WINDOWING_MODE_SPLIT_SCREEN_PRIMARY);
+        assertEquals(WINDOWING_MODE_SPLIT_SCREEN_PRIMARY,
+                info1.configuration.windowConfiguration.getWindowingMode());
+        assertEquals(ACTIVITY_TYPE_UNDEFINED, info1.topActivityType);
+
+        RunningTaskInfo info2 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                Display.DEFAULT_DISPLAY,
+                WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+        assertEquals(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY,
+                info2.configuration.windowConfiguration.getWindowingMode());
+        assertEquals(ACTIVITY_TYPE_UNDEFINED, info2.topActivityType);
+
+        DisplayContent dc = mWm.mRoot.getDisplayContent(Display.DEFAULT_DISPLAY);
+        List<TaskTile> infos = getTaskTiles(dc);
+        assertEquals(2, infos.size());
+
+        assertTrue(mWm.mAtmService.mTaskOrganizerController.deleteRootTask(info1.token));
+        infos = getTaskTiles(dc);
+        assertEquals(1, infos.size());
+        assertEquals(WINDOWING_MODE_SPLIT_SCREEN_SECONDARY, infos.get(0).getWindowingMode());
+    }
+
+    @Test
+    public void testTileAddRemoveChild() {
+        RunningTaskInfo info1 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                mDisplayContent.mDisplayId, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+
+        final ActivityStack stack = createTaskStackOnDisplay(
+                WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, mDisplayContent);
+        assertEquals(mDisplayContent.getWindowingMode(), stack.getWindowingMode());
+        TaskTile tile1 = TaskTile.forToken(info1.token.asBinder());
+        tile1.addChild(stack, 0 /* index */);
+        assertEquals(info1.configuration.windowConfiguration.getWindowingMode(),
+                stack.getWindowingMode());
+
+        // Info should reflect new membership
+        List<TaskTile> tiles = getTaskTiles(mDisplayContent);
+        info1 = new RunningTaskInfo();
+        tiles.get(0).fillTaskInfo(info1);
+        assertEquals(ACTIVITY_TYPE_STANDARD, info1.topActivityType);
+
+        // Children inherit configuration
+        Rect newSize = new Rect(10, 10, 300, 300);
+        Configuration c = new Configuration(tile1.getRequestedOverrideConfiguration());
+        c.windowConfiguration.setBounds(newSize);
+        tile1.onRequestedOverrideConfigurationChanged(c);
+        assertEquals(newSize, stack.getBounds());
+
+        tile1.removeChild(stack);
+        assertEquals(mDisplayContent.getWindowingMode(), stack.getWindowingMode());
+        info1 = new RunningTaskInfo();
+        tiles = getTaskTiles(mDisplayContent);
+        tiles.get(0).fillTaskInfo(info1);
+        assertEquals(ACTIVITY_TYPE_UNDEFINED, info1.topActivityType);
+    }
+
+    @Test
+    public void testTaskInfoCallback() {
+        final ArrayList<RunningTaskInfo> lastReportedTiles = new ArrayList<>();
+        final boolean[] called = {false};
+        ITaskOrganizer listener = new ITaskOrganizer.Stub() {
+            @Override
+            public void taskAppeared(RunningTaskInfo taskInfo) { }
+
+            @Override
+            public void taskVanished(IWindowContainer container) { }
+
+            @Override
+            public void transactionReady(int id, SurfaceControl.Transaction t) { }
+
+            @Override
+            public void onTaskInfoChanged(RunningTaskInfo info) throws RemoteException {
+                lastReportedTiles.add(info);
+                called[0] = true;
+            }
+        };
+        mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(listener,
+                WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+        RunningTaskInfo info1 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                mDisplayContent.mDisplayId, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+        lastReportedTiles.clear();
+        called[0] = false;
+
+        final ActivityStack stack = createTaskStackOnDisplay(
+                WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, mDisplayContent);
+        TaskTile tile1 = TaskTile.forToken(info1.token.asBinder());
+        tile1.addChild(stack, 0 /* index */);
+        assertTrue(called[0]);
+        assertEquals(ACTIVITY_TYPE_STANDARD, lastReportedTiles.get(0).topActivityType);
+
+        lastReportedTiles.clear();
+        called[0] = false;
+        final ActivityStack stack2 = createTaskStackOnDisplay(
+                WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, mDisplayContent);
+        tile1.addChild(stack2, 0 /* index */);
+        assertTrue(called[0]);
+        assertEquals(ACTIVITY_TYPE_HOME, lastReportedTiles.get(0).topActivityType);
+
+        lastReportedTiles.clear();
+        called[0] = false;
+        mDisplayContent.positionStackAtTop(stack, false /* includingParents */);
+        assertTrue(called[0]);
+        assertEquals(ACTIVITY_TYPE_STANDARD, lastReportedTiles.get(0).topActivityType);
+
+        lastReportedTiles.clear();
+        called[0] = false;
+        tile1.removeAllChildren();
+        assertTrue(called[0]);
+        assertEquals(ACTIVITY_TYPE_UNDEFINED, lastReportedTiles.get(0).topActivityType);
+    }
+
+    @Test
+    public void testHierarchyTransaction() {
+        final ArrayMap<IBinder, RunningTaskInfo> lastReportedTiles = new ArrayMap<>();
+        ITaskOrganizer listener = new ITaskOrganizer.Stub() {
+            @Override
+            public void taskAppeared(RunningTaskInfo taskInfo) { }
+
+            @Override
+            public void taskVanished(IWindowContainer container) { }
+
+            @Override
+            public void transactionReady(int id, SurfaceControl.Transaction t) { }
+
+            @Override
+            public void onTaskInfoChanged(RunningTaskInfo info) {
+                lastReportedTiles.put(info.token.asBinder(), info);
+            }
+        };
+        mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(
+                listener, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+        RunningTaskInfo info1 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                mDisplayContent.mDisplayId, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+        RunningTaskInfo info2 = mWm.mAtmService.mTaskOrganizerController.createRootTask(
+                mDisplayContent.mDisplayId, WINDOWING_MODE_SPLIT_SCREEN_SECONDARY);
+
+        final int initialRootTaskCount = mWm.mAtmService.mTaskOrganizerController.getRootTasks(
+                mDisplayContent.mDisplayId, null /* activityTypes */).size();
+
+        final ActivityStack stack = createTaskStackOnDisplay(
+                WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_STANDARD, mDisplayContent);
+        final ActivityStack stack2 = createTaskStackOnDisplay(
+                WINDOWING_MODE_UNDEFINED, ACTIVITY_TYPE_HOME, mDisplayContent);
+
+        // Check getRootTasks works
+        List<RunningTaskInfo> roots = mWm.mAtmService.mTaskOrganizerController.getRootTasks(
+                mDisplayContent.mDisplayId, null /* activityTypes */);
+        assertEquals(initialRootTaskCount + 2, roots.size());
+
+        lastReportedTiles.clear();
+        WindowContainerTransaction wct = new WindowContainerTransaction();
+        wct.reparent(stack.mRemoteToken, info1.token, true /* onTop */);
+        wct.reparent(stack2.mRemoteToken, info2.token, true /* onTop */);
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(wct,
+                null /* organizer */);
+        assertFalse(lastReportedTiles.isEmpty());
+        assertEquals(ACTIVITY_TYPE_STANDARD,
+                lastReportedTiles.get(info1.token.asBinder()).topActivityType);
+        assertEquals(ACTIVITY_TYPE_HOME,
+                lastReportedTiles.get(info2.token.asBinder()).topActivityType);
+
+        lastReportedTiles.clear();
+        wct = new WindowContainerTransaction();
+        wct.reparent(stack2.mRemoteToken, info1.token, false /* onTop */);
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(wct,
+                null /* organizer */);
+        assertFalse(lastReportedTiles.isEmpty());
+        // Standard should still be on top of tile 1, so no change there
+        assertFalse(lastReportedTiles.containsKey(info1.token.asBinder()));
+        // But tile 2 has no children, so should become undefined
+        assertEquals(ACTIVITY_TYPE_UNDEFINED,
+                lastReportedTiles.get(info2.token.asBinder()).topActivityType);
+
+        // Check the getChildren call
+        List<RunningTaskInfo> children =
+                mWm.mAtmService.mTaskOrganizerController.getChildTasks(info1.token,
+                        null /* activityTypes */);
+        assertEquals(2, children.size());
+        children = mWm.mAtmService.mTaskOrganizerController.getChildTasks(info2.token,
+                null /* activityTypes */);
+        assertEquals(0, children.size());
+
+        // Check that getRootTasks doesn't include children of tiles
+        roots = mWm.mAtmService.mTaskOrganizerController.getRootTasks(mDisplayContent.mDisplayId,
+                null /* activityTypes */);
+        assertEquals(initialRootTaskCount, roots.size());
+
+        lastReportedTiles.clear();
+        wct = new WindowContainerTransaction();
+        wct.reorder(stack2.mRemoteToken, true /* onTop */);
+        mWm.mAtmService.mTaskOrganizerController.applyContainerTransaction(wct,
+                null /* organizer */);
+        // Home should now be on top. No change occurs in second tile, so not reported
+        assertEquals(1, lastReportedTiles.size());
+        assertEquals(ACTIVITY_TYPE_HOME,
+                lastReportedTiles.get(info1.token.asBinder()).topActivityType);
+    }
+
+    private List<TaskTile> getTaskTiles(DisplayContent dc) {
+        ArrayList<TaskTile> out = new ArrayList<>();
+        for (int i = dc.getStackCount() - 1; i >= 0; --i) {
+            final Task t = dc.getStackAt(i);
+            if (t instanceof TaskTile) {
+                out.add((TaskTile) t);
+            }
+        }
+        return out;
+    }
+
+    @Test
+    public void testTrivialBLASTCallback() throws RemoteException {
+        final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
+        final Task task = createTaskInStack(stackController1, 0 /* userId */);
+        final ITaskOrganizer organizer = registerMockOrganizer();
+
+        BLASTSyncEngine bse = new BLASTSyncEngine();
+
+        BLASTSyncEngine.TransactionReadyListener transactionListener =
+            mock(BLASTSyncEngine.TransactionReadyListener.class);
+
+        int id = bse.startSyncSet(transactionListener);
+        bse.addToSyncSet(id, task);
+        bse.setReady(id);
+        // Since this task has no windows the sync is trivial and completes immediately.
+        verify(transactionListener)
+            .transactionReady(anyInt(), any());
+    }
+
+    @Test
+    public void testBLASTCallbackWithWindow() {
+        final ActivityStack stackController1 = createTaskStackOnDisplay(mDisplayContent);
+        final Task task = createTaskInStack(stackController1, 0 /* userId */);
+        final ITaskOrganizer organizer = registerMockOrganizer();
+        final WindowState w = createAppWindow(task, TYPE_APPLICATION, "Enlightened Window");
+
+        BLASTSyncEngine bse = new BLASTSyncEngine();
+
+        BLASTSyncEngine.TransactionReadyListener transactionListener =
+            mock(BLASTSyncEngine.TransactionReadyListener.class);
+
+        int id = bse.startSyncSet(transactionListener);
+        bse.addToSyncSet(id, task);
+        bse.setReady(id);
+        // Since we have a window we have to wait for it to draw to finish sync.
+        verify(transactionListener, never())
+            .transactionReady(anyInt(), any());
+        w.finishDrawing(null);
+        verify(transactionListener)
+            .transactionReady(anyInt(), any());
+    }
+
+    class StubOrganizer extends ITaskOrganizer.Stub {
+        RunningTaskInfo mInfo;
+
+        @Override
+        public void taskAppeared(RunningTaskInfo info) {
+            mInfo = info;
+        }
+        @Override
+        public void taskVanished(IWindowContainer wc) {
+        }
+        @Override
+        public void transactionReady(int id, SurfaceControl.Transaction t) {
+        }
+        @Override
+        public void onTaskInfoChanged(RunningTaskInfo info) {
+        }
+    };
+
+    private ActivityRecord makePipableActivity() {
+        final ActivityRecord record = createActivityRecord(mDisplayContent,
+                WINDOWING_MODE_FULLSCREEN, ACTIVITY_TYPE_STANDARD);
+        record.info.flags |= ActivityInfo.FLAG_SUPPORTS_PICTURE_IN_PICTURE;
+        spyOn(record);
+        doReturn(true).when(record).checkEnterPictureInPictureState(any(), anyBoolean());
+        return record;
+    }
+
+    @Test
+    public void testEnterPipParams() {
+        final StubOrganizer o = new StubOrganizer();
+        mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(o, WINDOWING_MODE_PINNED);
+        final ActivityRecord record = makePipableActivity();
+
+        final PictureInPictureParams p =
+            new PictureInPictureParams.Builder().setAspectRatio(new Rational(1, 2)).build();
+        assertTrue(mWm.mAtmService.enterPictureInPictureMode(record.token, p));
+        waitUntilHandlersIdle();
+        assertNotNull(o.mInfo);
+        assertNotNull(o.mInfo.pictureInPictureParams);
+    }
+
+    @Test
+    public void testChangePipParams() {
+        class ChangeSavingOrganizer extends StubOrganizer {
+            RunningTaskInfo mChangedInfo;
+            @Override
+            public void onTaskInfoChanged(RunningTaskInfo info) {
+                mChangedInfo = info;
+            }
+        }
+        ChangeSavingOrganizer o = new ChangeSavingOrganizer();
+        mWm.mAtmService.mTaskOrganizerController.registerTaskOrganizer(o, WINDOWING_MODE_PINNED);
+
+        final ActivityRecord record = makePipableActivity();
+        final PictureInPictureParams p =
+            new PictureInPictureParams.Builder().setAspectRatio(new Rational(1, 2)).build();
+        assertTrue(mWm.mAtmService.enterPictureInPictureMode(record.token, p));
+        waitUntilHandlersIdle();
+        assertNotNull(o.mInfo);
+        assertNotNull(o.mInfo.pictureInPictureParams);
+
+        final PictureInPictureParams p2 =
+            new PictureInPictureParams.Builder().setAspectRatio(new Rational(3, 4)).build();
+        mWm.mAtmService.setPictureInPictureParams(record.token, p2);
+        waitUntilHandlersIdle();
+        assertNotNull(o.mChangedInfo);
+        assertNotNull(o.mChangedInfo.pictureInPictureParams);
+        final Rational ratio = o.mChangedInfo.pictureInPictureParams.getAspectRatioRational();
+        assertEquals(3, ratio.getNumerator());
+        assertEquals(4, ratio.getDenominator());
+    }
 }
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
index 7aaf3fb..52b465f 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskPositionerTests.java
@@ -20,7 +20,7 @@
 import static android.view.WindowManager.LayoutParams.TYPE_BASE_APPLICATION;
 
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
-import static com.android.server.wm.TaskPositioner.MIN_ASPECT;
+import static com.android.internal.policy.TaskResizingAlgorithm.MIN_ASPECT;
 import static com.android.server.wm.WindowManagerService.dipToPixel;
 import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_HEIGHT_IN_DP;
 import static com.android.server.wm.WindowState.MINIMUM_VISIBLE_WIDTH_IN_DP;
diff --git a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
index ebf14d2..feadd0a 100644
--- a/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/TaskRecordTests.java
@@ -988,7 +988,7 @@
     private Task createTask(int taskId) {
         return new ActivityStack(mService, taskId, new Intent(), null, null, null,
                 ActivityBuilder.getDefaultComponent(), null, false, false, false, 0, 10050, null,
-                0, false, null, 0, 0, 0, 0, 0, null, 0, false, false, false, 0,
+                0, false, null, 0, 0, 0, 0, 0, null, null, 0, false, false, false, 0,
                 0, null /*ActivityInfo*/, null /*_voiceSession*/, null /*_voiceInteractor*/,
                 null /*stack*/);
     }
@@ -1022,7 +1022,7 @@
                 boolean neverRelinquishIdentity,
                 ActivityManager.TaskDescription lastTaskDescription,
                 int taskAffiliation, int prevTaskId, int nextTaskId, int taskAffiliationColor,
-                int callingUid, String callingPackage, int resizeMode,
+                int callingUid, String callingPackage, String callingFeatureId, int resizeMode,
                 boolean supportsPictureInPicture,
                 boolean realActivitySuspended, boolean userSetupComplete, int minWidth,
                 int minHeight, ActivityStack stack) {
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
index 05d048d3..4a87701 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowContainerTests.java
@@ -34,6 +34,7 @@
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.spyOn;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.times;
 import static com.android.dx.mockito.inline.extended.ExtendedMockito.verify;
+import static com.android.server.wm.SurfaceAnimator.ANIMATION_TYPE_APP_TRANSITION;
 import static com.android.server.wm.WindowContainer.AnimationFlags.CHILDREN;
 import static com.android.server.wm.WindowContainer.AnimationFlags.PARENTS;
 import static com.android.server.wm.WindowContainer.AnimationFlags.TRANSITION;
@@ -61,6 +62,8 @@
 
 import androidx.test.filters.SmallTest;
 
+import com.android.server.wm.SurfaceAnimator.OnAnimationFinishedCallback;
+
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.mockito.Mockito;
@@ -829,7 +832,8 @@
         wc.getDisplayContent().mAppTransition.overridePendingAppTransitionRemote(adapter);
         spyOn(wc);
         doReturn(true).when(wc).okToAnimate();
-        final Runnable onAnimationFinishedCallback = mock(Runnable.class);
+        final OnAnimationFinishedCallback onAnimationFinishedCallback =
+                mock(OnAnimationFinishedCallback.class);
 
         // Make sure animating state is as expected after applied animation.
         assertTrue(wc.applyAnimation(null, TRANSIT_TASK_OPEN, true, false,
@@ -837,16 +841,18 @@
         assertEquals(wc.getTopMostActivity(), act);
         assertTrue(wc.isAnimating());
         assertTrue(act.isAnimating(PARENTS));
-        verify(onAnimationFinishedCallback, times(0)).run();
+        verify(onAnimationFinishedCallback, times(0)).onAnimationFinished(
+                eq(ANIMATION_TYPE_APP_TRANSITION), any());
 
         // Make sure animation finish callback will be received and reset animating state after
         // animation finish.
         wc.getDisplayContent().mAppTransition.goodToGo(TRANSIT_TASK_OPEN, act,
                 mDisplayContent.mOpeningApps);
-        verify(wc).onAnimationFinished();
+        verify(wc).onAnimationFinished(eq(ANIMATION_TYPE_APP_TRANSITION), any());
         assertFalse(wc.isAnimating());
         assertFalse(act.isAnimating(PARENTS));
-        verify(onAnimationFinishedCallback, times(1)).run();
+        verify(onAnimationFinishedCallback, times(1)).onAnimationFinished(
+                eq(ANIMATION_TYPE_APP_TRANSITION), any());
     }
 
     /* Used so we can gain access to some protected members of the {@link WindowContainer} class */
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
new file mode 100644
index 0000000..35723ab
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowManagerServiceTests.java
@@ -0,0 +1,60 @@
+/*
+ * 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.server.wm;
+
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import android.content.pm.PackageManager;
+import android.platform.test.annotations.Presubmit;
+
+import androidx.test.filters.SmallTest;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+
+@SmallTest
+@Presubmit
+@RunWith(WindowTestRunner.class)
+public class WindowManagerServiceTests extends WindowTestsBase {
+    @Rule
+    public ExpectedException mExpectedException = ExpectedException.none();
+
+    @Test
+    public void testForceShowSystemBarsThrowsExceptionForNonAutomotive() {
+        if (!isAutomotive()) {
+            mExpectedException.expect(UnsupportedOperationException.class);
+
+            mWm.setForceShowSystemBars(true);
+        }
+    }
+
+    @Test
+    public void testForceShowSystemBarsDoesNotThrowExceptionForAutomotiveWithStatusBarPermission() {
+        if (isAutomotive()) {
+            mExpectedException.none();
+
+            mWm.setForceShowSystemBars(true);
+        }
+    }
+
+    private boolean isAutomotive() {
+        return getInstrumentation().getTargetContext().getPackageManager().hasSystemFeature(
+                PackageManager.FEATURE_AUTOMOTIVE);
+    }
+}
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 186ff6b..2c68cc7 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowStateTests.java
@@ -425,7 +425,7 @@
         statusBar.mHasSurface = true;
         assertTrue(statusBar.isVisible());
         mDisplayContent.getInsetsStateController().getSourceProvider(ITYPE_STATUS_BAR)
-                .setWindow(statusBar, null /* frameProvider */);
+                .setWindow(statusBar, null /* frameProvider */, null /* imeFrameProvider */);
         mDisplayContent.getInsetsStateController().onBarControlTargetChanged(
                 app, null /* fakeTopControlling */, app, null /* fakeNavControlling */);
         final InsetsSource source = new InsetsSource(ITYPE_STATUS_BAR);
diff --git a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
index 20eab5a..1ca2e318 100644
--- a/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
+++ b/services/tests/wmtests/src/com/android/server/wm/WindowTestsBase.java
@@ -40,6 +40,7 @@
 import static org.mockito.Mockito.mock;
 
 import android.content.Context;
+import android.content.Intent;
 import android.util.Log;
 import android.view.Display;
 import android.view.DisplayInfo;
@@ -110,7 +111,7 @@
             beforeCreateDisplay();
 
             context.getDisplay().getDisplayInfo(mDisplayInfo);
-            mDisplayContent = createNewDisplay();
+            mDisplayContent = createNewDisplay(true /* supportIme */);
 
             // Set-up some common windows.
             mCommonWindows = new HashSet<>();
@@ -340,6 +341,7 @@
                     .setWindowingMode(windowingMode)
                     .setActivityType(activityType)
                     .setCreateActivity(false)
+                    .setIntent(new Intent())
                     .build();
         }
     }
@@ -349,16 +351,29 @@
         return WindowTestUtils.createTaskInStack(mWm, stack, userId);
     }
 
-    /** Creates a {@link DisplayContent} and adds it to the system. */
+    /** Creates a {@link DisplayContent} that supports IME and adds it to the system. */
     DisplayContent createNewDisplay() {
-        return createNewDisplay(mDisplayInfo);
+        return createNewDisplay(true /* supportIme */);
     }
 
     /** Creates a {@link DisplayContent} and adds it to the system. */
+    private DisplayContent createNewDisplay(boolean supportIme) {
+        return createNewDisplay(mDisplayInfo, supportIme);
+    }
+
+    /** Creates a {@link DisplayContent} that supports IME and adds it to the system. */
     DisplayContent createNewDisplay(DisplayInfo info) {
+        return createNewDisplay(info, true /* supportIme */);
+    }
+
+    /** Creates a {@link DisplayContent} and adds it to the system. */
+    private DisplayContent createNewDisplay(DisplayInfo info, boolean supportIme) {
         final DisplayContent display =
                 new TestDisplayContent.Builder(mWm.mAtmService, info).build();
-        return display.mDisplayContent;
+        final DisplayContent dc = display.mDisplayContent;
+        // this display can show IME.
+        dc.mWmService.mDisplayWindowSettings.setShouldShowImeLocked(dc, supportIme);
+        return dc;
     }
 
     /**
@@ -372,7 +387,7 @@
         DisplayInfo displayInfo = new DisplayInfo();
         displayInfo.copyFrom(mDisplayInfo);
         displayInfo.state = displayState;
-        return createNewDisplay(displayInfo);
+        return createNewDisplay(displayInfo, true /* supportIme */);
     }
 
     /** Creates a {@link com.android.server.wm.WindowTestUtils.TestWindowState} */
@@ -389,7 +404,7 @@
         displayInfo.copyFrom(mDisplayInfo);
         displayInfo.type = Display.TYPE_VIRTUAL;
         displayInfo.ownerUid = SYSTEM_UID;
-        return createNewDisplay(displayInfo);
+        return createNewDisplay(displayInfo, false /* supportIme */);
     }
 
     /** Sets the default minimum task size to 1 so that tests can use small task sizes */
diff --git a/services/tests/wmtests/src/com/android/server/wm/testing/Assert.java b/services/tests/wmtests/src/com/android/server/wm/testing/Assert.java
new file mode 100644
index 0000000..1e98277
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/testing/Assert.java
@@ -0,0 +1,48 @@
+/*
+ * 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.server.wm.testing;
+
+/**
+ * Assertions for WM tests.
+ */
+public class Assert {
+
+    /**
+     * Runs {@code r} and asserts that an exception of type {@code expectedThrowable} is thrown.
+     * @param expectedThrowable the type of throwable that is expected to be thrown
+     * @param r the {@link Runnable} which is run and expected to throw.
+     * @throws AssertionError if {@code r} does not throw, or throws a runnable that is not an
+     *                        instance of {@code expectedThrowable}.
+     */
+    // TODO: remove once Android migrates to JUnit 4.13, which provides assertThrows
+    public static void assertThrows(Class<? extends Throwable> expectedThrowable, Runnable r) {
+        try {
+            r.run();
+        } catch (Throwable t) {
+            if (expectedThrowable.isInstance(t)) {
+                return;
+            } else if (t instanceof Exception) {
+                throw new AssertionError("Expected " + expectedThrowable
+                        + ", but got " + t.getClass(), t);
+            } else {
+                // Re-throw Errors and other non-Exception throwables.
+                throw t;
+            }
+        }
+        throw new AssertionError("Expected " + expectedThrowable + ", but nothing was thrown");
+    }
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/testing/AssertTest.java b/services/tests/wmtests/src/com/android/server/wm/testing/AssertTest.java
new file mode 100644
index 0000000..df12761
--- /dev/null
+++ b/services/tests/wmtests/src/com/android/server/wm/testing/AssertTest.java
@@ -0,0 +1,85 @@
+/*
+ * 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.server.wm.testing;
+
+import static com.android.server.wm.testing.Assert.assertThrows;
+
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class AssertTest {
+
+    @Rule
+    public ExpectedException mExpectedException = ExpectedException.none();
+
+    @Test
+    public void assertThrows_runsRunnable() {
+        boolean[] ran = new boolean[] { false };
+        assertThrows(TestException.class, () -> {
+            ran[0] = true;
+            throw new TestException();
+        });
+        assertTrue(ran[0]);
+    }
+
+    @Test
+    public void assertThrows_failsIfNothingThrown() {
+        mExpectedException.expect(AssertionError.class);
+        assertThrows(TestException.class, () -> {
+        });
+    }
+
+    @Test
+    public void assertThrows_failsIfWrongExceptionThrown() {
+        mExpectedException.expect(AssertionError.class);
+        assertThrows(TestException.class, () -> {
+            throw new RuntimeException();
+        });
+    }
+
+    @Test
+    public void assertThrows_succeedsIfGivenExceptionThrown() {
+        assertThrows(TestException.class, () -> {
+            throw new TestException();
+        });
+    }
+
+    @Test
+    public void assertThrows_succeedsIfSubExceptionThrown() {
+        assertThrows(RuntimeException.class, () -> {
+            throw new TestException();
+        });
+    }
+
+    @Test
+    public void assertThrows_rethrowsUnexpectedErrors() {
+        mExpectedException.expect(TestError.class);
+        assertThrows(TestException.class, () -> {
+            throw new TestError();
+        });
+    }
+
+    static class TestException extends RuntimeException {
+    }
+
+    static class TestError extends Error {
+    }
+
+}
diff --git a/services/tests/wmtests/src/com/android/server/wm/utils/WmDisplayCutoutTest.java b/services/tests/wmtests/src/com/android/server/wm/utils/WmDisplayCutoutTest.java
index fb8ba7b..a283476 100644
--- a/services/tests/wmtests/src/com/android/server/wm/utils/WmDisplayCutoutTest.java
+++ b/services/tests/wmtests/src/com/android/server/wm/utils/WmDisplayCutoutTest.java
@@ -47,6 +47,7 @@
 @SmallTest
 @Presubmit
 public class WmDisplayCutoutTest {
+    private static final Rect ZERO_RECT = new Rect();
     private final DisplayCutout mCutoutTop = new DisplayCutout(
             Insets.of(0, 100, 0, 0),
             null /* boundLeft */, new Rect(50, 0, 75, 100) /* boundTop */,
@@ -99,41 +100,204 @@
     }
 
     @Test
-    public void computeSafeInsets_top() {
+    public void computeSafeInsets_cutoutTop() {
         WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
-                fromBoundingRect(0, 0, 100, 20, BOUNDS_POSITION_TOP), 200, 400);
+                fromBoundingRect(80, 0, 120, 20, BOUNDS_POSITION_TOP), 200, 400);
 
         assertEquals(new Rect(0, 20, 0, 0), cutout.getDisplayCutout().getSafeInsets());
     }
 
     @Test
-    public void computeSafeInsets_left() {
+    public void computeSafeInsets_cutoutLeft() {
         WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
-                fromBoundingRect(0, 0, 20, 100, BOUNDS_POSITION_LEFT), 400, 200);
+                fromBoundingRect(0, 180, 20, 220, BOUNDS_POSITION_LEFT), 200, 400);
 
         assertEquals(new Rect(20, 0, 0, 0), cutout.getDisplayCutout().getSafeInsets());
     }
 
     @Test
-    public void computeSafeInsets_bottom() {
+    public void computeSafeInsets_cutoutBottom() {
         WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
-                fromBoundingRect(0, 180, 100, 200, BOUNDS_POSITION_BOTTOM), 100, 200);
+                fromBoundingRect(80, 380, 120, 400, BOUNDS_POSITION_BOTTOM), 200, 400);
 
         assertEquals(new Rect(0, 0, 0, 20), cutout.getDisplayCutout().getSafeInsets());
     }
 
     @Test
-    public void computeSafeInsets_right() {
+    public void computeSafeInsets_cutoutRight() {
         WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
-                fromBoundingRect(180, 0, 200, 100, BOUNDS_POSITION_RIGHT), 200, 100);
+                fromBoundingRect(180, 180, 200, 220, BOUNDS_POSITION_RIGHT), 200, 400);
 
         assertEquals(new Rect(0, 0, 20, 0), cutout.getDisplayCutout().getSafeInsets());
     }
 
     @Test
+    public void computeSafeInsets_topLeftCornerCutout_portrait() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(0, 0, 20, 20, BOUNDS_POSITION_TOP), 200, 400);
+
+        assertEquals(new Rect(0, 20, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_topRightCornerCutout_portrait() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(180, 0, 200, 20, BOUNDS_POSITION_TOP), 200, 400);
+
+        assertEquals(new Rect(0, 20, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_bottomLeftCornerCutout_portrait() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(0, 380, 20, 400, BOUNDS_POSITION_BOTTOM), 200, 400);
+
+        assertEquals(new Rect(0, 0, 0, 20), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_bottomRightCornerCutout_portrait() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(180, 380, 200, 400, BOUNDS_POSITION_BOTTOM), 200, 400);
+
+        assertEquals(new Rect(0, 0, 0, 20), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_topLeftCornerCutout_landscape() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(0, 0, 20, 20, BOUNDS_POSITION_LEFT), 400, 200);
+
+        assertEquals(new Rect(20, 0, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_topRightCornerCutout_landscape() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(380, 0, 400, 20, BOUNDS_POSITION_RIGHT), 400, 200);
+
+        assertEquals(new Rect(0, 0, 20, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_bottomLeftCornerCutout_landscape() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(0, 180, 20, 200, BOUNDS_POSITION_LEFT), 400, 200);
+
+        assertEquals(new Rect(20, 0, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_bottomRightCornerCutout_landscape() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                fromBoundingRect(380, 180, 400, 200, BOUNDS_POSITION_RIGHT), 400, 200);
+
+        assertEquals(new Rect(0, 0, 20, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_waterfall() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, ZERO_RECT, ZERO_RECT, ZERO_RECT},
+                        Insets.of(1, 2, 3, 4)),
+                200, 400);
+
+        assertEquals(new Rect(1, 2, 3, 4), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutTop_greaterThan_waterfallTop() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, new Rect(80, 0, 120, 30), ZERO_RECT, ZERO_RECT},
+                        Insets.of(0, 20, 0, 0)),
+                200, 400);
+
+        assertEquals(new Rect(0, 30, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutTop_lessThan_waterfallTop() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, new Rect(80, 0, 120, 30), ZERO_RECT, ZERO_RECT},
+                        Insets.of(0, 40, 0, 0)),
+                200, 400);
+
+        assertEquals(new Rect(0, 40, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutLeft_greaterThan_waterfallLeft() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {new Rect(0, 180, 30, 220), ZERO_RECT, ZERO_RECT, ZERO_RECT},
+                        Insets.of(20, 0, 0, 0)),
+                200, 400);
+
+        assertEquals(new Rect(30, 0, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutLeft_lessThan_waterfallLeft() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {new Rect(0, 180, 30, 220), ZERO_RECT, ZERO_RECT, ZERO_RECT},
+                        Insets.of(40, 0, 0, 0)),
+                200, 400);
+
+        assertEquals(new Rect(40, 0, 0, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutBottom_greaterThan_waterfallBottom() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, ZERO_RECT, ZERO_RECT, new Rect(80, 370, 120, 400)},
+                        Insets.of(0, 0, 0, 20)),
+                200, 400);
+
+        assertEquals(new Rect(0, 0, 0, 30), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutBottom_lessThan_waterfallBottom() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, ZERO_RECT, ZERO_RECT, new Rect(80, 370, 120, 400)},
+                        Insets.of(0, 0, 0, 40)),
+                200, 400);
+
+        assertEquals(new Rect(0, 0, 0, 40), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutRight_greaterThan_waterfallRight() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, ZERO_RECT, new Rect(170, 180, 200, 220), ZERO_RECT},
+                        Insets.of(0, 0, 20, 0)),
+                200, 400);
+
+        assertEquals(new Rect(0, 0, 30, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
+    public void computeSafeInsets_cutoutRight_lessThan_waterfallRight() {
+        WmDisplayCutout cutout = WmDisplayCutout.computeSafeInsets(
+                DisplayCutout.fromBoundsAndWaterfall(
+                        new Rect[] {ZERO_RECT, ZERO_RECT, new Rect(170, 180, 200, 220), ZERO_RECT},
+                        Insets.of(0, 0, 40, 0)),
+                200, 400);
+
+        assertEquals(new Rect(0, 0, 40, 0), cutout.getDisplayCutout().getSafeInsets());
+    }
+
+    @Test
     public void computeSafeInsets_bounds() {
-        DisplayCutout cutout = WmDisplayCutout.computeSafeInsets(mCutoutTop, 1000,
-                2000).getDisplayCutout();
+        DisplayCutout cutout =
+                WmDisplayCutout.computeSafeInsets(mCutoutTop, 1000, 2000).getDisplayCutout();
 
         assertEquals(mCutoutTop.getBoundingRects(), cutout.getBoundingRects());
     }
diff --git a/services/usage/java/com/android/server/usage/TEST_MAPPING b/services/usage/java/com/android/server/usage/TEST_MAPPING
index 7b53d09..523d5f9 100644
--- a/services/usage/java/com/android/server/usage/TEST_MAPPING
+++ b/services/usage/java/com/android/server/usage/TEST_MAPPING
@@ -28,6 +28,14 @@
           "include-filter": "android.app.usage.cts.UsageStatsTest"
         }
       ]
+    },
+    {
+      "name": "CtsShortcutManagerTestCases",
+      "options": [
+        {
+          "include-filter": "android.content.pm.cts.shortcutmanager.ShortcutManagerUsageTest"
+        }
+      ]
     }
   ]
 }
diff --git a/services/usage/java/com/android/server/usage/UsageStatsService.java b/services/usage/java/com/android/server/usage/UsageStatsService.java
index 9a18f8c..420695d 100644
--- a/services/usage/java/com/android/server/usage/UsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UsageStatsService.java
@@ -60,6 +60,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.PackageManagerInternal;
 import android.content.pm.ParceledListSlice;
+import android.content.pm.ShortcutServiceInternal;
 import android.content.pm.UserInfo;
 import android.content.res.Configuration;
 import android.os.Binder;
@@ -156,6 +157,8 @@
     PackageManagerInternal mPackageManagerInternal;
     // Do not use directly. Call getDpmInternal() instead
     DevicePolicyManagerInternal mDpmInternal;
+    // Do not use directly. Call getShortcutServiceInternal() instead
+    ShortcutServiceInternal mShortcutServiceInternal;
 
     private final SparseArray<UserUsageStatsService> mUserState = new SparseArray<>();
     private final SparseBooleanArray mUserUnlockedStates = new SparseBooleanArray();
@@ -267,6 +270,8 @@
         if (phase == PHASE_SYSTEM_SERVICES_READY) {
             // initialize mDpmInternal
             getDpmInternal();
+            // initialize mShortcutServiceInternal
+            getShortcutServiceInternal();
 
             if (ENABLE_KERNEL_UPDATES && KERNEL_COUNTER_FILE.exists()) {
                 try {
@@ -400,6 +405,13 @@
         return mDpmInternal;
     }
 
+    private ShortcutServiceInternal getShortcutServiceInternal() {
+        if (mShortcutServiceInternal == null) {
+            mShortcutServiceInternal = LocalServices.getService(ShortcutServiceInternal.class);
+        }
+        return mShortcutServiceInternal;
+    }
+
     private void readUsageSourceSetting() {
         synchronized (mLock) {
             mUsageSource = Settings.Global.getInt(getContext().getContentResolver(),
@@ -469,6 +481,25 @@
         return !mPackageManagerInternal.canAccessInstantApps(callingUid, userId);
     }
 
+    private boolean shouldHideShortcutInvocationEvents(int userId, String callingPackage,
+            int callingPid, int callingUid) {
+        final ShortcutServiceInternal shortcutServiceInternal = getShortcutServiceInternal();
+        if (shortcutServiceInternal != null) {
+            return !shortcutServiceInternal.hasShortcutHostPermission(userId, callingPackage,
+                    callingPid, callingUid);
+        }
+        return true; // hide by default if we can't verify visibility
+    }
+
+    private boolean shouldHideLocusIdEvents(int callingPid, int callingUid) {
+        if (callingUid == Process.SYSTEM_UID) {
+            return false;
+        }
+        return !(getContext().checkPermission(
+                android.Manifest.permission.ACCESS_LOCUS_ID_USAGE_STATS, callingPid, callingUid)
+                == PackageManager.PERMISSION_GRANTED);
+    }
+
     private static void deleteRecursively(File f) {
         File[] files = f.listFiles();
         if (files != null) {
@@ -1008,7 +1039,8 @@
      * Called by the Binder stub.
      */
     UsageEvents queryEvents(int userId, long beginTime, long endTime,
-            boolean shouldObfuscateInstantApps) {
+            boolean shouldObfuscateInstantApps, boolean shouldHideShortcutInvocationEvents,
+            boolean shouldHideLocusIdEvents) {
         synchronized (mLock) {
             if (!mUserUnlockedStates.get(userId)) {
                 Slog.w(TAG, "Failed to query events for locked user " + userId);
@@ -1019,7 +1051,8 @@
             if (service == null) {
                 return null; // user was stopped or removed
             }
-            return service.queryEvents(beginTime, endTime, shouldObfuscateInstantApps);
+            return service.queryEvents(beginTime, endTime, shouldObfuscateInstantApps,
+                    shouldHideShortcutInvocationEvents, shouldHideLocusIdEvents);
         }
     }
 
@@ -1109,7 +1142,11 @@
                             // dump everything for all users
                             final int numUsers = mUserState.size();
                             for (int user = 0; user < numUsers; user++) {
-                                ipw.println("user=" + mUserState.keyAt(user));
+                                final int userId = mUserState.keyAt(user);
+                                if (!mUserUnlockedStates.get(userId)) {
+                                    continue;
+                                }
+                                ipw.println("user=" + userId);
                                 ipw.increaseIndent();
                                 mUserState.valueAt(user).dumpFile(ipw, null);
                                 ipw.decreaseIndent();
@@ -1130,7 +1167,11 @@
                             // dump info for all users
                             final int numUsers = mUserState.size();
                             for (int user = 0; user < numUsers; user++) {
-                                ipw.println("user=" + mUserState.keyAt(user));
+                                final int userId = mUserState.keyAt(user);
+                                if (!mUserUnlockedStates.get(userId)) {
+                                    continue;
+                                }
+                                ipw.println("user=" + userId);
                                 ipw.increaseIndent();
                                 mUserState.valueAt(user).dumpDatabaseInfo(ipw);
                                 ipw.decreaseIndent();
@@ -1175,11 +1216,13 @@
                 idpw.printPair("user", userId);
                 idpw.println();
                 idpw.increaseIndent();
-                if (checkin) {
-                    mUserState.valueAt(i).checkin(idpw);
-                } else {
-                    mUserState.valueAt(i).dump(idpw, pkg, compact);
-                    idpw.println();
+                if (mUserUnlockedStates.get(userId)) {
+                    if (checkin) {
+                        mUserState.valueAt(i).checkin(idpw);
+                    } else {
+                        mUserState.valueAt(i).dump(idpw, pkg, compact);
+                        idpw.println();
+                    }
                 }
                 mAppStandby.dumpUser(idpw, userId, pkg);
                 idpw.decreaseIndent();
@@ -1201,7 +1244,7 @@
     private int parseUserIdFromArgs(String[] args, int index, IndentingPrintWriter ipw) {
         final int userId;
         try {
-            userId = Integer.valueOf(args[index + 1]);
+            userId = Integer.parseInt(args[index + 1]);
         } catch (NumberFormatException | ArrayIndexOutOfBoundsException e) {
             ipw.println("invalid user specified.");
             return UserHandle.USER_NULL;
@@ -1210,6 +1253,10 @@
             ipw.println("the specified user does not exist.");
             return UserHandle.USER_NULL;
         }
+        if (!mUserUnlockedStates.get(userId)) {
+            ipw.println("the specified user is currently in a locked state.");
+            return UserHandle.USER_NULL;
+        }
         return userId;
     }
 
@@ -1418,14 +1465,20 @@
                 return null;
             }
 
-            final boolean obfuscateInstantApps = shouldObfuscateInstantAppsForCaller(
-                    Binder.getCallingUid(), UserHandle.getCallingUserId());
-
             final int userId = UserHandle.getCallingUserId();
+            final int callingUid = Binder.getCallingUid();
+            final int callingPid = Binder.getCallingPid();
+            final boolean obfuscateInstantApps = shouldObfuscateInstantAppsForCaller(
+                    callingUid, userId);
+
             final long token = Binder.clearCallingIdentity();
             try {
+                final boolean hideShortcutInvocationEvents = shouldHideShortcutInvocationEvents(
+                        userId, callingPackage, callingPid, callingUid);
+                boolean shouldHideLocusIdEvents = shouldHideLocusIdEvents(callingPid, callingUid);
                 return UsageStatsService.this.queryEvents(userId, beginTime, endTime,
-                        obfuscateInstantApps);
+                        obfuscateInstantApps, hideShortcutInvocationEvents,
+                        shouldHideLocusIdEvents);
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
@@ -1456,19 +1509,26 @@
                 return null;
             }
 
-            if (userId != UserHandle.getCallingUserId()) {
+            final int callingUserId = UserHandle.getCallingUserId();
+            if (userId != callingUserId) {
                 getContext().enforceCallingPermission(
                         Manifest.permission.INTERACT_ACROSS_USERS_FULL,
                         "No permission to query usage stats for this user");
             }
 
+            final int callingUid = Binder.getCallingUid();
+            final int callingPid = Binder.getCallingPid();
             final boolean obfuscateInstantApps = shouldObfuscateInstantAppsForCaller(
-                    Binder.getCallingUid(), UserHandle.getCallingUserId());
+                    callingUid, callingUserId);
 
             final long token = Binder.clearCallingIdentity();
             try {
+                final boolean hideShortcutInvocationEvents = shouldHideShortcutInvocationEvents(
+                        userId, callingPackage, callingPid, callingUid);
+                boolean shouldHideLocusIdEvents = shouldHideLocusIdEvents(callingPid, callingUid);
                 return UsageStatsService.this.queryEvents(userId, beginTime, endTime,
-                        obfuscateInstantApps);
+                        obfuscateInstantApps, hideShortcutInvocationEvents,
+                        shouldHideLocusIdEvents);
             } finally {
                 Binder.restoreCallingIdentity(token);
             }
@@ -2085,9 +2145,11 @@
 
         @Override
         public UsageEvents queryEventsForUser(int userId, long beginTime, long endTime,
-                boolean shouldObfuscateInstantApps) {
+                boolean obfuscateInstantApps, boolean shouldHideShortcutInvocationEvents,
+                boolean shouldHideLocusIdEvents) {
             return UsageStatsService.this.queryEvents(
-                    userId, beginTime, endTime, shouldObfuscateInstantApps);
+                    userId, beginTime, endTime, obfuscateInstantApps,
+                    shouldHideShortcutInvocationEvents, shouldHideLocusIdEvents);
         }
 
         @Override
diff --git a/services/usage/java/com/android/server/usage/UserUsageStatsService.java b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
index 179b649..d9317ac 100644
--- a/services/usage/java/com/android/server/usage/UserUsageStatsService.java
+++ b/services/usage/java/com/android/server/usage/UserUsageStatsService.java
@@ -481,8 +481,8 @@
         return queryStats(bucketType, beginTime, endTime, sEventStatsCombiner);
     }
 
-    UsageEvents queryEvents(final long beginTime, final long endTime,
-                            boolean obfuscateInstantApps) {
+    UsageEvents queryEvents(final long beginTime, final long endTime, boolean obfuscateInstantApps,
+            boolean hideShortcutInvocationEvents, boolean hideLocusIdEvents) {
         if (!validRange(checkAndGetTimeLocked(), beginTime, endTime)) {
             return null;
         }
@@ -500,6 +500,14 @@
                             }
 
                             Event event = stats.events.get(i);
+                            if (hideShortcutInvocationEvents
+                                    && event.mEventType == Event.SHORTCUT_INVOCATION) {
+                                continue;
+                            }
+                            if (hideLocusIdEvents
+                                    && event.mEventType == Event.LOCUS_ID_SET) {
+                                continue;
+                            }
                             if (obfuscateInstantApps) {
                                 event = event.getObfuscatedIfInstantApp();
                             }
diff --git a/services/usb/java/com/android/server/usb/UsbHostManager.java b/services/usb/java/com/android/server/usb/UsbHostManager.java
index 9967beb..140a95d 100644
--- a/services/usb/java/com/android/server/usb/UsbHostManager.java
+++ b/services/usb/java/com/android/server/usb/UsbHostManager.java
@@ -34,9 +34,9 @@
 import android.text.TextUtils;
 import android.util.ArrayMap;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.server.usb.descriptors.UsbDescriptor;
@@ -418,10 +418,11 @@
                         parser.getRawDescriptors());
 
                 // Stats collection
-                StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, newDevice.getVendorId(),
-                        newDevice.getProductId(), parser.hasAudioInterface(),
-                        parser.hasHIDInterface(), parser.hasStorageInterface(),
-                        StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_CONNECTED, 0);
+                FrameworkStatsLog.write(FrameworkStatsLog.USB_DEVICE_ATTACHED,
+                        newDevice.getVendorId(), newDevice.getProductId(),
+                        parser.hasAudioInterface(), parser.hasHIDInterface(),
+                        parser.hasStorageInterface(),
+                        FrameworkStatsLog.USB_DEVICE_ATTACHED__STATE__STATE_CONNECTED, 0);
             }
         }
 
@@ -454,10 +455,10 @@
                     UsbDescriptorParser parser = new UsbDescriptorParser(deviceAddress,
                             current.mDescriptors);
                         // Stats collection
-                    StatsLog.write(StatsLog.USB_DEVICE_ATTACHED, device.getVendorId(),
-                            device.getProductId(), parser.hasAudioInterface(),
+                    FrameworkStatsLog.write(FrameworkStatsLog.USB_DEVICE_ATTACHED,
+                            device.getVendorId(), device.getProductId(), parser.hasAudioInterface(),
                             parser.hasHIDInterface(),  parser.hasStorageInterface(),
-                            StatsLog.USB_DEVICE_ATTACHED__STATE__STATE_DISCONNECTED,
+                            FrameworkStatsLog.USB_DEVICE_ATTACHED__STATE__STATE_DISCONNECTED,
                             System.currentTimeMillis() - current.mTimestamp);
                 }
             } else {
diff --git a/services/usb/java/com/android/server/usb/UsbPortManager.java b/services/usb/java/com/android/server/usb/UsbPortManager.java
index c3e2013..1025bf5 100644
--- a/services/usb/java/com/android/server/usb/UsbPortManager.java
+++ b/services/usb/java/com/android/server/usb/UsbPortManager.java
@@ -66,11 +66,11 @@
 import android.util.ArrayMap;
 import android.util.Log;
 import android.util.Slog;
-import android.util.StatsLog;
 
 import com.android.internal.annotations.GuardedBy;
 import com.android.internal.messages.nano.SystemMessageProto.SystemMessage;
 import com.android.internal.notification.SystemNotificationChannels;
+import com.android.internal.util.FrameworkStatsLog;
 import com.android.internal.util.IndentingPrintWriter;
 import com.android.internal.util.dump.DualDumpOutputStream;
 import com.android.server.FgThread;
@@ -1040,8 +1040,9 @@
             if (mConnected.containsKey(portInfo.mUsbPort.getId())) {
                 //Previous logged a connected. Set it to disconnected.
                 if (mConnected.get(portInfo.mUsbPort.getId())) {
-                    StatsLog.write(StatsLog.USB_CONNECTOR_STATE_CHANGED,
-                            StatsLog.USB_CONNECTOR_STATE_CHANGED__STATE__STATE_DISCONNECTED,
+                    FrameworkStatsLog.write(FrameworkStatsLog.USB_CONNECTOR_STATE_CHANGED,
+                            FrameworkStatsLog
+                                    .USB_CONNECTOR_STATE_CHANGED__STATE__STATE_DISCONNECTED,
                             portInfo.mUsbPort.getId(), portInfo.mLastConnectDurationMillis);
                 }
                 mConnected.remove(portInfo.mUsbPort.getId());
@@ -1051,7 +1052,7 @@
                 //Previous logged a contaminant detected. Set it to not detected.
                 if ((mContaminantStatus.get(portInfo.mUsbPort.getId())
                         == UsbPortStatus.CONTAMINANT_DETECTION_DETECTED)) {
-                    StatsLog.write(StatsLog.USB_CONTAMINANT_REPORTED,
+                    FrameworkStatsLog.write(FrameworkStatsLog.USB_CONTAMINANT_REPORTED,
                             portInfo.mUsbPort.getId(),
                             convertContaminantDetectionStatusToProto(
                                     UsbPortStatus.CONTAMINANT_DETECTION_NOT_DETECTED));
@@ -1065,10 +1066,10 @@
                 || (mConnected.get(portInfo.mUsbPort.getId())
                 != portInfo.mUsbPortStatus.isConnected())) {
             mConnected.put(portInfo.mUsbPort.getId(), portInfo.mUsbPortStatus.isConnected());
-            StatsLog.write(StatsLog.USB_CONNECTOR_STATE_CHANGED,
+            FrameworkStatsLog.write(FrameworkStatsLog.USB_CONNECTOR_STATE_CHANGED,
                     portInfo.mUsbPortStatus.isConnected()
-                    ? StatsLog.USB_CONNECTOR_STATE_CHANGED__STATE__STATE_CONNECTED :
-                    StatsLog.USB_CONNECTOR_STATE_CHANGED__STATE__STATE_DISCONNECTED,
+                    ? FrameworkStatsLog.USB_CONNECTOR_STATE_CHANGED__STATE__STATE_CONNECTED :
+                    FrameworkStatsLog.USB_CONNECTOR_STATE_CHANGED__STATE__STATE_DISCONNECTED,
                     portInfo.mUsbPort.getId(), portInfo.mLastConnectDurationMillis);
         }
 
@@ -1077,7 +1078,7 @@
                 != portInfo.mUsbPortStatus.getContaminantDetectionStatus())) {
             mContaminantStatus.put(portInfo.mUsbPort.getId(),
                     portInfo.mUsbPortStatus.getContaminantDetectionStatus());
-            StatsLog.write(StatsLog.USB_CONTAMINANT_REPORTED,
+            FrameworkStatsLog.write(FrameworkStatsLog.USB_CONTAMINANT_REPORTED,
                     portInfo.mUsbPort.getId(),
                     convertContaminantDetectionStatusToProto(
                             portInfo.mUsbPortStatus.getContaminantDetectionStatus()));
diff --git a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
index b230e4b..43d5bf3 100644
--- a/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
+++ b/services/usb/java/com/android/server/usb/descriptors/UsbDescriptorParser.java
@@ -292,9 +292,27 @@
                     // Clean up
                     descriptor.postParse(stream);
                 } catch (Exception ex) {
-                    Log.e(TAG, "Exception parsing USB descriptors.", ex);
+                    // Clean up, compute error status
+                    descriptor.postParse(stream);
 
-                    // Clean up
+                    // Report
+                    Log.w(TAG, "Exception parsing USB descriptors. type:0x" + descriptor.getType()
+                            + " status:" + descriptor.getStatus());
+                    if (DEBUG) {
+                        // Show full stack trace if debugging
+                        Log.e(TAG, "Exception parsing USB descriptors.", ex);
+                    }
+                    StackTraceElement[] stackElems = ex.getStackTrace();
+                    if (stackElems.length > 0) {
+                        Log.i(TAG, "  class:" + stackElems[0].getClassName()
+                                    + " @ " + stackElems[0].getLineNumber());
+                    }
+                    if (stackElems.length > 1) {
+                        Log.i(TAG, "  class:" + stackElems[1].getClassName()
+                                + " @ " + stackElems[1].getLineNumber());
+                    }
+
+                    // Finish up
                     descriptor.setStatus(UsbDescriptor.STATUS_PARSE_EXCEPTION);
                 } finally {
                     mDescriptors.add(descriptor);
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
index d5eec33..8378d8e 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerService.java
@@ -747,7 +747,8 @@
         }
 
         @Override
-        public int startVoiceActivity(IBinder token, Intent intent, String resolvedType) {
+        public int startVoiceActivity(IBinder token, Intent intent, String resolvedType,
+                String callingFeatureId) {
             synchronized (this) {
                 if (mImpl == null) {
                     Slog.w(TAG, "startVoiceActivity without running voice interaction service");
@@ -757,8 +758,8 @@
                 final int callingUid = Binder.getCallingUid();
                 final long caller = Binder.clearCallingIdentity();
                 try {
-                    return mImpl.startVoiceActivityLocked(callingPid, callingUid, token,
-                            intent, resolvedType);
+                    return mImpl.startVoiceActivityLocked(callingFeatureId, callingPid, callingUid,
+                            token, intent, resolvedType);
                 } finally {
                     Binder.restoreCallingIdentity(caller);
                 }
@@ -766,7 +767,8 @@
         }
 
         @Override
-        public int startAssistantActivity(IBinder token, Intent intent, String resolvedType) {
+        public int startAssistantActivity(IBinder token, Intent intent, String resolvedType,
+                String callingFeatureId) {
             synchronized (this) {
                 if (mImpl == null) {
                     Slog.w(TAG, "startAssistantActivity without running voice interaction service");
@@ -776,8 +778,8 @@
                 final int callingUid = Binder.getCallingUid();
                 final long caller = Binder.clearCallingIdentity();
                 try {
-                    return mImpl.startAssistantActivityLocked(callingPid, callingUid, token,
-                            intent, resolvedType);
+                    return mImpl.startAssistantActivityLocked(callingFeatureId, callingPid,
+                            callingUid, token, intent, resolvedType);
                 } finally {
                     Binder.restoreCallingIdentity(caller);
                 }
diff --git a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
index a1210cf..a62b03c 100644
--- a/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
+++ b/services/voiceinteraction/java/com/android/server/voiceinteraction/VoiceInteractionManagerServiceImpl.java
@@ -216,8 +216,8 @@
         return true;
     }
 
-    public int startVoiceActivityLocked(int callingPid, int callingUid, IBinder token,
-            Intent intent, String resolvedType) {
+    public int startVoiceActivityLocked(@Nullable String callingFeatureId, int callingPid,
+            int callingUid, IBinder token, Intent intent, String resolvedType) {
         try {
             if (mActiveSession == null || token != mActiveSession.mToken) {
                 Slog.w(TAG, "startVoiceActivity does not match active session");
@@ -230,16 +230,16 @@
             intent = new Intent(intent);
             intent.addCategory(Intent.CATEGORY_VOICE);
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
-            return mAtm.startVoiceActivity(mComponent.getPackageName(), callingPid, callingUid,
-                    intent, resolvedType, mActiveSession.mSession, mActiveSession.mInteractor,
-                    0, null, null, mUser);
+            return mAtm.startVoiceActivity(mComponent.getPackageName(), callingFeatureId,
+                    callingPid, callingUid, intent, resolvedType, mActiveSession.mSession,
+                    mActiveSession.mInteractor, 0, null, null, mUser);
         } catch (RemoteException e) {
             throw new IllegalStateException("Unexpected remote error", e);
         }
     }
 
-    public int startAssistantActivityLocked(int callingPid, int callingUid, IBinder token,
-            Intent intent, String resolvedType) {
+    public int startAssistantActivityLocked(@Nullable String callingFeatureId, int callingPid,
+            int callingUid, IBinder token, Intent intent, String resolvedType) {
         try {
             if (mActiveSession == null || token != mActiveSession.mToken) {
                 Slog.w(TAG, "startAssistantActivity does not match active session");
@@ -253,8 +253,8 @@
             intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
             final ActivityOptions options = ActivityOptions.makeBasic();
             options.setLaunchActivityType(ACTIVITY_TYPE_ASSISTANT);
-            return mAtm.startAssistantActivity(mComponent.getPackageName(), callingPid, callingUid,
-                    intent, resolvedType, options.toBundle(), mUser);
+            return mAtm.startAssistantActivity(mComponent.getPackageName(), callingFeatureId,
+                    callingPid, callingUid, intent, resolvedType, options.toBundle(), mUser);
         } catch (RemoteException e) {
             throw new IllegalStateException("Unexpected remote error", e);
         }
diff --git a/startop/iorap/functional_tests/Android.bp b/startop/iorap/functional_tests/Android.bp
new file mode 100644
index 0000000..ce9dc32
--- /dev/null
+++ b/startop/iorap/functional_tests/Android.bp
@@ -0,0 +1,41 @@
+// 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.
+
+android_test {
+    name: "iorap-functional-tests",
+    srcs: ["src/**/*.java"],
+    static_libs: [
+        // Non-test dependencies
+        // library under test
+        "services.startop.iorap",
+        // Test Dependencies
+        // test android dependencies
+        "platform-test-annotations",
+        "androidx.test.rules",
+        "androidx.test.ext.junit",
+        "androidx.test.uiautomator_uiautomator",
+        // test framework dependencies
+        "truth-prebuilt",
+    ],
+    dxflags: ["--multi-dex"],
+    test_suites: ["device-tests"],
+    compile_multilib: "both",
+    libs: [
+        "android.test.base",
+        "android.test.runner",
+    ],
+    certificate: "platform",
+    platform_apis: true,
+}
+
diff --git a/startop/iorap/functional_tests/AndroidManifest.xml b/startop/iorap/functional_tests/AndroidManifest.xml
new file mode 100644
index 0000000..6bddc4a3
--- /dev/null
+++ b/startop/iorap/functional_tests/AndroidManifest.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<!--suppress AndroidUnknownAttribute -->
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+    package="com.google.android.startop.iorap.tests"
+    android:sharedUserId="com.google.android.startop.iorap.tests.functional"
+    android:versionCode="1"
+    android:versionName="1.0" >
+
+    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+    <!--suppress AndroidDomInspection -->
+    <instrumentation
+        android:name="androidx.test.runner.AndroidJUnitRunner"
+        android:targetPackage="com.google.android.startop.iorap.tests" />
+
+      <!--
+       'debuggable=true' is required to properly load mockito jvmti dependencies,
+         otherwise it gives the following error at runtime:
+
+       Openjdkjvmti plugin was loaded on a non-debuggable Runtime.
+       Plugin was loaded too late to change runtime state to DEBUGGABLE. -->
+    <application android:debuggable="true">
+        <uses-library android:name="android.test.runner" />
+    </application>
+</manifest>
diff --git a/startop/iorap/functional_tests/AndroidTest.xml b/startop/iorap/functional_tests/AndroidTest.xml
new file mode 100644
index 0000000..41109b4
--- /dev/null
+++ b/startop/iorap/functional_tests/AndroidTest.xml
@@ -0,0 +1,53 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+
+<configuration description="Runs iorap-functional-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="iorap-functional-tests.apk" />
+    </target_preparer>
+
+    <target_preparer class="com.android.tradefed.targetprep.RootTargetPreparer"/>
+
+    <target_preparer
+        class="com.android.tradefed.targetprep.DeviceSetup">
+
+        <!-- iorapd does not pick up the above changes until we restart it -->
+        <option name="run-command" value="stop iorapd" />
+
+        <!-- Clean up the existing iorap database. -->
+        <option name="run-command" value="rm -r /data/misc/iorapd/*" />
+        <option name="run-command" value="sleep 1" />
+
+        <option name="run-command" value="start iorapd" />
+
+        <!-- give it some time to restart the service; otherwise the first unit test might fail -->
+        <option name="run-command" value="sleep 1" />
+    </target_preparer>
+
+    <test class="com.android.tradefed.testtype.AndroidJUnitTest" >
+        <option name="package" value="com.google.android.startop.iorap.tests" />
+        <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
+    </test>
+
+    <!-- using DeviceSetup again does not work. we simply leave the device in a semi-bad
+         state. there is no way to clean this up as far as I know.
+         -->
+
+</configuration>
+
diff --git a/startop/iorap/functional_tests/src/com/google/android/startop/iorap/IorapWorkFlowTest.java b/startop/iorap/functional_tests/src/com/google/android/startop/iorap/IorapWorkFlowTest.java
new file mode 100644
index 0000000..bd8a45c
--- /dev/null
+++ b/startop/iorap/functional_tests/src/com/google/android/startop/iorap/IorapWorkFlowTest.java
@@ -0,0 +1,377 @@
+/*
+ * 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.google.android.startop.iorapd;
+
+import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
+import static androidx.test.platform.app.InstrumentationRegistry.getInstrumentation;
+
+import static org.hamcrest.CoreMatchers.notNullValue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertThat;
+import static org.junit.Assert.assertTrue;
+
+import android.content.Context;
+import android.content.Intent;
+import android.database.Cursor;
+import android.database.DatabaseUtils;
+import android.database.sqlite.SQLiteDatabase;
+import android.util.Log;
+
+import androidx.test.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.uiautomator.By;
+import androidx.test.uiautomator.UiDevice;
+import androidx.test.uiautomator.Until;
+
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.io.File;
+import java.time.Duration;
+import java.util.ArrayList;
+import java.util.concurrent.TimeUnit;
+import java.util.function.BooleanSupplier;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.List;
+
+
+/**
+ * Test for the work flow of iorap.
+ *
+ * <p> This test tests the function of iorap from perfetto collection -> compilation ->
+ * prefetching.
+ * </p>
+ */
+@RunWith(AndroidJUnit4.class)
+public class IorapWorkFlowTest {
+
+  private static final String TAG = "IorapWorkFlowTest";
+
+  private static final String TEST_PACKAGE_NAME = "com.android.settings";
+  private static final String TEST_ACTIVITY_NAME = "com.android.settings.Settings";
+
+  private static final String DB_PATH = "/data/misc/iorapd/sqlite.db";
+  private static final Duration TIMEOUT = Duration.ofSeconds(20L);
+
+  private static final String READAHEAD_INDICATOR =
+      "Description = /data/misc/iorapd/com.android.settings/none/com.android.settings.Settings/compiled_traces/compiled_trace.pb";
+
+  private UiDevice mDevice;
+
+  @Before
+  public void startMainActivityFromHomeScreen() throws Exception {
+    // Initialize UiDevice instance
+    mDevice = UiDevice.getInstance(getInstrumentation());
+
+    // Start from the home screen
+    mDevice.pressHome();
+
+    // Wait for launcher
+    final String launcherPackage = mDevice.getLauncherPackageName();
+    assertThat(launcherPackage, notNullValue());
+    mDevice.wait(Until.hasObject(By.pkg(launcherPackage).depth(0)), TIMEOUT.getSeconds());
+  }
+
+  @Test
+  public void testApp() throws Exception {
+    assertThat(mDevice, notNullValue());
+
+    // Perfetto trace collection phase.
+    assertTrue(startAppForPerfettoTrace(/*expectPerfettoTraceCount=*/1));
+    assertTrue(startAppForPerfettoTrace(/*expectPerfettoTraceCount=*/2));
+    assertTrue(startAppForPerfettoTrace(/*expectPerfettoTraceCount=*/3));
+    assertTrue(checkPerfettoTracesExistence(TIMEOUT, 3));
+
+    // Trigger maintenance service for compilation.
+    assertTrue(compile(TIMEOUT));
+
+    // Check if prefetching works.
+    assertTrue(waitForPrefetchingFromLogcat(/*expectPerfettoTraceCount=*/3));
+  }
+
+  /**
+   * Starts the testing app to collect the perfetto trace.
+   *
+   * @param expectPerfettoTraceCount is the expected count of perfetto traces.
+   */
+  private boolean startAppForPerfettoTrace(long expectPerfettoTraceCount)
+      throws Exception {
+    // Close the specified app if it's open
+    closeApp();
+    // Launch the specified app
+    startApp();
+    // Wait for the app to appear
+    mDevice.wait(Until.hasObject(By.pkg(TEST_PACKAGE_NAME).depth(0)), TIMEOUT.getSeconds());
+
+    String sql = "SELECT COUNT(*) FROM activities "
+        + "JOIN app_launch_histories ON activities.id = app_launch_histories.activity_id "
+        + "JOIN raw_traces ON raw_traces.history_id = app_launch_histories.id "
+        + "WHERE activities.name = ?";
+    return checkAndWaitEntriesNum(sql, new String[]{TEST_ACTIVITY_NAME}, expectPerfettoTraceCount,
+        TIMEOUT);
+  }
+
+  // Invokes the maintenance to compile the perfetto traces to compiled trace.
+  private boolean compile(Duration timeout) throws Exception {
+    // The job id (283673059) is defined in class IorapForwardingService.
+    executeShellCommand("cmd jobscheduler run -f android 283673059");
+
+    // Wait for the compilation.
+    String sql = "SELECT COUNT(*) FROM activities JOIN prefetch_files ON "
+        + "activities.id = prefetch_files.activity_id "
+        + "WHERE activities.name = ?";
+    boolean result = checkAndWaitEntriesNum(sql, new String[]{TEST_ACTIVITY_NAME}, /*count=*/1,
+        timeout);
+    if (!result) {
+      return false;
+    }
+
+    return retryWithTimeout(timeout, () -> {
+      try {
+        String compiledTrace = getCompiledTraceFilePath();
+        File compiledTraceLocal = copyFileToLocal(compiledTrace, "compiled_trace.tmp");
+        return compiledTraceLocal.exists();
+      } catch (Exception e) {
+        Log.i(TAG, e.getMessage());
+        return false;
+      }
+    });
+  }
+
+  /**
+   * Check if all the perfetto traces in the db exist.
+   */
+  private boolean checkPerfettoTracesExistence(Duration timeout, int expectPerfettoTraceCount)
+      throws Exception {
+    return retryWithTimeout(timeout, () -> {
+      try {
+        File dbFile = getIorapDb();
+        List<String> traces = getPerfettoTracePaths(dbFile);
+        assertEquals(traces.size(), expectPerfettoTraceCount);
+
+        int count = 0;
+        for (String trace : traces) {
+          File tmp = copyFileToLocal(trace, "perfetto_trace.tmp" + count);
+          ++count;
+          Log.i(TAG, "Check perfetto trace: " + trace);
+          if (!tmp.exists()) {
+            Log.i(TAG, "Perfetto trace does not exist: " + trace);
+            return false;
+          }
+        }
+        return true;
+      } catch (Exception e) {
+        Log.i(TAG, e.getMessage());
+        return false;
+      }
+    });
+  }
+
+  /**
+   * Gets the perfetto traces file path from the db.
+   */
+  private List<String> getPerfettoTracePaths(File dbFile) throws Exception {
+    String sql = "SELECT raw_traces.file_path FROM activities "
+        + "JOIN app_launch_histories ON activities.id = app_launch_histories.activity_id "
+        + "JOIN raw_traces ON raw_traces.history_id = app_launch_histories.id "
+        + "WHERE activities.name = ?";
+
+    List<String> perfettoTraces = new ArrayList<>();
+    try (SQLiteDatabase db = SQLiteDatabase
+        .openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READONLY)) {
+      Cursor cursor = db.rawQuery(sql, new String[]{TEST_ACTIVITY_NAME});
+      while (cursor.moveToNext()) {
+        perfettoTraces.add(cursor.getString(0));
+      }
+    }
+    return perfettoTraces;
+  }
+
+  private String getCompiledTraceFilePath() throws Exception {
+    File dbFile = getIorapDb();
+    try (SQLiteDatabase db = SQLiteDatabase
+        .openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READONLY)) {
+      String sql = "SELECT prefetch_files.file_path FROM activities JOIN prefetch_files ON "
+              + "activities.id = prefetch_files.activity_id "
+              + "WHERE activities.name = ?";
+      return DatabaseUtils.stringForQuery(db, sql, new String[]{TEST_ACTIVITY_NAME});
+    }
+  }
+
+  /**
+   * Checks the number of entries in the database table.
+   *
+   * <p> Keep checking until the timeout.
+   */
+  private boolean checkAndWaitEntriesNum(String sql, String[] selectionArgs, long count,
+      Duration timeout)
+      throws Exception {
+    return retryWithTimeout(timeout, () -> {
+      try {
+        File db = getIorapDb();
+        long curCount = getEntriesNum(db, selectionArgs, sql);
+        Log.i(TAG, String
+            .format("For %s, current count is %d, expected count is :%d.", sql, curCount,
+                count));
+        return curCount == count;
+      } catch (Exception e) {
+        Log.i(TAG, e.getMessage());
+        return false;
+      }
+    });
+  }
+
+  /**
+   * Retry until timeout.
+   */
+  private boolean retryWithTimeout(Duration timeout, BooleanSupplier supplier) throws Exception {
+    long totalSleepTimeSeconds = 0L;
+    long sleepIntervalSeconds = 2L;
+    while (true) {
+      if (supplier.getAsBoolean()) {
+        return true;
+      }
+      TimeUnit.SECONDS.sleep(totalSleepTimeSeconds);
+      totalSleepTimeSeconds += sleepIntervalSeconds;
+      if (totalSleepTimeSeconds > timeout.getSeconds()) {
+        return false;
+      }
+    }
+  }
+
+  /**
+   * Gets the number of entries in the query of sql.
+   */
+  private long getEntriesNum(File dbFile, String[] selectionArgs, String sql) throws Exception {
+    try (SQLiteDatabase db = SQLiteDatabase
+        .openDatabase(dbFile.getPath(), null, SQLiteDatabase.OPEN_READONLY)) {
+      return DatabaseUtils.longForQuery(db, sql, selectionArgs);
+    }
+  }
+
+  /**
+   * Gets the iorapd sqlite db file.
+   *
+   * <p> The test cannot access the db file directly under "/data/misc/iorapd".
+   * Copy it to the local directory and change the mode.
+   */
+  private File getIorapDb() throws Exception {
+    File tmpDb = copyFileToLocal("/data/misc/iorapd/sqlite.db", "tmp.db");
+    // Change the mode of the file to allow the access from test.
+    executeShellCommand("chmod 777 " + tmpDb.getPath());
+    return tmpDb;
+  }
+
+  /**
+   * Copys a file to local directory.
+   */
+  private File copyFileToLocal(String src, String tgtFileName) throws Exception {
+    File localDir = getApplicationContext().getDir(this.getClass().getName(), Context.MODE_PRIVATE);
+    File localFile = new File(localDir, tgtFileName);
+    executeShellCommand(String.format("cp %s %s", src, localFile.getPath()));
+    return localFile;
+  }
+
+  /**
+   * Starts the testing app.
+   */
+  private void startApp() throws Exception {
+    Context context = getApplicationContext();
+    final Intent intent = context.getPackageManager()
+        .getLaunchIntentForPackage(TEST_PACKAGE_NAME);
+    context.startActivity(intent);
+    Log.i(TAG, "Started app " + TEST_PACKAGE_NAME);
+  }
+
+  /**
+   * Closes the testing app.
+   * <p> Keep trying to kill the process of the app until no process of the app package
+   * appears.</p>
+   */
+  private void closeApp() throws Exception {
+    while (true) {
+      String pid = executeShellCommand("pidof " + TEST_PACKAGE_NAME);
+      if (pid.isEmpty()) {
+        Log.i(TAG, "Closed app " + TEST_PACKAGE_NAME);
+        return;
+      }
+      executeShellCommand("kill -9 " + pid);
+      TimeUnit.SECONDS.sleep(1L);
+    }
+  }
+
+  /**
+   * Waits for the prefetching log in the logcat.
+   *
+   * <p> When prefetching works, the perfetto traces should not be collected. </p>
+   */
+  private boolean waitForPrefetchingFromLogcat(long expectPerfettoTraceCount) throws Exception {
+    if (!startAppForPerfettoTrace(expectPerfettoTraceCount)) {
+      return false;
+    }
+
+    String log = executeShellCommand("logcat -s iorapd -d");
+
+    Pattern p = Pattern.compile(
+        ".*" + READAHEAD_INDICATOR
+            + ".*Total File Paths=(\\d+) \\(good: (\\d+)%\\)\n"
+            + ".*Total Entries=(\\d+) \\(good: (\\d+)%\\)\n"
+            + ".*Total Bytes=(\\d+) \\(good: (\\d+)%\\).*",
+        Pattern.DOTALL);
+    Matcher m = p.matcher(log);
+
+    if (!m.matches()) {
+      Log.i(TAG, "Cannot find readahead log.");
+      return false;
+    }
+
+    int totalFilePath = Integer.parseInt(m.group(1));
+    float totalFilePathGoodRate = Float.parseFloat(m.group(2)) / 100;
+    int totalEntries = Integer.parseInt(m.group(3));
+    float totalEntriesGoodRate = Float.parseFloat(m.group(4)) / 100;
+    int totalBytes = Integer.parseInt(m.group(5));
+    float totalBytesGoodRate = Float.parseFloat(m.group(6)) / 100;
+
+    Log.i(TAG, String.format(
+        "totalFilePath: %d (good %.2f) totalEntries: %d (good %.2f) totalBytes: %d (good %.2f)",
+        totalFilePath, totalFilePathGoodRate, totalEntries, totalEntriesGoodRate, totalBytes,
+        totalBytesGoodRate));
+
+    return totalFilePath > 0 &&
+        totalEntries > 0 &&
+        totalBytes > 100000 &&
+        totalFilePathGoodRate > 0.5 &&
+        totalEntriesGoodRate > 0.5 &&
+        totalBytesGoodRate > 0.5;
+  }
+
+
+  /**
+   * Executes command in adb shell.
+   *
+   * <p> This should be run as root.</p>
+   */
+  private String executeShellCommand(String cmd) throws Exception {
+    Log.i(TAG, "Execute: " + cmd);
+    return UiDevice.getInstance(
+        InstrumentationRegistry.getInstrumentation()).executeShellCommand(cmd);
+  }
+}
+
+
diff --git a/startop/iorap/stress/Android.bp b/startop/iorap/stress/Android.bp
new file mode 100644
index 0000000..f9f251bd
--- /dev/null
+++ b/startop/iorap/stress/Android.bp
@@ -0,0 +1,33 @@
+//
+// 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.
+//
+
+cc_binary {
+  name: "iorap.stress.memory",
+  srcs: ["main_memory.cc"],
+
+  cflags: [
+      "-Wall",
+      "-Wextra",
+      "-Werror",
+      "-Wno-unused-parameter"
+  ],
+
+  shared_libs: [
+      "libbase"
+  ],
+
+  host_supported: true,
+}
diff --git a/startop/iorap/stress/main_memory.cc b/startop/iorap/stress/main_memory.cc
new file mode 100644
index 0000000..1f26861
--- /dev/null
+++ b/startop/iorap/stress/main_memory.cc
@@ -0,0 +1,126 @@
+//
+// 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.
+//
+
+#include <chrono>
+#include <fstream>
+#include <iostream>
+#include <random>
+#include <string>
+
+#include <string.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+
+#include <android-base/parseint.h>
+
+static constexpr size_t kBytesPerMb = 1048576;
+const size_t kMemoryAllocationSize = 2 * 1024 * kBytesPerMb;
+
+#define USE_MLOCKALL 0
+
+std::string GetProcessStatus(const char* key) {
+  // Build search pattern of key and separator.
+  std::string pattern(key);
+  pattern.push_back(':');
+
+  // Search for status lines starting with pattern.
+  std::ifstream fs("/proc/self/status");
+  std::string line;
+  while (std::getline(fs, line)) {
+    if (strncmp(pattern.c_str(), line.c_str(), pattern.size()) == 0) {
+      // Skip whitespace in matching line (if any).
+      size_t pos = line.find_first_not_of(" \t", pattern.size());
+      if (pos == std::string::npos) {
+        break;
+      }
+      return std::string(line, pos);
+    }
+  }
+  return "<unknown>";
+}
+
+int main(int argc, char** argv) {
+  size_t allocationSize = 0;
+  if (argc >= 2) {
+    if (!android::base::ParseUint(argv[1], /*out*/&allocationSize)) {
+      std::cerr << "Failed to parse the allocation size (must be 0,MAX_SIZE_T)" << std::endl;
+      return 1;
+    }
+  } else {
+    allocationSize = kMemoryAllocationSize;
+  }
+
+  void* mem = malloc(allocationSize);
+  if (mem == nullptr) {
+    std::cerr << "Malloc failed" << std::endl;
+    return 1;
+  }
+
+  volatile int* imem = static_cast<int *>(mem);  // don't optimize out memory usage
+
+  size_t imemCount = allocationSize / sizeof(int);
+
+  std::cout << "Allocated " << allocationSize << " bytes" << std::endl;
+
+  auto seed = std::chrono::high_resolution_clock::now().time_since_epoch().count();
+  std::mt19937 mt_rand(seed);
+
+  size_t randPrintCount = 10;
+
+  // Write random numbers:
+  // * Ensures each page is resident
+  // * Avoids zeroed out pages (zRAM)
+  // * Avoids same-page merging
+  for (size_t i = 0; i < imemCount; ++i) {
+    imem[i] = mt_rand();
+
+    if (i < randPrintCount) {
+      std::cout << "Generated random value: " << imem[i] << std::endl;
+    }
+  }
+
+#if USE_MLOCKALL
+  /*
+   * Lock all pages from the address space of this process.
+   */
+  if (mlockall(MCL_CURRENT | MCL_FUTURE) != 0) {
+    std::cerr << "Mlockall failed" << std::endl;
+    return 1;
+  }
+#else
+  // Use mlock because of the predictable VmLck size.
+  // Using mlockall tends to bring in anywhere from 2-2.5GB depending on the device.
+  if (mlock(mem, allocationSize) != 0) {
+    std::cerr << "Mlock failed" << std::endl;
+    return 1;
+  }
+#endif
+
+  // Validate memory is actually resident and locked with:
+  // $> cat /proc/$(pidof iorap.stress.memory)/status | grep VmLck
+  std::cout << "Locked memory (VmLck) = " << GetProcessStatus("VmLck") << std::endl;
+
+  std::cout << "Press any key to terminate" << std::endl;
+  int any_input;
+  std::cin >> any_input;
+
+  std::cout << "Terminating..." << std::endl;
+
+  munlockall();
+  free(mem);
+
+  return 0;
+}
diff --git a/startop/iorap/tests/src/com/google/android/startop/iorap/IIorapIntegrationTest.kt b/startop/iorap/tests/src/com/google/android/startop/iorap/IIorapIntegrationTest.kt
index 460add8..18c2491 100644
--- a/startop/iorap/tests/src/com/google/android/startop/iorap/IIorapIntegrationTest.kt
+++ b/startop/iorap/tests/src/com/google/android/startop/iorap/IIorapIntegrationTest.kt
@@ -16,6 +16,7 @@
 
 import android.net.Uri
 import android.os.ServiceManager
+import androidx.test.filters.FlakyTest
 import androidx.test.filters.MediumTest
 import org.junit.Test
 import org.mockito.Mockito.argThat
@@ -26,6 +27,7 @@
 
 // @Ignore("Test is disabled until iorapd is added to init and there's selinux policies for it")
 @MediumTest
+@FlakyTest(bugId = 149098310) // Failing on cuttlefish with SecurityException.
 class IIorapIntegrationTest {
     /**
      * @throws ServiceManager.ServiceNotFoundException if iorapd service could not be found
@@ -55,6 +57,9 @@
     private fun testAnyMethod(func: (RequestId) -> Unit) {
         val taskListener = spy(DummyTaskListener())!!
 
+        // FIXME: b/149098310
+        return
+
         try {
             iorapService.setTaskListener(taskListener)
             // Note: Binder guarantees total order for oneway messages sent to the same binder
diff --git a/startop/view_compiler/dex_layout_compiler.cc b/startop/view_compiler/dex_layout_compiler.cc
index cb820f8..bddb8aa 100644
--- a/startop/view_compiler/dex_layout_compiler.cc
+++ b/startop/view_compiler/dex_layout_compiler.cc
@@ -118,7 +118,7 @@
 std::string ResolveName(const std::string& name) {
   if (name == "View") return "android.view.View";
   if (name == "ViewGroup") return "android.view.ViewGroup";
-  if (name.find(".") == std::string::npos) {
+  if (name.find('.') == std::string::npos) {
     return StringPrintf("android.widget.%s", name.c_str());
   }
   return name;
@@ -205,4 +205,4 @@
   view_stack_.pop_back();
 }
 
-}  // namespace startop
\ No newline at end of file
+}  // namespace startop
diff --git a/startop/view_compiler/util.cc b/startop/view_compiler/util.cc
index a0637e6..c34d7b0 100644
--- a/startop/view_compiler/util.cc
+++ b/startop/view_compiler/util.cc
@@ -23,13 +23,13 @@
 
 // TODO: see if we can borrow this from somewhere else, like aapt2.
 string FindLayoutNameFromFilename(const string& filename) {
-  size_t start = filename.rfind("/");
+  size_t start = filename.rfind('/');
   if (start == string::npos) {
     start = 0;
   } else {
     start++;  // advance past '/' character
   }
-  size_t end = filename.find(".", start);
+  size_t end = filename.find('.', start);
 
   return filename.substr(start, end - start);
 }
diff --git a/telecomm/java/android/telecom/Call.java b/telecomm/java/android/telecom/Call.java
index f54f8d1..52213d8 100644
--- a/telecomm/java/android/telecom/Call.java
+++ b/telecomm/java/android/telecom/Call.java
@@ -17,6 +17,7 @@
 package android.telecom;
 
 import android.annotation.IntDef;
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
@@ -458,8 +459,14 @@
         /** Call supports the deflect feature. */
         public static final int CAPABILITY_SUPPORT_DEFLECT = 0x01000000;
 
+        /**
+         * Call supports adding participants to the call via
+         * {@link #addConferenceParticipants(List)}.
+         * @hide
+         */
+        public static final int CAPABILITY_ADD_PARTICIPANT = 0x02000000;
         //******************************************************************************************
-        // Next CAPABILITY value: 0x02000000
+        // Next CAPABILITY value: 0x04000000
         //******************************************************************************************
 
         /**
@@ -539,7 +546,7 @@
          *
          * @see TelecomManager#EXTRA_USE_ASSISTED_DIALING
          */
-        public static final int PROPERTY_ASSISTED_DIALING_USED = 0x00000200;
+        public static final int PROPERTY_ASSISTED_DIALING = 0x00000200;
 
         /**
          * Indicates that the call is an RTT call. Use {@link #getRttCall()} to get the
@@ -573,6 +580,7 @@
         /**
          * Indicates that the call is an adhoc conference call. This property can be set for both
          * incoming and outgoing calls.
+         * @hide
          */
         public static final int PROPERTY_IS_ADHOC_CONFERENCE = 0x00002000;
 
@@ -688,6 +696,9 @@
             if (can(capabilities, CAPABILITY_SUPPORT_DEFLECT)) {
                 builder.append(" CAPABILITY_SUPPORT_DEFLECT");
             }
+            if (can(capabilities, CAPABILITY_ADD_PARTICIPANT)) {
+                builder.append(" CAPABILITY_ADD_PARTICIPANT");
+            }
             builder.append("]");
             return builder.toString();
         }
@@ -743,7 +754,7 @@
             if (hasProperty(properties, PROPERTY_HAS_CDMA_VOICE_PRIVACY)) {
                 builder.append(" PROPERTY_HAS_CDMA_VOICE_PRIVACY");
             }
-            if (hasProperty(properties, PROPERTY_ASSISTED_DIALING_USED)) {
+            if (hasProperty(properties, PROPERTY_ASSISTED_DIALING)) {
                 builder.append(" PROPERTY_ASSISTED_DIALING_USED");
             }
             if (hasProperty(properties, PROPERTY_NETWORK_IDENTIFIED_EMERGENCY_CALL)) {
@@ -1702,6 +1713,17 @@
     }
 
     /**
+     * Pulls participants to existing call by forming a conference call.
+     * See {@link Details#CAPABILITY_ADD_PARTICIPANT}.
+     *
+     * @param participants participants to be pulled to existing call.
+     * @hide
+     */
+    public void addConferenceParticipants(@NonNull List<Uri> participants) {
+        mInCallAdapter.addConferenceParticipants(mTelecomCallId, participants);
+    }
+
+    /**
      * Initiates a request to the {@link ConnectionService} to pull an external call to the local
      * device.
      * <p>
diff --git a/telecomm/java/android/telecom/Conference.java b/telecomm/java/android/telecom/Conference.java
index 6b0845f..f019a9d 100644
--- a/telecomm/java/android/telecom/Conference.java
+++ b/telecomm/java/android/telecom/Conference.java
@@ -16,8 +16,13 @@
 
 package android.telecom;
 
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
+
+import android.annotation.ElapsedRealtimeLong;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.net.Uri;
@@ -174,6 +179,7 @@
     /**
      * Returns whether this conference is requesting that the system play a ringback tone
      * on its behalf.
+     * @hide
      */
     public final boolean isRingbackRequested() {
         return mRingbackRequested;
@@ -318,12 +324,20 @@
     public void onConnectionAdded(Connection connection) {}
 
     /**
+     * Notifies the {@link Conference} of a request to add a new participants to the conference call
+     * @param participants that will be added to this conference call
+     * @hide
+     */
+    public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}
+
+    /**
      * Notifies this Conference, which is in {@code STATE_RINGING}, of
      * a request to accept.
      * For managed {@link ConnectionService}s, this will be called when the user answers a call via
      * the default dialer's {@link InCallService}.
      *
      * @param videoState The video state in which to answer the connection.
+     * @hide
      */
     public void onAnswer(int videoState) {}
 
@@ -343,6 +357,7 @@
      * a request to reject.
      * For managed {@link ConnectionService}s, this will be called when the user rejects a call via
      * the default dialer's {@link InCallService}.
+     * @hide
      */
     public void onReject() {}
 
@@ -362,6 +377,7 @@
 
     /**
      * Sets state to be ringing.
+     * @hide
      */
     public final void setRinging() {
         setState(Connection.STATE_RINGING);
@@ -487,6 +503,7 @@
      * that do not play a ringback tone themselves in the conference's audio stream.
      *
      * @param ringback Whether the ringback tone is to be played.
+     * @hide
      */
     public final void setRingbackRequested(boolean ringback) {
         if (mRingbackRequested != ringback) {
@@ -620,12 +637,12 @@
      * Should be specified in wall-clock time returned by {@link System#currentTimeMillis()}.
      * <p>
      * When setting the connection time, you should always set the connection elapsed time via
-     * {@link #setConnectionStartElapsedRealTime(long)} to ensure the duration is reflected.
+     * {@link #setConnectionStartElapsedRealtimeMillis(long)} to ensure the duration is reflected.
      *
      * @param connectionTimeMillis The connection time, in milliseconds, as returned by
      *                             {@link System#currentTimeMillis()}.
      */
-    public final void setConnectionTime(long connectionTimeMillis) {
+    public final void setConnectionTime(@IntRange(from = 0) long connectionTimeMillis) {
         mConnectTimeMillis = connectionTimeMillis;
     }
 
@@ -641,8 +658,28 @@
      *
      * @param connectionStartElapsedRealTime The connection time, as measured by
      * {@link SystemClock#elapsedRealtime()}.
+     * @deprecated use {@link #setConnectionStartElapsedRealtimeMillis(long)} instead.
      */
+    @Deprecated
     public final void setConnectionStartElapsedRealTime(long connectionStartElapsedRealTime) {
+        setConnectionStartElapsedRealtimeMillis(connectionStartElapsedRealTime);
+    }
+
+    /**
+     * Sets the start time of the {@link Conference} which is the basis for the determining the
+     * duration of the {@link Conference}.
+     * <p>
+     * You should use a value returned by {@link SystemClock#elapsedRealtime()} to ensure that time
+     * zone changes do not impact the conference duration.
+     * <p>
+     * When setting this, you should also set the connection time via
+     * {@link #setConnectionTime(long)}.
+     *
+     * @param connectionStartElapsedRealTime The connection time, as measured by
+     * {@link SystemClock#elapsedRealtime()}.
+     */
+    public final void setConnectionStartElapsedRealtimeMillis(
+            @ElapsedRealtimeLong long connectionStartElapsedRealTime) {
         mConnectionStartElapsedRealTime = connectionStartElapsedRealTime;
     }
 
@@ -663,7 +700,7 @@
      *
      * @return The time at which the {@code Conference} was connected.
      */
-    public final long getConnectionTime() {
+    public final @IntRange(from = 0) long getConnectionTime() {
         return mConnectTimeMillis;
     }
 
@@ -680,11 +717,8 @@
      * has no general use other than to the Telephony framework.
      *
      * @return The elapsed time at which the {@link Conference} was connected.
-     * @hide
      */
-    @SystemApi
-    @TestApi
-    public final long getConnectionStartElapsedRealTime() {
+    public final @ElapsedRealtimeLong long getConnectionStartElapsedRealtimeMillis() {
         return mConnectionStartElapsedRealTime;
     }
 
@@ -736,6 +770,7 @@
      *
      * @param disconnectCause The disconnect cause, ({@see android.telecomm.DisconnectCause}).
      * @return A {@code Conference} which indicates failure.
+     * @hide
      */
     public @NonNull static Conference createFailedConference(
             @NonNull DisconnectCause disconnectCause, @NonNull PhoneAccountHandle phoneAccount) {
@@ -981,6 +1016,7 @@
      */
     @SystemApi
     @TestApi
+    @RequiresPermission(MODIFY_PHONE_STATE)
     public void setConferenceState(boolean isConference) {
         for (Listener l : mListeners) {
             l.onConferenceStateChanged(this, isConference);
@@ -1001,6 +1037,7 @@
      */
     @SystemApi
     @TestApi
+    @RequiresPermission(MODIFY_PHONE_STATE)
     public final void setAddress(@NonNull Uri address,
             @TelecomManager.Presentation int presentation) {
         Log.d(this, "setAddress %s", address);
@@ -1107,12 +1144,52 @@
     }
 
     /**
-     * Sends an event associated with this {@code Conference} with associated event extras to the
-     * {@link InCallService} (note: this is identical in concept to
-     * {@link Connection#sendConnectionEvent(String, Bundle)}).
-     * @see Connection#sendConnectionEvent(String, Bundle)
+     * Sends an event associated with this {@link Conference} with associated event extras to the
+     * {@link InCallService}.
+     * <p>
+     * Connection events are used to communicate point in time information from a
+     * {@link ConnectionService} to an {@link InCallService} implementation.  An example of a
+     * custom connection event includes notifying the UI when a WIFI call has been handed over to
+     * LTE, which the InCall UI might use to inform the user that billing charges may apply.  The
+     * Android Telephony framework will send the {@link Connection#EVENT_MERGE_COMPLETE}
+     * connection event when a call to {@link Call#mergeConference()} has completed successfully.
+     * <p>
+     * Events are exposed to {@link InCallService} implementations via
+     * {@link Call.Callback#onConnectionEvent(Call, String, Bundle)}.
+     * <p>
+     * No assumptions should be made as to how an In-Call UI or service will handle these events.
+     * The {@link ConnectionService} must assume that the In-Call UI could even chose to ignore
+     * some events altogether.
+     * <p>
+     * Events should be fully qualified (e.g. {@code com.example.event.MY_EVENT}) to avoid
+     * conflicts between {@link ConnectionService} implementations.  Further, custom
+     * {@link ConnectionService} implementations shall not re-purpose events in the
+     * {@code android.*} namespace, nor shall they define new event types in this namespace.  When
+     * defining a custom event type, ensure the contents of the extras {@link Bundle} is clearly
+     * defined.  Extra keys for this bundle should be named similar to the event type (e.g.
+     * {@code com.example.extra.MY_EXTRA}).
+     * <p>
+     * When defining events and the associated extras, it is important to keep their behavior
+     * consistent when the associated {@link ConnectionService} is updated.  Support for deprecated
+     * events/extras should me maintained to ensure backwards compatibility with older
+     * {@link InCallService} implementations which were built to support the older behavior.
+     * <p>
+     * Expected connection events from the Telephony stack are:
+     * <p>
+     * <ul>
+     *      <li>{@link Connection#EVENT_CALL_HOLD_FAILED} with {@code null} {@code extras} when the
+     *      {@link Conference} could not be held.</li>
+     *      <li>{@link Connection#EVENT_MERGE_START} with {@code null} {@code extras} when a new
+     *      call is being merged into the conference.</li>
+     *      <li>{@link Connection#EVENT_MERGE_COMPLETE} with {@code null} {@code extras} a new call
+     *      has completed being merged into the conference.</li>
+     *      <li>{@link Connection#EVENT_CALL_MERGE_FAILED} with {@code null} {@code extras} a new
+     *      call has failed to merge into the conference (the dialer app can determine which call
+     *      failed to merge based on the fact that the call still exists outside of the conference
+     *      at the end of the merge process).</li>
+     * </ul>
      *
-     * @param event The connection event.
+     * @param event The conference event.
      * @param extras Optional bundle containing extra information associated with the event.
      */
     public void sendConferenceEvent(@NonNull String event, @Nullable Bundle extras) {
diff --git a/telecomm/java/android/telecom/Connection.java b/telecomm/java/android/telecom/Connection.java
index 72c66d2..3b0ba25 100644
--- a/telecomm/java/android/telecom/Connection.java
+++ b/telecomm/java/android/telecom/Connection.java
@@ -16,9 +16,14 @@
 
 package android.telecom;
 
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
+
+import android.annotation.ElapsedRealtimeLong;
 import android.annotation.IntDef;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.app.Notification;
@@ -376,8 +381,14 @@
     /** Call supports the deflect feature. */
     public static final int CAPABILITY_SUPPORT_DEFLECT = 0x02000000;
 
+    /**
+     * When set, indicates that this {@link Connection} supports initiation of a conference call
+     * by directly adding participants using {@link #onAddConferenceParticipants(List)}.
+     * @hide
+     */
+    public static final int CAPABILITY_ADD_PARTICIPANT = 0x04000000;
     //**********************************************************************************************
-    // Next CAPABILITY value: 0x04000000
+    // Next CAPABILITY value: 0x08000000
     //**********************************************************************************************
 
     /**
@@ -474,7 +485,7 @@
      *
      * @see TelecomManager#EXTRA_USE_ASSISTED_DIALING
      */
-    public static final int PROPERTY_ASSISTED_DIALING_USED = 1 << 9;
+    public static final int PROPERTY_ASSISTED_DIALING = 1 << 9;
 
     /**
      * Set by the framework to indicate that the network has identified a Connection as an emergency
@@ -501,7 +512,7 @@
      * Set by the framework to indicate that it is an adhoc conference call.
      * <p>
      * This is used for Outgoing and incoming conference calls.
-     *
+     * @hide
      */
     public static final int PROPERTY_IS_ADHOC_CONFERENCE = 1 << 12;
 
@@ -953,7 +964,9 @@
         if ((capabilities & CAPABILITY_SUPPORT_DEFLECT) == CAPABILITY_SUPPORT_DEFLECT) {
             builder.append(isLong ? " CAPABILITY_SUPPORT_DEFLECT" : " sup_def");
         }
-
+        if ((capabilities & CAPABILITY_ADD_PARTICIPANT) == CAPABILITY_ADD_PARTICIPANT) {
+            builder.append(isLong ? " CAPABILITY_ADD_PARTICIPANT" : " add_participant");
+        }
         builder.append("]");
         return builder.toString();
     }
@@ -2109,19 +2122,24 @@
      */
     @SystemApi
     @TestApi
-    public final long getConnectTimeMillis() {
+    public final @IntRange(from = 0) long getConnectTimeMillis() {
         return mConnectTimeMillis;
     }
 
     /**
      * Retrieves the connection start time of the {@link Connection}, if specified.  A value of
      * {@link Conference#CONNECT_TIME_NOT_SPECIFIED} indicates that Telecom should determine the
-     * start time of the conference.
+     * start time of the connection.
      * <p>
      * Based on the value of {@link SystemClock#elapsedRealtime()}, which ensures that wall-clock
      * changes do not impact the call duration.
      * <p>
      * Used internally in Telephony when migrating conference participant data for IMS conferences.
+     * <p>
+     * The value returned is the same one set using
+     * {@link #setConnectionStartElapsedRealtimeMillis(long)}.  This value is never updated from
+     * the Telecom framework, so no permission enforcement occurs when retrieving the value with
+     * this method.
      *
      * @return The time at which the {@link Connection} was connected.
      *
@@ -2129,7 +2147,7 @@
      */
     @SystemApi
     @TestApi
-    public final long getConnectElapsedTimeMillis() {
+    public final @ElapsedRealtimeLong long getConnectionStartElapsedRealtimeMillis() {
         return mConnectElapsedTimeMillis;
     }
 
@@ -2550,6 +2568,9 @@
      * Sets the time at which a call became active on this Connection. This is set only
      * when a conference call becomes active on this connection.
      * <p>
+     * This time corresponds to the date/time of connection and is stored in the call log in
+     * {@link android.provider.CallLog.Calls#DATE}.
+     * <p>
      * Used by telephony to maintain calls associated with an IMS Conference.
      *
      * @param connectTimeMillis The connection time, in milliseconds.  Should be set using a value
@@ -2559,7 +2580,8 @@
      */
     @SystemApi
     @TestApi
-    public final void setConnectTimeMillis(long connectTimeMillis) {
+    @RequiresPermission(MODIFY_PHONE_STATE)
+    public final void setConnectTimeMillis(@IntRange(from = 0) long connectTimeMillis) {
         mConnectTimeMillis = connectTimeMillis;
     }
 
@@ -2567,15 +2589,23 @@
      * Sets the time at which a call became active on this Connection. This is set only
      * when a conference call becomes active on this connection.
      * <p>
+     * This time is used to establish the duration of a call.  It uses
+     * {@link SystemClock#elapsedRealtime()} to ensure that the call duration is not impacted by
+     * time zone changes during a call.  The difference between the current
+     * {@link SystemClock#elapsedRealtime()} and the value set at the connection start time is used
+     * to populate {@link android.provider.CallLog.Calls#DURATION} in the call log.
+     * <p>
      * Used by telephony to maintain calls associated with an IMS Conference.
+     *
      * @param connectElapsedTimeMillis The connection time, in milliseconds.  Stored in the format
      *                              {@link SystemClock#elapsedRealtime()}.
-     *
      * @hide
      */
     @SystemApi
     @TestApi
-    public final void setConnectionStartElapsedRealTime(long connectElapsedTimeMillis) {
+    @RequiresPermission(MODIFY_PHONE_STATE)
+    public final void setConnectionStartElapsedRealtimeMillis(
+            @ElapsedRealtimeLong long connectElapsedTimeMillis) {
         mConnectElapsedTimeMillis = connectElapsedTimeMillis;
     }
 
@@ -2953,6 +2983,14 @@
     public void onSeparate() {}
 
     /**
+     * Supports initiation of a conference call by directly adding participants to an ongoing call.
+     *
+     * @param participants with which conference call will be formed.
+     * @hide
+     */
+    public void onAddConferenceParticipants(@NonNull List<Uri> participants) {}
+
+    /**
      * Notifies this Connection of a request to abort.
      */
     public void onAbort() {}
diff --git a/telecomm/java/android/telecom/ConnectionService.java b/telecomm/java/android/telecom/ConnectionService.java
index 00c2918..2aea723 100644
--- a/telecomm/java/android/telecom/ConnectionService.java
+++ b/telecomm/java/android/telecom/ConnectionService.java
@@ -18,7 +18,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
 import android.app.Service;
@@ -142,6 +141,7 @@
     private static final String SESSION_SPLIT_CONFERENCE = "CS.sFC";
     private static final String SESSION_MERGE_CONFERENCE = "CS.mC";
     private static final String SESSION_SWAP_CONFERENCE = "CS.sC";
+    private static final String SESSION_ADD_PARTICIPANT = "CS.aP";
     private static final String SESSION_POST_DIAL_CONT = "CS.oPDC";
     private static final String SESSION_PULL_EXTERNAL_CALL = "CS.pEC";
     private static final String SESSION_SEND_CALL_EVENT = "CS.sCE";
@@ -195,6 +195,7 @@
     private static final int MSG_CREATE_CONFERENCE_COMPLETE = 36;
     private static final int MSG_CREATE_CONFERENCE_FAILED = 37;
     private static final int MSG_REJECT_WITH_REASON = 38;
+    private static final int MSG_ADD_PARTICIPANT = 39;
 
     private static Connection sNullConnection;
 
@@ -627,6 +628,21 @@
         }
 
         @Override
+        public void addConferenceParticipants(String callId, List<Uri> participants,
+                Session.Info sessionInfo) {
+            Log.startSession(sessionInfo, SESSION_ADD_PARTICIPANT);
+            try {
+                SomeArgs args = SomeArgs.obtain();
+                args.arg1 = callId;
+                args.arg2 = participants;
+                args.arg3 = Log.createSubsession();
+                mHandler.obtainMessage(MSG_ADD_PARTICIPANT, args).sendToTarget();
+            } finally {
+                Log.endSession();
+            }
+        }
+
+        @Override
         public void onPostDialContinue(String callId, boolean proceed, Session.Info sessionInfo) {
             Log.startSession(sessionInfo, SESSION_POST_DIAL_CONT);
             try {
@@ -1224,6 +1240,19 @@
                     }
                     break;
                 }
+                case MSG_ADD_PARTICIPANT: {
+                    SomeArgs args = (SomeArgs) msg.obj;
+                    try {
+                        Log.continueSession((Session) args.arg3,
+                                SESSION_HANDLER + SESSION_ADD_PARTICIPANT);
+                        addConferenceParticipants((String) args.arg1, (List<Uri>)args.arg2);
+                    } finally {
+                        args.recycle();
+                        Log.endSession();
+                    }
+                    break;
+                }
+
                 case MSG_ON_POST_DIAL_CONTINUE: {
                     SomeArgs args = (SomeArgs) msg.obj;
                     try {
@@ -1778,7 +1807,7 @@
                         null : conference.getVideoProvider().getInterface(),
                 conference.getVideoState(),
                 conference.getConnectTimeMillis(),
-                conference.getConnectionStartElapsedRealTime(),
+                conference.getConnectionStartElapsedRealtimeMillis(),
                 conference.getStatusHints(),
                 conference.getExtras(),
                 conference.getAddress(),
@@ -1884,7 +1913,7 @@
                         connection.isRingbackRequested(),
                         connection.getAudioModeIsVoip(),
                         connection.getConnectTimeMillis(),
-                        connection.getConnectElapsedTimeMillis(),
+                        connection.getConnectionStartElapsedRealtimeMillis(),
                         connection.getStatusHints(),
                         connection.getDisconnectCause(),
                         createIdList(connection.getConferenceables()),
@@ -2152,6 +2181,17 @@
         }
     }
 
+    private void addConferenceParticipants(String callId, List<Uri> participants) {
+        Log.d(this, "addConferenceParticipants(%s)", callId);
+        if (mConnectionById.containsKey(callId)) {
+            findConnectionForAction(callId, "addConferenceParticipants")
+                    .onAddConferenceParticipants(participants);
+        } else {
+            findConferenceForAction(callId, "addConferenceParticipants")
+                    .onAddConferenceParticipants(participants);
+        }
+    }
+
     /**
      * Notifies a {@link Connection} of a request to pull an external call.
      *
@@ -2374,7 +2414,7 @@
                             null : conference.getVideoProvider().getInterface(),
                     conference.getVideoState(),
                     conference.getConnectTimeMillis(),
-                    conference.getConnectionStartElapsedRealTime(),
+                    conference.getConnectionStartElapsedRealtimeMillis(),
                     conference.getStatusHints(),
                     conference.getExtras(),
                     conference.getAddress(),
@@ -2465,7 +2505,7 @@
                     connection.isRingbackRequested(),
                     connection.getAudioModeIsVoip(),
                     connection.getConnectTimeMillis(),
-                    connection.getConnectElapsedTimeMillis(),
+                    connection.getConnectionStartElapsedRealtimeMillis(),
                     connection.getStatusHints(),
                     connection.getDisconnectCause(),
                     emptyList,
diff --git a/telecomm/java/android/telecom/InCallAdapter.java b/telecomm/java/android/telecom/InCallAdapter.java
index 594c1eb..9d291740 100644
--- a/telecomm/java/android/telecom/InCallAdapter.java
+++ b/telecomm/java/android/telecom/InCallAdapter.java
@@ -283,6 +283,20 @@
     }
 
     /**
+     * Instructs Telecom to pull participants to existing call
+     *
+     * @param callId The unique ID of the call.
+     * @param participants participants to be pulled to existing call.
+     */
+    public void addConferenceParticipants(String callId, List<Uri> participants) {
+        try {
+            mAdapter.addConferenceParticipants(callId, participants);
+        } catch (RemoteException ignored) {
+        }
+    }
+
+
+    /**
      * Instructs Telecom to split the specified call from any conference call with which it may be
      * connected.
      *
diff --git a/telecomm/java/android/telecom/InCallService.java b/telecomm/java/android/telecom/InCallService.java
index ebfa3a1..982e5f3 100644
--- a/telecomm/java/android/telecom/InCallService.java
+++ b/telecomm/java/android/telecom/InCallService.java
@@ -20,6 +20,7 @@
 import android.annotation.SdkConstant;
 import android.annotation.SystemApi;
 import android.app.Service;
+import android.app.UiModeManager;
 import android.bluetooth.BluetoothDevice;
 import android.content.Intent;
 import android.hardware.camera2.CameraManager;
@@ -43,12 +44,32 @@
  * phone calls.
  * <h2>Becoming the Default Phone App</h2>
  * The default dialer/phone app is one which provides the in-call user interface while the device is
- * in a call.  A device is bundled with a system provided default dialer/phone app.  The user may
- * choose a single app to take over this role from the system app.  An app which wishes to fulfill
- * one this role uses the {@code android.app.role.RoleManager} to request that they fill the role.
+ * in a call.  It also provides the user with a means to initiate calls and see a history of calls
+ * on their device.  A device is bundled with a system provided default dialer/phone app.  The user
+ * may choose a single app to take over this role from the system app.  An app which wishes to
+ * fulfill one this role uses the {@link android.app.role.RoleManager} to request that they fill the
+ * {@link android.app.role.RoleManager#ROLE_DIALER} role.
  * <p>
- * An app filling the role of the default phone app provides a user interface while the device is in
- * a call, and the device is not in car mode.
+ * The default phone app provides a user interface while the device is in a call, and the device is
+ * not in car mode (i.e. {@link UiModeManager#getCurrentModeType()} is not
+ * {@link android.content.res.Configuration#UI_MODE_TYPE_CAR}).
+ * <p>
+ * In order to fill the {@link android.app.role.RoleManager#ROLE_DIALER} role, an app must meet a
+ * number of requirements:
+ * <ul>
+ *     <li>It must handle the {@link Intent#ACTION_DIAL} intent.  This means the app must provide
+ *     a dial pad UI for the user to initiate outgoing calls.</li>
+ *     <li>It must fully implement the {@link InCallService} API and provide both an incoming call
+ *     UI, as well as an ongoing call UI.</li>
+ * </ul>
+ * <p>
+ * Note: If the app filling the {@link android.app.role.RoleManager#ROLE_DIALER} crashes during
+ * {@link InCallService} binding, the Telecom framework will automatically fall back to using the
+ * dialer app pre-loaded on the device.  The system will display a notification to the user to let
+ * them know that the app has crashed and that their call was continued using the pre-loaded dialer
+ * app.
+ * <p>
+ * Further, the pre-loaded dialer will ALWAYS be used when the user places an emergency call.
  * <p>
  * Below is an example manifest registration for an {@code InCallService}. The meta-data
  * {@link TelecomManager#METADATA_IN_CALL_SERVICE_UI} indicates that this particular
@@ -82,6 +103,11 @@
  *           <action android:name="android.intent.action.DIAL" />
  *           <category android:name="android.intent.category.DEFAULT" />
  *      </intent-filter>
+ *      <intent-filter>
+ *           <action android:name="android.intent.action.DIAL" />
+ *           <category android:name="android.intent.category.DEFAULT" />
+ *           <data android:scheme="tel" />
+ *      </intent-filter>
  * </activity>
  * }
  * </pre>
@@ -111,6 +137,7 @@
  *         }
  *     }
  * }
+ * }
  * </pre>
  * <p id="incomingCallNotification">
  * <h3>Showing the Incoming Call Notification</h3>
diff --git a/telecomm/java/android/telecom/PhoneAccount.java b/telecomm/java/android/telecom/PhoneAccount.java
index f00432b..4e6e1a5 100644
--- a/telecomm/java/android/telecom/PhoneAccount.java
+++ b/telecomm/java/android/telecom/PhoneAccount.java
@@ -16,7 +16,10 @@
 
 package android.telecom;
 
+import static android.Manifest.permission.MODIFY_PHONE_STATE;
+
 import android.annotation.NonNull;
+import android.annotation.RequiresPermission;
 import android.annotation.SystemApi;
 import android.annotation.TestApi;
 import android.content.Intent;
@@ -614,7 +617,8 @@
          * time. By default, there is no group Id for a {@link PhoneAccount} (an empty String). Only
          * grouped {@link PhoneAccount}s with the same {@link ConnectionService} can be replaced.
          * <p>
-         * Note: This is an API specific to the Telephony stack.
+         * Note: This is an API specific to the Telephony stack; the group Id will be ignored for
+         * callers not holding the correct permission.
          *
          * @param groupId The group Id of the {@link PhoneAccount} that will replace any other
          * registered {@link PhoneAccount} in Telecom with the same Group Id.
@@ -623,6 +627,7 @@
          */
         @SystemApi
         @TestApi
+        @RequiresPermission(MODIFY_PHONE_STATE)
         public @NonNull Builder setGroupId(@NonNull String groupId) {
             if (groupId != null) {
                 mGroupId = groupId;
diff --git a/telecomm/java/android/telecom/TelecomManager.java b/telecomm/java/android/telecom/TelecomManager.java
index bf4dee2..5d7d649 100644
--- a/telecomm/java/android/telecom/TelecomManager.java
+++ b/telecomm/java/android/telecom/TelecomManager.java
@@ -819,8 +819,8 @@
      * automatically add dialing prefixes when placing international calls.
      * <p>
      * Setting this extra on the outgoing call extras will cause the
-     * {@link Connection#PROPERTY_ASSISTED_DIALING_USED} property and
-     * {@link Call.Details#PROPERTY_ASSISTED_DIALING_USED} property to be set on the
+     * {@link Connection#PROPERTY_ASSISTED_DIALING} property and
+     * {@link Call.Details#PROPERTY_ASSISTED_DIALING} property to be set on the
      * {@link Connection}/{@link Call} in question.  When the call is logged to the call log, the
      * {@link android.provider.CallLog.Calls#FEATURES_ASSISTED_DIALING_USED} call feature is set to
      * indicate that assisted dialing was used for the call.
@@ -1412,7 +1412,7 @@
     /**
      * Used to determine the currently selected default dialer package for a specific user.
      *
-     * @param userId the user id to query the default dialer package for.
+     * @param userHandle the user id to query the default dialer package for.
      * @return package name for the default dialer package or null if no package has been
      *         selected as the default dialer.
      * @hide
@@ -1420,10 +1420,11 @@
     @SystemApi
     @TestApi
     @RequiresPermission(READ_PRIVILEGED_PHONE_STATE)
-    public @Nullable String getDefaultDialerPackage(int userId) {
+    public @Nullable String getDefaultDialerPackage(@NonNull UserHandle userHandle) {
         try {
             if (isServiceConnected()) {
-                return getTelecomService().getDefaultDialerPackageForUser(userId);
+                return getTelecomService().getDefaultDialerPackageForUser(
+                        userHandle.getIdentifier());
             }
         } catch (RemoteException e) {
             Log.e(TAG, "RemoteException attempting to get the default dialer package name.", e);
@@ -1875,8 +1876,8 @@
      *            {@link #registerPhoneAccount}.
      * @param extras A bundle that will be passed through to
      *            {@link ConnectionService#onCreateIncomingConference}.
+     * @hide
      */
-
     public void addNewIncomingConference(@NonNull PhoneAccountHandle phoneAccount,
             @NonNull Bundle extras) {
         try {
@@ -2115,6 +2116,7 @@
      *
      * @param participants List of participants to start conference with
      * @param extras Bundle of extras to use with the call
+     * @hide
      */
     @RequiresPermission(android.Manifest.permission.CALL_PHONE)
     public void startConference(@NonNull List<Uri> participants,
diff --git a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
index 4249dff..a397d77 100644
--- a/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
+++ b/telecomm/java/com/android/internal/telecom/IConnectionService.aidl
@@ -104,6 +104,9 @@
 
     void swapConference(String conferenceCallId, in Session.Info sessionInfo);
 
+    void addConferenceParticipants(String CallId, in List<Uri> participants,
+    in Session.Info sessionInfo);
+
     void onPostDialContinue(String callId, boolean proceed, in Session.Info sessionInfo);
 
     void pullExternalCall(String callId, in Session.Info sessionInfo);
diff --git a/telecomm/java/com/android/internal/telecom/IInCallAdapter.aidl b/telecomm/java/com/android/internal/telecom/IInCallAdapter.aidl
index eb2d714..9beff22 100644
--- a/telecomm/java/com/android/internal/telecom/IInCallAdapter.aidl
+++ b/telecomm/java/com/android/internal/telecom/IInCallAdapter.aidl
@@ -67,6 +67,8 @@
 
     void swapConference(String callId);
 
+    void addConferenceParticipants(String callId, in List<Uri> participants);
+
     void turnOnProximitySensor();
 
     void turnOffProximitySensor(boolean screenOnImmediately);
diff --git a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
index 553bcff..e97cfaf 100644
--- a/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
+++ b/telephony/common/com/android/internal/telephony/CarrierAppUtils.java
@@ -123,6 +123,14 @@
         return userContext.getContentResolver();
     }
 
+    private static boolean isUpdatedSystemApp(ApplicationInfo ai) {
+        if ((ai.flags & ApplicationInfo.FLAG_UPDATED_SYSTEM_APP) != 0) {
+            return true;
+        }
+
+        return false;
+    }
+
     /**
      * Disable carrier apps until they are privileged
      * Must be public b/c framework unit tests can't access package-private methods.
@@ -137,7 +145,7 @@
         PackageManager packageManager = context.getPackageManager();
         PermissionManager permissionManager =
                 (PermissionManager) context.getSystemService(Context.PERMISSION_SERVICE);
-        List<ApplicationInfo> candidates = getDefaultNotUpdatedCarrierAppCandidatesHelper(
+        List<ApplicationInfo> candidates = getDefaultCarrierAppCandidatesHelper(
                 userId, systemCarrierAppsDisabledUntilUsed, context);
         if (candidates == null || candidates.isEmpty()) {
             return;
@@ -176,7 +184,7 @@
                 if (hasPrivileges) {
                     // Only update enabled state for the app on /system. Once it has been
                     // updated we shouldn't touch it.
-                    if (enabledSetting
+                    if (!isUpdatedSystemApp(ai) && enabledSetting
                             == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                             || enabledSetting
                             == PackageManager.COMPONENT_ENABLED_STATE_DISABLED_UNTIL_USED
@@ -230,7 +238,7 @@
                 } else {  // No carrier privileges
                     // Only update enabled state for the app on /system. Once it has been
                     // updated we shouldn't touch it.
-                    if (enabledSetting
+                    if (!isUpdatedSystemApp(ai) && enabledSetting
                             == PackageManager.COMPONENT_ENABLED_STATE_DEFAULT
                             && (ai.flags & ApplicationInfo.FLAG_INSTALLED) != 0) {
                         Log.i(TAG, "Update state(" + packageName
@@ -361,29 +369,6 @@
         return apps;
     }
 
-    private static List<ApplicationInfo> getDefaultNotUpdatedCarrierAppCandidatesHelper(
-            int userId, ArraySet<String> systemCarrierAppsDisabledUntilUsed, Context context) {
-        if (systemCarrierAppsDisabledUntilUsed == null) {
-            return null;
-        }
-
-        int size = systemCarrierAppsDisabledUntilUsed.size();
-        if (size == 0) {
-            return null;
-        }
-
-        List<ApplicationInfo> apps = new ArrayList<>(size);
-        for (int i = 0; i < size; i++) {
-            String packageName = systemCarrierAppsDisabledUntilUsed.valueAt(i);
-            ApplicationInfo ai =
-                    getApplicationInfoIfNotUpdatedSystemApp(userId, packageName, context);
-            if (ai != null) {
-                apps.add(ai);
-            }
-        }
-        return apps;
-    }
-
     private static Map<String, List<ApplicationInfo>> getDefaultCarrierAssociatedAppsHelper(
             int userId, ArrayMap<String, List<String>> systemCarrierAssociatedAppsDisabledUntilUsed,
             Context context) {
@@ -395,11 +380,11 @@
                     systemCarrierAssociatedAppsDisabledUntilUsed.valueAt(i);
             for (int j = 0; j < associatedAppPackages.size(); j++) {
                 ApplicationInfo ai =
-                        getApplicationInfoIfNotUpdatedSystemApp(
+                        getApplicationInfoIfSystemApp(
                                 userId, associatedAppPackages.get(j), context);
                 // Only update enabled state for the app on /system. Once it has been updated we
                 // shouldn't touch it.
-                if (ai != null) {
+                if (ai != null && !isUpdatedSystemApp(ai)) {
                     List<ApplicationInfo> appList = associatedApps.get(carrierAppPackage);
                     if (appList == null) {
                         appList = new ArrayList<>();
@@ -413,26 +398,6 @@
     }
 
     @Nullable
-    private static ApplicationInfo getApplicationInfoIfNotUpdatedSystemApp(
-            int userId, String packageName, Context context) {
-        try {
-            ApplicationInfo ai = context.createContextAsUser(UserHandle.of(userId), 0)
-                    .getPackageManager()
-                    .getApplicationInfo(packageName,
-                            PackageManager.MATCH_DISABLED_UNTIL_USED_COMPONENTS
-                                    | PackageManager.MATCH_HIDDEN_UNTIL_INSTALLED_COMPONENTS
-                                    | PackageManager.MATCH_SYSTEM_ONLY
-                                    | PackageManager.MATCH_FACTORY_ONLY);
-            if (ai != null) {
-                return ai;
-            }
-        } catch (PackageManager.NameNotFoundException e) {
-            Log.w(TAG, "Could not reach PackageManager", e);
-        }
-        return null;
-    }
-
-    @Nullable
     private static ApplicationInfo getApplicationInfoIfSystemApp(
             int userId, String packageName, Context context) {
         try {
diff --git a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
index 7b3aace7..b897725 100644
--- a/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
+++ b/telephony/common/com/android/internal/telephony/TelephonyPermissions.java
@@ -363,16 +363,10 @@
      */
     private static boolean reportAccessDeniedToReadIdentifiers(Context context, int subId, int pid,
             int uid, String callingPackage, String message) {
-        boolean isPreinstalled = false;
         ApplicationInfo callingPackageInfo = null;
         try {
             callingPackageInfo = context.getPackageManager().getApplicationInfoAsUser(
                     callingPackage, 0, UserHandle.getUserHandleForUid(uid));
-            if (callingPackageInfo != null) {
-                if (callingPackageInfo.isSystemApp()) {
-                    isPreinstalled = true;
-                }
-            }
         } catch (PackageManager.NameNotFoundException e) {
             // If the application info for the calling package could not be found then assume the
             // calling app is a non-preinstalled app to detect any issues with the check
@@ -393,10 +387,9 @@
             }
             invokedMethods.add(message);
             TelephonyCommonStatsLog.write(TelephonyCommonStatsLog.DEVICE_IDENTIFIER_ACCESS_DENIED,
-                    callingPackage, message, isPreinstalled, false);
+                    callingPackage, message, /* isPreinstalled= */ false, false);
         }
-        Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message
-                + ":isPreinstalled=" + isPreinstalled);
+        Log.w(LOG_TAG, "reportAccessDeniedToReadIdentifiers:" + callingPackage + ":" + message);
         // if the target SDK is pre-Q then check if the calling package would have previously
         // had access to device identifiers.
         if (callingPackageInfo != null && (
diff --git a/telephony/common/com/google/android/mms/pdu/CharacterSets.java b/telephony/common/com/google/android/mms/pdu/CharacterSets.java
index 5172b7b..a3894d6 100644
--- a/telephony/common/com/google/android/mms/pdu/CharacterSets.java
+++ b/telephony/common/com/google/android/mms/pdu/CharacterSets.java
@@ -48,6 +48,51 @@
     public static final int UTF_16      = 0x03F7;
 
     /**
+     * Extend charsets.
+     *
+     * From http://www.iana.org/assignments/character-sets/
+     */
+    public static final int BIG5_HKSCS = 0x0835; //2101
+    public static final int BOCU_1 = 0x03FC; //1020
+    public static final int CESU_8 = 0x03F8; //1016
+    public static final int CP864 = 0x0803; //2051
+    public static final int EUC_JP = 0x12; //18
+    public static final int EUC_KR = 0x26; //38
+    public static final int GB18030 = 0x72; //114
+    public static final int GBK = 0x71; //113
+    public static final int HZ_GB_2312 = 0x0825; //2085
+    public static final int GB_2312 = 0x07E9; //2025
+    public static final int ISO_2022_CN = 0x68; //104
+    public static final int ISO_2022_CN_EXT = 0x69; //105
+    public static final int ISO_2022_JP = 0x27; //39
+    public static final int ISO_2022_KR = 0x25; //37
+    public static final int ISO_8859_10 = 0x0D; //13
+    public static final int ISO_8859_13 = 0x6D; //109
+    public static final int ISO_8859_14 = 0x6E; //110
+    public static final int ISO_8859_15 = 0x6F; //111
+    public static final int ISO_8859_16 = 0x70; //112
+    public static final int KOI8_R = 0x0824; //2084
+    public static final int KOI8_U = 0x0828; //2088
+    public static final int MACINTOSH = 0x07EB; //2027
+    public static final int SCSU = 0x03F3; //1011
+    public static final int TIS_620 = 0x08D3; //2259
+    public static final int UTF_16BE = 0x03F5; //1013
+    public static final int UTF_16LE = 0x03F6; //1014
+    public static final int UTF_32 = 0x03F9; //1017
+    public static final int UTF_32BE = 0x03FA; //1018
+    public static final int UTF_32LE = 0x03FB; //1019
+    public static final int UTF_7 = 0x03F4; //1012
+    public static final int WINDOWS_1250 = 0x08CA; //2250
+    public static final int WINDOWS_1251 = 0x08CB; //2251
+    public static final int WINDOWS_1252 = 0x08CC; //2252
+    public static final int WINDOWS_1253 = 0x08CD; //2253
+    public static final int WINDOWS_1254 = 0x08CE; //2254
+    public static final int WINDOWS_1255 = 0x08CF; //2255
+    public static final int WINDOWS_1256 = 0x08D0; //2256
+    public static final int WINDOWS_1257 = 0x08D1; //2257
+    public static final int WINDOWS_1258 = 0x08D2; //2258
+
+    /**
      * If the encoding of given data is unsupported, use UTF_8 to decode it.
      */
     public static final int DEFAULT_CHARSET = UTF_8;
@@ -72,6 +117,45 @@
         BIG5,
         UCS2,
         UTF_16,
+        BIG5_HKSCS,
+        BOCU_1,
+        CESU_8,
+        CP864,
+        EUC_JP,
+        EUC_KR,
+        GB18030,
+        GBK,
+        HZ_GB_2312,
+        GB_2312,
+        ISO_2022_CN,
+        ISO_2022_CN_EXT,
+        ISO_2022_JP,
+        ISO_2022_KR,
+        ISO_8859_10,
+        ISO_8859_13,
+        ISO_8859_14,
+        ISO_8859_15,
+        ISO_8859_16,
+        KOI8_R,
+        KOI8_U,
+        MACINTOSH,
+        SCSU,
+        TIS_620,
+        UTF_16BE,
+        UTF_16LE,
+        UTF_32,
+        UTF_32BE,
+        UTF_32LE,
+        UTF_7,
+        WINDOWS_1250,
+        WINDOWS_1251,
+        WINDOWS_1252,
+        WINDOWS_1253,
+        WINDOWS_1254,
+        WINDOWS_1255,
+        WINDOWS_1256,
+        WINDOWS_1257,
+        WINDOWS_1258,
     };
 
     /**
@@ -94,6 +178,51 @@
     public static final String MIMENAME_UCS2        = "iso-10646-ucs-2";
     public static final String MIMENAME_UTF_16      = "utf-16";
 
+    /**
+     * Extend charsets.
+     *
+     * From http://www.iana.org/assignments/character-sets/
+     */
+    public static final String MIMENAME_BIG5_HKSCS = "Big5-HKSCS";
+    public static final String MIMENAME_BOCU_1 = "BOCU-1";
+    public static final String MIMENAME_CESU_8 = "CESU-8";
+    public static final String MIMENAME_CP864 = "cp864";
+    public static final String MIMENAME_EUC_JP = "EUC-JP";
+    public static final String MIMENAME_EUC_KR = "EUC-KR";
+    public static final String MIMENAME_GB18030 = "GB18030";
+    public static final String MIMENAME_GBK = "GBK";
+    public static final String MIMENAME_HZ_GB_2312 = "HZ-GB-2312";
+    public static final String MIMENAME_GB_2312 = "GB2312";
+    public static final String MIMENAME_ISO_2022_CN = "ISO-2022-CN";
+    public static final String MIMENAME_ISO_2022_CN_EXT = "ISO-2022-CN-EXT";
+    public static final String MIMENAME_ISO_2022_JP = "ISO-2022-JP";
+    public static final String MIMENAME_ISO_2022_KR = "ISO-2022-KR";
+    public static final String MIMENAME_ISO_8859_10 = "ISO-8859-10";
+    public static final String MIMENAME_ISO_8859_13 = "ISO-8859-13";
+    public static final String MIMENAME_ISO_8859_14 = "ISO-8859-14";
+    public static final String MIMENAME_ISO_8859_15 = "ISO-8859-15";
+    public static final String MIMENAME_ISO_8859_16 = "ISO-8859-16";
+    public static final String MIMENAME_KOI8_R = "KOI8-R";
+    public static final String MIMENAME_KOI8_U = "KOI8-U";
+    public static final String MIMENAME_MACINTOSH = "macintosh";
+    public static final String MIMENAME_SCSU = "SCSU";
+    public static final String MIMENAME_TIS_620 = "TIS-620";
+    public static final String MIMENAME_UTF_16BE = "UTF-16BE";
+    public static final String MIMENAME_UTF_16LE = "UTF-16LE";
+    public static final String MIMENAME_UTF_32 = "UTF-32";
+    public static final String MIMENAME_UTF_32BE = "UTF-32BE";
+    public static final String MIMENAME_UTF_32LE = "UTF-32LE";
+    public static final String MIMENAME_UTF_7 = "UTF-7";
+    public static final String MIMENAME_WINDOWS_1250 = "windows-1250";
+    public static final String MIMENAME_WINDOWS_1251 = "windows-1251";
+    public static final String MIMENAME_WINDOWS_1252 = "windows-1252";
+    public static final String MIMENAME_WINDOWS_1253 = "windows-1253";
+    public static final String MIMENAME_WINDOWS_1254 = "windows-1254";
+    public static final String MIMENAME_WINDOWS_1255 = "windows-1255";
+    public static final String MIMENAME_WINDOWS_1256 = "windows-1256";
+    public static final String MIMENAME_WINDOWS_1257 = "windows-1257";
+    public static final String MIMENAME_WINDOWS_1258 = "windows-1258";
+
     public static final String DEFAULT_CHARSET_NAME = MIMENAME_UTF_8;
 
     /**
@@ -116,6 +245,45 @@
         MIMENAME_BIG5,
         MIMENAME_UCS2,
         MIMENAME_UTF_16,
+        MIMENAME_BIG5_HKSCS,
+        MIMENAME_BOCU_1,
+        MIMENAME_CESU_8,
+        MIMENAME_CP864,
+        MIMENAME_EUC_JP,
+        MIMENAME_EUC_KR,
+        MIMENAME_GB18030,
+        MIMENAME_GBK,
+        MIMENAME_HZ_GB_2312,
+        MIMENAME_GB_2312,
+        MIMENAME_ISO_2022_CN,
+        MIMENAME_ISO_2022_CN_EXT,
+        MIMENAME_ISO_2022_JP,
+        MIMENAME_ISO_2022_KR,
+        MIMENAME_ISO_8859_10,
+        MIMENAME_ISO_8859_13,
+        MIMENAME_ISO_8859_14,
+        MIMENAME_ISO_8859_15,
+        MIMENAME_ISO_8859_16,
+        MIMENAME_KOI8_R,
+        MIMENAME_KOI8_U,
+        MIMENAME_MACINTOSH,
+        MIMENAME_SCSU,
+        MIMENAME_TIS_620,
+        MIMENAME_UTF_16BE,
+        MIMENAME_UTF_16LE,
+        MIMENAME_UTF_32,
+        MIMENAME_UTF_32BE,
+        MIMENAME_UTF_32LE,
+        MIMENAME_UTF_7,
+        MIMENAME_WINDOWS_1250,
+        MIMENAME_WINDOWS_1251,
+        MIMENAME_WINDOWS_1252,
+        MIMENAME_WINDOWS_1253,
+        MIMENAME_WINDOWS_1254,
+        MIMENAME_WINDOWS_1255,
+        MIMENAME_WINDOWS_1256,
+        MIMENAME_WINDOWS_1257,
+        MIMENAME_WINDOWS_1258,
     };
 
     private static final HashMap<Integer, String> MIBENUM_TO_NAME_MAP;
diff --git a/telephony/java/android/service/carrier/CarrierIdentifier.java b/telephony/java/android/service/carrier/CarrierIdentifier.java
index 7957c25..bc0f909 100644
--- a/telephony/java/android/service/carrier/CarrierIdentifier.java
+++ b/telephony/java/android/service/carrier/CarrierIdentifier.java
@@ -20,10 +20,10 @@
 import android.annotation.Nullable;
 import android.os.Parcel;
 import android.os.Parcelable;
-import com.android.telephony.Rlog;
 import android.telephony.TelephonyManager;
 
 import com.android.internal.telephony.uicc.IccUtils;
+import com.android.telephony.Rlog;
 
 import java.util.Objects;
 
diff --git a/telephony/java/android/telephony/AccessNetworkConstants.java b/telephony/java/android/telephony/AccessNetworkConstants.java
index 610eef8..01abb26 100644
--- a/telephony/java/android/telephony/AccessNetworkConstants.java
+++ b/telephony/java/android/telephony/AccessNetworkConstants.java
@@ -153,22 +153,55 @@
         public static final int BAND_12 = 12;
         public static final int BAND_13 = 13;
         public static final int BAND_14 = 14;
-        /** band 15, 16, 17, 18 are reserved */
+        // band 15, 16, 17, 18 are reserved
         public static final int BAND_19 = 19;
         public static final int BAND_20 = 20;
         public static final int BAND_21 = 21;
         public static final int BAND_22 = 22;
-        /** band 23, 24 are reserved */
+        // band 23, 24 are reserved
         public static final int BAND_25 = 25;
         public static final int BAND_26 = 26;
 
-        /** Frequency bands for TD-SCDMA. Defined in 3GPP TS 25.102, Table 5.2. */
+        // Frequency bands for TD-SCDMA. Defined in 3GPP TS 25.102, Table 5.2.
+
+        /**
+         * Band A
+         * 1900 - 1920 MHz: Uplink and downlink transmission
+         * 2010 - 2025 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_A = 101;
+
+        /**
+         * Band B
+         * 1850 - 1910 MHz: Uplink and downlink transmission
+         * 1930 - 1990 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_B = 102;
+
+        /**
+         * Band C
+         * 1910 - 1930 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_C = 103;
+
+        /**
+         * Band D
+         * 2570 - 2620 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_D = 104;
+
+        /**
+         * Band E
+         * 2300—2400 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_E = 105;
+
+        /**
+         * Band F
+         * 1880 - 1920 MHz: Uplink and downlink transmission
+         */
         public static final int BAND_F = 106;
+
         /** @hide */
         private UtranBand() {}
     }
diff --git a/telephony/java/android/telephony/Annotation.java b/telephony/java/android/telephony/Annotation.java
index d2a5905..a27c480 100644
--- a/telephony/java/android/telephony/Annotation.java
+++ b/telephony/java/android/telephony/Annotation.java
@@ -661,4 +661,16 @@
     })
     @Retention(RetentionPolicy.SOURCE)
     public @interface Skip464XlatStatus {}
+
+    /**
+     * Override network type
+     */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "OVERRIDE_NETWORK_TYPE_", value = {
+            DisplayInfo.OVERRIDE_NETWORK_TYPE_NONE,
+            DisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_CA,
+            DisplayInfo.OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO,
+            DisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA,
+            DisplayInfo.OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE})
+    public @interface OverrideNetworkType {}
 }
diff --git a/telephony/java/android/telephony/AnomalyReporter.java b/telephony/java/android/telephony/AnomalyReporter.java
index 097041f..ffdb23f 100644
--- a/telephony/java/android/telephony/AnomalyReporter.java
+++ b/telephony/java/android/telephony/AnomalyReporter.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.annotation.RequiresPermission;
 import android.content.Context;
@@ -27,6 +25,7 @@
 import android.os.ParcelUuid;
 
 import com.android.internal.util.IndentingPrintWriter;
+import com.android.telephony.Rlog;
 
 import java.io.FileDescriptor;
 import java.io.PrintWriter;
diff --git a/telephony/java/android/telephony/BarringInfo.java b/telephony/java/android/telephony/BarringInfo.java
index 5419c3c..92423a2 100644
--- a/telephony/java/android/telephony/BarringInfo.java
+++ b/telephony/java/android/telephony/BarringInfo.java
@@ -62,38 +62,38 @@
     /* Applicabe to UTRAN */
     /** Barring indicator for circuit-switched service; applicable to UTRAN */
     public static final int BARRING_SERVICE_TYPE_CS_SERVICE =
-            android.hardware.radio.V1_5.BarringServiceType.CS_SERVICE;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.CS_SERVICE;
     /** Barring indicator for packet-switched service; applicable to UTRAN */
     public static final int BARRING_SERVICE_TYPE_PS_SERVICE =
-            android.hardware.radio.V1_5.BarringServiceType.PS_SERVICE;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.PS_SERVICE;
     /** Barring indicator for circuit-switched voice service; applicable to UTRAN */
     public static final int BARRING_SERVICE_TYPE_CS_VOICE =
-            android.hardware.radio.V1_5.BarringServiceType.CS_VOICE;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.CS_VOICE;
 
     /* Applicable to EUTRAN, NGRAN */
     /** Barring indicator for mobile-originated signalling; applicable to EUTRAN and NGRAN */
     public static final int BARRING_SERVICE_TYPE_MO_SIGNALLING =
-            android.hardware.radio.V1_5.BarringServiceType.MO_SIGNALLING;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.MO_SIGNALLING;
     /** Barring indicator for mobile-originated data traffic; applicable to EUTRAN and NGRAN */
     public static final int BARRING_SERVICE_TYPE_MO_DATA =
-            android.hardware.radio.V1_5.BarringServiceType.MO_DATA;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.MO_DATA;
     /** Barring indicator for circuit-switched fallback for voice; applicable to EUTRAN and NGRAN */
     public static final int BARRING_SERVICE_TYPE_CS_FALLBACK =
-            android.hardware.radio.V1_5.BarringServiceType.CS_FALLBACK;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.CS_FALLBACK;
     /** Barring indicator for MMTEL (IMS) voice; applicable to EUTRAN and NGRAN */
     public static final int BARRING_SERVICE_TYPE_MMTEL_VOICE =
-            android.hardware.radio.V1_5.BarringServiceType.MMTEL_VOICE;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.MMTEL_VOICE;
     /** Barring indicator for MMTEL (IMS) video; applicable to EUTRAN and NGRAN */
     public static final int BARRING_SERVICE_TYPE_MMTEL_VIDEO =
-            android.hardware.radio.V1_5.BarringServiceType.MMTEL_VIDEO;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.MMTEL_VIDEO;
 
     /* Applicable to UTRAN, EUTRAN, NGRAN */
     /** Barring indicator for emergency services; applicable to UTRAN, EUTRAN, and NGRAN */
     public static final int BARRING_SERVICE_TYPE_EMERGENCY =
-            android.hardware.radio.V1_5.BarringServiceType.EMERGENCY;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.EMERGENCY;
     /** Barring indicator for SMS sending; applicable to UTRAN, EUTRAN, and NGRAN */
     public static final int BARRING_SERVICE_TYPE_SMS =
-            android.hardware.radio.V1_5.BarringServiceType.SMS;
+            android.hardware.radio.V1_5.BarringInfo.ServiceType.SMS;
 
     //TODO: add barring constants for Operator-Specific barring codes
 
@@ -112,13 +112,14 @@
         public @interface BarringType {}
 
         /** Barring is inactive */
-        public static final int BARRING_TYPE_NONE = android.hardware.radio.V1_5.BarringType.NONE;
+        public static final int BARRING_TYPE_NONE =
+                android.hardware.radio.V1_5.BarringInfo.BarringType.NONE;
         /** The service is barred */
         public static final int BARRING_TYPE_UNCONDITIONAL =
-                android.hardware.radio.V1_5.BarringType.UNCONDITIONAL;
+                android.hardware.radio.V1_5.BarringInfo.BarringType.UNCONDITIONAL;
         /** The service may be barred based on additional factors */
         public static final int BARRING_TYPE_CONDITIONAL =
-                android.hardware.radio.V1_5.BarringType.CONDITIONAL;
+                android.hardware.radio.V1_5.BarringInfo.BarringType.CONDITIONAL;
 
         /** If a modem does not report barring info, then the barring type will be UNKNOWN */
         public static final int BARRING_TYPE_UNKNOWN = -1;
@@ -238,6 +239,12 @@
         }
     }
 
+    private static final BarringServiceInfo BARRING_SERVICE_INFO_UNKNOWN =
+            new BarringServiceInfo(BarringServiceInfo.BARRING_TYPE_UNKNOWN);
+
+    private static final BarringServiceInfo BARRING_SERVICE_INFO_UNBARRED =
+            new BarringServiceInfo(BarringServiceInfo.BARRING_TYPE_NONE);
+
     private CellIdentity mCellIdentity;
 
     // A SparseArray potentially mapping each BarringService type to a BarringServiceInfo config
@@ -271,44 +278,35 @@
         SparseArray<BarringServiceInfo> serviceInfos = new SparseArray<>();
 
         for (android.hardware.radio.V1_5.BarringInfo halBarringInfo : halBarringInfos) {
-            if (halBarringInfo.type == android.hardware.radio.V1_5.BarringType.CONDITIONAL) {
-                if (halBarringInfo.typeSpecificInfo.getDiscriminator()
-                        != android.hardware.radio.V1_5.BarringTypeSpecificInfo
-                                .hidl_discriminator.conditionalBarringInfo) {
+            if (halBarringInfo.barringType
+                    == android.hardware.radio.V1_5.BarringInfo.BarringType.CONDITIONAL) {
+                if (halBarringInfo.barringTypeSpecificInfo.getDiscriminator()
+                        != android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo
+                                .hidl_discriminator.conditional) {
                     // this is an error case where the barring info is conditional but the
                     // conditional barring fields weren't included
                     continue;
                 }
-                android.hardware.radio.V1_5.ConditionalBarringInfo conditionalInfo =
-                        halBarringInfo.typeSpecificInfo.conditionalBarringInfo();
+                android.hardware.radio.V1_5.BarringInfo.BarringTypeSpecificInfo
+                        .Conditional conditionalInfo =
+                        halBarringInfo.barringTypeSpecificInfo.conditional();
                 serviceInfos.put(
-                        halBarringInfo.service, new BarringServiceInfo(
-                                halBarringInfo.type, // will always be CONDITIONAL here
+                        halBarringInfo.serviceType, new BarringServiceInfo(
+                                halBarringInfo.barringType, // will always be CONDITIONAL here
                                 conditionalInfo.isBarred,
-                                conditionalInfo.barringFactor,
-                                conditionalInfo.barringTimeSeconds));
+                                conditionalInfo.factor,
+                                conditionalInfo.timeSeconds));
             } else {
                 // Barring type is either NONE or UNCONDITIONAL
                 serviceInfos.put(
-                        halBarringInfo.service, new BarringServiceInfo(halBarringInfo.type,
-                                false, 0, 0));
+                        halBarringInfo.serviceType, new BarringServiceInfo(
+                                halBarringInfo.barringType, false, 0, 0));
             }
         }
         return new BarringInfo(ci, serviceInfos);
     }
 
     /**
-     * Return whether a service is currently barred based on the BarringInfo
-     *
-     * @param service the service to be checked.
-     * @return true if the service is currently being barred, otherwise false
-     */
-    public boolean isServiceBarred(@BarringServiceType int service) {
-        BarringServiceInfo bsi = mBarringServiceInfos.get(service);
-        return bsi != null && (bsi.isBarred());
-    }
-
-    /**
      * Get the BarringServiceInfo for a specified service.
      *
      * @return a BarringServiceInfo struct describing the current barring status for a service
@@ -319,14 +317,16 @@
         // type as UNKNOWN; if the modem reports barring info but doesn't report for a particular
         // service then we can safely assume that the service isn't barred (for instance because
         // that particular service isn't applicable to the current RAN).
-        return (bsi != null) ? bsi : new BarringServiceInfo(
-                mBarringServiceInfos.size() > 0 ? BarringServiceInfo.BARRING_TYPE_NONE :
-                        BarringServiceInfo.BARRING_TYPE_UNKNOWN);
+        return (bsi != null) ? bsi : mBarringServiceInfos.size() > 0
+                ? BARRING_SERVICE_INFO_UNBARRED : BARRING_SERVICE_INFO_UNKNOWN;
     }
 
     /** @hide */
     @SystemApi
     public @NonNull BarringInfo createLocationInfoSanitizedCopy() {
+        // The only thing that would need sanitizing is the CellIdentity
+        if (mCellIdentity == null) return this;
+
         return new BarringInfo(mCellIdentity.sanitizeLocationInfo(), mBarringServiceInfos);
     }
 
diff --git a/telephony/java/android/telephony/CallForwardingInfo.java b/telephony/java/android/telephony/CallForwardingInfo.java
index 33ad5e8..1dd7539 100644
--- a/telephony/java/android/telephony/CallForwardingInfo.java
+++ b/telephony/java/android/telephony/CallForwardingInfo.java
@@ -15,7 +15,6 @@
  */
 
 package android.telephony;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SuppressLint;
@@ -25,6 +24,8 @@
 import android.telephony.Annotation.CallForwardingReason;
 import android.telephony.Annotation.CallForwardingStatus;
 
+import com.android.telephony.Rlog;
+
 import java.util.Objects;
 
 /**
diff --git a/telephony/java/android/telephony/CarrierConfigManager.java b/telephony/java/android/telephony/CarrierConfigManager.java
index 945c888..51b4a31 100755
--- a/telephony/java/android/telephony/CarrierConfigManager.java
+++ b/telephony/java/android/telephony/CarrierConfigManager.java
@@ -1084,11 +1084,20 @@
     /**
      * Determines whether adhoc conference calls are supported by a carrier.  When {@code true},
      * adhoc conference calling is supported, {@code false otherwise}.
+     * @hide
      */
     public static final String KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL =
             "support_adhoc_conference_calls_bool";
 
     /**
+     * Determines whether conference participants can be added to existing call.  When {@code true},
+     * adding conference participants to existing call is supported, {@code false otherwise}.
+     * @hide
+     */
+    public static final String KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL =
+            "support_add_conference_participants_bool";
+
+    /**
      * Determines whether conference calls are supported by a carrier.  When {@code true},
      * conference calling is supported, {@code false otherwise}.
      */
@@ -4003,6 +4012,7 @@
         sDefaults.putBoolean(KEY_IGNORE_RTT_MODE_SETTING_BOOL, false);
         sDefaults.putInt(KEY_CDMA_3WAYCALL_FLASH_DELAY_INT , 0);
         sDefaults.putBoolean(KEY_SUPPORT_ADHOC_CONFERENCE_CALLS_BOOL, false);
+        sDefaults.putBoolean(KEY_SUPPORT_ADD_CONFERENCE_PARTICIPANTS_BOOL, false);
         sDefaults.putBoolean(KEY_SUPPORT_CONFERENCE_CALL_BOOL, true);
         sDefaults.putBoolean(KEY_SUPPORT_IMS_CONFERENCE_CALL_BOOL, true);
         sDefaults.putBoolean(KEY_SUPPORT_MANAGE_IMS_CONFERENCE_CALL_BOOL, true);
diff --git a/telephony/java/android/telephony/CbGeoUtils.java b/telephony/java/android/telephony/CbGeoUtils.java
index 719ba8d..c0ae99e 100644
--- a/telephony/java/android/telephony/CbGeoUtils.java
+++ b/telephony/java/android/telephony/CbGeoUtils.java
@@ -16,13 +16,12 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.util.TelephonyUtils;
+import com.android.telephony.Rlog;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/telephony/java/android/telephony/CellBroadcastService.java b/telephony/java/android/telephony/CellBroadcastService.java
index 09e22aa..ac775b3 100644
--- a/telephony/java/android/telephony/CellBroadcastService.java
+++ b/telephony/java/android/telephony/CellBroadcastService.java
@@ -20,6 +20,7 @@
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.annotation.WorkerThread;
 import android.app.Service;
 import android.content.Intent;
 import android.os.Bundle;
@@ -102,6 +103,17 @@
             @NonNull String originatingAddress, @NonNull Consumer<Bundle> callback);
 
     /**
+     * Get broadcasted area information.
+     *
+     * @param slotIndex the index of the slot which received the area information.
+     *
+     * @return The area information string sent from the network. This is usually the human readable
+     * string shown in Setting app's SIM status page.
+     */
+    @WorkerThread
+    public abstract @NonNull CharSequence getCellBroadcastAreaInfo(int slotIndex);
+
+    /**
      * If overriding this method, call through to the super method for any unknown actions.
      * {@inheritDoc}
      */
@@ -162,5 +174,17 @@
             CellBroadcastService.this.onCdmaScpMessage(slotIndex, smsCbProgramData,
                     originatingAddress, consumer);
         }
+
+        /**
+         * Get broadcasted area information
+         *
+         * @param slotIndex         the index of the slot which received the message
+         *
+         * @return The area information
+         */
+        @Override
+        public @NonNull CharSequence getCellBroadcastAreaInfo(int slotIndex) {
+            return CellBroadcastService.this.getCellBroadcastAreaInfo(slotIndex);
+        }
     }
 }
diff --git a/telephony/java/android/telephony/CellIdentity.java b/telephony/java/android/telephony/CellIdentity.java
index 3f0aeb5..0c2f1f3 100644
--- a/telephony/java/android/telephony/CellIdentity.java
+++ b/telephony/java/android/telephony/CellIdentity.java
@@ -69,8 +69,8 @@
     protected String mAlphaShort;
 
     /** @hide */
-    protected CellIdentity(String tag, int type, String mcc, String mnc, String alphal,
-                           String alphas) {
+    protected CellIdentity(@Nullable String tag, int type, @Nullable String mcc,
+            @Nullable String mnc, @Nullable String alphal, @Nullable String alphas) {
         mTag = tag;
         mType = type;
 
diff --git a/telephony/java/android/telephony/CellIdentityCdma.java b/telephony/java/android/telephony/CellIdentityCdma.java
index 1a6bf33..e220b07 100644
--- a/telephony/java/android/telephony/CellIdentityCdma.java
+++ b/telephony/java/android/telephony/CellIdentityCdma.java
@@ -17,6 +17,7 @@
 package android.telephony;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.os.Parcel;
 import android.telephony.cdma.CdmaCellLocation;
 
@@ -90,8 +91,8 @@
      *
      * @hide
      */
-    public CellIdentityCdma(
-            int nid, int sid, int bid, int lon, int lat, String alphal, String alphas) {
+    public CellIdentityCdma(int nid, int sid, int bid, int lon, int lat,
+            @Nullable String alphal, @Nullable String alphas) {
         super(TAG, CellInfo.TYPE_CDMA, null, null, alphal, alphas);
         mNetworkId = inRangeOrUnavailable(nid, 0, NETWORK_ID_MAX);
         mSystemId = inRangeOrUnavailable(sid, 0, SYSTEM_ID_MAX);
@@ -108,22 +109,22 @@
     }
 
     /** @hide */
-    public CellIdentityCdma(android.hardware.radio.V1_0.CellIdentityCdma cid) {
+    public CellIdentityCdma(@NonNull android.hardware.radio.V1_0.CellIdentityCdma cid) {
         this(cid.networkId, cid.systemId, cid.baseStationId, cid.longitude, cid.latitude, "", "");
     }
 
     /** @hide */
-    public CellIdentityCdma(android.hardware.radio.V1_2.CellIdentityCdma cid) {
+    public CellIdentityCdma(@NonNull android.hardware.radio.V1_2.CellIdentityCdma cid) {
         this(cid.base.networkId, cid.base.systemId, cid.base.baseStationId, cid.base.longitude,
                 cid.base.latitude, cid.operatorNames.alphaLong, cid.operatorNames.alphaShort);
     }
 
-    private CellIdentityCdma(CellIdentityCdma cid) {
+    private CellIdentityCdma(@NonNull CellIdentityCdma cid) {
         this(cid.mNetworkId, cid.mSystemId, cid.mBasestationId, cid.mLongitude, cid.mLatitude,
                 cid.mAlphaLong, cid.mAlphaShort);
     }
 
-    CellIdentityCdma copy() {
+    @NonNull CellIdentityCdma copy() {
         return new CellIdentityCdma(this);
     }
 
diff --git a/telephony/java/android/telephony/CellIdentityGsm.java b/telephony/java/android/telephony/CellIdentityGsm.java
index dc73cbf..9f2537c 100644
--- a/telephony/java/android/telephony/CellIdentityGsm.java
+++ b/telephony/java/android/telephony/CellIdentityGsm.java
@@ -23,6 +23,7 @@
 import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -78,26 +79,31 @@
      *
      * @hide
      */
-    public CellIdentityGsm(int lac, int cid, int arfcn, int bsic, String mccStr,
-                            String mncStr, String alphal, String alphas,
-                            List<String> additionalPlmns) {
+    public CellIdentityGsm(int lac, int cid, int arfcn, int bsic, @Nullable String mccStr,
+            @Nullable String mncStr, @Nullable String alphal, @Nullable String alphas,
+            @NonNull List<String> additionalPlmns) {
         super(TAG, CellInfo.TYPE_GSM, mccStr, mncStr, alphal, alphas);
         mLac = inRangeOrUnavailable(lac, 0, MAX_LAC);
         mCid = inRangeOrUnavailable(cid, 0, MAX_CID);
         mArfcn = inRangeOrUnavailable(arfcn, 0, MAX_ARFCN);
         mBsic = inRangeOrUnavailable(bsic, 0, MAX_BSIC);
-        mAdditionalPlmns = additionalPlmns;
+        mAdditionalPlmns = new ArrayList<>(additionalPlmns.size());
+        for (String plmn : additionalPlmns) {
+            if (isValidPlmn(plmn)) {
+                mAdditionalPlmns.add(plmn);
+            }
+        }
     }
 
     /** @hide */
-    public CellIdentityGsm(android.hardware.radio.V1_0.CellIdentityGsm cid) {
+    public CellIdentityGsm(@NonNull android.hardware.radio.V1_0.CellIdentityGsm cid) {
         this(cid.lac, cid.cid, cid.arfcn,
                 cid.bsic == (byte) 0xFF ? CellInfo.UNAVAILABLE : cid.bsic,
                 cid.mcc, cid.mnc, "", "", Collections.emptyList());
     }
 
     /** @hide */
-    public CellIdentityGsm(android.hardware.radio.V1_2.CellIdentityGsm cid) {
+    public CellIdentityGsm(@NonNull android.hardware.radio.V1_2.CellIdentityGsm cid) {
         this(cid.base.lac, cid.base.cid, cid.base.arfcn,
                 cid.base.bsic == (byte) 0xFF ? CellInfo.UNAVAILABLE : cid.base.bsic, cid.base.mcc,
                 cid.base.mnc, cid.operatorNames.alphaLong, cid.operatorNames.alphaShort,
@@ -105,7 +111,7 @@
     }
 
     /** @hide */
-    public CellIdentityGsm(android.hardware.radio.V1_5.CellIdentityGsm cid) {
+    public CellIdentityGsm(@NonNull android.hardware.radio.V1_5.CellIdentityGsm cid) {
         this(cid.base.base.lac, cid.base.base.cid, cid.base.base.arfcn,
                 cid.base.base.bsic == (byte) 0xFF ? CellInfo.UNAVAILABLE
                         : cid.base.base.bsic, cid.base.base.mcc,
@@ -113,12 +119,12 @@
                 cid.base.operatorNames.alphaShort, cid.additionalPlmns);
     }
 
-    private CellIdentityGsm(CellIdentityGsm cid) {
+    private CellIdentityGsm(@NonNull CellIdentityGsm cid) {
         this(cid.mLac, cid.mCid, cid.mArfcn, cid.mBsic, cid.mMccStr,
                 cid.mMncStr, cid.mAlphaLong, cid.mAlphaShort, cid.mAdditionalPlmns);
     }
 
-    CellIdentityGsm copy() {
+    @NonNull CellIdentityGsm copy() {
         return new CellIdentityGsm(this);
     }
 
diff --git a/telephony/java/android/telephony/CellIdentityLte.java b/telephony/java/android/telephony/CellIdentityLte.java
index cf8fe6a..a194ae3 100644
--- a/telephony/java/android/telephony/CellIdentityLte.java
+++ b/telephony/java/android/telephony/CellIdentityLte.java
@@ -24,6 +24,7 @@
 import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -104,34 +105,40 @@
      *
      * @hide
      */
-    public CellIdentityLte(int ci, int pci, int tac, int earfcn, int bandwidth, String mccStr,
-            String mncStr, String alphal, String alphas, List<String> additionalPlmns,
-            ClosedSubscriberGroupInfo csgInfo) {
+    public CellIdentityLte(int ci, int pci, int tac, int earfcn, int bandwidth,
+            @Nullable String mccStr, @Nullable String mncStr, @Nullable String alphal,
+            @Nullable String alphas, @NonNull List<String> additionalPlmns,
+            @Nullable ClosedSubscriberGroupInfo csgInfo) {
         super(TAG, CellInfo.TYPE_LTE, mccStr, mncStr, alphal, alphas);
         mCi = inRangeOrUnavailable(ci, 0, MAX_CI);
         mPci = inRangeOrUnavailable(pci, 0, MAX_PCI);
         mTac = inRangeOrUnavailable(tac, 0, MAX_TAC);
         mEarfcn = inRangeOrUnavailable(earfcn, 0, MAX_EARFCN);
         mBandwidth = inRangeOrUnavailable(bandwidth, 0, MAX_BANDWIDTH);
-        mAdditionalPlmns = additionalPlmns;
+        mAdditionalPlmns = new ArrayList<>(additionalPlmns.size());
+        for (String plmn : additionalPlmns) {
+            if (isValidPlmn(plmn)) {
+                mAdditionalPlmns.add(plmn);
+            }
+        }
         mCsgInfo = csgInfo;
     }
 
     /** @hide */
-    public CellIdentityLte(android.hardware.radio.V1_0.CellIdentityLte cid) {
+    public CellIdentityLte(@NonNull android.hardware.radio.V1_0.CellIdentityLte cid) {
         this(cid.ci, cid.pci, cid.tac, cid.earfcn,
                 CellInfo.UNAVAILABLE, cid.mcc, cid.mnc, "", "", Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityLte(android.hardware.radio.V1_2.CellIdentityLte cid) {
+    public CellIdentityLte(@NonNull android.hardware.radio.V1_2.CellIdentityLte cid) {
         this(cid.base.ci, cid.base.pci, cid.base.tac, cid.base.earfcn, cid.bandwidth,
                 cid.base.mcc, cid.base.mnc, cid.operatorNames.alphaLong,
                 cid.operatorNames.alphaShort, Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityLte(android.hardware.radio.V1_5.CellIdentityLte cid) {
+    public CellIdentityLte(@NonNull android.hardware.radio.V1_5.CellIdentityLte cid) {
         this(cid.base.base.ci, cid.base.base.pci, cid.base.base.tac, cid.base.base.earfcn,
                 cid.base.bandwidth, cid.base.base.mcc, cid.base.base.mnc,
                 cid.base.operatorNames.alphaLong, cid.base.operatorNames.alphaShort,
@@ -139,7 +146,7 @@
                         ? new ClosedSubscriberGroupInfo(cid.optionalCsgInfo.csgInfo()) : null);
     }
 
-    private CellIdentityLte(CellIdentityLte cid) {
+    private CellIdentityLte(@NonNull CellIdentityLte cid) {
         this(cid.mCi, cid.mPci, cid.mTac, cid.mEarfcn, cid.mBandwidth, cid.mMccStr,
                 cid.mMncStr, cid.mAlphaLong, cid.mAlphaShort, cid.mAdditionalPlmns, cid.mCsgInfo);
     }
@@ -152,7 +159,7 @@
                 mMccStr, mMncStr, mAlphaLong, mAlphaShort, mAdditionalPlmns, null);
     }
 
-    CellIdentityLte copy() {
+    @NonNull CellIdentityLte copy() {
         return new CellIdentityLte(this);
     }
 
diff --git a/telephony/java/android/telephony/CellIdentityNr.java b/telephony/java/android/telephony/CellIdentityNr.java
index d4f181f..a0ef5aa 100644
--- a/telephony/java/android/telephony/CellIdentityNr.java
+++ b/telephony/java/android/telephony/CellIdentityNr.java
@@ -64,26 +64,32 @@
      * @hide
      */
     public CellIdentityNr(int pci, int tac, int nrArfcn, @NgranBand List<Integer> bands,
-                          String mccStr, String mncStr, long nci, String alphal, String alphas,
-                          List<String> additionalPlmns) {
+                          @Nullable String mccStr, @Nullable String mncStr, long nci,
+                          @Nullable String alphal, @Nullable String alphas,
+                          @NonNull List<String> additionalPlmns) {
         super(TAG, CellInfo.TYPE_NR, mccStr, mncStr, alphal, alphas);
         mPci = inRangeOrUnavailable(pci, 0, MAX_PCI);
         mTac = inRangeOrUnavailable(tac, 0, MAX_TAC);
         mNrArfcn = inRangeOrUnavailable(nrArfcn, 0, MAX_NRARFCN);
         mBands = new ArrayList<>(bands);
         mNci = inRangeOrUnavailable(nci, 0, MAX_NCI);
-        mAdditionalPlmns = new ArrayList<>(additionalPlmns);
+        mAdditionalPlmns = new ArrayList<>(additionalPlmns.size());
+        for (String plmn : additionalPlmns) {
+            if (isValidPlmn(plmn)) {
+                mAdditionalPlmns.add(plmn);
+            }
+        }
     }
 
     /** @hide */
-    public CellIdentityNr(android.hardware.radio.V1_4.CellIdentityNr cid) {
+    public CellIdentityNr(@NonNull android.hardware.radio.V1_4.CellIdentityNr cid) {
         this(cid.pci, cid.tac, cid.nrarfcn, Collections.emptyList(), cid.mcc, cid.mnc, cid.nci,
                 cid.operatorNames.alphaLong, cid.operatorNames.alphaShort,
                 Collections.emptyList());
     }
 
     /** @hide */
-    public CellIdentityNr(android.hardware.radio.V1_5.CellIdentityNr cid) {
+    public CellIdentityNr(@NonNull android.hardware.radio.V1_5.CellIdentityNr cid) {
         this(cid.base.pci, cid.base.tac, cid.base.nrarfcn, cid.bands, cid.base.mcc, cid.base.mnc,
                 cid.base.nci, cid.base.operatorNames.alphaLong,
                 cid.base.operatorNames.alphaShort, cid.additionalPlmns);
diff --git a/telephony/java/android/telephony/CellIdentityTdscdma.java b/telephony/java/android/telephony/CellIdentityTdscdma.java
index 2ff351c..531487a 100644
--- a/telephony/java/android/telephony/CellIdentityTdscdma.java
+++ b/telephony/java/android/telephony/CellIdentityTdscdma.java
@@ -21,6 +21,7 @@
 import android.os.Parcel;
 import android.telephony.gsm.GsmCellLocation;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -82,39 +83,44 @@
      *
      * @hide
      */
-    public CellIdentityTdscdma(String mcc, String mnc, int lac, int cid, int cpid, int uarfcn,
-            String alphal, String alphas, @NonNull List<String> additionalPlmns,
-            ClosedSubscriberGroupInfo csgInfo) {
+    public CellIdentityTdscdma(@Nullable String mcc, @Nullable String mnc, int lac, int cid,
+            int cpid, int uarfcn, @Nullable String alphal, @Nullable String alphas,
+            @NonNull List<String> additionalPlmns, @Nullable ClosedSubscriberGroupInfo csgInfo) {
         super(TAG, CellInfo.TYPE_TDSCDMA, mcc, mnc, alphal, alphas);
         mLac = inRangeOrUnavailable(lac, 0, MAX_LAC);
         mCid = inRangeOrUnavailable(cid, 0, MAX_CID);
         mCpid = inRangeOrUnavailable(cpid, 0, MAX_CPID);
         mUarfcn = inRangeOrUnavailable(uarfcn, 0, MAX_UARFCN);
-        mAdditionalPlmns = additionalPlmns;
+        mAdditionalPlmns = new ArrayList<>(additionalPlmns.size());
+        for (String plmn : additionalPlmns) {
+            if (isValidPlmn(plmn)) {
+                mAdditionalPlmns.add(plmn);
+            }
+        }
         mCsgInfo = csgInfo;
     }
 
-    private CellIdentityTdscdma(CellIdentityTdscdma cid) {
+    private CellIdentityTdscdma(@NonNull CellIdentityTdscdma cid) {
         this(cid.mMccStr, cid.mMncStr, cid.mLac, cid.mCid,
                 cid.mCpid, cid.mUarfcn, cid.mAlphaLong,
                 cid.mAlphaShort, cid.mAdditionalPlmns, cid.mCsgInfo);
     }
 
     /** @hide */
-    public CellIdentityTdscdma(android.hardware.radio.V1_0.CellIdentityTdscdma cid) {
+    public CellIdentityTdscdma(@NonNull android.hardware.radio.V1_0.CellIdentityTdscdma cid) {
         this(cid.mcc, cid.mnc, cid.lac, cid.cid, cid.cpid, CellInfo.UNAVAILABLE, "", "",
                 Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityTdscdma(android.hardware.radio.V1_2.CellIdentityTdscdma cid) {
+    public CellIdentityTdscdma(@NonNull android.hardware.radio.V1_2.CellIdentityTdscdma cid) {
         this(cid.base.mcc, cid.base.mnc, cid.base.lac, cid.base.cid, cid.base.cpid,
                 cid.uarfcn, cid.operatorNames.alphaLong, cid.operatorNames.alphaShort,
                 Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityTdscdma(android.hardware.radio.V1_5.CellIdentityTdscdma cid) {
+    public CellIdentityTdscdma(@NonNull android.hardware.radio.V1_5.CellIdentityTdscdma cid) {
         this(cid.base.base.mcc, cid.base.base.mnc, cid.base.base.lac, cid.base.base.cid,
                 cid.base.base.cpid, cid.base.uarfcn, cid.base.operatorNames.alphaLong,
                 cid.base.operatorNames.alphaShort,
@@ -130,7 +136,7 @@
                 mAdditionalPlmns, null);
     }
 
-    CellIdentityTdscdma copy() {
+    @NonNull CellIdentityTdscdma copy() {
         return new CellIdentityTdscdma(this);
     }
 
diff --git a/telephony/java/android/telephony/CellIdentityWcdma.java b/telephony/java/android/telephony/CellIdentityWcdma.java
index 9be42a1..15e491b 100644
--- a/telephony/java/android/telephony/CellIdentityWcdma.java
+++ b/telephony/java/android/telephony/CellIdentityWcdma.java
@@ -23,6 +23,7 @@
 import android.telephony.gsm.GsmCellLocation;
 import android.text.TextUtils;
 
+import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
 import java.util.Objects;
@@ -83,34 +84,38 @@
      *
      * @hide
      */
-    public CellIdentityWcdma (int lac, int cid, int psc, int uarfcn,
-                              String mccStr, String mncStr, String alphal, String alphas,
-                              @NonNull List<String> additionalPlmns,
-                              @Nullable ClosedSubscriberGroupInfo csgInfo) {
+    public CellIdentityWcdma(int lac, int cid, int psc, int uarfcn, @Nullable String mccStr,
+            @Nullable String mncStr, @Nullable String alphal, @Nullable String alphas,
+            @NonNull List<String> additionalPlmns, @Nullable ClosedSubscriberGroupInfo csgInfo) {
         super(TAG, CellInfo.TYPE_WCDMA, mccStr, mncStr, alphal, alphas);
         mLac = inRangeOrUnavailable(lac, 0, MAX_LAC);
         mCid = inRangeOrUnavailable(cid, 0, MAX_CID);
         mPsc = inRangeOrUnavailable(psc, 0, MAX_PSC);
         mUarfcn = inRangeOrUnavailable(uarfcn, 0, MAX_UARFCN);
-        mAdditionalPlmns = additionalPlmns;
+        mAdditionalPlmns = new ArrayList<>(additionalPlmns.size());
+        for (String plmn : additionalPlmns) {
+            if (isValidPlmn(plmn)) {
+                mAdditionalPlmns.add(plmn);
+            }
+        }
         mCsgInfo = csgInfo;
     }
 
     /** @hide */
-    public CellIdentityWcdma(android.hardware.radio.V1_0.CellIdentityWcdma cid) {
+    public CellIdentityWcdma(@NonNull android.hardware.radio.V1_0.CellIdentityWcdma cid) {
         this(cid.lac, cid.cid, cid.psc, cid.uarfcn, cid.mcc, cid.mnc, "", "",
                 Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityWcdma(android.hardware.radio.V1_2.CellIdentityWcdma cid) {
+    public CellIdentityWcdma(@NonNull android.hardware.radio.V1_2.CellIdentityWcdma cid) {
         this(cid.base.lac, cid.base.cid, cid.base.psc, cid.base.uarfcn,
                 cid.base.mcc, cid.base.mnc, cid.operatorNames.alphaLong,
                 cid.operatorNames.alphaShort, Collections.emptyList(), null);
     }
 
     /** @hide */
-    public CellIdentityWcdma(android.hardware.radio.V1_5.CellIdentityWcdma cid) {
+    public CellIdentityWcdma(@NonNull android.hardware.radio.V1_5.CellIdentityWcdma cid) {
         this(cid.base.base.lac, cid.base.base.cid, cid.base.base.psc, cid.base.base.uarfcn,
                 cid.base.base.mcc, cid.base.base.mnc, cid.base.operatorNames.alphaLong,
                 cid.base.operatorNames.alphaShort, cid.additionalPlmns,
@@ -118,7 +123,7 @@
                         ? new ClosedSubscriberGroupInfo(cid.optionalCsgInfo.csgInfo()) : null);
     }
 
-    private CellIdentityWcdma(CellIdentityWcdma cid) {
+    private CellIdentityWcdma(@NonNull CellIdentityWcdma cid) {
         this(cid.mLac, cid.mCid, cid.mPsc, cid.mUarfcn, cid.mMccStr,
                 cid.mMncStr, cid.mAlphaLong, cid.mAlphaShort, cid.mAdditionalPlmns, cid.mCsgInfo);
     }
@@ -131,7 +136,7 @@
                 mAlphaLong, mAlphaShort, mAdditionalPlmns, null);
     }
 
-    CellIdentityWcdma copy() {
+    @NonNull CellIdentityWcdma copy() {
         return new CellIdentityWcdma(this);
     }
 
diff --git a/telephony/java/android/telephony/CellInfo.java b/telephony/java/android/telephony/CellInfo.java
index ec86c14..bfa209b 100644
--- a/telephony/java/android/telephony/CellInfo.java
+++ b/telephony/java/android/telephony/CellInfo.java
@@ -16,9 +16,9 @@
 
 package android.telephony;
 
+import android.annotation.ElapsedRealtimeLong;
 import android.annotation.IntDef;
 import android.annotation.NonNull;
-import android.annotation.SuppressLint;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.hardware.radio.V1_4.CellInfo.Info;
 import android.os.Parcel;
@@ -178,18 +178,18 @@
     /**
      * Approximate time this cell information was received from the modem.
      *
-     * @return a time stamp in nanos since boot.
+     * @return a time stamp in millis since boot.
      */
-    @SuppressLint("MethodNameUnits")
-    public long getTimestampNanos() {
-        return mTimeStamp;
+    @ElapsedRealtimeLong
+    public long getTimestampMillis() {
+        return mTimeStamp / 1000000;
     }
 
     /**
      * Approximate time this cell information was received from the modem.
      *
      * @return a time stamp in nanos since boot.
-     * @deprecated Use {@link #getTimestampNanos} instead.
+     * @deprecated Use {@link #getTimestampMillis} instead.
      */
     @Deprecated
     public long getTimeStamp() {
diff --git a/telephony/java/android/telephony/CellInfoCdma.java b/telephony/java/android/telephony/CellInfoCdma.java
index acb21f4..0edb4a4 100644
--- a/telephony/java/android/telephony/CellInfoCdma.java
+++ b/telephony/java/android/telephony/CellInfoCdma.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.telephony.Rlog;
+
 /**
  * A {@link CellInfo} representing a CDMA cell that provides identity and measurement info.
  */
diff --git a/telephony/java/android/telephony/CellInfoGsm.java b/telephony/java/android/telephony/CellInfoGsm.java
index 79a9d44..2dddd3f 100644
--- a/telephony/java/android/telephony/CellInfoGsm.java
+++ b/telephony/java/android/telephony/CellInfoGsm.java
@@ -16,13 +16,13 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.telephony.Rlog;
+
 /**
  * A {@link CellInfo} representing a GSM cell that provides identity and measurement info.
  */
diff --git a/telephony/java/android/telephony/CellInfoLte.java b/telephony/java/android/telephony/CellInfoLte.java
index fed3ebf..a57c7cd 100644
--- a/telephony/java/android/telephony/CellInfoLte.java
+++ b/telephony/java/android/telephony/CellInfoLte.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.telephony.Rlog;
+
 import java.util.Objects;
 
 /**
diff --git a/telephony/java/android/telephony/CellInfoTdscdma.java b/telephony/java/android/telephony/CellInfoTdscdma.java
index 58ff8c9..d2cc9c6c 100644
--- a/telephony/java/android/telephony/CellInfoTdscdma.java
+++ b/telephony/java/android/telephony/CellInfoTdscdma.java
@@ -16,12 +16,12 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.telephony.Rlog;
+
 import java.util.Objects;
 
 /**
diff --git a/telephony/java/android/telephony/CellInfoWcdma.java b/telephony/java/android/telephony/CellInfoWcdma.java
index 33f6a55..3f792d1 100644
--- a/telephony/java/android/telephony/CellInfoWcdma.java
+++ b/telephony/java/android/telephony/CellInfoWcdma.java
@@ -18,6 +18,7 @@
 
 import android.os.Parcel;
 import android.os.Parcelable;
+
 import com.android.telephony.Rlog;
 
 import java.util.Objects;
diff --git a/telephony/java/android/telephony/CellSignalStrengthCdma.java b/telephony/java/android/telephony/CellSignalStrengthCdma.java
index cab3b0c..1c92705b 100644
--- a/telephony/java/android/telephony/CellSignalStrengthCdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthCdma.java
@@ -20,6 +20,7 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
+
 import com.android.telephony.Rlog;
 
 import java.util.Objects;
diff --git a/telephony/java/android/telephony/CellSignalStrengthGsm.java b/telephony/java/android/telephony/CellSignalStrengthGsm.java
index 28052aa..76d2df9 100644
--- a/telephony/java/android/telephony/CellSignalStrengthGsm.java
+++ b/telephony/java/android/telephony/CellSignalStrengthGsm.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntRange;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
@@ -25,6 +23,8 @@
 import android.os.Parcelable;
 import android.os.PersistableBundle;
 
+import com.android.telephony.Rlog;
+
 import java.util.Objects;
 
 /**
diff --git a/telephony/java/android/telephony/CellSignalStrengthLte.java b/telephony/java/android/telephony/CellSignalStrengthLte.java
index 2ef2a52..1cd45e9 100644
--- a/telephony/java/android/telephony/CellSignalStrengthLte.java
+++ b/telephony/java/android/telephony/CellSignalStrengthLte.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntRange;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
 
+import com.android.telephony.Rlog;
+
 import java.util.Arrays;
 import java.util.Objects;
 
@@ -244,19 +244,30 @@
         } else {
             mParametersUseForLevel = cc.getInt(
                     CarrierConfigManager.KEY_PARAMETERS_USED_FOR_LTE_SIGNAL_BAR_INT);
-            Rlog.i(LOG_TAG, "Using signal strength level: " + mParametersUseForLevel);
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Using signal strength level: " + mParametersUseForLevel);
+            }
             rsrpThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_LTE_RSRP_THRESHOLDS_INT_ARRAY);
             if (rsrpThresholds == null) rsrpThresholds = sRsrpThresholds;
-            Rlog.i(LOG_TAG, "Applying LTE RSRP Thresholds: " + Arrays.toString(rsrpThresholds));
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Applying LTE RSRP Thresholds: "
+                        + Arrays.toString(rsrpThresholds));
+            }
             rsrqThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_LTE_RSRQ_THRESHOLDS_INT_ARRAY);
             if (rsrqThresholds == null) rsrqThresholds = sRsrqThresholds;
-            Rlog.i(LOG_TAG, "Applying LTE RSRQ Thresholds: " + Arrays.toString(rsrqThresholds));
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Applying LTE RSRQ Thresholds: "
+                        + Arrays.toString(rsrqThresholds));
+            }
             rssnrThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_LTE_RSSNR_THRESHOLDS_INT_ARRAY);
             if (rssnrThresholds == null) rssnrThresholds = sRssnrThresholds;
-            Rlog.i(LOG_TAG, "Applying LTE RSSNR Thresholds: " + Arrays.toString(rssnrThresholds));
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Applying LTE RSSNR Thresholds: "
+                        + Arrays.toString(rssnrThresholds));
+            }
             rsrpOnly = cc.getBoolean(
                     CarrierConfigManager.KEY_USE_ONLY_RSRP_FOR_LTE_SIGNAL_BAR_BOOL, false);
         }
@@ -283,15 +294,21 @@
 
         if (isLevelForParameter(USE_RSRP)) {
             rsrpLevel = updateLevelWithMeasure(rsrp, rsrpThresholds);
-            Rlog.i(LOG_TAG, "Updated 4G LTE RSRP Level: " + rsrpLevel);
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Updated 4G LTE RSRP Level: " + rsrpLevel);
+            }
         }
         if (isLevelForParameter(USE_RSRQ)) {
             rsrqLevel = updateLevelWithMeasure(mRsrq, rsrqThresholds);
-            Rlog.i(LOG_TAG, "Updated 4G LTE RSRQ Level: " + rsrqLevel);
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Updated 4G LTE RSRQ Level: " + rsrqLevel);
+            }
         }
         if (isLevelForParameter(USE_RSSNR)) {
             rssnrLevel = updateLevelWithMeasure(mRssnr, rssnrThresholds);
-            Rlog.i(LOG_TAG, "Updated 4G LTE RSSNR Level: " + rssnrLevel);
+            if (DBG) {
+                Rlog.i(LOG_TAG, "Updated 4G LTE RSSNR Level: " + rssnrLevel);
+            }
         }
         // Apply the smaller value among three levels of three measures.
         mLevel = Math.min(Math.min(rsrpLevel, rsrqLevel), rssnrLevel);
diff --git a/telephony/java/android/telephony/CellSignalStrengthNr.java b/telephony/java/android/telephony/CellSignalStrengthNr.java
index f4c13ff..8562df1 100644
--- a/telephony/java/android/telephony/CellSignalStrengthNr.java
+++ b/telephony/java/android/telephony/CellSignalStrengthNr.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntDef;
 import android.annotation.IntRange;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
 
+import com.android.telephony.Rlog;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Arrays;
@@ -40,6 +40,8 @@
      */
     public static final int UNKNOWN_ASU_LEVEL = 99;
 
+    private static final boolean VDBG = false;
+
     private static final String TAG = "CellSignalStrengthNr";
 
     // Lifted from Default carrier configs and max range of SSRSRP
@@ -301,31 +303,45 @@
         } else {
             mParametersUseForLevel = cc.getInt(
                     CarrierConfigManager.KEY_PARAMETERS_USE_FOR_5G_NR_SIGNAL_BAR_INT, USE_SSRSRP);
-            Rlog.i(TAG, "Using SSRSRP for Level.");
             mSsRsrpThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_5G_NR_SSRSRP_THRESHOLDS_INT_ARRAY);
-            Rlog.i(TAG, "Applying 5G NR SSRSRP Thresholds: " + Arrays.toString(mSsRsrpThresholds));
+            if (VDBG) {
+                Rlog.i(TAG, "Applying 5G NR SSRSRP Thresholds: "
+                        + Arrays.toString(mSsRsrpThresholds));
+            }
             mSsRsrqThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_5G_NR_SSRSRQ_THRESHOLDS_INT_ARRAY);
-            Rlog.i(TAG, "Applying 5G NR SSRSRQ Thresholds: " + Arrays.toString(mSsRsrqThresholds));
+            if (VDBG) {
+                Rlog.i(TAG, "Applying 5G NR SSRSRQ Thresholds: "
+                        + Arrays.toString(mSsRsrqThresholds));
+            }
             mSsSinrThresholds = cc.getIntArray(
                     CarrierConfigManager.KEY_5G_NR_SSSINR_THRESHOLDS_INT_ARRAY);
-            Rlog.i(TAG, "Applying 5G NR SSSINR Thresholds: " + Arrays.toString(mSsSinrThresholds));
+            if (VDBG) {
+                Rlog.i(TAG, "Applying 5G NR SSSINR Thresholds: "
+                        + Arrays.toString(mSsSinrThresholds));
+            }
         }
         int ssRsrpLevel = SignalStrength.INVALID;
         int ssRsrqLevel = SignalStrength.INVALID;
         int ssSinrLevel = SignalStrength.INVALID;
         if (isLevelForParameter(USE_SSRSRP)) {
             ssRsrpLevel = updateLevelWithMeasure(mSsRsrp, mSsRsrpThresholds);
-            Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel);
+            if (VDBG) {
+                Rlog.i(TAG, "Updated 5G NR SSRSRP Level: " + ssRsrpLevel);
+            }
         }
         if (isLevelForParameter(USE_SSRSRQ)) {
             ssRsrqLevel = updateLevelWithMeasure(mSsRsrq, mSsRsrqThresholds);
-            Rlog.i(TAG, "Updated 5G NR SSRSRQ Level: " + ssRsrqLevel);
+            if (VDBG) {
+                Rlog.i(TAG, "Updated 5G NR SSRSRQ Level: " + ssRsrqLevel);
+            }
         }
         if (isLevelForParameter(USE_SSSINR)) {
             ssSinrLevel = updateLevelWithMeasure(mSsSinr, mSsSinrThresholds);
-            Rlog.i(TAG, "Updated 5G NR SSSINR Level: " + ssSinrLevel);
+            if (VDBG) {
+                Rlog.i(TAG, "Updated 5G NR SSSINR Level: " + ssSinrLevel);
+            }
         }
         // Apply the smaller value among three levels of three measures.
         mLevel = Math.min(Math.min(ssRsrpLevel, ssRsrqLevel), ssSinrLevel);
diff --git a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
index 3bd9d58..e96f200 100644
--- a/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthTdscdma.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PersistableBundle;
 
+import com.android.telephony.Rlog;
+
 import java.util.Objects;
 
 /**
diff --git a/telephony/java/android/telephony/CellSignalStrengthWcdma.java b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
index 535e952..8b14b74 100644
--- a/telephony/java/android/telephony/CellSignalStrengthWcdma.java
+++ b/telephony/java/android/telephony/CellSignalStrengthWcdma.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntRange;
 import android.annotation.StringDef;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -26,6 +24,8 @@
 import android.os.PersistableBundle;
 import android.text.TextUtils;
 
+import com.android.telephony.Rlog;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.Objects;
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/telephony/java/android/telephony/DisplayInfo.aidl
similarity index 81%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to telephony/java/android/telephony/DisplayInfo.aidl
index f5e2405..861b0fe 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/telephony/java/android/telephony/DisplayInfo.aidl
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -13,7 +13,6 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
+package android.telephony;
 
-package android.app.timedetector;
-
-parcelable PhoneTimeSuggestion;
+parcelable DisplayInfo;
diff --git a/telephony/java/android/telephony/DisplayInfo.java b/telephony/java/android/telephony/DisplayInfo.java
new file mode 100644
index 0000000..d54bcf9
--- /dev/null
+++ b/telephony/java/android/telephony/DisplayInfo.java
@@ -0,0 +1,172 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package android.telephony;
+
+import android.annotation.NonNull;
+import android.os.Parcel;
+import android.os.Parcelable;
+import android.telephony.Annotation.NetworkType;
+import android.telephony.Annotation.OverrideNetworkType;
+
+import java.util.Objects;
+
+/**
+ * DisplayInfo contains telephony-related information used for display purposes only. This
+ * information is provided in accordance with carrier policy and branding preferences; it is not
+ * necessarily a precise or accurate representation of the current state and should be treated
+ * accordingly.
+ */
+public final class DisplayInfo implements Parcelable {
+    /**
+     * No override. {@link #getNetworkType()} should be used for display network
+     * type.
+     */
+    public static final int OVERRIDE_NETWORK_TYPE_NONE = 0;
+
+    /**
+     * Override network type when the device is connected to
+     * {@link TelephonyManager#NETWORK_TYPE_LTE} cellular network and is using carrier aggregation.
+     */
+    public static final int OVERRIDE_NETWORK_TYPE_LTE_CA = 1;
+
+    /**
+     * Override network type when the device is connected to advanced pro
+     * {@link TelephonyManager#NETWORK_TYPE_LTE} cellular network.
+     */
+    public static final int OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO = 2;
+
+    /**
+     * Override network type when the device is connected to
+     * {@link TelephonyManager#NETWORK_TYPE_LTE} network and has E-UTRA-NR Dual Connectivity(EN-DC)
+     * capability or is currently connected to the secondary
+     * {@link TelephonyManager#NETWORK_TYPE_NR} cellular network.
+     */
+    public static final int OVERRIDE_NETWORK_TYPE_NR_NSA = 3;
+
+    /**
+     * Override network type when the device is connected to
+     * {@link TelephonyManager#NETWORK_TYPE_LTE} network and has E-UTRA-NR Dual Connectivity(EN-DC)
+     * capability or is currently connected to the secondary
+     * {@link TelephonyManager#NETWORK_TYPE_NR} cellular network on millimeter wave bands.
+     *
+     * @see AccessNetworkConstants.NgranBands#FREQUENCY_RANGE_GROUP_2
+     */
+    public static final int OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE = 4;
+
+    @NetworkType
+    private final  int mNetworkType;
+
+    @OverrideNetworkType
+    private final  int mOverrideNetworkType;
+
+    /**
+     * Constructor
+     *
+     * @param networkType Current packet-switching cellular network type
+     * @param overrideNetworkType The override network type
+     *
+     * @hide
+     */
+    public DisplayInfo(@NetworkType int networkType, @OverrideNetworkType int overrideNetworkType) {
+        mNetworkType = networkType;
+        mOverrideNetworkType = overrideNetworkType;
+    }
+
+    /** @hide */
+    public DisplayInfo(Parcel p) {
+        mNetworkType = p.readInt();
+        mOverrideNetworkType = p.readInt();
+    }
+
+    /**
+     * Get current packet-switching cellular network type. This is the actual network type the
+     * device is camped on.
+     *
+     * @return The network type.
+     */
+    @NetworkType
+    public int getNetworkType() {
+        return mNetworkType;
+    }
+
+    /**
+     * Get the override network type. Note the override network type is for market branding
+     * or visualization purposes only. It cannot be treated as the actual network type device is
+     * camped on.
+     *
+     * @return The override network type.
+     */
+    @OverrideNetworkType
+    public int getOverrideNetworkType() {
+        return mOverrideNetworkType;
+    }
+
+    @Override
+    public void writeToParcel(@NonNull Parcel dest, int flags) {
+        dest.writeInt(mNetworkType);
+        dest.writeInt(mOverrideNetworkType);
+    }
+
+    public static final @NonNull Parcelable.Creator<DisplayInfo> CREATOR =
+            new Parcelable.Creator<DisplayInfo>() {
+                @Override
+                public DisplayInfo createFromParcel(Parcel source) {
+                    return new DisplayInfo(source);
+                }
+
+                @Override
+                public DisplayInfo[] newArray(int size) {
+                    return new DisplayInfo[size];
+                }
+            };
+
+    @Override
+    public int describeContents() {
+        return 0;
+    }
+
+    @Override
+    public boolean equals(Object o) {
+        if (this == o) return true;
+        if (o == null || getClass() != o.getClass()) return false;
+        DisplayInfo that = (DisplayInfo) o;
+        return mNetworkType == that.mNetworkType
+                && mOverrideNetworkType == that.mOverrideNetworkType;
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(mNetworkType, mOverrideNetworkType);
+    }
+
+    private static String overrideNetworkTypeToString(@OverrideNetworkType int type) {
+        switch (type) {
+            case OVERRIDE_NETWORK_TYPE_NONE: return "NONE";
+            case OVERRIDE_NETWORK_TYPE_LTE_CA: return "LTE_CA";
+            case OVERRIDE_NETWORK_TYPE_LTE_ADVANCED_PRO: return "LTE_ADV_PRO";
+            case OVERRIDE_NETWORK_TYPE_NR_NSA: return "NR_NSA";
+            case OVERRIDE_NETWORK_TYPE_NR_NSA_MMWAVE: return "NR_NSA_MMWAVE";
+            default: return "UNKNOWN";
+        }
+    }
+
+    @Override
+    public String toString() {
+        return "DisplayInfo {network=" + TelephonyManager.getNetworkTypeName(mNetworkType)
+                + ", override=" + overrideNetworkTypeToString(mOverrideNetworkType);
+    }
+}
diff --git a/telephony/java/android/telephony/ICellBroadcastService.aidl b/telephony/java/android/telephony/ICellBroadcastService.aidl
index 11263d9..4f20ed6 100644
--- a/telephony/java/android/telephony/ICellBroadcastService.aidl
+++ b/telephony/java/android/telephony/ICellBroadcastService.aidl
@@ -36,4 +36,7 @@
     /** @see android.telephony.CellBroadcastService#onCdmaScpMessage */
     oneway void handleCdmaScpMessage(int slotId, in List<CdmaSmsCbProgramData> programData,
             String originatingAddress, in RemoteCallback callback);
+
+    /** @see android.telephony.CellBroadcastService#getCellBroadcastAreaInfo */
+    CharSequence getCellBroadcastAreaInfo(int slotIndex);
 }
diff --git a/telephony/java/android/telephony/NetworkScan.java b/telephony/java/android/telephony/NetworkScan.java
index a6dedf7..adf31ed 100644
--- a/telephony/java/android/telephony/NetworkScan.java
+++ b/telephony/java/android/telephony/NetworkScan.java
@@ -16,12 +16,11 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntDef;
 import android.os.RemoteException;
 
 import com.android.internal.telephony.ITelephony;
+import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/telephony/java/android/telephony/NetworkService.java b/telephony/java/android/telephony/NetworkService.java
index 844289c..87d94bfd 100644
--- a/telephony/java/android/telephony/NetworkService.java
+++ b/telephony/java/android/telephony/NetworkService.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SdkConstant;
@@ -34,6 +32,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.telephony.Rlog;
 
 import java.util.ArrayList;
 import java.util.List;
diff --git a/telephony/java/android/telephony/NetworkServiceCallback.java b/telephony/java/android/telephony/NetworkServiceCallback.java
index 214ab41..e8e73ee 100644
--- a/telephony/java/android/telephony/NetworkServiceCallback.java
+++ b/telephony/java/android/telephony/NetworkServiceCallback.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntDef;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.os.RemoteException;
 import android.telephony.NetworkService.NetworkServiceProvider;
 
+import com.android.telephony.Rlog;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 
diff --git a/telephony/java/android/telephony/PhoneNumberUtils.java b/telephony/java/android/telephony/PhoneNumberUtils.java
index 0074772..ec99408 100644
--- a/telephony/java/android/telephony/PhoneNumberUtils.java
+++ b/telephony/java/android/telephony/PhoneNumberUtils.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
@@ -45,6 +43,7 @@
 import com.android.i18n.phonenumbers.PhoneNumberUtil;
 import com.android.i18n.phonenumbers.PhoneNumberUtil.PhoneNumberFormat;
 import com.android.i18n.phonenumbers.Phonenumber.PhoneNumber;
+import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/telephony/java/android/telephony/PreciseDataConnectionState.java b/telephony/java/android/telephony/PreciseDataConnectionState.java
index 094b8b0..708adeb 100644
--- a/telephony/java/android/telephony/PreciseDataConnectionState.java
+++ b/telephony/java/android/telephony/PreciseDataConnectionState.java
@@ -135,11 +135,12 @@
     }
 
     /**
-     * To check the SDK version for {@code PreciseDataConnectionState#getDataConnectionState}.
+     * Used for checking if the SDK version for
+     * {@code PreciseDataConnectionState#getDataConnectionState} is above Q.
      */
     @ChangeId
     @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
-    private static final long GET_DATA_CONNECTION_STATE_CODE_CHANGE = 147600208L;
+    private static final long GET_DATA_CONNECTION_STATE_R_VERSION = 148535736L;
 
     /**
      * Returns the state of data connection that supported the apn types returned by
@@ -152,7 +153,7 @@
     @SystemApi
     public @DataState int getDataConnectionState() {
         if (mState == TelephonyManager.DATA_DISCONNECTING
-                && !Compatibility.isChangeEnabled(GET_DATA_CONNECTION_STATE_CODE_CHANGE)) {
+                && !Compatibility.isChangeEnabled(GET_DATA_CONNECTION_STATE_R_VERSION)) {
             return TelephonyManager.DATA_CONNECTED;
         }
 
@@ -264,10 +265,10 @@
     /**
      * Return the APN Settings for this data connection.
      *
-     * Returns the ApnSetting that was used to configure this data connection.
+     * @return the ApnSetting that was used to configure this data connection.
      */
     // FIXME: This shouldn't be nullable; update once the ApnSetting is supplied correctly
-    @Nullable ApnSetting getApnSetting() {
+    public @Nullable ApnSetting getApnSetting() {
         return mApnSetting;
     }
 
diff --git a/telephony/java/android/telephony/PreciseDisconnectCause.java b/telephony/java/android/telephony/PreciseDisconnectCause.java
index 54980a2..250d9e8 100644
--- a/telephony/java/android/telephony/PreciseDisconnectCause.java
+++ b/telephony/java/android/telephony/PreciseDisconnectCause.java
@@ -256,337 +256,6 @@
     /** Access Blocked by CDMA network. */
     public static final int CDMA_ACCESS_BLOCKED                              = 1009;
 
-    /** Mapped from ImsReasonInfo */
-    // TODO: remove ImsReasonInfo from preciseDisconnectCause
-    /* The passed argument is an invalid */
-    /** @hide */
-    public static final int LOCAL_ILLEGAL_ARGUMENT                           = 1200;
-    // The operation is invoked in invalid call state
-    /** @hide */
-    public static final int LOCAL_ILLEGAL_STATE                              = 1201;
-    // IMS service internal error
-    /** @hide */
-    public static final int LOCAL_INTERNAL_ERROR                             = 1202;
-    // IMS service goes down (service connection is lost)
-    /** @hide */
-    public static final int LOCAL_IMS_SERVICE_DOWN                           = 1203;
-    // No pending incoming call exists
-    /** @hide */
-    public static final int LOCAL_NO_PENDING_CALL                            = 1204;
-    // Service unavailable; by power off
-    /** @hide */
-    public static final int LOCAL_POWER_OFF                                  = 1205;
-    // Service unavailable; by low battery
-    /** @hide */
-    public static final int LOCAL_LOW_BATTERY                                = 1206;
-    // Service unavailable; by out of service (data service state)
-    /** @hide */
-    public static final int LOCAL_NETWORK_NO_SERVICE                         = 1207;
-    /* Service unavailable; by no LTE coverage
-     * (VoLTE is not supported even though IMS is registered)
-     */
-    /** @hide */
-    public static final int LOCAL_NETWORK_NO_LTE_COVERAGE                    = 1208;
-    /** Service unavailable; by located in roaming area */
-    /** @hide */
-    public static final int LOCAL_NETWORK_ROAMING                            = 1209;
-    /** Service unavailable; by IP changed */
-    /** @hide */
-    public static final int LOCAL_NETWORK_IP_CHANGED                         = 1210;
-    /** Service unavailable; other */
-    /** @hide */
-    public static final int LOCAL_SERVICE_UNAVAILABLE                        = 1211;
-    /* Service unavailable; IMS connection is lost (IMS is not registered) */
-    /** @hide */
-    public static final int LOCAL_NOT_REGISTERED                             = 1212;
-    /** Max call exceeded */
-    /** @hide */
-    public static final int LOCAL_MAX_CALL_EXCEEDED                          = 1213;
-    /** Call decline */
-    /** @hide */
-    public static final int LOCAL_CALL_DECLINE                               = 1214;
-    /** SRVCC is in progress */
-    /** @hide */
-    public static final int LOCAL_CALL_VCC_ON_PROGRESSING                    = 1215;
-    /** Resource reservation is failed (QoS precondition) */
-    /** @hide */
-    public static final int LOCAL_CALL_RESOURCE_RESERVATION_FAILED           = 1216;
-    /** Retry CS call; VoLTE service can't be provided by the network or remote end
-     *  Resolve the extra code(EXTRA_CODE_CALL_RETRY_*) if the below code is set
-     *  @hide
-     */
-    public static final int LOCAL_CALL_CS_RETRY_REQUIRED                     = 1217;
-    /** Retry VoLTE call; VoLTE service can't be provided by the network temporarily */
-    /** @hide */
-    public static final int LOCAL_CALL_VOLTE_RETRY_REQUIRED                  = 1218;
-    /** IMS call is already terminated (in TERMINATED state) */
-    /** @hide */
-    public static final int LOCAL_CALL_TERMINATED                            = 1219;
-    /** Handover not feasible */
-    /** @hide */
-    public static final int LOCAL_HO_NOT_FEASIBLE                            = 1220;
-
-    /** 1xx waiting timer is expired after sending INVITE request (MO only) */
-    /** @hide */
-    public static final int TIMEOUT_1XX_WAITING                              = 1221;
-    /** User no answer during call setup operation (MO/MT)
-     *  MO : 200 OK to INVITE request is not received,
-     *  MT : No action from user after alerting the call
-     *  @hide
-     */
-    public static final int TIMEOUT_NO_ANSWER                                = 1222;
-    /** User no answer during call update operation (MO/MT)
-     *  MO : 200 OK to re-INVITE request is not received,
-     *  MT : No action from user after alerting the call
-     *  @hide
-     */
-    public static final int TIMEOUT_NO_ANSWER_CALL_UPDATE                    = 1223;
-
-    /**
-     * STATUSCODE (SIP response code) (IMS -> Telephony)
-     */
-    /** SIP request is redirected */
-    /** @hide */
-    public static final int SIP_REDIRECTED                                   = 1300;
-    /** 4xx responses */
-    /** 400 : Bad Request */
-    /** @hide */
-    public static final int SIP_BAD_REQUEST                                  = 1310;
-    /** 403 : Forbidden */
-    /** @hide */
-    public static final int SIP_FORBIDDEN                                    = 1311;
-    /** 404 : Not Found */
-    /** @hide */
-    public static final int SIP_NOT_FOUND                                    = 1312;
-    /** 415 : Unsupported Media Type
-     *  416 : Unsupported URI Scheme
-     *  420 : Bad Extension
-     */
-    /** @hide */
-    public static final int SIP_NOT_SUPPORTED                                = 1313;
-    /** 408 : Request Timeout */
-    /** @hide */
-    public static final int SIP_REQUEST_TIMEOUT                              = 1314;
-    /** 480 : Temporarily Unavailable */
-    /** @hide */
-    public static final int SIP_TEMPRARILY_UNAVAILABLE                       = 1315;
-    /** 484 : Address Incomplete */
-    /** @hide */
-    public static final int SIP_BAD_ADDRESS                                  = 1316;
-    /** 486 : Busy Here
-     *  600 : Busy Everywhere
-     */
-    /** @hide */
-    public static final int SIP_BUSY                                         = 1317;
-    /** 487 : Request Terminated */
-    /** @hide */
-    public static final int SIP_REQUEST_CANCELLED                            = 1318;
-    /** 406 : Not Acceptable
-     *  488 : Not Acceptable Here
-     *  606 : Not Acceptable
-     */
-    /** @hide */
-    public static final int SIP_NOT_ACCEPTABLE                               = 1319;
-    /** 410 : Gone
-     *  604 : Does Not Exist Anywhere
-     */
-    /** @hide */
-    public static final int SIP_NOT_REACHABLE                                = 1320;
-    /** Others */
-    /** @hide */
-    public static final int SIP_CLIENT_ERROR                                 = 1321;
-    /** 481 : Transaction Does Not Exist */
-    /** @hide */
-    public static final int SIP_TRANSACTION_DOES_NOT_EXIST                   = 1322;
-    /** 5xx responses
-     *  501 : Server Internal Error
-     */
-    /** @hide */
-    public static final int SIP_SERVER_INTERNAL_ERROR                        = 1330;
-    /** 503 : Service Unavailable */
-    /** @hide */
-    public static final int SIP_SERVICE_UNAVAILABLE                          = 1331;
-    /** 504 : Server Time-out */
-    /** @hide */
-    public static final int SIP_SERVER_TIMEOUT                               = 1332;
-    /** Others */
-    /** @hide */
-    public static final int SIP_SERVER_ERROR                                 = 1333;
-    /** 6xx responses
-     *  603 : Decline
-     */
-    /** @hide */
-    public static final int SIP_USER_REJECTED                                = 1340;
-    /** Others */
-    /** @hide */
-    public static final int SIP_GLOBAL_ERROR                                 = 1341;
-    /** Emergency failure */
-    /** @hide */
-    public static final int EMERGENCY_TEMP_FAILURE                           = 1342;
-    /** @hide */
-    public static final int EMERGENCY_PERM_FAILURE                           = 1343;
-    /** Media resource initialization failed */
-    /** @hide */
-    public static final int MEDIA_INIT_FAILED                                = 1400;
-    /** RTP timeout (no audio / video traffic in the session) */
-    /** @hide */
-    public static final int MEDIA_NO_DATA                                    = 1401;
-    /** Media is not supported; so dropped the call */
-    /** @hide */
-    public static final int MEDIA_NOT_ACCEPTABLE                             = 1402;
-    /** Unknown media related errors */
-    /** @hide */
-    public static final int MEDIA_UNSPECIFIED                                = 1403;
-    /** User triggers the call end */
-    /** @hide */
-    public static final int USER_TERMINATED                                  = 1500;
-    /** No action while an incoming call is ringing */
-    /** @hide */
-    public static final int USER_NOANSWER                                    = 1501;
-    /** User ignores an incoming call */
-    /** @hide */
-    public static final int USER_IGNORE                                      = 1502;
-    /** User declines an incoming call */
-    /** @hide */
-    public static final int USER_DECLINE                                     = 1503;
-    /** Device declines/ends a call due to low battery */
-    /** @hide */
-    public static final int LOW_BATTERY                                      = 1504;
-    /** Device declines call due to blacklisted call ID */
-    /** @hide */
-    public static final int BLACKLISTED_CALL_ID                              = 1505;
-    /** The call is terminated by the network or remote user */
-    /** @hide */
-    public static final int USER_TERMINATED_BY_REMOTE                        = 1510;
-
-    /**
-     * UT
-     */
-    /** @hide */
-    public static final int UT_NOT_SUPPORTED                                 = 1800;
-    /** @hide */
-    public static final int UT_SERVICE_UNAVAILABLE                           = 1801;
-    /** @hide */
-    public static final int UT_OPERATION_NOT_ALLOWED                         = 1802;
-    /** @hide */
-    public static final int UT_NETWORK_ERROR                                 = 1803;
-    /** @hide */
-    public static final int UT_CB_PASSWORD_MISMATCH                          = 1804;
-
-    /**
-     * ECBM
-     * @hide
-     */
-    public static final int ECBM_NOT_SUPPORTED                               = 1900;
-
-    /**
-     * Fail code used to indicate that Multi-endpoint is not supported by the Ims framework.
-     * @hide
-     */
-    public static final int MULTIENDPOINT_NOT_SUPPORTED                      = 1901;
-
-    /**
-     * CALL DROP error codes (Call could drop because of many reasons like Network not available,
-     *  handover, failed, etc)
-     */
-
-    /**
-     * CALL DROP error code for the case when a device is ePDG capable and when the user is on an
-     * active wifi call and at the edge of coverage and there is no qualified LTE network available
-     * to handover the call to. We get a handover NOT_TRIGERRED message from the modem. This error
-     * code is received as part of the handover message.
-     * @hide
-     */
-    public static final int CALL_DROP_IWLAN_TO_LTE_UNAVAILABLE               = 2000;
-
-    /**
-     * MT call has ended due to a release from the network
-     * because the call was answered elsewhere
-     * @hide
-     */
-    public static final int ANSWERED_ELSEWHERE                               = 2100;
-
-    /**
-     * For MultiEndpoint - Call Pull request has failed
-     * @hide
-     */
-    public static final int CALL_PULL_OUT_OF_SYNC                            = 2101;
-
-    /**
-     * For MultiEndpoint - Call has been pulled from primary to secondary
-     * @hide
-     */
-    public static final int CALL_PULLED                                      = 2102;
-
-    /**
-     * Supplementary services (HOLD/RESUME) failure error codes.
-     * Values for Supplemetary services failure - Failed, Cancelled and Re-Invite collision.
-     * @hide
-     */
-    public static final int SUPP_SVC_FAILED                                  = 2300;
-    /** @hide */
-    public static final int SUPP_SVC_CANCELLED                               = 2301;
-    /** @hide */
-    public static final int SUPP_SVC_REINVITE_COLLISION                      = 2302;
-
-    /**
-     * DPD Procedure received no response or send failed
-     * @hide
-     */
-    public static final int IWLAN_DPD_FAILURE                                = 2400;
-
-    /**
-     * Establishment of the ePDG Tunnel Failed
-     * @hide
-     */
-    public static final int EPDG_TUNNEL_ESTABLISH_FAILURE                    = 2500;
-
-    /**
-     * Re-keying of the ePDG Tunnel Failed; may not always result in teardown
-     * @hide
-     */
-    public static final int EPDG_TUNNEL_REKEY_FAILURE                        = 2501;
-
-    /**
-     * Connection to the packet gateway is lost
-     * @hide
-     */
-    public static final int EPDG_TUNNEL_LOST_CONNECTION                      = 2502;
-
-    /**
-     * The maximum number of calls allowed has been reached.  Used in a multi-endpoint scenario
-     * where the number of calls across all connected devices has reached the maximum.
-     * @hide
-     */
-    public static final int MAXIMUM_NUMBER_OF_CALLS_REACHED                  = 2503;
-
-    /**
-     * Similar to {@link #CODE_LOCAL_CALL_DECLINE}, except indicates that a remote device has
-     * declined the call.  Used in a multi-endpoint scenario where a remote device declined an
-     * incoming call.
-     * @hide
-     */
-    public static final int REMOTE_CALL_DECLINE                              = 2504;
-
-    /**
-     * Indicates the call was disconnected due to the user reaching their data limit.
-     * @hide
-     */
-    public static final int DATA_LIMIT_REACHED                               = 2505;
-
-    /**
-     * Indicates the call was disconnected due to the user disabling cellular data.
-     * @hide
-     */
-    public static final int DATA_DISABLED                                    = 2506;
-
-    /**
-     * Indicates a call was disconnected due to loss of wifi signal.
-     * @hide
-     */
-    public static final int WIFI_LOST                                        = 2507;
-
-
     /* OEM specific error codes. To be used by OEMs when they don't want to
        reveal error code which would be replaced by ERROR_UNSPECIFIED */
     public static final int OEM_CAUSE_1                                      = 0xf001;
diff --git a/telephony/java/android/telephony/ServiceState.java b/telephony/java/android/telephony/ServiceState.java
index 5b09cd9..a5a1ebc 100644
--- a/telephony/java/android/telephony/ServiceState.java
+++ b/telephony/java/android/telephony/ServiceState.java
@@ -1925,6 +1925,8 @@
 
     /**
      * Get the network registration state for the transport type and network domain.
+     * If multiple domains are in the input bitmask, only the first one from
+     * networkRegistrationInfo.getDomain() will be returned.
      *
      * @param domain The network {@link NetworkRegistrationInfo.Domain domain}
      * @param transportType The transport type
@@ -2072,11 +2074,18 @@
     public boolean isIwlanPreferred() {
         return mIsIwlanPreferred;
     }
-     /**
-     * @return {@code true}Returns True whenever the modem is searching for service.
-     * To check both CS and PS domain
-     */
 
+    /**
+     * This indicates whether the device is searching for service.
+     *
+     * This API reports the modem searching status for
+     * {@link AccessNetworkConstants#TRANSPORT_TYPE_WWAN} (cellular) service in either
+     * {@link NetworkRegistrationInfo#DOMAIN_CS} or {@link NetworkRegistrationInfo#DOMAIN_PS}.
+     * This API will not report searching status for
+     * {@link AccessNetworkConstants#TRANSPORT_TYPE_WLAN}.
+     *
+     * @return {@code true} whenever the modem is searching for service.
+     */
     public boolean isSearching() {
         NetworkRegistrationInfo psRegState = getNetworkRegistrationInfo(
                 NetworkRegistrationInfo.DOMAIN_PS, AccessNetworkConstants.TRANSPORT_TYPE_WWAN);
diff --git a/telephony/java/android/telephony/SignalStrength.java b/telephony/java/android/telephony/SignalStrength.java
index 5a4dac5..ad58c54 100644
--- a/telephony/java/android/telephony/SignalStrength.java
+++ b/telephony/java/android/telephony/SignalStrength.java
@@ -16,8 +16,8 @@
 
 package android.telephony;
 
+import android.annotation.ElapsedRealtimeLong;
 import android.annotation.NonNull;
-import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
@@ -79,8 +79,9 @@
     /* The type of signal measurement */
     private static final String MEASUREMENT_TYPE_RSCP = "rscp";
 
-    // timeStamp of signalStrength in nanoseconds since boot
-    private long mTimestamp = Long.MAX_VALUE;
+    // Timestamp of SignalStrength since boot
+    // Effectively final. Timestamp is set during construction of SignalStrength
+    private long mTimestampMillis;
 
     CellSignalStrengthCdma mCdma;
     CellSignalStrengthGsm mGsm;
@@ -139,7 +140,7 @@
         mTdscdma = tdscdma;
         mLte = lte;
         mNr = nr;
-        mTimestamp = SystemClock.elapsedRealtimeNanos();
+        mTimestampMillis = SystemClock.elapsedRealtime();
     }
 
     /**
@@ -274,7 +275,6 @@
         mTdscdma.updateLevel(cc, ss);
         mLte.updateLevel(cc, ss);
         mNr.updateLevel(cc, ss);
-        mTimestamp = SystemClock.elapsedRealtimeNanos();
     }
 
     /**
@@ -300,7 +300,7 @@
         mTdscdma = new CellSignalStrengthTdscdma(s.mTdscdma);
         mLte = new CellSignalStrengthLte(s.mLte);
         mNr = new CellSignalStrengthNr(s.mNr);
-        mTimestamp = s.getTimestampNanos();
+        mTimestampMillis = s.getTimestampMillis();
     }
 
     /**
@@ -318,7 +318,7 @@
         mTdscdma = in.readParcelable(CellSignalStrengthTdscdma.class.getClassLoader());
         mLte = in.readParcelable(CellSignalStrengthLte.class.getClassLoader());
         mNr = in.readParcelable(CellSignalStrengthLte.class.getClassLoader());
-        mTimestamp = in.readLong();
+        mTimestampMillis = in.readLong();
     }
 
     /**
@@ -331,15 +331,17 @@
         out.writeParcelable(mTdscdma, flags);
         out.writeParcelable(mLte, flags);
         out.writeParcelable(mNr, flags);
-        out.writeLong(mTimestamp);
+        out.writeLong(mTimestampMillis);
     }
 
     /**
-     * @return mTimestamp in nanoseconds
+     * @return timestamp in milliseconds since boot for {@link SignalStrength}.
+     * This timestamp reports the approximate time that the signal was measured and reported
+     * by the modem. It can be used to compare the recency of {@link SignalStrength} instances.
      */
-    @SuppressLint("MethodNameUnits")
-    public long getTimestampNanos() {
-        return mTimestamp;
+    @ElapsedRealtimeLong
+    public long getTimestampMillis() {
+        return mTimestampMillis;
     }
 
    /**
diff --git a/telephony/java/android/telephony/SmsCbMessage.java b/telephony/java/android/telephony/SmsCbMessage.java
index c0dfec9..752707e 100644
--- a/telephony/java/android/telephony/SmsCbMessage.java
+++ b/telephony/java/android/telephony/SmsCbMessage.java
@@ -586,6 +586,7 @@
         cv.put(CellBroadcasts.SERIAL_NUMBER, getSerialNumber());
         cv.put(CellBroadcasts.SERVICE_CATEGORY, getServiceCategory());
         cv.put(CellBroadcasts.LANGUAGE_CODE, getLanguageCode());
+        cv.put(CellBroadcasts.DATA_CODING_SCHEME, getDataCodingScheme());
         cv.put(CellBroadcasts.MESSAGE_BODY, getMessageBody());
         cv.put(CellBroadcasts.MESSAGE_FORMAT, getMessageFormat());
         cv.put(CellBroadcasts.MESSAGE_PRIORITY, getMessagePriority());
diff --git a/telephony/java/android/telephony/SmsManager.java b/telephony/java/android/telephony/SmsManager.java
index 5cd7cf8..6c920f1 100644
--- a/telephony/java/android/telephony/SmsManager.java
+++ b/telephony/java/android/telephony/SmsManager.java
@@ -801,11 +801,7 @@
                     "Invalid pdu format. format must be either 3gpp or 3gpp2");
         }
         try {
-            ISms iSms = ISms.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSmsServiceRegisterer()
-                            .get());
+            ISms iSms = TelephonyManager.getSmsService();
             if (iSms != null) {
                 iSms.injectSmsPduForSubscriber(
                         getSubscriptionId(), pdu, format, receivedIntent);
@@ -1642,7 +1638,7 @@
      * the service does not exist.
      */
     private static ISms getISmsServiceOrThrow() {
-        ISms iSms = getISmsService();
+        ISms iSms = TelephonyManager.getSmsService();
         if (iSms == null) {
             throw new UnsupportedOperationException("Sms is not supported");
         }
@@ -1650,11 +1646,7 @@
     }
 
     private static ISms getISmsService() {
-        return ISms.Stub.asInterface(
-                TelephonyFrameworkInitializer
-                        .getTelephonyServiceManager()
-                        .getSmsServiceRegisterer()
-                        .get());
+        return TelephonyManager.getSmsService();
     }
 
     /**
@@ -2091,11 +2083,7 @@
     public boolean isSMSPromptEnabled() {
         ISms iSms = null;
         try {
-            iSms = ISms.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSmsServiceRegisterer()
-                            .get());
+            iSms = TelephonyManager.getSmsService();
             return iSms.isSMSPromptEnabled();
         } catch (RemoteException ex) {
             return false;
@@ -2543,7 +2531,7 @@
         MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
         if (m != null) {
             m.sendMultimediaMessage(getSubscriptionId(), contentUri, locationUrl, configOverrides,
-                    sentIntent);
+                    sentIntent, 0L /* messageId */);
         }
     }
 
@@ -2581,7 +2569,7 @@
         MmsManager m = (MmsManager) context.getSystemService(Context.MMS_SERVICE);
         if (m != null) {
             m.downloadMultimediaMessage(getSubscriptionId(), locationUrl, contentUri,
-                    configOverrides, downloadedIntent);
+                    configOverrides, downloadedIntent, 0L /* messageId */);
         }
     }
 
diff --git a/telephony/java/android/telephony/SmsMessage.java b/telephony/java/android/telephony/SmsMessage.java
index 7a30f14..37d3d32 100644
--- a/telephony/java/android/telephony/SmsMessage.java
+++ b/telephony/java/android/telephony/SmsMessage.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import static android.telephony.TelephonyManager.PHONE_TYPE_CDMA;
 
 import android.Manifest;
@@ -40,13 +38,13 @@
 import com.android.internal.telephony.SmsMessageBase;
 import com.android.internal.telephony.SmsMessageBase.SubmitPduBase;
 import com.android.internal.telephony.cdma.sms.UserData;
+import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
 import java.util.Arrays;
 
-
 /**
  * A Short Message Service message.
  * @see android.provider.Telephony.Sms.Intents#getMessagesFromIntent
@@ -629,7 +627,7 @@
                     destinationAddress, message, statusReportRequested);
         }
 
-        return new SubmitPdu(spb);
+        return spb != null ? new SubmitPdu(spb) : null;
     }
 
     /**
@@ -657,7 +655,7 @@
                     destinationAddress, destinationPort, data, statusReportRequested);
         }
 
-        return new SubmitPdu(spb);
+        return spb != null ? new SubmitPdu(spb) : null;
     }
 
     // TODO: SubmitPdu class is used for SMS-DELIVER also now. Refactor for SubmitPdu and new
diff --git a/telephony/java/android/telephony/SubscriptionInfo.java b/telephony/java/android/telephony/SubscriptionInfo.java
index c24eeb7..832771d 100644
--- a/telephony/java/android/telephony/SubscriptionInfo.java
+++ b/telephony/java/android/telephony/SubscriptionInfo.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -40,6 +38,7 @@
 import android.util.Log;
 
 import com.android.internal.telephony.util.TelephonyUtils;
+import com.android.telephony.Rlog;
 
 import java.util.ArrayList;
 import java.util.Arrays;
diff --git a/telephony/java/android/telephony/SubscriptionManager.java b/telephony/java/android/telephony/SubscriptionManager.java
index 4da3a54..b32e9d7 100644
--- a/telephony/java/android/telephony/SubscriptionManager.java
+++ b/telephony/java/android/telephony/SubscriptionManager.java
@@ -33,7 +33,6 @@
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.annotation.TestApi;
-import android.app.BroadcastOptions;
 import android.app.PendingIntent;
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.Context;
@@ -43,7 +42,6 @@
 import android.content.res.Configuration;
 import android.content.res.Resources;
 import android.database.ContentObserver;
-import android.net.INetworkPolicyManager;
 import android.net.NetworkCapabilities;
 import android.net.NetworkPolicyManager;
 import android.net.Uri;
@@ -54,11 +52,9 @@
 import android.os.ParcelUuid;
 import android.os.Process;
 import android.os.RemoteException;
-import android.os.ServiceManager;
 import android.provider.Telephony.SimInfo;
 import android.telephony.euicc.EuiccManager;
 import android.telephony.ims.ImsMmTelManager;
-import android.util.DisplayMetrics;
 import android.util.Log;
 import android.util.Pair;
 
@@ -80,7 +76,6 @@
 import java.util.Map;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.Executor;
-import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 import java.util.stream.Collectors;
 
@@ -882,7 +877,6 @@
     public static final String EXTRA_SLOT_INDEX = "android.telephony.extra.SLOT_INDEX";
 
     private final Context mContext;
-    private volatile INetworkPolicyManager mNetworkPolicy;
 
     // Cache of Resource that has been created in getResourcesForSubId. Key is a Pair containing
     // the Context and subId.
@@ -974,14 +968,6 @@
                 .getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE);
     }
 
-    private INetworkPolicyManager getINetworkPolicyManager() {
-        if (mNetworkPolicy == null) {
-            mNetworkPolicy = INetworkPolicyManager.Stub.asInterface(
-                    ServiceManager.getService(Context.NETWORK_POLICY_SERVICE));
-        }
-        return mNetworkPolicy;
-    }
-
     /**
      * Register for changes to the list of active {@link SubscriptionInfo} records or to the
      * individual records themselves. When a change occurs the onSubscriptionsChanged method of
@@ -1155,11 +1141,7 @@
         SubscriptionInfo subInfo = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subInfo = iSub.getActiveSubscriptionInfo(subId, mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1193,11 +1175,7 @@
         SubscriptionInfo result = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getActiveSubscriptionInfoForIccId(iccId, mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1231,11 +1209,7 @@
         SubscriptionInfo result = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getActiveSubscriptionInfoForSimSlotIndex(slotIndex,
                         mContext.getOpPackageName(), mContext.getFeatureId());
@@ -1259,11 +1233,7 @@
         List<SubscriptionInfo> result = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getAllSubInfoList(mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1344,11 +1314,7 @@
         List<SubscriptionInfo> activeList = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 activeList = iSub.getActiveSubscriptionInfoList(mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1399,11 +1365,7 @@
         List<SubscriptionInfo> result = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getAvailableSubscriptionInfoList(mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1442,11 +1404,7 @@
         List<SubscriptionInfo> result = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getAccessibleSubscriptionInfoList(mContext.getOpPackageName());
             }
@@ -1475,11 +1433,7 @@
     public void requestEmbeddedSubscriptionInfoListRefresh() {
         int cardId = TelephonyManager.from(mContext).getCardIdForDefaultEuicc();
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.requestEmbeddedSubscriptionInfoListRefresh(cardId);
             }
@@ -1508,11 +1462,7 @@
     @SystemApi
     public void requestEmbeddedSubscriptionInfoListRefresh(int cardId) {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.requestEmbeddedSubscriptionInfoListRefresh(cardId);
             }
@@ -1533,11 +1483,7 @@
         int result = 0;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getAllSubInfoCount(mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1566,11 +1512,7 @@
         int result = 0;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getActiveSubInfoCount(mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -1591,11 +1533,7 @@
         int result = 0;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getActiveSubInfoCountMax();
             }
@@ -1652,11 +1590,7 @@
         }
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub == null) {
                 Log.e(LOG_TAG, "[addSubscriptionInfoRecord]- ISub service is null");
                 return;
@@ -1690,11 +1624,7 @@
         }
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub == null) {
                 Log.e(LOG_TAG, "[removeSubscriptionInfoRecord]- ISub service is null");
                 return;
@@ -1797,11 +1727,7 @@
         int result = INVALID_SIM_SLOT_INDEX;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getSlotIndex(subscriptionId);
             }
@@ -1835,11 +1761,7 @@
         int[] subId = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getSubId(slotIndex);
             }
@@ -1863,11 +1785,7 @@
         int result = INVALID_PHONE_INDEX;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getPhoneId(subId);
             }
@@ -1901,11 +1819,7 @@
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getDefaultSubId();
             }
@@ -1928,11 +1842,7 @@
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getDefaultVoiceSubId();
             }
@@ -1962,11 +1872,7 @@
     public void setDefaultVoiceSubscriptionId(int subscriptionId) {
         if (VDBG) logd("setDefaultVoiceSubId sub id = " + subscriptionId);
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.setDefaultVoiceSubId(subscriptionId);
             }
@@ -2014,11 +1920,7 @@
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getDefaultSmsSubId();
             }
@@ -2044,11 +1946,7 @@
     public void setDefaultSmsSubId(int subscriptionId) {
         if (VDBG) logd("setDefaultSmsSubId sub id = " + subscriptionId);
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.setDefaultSmsSubId(subscriptionId);
             }
@@ -2086,11 +1984,7 @@
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getDefaultDataSubId();
             }
@@ -2116,11 +2010,7 @@
     public void setDefaultDataSubId(int subscriptionId) {
         if (VDBG) logd("setDataSubscription sub id = " + subscriptionId);
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.setDefaultDataSubId(subscriptionId);
             }
@@ -2151,11 +2041,7 @@
     /** @hide */
     public void clearSubscriptionInfo() {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.clearSubInfo();
             }
@@ -2291,11 +2177,7 @@
      */
     public @NonNull int[] getActiveSubscriptionIdList(boolean visibleOnly) {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 int[] subId = iSub.getActiveSubIdList(visibleOnly);
                 if (subId != null) return subId;
@@ -2346,11 +2228,7 @@
         int simState = TelephonyManager.SIM_STATE_UNKNOWN;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 simState = iSub.getSimStateForSlotIndex(slotIndex);
             }
@@ -2369,11 +2247,7 @@
      */
     public static void setSubscriptionProperty(int subId, String propKey, String propValue) {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.setSubscriptionProperty(subId, propKey, propValue);
             }
@@ -2393,11 +2267,7 @@
             Context context) {
         String resultValue = null;
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 resultValue = iSub.getSubscriptionProperty(subId, propKey,
                         context.getOpPackageName(), context.getFeatureId());
@@ -2513,23 +2383,24 @@
         final SubscriptionInfo subInfo =
                 SubscriptionManager.from(context).getActiveSubscriptionInfo(subId);
 
-        Configuration config = context.getResources().getConfiguration();
-        Configuration newConfig = new Configuration();
-        newConfig.setTo(config);
+        Configuration overrideConfig = new Configuration();
         if (subInfo != null) {
-            newConfig.mcc = subInfo.getMcc();
-            newConfig.mnc = subInfo.getMnc();
-            if (newConfig.mnc == 0) newConfig.mnc = Configuration.MNC_ZERO;
+            overrideConfig.mcc = subInfo.getMcc();
+            overrideConfig.mnc = subInfo.getMnc();
+            if (overrideConfig.mnc == 0) overrideConfig.mnc = Configuration.MNC_ZERO;
         }
 
         if (useRootLocale) {
-            newConfig.setLocale(Locale.ROOT);
+            overrideConfig.setLocale(Locale.ROOT);
         }
 
-        DisplayMetrics metrics = context.getResources().getDisplayMetrics();
-        DisplayMetrics newMetrics = new DisplayMetrics();
-        newMetrics.setTo(metrics);
-        Resources res = new Resources(context.getResources().getAssets(), newMetrics, newConfig);
+        // Create new context with new configuration so that we can avoid modifying the passed in
+        // context.
+        // Note that if the original context configuration changes, the resources here will also
+        // change for all values except those overridden by newConfig (e.g. if the device has an
+        // orientation change).
+        Context newContext = context.createConfigurationContext(overrideConfig);
+        Resources res = newContext.getResources();
 
         if (cacheKey != null) {
             // Save the newly created Resources in the resource cache.
@@ -2560,11 +2431,7 @@
     @UnsupportedAppUsage
     public boolean isActiveSubId(int subId) {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 return iSub.isActiveSubId(subId, mContext.getOpPackageName(),
                         mContext.getFeatureId());
@@ -2624,15 +2491,6 @@
                 plans.toArray(new SubscriptionPlan[plans.size()]), mContext.getOpPackageName());
     }
 
-    /** @hide */
-    private String getSubscriptionPlansOwner(int subId) {
-        try {
-            return getINetworkPolicyManager().getSubscriptionPlansOwner(subId);
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
     /**
      * Temporarily override the billing relationship plan between a carrier and
      * a specific subscriber to be considered unmetered. This will be reflected
@@ -2696,89 +2554,6 @@
     }
 
     /**
-     * Create an {@link Intent} that can be launched towards the carrier app
-     * that is currently defining the billing relationship plan through
-     * {@link #setSubscriptionPlans(int, List)}.
-     *
-     * @return ready to launch Intent targeted towards the carrier app, or
-     *         {@code null} if no carrier app is defined, or if the defined
-     *         carrier app provides no management activity.
-     * @hide
-     */
-    public @Nullable Intent createManageSubscriptionIntent(int subId) {
-        // Bail if no owner
-        final String owner = getSubscriptionPlansOwner(subId);
-        if (owner == null) return null;
-
-        // Bail if no plans
-        final List<SubscriptionPlan> plans = getSubscriptionPlans(subId);
-        if (plans.isEmpty()) return null;
-
-        final Intent intent = new Intent(ACTION_MANAGE_SUBSCRIPTION_PLANS);
-        intent.setPackage(owner);
-        intent.putExtra(EXTRA_SUBSCRIPTION_INDEX, subId);
-
-        // Bail if not implemented
-        if (mContext.getPackageManager().queryIntentActivities(intent,
-                PackageManager.MATCH_DEFAULT_ONLY).isEmpty()) {
-            return null;
-        }
-
-        return intent;
-    }
-
-    /** @hide */
-    private @Nullable Intent createRefreshSubscriptionIntent(int subId) {
-        // Bail if no owner
-        final String owner = getSubscriptionPlansOwner(subId);
-        if (owner == null) return null;
-
-        // Bail if no plans
-        final List<SubscriptionPlan> plans = getSubscriptionPlans(subId);
-        if (plans.isEmpty()) return null;
-
-        final Intent intent = new Intent(ACTION_REFRESH_SUBSCRIPTION_PLANS);
-        intent.addFlags(Intent.FLAG_RECEIVER_FOREGROUND);
-        intent.setPackage(owner);
-        intent.putExtra(EXTRA_SUBSCRIPTION_INDEX, subId);
-
-        // Bail if not implemented
-        if (mContext.getPackageManager().queryBroadcastReceivers(intent, 0).isEmpty()) {
-            return null;
-        }
-
-        return intent;
-    }
-
-    /**
-     * Check if there is a carrier app that is currently defining the billing
-     * relationship plan through {@link #setSubscriptionPlans(int, List)} that
-     * supports refreshing of subscription plans.
-     *
-     * @hide
-     */
-    public boolean isSubscriptionPlansRefreshSupported(int subId) {
-        return createRefreshSubscriptionIntent(subId) != null;
-    }
-
-    /**
-     * Request that the carrier app that is currently defining the billing
-     * relationship plan through {@link #setSubscriptionPlans(int, List)}
-     * refresh its subscription plans.
-     * <p>
-     * If the app is able to successfully update the plans, you'll expect to
-     * receive the {@link #ACTION_SUBSCRIPTION_PLANS_CHANGED} broadcast.
-     *
-     * @hide
-     */
-    public void requestSubscriptionPlansRefresh(int subId) {
-        final Intent intent = createRefreshSubscriptionIntent(subId);
-        final BroadcastOptions options = BroadcastOptions.makeBasic();
-        options.setTemporaryAppWhitelistDuration(TimeUnit.MINUTES.toMillis(1));
-        mContext.sendBroadcast(intent, null, options.toBundle());
-    }
-
-    /**
      * Checks whether the app with the given context is authorized to manage the given subscription
      * according to its metadata.
      *
@@ -2852,11 +2627,7 @@
             @TelephonyManager.SetOpportunisticSubscriptionResult Consumer<Integer> callback) {
         if (VDBG) logd("[setPreferredDataSubscriptionId]+ subId:" + subId);
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub == null) return;
 
             ISetOpportunisticDataCallback callbackStub = new ISetOpportunisticDataCallback.Stub() {
@@ -2899,11 +2670,7 @@
     public int getPreferredDataSubscriptionId() {
         int preferredSubId = SubscriptionManager.DEFAULT_SUBSCRIPTION_ID;
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 preferredSubId = iSub.getPreferredDataSubscriptionId();
             }
@@ -2934,11 +2701,7 @@
         List<SubscriptionInfo> subInfoList = null;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subInfoList = iSub.getOpportunisticSubscriptions(contextPkg, contextFeature);
             }
@@ -3039,11 +2802,7 @@
         ParcelUuid groupUuid = null;
         int[] subIdArray = subIdList.stream().mapToInt(i->i).toArray();
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 groupUuid = iSub.createSubscriptionGroup(subIdArray, pkgForDebug);
             } else {
@@ -3093,11 +2852,7 @@
         int[] subIdArray = subIdList.stream().mapToInt(i->i).toArray();
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.addSubscriptionsIntoGroup(subIdArray, groupUuid, pkgForDebug);
             } else {
@@ -3149,11 +2904,7 @@
         int[] subIdArray = subIdList.stream().mapToInt(i->i).toArray();
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 iSub.removeSubscriptionsFromGroup(subIdArray, groupUuid, pkgForDebug);
             } else {
@@ -3198,11 +2949,7 @@
 
         List<SubscriptionInfo> result = null;
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = iSub.getSubscriptionsInGroup(groupUuid, contextPkg, contextFeature);
             } else {
@@ -3315,11 +3062,7 @@
             logd("setSubscriptionActivated subId= " + subscriptionId + " enable " + enable);
         }
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 return iSub.setSubscriptionEnabled(enable, subscriptionId);
             }
@@ -3408,11 +3151,7 @@
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public boolean isSubscriptionEnabled(int subscriptionId) {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 return iSub.isSubscriptionEnabled(subscriptionId);
             }
@@ -3435,11 +3174,7 @@
         int subId = INVALID_SUBSCRIPTION_ID;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 subId = iSub.getEnabledSubscriptionId(slotIndex);
             }
@@ -3465,11 +3200,7 @@
         int result = 0;
 
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 result = helper.callMethod(iSub);
             }
@@ -3492,11 +3223,7 @@
      */
     public static int getActiveDataSubscriptionId() {
         try {
-            ISub iSub = ISub.Stub.asInterface(
-                    TelephonyFrameworkInitializer
-                            .getTelephonyServiceManager()
-                            .getSubscriptionServiceRegisterer()
-                            .get());
+            ISub iSub = TelephonyManager.getSubscriptionService();
             if (iSub != null) {
                 return iSub.getActiveDataSubscriptionId();
             }
diff --git a/telephony/java/android/telephony/TelephonyManager.java b/telephony/java/android/telephony/TelephonyManager.java
index 26dc5f0..15103bf 100644
--- a/telephony/java/android/telephony/TelephonyManager.java
+++ b/telephony/java/android/telephony/TelephonyManager.java
@@ -54,6 +54,7 @@
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Handler;
+import android.os.IBinder;
 import android.os.PersistableBundle;
 import android.os.Process;
 import android.os.RemoteException;
@@ -93,6 +94,7 @@
 import android.util.Pair;
 
 import com.android.ims.internal.IImsServiceFeatureCallback;
+import com.android.internal.annotations.GuardedBy;
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.telephony.CellNetworkScanResult;
 import com.android.internal.telephony.IBooleanConsumer;
@@ -100,6 +102,8 @@
 import com.android.internal.telephony.IOns;
 import com.android.internal.telephony.IPhoneSubInfo;
 import com.android.internal.telephony.ISetOpportunisticDataCallback;
+import com.android.internal.telephony.ISms;
+import com.android.internal.telephony.ISub;
 import com.android.internal.telephony.ITelephony;
 import com.android.internal.telephony.IUpdateAvailableNetworksCallback;
 import com.android.internal.telephony.OperatorInfo;
@@ -295,6 +299,21 @@
     private SubscriptionManager mSubscriptionManager;
     private TelephonyScanManager mTelephonyScanManager;
 
+    /** Cached service handles, cleared by resetServiceHandles() at death */
+    private static final Object sCacheLock = new Object();
+
+    /** @hide */
+    private static boolean sServiceHandleCacheEnabled = true;
+
+    @GuardedBy("sCacheLock")
+    private static IPhoneSubInfo sIPhoneSubInfo;
+    @GuardedBy("sCacheLock")
+    private static ISub sISub;
+    @GuardedBy("sCacheLock")
+    private static ISms sISms;
+    @GuardedBy("sCacheLock")
+    private static final DeathRecipient sServiceDeath = new DeathRecipient();
+
     /** Enum indicating multisim variants
      *  DSDS - Dual SIM Dual Standby
      *  DSDA - Dual SIM Dual Active
@@ -1991,7 +2010,7 @@
     public String getDeviceId(int slotIndex) {
         // FIXME this assumes phoneId == slotIndex
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getDeviceIdForPhone(slotIndex, mContext.getOpPackageName(),
@@ -2245,7 +2264,7 @@
 
     private String getNaiBySubscriberId(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             String nai = info.getNaiForSubscriber(subId, mContext.getOpPackageName(),
@@ -3944,7 +3963,7 @@
     @UnsupportedAppUsage
     public String getSimSerialNumber(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getIccSerialNumberForSubscriber(subId, mContext.getOpPackageName(),
@@ -4217,7 +4236,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
     public String getSubscriberId(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getSubscriberIdForSubscriber(subId, mContext.getOpPackageName(),
@@ -4253,7 +4272,7 @@
     @Nullable
     public ImsiEncryptionInfo getCarrierInfoForImsiEncryption(@KeyType int keyType) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null) {
                 Rlog.e(TAG,"IMSI error: Subscriber Info is null");
                 return null;
@@ -4296,7 +4315,7 @@
     @SystemApi
     public void resetCarrierKeysForImsiEncryption() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null) {
                 Rlog.e(TAG, "IMSI error: Subscriber Info is null");
                 if (!isSystemProcess()) {
@@ -4361,7 +4380,7 @@
      */
     public void setCarrierInfoForImsiEncryption(ImsiEncryptionInfo imsiEncryptionInfo) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null) return;
             info.setCarrierInfoForImsiEncryption(mSubId, mContext.getOpPackageName(),
                     imsiEncryptionInfo);
@@ -4385,7 +4404,7 @@
     @RequiresPermission(android.Manifest.permission.READ_PHONE_STATE)
     public String getGroupIdLevel1() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getGroupIdLevel1ForSubscriber(getSubId(), mContext.getOpPackageName(),
@@ -4409,7 +4428,7 @@
     @UnsupportedAppUsage
     public String getGroupIdLevel1(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getGroupIdLevel1ForSubscriber(subId, mContext.getOpPackageName(),
@@ -4472,7 +4491,7 @@
             return number;
         }
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getLine1NumberForSubscriber(subId, mContext.getOpPackageName(),
@@ -4563,7 +4582,7 @@
             return alphaTag;
         }
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getLine1AlphaTagForSubscriber(subId, getOpPackageName(),
@@ -4651,7 +4670,7 @@
     @UnsupportedAppUsage(maxTargetSdk = Build.VERSION_CODES.P)
     public String getMsisdn(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getMsisdnForSubscriber(subId, getOpPackageName(), getFeatureId());
@@ -4685,7 +4704,7 @@
     @UnsupportedAppUsage
     public String getVoiceMailNumber(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getVoiceMailNumberForSubscriber(subId, getOpPackageName(),
@@ -5284,7 +5303,7 @@
     @UnsupportedAppUsage
     public String getVoiceMailAlphaTag(int subId) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getVoiceMailAlphaTagForSubscriber(subId, getOpPackageName(),
@@ -5332,7 +5351,7 @@
     @UnsupportedAppUsage
     public String getIsimImpi() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             //get the Isim Impi based on subId
@@ -5359,7 +5378,7 @@
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public String getIsimDomain() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             //get the Isim Domain based on subId
@@ -5383,7 +5402,7 @@
     @RequiresPermission(android.Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public String[] getIsimImpu() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             //get the Isim Impu based on subId
@@ -5396,19 +5415,6 @@
         }
     }
 
-   /**
-    * @hide
-    */
-    @UnsupportedAppUsage
-    private IPhoneSubInfo getSubscriberInfo() {
-        // get it each time because that process crashes a lot
-        return IPhoneSubInfo.Stub.asInterface(
-                TelephonyFrameworkInitializer
-                        .getTelephonyServiceManager()
-                        .getPhoneSubServiceRegisterer()
-                        .get());
-    }
-
     /**
      * Device call state: No activity.
      */
@@ -5465,6 +5471,14 @@
     }
 
     /**
+    * @hide
+    */
+    @UnsupportedAppUsage
+    private IPhoneSubInfo getSubscriberInfo() {
+        return getSubscriberInfoService();
+    }
+
+    /**
      * Returns the Telephony call state for calls on a specific SIM slot.
      * <p>
      * Note: This method considers ONLY telephony/mobile calls, where {@link #getCallState()}
@@ -5562,11 +5576,11 @@
     public static final int DATA_DISCONNECTING = 4;
 
     /**
-     * To check the SDK version for {@link TelephonyManager#getDataState}.
+     * Used for checking if the SDK version for {@link TelephonyManager#getDataState} is above Q.
      */
     @ChangeId
     @EnabledAfter(targetSdkVersion = Build.VERSION_CODES.Q)
-    private static final long GET_DATA_STATE_CODE_CHANGE = 147600208L;
+    private static final long GET_DATA_STATE_R_VERSION = 148534348L;
 
     /**
      * Returns a constant indicating the current data connection state
@@ -5586,7 +5600,7 @@
             int state = telephony.getDataStateForSubId(
                     getSubId(SubscriptionManager.getActiveDataSubscriptionId()));
             if (state == TelephonyManager.DATA_DISCONNECTING
-                    && !Compatibility.isChangeEnabled(GET_DATA_STATE_CODE_CHANGE)) {
+                    && !Compatibility.isChangeEnabled(GET_DATA_STATE_R_VERSION)) {
                 return TelephonyManager.DATA_CONNECTED;
             }
 
@@ -7124,7 +7138,7 @@
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public String getIsimIst() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             //get the Isim Ist based on subId
@@ -7146,7 +7160,7 @@
     @UnsupportedAppUsage
     public String[] getIsimPcscf() {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             //get the Isim Pcscf based on subId
@@ -7227,7 +7241,7 @@
     @UnsupportedAppUsage
     public String getIccAuthentication(int subId, int appType, int authType, String data) {
         try {
-            IPhoneSubInfo info = getSubscriberInfo();
+            IPhoneSubInfo info = getSubscriberInfoService();
             if (info == null)
                 return null;
             return info.getIccSimChallengeResponse(subId, appType, authType, data);
@@ -7761,9 +7775,8 @@
      *
      * @hide
      */
-    @SystemApi
     public static final int DEFAULT_PREFERRED_NETWORK_MODE =
-            RILConstants.DEFAULT_PREFERRED_NETWORK_MODE;
+            RILConstants.PREFERRED_NETWORK_MODE;
 
     /**
      * Get the preferred network type.
@@ -11290,14 +11303,6 @@
      */
     public static final int INDICATION_UPDATE_MODE_IGNORE_SCREEN_OFF        = 2;
 
-    /** @hide */
-    @IntDef(prefix = { "INDICATION_UPDATE_MODE_" }, value = {
-            INDICATION_UPDATE_MODE_NORMAL,
-            INDICATION_UPDATE_MODE_IGNORE_SCREEN_OFF
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface IndicationUpdateMode{}
-
     /**
      * The indication for signal strength update.
      * @hide
@@ -11328,51 +11333,6 @@
      */
     public static final int INDICATION_FILTER_PHYSICAL_CHANNEL_CONFIG       = 0x10;
 
-    /** @hide */
-    @IntDef(flag = true, prefix = { "INDICATION_FILTER_" }, value = {
-            INDICATION_FILTER_SIGNAL_STRENGTH,
-            INDICATION_FILTER_FULL_NETWORK_STATE,
-            INDICATION_FILTER_DATA_CALL_DORMANCY_CHANGED,
-            INDICATION_FILTER_LINK_CAPACITY_ESTIMATE,
-            INDICATION_FILTER_PHYSICAL_CHANNEL_CONFIG
-    })
-    @Retention(RetentionPolicy.SOURCE)
-    public @interface IndicationFilters{}
-
-    /**
-     * Sets radio indication update mode. This can be used to control the behavior of indication
-     * update from modem to Android frameworks. For example, by default several indication updates
-     * are turned off when screen is off, but in some special cases (e.g. carkit is connected but
-     * screen is off) we want to turn on those indications even when the screen is off.
-     *
-     * <p>Requires Permission:
-     *   {@link android.Manifest.permission#MODIFY_PHONE_STATE MODIFY_PHONE_STATE}
-     *
-     * @param filters Indication filters. Should be a bitmask of INDICATION_FILTER_XXX.
-     * @see #INDICATION_FILTER_SIGNAL_STRENGTH
-     * @see #INDICATION_FILTER_FULL_NETWORK_STATE
-     * @see #INDICATION_FILTER_DATA_CALL_DORMANCY_CHANGED
-     * @param updateMode The voice activation state
-     * @see #INDICATION_UPDATE_MODE_NORMAL
-     * @see #INDICATION_UPDATE_MODE_IGNORE_SCREEN_OFF
-     * @hide
-     */
-    @RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
-    public void setRadioIndicationUpdateMode(@IndicationFilters int filters,
-                                             @IndicationUpdateMode int updateMode) {
-        try {
-            ITelephony telephony = getITelephony();
-            if (telephony != null) {
-                telephony.setRadioIndicationUpdateMode(getSubId(), filters, updateMode);
-            }
-        } catch (RemoteException ex) {
-            // This could happen if binder process crashes.
-            if (!isSystemProcess()) {
-                ex.rethrowAsRuntimeException();
-            }
-        }
-    }
-
     /**
      * A test API to override carrier information including mccmnc, imsi, iccid, gid1, gid2,
      * plmn and spn. This would be handy for, eg, forcing a particular carrier id, carrier's config
@@ -13140,4 +13100,153 @@
             throw e.rethrowFromSystemServer();
         }
     }
+
+    private static class DeathRecipient implements IBinder.DeathRecipient {
+        @Override
+        public void binderDied() {
+            resetServiceCache();
+        }
+    }
+
+   /**
+    * Reset everything in the service cache; if one handle died then they are
+    * all probably broken.
+    * @hide
+    */
+    private static void resetServiceCache() {
+        synchronized (sCacheLock) {
+            if (sISub != null) {
+                sISub.asBinder().unlinkToDeath(sServiceDeath, 0);
+                sISub = null;
+            }
+            if (sISms != null) {
+                sISms.asBinder().unlinkToDeath(sServiceDeath, 0);
+                sISms = null;
+            }
+            if (sIPhoneSubInfo != null) {
+                sIPhoneSubInfo.asBinder().unlinkToDeath(sServiceDeath, 0);
+                sIPhoneSubInfo = null;
+            }
+        }
+    }
+
+   /**
+    * @hide
+    */
+    static IPhoneSubInfo getSubscriberInfoService() {
+        // Keeps cache disabled until test fixes are checked into AOSP.
+        if (true) {
+            return IPhoneSubInfo.Stub.asInterface(
+                TelephonyFrameworkInitializer
+                        .getTelephonyServiceManager()
+                        .getPhoneSubServiceRegisterer()
+                        .get());
+        }
+
+        if (sIPhoneSubInfo == null) {
+            IPhoneSubInfo temp = IPhoneSubInfo.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                        .getTelephonyServiceManager()
+                        .getPhoneSubServiceRegisterer()
+                        .get());
+            synchronized (sCacheLock) {
+                if (sIPhoneSubInfo == null && temp != null) {
+                    try {
+                        sIPhoneSubInfo = temp;
+                        sIPhoneSubInfo.asBinder().linkToDeath(sServiceDeath, 0);
+                    } catch (Exception e) {
+                        // something has gone horribly wrong
+                        sIPhoneSubInfo = null;
+                    }
+                }
+            }
+        }
+        return sIPhoneSubInfo;
+    }
+
+   /**
+    * @hide
+    */
+    static ISub getSubscriptionService() {
+        // Keeps cache disabled until test fixes are checked into AOSP.
+        if (true) {
+            return ISub.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getSubscriptionServiceRegisterer()
+                            .get());
+        }
+
+        if (sISub == null) {
+            ISub temp = ISub.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getSubscriptionServiceRegisterer()
+                            .get());
+            synchronized (sCacheLock) {
+                if (sISub == null && temp != null) {
+                    try {
+                        sISub = temp;
+                        sISub.asBinder().linkToDeath(sServiceDeath, 0);
+                    } catch (Exception e) {
+                        // something has gone horribly wrong
+                        sISub = null;
+                    }
+                }
+            }
+        }
+        return sISub;
+    }
+
+    /**
+    * @hide
+    */
+    static ISms getSmsService() {
+        // Keeps cache disabled until test fixes are checked into AOSP.
+        if (true) {
+            return ISms.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getSmsServiceRegisterer()
+                            .get());
+        }
+
+        if (sISms == null) {
+            ISms temp = ISms.Stub.asInterface(
+                    TelephonyFrameworkInitializer
+                            .getTelephonyServiceManager()
+                            .getSmsServiceRegisterer()
+                            .get());
+            synchronized (sCacheLock) {
+                if (sISms == null && temp != null) {
+                    try {
+                        sISms = temp;
+                        sISms.asBinder().linkToDeath(sServiceDeath, 0);
+                    } catch (Exception e) {
+                        // something has gone horribly wrong
+                        sISms = null;
+                    }
+                }
+            }
+        }
+        return sISms;
+    }
+
+    /**
+     * Disables service handle caching for tests that utilize mock services.
+     * @hide
+     */
+    @VisibleForTesting
+    public static void disableServiceHandleCaching() {
+        sServiceHandleCacheEnabled = false;
+    }
+
+    /**
+     * Reenables service handle caching.
+     * @hide
+     */
+    @VisibleForTesting
+    public static void enableServiceHandleCaching() {
+        sServiceHandleCacheEnabled = true;
+    }
 }
diff --git a/telephony/java/android/telephony/TelephonyScanManager.java b/telephony/java/android/telephony/TelephonyScanManager.java
index a1d40e8..cdff651 100644
--- a/telephony/java/android/telephony/TelephonyScanManager.java
+++ b/telephony/java/android/telephony/TelephonyScanManager.java
@@ -16,8 +16,6 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import static com.android.internal.util.Preconditions.checkNotNull;
 
 import android.annotation.Nullable;
@@ -33,6 +31,7 @@
 import android.util.SparseArray;
 
 import com.android.internal.telephony.ITelephony;
+import com.android.telephony.Rlog;
 
 import java.util.Arrays;
 import java.util.List;
diff --git a/telephony/java/android/telephony/UiccAccessRule.java b/telephony/java/android/telephony/UiccAccessRule.java
index 81a09c6..3e948fc 100644
--- a/telephony/java/android/telephony/UiccAccessRule.java
+++ b/telephony/java/android/telephony/UiccAccessRule.java
@@ -15,8 +15,6 @@
  */
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
@@ -28,6 +26,7 @@
 import android.text.TextUtils;
 
 import com.android.internal.telephony.uicc.IccUtils;
+import com.android.telephony.Rlog;
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
diff --git a/telephony/java/android/telephony/VoLteServiceState.java b/telephony/java/android/telephony/VoLteServiceState.java
index d4a27d9..27187e6 100644
--- a/telephony/java/android/telephony/VoLteServiceState.java
+++ b/telephony/java/android/telephony/VoLteServiceState.java
@@ -16,14 +16,14 @@
 
 package android.telephony;
 
-import com.android.telephony.Rlog;
-
 import android.compat.annotation.UnsupportedAppUsage;
 import android.os.Build;
 import android.os.Bundle;
 import android.os.Parcel;
 import android.os.Parcelable;
 
+import com.android.telephony.Rlog;
+
 /**
  * Contains LTE network state related information.
  * @deprecated Only contains SRVCC state, which isn't specific to LTE handovers. For SRVCC
diff --git a/telephony/java/android/telephony/data/DataService.java b/telephony/java/android/telephony/data/DataService.java
index bff12b6..6c4e7ce 100644
--- a/telephony/java/android/telephony/data/DataService.java
+++ b/telephony/java/android/telephony/data/DataService.java
@@ -31,10 +31,10 @@
 import android.os.Message;
 import android.os.RemoteException;
 import android.telephony.AccessNetworkConstants;
-import com.android.telephony.Rlog;
 import android.util.SparseArray;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
diff --git a/telephony/java/android/telephony/data/DataServiceCallback.java b/telephony/java/android/telephony/data/DataServiceCallback.java
index d33d3f9..72b68e4 100644
--- a/telephony/java/android/telephony/data/DataServiceCallback.java
+++ b/telephony/java/android/telephony/data/DataServiceCallback.java
@@ -22,9 +22,10 @@
 import android.annotation.SystemApi;
 import android.net.LinkProperties;
 import android.os.RemoteException;
-import com.android.telephony.Rlog;
 import android.telephony.data.DataService.DataServiceProvider;
 
+import com.android.telephony.Rlog;
+
 import java.lang.annotation.Retention;
 import java.lang.annotation.RetentionPolicy;
 import java.util.List;
diff --git a/telephony/java/android/telephony/data/QualifiedNetworksService.java b/telephony/java/android/telephony/data/QualifiedNetworksService.java
index 8220b16..05971c4 100644
--- a/telephony/java/android/telephony/data/QualifiedNetworksService.java
+++ b/telephony/java/android/telephony/data/QualifiedNetworksService.java
@@ -28,10 +28,10 @@
 import android.os.RemoteException;
 import android.telephony.AccessNetworkConstants.AccessNetworkType;
 import android.telephony.Annotation.ApnType;
-import com.android.telephony.Rlog;
 import android.util.SparseArray;
 
 import com.android.internal.annotations.VisibleForTesting;
+import com.android.telephony.Rlog;
 
 import java.util.List;
 
diff --git a/telephony/java/android/telephony/emergency/EmergencyNumber.java b/telephony/java/android/telephony/emergency/EmergencyNumber.java
index cd3fc95..d9d5c14 100644
--- a/telephony/java/android/telephony/emergency/EmergencyNumber.java
+++ b/telephony/java/android/telephony/emergency/EmergencyNumber.java
@@ -25,6 +25,7 @@
 import android.os.Parcelable;
 import android.telephony.CarrierConfigManager;
 import android.telephony.PhoneNumberUtils;
+
 import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
diff --git a/telephony/java/android/telephony/euicc/EuiccCardManager.java b/telephony/java/android/telephony/euicc/EuiccCardManager.java
index e16fffa..e1aec0a 100644
--- a/telephony/java/android/telephony/euicc/EuiccCardManager.java
+++ b/telephony/java/android/telephony/euicc/EuiccCardManager.java
@@ -20,6 +20,7 @@
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.content.Context;
+import android.os.Binder;
 import android.os.RemoteException;
 import android.service.euicc.EuiccProfileInfo;
 import android.telephony.TelephonyFrameworkInitializer;
@@ -168,7 +169,12 @@
                     new IGetAllProfilesCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccProfileInfo[] profiles) {
-                            executor.execute(() -> callback.onComplete(resultCode, profiles));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, profiles));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -192,7 +198,12 @@
                     new IGetProfileCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccProfileInfo profile) {
-                            executor.execute(() -> callback.onComplete(resultCode, profile));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, profile));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -217,7 +228,12 @@
                     refresh, new IDisableProfileCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -243,7 +259,12 @@
                     refresh, new ISwitchToProfileCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccProfileInfo profile) {
-                            executor.execute(() -> callback.onComplete(resultCode, profile));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, profile));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -268,7 +289,12 @@
                     nickname, new ISetNicknameCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -292,7 +318,12 @@
                     new IDeleteProfileCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -317,7 +348,12 @@
                     new IResetMemoryCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -340,7 +376,12 @@
                     new IGetDefaultSmdpAddressCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, String address) {
-                            executor.execute(() -> callback.onComplete(resultCode, address));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, address));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -363,7 +404,12 @@
                     new IGetSmdsAddressCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, String address) {
-                            executor.execute(() -> callback.onComplete(resultCode, address));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, address));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -388,7 +434,12 @@
                     new ISetDefaultSmdpAddressCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -411,7 +462,12 @@
                     new IGetRulesAuthTableCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccRulesAuthTable rat) {
-                            executor.execute(() -> callback.onComplete(resultCode, rat));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, rat));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -434,7 +490,12 @@
                     new IGetEuiccChallengeCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] challenge) {
-                            executor.execute(() -> callback.onComplete(resultCode, challenge));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, challenge));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -457,7 +518,12 @@
                     new IGetEuiccInfo1Callback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] info) {
-                            executor.execute(() -> callback.onComplete(resultCode, info));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, info));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -480,7 +546,12 @@
                     new IGetEuiccInfo2Callback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] info) {
-                            executor.execute(() -> callback.onComplete(resultCode, info));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, info));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -522,7 +593,12 @@
                     new IAuthenticateServerCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] response) {
-                            executor.execute(() -> callback.onComplete(resultCode, response));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, response));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -561,7 +637,12 @@
                     new IPrepareDownloadCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] response) {
-                            executor.execute(() -> callback.onComplete(resultCode, response));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, response));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -589,7 +670,12 @@
                     new ILoadBoundProfilePackageCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] response) {
-                            executor.execute(() -> callback.onComplete(resultCode, response));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, response));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -619,7 +705,12 @@
                     new ICancelSessionCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, byte[] response) {
-                            executor.execute(() -> callback.onComplete(resultCode, response));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, response));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -643,7 +734,13 @@
                     new IListNotificationsCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccNotification[] notifications) {
-                            executor.execute(() -> callback.onComplete(resultCode, notifications));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(
+                                        resultCode, notifications));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -667,7 +764,13 @@
                     events, new IRetrieveNotificationListCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccNotification[] notifications) {
-                            executor.execute(() -> callback.onComplete(resultCode, notifications));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(
+                                        resultCode, notifications));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -691,7 +794,13 @@
                     seqNumber, new IRetrieveNotificationCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode, EuiccNotification notification) {
-                            executor.execute(() -> callback.onComplete(resultCode, notification));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(
+                                        resultCode, notification));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
@@ -718,7 +827,12 @@
                     new IRemoveNotificationFromListCallback.Stub() {
                         @Override
                         public void onComplete(int resultCode) {
-                            executor.execute(() -> callback.onComplete(resultCode, null));
+                            final long token = Binder.clearCallingIdentity();
+                            try {
+                                executor.execute(() -> callback.onComplete(resultCode, null));
+                            } finally {
+                                Binder.restoreCallingIdentity(token);
+                            }
                         }
                     });
         } catch (RemoteException e) {
diff --git a/telephony/java/android/telephony/ims/ImsConferenceState.java b/telephony/java/android/telephony/ims/ImsConferenceState.java
index abfee61..21bef00 100644
--- a/telephony/java/android/telephony/ims/ImsConferenceState.java
+++ b/telephony/java/android/telephony/ims/ImsConferenceState.java
@@ -24,8 +24,8 @@
 import android.os.Parcelable;
 import android.telecom.Call;
 import android.telecom.Connection;
+
 import com.android.telephony.Rlog;
-import android.util.Log;
 
 import java.util.HashMap;
 import java.util.Iterator;
diff --git a/telephony/java/android/telephony/ims/ImsExternalCallState.java b/telephony/java/android/telephony/ims/ImsExternalCallState.java
index 136a83e..7d73165 100644
--- a/telephony/java/android/telephony/ims/ImsExternalCallState.java
+++ b/telephony/java/android/telephony/ims/ImsExternalCallState.java
@@ -24,6 +24,7 @@
 import android.net.Uri;
 import android.os.Parcel;
 import android.os.Parcelable;
+
 import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
diff --git a/telephony/java/android/telephony/ims/ImsRcsManager.java b/telephony/java/android/telephony/ims/ImsRcsManager.java
index d483291..c506cd5 100644
--- a/telephony/java/android/telephony/ims/ImsRcsManager.java
+++ b/telephony/java/android/telephony/ims/ImsRcsManager.java
@@ -59,6 +59,7 @@
      * @see #isAvailable(int)
      * @see #registerRcsAvailabilityCallback(Executor, AvailabilityCallback)
      * @see #unregisterRcsAvailabilityCallback(AvailabilityCallback)
+     * @hide
      */
     public static class AvailabilityCallback {
 
@@ -141,14 +142,16 @@
     /**
      * @return A {@link RcsUceAdapter} used for User Capability Exchange (UCE) operations for
      * this subscription.
-     * @hide
      */
     @NonNull
     public RcsUceAdapter getUceAdapter() {
         return new RcsUceAdapter(mSubId);
     }
 
-    /**{@inheritDoc}*/
+    /**
+     * {@inheritDoc}
+     * @hide
+     */
     @Override
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void registerImsRegistrationCallback(
@@ -177,7 +180,10 @@
         }
     }
 
-    /**{@inheritDoc}*/
+    /**
+     * {@inheritDoc
+     * @hide
+     */
     @Override
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void unregisterImsRegistrationCallback(
@@ -199,7 +205,10 @@
         }
     }
 
-    /**{@inheritDoc}*/
+    /**
+     * {@inheritDoc}
+     * @hide
+     */
     @Override
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void getRegistrationState(@NonNull @CallbackExecutor Executor executor,
@@ -229,7 +238,10 @@
         }
     }
 
-    /**{@inheritDoc}*/
+    /**
+     * {@inheritDoc}
+     * @hide
+     */
     @Override
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void getRegistrationTransportType(@NonNull @CallbackExecutor Executor executor,
@@ -280,6 +292,7 @@
      * {@link ImsRcsManager} is valid, but the ImsService associated with the subscription is not
      * available. This can happen if the ImsService has crashed, for example, or if the subscription
      * becomes inactive. See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void registerRcsAvailabilityCallback(@NonNull @CallbackExecutor Executor executor,
@@ -319,6 +332,7 @@
      * @throws ImsException if the IMS service is not available when calling this method
      * {@link ImsRcsController#unregisterRcsAvailabilityCallback()}.
      * See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void unregisterRcsAvailabilityCallback(@NonNull AvailabilityCallback c)
@@ -361,6 +375,7 @@
      * @throws ImsException if the IMS service is not available when calling this method
      * {@link ImsRcsController#isCapable(int, int)}.
      * See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public boolean isCapable(@RcsFeature.RcsImsCapabilities.RcsImsCapabilityFlag int capability,
@@ -395,6 +410,7 @@
      * @throws ImsException if the IMS service is not available when calling this method
      * {@link ImsRcsController#isAvailable(int, int)}.
      * See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public boolean isAvailable(@RcsFeature.RcsImsCapabilities.RcsImsCapabilityFlag int capability)
diff --git a/telephony/java/android/telephony/ims/ImsSsData.java b/telephony/java/android/telephony/ims/ImsSsData.java
index 2d2e638..70bf0c5 100644
--- a/telephony/java/android/telephony/ims/ImsSsData.java
+++ b/telephony/java/android/telephony/ims/ImsSsData.java
@@ -22,6 +22,7 @@
 import android.annotation.TestApi;
 import android.os.Parcel;
 import android.os.Parcelable;
+
 import com.android.telephony.Rlog;
 
 import java.lang.annotation.Retention;
diff --git a/telephony/java/android/telephony/ims/RcsUceAdapter.java b/telephony/java/android/telephony/ims/RcsUceAdapter.java
index 72a00ce..fc7c1ee 100644
--- a/telephony/java/android/telephony/ims/RcsUceAdapter.java
+++ b/telephony/java/android/telephony/ims/RcsUceAdapter.java
@@ -51,55 +51,67 @@
 
     /**
      * An unknown error has caused the request to fail.
+     * @hide
      */
     public static final int ERROR_GENERIC_FAILURE = 1;
     /**
      * The carrier network does not have UCE support enabled for this subscriber.
+     * @hide
      */
     public static final int ERROR_NOT_ENABLED = 2;
     /**
      * The data network that the device is connected to does not support UCE currently (e.g. it is
      * 1x only currently).
+     * @hide
      */
     public static final int ERROR_NOT_AVAILABLE = 3;
     /**
      * The network has responded with SIP 403 error and a reason "User not registered."
+     * @hide
      */
     public static final int ERROR_NOT_REGISTERED = 4;
     /**
      * The network has responded to this request with a SIP 403 error and reason "not authorized for
      * presence" for this subscriber.
+     * @hide
      */
     public static final int ERROR_NOT_AUTHORIZED = 5;
     /**
      * The network has responded to this request with a SIP 403 error and no reason.
+     * @hide
      */
     public static final int ERROR_FORBIDDEN = 6;
     /**
      * The contact URI requested is not provisioned for VoLTE or it is not known as an IMS
      * subscriber to the carrier network.
+     * @hide
      */
     public static final int ERROR_NOT_FOUND = 7;
     /**
      * The capabilities request contained too many URIs for the carrier network to handle. Retry
      * with a lower number of contact numbers. The number varies per carrier.
+     * @hide
      */
     // TODO: Try to integrate this into the API so that the service will split based on carrier.
     public static final int ERROR_REQUEST_TOO_LARGE = 8;
     /**
      * The network did not respond to the capabilities request before the request timed out.
+     * @hide
      */
     public static final int ERROR_REQUEST_TIMEOUT = 10;
     /**
      * The request failed due to the service having insufficient memory.
+     * @hide
      */
     public static final int ERROR_INSUFFICIENT_MEMORY = 11;
     /**
      * The network was lost while trying to complete the request.
+     * @hide
      */
     public static final int ERROR_LOST_NETWORK = 12;
     /**
      * The request has failed because the same request has already been added to the queue.
+     * @hide
      */
     public static final int ERROR_ALREADY_IN_QUEUE = 13;
 
@@ -124,28 +136,33 @@
     /**
      * The last publish has resulted in a "200 OK" response or the device is using SIP OPTIONS for
      * UCE.
+     * @hide
      */
     public static final int PUBLISH_STATE_200_OK = 1;
 
     /**
      * The hasn't published its capabilities since boot or hasn't gotten any publish response yet.
+     * @hide
      */
     public static final int PUBLISH_STATE_NOT_PUBLISHED = 2;
 
     /**
      * The device has tried to publish its capabilities, which has resulted in an error. This error
      * is related to the fact that the device is not VoLTE provisioned.
+     * @hide
      */
     public static final int PUBLISH_STATE_VOLTE_PROVISION_ERROR = 3;
 
     /**
      * The device has tried to publish its capabilities, which has resulted in an error. This error
      * is related to the fact that the device is not RCS or UCE provisioned.
+     * @hide
      */
     public static final int PUBLISH_STATE_RCS_PROVISION_ERROR = 4;
 
     /**
      * The last publish resulted in a "408 Request Timeout" response.
+     * @hide
      */
     public static final int PUBLISH_STATE_REQUEST_TIMEOUT = 5;
 
@@ -154,6 +171,7 @@
      * or SIP 423 - "Interval too short".
      * <p>
      * Device shall retry with exponential back-off.
+     * @hide
      */
     public static final int PUBLISH_STATE_OTHER_ERROR = 6;
 
@@ -174,6 +192,7 @@
      * Provides a one-time callback for the response to a UCE request. After this callback is called
      * by the framework, the reference to this callback will be discarded on the service side.
      * @see #requestCapabilities(Executor, List, CapabilitiesCallback)
+     * @hide
      */
     public static class CapabilitiesCallback {
 
@@ -225,6 +244,7 @@
      * {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
      * available. This can happen if the ImsService has crashed, for example, or if the subscription
      * becomes inactive. See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public void requestCapabilities(@NonNull @CallbackExecutor Executor executor,
@@ -287,6 +307,7 @@
      * {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
      * available. This can happen if the ImsService has crashed, for example, or if the subscription
      * becomes inactive. See {@link ImsException#getCode()} for more information on the error codes.
+     * @hide
      */
     @RequiresPermission(Manifest.permission.READ_PRIVILEGED_PHONE_STATE)
     public @PublishState int getUcePublishState() throws ImsException {
@@ -307,14 +328,13 @@
     }
 
     /**
-     * The user’s setting for whether or not Presence and User Capability Exchange (UCE) is enabled
-     * for the associated subscription.
+     * The user’s setting for whether or not User Capability Exchange (UCE) is enabled for the
+     * associated subscription.
+     * <p>
+     * Note: This setting does not affect whether or not the device publishes its service
+     * capabilities if the subscription supports presence publication.
      *
-     * @return true if the user’s setting for UCE is enabled, false otherwise. If false,
-     * {@link ImsRcsManager#isCapable(int, int)} will return false for
-     * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} and
-     * {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE}
-     * @see #setUceSettingEnabled(boolean)
+     * @return true if the user’s setting for UCE is enabled, false otherwise.
      * @throws ImsException if the subscription associated with this instance of
      * {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
      * available. This can happen if the ImsService has crashed, for example, or if the subscription
@@ -340,12 +360,12 @@
 
     /**
      * Change the user’s setting for whether or not UCE is enabled for the associated subscription.
-     * @param isEnabled the user's setting for whether or not they wish for Presence and User
-     *         Capability Exchange to be enabled. If false,
-     *         {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_OPTIONS_UCE} and
-     *         {@link RcsFeature.RcsImsCapabilities#CAPABILITY_TYPE_PRESENCE_UCE} capability will be
-     *         disabled, depending on which type of UCE the carrier supports.
-     * @see #isUceSettingEnabled()
+     * <p>
+     * Note: This setting does not affect whether or not the device publishes its service
+     * capabilities if the subscription supports presence publication.
+     *
+     * @param isEnabled the user's setting for whether or not they wish for User
+     *         Capability Exchange to be enabled.
      * @throws ImsException if the subscription associated with this instance of
      * {@link RcsUceAdapter} is valid, but the ImsService associated with the subscription is not
      * available. This can happen if the ImsService has crashed, for example, or if the subscription
diff --git a/telephony/java/android/telephony/ims/feature/RcsFeature.java b/telephony/java/android/telephony/ims/feature/RcsFeature.java
index 8e67621..98b0bcf 100644
--- a/telephony/java/android/telephony/ims/feature/RcsFeature.java
+++ b/telephony/java/android/telephony/ims/feature/RcsFeature.java
@@ -193,6 +193,7 @@
      * of the capability and notify the capability status as true using
      * {@link #notifyCapabilitiesStatusChanged(RcsImsCapabilities)}. This will signal to the
      * framework that the capability is available for usage.
+     * @hide
      */
     public static class RcsImsCapabilities extends Capabilities {
         /** @hide*/
@@ -286,6 +287,7 @@
      * set, the {@link RcsFeature} has brought up the capability and is ready for framework
      * requests. To change the status of the capabilities
      * {@link #notifyCapabilitiesStatusChanged(RcsImsCapabilities)} should be called.
+     * @hide
      */
     @Override
     public @NonNull final RcsImsCapabilities queryCapabilityStatus() {
@@ -296,6 +298,7 @@
      * Notify the framework that the capabilities status has changed. If a capability is enabled,
      * this signals to the framework that the capability has been initialized and is ready.
      * Call {@link #queryCapabilityStatus()} to return the current capability status.
+     * @hide
      */
     public final void notifyCapabilitiesStatusChanged(@NonNull RcsImsCapabilities c) {
         if (c == null) {
@@ -310,6 +313,7 @@
      * {@link #changeEnabledCapabilities(CapabilityChangeRequest, CapabilityCallbackProxy)} to
      * enable or disable capability A, this method should return the correct configuration for
      * capability A afterwards (until it has changed).
+     * @hide
      */
     public boolean queryCapabilityConfiguration(
             @RcsImsCapabilities.RcsImsCapabilityFlag int capability,
@@ -331,6 +335,7 @@
      * If for some reason one or more of these capabilities can not be enabled/disabled,
      * {@link CapabilityCallbackProxy#onChangeCapabilityConfigurationError(int, int, int)} should
      * be called for each capability change that resulted in an error.
+     * @hide
      */
     @Override
     public void changeEnabledCapabilities(@NonNull CapabilityChangeRequest request,
@@ -349,6 +354,7 @@
      *
      * @return An instance of {@link RcsSipOptionsImplBase} that implements SIP options exchange if
      * it is supported by the device.
+     * @hide
      */
     public @NonNull RcsSipOptionsImplBase getOptionsExchangeImpl() {
         // Base Implementation, override to implement functionality
@@ -364,6 +370,7 @@
      *
      * @return An instance of {@link RcsPresenceExchangeImplBase} that implements presence
      * exchange if it is supported by the device.
+     * @hide
      */
     public @NonNull RcsPresenceExchangeImplBase getPresenceExchangeImpl() {
         // Base Implementation, override to implement functionality.
diff --git a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
index a24af2f..fda295a 100644
--- a/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
+++ b/telephony/java/android/telephony/ims/stub/RcsCapabilityExchange.java
@@ -17,8 +17,6 @@
 package android.telephony.ims.stub;
 
 import android.annotation.IntDef;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.os.RemoteException;
 import android.telephony.ims.ImsException;
 import android.telephony.ims.aidl.IRcsFeatureListener;
@@ -34,8 +32,6 @@
  *
  * @hide
  */
-@SystemApi
-@TestApi
 public class RcsCapabilityExchange {
 
     /**  Service is unknown. */
diff --git a/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java b/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java
index f200ea2..bb03448 100644
--- a/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/RcsPresenceExchangeImplBase.java
@@ -18,8 +18,6 @@
 
 import android.annotation.IntDef;
 import android.annotation.NonNull;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.RemoteException;
 import android.telephony.ims.ImsException;
@@ -39,8 +37,6 @@
  *
  * @hide
  */
-@SystemApi
-@TestApi
 public class RcsPresenceExchangeImplBase extends RcsCapabilityExchange {
 
     private static final String LOG_TAG = "RcsPresenceExchangeIB";
diff --git a/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java b/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java
index 355c4dd..2035fac 100644
--- a/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java
+++ b/telephony/java/android/telephony/ims/stub/RcsSipOptionsImplBase.java
@@ -19,8 +19,6 @@
 import android.annotation.IntDef;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.annotation.SystemApi;
-import android.annotation.TestApi;
 import android.net.Uri;
 import android.os.RemoteException;
 import android.telephony.ims.ImsException;
@@ -37,8 +35,6 @@
  *
  * @hide
  */
-@SystemApi
-@TestApi
 public class RcsSipOptionsImplBase extends RcsCapabilityExchange {
 
     private static final String LOG_TAG = "RcsSipOptionsImplBase";
diff --git a/telephony/java/com/android/ims/ImsConfig.java b/telephony/java/com/android/ims/ImsConfig.java
index 0f6ce13..96f77d8 100644
--- a/telephony/java/com/android/ims/ImsConfig.java
+++ b/telephony/java/com/android/ims/ImsConfig.java
@@ -19,13 +19,13 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.RemoteException;
-import com.android.telephony.Rlog;
 import android.telephony.ims.ImsReasonInfo;
 import android.telephony.ims.ProvisioningManager;
 import android.telephony.ims.aidl.IImsConfig;
 import android.telephony.ims.aidl.IImsConfigCallback;
 
 import com.android.internal.telephony.util.HandlerExecutor;
+import com.android.telephony.Rlog;
 
 import java.util.concurrent.Executor;
 
diff --git a/telephony/java/com/android/internal/telephony/ITelephony.aidl b/telephony/java/com/android/internal/telephony/ITelephony.aidl
index beb3c8c..168c8b6 100644
--- a/telephony/java/com/android/internal/telephony/ITelephony.aidl
+++ b/telephony/java/com/android/internal/telephony/ITelephony.aidl
@@ -1827,14 +1827,6 @@
     boolean switchSlots(in int[] physicalSlots);
 
     /**
-     * Sets radio indication update mode. This can be used to control the behavior of indication
-     * update from modem to Android frameworks. For example, by default several indication updates
-     * are turned off when screen is off, but in some special cases (e.g. carkit is connected but
-     * screen is off) we want to turn on those indications even when the screen is off.
-     */
-    void setRadioIndicationUpdateMode(int subId, int filters, int mode);
-
-    /**
      * Returns whether mobile data roaming is enabled on the subscription with id {@code subId}.
      *
      * @param subId the subscription id
diff --git a/core/java/com/android/internal/telephony/IWapPushManager.aidl b/telephony/java/com/android/internal/telephony/IWapPushManager.aidl
similarity index 82%
rename from core/java/com/android/internal/telephony/IWapPushManager.aidl
rename to telephony/java/com/android/internal/telephony/IWapPushManager.aidl
index 9f6851b..1c3df6533 100644
--- a/core/java/com/android/internal/telephony/IWapPushManager.aidl
+++ b/telephony/java/com/android/internal/telephony/IWapPushManager.aidl
@@ -18,7 +18,6 @@
 
 import android.content.Intent;
 
-/** @hide */
 interface IWapPushManager {
     /**
      * Processes WAP push message and triggers the receiver application registered
@@ -27,10 +26,11 @@
     int processMessage(String app_id, String content_type, in Intent intent);
 
     /**
-     * Adds receiver application into the application ID table.
-     * Returns true if inserting the information is successful. Inserting duplicated
+     * Add receiver application into the application ID table.
+     * Returns true if inserting the information is successfull. Inserting the duplicated
      * record in the application ID table is not allowed. Use update/delete method.
      */
+    @UnsupportedAppUsage
     boolean addPackage(String x_app_id, String content_type,
             String package_name, String class_name,
             int app_type, boolean need_signature, boolean further_processing);
@@ -39,14 +39,17 @@
      * Updates receiver application that is last added.
      * Returns true if updating the information is successfull.
      */
+    @UnsupportedAppUsage
     boolean updatePackage(String x_app_id, String content_type,
             String package_name, String class_name,
             int app_type, boolean need_signature, boolean further_processing);
 
     /**
-     * Deletes receiver application information.
+     * Delites receiver application information.
      * Returns true if deleting is successfull.
      */
+    @UnsupportedAppUsage
     boolean deletePackage(String x_app_id, String content_type,
-            String package_name, String class_name);
+                            String package_name, String class_name);
 }
+
diff --git a/telephony/java/com/android/internal/telephony/RILConstants.java b/telephony/java/com/android/internal/telephony/RILConstants.java
index 9ac8cb1..c40573b 100644
--- a/telephony/java/com/android/internal/telephony/RILConstants.java
+++ b/telephony/java/com/android/internal/telephony/RILConstants.java
@@ -233,14 +233,11 @@
     /** NR 5G, LTE, TD-SCDMA, CDMA, EVDO, GSM and WCDMA */
     int NETWORK_MODE_NR_LTE_TDSCDMA_CDMA_EVDO_GSM_WCDMA = 33;
 
-    /** Default preferred network mode */
-    int DEFAULT_PREFERRED_NETWORK_MODE = NETWORK_MODE_WCDMA_PREF;
-
     @UnsupportedAppUsage
     int PREFERRED_NETWORK_MODE = Optional.of(TelephonyProperties.default_network())
             .filter(list -> !list.isEmpty())
             .map(list -> list.get(0))
-            .orElse(DEFAULT_PREFERRED_NETWORK_MODE);
+            .orElse(NETWORK_MODE_WCDMA_PREF);
 
     int BAND_MODE_UNSPECIFIED = 0;      //"unspecified" (selected by baseband automatically)
     int BAND_MODE_EURO = 1;             //"EURO band" (GSM-900 / DCS-1800 / WCDMA-IMT-2000)
diff --git a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
index 8e86ff7..3bd8cdd 100644
--- a/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
+++ b/telephony/java/com/android/internal/telephony/Sms7BitEncodingTranslator.java
@@ -19,12 +19,12 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
 import android.content.res.XmlResourceParser;
-import com.android.telephony.Rlog;
 import android.util.SparseIntArray;
 
 import com.android.internal.telephony.cdma.sms.UserData;
 import com.android.internal.telephony.util.TelephonyUtils;
 import com.android.internal.telephony.util.XmlUtils;
+import com.android.telephony.Rlog;
 
 public class Sms7BitEncodingTranslator {
     private static final String TAG = "Sms7BitEncodingTranslator";
diff --git a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
index d0c8024..6ed0be2 100644
--- a/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/cdma/SmsMessage.java
@@ -20,7 +20,6 @@
 import android.content.res.Resources;
 import android.sysprop.TelephonyProperties;
 import android.telephony.PhoneNumberUtils;
-import com.android.telephony.Rlog;
 import android.telephony.SmsCbLocation;
 import android.telephony.SmsCbMessage;
 import android.telephony.cdma.CdmaSmsCbProgramData;
@@ -41,6 +40,7 @@
 import com.android.internal.telephony.uicc.IccUtils;
 import com.android.internal.util.BitwiseInputStream;
 import com.android.internal.util.HexDump;
+import com.android.telephony.Rlog;
 
 import java.io.BufferedOutputStream;
 import java.io.ByteArrayInputStream;
diff --git a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
index 6ad6dd1..6dc1e0e 100644
--- a/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
+++ b/telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java
@@ -18,7 +18,6 @@
 
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
-import com.android.telephony.Rlog;
 import android.telephony.SmsCbCmasInfo;
 import android.telephony.cdma.CdmaSmsCbProgramData;
 import android.telephony.cdma.CdmaSmsCbProgramResults;
@@ -31,6 +30,7 @@
 import com.android.internal.telephony.uicc.IccUtils;
 import com.android.internal.util.BitwiseInputStream;
 import com.android.internal.util.BitwiseOutputStream;
+import com.android.telephony.Rlog;
 
 import java.io.ByteArrayOutputStream;
 import java.time.Instant;
diff --git a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
index c91ea69..08580012 100644
--- a/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
+++ b/telephony/java/com/android/internal/telephony/gsm/SmsMessage.java
@@ -28,7 +28,6 @@
 import android.compat.annotation.UnsupportedAppUsage;
 import android.content.res.Resources;
 import android.telephony.PhoneNumberUtils;
-import com.android.telephony.Rlog;
 import android.text.TextUtils;
 
 import com.android.internal.telephony.EncodeException;
@@ -38,6 +37,7 @@
 import com.android.internal.telephony.SmsHeader;
 import com.android.internal.telephony.SmsMessageBase;
 import com.android.internal.telephony.uicc.IccUtils;
+import com.android.telephony.Rlog;
 
 import java.io.ByteArrayOutputStream;
 import java.io.UnsupportedEncodingException;
diff --git a/telephony/java/com/android/internal/telephony/uicc/IccUtils.java b/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
index 0dc7401..1d13692 100644
--- a/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
+++ b/telephony/java/com/android/internal/telephony/uicc/IccUtils.java
@@ -21,10 +21,10 @@
 import android.content.res.Resources.NotFoundException;
 import android.graphics.Bitmap;
 import android.graphics.Color;
-import com.android.telephony.Rlog;
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.telephony.GsmAlphabet;
+import com.android.telephony.Rlog;
 
 import java.io.UnsupportedEncodingException;
 import java.util.List;
diff --git a/test-mock/src/android/test/mock/MockContext.java b/test-mock/src/android/test/mock/MockContext.java
index 36074ed..359c448 100644
--- a/test-mock/src/android/test/mock/MockContext.java
+++ b/test-mock/src/android/test/mock/MockContext.java
@@ -812,7 +812,7 @@
     }
 
     @Override
-    public @NonNull Context createWindowContext(int type) {
+    public @NonNull Context createWindowContext(int type, Bundle options) {
         throw new UnsupportedOperationException();
     }
 
diff --git a/test-mock/src/android/test/mock/MockPackageManager.java b/test-mock/src/android/test/mock/MockPackageManager.java
index 14b847f..5f95bc1 100644
--- a/test-mock/src/android/test/mock/MockPackageManager.java
+++ b/test-mock/src/android/test/mock/MockPackageManager.java
@@ -1249,12 +1249,4 @@
             int uid, byte[] certificate, @PackageManager.CertificateInputType int type) {
         throw new UnsupportedOperationException();
     }
-
-    /**
-     * @hide
-     */
-    @Override
-    public String getSystemTextClassifierPackageName() {
-        throw new UnsupportedOperationException();
-    }
 }
diff --git a/test-runner/src/android/test/TouchUtils.java b/test-runner/src/android/test/TouchUtils.java
index 28dc7b2..bb4e00b 100644
--- a/test-runner/src/android/test/TouchUtils.java
+++ b/test-runner/src/android/test/TouchUtils.java
@@ -222,7 +222,8 @@
      */
     public static void dragViewToBottom(InstrumentationTestCase test, Activity activity, View v,
             int stepCount) {
-        int screenHeight = activity.getWindowManager().getDefaultDisplay().getHeight();
+        int screenHeight =
+                activity.getWindowManager().getCurrentWindowMetrics().getSize().getHeight();
 
         int[] xy = new int[2];
         v.getLocationOnScreen(xy);
diff --git a/tests/BlobStoreTestUtils/Android.bp b/tests/BlobStoreTestUtils/Android.bp
new file mode 100644
index 0000000..edd2b43
--- /dev/null
+++ b/tests/BlobStoreTestUtils/Android.bp
@@ -0,0 +1,20 @@
+// 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.
+
+java_library {
+  name: "BlobStoreTestUtils",
+  srcs: ["src/**/*.java"],
+  static_libs: ["truth-prebuilt"],
+  platform_apis: true
+}
\ No newline at end of file
diff --git a/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java b/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java
new file mode 100644
index 0000000..f96766a
--- /dev/null
+++ b/tests/BlobStoreTestUtils/src/com/android/utils/blob/DummyBlobData.java
@@ -0,0 +1,227 @@
+/*
+ * Copyright 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.android.utils.blob;
+
+import static com.google.common.truth.Truth.assertThat;
+
+import android.app.blob.BlobHandle;
+import android.app.blob.BlobStoreManager;
+import android.content.Context;
+import android.os.FileUtils;
+import android.os.ParcelFileDescriptor;
+
+import java.io.BufferedInputStream;
+import java.io.File;
+import java.io.FileDescriptor;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.io.RandomAccessFile;
+import java.nio.file.Files;
+import java.security.MessageDigest;
+import java.util.Random;
+import java.util.concurrent.TimeUnit;
+
+public class DummyBlobData {
+    private static final long DEFAULT_SIZE_BYTES = 10 * 1024L * 1024L;
+    private static final int BUFFER_SIZE_BYTES = 16 * 1024;
+
+    private final Context mContext;
+    private final Random mRandom;
+    private final File mFile;
+    private final long mFileSize;
+    private final String mLabel;
+
+    byte[] mFileDigest;
+    long mExpiryTimeMs;
+
+    public DummyBlobData(Context context) {
+        this(context, new Random(0), "blob_" + System.nanoTime());
+    }
+
+    public DummyBlobData(Context context, long fileSize) {
+        this(context, fileSize, new Random(0), "blob_" + System.nanoTime(), "Test label");
+    }
+
+    public DummyBlobData(Context context, Random random, String fileName) {
+        this(context, DEFAULT_SIZE_BYTES, random, fileName, "Test label");
+    }
+
+    public DummyBlobData(Context context, Random random, String fileName, String label) {
+        this(context, DEFAULT_SIZE_BYTES, random, fileName, label);
+    }
+
+    public DummyBlobData(Context context, long fileSize, Random random, String fileName,
+            String label) {
+        mContext = context;
+        mRandom = random;
+        mFile = new File(mContext.getFilesDir(), fileName);
+        mFileSize = fileSize;
+        mLabel = label;
+    }
+
+    public void prepare() throws Exception {
+        try (RandomAccessFile file = new RandomAccessFile(mFile, "rw")) {
+            writeRandomData(file, mFileSize);
+        }
+        mFileDigest = FileUtils.digest(mFile, "SHA-256");
+        mExpiryTimeMs = System.currentTimeMillis() + TimeUnit.DAYS.toMillis(1);
+    }
+
+    public BlobHandle getBlobHandle() throws Exception {
+        return BlobHandle.createWithSha256(createSha256Digest(mFile), mLabel,
+                mExpiryTimeMs, "test_tag");
+    }
+
+    public long getFileSize() throws Exception {
+        return mFileSize;
+    }
+
+    public long getExpiryTimeMillis() {
+        return mExpiryTimeMs;
+    }
+
+    public void delete() {
+        mFile.delete();
+    }
+
+    public void writeToSession(BlobStoreManager.Session session) throws Exception {
+        writeToSession(session, 0, mFileSize);
+    }
+
+    public void writeToSession(BlobStoreManager.Session session,
+            long offsetBytes, long lengthBytes) throws Exception {
+        try (FileInputStream in = new FileInputStream(mFile)) {
+            in.getChannel().position(offsetBytes);
+            try (FileOutputStream out = new ParcelFileDescriptor.AutoCloseOutputStream(
+                    session.openWrite(offsetBytes, lengthBytes))) {
+                copy(in, out, lengthBytes);
+            }
+        }
+    }
+
+    public void writeToFd(FileDescriptor fd, long offsetBytes, long lengthBytes) throws Exception {
+        try (FileInputStream in = new FileInputStream(mFile)) {
+            in.getChannel().position(offsetBytes);
+            try (FileOutputStream out = new FileOutputStream(fd)) {
+                copy(in, out, lengthBytes);
+            }
+        }
+    }
+
+    private void copy(InputStream in, OutputStream out, long lengthBytes) throws Exception {
+        final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
+        long bytesWrittern = 0;
+        while (bytesWrittern < lengthBytes) {
+            final int toWrite = (bytesWrittern + buffer.length <= lengthBytes)
+                    ? buffer.length : (int) (lengthBytes - bytesWrittern);
+            in.read(buffer, 0, toWrite);
+            out.write(buffer, 0, toWrite);
+            bytesWrittern += toWrite;
+        }
+    }
+
+    public void readFromSessionAndVerifyBytes(BlobStoreManager.Session session,
+            long offsetBytes, int lengthBytes) throws Exception {
+        final byte[] expectedBytes = new byte[lengthBytes];
+        try (FileInputStream in = new FileInputStream(mFile)) {
+            read(in, expectedBytes, offsetBytes, lengthBytes);
+        }
+
+        final byte[] actualBytes = new byte[lengthBytes];
+        try (FileInputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
+                session.openWrite(0L, 0L))) {
+            read(in, actualBytes, offsetBytes, lengthBytes);
+        }
+
+        assertThat(actualBytes).isEqualTo(expectedBytes);
+
+    }
+
+    private void read(FileInputStream in, byte[] buffer,
+            long offsetBytes, int lengthBytes) throws Exception {
+        in.getChannel().position(offsetBytes);
+        in.read(buffer, 0, lengthBytes);
+    }
+
+    public void readFromSessionAndVerifyDigest(BlobStoreManager.Session session)
+            throws Exception {
+        readFromSessionAndVerifyDigest(session, 0, mFile.length());
+    }
+
+    public void readFromSessionAndVerifyDigest(BlobStoreManager.Session session,
+            long offsetBytes, long lengthBytes) throws Exception {
+        final byte[] actualDigest;
+        try (FileInputStream in = new ParcelFileDescriptor.AutoCloseInputStream(
+                session.openWrite(0L, 0L))) {
+            actualDigest = createSha256Digest(in, offsetBytes, lengthBytes);
+        }
+
+        assertThat(actualDigest).isEqualTo(mFileDigest);
+    }
+
+    public void verifyBlob(ParcelFileDescriptor pfd) throws Exception {
+        final byte[] actualDigest;
+        try (FileInputStream in = new ParcelFileDescriptor.AutoCloseInputStream(pfd)) {
+            actualDigest = FileUtils.digest(in, "SHA-256");
+        }
+        assertThat(actualDigest).isEqualTo(mFileDigest);
+    }
+
+    private byte[] createSha256Digest(FileInputStream in, long offsetBytes, long lengthBytes)
+            throws Exception {
+        final MessageDigest digest = MessageDigest.getInstance("SHA-256");
+        in.getChannel().position(offsetBytes);
+        final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
+        long bytesRead = 0;
+        while (bytesRead < lengthBytes) {
+            int toRead = (bytesRead + buffer.length <= lengthBytes)
+                    ? buffer.length : (int) (lengthBytes - bytesRead);
+            toRead = in.read(buffer, 0, toRead);
+            digest.update(buffer, 0, toRead);
+            bytesRead += toRead;
+        }
+        return digest.digest();
+    }
+
+    private byte[] createSha256Digest(File file) throws Exception {
+        final MessageDigest digest = MessageDigest.getInstance("SHA-256");
+        try (BufferedInputStream in = new BufferedInputStream(
+                Files.newInputStream(file.toPath()))) {
+            final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
+            int bytesRead;
+            while ((bytesRead = in.read(buffer)) > 0) {
+                digest.update(buffer, 0, bytesRead);
+            }
+        }
+        return digest.digest();
+    }
+
+    private void writeRandomData(RandomAccessFile file, long fileSize)
+            throws Exception {
+        long bytesWritten = 0;
+        final byte[] buffer = new byte[BUFFER_SIZE_BYTES];
+        while (bytesWritten < fileSize) {
+            mRandom.nextBytes(buffer);
+            final int toWrite = (bytesWritten + buffer.length <= fileSize)
+                    ? buffer.length : (int) (fileSize - bytesWritten);
+            file.seek(bytesWritten);
+            file.write(buffer, 0, toWrite);
+            bytesWritten += toWrite;
+        }
+    }
+}
diff --git a/tests/BootImageProfileTest/AndroidTest.xml b/tests/BootImageProfileTest/AndroidTest.xml
index b4f2663..d7f8204 100644
--- a/tests/BootImageProfileTest/AndroidTest.xml
+++ b/tests/BootImageProfileTest/AndroidTest.xml
@@ -19,18 +19,8 @@
     -->
     <target_preparer
         class="com.android.tradefed.targetprep.DeviceSetup">
-        <!-- we need this magic flag, otherwise it always reboots and breaks the selinux -->
+        <!-- we need this magic flag, otherwise it always reboots and breaks selinux -->
         <option name="force-skip-system-props" value="true" />
-
-        <option name="run-command" value="device_config put runtime_native_boot profilesystemserver true" />
-        <option name="run-command" value="device_config put runtime_native_boot profilebootclasspath true" />
-
-        <!-- Profiling does not pick up the above changes we restart the shell -->
-        <option name="run-command" value="stop" />
-        <option name="run-command" value="start" />
-
-        <!-- give it some time to restart the shell; otherwise the first unit test might fail -->
-        <option name="run-command" value="sleep 2" />
     </target_preparer>
 
     <test class="com.android.tradefed.testtype.HostTest" >
diff --git a/tests/BootImageProfileTest/OWNERS b/tests/BootImageProfileTest/OWNERS
new file mode 100644
index 0000000..657b3f2
--- /dev/null
+++ b/tests/BootImageProfileTest/OWNERS
@@ -0,0 +1,4 @@
+mathieuc@google.com
+calin@google.com
+yawanng@google.com
+sehr@google.com
diff --git a/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java b/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java
index 10f3e54..1c8b6be 100644
--- a/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java
+++ b/tests/BootImageProfileTest/src/com/android/bootimageprofile/BootImageProfileTest.java
@@ -42,10 +42,9 @@
     }
 
     /**
-     * Test that the boot image profile properties are set.
+     * Validate that the boot image profile properties are set.
      */
-    @Test
-    public void testProperties() throws Exception {
+    public void validateProperties() throws Exception {
         String res = mTestDevice.getProperty(
                 "persist.device_config.runtime_native_boot.profilebootclasspath");
         assertTrue("profile boot class path not enabled", res != null && res.equals("true"));
@@ -67,13 +66,37 @@
 
     @Test
     public void testSystemServerProfile() throws Exception {
+        final int numIterations = 20;
+        for (int i = 1; i <= numIterations; ++i) {
+            String res;
+            res = mTestDevice.getProperty(
+                    "persist.device_config.runtime_native_boot.profilebootclasspath");
+            boolean profileBootClassPath = res != null && res.equals("true");
+            res = mTestDevice.getProperty(
+                    "persist.device_config.runtime_native_boot.profilesystemserver");
+            boolean profileSystemServer = res != null && res.equals("true");
+            if (profileBootClassPath && profileSystemServer) {
+                break;
+            }
+            if (i == numIterations) {
+                assertTrue("profile system server not enabled", profileSystemServer);
+                assertTrue("profile boot class path not enabled", profileSystemServer);
+            }
+
+            res = mTestDevice.executeShellCommand(
+                    "device_config put runtime_native_boot profilebootclasspath true");
+            res = mTestDevice.executeShellCommand(
+                    "device_config put runtime_native_boot profilesystemserver true");
+            res = mTestDevice.executeShellCommand("stop");
+            res = mTestDevice.executeShellCommand("start");
+            Thread.sleep(5000);
+        }
         // Trunacte the profile before force it to be saved to prevent previous profiles
         // causing the test to pass.
         String res;
         res = mTestDevice.executeShellCommand("truncate -s 0 " + SYSTEM_SERVER_PROFILE).trim();
         assertTrue(res, res.length() == 0);
         // Wait up to 20 seconds for the profile to be saved.
-        final int numIterations = 20;
         for (int i = 1; i <= numIterations; ++i) {
             // Force save the profile since we truncated it.
             if (forceSaveProfile("system_server")) {
@@ -89,6 +112,9 @@
             // In case the profile is partially saved, wait an extra second.
             Thread.sleep(1000);
 
+            // Validate that properties are still set.
+            validateProperties();
+
             // Validate that the profile is non empty.
             res = mTestDevice.executeShellCommand("profman --dump-only --profile-file="
                     + SYSTEM_SERVER_PROFILE);
diff --git a/tests/GamePerformance/src/android/gameperformance/BaseTest.java b/tests/GamePerformance/src/android/gameperformance/BaseTest.java
index b0640b44..e705756 100644
--- a/tests/GamePerformance/src/android/gameperformance/BaseTest.java
+++ b/tests/GamePerformance/src/android/gameperformance/BaseTest.java
@@ -21,7 +21,6 @@
 import android.annotation.NonNull;
 import android.content.Context;
 import android.util.Log;
-import android.view.WindowManager;
 
 /**
  * Base class for a test that performs bisection to determine maximum
@@ -55,9 +54,7 @@
 
     public BaseTest(@NonNull GamePerformanceActivity activity) {
         mActivity = activity;
-        final WindowManager windowManager =
-                (WindowManager)getContext().getSystemService(Context.WINDOW_SERVICE);
-        mRefreshRate = windowManager.getDefaultDisplay().getRefreshRate();
+        mRefreshRate = activity.getDisplay().getRefreshRate();
     }
 
     @NonNull
diff --git a/tests/GamePerformance/src/android/gameperformance/CustomControlView.java b/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
index 219085a..e63736b 100644
--- a/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
+++ b/tests/GamePerformance/src/android/gameperformance/CustomControlView.java
@@ -25,18 +25,16 @@
 import android.app.Activity;
 import android.content.Context;
 import android.graphics.Canvas;
+import android.graphics.Point;
 import android.graphics.drawable.AnimationDrawable;
-import android.util.Log;
-import android.view.WindowManager;
 import android.widget.AbsoluteLayout;
 import android.widget.ImageView;
-import android.widget.RelativeLayout;
 
 /**
  * View that holds requested number of UI controls as ImageView with an infinite animation.
  */
 public class CustomControlView extends AbsoluteLayout {
-    private final static int CONTROL_DIMENTION = 48;
+    private final static int CONTROL_DIMENSION = 48;
 
     private final int mPerRowControlCount;
     private List<Long> mFrameTimes = new ArrayList<>();
@@ -44,8 +42,9 @@
     public CustomControlView(@NonNull Context context) {
         super(context);
 
-        final WindowManager windowManager = (WindowManager)context.getSystemService(Context.WINDOW_SERVICE);
-        mPerRowControlCount = windowManager.getDefaultDisplay().getWidth() / CONTROL_DIMENTION;
+        final Point size = new Point();
+        context.getDisplay().getSize(size);
+        mPerRowControlCount = size.x / CONTROL_DIMENSION;
     }
 
     /**
@@ -76,11 +75,11 @@
                     for (int i = 0; i < controlCount; ++i) {
                         final ImageView image = (i == 0) ?
                                 new ReferenceImageView(activity) : new ImageView(activity);
-                        final int x = (i % mPerRowControlCount) * CONTROL_DIMENTION;
-                        final int y = (i / mPerRowControlCount) * CONTROL_DIMENTION;
+                        final int x = (i % mPerRowControlCount) * CONTROL_DIMENSION;
+                        final int y = (i / mPerRowControlCount) * CONTROL_DIMENSION;
                         final AbsoluteLayout.LayoutParams layoutParams =
                                 new AbsoluteLayout.LayoutParams(
-                                        CONTROL_DIMENTION, CONTROL_DIMENTION, x, y);
+                                        CONTROL_DIMENSION, CONTROL_DIMENSION, x, y);
                         image.setLayoutParams(layoutParams);
                         image.setBackgroundResource(R.drawable.animation);
                         final AnimationDrawable animation =
diff --git a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
index 0f4c668..6d8c43c 100644
--- a/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
+++ b/tests/HwAccelerationTest/src/com/android/test/hwui/TextureViewActivity.java
@@ -122,7 +122,7 @@
             if (info.facing == Camera.CameraInfo.CAMERA_FACING_BACK) break;
         }
         
-        int rotation = getWindowManager().getDefaultDisplay().getRotation();
+        int rotation = getDisplay().getRotation();
         int degrees = 0;
 
         switch (rotation) {
diff --git a/tests/MemoryUsage/src/com/android/tests/memoryusage/MemoryUsageTest.java b/tests/MemoryUsage/src/com/android/tests/memoryusage/MemoryUsageTest.java
index 1361df3..5904916 100644
--- a/tests/MemoryUsage/src/com/android/tests/memoryusage/MemoryUsageTest.java
+++ b/tests/MemoryUsage/src/com/android/tests/memoryusage/MemoryUsageTest.java
@@ -321,7 +321,8 @@
                 }
 
                 mAtm.startActivityAndWait(null,
-                        getInstrumentation().getContext().getBasePackageName(), mLaunchIntent,
+                        getInstrumentation().getContext().getBasePackageName(),
+                        getInstrumentation().getContext().getFeatureId(), mLaunchIntent,
                         mimeType, null, null, 0, mLaunchIntent.getFlags(), null, null,
                         UserHandle.USER_CURRENT_OR_SELF);
             } catch (RemoteException e) {
diff --git a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
index b863713..e255ce2 100644
--- a/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
+++ b/tests/MirrorSurfaceTest/src/com/google/android/test/mirrorsurface/MirrorSurfaceActivity.java
@@ -16,6 +16,7 @@
 
 package com.google.android.test.mirrorsurface;
 
+import static android.view.WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
 
 import android.app.Activity;
 import android.graphics.Canvas;
@@ -26,7 +27,7 @@
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.RemoteException;
-import android.util.DisplayMetrics;
+import android.util.Size;
 import android.view.Gravity;
 import android.view.IWindowManager;
 import android.view.MotionEvent;
@@ -48,6 +49,8 @@
     private static final int MOVE_FRAME_AMOUNT = 20;
 
     private IWindowManager mIWm;
+    // An instance of WindowManager that is adjusted for adding windows with type
+    // TYPE_APPLICATION_OVERLAY.
     private WindowManager mWm;
 
     private SurfaceControl mSurfaceControl = new SurfaceControl();
@@ -57,7 +60,7 @@
     private View mOverlayView;
     private View mArrowOverlay;
 
-    private Rect mDisplayBounds = new Rect();
+    private Rect mWindowBounds = new Rect();
 
     private EditText mScaleText;
     private EditText mDisplayFrameText;
@@ -83,21 +86,21 @@
         super.onCreate(savedInstanceState);
 
         setContentView(R.layout.activity_mirror_surface);
-        mWm = (WindowManager) getSystemService(WINDOW_SERVICE);
+        mWm = createWindowContext(TYPE_APPLICATION_OVERLAY, null /* options */)
+                .getSystemService(WindowManager.class);
         mIWm = WindowManagerGlobal.getWindowManagerService();
 
-        DisplayMetrics displayMetrics = new DisplayMetrics();
-        getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);
-        mDisplayBounds.set(0, 0, displayMetrics.widthPixels, displayMetrics.heightPixels);
+        Size windowSize = mWm.getCurrentWindowMetrics().getSize();
+        mWindowBounds.set(0, 0, windowSize.getWidth(), windowSize.getHeight());
 
         mScaleText = findViewById(R.id.scale);
         mDisplayFrameText = findViewById(R.id.displayFrame);
         mSourcePositionText = findViewById(R.id.sourcePosition);
 
-        mCurrFrame.set(0, 0, mDisplayBounds.width() / 2, mDisplayBounds.height() / 2);
+        mCurrFrame.set(0, 0, mWindowBounds.width() / 2, mWindowBounds.height() / 2);
         mCurrScale = DEFAULT_SCALE;
 
-        mDisplayId = getWindowManager().getDefaultDisplay().getDisplayId();
+        mDisplayId = getDisplay().getDisplayId();
         updateEditTexts();
 
         findViewById(R.id.mirror_button).setOnClickListener(view -> {
@@ -194,8 +197,8 @@
 
     private void createMirrorOverlay() {
         mOverlayView = new LinearLayout(this);
-        WindowManager.LayoutParams params = new WindowManager.LayoutParams(mDisplayBounds.width(),
-                mDisplayBounds.height(),
+        WindowManager.LayoutParams params = new WindowManager.LayoutParams(mWindowBounds.width(),
+                mWindowBounds.height(),
                 WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY,
                 WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                         | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
@@ -290,7 +293,7 @@
 
     private void updateMirror(Rect displayFrame, float scale) {
         if (displayFrame.isEmpty()) {
-            Rect bounds = mDisplayBounds;
+            Rect bounds = mWindowBounds;
             int defaultCropW = Math.round(bounds.width() / 2);
             int defaultCropH = Math.round(bounds.height() / 2);
             displayFrame.set(0, 0, defaultCropW, defaultCropH);
diff --git a/tests/PlatformCompatGating/Android.bp b/tests/PlatformCompatGating/Android.bp
index 609896e..342c47d 100644
--- a/tests/PlatformCompatGating/Android.bp
+++ b/tests/PlatformCompatGating/Android.bp
@@ -18,13 +18,12 @@
     name: "PlatformCompatGating",
     // Only compile source java files in this apk.
     srcs: ["src/**/*.java"],
-    libs: [
-        "android.test.runner",
-        "android.test.base",
-    ],
+    test_suites: ["device-tests"],
     static_libs: [
         "junit",
-        "android-support-test",
+        "androidx.test.runner",
+        "androidx.test.core",
+        "androidx.test.ext.junit",
         "mockito-target-minus-junit4",
         "truth-prebuilt",
         "platform-compat-test-rules"
diff --git a/tests/PlatformCompatGating/AndroidManifest.xml b/tests/PlatformCompatGating/AndroidManifest.xml
index 7f14b83..c24dc31 100644
--- a/tests/PlatformCompatGating/AndroidManifest.xml
+++ b/tests/PlatformCompatGating/AndroidManifest.xml
@@ -6,6 +6,6 @@
         <uses-library android:name="android.test.runner" />
     </application>
 
-    <instrumentation android:name="android.support.test.runner.AndroidJUnitRunner"
+    <instrumentation android:name="androidx.test.runner.AndroidJUnitRunner"
                      android:targetPackage="com.android.tests.gating"/>
 </manifest>
diff --git a/tests/PlatformCompatGating/AndroidTest.xml b/tests/PlatformCompatGating/AndroidTest.xml
index c626848..0c7485b 100644
--- a/tests/PlatformCompatGating/AndroidTest.xml
+++ b/tests/PlatformCompatGating/AndroidTest.xml
@@ -24,7 +24,6 @@
 
     <test class="com.android.tradefed.testtype.AndroidJUnitTest">
         <option name="package" value="com.android.tests.gating"/>
-        <option name="runner" value="android.support.test.runner.AndroidJUnitRunner"/>
         <option name="hidden-api-checks" value="false"/>
     </test>
 </configuration>
diff --git a/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatGatingTest.java b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatGatingTest.java
index dc317f19..c1ce0e9 100644
--- a/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatGatingTest.java
+++ b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatGatingTest.java
@@ -18,8 +18,9 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.compat.testing.PlatformCompatChangeRule;
-import android.support.test.InstrumentationRegistry;
-import android.support.test.runner.AndroidJUnit4;
+
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+import androidx.test.platform.app.InstrumentationRegistry;
 
 import com.android.compat.testing.DummyApi;
 
@@ -81,14 +82,14 @@
     @Test
     @EnableCompatChanges({DummyApi.CHANGE_SYSTEM_SERVER})
     public void testDummyGatingPositiveSystemServer() {
-        assertThat(
-                DummyApi.dummySystemServer(InstrumentationRegistry.getTargetContext())).isTrue();
+        assertThat(DummyApi.dummySystemServer(
+                InstrumentationRegistry.getInstrumentation().getTargetContext())).isTrue();
     }
 
     @Test
     @DisableCompatChanges({DummyApi.CHANGE_SYSTEM_SERVER})
     public void testDummyGatingNegativeSystemServer() {
-        assertThat(
-                DummyApi.dummySystemServer(InstrumentationRegistry.getTargetContext())).isFalse();
+        assertThat(DummyApi.dummySystemServer(
+                InstrumentationRegistry.getInstrumentation().getTargetContext())).isFalse();
     }
 }
diff --git a/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatPermissionsTest.java b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatPermissionsTest.java
new file mode 100644
index 0000000..9b9e581
--- /dev/null
+++ b/tests/PlatformCompatGating/src/com/android/tests/gating/PlatformCompatPermissionsTest.java
@@ -0,0 +1,319 @@
+/*
+ * 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.tests.gating;
+
+import static android.Manifest.permission.LOG_COMPAT_CHANGE;
+import static android.Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG;
+import static android.Manifest.permission.READ_COMPAT_CHANGE_CONFIG;
+
+import android.app.Instrumentation;
+import android.app.UiAutomation;
+import android.compat.Compatibility.ChangeConfig;
+import android.content.Context;
+import android.content.pm.PackageManager;
+import android.os.Process;
+import android.os.ServiceManager;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.internal.compat.CompatibilityChangeConfig;
+import com.android.internal.compat.IPlatformCompat;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.util.HashSet;
+import java.util.Set;
+
+@RunWith(JUnit4.class)
+public final class PlatformCompatPermissionsTest {
+
+    // private Context mContext;
+    private IPlatformCompat mPlatformCompat;
+
+    @Rule
+    public final ExpectedException thrown = ExpectedException.none();
+    private Context mContext;
+    private UiAutomation mUiAutomation;
+    private PackageManager mPackageManager;
+
+    @Before
+    public void setUp() {
+        // mContext;
+        mPlatformCompat = IPlatformCompat.Stub
+            .asInterface(ServiceManager.getService(Context.PLATFORM_COMPAT_SERVICE));
+        Instrumentation instrumentation = InstrumentationRegistry.getInstrumentation();
+        mUiAutomation = instrumentation.getUiAutomation();
+        mContext = instrumentation.getTargetContext();
+
+        mPackageManager = mContext.getPackageManager();
+    }
+
+    @After
+    public void tearDown() {
+
+        mUiAutomation.dropShellPermissionIdentity();
+    }
+
+    @Test
+    public void reportChange_noLogCompatChangePermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.reportChange(1, mPackageManager.getApplicationInfo(packageName, 0));
+    }
+
+    @Test
+    public void reportChange_logCompatChangePermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(LOG_COMPAT_CHANGE);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.reportChange(1, mPackageManager.getApplicationInfo(packageName, 0));
+    }
+
+    @Test
+    public void reportChangeByPackageName_noLogCompatChangePermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.reportChangeByPackageName(1, packageName, 0);
+    }
+
+    @Test
+    public void reportChangeByPackageName_logCompatChangePermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(LOG_COMPAT_CHANGE);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.reportChangeByPackageName(1, packageName, 0);
+    }
+
+    @Test
+    public void reportChangeByUid_noLogCompatChangePermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.reportChangeByUid(1, Process.myUid());
+    }
+
+    @Test
+    public void reportChangeByUid_logCompatChangePermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(LOG_COMPAT_CHANGE);
+
+        mPlatformCompat.reportChangeByUid(1, Process.myUid());
+    }
+
+    @Test
+    public void isChangeEnabled_noReadCompatConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabled(1, mPackageManager.getApplicationInfo(packageName, 0));
+    }
+
+    @Test
+    public void isChangeEnabled_noLogCompatChangeConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabled(1, mPackageManager.getApplicationInfo(packageName, 0));
+    }
+
+    @Test
+    public void isChangeEnabled_readAndLogCompatChangeConfigPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG, LOG_COMPAT_CHANGE);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabled(1, mPackageManager.getApplicationInfo(packageName, 0));
+    }
+
+    @Test
+    public void isChangeEnabledByPackageName_noReadCompatConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabledByPackageName(1, packageName, 0);
+    }
+
+    @Test
+    public void isChangeEnabledByPackageName_noLogompatConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabledByPackageName(1, packageName, 0);
+    }
+
+    @Test
+    public void isChangeEnabledByPackageName_readAndLogCompatChangeConfigPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG, LOG_COMPAT_CHANGE);
+        final String packageName = mContext.getPackageName();
+
+        mPlatformCompat.isChangeEnabledByPackageName(1, packageName, 0);
+    }
+
+    @Test
+    public void isChangeEnabledByUid_noReadCompatConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.isChangeEnabledByUid(1, Process.myUid());
+    }
+
+    @Test
+    public void isChangeEnabledByUid_noLogCompatChangePermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG);
+
+        mPlatformCompat.isChangeEnabledByUid(1, Process.myUid());
+    }
+
+    @Test
+    public void isChangeEnabledByUid_readAndLogCompatChangeConfigPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG, LOG_COMPAT_CHANGE);
+
+        mPlatformCompat.isChangeEnabledByUid(1, Process.myUid());
+    }
+
+    @Test
+    public void setOverrides_noOverridesPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        Set<Long> enabled = new HashSet<>();
+        Set<Long> disabled = new HashSet<>();
+        ChangeConfig changeConfig = new ChangeConfig(enabled, disabled);
+        CompatibilityChangeConfig compatibilityChangeConfig =
+                new CompatibilityChangeConfig(changeConfig);
+
+        mPlatformCompat.setOverrides(compatibilityChangeConfig, "foo.bar");
+    }
+    @Test
+    public void setOverrides_overridesPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
+        Set<Long> enabled = new HashSet<>();
+        Set<Long> disabled = new HashSet<>();
+        ChangeConfig changeConfig = new ChangeConfig(enabled, disabled);
+        CompatibilityChangeConfig compatibilityChangeConfig =
+                new CompatibilityChangeConfig(changeConfig);
+
+        mPlatformCompat.setOverrides(compatibilityChangeConfig, "foo.bar");
+    }
+
+    @Test
+    public void setOverridesForTest_noOverridesPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+        Set<Long> enabled = new HashSet<>();
+        Set<Long> disabled = new HashSet<>();
+        ChangeConfig changeConfig = new ChangeConfig(enabled, disabled);
+        CompatibilityChangeConfig compatibilityChangeConfig =
+                new CompatibilityChangeConfig(changeConfig);
+
+        mPlatformCompat.setOverridesForTest(compatibilityChangeConfig, "foo.bar");
+    }
+    @Test
+    public void setOverridesForTest_overridesPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
+        Set<Long> enabled = new HashSet<>();
+        Set<Long> disabled = new HashSet<>();
+        ChangeConfig changeConfig = new ChangeConfig(enabled, disabled);
+        CompatibilityChangeConfig compatibilityChangeConfig =
+                new CompatibilityChangeConfig(changeConfig);
+
+        mPlatformCompat.setOverridesForTest(compatibilityChangeConfig, "foo.bar");
+    }
+
+    @Test
+    public void clearOverrides_noOverridesPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.clearOverrides("foo.bar");
+    }
+    @Test
+    public void clearOverrides_overridesPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
+
+        mPlatformCompat.clearOverrides("foo.bar");
+    }
+
+    @Test
+    public void clearOverridesForTest_noOverridesPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.clearOverridesForTest("foo.bar");
+    }
+    @Test
+    public void clearOverridesForTest_overridesPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
+
+        mPlatformCompat.clearOverridesForTest("foo.bar");
+    }
+
+    @Test
+    public void clearOverride_noOverridesPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.clearOverride(1, "foo.bar");
+    }
+    @Test
+    public void clearOverride_overridesPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(OVERRIDE_COMPAT_CHANGE_CONFIG);
+
+        mPlatformCompat.clearOverride(1, "foo.bar");
+    }
+
+    @Test
+    public void listAllChanges_noReadCompatConfigPermission_throwsSecurityException()
+            throws Throwable {
+        thrown.expect(SecurityException.class);
+
+        mPlatformCompat.listAllChanges();
+    }
+    @Test
+    public void listAllChanges_readCompatConfigPermission_noThrow()
+            throws Throwable {
+        mUiAutomation.adoptShellPermissionIdentity(READ_COMPAT_CHANGE_CONFIG);
+
+        mPlatformCompat.listAllChanges();
+    }
+}
diff --git a/tests/PlatformCompatGating/test-rules/Android.bp b/tests/PlatformCompatGating/test-rules/Android.bp
index 8211ef5..10fa2dc 100644
--- a/tests/PlatformCompatGating/test-rules/Android.bp
+++ b/tests/PlatformCompatGating/test-rules/Android.bp
@@ -19,7 +19,7 @@
     srcs: ["src/**/*.java"],
     static_libs: [
         "junit",
-        "android-support-test",
+        "androidx.test.core",
         "truth-prebuilt",
         "core-compat-test-rules"
     ],
diff --git a/tests/PlatformCompatGating/test-rules/src/android/compat/testing/PlatformCompatChangeRule.java b/tests/PlatformCompatGating/test-rules/src/android/compat/testing/PlatformCompatChangeRule.java
index c00aa2a..d6846fa 100644
--- a/tests/PlatformCompatGating/test-rules/src/android/compat/testing/PlatformCompatChangeRule.java
+++ b/tests/PlatformCompatGating/test-rules/src/android/compat/testing/PlatformCompatChangeRule.java
@@ -24,7 +24,9 @@
 import android.content.Context;
 import android.os.RemoteException;
 import android.os.ServiceManager;
-import android.support.test.InstrumentationRegistry;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
 
 import com.android.internal.compat.CompatibilityChangeConfig;
 import com.android.internal.compat.IPlatformCompat;
@@ -93,8 +95,9 @@
                 throw new IllegalStateException("Could not get IPlatformCompat service!");
             }
             uiAutomation.adoptShellPermissionIdentity(
-                    Manifest.permission.READ_COMPAT_CHANGE_CONFIG,
-                    Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG);
+                    Manifest.permission.LOG_COMPAT_CHANGE,
+                    Manifest.permission.OVERRIDE_COMPAT_CHANGE_CONFIG,
+                    Manifest.permission.READ_COMPAT_CHANGE_CONFIG);
             Compatibility.setOverrides(mConfig);
             try {
                 platformCompat.setOverridesForTest(new CompatibilityChangeConfig(mConfig),
diff --git a/tests/RollbackTest/Android.bp b/tests/RollbackTest/Android.bp
index 98e7b4e..24623fb 100644
--- a/tests/RollbackTest/Android.bp
+++ b/tests/RollbackTest/Android.bp
@@ -29,13 +29,22 @@
     name: "StagedRollbackTest",
     srcs: ["StagedRollbackTest/src/**/*.java"],
     libs: ["tradefed"],
-    static_libs: ["testng", "compatibility-tradefed"],
+    static_libs: ["testng", "compatibility-tradefed", "RollbackTestLib"],
     test_suites: ["general-tests"],
     test_config: "StagedRollbackTest.xml",
     data: [":com.android.apex.apkrollback.test_v1"],
 }
 
 java_test_host {
+    name: "NetworkStagedRollbackTest",
+    srcs: ["NetworkStagedRollbackTest/src/**/*.java"],
+    libs: ["tradefed"],
+    static_libs: ["testng", "RollbackTestLib"],
+    test_suites: ["general-tests"],
+    test_config: "NetworkStagedRollbackTest.xml",
+}
+
+java_test_host {
     name: "MultiUserRollbackTest",
     srcs: ["MultiUserRollbackTest/src/**/*.java"],
     libs: ["tradefed"],
@@ -43,6 +52,12 @@
     test_config: "MultiUserRollbackTest.xml",
 }
 
+java_library_host {
+    name: "RollbackTestLib",
+    srcs: ["lib/src/**/*.java"],
+    libs: ["tradefed"],
+}
+
 genrule {
   name: "com.android.apex.apkrollback.test.pem",
   out: ["com.android.apex.apkrollback.test.pem"],
diff --git a/tests/RollbackTest/NetworkStagedRollbackTest.xml b/tests/RollbackTest/NetworkStagedRollbackTest.xml
new file mode 100644
index 0000000..a465a4f
--- /dev/null
+++ b/tests/RollbackTest/NetworkStagedRollbackTest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- 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.
+-->
+<configuration description="Runs the network staged rollback tests">
+    <option name="test-suite-tag" value="NetworkStagedRollbackTest" />
+    <target_preparer class="com.android.tradefed.targetprep.suite.SuiteApkInstaller">
+        <option name="cleanup-apks" value="true" />
+        <option name="test-file-name" value="RollbackTest.apk" />
+    </target_preparer>
+    <test class="com.android.tradefed.testtype.HostTest" >
+        <option name="class" value="com.android.tests.rollback.host.NetworkStagedRollbackTest" />
+    </test>
+</configuration>
diff --git a/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
new file mode 100644
index 0000000..d4e34f9
--- /dev/null
+++ b/tests/RollbackTest/NetworkStagedRollbackTest/src/com/android/tests/rollback/host/NetworkStagedRollbackTest.java
@@ -0,0 +1,130 @@
+/*
+ * 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.tests.rollback.host;
+
+import static com.android.tests.rollback.host.WatchdogEventLogger.watchdogEventOccurred;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+import static org.testng.Assert.assertThrows;
+
+import com.android.tradefed.testtype.DeviceJUnit4ClassRunner;
+import com.android.tradefed.testtype.junit4.BaseHostJUnit4Test;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import java.util.List;
+
+/**
+ * Runs the network rollback tests.
+ */
+@RunWith(DeviceJUnit4ClassRunner.class)
+public class NetworkStagedRollbackTest extends BaseHostJUnit4Test {
+    /**
+     * Runs the given phase of a test by calling into the device.
+     * Throws an exception if the test phase fails.
+     * <p>
+     * For example, <code>runPhase("testApkOnlyEnableRollback");</code>
+     */
+    private void runPhase(String phase) throws Exception {
+        assertTrue(runDeviceTests("com.android.tests.rollback",
+                "com.android.tests.rollback.NetworkStagedRollbackTest",
+                phase));
+    }
+
+    private static final String REASON_EXPLICIT_HEALTH_CHECK = "REASON_EXPLICIT_HEALTH_CHECK";
+
+    private static final String ROLLBACK_INITIATE = "ROLLBACK_INITIATE";
+    private static final String ROLLBACK_BOOT_TRIGGERED = "ROLLBACK_BOOT_TRIGGERED";
+
+    private WatchdogEventLogger mLogger = new WatchdogEventLogger();
+
+    @Before
+    public void setUp() throws Exception {
+        mLogger.start(getDevice());
+    }
+
+    @After
+    public void tearDown() throws Exception {
+        mLogger.stop();
+    }
+
+    /**
+     * Tests failed network health check triggers watchdog staged rollbacks.
+     */
+    @Test
+    public void testNetworkFailedRollback() throws Exception {
+        try {
+            // Disconnect internet so we can test network health triggered rollbacks
+            getDevice().executeShellCommand("svc wifi disable");
+            getDevice().executeShellCommand("svc data disable");
+
+            runPhase("testNetworkFailedRollback_Phase1");
+            // Reboot device to activate staged package
+            getDevice().reboot();
+
+            // Verify rollback was enabled
+            runPhase("testNetworkFailedRollback_Phase2");
+            assertThrows(AssertionError.class, () -> runPhase("testNetworkFailedRollback_Phase3"));
+
+            getDevice().waitForDeviceAvailable();
+            // Verify rollback was executed after health check deadline
+            runPhase("testNetworkFailedRollback_Phase4");
+
+            List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+            assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_INITIATE, null,
+                    REASON_EXPLICIT_HEALTH_CHECK, null));
+            assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_BOOT_TRIGGERED, null,
+                    null, null));
+        } finally {
+            // Reconnect internet again so we won't break tests which assume internet available
+            getDevice().executeShellCommand("svc wifi enable");
+            getDevice().executeShellCommand("svc data enable");
+        }
+    }
+
+    /**
+     * Tests passed network health check does not trigger watchdog staged rollbacks.
+     */
+    @Test
+    public void testNetworkPassedDoesNotRollback() throws Exception {
+        runPhase("testNetworkPassedDoesNotRollback_Phase1");
+        // Reboot device to activate staged package
+        getDevice().reboot();
+
+        // Verify rollback was enabled
+        runPhase("testNetworkPassedDoesNotRollback_Phase2");
+
+        // Connect to internet so network health check passes
+        getDevice().executeShellCommand("svc wifi enable");
+        getDevice().executeShellCommand("svc data enable");
+
+        // Wait for device available because emulator device may restart after turning
+        // on mobile data
+        getDevice().waitForDeviceAvailable();
+
+        // Verify rollback was not executed after health check deadline
+        runPhase("testNetworkPassedDoesNotRollback_Phase3");
+
+        List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+        assertEquals(watchdogEventOccurred(watchdogEvents, null, null,
+                REASON_EXPLICIT_HEALTH_CHECK, null), false);
+    }
+}
diff --git a/tests/RollbackTest/RollbackTest.xml b/tests/RollbackTest/RollbackTest.xml
index a14b01c..f2c0f86 100644
--- a/tests/RollbackTest/RollbackTest.xml
+++ b/tests/RollbackTest/RollbackTest.xml
@@ -22,9 +22,9 @@
         <option name="package" value="com.android.tests.rollback" />
         <option name="runner" value="androidx.test.runner.AndroidJUnitRunner" />
 
-        <!-- Exclude the StagedRollbackTest and MultiUserRollbackTest tests, which need to be
-             specially driven from the StagedRollbackTest and MultiUserRollbackTest host test -->
+        <!-- Exclude the device tests which need to be specially driven from the host tests -->
         <option name="exclude-filter" value="com.android.tests.rollback.StagedRollbackTest" />
+        <option name="exclude-filter" value="com.android.tests.rollback.NetworkStagedRollbackTest" />
         <option name="exclude-filter" value="com.android.tests.rollback.MultiUserRollbackTest" />
     </test>
 </configuration>
diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java
new file mode 100644
index 0000000..35bc65a
--- /dev/null
+++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/NetworkStagedRollbackTest.java
@@ -0,0 +1,197 @@
+/*
+ * 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.tests.rollback;
+
+import static com.android.cts.rollback.lib.RollbackInfoSubject.assertThat;
+import static com.android.cts.rollback.lib.RollbackUtils.getUniqueRollbackInfoForPackage;
+
+import android.Manifest;
+import android.content.ComponentName;
+import android.content.Intent;
+import android.content.pm.PackageManager;
+import android.content.rollback.RollbackManager;
+import android.os.ParcelFileDescriptor;
+import android.provider.DeviceConfig;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+
+import com.android.cts.install.lib.Install;
+import com.android.cts.install.lib.InstallUtils;
+import com.android.cts.install.lib.TestApp;
+import com.android.cts.rollback.lib.RollbackUtils;
+
+import libcore.io.IoUtils;
+
+import org.junit.After;
+import org.junit.Before;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+import org.junit.runners.JUnit4;
+
+import java.io.File;
+import java.util.concurrent.TimeUnit;
+
+@RunWith(JUnit4.class)
+public class NetworkStagedRollbackTest {
+    private static final String NETWORK_STACK_CONNECTOR_CLASS =
+            "android.net.INetworkStackConnector";
+    private static final String PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS =
+            "watchdog_request_timeout_millis";
+
+    private static final TestApp NETWORK_STACK = new TestApp("NetworkStack",
+            getNetworkStackPackageName(), -1, false, findNetworkStackApk());
+
+    private static File findNetworkStackApk() {
+        final File apk = new File("/system/priv-app/NetworkStack/NetworkStack.apk");
+        if (apk.isFile()) {
+            return apk;
+        }
+        return new File("/system/priv-app/NetworkStackNext/NetworkStackNext.apk");
+    }
+
+    /**
+     * Adopts common shell permissions needed for rollback tests.
+     */
+    @Before
+    public void adoptShellPermissions() {
+        InstallUtils.adoptShellPermissionIdentity(
+                Manifest.permission.INSTALL_PACKAGES,
+                Manifest.permission.DELETE_PACKAGES,
+                Manifest.permission.TEST_MANAGE_ROLLBACKS,
+                Manifest.permission.FORCE_STOP_PACKAGES,
+                Manifest.permission.WRITE_DEVICE_CONFIG);
+    }
+
+    /**
+     * Drops shell permissions needed for rollback tests.
+     */
+    @After
+    public void dropShellPermissions() {
+        InstallUtils.dropShellPermissionIdentity();
+    }
+
+    @Test
+    public void testNetworkFailedRollback_Phase1() throws Exception {
+        // Remove available rollbacks and uninstall NetworkStack on /data/
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        String networkStack = getNetworkStackPackageName();
+
+        rm.expireRollbackForPackage(networkStack);
+        uninstallNetworkStackPackage();
+
+        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+                networkStack)).isNull();
+
+        // Reduce health check deadline
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
+                PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
+                Integer.toString(120000), false);
+        // Simulate re-installation of new NetworkStack with rollbacks enabled
+        installNetworkStackPackage();
+    }
+
+    @Test
+    public void testNetworkFailedRollback_Phase2() throws Exception {
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+                getNetworkStackPackageName())).isNotNull();
+
+        // Sleep for < health check deadline
+        Thread.sleep(TimeUnit.SECONDS.toMillis(5));
+        // Verify rollback was not executed before health check deadline
+        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
+                getNetworkStackPackageName())).isNull();
+    }
+
+    @Test
+    public void testNetworkFailedRollback_Phase3() throws Exception {
+        // Sleep for > health check deadline (120s to trigger rollback + 120s to reboot)
+        // The device is expected to reboot during sleeping. This device method will fail and
+        // the host will catch the assertion. If reboot doesn't happen, the host will fail the
+        // assertion.
+        Thread.sleep(TimeUnit.SECONDS.toMillis(240));
+    }
+
+    @Test
+    public void testNetworkFailedRollback_Phase4() throws Exception {
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
+                getNetworkStackPackageName())).isNotNull();
+    }
+
+    private static String getNetworkStackPackageName() {
+        Intent intent = new Intent(NETWORK_STACK_CONNECTOR_CLASS);
+        ComponentName comp = intent.resolveSystemService(
+                InstrumentationRegistry.getInstrumentation().getContext().getPackageManager(), 0);
+        return comp.getPackageName();
+    }
+
+    private static void installNetworkStackPackage() throws Exception {
+        Install.single(NETWORK_STACK).setStaged().setEnableRollback()
+                .addInstallFlags(PackageManager.INSTALL_REPLACE_EXISTING).commit();
+    }
+
+    private static void uninstallNetworkStackPackage() {
+        // Uninstall the package as a privileged user so we won't fail due to permission.
+        runShellCommand("pm uninstall " + getNetworkStackPackageName());
+    }
+
+    @Test
+    public void testNetworkPassedDoesNotRollback_Phase1() throws Exception {
+        // Remove available rollbacks and uninstall NetworkStack on /data/
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        String networkStack = getNetworkStackPackageName();
+
+        rm.expireRollbackForPackage(networkStack);
+        uninstallNetworkStackPackage();
+
+        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+                networkStack)).isNull();
+
+        // Reduce health check deadline, here unlike the network failed case, we use
+        // a longer deadline because joining a network can take a much longer time for
+        // reasons external to the device than 'not joining'
+        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
+                PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
+                Integer.toString(300000), false);
+        // Simulate re-installation of new NetworkStack with rollbacks enabled
+        installNetworkStackPackage();
+    }
+
+    @Test
+    public void testNetworkPassedDoesNotRollback_Phase2() throws Exception {
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
+                getNetworkStackPackageName())).isNotNull();
+    }
+
+    @Test
+    public void testNetworkPassedDoesNotRollback_Phase3() throws Exception {
+        // Sleep for > health check deadline. We expect no rollback should happen during sleeping.
+        // If the device reboots for rollback, this device test will fail as well as the host test.
+        Thread.sleep(TimeUnit.SECONDS.toMillis(310));
+        RollbackManager rm = RollbackUtils.getRollbackManager();
+        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
+                getNetworkStackPackageName())).isNull();
+    }
+
+    private static void runShellCommand(String cmd) {
+        ParcelFileDescriptor pfd = InstrumentationRegistry.getInstrumentation().getUiAutomation()
+                .executeShellCommand(cmd);
+        IoUtils.closeQuietly(pfd);
+    }
+}
diff --git a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
index 80491cd..70be83f 100644
--- a/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
+++ b/tests/RollbackTest/RollbackTest/src/com/android/tests/rollback/StagedRollbackTest.java
@@ -22,14 +22,11 @@
 import static com.google.common.truth.Truth.assertThat;
 
 import android.Manifest;
-import android.content.ComponentName;
 import android.content.Context;
-import android.content.Intent;
 import android.content.pm.PackageInstaller;
 import android.content.pm.PackageManager;
 import android.content.rollback.RollbackInfo;
 import android.content.rollback.RollbackManager;
-import android.os.ParcelFileDescriptor;
 import android.os.storage.StorageManager;
 import android.provider.DeviceConfig;
 
@@ -44,8 +41,6 @@
 import com.android.cts.rollback.lib.RollbackUtils;
 import com.android.internal.R;
 
-import libcore.io.IoUtils;
-
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
@@ -65,24 +60,8 @@
  */
 @RunWith(JUnit4.class)
 public class StagedRollbackTest {
-
-    private static final String NETWORK_STACK_CONNECTOR_CLASS =
-            "android.net.INetworkStackConnector";
     private static final String PROPERTY_WATCHDOG_TRIGGER_FAILURE_COUNT =
             "watchdog_trigger_failure_count";
-    private static final String PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS =
-            "watchdog_request_timeout_millis";
-
-    private static final TestApp NETWORK_STACK = new TestApp("NetworkStack",
-            getNetworkStackPackageName(), -1, false, findNetworkStackApk());
-
-    private static File findNetworkStackApk() {
-        final File apk = new File("/system/priv-app/NetworkStack/NetworkStack.apk");
-        if (apk.isFile()) {
-            return apk;
-        }
-        return new File("/system/priv-app/NetworkStackNext/NetworkStackNext.apk");
-    }
 
     /**
      * Adopts common shell permissions needed for rollback tests.
@@ -275,72 +254,6 @@
     }
 
     @Test
-    public void testNetworkFailedRollback_Phase1() throws Exception {
-        // Remove available rollbacks and uninstall NetworkStack on /data/
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        String networkStack = getNetworkStackPackageName();
-
-        rm.expireRollbackForPackage(networkStack);
-        uninstallNetworkStackPackage();
-
-        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
-                        networkStack)).isNull();
-
-        // Reduce health check deadline
-        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
-                PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
-                Integer.toString(120000), false);
-        // Simulate re-installation of new NetworkStack with rollbacks enabled
-        installNetworkStackPackage();
-    }
-
-    @Test
-    public void testNetworkFailedRollback_Phase2() throws Exception {
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
-                        getNetworkStackPackageName())).isNotNull();
-
-        // Sleep for < health check deadline
-        Thread.sleep(TimeUnit.SECONDS.toMillis(5));
-        // Verify rollback was not executed before health check deadline
-        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
-                        getNetworkStackPackageName())).isNull();
-    }
-
-    @Test
-    public void testNetworkFailedRollback_Phase3() throws Exception {
-        // Sleep for > health check deadline (120s to trigger rollback + 120s to reboot)
-        // The device is expected to reboot during sleeping. This device method will fail and
-        // the host will catch the assertion. If reboot doesn't happen, the host will fail the
-        // assertion.
-        Thread.sleep(TimeUnit.SECONDS.toMillis(240));
-    }
-
-    @Test
-    public void testNetworkFailedRollback_Phase4() throws Exception {
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
-                        getNetworkStackPackageName())).isNotNull();
-    }
-
-    private static String getNetworkStackPackageName() {
-        Intent intent = new Intent(NETWORK_STACK_CONNECTOR_CLASS);
-        ComponentName comp = intent.resolveSystemService(
-                InstrumentationRegistry.getInstrumentation().getContext().getPackageManager(), 0);
-        return comp.getPackageName();
-    }
-
-    private static void installNetworkStackPackage() throws Exception {
-        Install.single(NETWORK_STACK).setStaged().setEnableRollback()
-                .addInstallFlags(PackageManager.INSTALL_REPLACE_EXISTING).commit();
-    }
-
-    private static void uninstallNetworkStackPackage() {
-        // Uninstall the package as a privileged user so we won't fail due to permission.
-        runShellCommand("pm uninstall " + getNetworkStackPackageName());
-    }
-
-    @Test
     public void testPreviouslyAbandonedRollbacks_Phase1() throws Exception {
         Uninstall.packages(TestApp.A);
         Install.single(TestApp.A1).commit();
@@ -376,45 +289,6 @@
         Uninstall.packages(TestApp.A);
     }
 
-    @Test
-    public void testNetworkPassedDoesNotRollback_Phase1() throws Exception {
-        // Remove available rollbacks and uninstall NetworkStack on /data/
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        String networkStack = getNetworkStackPackageName();
-
-        rm.expireRollbackForPackage(networkStack);
-        uninstallNetworkStackPackage();
-
-        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
-                        networkStack)).isNull();
-
-        // Reduce health check deadline, here unlike the network failed case, we use
-        // a longer deadline because joining a network can take a much longer time for
-        // reasons external to the device than 'not joining'
-        DeviceConfig.setProperty(DeviceConfig.NAMESPACE_ROLLBACK,
-                PROPERTY_WATCHDOG_REQUEST_TIMEOUT_MILLIS,
-                Integer.toString(300000), false);
-        // Simulate re-installation of new NetworkStack with rollbacks enabled
-        installNetworkStackPackage();
-    }
-
-    @Test
-    public void testNetworkPassedDoesNotRollback_Phase2() throws Exception {
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        assertThat(getUniqueRollbackInfoForPackage(rm.getAvailableRollbacks(),
-                        getNetworkStackPackageName())).isNotNull();
-    }
-
-    @Test
-    public void testNetworkPassedDoesNotRollback_Phase3() throws Exception {
-        // Sleep for > health check deadline. We expect no rollback should happen during sleeping.
-        // If the device reboots for rollback, this device test will fail as well as the host test.
-        Thread.sleep(TimeUnit.SECONDS.toMillis(310));
-        RollbackManager rm = RollbackUtils.getRollbackManager();
-        assertThat(getUniqueRollbackInfoForPackage(rm.getRecentlyCommittedRollbacks(),
-                        getNetworkStackPackageName())).isNull();
-    }
-
     private static String getModuleMetadataPackageName() {
         return InstrumentationRegistry.getInstrumentation().getContext()
                 .getResources().getString(R.string.config_defaultModuleMetadataProvider);
@@ -584,10 +458,23 @@
         assertThat(InstallUtils.getInstalledVersion(TestApp.A)).isEqualTo(1);
     }
 
-    private static void runShellCommand(String cmd) {
-        ParcelFileDescriptor pfd = InstrumentationRegistry.getInstrumentation().getUiAutomation()
-                .executeShellCommand(cmd);
-        IoUtils.closeQuietly(pfd);
+    @Test
+    public void testRollbackApexDataDirectories_Phase1() throws Exception {
+        int sessionId = Install.single(TEST_APEX_WITH_APK_V2).setStaged().setEnableRollback()
+                .commit();
+        InstallUtils.waitForSessionReady(sessionId);
+    }
+
+    @Test
+    public void testRollbackApexDataDirectories_Phase2() throws Exception {
+        RollbackInfo available = RollbackUtils.getAvailableRollback(APK_IN_APEX_TESTAPEX_NAME);
+
+        RollbackUtils.rollback(available.getRollbackId(), TEST_APEX_WITH_APK_V2);
+        RollbackInfo committed = RollbackUtils.getCommittedRollbackById(available.getRollbackId());
+
+        // Note: The app is not rolled back until after the rollback is staged
+        // and the device has been rebooted.
+        InstallUtils.waitForSessionReady(committed.getCommittedSessionId());
     }
 
     @Test
diff --git a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
index 672cbb0..8104d1d 100644
--- a/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
+++ b/tests/RollbackTest/StagedRollbackTest/src/com/android/tests/rollback/host/StagedRollbackTest.java
@@ -16,6 +16,10 @@
 
 package com.android.tests.rollback.host;
 
+import static com.android.tests.rollback.host.WatchdogEventLogger.watchdogEventOccurred;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
 import static org.junit.Assert.assertTrue;
 import static org.junit.Assume.assumeTrue;
 import static org.testng.Assert.assertThrows;
@@ -30,10 +34,13 @@
 import org.junit.runner.RunWith;
 
 import java.io.File;
+import java.util.List;
 import java.util.concurrent.TimeUnit;
 
 /**
  * Runs the staged rollback tests.
+ *
+ * TODO(gavincorkery): Support the verification of logging parents in Watchdog metrics.
  */
 @RunWith(DeviceJUnit4ClassRunner.class)
 public class StagedRollbackTest extends BaseHostJUnit4Test {
@@ -52,6 +59,27 @@
     }
 
     private static final String APK_IN_APEX_TESTAPEX_NAME = "com.android.apex.apkrollback.test";
+    private static final String TESTAPP_A = "com.android.cts.install.lib.testapp.A";
+
+    private static final String TEST_SUBDIR = "/subdir/";
+
+    private static final String TEST_FILENAME_1 = "test_file.txt";
+    private static final String TEST_STRING_1 = "hello this is a test";
+    private static final String TEST_FILENAME_2 = "another_file.txt";
+    private static final String TEST_STRING_2 = "this is a different file";
+    private static final String TEST_FILENAME_3 = "also.xyz";
+    private static final String TEST_STRING_3 = "also\n a\n test\n string";
+    private static final String TEST_FILENAME_4 = "one_more.test";
+    private static final String TEST_STRING_4 = "once more unto the test";
+
+    private static final String REASON_APP_CRASH = "REASON_APP_CRASH";
+    private static final String REASON_NATIVE_CRASH = "REASON_NATIVE_CRASH";
+    private static final String REASON_EXPLICIT_HEALTH_CHECK = "REASON_EXPLICIT_HEALTH_CHECK";
+
+    private static final String ROLLBACK_INITIATE = "ROLLBACK_INITIATE";
+    private static final String ROLLBACK_BOOT_TRIGGERED = "ROLLBACK_BOOT_TRIGGERED";
+
+    private WatchdogEventLogger mLogger = new WatchdogEventLogger();
 
     @Before
     public void setUp() throws Exception {
@@ -64,10 +92,12 @@
                         + "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex");
         getDevice().reboot();
         runPhase("testCleanUp");
+        mLogger.start(getDevice());
     }
 
     @After
     public void tearDown() throws Exception {
+        mLogger.stop();
         runPhase("testCleanUp");
 
         if (!getDevice().isAdbRoot()) {
@@ -77,6 +107,10 @@
         getDevice().executeShellCommand(
                 "rm -f /system/apex/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex "
                         + "/data/apex/active/" + APK_IN_APEX_TESTAPEX_NAME + "*.apex");
+        getDevice().executeShellCommand(
+                "rm -rf " + apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "*");
+        getDevice().executeShellCommand(
+                "rm -rf " + apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + "*");
         getDevice().reboot();
     }
 
@@ -93,6 +127,12 @@
         getDevice().waitForDeviceAvailable();
 
         runPhase("testBadApkOnly_Phase4");
+
+        List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_INITIATE, null,
+                REASON_APP_CRASH, TESTAPP_A));
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_BOOT_TRIGGERED, null,
+                null, null));
     }
 
     @Test
@@ -120,6 +160,12 @@
 
         // verify rollback committed
         runPhase("testNativeWatchdogTriggersRollback_Phase3");
+
+        List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_INITIATE, null,
+                        REASON_NATIVE_CRASH, null));
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_BOOT_TRIGGERED, null,
+                null, null));
     }
 
     @Test
@@ -154,58 +200,12 @@
 
         // verify all available rollbacks have been committed
         runPhase("testNativeWatchdogTriggersRollbackForAll_Phase4");
-    }
 
-    /**
-     * Tests failed network health check triggers watchdog staged rollbacks.
-     */
-    @Test
-    public void testNetworkFailedRollback() throws Exception {
-        try {
-            // Disconnect internet so we can test network health triggered rollbacks
-            getDevice().executeShellCommand("svc wifi disable");
-            getDevice().executeShellCommand("svc data disable");
-
-            runPhase("testNetworkFailedRollback_Phase1");
-            // Reboot device to activate staged package
-            getDevice().reboot();
-
-            // Verify rollback was enabled
-            runPhase("testNetworkFailedRollback_Phase2");
-            assertThrows(AssertionError.class, () -> runPhase("testNetworkFailedRollback_Phase3"));
-
-            getDevice().waitForDeviceAvailable();
-            // Verify rollback was executed after health check deadline
-            runPhase("testNetworkFailedRollback_Phase4");
-        } finally {
-            // Reconnect internet again so we won't break tests which assume internet available
-            getDevice().executeShellCommand("svc wifi enable");
-            getDevice().executeShellCommand("svc data enable");
-        }
-    }
-
-    /**
-     * Tests passed network health check does not trigger watchdog staged rollbacks.
-     */
-    @Test
-    public void testNetworkPassedDoesNotRollback() throws Exception {
-        runPhase("testNetworkPassedDoesNotRollback_Phase1");
-        // Reboot device to activate staged package
-        getDevice().reboot();
-
-        // Verify rollback was enabled
-        runPhase("testNetworkPassedDoesNotRollback_Phase2");
-
-        // Connect to internet so network health check passes
-        getDevice().executeShellCommand("svc wifi enable");
-        getDevice().executeShellCommand("svc data enable");
-
-        // Wait for device available because emulator device may restart after turning
-        // on mobile data
-        getDevice().waitForDeviceAvailable();
-
-        // Verify rollback was not executed after health check deadline
-        runPhase("testNetworkPassedDoesNotRollback_Phase3");
+        List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_INITIATE, null,
+                        REASON_NATIVE_CRASH, null));
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_BOOT_TRIGGERED, null,
+                null, null));
     }
 
     /**
@@ -245,15 +245,7 @@
     @Test
     public void testRollbackApexWithApk() throws Exception {
         getDevice().uninstallPackage("com.android.cts.install.lib.testapp.A");
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
-        final String fileName = APK_IN_APEX_TESTAPEX_NAME + "_v1.apex";
-        final File apex = buildHelper.getTestFile(fileName);
-        if (!getDevice().isAdbRoot()) {
-            getDevice().enableAdbRoot();
-        }
-        getDevice().remountSystemWritable();
-        assertTrue(getDevice().pushFile(apex, "/system/apex/" + fileName));
-        getDevice().reboot();
+        pushTestApex();
         runPhase("testRollbackApexWithApk_Phase1");
         getDevice().reboot();
         runPhase("testRollbackApexWithApk_Phase2");
@@ -267,15 +259,7 @@
     @Test
     public void testRollbackApexWithApkCrashing() throws Exception {
         getDevice().uninstallPackage("com.android.cts.install.lib.testapp.A");
-        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
-        final String fileName = APK_IN_APEX_TESTAPEX_NAME + "_v1.apex";
-        final File apex = buildHelper.getTestFile(fileName);
-        if (!getDevice().isAdbRoot()) {
-            getDevice().enableAdbRoot();
-        }
-        getDevice().remountSystemWritable();
-        assertTrue(getDevice().pushFile(apex, "/system/apex/" + fileName));
-        getDevice().reboot();
+        pushTestApex();
 
         // Install an apex with apk that crashes
         runPhase("testRollbackApexWithApkCrashing_Phase1");
@@ -287,6 +271,152 @@
         getDevice().waitForDeviceAvailable();
         // Verify rollback occurred due to crash of apk-in-apex
         runPhase("testRollbackApexWithApkCrashing_Phase3");
+
+        List<String> watchdogEvents = mLogger.getWatchdogLoggingEvents();
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_INITIATE, null,
+                REASON_APP_CRASH, TESTAPP_A));
+        assertTrue(watchdogEventOccurred(watchdogEvents, ROLLBACK_BOOT_TRIGGERED, null,
+                null, null));
+    }
+
+    /**
+     * Tests that data in DE_sys apex data directory is restored when apex is rolled back.
+     */
+    @Test
+    public void testRollbackApexDataDirectories_DeSys() throws Exception {
+        pushTestApex();
+
+        // Push files to apex data directory
+        String oldFilePath1 = apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "/" + TEST_FILENAME_1;
+        String oldFilePath2 =
+                apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + TEST_SUBDIR + TEST_FILENAME_2;
+        assertTrue(getDevice().pushString(TEST_STRING_1, oldFilePath1));
+        assertTrue(getDevice().pushString(TEST_STRING_2, oldFilePath2));
+
+        // Install new version of the APEX with rollback enabled
+        runPhase("testRollbackApexDataDirectories_Phase1");
+        getDevice().reboot();
+
+        // Replace files in data directory
+        getDevice().deleteFile(oldFilePath1);
+        getDevice().deleteFile(oldFilePath2);
+        String newFilePath3 = apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + "/" + TEST_FILENAME_3;
+        String newFilePath4 =
+                apexDataDirDeSys(APK_IN_APEX_TESTAPEX_NAME) + TEST_SUBDIR + TEST_FILENAME_4;
+        assertTrue(getDevice().pushString(TEST_STRING_3, newFilePath3));
+        assertTrue(getDevice().pushString(TEST_STRING_4, newFilePath4));
+
+        // Roll back the APEX
+        runPhase("testRollbackApexDataDirectories_Phase2");
+        getDevice().reboot();
+
+        // Verify that old files have been restored and new files are gone
+        assertEquals(TEST_STRING_1, getDevice().pullFileContents(oldFilePath1));
+        assertEquals(TEST_STRING_2, getDevice().pullFileContents(oldFilePath2));
+        assertNull(getDevice().pullFile(newFilePath3));
+        assertNull(getDevice().pullFile(newFilePath4));
+    }
+
+    /**
+     * Tests that data in DE (user) apex data directory is restored when apex is rolled back.
+     */
+    @Test
+    public void testRollbackApexDataDirectories_DeUser() throws Exception {
+        pushTestApex();
+
+        // Push files to apex data directory
+        String oldFilePath1 = apexDataDirDeUser(
+                APK_IN_APEX_TESTAPEX_NAME, 0) + "/" + TEST_FILENAME_1;
+        String oldFilePath2 =
+                apexDataDirDeUser(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
+        assertTrue(getDevice().pushString(TEST_STRING_1, oldFilePath1));
+        assertTrue(getDevice().pushString(TEST_STRING_2, oldFilePath2));
+
+        // Install new version of the APEX with rollback enabled
+        runPhase("testRollbackApexDataDirectories_Phase1");
+        getDevice().reboot();
+
+        // Replace files in data directory
+        getDevice().deleteFile(oldFilePath1);
+        getDevice().deleteFile(oldFilePath2);
+        String newFilePath3 =
+                apexDataDirDeUser(APK_IN_APEX_TESTAPEX_NAME, 0) + "/" + TEST_FILENAME_3;
+        String newFilePath4 =
+                apexDataDirDeUser(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_4;
+        assertTrue(getDevice().pushString(TEST_STRING_3, newFilePath3));
+        assertTrue(getDevice().pushString(TEST_STRING_4, newFilePath4));
+
+        // Roll back the APEX
+        runPhase("testRollbackApexDataDirectories_Phase2");
+        getDevice().reboot();
+
+        // Verify that old files have been restored and new files are gone
+        assertEquals(TEST_STRING_1, getDevice().pullFileContents(oldFilePath1));
+        assertEquals(TEST_STRING_2, getDevice().pullFileContents(oldFilePath2));
+        assertNull(getDevice().pullFile(newFilePath3));
+        assertNull(getDevice().pullFile(newFilePath4));
+    }
+
+    /**
+     * Tests that data in CE apex data directory is restored when apex is rolled back.
+     */
+    @Test
+    public void testRollbackApexDataDirectories_Ce() throws Exception {
+        pushTestApex();
+
+        // Push files to apex data directory
+        String oldFilePath1 = apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + "/" + TEST_FILENAME_1;
+        String oldFilePath2 =
+                apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_2;
+        assertTrue(getDevice().pushString(TEST_STRING_1, oldFilePath1));
+        assertTrue(getDevice().pushString(TEST_STRING_2, oldFilePath2));
+
+        // Install new version of the APEX with rollback enabled
+        runPhase("testRollbackApexDataDirectories_Phase1");
+        getDevice().reboot();
+
+        // Replace files in data directory
+        getDevice().deleteFile(oldFilePath1);
+        getDevice().deleteFile(oldFilePath2);
+        String newFilePath3 = apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + "/" + TEST_FILENAME_3;
+        String newFilePath4 =
+                apexDataDirCe(APK_IN_APEX_TESTAPEX_NAME, 0) + TEST_SUBDIR + TEST_FILENAME_4;
+        assertTrue(getDevice().pushString(TEST_STRING_3, newFilePath3));
+        assertTrue(getDevice().pushString(TEST_STRING_4, newFilePath4));
+
+        // Roll back the APEX
+        runPhase("testRollbackApexDataDirectories_Phase2");
+        getDevice().reboot();
+
+        // Verify that old files have been restored and new files are gone
+        assertEquals(TEST_STRING_1, getDevice().pullFileContents(oldFilePath1));
+        assertEquals(TEST_STRING_2, getDevice().pullFileContents(oldFilePath2));
+        assertNull(getDevice().pullFile(newFilePath3));
+        assertNull(getDevice().pullFile(newFilePath4));
+    }
+
+    private void pushTestApex() throws Exception {
+        CompatibilityBuildHelper buildHelper = new CompatibilityBuildHelper(getBuild());
+        final String fileName = APK_IN_APEX_TESTAPEX_NAME + "_v1.apex";
+        final File apex = buildHelper.getTestFile(fileName);
+        if (!getDevice().isAdbRoot()) {
+            getDevice().enableAdbRoot();
+        }
+        getDevice().remountSystemWritable();
+        assertTrue(getDevice().pushFile(apex, "/system/apex/" + fileName));
+        getDevice().reboot();
+    }
+
+    private static String apexDataDirDeSys(String apexName) {
+        return String.format("/data/misc/apexdata/%s", apexName);
+    }
+
+    private static String apexDataDirDeUser(String apexName, int userId) {
+        return String.format("/data/misc_de/%d/apexdata/%s", userId, apexName);
+    }
+
+    private static String apexDataDirCe(String apexName, int userId) {
+        return String.format("/data/misc_ce/%d/apexdata/%s", userId, apexName);
     }
 
     private void crashProcess(String processName, int numberOfCrashes) throws Exception {
@@ -303,11 +433,6 @@
         }
     }
 
-    private String getNetworkStackPath() throws Exception {
-        // Find the NetworkStack path (can be NetworkStack.apk or NetworkStackNext.apk)
-        return getDevice().executeShellCommand("ls /system/priv-app/NetworkStack*/*.apk");
-    }
-
     private boolean isCheckpointSupported() throws Exception {
         try {
             runPhase("isCheckpointSupported");
diff --git a/tests/RollbackTest/TEST_MAPPING b/tests/RollbackTest/TEST_MAPPING
index fefde5b..0f4c460 100644
--- a/tests/RollbackTest/TEST_MAPPING
+++ b/tests/RollbackTest/TEST_MAPPING
@@ -7,6 +7,9 @@
       "name": "StagedRollbackTest"
     },
     {
+      "name": "NetworkStagedRollbackTest"
+    },
+    {
       "name": "MultiUserRollbackTest"
     }
   ]
diff --git a/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java
new file mode 100644
index 0000000..317d67e
--- /dev/null
+++ b/tests/RollbackTest/lib/src/com/android/tests/rollback/host/WatchdogEventLogger.java
@@ -0,0 +1,101 @@
+/*
+ * 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.tests.rollback.host;
+
+import com.android.tradefed.device.ITestDevice;
+import com.android.tradefed.device.LogcatReceiver;
+import com.android.tradefed.result.InputStreamSource;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+public class WatchdogEventLogger {
+    private LogcatReceiver mReceiver;
+
+    public void start(ITestDevice device) {
+        mReceiver =  new LogcatReceiver(device, "logcat -s WatchdogRollbackLogger",
+                device.getOptions().getMaxLogcatDataSize(), 0);
+        mReceiver.start();
+    }
+
+    public void stop() {
+        mReceiver.stop();
+        mReceiver.clear();
+    }
+
+    /**
+     * Returns a list of all Watchdog logging events which have occurred.
+     */
+    public List<String> getWatchdogLoggingEvents() throws Exception {
+        try (InputStreamSource logcatStream = mReceiver.getLogcatData()) {
+            return getWatchdogLoggingEvents(logcatStream);
+        }
+    }
+
+    private static List<String> getWatchdogLoggingEvents(InputStreamSource inputStreamSource)
+            throws Exception {
+        List<String> watchdogEvents = new ArrayList<>();
+        InputStream inputStream = inputStreamSource.createInputStream();
+        BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
+        String line;
+        while ((line = reader.readLine()) != null) {
+            if (line.contains("Watchdog event occurred")) {
+                watchdogEvents.add(line);
+            }
+        }
+        return watchdogEvents;
+    }
+
+    /**
+     * Returns whether a Watchdog event has occurred that matches the given criteria.
+     *
+     * Check the value of all non-null parameters against the list of Watchdog events that have
+     * occurred, and return {@code true} if an event exists which matches all criteria.
+     */
+    public static boolean watchdogEventOccurred(List<String> loggingEvents,
+            String type, String logPackage,
+            String rollbackReason, String failedPackageName) throws Exception {
+        List<String> eventCriteria = new ArrayList<>();
+        if (type != null) {
+            eventCriteria.add("type: " + type);
+        }
+        if (logPackage != null) {
+            eventCriteria.add("logPackage: " + logPackage);
+        }
+        if (rollbackReason != null) {
+            eventCriteria.add("rollbackReason: " + rollbackReason);
+        }
+        if (failedPackageName != null) {
+            eventCriteria.add("failedPackageName: " + failedPackageName);
+        }
+        for (String loggingEvent: loggingEvents) {
+            boolean matchesCriteria = true;
+            for (String criterion: eventCriteria) {
+                if (!loggingEvent.contains(criterion)) {
+                    matchesCriteria = false;
+                }
+            }
+            if (matchesCriteria) {
+                return true;
+            }
+        }
+        return false;
+    }
+}
diff --git a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
index 4771b6c..e0a9668 100644
--- a/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
+++ b/tests/SurfaceComposition/src/android/surfacecomposition/SurfaceCompositionMeasuringActivity.java
@@ -23,7 +23,6 @@
 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManager.MemoryInfo;
-import android.content.Context;
 import android.content.pm.PackageManager;
 import android.graphics.Color;
 import android.graphics.PixelFormat;
@@ -531,8 +530,7 @@
     }
 
     private void detectRefreshRate() {
-        WindowManager wm = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
-        mRefreshRate = wm.getDefaultDisplay().getRefreshRate();
+        mRefreshRate = getDisplay().getRefreshRate();
         if (mRefreshRate < MIN_REFRESH_RATE_SUPPORTED)
             throw new RuntimeException("Unsupported display refresh rate: " + mRefreshRate);
         mTargetFPS = mRefreshRate - 2.0f;
diff --git a/tests/TaskOrganizerTest/AndroidManifest.xml b/tests/TaskOrganizerTest/AndroidManifest.xml
index 0cb6c10..a77d7ee 100644
--- a/tests/TaskOrganizerTest/AndroidManifest.xml
+++ b/tests/TaskOrganizerTest/AndroidManifest.xml
@@ -19,5 +19,11 @@
       <service android:name=".TaskOrganizerPipTest"
                android:exported="true">
       </service>
+      <activity android:name="TaskOrganizerMultiWindowTest" android:label="TaskOrganizer MW Test">
+        <intent-filter>
+          <action android:name="android.intent.action.MAIN"/>
+          <category android:name="android.intent.category.LAUNCHER"/>
+        </intent-filter>
+      </activity>
     </application>
 </manifest>
diff --git a/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerMultiWindowTest.java b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerMultiWindowTest.java
new file mode 100644
index 0000000..8f7bebb
--- /dev/null
+++ b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerMultiWindowTest.java
@@ -0,0 +1,204 @@
+/*
+ * Copyright (C) 2019 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.test.taskembed;
+
+import static android.app.WindowConfiguration.WINDOWING_MODE_MULTI_WINDOW;
+
+import android.app.ActivityManager;
+import android.app.ActivityTaskManager;
+import android.app.Activity;
+import android.app.ActivityOptions;
+import android.content.Context;
+import android.content.Intent;
+import android.graphics.Color;
+import android.graphics.Rect;
+import android.os.Bundle;
+import android.os.RemoteException;
+import android.view.Gravity;
+import android.view.ITaskOrganizer;
+import android.view.IWindowContainer;
+import android.view.MotionEvent;
+import android.view.SurfaceControl;
+import android.view.SurfaceHolder;
+import android.view.View;
+import android.view.ViewGroup;
+import android.view.WindowContainerTransaction;
+import android.widget.FrameLayout;
+import android.widget.LinearLayout;
+
+public class TaskOrganizerMultiWindowTest extends Activity {
+    class SplitLayout extends LinearLayout implements View.OnTouchListener {
+        View mView1;
+        View mView2;
+        View mDividerView;
+
+        public boolean onTouch(View v, MotionEvent e) {
+            if (e.getAction() != MotionEvent.ACTION_UP) {
+                return true;
+            }
+
+            float x = e.getX(0);
+            float ratio = (float) x / (float) getWidth() ;
+
+            LinearLayout.LayoutParams lp1 =
+                new LinearLayout.LayoutParams(0,
+                        ViewGroup.LayoutParams.WRAP_CONTENT, ratio-0.02f);
+            LinearLayout.LayoutParams lp2 =
+                new LinearLayout.LayoutParams(0,
+                        ViewGroup.LayoutParams.WRAP_CONTENT, 1-ratio-0.02f);
+            updateViewLayout(mView1, lp2);
+            updateViewLayout(mView2, lp1);
+            return true;
+        }
+
+        SplitLayout(Context c, View v1, View v2) {
+            super(c);
+            LinearLayout.LayoutParams lp1 =
+                new LinearLayout.LayoutParams(0,
+                        ViewGroup.LayoutParams.WRAP_CONTENT, 0.48f);
+            LinearLayout.LayoutParams lp3 =
+                new LinearLayout.LayoutParams(0,
+                        ViewGroup.LayoutParams.WRAP_CONTENT, 0.48f);
+            LinearLayout.LayoutParams lp2 =
+                new LinearLayout.LayoutParams(0,
+                        ViewGroup.LayoutParams.FILL_PARENT, 0.04f);
+            lp2.gravity = Gravity.CENTER;
+
+            setWeightSum(1);
+
+            mView1 = v1;
+            mView2 = v2;
+            addView(mView1, lp1);
+
+            mDividerView = new View(getContext());
+            mDividerView.setBackgroundColor(Color.BLACK);
+            addView(mDividerView, lp2);
+            mDividerView.setOnTouchListener(this);
+
+            addView(mView2, lp3);
+        }
+    }
+
+    class ResizingTaskView extends TaskView {
+        final Intent mIntent;
+        boolean launched = false;
+        ResizingTaskView(Context c, ITaskOrganizer o, int windowingMode, Intent i) {
+            super(c, o, windowingMode);
+            mIntent = i;
+        }
+
+        @Override
+        public void surfaceChanged(SurfaceHolder h, int format, int width, int height) {
+            if (!launched) {
+                launchOrganizedActivity(mIntent, width, height);
+                launched = true;
+            } else {
+                resizeTask(width, height);
+            }
+        }
+
+        void resizeTask(int width, int height) {
+            final WindowContainerTransaction wct = new WindowContainerTransaction();
+            wct.setBounds(mWc, new Rect(0, 0, width, height));
+            try {
+                ActivityTaskManager.getTaskOrganizerController().applyContainerTransaction(wct,
+                        mOrganizer);
+            } catch (Exception e) {
+                // Oh well
+            }
+        }
+    }
+
+    TaskView mTaskView1;
+    TaskView mTaskView2;
+    boolean gotFirstTask = false;
+
+    class Organizer extends ITaskOrganizer.Stub {
+        private int receivedTransactions = 0;
+        SurfaceControl.Transaction mergedTransaction = new SurfaceControl.Transaction();
+        @Override
+        public void taskAppeared(ActivityManager.RunningTaskInfo ti) {
+            if (!gotFirstTask) {
+                mTaskView1.reparentTask(ti.token);
+                gotFirstTask = true;
+            } else {
+                mTaskView2.reparentTask(ti.token);
+            }
+        }
+        public void taskVanished(IWindowContainer wc) {
+        }
+        public void transactionReady(int id, SurfaceControl.Transaction t) {
+            mergedTransaction.merge(t);
+            receivedTransactions++;
+            if (receivedTransactions == 2) {
+                mergedTransaction.apply();
+                receivedTransactions = 0;
+            }
+        }
+        @Override
+        public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
+        }
+    }
+
+    Organizer mOrganizer = new Organizer();
+
+    @Override
+    protected void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+
+        try {
+            ActivityTaskManager.getTaskOrganizerController().registerTaskOrganizer(mOrganizer,
+                    WINDOWING_MODE_MULTI_WINDOW);
+
+        } catch (Exception e) {
+        }
+
+        mTaskView1 = new ResizingTaskView(this, mOrganizer, WINDOWING_MODE_MULTI_WINDOW,
+                makeSettingsIntent());
+        mTaskView2 = new ResizingTaskView(this, mOrganizer, WINDOWING_MODE_MULTI_WINDOW,
+                makeContactsIntent());
+        View splitView = new SplitLayout(this, mTaskView1, mTaskView2);
+
+        setContentView(splitView);
+    }
+
+    Intent makeSettingsIntent() {
+        Intent intent = new Intent();
+        intent.setAction(android.provider.Settings.ACTION_SETTINGS);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return intent;
+    }
+
+    Intent makeContactsIntent() {
+        Intent intent = new Intent();
+        intent.setAction(Intent.ACTION_MAIN);
+        intent.addCategory(Intent.CATEGORY_APP_CONTACTS);
+        intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
+        return intent;
+    }
+
+    Bundle makeLaunchOptions(int width, int height) {
+        ActivityOptions o = ActivityOptions.makeBasic();
+        o.setLaunchWindowingMode(WINDOWING_MODE_MULTI_WINDOW);
+        o.setLaunchBounds(new Rect(0, 0, width, height));
+        return o.toBundle();
+    }
+
+    void launchOrganizedActivity(Intent i, int width, int height) {
+        startActivity(i, makeLaunchOptions(width, height));
+    }
+}
diff --git a/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerPipTest.java b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerPipTest.java
index 6ffa19d..bd17751 100644
--- a/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerPipTest.java
+++ b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskOrganizerPipTest.java
@@ -16,21 +16,19 @@
 
 package com.android.test.taskembed;
 
+import static android.app.WindowConfiguration.WINDOWING_MODE_PINNED;
+
 import android.app.ActivityManager;
 import android.app.ActivityTaskManager;
 import android.app.Service;
-import android.app.WindowConfiguration;
-import android.content.Context;
 import android.content.Intent;
 import android.graphics.Rect;
 import android.os.IBinder;
 import android.view.ITaskOrganizer;
 import android.view.IWindowContainer;
-import android.view.WindowContainerTransaction;
 import android.view.SurfaceControl;
-import android.view.SurfaceHolder;
-import android.view.SurfaceView;
 import android.view.ViewGroup;
+import android.view.WindowContainerTransaction;
 import android.view.WindowManager;
 import android.widget.FrameLayout;
 
@@ -38,53 +36,16 @@
     static final int PIP_WIDTH  = 640;
     static final int PIP_HEIGHT = 360;
 
-    class PipOrgView extends SurfaceView implements SurfaceHolder.Callback {
-        PipOrgView(Context c) {
-            super(c);
-            getHolder().addCallback(this);
-            setZOrderOnTop(true);
-        }
-        @Override
-        public void surfaceCreated(SurfaceHolder holder) {
-            try {
-                ActivityTaskManager.getService().registerTaskOrganizer(mOrganizer,
-                        WindowConfiguration.WINDOWING_MODE_PINNED);
-            } catch (Exception e) {
-            }
-        }
-
-        @Override
-        public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
-        }
-
-        @Override
-        public void surfaceDestroyed(SurfaceHolder holder) {
-        }
-
-        void reparentTask(IWindowContainer wc) {
-            SurfaceControl.Transaction t = new SurfaceControl.Transaction();
-            SurfaceControl leash = null;
-            try {
-                leash = wc.getLeash();
-            } catch (Exception e) {
-                // System server died.. oh well
-            }
-            t.reparent(leash, getSurfaceControl())
-                .setPosition(leash, 0, 0)
-                .apply();
-        }
-    }
-
-    PipOrgView mPipView;
+    TaskView mTaskView;
 
     class Organizer extends ITaskOrganizer.Stub {
-        public void taskAppeared(IWindowContainer wc, ActivityManager.RunningTaskInfo ti) {
-            mPipView.reparentTask(wc);
+        public void taskAppeared(ActivityManager.RunningTaskInfo ti) {
+            mTaskView.reparentTask(ti.token);
 
             final WindowContainerTransaction wct = new WindowContainerTransaction();
-            wct.scheduleFinishEnterPip(wc, new Rect(0, 0, PIP_WIDTH, PIP_HEIGHT));
+            wct.scheduleFinishEnterPip(ti.token, new Rect(0, 0, PIP_WIDTH, PIP_HEIGHT));
             try {
-                ActivityTaskManager.getService().applyContainerTransaction(wct);
+                ActivityTaskManager.getTaskOrganizerController().applyContainerTransaction(wct, null);
             } catch (Exception e) {
             }
         }
@@ -92,6 +53,8 @@
         }
         public void transactionReady(int id, SurfaceControl.Transaction t) {
         }
+        public void onTaskInfoChanged(ActivityManager.RunningTaskInfo info) {
+        }
     }
 
     Organizer mOrganizer = new Organizer();
@@ -105,6 +68,13 @@
     public void onCreate() {
         super.onCreate();
 
+        try {
+            ActivityTaskManager.getTaskOrganizerController().registerTaskOrganizer(mOrganizer,
+                    WINDOWING_MODE_PINNED);
+
+        } catch (Exception e) {
+        }
+
         final WindowManager.LayoutParams wlp = new WindowManager.LayoutParams();
         wlp.setTitle("TaskOrganizerPipTest");
         wlp.type = WindowManager.LayoutParams.TYPE_APPLICATION_OVERLAY;
@@ -113,8 +83,8 @@
         FrameLayout layout = new FrameLayout(this);
         ViewGroup.LayoutParams lp =
             new ViewGroup.LayoutParams(PIP_WIDTH, PIP_HEIGHT);
-        mPipView = new PipOrgView(this);
-        layout.addView(mPipView, lp);
+        mTaskView = new TaskView(this, mOrganizer, WINDOWING_MODE_PINNED);
+        layout.addView(mTaskView, lp);
 
         WindowManager wm = getSystemService(WindowManager.class);
         wm.addView(layout, wlp);
diff --git a/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskView.java b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskView.java
new file mode 100644
index 0000000..0086fb7
--- /dev/null
+++ b/tests/TaskOrganizerTest/src/com/android/test/taskembed/TaskView.java
@@ -0,0 +1,86 @@
+/*
+ * 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.test.taskembed;
+
+import android.app.ActivityTaskManager;
+import android.content.Context;
+import android.view.ITaskOrganizer;
+import android.view.IWindowContainer;
+import android.view.SurfaceControl;
+import android.view.SurfaceHolder;
+import android.view.SurfaceView;
+
+/**
+ * Simple SurfaceView wrapper which registers a TaskOrganizer
+ * after it's Surface is ready.
+ */
+class TaskView extends SurfaceView implements SurfaceHolder.Callback {
+    final ITaskOrganizer mTaskOrganizer;
+    final int mWindowingMode;
+    IWindowContainer mWc;
+
+    boolean mSurfaceCreated = false;
+    boolean mNeedsReparent;
+
+    TaskView(Context c, ITaskOrganizer o, int windowingMode) {
+        super(c);
+        getHolder().addCallback(this);
+        setZOrderOnTop(true);
+
+        mTaskOrganizer = o;
+        mWindowingMode = windowingMode;
+    }
+
+    @Override
+    public void surfaceCreated(SurfaceHolder holder) {
+        mSurfaceCreated = true;
+        if (mNeedsReparent) {
+            mNeedsReparent = false;
+            reparentLeash();
+        }
+    }
+
+    @Override
+    public void surfaceChanged(SurfaceHolder holder, int format, int width, int height) {
+    }
+
+    @Override
+    public void surfaceDestroyed(SurfaceHolder holder) {
+    }
+
+    void reparentTask(IWindowContainer wc) {
+        mWc = wc;
+        if (mSurfaceCreated == false) {
+            mNeedsReparent = true;
+        } else {
+            reparentLeash();
+        }
+    }
+
+    void reparentLeash() {
+        SurfaceControl.Transaction t = new SurfaceControl.Transaction();
+        SurfaceControl leash = null;
+        try {
+            leash = mWc.getLeash();
+        } catch (Exception e) {
+            // System server died.. oh well
+        }
+        t.reparent(leash, getSurfaceControl())
+            .setPosition(leash, 0, 0)
+            .apply();
+    }
+}
diff --git a/tests/net/Android.bp b/tests/net/Android.bp
index b2f384a..124b660 100644
--- a/tests/net/Android.bp
+++ b/tests/net/Android.bp
@@ -8,7 +8,6 @@
         "libbacktrace",
         "libbase",
         "libbinder",
-        "libbinderthreadstate",
         "libbpf",
         "libbpf_android",
         "libc++",
diff --git a/tests/net/TEST_MAPPING b/tests/net/TEST_MAPPING
index a7853b6..005cbe9 100644
--- a/tests/net/TEST_MAPPING
+++ b/tests/net/TEST_MAPPING
@@ -1,7 +1,12 @@
 {
-  "postsubmit": [
+  "presubmit": [
     {
       "name": "FrameworksNetIntegrationTests"
     }
+  ],
+  "postsubmit": [
+    {
+      "name": "FrameworksNetDeflakeTest"
+    }
   ]
 }
\ No newline at end of file
diff --git a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
index 3e4f3d8..efea91a 100644
--- a/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
+++ b/tests/net/common/java/android/net/NetworkCapabilitiesTest.java
@@ -272,10 +272,24 @@
         netCap.setOwnerUid(123);
         assertParcelingIsLossless(netCap);
         netCap.setSSID(TEST_SSID);
-        assertParcelSane(netCap, 13);
+        assertParcelSane(netCap, 15);
     }
 
     @Test
+    public void testParcelNetworkCapabilitiesWithRequestorUidAndPackageName() {
+        final NetworkCapabilities netCap = new NetworkCapabilities()
+                .addCapability(NET_CAPABILITY_INTERNET)
+                .setRequestorUid(9304)
+                .setRequestorPackageName("com.android.test")
+                .addCapability(NET_CAPABILITY_EIMS)
+                .addCapability(NET_CAPABILITY_NOT_METERED);
+        assertParcelingIsLossless(netCap);
+        netCap.setSSID(TEST_SSID);
+        assertParcelSane(netCap, 15);
+    }
+
+
+    @Test
     public void testOemPaid() {
         NetworkCapabilities nc = new NetworkCapabilities();
         // By default OEM_PAID is neither in the unwanted or required lists and the network is not
diff --git a/tests/net/common/java/android/net/NetworkScoreTest.kt b/tests/net/common/java/android/net/NetworkScoreTest.kt
index 30836b7..a63d58d 100644
--- a/tests/net/common/java/android/net/NetworkScoreTest.kt
+++ b/tests/net/common/java/android/net/NetworkScoreTest.kt
@@ -16,7 +16,7 @@
 
 package android.net
 
-import android.os.Parcelable
+import android.net.NetworkScore.Metrics.BANDWIDTH_UNKNOWN
 import androidx.test.filters.SmallTest
 import androidx.test.runner.AndroidJUnit4
 import com.android.testutils.assertParcelSane
@@ -28,77 +28,49 @@
 import org.junit.runner.RunWith
 
 private const val TEST_SCORE = 80
-private const val KEY_DEFAULT_CAPABILITIES = "DEFAULT_CAPABILITIES"
 
 @RunWith(AndroidJUnit4::class)
 @SmallTest
 class NetworkScoreTest {
     @Test
     fun testParcelNetworkScore() {
-        val networkScore = NetworkScore()
         val defaultCap = NetworkCapabilities()
-        networkScore.putExtension(KEY_DEFAULT_CAPABILITIES, defaultCap)
-        assertEquals(defaultCap, networkScore.getExtension(KEY_DEFAULT_CAPABILITIES))
-        networkScore.putIntExtension(NetworkScore.LEGACY_SCORE, TEST_SCORE)
-        assertEquals(TEST_SCORE, networkScore.getIntExtension(NetworkScore.LEGACY_SCORE))
-        assertParcelSane(networkScore, 1)
-    }
+        val builder = NetworkScore.Builder().setLegacyScore(TEST_SCORE)
+        assertEquals(TEST_SCORE, builder.build().getLegacyScore())
+        assertParcelSane(builder.build(), 7)
 
-    @Test
-    fun testNullKeyAndValue() {
-        val networkScore = NetworkScore()
-        val defaultCap = NetworkCapabilities()
-        networkScore.putIntExtension(null, TEST_SCORE)
-        assertEquals(TEST_SCORE, networkScore.getIntExtension(null))
-        networkScore.putExtension(null, defaultCap)
-        assertEquals(defaultCap, networkScore.getExtension(null))
-        networkScore.putExtension(null, null)
-        val result: Parcelable? = networkScore.getExtension(null)
-        assertEquals(null, result)
-    }
+        builder.addPolicy(NetworkScore.POLICY_IGNORE_ON_WIFI)
+                .addPolicy(NetworkScore.POLICY_DEFAULT_SUBSCRIPTION)
+                .setLinkLayerMetrics(NetworkScore.Metrics(44 /* latency */,
+                        380 /* downlinkBandwidth */, BANDWIDTH_UNKNOWN /* uplinkBandwidth */))
+                .setEndToEndMetrics(NetworkScore.Metrics(11 /* latency */,
+                        BANDWIDTH_UNKNOWN /* downlinkBandwidth */, 100_000 /* uplinkBandwidth */))
+                .setRange(NetworkScore.RANGE_MEDIUM)
+        assertParcelSane(builder.build(), 7)
+        builder.clearPolicy(NetworkScore.POLICY_IGNORE_ON_WIFI)
+        val ns = builder.build()
+        assertParcelSane(ns, 7)
+        assertFalse(ns.hasPolicy(NetworkScore.POLICY_IGNORE_ON_WIFI))
+        assertTrue(ns.hasPolicy(NetworkScore.POLICY_DEFAULT_SUBSCRIPTION))
 
-    @Test
-    fun testRemoveExtension() {
-        val networkScore = NetworkScore()
-        val defaultCap = NetworkCapabilities()
-        networkScore.putExtension(KEY_DEFAULT_CAPABILITIES, defaultCap)
-        networkScore.putIntExtension(NetworkScore.LEGACY_SCORE, TEST_SCORE)
-        assertEquals(defaultCap, networkScore.getExtension(KEY_DEFAULT_CAPABILITIES))
-        assertEquals(TEST_SCORE, networkScore.getIntExtension(NetworkScore.LEGACY_SCORE))
-        networkScore.removeExtension(KEY_DEFAULT_CAPABILITIES)
-        networkScore.removeExtension(NetworkScore.LEGACY_SCORE)
-        val result: Parcelable? = networkScore.getExtension(KEY_DEFAULT_CAPABILITIES)
-        assertEquals(null, result)
-        assertEquals(0, networkScore.getIntExtension(NetworkScore.LEGACY_SCORE))
+        val exitingNs = ns.withExiting(true)
+        assertNotEquals(ns.isExiting, exitingNs.isExiting)
+        assertNotEquals(ns, exitingNs)
+        assertParcelSane(exitingNs, 7)
     }
 
     @Test
     fun testEqualsNetworkScore() {
-        val ns1 = NetworkScore()
-        val ns2 = NetworkScore()
-        assertTrue(ns1.equals(ns2))
-        assertEquals(ns1.hashCode(), ns2.hashCode())
+        val builder1 = NetworkScore.Builder()
+        val builder2 = NetworkScore.Builder()
+        assertTrue(builder1.build().equals(builder2.build()))
+        assertEquals(builder1.build().hashCode(), builder2.build().hashCode())
 
-        ns1.putIntExtension(NetworkScore.LEGACY_SCORE, TEST_SCORE)
-        assertFalse(ns1.equals(ns2))
-        assertNotEquals(ns1.hashCode(), ns2.hashCode())
-        ns2.putIntExtension(NetworkScore.LEGACY_SCORE, TEST_SCORE)
-        assertTrue(ns1.equals(ns2))
-        assertEquals(ns1.hashCode(), ns2.hashCode())
-
-        val defaultCap = NetworkCapabilities()
-        ns1.putExtension(KEY_DEFAULT_CAPABILITIES, defaultCap)
-        assertFalse(ns1.equals(ns2))
-        assertNotEquals(ns1.hashCode(), ns2.hashCode())
-        ns2.putExtension(KEY_DEFAULT_CAPABILITIES, defaultCap)
-        assertTrue(ns1.equals(ns2))
-        assertEquals(ns1.hashCode(), ns2.hashCode())
-
-        ns1.putIntExtension(null, 10)
-        assertFalse(ns1.equals(ns2))
-        assertNotEquals(ns1.hashCode(), ns2.hashCode())
-        ns2.putIntExtension(null, 10)
-        assertTrue(ns1.equals(ns2))
-        assertEquals(ns1.hashCode(), ns2.hashCode())
+        builder1.setLegacyScore(TEST_SCORE)
+        assertFalse(builder1.build().equals(builder2.build()))
+        assertNotEquals(builder1.hashCode(), builder2.hashCode())
+        builder2.setLegacyScore(TEST_SCORE)
+        assertTrue(builder1.build().equals(builder2.build()))
+        assertEquals(builder1.build().hashCode(), builder2.build().hashCode())
     }
 }
diff --git a/tests/net/deflake/Android.bp b/tests/net/deflake/Android.bp
index 1c48c74..b1b0171 100644
--- a/tests/net/deflake/Android.bp
+++ b/tests/net/deflake/Android.bp
@@ -26,4 +26,5 @@
         "net-host-tests-utils",
     ],
     data: [":FrameworksNetTests"],
-}
\ No newline at end of file
+    test_suites: ["device-tests"],
+}
diff --git a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
index a35fb40..7ae9e95 100644
--- a/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
+++ b/tests/net/integration/util/com/android/server/NetworkAgentWrapper.java
@@ -40,6 +40,7 @@
 import android.net.NetworkCapabilities;
 import android.net.NetworkInfo;
 import android.net.NetworkProvider;
+import android.net.NetworkScore;
 import android.net.NetworkSpecifier;
 import android.net.SocketKeepalive;
 import android.net.UidRange;
@@ -155,9 +156,13 @@
         }
     }
 
+    private NetworkScore makeNetworkScore(final int legacyScore) {
+        return new NetworkScore.Builder().setLegacyScore(legacyScore).build();
+    }
+
     public void adjustScore(int change) {
         mScore += change;
-        mNetworkAgent.sendNetworkScore(mScore);
+        mNetworkAgent.sendNetworkScore(makeNetworkScore(mScore));
     }
 
     public int getScore() {
diff --git a/tests/net/java/android/net/ConnectivityDiagnosticsManagerTest.java b/tests/net/java/android/net/ConnectivityDiagnosticsManagerTest.java
index 7ab4b56..8eb5cfa 100644
--- a/tests/net/java/android/net/ConnectivityDiagnosticsManagerTest.java
+++ b/tests/net/java/android/net/ConnectivityDiagnosticsManagerTest.java
@@ -27,12 +27,20 @@
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.verifyNoMoreInteractions;
 
+import android.content.Context;
 import android.os.PersistableBundle;
 
+import androidx.test.InstrumentationRegistry;
+
+import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -52,15 +60,32 @@
 
     private static final Executor INLINE_EXECUTOR = x -> x.run();
 
+    @Mock private IConnectivityManager mService;
     @Mock private ConnectivityDiagnosticsCallback mCb;
 
+    private Context mContext;
     private ConnectivityDiagnosticsBinder mBinder;
+    private ConnectivityDiagnosticsManager mManager;
+
+    private String mPackageName;
 
     @Before
     public void setUp() {
+        mContext = InstrumentationRegistry.getContext();
+
+        mService = mock(IConnectivityManager.class);
         mCb = mock(ConnectivityDiagnosticsCallback.class);
 
         mBinder = new ConnectivityDiagnosticsBinder(mCb, INLINE_EXECUTOR);
+        mManager = new ConnectivityDiagnosticsManager(mContext, mService);
+
+        mPackageName = mContext.getOpPackageName();
+    }
+
+    @After
+    public void tearDown() {
+        // clear ConnectivityDiagnosticsManager callbacks map
+        ConnectivityDiagnosticsManager.sCallbacks.clear();
     }
 
     private ConnectivityReport createSampleConnectivityReport() {
@@ -121,17 +146,14 @@
 
     @Test
     public void testConnectivityReportEquals() {
-        assertEquals(createSampleConnectivityReport(), createSampleConnectivityReport());
-        assertEquals(createDefaultConnectivityReport(), createDefaultConnectivityReport());
+        final ConnectivityReport defaultReport = createDefaultConnectivityReport();
+        final ConnectivityReport sampleReport = createSampleConnectivityReport();
+        assertEquals(sampleReport, createSampleConnectivityReport());
+        assertEquals(defaultReport, createDefaultConnectivityReport());
 
-        final LinkProperties linkProperties = new LinkProperties();
-        linkProperties.setInterfaceName(INTERFACE_NAME);
-
-        final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
-        networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
-
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putString(BUNDLE_KEY, BUNDLE_VALUE);
+        final LinkProperties linkProperties = sampleReport.getLinkProperties();
+        final NetworkCapabilities networkCapabilities = sampleReport.getNetworkCapabilities();
+        final PersistableBundle bundle = sampleReport.getAdditionalInfo();
 
         assertNotEquals(
                 createDefaultConnectivityReport(),
@@ -181,39 +203,104 @@
     }
 
     private DataStallReport createSampleDataStallReport() {
+        final LinkProperties linkProperties = new LinkProperties();
+        linkProperties.setInterfaceName(INTERFACE_NAME);
+
         final PersistableBundle bundle = new PersistableBundle();
         bundle.putString(BUNDLE_KEY, BUNDLE_VALUE);
-        return new DataStallReport(new Network(NET_ID), TIMESTAMP, DETECTION_METHOD, bundle);
+
+        final NetworkCapabilities networkCapabilities = new NetworkCapabilities();
+        networkCapabilities.addCapability(NetworkCapabilities.NET_CAPABILITY_IMS);
+
+        return new DataStallReport(
+                new Network(NET_ID),
+                TIMESTAMP,
+                DETECTION_METHOD,
+                linkProperties,
+                networkCapabilities,
+                bundle);
     }
 
     private DataStallReport createDefaultDataStallReport() {
-        return new DataStallReport(new Network(0), 0L, 0, PersistableBundle.EMPTY);
+        return new DataStallReport(
+                new Network(0),
+                0L,
+                0,
+                new LinkProperties(),
+                new NetworkCapabilities(),
+                PersistableBundle.EMPTY);
     }
 
     @Test
     public void testDataStallReportEquals() {
-        assertEquals(createSampleDataStallReport(), createSampleDataStallReport());
-        assertEquals(createDefaultDataStallReport(), createDefaultDataStallReport());
+        final DataStallReport defaultReport = createDefaultDataStallReport();
+        final DataStallReport sampleReport = createSampleDataStallReport();
+        assertEquals(sampleReport, createSampleDataStallReport());
+        assertEquals(defaultReport, createDefaultDataStallReport());
 
-        final PersistableBundle bundle = new PersistableBundle();
-        bundle.putString(BUNDLE_KEY, BUNDLE_VALUE);
+        final LinkProperties linkProperties = sampleReport.getLinkProperties();
+        final NetworkCapabilities networkCapabilities = sampleReport.getNetworkCapabilities();
+        final PersistableBundle bundle = sampleReport.getStallDetails();
 
         assertNotEquals(
-                createDefaultDataStallReport(),
-                new DataStallReport(new Network(NET_ID), 0L, 0, PersistableBundle.EMPTY));
+                defaultReport,
+                new DataStallReport(
+                        new Network(NET_ID),
+                        0L,
+                        0,
+                        new LinkProperties(),
+                        new NetworkCapabilities(),
+                        PersistableBundle.EMPTY));
         assertNotEquals(
-                createDefaultDataStallReport(),
-                new DataStallReport(new Network(0), TIMESTAMP, 0, PersistableBundle.EMPTY));
+                defaultReport,
+                new DataStallReport(
+                        new Network(0),
+                        TIMESTAMP,
+                        0,
+                        new LinkProperties(),
+                        new NetworkCapabilities(),
+                        PersistableBundle.EMPTY));
         assertNotEquals(
-                createDefaultDataStallReport(),
-                new DataStallReport(new Network(0), 0L, DETECTION_METHOD, PersistableBundle.EMPTY));
+                defaultReport,
+                new DataStallReport(
+                        new Network(0),
+                        0L,
+                        DETECTION_METHOD,
+                        new LinkProperties(),
+                        new NetworkCapabilities(),
+                        PersistableBundle.EMPTY));
         assertNotEquals(
-                createDefaultDataStallReport(), new DataStallReport(new Network(0), 0L, 0, bundle));
+                defaultReport,
+                new DataStallReport(
+                        new Network(0),
+                        0L,
+                        0,
+                        linkProperties,
+                        new NetworkCapabilities(),
+                        PersistableBundle.EMPTY));
+        assertNotEquals(
+                defaultReport,
+                new DataStallReport(
+                        new Network(0),
+                        0L,
+                        0,
+                        new LinkProperties(),
+                        networkCapabilities,
+                        PersistableBundle.EMPTY));
+        assertNotEquals(
+                defaultReport,
+                new DataStallReport(
+                        new Network(0),
+                        0L,
+                        0,
+                        new LinkProperties(),
+                        new NetworkCapabilities(),
+                        bundle));
     }
 
     @Test
     public void testDataStallReportParcelUnparcel() {
-        assertParcelSane(createSampleDataStallReport(), 4);
+        assertParcelSane(createSampleDataStallReport(), 6);
     }
 
     @Test
@@ -245,4 +332,53 @@
         // latch without waiting.
         verify(mCb).onNetworkConnectivityReported(eq(n), eq(connectivity));
     }
+
+    @Test
+    public void testRegisterConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest request = new NetworkRequest.Builder().build();
+
+        mManager.registerConnectivityDiagnosticsCallback(request, INLINE_EXECUTOR, mCb);
+
+        verify(mService).registerConnectivityDiagnosticsCallback(
+                any(ConnectivityDiagnosticsBinder.class), eq(request), eq(mPackageName));
+        assertTrue(ConnectivityDiagnosticsManager.sCallbacks.containsKey(mCb));
+    }
+
+    @Test
+    public void testRegisterDuplicateConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest request = new NetworkRequest.Builder().build();
+
+        mManager.registerConnectivityDiagnosticsCallback(request, INLINE_EXECUTOR, mCb);
+
+        try {
+            mManager.registerConnectivityDiagnosticsCallback(request, INLINE_EXECUTOR, mCb);
+            fail("Duplicate callback registration should fail");
+        } catch (IllegalArgumentException expected) {
+        }
+    }
+
+    @Test
+    public void testUnregisterConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest request = new NetworkRequest.Builder().build();
+        mManager.registerConnectivityDiagnosticsCallback(request, INLINE_EXECUTOR, mCb);
+
+        mManager.unregisterConnectivityDiagnosticsCallback(mCb);
+
+        verify(mService).unregisterConnectivityDiagnosticsCallback(
+                any(ConnectivityDiagnosticsBinder.class));
+        assertFalse(ConnectivityDiagnosticsManager.sCallbacks.containsKey(mCb));
+
+        // verify that re-registering is successful
+        mManager.registerConnectivityDiagnosticsCallback(request, INLINE_EXECUTOR, mCb);
+        verify(mService, times(2)).registerConnectivityDiagnosticsCallback(
+                any(ConnectivityDiagnosticsBinder.class), eq(request), eq(mPackageName));
+        assertTrue(ConnectivityDiagnosticsManager.sCallbacks.containsKey(mCb));
+    }
+
+    @Test
+    public void testUnregisterUnknownConnectivityDiagnosticsCallback() throws Exception {
+        mManager.unregisterConnectivityDiagnosticsCallback(mCb);
+
+        verifyNoMoreInteractions(mService);
+    }
 }
diff --git a/tests/net/java/android/net/ConnectivityManagerTest.java b/tests/net/java/android/net/ConnectivityManagerTest.java
index 7ede144..d6bf334 100644
--- a/tests/net/java/android/net/ConnectivityManagerTest.java
+++ b/tests/net/java/android/net/ConnectivityManagerTest.java
@@ -212,7 +212,8 @@
         ArgumentCaptor<Messenger> captor = ArgumentCaptor.forClass(Messenger.class);
 
         // register callback
-        when(mService.requestNetwork(any(), captor.capture(), anyInt(), any(), anyInt()))
+        when(mService.requestNetwork(
+                any(), captor.capture(), anyInt(), any(), anyInt(), any()))
                 .thenReturn(request);
         manager.requestNetwork(request, callback, handler);
 
@@ -240,7 +241,8 @@
         ArgumentCaptor<Messenger> captor = ArgumentCaptor.forClass(Messenger.class);
 
         // register callback
-        when(mService.requestNetwork(any(), captor.capture(), anyInt(), any(), anyInt()))
+        when(mService.requestNetwork(
+                any(), captor.capture(), anyInt(), any(), anyInt(), any()))
                 .thenReturn(req1);
         manager.requestNetwork(req1, callback, handler);
 
@@ -258,7 +260,8 @@
         verify(callback, timeout(100).times(0)).onLosing(any(), anyInt());
 
         // callback can be registered again
-        when(mService.requestNetwork(any(), captor.capture(), anyInt(), any(), anyInt()))
+        when(mService.requestNetwork(
+                any(), captor.capture(), anyInt(), any(), anyInt(), any()))
                 .thenReturn(req2);
         manager.requestNetwork(req2, callback, handler);
 
@@ -282,7 +285,8 @@
         info.targetSdkVersion = VERSION_CODES.N_MR1 + 1;
 
         when(mCtx.getApplicationInfo()).thenReturn(info);
-        when(mService.requestNetwork(any(), any(), anyInt(), any(), anyInt())).thenReturn(request);
+        when(mService.requestNetwork(any(), any(), anyInt(), any(), anyInt(), any()))
+                .thenReturn(request);
 
         Handler handler = new Handler(Looper.getMainLooper());
         manager.requestNetwork(request, callback, handler);
diff --git a/tests/net/java/android/net/VpnManagerTest.java b/tests/net/java/android/net/VpnManagerTest.java
index 655c4d1..95a7942 100644
--- a/tests/net/java/android/net/VpnManagerTest.java
+++ b/tests/net/java/android/net/VpnManagerTest.java
@@ -16,13 +16,24 @@
 
 package android.net;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+import static org.mockito.Matchers.any;
+import static org.mockito.Matchers.eq;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import android.content.ComponentName;
+import android.content.Intent;
 import android.test.mock.MockContext;
 
 import androidx.test.filters.SmallTest;
 import androidx.test.runner.AndroidJUnit4;
 
+import com.android.internal.net.VpnProfile;
+
 import org.junit.Before;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -31,7 +42,12 @@
 @SmallTest
 @RunWith(AndroidJUnit4.class)
 public class VpnManagerTest {
-    private static final String VPN_PROFILE_KEY = "KEY";
+    private static final String PKG_NAME = "fooPackage";
+
+    private static final String SESSION_NAME_STRING = "testSession";
+    private static final String SERVER_ADDR_STRING = "1.2.3.4";
+    private static final String IDENTITY_STRING = "Identity";
+    private static final byte[] PSK_BYTES = "preSharedKey".getBytes();
 
     private IConnectivityManager mMockCs;
     private VpnManager mVpnManager;
@@ -39,7 +55,7 @@
             new MockContext() {
                 @Override
                 public String getOpPackageName() {
-                    return "fooPackage";
+                    return PKG_NAME;
                 }
             };
 
@@ -50,34 +66,55 @@
     }
 
     @Test
-    public void testProvisionVpnProfile() throws Exception {
-        try {
-            mVpnManager.provisionVpnProfile(mock(PlatformVpnProfile.class));
-        } catch (UnsupportedOperationException expected) {
-        }
+    public void testProvisionVpnProfilePreconsented() throws Exception {
+        final PlatformVpnProfile profile = getPlatformVpnProfile();
+        when(mMockCs.provisionVpnProfile(any(VpnProfile.class), eq(PKG_NAME))).thenReturn(true);
+
+        // Expect there to be no intent returned, as consent has already been granted.
+        assertNull(mVpnManager.provisionVpnProfile(profile));
+        verify(mMockCs).provisionVpnProfile(eq(profile.toVpnProfile()), eq(PKG_NAME));
+    }
+
+    @Test
+    public void testProvisionVpnProfileNeedsConsent() throws Exception {
+        final PlatformVpnProfile profile = getPlatformVpnProfile();
+        when(mMockCs.provisionVpnProfile(any(VpnProfile.class), eq(PKG_NAME))).thenReturn(false);
+
+        // Expect intent to be returned, as consent has not already been granted.
+        final Intent intent = mVpnManager.provisionVpnProfile(profile);
+        assertNotNull(intent);
+
+        final ComponentName expectedComponentName =
+                ComponentName.unflattenFromString(
+                        "com.android.vpndialogs/com.android.vpndialogs.PlatformVpnConfirmDialog");
+        assertEquals(expectedComponentName, intent.getComponent());
+        verify(mMockCs).provisionVpnProfile(eq(profile.toVpnProfile()), eq(PKG_NAME));
     }
 
     @Test
     public void testDeleteProvisionedVpnProfile() throws Exception {
-        try {
-            mVpnManager.deleteProvisionedVpnProfile();
-        } catch (UnsupportedOperationException expected) {
-        }
+        mVpnManager.deleteProvisionedVpnProfile();
+        verify(mMockCs).deleteVpnProfile(eq(PKG_NAME));
     }
 
     @Test
     public void testStartProvisionedVpnProfile() throws Exception {
-        try {
-            mVpnManager.startProvisionedVpnProfile();
-        } catch (UnsupportedOperationException expected) {
-        }
+        mVpnManager.startProvisionedVpnProfile();
+        verify(mMockCs).startVpnProfile(eq(PKG_NAME));
     }
 
     @Test
     public void testStopProvisionedVpnProfile() throws Exception {
-        try {
-            mVpnManager.stopProvisionedVpnProfile();
-        } catch (UnsupportedOperationException expected) {
-        }
+        mVpnManager.stopProvisionedVpnProfile();
+        verify(mMockCs).stopVpnProfile(eq(PKG_NAME));
+    }
+
+    private Ikev2VpnProfile getPlatformVpnProfile() throws Exception {
+        return new Ikev2VpnProfile.Builder(SERVER_ADDR_STRING, IDENTITY_STRING)
+                .setBypassable(true)
+                .setMaxMtu(1300)
+                .setMetered(true)
+                .setAuthPsk(PSK_BYTES)
+                .build();
     }
 }
diff --git a/tests/net/java/com/android/server/ConnectivityServiceTest.java b/tests/net/java/com/android/server/ConnectivityServiceTest.java
index a0a1352..968f552 100644
--- a/tests/net/java/com/android/server/ConnectivityServiceTest.java
+++ b/tests/net/java/com/android/server/ConnectivityServiceTest.java
@@ -23,6 +23,8 @@
 import static android.content.pm.PackageManager.MATCH_ANY_USER;
 import static android.content.pm.PackageManager.PERMISSION_DENIED;
 import static android.content.pm.PackageManager.PERMISSION_GRANTED;
+import static android.net.ConnectivityDiagnosticsManager.ConnectivityReport;
+import static android.net.ConnectivityDiagnosticsManager.DataStallReport;
 import static android.net.ConnectivityManager.ACTION_CAPTIVE_PORTAL_SIGN_IN;
 import static android.net.ConnectivityManager.CONNECTIVITY_ACTION;
 import static android.net.ConnectivityManager.CONNECTIVITY_ACTION_SUPL;
@@ -105,6 +107,7 @@
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.doReturn;
+import static org.mockito.Mockito.doThrow;
 import static org.mockito.Mockito.inOrder;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.never;
@@ -119,6 +122,7 @@
 import android.Manifest;
 import android.annotation.NonNull;
 import android.app.AlarmManager;
+import android.app.AppOpsManager;
 import android.app.NotificationManager;
 import android.app.PendingIntent;
 import android.content.BroadcastReceiver;
@@ -132,6 +136,7 @@
 import android.content.pm.PackageManager;
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
+import android.location.LocationManager;
 import android.net.CaptivePortalData;
 import android.net.ConnectivityManager;
 import android.net.ConnectivityManager.NetworkCallback;
@@ -139,6 +144,7 @@
 import android.net.ConnectivityManager.PacketKeepaliveCallback;
 import android.net.ConnectivityManager.TooManyRequestsException;
 import android.net.ConnectivityThread;
+import android.net.IConnectivityDiagnosticsCallback;
 import android.net.IDnsResolver;
 import android.net.IIpConnectivityMetrics;
 import android.net.INetd;
@@ -176,15 +182,18 @@
 import android.net.util.MultinetworkPolicyTracker;
 import android.os.BadParcelableException;
 import android.os.Binder;
+import android.os.Build;
 import android.os.Bundle;
 import android.os.ConditionVariable;
 import android.os.Handler;
 import android.os.HandlerThread;
+import android.os.IBinder;
 import android.os.INetworkManagementService;
 import android.os.Looper;
 import android.os.Parcel;
 import android.os.ParcelFileDescriptor;
 import android.os.Parcelable;
+import android.os.PersistableBundle;
 import android.os.Process;
 import android.os.RemoteException;
 import android.os.SystemClock;
@@ -210,11 +219,13 @@
 import com.android.internal.util.WakeupMessage;
 import com.android.internal.util.test.BroadcastInterceptingContext;
 import com.android.internal.util.test.FakeSettingsProvider;
+import com.android.server.ConnectivityService.ConnectivityDiagnosticsCallbackInfo;
 import com.android.server.connectivity.ConnectivityConstants;
 import com.android.server.connectivity.DefaultNetworkMetrics;
 import com.android.server.connectivity.IpConnectivityMetrics;
 import com.android.server.connectivity.MockableSystemProperties;
 import com.android.server.connectivity.Nat464Xlat;
+import com.android.server.connectivity.NetworkAgentInfo;
 import com.android.server.connectivity.NetworkNotificationManager.NotificationType;
 import com.android.server.connectivity.ProxyTracker;
 import com.android.server.connectivity.Vpn;
@@ -289,10 +300,13 @@
 
     private static final int UNREASONABLY_LONG_ALARM_WAIT_MS = 1000;
 
+    private static final long TIMESTAMP = 1234L;
+
     private static final String CLAT_PREFIX = "v4-";
     private static final String MOBILE_IFNAME = "test_rmnet_data0";
     private static final String WIFI_IFNAME = "test_wlan0";
     private static final String WIFI_WOL_IFNAME = "test_wlan_wol";
+    private static final String TEST_PACKAGE_NAME = "com.android.test.package";
     private static final String[] EMPTY_STRING_ARRAY = new String[0];
 
     private MockContext mServiceContext;
@@ -322,6 +336,10 @@
     @Mock UserManager mUserManager;
     @Mock NotificationManager mNotificationManager;
     @Mock AlarmManager mAlarmManager;
+    @Mock IConnectivityDiagnosticsCallback mConnectivityDiagnosticsCallback;
+    @Mock IBinder mIBinder;
+    @Mock LocationManager mLocationManager;
+    @Mock AppOpsManager mAppOpsManager;
 
     private ArgumentCaptor<ResolverParamsParcel> mResolverParamsParcelCaptor =
             ArgumentCaptor.forClass(ResolverParamsParcel.class);
@@ -407,6 +425,8 @@
             if (Context.NETWORK_STACK_SERVICE.equals(name)) return mNetworkStack;
             if (Context.USER_SERVICE.equals(name)) return mUserManager;
             if (Context.ALARM_SERVICE.equals(name)) return mAlarmManager;
+            if (Context.LOCATION_SERVICE.equals(name)) return mLocationManager;
+            if (Context.APP_OPS_SERVICE.equals(name)) return mAppOpsManager;
             return super.getSystemService(name);
         }
 
@@ -553,12 +573,17 @@
                 | NETWORK_VALIDATION_RESULT_PARTIAL;
         private static final int VALIDATION_RESULT_INVALID = 0;
 
+        private static final long DATA_STALL_TIMESTAMP = 10L;
+        private static final int DATA_STALL_DETECTION_METHOD = 1;
+
         private INetworkMonitor mNetworkMonitor;
         private INetworkMonitorCallbacks mNmCallbacks;
         private int mNmValidationResult = VALIDATION_RESULT_BASE;
         private int mProbesCompleted;
         private int mProbesSucceeded;
         private String mNmValidationRedirectUrl = null;
+        private PersistableBundle mValidationExtras = PersistableBundle.EMPTY;
+        private PersistableBundle mDataStallExtras = PersistableBundle.EMPTY;
         private boolean mNmProvNotificationRequested = false;
 
         private final ConditionVariable mNetworkStatusReceived = new ConditionVariable();
@@ -626,12 +651,12 @@
             }
 
             mNmCallbacks.notifyProbeStatusChanged(mProbesCompleted, mProbesSucceeded);
-            mNmCallbacks.notifyNetworkTested(
-                    mNmValidationResult, mNmValidationRedirectUrl);
+            mNmCallbacks.notifyNetworkTestedWithExtras(
+                    mNmValidationResult, mNmValidationRedirectUrl, TIMESTAMP, mValidationExtras);
 
             if (mNmValidationRedirectUrl != null) {
                 mNmCallbacks.showProvisioningNotification(
-                        "test_provisioning_notif_action", "com.android.test.package");
+                        "test_provisioning_notif_action", TEST_PACKAGE_NAME);
                 mNmProvNotificationRequested = true;
             }
         }
@@ -786,6 +811,11 @@
         public void expectPreventReconnectReceived() {
             expectPreventReconnectReceived(TIMEOUT_MS);
         }
+
+        void notifyDataStallSuspected() throws Exception {
+            mNmCallbacks.notifyDataStallSuspected(
+                    DATA_STALL_TIMESTAMP, DATA_STALL_DETECTION_METHOD, mDataStallExtras);
+        }
     }
 
     /**
@@ -965,6 +995,8 @@
         // not inherit from NetworkAgent.
         private TestNetworkAgentWrapper mMockNetworkAgent;
 
+        private VpnInfo mVpnInfo;
+
         public MockVpn(int userId) {
             super(startHandlerThreadAndReturnLooper(), mServiceContext, mNetworkManagementService,
                     userId);
@@ -1036,6 +1068,17 @@
             mConnected = false;
             mConfig = null;
         }
+
+        @Override
+        public synchronized VpnInfo getVpnInfo() {
+            if (mVpnInfo != null) return mVpnInfo;
+
+            return super.getVpnInfo();
+        }
+
+        private void setVpnInfo(VpnInfo vpnInfo) {
+            mVpnInfo = vpnInfo;
+        }
     }
 
     private void mockVpn(int uid) {
@@ -2931,7 +2974,7 @@
             networkCapabilities.addTransportType(TRANSPORT_WIFI)
                     .setNetworkSpecifier(new MatchAllNetworkSpecifier());
             mService.requestNetwork(networkCapabilities, null, 0, null,
-                    ConnectivityManager.TYPE_WIFI);
+                    ConnectivityManager.TYPE_WIFI, TEST_PACKAGE_NAME);
         });
 
         class NonParcelableSpecifier extends NetworkSpecifier {
@@ -2970,31 +3013,12 @@
     }
 
     @Test
-    public void testNetworkSpecifierUidSpoofSecurityException() throws Exception {
-        class UidAwareNetworkSpecifier extends NetworkSpecifier implements Parcelable {
-            @Override
-            public boolean satisfiedBy(NetworkSpecifier other) {
-                return true;
-            }
-
-            @Override
-            public void assertValidFromUid(int requestorUid) {
-                throw new SecurityException("failure");
-            }
-
-            @Override
-            public int describeContents() { return 0; }
-            @Override
-            public void writeToParcel(Parcel dest, int flags) {}
-        }
-
+    public void testNetworkRequestUidSpoofSecurityException() throws Exception {
         mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
         mWiFiNetworkAgent.connect(false);
-
-        UidAwareNetworkSpecifier networkSpecifier = new UidAwareNetworkSpecifier();
-        NetworkRequest networkRequest = newWifiRequestBuilder().setNetworkSpecifier(
-                networkSpecifier).build();
+        NetworkRequest networkRequest = newWifiRequestBuilder().build();
         TestNetworkCallback networkCallback = new TestNetworkCallback();
+        doThrow(new SecurityException()).when(mAppOpsManager).checkPackage(anyInt(), anyString());
         assertThrows(SecurityException.class, () -> {
             mCm.requestNetwork(networkRequest, networkCallback);
         });
@@ -5736,6 +5760,38 @@
         mCm.unregisterNetworkCallback(defaultCallback);
     }
 
+    @Test
+    public final void testLoseTrusted() throws Exception {
+        final NetworkRequest trustedRequest = new NetworkRequest.Builder()
+                .addCapability(NET_CAPABILITY_TRUSTED)
+                .build();
+        final TestNetworkCallback trustedCallback = new TestNetworkCallback();
+        mCm.requestNetwork(trustedRequest, trustedCallback);
+
+        mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
+        mCellNetworkAgent.connect(true);
+        trustedCallback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
+        verify(mNetworkManagementService).setDefaultNetId(eq(mCellNetworkAgent.getNetwork().netId));
+        reset(mNetworkManagementService);
+
+        mWiFiNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_WIFI);
+        mWiFiNetworkAgent.connect(true);
+        trustedCallback.expectAvailableDoubleValidatedCallbacks(mWiFiNetworkAgent);
+        verify(mNetworkManagementService).setDefaultNetId(eq(mWiFiNetworkAgent.getNetwork().netId));
+        reset(mNetworkManagementService);
+
+        mWiFiNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
+        trustedCallback.expectAvailableCallbacksValidated(mCellNetworkAgent);
+        verify(mNetworkManagementService).setDefaultNetId(eq(mCellNetworkAgent.getNetwork().netId));
+        reset(mNetworkManagementService);
+
+        mCellNetworkAgent.removeCapability(NET_CAPABILITY_TRUSTED);
+        trustedCallback.expectCallback(CallbackEntry.LOST, mCellNetworkAgent);
+        verify(mNetworkManagementService).clearDefaultNetId();
+
+        mCm.unregisterNetworkCallback(trustedCallback);
+    }
+
     @Ignore // 40%+ flakiness : figure out why and re-enable.
     @Test
     public final void testBatteryStatsNetworkType() throws Exception {
@@ -6355,4 +6411,263 @@
                 UserHandle.getAppId(uid));
         return packageInfo;
     }
+
+    @Test
+    public void testRegisterConnectivityDiagnosticsCallbackInvalidRequest() throws Exception {
+        final NetworkRequest request =
+                new NetworkRequest(
+                        new NetworkCapabilities(), TYPE_ETHERNET, 0, NetworkRequest.Type.NONE);
+        try {
+            mService.registerConnectivityDiagnosticsCallback(
+                    mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
+            fail("registerConnectivityDiagnosticsCallback should throw on invalid NetworkRequest");
+        } catch (IllegalArgumentException expected) {
+        }
+    }
+
+    @Test
+    public void testRegisterUnregisterConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest wifiRequest =
+                new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI).build();
+        when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
+
+        mService.registerConnectivityDiagnosticsCallback(
+                mConnectivityDiagnosticsCallback, wifiRequest, mContext.getPackageName());
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        verify(mIBinder).linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
+        verify(mConnectivityDiagnosticsCallback).asBinder();
+        assertTrue(
+                mService.mConnectivityDiagnosticsCallbacks.containsKey(
+                        mConnectivityDiagnosticsCallback));
+
+        mService.unregisterConnectivityDiagnosticsCallback(mConnectivityDiagnosticsCallback);
+        verify(mIBinder, timeout(TIMEOUT_MS))
+                .unlinkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
+        assertFalse(
+                mService.mConnectivityDiagnosticsCallbacks.containsKey(
+                        mConnectivityDiagnosticsCallback));
+        verify(mConnectivityDiagnosticsCallback, atLeastOnce()).asBinder();
+    }
+
+    @Test
+    public void testRegisterDuplicateConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest wifiRequest =
+                new NetworkRequest.Builder().addTransportType(TRANSPORT_WIFI).build();
+        when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
+
+        mService.registerConnectivityDiagnosticsCallback(
+                mConnectivityDiagnosticsCallback, wifiRequest, mContext.getPackageName());
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        verify(mIBinder).linkToDeath(any(ConnectivityDiagnosticsCallbackInfo.class), anyInt());
+        verify(mConnectivityDiagnosticsCallback).asBinder();
+        assertTrue(
+                mService.mConnectivityDiagnosticsCallbacks.containsKey(
+                        mConnectivityDiagnosticsCallback));
+
+        // Register the same callback again
+        mService.registerConnectivityDiagnosticsCallback(
+                mConnectivityDiagnosticsCallback, wifiRequest, mContext.getPackageName());
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        assertTrue(
+                mService.mConnectivityDiagnosticsCallbacks.containsKey(
+                        mConnectivityDiagnosticsCallback));
+    }
+
+    @Test
+    public void testCheckConnectivityDiagnosticsPermissionsNetworkStack() throws Exception {
+        final NetworkAgentInfo naiWithoutUid =
+                new NetworkAgentInfo(
+                        null, null, null, null, null, new NetworkCapabilities(), null,
+                        mServiceContext, null, null, mService, null, null, null, 0);
+
+        mServiceContext.setPermission(
+                android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
+        assertTrue(
+                "NetworkStack permission not applied",
+                mService.checkConnectivityDiagnosticsPermissions(
+                        Process.myPid(), Process.myUid(), naiWithoutUid,
+                        mContext.getOpPackageName()));
+    }
+
+    @Test
+    public void testCheckConnectivityDiagnosticsPermissionsNoLocationPermission() throws Exception {
+        final NetworkAgentInfo naiWithoutUid =
+                new NetworkAgentInfo(
+                        null, null, null, null, null, new NetworkCapabilities(), null,
+                        mServiceContext, null, null, mService, null, null, null, 0);
+
+        mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
+
+        assertFalse(
+                "ACCESS_FINE_LOCATION permission necessary for Connectivity Diagnostics",
+                mService.checkConnectivityDiagnosticsPermissions(
+                        Process.myPid(), Process.myUid(), naiWithoutUid,
+                        mContext.getOpPackageName()));
+    }
+
+    @Test
+    public void testCheckConnectivityDiagnosticsPermissionsActiveVpn() throws Exception {
+        final NetworkAgentInfo naiWithoutUid =
+                new NetworkAgentInfo(
+                        null, null, null, null, null, new NetworkCapabilities(), null,
+                        mServiceContext, null, null, mService, null, null, null, 0);
+
+        setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
+                Manifest.permission.ACCESS_FINE_LOCATION);
+        mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
+
+        // setUp() calls mockVpn() which adds a VPN with the Test Runner's uid. Configure it to be
+        // active
+        final VpnInfo info = new VpnInfo();
+        info.ownerUid = Process.myUid();
+        info.vpnIface = "interface";
+        mMockVpn.setVpnInfo(info);
+        assertTrue(
+                "Active VPN permission not applied",
+                mService.checkConnectivityDiagnosticsPermissions(
+                        Process.myPid(), Process.myUid(), naiWithoutUid,
+                        mContext.getOpPackageName()));
+    }
+
+    @Test
+    public void testCheckConnectivityDiagnosticsPermissionsNetworkAdministrator() throws Exception {
+        final NetworkCapabilities nc = new NetworkCapabilities();
+        nc.setAdministratorUids(Arrays.asList(Process.myUid()));
+        final NetworkAgentInfo naiWithUid =
+                new NetworkAgentInfo(
+                        null, null, null, null, null, nc, null, mServiceContext, null, null,
+                        mService, null, null, null, 0);
+
+        setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
+                Manifest.permission.ACCESS_FINE_LOCATION);
+        mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
+
+        // Disconnect mock vpn so the uid check on NetworkAgentInfo is tested
+        mMockVpn.disconnect();
+        assertTrue(
+                "NetworkCapabilities administrator uid permission not applied",
+                mService.checkConnectivityDiagnosticsPermissions(
+                        Process.myPid(), Process.myUid(), naiWithUid, mContext.getOpPackageName()));
+    }
+
+    @Test
+    public void testCheckConnectivityDiagnosticsPermissionsFails() throws Exception {
+        final NetworkCapabilities nc = new NetworkCapabilities();
+        nc.setOwnerUid(Process.myUid());
+        nc.setAdministratorUids(Arrays.asList(Process.myUid()));
+        final NetworkAgentInfo naiWithUid =
+                new NetworkAgentInfo(
+                        null, null, null, null, null, nc, null, mServiceContext, null, null,
+                        mService, null, null, null, 0);
+
+        setupLocationPermissions(Build.VERSION_CODES.Q, true, AppOpsManager.OPSTR_FINE_LOCATION,
+                Manifest.permission.ACCESS_FINE_LOCATION);
+        mServiceContext.setPermission(android.Manifest.permission.NETWORK_STACK, PERMISSION_DENIED);
+
+        // Use wrong pid and uid
+        assertFalse(
+                "Permissions allowed when they shouldn't be granted",
+                mService.checkConnectivityDiagnosticsPermissions(
+                        Process.myPid() + 1, Process.myUid() + 1, naiWithUid,
+                        mContext.getOpPackageName()));
+    }
+
+    private void setupLocationPermissions(
+            int targetSdk, boolean locationToggle, String op, String perm) throws Exception {
+        final ApplicationInfo applicationInfo = new ApplicationInfo();
+        applicationInfo.targetSdkVersion = targetSdk;
+        when(mPackageManager.getApplicationInfoAsUser(anyString(), anyInt(), any()))
+                .thenReturn(applicationInfo);
+
+        when(mLocationManager.isLocationEnabledForUser(any())).thenReturn(locationToggle);
+
+        when(mAppOpsManager.noteOp(eq(op), eq(Process.myUid()), eq(mContext.getPackageName())))
+                .thenReturn(AppOpsManager.MODE_ALLOWED);
+
+        mServiceContext.setPermission(perm, PERMISSION_GRANTED);
+    }
+
+    private void setUpConnectivityDiagnosticsCallback() throws Exception {
+        final NetworkRequest request = new NetworkRequest.Builder().build();
+        when(mConnectivityDiagnosticsCallback.asBinder()).thenReturn(mIBinder);
+
+        mServiceContext.setPermission(
+                android.Manifest.permission.NETWORK_STACK, PERMISSION_GRANTED);
+
+        mService.registerConnectivityDiagnosticsCallback(
+                mConnectivityDiagnosticsCallback, request, mContext.getPackageName());
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        // Connect the cell agent verify that it notifies TestNetworkCallback that it is available
+        final TestNetworkCallback callback = new TestNetworkCallback();
+        mCm.registerDefaultNetworkCallback(callback);
+        mCellNetworkAgent = new TestNetworkAgentWrapper(TRANSPORT_CELLULAR);
+        mCellNetworkAgent.connect(true);
+        callback.expectAvailableThenValidatedCallbacks(mCellNetworkAgent);
+        callback.assertNoCallback();
+    }
+
+    @Test
+    public void testConnectivityDiagnosticsCallbackOnConnectivityReport() throws Exception {
+        setUpConnectivityDiagnosticsCallback();
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        // Verify onConnectivityReport fired
+        verify(mConnectivityDiagnosticsCallback)
+                .onConnectivityReport(any(ConnectivityReport.class));
+    }
+
+    @Test
+    public void testConnectivityDiagnosticsCallbackOnDataStallSuspected() throws Exception {
+        setUpConnectivityDiagnosticsCallback();
+
+        // Trigger notifyDataStallSuspected() on the INetworkMonitorCallbacks instance in the
+        // cellular network agent
+        mCellNetworkAgent.notifyDataStallSuspected();
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        // Verify onDataStallSuspected fired
+        verify(mConnectivityDiagnosticsCallback).onDataStallSuspected(any(DataStallReport.class));
+    }
+
+    @Test
+    public void testConnectivityDiagnosticsCallbackOnConnectivityReported() throws Exception {
+        setUpConnectivityDiagnosticsCallback();
+
+        final Network n = mCellNetworkAgent.getNetwork();
+        final boolean hasConnectivity = true;
+        mService.reportNetworkConnectivity(n, hasConnectivity);
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        // Verify onNetworkConnectivityReported fired
+        verify(mConnectivityDiagnosticsCallback)
+                .onNetworkConnectivityReported(eq(n), eq(hasConnectivity));
+
+        final boolean noConnectivity = false;
+        mService.reportNetworkConnectivity(n, noConnectivity);
+
+        // Block until all other events are done processing.
+        HandlerUtilsKt.waitForIdle(mCsHandlerThread, TIMEOUT_MS);
+
+        // Wait for onNetworkConnectivityReported to fire
+        verify(mConnectivityDiagnosticsCallback)
+                .onNetworkConnectivityReported(eq(n), eq(noConnectivity));
+    }
 }
diff --git a/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java b/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
index e863266..25e9057 100644
--- a/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
+++ b/tests/net/java/com/android/server/connectivity/LingerMonitorTest.java
@@ -353,8 +353,7 @@
         NetworkCapabilities caps = new NetworkCapabilities();
         caps.addCapability(0);
         caps.addTransportType(transport);
-        NetworkScore ns = new NetworkScore();
-        ns.putIntExtension(NetworkScore.LEGACY_SCORE, 50);
+        NetworkScore ns = new NetworkScore.Builder().setLegacyScore(50).build();
         NetworkAgentInfo nai = new NetworkAgentInfo(null, null, new Network(netId), info, null,
                 caps, ns, mCtx, null, null /* config */, mConnService, mNetd, mDnsResolver, mNMS,
                 NetworkProvider.ID_NONE);
diff --git a/tests/net/java/com/android/server/connectivity/NetworkRankerTest.kt b/tests/net/java/com/android/server/connectivity/NetworkRankerTest.kt
new file mode 100644
index 0000000..86c9116
--- /dev/null
+++ b/tests/net/java/com/android/server/connectivity/NetworkRankerTest.kt
@@ -0,0 +1,84 @@
+/*
+ * 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.server.connectivity
+
+import android.net.NetworkRequest
+import androidx.test.filters.SmallTest
+import androidx.test.runner.AndroidJUnit4
+import org.junit.Test
+import org.junit.runner.RunWith
+import org.mockito.ArgumentMatchers.any
+import org.mockito.Mockito.doReturn
+import org.mockito.Mockito.mock
+import kotlin.test.assertEquals
+import kotlin.test.assertNull
+
+@RunWith(AndroidJUnit4::class)
+@SmallTest
+class NetworkRankerTest {
+    private val ranker = NetworkRanker()
+
+    private fun makeNai(satisfy: Boolean, score: Int) = mock(NetworkAgentInfo::class.java).also {
+        doReturn(satisfy).`when`(it).satisfies(any())
+        doReturn(score).`when`(it).currentScore
+    }
+
+    @Test
+    fun testGetBestNetwork() {
+        val scores = listOf(20, 50, 90, 60, 23, 68)
+        val nais = scores.map { makeNai(true, it) }
+        val bestNetwork = nais[2] // The one with the top score
+        val someRequest = mock(NetworkRequest::class.java)
+        assertEquals(bestNetwork, ranker.getBestNetwork(someRequest, nais))
+    }
+
+    @Test
+    fun testIgnoreNonSatisfying() {
+        val nais = listOf(makeNai(true, 20), makeNai(true, 50), makeNai(false, 90),
+                makeNai(false, 60), makeNai(true, 23), makeNai(false, 68))
+        val bestNetwork = nais[1] // Top score that's satisfying
+        val someRequest = mock(NetworkRequest::class.java)
+        assertEquals(bestNetwork, ranker.getBestNetwork(someRequest, nais))
+    }
+
+    @Test
+    fun testNoMatch() {
+        val nais = listOf(makeNai(false, 20), makeNai(false, 50), makeNai(false, 90))
+        val someRequest = mock(NetworkRequest::class.java)
+        assertNull(ranker.getBestNetwork(someRequest, nais))
+    }
+
+    @Test
+    fun testEmpty() {
+        val someRequest = mock(NetworkRequest::class.java)
+        assertNull(ranker.getBestNetwork(someRequest, emptyList()))
+    }
+
+    // Make sure the ranker is "stable" (as in stable sort), that is, it always returns the FIRST
+    // network satisfying the request if multiple of them have the same score.
+    @Test
+    fun testStable() {
+        val nais1 = listOf(makeNai(true, 30), makeNai(true, 30), makeNai(true, 30),
+                makeNai(true, 30), makeNai(true, 30), makeNai(true, 30))
+        val someRequest = mock(NetworkRequest::class.java)
+        assertEquals(nais1[0], ranker.getBestNetwork(someRequest, nais1))
+
+        val nais2 = listOf(makeNai(true, 30), makeNai(true, 50), makeNai(true, 20),
+                makeNai(true, 50), makeNai(true, 50), makeNai(true, 40))
+        assertEquals(nais2[1], ranker.getBestNetwork(someRequest, nais2))
+    }
+}
diff --git a/tests/net/java/com/android/server/connectivity/VpnTest.java b/tests/net/java/com/android/server/connectivity/VpnTest.java
index ce50bef..eb78529 100644
--- a/tests/net/java/com/android/server/connectivity/VpnTest.java
+++ b/tests/net/java/com/android/server/connectivity/VpnTest.java
@@ -28,11 +28,11 @@
 import static android.net.NetworkCapabilities.TRANSPORT_CELLULAR;
 import static android.net.NetworkCapabilities.TRANSPORT_VPN;
 import static android.net.NetworkCapabilities.TRANSPORT_WIFI;
-import static android.net.RouteInfo.RTN_UNREACHABLE;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
 import static org.mockito.AdditionalMatchers.aryEq;
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.ArgumentMatchers.anyBoolean;
@@ -43,6 +43,7 @@
 import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.doNothing;
 import static org.mockito.Mockito.inOrder;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -58,21 +59,21 @@
 import android.content.pm.UserInfo;
 import android.content.res.Resources;
 import android.net.ConnectivityManager;
-import android.net.IpPrefix;
-import android.net.LinkProperties;
 import android.net.Network;
 import android.net.NetworkCapabilities;
 import android.net.NetworkInfo.DetailedState;
-import android.net.RouteInfo;
 import android.net.UidRange;
+import android.net.VpnManager;
 import android.net.VpnService;
 import android.os.Build.VERSION_CODES;
 import android.os.Bundle;
 import android.os.INetworkManagementService;
 import android.os.Looper;
-import android.os.SystemClock;
+import android.os.Process;
 import android.os.UserHandle;
 import android.os.UserManager;
+import android.security.Credentials;
+import android.security.KeyStore;
 import android.util.ArrayMap;
 import android.util.ArraySet;
 
@@ -81,6 +82,7 @@
 
 import com.android.internal.R;
 import com.android.internal.net.VpnConfig;
+import com.android.internal.net.VpnProfile;
 
 import org.junit.Before;
 import org.junit.Test;
@@ -90,9 +92,6 @@
 import org.mockito.Mock;
 import org.mockito.MockitoAnnotations;
 
-import java.net.Inet4Address;
-import java.net.Inet6Address;
-import java.net.UnknownHostException;
 import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
@@ -124,6 +123,8 @@
         managedProfileA.profileGroupId = primaryUser.id;
     }
 
+    static final String TEST_VPN_PKG = "com.dummy.vpn";
+
     /**
      * Names and UIDs for some fake packages. Important points:
      *  - UID is ordered increasing.
@@ -147,7 +148,10 @@
     @Mock private AppOpsManager mAppOps;
     @Mock private NotificationManager mNotificationManager;
     @Mock private Vpn.SystemServices mSystemServices;
+    @Mock private Vpn.Ikev2SessionCreator mIkev2SessionCreator;
     @Mock private ConnectivityManager mConnectivityManager;
+    @Mock private KeyStore mKeyStore;
+    private final VpnProfile mVpnProfile = new VpnProfile("key");
 
     @Before
     public void setUp() throws Exception {
@@ -166,6 +170,7 @@
         when(mContext.getString(R.string.config_customVpnAlwaysOnDisconnectedDialogComponent))
                 .thenReturn(Resources.getSystem().getString(
                         R.string.config_customVpnAlwaysOnDisconnectedDialogComponent));
+        when(mSystemServices.isCallerSystem()).thenReturn(true);
 
         // Used by {@link Notification.Builder}
         ApplicationInfo applicationInfo = new ApplicationInfo();
@@ -175,6 +180,10 @@
                 .thenReturn(applicationInfo);
 
         doNothing().when(mNetService).registerObserver(any());
+
+        // Deny all appops by default.
+        when(mAppOps.noteOpNoThrow(anyInt(), anyInt(), anyString()))
+                .thenReturn(AppOpsManager.MODE_IGNORED);
     }
 
     @Test
@@ -464,12 +473,12 @@
         order.verify(mNetService).setAllowOnlyVpnForUids(eq(true), aryEq(entireUser));
 
         // When a new VPN package is set the rules should change to cover that package.
-        vpn.prepare(null, PKGS[0]);
+        vpn.prepare(null, PKGS[0], VpnManager.TYPE_VPN_SERVICE);
         order.verify(mNetService).setAllowOnlyVpnForUids(eq(false), aryEq(entireUser));
         order.verify(mNetService).setAllowOnlyVpnForUids(eq(true), aryEq(exceptPkg0));
 
         // When that VPN package is unset, everything should be undone again in reverse.
-        vpn.prepare(null, VpnConfig.LEGACY_VPN);
+        vpn.prepare(null, VpnConfig.LEGACY_VPN, VpnManager.TYPE_VPN_SERVICE);
         order.verify(mNetService).setAllowOnlyVpnForUids(eq(false), aryEq(exceptPkg0));
         order.verify(mNetService).setAllowOnlyVpnForUids(eq(true), aryEq(entireUser));
     }
@@ -632,10 +641,235 @@
     }
 
     /**
+     * The profile name should NOT change between releases for backwards compatibility
+     *
+     * <p>If this is changed between releases, the {@link Vpn#getVpnProfilePrivileged()} method MUST
+     * be updated to ensure backward compatibility.
+     */
+    @Test
+    public void testGetProfileNameForPackage() throws Exception {
+        final Vpn vpn = createVpn(primaryUser.id);
+        setMockedUsers(primaryUser);
+
+        final String expected = Credentials.PLATFORM_VPN + primaryUser.id + "_" + TEST_VPN_PKG;
+        assertEquals(expected, vpn.getProfileNameForPackage(TEST_VPN_PKG));
+    }
+
+    private Vpn createVpnAndSetupUidChecks(int... grantedOps) throws Exception {
+        final Vpn vpn = createVpn(primaryUser.id);
+        setMockedUsers(primaryUser);
+
+        when(mPackageManager.getPackageUidAsUser(eq(TEST_VPN_PKG), anyInt()))
+                .thenReturn(Process.myUid());
+
+        for (final int op : grantedOps) {
+            when(mAppOps.noteOpNoThrow(op, Process.myUid(), TEST_VPN_PKG))
+                    .thenReturn(AppOpsManager.MODE_ALLOWED);
+        }
+
+        return vpn;
+    }
+
+    private void checkProvisionVpnProfile(Vpn vpn, boolean expectedResult, int... checkedOps) {
+        assertEquals(expectedResult, vpn.provisionVpnProfile(TEST_VPN_PKG, mVpnProfile, mKeyStore));
+
+        // The profile should always be stored, whether or not consent has been previously granted.
+        verify(mKeyStore)
+                .put(
+                        eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)),
+                        eq(mVpnProfile.encode()),
+                        eq(Process.SYSTEM_UID),
+                        eq(0));
+
+        for (final int checkedOp : checkedOps) {
+            verify(mAppOps).noteOpNoThrow(checkedOp, Process.myUid(), TEST_VPN_PKG);
+        }
+    }
+
+    @Test
+    public void testProvisionVpnProfilePreconsented() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+
+        checkProvisionVpnProfile(
+                vpn, true /* expectedResult */, AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+    }
+
+    @Test
+    public void testProvisionVpnProfileNotPreconsented() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        // Expect that both the ACTIVATE_VPN and ACTIVATE_PLATFORM_VPN were tried, but the caller
+        // had neither.
+        checkProvisionVpnProfile(vpn, false /* expectedResult */,
+                AppOpsManager.OP_ACTIVATE_PLATFORM_VPN, AppOpsManager.OP_ACTIVATE_VPN);
+    }
+
+    @Test
+    public void testProvisionVpnProfileVpnServicePreconsented() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_VPN);
+
+        checkProvisionVpnProfile(vpn, true /* expectedResult */, AppOpsManager.OP_ACTIVATE_VPN);
+    }
+
+    @Test
+    public void testProvisionVpnProfileTooLarge() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+
+        final VpnProfile bigProfile = new VpnProfile("");
+        bigProfile.name = new String(new byte[Vpn.MAX_VPN_PROFILE_SIZE_BYTES + 1]);
+
+        try {
+            vpn.provisionVpnProfile(TEST_VPN_PKG, bigProfile, mKeyStore);
+            fail("Expected IAE due to profile size");
+        } catch (IllegalArgumentException expected) {
+        }
+    }
+
+    @Test
+    public void testDeleteVpnProfile() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        vpn.deleteVpnProfile(TEST_VPN_PKG, mKeyStore);
+
+        verify(mKeyStore)
+                .delete(eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)), eq(Process.SYSTEM_UID));
+    }
+
+    @Test
+    public void testGetVpnProfilePrivileged() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG)))
+                .thenReturn(new VpnProfile("").encode());
+
+        vpn.getVpnProfilePrivileged(TEST_VPN_PKG, mKeyStore);
+
+        verify(mKeyStore).get(eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)));
+    }
+
+    @Test
+    public void testStartVpnProfile() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+
+        when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG)))
+                .thenReturn(mVpnProfile.encode());
+
+        vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
+
+        verify(mKeyStore).get(eq(vpn.getProfileNameForPackage(TEST_VPN_PKG)));
+        verify(mAppOps)
+                .noteOpNoThrow(
+                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG));
+    }
+
+    @Test
+    public void testStartVpnProfileVpnServicePreconsented() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_VPN);
+
+        when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG)))
+                .thenReturn(mVpnProfile.encode());
+
+        vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
+
+        // Verify that the the ACTIVATE_VPN appop was checked, but no error was thrown.
+        verify(mAppOps).noteOpNoThrow(AppOpsManager.OP_ACTIVATE_VPN, Process.myUid(), TEST_VPN_PKG);
+    }
+
+    @Test
+    public void testStartVpnProfileNotConsented() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        try {
+            vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
+            fail("Expected failure due to no user consent");
+        } catch (SecurityException expected) {
+        }
+
+        // Verify both appops were checked.
+        verify(mAppOps)
+                .noteOpNoThrow(
+                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG));
+        verify(mAppOps).noteOpNoThrow(AppOpsManager.OP_ACTIVATE_VPN, Process.myUid(), TEST_VPN_PKG);
+
+        // Keystore should never have been accessed.
+        verify(mKeyStore, never()).get(any());
+    }
+
+    @Test
+    public void testStartVpnProfileMissingProfile() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN);
+
+        when(mKeyStore.get(vpn.getProfileNameForPackage(TEST_VPN_PKG))).thenReturn(null);
+
+        try {
+            vpn.startVpnProfile(TEST_VPN_PKG, mKeyStore);
+            fail("Expected failure due to missing profile");
+        } catch (IllegalArgumentException expected) {
+        }
+
+        verify(mKeyStore).get(vpn.getProfileNameForPackage(TEST_VPN_PKG));
+        verify(mAppOps)
+                .noteOpNoThrow(
+                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG));
+    }
+
+    @Test
+    public void testSetPackageAuthorizationVpnService() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_SERVICE));
+        verify(mAppOps)
+                .setMode(
+                        eq(AppOpsManager.OP_ACTIVATE_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG),
+                        eq(AppOpsManager.MODE_ALLOWED));
+    }
+
+    @Test
+    public void testSetPackageAuthorizationPlatformVpn() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_PLATFORM));
+        verify(mAppOps)
+                .setMode(
+                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG),
+                        eq(AppOpsManager.MODE_ALLOWED));
+    }
+
+    @Test
+    public void testSetPackageAuthorizationRevokeAuthorization() throws Exception {
+        final Vpn vpn = createVpnAndSetupUidChecks();
+
+        assertTrue(vpn.setPackageAuthorization(TEST_VPN_PKG, VpnManager.TYPE_VPN_NONE));
+        verify(mAppOps)
+                .setMode(
+                        eq(AppOpsManager.OP_ACTIVATE_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG),
+                        eq(AppOpsManager.MODE_IGNORED));
+        verify(mAppOps)
+                .setMode(
+                        eq(AppOpsManager.OP_ACTIVATE_PLATFORM_VPN),
+                        eq(Process.myUid()),
+                        eq(TEST_VPN_PKG),
+                        eq(AppOpsManager.MODE_IGNORED));
+    }
+
+    /**
      * Mock some methods of vpn object.
      */
     private Vpn createVpn(@UserIdInt int userId) {
-        return new Vpn(Looper.myLooper(), mContext, mNetService, userId, mSystemServices);
+        return new Vpn(Looper.myLooper(), mContext, mNetService,
+                userId, mSystemServices, mIkev2SessionCreator);
     }
 
     private static void assertBlocked(Vpn vpn, int... uids) {
diff --git a/tools/aapt2/dump/DumpManifest.cpp b/tools/aapt2/dump/DumpManifest.cpp
index 31aa249..e7a8203 100644
--- a/tools/aapt2/dump/DumpManifest.cpp
+++ b/tools/aapt2/dump/DumpManifest.cpp
@@ -1188,7 +1188,7 @@
     }
 
     // Fully qualify the activity name
-    ssize_t idx = name.find(".");
+    ssize_t idx = name.find('.');
     if (idx == 0) {
       name = package + name;
     } else if (idx < 0) {
@@ -2138,7 +2138,7 @@
     size_t pos = file_path.find("lib/");
     if (pos != std::string::npos) {
       file_path = file_path.substr(pos + 4);
-      pos = file_path.find("/");
+      pos = file_path.find('/');
       if (pos != std::string::npos) {
         file_path = file_path.substr(0, pos);
       }
diff --git a/tools/aapt2/java/ManifestClassGenerator.cpp b/tools/aapt2/java/ManifestClassGenerator.cpp
index 10e504e..09ea03b 100644
--- a/tools/aapt2/java/ManifestClassGenerator.cpp
+++ b/tools/aapt2/java/ManifestClassGenerator.cpp
@@ -39,7 +39,7 @@
   }
 
   // Normalize only the java identifier, leave the original value unchanged.
-  if (result.find("-") != std::string::npos) {
+  if (result.find('-') != std::string::npos) {
     result = JavaClassGenerator::TransformToFieldName(result);
   }
 
diff --git a/tools/aapt2/link/ManifestFixer.cpp b/tools/aapt2/link/ManifestFixer.cpp
index 954d401..5aa32f8 100644
--- a/tools/aapt2/link/ManifestFixer.cpp
+++ b/tools/aapt2/link/ManifestFixer.cpp
@@ -391,6 +391,7 @@
   manifest_action["uses-split"].Action(RequiredNameIsJavaPackage);
   manifest_action["queries"]["package"].Action(RequiredNameIsJavaPackage);
   manifest_action["queries"]["intent"] = intent_filter_action;
+  manifest_action["queries"]["provider"].Action(RequiredAndroidAttribute("authorities"));
   // TODO: more complicated component name tag
 
   manifest_action["key-sets"]["key-set"]["public-key"];
@@ -428,6 +429,12 @@
 
   application_action["meta-data"] = meta_data_action;
 
+  application_action["processes"];
+  application_action["processes"]["deny-permission"];
+  application_action["processes"]["allow-permission"];
+  application_action["processes"]["process"]["deny-permission"];
+  application_action["processes"]["process"]["allow-permission"];
+
   application_action["activity"] = component_action;
   application_action["activity"]["layout"];
 
diff --git a/tools/codegen/src/com/android/codegen/ImportsProvider.kt b/tools/codegen/src/com/android/codegen/ImportsProvider.kt
index ba0a031..c830aaa 100644
--- a/tools/codegen/src/com/android/codegen/ImportsProvider.kt
+++ b/tools/codegen/src/com/android/codegen/ImportsProvider.kt
@@ -46,7 +46,7 @@
     val Parcelling: String get() { return classRef("com.android.internal.util.Parcelling") }
     val Parcelable: String get() { return classRef("android.os.Parcelable") }
     val Parcel: String get() { return classRef("android.os.Parcel") }
-    val UnsupportedAppUsage: String get() { return classRef("android.annotation.UnsupportedAppUsage") }
+    val UnsupportedAppUsage: String get() { return classRef("android.compat.annotation.UnsupportedAppUsage") }
 
     /**
      * Optionally shortens a class reference if there's a corresponding import present
diff --git a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl b/tools/hiddenapi/Android.bp
similarity index 68%
copy from core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
copy to tools/hiddenapi/Android.bp
index f5e2405..e0eb06cb 100644
--- a/core/java/android/app/timedetector/PhoneTimeSuggestion.aidl
+++ b/tools/hiddenapi/Android.bp
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2017 The Android Open Source Project
+ * 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.
@@ -14,6 +14,17 @@
  * limitations under the License.
  */
 
-package android.app.timedetector;
-
-parcelable PhoneTimeSuggestion;
+python_binary_host {
+	name: "merge_csv",
+	main: "merge_csv.py",
+	srcs: ["merge_csv.py"],
+	version: {
+		py2: {
+			enabled: false,
+		},
+		py3: {
+			enabled: true,
+			embedded_launcher: true
+		},
+	},
+}
diff --git a/tools/hiddenapi/merge_csv.py b/tools/hiddenapi/merge_csv.py
index 48c0755..9661927 100755
--- a/tools/hiddenapi/merge_csv.py
+++ b/tools/hiddenapi/merge_csv.py
@@ -21,20 +21,19 @@
 import sys
 
 csv_readers = [
-    csv.DictReader(open(csv_file, 'rb'), delimiter=',', quotechar='|')
+    csv.DictReader(open(csv_file, 'r'), delimiter=',', quotechar='|')
     for csv_file in sys.argv[1:]
 ]
 
 # Build union of all columns from source files:
 headers = set()
 for reader in csv_readers:
-  headers = headers.union(reader.fieldnames)
+    headers = headers.union(reader.fieldnames)
 
 # Concatenate all files to output:
-out = csv.DictWriter(sys.stdout, delimiter=',', quotechar='|', fieldnames = sorted(headers))
+out = csv.DictWriter(sys.stdout, delimiter=',', quotechar='|', quoting=csv.QUOTE_MINIMAL,
+                     dialect='unix', fieldnames=sorted(headers))
 out.writeheader()
 for reader in csv_readers:
-  for row in reader:
-    out.writerow(row)
-
-
+    for row in reader:
+        out.writerow(row)
diff --git a/tools/stats_log_api_gen/Android.bp b/tools/stats_log_api_gen/Android.bp
index d3958a6..a251c05 100644
--- a/tools/stats_log_api_gen/Android.bp
+++ b/tools/stats_log_api_gen/Android.bp
@@ -30,7 +30,7 @@
         "utils.cpp",
     ],
     cflags: [
-        "-DSTATS_SCHEMA_LEGACY",
+        //"-DSTATS_SCHEMA_LEGACY",
         "-Wall",
         "-Werror",
     ],
diff --git a/tools/stats_log_api_gen/Collation.cpp b/tools/stats_log_api_gen/Collation.cpp
index d290aca..8bccd71 100644
--- a/tools/stats_log_api_gen/Collation.cpp
+++ b/tools/stats_log_api_gen/Collation.cpp
@@ -40,18 +40,21 @@
 {
 }
 
-AtomDecl::AtomDecl(const AtomDecl& that)
-    : code(that.code),
-      name(that.name),
-      message(that.message),
-      fields(that.fields),
-      primaryFields(that.primaryFields),
-      exclusiveField(that.exclusiveField),
-      uidField(that.uidField),
-      whitelisted(that.whitelisted),
-      binaryFields(that.binaryFields),
-      hasModule(that.hasModule),
-      moduleName(that.moduleName) {}
+AtomDecl::AtomDecl(const AtomDecl &that)
+      : code(that.code),
+        name(that.name),
+        message(that.message),
+        fields(that.fields),
+        primaryFields(that.primaryFields),
+        exclusiveField(that.exclusiveField),
+        defaultState(that.defaultState),
+        resetState(that.resetState),
+        nested(that.nested),
+        uidField(that.uidField),
+        whitelisted(that.whitelisted),
+        binaryFields(that.binaryFields),
+        hasModule(that.hasModule),
+        moduleName(that.moduleName) {}
 
 AtomDecl::AtomDecl(int c, const string& n, const string& m)
     :code(c),
@@ -281,7 +284,7 @@
     atomDecl->fields.push_back(atField);
 
     if (field->options().GetExtension(os::statsd::state_field_option).option() ==
-        os::statsd::StateField::PRIMARY) {
+        os::statsd::StateField::PRIMARY_FIELD) {
         if (javaType == JAVA_TYPE_UNKNOWN ||
             javaType == JAVA_TYPE_ATTRIBUTION_CHAIN ||
             javaType == JAVA_TYPE_OBJECT || javaType == JAVA_TYPE_BYTE_ARRAY) {
@@ -300,7 +303,7 @@
     }
 
     if (field->options().GetExtension(os::statsd::state_field_option).option() ==
-        os::statsd::StateField::EXCLUSIVE) {
+        os::statsd::StateField::EXCLUSIVE_STATE) {
         if (javaType == JAVA_TYPE_UNKNOWN ||
             javaType == JAVA_TYPE_ATTRIBUTION_CHAIN ||
             javaType == JAVA_TYPE_OBJECT || javaType == JAVA_TYPE_BYTE_ARRAY) {
@@ -312,6 +315,21 @@
         } else {
             errorCount++;
         }
+
+        if (field->options()
+                    .GetExtension(os::statsd::state_field_option)
+                    .has_default_state_value()) {
+            atomDecl->defaultState = field->options()
+                                             .GetExtension(os::statsd::state_field_option)
+                                             .default_state_value();
+        }
+
+        if (field->options().GetExtension(os::statsd::state_field_option).has_reset_state_value()) {
+            atomDecl->resetState = field->options()
+                                           .GetExtension(os::statsd::state_field_option)
+                                           .reset_state_value();
+        }
+        atomDecl->nested = field->options().GetExtension(os::statsd::state_field_option).nested();
     }
 
     if (field->options().GetExtension(os::statsd::is_uid) == true) {
diff --git a/tools/stats_log_api_gen/Collation.h b/tools/stats_log_api_gen/Collation.h
index 87d4d5d..65d8e3e 100644
--- a/tools/stats_log_api_gen/Collation.h
+++ b/tools/stats_log_api_gen/Collation.h
@@ -88,6 +88,9 @@
 
     vector<int> primaryFields;
     int exclusiveField = 0;
+    int defaultState = INT_MAX;
+    int resetState = INT_MAX;
+    bool nested;
 
     int uidField = 0;
 
diff --git a/tools/stats_log_api_gen/atoms_info_writer.cpp b/tools/stats_log_api_gen/atoms_info_writer.cpp
index 66ae964..984c929 100644
--- a/tools/stats_log_api_gen/atoms_info_writer.cpp
+++ b/tools/stats_log_api_gen/atoms_info_writer.cpp
@@ -25,11 +25,15 @@
 namespace stats_log_api_gen {
 
 static void write_atoms_info_header_body(FILE* out, const Atoms& atoms) {
+    fprintf(out, "static int UNSET_VALUE = INT_MAX;\n");
     fprintf(out, "static int FIRST_UID_IN_CHAIN = 0;\n");
 
     fprintf(out, "struct StateAtomFieldOptions {\n");
     fprintf(out, "  std::vector<int> primaryFields;\n");
     fprintf(out, "  int exclusiveField;\n");
+    fprintf(out, "  int defaultState = UNSET_VALUE;\n");
+    fprintf(out, "  int resetState = UNSET_VALUE;\n");
+    fprintf(out, "  bool nested;\n");
     fprintf(out, "};\n");
     fprintf(out, "\n");
 
@@ -126,7 +130,7 @@
             "static std::map<int, StateAtomFieldOptions> "
             "getStateAtomFieldOptions() {\n");
     fprintf(out, "    std::map<int, StateAtomFieldOptions> options;\n");
-    fprintf(out, "    StateAtomFieldOptions opt;\n");
+    fprintf(out, "    StateAtomFieldOptions* opt;\n");
     for (set<AtomDecl>::const_iterator atom = atoms.decls.begin();
          atom != atoms.decls.end(); atom++) {
         if (atom->primaryFields.size() == 0 && atom->exclusiveField == 0) {
@@ -136,14 +140,26 @@
                 "\n    // Adding primary and exclusive fields for atom "
                 "(%d)%s\n",
                 atom->code, atom->name.c_str());
-        fprintf(out, "    opt.primaryFields.clear();\n");
+        fprintf(out, "    opt = &(options[static_cast<int>(%s)]);\n",
+                make_constant_name(atom->name).c_str());
+        fprintf(out, "    opt->primaryFields.reserve(%lu);\n", atom->primaryFields.size());
         for (const auto& field : atom->primaryFields) {
-            fprintf(out, "    opt.primaryFields.push_back(%d);\n", field);
+            fprintf(out, "    opt->primaryFields.push_back(%d);\n", field);
         }
 
-        fprintf(out, "    opt.exclusiveField = %d;\n", atom->exclusiveField);
-        fprintf(out, "    options[static_cast<int>(%s)] = opt;\n",
-                make_constant_name(atom->name).c_str());
+        fprintf(out, "    opt->exclusiveField = %d;\n", atom->exclusiveField);
+        if (atom->defaultState != INT_MAX) {
+            fprintf(out, "    opt->defaultState = %d;\n", atom->defaultState);
+        } else {
+            fprintf(out, "    opt->defaultState = UNSET_VALUE;\n");
+        }
+
+        if (atom->resetState != INT_MAX) {
+            fprintf(out, "    opt->resetState = %d;\n", atom->resetState);
+        } else {
+            fprintf(out, "    opt->resetState = UNSET_VALUE;\n");
+        }
+        fprintf(out, "    opt->nested = %d;\n", atom->nested);
     }
 
     fprintf(out, "    return options;\n");
diff --git a/tools/stats_log_api_gen/java_writer_q.cpp b/tools/stats_log_api_gen/java_writer_q.cpp
index 1259a68..12c050d 100644
--- a/tools/stats_log_api_gen/java_writer_q.cpp
+++ b/tools/stats_log_api_gen/java_writer_q.cpp
@@ -175,9 +175,7 @@
                         indent.c_str());
                 fprintf(out,
                         "%s    android.util.SparseArray<Float> floatMap = null;\n", indent.c_str());
-                fprintf(out,
-                        "%s    int keyValuePairSize = LIST_TYPE_OVERHEAD * 5;\n",
-                        indent.c_str());
+                fprintf(out, "%s    int keyValuePairSize = LIST_TYPE_OVERHEAD;\n", indent.c_str());
                 fprintf(out,
                         "%s    for (int i = 0; i < count; i++) {\n", indent.c_str());
                 fprintf(out,
@@ -360,8 +358,9 @@
                 requiredHelpers |= JAVA_MODULE_REQUIRES_FLOAT;
                 requiredHelpers |= JAVA_MODULE_REQUIRES_KEY_VALUE_PAIRS;
                 fprintf(out,
-                        "%s    writeKeyValuePairs(buff, pos, intMap, longMap, stringMap, "
-                        "floatMap);\n", indent.c_str());
+                        "%s    writeKeyValuePairs(buff, pos, (byte) count, intMap, longMap, "
+                        "stringMap, floatMap);\n",
+                        indent.c_str());
                 fprintf(out, "%s    pos += keyValuePairSize;\n", indent.c_str());
                 break;
             default:
@@ -472,7 +471,8 @@
     }
 
     if (requiredHelpers & JAVA_MODULE_REQUIRES_KEY_VALUE_PAIRS) {
-        fprintf(out, "%sprivate static void writeKeyValuePairs(byte[] buff, int pos,\n",
+        fprintf(out,
+                "%sprivate static void writeKeyValuePairs(byte[] buff, int pos, byte numPairs,\n",
                 indent.c_str());
         fprintf(out, "%s        final android.util.SparseIntArray intMap,\n", indent.c_str());
         fprintf(out, "%s        final android.util.SparseLongArray longMap,\n", indent.c_str());
@@ -483,15 +483,12 @@
 
         // Start list of lists.
         fprintf(out, "%s    buff[pos] = LIST_TYPE;\n", indent.c_str());
-        fprintf(out, "%s    buff[pos + 1] = (byte) 4;\n", indent.c_str());
+        fprintf(out, "%s    buff[pos + 1] = (byte) numPairs;\n", indent.c_str());
         fprintf(out, "%s    pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
 
         // Write integers.
         fprintf(out, "%s    final int intMapSize = null == intMap ? 0 : intMap.size();\n",
                 indent.c_str());
-        fprintf(out, "%s    buff[pos] = LIST_TYPE;\n", indent.c_str());
-        fprintf(out, "%s    buff[pos + 1] = (byte) intMapSize;\n", indent.c_str());
-        fprintf(out, "%s    pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
         fprintf(out, "%s    for (int i = 0; i < intMapSize; i++) {\n", indent.c_str());
         fprintf(out, "%s        buff[pos] = LIST_TYPE;\n", indent.c_str());
         fprintf(out, "%s        buff[pos + 1] = (byte) 2;\n", indent.c_str());
@@ -509,9 +506,6 @@
         // Write longs.
         fprintf(out, "%s    final int longMapSize = null == longMap ? 0 : longMap.size();\n",
                 indent.c_str());
-        fprintf(out, "%s    buff[pos] = LIST_TYPE;\n", indent.c_str());
-        fprintf(out, "%s    buff[pos + 1] = (byte) longMapSize;\n", indent.c_str());
-        fprintf(out, "%s    pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
         fprintf(out, "%s    for (int i = 0; i < longMapSize; i++) {\n", indent.c_str());
         fprintf(out, "%s        buff[pos] = LIST_TYPE;\n", indent.c_str());
         fprintf(out, "%s        buff[pos + 1] = (byte) 2;\n", indent.c_str());
@@ -529,9 +523,6 @@
         // Write Strings.
         fprintf(out, "%s    final int stringMapSize = null == stringMap ? 0 : stringMap.size();\n",
                 indent.c_str());
-        fprintf(out, "%s    buff[pos] = LIST_TYPE;\n", indent.c_str());
-        fprintf(out, "%s    buff[pos + 1] = (byte) stringMapSize;\n", indent.c_str());
-        fprintf(out, "%s    pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
         fprintf(out, "%s    for (int i = 0; i < stringMapSize; i++) {\n", indent.c_str());
         fprintf(out, "%s        buff[pos] = LIST_TYPE;\n", indent.c_str());
         fprintf(out, "%s        buff[pos + 1] = (byte) 2;\n", indent.c_str());
@@ -556,9 +547,6 @@
         // Write floats.
         fprintf(out, "%s    final int floatMapSize = null == floatMap ? 0 : floatMap.size();\n",
                 indent.c_str());
-        fprintf(out, "%s    buff[pos] = LIST_TYPE;\n", indent.c_str());
-        fprintf(out, "%s    buff[pos + 1] = (byte) floatMapSize;\n", indent.c_str());
-        fprintf(out, "%s    pos += LIST_TYPE_OVERHEAD;\n", indent.c_str());
         fprintf(out, "%s    for (int i = 0; i < floatMapSize; i++) {\n", indent.c_str());
         fprintf(out, "%s        buff[pos] = LIST_TYPE;\n", indent.c_str());
         fprintf(out, "%s        buff[pos + 1] = (byte) 2;\n", indent.c_str());
@@ -577,6 +565,50 @@
     }
 }
 
+// This method is called in main.cpp to generate StatsLog for modules that's compatible with
+// Q at compile-time.
+int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms,
+                                      const AtomDecl &attributionDecl, const string& moduleName,
+                                      const string& javaClass, const string& javaPackage,
+                                      const bool supportWorkSource) {
+    // Print prelude
+    fprintf(out, "// This file is autogenerated\n");
+    fprintf(out, "\n");
+    fprintf(out, "package %s;\n", javaPackage.c_str());
+    fprintf(out, "\n");
+    fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n");
+    fprintf(out, "\n");
+    fprintf(out, "import android.util.StatsLog;\n");
+    fprintf(out, "import android.os.SystemClock;\n");
+    fprintf(out, "\n");
+    fprintf(out, "\n");
+    fprintf(out, "/**\n");
+    fprintf(out, " * Utility class for logging statistics events.\n");
+    fprintf(out, " */\n");
+    fprintf(out, "public class %s {\n", javaClass.c_str());
+
+    write_java_q_logging_constants(out, "    ");
+
+    write_java_atom_codes(out, atoms, moduleName);
+
+    write_java_enum_values(out, atoms, moduleName);
+
+    int errors = 0;
+    // Print write methods
+    fprintf(out, "    // Write methods\n");
+    errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl,
+            moduleName, "    ");
+    errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules,
+            moduleName);
+    if (supportWorkSource) {
+        errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
+    }
+
+    fprintf(out, "}\n");
+
+    return errors;
+}
+
 #if defined(STATS_SCHEMA_LEGACY)
 static void write_java_method(
         FILE* out,
@@ -639,48 +671,6 @@
 
     return 0;
 }
-
-int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms,
-                                      const AtomDecl &attributionDecl, const string& moduleName,
-                                      const string& javaClass, const string& javaPackage,
-                                      const bool supportWorkSource) {
-    // Print prelude
-    fprintf(out, "// This file is autogenerated\n");
-    fprintf(out, "\n");
-    fprintf(out, "package %s;\n", javaPackage.c_str());
-    fprintf(out, "\n");
-    fprintf(out, "import static java.nio.charset.StandardCharsets.UTF_8;\n");
-    fprintf(out, "\n");
-    fprintf(out, "import android.util.StatsLog;\n");
-    fprintf(out, "import android.os.SystemClock;\n");
-    fprintf(out, "\n");
-    fprintf(out, "\n");
-    fprintf(out, "/**\n");
-    fprintf(out, " * Utility class for logging statistics events.\n");
-    fprintf(out, " */\n");
-    fprintf(out, "public class %s {\n", javaClass.c_str());
-
-    write_java_q_logging_constants(out, "    ");
-
-    write_java_atom_codes(out, atoms, moduleName);
-
-    write_java_enum_values(out, atoms, moduleName);
-
-    int errors = 0;
-    // Print write methods
-    fprintf(out, "    // Write methods\n");
-    errors += write_java_methods_q_schema(out, atoms.signatures_to_modules, attributionDecl,
-            moduleName, "    ");
-    errors += write_java_non_chained_methods(out, atoms.non_chained_signatures_to_modules,
-            moduleName);
-    if (supportWorkSource) {
-        errors += write_java_work_source_methods(out, atoms.signatures_to_modules, moduleName);
-    }
-
-    fprintf(out, "}\n");
-
-    return errors;
-}
 #endif
 
 }  // namespace stats_log_api_gen
diff --git a/tools/stats_log_api_gen/java_writer_q.h b/tools/stats_log_api_gen/java_writer_q.h
index 36df1d8..7d734df 100644
--- a/tools/stats_log_api_gen/java_writer_q.h
+++ b/tools/stats_log_api_gen/java_writer_q.h
@@ -45,13 +45,13 @@
         const int requiredHelpers,
         const string& indent);
 
-#if defined(STATS_SCHEMA_LEGACY)
-int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
-                           const bool supportWorkSource);
-
 int write_stats_log_java_q_for_module(FILE* out, const Atoms& atoms,
         const AtomDecl &attributionDecl, const string& moduleName, const string& javaClass,
         const string& javaPackage, const bool supportWorkSource);
+
+#if defined(STATS_SCHEMA_LEGACY)
+int write_stats_log_java_q(FILE* out, const Atoms& atoms, const AtomDecl &attributionDecl,
+                           const bool supportWorkSource);
 #endif
 }  // namespace stats_log_api_gen
 }  // namespace android
diff --git a/tools/stats_log_api_gen/main.cpp b/tools/stats_log_api_gen/main.cpp
index 6089532..ddbf22c 100644
--- a/tools/stats_log_api_gen/main.cpp
+++ b/tools/stats_log_api_gen/main.cpp
@@ -511,8 +511,10 @@
     fprintf(stderr, "  --javaClass CLASS    the class name of the java class.\n");
     fprintf(stderr, "                       Optional for Java with module.\n");
     fprintf(stderr, "                       Default is \"StatsLogInternal\"\n");
-    fprintf(stderr, "  --supportQ           Include support for Android Q.\n");
+    fprintf(stderr, "  --supportQ           Include runtime support for Android Q.\n");
     fprintf(stderr, "  --worksource         Include support for logging WorkSource objects.\n");
+    fprintf(stderr, "  --compileQ           Include compile-time support for Android Q "
+            "(Java only).\n");
 }
 
 /**
@@ -536,6 +538,7 @@
     string javaClass = DEFAULT_JAVA_CLASS;
     bool supportQ = false;
     bool supportWorkSource = false;
+    bool compileQ = false;
 
     int index = 1;
     while (index < argc) {
@@ -630,6 +633,8 @@
             supportQ = true;
         } else if (0 == strcmp("--worksource", argv[index])) {
             supportWorkSource = true;
+        } else if (0 == strcmp("--compileQ", argv[index])) {
+            compileQ = true;
         }
 
         index++;
@@ -645,12 +650,18 @@
         return 1;
     }
 
-    if (DEFAULT_MODULE_NAME == moduleName && supportQ) {
+    if (DEFAULT_MODULE_NAME == moduleName && (supportQ || compileQ)) {
         // Support for Q schema is not needed for default module.
         fprintf(stderr, "%s cannot support Q schema\n", moduleName.c_str());
         return 1;
     }
 
+    if (supportQ && compileQ) {
+        // Runtime Q support is redundant if compile-time Q support is required.
+        fprintf(stderr, "Cannot specify compileQ and supportQ simultaneously.\n");
+        return 1;
+    }
+
     // Collate the parameters
     Atoms atoms;
     int errorCount = collate_atoms(Atom::descriptor(), &atoms);
@@ -748,9 +759,15 @@
             javaClass = "StatsLogInternal";
             javaPackage = "android.util";
         }
-        errorCount = android::stats_log_api_gen::write_stats_log_java(
-                out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportQ,
-                supportWorkSource);
+        if (compileQ) {
+            errorCount = android::stats_log_api_gen::write_stats_log_java_q_for_module(
+                    out, atoms, attributionDecl, moduleName, javaClass, javaPackage,
+                    supportWorkSource);
+        } else {
+            errorCount = android::stats_log_api_gen::write_stats_log_java(
+                    out, atoms, attributionDecl, moduleName, javaClass, javaPackage, supportQ,
+                    supportWorkSource);
+        }
 #endif
 
         fclose(out);
diff --git a/tools/stats_log_api_gen/native_writer.cpp b/tools/stats_log_api_gen/native_writer.cpp
index c7a34fe..285514d 100644
--- a/tools/stats_log_api_gen/native_writer.cpp
+++ b/tools/stats_log_api_gen/native_writer.cpp
@@ -22,15 +22,6 @@
 namespace stats_log_api_gen {
 
 #if !defined(STATS_SCHEMA_LEGACY)
-static void write_native_key_value_pairs_for_type(FILE* out, const int argIndex,
-        const int typeIndex, const string& type, const string& valueFieldName) {
-    fprintf(out, "    for (const auto& it : arg%d_%d) {\n", argIndex, typeIndex);
-    fprintf(out, "        pairs.push_back("
-            "{ .key = it.first, .valueType = %s, .%s = it.second });\n",
-            type.c_str(), valueFieldName.c_str());
-    fprintf(out, "    }\n");
-
-}
 
 static int write_native_stats_write_methods(FILE* out, const Atoms& atoms,
         const AtomDecl& attributionDecl, const string& moduleName, const bool supportQ) {
@@ -41,7 +32,10 @@
             continue;
         }
         vector<java_type_t> signature = signature_to_modules_it->first;
-
+        // Key value pairs not supported in native.
+        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
+            continue;
+        }
         write_native_method_signature(out, "int stats_write", signature,
                 attributionDecl, " {");
 
@@ -59,11 +53,6 @@
                                 uidName, uidName, tagName);
                         break;
                     }
-                    case JAVA_TYPE_KEY_VALUE_PAIR:
-                        fprintf(out, "    event.writeKeyValuePairs("
-                                "arg%d_1, arg%d_2, arg%d_3, arg%d_4);\n",
-                                argIndex, argIndex, argIndex, argIndex);
-                        break;
                     case JAVA_TYPE_BYTE_ARRAY:
                         fprintf(out, "    event.writeByteArray(arg%d.arg, arg%d.arg_length);\n",
                                 argIndex, argIndex);
@@ -85,7 +74,7 @@
                         fprintf(out, "    event.writeString(arg%d);\n", argIndex);
                         break;
                     default:
-                        // Unsupported types: OBJECT, DOUBLE.
+                        // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS.
                         fprintf(stderr, "Encountered unsupported type.");
                         return 1;
                 }
@@ -93,8 +82,8 @@
             }
             fprintf(out, "    return event.writeToSocket();\n");
         } else {
-            fprintf(out, "    struct stats_event* event = stats_event_obtain();\n");
-            fprintf(out, "    stats_event_set_atom_id(event, code);\n");
+            fprintf(out, "    AStatsEvent* event = AStatsEvent_obtain();\n");
+            fprintf(out, "    AStatsEvent_setAtomId(event, code);\n");
             for (vector<java_type_t>::const_iterator arg = signature.begin();
                     arg != signature.end(); arg++) {
                 switch (*arg) {
@@ -102,57 +91,43 @@
                         const char* uidName = attributionDecl.fields.front().name.c_str();
                         const char* tagName = attributionDecl.fields.back().name.c_str();
                         fprintf(out,
-                                "    stats_event_write_attribution_chain(event, "
+                                "    AStatsEvent_writeAttributionChain(event, "
                                 "reinterpret_cast<const uint32_t*>(%s), %s.data(), "
                                 "static_cast<uint8_t>(%s_length));\n",
                                 uidName, tagName, uidName);
                         break;
                     }
-                    case JAVA_TYPE_KEY_VALUE_PAIR:
-                        fprintf(out, "    std::vector<key_value_pair> pairs;\n");
-                        write_native_key_value_pairs_for_type(
-                                out, argIndex, 1, "INT32_TYPE", "int32Value");
-                        write_native_key_value_pairs_for_type(
-                                out, argIndex, 2, "INT64_TYPE", "int64Value");
-                        write_native_key_value_pairs_for_type(
-                                out, argIndex, 3, "STRING_TYPE", "stringValue");
-                        write_native_key_value_pairs_for_type(
-                                out, argIndex, 4, "FLOAT_TYPE", "floatValue");
-                        fprintf(out,
-                                "    stats_event_write_key_value_pairs(event, pairs.data(), "
-                                "static_cast<uint8_t>(pairs.size()));\n");
-                        break;
                     case JAVA_TYPE_BYTE_ARRAY:
                         fprintf(out,
-                                "    stats_event_write_byte_array(event, "
+                                "    AStatsEvent_writeByteArray(event, "
                                 "reinterpret_cast<const uint8_t*>(arg%d.arg), arg%d.arg_length);\n",
                                 argIndex, argIndex);
                         break;
                     case JAVA_TYPE_BOOLEAN:
-                        fprintf(out, "    stats_event_write_bool(event, arg%d);\n", argIndex);
+                        fprintf(out, "    AStatsEvent_writeBool(event, arg%d);\n", argIndex);
                         break;
                     case JAVA_TYPE_INT: // Fall through.
                     case JAVA_TYPE_ENUM:
-                        fprintf(out, "    stats_event_write_int32(event, arg%d);\n", argIndex);
+                        fprintf(out, "    AStatsEvent_writeInt32(event, arg%d);\n", argIndex);
                         break;
                     case JAVA_TYPE_FLOAT:
-                        fprintf(out, "    stats_event_write_float(event, arg%d);\n", argIndex);
+                        fprintf(out, "    AStatsEvent_writeFloat(event, arg%d);\n", argIndex);
                         break;
                     case JAVA_TYPE_LONG:
-                        fprintf(out, "    stats_event_write_int64(event, arg%d);\n", argIndex);
+                        fprintf(out, "    AStatsEvent_writeInt64(event, arg%d);\n", argIndex);
                         break;
                     case JAVA_TYPE_STRING:
-                        fprintf(out, "    stats_event_write_string8(event, arg%d);\n", argIndex);
+                        fprintf(out, "    AStatsEvent_writeString(event, arg%d);\n", argIndex);
                         break;
                     default:
-                        // Unsupported types: OBJECT, DOUBLE.
+                        // Unsupported types: OBJECT, DOUBLE, KEY_VALUE_PAIRS
                         fprintf(stderr, "Encountered unsupported type.");
                         return 1;
                 }
                 argIndex++;
             }
-            fprintf(out, "    const int ret = stats_event_write(event);\n");
-            fprintf(out, "    stats_event_release(event);\n");
+            fprintf(out, "    const int ret = AStatsEvent_write(event);\n");
+            fprintf(out, "    AStatsEvent_release(event);\n");
             fprintf(out, "    return ret;\n");
         }
         fprintf(out, "}\n\n");
@@ -169,6 +144,10 @@
             continue;
         }
         vector<java_type_t> signature = signature_it->first;
+        // Key value pairs not supported in native.
+        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
+            continue;
+        }
 
         write_native_method_signature(out, "int stats_write_non_chained", signature,
                 attributionDecl, " {");
@@ -210,8 +189,14 @@
         if (!signature_needed_for_module(signature_to_modules_it->second, moduleName)) {
             continue;
         }
-
         vector<java_type_t> signature = signature_to_modules_it->first;
+
+#if !defined(STATS_SCHEMA_LEGACY)
+        // Key value pairs not supported in native.
+        if (find(signature.begin(), signature.end(), JAVA_TYPE_KEY_VALUE_PAIR) != signature.end()) {
+            continue;
+        }
+#endif
         write_native_method_signature(out, methodName, signature, attributionDecl, ";");
     }
 }
diff --git a/tools/stats_log_api_gen/test.proto b/tools/stats_log_api_gen/test.proto
index c9a4763..b892194 100644
--- a/tools/stats_log_api_gen/test.proto
+++ b/tools/stats_log_api_gen/test.proto
@@ -148,53 +148,42 @@
 
 // The atom has only primary field but no exclusive state field.
 message BadStateAtom1 {
-    optional int32 uid = 1
-            [(android.os.statsd.state_field_option).option = PRIMARY];
+    optional int32 uid = 1 [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
 }
 
 // Only primative types can be annotated.
 message BadStateAtom2 {
     repeated android.os.statsd.AttributionNode attribution = 1
-            [(android.os.statsd.state_field_option).option = PRIMARY];
-    optional int32 state = 2
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
+            [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
+    optional int32 state = 2 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
 }
 
 // Having 2 exclusive state field in the atom means the atom is badly designed.
 // E.g., putting bluetooth state and wifi state in the same atom.
 message BadStateAtom3 {
-    optional int32 uid = 1
-            [(android.os.statsd.state_field_option).option = PRIMARY];
-    optional int32 state = 2
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
-    optional int32 state2 = 3
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
+    optional int32 uid = 1 [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
+    optional int32 state = 2 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
+    optional int32 state2 = 3 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
 }
 
 message GoodStateAtom1 {
-    optional int32 uid = 1
-            [(android.os.statsd.state_field_option).option = PRIMARY];
-    optional int32 state = 2
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
+    optional int32 uid = 1 [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
+    optional int32 state = 2 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
 }
 
 // Atoms can have exclusive state field, but no primary field. That means
 // the state is globally exclusive (e.g., DisplayState).
 message GoodStateAtom2 {
     optional int32 uid = 1;
-    optional int32 state = 2
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
+    optional int32 state = 2 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
 }
 
 // We can have more than one primary fields. That means their combination is a
 // primary key.
 message GoodStateAtom3 {
-    optional int32 uid = 1
-            [(android.os.statsd.state_field_option).option = PRIMARY];
-    optional int32 tid = 2
-            [(android.os.statsd.state_field_option).option = PRIMARY];
-    optional int32 state = 3
-            [(android.os.statsd.state_field_option).option = EXCLUSIVE];
+    optional int32 uid = 1 [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
+    optional int32 tid = 2 [(android.os.statsd.state_field_option).option = PRIMARY_FIELD];
+    optional int32 state = 3 [(android.os.statsd.state_field_option).option = EXCLUSIVE_STATE];
 }
 
 message WhitelistedAtom {
diff --git a/tools/streaming_proto/cpp/main.cpp b/tools/streaming_proto/cpp/main.cpp
index d6b9d81..fe9a438 100644
--- a/tools/streaming_proto/cpp/main.cpp
+++ b/tools/streaming_proto/cpp/main.cpp
@@ -33,13 +33,13 @@
     if (GENERATE_MAPPING) {
         string name = make_constant_name(enu.name());
         string prefix = name + "_";
-        text << indent << "const int _ENUM_" << name << "_COUNT = " << N << ";" << endl;
-        text << indent << "const char* _ENUM_" << name << "_NAMES[" << N << "] = {" << endl;
+        text << indent << "static const int _ENUM_" << name << "_COUNT = " << N << ";" << endl;
+        text << indent << "static const char* _ENUM_" << name << "_NAMES[" << N << "] = {" << endl;
         for (int i=0; i<N; i++) {
             text << indent << INDENT << "\"" << stripPrefix(enu.value(i).name(), prefix) << "\"," << endl;
         }
         text << indent << "};" << endl;
-        text << indent << "const int _ENUM_" << name << "_VALUES[" << N << "] = {" << endl;
+        text << indent << "static const int _ENUM_" << name << "_VALUES[" << N << "] = {" << endl;
         for (int i=0; i<N; i++) {
             text << indent << INDENT << make_constant_name(enu.value(i).name()) << "," << endl;
         }
@@ -102,13 +102,13 @@
 
     if (GENERATE_MAPPING) {
         N = message.field_size();
-        text << indented << "const int _FIELD_COUNT = " << N << ";" << endl;
-        text << indented << "const char* _FIELD_NAMES[" << N << "] = {" << endl;
+        text << indented << "static const int _FIELD_COUNT = " << N << ";" << endl;
+        text << indented << "static const char* _FIELD_NAMES[" << N << "] = {" << endl;
         for (int i=0; i<N; i++) {
             text << indented << INDENT << "\"" << message.field(i).name() << "\"," << endl;
         }
         text << indented << "};" << endl;
-        text << indented << "const uint64_t _FIELD_IDS[" << N << "] = {" << endl;
+        text << indented << "static const uint64_t _FIELD_IDS[" << N << "] = {" << endl;
         for (int i=0; i<N; i++) {
             text << indented << INDENT << make_constant_name(message.field(i).name()) << "," << endl;
         }
@@ -152,7 +152,7 @@
         write_message(text, file_descriptor.message_type(i), "");
     }
 
-    for (vector<string>::iterator it = namespaces.begin(); it != namespaces.end(); it++) {
+    for (vector<string>::reverse_iterator it = namespaces.rbegin(); it != namespaces.rend(); it++) {
         text << "} // " << *it << endl;
     }
 
diff --git a/wifi/Android.bp b/wifi/Android.bp
index dae04c6..1763975 100644
--- a/wifi/Android.bp
+++ b/wifi/Android.bp
@@ -47,7 +47,7 @@
         // framework-wifi.jar. This is not a good idea, should move WifiNetworkScoreCache
         // to a separate package.
         "java/android/net/wifi/WifiNetworkScoreCache.java",
-        "java/android/net/wifi/WifiOemConfigStoreMigrationHook.java",
+        "java/android/net/wifi/WifiOemMigrationHook.java",
         "java/android/net/wifi/wificond/*.java",
         ":libwificond_ipc_aidl",
     ],
@@ -63,7 +63,6 @@
     "//frameworks/base/wifi/tests",
     "//frameworks/opt/net/wifi/tests/wifitests:__subpackages__",
 
-    "//frameworks/opt/net/wifi/libs/WifiTrackerLib/tests",
     "//external/robolectric-shadows:__subpackages__",
     "//frameworks/base/packages/SettingsLib/tests/integ",
     "//external/sl4a:__subpackages__",
diff --git a/wifi/java/android/net/wifi/IScoreChangeCallback.aidl b/wifi/java/android/net/wifi/IScoreChangeCallback.aidl
index fd23610..462a978 100644
--- a/wifi/java/android/net/wifi/IScoreChangeCallback.aidl
+++ b/wifi/java/android/net/wifi/IScoreChangeCallback.aidl
@@ -16,6 +16,8 @@
 
 package android.net.wifi;
 
+import android.net.NetworkScore;
+
 /**
  * Interface for Wi-Fi network score callback.
  *
@@ -23,7 +25,7 @@
  */
 oneway interface IScoreChangeCallback
 {
-    void onStatusChange(int sessionId, boolean exiting);
+    void onScoreChange(int sessionId, in NetworkScore score);
 
     void onTriggerUpdateOfWifiUsabilityStats(int sessionId);
 }
diff --git a/wifi/java/android/net/wifi/IWifiManager.aidl b/wifi/java/android/net/wifi/IWifiManager.aidl
index 31b3a50..1c330e2 100644
--- a/wifi/java/android/net/wifi/IWifiManager.aidl
+++ b/wifi/java/android/net/wifi/IWifiManager.aidl
@@ -123,8 +123,6 @@
 
     boolean isWifiStandardSupported(int standard);
 
-    boolean needs5GHzToAnyApBandConversion();
-
     DhcpInfo getDhcpInfo();
 
     boolean isScanAlwaysAvailable();
@@ -268,4 +266,14 @@
      * Return the Map of {@link WifiNetworkSuggestion} and the list of <ScanResult>
      */
     Map getMatchingScanResults(in List<WifiNetworkSuggestion> networkSuggestions, in List<ScanResult> scanResults, String callingPackage, String callingFeatureId);
+
+    void setScanThrottleEnabled(boolean enable);
+
+    boolean isScanThrottleEnabled();
+
+    Map getAllMatchingPasspointProfilesForScanResults(in List<ScanResult> scanResult);
+
+    void setAutoWakeupEnabled(boolean enable);
+
+    boolean isAutoWakeupEnabled();
 }
diff --git a/wifi/java/android/net/wifi/SoftApConfiguration.java b/wifi/java/android/net/wifi/SoftApConfiguration.java
index c8fd243..0db3313 100644
--- a/wifi/java/android/net/wifi/SoftApConfiguration.java
+++ b/wifi/java/android/net/wifi/SoftApConfiguration.java
@@ -519,6 +519,9 @@
             case BAND_5GHZ:
                 wifiConfig.apBand  = WifiConfiguration.AP_BAND_5GHZ;
                 break;
+            case BAND_2GHZ | BAND_5GHZ:
+                wifiConfig.apBand  = WifiConfiguration.AP_BAND_ANY;
+                break;
             case BAND_ANY:
                 wifiConfig.apBand  = WifiConfiguration.AP_BAND_ANY;
                 break;
diff --git a/wifi/java/android/net/wifi/WifiConfiguration.java b/wifi/java/android/net/wifi/WifiConfiguration.java
index 0ef224a..dc5ac1e 100644
--- a/wifi/java/android/net/wifi/WifiConfiguration.java
+++ b/wifi/java/android/net/wifi/WifiConfiguration.java
@@ -373,6 +373,7 @@
      * ECDHE_ECDSA
      * ECDHE_RSA
      * </pre>
+     * @hide
      */
     public static class SuiteBCipher {
         private SuiteBCipher() { }
@@ -567,14 +568,12 @@
      * 2GHz band.
      * @hide
      */
-    @SystemApi
     public static final int AP_BAND_2GHZ = 0;
 
     /**
      * 5GHz band.
      * @hide
      */
-    @SystemApi
     public static final int AP_BAND_5GHZ = 1;
 
     /**
@@ -582,7 +581,6 @@
      * operating country code and current radio conditions.
      * @hide
      */
-    @SystemApi
     public static final int AP_BAND_ANY = -1;
 
     /**
@@ -592,7 +590,7 @@
      *
      * @hide
      */
-    @SystemApi
+    @UnsupportedAppUsage
     @ApBand
     public int apBand = AP_BAND_2GHZ;
 
@@ -715,8 +713,8 @@
     public BitSet allowedGroupManagementCiphers;
     /**
      * The set of SuiteB ciphers supported by this configuration.
-     * To be used for WPA3-Enterprise mode.
-     * See {@link SuiteBCipher} for descriptions of the values.
+     * To be used for WPA3-Enterprise mode. Set automatically by the framework based on the
+     * certificate type that is used in this configuration.
      */
     @NonNull
     public BitSet allowedSuiteBCiphers;
@@ -953,7 +951,7 @@
      * Indicate whether the network is trusted or not. Networks are considered trusted
      * if the user explicitly allowed this network connection.
      * This bit can be used by suggestion network, see
-     * {@link WifiNetworkSuggestion.Builder#setUnTrusted(boolean)}
+     * {@link WifiNetworkSuggestion.Builder#setUntrusted(boolean)}
      * @hide
      */
     public boolean trusted;
@@ -1251,8 +1249,8 @@
 
         /** @hide */
         @Retention(RetentionPolicy.SOURCE)
-        @IntDef(value = {
-                NETWORK_SELECTION_ENABLE,
+        @IntDef(prefix = "DISABLED_", value = {
+                DISABLED_NONE,
                 DISABLED_ASSOCIATION_REJECTION,
                 DISABLED_AUTHENTICATION_FAILURE,
                 DISABLED_DHCP_FAILURE,
@@ -1266,7 +1264,7 @@
 
         // Quality Network disabled reasons
         /** Default value. Means not disabled. */
-        public static final int NETWORK_SELECTION_ENABLE = 0;
+        public static final int DISABLED_NONE = 0;
         /**
          * The starting index for network selection disabled reasons.
          * @hide
@@ -1303,10 +1301,34 @@
         public static final int DISABLED_BY_WRONG_PASSWORD = 8;
         /** This network is disabled because service is not subscribed. */
         public static final int DISABLED_AUTHENTICATION_NO_SUBSCRIPTION = 9;
-        /** All other disable reasons should be strictly less than this value. */
+        /**
+         * All other disable reasons should be strictly less than this value.
+         * @hide
+         */
         public static final int NETWORK_SELECTION_DISABLED_MAX = 10;
 
         /**
+         * Get an integer that is equal to the maximum integer value of all the
+         * DISABLED_* reasons
+         * e.g. {@link #DISABLED_NONE}, {@link #DISABLED_ASSOCIATION_REJECTION}, etc.
+         *
+         * All DISABLED_* constants will be contiguous in the range
+         * 0, 1, 2, 3, ..., getMaxNetworkSelectionDisableReasons()
+         *
+         * <br />
+         * For example, this can be used to iterate through all the network selection
+         * disable reasons like so:
+         * <pre>{@code
+         * for (int reason = 0; reason <= getMaxNetworkSelectionDisableReasons(); reason++) {
+         *     ...
+         * }
+         * }</pre>
+         */
+        public static int getMaxNetworkSelectionDisableReason() {
+            return NETWORK_SELECTION_DISABLED_MAX - 1;
+        }
+
+        /**
          * Contains info about disable reasons.
          * @hide
          */
@@ -1355,7 +1377,7 @@
         private static SparseArray<DisableReasonInfo> buildDisableReasonInfos() {
             SparseArray<DisableReasonInfo> reasons = new SparseArray<>();
 
-            reasons.append(NETWORK_SELECTION_ENABLE,
+            reasons.append(DISABLED_NONE,
                     new DisableReasonInfo(
                             // Note that these strings are persisted in
                             // XmlUtil.NetworkSelectionStatusXmlUtil#writeToXml,
@@ -1609,7 +1631,7 @@
         }
 
         /** True if the device has ever connected to this network, false otherwise. */
-        public boolean getHasEverConnected() {
+        public boolean hasEverConnected() {
             return mHasEverConnected;
         }
 
@@ -1649,7 +1671,7 @@
             /**
              *
              * Set the current network's disable reason.
-             * One of the {@link #NETWORK_SELECTION_ENABLE} or DISABLED_* constants.
+             * One of the {@link #DISABLED_NONE} or DISABLED_* constants.
              * e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
              * @see NetworkSelectionStatus#getNetworkSelectionDisableReason()
              */
@@ -1673,7 +1695,7 @@
 
         /**
          * Get the network disable reason string for a reason code (for debugging).
-         * @param reason specific error reason. One of the {@link #NETWORK_SELECTION_ENABLE} or
+         * @param reason specific error reason. One of the {@link #DISABLED_NONE} or
          *               DISABLED_* constants e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
          * @return network disable reason string, or null if the reason is invalid.
          */
@@ -1708,7 +1730,10 @@
             return mStatus;
         }
 
-        /** True if the current network is enabled to join network selection, false otherwise. */
+        /**
+         * True if the current network is enabled to join network selection, false otherwise.
+         * @hide
+         */
         public boolean isNetworkEnabled() {
             return mStatus == NETWORK_SELECTION_ENABLED;
         }
@@ -1721,7 +1746,10 @@
             return mStatus == NETWORK_SELECTION_TEMPORARY_DISABLED;
         }
 
-        /** True if the current network is permanently disabled, false otherwise. */
+        /**
+         * True if the current network is permanently disabled, false otherwise.
+         * @hide
+         */
         public boolean isNetworkPermanentlyDisabled() {
             return mStatus == NETWORK_SELECTION_PERMANENTLY_DISABLED;
         }
@@ -1739,7 +1767,7 @@
 
         /**
          * Returns the current network's disable reason.
-         * One of the {@link #NETWORK_SELECTION_ENABLE} or DISABLED_* constants
+         * One of the {@link #DISABLED_NONE} or DISABLED_* constants
          * e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
          */
         @NetworkSelectionDisableReason
@@ -1779,13 +1807,13 @@
 
         /**
          * Get the disable counter of a specific reason.
-         * @param reason specific failure reason. One of the {@link #NETWORK_SELECTION_ENABLE} or
+         * @param reason specific failure reason. One of the {@link #DISABLED_NONE} or
          *              DISABLED_* constants e.g. {@link #DISABLED_ASSOCIATION_REJECTION}.
          * @exception IllegalArgumentException for invalid reason
          * @return counter number for specific error reason.
          */
         public int getDisableReasonCounter(@NetworkSelectionDisableReason int reason) {
-            if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
+            if (reason >= DISABLED_NONE && reason < NETWORK_SELECTION_DISABLED_MAX) {
                 return mNetworkSeclectionDisableCounter[reason];
             } else {
                 throw new IllegalArgumentException("Illegal reason value: " + reason);
@@ -1800,7 +1828,7 @@
          * @hide
          */
         public void setDisableReasonCounter(int reason, int value) {
-            if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
+            if (reason >= DISABLED_NONE && reason < NETWORK_SELECTION_DISABLED_MAX) {
                 mNetworkSeclectionDisableCounter[reason] = value;
             } else {
                 throw new IllegalArgumentException("Illegal reason value: " + reason);
@@ -1814,7 +1842,7 @@
          * @hide
          */
         public void incrementDisableReasonCounter(int reason) {
-            if (reason >= NETWORK_SELECTION_ENABLE  && reason < NETWORK_SELECTION_DISABLED_MAX) {
+            if (reason >= DISABLED_NONE && reason < NETWORK_SELECTION_DISABLED_MAX) {
                 mNetworkSeclectionDisableCounter[reason]++;
             } else {
                 throw new IllegalArgumentException("Illegal reason value: " + reason);
@@ -1828,8 +1856,8 @@
          * @hide
          */
         public void clearDisableReasonCounter(int reason) {
-            if (reason >= NETWORK_SELECTION_ENABLE && reason < NETWORK_SELECTION_DISABLED_MAX) {
-                mNetworkSeclectionDisableCounter[reason] = NETWORK_SELECTION_ENABLE;
+            if (reason >= DISABLED_NONE && reason < NETWORK_SELECTION_DISABLED_MAX) {
+                mNetworkSeclectionDisableCounter[reason] = DISABLED_NONE;
             } else {
                 throw new IllegalArgumentException("Illegal reason value: " + reason);
             }
@@ -1840,7 +1868,7 @@
          * @hide
          */
         public void clearDisableReasonCounter() {
-            Arrays.fill(mNetworkSeclectionDisableCounter, NETWORK_SELECTION_ENABLE);
+            Arrays.fill(mNetworkSeclectionDisableCounter, DISABLED_NONE);
         }
 
         /**
@@ -1870,7 +1898,7 @@
         public void copy(NetworkSelectionStatus source) {
             mStatus = source.mStatus;
             mNetworkSelectionDisableReason = source.mNetworkSelectionDisableReason;
-            for (int index = NETWORK_SELECTION_ENABLE; index < NETWORK_SELECTION_DISABLED_MAX;
+            for (int index = DISABLED_NONE; index < NETWORK_SELECTION_DISABLED_MAX;
                     index++) {
                 mNetworkSeclectionDisableCounter[index] =
                         source.mNetworkSeclectionDisableCounter[index];
@@ -1881,14 +1909,14 @@
             setCandidate(source.getCandidate());
             setCandidateScore(source.getCandidateScore());
             setConnectChoice(source.getConnectChoice());
-            setHasEverConnected(source.getHasEverConnected());
+            setHasEverConnected(source.hasEverConnected());
         }
 
         /** @hide */
         public void writeToParcel(Parcel dest) {
             dest.writeInt(getNetworkSelectionStatus());
             dest.writeInt(getNetworkSelectionDisableReason());
-            for (int index = NETWORK_SELECTION_ENABLE; index < NETWORK_SELECTION_DISABLED_MAX;
+            for (int index = DISABLED_NONE; index < NETWORK_SELECTION_DISABLED_MAX;
                     index++) {
                 dest.writeInt(getDisableReasonCounter(index));
             }
@@ -1900,14 +1928,14 @@
             } else {
                 dest.writeInt(CONNECT_CHOICE_NOT_EXISTS);
             }
-            dest.writeInt(getHasEverConnected() ? 1 : 0);
+            dest.writeInt(hasEverConnected() ? 1 : 0);
         }
 
         /** @hide */
         public void readFromParcel(Parcel in) {
             setNetworkSelectionStatus(in.readInt());
             setNetworkSelectionDisableReason(in.readInt());
-            for (int index = NETWORK_SELECTION_ENABLE; index < NETWORK_SELECTION_DISABLED_MAX;
+            for (int index = DISABLED_NONE; index < NETWORK_SELECTION_DISABLED_MAX;
                     index++) {
                 setDisableReasonCounter(index, in.readInt());
             }
@@ -1929,54 +1957,38 @@
     private NetworkSelectionStatus mNetworkSelectionStatus = new NetworkSelectionStatus();
 
     /**
-     * @hide
      * This class is intended to store extra failure reason information for the most recent
      * connection attempt, so that it may be surfaced to the settings UI
+     * @hide
      */
-    @SystemApi
+    // TODO(b/148626966): called by SUW via reflection, remove once SUW is updated
     public static class RecentFailure {
 
         private RecentFailure() {}
 
-        /** @hide */
-        @Retention(RetentionPolicy.SOURCE)
-        @IntDef(value = {NONE, STATUS_AP_UNABLE_TO_HANDLE_NEW_STA})
-        public @interface AssociationStatus {}
-
-        /**
-         * No recent failure, or no specific reason given for the recent connection failure
-         */
-        public static final int NONE = 0;
-        /**
-         * Connection to this network recently failed due to Association Rejection Status 17
-         * (AP is full)
-         */
-        public static final int STATUS_AP_UNABLE_TO_HANDLE_NEW_STA = 17;
         /**
          * Association Rejection Status code (NONE for success/non-association-rejection-fail)
          */
-        @AssociationStatus
-        private int mAssociationStatus = NONE;
+        @RecentFailureReason
+        private int mAssociationStatus = RECENT_FAILURE_NONE;
 
         /**
          * @param status the association status code for the recent failure
-         * @hide
          */
-        public void setAssociationStatus(@AssociationStatus int status) {
+        public void setAssociationStatus(@RecentFailureReason int status) {
             mAssociationStatus = status;
         }
         /**
          * Sets the RecentFailure to NONE
-         * @hide
          */
         public void clear() {
-            mAssociationStatus = NONE;
+            mAssociationStatus = RECENT_FAILURE_NONE;
         }
         /**
-         * Get the recent failure code. One of {@link #NONE} or
-         * {@link #STATUS_AP_UNABLE_TO_HANDLE_NEW_STA}.
+         * Get the recent failure code. One of {@link #RECENT_FAILURE_NONE} or
+         * {@link #RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA}.
          */
-        @AssociationStatus
+        @RecentFailureReason
         public int getAssociationStatus() {
             return mAssociationStatus;
         }
@@ -1986,10 +1998,47 @@
      * RecentFailure member
      * @hide
      */
+    // TODO(b/148626966): called by SUW via reflection, once SUW is updated, make private and
+    //  rename to mRecentFailure
     @NonNull
-    @SystemApi
     public final RecentFailure recentFailure = new RecentFailure();
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(prefix = "RECENT_FAILURE_", value = {
+            RECENT_FAILURE_NONE,
+            RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA})
+    public @interface RecentFailureReason {}
+
+    /**
+     * No recent failure, or no specific reason given for the recent connection failure
+     * @hide
+     */
+    @SystemApi
+    public static final int RECENT_FAILURE_NONE = 0;
+    /**
+     * Connection to this network recently failed due to Association Rejection Status 17
+     * (AP is full)
+     * @hide
+     */
+    @SystemApi
+    public static final int RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA = 17;
+
+    /**
+     * Get the failure reason for the most recent connection attempt, or
+     * {@link #RECENT_FAILURE_NONE} if there was no failure.
+     *
+     * Failure reasons include:
+     * {@link #RECENT_FAILURE_AP_UNABLE_TO_HANDLE_NEW_STA}
+     *
+     * @hide
+     */
+    @RecentFailureReason
+    @SystemApi
+    public int getRecentFailureReason() {
+        return recentFailure.getAssociationStatus();
+    }
+
     /**
      * Get the network selection status.
      * @hide
@@ -2063,7 +2112,8 @@
         return !TextUtils.isEmpty(FQDN)
                 && !TextUtils.isEmpty(providerFriendlyName)
                 && enterpriseConfig != null
-                && enterpriseConfig.getEapMethod() != WifiEnterpriseConfig.Eap.NONE;
+                && enterpriseConfig.getEapMethod() != WifiEnterpriseConfig.Eap.NONE
+                && !TextUtils.isEmpty(mPasspointUniqueId);
     }
 
     /**
@@ -2090,7 +2140,8 @@
     public boolean isEnterprise() {
         return (allowedKeyManagement.get(KeyMgmt.WPA_EAP)
                 || allowedKeyManagement.get(KeyMgmt.IEEE8021X)
-                || allowedKeyManagement.get(KeyMgmt.SUITE_B_192))
+                || allowedKeyManagement.get(KeyMgmt.SUITE_B_192)
+                || allowedKeyManagement.get(KeyMgmt.WAPI_CERT))
                 && enterpriseConfig != null
                 && enterpriseConfig.getEapMethod() != WifiEnterpriseConfig.Eap.NONE;
     }
@@ -2129,8 +2180,8 @@
             sbuf.append(" mNetworkSelectionDisableReason ")
                     .append(mNetworkSelectionStatus.getNetworkDisableReasonString() + "\n");
 
-            for (int index = mNetworkSelectionStatus.NETWORK_SELECTION_ENABLE;
-                    index < mNetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX; index++) {
+            for (int index = NetworkSelectionStatus.DISABLED_NONE;
+                    index < NetworkSelectionStatus.NETWORK_SELECTION_DISABLED_MAX; index++) {
                 if (mNetworkSelectionStatus.getDisableReasonCounter(index) != 0) {
                     sbuf.append(NetworkSelectionStatus.getNetworkDisableReasonString(index)
                             + " counter:" + mNetworkSelectionStatus.getDisableReasonCounter(index)
@@ -2142,7 +2193,7 @@
             sbuf.append(" connect choice: ").append(mNetworkSelectionStatus.getConnectChoice());
         }
         sbuf.append(" hasEverConnected: ")
-                .append(mNetworkSelectionStatus.getHasEverConnected()).append("\n");
+                .append(mNetworkSelectionStatus.hasEverConnected()).append("\n");
 
         if (this.numAssociation > 0) {
             sbuf.append(" numAssociation ").append(this.numAssociation).append("\n");
@@ -2366,6 +2417,9 @@
             if (allowedKeyManagement.get(KeyMgmt.SUITE_B_192)) {
                 keyMgmt += KeyMgmt.strings[KeyMgmt.SUITE_B_192];
             }
+            if (allowedKeyManagement.get(KeyMgmt.WAPI_CERT)) {
+                keyMgmt += KeyMgmt.strings[KeyMgmt.WAPI_CERT];
+            }
 
             if (TextUtils.isEmpty(keyMgmt)) {
                 throw new IllegalStateException("Not an EAP network");
@@ -2445,12 +2499,17 @@
      */
     @NonNull
     public String getKey() {
-        String key = providerFriendlyName == null
-                ? getSsidAndSecurityTypeString()
-                : FQDN + KeyMgmt.strings[KeyMgmt.WPA_EAP];
+        // Passpoint ephemeral networks have their unique identifier set. Return it as is to be
+        // able to match internally.
+        if (mPasspointUniqueId != null) {
+            return mPasspointUniqueId;
+        }
+
+        String key = getSsidAndSecurityTypeString();
         if (!shared) {
             key += "-" + UserHandle.getUserHandleForUid(creatorUid).getIdentifier();
         }
+
         return key;
     }
 
@@ -2511,7 +2570,7 @@
      * @hide
      */
     @Nullable
-    @SystemApi
+    @UnsupportedAppUsage
     public StaticIpConfiguration getStaticIpConfiguration() {
         return mIpConfiguration.getStaticIpConfiguration();
     }
@@ -2527,7 +2586,7 @@
      * @hide
      */
     @NonNull
-    @SystemApi
+    @UnsupportedAppUsage
     public IpConfiguration.IpAssignment getIpAssignment() {
         return mIpConfiguration.getIpAssignment();
     }
@@ -2543,7 +2602,7 @@
      * @hide
      */
     @NonNull
-    @SystemApi
+    @UnsupportedAppUsage
     public IpConfiguration.ProxySettings getProxySettings() {
         return mIpConfiguration.getProxySettings();
     }
@@ -2606,7 +2665,7 @@
      * Set the {@link ProxySettings} and {@link ProxyInfo} for this network.
      * @hide
      */
-    @SystemApi
+    @UnsupportedAppUsage
     public void setProxy(@NonNull ProxySettings settings, @NonNull ProxyInfo proxy) {
         mIpConfiguration.setProxySettings(settings);
         mIpConfiguration.setHttpProxy(proxy);
@@ -2705,6 +2764,7 @@
             requirePMF = source.requirePMF;
             updateIdentifier = source.updateIdentifier;
             carrierId = source.carrierId;
+            mPasspointUniqueId = source.mPasspointUniqueId;
         }
     }
 
@@ -2777,6 +2837,7 @@
         dest.writeInt(osu ? 1 : 0);
         dest.writeLong(randomizedMacExpirationTimeMs);
         dest.writeInt(carrierId);
+        dest.writeString(mPasspointUniqueId);
     }
 
     /** Implement the Parcelable interface {@hide} */
@@ -2851,6 +2912,7 @@
                 config.osu = in.readInt() != 0;
                 config.randomizedMacExpirationTimeMs = in.readLong();
                 config.carrierId = in.readInt();
+                config.mPasspointUniqueId = in.readString();
                 return config;
             }
 
@@ -2858,4 +2920,28 @@
                 return new WifiConfiguration[size];
             }
         };
+
+    /**
+     * Passpoint Unique identifier
+     * @hide
+     */
+    private String mPasspointUniqueId = null;
+
+    /**
+     * Set the Passpoint unique identifier
+     * @param uniqueId Passpoint unique identifier to be set
+     * @hide
+     */
+    public void setPasspointUniqueId(String uniqueId) {
+        mPasspointUniqueId = uniqueId;
+    }
+
+    /**
+     * Set the Passpoint unique identifier
+     * @hide
+     */
+    public String getPasspointUniqueId() {
+        return mPasspointUniqueId;
+    }
+
 }
diff --git a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
index 04016b6..db0d36e 100644
--- a/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
+++ b/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
@@ -60,13 +60,13 @@
             "android.net.wifi.extra.WAPI_AS_CERTIFICATE_DATA";
 
     /**
-     * Intent extra: name for WAPI AS certificates
+     * Intent extra: name for WAPI USER certificates
      */
     public static final String EXTRA_WAPI_USER_CERTIFICATE_NAME =
             "android.net.wifi.extra.WAPI_USER_CERTIFICATE_NAME";
 
     /**
-     * Intent extra: data for WAPI AS certificates
+     * Intent extra: data for WAPI USER certificates
      */
     public static final String EXTRA_WAPI_USER_CERTIFICATE_DATA =
             "android.net.wifi.extra.WAPI_USER_CERTIFICATE_DATA";
diff --git a/wifi/java/android/net/wifi/WifiFrameworkInitializer.java b/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
index 002820b..1507199 100644
--- a/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
+++ b/wifi/java/android/net/wifi/WifiFrameworkInitializer.java
@@ -102,15 +102,6 @@
                 }
         );
         SystemServiceRegistry.registerContextAwareService(
-                Context.WIFI_RTT_SERVICE,
-                RttManager.class,
-                (context, serviceBinder) -> {
-                    IWifiRttManager service = IWifiRttManager.Stub.asInterface(serviceBinder);
-                    WifiRttManager wifiRttManager = new WifiRttManager(context, service);
-                    return new RttManager(context, wifiRttManager);
-                }
-        );
-        SystemServiceRegistry.registerContextAwareService(
                 Context.WIFI_RTT_RANGING_SERVICE,
                 WifiRttManager.class,
                 (context, serviceBinder) -> {
@@ -118,5 +109,13 @@
                     return new WifiRttManager(context, service);
                 }
         );
+        SystemServiceRegistry.registerContextAwareService(
+                Context.WIFI_RTT_SERVICE,
+                RttManager.class,
+                context -> {
+                    WifiRttManager wifiRttManager = context.getSystemService(WifiRttManager.class);
+                    return new RttManager(context, wifiRttManager);
+                }
+        );
     }
 }
diff --git a/wifi/java/android/net/wifi/WifiInfo.java b/wifi/java/android/net/wifi/WifiInfo.java
index f8d48c5..0c306b4 100644
--- a/wifi/java/android/net/wifi/WifiInfo.java
+++ b/wifi/java/android/net/wifi/WifiInfo.java
@@ -291,6 +291,11 @@
      */
     private boolean mMeteredHint;
 
+    /**
+     * Passpoint unique key
+     */
+    private String mPasspointUniqueId;
+
     /** @hide */
     @UnsupportedAppUsage
     public WifiInfo() {
@@ -322,6 +327,7 @@
         setRequestingPackageName(null);
         setFQDN(null);
         setProviderFriendlyName(null);
+        setPasspointUniqueId(null);
         txBad = 0;
         txSuccess = 0;
         rxSuccess = 0;
@@ -370,6 +376,7 @@
             mWifiStandard = source.mWifiStandard;
             mMaxSupportedTxLinkSpeed = source.mMaxSupportedTxLinkSpeed;
             mMaxSupportedRxLinkSpeed = source.mMaxSupportedRxLinkSpeed;
+            mPasspointUniqueId = source.mPasspointUniqueId;
         }
     }
 
@@ -449,9 +456,8 @@
      * <p>
      * If the SSID can be decoded as UTF-8, it will be returned surrounded by double
      * quotation marks. Otherwise, it is returned as a string of hex digits.
-     * The SSID may be
-     * <lt>&lt;unknown ssid&gt;, if there is no network currently connected or if the caller has
-     * insufficient permissions to access the SSID.<lt>
+     * The SSID may be {@link WifiManager#UNKNOWN_SSID}, if there is no network currently connected
+     * or if the caller has insufficient permissions to access the SSID.
      * </p>
      * <p>
      * Prior to {@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}, this method
@@ -889,6 +895,13 @@
      */
     @Nullable
     @SystemApi
+    public static String sanitizeSsid(@Nullable String string) {
+        return removeDoubleQuotes(string);
+    }
+
+    /** @hide */
+    @UnsupportedAppUsage
+    @Nullable
     public static String removeDoubleQuotes(@Nullable String string) {
         if (string == null) return null;
         final int length = string.length();
@@ -971,6 +984,7 @@
         dest.writeInt(mWifiStandard);
         dest.writeInt(mMaxSupportedTxLinkSpeed);
         dest.writeInt(mMaxSupportedRxLinkSpeed);
+        dest.writeString(mPasspointUniqueId);
     }
 
     /** Implement the Parcelable interface {@hide} */
@@ -1015,6 +1029,7 @@
                 info.mWifiStandard = in.readInt();
                 info.mMaxSupportedTxLinkSpeed = in.readInt();
                 info.mMaxSupportedRxLinkSpeed = in.readInt();
+                info.mPasspointUniqueId = in.readString();
                 return info;
             }
 
@@ -1022,4 +1037,24 @@
                 return new WifiInfo[size];
             }
         };
+
+    /**
+     * Set the Passpoint unique identifier for the current connection
+     *
+     * @param passpointUniqueId Unique identifier
+     * @hide
+     */
+    public void setPasspointUniqueId(@Nullable String passpointUniqueId) {
+        mPasspointUniqueId = passpointUniqueId;
+    }
+
+    /**
+     * Get the Passpoint unique identifier for the current connection
+     *
+     * @return Passpoint unique identifier
+     * @hide
+     */
+    public @Nullable String getPasspointUniqueId() {
+        return mPasspointUniqueId;
+    }
 }
diff --git a/wifi/java/android/net/wifi/WifiManager.java b/wifi/java/android/net/wifi/WifiManager.java
index 9a25106..f693315 100644
--- a/wifi/java/android/net/wifi/WifiManager.java
+++ b/wifi/java/android/net/wifi/WifiManager.java
@@ -28,6 +28,7 @@
 import android.annotation.RequiresPermission;
 import android.annotation.SdkConstant;
 import android.annotation.SdkConstant.SdkConstantType;
+import android.annotation.SuppressLint;
 import android.annotation.SystemApi;
 import android.annotation.SystemService;
 import android.app.ActivityManager;
@@ -38,6 +39,7 @@
 import android.net.DhcpInfo;
 import android.net.MacAddress;
 import android.net.Network;
+import android.net.NetworkScore;
 import android.net.NetworkStack;
 import android.net.wifi.hotspot2.IProvisioningCallback;
 import android.net.wifi.hotspot2.OsuProvider;
@@ -256,12 +258,12 @@
      * - {@link #EXTRA_SCAN_AVAILABLE}
      */
     @SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
-    public static final String ACTION_WIFI_SCAN_AVAILABLE =
-            "android.net.wifi.action.WIFI_SCAN_AVAILABLE";
+    public static final String ACTION_WIFI_SCAN_AVAILABILITY_CHANGED =
+            "android.net.wifi.action.WIFI_SCAN_AVAILABILITY_CHANGED";
 
     /**
      * A boolean extra indicating whether scanning is currently available.
-     * Sent in the broadcast {@link #ACTION_WIFI_SCAN_AVAILABLE}.
+     * Sent in the broadcast {@link #ACTION_WIFI_SCAN_AVAILABILITY_CHANGED}.
      * Its value is true if scanning is currently available, false otherwise.
      */
     public static final String EXTRA_SCAN_AVAILABLE = "android.net.wifi.extra.SCAN_AVAILABLE";
@@ -1399,8 +1401,7 @@
         List<Pair<WifiConfiguration, Map<Integer, List<ScanResult>>>> configs = new ArrayList<>();
         try {
             Map<String, Map<Integer, List<ScanResult>>> results =
-                    mService.getAllMatchingFqdnsForScanResults(
-                            scanResults);
+                    mService.getAllMatchingPasspointProfilesForScanResults(scanResults);
             if (results.isEmpty()) {
                 return configs;
             }
@@ -1408,8 +1409,8 @@
                     mService.getWifiConfigsForPasspointProfiles(
                             new ArrayList<>(results.keySet()));
             for (WifiConfiguration configuration : wifiConfigurations) {
-                Map<Integer, List<ScanResult>> scanResultsPerNetworkType = results.get(
-                        configuration.FQDN);
+                Map<Integer, List<ScanResult>> scanResultsPerNetworkType =
+                        results.get(configuration.getKey());
                 if (scanResultsPerNetworkType != null) {
                     configs.add(Pair.create(configuration, scanResultsPerNetworkType));
                 }
@@ -1621,11 +1622,13 @@
          * @param wifiConfiguration WifiConfiguration object corresponding to the network
          *                          user selected.
          */
+        @SuppressLint("CallbackMethodName")
         default void select(@NonNull WifiConfiguration wifiConfiguration) {}
 
         /**
          * User rejected the app's request.
          */
+        @SuppressLint("CallbackMethodName")
         default void reject() {}
     }
 
@@ -1961,9 +1964,11 @@
      * for connecting to Passpoint networks that are operated by the Passpoint
      * service provider specified in the configuration.
      *
-     * Each configuration is uniquely identified by its FQDN (Fully Qualified Domain
-     * Name).  In the case when there is an existing configuration with the same
-     * FQDN, the new configuration will replace the existing configuration.
+     * Each configuration is uniquely identified by a unique key which depends on the contents of
+     * the configuration. This allows the caller to install multiple profiles with the same FQDN
+     * (Fully qualified domain name). Therefore, in order to update an existing profile, it is
+     * first required to remove it using {@link WifiManager#removePasspointConfiguration(String)}.
+     * Otherwise, a new profile will be added with both configuration.
      *
      * @param config The Passpoint configuration to be added
      * @throws IllegalArgumentException if configuration is invalid or Passpoint is not enabled on
@@ -2624,8 +2629,8 @@
     public void getWifiActivityEnergyInfoAsync(
             @NonNull @CallbackExecutor Executor executor,
             @NonNull OnWifiActivityEnergyInfoListener listener) {
-        if (executor == null) throw new IllegalArgumentException("executor cannot be null");
-        if (listener == null) throw new IllegalArgumentException("listener cannot be null");
+        Objects.requireNonNull(executor, "executor cannot be null");
+        Objects.requireNonNull(listener, "listener cannot be null");
         try {
             mService.getWifiActivityEnergyInfoAsync(
                     new OnWifiActivityEnergyInfoProxy(executor, listener));
@@ -2802,29 +2807,6 @@
     }
 
     /**
-     * Check if the device is dual mode capable i.e. supports concurrent STA + Soft AP.
-     *
-     * If the device is dual mode capable, it may require conversion of the user's Soft AP band
-     * selection {@link SoftApConfiguration#mBand} from {@link SoftApConfiguration#BAND_5GHZ} to
-     * include also {@link SoftApConfiguration#BAND_2GHZ}, since if the device is connected to a
-     * 5GHz DFS channel as a STA, it may be unable to honor a request to start Soft AP on the same
-     * DFS channel.
-     *
-     * @return {@code true} if dual mode STA + AP is supported by this device, {@code false}
-     * otherwise.
-     * @hide
-     */
-    @SystemApi
-    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
-    public boolean isDualModeSupported() {
-        try {
-            return mService.needs5GHzToAnyApBandConversion();
-        } catch (RemoteException e) {
-            throw e.rethrowFromSystemServer();
-        }
-    }
-
-    /**
      * Return the DHCP-assigned addresses from the last successful DHCP request,
      * if any.
      * @return the DHCP information
@@ -3004,7 +2986,7 @@
     }
 
     /**
-     * Start Soft AP (hotspot) mode with the specified configuration.
+     * Start Soft AP (hotspot) mode for tethering purposes with the specified configuration.
      * Note that starting Soft AP mode may disable station mode operation if the device does not
      * support concurrency.
      * @param wifiConfig SSID, security and channel details as part of WifiConfiguration, or null to
@@ -3300,7 +3282,7 @@
     }
 
     /**
-     * Gets the Wi-Fi enabled state.
+     * Gets the tethered Wi-Fi hotspot enabled state.
      * @return One of {@link #WIFI_AP_STATE_DISABLED},
      *         {@link #WIFI_AP_STATE_DISABLING}, {@link #WIFI_AP_STATE_ENABLED},
      *         {@link #WIFI_AP_STATE_ENABLING}, {@link #WIFI_AP_STATE_FAILED}
@@ -3319,8 +3301,8 @@
     }
 
     /**
-     * Return whether Wi-Fi AP is enabled or disabled.
-     * @return {@code true} if Wi-Fi AP is enabled
+     * Return whether tethered Wi-Fi AP is enabled or disabled.
+     * @return {@code true} if tethered  Wi-Fi AP is enabled
      * @see #getWifiApState()
      *
      * @hide
@@ -3332,7 +3314,7 @@
     }
 
     /**
-     * Gets the Wi-Fi AP Configuration.
+     * Gets the tethered Wi-Fi AP Configuration.
      * @return AP details in WifiConfiguration
      *
      * Note that AP detail may contain configuration which is cannot be represented
@@ -3354,7 +3336,7 @@
     }
 
     /**
-     * Gets the Wi-Fi AP Configuration.
+     * Gets the Wi-Fi tethered AP Configuration.
      * @return AP details in {@link SoftApConfiguration}
      *
      * @hide
@@ -3371,7 +3353,7 @@
     }
 
     /**
-     * Sets the Wi-Fi AP Configuration.
+     * Sets the tethered Wi-Fi AP Configuration.
      * @return {@code true} if the operation succeeded, {@code false} otherwise
      *
      * @deprecated This API is deprecated. Use {@link #setSoftApConfiguration(SoftApConfiguration)}
@@ -3390,9 +3372,9 @@
     }
 
     /**
-     * Sets the Wi-Fi AP Configuration.
+     * Sets the tethered Wi-Fi AP Configuration.
      *
-     * If the API is called while the soft AP is enabled, the configuration will apply to
+     * If the API is called while the tethered soft AP is enabled, the configuration will apply to
      * the current soft AP if the new configuration only includes
      * {@link SoftApConfiguration.Builder#setMaxNumberOfClients(int)}
      * or {@link SoftApConfiguration.Builder#setShutdownTimeoutMillis(int)}
@@ -4331,16 +4313,16 @@
     }
 
     /**
-     * Allows the OEM to enable/disable auto-join globally.
+     * Enable/disable auto-join globally.
      *
-     * @param choice true to allow autojoin, false to disallow autojoin
+     * @param allowAutojoin true to allow auto-join, false to disallow auto-join
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
-    public void allowAutojoinGlobal(boolean choice) {
+    public void allowAutojoinGlobal(boolean allowAutojoin) {
         try {
-            mService.allowAutojoinGlobal(choice);
+            mService.allowAutojoinGlobal(allowAutojoin);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -4352,15 +4334,15 @@
      * The updated choice will be made available through the updated config supplied by the
      * CONFIGURED_NETWORKS_CHANGED broadcast.
      *
-     * @param netId the id of the network to allow/disallow autojoin for.
-     * @param choice true to allow autojoin, false to disallow autojoin
+     * @param netId the id of the network to allow/disallow auto-join for.
+     * @param allowAutojoin true to allow auto-join, false to disallow auto-join
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
-    public void allowAutojoin(int netId, boolean choice) {
+    public void allowAutojoin(int netId, boolean allowAutojoin) {
         try {
-            mService.allowAutojoin(netId, choice);
+            mService.allowAutojoin(netId, allowAutojoin);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -4370,14 +4352,14 @@
      * Configure auto-join settings for a Passpoint profile.
      *
      * @param fqdn the FQDN (fully qualified domain name) of the passpoint profile.
-     * @param enableAutoJoin true to enable autojoin, false to disable autojoin.
+     * @param allowAutojoin true to enable auto-join, false to disable auto-join.
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
-    public void allowAutojoinPasspoint(@NonNull String fqdn, boolean enableAutoJoin) {
+    public void allowAutojoinPasspoint(@NonNull String fqdn, boolean allowAutojoin) {
         try {
-            mService.allowAutojoinPasspoint(fqdn, enableAutoJoin);
+            mService.allowAutojoinPasspoint(fqdn, allowAutojoin);
         } catch (RemoteException e) {
             throw e.rethrowFromSystemServer();
         }
@@ -5971,10 +5953,11 @@
          *
          * @param sessionId The ID to indicate current Wi-Fi network connection obtained from
          *                  {@link WifiConnectedNetworkScorer#start(int)}.
-         * @param isUsable The bit to indicate whether current Wi-Fi network is usable or not.
-         *                 Populated by connected network scorer in applications.
+         * @param score The {@link android.net.NetworkScore} object representing the
+         *              characteristics of current Wi-Fi network. Populated by connected network
+         *              scorer in applications.
          */
-        void onStatusChange(int sessionId, boolean isUsable);
+        void onScoreChange(int sessionId, @NonNull NetworkScore score);
 
         /**
          * Called by applications to trigger an update of {@link WifiUsabilityStatsEntry}.
@@ -6000,9 +5983,9 @@
         }
 
         @Override
-        public void onStatusChange(int sessionId, boolean isUsable) {
+        public void onScoreChange(int sessionId, @NonNull NetworkScore score) {
             try {
-                mScoreChangeCallback.onStatusChange(sessionId, isUsable);
+                mScoreChangeCallback.onScoreChange(sessionId, score);
             } catch (RemoteException e) {
                 throw e.rethrowFromSystemServer();
             }
@@ -6139,4 +6122,94 @@
             throw e.rethrowFromSystemServer();
         }
     }
+
+    /**
+     * Enable/disable wifi scan throttling from 3rd party apps.
+     *
+     * <p>
+     * The throttling limits for apps are described in
+     * <a href="Wi-Fi Scan Throttling">
+     * https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-throttling</a>
+     * </p>
+     *
+     * @param enable true to allow scan throttling, false to disallow scan throttling.
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+    public void setScanThrottleEnabled(boolean enable) {
+        try {
+            mService.setScanThrottleEnabled(enable);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the persisted Wi-Fi scan throttle state. Defaults to true, unless changed by the user via
+     * Developer options.
+     *
+     * <p>
+     * The throttling limits for apps are described in
+     * <a href="Wi-Fi Scan Throttling">
+     * https://developer.android.com/guide/topics/connectivity/wifi-scan#wifi-scan-throttling</a>
+     * </p>
+     *
+     * @return true to indicate that scan throttling is enabled, false to indicate that scan
+     * throttling is disabled.
+     */
+    @RequiresPermission(ACCESS_WIFI_STATE)
+    public boolean isScanThrottleEnabled() {
+        try {
+            return mService.isScanThrottleEnabled();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Enable/disable wifi auto wakeup feature.
+     *
+     * <p>
+     * The feature is described in
+     * <a href="Wi-Fi Turn on automatically">
+     * https://source.android.com/devices/tech/connect/wifi-infrastructure
+     * #turn_on_wi-fi_automatically
+     * </a>
+     *
+     * @param enable true to enable, false to disable.
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+    public void setAutoWakeupEnabled(boolean enable) {
+        try {
+            mService.setAutoWakeupEnabled(enable);
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
+
+    /**
+     * Get the persisted Wi-Fi auto wakeup feature state. Defaults to false, unless changed by the
+     * user via Settings.
+     *
+     * <p>
+     * The feature is described in
+     * <a href="Wi-Fi Turn on automatically">
+     * https://source.android.com/devices/tech/connect/wifi-infrastructure
+     * #turn_on_wi-fi_automatically
+     * </a>
+     *
+     * @return true to indicate that wakeup feature is enabled, false to indicate that wakeup
+     * feature is disabled.
+     */
+    @RequiresPermission(ACCESS_WIFI_STATE)
+    public boolean isAutoWakeupEnabled() {
+        try {
+            return mService.isAutoWakeupEnabled();
+        } catch (RemoteException e) {
+            throw e.rethrowFromSystemServer();
+        }
+    }
 }
diff --git a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
index 04d2e1a..6632c16 100644
--- a/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkAgentSpecifier.java
@@ -27,7 +27,6 @@
 import android.net.NetworkSpecifier;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.text.TextUtils;
 
 import java.util.Objects;
 
@@ -41,33 +40,10 @@
      */
     private final WifiConfiguration mWifiConfiguration;
 
-    /**
-     * The UID of the app that requested a specific wifi network using {@link WifiNetworkSpecifier}.
-     *
-     * Will only be filled when the device connects to a wifi network as a result of a
-     * {@link NetworkRequest} with {@link WifiNetworkSpecifier}. Will be set to -1 if the device
-     * auto-connected to a wifi network.
-     */
-    private final int mOriginalRequestorUid;
-
-    /**
-     * The package name of the app that requested a specific wifi network using
-     * {@link WifiNetworkSpecifier}.
-     *
-     * Will only be filled when the device connects to a wifi network as a result of a
-     * {@link NetworkRequest} with {@link WifiNetworkSpecifier}. Will be set to null if the device
-     * auto-connected to a wifi network.
-     */
-    private final String mOriginalRequestorPackageName;
-
-    public WifiNetworkAgentSpecifier(@NonNull WifiConfiguration wifiConfiguration,
-                                     int originalRequestorUid,
-                                     @Nullable String originalRequestorPackageName) {
+    public WifiNetworkAgentSpecifier(@NonNull WifiConfiguration wifiConfiguration) {
         checkNotNull(wifiConfiguration);
 
         mWifiConfiguration = wifiConfiguration;
-        mOriginalRequestorUid = originalRequestorUid;
-        mOriginalRequestorPackageName = originalRequestorPackageName;
     }
 
     /**
@@ -78,10 +54,7 @@
                 @Override
                 public WifiNetworkAgentSpecifier createFromParcel(@NonNull Parcel in) {
                     WifiConfiguration wifiConfiguration = in.readParcelable(null);
-                    int originalRequestorUid = in.readInt();
-                    String originalRequestorPackageName = in.readString();
-                    return new WifiNetworkAgentSpecifier(
-                            wifiConfiguration, originalRequestorUid, originalRequestorPackageName);
+                    return new WifiNetworkAgentSpecifier(wifiConfiguration);
                 }
 
                 @Override
@@ -98,8 +71,6 @@
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
         dest.writeParcelable(mWifiConfiguration, flags);
-        dest.writeInt(mOriginalRequestorUid);
-        dest.writeString(mOriginalRequestorPackageName);
     }
 
     @Override
@@ -149,12 +120,6 @@
                 this.mWifiConfiguration.allowedKeyManagement)) {
             return false;
         }
-        if (ns.requestorUid != this.mOriginalRequestorUid) {
-            return false;
-        }
-        if (!TextUtils.equals(ns.requestorPackageName, this.mOriginalRequestorPackageName)) {
-            return false;
-        }
         return true;
     }
 
@@ -163,9 +128,7 @@
         return Objects.hash(
                 mWifiConfiguration.SSID,
                 mWifiConfiguration.BSSID,
-                mWifiConfiguration.allowedKeyManagement,
-                mOriginalRequestorUid,
-                mOriginalRequestorPackageName);
+                mWifiConfiguration.allowedKeyManagement);
     }
 
     @Override
@@ -180,10 +143,7 @@
         return Objects.equals(this.mWifiConfiguration.SSID, lhs.mWifiConfiguration.SSID)
                 && Objects.equals(this.mWifiConfiguration.BSSID, lhs.mWifiConfiguration.BSSID)
                 && Objects.equals(this.mWifiConfiguration.allowedKeyManagement,
-                    lhs.mWifiConfiguration.allowedKeyManagement)
-                && mOriginalRequestorUid == lhs.mOriginalRequestorUid
-                && TextUtils.equals(mOriginalRequestorPackageName,
-                lhs.mOriginalRequestorPackageName);
+                    lhs.mWifiConfiguration.allowedKeyManagement);
     }
 
     @Override
@@ -192,19 +152,11 @@
         sb.append("WifiConfiguration=")
                 .append(", SSID=").append(mWifiConfiguration.SSID)
                 .append(", BSSID=").append(mWifiConfiguration.BSSID)
-                .append(", mOriginalRequestorUid=").append(mOriginalRequestorUid)
-                .append(", mOriginalRequestorPackageName=").append(mOriginalRequestorPackageName)
                 .append("]");
         return sb.toString();
     }
 
     @Override
-    public void assertValidFromUid(int requestorUid) {
-        throw new IllegalStateException("WifiNetworkAgentSpecifier should never be used "
-                + "for requests.");
-    }
-
-    @Override
     public NetworkSpecifier redact() {
         return null;
     }
diff --git a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
index 444e1ef..3d946c9 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSpecifier.java
@@ -20,7 +20,6 @@
 
 import android.annotation.NonNull;
 import android.annotation.Nullable;
-import android.app.Application;
 import android.net.MacAddress;
 import android.net.MatchAllNetworkSpecifier;
 import android.net.NetworkRequest;
@@ -28,13 +27,9 @@
 import android.os.Parcel;
 import android.os.Parcelable;
 import android.os.PatternMatcher;
-import android.os.Process;
 import android.text.TextUtils;
-import android.util.Log;
 import android.util.Pair;
 
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
 import java.nio.charset.CharsetEncoder;
 import java.nio.charset.StandardCharsets;
 import java.util.Objects;
@@ -438,24 +433,7 @@
             return new WifiNetworkSpecifier(
                     mSsidPatternMatcher,
                     mBssidPatternMatcher,
-                    buildWifiConfiguration(),
-                    Process.myUid(),
-                    getCurrentApplicationReflectively().getApplicationContext().getOpPackageName());
-        }
-
-        // TODO(b/144102365): Remove once refactor is complete
-        private static Application getCurrentApplicationReflectively() {
-            try {
-                // reflection for static method android.app.ActivityThread#currentApplication()
-                Class<?> klass = Class.forName("android.app.ActivityThread");
-                Method currentApplicationMethod = klass.getDeclaredMethod("currentApplication");
-                Object result = currentApplicationMethod.invoke(null);
-                return (Application) result;
-            } catch (ClassNotFoundException | NoSuchMethodException | IllegalAccessException
-                    | InvocationTargetException e) {
-                Log.e(TAG, "Failed to call ActivityThread#currentApplication() reflectively!", e);
-                throw new RuntimeException(e);
-            }
+                    buildWifiConfiguration());
         }
     }
 
@@ -483,20 +461,6 @@
      */
     public final WifiConfiguration wifiConfiguration;
 
-    /**
-     * The UID of the process initializing this network specifier. Validated by receiver using
-     * checkUidIfNecessary() and is used by satisfiedBy() to determine whether the specifier
-     * matches the offered network.
-     * @hide
-     */
-    public final int requestorUid;
-
-    /**
-     * The package name of the app initializing this network specifier.
-     * @hide
-     */
-    public final String requestorPackageName;
-
     /** @hide */
     public WifiNetworkSpecifier() throws IllegalAccessException {
         throw new IllegalAccessException("Use the builder to create an instance");
@@ -505,18 +469,14 @@
     /** @hide */
     public WifiNetworkSpecifier(@NonNull PatternMatcher ssidPatternMatcher,
                                 @NonNull Pair<MacAddress, MacAddress> bssidPatternMatcher,
-                                @NonNull WifiConfiguration wifiConfiguration,
-                                int requestorUid, @NonNull String requestorPackageName) {
+                                @NonNull WifiConfiguration wifiConfiguration) {
         checkNotNull(ssidPatternMatcher);
         checkNotNull(bssidPatternMatcher);
         checkNotNull(wifiConfiguration);
-        checkNotNull(requestorPackageName);
 
         this.ssidPatternMatcher = ssidPatternMatcher;
         this.bssidPatternMatcher = bssidPatternMatcher;
         this.wifiConfiguration = wifiConfiguration;
-        this.requestorUid = requestorUid;
-        this.requestorPackageName = requestorPackageName;
     }
 
     public static final @NonNull Creator<WifiNetworkSpecifier> CREATOR =
@@ -529,10 +489,8 @@
                     Pair<MacAddress, MacAddress> bssidPatternMatcher =
                             Pair.create(baseAddress, mask);
                     WifiConfiguration wifiConfiguration = in.readParcelable(null);
-                    int requestorUid = in.readInt();
-                    String requestorPackageName = in.readString();
                     return new WifiNetworkSpecifier(ssidPatternMatcher, bssidPatternMatcher,
-                            wifiConfiguration, requestorUid, requestorPackageName);
+                            wifiConfiguration);
                 }
 
                 @Override
@@ -552,18 +510,13 @@
         dest.writeParcelable(bssidPatternMatcher.first, flags);
         dest.writeParcelable(bssidPatternMatcher.second, flags);
         dest.writeParcelable(wifiConfiguration, flags);
-        dest.writeInt(requestorUid);
-        dest.writeString(requestorPackageName);
     }
 
     @Override
     public int hashCode() {
         return Objects.hash(
-                ssidPatternMatcher.getPath(),
-                ssidPatternMatcher.getType(),
-                bssidPatternMatcher,
-                wifiConfiguration.allowedKeyManagement,
-                requestorUid, requestorPackageName);
+                ssidPatternMatcher.getPath(), ssidPatternMatcher.getType(), bssidPatternMatcher,
+                wifiConfiguration.allowedKeyManagement);
     }
 
     @Override
@@ -582,9 +535,7 @@
                 && Objects.equals(this.bssidPatternMatcher,
                     lhs.bssidPatternMatcher)
                 && Objects.equals(this.wifiConfiguration.allowedKeyManagement,
-                    lhs.wifiConfiguration.allowedKeyManagement)
-                && requestorUid == lhs.requestorUid
-                && TextUtils.equals(requestorPackageName, lhs.requestorPackageName);
+                    lhs.wifiConfiguration.allowedKeyManagement);
     }
 
     @Override
@@ -595,8 +546,6 @@
                 .append(", BSSID Match pattern=").append(bssidPatternMatcher)
                 .append(", SSID=").append(wifiConfiguration.SSID)
                 .append(", BSSID=").append(wifiConfiguration.BSSID)
-                .append(", requestorUid=").append(requestorUid)
-                .append(", requestorPackageName=").append(requestorPackageName)
                 .append("]")
                 .toString();
     }
@@ -618,12 +567,4 @@
         // not make much sense!
         return equals(other);
     }
-
-    /** @hide */
-    @Override
-    public void assertValidFromUid(int requestorUid) {
-        if (this.requestorUid != requestorUid) {
-            throw new SecurityException("mismatched UIDs");
-        }
-    }
 }
diff --git a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
index 6085eae..a854a4b 100644
--- a/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
+++ b/wifi/java/android/net/wifi/WifiNetworkSuggestion.java
@@ -126,7 +126,7 @@
         /**
          * Whether this network is initialized with auto-join enabled (the default) or not.
          */
-        private boolean mIsInitialAutoJoinEnabled;
+        private boolean mIsInitialAutojoinEnabled;
 
         /**
          * Pre-shared key for use with WAPI-PSK networks.
@@ -159,7 +159,7 @@
             mIsMetered = false;
             mIsSharedWithUser = true;
             mIsSharedWithUserSet = false;
-            mIsInitialAutoJoinEnabled = true;
+            mIsInitialAutojoinEnabled = true;
             mPriority = UNASSIGNED_PRIORITY;
             mCarrierId = TelephonyManager.UNKNOWN_CARRIER_ID;
             mWapiPskPassphrase = null;
@@ -467,10 +467,10 @@
          *
          * @param enabled true for initializing with auto-join enabled (the default), false to
          *                initializing with auto-join disabled.
-         * @return Instance of (@link {@link Builder} to enable chaining of the builder method.
+         * @return Instance of {@link Builder} to enable chaining of the builder method.
          */
-        public @NonNull Builder setIsInitialAutoJoinEnabled(boolean enabled) {
-            mIsInitialAutoJoinEnabled = enabled;
+        public @NonNull Builder setIsInitialAutojoinEnabled(boolean enabled) {
+            mIsInitialAutojoinEnabled = enabled;
             return this;
         }
 
@@ -569,6 +569,7 @@
         private WifiConfiguration buildWifiConfigurationForPasspoint() {
             WifiConfiguration wifiConfiguration = new WifiConfiguration();
             wifiConfiguration.FQDN = mPasspointConfiguration.getHomeSp().getFqdn();
+            wifiConfiguration.setPasspointUniqueId(mPasspointConfiguration.getUniqueId());
             wifiConfiguration.priority = mPriority;
             wifiConfiguration.meteredOverride =
                     mIsMetered ? WifiConfiguration.METERED_OVERRIDE_METERED
@@ -664,10 +665,10 @@
                     mIsSharedWithUser = false;
                 }
             }
-            if (!mIsSharedWithUser && !mIsInitialAutoJoinEnabled) {
+            if (!mIsSharedWithUser && !mIsInitialAutojoinEnabled) {
                 throw new IllegalStateException("Should have not a network with both "
                         + "setCredentialSharedWithUser and "
-                        + "setIsAutoJoinEnabled set to false");
+                        + "setIsAutojoinEnabled set to false");
             }
             if (mIsNetworkUntrusted) {
                 if (mIsSharedWithUserSet && mIsSharedWithUser) {
@@ -683,7 +684,7 @@
                     mIsAppInteractionRequired,
                     mIsUserInteractionRequired,
                     mIsSharedWithUser,
-                    mIsInitialAutoJoinEnabled,
+                    mIsInitialAutojoinEnabled,
                     mIsNetworkUntrusted);
         }
     }
@@ -774,7 +775,7 @@
                             in.readBoolean(), // isAppInteractionRequired
                             in.readBoolean(), // isUserInteractionRequired
                             in.readBoolean(), // isSharedCredentialWithUser
-                            in.readBoolean(),  // isAutoJoinEnabled
+                            in.readBoolean(),  // isAutojoinEnabled
                             in.readBoolean()
                     );
                 }
@@ -804,7 +805,7 @@
     @Override
     public int hashCode() {
         return Objects.hash(wifiConfiguration.SSID, wifiConfiguration.BSSID,
-                wifiConfiguration.allowedKeyManagement, wifiConfiguration.FQDN);
+                wifiConfiguration.allowedKeyManagement, wifiConfiguration.getKey());
     }
 
     /**
@@ -827,7 +828,8 @@
                 && TextUtils.equals(this.wifiConfiguration.BSSID, lhs.wifiConfiguration.BSSID)
                 && Objects.equals(this.wifiConfiguration.allowedKeyManagement,
                 lhs.wifiConfiguration.allowedKeyManagement)
-                && TextUtils.equals(this.wifiConfiguration.FQDN, lhs.wifiConfiguration.FQDN);
+                && TextUtils.equals(this.wifiConfiguration.getKey(),
+                lhs.wifiConfiguration.getKey());
     }
 
     @Override
diff --git a/wifi/java/android/net/wifi/WifiOemConfigStoreMigrationHook.java b/wifi/java/android/net/wifi/WifiOemMigrationHook.java
similarity index 71%
rename from wifi/java/android/net/wifi/WifiOemConfigStoreMigrationHook.java
rename to wifi/java/android/net/wifi/WifiOemMigrationHook.java
index 642dcb9..22d7786 100755
--- a/wifi/java/android/net/wifi/WifiOemConfigStoreMigrationHook.java
+++ b/wifi/java/android/net/wifi/WifiOemMigrationHook.java
@@ -28,30 +28,17 @@
 
 /**
  * Class used to provide one time hooks for existing OEM devices to migrate their config store
- * data to the wifi mainline module.
- * <p>
- * Note:
- * <li> OEM's need to implement {@link #load()} only if their
- * existing config store format or file locations differs from the vanilla AOSP implementation (
- * which is what the wifi mainline module understands).
- * </li>
- * <li> The wifi mainline module will invoke {@link #load()}  method on every bootup, its
- * the responsibility of the OEM implementation to ensure that this method returns non-null data
- * only on the first bootup. Once the migration is done, the OEM can safely delete their config
- * store files and then return null on any subsequent reboots. The first & only relevant invocation
- * of {@link #load()} occurs when a previously released device upgrades to the wifi
- * mainline module from an OEM implementation of the wifi stack.
- * </li>
+ * data and other settings to the wifi mainline module.
  * @hide
  */
 @SystemApi
-public final class WifiOemConfigStoreMigrationHook {
+public final class WifiOemMigrationHook {
     /**
      * Container for all the wifi config data to migrate.
      */
-    public static final class MigrationData implements Parcelable {
+    public static final class ConfigStoreMigrationData implements Parcelable {
         /**
-         * Builder to create instance of {@link MigrationData}.
+         * Builder to create instance of {@link ConfigStoreMigrationData}.
          */
         public static final class Builder {
             private List<WifiConfiguration> mUserSavedNetworkConfigurations;
@@ -92,39 +79,40 @@
             }
 
             /**
-             * Build an instance of {@link MigrationData}.
+             * Build an instance of {@link ConfigStoreMigrationData}.
              *
-             * @return Instance of {@link MigrationData}.
+             * @return Instance of {@link ConfigStoreMigrationData}.
              */
-            public @NonNull MigrationData build() {
-                return new MigrationData(mUserSavedNetworkConfigurations, mUserSoftApConfiguration);
+            public @NonNull ConfigStoreMigrationData build() {
+                return new ConfigStoreMigrationData(
+                        mUserSavedNetworkConfigurations, mUserSoftApConfiguration);
             }
         }
 
         private final List<WifiConfiguration> mUserSavedNetworkConfigurations;
         private final SoftApConfiguration mUserSoftApConfiguration;
 
-        private MigrationData(
+        private ConfigStoreMigrationData(
                 @Nullable List<WifiConfiguration> userSavedNetworkConfigurations,
                 @Nullable SoftApConfiguration userSoftApConfiguration) {
             mUserSavedNetworkConfigurations = userSavedNetworkConfigurations;
             mUserSoftApConfiguration = userSoftApConfiguration;
         }
 
-        public static final @NonNull Parcelable.Creator<MigrationData> CREATOR =
-                new Parcelable.Creator<MigrationData>() {
+        public static final @NonNull Parcelable.Creator<ConfigStoreMigrationData> CREATOR =
+                new Parcelable.Creator<ConfigStoreMigrationData>() {
                     @Override
-                    public MigrationData createFromParcel(Parcel in) {
+                    public ConfigStoreMigrationData createFromParcel(Parcel in) {
                         List<WifiConfiguration> userSavedNetworkConfigurations =
                                 in.readArrayList(null);
                         SoftApConfiguration userSoftApConfiguration = in.readParcelable(null);
-                        return new MigrationData(
+                        return new ConfigStoreMigrationData(
                                 userSavedNetworkConfigurations, userSoftApConfiguration);
                     }
 
                     @Override
-                    public MigrationData[] newArray(int size) {
-                        return new MigrationData[size];
+                    public ConfigStoreMigrationData[] newArray(int size) {
+                        return new ConfigStoreMigrationData[size];
                     }
                 };
 
@@ -164,16 +152,29 @@
         }
     }
 
-    private WifiOemConfigStoreMigrationHook() { }
+    private WifiOemMigrationHook() { }
 
     /**
      * Load data from OEM's config store.
+     * <p>
+     * Note:
+     * <li> OEM's need to implement {@link #loadFromConfigStore()} ()} only if their
+     * existing config store format or file locations differs from the vanilla AOSP implementation (
+     * which is what the wifi mainline module understands).
+     * </li>
+     * <li> The wifi mainline module will invoke {@link #loadFromConfigStore()} method on every
+     * bootup, its the responsibility of the OEM implementation to ensure that this method returns
+     * non-null data only on the first bootup. Once the migration is done, the OEM can safely delete
+     * their config store files and then return null on any subsequent reboots. The first & only
+     * relevant invocation of {@link #loadFromConfigStore()} occurs when a previously released
+     * device upgrades to the wifi mainline module from an OEM implementation of the wifi stack.
+     * </li>
      *
-     * @return Instance of {@link MigrationData} for migrating data, null if no
+     * @return Instance of {@link ConfigStoreMigrationData} for migrating data, null if no
      * migration is necessary.
      */
     @Nullable
-    public static MigrationData load() {
+    public static ConfigStoreMigrationData loadFromConfigStore() {
         // Note: OEM's should add code to parse data from their config store format here!
         return null;
     }
diff --git a/wifi/java/android/net/wifi/WifiScanner.java b/wifi/java/android/net/wifi/WifiScanner.java
index 6f01350..b4eb30b 100644
--- a/wifi/java/android/net/wifi/WifiScanner.java
+++ b/wifi/java/android/net/wifi/WifiScanner.java
@@ -293,26 +293,34 @@
         public final List<HiddenNetwork> hiddenNetworks = new ArrayList<>();
         /**
          * period of background scan; in millisecond, 0 => single shot scan
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int periodInMs;
         /**
          * must have a valid REPORT_EVENT value
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int reportEvents;
         /**
          * defines number of bssids to cache from each scan
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int numBssidsPerScan;
         /**
          * defines number of scans to cache; use it with REPORT_EVENT_AFTER_BUFFER_FULL
          * to wake up at fixed interval
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int maxScansToCache;
@@ -321,14 +329,18 @@
          * a truncated binary exponential backoff bucket and the scan period will grow
          * exponentially as per formula: actual_period(N) = period * (2 ^ (N/stepCount))
          * to maxPeriodInMs
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int maxPeriodInMs;
         /**
          * for truncated binary exponential back off bucket, number of scans to perform
          * for a given period
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public int stepCount;
@@ -806,7 +818,9 @@
         /**
          * Framework co-ordinates scans across multiple apps; so it may not give exactly the
          * same period requested. If period of a scan is changed; it is reported by this event.
-         * @deprecated Background scan support is removed.
+         * @deprecated Background scan support has always been hardware vendor dependent. This
+         * support may not be present on newer devices. Use {@link #startScan(ScanSettings,
+         * ScanListener)} instead for single scans.
          */
         @Deprecated
         public void onPeriodChanged(int periodInMs);
@@ -836,6 +850,8 @@
      * Enable/Disable wifi scanning.
      *
      * @param enable set to true to enable scanning, set to false to disable all types of scanning.
+     *
+     * @see WifiManager#ACTION_WIFI_SCAN_AVAILABILITY_CHANGED
      * {@hide}
      */
     @SystemApi
@@ -911,7 +927,9 @@
      * @param listener specifies the object to report events to. This object is also treated as a
      *                 key for this scan, and must also be specified to cancel the scan. Multiple
      *                 scans should also not share this object.
-     * @deprecated Background scan support is removed.
+     * @deprecated Background scan support has always been hardware vendor dependent. This support
+     * may not be present on newer devices. Use {@link #startScan(ScanSettings, ScanListener)}
+     * instead for single scans.
      */
     @Deprecated
     @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
@@ -933,7 +951,9 @@
      * stop an ongoing wifi scan
      * @param listener specifies which scan to cancel; must be same object as passed in {@link
      *  #startBackgroundScan}
-     * @deprecated Background scan support is removed.
+     * @deprecated Background scan support has always been hardware vendor dependent. This support
+     * may not be present on newer devices. Use {@link #startScan(ScanSettings, ScanListener)}
+     * instead for single scans.
      */
     @Deprecated
     @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
@@ -951,7 +971,9 @@
     /**
      * reports currently available scan results on appropriate listeners
      * @return true if all scan results were reported correctly
-     * @deprecated Background scan support is removed.
+     * @deprecated Background scan support has always been hardware vendor dependent. This support
+     * may not be present on newer devices. Use {@link #startScan(ScanSettings, ScanListener)}
+     * instead for single scans.
      */
     @Deprecated
     @RequiresPermission(android.Manifest.permission.LOCATION_HARDWARE)
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
index c667334..a4b3e86 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareAgentNetworkSpecifier.java
@@ -143,12 +143,6 @@
     }
 
     @Override
-    public void assertValidFromUid(int requestorUid) {
-        throw new SecurityException(
-                "WifiAwareAgentNetworkSpecifier should not be used in network requests");
-    }
-
-    @Override
     public NetworkSpecifier redact() {
         return null;
     }
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareManager.java b/wifi/java/android/net/wifi/aware/WifiAwareManager.java
index 81bf81e..2ebaa18 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareManager.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareManager.java
@@ -34,7 +34,6 @@
 import android.os.Handler;
 import android.os.Looper;
 import android.os.Message;
-import android.os.Process;
 import android.os.RemoteException;
 import android.util.Log;
 
@@ -447,8 +446,7 @@
                 pmk,
                 passphrase,
                 0, // no port info for deprecated IB APIs
-                -1, // no transport info for deprecated IB APIs
-                Process.myUid());
+                -1); // no transport info for deprecated IB APIs
     }
 
     /** @hide */
@@ -488,8 +486,7 @@
                 pmk,
                 passphrase,
                 0, // no port info for OOB APIs
-                -1, // no transport protocol info for OOB APIs
-                Process.myUid());
+                -1); // no transport protocol info for OOB APIs
     }
 
     private static class WifiAwareEventCallbackProxy extends IWifiAwareEventCallback.Stub {
diff --git a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java
index 5a4ed3c..65ac1ab 100644
--- a/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java
+++ b/wifi/java/android/net/wifi/aware/WifiAwareNetworkSpecifier.java
@@ -23,7 +23,6 @@
 import android.net.NetworkSpecifier;
 import android.os.Parcel;
 import android.os.Parcelable;
-import android.os.Process;
 import android.text.TextUtils;
 
 import java.util.Arrays;
@@ -144,19 +143,9 @@
      */
     public final int transportProtocol;
 
-    /**
-     * The UID of the process initializing this network specifier. Validated by receiver using
-     * checkUidIfNecessary() and is used by satisfiedBy() to determine whether matches the
-     * offered network.
-     *
-     * @hide
-     */
-    public final int requestorUid;
-
     /** @hide */
     public WifiAwareNetworkSpecifier(int type, int role, int clientId, int sessionId, int peerId,
-            byte[] peerMac, byte[] pmk, String passphrase, int port, int transportProtocol,
-            int requestorUid) {
+            byte[] peerMac, byte[] pmk, String passphrase, int port, int transportProtocol) {
         this.type = type;
         this.role = role;
         this.clientId = clientId;
@@ -167,7 +156,6 @@
         this.passphrase = passphrase;
         this.port = port;
         this.transportProtocol = transportProtocol;
-        this.requestorUid = requestorUid;
     }
 
     public static final @android.annotation.NonNull Creator<WifiAwareNetworkSpecifier> CREATOR =
@@ -184,8 +172,7 @@
                         in.createByteArray(), // pmk
                         in.readString(), // passphrase
                         in.readInt(), // port
-                        in.readInt(), // transportProtocol
-                        in.readInt()); // requestorUid
+                        in.readInt()); // transportProtocol
                 }
 
                 @Override
@@ -221,7 +208,6 @@
         dest.writeString(passphrase);
         dest.writeInt(port);
         dest.writeInt(transportProtocol);
-        dest.writeInt(requestorUid);
     }
 
     /** @hide */
@@ -238,7 +224,7 @@
     @Override
     public int hashCode() {
         return Objects.hash(type, role, clientId, sessionId, peerId, Arrays.hashCode(peerMac),
-                Arrays.hashCode(pmk), passphrase, port, transportProtocol, requestorUid);
+                Arrays.hashCode(pmk), passphrase, port, transportProtocol);
     }
 
     /** @hide */
@@ -263,8 +249,7 @@
                 && Arrays.equals(pmk, lhs.pmk)
                 && Objects.equals(passphrase, lhs.passphrase)
                 && port == lhs.port
-                && transportProtocol == lhs.transportProtocol
-                && requestorUid == lhs.requestorUid;
+                && transportProtocol == lhs.transportProtocol;
     }
 
     /** @hide */
@@ -283,19 +268,11 @@
                 // masking PII
                 .append(", passphrase=").append((passphrase == null) ? "<null>" : "<non-null>")
                 .append(", port=").append(port).append(", transportProtocol=")
-                .append(transportProtocol).append(", requestorUid=").append(requestorUid)
+                .append(transportProtocol)
                 .append("]");
         return sb.toString();
     }
 
-    /** @hide */
-    @Override
-    public void assertValidFromUid(int requestorUid) {
-        if (this.requestorUid != requestorUid) {
-            throw new SecurityException("mismatched UIDs");
-        }
-    }
-
     /**
      * A builder class for a Wi-Fi Aware network specifier to set up an Aware connection with a
      * peer.
@@ -463,7 +440,7 @@
             return new WifiAwareNetworkSpecifier(
                     WifiAwareNetworkSpecifier.NETWORK_SPECIFIER_TYPE_IB, role,
                     mDiscoverySession.mClientId, mDiscoverySession.mSessionId, mPeerHandle.peerId,
-                    null, mPmk, mPskPassphrase, mPort, mTransportProtocol, Process.myUid());
+                    null, mPmk, mPskPassphrase, mPort, mTransportProtocol);
         }
     }
 }
diff --git a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
index 3a0d080..7d56585 100644
--- a/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
+++ b/wifi/java/android/net/wifi/hotspot2/PasspointConfiguration.java
@@ -19,6 +19,7 @@
 import static android.net.wifi.WifiConfiguration.METERED_OVERRIDE_NONE;
 import static android.net.wifi.WifiConfiguration.MeteredOverride;
 
+import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.annotation.SystemApi;
 import android.net.wifi.hotspot2.pps.Credential;
@@ -431,7 +432,7 @@
      * considered for auto-connection. If true then yes, if false then it isn't considered as part
      * of auto-connection - but can still be manually connected to.
      */
-    private boolean mIsAutoJoinEnabled = true;
+    private boolean mIsAutojoinEnabled = true;
 
     /**
      * The mac randomization setting specifies whether a randomized or device MAC address will
@@ -458,11 +459,11 @@
      * indicates that only manual connection will work - the framework will not auto-associate to
      * this Passpoint network.
      *
-     * @param autoJoinEnabled true to be considered for framework auto-connection, false otherwise.
+     * @param autojoinEnabled true to be considered for framework auto-connection, false otherwise.
      * @hide
      */
-    public void setAutoJoinEnabled(boolean autoJoinEnabled) {
-        mIsAutoJoinEnabled = autoJoinEnabled;
+    public void setAutojoinEnabled(boolean autojoinEnabled) {
+        mIsAutojoinEnabled = autojoinEnabled;
     }
 
     /**
@@ -498,8 +499,8 @@
      * @hide
      */
     @SystemApi
-    public boolean isAutoJoinEnabled() {
-        return mIsAutoJoinEnabled;
+    public boolean isAutojoinEnabled() {
+        return mIsAutojoinEnabled;
     }
 
     /**
@@ -569,7 +570,7 @@
         mServiceFriendlyNames = source.mServiceFriendlyNames;
         mAaaServerTrustedNames = source.mAaaServerTrustedNames;
         mCarrierId = source.mCarrierId;
-        mIsAutoJoinEnabled = source.mIsAutoJoinEnabled;
+        mIsAutojoinEnabled = source.mIsAutojoinEnabled;
         mIsMacRandomizationEnabled = source.mIsMacRandomizationEnabled;
         mMeteredOverride = source.mMeteredOverride;
     }
@@ -601,7 +602,7 @@
                 (HashMap<String, String>) mServiceFriendlyNames);
         dest.writeBundle(bundle);
         dest.writeInt(mCarrierId);
-        dest.writeBoolean(mIsAutoJoinEnabled);
+        dest.writeBoolean(mIsAutojoinEnabled);
         dest.writeBoolean(mIsMacRandomizationEnabled);
         dest.writeInt(mMeteredOverride);
     }
@@ -634,7 +635,7 @@
                 && mUsageLimitDataLimit == that.mUsageLimitDataLimit
                 && mUsageLimitTimeLimitInMinutes == that.mUsageLimitTimeLimitInMinutes
                 && mCarrierId == that.mCarrierId
-                && mIsAutoJoinEnabled == that.mIsAutoJoinEnabled
+                && mIsAutojoinEnabled == that.mIsAutojoinEnabled
                 && mIsMacRandomizationEnabled == that.mIsMacRandomizationEnabled
                 && mMeteredOverride == that.mMeteredOverride
                 && (mServiceFriendlyNames == null ? that.mServiceFriendlyNames == null
@@ -647,7 +648,7 @@
                 mUpdateIdentifier, mCredentialPriority, mSubscriptionCreationTimeInMillis,
                 mSubscriptionExpirationTimeInMillis, mUsageLimitUsageTimePeriodInMinutes,
                 mUsageLimitStartTimeInMillis, mUsageLimitDataLimit, mUsageLimitTimeLimitInMinutes,
-                mServiceFriendlyNames, mCarrierId, mIsAutoJoinEnabled, mIsMacRandomizationEnabled,
+                mServiceFriendlyNames, mCarrierId, mIsAutojoinEnabled, mIsMacRandomizationEnabled,
                 mMeteredOverride);
     }
 
@@ -702,7 +703,7 @@
             builder.append("ServiceFriendlyNames: ").append(mServiceFriendlyNames);
         }
         builder.append("CarrierId:" + mCarrierId);
-        builder.append("IsAutoJoinEnabled:" + mIsAutoJoinEnabled);
+        builder.append("IsAutojoinEnabled:" + mIsAutojoinEnabled);
         builder.append("mIsMacRandomizationEnabled:" + mIsMacRandomizationEnabled);
         builder.append("mMeteredOverride:" + mMeteredOverride);
         return builder.toString();
@@ -810,7 +811,7 @@
                         "serviceFriendlyNames");
                 config.setServiceFriendlyNames(friendlyNamesMap);
                 config.mCarrierId = in.readInt();
-                config.mIsAutoJoinEnabled = in.readBoolean();
+                config.mIsAutojoinEnabled = in.readBoolean();
                 config.mIsMacRandomizationEnabled = in.readBoolean();
                 config.mMeteredOverride = in.readInt();
                 return config;
@@ -895,4 +896,21 @@
     public boolean isOsuProvisioned() {
         return getUpdateIdentifier() != Integer.MIN_VALUE;
     }
+
+    /**
+     * Get a unique identifier for a PasspointConfiguration object.
+     *
+     * @return A unique identifier
+     * @throws IllegalStateException if Credential or HomeSP nodes are not initialized
+     */
+    public @NonNull String getUniqueId() throws IllegalStateException {
+        if (mCredential == null || mHomeSp == null || TextUtils.isEmpty(mHomeSp.getFqdn())) {
+            throw new IllegalStateException("Credential or HomeSP are not initialized");
+        }
+
+        StringBuilder sb = new StringBuilder();
+        sb.append(String.format("%s_%x%x", mHomeSp.getFqdn(), mHomeSp.getUniqueId(),
+                mCredential.getUniqueId()));
+        return sb.toString();
+    }
 }
diff --git a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java
index b037703..9990180 100644
--- a/wifi/java/android/net/wifi/hotspot2/pps/Credential.java
+++ b/wifi/java/android/net/wifi/hotspot2/pps/Credential.java
@@ -1020,6 +1020,28 @@
                 Arrays.hashCode(mClientCertificateChain));
     }
 
+    /**
+     * Get a unique identifier for Credential. This identifier depends only on items that remain
+     * constant throughout the lifetime of a subscription's credentials.
+     *
+     * @hide
+     * @return a Unique identifier for a Credential object
+     */
+    public int getUniqueId() {
+        int usedCredential;
+
+        // Initialize usedCredential based on the credential type of the profile
+        if (mUserCredential != null) {
+            usedCredential = 0;
+        } else if (mCertCredential != null) {
+            usedCredential = 1;
+        } else {
+            usedCredential = 2;
+        }
+
+        return Objects.hash(usedCredential, mRealm);
+    }
+
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
diff --git a/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java b/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java
index 49a76c3..224c4be 100644
--- a/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java
+++ b/wifi/java/android/net/wifi/hotspot2/pps/HomeSp.java
@@ -16,8 +16,8 @@
 
 package android.net.wifi.hotspot2.pps;
 
-import android.os.Parcelable;
 import android.os.Parcel;
+import android.os.Parcelable;
 import android.text.TextUtils;
 import android.util.Log;
 
@@ -299,10 +299,26 @@
 
     @Override
     public int hashCode() {
-        return Objects.hash(mFqdn, mFriendlyName, mIconUrl, mHomeNetworkIds, mMatchAllOis,
-                mMatchAnyOis, mOtherHomePartners, mRoamingConsortiumOis);
+        return Objects.hash(mFqdn, mFriendlyName, mIconUrl,
+                mHomeNetworkIds, Arrays.hashCode(mMatchAllOis),
+                Arrays.hashCode(mMatchAnyOis), Arrays.hashCode(mOtherHomePartners),
+                Arrays.hashCode(mRoamingConsortiumOis));
     }
 
+    /**
+     * Get a unique identifier for HomeSp. This identifier depends only on items that remain
+     * constant throughout the lifetime of a subscription.
+     *
+     * @hide
+     * @return a Unique identifier for a HomeSp object
+     */
+    public int getUniqueId() {
+        return Objects.hash(mFqdn, mFriendlyName, mHomeNetworkIds, Arrays.hashCode(mMatchAllOis),
+                Arrays.hashCode(mMatchAnyOis), Arrays.hashCode(mOtherHomePartners),
+                Arrays.hashCode(mRoamingConsortiumOis));
+    }
+
+
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
index 9562f95..d479892 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pConfig.java
@@ -17,6 +17,7 @@
 package android.net.wifi.p2p;
 
 import android.annotation.IntDef;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -133,16 +134,17 @@
      *
      * By default this field is set to {@link #GROUP_OWNER_INTENT_AUTO}.
      */
+    @IntRange(from = 0, to = 15)
     public int groupOwnerIntent = GROUP_OWNER_INTENT_AUTO;
 
     /** @hide */
     @UnsupportedAppUsage
-    public int netId = WifiP2pGroup.PERSISTENT_NET_ID;
+    public int netId = WifiP2pGroup.NETWORK_ID_PERSISTENT;
 
     /**
      * Get the network ID of this P2P configuration.
-     * @return either a non-negative network ID, or one of {@link WifiP2pGroup#PERSISTENT_NET_ID} or
-     * {@link WifiP2pGroup#TEMPORARY_NET_ID}.
+     * @return either a non-negative network ID, or one of
+     * {@link WifiP2pGroup#NETWORK_ID_PERSISTENT} or {@link WifiP2pGroup#NETWORK_ID_TEMPORARY}.
      */
     public int getNetworkId() {
         return netId;
@@ -280,7 +282,7 @@
         private String mPassphrase = "";
         private int mGroupOperatingBand = GROUP_OWNER_BAND_AUTO;
         private int mGroupOperatingFrequency = GROUP_OWNER_BAND_AUTO;
-        private int mNetId = WifiP2pGroup.TEMPORARY_NET_ID;
+        private int mNetId = WifiP2pGroup.NETWORK_ID_TEMPORARY;
 
         /**
          * Specify the peer's MAC address. If not set, the device will
@@ -460,9 +462,9 @@
          */
         public @NonNull Builder enablePersistentMode(boolean persistent) {
             if (persistent) {
-                mNetId = WifiP2pGroup.PERSISTENT_NET_ID;
+                mNetId = WifiP2pGroup.NETWORK_ID_PERSISTENT;
             } else {
-                mNetId = WifiP2pGroup.TEMPORARY_NET_ID;
+                mNetId = WifiP2pGroup.NETWORK_ID_TEMPORARY;
             }
             return this;
         }
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java b/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
index 21f6704..e497b22 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pGroup.java
@@ -41,7 +41,15 @@
      * The temporary network id.
      * @see #getNetworkId()
      */
-    public static final int TEMPORARY_NET_ID = -1;
+    public static final int NETWORK_ID_TEMPORARY = -1;
+
+    /**
+     * The temporary network id.
+     *
+     * @hide
+     */
+    @UnsupportedAppUsage
+    public static final int TEMPORARY_NET_ID = NETWORK_ID_TEMPORARY;
 
     /**
      * The persistent network id.
@@ -49,7 +57,7 @@
      * Otherwise, create a new persistent profile.
      * @see #getNetworkId()
      */
-    public static final int PERSISTENT_NET_ID = -2;
+    public static final int NETWORK_ID_PERSISTENT = -2;
 
     /** The network name */
     private String mNetworkName;
@@ -130,13 +138,13 @@
             mPassphrase = match.group(4);
             mOwner = new WifiP2pDevice(match.group(5));
             if (match.group(6) != null) {
-                mNetId = PERSISTENT_NET_ID;
+                mNetId = NETWORK_ID_PERSISTENT;
             } else {
-                mNetId = TEMPORARY_NET_ID;
+                mNetId = NETWORK_ID_TEMPORARY;
             }
         } else if (tokens[0].equals("P2P-INVITATION-RECEIVED")) {
             String sa = null;
-            mNetId = PERSISTENT_NET_ID;
+            mNetId = NETWORK_ID_PERSISTENT;
             for (String token : tokens) {
                 String[] nameValue = token.split("=");
                 if (nameValue.length != 2) continue;
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java b/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
index cdb2806..8a86311 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pGroupList.java
@@ -22,7 +22,9 @@
 import android.os.Parcelable;
 import android.util.LruCache;
 
+import java.util.ArrayList;
 import java.util.Collection;
+import java.util.List;
 import java.util.Map;
 
 
@@ -78,8 +80,8 @@
      * Get the list of P2P groups.
      */
     @NonNull
-    public Collection<WifiP2pGroup> getGroupList() {
-        return mGroups.snapshot().values();
+    public List<WifiP2pGroup> getGroupList() {
+        return new ArrayList<>(mGroups.snapshot().values());
     }
 
     /**
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
index 3459c94..9c2cad9 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pManager.java
@@ -326,6 +326,12 @@
 
     /**
      * Broadcast intent action indicating that remembered persistent groups have changed.
+     *
+     * You can <em>not</em> receive this through components declared
+     * in manifests, only by explicitly registering for it with
+     * {@link android.content.Context#registerReceiver(android.content.BroadcastReceiver,
+     * android.content.IntentFilter) Context.registerReceiver()}.
+     *
      * @hide
      */
     @SystemApi
@@ -1293,7 +1299,7 @@
     @RequiresPermission(android.Manifest.permission.ACCESS_FINE_LOCATION)
     public void createGroup(Channel c, ActionListener listener) {
         checkChannel(c);
-        c.mAsyncChannel.sendMessage(CREATE_GROUP, WifiP2pGroup.PERSISTENT_NET_ID,
+        c.mAsyncChannel.sendMessage(CREATE_GROUP, WifiP2pGroup.NETWORK_ID_PERSISTENT,
                 c.putListener(listener));
     }
 
@@ -1347,20 +1353,33 @@
     }
 
     /**
-     * Force p2p to enter or exit listen state
+     * Force p2p to enter listen state
      *
      * @param c is the channel created at {@link #initialize(Context, Looper, ChannelListener)}
-     * @param enable enables or disables listening
      * @param listener for callbacks on success or failure. Can be null.
      *
      * @hide
      */
     @SystemApi
     @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
-    public void listen(@NonNull Channel c, boolean enable, @Nullable ActionListener listener) {
+    public void startListening(@NonNull Channel c, @Nullable ActionListener listener) {
         checkChannel(c);
-        c.mAsyncChannel.sendMessage(enable ? START_LISTEN : STOP_LISTEN,
-                0, c.putListener(listener));
+        c.mAsyncChannel.sendMessage(START_LISTEN, 0, c.putListener(listener));
+    }
+
+    /**
+     * Force p2p to exit listen state
+     *
+     * @param c is the channel created at {@link #initialize(Context, Looper, ChannelListener)}
+     * @param listener for callbacks on success or failure. Can be null.
+     *
+     * @hide
+     */
+    @SystemApi
+    @RequiresPermission(android.Manifest.permission.NETWORK_SETTINGS)
+    public void stopListening(@NonNull Channel c, @Nullable ActionListener listener) {
+        checkChannel(c);
+        c.mAsyncChannel.sendMessage(STOP_LISTEN, 0, c.putListener(listener));
     }
 
     /**
diff --git a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
index 5484d24..e399b5b 100644
--- a/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
+++ b/wifi/java/android/net/wifi/p2p/WifiP2pWfdInfo.java
@@ -17,6 +17,7 @@
 package android.net.wifi.p2p;
 
 import android.annotation.IntDef;
+import android.annotation.IntRange;
 import android.annotation.NonNull;
 import android.annotation.Nullable;
 import android.compat.annotation.UnsupportedAppUsage;
@@ -34,7 +35,7 @@
  */
 public final class WifiP2pWfdInfo implements Parcelable {
 
-    private boolean mWfdEnabled;
+    private boolean mEnabled;
 
     /** Device information bitmap */
     private int mDeviceInfo;
@@ -85,15 +86,15 @@
     /** @hide */
     @UnsupportedAppUsage
     public WifiP2pWfdInfo(int devInfo, int ctrlPort, int maxTput) {
-        mWfdEnabled = true;
+        mEnabled = true;
         mDeviceInfo = devInfo;
         mCtrlPort = ctrlPort;
         mMaxThroughput = maxTput;
     }
 
     /** Returns true is Wifi Display is enabled, false otherwise. */
-    public boolean isWfdEnabled() {
-        return mWfdEnabled;
+    public boolean isEnabled() {
+        return mEnabled;
     }
 
     /**
@@ -101,8 +102,8 @@
      *
      * @param enabled true to enable Wifi Display, false to disable
      */
-    public void setWfdEnabled(boolean enabled) {
-        mWfdEnabled = enabled;
+    public void setEnabled(boolean enabled) {
+        mEnabled = enabled;
     }
 
     /**
@@ -177,12 +178,12 @@
     }
 
     /** Sets the TCP port at which the WFD Device listens for RTSP messages. */
-    public void setControlPort(int port) {
+    public void setControlPort(@IntRange(from = 0) int port) {
         mCtrlPort = port;
     }
 
     /** Sets the maximum average throughput capability of the WFD Device, in megabits/second. */
-    public void setMaxThroughput(int maxThroughput) {
+    public void setMaxThroughput(@IntRange(from = 0) int maxThroughput) {
         mMaxThroughput = maxThroughput;
     }
 
@@ -200,7 +201,7 @@
     @Override
     public String toString() {
         StringBuffer sbuf = new StringBuffer();
-        sbuf.append("WFD enabled: ").append(mWfdEnabled);
+        sbuf.append("WFD enabled: ").append(mEnabled);
         sbuf.append("WFD DeviceInfo: ").append(mDeviceInfo);
         sbuf.append("\n WFD CtrlPort: ").append(mCtrlPort);
         sbuf.append("\n WFD MaxThroughput: ").append(mMaxThroughput);
@@ -215,7 +216,7 @@
     /** Copy constructor. */
     public WifiP2pWfdInfo(@Nullable WifiP2pWfdInfo source) {
         if (source != null) {
-            mWfdEnabled = source.mWfdEnabled;
+            mEnabled = source.mEnabled;
             mDeviceInfo = source.mDeviceInfo;
             mCtrlPort = source.mCtrlPort;
             mMaxThroughput = source.mMaxThroughput;
@@ -225,14 +226,14 @@
     /** Implement the Parcelable interface */
     @Override
     public void writeToParcel(@NonNull Parcel dest, int flags) {
-        dest.writeInt(mWfdEnabled ? 1 : 0);
+        dest.writeInt(mEnabled ? 1 : 0);
         dest.writeInt(mDeviceInfo);
         dest.writeInt(mCtrlPort);
         dest.writeInt(mMaxThroughput);
     }
 
     private void readFromParcel(Parcel in) {
-        mWfdEnabled = (in.readInt() == 1);
+        mEnabled = (in.readInt() == 1);
         mDeviceInfo = in.readInt();
         mCtrlPort = in.readInt();
         mMaxThroughput = in.readInt();
diff --git a/wifi/java/android/net/wifi/wificond/NativeScanResult.java b/wifi/java/android/net/wifi/wificond/NativeScanResult.java
index 6ed1708..bd99476 100644
--- a/wifi/java/android/net/wifi/wificond/NativeScanResult.java
+++ b/wifi/java/android/net/wifi/wificond/NativeScanResult.java
@@ -16,15 +16,21 @@
 
 package android.net.wifi.wificond;
 
+import android.annotation.IntDef;
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.net.MacAddress;
 import android.os.Parcel;
 import android.os.Parcelable;
+import android.util.Log;
 
 import com.android.internal.annotations.VisibleForTesting;
 
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
 import java.util.ArrayList;
-import java.util.BitSet;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -34,7 +40,7 @@
  */
 @SystemApi
 public final class NativeScanResult implements Parcelable {
-    private static final int CAPABILITY_SIZE = 16;
+    private static final String TAG = "NativeScanResult";
 
     /** @hide */
     @VisibleForTesting
@@ -56,7 +62,7 @@
     public long tsf;
     /** @hide */
     @VisibleForTesting
-    public BitSet capability;
+    @BssCapabilityBits public int capability;
     /** @hide */
     @VisibleForTesting
     public boolean associated;
@@ -74,14 +80,17 @@
     }
 
     /**
-     * Returns raw bytes representing the MAC address (BSSID) of the AP represented by this scan
-     * result.
+     * Returns the MAC address (BSSID) of the AP represented by this scan result.
      *
-     * @return a byte array, possibly null or containing the incorrect number of bytes for a MAC
-     * address.
+     * @return a MacAddress or null on error.
      */
-    @NonNull public byte[] getBssid() {
-        return bssid;
+    @Nullable public MacAddress getBssid() {
+        try {
+            return MacAddress.fromBytes(bssid);
+        } catch (IllegalArgumentException e) {
+            Log.e(TAG, "Illegal argument " + Arrays.toString(bssid), e);
+            return null;
+        }
     }
 
     /**
@@ -130,31 +139,103 @@
         return associated;
     }
 
+    /** @hide */
+    @Retention(RetentionPolicy.SOURCE)
+    @IntDef(flag = true, prefix = {"BSS_CAPABILITY_"},
+            value = {BSS_CAPABILITY_ESS,
+                    BSS_CAPABILITY_IBSS,
+                    BSS_CAPABILITY_CF_POLLABLE,
+                    BSS_CAPABILITY_CF_POLL_REQUEST,
+                    BSS_CAPABILITY_PRIVACY,
+                    BSS_CAPABILITY_SHORT_PREAMBLE,
+                    BSS_CAPABILITY_PBCC,
+                    BSS_CAPABILITY_CHANNEL_AGILITY,
+                    BSS_CAPABILITY_SPECTRUM_MANAGEMENT,
+                    BSS_CAPABILITY_QOS,
+                    BSS_CAPABILITY_SHORT_SLOT_TIME,
+                    BSS_CAPABILITY_APSD,
+                    BSS_CAPABILITY_RADIO_MANAGEMENT,
+                    BSS_CAPABILITY_DSSS_OFDM,
+                    BSS_CAPABILITY_DELAYED_BLOCK_ACK,
+                    BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK
+            })
+    public @interface BssCapabilityBits { }
+
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): ESS.
+     */
+    public static final int BSS_CAPABILITY_ESS = 0x1 << 0;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): IBSS.
+     */
+    public static final int BSS_CAPABILITY_IBSS = 0x1 << 1;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): CF Pollable.
+     */
+    public static final int BSS_CAPABILITY_CF_POLLABLE = 0x1 << 2;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): CF-Poll Request.
+     */
+    public static final int BSS_CAPABILITY_CF_POLL_REQUEST = 0x1 << 3;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Privacy.
+     */
+    public static final int BSS_CAPABILITY_PRIVACY = 0x1 << 4;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Short Preamble.
+     */
+    public static final int BSS_CAPABILITY_SHORT_PREAMBLE = 0x1 << 5;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): PBCC.
+     */
+    public static final int BSS_CAPABILITY_PBCC = 0x1 << 6;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Channel Agility.
+     */
+    public static final int BSS_CAPABILITY_CHANNEL_AGILITY = 0x1 << 7;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Spectrum Management.
+     */
+    public static final int BSS_CAPABILITY_SPECTRUM_MANAGEMENT = 0x1 << 8;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): QoS.
+     */
+    public static final int BSS_CAPABILITY_QOS = 0x1 << 9;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Short Slot Time.
+     */
+    public static final int BSS_CAPABILITY_SHORT_SLOT_TIME = 0x1 << 10;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): APSD.
+     */
+    public static final int BSS_CAPABILITY_APSD = 0x1 << 11;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Radio Management.
+     */
+    public static final int BSS_CAPABILITY_RADIO_MANAGEMENT = 0x1 << 12;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): DSSS-OFDM.
+     */
+    public static final int BSS_CAPABILITY_DSSS_OFDM = 0x1 << 13;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Delayed Block Ack.
+     */
+    public static final int BSS_CAPABILITY_DELAYED_BLOCK_ACK = 0x1 << 14;
+    /**
+     * BSS capability bit (see IEEE Std 802.11: 9.4.1.4): Immediate Block Ack.
+     */
+    public static final int BSS_CAPABILITY_IMMEDIATE_BLOCK_ACK = 0x1 << 15;
+
     /**
      *  Returns the capabilities of the AP repseresented by this scan result as advertised in the
      *  received probe response or beacon.
      *
-     *  This is a bit mask describing the capabilities of a BSS. See IEEE Std 802.11: 8.4.1.4:
-     *    Bit 0 - ESS
-     *    Bit 1 - IBSS
-     *    Bit 2 - CF Pollable
-     *    Bit 3 - CF-Poll Request
-     *    Bit 4 - Privacy
-     *    Bit 5 - Short Preamble
-     *    Bit 6 - PBCC
-     *    Bit 7 - Channel Agility
-     *    Bit 8 - Spectrum Mgmt
-     *    Bit 9 - QoS
-     *    Bit 10 - Short Slot Time
-     *    Bit 11 - APSD
-     *    Bit 12 - Radio Measurement
-     *    Bit 13 - DSSS-OFDM
-     *    Bit 14 - Delayed Block Ack
-     *    Bit 15 - Immediate Block Ack
+     *  This is a bit mask describing the capabilities of a BSS. See IEEE Std 802.11: 9.4.1.4: one
+     *  of the {@code BSS_CAPABILITY_*} flags.
      *
      * @return a bit mask of capabilities.
      */
-    @NonNull public BitSet getCapabilities() {
+    @BssCapabilityBits public int getCapabilities() {
         return capability;
     }
 
@@ -169,7 +250,7 @@
     }
 
     /**
-     * @hide
+     * Construct an empty native scan result.
      */
     public NativeScanResult() { }
 
@@ -188,13 +269,7 @@
         out.writeInt(frequency);
         out.writeInt(signalMbm);
         out.writeLong(tsf);
-        int capabilityInt = 0;
-        for (int i = 0; i < CAPABILITY_SIZE; i++) {
-            if (capability.get(i)) {
-                capabilityInt |= 1 << i;
-            }
-        }
-        out.writeInt(capabilityInt);
+        out.writeInt(capability);
         out.writeInt(associated ? 1 : 0);
         out.writeTypedList(radioChainInfos);
     }
@@ -220,13 +295,7 @@
             result.frequency = in.readInt();
             result.signalMbm = in.readInt();
             result.tsf = in.readLong();
-            int capabilityInt = in.readInt();
-            result.capability = new BitSet(CAPABILITY_SIZE);
-            for (int i = 0; i < CAPABILITY_SIZE; i++) {
-                if ((capabilityInt & (1 << i)) != 0) {
-                    result.capability.set(i);
-                }
-            }
+            result.capability = in.readInt();
             result.associated = (in.readInt() != 0);
             result.radioChainInfos = new ArrayList<>();
             in.readTypedList(result.radioChainInfos, RadioChainInfo.CREATOR);
diff --git a/wifi/java/android/net/wifi/wificond/NativeWifiClient.java b/wifi/java/android/net/wifi/wificond/NativeWifiClient.java
index 554f929..9ad2a27 100644
--- a/wifi/java/android/net/wifi/wificond/NativeWifiClient.java
+++ b/wifi/java/android/net/wifi/wificond/NativeWifiClient.java
@@ -17,11 +17,13 @@
 package android.net.wifi.wificond;
 
 import android.annotation.NonNull;
+import android.annotation.Nullable;
 import android.annotation.SystemApi;
+import android.net.MacAddress;
 import android.os.Parcel;
 import android.os.Parcelable;
 
-import java.util.Arrays;
+import java.util.Objects;
 
 /**
  * Structure providing information about clients (STAs) associated with a SoftAp.
@@ -30,17 +32,21 @@
  */
 @SystemApi
 public final class NativeWifiClient implements Parcelable {
-    /**
-     * The raw bytes of the MAC address of the client (STA) represented by this object.
-     */
-    @NonNull public final byte[] macAddress;
+    private final MacAddress mMacAddress;
 
     /**
-     * public constructor
-     * @hide
+     * The MAC address of the client (STA) represented by this object. The MAC address may be null
+     * in case of an error.
      */
-    public NativeWifiClient(@NonNull byte[] macAddress) {
-        this.macAddress = macAddress;
+    @Nullable public MacAddress getMacAddress() {
+        return mMacAddress;
+    }
+
+    /**
+     * Construct a native Wi-Fi client.
+     */
+    public NativeWifiClient(@Nullable MacAddress macAddress) {
+        this.mMacAddress = macAddress;
     }
 
     /** override comparator */
@@ -51,13 +57,13 @@
             return false;
         }
         NativeWifiClient other = (NativeWifiClient) rhs;
-        return Arrays.equals(macAddress, other.macAddress);
+        return Objects.equals(mMacAddress, other.mMacAddress);
     }
 
     /** override hash code */
     @Override
     public int hashCode() {
-        return Arrays.hashCode(macAddress);
+        return mMacAddress.hashCode();
     }
 
     /** implement Parcelable interface */
@@ -72,7 +78,7 @@
      */
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
-        out.writeByteArray(macAddress);
+        out.writeByteArray(mMacAddress.toByteArray());
     }
 
     /** implement Parcelable interface */
@@ -80,9 +86,11 @@
             new Parcelable.Creator<NativeWifiClient>() {
                 @Override
                 public NativeWifiClient createFromParcel(Parcel in) {
-                    byte[] macAddress = in.createByteArray();
-                    if (macAddress == null) {
-                        macAddress = new byte[0];
+                    MacAddress macAddress;
+                    try {
+                        macAddress = MacAddress.fromBytes(in.createByteArray());
+                    } catch (IllegalArgumentException e) {
+                        macAddress = null;
                     }
                     return new NativeWifiClient(macAddress);
                 }
diff --git a/wifi/java/android/net/wifi/wificond/PnoSettings.java b/wifi/java/android/net/wifi/wificond/PnoSettings.java
index 57c9ca5..533d37d 100644
--- a/wifi/java/android/net/wifi/wificond/PnoSettings.java
+++ b/wifi/java/android/net/wifi/wificond/PnoSettings.java
@@ -16,6 +16,7 @@
 
 package android.net.wifi.wificond;
 
+import android.annotation.DurationMillisLong;
 import android.annotation.NonNull;
 import android.annotation.SystemApi;
 import android.os.Parcel;
@@ -33,7 +34,7 @@
  */
 @SystemApi
 public final class PnoSettings implements Parcelable {
-    private int mIntervalMs;
+    private long mIntervalMs;
     private int mMin2gRssi;
     private int mMin5gRssi;
     private int mMin6gRssi;
@@ -47,17 +48,17 @@
      *
      * @return An interval in milliseconds.
      */
-    public int getIntervalMillis() {
+    public @DurationMillisLong long getIntervalMillis() {
         return mIntervalMs;
     }
 
     /**
      * Set the requested PNO scan interval in milliseconds.
      *
-     * @param intervalMs An interval in milliseconds.
+     * @param intervalMillis An interval in milliseconds.
      */
-    public void setIntervalMillis(int intervalMs) {
-        this.mIntervalMs = intervalMs;
+    public void setIntervalMillis(@DurationMillisLong long intervalMillis) {
+        this.mIntervalMs = intervalMillis;
     }
 
     /**
@@ -176,7 +177,7 @@
      **/
     @Override
     public void writeToParcel(@NonNull Parcel out, int flags) {
-        out.writeInt(mIntervalMs);
+        out.writeLong(mIntervalMs);
         out.writeInt(mMin2gRssi);
         out.writeInt(mMin5gRssi);
         out.writeInt(mMin6gRssi);
@@ -189,7 +190,7 @@
         @Override
         public PnoSettings createFromParcel(Parcel in) {
             PnoSettings result = new PnoSettings();
-            result.mIntervalMs = in.readInt();
+            result.mIntervalMs = in.readLong();
             result.mMin2gRssi = in.readInt();
             result.mMin5gRssi = in.readInt();
             result.mMin6gRssi = in.readInt();
diff --git a/wifi/java/android/net/wifi/wificond/RadioChainInfo.java b/wifi/java/android/net/wifi/wificond/RadioChainInfo.java
index 64102dd..97c0ee9 100644
--- a/wifi/java/android/net/wifi/wificond/RadioChainInfo.java
+++ b/wifi/java/android/net/wifi/wificond/RadioChainInfo.java
@@ -61,7 +61,9 @@
         return level;
     }
 
-    /** @hide */
+    /**
+     * Construct a RadioChainInfo.
+     */
     public RadioChainInfo(int chainId, int level) {
         this.chainId = chainId;
         this.level = level;
diff --git a/wifi/java/android/net/wifi/wificond/WifiCondManager.java b/wifi/java/android/net/wifi/wificond/WifiCondManager.java
index 4847640..61f18e0 100644
--- a/wifi/java/android/net/wifi/wificond/WifiCondManager.java
+++ b/wifi/java/android/net/wifi/wificond/WifiCondManager.java
@@ -368,7 +368,7 @@
         public void onConnectedClientsChanged(NativeWifiClient client, boolean isConnected) {
             if (mVerboseLoggingEnabled) {
                 Log.d(TAG, "onConnectedClientsChanged called with "
-                        + client.macAddress + " isConnected: " + isConnected);
+                        + client.getMacAddress() + " isConnected: " + isConnected);
             }
 
             Binder.clearCallingIdentity();
@@ -493,22 +493,17 @@
     }
 
     /**
-     * Initializes WifiCondManager & registers a death notification for the WifiCondManager which
-     * acts as a proxy for the wificond daemon (i.e. the death listener will be called when and if
-     * the wificond daemon dies).
-     *
-     * Note: This method clears any existing state in wificond daemon.
+     * Register a death notification for the WifiCondManager which acts as a proxy for the
+     * wificond daemon (i.e. the death listener will be called when and if the wificond daemon
+     * dies).
      *
      * @param deathEventHandler A {@link Runnable} to be called whenever the wificond daemon dies.
-     * @return Returns true on success.
      */
-    public boolean initialize(@NonNull Runnable deathEventHandler) {
+    public void setOnServiceDeadCallback(@NonNull Runnable deathEventHandler) {
         if (mDeathEventHandler != null) {
             Log.e(TAG, "Death handler already present");
         }
         mDeathEventHandler = deathEventHandler;
-        tearDownInterfaces();
-        return true;
     }
 
     /**
@@ -600,11 +595,12 @@
     }
 
     /**
-     * Tear down a specific client (STA) interface, initially configured using
+     * Tear down a specific client (STA) interface configured using
      * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}.
      *
      * @param ifaceName Name of the interface to tear down.
-     * @return Returns true on success.
+     * @return Returns true on success, false on failure (e.g. when called before an interface was
+     * set up).
      */
     public boolean tearDownClientInterface(@NonNull String ifaceName) {
         if (getClientInterface(ifaceName) == null) {
@@ -678,11 +674,12 @@
     }
 
     /**
-     * Tear down a Soft AP interface initially configured using
+     * Tear down a Soft AP interface configured using
      * {@link #setupInterfaceForSoftApMode(String)}.
      *
      * @param ifaceName Name of the interface to tear down.
-     * @return Returns true on success.
+     * @return Returns true on success, false on failure (e.g. when called before an interface was
+     * set up).
      */
     public boolean tearDownSoftApInterface(@NonNull String ifaceName) {
         if (getApInterface(ifaceName) == null) {
@@ -747,9 +744,13 @@
     /**
      * Request signal polling.
      *
-     * @param ifaceName Name of the interface on which to poll.
+     * @param ifaceName Name of the interface on which to poll. The interface must have been
+     *                  already set up using
+     *{@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     *                  or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @return A {@link SignalPollResult} object containing interface statistics, or a null on
-     * error.
+     * error (e.g. the interface hasn't been set up yet).
      */
     @Nullable public SignalPollResult signalPoll(@NonNull String ifaceName) {
         IClientInterface iface = getClientInterface(ifaceName);
@@ -773,10 +774,14 @@
     }
 
     /**
-     * Get current transmit (Tx) packet counters of the specified interface.
+     * Get current transmit (Tx) packet counters of the specified interface. The interface must
+     * have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
      *
      * @param ifaceName Name of the interface.
-     * @return {@link TxPacketCounters} of the current interface or null on error.
+     * @return {@link TxPacketCounters} of the current interface or null on error (e.g. when
+     * called before the interface has been set up).
      */
     @Nullable public TxPacketCounters getTxPacketCounters(@NonNull String ifaceName) {
         IClientInterface iface = getClientInterface(ifaceName);
@@ -810,10 +815,15 @@
      * be done using {@link #startScan(String, int, Set, List)} or
      * {@link #startPnoScan(String, PnoSettings, Executor, PnoScanRequestCallback)}.
      *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @param ifaceName Name of the interface.
      * @param scanType The type of scan result to be returned, can be
      * {@link #SCAN_TYPE_SINGLE_SCAN} or {@link #SCAN_TYPE_PNO_SCAN}.
-     * @return Returns an array of {@link NativeScanResult} or an empty array on failure.
+     * @return Returns an array of {@link NativeScanResult} or an empty array on failure (e.g. when
+     * called before the interface has been set up).
      */
     @NonNull public List<NativeScanResult> getScanResults(@NonNull String ifaceName,
             @ScanResultType int scanType) {
@@ -866,13 +876,19 @@
      * The latest scans can be obtained using {@link #getScanResults(String, int)} and using a
      * {@link #SCAN_TYPE_SINGLE_SCAN} for the {@code scanType}.
      *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @param ifaceName Name of the interface on which to initiate the scan.
      * @param scanType Type of scan to perform, can be any of
      * {@link WifiScanner#SCAN_TYPE_HIGH_ACCURACY}, {@link WifiScanner#SCAN_TYPE_LOW_POWER}, or
      * {@link WifiScanner#SCAN_TYPE_LOW_LATENCY}.
      * @param freqs list of frequencies to scan for, if null scan all supported channels.
-     * @param hiddenNetworkSSIDs List of hidden networks to be scanned for.
-     * @return Returns true on success.
+     * @param hiddenNetworkSSIDs List of hidden networks to be scanned for, a null indicates that
+     *                           no hidden frequencies will be scanned for.
+     * @return Returns true on success, false on failure (e.g. when called before the interface
+     * has been set up).
      */
     public boolean startScan(@NonNull String ifaceName, @WifiAnnotations.ScanType int scanType,
             @Nullable Set<Integer> freqs, @Nullable List<byte[]> hiddenNetworkSSIDs) {
@@ -928,11 +944,16 @@
      * The latest PNO scans can be obtained using {@link #getScanResults(String, int)} with the
      * {@code scanType} set to {@link #SCAN_TYPE_PNO_SCAN}.
      *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @param ifaceName Name of the interface on which to request a PNO.
      * @param pnoSettings PNO scan configuration.
      * @param executor The Executor on which to execute the callback.
      * @param callback Callback for the results of the offload request.
-     * @return true on success.
+     * @return true on success, false on failure (e.g. when called before the interface has been set
+     * up).
      */
     public boolean startPnoScan(@NonNull String ifaceName, @NonNull PnoSettings pnoSettings,
             @NonNull @CallbackExecutor Executor executor,
@@ -966,8 +987,13 @@
      * Stop PNO scan configured with
      * {@link #startPnoScan(String, PnoSettings, Executor, PnoScanRequestCallback)}.
      *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @param ifaceName Name of the interface on which the PNO scan was configured.
-     * @return true on success.
+     * @return true on success, false on failure (e.g. when called before the interface has been
+     * set up).
      */
     public boolean stopPnoScan(@NonNull String ifaceName) {
         IWifiScannerImpl scannerImpl = getScannerImpl(ifaceName);
@@ -984,7 +1010,13 @@
     }
 
     /**
-     * Abort ongoing single scan started with {@link #startScan(String, int, Set, List)}.
+     * Abort ongoing single scan started with {@link #startScan(String, int, Set, List)}. No failure
+     * callback, e.g. {@link ScanEventCallback#onScanFailed()}, is triggered by this operation.
+     *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}. If the interface has not been set up then
+     * this method has no impact.
      *
      * @param ifaceName Name of the interface on which the scan was started.
      */
@@ -1052,7 +1084,14 @@
     }
 
     /**
-     * Get the device phy capabilities for a given interface
+     * Get the device phy capabilities for a given interface.
+     *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
+     * @return DeviceWiphyCapabilities or null on error (e.g. when called on an interface which has
+     * not been set up).
      */
     @Nullable public DeviceWiphyCapabilities getDeviceWiphyCapabilities(@NonNull String ifaceName) {
         if (mWificond == null) {
@@ -1068,13 +1107,19 @@
     }
 
     /**
-     * Register the provided callback handler for SoftAp events. Note that the Soft AP itself is
-     * configured using {@link #setupInterfaceForSoftApMode(String)}.
+     * Register the provided callback handler for SoftAp events. The interface must first be created
+     * using {@link #setupInterfaceForSoftApMode(String)}. The callback registration is valid until
+     * the interface is deleted using {@link #tearDownSoftApInterface(String)} (no deregistration
+     * method is provided).
+     * <p>
+     * Note that only one callback can be registered at a time - any registration overrides previous
+     * registrations.
      *
      * @param ifaceName Name of the interface on which to register the callback.
      * @param executor The Executor on which to execute the callbacks.
      * @param callback Callback for AP events.
-     * @return true on success, false otherwise.
+     * @return true on success, false on failure (e.g. when called on an interface which has not
+     * been set up).
      */
     public boolean registerApCallback(@NonNull String ifaceName,
             @NonNull @CallbackExecutor Executor executor,
@@ -1110,6 +1155,10 @@
      * Send a management frame on the specified interface at the specified rate. Useful for probing
      * the link with arbitrary frames.
      *
+     * Note: The interface must have been already set up using
+     * {@link #setupInterfaceForClientMode(String, Executor, ScanEventCallback, ScanEventCallback)}
+     * or {@link #setupInterfaceForSoftApMode(String)}.
+     *
      * @param ifaceName The interface on which to send the frame.
      * @param frame The raw byte array of the management frame to tramit.
      * @param mcs The MCS (modulation and coding scheme), i.e. rate, at which to transmit the
diff --git a/wifi/java/com/android/server/wifi/BaseWifiService.java b/wifi/java/com/android/server/wifi/BaseWifiService.java
deleted file mode 100644
index b467553..0000000
--- a/wifi/java/com/android/server/wifi/BaseWifiService.java
+++ /dev/null
@@ -1,639 +0,0 @@
-/**
- * Copyright (c) 2018, The Android Open Source Project
- *
- * Licensed under the Apache License, Version 2.0 (the "License") {
- *  throw new UnsupportedOperationException();
- }
- * 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.wifi;
-
-import android.content.pm.ParceledListSlice;
-import android.net.DhcpInfo;
-import android.net.Network;
-import android.net.wifi.IActionListener;
-import android.net.wifi.IDppCallback;
-import android.net.wifi.ILocalOnlyHotspotCallback;
-import android.net.wifi.INetworkRequestMatchCallback;
-import android.net.wifi.IOnWifiActivityEnergyInfoListener;
-import android.net.wifi.IOnWifiUsabilityStatsListener;
-import android.net.wifi.IScanResultsCallback;
-import android.net.wifi.ISoftApCallback;
-import android.net.wifi.ISuggestionConnectionStatusListener;
-import android.net.wifi.ITrafficStateCallback;
-import android.net.wifi.ITxPacketCountListener;
-import android.net.wifi.IWifiConnectedNetworkScorer;
-import android.net.wifi.IWifiManager;
-import android.net.wifi.ScanResult;
-import android.net.wifi.SoftApConfiguration;
-import android.net.wifi.WifiConfiguration;
-import android.net.wifi.WifiInfo;
-import android.net.wifi.WifiNetworkSuggestion;
-import android.net.wifi.hotspot2.IProvisioningCallback;
-import android.net.wifi.hotspot2.OsuProvider;
-import android.net.wifi.hotspot2.PasspointConfiguration;
-import android.os.IBinder;
-import android.os.RemoteException;
-import android.os.ResultReceiver;
-import android.os.WorkSource;
-import android.os.connectivity.WifiActivityEnergyInfo;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Empty concrete class implementing IWifiManager with stub methods throwing runtime exceptions.
- *
- * This class is meant to be extended by real implementations of IWifiManager in order to facilitate
- * cross-repo changes to WiFi internal APIs, including the introduction of new APIs, the removal of
- * deprecated APIs, or the migration of existing API signatures.
- *
- * When an existing API is scheduled for removal, it can be removed from IWifiManager.aidl
- * immediately and marked as @Deprecated first in this class. Children inheriting this class are
- * then given a short grace period to update themselves before the @Deprecated stub is removed for
- * good. If the API scheduled for removal has a replacement or an overload (signature change),
- * these should be introduced before the stub is removed to allow children to migrate.
- *
- * When a new API is added to IWifiManager.aidl, a stub should be added in BaseWifiService as
- * well otherwise compilation will fail.
- */
-public class BaseWifiService extends IWifiManager.Stub {
-
-    private static final String TAG = BaseWifiService.class.getSimpleName();
-
-    @Override
-    public long getSupportedFeatures() {
-        throw new UnsupportedOperationException();
-    }
-
-    /** @deprecated use {@link #getWifiActivityEnergyInfoAsync} instead */
-    @Deprecated
-    public WifiActivityEnergyInfo reportActivityInfo() {
-        throw new UnsupportedOperationException();
-    }
-
-    /** @deprecated use {@link #getWifiActivityEnergyInfoAsync} instead */
-    @Deprecated
-    public void requestActivityInfo(ResultReceiver result) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void getWifiActivityEnergyInfoAsync(IOnWifiActivityEnergyInfoListener listener) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ParceledListSlice getConfiguredNetworks(String packageName, String featureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public ParceledListSlice getPrivilegedConfiguredNetworks(String packageName, String featureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Map<String, Map<Integer, List<ScanResult>>> getAllMatchingFqdnsForScanResults(
-            List<ScanResult> scanResults) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Map<OsuProvider, List<ScanResult>> getMatchingOsuProviders(
-            List<ScanResult> scanResults) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Map<OsuProvider, PasspointConfiguration> getMatchingPasspointConfigsForOsuProviders(
-            List<OsuProvider> osuProviders) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int addOrUpdateNetwork(WifiConfiguration config, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean addOrUpdatePasspointConfiguration(
-            PasspointConfiguration config, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean removePasspointConfiguration(String fqdn, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<PasspointConfiguration> getPasspointConfigurations(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<WifiConfiguration> getWifiConfigsForPasspointProfiles(List<String> fqdnList) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void queryPasspointIcon(long bssid, String fileName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int matchProviderWithCurrentNetwork(String fqdn) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void deauthenticateNetwork(long holdoff, boolean ess) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean removeNetwork(int netId, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean enableNetwork(int netId, boolean disableOthers, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean disableNetwork(int netId, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void allowAutojoinGlobal(boolean choice) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void allowAutojoin(int netId, boolean choice) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void allowAutojoinPasspoint(String fqdn, boolean enableAutoJoin) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setMacRandomizationSettingPasspointEnabled(String fqdn, boolean enable) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setMeteredOverridePasspoint(String fqdn, int meteredOverride) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean startScan(String packageName, String featureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<ScanResult> getScanResults(String callingPackage, String callingFeatureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean disconnect(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean reconnect(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean reassociate(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public WifiInfo getConnectionInfo(String callingPackage, String callingFeatureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean setWifiEnabled(String packageName, boolean enable) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getWifiEnabledState() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getCountryCode() {
-        throw new UnsupportedOperationException();
-    }
-
-    /** @deprecated use {@link #is5GHzBandSupported} instead */
-    @Deprecated
-    public boolean isDualBandSupported() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean is5GHzBandSupported() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean is6GHzBandSupported() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isWifiStandardSupported(int standard) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean needs5GHzToAnyApBandConversion() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public DhcpInfo getDhcpInfo() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isScanAlwaysAvailable() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean acquireWifiLock(IBinder lock, int lockType, String tag, WorkSource ws) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void updateWifiLockWorkSource(IBinder lock, WorkSource ws) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean releaseWifiLock(IBinder lock) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void initializeMulticastFiltering() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean isMulticastEnabled() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void acquireMulticastLock(IBinder binder, String tag) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void releaseMulticastLock(String tag) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void updateInterfaceIpState(String ifaceName, int mode) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean startSoftAp(WifiConfiguration wifiConfig) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean startTetheredHotspot(SoftApConfiguration softApConfig) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean stopSoftAp() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int startLocalOnlyHotspot(ILocalOnlyHotspotCallback callback, String packageName,
-            String featureId, SoftApConfiguration customConfig) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void stopLocalOnlyHotspot() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void startWatchLocalOnlyHotspot(ILocalOnlyHotspotCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void stopWatchLocalOnlyHotspot() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getWifiApEnabledState() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public WifiConfiguration getWifiApConfiguration() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public SoftApConfiguration getSoftApConfiguration() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean setWifiApConfiguration(WifiConfiguration wifiConfig, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean setSoftApConfiguration(SoftApConfiguration softApConfig, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void notifyUserOfApBandConversion(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void enableTdls(String remoteIPAddress, boolean enable) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void enableTdlsWithMacAddress(String remoteMacAddress, boolean enable) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String getCurrentNetworkWpsNfcConfigurationToken() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void enableVerboseLogging(int verbose) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int getVerboseLoggingLevel() {
-        throw new UnsupportedOperationException();
-    }
-
-    /** @deprecated use {@link #allowAutojoinGlobal(boolean)} instead */
-    @Deprecated
-    public void enableWifiConnectivityManager(boolean enabled) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void disableEphemeralNetwork(String SSID, String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void factoryReset(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Network getCurrentNetwork() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public byte[] retrieveBackupData() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void restoreBackupData(byte[] data) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public byte[] retrieveSoftApBackupData() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public SoftApConfiguration restoreSoftApBackupData(byte[] data) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void restoreSupplicantBackupData(byte[] supplicantData, byte[] ipConfigData) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void startSubscriptionProvisioning(
-            OsuProvider provider, IProvisioningCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void registerSoftApCallback(
-            IBinder binder, ISoftApCallback callback, int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void unregisterSoftApCallback(int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void registerTrafficStateCallback(
-            IBinder binder, ITrafficStateCallback callback, int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void unregisterTrafficStateCallback(int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void registerNetworkRequestMatchCallback(
-            IBinder binder, INetworkRequestMatchCallback callback, int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void unregisterNetworkRequestMatchCallback(int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int addNetworkSuggestions(
-            List<WifiNetworkSuggestion> networkSuggestions, String callingPackageName,
-            String callingFeatureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int removeNetworkSuggestions(
-            List<WifiNetworkSuggestion> networkSuggestions, String callingPackageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<WifiNetworkSuggestion> getNetworkSuggestions(String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public String[] getFactoryMacAddresses() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void setDeviceMobilityState(int state) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void startDppAsConfiguratorInitiator(IBinder binder, String enrolleeUri,
-            int selectedNetworkId, int netRole, IDppCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void startDppAsEnrolleeInitiator(IBinder binder, String configuratorUri,
-            IDppCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void stopDppSession() throws RemoteException {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void addOnWifiUsabilityStatsListener(
-            IBinder binder, IOnWifiUsabilityStatsListener listener, int listenerIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void removeOnWifiUsabilityStatsListener(int listenerIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void updateWifiUsabilityScore(int seqNum, int score, int predictionHorizonSec) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void connect(WifiConfiguration config, int netId, IBinder binder,
-            IActionListener callback, int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void save(WifiConfiguration config, IBinder binder, IActionListener callback,
-            int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void forget(int netId, IBinder binder, IActionListener callback,
-            int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void getTxPacketCount(String packageName, IBinder binder,
-            ITxPacketCountListener callback, int callbackIdentifier) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void registerScanResultsCallback(IScanResultsCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void unregisterScanResultsCallback(IScanResultsCallback callback) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void registerSuggestionConnectionStatusListener(IBinder binder,
-            ISuggestionConnectionStatusListener listener,
-            int listenerIdentifier, String packageName, String featureId) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void unregisterSuggestionConnectionStatusListener(int listenerIdentifier,
-            String packageName) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public int calculateSignalLevel(int rssi) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public List<WifiConfiguration> getWifiConfigForMatchedNetworkSuggestionsSharedWithUser(
-            List<ScanResult> scanResults) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public boolean setWifiConnectedNetworkScorer(IBinder binder,
-            IWifiConnectedNetworkScorer scorer) {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public void clearWifiConnectedNetworkScorer() {
-        throw new UnsupportedOperationException();
-    }
-
-    @Override
-    public Map<WifiNetworkSuggestion, List<ScanResult>> getMatchingScanResults(
-            List<WifiNetworkSuggestion> networkSuggestions,
-            List<ScanResult> scanResults,
-            String callingPackage, String callingFeatureId) {
-        throw new UnsupportedOperationException();
-    }
-}
diff --git a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
index 2efdd97..d958488 100644
--- a/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/SoftApConfigurationTest.java
@@ -287,17 +287,43 @@
 
     @Test
     public void testToWifiConfigurationWithSupportedParameter() {
-        SoftApConfiguration softApConfig = new SoftApConfiguration.Builder()
+        SoftApConfiguration softApConfig_2g = new SoftApConfiguration.Builder()
+                .setPassphrase("secretsecret",
+                        SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
+                .setChannel(11, SoftApConfiguration.BAND_2GHZ)
+                .setHiddenSsid(true)
+                .build();
+        WifiConfiguration wifiConfig_2g = softApConfig_2g.toWifiConfiguration();
+        assertThat(wifiConfig_2g.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        assertThat(wifiConfig_2g.preSharedKey).isEqualTo("secretsecret");
+        assertThat(wifiConfig_2g.apBand).isEqualTo(WifiConfiguration.AP_BAND_2GHZ);
+        assertThat(wifiConfig_2g.apChannel).isEqualTo(11);
+        assertThat(wifiConfig_2g.hiddenSSID).isEqualTo(true);
+
+        SoftApConfiguration softApConfig_5g = new SoftApConfiguration.Builder()
                 .setPassphrase("secretsecret",
                         SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
                 .setChannel(149, SoftApConfiguration.BAND_5GHZ)
                 .setHiddenSsid(true)
                 .build();
-        WifiConfiguration wifiConfig = softApConfig.toWifiConfiguration();
-        assertThat(wifiConfig.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
-        assertThat(wifiConfig.preSharedKey).isEqualTo("secretsecret");
-        assertThat(wifiConfig.apBand).isEqualTo(WifiConfiguration.AP_BAND_5GHZ);
-        assertThat(wifiConfig.apChannel).isEqualTo(149);
-        assertThat(wifiConfig.hiddenSSID).isEqualTo(true);
+        WifiConfiguration wifiConfig_5g = softApConfig_5g.toWifiConfiguration();
+        assertThat(wifiConfig_5g.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        assertThat(wifiConfig_5g.preSharedKey).isEqualTo("secretsecret");
+        assertThat(wifiConfig_5g.apBand).isEqualTo(WifiConfiguration.AP_BAND_5GHZ);
+        assertThat(wifiConfig_5g.apChannel).isEqualTo(149);
+        assertThat(wifiConfig_5g.hiddenSSID).isEqualTo(true);
+
+        SoftApConfiguration softApConfig_2g5g = new SoftApConfiguration.Builder()
+                .setPassphrase("secretsecret",
+                        SoftApConfiguration.SECURITY_TYPE_WPA2_PSK)
+                .setBand(SoftApConfiguration.BAND_2GHZ | SoftApConfiguration.BAND_5GHZ)
+                .setHiddenSsid(true)
+                .build();
+        WifiConfiguration wifiConfig_2g5g = softApConfig_2g5g.toWifiConfiguration();
+        assertThat(wifiConfig_2g5g.getAuthType()).isEqualTo(WifiConfiguration.KeyMgmt.WPA2_PSK);
+        assertThat(wifiConfig_2g5g.preSharedKey).isEqualTo("secretsecret");
+        assertThat(wifiConfig_2g5g.apBand).isEqualTo(WifiConfiguration.AP_BAND_ANY);
+        assertThat(wifiConfig_2g5g.apChannel).isEqualTo(0);
+        assertThat(wifiConfig_2g5g.hiddenSSID).isEqualTo(true);
     }
 }
diff --git a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
index 8023160..05a3dce 100644
--- a/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiConfigurationTest.java
@@ -336,6 +336,20 @@
     }
 
     /**
+     * Ensure that {@link NetworkSelectionStatus#getMaxNetworkSelectionDisableReason()} returns
+     * the maximum disable reason.
+     */
+    @Test
+    public void testNetworkSelectionGetMaxNetworkSelectionDisableReason() {
+        int maxReason = Integer.MIN_VALUE;
+        for (int i = 0; i < NetworkSelectionStatus.DISABLE_REASON_INFOS.size(); i++) {
+            int reason = NetworkSelectionStatus.DISABLE_REASON_INFOS.keyAt(i);
+            maxReason = Math.max(maxReason, reason);
+        }
+        assertEquals(maxReason, NetworkSelectionStatus.getMaxNetworkSelectionDisableReason());
+    }
+
+    /**
      * Ensure that {@link WifiConfiguration#setSecurityParams(int)} sets up the
      * {@link WifiConfiguration} object correctly for SAE security type.
      * @throws Exception
diff --git a/wifi/tests/src/android/net/wifi/WifiManagerTest.java b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
index 0c2876e..853212a 100644
--- a/wifi/tests/src/android/net/wifi/WifiManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiManagerTest.java
@@ -1551,14 +1551,15 @@
      */
     @Test
     public void testGetAllMatchingWifiConfigs() throws Exception {
-        Map<String, List<ScanResult>> fqdns = new HashMap<>();
-        fqdns.put("www.test.com", new ArrayList<>());
-        when(mWifiService.getAllMatchingFqdnsForScanResults(any(List.class))).thenReturn(fqdns);
+        Map<String, List<ScanResult>> passpointProfiles = new HashMap<>();
+        passpointProfiles.put("www.test.com_987a69bca26", new ArrayList<>());
+        when(mWifiService.getAllMatchingPasspointProfilesForScanResults(
+                any(List.class))).thenReturn(passpointProfiles);
         InOrder inOrder = inOrder(mWifiService);
 
         mWifiManager.getAllMatchingWifiConfigs(new ArrayList<>());
 
-        inOrder.verify(mWifiService).getAllMatchingFqdnsForScanResults(any(List.class));
+        inOrder.verify(mWifiService).getAllMatchingPasspointProfilesForScanResults(any(List.class));
         inOrder.verify(mWifiService).getWifiConfigsForPasspointProfiles(any(List.class));
     }
 
@@ -1867,7 +1868,7 @@
      * Tests that passing a null Executor to {@link WifiManager#getWifiActivityEnergyInfoAsync}
      * throws an exception.
      */
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = NullPointerException.class)
     public void testGetWifiActivityInfoNullExecutor() throws Exception {
         mWifiManager.getWifiActivityEnergyInfoAsync(null, mOnWifiActivityEnergyInfoListener);
     }
@@ -1876,7 +1877,7 @@
      * Tests that passing a null listener to {@link WifiManager#getWifiActivityEnergyInfoAsync}
      * throws an exception.
      */
-    @Test(expected = IllegalArgumentException.class)
+    @Test(expected = NullPointerException.class)
     public void testGetWifiActivityInfoNullListener() throws Exception {
         mWifiManager.getWifiActivityEnergyInfoAsync(mExecutor, null);
     }
@@ -1928,16 +1929,6 @@
     }
 
     /**
-     * Test behavior of {@link WifiManager#isDualModeSupported()} ()}
-     */
-    @Test
-    public void testIsDualModeSupported() throws Exception {
-        when(mWifiService.needs5GHzToAnyApBandConversion()).thenReturn(true);
-        assertTrue(mWifiManager.isDualModeSupported());
-        verify(mWifiService).needs5GHzToAnyApBandConversion();
-    }
-
-    /**
      * Test behavior of {@link WifiManager#is5GHzBandSupported()}
      */
     @Test
@@ -2390,4 +2381,24 @@
         verify(mWifiConnectedNetworkScorer).start(0);
         verify(mWifiConnectedNetworkScorer).stop(10);
     }
+
+    @Test
+    public void testScanThrottle() throws Exception {
+        mWifiManager.setScanThrottleEnabled(true);
+        verify(mWifiService).setScanThrottleEnabled(true);
+
+        when(mWifiService.isScanThrottleEnabled()).thenReturn(false);
+        assertFalse(mWifiManager.isScanThrottleEnabled());
+        verify(mWifiService).isScanThrottleEnabled();
+    }
+
+    @Test
+    public void testAutoWakeup() throws Exception {
+        mWifiManager.setAutoWakeupEnabled(true);
+        verify(mWifiService).setAutoWakeupEnabled(true);
+
+        when(mWifiService.isAutoWakeupEnabled()).thenReturn(false);
+        assertFalse(mWifiManager.isAutoWakeupEnabled());
+        verify(mWifiService).isAutoWakeupEnabled();
+    }
 }
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
index adc41f0..0233ee2 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkAgentSpecifierTest.java
@@ -22,7 +22,6 @@
 
 import android.net.MacAddress;
 import android.net.MatchAllNetworkSpecifier;
-import android.net.NetworkRequest;
 import android.os.Parcel;
 import android.os.PatternMatcher;
 import android.util.Pair;
@@ -36,10 +35,6 @@
  */
 @SmallTest
 public class WifiNetworkAgentSpecifierTest {
-    private static final int TEST_UID = 5;
-    private static final int TEST_UID_1 = 8;
-    private static final String TEST_PACKAGE = "com.test";
-    private static final String TEST_PACKAGE_1 = "com.test.1";
     private static final String TEST_SSID = "Test123";
     private static final String TEST_SSID_PATTERN = "Test";
     private static final String TEST_SSID_1 = "456test";
@@ -71,16 +66,6 @@
     }
 
     /**
-     * Validate that the NetworkAgentSpecifier cannot be used in a {@link NetworkRequest} by apps.
-     */
-    @Test(expected = IllegalStateException.class)
-    public void testWifiNetworkAgentSpecifierNotUsedInNetworkRequest() {
-        WifiNetworkAgentSpecifier specifier = createDefaultNetworkAgentSpecifier();
-
-        specifier.assertValidFromUid(TEST_UID);
-    }
-
-    /**
      * Validate NetworkAgentSpecifier equals with itself.
      * a) Create network agent specifier 1 for WPA_PSK network
      * b) Create network agent specifier 2 with the same params as specifier 1.
@@ -105,15 +90,13 @@
         WifiConfiguration wifiConfiguration1 = createDefaultWifiConfiguration();
         WifiNetworkAgentSpecifier specifier1 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration1,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration1);
 
         WifiConfiguration wifiConfiguration2 = new WifiConfiguration(wifiConfiguration1);
         wifiConfiguration2.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
         WifiNetworkAgentSpecifier specifier2 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration2,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration2);
 
         assertFalse(specifier2.equals(specifier1));
     }
@@ -129,15 +112,13 @@
         WifiConfiguration wifiConfiguration1 = createDefaultWifiConfiguration();
         WifiNetworkAgentSpecifier specifier1 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration1,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration1);
 
         WifiConfiguration wifiConfiguration2 = new WifiConfiguration(wifiConfiguration1);
         wifiConfiguration2.SSID = TEST_SSID_1;
         WifiNetworkAgentSpecifier specifier2 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration2,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration2);
 
         assertFalse(specifier2.equals(specifier1));
     }
@@ -153,15 +134,13 @@
         WifiConfiguration wifiConfiguration1 = createDefaultWifiConfiguration();
         WifiNetworkAgentSpecifier specifier1 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration1,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration1);
 
         WifiConfiguration wifiConfiguration2 = new WifiConfiguration(wifiConfiguration1);
         wifiConfiguration2.BSSID = TEST_BSSID_1;
         WifiNetworkAgentSpecifier specifier2 =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfiguration2,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfiguration2);
 
         assertFalse(specifier2.equals(specifier1));
     }
@@ -215,8 +194,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -244,8 +222,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -273,8 +250,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertTrue(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertTrue(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -293,8 +269,7 @@
         wifiConfigurationNetworkAgent.SSID = "\"" + TEST_SSID_1 + "\"";
         WifiNetworkAgentSpecifier wifiNetworkAgentSpecifier =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfigurationNetworkAgent,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfigurationNetworkAgent);
 
         PatternMatcher ssidPattern =
                 new PatternMatcher(TEST_SSID_PATTERN, PatternMatcher.PATTERN_PREFIX);
@@ -306,8 +281,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -326,8 +300,7 @@
         wifiConfigurationNetworkAgent.BSSID = TEST_BSSID_1;
         WifiNetworkAgentSpecifier wifiNetworkAgentSpecifier =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfigurationNetworkAgent,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfigurationNetworkAgent);
 
         PatternMatcher ssidPattern =
                 new PatternMatcher(".*", PatternMatcher.PATTERN_SIMPLE_GLOB);
@@ -340,8 +313,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -360,8 +332,7 @@
         wifiConfigurationNetworkAgent.BSSID = TEST_BSSID_1;
         WifiNetworkAgentSpecifier wifiNetworkAgentSpecifier =
                 new WifiNetworkAgentSpecifier(
-                        wifiConfigurationNetworkAgent,
-                        TEST_UID, TEST_PACKAGE);
+                        wifiConfigurationNetworkAgent);
 
         PatternMatcher ssidPattern =
                 new PatternMatcher(TEST_SSID_PATTERN, PatternMatcher.PATTERN_PREFIX);
@@ -374,8 +345,7 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
@@ -402,41 +372,12 @@
         WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
                 ssidPattern,
                 bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID, TEST_PACKAGE);
+                wificonfigurationNetworkSpecifier);
 
         assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
         assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
     }
 
-    /**
-     * Validate {@link WifiNetworkAgentSpecifier} with {@link WifiNetworkSpecifier} matching.
-     * a) Create network agent specifier for WPA_PSK network
-     * b) Create network specifier with matching SSID and BSSID pattern, but different UID.
-     * c) Ensure that the agent specifier is not satisfied by specifier.
-     */
-    @Test
-    public void
-            testWifiNetworkAgentSpecifierDoesNotSatisfyNetworkSpecifierWithDifferentUid() {
-        WifiNetworkAgentSpecifier wifiNetworkAgentSpecifier = createDefaultNetworkAgentSpecifier();
-
-        PatternMatcher ssidPattern =
-                new PatternMatcher(TEST_SSID_PATTERN, PatternMatcher.PATTERN_PREFIX);
-        Pair<MacAddress, MacAddress> bssidPattern =
-                Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
-                        MacAddress.fromString(TEST_BSSID_OUI_MASK));
-        WifiConfiguration wificonfigurationNetworkSpecifier = new WifiConfiguration();
-        wificonfigurationNetworkSpecifier.allowedKeyManagement
-                .set(WifiConfiguration.KeyMgmt.WPA_PSK);
-        WifiNetworkSpecifier wifiNetworkSpecifier = new WifiNetworkSpecifier(
-                ssidPattern,
-                bssidPattern,
-                wificonfigurationNetworkSpecifier,
-                TEST_UID_1, TEST_PACKAGE_1);
-
-        assertFalse(wifiNetworkSpecifier.satisfiedBy(wifiNetworkAgentSpecifier));
-        assertFalse(wifiNetworkAgentSpecifier.satisfiedBy(wifiNetworkSpecifier));
-    }
 
     private WifiConfiguration createDefaultWifiConfiguration() {
         WifiConfiguration wifiConfiguration = new WifiConfiguration();
@@ -448,8 +389,7 @@
     }
 
     private WifiNetworkAgentSpecifier createDefaultNetworkAgentSpecifier() {
-        return new WifiNetworkAgentSpecifier(createDefaultWifiConfiguration(), TEST_UID,
-                TEST_PACKAGE);
+        return new WifiNetworkAgentSpecifier(createDefaultWifiConfiguration());
     }
 
 }
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
index 1619744..3b67236 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSpecifierTest.java
@@ -29,7 +29,6 @@
 import android.net.NetworkSpecifier;
 import android.os.Parcel;
 import android.os.PatternMatcher;
-import android.os.Process;
 import android.util.Pair;
 
 import androidx.test.filters.SmallTest;
@@ -41,8 +40,6 @@
  */
 @SmallTest
 public class WifiNetworkSpecifierTest {
-    private static final int TEST_UID = 5;
-    private static final String TEST_PACKAGE_NAME = "com.test";
     private static final String TEST_SSID = "Test123";
     private static final String TEST_BSSID_OUI_BASE_ADDRESS = "12:12:12:00:00:00";
     private static final String TEST_BSSID_OUI_MASK = "ff:ff:ff:00:00:00";
@@ -62,7 +59,6 @@
         assertTrue(specifier instanceof WifiNetworkSpecifier);
         WifiNetworkSpecifier wifiNetworkSpecifier = (WifiNetworkSpecifier) specifier;
 
-        assertEquals(Process.myUid(), wifiNetworkSpecifier.requestorUid);
         assertEquals(TEST_SSID, wifiNetworkSpecifier.ssidPatternMatcher.getPath());
         assertEquals(PATTERN_PREFIX, wifiNetworkSpecifier.ssidPatternMatcher.getType());
         assertEquals(WifiManager.ALL_ZEROS_MAC_ADDRESS,
@@ -367,8 +363,7 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         Parcel parcelW = Parcel.obtain();
         specifier.writeToParcel(parcelW, 0);
@@ -399,8 +394,7 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         assertTrue(specifier.satisfiedBy(null));
         assertTrue(specifier.satisfiedBy(new MatchAllNetworkSpecifier()));
@@ -422,15 +416,13 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         WifiNetworkSpecifier specifier2 =
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         assertTrue(specifier2.satisfiedBy(specifier1));
     }
@@ -451,8 +443,7 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration1,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration1);
 
         WifiConfiguration wifiConfiguration2 = new WifiConfiguration();
         wifiConfiguration2.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.NONE);
@@ -460,8 +451,7 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration2,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration2);
 
         assertFalse(specifier2.satisfiedBy(specifier1));
     }
@@ -482,15 +472,13 @@
                 new WifiNetworkSpecifier(new PatternMatcher("", PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         WifiNetworkSpecifier specifier2 =
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         assertFalse(specifier2.satisfiedBy(specifier1));
     }
@@ -511,44 +499,13 @@
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
                                 MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
+                        wifiConfiguration);
 
         WifiNetworkSpecifier specifier2 =
                 new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
                         Pair.create(WifiManager.ALL_ZEROS_MAC_ADDRESS,
                                 WifiManager.ALL_ZEROS_MAC_ADDRESS),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
-
-        assertFalse(specifier2.satisfiedBy(specifier1));
-    }
-
-    /**
-     * Validate NetworkSpecifier matching.
-     * a) Create network specifier 1 for WPA_PSK network
-     * b) Create network specifier 2 with different package name .
-     * c) Ensure that the specifier 2 is not satisfied by specifier 1.
-     */
-    @Test
-    public void testWifiNetworkSpecifierDoesNotSatisfyWhenPackageNameDifferent() {
-        WifiConfiguration wifiConfiguration = new WifiConfiguration();
-        wifiConfiguration.allowedKeyManagement.set(WifiConfiguration.KeyMgmt.WPA_PSK);
-        wifiConfiguration.preSharedKey = TEST_PRESHARED_KEY;
-
-        WifiNetworkSpecifier specifier1 =
-                new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
-                        Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
-                                MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME);
-
-        WifiNetworkSpecifier specifier2 =
-                new WifiNetworkSpecifier(new PatternMatcher(TEST_SSID, PATTERN_LITERAL),
-                        Pair.create(MacAddress.fromString(TEST_BSSID_OUI_BASE_ADDRESS),
-                                MacAddress.fromString(TEST_BSSID_OUI_MASK)),
-                        wifiConfiguration,
-                        TEST_UID, TEST_PACKAGE_NAME + "blah");
+                        wifiConfiguration);
 
         assertFalse(specifier2.satisfiedBy(specifier1));
     }
diff --git a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
index 15accc3..af6fb5c 100644
--- a/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
+++ b/wifi/tests/src/android/net/wifi/WifiNetworkSuggestionTest.java
@@ -105,7 +105,7 @@
                 .setSsid(TEST_SSID)
                 .setWpa2Passphrase(TEST_PRESHARED_KEY)
                 .setIsUserInteractionRequired(true)
-                .setIsInitialAutoJoinEnabled(false)
+                .setIsInitialAutojoinEnabled(false)
                 .setIsMetered(true)
                 .build();
 
@@ -155,7 +155,7 @@
                 .setSsid(TEST_SSID)
                 .setWpa3Passphrase(TEST_PRESHARED_KEY)
                 .setCredentialSharedWithUser(true)
-                .setIsInitialAutoJoinEnabled(false)
+                .setIsInitialAutojoinEnabled(false)
                 .build();
 
         assertEquals("\"" + TEST_SSID + "\"", suggestion.wifiConfiguration.SSID);
@@ -732,20 +732,20 @@
 
     /**
      * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
-     * when {@link WifiNetworkSuggestion.Builder#setIsInitialAutoJoinEnabled(boolean)} to
+     * when {@link WifiNetworkSuggestion.Builder#setIsInitialAutojoinEnabled(boolean)} to
      * false on a open network suggestion.
      */
     @Test(expected = IllegalStateException.class)
     public void testSetIsAutoJoinDisabledWithOpenNetwork() {
         new WifiNetworkSuggestion.Builder()
                 .setSsid(TEST_SSID)
-                .setIsInitialAutoJoinEnabled(false)
+                .setIsInitialAutojoinEnabled(false)
                 .build();
     }
 
     /**
      * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
-     * when set both {@link WifiNetworkSuggestion.Builder#setIsInitialAutoJoinEnabled(boolean)}
+     * when set both {@link WifiNetworkSuggestion.Builder#setIsInitialAutojoinEnabled(boolean)}
      * and {@link WifiNetworkSuggestion.Builder#setCredentialSharedWithUser(boolean)} (boolean)}
      * to false on a network suggestion.
      */
@@ -755,7 +755,7 @@
                 .setSsid(TEST_SSID)
                 .setWpa2Passphrase(TEST_PRESHARED_KEY)
                 .setCredentialSharedWithUser(false)
-                .setIsInitialAutoJoinEnabled(false)
+                .setIsInitialAutojoinEnabled(false)
                 .build();
     }
 
@@ -808,7 +808,7 @@
 
     /**
      * Ensure {@link WifiNetworkSuggestion.Builder#build()} throws an exception
-     * when set both {@link WifiNetworkSuggestion.Builder#setIsInitialAutoJoinEnabled(boolean)}
+     * when set both {@link WifiNetworkSuggestion.Builder#setIsInitialAutojoinEnabled(boolean)}
      * and {@link WifiNetworkSuggestion.Builder#setCredentialSharedWithUser(boolean)} (boolean)}
      * to false on a passpoint suggestion.
      */
@@ -818,7 +818,7 @@
         new WifiNetworkSuggestion.Builder()
                 .setPasspointConfig(passpointConfiguration)
                 .setCredentialSharedWithUser(false)
-                .setIsInitialAutoJoinEnabled(false)
+                .setIsInitialAutojoinEnabled(false)
                 .build();
     }
 }
diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java
index c3b6285..81b02fa 100644
--- a/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java
+++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareAgentNetworkSpecifierTest.java
@@ -162,17 +162,6 @@
         collector.checkThat("Match unexpected", oldNs.satisfiedBy(newNs), equalTo(false));
     }
 
-    /**
-     * Validate that agent network specifier cannot be used as in network requests - i.e. that
-     * throws an exception when queried for UID validity.
-     */
-    @Test(expected = SecurityException.class)
-    public void testNoUsageInRequest() {
-        WifiAwareAgentNetworkSpecifier dut = new WifiAwareAgentNetworkSpecifier();
-
-        dut.assertValidFromUid(0);
-    }
-
     // utilities
 
     /**
@@ -182,6 +171,6 @@
     WifiAwareNetworkSpecifier getDummyNetworkSpecifier(int clientId) {
         return new WifiAwareNetworkSpecifier(WifiAwareNetworkSpecifier.NETWORK_SPECIFIER_TYPE_OOB,
                 WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_INITIATOR, clientId, 0, 0, new byte[6],
-                null, null, 10, 5, 0);
+                null, null, 10, 5);
     }
 }
diff --git a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
index 65fbf5b..c5f9804 100644
--- a/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/aware/WifiAwareManagerTest.java
@@ -1564,7 +1564,7 @@
         WifiAwareNetworkSpecifier ns = new WifiAwareNetworkSpecifier(NETWORK_SPECIFIER_TYPE_IB,
                 WifiAwareManager.WIFI_AWARE_DATA_PATH_ROLE_RESPONDER, 5, 568, 334,
                 HexEncoding.decode("000102030405".toCharArray(), false),
-                "01234567890123456789012345678901".getBytes(), "blah blah", 666, 4, 10001);
+                "01234567890123456789012345678901".getBytes(), "blah blah", 666, 4);
 
         Parcel parcelW = Parcel.obtain();
         ns.writeToParcel(parcelW, 0);
diff --git a/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java b/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java
index 654154d..8f6beb1 100644
--- a/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java
+++ b/wifi/tests/src/android/net/wifi/hotspot2/PasspointConfigurationTest.java
@@ -18,9 +18,13 @@
 
 import static android.net.wifi.WifiConfiguration.METERED_OVERRIDE_NONE;
 
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 
+import android.net.wifi.hotspot2.pps.Credential;
+import android.net.wifi.hotspot2.pps.HomeSp;
 import android.os.Parcel;
 
 import androidx.test.filters.SmallTest;
@@ -173,7 +177,7 @@
 
         assertFalse(config.validate());
         assertFalse(config.validateForR2());
-        assertTrue(config.isAutoJoinEnabled());
+        assertTrue(config.isAutojoinEnabled());
         assertTrue(config.isMacRandomizationEnabled());
         assertTrue(config.getMeteredOverride() == METERED_OVERRIDE_NONE);
     }
@@ -364,4 +368,93 @@
         assertTrue(config.validateForR2());
         assertTrue(config.isOsuProvisioned());
     }
+
+    /**
+     * Verify that the unique identifier generated is identical for two instances
+     *
+     * @throws Exception
+     */
+    @Test
+    public void validateUniqueId() throws Exception {
+        PasspointConfiguration config1 = PasspointTestUtils.createConfig();
+        PasspointConfiguration config2 = PasspointTestUtils.createConfig();
+
+        assertEquals(config1.getUniqueId(), config2.getUniqueId());
+    }
+
+    /**
+     * Verify that the unique identifier generated is different for two instances with different
+     * HomeSp node
+     *
+     * @throws Exception
+     */
+    @Test
+    public void validateUniqueIdDifferentHomeSp() throws Exception {
+        PasspointConfiguration config1 = PasspointTestUtils.createConfig();
+
+        // Modify config2's RCOIs to a different set of values
+        PasspointConfiguration config2 = PasspointTestUtils.createConfig();
+        HomeSp homeSp = config2.getHomeSp();
+        homeSp.setRoamingConsortiumOis(new long[] {0xaa, 0xbb});
+        config2.setHomeSp(homeSp);
+
+        assertNotEquals(config1.getUniqueId(), config2.getUniqueId());
+    }
+
+    /**
+     * Verify that the unique identifier generated is different for two instances with different
+     * Credential node
+     *
+     * @throws Exception
+     */
+    @Test
+    public void validateUniqueIdDifferentCredential() throws Exception {
+        PasspointConfiguration config1 = PasspointTestUtils.createConfig();
+
+        // Modify config2's RCOIs to a different set of values
+        PasspointConfiguration config2 = PasspointTestUtils.createConfig();
+        Credential credential = config2.getCredential();
+        credential.setRealm("realm2.example.com");
+        credential.getSimCredential().setImsi("350460*");
+        config2.setCredential(credential);
+
+        assertNotEquals(config1.getUniqueId(), config2.getUniqueId());
+    }
+
+    /**
+     * Verify that the unique identifier API generates an exception if HomeSP is not initialized.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void validateUniqueIdExceptionWithEmptyHomeSp() throws Exception {
+        PasspointConfiguration config = PasspointTestUtils.createConfig();
+        config.setHomeSp(null);
+        boolean exceptionCaught = false;
+        try {
+            String uniqueId = config.getUniqueId();
+        } catch (IllegalStateException e) {
+            exceptionCaught = true;
+        }
+        assertTrue(exceptionCaught);
+    }
+
+    /**
+     * Verify that the unique identifier API generates an exception if Credential is not
+     * initialized.
+     *
+     * @throws Exception
+     */
+    @Test
+    public void validateUniqueIdExceptionWithEmptyCredential() throws Exception {
+        PasspointConfiguration config = PasspointTestUtils.createConfig();
+        config.setCredential(null);
+        boolean exceptionCaught = false;
+        try {
+            String uniqueId = config.getUniqueId();
+        } catch (IllegalStateException e) {
+            exceptionCaught = true;
+        }
+        assertTrue(exceptionCaught);
+    }
 }
diff --git a/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java b/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
index 17ee755..6edc287 100644
--- a/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
+++ b/wifi/tests/src/android/net/wifi/p2p/WifiP2pDeviceTest.java
@@ -45,7 +45,7 @@
         assertEquals(devA.groupCapability, devB.groupCapability);
         assertEquals(devA.status, devB.status);
         if (devA.wfdInfo != null) {
-            assertEquals(devA.wfdInfo.isWfdEnabled(), devB.wfdInfo.isWfdEnabled());
+            assertEquals(devA.wfdInfo.isEnabled(), devB.wfdInfo.isEnabled());
             assertEquals(devA.wfdInfo.getDeviceInfoHex(), devB.wfdInfo.getDeviceInfoHex());
             assertEquals(devA.wfdInfo.getControlPort(), devB.wfdInfo.getControlPort());
             assertEquals(devA.wfdInfo.getMaxThroughput(), devB.wfdInfo.getMaxThroughput());
diff --git a/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java b/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
index 15a0aac..2a9b36b 100644
--- a/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
+++ b/wifi/tests/src/android/net/wifi/p2p/WifiP2pWfdInfoTest.java
@@ -55,8 +55,8 @@
     public void testSettersGetters() throws Exception {
         WifiP2pWfdInfo info = new WifiP2pWfdInfo();
 
-        info.setWfdEnabled(true);
-        assertTrue(info.isWfdEnabled());
+        info.setEnabled(true);
+        assertTrue(info.isEnabled());
 
         info.setDeviceType(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE);
         assertEquals(WifiP2pWfdInfo.DEVICE_TYPE_WFD_SOURCE, info.getDeviceType());
diff --git a/wifi/tests/src/android/net/wifi/wificond/NativeScanResultTest.java b/wifi/tests/src/android/net/wifi/wificond/NativeScanResultTest.java
index 06f12f7..0df170f 100644
--- a/wifi/tests/src/android/net/wifi/wificond/NativeScanResultTest.java
+++ b/wifi/tests/src/android/net/wifi/wificond/NativeScanResultTest.java
@@ -28,7 +28,6 @@
 
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.BitSet;
 
 /**
  * Unit tests for {@link android.net.wifi.wificond.NativeScanResult}.
@@ -46,7 +45,7 @@
     private static final int TEST_FREQUENCY = 2456;
     private static final int TEST_SIGNAL_MBM = -45;
     private static final long TEST_TSF = 34455441;
-    private static final BitSet TEST_CAPABILITY = new BitSet(16) {{ set(2); set(5); }};
+    private static final int TEST_CAPABILITY = (0x1 << 2) | (0x1 << 5);
     private static final boolean TEST_ASSOCIATED = true;
     private static final int[] RADIO_CHAIN_IDS = { 0, 1 };
     private static final int[] RADIO_CHAIN_LEVELS = { -56, -65 };
diff --git a/wifi/tests/src/android/net/wifi/wificond/WifiCondManagerTest.java b/wifi/tests/src/android/net/wifi/wificond/WifiCondManagerTest.java
index f262268..b745a34 100644
--- a/wifi/tests/src/android/net/wifi/wificond/WifiCondManagerTest.java
+++ b/wifi/tests/src/android/net/wifi/wificond/WifiCondManagerTest.java
@@ -38,6 +38,7 @@
 import android.app.AlarmManager;
 import android.app.test.TestAlarmManager;
 import android.content.Context;
+import android.net.MacAddress;
 import android.net.wifi.ScanResult;
 import android.net.wifi.SoftApInfo;
 import android.net.wifi.WifiConfiguration;
@@ -119,7 +120,8 @@
     private static final String TEST_QUOTED_SSID_2 = "\"testSsid2\"";
     private static final int[] TEST_FREQUENCIES_1 = {};
     private static final int[] TEST_FREQUENCIES_2 = {2500, 5124};
-    private static final byte[] TEST_RAW_MAC_BYTES = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
+    private static final MacAddress TEST_RAW_MAC_BYTES = MacAddress.fromBytes(
+            new byte[]{0x00, 0x01, 0x02, 0x03, 0x04, 0x05});
 
     private static final List<byte[]> SCAN_HIDDEN_NETWORK_SSID_LIST =
             new ArrayList<byte[]>() {{
@@ -718,8 +720,7 @@
     @Test
     public void testRegisterDeathHandler() throws Exception {
         Runnable deathHandler = mock(Runnable.class);
-        assertTrue(mWificondControl.initialize(deathHandler));
-        verify(mWificond).tearDownInterfaces();
+        mWificondControl.setOnServiceDeadCallback(deathHandler);
         mWificondControl.binderDied();
         mLooper.dispatchAll();
         verify(deathHandler).run();
@@ -732,7 +733,7 @@
     @Test
     public void testDeathHandling() throws Exception {
         Runnable deathHandler = mock(Runnable.class);
-        assertTrue(mWificondControl.initialize(deathHandler));
+        mWificondControl.setOnServiceDeadCallback(deathHandler);
 
         testSetupInterfaceForClientMode();